<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>76527</bug_id>
          
          <creation_ts>2012-01-18 03:37:01 -0800</creation_ts>
          <short_desc>Mask deformations when masked content is rotated</short_desc>
          <delta_ts>2012-05-15 05:55:59 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>SVG</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows 7</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="honyk">j.tosovsky</reporter>
          <assigned_to name="Florin Malita">fmalita</assigned_to>
          <cc>eric</cc>
    
    <cc>fmalita</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>537753</commentid>
    <comment_count>0</comment_count>
      <attachid>122899</attachid>
    <who name="honyk">j.tosovsky</who>
    <bug_when>2012-01-18 03:37:01 -0800</bug_when>
    <thetext>Created attachment 122899
Test Case

1. Open the attached image in Chrome 18-dev or Safari
2. Drag and rotate that yellow arc
3. While FF, MSIE and Opera render that arc properly, Webkit based browsers deform the original mask shape</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542548</commentid>
    <comment_count>1</comment_count>
      <attachid>123991</attachid>
    <who name="Florin Malita">fmalita</who>
    <bug_when>2012-01-25 12:57:56 -0800</bug_when>
    <thetext>Created attachment 123991
Reduced test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542568</commentid>
    <comment_count>2</comment_count>
    <who name="Florin Malita">fmalita</who>
    <bug_when>2012-01-25 13:17:26 -0800</bug_when>
    <thetext>The problem appears to be aggressive caching of mask image data: it is generated based on the target clamped rect (RenderSVGResourceMasker::applyResource()), but never updated/invalidated if the target rect changes (transform updates, etc.). Then the old image buffer is applied as a mask to a different size rect and the graphics context scales it to fit -&gt; hence the deformation.

The same issue also affects clip paths.

One solution is to force a mask/clip data update on target rect changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542587</commentid>
    <comment_count>3</comment_count>
      <attachid>124002</attachid>
    <who name="Florin Malita">fmalita</who>
    <bug_when>2012-01-25 13:45:12 -0800</bug_when>
    <thetext>Created attachment 124002
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543417</commentid>
    <comment_count>4</comment_count>
      <attachid>124002</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-01-26 13:08:01 -0800</bug_when>
    <thetext>Comment on attachment 124002
Patch

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

&gt; Source/WebCore/ChangeLog:24
&gt; +        Track the target rect used when creating the mask/clip image buffer, and re-generate the data
&gt; +        on changes.

This seems like the wrong approach - we expect the resources to be invalidated, if they need to be updated. They shouldn&apos;t trigger invalidations on their own!
I&apos;ll look through the testcase, and see why it doesn&apos;t work atm.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543418</commentid>
    <comment_count>5</comment_count>
      <attachid>124002</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-01-26 13:08:02 -0800</bug_when>
    <thetext>Comment on attachment 124002
Patch

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

&gt; Source/WebCore/ChangeLog:24
&gt; +        Track the target rect used when creating the mask/clip image buffer, and re-generate the data
&gt; +        on changes.

This seems like the wrong approach - we expect the resources to be invalidated, if they need to be updated. They shouldn&apos;t trigger invalidations on their own!
I&apos;ll look through the testcase, and see why it doesn&apos;t work atm.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543505</commentid>
    <comment_count>6</comment_count>
    <who name="Florin Malita">fmalita</who>
    <bug_when>2012-01-26 14:46:25 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 124002 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=124002&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:24
&gt; &gt; +        Track the target rect used when creating the mask/clip image buffer, and re-generate the data
&gt; &gt; +        on changes.
&gt; 
&gt; This seems like the wrong approach - we expect the resources to be invalidated, if they need to be updated.

I&apos;ve already looked at the invalidation path.

RenderSVGResource::markForLayoutAndParentResourceInvalidation walks the ancestor chain and invalidates any resource container it finds:

     while (current) {
        removeFromFilterCache(current);

        if (current-&gt;isSVGResourceContainer()) {
            // This will process the rest of the ancestors.
            current-&gt;toRenderSVGResourceContainer()-&gt;removeAllClientsFromCache();
            break;
        }

        current = current-&gt;parent();
    }


The problem is that in this case the resource container is not an ancestor of RenderSVGRect, but a sibling:

        RenderSVGContainer {g}
          [masker=&quot;mask&quot;] RenderSVGResourceMasker {mask}
          RenderSVGRect {rect}


So walking RenderSVGRect&apos;s ancestor chain doesn&apos;t hit any resource containers. We can tweak the implementation to query and invalidate the resources for each ancestor - let me know if you prefer this approach and I&apos;ll update the patch.

But do we really want to invalidate the mask data on target updates?

1) with the test submitted by honyk for example, there&apos;s only a narrow range of angles which cause variation in the target rect - so the current patch saves a bunch of mask redraws. I guess we could filter this on the invalidation path also, but...

2) the fact that the mask image buffer depends on its target repaint rect seems like a local implementation detail (optimization) which should not leak into the framework

Could we just size the mask image buffer independently of the target instead and avoid all this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564921</commentid>
    <comment_count>7</comment_count>
    <who name="honyk">j.tosovsky</who>
    <bug_when>2012-02-25 02:22:19 -0800</bug_when>
    <thetext>Any progress in this?

&gt; the current patch saves a bunch of mask redraws
I don&apos;t know internals, but it sounds reasonable to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564934</commentid>
    <comment_count>8</comment_count>
      <attachid>124002</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-02-25 03:51:04 -0800</bug_when>
    <thetext>Comment on attachment 124002
Patch

