<?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>17269</bug_id>
          
          <creation_ts>2008-02-09 23:21:35 -0800</creation_ts>
          <short_desc>Deobfuscate CanvasRenderingContext2D.cpp</short_desc>
          <delta_ts>2008-09-30 20:35:49 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>
          
          <blocked>19790</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Oliver Hunt">oliver</reporter>
          <assigned_to name="Oliver Hunt">oliver</assigned_to>
          <cc>alp</cc>
    
    <cc>darin</cc>
    
    <cc>hyatt</cc>
    
    <cc>lars.knoll</cc>
    
    <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>69996</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-02-09 23:21:35 -0800</bug_when>
    <thetext>Our canvas implementation is currently an unholy conglomerate of ifdef&apos;s making it difficult to maintain, comprehend or look at.

This bug tracks progress towards removing this horrifying badness</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>70000</commentid>
    <comment_count>1</comment_count>
      <attachid>19029</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-02-09 23:38:36 -0800</bug_when>
    <thetext>Created attachment 19029
Round 1 patch, add ImageData abstraction

Anyone have any thoughts on this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>70003</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-02-10 00:01:14 -0800</bug_when>
    <thetext>The patch looks great.  I&apos;m not sure if the free functions should start with a capital letter or not.  The style guidelines are vague on that point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>70004</commentid>
    <comment_count>3</comment_count>
      <attachid>19030</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-02-10 00:02:37 -0800</bug_when>
    <thetext>Created attachment 19030
Minor tidy up as prep for next great leap for ((wo)?man|thing)kind</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>70183</commentid>
    <comment_count>4</comment_count>
      <attachid>19057</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-02-10 22:57:29 -0800</bug_when>
    <thetext>Created attachment 19057
Setting up a pattern for stroke style is no longer ifdef hell</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>70194</commentid>
    <comment_count>5</comment_count>
      <attachid>19060</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-02-10 23:35:56 -0800</bug_when>
    <thetext>Created attachment 19060
Final bit of logic to tidy up pattern painting</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>70198</commentid>
    <comment_count>6</comment_count>
    <who name="Alp Toker">alp</who>
    <bug_when>2008-02-11 00:18:40 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; Created an attachment (id=19029) [edit]
&gt; Round 1 patch, add ImageData abstraction
&gt; 
&gt; Anyone have any thoughts on this? 
&gt; 

platform/graphics/ImageBuffer already does nearly exactly what your newly added ImageData does. I think it&apos;d be better to make ImageBuffer fit for the job and use it in canvas.

We already have 3/4 Image classes. I don&apos;t think we need another one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>70203</commentid>
    <comment_count>7</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-02-11 00:36:13 -0800</bug_when>
    <thetext>I&apos;ll try this again, i&apos;ve said it plenty of times but for some reason people seem to ignore it:

The purpose of ImageDataRef is to provide a single typename i can use in code where the logic is otherwise identical.  Using a wrapper class requires either implementing otherwise unnecessary amounts of ref counting logic (mostly courtesy of Qt), or an extra heap allocation and indirection (which is what ImageBuffer would do).

Failing to do this would require:
#if PLATFORM(CG)
     CGImageRef
#elif PLATFORM(CAIRO)
    cairo_surface_t
#elif PLATFORM(QT)
    QImage
#else
    void*
#endif
     platformImage = canvas-&gt;createPlatformImage();
#if !PLATFORM(QT)
    if (!platformImage)
#else
    if (platformImage.IsNull())
#endif
        return; 

Note that the logic does not change, we just have half a dozen ifdef blocks to handle the type *name*

The only reason there is anything beyond the Retain/Release functions is because of Qt&apos;s desire to use smart pointers (effectively what QImage is) but without allowing them to be used as a pointer -- hence the damned ImageIsNull method.


</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>70259</commentid>
    <comment_count>8</comment_count>
      <attachid>19029</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-02-11 09:14:24 -0800</bug_when>
    <thetext>Comment on attachment 19029
Round 1 patch, add ImageData abstraction

I think this is OK as an incremental step, but the entire thing needs to be behind an abstraction later. I&apos;m not sure this is helpful.

 67     ImageDataRef createPlatformImage() const;

Given the name of this, maybe the object should be PlatformImageRef.

 76 #if !PLATFORM(QT)
9177       m_platformImage(0)
9278     ,
9379 #endif

You could avoid this #if by writing:

    : m_platformImage()

It would initialize to 0 in the non-Qt case and call the default initializer in the Qt case.

I see no reason not to wrap these objects in a class so you don&apos;t need all the Qt strangeness and comments about not liking what Qt is doing. I don&apos;t think that adding a data type like this is a good as doing that.

r=me, despite my doubts about your approach here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>70263</commentid>
    <comment_count>9</comment_count>
      <attachid>19030</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-02-11 09:23:46 -0800</bug_when>
    <thetext>Comment on attachment 19030
Minor tidy up as prep for next great leap for ((wo)?man|thing)kind

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>70264</commentid>
    <comment_count>10</comment_count>
      <attachid>19057</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-02-11 09:26:03 -0800</bug_when>
    <thetext>Comment on attachment 19057
Setting up a pattern for stroke style is no longer ifdef hell

I&apos;m not happy with the approach you&apos;re taking here. You&apos;re creating these lightweight abstractions on top of the platforms, rather than creating some real C++ objects that go along with GraphicsContext. I&apos;d strongly prefer the latter.

These objects that you have to manually call retain and release on are not a good fit for WebCore&apos;s platform layer.

+        CGAffineTransformTranslate(CGAffineTransformScale((CGAffineTransform)transform, 1, -1), 0, -rect.size.height);

+    cairo_matrix_t cm = (cairo_matrix_t)m;

Please don&apos;t use C-style casts in new code.

r=me, but lets talk about finding a better design pattern for this work</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>70265</commentid>
    <comment_count>11</comment_count>
      <attachid>19060</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-02-11 09:26:28 -0800</bug_when>
    <thetext>Comment on attachment 19060
Final bit of logic to tidy up pattern painting

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>70272</commentid>
    <comment_count>12</comment_count>
      <attachid>19029</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-02-11 10:56:19 -0800</bug_when>
    <thetext>Comment on attachment 19029
Round 1 patch, add ImageData abstraction

fine, will redo</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>70362</commentid>
    <comment_count>13</comment_count>
      <attachid>19089</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-02-12 00:02:30 -0800</bug_when>
    <thetext>Created attachment 19089
Different tack, lets fix HTMLCanvasElement first</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>70364</commentid>
    <comment_count>14</comment_count>
      <attachid>19089</attachid>
    <who name="Alp Toker">alp</who>
    <bug_when>2008-02-12 00:29:07 -0800</bug_when>
    <thetext>Comment on attachment 19089
Different tack, lets fix HTMLCanvasElement first


 cairo_surface_t* HTMLCanvasElement::createPlatformImage() const
 {
-    if (!m_surface)
+    if (!m_data)
         return 0;
 
     // Note that unlike CG, our returned image is not a copy or
     // copy-on-write, but the original. This is fine, since it is only
     // ever used as a source.
 
-    cairo_surface_flush(m_surface);
-    cairo_surface_reference(m_surface);
+    cairo_surface_flush(m_data-&gt;surface());
+    cairo_surface_reference(m_data-&gt;surface());
     return m_surface;
 }

^ Should be return m_data-&gt;surface();

Otherwise looks great.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>70460</commentid>
    <comment_count>15</comment_count>
      <attachid>19098</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-02-12 16:45:54 -0800</bug_when>
    <thetext>Created attachment 19098
Cleanup a de-ifdefify HTMLCanvasElement::paint</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>70470</commentid>
    <comment_count>16</comment_count>
      <attachid>19098</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-02-12 18:09:53 -0800</bug_when>
    <thetext>Comment on attachment 19098
Cleanup a de-ifdefify HTMLCanvasElement::paint

Looks straightforward.  Certainly isn&apos;t any worse than current code. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>70826</commentid>
    <comment_count>17</comment_count>
      <attachid>19150</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-02-15 19:43:36 -0800</bug_when>
    <thetext>Created attachment 19150
De-ifdefify drawing a canvas to a canvas</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>70831</commentid>
    <comment_count>18</comment_count>
      <attachid>19150</attachid>
    <who name="">mitz</who>
    <bug_when>2008-02-15 21:32:34 -0800</bug_when>
    <thetext>Comment on attachment 19150
De-ifdefify drawing a canvas to a canvas

Given that you are adding

+ImageBuffer* HTMLCanvasElement::buffer() const
+{
+    if (!m_createdDrawingContext)
+        createDrawingContext();
+    return m_data.get();
+}

I think you should change HTMLCanvasElement::drawingContext() to a simple &quot;return buffer()-&gt;context();&quot;.

It seems odd that you null-check context in GraphicsContext::paintBuffer() but not in GraphicsContext::drawImage().

This is rather pointless:

+    CGContextRef platformContext = this-&gt;platformContext();

Finally,

+        // Slow path, boo!

We talked about how it can be made more efficient. You can add a FIXME in addition or instead of the above comment.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>70832</commentid>
    <comment_count>19</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-02-15 22:02:29 -0800</bug_when>
    <thetext>Landed r30336</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>70912</commentid>
    <comment_count>20</comment_count>
      <attachid>19166</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-02-16 21:02:35 -0800</bug_when>
    <thetext>Created attachment 19166
A tiny little tidy up</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>70914</commentid>
    <comment_count>21</comment_count>
      <attachid>19166</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-02-16 21:31:20 -0800</bug_when>
    <thetext>Comment on attachment 19166
A tiny little tidy up

You&apos;re fixing the CG stroke compile failure, but otherwise this looks fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71649</commentid>
    <comment_count>22</comment_count>
      <attachid>19089</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-02-23 16:49:20 -0800</bug_when>
    <thetext>Comment on attachment 19089
Different tack, lets fix HTMLCanvasElement first

Landed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71650</commentid>
    <comment_count>23</comment_count>
      <attachid>19098</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-02-23 16:50:04 -0800</bug_when>
    <thetext>Comment on attachment 19098
Cleanup a de-ifdefify HTMLCanvasElement::paint

Landed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71651</commentid>
    <comment_count>24</comment_count>
      <attachid>19150</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-02-23 16:51:01 -0800</bug_when>
    <thetext>Comment on attachment 19150
De-ifdefify drawing a canvas to a canvas

Landed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71652</commentid>
    <comment_count>25</comment_count>
      <attachid>19166</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-02-23 16:52:02 -0800</bug_when>
    <thetext>Comment on attachment 19166
A tiny little tidy up

Landed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>93493</commentid>
    <comment_count>26</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-09-30 20:35:49 -0700</bug_when>
    <thetext>I think this can be closed.  We&apos;ll open more bugs when we need more changes.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>19029</attachid>
            <date>2008-02-09 23:38:36 -0800</date>
            <delta_ts>2008-02-12 00:02:30 -0800</delta_ts>
            <desc>Round 1 patch, add ImageData abstraction</desc>
            <filename>refatoring-gc-1.patch</filename>
            <type>text/plain</type>
            <size>25394</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YTJhN2YwZS4uNjY4YTdlNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MSBAQAorMjAwOC0wMi0wOSAgT2xpdmVyIEh1bnQg
