<?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>94936</bug_id>
          
          <creation_ts>2012-08-24 07:27:55 -0700</creation_ts>
          <short_desc>Improve touch-adjustment at an iframe boundary.</short_desc>
          <delta_ts>2012-08-29 07:05:18 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>95204</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>95204</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kevin Ellis">kevers</reporter>
          <assigned_to name="Kevin Ellis">kevers</assigned_to>
          <cc>allan.jensen</cc>
    
    <cc>rjkroege</cc>
    
    <cc>tonikitoo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>704090</commentid>
    <comment_count>0</comment_count>
    <who name="Kevin Ellis">kevers</who>
    <bug_when>2012-08-24 07:27:55 -0700</bug_when>
    <thetext>Rect-based hit-tests largely follow the same logic as point based tests returning once a hit layer is found unless conditions are met for depth sorting descendants.  While this is entirely appropriate for point-based tests, it does not allow a rect-based test to consider all possible elements when layers at different z-orders partially overlap the hit-test area.

This limitation can be problematic for touch adjustment if a small control such as a checkbox is close to the edge of a navigation bar at a higher z-index.  A touch that covers the checkbox can easily clip the edge of the navigation bar, which would cause the hit test to only return elements on the navigation bar in the hit-test results even if the center of the touch lies outside the boundary of the navigation bar.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>704101</commentid>
    <comment_count>1</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-08-24 07:54:31 -0700</bug_when>
    <thetext>I thought RenderLayer::hitTestLayer already handled that. A layer is only considered hit (and thus terminating the search) if an element fully encloses the hit-tested touch-point. 

This behaviour does create another bug of returning too many elements, since the areas that have been hit are not subtracted from the hit-test and can continue to hit elements in layers below.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>704123</commentid>
    <comment_count>2</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-08-24 08:33:44 -0700</bug_when>
    <thetext>See FatFingers.cpp 

354             
355 bool FatFingers::checkForClickableElement(Element* curElement,
356                                           Vector&lt;IntersectingRegion&gt;&amp; intersectingRegions,
357                                           Platform::IntRectRegion&amp; remainingFingerRegion,
358                                           RenderLayer*&amp; lowestPositionedEnclosingLayerSoFar)

our intersection area is a region. Every time we have a higher zindex&apos;ed layer, we subtract that layer&apos;s area from the &quot;remaining intersection region&quot;, once we are done with it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>704213</commentid>
    <comment_count>3</comment_count>
    <who name="Kevin Ellis">kevers</who>
    <bug_when>2012-08-24 10:23:03 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; I thought RenderLayer::hitTestLayer already handled that. A layer is only considered hit (and thus terminating the search) if an element fully encloses the hit-tested touch-point. 
&gt; 
&gt; This behaviour does create another bug of returning too many elements, since the areas that have been hit are not subtracted from the hit-test and can continue to hit elements in layers below.

Will write up a test case demonstrating the problem.  Here is a brief description of the page layout.  Have a series of absolute positioned elements each covering the full page, but with the active page having a higher z-index.  Have a left side bar that overlaps the page with a higher z-index.  The active page contains checkboxes that are closely aligned to the navigation bar.

I misinterpreted some of the diagnostic output in my original test.  When the touch overlaps a checkbox but clips the navigation bar, we see the navigation bar and active page in the hit test results, but not the checkbox.  So the results are not restricted to the highest z-index element as I originally thought; however, the search is not picking up all of the elements that overlap the hit-test area.  The hit-test scores are pretty meaningless given the size of the elements involved and it is simply pulling to the smaller one (the navigation bar) based on the relative scores.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>704334</commentid>
    <comment_count>4</comment_count>
      <attachid>160473</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-08-24 12:28:33 -0700</bug_when>
    <thetext>Created attachment 160473
testcasE?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>705279</commentid>
    <comment_count>5</comment_count>
      <attachid>160722</attachid>
    <who name="Kevin Ellis">kevers</who>
    <bug_when>2012-08-27 08:10:39 -0700</bug_when>
    <thetext>Created attachment 160722
Example where it is difficult to tap on a checkbox.  

Attached an example that demonstrates a case where it is tough to tap on a checkbox even if touch adjustment is enabled.  The z-order issue initially reported might be a red-herring.  It turned out to also be important for the navigation bar and page to be in separate &lt;iframe&gt;s.

How does rect-based hit testing work when it spans multiple &lt;iframe&gt;s?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>705282</commentid>
    <comment_count>6</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-08-27 08:13:02 -0700</bug_when>
    <thetext>
&gt; How does rect-based hit testing work when it spans multiple &lt;iframe&gt;s?

it adds the &lt;iframe&gt; to the list of reached nodes, iirc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>705285</commentid>
    <comment_count>7</comment_count>
    <who name="Kevin Ellis">kevers</who>
    <bug_when>2012-08-27 08:22:33 -0700</bug_when>
    <thetext>That is consistent with what I&apos;m seeing for the example.  The &lt;iframe&gt;s are detected but do not provide enough information for touch adjustment since smaller elements inside the &lt;iframe&gt;s are not picked up as candidates.

One solution may be to repeat the hit test on each of the &lt;iframe&gt;s from the first test.  Alternatively, could repeat the hit-test just for the &lt;iframe&gt; that contains the midpoint of the touch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>705290</commentid>
    <comment_count>8</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-08-27 08:28:31 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; That is consistent with what I&apos;m seeing for the example.  The &lt;iframe&gt;s are detected but do not provide enough information for touch adjustment since smaller elements inside the &lt;iframe&gt;s are not picked up as candidates.
&gt; 
&gt; One solution may be to repeat the hit test on each of the &lt;iframe&gt;s from the first test.  Alternatively, could repeat the hit-test just for the &lt;iframe&gt; that contains the midpoint of the touch.

Right. this is what we do for blackberry port.