I&apos;d like to see the testcases using the repaint.js framework, instead of reftests. Also I&apos;m still not sure I understand it yet:
&lt;g mask=&quot;ur(#mask)&quot;&gt;
 &lt;rect id=&quot;masker&quot;..&gt;
If you change the transform attribute for masker, it has no effect on the mask in trunk?
If you&apos;d use &lt;rect id=&quot;masker&quot; mask=&quot;...&quot; /&gt; and change the transform here, the mask updates properly in trunk?

I&apos;m not at all against, revisiting the whole resource updating logic, but I wouldn&apos;t like it, if we had a mixture. Currently most resource updating logic is piped through markForLayoutAndParentResourceInvalidation, and it would be a new approach, if clippers/maskers/filters would track the target repaint rect instead to save redraws. The question is: how can we unify this?

In general, I think tracking the absolute repaint rect should be an optimization, and not a bug fix? Isn&apos;t it just a side-effect that this is now fixed.
Are there no other ways of invalidation that still won&apos;t work?

What about, eg:
&lt;g mask=&quot;url(#mask)&quot;&gt;
    &lt;svg id=&quot;svgWithViewBox&quot; viewBox=&quot;0 0 1 100&quot;&gt;
        &lt;rect id=&quot;masker&quot; x=&quot;...
    &lt;/svg
&lt;/g&gt;

Now change the &apos;viewBox&apos; attribute through a script. Does that work in trunk, or with your patch? I don&apos;t fully understand it yet, it seems.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564935</commentid>
    <comment_count>9</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-02-25 04:18:55 -0800</bug_when>
    <thetext>Note the attachment &quot;Reduced test&quot; can be reduced even more:
the spinner1 setAttribute(&apos;transform&apos;) is not needed at all to trigger the bug, just makes it more visible.
Anyhow, you&apos;ve said:
&lt;quote&gt;
The problem is that in this case the resource container is not an ancestor of RenderSVGRect, but a sibling:
        RenderSVGContainer {g}
          [masker=&quot;mask&quot;] RenderSVGResourceMasker {mask}
          RenderSVGRect {rect}
&lt;/quote&gt;

I don&apos;t see this in your testcase:
&lt;defs&gt;
  &lt;mask id=&quot;mask&quot;&gt;
    &lt;circle cx=&quot;50&quot; r=&quot;50&quot; fill=&quot;white&quot;/&gt;
  &lt;/mask&gt;
&lt;/defs&gt;
...
&lt;g mask=&quot;url(#mask)&quot;&gt;
      &lt;rect id=&quot;spinner2&quot; y=&quot;-50&quot; width=&quot;100&quot; height=&quot;200&quot; fill=&quot;green&quot; onmousedown=&quot;rotate()&quot;/&gt;
&lt;/g&gt;

..
        function rotate() {
                angle = angle + 5;
                document.getElementById(&apos;spinner2&apos;).setAttribute(&apos;transform&apos;, &apos;rotate(&apos; + angle + &apos;)&apos;);
...


When the &lt;rect id=&quot;spinner2&quot; transform changes, it should mark itself for layout and parent resource invalidation, from SVGStyledTransformableElement::svgAttributeChanged:
    if (attrName == SVGNames::transformAttr) {
        object-&gt;setNeedsTransformUpdate();
        RenderSVGResource::markForLayoutAndParentResourceInvalidation(object);
...

void RenderSVGResource::markForLayoutAndParentResourceInvalidation(RenderObject* object, bool needsLayout)
{
...
    removeFromFilterCacheAndInvalidateDependencies(object, needsLayout);
...
    RenderObject* current = object-&gt;parent();
    while (current) {
...
        if (current-&gt;isSVGResourceContainer()) {
            // This will process the rest of the ancestors.
            current-&gt;toRenderSVGResourceContainer()-&gt;removeAllClientsFromCache();
....

So what does markForLayoutAndParentResourceInvalidation do:
It deregisters all clients of elements in the ancestor chain, that are resources. eg: 
&lt;linearGradient&gt;&lt;stop/&gt; ... if the &lt;stop&gt; &apos;offset&apos; attribute changes, RenderSVGResourceLinearGradients::removeAllClientsFromCache(), so the gradient will be rebuilt, once its used next time.

What this method doesn&apos;t do is to check whether any ancestor element itself references resources.
It only does that for filter resources.

static inline void removeFromFilterCacheAndInvalidateDependencies(RenderObject* object, bool needsLayout)
{
    ASSERT(object);
#if ENABLE(FILTERS)
    if (SVGResources* resources = SVGResourcesCache::cachedResourcesForRenderObject(object)) {
        if (RenderSVGResourceFilter* filter = resources-&gt;filter())
            filter-&gt;removeClientFromCache(object);
    }
#endif

I think the correct fix is to extend this for clip/mask, like its done in SVGResources::removeClientFromCache(). We could refactor this to
removeClipperFilterMaskerDataFomCache(), and use that both from SVGResources::removeClientFromCache and from removeFromFilterCacheAndInvalidateDeps, which should then of course be renamed to something correct :-)

For fun, I tried to change the testcase to switch between fill=&quot;red&quot; and fill=&quot;green&quot; every 50ms. It turns out that this works fine and properly invalidates the masker resource. This is because clientStyleDidChange, calls clientUpdatedFromElement, which _rebuilds_ the SVGResources, even though the resources themselves haven&apos;t changed (aka. you didn&apos;t add or remove a mask/clip-path attribute). So it only works because we unncessaryly rebuild the SVGResources (removeResourcedFromRenderObject/addResourcesFromRenderObject) even though they didn&apos;t change.

If we fix that bug (change clientUpdatedFromElement to only rebuild the SVGResources* when necessary, CSS changes would suffer from the same mask/clip bug that you&apos;ve found, erm honyk found).

To summarize: I&apos;d advice to add mask/clip invalidation in removeFromFilterCacheAndInvalidateDependencies, as described above, that should fix all these bugs. We should then investigate cases where we do needless invalidations, instead of avoding them with the cache and compare target repaint rect sledgehammer. Needless invalidations have to be stopped right from the beginning, they shoulnd&apos;t happen at all - the whole resources concept is based on that.

Ouch, what a long post, I hope you&apos;re still with me :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>623236</commentid>
    <comment_count>10</comment_count>
      <attachid>141773</attachid>
    <who name="Florin Malita">fmalita</who>
    <bug_when>2012-05-14 13:02:42 -0700</bug_when>
    <thetext>Created attachment 141773
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>623242</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-14 13:05:49 -0700</bug_when>
    <thetext>Attachment 141773 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/plat...&quot; exit_code: 1
LayoutTests/platform/chromium/test_expectations.txt:3780:  BUG\d+ is not allowed, must be one of BUGCR\d+, BUGWK\d+, BUGV8_\d+, or a non-numeric bug identifier. fast/dom/Window/window-property-shadowing-name.html  [test/expectations] [5]
Total errors found: 1 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>623247</commentid>
    <comment_count>12</comment_count>
    <who name="Florin Malita">fmalita</who>
    <bug_when>2012-05-14 13:12:19 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; Attachment 141773 [details] did not pass style-queue:
&gt; 
&gt; Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/plat...&quot; exit_code: 1
&gt; LayoutTests/platform/chromium/test_expectations.txt:3780:  BUG\d+ is not allowed, must be one of BUGCR\d+, BUGWK\d+, BUGV8_\d+, or a non-numeric bug identifier. fast/dom/Window/window-property-shadowing-name.html  [test/expectations] [5]
&gt; Total errors found: 1 in 8 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against check-webkit-style.

That line is not part of this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>623693</commentid>
    <comment_count>13</comment_count>
      <attachid>141773</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-05-14 23:36:58 -0700</bug_when>
    <thetext>Comment on attachment 141773
Patch

Looks great, r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>623951</commentid>
    <comment_count>14</comment_count>
      <attachid>141773</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-15 05:55:53 -0700</bug_when>
    <thetext>Comment on attachment 141773
Patch

Clearing flags on attachment: 141773

Committed r117056: &lt;http://trac.webkit.org/changeset/117056&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>623952</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-15 05:55:59 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>122899</attachid>
            <date>2012-01-18 03:37:01 -0800</date>
            <delta_ts>2012-01-18 03:37:01 -0800</delta_ts>
            <desc>Test Case</desc>
            <filename>test_case.svg</filename>
            <type>image/svg+xml</type>
            <size>4421</size>
            <attacher name="honyk">j.tosovsky</attacher>
            
              <data encoding="base64">PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjEiIHg9IjBweCIgeT0iMHB4IiB3
aWR0aD0iMTAyNHB4IiBoZWlnaHQ9Ijc2OHB4IiB2aWV3Qm94PSI1MjEuMzE3IDIzMy4xODggMTAy
NCA3NjgiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgNTIxLjMxNyAyMzMuMTg4IDEwMjQgNzY4IiB4
bWw6c3BhY2U9InByZXNlcnZlIiBvbmxvYWQ9InN0YXJ0dXAoZXZ0KSI+CiAgIDxzY3JpcHQgdHlw
ZT0iYXBwbGljYXRpb24vZWNtYXNjcmlwdCI+CiAgICAgIDwhW0NEQVRBW3ZhciBzdmdEb2N1bWVu
dDsKICAgICAgICAgdmFyIGFuZ2xlID0gMDsKICAgICAgICAgdmFyIGFuZ2xlMCA9IDA7CiAgICAg
ICAgIHZhciBhbmdsZTEgPSAwOwogICAgICAgICB2YXIgbW92aW5nID0gZmFsc2U7CiAgICAgICAg
IHZhciBhY3RpdmUsIHBhc3NpdmUsIHdoZWVsLCBzaXplWCwgc2l6ZVk7CiAgICAgICAgIAogICAg
ICAgICBmdW5jdGlvbiBzdGFydHVwKGV2dCkgewogICAgICAgICAgICBzdmdEb2N1bWVudCA9IGV2
dC50YXJnZXQub3duZXJEb2N1bWVudDsKICAgICAgICAgICAgYWN0aXZlID0gc3ZnRG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImFjdGl2ZSIpOwogICAgICAgICAgICBwYXNzaXZlID0gc3ZnRG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInBhc3NpdmUiKTsKICAgICAgICAgICAgd2hlZWwgPSBzdmdEb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgid2hlZWwiKTsKICAgICAgICAgICAgc2l6ZVggPSBzY3JlZW4u
d2lkdGg7CiAgICAgICAgICAgIHNpemVZID0gc2NyZWVuLmhlaWdodDsKICAgICAgICAgfQogICAg
ICAgICAKICAgICAgICAgZnVuY3Rpb24gd2hlZWxNb3VzZURvd24oZXZ0KSB7CiAgICAgICAgICAg
IG1vdmluZyA9IHRydWU7CiAgICAgICAgICAgIGFuZ2xlMCA9IE1hdGguYXRhbjIoMiAqIGdldFko
ZXZ0KSAtIHNpemVZLCAyICogZ2V0WChldnQpIC0gc2l6ZVgpOwogICAgICAgICAgICBwYXNzaXZl
LnNldEF0dHJpYnV0ZSgnc3R5bGUnLCAiY3Vyc29yOiB1cmwoLi4vY2xvc2VkaGFuZC5jdXIpLCBj
cm9zc2hhaXI7Iik7CiAgICAgICAgICAgIGFjdGl2ZS5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgImN1
cnNvcjogdXJsKC4uL2Nsb3NlZGhhbmQuY3VyKSwgY3Jvc3NoYWlyOyIpOwogICAgICAgICB9CiAg
ICAgICAgIAogICAgICAgICBmdW5jdGlvbiB3aGVlbE1vdXNlTW92ZShldnQpIHsKICAgICAgICAg
ICAgaWYgKG1vdmluZykgewogICAgICAgICAgICAgICBhbmdsZTEgPSBNYXRoLmF0YW4yKDIgKiBn
ZXRZKGV2dCkgLSBzaXplWSwgMiAqIGdldFgoZXZ0KSAtIHNpemVYKTsKICAgICAgICAgICAgICAg
YW5nbGUgPSBhbmdsZSArIGFuZ2xlMSAtIGFuZ2xlMDsKICAgICAgICAgICAgICAgYW5nbGUwID0g
YW5nbGUxOwogICAgICAgICAgICAgICB3aGVlbC5zZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIsInJv
dGF0ZSgiICsgKDE4MCAqIGFuZ2xlIC8gTWF0aC5QSSkgKyAiKSIpOwogICAgICAgICAgICB9CiAg
ICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGZ1bmN0aW9uIHdoZWVsTW91c2VVcChldnQpIHsK
ICAgICAgICAgICAgbW92aW5nID0gZmFsc2U7CiAgICAgICAgICAgIHBhc3NpdmUucmVtb3ZlQXR0
cmlidXRlKCdzdHlsZScpOwogICAgICAgICAgICBhY3RpdmUuc2V0QXR0cmlidXRlKCdzdHlsZScs
ICJjdXJzb3I6IHVybCguLi9vcGVuaGFuZC5jdXIpLCBwb2ludGVyOyIpOwogICAgICAgICB9CiAg
ICAgICAgIAogICAgICAgICBmdW5jdGlvbiBnZXRYKGV2dCkgewogICAgICAgICAJdmFyIHBvc3gg
PSAwOwogICAgICAgICAJaWYgKGV2dC5wYWdlWCkgCXsKICAgICAgICAgCQlwb3N4ID0gZXZ0LnBh
Z2VYOwogICAgICAgICAJfQogICAgICAgICAJZWxzZSBpZiAoZXZ0LmNsaWVudFgpIHsKICAgICAg
ICAgCQlwb3N4ID0gZXZ0LmNsaWVudFggKyBkb2N1bWVudC5ib2R5LnNjcm9sbExlZnQKICAgICAg
ICAgCQkJKyBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdDsKICAgICAgICAgCX0K
ICAgICAgICAgCXJldHVybiBwb3N4OwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBmdW5j
dGlvbiBnZXRZKGV2dCkgewogICAgICAgICAJdmFyIHBvc3kgPSAwOwogICAgICAgICAJaWYgKGV2
dC5wYWdlWSkgCXsKICAgICAgICAgCQlwb3N5ID0gZXZ0LnBhZ2VZOwogICAgICAgICAJfQogICAg
ICAgICAJZWxzZSBpZiAoZXZ0LmNsaWVudFkpIHsKICAgICAgICAgCQlwb3N5ID0gZXZ0LmNsaWVu
dFkgKyBkb2N1bWVudC5ib2R5LnNjcm9sbFRvcAogICAgICAgICAJCQkrIGRvY3VtZW50LmRvY3Vt
ZW50RWxlbWVudC5zY3JvbGxUb3A7CiAgICAgICAgIAl9CiAgICAgICAgIAlyZXR1cm4gcG9zeTsK
ICAgICAgfV1dPgogICA8L3NjcmlwdD4KCiAgIDxkZWZzPgogICAgICA8c3R5bGUgdHlwZT0idGV4
dC9jc3MiPjwhW0NEQVRBWwogICAgICAgICBzdmcgewogICAgICAgICAgICAgbWFyZ2luOiBhdXRv
OwogICAgICAgICAgICAgYmFja2dyb3VuZDogIzRkNGQ0ZDsgCiAgICAgICAgIH0KICAgICAgICAg
Lm1hc2tXaGl0ZSB7CiAgICAgICAgICAgICBmaWxsOiB3aGl0ZTsKICAgICAgICAgfSAKICAgICAg
ICAgLmV2ZW50c1RhcmdldCB7CiAgICAgICAgICAgICBmaWxsOiB3aGl0ZTsKICAgICAgICAgICAg
IG9wYWNpdHk6IDA7CiAgICAgICAgIH0KICAgICAgICAgLm1vbnRoc1ZpZXdCb3JkZXIgewogICAg
ICAgICAgICAgZmlsbDogbm9uZTsKICAgICAgICAgICAgIHN0cm9rZTogZ3JlZW47CiAgICAgICAg
ICAgICBzdHJva2Utd2lkdGg6IDM7CiAgICAgICAgIH0KICAgICAgICAgXV0+CiAgICAgIDwvc3R5
bGU+CiAgICAgIAogICAgICA8cmVjdCBpZD0iZnVsbEFyZWEiIHg9IjAiIHk9IjAiIHdpZHRoPSIx
MDI0LjAiIGhlaWdodD0iNzY4LjAiLz4KCiAgICAgIDxwYXRoIGlkPSJtb250aHNWaWV3IiBkPSJN
LTI5OS4zIDE3Mi44QTM0NS42IDM0NS42IDAgMSAxIDI5OS4zIDE3Mi44TDMzMi41NSAxOTJBMzg0
IDM4NCAwIDEgMCAtMzMyLjU1IDE5MloiLz4KCiAgICAgIDxtYXNrIGlkPSJtYXNrV2hlZWwiPgog
ICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNtb250aHNWaWV3IiBjbGFzcz0ibWFza1doaXRlIi8+
ICAgICAgICAgCiAgICAgIDwvbWFzaz4gICAKICAgPC9kZWZzPgoKICAgPGcgdHJhbnNmb3JtPSJ0
cmFuc2xhdGUoNTIxLjMxNywgMjMzLjE4OCkiPgogICAgICA8ZyBpZD0iY29udGVudEdlbmVyYXRl
ZCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNTEyLCAzODQpIj4KCiAgICAgICAgIDxnIG1hc2s9InVy
bCgjbWFza1doZWVsKSI+CiAgICAgICAgICAgIDxnIGlkPSJ3aGVlbCI+CiAgICAgICAgICAgICAg
IDxwYXRoIGQ9Ik0wIC0zODRDMjEyLjA4IC0zODQgMzg0IC0yMTIuMDggMzg0IDBDMzg0IDIxMi4w
OCAyMTIuMDggMzg0IDAgMzg0Qy0yMTIuMDggMzg0IC0zODQgMjEyLjA4IC0zODQgMEMtMzg0IC0y
MTIuMDggLTIxMi4wOCAtMzg0IDAgLTM4NCIgZmlsbD0ieWVsbG93Ii8+CiAgICAgICAgICAgICAg
IDxyZWN0IHg9IjAiIHk9IjAiIGZpbGw9ImJsdWUiIHdpZHRoPSIxMDI0IiBoZWlnaHQ9Ijc2OCIv
PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAg
ICAgICAgIDwvZz4KICAgICAgICAgPC9nPgogICAgICAgICAKICAgICAgICAgPGcgaWQ9Im1vdXNl
QXJlYXMiPgogICAgICAgICAgICA8ZyBpZD0icGFzc2l2ZSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUo
LTUxMiwgLTM4NCkiIG9ubW91c2Vtb3ZlPSJ3aGVlbE1vdXNlTW92ZShldnQpIiBvbm1vdXNldXA9
IndoZWVsTW91c2VVcChldnQpIj4KICAgICAgICAgICAgICAgPHVzZSB4bGluazpocmVmPSIjZnVs
bEFyZWEiIGNsYXNzPSJldmVudHNUYXJnZXQiLz4KICAgICAgICAgICAgPC9nPgogICAgICAgICAg
ICA8ZyBpZD0iYWN0aXZlIiBzdHlsZT0iY3Vyc29yOiB1cmwoLi4vb3BlbmhhbmQuY3VyKSwgcG9p
bnRlcjsiIG9ubW91c2Vkb3duPSJ3aGVlbE1vdXNlRG93bihldnQpIiBvbm1vdXNlbW92ZT0id2hl
ZWxNb3VzZU1vdmUoZXZ0KSIgb25tb3VzZXVwPSJ3aGVlbE1vdXNlVXAoZXZ0KSI+CiAgICAgICAg
ICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI21vbnRoc1ZpZXciIGNsYXNzPSJldmVudHNUYXJnZXQi
Lz4gICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgPC9nPgogICAgICAgICA8L2c+CgogICAg
ICAgICA8ZyBpZD0iZnJvbnRHcmFwaGljcyI+CiAgICAgICAgICAgIDxnIGlkPSJtYXBWaWV3Qm9y
ZGVyIj4KICAgICAgICAgICAgICAgPHVzZSB4bGluazpocmVmPSIjbW9udGhzVmlldyIgY2xhc3M9
Im1vbnRoc1ZpZXdCb3JkZXIiLz4KICAgICAgICAgICAgPC9nPgogICAgICAgICA8L2c+ICAgICAg
ICAgCgogICAgICA8L2c+CiAgIDwvZz4KCjwvc3ZnPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>123991</attachid>
            <date>2012-01-25 12:57:56 -0800</date>
            <delta_ts>2012-01-25 12:57:56 -0800</delta_ts>
            <desc>Reduced test.</desc>
            <filename>mask-target-transform.svg</filename>
            <type>image/svg+xml</type>
            <size>909</size>
            <attacher name="Florin Malita">fmalita</attacher>
            
              <data encoding="base64">PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMDI0IiBoZWln
aHQ9Ijc2OCIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHZpZXdC
b3g9Ii0yMDAgLTIwMCA4MDAgNjAwIiBvbmxvYWQ9IndpbmRvdy5zZXRJbnRlcnZhbChyb3RhdGUs
IDUwKTsiPgo8ZGVmcz4KICA8bWFzayBpZD0ibWFzayI+CiAgICA8Y2lyY2xlIGN4PSI1MCIgcj0i
NTAiIGZpbGw9IndoaXRlIi8+CiAgPC9tYXNrPgo8L2RlZnM+Cgo8cmVjdCBpZD0ic3Bpbm5lcjEi
IHk9Ii01MCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIyMDAiIGZpbGw9InRyYW5zcGFyZW50IiBzdHJv
a2U9ImJsYWNrIiBvbm1vdXNlZG93bj0icm90YXRlKCkiLz4KPGNpcmNsZSBjeD0iNTAiIHI9IjUw
IiBzdHJva2U9ImJsYWNrIiBmaWxsPSJ0cmFuc3BhcmVudCIvPgoKPGcgbWFzaz0idXJsKCNtYXNr
KSI+CiAgICAgIDxyZWN0IGlkPSJzcGlubmVyMiIgeT0iLTUwIiB3aWR0aD0iMTAwIiBoZWlnaHQ9
IjIwMCIgZmlsbD0iZ3JlZW4iIG9ubW91c2Vkb3duPSJyb3RhdGUoKSIvPgo8L2c+Cgo8c2NyaXB0
PgogICAgICAgIHZhciBhbmdsZSA9IDA7CiAgICAgICAgZnVuY3Rpb24gcm90YXRlKCkgewogICAg
ICAgICAgICAgICAgYW5nbGUgPSBhbmdsZSArIDU7ICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NwaW5uZXIxJykuc2V0QXR0cmlidXRlKCd0
cmFuc2Zvcm0nLCAncm90YXRlKCcgKyBhbmdsZSArICcpJyk7CiAgICAgICAgICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnc3Bpbm5lcjInKS5zZXRBdHRyaWJ1dGUoJ3RyYW5zZm9ybScs
ICdyb3RhdGUoJyArIGFuZ2xlICsgJyknKTsKICAgICAgICB9Cjwvc2NyaXB0Pgo8L3N2Zz4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124002</attachid>
            <date>2012-01-25 13:45:12 -0800</date>
            <delta_ts>2012-05-14 13:02:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76527-20120125164511.patch</filename>
            <type>text/plain</type>
            <size>8939</size>
            <attacher name="Florin Malita">fmalita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1ODc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzkyYjY0YTY0NDQ5Mjc2
ZjQ2MGE1NmJhNjg2YTdhNDMwMzQ4MmY5ZS4uMjFlNDY3NmNiYTA2YWM2N2M1ZWU2MDRkYTRmNGMz
MDhkZWZhMjdjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTAxLTI1ICBGbG9y
aW4gTWFsaXRhICA8Zm1hbGl0YUBnb29nbGUuY29tPgorCisgICAgICAgIE1hc2sgZGVmb3JtYXRp
b25zIHdoZW4gbWFza2VkIGNvbnRlbnQgaXMgcm90YXRlZAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzY1MjcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0czogc3ZnL3JlcGFpbnQvbWFzay1jbGlwLXRh
cmdldC10cmFuc2Zvcm0tZXhwZWN0ZWQuaHRtbAorICAgICAgICAgICAgICAgc3ZnL3JlcGFpbnQv
bWFzay1jbGlwLXRhcmdldC10cmFuc2Zvcm0uaHRtbAorCisKKyAgICAgICAgTWFzayBhbmQgY2xp
cCBpbWFnZSBidWZmZXJzIGFyZSBjcmVhdGVkIGJhc2VkIG9uIHRoZSB0YXJnZXQgcmVwYWludCBy
ZWN0OyB0aGV5IG5lZWQgdG8KKyAgICAgICAgYmUgdXBkYXRlZCB3aGVuIHRoYXQgY2hhbmdlcy4K
KworICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcjo6YXBwbHlDbGlwcGlu
Z1RvQ29udGV4dCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNs
aXBwZXIuaDoKKyAgICAgICAgKENsaXBwZXJEYXRhKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNW
R1Jlc291cmNlTWFza2VyOjphcHBseVJlc291cmNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmg6CisgICAgICAgIChNYXNrZXJEYXRhKToKKyAgICAg
ICAgVHJhY2sgdGhlIHRhcmdldCByZWN0IHVzZWQgd2hlbiBjcmVhdGluZyB0aGUgbWFzay9jbGlw
IGltYWdlIGJ1ZmZlciwgYW5kIHJlLWdlbmVyYXRlIHRoZSBkYXRhCisgICAgICAgIG9uIGNoYW5n
ZXMuCisKKyAgICAgICAgCisKIDIwMTItMDEtMjUgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJv
QGFwcGxlLmNvbT4KIAogICAgICAgICA8aHR0cDovL3dlYmtpdC5vcmcvYi83Njk0MT4gV2ViIElu
c3BlY3RvcjogUmVtb3ZlIFVudXNlZCBJbnNwZWN0b3JGcm9udGVuZEhvc3Quc2VhcmNoIFN0dWIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3Vy
Y2VDbGlwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VDbGlwcGVyLmNwcAppbmRleCAzYjJlNmY5Zjk4ZDlkZTRiNjc4NjI2NzRmMDM0ZTdmOGM1
OWFhMjEyLi42NWFkOTYyYTIwYjcyOTUxMjk0ZmZkNjUxY2YxOGQxZmVmNWUzOGM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZUNsaXBwZXIuY3BwCkBAIC0xNzgsOSArMTc4LDEzIEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VD
bGlwcGVyOjphcHBseUNsaXBwaW5nVG9Db250ZXh0KFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25z
CiAgICAgRmxvYXRSZWN0IGFic29sdXRlVGFyZ2V0UmVjdCA9IGFic29sdXRlVHJhbnNmb3JtLm1h
cFJlY3QocmVwYWludFJlY3QpOwogICAgIEZsb2F0UmVjdCBjbGFtcGVkQWJzb2x1dGVUYXJnZXRS
ZWN0ID0gU1ZHSW1hZ2VCdWZmZXJUb29sczo6Y2xhbXBlZEFic29sdXRlVGFyZ2V0UmVjdChhYnNv
bHV0ZVRhcmdldFJlY3QpOwogCisgICAgaWYgKGNsaXBwZXJEYXRhLT5jbGlwUmVjdCAhPSBjbGFt
cGVkQWJzb2x1dGVUYXJnZXRSZWN0KQorICAgICAgICBzaG91bGRDcmVhdGVDbGlwRGF0YSA9IHRy
dWU7CisKICAgICBpZiAoc2hvdWxkQ3JlYXRlQ2xpcERhdGEgJiYgIWNsYW1wZWRBYnNvbHV0ZVRh
cmdldFJlY3QuaXNFbXB0eSgpKSB7CiAgICAgICAgIGlmICghU1ZHSW1hZ2VCdWZmZXJUb29sczo6
Y3JlYXRlSW1hZ2VCdWZmZXIoYWJzb2x1dGVUYXJnZXRSZWN0LCBjbGFtcGVkQWJzb2x1dGVUYXJn
ZXRSZWN0LCBjbGlwcGVyRGF0YS0+Y2xpcE1hc2tJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwg
VW5hY2NlbGVyYXRlZCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGNsaXBw
ZXJEYXRhLT5jbGlwUmVjdCA9IGNsYW1wZWRBYnNvbHV0ZVRhcmdldFJlY3Q7CiAKICAgICAgICAg
R3JhcGhpY3NDb250ZXh0KiBtYXNrQ29udGV4dCA9IGNsaXBwZXJEYXRhLT5jbGlwTWFza0ltYWdl
LT5jb250ZXh0KCk7CiAgICAgICAgIEFTU0VSVChtYXNrQ29udGV4dCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuaApp
bmRleCAyZmY4YTVkZWNlNjFhYTFjNzYwZjYwMDNiYzE5OWM5MmY3OWRlY2I4Li5mNDVlMTg0OTk3
M2MzMGU0MTg4N2U5MTJmZDMwYmI1MTE5MThhNmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmgKQEAgLTM5LDYg
KzM5LDcgQEAgc3RydWN0IENsaXBwZXJEYXRhIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IGNsaXBNYXNrSW1hZ2U7CisgICAg
RmxvYXRSZWN0IGNsaXBSZWN0OwogfTsKIAogY2xhc3MgUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVy
IDogcHVibGljIFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAKaW5k
ZXggODJhZGM2YTAyYzhhMGI5MzgwM2EzYmI5NTg0OTM5YjRlMGM1MjI1NS4uMjM3MzdkM2QxZjBi
YjhmYTliNWIyNWQ2MTEyMjExMTU5MzRiZjc0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAKQEAgLTk3LDcg
Kzk3LDggQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6YXBwbHlSZXNvdXJjZShSZW5k
ZXJPYmplY3QqIG9iamVjdCwgUmVuZGVyU3R5bGUqLAogICAgIEZsb2F0UmVjdCBhYnNvbHV0ZVRh
cmdldFJlY3QgPSBhYnNvbHV0ZVRyYW5zZm9ybS5tYXBSZWN0KG9iamVjdC0+cmVwYWludFJlY3RJ
bkxvY2FsQ29vcmRpbmF0ZXMoKSk7CiAgICAgRmxvYXRSZWN0IGNsYW1wZWRBYnNvbHV0ZVRhcmdl
dFJlY3QgPSBTVkdJbWFnZUJ1ZmZlclRvb2xzOjpjbGFtcGVkQWJzb2x1dGVUYXJnZXRSZWN0KGFi
c29sdXRlVGFyZ2V0UmVjdCk7CiAKLSAgICBpZiAoIW1hc2tlckRhdGEtPm1hc2tJbWFnZSAmJiAh
Y2xhbXBlZEFic29sdXRlVGFyZ2V0UmVjdC5pc0VtcHR5KCkpIHsKKyAgICBib29sIHNob3VsZENy
ZWF0ZU1hc2tEYXRhID0gIW1hc2tlckRhdGEtPm1hc2tJbWFnZSB8fCBtYXNrZXJEYXRhLT5tYXNr
UmVjdCAhPSBjbGFtcGVkQWJzb2x1dGVUYXJnZXRSZWN0OworICAgIGlmIChzaG91bGRDcmVhdGVN
YXNrRGF0YSAmJiAhY2xhbXBlZEFic29sdXRlVGFyZ2V0UmVjdC5pc0VtcHR5KCkpIHsKICAgICAg
ICAgU1ZHTWFza0VsZW1lbnQqIG1hc2tFbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZHTWFza0VsZW1l
bnQqPihub2RlKCkpOwogICAgICAgICBpZiAoIW1hc2tFbGVtZW50KQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtMTA4LDYgKzEwOSw3IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VNYXNr
ZXI6OmFwcGx5UmVzb3VyY2UoUmVuZGVyT2JqZWN0KiBvYmplY3QsIFJlbmRlclN0eWxlKiwKICAg
ICAgICAgQ29sb3JTcGFjZSBjb2xvclNwYWNlID0gc3ZnU3R5bGUtPmNvbG9ySW50ZXJwb2xhdGlv
bigpID09IENJX0xJTkVBUlJHQiA/IENvbG9yU3BhY2VMaW5lYXJSR0IgOiBDb2xvclNwYWNlRGV2
aWNlUkdCOwogICAgICAgICBpZiAoIVNWR0ltYWdlQnVmZmVyVG9vbHM6OmNyZWF0ZUltYWdlQnVm
ZmVyKGFic29sdXRlVGFyZ2V0UmVjdCwgY2xhbXBlZEFic29sdXRlVGFyZ2V0UmVjdCwgbWFza2Vy
RGF0YS0+bWFza0ltYWdlLCBjb2xvclNwYWNlLCBVbmFjY2VsZXJhdGVkKSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgbWFza2VyRGF0YS0+bWFza1JlY3QgPSBjbGFtcGVkQWJz
b2x1dGVUYXJnZXRSZWN0OwogCiAgICAgICAgIEdyYXBoaWNzQ29udGV4dCogbWFza0ltYWdlQ29u
dGV4dCA9IG1hc2tlckRhdGEtPm1hc2tJbWFnZS0+Y29udGV4dCgpOwogICAgICAgICBBU1NFUlQo
bWFza0ltYWdlQ29udGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmgKaW5kZXggODMzNmUwZGRhNTgzYTc5ZGEyZTgy
Mjk0YTA3Yjg2M2E5NjFmNzg2Mi4uYjVjMGNmYzhiMTY2ZmFmOTU2ODMwNTMyNDA2MzA4MmYyYTU2
Njc0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZU1hc2tlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VNYXNrZXIuaApAQCAtMzYsNiArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIHN0cnVjdCBNYXNrZXJEYXRhIHsKICAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IG1hc2tJbWFn
ZTsKKyAgICBGbG9hdFJlY3QgbWFza1JlY3Q7CiB9OwogCiBjbGFzcyBSZW5kZXJTVkdSZXNvdXJj
ZU1hc2tlciA6IHB1YmxpYyBSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lciB7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZDQ2
MTFjZjM0OTljOWVjOWQ2Njc2MzRlODRlYjBmZTY5NzgyNWFhYi4uNjg5ZjIwMWQxMzJjMWVhNWVi
Y2FlZTdiYTljMDcyNWY1MDFkYmNjZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEyLTAxLTI1
ICBGbG9yaW4gTWFsaXRhICA8Zm1hbGl0YUBnb29nbGUuY29tPgorCisgICAgICAgIE1hc2sgZGVm
b3JtYXRpb25zIHdoZW4gbWFza2VkIGNvbnRlbnQgaXMgcm90YXRlZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzY1MjcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN2Zy9yZXBhaW50L21hc2stY2xpcC10
YXJnZXQtdHJhbnNmb3JtLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN2Zy9yZXBh
aW50L21hc2stY2xpcC10YXJnZXQtdHJhbnNmb3JtLmh0bWw6IEFkZGVkLgorCiAyMDEyLTAxLTI1
ICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJl
dmlld2VkIHNpbmdsZSBsaW5lIHRlc3QgZml4IGFmdGVyIHIxMDU4NjUuCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9zdmcvcmVwYWludC9tYXNrLWNsaXAtdGFyZ2V0LXRyYW5zZm9ybS1leHBlY3Rl
ZC5odG1sIGIvTGF5b3V0VGVzdHMvc3ZnL3JlcGFpbnQvbWFzay1jbGlwLXRhcmdldC10cmFuc2Zv
cm0tZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZGZmMjA0NTU1ZDQ3OGM5ZDc3YWJkNDI5NWRl
NWIzYWJhZmMwY2UzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3ZnL3JlcGFpbnQv
bWFzay1jbGlwLXRhcmdldC10cmFuc2Zvcm0tZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDI1IEBA
Cis8aHRtbD48Ym9keT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmlld0JveD0iLTEwMCAt
MTAwIDgwMCA2MDAiPgorPGRlZnM+CisgIDxtYXNrIGlkPSJtYXNrIj4KKyAgICA8Y2lyY2xlIGN4
PSIxMDAiIHI9IjUwIiBmaWxsPSJ3aGl0ZSIvPgorICA8L21hc2s+CisKKyAgPGNsaXBQYXRoIGlk
PSJjbGlwIj4KKyAgICA8Y2lyY2xlIGN5PSIxMDAiIHI9IjUwIi8+CisgICAgPGNpcmNsZSBjeD0i
MCIgY3k9IjAiIHI9IjAiLz4KKyAgPC9jbGlwUGF0aD4KKzwvZGVmcz4KKworCis8Y2lyY2xlIGN4
PSIxMDAiIHI9IjUwIiBmaWxsPSJyZWQiLz4KKzxnIG1hc2s9InVybCgjbWFzaykiPgorICA8cmVj
dCBpZD0ibWFza2VyIiB4PSItMjAwIiB5PSItMjAwIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjIwMCIg
ZmlsbD0iZ3JlZW4iIHRyYW5zZm9ybT0icm90YXRlKDkwKSIvPgorPC9nPgorCis8Y2lyY2xlIGN5
PSIxMDAiIHI9IjUwIiBmaWxsPSJyZWQiLz4KKzxnIGNsaXAtcGF0aD0idXJsKCNjbGlwKSI+Cisg
IDxyZWN0IGlkPSJjbGlwcGVyIiB4PSIwIiB5PSItMjAwIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjQw
MCIgZmlsbD0iZ3JlZW4iIHRyYW5zZm9ybT0icm90YXRlKDkwKSIvPgorPC9nPgorPC9zdmc+Cis8
L2JvZHk+PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3ZnL3JlcGFpbnQvbWFzay1j
bGlwLXRhcmdldC10cmFuc2Zvcm0uaHRtbCBiL0xheW91dFRlc3RzL3N2Zy9yZXBhaW50L21hc2st
Y2xpcC10YXJnZXQtdHJhbnNmb3JtLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmI3MjA1NTM1ZjFjYTA5Y2Rm
NGFkZWE4MmY4NjBmMjMxMjgwMzExNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N2
Zy9yZXBhaW50L21hc2stY2xpcC10YXJnZXQtdHJhbnNmb3JtLmh0bWwKQEAgLTAsMCArMSw1MCBA
QAorPGh0bWw+PGJvZHk+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHZpZXdCb3g9Ii0xMDAg
LTEwMCA4MDAgNjAwIiBvbmxvYWQ9InRlc3QoKTsiPgorPGRlZnM+CisgIDxtYXNrIGlkPSJtYXNr
Ij4KKyAgICA8Y2lyY2xlIGN4PSIxMDAiIHI9IjUwIiBmaWxsPSJ3aGl0ZSIvPgorICA8L21hc2s+
CisKKyAgPGNsaXBQYXRoIGlkPSJjbGlwIj4KKyAgICA8Y2lyY2xlIGN5PSIxMDAiIHI9IjUwIi8+
CisgICAgPCEtLVR3byBjbGlwIHNoYXBlcyBhcmUgbmVlZGVkIHRvIGF2b2lkIHRyaWdnZXJpbmcg
cGF0aE9ubHlDbGlwcGluZyAtLT4KKyAgICA8Y2lyY2xlIGN4PSIwIiBjeT0iMCIgcj0iMCIvPgor
ICA8L2NsaXBQYXRoPgorPC9kZWZzPgorCisKKzxjaXJjbGUgY3g9IjEwMCIgcj0iNTAiIGZpbGw9
InJlZCIvPgorPGcgbWFzaz0idXJsKCNtYXNrKSI+CisgIDxyZWN0IGlkPSJtYXNrZXIiIHg9Ii0y
MDAiIHk9Ii0yMDAiIHdpZHRoPSI0MDAiIGhlaWdodD0iMjAwIiBmaWxsPSJncmVlbiIiLz4KKzwv
Zz4KKworPGNpcmNsZSBjeT0iMTAwIiByPSI1MCIgZmlsbD0icmVkIi8+Cis8ZyBjbGlwLXBhdGg9
InVybCgjY2xpcCkiPgorICA8cmVjdCBpZD0iY2xpcHBlciIgeD0iMCIgeT0iLTIwMCIgd2lkdGg9
IjIwMCIgaGVpZ2h0PSI0MDAiIGZpbGw9ImdyZWVuIi8+Cis8L2c+Cis8c2NyaXB0PgorICAgICAg
ICBmdW5jdGlvbiByb3RhdGUodGFyZ2V0LCBhbmdsZSkgeworICAgICAgICAgICAgICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldCkuc2V0QXR0cmlidXRlKCd0cmFuc2Zvcm0nLCAncm90
YXRlKCcgKyBhbmdsZSArICcpJyk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBkb1Rl
c3QoKSB7CisgICAgICAgICAgICAgICAgcm90YXRlKCJtYXNrZXIiLCA5MCk7CisgICAgICAgICAg
ICAgICAgcm90YXRlKCJjbGlwcGVyIiwgOTApOworICAgICAgICAgICAgICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5ub3RpZnlEb25lKCk7CisKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHRlc3Qo
KSB7CisgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewor
ICAgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwor
ICAgICAgICAgICAgICAgICAgd2luZG93LnNldFRpbWVvdXQoJ2RvVGVzdCgpOycsIDApOworICAg
ICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICB3aW5kb3cuc2V0VGltZW91
dCgnZG9UZXN0KCk7JywgMTAwKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAg
ICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGZ1bmN0aW9uKCkgeyB0ZXN0KCk7
IH0sIGZhbHNlKTsKKzwvc2NyaXB0PgorPC9zdmc+Cis8L2JvZHk+PC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>141773</attachid>
            <date>2012-05-14 13:02:42 -0700</date>
            <delta_ts>2012-05-15 05:55:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76527-20120514160241.patch</filename>
            <type>text/plain</type>
            <size>15500</size>
            <attacher name="Florin Malita">fmalita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE2OTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGJmMzM1NDk0MTA3OWZi
OTY3NTg3ZDBmYWQ1NzUzMzdiNmRlMjU4MS4uOWMxNzBkYjQ4NmY2MGY2MjE3ZjdhOTAyMTdiYWU0
NDYzODE5ODdlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTA1LTE0ICBGbG9y
aW4gTWFsaXRhICA8Zm1hbGl0YUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTWFzayBkZWZvcm1h
dGlvbnMgd2hlbiBtYXNrZWQgY29udGVudCBpcyByb3RhdGVkCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjUyNworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IHN2Zy9yZXBhaW50L21hc2stY2xpcC10
YXJnZXQtdHJhbnNmb3JtLnN2ZworCisgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9y
TGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKSBuZWVkcyB0byBhbHNvCisgICAg
ICAgIGludmFsaWRhdGUgcGFyZW50IG1hc2sgYW5kIGNsaXAgcmVzb3VyY2VzLCBub3QganVzdCBm
aWx0ZXJzLgorCisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpyZW1vdmVGcm9tQ2FjaGVBbmRJbnZhbGlkYXRlRGVwZW5kZW5j
aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0
QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24pOgorCiAyMDEyLTA1LTE0ICBQYXZlbCBGZWxk
bWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHBy
ZXNlcnZlIHRhYiBpbmRleCB3aGlsZSB3aWRlbmluZyAvIHNocmlua2luZyB0YWJiZWQgcGFuZSBh
cmVhLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlLmNwcAppbmRleCA0ZmM1ZTIzNzY3NzA3MmFhZjdmOGY5ZjQzOTA4ZGU4NjQ4ZmM0YTgwLi5m
ZDE2ZWYyOWQxMWZjNjgyYWYwM2IxODg5OTNmODZjYWJmM2IyYjk0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlLmNwcApAQCAtMjcsOCAr
MjcsMTAgQEAKIAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisj
aW5jbHVkZSAiUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZH
UmVzb3VyY2VDb250YWluZXIuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5o
IgorI2luY2x1ZGUgIlJlbmRlclNWR1Jlc291cmNlTWFza2VyLmgiCiAjaW5jbHVkZSAiUmVuZGVy
U1ZHUmVzb3VyY2VTb2xpZENvbG9yLmgiCiAjaW5jbHVkZSAiU1ZHUmVzb3VyY2VzLmgiCiAjaW5j
bHVkZSAiU1ZHUmVzb3VyY2VzQ2FjaGUuaCIKQEAgLTE2MSwxNSArMTYzLDIxIEBAIFJlbmRlclNW
R1Jlc291cmNlU29saWRDb2xvciogUmVuZGVyU1ZHUmVzb3VyY2U6OnNoYXJlZFNvbGlkUGFpbnRp
bmdSZXNvdXJjZSgpCiAgICAgcmV0dXJuIHNfc2hhcmVkU29saWRQYWludGluZ1Jlc291cmNlOwog
fQogCi1zdGF0aWMgaW5saW5lIHZvaWQgcmVtb3ZlRnJvbUZpbHRlckNhY2hlQW5kSW52YWxpZGF0
ZURlcGVuZGVuY2llcyhSZW5kZXJPYmplY3QqIG9iamVjdCwgYm9vbCBuZWVkc0xheW91dCkKK3N0
YXRpYyBpbmxpbmUgdm9pZCByZW1vdmVGcm9tQ2FjaGVBbmRJbnZhbGlkYXRlRGVwZW5kZW5jaWVz
KFJlbmRlck9iamVjdCogb2JqZWN0LCBib29sIG5lZWRzTGF5b3V0KQogewogICAgIEFTU0VSVChv
YmplY3QpOwotI2lmIEVOQUJMRShGSUxURVJTKQogICAgIGlmIChTVkdSZXNvdXJjZXMqIHJlc291
cmNlcyA9IFNWR1Jlc291cmNlc0NhY2hlOjpjYWNoZWRSZXNvdXJjZXNGb3JSZW5kZXJPYmplY3Qo
b2JqZWN0KSkgeworI2lmIEVOQUJMRShGSUxURVJTKQogICAgICAgICBpZiAoUmVuZGVyU1ZHUmVz
b3VyY2VGaWx0ZXIqIGZpbHRlciA9IHJlc291cmNlcy0+ZmlsdGVyKCkpCiAgICAgICAgICAgICBm
aWx0ZXItPnJlbW92ZUNsaWVudEZyb21DYWNoZShvYmplY3QpOwotICAgIH0KICNlbmRpZgorICAg
ICAgICBpZiAoUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIqIG1hc2tlciA9IHJlc291cmNlcy0+bWFz
a2VyKCkpCisgICAgICAgICAgICBtYXNrZXItPnJlbW92ZUNsaWVudEZyb21DYWNoZShvYmplY3Qp
OworCisgICAgICAgIGlmIChSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIqIGNsaXBwZXIgPSByZXNv
dXJjZXMtPmNsaXBwZXIoKSkKKyAgICAgICAgICAgIGNsaXBwZXItPnJlbW92ZUNsaWVudEZyb21D
YWNoZShvYmplY3QpOworICAgIH0KKwogICAgIGlmICghb2JqZWN0LT5ub2RlKCkgfHwgIW9iamVj
dC0+bm9kZSgpLT5pc1NWR0VsZW1lbnQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIEhhc2hTZXQ8
U1ZHRWxlbWVudCo+KiBkZXBlbmRlbmNpZXMgPSBvYmplY3QtPmRvY3VtZW50KCktPmFjY2Vzc1NW
R0V4dGVuc2lvbnMoKS0+c2V0T2ZFbGVtZW50c1JlZmVyZW5jaW5nVGFyZ2V0KHN0YXRpY19jYXN0
PFNWR0VsZW1lbnQqPihvYmplY3QtPm5vZGUoKSkpOwpAQCAtMTkxLDEyICsxOTksMTIgQEAgdm9p
ZCBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxp
ZGF0aW9uKFJlbmRlck9iamVjdCoKICAgICBpZiAobmVlZHNMYXlvdXQpCiAgICAgICAgIG9iamVj
dC0+c2V0TmVlZHNMYXlvdXQodHJ1ZSk7CiAKLSAgICByZW1vdmVGcm9tRmlsdGVyQ2FjaGVBbmRJ
bnZhbGlkYXRlRGVwZW5kZW5jaWVzKG9iamVjdCwgbmVlZHNMYXlvdXQpOworICAgIHJlbW92ZUZy
b21DYWNoZUFuZEludmFsaWRhdGVEZXBlbmRlbmNpZXMob2JqZWN0LCBuZWVkc0xheW91dCk7CiAK
ICAgICAvLyBJbnZhbGlkYXRlIHJlc291cmNlcyBpbiBhbmNlc3RvciBjaGFpbiwgaWYgbmVlZGVk
LgogICAgIFJlbmRlck9iamVjdCogY3VycmVudCA9IG9iamVjdC0+cGFyZW50KCk7CiAgICAgd2hp
bGUgKGN1cnJlbnQpIHsKLSAgICAgICAgcmVtb3ZlRnJvbUZpbHRlckNhY2hlQW5kSW52YWxpZGF0
ZURlcGVuZGVuY2llcyhjdXJyZW50LCBuZWVkc0xheW91dCk7CisgICAgICAgIHJlbW92ZUZyb21D
YWNoZUFuZEludmFsaWRhdGVEZXBlbmRlbmNpZXMoY3VycmVudCwgbmVlZHNMYXlvdXQpOwogCiAg
ICAgICAgIGlmIChjdXJyZW50LT5pc1NWR1Jlc291cmNlQ29udGFpbmVyKCkpIHsKICAgICAgICAg
ICAgIC8vIFRoaXMgd2lsbCBwcm9jZXNzIHRoZSByZXN0IG9mIHRoZSBhbmNlc3RvcnMuCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggNDU4NTVjZjFjMmU2YmQ2YTRiYjg0ZTZiMmI0ZGI1ZjlkYzJkMGNhZi4uNTMzODc0OTM2MWNl
MzZhNDRmODUwM2VmYjZhN2ExYzNkMTI1YjE0MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEy
LTA1LTE0ICBGbG9yaW4gTWFsaXRhICA8Zm1hbGl0YUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
TWFzayBkZWZvcm1hdGlvbnMgd2hlbiBtYXNrZWQgY29udGVudCBpcyByb3RhdGVkCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjUyNworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vY2hyb21p
dW0tbGludXgvc3ZnL3JlcGFpbnQvbWFzay1jbGlwLXRhcmdldC10cmFuc2Zvcm0tZXhwZWN0ZWQu
cG5nOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9u
cy50eHQ6CisgICAgICAgICogcGxhdGZvcm0vbWFjL3Rlc3RfZXhwZWN0YXRpb25zLnR4dDoKKyAg
ICAgICAgKiBzdmcvcmVwYWludC9tYXNrLWNsaXAtdGFyZ2V0LXRyYW5zZm9ybS1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIHN2Zy9yZXBhaW50L21hc2stY2xpcC10YXJnZXQtdHJhbnNm
b3JtLnN2ZzogQWRkZWQuCisKIDIwMTItMDUtMTQgIE1paG5lYSBPdmlkZW5pZSAgPG1paG5lYUBh
ZG9iZS5jb20+CiAKICAgICAgICAgW0NTU1JlZ2lvbnNdQ29udmVydCByZW5kZXItcmVnaW9uLWN1
c3RvbS1zdHlsZS1tYXJrIHRvIHJlZiB0ZXN0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS1saW51eC9zdmcvcmVwYWludC9tYXNrLWNsaXAtdGFyZ2V0LXRyYW5zZm9y
bS1leHBlY3RlZC5wbmcgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1saW51eC9zdmcv
cmVwYWludC9tYXNrLWNsaXAtdGFyZ2V0LXRyYW5zZm9ybS1leHBlY3RlZC5wbmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMDcyNGFjMDA4NmIxNTU5MmIzYzZiMGQ2NDRkNzk2MWRkNWFkNzA1ZApHSVQgYmluYXJ5IHBh
dGNoCmxpdGVyYWwgNjQwMgp6Y21lSTFgOUlYX2BeUnNDWSp8V0ZDTHRlanFEVWNSRGFuWn0kMT10
fjV7YDliaVI+enpJSEdMRiFCOWVEI3ZaYXkKejN1PVZ5SkszVksoX31aX2QrTUM/SU4kSTBlRXh3
Uj1PXj5OLXRZSHlVLXh4aV93ezwtWn0keEp2XmQhWCpafX5YCnpTQU0pPzJtcXJuMDA9WkkwJFRW
RUBRSzRlS1hffVJ6M3FPc3d7ITlHYVJVeD1HTil4XiYmciYrQ1ppfjB0Nio8eQp6QyREZiQqMV52
OV50clJQWFhJP3gwXjU1NElGeFlaKGdrQ2B3RTFFRVV4dWhWUDBRRnw8MHtGSGNpVCVtY091YloK
eiomXzFEK0J7e21KRktZVENsXnV2emxnbG4kIXhpSm83MWdETkQzdTBSfntFbGNJTFhzLSRnWFA1
YTtjUClXTjNlCnpAPUNkI18kWWp3PDtIUW9wJiQ0XmBXfjg8ejhwWE4rVnx0P1BWbl5keHAxQ2Ay
WmRENVo/cm5yUlgtVmFjVGBzcgp6NiYxeWMxRD80TUx2OD5oa1lVViM9UEhIKUYhNz1SYylgUkUp
TWRVbVFfPHArcXZ9N2t2fE49KEk/ajMtUDFBeWMKei1GTlNfVnNTR3gpMnphc3NTSkYxNTsyOGxK
PkFRPVF6NW1wJkBuKnIkb0I2ZmVhSztvWDJgVGlkTncjOFBDSWJqCnpFWGtnVlUpfigqdlQzN2Jq
cmNDU2pIQCMyP3M7aEwoalN7dEs7KyFwOHt4fXpPNnV7MDJNQFk8MHFnTjFiWUl0Xwp6VlFnQlVK
KjhAYFVmMC00eVI3V2BgbF5MYyl5eypsN1gzKXRSSmQ+dkFadVo2VD02OytVbXZuKytXVkFIUzcy
blcKejdPO2YzLVUyXmk3IXFQaDxIKVl1IzxrdXhVRE1QbnlIdVlUYSh0T2U/UH5pWTU8KV5+Xnde
eyUjYmBvOUlkNHwpCnoqUEp8cFJDNWxZI1lnO2Q8VzF2UXFZMW5gQVhTSkl0LW5rJFQ2OH5SZ19G
LWUpJUJKYmxoeGRvPUM0NUkyaFV7QAp6KE5mSk5MMGJfRWVqN05eIzhQfnU8PWxAYGJBcjtOclB4
c2VpVXt5dlc8bkxGcmwhPCplY3I2P194NSEhdT9mRnkKejZNJlR1bngzSjtuREdeV15xN14xeUUq
ZT1MSWJPJldSYXE7YV4xRXhhcE9eaWtjIyl4YStlMGMqZGhwOGE7QHE4CnpSVzRJQExUVlg8RVQl
VFNHY0lhaG1SQnUmXklnLUY8Tll+KzwkViVHR3NlcllOM0dPKEpmYWlFNXB4ZnpSflhgdQp6Km9Z
OHJWP3dwMXFeNE5YLXNOMmtsPUF4bHh+SH1nSjtnWGVoeFZndT9jRShwQiQ1a0c2PyUjMypmR1RF
Qk02YisKemxzdDkxck08VFk0SlBBQjZoMUttZmgmZXRVNnFaOUdheSR7LWF+VTc9fHB7RjxyJDBJ
QGBSRUNDNHIjJWQ/U20lCnpMWX5sVjk8KjVSRWx+fE5fYzl5bj40MHpuaj9ncXtzI3FsaldmdjBl
X21qNjw4UH5GezhHemFHQkold0U3Zmw/Uwp6XjZpOChIKG9pWj45QjtKPVJzJTdEViROPDlPSjs3
ZEpvUC1OPFV4WFF1am08b3tAdSFjTU8jZGp1O2ghJXc5STQKej1SaUdlPFk9V28pZHg7elhLUFdu
Nzc+YSZVWmcjOUMlJm4xSUBoVDFOMmtFeE8/WTdscFo4QFc/ak1qbC1FbHtWCnolbGNgMT99KiYj
aHlLaTxSdEotKTh8MXYqUDFlR2pLM1F7fiVHJkptcXdzO3g1QDlDdGByVGB9eFZWRyY1dXdJUgp6
Q19KcDdTUUhYKElAIT9mezdPUiNKY01ENnI/aEF1VkZnIU1pN1YlPCkjakdGSFNlUjRPfHl+bzBI
XjgzXiZWVW8KekA1LUJFQElEQVpJQiZoQiRHeXx7cVFPZkZjeFJBSyt7MF5CMlckX1VDVT94Wj1u
RD57KThvO15CKSU1WHQ0O0YxCno3XzR7JVI5KGQrLXNPSUk+ZVUhe1o7djRDJjU4WVdCWENJO1g4
TXo7OW9gaFkqSSteJnRfZkpsaGw0Q2tzP3BOPwp6NWtUYjxDaF42KyMhKkI0SGBRdUVwT2ZKPm5o
fUJUPylMZjBRfTVQelQ+ez9tcSFUcTApS3tsNEN0KVZPWCMwWXkKeiVOUmNFKHl7KGBrSXpZYnl9
JShDcTk8fDZ6KUd9ZWhIclgwNzUyTEtsMSErdm1PJEI1fEJJKTtKQHI/K2daM31nCno9RmNSISpo
MzVVcH5JKWUoOXg1YlVgRjhvdl9SQ0RpOD1uQGZ4Q0FRbkomPVJ1JWVCdyVBLVJeNCR3eWQ7NU01
Uwp6MipuQD5PTTQxdiE0JFRKNF9gZilffn5xJno+NlFhXlhFJUdUYTE2Wkd8NXhRI3VARFdXOGpL
JWBFZ0V0aj1YMGoKelduflkjQio2P0hvY0RzO05xclRPI1V1TmBAUENUUDcrcT40VVZKaUw2cEAo
PGJOOVRpUiM9TmtVNGV9I2k+fFFrCnprfFE9aGVPQlV3eWk4eGZOTEojKl58djlZOTkqMFk3ZmF8
VlViTldxTF5zayV8QlpBY3FrOGc1cjswKG0wIzg7fAp6ej9EKkk+TXpeKVhDO2xEbUFlXiUqSSNk
bTAmKmlTYWJAWDNwTXZNTndUXytWcDNfa2dpOU55cmhRKjc+YzVaSWgKenBQSzJgOTx6en4tOSp9
aEMzNmNfKnRZLURUZXklN1ZJYn08PXx0a2Q1KkslSS1QdFo7UGxXRmlZWClgY3tiPjclCnpsJFBX
cCVtQnx5RVd2WHdfVzZ4KSVlVHRvWSE7VUo9KGhkLUg9RDxmKCV2ZDJxUTEtfXlgbVJMSDR9PCQq
bUcrKgp6WWV4ZVhffUt3OUA4KV5tVDxDM2E8QGoxaG1FR3NmaU51WEEkXkdjVHhlVVFBRFFjQUQy
aSpsUUhObDIqKCVvQyUKemNTcTt8JURuJmVRWihKeUVFQ0YhYkZhSFZ7VmZYJC0+YGh9WUkpY1Qt
OUspbXhRKi0lQ0Z4XnpZOTl4YjJsQHx3CnpvTnVGVmEwRnFGWWM5fnl0eUdOfjxxcFNDRF9UdjUz
blNkamchKktYb1BUY2Zid0Q8alNrfChlckMoIWVSZXBAaAp6MUshQW5iI3ZyM3FZfTFXMjI1WTh1
MGpaX0ZgQEppOVUzfHQ2cnduKVlWS3M7eGg4YjhTVE5MYkFHLUUmTFFIbDYKemNxMU94dClibjZy
bSVsKVhXNS0tdkZFRkc8XjZeNSoyJURMdVJWSmRfO3YhcSgtLSZWTmRpd0Q0RTFxcUhJalhrCnp0
SygkRyRqNnd5VV4wekZgS2pBcEA7RlhxcnoyKk4tQ0s7JUxBSXtDRzVFU1B4MD8/cmlXbTcwenpP
azlYYGBrKQp6NTtOe0hzKkE3XnRyY1hSSktkWnNSaGZTPXEpTFcwMlk+Vnp3Xj4jcEc5e1MhcTA5
eFdefkJPWF9qITFrUUE3P1IKei1BXmcrY0deTGs1alI3cXElYyZKc0JUfXUhXitDRjQjWGJ4QEJU
VlRfR2JDVC11XjlwNH5rMUFRS08wVW1WUCpfCnohTCUjRl9pQyZ7cnZwa25LY158UlkpdFUwQm8j
dnAkc0pNR2dMPUhYJnw7JSF3SDkxamhAQEYmQ3Z0YGEmJGJDfAp6PmxPfXwyXj5Dck1URyV3c18x
YVJUYn5ZTSlCTDlkNT5kSD9xdmt0ckJBU0FjdzJGZ2FiT3tWPTtRTEtnUl5EcnoKeiR+I1Q3VVF9
TGx5OU57Qm9Odz12dzJTZCpje01CbFlhXiVCZjVNbXpSMXdqSHZrR1ZXKkMoQDVjbmNsUFB9bytW
Cno7TUdnQzRVU2p2amg9VFFIPEFnYyEqNURsO2FsQV9zfVVDPWdmO0gjNUw3Oz5idUVxa1EyOTRQ
R0JRJFduWDlTZAp6bzMhcWtFdCpsQEthb1RIJm1TblBRbFRzUiZ9S28tSEw0MkstY3tQdXdlKUo0
Q2s0aTNXbHdze3pocUBneC1oPH4KeitpZV9ZZ1VAeyRDakdBVFklMzxkQFQlMz9acEZQazlTOV9R
VktPdS0pTVJUbUp9dVIhSj19KXxRPU1MNlArY34qCno2aGVHcnN3bEhjKzA7XiZqMWA3cyQ7VGle
PFZHUzBzJmFNcGI9YXpidDFFP3RGMio/R3tCcGE5algzP0xfe2dNbgp6aEpldChQZ2NJeSZZRD0r
bzVAP2I2KTJ4cGRYe0NMQSlzSHowQX10I1dhO0BZcjB+Sn4yUVNTMHBuYFcoXlYkKTcKem55JCpe
SExWa2xpO3g7MUpRIzhfZlAjQ1Rkd1BjNk97UW57RjFGLVVkJlRkWklKLUZ6UTJJJCh0MXUlcTwh
VVc2CnpVYDQkb0RNMlFIWHBvLSZGODYzajUhQk42Z1J3YEkqOEwhQXM2UjFlTW9rUSo8WDU5cUFz
YlclY3xne3dgdlFAbgp6LWx2eGdsXlVgSkk4RWs3e30pVU1eXn59UmZmWkV7OyRSfTglM3FUSnk+
QnxBRGp6WmZGQHAld0AyTSRMPFpNRm8KenRtV0dkRyUpWkU9TyplfEB5JkV9UHN3YyMyeWxSP2cx
I2A1bENObEI7TFhmTUgwJntuWSgjYCFseXRfPjtZRnp8CnpKSGU7QmVafmN3Sn1AMi00aCR9Wj88
S1koNHtMaTZjMjwtfENBKi17YklfRXx2TEcyYDw/e35wKGY4PGNYKH5KVAp6S3QzUXsjM2RNNWxa
b1o2UnBNMWhgJT54K0dTVGUoWGpvRU5MVW5RZW5pVm1APiRmPTtmcV5oSDJocjJVd0xZT1cKemQ8
ezA1KDFzSStuRUJCVlleLUpOVykrO3k/I0B+Yz5gUE1Hd3VzcSh6eSFkTGBpPURlRmA9bUY4V1pY
dEZvQUBLCnorSzJ1TjZUbkkjMnM2bkxQJjBSWFYqVEt0N0otd3k3empfWl5QcUE0bWFvSHJkaDMp
Kihmd1pUZkl5IUlTPjI3eAp6bmA4NntiO3RvMiE5VyolM2Zyd29HIVNsRUlmXmF9JThkLTNgIUtH
XjU4amtvdmgrWCNSQHElMz1zMH5ZJWpLSGEKenQzYGx5aGV8R0BUQUtlIT5mTFM2YjBFJjVsMW9i
SHUyc1k8aFJgODA3TmFZNGN5OzUwSnVJSjJ0d3U7Y3B6Y0MyCno8THEhZUhYOWVgRF5BOyhoRU5j
U2pUPEU/d1hhKmlmIUFfbGNPT0RfU21JbmtxQ0A3Q3B+akNXOXNfVDMpQXNaJQp6WmB2TCM7X3NT
cTNDTENrbExtVD5nI0lPMGhvN0txKD1WRGkqRUJ1YjFjOWVTWmRrKnleYkJrYzRnZ0UzKyVVUC0K
engzMXEqVHNZRUcwR141KCNPTllGYisqVzElaiVeMDBUeVBVbjl4YUQqLXpCO0d5cmlMaWt3algk
TV5xdmRANCVZCnpnVVV8eXppPEpmIyt5ZWxqUCV2K0Y1YWpZN1p9dkpwYnIzfGJtKyZlVyt4MSVD
MmkrI2NhcHhDODB0JnhgTk10SAp6Pj0lfjVVRkkyTXdaOTw7SiQ0czJ4N1NEPHpwPDBPaTtGMUtG
Pm55TnZwMmhtYi00dnxHV2BuPiZWY0R+JHkyLWYKempVT2hCZipHNXNeVVBsfXYlUk9NaVppUmcq
Nk1QMFYqYTRhPy0xVTtYM3MyWFhIcmVfOHpnfHIjOTdrakc5P0JRCnpNPjJoQiVzYnBHaklodHND
PHxnT2J6UHo+eGdCSHl7cG40JEJoZD03PDVveXVBM3JPT1BKekpwcThPOy1WNn5MMQp6Ni1pVT9v
YCg8LT1YaV5vMihqam9nQiYjfkBVU3pnbUx2I1BxIXo7eD9mVk5eR0dLQHtrVkdkZjg0dntkbnBZ
WWAKelgtK3U7VGBiX1ZsOHIpMTxueUpLcDs7aHdUazxsZEpIcHJYezJ+anw1IW9pYXckMlhBXzdM
NG1zUmheQ3hfJkY8Cno3e2BodV5kZHV9O1UtQk1UcyU1MnErTlJ+eU02Yk9nP3FnKys+alhDVE9z
alZuaFM/JmNtMz5Ec1ptVGxAPmBCZwp6c3llbHxVMCRYUkZfM2QqXm94e15ONyY1MDtBV1QxY2ZH
ZFdATkZ4aUc1PkBRQWxqc2VMQHNlJXtXMTs3ZnNQaVgKelE9Tm5JKnBPNTd6MFZIIWV1PFBhPE9X
Q3lVNk5Je1pseUYqdDFyRSUzJEJWVjV+XkdxK1FtbUNnWTVGJXo2YkA0CnoqSFRMT0BSMHpSPUVU
N3tuZmRmYmREezNiVERxRT0haFdPNE50OX1hRnJZaFgoXj9TPSFSR1QkcT9JZDY9PE8zOAp6Nzwo
fXtESWFFX1gqeCREWXhoRXcwTlI7TFZUbjV4I284WHpMMmppc1J0KU5GMl9pNVM8ZT8kcyZ4P0ZG
PiZgcWEKejBHVWtNYF9jVSZxcihSOGVkRjlXS0ZlZFRnVX04TWVUO3AmdWZxOSYmMV9AXi07NmRh
PHkhQkZAX1VaQDFXNnpmCnoxR3t3N3xLYlRDWDdyTXQwKnB1SlQlVGpXekA1c1YxUVJFRl9AbVM9
cXRjcmhPY31NM0QxRnJ4IVB+aF81dmszRgp6Kz85fGtgajwwfjRwdnYtezhAcEFaaHw1ViY3eWQt
Sy1BN0x4QSlnPjBVYWFrK1kleylUI3tibFZQKUJ5SHliRmAKemhGR1hGaTRSIyZUNWYoI3BaKDZi
SXJ3eHFgYDRIdU07PHNjZzc8PHQxTUBkMm9LfCNzdFgycTdeY21pMnNkTH08CnpOPF8oVFp7KHxt
RUdhQ1EtfXZFPUZDV0JkI0hAfiVePTFQeSpTaGpAY0s0XmVOUihSMVNuKzVoWjlYOXlOYEElJgp6
Q3M3KFVxRXlBQCYzbWdNZz1eX3NeMkttY1dqIVR3SXczTzhLYU40cHA0ZW1QaVF2YyNXYT0/fTJm
cisrWnY2YzUKel57aVBeY2RBJFY9PXRgTC1JcSVjdG1JYTBoTmtqTl9RMkZ6dTZqXklsREJ4YDI9
S0BOUHlIOUooY2t0VHgzfi1GCnpjPm1XYWYmJlF1TW5jZlBBQUR6fl42UTtCeF9BV3U1fjlUYT8z
TGYkcj4xYD1eellKc191b19oRSVOV0UkbWVLNApaJmUqPUFhX3NDZ18paVVSTU57dW0hOX5wTnt7
ZypNPUk4KGIKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dCBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAppbmRleCA5ZDZkNzMyZjhhZjlk
MzU4YmY1ZTgyNzI5MmM3YmFiM2I0ODAxNDEzLi41Y2U5MjZkNmQ0ZGMyMjM0MmUyYzk1NGYyYmQy
ZDM4OTZkOTRhNmFiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90
ZXN0X2V4cGVjdGF0aW9ucy50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0v
dGVzdF9leHBlY3RhdGlvbnMudHh0CkBAIC0xMjE4LDYgKzEyMTgsOSBAQCBCVUdXSzgxMjE3IDog
c3ZnL2N1c3RvbS91c2UtZGV0YWNoLnN2ZyA9IFBBU1MgRkFJTAogQlVHV0s4MTIxNyA6IHN2Zy9j
YXJ0by5uZXQvdGFiZ3JvdXAuc3ZnID0gUEFTUyBGQUlMCiBCVUdXSzgxMjE3IDogc3ZnL2hpeGll
L3BlcmYvMDAzLnhtbCA9IFBBU1MgRkFJTAogCisvLyBOZWVkcyByZWJhc2VsaW5pbmcgYWZ0ZXIg
bGFuZGluZyA3NjUyNworQlVHV0s3NjUyNyBXSU4gTUFDIDogc3ZnL3JlcGFpbnQvbWFzay1jbGlw
LXRhcmdldC10cmFuc2Zvcm0uc3ZnID0gSU1BR0UrVEVYVCBJTUFHRSBURVhUIFBBU1MKKwogQlVH
V0s4MTI0MCBNQUMgOiBzdmcvdGV4dC9iaWRpLXJlb3JkZXItdmFsdWUtbGlzdHMuc3ZnID0gUEFT
UyBJTUFHRStURVhUCiAKIEJVR1dLODEyNDMgOiBzdmcvcmVwYWludC9yZXBhaW50aW5nLWFmdGVy
LWFuaW1hdGlvbi1lbGVtZW50LXJlbW92YWwuc3ZnID0gUEFTUyBJTUFHRQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3Rlc3RfZXhwZWN0YXRpb25zLnR4dCBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy90ZXN0X2V4cGVjdGF0aW9ucy50eHQKaW5kZXggNzQyZjE3MmRiMjBj
ZjIyYmM1MzRjNzBkMmZjZTIxNzFiNzJjNjllNC4uOWFkMDY3MTA2OThhNWIxNTNlMWIwODdlOTk1
MDYzMjU3ZDJmODI0NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3Rlc3Rf
ZXhwZWN0YXRpb25zLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvdGVzdF9leHBl
Y3RhdGlvbnMudHh0CkBAIC0yMDcsNiArMjA3LDkgQEAgQlVHV0s4NTY4OSBTS0lQIDogZmFzdC9h
bmltYXRpb24vcmVxdWVzdC1hbmltYXRpb24tZnJhbWUtZGlzYWJsZWQuaHRtbCA9IFRFWFQKIEJV
R1dLODU5OTAgOiBtZWRpYS92aWRlby1jb250cm9scy1yZW5kZXJpbmctdG9nZ2xlLWRpc3BsYXkt
bm9uZS5odG1sID0gVEVYVAogQlVHV0s4NTk5MCA6IG1lZGlhL3ZpZGVvLWNvbnRyb2xzLXRvZ2ds
aW5nLmh0bWwgPSBUSU1FT1VUIFRFWFQKIAorLy8gUmVxdWlyZXMgcmViYXNlbGluZSBhZnRlciBi
dWcgNzY1MjcKK0JVR1dLNzY1MjcgOiBzdmcvcmVwYWludC9tYXNrLWNsaXAtdGFyZ2V0LXRyYW5z
Zm9ybS5zdmcgPSBJTUFHRStURVhUIElNQUdFIFRFWFQgUEFTUworCiBCVUdXSzg1MzA4IDogaWV0
ZXN0Y2VudGVyL2NzczMvdmFsdWVzYW5kdW5pdHMvdW5pdHMtMDAwLmh0bSA9IElNQUdFCiBCVUdX
Szg1MzEwIDogaWV0ZXN0Y2VudGVyL2NzczMvdmFsdWVzYW5kdW5pdHMvdW5pdHMtMDEwLmh0bSA9
IElNQUdFCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N2Zy9yZXBhaW50L21hc2stY2xpcC10
YXJnZXQtdHJhbnNmb3JtLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N2Zy9yZXBhaW50L21h
c2stY2xpcC10YXJnZXQtdHJhbnNmb3JtLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NjkzZDFm
OGY2ZGVlYzkyNjM0NjQ2NTEzZTA5NjRmOGY1OTA0ODVmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvc3ZnL3JlcGFpbnQvbWFzay1jbGlwLXRhcmdldC10cmFuc2Zvcm0tZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTggQEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5k
ZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAw
CisgIFJlbmRlclNWR1Jvb3Qge3N2Z30gYXQgKDUwLDUwKSBzaXplIDIwMHgyMDAKKyAgICBSZW5k
ZXJTVkdIaWRkZW5Db250YWluZXIge2RlZnN9IGF0ICgwLDApIHNpemUgMHgwCisgICAgICBSZW5k
ZXJTVkdSZXNvdXJjZU1hc2tlciB7bWFza30gW2lkPSJtYXNrIl0gW21hc2tVbml0cz1vYmplY3RC
b3VuZGluZ0JveF0gW21hc2tDb250ZW50VW5pdHM9dXNlclNwYWNlT25Vc2VdCisgICAgICAgIFJl
bmRlclNWR0VsbGlwc2Uge2NpcmNsZX0gYXQgKDE1MCw1MCkgc2l6ZSAxMDB4MTAwIFtmaWxsPXtb
dHlwZT1TT0xJRF0gW2NvbG9yPSNGRkZGRkZdfV0gW2N4PTEwMC4wMF0gW2N5PTAuMDBdIFtyPTUw
LjAwXQorICAgICAgUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyIHtjbGlwUGF0aH0gW2lkPSJjbGlw
Il0gW2NsaXBQYXRoVW5pdHM9dXNlclNwYWNlT25Vc2VdCisgICAgICAgIFJlbmRlclNWR0VsbGlw
c2Uge2NpcmNsZX0gYXQgKDUwLDE1MCkgc2l6ZSAxMDB4MTAwIFtmaWxsPXtbdHlwZT1TT0xJRF0g
W2NvbG9yPSMwMDAwMDBdfV0gW2N4PTAuMDBdIFtjeT0xMDAuMDBdIFtyPTUwLjAwXQorICAgICAg
ICBSZW5kZXJTVkdFbGxpcHNlIHtjaXJjbGV9IGF0ICgwLDApIHNpemUgMHgwIFtmaWxsPXtbdHlw
ZT1TT0xJRF0gW2NvbG9yPSMwMDAwMDBdfV0gW2N4PTAuMDBdIFtjeT0wLjAwXSBbcj0wLjAwXQor
ICAgIFJlbmRlclNWR0VsbGlwc2Uge2NpcmNsZX0gYXQgKDE1MCw1MCkgc2l6ZSAxMDB4MTAwIFtm
aWxsPXtbdHlwZT1TT0xJRF0gW2NvbG9yPSNGRjAwMDBdfV0gW2N4PTEwMC4wMF0gW2N5PTAuMDBd
IFtyPTUwLjAwXQorICAgIFJlbmRlclNWR0NvbnRhaW5lciB7Z30gYXQgKDE1MCw1MCkgc2l6ZSAx
MDB4MTAwCisgICAgICBbbWFza2VyPSJtYXNrIl0gUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIge21h
c2t9IGF0ICg1MCwtNTApIHNpemUgMTAweDEwMAorICAgICAgUmVuZGVyU1ZHUmVjdCB7cmVjdH0g
YXQgKDEwMCwwKSBzaXplIDIwMHgzMDAgW3RyYW5zZm9ybT17bT0oKDAuMDAsMS4wMCkoLTEuMDAs
MC4wMCkpIHQ9KDAuMDAsMC4wMCl9XSBbZmlsbD17W3R5cGU9U09MSURdIFtjb2xvcj0jMDA4MDAw
XX1dIFt4PS0yMDAuMDBdIFt5PS0yMDAuMDBdIFt3aWR0aD00MDAuMDBdIFtoZWlnaHQ9MjAwLjAw
XQorICAgIFJlbmRlclNWR0VsbGlwc2Uge2NpcmNsZX0gYXQgKDUwLDE1MCkgc2l6ZSAxMDB4MTAw
IFtmaWxsPXtbdHlwZT1TT0xJRF0gW2NvbG9yPSNGRjAwMDBdfV0gW2N4PTAuMDBdIFtjeT0xMDAu
MDBdIFtyPTUwLjAwXQorICAgIFJlbmRlclNWR0NvbnRhaW5lciB7Z30gYXQgKDUwLDE1MCkgc2l6
ZSAxMDB4MTAwCisgICAgICBbY2xpcFBhdGg9ImNsaXAiXSBSZW5kZXJTVkdSZXNvdXJjZUNsaXBw
ZXIge2NsaXBQYXRofSBhdCAoLTUwLDUwKSBzaXplIDEwMHgxMDAKKyAgICAgIFJlbmRlclNWR1Jl
Y3Qge3JlY3R9IGF0ICgwLDEwMCkgc2l6ZSAzMDB4MjAwIFt0cmFuc2Zvcm09e209KCgwLjAwLDEu
MDApKC0xLjAwLDAuMDApKSB0PSgwLjAwLDAuMDApfV0gW2ZpbGw9e1t0eXBlPVNPTElEXSBbY29s
b3I9IzAwODAwMF19XSBbeD0wLjAwXSBbeT0tMjAwLjAwXSBbd2lkdGg9MjAwLjAwXSBbaGVpZ2h0
PTQwMC4wMF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N2Zy9yZXBhaW50L21hc2stY2xpcC10
YXJnZXQtdHJhbnNmb3JtLnN2ZyBiL0xheW91dFRlc3RzL3N2Zy9yZXBhaW50L21hc2stY2xpcC10
YXJnZXQtdHJhbnNmb3JtLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MGU3MjQ4MzIwZDk5ZTNhNTEwYzU4MDkx
NzAyMDQwNGFhN2E3OWNkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3ZnL3JlcGFp
bnQvbWFzay1jbGlwLXRhcmdldC10cmFuc2Zvcm0uc3ZnCkBAIC0wLDAgKzEsNDAgQEAKKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayIgdmlld0JveD0iLTEwMCAtMTAwIDgwMCA2MDAiIG9ubG9hZD0i
cnVuUmVwYWludFRlc3QoKTsiPgorICA8IS0tCisgICAgVGVzdCBmb3IgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2NTI3LgorICAgIE9ubHkgdHdvIGdyZWVuIGNpcmNs
ZXMgc2hvdWxkIGJlIHZpc2libGUuCisgIC0tPgorICA8c2NyaXB0IHhsaW5rOmhyZWY9Ii4uLy4u
L2Zhc3QvcmVwYWludC9yZXNvdXJjZXMvcmVwYWludC5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0
Ij48L3NjcmlwdD4KKyAgPGRlZnM+CisgICAgPG1hc2sgaWQ9Im1hc2siPgorICAgICAgPGNpcmNs
ZSBjeD0iMTAwIiByPSI1MCIgZmlsbD0id2hpdGUiLz4KKyAgICA8L21hc2s+CisKKyAgICA8Y2xp
cFBhdGggaWQ9ImNsaXAiPgorICAgICAgPGNpcmNsZSBjeT0iMTAwIiByPSI1MCIvPgorICAgICAg
PCEtLVR3byBjbGlwIHNoYXBlcyBhcmUgbmVlZGVkIHRvIGF2b2lkIHRyaWdnZXJpbmcgcGF0aE9u
bHlDbGlwcGluZyAtLT4KKyAgICAgIDxjaXJjbGUgY3g9IjAiIGN5PSIwIiByPSIwIi8+CisgICAg
PC9jbGlwUGF0aD4KKyAgPC9kZWZzPgorCisgIDxjaXJjbGUgY3g9IjEwMCIgcj0iNTAiIGZpbGw9
InJlZCIvPgorICA8ZyBtYXNrPSJ1cmwoI21hc2spIj4KKyAgICA8cmVjdCBpZD0ibWFza2VyIiB4
PSItMjAwIiB5PSItMjAwIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjIwMCIgZmlsbD0iZ3JlZW4iLz4K
KyAgPC9nPgorCisgIDxjaXJjbGUgY3k9IjEwMCIgcj0iNTAiIGZpbGw9InJlZCIvPgorICA8ZyBj
bGlwLXBhdGg9InVybCgjY2xpcCkiPgorICAgIDxyZWN0IGlkPSJjbGlwcGVyIiB4PSIwIiB5PSIt
MjAwIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjQwMCIgZmlsbD0iZ3JlZW4iLz4KKyAgPC9nPgorCisg
IDxzY3JpcHQ+CisgICAgICBmdW5jdGlvbiByb3RhdGUodGFyZ2V0LCBhbmdsZSkgeworICAgICAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXQpLnNldEF0dHJpYnV0ZSgndHJhbnNmb3Jt
JywgJ3JvdGF0ZSgnICsgYW5nbGUgKyAnKScpOworICAgICAgfQorCisgICAgICBmdW5jdGlvbiBy
ZXBhaW50VGVzdCgpIHsKKyAgICAgICAgcm90YXRlKCJtYXNrZXIiLCA5MCk7CisgICAgICAgIHJv
dGF0ZSgiY2xpcHBlciIsIDkwKTsKKyAgICAgIH0KKyAgPC9zY3JpcHQ+Cis8L3N2Zz4KKwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>