IDxvbGl2ZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEZpcnN0IHJvdW5kIG9mIHJlZmFjdG9yaW5nIHRvIHJlbW92ZSBpZmRlZnMg
ZnJvbSBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCisKKyAgICAgICAgQWRkIEltYWdlRGF0
YSBhYnN0cmFjdGlvbiB0byBhbGxvdyB1cyB0byByZWZlciB0byByYXcgaW1hZ2UgZGF0YQorICAg
ICAgICBmb3IgY2FudmFzIG9wZXJhdGlvbnMuICBXaGlsZSB3ZSBhbHJlYWR5IGhhdmUgcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2UKKyAgICAgICAgYW5kIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVm
ZmVyIGJvdGggb2YgdGhlc2Ugc2VlbWVkIGluYXBwcm9wcmlhdGUKKyAgICAgICAgZm9yIHJldXNl
LCB0aGUgZm9ybWVyIGFwcGVhcnMgdG8gYmUgZGVzaWduZWQgZm9yIGludGVyYWN0aW9uIHdpdGgg
dGhlCisgICAgICAgIGxvYWRlciBhbmQgdGhlIGxhdHRlciBmb3IgY3JlYXRpbmcgaW1hZ2VzLiAg
Qm90aCBvZiB0aGVzZSBhcmUgbXVjaAorICAgICAgICBtb3JlIGhlYXZ5d2VpZ2h0IHRoYW4gd2Ug
bmVlZCwgc28gSW1hZ2VEYXRhIGp1c3QgcHJvdmlkZXMgYSBzZXQgb2YKKyAgICAgICAgdmVyeSB0
aGluIHdyYXBwZXIgZnVuY3Rpb25zIHRvIGFsbG93IHVzIHRvIG1hbmlwdWxhdGUgdGhlIGltYWdl
IHJlZmVyZW5jZQorICAgICAgICBpbiBhIGNyb3NzLXBsYXRmb3JtIHdheS4KKworICAgICAgICAq
IEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL0NhbnZhc1BhdHRlcm4uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FudmFzUGF0dGVybjo6Q2FudmFzUGF0dGVybik6CisgICAgICAgIChXZWJD
b3JlOjpDYW52YXNQYXR0ZXJuOjpjcmVhdGVQYXR0ZXJuKToKKyAgICAgICAgKiBodG1sL0NhbnZh
c1BhdHRlcm4uaDoKKyAgICAgICAgKiBodG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJbWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNyZWF0ZVBhdHRl
cm4pOgorICAgICAgICAqIGh0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwOgorICAgICAgICAqIGh0
bWwvSFRNTENhbnZhc0VsZW1lbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZURhdGEuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZURhdGFJc051bGwpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlRGF0YUNhaXJvLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURhdGFSZWxlYXNlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZURhdGFDRy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VEYXRhUmVsZWFzZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VE
YXRhUXQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGF0YVJlbGVhc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEYXRhUmV0YWluKToKKwogMjAwOC0wMi0wOSAgRGF2aWQg
SHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IGZvciBidWcgMTcyMDMsIGhp
Z2ggQ1BVIHVzYWdlIGxvYWRpbmcgSFRNTDUgc3BlYy4gIFRoaXMgcGF0Y2ggc2lnbmlmaWNhbnRs
eSBpbXByb3ZlcyB0aGUgcGVyZm9ybWFuY2UKZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZp
bGUuYW0gYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IDQ1MGU5ZWIuLmMxOGY1NzYgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmls
ZS5hbQpAQCAtOTc0LDYgKzk3NCw3IEBAIHdlYmtpdGd0a19zb3VyY2VzICs9IFwKIAlXZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcCBcCiAJV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcCBcCiAJV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUNhaXJvLmNwcCBcCisJV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZURhdGFDYWlyby5jcHAgXAogCVdlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VTb3VyY2VDYWlyby5jcHAgXAogCVdlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0aENhaXJvLmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcCBcCmRpZmYgLS1naXQgYS9XZWJD
b3JlL1dlYkNvcmUucHJvIGIvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCAxZGZjMTU4Li4zYzQx
NjY4IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1dlYkNvcmUvV2ViQ29y
ZS5wcm8KQEAgLTkwMSw2ICs5MDEsNyBAQCBxdC1wb3J0IHsKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9xdC9JbWFnZUJ1ZmZlclF0LmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VE
ZWNvZGVyUXQuY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZVF0LmNwcCBcCisg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VEYXRhUXQuY3BwIFwKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9xdC9JbWFnZVNvdXJjZVF0LmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvcXQv
SW50UG9pbnRRdC5jcHAgXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0ludFJlY3RRdC5jcHAg
XApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1dl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggMDRlZTc1Yi4uOTFiMTU1
ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysg
Yi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0zNzkzLDYgKzM3OTMs
MTAgQEAKIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXEltYWdlRGF0YS5oIg0KKwkJCQkJPg0KKwkJCQk8L0Zp
bGU+DQorCQkJCTxGaWxlDQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNz
XEltYWdlT2JzZXJ2ZXIuaCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KQEAgLTQwMzYsNiArNDA0
MCwxMCBAQAogCQkJCQkJPg0KIAkJCQkJPC9GaWxlPg0KIAkJCQkJPEZpbGUNCisJCQkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGNnXEltYWdlRGF0YUNHLmNwcCINCisJCQkJ
CQk+DQorCQkJCQk8L0ZpbGU+DQorCQkJCQk8RmlsZQ0KIAkJCQkJCVJlbGF0aXZlUGF0aD0iLi5c
cGxhdGZvcm1cZ3JhcGhpY3NcY2dcSW1hZ2VTb3VyY2VDRy5jcHAiDQogCQkJCQkJPg0KIAkJCQkJ
PC9GaWxlPg0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
YjZmN2I5Zi4uMjRmNTUwNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTE3MDksNiArMTcwOSw4IEBACiAJCTkzRjlCN0EwMEJBNjAzMjYwMDg1NDA2NCAv
KiBKU0NEQVRBU2VjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5M0Y5Qjc5RTBCQTYwMzI2MDA4NTQwNjQgLyogSlNDREFUQVNlY3Rpb24uY3Bw
ICovOyB9OwogCQk5M0Y5QjdBMTBCQTYwMzI2MDA4NTQwNjQgLyogSlNDREFUQVNlY3Rpb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjlCNzlGMEJB
NjAzMjYwMDg1NDA2NCAvKiBKU0NEQVRBU2VjdGlvbi5oICovOyB9OwogCQk5M0ZEQUZDQTBCMTEz
MDc0MDBFMjc0NkYgLyogRWRpdG9ySW5zZXJ0QWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0ZEQUZDOTBCMTEzMDc0MDBFMjc0NkYgLyogRWRp
dG9ySW5zZXJ0QWN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJQTcxNEVBMzAwRDVFODY0QjAwMUMxN0UxIC8qIEltYWdlRGF0YS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcxNEVBMkYwRDVFODY0
QjAwMUMxN0UxIC8qIEltYWdlRGF0YS5oICovOyB9OworCQlBNzE0RUEzMjBENUU4NjYyMDAxQzE3
RTEgLyogSW1hZ2VEYXRhQ0cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTcxNEVBMzEwRDVFODY2MjAwMUMxN0UxIC8qIEltYWdlRGF0YUNHLmNwcCAq
LzsgfTsKIAkJQTcxODc2MEUwQjJBMTIwMTAwQTE2RUNFIC8qIERyYWdBY3Rpb25zLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzE4NzYwRDBCMkExMjAx
MDBBMTZFQ0UgLyogRHJhZ0FjdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlBNzE4Nzg5MDBCMkQwNEFDMDBBMTZFQ0UgLyogRHJhZ0NvbnRy
b2xsZXJNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBNzE4Nzg4RjBCMkQwNEFDMDBBMTZFQ0UgLyogRHJhZ0NvbnRyb2xsZXJNYWMubW0gKi87IH07
CiAJCUE3MzUyQzE5MEIxQkI4OUQwMEE5ODZEMCAvKiBSZW5kZXJTVkdCbG9jay5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzM1MkMxNzBCMUJCODlE
MDBBOTg2RDAgLyogUmVuZGVyU1ZHQmxvY2suY3BwICovOyB9OwpAQCAtNTg5OSw2ICs1OTAxLDgg
QEAKIAkJOTNGOUI3OUUwQkE2MDMyNjAwODU0MDY0IC8qIEpTQ0RBVEFTZWN0aW9uLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ0RBVEFTZWN0aW9uLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNGOUI3OUYwQkE2MDMyNjAwODU0MDY0IC8qIEpT
Q0RBVEFTZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ0RBVEFT
ZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRkRBRkM5MEIxMTMwNzQw
MEUyNzQ2RiAvKiBFZGl0b3JJbnNlcnRBY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEVkaXRvckluc2VydEFjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlBNzE0RUEyRjBENUU4NjRCMDAxQzE3RTEgLyogSW1hZ2VEYXRhLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlBNzE0RUEzMTBENUU4NjYyMDAxQzE3RTEgLyogSW1hZ2VEYXRhQ0cuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VEYXRhQ0cuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBNzE4NzYwRDBCMkExMjAxMDBBMTZFQ0UgLyogRHJhZ0Fj
dGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRHJhZ0FjdGlvbnMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcxODc4OEYwQjJEMDRBQzAwQTE2RUNFIC8q
IERyYWdDb250cm9sbGVyTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gRHJhZ0NvbnRyb2xsZXJNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUE3MzUyQzE3MEIxQkI4OUQwMEE5ODZEMCAvKiBSZW5kZXJTVkdCbG9jay5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyU1ZHQmxvY2suY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTEyMTQsNiArMTEyMTgsNyBAQAogCQkJCUIyNzUzNTM1
MEIwNTM4MTQwMDJDRTY0RiAvKiBQYXRoQ0cuY3BwICovLAogCQkJCUIyNzUzNTM2MEIwNTM4MTQw
MDJDRTY0RiAvKiBQREZEb2N1bWVudEltYWdlLmNwcCAqLywKIAkJCQlCMjc1MzUzNzBCMDUzODE0
MDAyQ0U2NEYgLyogUERGRG9jdW1lbnRJbWFnZS5oICovLAorCQkJCUE3MTRFQTMxMEQ1RTg2NjIw
MDFDMTdFMSAvKiBJbWFnZURhdGFDRy5jcHAgKi8sCiAJCQkpOwogCQkJcGF0aCA9IGNnOwogCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTExMjkzLDYgKzExMjk4LDcgQEAKIAkJCQlCMjc1
MzU0MTBCMDUzODE0MDAyQ0U2NEYgLyogSW1hZ2UuY3BwICovLAogCQkJCUIyNzUzNTQyMEIwNTM4
MTQwMDJDRTY0RiAvKiBJbWFnZS5oICovLAogCQkJCUIyQTEwQjkxMEIzODE4QkQwMDA5OUFBNCAv
KiBJbWFnZUJ1ZmZlci5oICovLAorCQkJCUE3MTRFQTJGMEQ1RTg2NEIwMDFDMTdFMSAvKiBJbWFn
ZURhdGEuaCAqLywKIAkJCQlCQzdGNDRBNzBCOUUzMjRFMDBBOUQwODEgLyogSW1hZ2VPYnNlcnZl
ci5oICovLAogCQkJCUIyNzUzNTQzMEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFnZVNvdXJjZS5oICov
LAogCQkJCUIyNzUzNTQ0MEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRQb2ludC5oICovLApAQCAtMTQy
MzQsNiArMTQyNDAsNyBAQAogCQkJCTUxQTkyNjdGMEQ1M0YwNTcwMDYzRUNDMiAvKiBPcmlnaW5V
c2FnZVJlY29yZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNURDRjgzNkQwRDU5MTU5ODAwOTUzQkM2
IC8qIFBsdWdpbkluZm9TdG9yZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzAyOTRERjQwRDVBNkZE
ODAwQ0M3RDZCIC8qIFVzZXJTdHlsZVNoZWV0TG9hZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlB
NzE0RUEzMDBENUU4NjRCMDAxQzE3RTEgLyogSW1hZ2VEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJ
CSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAg
LTE1ODI4LDYgKzE1ODM1LDcgQEAKIAkJCQk1MUE5MjY3QzBENTNGMDU3MDA2M0VDQzIgLyogT3Jp
Z2luUXVvdGFNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxQTkyNjdFMEQ1M0YwNTcw
MDYzRUNDMiAvKiBPcmlnaW5Vc2FnZVJlY29yZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMDI5
NERGMzBENUE2RkQ4MDBDQzdENkIgLyogVXNlclN0eWxlU2hlZXRMb2FkZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJQTcxNEVBMzIwRDVFODY2MjAwMUMxN0UxIC8qIEltYWdlRGF0YUNHLmNwcCBp
biBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0NhbnZhc1BhdHRlcm4uY3Bw
IGIvV2ViQ29yZS9odG1sL0NhbnZhc1BhdHRlcm4uY3BwCmluZGV4IDk1MDQ3MWUuLjI3MzNlMTUg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9DYW52YXNQYXR0ZXJuLmNwcAorKysgYi9XZWJDb3Jl
L2h0bWwvQ2FudmFzUGF0dGVybi5jcHAKQEAgLTYzLDMxICs2MywxNyBAQCB2b2lkIENhbnZhc1Bh
dHRlcm46OnBhcnNlUmVwZXRpdGlvblR5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBib29sJiByZXBl
YXRYLCBib29sJgogICAgIGVjID0gU1lOVEFYX0VSUjsKIH0KIAotI2lmIFBMQVRGT1JNKENHKQot
Ci1DYW52YXNQYXR0ZXJuOjpDYW52YXNQYXR0ZXJuKENHSW1hZ2VSZWYgaW1hZ2UsIGJvb2wgcmVw
ZWF0WCwgYm9vbCByZXBlYXRZKQotICAgIDogbV9wbGF0Zm9ybUltYWdlKGltYWdlKQorQ2FudmFz
UGF0dGVybjo6Q2FudmFzUGF0dGVybihJbWFnZURhdGFSZWYgaW1hZ2UsIGJvb2wgcmVwZWF0WCwg
Ym9vbCByZXBlYXRZKQorICAgIDogbV9wbGF0Zm9ybUltYWdlKEltYWdlRGF0YVJldGFpbihpbWFn
ZSkpCiAgICAgLCBtX2NhY2hlZEltYWdlKDApCiAgICAgLCBtX3JlcGVhdFgocmVwZWF0WCkKICAg
ICAsIG1fcmVwZWF0WShyZXBlYXRZKQogewogfQogCi0jZWxpZiBQTEFURk9STShDQUlSTykKLQot
Q2FudmFzUGF0dGVybjo6Q2FudmFzUGF0dGVybihjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UsIGJv
b2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZKQotICAgIDogbV9wbGF0Zm9ybUltYWdlKGNhaXJvX3N1
cmZhY2VfcmVmZXJlbmNlKHN1cmZhY2UpKQotICAgICwgbV9jYWNoZWRJbWFnZSgwKQotICAgICwg
bV9yZXBlYXRYKHJlcGVhdFgpCi0gICAgLCBtX3JlcGVhdFkocmVwZWF0WSkKLXsKLX0KLQotI2Vu
ZGlmCi0KIENhbnZhc1BhdHRlcm46OkNhbnZhc1BhdHRlcm4oQ2FjaGVkSW1hZ2UqIGNhY2hlZElt
YWdlLCBib29sIHJlcGVhdFgsIGJvb2wgcmVwZWF0WSkKICAgICA6Ci0jaWYgUExBVEZPUk0oQ0cp
IHx8IFBMQVRGT1JNKENBSVJPKQorI2lmICFQTEFURk9STShRVCkKICAgICAgIG1fcGxhdGZvcm1J
bWFnZSgwKQogICAgICwKICNlbmRpZgpAQCAtMTAxLDEwICs4Nyw3IEBAIENhbnZhc1BhdHRlcm46
OkNhbnZhc1BhdHRlcm4oQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlLCBib29sIHJlcGVhdFgsIGJv
b2wgcmVwZWF0CiAKIENhbnZhc1BhdHRlcm46On5DYW52YXNQYXR0ZXJuKCkKIHsKLSNpZiBQTEFU
Rk9STShDQUlSTykKLSAgICBpZiAobV9wbGF0Zm9ybUltYWdlKQotICAgICAgICBjYWlyb19zdXJm
YWNlX2Rlc3Ryb3kobV9wbGF0Zm9ybUltYWdlKTsKLSNlbmRpZgorICAgIEltYWdlRGF0YVJlbGVh
c2UobV9wbGF0Zm9ybUltYWdlKTsKICAgICBpZiAobV9jYWNoZWRJbWFnZSkKICAgICAgICAgbV9j
YWNoZWRJbWFnZS0+ZGVyZWYodGhpcyk7CiB9CkBAIC0xNTMsOCArMTM2LDggQEAgQ0dQYXR0ZXJu
UmVmIENhbnZhc1BhdHRlcm46OmNyZWF0ZVBhdHRlcm4oY29uc3QgQ0dBZmZpbmVUcmFuc2Zvcm0m
IHRyYW5zZm9ybSkKICAgICByZWN0Lm9yaWdpbi54ID0gMDsKICAgICByZWN0Lm9yaWdpbi55ID0g
MDsKICAgICBpZiAobV9wbGF0Zm9ybUltYWdlKSB7Ci0gICAgICAgIHJlY3Quc2l6ZS53aWR0aCA9
IENHSW1hZ2VHZXRXaWR0aChtX3BsYXRmb3JtSW1hZ2UuZ2V0KCkpOwotICAgICAgICByZWN0LnNp
emUuaGVpZ2h0ID0gQ0dJbWFnZUdldEhlaWdodChtX3BsYXRmb3JtSW1hZ2UuZ2V0KCkpOworICAg
ICAgICByZWN0LnNpemUud2lkdGggPSBDR0ltYWdlR2V0V2lkdGgobV9wbGF0Zm9ybUltYWdlKTsK
KyAgICAgICAgcmVjdC5zaXplLmhlaWdodCA9IENHSW1hZ2VHZXRIZWlnaHQobV9wbGF0Zm9ybUlt
YWdlKTsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAoIW1fY2FjaGVkSW1hZ2UpCiAgICAgICAg
ICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9DYW52YXNQYXR0ZXJuLmgg
Yi9XZWJDb3JlL2h0bWwvQ2FudmFzUGF0dGVybi5oCmluZGV4IDQ5OTA3NzYuLjM2YjRiZTUgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9DYW52YXNQYXR0ZXJuLmgKKysrIGIvV2ViQ29yZS9odG1s
L0NhbnZhc1BhdHRlcm4uaApAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBDYW52YXNQYXR0ZXJu
X2gKIAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50LmgiCisjaW5jbHVkZSAiSW1hZ2VE
YXRhLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogI2lmIFBMQVRGT1JNKENHKQpA
QCAtNDcsMTkgKzQ4LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBwdWJsaWM6CiAgICAg
ICAgIHN0YXRpYyB2b2lkIHBhcnNlUmVwZXRpdGlvblR5cGUoY29uc3QgU3RyaW5nJiwgYm9vbCYg
cmVwZWF0WCwgYm9vbCYgcmVwZWF0WSwgRXhjZXB0aW9uQ29kZSYpOwogCi0jaWYgUExBVEZPUk0o
Q0cpCi0gICAgICAgIENhbnZhc1BhdHRlcm4oQ0dJbWFnZVJlZiwgYm9vbCByZXBlYXRYLCBib29s
IHJlcGVhdFkpOwotI2VsaWYgUExBVEZPUk0oQ0FJUk8pCi0gICAgICAgIENhbnZhc1BhdHRlcm4o
Y2Fpcm9fc3VyZmFjZV90KiwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVhdFkpOwotI2VuZGlmCisg
ICAgICAgIENhbnZhc1BhdHRlcm4oSW1hZ2VEYXRhUmVmLCBib29sIHJlcGVhdFgsIGJvb2wgcmVw
ZWF0WSk7CiAgICAgICAgIENhbnZhc1BhdHRlcm4oQ2FjaGVkSW1hZ2UqLCBib29sIHJlcGVhdFgs
IGJvb2wgcmVwZWF0WSk7CiAgICAgICAgIH5DYW52YXNQYXR0ZXJuKCk7CiAKLSNpZiBQTEFURk9S
TShDRykKLSAgICAgICAgQ0dJbWFnZVJlZiBwbGF0Zm9ybUltYWdlKCkgY29uc3QgeyByZXR1cm4g
bV9wbGF0Zm9ybUltYWdlLmdldCgpOyB9Ci0jZWxpZiBQTEFURk9STShDQUlSTykKLSAgICAgICAg
Y2Fpcm9fc3VyZmFjZV90KiBwbGF0Zm9ybUltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9y
bUltYWdlOyB9Ci0jZW5kaWYKKyAgICAgICAgSW1hZ2VEYXRhUmVmIHBsYXRmb3JtSW1hZ2UoKSBj
b25zdCB7IHJldHVybiBtX3BsYXRmb3JtSW1hZ2U7IH0KICAgICAgICAgQ2FjaGVkSW1hZ2UqIGNh
Y2hlZEltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRJbWFnZTsgfQogCiAjaWYgUExBVEZP
Uk0oQ0cpCkBAIC02OSwxMSArNjIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKIAog
ICAgIHByaXZhdGU6Ci0jaWYgUExBVEZPUk0oQ0cpCi0gICAgICAgIGNvbnN0IFJldGFpblB0cjxD
R0ltYWdlUmVmPiBtX3BsYXRmb3JtSW1hZ2U7Ci0jZWxpZiBQTEFURk9STShDQUlSTykKLSAgICAg
ICAgY2Fpcm9fc3VyZmFjZV90KiBjb25zdCBtX3BsYXRmb3JtSW1hZ2U7Ci0jZW5kaWYKKyAgICAg
ICAgSW1hZ2VEYXRhUmVmIGNvbnN0IG1fcGxhdGZvcm1JbWFnZTsKICAgICAgICAgQ2FjaGVkSW1h
Z2UqIGNvbnN0IG1fY2FjaGVkSW1hZ2U7CiAgICAgICAgIGNvbnN0IGJvb2wgbV9yZXBlYXRYOwog
ICAgICAgICBjb25zdCBib29sIG1fcmVwZWF0WTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9D
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwIGIvV2ViQ29yZS9odG1sL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRC5jcHAKaW5kZXggYjYxMWE4OC4uYWM0YjExZiAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9odG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKQEAgLTk1NiwxMyArOTU2LDEyIEBAIHZvaWQgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3SW1hZ2UoSFRNTENhbnZhc0VsZW1lbnQqIGNhbnZh
cywgY29uc3QgRmxvYXRSCiAgICAgRmxvYXRSZWN0IGRlc3RSZWN0ID0gYy0+cm91bmRUb0Rldmlj
ZVBpeGVscyhkc3RSZWN0KTsKICAgICAgICAgCiAgICAgLy8gRklYTUU6IERvIHRoaXMgdGhyb3Vn
aCBwbGF0Zm9ybS1pbmRlcGVuZGVudCBHcmFwaGljc0NvbnRleHQgQVBJLgotI2lmIFBMQVRGT1JN
KENHKQotICAgIENHSW1hZ2VSZWYgcGxhdGZvcm1JbWFnZSA9IGNhbnZhcy0+Y3JlYXRlUGxhdGZv
cm1JbWFnZSgpOwotICAgIGlmICghcGxhdGZvcm1JbWFnZSkKKyAgICBJbWFnZURhdGFSZWYgcGxh
dGZvcm1JbWFnZSA9IGNhbnZhcy0+Y3JlYXRlUGxhdGZvcm1JbWFnZSgpOworICAgIGlmIChJbWFn
ZURhdGFJc051bGwocGxhdGZvcm1JbWFnZSkpCiAgICAgICAgIHJldHVybjsKLQorICAgIAogICAg
IHdpbGxEcmF3KGRlc3RSZWN0KTsKLQorI2lmIFBMQVRGT1JNKENHKQogICAgIGZsb2F0IGl3ID0g
Q0dJbWFnZUdldFdpZHRoKHBsYXRmb3JtSW1hZ2UpOwogICAgIGZsb2F0IGloID0gQ0dJbWFnZUdl
dEhlaWdodChwbGF0Zm9ybUltYWdlKTsKICAgICBpZiAoc291cmNlUmVjdC54KCkgPT0gMCAmJiBz
b3VyY2VSZWN0LnkoKSA9PSAwICYmIGl3ID09IHNvdXJjZVJlY3Qud2lkdGgoKSAmJiBpaCA9PSBz
b3VyY2VSZWN0LmhlaWdodCgpKSB7CkBAIC05OTMsMjggKzk5MiwxOCBAQCB2b2lkIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRDo6ZHJhd0ltYWdlKEhUTUxDYW52YXNFbGVtZW50KiBjYW52YXMsIGNv
bnN0IEZsb2F0UgogICAgICAgICAKICAgICAgICAgZmFzdEZyZWUoYnVmZmVyKTsKICAgICB9Ci0K
LSAgICBDR0ltYWdlUmVsZWFzZShwbGF0Zm9ybUltYWdlKTsKICNlbGlmIFBMQVRGT1JNKFFUKQot
ICAgIFFJbWFnZSBweCA9IGNhbnZhcy0+Y3JlYXRlUGxhdGZvcm1JbWFnZSgpOwotICAgIGlmIChw
eC5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIHdpbGxEcmF3KGRzdFJlY3QpOwogICAg
IFFQYWludGVyKiBwYWludGVyID0gc3RhdGljX2Nhc3Q8UVBhaW50ZXIqPihjLT5wbGF0Zm9ybUNv
bnRleHQoKSk7Ci0gICAgcGFpbnRlci0+ZHJhd0ltYWdlKGRzdFJlY3QsIHB4LCBzcmNSZWN0KTsK
KyAgICBwYWludGVyLT5kcmF3SW1hZ2UoZHN0UmVjdCwgcGxhdGZvcm1JbWFnZSwgc3JjUmVjdCk7
CiAjZWxpZiBQTEFURk9STShDQUlSTykKLSAgICBjYWlyb19zdXJmYWNlX3QqIGltYWdlID0gY2Fu
dmFzLT5jcmVhdGVQbGF0Zm9ybUltYWdlKCk7Ci0gICAgaWYgKCFpbWFnZSkKLSAgICAgICAgcmV0
dXJuOwotICAgIHdpbGxEcmF3KGRzdFJlY3QpOwogICAgIGNhaXJvX3QqIGNyID0gYy0+cGxhdGZv
cm1Db250ZXh0KCk7CiAgICAgY2Fpcm9fc2F2ZShjcik7Ci0gICAgY2Fpcm9fc2V0X3NvdXJjZV9z
dXJmYWNlKGNyLCBpbWFnZSwgc3JjUmVjdC54KCksIHNyY1JlY3QueSgpKTsKLSAgICBjYWlyb19z
dXJmYWNlX2Rlc3Ryb3koaW1hZ2UpOworICAgIGNhaXJvX3NldF9zb3VyY2Vfc3VyZmFjZShjciwg
cGxhdGZvcm1JbWFnZSwgc3JjUmVjdC54KCksIHNyY1JlY3QueSgpKTsKICAgICBjYWlyb19yZWN0
YW5nbGUoY3IsIGRzdFJlY3QueCgpLCBkc3RSZWN0LnkoKSwgZHN0UmVjdC53aWR0aCgpLCBkc3RS
ZWN0LmhlaWdodCgpKTsKICAgICBjYWlyb19maWxsKGNyKTsKICAgICBjYWlyb19yZXN0b3JlKGNy
KTsKICNlbmRpZgorICAgIEltYWdlRGF0YVJlbGVhc2UocGxhdGZvcm1JbWFnZSk7CiB9CiAKIC8v
IEZJWE1FOiBXaHkgaXNuJ3QgdGhpcyBqdXN0IGFub3RoZXIgb3ZlcmxvYWQgb2YgZHJhd0ltYWdl
PyBXaHkgaGF2ZSBhIGRpZmZlcmVudCBuYW1lPwpAQCAtMTA4MiwyNSArMTA3MSwxNCBAQCBQYXNz
UmVmUHRyPENhbnZhc1BhdHRlcm4+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y3JlYXRlUGF0
dGVybihIVE1MQ2FudmFzRWxlbQogICAgIENhbnZhc1BhdHRlcm46OnBhcnNlUmVwZXRpdGlvblR5
cGUocmVwZXRpdGlvblR5cGUsIHJlcGVhdFgsIHJlcGVhdFksIGVjKTsKICAgICBpZiAoZWMpCiAg
ICAgICAgIHJldHVybiAwOwotICAgIC8vIEZJWE1FOiBEbyB0aGlzIHRocm91Z2ggcGxhdGZvcm0t
aW5kZXBlbmRlbnQgR3JhcGhpY3NDb250ZXh0IEFQSS4KLSNpZiBQTEFURk9STShDRykKLSAgICBD
R0ltYWdlUmVmIGltYWdlID0gY2FudmFzLT5jcmVhdGVQbGF0Zm9ybUltYWdlKCk7Ci0gICAgaWYg
KCFpbWFnZSkKKworICAgIEltYWdlRGF0YVJlZiBpbWFnZSA9IGNhbnZhcy0+Y3JlYXRlUGxhdGZv
cm1JbWFnZSgpOworICAgIGlmIChJbWFnZURhdGFJc051bGwoaW1hZ2UpKQogICAgICAgICByZXR1
cm4gMDsKKwogICAgIFBhc3NSZWZQdHI8Q2FudmFzUGF0dGVybj4gcGF0dGVybiA9IG5ldyBDYW52
YXNQYXR0ZXJuKGltYWdlLCByZXBlYXRYLCByZXBlYXRZKTsKLSAgICBDR0ltYWdlUmVsZWFzZShp
bWFnZSk7CisgICAgSW1hZ2VEYXRhUmVsZWFzZShpbWFnZSk7CiAgICAgcmV0dXJuIHBhdHRlcm47
Ci0jZWxpZiBQTEFURk9STShDQUlSTykKLSAgICBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UgPSBj
YW52YXMtPmNyZWF0ZVBsYXRmb3JtSW1hZ2UoKTsKLSAgICBpZiAoIXN1cmZhY2UpCi0gICAgICAg
IHJldHVybiAwOwotICAgIFBhc3NSZWZQdHI8Q2FudmFzUGF0dGVybj4gcGF0dGVybiA9IG5ldyBD
YW52YXNQYXR0ZXJuKHN1cmZhY2UsIHJlcGVhdFgsIHJlcGVhdFkpOwotICAgIGNhaXJvX3N1cmZh
Y2VfZGVzdHJveShzdXJmYWNlKTsKLSAgICByZXR1cm4gcGF0dGVybjsKLSNlbHNlCi0gICAgbm90
SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKLSNlbmRpZgogfQogCiB2b2lkIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRDo6d2lsbERyYXcoY29uc3QgRmxvYXRSZWN0JiByKQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1M
Q2FudmFzRWxlbWVudC5jcHAKaW5kZXggNTQ5ODEyNC4uYmI2OGM0MyAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTENh
bnZhc0VsZW1lbnQuY3BwCkBAIC0zMDMsNyArMzAzLDcgQEAgR3JhcGhpY3NDb250ZXh0KiBIVE1M
Q2FudmFzRWxlbWVudDo6ZHJhd2luZ0NvbnRleHQoKSBjb25zdAogCiAjaWYgUExBVEZPUk0oQ0cp
CiAKLUNHSW1hZ2VSZWYgSFRNTENhbnZhc0VsZW1lbnQ6OmNyZWF0ZVBsYXRmb3JtSW1hZ2UoKSBj
b25zdAorSW1hZ2VEYXRhUmVmIEhUTUxDYW52YXNFbGVtZW50OjpjcmVhdGVQbGF0Zm9ybUltYWdl
KCkgY29uc3QKIHsKICAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBkcmF3aW5nQ29udGV4
dCgpOwogICAgIGlmICghY29udGV4dCkKQEAgLTMyMCw3ICszMjAsNyBAQCBDR0ltYWdlUmVmIEhU
TUxDYW52YXNFbGVtZW50OjpjcmVhdGVQbGF0Zm9ybUltYWdlKCkgY29uc3QKIAogI2VsaWYgUExB
VEZPUk0oUVQpCiAKLVFJbWFnZSBIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlUGxhdGZvcm1JbWFn
ZSgpIGNvbnN0CitJbWFnZURhdGFSZWYgSFRNTENhbnZhc0VsZW1lbnQ6OmNyZWF0ZVBsYXRmb3Jt
SW1hZ2UoKSBjb25zdAogewogICAgIGlmIChtX2RhdGEpCiAgICAgICAgIHJldHVybiAqbV9kYXRh
OwpAQCAtMzI5LDcgKzMyOSw3IEBAIFFJbWFnZSBIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlUGxh
dGZvcm1JbWFnZSgpIGNvbnN0CiAKICNlbGlmIFBMQVRGT1JNKENBSVJPKQogCi1jYWlyb19zdXJm
YWNlX3QqIEhUTUxDYW52YXNFbGVtZW50OjpjcmVhdGVQbGF0Zm9ybUltYWdlKCkgY29uc3QKK0lt
YWdlRGF0YVJlZiBIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlUGxhdGZvcm1JbWFnZSgpIGNvbnN0
CiB7CiAgICAgaWYgKCFtX3N1cmZhY2UpCiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmggYi9XZWJDb3JlL2h0bWwvSFRNTENhbnZh
c0VsZW1lbnQuaAppbmRleCBhZGQxYmY3Li44ODY4NDYwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0
bWwvSFRNTENhbnZhc0VsZW1lbnQuaAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1l
bnQuaApAQCAtMjksMTcgKzI5LDcgQEAKIAogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAjaW5j
bHVkZSAiSW50U2l6ZS5oIgotCi0jaWYgUExBVEZPUk0oQ0cpCi0vLyBGSVhNRTogQ0ctc3BlY2lm
aWMgcGFydHMgbmVlZCB0byBtb3ZlIHRvIHRoZSBwbGF0Zm9ybSBkaXJlY3RvcnkuCi10eXBlZGVm
IHN0cnVjdCBDR0NvbnRleHQqIENHQ29udGV4dFJlZjsKLXR5cGVkZWYgc3RydWN0IENHSW1hZ2Uq
IENHSW1hZ2VSZWY7Ci0jZWxpZiBQTEFURk9STShRVCkKLWNsYXNzIFFJbWFnZTsKLWNsYXNzIFFQ
YWludGVyOwotI2VsaWYgUExBVEZPUk0oQ0FJUk8pCi10eXBlZGVmIHN0cnVjdCBfY2Fpcm9fc3Vy
ZmFjZSBjYWlyb19zdXJmYWNlX3Q7Ci0jZW5kaWYKKyNpbmNsdWRlICJJbWFnZURhdGEuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC03NCwxMyArNjQsNyBAQCBwdWJsaWM6CiAKICAgICBH
cmFwaGljc0NvbnRleHQqIGRyYXdpbmdDb250ZXh0KCkgY29uc3Q7CiAKLSNpZiBQTEFURk9STShD
RykKLSAgICBDR0ltYWdlUmVmIGNyZWF0ZVBsYXRmb3JtSW1hZ2UoKSBjb25zdDsKLSNlbGlmIFBM
QVRGT1JNKFFUKQotICAgIFFJbWFnZSBjcmVhdGVQbGF0Zm9ybUltYWdlKCkgY29uc3Q7Ci0jZWxp
ZiBQTEFURk9STShDQUlSTykKLSAgICBjYWlyb19zdXJmYWNlX3QqIGNyZWF0ZVBsYXRmb3JtSW1h
Z2UoKSBjb25zdDsKLSNlbmRpZgorICAgIEltYWdlRGF0YVJlZiBjcmVhdGVQbGF0Zm9ybUltYWdl
KCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBjcmVhdGVEcmF3aW5nQ29udGV4dCgpIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURhdGEuaCBi
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEYXRhLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uNGUxMDY3MgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VEYXRhLmgKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
Zm5kZWYgSW1hZ2VEYXRhX2gKKyNkZWZpbmUgSW1hZ2VEYXRhX2gKKworLy8gVmVyeSBzaW1wbGUg
cGxhdGZvcm0gYWJzdHJhY3Rpb24gbGF5ZXIgZm9yIGhhbmRsaW5nIEltYWdlRGF0YSBmb3IgY2Fu
dmFzIG9wZXJhdGlvbnMKKworI2lmIFBMQVRGT1JNKENHKQordHlwZWRlZiBzdHJ1Y3QgQ0dDb250
ZXh0KiBDR0NvbnRleHRSZWY7Cit0eXBlZGVmIHN0cnVjdCBDR0ltYWdlKiBDR0ltYWdlUmVmOwor
I2VsaWYgUExBVEZPUk0oUVQpCitjbGFzcyBRSW1hZ2U7CisjZWxpZiBQTEFURk9STShDQUlSTykK
K3R5cGVkZWYgc3RydWN0IF9jYWlyb19zdXJmYWNlIGNhaXJvX3N1cmZhY2VfdDsKKyNlbmRpZgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisjaWYgUExBVEZPUk0oQ0cpCisgICAgdHlwZWRlZiBDR0lt
YWdlUmVmIEltYWdlRGF0YVJlZjsKKyNlbGlmIFBMQVRGT1JNKFFUKQorICAgIHR5cGVkZWYgUUlt
YWdlIEltYWdlRGF0YVJlZjsKKyNlbGlmIFBMQVRGT1JNKENBSVJPKQorICAgIHR5cGVkZWYgY2Fp
cm9fc3VyZmFjZV90KiBJbWFnZURhdGFSZWY7CisjZWxzZQorICAgIHR5cGVkZWYgdm9pZCogSW1h
Z2VEYXRhUmVmOworI2VuZGlmCisgICAgCisgICAgLy8gUXQgaW5zaXN0cyBvbiB1c2luZyB2YWx1
ZSB0eXBlcyBmb3IgZGF0YSwgYnV0IG5vdCBwcm92aWRpbmcgc3RhbmRhcmQKKyAgICAvLyBwb2lu
dGVyIG92ZXJsb2Fkcywgc28gd2UncmUgc3R1Y2sgd2l0aCB0aGlzIHVnbHkgYXMgc2luIG1ldGhv
ZAorI2lmIFBMQVRGT1JNKFFUKQorICAgIGJvb2wgSW1hZ2VEYXRhSXNOdWxsKGNvbnN0IEltYWdl
RGF0YVJlZiYpOworI2Vsc2UKKyAgICBzdGF0aWMgaW5saW5lIGJvb2wgSW1hZ2VEYXRhSXNOdWxs
KGNvbnN0IEltYWdlRGF0YVJlZiYgaW1hZ2UpIHsgcmV0dXJuICFpbWFnZTsgfQorI2VuZGlmCisg
ICAgCisgICAgSW1hZ2VEYXRhUmVmIEltYWdlRGF0YVJldGFpbihJbWFnZURhdGFSZWYmKTsKKyAg
ICAKKyAgICAvLyBJbWFnZURhdGFSZWxlYXNlIGlzIHJlcXVpcmVkIHRvIGJlIG51bGwgc2FmZS4K
KyAgICB2b2lkIEltYWdlRGF0YVJlbGVhc2UoY29uc3QgSW1hZ2VEYXRhUmVmJik7Cit9CisKKyNl
bmRpZiAvLyBJbWFnZURhdGFSZWZfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9JbWFnZURhdGFDYWlyby5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ltYWdlRGF0YUNhaXJvLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi4yMjMxZDNlCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9JbWFnZURhdGFDYWlyby5jcHAKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbWFnZURhdGEuaCIKKworI2luY2x1ZGUgPGNh
aXJvLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICB2b2lkIEltYWdlRGF0YVJlbGVhc2Uo
Y29uc3QgSW1hZ2VEYXRhUmVmJiBpbWFnZSkKKyAgICB7CisgICAgICAgIGlmIChpbWFnZSkKKyAg
ICAgICAgICAgIGNhaXJvX3N1cmZhY2VfZGVzdHJveShpbWFnZSk7CisgICAgfQorCisgICAgUGxh
dGZvcm1JbWFnZURhdGFSZWYgSW1hZ2VEYXRhUmV0YWluKEltYWdlRGF0YVJlZiYgaW1hZ2UpCisg
ICAgeworICAgICAgICByZXR1cm4gY2Fpcm9fc3VyZmFjZV9yZWZlcmVuY2UoaW1hZ2UpOworICAg
IH0KK30KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEYXRh
Q0cuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURhdGFDRy5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmZmNWZiMAotLS0gL2Rldi9udWxsCisr
KyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEYXRhQ0cuY3BwCkBAIC0wLDAg
KzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW1hZ2VE
YXRhLmgiCisKKyNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dJbWFnZS5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisgICAgdm9pZCBJbWFnZURhdGFSZWxlYXNlKGNvbnN0IEltYWdlRGF0YVJlZiYg
aW1hZ2UpCisgICAgeworICAgICAgICBpZiAoaW1hZ2UpCisgICAgICAgICAgICBDR0ltYWdlUmVs
ZWFzZShpbWFnZSk7CisgICAgfQorICAgIAorICAgIEltYWdlRGF0YVJlZiBJbWFnZURhdGFSZXRh
aW4oSW1hZ2VEYXRhUmVmJiBpbWFnZSkKKyAgICB7CisgICAgICAgIHJldHVybiBDR0ltYWdlUmV0
YWluKGltYWdlKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3F0L0ltYWdlRGF0YVF0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1h
Z2VEYXRhUXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdiZGVmYmMK
LS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlRGF0
YVF0LmNwcApAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkltYWdlRGF0YS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgdm9pZCBJ
bWFnZURhdGFSZWxlYXNlKGNvbnN0IFBsYXRmb3JtSW1hZ2VEYXRhUmVmJikKKyAgICB7CisgICAg
fQorCisgICAgSW1hZ2VEYXRhUmVmIEltYWdlRGF0YVJldGFpbihJbWFnZURhdGFSZWYmIGltYWdl
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGltYWdlOworICAgIH0KKworICAgIGJvb2wgaW1hZ2VE
YXRhSXNOdWxsKGNvbnN0IEltYWdlRGF0YVJlZiYgaW1hZ2UpCisgICAgeworICAgICAgICByZXR1
cm4gaW1hZ2UuaXNOdWxsKCk7CisgICAgfQorfQo=
</data>
<flag name="review"
          id="8332"
          type_id="1"
          status="-"
          setter="oliver"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>19030</attachid>
            <date>2008-02-10 00:02:37 -0800</date>
            <delta_ts>2008-02-12 00:02:30 -0800</delta_ts>
            <desc>Minor tidy up as prep for next great leap for ((wo)?man|thing)kind</desc>
            <filename>refatoring-gc-2.patch</filename>
            <type>text/plain</type>
            <size>5191</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NjY4YTdlNS4uZjJhMmI5YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTIsNiArMiwyMiBAQAogCiAgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgogCisgICAgICAgIE1vcmUgY3Jvc3MtcGxhdGZvcm0gdGlkeWluZworCisg
