<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[179807] trunk</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/179807">179807</a></dd>
<dt>Author</dt> <dd>darin@apple.com</dd>
<dt>Date</dt> <dd>2015-02-08 15:22:24 -0800 (Sun, 08 Feb 2015)</dd>
</dl>

<h3>Log Message</h3>
<pre>Make SVGUseElement work without creating any SVGElementInstance objects
https://bugs.webkit.org/show_bug.cgi?id=141374

Reviewed by Sam Weinig.

Source/WebCore:

* dom/ElementIterator.h: Changed the * and -&gt; operators to be const.
There is no need for the iterator itself to be modified just to dereference it.

* dom/TypedElementDescendantIterator.h: Added DoubleTypedElementDescendantIterator.
This allows callers to call descendantsOfType on two elements, as long as the caller
can guarantee that both have the same number of descendants of that type. It's handy
for walking a tree of cloned elements to set up something between each original and
its clone. In the future we might instead change the cloning machinery so it can do
this work as we clone, and if so, we could consider deleting this.

* svg/SVGElement.cpp:
(WebCore::SVGElement::correspondingElement): Made this const.
(WebCore::SVGElement::invalidateInstances): Got rid of the rule that said &quot;this can
only be done for an element in a document&quot;, since it's useful to do this on an element
that has just been removed from a document. Removed the &quot;updateStyleIfNeeded&quot; call
here now that the other changes make it no longer needed. Removed an unimportant
assertion that we only invalidate use elements that are in a document; that's not
a necessary restriction. Streamlined the logic a bit.

* svg/SVGElement.h: Made correspondingElement const.

* svg/SVGUseElement.cpp:
(WebCore::SVGUseElement::insertedInto): Removed an assertion about
m_targetElementInstance since that's gone now.
(WebCore::SVGUseElement::svgAttributeChanged): Changed code that transfers
size attributes to the shadow tree to use shadowTreeTargetClone instead of
m_targetElementInstance.
(WebCore::SVGUseElement::clearResourceReferences): Removed code to detach
m_targetElementInstance, and also the call to removeAllTargetReferencesForElement,
because we no longer use those.
(WebCore::SVGUseElement::buildPendingResource): Moved the code to build the
shadow tree in here and deleted the buildShadowAndInstanceTree function.
Also changed logic so that we use a pending resource any time the target is not
a valid one. That helps us correctly handle cases where we initially have an
invalid target, but later get a value one
(WebCore::SVGUseElement::buildShadowAndInstanceTree): Deleted. The code here
was greatly simplified and moved into buildPendingResource.
(WebCore::SVGUseElement::buildInstanceTree): Deleted.
(WebCore::SVGUseElement::hasCycleUseReferencing): Deleted. Cycles are now
detected by the new isValidTarget function and so there's no need for a
separate explicit check for a cycle.
(WebCore::associateClonesWithOriginals): Added. Helper that makes
functions that build the shadow tree simpler and easier to read.
(WebCore::associateReplacementCloneWithOriginal): Added. Helper to
make associateReplacementClonesWithOriginals simple.
(WebCore::associateReplacementClonesWithOriginals): Added. Helper that
makes functions that build the shadow tree simpler and easier to read.
(WebCore::SVGUseElement::buildShadowTree): Call associateClonesWithOriginals
since associateInstancesWithShadowTreeElements no longer does this.
(WebCore::SVGUseElement::isValidTarget): Added. Covers all the different
reasons a target might not be valid: type of element, reference cycles, and
also &quot;not in document&quot; (refactored in here; not sure when that can happen
in practice, might be possible to remove it later).
(WebCore::SVGUseElement::expandUseElementsInShadowTree): Add checks for
documents that are still loading; this used to be checked when building the
instance tree. Added calls to associateReplacementClonesWithOriginals and
associateClonesWithOriginals; that used to be done by later in the
associateInstancesWithShadowTreeElements function. Use isValidTarget so
we handle cycles as well as invalid target types.
(WebCore::SVGUseElement::expandSymbolElementsInShadowTree): Added a call to
associateReplacementClonesWithOriginals, since we can no longer do that in
associateInstancesWithShadowTreeElements.
(WebCore::SVGUseElement::associateInstancesWithShadowTreeElements): Deleted.
(WebCore::SVGUseElement::instanceForShadowTreeElement): Deleted.
(WebCore::SVGUseElement::invalidateDependentShadowTrees): Removed a comment
that simply restated the name of the function.

* svg/SVGUseElement.h: Removed instanceForShadowTreeElement,
buildShadowAndInstanceTree, detachInstance, buildInstanceTree,
hasCycleUseReferencing, associateInstancesWithShadowTreeElements,
instanceForShadowTreeElement, and m_targetElementInstance. Added isValidTarget.

LayoutTests:

Results changed on some tests that expected the old &quot;remove all content if a cycle is detected&quot;
behavior from the &lt;use&gt; element. The new behavior is to inhibit cycles, but render everything
else, which is much easier to implement correctly and also makes logical sense. Changed all
those tests to be reference tests, which makes sense since they are focusing on what gets
rendered in these complex cases, and the expected results are a lot easier to understand in
SVG form than they were in txt/png form. This also means we can remove a lot of platform-specific
results since reference tests aren't sensitive to small platform differences in rendering.

* platform/efl/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-01-t-expected.png: Removed.
* platform/efl/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-02-t-expected.png: Removed.
* platform/efl/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-03-t-expected.png: Removed.
* platform/efl/svg/hixie/error/017-expected.png: Removed.
* platform/gtk/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-01-t-expected.png: Removed.
* platform/gtk/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-02-t-expected.png: Removed.
* platform/gtk/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-03-t-expected.png: Removed.
* platform/gtk/svg/custom/use-on-disallowed-foreign-object-3-expected.png: Removed.
* platform/gtk/svg/custom/use-on-disallowed-foreign-object-3-expected.txt: Removed.
* platform/gtk/svg/custom/use-recursion-1-expected.png: Removed.
* platform/gtk/svg/custom/use-recursion-1-expected.txt: Removed.
* platform/gtk/svg/custom/use-recursion-2-expected.png: Removed.
* platform/gtk/svg/custom/use-recursion-2-expected.txt: Removed.
* platform/gtk/svg/custom/use-recursion-3-expected.png: Removed.
* platform/gtk/svg/custom/use-recursion-3-expected.txt: Removed.
* platform/gtk/svg/custom/use-recursion-4-expected.png: Removed.
* platform/gtk/svg/custom/use-recursion-4-expected.txt: Removed.
* platform/gtk/svg/hixie/error/017-expected.png: Removed.
* platform/ios-sim-deprecated/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-01-t-expected.txt: Removed.
* platform/ios-sim-deprecated/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-02-t-expected.txt: Removed.
* platform/ios-sim-deprecated/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-03-t-expected.txt: Removed.
* platform/ios-sim-deprecated/svg/custom/use-on-disallowed-foreign-object-3-expected.txt: Removed.
* platform/ios-sim-deprecated/svg/custom/use-recursion-1-expected.txt: Removed.
* platform/ios-sim-deprecated/svg/custom/use-recursion-2-expected.txt: Removed.
* platform/ios-sim-deprecated/svg/custom/use-recursion-3-expected.txt: Removed.
* platform/ios-sim-deprecated/svg/custom/use-recursion-4-expected.txt: Removed.
* platform/ios-sim-deprecated/svg/hixie/error/017-expected.txt: Removed.
* platform/ios-simulator/svg/custom/use-on-disallowed-foreign-object-3-expected.txt: Removed.
* platform/ios-simulator/svg/custom/use-recursion-1-expected.txt: Removed.
* platform/ios-simulator/svg/custom/use-recursion-2-expected.txt: Removed.
* platform/ios-simulator/svg/custom/use-recursion-3-expected.txt: Removed.
* platform/ios-simulator/svg/custom/use-recursion-4-expected.txt: Removed.
* platform/mac-mountainlion/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-01-t-expected.txt: Removed.
* platform/mac-mountainlion/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-02-t-expected.txt: Removed.
* platform/mac-mountainlion/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-03-t-expected.txt: Removed.
* platform/mac-mountainlion/svg/custom/use-on-disallowed-foreign-object-3-expected.txt: Removed.
* platform/mac-mountainlion/svg/custom/use-recursion-1-expected.txt: Removed.
* platform/mac-mountainlion/svg/custom/use-recursion-2-expected.txt: Removed.
* platform/mac-mountainlion/svg/custom/use-recursion-3-expected.txt: Removed.
* platform/mac-mountainlion/svg/custom/use-recursion-4-expected.txt: Removed.
* platform/mac-mountainlion/svg/hixie/error/017-expected.txt: Removed.
* platform/mac/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-01-t-expected.png: Removed.
* platform/mac/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-01-t-expected.txt: Removed.
* platform/mac/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-02-t-expected.png: Removed.
* platform/mac/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-02-t-expected.txt: Removed.
* platform/mac/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-03-t-expected.png: Removed.
* platform/mac/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-03-t-expected.txt: Removed.
* platform/mac/svg/custom/use-on-disallowed-foreign-object-3-expected.png: Removed.
* platform/mac/svg/custom/use-on-disallowed-foreign-object-3-expected.txt: Removed.
* platform/mac/svg/custom/use-recursion-1-expected.png: Removed.
* platform/mac/svg/custom/use-recursion-1-expected.txt: Removed.
* platform/mac/svg/custom/use-recursion-2-expected.png: Removed.
* platform/mac/svg/custom/use-recursion-2-expected.txt: Removed.
* platform/mac/svg/custom/use-recursion-3-expected.png: Removed.
* platform/mac/svg/custom/use-recursion-3-expected.txt: Removed.
* platform/mac/svg/custom/use-recursion-4-expected.png: Removed.
* platform/mac/svg/custom/use-recursion-4-expected.txt: Removed.
* platform/mac/svg/hixie/error/017-expected.png: Removed.
* platform/mac/svg/hixie/error/017-expected.txt: Removed.

* svg/W3C-SVG-1.2-Tiny/struct-use-recursion-01-t-expected.svg: Added. Made this be a reference test,
and made it expect more of the recursion to work.
* svg/W3C-SVG-1.2-Tiny/struct-use-recursion-01-t-expected.txt: Removed.
* svg/W3C-SVG-1.2-Tiny/struct-use-recursion-02-t-expected.svg: Added. More of the same.
* svg/W3C-SVG-1.2-Tiny/struct-use-recursion-02-t-expected.txt: Removed.
* svg/W3C-SVG-1.2-Tiny/struct-use-recursion-03-t-expected.svg: Added. More of the same.
* svg/W3C-SVG-1.2-Tiny/struct-use-recursion-03-t-expected.txt: Removed.
* svg/custom/use-on-disallowed-foreign-object-3-expected.svg: Added. More of the same.
* svg/custom/use-recursion-1-expected.svg: Added. More of the same.
* svg/custom/use-recursion-2-expected.svg: Added. More of the same.
* svg/custom/use-recursion-3-expected.svg: Added. More of the same.
* svg/custom/use-recursion-4-expected.svg: Added. More of the same.
* svg/hixie/error/017-expected.txt: Removed.
* svg/hixie/error/017-expected.xml: Added. More of the same.

* svg/in-html/defs-after-use.html: Updated incorrect bug number in this test.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestssvginhtmldefsafterusehtml">trunk/LayoutTests/svg/in-html/defs-after-use.html</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoredomElementIteratorh">trunk/Source/WebCore/dom/ElementIterator.h</a></li>
<li><a href="#trunkSourceWebCoredomTypedElementDescendantIteratorh">trunk/Source/WebCore/dom/TypedElementDescendantIterator.h</a></li>
<li><a href="#trunkSourceWebCoresvgSVGElementcpp">trunk/Source/WebCore/svg/SVGElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGElementh">trunk/Source/WebCore/svg/SVGElement.h</a></li>
<li><a href="#trunkSourceWebCoresvgSVGUseElementcpp">trunk/Source/WebCore/svg/SVGUseElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGUseElementh">trunk/Source/WebCore/svg/SVGUseElement.h</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkLayoutTestssvgW3CSVG12Tinystructuserecursion01texpectedsvg">trunk/LayoutTests/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-01-t-expected.svg</a></li>
<li><a href="#trunkLayoutTestssvgW3CSVG12Tinystructuserecursion02texpectedsvg">trunk/LayoutTests/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-02-t-expected.svg</a></li>
<li><a href="#trunkLayoutTestssvgW3CSVG12Tinystructuserecursion03texpectedsvg">trunk/LayoutTests/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-03-t-expected.svg</a></li>
<li><a href="#trunkLayoutTestssvgcustomuseondisallowedforeignobject3expectedsvg">trunk/LayoutTests/svg/custom/use-on-disallowed-foreign-object-3-expected.svg</a></li>
<li><a href="#trunkLayoutTestssvgcustomuserecursion1expectedsvg">trunk/LayoutTests/svg/custom/use-recursion-1-expected.svg</a></li>
<li><a href="#trunkLayoutTestssvgcustomuserecursion2expectedsvg">trunk/LayoutTests/svg/custom/use-recursion-2-expected.svg</a></li>
<li><a href="#trunkLayoutTestssvgcustomuserecursion3expectedsvg">trunk/LayoutTests/svg/custom/use-recursion-3-expected.svg</a></li>
<li><a href="#trunkLayoutTestssvgcustomuserecursion4expectedsvg">trunk/LayoutTests/svg/custom/use-recursion-4-expected.svg</a></li>
<li><a href="#trunkLayoutTestssvghixieerror017expectedxml">trunk/LayoutTests/svg/hixie/error/017-expected.xml</a></li>
</ul>