FatFingers.cpp:
...
335         bool isElement = curNode-&gt;isElementNode();
336         if (isElement &amp;&amp; isValidFrameOwner(toElement(curNode))) {
337 
338             HTMLFrameOwnerElement* owner = static_cast&lt;HTMLFrameOwnerElement*&gt;(curNode);
339             Document* childDocument = owner &amp;&amp; owner-&gt;contentFrame() ? owner-&gt;contentFrame()-&gt;document() : 0;
340             if (!childDocument)
341                 continue;
342 
343             ASSERT(childDocument-&gt;frame()-&gt;view());
344 
345             foundOne |= findIntersectingRegions(childDocument, intersectingRegions, remainingFingerRegion);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>705292</commentid>
    <comment_count>9</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-08-27 08:32:27 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; That is consistent with what I&apos;m seeing for the example.  The &lt;iframe&gt;s are detected but do not provide enough information for touch adjustment since smaller elements inside the &lt;iframe&gt;s are not picked up as candidates.
&gt; 
&gt; One solution may be to repeat the hit test on each of the &lt;iframe&gt;s from the first test.  Alternatively, could repeat the hit-test just for the &lt;iframe&gt; that contains the midpoint of the touch.

I think, though I am not entirely sure, that touch-adjustment is automatically performed in the frame that contains the midpoint, because it will be the frame receiving the event. Testing down into iframes contained in the result would help with the case where the hot-spot is in the top frame, but would probably still give problems when the hot-spot is in a lower frame.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706234</commentid>
    <comment_count>10</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-08-28 04:11:19 -0700</bug_when>
    <thetext>The problem is in EventHandler::hitTestResultAtPoint, it descends into inner frames if the frame is the HitTestResult::innerNode. 

Unfortunately the innerNode is rather useless with rect-based tests, and is often just the first intersected node.

The underlying problem is that EventHandler::hitTestResultAtPoint is not that suitable for rect-based tests. 

I think we should remove the padding argument from EventHandler::hitTestResultAtPoint, so it can&apos;t be used for area based tests, and provide a EventHandler::hitTestResultAtRect function to replace it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706247</commentid>
    <comment_count>11</comment_count>
      <attachid>160953</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-08-28 04:42:01 -0700</bug_when>
    <thetext>Created attachment 160953
Quick Patch

Here is a quick experimental patch that solves the test-case.

I am not sure it the right way to do it though. This won&apos;t handle iframes that have been transformed for instance. To handle that we need to let the hit-test descend into inner-documents during the normal hit-test recursion, and add a parameter similar to AllowShadowContent, AllowInnerDocumentContent, that controls whether it should go into inner documents.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706379</commentid>
    <comment_count>12</comment_count>
      <attachid>160991</attachid>
    <who name="Kevin Ellis">kevers</who>
    <bug_when>2012-08-28 08:30:06 -0700</bug_when>
    <thetext>Created attachment 160991
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706386</commentid>
    <comment_count>13</comment_count>
    <who name="Kevin Ellis">kevers</who>
    <bug_when>2012-08-28 08:42:23 -0700</bug_when>
    <thetext>Still some failures in the test case to resolve.  The approach taken was to refine the scoring to favor the candidate containing the target hotspot in the event that all candidate scores are poor.  A poor score is denoted by a distance to center score being greater than 1 implying that the touch did not overlap the center-line even though the target is larger than the touch area (in which case a much stronger hit is expected).  

The strategy differs somewhat from the approach used in zoomableIntersectionQuotient which assigns an infinite score if the touch hotspot is not contained.  The rationale is that it is easy to get very good coverage but have the hotspot lie outside the candidate for a small target.  For large targets, there is still some merit in touch adjustment if none of the candidates contain the hotspot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706405</commentid>
    <comment_count>14</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-08-28 08:58:45 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; Created an attachment (id=160991) [details]
&gt; Patch

Does this require the patch I attached (or the one in bug #95204), and if not, how would it overcome the issue of only getting the elements of one of the frames?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706507</commentid>
    <comment_count>15</comment_count>
    <who name="Kevin Ellis">kevers</who>
    <bug_when>2012-08-28 10:49:17 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (In reply to comment #12)
&gt; &gt; Created an attachment (id=160991) [details] [details]
&gt; &gt; Patch
&gt; 
&gt; Does this require the patch I attached (or the one in bug #95204), and if not, how would it overcome the issue of only getting the elements of one of the frames?

Yes, all test cases pass with the patch for #95204.  On its own, this patch only partially addresses the issue of getting elements from only one frame.  It ensures (with some reasonable level of confidence) that the correct iframe is selected when the hit adjustment candidates are iframes, but does not resume touch adjustment on the position in the child iframe.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706681</commentid>
    <comment_count>16</comment_count>
      <attachid>161048</attachid>
    <who name="Kevin Ellis">kevers</who>
    <bug_when>2012-08-28 13:35:22 -0700</bug_when>
    <thetext>Created attachment 161048
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706683</commentid>
    <comment_count>17</comment_count>
    <who name="Kevin Ellis">kevers</who>
    <bug_when>2012-08-28 13:37:53 -0700</bug_when>
    <thetext>Backed out TouchAdjustment tweak and updated expected test results.  Test contains expected failures which are fixed by patch 95204.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707236</commentid>
    <comment_count>18</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-08-29 02:28:38 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; Backed out TouchAdjustment tweak and updated expected test results.  Test contains expected failures which are fixed by patch 95204.

Oh nice. I will merge the bugs then and include your test in my patch (with attribution of course!).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707237</commentid>
    <comment_count>19</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-08-29 02:29:33 -0700</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 95204 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>160473</attachid>
            <date>2012-08-24 12:28:33 -0700</date>
            <delta_ts>2012-08-24 12:28:33 -0700</delta_ts>
            <desc>testcasE?</desc>
            <filename>index.html</filename>
            <type>text/html</type>
            <size>1735</size>
            <attacher name="Antonio Gomes">tonikitoo</attacher>
            
              <data encoding="base64">PGhlYWQ+CiAgICA8c3R5bGU+CiAgICAgICAgI2RpdjEgewogICAgICAgICAgcG9zaXRpb246IGFi
c29sdXRlOwogICAgICAgICAgYm9yZGVyOiAzcHggc29saWQgYmxhY2s7CiAgICAgICAgICB0b3A6
IDEzMHB4OwogICAgICAgICAgd2lkdGg6IDIxMHB4OwogICAgICAgICAgaGVpZ2h0OiAxMDBweDsK
ICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHBpbms7CiAgICAgICAgICBvcGFjaXR5Oi41Owog
ICAgICAgIH0KCiAgICAgICAgI2RpdjIgewogICAgICAgICAgcG9zaXRpb246IGZpeGVkOwogICAg
ICAgICAgYm9yZGVyOiAzcHggc29saWQgYmxhY2s7CiAgICAgICAgICB0b3A6IDIzMHB4OwogICAg
ICAgICAgd2lkdGg6IDIxMHB4OwogICAgICAgICAgaGVpZ2h0OiAxMDBweDsKICAgICAgICAgIGJh
Y2tncm91bmQtY29sb3I6IGJsdWU7CiAgICAgICAgICBvcGFjaXR5Oi41OwogICAgICAgIH0KCiAg
ICAgICAgaW1nIHsKICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICB9CgogICAgICAg
IGE6Zm9jdXMgewogICAgICAgICAgb3V0bGluZTogM3B4IHNvbGlkIHJlZDsKICAgICAgfQoKICAg
IDwvc3R5bGU+IAogICAgPC9zdHlsZT4KPC9oZWFkPgo8Ym9keT4KICAgIDxwPiBUaGlzIHRlc3Qg
ZW5zdXJlcyB0aGF0IGEgY2xpY2thYmxlIGVsZW1lbnQgaW4gYSBsb3dlciB6b3JkZXIgc2hvdWxk
IG5vdCBiZSBwaWNrZWQgYnkgRmF0IEZpbmdlciwgbm9yIGJ5IHRhcCBoaWdobGlnaHQgYXMgYSBj
b25zZXF1ZW5jZS48L3A+CiAgICA8cD4gVG8gcmVwcm9kdWNlIHRoZSBidWcsIGNsaWNrIGJldHdl
ZW4gdGhlIGNvbG9yZWQgdHdvIGJveGVzLiBQb3NpdGlvbmVkIGJlbG93IHRoZW0sIHRoZXJlIGlz
IGEgY2xpY2thYmxlIGVsZW1lbnQgKGFuIGFuY2hvciB3aXRoIGEgY2hpbGQgaW1hZ2UpLiA8L3A+
CiAgICA8cD4gPGI+QlVHOiBUaGVyZSBzaG91bGQgYmUgbm8gdGFwIGhpZ2hsaWdodC48L2I+PC9w
Pjxicj48YnI+CiAgICA8YSBpZD0iYTEiIGhyZWY9Iz4gPGltZyBpZD0iaW1nMSIgd2lkdGg9IjIw
MHB4IiBzcmM9Imh0dHA6Ly9tb25kYXlieW5vb24uY29tL2ltYWdlcy93ZWJraXQvd2Via2l0LWlj
b24ucG5nIi8+PC9hPjxicj48YnI+PGJyPjxicj4KICAgIDxhIGlkPSJhMiIgaHJlZj0jPiA8aW1n
IGlkPSJpbWcyIiB3aWR0aD0iMjAwcHgiIHNyYz0iaHR0cDovL21vbmRheWJ5bm9vbi5jb20vaW1h
Z2VzL3dlYmtpdC93ZWJraXQtaWNvbi5wbmciLz48L2E+PGJyPjxicj48YnI+PGJyPgogICAgPGEg
aWQ9ImEzIiBocmVmPSM+IDxpbWcgaWQ9ImltZzMiIHdpZHRoPSIyMDBweCIgc3JjPSJodHRwOi8v
bW9uZGF5Ynlub29uLmNvbS9pbWFnZXMvd2Via2l0L3dlYmtpdC1pY29uLnBuZyIvPjwvYT48YnI+
PGJyPjxicj48YnI+CiAgICA8YSBpZD0iYTQiIGhyZWY9Iz4gPGltZyBpZD0iaW1nNCIgd2lkdGg9
IjIwMHB4IiBzcmM9Imh0dHA6Ly9tb25kYXlieW5vb24uY29tL2ltYWdlcy93ZWJraXQvd2Via2l0
LWljb24ucG5nIi8+PC9hPjxicj48YnI+PGJyPjxicj4KCiAgICA8IS0tIHBvc2l0aW9uIGVsZW1l
bnRzIC0tPgogICAgPGEgaHJlZj0jIHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHRvcDotNzAw
cHgiPlRoaXMgaXMgYSByZWxhdGl2ZSBwb3NpdGlvbmVkIGxpbms6IDxzcGFuID54eXo8L3NwYW4+
IGlzICJ4eXoiLjwvYT48YnIvPgogICAgPGRpdiBpZD0iZGl2MSI+IDwvZGl2PgogICAgPGRpdiBp
ZD0iZGl2MiI+IDwvZGl2Pgo8L2JvZHk+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>160722</attachid>
            <date>2012-08-27 08:10:39 -0700</date>
            <delta_ts>2012-08-27 08:10:39 -0700</delta_ts>
            <desc>Example where it is difficult to tap on a checkbox.  </desc>
            <filename>example.tar</filename>
            <type>application/x-tar</type>
            <size>10240</size>
            <attacher name="Kevin Ellis">kevers</attacher>
            
              <data encoding="base64">aW5kZXguaHRtbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA2NDQAMDQxNDM2
NgAwMDExNjEwADAwMDAwMDAyMTEzADEyMDE2Njc2MjA3ADAxMTcyMAAgMAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGtldmVycwAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAZW5nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8
IURPQ1RZUEUgaHRtbD4KPGh0bWw+CjxoZWFkPgo8c3R5bGU+CiAgYm9keSB7CiAgICBtYXJnaW46
IDA7CiAgfQoKICAuY29udGVudC1wYWdlIHsKICAgIGhlaWdodDogMTAwJTsKICAgIGxlZnQ6IDA7
CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDA7CiAgICB3aWR0aDogMTAwJTsKICAg
IHotaW5kZXg6IDE7CiAgfQoKICAuYWN0aXZlLXBhZ2UgewogICAgei1pbmRleDogMjsKICB9Cgog
ICNuYXZiYXIgewogICAgYmFja2dyb3VuZDogI2VlZTsKICAgIGhlaWdodDogMTAwJTsKICAgIGxl
ZnQ6IDA7CiAgICBwYWRkaW5nOiAwOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgbWFyZ2lu
OiAwOwogICAgdG9wOiAwOwogICAgd2lkdGg6IDEwMHB4OwogICAgei1pbmRleDogMzsKICB9Cgog
IGxhYmVsIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgbWFyZ2luOiAxMHB4IDA7CiAgfQoKICBp
ZnJhbWUgewogICAgYm9yZGVyOiBub25lOwogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEw
MCU7CiAgICBtYXJnaW46IDA7CiAgICBwYWRkaW5nOiAwOwogIH0KCjwvc3R5bGU+CjwvaGVhZD4K
PGJvZHk+CiAgPGRpdiBpZD0ibmF2YmFyIiBzdHlsZT0iLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5z
bGF0ZVgoMHB4KTsiPgogICAgPGlmcmFtZSBzcmM9Im5hdmlnYXRpb24uaHRtbCI+PC9pZnJhbWU+
CiAgPC9kaXY+CiAgPGRpdiBpZD0icGFnZTEiIGNsYXNzPSJjb250ZW50LXBhZ2UiPgogICAgPGlm
cmFtZSBzcmM9InBhZ2UuaHRtbCMxIj48L2lmcmFtZT4KICA8L2Rpdj4KICA8ZGl2IGlkPSJwYWdl
MiIgY2xhc3M9ImNvbnRlbnQtcGFnZSI+CiAgICA8aWZyYW1lIHNyYz0icGFnZS5odG1sIzIiPjwv
aWZyYW1lPgogIDwvZGl2PiAKICA8ZGl2IGlkPSJwYWdlMyIgY2xhc3M9ImNvbnRlbnQtcGFnZSBh
Y3RpdmUtcGFnZSI+CiAgICA8aWZyYW1lIHNyYz0icGFnZS5odG1sIzMiPjwvaWZyYW1lPgogIDwv
ZGl2PgogIDxkaXYgaWQ9InBhZ2U0IiBjbGFzcz0iY29udGVudC1wYWdlIj4KICAgIDxpZnJhbWUg
c3JjPSJwYWdlLmh0bWwjNCI+PC9pZnJhbWU+CiAgPC9kaXY+CjxzY3JpcHQ+Cjwvc2NyaXB0Pgo8
L2JvZHk+CjwvaHRtbD4KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABuYXZp
Z2F0aW9uLmh0bWwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY0NAAwNDE0MzY2ADAw
MTE2MTAAMDAwMDAwMDIzMjYAMTIwMTY2NzYxNDUAMDEyNzU3ACAwAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAa2V2ZXJzAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAABlbmcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwhRE9D
VFlQRT0iaHRtbCI+CjxodG1sPgo8aGVhZD4KPHN0eWxlPgogIGJvZHkgewogICAgcGFkZGluZzog
MDsKICAgIG1hcmdpbjogMDsKICB9CgogIGJ1dHRvbiB7CiAgICAtd2Via2l0LWJveC1zaXppbmc6
IGJvcmRlci1ib3g7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIGJhY2tncm91bmQ6IG5vbmU7CiAg
ICBib3JkZXI6IG5vbmU7CiAgICBwYWRkaW5nOiAxMHB4OwogICAgd2lkdGg6IDEwMCU7CiAgfQoK
ICBidXR0b246aG92ZXIgewogICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgfQoKICBidXR0b24uYWN0
aXZlIHsKICAgIGJhY2tncm91bmQ6IHdoaXRlOwogIH0KPC9zdHlsZT4KPC9oZWFkPgo8Ym9keT4K
ICA8YnV0dG9uIGlkPSJzZWxlY3QtcGFnZTEiIG9uY2xpY2s9InNlbGVjdFBhZ2UoJ3BhZ2UxJyk7
Ij5QYWdlIDE8L2J1dHRvbj4KICA8YnV0dG9uIGlkPSJzZWxlY3QtcGFnZTIiIG9uY2xpY2s9InNl
bGVjdFBhZ2UoJ3BhZ2UyJyk7Ij5QYWdlIDI8L2J1dHRvbj4KICA8YnV0dG9uIGlkPSJzZWxlY3Qt
cGFnZTMiIGNsYXNzPSJhY3RpdmUiIG9uY2xpY2s9InNlbGVjdFBhZ2UoJ3BhZ2UzJyk7Ij5QYWdl
IDM8L2J1dHRvbj4KICA8YnV0dG9uIGlkPSJzZWxlY3QtcGFnZTQiIG9uY2xpY2s9InNlbGVjdFBh
Z2UoJ3BhZ2U0Jyk7Ij5QYWdlIDQ8L2J1dHRvbj4KPHNjcmlwdD4KICBmdW5jdGlvbiBzZWxlY3RQ
YWdlKG5hbWUpIHsKICAgIHZhciBuYXZpZ2F0ZUZyb20gPSBwYXJlbnQuZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeUNsYXNzTmFtZSgnYWN0aXZlLXBhZ2UnKVswXTsKICAgIHZhciBuYXZpZ2F0ZVRvID0g
cGFyZW50LmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG5hbWUpOwogICAgaWYgKG5hdmlnYXRlVG8g
IT0gbmF2aWdhdGVGcm9tKSB7CiAgICAgIGlmIChuYXZpZ2F0ZUZyb20pIHsKICAgICAgICBuYXZp
Z2F0ZUZyb20uY2xhc3NMaXN0LnJlbW92ZSgnYWN0aXZlLXBhZ2UnKTsKICAgICAgICB2YXIgc2Vs
ZWN0b3IgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdhY3RpdmUnKVswXTsKICAg
ICAgICBzZWxlY3Rvci5jbGFzc0xpc3QucmVtb3ZlKCdhY3RpdmUnKTsKICAgICAgfQogICAgICBu
YXZpZ2F0ZVRvLmNsYXNzTGlzdC5hZGQoJ2FjdGl2ZS1wYWdlJyk7CiAgICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdzZWxlY3QtJyArIG5hbWUpLmNsYXNzTGlzdC5hZGQoJ2FjdGl2ZScpOwog
ICAgfQogIH0KCjwvc2NyaXB0Pgo8L2JvZHk+CjwvaHRtbD4KAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHBhZ2UuaHRt
bAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjQ0ADA0MTQzNjYAMDAxMTYx
MAAwMDAwMDAwMTE2NQAxMjAxNjY3NzExMgAwMTE1MjcAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABrZXZlcnMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAGVuZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPCFET0NUWVBF
PSJodG1sIj4KPGh0bWw+CjxoZWFkPgo8c3R5bGU+CiAgYm9keSB7CiAgICAtd2Via2l0LW1hcmdp
bi1zdGFydDogMTAwcHg7CiAgICBiYWNrZ3JvdW5kOiB3aGl0ZTsKICB9CgogIGxhYmVsIHsKICAg
IGRpc3BsYXk6IGJsb2NrOwogICAgbWFyZ2luOiAxMHB4IDA7CiAgfQo8L3N0eWxlPgo8L2hlYWQ+
Cjxib2R5IG9ubG9hZD0iaW5pdCgpOyI+CiAgPGgxIGlkPSJ0aXRsZSI+PC9oMT4KICA8bGFiZWw+
PGlucHV0IHR5cGU9J2NoZWNrYm94Jz5PcHRpb24gMTwvbGFiZWw+CiAgPGxhYmVsPjxpbnB1dCB0
eXBlPSdjaGVja2JveCc+T3B0aW9uIDI8L2xhYmVsPgogIDxsYWJlbD48aW5wdXQgdHlwZT0nY2hl
Y2tib3gnPk9wdGlvbiAzPC9sYWJlbD4KICA8bGFiZWw+PGlucHV0IHR5cGU9J2NoZWNrYm94Jz5P
cHRpb24gNDwvbGFiZWw+CjxzY3JpcHQ+CiAgZnVuY3Rpb24gaW5pdCgpIHsKICAgIHZhciBwYWdl
TnVtYmVyID0gbG9jYXRpb24uaGFzaDsKICAgIHZhciB0aXRsZSA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCd0aXRsZScpOwogICAgdGl0bGUudGV4dENvbnRlbnQgPSAnUGFnZSAnICsgcGFnZU51
bWJlciArICcgb3B0aW9ucyc7CiAgfQo8L3NjcmlwdD4KCjwvYm9keT4KPC9odG1sPgoAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>160953</attachid>
            <date>2012-08-28 04:42:01 -0700</date>
            <delta_ts>2012-08-28 08:29:59 -0700</delta_ts>
            <desc>Quick Patch</desc>
            <filename>Patch</filename>
            <type>text/plain</type>
            <size>3843</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCA5NTdhZGEzLi42NTc2OTA3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0xMDk2LDYgKzEwOTYsNDEgQEAg
SGl0VGVzdFJlc3VsdCBFdmVudEhhbmRsZXI6OmhpdFRlc3RSZXN1bHRBdFBvaW50KGNvbnN0IExh
eW91dFBvaW50JiBwb2ludCwgYm9vbAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK0hpdFRlc3RS
ZXN1bHQgRXZlbnRIYW5kbGVyOjpoaXRUZXN0UmVzdWx0QXRSZWN0KGNvbnN0IExheW91dFBvaW50
JiBwb2ludCwgY29uc3QgTGF5b3V0U2l6ZSYgcGFkZGluZywgYm9vbCBhbGxvd1NoYWRvd0NvbnRl
bnQsIGJvb2wgaWdub3JlQ2xpcHBpbmcsIEhpdFRlc3RSZXF1ZXN0OjpIaXRUZXN0UmVxdWVzdFR5
cGUgaGl0VHlwZSkKK3sKKyAgICBlbnVtIFNoYWRvd0NvbnRlbnRGaWx0ZXJQb2xpY3kgc2hhZG93
Q29udGVudEZpbHRlclBvbGljeSA9IGFsbG93U2hhZG93Q29udGVudCA/IEFsbG93U2hhZG93Q29u
dGVudCA6IERvTm90QWxsb3dTaGFkb3dDb250ZW50OworICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0
KHBvaW50LCBwYWRkaW5nLmhlaWdodCgpLCBwYWRkaW5nLndpZHRoKCksIHBhZGRpbmcuaGVpZ2h0
KCksIHBhZGRpbmcud2lkdGgoKSwgc2hhZG93Q29udGVudEZpbHRlclBvbGljeSk7CisKKyAgICBp
ZiAoIW1fZnJhbWUtPmNvbnRlbnRSZW5kZXJlcigpKQorICAgICAgICByZXR1cm4gcmVzdWx0Owor
ICAgIGlmIChpZ25vcmVDbGlwcGluZykKKyAgICAgICAgaGl0VHlwZSB8PSBIaXRUZXN0UmVxdWVz
dDo6SWdub3JlQ2xpcHBpbmc7CisgICAgbV9mcmFtZS0+Y29udGVudFJlbmRlcmVyKCktPmhpdFRl
c3QoSGl0VGVzdFJlcXVlc3QoaGl0VHlwZSksIHJlc3VsdCk7CisKKyAgICBIaXRUZXN0UmVzdWx0
OjpOb2RlU2V0Ojpjb25zdF9pdGVyYXRvciBpdCA9IHJlc3VsdC5yZWN0QmFzZWRUZXN0UmVzdWx0
KCkuYmVnaW4oKTsKKyAgICBIaXRUZXN0UmVzdWx0OjpOb2RlU2V0Ojpjb25zdF9pdGVyYXRvciBl
bmQgPSByZXN1bHQucmVjdEJhc2VkVGVzdFJlc3VsdCgpLmVuZCgpOworICAgIGZvcig7IGl0ICE9
IGVuZDsgKytpdCkgeworICAgICAgICBjb25zdCBOb2RlKiBuID0gaXQtPmdldCgpOworICAgICAg
ICBpZiAoIW4gfHwgIW4tPnJlbmRlcmVyKCkgfHwgIW4tPnJlbmRlcmVyKCktPmlzV2lkZ2V0KCkp
CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgUmVuZGVyV2lkZ2V0KiByZW5kZXJXaWRn
ZXQgPSB0b1JlbmRlcldpZGdldChuLT5yZW5kZXJlcigpKTsKKyAgICAgICAgV2lkZ2V0KiB3aWRn
ZXQgPSByZW5kZXJXaWRnZXQtPndpZGdldCgpOworICAgICAgICBpZiAoIXdpZGdldCB8fCAhd2lk
Z2V0LT5pc0ZyYW1lVmlldygpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIEZyYW1l
KiBmcmFtZSA9IHN0YXRpY19jYXN0PGNvbnN0IEhUTUxGcmFtZUVsZW1lbnRCYXNlKj4obiktPmNv
bnRlbnRGcmFtZSgpOworICAgICAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+Y29udGVudFJlbmRl
cmVyKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgRnJhbWVWaWV3KiB2aWV3ID0g
c3RhdGljX2Nhc3Q8RnJhbWVWaWV3Kj4od2lkZ2V0KTsKKyAgICAgICAgSW50UG9pbnQgZnJhbWVQ
b2ludCA9IHZpZXctPnJvb3RWaWV3VG9Db250ZW50cyhtX2ZyYW1lLT52aWV3KCktPmNvbnRlbnRz
VG9Sb290Vmlldyhyb3VuZGVkSW50UG9pbnQocG9pbnQpKSk7CisgICAgICAgIEhpdFRlc3RSZXN1
bHQgd2lkZ2V0SGl0VGVzdFJlc3VsdCA9IGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJl
c3VsdEF0UmVjdChmcmFtZVBvaW50LCBwYWRkaW5nLCBhbGxvd1NoYWRvd0NvbnRlbnQsIGlnbm9y
ZUNsaXBwaW5nLCBoaXRUeXBlKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZCh3aWRnZXRIaXRUZXN0
UmVzdWx0KTsKKyAgICB9CisKKyAgICBpZiAoIWFsbG93U2hhZG93Q29udGVudCkKKyAgICAgICAg
cmVzdWx0LnNldFRvTm9uU2hhZG93QW5jZXN0b3IoKTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9
CiAKIHZvaWQgRXZlbnRIYW5kbGVyOjpzdGFydEF1dG9zY3JvbGxUaW1lcigpCiB7CkBAIC0yNTA0
LDcgKzI1MzksNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6YmVzdENsaWNrYWJsZU5vZGVGb3JUb3Vj
aFBvaW50KGNvbnN0IEludFBvaW50JiB0b3VjaENlbnRlciwgYwogewogICAgIEhpdFRlc3RSZXF1
ZXN0OjpIaXRUZXN0UmVxdWVzdFR5cGUgaGl0VHlwZSA9IEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25s
eSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmU7CiAgICAgSW50UG9pbnQgaGl0VGVzdFBvaW50ID0g
bV9mcmFtZS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKHRvdWNoQ2VudGVyKTsKLSAgICBIaXRU
ZXN0UmVzdWx0IHJlc3VsdCA9IGhpdFRlc3RSZXN1bHRBdFBvaW50KGhpdFRlc3RQb2ludCwgLyph
bGxvd1NoYWRvd0NvbnRlbnQqLyB0cnVlLCAvKmlnbm9yZUNsaXBwaW5nKi8gZmFsc2UsIERvbnRI
aXRUZXN0U2Nyb2xsYmFycywgaGl0VHlwZSwgdG91Y2hSYWRpdXMpOworICAgIEhpdFRlc3RSZXN1
bHQgcmVzdWx0ID0gaGl0VGVzdFJlc3VsdEF0UmVjdChoaXRUZXN0UG9pbnQsIHRvdWNoUmFkaXVz
LCAvKmFsbG93U2hhZG93Q29udGVudCovIHRydWUsIC8qaWdub3JlQ2xpcHBpbmcqLyBmYWxzZSwg
aGl0VHlwZSk7CiAKICAgICBJbnRSZWN0IHRvdWNoUmVjdCh0b3VjaENlbnRlciAtIHRvdWNoUmFk
aXVzLCB0b3VjaFJhZGl1cyArIHRvdWNoUmFkaXVzKTsKICAgICBSZWZQdHI8U3RhdGljSGFzaFNl
dE5vZGVMaXN0PiBub2RlTGlzdCA9IFN0YXRpY0hhc2hTZXROb2RlTGlzdDo6YWRvcHQocmVzdWx0
LnJlY3RCYXNlZFRlc3RSZXN1bHQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAppbmRl
eCA2ZDhhMGFiLi5lZWMyNmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50
SGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKQEAgLTEy
MCw2ICsxMjAsOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBIaXRUZXN0UmVxdWVzdDo6SGl0VGVzdFJlcXVlc3RUeXBlIGhpdFR5cGUgPSBIaXRUZXN0
UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTGF5b3V0U2l6ZSYgcGFkZGluZyA9IExh
eW91dFNpemUoKSk7CiAKKyAgICBIaXRUZXN0UmVzdWx0IGhpdFRlc3RSZXN1bHRBdFJlY3QoY29u
c3QgTGF5b3V0UG9pbnQmLCBjb25zdCBMYXlvdXRTaXplJiBwYWRkaW5nLCBib29sIGFsbG93U2hh
ZG93Q29udGVudCwgYm9vbCBpZ25vcmVDbGlwcGluZyA9IGZhbHNlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBIaXRUZXN0UmVxdWVzdDo6SGl0VGVzdFJlcXVlc3RUeXBl
IGhpdFR5cGUgPSBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0
aXZlKTsKKwogICAgIGJvb2wgbW91c2VQcmVzc2VkKCkgY29uc3QgeyByZXR1cm4gbV9tb3VzZVBy
ZXNzZWQ7IH0KICAgICB2b2lkIHNldE1vdXNlUHJlc3NlZChib29sIHByZXNzZWQpIHsgbV9tb3Vz
ZVByZXNzZWQgPSBwcmVzc2VkOyB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>160991</attachid>
            <date>2012-08-28 08:30:06 -0700</date>
            <delta_ts>2012-08-28 13:35:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94936-20120828112956.patch</filename>
            <type>text/plain</type>
            <size>9724</size>
            <attacher name="Kevin Ellis">kevers</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2NTgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWVmNGFkMTBkODJkZjA2
ZjMxZDM0MTcwNjNkM2RlMDgyMDEwMDk4Yi4uNmIwY2ZmNmYxMDVlZTIxZDE2MDljNmFjZWZhODFm
ZThmOTMwOWVhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTA4LTI4ICBLZXZp
biBFbGxpcyAgPGtldmVyc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW1wcm92ZSB0b3VjaC1h
ZGp1c3RtZW50IGF0IGFuIGlmcmFtZSBib3VuZGFyeS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk0OTM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUmVmaW5lcyBzY29yaW5nIGZvciB0b3VjaCBhZGp1c3Rt
ZW50IGNhbmRpZGF0ZXMgdG8gZmF2b3IgdGhlIHJlZ2lvbgorICAgICAgICBjb250YWluaW5nIHRo
ZSB0b3VjaCBob3RzcG90IGZvciBsYXJnZSB0YXJnZXRzIHdpdGggcG9vciBoaXQgc2NvcmVzLgor
CisgICAgICAgIFRlc3Q6IHRvdWNoYWRqdXN0bWVudC9pZnJhbWUtYm91bmRhcnkuaHRtbAorCisg
ICAgICAgICogcGFnZS9Ub3VjaEFkanVzdG1lbnQuY3BwOgorICAgICAgICAoVG91Y2hBZGp1c3Rt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRvdWNoQWRqdXN0bWVudDo6aHlicmlkRGlzdGFuY2VG
dW5jdGlvbik6CisKIDIwMTItMDgtMjQgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogZG8gbm90IHNlbmQgcHJvZmlsZSBoZWFk
ZXJzIHRvIHRoZSBmcm9udC1lbmQgdW50aWwgZXhwbGljaXRseSByZXF1ZXN0ZWQuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RvdWNoQWRqdXN0bWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1RvdWNoQWRqdXN0bWVudC5jcHAKaW5kZXggZGRmMmFiNTYzZmNkOWUyZDhkNjQ0
NzY3N2YwZTgwZGY3MjQ0N2EyYS4uODNkMTA3MThiYzcwMTc4OTI2Zjg4N2NkYzM5NTE4ODYyZWZm
MDg1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Ub3VjaEFkanVzdG1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVG91Y2hBZGp1c3RtZW50LmNwcApAQCAtNDYsNiAr
NDYsOCBAQCBuYW1lc3BhY2UgVG91Y2hBZGp1c3RtZW50IHsKIAogY29uc3QgZmxvYXQgemVyb1Rv
bGVyYW5jZSA9IDFlLTZmOwogCitjb25zdCBmbG9hdCBtYXhpbXVtU2NvcmUgPSAxOworCiAvLyBD
bGFzcyBmb3IgcmVtZW1iZXJpbmcgYWJzb2x1dGUgcXVhZHMgb2YgYSB0YXJnZXQgbm9kZSBhbmQg
d2hhdCBub2RlIHRoZXkgcmVwcmVzZW50LgogY2xhc3MgU3VidGFyZ2V0R2VvbWV0cnkgewogcHVi
bGljOgpAQCAtMzQzLDYgKzM0NSw4IEBAIGZsb2F0IGh5YnJpZERpc3RhbmNlRnVuY3Rpb24oY29u
c3QgSW50UG9pbnQmIHRvdWNoSG90c3BvdCwgY29uc3QgSW50UmVjdCYgdG91Y2hBCiAgICAgZmxv
YXQgaW50ZXJzZWN0QXJlYSA9IHJlY3Quc2l6ZSgpLmFyZWEoKTsKICAgICBmbG9hdCBpbnRlcnNl
Y3Rpb25TY29yZSA9IDEgLSBpbnRlcnNlY3RBcmVhIC8gdGFyZ2V0QXJlYTsKIAorICAgIGlmIChk
aXN0YW5jZVRvQ2VudGVyU2NvcmUgPiBtYXhpbXVtU2NvcmUgJiYgIXJlY3QuY29udGFpbnModG91
Y2hIb3RzcG90KSkKKyAgICAgICAgcmV0dXJuIG1heGltdW1TY29yZTsKICAgICByZXR1cm4gaW50
ZXJzZWN0aW9uU2NvcmUgPCBkaXN0YW5jZVRvQ2VudGVyU2NvcmUgPyBpbnRlcnNlY3Rpb25TY29y
ZSA6IGRpc3RhbmNlVG9DZW50ZXJTY29yZTsKIH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGZiNGZkYTgyZDJlODk4NTFl
OWU1MTRhNGUwY2UyZjg5NjlmYzVhMzguLjc1NDQ0NmRjMDJjYTRmNmNmOTdkZmFkMDVmZGQ5NTVl
NjA3OTY2ZTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0wOC0yOCAgS2V2aW4gRWxsaXMg
IDxrZXZlcnNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEltcHJvdmUgdG91Y2gtYWRqdXN0bWVu
dCBhdCBhbiBpZnJhbWUgYm91bmRhcnkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD05NDkzNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRlc3QgdG91Y2ggYWRqdXN0bWVudHMgdGhhdCBzcGFuIHRoZSBib3Vu
ZGFyeSBiZXR3ZWVuIHR3byBpZnJhbWVzLgorCisgICAgICAgICogdG91Y2hhZGp1c3RtZW50L2lm
cmFtZS1ib3VuZGFyeS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRvdWNoYWRqdXN0
bWVudC9pZnJhbWUtYm91bmRhcnkuaHRtbDogQWRkZWQuCisgICAgICAgICogdG91Y2hhZGp1c3Rt
ZW50L3Jlc291cmNlcy9pbm5lci1jb250ZW50LXBhZ2UuaHRtbDogQWRkZWQuCisgICAgICAgICog
dG91Y2hhZGp1c3RtZW50L3Jlc291cmNlcy9pbm5lci1uYXZpZ2F0aW9uLWZyYW1lLmh0bWw6IEFk
ZGVkLgorCiAyMDEyLTA4LTI0ICAnUGF2ZWwgRmVsZG1hbicgIDxwZmVsZG1hbkBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogdGhyZWUgbGF5b3V0IHRlc3RzIGNyYXNoaW5n
IHdpdGggYXNzZXJ0aW9uIGZhaWx1cmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RvdWNoYWRq
dXN0bWVudC9pZnJhbWUtYm91bmRhcnktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdG91Y2hh
ZGp1c3RtZW50L2lmcmFtZS1ib3VuZGFyeS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjlkZWI1
ZDIwOGY2M2U5NmZjYjE4MTNjNjk2ZTFiM2M0ZDdkYmZiOQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC9pZnJhbWUtYm91bmRhcnktZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMjggQEAKKyAKK1Rlc3QgdG91Y2gtYWRqdXN0bWVudCBhdCB0aGUgYm91bmRhcnkg
b2YgYW4gaWZyYW1lLiBFbnN1cmUgdGhhdCB0b3VjaCBhZGp1c3RtZW50IHByb3BhZ2F0ZXMgdG8g
dGhlIGlmcmFtZSBlbmNsb3NpbmcgdGhlIG1pZHBvaW50LgorCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKKworVGVzdCBkaXJlY3QgdG91Y2hlcy4KK1BBU1MgYWRqdXN0ZWROb2RlLmlkIGlz
ICJjaGVja2JveC0xIgorUEFTUyBhZGp1c3RlZE5vZGUuaWQgaXMgImJ1dHRvbi0xIgorUEFTUyBh
ZGp1c3RlZE5vZGUuaWQgaXMgImNoZWNrYm94LTIiCitQQVNTIGFkanVzdGVkTm9kZS5pZCBpcyAi
YnV0dG9uLTIiCitQQVNTIGFkanVzdGVkTm9kZS5pZCBpcyAiY2hlY2tib3gtMyIKK1BBU1MgYWRq
dXN0ZWROb2RlLmlkIGlzICJidXR0b24tMyIKK1BBU1MgYWRqdXN0ZWROb2RlLmlkIGlzICJjaGVj
a2JveC00IgorUEFTUyBhZGp1c3RlZE5vZGUuaWQgaXMgImJ1dHRvbi00IgorVGVzdCBpbmRpcmVj
dCB0b3VjaGVzLgorUEFTUyBhZGp1c3RlZE5vZGUuaWQgaXMgImNoZWNrYm94LTEiCitGQUlMIGFk
anVzdGVkTm9kZS5pZCBzaG91bGQgYmUgYnV0dG9uLTEuIFdhcyBuYXYtZnJhbWUuCitQQVNTIGFk
anVzdGVkTm9kZS5pZCBpcyAiY2hlY2tib3gtMiIKK0ZBSUwgYWRqdXN0ZWROb2RlLmlkIHNob3Vs
ZCBiZSBidXR0b24tMi4gV2FzIG5hdi1mcmFtZS4KK1BBU1MgYWRqdXN0ZWROb2RlLmlkIGlzICJj
aGVja2JveC0zIgorRkFJTCBhZGp1c3RlZE5vZGUuaWQgc2hvdWxkIGJlIGJ1dHRvbi0zLiBXYXMg
bmF2LWZyYW1lLgorUEFTUyBhZGp1c3RlZE5vZGUuaWQgaXMgImNoZWNrYm94LTQiCitGQUlMIGFk
anVzdGVkTm9kZS5pZCBzaG91bGQgYmUgYnV0dG9uLTQuIFdhcyBuYXYtZnJhbWUuCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L2lmcmFtZS1ib3VuZGFyeS5odG1sIGIvTGF5b3V0
VGVzdHMvdG91Y2hhZGp1c3RtZW50L2lmcmFtZS1ib3VuZGFyeS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJi
NjFjMWY0MWUzZjVhOTkzMWU5ZGI1NjdjMmQ0ZTdkZGEzOGEyYjcKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvaWZyYW1lLWJvdW5kYXJ5Lmh0bWwKQEAgLTAs
MCArMSwxMDAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8dGl0bGU+
VGVzdCB0b3VjaCBhZGp1c3RtZW50IGF0IGFuIGlmcmFtZSBib3VuZGFyeS48L3RpdGxlPgorICAg
IDxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy90b3VjaGFkanVzdG1lbnQuanMiPjwvc2Ny
aXB0PgorICAgIDxzdHlsZT4KKyAgICAgICAgI25hdmJhciB7CisgICAgICAgICAgICBiYWNrZ3Jv
dW5kOiAjZWVlOworICAgICAgICAgICAgaGVpZ2h0OiAxMDAlOworICAgICAgICAgICAgbGVmdDog
MDsKKyAgICAgICAgICAgIHBhZGRpbmc6IDA7CisgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1
dGU7CisgICAgICAgICAgICBtYXJnaW46IDA7CisgICAgICAgICAgICB0b3A6IDA7CisgICAgICAg
ICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIH0KKworICAgICAgICAjY29udGVudC1wYWdlIHsK
KyAgICAgICAgICAgIGhlaWdodDogMTAwJTsKKyAgICAgICAgICAgIGxlZnQ6IDEwMHB4OworICAg
ICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgICAgICAgcmlnaHQ6IDA7CisgICAg
ICAgICAgICB0b3A6IDA7CisgICAgICAgIH0KKworICAgICAgICBpZnJhbWUgeworICAgICAgICAg
ICAgYm9yZGVyOiBub25lOworICAgICAgICAgICAgd2lkdGg6IDEwMCU7CisgICAgICAgICAgICBo
ZWlnaHQ6IDEwMCU7CisgICAgICAgICAgICBtYXJnaW46IDA7CisgICAgICAgICAgICBwYWRkaW5n
OiAwOworICAgICAgICB9CisgICAgPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVu
VGVzdHMoKSI+Cis8ZGl2IGlkPSJuYXZiYXIiICBzdHlsZT0iLXdlYmtpdC10cmFuc2Zvcm06IHRy
YW5zbGF0ZVgoMHB4KTsiPgorICAgIDxpZnJhbWUgaWQ9Im5hdi1mcmFtZSIgc3JjPSJyZXNvdXJj
ZXMvaW5uZXItbmF2aWdhdGlvbi1mcmFtZS5odG1sIj48L2lmcmFtZT4KKzwvZGl2PgorPGRpdiBp
ZD0iY29udGVudC1wYWdlIj4KKyAgICA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL2lubmVyLWNvbnRl
bnQtcGFnZS5odG1sIj48L2lmcmFtZT4KKzwvZGl2PgorCis8cCBpZD0nZGVzY3JpcHRpb24nPjwv
cD4KKzxkaXYgaWQ9J2NvbnNvbGUnPjwvZGl2PgorCis8c2NyaXB0PiAKKyAgICB2YXIgaXRlbUhl
aWdodCA9IDI4OworICAgIHZhciBib3JkZXJPZmZzZXQgPSAxMDA7CisgICAgdmFyIGNoZWNrYm94
T2Zmc2V0ID0gMTg7CisgICAgdmFyIGxpbmtPZmZzZXQgPSAtNTA7CisgICAgdmFyIGNoZWNrYm94
T2Zmc2V0SW5kaXJlY3QgPSA1OworICAgIHZhciBsaW5rT2Zmc2V0SW5kaXJlY3QgPSAtNTsKKyAg
ICB2YXIgdG91Y2hSYWRpdXMgPSAzMDsKKworICAgIGZ1bmN0aW9uIHRlc3RSb3VuZFRvdWNoKHgs
IHksIHJhZGl1cykKKyAgICB7CisgICAgICAgIHZhciB4ID0geCAtIHJhZGl1czsKKyAgICAgICAg
dmFyIHkgPSB5IC0gcmFkaXVzOworICAgICAgICB2YXIgd2lkdGggPSByYWRpdXMgKiAyOworICAg
ICAgICB2YXIgaGVpZ2h0ID0gcmFkaXVzICogMjsKKyAgICAgICAgdmFyIGFkanVzdGVkTm9kZSA9
IGludGVybmFscy50b3VjaE5vZGVBZGp1c3RlZFRvQmVzdENsaWNrYWJsZU5vZGUoeCwgeSwgd2lk
dGgsIGhlaWdodCwgZG9jdW1lbnQpOworICAgICAgICBpZiAoYWRqdXN0ZWROb2RlLm5vZGVUeXBl
ID09IDMpIC8vIFRFWFQgbm9kZQorICAgICAgICAgICAgYWRqdXN0ZWROb2RlID0gYWRqdXN0ZWRO
b2RlLnBhcmVudE5vZGU7CisgICAgICAgIHJldHVybiBhZGp1c3RlZE5vZGU7CisgICAgfQorICAg
IGZ1bmN0aW9uIHRlc3REaXJlY3RUb3VjaGVzKCkKKyAgICB7CisgICAgICAgIGRlYnVnKCdUZXN0
IGRpcmVjdCB0b3VjaGVzLicpOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDQ7IGkrKykg
eworICAgICAgICAgICAgYWRqdXN0ZWROb2RlID0gdGVzdFJvdW5kVG91Y2goYm9yZGVyT2Zmc2V0
ICsgY2hlY2tib3hPZmZzZXQsIChpICsgMC41KSAqIGl0ZW1IZWlnaHQsIHRvdWNoUmFkaXVzKTsK
KyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnYWRqdXN0ZWROb2RlLmlkJywgJ2No
ZWNrYm94LScgKyAoaSArIDEpKTsKKyAgICAgICAgICAgIGFkanVzdGVkTm9kZSA9IHRlc3RSb3Vu
ZFRvdWNoKGJvcmRlck9mZnNldCArIGxpbmtPZmZzZXQsIChpICsgMC41KSAqIGl0ZW1IZWlnaHQs
IHRvdWNoUmFkaXVzKTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnYWRqdXN0
ZWROb2RlLmlkJywgJ2J1dHRvbi0nICsgKGkgKyAxKSk7CisgICAgICAgIH0KKyAgICB9CisgICAg
ZnVuY3Rpb24gdGVzdEluZGlyZWN0VG91Y2hlcygpIHsKKyAgICAgICAgIGRlYnVnKCdUZXN0IGlu
ZGlyZWN0IHRvdWNoZXMuJyk7CisgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDQ7IGkrKykg
eworICAgICAgICAgICAgYWRqdXN0ZWROb2RlID0gdGVzdFJvdW5kVG91Y2goYm9yZGVyT2Zmc2V0
ICsgY2hlY2tib3hPZmZzZXRJbmRpcmVjdCwgKGkgKyAwLjUpICogaXRlbUhlaWdodCwgdG91Y2hS
YWRpdXMpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdhZGp1c3RlZE5vZGUu
aWQnLCAnY2hlY2tib3gtJyArIChpICsgMSkpOworICAgICAgICAgICAgYWRqdXN0ZWROb2RlID0g
dGVzdFJvdW5kVG91Y2goYm9yZGVyT2Zmc2V0ICsgbGlua09mZnNldEluZGlyZWN0LCAoaSArIDAu
NSkgKiBpdGVtSGVpZ2h0LCB0b3VjaFJhZGl1cyk7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoJ2FkanVzdGVkTm9kZS5pZCcsICdidXR0b24tJyArIChpICsgMSkpOworICAgICAg
ICB9CisgICAgfQorCisgICAgZnVuY3Rpb24gcnVuVGVzdHMoKQorICAgIHsKKyAgICAgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyICYmIHdpbmRvdy5pbnRlcm5hbHMgJiYgaW50ZXJuYWxzLnRvdWNo
Tm9kZUFkanVzdGVkVG9CZXN0Q2xpY2thYmxlTm9kZSkgeworICAgICAgICAgICAgZGVzY3JpcHRp
b24oJ1Rlc3QgdG91Y2gtYWRqdXN0bWVudCBhdCB0aGUgYm91bmRhcnkgb2YgYW4gaWZyYW1lLiAg
RW5zdXJlIHRoYXQgdG91Y2ggYWRqdXN0bWVudCBwcm9wYWdhdGVzIHRvIHRoZSBpZnJhbWUgZW5j
bG9zaW5nIHRoZSBtaWRwb2ludC4nKTsKKyAgICAgICAgICAgIHRlc3REaXJlY3RUb3VjaGVzKCk7
CisgICAgICAgICAgICB0ZXN0SW5kaXJlY3RUb3VjaGVzKCk7CisgICAgICAgICAgICBmaW5pc2hK
U1Rlc3QoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKzwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90
b3VjaGFkanVzdG1lbnQvcmVzb3VyY2VzL2lubmVyLWNvbnRlbnQtcGFnZS5odG1sIGIvTGF5b3V0
VGVzdHMvdG91Y2hhZGp1c3RtZW50L3Jlc291cmNlcy9pbm5lci1jb250ZW50LXBhZ2UuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi43MzdiMjE4ODY0M2MyOGZlZmQyOWQ3ZWM4NTA1YmYxOGQwOGE3ZWEyCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L3Jlc291cmNlcy9pbm5l
ci1jb250ZW50LXBhZ2UuaHRtbApAQCAtMCwwICsxLDI0IEBACis8IURPQ1RZUEU9Imh0bWwiPgor
PGh0bWw+Cis8aGVhZD4KKyAgICA8c3R5bGU+CisgICAgICAgIGJvZHkgeworICAgICAgICAgICAg
YmFja2dyb3VuZDogd2hpdGU7CisgICAgICAgICAgICBwYWRkaW5nOiAwOworICAgICAgICAgICAg
bWFyZ2luOiAwOworICAgICAgICB9CisKKyAgICAgICAgbGFiZWwgeworICAgICAgICAgICAgZGlz
cGxheTogYmxvY2s7CisgICAgICAgICAgICBsaW5lLWhlaWdodDogMjJweDsKKyAgICAgICAgICAg
IG1hcmdpbjogNXB4IDEwcHg7CisgICAgICAgIH0KKyAgICA8L3N0eWxlPgorPC9oZWFkPgorPGJv
ZHk+Cis8bGFiZWw+PGlucHV0IGlkPSJjaGVja2JveC0xIiB0eXBlPSJjaGVja2JveCI+Q2hlY2ti
b3ggMTwvbGFiZWw+Cis8bGFiZWw+PGlucHV0IGlkPSJjaGVja2JveC0yIiB0eXBlPSJjaGVja2Jv
eCI+Q2hlY2tib3ggMjwvbGFiZWw+Cis8bGFiZWw+PGlucHV0IGlkPSJjaGVja2JveC0zIiB0eXBl
PSJjaGVja2JveCI+Q2hlY2tib3ggMzwvbGFiZWw+Cis8bGFiZWw+PGlucHV0IGlkPSJjaGVja2Jv
eC00IiB0eXBlPSJjaGVja2JveCI+Q2hlY2tib3ggNDwvbGFiZWw+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvcmVzb3VyY2VzL2lubmVy
LW5hdmlnYXRpb24tZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC9yZXNv
dXJjZXMvaW5uZXItbmF2aWdhdGlvbi1mcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZhMmM3NTM5NjZi
ZWI5NWZmZTMyOGNmNzg1NTJkMWM2Mjc3ZGFmMjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy90b3VjaGFkanVzdG1lbnQvcmVzb3VyY2VzL2lubmVyLW5hdmlnYXRpb24tZnJhbWUuaHRt
bApAQCAtMCwwICsxLDI1IEBACis8IURPQ1RZUEU9Imh0bWwiPgorPGh0bWw+Cis8aGVhZD4KKyAg
ICA8c3R5bGU+CisgICAgICAgIGJvZHkgeworICAgICAgICAgICAgcGFkZGluZzogMDsKKyAgICAg
ICAgICAgIG1hcmdpbjogMDsKKyAgICAgICAgfQorCisgICAgICAgIGlucHV0W3R5cGU9ImJ1dHRv
biJdIHsKKyAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOworICAgICAgICAgICAgdGV4dC1hbGln
bjogY2VudGVyOworICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDE0cHg7CisgICAgICAgICAgICBt
YXJnaW46IDVweCAxMHB4OworICAgICAgICAgICAgd2lkdGg6IDgwcHg7CisgICAgICAgIH0KKyAg
ICA8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8aW5wdXQgdHlwZT0iYnV0dG9uIiBpZD0iYnV0
dG9uLTEiIHZhbHVlPSJCdXR0b24gMSI+Cis8aW5wdXQgdHlwZT0iYnV0dG9uIiBpZD0iYnV0dG9u
LTIiIHZhbHVlPSJCdXR0b24gMiI+Cis8aW5wdXQgdHlwZT0iYnV0dG9uIiBpZD0iYnV0dG9uLTMi
IHZhbHVlPSJCdXR0b24gMyI+Cis8aW5wdXQgdHlwZT0iYnV0dG9uIiBpZD0iYnV0dG9uLTQiIHZh
bHVlPSJCdXR0b24gNCI+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161048</attachid>
            <date>2012-08-28 13:35:22 -0700</date>
            <delta_ts>2012-08-29 07:05:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94936-20120828163513.patch</filename>
            <type>text/plain</type>
            <size>7766</size>
            <attacher name="Kevin Ellis">kevers</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2ODkwCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYjI5MWExNzgzYjYwNTkxZDEzYzUy
ZjQwZDY1OTM2NTk3MzEzNWQ4MS4uMTlkZmI5MmM5Mzg4YjFhNTk4Mzc1MDRjNWJkMWIxNjEyZjZk
YzI3NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTA4LTI4ICBLZXZpbiBFbGxpcyAgPGtl
dmVyc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW1wcm92ZSB0b3VjaC1hZGp1c3RtZW50IGF0
IGFuIGlmcmFtZSBib3VuZGFyeS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTk0OTM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGVzdCB0b3VjaCBhZGp1c3RtZW50cyB0aGF0IHNwYW4gdGhlIGJvdW5kYXJ5
IGJldHdlZW4gdHdvIGlmcmFtZXMuCisKKyAgICAgICAgKiB0b3VjaGFkanVzdG1lbnQvaWZyYW1l
LWJvdW5kYXJ5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdG91Y2hhZGp1c3RtZW50
L2lmcmFtZS1ib3VuZGFyeS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0b3VjaGFkanVzdG1lbnQv
cmVzb3VyY2VzL2lubmVyLWNvbnRlbnQtcGFnZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0b3Vj
aGFkanVzdG1lbnQvcmVzb3VyY2VzL2lubmVyLW5hdmlnYXRpb24tZnJhbWUuaHRtbDogQWRkZWQu
CisKIDIwMTItMDgtMjggIFphbiBEb2JlcnNlayAgPHphbmRvYmVyc2VrQGdtYWlsLmNvbT4KIAog
ICAgICAgICBVbnJldmlld2VkIEdUSyBnYXJkZW5pbmcuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy90b3VjaGFkanVzdG1lbnQvaWZyYW1lLWJvdW5kYXJ5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL3RvdWNoYWRqdXN0bWVudC9pZnJhbWUtYm91bmRhcnktZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjU4ZWZhMTRkMGY1NDE3NTRiZDFkYmI2YmMwYTQ5NTBmYWNkZjc0MzYKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvaWZyYW1lLWJvdW5kYXJ5LWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDI2IEBACisgCitUZXN0IHRvdWNoLWFkanVzdG1lbnQgYXQgdGhl
IGJvdW5kYXJ5IG9mIGFuIAorCisKK1Rlc3QgZGlyZWN0IHRvdWNoZXMuCitQQVNTIGFkanVzdGVk
Tm9kZS5pZCBpcyAiY2hlY2tib3gtMSIKK0ZBSUwgYWRqdXN0ZWROb2RlLmlkIHNob3VsZCBiZSBi
dXR0b24tMS4gV2FzIG5hdi1mcmFtZS4KK1BBU1MgYWRqdXN0ZWROb2RlLmlkIGlzICJjaGVja2Jv
eC0yIgorRkFJTCBhZGp1c3RlZE5vZGUuaWQgc2hvdWxkIGJlIGJ1dHRvbi0yLiBXYXMgbmF2LWZy
YW1lLgorUEFTUyBhZGp1c3RlZE5vZGUuaWQgaXMgImNoZWNrYm94LTMiCitGQUlMIGFkanVzdGVk
Tm9kZS5pZCBzaG91bGQgYmUgYnV0dG9uLTMuIFdhcyBuYXYtZnJhbWUuCitQQVNTIGFkanVzdGVk
Tm9kZS5pZCBpcyAiY2hlY2tib3gtNCIKK0ZBSUwgYWRqdXN0ZWROb2RlLmlkIHNob3VsZCBiZSBi
dXR0b24tNC4gV2FzIC4KK1Rlc3QgaW5kaXJlY3QgdG91Y2hlcy4KK1BBU1MgYWRqdXN0ZWROb2Rl
LmlkIGlzICJjaGVja2JveC0xIgorRkFJTCBhZGp1c3RlZE5vZGUuaWQgc2hvdWxkIGJlIGJ1dHRv
bi0xLiBXYXMgbmF2LWZyYW1lLgorUEFTUyBhZGp1c3RlZE5vZGUuaWQgaXMgImNoZWNrYm94LTIi
CitGQUlMIGFkanVzdGVkTm9kZS5pZCBzaG91bGQgYmUgYnV0dG9uLTIuIFdhcyBuYXYtZnJhbWUu
CitQQVNTIGFkanVzdGVkTm9kZS5pZCBpcyAiY2hlY2tib3gtMyIKK0ZBSUwgYWRqdXN0ZWROb2Rl
LmlkIHNob3VsZCBiZSBidXR0b24tMy4gV2FzIC4KK1BBU1MgYWRqdXN0ZWROb2RlLmlkIGlzICJj
aGVja2JveC00IgorRkFJTCBhZGp1c3RlZE5vZGUuaWQgc2hvdWxkIGJlIGJ1dHRvbi00LiBXYXMg
LgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC9pZnJhbWUtYm91bmRhcnkuaHRt
bCBiL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC9pZnJhbWUtYm91bmRhcnkuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5kZjQ2YTViMjBiOTE4OWM0MmY1MWMzOTIxYWFhZGI4OTVjM2E2NzUyCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L2lmcmFtZS1ib3VuZGFyeS5o
dG1sCkBAIC0wLDAgKzEsMTAwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cisg
ICAgPHRpdGxlPlRlc3QgdG91Y2ggYWRqdXN0bWVudCBhdCBhbiBpZnJhbWUgYm91bmRhcnkuPC90
aXRsZT4KKyAgICA8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdG91Y2hhZGp1c3RtZW50
LmpzIj48L3NjcmlwdD4KKyAgICA8c3R5bGU+CisgICAgICAgICNuYXZiYXIgeworICAgICAgICAg
ICAgYmFja2dyb3VuZDogI2VlZTsKKyAgICAgICAgICAgIGhlaWdodDogMTAwJTsKKyAgICAgICAg
ICAgIGxlZnQ6IDA7CisgICAgICAgICAgICBwYWRkaW5nOiAwOworICAgICAgICAgICAgcG9zaXRp
b246IGFic29sdXRlOworICAgICAgICAgICAgbWFyZ2luOiAwOworICAgICAgICAgICAgdG9wOiAw
OworICAgICAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICB9CisKKyAgICAgICAgI2NvbnRl
bnQtcGFnZSB7CisgICAgICAgICAgICBoZWlnaHQ6IDEwMCU7CisgICAgICAgICAgICBsZWZ0OiAx
MDBweDsKKyAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAgICAgIHJpZ2h0
OiAwOworICAgICAgICAgICAgdG9wOiAwOworICAgICAgICB9CisKKyAgICAgICAgaWZyYW1lIHsK
KyAgICAgICAgICAgIGJvcmRlcjogbm9uZTsKKyAgICAgICAgICAgIHdpZHRoOiAxMDAlOworICAg
ICAgICAgICAgaGVpZ2h0OiAxMDAlOworICAgICAgICAgICAgbWFyZ2luOiAwOworICAgICAgICAg
ICAgcGFkZGluZzogMDsKKyAgICAgICAgfQorICAgIDwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keSBp
ZD0ibWFpbiIgb25sb2FkPSJydW5UZXN0cygpIj4KKzxkaXYgaWQ9Im5hdmJhciIgIHN0eWxlPSIt
d2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwcHgpOyI+CisgICAgPGlmcmFtZSBpZD0ibmF2
LWZyYW1lIiBzcmM9InJlc291cmNlcy9pbm5lci1uYXZpZ2F0aW9uLWZyYW1lLmh0bWwiPjwvaWZy
YW1lPgorPC9kaXY+Cis8ZGl2IGlkPSJjb250ZW50LXBhZ2UiPgorICAgIDxpZnJhbWUgaWQ9ImNv
bnRlbnQtZnJhbWUiIHNyYz0icmVzb3VyY2VzL2lubmVyLWNvbnRlbnQtcGFnZS5odG1sIj48L2lm
cmFtZT4KKzwvZGl2PgorCis8cCBpZD0nZGVzY3JpcHRpb24nPjwvcD4KKzxkaXYgaWQ9J2NvbnNv
bGUnPjwvZGl2PgorCis8c2NyaXB0PiAKKyAgICB2YXIgaXRlbUhlaWdodCA9IDI4OworICAgIHZh
ciBib3JkZXJPZmZzZXQgPSAxMDA7CisgICAgdmFyIGNoZWNrYm94T2Zmc2V0ID0gMTg7CisgICAg
dmFyIGxpbmtPZmZzZXQgPSAtMTU7CisgICAgdmFyIGNoZWNrYm94T2Zmc2V0SW5kaXJlY3QgPSA1
OworICAgIHZhciBsaW5rT2Zmc2V0SW5kaXJlY3QgPSAtNTsKKyAgICB2YXIgdG91Y2hSYWRpdXMg
PSAzMDsKKworICAgIGZ1bmN0aW9uIHRlc3RSb3VuZFRvdWNoKHgsIHksIHJhZGl1cykKKyAgICB7
CisgICAgICAgIHZhciB4ID0geCAtIHJhZGl1czsKKyAgICAgICAgdmFyIHkgPSB5IC0gcmFkaXVz
OworICAgICAgICB2YXIgd2lkdGggPSByYWRpdXMgKiAyOworICAgICAgICB2YXIgaGVpZ2h0ID0g
cmFkaXVzICogMjsKKyAgICAgICAgdmFyIGFkanVzdGVkTm9kZSA9IGludGVybmFscy50b3VjaE5v
ZGVBZGp1c3RlZFRvQmVzdENsaWNrYWJsZU5vZGUoeCwgeSwgd2lkdGgsIGhlaWdodCwgZG9jdW1l
bnQpOworICAgICAgICBpZiAoYWRqdXN0ZWROb2RlLm5vZGVUeXBlID09IDMpIC8vIFRFWFQgbm9k
ZQorICAgICAgICAgICAgYWRqdXN0ZWROb2RlID0gYWRqdXN0ZWROb2RlLnBhcmVudE5vZGU7Cisg
ICAgICAgIHJldHVybiBhZGp1c3RlZE5vZGU7CisgICAgfQorICAgIGZ1bmN0aW9uIHRlc3REaXJl
Y3RUb3VjaGVzKCkKKyAgICB7CisgICAgICAgIGRlYnVnKCdUZXN0IGRpcmVjdCB0b3VjaGVzLicp
OworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDQ7IGkrKykgeworICAgICAgICAgICAgYWRq
dXN0ZWROb2RlID0gdGVzdFJvdW5kVG91Y2goYm9yZGVyT2Zmc2V0ICsgY2hlY2tib3hPZmZzZXQs
IChpICsgMC41KSAqIGl0ZW1IZWlnaHQsIHRvdWNoUmFkaXVzKTsKKyAgICAgICAgICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygnYWRqdXN0ZWROb2RlLmlkJywgJ2NoZWNrYm94LScgKyAoaSArIDEp
KTsKKyAgICAgICAgICAgIGFkanVzdGVkTm9kZSA9IHRlc3RSb3VuZFRvdWNoKGJvcmRlck9mZnNl
dCArIGxpbmtPZmZzZXQsIChpICsgMC41KSAqIGl0ZW1IZWlnaHQsIHRvdWNoUmFkaXVzKTsKKyAg
ICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnYWRqdXN0ZWROb2RlLmlkJywgJ2J1dHRv
bi0nICsgKGkgKyAxKSk7CisgICAgICAgIH0KKyAgICB9CisgICAgZnVuY3Rpb24gdGVzdEluZGly
ZWN0VG91Y2hlcygpIHsKKyAgICAgICAgIGRlYnVnKCdUZXN0IGluZGlyZWN0IHRvdWNoZXMuJyk7
CisgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDQ7IGkrKykgeworICAgICAgICAgICAgYWRq
dXN0ZWROb2RlID0gdGVzdFJvdW5kVG91Y2goYm9yZGVyT2Zmc2V0ICsgY2hlY2tib3hPZmZzZXRJ
bmRpcmVjdCwgKGkgKyAwLjUpICogaXRlbUhlaWdodCwgdG91Y2hSYWRpdXMpOworICAgICAgICAg
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdhZGp1c3RlZE5vZGUuaWQnLCAnY2hlY2tib3gtJyAr
IChpICsgMSkpOworICAgICAgICAgICAgYWRqdXN0ZWROb2RlID0gdGVzdFJvdW5kVG91Y2goYm9y
ZGVyT2Zmc2V0ICsgbGlua09mZnNldEluZGlyZWN0LCAoaSArIDAuNSkgKiBpdGVtSGVpZ2h0LCB0
b3VjaFJhZGl1cyk7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2FkanVzdGVk
Tm9kZS5pZCcsICdidXR0b24tJyArIChpICsgMSkpOworICAgICAgICB9CisgICAgfQorCisgICAg
ZnVuY3Rpb24gcnVuVGVzdHMoKQorICAgIHsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
ICYmIHdpbmRvdy5pbnRlcm5hbHMgJiYgaW50ZXJuYWxzLnRvdWNoTm9kZUFkanVzdGVkVG9CZXN0
Q2xpY2thYmxlTm9kZSkgeworICAgICAgICAgICAgZGVzY3JpcHRpb24oJ1Rlc3QgdG91Y2gtYWRq
dXN0bWVudCBhdCB0aGUgYm91bmRhcnkgb2YgYW4gPGlmcmFtZT4uICBFbnN1cmUgdGhhdCB0b3Vj
aCBhZGp1c3RtZW50IHByb3BhZ2F0ZXMgaW50byBjaGlsZHJlbiBvZiBhbiA8aWZyYW1lPi4gIFRl
c3QgZXhwZWN0ZWQgdG8gY29udGFpbiBmYWlsdXJlcyB1bnRpbCBidWcgOTUyMDQgaXMgZml4ZWQu
Jyk7CisgICAgICAgICAgICB0ZXN0RGlyZWN0VG91Y2hlcygpOworICAgICAgICAgICAgdGVzdElu
ZGlyZWN0VG91Y2hlcygpOworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0K
KyAgICB9CisgICAganNUZXN0SXNBc3luYyA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L3Jlc291
cmNlcy9pbm5lci1jb250ZW50LXBhZ2UuaHRtbCBiL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVu
dC9yZXNvdXJjZXMvaW5uZXItY29udGVudC1wYWdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzM3YjIxODg2
NDNjMjhmZWZkMjlkN2VjODUwNWJmMThkMDhhN2VhMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3RvdWNoYWRqdXN0bWVudC9yZXNvdXJjZXMvaW5uZXItY29udGVudC1wYWdlLmh0bWwK
QEAgLTAsMCArMSwyNCBAQAorPCFET0NUWVBFPSJodG1sIj4KKzxodG1sPgorPGhlYWQ+CisgICAg
PHN0eWxlPgorICAgICAgICBib2R5IHsKKyAgICAgICAgICAgIGJhY2tncm91bmQ6IHdoaXRlOwor
ICAgICAgICAgICAgcGFkZGluZzogMDsKKyAgICAgICAgICAgIG1hcmdpbjogMDsKKyAgICAgICAg
fQorCisgICAgICAgIGxhYmVsIHsKKyAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOworICAgICAg
ICAgICAgbGluZS1oZWlnaHQ6IDIycHg7CisgICAgICAgICAgICBtYXJnaW46IDVweCAxMHB4Owor
ICAgICAgICB9CisgICAgPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPGxhYmVsPjxpbnB1dCBp
ZD0iY2hlY2tib3gtMSIgdHlwZT0iY2hlY2tib3giPkNoZWNrYm94IDE8L2xhYmVsPgorPGxhYmVs
PjxpbnB1dCBpZD0iY2hlY2tib3gtMiIgdHlwZT0iY2hlY2tib3giPkNoZWNrYm94IDI8L2xhYmVs
PgorPGxhYmVsPjxpbnB1dCBpZD0iY2hlY2tib3gtMyIgdHlwZT0iY2hlY2tib3giPkNoZWNrYm94
IDM8L2xhYmVsPgorPGxhYmVsPjxpbnB1dCBpZD0iY2hlY2tib3gtNCIgdHlwZT0iY2hlY2tib3gi
PkNoZWNrYm94IDQ8L2xhYmVsPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvdG91Y2hhZGp1c3RtZW50L3Jlc291cmNlcy9pbm5lci1uYXZpZ2F0aW9uLWZyYW1lLmh0
bWwgYi9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvcmVzb3VyY2VzL2lubmVyLW5hdmlnYXRp
b24tZnJhbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYTJjNzUzOTY2YmViOTVmZmUzMjhjZjc4NTUyZDFj
NjI3N2RhZjIwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50
L3Jlc291cmNlcy9pbm5lci1uYXZpZ2F0aW9uLWZyYW1lLmh0bWwKQEAgLTAsMCArMSwyNSBAQAor
PCFET0NUWVBFPSJodG1sIj4KKzxodG1sPgorPGhlYWQ+CisgICAgPHN0eWxlPgorICAgICAgICBi
b2R5IHsKKyAgICAgICAgICAgIHBhZGRpbmc6IDA7CisgICAgICAgICAgICBtYXJnaW46IDA7Cisg
ICAgICAgIH0KKworICAgICAgICBpbnB1dFt0eXBlPSJidXR0b24iXSB7CisgICAgICAgICAgICBk
aXNwbGF5OiBibG9jazsKKyAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKKyAgICAgICAg
ICAgIGxpbmUtaGVpZ2h0OiAxNHB4OworICAgICAgICAgICAgbWFyZ2luOiA1cHggMTBweDsKKyAg
ICAgICAgICAgIHdpZHRoOiA4MHB4OworICAgICAgICB9CisgICAgPC9zdHlsZT4KKzwvaGVhZD4K
Kzxib2R5PgorPGlucHV0IHR5cGU9ImJ1dHRvbiIgaWQ9ImJ1dHRvbi0xIiB2YWx1ZT0iQnV0dG9u
IDEiPgorPGlucHV0IHR5cGU9ImJ1dHRvbiIgaWQ9ImJ1dHRvbi0yIiB2YWx1ZT0iQnV0dG9uIDIi
PgorPGlucHV0IHR5cGU9ImJ1dHRvbiIgaWQ9ImJ1dHRvbi0zIiB2YWx1ZT0iQnV0dG9uIDMiPgor
PGlucHV0IHR5cGU9ImJ1dHRvbiIgaWQ9ImJ1dHRvbi00IiB2YWx1ZT0iQnV0dG9uIDQiPgorPC9i
b2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>