ICAgICAgIFByZXBhcmUgZm9yIGNyb3NzLXBsYXRmb3JtaXNhdGlvbiBvZiBwYXR0ZXJuIGRyYXdp
bmcsIG1ha2UgCisgICAgICAgIHBhdHRlcm5zcGFjZSB0cmFuc2Zvcm1zIGNyb3NzLXBsYXRmb3Jt
IHNvIHRoYXQgaXQncyBlYXNpZXIgdG8KKyAgICAgICAgbW92ZSB0aGUgYWN0dWFsIHBhaW50aW5n
IGxvZ2ljIGludG8gR3JhcGhpY3NDb250ZXh0CisKKyAgICAgICAgKiBDaGFuZ2VMb2c6CisgICAg
ICAgICogaHRtbC9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjphcHBseVN0cm9rZVBhdHRlcm4pOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjphcHBseUZpbGxQYXR0ZXJuKToK
KyAgICAgICAgKiBodG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oOgorCisyMDA4LTAyLTA5
ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKICAgICAgICAgRmlyc3Qgcm91bmQgb2YgcmVmYWN0b3JpbmcgdG8g
cmVtb3ZlIGlmZGVmcyBmcm9tIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKIAogICAgICAg
ICBBZGQgSW1hZ2VEYXRhIGFic3RyYWN0aW9uIHRvIGFsbG93IHVzIHRvIHJlZmVyIHRvIHJhdyBp
bWFnZSBkYXRhCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJELmNwcCBiL1dlYkNvcmUvaHRtbC9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCmluZGV4
IGFjNGIxMWYuLmY2MGE5NmUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9DYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQuY3BwCkBAIC0xMTA0LDE4ICsxMTA0LDE2IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEOjphcHBseVN0cm9rZVBhdHRlcm4oKQogICAgIEdyYXBoaWNzQ29udGV4dCogYyA9IGRyYXdp
bmdDb250ZXh0KCk7CiAgICAgaWYgKCFjKQogICAgICAgICByZXR1cm47Ci0KLSNpZiBQTEFURk9S
TShDRykKKyAgICAKICAgICAvLyBDaGVjayBmb3IgY2FzZSB3aGVyZSB0aGUgcGF0dGVybiBpcyBh
bHJlYWR5IHNldC4KLSAgICBDR0FmZmluZVRyYW5zZm9ybSBtID0gQ0dDb250ZXh0R2V0Q1RNKGMt
PnBsYXRmb3JtQ29udGV4dCgpKTsKLSAgICBpZiAoc3RhdGUoKS5tX2FwcGxpZWRTdHJva2VQYXR0
ZXJuCi0gICAgICAgICAgICAmJiBDR0FmZmluZVRyYW5zZm9ybUVxdWFsVG9UcmFuc2Zvcm0obSwg
c3RhdGUoKS5tX3N0cm9rZVN0eWxlUGF0dGVyblRyYW5zZm9ybSkpCisgICAgQWZmaW5lVHJhbnNm
b3JtIG0gPSBjLT5nZXRDVE0oKTsKKyAgICBpZiAoc3RhdGUoKS5tX2FwcGxpZWRTdHJva2VQYXR0
ZXJuICYmIChtID09IHN0YXRlKCkubV9zdHJva2VTdHlsZVBhdHRlcm5UcmFuc2Zvcm0pKQogICAg
ICAgICByZXR1cm47Ci0KKyAgICAKICAgICBDYW52YXNQYXR0ZXJuKiBwYXR0ZXJuID0gc3RhdGUo
KS5tX3N0cm9rZVN0eWxlLT5wYXR0ZXJuKCk7CiAgICAgaWYgKCFwYXR0ZXJuKQogICAgICAgICBy
ZXR1cm47Ci0KKyNpZiBQTEFURk9STShDRykKICAgICBDR1BhdHRlcm5SZWYgcGxhdGZvcm1QYXR0
ZXJuID0gcGF0dGVybi0+Y3JlYXRlUGF0dGVybihtKTsKICAgICBpZiAoIXBsYXRmb3JtUGF0dGVy
bikKICAgICAgICAgcmV0dXJuOwpAQCAtMTEyOCwxNCArMTEyNiw5IEBAIHZvaWQgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjphcHBseVN0cm9rZVBhdHRlcm4oKQogICAgIENHQ29udGV4dFNldFN0
cm9rZVBhdHRlcm4oYy0+cGxhdGZvcm1Db250ZXh0KCksIHBsYXRmb3JtUGF0dGVybiwgJnBhdHRl
cm5BbHBoYSk7CiAgICAgQ0dQYXR0ZXJuUmVsZWFzZShwbGF0Zm9ybVBhdHRlcm4pOwogCi0gICAg
c3RhdGUoKS5tX3N0cm9rZVN0eWxlUGF0dGVyblRyYW5zZm9ybSA9IG07CiAjZWxpZiBQTEFURk9S
TShRVCkKICAgICBmcHJpbnRmKHN0ZGVyciwgIkZJWE1FOiBDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQ6OmFwcGx5U3Ryb2tlUGF0dGVyblxuIik7CiAjZWxpZiBQTEFURk9STShDQUlSTykKLSAgICBD
YW52YXNQYXR0ZXJuKiBwYXR0ZXJuID0gc3RhdGUoKS5tX3N0cm9rZVN0eWxlLT5wYXR0ZXJuKCk7
Ci0gICAgaWYgKCFwYXR0ZXJuKQotICAgICAgICByZXR1cm47Ci0KICAgICBjYWlyb190KiBjciA9
IGMtPnBsYXRmb3JtQ29udGV4dCgpOwogICAgIGNhaXJvX21hdHJpeF90IG07CiAgICAgY2Fpcm9f
Z2V0X21hdHJpeChjciwgJm0pOwpAQCAtMTE0OCw2ICsxMTQxLDcgQEAgdm9pZCBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ6OmFwcGx5U3Ryb2tlUGF0dGVybigpCiAgICAgY2Fpcm9fcGF0dGVybl9k
ZXN0cm95KHBsYXRmb3JtUGF0dGVybik7CiAjZW5kaWYKICAgICBzdGF0ZSgpLm1fYXBwbGllZFN0
cm9rZVBhdHRlcm4gPSB0cnVlOworICAgIHN0YXRlKCkubV9zdHJva2VTdHlsZVBhdHRlcm5UcmFu
c2Zvcm0gPSBtOwogfQogCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6YXBwbHlGaWxs
UGF0dGVybigpCkBAIC0xMTU1LDEzICsxMTQ5LDEzIEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEOjphcHBseUZpbGxQYXR0ZXJuKCkKICAgICBHcmFwaGljc0NvbnRleHQqIGMgPSBkcmF3
aW5nQ29udGV4dCgpOwogICAgIGlmICghYykKICAgICAgICAgcmV0dXJuOwotCi0jaWYgUExBVEZP
Uk0oQ0cpCisgICAgCiAgICAgLy8gQ2hlY2sgZm9yIGNhc2Ugd2hlcmUgdGhlIHBhdHRlcm4gaXMg
YWxyZWFkeSBzZXQuCi0gICAgQ0dBZmZpbmVUcmFuc2Zvcm0gbSA9IENHQ29udGV4dEdldENUTShj
LT5wbGF0Zm9ybUNvbnRleHQoKSk7Ci0gICAgaWYgKHN0YXRlKCkubV9hcHBsaWVkRmlsbFBhdHRl
cm4KLSAgICAgICAgICAgICYmIENHQWZmaW5lVHJhbnNmb3JtRXF1YWxUb1RyYW5zZm9ybShtLCBz
dGF0ZSgpLm1fZmlsbFN0eWxlUGF0dGVyblRyYW5zZm9ybSkpCisgICAgQWZmaW5lVHJhbnNmb3Jt
IG0gPSBjLT5nZXRDVE0oKTsKKyAgICBpZiAoc3RhdGUoKS5tX2FwcGxpZWRGaWxsUGF0dGVybiAm
JiAobSA9PSBzdGF0ZSgpLm1fZmlsbFN0eWxlUGF0dGVyblRyYW5zZm9ybSkpCiAgICAgICAgIHJl
dHVybjsKKyAgICAKKyNpZiBQTEFURk9STShDRykKIAogICAgIENhbnZhc1BhdHRlcm4qIHBhdHRl
cm4gPSBzdGF0ZSgpLm1fZmlsbFN0eWxlLT5wYXR0ZXJuKCk7CiAgICAgaWYgKCFwYXR0ZXJuKQpA
QCAtMTE3OSw3ICsxMTczLDYgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmFwcGx5
RmlsbFBhdHRlcm4oKQogICAgIENHQ29udGV4dFNldEZpbGxQYXR0ZXJuKGMtPnBsYXRmb3JtQ29u
dGV4dCgpLCBwbGF0Zm9ybVBhdHRlcm4sICZwYXR0ZXJuQWxwaGEpOwogICAgIENHUGF0dGVyblJl
bGVhc2UocGxhdGZvcm1QYXR0ZXJuKTsKIAotICAgIHN0YXRlKCkubV9maWxsU3R5bGVQYXR0ZXJu
VHJhbnNmb3JtID0gbTsKICNlbGlmIFBMQVRGT1JNKFFUKQogICAgIGZwcmludGYoc3RkZXJyLCAi
RklYTUU6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6YXBwbHlGaWxsUGF0dGVyblxuIik7CiAj
ZWxpZiBQTEFURk9STShDQUlSTykKQEAgLTExOTksNiArMTE5Miw3IEBAIHZvaWQgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjphcHBseUZpbGxQYXR0ZXJuKCkKICAgICBjYWlyb19wYXR0ZXJuX2Rl
c3Ryb3kocGxhdGZvcm1QYXR0ZXJuKTsKICNlbmRpZgogICAgIHN0YXRlKCkubV9hcHBsaWVkRmls
bFBhdHRlcm4gPSB0cnVlOworICAgIHN0YXRlKCkubV9maWxsU3R5bGVQYXR0ZXJuVHJhbnNmb3Jt
ID0gbTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9o
dG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oIGIvV2ViQ29yZS9odG1sL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRC5oCmluZGV4IDMwZjdhNTMuLjZlZTMyNGQgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvaHRtbC9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAorKysgYi9XZWJDb3JlL2h0bWwvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmgKQEAgLTI2LDE2ICsyNiwxMyBAQAogI2lmbmRlZiBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkRfaAogI2RlZmluZSBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRf
aAogCisjaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCiAjaW5jbHVkZSAiRmxvYXRTaXplLmgi
CiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlcy5oIgogI2luY2x1ZGUgIlBhdGguaCIKICNpbmNsdWRl
ICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAotI2lmIFBMQVRG
T1JNKENHKQotI2luY2x1ZGUgPEFwcGxpY2F0aW9uU2VydmljZXMvQXBwbGljYXRpb25TZXJ2aWNl
cy5oPgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIENhbnZhc0dy
YWRpZW50OwpAQCAtMTg0LDEwICsxODEsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
ICAgICBDb21wb3NpdGVPcGVyYXRvciBtX2dsb2JhbENvbXBvc2l0ZTsKICAgICAgICAgICAgIGJv
b2wgbV9hcHBsaWVkU3Ryb2tlUGF0dGVybjsKICAgICAgICAgICAgIGJvb2wgbV9hcHBsaWVkRmls
bFBhdHRlcm47Ci0jaWYgUExBVEZPUk0oQ0cpCi0gICAgICAgICAgICBDR0FmZmluZVRyYW5zZm9y
bSBtX3N0cm9rZVN0eWxlUGF0dGVyblRyYW5zZm9ybTsKLSAgICAgICAgICAgIENHQWZmaW5lVHJh
bnNmb3JtIG1fZmlsbFN0eWxlUGF0dGVyblRyYW5zZm9ybTsKLSNlbmRpZgorICAgICAgICAgICAg
QWZmaW5lVHJhbnNmb3JtIG1fc3Ryb2tlU3R5bGVQYXR0ZXJuVHJhbnNmb3JtOworICAgICAgICAg
ICAgQWZmaW5lVHJhbnNmb3JtIG1fZmlsbFN0eWxlUGF0dGVyblRyYW5zZm9ybTsKICAgICAgICAg
fTsKIAogICAgICAgICBTdGF0ZSYgc3RhdGUoKSB7IHJldHVybiBtX3N0YXRlU3RhY2subGFzdCgp
OyB9Cg==
</data>
<flag name="review"
          id="8331"
          type_id="1"
          status="-"
          setter="oliver"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>19057</attachid>
            <date>2008-02-10 22:57:29 -0800</date>
            <delta_ts>2008-02-12 00:02:30 -0800</delta_ts>
            <desc>Setting up a pattern for stroke style is no longer ifdef hell</desc>
            <filename>refatoring-gc-3.patch</filename>
            <type>text/plain</type>
            <size>20054</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZjJhMmI5Yy4uZmQxMTM3YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAwOC0wMi0xMCAgT2xpdmVyIEh1bnQg