<h3>Removed Paths</h3>
<ul>
<li>trunk/LayoutTests/platform/efl/svg/W3C-SVG-1.2-Tiny/</li>
<li><a href="#trunkLayoutTestsplatformeflsvghixieerror017expectedpng">trunk/LayoutTests/platform/efl/svg/hixie/error/017-expected.png</a></li>
<li>trunk/LayoutTests/platform/gtk/svg/W3C-SVG-1.2-Tiny/</li>
<li><a href="#trunkLayoutTestsplatformgtksvgcustomuseondisallowedforeignobject3expectedpng">trunk/LayoutTests/platform/gtk/svg/custom/use-on-disallowed-foreign-object-3-expected.png</a></li>
<li><a href="#trunkLayoutTestsplatformgtksvgcustomuseondisallowedforeignobject3expectedtxt">trunk/LayoutTests/platform/gtk/svg/custom/use-on-disallowed-foreign-object-3-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformgtksvgcustomuserecursion1expectedpng">trunk/LayoutTests/platform/gtk/svg/custom/use-recursion-1-expected.png</a></li>
<li><a href="#trunkLayoutTestsplatformgtksvgcustomuserecursion1expectedtxt">trunk/LayoutTests/platform/gtk/svg/custom/use-recursion-1-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformgtksvgcustomuserecursion2expectedpng">trunk/LayoutTests/platform/gtk/svg/custom/use-recursion-2-expected.png</a></li>
<li><a href="#trunkLayoutTestsplatformgtksvgcustomuserecursion2expectedtxt">trunk/LayoutTests/platform/gtk/svg/custom/use-recursion-2-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformgtksvgcustomuserecursion3expectedpng">trunk/LayoutTests/platform/gtk/svg/custom/use-recursion-3-expected.png</a></li>
<li><a href="#trunkLayoutTestsplatformgtksvgcustomuserecursion3expectedtxt">trunk/LayoutTests/platform/gtk/svg/custom/use-recursion-3-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformgtksvgcustomuserecursion4expectedpng">trunk/LayoutTests/platform/gtk/svg/custom/use-recursion-4-expected.png</a></li>
<li><a href="#trunkLayoutTestsplatformgtksvgcustomuserecursion4expectedtxt">trunk/LayoutTests/platform/gtk/svg/custom/use-recursion-4-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformgtksvghixieerror017expectedpng">trunk/LayoutTests/platform/gtk/svg/hixie/error/017-expected.png</a></li>
<li>trunk/LayoutTests/platform/ios-sim-deprecated/svg/W3C-SVG-1.2-Tiny/</li>
<li><a href="#trunkLayoutTestsplatformiossimdeprecatedsvgcustomuseondisallowedforeignobject3expectedtxt">trunk/LayoutTests/platform/ios-sim-deprecated/svg/custom/use-on-disallowed-foreign-object-3-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimdeprecatedsvgcustomuserecursion1expectedtxt">trunk/LayoutTests/platform/ios-sim-deprecated/svg/custom/use-recursion-1-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimdeprecatedsvgcustomuserecursion2expectedtxt">trunk/LayoutTests/platform/ios-sim-deprecated/svg/custom/use-recursion-2-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimdeprecatedsvgcustomuserecursion3expectedtxt">trunk/LayoutTests/platform/ios-sim-deprecated/svg/custom/use-recursion-3-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimdeprecatedsvgcustomuserecursion4expectedtxt">trunk/LayoutTests/platform/ios-sim-deprecated/svg/custom/use-recursion-4-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimdeprecatedsvghixieerror017expectedtxt">trunk/LayoutTests/platform/ios-sim-deprecated/svg/hixie/error/017-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatorsvgcustomuseondisallowedforeignobject3expectedtxt">trunk/LayoutTests/platform/ios-simulator/svg/custom/use-on-disallowed-foreign-object-3-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatorsvgcustomuserecursion1expectedtxt">trunk/LayoutTests/platform/ios-simulator/svg/custom/use-recursion-1-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatorsvgcustomuserecursion2expectedtxt">trunk/LayoutTests/platform/ios-simulator/svg/custom/use-recursion-2-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatorsvgcustomuserecursion3expectedtxt">trunk/LayoutTests/platform/ios-simulator/svg/custom/use-recursion-3-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatorsvgcustomuserecursion4expectedtxt">trunk/LayoutTests/platform/ios-simulator/svg/custom/use-recursion-4-expected.txt</a></li>
<li>trunk/LayoutTests/platform/mac/svg/W3C-SVG-1.2-Tiny/</li>
<li><a href="#trunkLayoutTestsplatformmacsvgcustomuseondisallowedforeignobject3expectedpng">trunk/LayoutTests/platform/mac/svg/custom/use-on-disallowed-foreign-object-3-expected.png</a></li>
<li><a href="#trunkLayoutTestsplatformmacsvgcustomuseondisallowedforeignobject3expectedtxt">trunk/LayoutTests/platform/mac/svg/custom/use-on-disallowed-foreign-object-3-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformmacsvgcustomuserecursion1expectedpng">trunk/LayoutTests/platform/mac/svg/custom/use-recursion-1-expected.png</a></li>
<li><a href="#trunkLayoutTestsplatformmacsvgcustomuserecursion1expectedtxt">trunk/LayoutTests/platform/mac/svg/custom/use-recursion-1-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformmacsvgcustomuserecursion2expectedpng">trunk/LayoutTests/platform/mac/svg/custom/use-recursion-2-expected.png</a></li>
<li><a href="#trunkLayoutTestsplatformmacsvgcustomuserecursion2expectedtxt">trunk/LayoutTests/platform/mac/svg/custom/use-recursion-2-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformmacsvgcustomuserecursion3expectedpng">trunk/LayoutTests/platform/mac/svg/custom/use-recursion-3-expected.png</a></li>
<li><a href="#trunkLayoutTestsplatformmacsvgcustomuserecursion3expectedtxt">trunk/LayoutTests/platform/mac/svg/custom/use-recursion-3-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformmacsvgcustomuserecursion4expectedpng">trunk/LayoutTests/platform/mac/svg/custom/use-recursion-4-expected.png</a></li>
<li><a href="#trunkLayoutTestsplatformmacsvgcustomuserecursion4expectedtxt">trunk/LayoutTests/platform/mac/svg/custom/use-recursion-4-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformmacsvghixieerror017expectedpng">trunk/LayoutTests/platform/mac/svg/hixie/error/017-expected.png</a></li>
<li><a href="#trunkLayoutTestsplatformmacsvghixieerror017expectedtxt">trunk/LayoutTests/platform/mac/svg/hixie/error/017-expected.txt</a></li>
<li>trunk/LayoutTests/platform/mac-mountainlion/svg/W3C-SVG-1.2-Tiny/</li>
<li><a href="#trunkLayoutTestsplatformmacmountainlionsvgcustomuseondisallowedforeignobject3expectedtxt">trunk/LayoutTests/platform/mac-mountainlion/svg/custom/use-on-disallowed-foreign-object-3-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformmacmountainlionsvgcustomuserecursion1expectedtxt">trunk/LayoutTests/platform/mac-mountainlion/svg/custom/use-recursion-1-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformmacmountainlionsvgcustomuserecursion2expectedtxt">trunk/LayoutTests/platform/mac-mountainlion/svg/custom/use-recursion-2-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformmacmountainlionsvgcustomuserecursion3expectedtxt">trunk/LayoutTests/platform/mac-mountainlion/svg/custom/use-recursion-3-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformmacmountainlionsvgcustomuserecursion4expectedtxt">trunk/LayoutTests/platform/mac-mountainlion/svg/custom/use-recursion-4-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformmacmountainlionsvghixieerror017expectedtxt">trunk/LayoutTests/platform/mac-mountainlion/svg/hixie/error/017-expected.txt</a></li>
<li><a href="#trunkLayoutTestssvgW3CSVG12Tinystructuserecursion01texpectedtxt">trunk/LayoutTests/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-01-t-expected.txt</a></li>
<li><a href="#trunkLayoutTestssvgW3CSVG12Tinystructuserecursion02texpectedtxt">trunk/LayoutTests/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-02-t-expected.txt</a></li>
<li><a href="#trunkLayoutTestssvgW3CSVG12Tinystructuserecursion03texpectedtxt">trunk/LayoutTests/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-03-t-expected.txt</a></li>
<li><a href="#trunkLayoutTestssvghixieerror017expectedtxt">trunk/LayoutTests/svg/hixie/error/017-expected.txt</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (179806 => 179807)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2015-02-08 23:21:02 UTC (rev 179806)
+++ trunk/LayoutTests/ChangeLog        2015-02-08 23:22:24 UTC (rev 179807)
</span><span class="lines">@@ -1,3 +1,95 @@
</span><ins>+2015-02-08  Darin Adler  &lt;darin@apple.com&gt;
+
+        Make SVGUseElement work without creating any SVGElementInstance objects
+        https://bugs.webkit.org/show_bug.cgi?id=141374
+
+        Reviewed by Sam Weinig.
+
+        Results changed on some tests that expected the old &quot;remove all content if a cycle is detected&quot;
+        behavior from the &lt;use&gt; element. The new behavior is to inhibit cycles, but render everything
+        else, which is much easier to implement correctly and also makes logical sense. Changed all
+        those tests to be reference tests, which makes sense since they are focusing on what gets
+        rendered in these complex cases, and the expected results are a lot easier to understand in
+        SVG form than they were in txt/png form. This also means we can remove a lot of platform-specific
+        results since reference tests aren't sensitive to small platform differences in rendering.
+
+        * platform/efl/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-01-t-expected.png: Removed.
+        * platform/efl/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-02-t-expected.png: Removed.
+        * platform/efl/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-03-t-expected.png: Removed.
+        * platform/efl/svg/hixie/error/017-expected.png: Removed.
+        * platform/gtk/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-01-t-expected.png: Removed.
+        * platform/gtk/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-02-t-expected.png: Removed.
+        * platform/gtk/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-03-t-expected.png: Removed.
+        * platform/gtk/svg/custom/use-on-disallowed-foreign-object-3-expected.png: Removed.
+        * platform/gtk/svg/custom/use-on-disallowed-foreign-object-3-expected.txt: Removed.
+        * platform/gtk/svg/custom/use-recursion-1-expected.png: Removed.
+        * platform/gtk/svg/custom/use-recursion-1-expected.txt: Removed.
+        * platform/gtk/svg/custom/use-recursion-2-expected.png: Removed.
+        * platform/gtk/svg/custom/use-recursion-2-expected.txt: Removed.
+        * platform/gtk/svg/custom/use-recursion-3-expected.png: Removed.
+        * platform/gtk/svg/custom/use-recursion-3-expected.txt: Removed.
+        * platform/gtk/svg/custom/use-recursion-4-expected.png: Removed.
+        * platform/gtk/svg/custom/use-recursion-4-expected.txt: Removed.
+        * platform/gtk/svg/hixie/error/017-expected.png: Removed.
+        * platform/ios-sim-deprecated/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-01-t-expected.txt: Removed.
+        * platform/ios-sim-deprecated/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-02-t-expected.txt: Removed.
+        * platform/ios-sim-deprecated/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-03-t-expected.txt: Removed.
+        * platform/ios-sim-deprecated/svg/custom/use-on-disallowed-foreign-object-3-expected.txt: Removed.
+        * platform/ios-sim-deprecated/svg/custom/use-recursion-1-expected.txt: Removed.
+        * platform/ios-sim-deprecated/svg/custom/use-recursion-2-expected.txt: Removed.
+        * platform/ios-sim-deprecated/svg/custom/use-recursion-3-expected.txt: Removed.
+        * platform/ios-sim-deprecated/svg/custom/use-recursion-4-expected.txt: Removed.
+        * platform/ios-sim-deprecated/svg/hixie/error/017-expected.txt: Removed.
+        * platform/ios-simulator/svg/custom/use-on-disallowed-foreign-object-3-expected.txt: Removed.
+        * platform/ios-simulator/svg/custom/use-recursion-1-expected.txt: Removed.
+        * platform/ios-simulator/svg/custom/use-recursion-2-expected.txt: Removed.
+        * platform/ios-simulator/svg/custom/use-recursion-3-expected.txt: Removed.
+        * platform/ios-simulator/svg/custom/use-recursion-4-expected.txt: Removed.
+        * platform/mac-mountainlion/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-01-t-expected.txt: Removed.
+        * platform/mac-mountainlion/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-02-t-expected.txt: Removed.
+        * platform/mac-mountainlion/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-03-t-expected.txt: Removed.
+        * platform/mac-mountainlion/svg/custom/use-on-disallowed-foreign-object-3-expected.txt: Removed.
+        * platform/mac-mountainlion/svg/custom/use-recursion-1-expected.txt: Removed.
+        * platform/mac-mountainlion/svg/custom/use-recursion-2-expected.txt: Removed.
+        * platform/mac-mountainlion/svg/custom/use-recursion-3-expected.txt: Removed.
+        * platform/mac-mountainlion/svg/custom/use-recursion-4-expected.txt: Removed.
+        * platform/mac-mountainlion/svg/hixie/error/017-expected.txt: Removed.
+        * platform/mac/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-01-t-expected.png: Removed.
+        * platform/mac/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-01-t-expected.txt: Removed.
+        * platform/mac/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-02-t-expected.png: Removed.
+        * platform/mac/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-02-t-expected.txt: Removed.
+        * platform/mac/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-03-t-expected.png: Removed.
+        * platform/mac/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-03-t-expected.txt: Removed.
+        * platform/mac/svg/custom/use-on-disallowed-foreign-object-3-expected.png: Removed.
+        * platform/mac/svg/custom/use-on-disallowed-foreign-object-3-expected.txt: Removed.
+        * platform/mac/svg/custom/use-recursion-1-expected.png: Removed.
+        * platform/mac/svg/custom/use-recursion-1-expected.txt: Removed.
+        * platform/mac/svg/custom/use-recursion-2-expected.png: Removed.
+        * platform/mac/svg/custom/use-recursion-2-expected.txt: Removed.
+        * platform/mac/svg/custom/use-recursion-3-expected.png: Removed.
+        * platform/mac/svg/custom/use-recursion-3-expected.txt: Removed.
+        * platform/mac/svg/custom/use-recursion-4-expected.png: Removed.
+        * platform/mac/svg/custom/use-recursion-4-expected.txt: Removed.
+        * platform/mac/svg/hixie/error/017-expected.png: Removed.
+        * platform/mac/svg/hixie/error/017-expected.txt: Removed.
+
+        * svg/W3C-SVG-1.2-Tiny/struct-use-recursion-01-t-expected.svg: Added. Made this be a reference test,
+        and made it expect more of the recursion to work.
+        * svg/W3C-SVG-1.2-Tiny/struct-use-recursion-01-t-expected.txt: Removed.
+        * svg/W3C-SVG-1.2-Tiny/struct-use-recursion-02-t-expected.svg: Added. More of the same.
+        * svg/W3C-SVG-1.2-Tiny/struct-use-recursion-02-t-expected.txt: Removed.
+        * svg/W3C-SVG-1.2-Tiny/struct-use-recursion-03-t-expected.svg: Added. More of the same.
+        * svg/W3C-SVG-1.2-Tiny/struct-use-recursion-03-t-expected.txt: Removed.
+        * svg/custom/use-on-disallowed-foreign-object-3-expected.svg: Added. More of the same.
+        * svg/custom/use-recursion-1-expected.svg: Added. More of the same.
+        * svg/custom/use-recursion-2-expected.svg: Added. More of the same.
+        * svg/custom/use-recursion-3-expected.svg: Added. More of the same.
+        * svg/custom/use-recursion-4-expected.svg: Added. More of the same.
+        * svg/hixie/error/017-expected.txt: Removed.
+        * svg/hixie/error/017-expected.xml: Added. More of the same.
+
+        * svg/in-html/defs-after-use.html: Updated incorrect bug number in this test.
+
</ins><span class="cx"> 2015-02-08  David Kilzer  &lt;ddkilzer@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Skip fast/parser/document-open-in-unload.html on all WK2 platforms
</span></span></pre></div>
<a id="trunkLayoutTestsplatformeflsvghixieerror017expectedpng"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/platform/efl/svg/hixie/error/017-expected.png (179806 => 179807)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/efl/svg/hixie/error/017-expected.png        2015-02-08 23:21:02 UTC (rev 179806)
+++ trunk/LayoutTests/platform/efl/svg/hixie/error/017-expected.png        2015-02-08 23:22:24 UTC (rev 179807)
</span><span class="lines">@@ -1,89 +0,0 @@
</span><del>-\x89PNG
-
--IHDR X')tEXtchecksumc34de93193a31dd1ede113aa85edba9e\xE01\xC9JbKGD\xFF\xFF\xFF\xA0\xBD\xA7\x93 IDATx\x9C\xED\xDDy|T\xF5\xBD\xFF\xF1\xF7d_\x8B\x84`@\x93\xB0\x98\x85M\xAB(\xA2V@+(\xA0U{\xFB\xABەk\xF5w}\xB4\xFC\xBC\xF7\xDA\xF6\xB6b\xB5֥\xD6^{\x95&quot; .\x88-nP\xAB\x88\xE0\x86\xECaQ\x82\xECA         I\xE6\xF7\xC7(\xCCd2C\xE6\xCC\xF7\x9C33y=&lt;\xF2\x98\xEFY?\xB6        y\xF3\xFD~\xCF\xF7x\xBCpj\x8FK? \xDC2k֬ɓ'\xBBS- \xB6yX@s4HH\xFBm\xE9ر\xE3\xA6M\x9BZ\xB7n\xEDZM\x80X\x95\xFC\xFFܮ\x88 \xA9\xA7\xF4\x8Cߖ#G\x8Ex&lt;\x9E\xCB.\xBB̵\x9A\xB1\x8A, ?\x92\xF853337m\xDAt\xC6g\xB8V &amp;%\xB9]O\x95\xB2\xFC\x9Aǎ\xBB\xFF\xFE\xFB]\xAB\xAB\xE8\xC1&quot;s\x8F\xF4[\xBFfZZ\xDAƍ\x8B\x8A\x8Aܪ\x83\xE8\xC1&quot;s\x9Ft\x9A_\xB3\xB6\xB6vƌ\xAEU\x88I\xF4`\xFB\x95t\x9F_399y͚5eee\xAE\x881\xF4`\xBBC\xCA\xF3k\xD6\xD7\xD73 \xE0\x8F,\xC0\x8A\xA5\xBB\xFD\x9A\x8Fg\xE5ʕg\x9F}\xB6kb        =X\x80\xB7J\x9D\xFD\x9A^\xAF\x97N,\xC0        ,
 \xC0\x8A \xE9\xE7\x81[^y問&gt;\xFAȝj1\x86\x80Xt\xB3\x94\xEF\xD7\xF4z\xBD\xBF\xFB\xDD\xEF\\xABK\x98\x83X\xF7\xA4\xF4S\xBFfRRREE\xC5Yg\x9D\xE5ZA\x80\xD8@`\xDD-R'\xBFfCCã\x8F&gt;\xEAZ5\x80\x98A\x95F\x8Ffeem۶-77׵\x821\x80, *?\x91\xDA\xF85\x8F=\xFA\xC4O\xB8V- 6ЃD\xEBn\xE9A\xBFf^^^eeeff\xA6k\xDCF\xAD;\xA54\xBF\xE6\xBE}\xFBf͚\xE5Z5\x80@`\xC0\xF5\x92\xA4*))Y\xBF~}R\xFF\x80\x80\x8A_\x80wK\xBF\xE6ƍ\xCB\xCB\xCB]\xAB\xE06`@ip\xE0\x96\xC7ܝR1\x80!B\xC0\x8Cץ\xE1~M\x8Fdzy\xF3\xE6nݺ\xB9V\xC0=\xF4`f \x95\xFCÔ\xD7\xEB}\xEE\xB9\xE7\\xAB\xE0*z\xB0c~+\xDD\xE3\xD7\xCC\xCF\xCF\xFF\xF2\xCB/SRR\+\xE0z\xB0c\xA6J\xA9~\xCDݻw/Z\xB4ȵj\xEE!`\xC6t\x94Fny\xFA\xE9\xA7\xDD)\xE0*\x86\x93IW\xFA5SRR*++;w\xEE\xECZA7Ѓ\x984T*\xF4k\xD6\xD5\xD5\xFD\xF5\xAFu\xAB\x80[X\x80IIҴ\xC0-\xF9\xCB_\)\xE0`\xD8\xD4\xC0\x9F\xAB\xAD[\xB7.]\xBAԵjn `\x86u\x91\xAE\xDC2{\xF6lwJ\xB8\x84\x80\x98w]`\xF3\x95W^\xA9\xAF\xAFw\xA7\x80
 X\x80yWK\xD9~ͽ{\xF7.^\xBCصj\x8E#`\xE6e.\xD6 i\xEEܹ\xEE\x94p\xEB`\xB6xQ\xBAƯٶm۽{\x{1E6965}\xB9V\xC0A\xF4`\xB6!\xB5\xF6k&lt;x\xF0\xED\xB7\xDFv\xAD\x80\xB3X\x80-2\x82^\x9B\xC3(!\xB4 vY(\x8D\xF6k\xB6n\xDDz\xEF޽\xAEp
-=X\x80]~8Jx\xE8\xD0!F        \xA0\x85 `vɐ\xC6nY\xB0`\x81;\xA5\x9CE\xC0l\xF4\xA3\xC0\xE6[o\xBD\xE5Ng\xB0].\xA5\xFB5\xB7m۶v\xEDZת8\x85\x80\xD8([\xBA(pˢE\x8B\xDC)\xE0 `\xAF\xA1\x81\xCD\xD7_ݝ:b\x99\xC0^\xEB\xA4^~ʹ\xB4\xB4\xAA\xAA\xAA\x9C\x9C\xD7
-؏,\xC0^=\xA5\xBFfmm\xED\x92%K\\xAB\xE0`\xBBF\xA3\x84L\xC3\x80\x84G\xC0l7,\xB0Y^^\xEEN\xA70 \xB0\xDDA\xA9\x83T\xE7\xB7e\xF3\xE6\xCDݻww\xAD \x80\xCD\xE8\xC1l\xD7V\xBA p\xCBҥK\xDD)\xE0\xE0\x84K\x9B\xEF\xBD\xF7\x9E+e\x9CA\xC0\x9C00\xB0\xF9\xFE\xFB\xEF\xBBS\xC0\xCC\xC1\x9CpPj/5|\xDF\xF4x&lt;{\xF6\xEC\xC9\xCB\xCBs\xB3&amp;\x80m\xE8\xC1\x9C\xD0V\xEA\xE9\xD7\xF4z\xBD|\xF0\x81k\xD5lF\xC0\xC2(!\xB4,\xC0!,h9\x98\x838d\xAB\xD4կ\x99\x9E\x9E~\xF0\xE0\xC1\x8C\x8C \xD7
-؆,\xC0!]\xA43\xFC\x9A555\xFC\xB1k\xD5\xECD\xC0\x9C\xD3?\xB0I\xC0\x80DE\xC0\x9Cs~`s͚5\xEE\xD4\xB0 p\xCEف\xCDU\xABV\xB9S\xC0fLr\x9C\xB3[\xEA\xE4\xD7\xCC\xC8\xC8\xF8\xF6\xDBo\x93\x93\x93]+`z\xB0\xE7\xE4K\xFC\x9A\xD5\xD5՛7ov\xAD\x80mX\x80\xA3z6\x99\x86        \x89\x808\xAAO`\x93\x80        \x89\x808\xAAQ\xD6\xEAիݩ`'\xE0(\x86\xA0%\xE0)B\xC0QG\xA5\xA9\xE1\xFB\xA6\xC7\xE39x\xF0`\xEB֭ݬ        `=X\x80\xA3\xB2\xDFH\xE8\xF5zy\x90 pZI`\xF3\x8B/\xBEp\xA7\x80mX\x80Ӻ6+++])`ഢ\xC0\xE6֭[])`\xE04z\xB0 \xE1\xB0\xA75
-X\xF4`@\xE2a\x99\xC0i\xA4\xD3\xFC\x9AG\x8F\xF5x&lt;\xAE0\x8D,\xC0i\x{D936}~\xCD\xEA\xEA\xEA={\xF6\xB8V-\xC0,\xC0E\x81M\xA6a@\x82!`.`$6\xE0\x82\xC2\xC0\xE6\x8E;ܩ`\xE0\x82\xD3\x9B\xFB\xF7\xEFw\xA7\x80=X\x80 \xDA6\xBF\xFA\xEA+w\xEA؃\x80\xB8\x80\x80\x89\x8D\x80\xB8 7\xB0YUU\xE5N{\xB04\xEA\xC1Z\xB6l\x99\xC7Y\xB7\xDDv\x9B\xEF\xD6K\x97.u\xF8\xD6v\xB8\xE1\x86\xBC^VMCX\x80 rO} \x8E\xB0\x9C&amp;\xF1fH`)n\x808\x97\x92\xA2\x94ȿ\x8B\xBC^\xD5\xD4\xD8PM\xDCH\x91\xDAH\xDD.`\xA2\xF3\xCFj\xC0+'\xF6\xE9\xA35kLWO\xDA\xB0 q-X^\xA8\xB7\xDE2y\xC1Dժ\x95\xDBҥ\x8B\xC5t%\xE9\x86t\xD7]F\xAB\x89o\xBE\xD9\xFC\xFFA\xD6H-\xB6\xE8O\xFA\xD3\xF4\xE9\xD3Oy؅^\xF8V&lt;\xFCϚ5\xEB_\xFE\xE5_ܮB2\xB0\x92\x93\x95\x9Dm\xF2\x82\x88q\xD7]g\xFD\xDCɓ\xF5󟫮\xCE\51 +\xAB\xF9?\x99\xB6V$==\xBD9\x87%''g\xC7\xC3OqFF\x86\xDB%@8LrG&amp;O\xB6~n^\x9E\x867W
-1\x84\x80\xAB~\xF0\x95\x94Du\x85i\xD3\xCCT@\x8C1:D\xE8\xF5\xAA\xD1ZEO\ь\xFA\x8C\xA9\xD3N\xD3\xD7_\x9B\xA8&amp;6\xC4ҏ@\xA3\x857\x9B\xB9\xA7\xD7\xEBmt\xA4'~\x8A\x83\x8BgYQ1\xCEh\xC0Z\xBDZ\xE3ǫ\xB8X%%*.Vq\xB1ڵk\xE2\xB0\xF8\xFB\xD1JNֵ\xD7F{\x91\xB44M\x9A\xA4?\xFE\xD1DA\xB1ᮻԯ\xDFw\xDF\xFF%%*,Trr\xE3cl\xF8\xFEo2m\xD4\xD4\xD4|\xFE\xF9\xE7\x9B6mڸq\xE3\xA6M\x9B\xDE\xFF\xFD\xE6\j\xF5\xEA\xD5\xE3Ǐ/...))).....n\xD7\xD4O\xB1M\xA9+Tl:~\xFC\xF8\xF6\xED\xDB+\xFD|\xFC\xF1\xC7v\xA6-X\x87k\xFE\xFC\x80-\xB9\xB9*)9\xF9\xFB\xA6\xB8Xݺ)--\xE0\xF2V&lt;\xBA\xE2
-\xE5\xE5\xB8\xCEԩ        \xB0&gt;\xFAH}t\xB2\x99\x9A\xAA\xEE\xDD\xBE\xFFKJ\x94\xFB\xDD*\xEE'\xA2\x84\x85\xB0\xDC;\xB5k׮\x8D7\xFA\xB2\x94\xEFkeeeCC\xC4\xCF)&gt;|x~\xE0OqnnnII\x89/o\xF9\xBEv\xEB\xD6--\xF0\xA7\xD8Z\xDE
-\x8ES\xC1A\xCAg\xE7ΝtY\x88/6\xAF\x83UU\xA5\xAA*\xF9\xFF\xD399Y]\xBA\x9C\xFC}3x\xB0\xCA\xCA\xEC\xADv\x88~|\xD0\xE7\xBC\xF3Գ\xA7֭3s\xB5Xs\xFC\xB86lІ-۵\xF3\xFD\xAB\xE3\x8D\xE2\xE2#%%W_}\xB5\x85tr\xF8\xF0\xE1\x85 \x9E\xC8R\x9B6m:r䈱\xB2UUUUUU\xF9w\x80%''w\xE9\xD2\xE5D\xDE&lt;xp\x99\xA5\x9F\xE2\xF5\xEBׯX\xB1\xA2Q\x90\xB2
- 9\xBE\xD0h}\xBD\xB6lі-*/\x97\xA4;\xEF\xD4\xEFo\xE5:\xBBv\xE9\xC0\x81\xA8*\xF1\xFDVKJRr\xF2ɯ\xA9\xA9JMUJ\x8ARS\x95\x91\xD1\xC4\xF8$eg몫\x8C]m\xDA4\xDD}\xB7\xB1\xABž\xB4|\xB9\x96/]zD\xAA\xAE\xAEn\xE6
-\xFE6l\xD8p\x9D\xA9\x8C\xB9\xFA\xFA\xFA-[\xB6lٲ\xA5\xBC\xBC\ҝw\xDE\xF9{K?\xC5\xFC\xE3\x9F|\xF2I\xD3\xD5@L\x88ە\xDC\xFF\xF3?\xE5\xC0_\xCD\xC9\xC9JOWz\xBAZ\xB5\xFA\xEEON\xCEɯ\xBE?\xEDک}{\xE5\xE6\xAACu쨎\x95\x9Aj{a\xEE3\xC6\xE4\x82g\x93'\xEB\xDE{U_o\xEC\x82q&quot;\xEDԇ\x98\x97\x99\x99\xE9\xEBv\xBA\xF4\xD2K}[\xCE8\xE3\x8C\xFF\xF8Ǿ\xE1\xC5\xFD\xFB\xF7\xBBQTT:u\xEATXXد_?\xB7 \x80q\xB0\x9CQ_\xAF\xA3Gu\xF4h\xBDe\x8FN?]3f\xE8'?\xB1\xB32W\x99\xED;\xC9\xCF\xD7С\xDF\xF5h\xB6$w[E\xC8\xE3\xF1\xF8\xF2JKK}3\xD6
-
-\x8DH=\xFD\xF4Ӿ\xCF\xD8\xF8=\xDF\xF8\xE3\xE6͛kb୑\x8F'??\xBFK\x97.EEE\x85\x85\x85EEE\xBE\xAC8
- 6\xB0L\xF3z\xB5{\xB7&gt;\xF8 a\xD6\xE9\xA7\xEB\xB2\xCB _s\xEA\xD4\xB0 \xF2x&lt;]\xBAt\xE9ڵk\x8F=z\xF6\xECٵk׮]\xBB\xA4D\xF8\xEEv\xED\xDA\xF5\xEF߿\xFF\xFE\xFE8\xF0\xC5_\xAC[\xB7n\xFD\xFA\xF5\xBE\x9B6m\xAA\xB3g        \xFE\xEC\xEC\xEC\xD2\xD2\xD2\xFC\xFC\xFCN\x9D:u\xF5\xD3䓌\xCBX\xF6ؼ\xD9\xED
-l3q\xA2\xF9\xA9iW]\xA5\xB6mu\xB0e\xBD\xFB\xD8`\xBF\xD0~\xF0\x83+V\x98\xBB^\x80v\xED\xDA\xF5\xEB\xD7\xCF j\xCEk-#\xF5\xAB_\xFDj\xFA\xF4鍞O\x808\xC5J\xEE\xF6ش\xC9\xED
-lf|p\xD3&amp;\xADZe\xE5\x9A\xE9\xE9\x9A8\xD1rEq\xAA\xD6ܥ\x92\x92\xFDA\xB6\xE9v\xEDڵ#]H,{TUE\xFB\x90cl*+ӹ\xE7\x86\xDC;{\xB6\x9E{\xCE╧N\xB5xb\xDCrf\xC06,\xDB$d'V\xF8\xE9\xED\xFB\x9Bf϶\xF8&lt;\xE0\xA8\xB4\xD4ZQq\x8A\x80        \x8C\x80e\x9Bě\x86\xE5\xF1hҤ\x90{?\xFAH[\xB6h\xF7n-^l\xF1\xFA-\xAC\xCB\xE0! \xD6\xB0l\x93x=X\x83\xA9\xA8(\xE4޿\xFD\xED\xBB\x96G        \xAF\xBF^\xCE\xCE%r=X\x90\xC0Z\xD0\xEF3\xA7%^\xC0
-3&gt;X_\xAF\xB9s\xBF\xFB\xFC\xF2\xCB\xFA\xF6[+\xD7\xEF\xDCY?\xFC\xA1\x95\xE3=X\x90\xC0X\xB6I\xB0\x80\x95\x96\xA6q\xE3B\xEE]\xB2D{\xF6|\xF7\xF9\xC8\xBD\xF4\x92Ż\xB4\xA4QBz\xB0 \x81\xB0l\x93`s\xB0F\x8CP\x98\xC5g\xCFhZ%\xFCяԦ\x8D\xC5s\xE3- \xCB6\xDF~\xABݻ\xDD.œ0\xE3\x83\xD5Ս\xBB\xAC\x96,\xD1ΝV\xA9\xF1㭜\x87\x8E\xBA]\xC0&gt;,;%\xCC(a۶1&quot;\xE4\xDE\xD7^ӡC[\xF7i5ߴiO\x8C7Un\xB0\xCBN        \xB0ƍSz\xE8w7\x99\xA5,\x8F\xA0\xB3βxn\!`@#`\xD9)a\xA6a\x85&lt;x\xB0\xE9\xF74\xAFY\xA3\xCF&gt;\xB3x\xBB0սV:t\xEA\xA3\xF1\x8A\x80e\xA7\xC4\xE8\xC1*(\xD0E\x85\xDC\xFB⋪        1]\x9B\xB1B\xFB\xDA\xED\xB6J\xF0_c.K\x8C\x805i\x92&lt;\x9E\x90{\xC3̵\xB2\xFCڜ\x82-b\xE5\xC4\xF8\xC1\xF8 $6\x96\x9D&gt;\xFF\xDCbˆ)\x93'\x87ܵk\x97\xDEy'\xE4\xDE={\xF4\xF6\xDBo\x9A\xE8Sݿr\xBB\x80\xADXv\xAA\xAD՗_\xBA]Dt\xCE9G\xBDz\x85\xDC;g\x8Eny\x94p\xCC\xE5\xE4X&lt;7Ѓ\x89\x8D\x80e\xB3x% 3\xBD]~\xEF \xC5\xF2ks\xB2\xB2\xC2-\xFF\xE8\xC1\x80\xC4F\xC0\
 xB2Y\\xAC\xA4$M\x9CroE\x85&gt;\xFD\xF4W8zT/\xBEh\xF1\xEE        =JH$\xB6\xB7 HtO?\xADի\xDD.ªK/U\xA7N!\xF7&gt;\xFF|\xB3.\xF2\xDCs\x97]4H]\xBB\xEA\x8B/\xAC\x9C\xF3\xF6\xBA]\xC0V,\x9B\xAD^\xC7+\xFC\xF8`3\xD7j\xFF\xC7?\xB4s\xA7:w\x8E\xF8\xEE\x8F\xA6NՌ\x9F\xB6\xBA]\xC0V &quot;\x84\xCCL\x8Dr\xEF\x87j˖f]\xA7\xA1\xE1\xD4S\xB5B\x992%\xDC
-\xF1\x8C\x80\x89\x8D\x80\x85\xAE\xBA*\xDCs|e&amp;\xCB\xCFi\xF0`\x8B\xE7ƶJ\xB7 ؊\x80\x85Œ\xD6\xD7k\xEE\xDC.\xB5v\xAD\xF5\xD7\xE6$\xE2T\xF7*\xC9ң\x95\x80\xB8A\xC0BSrs5thȽK\x96ho\x84\xB3\xB4\x9F}\xD6b%c\xC7*;\xDB⹱\x8A\xF1AHx,4\xE5\xDAk\x95\xFA s\xAA\x9E\xDE\xE2\xA2\xF6\xADZ\xE9\x9Ak\xAC\x9C\xC3*\xDD.`7\x9Af|\xB0\xBAZ/\xBD\xF1\xF7\xEC\xD1[oY,&amp;\xE1F        \xE9\xC1\x80\x84G\xC0B\x90\xEE\xDDu\xC1!\xF7.\\xA8Ç\xAD\\xD6\xF2T\xF7\xC1\x83UXh\xF1ܘT\xE9v\xBB\xB0\xC4\xC8\xF2W\xC1^y\xC5b2\xF3-\x88\x95@*\xDD.`7\x82L\x9Erׁ*/\xB7x\xD9h^\x9B\x93X bmv\xBB\x80\xDDXԿ\xBF\xBAw\xB9\xF7\xC5U[k\xFD\xE2\x96G        \xBBuӠA\xD6\xEFKI\x9F\xBB]\xC0n,\xB2i|\xD0\xE7\x9Dw\xB4c\x87\xC5se\xAA\xFB:\xC9\xEBv-\xBB\xB0\xE0'%E&amp;\x84ܻc\x87\xDEy'\xAA\xEB74h\xD6,\x8B\xE7\x8E\xA7\xAC\xAC\xA8\xEEV\xB9]\xC0,\xF86L\xB9\xB9!\xF7Ν+oԝ/\x96VNN\xB8w#Ə\xB5np ~Z~g\xB3\xBFu\xEB\xB4r\xA5\xC5sb\x94p\xB5\xDBz\xB5n\x84ѯ_\xC0Cm--\xFA\xF4S\xF
 7\xAA1$'G\xA3G\x87\xDC[Qa=5\xF2\xEC\xB3\xEA\xDB\xD7ʉC\x86\xE8\xCC3\xB5}\xBB\x992\xDC\xE0\x95ָ]\xC0\xAC\xC8\xEA\xE3\x8F\xB6\xD4\xD4(#åj\xCC;V\x99\x99!\xF7F9\xBD\xDD\xDF\xF3\xCF\xEB\xC1\x95\x9C\xF1\x89II\x9A2E&lt;`\xAC\xC7m\x97\xBA]\xC0 F\xEE\xDCsݮ\xC0\xB6&gt;?\xE8o\xEF^\xBD\xF9\xA6\xC5s\xA7L1V\x86\x80\x82\x80\xB9\x84 X\x9D:iȐ\x90{W\xAC\xD0\xE7Fo\xB2\xBC Vq\xB1 0Y\x89\xB3\x98\xE1-+r\xD6\xE6ŸI\x93\x94\xFA\x9B\xC1\xC8\xF4v\x96_\x9B\xA3\xF8\x9E\xEA\xBE\xC2\xED\xCE `E.!{\xB0Œ\xD6\xD7k\xEE\÷;v\xCC\xFAksƏ\x8F\xD3o^i\xA9\xDB5\x9CA\xC0\x8APǎ\xCA\xCFw\xBB\xD3z\xF6\xD4\xD9g\x87ܻx\xB1\xF6\xED3\xD3g\x9F\xB5xb\x9B6\xBA\xFAj\xA3\xA58d\x93T\xE5v-g\xB0&quot;\x94\x90\xDDW\xD7_n\xAF\xF1\xF1A\x9Fwޱ\xBE\xE0\xC2ԩFKq\xC8\xFBnp +B\x89\xB0&lt;M\x9Cr\xEF\xB1cz\xF9e[\xEE\xEB\xF5Z\x8Fn?\xFC\xA1:w6Z\x8DX\xD0r\xB0&quot;\x94x\xEB\xE2\x8BUPr\xEF…\xD6g\xA3\x9F\x92\xE5g        \x93\x92N\xD1\xEB\x93X\xD0r\xB0&quot;\x94x\x8F:\xB6\xFCU\xB0\
 xF5뭯\x80o\xA3\x84\xFB\xA5Mn\xD7p +m۪K\xB7\x8B0*=]\xD7\r\xEF\x81Z\xB4\xC8\xDE,Ou/-\xD5-\xC5^HQ\xBF(7X\x91H\xBC\xF1\xC1\x91#նmȽ\xF3競\xD6\xDE\x9E^uuύ\xABN,\xC6\xA0E!`E\x82\xF1A\xE3\xF6\xED\xB3\xFEڜk\xAFUz\xBA\xD1jlD\xC0\x80\x85\x80\x89\xEB\xC1j\xD7NW^r\xEF\x8Ez\xF7]'ʰ&lt;ս];]u\x95\xD1R\xECr\x805\xDC\xA0\x85!`E&quot;\xC1\xD6\xF8\xF1JK \xB9w\xCE548QƂ\xD6T\x8C\x93Q\xC27$\xAB\xE3\xA0\x80\xB8\x94\xE2vVM\x98\xA0^\xBD\x9C\xBEiq\xB1\xD3w\xB4U\xF8\xF1A\x9B\xD6-v\xEC\x98\xE6\xCF\xD7-7X9w\xE8P\x9D~\xBA\xF6\xEC1]\x93a6?)\x889q\xB0.\xB9D\x97\\xE2v\xF1\xAC\xA8H\x86ܻa\x83&gt;\xFB̹b\x9E}\xD6b\xC0JN\xD6u\xD7\xE9\xC1Md\x92Wz\xC3\xEDc\x88\xB0\xA5\x9A&lt;YOȽLo\xF7\xF7\xCF\xEA\xCB/-\x9E\xF3\xA3\x84+\xA5\xBDn\xD7p\xAB\xA5\x9A&lt;9\xDC^\x87V4\xAF\xCD\xE9\xD5K\xE7\x9Dg\xB4\xC3\x8D&amp;%\xF1C\x89\x8F\xBF\xEB[\xA4~\xFDTVr\xEF\xE8\x8B/\xACF\x92\xF4\xEC\xB3\xF2Z]\x893\x86;\xB1\xBCRy\xE0\x96\xE4\xE4dwJ8\x88\x80\xD5&quot;\x
 85\x99\xDEMgR4**\xF4\xC9'ϝ81\xDC㐮\xFAZZ\xB8\x85,h        \xF8\xBB\xBE\xE5INֵ׆\xDC[W\xA7y\xF3\xAC\xC6\xCFs\xCFY\xEC\xC4j\xDF^#G\x9A\xAEƌ%\x92\xFFZ\x85\x85\x85\x9E0S\xDF\x89\x82\x80\xD5\xF2\~\xB9N?=\xE4\xDEŋ\xB5\xBF\x83\xD5\xF8\x89\xE6\xB59Ӧ\x99\xAC\xC4\xAF\xD4(\xAB\x8E1RΊۀ\xE5\xF5\xBA\xF3'\xC4\xE0\xF8\xA0\xCF\xFE\xFDz\xC3\xEA\x82Ç+/\xCFh5-\x9A\xE1&gt;|\xF8pwJ8+n\xD7\xC1\xFA\xF5\xAF\xF5\xD2KN\xDF\xF4\xFFPN\x8E\xD375++K?\xFAQȽǎ\xE9\xE5\x97\xAC&amp;\xC8s\xCFiĈp\xEBG\x84\x92\x92\xA2ɓ\xF5\xFB\xDF\xDBP\x93u \xA5#~\xCD\xF6\xED\xDB:Եj\x8Aۀ\xB5}\xBB\xF59і\xADZ\xA5A\x83\x9C\xBE\xA9YW_\xADV\xADB\xEE}\xF5U9r\xAF^}U\x87\xA9M+\xE7N\x9DS+x|\xF0ꫯNMMu\xA7\x80\xB3\xE2v\x88\xD0+W\xBA]A\xD4:\xBC\xFCU\xB0\xEAj͟o\xF1ܳ\xCFV߾F\xAB\x89ʡ\xA0Ə\xEFN)\xC7\xB0&quot;\xEF+/O\x97_r\xEF\xD7_[\x9Fe\x90\xE5g        [ b-\x94j\xFC\x9Ayyy\x97^z\xA9k\xD5\x9C\xB7C\x84\xAEX\xB9R^\xAF\x95B1b\xE2D\xA5\x84\xFE\xBC\xB2RS\xA68XM\x8Fjj\x94\x91a\xE5\xDC
 I\x93t\xF7\xDD:~\xDCtM 3f K\x8C@\xCBA\xC0\x8Aĺu:~&lt;f״&lt;\xB50ヒ\xFA\xF5ӟ\xFF\xECT)\xF6\xE8\xD0AW^\xA9 ܮC\x83^\xF0&lt;a\xC2wJ\xB8\x81!\xC2H?\xAEu\xEB\xDC.ª\x92\x92g\x9F\xB1\xB1 \xD6kR\xAD_\xB3cǎ]t\x91k\xD5G\xC0\x8AP\xFCN\xC3
-\xDF}\x950F\x8CPn\xAE\xBB%x\xA5g\xB7\x8C?\x9E\xF1AhQX\x8A߀5y\xB2\xDB8&quot;5U\x93&amp;\xB9[\xC2V\xE9\x9D\xC0-\xD7\s\x8D+\x95\xDCB\xC0\x8A\x90o\x9E{\xDC8P]\xBA\xB8]\x84S\%\xF4J\x96\xFC\xBFEz\xF4\xE8q\xF1\xC5\xBBV\xC0-\xAC\xAD^\xEDv\x96\xB4\x90\xF1A\x9F\xBE}ջ\xB7[7\xAF\x93\xFE\xB8\xE5\x86np\xA5\x80\x8BX:|X[\xB6\xB8]D\x84RS5n\x9C\xDBE8˽N\xACri\x8F_3==}Zl̻8\x89\x80\xB9\xB8\x9B\x86u\xE5\x95j\xDF\xDE\xED&quot;\x9C5yr\xB8\xBF\xEC\xF4t`s\xF4\xE8ѹnO\xBA8\x8Fu\xB0&quot;\xB7r\xA5\xE2\xEB\x9D'᧷\xFF\xFD\xEFz\xE5\xA7J\x89\xD0\xED\xB7[\xEC\xEB\xD8QÆ\xE9\xB5\xD7Lt
-ۥE\x81[n\xBE\xF9f\x87k\xC4V\xE4\xE2\xAB\xABuk\x8D\xEE\x80\xDF\xFCFK\x97:UM\x84\xB2\xB3\xF5\xF0\xC3ϝ6\xCD\xF9\x80\xF5\xBFR\xBD_\xB3[\xB7n\x97\x87y7 q1D\xB9\xF8
-X\xD7\\xEE\xB53_~\xA9\xF7\xDFw\xB0\x9A͛\xA7\x86\x8B\xE7\x8E\xA5\xD3N3Z\xCD)x\xA5\xFF-\xDCr\xFD\xF5\xD7{\xE2\xF7\xC5J\x80(Ѓ\xB9}\xFB\x94\x91\xF0F\xC2X^\xB8!\xFC\xF3\x83s\xE6\xC4t\xF1\xBBw\xEB\xDDwu\xC9%V\xCEMK\xD3ĉz\xEC1\xC3%\x85\xF6\xAA\xE4\xFF\xF8CJJ\xCA-\xB7\xDC\xE2\xD8\xDDa\xB7\x8D7&gt;\xF4\xD0C\xCD?~ʔ)\xB4\xAF1\x8E\x80eIM\x8D\xDB4\xCFgh\xF0\xE0p&lt;\xFF\xBCS\xA5X5g\x8Eŀ%i\xDA4'V\xA3\xB1\xCC+\xAE\xB8&quot;??߱\xBB\xC3n\xE5\xE5\xE5O=\xF5T\xF3\x8F2d\x88}\xC5\x88} &amp;\xB4I\x93\x94\xFA\xFF\xE2\x8A
-}\xF6\x99\x83\xD5X2\xBE\xEA\xEA,\x9E{\xDEy\xEA\xD1\xC3h5!-Z\xBD\xFD\xAE\xBB\xEEr\xE6\xD6pƊ+&quot;:&gt;;;ۦJ\xC4VB ?&gt;8{\xB6SuD᫯\xF4\xF6\xDB\xD6Owj-\xAAFCG\xE7\x9E{\xEEe\x97]\xE6̭\xE1\x8C\xF7#\x9C\xADتU+\x9B*X\x89\xABO\x9FS\xACq\xFB\xE3\x83&gt;s\xE6X?\xF7\xBA\xEBd\xFF[\x96\xB7H/n\x99&gt;}\xBA\xDD7\x85\x93v\xECرcǎ\x88N!`-s\xB0W\xF8?\x8E\x9B%\xE9_~Y\xFA\x93\xD2ӭ\x9C\x9B\x9F\xAF+\xAEТE\xA7&gt;2
-\x8F\xAE\xCEPXX8&gt;\xBEVJé4,..\xFE\xC5/~\xB1\xFF\xFEM\xD0\xC2\xB0TR\x92&amp;N w@\xBCt_I:tH\x8B\xE9G?\xB2x\xFA\xB4i\xB6\xAC*\xE9\xB7\xDCq\xC7).\xAD#\x9B|\xF0\xC1\xFE\xCDaÆ\xFD\xE4'?it\xCC\xFC\xC7\xF87        X@ \xC7a\x82\xBA\xE4\x9DqFȽ--Q\x8D\xBB9/\x9AjG\x8FV۶\xE6Ji\xECI\xE9\xA8_\xB3m۶7\xDDt\x93}\xB7\x83+M\xC0\xBA\xF0\xC2 \x83\x8F9r\xE4\x88\x93\x80\xB4p\xAC~|\xF0\xDDw\xB5k\x97S\xA5\x98\xB0p\xA1{E #C\xD7^k\xB4\x9A\x93j\xA4'\xB7\xFC\xF8\xC7?\xCE\xC9ɱ\xE9vpEuu\xF5\xCA\xC0兛 X\xDF~\xFB\xAD\x93\x80\xB4p\xACD\x94\x91\xA1\xB1c\xC3G\xE3\x83&gt;G\x8FF\xF5ޛ\xA9S͕\xE01\xC9?\xA8\xA6\xA5\xA5\xB1:C\xE2Y\xB9re\x8D\xDF\xD2w\xF9\xF9\x{114514D}\x8E\xA9\xAE\xAE\xAE\xAF?9/##\x83ab\xA0\x85#`%\xA2ѣպuȽǏk\xFE|\xAB1$\x9AQ\xC2\xFE\xFDURb\xAE\x94\xEF\x95~\xB8e\xFC\xF8\xF1\x9D:u2~#\xB8\xAB\xD1 \xF7\xE6t_\xB1V&quot;
-?&gt;\xF8\xC6\xFA\xFAk\xA7J1g\xD1&quot;}\xF3\x8D\xF5\xD3mX\xEBai\x8F_355uƌ\xC6\xEF\xD75gV\xA3\x80\xC501V\xC2i\xDF^Æ\x85; \xEE\xC6}jj\xF4\xCA+\xD6O\xBF\xEE\xBAp\x8B\xDAG\xEE@P\xF7Ք)S\xBAw\xEFn\xF0\x88˖-\xF3o2 @s\xB0΄        JM-\xB9\xF7\xE8Q-X\xE0`5FE3Jx\xC6\xBA\xFCrs\xA5\xE8a\xE9\xA0_3==\xFD\x97\xBF\xFC\xA5\xC1\xEB#Fl߾}\x97\xDF!\xA9\xA9\xA9\xFD\xFA\xF5 &gt;\x8C!B\x8D\xB0N\xF8\xF1\xC1W_\xB5\xFE8\x9E\xEB\xDE~[UU\xD6O77\xD5}_лqn\xBC\xF1Ƃ\x82S\xD7G\xECh\xB4V߾}322\x82\xA3 @#\xAC\xC4ҵ\xAB\x9A\xBF8)N\xC7}\xEA\xEA\xF4\xE2\x8B\xD6O\xBF\xFA\xEAps\xFF#1S\xF2\xFFu\x9A\x99\x99\xF9\x8B_\xFC\xC2ȕk\xAC&amp;\xC7E\xC0\x84\x80\x95X\xC2w_8\xA0\xD7_w\xAA{D3J\x98\x99\xA9        \xA2/a\xA7\xF4h\xE0\x96[n\xB9%???\xFA+#\xB0XC\xC0J,\x93'\x87\xDB\xFB⋪\xADu\xAA{D\xB9D\xAA\x89Q\xC2\xFF\x96\x8E\xF95333\xFE\xF3\x9FGYĠf.1*\x80 \xACr\xFE\xF9*.w@\\x8F\xFA44\xE8\x85\xAC\x9F&gt;p\xA0\xA2{\xD0o\xB5\xF4x\xE0\x96[o\xBD\x95\xB5\xAFէ\x9F~Z\xEB\xF7o\x92N\x9D:\x85\x9Ai
 G\xC0\xD0+\x81\x84ܽ[\xEF\xBC\xE3P%\xB6\x8A\xF2-\x8A\xD1ub\xDD#\xD5\xFB5srr\xA6O\x9FU=\x88a\xCD/&quot;\x84\x80\x95(RRN1\xC1h\xEE\548U\x8D\x9D\x96/We\xA5\xF5ӧL\x91\xC7c\xED\xD4W\xA5FS\xD8f̘ѱcG\xEB\xC5 \xB65?`\xB1L\x80FX\x89\xE2\x8A+\x94\x97\xEE\x80&lt;a\xEE\\xEB\xE7\xE8\xD2K-\x9CW#5z\xCB`II\xC9\xED\xB7\xDFn\xBD\xC4&lt;\xCB\x8B,\xACD~|\xF0\xF3\xCF\xF5\xE1\x87N\x95b?7F        \xFF(}\xB8\xE5\xC1L-\xB3\xA6+\xE2ܗ_~\xE9\xBF\xC4hZZZ\x93K\x8C\xFA\xB04B\xC0J\xADZ骫\xC2\x90H\xDDW\x92&gt;\xFBL\xD6O3F\xFE\xFE\xDB+\xFDG\xE0\x96aÆ\x8D9\xD2z-\x88y\xC1K\x8C\xA6\xA7\xA7\x87:\x98\x80\xA0VB3FYY\xE1H\xB0\x80\xA5\xE8F        \xB3\xB35~|Dg\xDC/\xF2k\xA6\xA6\xA6&gt;\xF4\xD0C!\x8FFBh\xFE\xF8\xA0X\x82\xB0B\xF8\xF1\xC1U\xAB\xB4~\xBDS\xA58\xC5\xC1Q\xC2u\xD2Ӂ[n\xBA馲\xB2\xB2\xA8
