<?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>20520</bug_id>
          
          <creation_ts>2008-08-25 22:36:03 -0700</creation_ts>
          <short_desc>GraphicsContext needs to support Gradients and Patterns part2</short_desc>
          <delta_ts>2008-08-27 03:43:18 -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>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>20373</dup_id>
          
          <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>20373</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Eric Seidel (no email)">eric</assigned_to>
          <cc>krit</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>89344</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-08-25 22:36:03 -0700</bug_when>
    <thetext>This is just a place for me to post patches for 20373 without turning that bug into a bajillion patches long.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>89345</commentid>
    <comment_count>1</comment_count>
      <attachid>22991</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-08-25 22:36:37 -0700</bug_when>
    <thetext>Created attachment 22991
A bit further with the patch for krit

 WebCore/WebCore.xcodeproj/project.pbxproj          |    4 +
 .../js/JSCanvasRenderingContext2DCustom.cpp        |    4 +-
 WebCore/css/CSSGradientValue.cpp                   |   10 +-
 WebCore/css/CSSGradientValue.h                     |    2 +-
 WebCore/html/CanvasGradient.cpp                    |    4 +-
 WebCore/html/CanvasGradient.h                      |    8 +-
 WebCore/html/CanvasPattern.cpp                     |    2 +-
 WebCore/html/CanvasPattern.h                       |    6 +-
 WebCore/html/CanvasRenderingContext2D.cpp          |  195 +-------------------
 WebCore/html/CanvasRenderingContext2D.h            |    6 -
 WebCore/html/CanvasStyle.cpp                       |    6 +
 WebCore/html/CanvasStyle.h                         |    3 +-
 WebCore/platform/graphics/GeneratedImage.h         |   10 +-
 WebCore/platform/graphics/Generator.h              |    4 +-
 WebCore/platform/graphics/Gradient.h               |   14 ++-
 WebCore/platform/graphics/GraphicsContext.cpp      |   38 +++-
 WebCore/platform/graphics/GraphicsContext.h        |   38 +++--
 WebCore/platform/graphics/GraphicsContextPrivate.h |   33 +++-
 WebCore/platform/graphics/Path.h                   |    8 +-
 WebCore/platform/graphics/Pattern.h                |   15 +-
 .../graphics/cairo/GraphicsContextCairo.cpp        |   17 ++-
 WebCore/platform/graphics/cg/GraphicsContextCG.cpp |  107 ++++++++++--
 WebCore/platform/graphics/qt/GraphicsContextQt.cpp |   28 ++--
 WebCore/platform/graphics/wx/GraphicsContextWx.cpp |   16 +-
 24 files changed, 281 insertions(+), 297 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>89346</commentid>
    <comment_count>2</comment_count>
      <attachid>22992</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-08-25 22:36:40 -0700</bug_when>
    <thetext>Created attachment 22992
Update SVG to use new fill/stroke functions

 .../JavaScriptCore.xcodeproj/project.pbxproj       |    3 --
 WebCore/svg/graphics/SVGPaintServer.h              |    7 ----
 WebCore/svg/graphics/cg/SVGPaintServerCg.cpp       |   32 +------------------
 .../svg/graphics/cg/SVGPaintServerGradientCg.cpp   |   14 ++------
 4 files changed, 6 insertions(+), 50 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>89347</commentid>
    <comment_count>3</comment_count>
      <attachid>22993</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-08-25 22:36:43 -0700</bug_when>
    <thetext>Created attachment 22993
Attempt to make SVG work with Gradient

 WebCore/platform/graphics/Gradient.h               |    2 +-
 WebCore/platform/graphics/GraphicsContext.cpp      |   30 ++++
 WebCore/platform/graphics/GraphicsContext.h        |    1 +
 WebCore/platform/graphics/GraphicsTypes.h          |    2 +-
 WebCore/platform/graphics/cg/GraphicsContextCG.cpp |   78 +++++++---
 WebCore/rendering/SVGRenderTreeAsText.cpp          |    1 -
 WebCore/svg/GradientAttributes.h                   |   14 ++-
 WebCore/svg/LinearGradientAttributes.h             |   15 ++-
 WebCore/svg/RadialGradientAttributes.h             |   15 ++-
 WebCore/svg/SVGGradientElement.cpp                 |    2 +-
 WebCore/svg/SVGLinearGradientElement.cpp           |    9 +-
 WebCore/svg/SVGLinearGradientElement.h             |    2 -
 WebCore/svg/SVGRadialGradientElement.cpp           |    5 +-
 WebCore/svg/graphics/SVGPaintServer.h              |    2 +-
 WebCore/svg/graphics/SVGPaintServerGradient.cpp    |   17 +--
 WebCore/svg/graphics/SVGPaintServerGradient.h      |   39 +----
 .../svg/graphics/cg/SVGPaintServerGradientCg.cpp   |  163 ++------------------
 17 files changed, 156 insertions(+), 241 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>89348</commentid>
    <comment_count>4</comment_count>
      <attachid>22994</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-08-25 22:36:46 -0700</bug_when>
    <thetext>Created attachment 22994
Attempt to clean up SVG gradient code

 WebCore/platform/graphics/FloatSize.h              |    6 +
 WebCore/svg/graphics/SVGPaintServerGradient.h      |    3 -
 .../svg/graphics/cg/SVGPaintServerGradientCg.cpp   |  164 ++++++++++----------
 3 files changed, 90 insertions(+), 83 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>89349</commentid>
    <comment_count>5</comment_count>
      <attachid>22995</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-08-25 22:36:48 -0700</bug_when>
    <thetext>Created attachment 22995
Make Gradients not crash for &lt;canvas&gt;

 WebCore/platform/graphics/cg/GraphicsContextCG.cpp |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>89350</commentid>
    <comment_count>6</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2008-08-25 23:04:49 -0700</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of 20373 ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>89440</commentid>
    <comment_count>7</comment_count>
      <attachid>23011</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-08-26 17:58:02 -0700</bug_when>
    <thetext>Created attachment 23011
Fix SVG Gradients -- we only regress 3 tests now

 WebCore/platform/graphics/cg/GraphicsContextCG.cpp |    2 +-
 WebCore/svg/RadialGradientAttributes.h             |    6 +++---
 .../svg/graphics/cg/SVGPaintServerGradientCg.cpp   |   20 +++++++++++++-------
 3 files changed, 17 insertions(+), 11 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>89441</commentid>
    <comment_count>8</comment_count>
      <attachid>23012</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-08-26 17:58:04 -0700</bug_when>
    <thetext>Created attachment 23012
Make more of the CG code cross-platform

 WebCore/svg/graphics/cg/CgSupport.cpp              |   93 +++++++++++---------
 WebCore/svg/graphics/cg/CgSupport.h                |   16 ++--
 WebCore/svg/graphics/cg/RenderPathCg.cpp           |   23 ++---
 .../svg/graphics/cg/SVGPaintServerGradientCg.cpp   |    5 +-
 WebCore/svg/graphics/cg/SVGResourceClipperCg.cpp   |   49 +++++------
 5 files changed, 90 insertions(+), 96 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>89451</commentid>
    <comment_count>9</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2008-08-26 23:26:56 -0700</bug_when>
    <thetext>Tested it on Cairo. Only copied the whole code of Cg to Cairo. Works great. I had to modify applyStrokeStyleToContext() a bit but thats all. applyStrokeStyleToContext(), makeMapBetweenRects(), handleBoundingBoxModeAndGradientTransformation() and renderPath() can be moved to a more global class.

Only problem: We have to reset the CTM after drawing a gradient with boundingbox, otherwise you get a very big stroke if you apply a stroke to the shape (At least in Cairo).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>89459</commentid>
    <comment_count>10</comment_count>
      <attachid>23017</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-08-27 01:25:59 -0700</bug_when>
    <thetext>Created attachment 23017
Fix flipped fill and stroke for canvas

 WebCore/html/CanvasStyle.cpp |    8 ++++----
 1 files changed, 4 insertions(+), 4 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>89460</commentid>
    <comment_count>11</comment_count>
      <attachid>23018</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-08-27 01:26:01 -0700</bug_when>
    <thetext>Created attachment 23018
Fix SVG radial gradients to pass full-pservers-grad-13-b.html

 WebCore/svg/RadialGradientAttributes.h   |   17 ++++++++++++++++-
 WebCore/svg/SVGRadialGradientElement.cpp |    1 +
 2 files changed, 17 insertions(+), 1 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>89461</commentid>
    <comment_count>12</comment_count>
      <attachid>23019</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-08-27 01:26:04 -0700</bug_when>
    <thetext>Created attachment 23019
Fix SVG gradients to pass full-pservers-grad-16-b.html

 WebCore/svg/GradientAttributes.h |   10 ++++++++--
 1 files changed, 8 insertions(+), 2 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>89462</commentid>
    <comment_count>13</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-08-27 01:41:09 -0700</bug_when>
    <thetext>http://www.w3.org/Graphics/SVG/Test/20061213/htmlEmbedHarness/full-pservers-grad-17-b.html is still broken even with these patches.  I&apos;m not sure why it&apos;s broken.  I&apos;m also not sure I care.  As soon as I fix the &lt;canvas&gt; stuff to work with patterns, I plan to break out the &lt;canvas&gt; pieces of these patches into a coherent patch and post it for review.  The SVG stuff can come later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>89463</commentid>
    <comment_count>14</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-08-27 02:28:56 -0700</bug_when>
    <thetext>I ran this canvas test suite I found online:
http://philip.html5.org/tests/canvas/suite/tests/

http://philip.html5.org/tests/canvas/suite/tests/reportgen.html?10000,0

And this is the difference in test output result I get between Safari 4.0dp and Safari 4.0dp + my patched canvas:

I/we need to investigate each of the new fails needs to be investigated before I&apos;m ready to post this patch for review.

I guess more interesting would be to compare before this patch and after this patch, instead of Safari 4.0dp vs. TOT + this patch.

--- old_canvas_status.txt	2008-08-27 02:22:54.000000000 -0700
+++ new_canvas_status.txt	2008-08-27 02:21:52.000000000 -0700
@@ -1,4 +1,4 @@
-- ua: &quot;Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_4; en-us) AppleWebKit/526.11 (KHTML, like Gecko) Version/4.0dp1 Safari/526.11.2&quot;
+- ua: &quot;Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_4; en-us) AppleWebKit/528.2+ (KHTML, like Gecko) Version/4.0dp1 Safari/526.11.2&quot;
   results:
   - id: fallback.basic
     status: PASS
@@ -20,7 +20,7 @@
     notes: &apos;%3Cli%3EPassed%3C/li%3E&apos;
   - id: type.prototype
     status: FAIL
-    notes: &apos;%3Cli%3EFailed%20assertion%3A%20window.HTMLCanvasElement.prototype%3C/li%3E%3Cli%3EFailed%20assertion%3A%20window.HTMLCanvasElement.prototype%3C/li%3E%3Cli%3EAborted%20with%20exception%3A%20Undefined%20value%3C/li%3E&apos;
+    notes: &apos;%3Cli%3EFailed%20assertion%3A%20window.HTMLCanvasElement.prototype%3C/li%3E%3Cli%3EFailed%20assertion%3A%20window.HTMLCanvasElement.prototype%3C/li%3E%3Cli%3EAborted%20with%20exception%3A%20Result%20of%20expression%20%27window.HTMLCanvasElement.prototype%27%20%5Bundefined%5D%20is%20not%20an%20object.%3C/li%3E&apos;
   - id: type.replace
     status: PASS
     notes: &apos;%3Cli%3EPassed%3C/li%3E&apos;
@@ -118,8 +118,8 @@
     status: PASS
     notes: &apos;%3Cli%3EPassed%3C/li%3E&apos;
   - id: initial.reset.gradient
-    status: PASS
-    notes: &apos;%3Cli%3EPassed%3C/li%3E&apos;
+    status: FAIL
+    notes: &apos;%3Cli%3EFailed%20assertion%3A%20got%20pixel%20%5B255%2C0%2C0%2C255%5D%20at%20%2850%2C25%29%2C%20expected%20%5B0%2C255%2C0%2C255%5D%3C/li%3E&apos;
   - id: initial.reset.pattern
     status: PASS
     notes: &apos;%3Cli%3EPassed%3C/li%3E&apos;
@@ -175,38 +175,38 @@
     status: PASS
     notes: &apos;%3Cli%3EPassed%3C/li%3E&apos;
   - id: security.drawImage.image
-    status: PASS
-    notes: &apos;%3Cli%3EPassed%3C/li%3E&apos;
+    status: FAIL
+    notes: &apos;%3Cli%3EFailed%20assertion%3A%20should%20throw%20exception%3A%20canvas.toDataURL%28%29%3C/li%3E%3Cli%3EFailed%20assertion%3A%20should%20throw%20exception%3A%20ctx.getImageData%280%2C%200%2C%201%2C%201%29%3C/li%3E&apos;
   - id: security.drawImage.canvas
-    status: PASS
-    notes: &apos;%3Cli%3EPassed%3C/li%3E&apos;
+    status: FAIL
+    notes: &apos;%3Cli%3EFailed%20assertion%3A%20should%20throw%20exception%3A%20canvas.toDataURL%28%29%3C/li%3E%3Cli%3EFailed%20assertion%3A%20should%20throw%20exception%3A%20ctx.getImageData%280%2C%200%2C%201%2C%201%29%3C/li%3E&apos;
   - id: security.pattern.create
     status: PASS
     notes: &apos;%3Cli%3EPassed%3C/li%3E&apos;
   - id: security.pattern.cross
-    status: PASS
-    notes: &apos;%3Cli%3EPassed%3C/li%3E&apos;
+    status: FAIL
+    notes: &apos;%3Cli%3EAborted%20with%20exception%3A%20INVALID_STATE_ERR%3A%20DOM%20Exception%2011%3C/li%3E&apos;
   - id: security.pattern.canvas.timing
     status: PASS
     notes: &apos;%3Cli%3EPassed%3C/li%3E&apos;
   - id: security.pattern.image.fillStyle
-    status: PASS
-    notes: &apos;%3Cli%3EPassed%3C/li%3E&apos;
+    status: FAIL
+    notes: &apos;%3Cli%3EAborted%20with%20exception%3A%20INVALID_STATE_ERR%3A%20DOM%20Exception%2011%3C/li%3E&apos;
   - id: security.pattern.canvas.fillStyle
     status: FAIL
     notes: &apos;%3Cli%3EFailed%20assertion%3A%20should%20throw%20exception%3A%20canvas.toDataURL%28%29%3C/li%3E%3Cli%3EFailed%20assertion%3A%20should%20throw%20exception%3A%20ctx.getImageData%280%2C%200%2C%201%2C%201%29%3C/li%3E&apos;
   - id: security.pattern.image.strokeStyle
-    status: PASS
-    notes: &apos;%3Cli%3EPassed%3C/li%3E&apos;
+    status: FAIL
+    notes: &apos;%3Cli%3EAborted%20with%20exception%3A%20INVALID_STATE_ERR%3A%20DOM%20Exception%2011%3C/li%3E&apos;
   - id: security.pattern.canvas.strokeStyle
-    status: PASS
-    notes: &apos;%3Cli%3EPassed%3C/li%3E&apos;
+    status: FAIL
+    notes: &apos;%3Cli%3EFailed%20assertion%3A%20should%20throw%20exception%3A%20canvas.toDataURL%28%29%3C/li%3E%3Cli%3EFailed%20assertion%3A%20should%20throw%20exception%3A%20ctx.getImageData%280%2C%200%2C%201%2C%201%29%3C/li%3E&apos;
   - id: security.dataURI
     status: FAIL
     notes: &apos;%3Cli%3EAborted%20with%20exception%3A%20SECURITY_ERR%3A%20DOM%20Exception%2018%3C/li%3E&apos;
   - id: security.reset
-    status: PASS
-    notes: &apos;%3Cli%3EPassed%3C/li%3E&apos;
+    status: FAIL
+    notes: &apos;%3Cli%3EFailed%20assertion%3A%20should%20throw%20exception%3A%20canvas.toDataURL%28%29%3C/li%3E%3Cli%3EFailed%20assertion%3A%20should%20throw%20exception%3A%20canvas.toDataURL%28%29%3C/li%3E&apos;
   - id: 2d.getcontext.exists
     status: PASS
     notes: &apos;%3Cli%3EPassed%3C/li%3E&apos;
@@ -218,7 +218,7 @@
     notes: &apos;%3Cli%3EPassed%3C/li%3E&apos;
   - id: 2d.type.prototype
     status: FAIL
-    notes: &apos;%3Cli%3EFailed%20assertion%3A%20window.CanvasRenderingContext2D.prototype%3C/li%3E%3Cli%3EFailed%20assertion%3A%20window.CanvasRenderingContext2D.prototype%3C/li%3E%3Cli%3EAborted%20with%20exception%3A%20Undefined%20value%3C/li%3E&apos;
+    notes: &apos;%3Cli%3EFailed%20assertion%3A%20window.CanvasRenderingContext2D.prototype%3C/li%3E%3Cli%3EFailed%20assertion%3A%20window.CanvasRenderingContext2D.prototype%3C/li%3E%3Cli%3EAborted%20with%20exception%3A%20Result%20of%20expression%20%27window.CanvasRenderingContext2D.prototype%27%20%5Bundefined%5D%20is%20not%20an%20object.%3C/li%3E&apos;
   - id: 2d.type.replace
     status: PASS
     notes: &apos;%3Cli%3EPassed%3C/li%3E&apos;
@@ -362,13 +362,13 @@
     notes: &apos;%3Cli%3EPassed%3C/li%3E&apos;
   - id: 2d.transformation.setTransform.skewed
     status: FAIL
-    notes: &apos;%3Cli%3EAborted%20with%20exception%3A%20Value%20undefined%20does%20not%20allow%20function%20calls.%3C/li%3E&apos;
+    notes: &apos;%3Cli%3EAborted%20with%20exception%3A%20Result%20of%20expression%20%27ctx.setTransform%27%20%5Bundefined%5D%20is%20not%20a%20function.%3C/li%3E&apos;
   - id: 2d.transformation.setTransform.multiple
     status: FAIL
-    notes: &apos;%3Cli%3EAborted%20with%20exception%3A%20Value%20undefined%20does%20not%20allow%20function%20calls.%3C/li%3E&apos;
+    notes: &apos;%3Cli%3EAborted%20with%20exception%3A%20Result%20of%20expression%20%27ctx.setTransform%27%20%5Bundefined%5D%20is%20not%20a%20function.%3C/li%3E&apos;
   - id: 2d.transformation.setTransform.nonfinite
     status: FAIL
-    notes: &apos;%3Cli%3EAborted%20with%20exception%3A%20Value%20undefined%20does%20not%20allow%20function%20calls.%3C/li%3E&apos;
+    notes: &apos;%3Cli%3EAborted%20with%20exception%3A%20Result%20of%20expression%20%27ctx.setTransform%27%20%5Bundefined%5D%20is%20not%20a%20function.%3C/li%3E&apos;
   - id: 2d.composite.globalAlpha.range
     status: PASS
     notes: &apos;%3Cli%3EPassed%3C/li%3E&apos;
@@ -460,17 +460,17 @@
     status: PASS
     notes: &apos;%3Cli%3EPassed%3C/li%3E&apos;
   - id: 2d.composite.image.source-over
-    status: PASS
-    notes: &apos;%3Cli%3EPassed%3C/li%3E&apos;
+    status: FAIL
+    notes: &apos;%3Cli%3EFailed%20assertion%3A%20got%20pixel%20%5B0%2C255%2C255%2C127%5D%20at%20%2850%2C25%29%2C%20expected%20%5B218%2C255%2C36%2C223%5D%20+/-%205%3C/li%3E&apos;
   - id: 2d.composite.image.destination-over
-    status: PASS
-    notes: &apos;%3Cli%3EPassed%3C/li%3E&apos;
+    status: FAIL
+    notes: &apos;%3Cli%3EFailed%20assertion%3A%20got%20pixel%20%5B0%2C255%2C255%2C127%5D%20at%20%2850%2C25%29%2C%20expected%20%5B109%2C255%2C145%2C223%5D%20+/-%205%3C/li%3E&apos;
   - id: 2d.composite.image.source-in
     status: PASS
     notes: &apos;%3Cli%3EPassed%3C/li%3E&apos;
   - id: 2d.composite.image.destination-in
-    status: PASS
-    notes: &apos;%3Cli%3EPassed%3C/li%3E&apos;
+    status: FAIL
+    notes: &apos;%3Cli%3EFailed%20assertion%3A%20got%20pixel%20%5B0%2C255%2C255%2C127%5D%20at%20%2850%2C25%29%2C%20expected%20%5B0%2C255%2C255%2C95%5D%20+/-%205%3C/li%3E&apos;
   - id: 2d.composite.image.source-out
     status: PASS
     notes: &apos;%3Cli%3EPassed%3C/li%3E&apos;
@@ -478,38 +478,38 @@
     status: PASS
     notes: &apos;%3Cli%3EPassed%3C/li%3E&apos;
   - id: 2d.composite.image.source-atop
-    status: PASS
-    notes: &apos;%3Cli%3EPassed%3C/li%3E&apos;
+    status: FAIL
+    notes: &apos;%3Cli%3EFailed%20assertion%3A%20got%20pixel%20%5B0%2C255%2C255%2C127%5D%20at%20%2850%2C25%29%2C%20expected%20%5B191%2C255%2C63%2C127%5D%20+/-%205%3C/li%3E&apos;
   - id: 2d.composite.image.destination-atop
-    status: PASS
-    notes: &apos;%3Cli%3EPassed%3C/li%3E&apos;
+    status: FAIL
+    notes: &apos;%3Cli%3EFailed%20assertion%3A%20got%20pixel%20%5B0%2C255%2C255%2C127%5D%20at%20%2850%2C25%29%2C%20expected%20%5B127%2C255%2C127%2C191%5D%20+/-%205%3C/li%3E&apos;
   - id: 2d.composite.image.xor
     status: PASS
     notes: &apos;%3Cli%3EPassed%3C/li%3E&apos;
   - id: 2d.composite.image.copy
-    status: PASS
-    notes: &apos;%3Cli%3EPassed%3C/li%3E&apos;
+    status: FAIL
+    notes: &apos;%3Cli%3EFailed%20assertion%3A%20got%20pixel%20%5B0%2C255%2C255%2C127%5D%20at%20%2850%2C25%29%2C%20expected%20%5B255%2C255%2C0%2C191%5D%20+/-%205%3C/li%3E&apos;
   - id: 2d.composite.image.lighter
-    status: PASS
-    notes: &apos;%3Cli%3EPassed%3C/li%3E&apos;
+    status: FAIL
+    notes: &apos;%3Cli%3EFailed%20assertion%3A%20got%20pixel%20%5B0%2C255%2C255%2C127%5D%20at%20%2850%2C25%29%2C%20expected%20%5B191%2C255%2C127%2C255%5D%20+/-%205%3C/li%3E&apos;
   - id: 2d.composite.canvas.source-over
-    status: PASS
-    notes: &apos;%3Cli%3EPassed%3C/li%3E&apos;
+    status: FAIL
+    notes: &apos;%3Cli%3EFailed%20assertion%3A%20got%20pixel%20%5B0%2C255%2C255%2C127%5D%20at%20%2850%2C25%29%2C%20expected%20%5B218%2C255%2C36%2C223%5D%20+/-%205%3C/li%3E&apos;
   - id: 2d.composite.canvas.destination-over
     status: FAIL
     notes: &apos;%3Cli%3EFailed%20assertion%3A%20got%20pixel%20%5B219%2C255%2C35%2C222%5D%20at%20%2850%2C25%29%2C%20expected%20%5B109%2C255%2C145%2C223%5D%20+/-%205%3C/li%3E&apos;
   - id: 2d.composite.canvas.source-in
     status: FAIL
-    notes: &apos;%3Cli%3EFailed%20assertion%3A%20got%20pixel%20%5B219%2C255%2C35%2C222%5D%20at%20%2850%2C25%29%2C%20expected%20%5B255%2C255%2C0%2C95%5D%20+/-%205%3C/li%3E&apos;
+    notes: &apos;%3Cli%3EFailed%20assertion%3A%20got%20pixel%20%5B0%2C255%2C255%2C127%5D%20at%20%2850%2C25%29%2C%20expected%20%5B255%2C255%2C0%2C95%5D%20+/-%205%3C/li%3E&apos;
   - id: 2d.composite.canvas.destination-in
     status: FAIL
-    notes: &apos;%3Cli%3EFailed%20assertion%3A%20got%20pixel%20%5B219%2C255%2C35%2C222%5D%20at%20%2850%2C25%29%2C%20expected%20%5B0%2C255%2C255%2C95%5D%20+/-%205%3C/li%3E&apos;
+    notes: &apos;%3Cli%3EFailed%20assertion%3A%20got%20pixel%20%5B0%2C255%2C255%2C127%5D%20at%20%2850%2C25%29%2C%20expected%20%5B0%2C255%2C255%2C95%5D%20+/-%205%3C/li%3E&apos;
   - id: 2d.composite.canvas.source-out
     status: FAIL
     notes: &apos;%3Cli%3EFailed%20assertion%3A%20got%20pixel%20%5B219%2C255%2C35%2C222%5D%20at%20%2850%2C25%29%2C%20expected%20%5B255%2C255%2C0%2C95%5D%20+/-%205%3C/li%3E&apos;
   - id: 2d.composite.canvas.destination-out
     status: FAIL
-    notes: &apos;%3Cli%3EFailed%20assertion%3A%20got%20pixel%20%5B219%2C255%2C35%2C222%5D%20at%20%2850%2C25%29%2C%20expected%20%5B0%2C255%2C255%2C31%5D%20+/-%205%3C/li%3E&apos;
+    notes: &apos;%3Cli%3EFailed%20assertion%3A%20got%20pixel%20%5B0%2C255%2C255%2C127%5D%20at%20%2850%2C25%29%2C%20expected%20%5B0%2C255%2C255%2C31%5D%20+/-%205%3C/li%3E&apos;
   - id: 2d.composite.canvas.source-atop
     status: FAIL
     notes: &apos;%3Cli%3EFailed%20assertion%3A%20got%20pixel%20%5B219%2C255%2C35%2C222%5D%20at%20%2850%2C25%29%2C%20expected%20%5B191%2C255%2C63%2C127%5D%20+/-%205%3C/li%3E&apos;
@@ -521,10 +521,10 @@
     notes: &apos;%3Cli%3EFailed%20assertion%3A%20got%20pixel%20%5B219%2C255%2C35%2C222%5D%20at%20%2850%2C25%29%2C%20expected%20%5B191%2C255%2C63%2C127%5D%20+/-%205%3C/li%3E&apos;
   - id: 2d.composite.canvas.copy
     status: FAIL
-    notes: &apos;%3Cli%3EFailed%20assertion%3A%20got%20pixel%20%5B219%2C255%2C35%2C222%5D%20at%20%2850%2C25%29%2C%20expected%20%5B255%2C255%2C0%2C191%5D%20+/-%205%3C/li%3E&apos;
+    notes: &apos;%3Cli%3EFailed%20assertion%3A%20got%20pixel%20%5B0%2C255%2C255%2C127%5D%20at%20%2850%2C25%29%2C%20expected%20%5B255%2C255%2C0%2C191%5D%20+/-%205%3C/li%3E&apos;
   - id: 2d.composite.canvas.lighter
     status: FAIL
-    notes: &apos;%3Cli%3EFailed%20assertion%3A%20got%20pixel%20%5B219%2C255%2C35%2C222%5D%20at%20%2850%2C25%29%2C%20expected%20%5B191%2C255%2C127%2C255%5D%20+/-%205%3C/li%3E&apos;
+    notes: &apos;%3Cli%3EFailed%20assertion%3A%20got%20pixel%20%5B0%2C255%2C255%2C127%5D%20at%20%2850%2C25%29%2C%20expected%20%5B191%2C255%2C127%2C255%5D%20+/-%205%3C/li%3E&apos;
   - id: 2d.composite.uncovered.fill.source-in
     status: FAIL
     notes: &apos;%3Cli%3EFailed%20assertion%3A%20got%20pixel%20%5B0%2C255%2C0%2C127%5D%20at%20%2850%2C25%29%2C%20expected%20%5B0%2C0%2C0%2C0%5D%20+/-%205%3C/li%3E&apos;
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>89464</commentid>
    <comment_count>15</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-08-27 03:40:18 -0700</bug_when>
    <thetext>Hot!  I&apos;ve fixed the issues in an upcoming patch.  We now supposedly pass 3 more tests than the last nightly did.  Although security.reset fails.  Investigating still.

http://philip.html5.org/tests/canvas/suite/tests/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>89465</commentid>
    <comment_count>16</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-08-27 03:41:11 -0700</bug_when>
    <thetext>security.reset actually passes when run individually.  I think it&apos;s a timing issue.
http://philip.html5.org/tests/canvas/suite/tests/security.reset.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>89466</commentid>
    <comment_count>17</comment_count>
      <attachid>23020</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-08-27 03:43:16 -0700</bug_when>
    <thetext>Created attachment 23020
Update a few copyright headers

 WebCore/html/CanvasRenderingContext2D.cpp          |    1 +
 WebCore/html/CanvasStyle.cpp                       |    1 +
 WebCore/platform/graphics/FloatSize.h              |    1 +
 WebCore/platform/graphics/cg/GraphicsContextCG.cpp |    1 +
 WebCore/svg/GradientAttributes.h                   |    3 +--
 WebCore/svg/LinearGradientAttributes.h             |    1 +
 WebCore/svg/RadialGradientAttributes.h             |    3 +--
 WebCore/svg/SVGLinearGradientElement.cpp           |    3 +--
 WebCore/svg/SVGRadialGradientElement.cpp           |    3 +--
 WebCore/svg/graphics/cg/CgSupport.cpp              |    1 +
 WebCore/svg/graphics/cg/CgSupport.h                |    1 +
 WebCore/svg/graphics/cg/SVGPaintServerCg.cpp       |    3 +--
 .../svg/graphics/cg/SVGPaintServerGradientCg.cpp   |    3 +--
 13 files changed, 13 insertions(+), 12 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>89467</commentid>
    <comment_count>18</comment_count>
      <attachid>23021</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-08-27 03:43:18 -0700</bug_when>
    <thetext>Created attachment 23021
Fix one more copy/paste error causing canvas tests to fail

 WebCore/platform/graphics/cg/GraphicsContextCG.cpp |   36 +++++++++----------
 1 files changed, 17 insertions(+), 19 deletions(-)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22991</attachid>
            <date>2008-08-25 22:36:37 -0700</date>
            <delta_ts>2008-08-25 22:36:37 -0700</delta_ts>
            <desc>A bit further with the patch for krit</desc>
            <filename>A-bit-further-with-the-patch-for-krit.patch</filename>
            <type>text/plain</type>
            <size>44030</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">MmVlY2FjYjEyNDZkYTUzMTgwZGI3OGFkMjQ5MWMwOTNkZGUyN2RlOApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwZWRjYTZhLi5jNDFmYzc5IDEwMDY0NAot
LS0gYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjI5Miw2ICsyMjkyLDcg
QEAKIAkJQTg4QUQ1MkYwOTUyNEI5MjAwMUREMTk2IC8qIFF1YXJ0ekNvcmUuZnJhbWV3b3JrIGlu
IEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTg1RDdBMkYw
ODc5RUJBOTAwNkE5MTcyIC8qIFF1YXJ0ekNvcmUuZnJhbWV3b3JrICovOyB9OwogCQlBODhERDQ4
NzBCNDYyOUEzMDBDMDI5OTAgLyogUGF0aFRyYXZlcnNhbFN0YXRlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODhERDQ4NjBCNDYyOUEzMDBDMDI5OTAg
LyogUGF0aFRyYXZlcnNhbFN0YXRlLmggKi87IH07CiAJCUE4OERENDg5MEI0NjI5QjAwMEMwMjk5
MCAvKiBQYXRoVHJhdmVyc2FsU3RhdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTg4REQ0ODgwQjQ2MjlCMDAwQzAyOTkwIC8qIFBhdGhUcmF2ZXJz
YWxTdGF0ZS5jcHAgKi87IH07CisJCUE4OEZFMzM0MEU1RUVFODcwMDhEOEMwRiAvKiBHcmFwaGlj
c0NvbnRleHRQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBODhGRTMzMzBFNUVFRTg3MDA4RDhDMEYgLyogR3JhcGhpY3NDb250ZXh0UHJpdmF0
ZS5oICovOyB9OwogCQlBODk5NDMyODBCNDIzMzg4MDBEN0M4MDIgLyogQml0bWFwSW1hZ2UuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4OTk0MzI2MEI0
MjMzODcwMEQ3QzgwMiAvKiBCaXRtYXBJbWFnZS5oICovOyB9OwogCQlBODk5NDMyOTBCNDIzMzg4
MDBEN0M4MDIgLyogQml0bWFwSW1hZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTg5OTQzMjcwQjQyMzM4NzAwRDdDODAyIC8qIEJpdG1hcEltYWdl
LmNwcCAqLzsgfTsKIAkJQThBOTA5QUMwQ0JDRDZCNTAwMjlCODA3IC8qIFJlbmRlclNWR1RyYW5z
Zm9ybWFibGVDb250YWluZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE4QTkwOUFBMENCQ0Q2QjUwMDI5QjgwNyAvKiBSZW5kZXJTVkdUcmFuc2Zvcm1h
YmxlQ29udGFpbmVyLmggKi87IH07CkBAIC02NjYxLDYgKzY2NjIsNyBAQAogCQlBODcxREZFMTBB
MTUzNzZCMDBCMTJBNjggLyogUmVuZGVyV2lkZ2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBSZW5kZXJXaWRnZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBODhERDQ4NjBCNDYyOUEzMDBDMDI5OTAgLyogUGF0aFRyYXZlcnNhbFN0YXRlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhdGhUcmF2ZXJzYWxTdGF0ZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBODhERDQ4ODBCNDYyOUIwMDBDMDI5OTAgLyog
UGF0aFRyYXZlcnNhbFN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFBhdGhUcmF2ZXJzYWxTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUE4OEZFMzMzMEU1RUVFODcwMDhEOEMwRiAvKiBHcmFwaGljc0NvbnRleHRQcml2YXRlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dFByaXZhdGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTg5OTQzMjYwQjQyMzM4NzAwRDdDODAyIC8q
IEJpdG1hcEltYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJpdG1hcElt
YWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4OTk0MzI3MEI0MjMzODcwMEQ3
QzgwMiAvKiBCaXRtYXBJbWFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBCaXRtYXBJbWFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QTkw
OUFBMENCQ0Q2QjUwMDI5QjgwNyAvKiBSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlclNWR1RyYW5zZm9ybWFibGVD
b250YWluZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyMjIwLDYgKzEyMjIy
LDcgQEAKIAkJCQlCMkMzREE1RjBEMDA2Q0Q2MDBFRjZGMjYgLyogR2x5cGhXaWR0aE1hcC5oICov
LAogCQkJCUJDNTNDNjA3MERBNTZDNTcwMDIxRUI1RCAvKiBHcmFkaWVudC5jcHAgKi8sCiAJCQkJ
QkM1M0M1RjQwREE1NkI5MjAwMjFFQjVEIC8qIEdyYWRpZW50LmggKi8sCisJCQkJQTg4RkUzMzMw
RTVFRUU4NzAwOEQ4QzBGIC8qIEdyYXBoaWNzQ29udGV4dFByaXZhdGUuaCAqLywKIAkJCQlCMkEw
MTU5MjBBRjZDRDUzMDA2QkNFMEUgLyogR3JhcGhpY3NDb250ZXh0LmNwcCAqLywKIAkJCQlCMkEw
MTU5MzBBRjZDRDUzMDA2QkNFMEUgLyogR3JhcGhpY3NDb250ZXh0LmggKi8sCiAJCQkJQjJBMDE1
OTQwQUY2Q0Q1MzAwNkJDRTBFIC8qIEdyYXBoaWNzVHlwZXMuY3BwICovLApAQCAtMTU0MzcsNiAr
MTU0NDAsNyBAQAogCQkJCTI5QUFDNTFGMEU1Mzk2M0IwMDhGOUIzQiAvKiBBY2Nlc3NpYmlsaXR5
VGFibGVIZWFkZXJDb250YWluZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4QTQ4NDc4MEU1Mjcy
QzUwMEMzRkU3NiAvKiBTY3JpcHRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEZBNkU1
RDBFNENGREVEMDBENUNGNDkgLyogUGF0dGVybi5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTg4RkUz
MzQwRTVFRUU4NzAwOEQ4QzBGIC8qIEdyYXBoaWNzQ29udGV4dFByaXZhdGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwog
CQl9OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyREN1c3RvbS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEQ3VzdG9tLmNwcAppbmRleCA5MmVkOGU4Li4zN2UyNTRmIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcAor
KysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9t
LmNwcApAQCAtNDQsOCArNDQsOCBAQCBzdGF0aWMgSlNWYWx1ZSogdG9KUyhFeGVjU3RhdGUqIGV4
ZWMsIENhbnZhc1N0eWxlKiBzdHlsZSkKIHsKICAgICBpZiAoc3R5bGUtPmNhbnZhc0dyYWRpZW50
KCkpCiAgICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIHN0eWxlLT5jYW52YXNHcmFkaWVudCgpKTsK
LSAgICBpZiAoc3R5bGUtPnBhdHRlcm4oKSkKLSAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgc3R5
bGUtPnBhdHRlcm4oKSk7CisgICAgaWYgKHN0eWxlLT5jYW52YXNQYXR0ZXJuKCkpCisgICAgICAg
IHJldHVybiB0b0pTKGV4ZWMsIHN0eWxlLT5jYW52YXNQYXR0ZXJuKCkpOwogICAgIHJldHVybiBq
c1N0cmluZyhleGVjLCBzdHlsZS0+Y29sb3IoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
Y3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwIGIvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5j
cHAKaW5kZXggN2E3MjEzNC4uZmQwY2E1YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTR3Jh
ZGllbnRWYWx1ZS5jcHAKKysrIGIvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAKQEAg
LTcxLDcgKzcxLDcgQEAgU3RyaW5nIENTU0dyYWRpZW50VmFsdWU6OmNzc1RleHQoKSBjb25zdAog
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLUdyYWRpZW50KiBDU1NHcmFkaWVudFZhbHVlOjpjcmVh
dGVHcmFkaWVudChSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBJbnRTaXplJiBzaXplKQor
UGFzc1JlZlB0cjxHcmFkaWVudD4gQ1NTR3JhZGllbnRWYWx1ZTo6Y3JlYXRlR3JhZGllbnQoUmVu
ZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKICAgICBBU1NFUlQo
IXNpemUuaXNFbXB0eSgpKTsKICAgICAKQEAgLTgwLDEzICs4MCwxMyBAQCBHcmFkaWVudCogQ1NT
R3JhZGllbnRWYWx1ZTo6Y3JlYXRlR3JhZGllbnQoUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29u
c3QgSW50U2l6ZQogICAgIEZsb2F0UG9pbnQgZmlyc3RQb2ludCA9IHJlc29sdmVQb2ludChtX2Zp
cnN0WC5nZXQoKSwgbV9maXJzdFkuZ2V0KCksIHNpemUsIHpvb21GYWN0b3IpOwogICAgIEZsb2F0
UG9pbnQgc2Vjb25kUG9pbnQgPSByZXNvbHZlUG9pbnQobV9zZWNvbmRYLmdldCgpLCBtX3NlY29u
ZFkuZ2V0KCksIHNpemUsIHpvb21GYWN0b3IpOwogICAgIAotICAgIEdyYWRpZW50KiBncmFkaWVu
dCA9IDA7CisgICAgUmVmUHRyPEdyYWRpZW50PiBncmFkaWVudDsKICAgICBpZiAobV90eXBlID09
IENTU0xpbmVhckdyYWRpZW50KQotICAgICAgICBncmFkaWVudCA9IG5ldyBHcmFkaWVudChmaXJz
dFBvaW50LCBzZWNvbmRQb2ludCk7CisgICAgICAgIGdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0
ZShmaXJzdFBvaW50LCBzZWNvbmRQb2ludCk7CiAgICAgZWxzZSB7CiAgICAgICAgIGZsb2F0IGZp
cnN0UmFkaXVzID0gcmVzb2x2ZVJhZGl1cyhtX2ZpcnN0UmFkaXVzLmdldCgpLCB6b29tRmFjdG9y
KTsKICAgICAgICAgZmxvYXQgc2Vjb25kUmFkaXVzID0gcmVzb2x2ZVJhZGl1cyhtX3NlY29uZFJh
ZGl1cy5nZXQoKSwgem9vbUZhY3Rvcik7Ci0gICAgICAgIGdyYWRpZW50ID0gbmV3IEdyYWRpZW50
KGZpcnN0UG9pbnQsIGZpcnN0UmFkaXVzLCBzZWNvbmRQb2ludCwgc2Vjb25kUmFkaXVzKTsKKyAg
ICAgICAgZ3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKGZpcnN0UG9pbnQsIGZpcnN0UmFkaXVz
LCBzZWNvbmRQb2ludCwgc2Vjb25kUmFkaXVzKTsKICAgICB9CiAKICAgICAvLyBOb3cgYWRkIHRo
ZSBzdG9wcy4KQEAgLTEwMSw3ICsxMDEsNyBAQCBHcmFkaWVudCogQ1NTR3JhZGllbnRWYWx1ZTo6
Y3JlYXRlR3JhZGllbnQoUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgSW50U2l6ZQogICAg
IC8vIFRoZSBiYWNrIGVuZCBhbHJlYWR5IHNvcnRlZCB0aGUgc3RvcHMuCiAgICAgZ3JhZGllbnQt
PnNldFN0b3BzU29ydGVkKHRydWUpOwogCi0gICAgcmV0dXJuIGdyYWRpZW50OworICAgIHJldHVy
biBncmFkaWVudC5yZWxlYXNlKCk7CiB9CiAKIEltYWdlKiBDU1NHcmFkaWVudFZhbHVlOjppbWFn
ZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBJbnRTaXplJiBzaXplKQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5oIGIvV2ViQ29yZS9jc3MvQ1NTR3JhZGll
bnRWYWx1ZS5oCmluZGV4IGI5MGQzMDcuLjRjOTBiZTIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3Nz
L0NTU0dyYWRpZW50VmFsdWUuaAorKysgYi9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmgK
QEAgLTgyLDcgKzgyLDcgQEAgcHJpdmF0ZToKICAgICB9CiAgICAgCiAgICAgLy8gQ3JlYXRlIHRo
ZSBncmFkaWVudCBmb3IgYSBnaXZlbiBzaXplLgotICAgIEdyYWRpZW50KiBjcmVhdGVHcmFkaWVu
dChSZW5kZXJPYmplY3QqLCBjb25zdCBJbnRTaXplJik7CisgICAgUGFzc1JlZlB0cjxHcmFkaWVu
dD4gY3JlYXRlR3JhZGllbnQoUmVuZGVyT2JqZWN0KiwgY29uc3QgSW50U2l6ZSYpOwogICAgIAog
ICAgIC8vIFJlc29sdmUgcG9pbnRzL3JhZGlpIHRvIGZyb250IGVuZCB2YWx1ZXMuCiAgICAgRmxv
YXRQb2ludCByZXNvbHZlUG9pbnQoQ1NTUHJpbWl0aXZlVmFsdWUqLCBDU1NQcmltaXRpdmVWYWx1
ZSosIGNvbnN0IEludFNpemUmLCBmbG9hdCB6b29tRmFjdG9yKTsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaHRtbC9DYW52YXNHcmFkaWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvQ2FudmFzR3JhZGllbnQu
Y3BwCmluZGV4IGMxNTYzMzguLmFhNWYwM2MgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9DYW52
YXNHcmFkaWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0NhbnZhc0dyYWRpZW50LmNwcApAQCAt
MzIsMTIgKzMyLDEyIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIENhbnZhc0dyYWRpZW50OjpD
YW52YXNHcmFkaWVudChjb25zdCBGbG9hdFBvaW50JiBwMCwgY29uc3QgRmxvYXRQb2ludCYgcDEp
Ci0gICAgOiBtX2dyYWRpZW50KHAwLCBwMSkKKyAgICA6IG1fZ3JhZGllbnQoR3JhZGllbnQ6OmNy
ZWF0ZShwMCwgcDEpKQogewogfQogCiBDYW52YXNHcmFkaWVudDo6Q2FudmFzR3JhZGllbnQoY29u
c3QgRmxvYXRQb2ludCYgcDAsIGZsb2F0IHIwLCBjb25zdCBGbG9hdFBvaW50JiBwMSwgZmxvYXQg
cjEpCi0gICAgOiBtX2dyYWRpZW50KHAwLCByMCwgcDEsIHIxKQorICAgIDogbV9ncmFkaWVudChH
cmFkaWVudDo6Y3JlYXRlKHAwLCByMCwgcDEsIHIxKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9odG1sL0NhbnZhc0dyYWRpZW50LmggYi9XZWJDb3JlL2h0bWwvQ2FudmFzR3JhZGllbnQu
aAppbmRleCBmMDhiZmZmLi40MDcyOTVlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvQ2FudmFz
R3JhZGllbnQuaAorKysgYi9XZWJDb3JlL2h0bWwvQ2FudmFzR3JhZGllbnQuaApAQCAtNDYsMTcg
KzQ2LDE3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgQ2FudmFzR3JhZGllbnQocDAsIHIwLCBwMSwgcjEpKTsKICAgICAgICAgfQogICAgICAg
ICAKLSAgICAgICAgR3JhZGllbnQmIGdyYWRpZW50KCkgeyByZXR1cm4gbV9ncmFkaWVudDsgfQor
ICAgICAgICBHcmFkaWVudCogZ3JhZGllbnQoKSBjb25zdCB7IHJldHVybiBtX2dyYWRpZW50Lmdl
dCgpOyB9CiAKLSAgICAgICAgdm9pZCBhZGRDb2xvclN0b3AoZmxvYXQgdmFsdWUsIGNvbnN0IFN0
cmluZyYgY29sb3IpIHsgbV9ncmFkaWVudC5hZGRDb2xvclN0b3AodmFsdWUsIGNvbG9yKTsgfQor
ICAgICAgICB2b2lkIGFkZENvbG9yU3RvcChmbG9hdCB2YWx1ZSwgY29uc3QgU3RyaW5nJiBjb2xv
cikgeyBtX2dyYWRpZW50LT5hZGRDb2xvclN0b3AodmFsdWUsIGNvbG9yKTsgfQogCi0gICAgICAg
IHZvaWQgZ2V0Q29sb3IoZmxvYXQgdmFsdWUsIGZsb2F0KiByLCBmbG9hdCogZywgZmxvYXQqIGIs
IGZsb2F0KiBhKSBjb25zdCB7IG1fZ3JhZGllbnQuZ2V0Q29sb3IodmFsdWUsIHIsIGcsIGIsIGEp
OyB9CisgICAgICAgIHZvaWQgZ2V0Q29sb3IoZmxvYXQgdmFsdWUsIGZsb2F0KiByLCBmbG9hdCog
ZywgZmxvYXQqIGIsIGZsb2F0KiBhKSBjb25zdCB7IG1fZ3JhZGllbnQtPmdldENvbG9yKHZhbHVl
LCByLCBnLCBiLCBhKTsgfQogCiAgICAgcHJpdmF0ZToKICAgICAgICAgQ2FudmFzR3JhZGllbnQo
Y29uc3QgRmxvYXRQb2ludCYgcDAsIGNvbnN0IEZsb2F0UG9pbnQmIHAxKTsKICAgICAgICAgQ2Fu
dmFzR3JhZGllbnQoY29uc3QgRmxvYXRQb2ludCYgcDAsIGZsb2F0IHIwLCBjb25zdCBGbG9hdFBv
aW50JiBwMSwgZmxvYXQgcjEpOwogICAgICAgICAKLSAgICAgICAgR3JhZGllbnQgbV9ncmFkaWVu
dDsKKyAgICAgICAgUmVmUHRyPEdyYWRpZW50PiBtX2dyYWRpZW50OwogICAgIH07CiAKIH0gLy9u
YW1lc3BhY2UKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9DYW52YXNQYXR0ZXJuLmNwcCBiL1dl
YkNvcmUvaHRtbC9DYW52YXNQYXR0ZXJuLmNwcAppbmRleCA0NGZhMjFhLi42MmE0NjIwIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2h0bWwvQ2FudmFzUGF0dGVybi5jcHAKKysrIGIvV2ViQ29yZS9odG1s
L0NhbnZhc1BhdHRlcm4uY3BwCkBAIC01OCw3ICs1OCw3IEBAIHZvaWQgQ2FudmFzUGF0dGVybjo6
cGFyc2VSZXBldGl0aW9uVHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIGJvb2wmIHJlcGVhdFgsIGJv
b2wmCiB9CiAKIENhbnZhc1BhdHRlcm46OkNhbnZhc1BhdHRlcm4oSW1hZ2UqIGltYWdlLCBib29s
IHJlcGVhdFgsIGJvb2wgcmVwZWF0WSwgYm9vbCBvcmlnaW5DbGVhbikKLSAgICA6IG1fcGF0dGVy
bihpbWFnZSwgcmVwZWF0WCwgcmVwZWF0WSkKKyAgICA6IG1fcGF0dGVybihQYXR0ZXJuOjpjcmVh
dGUoaW1hZ2UsIHJlcGVhdFgsIHJlcGVhdFkpKQogICAgICwgbV9vcmlnaW5DbGVhbihvcmlnaW5D
bGVhbikKIHsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9DYW52YXNQYXR0ZXJuLmggYi9X
ZWJDb3JlL2h0bWwvQ2FudmFzUGF0dGVybi5oCmluZGV4IDc5Yzc4NzIuLjZjMDEyZDEgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvaHRtbC9DYW52YXNQYXR0ZXJuLmgKKysrIGIvV2ViQ29yZS9odG1sL0Nh
bnZhc1BhdHRlcm4uaApAQCAtNDUsMTUgKzQ1LDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDYW52YXNQYXR0ZXJuKGlt
YWdlLCByZXBlYXRYLCByZXBlYXRZLCBvcmlnaW5DbGVhbikpOwogICAgICAgICB9Ci0gICAgICAg
IAotICAgICAgICBjb25zdCBQYXR0ZXJuJiBwYXR0ZXJuKCkgeyByZXR1cm4gbV9wYXR0ZXJuOyB9
CisKKyAgICAgICAgUGF0dGVybiogcGF0dGVybigpIGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVybi5n
ZXQoKTsgfQogCiAgICAgICAgIGJvb2wgb3JpZ2luQ2xlYW4oKSBjb25zdCB7IHJldHVybiBtX29y
aWdpbkNsZWFuOyB9CiAKICAgICBwcml2YXRlOgogICAgICAgICBDYW52YXNQYXR0ZXJuKEltYWdl
KiwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVhdFksIGJvb2wgb3JpZ2luQ2xlYW4pOwogCi0gICAg
ICAgIFBhdHRlcm4gbV9wYXR0ZXJuOworICAgICAgICBSZWZQdHI8UGF0dGVybj4gbV9wYXR0ZXJu
OwogICAgICAgICBib29sIG1fb3JpZ2luQ2xlYW47CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9odG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgYi9XZWJDb3JlL2h0bWwvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAppbmRleCBhNWQ1NmJlLi44ZDAyOGYwIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2h0bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAorKysgYi9XZWJD
b3JlL2h0bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApAQCAtMTAxLDggKzEwMSw2IEBA
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6U3RhdGU6OlN0YXRlKCkKICAgICAsIG1fc2hhZG93
Q29sb3IoImJsYWNrIikKICAgICAsIG1fZ2xvYmFsQWxwaGEoMSkKICAgICAsIG1fZ2xvYmFsQ29t
cG9zaXRlKENvbXBvc2l0ZVNvdXJjZU92ZXIpCi0gICAgLCBtX2FwcGxpZWRTdHJva2VQYXR0ZXJu
KGZhbHNlKQotICAgICwgbV9hcHBsaWVkRmlsbFBhdHRlcm4oZmFsc2UpCiB7CiB9CiAKQEAgLTE0
MSw3ICsxMzksNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U3Ryb2tlU3R5
bGUoUGFzc1JlZlB0cjxDYW52YXNTdHlsZT4gc3R5bGUpCiAgICAgICAgIHJldHVybjsKIAogICAg
IGlmIChtX2NhbnZhcy0+b3JpZ2luQ2xlYW4oKSkgewotICAgICAgICBpZiAoQ2FudmFzUGF0dGVy
biogcGF0dGVybiA9IHN0eWxlLT5wYXR0ZXJuKCkpIHsKKyAgICAgICAgaWYgKENhbnZhc1BhdHRl
cm4qIHBhdHRlcm4gPSBzdHlsZS0+Y2FudmFzUGF0dGVybigpKSB7CiAgICAgICAgICAgICBpZiAo
IXBhdHRlcm4tPm9yaWdpbkNsZWFuKCkpCiAgICAgICAgICAgICAgICAgbV9jYW52YXMtPnNldE9y
aWdpblRhaW50ZWQoKTsKICAgICAgICAgfQpAQCAtMTUyLDcgKzE1MCw2IEBAIHZvaWQgQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTdHJva2VTdHlsZShQYXNzUmVmUHRyPENhbnZhc1N0eWxl
PiBzdHlsZSkKICAgICBpZiAoIWMpCiAgICAgICAgIHJldHVybjsKICAgICBzdGF0ZSgpLm1fc3Ry
b2tlU3R5bGUtPmFwcGx5U3Ryb2tlQ29sb3IoYyk7Ci0gICAgc3RhdGUoKS5tX2FwcGxpZWRTdHJv
a2VQYXR0ZXJuID0gZmFsc2U7CiB9CiAKIENhbnZhc1N0eWxlKiBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQ6OmZpbGxTdHlsZSgpIGNvbnN0CkBAIC0xNjYsNyArMTYzLDcgQEAgdm9pZCBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OnNldEZpbGxTdHlsZShQYXNzUmVmUHRyPENhbnZhc1N0eWxlPiBz
dHlsZSkKICAgICAgICAgcmV0dXJuOwogIAogICAgIGlmIChtX2NhbnZhcy0+b3JpZ2luQ2xlYW4o
KSkgewotICAgICAgICBpZiAoQ2FudmFzUGF0dGVybiogcGF0dGVybiA9IHN0eWxlLT5wYXR0ZXJu
KCkpIHsKKyAgICAgICAgaWYgKENhbnZhc1BhdHRlcm4qIHBhdHRlcm4gPSBzdHlsZS0+Y2FudmFz
UGF0dGVybigpKSB7CiAgICAgICAgICAgICBpZiAoIXBhdHRlcm4tPm9yaWdpbkNsZWFuKCkpCiAg
ICAgICAgICAgICAgICAgbV9jYW52YXMtPnNldE9yaWdpblRhaW50ZWQoKTsKICAgICAgICAgfQpA
QCAtMTc3LDcgKzE3NCw2IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRGaWxs
U3R5bGUoUGFzc1JlZlB0cjxDYW52YXNTdHlsZT4gc3R5bGUpCiAgICAgaWYgKCFjKQogICAgICAg
ICByZXR1cm47CiAgICAgc3RhdGUoKS5tX2ZpbGxTdHlsZS0+YXBwbHlGaWxsQ29sb3IoYyk7Ci0g
ICAgc3RhdGUoKS5tX2FwcGxpZWRGaWxsUGF0dGVybiA9IGZhbHNlOwogfQogCiBmbG9hdCBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmxpbmVXaWR0aCgpIGNvbnN0CkBAIC01NDIsNDcgKzUzOCw3
IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpmaWxsKCkKICAgICBpZiAoIW1fcGF0
aC5pc0VtcHR5KCkpCiAgICAgICAgIHdpbGxEcmF3KG1fcGF0aC5ib3VuZGluZ1JlY3QoKSk7CiAK
LSNpZiBQTEFURk9STShDRykKLSAgICBpZiAoc3RhdGUoKS5tX2ZpbGxTdHlsZS0+Y2FudmFzR3Jh
ZGllbnQoKSkgewotICAgICAgICAvLyBTaGFkaW5nIHdvcmtzIG9uIHRoZSBlbnRpcmUgY2xpcCBy
ZWdpb24sIHNvIGNvbnZlcnQgdGhlIGN1cnJlbnQgcGF0aCB0byBhIGNsaXAuCi0gICAgICAgIGMt
PnNhdmUoKTsKLSAgICAgICAgQ0dDb250ZXh0Q2xpcChjLT5wbGF0Zm9ybUNvbnRleHQoKSk7Ci0g
ICAgICAgIENHQ29udGV4dERyYXdTaGFkaW5nKGMtPnBsYXRmb3JtQ29udGV4dCgpLCBzdGF0ZSgp
Lm1fZmlsbFN0eWxlLT5jYW52YXNHcmFkaWVudCgpLT5ncmFkaWVudCgpLnBsYXRmb3JtR3JhZGll
bnQoKSk7ICAgICAgICAKLSAgICAgICAgYy0+cmVzdG9yZSgpOwotICAgIH0gZWxzZSB7Ci0gICAg
ICAgIGlmIChzdGF0ZSgpLm1fZmlsbFN0eWxlLT5wYXR0ZXJuKCkpCi0gICAgICAgICAgICBhcHBs
eUZpbGxQYXR0ZXJuKCk7Ci0gICAgICAgIENHQ29udGV4dEZpbGxQYXRoKGMtPnBsYXRmb3JtQ29u
dGV4dCgpKTsKLSAgICB9Ci0jZWxpZiBQTEFURk9STShRVCkKLSAgICBRUGFpbnRlclBhdGgqIHBh
dGggPSBtX3BhdGgucGxhdGZvcm1QYXRoKCk7Ci0gICAgUVBhaW50ZXIqIHAgPSBzdGF0aWNfY2Fz
dDxRUGFpbnRlcio+KGMtPnBsYXRmb3JtQ29udGV4dCgpKTsKLSAgICBpZiAoc3RhdGUoKS5tX2Zp
bGxTdHlsZS0+Y2FudmFzR3JhZGllbnQoKSkgewotICAgICAgICBwLT5maWxsUGF0aCgqcGF0aCwg
UUJydXNoKCooc3RhdGUoKS5tX2ZpbGxTdHlsZS0+Y2FudmFzR3JhZGllbnQoKS0+Z3JhZGllbnQo
KS5wbGF0Zm9ybUdyYWRpZW50KCkpKSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKHN0YXRl
KCkubV9maWxsU3R5bGUtPnBhdHRlcm4oKSkKLSAgICAgICAgICAgIGFwcGx5RmlsbFBhdHRlcm4o
KTsKLSAgICAgICAgcC0+ZmlsbFBhdGgoKnBhdGgsIHAtPmJydXNoKCkpOwotICAgIH0KLSNlbGlm
IFBMQVRGT1JNKENBSVJPKQotICAgIGNhaXJvX3QqIGNyID0gYy0+cGxhdGZvcm1Db250ZXh0KCk7
Ci0gICAgY2Fpcm9fc2F2ZShjcik7Ci0KLSAgICBpZiAoc3RhdGUoKS5tX2ZpbGxTdHlsZS0+Y2Fu
dmFzR3JhZGllbnQoKSkgewotICAgICAgICBjYWlyb19zZXRfc291cmNlKGNyLCBzdGF0ZSgpLm1f
ZmlsbFN0eWxlLT5jYW52YXNHcmFkaWVudCgpLT5ncmFkaWVudCgpLnBsYXRmb3JtR3JhZGllbnQo
KSk7Ci0gICAgICAgIGNhaXJvX2ZpbGwoY3IpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChz
dGF0ZSgpLm1fZmlsbFN0eWxlLT5wYXR0ZXJuKCkpCi0gICAgICAgICAgICBhcHBseUZpbGxQYXR0
ZXJuKCk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgZmxvYXQgcmVkLCBncmVlbiwgYmx1
ZSwgYWxwaGE7Ci0gICAgICAgICAgICBjLT5maWxsQ29sb3IoKS5nZXRSR0JBKHJlZCwgZ3JlZW4s
IGJsdWUsIGFscGhhKTsKLSAgICAgICAgICAgIGNhaXJvX3NldF9zb3VyY2VfcmdiYShjciwgcmVk
LCBncmVlbiwgYmx1ZSwgYWxwaGEpOwotICAgICAgICB9Ci0gICAgICAgIGNhaXJvX2ZpbGwoY3Ip
OwotICAgIH0KLSAgICBjYWlyb19yZXN0b3JlKGNyKTsKLSNlbmRpZgorICAgIGMtPmZpbGxQYXRo
KCk7CiAKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCiAgICAgY2xlYXJQYXRoRm9yRGFz
aGJvYXJkQmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSgpOwpAQCAtNjA1LDU0ICs1NjEsOCBAQCB2
b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c3Ryb2tlKCkKICAgICAgICAgYm91bmRpbmdS
ZWN0LmluZmxhdGUoaW5zZXQpOwogICAgICAgICB3aWxsRHJhdyhib3VuZGluZ1JlY3QpOwogICAg
IH0KLSAgICAKLSAgICAvLyBGSVhNRTogRG8gdGhpcyB0aHJvdWdoIHBsYXRmb3JtLWluZGVwZW5k
ZW50IEdyYXBoaWNzQ29udGV4dCBBUEkuCi0jaWYgUExBVEZPUk0oQ0cpCi0gICAgaWYgKHN0YXRl
KCkubV9zdHJva2VTdHlsZS0+Y2FudmFzR3JhZGllbnQoKSkgewotICAgICAgICAvLyBTaGFkaW5n
IHdvcmtzIG9uIHRoZSBlbnRpcmUgY2xpcCByZWdpb24sIHNvIGNvbnZlcnQgdGhlIGN1cnJlbnQg
cGF0aCB0byBhIGNsaXAuCi0gICAgICAgIGMtPnNhdmUoKTsKLSAgICAgICAgQ0dDb250ZXh0UmVw
bGFjZVBhdGhXaXRoU3Ryb2tlZFBhdGgoYy0+cGxhdGZvcm1Db250ZXh0KCkpOwotICAgICAgICBD
R0NvbnRleHRDbGlwKGMtPnBsYXRmb3JtQ29udGV4dCgpKTsKLSAgICAgICAgQ0dDb250ZXh0RHJh
d1NoYWRpbmcoYy0+cGxhdGZvcm1Db250ZXh0KCksIHN0YXRlKCkubV9zdHJva2VTdHlsZS0+Y2Fu
dmFzR3JhZGllbnQoKS0+Z3JhZGllbnQoKS5wbGF0Zm9ybUdyYWRpZW50KCkpOyAgICAgICAgCi0g
ICAgICAgIGMtPnJlc3RvcmUoKTsKLSAgICB9IGVsc2UgewotICAgICAgICBpZiAoc3RhdGUoKS5t
X3N0cm9rZVN0eWxlLT5wYXR0ZXJuKCkpCi0gICAgICAgICAgICBhcHBseVN0cm9rZVBhdHRlcm4o
KTsKLSAgICAgICAgQ0dDb250ZXh0U3Ryb2tlUGF0aChjLT5wbGF0Zm9ybUNvbnRleHQoKSk7Ci0g
ICAgfQotI2VsaWYgUExBVEZPUk0oUVQpCi0gICAgUVBhaW50ZXJQYXRoKiBwYXRoID0gbV9wYXRo
LnBsYXRmb3JtUGF0aCgpOwotICAgIFFQYWludGVyKiBwID0gc3RhdGljX2Nhc3Q8UVBhaW50ZXIq
PihjLT5wbGF0Zm9ybUNvbnRleHQoKSk7Ci0gICAgaWYgKHN0YXRlKCkubV9zdHJva2VTdHlsZS0+
Y2FudmFzR3JhZGllbnQoKSkgewotICAgICAgICBwLT5zYXZlKCk7Ci0gICAgICAgIHAtPnNldEJy
dXNoKCooc3RhdGUoKS5tX3N0cm9rZVN0eWxlLT5jYW52YXNHcmFkaWVudCgpLT5ncmFkaWVudCgp
LnBsYXRmb3JtR3JhZGllbnQoKSkpOwotICAgICAgICBwLT5zdHJva2VQYXRoKCpwYXRoLCBwLT5w
ZW4oKSk7Ci0gICAgICAgIHAtPnJlc3RvcmUoKTsKLSAgICB9IGVsc2UgewotICAgICAgICBpZiAo
c3RhdGUoKS5tX3N0cm9rZVN0eWxlLT5wYXR0ZXJuKCkpCi0gICAgICAgICAgICBhcHBseVN0cm9r
ZVBhdHRlcm4oKTsKLSAgICAgICAgcC0+c3Ryb2tlUGF0aCgqcGF0aCwgcC0+cGVuKCkpOwotICAg
IH0KLSNlbGlmIFBMQVRGT1JNKENBSVJPKQotICAgIGNhaXJvX3QqIGNyID0gYy0+cGxhdGZvcm1D
b250ZXh0KCk7Ci0gICAgY2Fpcm9fc2F2ZShjcik7Ci0gICAgaWYgKHN0YXRlKCkubV9zdHJva2VT
dHlsZS0+Y2FudmFzR3JhZGllbnQoKSkgewotICAgICAgICBjYWlyb19zZXRfc291cmNlKGNyLCBz
dGF0ZSgpLm1fc3Ryb2tlU3R5bGUtPmNhbnZhc0dyYWRpZW50KCktPmdyYWRpZW50KCkucGxhdGZv
cm1HcmFkaWVudCgpKTsKLSAgICAgICAgYy0+YWRkUGF0aChtX3BhdGgpOwotICAgICAgICBjYWly
b19zdHJva2UoY3IpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChzdGF0ZSgpLm1fc3Ryb2tl
U3R5bGUtPnBhdHRlcm4oKSkKLSAgICAgICAgICAgIGFwcGx5U3Ryb2tlUGF0dGVybigpOwotICAg
ICAgICBlbHNlIHsKLSAgICAgICAgICAgIGZsb2F0IHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhOwot
ICAgICAgICAgICAgYy0+c3Ryb2tlQ29sb3IoKS5nZXRSR0JBKHJlZCwgZ3JlZW4sIGJsdWUsIGFs
cGhhKTsKLSAgICAgICAgICAgIGNhaXJvX3NldF9zb3VyY2VfcmdiYShjciwgcmVkLCBncmVlbiwg
Ymx1ZSwgYWxwaGEpOwotICAgICAgICB9Ci0gICAgICAgIGMtPmFkZFBhdGgobV9wYXRoKTsKLSAg
ICAgICAgY2Fpcm9fc3Ryb2tlKGNyKTsKLSAgICB9Ci0gICAgY2Fpcm9fcmVzdG9yZShjcik7Ci0j
ZW5kaWYKKworICAgIGMtPnN0cm9rZVBhdGgoKTsKIAogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQ
UE9SVCkKICAgICBjbGVhclBhdGhGb3JEYXNoYm9hcmRCYWNrd2FyZENvbXBhdGliaWxpdHlNb2Rl
KCk7CkBAIC03MDksNDIgKzYxOSw5IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpm
aWxsUmVjdChmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpCiAgICAgRmxv
YXRSZWN0IHJlY3QoeCwgeSwgd2lkdGgsIGhlaWdodCk7CiAgICAgd2lsbERyYXcocmVjdCk7CiAK
LSAgICAvLyBGSVhNRTogRG8gdGhpcyB0aHJvdWdoIHBsYXRmb3JtLWluZGVwZW5kZW50IEdyYXBo
aWNzQ29udGV4dCBBUEkuCi0jaWYgUExBVEZPUk0oQ0cpCi0gICAgaWYgKHN0YXRlKCkubV9maWxs
U3R5bGUtPmNhbnZhc0dyYWRpZW50KCkpIHsKLSAgICAgICAgYy0+c2F2ZSgpOwotICAgICAgICBz
dGF0ZSgpLm1fZmlsbFN0eWxlLT5jYW52YXNHcmFkaWVudCgpLT5ncmFkaWVudCgpLmZpbGwoYywg
cmVjdCk7Ci0gICAgICAgIGMtPnJlc3RvcmUoKTsKLSAgICB9IGVsc2UgewotICAgICAgICBpZiAo
c3RhdGUoKS5tX2ZpbGxTdHlsZS0+cGF0dGVybigpKQotICAgICAgICAgICAgYXBwbHlGaWxsUGF0
dGVybigpOwotICAgICAgICBDR0NvbnRleHRGaWxsUmVjdChjLT5wbGF0Zm9ybUNvbnRleHQoKSwg
cmVjdCk7Ci0gICAgfQotI2VsaWYgUExBVEZPUk0oUVQpCi0gICAgUVBhaW50ZXIqIHAgPSBzdGF0
aWNfY2FzdDxRUGFpbnRlcio+KGMtPnBsYXRmb3JtQ29udGV4dCgpKTsKLSAgICBpZiAoc3RhdGUo
KS5tX2ZpbGxTdHlsZS0+Y2FudmFzR3JhZGllbnQoKSkgewotICAgICAgICBwLT5maWxsUmVjdChy
ZWN0LCBRQnJ1c2goKihzdGF0ZSgpLm1fZmlsbFN0eWxlLT5jYW52YXNHcmFkaWVudCgpLT5ncmFk
aWVudCgpLnBsYXRmb3JtR3JhZGllbnQoKSkpKTsKLSAgICB9IGVsc2UgewotICAgICAgICBpZiAo
c3RhdGUoKS5tX2ZpbGxTdHlsZS0+cGF0dGVybigpKQotICAgICAgICAgICAgYXBwbHlGaWxsUGF0
dGVybigpOwotICAgICAgICBwLT5maWxsUmVjdChyZWN0LCBwLT5icnVzaCgpKTsKLSAgICB9Ci0j
ZWxpZiBQTEFURk9STShDQUlSTykKLSAgICBjYWlyb190KiBjciA9IGMtPnBsYXRmb3JtQ29udGV4
dCgpOwotICAgIGNhaXJvX3NhdmUoY3IpOwotICAgIGlmIChzdGF0ZSgpLm1fZmlsbFN0eWxlLT5j
YW52YXNHcmFkaWVudCgpKSB7Ci0gICAgICAgIHN0YXRlKCkubV9maWxsU3R5bGUtPmNhbnZhc0dy
YWRpZW50KCktPmdyYWRpZW50KCkuZmlsbChjLCByZWN0KTsKLSAgICB9IGVsc2UgewotICAgICAg
ICBpZiAoc3RhdGUoKS5tX2ZpbGxTdHlsZS0+cGF0dGVybigpKSB7Ci0gICAgICAgICAgICBhcHBs
eUZpbGxQYXR0ZXJuKCk7Ci0gICAgICAgICAgICBjYWlyb19yZWN0YW5nbGUoY3IsIHgsIHksIHdp
ZHRoLCBoZWlnaHQpOwotICAgICAgICAgICAgY2Fpcm9fZmlsbChjcik7Ci0gICAgICAgIH0gZWxz
ZQotICAgICAgICAgICAgYy0+ZmlsbFJlY3QocmVjdCwgYy0+ZmlsbENvbG9yKCkpOwotICAgIH0K
LSAgICAKLSAgICBjYWlyb19yZXN0b3JlKGNyKTsKLSNlbmRpZgorICAgIGMtPnNhdmUoKTsKKyAg
ICBjLT5maWxsUmVjdChyZWN0KTsKKyAgICBjLT5yZXN0b3JlKCk7CiB9CiAKIHZvaWQgQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEOjpzdHJva2VSZWN0KGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHdp
ZHRoLCBmbG9hdCBoZWlnaHQpCkBAIC03NzIsMTAgKzY0OSw2IEBAIHZvaWQgQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEOjpzdHJva2VSZWN0KGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHdpZHRoLCBm
bG9hdCBoCiAgICAgYm91bmRpbmdSZWN0LmluZmxhdGUobGluZVdpZHRoIC8gMik7CiAgICAgd2ls
bERyYXcoYm91bmRpbmdSZWN0KTsKIAotICAgIC8vIEZJWE1FOiBObyBzdXBwb3J0IGZvciBncmFk
aWVudHMhCi0gICAgaWYgKHN0YXRlKCkubV9zdHJva2VTdHlsZS0+cGF0dGVybigpKQotICAgICAg
ICBhcHBseVN0cm9rZVBhdHRlcm4oKTsKLQogICAgIGMtPnN0cm9rZVJlY3QocmVjdCwgbGluZVdp
ZHRoKTsKIH0KIApAQCAtMTE2OCw1OCArMTA0MSw2IEBAIEdyYXBoaWNzQ29udGV4dCogQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3aW5nQ29udGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIG1f
Y2FudmFzLT5kcmF3aW5nQ29udGV4dCgpOwogfQogCi12b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRDo6YXBwbHlTdHJva2VQYXR0ZXJuKCkKLXsKLSAgICBHcmFwaGljc0NvbnRleHQqIGMgPSBk
cmF3aW5nQ29udGV4dCgpOwotICAgIGlmICghYykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8g
RklYTUU6IENhbiB0aGlzIGNoZWNrIGJlIG1vdmVkIGludG8gR3JhcGhpY3NDb250ZXh0PyBvciBy
ZW1vdmVkPwotI2lmIFBMQVRGT1JNKENHKQotICAgIC8vIENoZWNrIGZvciBjYXNlIHdoZXJlIHRo
ZSBwYXR0ZXJuIGlzIGFscmVhZHkgc2V0LgotICAgIEFmZmluZVRyYW5zZm9ybSBjdG0gPSBjLT5n
ZXRDVE0oKTsKLSAgICBpZiAoc3RhdGUoKS5tX2FwcGxpZWRTdHJva2VQYXR0ZXJuICYmIGN0bSA9
PSBzdGF0ZSgpLm1fc3Ryb2tlU3R5bGVQYXR0ZXJuVHJhbnNmb3JtKQotICAgICAgICByZXR1cm47
Ci0jZW5kaWYKLQotICAgIENhbnZhc1BhdHRlcm4qIHBhdHRlcm4gPSBzdGF0ZSgpLm1fc3Ryb2tl
U3R5bGUtPnBhdHRlcm4oKTsKLSAgICBpZiAoIXBhdHRlcm4pCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGMtPmFwcGx5U3Ryb2tlUGF0dGVybihwYXR0ZXJuLT5wYXR0ZXJuKCkpOwotCi0jaWYgUExB
VEZPUk0oQ0cpCi0gICAgc3RhdGUoKS5tX3N0cm9rZVN0eWxlUGF0dGVyblRyYW5zZm9ybSA9IGN0
bTsKLSNlbmRpZgotICAgIHN0YXRlKCkubV9hcHBsaWVkU3Ryb2tlUGF0dGVybiA9IHRydWU7Ci19
Ci0KLXZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjphcHBseUZpbGxQYXR0ZXJuKCkKLXsK
LSAgICBHcmFwaGljc0NvbnRleHQqIGMgPSBkcmF3aW5nQ29udGV4dCgpOwotICAgIGlmICghYykK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gRklYTUU6IENhbiB0aGlzIGNoZWNrIGJlIG1vdmVk
IGludG8gR3JhcGhpY3NDb250ZXh0PyBvciByZW1vdmVkPwotI2lmIFBMQVRGT1JNKENHKQotICAg
IC8vIENoZWNrIGZvciBjYXNlIHdoZXJlIHRoZSBwYXR0ZXJuIGlzIGFscmVhZHkgc2V0LgotICAg
IEFmZmluZVRyYW5zZm9ybSBjdG0gPSBjLT5nZXRDVE0oKTsKLSAgICBpZiAoc3RhdGUoKS5tX2Fw
cGxpZWRGaWxsUGF0dGVybiAmJiBjdG0gPT0gc3RhdGUoKS5tX2ZpbGxTdHlsZVBhdHRlcm5UcmFu
c2Zvcm0pCi0gICAgICAgIHJldHVybjsKLSNlbmRpZgotCi0gICAgQ2FudmFzUGF0dGVybiogcGF0
dGVybiA9IHN0YXRlKCkubV9maWxsU3R5bGUtPnBhdHRlcm4oKTsKLSAgICBpZiAoIXBhdHRlcm4p
Ci0gICAgICAgIHJldHVybjsKLQotICAgIGMtPmFwcGx5RmlsbFBhdHRlcm4ocGF0dGVybi0+cGF0
dGVybigpKTsKLQotI2lmIFBMQVRGT1JNKENHKQotICAgIHN0YXRlKCkubV9maWxsU3R5bGVQYXR0
ZXJuVHJhbnNmb3JtID0gY3RtOwotI2VuZGlmCi0gICAgc3RhdGUoKS5tX2FwcGxpZWRGaWxsUGF0
dGVybiA9IHRydWU7Ci19Ci0KIHN0YXRpYyBQYXNzUmVmUHRyPEltYWdlRGF0YT4gY3JlYXRlRW1w
dHlJbWFnZURhdGEoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKICAgICBQYXNzUmVmUHRyPEltYWdl
RGF0YT4gZGF0YSA9IEltYWdlRGF0YTo6Y3JlYXRlKHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQo
KSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgg
Yi9XZWJDb3JlL2h0bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgKaW5kZXggMTY4YjczMC4u
OWE3ZmRhZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5oCisrKyBiL1dlYkNvcmUvaHRtbC9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaApAQCAtMTkx
LDEzICsxOTEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBTdHJpbmcgbV9z
aGFkb3dDb2xvcjsKICAgICAgICAgICAgIGZsb2F0IG1fZ2xvYmFsQWxwaGE7CiAgICAgICAgICAg
ICBDb21wb3NpdGVPcGVyYXRvciBtX2dsb2JhbENvbXBvc2l0ZTsKLSAgICAgICAgICAgIGJvb2wg
bV9hcHBsaWVkU3Ryb2tlUGF0dGVybjsKLSAgICAgICAgICAgIGJvb2wgbV9hcHBsaWVkRmlsbFBh
dHRlcm47CiAgICAgICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gbV90cmFuc2Zvcm07Ci0jaWYgUExB
VEZPUk0oQ0cpCi0gICAgICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gbV9zdHJva2VTdHlsZVBhdHRl
cm5UcmFuc2Zvcm07Ci0gICAgICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gbV9maWxsU3R5bGVQYXR0
ZXJuVHJhbnNmb3JtOwotI2VuZGlmCiAgICAgICAgIH07CiAgICAgICAgIFBhdGggbV9wYXRoOwog
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvQ2FudmFzU3R5bGUuY3BwIGIvV2ViQ29yZS9odG1s
L0NhbnZhc1N0eWxlLmNwcAppbmRleCA1NjEzMGRmLi4xMDhjNDkzIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2h0bWwvQ2FudmFzU3R5bGUuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9DYW52YXNTdHlsZS5j
cHAKQEAgLTE0MSw3ICsxNDEsMTAgQEAgdm9pZCBDYW52YXNTdHlsZTo6YXBwbHlTdHJva2VDb2xv
cihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogICAgICAgICBjYXNlIEdyYWRpZW50OgorICAgICAgICAgICAgY29udGV4dC0+c2V0RmlsbEdy
YWRpZW50KGNhbnZhc0dyYWRpZW50KCktPmdyYWRpZW50KCkpOworICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgSW1hZ2VQYXR0ZXJuOgorICAgICAgICAgICAgY29udGV4dC0+c2V0Rmls
bFBhdHRlcm4oY2FudmFzUGF0dGVybigpLT5wYXR0ZXJuKCkpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgfQogfQpAQCAtMTg3LDcgKzE5MCwxMCBAQCB2b2lkIENhbnZhc1N0eWxlOjphcHBseUZp
bGxDb2xvcihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIEdyYWRpZW50OgorICAgICAgICAgICAgY29udGV4dC0+c2V0
U3Ryb2tlR3JhZGllbnQoY2FudmFzR3JhZGllbnQoKS0+Z3JhZGllbnQoKSk7CisgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBJbWFnZVBhdHRlcm46CisgICAgICAgICAgICBjb250ZXh0
LT5zZXRTdHJva2VQYXR0ZXJuKGNhbnZhc1BhdHRlcm4oKS0+cGF0dGVybigpKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9DYW52YXNTdHls
ZS5oIGIvV2ViQ29yZS9odG1sL0NhbnZhc1N0eWxlLmgKaW5kZXggMDc5YWI2Zi4uZmUwMWJkMSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0NhbnZhc1N0eWxlLmgKKysrIGIvV2ViQ29yZS9odG1s
L0NhbnZhc1N0eWxlLmgKQEAgLTQ3LDkgKzQ3LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAg
ICAgICAgIFN0cmluZyBjb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fY29sb3I7IH0KICAgICAgICAg
Q2FudmFzR3JhZGllbnQqIGNhbnZhc0dyYWRpZW50KCkgY29uc3QgeyByZXR1cm4gbV9ncmFkaWVu
dC5nZXQoKTsgfQotICAgICAgICBDYW52YXNQYXR0ZXJuKiBwYXR0ZXJuKCkgY29uc3QgeyByZXR1
cm4gbV9wYXR0ZXJuLmdldCgpOyB9CisgICAgICAgIENhbnZhc1BhdHRlcm4qIGNhbnZhc1BhdHRl
cm4oKSBjb25zdCB7IHJldHVybiBtX3BhdHRlcm4uZ2V0KCk7IH0KIAotICAgICAgICAvLyBUaGVz
ZSBkbyBub3RoaW5nIGZvciBncmFkaWVudHMgb3IgcGF0dGVybnMuCiAgICAgICAgIHZvaWQgYXBw
bHlGaWxsQ29sb3IoR3JhcGhpY3NDb250ZXh0Kik7CiAgICAgICAgIHZvaWQgYXBwbHlTdHJva2VD
b2xvcihHcmFwaGljc0NvbnRleHQqKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HZW5lcmF0ZWRJbWFnZS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW5l
cmF0ZWRJbWFnZS5oCmluZGV4IGIzMjFiOGQuLjg2MDdmYTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdGVkSW1hZ2UuaAorKysgYi9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dlbmVyYXRlZEltYWdlLmgKQEAgLTMwLDE2ICszMCwxNiBAQAogCiAjaW5jbHVk
ZSAiR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgotI2luY2x1ZGUgPHd0Zi9Pd25Q
dHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgR2VuZXJhdGVkSW1hZ2UgOiBwdWJsaWMgSW1hZ2UgewogcHVibGljOgotICAgIEdlbmVy
YXRlZEltYWdlKEdlbmVyYXRvciogZ2VuZXJhdG9yLCBjb25zdCBJbnRTaXplJiBzaXplKQotICAg
IDogbV9zaXplKHNpemUpCisgICAgR2VuZXJhdGVkSW1hZ2UoUGFzc1JlZlB0cjxHZW5lcmF0b3I+
IGdlbmVyYXRvciwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKKyAgICAgICAgOiBtX2dlbmVyYXRvcihn
ZW5lcmF0b3IpCisgICAgICAgICwgbV9zaXplKHNpemUpCiAgICAgewotICAgICAgICBtX2dlbmVy
YXRvci5zZXQoZ2VuZXJhdG9yKTsKICAgICB9CiAgICAgdmlydHVhbCB+R2VuZXJhdGVkSW1hZ2Uo
KSB7fQogCkBAIC02MSw3ICs2MSw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0KTsKICAgICAKIHByb3RlY3RlZDoKLSAgICBPd25QdHI8R2Vu
ZXJhdG9yPiBtX2dlbmVyYXRvcjsKKyAgICBSZWZQdHI8R2VuZXJhdG9yPiBtX2dlbmVyYXRvcjsK
ICAgICBJbnRTaXplIG1fc2l6ZTsKIH07CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR2VuZXJhdG9yLmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dlbmVyYXRv
ci5oCmluZGV4IGE1NDVhZDUuLmEwYWY2ODkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR2VuZXJhdG9yLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW5l
cmF0b3IuaApAQCAtMjYsMTQgKzI2LDE0IEBACiAjaWZuZGVmIEdlbmVyYXRvcl9oCiAjZGVmaW5l
IEdlbmVyYXRvcl9oCiAKLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZsb2F0UmVj
dDsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIAotY2xhc3MgR2VuZXJhdG9yIDogTm9uY29weWFi
bGUgeworY2xhc3MgR2VuZXJhdG9yIDogcHVibGljIFJlZkNvdW50ZWQ8R2VuZXJhdG9yPiB7CiBw
dWJsaWM6CiAgICAgdmlydHVhbCB+R2VuZXJhdG9yKCkge307CiAgICAgCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50LmggYi9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYWRpZW50LmgKaW5kZXggYmVkYzE1Yy4uMjgwNzg3NyAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudC5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhZGllbnQuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkdlbmVyYXRv
ci5oIgogCiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiAjaWYgUExBVEZPUk0oQ0cpCkBAIC01OCw4
ICs1OSwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBHcmFkaWVudCA6IHB1
YmxpYyBHZW5lcmF0b3IgewogICAgIHB1YmxpYzoKLSAgICAgICAgR3JhZGllbnQoY29uc3QgRmxv
YXRQb2ludCYgcDAsIGNvbnN0IEZsb2F0UG9pbnQmIHAxKTsKLSAgICAgICAgR3JhZGllbnQoY29u
c3QgRmxvYXRQb2ludCYgcDAsIGZsb2F0IHIwLCBjb25zdCBGbG9hdFBvaW50JiBwMSwgZmxvYXQg
cjEpOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxHcmFkaWVudD4gY3JlYXRlKGNvbnN0IEZs
b2F0UG9pbnQmIHAwLCBjb25zdCBGbG9hdFBvaW50JiBwMSkKKyAgICAgICAgeworICAgICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBHcmFkaWVudChwMCwgcDEpKTsKKyAgICAgICAgfQorICAg
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxHcmFkaWVudD4gY3JlYXRlKGNvbnN0IEZsb2F0UG9pbnQm
IHAwLCBmbG9hdCByMCwgY29uc3QgRmxvYXRQb2ludCYgcDEsIGZsb2F0IHIxKQorICAgICAgICB7
CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdyYWRpZW50KHAwLCByMCwgcDEsIHIx
KSk7CisgICAgICAgIH0KICAgICAgICAgdmlydHVhbCB+R3JhZGllbnQoKTsKIAogICAgICAgICB2
b2lkIGFkZENvbG9yU3RvcChmbG9hdCwgY29uc3QgU3RyaW5nJik7CkBAIC04NSw2ICs5Miw5IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIGZpbGwoR3JhcGhpY3ND
b250ZXh0KiwgY29uc3QgRmxvYXRSZWN0Jik7CiAKICAgICBwcml2YXRlOgorICAgICAgICBHcmFk
aWVudChjb25zdCBGbG9hdFBvaW50JiBwMCwgY29uc3QgRmxvYXRQb2ludCYgcDEpOworICAgICAg
ICBHcmFkaWVudChjb25zdCBGbG9hdFBvaW50JiBwMCwgZmxvYXQgcjAsIGNvbnN0IEZsb2F0UG9p
bnQmIHAxLCBmbG9hdCByMSk7CisKICAgICAgICAgdm9pZCBwbGF0Zm9ybUluaXQoKSB7IG1fZ3Jh
ZGllbnQgPSAwOyB9CiAgICAgICAgIHZvaWQgcGxhdGZvcm1EZXN0cm95KCk7CiAKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAppbmRleCA0ZWIxOWVmLi43
MGMyZWE3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQu
Y3BwCkBAIC0xMzQsNiArMTM0LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFN0cm9rZVN0
eWxlKGNvbnN0IFN0cm9rZVN0eWxlJiBzdHlsZSkKIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNl
dFN0cm9rZUNvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKIHsKKyAgICBtX2NvbW1vbi0+c3RhdGUu
c3Ryb2tlQ29sb3JTcGFjZSA9IFNvbGlkQ29sb3JTcGFjZTsKICAgICBtX2NvbW1vbi0+c3RhdGUu
c3Ryb2tlQ29sb3IgPSBjb2xvcjsKICAgICBzZXRQbGF0Zm9ybVN0cm9rZUNvbG9yKGNvbG9yKTsK
IH0KQEAgLTE4MCw2ICsxODEsNyBAQCBDb2xvciBHcmFwaGljc0NvbnRleHQ6OnN0cm9rZUNvbG9y
KCkgY29uc3QKIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldEZpbGxDb2xvcihjb25zdCBDb2xv
ciYgY29sb3IpCiB7CisgICAgbV9jb21tb24tPnN0YXRlLmZpbGxDb2xvclNwYWNlID0gU29saWRD
b2xvclNwYWNlOwogICAgIG1fY29tbW9uLT5zdGF0ZS5maWxsQ29sb3IgPSBjb2xvcjsKICAgICBz
ZXRQbGF0Zm9ybUZpbGxDb2xvcihjb2xvcik7CiB9CkBAIC0xODksNiArMTkxLDM0IEBAIENvbG9y
IEdyYXBoaWNzQ29udGV4dDo6ZmlsbENvbG9yKCkgY29uc3QKICAgICByZXR1cm4gbV9jb21tb24t
PnN0YXRlLmZpbGxDb2xvcjsKIH0KIAordm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFN0cm9rZVBh
dHRlcm4oUGFzc1JlZlB0cjxQYXR0ZXJuPiBwYXR0ZXJuKQoreworICAgIG1fY29tbW9uLT5zdGF0
ZS5zdHJva2VDb2xvclNwYWNlID0gUGF0dGVybkNvbG9yU3BhY2U7CisgICAgbV9jb21tb24tPnN0
YXRlLnN0cm9rZVBhdHRlcm4gPSBwYXR0ZXJuOworICAgIHNldFBsYXRmb3JtU3Ryb2tlUGF0dGVy
bihtX2NvbW1vbi0+c3RhdGUuc3Ryb2tlUGF0dGVybi5nZXQoKSk7Cit9CisKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpzZXRGaWxsUGF0dGVybihQYXNzUmVmUHRyPFBhdHRlcm4+IHBhdHRlcm4pCit7
CisgICAgbV9jb21tb24tPnN0YXRlLmZpbGxDb2xvclNwYWNlID0gUGF0dGVybkNvbG9yU3BhY2U7
CisgICAgbV9jb21tb24tPnN0YXRlLmZpbGxQYXR0ZXJuID0gcGF0dGVybjsKKyAgICBzZXRQbGF0
Zm9ybUZpbGxQYXR0ZXJuKG1fY29tbW9uLT5zdGF0ZS5maWxsUGF0dGVybi5nZXQoKSk7Cit9CisK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VHcmFkaWVudChQYXNzUmVmUHRyPEdyYWRp
ZW50PiBncmFkaWVudCkKK3sKKyAgICBtX2NvbW1vbi0+c3RhdGUuc3Ryb2tlQ29sb3JTcGFjZSA9
IEdyYWRpZW50Q29sb3JTcGFjZTsKKyAgICBtX2NvbW1vbi0+c3RhdGUuc3Ryb2tlR3JhZGllbnQg
PSBncmFkaWVudDsKKyAgICBzZXRQbGF0Zm9ybVN0cm9rZUdyYWRpZW50KG1fY29tbW9uLT5zdGF0
ZS5zdHJva2VHcmFkaWVudC5nZXQoKSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRG
aWxsR3JhZGllbnQoUGFzc1JlZlB0cjxHcmFkaWVudD4gZ3JhZGllbnQpCit7CisgICAgbV9jb21t
b24tPnN0YXRlLmZpbGxDb2xvclNwYWNlID0gR3JhZGllbnRDb2xvclNwYWNlOworICAgIG1fY29t
bW9uLT5zdGF0ZS5maWxsR3JhZGllbnQgPSBncmFkaWVudDsKKyAgICBzZXRQbGF0Zm9ybUZpbGxH
cmFkaWVudChtX2NvbW1vbi0+c3RhdGUuZmlsbEdyYWRpZW50LmdldCgpKTsKK30KKwogYm9vbCBH
cmFwaGljc0NvbnRleHQ6OnVwZGF0aW5nQ29udHJvbFRpbnRzKCkgY29uc3QKIHsKICAgICByZXR1
cm4gbV9jb21tb24tPm1fdXBkYXRpbmdDb250cm9sVGludHM7CkBAIC00MjYsMTQgKzQ1Niw2IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVRleHREcmF3aW5nTW9kZShpbnQgbW9k
ZSkKIH0KICNlbmRpZgogCi0jaWYgIVBMQVRGT1JNKENHKSAmJiAhUExBVEZPUk0oQ0FJUk8pCi0v
LyBPdGhlciBwbGF0Zm9ybXMgbmVlZCB0byBpbXBsZW1lbnQgdGhpcy4KLXZvaWQgR3JhcGhpY3ND
b250ZXh0OjpjbGlwVG9JbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZUJ1
ZmZlciopCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLSNlbmRpZgotCiAjaWYgIVBMQVRG
T1JNKFFUKSAmJiAhUExBVEZPUk0oQ0FJUk8pCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxh
dGZvcm1TdHJva2VTdHlsZShjb25zdCBTdHJva2VTdHlsZSYpCiB7CmRpZmYgLS1naXQgYS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oIGIvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCBlYmUxNjcxLi44NWI4M2Q0IDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisrKyBi
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTk0LDYgKzk0
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEFmZmluZVRyYW5zZm9ybTsKICAg
ICBjbGFzcyBGb250OwogICAgIGNsYXNzIEdlbmVyYXRvcjsKKyAgICBjbGFzcyBHcmFkaWVudDsK
ICAgICBjbGFzcyBHcmFwaGljc0NvbnRleHRQcml2YXRlOwogICAgIGNsYXNzIEdyYXBoaWNzQ29u
dGV4dFBsYXRmb3JtUHJpdmF0ZTsKICAgICBjbGFzcyBJbWFnZUJ1ZmZlcjsKQEAgLTEzOSwzMCAr
MTQwLDM5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBzZXRTdHJva2VTdHls
ZShjb25zdCBTdHJva2VTdHlsZSYgc3R5bGUpOwogICAgICAgICBDb2xvciBzdHJva2VDb2xvcigp
IGNvbnN0OwogICAgICAgICB2b2lkIHNldFN0cm9rZUNvbG9yKGNvbnN0IENvbG9yJik7CisgICAg
ICAgIHZvaWQgc2V0U3Ryb2tlUGF0dGVybihQYXNzUmVmUHRyPFBhdHRlcm4+KTsKKyAgICAgICAg
dm9pZCBzZXRTdHJva2VHcmFkaWVudChQYXNzUmVmUHRyPEdyYWRpZW50Pik7CiAKKyAgICAgICAg
dm9pZCBzZXRGaWxsUnVsZShXaW5kUnVsZSk7CiAgICAgICAgIENvbG9yIGZpbGxDb2xvcigpIGNv
bnN0OwogICAgICAgICB2b2lkIHNldEZpbGxDb2xvcihjb25zdCBDb2xvciYpOwotCi0gICAgICAg
IHZvaWQgYXBwbHlTdHJva2VQYXR0ZXJuKGNvbnN0IFBhdHRlcm4mKTsKLSAgICAgICAgdm9pZCBh
cHBseUZpbGxQYXR0ZXJuKGNvbnN0IFBhdHRlcm4mKTsKKyAgICAgICAgdm9pZCBzZXRGaWxsUGF0
dGVybihQYXNzUmVmUHRyPFBhdHRlcm4+KTsKKyAgICAgICAgdm9pZCBzZXRGaWxsR3JhZGllbnQo
UGFzc1JlZlB0cjxHcmFkaWVudD4pOwogCiAgICAgICAgIHZvaWQgc2F2ZSgpOwogICAgICAgICB2
b2lkIHJlc3RvcmUoKTsKLSAgICAgICAgCisKICAgICAgICAgLy8gVGhlc2UgZHJhdyBtZXRob2Rz
IHdpbGwgZG8gYm90aCBzdHJva2luZyBhbmQgZmlsbGluZy4KICAgICAgICAgdm9pZCBkcmF3UmVj
dChjb25zdCBJbnRSZWN0Jik7CiAgICAgICAgIHZvaWQgZHJhd0xpbmUoY29uc3QgSW50UG9pbnQm
LCBjb25zdCBJbnRQb2ludCYpOwogICAgICAgICB2b2lkIGRyYXdFbGxpcHNlKGNvbnN0IEludFJl
Y3QmKTsKICAgICAgICAgdm9pZCBkcmF3Q29udmV4UG9seWdvbihzaXplX3QgbnVtUG9pbnRzLCBj
b25zdCBGbG9hdFBvaW50KiwgYm9vbCBzaG91bGRBbnRpYWxpYXMgPSBmYWxzZSk7CiAKKyAgICAg
ICAgdm9pZCBkcmF3UGF0aCgpOworICAgICAgICB2b2lkIGZpbGxQYXRoKCk7CisgICAgICAgIHZv
aWQgc3Ryb2tlUGF0aCgpOworCiAgICAgICAgIC8vIEFyYyBkcmF3aW5nICh1c2VkIGJ5IGJvcmRl
ci1yYWRpdXMgaW4gQ1NTKSBqdXN0IHN1cHBvcnRzIHN0cm9raW5nIGF0IHRoZSBtb21lbnQuCiAg
ICAgICAgIHZvaWQgc3Ryb2tlQXJjKGNvbnN0IEludFJlY3QmLCBpbnQgc3RhcnRBbmdsZSwgaW50
IGFuZ2xlU3Bhbik7Ci0gICAgICAgIAotICAgICAgICB2b2lkIGZpbGxSZWN0KGNvbnN0IEludFJl
Y3QmLCBjb25zdCBDb2xvciYpOworCisgICAgICAgIHZvaWQgZmlsbFJlY3QoY29uc3QgRmxvYXRS
ZWN0Jik7CiAgICAgICAgIHZvaWQgZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQ29s
b3ImKTsKICAgICAgICAgdm9pZCBmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmLCBHZW5lcmF0b3Im
KTsKICAgICAgICAgdm9pZCBmaWxsUm91bmRlZFJlY3QoY29uc3QgSW50UmVjdCYsIGNvbnN0IElu
dFNpemUmIHRvcExlZnQsIGNvbnN0IEludFNpemUmIHRvcFJpZ2h0LCBjb25zdCBJbnRTaXplJiBi
b3R0b21MZWZ0LCBjb25zdCBJbnRTaXplJiBib3R0b21SaWdodCwgY29uc3QgQ29sb3ImKTsKKwog
ICAgICAgICB2b2lkIGNsZWFyUmVjdChjb25zdCBGbG9hdFJlY3QmKTsKKworICAgICAgICB2b2lk
IHN0cm9rZVJlY3QoY29uc3QgRmxvYXRSZWN0Jik7CiAgICAgICAgIHZvaWQgc3Ryb2tlUmVjdChj
b25zdCBGbG9hdFJlY3QmLCBmbG9hdCBsaW5lV2lkdGgpOwogCiAgICAgICAgIHZvaWQgZHJhd0lt
YWdlKEltYWdlKiwgY29uc3QgSW50UG9pbnQmLCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0
ZVNvdXJjZU92ZXIpOwpAQCAtMTc3LDEzICsxODcsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgSW1hZ2U6OlRpbGVSdWxlIGhSdWxlID0gSW1hZ2U6
OlN0cmV0Y2hUaWxlLCBJbWFnZTo6VGlsZVJ1bGUgdlJ1bGUgPSBJbWFnZTo6U3RyZXRjaFRpbGUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3Np
dGVTb3VyY2VPdmVyKTsKIAotI2lmIFBMQVRGT1JNKENHKQogICAgICAgICB2b2lkIHNldEltYWdl
SW50ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJwb2xhdGlvblF1YWxpdHkpOwogICAgICAgICBJbnRl
cnBvbGF0aW9uUXVhbGl0eSBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5KCkgY29uc3Q7Ci0jZWxz
ZQotICAgICAgICB2b2lkIHNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJwb2xhdGlv
blF1YWxpdHkpIHt9Ci0gICAgICAgIEludGVycG9sYXRpb25RdWFsaXR5IGltYWdlSW50ZXJwb2xh
dGlvblF1YWxpdHkoKSBjb25zdCB7IHJldHVybiBJbnRlcnBvbGF0aW9uRGVmYXVsdDsgfQotI2Vu
ZGlmCiAKICAgICAgICAgdm9pZCBjbGlwKGNvbnN0IEZsb2F0UmVjdCYpOwogICAgICAgICB2b2lk
IGFkZFJvdW5kZWRSZWN0Q2xpcChjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50U2l6ZSYgdG9wTGVm
dCwgY29uc3QgSW50U2l6ZSYgdG9wUmlnaHQsIGNvbnN0IEludFNpemUmIGJvdHRvbUxlZnQsIGNv
bnN0IEludFNpemUmIGJvdHRvbVJpZ2h0KTsKQEAgLTI4OCw3ICsyOTMsNiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKICNpZiBQTEFURk9STShRVCkKICAgICAgICAgYm9vbCBpblRyYW5zcGFyZW5j
eUxheWVyKCkgY29uc3Q7Ci0gICAgICAgIHZvaWQgc2V0RmlsbFJ1bGUoV2luZFJ1bGUpOwogICAg
ICAgICBQbGF0Zm9ybVBhdGgqIGN1cnJlbnRQYXRoKCk7CiAjZW5kaWYKIApAQCAtMzAxLDEyICsz
MDUsMjAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHByaXZhdGU6CiAgICAgICAgIHZvaWQg
c2F2ZVBsYXRmb3JtU3RhdGUoKTsKICAgICAgICAgdm9pZCByZXN0b3JlUGxhdGZvcm1TdGF0ZSgp
OworCiAgICAgICAgIHZvaWQgc2V0UGxhdGZvcm1UZXh0RHJhd2luZ01vZGUoaW50KTsKKyAgICAg
ICAgdm9pZCBzZXRQbGF0Zm9ybUZvbnQoY29uc3QgRm9udCYgZm9udCk7CisKICAgICAgICAgdm9p
ZCBzZXRQbGF0Zm9ybVN0cm9rZUNvbG9yKGNvbnN0IENvbG9yJik7CisgICAgICAgIHZvaWQgc2V0
UGxhdGZvcm1TdHJva2VQYXR0ZXJuKFBhdHRlcm4qKTsKKyAgICAgICAgdm9pZCBzZXRQbGF0Zm9y
bVN0cm9rZUdyYWRpZW50KEdyYWRpZW50Kik7CiAgICAgICAgIHZvaWQgc2V0UGxhdGZvcm1TdHJv
a2VTdHlsZShjb25zdCBTdHJva2VTdHlsZSYpOwogICAgICAgICB2b2lkIHNldFBsYXRmb3JtU3Ry
b2tlVGhpY2tuZXNzKGZsb2F0KTsKKwogICAgICAgICB2b2lkIHNldFBsYXRmb3JtRmlsbENvbG9y
KGNvbnN0IENvbG9yJik7Ci0gICAgICAgIHZvaWQgc2V0UGxhdGZvcm1Gb250KGNvbnN0IEZvbnQm
IGZvbnQpOworICAgICAgICB2b2lkIHNldFBsYXRmb3JtRmlsbFBhdHRlcm4oUGF0dGVybiopOwor
ICAgICAgICB2b2lkIHNldFBsYXRmb3JtRmlsbEdyYWRpZW50KEdyYWRpZW50Kik7CisKICAgICAg
ICAgdm9pZCBzZXRQbGF0Zm9ybVNoYWRvdyhjb25zdCBJbnRTaXplJiwgaW50IGJsdXIsIGNvbnN0
IENvbG9yJik7CiAgICAgICAgIHZvaWQgY2xlYXJQbGF0Zm9ybVNoYWRvdygpOwogCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dFByaXZhdGUuaCBi
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0UHJpdmF0ZS5oCmluZGV4
IDAyYzc0MTUuLjVjM2Y4ZWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0UHJpdmF0ZS5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0UHJpdmF0ZS5oCkBAIC0yNywyOCArMjcsNTUgQEAKICNkZWZpbmUgR3Jh
cGhpY3NDb250ZXh0UHJpdmF0ZV9oCiAKICNpbmNsdWRlICJGb250LmgiCisjaW5jbHVkZSAiR3Jh
ZGllbnQuaCIKKyNpbmNsdWRlICJQYXR0ZXJuLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
ICAgIC8vIGVzZWlkZWw6IFRoaXMgaXMgYSBwbGFjZS1ob2xkZXIgdW50aWwgc29tZSBkYXkgd2hl
biB3ZSBkZWNpZGUgdG8gYWRkCisgICAgLy8gcmVhbGwgY29sb3Itc3BhY2Ugc3VwcG9ydCB0byBX
ZWJDb3JlLiAgQXQgdGhhdCB0aW1lLCBDb2xvclNwYWNlcworICAgIC8vIHdpbGwgYmVjb21lIHJl
YWwgb2JqZWN0cyBoZWxkIG9mZiBvZiBDb2xvcnMsIGFuZCB0aGVyZSB3aWxsIGJlCisgICAgLy8g
c3BlY2lhbCBzaW5nbGV0b24gR3JhZGllbnQgYW5kIFBhdHRlcm4gY29sb3JzcGFjZXMgdG8gbWFy
ayB3aGVuCisgICAgLy8gYSBmaWxsIG9yIHN0cm9rZSBpcyB1c2luZyBhIGdyYWRpZW50IG9yIHBh
dHRlcm4gaW5zdGVhZCBvZiBhIHNvbGlkIGNvbG9yCisgICAgZW51bSBDb2xvclNwYWNlIHsKKyAg
ICAgICAgU29saWRDb2xvclNwYWNlLAorICAgICAgICBQYXR0ZXJuQ29sb3JTcGFjZSwKKyAgICAg
ICAgR3JhZGllbnRDb2xvclNwYWNlCisgICAgfTsKKwogICAgIHN0cnVjdCBHcmFwaGljc0NvbnRl
eHRTdGF0ZSB7CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlKCkKLSAgICAgICAgICAgIDog
c3Ryb2tlU3R5bGUoU29saWRTdHJva2UpCisgICAgICAgICAgICA6IHRleHREcmF3aW5nTW9kZShj
VGV4dEZpbGwpCisgICAgICAgICAgICAsIHN0cm9rZVN0eWxlKFNvbGlkU3Ryb2tlKQogICAgICAg
ICAgICAgLCBzdHJva2VUaGlja25lc3MoMCkKKyAgICAgICAgICAgICwgc3Ryb2tlQ29sb3JTcGFj
ZShTb2xpZENvbG9yU3BhY2UpCiAgICAgICAgICAgICAsIHN0cm9rZUNvbG9yKENvbG9yOjpibGFj
aykKKyAgICAgICAgICAgICwgZmlsbFJ1bGUoUlVMRV9OT05aRVJPKQorICAgICAgICAgICAgLCBm
aWxsQ29sb3JTcGFjZShTb2xpZENvbG9yU3BhY2UpCiAgICAgICAgICAgICAsIGZpbGxDb2xvcihD
b2xvcjo6YmxhY2spCi0gICAgICAgICAgICAsIHRleHREcmF3aW5nTW9kZShjVGV4dEZpbGwpCiAg
ICAgICAgICAgICAsIHBhaW50aW5nRGlzYWJsZWQoZmFsc2UpCiAgICAgICAgICAgICAsIHNoYWRv
d0JsdXIoMCkKICAgICAgICAgewogICAgICAgICB9CiAKICAgICAgICAgRm9udCBmb250OworICAg
ICAgICBpbnQgdGV4dERyYXdpbmdNb2RlOworICAgICAgICAKICAgICAgICAgU3Ryb2tlU3R5bGUg
c3Ryb2tlU3R5bGU7CiAgICAgICAgIGZsb2F0IHN0cm9rZVRoaWNrbmVzczsKKyAgICAgICAgQ29s
b3JTcGFjZSBzdHJva2VDb2xvclNwYWNlOwogICAgICAgICBDb2xvciBzdHJva2VDb2xvcjsKKyAg
ICAgICAgUmVmUHRyPEdyYWRpZW50PiBzdHJva2VHcmFkaWVudDsKKyAgICAgICAgUmVmUHRyPFBh
dHRlcm4+IHN0cm9rZVBhdHRlcm47CisgICAgICAgIAorICAgICAgICBXaW5kUnVsZSBmaWxsUnVs
ZTsKKyAgICAgICAgQ29sb3JTcGFjZSBmaWxsQ29sb3JTcGFjZTsKICAgICAgICAgQ29sb3IgZmls
bENvbG9yOwotICAgICAgICBpbnQgdGV4dERyYXdpbmdNb2RlOworICAgICAgICBSZWZQdHI8R3Jh
ZGllbnQ+IGZpbGxHcmFkaWVudDsKKyAgICAgICAgUmVmUHRyPFBhdHRlcm4+IGZpbGxQYXR0ZXJu
OworCiAgICAgICAgIGJvb2wgcGFpbnRpbmdEaXNhYmxlZDsKKyAgICAgICAgCiAgICAgICAgIElu
dFNpemUgc2hhZG93U2l6ZTsKICAgICAgICAgdW5zaWduZWQgc2hhZG93Qmx1cjsKICAgICAgICAg
Q29sb3Igc2hhZG93Q29sb3I7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1BhdGguaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5oCmluZGV4IDczNDMwNmUu
LjRlZmQzNDAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5oCisr
KyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5oCkBAIC05OCw4ICs5OCw4IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIG1vdmVUbyhjb25zdCBGbG9hdFBvaW50
Jik7CiAgICAgICAgIHZvaWQgYWRkTGluZVRvKGNvbnN0IEZsb2F0UG9pbnQmKTsKLSAgICAgICAg
dm9pZCBhZGRRdWFkQ3VydmVUbyhjb25zdCBGbG9hdFBvaW50JiBjb250cm9sUG9pbnQsIGNvbnN0
IEZsb2F0UG9pbnQmIHBvaW50KTsKLSAgICAgICAgdm9pZCBhZGRCZXppZXJDdXJ2ZVRvKGNvbnN0
IEZsb2F0UG9pbnQmIGNvbnRyb2xQb2ludDEsIGNvbnN0IEZsb2F0UG9pbnQmIGNvbnRyb2xQb2lu
dDIsIGNvbnN0IEZsb2F0UG9pbnQmKTsKKyAgICAgICAgdm9pZCBhZGRRdWFkQ3VydmVUbyhjb25z
dCBGbG9hdFBvaW50JiBjb250cm9sUG9pbnQsIGNvbnN0IEZsb2F0UG9pbnQmIGVuZFBvaW50KTsK
KyAgICAgICAgdm9pZCBhZGRCZXppZXJDdXJ2ZVRvKGNvbnN0IEZsb2F0UG9pbnQmIGNvbnRyb2xQ
b2ludDEsIGNvbnN0IEZsb2F0UG9pbnQmIGNvbnRyb2xQb2ludDIsIGNvbnN0IEZsb2F0UG9pbnQm
IGVuZFBvaW50KTsKICAgICAgICAgdm9pZCBhZGRBcmNUbyhjb25zdCBGbG9hdFBvaW50JiwgY29u
c3QgRmxvYXRQb2ludCYsIGZsb2F0IHJhZGl1cyk7CiAgICAgICAgIHZvaWQgY2xvc2VTdWJwYXRo
KCk7CiAKQEAgLTEwOSw5ICsxMDksNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAg
dm9pZCB0cmFuc2xhdGUoY29uc3QgRmxvYXRTaXplJik7CiAKLSAgICAgICAgdm9pZCBzZXRXaW5k
aW5nUnVsZShXaW5kUnVsZSBydWxlKSB7IG1fcnVsZSA9IHJ1bGU7IH0KLSAgICAgICAgV2luZFJ1
bGUgd2luZGluZ1J1bGUoKSBjb25zdCB7IHJldHVybiBtX3J1bGU7IH0KLQogICAgICAgICBTdHJp
bmcgZGVidWdTdHJpbmcoKSBjb25zdDsKIAogICAgICAgICBQbGF0Zm9ybVBhdGgqIHBsYXRmb3Jt
UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF0aDsgfQpAQCAtMTI4LDcgKzEyNSw2IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIFBsYXRmb3JtUGF0aCogbV9w
YXRoOwotICAgICAgICBXaW5kUnVsZSBtX3J1bGU7CiAgICAgfTsKIAogfQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmggYi9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1BhdHRlcm4uaAppbmRleCBiMTVlZTg0Li4zYzIwYjZlIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1BhdHRlcm4uaApAQCAtMjcsNyArMjcsOCBAQAogI2lmbmRlZiBQYXR0ZXJuX2gKICNk
ZWZpbmUgUGF0dGVybl9oCiAKLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgogCiAjaWYgUExBVEZPUk0oQ0cpCkBAIC01NiwxNyArNTcsMjEgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEFmZmluZVRyYW5zZm9ybTsKICAgICBjbGFz
cyBJbWFnZTsKIAotICAgIGNsYXNzIFBhdHRlcm4gOiBOb25jb3B5YWJsZSB7CisgICAgY2xhc3Mg
UGF0dGVybiA6IHB1YmxpYyBSZWZDb3VudGVkPFBhdHRlcm4+IHsKICAgICBwdWJsaWM6Ci0gICAg
ICAgIFBhdHRlcm4oSW1hZ2UqLCBib29sIHJlcGVhdFgsIGJvb2wgcmVwZWF0WSk7Ci0KKyAgICAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8UGF0dGVybj4gY3JlYXRlKEltYWdlKiB0aWxlSW1hZ2UsIGJv
b2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFBhdHRlcm4odGlsZUltYWdlLCByZXBlYXRYLCByZXBlYXRZKSk7CisgICAg
ICAgIH0KICAgICAgICAgdmlydHVhbCB+UGF0dGVybigpOwotICAgICAgICAKKwogICAgICAgICBJ
bWFnZSogdGlsZUltYWdlKCkgY29uc3QgeyByZXR1cm4gbV90aWxlSW1hZ2UuZ2V0KCk7IH0KIAog
ICAgICAgICBQbGF0Zm9ybVBhdHRlcm5QdHIgY3JlYXRlUGxhdGZvcm1QYXR0ZXJuKGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSkgY29uc3Q7CiAKICAgICBwcml2YXRlOgor
ICAgICAgICBQYXR0ZXJuKEltYWdlKiwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVhdFkpOworCiAg
ICAgICAgIFJlZlB0cjxJbWFnZT4gbV90aWxlSW1hZ2U7CiAgICAgICAgIGJvb2wgbV9yZXBlYXRY
OwogICAgICAgICBib29sIG1fcmVwZWF0WTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwIGIvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKaW5kZXggMTdkNjhkNS4u
ZmE1YjM4YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFw
aGljc0NvbnRleHRDYWlyby5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKQEAgLTUxNiwxNCArNTE2LDE0IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjphcHBseUZpbGxQYXR0ZXJuKGNvbnN0IFBhdHRlcm4mIHBhdHRlcm4pCiAK
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybUZpbGxDb2xvcihjb25zdCBDb2xvciYg
Y29sKQogewotICAgIC8vIEZJWE1FOiB0aGlzIGlzIHByb2JhYmx5IGEgbm8tb3AgYnV0IEknbSBu
b3Qgc3VyZQotICAgIC8vIG5vdEltcGxlbWVudGVkKCk7IC8vIGNvbW1lbnRlZC1vdXQgYmVjYXVz
ZSBpdCdzIGNoYXR0eSBhbmQgY2x1dHRlcnMgb3V0cHV0CisgICAgLy8gQ2Fpcm8gY29udGV4dHMg
Y2FuJ3QgaG9sZCBzZXBhcmF0ZSBmaWxsIGFuZCBzdHJva2UgY29sb3JzCisgICAgLy8gc28gd2Ug
c2V0IHRoZW0ganVzdCBiZWZvcmUgd2UgYWN0dWFsbHkgZmlsbCBvciBzdHJva2UKIH0KIAogdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU3Ryb2tlQ29sb3IoY29uc3QgQ29sb3ImIGNv
bCkKIHsKLSAgICAvLyBGSVhNRTogdGhpcyBpcyBwcm9iYWJseSBhIG5vLW9wIGJ1dCBJJ20gbm90
IHN1cmUKLSAgICAvL25vdEltcGxlbWVudGVkKCk7IC8vIGNvbW1lbnRlZC1vdXQgYmVjYXVzZSBp
dCdzIGNoYXR0eSBhbmQgY2x1dHRlcnMgb3V0cHV0CisgICAgLy8gQ2Fpcm8gY29udGV4dHMgY2Fu
J3QgaG9sZCBzZXBhcmF0ZSBmaWxsIGFuZCBzdHJva2UgY29sb3JzCisgICAgLy8gc28gd2Ugc2V0
IHRoZW0ganVzdCBiZWZvcmUgd2UgYWN0dWFsbHkgZmlsbCBvciBzdHJva2UKIH0KIAogdm9pZCBH
cmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU3Ryb2tlVGhpY2tuZXNzKGZsb2F0IHN0cm9rZVRo
aWNrbmVzcykKQEAgLTkxMSw2ICs5MTEsMTUgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFVz
ZUFudGlhbGlhc2luZyhib29sIGVuYWJsZSkKICAgICBjYWlyb19zZXRfYW50aWFsaWFzKG1fZGF0
YS0+Y3IsIGVuYWJsZSA/IENBSVJPX0FOVElBTElBU19ERUZBVUxUIDogQ0FJUk9fQU5USUFMSUFT
X05PTkUpOwogfQogCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0SW1hZ2VJbnRlcnBvbGF0aW9u
UXVhbGl0eShJbnRlcnBvbGF0aW9uUXVhbGl0eSkKK3sKK30KKworSW50ZXJwb2xhdGlvblF1YWxp
dHkgR3JhcGhpY3NDb250ZXh0OjppbWFnZUludGVycG9sYXRpb25RdWFsaXR5KCkgY29uc3QKK3sK
KyAgICByZXR1cm4gSW50ZXJwb2xhdGlvbkRlZmF1bHQ7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAogI2VuZGlmIC8vIFBMQVRGT1JNKENBSVJPKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAgYi9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAppbmRleCBjMjRjZWY2Li40NWQy
YWM5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29u
dGV4dENHLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29u
dGV4dENHLmNwcApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3Jt
LmgiCiAjaW5jbHVkZSAiRmxvYXRDb252ZXJzaW9uLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZUNH
LmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJLVVJMLmgiCkBAIC0zOTIs
MTggKzM5Myw4MSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0NvbnZleFBvbHlnb24oc2l6
ZV90IG5wb2ludHMsIGNvbnN0IEZsb2F0UG9pbnQqIHBvaW50cwogICAgIENHQ29udGV4dFJlc3Rv
cmVHU3RhdGUoY29udGV4dCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChj
b25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IpCit2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6ZHJhd1BhdGgoKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAg
IHJldHVybjsKLSAgICBpZiAoY29sb3IuYWxwaGEoKSkgewotICAgICAgICBDR0NvbnRleHRSZWYg
Y29udGV4dCA9IHBsYXRmb3JtQ29udGV4dCgpOwotICAgICAgICBDb2xvciBvbGRGaWxsQ29sb3Ig
PSBmaWxsQ29sb3IoKTsKLSAgICAgICAgaWYgKG9sZEZpbGxDb2xvciAhPSBjb2xvcikKLSAgICAg
ICAgICAgIHNldENHRmlsbENvbG9yKGNvbnRleHQsIGNvbG9yKTsKLSAgICAgICAgQ0dDb250ZXh0
RmlsbFJlY3QoY29udGV4dCwgcmVjdCk7Ci0gICAgICAgIGlmIChvbGRGaWxsQ29sb3IgIT0gY29s
b3IpCi0gICAgICAgICAgICBzZXRDR0ZpbGxDb2xvcihjb250ZXh0LCBvbGRGaWxsQ29sb3IpOwor
CisgICAgLy8gV2Ugc2hvdWxkIGludmVzdGlnYXRlIHVzaW5nIENHQ29udGV4dERyYXdQYXRoIGZv
ciBwb3NzaWJsZSBvcHRpbWl6YXRpb24KKyAgICBmaWxsUGF0aCgpOworICAgIHN0cm9rZVBhdGgo
KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxQYXRoKCkKK3sKKyAgICBpZiAocGFp
bnRpbmdEaXNhYmxlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBDR0NvbnRleHRSZWYgY29u
dGV4dCA9IHBsYXRmb3JtQ29udGV4dCgpOworICAgIHN3aXRjaCAobV9jb21tb24tPnN0YXRlLmZp
bGxDb2xvclNwYWNlKSB7CisgICAgY2FzZSBTb2xpZENvbG9yU3BhY2U6CisgICAgICAgIGlmICgh
ZmlsbENvbG9yKCkuYWxwaGEoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgLy8gZmFs
bCB0aHJvdWdoCisgICAgY2FzZSBQYXR0ZXJuQ29sb3JTcGFjZToKKyAgICAgICAgaWYgKG1fY29t
bW9uLT5zdGF0ZS5maWxsUnVsZSA9PSBSVUxFX0VWRU5PREQpCisgICAgICAgICAgICBDR0NvbnRl
eHRFT0ZpbGxQYXRoKGNvbnRleHQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBDR0NvbnRl
eHRGaWxsUGF0aChjb250ZXh0KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBHcmFkaWVudENv
bG9yU3BhY2U6CisgICAgICAgIGlmIChtX2NvbW1vbi0+c3RhdGUuZmlsbFJ1bGUgPT0gUlVMRV9F
VkVOT0REKQorICAgICAgICAgICAgQ0dDb250ZXh0RU9DbGlwKGNvbnRleHQpOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBDR0NvbnRleHRDbGlwKGNvbnRleHQpOworICAgICAgICBDR0NvbnRl
eHREcmF3U2hhZGluZyhjb250ZXh0LCBtX2NvbW1vbi0+c3RhdGUuZmlsbEdyYWRpZW50LT5wbGF0
Zm9ybUdyYWRpZW50KCkpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpzdHJva2VQYXRoKCkKK3sKKyAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IHBsYXRmb3JtQ29u
dGV4dCgpOworICAgIHN3aXRjaCAobV9jb21tb24tPnN0YXRlLnN0cm9rZUNvbG9yU3BhY2UpIHsK
KyAgICBjYXNlIFNvbGlkQ29sb3JTcGFjZToKKyAgICAgICAgaWYgKCFmaWxsQ29sb3IoKS5hbHBo
YSgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAvLyBmYWxsIHRocm91Z2gKKyAgICBj
YXNlIFBhdHRlcm5Db2xvclNwYWNlOgorICAgICAgICBDR0NvbnRleHRTdHJva2VQYXRoKGNvbnRl
eHQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEdyYWRpZW50Q29sb3JTcGFjZToKKyAgICAg
ICAgQ0dDb250ZXh0UmVwbGFjZVBhdGhXaXRoU3Ryb2tlZFBhdGgoY29udGV4dCk7CisgICAgICAg
IENHQ29udGV4dENsaXAoY29udGV4dCk7CisgICAgICAgIENHQ29udGV4dERyYXdTaGFkaW5nKGNv
bnRleHQsIG1fY29tbW9uLT5zdGF0ZS5maWxsR3JhZGllbnQtPnBsYXRmb3JtR3JhZGllbnQoKSk7
CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxS
ZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKK3sKKyAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgp
KQorICAgICAgICByZXR1cm47CisgICAgc3dpdGNoIChtX2NvbW1vbi0+c3RhdGUuc3Ryb2tlQ29s
b3JTcGFjZSkgeworICAgIGNhc2UgU29saWRDb2xvclNwYWNlOgorICAgICAgICBpZiAoZmlsbENv
bG9yKCkuYWxwaGEoKSkKKyAgICAgICAgICAgIENHQ29udGV4dEZpbGxSZWN0KHBsYXRmb3JtQ29u
dGV4dCgpLCByZWN0KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQYXR0ZXJuQ29sb3JTcGFj
ZToKKyAgICAgICAgQ0dDb250ZXh0RmlsbFJlY3QocGxhdGZvcm1Db250ZXh0KCksIHJlY3QpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIEdyYWRpZW50Q29sb3JTcGFjZToKKyAgICAgICAgY2xp
cChyZWN0KTsKKyAgICAgICAgQ0dDb250ZXh0RHJhd1NoYWRpbmcocGxhdGZvcm1Db250ZXh0KCks
IG1fY29tbW9uLT5zdGF0ZS5maWxsR3JhZGllbnQtPnBsYXRmb3JtR3JhZGllbnQoKSk7CisgICAg
ICAgIGJyZWFrOwogICAgIH0KIH0KIApAQCAtNDM5LDcgKzUwMyw2IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjpmaWxsUm91bmRlZFJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50U2l6
ZSYgdG9wTGVmCiAgICAgICAgIHNldENHRmlsbENvbG9yKGNvbnRleHQsIG9sZEZpbGxDb2xvcik7
CiB9CiAKLQogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXAoY29uc3QgRmxvYXRSZWN0JiByZWN0
KQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCkBAIC05MTAsOSArOTczLDExIEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVRleHREcmF3aW5nTW9kZShpbnQgbW9kZSkK
ICAgICB9CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjphcHBseVN0cm9rZVBhdHRlcm4oY29u
c3QgUGF0dGVybiYgcGF0dGVybikKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVN0
cm9rZVBhdHRlcm4oUGF0dGVybiogcGF0dGVybikKIHsKLSAgICBDR1BhdHRlcm5SZWYgcGxhdGZv
cm1QYXR0ZXJuID0gcGF0dGVybi5jcmVhdGVQbGF0Zm9ybVBhdHRlcm4oZ2V0Q1RNKCkpOworICAg
IGlmIChwYWludGluZ0Rpc2FibGVkKCkpCisgICAgICAgIHJldHVybjsKKyAgICBDR1BhdHRlcm5S
ZWYgcGxhdGZvcm1QYXR0ZXJuID0gcGF0dGVybi0+Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKGdldENU
TSgpKTsKICAgICBpZiAoIXBsYXRmb3JtUGF0dGVybikKICAgICAgICAgcmV0dXJuOwogCkBAIC05
MjUsOSArOTkwLDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjphcHBseVN0cm9rZVBhdHRlcm4o
Y29uc3QgUGF0dGVybiYgcGF0dGVybikKICAgICBDR1BhdHRlcm5SZWxlYXNlKHBsYXRmb3JtUGF0
dGVybik7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjphcHBseUZpbGxQYXR0ZXJuKGNvbnN0
IFBhdHRlcm4mIHBhdHRlcm4pCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1GaWxs
UGF0dGVybihQYXR0ZXJuKiBwYXR0ZXJuKQogewotICAgIENHUGF0dGVyblJlZiBwbGF0Zm9ybVBh
dHRlcm4gPSBwYXR0ZXJuLmNyZWF0ZVBsYXRmb3JtUGF0dGVybihnZXRDVE0oKSk7CisgICAgaWYg
KHBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIENHUGF0dGVyblJlZiBw
bGF0Zm9ybVBhdHRlcm4gPSBwYXR0ZXJuLT5jcmVhdGVQbGF0Zm9ybVBhdHRlcm4oZ2V0Q1RNKCkp
OwogICAgIGlmICghcGxhdGZvcm1QYXR0ZXJuKQogICAgICAgICByZXR1cm47CiAKQEAgLTk0MCw2
ICsxMDA3LDE4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjphcHBseUZpbGxQYXR0ZXJuKGNvbnN0
IFBhdHRlcm4mIHBhdHRlcm4pCiAgICAgQ0dQYXR0ZXJuUmVsZWFzZShwbGF0Zm9ybVBhdHRlcm4p
OwogfQogCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TdHJva2VHcmFkaWVudChH
cmFkaWVudCopCit7CisgICAgLy8gQ29yZUdyYXBoaWNzIGRvZXMgbm90IHN1cHBvcnQgc2V0dGlu
ZyBhICJzdHJva2UgZ3JhZGllbnQiLCBvbmx5CisgICAgLy8gZmlsbGluZyBhIGNsaXAgcmVnaW9u
IHdpdGggYSBncmFkaWVudCwgd2hpY2ggd2UgZG8gYXQgZHJhdyB0aW1lCit9CisKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybUZpbGxHcmFkaWVudChHcmFkaWVudCopCit7CisgICAg
Ly8gQ29yZUdyYXBoaWNzIGRvZXMgbm90IHN1cHBvcnQgc2V0dGluZyBhICJmaWxsIGdyYWRpZW50
Iiwgb25seQorICAgIC8vIGZpbGxpbmcgYSBjbGlwIHJlZ2lvbiB3aXRoIGEgZ3JhZGllbnQsIHdo
aWNoIHdlIGRvIGF0IGRyYXcgdGltZQorfQorCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxh
dGZvcm1TdHJva2VDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiB7CiAgICAgaWYgKHBhaW50aW5n
RGlzYWJsZWQoKSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3Jh
cGhpY3NDb250ZXh0UXQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGlj
c0NvbnRleHRRdC5jcHAKaW5kZXggMDZjZTNjOC4uNzJlZDAwNyAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHAKKysrIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHAKQEAgLTg0OSw2ICs4
NDksMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBPdXRFbGxpcHNlSW5SZWN0KGNvbnN0
IEludFJlY3QmIHJlY3QpCiAgICAgcC0+c2V0Q2xpcFBhdGgobmV3Q2xpcCwgUXQ6OkludGVyc2Vj
dENsaXApOwogfQogCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIoY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VCdWZmZXIqKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7Cit9CisKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjphZGRJbm5lclJvdW5kZWRSZWN0Q2xpcChj
b25zdCBJbnRSZWN0JiByZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCB0aGlja25lc3MpCiB7CkBAIC05MjYsMjAgKzkzMSw2IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybUZpbGxDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiAg
ICAgbV9kYXRhLT5wKCktPnNldEJydXNoKFFCcnVzaChjb2xvcikpOwogfQogCi12b2lkIEdyYXBo
aWNzQ29udGV4dDo6YXBwbHlTdHJva2VQYXR0ZXJuKGNvbnN0IFBhdHRlcm4mIHBhdHRlcm4pCi17
Ci0gICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIG5vdElt
cGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0OjphcHBseUZpbGxQYXR0ZXJu
KGNvbnN0IFBhdHRlcm4mIHBhdHRlcm4pCi17Ci0gICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkK
LSAgICAgICAgcmV0dXJuOwotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KIHZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpzZXRVc2VBbnRpYWxpYXNpbmcoYm9vbCBlbmFibGUpCiB7CiAgICAgaWYgKHBh
aW50aW5nRGlzYWJsZWQoKSkKQEAgLTEwMzMsNiArMTAyNCwxNSBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6cmVsZWFzZVdpbmRvd3NDb250ZXh0KEhEQyBoZGMsIGNvbnN0IEludFJlY3QmIGRzdFJl
Y3QsIGJvbwogfQogI2VuZGlmCiAKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRJbWFnZUludGVy
cG9sYXRpb25RdWFsaXR5KEludGVycG9sYXRpb25RdWFsaXR5KQoreworfQorCitJbnRlcnBvbGF0
aW9uUXVhbGl0eSBHcmFwaGljc0NvbnRleHQ6OmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKSBj
b25zdAoreworICAgIHJldHVybiBJbnRlcnBvbGF0aW9uRGVmYXVsdDsKK30KKwogfQogCiAvLyB2
aW06IHRzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
eC9HcmFwaGljc0NvbnRleHRXeC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3d4L0dy
YXBoaWNzQ29udGV4dFd4LmNwcAppbmRleCBlOGJmMjZjLi43NTYxZjNlIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3d4L0dyYXBoaWNzQ29udGV4dFd4LmNwcAorKysgYi9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3d4L0dyYXBoaWNzQ29udGV4dFd4LmNwcApAQCAtMzU0
LDYgKzM1NCwxMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcChjb25zdCBQYXRoJikKICAg
ICBub3RJbXBsZW1lbnRlZCgpOwogfQogCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvSW1h
Z2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VCdWZmZXIqKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKIEFmZmluZVRyYW5zZm9ybSBHcmFwaGljc0NvbnRleHQ6Omdl
dENUTSgpIGNvbnN0CiB7IAogICAgIG5vdEltcGxlbWVudGVkKCk7CkBAIC00NzYsMTggKzQ4MSwx
MyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0VXNlQW50aWFsaWFzaW5nKGJvb2wgZW5hYmxl
KQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjphcHBs
eUZpbGxQYXR0ZXJuKGNvbnN0IFBhdHRlcm4mKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldElt
YWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJwb2xhdGlvblF1YWxpdHkpCiB7Ci0gICAgaWYg
KHBhaW50aW5nRGlzYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIG5vdEltcGxlbWVudGVk
KCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjphcHBseVN0cm9rZVBhdHRlcm4oY29uc3Qg
UGF0dGVybiYpCitJbnRlcnBvbGF0aW9uUXVhbGl0eSBHcmFwaGljc0NvbnRleHQ6OmltYWdlSW50
ZXJwb2xhdGlvblF1YWxpdHkoKSBjb25zdAogewotICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkp
Ci0gICAgICAgIHJldHVybjsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBJbnRl
cnBvbGF0aW9uRGVmYXVsdDsKIH0KIAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22992</attachid>
            <date>2008-08-25 22:36:40 -0700</date>
            <delta_ts>2008-08-25 22:36:40 -0700</delta_ts>
            <desc>Update SVG to use new fill/stroke functions</desc>
            <filename>Update-SVG-to-use-new-fill-stroke-functions.patch</filename>
            <type>text/plain</type>
            <size>4351</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">OTRkZmE3MTZiYzkyNjEyZGU0ZjhjY2M4MjlhZWM2YzQ3Y2M0ZDE4MQpkaWZmIC0tZ2l0IGEvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggZmU0ZmNmMS4uMjVjNTM1MSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNjM4LDkgKzE2MzgsNiBA
QAogCQkJcHJvZHVjdFJlZkdyb3VwID0gMDM0NzY4REZGRjM4QTUwNDExREI5QzhCIC8qIFByb2R1
Y3RzICovOwogCQkJcHJvamVjdERpclBhdGggPSAiIjsKIAkJCXByb2plY3RSb290ID0gIiI7Ci0J
CQlwcm9qZWN0Um9vdHMgPSAoCi0JCQkJIiIsCi0JCQkpOwogCQkJdGFyZ2V0cyA9ICgKIAkJCQk5
MzJGNUJFMzA4MjJBMUM3MDA3MzY5NzUgLyogQWxsICovLAogCQkJCTkzMkY1QjNFMDgyMkExQzcw
MDczNjk3NSAvKiBKYXZhU2NyaXB0Q29yZSAqLywKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3ZnL2dy
YXBoaWNzL1NWR1BhaW50U2VydmVyLmggYi9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdQYWludFNl
cnZlci5oCmluZGV4IGE3NGQ2MmMuLjg4NGQyYTUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3ZnL2dy
YXBoaWNzL1NWR1BhaW50U2VydmVyLmgKKysrIGIvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHUGFp
bnRTZXJ2ZXIuaApAQCAtODksMTMgKzg5LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICBzdGF0aWMgU1ZHUGFpbnRTZXJ2ZXJTb2xpZCogc2hhcmVkU29saWRQYWludFNlcnZlcigpOwog
CiAgICAgcHJvdGVjdGVkOgotI2lmIFBMQVRGT1JNKENHKQotICAgICAgICB2b2lkIHN0cm9rZVBh
dGgoQ0dDb250ZXh0UmVmLCBjb25zdCBSZW5kZXJPYmplY3QqKSBjb25zdDsKLSAgICAgICAgdm9p
ZCBjbGlwVG9TdHJva2VQYXRoKENHQ29udGV4dFJlZiwgY29uc3QgUmVuZGVyT2JqZWN0KikgY29u
c3Q7Ci0gICAgICAgIHZvaWQgZmlsbFBhdGgoQ0dDb250ZXh0UmVmLCBjb25zdCBSZW5kZXJPYmpl
Y3QqKSBjb25zdDsKLSAgICAgICAgdm9pZCBjbGlwVG9GaWxsUGF0aChDR0NvbnRleHRSZWYsIGNv
bnN0IFJlbmRlck9iamVjdCopIGNvbnN0OwotI2VuZGlmCi0KICNpZiBQTEFURk9STShRVCkKICAg
ICAgICAgdm9pZCBzZXRQZW5Qcm9wZXJ0aWVzKGNvbnN0IFJlbmRlck9iamVjdCosIGNvbnN0IFJl
bmRlclN0eWxlKiwgUVBlbiYpIGNvbnN0OwogI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJDb3JlL3N2
Zy9ncmFwaGljcy9jZy9TVkdQYWludFNlcnZlckNnLmNwcCBiL1dlYkNvcmUvc3ZnL2dyYXBoaWNz
L2NnL1NWR1BhaW50U2VydmVyQ2cuY3BwCmluZGV4IDM1ZWIyMzkuLjgxMGI0NjMgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2NnL1NWR1BhaW50U2VydmVyQ2cuY3BwCisrKyBiL1dl
YkNvcmUvc3ZnL2dyYXBoaWNzL2NnL1NWR1BhaW50U2VydmVyQ2cuY3BwCkBAIC00Niw0MCArNDYs
MTIgQEAgdm9pZCBTVkdQYWludFNlcnZlcjo6dGVhcmRvd24oR3JhcGhpY3NDb250ZXh0KiYsIGNv
bnN0IFJlbmRlck9iamVjdCosIFNWR1BhaW50VGEKIHZvaWQgU1ZHUGFpbnRTZXJ2ZXI6OnJlbmRl
clBhdGgoR3JhcGhpY3NDb250ZXh0KiYgY29udGV4dCwgY29uc3QgUmVuZGVyT2JqZWN0KiBwYXRo
LCBTVkdQYWludFRhcmdldFR5cGUgdHlwZSkgY29uc3QKIHsKICAgICBSZW5kZXJTdHlsZSogc3R5
bGUgPSBwYXRoID8gcGF0aC0+c3R5bGUoKSA6IDA7Ci0gICAgQ0dDb250ZXh0UmVmIGNvbnRleHRS
ZWYgPSBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKTsKIAogICAgIGlmICgodHlwZSAmIEFwcGx5
VG9GaWxsVGFyZ2V0VHlwZSkgJiYgKCFzdHlsZSB8fCBzdHlsZS0+c3ZnU3R5bGUoKS0+aGFzRmls
bCgpKSkKLSAgICAgICAgZmlsbFBhdGgoY29udGV4dFJlZiwgcGF0aCk7CisgICAgICAgIGNvbnRl
eHQtPmZpbGxQYXRoKCk7CiAKICAgICBpZiAoKHR5cGUgJiBBcHBseVRvU3Ryb2tlVGFyZ2V0VHlw
ZSkgJiYgKCFzdHlsZSB8fCBzdHlsZS0+c3ZnU3R5bGUoKS0+aGFzU3Ryb2tlKCkpKQotICAgICAg
ICBzdHJva2VQYXRoKGNvbnRleHRSZWYsIHBhdGgpOwotfQotCi12b2lkIFNWR1BhaW50U2VydmVy
OjpzdHJva2VQYXRoKENHQ29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBSZW5kZXJPYmplY3QqKSBj
b25zdAotewotICAgIENHQ29udGV4dFN0cm9rZVBhdGgoY29udGV4dCk7Ci19Ci0KLXZvaWQgU1ZH
UGFpbnRTZXJ2ZXI6OmNsaXBUb1N0cm9rZVBhdGgoQ0dDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0
IFJlbmRlck9iamVjdCopIGNvbnN0Ci17Ci0gICAgQ0dDb250ZXh0UmVwbGFjZVBhdGhXaXRoU3Ry
b2tlZFBhdGgoY29udGV4dCk7Ci0gICAgQ0dDb250ZXh0Q2xpcChjb250ZXh0KTsKLX0KLQotdm9p
ZCBTVkdQYWludFNlcnZlcjo6ZmlsbFBhdGgoQ0dDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IFJl
bmRlck9iamVjdCogcGF0aCkgY29uc3QKLXsKLSAgICBpZiAoIXBhdGggfHwgcGF0aC0+c3R5bGUo
KS0+c3ZnU3R5bGUoKS0+ZmlsbFJ1bGUoKSA9PSBSVUxFX0VWRU5PREQpCi0gICAgICAgIENHQ29u
dGV4dEVPRmlsbFBhdGgoY29udGV4dCk7Ci0gICAgZWxzZQotICAgICAgICBDR0NvbnRleHRGaWxs
UGF0aChjb250ZXh0KTsKLX0KLQotdm9pZCBTVkdQYWludFNlcnZlcjo6Y2xpcFRvRmlsbFBhdGgo
Q0dDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IFJlbmRlck9iamVjdCogcGF0aCkgY29uc3QKLXsK
LSAgICBpZiAoIXBhdGggfHwgcGF0aC0+c3R5bGUoKS0+c3ZnU3R5bGUoKS0+ZmlsbFJ1bGUoKSA9
PSBSVUxFX0VWRU5PREQpCi0gICAgICAgIENHQ29udGV4dEVPQ2xpcChjb250ZXh0KTsKLSAgICBl
bHNlCi0gICAgICAgIENHQ29udGV4dENsaXAoY29udGV4dCk7CisgICAgICAgIGNvbnRleHQtPnN0
cm9rZVBhdGgoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvY2cvU1ZHUGFpbnRTZXJ2ZXJHcmFkaWVudENnLmNwcCBiL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL2NnL1NWR1BhaW50U2VydmVyR3JhZGllbnRDZy5jcHAKaW5kZXggNjgx
YWU3Yy4uMTIyMWM4MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvY2cvU1ZHUGFp
bnRTZXJ2ZXJHcmFkaWVudENnLmNwcAorKysgYi9XZWJDb3JlL3N2Zy9ncmFwaGljcy9jZy9TVkdQ
YWludFNlcnZlckdyYWRpZW50Q2cuY3BwCkBAIC0yMzAsMTEgKzIzMCwxMCBAQCB2b2lkIFNWR1Bh
aW50U2VydmVyR3JhZGllbnQ6OnRlYXJkb3duKEdyYXBoaWNzQ29udGV4dComIGNvbnRleHQsIGNv
bnN0IFJlbmRlck9iagogCiB2b2lkIFNWR1BhaW50U2VydmVyR3JhZGllbnQ6OnJlbmRlclBhdGgo
R3JhcGhpY3NDb250ZXh0KiYgY29udGV4dCwgY29uc3QgUmVuZGVyT2JqZWN0KiBwYXRoLCBTVkdQ
YWludFRhcmdldFR5cGUgdHlwZSkgY29uc3QKIHsKLSAgICBSZW5kZXJTdHlsZSogc3R5bGUgPSBw
YXRoLT5zdHlsZSgpOwotICAgIENHQ29udGV4dFJlZiBjb250ZXh0UmVmID0gY29udGV4dC0+cGxh
dGZvcm1Db250ZXh0KCk7Ci0gICAgQVNTRVJUKGNvbnRleHRSZWYpOwotICAgIAotICAgIGJvb2wg
aXNGaWxsZWQgPSAodHlwZSAmIEFwcGx5VG9GaWxsVGFyZ2V0VHlwZSkgJiYgc3R5bGUtPnN2Z1N0
eWxlKCktPmhhc0ZpbGwoKTsKKyAgICBpZiAoKHR5cGUgJiBBcHBseVRvRmlsbFRhcmdldFR5cGUp
ICYmIHBhdGgtPnN0eWxlKCktPnN2Z1N0eWxlKCktPmhhc0ZpbGwoKSkKKyAgICAgICAgY29udGV4
dC0+ZmlsbFBhdGgoKTsKKyAgICBlbHNlCisgICAgICAgIGNvbnRleHQtPnN0cm9rZVBhdGgoKTsK
IAogICAgIC8vIENvbXB1dGUgZGVzdGluYXRpb24gb2JqZWN0IGJvdW5kaW5nIGJveAogICAgIEZs
b2F0UmVjdCBvYmplY3RCQm94OwpAQCAtMjQ0LDExICsyNDMsNiBAQCB2b2lkIFNWR1BhaW50U2Vy
dmVyR3JhZGllbnQ6OnJlbmRlclBhdGgoR3JhcGhpY3NDb250ZXh0KiYgY29udGV4dCwgY29uc3Qg
UmVuZGVyTwogICAgICAgICAgICAgb2JqZWN0QkJveCA9IGJib3g7CiAgICAgfQogCi0gICAgaWYg
KGlzRmlsbGVkKQotICAgICAgICBjbGlwVG9GaWxsUGF0aChjb250ZXh0UmVmLCBwYXRoKTsKLSAg
ICBlbHNlCi0gICAgICAgIGNsaXBUb1N0cm9rZVBhdGgoY29udGV4dFJlZiwgcGF0aCk7Ci0KICAg
ICBoYW5kbGVCb3VuZGluZ0JveE1vZGVBbmRHcmFkaWVudFRyYW5zZm9ybWF0aW9uKGNvbnRleHQs
IG9iamVjdEJCb3gpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22993</attachid>
            <date>2008-08-25 22:36:43 -0700</date>
            <delta_ts>2008-08-25 22:36:43 -0700</delta_ts>
            <desc>Attempt to make SVG work with Gradient</desc>
            <filename>Attempt-to-make-SVG-work-with-Gradient.patch</filename>
            <type>text/plain</type>
            <size>30241</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">NTJhYmFkMjFiOTdmMmQ0ZmQ3MGNkNTQwMWQ5NjdhMmY5MzMyMzRkNgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudC5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFkaWVudC5oCmluZGV4IDI4MDc4NzcuLjcxM2EyMDAgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnQuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYWRpZW50LmgKQEAgLTgyLDcgKzgyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICAgICAgZmxvYXQgZ3JlZW47CiAgICAgICAgICAgICBmbG9hdCBibHVlOwogICAgICAg
ICAgICAgZmxvYXQgYWxwaGE7Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAgQ29sb3JTdG9w
KCkgOiBzdG9wKDApLCByZWQoMCksIGdyZWVuKDApLCBibHVlKDApLCBhbHBoYSgwKSB7IH0KICAg
ICAgICAgICAgIENvbG9yU3RvcChmbG9hdCBzLCBmbG9hdCByLCBmbG9hdCBnLCBmbG9hdCBiLCBm
bG9hdCBhKSA6IHN0b3AocyksIHJlZChyKSwgZ3JlZW4oZyksIGJsdWUoYiksIGFscGhhKGEpIHsg
fQogICAgICAgICB9OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuY3BwCmluZGV4IDcwYzJlYTcuLjllY2I1ZWEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKQEAgLTE3OSw2ICsxNzksMTYgQEAgQ29sb3IgR3Jh
cGhpY3NDb250ZXh0OjpzdHJva2VDb2xvcigpIGNvbnN0CiAgICAgcmV0dXJuIG1fY29tbW9uLT5z
dGF0ZS5zdHJva2VDb2xvcjsKIH0KIAorV2luZFJ1bGUgR3JhcGhpY3NDb250ZXh0OjpmaWxsUnVs
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29tbW9uLT5zdGF0ZS5maWxsUnVsZTsKK30KKwor
dm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldEZpbGxSdWxlKFdpbmRSdWxlIGZpbGxSdWxlKQorewor
ICAgIG1fY29tbW9uLT5zdGF0ZS5maWxsUnVsZSA9IGZpbGxSdWxlOworfQorCiB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6c2V0RmlsbENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKIHsKICAgICBtX2Nv
bW1vbi0+c3RhdGUuZmlsbENvbG9yU3BhY2UgPSBTb2xpZENvbG9yU3BhY2U7CkBAIC0xOTMsNiAr
MjAzLDExIEBAIENvbG9yIEdyYXBoaWNzQ29udGV4dDo6ZmlsbENvbG9yKCkgY29uc3QKIAogdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OnNldFN0cm9rZVBhdHRlcm4oUGFzc1JlZlB0cjxQYXR0ZXJuPiBw
YXR0ZXJuKQogeworICAgIEFTU0VSVChwYXR0ZXJuKTsKKyAgICBpZiAoIXBhdHRlcm4pIHsKKyAg
ICAgICAgc2V0U3Ryb2tlQ29sb3IoQ29sb3I6OmJsYWNrKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KICAgICBtX2NvbW1vbi0+c3RhdGUuc3Ryb2tlQ29sb3JTcGFjZSA9IFBhdHRlcm5Db2xvclNw
YWNlOwogICAgIG1fY29tbW9uLT5zdGF0ZS5zdHJva2VQYXR0ZXJuID0gcGF0dGVybjsKICAgICBz
ZXRQbGF0Zm9ybVN0cm9rZVBhdHRlcm4obV9jb21tb24tPnN0YXRlLnN0cm9rZVBhdHRlcm4uZ2V0
KCkpOwpAQCAtMjAwLDYgKzIxNSwxMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0U3Ryb2tl
UGF0dGVybihQYXNzUmVmUHRyPFBhdHRlcm4+IHBhdHRlcm4pCiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0OjpzZXRGaWxsUGF0dGVybihQYXNzUmVmUHRyPFBhdHRlcm4+IHBhdHRlcm4pCiB7CisgICAg
QVNTRVJUKHBhdHRlcm4pOworICAgIGlmICghcGF0dGVybikgeworICAgICAgICBzZXRGaWxsQ29s
b3IoQ29sb3I6OmJsYWNrKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICBtX2NvbW1vbi0+
c3RhdGUuZmlsbENvbG9yU3BhY2UgPSBQYXR0ZXJuQ29sb3JTcGFjZTsKICAgICBtX2NvbW1vbi0+
c3RhdGUuZmlsbFBhdHRlcm4gPSBwYXR0ZXJuOwogICAgIHNldFBsYXRmb3JtRmlsbFBhdHRlcm4o
bV9jb21tb24tPnN0YXRlLmZpbGxQYXR0ZXJuLmdldCgpKTsKQEAgLTIwNyw2ICsyMjcsMTEgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldEZpbGxQYXR0ZXJuKFBhc3NSZWZQdHI8UGF0dGVybj4g
cGF0dGVybikKIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFN0cm9rZUdyYWRpZW50KFBhc3NS
ZWZQdHI8R3JhZGllbnQ+IGdyYWRpZW50KQogeworICAgIEFTU0VSVChncmFkaWVudCk7CisgICAg
aWYgKCFncmFkaWVudCkgeworICAgICAgICBzZXRTdHJva2VDb2xvcihDb2xvcjo6YmxhY2spOwor
ICAgICAgICByZXR1cm47CisgICAgfQogICAgIG1fY29tbW9uLT5zdGF0ZS5zdHJva2VDb2xvclNw
YWNlID0gR3JhZGllbnRDb2xvclNwYWNlOwogICAgIG1fY29tbW9uLT5zdGF0ZS5zdHJva2VHcmFk
aWVudCA9IGdyYWRpZW50OwogICAgIHNldFBsYXRmb3JtU3Ryb2tlR3JhZGllbnQobV9jb21tb24t
PnN0YXRlLnN0cm9rZUdyYWRpZW50LmdldCgpKTsKQEAgLTIxNCw2ICsyMzksMTEgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQ6OnNldFN0cm9rZUdyYWRpZW50KFBhc3NSZWZQdHI8R3JhZGllbnQ+IGdy
YWRpZW50KQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0RmlsbEdyYWRpZW50KFBhc3NSZWZQ
dHI8R3JhZGllbnQ+IGdyYWRpZW50KQogeworICAgIEFTU0VSVChncmFkaWVudCk7CisgICAgaWYg
KCFncmFkaWVudCkgeworICAgICAgICBzZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KICAgICBtX2NvbW1vbi0+c3RhdGUuZmlsbENvbG9yU3BhY2UgPSBH
cmFkaWVudENvbG9yU3BhY2U7CiAgICAgbV9jb21tb24tPnN0YXRlLmZpbGxHcmFkaWVudCA9IGdy
YWRpZW50OwogICAgIHNldFBsYXRmb3JtRmlsbEdyYWRpZW50KG1fY29tbW9uLT5zdGF0ZS5maWxs
R3JhZGllbnQuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQuaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0LmgKaW5kZXggODViODNkNC4uY2EyOGZmZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC0xNDMsNiArMTQzLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICB2b2lkIHNldFN0cm9rZVBhdHRlcm4oUGFzc1JlZlB0cjxQYXR0ZXJuPik7
CiAgICAgICAgIHZvaWQgc2V0U3Ryb2tlR3JhZGllbnQoUGFzc1JlZlB0cjxHcmFkaWVudD4pOwog
CisgICAgICAgIFdpbmRSdWxlIGZpbGxSdWxlKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0Rmls
bFJ1bGUoV2luZFJ1bGUpOwogICAgICAgICBDb2xvciBmaWxsQ29sb3IoKSBjb25zdDsKICAgICAg
ICAgdm9pZCBzZXRGaWxsQ29sb3IoY29uc3QgQ29sb3ImKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc1R5cGVzLmgKaW5kZXggYjNjYTk5YS4uYWU1OWM1OSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzLmgKKysrIGIvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzLmgKQEAgLTY1LDYgKzY1LDYgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgIFN0cmluZyBsaW5lSm9pbk5hbWUoTGluZUpvaW4pOwogICAgIGJv
b2wgcGFyc2VMaW5lSm9pbihjb25zdCBTdHJpbmcmLCBMaW5lSm9pbiYpOwogCi19Cit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAppbmRleCA0NWQyYWM5Li4xMTc1NmY4IDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNw
cAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNw
cApAQCAtMjYyLDE0ICsyNjIsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0VsbGlwc2Uo
Y29uc3QgSW50UmVjdCYgcmVjdCkKICAgICBDR0NvbnRleHRBZGRBcmMoY29udGV4dCwgcmVjdC54
KCkgKyByLCByZWN0LnkoKSArIHIsIHIsIDAuMGYsIDIuMGYgKiBwaUZsb2F0LCAwKTsKICAgICBD
R0NvbnRleHRDbG9zZVBhdGgoY29udGV4dCk7CiAKLSAgICBpZiAoZmlsbENvbG9yKCkuYWxwaGEo
KSkgewotICAgICAgICBpZiAoc3Ryb2tlU3R5bGUoKSAhPSBOb1N0cm9rZSkKLSAgICAgICAgICAg
IC8vIHN0cm9rZSBhbmQgZmlsbAotICAgICAgICAgICAgQ0dDb250ZXh0RHJhd1BhdGgoY29udGV4
dCwga0NHUGF0aEZpbGxTdHJva2UpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBDR0NvbnRl
eHRGaWxsUGF0aChjb250ZXh0KTsKLSAgICB9IGVsc2UgaWYgKHN0cm9rZVN0eWxlKCkgIT0gTm9T
dHJva2UpCi0gICAgICAgIENHQ29udGV4dFN0cm9rZVBhdGgoY29udGV4dCk7CisgICAgZHJhd1Bh
dGgoKTsKIH0KIAogCkBAIC0zODIsMjUgKzM3NSw2NSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZHJhd0NvbnZleFBvbHlnb24oc2l6ZV90IG5wb2ludHMsIGNvbnN0IEZsb2F0UG9pbnQqIHBvaW50
cwogICAgICAgICBDR0NvbnRleHRBZGRMaW5lVG9Qb2ludChjb250ZXh0LCBwb2ludHNbaV0ueCgp
LCBwb2ludHNbaV0ueSgpKTsKICAgICBDR0NvbnRleHRDbG9zZVBhdGgoY29udGV4dCk7CiAKLSAg
ICBpZiAoZmlsbENvbG9yKCkuYWxwaGEoKSkgewotICAgICAgICBpZiAoc3Ryb2tlU3R5bGUoKSAh
PSBOb1N0cm9rZSkKLSAgICAgICAgICAgIENHQ29udGV4dERyYXdQYXRoKGNvbnRleHQsIGtDR1Bh
dGhFT0ZpbGxTdHJva2UpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBDR0NvbnRleHRFT0Zp
bGxQYXRoKGNvbnRleHQpOwotICAgIH0gZWxzZQotICAgICAgICBDR0NvbnRleHRTdHJva2VQYXRo
KGNvbnRleHQpOworICAgIGRyYXdQYXRoKCk7CiAKICAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRl
KGNvbnRleHQpOwogfQogCitzdGF0aWMgaW5saW5lIGJvb2wgY2FsY3VsYXRlRHJhd2luZ01vZGUo
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBDR1BhdGhEcmF3aW5nTW9kZSYgbW9kZSkKK3sKKyAg
ICBib29sIHNob3VsZEZpbGwgPSBjb250ZXh0LT5maWxsQ29sb3IoKS5hbHBoYSgpOworICAgIGJv
b2wgc2hvdWxkU3Ryb2tlID0gY29udGV4dC0+c3Ryb2tlU3R5bGUoKSAhPSBOb1N0cm9rZTsKKyAg
ICBib29sIHVzZUVPRmlsbCA9IGNvbnRleHQtPmZpbGxSdWxlKCkgPT0gUlVMRV9FVkVOT0REOwor
CisgICAgaWYgKHNob3VsZEZpbGwpIHsKKyAgICAgICAgaWYgKHNob3VsZFN0cm9rZSkgeworICAg
ICAgICAgICAgaWYgKHVzZUVPRmlsbCkKKyAgICAgICAgICAgICAgICBtb2RlID0ga0NHUGF0aEVP
RmlsbFN0cm9rZTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBtb2RlID0ga0NH
UGF0aEZpbGxTdHJva2U7CisgICAgICAgIH0gZWxzZSB7IC8vIGZpbGwsIG5vIHN0cm9rZQorICAg
ICAgICAgICAgaWYgKHVzZUVPRmlsbCkKKyAgICAgICAgICAgICAgICBtb2RlID0ga0NHUGF0aEVP
RmlsbDsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBtb2RlID0ga0NHUGF0aEZp
bGw7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKHNob3VsZFN0cm9rZSkgLy8gbm8gZmlsbCwg
anVzdCBzdHJva2UKKyAgICAgICAgbW9kZSA9IGtDR1BhdGhTdHJva2U7CisKKyAgICByZXR1cm4g
c2hvdWxkRmlsbCB8fCBzaG91bGRTdHJva2U7Cit9CisKIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpk
cmF3UGF0aCgpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgLy8gV2Ugc2hvdWxkIGludmVzdGlnYXRlIHVzaW5nIENHQ29udGV4dERyYXdQYXRo
IGZvciBwb3NzaWJsZSBvcHRpbWl6YXRpb24KLSAgICBmaWxsUGF0aCgpOwotICAgIHN0cm9rZVBh
dGgoKTsKKyAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IHBsYXRmb3JtQ29udGV4dCgpOworICAg
IHN3aXRjaCAobV9jb21tb24tPnN0YXRlLmZpbGxDb2xvclNwYWNlKSB7CisgICAgY2FzZSBTb2xp
ZENvbG9yU3BhY2U6CisgICAgICAgIGlmICghZmlsbENvbG9yKCkuYWxwaGEoKSkKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgLy8gZmFsbCB0aHJvdWdoCisgICAgY2FzZSBQYXR0ZXJuQ29s
b3JTcGFjZToKKyAgICAgICAgQ0dQYXRoRHJhd2luZ01vZGUgZHJhd2luZ01vZGU7CisgICAgICAg
IGlmIChjYWxjdWxhdGVEcmF3aW5nTW9kZSh0aGlzLCBkcmF3aW5nTW9kZSkpCisgICAgICAgICAg
ICBDR0NvbnRleHREcmF3UGF0aChjb250ZXh0LCBkcmF3aW5nTW9kZSk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgR3JhZGllbnRDb2xvclNwYWNlOgorICAgICAgICAvLyBXZSBkb24ndCBoYXZl
IGFueSBvcHRpbWl6ZWQgd2F5IHRvIGZpbGwgJiBzdHJva2UgZ3JhZGllbnRzCisgICAgICAgIGZp
bGxQYXRoKCk7CisgICAgICAgIHN0cm9rZVBhdGgoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
fQorCitzdGF0aWMgaW5saW5lIHZvaWQgZmlsbFBhdGhXaXRoRmlsbFJ1bGUoQ0dDb250ZXh0UmVm
IGNvbnRleHQsIFdpbmRSdWxlIGZpbGxSdWxlKQoreworICAgIGlmIChmaWxsUnVsZSA9PSBSVUxF
X0VWRU5PREQpCisgICAgICAgIENHQ29udGV4dEVPRmlsbFBhdGgoY29udGV4dCk7CisgICAgZWxz
ZQorICAgICAgICBDR0NvbnRleHRGaWxsUGF0aChjb250ZXh0KTsKIH0KIAogdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OmZpbGxQYXRoKCkKQEAgLTQxNSwxMyArNDQ4LDEwIEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjpmaWxsUGF0aCgpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIC8vIGZhbGwg
dGhyb3VnaAogICAgIGNhc2UgUGF0dGVybkNvbG9yU3BhY2U6Ci0gICAgICAgIGlmIChtX2NvbW1v
bi0+c3RhdGUuZmlsbFJ1bGUgPT0gUlVMRV9FVkVOT0REKQotICAgICAgICAgICAgQ0dDb250ZXh0
RU9GaWxsUGF0aChjb250ZXh0KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgQ0dDb250ZXh0
RmlsbFBhdGgoY29udGV4dCk7CisgICAgICAgIGZpbGxQYXRoV2l0aEZpbGxSdWxlKGNvbnRleHQs
IGZpbGxSdWxlKCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEdyYWRpZW50Q29sb3JTcGFj
ZToKLSAgICAgICAgaWYgKG1fY29tbW9uLT5zdGF0ZS5maWxsUnVsZSA9PSBSVUxFX0VWRU5PREQp
CisgICAgICAgIGlmIChmaWxsUnVsZSgpID09IFJVTEVfRVZFTk9ERCkKICAgICAgICAgICAgIENH
Q29udGV4dEVPQ2xpcChjb250ZXh0KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgQ0dDb250
ZXh0Q2xpcChjb250ZXh0KTsKQEAgLTQ5Nyw3ICs1MjcsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6ZmlsbFJvdW5kZWRSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFNpemUmIHRv
cExlZgogICAgICAgICBzZXRDR0ZpbGxDb2xvcihjb250ZXh0LCBjb2xvcik7CiAKICAgICBhZGRQ
YXRoKFBhdGg6OmNyZWF0ZVJvdW5kZWRSZWN0YW5nbGUocmVjdCwgdG9wTGVmdCwgdG9wUmlnaHQs
IGJvdHRvbUxlZnQsIGJvdHRvbVJpZ2h0KSk7Ci0gICAgQ0dDb250ZXh0RmlsbFBhdGgoY29udGV4
dCk7CisgICAgZmlsbFBhdGgoKTsKIAogICAgIGlmIChvbGRGaWxsQ29sb3IgIT0gY29sb3IpCiAg
ICAgICAgIHNldENHRmlsbENvbG9yKGNvbnRleHQsIG9sZEZpbGxDb2xvcik7CmRpZmYgLS1naXQg
YS9XZWJDb3JlL3JlbmRlcmluZy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNwcCBiL1dlYkNvcmUvcmVu
ZGVyaW5nL1NWR1JlbmRlclRyZWVBc1RleHQuY3BwCmluZGV4IGQzZTAyOWMuLjliMDQzNTkgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1NWR1JlbmRlclRyZWVBc1RleHQuY3BwCisrKyBi
L1dlYkNvcmUvcmVuZGVyaW5nL1NWR1JlbmRlclRyZWVBc1RleHQuY3BwCkBAIC0xNzgsNyArMTc4
LDYgQEAgc3RhdGljIHZvaWQgd3JpdGVJbmRlbnQoVGV4dFN0cmVhbSYgdHMsIGludCBpbmRlbnQp
CiAgICAgICAgIHRzIDw8ICIgICI7CiB9CiAKLS8vIEZJWE1FOiBNYXliZSB0aGlzIHNob3VsZCBi
ZSBpbiBLQ2FudmFzUmVuZGVyaW5nU3R5bGUuY3BwCiBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0
b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRGFzaEFycmF5JiBhKQogewogICAgIHRzIDw8ICJ7
IjsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3ZnL0dyYWRpZW50QXR0cmlidXRlcy5oIGIvV2ViQ29y
ZS9zdmcvR3JhZGllbnRBdHRyaWJ1dGVzLmgKaW5kZXggYzE2ZTk2MS4uMDQyN2U0YSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9zdmcvR3JhZGllbnRBdHRyaWJ1dGVzLmgKKysrIGIvV2ViQ29yZS9zdmcv
R3JhZGllbnRBdHRyaWJ1dGVzLmgKQEAgLTI2LDcgKzI2LDggQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUKIHsKLSAgICBzdHJ1Y3QgR3JhZGllbnRBdHRyaWJ1dGVzIHsKKyAgICBjbGFzcyBHcmFkaWVu
dEF0dHJpYnV0ZXMgeworICAgIHB1YmxpYzoKICAgICAgICAgR3JhZGllbnRBdHRyaWJ1dGVzKCkK
ICAgICAgICAgICAgIDogbV9zcHJlYWRNZXRob2QoU1BSRUFETUVUSE9EX1BBRCkKICAgICAgICAg
ICAgICwgbV9ib3VuZGluZ0JveE1vZGUodHJ1ZSkKQEAgLTM2LDYgKzM3LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUKICAgICAgICAgICAgICwgbV9zdG9wc1NldChmYWxzZSkKICAgICAgICAgewogICAg
ICAgICB9CisgICAgICAgIHZpcnR1YWwgfkdyYWRpZW50QXR0cmlidXRlcygpIHt9CiAKICAgICAg
ICAgU1ZHR3JhZGllbnRTcHJlYWRNZXRob2Qgc3ByZWFkTWV0aG9kKCkgY29uc3QgeyByZXR1cm4g
bV9zcHJlYWRNZXRob2Q7IH0KICAgICAgICAgYm9vbCBib3VuZGluZ0JveE1vZGUoKSBjb25zdCB7
IHJldHVybiBtX2JvdW5kaW5nQm94TW9kZTsgfQpAQCAtNTIsMTIgKzU0LDIwIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlCiAgICAgICAgIGJvb2wgaGFzR3JhZGllbnRUcmFuc2Zvcm0oKSBjb25zdCB7IHJl
dHVybiBtX2dyYWRpZW50VHJhbnNmb3JtU2V0OyB9CiAgICAgICAgIGJvb2wgaGFzU3RvcHMoKSBj
b25zdCB7IHJldHVybiBtX3N0b3BzU2V0OyB9CiAKKyAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRy
PEdyYWRpZW50PiBjcmVhdGVHcmFkaWVudCgpID0gMDsKKworICAgICAgICB2b2lkIGFkZFN0b3Bz
VG9HcmFkaWVudChHcmFkaWVudCogZ3JhZGllbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgeCA9IDA7IHggPCBtX3N0b3BzLnNpemUoKTsgeCsrKQorICAgICAgICAgICAg
ICAgIGdyYWRpZW50LT5hZGRDb2xvclN0b3AobV9zdG9wc1t4XS5maXJzdCwgbV9zdG9wc1t4XS5z
ZWNvbmQpOworICAgICAgICB9CisKICAgICBwcml2YXRlOgogICAgICAgICAvLyBQcm9wZXJ0aWVz
CiAgICAgICAgIFNWR0dyYWRpZW50U3ByZWFkTWV0aG9kIG1fc3ByZWFkTWV0aG9kOwotICAgICAg
ICBib29sIG1fYm91bmRpbmdCb3hNb2RlOwogICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gbV9ncmFk
aWVudFRyYW5zZm9ybTsKICAgICAgICAgVmVjdG9yPFNWR0dyYWRpZW50U3RvcD4gbV9zdG9wczsK
KyAgICAgICAgYm9vbCBtX2JvdW5kaW5nQm94TW9kZTsKIAogICAgICAgICAvLyBQcm9wZXJ0eSBz
dGF0ZXMKICAgICAgICAgYm9vbCBtX3NwcmVhZE1ldGhvZFNldCA6IDE7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3N2Zy9MaW5lYXJHcmFkaWVudEF0dHJpYnV0ZXMuaCBiL1dlYkNvcmUvc3ZnL0xpbmVh
ckdyYWRpZW50QXR0cmlidXRlcy5oCmluZGV4IGU2NDBjMDMuLjQ1MDU4NTAgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvc3ZnL0xpbmVhckdyYWRpZW50QXR0cmlidXRlcy5oCisrKyBiL1dlYkNvcmUvc3Zn
L0xpbmVhckdyYWRpZW50QXR0cmlidXRlcy5oCkBAIC0xLDggKzEsNiBAQAogLyoKICAgICBDb3B5
cmlnaHQgKEMpIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAK
LSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKLQogICAgIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAg
ICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYwogICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgpAQCAtMjgsNyArMjYsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZQogewot
ICAgIHN0cnVjdCBMaW5lYXJHcmFkaWVudEF0dHJpYnV0ZXMgOiBHcmFkaWVudEF0dHJpYnV0ZXMg
eworICAgIGNsYXNzIExpbmVhckdyYWRpZW50QXR0cmlidXRlcyA6IHB1YmxpYyBHcmFkaWVudEF0
dHJpYnV0ZXMgeworICAgIHB1YmxpYzoKICAgICAgICAgTGluZWFyR3JhZGllbnRBdHRyaWJ1dGVz
KCkKICAgICAgICAgICAgIDogbV94MSgwLjApCiAgICAgICAgICAgICAsIG1feTEoMC4wKQpAQCAt
NTYsNiArNTUsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgYm9vbCBoYXNYMigpIGNv
bnN0IHsgcmV0dXJuIG1feDJTZXQ7IH0KICAgICAgICAgYm9vbCBoYXNZMigpIGNvbnN0IHsgcmV0
dXJuIG1feTJTZXQ7IH0KIAorICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8R3JhZGllbnQ+IGNy
ZWF0ZUdyYWRpZW50KCkKKyAgICAgICAgeworICAgICAgICAgICAgUmVmUHRyPEdyYWRpZW50PiBn
cmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoCisgICAgICAgICAgICAgICAgRmxvYXRQb2ludDo6
bmFycm93UHJlY2lzaW9uKG1feDEsIG1feTEpLAorICAgICAgICAgICAgICAgIEZsb2F0UG9pbnQ6
Om5hcnJvd1ByZWNpc2lvbihtX3gyLCBtX3kyKSk7CisKKyAgICAgICAgICAgIGFkZFN0b3BzVG9H
cmFkaWVudChncmFkaWVudC5nZXQoKSk7CisgICAgICAgICAgICByZXR1cm4gZ3JhZGllbnQucmVs
ZWFzZSgpOworICAgICAgICB9CisKICAgICBwcml2YXRlOgogICAgICAgICAvLyBQcm9wZXJ0aWVz
CiAgICAgICAgIGRvdWJsZSBtX3gxOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdmcvUmFkaWFsR3Jh
ZGllbnRBdHRyaWJ1dGVzLmggYi9XZWJDb3JlL3N2Zy9SYWRpYWxHcmFkaWVudEF0dHJpYnV0ZXMu
aAppbmRleCA3ODJhYjQ5Li4wNjM0MmFlIDEwMDY0NAotLS0gYS9XZWJDb3JlL3N2Zy9SYWRpYWxH
cmFkaWVudEF0dHJpYnV0ZXMuaAorKysgYi9XZWJDb3JlL3N2Zy9SYWRpYWxHcmFkaWVudEF0dHJp
YnV0ZXMuaApAQCAtMjgsNyArMjgsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZQogewotICAgIHN0
cnVjdCBSYWRpYWxHcmFkaWVudEF0dHJpYnV0ZXMgOiBHcmFkaWVudEF0dHJpYnV0ZXMgeworICAg
IGNsYXNzIFJhZGlhbEdyYWRpZW50QXR0cmlidXRlcyA6IHB1YmxpYyBHcmFkaWVudEF0dHJpYnV0
ZXMgeworICAgIHB1YmxpYzoKICAgICAgICAgUmFkaWFsR3JhZGllbnRBdHRyaWJ1dGVzKCkKICAg
ICAgICAgICAgIDogbV9jeCgwLjUpCiAgICAgICAgICAgICAsIG1fY3koMC41KQpAQCAtNjEsNiAr
NjIsMTggQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgYm9vbCBoYXNGeCgpIGNvbnN0IHsg
cmV0dXJuIG1fZnhTZXQ7IH0KICAgICAgICAgYm9vbCBoYXNGeSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZnlTZXQ7IH0KIAorICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8R3JhZGllbnQ+IGNyZWF0ZUdy
YWRpZW50KCkKKyAgICAgICAgeworICAgICAgICAgICAgUmVmUHRyPEdyYWRpZW50PiBncmFkaWVu
dCA9IEdyYWRpZW50OjpjcmVhdGUoCisgICAgICAgICAgICAgICAgRmxvYXRQb2ludDo6bmFycm93
UHJlY2lzaW9uKG1fY3gsIG1fY3kpLAorICAgICAgICAgICAgICAgIG5hcnJvd1ByZWNpc2lvblRv
RmxvYXQobV9yKSwKKyAgICAgICAgICAgICAgICBGbG9hdFBvaW50OjpuYXJyb3dQcmVjaXNpb24o
bV9meCwgbV9meSksCisgICAgICAgICAgICAgICAgMC5mKTsKKworICAgICAgICAgICAgYWRkU3Rv
cHNUb0dyYWRpZW50KGdyYWRpZW50LmdldCgpKTsKKyAgICAgICAgICAgIHJldHVybiBncmFkaWVu
dC5yZWxlYXNlKCk7CisgICAgICAgIH0KKwogICAgIHByaXZhdGU6CiAgICAgICAgIC8vIFByb3Bl
cnRpZXMKICAgICAgICAgZG91YmxlIG1fY3g7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3N2Zy9TVkdH
cmFkaWVudEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9zdmcvU1ZHR3JhZGllbnRFbGVtZW50LmNwcApp
bmRleCA0Y2Y4ODQxLi4xODk5MzQ0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3N2Zy9TVkdHcmFkaWVu
dEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5jcHAKQEAg
LTE1OSw3ICsxNTksNyBAQCBWZWN0b3I8U1ZHR3JhZGllbnRTdG9wPiBTVkdHcmFkaWVudEVsZW1l
bnQ6OmJ1aWxkU3RvcHMoKSBjb25zdAogICAgICAgICAgICAgICAgIHN0b3BTdHlsZS0+ZGVyZWYo
ZG9jdW1lbnQoKS0+cmVuZGVyQXJlbmEoKSk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAg
IHN0b3BzLmFwcGVuZChtYWtlR3JhZGllbnRTdG9wKHN0b3BPZmZzZXQsIG1ha2VSR0JBKGNvbG9y
LnJlZCgpLCBjb2xvci5ncmVlbigpLCBjb2xvci5ibHVlKCksIGludChvcGFjaXR5ICogMjU1Likp
KSk7CisgICAgICAgICAgICBzdG9wcy5hcHBlbmQobWFrZUdyYWRpZW50U3RvcChzdG9wT2Zmc2V0
LCBjb2xvcldpdGhPdmVycmlkZUFscGhhKGNvbG9yLnJnYigpLCBvcGFjaXR5KSkpOwogICAgICAg
ICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVs
ZW1lbnQuY3BwIGIvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNwcAppbmRl
eCA4M2VlOTE5Li42YjBiMTM3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFk
aWVudEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVu
dC5jcHAKQEAgLTg2LDEyICs4NiwxNSBAQCB2b2lkIFNWR0xpbmVhckdyYWRpZW50RWxlbWVudDo6
YnVpbGRHcmFkaWVudCgpIGNvbnN0CiAKICAgICBSZWZQdHI8U1ZHUGFpbnRTZXJ2ZXJMaW5lYXJH
cmFkaWVudD4gbGluZWFyR3JhZGllbnQgPSBXVEY6OnN0YXRpY19wb2ludGVyX2Nhc3Q8U1ZHUGFp
bnRTZXJ2ZXJMaW5lYXJHcmFkaWVudD4obV9yZXNvdXJjZSk7CiAKLSAgICBsaW5lYXJHcmFkaWVu
dC0+c2V0R3JhZGllbnRTdG9wcyhhdHRyaWJ1dGVzLnN0b3BzKCkpOworICAgIGxpbmVhckdyYWRp
ZW50LT5zZXRHcmFkaWVudChhdHRyaWJ1dGVzLmNyZWF0ZUdyYWRpZW50KCkpOworCisgICAgLy8g
VGhpcyBjb2RlIHNob3VsZCBnbyBhd2F5LiAgUGFpbnRTZXJ2ZXJzIHNob3VsZCBnbyBhd2F5IHRv
by4KKyAgICAvLyBPbmx5IHRoaXMgY29kZSBzaG91bGQgY2FyZSBhYm91dCBib3VuZGluZyBib3hl
cwogICAgIGxpbmVhckdyYWRpZW50LT5zZXRCb3VuZGluZ0JveE1vZGUoYXR0cmlidXRlcy5ib3Vu
ZGluZ0JveE1vZGUoKSk7CisgICAgCisgICAgLy8gVGhlc2Ugc2hvdWxkIHBvc3NpYmx5IGJlIHN1
cHBvcnRlZCBvbiBHcmFkaWVudAogICAgIGxpbmVhckdyYWRpZW50LT5zZXRHcmFkaWVudFNwcmVh
ZE1ldGhvZChhdHRyaWJ1dGVzLnNwcmVhZE1ldGhvZCgpKTsKICAgICBsaW5lYXJHcmFkaWVudC0+
c2V0R3JhZGllbnRUcmFuc2Zvcm0oYXR0cmlidXRlcy5ncmFkaWVudFRyYW5zZm9ybSgpKTsKLSAg
ICBsaW5lYXJHcmFkaWVudC0+c2V0R3JhZGllbnRTdGFydChGbG9hdFBvaW50OjpuYXJyb3dQcmVj
aXNpb24oYXR0cmlidXRlcy54MSgpLCBhdHRyaWJ1dGVzLnkxKCkpKTsKLSAgICBsaW5lYXJHcmFk
aWVudC0+c2V0R3JhZGllbnRFbmQoRmxvYXRQb2ludDo6bmFycm93UHJlY2lzaW9uKGF0dHJpYnV0
ZXMueDIoKSwgYXR0cmlidXRlcy55MigpKSk7CiB9CiAKIExpbmVhckdyYWRpZW50QXR0cmlidXRl
cyBTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6OmNvbGxlY3RHcmFkaWVudFByb3BlcnRpZXMoKSBj
b25zdApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50Lmgg
Yi9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuaAppbmRleCAwZTFlZmQ0Li40
OTJjMzY2IDEwMDY0NAotLS0gYS9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQu
aAorKysgYi9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuaApAQCAtMiw4ICsy
LDYgQEAKICAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDggTmlrb2xhcyBa
aW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAy
MDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKLSAgICBUaGlzIGZpbGUgaXMgcGFy
dCBvZiB0aGUgS0RFIHByb2plY3QKLQogICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAgICBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwogICAgIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcCBiL1dlYkNvcmUv
c3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHAKaW5kZXggZmE0Mzc0OC4uNzhkOWU0YiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcAorKysg
Yi9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwCkBAIC05NCwxNCArOTQs
MTEgQEAgdm9pZCBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OmJ1aWxkR3JhZGllbnQoKSBjb25z
dAogICAgICAgICByZXR1cm47CiAKICAgICBSZWZQdHI8U1ZHUGFpbnRTZXJ2ZXJSYWRpYWxHcmFk
aWVudD4gcmFkaWFsR3JhZGllbnQgPSBXVEY6OnN0YXRpY19wb2ludGVyX2Nhc3Q8U1ZHUGFpbnRT
ZXJ2ZXJSYWRpYWxHcmFkaWVudD4obV9yZXNvdXJjZSk7CisgICAgcmFkaWFsR3JhZGllbnQtPnNl
dEdyYWRpZW50KGF0dHJpYnV0ZXMuY3JlYXRlR3JhZGllbnQoKSk7CiAKLSAgICByYWRpYWxHcmFk
aWVudC0+c2V0R3JhZGllbnRTdG9wcyhhdHRyaWJ1dGVzLnN0b3BzKCkpOwogICAgIHJhZGlhbEdy
YWRpZW50LT5zZXRCb3VuZGluZ0JveE1vZGUoYXR0cmlidXRlcy5ib3VuZGluZ0JveE1vZGUoKSk7
CiAgICAgcmFkaWFsR3JhZGllbnQtPnNldEdyYWRpZW50U3ByZWFkTWV0aG9kKGF0dHJpYnV0ZXMu
c3ByZWFkTWV0aG9kKCkpOyAKICAgICByYWRpYWxHcmFkaWVudC0+c2V0R3JhZGllbnRUcmFuc2Zv
cm0oYXR0cmlidXRlcy5ncmFkaWVudFRyYW5zZm9ybSgpKTsKLSAgICByYWRpYWxHcmFkaWVudC0+
c2V0R3JhZGllbnRDZW50ZXIoRmxvYXRQb2ludDo6bmFycm93UHJlY2lzaW9uKGF0dHJpYnV0ZXMu
Y3goKSwgYXR0cmlidXRlcy5jeSgpKSk7Ci0gICAgcmFkaWFsR3JhZGllbnQtPnNldEdyYWRpZW50
Rm9jYWwoRmxvYXRQb2ludDo6bmFycm93UHJlY2lzaW9uKGF0dHJpYnV0ZXMuZngoKSwgYXR0cmli
dXRlcy5meSgpKSk7Ci0gICAgcmFkaWFsR3JhZGllbnQtPnNldEdyYWRpZW50UmFkaXVzKG5hcnJv
d1ByZWNpc2lvblRvRmxvYXQoYXR0cmlidXRlcy5yKCkpKTsKIH0KIAogUmFkaWFsR3JhZGllbnRB
dHRyaWJ1dGVzIFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudDo6Y29sbGVjdEdyYWRpZW50UHJvcGVy
dGllcygpIGNvbnN0CmRpZmYgLS1naXQgYS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdQYWludFNl
cnZlci5oIGIvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHUGFpbnRTZXJ2ZXIuaAppbmRleCA4ODRk
MmE1Li43YjhlNDM0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdQYWludFNl
cnZlci5oCisrKyBiL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR1BhaW50U2VydmVyLmgKQEAgLTkz
LDcgKzkzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHNldFBlblByb3Bl
cnRpZXMoY29uc3QgUmVuZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVyU3R5bGUqLCBRUGVuJikgY29u
c3Q7CiAjZW5kaWYKICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIFNWR1BhaW50U2VydmVyKCk7ICAg
ICAgICAKKyAgICAgICAgU1ZHUGFpbnRTZXJ2ZXIoKTsKICAgICB9OwogCiAgICAgVGV4dFN0cmVh
bSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgU1ZHUGFpbnRTZXJ2ZXImKTsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR1BhaW50U2VydmVyR3JhZGllbnQuY3BwIGIv
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHUGFpbnRTZXJ2ZXJHcmFkaWVudC5jcHAKaW5kZXggNmE3
MDFiOC4uMDI1YmU4MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHUGFpbnRT
ZXJ2ZXJHcmFkaWVudC5jcHAKKysrIGIvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHUGFpbnRTZXJ2
ZXJHcmFkaWVudC5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIlNWR0dyYWRpZW50
RWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR1JlbmRlclRyZWVBc1RleHQuaCIKKyNpbmNsdWRlICJJ
bWFnZUJ1ZmZlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTYzLDEwICs2NCw3IEBA
IFNWR1BhaW50U2VydmVyR3JhZGllbnQ6OlNWR1BhaW50U2VydmVyR3JhZGllbnQoY29uc3QgU1ZH
R3JhZGllbnRFbGVtZW50KiBvd25lcikKICAgICA6IG1fc3ByZWFkTWV0aG9kKFNQUkVBRE1FVEhP
RF9QQUQpCiAgICAgLCBtX2JvdW5kaW5nQm94TW9kZSh0cnVlKQogICAgICwgbV9vd25lckVsZW1l
bnQob3duZXIpCi0KICNpZiBQTEFURk9STShDRykKLSAgICAsIG1fc3RvcHNDYWNoZSgwKQotICAg
ICwgbV9zaGFkaW5nQ2FjaGUoMCkKICAgICAsIG1fc2F2ZWRDb250ZXh0KDApCiAgICAgLCBtX2lt
YWdlQnVmZmVyKDApCiAjZW5kaWYKQEAgLTc2LDE5ICs3NCwxNiBAQCBTVkdQYWludFNlcnZlckdy
YWRpZW50OjpTVkdQYWludFNlcnZlckdyYWRpZW50KGNvbnN0IFNWR0dyYWRpZW50RWxlbWVudCog
b3duZXIpCiAKIFNWR1BhaW50U2VydmVyR3JhZGllbnQ6On5TVkdQYWludFNlcnZlckdyYWRpZW50
KCkKIHsKLSNpZiBQTEFURk9STShDRykKLSAgICBDR1NoYWRpbmdSZWxlYXNlKG1fc2hhZGluZ0Nh
Y2hlKTsKLSNlbmRpZgogfQogCi1jb25zdCBWZWN0b3I8U1ZHR3JhZGllbnRTdG9wPiYgU1ZHUGFp
bnRTZXJ2ZXJHcmFkaWVudDo6Z3JhZGllbnRTdG9wcygpIGNvbnN0CitHcmFkaWVudCogU1ZHUGFp
bnRTZXJ2ZXJHcmFkaWVudDo6Z3JhZGllbnQoKSBjb25zdAogewotICAgIHJldHVybiBtX3N0b3Bz
OworICAgIHJldHVybiBtX2dyYWRpZW50LmdldCgpOwogfQogCi12b2lkIFNWR1BhaW50U2VydmVy
R3JhZGllbnQ6OnNldEdyYWRpZW50U3RvcHMoY29uc3QgVmVjdG9yPFNWR0dyYWRpZW50U3RvcD4m
IHN0b3BzKQordm9pZCBTVkdQYWludFNlcnZlckdyYWRpZW50OjpzZXRHcmFkaWVudChQYXNzUmVm
UHRyPEdyYWRpZW50PiBncmFkaWVudCkKIHsKLSAgICBtX3N0b3BzID0gc3RvcHM7CisgICAgbV9n
cmFkaWVudCA9IGdyYWRpZW50OwogfQogCiBTVkdHcmFkaWVudFNwcmVhZE1ldGhvZCBTVkdQYWlu
dFNlcnZlckdyYWRpZW50OjpzcHJlYWRNZXRob2QoKSBjb25zdApAQCAtMTI3LDcgKzEyMiw3IEBA
IFRleHRTdHJlYW0mIFNWR1BhaW50U2VydmVyR3JhZGllbnQ6OmV4dGVybmFsUmVwcmVzZW50YXRp
b24oVGV4dFN0cmVhbSYgdHMpIGNvbnN0CiAgICAgbV9vd25lckVsZW1lbnQtPmJ1aWxkR3JhZGll
bnQoKTsKIAogICAgIC8vIGFic3RyYWN0LCBkb24ndCBzdHJlYW0gdHlwZQotICAgIHRzICA8PCAi
W3N0b3BzPSIgPDwgZ3JhZGllbnRTdG9wcygpIDw8ICJdIjsKKyAgICAvL3RzICA8PCAiW3N0b3Bz
PSIgPDwgZ3JhZGllbnQoKS0+c3RvcHMoKSA8PCAiXSI7CiAgICAgaWYgKHNwcmVhZE1ldGhvZCgp
ICE9IFNQUkVBRE1FVEhPRF9QQUQpCiAgICAgICAgIHRzIDw8ICJbbWV0aG9kPSIgPDwgc3ByZWFk
TWV0aG9kKCkgPDwgIl0iOwogICAgIGlmICghYm91bmRpbmdCb3hNb2RlKCkpCmRpZmYgLS1naXQg
YS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdQYWludFNlcnZlckdyYWRpZW50LmggYi9XZWJDb3Jl
L3N2Zy9ncmFwaGljcy9TVkdQYWludFNlcnZlckdyYWRpZW50LmgKaW5kZXggNjRmN2YzZS4uNTM4
ZjdiMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHUGFpbnRTZXJ2ZXJHcmFk
aWVudC5oCisrKyBiL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR1BhaW50U2VydmVyR3JhZGllbnQu
aApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCiAjaW5j
bHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJHcmFkaWVudC5oIgogI2luY2x1ZGUgIlNWR1BhaW50
U2VydmVyLmgiCiAKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtNTQsMTkgKzU1LDE0
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgU1BSRUFETUVUSE9EX1JFUEVBVCA9IDMK
ICAgICB9OwogCi0jaWYgUExBVEZPUk0oQ0cpCi0gICAgdHlwZWRlZiBzdGQ6OnBhaXI8Q0dGbG9h
dCwgQ29sb3I+IFNWR0dyYWRpZW50U3RvcDsKLSNlbHNlCiAgICAgdHlwZWRlZiBzdGQ6OnBhaXI8
ZmxvYXQsIENvbG9yPiBTVkdHcmFkaWVudFN0b3A7Ci0jZW5kaWYKLQogCiAgICAgY2xhc3MgU1ZH
UGFpbnRTZXJ2ZXJHcmFkaWVudCA6IHB1YmxpYyBTVkdQYWludFNlcnZlciB7CiAgICAgcHVibGlj
OgogICAgICAgICB2aXJ0dWFsIH5TVkdQYWludFNlcnZlckdyYWRpZW50KCk7CiAKLSAgICAgICAg
Y29uc3QgVmVjdG9yPFNWR0dyYWRpZW50U3RvcD4mIGdyYWRpZW50U3RvcHMoKSBjb25zdDsKLSAg
ICAgICAgdm9pZCBzZXRHcmFkaWVudFN0b3BzKGNvbnN0IFZlY3RvcjxTVkdHcmFkaWVudFN0b3A+
Jik7CisgICAgICAgIHZvaWQgc2V0R3JhZGllbnQoUGFzc1JlZlB0cjxHcmFkaWVudD4pOworICAg
ICAgICBHcmFkaWVudCogZ3JhZGllbnQoKSBjb25zdDsKIAogICAgICAgICBTVkdHcmFkaWVudFNw
cmVhZE1ldGhvZCBzcHJlYWRNZXRob2QoKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRHcmFkaWVu
dFNwcmVhZE1ldGhvZChjb25zdCBTVkdHcmFkaWVudFNwcmVhZE1ldGhvZCYpOwpAQCAtODcsMTEg
KzgzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgdGVhcmRv
d24oR3JhcGhpY3NDb250ZXh0KiYsIGNvbnN0IFJlbmRlck9iamVjdCosIFNWR1BhaW50VGFyZ2V0
VHlwZSwgYm9vbCBpc1BhaW50aW5nVGV4dCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBy
ZW5kZXJQYXRoKEdyYXBoaWNzQ29udGV4dComLCBjb25zdCBSZW5kZXJPYmplY3QqLCBTVkdQYWlu
dFRhcmdldFR5cGUpIGNvbnN0OwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlKCk7
Ci0KICAgICAgICAgLy8gSGVscGVycwotICAgICAgICB2b2lkIHVwZGF0ZVF1YXJ0ekdyYWRpZW50
U3RvcHNDYWNoZShjb25zdCBWZWN0b3I8U1ZHR3JhZGllbnRTdG9wPiYpOwotICAgICAgICB2b2lk
IHVwZGF0ZVF1YXJ0ekdyYWRpZW50Q2FjaGUoY29uc3QgU1ZHUGFpbnRTZXJ2ZXJHcmFkaWVudCop
OwogICAgICAgICB2b2lkIGhhbmRsZUJvdW5kaW5nQm94TW9kZUFuZEdyYWRpZW50VHJhbnNmb3Jt
YXRpb24oR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0KSBjb25z
dDsKICNlbmRpZgogCkBAIC0xMDMsOSArOTUsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAg
ICBwcm90ZWN0ZWQ6CiAgICAgICAgIFNWR1BhaW50U2VydmVyR3JhZGllbnQoY29uc3QgU1ZHR3Jh
ZGllbnRFbGVtZW50KiBvd25lcik7Ci0gICAgICAgIAorCiAgICAgcHJpdmF0ZToKLSAgICAgICAg
VmVjdG9yPFNWR0dyYWRpZW50U3RvcD4gbV9zdG9wczsKKyAgICAgICAgUmVmUHRyPEdyYWRpZW50
PiBtX2dyYWRpZW50OwogICAgICAgICBTVkdHcmFkaWVudFNwcmVhZE1ldGhvZCBtX3NwcmVhZE1l
dGhvZDsKICAgICAgICAgYm9vbCBtX2JvdW5kaW5nQm94TW9kZTsKICAgICAgICAgQWZmaW5lVHJh
bnNmb3JtIG1fZ3JhZGllbnRUcmFuc2Zvcm07CkBAIC0xMTMsMjcgKzEwNSw4IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogI2lmIFBMQVRGT1JNKENHKQogICAgIHB1YmxpYzoKLSAgICAgICAgdHlw
ZWRlZiBzdHJ1Y3QgewotICAgICAgICAgICAgQ0dGbG9hdCBjb2xvckFycmF5WzRdOwotICAgICAg
ICAgICAgQ0dGbG9hdCBvZmZzZXQ7Ci0gICAgICAgICAgICBDR0Zsb2F0IHByZXZpb3VzRGVsdGFJ
bnZlcnNlOwotICAgICAgICB9IFF1YXJ0ekdyYWRpZW50U3RvcDsKLSAgICAgICAgCi0gICAgICAg
IHN0cnVjdCBTaGFyZWRTdG9wQ2FjaGUgOiBwdWJsaWMgUmVmQ291bnRlZDxTaGFyZWRTdG9wQ2Fj
aGU+IHsKLSAgICAgICAgcHVibGljOgotICAgICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2hh
cmVkU3RvcENhY2hlPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZihuZXcgU2hhcmVkU3RvcENh
Y2hlKTsgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICBWZWN0b3I8UXVhcnR6R3JhZGllbnRT
dG9wPiBtX3N0b3BzOwotICAgICAgICAKLSAgICAgICAgcHJpdmF0ZToKLSAgICAgICAgICAgIFNo
YXJlZFN0b3BDYWNoZSgpIHsgfQotICAgICAgICB9OwotCi0gICAgICAgIFJlZlB0cjxTaGFyZWRT
dG9wQ2FjaGU+IG1fc3RvcHNDYWNoZTsKLQotICAgICAgICBDR1NoYWRpbmdSZWYgbV9zaGFkaW5n
Q2FjaGU7CiAgICAgICAgIG11dGFibGUgR3JhcGhpY3NDb250ZXh0KiBtX3NhdmVkQ29udGV4dDsK
LSAgICAgICAgbXV0YWJsZSBJbWFnZUJ1ZmZlciogbV9pbWFnZUJ1ZmZlcjsKKyAgICAgICAgbXV0
YWJsZSBPd25QdHI8SW1hZ2VCdWZmZXI+IG1faW1hZ2VCdWZmZXI7CiAjZW5kaWYKICAgICB9Owog
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9jZy9TVkdQYWludFNlcnZlckdyYWRp
ZW50Q2cuY3BwIGIvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvY2cvU1ZHUGFpbnRTZXJ2ZXJHcmFkaWVu
dENnLmNwcAppbmRleCAxMjIxYzgwLi5lY2Y0MTUxIDEwMDY0NAotLS0gYS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9jZy9TVkdQYWludFNlcnZlckdyYWRpZW50Q2cuY3BwCisrKyBiL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL2NnL1NWR1BhaW50U2VydmVyR3JhZGllbnRDZy5jcHAKQEAgLTM1LDE0MSArMzUs
MTIgQEAKICNpbmNsdWRlICJTVkdSZW5kZXJTdXBwb3J0LmgiCiAKICNpbmNsdWRlIDx3dGYvTWF0
aEV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAogdXNpbmcgbmFtZXNwYWNl
IHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgdm9pZCByZWxlYXNlQ2FjaGVk
U3RvcHModm9pZCogaW5mbykKLXsKLSAgICBzdGF0aWNfY2FzdDxTVkdQYWludFNlcnZlckdyYWRp
ZW50OjpTaGFyZWRTdG9wQ2FjaGUqPihpbmZvKS0+ZGVyZWYoKTsKLX0KLQotc3RhdGljIHZvaWQg
Y2dHcmFkaWVudENhbGxiYWNrKHZvaWQqIGluZm8sIGNvbnN0IENHRmxvYXQqIGluVmFsdWVzLCBD
R0Zsb2F0KiBvdXRDb2xvcikKLXsKLSAgICBTVkdQYWludFNlcnZlckdyYWRpZW50OjpTaGFyZWRT
dG9wQ2FjaGUqIHN0b3BzQ2FjaGUgPSBzdGF0aWNfY2FzdDxTVkdQYWludFNlcnZlckdyYWRpZW50
OjpTaGFyZWRTdG9wQ2FjaGUqPihpbmZvKTsKLSAgICAKLSAgICBTVkdQYWludFNlcnZlckdyYWRp
ZW50OjpRdWFydHpHcmFkaWVudFN0b3AqIHN0b3BzID0gc3RvcHNDYWNoZS0+bV9zdG9wcy5kYXRh
KCk7Ci0gICAgICAgIAotICAgIGludCBzdG9wc0NvdW50ID0gc3RvcHNDYWNoZS0+bV9zdG9wcy5z
aXplKCk7Ci0KLSAgICBDR0Zsb2F0IGluVmFsdWUgPSBpblZhbHVlc1swXTsKLQotICAgIGlmICgh
c3RvcHNDb3VudCkgewotICAgICAgICBvdXRDb2xvclswXSA9IDA7Ci0gICAgICAgIG91dENvbG9y
WzFdID0gMDsKLSAgICAgICAgb3V0Q29sb3JbMl0gPSAwOwotICAgICAgICBvdXRDb2xvclszXSA9
IDA7Ci0gICAgICAgIHJldHVybjsKLSAgICB9IGVsc2UgaWYgKHN0b3BzQ291bnQgPT0gMSkgewot
ICAgICAgICBtZW1jcHkob3V0Q29sb3IsIHN0b3BzWzBdLmNvbG9yQXJyYXksIDQgKiBzaXplb2Yo
Q0dGbG9hdCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCEoaW5WYWx1ZSA+
IHN0b3BzWzBdLm9mZnNldCkpCi0gICAgICAgIG1lbWNweShvdXRDb2xvciwgc3RvcHNbMF0uY29s
b3JBcnJheSwgNCAqIHNpemVvZihDR0Zsb2F0KSk7Ci0gICAgZWxzZSBpZiAoIShpblZhbHVlIDwg
c3RvcHNbc3RvcHNDb3VudCAtIDFdLm9mZnNldCkpCi0gICAgICAgIG1lbWNweShvdXRDb2xvciwg
c3RvcHNbc3RvcHNDb3VudCAtIDFdLmNvbG9yQXJyYXksIDQgKiBzaXplb2YoQ0dGbG9hdCkpOwot
ICAgIGVsc2UgewotICAgICAgICBpbnQgbmV4dFN0b3BJbmRleCA9IDA7Ci0gICAgICAgIHdoaWxl
ICgobmV4dFN0b3BJbmRleCA8IHN0b3BzQ291bnQpICYmIChzdG9wc1tuZXh0U3RvcEluZGV4XS5v
ZmZzZXQgPCBpblZhbHVlKSkKLSAgICAgICAgICAgIG5leHRTdG9wSW5kZXgrKzsKLQotICAgICAg
ICBDR0Zsb2F0KiBuZXh0Q29sb3JBcnJheSA9IHN0b3BzW25leHRTdG9wSW5kZXhdLmNvbG9yQXJy
YXk7Ci0gICAgICAgIENHRmxvYXQqIHByZXZpb3VzQ29sb3JBcnJheSA9IHN0b3BzW25leHRTdG9w
SW5kZXggLSAxXS5jb2xvckFycmF5OwotICAgICAgICBDR0Zsb2F0IGRpZmZGcm9tUHJldmlvdXMg
PSBpblZhbHVlIC0gc3RvcHNbbmV4dFN0b3BJbmRleCAtIDFdLm9mZnNldDsKLSAgICAgICAgQ0dG
bG9hdCBwZXJjZW50ID0gZGlmZkZyb21QcmV2aW91cyAqIHN0b3BzW25leHRTdG9wSW5kZXhdLnBy
ZXZpb3VzRGVsdGFJbnZlcnNlOwotCi0gICAgICAgIG91dENvbG9yWzBdID0gKCgxLjBmIC0gcGVy
Y2VudCkgKiBwcmV2aW91c0NvbG9yQXJyYXlbMF0gKyBwZXJjZW50ICogbmV4dENvbG9yQXJyYXlb
MF0pOwotICAgICAgICBvdXRDb2xvclsxXSA9ICgoMS4wZiAtIHBlcmNlbnQpICogcHJldmlvdXND
b2xvckFycmF5WzFdICsgcGVyY2VudCAqIG5leHRDb2xvckFycmF5WzFdKTsKLSAgICAgICAgb3V0
Q29sb3JbMl0gPSAoKDEuMGYgLSBwZXJjZW50KSAqIHByZXZpb3VzQ29sb3JBcnJheVsyXSArIHBl
cmNlbnQgKiBuZXh0Q29sb3JBcnJheVsyXSk7Ci0gICAgICAgIG91dENvbG9yWzNdID0gKCgxLjBm
IC0gcGVyY2VudCkgKiBwcmV2aW91c0NvbG9yQXJyYXlbM10gKyBwZXJjZW50ICogbmV4dENvbG9y
QXJyYXlbM10pOwotICAgIH0KLSAgICAvLyBGSVhNRTogaGF2ZSB0byBoYW5kbGUgdGhlIHNwcmVh
ZE1ldGhvZCgpcyBoZXJlIFNQUkVBRE1FVEhPRF9SRVBFQVQsIGV0Yy4KLX0KLQotc3RhdGljIENH
U2hhZGluZ1JlZiBDR1NoYWRpbmdSZWZGb3JMaW5lYXJHcmFkaWVudChjb25zdCBTVkdQYWludFNl
cnZlckxpbmVhckdyYWRpZW50KiBzZXJ2ZXIpCi17Ci0gICAgQ0dQb2ludCBzdGFydCA9IENHUG9p
bnQoc2VydmVyLT5ncmFkaWVudFN0YXJ0KCkpOwotICAgIENHUG9pbnQgZW5kID0gQ0dQb2ludChz
ZXJ2ZXItPmdyYWRpZW50RW5kKCkpOwotCi0gICAgQ0dGdW5jdGlvbkNhbGxiYWNrcyBjYWxsYmFj
a3MgPSB7MCwgY2dHcmFkaWVudENhbGxiYWNrLCByZWxlYXNlQ2FjaGVkU3RvcHN9OwotICAgIENH
RmxvYXQgZG9tYWluTGltaXRzWzJdID0gezAsIDF9OwotICAgIENHRmxvYXQgcmFuZ2VMaW1pdHNb
OF0gPSB7MCwgMSwgMCwgMSwgMCwgMSwgMCwgMX07Ci0gICAgc2VydmVyLT5tX3N0b3BzQ2FjaGUt
PnJlZigpOwotICAgIENHRnVuY3Rpb25SZWYgc2hhZGluZ0Z1bmN0aW9uID0gQ0dGdW5jdGlvbkNy
ZWF0ZShzZXJ2ZXItPm1fc3RvcHNDYWNoZS5nZXQoKSwgMSwgZG9tYWluTGltaXRzLCA0LCByYW5n
ZUxpbWl0cywgJmNhbGxiYWNrcyk7Ci0KLSAgICBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSA9
IENHQ29sb3JTcGFjZUNyZWF0ZURldmljZVJHQigpOwotICAgIENHU2hhZGluZ1JlZiBzaGFkaW5n
ID0gQ0dTaGFkaW5nQ3JlYXRlQXhpYWwoY29sb3JTcGFjZSwgc3RhcnQsIGVuZCwgc2hhZGluZ0Z1
bmN0aW9uLCB0cnVlLCB0cnVlKTsKLSAgICBDR0NvbG9yU3BhY2VSZWxlYXNlKGNvbG9yU3BhY2Up
OwotICAgIENHRnVuY3Rpb25SZWxlYXNlKHNoYWRpbmdGdW5jdGlvbik7Ci0gICAgcmV0dXJuIHNo
YWRpbmc7Ci19Ci0KLXN0YXRpYyBDR1NoYWRpbmdSZWYgQ0dTaGFkaW5nUmVmRm9yUmFkaWFsR3Jh
ZGllbnQoY29uc3QgU1ZHUGFpbnRTZXJ2ZXJSYWRpYWxHcmFkaWVudCogc2VydmVyKQotewotICAg
IENHUG9pbnQgY2VudGVyID0gQ0dQb2ludChzZXJ2ZXItPmdyYWRpZW50Q2VudGVyKCkpOwotICAg
IENHUG9pbnQgZm9jdXMgPSBDR1BvaW50KHNlcnZlci0+Z3JhZGllbnRGb2NhbCgpKTsKLSAgICBk
b3VibGUgcmFkaXVzID0gc2VydmVyLT5ncmFkaWVudFJhZGl1cygpOwotCi0gICAgZG91YmxlIGZk
eCA9IGZvY3VzLnggLSBjZW50ZXIueDsKLSAgICBkb3VibGUgZmR5ID0gZm9jdXMueSAtIGNlbnRl
ci55OwotCi0gICAgLy8gU3BlYzogSWYgKGZ4LCBmeSkgbGllcyBvdXRzaWRlIHRoZSBjaXJjbGUg
ZGVmaW5lZCBieSAoY3gsIGN5KSBhbmQgciwgc2V0IChmeCwgZnkpCi0gICAgLy8gdG8gdGhlIHBv
aW50IG9mIGludGVyc2VjdGlvbiBvZiB0aGUgbGluZSB0aHJvdWdoIChmeCwgZnkpIGFuZCB0aGUg
Y2lyY2xlLgotICAgIGlmIChzcXJ0KGZkeCAqIGZkeCArIGZkeSAqIGZkeSkgPiByYWRpdXMpIHsg
Ci0gICAgICAgIGRvdWJsZSBhbmdsZSA9IGF0YW4yKGZvY3VzLnkgKiAxMDAuMCwgZm9jdXMueCAq
IDEwMC4wKTsKLSAgICAgICAgZm9jdXMueCA9IG5hcnJvd1ByZWNpc2lvblRvQ0dGbG9hdChjb3Mo
YW5nbGUpICogcmFkaXVzKTsKLSAgICAgICAgZm9jdXMueSA9IG5hcnJvd1ByZWNpc2lvblRvQ0dG
bG9hdChzaW4oYW5nbGUpICogcmFkaXVzKTsKLSAgICB9Ci0KLSAgICBDR0Z1bmN0aW9uQ2FsbGJh
Y2tzIGNhbGxiYWNrcyA9IHswLCBjZ0dyYWRpZW50Q2FsbGJhY2ssIHJlbGVhc2VDYWNoZWRTdG9w
c307Ci0gICAgQ0dGbG9hdCBkb21haW5MaW1pdHNbMl0gPSB7MCwgMX07Ci0gICAgQ0dGbG9hdCBy
YW5nZUxpbWl0c1s4XSA9IHswLCAxLCAwLCAxLCAwLCAxLCAwLCAxfTsKLSAgICBzZXJ2ZXItPm1f
c3RvcHNDYWNoZS0+cmVmKCk7Ci0gICAgQ0dGdW5jdGlvblJlZiBzaGFkaW5nRnVuY3Rpb24gPSBD
R0Z1bmN0aW9uQ3JlYXRlKHNlcnZlci0+bV9zdG9wc0NhY2hlLmdldCgpLCAxLCBkb21haW5MaW1p
dHMsIDQsIHJhbmdlTGltaXRzLCAmY2FsbGJhY2tzKTsKLQotICAgIENHQ29sb3JTcGFjZVJlZiBj
b2xvclNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlRGV2aWNlUkdCKCk7Ci0gICAgQ0dTaGFkaW5n
UmVmIHNoYWRpbmcgPSBDR1NoYWRpbmdDcmVhdGVSYWRpYWwoY29sb3JTcGFjZSwgZm9jdXMsIDAs
IGNlbnRlciwgbmFycm93UHJlY2lzaW9uVG9DR0Zsb2F0KHJhZGl1cyksIHNoYWRpbmdGdW5jdGlv
biwgdHJ1ZSwgdHJ1ZSk7Ci0gICAgQ0dDb2xvclNwYWNlUmVsZWFzZShjb2xvclNwYWNlKTsKLSAg
ICBDR0Z1bmN0aW9uUmVsZWFzZShzaGFkaW5nRnVuY3Rpb24pOwotICAgIHJldHVybiBzaGFkaW5n
OwotfQotCi12b2lkIFNWR1BhaW50U2VydmVyR3JhZGllbnQ6OnVwZGF0ZVF1YXJ0ekdyYWRpZW50
U3RvcHNDYWNoZShjb25zdCBWZWN0b3I8U1ZHR3JhZGllbnRTdG9wPiYgc3RvcHMpCi17Ci0gICAg
bV9zdG9wc0NhY2hlID0gU2hhcmVkU3RvcENhY2hlOjpjcmVhdGUoKTsKLSAgICBWZWN0b3I8UXVh
cnR6R3JhZGllbnRTdG9wPiYgc3RvcHNDYWNoZSA9IG1fc3RvcHNDYWNoZS0+bV9zdG9wczsKLSAg
ICBzdG9wc0NhY2hlLnJlc2l6ZShzdG9wcy5zaXplKCkpOwotICAgIENHRmxvYXQgcHJldmlvdXNP
ZmZzZXQgPSAwLjBmOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzdG9wcy5zaXplKCk7
ICsraSkgewotICAgICAgICBDR0Zsb2F0IGN1cnJPZmZzZXQgPSBtaW4obWF4KHN0b3BzW2ldLmZp
cnN0LCBwcmV2aW91c09mZnNldCksIHN0YXRpY19jYXN0PENHRmxvYXQ+KDEuMCkpOwotICAgICAg
ICBzdG9wc0NhY2hlW2ldLm9mZnNldCA9IGN1cnJPZmZzZXQ7Ci0gICAgICAgIHN0b3BzQ2FjaGVb
aV0ucHJldmlvdXNEZWx0YUludmVyc2UgPSAxLjBmIC8gKGN1cnJPZmZzZXQgLSBwcmV2aW91c09m
ZnNldCk7Ci0gICAgICAgIHByZXZpb3VzT2Zmc2V0ID0gY3Vyck9mZnNldDsKLSAgICAgICAgQ0dG
bG9hdCogY2EgPSBzdG9wc0NhY2hlW2ldLmNvbG9yQXJyYXk7Ci0gICAgICAgIHN0b3BzW2ldLnNl
Y29uZC5nZXRSR0JBKGNhWzBdLCBjYVsxXSwgY2FbMl0sIGNhWzNdKTsKLSAgICB9Ci19Ci0KLXZv
aWQgU1ZHUGFpbnRTZXJ2ZXJHcmFkaWVudDo6dXBkYXRlUXVhcnR6R3JhZGllbnRDYWNoZShjb25z
dCBTVkdQYWludFNlcnZlckdyYWRpZW50KiBzZXJ2ZXIpCi17Ci0gICAgLy8gY2FjaGUgb3VyIG93
biBjb3B5IG9mIHRoZSBzdG9wcyBmb3IgZmFzdGVyIGFjY2Vzcy4KLSAgICAvLyB0aGlzIGlzIGxl
Z2FjeSBjb2RlLCBwcm9iYWJseSBjb3VsZCBiZSByZXdvcmtlZC4KLSAgICBpZiAoIW1fc3RvcHND
YWNoZSkKLSAgICAgICAgdXBkYXRlUXVhcnR6R3JhZGllbnRTdG9wc0NhY2hlKGdyYWRpZW50U3Rv
cHMoKSk7Ci0KLSAgICBDR1NoYWRpbmdSZWxlYXNlKG1fc2hhZGluZ0NhY2hlKTsKLQotICAgIGlm
ICh0eXBlKCkgPT0gUmFkaWFsR3JhZGllbnRQYWludFNlcnZlcikgewotICAgICAgICBjb25zdCBT
VkdQYWludFNlcnZlclJhZGlhbEdyYWRpZW50KiByYWRpYWwgPSBzdGF0aWNfY2FzdDxjb25zdCBT
VkdQYWludFNlcnZlclJhZGlhbEdyYWRpZW50Kj4oc2VydmVyKTsKLSAgICAgICAgbV9zaGFkaW5n
Q2FjaGUgPSBDR1NoYWRpbmdSZWZGb3JSYWRpYWxHcmFkaWVudChyYWRpYWwpOwotICAgIH0gZWxz
ZSBpZiAodHlwZSgpID09IExpbmVhckdyYWRpZW50UGFpbnRTZXJ2ZXIpIHsKLSAgICAgICAgY29u
c3QgU1ZHUGFpbnRTZXJ2ZXJMaW5lYXJHcmFkaWVudCogbGluZWFyID0gc3RhdGljX2Nhc3Q8Y29u
c3QgU1ZHUGFpbnRTZXJ2ZXJMaW5lYXJHcmFkaWVudCo+KHNlcnZlcik7Ci0gICAgICAgIG1fc2hh
ZGluZ0NhY2hlID0gQ0dTaGFkaW5nUmVmRm9yTGluZWFyR3JhZGllbnQobGluZWFyKTsKLSAgICB9
Ci19Ci0KIC8vIEhlbHBlciBmdW5jdGlvbiBmb3IgdGV4dCBwYWludGluZwogc3RhdGljIGlubGlu
ZSBjb25zdCBSZW5kZXJPYmplY3QqIGZpbmRUZXh0Um9vdE9iamVjdChjb25zdCBSZW5kZXJPYmpl
Y3QqIHN0YXJ0KQogewpAQCAtMTg0LDcgKzU1LDYgQEAgc3RhdGljIGlubGluZSBjb25zdCBSZW5k
ZXJPYmplY3QqIGZpbmRUZXh0Um9vdE9iamVjdChjb25zdCBSZW5kZXJPYmplY3QqIHN0YXJ0KQog
CiB2b2lkIFNWR1BhaW50U2VydmVyR3JhZGllbnQ6OnRlYXJkb3duKEdyYXBoaWNzQ29udGV4dCom
IGNvbnRleHQsIGNvbnN0IFJlbmRlck9iamVjdCogb2JqZWN0LCBTVkdQYWludFRhcmdldFR5cGUg
dHlwZSwgYm9vbCBpc1BhaW50aW5nVGV4dCkgY29uc3QKIHsKLSAgICBDR1NoYWRpbmdSZWYgc2hh
ZGluZyA9IG1fc2hhZGluZ0NhY2hlOwogICAgIENHQ29udGV4dFJlZiBjb250ZXh0UmVmID0gY29u
dGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7CiAgICAgQVNTRVJUKGNvbnRleHRSZWYpOwogCkBAIC0y
MDgsMjMgKzc4LDIyIEBAIHZvaWQgU1ZHUGFpbnRTZXJ2ZXJHcmFkaWVudDo6dGVhcmRvd24oR3Jh
cGhpY3NDb250ZXh0KiYgY29udGV4dCwgY29uc3QgUmVuZGVyT2JqCiAKICAgICAgICAgICAgIC8v
IENsaXAgY3VycmVudCBjb250ZXh0IHRvIG1hc2sgaW1hZ2UgKGdyYWRpZW50KQogICAgICAgICAg
ICAgbV9zYXZlZENvbnRleHQtPmNvbmNhdENUTSh0cmFuc2Zvcm0uaW52ZXJzZSgpKTsKLSAgICAg
ICAgICAgIG1fc2F2ZWRDb250ZXh0LT5jbGlwVG9JbWFnZUJ1ZmZlcih0ZXh0Qm91bmRhcnksIG1f
aW1hZ2VCdWZmZXIpOworICAgICAgICAgICAgbV9zYXZlZENvbnRleHQtPmNsaXBUb0ltYWdlQnVm
ZmVyKHRleHRCb3VuZGFyeSwgbV9pbWFnZUJ1ZmZlci5nZXQoKSk7CiAgICAgICAgICAgICBtX3Nh
dmVkQ29udGV4dC0+Y29uY2F0Q1RNKHRyYW5zZm9ybSk7CiAKICAgICAgICAgICAgIGhhbmRsZUJv
dW5kaW5nQm94TW9kZUFuZEdyYWRpZW50VHJhbnNmb3JtYXRpb24obV9zYXZlZENvbnRleHQsIG1h
c2tCQm94KTsKIAogICAgICAgICAgICAgLy8gUmVzdG9yZSBvbi1zY3JlZW4gZHJhd2luZyBjb250
ZXh0LCBhZnRlciB3ZSBnb3QgdGhlIGltYWdlIG9mIHRoZSBncmFkaWVudAotICAgICAgICAgICAg
ZGVsZXRlIG1faW1hZ2VCdWZmZXI7Ci0KICAgICAgICAgICAgIGNvbnRleHQgPSBtX3NhdmVkQ29u
dGV4dDsKICAgICAgICAgICAgIGNvbnRleHRSZWYgPSBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQo
KTsKIAogICAgICAgICAgICAgbV9zYXZlZENvbnRleHQgPSAwOwotICAgICAgICAgICAgbV9pbWFn
ZUJ1ZmZlciA9IDA7CisgICAgICAgICAgICBtX2ltYWdlQnVmZmVyLmNsZWFyKCk7CisKKyAgICAg
ICAgICAgIC8vIGZpbmFsbHkgZmlsbCB0aGUgdGV4dCBjbGlwIHdpdGggdGhlIHNoYWRpbmcKKyAg
ICAgICAgICAgIENHQ29udGV4dERyYXdTaGFkaW5nKGNvbnRleHRSZWYsIG1fZ3JhZGllbnQtPnBs
YXRmb3JtR3JhZGllbnQoKSk7CiAgICAgICAgIH0KICAgICB9Ci0KLSAgICBDR0NvbnRleHREcmF3
U2hhZGluZyhjb250ZXh0UmVmLCBzaGFkaW5nKTsKICAgICBjb250ZXh0LT5yZXN0b3JlKCk7CiB9
CiAKQEAgLTI2OCwxMCArMTM3LDYgQEAgYm9vbCBTVkdQYWludFNlcnZlckdyYWRpZW50OjpzZXR1
cChHcmFwaGljc0NvbnRleHQqJiBjb250ZXh0LCBjb25zdCBSZW5kZXJPYmplY3QKIHsKICAgICBt
X293bmVyRWxlbWVudC0+YnVpbGRHcmFkaWVudCgpOwogCi0gICAgLy8gV2UgbmVlZCBhIGhvb2sg
dG8gY2FsbCB0aGlzIHdoZW4gdGhlIGdyYWRpZW50IGdldHMgdXBkYXRlZCwgYmVmb3JlIGRyYXdu
LgotICAgIGlmICghbV9zaGFkaW5nQ2FjaGUpCi0gICAgICAgIGNvbnN0X2Nhc3Q8U1ZHUGFpbnRT
ZXJ2ZXJHcmFkaWVudCo+KHRoaXMpLT51cGRhdGVRdWFydHpHcmFkaWVudENhY2hlKHRoaXMpOwot
CiAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHRSZWYgPSBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQo
KTsKICAgICBBU1NFUlQoY29udGV4dFJlZik7CiAKQEAgLTMwNiwzMCArMTcxLDIyIEBAIGJvb2wg
U1ZHUGFpbnRTZXJ2ZXJHcmFkaWVudDo6c2V0dXAoR3JhcGhpY3NDb250ZXh0KiYgY29udGV4dCwg
Y29uc3QgUmVuZGVyT2JqZWN0CiAgICAgICAgIG1hc2tJbWFnZUNvbnRleHQtPnRyYW5zbGF0ZSgt
bWFza1JlY3QueCgpLCAtbWFza1JlY3QueSgpKTsKICAgICAgICAgbWFza0ltYWdlQ29udGV4dC0+
Y29uY2F0Q1RNKG9iamVjdC0+YWJzb2x1dGVUcmFuc2Zvcm0oKSk7CiAKLSAgICAgICAgbV9pbWFn
ZUJ1ZmZlciA9IG1hc2tJbWFnZS5yZWxlYXNlKCk7CisgICAgICAgIG1faW1hZ2VCdWZmZXIuc2V0
KG1hc2tJbWFnZS5yZWxlYXNlKCkpOwogICAgICAgICBtX3NhdmVkQ29udGV4dCA9IGNvbnRleHQ7
CiAKICAgICAgICAgY29udGV4dCA9IG1hc2tJbWFnZUNvbnRleHQ7CiAgICAgICAgIGNvbnRleHRS
ZWYgPSBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKTsKICAgICB9CiAKKyAgICBpZiAoaXNGaWxs
ZWQgJiYgb2JqZWN0KQorICAgICAgICBjb250ZXh0LT5zZXRGaWxsUnVsZShvYmplY3QtPnN0eWxl
KCktPnN2Z1N0eWxlKCktPmZpbGxSdWxlKCkpOworCiAgICAgaWYgKGlzU3Ryb2tlZCkKICAgICAg
ICAgYXBwbHlTdHJva2VTdHlsZVRvQ29udGV4dChjb250ZXh0LCBzdHlsZSwgb2JqZWN0KTsKIAog
ICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFNWR1BhaW50U2VydmVyR3JhZGllbnQ6OmludmFs
aWRhdGUoKQotewotICAgIFNWR1BhaW50U2VydmVyOjppbnZhbGlkYXRlKCk7Ci0KLSAgICAvLyBJ
bnZhbGlkYXRlIGNhY2hlcwotICAgIENHU2hhZGluZ1JlbGVhc2UobV9zaGFkaW5nQ2FjaGUpOwot
Ci0gICAgbV9zdG9wc0NhY2hlID0gMDsKLSAgICBtX3NoYWRpbmdDYWNoZSA9IDA7Ci19Ci0KIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22994</attachid>
            <date>2008-08-25 22:36:46 -0700</date>
            <delta_ts>2008-08-25 22:36:46 -0700</delta_ts>
            <desc>Attempt to clean up SVG gradient code</desc>
            <filename>Attempt-to-clean-up-SVG-gradient-code.patch</filename>
            <type>text/plain</type>
            <size>11039</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">NzI4YzZmMzI1ODdjZTY2ZDdmYjI5ODljMTUyMDA4M2E3NmMxZjE1YQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFNpemUuaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRmxvYXRTaXplLmgKaW5kZXggY2YxZTFjNS4uNTI5ZTA1MSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFNpemUuaAorKysgYi9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0Zsb2F0U2l6ZS5oCkBAIC02Nyw2ICs2NywxMiBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICBtX2hlaWdodCA+IG90aGVyLm1faGVpZ2h0ID8gbV9oZWlnaHQgOiBvdGhlci5tX2hlaWdo
dCk7CiAgICAgfQogCisgICAgRmxvYXRTaXplIHNocnVua1RvKGNvbnN0IEZsb2F0U2l6ZSYgb3Ro
ZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gRmxvYXRTaXplKG1fd2lkdGggPCBvdGhl
ci5tX3dpZHRoID8gbV93aWR0aCA6IG90aGVyLm1fd2lkdGgsCisgICAgICAgICAgICBtX2hlaWdo
dCA8IG90aGVyLm1faGVpZ2h0ID8gbV9oZWlnaHQgOiBvdGhlci5tX2hlaWdodCk7CisgICAgfQor
CiAjaWYgUExBVEZPUk0oQ0cpCiAgICAgZXhwbGljaXQgRmxvYXRTaXplKGNvbnN0IENHU2l6ZSYp
OyAvLyBkb24ndCBkbyB0aGlzIGltcGxpY2l0bHkgc2luY2UgaXQncyBsb3NzeQogICAgIG9wZXJh
dG9yIENHU2l6ZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZH
UGFpbnRTZXJ2ZXJHcmFkaWVudC5oIGIvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHUGFpbnRTZXJ2
ZXJHcmFkaWVudC5oCmluZGV4IDUzOGY3YjEuLjVhYTVkOTcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL1NWR1BhaW50U2VydmVyR3JhZGllbnQuaAorKysgYi9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9TVkdQYWludFNlcnZlckdyYWRpZW50LmgKQEAgLTgyLDkgKzgyLDYgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogI2lmIFBMQVRGT1JNKENHKQogICAgICAgICB2aXJ0dWFsIHZvaWQgdGVh
cmRvd24oR3JhcGhpY3NDb250ZXh0KiYsIGNvbnN0IFJlbmRlck9iamVjdCosIFNWR1BhaW50VGFy
Z2V0VHlwZSwgYm9vbCBpc1BhaW50aW5nVGV4dCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCByZW5kZXJQYXRoKEdyYXBoaWNzQ29udGV4dComLCBjb25zdCBSZW5kZXJPYmplY3QqLCBTVkdQ
YWludFRhcmdldFR5cGUpIGNvbnN0OwotCi0gICAgICAgIC8vIEhlbHBlcnMKLSAgICAgICAgdm9p
ZCBoYW5kbGVCb3VuZGluZ0JveE1vZGVBbmRHcmFkaWVudFRyYW5zZm9ybWF0aW9uKEdyYXBoaWNz
Q29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCkgY29uc3Q7CiAjZW5kaWYKIAog
I2lmIFBMQVRGT1JNKFFUKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvY2cvU1ZH
UGFpbnRTZXJ2ZXJHcmFkaWVudENnLmNwcCBiL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2NnL1NWR1Bh
aW50U2VydmVyR3JhZGllbnRDZy5jcHAKaW5kZXggZWNmNDE1MS4uMzU3NGQ1ZSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvY2cvU1ZHUGFpbnRTZXJ2ZXJHcmFkaWVudENnLmNwcAor
KysgYi9XZWJDb3JlL3N2Zy9ncmFwaGljcy9jZy9TVkdQYWludFNlcnZlckdyYWRpZW50Q2cuY3Bw
CkBAIC01Myw0OCArNTMsOTEgQEAgc3RhdGljIGlubGluZSBjb25zdCBSZW5kZXJPYmplY3QqIGZp
bmRUZXh0Um9vdE9iamVjdChjb25zdCBSZW5kZXJPYmplY3QqIHN0YXJ0KQogICAgIHJldHVybiBz
dGFydDsKIH0KIAotdm9pZCBTVkdQYWludFNlcnZlckdyYWRpZW50Ojp0ZWFyZG93bihHcmFwaGlj
c0NvbnRleHQqJiBjb250ZXh0LCBjb25zdCBSZW5kZXJPYmplY3QqIG9iamVjdCwgU1ZHUGFpbnRU
YXJnZXRUeXBlIHR5cGUsIGJvb2wgaXNQYWludGluZ1RleHQpIGNvbnN0CitzdGF0aWMgaW5saW5l
IHZvaWQgaGFuZGxlQm91bmRpbmdCb3hNb2RlQW5kR3JhZGllbnRUcmFuc2Zvcm1hdGlvbigKKyAg
ICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGJvb2wgYm91bmRpbmdCb3hNb2RlLAorICAgIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgZ3JhZGllbnRUcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UmVjdCYg
dGFyZ2V0UmVjdCkKIHsKLSAgICBDR0NvbnRleHRSZWYgY29udGV4dFJlZiA9IGNvbnRleHQtPnBs
YXRmb3JtQ29udGV4dCgpOwotICAgIEFTU0VSVChjb250ZXh0UmVmKTsKKyAgICBpZiAoYm91bmRp
bmdCb3hNb2RlKSB7CisgICAgICAgIC8vIENob29zZSBkZWZhdWx0IGdyYWRpZW50IGJvdW5kaW5n
IGJveAorICAgICAgICBDR1JlY3QgZ3JhZGllbnRCQm94ID0gQ0dSZWN0TWFrZSgwLjBmLCAwLjBm
LCAxLjBmLCAxLjBmKTsKIAotICAgIC8vIEFzIHJlbmRlclBhdGgoKSBpcyBub3QgdXNlZCB3aGVu
IHBhaW50aW5nIHRleHQsIHNwZWNpYWwgbG9naWMgbmVlZGVkIGhlcmUuCi0gICAgaWYgKGlzUGFp
bnRpbmdUZXh0KSB7Ci0gICAgICAgIGlmIChtX3NhdmVkQ29udGV4dCkgewotICAgICAgICAgICAg
RmxvYXRSZWN0IG1hc2tCQm94ID0gY29uc3RfY2FzdDxSZW5kZXJPYmplY3QqPihmaW5kVGV4dFJv
b3RPYmplY3Qob2JqZWN0KSktPnJlbGF0aXZlQkJveChmYWxzZSk7CisgICAgICAgIC8vIEdlbmVy
YXRlIGEgdHJhbnNmb3JtIHRvIG1hcCBiZXR3ZWVuIGJvdGggYm91bmRpbmcgYm94ZXMKKyAgICAg
ICAgQ0dBZmZpbmVUcmFuc2Zvcm0gZ3JhZGllbnRJbnRvT2JqZWN0QkJveCA9IENHQWZmaW5lVHJh
bnNmb3JtTWFrZU1hcEJldHdlZW5SZWN0cyhncmFkaWVudEJCb3gsIENHUmVjdCh0YXJnZXRSZWN0
KSk7CisgICAgICAgIGNvbnRleHQtPmNvbmNhdENUTShncmFkaWVudEludG9PYmplY3RCQm94KTsK
KyAgICB9CiAKLSAgICAgICAgICAgIC8vIEZpeHVwIHRyYW5zZm9ybWF0aW9ucyB0byBiZSBhYmxl
IHRvIGNsaXAgdG8gbWFzawotICAgICAgICAgICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybSA9
IG9iamVjdC0+YWJzb2x1dGVUcmFuc2Zvcm0oKTsKLSAgICAgICAgICAgIEZsb2F0UmVjdCB0ZXh0
Qm91bmRhcnkgPSB0cmFuc2Zvcm0ubWFwUmVjdChtYXNrQkJveCk7CisgICAgLy8gQXBwbHkgdGhl
IGdyYWRpZW50J3Mgb3duIHRyYW5zZm9ybQorICAgIGNvbnRleHQtPmNvbmNhdENUTShncmFkaWVu
dFRyYW5zZm9ybSk7Cit9CiAKLSAgICAgICAgICAgIEludFNpemUgbWFza1NpemUobHJvdW5kZih0
ZXh0Qm91bmRhcnkud2lkdGgoKSksIGxyb3VuZGYodGV4dEJvdW5kYXJ5LmhlaWdodCgpKSk7Ci0g
ICAgICAgICAgICBjbGFtcEltYWdlQnVmZmVyU2l6ZVRvVmlld3BvcnQob2JqZWN0LT5kb2N1bWVu
dCgpLT5yZW5kZXJlcigpLCBtYXNrU2l6ZSk7CitzdGF0aWMgaW5saW5lIGJvb2wgY3JlYXRlTWFz
a0FuZFN3YXBDb250ZXh0Rm9yVGV4dEdyYWRpZW50KAorICAgIEdyYXBoaWNzQ29udGV4dComIGNv
bnRleHQsIEdyYXBoaWNzQ29udGV4dComIHNhdmVkQ29udGV4dCwKKyAgICBPd25QdHI8SW1hZ2VC
dWZmZXI+JiBpbWFnZUJ1ZmZlciwgY29uc3QgUmVuZGVyT2JqZWN0KiBvYmplY3QpCit7CisgICAg
RmxvYXRSZWN0IG1hc2tCQm94ID0gY29uc3RfY2FzdDxSZW5kZXJPYmplY3QqPihmaW5kVGV4dFJv
b3RPYmplY3Qob2JqZWN0KSktPnJlbGF0aXZlQkJveChmYWxzZSk7CisgICAgSW50UmVjdCBtYXNr
UmVjdCA9IGVuY2xvc2luZ0ludFJlY3Qob2JqZWN0LT5hYnNvbHV0ZVRyYW5zZm9ybSgpLm1hcFJl
Y3QobWFza0JCb3gpKTsKIAotICAgICAgICAgICAgaWYgKG1hc2tTaXplLndpZHRoKCkgPCBzdGF0
aWNfY2FzdDxpbnQ+KHRleHRCb3VuZGFyeS53aWR0aCgpKSkKLSAgICAgICAgICAgICAgICB0ZXh0
Qm91bmRhcnkuc2V0V2lkdGgobWFza1NpemUud2lkdGgoKSk7CisgICAgSW50U2l6ZSBtYXNrU2l6
ZShtYXNrUmVjdC53aWR0aCgpLCBtYXNrUmVjdC5oZWlnaHQoKSk7CisgICAgY2xhbXBJbWFnZUJ1
ZmZlclNpemVUb1ZpZXdwb3J0KG9iamVjdC0+ZG9jdW1lbnQoKS0+cmVuZGVyZXIoKSwgbWFza1Np
emUpOwogCi0gICAgICAgICAgICBpZiAobWFza1NpemUuaGVpZ2h0KCkgPCBzdGF0aWNfY2FzdDxp
bnQ+KHRleHRCb3VuZGFyeS5oZWlnaHQoKSkpCi0gICAgICAgICAgICAgICAgdGV4dEJvdW5kYXJ5
LnNldEhlaWdodChtYXNrU2l6ZS5oZWlnaHQoKSk7CisgICAgYXV0b19wdHI8SW1hZ2VCdWZmZXI+
IG1hc2tJbWFnZSA9IEltYWdlQnVmZmVyOjpjcmVhdGUobWFza1NpemUsIGZhbHNlKTsKIAotICAg
ICAgICAgICAgLy8gQ2xpcCBjdXJyZW50IGNvbnRleHQgdG8gbWFzayBpbWFnZSAoZ3JhZGllbnQp
Ci0gICAgICAgICAgICBtX3NhdmVkQ29udGV4dC0+Y29uY2F0Q1RNKHRyYW5zZm9ybS5pbnZlcnNl
KCkpOwotICAgICAgICAgICAgbV9zYXZlZENvbnRleHQtPmNsaXBUb0ltYWdlQnVmZmVyKHRleHRC
b3VuZGFyeSwgbV9pbWFnZUJ1ZmZlci5nZXQoKSk7Ci0gICAgICAgICAgICBtX3NhdmVkQ29udGV4
dC0+Y29uY2F0Q1RNKHRyYW5zZm9ybSk7CisgICAgaWYgKCFtYXNrSW1hZ2UuZ2V0KCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICAgICAgaGFuZGxlQm91bmRpbmdCb3hNb2RlQW5k
R3JhZGllbnRUcmFuc2Zvcm1hdGlvbihtX3NhdmVkQ29udGV4dCwgbWFza0JCb3gpOworICAgIEdy
YXBoaWNzQ29udGV4dCogbWFza0ltYWdlQ29udGV4dCA9IG1hc2tJbWFnZS0+Y29udGV4dCgpOwor
ICAgIG1hc2tJbWFnZUNvbnRleHQtPnNhdmUoKTsKKyAgICBtYXNrSW1hZ2VDb250ZXh0LT50cmFu
c2xhdGUoLW1hc2tSZWN0LngoKSwgLW1hc2tSZWN0LnkoKSk7CisgICAgbWFza0ltYWdlQ29udGV4
dC0+Y29uY2F0Q1RNKG9iamVjdC0+YWJzb2x1dGVUcmFuc2Zvcm0oKSk7CiAKLSAgICAgICAgICAg
IC8vIFJlc3RvcmUgb24tc2NyZWVuIGRyYXdpbmcgY29udGV4dCwgYWZ0ZXIgd2UgZ290IHRoZSBp
bWFnZSBvZiB0aGUgZ3JhZGllbnQKLSAgICAgICAgICAgIGNvbnRleHQgPSBtX3NhdmVkQ29udGV4
dDsKLSAgICAgICAgICAgIGNvbnRleHRSZWYgPSBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKTsK
KyAgICBpbWFnZUJ1ZmZlci5zZXQobWFza0ltYWdlLnJlbGVhc2UoKSk7CisgICAgc2F2ZWRDb250
ZXh0ID0gY29udGV4dDsKIAotICAgICAgICAgICAgbV9zYXZlZENvbnRleHQgPSAwOwotICAgICAg
ICAgICAgbV9pbWFnZUJ1ZmZlci5jbGVhcigpOworICAgIGNvbnRleHQgPSBtYXNrSW1hZ2VDb250
ZXh0OwogCi0gICAgICAgICAgICAvLyBmaW5hbGx5IGZpbGwgdGhlIHRleHQgY2xpcCB3aXRoIHRo
ZSBzaGFkaW5nCi0gICAgICAgICAgICBDR0NvbnRleHREcmF3U2hhZGluZyhjb250ZXh0UmVmLCBt
X2dyYWRpZW50LT5wbGF0Zm9ybUdyYWRpZW50KCkpOwotICAgICAgICB9CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBjbGlwVG9UZXh0TWFzayhHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsCisgICAgT3duUHRyPEltYWdlQnVmZmVyPiYgaW1hZ2VCdWZmZXIsIGNvbnN0
IFJlbmRlck9iamVjdCogb2JqZWN0LAorICAgIGNvbnN0IFNWR1BhaW50U2VydmVyR3JhZGllbnQq
IGdyYWRpZW50U2VydmVyKQoreworICAgIEZsb2F0UmVjdCBtYXNrQkJveCA9IGNvbnN0X2Nhc3Q8
UmVuZGVyT2JqZWN0Kj4oZmluZFRleHRSb290T2JqZWN0KG9iamVjdCkpLT5yZWxhdGl2ZUJCb3go
ZmFsc2UpOworCisgICAgLy8gRml4dXAgdHJhbnNmb3JtYXRpb25zIHRvIGJlIGFibGUgdG8gY2xp
cCB0byBtYXNrCisgICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybSA9IG9iamVjdC0+YWJzb2x1
dGVUcmFuc2Zvcm0oKTsKKyAgICBGbG9hdFJlY3QgdGV4dEJvdW5kYXJ5ID0gdHJhbnNmb3JtLm1h
cFJlY3QobWFza0JCb3gpOworCisgICAgSW50U2l6ZSBtYXNrU2l6ZShscm91bmRmKHRleHRCb3Vu
ZGFyeS53aWR0aCgpKSwgbHJvdW5kZih0ZXh0Qm91bmRhcnkuaGVpZ2h0KCkpKTsKKyAgICBjbGFt
cEltYWdlQnVmZmVyU2l6ZVRvVmlld3BvcnQob2JqZWN0LT5kb2N1bWVudCgpLT5yZW5kZXJlcigp
LCBtYXNrU2l6ZSk7CisgICAgdGV4dEJvdW5kYXJ5LnNldFNpemUodGV4dEJvdW5kYXJ5LnNpemUo
KS5zaHJ1bmtUbyhtYXNrU2l6ZSkpOworCisgICAgLy8gQ2xpcCBjdXJyZW50IGNvbnRleHQgdG8g
bWFzayBpbWFnZSAoZ3JhZGllbnQpCisgICAgY29udGV4dC0+Y29uY2F0Q1RNKHRyYW5zZm9ybS5p
bnZlcnNlKCkpOworICAgIGNvbnRleHQtPmNsaXBUb0ltYWdlQnVmZmVyKHRleHRCb3VuZGFyeSwg
aW1hZ2VCdWZmZXIuZ2V0KCkpOworICAgIGNvbnRleHQtPmNvbmNhdENUTSh0cmFuc2Zvcm0pOwor
CisgICAgaGFuZGxlQm91bmRpbmdCb3hNb2RlQW5kR3JhZGllbnRUcmFuc2Zvcm1hdGlvbihjb250
ZXh0LAorICAgICAgICAgICAgZ3JhZGllbnRTZXJ2ZXItPmJvdW5kaW5nQm94TW9kZSgpLAorICAg
ICAgICAgICAgZ3JhZGllbnRTZXJ2ZXItPmdyYWRpZW50VHJhbnNmb3JtKCksIG1hc2tCQm94KTsK
K30KKwordm9pZCBTVkdQYWludFNlcnZlckdyYWRpZW50Ojp0ZWFyZG93bihHcmFwaGljc0NvbnRl
eHQqJiBjb250ZXh0LCBjb25zdCBSZW5kZXJPYmplY3QqIG9iamVjdCwgU1ZHUGFpbnRUYXJnZXRU
eXBlIHR5cGUsIGJvb2wgaXNQYWludGluZ1RleHQpIGNvbnN0Cit7CisgICAgLy8gcmVuZGVyUGF0
aCgpIGlzIG5vdCB1c2VkIHdoZW4gcGFpbnRpbmcgdGV4dCwgc28gd2UgcGFpbnQgdGhlIGdyYWRp
ZW50IGR1cmluZyB0ZWFyZG93bigpCisgICAgaWYgKGlzUGFpbnRpbmdUZXh0ICYmIG1fc2F2ZWRD
b250ZXh0KSB7CisgICAgICAgIC8vIFJlc3RvcmUgb24tc2NyZWVuIGRyYXdpbmcgY29udGV4dAor
ICAgICAgICBjb250ZXh0ID0gbV9zYXZlZENvbnRleHQ7CisgICAgICAgIG1fc2F2ZWRDb250ZXh0
ID0gMDsKKworICAgICAgICBjbGlwVG9UZXh0TWFzayhjb250ZXh0LCBtX2ltYWdlQnVmZmVyLCBv
YmplY3QsIHRoaXMpOworCisgICAgICAgIC8vIGZpbmFsbHkgZmlsbCB0aGUgdGV4dCBjbGlwIHdp
dGggdGhlIHNoYWRpbmcKKyAgICAgICAgQ0dDb250ZXh0RHJhd1NoYWRpbmcoY29udGV4dC0+cGxh
dGZvcm1Db250ZXh0KCksIG1fZ3JhZGllbnQtPnBsYXRmb3JtR3JhZGllbnQoKSk7CisKKyAgICAg
ICAgbV9pbWFnZUJ1ZmZlci5jbGVhcigpOyAvLyB3ZSdyZSBkb25lIHdpdGggb3VyIHRleHQgbWFz
ayBidWZmZXIKICAgICB9Ci0gICAgY29udGV4dC0+cmVzdG9yZSgpOworICAgIGNvbnRleHQtPnJl
c3RvcmUoKTsgLy8gc2F2ZSB3YXMgY2FsbGVkIGR1cmluZyBzZXR1cCgpCiB9CiAKIHZvaWQgU1ZH
UGFpbnRTZXJ2ZXJHcmFkaWVudDo6cmVuZGVyUGF0aChHcmFwaGljc0NvbnRleHQqJiBjb250ZXh0
LCBjb25zdCBSZW5kZXJPYmplY3QqIHBhdGgsIFNWR1BhaW50VGFyZ2V0VHlwZSB0eXBlKSBjb25z
dApAQCAtMTEyLDc0ICsxNTUsMzUgQEAgdm9pZCBTVkdQYWludFNlcnZlckdyYWRpZW50OjpyZW5k
ZXJQYXRoKEdyYXBoaWNzQ29udGV4dComIGNvbnRleHQsIGNvbnN0IFJlbmRlck8KICAgICAgICAg
ICAgIG9iamVjdEJCb3ggPSBiYm94OwogICAgIH0KIAotICAgIGhhbmRsZUJvdW5kaW5nQm94TW9k
ZUFuZEdyYWRpZW50VHJhbnNmb3JtYXRpb24oY29udGV4dCwgb2JqZWN0QkJveCk7Ci19Ci0KLXZv
aWQgU1ZHUGFpbnRTZXJ2ZXJHcmFkaWVudDo6aGFuZGxlQm91bmRpbmdCb3hNb2RlQW5kR3JhZGll
bnRUcmFuc2Zvcm1hdGlvbihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVj
dCYgdGFyZ2V0UmVjdCkgY29uc3QKLXsKLSAgICBDR0NvbnRleHRSZWYgY29udGV4dFJlZiA9IGNv
bnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOwotCi0gICAgaWYgKGJvdW5kaW5nQm94TW9kZSgpKSB7
Ci0gICAgICAgIC8vIENob29zZSBkZWZhdWx0IGdyYWRpZW50IGJvdW5kaW5nIGJveAotICAgICAg
ICBDR1JlY3QgZ3JhZGllbnRCQm94ID0gQ0dSZWN0TWFrZSgwLjBmLCAwLjBmLCAxLjBmLCAxLjBm
KTsKLQotICAgICAgICAvLyBHZW5lcmF0ZSBhIHRyYW5zZm9ybSB0byBtYXAgYmV0d2VlbiBib3Ro
IGJvdW5kaW5nIGJveGVzCi0gICAgICAgIENHQWZmaW5lVHJhbnNmb3JtIGdyYWRpZW50SW50b09i
amVjdEJCb3ggPSBDR0FmZmluZVRyYW5zZm9ybU1ha2VNYXBCZXR3ZWVuUmVjdHMoZ3JhZGllbnRC
Qm94LCBDR1JlY3QodGFyZ2V0UmVjdCkpOwotICAgICAgICBDR0NvbnRleHRDb25jYXRDVE0oY29u
dGV4dFJlZiwgZ3JhZGllbnRJbnRvT2JqZWN0QkJveCk7Ci0gICAgfQotCi0gICAgLy8gQXBwbHkg
dGhlIGdyYWRpZW50J3Mgb3duIHRyYW5zZm9ybQotICAgIENHQWZmaW5lVHJhbnNmb3JtIHRyYW5z
Zm9ybSA9IGdyYWRpZW50VHJhbnNmb3JtKCk7Ci0gICAgQ0dDb250ZXh0Q29uY2F0Q1RNKGNvbnRl
eHRSZWYsIHRyYW5zZm9ybSk7CisgICAgaGFuZGxlQm91bmRpbmdCb3hNb2RlQW5kR3JhZGllbnRU
cmFuc2Zvcm1hdGlvbihjb250ZXh0LCBib3VuZGluZ0JveE1vZGUoKSwKKyAgICAgICAgZ3JhZGll
bnRUcmFuc2Zvcm0oKSwgb2JqZWN0QkJveCk7CiB9CiAKIGJvb2wgU1ZHUGFpbnRTZXJ2ZXJHcmFk
aWVudDo6c2V0dXAoR3JhcGhpY3NDb250ZXh0KiYgY29udGV4dCwgY29uc3QgUmVuZGVyT2JqZWN0
KiBvYmplY3QsIFNWR1BhaW50VGFyZ2V0VHlwZSB0eXBlLCBib29sIGlzUGFpbnRpbmdUZXh0KSBj
b25zdAogewogICAgIG1fb3duZXJFbGVtZW50LT5idWlsZEdyYWRpZW50KCk7CiAKLSAgICBDR0Nv
bnRleHRSZWYgY29udGV4dFJlZiA9IGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOwotICAgIEFT
U0VSVChjb250ZXh0UmVmKTsKLQogICAgIFJlbmRlclN0eWxlKiBzdHlsZSA9IG9iamVjdC0+c3R5
bGUoKTsKKyAgICBjb25zdCBTVkdSZW5kZXJTdHlsZSogc3ZnU3R5bGUgPSBzdHlsZS0+c3ZnU3R5
bGUoKTsKIAotICAgIGJvb2wgaXNGaWxsZWQgPSAodHlwZSAmIEFwcGx5VG9GaWxsVGFyZ2V0VHlw
ZSkgJiYgc3R5bGUtPnN2Z1N0eWxlKCktPmhhc0ZpbGwoKTsKLSAgICBib29sIGlzU3Ryb2tlZCA9
ICh0eXBlICYgQXBwbHlUb1N0cm9rZVRhcmdldFR5cGUpICYmIHN0eWxlLT5zdmdTdHlsZSgpLT5o
YXNTdHJva2UoKTsKKyAgICBib29sIGlzRmlsbGVkID0gKHR5cGUgJiBBcHBseVRvRmlsbFRhcmdl
dFR5cGUpICYmIHN2Z1N0eWxlLT5oYXNGaWxsKCk7CisgICAgYm9vbCBpc1N0cm9rZWQgPSAodHlw
ZSAmIEFwcGx5VG9TdHJva2VUYXJnZXRUeXBlKSAmJiBzdmdTdHlsZS0+aGFzU3Ryb2tlKCk7CiAK
ICAgICBBU1NFUlQoaXNGaWxsZWQgJiYgIWlzU3Ryb2tlZCB8fCAhaXNGaWxsZWQgJiYgaXNTdHJv
a2VkKTsKIAotICAgIGNvbnRleHQtPnNhdmUoKTsKLSAgICBDR0NvbnRleHRTZXRBbHBoYShjb250
ZXh0UmVmLCBpc0ZpbGxlZCA/IHN0eWxlLT5zdmdTdHlsZSgpLT5maWxsT3BhY2l0eSgpIDogc3R5
bGUtPnN2Z1N0eWxlKCktPnN0cm9rZU9wYWNpdHkoKSk7CisgICAgY29udGV4dC0+c2F2ZSgpOyAv
LyByZXN0b3JlIGlzIGNhbGxlZCBkdXJpbmcgdGVhcmRvd24oKQorICAgIGNvbnRleHQtPnNldEFs
cGhhKGlzRmlsbGVkID8gc3ZnU3R5bGUtPmZpbGxPcGFjaXR5KCkgOiBzdmdTdHlsZS0+c3Ryb2tl
T3BhY2l0eSgpKTsKIAogICAgIGlmIChpc1BhaW50aW5nVGV4dCkgewotICAgICAgICBGbG9hdFJl
Y3QgbWFza0JCb3ggPSBjb25zdF9jYXN0PFJlbmRlck9iamVjdCo+KGZpbmRUZXh0Um9vdE9iamVj
dChvYmplY3QpKS0+cmVsYXRpdmVCQm94KGZhbHNlKTsKLSAgICAgICAgSW50UmVjdCBtYXNrUmVj
dCA9IGVuY2xvc2luZ0ludFJlY3Qob2JqZWN0LT5hYnNvbHV0ZVRyYW5zZm9ybSgpLm1hcFJlY3Qo
bWFza0JCb3gpKTsKLQotICAgICAgICBJbnRTaXplIG1hc2tTaXplKG1hc2tSZWN0LndpZHRoKCks
IG1hc2tSZWN0LmhlaWdodCgpKTsKLSAgICAgICAgY2xhbXBJbWFnZUJ1ZmZlclNpemVUb1ZpZXdw
b3J0KG9iamVjdC0+ZG9jdW1lbnQoKS0+cmVuZGVyZXIoKSwgbWFza1NpemUpOwotCi0gICAgICAg
IGF1dG9fcHRyPEltYWdlQnVmZmVyPiBtYXNrSW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKG1h
c2tTaXplLCBmYWxzZSk7Ci0KLSAgICAgICAgaWYgKCFtYXNrSW1hZ2UuZ2V0KCkpIHsKKyAgICAg
ICAgaWYgKCFjcmVhdGVNYXNrQW5kU3dhcENvbnRleHRGb3JUZXh0R3JhZGllbnQoY29udGV4dCwg
bV9zYXZlZENvbnRleHQsIG1faW1hZ2VCdWZmZXIsIG9iamVjdCkpIHsKICAgICAgICAgICAgIGNv
bnRleHQtPnJlc3RvcmUoKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQot
Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dCogbWFza0ltYWdlQ29udGV4dCA9IG1hc2tJbWFnZS0+
Y29udGV4dCgpOwotICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LT5zYXZlKCk7Ci0KLSAgICAgICAg
bWFza0ltYWdlQ29udGV4dC0+c2V0VGV4dERyYXdpbmdNb2RlKGlzRmlsbGVkID8gY1RleHRGaWxs
IDogY1RleHRTdHJva2UpOwotICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LT50cmFuc2xhdGUoLW1h
c2tSZWN0LngoKSwgLW1hc2tSZWN0LnkoKSk7Ci0gICAgICAgIG1hc2tJbWFnZUNvbnRleHQtPmNv
bmNhdENUTShvYmplY3QtPmFic29sdXRlVHJhbnNmb3JtKCkpOwotCi0gICAgICAgIG1faW1hZ2VC
dWZmZXIuc2V0KG1hc2tJbWFnZS5yZWxlYXNlKCkpOwotICAgICAgICBtX3NhdmVkQ29udGV4dCA9
IGNvbnRleHQ7Ci0KLSAgICAgICAgY29udGV4dCA9IG1hc2tJbWFnZUNvbnRleHQ7Ci0gICAgICAg
IGNvbnRleHRSZWYgPSBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKTsKKyAgICAgICAgY29udGV4
dC0+c2V0VGV4dERyYXdpbmdNb2RlKGlzRmlsbGVkID8gY1RleHRGaWxsIDogY1RleHRTdHJva2Up
OwogICAgIH0KIAotICAgIGlmIChpc0ZpbGxlZCAmJiBvYmplY3QpCi0gICAgICAgIGNvbnRleHQt
PnNldEZpbGxSdWxlKG9iamVjdC0+c3R5bGUoKS0+c3ZnU3R5bGUoKS0+ZmlsbFJ1bGUoKSk7Cisg
ICAgaWYgKGlzRmlsbGVkKQorICAgICAgICBjb250ZXh0LT5zZXRGaWxsUnVsZShzdmdTdHlsZS0+
ZmlsbFJ1bGUoKSk7CiAKICAgICBpZiAoaXNTdHJva2VkKQogICAgICAgICBhcHBseVN0cm9rZVN0
eWxlVG9Db250ZXh0KGNvbnRleHQsIHN0eWxlLCBvYmplY3QpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22995</attachid>
            <date>2008-08-25 22:36:48 -0700</date>
            <delta_ts>2008-08-25 22:36:48 -0700</delta_ts>
            <desc>Make Gradients not crash for &lt;canvas&gt;</desc>
            <filename>Make-Gradients-not-crash-for-canvas-.patch</filename>
            <type>text/plain</type>
            <size>671</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">Nzc5YjQzNWZlYWQxN2Y0MjlkOTk3OWNkN2U4N2MxYWE0M2FjYTY1MQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAgYi9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAppbmRleCAxMTc1NmY4
Li5hYWYxYWZkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBo
aWNzQ29udGV4dENHLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBo
aWNzQ29udGV4dENHLmNwcApAQCAtNDk2LDcgKzQ5Niw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgR3JhZGllbnRDb2xvclNwYWNlOgogICAgICAgICBjbGlwKHJlY3QpOwotICAgICAgICBDR0Nv
bnRleHREcmF3U2hhZGluZyhwbGF0Zm9ybUNvbnRleHQoKSwgbV9jb21tb24tPnN0YXRlLmZpbGxH
cmFkaWVudC0+cGxhdGZvcm1HcmFkaWVudCgpKTsKKyAgICAgICAgQ0dDb250ZXh0RHJhd1NoYWRp
bmcocGxhdGZvcm1Db250ZXh0KCksIG1fY29tbW9uLT5zdGF0ZS5zdHJva2VHcmFkaWVudC0+cGxh
dGZvcm1HcmFkaWVudCgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23011</attachid>
            <date>2008-08-26 17:58:02 -0700</date>
            <delta_ts>2008-08-26 17:58:02 -0700</delta_ts>
            <desc>Fix SVG Gradients -- we only regress 3 tests now</desc>
            <filename>Fix-SVG-Gradients-we-only-regress-3-tests-now.patch</filename>
            <type>text/plain</type>
            <size>3499</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">MWI1NjVmODk3MzRhNGJkMzE3OGNhZTA5Mzg0ZGVhYjdlN2I1YzQwMQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAgYi9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAppbmRleCBhYWYxYWZk
Li5lNTZjNTRiIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBo
aWNzQ29udGV4dENHLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBo
aWNzQ29udGV4dENHLmNwcApAQCAtNDc3LDcgKzQ3Nyw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpzdHJva2VQYXRoKCkKICAgICBjYXNlIEdyYWRpZW50Q29sb3JTcGFjZToKICAgICAgICAgQ0dD
b250ZXh0UmVwbGFjZVBhdGhXaXRoU3Ryb2tlZFBhdGgoY29udGV4dCk7CiAgICAgICAgIENHQ29u
dGV4dENsaXAoY29udGV4dCk7Ci0gICAgICAgIENHQ29udGV4dERyYXdTaGFkaW5nKGNvbnRleHQs
IG1fY29tbW9uLT5zdGF0ZS5maWxsR3JhZGllbnQtPnBsYXRmb3JtR3JhZGllbnQoKSk7CisgICAg
ICAgIENHQ29udGV4dERyYXdTaGFkaW5nKGNvbnRleHQsIG1fY29tbW9uLT5zdGF0ZS5zdHJva2VH
cmFkaWVudC0+cGxhdGZvcm1HcmFkaWVudCgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogfQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9zdmcvUmFkaWFsR3JhZGllbnRBdHRyaWJ1dGVzLmggYi9XZWJD
b3JlL3N2Zy9SYWRpYWxHcmFkaWVudEF0dHJpYnV0ZXMuaAppbmRleCAwNjM0MmFlLi5kMmIyMDM5
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3N2Zy9SYWRpYWxHcmFkaWVudEF0dHJpYnV0ZXMuaAorKysg
Yi9XZWJDb3JlL3N2Zy9SYWRpYWxHcmFkaWVudEF0dHJpYnV0ZXMuaApAQCAtNjUsMTAgKzY1LDEw
IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxHcmFkaWVu
dD4gY3JlYXRlR3JhZGllbnQoKQogICAgICAgICB7CiAgICAgICAgICAgICBSZWZQdHI8R3JhZGll
bnQ+IGdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZSgKLSAgICAgICAgICAgICAgICBGbG9hdFBv
aW50OjpuYXJyb3dQcmVjaXNpb24obV9jeCwgbV9jeSksCi0gICAgICAgICAgICAgICAgbmFycm93
UHJlY2lzaW9uVG9GbG9hdChtX3IpLAogICAgICAgICAgICAgICAgIEZsb2F0UG9pbnQ6Om5hcnJv
d1ByZWNpc2lvbihtX2Z4LCBtX2Z5KSwKLSAgICAgICAgICAgICAgICAwLmYpOworICAgICAgICAg
ICAgICAgIDAuZiwgLy8gU1ZHIGRvZXMgbm90IHN1cHBvcnQgYSAiZm9jdXMgcmFkaXVzIgorICAg
ICAgICAgICAgICAgIEZsb2F0UG9pbnQ6Om5hcnJvd1ByZWNpc2lvbihtX2N4LCBtX2N5KSwKKyAg
ICAgICAgICAgICAgICBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KG1fcikpOwogCiAgICAgICAgICAg
ICBhZGRTdG9wc1RvR3JhZGllbnQoZ3JhZGllbnQuZ2V0KCkpOwogICAgICAgICAgICAgcmV0dXJu
IGdyYWRpZW50LnJlbGVhc2UoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2Nn
L1NWR1BhaW50U2VydmVyR3JhZGllbnRDZy5jcHAgYi9XZWJDb3JlL3N2Zy9ncmFwaGljcy9jZy9T
VkdQYWludFNlcnZlckdyYWRpZW50Q2cuY3BwCmluZGV4IDM1NzRkNWUuLmZkNjJkNDYgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2NnL1NWR1BhaW50U2VydmVyR3JhZGllbnRDZy5j
cHAKKysrIGIvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvY2cvU1ZHUGFpbnRTZXJ2ZXJHcmFkaWVudENn
LmNwcApAQCAtMTQyLDExICsxNDIsNiBAQCB2b2lkIFNWR1BhaW50U2VydmVyR3JhZGllbnQ6OnRl
YXJkb3duKEdyYXBoaWNzQ29udGV4dComIGNvbnRleHQsIGNvbnN0IFJlbmRlck9iagogCiB2b2lk
IFNWR1BhaW50U2VydmVyR3JhZGllbnQ6OnJlbmRlclBhdGgoR3JhcGhpY3NDb250ZXh0KiYgY29u
dGV4dCwgY29uc3QgUmVuZGVyT2JqZWN0KiBwYXRoLCBTVkdQYWludFRhcmdldFR5cGUgdHlwZSkg
Y29uc3QKIHsKLSAgICBpZiAoKHR5cGUgJiBBcHBseVRvRmlsbFRhcmdldFR5cGUpICYmIHBhdGgt
PnN0eWxlKCktPnN2Z1N0eWxlKCktPmhhc0ZpbGwoKSkKLSAgICAgICAgY29udGV4dC0+ZmlsbFBh
dGgoKTsKLSAgICBlbHNlCi0gICAgICAgIGNvbnRleHQtPnN0cm9rZVBhdGgoKTsKLQogICAgIC8v
IENvbXB1dGUgZGVzdGluYXRpb24gb2JqZWN0IGJvdW5kaW5nIGJveAogICAgIEZsb2F0UmVjdCBv
YmplY3RCQm94OwogICAgIGlmIChib3VuZGluZ0JveE1vZGUoKSkgewpAQCAtMTU3LDExICsxNTIs
MTggQEAgdm9pZCBTVkdQYWludFNlcnZlckdyYWRpZW50OjpyZW5kZXJQYXRoKEdyYXBoaWNzQ29u
dGV4dComIGNvbnRleHQsIGNvbnN0IFJlbmRlck8KIAogICAgIGhhbmRsZUJvdW5kaW5nQm94TW9k
ZUFuZEdyYWRpZW50VHJhbnNmb3JtYXRpb24oY29udGV4dCwgYm91bmRpbmdCb3hNb2RlKCksCiAg
ICAgICAgIGdyYWRpZW50VHJhbnNmb3JtKCksIG9iamVjdEJCb3gpOworCisgICAgaWYgKCh0eXBl
ICYgQXBwbHlUb0ZpbGxUYXJnZXRUeXBlKSAmJiBwYXRoLT5zdHlsZSgpLT5zdmdTdHlsZSgpLT5o
YXNGaWxsKCkpCisgICAgICAgIGNvbnRleHQtPmZpbGxQYXRoKCk7CisgICAgZWxzZQorICAgICAg
ICBjb250ZXh0LT5zdHJva2VQYXRoKCk7CiB9CiAKIGJvb2wgU1ZHUGFpbnRTZXJ2ZXJHcmFkaWVu
dDo6c2V0dXAoR3JhcGhpY3NDb250ZXh0KiYgY29udGV4dCwgY29uc3QgUmVuZGVyT2JqZWN0KiBv
YmplY3QsIFNWR1BhaW50VGFyZ2V0VHlwZSB0eXBlLCBib29sIGlzUGFpbnRpbmdUZXh0KSBjb25z
dAogewogICAgIG1fb3duZXJFbGVtZW50LT5idWlsZEdyYWRpZW50KCk7CisgICAgaWYgKCFtX2dy
YWRpZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBSZW5kZXJTdHlsZSogc3R5bGUg
PSBvYmplY3QtPnN0eWxlKCk7CiAgICAgY29uc3QgU1ZHUmVuZGVyU3R5bGUqIHN2Z1N0eWxlID0g
c3R5bGUtPnN2Z1N0eWxlKCk7CkBAIC0xODIsMTEgKzE4NCwxNSBAQCBib29sIFNWR1BhaW50U2Vy
dmVyR3JhZGllbnQ6OnNldHVwKEdyYXBoaWNzQ29udGV4dComIGNvbnRleHQsIGNvbnN0IFJlbmRl
ck9iamVjdAogICAgICAgICBjb250ZXh0LT5zZXRUZXh0RHJhd2luZ01vZGUoaXNGaWxsZWQgPyBj
VGV4dEZpbGwgOiBjVGV4dFN0cm9rZSk7CiAgICAgfQogCi0gICAgaWYgKGlzRmlsbGVkKQorICAg
IGlmIChpc0ZpbGxlZCkgewogICAgICAgICBjb250ZXh0LT5zZXRGaWxsUnVsZShzdmdTdHlsZS0+
ZmlsbFJ1bGUoKSk7CisgICAgICAgIGNvbnRleHQtPnNldEZpbGxHcmFkaWVudChtX2dyYWRpZW50
KTsKKyAgICB9CiAKLSAgICBpZiAoaXNTdHJva2VkKQorICAgIGlmIChpc1N0cm9rZWQpIHsKICAg
ICAgICAgYXBwbHlTdHJva2VTdHlsZVRvQ29udGV4dChjb250ZXh0LCBzdHlsZSwgb2JqZWN0KTsK
KyAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlR3JhZGllbnQobV9ncmFkaWVudCk7CisgICAgfQog
CiAgICAgcmV0dXJuIHRydWU7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23012</attachid>
            <date>2008-08-26 17:58:04 -0700</date>
            <delta_ts>2008-08-26 17:58:04 -0700</delta_ts>
            <desc>Make more of the CG code cross-platform</desc>
            <filename>Make-more-of-the-CG-code-cross-platform.patch</filename>
            <type>text/plain</type>
            <size>12253</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">OWQ4MjQ4OWE4MmE4MmMzNzVlM2FhNTQ0NzQwNTUxZWZkNDI3ZmY3OQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvY2cvQ2dTdXBwb3J0LmNwcCBiL1dlYkNvcmUvc3ZnL2dyYXBoaWNz
L2NnL0NnU3VwcG9ydC5jcHAKaW5kZXggMGRjMzA1Zi4uNTZlNTE5OSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvY2cvQ2dTdXBwb3J0LmNwcAorKysgYi9XZWJDb3JlL3N2Zy9ncmFw
aGljcy9jZy9DZ1N1cHBvcnQuY3BwCkBAIC0zNywxNCArMzcsMTcgQEAKICNpbmNsdWRlICJSZW5k
ZXJTdHlsZS5oIgogI2luY2x1ZGUgIlNWR1BhaW50U2VydmVyLmgiCiAjaW5jbHVkZSAiU1ZHUmVu
ZGVyU3R5bGUuaCIKKwogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNHQWZmaW5lVHJhbnNmb3Jt
IENHQWZmaW5lVHJhbnNmb3JtTWFrZU1hcEJldHdlZW5SZWN0cyhDR1JlY3Qgc291cmNlLCBDR1Jl
Y3QgZGVzdCkKK0FmZmluZVRyYW5zZm9ybSBtYWtlTWFwQmV0d2VlblJlY3RzKGNvbnN0IEZsb2F0
UmVjdCYgc291cmNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3QpCiB7Ci0gICAgQ0dBZmZpbmVUcmFu
c2Zvcm0gdHJhbnNmb3JtID0gQ0dBZmZpbmVUcmFuc2Zvcm1NYWtlVHJhbnNsYXRpb24oZGVzdC5v
cmlnaW4ueCAtIHNvdXJjZS5vcmlnaW4ueCwgZGVzdC5vcmlnaW4ueSAtIHNvdXJjZS5vcmlnaW4u
eSk7Ci0gICAgdHJhbnNmb3JtID0gQ0dBZmZpbmVUcmFuc2Zvcm1TY2FsZSh0cmFuc2Zvcm0sIGRl
c3Quc2l6ZS53aWR0aC9zb3VyY2Uuc2l6ZS53aWR0aCwgZGVzdC5zaXplLmhlaWdodC9zb3VyY2Uu
c2l6ZS5oZWlnaHQpOworICAgIEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm07CisgICAgdHJhbnNm
b3JtLnRyYW5zbGF0ZShkZXN0LngoKSAtIHNvdXJjZS54KCksIGRlc3QueSgpIC0gc291cmNlLnko
KSk7CisgICAgdHJhbnNmb3JtLnNjYWxlKGRlc3Qud2lkdGgoKS9zb3VyY2Uud2lkdGgoKSwgZGVz
dC5oZWlnaHQoKS9zb3VyY2UuaGVpZ2h0KCkpOwogICAgIHJldHVybiB0cmFuc2Zvcm07CiB9CiAK
QEAgLTU1LDY0ICs1OCw2OCBAQCB2b2lkIGFwcGx5U3Ryb2tlU3R5bGVUb0NvbnRleHQoR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBSZW5kZXJTdHlsZSogc3R5bGUsIGNvbgogICAgIGNvbnRleHQt
PnNldExpbmVKb2luKHN0eWxlLT5zdmdTdHlsZSgpLT5qb2luU3R5bGUoKSk7CiAgICAgY29udGV4
dC0+c2V0TWl0ZXJMaW1pdChzdHlsZS0+c3ZnU3R5bGUoKS0+c3Ryb2tlTWl0ZXJMaW1pdCgpKTsK
IAotICAgIC8vIEZJWE1FOiBEYXNoQXJyYXkgc3VwcG9ydCBjb3VsZCBlYXNpbHkgYmUgbW92ZWQg
aW50byBHcmFwaGljc0NvbnRleHQsIGFuZCB0aGlzIGZ1bmN0aW9uIHRoZW4gbWFkZSB4LXBsYXRm
b3JtCisgICAgLy8gRklYTUU6IERhc2hBcnJheSBzdXBwb3J0IGNvdWxkIGVhc2lseSBiZSBtb3Zl
ZCBpbnRvIEdyYXBoaWNzQ29udGV4dCwgYW5kCisgICAgLy8gdGhpcyBmdW5jdGlvbiB0aGVuIG1h
ZGUgY3Jvc3MtcGxhdGZvcm0KICAgICBjb25zdCBEYXNoQXJyYXkmIGRhc2hlcyA9IGRhc2hBcnJh
eUZyb21SZW5kZXJpbmdTdHlsZShzdHlsZSk7CiAgICAgZmxvYXQgZGFzaE9mZnNldCA9IFNWR1Jl
bmRlclN0eWxlOjpjc3NQcmltaXRpdmVUb0xlbmd0aChvYmplY3QsIHN0eWxlLT5zdmdTdHlsZSgp
LT5zdHJva2VEYXNoT2Zmc2V0KCksIDAuMGYpOwogCiAgICAgQ0dDb250ZXh0U2V0TGluZURhc2go
Y29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIGRhc2hPZmZzZXQsIGRhc2hlcy5kYXRhKCksIGRh
c2hlcy5zaXplKCkpOwogfQogCi1DR0NvbnRleHRSZWYgc2NyYXRjaENvbnRleHQoKQorR3JhcGhp
Y3NDb250ZXh0KiBzY3JhdGNoQ29udGV4dCgpCiB7Ci0gICAgc3RhdGljIENHQ29udGV4dFJlZiBz
Y3JhdGNoID0gMDsKLSAgICBpZiAoIXNjcmF0Y2gpIHsKLSAgICAgICAgQ0ZNdXRhYmxlRGF0YVJl
ZiBlbXB0eSA9IENGRGF0YUNyZWF0ZU11dGFibGUoTlVMTCwgMCk7Ci0gICAgICAgIENHRGF0YUNv
bnN1bWVyUmVmIGNvbnN1bWVyID0gQ0dEYXRhQ29uc3VtZXJDcmVhdGVXaXRoQ0ZEYXRhKGVtcHR5
KTsKLSAgICAgICAgc2NyYXRjaCA9IENHUERGQ29udGV4dENyZWF0ZShjb25zdW1lciwgTlVMTCwg
TlVMTCk7CisgICAgc3RhdGljIEdyYXBoaWNzQ29udGV4dCogc2hhcmVkU2NyYXRjaENvbnRleHQg
PSAwOworICAgIGlmICghc2hhcmVkU2NyYXRjaENvbnRleHQpIHsKKyAgICAgICAgUmV0YWluUHRy
PENGTXV0YWJsZURhdGFSZWY+IGVtcHR5KEFkb3B0Q0YsIENGRGF0YUNyZWF0ZU11dGFibGUoTlVM
TCwgMCkpOworICAgICAgICBDR0RhdGFDb25zdW1lclJlZiBjb25zdW1lciA9IENHRGF0YUNvbnN1
bWVyQ3JlYXRlV2l0aENGRGF0YShlbXB0eS5nZXQoKSk7CisgICAgICAgIENHQ29udGV4dFJlZiBz
Y3JhdGNoID0gQ0dQREZDb250ZXh0Q3JlYXRlKGNvbnN1bWVyLCBOVUxMLCBOVUxMKTsKICAgICAg
ICAgQ0dEYXRhQ29uc3VtZXJSZWxlYXNlKGNvbnN1bWVyKTsKLSAgICAgICAgQ0ZSZWxlYXNlKGVt
cHR5KTsKIAotICAgICAgICBDR0Zsb2F0IGJsYWNrWzRdID0gezAsIDAsIDAsIDF9OwotICAgICAg
ICBDR0NvbnRleHRTZXRGaWxsQ29sb3Ioc2NyYXRjaCwgYmxhY2spOwotICAgICAgICBDR0NvbnRl
eHRTZXRTdHJva2VDb2xvcihzY3JhdGNoLCBibGFjayk7Ci0gICAgIH0KLSAgICByZXR1cm4gc2Ny
YXRjaDsKKyAgICAgICAgc2hhcmVkU2NyYXRjaENvbnRleHQgPSBuZXcgR3JhcGhpY3NDb250ZXh0
KHNjcmF0Y2gpOworICAgICAgICBDR0NvbnRleHRSZWxlYXNlKHNjcmF0Y2gpOworCisgICAgICAg
IC8vIFNldHVwIHNvbWUgZGVmYXVsdCBzdGF0ZSB3aGljaCBzaG91bGQgbmV2ZXIgY2hhbmdlIHNp
bmNlIGNhbGxlcnMKKyAgICAgICAgLy8gc2hvdWxkIGFsd2F5cyBzYXZlKCkgYW5kIHJlc3RvcmUo
KQorICAgICAgICBzaGFyZWRTY3JhdGNoQ29udGV4dC0+c2V0RmlsbENvbG9yKENvbG9yOjpibGFj
ayk7CisgICAgICAgIHNoYXJlZFNjcmF0Y2hDb250ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xvcjo6
YmxhY2spOworICAgIH0KKyAgICAvLyBUT0RPKGVzZWlkZWwpOiBXZSBjb3VsZCBhZGQgYW4gQVNT
RVJUIGhlcmUgdG8gYXNzdXJlIHRoYXQgCisgICAgLy8gc2hhcmVkU2NyYXRjaENvbnRleHQgYWx3
YXlzIGhhcyB0aGUgc2FtZSBzaGFyZWQgc3RhdGUsIGFuZCBpcyBub3QKKyAgICAvLyBhbHJlYWR5
IGluIHVzZSAoYW4gZW1wdHkgZ3JhcGhpY3Mgc3RhdGUgc3RhY2spLgorICAgIHJldHVybiBzaGFy
ZWRTY3JhdGNoQ29udGV4dDsKIH0KIAogRmxvYXRSZWN0IHN0cm9rZUJvdW5kaW5nQm94KGNvbnN0
IFBhdGgmIHBhdGgsIFJlbmRlclN0eWxlKiBzdHlsZSwgY29uc3QgUmVuZGVyT2JqZWN0KiBvYmpl
Y3QpCi0gewotICAgIC8vIHRoZSBiYm94IG1pZ2h0IGdyb3cgaWYgdGhlIHBhdGggaXMgc3Ryb2tl
ZC4KLSAgICAvLyBhbmQgQ0dQYXRoR2V0Qm91bmRpbmdCb3ggZG9lc24ndCBzdXBwb3J0IHRoYXQs
IHNvIHdlJ2xsIGhhdmUKLSAgICAvLyB0byBtYWtlIGFuIGFsdGVybmF0aXZlIGNhbGwuLi4KK3sK
KyAgICAvLyBUaGUgYm91bmRpbmcgYm94IG1heSBleHBhbmQgaWYgdGhlIHBhdGggaXMgc3Ryb2tl
ZC4KKyAgICAvLyBDR1BhdGhHZXRCb3VuZGluZ0JveCBvbmx5IHN1cHBvcnRzIHJldHVybmluZyB0
aGUgZmlsbCBib3VuZGluZyBib3gKKyAgICAvLyBzbyB3ZSBoYXZlIHRvIGZpcnN0IGNhbGwgQ0dD
b250ZXh0UmVwbGFjZVBhdGhXaXRoU3Ryb2tlZFBhdGgKICAKLSAgICAvLyBGSVhNRTogc2luY2Ug
dGhpcyBpcyBtYWlubHkgdXNlZCB0byBkZWNpZGUgd2hhdCB0byByZXBhaW50LAotICAgIC8vIHBl
cmhhcHMgaXQgd291bGQgYmUgc3VmZmljaWVudCB0byBqdXN0IG91dHNldCB0aGUgZmlsbCBiYm94
IGJ5Ci0gICAgLy8gdGhlIHN0cm9rZSB3aWR0aCAtIHRoYXQgc2hvdWxkIGJlIHdheSBjaGVhcGVy
IGFuZCBzaW1wbGVyIHRoYW4KLSAgICAvLyB3aGF0IHdlIGRvIGhlcmUuCisgICAgLy8gRklYTUU6
IENhbGxlcnMgd2hpY2ggb25seSBuZWVkIHRoaXMgZm9yIGRlY2lkaW5nIHRoZSByZXBhaW50LXJl
Y3QKKyAgICAvLyBzaG91bGQgcHJvYmFibHkgdXNlIGEgY2hlYXBlciBjYWxsLCB3aGljaCBqdXN0
IG9mZnNldHMgdGhlIChjYWNoZWQpIGZpbGwKKyAgICAvLyBib3VuZGluZyBib3ggYnkgb25lIGhh
bGYgb2YgdGhlIHN0cm9rZSB3aWR0aC4KICAKLSAgICBDR1BhdGhSZWYgY2dQYXRoID0gcGF0aC5w
bGF0Zm9ybVBhdGgoKTsKLQotICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gc2NyYXRjaENvbnRl
eHQoKTsKLSAgICBDR0NvbnRleHRTYXZlR1N0YXRlKGNvbnRleHQpOwotCi0gICAgQ0dDb250ZXh0
QmVnaW5QYXRoKGNvbnRleHQpOwotICAgIENHQ29udGV4dEFkZFBhdGgoY29udGV4dCwgY2dQYXRo
KTsKLQotICAgIEdyYXBoaWNzQ29udGV4dCBnYyhjb250ZXh0KTsKLSAgICBhcHBseVN0cm9rZVN0
eWxlVG9Db250ZXh0KCZnYywgc3R5bGUsIG9iamVjdCk7Ci0KLSAgICBDR0NvbnRleHRSZXBsYWNl
UGF0aFdpdGhTdHJva2VkUGF0aChjb250ZXh0KTsKLSAgICBpZiAoQ0dDb250ZXh0SXNQYXRoRW1w
dHkoY29udGV4dCkpIHsKLSAgICAgICAgLy8gQ0dDb250ZXh0UmVwbGFjZVBhdGhXaXRoU3Ryb2tl
ZFBhdGggc2VlbXMgdG8gZmFpbCB0byBjcmVhdGUgYSBwYXRoIHNvbWV0aW1lcywgdGhpcyBpcyBu
b3Qgd2VsbCB1bmRlcnN0b29kLgotICAgICAgICAvLyByZXR1cm5pbmcgaGVyZSBwcmV2ZW50cyBD
RyBmcm9tIGxvZ2dpbmcgdG8gdGhlIGNvbnNvbGUgZnJvbSBDR0NvbnRleHRHZXRQYXRoQm91bmRp
bmdCb3gKLSAgICAgICAgQ0dDb250ZXh0UmVzdG9yZUdTdGF0ZShjb250ZXh0KTsKKyAgICBHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQgPSBzY3JhdGNoQ29udGV4dCgpOworICAgIGNvbnRleHQtPnNh
dmUoKTsKKworICAgIGNvbnRleHQtPmJlZ2luUGF0aCgpOworICAgIGNvbnRleHQtPmFkZFBhdGgo
cGF0aCk7CisgICAgYXBwbHlTdHJva2VTdHlsZVRvQ29udGV4dChjb250ZXh0LCBzdHlsZSwgb2Jq
ZWN0KTsKKworICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBjb250ZXh0LT5wbGF0Zm9ybUNv
bnRleHQoKTsKKyAgICBDR0NvbnRleHRSZXBsYWNlUGF0aFdpdGhTdHJva2VkUGF0aChjZ0NvbnRl
eHQpOworICAgIGlmIChDR0NvbnRleHRJc1BhdGhFbXB0eShjZ0NvbnRleHQpKSB7CisgICAgICAg
IC8vIENHQ29udGV4dFJlcGxhY2VQYXRoV2l0aFN0cm9rZWRQYXRoIHNlZW1zIHRvIHNvbWV0aW1l
cyBmYWlsIHRvIGNyZWF0ZQorICAgICAgICAvLyBhIHBhdGgsIHRoaXMgaXMgbm90IHdlbGwgdW5k
ZXJzdG9vZC4gIFJldHVybmluZyBoZXJlIHByZXZlbnRzIENHIGZyb20KKyAgICAgICAgLy8gbG9n
Z2luZyB0byB0aGUgc3lzdGVtIGNvbnNvbGUgZnJvbSBDR0NvbnRleHRHZXRQYXRoQm91bmRpbmdC
b3guCisgICAgICAgIGNvbnRleHQtPnJlc3RvcmUoKTsKICAgICAgICAgcmV0dXJuIEZsb2F0UmVj
dCgpOwogICAgIH0KIAotICAgIENHUmVjdCBib3ggPSBDR0NvbnRleHRHZXRQYXRoQm91bmRpbmdC
b3goY29udGV4dCk7Ci0gICAgQ0dDb250ZXh0UmVzdG9yZUdTdGF0ZShjb250ZXh0KTsKKyAgICBG
bG9hdFJlY3QgYm94ID0gQ0dDb250ZXh0R2V0UGF0aEJvdW5kaW5nQm94KGNnQ29udGV4dCk7Cisg
ICAgY29udGV4dC0+cmVzdG9yZSgpOwogCi0gICAgcmV0dXJuIEZsb2F0UmVjdChib3gpOworICAg
IHJldHVybiBib3g7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2Nn
L0NnU3VwcG9ydC5oIGIvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvY2cvQ2dTdXBwb3J0LmgKaW5kZXgg
NDU0ZTViOS4uNjkxMGI5YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvY2cvQ2dT
dXBwb3J0LmgKKysrIGIvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvY2cvQ2dTdXBwb3J0LmgKQEAgLTI4
LDI0ICsyOCwyMCBAQAogCiAjaWYgRU5BQkxFKFNWRykKIAotI2luY2x1ZGUgPEFwcGxpY2F0aW9u
U2VydmljZXMvQXBwbGljYXRpb25TZXJ2aWNlcy5oPgotI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMu
aCIKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCi10eXBlZGVmIHN0cnVjdCBDR1BhdGggKkNHTXV0
YWJsZVBhdGhSZWY7Ci0KLWNsYXNzIFBhdGg7CitjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CiBjbGFz
cyBGbG9hdFJlY3Q7Ci1jbGFzcyBSZW5kZXJTdHlsZTsKLWNsYXNzIFJlbmRlck9iamVjdDsKIGNs
YXNzIEdyYXBoaWNzQ29udGV4dDsKK2NsYXNzIFBhdGg7CitjbGFzcyBSZW5kZXJPYmplY3Q7Citj
bGFzcyBSZW5kZXJTdHlsZTsKIAotQ0dBZmZpbmVUcmFuc2Zvcm0gQ0dBZmZpbmVUcmFuc2Zvcm1N
YWtlTWFwQmV0d2VlblJlY3RzKENHUmVjdCBzb3VyY2UsIENHUmVjdCBkZXN0KTsKK0FmZmluZVRy
YW5zZm9ybSBtYWtlTWFwQmV0d2VlblJlY3RzKGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3QpOwogCiB2b2lkIGFwcGx5U3Ryb2tlU3R5bGVUb0NvbnRleHQoR3Jh
cGhpY3NDb250ZXh0KiwgUmVuZGVyU3R5bGUqLCBjb25zdCBSZW5kZXJPYmplY3QqKTsKIAotQ0dD
b250ZXh0UmVmIHNjcmF0Y2hDb250ZXh0KCk7CitHcmFwaGljc0NvbnRleHQqIHNjcmF0Y2hDb250
ZXh0KCk7CiBGbG9hdFJlY3Qgc3Ryb2tlQm91bmRpbmdCb3goY29uc3QgUGF0aCYgcGF0aCwgUmVu
ZGVyU3R5bGUqLCBjb25zdCBSZW5kZXJPYmplY3QqKTsKIAogfQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvY2cvUmVuZGVyUGF0aENnLmNwcCBiL1dlYkNvcmUvc3ZnL2dyYXBoaWNz
L2NnL1JlbmRlclBhdGhDZy5jcHAKaW5kZXggZWI4ZTQ4Mi4uMGMxMzMxMyAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvY2cvUmVuZGVyUGF0aENnLmNwcAorKysgYi9XZWJDb3JlL3N2
Zy9ncmFwaGljcy9jZy9SZW5kZXJQYXRoQ2cuY3BwCkBAIC0zMCwxMiArMzAsMTMgQEAKICNpZiBF
TkFCTEUoU1ZHKQogI2luY2x1ZGUgIlJlbmRlclBhdGguaCIKIAotI2luY2x1ZGUgPEFwcGxpY2F0
aW9uU2VydmljZXMvQXBwbGljYXRpb25TZXJ2aWNlcy5oPgogI2luY2x1ZGUgIkNnU3VwcG9ydC5o
IgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIlNWR1BhaW50U2VydmVy
LmgiCiAjaW5jbHVkZSAiU1ZHUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJTVkdTdHlsZWRFbGVt
ZW50LmgiCisKKyNpbmNsdWRlIDxBcHBsaWNhdGlvblNlcnZpY2VzL0FwcGxpY2F0aW9uU2Vydmlj
ZXMuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC01NywxOSArNTgsMTUgQEAgYm9vbCBSZW5kZXJQYXRoOjpzdHJva2VDb250YWlucyhjb25z
dCBGbG9hdFBvaW50JiBwb2ludCwgYm9vbCByZXF1aXJlc1N0cm9rZSkgY28KICAgICBpZiAocmVx
dWlyZXNTdHJva2UgJiYgIVNWR1BhaW50U2VydmVyOjpzdHJva2VQYWludFNlcnZlcihzdHlsZSgp
LCB0aGlzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgQ0dNdXRhYmxlUGF0aFJlZiBj
Z1BhdGggPSBwYXRoKCkucGxhdGZvcm1QYXRoKCk7Ci0gICAgCi0gICAgQ0dDb250ZXh0UmVmIGNv
bnRleHQgPSBzY3JhdGNoQ29udGV4dCgpOwotICAgIENHQ29udGV4dFNhdmVHU3RhdGUoY29udGV4
dCk7Ci0gICAgCi0gICAgQ0dDb250ZXh0QmVnaW5QYXRoKGNvbnRleHQpOwotICAgIENHQ29udGV4
dEFkZFBhdGgoY29udGV4dCwgY2dQYXRoKTsKLQotICAgIEdyYXBoaWNzQ29udGV4dCBnYyhjb250
ZXh0KTsKLSAgICBhcHBseVN0cm9rZVN0eWxlVG9Db250ZXh0KCZnYywgc3R5bGUoKSwgdGhpcyk7
CisgICAgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0ID0gc2NyYXRjaENvbnRleHQoKTsKKyAgICBj
b250ZXh0LT5zYXZlKCk7CisgICAgY29udGV4dC0+YmVnaW5QYXRoKCk7CisgICAgY29udGV4dC0+
YWRkUGF0aChwYXRoKCkpOworICAgIGFwcGx5U3Ryb2tlU3R5bGVUb0NvbnRleHQoY29udGV4dCwg
c3R5bGUoKSwgdGhpcyk7CiAKLSAgICBib29sIGhpdFN1Y2Nlc3MgPSBDR0NvbnRleHRQYXRoQ29u
dGFpbnNQb2ludChjb250ZXh0LCBwb2ludCwga0NHUGF0aFN0cm9rZSk7Ci0gICAgQ0dDb250ZXh0
UmVzdG9yZUdTdGF0ZShjb250ZXh0KTsKKyAgICAvLyBUT0RPKGVzZWlkZWwpOiBUaGlzIHNob3Vs
ZCBiZSBtYWRlIGNyb3NzLXBsYXRmb3JtCisgICAgYm9vbCBoaXRTdWNjZXNzID0gQ0dDb250ZXh0
UGF0aENvbnRhaW5zUG9pbnQoY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIHBvaW50LCBrQ0dQ
YXRoU3Ryb2tlKTsKKyAgICBjb250ZXh0LT5yZXN0b3JlKCk7CiAgICAgCiAgICAgcmV0dXJuIGhp
dFN1Y2Nlc3M7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9jZy9TVkdQYWlu
dFNlcnZlckdyYWRpZW50Q2cuY3BwIGIvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvY2cvU1ZHUGFpbnRT
ZXJ2ZXJHcmFkaWVudENnLmNwcAppbmRleCBmZDYyZDQ2Li43YjE5YTk3IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3N2Zy9ncmFwaGljcy9jZy9TVkdQYWludFNlcnZlckdyYWRpZW50Q2cuY3BwCisrKyBi
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2NnL1NWR1BhaW50U2VydmVyR3JhZGllbnRDZy5jcHAKQEAg
LTU5LDExICs1OSwxMCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgaGFuZGxlQm91bmRpbmdCb3hNb2Rl
QW5kR3JhZGllbnRUcmFuc2Zvcm1hdGlvbigKIHsKICAgICBpZiAoYm91bmRpbmdCb3hNb2RlKSB7
CiAgICAgICAgIC8vIENob29zZSBkZWZhdWx0IGdyYWRpZW50IGJvdW5kaW5nIGJveAotICAgICAg
ICBDR1JlY3QgZ3JhZGllbnRCQm94ID0gQ0dSZWN0TWFrZSgwLjBmLCAwLjBmLCAxLjBmLCAxLjBm
KTsKKyAgICAgICAgRmxvYXRSZWN0IGdyYWRpZW50QkJveCgwLjBmLCAwLjBmLCAxLjBmLCAxLjBm
KTsKIAogICAgICAgICAvLyBHZW5lcmF0ZSBhIHRyYW5zZm9ybSB0byBtYXAgYmV0d2VlbiBib3Ro
IGJvdW5kaW5nIGJveGVzCi0gICAgICAgIENHQWZmaW5lVHJhbnNmb3JtIGdyYWRpZW50SW50b09i
amVjdEJCb3ggPSBDR0FmZmluZVRyYW5zZm9ybU1ha2VNYXBCZXR3ZWVuUmVjdHMoZ3JhZGllbnRC
Qm94LCBDR1JlY3QodGFyZ2V0UmVjdCkpOwotICAgICAgICBjb250ZXh0LT5jb25jYXRDVE0oZ3Jh
ZGllbnRJbnRvT2JqZWN0QkJveCk7CisgICAgICAgIGNvbnRleHQtPmNvbmNhdENUTShtYWtlTWFw
QmV0d2VlblJlY3RzKGdyYWRpZW50QkJveCwgdGFyZ2V0UmVjdCkpOwogICAgIH0KIAogICAgIC8v
IEFwcGx5IHRoZSBncmFkaWVudCdzIG93biB0cmFuc2Zvcm0KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL2NnL1NWR1Jlc291cmNlQ2xpcHBlckNnLmNwcCBiL1dlYkNvcmUvc3ZnL2dy
YXBoaWNzL2NnL1NWR1Jlc291cmNlQ2xpcHBlckNnLmNwcAppbmRleCAwNzFhZmUyLi4zMDI2MzRj
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9jZy9TVkdSZXNvdXJjZUNsaXBwZXJD
Zy5jcHAKKysrIGIvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvY2cvU1ZHUmVzb3VyY2VDbGlwcGVyQ2cu
Y3BwCkBAIC0zMCw1MiArMzAsNDcgQEAKICNpZiBFTkFCTEUoU1ZHKQogI2luY2x1ZGUgIlNWR1Jl
c291cmNlQ2xpcHBlci5oIgogCisjaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCiAjaW5jbHVk
ZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiQ2dTdXBwb3J0LmgiCiAKKyNpbmNsdWRl
IDxBcHBsaWNhdGlvblNlcnZpY2VzL0FwcGxpY2F0aW9uU2VydmljZXMuaD4KKwogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiB2b2lkIFNWR1Jlc291cmNlQ2xpcHBlcjo6YXBwbHlDbGlwKEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveCkgY29uc3QKIHsK
LSAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7
Ci0gICAgaWYgKG1fY2xpcERhdGEuY2xpcERhdGEoKS5zaXplKCkgPCAxKQorICAgIGlmIChtX2Ns
aXBEYXRhLmNsaXBEYXRhKCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBib29s
IGhldGVyb2dlbm91c0NsaXBSdWxlcyA9IGZhbHNlOwogICAgIFdpbmRSdWxlIGNsaXBSdWxlID0g
bV9jbGlwRGF0YS5jbGlwRGF0YSgpWzBdLndpbmRSdWxlOwogCi0gICAgY29udGV4dC0+YmVnaW5Q
YXRoKCk7Ci0KLSAgICBDR0FmZmluZVRyYW5zZm9ybSBiYm94VHJhbnNmb3JtID0gQ0dBZmZpbmVU
cmFuc2Zvcm1NYWtlTWFwQmV0d2VlblJlY3RzKENHUmVjdE1ha2UoMCwwLDEsMSksIENHUmVjdChi
b3VuZGluZ0JveCkpOworICAgIEFmZmluZVRyYW5zZm9ybSBiYm94VHJhbnNmb3JtID0gbWFrZU1h
cEJldHdlZW5SZWN0cyhGbG9hdFJlY3QoMCwgMCwgMSwgMSksIGJvdW5kaW5nQm94KTsKIAogICAg
IGZvciAodW5zaWduZWQgeCA9IDA7IHggPCBtX2NsaXBEYXRhLmNsaXBEYXRhKCkuc2l6ZSgpOyB4
KyspIHsKLSAgICAgICAgQ2xpcERhdGEgZGF0YSA9IG1fY2xpcERhdGEuY2xpcERhdGEoKVt4XTsK
LSAgICAgICAgaWYgKGRhdGEud2luZFJ1bGUgIT0gY2xpcFJ1bGUpCisgICAgICAgIENsaXBEYXRh
IGNsaXBEYXRhID0gbV9jbGlwRGF0YS5jbGlwRGF0YSgpW3hdOworICAgICAgICBpZiAoY2xpcERh
dGEud2luZFJ1bGUgIT0gY2xpcFJ1bGUpCiAgICAgICAgICAgICBoZXRlcm9nZW5vdXNDbGlwUnVs
ZXMgPSB0cnVlOwotICAgICAgICAKLSAgICAgICAgQ0dQYXRoUmVmIGNsaXBQYXRoID0gZGF0YS5w
YXRoLnBsYXRmb3JtUGF0aCgpOwogCi0gICAgICAgIGlmIChkYXRhLmJib3hVbml0cykgewotICAg
ICAgICAgICAgQ0dNdXRhYmxlUGF0aFJlZiB0cmFuc2Zvcm1lZFBhdGggPSBDR1BhdGhDcmVhdGVN
dXRhYmxlKCk7Ci0gICAgICAgICAgICBDR1BhdGhBZGRQYXRoKHRyYW5zZm9ybWVkUGF0aCwgJmJi
b3hUcmFuc2Zvcm0sIGNsaXBQYXRoKTsKLSAgICAgICAgICAgIENHQ29udGV4dEFkZFBhdGgoY2dD
b250ZXh0LCB0cmFuc2Zvcm1lZFBhdGgpOwotICAgICAgICAgICAgQ0dQYXRoUmVsZWFzZSh0cmFu
c2Zvcm1lZFBhdGgpOworICAgICAgICBpZiAoY2xpcERhdGEuYmJveFVuaXRzKSB7CisgICAgICAg
ICAgICBQYXRoIHRyYW5zZm9ybWVkUGF0aCA9IGNsaXBEYXRhLnBhdGg7CisgICAgICAgICAgICB0
cmFuc2Zvcm1lZFBhdGgudHJhbnNmb3JtKGJib3hUcmFuc2Zvcm0pOworICAgICAgICAgICAgY29u
dGV4dC0+YWRkUGF0aCh0cmFuc2Zvcm1lZFBhdGgpOwogICAgICAgICB9IGVsc2UKLSAgICAgICAg
ICAgIENHQ29udGV4dEFkZFBhdGgoY2dDb250ZXh0LCBjbGlwUGF0aCk7CisgICAgICAgICAgICBj
b250ZXh0LT5hZGRQYXRoKGNsaXBEYXRhLnBhdGgpOwogICAgIH0KIAotICAgIGlmIChtX2NsaXBE
YXRhLmNsaXBEYXRhKCkuc2l6ZSgpKSB7Ci0gICAgICAgIC8vIEZJWE1FIQotICAgICAgICAvLyBX
ZSBkb24ndCBjdXJyZW50bHkgYWxsb3cgZm9yIGhldGVyb2dlbm91cyBjbGlwIHJ1bGVzLgotICAg
ICAgICAvLyB3ZSB3b3VsZCBoYXZlIHRvIGRldGVjdCBzdWNoLCBkcmF3IHRvIGEgbWFzaywgYW5k
IHRoZW4gY2xpcAotICAgICAgICAvLyB0byB0aGF0IG1hc2sgICAgICAgICAgICAgICAgCi0gICAg
ICAgIGlmICghQ0dDb250ZXh0SXNQYXRoRW1wdHkoY2dDb250ZXh0KSkgewotICAgICAgICAgICAg
aWYgKGNsaXBSdWxlID09IFJVTEVfRVZFTk9ERCkKLSAgICAgICAgICAgICAgICBDR0NvbnRleHRF
T0NsaXAoY2dDb250ZXh0KTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBDR0Nv
bnRleHRDbGlwKGNnQ29udGV4dCk7Ci0gICAgICAgIH0KLSAgICB9CisgICAgQ0dDb250ZXh0UmVm
IGNnQ29udGV4dCA9IGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOworICAgIGlmIChDR0NvbnRl
eHRJc1BhdGhFbXB0eShjZ0NvbnRleHQpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBUT0RP
KGVzZWlkZWwpOiBXZSBkb24ndCBoYW5kbGUgaGV0ZXJvZ2Vub3VzIGNsaXAgcnVsZXMuIFdlIHdv
dWxkIGhhdmUKKyAgICAvLyB0byBkcmF3IHRoZSBmaWxsZWQgcGF0aCB0byBhIG1hc2ssIGFuZCB0
aGVuIGNsaXAgdG8gdGhhdCBtYXNrLgorICAgIGlmIChjbGlwUnVsZSA9PSBSVUxFX0VWRU5PREQp
CisgICAgICAgIENHQ29udGV4dEVPQ2xpcChjZ0NvbnRleHQpOworICAgIGVsc2UKKyAgICAgICAg
Q0dDb250ZXh0Q2xpcChjZ0NvbnRleHQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23017</attachid>
            <date>2008-08-27 01:25:59 -0700</date>
            <delta_ts>2008-08-27 01:25:59 -0700</delta_ts>
            <desc>Fix flipped fill and stroke for canvas</desc>
            <filename>Fix-flipped-fill-and-stroke-for-canvas.patch</filename>
            <type>text/plain</type>
            <size>1192</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">YTc2ZDM0MWY3N2JlNGQ2MGIyMmIwOTIzM2E5YWFhNzJkYmJkODNkOQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9odG1sL0NhbnZhc1N0eWxlLmNwcCBiL1dlYkNvcmUvaHRtbC9DYW52YXNTdHlsZS5jcHAK
aW5kZXggMTA4YzQ5My4uZmEwOGVkMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0NhbnZhc1N0
eWxlLmNwcAorKysgYi9XZWJDb3JlL2h0bWwvQ2FudmFzU3R5bGUuY3BwCkBAIC0xNDEsMTAgKzE0
MSwxMCBAQCB2b2lkIENhbnZhc1N0eWxlOjphcHBseVN0cm9rZUNvbG9yKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
R3JhZGllbnQ6Ci0gICAgICAgICAgICBjb250ZXh0LT5zZXRGaWxsR3JhZGllbnQoY2FudmFzR3Jh
ZGllbnQoKS0+Z3JhZGllbnQoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VHcmFk
aWVudChjYW52YXNHcmFkaWVudCgpLT5ncmFkaWVudCgpKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIEltYWdlUGF0dGVybjoKLSAgICAgICAgICAgIGNvbnRleHQtPnNldEZpbGxQ
YXR0ZXJuKGNhbnZhc1BhdHRlcm4oKS0+cGF0dGVybigpKTsKKyAgICAgICAgICAgIGNvbnRleHQt
PnNldFN0cm9rZVBhdHRlcm4oY2FudmFzUGF0dGVybigpLT5wYXR0ZXJuKCkpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgfQogfQpAQCAtMTkwLDEwICsxOTAsMTAgQEAgdm9pZCBDYW52YXNTdHls
ZTo6YXBwbHlGaWxsQ29sb3IoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBHcmFkaWVudDoKLSAgICAgICAgICAgIGNv
bnRleHQtPnNldFN0cm9rZUdyYWRpZW50KGNhbnZhc0dyYWRpZW50KCktPmdyYWRpZW50KCkpOwor
ICAgICAgICAgICAgY29udGV4dC0+c2V0RmlsbEdyYWRpZW50KGNhbnZhc0dyYWRpZW50KCktPmdy
YWRpZW50KCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgSW1hZ2VQYXR0ZXJu
OgotICAgICAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlUGF0dGVybihjYW52YXNQYXR0ZXJuKCkt
PnBhdHRlcm4oKSk7CisgICAgICAgICAgICBjb250ZXh0LT5zZXRGaWxsUGF0dGVybihjYW52YXNQ
YXR0ZXJuKCktPnBhdHRlcm4oKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICB9CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23018</attachid>
            <date>2008-08-27 01:26:01 -0700</date>
            <delta_ts>2008-08-27 01:26:01 -0700</delta_ts>
            <desc>Fix SVG radial gradients to pass full-pservers-grad-13-b.html</desc>
            <filename>Fix-SVG-radial-gradients-to-pass-full-pservers-grad-13-b.html.patch</filename>
            <type>text/plain</type>
            <size>1717</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">MDg0ZmU5ZDYzZjBmOWM2MWUzYmQ3N2ExMmRlNmE2M2MzNzY2Y2EyMQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9zdmcvUmFkaWFsR3JhZGllbnRBdHRyaWJ1dGVzLmggYi9XZWJDb3JlL3N2Zy9SYWRpYWxH
cmFkaWVudEF0dHJpYnV0ZXMuaAppbmRleCBkMmIyMDM5Li4wOWI2YzU4IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3N2Zy9SYWRpYWxHcmFkaWVudEF0dHJpYnV0ZXMuaAorKysgYi9XZWJDb3JlL3N2Zy9S
YWRpYWxHcmFkaWVudEF0dHJpYnV0ZXMuaApAQCAtNjQsOCArNjQsMjMgQEAgbmFtZXNwYWNlIFdl
YkNvcmUKIAogICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8R3JhZGllbnQ+IGNyZWF0ZUdyYWRp
ZW50KCkKICAgICAgICAgeworICAgICAgICAgICAgZG91YmxlIGFkanVzdGVkRm9jdXNYID0gbV9m
eDsKKyAgICAgICAgICAgIGRvdWJsZSBhZGp1c3RlZEZvY3VzWSA9IG1fZnk7CisKKyAgICAgICAg
ICAgIGRvdWJsZSBmZHggPSBtX2Z4IC0gbV9jeDsKKyAgICAgICAgICAgIGRvdWJsZSBmZHkgPSBt
X2Z5IC0gbV9jeTsKKworICAgICAgICAgICAgLy8gU3BlYzogSWYgKGZ4LCBmeSkgbGllcyBvdXRz
aWRlIHRoZSBjaXJjbGUgZGVmaW5lZCBieSAoY3gsIGN5KSBhbmQKKyAgICAgICAgICAgIC8vIHIs
IHNldCAoZngsIGZ5KSB0byB0aGUgcG9pbnQgb2YgaW50ZXJzZWN0aW9uIG9mIHRoZSBsaW5lIHRo
cm91Z2gKKyAgICAgICAgICAgIC8vIChmeCwgZnkpIGFuZCB0aGUgY2lyY2xlLgorICAgICAgICAg
ICAgaWYgKHNxcnQoZmR4ICogZmR4ICsgZmR5ICogZmR5KSA+IG1fcikgeworICAgICAgICAgICAg
ICAgIGRvdWJsZSBhbmdsZSA9IGF0YW4yKG1fZnkgKiAxMDAuMCwgbV9meCAqIDEwMC4wKTsKKyAg
ICAgICAgICAgICAgICBhZGp1c3RlZEZvY3VzWCA9IGNvcyhhbmdsZSkgKiBtX3I7CisgICAgICAg
ICAgICAgICAgYWRqdXN0ZWRGb2N1c1kgPSBzaW4oYW5nbGUpICogbV9yOworICAgICAgICAgICAg
fQorCiAgICAgICAgICAgICBSZWZQdHI8R3JhZGllbnQ+IGdyYWRpZW50ID0gR3JhZGllbnQ6OmNy
ZWF0ZSgKLSAgICAgICAgICAgICAgICBGbG9hdFBvaW50OjpuYXJyb3dQcmVjaXNpb24obV9meCwg
bV9meSksCisgICAgICAgICAgICAgICAgRmxvYXRQb2ludDo6bmFycm93UHJlY2lzaW9uKGFkanVz
dGVkRm9jdXNYLCBhZGp1c3RlZEZvY3VzWSksCiAgICAgICAgICAgICAgICAgMC5mLCAvLyBTVkcg
ZG9lcyBub3Qgc3VwcG9ydCBhICJmb2N1cyByYWRpdXMiCiAgICAgICAgICAgICAgICAgRmxvYXRQ
b2ludDo6bmFycm93UHJlY2lzaW9uKG1fY3gsIG1fY3kpLAogICAgICAgICAgICAgICAgIG5hcnJv
d1ByZWNpc2lvblRvRmxvYXQobV9yKSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3N2Zy9TVkdSYWRp
YWxHcmFkaWVudEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVt
ZW50LmNwcAppbmRleCA3OGQ5ZTRiLi4zM2ZlOTNhIDEwMDY0NAotLS0gYS9XZWJDb3JlL3N2Zy9T
VkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdy
YWRpZW50RWxlbWVudC5jcHAKQEAgLTE2OSw2ICsxNjksNyBAQCBSYWRpYWxHcmFkaWVudEF0dHJp
YnV0ZXMgU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50Ojpjb2xsZWN0R3JhZGllbnRQcm9wZXJ0aWVz
KCkgYwogCiAgICAgcmV0dXJuIGF0dHJpYnV0ZXM7CiB9CisKIH0KIAogI2VuZGlmIC8vIEVOQUJM
RShTVkcpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23019</attachid>
            <date>2008-08-27 01:26:04 -0700</date>
            <delta_ts>2008-08-27 01:26:04 -0700</delta_ts>
            <desc>Fix SVG gradients to pass full-pservers-grad-16-b.html</desc>
            <filename>Fix-SVG-gradients-to-pass-full-pservers-grad-16-b.html.patch</filename>
            <type>text/plain</type>
            <size>973</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">OGQ4ZmIyNzJlZDQzYWU5NTFmM2FkMTY1NDQ1ZTExMjYxZDU1NzIzZApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9zdmcvR3JhZGllbnRBdHRyaWJ1dGVzLmggYi9XZWJDb3JlL3N2Zy9HcmFkaWVudEF0dHJp
YnV0ZXMuaAppbmRleCAwNDI3ZTRhLi4yNWJjZjM0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3N2Zy9H
cmFkaWVudEF0dHJpYnV0ZXMuaAorKysgYi9XZWJDb3JlL3N2Zy9HcmFkaWVudEF0dHJpYnV0ZXMu
aApAQCAtNTgsOCArNTgsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUKIAogICAgICAgICB2b2lkIGFk
ZFN0b3BzVG9HcmFkaWVudChHcmFkaWVudCogZ3JhZGllbnQpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgeCA9IDA7IHggPCBtX3N0b3BzLnNpemUoKTsgeCsrKQotICAgICAg
ICAgICAgICAgIGdyYWRpZW50LT5hZGRDb2xvclN0b3AobV9zdG9wc1t4XS5maXJzdCwgbV9zdG9w
c1t4XS5zZWNvbmQpOworICAgICAgICAgICAgLy8gU3BlYzogaWYgYSBzdG9wIG9mZnNldCBpcyBz
bWFsbGVyIHRoYW4gYW55IGJlZm9yZSBpdCwgaXQgaXMKKyAgICAgICAgICAgIC8vIHNldCB0byB0
aGUgbGFyZ2VzdCBvZiB0aGUgcHJldmlvdXMgb2Zmc2V0cyAocHNlcnZlcnMtZ3JhZC0xNi1iKQor
ICAgICAgICAgICAgZmxvYXQgcHJldmlvdXNPZmZzZXQgPSAwLjBmOworICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc3RvcHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAg
ICAgICBmbG9hdCBvZmZzZXQgPSBzdGQ6Om1pbihzdGQ6Om1heChwcmV2aW91c09mZnNldCwgbV9z
dG9wc1tpXS5maXJzdCksIDEuMGYpOworICAgICAgICAgICAgICAgIHByZXZpb3VzT2Zmc2V0ID0g
b2Zmc2V0OworICAgICAgICAgICAgICAgIGdyYWRpZW50LT5hZGRDb2xvclN0b3Aob2Zmc2V0LCBt
X3N0b3BzW2ldLnNlY29uZCk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgIHByaXZh
dGU6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23020</attachid>
            <date>2008-08-27 03:43:16 -0700</date>
            <delta_ts>2008-08-27 03:43:16 -0700</delta_ts>
            <desc>Update a few copyright headers</desc>
            <filename>Update-a-few-copyright-headers.patch</filename>
            <type>text/plain</type>
            <size>7288</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">NzkzMzFlOGNhZGNlZTAxNjQ5MGVhY2U5N2QyYmRjYmZkYTEzYzY5ZApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9odG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgYi9XZWJDb3JlL2h0bWwvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAppbmRleCAxMWFjYjNiLi4wMWMwOGQ3IDEwMDY0NAot
LS0gYS9XZWJDb3JlL2h0bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAorKysgYi9XZWJD
b3JlL2h0bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApAQCAtMiw2ICsyLDcgQEAKICAq
IENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgVHJvbGx0ZWNoIEFTQQog
ICogQ29weXJpZ2h0IChDKSAyMDA3IEFscCBUb2tlciA8YWxwQGF0b2tlci5jb20+CisgKiBDb3B5
cmlnaHQgKEMpIDIwMDggRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0NhbnZhc1N0eWxl
LmNwcCBiL1dlYkNvcmUvaHRtbC9DYW52YXNTdHlsZS5jcHAKaW5kZXggZmEwOGVkMC4uNTlmNzA2
MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0NhbnZhc1N0eWxlLmNwcAorKysgYi9XZWJDb3Jl
L2h0bWwvQ2FudmFzU3R5bGUuY3BwCkBAIC0yLDYgKzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAy
MDA2LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAo
QykgMjAwNyBUcm9sbHRlY2ggQVNBCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQWxwIFRva2VyIDxh
bHBAYXRva2VyLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBFcmljIFNlaWRlbCA8ZXJpY0B3
ZWJraXQub3JnPgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0U2l6ZS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9GbG9hdFNpemUuaAppbmRleCA1MjllMDUxLi45NzA2NTc0IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0U2l6ZS5oCisrKyBiL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRmxvYXRTaXplLmgKQEAgLTEsNiArMSw3IEBACiAvKgogICogQ29weXJpZ2h0
IChDKSAyMDAzLCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICogQ29weXJpZ2h0IChDKSAyMDA1IE5va2lhLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAwOCBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IGU1NmM1NGIuLjMzM2I5ZmEgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3Bw
CisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3Bw
CkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwg
MjAwNiwgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDggRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdmcvR3JhZGllbnRBdHRyaWJ1dGVz
LmggYi9XZWJDb3JlL3N2Zy9HcmFkaWVudEF0dHJpYnV0ZXMuaAppbmRleCAyNWJjZjM0Li44NTQ5
NTQ1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3N2Zy9HcmFkaWVudEF0dHJpYnV0ZXMuaAorKysgYi9X
ZWJDb3JlL3N2Zy9HcmFkaWVudEF0dHJpYnV0ZXMuaApAQCAtMSw3ICsxLDYgQEAKIC8qCiAgICAg
Q29weXJpZ2h0IChDKSAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3Jn
PgotCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CisgICAgQ29weXJp
Z2h0IChDKSAyMDA4IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+CiAKICAgICBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAg
ICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3ZnL0xpbmVhckdyYWRpZW50QXR0cmlidXRlcy5o
IGIvV2ViQ29yZS9zdmcvTGluZWFyR3JhZGllbnRBdHRyaWJ1dGVzLmgKaW5kZXggNDUwNTg1MC4u
OWJkYTc0NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdmcvTGluZWFyR3JhZGllbnRBdHRyaWJ1dGVz
LmgKKysrIGIvV2ViQ29yZS9zdmcvTGluZWFyR3JhZGllbnRBdHRyaWJ1dGVzLmgKQEAgLTEsNSAr
MSw2IEBACiAvKgogICAgIENvcHlyaWdodCAoQykgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHpp
bW1lcm1hbm5Aa2RlLm9yZz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDggRXJpYyBTZWlkZWwgPGVy
aWNAd2Via2l0Lm9yZz4KIAogICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9z
dmcvUmFkaWFsR3JhZGllbnRBdHRyaWJ1dGVzLmggYi9XZWJDb3JlL3N2Zy9SYWRpYWxHcmFkaWVu
dEF0dHJpYnV0ZXMuaAppbmRleCAwOWI2YzU4Li4xN2QzMjk0IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3N2Zy9SYWRpYWxHcmFkaWVudEF0dHJpYnV0ZXMuaAorKysgYi9XZWJDb3JlL3N2Zy9SYWRpYWxH
cmFkaWVudEF0dHJpYnV0ZXMuaApAQCAtMSw3ICsxLDYgQEAKIC8qCiAgICAgQ29weXJpZ2h0IChD
KSAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgotCi0gICAgVGhp
cyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CisgICAgQ29weXJpZ2h0IChDKSAyMDA4
IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+CiAKICAgICBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgICAgbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHAgYi9XZWJDb3Jl
L3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwCmluZGV4IDZiMGIxMzcuLmMxNmNiNWIg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHAKKysr
IGIvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNwcApAQCAtMSw4ICsxLDcg
QEAKIC8qCiAgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4IE5pa29sYXMg
WmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICAgICAgICAgICAgICAgICAgMjAwNCwg
MjAwNSwgMjAwNiwgMjAwNyBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgotCi0gICAgVGhpcyBmaWxl
IGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CisgICAgQ29weXJpZ2h0IChDKSAyMDA4IEVyaWMg
U2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+CiAKICAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgICAgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHAgYi9XZWJDb3JlL3N2Zy9T
VkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwCmluZGV4IDMzZmU5M2EuLjhhNWI4NjYgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHAKKysrIGIvV2Vi
Q29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcApAQCAtMSw4ICsxLDcgQEAKIC8q
CiAgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4IE5pa29sYXMgWmltbWVy
bWFubiA8emltbWVybWFubkBrZGUub3JnPgogICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwg
MjAwNiwgMjAwNyBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgotCi0gICAgVGhpcyBmaWxlIGlzIHBh
cnQgb2YgdGhlIEtERSBwcm9qZWN0CisgICAgQ29weXJpZ2h0IChDKSAyMDA4IEVyaWMgU2VpZGVs
IDxlcmljQHdlYmtpdC5vcmc+CiAKICAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL2NnL0NnU3VwcG9ydC5jcHAgYi9XZWJDb3JlL3N2Zy9ncmFwaGljcy9j
Zy9DZ1N1cHBvcnQuY3BwCmluZGV4IDU2ZTUxOTkuLmUxNGNkOTEgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL2NnL0NnU3VwcG9ydC5jcHAKKysrIGIvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvY2cvQ2dTdXBwb3J0LmNwcApAQCAtMiw2ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAw
NSBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICAgICAgICAg
ICAgICAgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogICogICAgICAgICAgICAgICAyMDA4
IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgorICogQ29weXJpZ2h0IChD
KSAyMDA4IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+CiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2NnL0NnU3VwcG9y
dC5oIGIvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvY2cvQ2dTdXBwb3J0LmgKaW5kZXggNjkxMGI5YS4u
ZWExMGI3OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvY2cvQ2dTdXBwb3J0LmgK
KysrIGIvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvY2cvQ2dTdXBwb3J0LmgKQEAgLTEsNSArMSw2IEBA
CiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA1IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4IEVyaWMgU2VpZGVsIDxlcmljQHdl
YmtpdC5vcmc+CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvc3ZnL2dyYXBoaWNzL2NnL1NWR1BhaW50U2VydmVyQ2cuY3BwIGIvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvY2cvU1ZHUGFpbnRTZXJ2ZXJDZy5jcHAKaW5kZXggODEwYjQ2My4uZjQyNTRmZCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvY2cvU1ZHUGFpbnRTZXJ2ZXJDZy5jcHAK
KysrIGIvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvY2cvU1ZHUGFpbnRTZXJ2ZXJDZy5jcHAKQEAgLTEs
NyArMSw2IEBACiAvKgogICAgIENvcHlyaWdodCAoQykgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4g
PHdpbGRmb3hAa2RlLm9yZz4KLQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJv
amVjdAorICAgIENvcHlyaWdodCAoQykgMjAwOCBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3Jn
PgogCiAgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgogICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCmRpZmYgLS1naXQgYS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9j
Zy9TVkdQYWludFNlcnZlckdyYWRpZW50Q2cuY3BwIGIvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvY2cv
U1ZHUGFpbnRTZXJ2ZXJHcmFkaWVudENnLmNwcAppbmRleCA3YjE5YTk3Li4zMzYwMmYzIDEwMDY0
NAotLS0gYS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9jZy9TVkdQYWludFNlcnZlckdyYWRpZW50Q2cu
Y3BwCisrKyBiL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2NnL1NWR1BhaW50U2VydmVyR3JhZGllbnRD
Zy5jcHAKQEAgLTEsNyArMSw2IEBACiAvKgogICAgIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywg
MjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KLQotICAgIFRoaXMg
ZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdAorICAgIENvcHlyaWdodCAoQykgMjAwOCBF
cmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgogCiAgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICAgIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23021</attachid>
            <date>2008-08-27 03:43:18 -0700</date>
            <delta_ts>2008-08-27 03:43:18 -0700</delta_ts>
            <desc>Fix one more copy/paste error causing canvas tests to fail</desc>
            <filename>Fix-one-more-copy-paste-error-causing-canvas-tests-to-fail.patch</filename>
            <type>text/plain</type>
            <size>3330</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">YTE5NjdmNzczN2M0ZGVmMTgwMTkzOTNhYWU0ZTg5ZDkwZGZhNzZiOApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAgYi9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAppbmRleCAzMzNiOWZh
Li5jOTcyMzI5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBo
aWNzQ29udGV4dENHLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBo
aWNzQ29udGV4dENHLmNwcApAQCAtMTA5LDYgKzEwOSw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpyZXN0b3JlUGxhdGZvcm1TdGF0ZSgpCiAvLyBEcmF3cyBhIGZpbGxlZCByZWN0YW5nbGUgd2l0
aCBhIHN0cm9rZWQgYm9yZGVyLgogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdSZWN0KGNvbnN0
IEludFJlY3QmIHJlY3QpCiB7CisgICAgLy8gVE9ETyhlc2VpZGVsKTogdGhpcyBmdW5jdGlvbiBk
b2VzIG5vdCBoYW5kbGUgcGF0dGVybnMgYW5kIGdyYWRpZW50cworICAgIC8vIGxpa2UgZHJhd1Bh
dGggZG9lcywgaXQgcHJvYmFibHkgc2hvdWxkLgogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkp
CiAgICAgICAgIHJldHVybjsKIApAQCAtMzgxLDExICszODMsMTEgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmRyYXdDb252ZXhQb2x5Z29uKHNpemVfdCBucG9pbnRzLCBjb25zdCBGbG9hdFBvaW50
KiBwb2ludHMKICAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKGNvbnRleHQpOwogfQogCi1zdGF0
aWMgaW5saW5lIGJvb2wgY2FsY3VsYXRlRHJhd2luZ01vZGUoR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBDR1BhdGhEcmF3aW5nTW9kZSYgbW9kZSkKK3N0YXRpYyBpbmxpbmUgYm9vbCBjYWxjdWxh
dGVEcmF3aW5nTW9kZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIENHUGF0aERy
YXdpbmdNb2RlJiBtb2RlKQogewotICAgIGJvb2wgc2hvdWxkRmlsbCA9IGNvbnRleHQtPmZpbGxD
b2xvcigpLmFscGhhKCk7Ci0gICAgYm9vbCBzaG91bGRTdHJva2UgPSBjb250ZXh0LT5zdHJva2VT
dHlsZSgpICE9IE5vU3Ryb2tlOwotICAgIGJvb2wgdXNlRU9GaWxsID0gY29udGV4dC0+ZmlsbFJ1
bGUoKSA9PSBSVUxFX0VWRU5PREQ7CisgICAgYm9vbCBzaG91bGRGaWxsID0gc3RhdGUuZmlsbENv
bG9yU3BhY2UgPT0gUGF0dGVybkNvbG9yU3BhY2UgfHwgc3RhdGUuZmlsbENvbG9yLmFscGhhKCk7
CisgICAgYm9vbCBzaG91bGRTdHJva2UgPSBzdGF0ZS5zdHJva2VDb2xvclNwYWNlID09IFBhdHRl
cm5Db2xvclNwYWNlIHx8IChzdGF0ZS5zdHJva2VTdHlsZSAhPSBOb1N0cm9rZSAmJiBzdGF0ZS5z
dHJva2VDb2xvci5hbHBoYSgpKTsKKyAgICBib29sIHVzZUVPRmlsbCA9IHN0YXRlLmZpbGxSdWxl
ID09IFJVTEVfRVZFTk9ERDsKIAogICAgIGlmIChzaG91bGRGaWxsKSB7CiAgICAgICAgIGlmIChz
aG91bGRTdHJva2UpIHsKQEAgLTQxMSwyMiArNDEzLDE4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpkcmF3UGF0aCgpCiAgICAgICAgIHJldHVybjsKIAogICAgIENHQ29udGV4dFJlZiBjb250ZXh0
ID0gcGxhdGZvcm1Db250ZXh0KCk7Ci0gICAgc3dpdGNoIChtX2NvbW1vbi0+c3RhdGUuZmlsbENv
bG9yU3BhY2UpIHsKLSAgICBjYXNlIFNvbGlkQ29sb3JTcGFjZToKLSAgICAgICAgaWYgKCFmaWxs
Q29sb3IoKS5hbHBoYSgpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAvLyBmYWxsIHRo
cm91Z2gKLSAgICBjYXNlIFBhdHRlcm5Db2xvclNwYWNlOgotICAgICAgICBDR1BhdGhEcmF3aW5n
TW9kZSBkcmF3aW5nTW9kZTsKLSAgICAgICAgaWYgKGNhbGN1bGF0ZURyYXdpbmdNb2RlKHRoaXMs
IGRyYXdpbmdNb2RlKSkKLSAgICAgICAgICAgIENHQ29udGV4dERyYXdQYXRoKGNvbnRleHQsIGRy
YXdpbmdNb2RlKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBHcmFkaWVudENvbG9yU3BhY2U6
Ci0gICAgICAgIC8vIFdlIGRvbid0IGhhdmUgYW55IG9wdGltaXplZCB3YXkgdG8gZmlsbCAmIHN0
cm9rZSBncmFkaWVudHMKKyAgICBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUgPSBt
X2NvbW1vbi0+c3RhdGU7CisKKyAgICBpZiAoc3RhdGUuZmlsbENvbG9yU3BhY2UgPT0gR3JhZGll
bnRDb2xvclNwYWNlIHx8IHN0YXRlLnN0cm9rZUNvbG9yU3BhY2UgPT0gR3JhZGllbnRDb2xvclNw
YWNlKSB7CisgICAgICAgIC8vIFdlIGRvbid0IGhhdmUgYW55IG9wdGltaXplZCB3YXkgdG8gZmls
bCAmIHN0cm9rZSBhIHBhdGggdXNpbmcgZ3JhZGllbnRzCiAgICAgICAgIGZpbGxQYXRoKCk7CiAg
ICAgICAgIHN0cm9rZVBhdGgoKTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVybjsKICAg
ICB9CisKKyAgICBDR1BhdGhEcmF3aW5nTW9kZSBkcmF3aW5nTW9kZTsKKyAgICBpZiAoY2FsY3Vs
YXRlRHJhd2luZ01vZGUoc3RhdGUsIGRyYXdpbmdNb2RlKSkKKyAgICAgICAgQ0dDb250ZXh0RHJh
d1BhdGgoY29udGV4dCwgZHJhd2luZ01vZGUpOwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQgZmls
bFBhdGhXaXRoRmlsbFJ1bGUoQ0dDb250ZXh0UmVmIGNvbnRleHQsIFdpbmRSdWxlIGZpbGxSdWxl
KQpAQCAtNDg3LDcgKzQ4NSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25z
dCBGbG9hdFJlY3QmIHJlY3QpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAg
ICAgcmV0dXJuOwotICAgIHN3aXRjaCAobV9jb21tb24tPnN0YXRlLnN0cm9rZUNvbG9yU3BhY2Up
IHsKKyAgICBzd2l0Y2ggKG1fY29tbW9uLT5zdGF0ZS5maWxsQ29sb3JTcGFjZSkgewogICAgIGNh
c2UgU29saWRDb2xvclNwYWNlOgogICAgICAgICBpZiAoZmlsbENvbG9yKCkuYWxwaGEoKSkKICAg
ICAgICAgICAgIENHQ29udGV4dEZpbGxSZWN0KHBsYXRmb3JtQ29udGV4dCgpLCByZWN0KTsKQEAg
LTQ5Nyw3ICs0OTUsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxv
YXRSZWN0JiByZWN0KQogICAgICAgICBicmVhazsKICAgICBjYXNlIEdyYWRpZW50Q29sb3JTcGFj
ZToKICAgICAgICAgY2xpcChyZWN0KTsKLSAgICAgICAgQ0dDb250ZXh0RHJhd1NoYWRpbmcocGxh
dGZvcm1Db250ZXh0KCksIG1fY29tbW9uLT5zdGF0ZS5zdHJva2VHcmFkaWVudC0+cGxhdGZvcm1H
cmFkaWVudCgpKTsKKyAgICAgICAgQ0dDb250ZXh0RHJhd1NoYWRpbmcocGxhdGZvcm1Db250ZXh0
KCksIG1fY29tbW9uLT5zdGF0ZS5maWxsR3JhZGllbnQtPnBsYXRmb3JtR3JhZGllbnQoKSk7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>