IDxvbGl2ZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE5vIG1vcmUgaWZkZWZzIHdoZW4gYXBwbHlpbmcgYSBwYXR0ZXJuIGFzIHRo
ZSBzdHJva2Ugc3R5bGUKKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIFdl
YkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBodG1sL0NhbnZhc1BhdHRlcm4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fu
dmFzUGF0dGVybjo6Y3JlYXRlUGF0dGVybik6CisgICAgICAgICogaHRtbC9DYW52YXNQYXR0ZXJu
Lmg6CisgICAgICAgICogaHRtbC9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjphcHBseVN0cm9rZVBhdHRlcm4p
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm5EYXRhLmg6IENvcGllZCBmcm9tIFdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VEYXRhQ2Fpcm8uY3BwLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0U3Ryb2tlUGF0dGVybik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0dGVybkRhdGFDYWlyby5jcHA6IENvcGllZCBmcm9t
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udERhdGEuY3BwLgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6c2V0U3Ryb2tlUGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvUGF0dGVybkRhdGFDRy5jcHA6IENvcGllZCBmcm9tIFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udERhdGEuY3BwLgorCiAyMDA4LTAyLTA5ICBPbGl2ZXIgSHVudCAgPG9s
aXZlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5h
bQppbmRleCBjMThmNTc2Li44ODYzNmUzIDEwMDY0NAotLS0gYS9XZWJDb3JlL0dOVW1ha2VmaWxl
LmFtCisrKyBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTk3Nyw2ICs5NzcsNyBAQCB3ZWJr
aXRndGtfc291cmNlcyArPSBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFn
ZURhdGFDYWlyby5jcHAgXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VT
b3VyY2VDYWlyby5jcHAgXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0aENh
aXJvLmNwcCBcCisJV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXR0ZXJuRGF0YUNh
aXJvLmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VE
ZWNvZGVyLmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1h
Z2VSZWFkZXIuY3BwICBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5H
SW1hZ2VEZWNvZGVyLmNwcCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvV2Vi
Q29yZS9XZWJDb3JlLnBybwppbmRleCAzYzQxNjY4Li4zNzJiZTc0IDEwMDY0NAotLS0gYS9XZWJD
b3JlL1dlYkNvcmUucHJvCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTEwNjQsNiArMTA2
NCw3IEBAIGd0ay1wb3J0IHsKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VD
YWlyby5jcHAgXAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZVNvdXJjZUNh
aXJvLmNwcCBcCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdGhDYWlyby5jcHAg
XAorICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXR0ZXJuRGF0YUNhaXJvLmNwcCBc
CiAgICAgICAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3Bw
IFwKICAgICAgICAgcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmNw
cCAgXAogICAgICAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVy
LmNwcCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDI0
ZjU1MDcuLjQwMmQ4MGYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0xNzE1LDYgKzE3MTUsOCBAQAogCQlBNzE4Nzg5MDBCMkQwNEFDMDBBMTZFQ0UgLyog
RHJhZ0NvbnRyb2xsZXJNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBNzE4Nzg4RjBCMkQwNEFDMDBBMTZFQ0UgLyogRHJhZ0NvbnRyb2xsZXJNYWMu
bW0gKi87IH07CiAJCUE3MzUyQzE5MEIxQkI4OUQwMEE5ODZEMCAvKiBSZW5kZXJTVkdCbG9jay5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzM1MkMx
NzBCMUJCODlEMDBBOTg2RDAgLyogUmVuZGVyU1ZHQmxvY2suY3BwICovOyB9OwogCQlBNzM1MkMx
QTBCMUJCODlEMDBBOTg2RDAgLyogUmVuZGVyU1ZHQmxvY2suaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MzUyQzE4MEIxQkI4OUQwMEE5ODZEMCAvKiBS
ZW5kZXJTVkdCbG9jay5oICovOyB9OworCQlBNzNCREUzQjBENUVFODVDMDAwNTg0RDcgLyogUGF0
dGVybkRhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE3M0JERTNBMEQ1RUU4NUMwMDA1ODRENyAvKiBQYXR0ZXJuRGF0YS5oICovOyB9OworCQlBNzNC
REVERDBENjAyMzE3MDAwNTg0RDcgLyogUGF0dGVybkRhdGFDRy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzNCREVEQzBENjAyMzE3MDAwNTg0RDcg
LyogUGF0dGVybkRhdGFDRy5jcHAgKi87IH07CiAJCUE3ODQ5NDFCMEI1RkU1MDcwMDFFMjM3QSAv
KiBDbGlwYm9hcmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTc4NDk0MUEwQjVGRTUwNzAwMUUyMzdBIC8qIENsaXBib2FyZC5jcHAgKi87IH07CiAJ
CUE3OTU0NjNFMEI1QzRDODAwMDdCNDM4RiAvKiBEcmFnRGF0YU1hYy5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3OTU0NjNEMEI1QzRDODAwMDdCNDM4
RiAvKiBEcmFnRGF0YU1hYy5tbSAqLzsgfTsKIAkJQTc5NTQ2NDMwQjVDNENCNDAwN0I0MzhGIC8q
IERyYWdEYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE3OTU0NjQyMEI1QzRDQjQwMDdCNDM4RiAvKiBEcmFnRGF0YS5jcHAgKi87IH07CkBAIC01
OTA3LDYgKzU5MDksOCBAQAogCQlBNzE4Nzg4RjBCMkQwNEFDMDBBMTZFQ0UgLyogRHJhZ0NvbnRy
b2xsZXJNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBEcmFn
Q29udHJvbGxlck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTczNTJDMTcw
QjFCQjg5RDAwQTk4NkQwIC8qIFJlbmRlclNWR0Jsb2NrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJTVkdCbG9jay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUE3MzUyQzE4MEIxQkI4OUQwMEE5ODZEMCAvKiBSZW5kZXJTVkdCbG9jay5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyU1ZHQmxvY2suaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTczQkRFM0EwRDVFRTg1QzAwMDU4NEQ3IC8qIFBh
dHRlcm5EYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhdHRlcm5EYXRh
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3M0JERURDMEQ2MDIzMTcwMDA1ODRE
NyAvKiBQYXR0ZXJuRGF0YUNHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFBhdHRlcm5EYXRhQ0cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzg0
OTQxQTBCNUZFNTA3MDAxRTIzN0EgLyogQ2xpcGJvYXJkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBDbGlwYm9hcmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBNzk1NDYzRDBCNUM0QzgwMDA3QjQzOEYgLyogRHJhZ0RhdGFNYWMubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRHJhZ0RhdGFNYWMubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3OTU0NjQyMEI1QzRDQjQwMDdCNDM4RiAvKiBEcmFn
RGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEcmFnRGF0YS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTIxOSw2ICsxMTIyMyw3IEBACiAJ
CQkJQjI3NTM1MzYwQjA1MzgxNDAwMkNFNjRGIC8qIFBERkRvY3VtZW50SW1hZ2UuY3BwICovLAog
CQkJCUIyNzUzNTM3MEIwNTM4MTQwMDJDRTY0RiAvKiBQREZEb2N1bWVudEltYWdlLmggKi8sCiAJ
CQkJQTcxNEVBMzEwRDVFODY2MjAwMUMxN0UxIC8qIEltYWdlRGF0YUNHLmNwcCAqLywKKwkJCQlB
NzNCREVEQzBENjAyMzE3MDAwNTg0RDcgLyogUGF0dGVybkRhdGFDRy5jcHAgKi8sCiAJCQkpOwog
CQkJcGF0aCA9IGNnOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTExMzEzLDYgKzEx
MzE4LDcgQEAKIAkJCQlCMjc1MzU1MzBCMDUzODE0MDAyQ0U2NEYgLyogUGF0aC5oICovLAogCQkJ
CUE4OERENDg4MEI0NjI5QjAwMEMwMjk5MCAvKiBQYXRoVHJhdmVyc2FsU3RhdGUuY3BwICovLAog
CQkJCUE4OERENDg2MEI0NjI5QTMwMEMwMjk5MCAvKiBQYXRoVHJhdmVyc2FsU3RhdGUuaCAqLywK
KwkJCQlBNzNCREUzQTBENUVFODVDMDAwNTg0RDcgLyogUGF0dGVybkRhdGEuaCAqLywKIAkJCQlC
Mjc1MzU1NDBCMDUzODE0MDAyQ0U2NEYgLyogUGVuLmNwcCAqLywKIAkJCQlCMjc1MzU1NTBCMDUz
ODE0MDAyQ0U2NEYgLyogUGVuLmggKi8sCiAJCQkJMzcxRjRGRkIwRDI1RTdGMzAwRUNFMEQ1IC8q
IFNlZ21lbnRlZEZvbnREYXRhLmNwcCAqLywKQEAgLTE0MjQxLDYgKzE0MjQ3LDcgQEAKIAkJCQk1
RENGODM2RDBENTkxNTk4MDA5NTNCQzYgLyogUGx1Z2luSW5mb1N0b3JlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlDMDI5NERGNDBENUE2RkQ4MDBDQzdENkIgLyogVXNlclN0eWxlU2hlZXRMb2FkZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCUE3MTRFQTMwMEQ1RTg2NEIwMDFDMTdFMSAvKiBJbWFnZURh
dGEuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3M0JERTNCMEQ1RUU4NUMwMDA1ODRENyAvKiBQYXR0
ZXJuRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQ
b3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0xNTgzNiw2ICsxNTg0Myw3IEBACiAJCQkJNTFB
OTI2N0UwRDUzRjA1NzAwNjNFQ0MyIC8qIE9yaWdpblVzYWdlUmVjb3JkLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUMwMjk0REYzMEQ1QTZGRDgwMENDN0Q2QiAvKiBVc2VyU3R5bGVTaGVldExvYWRl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzE0RUEzMjBENUU4NjYyMDAxQzE3RTEgLyogSW1h
Z2VEYXRhQ0cuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTczQkRFREQwRDYwMjMxNzAwMDU4NEQ3
IC8qIFBhdHRlcm5EYXRhQ0cuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2h0bWwvQ2FudmFzUGF0dGVybi5jcHAgYi9XZWJDb3JlL2h0bWwvQ2FudmFzUGF0dGVybi5jcHAK
aW5kZXggMjczM2UxNS4uMmM5MDk1ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0NhbnZhc1Bh
dHRlcm4uY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9DYW52YXNQYXR0ZXJuLmNwcApAQCAtMjYsNiAr
MjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNhbnZhc1BhdHRlcm4uaCIK
IAorI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgogI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgi
CiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgpAQCAt
MTMwLDcgKzEzMSw3IEBAIHN0YXRpYyB2b2lkIHBhdHRlcm5SZWxlYXNlQ2FsbGJhY2sodm9pZCog
aW5mbykKICAgICBzdGF0aWNfY2FzdDxDYW52YXNQYXR0ZXJuKj4oaW5mbyktPmRlcmVmKCk7CiB9
CiAKLUNHUGF0dGVyblJlZiBDYW52YXNQYXR0ZXJuOjpjcmVhdGVQYXR0ZXJuKGNvbnN0IENHQWZm
aW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0pCitQYXR0ZXJuRGF0YVJlZiBDYW52YXNQYXR0ZXJuOjpj
cmVhdGVQYXR0ZXJuKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtKQogewogICAgIENH
UmVjdCByZWN0OwogICAgIHJlY3Qub3JpZ2luLnggPSAwOwpAQCAtMTQ5LDcgKzE1MCw3IEBAIENH
UGF0dGVyblJlZiBDYW52YXNQYXR0ZXJuOjpjcmVhdGVQYXR0ZXJuKGNvbnN0IENHQWZmaW5lVHJh
bnNmb3JtJiB0cmFuc2Zvcm0pCiAgICAgfQogCiAgICAgQ0dBZmZpbmVUcmFuc2Zvcm0gcGF0dGVy
blRyYW5zZm9ybSA9Ci0gICAgICAgIENHQWZmaW5lVHJhbnNmb3JtVHJhbnNsYXRlKENHQWZmaW5l
VHJhbnNmb3JtU2NhbGUodHJhbnNmb3JtLCAxLCAtMSksIDAsIC1yZWN0LnNpemUuaGVpZ2h0KTsK
KyAgICAgICAgQ0dBZmZpbmVUcmFuc2Zvcm1UcmFuc2xhdGUoQ0dBZmZpbmVUcmFuc2Zvcm1TY2Fs
ZSgoQ0dBZmZpbmVUcmFuc2Zvcm0pdHJhbnNmb3JtLCAxLCAtMSksIDAsIC1yZWN0LnNpemUuaGVp
Z2h0KTsKIAogICAgIGZsb2F0IHhTdGVwID0gbV9yZXBlYXRYID8gcmVjdC5zaXplLndpZHRoIDog
RkxUX01BWDsKICAgICAvLyBJZiBGTFRfTUFYIHNob3VsZCBhbHNvIGJlIHVzZWQgZm9yIHlTdGVw
LCBub3RoaW5nIGlzIHJlbmRlcmVkLiBVc2luZyBmcmFjdGlvbnMgb2YgRkxUX01BWCBhbHNvCkBA
IC0xNjcsNyArMTY4LDcgQEAgQ0dQYXR0ZXJuUmVmIENhbnZhc1BhdHRlcm46OmNyZWF0ZVBhdHRl
cm4oY29uc3QgQ0dBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSkKIAogI2VsaWYgUExBVEZPUk0o
Q0FJUk8pCiAKLWNhaXJvX3BhdHRlcm5fdCogQ2FudmFzUGF0dGVybjo6Y3JlYXRlUGF0dGVybihj
b25zdCBjYWlyb19tYXRyaXhfdCYgbSkKK1BhdHRlcm5EYXRhUmVmIENhbnZhc1BhdHRlcm46OmNy
ZWF0ZVBhdHRlcm4oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBtKQogewogICAgIGNhaXJvX3N1cmZh
Y2VfdCogc3VyZmFjZSA9IDA7CiAgICAgaWYgKG1fcGxhdGZvcm1JbWFnZSkgewpAQCAtMTg1LDcg
KzE4Niw4IEBAIGNhaXJvX3BhdHRlcm5fdCogQ2FudmFzUGF0dGVybjo6Y3JlYXRlUGF0dGVybihj
b25zdCBjYWlyb19tYXRyaXhfdCYgbSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBjYWlyb19w
YXR0ZXJuX3QqIHBhdHRlcm4gPSBjYWlyb19wYXR0ZXJuX2NyZWF0ZV9mb3Jfc3VyZmFjZShzdXJm
YWNlKTsKLSAgICBjYWlyb19wYXR0ZXJuX3NldF9tYXRyaXgocGF0dGVybiwgJm0pOworICAgIGNh
aXJvX21hdHJpeF90IGNtID0gKGNhaXJvX21hdHJpeF90KW07CisgICAgY2Fpcm9fcGF0dGVybl9z
ZXRfbWF0cml4KHBhdHRlcm4sICZjbSk7CiAgICAgaWYgKG1fcmVwZWF0WCB8fCBtX3JlcGVhdFkp
CiAgICAgICAgIGNhaXJvX3BhdHRlcm5fc2V0X2V4dGVuZChwYXR0ZXJuLCBDQUlST19FWFRFTkRf
UkVQRUFUKTsKICAgICByZXR1cm4gcGF0dGVybjsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9D
YW52YXNQYXR0ZXJuLmggYi9XZWJDb3JlL2h0bWwvQ2FudmFzUGF0dGVybi5oCmluZGV4IDM2YjRi
ZTUuLmNkYmUyNDkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9DYW52YXNQYXR0ZXJuLmgKKysr
IGIvV2ViQ29yZS9odG1sL0NhbnZhc1BhdHRlcm4uaApAQCAtMjgsMTcgKzI4LDEyIEBACiAKICNp
bmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudC5oIgogI2luY2x1ZGUgIkltYWdlRGF0YS5oIgor
I2luY2x1ZGUgIlBhdHRlcm5EYXRhLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAot
I2lmIFBMQVRGT1JNKENHKQotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLSNpbmNsdWRlIDxB
cHBsaWNhdGlvblNlcnZpY2VzL0FwcGxpY2F0aW9uU2VydmljZXMuaD4KLSNlbGlmIFBMQVRGT1JN
KENBSVJPKQotI2luY2x1ZGUgPGNhaXJvLmg+Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCisgICAgY2xhc3MgQWZmaW5lVHJhbnNmb3JtOwogICAgIGNsYXNzIENhY2hlZEltYWdlOwog
ICAgIGNsYXNzIFN0cmluZzsKIApAQCAtNTUsMTEgKzUwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICBJbWFnZURhdGFSZWYgcGxhdGZvcm1JbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1f
cGxhdGZvcm1JbWFnZTsgfQogICAgICAgICBDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UoKSBjb25z
dCB7IHJldHVybiBtX2NhY2hlZEltYWdlOyB9CiAKLSNpZiBQTEFURk9STShDRykKLSAgICAgICAg
Q0dQYXR0ZXJuUmVmIGNyZWF0ZVBhdHRlcm4oY29uc3QgQ0dBZmZpbmVUcmFuc2Zvcm0mKTsKLSNl
bGlmIFBMQVRGT1JNKENBSVJPKQotICAgICAgICBjYWlyb19wYXR0ZXJuX3QqIGNyZWF0ZVBhdHRl
cm4oY29uc3QgY2Fpcm9fbWF0cml4X3QmKTsKLSNlbmRpZgorICAgICAgICBQYXR0ZXJuRGF0YVJl
ZiBjcmVhdGVQYXR0ZXJuKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpOwogCiAgICAgcHJpdmF0ZToK
ICAgICAgICAgSW1hZ2VEYXRhUmVmIGNvbnN0IG1fcGxhdGZvcm1JbWFnZTsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvaHRtbC9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwIGIvV2ViQ29yZS9odG1s
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKaW5kZXggZjYwYTk2ZS4uMTA4MDkyZiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9odG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKKysrIGIv
V2ViQ29yZS9odG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKQEAgLTExMTMsMzMgKzEx
MTMsMTUgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmFwcGx5U3Ryb2tlUGF0dGVy
bigpCiAgICAgQ2FudmFzUGF0dGVybiogcGF0dGVybiA9IHN0YXRlKCkubV9zdHJva2VTdHlsZS0+
cGF0dGVybigpOwogICAgIGlmICghcGF0dGVybikKICAgICAgICAgcmV0dXJuOwotI2lmIFBMQVRG
T1JNKENHKQotICAgIENHUGF0dGVyblJlZiBwbGF0Zm9ybVBhdHRlcm4gPSBwYXR0ZXJuLT5jcmVh
dGVQYXR0ZXJuKG0pOwotICAgIGlmICghcGxhdGZvcm1QYXR0ZXJuKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBDR0NvbG9yU3BhY2VSZWYgcGF0dGVyblNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRl
UGF0dGVybigwKTsKLSAgICBDR0NvbnRleHRTZXRTdHJva2VDb2xvclNwYWNlKGMtPnBsYXRmb3Jt
Q29udGV4dCgpLCBwYXR0ZXJuU3BhY2UpOwotICAgIENHQ29sb3JTcGFjZVJlbGVhc2UocGF0dGVy
blNwYWNlKTsKLQotICAgIGNvbnN0IENHRmxvYXQgcGF0dGVybkFscGhhID0gMTsKLSAgICBDR0Nv
bnRleHRTZXRTdHJva2VQYXR0ZXJuKGMtPnBsYXRmb3JtQ29udGV4dCgpLCBwbGF0Zm9ybVBhdHRl
cm4sICZwYXR0ZXJuQWxwaGEpOwotICAgIENHUGF0dGVyblJlbGVhc2UocGxhdGZvcm1QYXR0ZXJu
KTsKLQotI2VsaWYgUExBVEZPUk0oUVQpCi0gICAgZnByaW50ZihzdGRlcnIsICJGSVhNRTogQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjphcHBseVN0cm9rZVBhdHRlcm5cbiIpOwotI2VsaWYgUExB
VEZPUk0oQ0FJUk8pCi0gICAgY2Fpcm9fdCogY3IgPSBjLT5wbGF0Zm9ybUNvbnRleHQoKTsKLSAg
ICBjYWlyb19tYXRyaXhfdCBtOwotICAgIGNhaXJvX2dldF9tYXRyaXgoY3IsICZtKTsKIAotICAg
IGNhaXJvX3BhdHRlcm5fdCogcGxhdGZvcm1QYXR0ZXJuID0gcGF0dGVybi0+Y3JlYXRlUGF0dGVy
bihtKTsKKyAgICBQYXR0ZXJuRGF0YVJlZiBwbGF0Zm9ybVBhdHRlcm4gPSBwYXR0ZXJuLT5jcmVh
dGVQYXR0ZXJuKG0pOwogICAgIGlmICghcGxhdGZvcm1QYXR0ZXJuKQogICAgICAgICByZXR1cm47
CisgICAgCisgICAgYy0+c2V0U3Ryb2tlUGF0dGVybihwbGF0Zm9ybVBhdHRlcm4pOwogCi0gICAg
Y2Fpcm9fc2V0X3NvdXJjZShjciwgcGxhdGZvcm1QYXR0ZXJuKTsKLSAgICBjYWlyb19wYXR0ZXJu
X2Rlc3Ryb3kocGxhdGZvcm1QYXR0ZXJuKTsKLSNlbmRpZgorICAgIFBhdHRlcm5EYXRhUmVsZWFz
ZShwbGF0Zm9ybVBhdHRlcm4pOworICAgIAogICAgIHN0YXRlKCkubV9hcHBsaWVkU3Ryb2tlUGF0
dGVybiA9IHRydWU7CiAgICAgc3RhdGUoKS5tX3N0cm9rZVN0eWxlUGF0dGVyblRyYW5zZm9ybSA9
IG07CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRl
eCBlNGE5OGU0Li4yYTFlZWM3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0LmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1
ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJQYXRoLmgiCisjaW5jbHVkZSAiUGF0dGVybkRhdGEu
aCIKICNpbmNsdWRlICJUZXh0RGlyZWN0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxl
Lmg+CiAjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CkBAIC0xMTYsOSArMTE3LDExIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBzZXRTdHJva2VTdHlsZShjb25zdCBTdHJva2VT
dHlsZSYgc3R5bGUpOwogICAgICAgICBDb2xvciBzdHJva2VDb2xvcigpIGNvbnN0OwogICAgICAg
ICB2b2lkIHNldFN0cm9rZUNvbG9yKGNvbnN0IENvbG9yJik7CisgICAgICAgIHZvaWQgc2V0U3Ry
b2tlUGF0dGVybihjb25zdCBQYXR0ZXJuRGF0YVJlZiYpOwogCiAgICAgICAgIENvbG9yIGZpbGxD
b2xvcigpIGNvbnN0OwogICAgICAgICB2b2lkIHNldEZpbGxDb2xvcihjb25zdCBDb2xvciYpOwor
ICAgICAgICB2b2lkIHNldEZpbGxQYXR0ZXJuKGNvbnN0IFBhdHRlcm5EYXRhUmVmJik7CiAgICAg
ICAgIAogICAgICAgICB2b2lkIHNhdmUoKTsKICAgICAgICAgdm9pZCByZXN0b3JlKCk7CkBAIC0x
NDksNiArMTUyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIGRyYXdUaWxl
ZEltYWdlKEltYWdlKiwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEludFJlY3QmIHNy
Y1JlY3QsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEltYWdlOjpUaWxlUnVsZSBoUnVs
ZSA9IEltYWdlOjpTdHJldGNoVGlsZSwgSW1hZ2U6OlRpbGVSdWxlIHZSdWxlID0gSW1hZ2U6OlN0
cmV0Y2hUaWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbXBvc2l0ZU9wZXJhdG9y
ID0gQ29tcG9zaXRlU291cmNlT3Zlcik7CisgICAgICAgIAogI2lmIFBMQVRGT1JNKENHKQogICAg
ICAgICB2b2lkIHNldFVzZUxvd1F1YWxpdHlJbWFnZUludGVycG9sYXRpb24oYm9vbCA9IHRydWUp
OwogICAgICAgICBib29sIHVzZUxvd1F1YWxpdHlJbWFnZUludGVycG9sYXRpb24oKSBjb25zdDsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybkRhdGEuaCBiL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybkRhdGEuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5lMWQzZTRkCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9QYXR0ZXJuRGF0YS5oCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
aWZuZGVmIFBhdHRlcm5EYXRhX2gKKyNkZWZpbmUgUGF0dGVybkRhdGFfaAorCisjaWYgUExBVEZP
Uk0oQ0cpCisjaW5jbHVkZSA8QXBwbGljYXRpb25TZXJ2aWNlcy9BcHBsaWNhdGlvblNlcnZpY2Vz
Lmg+CisjZWxpZiBQTEFURk9STShDQUlSTykKKyNpbmNsdWRlIDxjYWlyby5oPgorI2VuZGlmCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKyNpZiBQTEFURk9STShDRykKKyAgICB0eXBlZGVmIENHUGF0
dGVyblJlZiBQYXR0ZXJuRGF0YVJlZjsKKyNlbGlmIFBMQVRGT1JNKENBSVJPKQorICAgIHR5cGVk
ZWYgY2Fpcm9fcGF0dGVybl90KiBQYXR0ZXJuRGF0YVJlZjsKKyNlbHNlCisgICAgdHlwZWRlZiB2
b2lkKiBQYXR0ZXJuRGF0YVJlZjsKKyNlbmRpZgorICAgIAorICAgIHZvaWQgUGF0dGVybkRhdGFS
ZWxlYXNlKGNvbnN0IFBhdHRlcm5EYXRhUmVmJik7Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAg
Yi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNw
cAppbmRleCAwOGU4NjE2Li4zZmI2YzVlIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAorKysgYi9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDggQXBwbGUgQ29tcHV0
ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQWxw
IFRva2VyIDxhbHBAYXRva2VyLmNvbT4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTg4OSw2ICs4ODks
MTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFVzZUFudGlhbGlhc2luZyhib29sIGVuYWJs
ZSkKICAgICBjYWlyb19zZXRfYW50aWFsaWFzKG1fZGF0YS0+Y3IsIGVuYWJsZSA/IENBSVJPX0FO
VElBTElBU19ERUZBVUxUIDogQ0FJUk9fQU5USUFMSUFTX05PTkUpOwogfQogCit2b2lkIEdyYXBo
aWNzQ29udGV4dDo6c2V0U3Ryb2tlUGF0dGVybihjb25zdCBQYXR0ZXJuRGF0YVJlZiYgcGF0dGVy
bikKK3sKKyAgICBjYWlyb19zZXRfc291cmNlKHBsYXRmb3JtQ29udGV4dCgpLCBwYXR0ZXJuKTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gUExBVEZPUk0oQ0FJUk8p
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdHRlcm5EYXRh
Q2Fpcm8uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXR0ZXJuRGF0YUNh
aXJvLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yN2Y4NTNkCi0tLSAv
ZGV2L251bGwKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXR0ZXJuRGF0
YUNhaXJvLmNwcApAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIlBhdHRlcm5EYXRhLmgiCisKKyNpbmNsdWRlIDxjYWlyby5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisgICAgdm9pZCBQYXR0ZXJuRGF0YVJlbGVhc2UoY29uc3QgUGF0dGVy
bkRhdGFSZWYmIHBhdHRlcm4pCisgICAgeworICAgICAgICBjYWlyb19wYXR0ZXJuX2Rlc3Ryb3ko
cGF0dGVybik7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0dyYXBoaWNzQ29udGV4dENHLmNwcAppbmRleCA0ZjU1ZjI2Li5jMzdjMTRhIDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAorKysg
Yi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcApAQCAt
OTI1LDYgKzkyNSwxNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0Q29tcG9zaXRlT3BlcmF0
aW9uKENvbXBvc2l0ZU9wZXJhdG9yIG1vZGUpCiAgICAgQ0dDb250ZXh0U2V0QmxlbmRNb2RlKHBs
YXRmb3JtQ29udGV4dCgpLCB0YXJnZXQpOwogfQogI2VuZGlmCisKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0OjpzZXRTdHJva2VQYXR0ZXJuKGNvbnN0IFBhdHRlcm5EYXRhUmVmJiBwYXR0ZXJuKQorewor
ICAgIENHQ29sb3JTcGFjZVJlZiBwYXR0ZXJuU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVQYXR0
ZXJuKDApOworICAgIENHQ29udGV4dFNldFN0cm9rZUNvbG9yU3BhY2UocGxhdGZvcm1Db250ZXh0
KCksIHBhdHRlcm5TcGFjZSk7CisgICAgQ0dDb2xvclNwYWNlUmVsZWFzZShwYXR0ZXJuU3BhY2Up
OwogICAgIAorICAgIGNvbnN0IENHRmxvYXQgcGF0dGVybkFscGhhID0gMTsKKyAgICBDR0NvbnRl
eHRTZXRTdHJva2VQYXR0ZXJuKHBsYXRmb3JtQ29udGV4dCgpLCBwYXR0ZXJuLCAmcGF0dGVybkFs
cGhhKTsKK30KKwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L1BhdHRlcm5EYXRhQ0cuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJu
RGF0YUNHLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZGU3ZWRhCi0t
LSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuRGF0
YUNHLmNwcApAQCAtMCwwICsxLDM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlBhdHRlcm5EYXRhLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICB2b2lk
IFBhdHRlcm5EYXRhUmVsZWFzZShjb25zdCBQYXR0ZXJuRGF0YVJlZiYgcGF0dGVybikKKyAgICB7
CisgICAgICAgIENHUGF0dGVyblJlbGVhc2UocGF0dGVybik7CisgICAgfQorfQo=
</data>
<flag name="review"
          id="8330"
          type_id="1"
          status="-"
          setter="oliver"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>19060</attachid>
            <date>2008-02-10 23:35:56 -0800</date>
            <delta_ts>2008-02-12 00:02:30 -0800</delta_ts>
            <desc>Final bit of logic to tidy up pattern painting</desc>
            <filename>refatoring-gc-4.patch</filename>
            <type>text/plain</type>
            <size>3992</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZmQxMTM3YS4uYTY0NzlkZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTIsNiArMiwxOSBAQAogCiAgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgogCisgICAgICAgIENsZWFuIHVwIHNldHRpbmcgYSBwYXR0ZXJuIGFzIHRo