-@\xCC#`\x88+\xFE\xE5\xE7\x9Fb\xD6v\xE2u_I\xAA\xA8ЪU\xD6O\xBF\xE8&quot;u\xEDڜ\xEB\xA4\xEB\xA4\xE3~[rssx\xE0\xEB\xB7F&lt;\xA8\xA9\xA9Y\xF8-Q\xC0\xE2)B\xAC\xF8w\xED\xB5JN\xB9\xD7덶\xB3'fE3J\xE8\xF1hʔ\xE6\xF8\xB8\xF4Y\xE0\x96\xFB]\xBBv\xD6o\x8Dx\xF0駟\xD6\xD4Ԝhv\xEE\xDC\xF9\xCC3\xCF s&lt;=XIq\xBBD-\xFC\xF8\xE0\xB2eڶͩR\x9C5g\x8E~\xF5+\xEB\xA7O\x99\xA2\xFB\xEF\x97\xD7\xE6\x90ϥ\xFF\xB8\xE5\xBC\xF3λ\xED\xB6۬\xDF\xB1\xA7\xB6\xB6vϞ=;v\xECصk\xD7Ν;w\xEEܹ{\xF7\xEEO?\xFD\xD4\xFF\x98\xF0\xDDW&quot;`B\xC0\x8Asee:\xF7\xDCp$\xE4\xF8\xA0\xCF֭\xFA\xF0C\x9D\xBE\xC5ӻt\xD1\xE0\xC1aV\xB7\xF7J7KG\xFD\xB6\xA4\xA6\xA6\xFE\xE5/I\xD3_\x88(\xBC\xF9\xE6\x9B\xDF|󍩫\xD5\xD6\xD66Z]\xFD\x9Bo\xBE9|\xF8\xF0\xA1C\x87&gt;|\xF8\xF0\xE1\xF8&gt;TWW\x9F\xF2j,\x91&quot;`Ź\xF0\xDDW\xF5\xF5Q\xBD\xB9/\xF6͙c=`I\x9A:5L\xC0\xFA_\xE9\x81[\xEE\xBA\xEB\xAE&gt;}\xFAX\xBF\x9DT[[\xEB-\xDBgfM]]]}}\xBDcɯ֞W\x86\xBF\xFC\xF2\xCB/\xBF\xFC\xB2W\x8E^\xF8\x80U__\xEF\x9F\xD2&lt;
 Off\xA6\xFDE\x88i\xACx\xE6\xF1hҤp,^\xAC}\xFB\x9C\xAA\xC6-\xF3\xE6\xE9\xC1\x95du*\xE15\xD7\xE8\xD6[\xD8\xCF\xE1\xB3Wj\xF4\x8A\xC1\xEEݻϘ1#\xA2\xCB&lt;xp\xE3ƍ\xEBׯ\xAF\xA8\xA8\xA8\xA8\xA8ذa\xC3֭[\xEB\xEA\xEA,V\xDA\xC7\x9C\x9D\x9D]\\\ZZZZZڣG\x8F\x92\x92\x92\xD2\xD2\xD2\xE8\xCD\xD7\xD7\xD7WVV\xFA\x8A?\xF1\xF5믿6Rv\xBCHKK;7l?q\xF0\x8B=V_\xC7 a\xEB\xA7j\xAF\x91IDAT\xB0\xE2٠A**
-w\xC0\xEC\xD9U▝;\xB5t\xA9.\xBE\xD8\xE2\xE9\xADZi\xECX=\xFBl\xF0\x9E;\xA4F!&quot;%%\xE5\xA7?\xFDiiiiYYY\x8F=\xBAt钒\xF0\xE3\xB3}\xFB\xF6\x8D7nذaÆ-\xBE\xBBw\xEF\xB6XX\xE4jjj֬Y\xB3f͚[\x92\x92\x92
- KJJz\xF4\xE8\xE1 ^eee\xB9\xB9\xB9a.R]]]QQ\xE1\xFF_\xB1q\xE3\xC6挠%\xAA\xA4\xA4\xA4\xA2\xA2\xA2\xE1Ç\x87YbT&lt;B\xA0)\xACx~|\xB0\xBAZ\xB1:\xE0bҜ9\xD6\x96\xA4iӂ\xD6ߥ\xE0}\xBDP'\x9Aiii\xC5\xC5\xC5eee\xE9\xE9\xE97n\xAC\xA8\xA88|\xF8\xB0\xF52l\xD0\xD0аu\xEB֭[\xB7\xBE\xFE\xFA\xC9WT\xE7\xE6斕\x95\x95\x96\x96\x8E;v\xE8С\x92v\xEC\xD8\xF1\xF0\xC3\xFB\xBA\xA6*++\xE3\x8D\xE0\x91HOO\xEFСC^^^\xA7N\x9DN?\xFD\xF43\xCE8\xA3s\xE7΅\x85\x85\x85\x85\x85EEEiii\xA7\xBC\xB0#`ŭ\xB44\x8D\xEE\x80\xF2r:\xEE\x80\xC40\xBE\xFE\xF0\xA5X\xFDN\xBE\xE4\xFA?h\xB9K\x9A֌\xF3jkk׮]\xBBv\xEDZ\x8B\xF7uIUU\xD5{\xEF\xBD\xF7\xDE{不\xA7\xFBVee\xE5̙3])梋.2~M\x8F\xC7\xE3\xF1x\x92\xBF\x97\x9A\x9A\x9A\x9A\x9A\x9A\x91\x91\x91\x9E\x9E\x9E\x91\x91\x91\x95\x95\x95\x95\x95ժU\xAB\x9C\x9C\x9C6mڴm\xDB\xF6\xB4\xD3N\xCB\xC9ɉ\xF2\xA6,\xC1\xDCX\x85\x85\xEA\xD9S\xBDz\xA9gO-d\xF1&quot;w߭\xFEP۶\xFCI\xF8\xA9!99\xEA\xD5K}\xFA\xA8wo\xFD\xE0
-\xBFS\xBF~\x9A=[\x9B6i\xE3FmڤM\x9Bc],y&lt;\xEA\xDCY\xC5\xC5*)Qq\xB1\x8A\x8BU_o=`y&lt;z\xE3-\xADX\xA1\x8A
-m\xD8аaÏ?\xFF\xBCʆiR'\xE4\xE7\xE7\xFBF\xEB|\xC3v\xCD\xE9         ֫W\xAFW_}\xB5\x93\xF3\xA2\xD2\xD3\xD3\xCF:\xEB\xACÎ\xA7|\xC2.\x94I\x93&amp;M
-?\x890N\xB0\xB3?`\xE5\xE7\x97\xA5z\xF5R\xAF^\xEA\xD1CQ\xFF{Q\x92\xBAvmb%\xEEo\xBFm\xB9|v\xEF\xBF\xDCQ\x8CJN\xD6Yg}\xA7|_\x8B\x8A\xD4\xFCɳ\x85\x85*, ز{\xF7ɼ\xE5\xFB\xFA\xC5\xB23LЦ\xCDw)\xCA\xA7JJt\xD6Y2;ǥ\xA4D%%\xBE\x8FIҫǏoٲe\xC3\xF7|\xF1\xE5HS\xE1O)55\xB5[\xB7n\xA5\xDF++++))iӦM\xF4%ggg\x8F5jԨQ'\xB6\xEC۷\xEF\xC4Tz߇m۶yb\xF1\xB4\xD3N\xF3O\x84eeeEEE\xACUᏀ \x98-\xEB\xE2\x8Bջ\xF7\xC9P\xE5\xE4\x9A׭Z\xA9gO\xF5\xEC\xD9x{m\xAD\xB6oWee@\xEAZ\xBE\\xB16{7)I\x97^z2Q\xF5行 \x93\xD7\xCF\xCFW~\xBE&gt;\xB9\xA5\xAEN_|q\xB2\x8Bk\xE3F\xFD\xF3\x9F&amp;\xEF\xA9\xDC\-p2K\xABcG\x87KHMM-++\xF3ՠ\xD7\xEBݾ}\xFB\x89\xC7\xE8֯_\xFF\xDE{\xEF5yn\xEF޽\xFB\xF6\xED{&quot;\x8Bt\xEB\xD6-55ՙ\xB2\xF3\xF2\xF2\xF2\xF2\xF2.\xF6\x9B\x8Ev\xEC\xD81\xDF\xE40\x9F+VTVV\x9E\xF2:\xD9\xD9\xD9_|\xF1\x89,UZZڡC\xEBN,\xC1lXo\xBE\xA9\xB0Oܸ -Mݺ\xA9[\xB7\x80\x8D}\xFB\xEA\xB3\xCFB\x9C\xE0\x92\xAC,\xBD\xF5\x96\xA3wLI\xF9\xAE\xE8\x84\xD4T7\xFB\xB4\xAE\xB9FO&lt;\xE1\xDA\xDDC\xF0
 x&lt;\xBEIK555!\x82\xEFO&lt;1p\xE0@g\xAB )33\xF3\x9Cs\xCE9\xE7\x9Cs|\xCD\xC7{\xEC\xD6[o=\xE5Y}\xFB\xF6-//\xB7\xB9\xB4DC\xC0\x8Cw@TX\xA6@0D\xA5Q\xC0\x8A\xFE\xB1D        \x80\x80Q\xA1 @0D\x859X\x82\xD90\xC9\xDD\xEC\x83o-ʷ\xDFF\xB0
-CBz\xF2I=\xF9\xA4\x937\xBCE\xFA\xB3\xB9\xAB-\xB2\xBC\xAE[\xCCX\xBAt)\xEFы \x80\xE8\xC1BK\xF6\x9C\xD1t\xF8\xB0\x88\x80\x85\xEB#\xE9f\xB7k@B&quot;` -\xD3~i\xACT\xE3vHH,&quot;`\xA1\xAA\x97\xAE\x95\xB6\xBB] \x80$O\xBE\xA2\x88\xCA/\xA5\xFF \xDCҧO\x9F&gt;\xF8 ++˝\x82        \x87\x80\x85\x96\xE5q\xE9g\x81[rss?\xF9䓂\x82w
-$&quot;\x86т,\x94nܒ\x9C\x9C&lt;g\xCE\xD2\xC0,Z\x8A\xF5\xD2\xA9&gt;p\xE3}\xF7\xDDw\xD9e\x97\xB9S q1D\x88\xC4畾\x94.\x94vn\x9F:u\xEA3\xCF&lt;ú\x9A\xE3XHp^\xE9\xA04HZ\xB8\xFD\xF2\xCB////OMMu\xA7,@B#`!\xC1\xD5Häw7\xF6\xEE\xDD{\xE9ҥ\xAD[\xB7v\xA5$@\xC2c\x99W\xBA3(]\xE5\xE6\xE6\xBE\xF4\xD2K\xA4+\x80}XHX\xBEt\xD5\xE8\xDD\xD1\xD9\xD9ٯ\xBF\xFEz\xF7\xEE\xDDݩ        \xD02\xB0\x90\x98\xBC\xD2\xFD\xD27&amp;''ϝ;\xB7_\xBF~\xEE\xD4h1XH@^\xE9\xB7\xD2\xFDA\xDBgΜ9b\xC4
-\xB40LrG\xA2\xF1J\x95n \xDA~\xC7w&lt;\xFC\xF0\xC3\xCE\xD7h\x81\xE8\xC1BB\xF1Ji*]M\x9F&gt;\x9Dtp =XH^i\x9E4Ij\xDC~\xCB-\xB7&lt;\xF9\xE4\x93,(
-p          \xC2+-\x96FIՁ\xDBnj3w\xEEܔ\x94w\xCA\xB4H &quot;x\xA5\xF9ҕA\xE9j\xFC\xF8\xF1\xF3\xE6\xCD#]F\xE2\x9EWzF\xBA9hdpĈ/\xBD\xF4RZZ\x9A;eZ0\xE2\x9BW\xFA\x83tg\xD0\xF6!C\x86\xFC\xFD\xEF\xCF\xCC\xCCt\xA1&amp;@\x8BG\xC0B\xF3J\x8FI\xB7m0`@yyy\x9B6m\\xA8        \xE6`!Ny%\xAFtoS\xE9j\xF4\xE8\xD1K\x96,!]\D\xC0B\xFC\xF1\xA5\xAB[\xA5\xDF\xED;v\xEC /\xBC\x90\x9E\x9E\xEEBY|\x8F\x80\x85\xF8S/\xFDLz&lt;h\xFBرcgϞͬv\x80\xEBX\x883\xA5\xA1ғA\xDBo\xBA\xE9\xA6y\xF3摮\xB1\x80\x80\x85xR)-\x94\x96m\xFF\xD7\xFDק\x9Ez*)\x89\xEFg@L\xE0)BčU\xD2HiG\xD0\xF6;\xEF\xBC\xF3\xA1\x87\xE2M8\x80\xD8\xC1
-׈ \xA4\xC9ґ\xC0\x8D)))\x8F?\xFE\xF8\xCD7\xDF\xECNM\x84@\xC0BxD\x9A.\xD5nlݺ\xF5\xBCy\xF3\x86\xEANM\x84F\xC0BL\xAB\x93\xEE\x95fm\xCF\xCB\xCB[\xB0`A\xFF\xFE\xFD]\xA8        \x80S!`!v\xED\x92\xC6K\xEFm\xEF۷\xEFk\xAF\xBD֩S'j\xA0x\xEA
-1j\x89tNS\xE9jĈ\xEF\xBE\xFB.\xE9
-\xCBX\x88E\xFF--\x95\xF6m\xFF\xD9\xCF~\xB6`\xC1\x82V\xADZ\xB9P\xCDF\xC0Bl\xA9\x96n\x92\xEE\x95\xEA\xB7'''\xFF\xFA׿~\xF4\xD1G\x93\x93\x93ݩ \x80fcb\xC8\xE7\xD2iu\xD0\xF6\xFC\xFC\xFCy\xF3\xE6-4ȅ\x9A\x88=X\x88 \xA5\xFEM\xA5\xAB\xF3\xCE;o\xF9\xF2\xE5\xA4+@!`\xC1}\xDFJS\xA4\xD1RUЮ{\xEE\xB9\xE7\x83&gt;(((p\xA1,\xACb\x88.[&amp;M\x96*\x83\xB6ggg\xFF\xF9\xCF\x9E8q\xA2\xF3%%\S/\xFD\xA7\xF4@\xD0|vIݺu{饗\xFA\xF4\xE9\xE3BYD\x8D!B\xB8c\x8F4B\xBA\xBF\xA9t5jԨ\xE5˗\x93\xAE\xF1\x8B\x80,\x94Ζ\xDEڞ\x99\x99\xF9\xF8\xE3\x8F/X\xB0 77ׅ\xB20\x84!B8j\xBB\xF4\xA4ך\xDA5p\xE0\xC0Y\xB3f9\\xC6у\x874H\x8FH\xBD\x9BJW\xC9\xC9\xC93f\xCCx\xE7\x9DwHW\x80\xC4@\x9C\xB0A\xBA\xB9\xA9 J\xEAڵ\xEB\xDF\xFE\xF6\xB7\xFE\xFD\xFB;]\xB6\xA1 \xF6\xAA\x97~/\xFD D\xBA=z\xF4\xF2\xE5\xCBIW\x80C\xC0\x82\x8DVIJwIG\x82vu\xE8\xD0a֬Y ,\xE8С\x83 \x95`'l\xB1[\x9A&quot;\xF5\x95&gt;
-ڕ\x94\x94t\xFB\xED\xB7o޼y\xF2\xE4\xC9.T\x80\xFD\x92\xDBK\xFD\xC8Y0\xE7\xB8\xF4\xA84AZ\xD1\xD4ޢ\xA2\xA2ٳg\xDFv\xDBmNW\x80S\x92n\x97\xBAIϺ]\x80WzV\xEA&amp;\xFD\xABt hoZZڌ36l\xD80l\xD80\x8A\xC0A\x9E\x9F.\x91~/\x9D\xE3^)\x88k˥;C\xF4ZI:\xFF\xFC\xF3\x9F~\xFA\xE9޽{;Z.996\xF8\x8Et\xBEt\x87\xB4߽j\x8F\xF6I\xB7J\x85HWmڴy\xF0\xC1\x97.]J\xBA\xB4\x9E\xE0Mi\xD24\xE9~\xE9tǫA|\xD9-\xFD?\xE9\xAFRmS{\xD3\xD3\xD3\xEF\xBC\xF3\xCE{キm۶\xCE\xD6\x80˚X&gt;\xD9ҭ\xD2=R;'\xCBA\x9C\xF8Z\xFA\xAD\xF4Ǧ\xD6_\xF09r\xE4̙3\x8B\x8B\x8B- \x80ؐ4o޼&amp;\xDFOrD\xFAo\xA9DzH:\xE6xY\x88YG\xA5\xDFI%\xD2\x87HW]\xBBv}\xF1\xC5.\H\xBA\xB4X\xAF\xD7{\xFC\xF8\xF1g\x9Ey\xE6\xBE\xFB\xAAj\xF2\xA0\xF6\xD2\xDD\xD2\xEDR\xA6\xC3\xD5!\x96\x95\x95~'}\xE2\x80:\xFC\xD7\xFD׍7ޘ\x92\xC2+\x98-\x9A\xC7\xEB\xF5\xFA&gt;\xEDݻ\xF77\xBF\xF9͓O&gt;Y]]\xDD\xE4\xA1gJ\xB7I\xB7Hm\xAC\xB1\xE0\xA0\xF4'\xE9Qig\x88233\xFAӟ\xDEs\xCF=yyy\x8EV@L:\xB0|\xAA\xAA\xAA|\xF0\xC1G}\xF4\xE8
 ѣM\x9E\x90.\x8D\x97\xFE\xAFT\xE6H}p\xD7z\xE97\xD2&lt;\xA9&amp;\xC4999w\xDDu\xD7m\xB7\xDD־}{G+ \x865X&gt;\xFB\xF7\xEF\x9F9s\xE6#\x8F&lt;\xAA7+I\xBAR\xBAC\xBA\xDC\xE6\xFA\xE0\x96\x85\xD2\xA4\xC5R\xDF\x92\xA4\xCC\xCC\xCC\xDBo\xBF}\xFA\xF4\xE9\xBCL\x80F\x9AX&gt;\x9F\xFE\xF9\xFD\xF7\xDF?{\xF6\xEC\xFA\xFA\xFAP\xC7\$M\x97F\xF1\xB2\x9DD\xD1 -\x90fJ\xEF\x87&gt;&amp;%%\xE5\xBA\xEB\xAE\xFB\xE5/٥K\xE7* ~\x84 X&gt;&lt;\xF0\xC0ܹs\x8F?\xEA\x98&quot;\xE9\xC7\xD2-Rg\xC3\xE5\xC19;\xA4\xFF\x91\xFEG\xDA\x{2634D34}\x89'\xFE\xFB\xBF\xFF;OƩ\x96\xCF\xFE\xFD\xFB{\xEC\xB1\xC7{,ԓ\x86\x92\x92\xA4 \xA5)\xD2\xF5&lt;o?\x8EJ\xB3\xA4\xA7\xA4O\xC2\x96\x9F\x9F\xC7w\xDCx\xE3\x8D pJ\xCD-X&gt;555s\xE7\xCE\xFD\xF5\xAF]QQ氶\xD2x\xE9gR\x9F\xA8\xEB\x83}VI\x8FK\xF3\xA4\x83a+++\xBB\xF7\xDE{'L\x98\x90\x9E\x9E\xEEPeĹ\xC8\x96\xCF\xF1\xE3\xC7\xE7͛7s\xE6̕+W\x869,I\xBAL\x9A*\x8D\x96r\xA2(f\x92H\xFF+-        =\x81\xDD\xE7\xDCs\xCF\xFD\xB7\xFB\xB7q\xE3Ʊ\xAE\xB1\xB0NX\
 xBCx\xF1#\x8F&lt;R^^f\xBC\xA4L\xE9Ji\x824\x92\xA1C\xF7\x91^\x93\xE6J\x8B\xA4\xA6-\xFD^JJʈ#\xEE\xB8\xE3\x8E!C\x868T\x89%\xAA\x80\xE5s\xE0\xC0\x81^x\xE1\xF8úu\xEB\xC2\x99.\xFDP']M\x9F\x96SK/K/Ho\x85^\xCB\xEA\x84^\xBDz\xDDv\xDBm\xE3Ǐ\xE7\xF5\xCCD\xC3@\xC0򩯯\xFD\xF5ןz\xEA\xA9\xF2\xF2򺺺\xF0\xB7\x95\xAE\x92\xAE\x91.\x95\xB2\x8C\xDC\x81\x8EH\x8B\xA5\xF9\xD2\xE9ЩNII5j\xD4\xCD7\xDF&lt;t\xE8Ф$\xDC Z\xC6\xD6        \xBE\xADG}t\xEDڵ\xA7&lt;8Y:G\xBA\)-\x94&lt;fKia\xA4e\xD2k\xD2\xDB\xD2gR\xB8Q\xDB\xEF\xF5\xEE\xDD\xFB\xD6[o\xA5\xCB
-\xB3\xCC,\x9F\x86\x86\x86\xB7\xDF~{޼y\xAF\xBC\xF2\xCAW_\x85z;p\x80&quot;i\x984\\xBATjeGM        갴Xz]z=\xECV\xFErss\xAF\xBE\xFA\xEA        &amp; 2\x84.+\x8C\xB3+`\x9Dp\xFC\xF8\xF1%K\x96\xBC\xF0\xC2 \xCDOZ\xE9\xD2@\xE9bi\x80ԟ\xD9ZM9$-\x97ޗޓޗj\x9Bw\x96/W\x8D7nȐ!&lt;\x80}lX'444,[\xB6\xEC\x85^\x98?\xFE\xAE]\xBB\x9AbWi\xA0\xD4O$\x9D\xDBR\x87\xBDҧ\xD2R\xE9\xE9}\xE9\x8BH\xCE\xEDܹ\xF3رcǍ7`\xC0\xFA\xABp\x80s넺\xBA\xBA%K\x96\xBC\xF6\xDAk\x8B-ڲeKD\xE7\x9E!-\x94Η\xFAH}\xA4&lt;\x9BJ\x8C-{\xA55\xD2j\xE9Ci\xA9\xB43\xC2\xD3\xCF:\xEB\xAC\xE1Ç\x8F5\xEA\x92K.\xA1\xBF
-'\xB9\xB0\xFC\xEDݻ\xF7\x8D7\xDEx\xED\xB5\xD7\xDEz뭃ï(ބ\xD6\xD2YR\xA9\x9F\xD4S:Gʵ\xA3JG\xEC\x97VI\xEB\xA4O\xA4\xF5\xD2\xE6f&lt;\xFD\xAC]\xBBv#G\x8E5j\xD4\xE0\xC1\x83\xF3\xF2;\xBB\X';v\xEC\xDDw\xDF]\xB4hѢE\x8B6m\xDAd\xED&quot;)\xD2YR\xB1T$u\xF9\xFEOQ\xEC\xCD\xE2:,m\x95\xB6J\x95\xDF\xD8$mn\xDEsM*--&gt;|\xF8\xB0a\xC3.\xBE\xF8⌌ \x83\xA5 b%`\xF9۶m\xDB{キlٲ\xA5K\x97\xAE[\xB7\xAE\xA1\xA1!\xCA \xE6~\x9F\xB4\xBAH\xA5\xF6\xD2i\xD2i\xDFh/%\x9B(\xFB\x84z\xE9+\xE9\xEB\xC0\xAF{\xFC\xE2T\xB3\xA6\x{21D571C}ܳg\xCFA\x83-0ࢋ.*((\x88\xBEl`J,,\xDF|\xF3Ͳe\xCB|a\xEB\xC3?&lt;z\xF4\xA8wi#\xE5J\xED\xA5֒\xA4l)M\xF2H\xBE\xB5\xA12%\xFFN\xA1j\xE9\x98$\xE9\xA0\xE4\x95j$_M\x87\xA4\xAF\xA4*\xE9;J\x94\xB2\xB3\xB3/\xB8\xE0\x82\x810`\xC0\x80\xAD[\xB7\xB6\xE7&gt; Z\xB1\xB0\xFC\xD5\xD5\xD5}\xFA\xE9\xA7~\xF8\xE1\xEAիW\xADZ\xB5nݺ#G\x8E\xB8]\x94\x8DZ\xB5jճgϳ\xCF&gt;\xBBO\x9F&gt;\p\xC19\xE7\x9C\xC3\u\xE2B&lt;\xAC`\xBBv\xEDZ\xBF~\xFD\xBAu\xEB&gt;\xF9\xE4\
 x93\xF5\xEBׯ]\xBB\xB6\xA6\xE6\x94/܋Q\xE9\xE9\xE9\xBDz\xF5\xEAѣG\xBF~\xFD\xFA\xF5\xEB׳g\xCFv\xEDڹ]\xB0&quot;\xBEV#\x87\xAA\xA8\xA8ضm[e \x9B-\xCB\xCA\xCA\xEAҥK\xD1\xF7