ZSBmaWxsIHN0eWxlIGZvciB0aGUgY2FudmFzCisKKyAgICAgICAgKiBodG1sL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQ6OmFwcGx5RmlsbFBhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6c2V0RmlsbFBhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0dyYXBoaWNzQ29udGV4dENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDo6c2V0RmlsbFBhdHRlcm4pOgorCisyMDA4LTAyLTEwICBPbGl2ZXIgSHVudCAgPG9saXZlckBh
cHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKICAgICAg
ICAgTm8gbW9yZSBpZmRlZnMgd2hlbiBhcHBseWluZyBhIHBhdHRlcm4gYXMgdGhlIHN0cm9rZSBz
dHlsZQogCiAgICAgICAgICogR05VbWFrZWZpbGUuYW06CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0
bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBiL1dlYkNvcmUvaHRtbC9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQuY3BwCmluZGV4IDEwODA5MmYuLjFmNmRlYTQgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvaHRtbC9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCisrKyBiL1dlYkNvcmUvaHRt
bC9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCkBAIC0xMTM2LDQzICsxMTM2LDE5IEBAIHZv
aWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjphcHBseUZpbGxQYXR0ZXJuKCkKICAgICBBZmZp
bmVUcmFuc2Zvcm0gbSA9IGMtPmdldENUTSgpOwogICAgIGlmIChzdGF0ZSgpLm1fYXBwbGllZEZp
bGxQYXR0ZXJuICYmIChtID09IHN0YXRlKCkubV9maWxsU3R5bGVQYXR0ZXJuVHJhbnNmb3JtKSkK
ICAgICAgICAgcmV0dXJuOwotICAgIAotI2lmIFBMQVRGT1JNKENHKQotCi0gICAgQ2FudmFzUGF0
dGVybiogcGF0dGVybiA9IHN0YXRlKCkubV9maWxsU3R5bGUtPnBhdHRlcm4oKTsKLSAgICBpZiAo
IXBhdHRlcm4pCi0gICAgICAgIHJldHVybjsKLQotICAgIENHUGF0dGVyblJlZiBwbGF0Zm9ybVBh
dHRlcm4gPSBwYXR0ZXJuLT5jcmVhdGVQYXR0ZXJuKG0pOwotICAgIGlmICghcGxhdGZvcm1QYXR0
ZXJuKQotICAgICAgICByZXR1cm47Ci0KLSAgICBDR0NvbG9yU3BhY2VSZWYgcGF0dGVyblNwYWNl
ID0gQ0dDb2xvclNwYWNlQ3JlYXRlUGF0dGVybigwKTsKLSAgICBDR0NvbnRleHRTZXRGaWxsQ29s
b3JTcGFjZShjLT5wbGF0Zm9ybUNvbnRleHQoKSwgcGF0dGVyblNwYWNlKTsKLSAgICBDR0NvbG9y
U3BhY2VSZWxlYXNlKHBhdHRlcm5TcGFjZSk7Ci0KLSAgICBjb25zdCBDR0Zsb2F0IHBhdHRlcm5B
bHBoYSA9IDE7Ci0gICAgQ0dDb250ZXh0U2V0RmlsbFBhdHRlcm4oYy0+cGxhdGZvcm1Db250ZXh0
KCksIHBsYXRmb3JtUGF0dGVybiwgJnBhdHRlcm5BbHBoYSk7Ci0gICAgQ0dQYXR0ZXJuUmVsZWFz
ZShwbGF0Zm9ybVBhdHRlcm4pOwogCi0jZWxpZiBQTEFURk9STShRVCkKLSAgICBmcHJpbnRmKHN0
ZGVyciwgIkZJWE1FOiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmFwcGx5RmlsbFBhdHRlcm5c
biIpOwotI2VsaWYgUExBVEZPUk0oQ0FJUk8pCiAgICAgQ2FudmFzUGF0dGVybiogcGF0dGVybiA9
IHN0YXRlKCkubV9maWxsU3R5bGUtPnBhdHRlcm4oKTsKICAgICBpZiAoIXBhdHRlcm4pCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGNhaXJvX3QqIGNyID0gYy0+cGxhdGZvcm1Db250ZXh0KCk7Ci0g
ICAgY2Fpcm9fbWF0cml4X3QgbTsKLSAgICBjYWlyb19nZXRfbWF0cml4KGNyLCAmbSk7Ci0KLSAg
ICBjYWlyb19wYXR0ZXJuX3QqIHBsYXRmb3JtUGF0dGVybiA9IHBhdHRlcm4tPmNyZWF0ZVBhdHRl
cm4obSk7CisgICAgUGF0dGVybkRhdGFSZWYgcGxhdGZvcm1QYXR0ZXJuID0gcGF0dGVybi0+Y3Jl
YXRlUGF0dGVybihtKTsKICAgICBpZiAoIXBsYXRmb3JtUGF0dGVybikKICAgICAgICAgcmV0dXJu
OwotCi0gICAgY2Fpcm9fc2V0X3NvdXJjZShjciwgcGxhdGZvcm1QYXR0ZXJuKTsKLSAgICBjYWly
b19wYXR0ZXJuX2Rlc3Ryb3kocGxhdGZvcm1QYXR0ZXJuKTsKLSNlbmRpZgorICAgIAorICAgIGMt
PnNldEZpbGxQYXR0ZXJuKHBsYXRmb3JtUGF0dGVybik7CisgICAgCisgICAgUGF0dGVybkRhdGFS
ZWxlYXNlKHBsYXRmb3JtUGF0dGVybik7CisgICAgCiAgICAgc3RhdGUoKS5tX2FwcGxpZWRGaWxs
UGF0dGVybiA9IHRydWU7CiAgICAgc3RhdGUoKS5tX2ZpbGxTdHlsZVBhdHRlcm5UcmFuc2Zvcm0g
PSBtOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFw
aGljc0NvbnRleHRDYWlyby5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dy
YXBoaWNzQ29udGV4dENhaXJvLmNwcAppbmRleCAzZmI2YzVlLi45MDI5YjUwIDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNw
cAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENh
aXJvLmNwcApAQCAtODk0LDYgKzg5NCwxMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0U3Ry
b2tlUGF0dGVybihjb25zdCBQYXR0ZXJuRGF0YVJlZiYgcGF0dGVybikKICAgICBjYWlyb19zZXRf
c291cmNlKHBsYXRmb3JtQ29udGV4dCgpLCBwYXR0ZXJuKTsKIH0KIAordm9pZCBHcmFwaGljc0Nv
bnRleHQ6OnNldEZpbGxQYXR0ZXJuKGNvbnN0IFBhdHRlcm5EYXRhUmVmJiBwYXR0ZXJuKQorewor
ICAgIGNhaXJvX3NldF9zb3VyY2UocGxhdGZvcm1Db250ZXh0KCksIHBhdHRlcm4pOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBQTEFURk9STShDQUlSTykKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3Bw
IGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKaW5k
ZXggYzM3YzE0YS4uZGNiMTY4NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTkzNiw1ICs5MzYsMTUgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQ6OnNldFN0cm9rZVBhdHRlcm4oY29uc3QgUGF0dGVybkRhdGFSZWYmIHBhdHRl
cm4pCiAgICAgQ0dDb250ZXh0U2V0U3Ryb2tlUGF0dGVybihwbGF0Zm9ybUNvbnRleHQoKSwgcGF0
dGVybiwgJnBhdHRlcm5BbHBoYSk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRGaWxs
UGF0dGVybihjb25zdCBQYXR0ZXJuRGF0YVJlZiYgcGF0dGVybikKK3sKKyAgICBDR0NvbG9yU3Bh
Y2VSZWYgcGF0dGVyblNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlUGF0dGVybigwKTsKKyAgICBD
R0NvbnRleHRTZXRGaWxsQ29sb3JTcGFjZShwbGF0Zm9ybUNvbnRleHQoKSwgcGF0dGVyblNwYWNl
KTsKKyAgICBDR0NvbG9yU3BhY2VSZWxlYXNlKHBhdHRlcm5TcGFjZSk7CisgICAgCisgICAgY29u
c3QgQ0dGbG9hdCBwYXR0ZXJuQWxwaGEgPSAxOworICAgIENHQ29udGV4dFNldEZpbGxQYXR0ZXJu
KHBsYXRmb3JtQ29udGV4dCgpLCBwYXR0ZXJuLCAmcGF0dGVybkFscGhhKTsKK30KKyAgICAKIH0K
IAo=
</data>
<flag name="review"
          id="8329"
          type_id="1"
          status="-"
          setter="oliver"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>19089</attachid>
            <date>2008-02-12 00:02:30 -0800</date>
            <delta_ts>2008-02-23 16:49:20 -0800</delta_ts>
            <desc>Different tack, lets fix HTMLCanvasElement first</desc>
            <filename>canvas-imagebuffer.patch</filename>
            <type>text/plain</type>
            <size>9345</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NDgzZWUxMi4uZWMxZDY1MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAwOC0wMi0xMSAgT2xpdmVyIEh1bnQg
IDxvbGl2ZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE1ha2UgY2FudmFzIHVzZSBhbiBJbWFnZUJ1ZmZlciBmb3IgaXRzIGJhY2tp
bmcgc3RvcmUKKworICAgICAgICBJbiBvcmRlciB0byBtYWtlIHRoZSBjYW52YXMgaW1wbGVtZW50
YXRpb24gbGVzcyBwbGF0Zm9ybSBkZXBlbmRlbnQKKyAgICAgICAgKGFuZCB0aHVzIHJlZHVjZSB0
aGUgY3VycmVudCBxdWFnbWlyZSBvZiBpZmRlZnMpIHdlIG5vdyB1c2UgYW4gCisgICAgICAgIElt
YWdlQnVmZmVyIHRvIHByb3ZpZGUgdGhlIGJhY2tpbmcgYnVmZmVyLCBhbiBpbW1lZGlhdGUgY29u
c2VxdWVuY2UKKyAgICAgICAgb2YgdGhpcyBpcyB0byByZW1vdmUgbXVsdGlwbGUgaWZkZWZzIGlu
IHRoZSBjb25zdHJ1Y3Rpb24gb2YgdGhlCisgICAgICAgIGJ1ZmZlci4gIFRoaXMgcGF0Y2ggYWxs
b3dzIHVzIHRvIGZ1cnRoZXIgcmVkdWNlIHRoZSBwbGF0Zm9ybQorICAgICAgICBkZXBlbmRlbmNp
ZXMgaW4gbGF0ZXIgcGF0Y2hlcy4KKyAgICAgICAgCisKKyAgICAgICAgKiBodG1sL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQ6OmRyYXdJbWFnZSk6CisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6SFRNTENhbnZhc0VsZW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6On5IVE1MQ2FudmFzRWxl
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6cmVzZXQpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OnBhaW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxDYW52YXNFbGVtZW50OjpjcmVhdGVEcmF3aW5nQ29udGV4dCk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6ZHJhd2luZ0NvbnRleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OmNyZWF0ZVBsYXRmb3JtSW1hZ2UpOgorICAgICAgICAq
IGh0bWwvSFRNTENhbnZhc0VsZW1lbnQuaDoKKwogMjAwOC0wMi0xMSAgU2FtIFdlaW5pZyAgPHNh
bUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9odG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgYi9XZWJDb3Jl
L2h0bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAppbmRleCA0OTdhMTllLi5lYTAxMDEy
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAor
KysgYi9XZWJDb3JlL2h0bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApAQCAtOTk3LDEy
ICs5OTcsMTIgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJbWFnZShIVE1M
Q2FudmFzRWxlbWVudCogY2FudmFzLCBjb25zdCBGbG9hdFIKIAogICAgIENHSW1hZ2VSZWxlYXNl
KHBsYXRmb3JtSW1hZ2UpOwogI2VsaWYgUExBVEZPUk0oUVQpCi0gICAgUUltYWdlIHB4ID0gY2Fu
dmFzLT5jcmVhdGVQbGF0Zm9ybUltYWdlKCk7CisgICAgUVBpeG1hcCBweCA9IGNhbnZhcy0+Y3Jl
YXRlUGxhdGZvcm1JbWFnZSgpOwogICAgIGlmIChweC5pc051bGwoKSkKICAgICAgICAgcmV0dXJu
OwogICAgIHdpbGxEcmF3KGRzdFJlY3QpOwogICAgIFFQYWludGVyKiBwYWludGVyID0gc3RhdGlj
X2Nhc3Q8UVBhaW50ZXIqPihjLT5wbGF0Zm9ybUNvbnRleHQoKSk7Ci0gICAgcGFpbnRlci0+ZHJh
d0ltYWdlKGRzdFJlY3QsIHB4LCBzcmNSZWN0KTsKKyAgICBwYWludGVyLT5kcmF3UGl4bWFwKGRz
dFJlY3QsIHB4LCBzcmNSZWN0KTsKICNlbGlmIFBMQVRGT1JNKENBSVJPKQogICAgIGNhaXJvX3N1
cmZhY2VfdCogaW1hZ2UgPSBjYW52YXMtPmNyZWF0ZVBsYXRmb3JtSW1hZ2UoKTsKICAgICBpZiAo
IWltYWdlKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcCBi
L1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKaW5kZXggNTQ5ODEyNC4uMGM0ZjFh
YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAorKysgYi9X
ZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5j
bHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dC5oIgorI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVz
LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJlbmRlckhUTUxDYW52YXMuaCIKQEAg
LTY1LDEyICs2Niw3IEBAIEhUTUxDYW52YXNFbGVtZW50OjpIVE1MQ2FudmFzRWxlbWVudChEb2N1
bWVudCogZG9jKQogICAgIDogSFRNTEVsZW1lbnQoY2FudmFzVGFnLCBkb2MpCiAgICAgLCBtX3Np
emUoZGVmYXVsdFdpZHRoLCBkZWZhdWx0SGVpZ2h0KQogICAgICwgbV9jcmVhdGVkRHJhd2luZ0Nv
bnRleHQoZmFsc2UpCi0gICAgLCBtX2RhdGEoMCkKLSNpZiBQTEFURk9STShRVCkKLSAgICAsIG1f
cGFpbnRlcigwKQotI2VsaWYgUExBVEZPUk0oQ0FJUk8pCi0gICAgLCBtX3N1cmZhY2UoMCkKLSNl
bmRpZgorICAgICwgbV9kYXRhKCkKICAgICAsIG1fZHJhd2luZ0NvbnRleHQoMCkKIHsKIH0KQEAg
LTc5LDE2ICs3NSw2IEBAIEhUTUxDYW52YXNFbGVtZW50Ojp+SFRNTENhbnZhc0VsZW1lbnQoKQog
ewogICAgIGlmIChtXzJEQ29udGV4dCkKICAgICAgICAgbV8yRENvbnRleHQtPmRldGFjaENhbnZh
cygpOwotI2lmIFBMQVRGT1JNKENHKQotICAgIGZhc3RGcmVlKG1fZGF0YSk7Ci0jZWxpZiBQTEFU
Rk9STShRVCkKLSAgICBkZWxldGUgbV9wYWludGVyOwotICAgIGRlbGV0ZSBtX2RhdGE7Ci0jZWxp
ZiBQTEFURk9STShDQUlSTykKLSAgICBpZiAobV9zdXJmYWNlKQotICAgICAgICBjYWlyb19zdXJm
YWNlX2Rlc3Ryb3kobV9zdXJmYWNlKTsKLSNlbmRpZgotICAgIGRlbGV0ZSBtX2RyYXdpbmdDb250
ZXh0OwogfQogCiBIVE1MVGFnU3RhdHVzIEhUTUxDYW52YXNFbGVtZW50OjplbmRUYWdSZXF1aXJl
bWVudCgpIGNvbnN0IApAQCAtMTc5LDE4ICsxNjUsNyBAQCB2b2lkIEhUTUxDYW52YXNFbGVtZW50
OjpyZXNldCgpCiAKICAgICBib29sIGhhZERyYXdpbmdDb250ZXh0ID0gbV9jcmVhdGVkRHJhd2lu
Z0NvbnRleHQ7CiAgICAgbV9jcmVhdGVkRHJhd2luZ0NvbnRleHQgPSBmYWxzZTsKLSNpZiBQTEFU
Rk9STShDRykKLSAgICBmYXN0RnJlZShtX2RhdGEpOwotI2VsaWYgUExBVEZPUk0oUVQpCi0gICAg
ZGVsZXRlIG1fcGFpbnRlcjsKLSAgICBtX3BhaW50ZXIgPSAwOwotICAgIGRlbGV0ZSBtX2RhdGE7
Ci0jZWxpZiBQTEFURk9STShDQUlSTykKLSAgICBpZiAobV9zdXJmYWNlKQotICAgICAgICBjYWly
b19zdXJmYWNlX2Rlc3Ryb3kobV9zdXJmYWNlKTsKLSAgICBtX3N1cmZhY2UgPSAwOwotI2VuZGlm
Ci0gICAgbV9kYXRhID0gMDsKKyAgICBtX2RhdGEuc2V0KDApOwogICAgIGRlbGV0ZSBtX2RyYXdp
bmdDb250ZXh0OwogICAgIG1fZHJhd2luZ0NvbnRleHQgPSAwOwogICAgIGlmIChtXzJEQ29udGV4
dCkKQEAgLTIxNSwxOSArMTkwLDIxIEBAIHZvaWQgSFRNTENhbnZhc0VsZW1lbnQ6OnBhaW50KEdy
YXBoaWNzQ29udGV4dCogcCwgY29uc3QgSW50UmVjdCYgcikKICAgICAgICAgQ0dJbWFnZVJlbGVh
c2UoaW1hZ2UpOwogICAgIH0KICNlbGlmIFBMQVRGT1JNKFFUKQotICAgIGlmIChtX2RhdGEpIHsK
LSAgICAgICAgUVBlbiBjdXJyZW50UGVuID0gbV9wYWludGVyLT5wZW4oKTsKLSAgICAgICAgcXJl
YWwgY3VycmVudE9wYWNpdHkgPSBtX3BhaW50ZXItPm9wYWNpdHkoKTsKLSAgICAgICAgUUJydXNo
IGN1cnJlbnRCcnVzaCA9IG1fcGFpbnRlci0+YnJ1c2goKTsKLSAgICAgICAgUUJydXNoIGN1cnJl
bnRCYWNrZ3JvdW5kID0gbV9wYWludGVyLT5iYWNrZ3JvdW5kKCk7Ci0gICAgICAgIGlmIChtX3Bh
aW50ZXItPmlzQWN0aXZlKCkpCi0gICAgICAgICAgICBtX3BhaW50ZXItPmVuZCgpOwotICAgICAg
ICBzdGF0aWNfY2FzdDxRUGFpbnRlcio+KHAtPnBsYXRmb3JtQ29udGV4dCgpKS0+ZHJhd0ltYWdl
KHIsICptX2RhdGEpOwotICAgICAgICBtX3BhaW50ZXItPmJlZ2luKG1fZGF0YSk7Ci0gICAgICAg
IG1fcGFpbnRlci0+c2V0UGVuKGN1cnJlbnRQZW4pOwotICAgICAgICBtX3BhaW50ZXItPnNldEJy
dXNoKGN1cnJlbnRCcnVzaCk7Ci0gICAgICAgIG1fcGFpbnRlci0+c2V0T3BhY2l0eShjdXJyZW50
T3BhY2l0eSk7Ci0gICAgICAgIG1fcGFpbnRlci0+c2V0QmFja2dyb3VuZChjdXJyZW50QmFja2dy
b3VuZCk7CisgICAgUVBpeG1hcCBwaXhtYXAgPSBjcmVhdGVQbGF0Zm9ybUltYWdlKCk7CisgICAg
aWYgKCFwaXhtYXAuaXNOdWxsKCkpIHsKKyAgICAgICAgUVBhaW50ZXIgcGFpbnRlciA9IHAtPnBs
YXRmb3JtQ29udGV4dCgpOworICAgICAgICBRUGVuIGN1cnJlbnRQZW4gPSBwYWludGVyLT5wZW4o
KTsKKyAgICAgICAgcXJlYWwgY3VycmVudE9wYWNpdHkgPSBwYWludGVyLT5vcGFjaXR5KCk7Cisg
ICAgICAgIFFCcnVzaCBjdXJyZW50QnJ1c2ggPSBwYWludGVyLT5icnVzaCgpOworICAgICAgICBR
QnJ1c2ggY3VycmVudEJhY2tncm91bmQgPSBwYWludGVyLT5iYWNrZ3JvdW5kKCk7CisgICAgICAg
IGlmIChwYWludGVyLT5pc0FjdGl2ZSgpKQorICAgICAgICAgICAgcGFpbnRlci0+ZW5kKCk7Cisg
ICAgICAgIHN0YXRpY19jYXN0PFFQYWludGVyKj4ocC0+cGxhdGZvcm1Db250ZXh0KCkpLT5kcmF3
UGl4bWFwKHIsIHBpeG1hcCk7CisgICAgICAgIHBhaW50ZXItPmJlZ2luKG1fZGF0YSk7CisgICAg
ICAgIHBhaW50ZXItPnNldFBlbihjdXJyZW50UGVuKTsKKyAgICAgICAgcGFpbnRlci0+c2V0QnJ1
c2goY3VycmVudEJydXNoKTsKKyAgICAgICAgcGFpbnRlci0+c2V0T3BhY2l0eShjdXJyZW50T3Bh
Y2l0eSk7CisgICAgICAgIHBhaW50ZXItPnNldEJhY2tncm91bmQoY3VycmVudEJhY2tncm91bmQp
OwogICAgIH0KICNlbGlmIFBMQVRGT1JNKENBSVJPKQogICAgIGlmIChjYWlyb19zdXJmYWNlX3Qq
IGltYWdlID0gY3JlYXRlUGxhdGZvcm1JbWFnZSgpKSB7CkBAIC0yNTksNDYgKzIzNiwxNiBAQCB2
b2lkIEhUTUxDYW52YXNFbGVtZW50OjpjcmVhdGVEcmF3aW5nQ29udGV4dCgpIGNvbnN0CiAgICAg
aWYgKCEod2YgPj0gMSAmJiBoZiA+PSAxICYmIHdmICogaGYgPD0gbWF4Q2FudmFzQXJlYSkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIHVuc2lnbmVkIHcgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
d2YpOwotICAgIHVuc2lnbmVkIGggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaGYpOworICAgIElu
dFNpemUgc2l6ZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4od2YpLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oaGYpKTsKIAotI2lmIFBMQVRGT1JNKENHKQotICAgIHNpemVfdCBieXRlc1BlclJvdyA9IHcg
KiA0OwotICAgIGlmIChieXRlc1BlclJvdyAvIDQgIT0gdykgLy8gY2hlY2sgZm9yIG92ZXJmbG93
Ci0gICAgICAgIHJldHVybjsKLSAgICBtX2RhdGEgPSBmYXN0Q2FsbG9jKGgsIGJ5dGVzUGVyUm93
KTsKLSAgICBpZiAoIW1fZGF0YSkKLSAgICAgICAgcmV0dXJuOwotICAgIENHQ29sb3JTcGFjZVJl
ZiBjb2xvclNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlRGV2aWNlUkdCKCk7Ci0gICAgQ0dDb250
ZXh0UmVmIGJpdG1hcENvbnRleHQgPSBDR0JpdG1hcENvbnRleHRDcmVhdGUobV9kYXRhLCB3LCBo
LCA4LCBieXRlc1BlclJvdywgY29sb3JTcGFjZSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRM
YXN0KTsKLSAgICBDR0NvbnRleHRTY2FsZUNUTShiaXRtYXBDb250ZXh0LCB3IC8gdW5zY2FsZWRX
aWR0aCwgaCAvIHVuc2NhbGVkSGVpZ2h0KTsKLSAgICBDR0NvbG9yU3BhY2VSZWxlYXNlKGNvbG9y
U3BhY2UpOwotICAgIG1fZHJhd2luZ0NvbnRleHQgPSBuZXcgR3JhcGhpY3NDb250ZXh0KGJpdG1h
cENvbnRleHQpOwotICAgIENHQ29udGV4dFJlbGVhc2UoYml0bWFwQ29udGV4dCk7Ci0jZWxpZiBQ
TEFURk9STShRVCkKLSAgICBtX2RhdGEgPSBuZXcgUUltYWdlKHcsIGgsIFFJbWFnZTo6Rm9ybWF0
X0FSR0IzMl9QcmVtdWx0aXBsaWVkKTsKLSAgICBpZiAoIW1fZGF0YSkKLSAgICAgICAgcmV0dXJu
OwotICAgIG1fcGFpbnRlciA9IG5ldyBRUGFpbnRlcihtX2RhdGEpOwotICAgIG1fcGFpbnRlci0+
c2V0QmFja2dyb3VuZChRQnJ1c2goUXQ6OnRyYW5zcGFyZW50KSk7Ci0gICAgbV9wYWludGVyLT5m
aWxsUmVjdCgwLCAwLCB3LCBoLCBRQ29sb3IoUXQ6OnRyYW5zcGFyZW50KSk7Ci0gICAgbV9kcmF3
aW5nQ29udGV4dCA9IG5ldyBHcmFwaGljc0NvbnRleHQobV9wYWludGVyKTsKLSNlbGlmIFBMQVRG
T1JNKENBSVJPKQotICAgIG1fc3VyZmFjZSA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlKENB
SVJPX0ZPUk1BVF9BUkdCMzIsIHcsIGgpOwotICAgIC8vIG1fZGF0YSBpcyBvd25lZCBieSBtX3N1
cmZhY2UKLSAgICBtX2RhdGEgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKG1fc3VyZmFj
ZSk7Ci0gICAgY2Fpcm9fdCogY3IgPSBjYWlyb19jcmVhdGUobV9zdXJmYWNlKTsKLSAgICBjYWly
b19zY2FsZShjciwgdyAvIHVuc2NhbGVkV2lkdGgsIGggLyB1bnNjYWxlZEhlaWdodCk7Ci0gICAg
bV9kcmF3aW5nQ29udGV4dCA9IG5ldyBHcmFwaGljc0NvbnRleHQoY3IpOwotICAgIGNhaXJvX2Rl
c3Ryb3koY3IpOwotI2VuZGlmCisgICAgbV9kYXRhLnNldChJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNp
emUsIGZhbHNlKS5yZWxlYXNlKCkpOwogfQogCiBHcmFwaGljc0NvbnRleHQqIEhUTUxDYW52YXNF
bGVtZW50OjpkcmF3aW5nQ29udGV4dCgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2NyZWF0ZWREcmF3
aW5nQ29udGV4dCkKICAgICAgICAgY3JlYXRlRHJhd2luZ0NvbnRleHQoKTsKLSAgICByZXR1cm4g
bV9kcmF3aW5nQ29udGV4dDsKKyAgICByZXR1cm4gbV9kYXRhLT5jb250ZXh0KCk7CiB9CiAKICNp
ZiBQTEFURk9STShDRykKQEAgLTMyMCwyNiArMjY3LDI2IEBAIENHSW1hZ2VSZWYgSFRNTENhbnZh
c0VsZW1lbnQ6OmNyZWF0ZVBsYXRmb3JtSW1hZ2UoKSBjb25zdAogCiAjZWxpZiBQTEFURk9STShR
VCkKIAotUUltYWdlIEhUTUxDYW52YXNFbGVtZW50OjpjcmVhdGVQbGF0Zm9ybUltYWdlKCkgY29u
c3QKK1FQaXhtYXAgSFRNTENhbnZhc0VsZW1lbnQ6OmNyZWF0ZVBsYXRmb3JtSW1hZ2UoKSBjb25z
dAogewotICAgIGlmIChtX2RhdGEpCi0gICAgICAgIHJldHVybiAqbV9kYXRhOwotICAgIHJldHVy
biBRSW1hZ2UoKTsKKyAgICBpZiAoIW1fZGF0YSkKKyAgICAgICAgcmV0dXJuIFFQaXhtYXAoKTsK
KyAgICByZXR1cm4gKm1fZGF0YS0+cGl4bWFwKCk7CiB9CiAKICNlbGlmIFBMQVRGT1JNKENBSVJP
KQogCiBjYWlyb19zdXJmYWNlX3QqIEhUTUxDYW52YXNFbGVtZW50OjpjcmVhdGVQbGF0Zm9ybUlt
YWdlKCkgY29uc3QKIHsKLSAgICBpZiAoIW1fc3VyZmFjZSkKKyAgICBpZiAoIW1fZGF0YSkKICAg
ICAgICAgcmV0dXJuIDA7CiAKICAgICAvLyBOb3RlIHRoYXQgdW5saWtlIENHLCBvdXIgcmV0dXJu
ZWQgaW1hZ2UgaXMgbm90IGEgY29weSBvcgogICAgIC8vIGNvcHktb24td3JpdGUsIGJ1dCB0aGUg
b3JpZ2luYWwuIFRoaXMgaXMgZmluZSwgc2luY2UgaXQgaXMgb25seQogICAgIC8vIGV2ZXIgdXNl
ZCBhcyBhIHNvdXJjZS4KIAotICAgIGNhaXJvX3N1cmZhY2VfZmx1c2gobV9zdXJmYWNlKTsKLSAg
ICBjYWlyb19zdXJmYWNlX3JlZmVyZW5jZShtX3N1cmZhY2UpOworICAgIGNhaXJvX3N1cmZhY2Vf
Zmx1c2gobV9kYXRhLT5zdXJmYWNlKCkpOworICAgIGNhaXJvX3N1cmZhY2VfcmVmZXJlbmNlKG1f
ZGF0YS0+c3VyZmFjZSgpKTsKICAgICByZXR1cm4gbV9zdXJmYWNlOwogfQogCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaCBiL1dlYkNvcmUvaHRtbC9IVE1MQ2Fu
dmFzRWxlbWVudC5oCmluZGV4IGFkZDFiZjcuLmNhNTViYjMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
aHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxl
bWVudC5oCkBAIC00Nyw2ICs0Nyw3IEBAIGNsYXNzIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDsK
IHR5cGVkZWYgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEIENhbnZhc1JlbmRlcmluZ0NvbnRleHQ7
CiBjbGFzcyBGbG9hdFJlY3Q7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CitjbGFzcyBJbWFnZUJ1
ZmZlcjsKIAogY2xhc3MgSFRNTENhbnZhc0VsZW1lbnQgOiBwdWJsaWMgSFRNTEVsZW1lbnQgewog
cHVibGljOgpAQCAtNzcsNyArNzgsNyBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oQ0cpCiAgICAg
Q0dJbWFnZVJlZiBjcmVhdGVQbGF0Zm9ybUltYWdlKCkgY29uc3Q7CiAjZWxpZiBQTEFURk9STShR
VCkKLSAgICBRSW1hZ2UgY3JlYXRlUGxhdGZvcm1JbWFnZSgpIGNvbnN0OworICAgIFFQaXhtYXAg
Y3JlYXRlUGxhdGZvcm1JbWFnZSgpIGNvbnN0OwogI2VsaWYgUExBVEZPUk0oQ0FJUk8pCiAgICAg
Y2Fpcm9fc3VyZmFjZV90KiBjcmVhdGVQbGF0Zm9ybUltYWdlKCkgY29uc3Q7CiAjZW5kaWYKQEAg
LTk1LDE3ICs5Niw3IEBAIHByaXZhdGU6CiAgICAgLy8gaWYgd2UgZXZlciBkcmV3IGFueSBpbWFn
ZXMgb3V0c2lkZSB0aGUgZG9tYWluLCBzbyB3ZSBjYW4gZGlzYWJsZSB0b0RhdGFVUkwuCiAKICAg
ICBtdXRhYmxlIGJvb2wgbV9jcmVhdGVkRHJhd2luZ0NvbnRleHQ7Ci0jaWYgUExBVEZPUk0oQ0cp
Ci0gICAgbXV0YWJsZSB2b2lkKiBtX2RhdGE7Ci0jZWxpZiBQTEFURk9STShRVCkKLSAgICBtdXRh
YmxlIFFJbWFnZSogbV9kYXRhOwotICAgIG11dGFibGUgUVBhaW50ZXIqIG1fcGFpbnRlcjsKLSNl
bGlmIFBMQVRGT1JNKENBSVJPKQotICAgIG11dGFibGUgdm9pZCogbV9kYXRhOwotICAgIG11dGFi
bGUgY2Fpcm9fc3VyZmFjZV90KiBtX3N1cmZhY2U7Ci0jZWxzZQotICAgIG11dGFibGUgdm9pZCog
bV9kYXRhOwotI2VuZGlmCisgICAgbXV0YWJsZSBPd25QdHI8SW1hZ2VCdWZmZXI+IG1fZGF0YTsK
ICAgICBtdXRhYmxlIEdyYXBoaWNzQ29udGV4dCogbV9kcmF3aW5nQ29udGV4dDsKIH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>19098</attachid>
            <date>2008-02-12 16:45:54 -0800</date>
            <delta_ts>2008-02-23 16:50:04 -0800</delta_ts>
            <desc>Cleanup a de-ifdefify HTMLCanvasElement::paint</desc>
            <filename>canvas-paint-cleanup.patch</filename>
            <type>text/plain</type>
            <size>7211</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
Njg0ZDcwNS4uNmIwNDY5MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAwOC0wMi0xMiAgT2xpdmVyIEh1bnQg
IDxvbGl2ZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEJ1ZyAxNzI2OTogRGVvYmZ1c2NhdGUgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJELmNwcAorICAgICAgICBSZW1vdmUgaWZkZWYncyBmcm9tIGNhbnZhcyBwYWludCBjb2RlCisK
KyAgICAgICAgQnkgbWFraW5nIEdyYXBoaWNzQ29udGV4dCBhd2FyZSBvZiB0aGUgY3Jvc3NwbGF0
Zm9ybSBJbWFnZUJ1ZmZlcgorICAgICAgICB0eXBlIHdlIGNhbiBtaWdyYXRlIHRoZSBpZmRlZi1p
ZmllZCBwYWludCBjb2RlIGluIEhUTUxDYW52YXNFbGVtZW50CisgICAgICAgIGludG8gcGxhdGZv
cm0gaW1wbGVtZW50YXRpb25zIG9mIEdyYXBoaWNzQ29udGV4dC4KKworICAgICAgICAqIGh0bWwv
SFRNTENhbnZhc0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1l
bnQ6OnBhaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWly
by5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnBhaW50QnVmZmVyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnBhaW50QnVmZmVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnBhaW50QnVmZmVyKToKKwogMjAwOC0wMi0xMiAgRGFu
IEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFRpbW90
aHkgSGF0Y2hlci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5j
cHAgYi9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCmluZGV4IGY5ZjNjNjAuLjM3
ZmIwMjEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKKysr
IGIvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcApAQCAtMTg0LDQwICsxODQsOSBA
QCB2b2lkIEhUTUxDYW52YXNFbGVtZW50OjpwYWludChHcmFwaGljc0NvbnRleHQqIHAsIGNvbnN0
IEludFJlY3QmIHIpCiB7CiAgICAgaWYgKHAtPnBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAg
cmV0dXJuOwotI2lmIFBMQVRGT1JNKENHKQotICAgIGlmIChDR0ltYWdlUmVmIGltYWdlID0gY3Jl
YXRlUGxhdGZvcm1JbWFnZSgpKSB7Ci0gICAgICAgIENHQ29udGV4dERyYXdJbWFnZShwLT5wbGF0
Zm9ybUNvbnRleHQoKSwgcC0+cm91bmRUb0RldmljZVBpeGVscyhyKSwgaW1hZ2UpOwotICAgICAg
ICBDR0ltYWdlUmVsZWFzZShpbWFnZSk7Ci0gICAgfQotI2VsaWYgUExBVEZPUk0oUVQpCi0gICAg
UVBpeG1hcCBwaXhtYXAgPSBjcmVhdGVQbGF0Zm9ybUltYWdlKCk7Ci0gICAgaWYgKCFwaXhtYXAu
aXNOdWxsKCkpIHsKLSAgICAgICAgUVBhaW50ZXIqIHBhaW50ZXIgPSBwLT5wbGF0Zm9ybUNvbnRl
eHQoKTsKLSAgICAgICAgUVBlbiBjdXJyZW50UGVuID0gcGFpbnRlci0+cGVuKCk7Ci0gICAgICAg
IHFyZWFsIGN1cnJlbnRPcGFjaXR5ID0gcGFpbnRlci0+b3BhY2l0eSgpOwotICAgICAgICBRQnJ1
c2ggY3VycmVudEJydXNoID0gcGFpbnRlci0+YnJ1c2goKTsKLSAgICAgICAgUUJydXNoIGN1cnJl
bnRCYWNrZ3JvdW5kID0gcGFpbnRlci0+YmFja2dyb3VuZCgpOwotICAgICAgICBpZiAocGFpbnRl
ci0+aXNBY3RpdmUoKSkKLSAgICAgICAgICAgIHBhaW50ZXItPmVuZCgpOwotICAgICAgICBzdGF0
aWNfY2FzdDxRUGFpbnRlcio+KHAtPnBsYXRmb3JtQ29udGV4dCgpKS0+ZHJhd1BpeG1hcChyLCBw
aXhtYXApOwotICAgICAgICBwYWludGVyLT5iZWdpbigmcGl4bWFwKTsKLSAgICAgICAgcGFpbnRl
ci0+c2V0UGVuKGN1cnJlbnRQZW4pOwotICAgICAgICBwYWludGVyLT5zZXRCcnVzaChjdXJyZW50
QnJ1c2gpOwotICAgICAgICBwYWludGVyLT5zZXRPcGFjaXR5KGN1cnJlbnRPcGFjaXR5KTsKLSAg
ICAgICAgcGFpbnRlci0+c2V0QmFja2dyb3VuZChjdXJyZW50QmFja2dyb3VuZCk7Ci0gICAgfQot
I2VsaWYgUExBVEZPUk0oQ0FJUk8pCi0gICAgaWYgKGNhaXJvX3N1cmZhY2VfdCogaW1hZ2UgPSBj
cmVhdGVQbGF0Zm9ybUltYWdlKCkpIHsKLSAgICAgICAgY2Fpcm9fdCogY3IgPSBwLT5wbGF0Zm9y
bUNvbnRleHQoKTsKLSAgICAgICAgY2Fpcm9fc2F2ZShjcik7Ci0gICAgICAgIGNhaXJvX3RyYW5z
bGF0ZShjciwgci54KCksIHIueSgpKTsKLSAgICAgICAgY2Fpcm9fc2V0X3NvdXJjZV9zdXJmYWNl
KGNyLCBpbWFnZSwgMCwgMCk7Ci0gICAgICAgIGNhaXJvX3N1cmZhY2VfZGVzdHJveShpbWFnZSk7
Ci0gICAgICAgIGNhaXJvX3JlY3RhbmdsZShjciwgMCwgMCwgci53aWR0aCgpLCByLmhlaWdodCgp
KTsKLSAgICAgICAgY2Fpcm9fZmlsbChjcik7Ci0gICAgICAgIGNhaXJvX3Jlc3RvcmUoY3IpOwot
ICAgIH0KLSNlbmRpZgorICAgIAorICAgIGlmIChtX2RhdGEpCisgICAgICAgIHAtPnBhaW50QnVm
ZmVyKG1fZGF0YS5nZXQoKSwgcik7CiB9CiAKIHZvaWQgSFRNTENhbnZhc0VsZW1lbnQ6OmNyZWF0
ZURyYXdpbmdDb250ZXh0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dC5oCmluZGV4IGU0YTk4ZTQuLjA3NWNhZjQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtODMsNiArODMsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgY2xhc3MgRm9udDsKICAgICBjbGFzcyBHcmFwaGljc0NvbnRleHRQcml2
YXRlOwogICAgIGNsYXNzIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTsKKyAgICBjbGFz
cyBJbWFnZUJ1ZmZlcjsKICAgICBjbGFzcyBLVVJMOwogICAgIGNsYXNzIFBhdGg7CiAgICAgY2xh
c3MgVGV4dFJ1bjsKQEAgLTE0OSw2ICsxNTAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIHZvaWQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UqLCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgSW50UmVjdCYgc3JjUmVjdCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW1h
Z2U6OlRpbGVSdWxlIGhSdWxlID0gSW1hZ2U6OlN0cmV0Y2hUaWxlLCBJbWFnZTo6VGlsZVJ1bGUg
dlJ1bGUgPSBJbWFnZTo6U3RyZXRjaFRpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Q29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyKTsKKyAgICAgICAgdm9pZCBw
YWludEJ1ZmZlcihJbWFnZUJ1ZmZlciosIGNvbnN0IEludFJlY3QmKTsKICNpZiBQTEFURk9STShD
RykKICAgICAgICAgdm9pZCBzZXRVc2VMb3dRdWFsaXR5SW1hZ2VJbnRlcnBvbGF0aW9uKGJvb2wg
PSB0cnVlKTsKICAgICAgICAgYm9vbCB1c2VMb3dRdWFsaXR5SW1hZ2VJbnRlcnBvbGF0aW9uKCkg
Y29uc3Q7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBo
aWNzQ29udGV4dENhaXJvLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3Jh
cGhpY3NDb250ZXh0Q2Fpcm8uY3BwCmluZGV4IDA4ZTg2MTYuLjVmZDg4MTcgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3Bw
CisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fp
cm8uY3BwCkBAIC04ODksNiArODg5LDIzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRVc2VB
bnRpYWxpYXNpbmcoYm9vbCBlbmFibGUpCiAgICAgY2Fpcm9fc2V0X2FudGlhbGlhcyhtX2RhdGEt
PmNyLCBlbmFibGUgPyBDQUlST19BTlRJQUxJQVNfREVGQVVMVCA6IENBSVJPX0FOVElBTElBU19O
T05FKTsKIH0KIAordm9pZCBHcmFwaGljc0NvbnRleHQ6OnBhaW50QnVmZmVyKEltYWdlQnVmZmVy
KiBidWZmZXIsIGNvbnN0IEludFJlY3QmIHIpCit7CisgICAgY2Fpcm9fc3VyZmFjZV90KiBpbWFn
ZSA9IGJ1ZmZlci0+c3VyZmFjZSgpOworICAgIGlmICghaW1hZ2UpCisgICAgICAgIHJldHVybjsK
KyAgICBjYWlyb19zdXJmYWNlX2ZsdXNoKGltYWdlKTsKKyAgICBjYWlyb19zdXJmYWNlX3JlZmVy
ZW5jZShpbWFnZSk7CisgICAgY2Fpcm9fdCogY3IgPSBwbGF0Zm9ybUNvbnRleHQoKTsKKyAgICBj
YWlyb19zYXZlKGNyKTsKKyAgICBjYWlyb190cmFuc2xhdGUoY3IsIHIueCgpLCByLnkoKSk7Cisg
ICAgY2Fpcm9fc2V0X3NvdXJjZV9zdXJmYWNlKGNyLCBpbWFnZSwgMCwgMCk7CisgICAgY2Fpcm9f
c3VyZmFjZV9kZXN0cm95KGltYWdlKTsKKyAgICBjYWlyb19yZWN0YW5nbGUoY3IsIDAsIDAsIHIu
d2lkdGgoKSwgci5oZWlnaHQoKSk7CisgICAgY2Fpcm9fZmlsbChjcik7CisgICAgY2Fpcm9fcmVz
dG9yZShjcik7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFBMQVRG
T1JNKENBSVJPKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFw
aGljc0NvbnRleHRDRy5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNz
Q29udGV4dENHLmNwcAppbmRleCBjNDkwZGNiLi4xZDVhNGQ1IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAorKysgYi9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcApAQCAtMzAsOCArMzAs
MTAgQEAKICNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKICNpbmNsdWRlICJGbG9hdENvbnZl
cnNpb24uaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVDRy5oIgor
I2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIlBh
dGguaCIKKyNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dCaXRtYXBDb250ZXh0Lmg+CiAjaW5jbHVk
ZSA8Q29yZUdyYXBoaWNzL0NHUERGQ29udGV4dC5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFz
Lmg+CiAKQEAgLTkyNCw2ICs5MjYsMTQgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldENvbXBv
c2l0ZU9wZXJhdGlvbihDb21wb3NpdGVPcGVyYXRvciBtb2RlKQogICAgIENHQ29udGV4dFNldEJs
ZW5kTW9kZShwbGF0Zm9ybUNvbnRleHQoKSwgdGFyZ2V0KTsKIH0KICNlbmRpZgorCit2b2lkIEdy
YXBoaWNzQ29udGV4dDo6cGFpbnRCdWZmZXIoSW1hZ2VCdWZmZXIqIGJ1ZmZlciwgY29uc3QgSW50
UmVjdCYgcikKK3sKKyAgICBpZiAoQ0dJbWFnZVJlZiBpbWFnZSA9IENHQml0bWFwQ29udGV4dENy
ZWF0ZUltYWdlKGJ1ZmZlci0+Y29udGV4dCgpLT5wbGF0Zm9ybUNvbnRleHQoKSkpIHsKKyAgICAg
ICAgQ0dDb250ZXh0RHJhd0ltYWdlKHBsYXRmb3JtQ29udGV4dCgpLCByb3VuZFRvRGV2aWNlUGl4
ZWxzKHIpLCBpbWFnZSk7CisgICAgICAgIENHSW1hZ2VSZWxlYXNlKGltYWdlKTsKKyAgICB9Cit9
CiAgICAgCiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3Jh
cGhpY3NDb250ZXh0UXQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGlj
c0NvbnRleHRRdC5jcHAKaW5kZXggY2YwOTdjOC4uZTE2OGQxNiAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHAKKysrIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHAKQEAgLTQ1LDYgKzQ1
LDcgQEAKICNpbmNsdWRlIDxRUG9seWdvbkY+CiAjaW5jbHVkZSA8UVBhaW50ZXJQYXRoPgogI2lu
Y2x1ZGUgPFFQYWludERldmljZT4KKyNpbmNsdWRlIDxRUGl4bWFwPgogI2luY2x1ZGUgPFFEZWJ1
Zz4KIAogI2lmbmRlZiBNX1BJCkBAIC05MDUsNiArOTA2LDI2IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0OjpzZXRVc2VBbnRpYWxpYXNpbmcoYm9vbCBlbmFibGUpCiAgICAgbV9kYXRhLT5wKCktPnNl
dFJlbmRlckhpbnQoUVBhaW50ZXI6OkFudGlhbGlhc2luZywgZW5hYmxlKTsKIH0KIAordm9pZCBH
cmFwaGljc0NvbnRleHQ6OnBhaW50QnVmZmVyKEltYWdlQnVmZmVyKiBidWZmZXIsIGNvbnN0IElu
dFJlY3QmIHIpCit7CisgICAgUVBpeG1hcCBwaXhtYXAgPSAqYnVmZmVyLT5waXhtYXAoKTsKKyAg
ICBpZiAoIXBpeG1hcC5pc051bGwoKSkgeworICAgICAgICBRUGFpbnRlciogcGFpbnRlciA9IHBs
YXRmb3JtQ29udGV4dCgpOworICAgICAgICBRUGVuIGN1cnJlbnRQZW4gPSBwYWludGVyLT5wZW4o
KTsKKyAgICAgICAgcXJlYWwgY3VycmVudE9wYWNpdHkgPSBwYWludGVyLT5vcGFjaXR5KCk7Cisg
ICAgICAgIFFCcnVzaCBjdXJyZW50QnJ1c2ggPSBwYWludGVyLT5icnVzaCgpOworICAgICAgICBR
QnJ1c2ggY3VycmVudEJhY2tncm91bmQgPSBwYWludGVyLT5iYWNrZ3JvdW5kKCk7CisgICAgICAg
IGlmIChwYWludGVyLT5pc0FjdGl2ZSgpKQorICAgICAgICAgICAgcGFpbnRlci0+ZW5kKCk7Cisg
ICAgICAgIHN0YXRpY19jYXN0PFFQYWludGVyKj4ocGFpbnRlciktPmRyYXdQaXhtYXAociwgcGl4
bWFwKTsKKyAgICAgICAgcGFpbnRlci0+YmVnaW4oJnBpeG1hcCk7CisgICAgICAgIHBhaW50ZXIt
PnNldFBlbihjdXJyZW50UGVuKTsKKyAgICAgICAgcGFpbnRlci0+c2V0QnJ1c2goY3VycmVudEJy
dXNoKTsKKyAgICAgICAgcGFpbnRlci0+c2V0T3BhY2l0eShjdXJyZW50T3BhY2l0eSk7CisgICAg
ICAgIHBhaW50ZXItPnNldEJhY2tncm91bmQoY3VycmVudEJhY2tncm91bmQpOworICAgIH0KK30K
KwogfQogCiAvLyB2aW06IHRzPTQgc3c9NCBldAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>19150</attachid>
            <date>2008-02-15 19:43:36 -0800</date>
            <delta_ts>2008-02-23 16:51:01 -0800</delta_ts>
            <desc>De-ifdefify drawing a canvas to a canvas</desc>
            <filename>cleanup-canvas-paint.patch</filename>
            <type>text/plain</type>
            <size>11127</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MzZjODU4OS4uMDMzNTM1OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAwOC0wMi0xNSAgT2xpdmVyIEh1bnQg