- \x8B\x8A\x8AJKKsrbm:&gt;\xB0&quot;\xA1V(\xFB\xF6\x{DAEC}\xACܶm\xDB\xF6\xED۫\xAA\xAA\xF6\xEF\xDF_UU\xF5\xD5W_\xF9\xBE~\xF5\xD5W\xF5\xF5\x96\xE0kBrrr\xFB\xF6\xEDsss۷o\xEF\xFB\x90\x97\x97׾}\xFB3\xCF&lt;ӗ\xA8:t\xE8`\xF0v ִ\x88\x80uJ'–\xAF\xAF\xEBСC\xF5\xF5\xF5uuu\x87\x96t\xF4\xE8Q\xFF\x91\xC7\xF4\xF4\xF4\xAC\xAC,I999)))\xC9\xC9ɾ\xF9\xE6YYY'r\x95K\xFF &amp;\xB0 \xE3\xCDt\x86\xB0 #`F\xC00\x8C\x80` \xC00\x80a,\xC3X\x86\xB0 #`F\xC00\x8C\x80` \xC00\x80a,\xC3X\x86\xB0 #`F\xC00\x8C\x80` \xC00\x80a,\xC3X\x86\xB0 #`F\xC00\x8C\x80` \xC00\x80a,\xC3X\x86\xB0 #`F\xC00\x8C\x80` \xC00\x80a,\xC3X\x86\xB0 #`F\xC00\x8C\x80` \xC00\x80a,\xC3X\x86\xB0 #`F\xC00\x8C\x80` \xC00\x80a,\xC3X\x86\xB0 #`F\xC00\x8C\x80` \xC00\x80a,\xC3X\x86\xB
 0 #`F\xC00\x8C\x80` \xC00\x80a,\xC3X\x86\xB0 #`F\xC00\x8C\x80` \xC00\x80a,\xC3X\x86\xB0 #`F\xC00\x8C\x80` \xC00\x80a,\xC3X\x86\xB0 #`F\xC00\x8C\x80` \xC00\x80a,\xC3X\x86\xB0 #`F\xC00\x8C\x80` \xC00\x80a,\xC3X\x86\xB0 #`F\xC00\x8C\x80` \xC00\x80a,\xC3X\x86\xB0 #`F\xC00\x8C\x80` \xC00\x80a,\xC3X\x86\xB0 #`F\xC00\x8C\x80` \xC00\x80a,\xC3X\x86\xB0 #`F\xC00\x8C\x80` \xC00\x80a,\xC3X\x86\xB0 #`F\xC00\x8C\x80` \xC00\x80a,\xC3X\x86\xB0 #`F\xC00\x8C\x80` \xC00\x80a,\xC3X\x86\xB0 #`F\xC00\x8C\x80` \xC00\x80a,\xC3X\x86\xB0 #`F\xC00\x8C\x80` \xC00\x80a,\xC3X\x86\xB0 #`F\xC00\x8C\x80` \xC
 00\x80a,\xC3X\x86\xB0 #`F\xC00\x8C\x80` \xC00\x80a,\xC3X\x86\xB0 #`F\xC00\x8C\x80` \xC00\x80a,\xC3X\x86\xB0 #`F\xC00\x8C\x80` \xC00\x80a,\xC3X\x86\xB0 #`F\xC00\x8C\x80` \xC00\x80a,\xC3X\x86\xB0 #`F\xC00\x8C\x80` \xC00\x80a,\xC3X\x86\xB0 #`F\xC00\x8C\x80` \xC00\x80a,\xC3X\x86\xB0 #`F\xC00\x8C\x80` \xC00\x80a,\xC3X\x86\xB0 #`F\xC00\x8C\x80` \xC00\x80a,\xC3X\x86\xB0 #`F\xC00\x8C\x80` \xC00\x80a,\xC3X\x86\xB0 #`F\xC00\x8C\x80` \xC00\x80a,\xC3X\x86\xB0 #`F\xC00\x8C\x80` \xC00\x80a,\xC3X\x86\xB0 #`F\xC00\x8C\x80` \xC00\x80a,\xC3X\x86\xB0 #`F\xC00\x8C\x80` \xC00\x80a,\xC3X\x86\xB0 #`
 F\xC00\x8C\x80` \xC00\x80a,\xC3X\x86\xB0 #`F\xC00\x8C\x80` \xC00\x80a,\xC3\xFE?\xA7\x9C\xC8E\xF3RWIEND\xAEB`\x82