IDxvbGl2ZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFJlZmFjdG9yIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd0ltYWdl
KEhUTUxDYW52YXNFbGVtZW50KSB0byByZW1vdmUgZXZpbCBpZmRlZnMKKyAgICAgICAgCisgICAg
ICAgIEFkZCBsb2dpYyBkcmF3KEltYWdlQnVmZmVyKikgbWV0aG9kIHRvIEdyYXBoaWNzQ29udGV4
dCB0byBoYW5kbGUKKyAgICAgICAgcGFpbnRpbmcgdGhlIHNvdXJjZSBjYW52YXMgY29udGVudC4K
KworICAgICAgICAqIGh0bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd0ltYWdlKToKKyAgICAgICAg
KiBodG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDYW52
YXNFbGVtZW50OjpidWZmZXIpOgorICAgICAgICAqIGh0bWwvSFRNTENhbnZhc0VsZW1lbnQuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpwYWludEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQ6OmRyYXdJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQv
R3JhcGhpY3NDb250ZXh0UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpkcmF3SW1hZ2UpOgorCiAyMDA4LTAyLTE1ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9o
dG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgYi9XZWJDb3JlL2h0bWwvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJELmNwcAppbmRleCBlYTAxMDEyLi5hYWIwYzBiIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2h0bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAorKysgYi9XZWJDb3JlL2h0
bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApAQCAtOTU3LDY1ICs5NTcsMTIgQEAgdm9p
ZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJbWFnZShIVE1MQ2FudmFzRWxlbWVudCog
Y2FudmFzLCBjb25zdCBGbG9hdFIKICAgICBGbG9hdFJlY3QgZGVzdFJlY3QgPSBjLT5yb3VuZFRv
RGV2aWNlUGl4ZWxzKGRzdFJlY3QpOwogICAgICAgICAKICAgICAvLyBGSVhNRTogRG8gdGhpcyB0
aHJvdWdoIHBsYXRmb3JtLWluZGVwZW5kZW50IEdyYXBoaWNzQ29udGV4dCBBUEkuCi0jaWYgUExB
VEZPUk0oQ0cpCi0gICAgQ0dJbWFnZVJlZiBwbGF0Zm9ybUltYWdlID0gY2FudmFzLT5jcmVhdGVQ
bGF0Zm9ybUltYWdlKCk7Ci0gICAgaWYgKCFwbGF0Zm9ybUltYWdlKQorICAgIEltYWdlQnVmZmVy
KiBidWZmZXIgPSBjYW52YXMtPmJ1ZmZlcigpOworICAgIGlmICghYnVmZmVyKQogICAgICAgICBy
ZXR1cm47Ci0KKyAgICAKICAgICB3aWxsRHJhdyhkZXN0UmVjdCk7Ci0KLSAgICBmbG9hdCBpdyA9
IENHSW1hZ2VHZXRXaWR0aChwbGF0Zm9ybUltYWdlKTsKLSAgICBmbG9hdCBpaCA9IENHSW1hZ2VH
ZXRIZWlnaHQocGxhdGZvcm1JbWFnZSk7Ci0gICAgaWYgKHNvdXJjZVJlY3QueCgpID09IDAgJiYg
c291cmNlUmVjdC55KCkgPT0gMCAmJiBpdyA9PSBzb3VyY2VSZWN0LndpZHRoKCkgJiYgaWggPT0g
c291cmNlUmVjdC5oZWlnaHQoKSkgewotICAgICAgICAvLyBGYXN0IHBhdGgsIHlheSEKLSAgICAg
ICAgQ0dDb250ZXh0RHJhd0ltYWdlKGMtPnBsYXRmb3JtQ29udGV4dCgpLCBkZXN0UmVjdCwgcGxh
dGZvcm1JbWFnZSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLy8gU2xvdyBwYXRoLCBib28hCi0g
ICAgICAgIC8vIENyZWF0ZSBhIG5ldyBiaXRtYXAgb2YgdGhlIGFwcHJvcHJpYXRlIHNpemUgYW5k
IHRoZW4gZHJhdyB0aGF0IGludG8gb3VyIGNvbnRleHQuCi0KLSAgICAgICAgc2l6ZV90IGNzdyA9
IHN0YXRpY19jYXN0PHNpemVfdD4oY2VpbGYoc291cmNlUmVjdC53aWR0aCgpKSk7Ci0gICAgICAg
IHNpemVfdCBjc2ggPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGNlaWxmKHNvdXJjZVJlY3QuaGVpZ2h0
KCkpKTsKLQotICAgICAgICBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSA9IENHQ29sb3JTcGFj
ZUNyZWF0ZURldmljZVJHQigpOwotICAgICAgICBzaXplX3QgYnl0ZXNQZXJSb3cgPSBjc3cgKiA0
OwotICAgICAgICB2b2lkKiBidWZmZXIgPSBmYXN0TWFsbG9jKGNzaCAqIGJ5dGVzUGVyUm93KTsK
LQotICAgICAgICBDR0NvbnRleHRSZWYgY2xpcHBlZFNvdXJjZUNvbnRleHQgPSBDR0JpdG1hcENv
bnRleHRDcmVhdGUoYnVmZmVyLCBjc3csIGNzaCwKLSAgICAgICAgICAgIDgsIGJ5dGVzUGVyUm93
LCBjb2xvclNwYWNlLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZExhc3QpOwotICAgICAgICBD
R0NvbG9yU3BhY2VSZWxlYXNlKGNvbG9yU3BhY2UpOwotICAgICAgICBDR0NvbnRleHRUcmFuc2xh
dGVDVE0oY2xpcHBlZFNvdXJjZUNvbnRleHQsIC1zb3VyY2VSZWN0LngoKSwgLXNvdXJjZVJlY3Qu
eSgpKTsKLSAgICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNsaXBwZWRTb3VyY2VDb250ZXh0LCBD
R1JlY3RNYWtlKDAsIDAsIGl3LCBpaCksIHBsYXRmb3JtSW1hZ2UpOwotCi0gICAgICAgIENHSW1h
Z2VSZWYgY2xpcHBlZFNvdXJjZUltYWdlID0gQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UoY2xp
cHBlZFNvdXJjZUNvbnRleHQpOwotICAgICAgICBDR0NvbnRleHRSZWxlYXNlKGNsaXBwZWRTb3Vy
Y2VDb250ZXh0KTsKLQotICAgICAgICBDR0NvbnRleHREcmF3SW1hZ2UoYy0+cGxhdGZvcm1Db250
ZXh0KCksIGRlc3RSZWN0LCBjbGlwcGVkU291cmNlSW1hZ2UpOwotICAgICAgICBDR0ltYWdlUmVs
ZWFzZShjbGlwcGVkU291cmNlSW1hZ2UpOwotICAgICAgICAKLSAgICAgICAgZmFzdEZyZWUoYnVm
ZmVyKTsKLSAgICB9Ci0KLSAgICBDR0ltYWdlUmVsZWFzZShwbGF0Zm9ybUltYWdlKTsKLSNlbGlm
IFBMQVRGT1JNKFFUKQotICAgIFFQaXhtYXAgcHggPSBjYW52YXMtPmNyZWF0ZVBsYXRmb3JtSW1h
Z2UoKTsKLSAgICBpZiAocHguaXNOdWxsKCkpCi0gICAgICAgIHJldHVybjsKLSAgICB3aWxsRHJh
dyhkc3RSZWN0KTsKLSAgICBRUGFpbnRlciogcGFpbnRlciA9IHN0YXRpY19jYXN0PFFQYWludGVy
Kj4oYy0+cGxhdGZvcm1Db250ZXh0KCkpOwotICAgIHBhaW50ZXItPmRyYXdQaXhtYXAoZHN0UmVj
dCwgcHgsIHNyY1JlY3QpOwotI2VsaWYgUExBVEZPUk0oQ0FJUk8pCi0gICAgY2Fpcm9fc3VyZmFj
ZV90KiBpbWFnZSA9IGNhbnZhcy0+Y3JlYXRlUGxhdGZvcm1JbWFnZSgpOwotICAgIGlmICghaW1h
Z2UpCi0gICAgICAgIHJldHVybjsKLSAgICB3aWxsRHJhdyhkc3RSZWN0KTsKLSAgICBjYWlyb190
KiBjciA9IGMtPnBsYXRmb3JtQ29udGV4dCgpOwotICAgIGNhaXJvX3NhdmUoY3IpOwotICAgIGNh
aXJvX3NldF9zb3VyY2Vfc3VyZmFjZShjciwgaW1hZ2UsIHNyY1JlY3QueCgpLCBzcmNSZWN0Lnko
KSk7Ci0gICAgY2Fpcm9fc3VyZmFjZV9kZXN0cm95KGltYWdlKTsKLSAgICBjYWlyb19yZWN0YW5n
bGUoY3IsIGRzdFJlY3QueCgpLCBkc3RSZWN0LnkoKSwgZHN0UmVjdC53aWR0aCgpLCBkc3RSZWN0
LmhlaWdodCgpKTsKLSAgICBjYWlyb19maWxsKGNyKTsKLSAgICBjYWlyb19yZXN0b3JlKGNyKTsK
LSNlbmRpZgorICAgIGMtPmRyYXdJbWFnZShidWZmZXIsIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsK
IH0KIAogLy8gRklYTUU6IFdoeSBpc24ndCB0aGlzIGp1c3QgYW5vdGhlciBvdmVybG9hZCBvZiBk
cmF3SW1hZ2U/IFdoeSBoYXZlIGEgZGlmZmVyZW50IG5hbWU/CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVt
ZW50LmNwcAppbmRleCAzN2ZiMDIxLi4zYzhmZDJjIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwv
SFRNTENhbnZhc0VsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVu
dC5jcHAKQEAgLTIxNyw2ICsyMTcsMTMgQEAgR3JhcGhpY3NDb250ZXh0KiBIVE1MQ2FudmFzRWxl
bWVudDo6ZHJhd2luZ0NvbnRleHQoKSBjb25zdAogICAgIHJldHVybiBtX2RhdGEtPmNvbnRleHQo
KTsKIH0KIAorSW1hZ2VCdWZmZXIqIEhUTUxDYW52YXNFbGVtZW50OjpidWZmZXIoKSBjb25zdAor
eworICAgIGlmICghbV9jcmVhdGVkRHJhd2luZ0NvbnRleHQpCisgICAgICAgIGNyZWF0ZURyYXdp
bmdDb250ZXh0KCk7CisgICAgcmV0dXJuIG1fZGF0YS5nZXQoKTsKK30KKwogI2lmIFBMQVRGT1JN
KENHKQogCiBDR0ltYWdlUmVmIEhUTUxDYW52YXNFbGVtZW50OjpjcmVhdGVQbGF0Zm9ybUltYWdl
KCkgY29uc3QKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oIGIv
V2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgKaW5kZXggMTg5NWM0MC4uMzQ4Yjg2MCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgKKysrIGIvV2ViQ29y
ZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgKQEAgLTc1LDYgKzc1LDcgQEAgcHVibGljOgogCiAg
ICAgR3JhcGhpY3NDb250ZXh0KiBkcmF3aW5nQ29udGV4dCgpIGNvbnN0OwogCisgICAgSW1hZ2VC
dWZmZXIqIGJ1ZmZlcigpIGNvbnN0OyAKICNpZiBQTEFURk9STShDRykKICAgICBDR0ltYWdlUmVm
IGNyZWF0ZVBsYXRmb3JtSW1hZ2UoKSBjb25zdDsKICNlbGlmIFBMQVRGT1JNKFFUKQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggMDc1Y2FmNC4uNzMy
YzhlMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBA
IC0xNDUsMTEgKzE0NSwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgZHJh
d0ltYWdlKEltYWdlKiwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEludFJlY3QmIHNy
Y1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgYm9vbCB1c2VM
b3dRdWFsaXR5U2NhbGUgPSBmYWxzZSk7CiAgICAgICAgIHZvaWQgZHJhd0ltYWdlKEltYWdlKiwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0ID0gRmxv
YXRSZWN0KDAsIDAsIC0xLCAtMSksCiAgICAgICAgICAgICAgICAgICAgICAgIENvbXBvc2l0ZU9w
ZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUgPSBm
YWxzZSk7CisgICAgICAgIHZvaWQgZHJhd0ltYWdlKEltYWdlQnVmZmVyKiwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KTsKICAgICAgICAgdm9pZCBk
cmF3VGlsZWRJbWFnZShJbWFnZSosIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0LCBjb25zdCBJbnRQ
b2ludCYgc3JjUG9pbnQsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLAogICAgICAgICAgICAgICAg
ICAgICAgICBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIpOwogICAgICAg
ICB2b2lkIGRyYXdUaWxlZEltYWdlKEltYWdlKiwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEludFJlY3QmIHNyY1JlY3QsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEltYWdl
OjpUaWxlUnVsZSBoUnVsZSA9IEltYWdlOjpTdHJldGNoVGlsZSwgSW1hZ2U6OlRpbGVSdWxlIHZS
dWxlID0gSW1hZ2U6OlN0cmV0Y2hUaWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIENv
bXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3Zlcik7CisKICAgICAgICAgdm9pZCBw
YWludEJ1ZmZlcihJbWFnZUJ1ZmZlciosIGNvbnN0IEludFJlY3QmKTsKICNpZiBQTEFURk9STShD
RykKICAgICAgICAgdm9pZCBzZXRVc2VMb3dRdWFsaXR5SW1hZ2VJbnRlcnBvbGF0aW9uKGJvb2wg
PSB0cnVlKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3Jh
cGhpY3NDb250ZXh0Q2Fpcm8uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9H
cmFwaGljc0NvbnRleHRDYWlyby5jcHAKaW5kZXggMmY4MWMwYi4uOWJhZjc4MCAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5j
cHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRD
YWlyby5jcHAKQEAgLTkwOSw2ICs5MDksMTYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnBhaW50
QnVmZmVyKEltYWdlQnVmZmVyKiBidWZmZXIsIGNvbnN0IEludFJlY3QmIHIpCiAgICAgY2Fpcm9f
cmVzdG9yZShjcik7CiB9CiAKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UoSW1hZ2VC
dWZmZXIqIGJ1ZmZlciwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0KQoreworICAgIGNhaXJvX3N1cmZhY2VfZmx1c2gobV9kYXRhLT5zdXJmYWNlKCkp
OyAgICAKKyAgICBjYWlyb19zYXZlKHBsYXRmb3JtQ29udGV4dCgpKTsKKyAgICBjYWlyb19zZXRf
c291cmNlX3N1cmZhY2UocGxhdGZvcm1Db250ZXh0KCksIG1fZGF0YS0+c3VyZmFjZSgpLCBzcmNS
ZWN0LngoKSwgc3JjUmVjdC55KCkpOworICAgIGNhaXJvX3JlY3RhbmdsZShwbGF0Zm9ybUNvbnRl
eHQoKSwgZHN0UmVjdC54KCksIGRzdFJlY3QueSgpLCBkc3RSZWN0LndpZHRoKCksIGRzdFJlY3Qu
aGVpZ2h0KCkpOworICAgIGNhaXJvX2ZpbGwocGxhdGZvcm1Db250ZXh0KCkpOworICAgIGNhaXJv
X3Jlc3RvcmUocGxhdGZvcm1Db250ZXh0KCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKICNlbmRpZiAvLyBQTEFURk9STShDQUlSTykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKaW5kZXggMjg5ZTM5OS4uNGVlZGEyMiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRD
Ry5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRD
Ry5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dCaXRtYXBD
b250ZXh0Lmg+CiAjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NHUERGQ29udGV4dC5oPgogI2luY2x1
ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL093bkFycmF5UHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1JldGFpblB0ci5oPgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwpAQCAtOTMwLDE0
ICs5MzEsNDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldENvbXBvc2l0ZU9wZXJhdGlvbihD
b21wb3NpdGVPcGVyYXRvciBtb2RlKQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cGFpbnRCdWZm
ZXIoSW1hZ2VCdWZmZXIqIGJ1ZmZlciwgY29uc3QgSW50UmVjdCYgcikKIHsKLSAgICBpZiAocGFp
bnRpbmdEaXNhYmxlZCgpKQorICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gYnVmZmVyLT5jb250
ZXh0KCktPnBsYXRmb3JtQ29udGV4dCgpOworICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0
dXJuOworICAgIENHQ29udGV4dEZsdXNoKGNvbnRleHQpOworICAgIGlmIChDR0ltYWdlUmVmIGlt
YWdlID0gQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UoY29udGV4dCkpIHsKKyAgICAgICAgQ0dD
b250ZXh0RHJhd0ltYWdlKHBsYXRmb3JtQ29udGV4dCgpLCByb3VuZFRvRGV2aWNlUGl4ZWxzKHIp
LCBpbWFnZSk7CisgICAgICAgIENHSW1hZ2VSZWxlYXNlKGltYWdlKTsKKyAgICB9Cit9CiAKLSAg
ICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2UoQWRvcHRDRiwgQ0dCaXRtYXBDb250ZXh0Q3Jl
YXRlSW1hZ2UoYnVmZmVyLT5jb250ZXh0KCktPnBsYXRmb3JtQ29udGV4dCgpKSk7Ci0gICAgaWYg
KCFpbWFnZSkKLSAgICAgICAgcmV0dXJuOwotICAgIENHQ29udGV4dERyYXdJbWFnZShwbGF0Zm9y
bUNvbnRleHQoKSwgcm91bmRUb0RldmljZVBpeGVscyhyKSwgaW1hZ2UuZ2V0KCkpOwordm9pZCBH
cmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZShJbWFnZUJ1ZmZlciogYnVmZmVyLCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpCit7CisgICAgQ0dDb250
ZXh0UmVmIHBsYXRmb3JtQ29udGV4dCA9IHRoaXMtPnBsYXRmb3JtQ29udGV4dCgpOworICAgIENH
Q29udGV4dFJlZiBjb250ZXh0ID0gYnVmZmVyLT5jb250ZXh0KCktPnBsYXRmb3JtQ29udGV4dCgp
OworICAgIENHQ29udGV4dEZsdXNoKGNvbnRleHQpOworICAgIFJldGFpblB0cjxDR0ltYWdlUmVm
PiBpbWFnZShBZG9wdENGLCBDR0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShjb250ZXh0KSk7Cisg
ICAgZmxvYXQgaXcgPSBDR0ltYWdlR2V0V2lkdGgoaW1hZ2UuZ2V0KCkpOworICAgIGZsb2F0IGlo
ID0gQ0dJbWFnZUdldEhlaWdodChpbWFnZS5nZXQoKSk7CisgICAgaWYgKHNyY1JlY3QueCgpID09
IDAgJiYgc3JjUmVjdC55KCkgPT0gMCAmJiBpdyA9PSBzcmNSZWN0LndpZHRoKCkgJiYgaWggPT0g
c3JjUmVjdC5oZWlnaHQoKSkgeworICAgICAgICAvLyBGYXN0IHBhdGgsIHlheSEKKyAgICAgICAg
Q0dDb250ZXh0RHJhd0ltYWdlKHBsYXRmb3JtQ29udGV4dCwgZGVzdFJlY3QsIGltYWdlLmdldCgp
KTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBTbG93IHBhdGgsIGJvbyEKKyAgICAgICAgLy8g
Q3JlYXRlIGEgbmV3IGJpdG1hcCBvZiB0aGUgYXBwcm9wcmlhdGUgc2l6ZSBhbmQgdGhlbiBkcmF3
IHRoYXQgaW50byBvdXIgY29udGV4dC4KKyAgICAgICAgCisgICAgICAgIHNpemVfdCBjc3cgPSBz
dGF0aWNfY2FzdDxzaXplX3Q+KGNlaWxmKHNyY1JlY3Qud2lkdGgoKSkpOworICAgICAgICBzaXpl
X3QgY3NoID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihjZWlsZihzcmNSZWN0LmhlaWdodCgpKSk7Cisg
ICAgICAgIAorICAgICAgICBSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBjb2xvclNwYWNlKEFk
b3B0Q0YsIENHQ29sb3JTcGFjZUNyZWF0ZURldmljZVJHQigpKTsKKyAgICAgICAgc2l6ZV90IGJ5
dGVzUGVyUm93ID0gY3N3ICogNDsKKyAgICAgICAgT3duQXJyYXlQdHI8Y2hhcj4gYnVmZmVyKG5l
dyBjaGFyW2NzaCAqIGJ5dGVzUGVyUm93XSk7CisgICAgICAgIFJldGFpblB0cjxDR0NvbnRleHRS
ZWY+IGNsaXBwZWRTb3VyY2VDb250ZXh0KEFkb3B0Q0YsIENHQml0bWFwQ29udGV4dENyZWF0ZShi
dWZmZXIuZ2V0KCksIGNzdywgY3NoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgsIGJ5dGVzUGVyUm93LCBjb2xvclNwYWNl
LmdldCgpLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZExhc3QpKTsKKyAgICAgICAgQ0dDb250
ZXh0VHJhbnNsYXRlQ1RNKGNsaXBwZWRTb3VyY2VDb250ZXh0LmdldCgpLCAtc3JjUmVjdC54KCks
IC1zcmNSZWN0LnkoKSk7CisgICAgICAgIENHQ29udGV4dERyYXdJbWFnZShjbGlwcGVkU291cmNl
Q29udGV4dC5nZXQoKSwgQ0dSZWN0TWFrZSgwLCAwLCBpdywgaWgpLCBpbWFnZS5nZXQoKSk7Cisg
ICAgICAgIAorICAgICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY2xpcHBlZFNvdXJjZUltYWdl
KEFkb3B0Q0YsIENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdlKGNsaXBwZWRTb3VyY2VDb250ZXh0
LmdldCgpKSk7CisgICAgICAgIAorICAgICAgICBDR0NvbnRleHREcmF3SW1hZ2UocGxhdGZvcm1D
b250ZXh0LCBkZXN0UmVjdCwgY2xpcHBlZFNvdXJjZUltYWdlLmdldCgpKTsKKyAgICB9CiB9Ci0g
ICAgCisKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFw
aGljc0NvbnRleHRRdC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNz
Q29udGV4dFF0LmNwcAppbmRleCAwZDkxNjMwLi42Zjk3YTk3IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcAorKysgYi9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcApAQCAtOTI5LDYgKzky
OSwxNSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cGFpbnRCdWZmZXIoSW1hZ2VCdWZmZXIqIGJ1
ZmZlciwgY29uc3QgSW50UmVjdCYgcikKICAgICBwYWludGVyLT5zZXRCYWNrZ3JvdW5kKGN1cnJl
bnRCYWNrZ3JvdW5kKTsKIH0KIAordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZShJbWFn
ZUJ1ZmZlciogYnVmZmVyLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QpCit7CisgICAgUVBhaW50ZXIqIHBhaW50ZXIgPSBzdGF0aWNfY2FzdDxRUGFp
bnRlcio+KHBsYXRmb3JtQ29udGV4dCgpKTsKKyAgICBRUGl4bWFwIHB4ID0gKmJ1ZmZlci0+cGl4
bWFwKCk7CisgICAgaWYgKHB4LmlzTnVsbCgpKQorICAgICAgICByZXR1cm47CisgICAgcGFpbnRl
ci0+ZHJhd1BpeG1hcChkc3RSZWN0LCBweCwgc3JjUmVjdCk7Cit9CisKIH0KIAogLy8gdmltOiB0
cz00IHN3PTQgZXQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>19166</attachid>
            <date>2008-02-16 21:02:35 -0800</date>
            <delta_ts>2008-02-23 16:52:02 -0800</delta_ts>
            <desc>A tiny little tidy up</desc>
            <filename>dirty-rect-tidy.patch</filename>
            <type>text/plain</type>
            <size>6144</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MDMxNzhmYi4uZGVhZWUwMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAwOC0wMi0xNiAgT2xpdmVyIEh1bnQg
IDxvbGl2ZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEJ1ZyAxNzI2OTogRGVvYmZ1c2NhdGUgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJELmNwcAorCisgICAgICAgIFVzZSBjcm9zcy1wbGF0Zm9ybSBjb2RlIHRvIGRldGVybWluZSB0
aGUgZGlydHkgcmVjdHMgZm9yCisgICAgICAgIGZpbGwgYW5kIHN0cm9rZSBvcGVyYXRpb25zCisK
KyAgICAgICAgKiBodG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZpbGwpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzdHJva2UpOgorICAgICAgICAgIEFkZGVkIGEg
RklYTUUgYXMgY29kZSBpbnNwZWN0aW9uIHNob3dzIGEgdHJpdmlhbCB1bmRlci1wYWludGluZwor
ICAgICAgICAgIGJ1ZywgYWx0aG91Z2ggd2UgY3VycmVudGx5IGlnbm9yZSBkaXJ0eSByZWN0IHRy
YWNraW5nIG9uIGNhbnZhcworICAgICAgICAgIGFuZCByZXBhaW50IHRoZSB3aG9sZSB0aGluZyBh
bnl3YXkuCisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZpbGxS
ZWN0KToKKwogMjAwOC0wMi0xNiAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJz
LmNvbT4KIAogICAgICAgICB3eCBidWlsZCBmaXguCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBiL1dlYkNvcmUvaHRtbC9DYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQuY3BwCmluZGV4IGFhYjBjMGIuLmY1ZGU2MTAgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvaHRtbC9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9D
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCkBAIC00NjgsMTQgKzQ2OCwxMyBAQCB2b2lkIENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZmlsbCgpCiAgICAgR3JhcGhpY3NDb250ZXh0KiBjID0g
ZHJhd2luZ0NvbnRleHQoKTsKICAgICBpZiAoIWMpCiAgICAgICAgIHJldHVybjsKLSAgICAvLyBG
SVhNRTogRG8gdGhpcyB0aHJvdWdoIHBsYXRmb3JtLWluZGVwZW5kZW50IEdyYXBoaWNzQ29udGV4
dCBBUEkuCi0jaWYgUExBVEZPUk0oQ0cpCi0gICAgQ0dDb250ZXh0QmVnaW5QYXRoKGMtPnBsYXRm
b3JtQ29udGV4dCgpKTsKLSAgICBDR0NvbnRleHRBZGRQYXRoKGMtPnBsYXRmb3JtQ29udGV4dCgp
LCBzdGF0ZSgpLm1fcGF0aC5wbGF0Zm9ybVBhdGgoKSk7CiAKKyAgICBjLT5iZWdpblBhdGgoKTsK
KyAgICBjLT5hZGRQYXRoKHN0YXRlKCkubV9wYXRoKTsKICAgICBpZiAoIXN0YXRlKCkubV9wYXRo
LmlzRW1wdHkoKSkKLSAgICAgICAgd2lsbERyYXcoQ0dDb250ZXh0R2V0UGF0aEJvdW5kaW5nQm94
KGMtPnBsYXRmb3JtQ29udGV4dCgpKSk7CisgICAgICAgIHdpbGxEcmF3KHN0YXRlKCkubV9wYXRo
LmJvdW5kaW5nUmVjdCgpKTsKIAorI2lmIFBMQVRGT1JNKENHKQogICAgIGlmIChzdGF0ZSgpLm1f
ZmlsbFN0eWxlLT5ncmFkaWVudCgpKSB7CiAgICAgICAgIC8vIFNoYWRpbmcgd29ya3Mgb24gdGhl
IGVudGlyZSBjbGlwIHJlZ2lvbiwgc28gY29udmVydCB0aGUgY3VycmVudCBwYXRoIHRvIGEgY2xp
cC4KICAgICAgICAgYy0+c2F2ZSgpOwpAQCAtNDkwLDcgKzQ4OSw2IEBAIHZvaWQgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpmaWxsKCkKICNlbGlmIFBMQVRGT1JNKFFUKQogICAgIFFQYWludGVy
UGF0aCogcGF0aCA9IHN0YXRlKCkubV9wYXRoLnBsYXRmb3JtUGF0aCgpOwogICAgIFFQYWludGVy
KiBwID0gc3RhdGljX2Nhc3Q8UVBhaW50ZXIqPihjLT5wbGF0Zm9ybUNvbnRleHQoKSk7Ci0gICAg
d2lsbERyYXcocGF0aC0+Y29udHJvbFBvaW50UmVjdCgpKTsKICAgICBpZiAoc3RhdGUoKS5tX2Zp
bGxTdHlsZS0+Z3JhZGllbnQoKSkgewogICAgICAgICBwLT5maWxsUGF0aCgqcGF0aCwgUUJydXNo
KCooc3RhdGUoKS5tX2ZpbGxTdHlsZS0+Z3JhZGllbnQoKS0+cGxhdGZvcm1TaGFkaW5nKCkpKSk7
CiAgICAgfSBlbHNlIHsKQEAgLTUwMSwxNSArNDk5LDEzIEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEOjpmaWxsKCkKICNlbGlmIFBMQVRGT1JNKENBSVJPKQogICAgIGNhaXJvX3QqIGNy
ID0gYy0+cGxhdGZvcm1Db250ZXh0KCk7CiAgICAgY2Fpcm9fc2F2ZShjcik7Ci0gICAgd2lsbERy
YXcoc3RhdGUoKS5tX3BhdGguYm91bmRpbmdSZWN0KCkpOworCiAgICAgaWYgKHN0YXRlKCkubV9m
aWxsU3R5bGUtPmdyYWRpZW50KCkpIHsKICAgICAgICAgY2Fpcm9fc2V0X3NvdXJjZShjciwgc3Rh
dGUoKS5tX2ZpbGxTdHlsZS0+Z3JhZGllbnQoKS0+cGxhdGZvcm1TaGFkaW5nKCkpOwotICAgICAg
ICBjLT5hZGRQYXRoKHN0YXRlKCkubV9wYXRoKTsKICAgICAgICAgY2Fpcm9fZmlsbChjcik7CiAg
ICAgfSBlbHNlIHsKICAgICAgICAgaWYgKHN0YXRlKCkubV9maWxsU3R5bGUtPnBhdHRlcm4oKSkK
ICAgICAgICAgICAgIGFwcGx5RmlsbFBhdHRlcm4oKTsKLSAgICAgICAgYy0+YWRkUGF0aChzdGF0
ZSgpLm1fcGF0aCk7CiAgICAgICAgIGNhaXJvX2ZpbGwoY3IpOwogICAgIH0KICAgICBjYWlyb19y
ZXN0b3JlKGNyKTsKQEAgLTUyMywxOCArNTE5LDIwIEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEOjpzdHJva2UoKQogICAgIEdyYXBoaWNzQ29udGV4dCogYyA9IGRyYXdpbmdDb250ZXh0
KCk7CiAgICAgaWYgKCFjKQogICAgICAgICByZXR1cm47Ci0gICAgLy8gRklYTUU6IERvIHRoaXMg
dGhyb3VnaCBwbGF0Zm9ybS1pbmRlcGVuZGVudCBHcmFwaGljc0NvbnRleHQgQVBJLgotI2lmIFBM
QVRGT1JNKENHKQogICAgIENHQ29udGV4dEJlZ2luUGF0aChjLT5wbGF0Zm9ybUNvbnRleHQoKSk7
CiAgICAgQ0dDb250ZXh0QWRkUGF0aChjLT5wbGF0Zm9ybUNvbnRleHQoKSwgc3RhdGUoKS5tX3Bh
dGgucGxhdGZvcm1QYXRoKCkpOwogCiAgICAgaWYgKCFzdGF0ZSgpLm1fcGF0aC5pc0VtcHR5KCkp
IHsKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgaW5zdWZmaWNpZW50LCBuZWVkIHRvIHVzZSBD
R0NvbnRleHRSZXBsYWNlUGF0aFdpdGhTdHJva2VkUGF0aCB0byBleHBhbmQgdG8gcmVxdWlyZWQg
Ym91bmRzCiAgICAgICAgIGZsb2F0IGxpbmVXaWR0aCA9IHN0YXRlKCkubV9saW5lV2lkdGg7Ci0g
ICAgICAgIGZsb2F0IGluc2V0ID0gLWxpbmVXaWR0aCAvIDI7Ci0gICAgICAgIENHUmVjdCBib3Vu
ZGluZ1JlY3QgPSBDR1JlY3RJbnNldChDR0NvbnRleHRHZXRQYXRoQm91bmRpbmdCb3goYy0+cGxh
dGZvcm1Db250ZXh0KCkpLCBpbnNldCwgaW5zZXQpOworICAgICAgICBmbG9hdCBpbnNldCA9IGxp
bmVXaWR0aCAvIDI7CisgICAgICAgIEZsb2F0UmVjdCBib3VuZGluZ1JlY3QgPSBzdGF0ZSgpLm1f
cGF0aC5ib3VuZGluZ1JlY3QoKTsKKyAgICAgICAgYm91bmRpbmdSZWN0LmluZmxhdGUoaW5zZXQp
OwogICAgICAgICB3aWxsRHJhdyhib3VuZGluZ1JlY3QpOwogICAgIH0KLQorICAgIAorICAgIC8v
IEZJWE1FOiBEbyB0aGlzIHRocm91Z2ggcGxhdGZvcm0taW5kZXBlbmRlbnQgR3JhcGhpY3NDb250
ZXh0IEFQSS4KKyNpZiBQTEFURk9STShDRykKICAgICBpZiAoc3RhdGUoKS5tX3N0cm9rZVN0eWxl
LT5ncmFkaWVudCgpKSB7CiAgICAgICAgIC8vIFNoYWRpbmcgd29ya3Mgb24gdGhlIGVudGlyZSBj
bGlwIHJlZ2lvbiwgc28gY29udmVydCB0aGUgY3VycmVudCBwYXRoIHRvIGEgY2xpcC4KICAgICAg
ICAgYy0+c2F2ZSgpOwpAQCAtNTUwLDcgKzU0OCw2IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEOjpzdHJva2UoKQogI2VsaWYgUExBVEZPUk0oUVQpCiAgICAgUVBhaW50ZXJQYXRoKiBw
YXRoID0gc3RhdGUoKS5tX3BhdGgucGxhdGZvcm1QYXRoKCk7CiAgICAgUVBhaW50ZXIqIHAgPSBz
dGF0aWNfY2FzdDxRUGFpbnRlcio+KGMtPnBsYXRmb3JtQ29udGV4dCgpKTsKLSAgICB3aWxsRHJh
dyhwYXRoLT5jb250cm9sUG9pbnRSZWN0KCkpOwogICAgIGlmIChzdGF0ZSgpLm1fc3Ryb2tlU3R5
bGUtPmdyYWRpZW50KCkpIHsKICAgICAgICAgcC0+c2F2ZSgpOwogICAgICAgICBwLT5zZXRCcnVz
aCgqKHN0YXRlKCkubV9zdHJva2VTdHlsZS0+Z3JhZGllbnQoKS0+cGxhdGZvcm1TaGFkaW5nKCkp
KTsKQEAgLTU2NCw4ICs1NjEsNiBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c3Ry
b2tlKCkKICNlbGlmIFBMQVRGT1JNKENBSVJPKQogICAgIGNhaXJvX3QqIGNyID0gYy0+cGxhdGZv
cm1Db250ZXh0KCk7CiAgICAgY2Fpcm9fc2F2ZShjcik7Ci0gICAgLy8gRklYTUU6IGNvbnNpZGVy
IGluc2V0LCBhcyBpbiBDRwotICAgIHdpbGxEcmF3KHN0YXRlKCkubV9wYXRoLmJvdW5kaW5nUmVj
dCgpKTsKICAgICBpZiAoc3RhdGUoKS5tX3N0cm9rZVN0eWxlLT5ncmFkaWVudCgpKSB7CiAgICAg
ICAgIGNhaXJvX3NldF9zb3VyY2UoY3IsIHN0YXRlKCkubV9zdHJva2VTdHlsZS0+Z3JhZGllbnQo
KS0+cGxhdGZvcm1TaGFkaW5nKCkpOwogICAgICAgICBjLT5hZGRQYXRoKHN0YXRlKCkubV9wYXRo
KTsKQEAgLTYzMywxMiArNjI4LDEyIEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpm
aWxsUmVjdChmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpCiAgICAgR3Jh
cGhpY3NDb250ZXh0KiBjID0gZHJhd2luZ0NvbnRleHQoKTsKICAgICBpZiAoIWMpCiAgICAgICAg
IHJldHVybjsKLSAgICAvLyBGSVhNRTogRG8gdGhpcyB0aHJvdWdoIHBsYXRmb3JtLWluZGVwZW5k
ZW50IEdyYXBoaWNzQ29udGV4dCBBUEkuCi0jaWYgUExBVEZPUk0oQ0cpCi0gICAgQ0dSZWN0IHJl
Y3QgPSBDR1JlY3RNYWtlKHgsIHksIHdpZHRoLCBoZWlnaHQpOwogCisgICAgRmxvYXRSZWN0IHJl
Y3QoeCwgeSwgd2lkdGgsIGhlaWdodCk7CiAgICAgd2lsbERyYXcocmVjdCk7CiAKKyAgICAvLyBG
SVhNRTogRG8gdGhpcyB0aHJvdWdoIHBsYXRmb3JtLWluZGVwZW5kZW50IEdyYXBoaWNzQ29udGV4
dCBBUEkuCisjaWYgUExBVEZPUk0oQ0cpCiAgICAgaWYgKHN0YXRlKCkubV9maWxsU3R5bGUtPmdy
YWRpZW50KCkpIHsKICAgICAgICAgLy8gU2hhZGluZyB3b3JrcyBvbiB0aGUgZW50aXJlIGNsaXAg
cmVnaW9uLCBzbyBjb252ZXJ0IHRoZSByZWN0IHRvIGEgY2xpcC4KICAgICAgICAgYy0+c2F2ZSgp
OwpAQCAtNjUxLDggKzY0Niw2IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpmaWxs
UmVjdChmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpCiAgICAgICAgIENH
Q29udGV4dEZpbGxSZWN0KGMtPnBsYXRmb3JtQ29udGV4dCgpLCByZWN0KTsKICAgICB9CiAjZWxp
ZiBQTEFURk9STShRVCkKLSAgICBRUmVjdEYgcmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKLSAg
ICB3aWxsRHJhdyhyZWN0KTsKICAgICBRUGFpbnRlciogcCA9IHN0YXRpY19jYXN0PFFQYWludGVy
Kj4oYy0+cGxhdGZvcm1Db250ZXh0KCkpOwogICAgIGlmIChzdGF0ZSgpLm1fZmlsbFN0eWxlLT5n
cmFkaWVudCgpKSB7CiAgICAgICAgIHAtPmZpbGxSZWN0KHJlY3QsIFFCcnVzaCgqKHN0YXRlKCku
bV9maWxsU3R5bGUtPmdyYWRpZW50KCktPnBsYXRmb3JtU2hhZGluZygpKSkpOwpAQCAtNjYyLDgg
KzY1NSw2IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpmaWxsUmVjdChmbG9hdCB4
LCBmbG9hdCB5LCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpCiAgICAgICAgIHAtPmZpbGxSZWN0KHJl
Y3QsIHAtPmJydXNoKCkpOwogICAgIH0KICNlbGlmIFBMQVRGT1JNKENBSVJPKQotICAgIEZsb2F0
UmVjdCByZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpOwotICAgIHdpbGxEcmF3KHJlY3QpOwogICAg
IGNhaXJvX3QqIGNyID0gYy0+cGxhdGZvcm1Db250ZXh0KCk7CiAgICAgY2Fpcm9fc2F2ZShjcik7
CiAgICAgaWYgKHN0YXRlKCkubV9maWxsU3R5bGUtPmdyYWRpZW50KCkpIHsK
</data>

          </attachment>
      

    </bug>

</bugzilla>