</del><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsplatformgtksvgcustomuseondisallowedforeignobject3expectedpng"></a>
<div class="binary"><h4>Deleted: trunk/LayoutTests/platform/gtk/svg/custom/use-on-disallowed-foreign-object-3-expected.png</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<a id="trunkLayoutTestsplatformgtksvgcustomuseondisallowedforeignobject3expectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/platform/gtk/svg/custom/use-on-disallowed-foreign-object-3-expected.txt (179806 => 179807)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/gtk/svg/custom/use-on-disallowed-foreign-object-3-expected.txt        2015-02-08 23:21:02 UTC (rev 179806)
+++ trunk/LayoutTests/platform/gtk/svg/custom/use-on-disallowed-foreign-object-3-expected.txt        2015-02-08 23:22:24 UTC (rev 179807)
</span><span class="lines">@@ -1,10 +0,0 @@
</span><del>-layer at (0,0) size 800x600
-  RenderView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  RenderSVGRoot {svg} at (54,54) size 746x546
-    RenderSVGForeignObject {foreignObject} at (10,10) size 580x380
-      RenderBlock {xhtml:div} at (0,0) size 580x17
-        RenderText {#text} at (0,0) size 244x17
-          text run at (0,0) width 244: &quot;You should only see this string ONCE&quot;
-    RenderSVGContainer {use} at (0,0) size 0x0 [transform={m=((0.71,0.71)(-0.71,0.71)) t=(250.00,-35.86)}]
-    RenderSVGContainer {use} at (0,0) size 0x0 [transform={m=((0.71,0.71)(-0.71,0.71)) t=(250.00,-35.86)}]
</del></span></pre></div>
<a id="trunkLayoutTestsplatformgtksvgcustomuserecursion1expectedpng"></a>
<div class="binary"><h4>Deleted: trunk/LayoutTests/platform/gtk/svg/custom/use-recursion-1-expected.png</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<a id="trunkLayoutTestsplatformgtksvgcustomuserecursion1expectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/platform/gtk/svg/custom/use-recursion-1-expected.txt (179806 => 179807)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/gtk/svg/custom/use-recursion-1-expected.txt        2015-02-08 23:21:02 UTC (rev 179806)
+++ trunk/LayoutTests/platform/gtk/svg/custom/use-recursion-1-expected.txt        2015-02-08 23:22:24 UTC (rev 179807)
</span><span class="lines">@@ -1,12 +0,0 @@
</span><del>-layer at (0,0) size 800x600
-  RenderView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  RenderSVGRoot {svg} at (20,91) size 282x36
-    RenderSVGHiddenContainer {defs} at (0,0) size 0x0
-      RenderSVGContainer {g} at (0,0) size 125x25
-        RenderSVGRect {rect} at (0,0) size 125x25 [stroke={[type=SOLID] [color=#000080] [stroke width=5.00]}] [fill={[type=SOLID] [color=#FF0000]}] [x=0.00] [y=0.00] [width=60.00] [height=10.00]
-        RenderSVGContainer {use} at (0,0) size 0x0
-    RenderSVGText {text} at (10,45) size 141x19 contains 1 chunk(s)
-      RenderSVGInlineText {#text} at (0,0) size 141x18
-        chunk 1 text run 1 at (10.00,60.00) startOffset 0 endOffset 22 width 141.00: &quot;This should not crash.&quot;
-    RenderSVGContainer {use} at (0,0) size 0x0 [transform={m=((1.00,0.00)(0.00,1.00)) t=(25.00,25.00)}]
</del></span></pre></div>
<a id="trunkLayoutTestsplatformgtksvgcustomuserecursion2expectedpng"></a>
<div class="binary"><h4>Deleted: trunk/LayoutTests/platform/gtk/svg/custom/use-recursion-2-expected.png</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<a id="trunkLayoutTestsplatformgtksvgcustomuserecursion2expectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/platform/gtk/svg/custom/use-recursion-2-expected.txt (179806 => 179807)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/gtk/svg/custom/use-recursion-2-expected.txt        2015-02-08 23:21:02 UTC (rev 179806)
+++ trunk/LayoutTests/platform/gtk/svg/custom/use-recursion-2-expected.txt        2015-02-08 23:22:24 UTC (rev 179807)
</span><span class="lines">@@ -1,8 +0,0 @@
</span><del>-layer at (0,0) size 800x600
-  RenderView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  RenderSVGRoot {svg} at (20,91) size 282x36
-    RenderSVGText {text} at (10,45) size 141x19 contains 1 chunk(s)
-      RenderSVGInlineText {#text} at (0,0) size 141x18
-        chunk 1 text run 1 at (10.00,60.00) startOffset 0 endOffset 22 width 141.00: &quot;This should not crash.&quot;
-    RenderSVGContainer {use} at (0,0) size 0x0 [transform={m=((1.00,0.00)(0.00,1.00)) t=(25.00,25.00)}]
</del></span></pre></div>
<a id="trunkLayoutTestsplatformgtksvgcustomuserecursion3expectedpng"></a>
<div class="binary"><h4>Deleted: trunk/LayoutTests/platform/gtk/svg/custom/use-recursion-3-expected.png</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<a id="trunkLayoutTestsplatformgtksvgcustomuserecursion3expectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/platform/gtk/svg/custom/use-recursion-3-expected.txt (179806 => 179807)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/gtk/svg/custom/use-recursion-3-expected.txt        2015-02-08 23:21:02 UTC (rev 179806)
+++ trunk/LayoutTests/platform/gtk/svg/custom/use-recursion-3-expected.txt        2015-02-08 23:22:24 UTC (rev 179807)
</span><span class="lines">@@ -1,12 +0,0 @@
</span><del>-layer at (0,0) size 800x600
-  RenderView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  RenderSVGRoot {svg} at (20,91) size 282x36
-    RenderSVGHiddenContainer {defs} at (0,0) size 0x0
-      RenderSVGContainer {g} at (0,0) size 125x25
-        RenderSVGRect {rect} at (0,0) size 125x25 [stroke={[type=SOLID] [color=#000080] [stroke width=5.00]}] [fill={[type=SOLID] [color=#FF0000]}] [x=0.00] [y=0.00] [width=60.00] [height=10.00]
-        RenderSVGContainer {use} at (0,0) size 0x0
-    RenderSVGText {text} at (10,45) size 141x19 contains 1 chunk(s)
-      RenderSVGInlineText {#text} at (0,0) size 141x18
-        chunk 1 text run 1 at (10.00,60.00) startOffset 0 endOffset 22 width 141.00: &quot;This should not crash.&quot;
-    RenderSVGContainer {use} at (0,0) size 0x0 [transform={m=((1.00,0.00)(0.00,1.00)) t=(25.00,25.00)}]
</del></span></pre></div>
<a id="trunkLayoutTestsplatformgtksvgcustomuserecursion4expectedpng"></a>
<div class="binary"><h4>Deleted: trunk/LayoutTests/platform/gtk/svg/custom/use-recursion-4-expected.png</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<a id="trunkLayoutTestsplatformgtksvgcustomuserecursion4expectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/platform/gtk/svg/custom/use-recursion-4-expected.txt (179806 => 179807)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/gtk/svg/custom/use-recursion-4-expected.txt        2015-02-08 23:21:02 UTC (rev 179806)
+++ trunk/LayoutTests/platform/gtk/svg/custom/use-recursion-4-expected.txt        2015-02-08 23:22:24 UTC (rev 179807)
</span><span class="lines">@@ -1,14 +0,0 @@
</span><del>-layer at (0,0) size 800x600
-  RenderView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  RenderSVGRoot {svg} at (20,91) size 282x36
-    RenderSVGHiddenContainer {defs} at (0,0) size 0x0
-      RenderSVGContainer {g} at (0,0) size 0x0
-        RenderSVGContainer {use} at (0,0) size 0x0
-      RenderSVGContainer {g} at (0,0) size 125x25
-        RenderSVGRect {rect} at (0,0) size 125x25 [stroke={[type=SOLID] [color=#000080] [stroke width=5.00]}] [fill={[type=SOLID] [color=#FF0000]}] [x=0.00] [y=0.00] [width=60.00] [height=10.00]
-        RenderSVGContainer {use} at (0,0) size 0x0
-    RenderSVGText {text} at (10,45) size 141x19 contains 1 chunk(s)
-      RenderSVGInlineText {#text} at (0,0) size 141x18
-        chunk 1 text run 1 at (10.00,60.00) startOffset 0 endOffset 22 width 141.00: &quot;This should not crash.&quot;
-    RenderSVGContainer {use} at (0,0) size 0x0 [transform={m=((1.00,0.00)(0.00,1.00)) t=(25.00,25.00)}]
</del></span></pre></div>
<a id="trunkLayoutTestsplatformgtksvghixieerror017expectedpng"></a>
<div class="binary"><h4>Deleted: trunk/LayoutTests/platform/gtk/svg/hixie/error/017-expected.png</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<a id="trunkLayoutTestsplatformiossimdeprecatedsvgcustomuseondisallowedforeignobject3expectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/platform/ios-sim-deprecated/svg/custom/use-on-disallowed-foreign-object-3-expected.txt (179806 => 179807)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-sim-deprecated/svg/custom/use-on-disallowed-foreign-object-3-expected.txt        2015-02-08 23:21:02 UTC (rev 179806)
+++ trunk/LayoutTests/platform/ios-sim-deprecated/svg/custom/use-on-disallowed-foreign-object-3-expected.txt        2015-02-08 23:22:24 UTC (rev 179807)
</span><span class="lines">@@ -1,10 +0,0 @@
</span><del>-layer at (0,0) size 800x600
-  RenderView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  RenderSVGRoot {svg} at (54,54) size 746x546
-    RenderSVGForeignObject {foreignObject} at (10,10) size 580x380
-      RenderBlock {xhtml:div} at (0,0) size 580x20
-        RenderText {#text} at (0,0) size 247x19
-          text run at (0,0) width 247: &quot;You should only see this string ONCE&quot;
-    RenderSVGContainer {use} at (0,0) size 0x0 [transform={m=((0.71,0.71)(-0.71,0.71)) t=(250.00,-35.86)}]
-    RenderSVGContainer {use} at (0,0) size 0x0 [transform={m=((0.71,0.71)(-0.71,0.71)) t=(250.00,-35.86)}]
</del></span></pre></div>
<a id="trunkLayoutTestsplatformiossimdeprecatedsvgcustomuserecursion1expectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/platform/ios-sim-deprecated/svg/custom/use-recursion-1-expected.txt (179806 => 179807)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-sim-deprecated/svg/custom/use-recursion-1-expected.txt        2015-02-08 23:21:02 UTC (rev 179806)
+++ trunk/LayoutTests/platform/ios-sim-deprecated/svg/custom/use-recursion-1-expected.txt        2015-02-08 23:22:24 UTC (rev 179807)
</span><span class="lines">@@ -1,12 +0,0 @@
</span><del>-layer at (0,0) size 800x600
-  RenderView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  RenderSVGRoot {svg} at (20,91) size 283x36
-    RenderSVGHiddenContainer {defs} at (0,0) size 0x0
-      RenderSVGContainer {g} at (0,0) size 125x25
-        RenderSVGRect {rect} at (0,0) size 125x25 [stroke={[type=SOLID] [color=#000080] [stroke width=5.00]}] [fill={[type=SOLID] [color=#FF0000]}] [x=0.00] [y=0.00] [width=60.00] [height=10.00]
-        RenderSVGContainer {use} at (0,0) size 0x0
-    RenderSVGText {text} at (10,45) size 142x19 contains 1 chunk(s)
-      RenderSVGInlineText {#text} at (0,0) size 142x18
-        chunk 1 text run 1 at (10.00,60.00) startOffset 0 endOffset 22 width 141.32: &quot;This should not crash.&quot;
-    RenderSVGContainer {use} at (0,0) size 0x0 [transform={m=((1.00,0.00)(0.00,1.00)) t=(25.00,25.00)}]
</del></span></pre></div>
<a id="trunkLayoutTestsplatformiossimdeprecatedsvgcustomuserecursion2expectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/platform/ios-sim-deprecated/svg/custom/use-recursion-2-expected.txt (179806 => 179807)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-sim-deprecated/svg/custom/use-recursion-2-expected.txt        2015-02-08 23:21:02 UTC (rev 179806)
+++ trunk/LayoutTests/platform/ios-sim-deprecated/svg/custom/use-recursion-2-expected.txt        2015-02-08 23:22:24 UTC (rev 179807)
</span><span class="lines">@@ -1,8 +0,0 @@
</span><del>-layer at (0,0) size 800x600
-  RenderView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  RenderSVGRoot {svg} at (20,91) size 283x36
-    RenderSVGText {text} at (10,45) size 142x19 contains 1 chunk(s)
-      RenderSVGInlineText {#text} at (0,0) size 142x18
-        chunk 1 text run 1 at (10.00,60.00) startOffset 0 endOffset 22 width 141.32: &quot;This should not crash.&quot;
-    RenderSVGContainer {use} at (0,0) size 0x0 [transform={m=((1.00,0.00)(0.00,1.00)) t=(25.00,25.00)}]
</del></span></pre></div>
<a id="trunkLayoutTestsplatformiossimdeprecatedsvgcustomuserecursion3expectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/platform/ios-sim-deprecated/svg/custom/use-recursion-3-expected.txt (179806 => 179807)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-sim-deprecated/svg/custom/use-recursion-3-expected.txt        2015-02-08 23:21:02 UTC (rev 179806)
+++ trunk/LayoutTests/platform/ios-sim-deprecated/svg/custom/use-recursion-3-expected.txt        2015-02-08 23:22:24 UTC (rev 179807)
</span><span class="lines">@@ -1,12 +0,0 @@
</span><del>-layer at (0,0) size 800x600
-  RenderView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  RenderSVGRoot {svg} at (20,91) size 283x36
-    RenderSVGHiddenContainer {defs} at (0,0) size 0x0
-      RenderSVGContainer {g} at (0,0) size 125x25
-        RenderSVGRect {rect} at (0,0) size 125x25 [stroke={[type=SOLID] [color=#000080] [stroke width=5.00]}] [fill={[type=SOLID] [color=#FF0000]}] [x=0.00] [y=0.00] [width=60.00] [height=10.00]
-        RenderSVGContainer {use} at (0,0) size 0x0
-    RenderSVGText {text} at (10,45) size 142x19 contains 1 chunk(s)
-      RenderSVGInlineText {#text} at (0,0) size 142x18
-        chunk 1 text run 1 at (10.00,60.00) startOffset 0 endOffset 22 width 141.32: &quot;This should not crash.&quot;
-    RenderSVGContainer {use} at (0,0) size 0x0 [transform={m=((1.00,0.00)(0.00,1.00)) t=(25.00,25.00)}]
</del></span></pre></div>
<a id="trunkLayoutTestsplatformiossimdeprecatedsvgcustomuserecursion4expectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/platform/ios-sim-deprecated/svg/custom/use-recursion-4-expected.txt (179806 => 179807)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-sim-deprecated/svg/custom/use-recursion-4-expected.txt        2015-02-08 23:21:02 UTC (rev 179806)
+++ trunk/LayoutTests/platform/ios-sim-deprecated/svg/custom/use-recursion-4-expected.txt        2015-02-08 23:22:24 UTC (rev 179807)
</span><span class="lines">@@ -1,14 +0,0 @@
</span><del>-layer at (0,0) size 800x600
-  RenderView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  RenderSVGRoot {svg} at (20,91) size 283x36
-    RenderSVGHiddenContainer {defs} at (0,0) size 0x0
-      RenderSVGContainer {g} at (0,0) size 0x0
-        RenderSVGContainer {use} at (0,0) size 0x0
-      RenderSVGContainer {g} at (0,0) size 125x25
-        RenderSVGRect {rect} at (0,0) size 125x25 [stroke={[type=SOLID] [color=#000080] [stroke width=5.00]}] [fill={[type=SOLID] [color=#FF0000]}] [x=0.00] [y=0.00] [width=60.00] [height=10.00]
-        RenderSVGContainer {use} at (0,0) size 0x0
-    RenderSVGText {text} at (10,45) size 142x19 contains 1 chunk(s)
-      RenderSVGInlineText {#text} at (0,0) size 142x18
-        chunk 1 text run 1 at (10.00,60.00) startOffset 0 endOffset 22 width 141.32: &quot;This should not crash.&quot;
-    RenderSVGContainer {use} at (0,0) size 0x0 [transform={m=((1.00,0.00)(0.00,1.00)) t=(25.00,25.00)}]
</del></span></pre></div>
<a id="trunkLayoutTestsplatformiossimdeprecatedsvghixieerror017expectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/platform/ios-sim-deprecated/svg/hixie/error/017-expected.txt (179806 => 179807)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-sim-deprecated/svg/hixie/error/017-expected.txt        2015-02-08 23:21:02 UTC (rev 179806)
+++ trunk/LayoutTests/platform/ios-sim-deprecated/svg/hixie/error/017-expected.txt        2015-02-08 23:22:24 UTC (rev 179807)
</span><span class="lines">@@ -1,20 +0,0 @@
</span><del>-layer at (0,0) size 800x600
-  RenderView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  RenderSVGRoot {svg} at (0,0) size 475x303
-    RenderSVGHiddenContainer {defs} at (0,0) size 0x0
-      RenderSVGContainer {g} at (0,0) size 0x0
-        RenderSVGContainer {use} at (0,0) size 0x0
-      RenderSVGContainer {g} at (0,0) size 0x0
-        RenderSVGContainer {use} at (0,0) size 0x0
-      RenderSVGContainer {g} at (0,0) size 0x0
-        RenderSVGContainer {use} at (0,0) size 0x0
-    RenderSVGContainer {g} at (0,0) size 0x0
-      RenderSVGContainer {use} at (0,0) size 0x0
-    RenderSVGText {text} at (20,41) size 445x223 contains 1 chunk(s)
-      RenderSVGInlineText {#text} at (0,0) size 445x222
-        chunk 1 text run 1 at (20.00,220.00) startOffset 0 endOffset 4 width 444.43: &quot;FAIL&quot;
-    RenderSVGEllipse {circle} at (0,0) size 303x303 [stroke={[type=SOLID] [color=#000000] [stroke width=5.00]}] [fill={[type=SOLID] [color=#FF0000]}] [cx=100.00] [cy=100.00] [r=200.00]
-    RenderSVGText {text} at (20,41) size 445x223 contains 1 chunk(s)
-      RenderSVGInlineText {#text} at (0,0) size 445x222
-        chunk 1 text run 1 at (20.00,220.00) startOffset 0 endOffset 4 width 444.43: &quot;FAIL&quot;
</del></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatorsvgcustomuseondisallowedforeignobject3expectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/platform/ios-simulator/svg/custom/use-on-disallowed-foreign-object-3-expected.txt (179806 => 179807)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/svg/custom/use-on-disallowed-foreign-object-3-expected.txt        2015-02-08 23:21:02 UTC (rev 179806)
+++ trunk/LayoutTests/platform/ios-simulator/svg/custom/use-on-disallowed-foreign-object-3-expected.txt        2015-02-08 23:22:24 UTC (rev 179807)
</span><span class="lines">@@ -1,10 +0,0 @@
</span><del>-layer at (0,0) size 800x600
-  RenderView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  RenderSVGRoot {svg} at (54,54) size 746x546
-    RenderSVGForeignObject {foreignObject} at (10,10) size 580x380
-      RenderBlock {xhtml:div} at (0,0) size 580x20
-        RenderText {#text} at (0,0) size 247x19
-          text run at (0,0) width 247: &quot;You should only see this string ONCE&quot;
-    RenderSVGContainer {use} at (0,0) size 0x0 [transform={m=((0.71,0.71)(-0.71,0.71)) t=(250.00,-35.86)}]
-    RenderSVGContainer {use} at (0,0) size 0x0 [transform={m=((0.71,0.71)(-0.71,0.71)) t=(250.00,-35.86)}]
</del></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatorsvgcustomuserecursion1expectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/platform/ios-simulator/svg/custom/use-recursion-1-expected.txt (179806 => 179807)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/svg/custom/use-recursion-1-expected.txt        2015-02-08 23:21:02 UTC (rev 179806)
+++ trunk/LayoutTests/platform/ios-simulator/svg/custom/use-recursion-1-expected.txt        2015-02-08 23:22:24 UTC (rev 179807)
</span><span class="lines">@@ -1,12 +0,0 @@
</span><del>-layer at (0,0) size 800x600
-  RenderView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  RenderSVGRoot {svg} at (20,91) size 283x36
-    RenderSVGHiddenContainer {defs} at (0,0) size 0x0
-      RenderSVGContainer {g} at (0,0) size 125x25
-        RenderSVGRect {rect} at (0,0) size 125x25 [stroke={[type=SOLID] [color=#000080] [stroke width=5.00]}] [fill={[type=SOLID] [color=#FF0000]}] [x=0.00] [y=0.00] [width=60.00] [height=10.00]
-        RenderSVGContainer {use} at (0,0) size 0x0
-    RenderSVGText {text} at (10,45) size 142x19 contains 1 chunk(s)
-      RenderSVGInlineText {#text} at (0,0) size 142x18
-        chunk 1 text run 1 at (10.00,60.00) startOffset 0 endOffset 22 width 141.32: &quot;This should not crash.&quot;
-    RenderSVGContainer {use} at (0,0) size 0x0 [transform={m=((1.00,0.00)(0.00,1.00)) t=(25.00,25.00)}]
</del></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatorsvgcustomuserecursion2expectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/platform/ios-simulator/svg/custom/use-recursion-2-expected.txt (179806 => 179807)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/svg/custom/use-recursion-2-expected.txt        2015-02-08 23:21:02 UTC (rev 179806)
+++ trunk/LayoutTests/platform/ios-simulator/svg/custom/use-recursion-2-expected.txt        2015-02-08 23:22:24 UTC (rev 179807)
</span><span class="lines">@@ -1,8 +0,0 @@
</span><del>-layer at (0,0) size 800x600
-  RenderView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  RenderSVGRoot {svg} at (20,91) size 283x36
-    RenderSVGText {text} at (10,45) size 142x19 contains 1 chunk(s)
-      RenderSVGInlineText {#text} at (0,0) size 142x18
-        chunk 1 text run 1 at (10.00,60.00) startOffset 0 endOffset 22 width 141.32: &quot;This should not crash.&quot;
-    RenderSVGContainer {use} at (0,0) size 0x0 [transform={m=((1.00,0.00)(0.00,1.00)) t=(25.00,25.00)}]
</del></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatorsvgcustomuserecursion3expectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/platform/ios-simulator/svg/custom/use-recursion-3-expected.txt (179806 => 179807)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/svg/custom/use-recursion-3-expected.txt        2015-02-08 23:21:02 UTC (rev 179806)
+++ trunk/LayoutTests/platform/ios-simulator/svg/custom/use-recursion-3-expected.txt        2015-02-08 23:22:24 UTC (rev 179807)
</span><span class="lines">@@ -1,12 +0,0 @@
</span><del>-layer at (0,0) size 800x600
-  RenderView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  RenderSVGRoot {svg} at (20,91) size 283x36
-    RenderSVGHiddenContainer {defs} at (0,0) size 0x0
-      RenderSVGContainer {g} at (0,0) size 125x25
-        RenderSVGRect {rect} at (0,0) size 125x25 [stroke={[type=SOLID] [color=#000080] [stroke width=5.00]}] [fill={[type=SOLID] [color=#FF0000]}] [x=0.00] [y=0.00] [width=60.00] [height=10.00]
-        RenderSVGContainer {use} at (0,0) size 0x0
-    RenderSVGText {text} at (10,45) size 142x19 contains 1 chunk(s)
-      RenderSVGInlineText {#text} at (0,0) size 142x18
-        chunk 1 text run 1 at (10.00,60.00) startOffset 0 endOffset 22 width 141.32: &quot;This should not crash.&quot;
-    RenderSVGContainer {use} at (0,0) size 0x0 [transform={m=((1.00,0.00)(0.00,1.00)) t=(25.00,25.00)}]
</del></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatorsvgcustomuserecursion4expectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/platform/ios-simulator/svg/custom/use-recursion-4-expected.txt (179806 => 179807)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/svg/custom/use-recursion-4-expected.txt        2015-02-08 23:21:02 UTC (rev 179806)
+++ trunk/LayoutTests/platform/ios-simulator/svg/custom/use-recursion-4-expected.txt        2015-02-08 23:22:24 UTC (rev 179807)
</span><span class="lines">@@ -1,14 +0,0 @@
</span><del>-layer at (0,0) size 800x600
-  RenderView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  RenderSVGRoot {svg} at (20,91) size 283x36
-    RenderSVGHiddenContainer {defs} at (0,0) size 0x0
-      RenderSVGContainer {g} at (0,0) size 0x0
-        RenderSVGContainer {use} at (0,0) size 0x0
-      RenderSVGContainer {g} at (0,0) size 125x25
-        RenderSVGRect {rect} at (0,0) size 125x25 [stroke={[type=SOLID] [color=#000080] [stroke width=5.00]}] [fill={[type=SOLID] [color=#FF0000]}] [x=0.00] [y=0.00] [width=60.00] [height=10.00]
-        RenderSVGContainer {use} at (0,0) size 0x0
-    RenderSVGText {text} at (10,45) size 142x19 contains 1 chunk(s)
-      RenderSVGInlineText {#text} at (0,0) size 142x18
-        chunk 1 text run 1 at (10.00,60.00) startOffset 0 endOffset 22 width 141.32: &quot;This should not crash.&quot;
-    RenderSVGContainer {use} at (0,0) size 0x0 [transform={m=((1.00,0.00)(0.00,1.00)) t=(25.00,25.00)}]
</del></span></pre></div>
<a id="trunkLayoutTestsplatformmacsvgcustomuseondisallowedforeignobject3expectedpng"></a>
<div class="binary"><h4>Deleted: trunk/LayoutTests/platform/mac/svg/custom/use-on-disallowed-foreign-object-3-expected.png</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacsvgcustomuseondisallowedforeignobject3expectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/platform/mac/svg/custom/use-on-disallowed-foreign-object-3-expected.txt (179806 => 179807)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac/svg/custom/use-on-disallowed-foreign-object-3-expected.txt        2015-02-08 23:21:02 UTC (rev 179806)
+++ trunk/LayoutTests/platform/mac/svg/custom/use-on-disallowed-foreign-object-3-expected.txt        2015-02-08 23:22:24 UTC (rev 179807)
</span><span class="lines">@@ -1,10 +0,0 @@
</span><del>-layer at (0,0) size 800x600
-  RenderView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  RenderSVGRoot {svg} at (54,54) size 746x546
-    RenderSVGForeignObject {foreignObject} at (10,10) size 580x380
-      RenderBlock {xhtml:div} at (0,0) size 580x18
-        RenderText {#text} at (0,0) size 245x18
-          text run at (0,0) width 245: &quot;You should only see this string ONCE&quot;
-    RenderSVGContainer {use} at (0,0) size 0x0 [transform={m=((0.71,0.71)(-0.71,0.71)) t=(250.00,-35.86)}]
-    RenderSVGContainer {use} at (0,0) size 0x0 [transform={m=((0.71,0.71)(-0.71,0.71)) t=(250.00,-35.86)}]
</del></span></pre></div>
<a id="trunkLayoutTestsplatformmacsvgcustomuserecursion1expectedpng"></a>
<div class="binary"><h4>Deleted: trunk/LayoutTests/platform/mac/svg/custom/use-recursion-1-expected.png</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacsvgcustomuserecursion1expectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/platform/mac/svg/custom/use-recursion-1-expected.txt (179806 => 179807)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac/svg/custom/use-recursion-1-expected.txt        2015-02-08 23:21:02 UTC (rev 179806)
+++ trunk/LayoutTests/platform/mac/svg/custom/use-recursion-1-expected.txt        2015-02-08 23:22:24 UTC (rev 179807)
</span><span class="lines">@@ -1,12 +0,0 @@
</span><del>-layer at (0,0) size 800x600
-  RenderView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  RenderSVGRoot {svg} at (20,91) size 283x37
-    RenderSVGHiddenContainer {defs} at (0,0) size 0x0
-      RenderSVGContainer {g} at (0,0) size 125x25
-        RenderSVGRect {rect} at (0,0) size 125x25 [stroke={[type=SOLID] [color=#000080] [stroke width=5.00]}] [fill={[type=SOLID] [color=#FF0000]}] [x=0.00] [y=0.00] [width=60.00] [height=10.00]
-        RenderSVGContainer {use} at (0,0) size 0x0
-    RenderSVGText {text} at (10,45) size 142x19 contains 1 chunk(s)
-      RenderSVGInlineText {#text} at (0,0) size 142x19
-        chunk 1 text run 1 at (10.00,60.00) startOffset 0 endOffset 22 width 141.32: &quot;This should not crash.&quot;
-    RenderSVGContainer {use} at (0,0) size 0x0 [transform={m=((1.00,0.00)(0.00,1.00)) t=(25.00,25.00)}]
</del></span></pre></div>
<a id="trunkLayoutTestsplatformmacsvgcustomuserecursion2expectedpng"></a>
<div class="binary"><h4>Deleted: trunk/LayoutTests/platform/mac/svg/custom/use-recursion-2-expected.png</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacsvgcustomuserecursion2expectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/platform/mac/svg/custom/use-recursion-2-expected.txt (179806 => 179807)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac/svg/custom/use-recursion-2-expected.txt        2015-02-08 23:21:02 UTC (rev 179806)
+++ trunk/LayoutTests/platform/mac/svg/custom/use-recursion-2-expected.txt        2015-02-08 23:22:24 UTC (rev 179807)
</span><span class="lines">@@ -1,8 +0,0 @@
</span><del>-layer at (0,0) size 800x600
-  RenderView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  RenderSVGRoot {svg} at (20,91) size 283x37
-    RenderSVGText {text} at (10,45) size 142x19 contains 1 chunk(s)
-      RenderSVGInlineText {#text} at (0,0) size 142x19
-        chunk 1 text run 1 at (10.00,60.00) startOffset 0 endOffset 22 width 141.32: &quot;This should not crash.&quot;
-    RenderSVGContainer {use} at (0,0) size 0x0 [transform={m=((1.00,0.00)(0.00,1.00)) t=(25.00,25.00)}]
</del></span></pre></div>
<a id="trunkLayoutTestsplatformmacsvgcustomuserecursion3expectedpng"></a>
<div class="binary"><h4>Deleted: trunk/LayoutTests/platform/mac/svg/custom/use-recursion-3-expected.png</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacsvgcustomuserecursion3expectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/platform/mac/svg/custom/use-recursion-3-expected.txt (179806 => 179807)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac/svg/custom/use-recursion-3-expected.txt        2015-02-08 23:21:02 UTC (rev 179806)
+++ trunk/LayoutTests/platform/mac/svg/custom/use-recursion-3-expected.txt        2015-02-08 23:22:24 UTC (rev 179807)
</span><span class="lines">@@ -1,12 +0,0 @@
</span><del>-layer at (0,0) size 800x600
-  RenderView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  RenderSVGRoot {svg} at (20,91) size 283x37
-    RenderSVGHiddenContainer {defs} at (0,0) size 0x0
-      RenderSVGContainer {g} at (0,0) size 125x25
-        RenderSVGRect {rect} at (0,0) size 125x25 [stroke={[type=SOLID] [color=#000080] [stroke width=5.00]}] [fill={[type=SOLID] [color=#FF0000]}] [x=0.00] [y=0.00] [width=60.00] [height=10.00]
-        RenderSVGContainer {use} at (0,0) size 0x0
-    RenderSVGText {text} at (10,45) size 142x19 contains 1 chunk(s)
-      RenderSVGInlineText {#text} at (0,0) size 142x19
-        chunk 1 text run 1 at (10.00,60.00) startOffset 0 endOffset 22 width 141.32: &quot;This should not crash.&quot;
-    RenderSVGContainer {use} at (0,0) size 0x0 [transform={m=((1.00,0.00)(0.00,1.00)) t=(25.00,25.00)}]
</del></span></pre></div>
<a id="trunkLayoutTestsplatformmacsvgcustomuserecursion4expectedpng"></a>
<div class="binary"><h4>Deleted: trunk/LayoutTests/platform/mac/svg/custom/use-recursion-4-expected.png</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacsvgcustomuserecursion4expectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/platform/mac/svg/custom/use-recursion-4-expected.txt (179806 => 179807)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac/svg/custom/use-recursion-4-expected.txt        2015-02-08 23:21:02 UTC (rev 179806)
+++ trunk/LayoutTests/platform/mac/svg/custom/use-recursion-4-expected.txt        2015-02-08 23:22:24 UTC (rev 179807)
</span><span class="lines">@@ -1,14 +0,0 @@
</span><del>-layer at (0,0) size 800x600
-  RenderView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  RenderSVGRoot {svg} at (20,91) size 283x37
-    RenderSVGHiddenContainer {defs} at (0,0) size 0x0
-      RenderSVGContainer {g} at (0,0) size 0x0
-        RenderSVGContainer {use} at (0,0) size 0x0
-      RenderSVGContainer {g} at (0,0) size 125x25
-        RenderSVGRect {rect} at (0,0) size 125x25 [stroke={[type=SOLID] [color=#000080] [stroke width=5.00]}] [fill={[type=SOLID] [color=#FF0000]}] [x=0.00] [y=0.00] [width=60.00] [height=10.00]
-        RenderSVGContainer {use} at (0,0) size 0x0
-    RenderSVGText {text} at (10,45) size 142x19 contains 1 chunk(s)
-      RenderSVGInlineText {#text} at (0,0) size 142x19
-        chunk 1 text run 1 at (10.00,60.00) startOffset 0 endOffset 22 width 141.32: &quot;This should not crash.&quot;
-    RenderSVGContainer {use} at (0,0) size 0x0 [transform={m=((1.00,0.00)(0.00,1.00)) t=(25.00,25.00)}]
</del></span></pre></div>
<a id="trunkLayoutTestsplatformmacsvghixieerror017expectedpng"></a>
<div class="binary"><h4>Deleted: trunk/LayoutTests/platform/mac/svg/hixie/error/017-expected.png</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacsvghixieerror017expectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/platform/mac/svg/hixie/error/017-expected.txt (179806 => 179807)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac/svg/hixie/error/017-expected.txt        2015-02-08 23:21:02 UTC (rev 179806)
+++ trunk/LayoutTests/platform/mac/svg/hixie/error/017-expected.txt        2015-02-08 23:22:24 UTC (rev 179807)
</span><span class="lines">@@ -1,20 +0,0 @@
</span><del>-layer at (0,0) size 800x600
-  RenderView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  RenderSVGRoot {svg} at (0,0) size 475x303
-    RenderSVGHiddenContainer {defs} at (0,0) size 0x0
-      RenderSVGContainer {g} at (0,0) size 0x0
-        RenderSVGContainer {use} at (0,0) size 0x0
-      RenderSVGContainer {g} at (0,0) size 0x0
-        RenderSVGContainer {use} at (0,0) size 0x0
-      RenderSVGContainer {g} at (0,0) size 0x0
-        RenderSVGContainer {use} at (0,0) size 0x0
-    RenderSVGContainer {g} at (0,0) size 0x0
-      RenderSVGContainer {use} at (0,0) size 0x0
-    RenderSVGText {text} at (20,40) size 445x230 contains 1 chunk(s)
-      RenderSVGInlineText {#text} at (0,0) size 445x230
-        chunk 1 text run 1 at (20.00,220.00) startOffset 0 endOffset 4 width 444.43: &quot;FAIL&quot;
-    RenderSVGEllipse {circle} at (0,0) size 303x303 [stroke={[type=SOLID] [color=#000000] [stroke width=5.00]}] [fill={[type=SOLID] [color=#FF0000]}] [cx=100.00] [cy=100.00] [r=200.00]
-    RenderSVGText {text} at (20,40) size 445x230 contains 1 chunk(s)
-      RenderSVGInlineText {#text} at (0,0) size 445x230
-        chunk 1 text run 1 at (20.00,220.00) startOffset 0 endOffset 4 width 444.43: &quot;FAIL&quot;
</del></span></pre></div>
<a id="trunkLayoutTestsplatformmacmountainlionsvgcustomuseondisallowedforeignobject3expectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/platform/mac-mountainlion/svg/custom/use-on-disallowed-foreign-object-3-expected.txt (179806 => 179807)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac-mountainlion/svg/custom/use-on-disallowed-foreign-object-3-expected.txt        2015-02-08 23:21:02 UTC (rev 179806)
+++ trunk/LayoutTests/platform/mac-mountainlion/svg/custom/use-on-disallowed-foreign-object-3-expected.txt        2015-02-08 23:22:24 UTC (rev 179807)
</span><span class="lines">@@ -1,10 +0,0 @@
</span><del>-layer at (0,0) size 800x600
-  RenderView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  RenderSVGRoot {svg} at (54,54) size 746x546
-    RenderSVGForeignObject {foreignObject} at (10,10) size 580x380
-      RenderBlock {xhtml:div} at (0,0) size 580x18
-        RenderText {#text} at (0,0) size 244x18
-          text run at (0,0) width 244: &quot;You should only see this string ONCE&quot;
-    RenderSVGContainer {use} at (0,0) size 0x0 [transform={m=((0.71,0.71)(-0.71,0.71)) t=(250.00,-35.86)}]
-    RenderSVGContainer {use} at (0,0) size 0x0 [transform={m=((0.71,0.71)(-0.71,0.71)) t=(250.00,-35.86)}]
</del></span></pre></div>
<a id="trunkLayoutTestsplatformmacmountainlionsvgcustomuserecursion1expectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/platform/mac-mountainlion/svg/custom/use-recursion-1-expected.txt (179806 => 179807)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac-mountainlion/svg/custom/use-recursion-1-expected.txt        2015-02-08 23:21:02 UTC (rev 179806)
+++ trunk/LayoutTests/platform/mac-mountainlion/svg/custom/use-recursion-1-expected.txt        2015-02-08 23:22:24 UTC (rev 179807)
</span><span class="lines">@@ -1,12 +0,0 @@
</span><del>-layer at (0,0) size 800x600
-  RenderView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  RenderSVGRoot {svg} at (20,91) size 282x37
-    RenderSVGHiddenContainer {defs} at (0,0) size 0x0
-      RenderSVGContainer {g} at (0,0) size 125x25
-        RenderSVGRect {rect} at (0,0) size 125x25 [stroke={[type=SOLID] [color=#000080] [stroke width=5.00]}] [fill={[type=SOLID] [color=#FF0000]}] [x=0.00] [y=0.00] [width=60.00] [height=10.00]
-        RenderSVGContainer {use} at (0,0) size 0x0
-    RenderSVGText {text} at (10,45) size 141x19 contains 1 chunk(s)
-      RenderSVGInlineText {#text} at (0,0) size 141x19
-        chunk 1 text run 1 at (10.00,60.00) startOffset 0 endOffset 22 width 141.00: &quot;This should not crash.&quot;
-    RenderSVGContainer {use} at (0,0) size 0x0 [transform={m=((1.00,0.00)(0.00,1.00)) t=(25.00,25.00)}]
</del></span></pre></div>
<a id="trunkLayoutTestsplatformmacmountainlionsvgcustomuserecursion2expectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/platform/mac-mountainlion/svg/custom/use-recursion-2-expected.txt (179806 => 179807)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac-mountainlion/svg/custom/use-recursion-2-expected.txt        2015-02-08 23:21:02 UTC (rev 179806)
+++ trunk/LayoutTests/platform/mac-mountainlion/svg/custom/use-recursion-2-expected.txt        2015-02-08 23:22:24 UTC (rev 179807)
</span><span class="lines">@@ -1,8 +0,0 @@
</span><del>-layer at (0,0) size 800x600
-  RenderView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  RenderSVGRoot {svg} at (20,91) size 282x37
-    RenderSVGText {text} at (10,45) size 141x19 contains 1 chunk(s)
-      RenderSVGInlineText {#text} at (0,0) size 141x19
-        chunk 1 text run 1 at (10.00,60.00) startOffset 0 endOffset 22 width 141.00: &quot;This should not crash.&quot;
-    RenderSVGContainer {use} at (0,0) size 0x0 [transform={m=((1.00,0.00)(0.00,1.00)) t=(25.00,25.00)}]
</del></span></pre></div>
<a id="trunkLayoutTestsplatformmacmountainlionsvgcustomuserecursion3expectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/platform/mac-mountainlion/svg/custom/use-recursion-3-expected.txt (179806 => 179807)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac-mountainlion/svg/custom/use-recursion-3-expected.txt        2015-02-08 23:21:02 UTC (rev 179806)
+++ trunk/LayoutTests/platform/mac-mountainlion/svg/custom/use-recursion-3-expected.txt        2015-02-08 23:22:24 UTC (rev 179807)
</span><span class="lines">@@ -1,12 +0,0 @@
</span><del>-layer at (0,0) size 800x600
-  RenderView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  RenderSVGRoot {svg} at (20,91) size 282x37
-    RenderSVGHiddenContainer {defs} at (0,0) size 0x0
-      RenderSVGContainer {g} at (0,0) size 125x25
-        RenderSVGRect {rect} at (0,0) size 125x25 [stroke={[type=SOLID] [color=#000080] [stroke width=5.00]}] [fill={[type=SOLID] [color=#FF0000]}] [x=0.00] [y=0.00] [width=60.00] [height=10.00]
-        RenderSVGContainer {use} at (0,0) size 0x0
-    RenderSVGText {text} at (10,45) size 141x19 contains 1 chunk(s)
-      RenderSVGInlineText {#text} at (0,0) size 141x19
-        chunk 1 text run 1 at (10.00,60.00) startOffset 0 endOffset 22 width 141.00: &quot;This should not crash.&quot;
-    RenderSVGContainer {use} at (0,0) size 0x0 [transform={m=((1.00,0.00)(0.00,1.00)) t=(25.00,25.00)}]
</del></span></pre></div>
<a id="trunkLayoutTestsplatformmacmountainlionsvgcustomuserecursion4expectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/platform/mac-mountainlion/svg/custom/use-recursion-4-expected.txt (179806 => 179807)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac-mountainlion/svg/custom/use-recursion-4-expected.txt        2015-02-08 23:21:02 UTC (rev 179806)
+++ trunk/LayoutTests/platform/mac-mountainlion/svg/custom/use-recursion-4-expected.txt        2015-02-08 23:22:24 UTC (rev 179807)
</span><span class="lines">@@ -1,14 +0,0 @@
</span><del>-layer at (0,0) size 800x600
-  RenderView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  RenderSVGRoot {svg} at (20,91) size 282x37
-    RenderSVGHiddenContainer {defs} at (0,0) size 0x0
-      RenderSVGContainer {g} at (0,0) size 0x0
-        RenderSVGContainer {use} at (0,0) size 0x0
-      RenderSVGContainer {g} at (0,0) size 125x25
-        RenderSVGRect {rect} at (0,0) size 125x25 [stroke={[type=SOLID] [color=#000080] [stroke width=5.00]}] [fill={[type=SOLID] [color=#FF0000]}] [x=0.00] [y=0.00] [width=60.00] [height=10.00]
-        RenderSVGContainer {use} at (0,0) size 0x0
-    RenderSVGText {text} at (10,45) size 141x19 contains 1 chunk(s)
-      RenderSVGInlineText {#text} at (0,0) size 141x19
-        chunk 1 text run 1 at (10.00,60.00) startOffset 0 endOffset 22 width 141.00: &quot;This should not crash.&quot;
-    RenderSVGContainer {use} at (0,0) size 0x0 [transform={m=((1.00,0.00)(0.00,1.00)) t=(25.00,25.00)}]
</del></span></pre></div>
<a id="trunkLayoutTestsplatformmacmountainlionsvghixieerror017expectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/platform/mac-mountainlion/svg/hixie/error/017-expected.txt (179806 => 179807)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac-mountainlion/svg/hixie/error/017-expected.txt        2015-02-08 23:21:02 UTC (rev 179806)
+++ trunk/LayoutTests/platform/mac-mountainlion/svg/hixie/error/017-expected.txt        2015-02-08 23:22:24 UTC (rev 179807)
</span><span class="lines">@@ -1,20 +0,0 @@
</span><del>-layer at (0,0) size 800x600
-  RenderView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  RenderSVGRoot {svg} at (0,0) size 474x303
-    RenderSVGHiddenContainer {defs} at (0,0) size 0x0
-      RenderSVGContainer {g} at (0,0) size 0x0
-        RenderSVGContainer {use} at (0,0) size 0x0
-      RenderSVGContainer {g} at (0,0) size 0x0
-        RenderSVGContainer {use} at (0,0) size 0x0
-      RenderSVGContainer {g} at (0,0) size 0x0
-        RenderSVGContainer {use} at (0,0) size 0x0
-    RenderSVGContainer {g} at (0,0) size 0x0
-      RenderSVGContainer {use} at (0,0) size 0x0
-    RenderSVGText {text} at (20,40) size 444x230 contains 1 chunk(s)
-      RenderSVGInlineText {#text} at (0,0) size 444x230
-        chunk 1 text run 1 at (20.00,220.00) startOffset 0 endOffset 4 width 444.00: &quot;FAIL&quot;
-    RenderSVGEllipse {circle} at (0,0) size 303x303 [stroke={[type=SOLID] [color=#000000] [stroke width=5.00]}] [fill={[type=SOLID] [color=#FF0000]}] [cx=100.00] [cy=100.00] [r=200.00]
-    RenderSVGText {text} at (20,40) size 444x230 contains 1 chunk(s)
-      RenderSVGInlineText {#text} at (0,0) size 444x230
-        chunk 1 text run 1 at (20.00,220.00) startOffset 0 endOffset 4 width 444.00: &quot;FAIL&quot;
</del></span></pre></div>
<a id="trunkLayoutTestssvgW3CSVG12Tinystructuserecursion01texpectedsvg"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-01-t-expected.svg (0 => 179807)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-01-t-expected.svg                                (rev 0)
+++ trunk/LayoutTests/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-01-t-expected.svg        2015-02-08 23:22:24 UTC (rev 179807)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+&lt;svg viewBox=&quot;0 0 480 360&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot;&gt;
+  &lt;circle cx=&quot;100&quot; cy=&quot;25&quot; r=&quot;10&quot; fill=&quot;#FF7F00&quot;/&gt;
+  &lt;circle cx=&quot;100&quot; cy=&quot;50&quot; r=&quot;10&quot; fill=&quot;#FF7F00&quot; stroke=&quot;gray&quot; stroke-width=&quot;2&quot; stroke-dasharray=&quot;4&quot; stroke-linecap=&quot;round&quot;/&gt;
+  &lt;circle cx=&quot;100&quot; cy=&quot;75&quot; r=&quot;10&quot; fill=&quot;#FF7F00&quot; stroke=&quot;gray&quot; stroke-width=&quot;2&quot; stroke-dasharray=&quot;4&quot; stroke-linecap=&quot;round&quot;/&gt;
+  &lt;circle cx=&quot;380&quot; cy=&quot;25&quot; r=&quot;10&quot; fill=&quot;yellow&quot;/&gt;
+  &lt;circle cx=&quot;380&quot; cy=&quot;50&quot; r=&quot;10&quot; fill=&quot;yellow&quot; stroke=&quot;gray&quot; stroke-width=&quot;2&quot; stroke-dasharray=&quot;4&quot; stroke-linecap=&quot;round&quot;/&gt;
+  &lt;circle cx=&quot;380&quot; cy=&quot;75&quot; r=&quot;10&quot; fill=&quot;yellow&quot; stroke=&quot;gray&quot; stroke-width=&quot;2&quot; stroke-dasharray=&quot;4&quot; stroke-linecap=&quot;round&quot;/&gt;
+  &lt;text x=&quot;240&quot; y=&quot;280&quot; text-anchor=&quot;middle&quot; fill=&quot;green&quot; font-family=&quot;sans-serif&quot; font-size=&quot;24&quot;&gt;This text should be visible.&lt;/text&gt;
+  &lt;text x=&quot;10&quot; y=&quot;340&quot; font-family=&quot;sans-serif&quot; font-size=&quot;32&quot;&gt;$Revision: 1.5 $&lt;/text&gt;
+  &lt;rect x=&quot;1&quot; y=&quot;1&quot; width=&quot;478&quot; height=&quot;358&quot; fill=&quot;none&quot; stroke=&quot;black&quot;/&gt;
+&lt;/svg&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestssvgW3CSVG12Tinystructuserecursion01texpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-01-t-expected.txt (179806 => 179807)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-01-t-expected.txt        2015-02-08 23:21:02 UTC (rev 179806)
+++ trunk/LayoutTests/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-01-t-expected.txt        2015-02-08 23:22:24 UTC (rev 179807)
</span><span class="lines">@@ -1,20 +0,0 @@
</span><del>-layer at (0,0) size 800x600
-  RenderView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  RenderSVGRoot {svg} at (0,0) size 800x600
-    RenderSVGHiddenContainer {defs} at (0,0) size 0x0
-    RenderSVGContainer {g} at (150,25) size 500x450
-      RenderSVGContainer {g} at (150,25) size 34x34
-        RenderSVGEllipse {circle} at (150,25) size 34x34 [fill={[type=SOLID] [color=#FF7F00]}] [cx=100.00] [cy=25.00] [r=10.00]
-        RenderSVGContainer {use} at (0,0) size 0x0 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,25.00)}]
-      RenderSVGContainer {g} at (616,25) size 34x34
-        RenderSVGEllipse {circle} at (616,25) size 34x34 [fill={[type=SOLID] [color=#FFFF00]}] [cx=380.00] [cy=25.00] [r=10.00]
-        RenderSVGContainer {use} at (0,0) size 0x0 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,25.00)}]
-      RenderSVGText {text} at (100,258) size 280x27 contains 1 chunk(s)
-        RenderSVGInlineText {#text} at (0,0) size 280x27
-          chunk 1 (middle anchor) text run 1 at (100.20,280.00) startOffset 0 endOffset 28 width 279.60: &quot;This text should be visible.&quot;
-    RenderSVGContainer {g} at (16,518) size 380x60
-      RenderSVGText {text} at (10,311) size 228x36 contains 1 chunk(s)
-        RenderSVGInlineText {#text} at (0,0) size 228x36
-          chunk 1 text run 1 at (10.00,340.00) startOffset 0 endOffset 16 width 227.40: &quot;$Revision: 1.5 $&quot;
-    RenderSVGRect {rect} at (0,0) size 800x600 [stroke={[type=SOLID] [color=#000000]}] [x=1.00] [y=1.00] [width=478.00] [height=358.00]
</del></span></pre></div>
<a id="trunkLayoutTestssvgW3CSVG12Tinystructuserecursion02texpectedsvg"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-02-t-expected.svg (0 => 179807)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-02-t-expected.svg                                (rev 0)
+++ trunk/LayoutTests/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-02-t-expected.svg        2015-02-08 23:22:24 UTC (rev 179807)
</span><span class="lines">@@ -0,0 +1,7 @@
</span><ins>+&lt;svg viewBox=&quot;0 0 480 360&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot;&gt;
+  &lt;circle cx=&quot;100&quot; cy=&quot;25&quot; r=&quot;10&quot; fill=&quot;#FF7F00&quot;/&gt;
+  &lt;circle cx=&quot;380&quot; cy=&quot;50&quot; r=&quot;10&quot; fill=&quot;yellow&quot; stroke=&quot;gray&quot; stroke-width=&quot;2&quot; stroke-dasharray=&quot;4&quot; stroke-linecap=&quot;round&quot;/&gt;
+  &lt;text x=&quot;240&quot; y=&quot;280&quot; text-anchor=&quot;middle&quot; fill=&quot;green&quot; font-family=&quot;sans-serif&quot; font-size=&quot;24&quot;&gt;This text should be visible.&lt;/text&gt;
+  &lt;text x=&quot;10&quot; y=&quot;340&quot; font-family=&quot;sans-serif&quot; font-size=&quot;32&quot;&gt;$Revision: 1.5 $&lt;/text&gt;
+  &lt;rect x=&quot;1&quot; y=&quot;1&quot; width=&quot;478&quot; height=&quot;358&quot; fill=&quot;none&quot; stroke=&quot;black&quot;/&gt;
+&lt;/svg&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestssvgW3CSVG12Tinystructuserecursion02texpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-02-t-expected.txt (179806 => 179807)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-02-t-expected.txt        2015-02-08 23:21:02 UTC (rev 179806)
+++ trunk/LayoutTests/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-02-t-expected.txt        2015-02-08 23:22:24 UTC (rev 179807)
</span><span class="lines">@@ -1,20 +0,0 @@
</span><del>-layer at (0,0) size 800x600
-  RenderView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  RenderSVGRoot {svg} at (0,0) size 800x600
-    RenderSVGHiddenContainer {defs} at (0,0) size 0x0
-    RenderSVGContainer {g} at (150,25) size 502x450
-      RenderSVGContainer {g} at (150,25) size 502x77
-        RenderSVGEllipse {circle} at (150,25) size 34x34 [fill={[type=SOLID] [color=#FF7F00]}] [cx=100.00] [cy=25.00] [r=10.00]
-        RenderSVGContainer {use} at (615,65) size 37x37 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,25.00)}]
-          RenderSVGContainer {g} at (615,65) size 37x37
-            RenderSVGContainer {g} at (0,0) size 0x0 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,25.00)}]
-            RenderSVGEllipse {circle} at (615,65) size 37x37 [stroke={[type=SOLID] [color=#808080] [stroke width=2.00] [line cap=ROUND] [dash array={4.00}]}] [fill={[type=SOLID] [color=#FFFF00]}] [cx=380.00] [cy=25.00] [r=10.00]
-      RenderSVGText {text} at (100,258) size 280x27 contains 1 chunk(s)
-        RenderSVGInlineText {#text} at (0,0) size 280x27
-          chunk 1 (middle anchor) text run 1 at (100.20,280.00) startOffset 0 endOffset 28 width 279.60: &quot;This text should be visible.&quot;
-    RenderSVGContainer {g} at (16,518) size 380x60
-      RenderSVGText {text} at (10,311) size 228x36 contains 1 chunk(s)
-        RenderSVGInlineText {#text} at (0,0) size 228x36
-          chunk 1 text run 1 at (10.00,340.00) startOffset 0 endOffset 16 width 227.40: &quot;$Revision: 1.5 $&quot;
-    RenderSVGRect {rect} at (0,0) size 800x600 [stroke={[type=SOLID] [color=#000000]}] [x=1.00] [y=1.00] [width=478.00] [height=358.00]
</del></span></pre></div>
<a id="trunkLayoutTestssvgW3CSVG12Tinystructuserecursion03texpectedsvg"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-03-t-expected.svg (0 => 179807)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-03-t-expected.svg                                (rev 0)
+++ trunk/LayoutTests/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-03-t-expected.svg        2015-02-08 23:22:24 UTC (rev 179807)
</span><span class="lines">@@ -0,0 +1,7 @@
</span><ins>+&lt;svg viewBox=&quot;0 0 480 360&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot;&gt;
+  &lt;circle cx=&quot;380&quot; cy=&quot;25&quot; r=&quot;10&quot; fill=&quot;yellow&quot;/&gt;
+  &lt;circle cx=&quot;100&quot; cy=&quot;50&quot; r=&quot;10&quot; fill=&quot;#FF7F00&quot; stroke=&quot;gray&quot; stroke-width=&quot;2&quot; stroke-dasharray=&quot;4&quot; stroke-linecap=&quot;round&quot;/&gt;
+  &lt;text x=&quot;240&quot; y=&quot;280&quot; text-anchor=&quot;middle&quot; fill=&quot;green&quot; font-family=&quot;sans-serif&quot; font-size=&quot;24&quot;&gt;This text should be visible.&lt;/text&gt;
+  &lt;text x=&quot;10&quot; y=&quot;340&quot; font-family=&quot;sans-serif&quot; font-size=&quot;32&quot;&gt;$Revision: 1.5 $&lt;/text&gt;
+  &lt;rect x=&quot;1&quot; y=&quot;1&quot; width=&quot;478&quot; height=&quot;358&quot; fill=&quot;none&quot; stroke=&quot;black&quot;/&gt;
+&lt;/svg&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestssvgW3CSVG12Tinystructuserecursion03texpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-03-t-expected.txt (179806 => 179807)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-03-t-expected.txt        2015-02-08 23:21:02 UTC (rev 179806)
+++ trunk/LayoutTests/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-03-t-expected.txt        2015-02-08 23:22:24 UTC (rev 179807)
</span><span class="lines">@@ -1,20 +0,0 @@
</span><del>-layer at (0,0) size 800x600
-  RenderView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  RenderSVGRoot {svg} at (0,0) size 800x600
-    RenderSVGHiddenContainer {defs} at (0,0) size 0x0
-    RenderSVGContainer {g} at (148,25) size 502x450
-      RenderSVGContainer {g} at (148,25) size 502x77
-        RenderSVGContainer {use} at (148,65) size 37x37 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,25.00)}]
-          RenderSVGContainer {g} at (148,65) size 37x37
-            RenderSVGEllipse {circle} at (148,65) size 37x37 [stroke={[type=SOLID] [color=#808080] [stroke width=2.00] [line cap=ROUND] [dash array={4.00}]}] [fill={[type=SOLID] [color=#FF7F00]}] [cx=100.00] [cy=25.00] [r=10.00]
-            RenderSVGContainer {g} at (0,0) size 0x0 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,25.00)}]
-        RenderSVGEllipse {circle} at (616,25) size 34x34 [fill={[type=SOLID] [color=#FFFF00]}] [cx=380.00] [cy=25.00] [r=10.00]
-      RenderSVGText {text} at (100,258) size 280x27 contains 1 chunk(s)
-        RenderSVGInlineText {#text} at (0,0) size 280x27
-          chunk 1 (middle anchor) text run 1 at (100.20,280.00) startOffset 0 endOffset 28 width 279.60: &quot;This text should be visible.&quot;
-    RenderSVGContainer {g} at (16,518) size 380x60
-      RenderSVGText {text} at (10,311) size 228x36 contains 1 chunk(s)
-        RenderSVGInlineText {#text} at (0,0) size 228x36
-          chunk 1 text run 1 at (10.00,340.00) startOffset 0 endOffset 16 width 227.40: &quot;$Revision: 1.5 $&quot;
-    RenderSVGRect {rect} at (0,0) size 800x600 [stroke={[type=SOLID] [color=#000000]}] [x=1.00] [y=1.00] [width=478.00] [height=358.00]
</del></span></pre></div>
<a id="trunkLayoutTestssvgcustomuseondisallowedforeignobject3expectedsvg"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/svg/custom/use-on-disallowed-foreign-object-3-expected.svg (0 => 179807)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/svg/custom/use-on-disallowed-foreign-object-3-expected.svg                                (rev 0)
+++ trunk/LayoutTests/svg/custom/use-on-disallowed-foreign-object-3-expected.svg        2015-02-08 23:22:24 UTC (rev 179807)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xhtml=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
+&lt;foreignObject x=&quot;10&quot; y=&quot;10&quot; width=&quot;580&quot; height=&quot;380&quot; transform=&quot;scale(5) skewY(5) skewX(5)&quot;&gt;
+&lt;xhtml:div&gt;You should only see this string ONCE&lt;/xhtml:div&gt;
+&lt;/foreignObject&gt;
+&lt;/svg&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestssvgcustomuserecursion1expectedsvg"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/svg/custom/use-recursion-1-expected.svg (0 => 179807)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/svg/custom/use-recursion-1-expected.svg                                (rev 0)
+++ trunk/LayoutTests/svg/custom/use-recursion-1-expected.svg        2015-02-08 23:22:24 UTC (rev 179807)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+&lt;svg viewBox=&quot;0 0 400 300&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot;&gt;
+&lt;text x=&quot;10&quot; y=&quot;60&quot;&gt;This should not crash.&lt;/text&gt;
+&lt;rect x=&quot;25&quot; y=&quot;25&quot; stroke-width=&quot;5px&quot; fill=&quot;red&quot; stroke=&quot;navy&quot; width=&quot;60&quot; height=&quot;10&quot;/&gt;
+&lt;/svg&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestssvgcustomuserecursion2expectedsvg"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/svg/custom/use-recursion-2-expected.svg (0 => 179807)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/svg/custom/use-recursion-2-expected.svg                                (rev 0)
+++ trunk/LayoutTests/svg/custom/use-recursion-2-expected.svg        2015-02-08 23:22:24 UTC (rev 179807)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+&lt;svg viewBox=&quot;0 0 400 300&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot;&gt;
+&lt;text x=&quot;10&quot; y=&quot;60&quot;&gt;This should not crash.&lt;/text&gt;
+&lt;/svg&gt;
+
</ins></span></pre></div>
<a id="trunkLayoutTestssvgcustomuserecursion3expectedsvg"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/svg/custom/use-recursion-3-expected.svg (0 => 179807)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/svg/custom/use-recursion-3-expected.svg                                (rev 0)
+++ trunk/LayoutTests/svg/custom/use-recursion-3-expected.svg        2015-02-08 23:22:24 UTC (rev 179807)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+&lt;svg viewBox=&quot;0 0 400 300&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot;&gt;
+&lt;text x=&quot;10&quot; y=&quot;60&quot;&gt;This should not crash.&lt;/text&gt;
+&lt;rect x=&quot;25&quot; y=&quot;25&quot; stroke-width=&quot;5px&quot; fill=&quot;red&quot; stroke=&quot;navy&quot; width=&quot;60&quot; height=&quot;10&quot;/&gt;
+&lt;/svg&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestssvgcustomuserecursion4expectedsvg"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/svg/custom/use-recursion-4-expected.svg (0 => 179807)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/svg/custom/use-recursion-4-expected.svg                                (rev 0)
+++ trunk/LayoutTests/svg/custom/use-recursion-4-expected.svg        2015-02-08 23:22:24 UTC (rev 179807)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+&lt;svg viewBox=&quot;0 0 400 300&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot;&gt;
+&lt;text x=&quot;10&quot; y=&quot;60&quot;&gt;This should not crash.&lt;/text&gt;
+&lt;rect x=&quot;25&quot; y=&quot;25&quot; stroke-width=&quot;5px&quot; fill=&quot;red&quot; stroke=&quot;navy&quot; width=&quot;60&quot; height=&quot;10&quot;/&gt;
+&lt;/svg&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestssvghixieerror017expectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/svg/hixie/error/017-expected.txt (179806 => 179807)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/svg/hixie/error/017-expected.txt        2015-02-08 23:21:02 UTC (rev 179806)
+++ trunk/LayoutTests/svg/hixie/error/017-expected.txt        2015-02-08 23:22:24 UTC (rev 179807)
</span><span class="lines">@@ -1,20 +0,0 @@
</span><del>-layer at (0,0) size 800x600
-  RenderView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  RenderSVGRoot {svg} at (0,0) size 474x303
-    RenderSVGHiddenContainer {defs} at (0,0) size 0x0
-      RenderSVGContainer {g} at (0,0) size 0x0
-        RenderSVGContainer {use} at (0,0) size 0x0
-      RenderSVGContainer {g} at (0,0) size 0x0
-        RenderSVGContainer {use} at (0,0) size 0x0
-      RenderSVGContainer {g} at (0,0) size 0x0
-        RenderSVGContainer {use} at (0,0) size 0x0
-    RenderSVGContainer {g} at (0,0) size 0x0
-      RenderSVGContainer {use} at (0,0) size 0x0
-    RenderSVGText {text} at (20,42) size 444x221 contains 1 chunk(s)
-      RenderSVGInlineText {#text} at (0,0) size 444x221
-        chunk 1 text run 1 at (20.00,220.00) startOffset 0 endOffset 4 width 444.00: &quot;FAIL&quot;
-    RenderSVGEllipse {circle} at (0,0) size 303x303 [stroke={[type=SOLID] [color=#000000] [stroke width=5.00]}] [fill={[type=SOLID] [color=#FF0000]}] [cx=100.00] [cy=100.00] [r=200.00]
-    RenderSVGText {text} at (20,42) size 444x221 contains 1 chunk(s)
-      RenderSVGInlineText {#text} at (0,0) size 444x221
-        chunk 1 text run 1 at (20.00,220.00) startOffset 0 endOffset 4 width 444.00: &quot;FAIL&quot;
</del></span></pre></div>
<a id="trunkLayoutTestssvghixieerror017expectedxml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/svg/hixie/error/017-expected.xml (0 => 179807)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/svg/hixie/error/017-expected.xml                                (rev 0)
+++ trunk/LayoutTests/svg/hixie/error/017-expected.xml        2015-02-08 23:22:24 UTC (rev 179807)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot;&gt;
+ &lt;text x=&quot;20&quot; y=&quot;220&quot; font-size=&quot;200&quot; stroke=&quot;black&quot; stroke-width=&quot;10&quot; fill=&quot;white&quot;&gt;FAIL&lt;/text&gt;
+ &lt;circle cx=&quot;100&quot; cy=&quot;100&quot; r=&quot;200&quot; stroke=&quot;black&quot; stroke-width=&quot;5&quot; fill=&quot;red&quot;/&gt;
+ &lt;text x=&quot;20&quot; y=&quot;220&quot; font-size=&quot;200&quot; fill=&quot;white&quot;&gt;FAIL&lt;/text&gt;
+&lt;/svg&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestssvginhtmldefsafterusehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/svg/in-html/defs-after-use.html (179806 => 179807)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/svg/in-html/defs-after-use.html        2015-02-08 23:21:02 UTC (rev 179806)
+++ trunk/LayoutTests/svg/in-html/defs-after-use.html        2015-02-08 23:22:24 UTC (rev 179807)
</span><span class="lines">@@ -5,7 +5,7 @@
</span><span class="cx">     tree of the &lt;use&gt; element should update the corresponding shadow render
</span><span class="cx">     tree as well.
</span><span class="cx">     
</span><del>-    https://bugs.webkit.org/show_bug.cgi?id=139469
</del><ins>+    https://bugs.webkit.org/show_bug.cgi?id=139451
</ins><span class="cx"> --&gt;
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;body&gt;
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (179806 => 179807)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2015-02-08 23:21:02 UTC (rev 179806)
+++ trunk/Source/WebCore/ChangeLog        2015-02-08 23:22:24 UTC (rev 179807)
</span><span class="lines">@@ -1,3 +1,82 @@
</span><ins>+2015-02-08  Darin Adler  &lt;darin@apple.com&gt;
+
+        Make SVGUseElement work without creating any SVGElementInstance objects
+        https://bugs.webkit.org/show_bug.cgi?id=141374
+
+        Reviewed by Sam Weinig.
+
+        * dom/ElementIterator.h: Changed the * and -&gt; operators to be const.
+        There is no need for the iterator itself to be modified just to dereference it.
+
+        * dom/TypedElementDescendantIterator.h: Added DoubleTypedElementDescendantIterator.
+        This allows callers to call descendantsOfType on two elements, as long as the caller
+        can guarantee that both have the same number of descendants of that type. It's handy
+        for walking a tree of cloned elements to set up something between each original and
+        its clone. In the future we might instead change the cloning machinery so it can do
+        this work as we clone, and if so, we could consider deleting this.
+
+        * svg/SVGElement.cpp:
+        (WebCore::SVGElement::correspondingElement): Made this const.
+        (WebCore::SVGElement::invalidateInstances): Got rid of the rule that said &quot;this can
+        only be done for an element in a document&quot;, since it's useful to do this on an element
+        that has just been removed from a document. Removed the &quot;updateStyleIfNeeded&quot; call
+        here now that the other changes make it no longer needed. Removed an unimportant
+        assertion that we only invalidate use elements that are in a document; that's not
+        a necessary restriction. Streamlined the logic a bit.
+
+        * svg/SVGElement.h: Made correspondingElement const.
+
+        * svg/SVGUseElement.cpp:
+        (WebCore::SVGUseElement::insertedInto): Removed an assertion about
+        m_targetElementInstance since that's gone now.
+        (WebCore::SVGUseElement::svgAttributeChanged): Changed code that transfers
+        size attributes to the shadow tree to use shadowTreeTargetClone instead of
+        m_targetElementInstance.
+        (WebCore::SVGUseElement::clearResourceReferences): Removed code to detach
+        m_targetElementInstance, and also the call to removeAllTargetReferencesForElement,
+        because we no longer use those.
+        (WebCore::SVGUseElement::buildPendingResource): Moved the code to build the
+        shadow tree in here and deleted the buildShadowAndInstanceTree function.
+        Also changed logic so that we use a pending resource any time the target is not
+        a valid one. That helps us correctly handle cases where we initially have an
+        invalid target, but later get a value one
+        (WebCore::SVGUseElement::buildShadowAndInstanceTree): Deleted. The code here
+        was greatly simplified and moved into buildPendingResource.
+        (WebCore::SVGUseElement::buildInstanceTree): Deleted.
+        (WebCore::SVGUseElement::hasCycleUseReferencing): Deleted. Cycles are now
+        detected by the new isValidTarget function and so there's no need for a
+        separate explicit check for a cycle.
+        (WebCore::associateClonesWithOriginals): Added. Helper that makes
+        functions that build the shadow tree simpler and easier to read.
+        (WebCore::associateReplacementCloneWithOriginal): Added. Helper to
+        make associateReplacementClonesWithOriginals simple.
+        (WebCore::associateReplacementClonesWithOriginals): Added. Helper that
+        makes functions that build the shadow tree simpler and easier to read.
+        (WebCore::SVGUseElement::buildShadowTree): Call associateClonesWithOriginals
+        since associateInstancesWithShadowTreeElements no longer does this.
+        (WebCore::SVGUseElement::isValidTarget): Added. Covers all the different
+        reasons a target might not be valid: type of element, reference cycles, and
+        also &quot;not in document&quot; (refactored in here; not sure when that can happen
+        in practice, might be possible to remove it later).
+        (WebCore::SVGUseElement::expandUseElementsInShadowTree): Add checks for
+        documents that are still loading; this used to be checked when building the
+        instance tree. Added calls to associateReplacementClonesWithOriginals and
+        associateClonesWithOriginals; that used to be done by later in the
+        associateInstancesWithShadowTreeElements function. Use isValidTarget so
+        we handle cycles as well as invalid target types.
+        (WebCore::SVGUseElement::expandSymbolElementsInShadowTree): Added a call to
+        associateReplacementClonesWithOriginals, since we can no longer do that in
+        associateInstancesWithShadowTreeElements.
+        (WebCore::SVGUseElement::associateInstancesWithShadowTreeElements): Deleted.
+        (WebCore::SVGUseElement::instanceForShadowTreeElement): Deleted.
+        (WebCore::SVGUseElement::invalidateDependentShadowTrees): Removed a comment
+        that simply restated the name of the function.
+
+        * svg/SVGUseElement.h: Removed instanceForShadowTreeElement,
+        buildShadowAndInstanceTree, detachInstance, buildInstanceTree,
+        hasCycleUseReferencing, associateInstancesWithShadowTreeElements,
+        instanceForShadowTreeElement, and m_targetElementInstance. Added isValidTarget.
+
</ins><span class="cx"> 2015-02-08  Chris Dumez  &lt;cdumez@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [WK2] Add logging to validate the network cache efficacy (Part 1)
</span></span></pre></div>
<a id="trunkSourceWebCoredomElementIteratorh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/ElementIterator.h (179806 => 179807)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/ElementIterator.h        2015-02-08 23:21:02 UTC (rev 179806)
+++ trunk/Source/WebCore/dom/ElementIterator.h        2015-02-08 23:22:24 UTC (rev 179807)
</span><span class="lines">@@ -40,8 +40,8 @@
</span><span class="cx">     ElementIterator(const ContainerNode* root);
</span><span class="cx">     ElementIterator(const ContainerNode* root, ElementType* current);
</span><span class="cx"> 
</span><del>-    ElementType&amp; operator*();
-    ElementType* operator-&gt;();
</del><ins>+    ElementType&amp; operator*() const;
+    ElementType* operator-&gt;() const;
</ins><span class="cx"> 
</span><span class="cx">     bool operator==(const ElementIterator&amp; other) const;
</span><span class="cx">     bool operator!=(const ElementIterator&amp; other) const;
</span><span class="lines">@@ -211,7 +211,7 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template &lt;typename ElementType&gt;
</span><del>-inline ElementType&amp; ElementIterator&lt;ElementType&gt;::operator*()
</del><ins>+inline ElementType&amp; ElementIterator&lt;ElementType&gt;::operator*() const
</ins><span class="cx"> {
</span><span class="cx">     ASSERT(m_current);
</span><span class="cx">     ASSERT(!m_assertions.domTreeHasMutated());
</span><span class="lines">@@ -219,7 +219,7 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template &lt;typename ElementType&gt;
</span><del>-inline ElementType* ElementIterator&lt;ElementType&gt;::operator-&gt;()
</del><ins>+inline ElementType* ElementIterator&lt;ElementType&gt;::operator-&gt;() const
</ins><span class="cx"> {
</span><span class="cx">     ASSERT(m_current);
</span><span class="cx">     ASSERT(!m_assertions.domTreeHasMutated());
</span></span></pre></div>
<a id="trunkSourceWebCoredomTypedElementDescendantIteratorh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/TypedElementDescendantIterator.h (179806 => 179807)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/TypedElementDescendantIterator.h        2015-02-08 23:21:02 UTC (rev 179806)
+++ trunk/Source/WebCore/dom/TypedElementDescendantIterator.h        2015-02-08 23:22:24 UTC (rev 179807)
</span><span class="lines">@@ -30,6 +30,8 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><ins>+template&lt;typename ElementType&gt; class DoubleTypedElementDescendantIterator;
+
</ins><span class="cx"> template &lt;typename ElementType&gt;
</span><span class="cx"> class TypedElementDescendantIterator : public ElementIterator&lt;ElementType&gt; {
</span><span class="cx"> public:
</span><span class="lines">@@ -78,9 +80,41 @@
</span><span class="cx">     const ContainerNode&amp; m_root;
</span><span class="cx"> };
</span><span class="cx"> 
</span><ins>+template&lt;typename ElementType&gt; class DoubleTypedElementDescendantIteratorAdapter {
+public:
+    typedef TypedElementDescendantIteratorAdapter&lt;ElementType&gt; SingleAdapter;
+    typedef DoubleTypedElementDescendantIterator&lt;ElementType&gt; Iterator;
+
+    DoubleTypedElementDescendantIteratorAdapter(SingleAdapter&amp;&amp;, SingleAdapter&amp;&amp;);
+    Iterator begin();
+    Iterator end();
+
+private:
+    std::pair&lt;SingleAdapter, SingleAdapter&gt; m_pair;
+};
+
+template&lt;typename ElementType&gt; class DoubleTypedElementDescendantIterator {
+public:
+    typedef TypedElementDescendantIterator&lt;ElementType&gt; SingleIterator;
+    typedef std::pair&lt;ElementType&amp;, ElementType&amp;&gt; ReferenceProxy;
+
+    DoubleTypedElementDescendantIterator(SingleIterator&amp;&amp;, SingleIterator&amp;&amp;);
+    ReferenceProxy operator*() const;
+    bool operator==(const DoubleTypedElementDescendantIterator&amp;) const;
+    bool operator!=(const DoubleTypedElementDescendantIterator&amp;) const;
+    DoubleTypedElementDescendantIterator&amp; operator++();
+
+private:
+    std::pair&lt;SingleIterator, SingleIterator&gt; m_pair;
+};
+
</ins><span class="cx"> template &lt;typename ElementType&gt; TypedElementDescendantIteratorAdapter&lt;ElementType&gt; descendantsOfType(ContainerNode&amp;);
</span><span class="cx"> template &lt;typename ElementType&gt; TypedElementDescendantConstIteratorAdapter&lt;ElementType&gt; descendantsOfType(const ContainerNode&amp;);
</span><span class="cx"> 
</span><ins>+// This must only be used when both sets of descendants are known to be the same length.
+// If they are different lengths, this will stop when the shorter one reaches the end, but also an assertion will fail.
+template&lt;typename ElementType&gt; DoubleTypedElementDescendantIteratorAdapter&lt;ElementType&gt; descendantsOfType(ContainerNode&amp; firstRoot, ContainerNode&amp; secondRoot);
+
</ins><span class="cx"> // TypedElementDescendantIterator
</span><span class="cx"> 
</span><span class="cx"> template &lt;typename ElementType&gt;
</span><span class="lines">@@ -220,6 +254,53 @@
</span><span class="cx">     return Traversal&lt;ElementType&gt;::lastWithin(m_root);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+// DoubleTypedElementDescendantIteratorAdapter
+
+template&lt;typename ElementType&gt; inline DoubleTypedElementDescendantIteratorAdapter&lt;ElementType&gt;::DoubleTypedElementDescendantIteratorAdapter(SingleAdapter&amp;&amp; first, SingleAdapter&amp;&amp; second)
+    : m_pair(WTF::move(first), WTF::move(second))
+{
+}
+
+template&lt;typename ElementType&gt; inline auto DoubleTypedElementDescendantIteratorAdapter&lt;ElementType&gt;::begin() -&gt; Iterator
+{
+    return { m_pair.first.begin(), m_pair.second.begin() };
+}
+
+template&lt;typename ElementType&gt; inline auto DoubleTypedElementDescendantIteratorAdapter&lt;ElementType&gt;::end() -&gt; Iterator
+{
+    return { m_pair.first.end(), m_pair.second.end() };
+}
+
+// DoubleTypedElementDescendantIterator
+
+template&lt;typename ElementType&gt; inline DoubleTypedElementDescendantIterator&lt;ElementType&gt;::DoubleTypedElementDescendantIterator(SingleIterator&amp;&amp; first, SingleIterator&amp;&amp; second)
+    : m_pair(WTF::move(first), WTF::move(second))
+{
+}
+
+template&lt;typename ElementType&gt; inline auto DoubleTypedElementDescendantIterator&lt;ElementType&gt;::operator*() const -&gt; ReferenceProxy
+{
+    return { *m_pair.first, *m_pair.second };
+}
+
+template&lt;typename ElementType&gt; inline bool DoubleTypedElementDescendantIterator&lt;ElementType&gt;::operator==(const DoubleTypedElementDescendantIterator&amp; other) const
+{
+    ASSERT((m_pair.first == other.m_pair.first) == (m_pair.second == other.m_pair.second));
+    return m_pair.first == other.m_pair.first || m_pair.second == other.m_pair.second;
+}
+
+template&lt;typename ElementType&gt; inline bool DoubleTypedElementDescendantIterator&lt;ElementType&gt;::operator!=(const DoubleTypedElementDescendantIterator&amp; other) const
+{
+    return !(*this == other);
+}
+
+template&lt;typename ElementType&gt; inline DoubleTypedElementDescendantIterator&lt;ElementType&gt;&amp; DoubleTypedElementDescendantIterator&lt;ElementType&gt;::operator++()
+{
+    ++m_pair.first;
+    ++m_pair.second;
+    return *this;
+}
+
</ins><span class="cx"> // Standalone functions
</span><span class="cx"> 
</span><span class="cx"> template &lt;typename ElementType&gt;
</span><span class="lines">@@ -234,6 +315,11 @@
</span><span class="cx">     return TypedElementDescendantConstIteratorAdapter&lt;ElementType&gt;(root);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+template&lt;typename ElementType&gt; inline DoubleTypedElementDescendantIteratorAdapter&lt;ElementType&gt; descendantsOfType(ContainerNode&amp; firstRoot, ContainerNode&amp; secondRoot)
+{
+    return { descendantsOfType&lt;ElementType&gt;(firstRoot), descendantsOfType&lt;ElementType&gt;(secondRoot) };
</ins><span class="cx"> }
</span><span class="cx"> 
</span><ins>+}
+
</ins><span class="cx"> #endif
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGElement.cpp (179806 => 179807)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGElement.cpp        2015-02-08 23:21:02 UTC (rev 179806)
+++ trunk/Source/WebCore/svg/SVGElement.cpp        2015-02-08 23:22:24 UTC (rev 179807)
</span><span class="lines">@@ -475,7 +475,7 @@
</span><span class="cx">     m_svgRareData-&gt;setCursorImageValue(0);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-SVGElement* SVGElement::correspondingElement()
</del><ins>+SVGElement* SVGElement::correspondingElement() const
</ins><span class="cx"> {
</span><span class="cx">     ASSERT(!m_svgRareData || !m_svgRareData-&gt;correspondingElement() || correspondingUseElement());
</span><span class="cx">     return m_svgRareData ? m_svgRareData-&gt;correspondingElement() : nullptr;
</span><span class="lines">@@ -1207,28 +1207,16 @@
</span><span class="cx"> 
</span><span class="cx"> void SVGElement::invalidateInstances()
</span><span class="cx"> {
</span><del>-    if (!inDocument())
-        return;
-
</del><span class="cx">     if (instanceUpdatesBlocked())
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     auto&amp; instances = this-&gt;instances();
</span><del>-    if (instances.isEmpty())
-        return;
-
-    // Mark all use elements referencing 'element' for rebuilding
-    do {
</del><ins>+    while (!instances.isEmpty()) {
</ins><span class="cx">         SVGElement* instance = *instances.begin();
</span><del>-        if (SVGUseElement* element = instance-&gt;correspondingUseElement()) {
-            ASSERT(element-&gt;inDocument());
-            element-&gt;invalidateShadowTree();
-        }
</del><ins>+        if (SVGUseElement* useElement = instance-&gt;correspondingUseElement())
+            useElement-&gt;invalidateShadowTree();
</ins><span class="cx">         instance-&gt;setCorrespondingElement(nullptr);
</span><span class="cx">     } while (!instances.isEmpty());
</span><del>-
-    // FIXME: Why is this needed?
-    document().updateStyleIfNeeded();
</del><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGElement.h (179806 => 179807)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGElement.h        2015-02-08 23:21:02 UTC (rev 179806)
+++ trunk/Source/WebCore/svg/SVGElement.h        2015-02-08 23:22:24 UTC (rev 179807)
</span><span class="lines">@@ -113,7 +113,7 @@
</span><span class="cx">     void setCursorImageValue(CSSCursorImageValue*);
</span><span class="cx">     void cursorImageValueRemoved();
</span><span class="cx"> 
</span><del>-    SVGElement* correspondingElement();
</del><ins>+    SVGElement* correspondingElement() const;
</ins><span class="cx">     SVGUseElement* correspondingUseElement() const;
</span><span class="cx"> 
</span><span class="cx">     void setCorrespondingElement(SVGElement*);
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGUseElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGUseElement.cpp (179806 => 179807)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGUseElement.cpp        2015-02-08 23:21:02 UTC (rev 179806)
+++ trunk/Source/WebCore/svg/SVGUseElement.cpp        2015-02-08 23:22:24 UTC (rev 179807)
</span><span class="lines">@@ -157,7 +157,6 @@
</span><span class="cx">     SVGGraphicsElement::insertedInto(rootParent);
</span><span class="cx">     if (!rootParent.inDocument())
</span><span class="cx">         return InsertionDone;
</span><del>-    ASSERT(!m_targetElementInstance || !isWellFormedDocument(document()));
</del><span class="cx">     ASSERT(!hasPendingResources() || !isWellFormedDocument(document()));
</span><span class="cx">     SVGExternalResourcesRequired::insertedIntoDocument(this);
</span><span class="cx">     if (!m_wasInsertedByParser)
</span><span class="lines">@@ -227,11 +226,10 @@
</span><span class="cx"> 
</span><span class="cx">     if (attrName == SVGNames::xAttr || attrName == SVGNames::yAttr || attrName == SVGNames::widthAttr || attrName == SVGNames::heightAttr) {
</span><span class="cx">         updateRelativeLengthsInformation();
</span><del>-        if (m_targetElementInstance) {
</del><ins>+        if (SVGElement* shadowTreeTargetClone = this-&gt;shadowTreeTargetClone()) {
</ins><span class="cx">             // FIXME: It's unnecessarily inefficient to do this work any time we change &quot;x&quot; or &quot;y&quot;.
</span><span class="cx">             // FIXME: It's unnecessarily inefficient to update both width and height each time either is changed.
</span><del>-            ASSERT(m_targetElementInstance-&gt;shadowTreeElement());
-            transferSizeAttributesToShadowTreeTargetClone(*m_targetElementInstance-&gt;shadowTreeElement());
</del><ins>+            transferSizeAttributesToShadowTreeTargetClone(*shadowTreeTargetClone);
</ins><span class="cx">         }
</span><span class="cx">         if (auto* renderer = this-&gt;renderer())
</span><span class="cx">             RenderSVGResource::markForLayoutAndParentResourceInvalidation(*renderer);
</span><span class="lines">@@ -313,49 +311,49 @@
</span><span class="cx"> 
</span><span class="cx"> void SVGUseElement::clearResourceReferences()
</span><span class="cx"> {
</span><del>-    // FIXME: We should try to optimize this, to at least allow partial reclones.
</del><ins>+    // FIXME: It's expensive to re-clone the entire tree every time. We should find a more efficient way to handle this.
</ins><span class="cx">     if (ShadowRoot* root = userAgentShadowRoot())
</span><span class="cx">         root-&gt;removeChildren();
</span><del>-
-    if (m_targetElementInstance) {
-        m_targetElementInstance-&gt;detach();
-        m_targetElementInstance = 0;
-    }
-
</del><span class="cx">     m_needsShadowTreeRecreation = false;
</span><del>-
-    document().accessSVGExtensions().removeAllTargetReferencesForElement(this);
</del><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void SVGUseElement::buildPendingResource()
</span><span class="cx"> {
</span><del>-    if (!referencedDocument() || isInShadowTree())
</del><ins>+    if (isInShadowTree())
</ins><span class="cx">         return;
</span><ins>+    if (!referencedDocument())
+        return;
</ins><span class="cx">     clearResourceReferences();
</span><span class="cx">     if (!inDocument())
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     String id;
</span><span class="cx">     Element* target = SVGURIReference::targetElementFromIRIString(href(), document(), &amp;id, externalDocument());
</span><del>-    if (!target || !target-&gt;inDocument()) {
-        // If we can't find the target of an external element, just give up.
-        // We can't observe if the target somewhen enters the external document, nor should we do it.
-        if (externalDocument())
</del><ins>+    if (!isValidTarget(target)) {
+        if (externalDocument()) {
+            // We can't find the target in an external document, so just give up and don't try to do it again.
+            // We should not attempt to observe if an element with ID shows up in the external document later.
</ins><span class="cx">             return;
</span><del>-        if (id.isEmpty())
-            return;
-
</del><ins>+        }
</ins><span class="cx">         referencedDocument()-&gt;accessSVGExtensions().addPendingResource(id, this);
</span><del>-        ASSERT(hasPendingResources());
</del><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (target-&gt;isSVGElement()) {
-        buildShadowAndInstanceTree(downcast&lt;SVGElement&gt;(*target));
-        invalidateDependentShadowTrees();
-    }
</del><ins>+    buildShadowTree(downcast&lt;SVGElement&gt;(*target));
+    expandUseElementsInShadowTree();
+    expandSymbolElementsInShadowTree();
+    transferSizeAttributesToShadowTreeTargetClone(*shadowTreeTargetClone());
+    transferEventListenersToShadowTree();
+    updateRelativeLengthsInformation();
</ins><span class="cx"> 
</span><ins>+    // When we invalidate the other shadow trees, it's important that we don't
+    // follow any cycles and invalidate ourselves. To avoid that, we temporarily
+    // set m_needsShadowTreeRecreation to true so invalidateShadowTree will
+    // quickly return and do nothing.
</ins><span class="cx">     ASSERT(!m_needsShadowTreeRecreation);
</span><ins>+    m_needsShadowTreeRecreation = true;
+    invalidateDependentShadowTrees();
+    m_needsShadowTreeRecreation = false;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> SVGElement* SVGUseElement::shadowTreeTargetClone() const
</span><span class="lines">@@ -366,65 +364,6 @@
</span><span class="cx">     return downcast&lt;SVGElement&gt;(root-&gt;firstChild());
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void SVGUseElement::buildShadowAndInstanceTree(SVGElement&amp; target)
-{
-    ASSERT(!m_targetElementInstance);
-
-    // Do not build the shadow/instance tree for &lt;use&gt; elements living in a shadow tree.
-    // The will be expanded soon anyway - see expandUseElementsInShadowTree().
-    if (isInShadowTree())
-        return;
-
-    // Do not allow self-referencing.
-    if (&amp;target == this)
-        return;
-
-    // Build instance tree.
-    // Spec: If the 'use' element references a simple graphics element such as a 'rect', then there is only a
-    // single SVGElementInstance object, and the correspondingElement attribute on this SVGElementInstance object
-    // is the SVGRectElement that corresponds to the referenced 'rect' element.
-    m_targetElementInstance = SVGElementInstance::create(this, this, &amp;target);
-
-    // Eventually enter recursion to build SVGElementInstance objects for the sub-tree children
-    bool foundProblem = false;
-    buildInstanceTree(&amp;target, m_targetElementInstance.get(), foundProblem, false);
-
-    if (instanceTreeIsLoading(m_targetElementInstance.get()))
-        return;
-
-    // SVG specification does not say a word about &lt;use&gt; and cycles. My view on this is: just ignore it!
-    // Non-appearing &lt;use&gt; content is easier to debug, then half-appearing content.
-    if (foundProblem) {
-        clearResourceReferences();
-        return;
-    }
-
-    // Assure instance tree building was successful.
-    ASSERT(m_targetElementInstance);
-    ASSERT(!m_targetElementInstance-&gt;shadowTreeElement());
-    ASSERT(m_targetElementInstance-&gt;correspondingUseElement() == this);
-    ASSERT(m_targetElementInstance-&gt;directUseElement() == this);
-    ASSERT(m_targetElementInstance-&gt;correspondingElement() == &amp;target);
-
-    if (isDisallowedElement(target)) {
-        clearResourceReferences();
-        return;
-    }
-
-    buildShadowTree(target);
-    expandUseElementsInShadowTree();
-    expandSymbolElementsInShadowTree();
-
-    ASSERT(shadowTreeTargetClone());
-    SVGElement&amp; shadowTreeTargetClone = *this-&gt;shadowTreeTargetClone();
-    associateInstancesWithShadowTreeElements(&amp;shadowTreeTargetClone, m_targetElementInstance.get());
-
-    transferSizeAttributesToShadowTreeTargetClone(shadowTreeTargetClone);
-
-    transferEventListenersToShadowTree();
-    updateRelativeLengthsInformation();
-}
-
</del><span class="cx"> RenderPtr&lt;RenderElement&gt; SVGUseElement::createElementRenderer(Ref&lt;RenderStyle&gt;&amp;&amp; style)
</span><span class="cx"> {
</span><span class="cx">     return createRenderer&lt;RenderSVGTransformableContainer&gt;(*this, WTF::move(style));
</span><span class="lines">@@ -470,91 +409,6 @@
</span><span class="cx">     return element-&gt;renderer();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void SVGUseElement::buildInstanceTree(SVGElement* target, SVGElementInstance* targetInstance, bool&amp; foundProblem, bool foundUse)
-{
-    ASSERT(target);
-    ASSERT(targetInstance);
-
-    // Spec: If the referenced object is itself a 'use', or if there are 'use' subelements within the referenced
-    // object, the instance tree will contain recursive expansion of the indirect references to form a complete tree.
-    bool targetHasUseTag = target-&gt;hasTagName(SVGNames::useTag);
-    SVGElement* newTarget = nullptr;
-    if (targetHasUseTag) {
-        foundProblem = hasCycleUseReferencing(downcast&lt;SVGUseElement&gt;(target), targetInstance, newTarget);
-        if (foundProblem)
-            return;
-
-        // We only need to track first degree &lt;use&gt; dependencies. Indirect references are handled
-        // as the invalidation bubbles up the dependency chain.
-        if (!foundUse) {
-            document().accessSVGExtensions().addElementReferencingTarget(this, target);
-            foundUse = true;
-        }
-    } else if (isDisallowedElement(*target)) {
-        foundProblem = true;
-        return;
-    }
-
-    // A general description from the SVG spec, describing what buildInstanceTree() actually does.
-    //
-    // Spec: If the 'use' element references a 'g' which contains two 'rect' elements, then the instance tree
-    // contains three SVGElementInstance objects, a root SVGElementInstance object whose correspondingElement
-    // is the SVGGElement object for the 'g', and then two child SVGElementInstance objects, each of which has
-    // its correspondingElement that is an SVGRectElement object.
-
-    for (auto&amp; element : childrenOfType&lt;SVGElement&gt;(*target)) {
-        // Skip any non-svg nodes or any disallowed element.
-        if (isDisallowedElement(element))
-            continue;
-
-        // Create SVGElementInstance object, for both container/non-container nodes.
-        RefPtr&lt;SVGElementInstance&gt; instance = SVGElementInstance::create(this, 0, &amp;element);
-        SVGElementInstance* instancePtr = instance.get();
-        targetInstance-&gt;appendChild(instance.release());
-
-        // Enter recursion, appending new instance tree nodes to the &quot;instance&quot; object.
-        buildInstanceTree(&amp;element, instancePtr, foundProblem, foundUse);
-        if (foundProblem)
-            return;
-    }
-
-    if (!targetHasUseTag || !newTarget)
-        return;
-
-    RefPtr&lt;SVGElementInstance&gt; newInstance = SVGElementInstance::create(this, downcast&lt;SVGUseElement&gt;(target), newTarget);
-    SVGElementInstance* newInstancePtr = newInstance.get();
-    targetInstance-&gt;appendChild(newInstance.release());
-    buildInstanceTree(newTarget, newInstancePtr, foundProblem, foundUse);
-}
-
-bool SVGUseElement::hasCycleUseReferencing(SVGUseElement* use, SVGElementInstance* targetInstance, SVGElement*&amp; newTarget)
-{
-    ASSERT(referencedDocument());
-    Element* targetElement = SVGURIReference::targetElementFromIRIString(use-&gt;href(), *referencedDocument());
-    newTarget = nullptr;
-    if (targetElement &amp;&amp; targetElement-&gt;isSVGElement())
-        newTarget = downcast&lt;SVGElement&gt;(targetElement);
-
-    if (!newTarget)
-        return false;
-
-    // Shortcut for self-references
-    if (newTarget == this)
-        return true;
-
-    AtomicString targetId = newTarget-&gt;getIdAttribute();
-    SVGElementInstance* instance = targetInstance-&gt;parentNode();
-    while (instance) {
-        SVGElement* element = instance-&gt;correspondingElement();
-
-        if (element-&gt;hasID() &amp;&amp; element-&gt;getIdAttribute() == targetId &amp;&amp; &amp;element-&gt;document() == &amp;newTarget-&gt;document())
-            return true;
-
-        instance = instance-&gt;parentNode();
-    }
-    return false;
-}
-
</del><span class="cx"> static void removeDisallowedElementsFromSubtree(SVGElement&amp; subtree)
</span><span class="cx"> {
</span><span class="cx">     // Remove disallowed elements after the fact rather than not cloning them in the first place.
</span><span class="lines">@@ -580,27 +434,82 @@
</span><span class="cx">         element-&gt;parentNode()-&gt;removeChild(element);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+static void associateClonesWithOriginals(SVGElement&amp; clone, SVGElement&amp; original)
+{
+    // This assertion checks that we don't call this with the arguments backwards.
+    // The clone is new and so it's not installed in a parent yet.
+    ASSERT(!clone.parentNode());
+
+    // The loop below works because we are associating these clones immediately, before
+    // doing transformations like removing disallowed elements or expanding elements.
+    clone.setCorrespondingElement(&amp;original);
+    for (auto pair : descendantsOfType&lt;SVGElement&gt;(clone, original))
+        pair.first.setCorrespondingElement(&amp;pair.second);
+}
+
+static void associateReplacementCloneWithOriginal(SVGElement&amp; replacementClone, SVGElement&amp; originalClone)
+{
+    SVGElement* correspondingElement = originalClone.correspondingElement();
+    ASSERT(correspondingElement);
+    originalClone.setCorrespondingElement(nullptr);
+    replacementClone.setCorrespondingElement(correspondingElement);
+}
+
+static void associateReplacementClonesWithOriginals(SVGElement&amp; replacementClone, SVGElement&amp; originalClone)
+{
+    // This assertion checks that we don't call this with the arguments backwards.
+    // The replacement clone is new and so it's not installed in a parent yet.
+    ASSERT(!replacementClone.parentNode());
+
+    // The loop below works because we are associating these clones immediately, before
+    // doing transformations like removing disallowed elements or expanding elements.
+    associateReplacementCloneWithOriginal(replacementClone, originalClone);
+    for (auto pair : descendantsOfType&lt;SVGElement&gt;(replacementClone, originalClone))
+        associateReplacementCloneWithOriginal(pair.first, pair.second);
+}
+
</ins><span class="cx"> void SVGUseElement::buildShadowTree(SVGElement&amp; target)
</span><span class="cx"> {
</span><span class="cx">     Ref&lt;SVGElement&gt; clonedTarget = static_pointer_cast&lt;SVGElement&gt;(target.cloneElementWithChildren(document())).releaseNonNull();
</span><ins>+    associateClonesWithOriginals(clonedTarget.get(), target);
</ins><span class="cx">     removeDisallowedElementsFromSubtree(clonedTarget.get());
</span><span class="cx">     ensureUserAgentShadowRoot().appendChild(WTF::move(clonedTarget));
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+bool SVGUseElement::isValidTarget(Element* target) const
+{
+    if (!is&lt;SVGElement&gt;(target))
+        return false;
+    if (!target-&gt;inDocument())
+        return false;
+    SVGElement&amp; castedTarget = downcast&lt;SVGElement&gt;(*target);
+    if (&amp;castedTarget == this)
+        return false;
+    if (isDisallowedElement(castedTarget))
+        return false;
+    // Reject any target that would create a cycle.
+    for (auto&amp; ancestor : lineageOfType&lt;SVGElement&gt;(*this)) {
+        if (ancestor.correspondingElement() == &amp;castedTarget)
+            return false;
+    }
+    return true;
+}
+
</ins><span class="cx"> void SVGUseElement::expandUseElementsInShadowTree()
</span><span class="cx"> {
</span><del>-    // Why expand the &lt;use&gt; elements in the shadow tree here, and not just
-    // do this directly in buildShadowTree, as we encounter each &lt;use&gt; element?
-    // Because we might miss expanding some elements if we did it then. If a &lt;symbol&gt;
-    // contained &lt;use&gt; elements, we'd miss those.
</del><ins>+    // FIXME: Combine this with buildShadowTree.
</ins><span class="cx"> 
</span><ins>+    if (cachedDocumentIsStillLoading())
+        return;
+
</ins><span class="cx">     auto descendants = descendantsOfType&lt;SVGUseElement&gt;(*userAgentShadowRoot());
</span><span class="cx">     auto end = descendants.end();
</span><span class="cx">     for (auto it = descendants.begin(); it != end; ) {
</span><span class="cx">         Ref&lt;SVGUseElement&gt; original = *it;
</span><span class="cx">         it = end; // Efficiently quiets assertions due to the outstanding iterator.
</span><span class="cx"> 
</span><del>-        ASSERT(!original-&gt;cachedDocumentIsStillLoading());
</del><ins>+        if (original-&gt;cachedDocumentIsStillLoading())
+            return;
</ins><span class="cx"> 
</span><span class="cx">         // Spec: In the generated content, the 'use' will be replaced by 'g', where all attributes from the
</span><span class="cx">         // 'use' element except for x, y, width, height and xlink:href are transferred to the generated 'g' element.
</span><span class="lines">@@ -610,19 +519,16 @@
</span><span class="cx">         // different document?
</span><span class="cx">         ASSERT(referencedDocument());
</span><span class="cx">         auto replacement = SVGGElement::create(SVGNames::gTag, *referencedDocument());
</span><del>-
</del><span class="cx">         original-&gt;transferAttributesToShadowTreeReplacement(replacement.get());
</span><span class="cx">         original-&gt;cloneChildNodes(replacement.ptr());
</span><ins>+        associateReplacementClonesWithOriginals(replacement.get(), original.get());
</ins><span class="cx"> 
</span><span class="cx">         RefPtr&lt;SVGElement&gt; clonedTarget;
</span><span class="cx">         Element* targetCandidate = SVGURIReference::targetElementFromIRIString(original-&gt;href(), *referencedDocument());
</span><del>-        if (is&lt;SVGElement&gt;(targetCandidate) &amp;&amp; !isDisallowedElement(downcast&lt;SVGElement&gt;(*targetCandidate))) {
</del><ins>+        if (original-&gt;isValidTarget(targetCandidate)) {
</ins><span class="cx">             SVGElement&amp; originalTarget = downcast&lt;SVGElement&gt;(*targetCandidate);
</span><span class="cx">             clonedTarget = static_pointer_cast&lt;SVGElement&gt;(originalTarget.cloneElementWithChildren(document()));
</span><del>-            // Set the corresponding element here so transferSizeAttributesToShadowTreeTargetClone
-            // can use it. It will be set again later in associateInstancesWithShadowTreeElements,
-            // but it does no harm to set it twice.
-            clonedTarget-&gt;setCorrespondingElement(&amp;originalTarget);
</del><ins>+            associateClonesWithOriginals(*clonedTarget, originalTarget);
</ins><span class="cx">             replacement-&gt;appendChild(clonedTarget);
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="lines">@@ -663,6 +569,8 @@
</span><span class="cx">         auto replacement = SVGSVGElement::create(SVGNames::svgTag, *referencedDocument());
</span><span class="cx">         replacement-&gt;cloneDataFromElement(original);
</span><span class="cx">         original.cloneChildNodes(replacement.ptr());
</span><ins>+        associateReplacementClonesWithOriginals(replacement.get(), original);
+
</ins><span class="cx">         removeDisallowedElementsFromSubtree(replacement.get());
</span><span class="cx"> 
</span><span class="cx">         // Replace &lt;symbol&gt; with the &lt;svg&gt; element we created.
</span><span class="lines">@@ -683,75 +591,6 @@
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void SVGUseElement::associateInstancesWithShadowTreeElements(Node* target, SVGElementInstance* targetInstance)
-{
-    if (!target || !targetInstance)
-        return;
-
-    SVGElement* originalElement = targetInstance-&gt;correspondingElement();
-
-    if (originalElement-&gt;hasTagName(SVGNames::useTag)) {
-        // &lt;use&gt; gets replaced by &lt;g&gt;
-        ASSERT(target-&gt;nodeName() == SVGNames::gTag);
-    } else if (originalElement-&gt;hasTagName(SVGNames::symbolTag)) {
-        // &lt;symbol&gt; gets replaced by &lt;svg&gt;
-        ASSERT(target-&gt;nodeName() == SVGNames::svgTag);
-    } else
-        ASSERT(target-&gt;nodeName() == originalElement-&gt;nodeName());
-
-    SVGElement* element = nullptr;
-    if (target-&gt;isSVGElement())
-        element = downcast&lt;SVGElement&gt;(target);
-
-    ASSERT(!targetInstance-&gt;shadowTreeElement());
-    targetInstance-&gt;setShadowTreeElement(element);
-    element-&gt;setCorrespondingElement(originalElement);
-
-    Node* node = target-&gt;firstChild();
-    for (SVGElementInstance* instance = targetInstance-&gt;firstChild(); node &amp;&amp; instance; instance = instance-&gt;nextSibling()) {
-        // Skip any non-svg elements in shadow tree
-        while (node &amp;&amp; !node-&gt;isSVGElement())
-           node = node-&gt;nextSibling();
-
-        if (!node)
-            break;
-
-        associateInstancesWithShadowTreeElements(node, instance);
-        node = node-&gt;nextSibling();
-    }
-}
-
-SVGElementInstance* SVGUseElement::instanceForShadowTreeElement(Node* element) const
-{
-    if (!m_targetElementInstance) {
-        ASSERT(!inDocument());
-        return 0;
-    }
-
-    return instanceForShadowTreeElement(element, m_targetElementInstance.get());
-}
-
-SVGElementInstance* SVGUseElement::instanceForShadowTreeElement(Node* element, SVGElementInstance* instance) const
-{
-    ASSERT(element);
-    ASSERT(instance);
-
-    // We're dispatching a mutation event during shadow tree construction
-    // this instance hasn't yet been associated to a shadowTree element.
-    if (!instance-&gt;shadowTreeElement())
-        return 0;
-
-    if (element == instance-&gt;shadowTreeElement())
-        return instance;
-
-    for (SVGElementInstance* current = instance-&gt;firstChild(); current; current = current-&gt;nextSibling()) {
-        if (SVGElementInstance* search = instanceForShadowTreeElement(element, current))
-            return search;
-    }
-
-    return 0;
-}
-
</del><span class="cx"> void SVGUseElement::invalidateShadowTree()
</span><span class="cx"> {
</span><span class="cx">     if (m_needsShadowTreeRecreation)
</span><span class="lines">@@ -763,7 +602,6 @@
</span><span class="cx"> 
</span><span class="cx"> void SVGUseElement::invalidateDependentShadowTrees()
</span><span class="cx"> {
</span><del>-    // Recursively invalidate dependent &lt;use&gt; shadow trees
</del><span class="cx">     for (auto* instance : instances()) {
</span><span class="cx">         if (SVGUseElement* element = instance-&gt;correspondingUseElement()) {
</span><span class="cx">             ASSERT(element-&gt;inDocument());
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGUseElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGUseElement.h (179806 => 179807)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGUseElement.h        2015-02-08 23:21:02 UTC (rev 179806)
+++ trunk/Source/WebCore/svg/SVGUseElement.h        2015-02-08 23:22:24 UTC (rev 179807)
</span><span class="lines">@@ -34,7 +34,6 @@
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> class CachedSVGDocument;
</span><del>-class SVGElementInstance;
</del><span class="cx"> class SVGGElement;
</span><span class="cx"> 
</span><span class="cx"> class SVGUseElement final : public SVGGraphicsElement,
</span><span class="lines">@@ -45,7 +44,6 @@
</span><span class="cx">     static Ref&lt;SVGUseElement&gt; create(const QualifiedName&amp;, Document&amp;, bool wasInsertedByParser);
</span><span class="cx">     virtual ~SVGUseElement();
</span><span class="cx"> 
</span><del>-    SVGElementInstance* instanceForShadowTreeElement(Node*) const;
</del><span class="cx">     void invalidateShadowTree();
</span><span class="cx">     void invalidateDependentShadowTrees();
</span><span class="cx"> 
</span><span class="lines">@@ -73,18 +71,12 @@
</span><span class="cx">     virtual void toClipPath(Path&amp;) override;
</span><span class="cx"> 
</span><span class="cx">     void clearResourceReferences();
</span><del>-    void buildShadowAndInstanceTree(SVGElement&amp; target);
-    void detachInstance();
</del><span class="cx"> 
</span><span class="cx">     virtual bool haveLoadedRequiredResources() override { return SVGExternalResourcesRequired::haveLoadedRequiredResources(); }
</span><span class="cx"> 
</span><span class="cx">     virtual void finishParsingChildren() override;
</span><span class="cx">     virtual bool selfHasRelativeLengths() const override;
</span><span class="cx"> 
</span><del>-    // Instance tree handling
-    void buildInstanceTree(SVGElement* target, SVGElementInstance* targetInstance, bool&amp; foundCycle, bool foundUse);
-    bool hasCycleUseReferencing(SVGUseElement*, SVGElementInstance* targetInstance, SVGElement*&amp; newTarget);
-
</del><span class="cx">     // Shadow tree handling.
</span><span class="cx">     void buildShadowTree(SVGElement&amp; target);
</span><span class="cx">     void expandUseElementsInShadowTree();
</span><span class="lines">@@ -93,11 +85,8 @@
</span><span class="cx">     void transferEventListenersToShadowTree();
</span><span class="cx">     void transferAttributesToShadowTreeReplacement(SVGGElement&amp;) const;
</span><span class="cx">     void transferSizeAttributesToShadowTreeTargetClone(SVGElement&amp;) const;
</span><ins>+    bool isValidTarget(Element*) const;
</ins><span class="cx"> 
</span><del>-    // &quot;Tree connector&quot; 
-    void associateInstancesWithShadowTreeElements(Node* target, SVGElementInstance* targetInstance);
-    SVGElementInstance* instanceForShadowTreeElement(Node* element, SVGElementInstance* instance) const;
-
</del><span class="cx">     BEGIN_DECLARE_ANIMATED_PROPERTIES(SVGUseElement)
</span><span class="cx">         DECLARE_ANIMATED_LENGTH(X, x)
</span><span class="cx">         DECLARE_ANIMATED_LENGTH(Y, y)
</span><span class="lines">@@ -123,7 +112,6 @@
</span><span class="cx">     bool m_wasInsertedByParser;
</span><span class="cx">     bool m_haveFiredLoadEvent;
</span><span class="cx">     bool m_needsShadowTreeRecreation;
</span><del>-    RefPtr&lt;SVGElementInstance&gt; m_targetElementInstance;
</del><span class="cx">     CachedResourceHandle&lt;CachedSVGDocument&gt; m_cachedDocument;
</span><span class="cx">     Timer m_svgLoadEventTimer;
</span><span class="cx"> };
</span></span></pre>
</div>
</div>

</body>
</html>