<?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>48812</bug_id>
          
          <creation_ts>2010-11-01 17:56:27 -0700</creation_ts>
          <short_desc>FrameLoader::checkLoadCompleteForThisFrame uses wrong history item</short_desc>
          <delta_ts>2011-01-21 10:58:28 -0800</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>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>N/A</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="Charles Reis">creis</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>beidson</cc>
    
    <cc>brettw</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>fishd</cc>
    
    <cc>mihaip</cc>
    
    <cc>thakis</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>303119</commentid>
    <comment_count>0</comment_count>
    <who name="Charles Reis">creis</who>
    <bug_when>2010-11-01 17:56:27 -0700</bug_when>
    <thetext>FrameLoader::checkLoadCompleteForThisFrame is called when a navigation is canceled, and it instructs the back/forward history to go to the current item from the history, rather than staying at the canceled navigation&apos;s history item.  The method is getting the current item using history()-&gt;currentItem(), and then assigning it using page-&gt;backForward()-&gt;setCurrentItem(item.get()).

However, there are cases when history()&apos;s current item and backForward()&apos;s current item are different.  For example, holding down the &quot;back&quot; keyboard shortcut in Chromium will start several navigations, some of which get canceled before committing.  (See http://code.google.com/p/chromium/issues/detail?id=58082 for details.)  In this case, backForward()-&gt;currentHistoryItem() is updated for every attempted navigation, but history()-&gt;currentItem() is not.  By trying to set the current item to history()-&gt;currentItem(), FrameLoader::checkLoadCompleteForThisFrame is causing us to jump to an outdated entry, rather than the one that&apos;s in progress.  This is leading to corruption of the back/forward history in Chromium.

Since the method is trying to update the back/forward history, it should be getting the current history item from there to make sure it matches the current state.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303124</commentid>
    <comment_count>1</comment_count>
      <attachid>72611</attachid>
    <who name="Charles Reis">creis</who>
    <bug_when>2010-11-01 17:59:10 -0700</bug_when>
    <thetext>Created attachment 72611
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303135</commentid>
    <comment_count>2</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-11-01 18:13:25 -0700</bug_when>
    <thetext>Attachment 72611 did not build on qt:
Build output: http://queues.webkit.org/results/4931005</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303153</commentid>
    <comment_count>3</comment_count>
      <attachid>72616</attachid>
    <who name="Charles Reis">creis</who>
    <bug_when>2010-11-01 18:48:55 -0700</bug_when>
    <thetext>Created attachment 72616
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303232</commentid>
    <comment_count>4</comment_count>
      <attachid>72616</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-11-01 23:13:32 -0700</bug_when>
    <thetext>Comment on attachment 72616
Patch

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

r- for lack of a regression test.

&gt; ChangeLog:8
&gt; +        * ../../WebCore/loader/FrameLoader.cpp:

&quot;../../&quot; is wrong. Please add an explanation of the fix to ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303389</commentid>
    <comment_count>5</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-11-02 08:54:11 -0700</bug_when>
    <thetext>This also seems a little weird as navigation in a subframe will be checking against the top-level back/forward item for the whole page...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303390</commentid>
    <comment_count>6</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-11-02 08:54:25 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; This also seems a little weird as navigation in a subframe will be checking against the top-level back/forward item for the whole page...

(I meant with regards to the patch)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303564</commentid>
    <comment_count>7</comment_count>
    <who name="Charles Reis">creis</who>
    <bug_when>2010-11-02 12:41:25 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; This also seems a little weird as navigation in a subframe will be checking against the top-level back/forward item for the whole page...
&gt; 
&gt; (I meant with regards to the patch)

Subframe navigations won&apos;t hit this code, will they?  &quot;item&quot; only gets assigned if the load is a back/forward and the frame is the mainFrame, based on the check on line 2352.

Also, &quot;item&quot; is used to update the back/forward list on line 2383. It seems more likely to hit confusion about subframe vs mainframe if we assign something from history() to backForward() rather than from backForward() to backForward().

Although, looking again at line 2383, it looks like it has changed recently from goToItem to setCurrentItem, so it might be redundant to call setCurrentItem(currentItem()).  I&apos;ll take another look at the buggy behavior to try to understand what should be happening.


(In reply to comment #4)
&gt; (From update of attachment 72616 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=72616&amp;action=review
&gt; 
&gt; r- for lack of a regression test.

I&apos;m in the process of writing a layout test, using layoutTestController.dumpBackForwardList() to check for the right state at the end.  I haven&apos;t figured out how to get a layout test to hit this branch of FrameLoader, though.  Is there a way to tell the browser to go back twice quickly without waiting for the first navigation to commit?  Or to force the first back navigation to cancel?  I&apos;ll keep looking, but any tips would be appreciated.

Thanks,
Charlie


&gt; 
&gt; &gt; ChangeLog:8
&gt; &gt; +        * ../../WebCore/loader/FrameLoader.cpp:
&gt; 
&gt; &quot;../../&quot; is wrong. Please add an explanation of the fix to ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303596</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-11-02 13:08:00 -0700</bug_when>
    <thetext>&gt; Is there a way to tell the browser to go back twice quickly without waiting for the first navigation to 
&gt; commit?  Or to force the first back navigation to cancel?

You may be able to do that in a separate window. LayoutTestController.setCanOpenWindows() enables window.open() in DumpRenderTree.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304205</commentid>
    <comment_count>9</comment_count>
    <who name="Charles Reis">creis</who>
    <bug_when>2010-11-03 12:41:13 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; &gt; Is there a way to tell the browser to go back twice quickly without waiting for the first navigation to 
&gt; &gt; commit?  Or to force the first back navigation to cancel?
&gt; 
&gt; You may be able to do that in a separate window. LayoutTestController.setCanOpenWindows() enables window.open() in DumpRenderTree.

Thanks.  That&apos;s a good idea, but I can&apos;t seem to get it to cancel the first back navigation with the second one-- it always finishes the first navigation before attempting the second, even if there&apos;s a slow response from the server.  For reference, I&apos;m using the new window to tell the first window to go back twice, using some tricks with history.goBack() and setTimeout.

In fact, I&apos;m not even able to manually repro the bug in Chromium&apos;s test_shell (since it&apos;s not possible to hold down a &quot;back&quot; keyboard shortcut and clicking back repeatedly doesn&apos;t trigger it).  It&apos;s definitely present in Chromium, though, since the navigation messages come in asynchronously from another process.

As for the fix, it looks like we need to distinguish between two cases: If the navigation is just canceled using Stop or an equivalent, we&apos;re currently doing the right thing by going back to the last committed item.  If the navigation is canceled because a new one is in progress, then we should not be going back to the last committed item.  Ideally, we&apos;d just leave the backForward() alone.  (If that new navigation cancels, the other logic will kick in and send us back to the last committed item.)

Perhaps a better fix would involve setting shouldReset to false if the backForward() current item is different than the URL being canceled (i.e., pdl-&gt;requestURL())?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304366</commentid>
    <comment_count>10</comment_count>
      <attachid>72886</attachid>
    <who name="Charles Reis">creis</who>
    <bug_when>2010-11-03 16:59:27 -0700</bug_when>
    <thetext>Created attachment 72886
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304368</commentid>
    <comment_count>11</comment_count>
    <who name="Charles Reis">creis</who>
    <bug_when>2010-11-03 17:00:32 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Created an attachment (id=72886) [details]
&gt; Patch

I know this still needs a regression test, and I&apos;m trying to get one working.  I just wanted to get the updated patch up for feedback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304390</commentid>
    <comment_count>12</comment_count>
      <attachid>72886</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-11-03 18:09:20 -0700</bug_when>
    <thetext>Comment on attachment 72886
Patch

Patch looks OK; comparing URLs is not so great, and perhaps there is a better way to detect this case, but if not we can definitely live with this. Test is probably more important than the fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304908</commentid>
    <comment_count>13</comment_count>
      <attachid>72886</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-11-04 15:12:38 -0700</bug_when>
    <thetext>Comment on attachment 72886
Patch

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

&gt; WebCore/loader/FrameLoader.cpp:2385
&gt; +                    // Do not change the history if the backForward controller
&gt; +                    // is aleady loading a new URL.
&gt; +                    if (pdl-&gt;request().url() == page-&gt;backForward()-&gt;currentItem()-&gt;url()) {

URL can&apos;t be the right thing to use here.  What if all the pages in the back-forward list have the same URL?  Wouldn&apos;t that case still have the corruption?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305583</commentid>
    <comment_count>14</comment_count>
      <attachid>73130</attachid>
    <who name="Charles Reis">creis</who>
    <bug_when>2010-11-05 15:32:46 -0700</bug_when>
    <thetext>Created attachment 73130
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305587</commentid>
    <comment_count>15</comment_count>
      <attachid>73130</attachid>
    <who name="Charles Reis">creis</who>
    <bug_when>2010-11-05 15:34:15 -0700</bug_when>
    <thetext>Comment on attachment 73130
Patch

(In reply to comment #13)
&gt; (From update of attachment 72886 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=72886&amp;action=review
&gt; 
&gt; &gt; WebCore/loader/FrameLoader.cpp:2385
&gt; &gt; +                    // Do not change the history if the backForward controller
&gt; &gt; +                    // is aleady loading a new URL.
&gt; &gt; +                    if (pdl-&gt;request().url() == page-&gt;backForward()-&gt;currentItem()-&gt;url()) {
&gt; 
&gt; URL can&apos;t be the right thing to use here.  What if all the pages in the back-forward list have the same URL?  Wouldn&apos;t that case still have the corruption?

Yeah, I&apos;m still trying to figure this one out.  Darin, do you have any ideas how to tell whether the DocumentLoader is loading a request that matches the backForward()&apos;s HistoryItem or not?  I&apos;m having trouble finding another way to tell if we&apos;ve gone on to a new back navigation, since the FrameLoader doesn&apos;t seem to have any other knowledge of it.

Anyway, I&apos;ve uploaded a patch with a layout test draft.  It&apos;s not finished yet-- I still need to implement queueBackTwiceNavigation() in the various LayoutTestControllers, but it does let me successfully test for the bug.  (It tells the browser to go back and then back again before the first one commits.  JavaScript code doesn&apos;t seem able to do this.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305702</commentid>
    <comment_count>16</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-11-05 19:13:47 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; Anyway, I&apos;ve uploaded a patch with a layout test draft.  It&apos;s not finished yet-- I still need to implement queueBackTwiceNavigation() in the various LayoutTestControllers, but it does let me successfully test for the bug.  (It tells the browser to go back and then back again before the first one commits.  JavaScript code doesn&apos;t seem able to do this.)

You should be able to do with without any LayoutTestController changes if you have a frame that uses a PHP script with a sleep() statement before any bytes are returned (I needed something like that for http://trac.webkit.org/changeset/71368, the inner-most frame is not supposed to go into the committed state before being navigated away from).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305705</commentid>
    <comment_count>17</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-11-05 19:16:10 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; Yeah, I&apos;m still trying to figure this one out.  Darin, do you have any ideas how to tell whether the DocumentLoader is loading a request that matches the backForward()&apos;s HistoryItem or not?

Can you use item sequence numbers for this? See http://www.google.com/codesearch/p?hl=en#OAMlx_jo-ck/src/third_party/WebKit/WebCore/loader/HistoryController.cpp&amp;q=itemsequencenumber&amp;exact_package=chromium&amp;l=560.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>307106</commentid>
    <comment_count>18</comment_count>
    <who name="Charles Reis">creis</who>
    <bug_when>2010-11-09 18:22:39 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; You should be able to do with without any LayoutTestController changes if you have a frame that uses a PHP script with a sleep() statement before any bytes are returned (I needed something like that for http://trac.webkit.org/changeset/71368, the inner-most frame is not supposed to go into the committed state before being navigated away from).

Thanks for pointing this out, Mihai!  I was able to get a test working without any new APIs using this technique.

It&apos;s worth noting that it also helped me uncover another case (going back twice to the same history item, rather than to different history items), which affects what we need to do to fix it.

(In reply to comment #17)
&gt; Can you use item sequence numbers for this? See http://www.google.com/codesearch/p?hl=en#OAMlx_jo-ck/src/third_party/WebKit/WebCore/loader/HistoryController.cpp&amp;q=itemsequencenumber&amp;exact_package=chromium&amp;l=560.

Yeah, I thought this was the right approach, although there&apos;s no way to get the itemSequenceNumber from the DocumentLoader or its ResourceRequest.  As the second part of the test showed, though, going back twice to the same history item will result in the same itemSequenceNumber.  That will make FrameLoader think we&apos;ve hit Stop instead of Back, so it will still corrupt the backForward history.

A better fix will let us uniquely match the ResourceRequest to the HistoryItem.  I&apos;m uploading a draft of one way to do that, adding a unique ID to ResourceRequest and assigning it to the HistoryItem while the request is in progress.  I&apos;m open to suggestions on how to improve it, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>307107</commentid>
    <comment_count>19</comment_count>
      <attachid>73449</attachid>
    <who name="Charles Reis">creis</who>
    <bug_when>2010-11-09 18:23:08 -0800</bug_when>
    <thetext>Created attachment 73449
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>307116</commentid>
    <comment_count>20</comment_count>
      <attachid>73449</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-11-09 19:17:01 -0800</bug_when>
    <thetext>Comment on attachment 73449
Patch

A general note: any design that involves both HistoryItem and ResourceRequest seems suspicious. These are pretty distant layers to talk to each other.

Requests already have identifiers, see e.g. FrameLoaderClient::assignIdentifierToInitialRequest(). Adding another &quot;ID&quot; would be terribly confusing.

And of course m_id won&apos;t persist a Mac Objective-C API delegate call. See &lt;http://trac.webkit.org/browser/trunk/WebKit/mac/WebCoreSupport/WebFrameLoaderClient.mm#L387&gt; - the request is re-created from scratch after a client has a chance to modify it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>307544</commentid>
    <comment_count>21</comment_count>
    <who name="Charles Reis">creis</who>
    <bug_when>2010-11-10 14:14:26 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; (From update of attachment 73449 [details])
&gt; A general note: any design that involves both HistoryItem and ResourceRequest seems suspicious. These are pretty distant layers to talk to each other.

That&apos;s fair.  Do you have a suggestion for how to tell whether the canceled request in pdl (which is a DocumentLoader) corresponds to page-&gt;backForward()-&gt;currentItem() (which is a HistoryItem)?  Without that, we&apos;ll continue to corrupt HistoryItems if a new navigation has already begun.  Or conversely, how to distinguish if the request was canceled due to a new navigation or not?

Other options that I see: we could associate either the DocumentLoader or its NavigationAction with the HistoryItem.  It might reasonable to add a HistoryItem field to NavigationAction, so that we can tell which HistoryItem triggered it.  That&apos;d fix this bug without touching ResourceRequest.

&gt; 
&gt; Requests already have identifiers, see e.g. FrameLoaderClient::assignIdentifierToInitialRequest(). Adding another &quot;ID&quot; would be terribly confusing.

Unfortunately, that identifier doesn&apos;t help-- there&apos;s no way to query which identifier is assigned to a given request, so we can&apos;t use it to compare requests.  Additionally, the assignIdentifierToInitialRequest call currently does nothing in either Chrome (RenderView) or test_shell (WebViewDelegate).


&gt; 
&gt; And of course m_id won&apos;t persist a Mac Objective-C API delegate call. See &lt;http://trac.webkit.org/browser/trunk/WebKit/mac/WebCoreSupport/WebFrameLoaderClient.mm#L387&gt; - the request is re-created from scratch after a client has a chance to modify it.

Glad you pointed that out.  The NavigationAction approach should avoid that, by not depending on the ResourceRequest at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>307603</commentid>
    <comment_count>22</comment_count>
      <attachid>73550</attachid>
    <who name="Charles Reis">creis</who>
    <bug_when>2010-11-10 15:35:11 -0800</bug_when>
    <thetext>Created attachment 73550
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>308639</commentid>
    <comment_count>23</comment_count>
    <who name="Charles Reis">creis</who>
    <bug_when>2010-11-12 10:38:43 -0800</bug_when>
    <thetext>Any thoughts on the latest patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310361</commentid>
    <comment_count>24</comment_count>
      <attachid>73550</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-11-17 10:11:26 -0800</bug_when>
    <thetext>Comment on attachment 73550
Patch

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

This change looks OK. I think we might want to refine the coding of it a bit.

&gt; WebCore/loader/FrameLoader.cpp:2385
&gt; +                    if (!pdl-&gt;triggeringAction().isEmpty()
&gt; +                        &amp;&amp; pdl-&gt;triggeringAction().historyItem() == page-&gt;backForward()-&gt;currentItem()) {

Why do we need the isEmpty check? Presumably if the action is empty then the history item will be 0. Can currentItem be 0?

I’d prefer to not have the isEmpty function.

&gt; WebCore/loader/FrameLoader.cpp:3207
&gt; +            action = NavigationAction(itemURL, loadType, false, 0, item);

With all the overloads for creating a NavigationAction, for some reason we have to specify both false and 0 here. Maybe we should do different overloads instead?

&gt; WebCore/loader/FrameLoader.cpp:3235
&gt; +        action = NavigationAction(itemOriginalURL, loadType, false, 0, item);

Same thing happens again here. I think we should consider whether we can do a different overload.

&gt; WebCore/loader/NavigationAction.h:48
&gt;          NavigationAction();
&gt;          NavigationAction(const KURL&amp;, NavigationType);
&gt; +        NavigationAction(const KURL&amp;, NavigationType, PassRefPtr&lt;HistoryItem&gt;);
&gt;          NavigationAction(const KURL&amp;, FrameLoadType, bool isFormSubmission);
&gt;          NavigationAction(const KURL&amp;, NavigationType, PassRefPtr&lt;Event&gt;);
&gt;          NavigationAction(const KURL&amp;, FrameLoadType, bool isFormSubmission, PassRefPtr&lt;Event&gt;);
&gt; +        NavigationAction(const KURL&amp;, FrameLoadType, bool isFormSubmission, PassRefPtr&lt;Event&gt;, PassRefPtr&lt;HistoryItem&gt;);

These are sorted in a strange order that makes it hard to read them. Also, I think we can use default argument values to cut down a bit on the overloading. Both PassRefPtr&lt;Event&gt; and PassRefPtr&lt;HistoryItem&gt; can have a default value of 0.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310401</commentid>
    <comment_count>25</comment_count>
      <attachid>73550</attachid>
    <who name="Charles Reis">creis</who>
    <bug_when>2010-11-17 11:23:35 -0800</bug_when>
    <thetext>Comment on attachment 73550
Patch

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

&gt;&gt; WebCore/loader/FrameLoader.cpp:2385
&gt;&gt; +                        &amp;&amp; pdl-&gt;triggeringAction().historyItem() == page-&gt;backForward()-&gt;currentItem()) {
&gt; 
&gt; Why do we need the isEmpty check? Presumably if the action is empty then the history item will be 0. Can currentItem be 0?
&gt; 
&gt; I’d prefer to not have the isEmpty function.

Sure, done.

&gt;&gt; WebCore/loader/NavigationAction.h:48
&gt;&gt; +        NavigationAction(const KURL&amp;, FrameLoadType, bool isFormSubmission, PassRefPtr&lt;Event&gt;, PassRefPtr&lt;HistoryItem&gt;);
&gt; 
&gt; These are sorted in a strange order that makes it hard to read them. Also, I think we can use default argument values to cut down a bit on the overloading. Both PassRefPtr&lt;Event&gt; and PassRefPtr&lt;HistoryItem&gt; can have a default value of 0.

Good idea.  I&apos;ve simplified and reordered it a bit, avoiding the need to pass false or 0 at the call sites.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310402</commentid>
    <comment_count>26</comment_count>
      <attachid>74136</attachid>
    <who name="Charles Reis">creis</who>
    <bug_when>2010-11-17 11:23:55 -0800</bug_when>
    <thetext>Created attachment 74136
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310420</commentid>
    <comment_count>27</comment_count>
      <attachid>74136</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-11-17 11:53:15 -0800</bug_when>
    <thetext>Comment on attachment 74136
Patch

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

&gt; WebCore/loader/NavigationAction.h:45
&gt; +        NavigationAction(const KURL&amp;, FrameLoadType, PassRefPtr&lt;HistoryItem&gt;);

Could have an = 0 on this line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310429</commentid>
    <comment_count>28</comment_count>
      <attachid>74142</attachid>
    <who name="Charles Reis">creis</who>
    <bug_when>2010-11-17 12:05:20 -0800</bug_when>
    <thetext>Created attachment 74142
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310431</commentid>
    <comment_count>29</comment_count>
      <attachid>74136</attachid>
    <who name="Charles Reis">creis</who>
    <bug_when>2010-11-17 12:07:01 -0800</bug_when>
    <thetext>Comment on attachment 74136
Patch

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

&gt;&gt; WebCore/loader/NavigationAction.h:45
&gt;&gt; +        NavigationAction(const KURL&amp;, FrameLoadType, PassRefPtr&lt;HistoryItem&gt;);
&gt; 
&gt; Could have an = 0 on this line.

Fixed.

Thanks,
Charlie</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310471</commentid>
    <comment_count>30</comment_count>
      <attachid>74142</attachid>
    <who name="Charles Reis">creis</who>
    <bug_when>2010-11-17 13:03:11 -0800</bug_when>
    <thetext>Comment on attachment 74142
Patch

Putting this on hold for the moment-- I just noticed a layout test failing:
fast/dom/navigation-type-back-forward.html
I&apos;ll investigate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310557</commentid>
    <comment_count>31</comment_count>
      <attachid>74142</attachid>
    <who name="Charles Reis">creis</who>
    <bug_when>2010-11-17 15:16:05 -0800</bug_when>
    <thetext>Comment on attachment 74142
Patch

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

&gt; WebCore/loader/FrameLoader.cpp:3234
&gt; +        action = NavigationAction(itemOriginalURL, loadType, item);

This line caused the test failure.  Interestingly, the compiler was treating item as the boolean parameter to the NavigationAction(KURL, FrameLoadType, bool, PassRefPtr&lt;Event&gt;) constructor, rather than using NavigationAction(KURL, FrameLoadType, PassRefPtr&lt;HistoryItem&gt;).  Guess it thinks HistoryItem* is a closer match to bool than PassRefPtr&lt;HistoryItem&gt;.

If I&apos;m more explicit at the call site by passing in a RefPtr&lt;HistoryItem&gt;, the compiler complains that PassRefPtr&lt;HistoryItem&gt; and PassRefPtr&lt;Event&gt; are ambiguous (at least up on line 3209).  It works if we switch to using HistoryItem* in NavigationAction, but I&apos;m open to better suggestions.  For example, we could make the PassRefPtr&lt;Event&gt; argument non-optional and pass in 0 at all the call sites, to avoid having item treated as a boolean in this case.  Or we could reorder the arguments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310558</commentid>
    <comment_count>32</comment_count>
      <attachid>74161</attachid>
    <who name="Charles Reis">creis</who>
    <bug_when>2010-11-17 15:16:25 -0800</bug_when>
    <thetext>Created attachment 74161
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311061</commentid>
    <comment_count>33</comment_count>
      <attachid>74161</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-11-18 13:19:50 -0800</bug_when>
    <thetext>Comment on attachment 74161
Patch

Why is it safe to put a HistoryItem* in this object without using RefPtr? Can’t the history item be destroyed while the NavigationAction object is still around?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311093</commentid>
    <comment_count>34</comment_count>
    <who name="Charles Reis">creis</who>
    <bug_when>2010-11-18 14:11:03 -0800</bug_when>
    <thetext>(In reply to comment #33)
&gt; (From update of attachment 74161 [details])
&gt; Why is it safe to put a HistoryItem* in this object without using RefPtr? Can’t the history item be destroyed while the NavigationAction object is still around?

I don&apos;t think it&apos;ll get destroyed before we access it in checkLoadCompleteForThisFrame, but it&apos;s probably not good to keep it that way.

I&apos;ll upload a new patch reordering the arguments to eliminate the ambiguity.  The last constructor will now be:
NavigationAction(KURL, bool, FrameLoadType, PassRefPtr&lt;Event&gt; = 0)

I can switch it to a non-optional Event argument and passing 0 at the call sites if you&apos;d rather have that than reordered arguments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311130</commentid>
    <comment_count>35</comment_count>
      <attachid>74305</attachid>
    <who name="Charles Reis">creis</who>
    <bug_when>2010-11-18 15:31:47 -0800</bug_when>
    <thetext>Created attachment 74305
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>313435</commentid>
    <comment_count>36</comment_count>
      <attachid>74305</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-11-24 13:19:56 -0800</bug_when>
    <thetext>Comment on attachment 74305
Patch

I wanted to review this patch, but I didn&apos;t understand it in enough detail.  :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>313443</commentid>
    <comment_count>37</comment_count>
      <attachid>74305</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-11-24 13:38:17 -0800</bug_when>
    <thetext>Comment on attachment 74305
Patch

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

&gt; WebCore/loader/FrameLoader.cpp:2380
&gt; +                    if (pdl-&gt;triggeringAction().historyItem() == page-&gt;backForward()-&gt;currentItem()) {

Can we make use HistoryController::currentItem() or perhaps HistoryController::provisionalItem()?
It seems that in the back/forward navigation case, HistoryController::goToItem sets
HistoryController::m_provisionalItem, and then when we commit the load, that gets promoted to
HistoryController::m_currentItem.  If another load comes in after that, then the BackForwardList&apos;s
currentItem would change to correspond to the new provisional HistoryItem.

I&apos;m also a bit confused as to why this code only assigns |item| when the current frame is the
main frame.  This makes me wonder if calling BackForwardList::setCurrentItem here is really
the right thing to do.  If a navigation only occurs in a subframe, we&apos;d still want to
potentially update the BackForwardList.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>314496</commentid>
    <comment_count>38</comment_count>
      <attachid>74305</attachid>
    <who name="Charles Reis">creis</who>
    <bug_when>2010-11-29 10:27:53 -0800</bug_when>
    <thetext>Comment on attachment 74305
Patch

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

&gt;&gt; WebCore/loader/FrameLoader.cpp:2380
&gt;&gt; +                    if (pdl-&gt;triggeringAction().historyItem() == page-&gt;backForward()-&gt;currentItem()) {
&gt; 
&gt; Can we make use HistoryController::currentItem() or perhaps HistoryController::provisionalItem()?
&gt; It seems that in the back/forward navigation case, HistoryController::goToItem sets
&gt; HistoryController::m_provisionalItem, and then when we commit the load, that gets promoted to
&gt; HistoryController::m_currentItem.  If another load comes in after that, then the BackForwardList&apos;s
&gt; currentItem would change to correspond to the new provisional HistoryItem.
&gt; 
&gt; I&apos;m also a bit confused as to why this code only assigns |item| when the current frame is the
&gt; main frame.  This makes me wonder if calling BackForwardList::setCurrentItem here is really
&gt; the right thing to do.  If a navigation only occurs in a subframe, we&apos;d still want to
&gt; potentially update the BackForwardList.

Yes, I think history()-&gt;provisionalItem() should be the same as backForward()-&gt;currentItem() here, and it&apos;s a bit clearer to understand that way.  I&apos;ve updated the comment as well to make this easier to follow.  I&apos;ll upload that once the tests pass.

I&apos;m less sure about the frame issue.  I&apos;ll take a look while the tests are running, but we may want to tackle that after this fix goes in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>314535</commentid>
    <comment_count>39</comment_count>
      <attachid>75044</attachid>
    <who name="Charles Reis">creis</who>
    <bug_when>2010-11-29 11:36:53 -0800</bug_when>
    <thetext>Created attachment 75044
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>314569</commentid>
    <comment_count>40</comment_count>
    <who name="Charles Reis">creis</who>
    <bug_when>2010-11-29 12:47:38 -0800</bug_when>
    <thetext>(In reply to comment #38)
&gt; Yes, I think history()-&gt;provisionalItem() should be the same as backForward()-&gt;currentItem() here, and it&apos;s a bit clearer to understand that way.  I&apos;ve updated the comment as well to make this easier to follow.  I&apos;ll upload that once the tests pass.

The tests look good with provisionalItem().  I think it makes sense to go ahead with this part, since it resolves the crash in Chrome.


&gt; I&apos;m less sure about the frame issue.  I&apos;ll take a look while the tests are running, but we may want to tackle that after this fix goes in.

There does appear to be an issue with frame navigations, where it can get confused if you cancel a slow loading frame.  I&apos;ll file a bug for that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>315185</commentid>
    <comment_count>41</comment_count>
    <who name="Charles Reis">creis</who>
    <bug_when>2010-11-30 11:21:49 -0800</bug_when>
    <thetext>(In reply to comment #40)
&gt; There does appear to be an issue with frame navigations, where it can get confused if you cancel a slow loading frame.  I&apos;ll file a bug for that.

I&apos;ve filed issue 50254 for the frame navigations problem, with an attached layout test.  I haven&apos;t figured out what the fix for that one is yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333696</commentid>
    <comment_count>42</comment_count>
    <who name="Nico Weber">thakis</who>
    <bug_when>2011-01-13 08:25:07 -0800</bug_when>
    <thetext>What&apos;s the status of this patch? Are you waiting for someone to set c+?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333711</commentid>
    <comment_count>43</comment_count>
      <attachid>75044</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2011-01-13 08:36:23 -0800</bug_when>
    <thetext>Comment on attachment 75044
Patch

Sorry this patch has been sitting here with an r+ for awhile and that I&apos;m just doing this, but reading my bugzilla CC email I noticed something I really dislike here.

I understand the motivation for reordering the arguments was the &quot;null vs bool&quot; ambiguity.  A much better way to fix that besides reordering the arguments would be to take this opportunity to replace the bool with an enum.  

Since it&apos;s been so long I&apos;m going to change to r- in hopes this can be done before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333746</commentid>
    <comment_count>44</comment_count>
    <who name="Charles Reis">creis</who>
    <bug_when>2011-01-13 09:42:59 -0800</bug_when>
    <thetext>(In reply to comment #43)
&gt; (From update of attachment 75044 [details])
&gt; Sorry this patch has been sitting here with an r+ for awhile and that I&apos;m just doing this, but reading my bugzilla CC email I noticed something I really dislike here.
&gt; 
&gt; I understand the motivation for reordering the arguments was the &quot;null vs bool&quot; ambiguity.  A much better way to fix that besides reordering the arguments would be to take this opportunity to replace the bool with an enum.  
&gt; 
&gt; Since it&apos;s been so long I&apos;m going to change to r- in hopes this can be done before landing.

Ok, I&apos;ll take a look.

I also tried to bring the patch up to date and discovered there&apos;s another problem.  Some clients (e.g., DumpRenderTree but not test_shell or chromium) will re-use the same HistoryItem for repeated back navigations.  That means if you click back twice, we can&apos;t distinguish between the two navigations and thus interpret it as a stop.  Drat.

Now that the fix for 50254 has landed and ensured we have provisional items in the history for all frames, I&apos;d like to approach this another way.  Rather than trying to determine whether a new navigation has begun and skipping the state reset, we should only do the state reset if we know that no navigation is in progress.  We could detect that if history()-&gt;provisionalItem() was set to 0 after a stop.

I&apos;ll see if I can get that approach to work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336121</commentid>
    <comment_count>45</comment_count>
      <attachid>79337</attachid>
    <who name="Charles Reis">creis</who>
    <bug_when>2011-01-18 14:57:25 -0800</bug_when>
    <thetext>Created attachment 79337
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336122</commentid>
    <comment_count>46</comment_count>
    <who name="Charles Reis">creis</who>
    <bug_when>2011-01-18 14:58:05 -0800</bug_when>
    <thetext>(In reply to comment #44)
&gt; Now that the fix for 50254 has landed and ensured we have provisional items in the history for all frames, I&apos;d like to approach this another way.  Rather than trying to determine whether a new navigation has begun and skipping the state reset, we should only do the state reset if we know that no navigation is in progress.  We could detect that if history()-&gt;provisionalItem() was set to 0 after a stop.
&gt; 
&gt; I&apos;ll see if I can get that approach to work.

I&apos;ve just uploaded a new patch that clears the history&apos;s provisional item if a navigation is canceled, which is a nice invariant to have in itself.  In this bug, it lets us avoid the state reset if a new navigation is in progress.

I&apos;ve slightly updated forward-and-cancel.html so that it acts as a regression test for the state reset logic (ensuring it happens if you click stop), and I&apos;m still using back-twice-without-cancel.html to test that the state reset logic doesn&apos;t happen if you&apos;ve started a new navigation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>337458</commentid>
    <comment_count>47</comment_count>
      <attachid>79337</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-01-20 11:17:36 -0800</bug_when>
    <thetext>Comment on attachment 79337
Patch

Rejecting attachment 79337 from commit-queue.

Failed to run &quot;[&apos;./Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=eseidel-sf-cq&apos;, &apos;bu...&quot; exit_code: 2

Last 500 characters of output:
d symbols:
  &quot;__ZN7WebCore11FrameLoader14stopAllLoadersENS_14DatabasePolicyE&quot;, referenced from:
     -exported_symbol[s_list] command line option
     (maybe you meant: __ZN7WebCore11FrameLoader14stopAllLoadersENS_14DatabasePolicyENS_26ClearProvisionalItemPolicyE)
ld: symbol(s) not found
collect2: ld returned 1 exit status
** BUILD FAILED **


The following build commands failed:
WebCore:
	Ld /Projects/CommitQueue/WebKitBuild/Debug/WebCore.framework/Versions/A/WebCore normal x86_64
(1 failure)


Full output: http://queues.webkit.org/results/7540237</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>337489</commentid>
    <comment_count>48</comment_count>
      <attachid>79629</attachid>
    <who name="Charles Reis">creis</who>
    <bug_when>2011-01-20 12:02:17 -0800</bug_when>
    <thetext>Created attachment 79629
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>337491</commentid>
    <comment_count>49</comment_count>
      <attachid>79629</attachid>
    <who name="Charles Reis">creis</who>
    <bug_when>2011-01-20 12:04:19 -0800</bug_when>
    <thetext>Comment on attachment 79629
Patch

Here&apos;s an updated patch that changes the exported stopAllLoaders symbol in WebCore.exp.in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>337604</commentid>
    <comment_count>50</comment_count>
      <attachid>79629</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-01-20 14:24:25 -0800</bug_when>
    <thetext>Comment on attachment 79629
Patch

Rejecting attachment 79629 from commit-queue.

Failed to run &quot;[&apos;./Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=eseidel-cq-sl&apos;, &apos;bu...&quot; exit_code: 2

Last 500 characters of output:
tp/tests/media .......
http/tests/messaging ..
http/tests/mime ........
http/tests/misc .......................................................................................................
http/tests/multipart .....
http/tests/navigation .......
http/tests/navigation/back-twice-without-commit.html -&gt; failed

Exiting early after 1 failures. 21680 tests run.
457.09s total testing time

21679 test cases (99%) succeeded
1 test case (&lt;1%) had incorrect layout
13 test cases (&lt;1%) had stderr output

Full output: http://queues.webkit.org/results/7627219</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>337627</commentid>
    <comment_count>51</comment_count>
      <attachid>79655</attachid>
    <who name="Charles Reis">creis</who>
    <bug_when>2011-01-20 15:00:51 -0800</bug_when>
    <thetext>Created attachment 79655
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>337636</commentid>
    <comment_count>52</comment_count>
      <attachid>79655</attachid>
    <who name="Charles Reis">creis</who>
    <bug_when>2011-01-20 15:08:14 -0800</bug_when>
    <thetext>Comment on attachment 79655
Patch

New patch that uses layoutTestController.clearBackForwardList() in both tests.  (Mihai found that Chromium resets the navigation controller between tests without needing this, and suggests that we update the other ports to act this way as well.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>337758</commentid>
    <comment_count>53</comment_count>
      <attachid>79655</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-01-20 17:30:23 -0800</bug_when>
    <thetext>Comment on attachment 79655
Patch

Rejecting attachment 79655 from commit-queue.

Failed to run &quot;[&apos;./Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=eseidel-sf-cq&apos;, &apos;bu...&quot; exit_code: 2

Last 500 characters of output:
ata .....
http/tests/media .......
http/tests/messaging ..
http/tests/mime ........
http/tests/misc .......................................................................................................
http/tests/multipart .....
http/tests/navigation .......
http/tests/navigation/back-twice-without-commit.html -&gt; crashed

Exiting early after 1 failures. 21681 tests run.
738.20s total testing time

21680 test cases (99%) succeeded
1 test case (&lt;1%) crashed
12 test cases (&lt;1%) had stderr output

Full output: http://queues.webkit.org/results/7524224</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338068</commentid>
    <comment_count>54</comment_count>
      <attachid>79742</attachid>
    <who name="Charles Reis">creis</who>
    <bug_when>2011-01-21 08:32:00 -0800</bug_when>
    <thetext>Created attachment 79742
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338070</commentid>
    <comment_count>55</comment_count>
      <attachid>79742</attachid>
    <who name="Charles Reis">creis</who>
    <bug_when>2011-01-21 08:34:56 -0800</bug_when>
    <thetext>Comment on attachment 79742
Patch

The test in the previous patch crashed on commit and not in Chromium WebKit because it called queueBackNavigation with too large a value (which behaves fine in Chromium WebKit).  I&apos;ve updated back-twice-without-commit.html and tested it by hand on non-Chromium WebKit build on a Mac.  This should hopefully do the trick.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338144</commentid>
    <comment_count>56</comment_count>
      <attachid>79742</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-01-21 10:26:50 -0800</bug_when>
    <thetext>Comment on attachment 79742
Patch

Clearing flags on attachment: 79742

Committed r76357: &lt;http://trac.webkit.org/changeset/76357&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338146</commentid>
    <comment_count>57</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-01-21 10:26:59 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338162</commentid>
    <comment_count>58</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-21 10:58:28 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/76357 might have broken Qt Linux Release
The following tests are not passing:
http/tests/navigation/forward-and-cancel.html</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72611</attachid>
            <date>2010-11-01 17:59:10 -0700</date>
            <delta_ts>2010-11-01 18:48:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-48812-20101101175908.patch</filename>
            <type>text/plain</type>
            <size>1226</size>
            <attacher name="Charles Reis">creis</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDcxMDg4
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTAtMTEt
MDEgIENoYXJsaWUgUmVpcyAgPGNyZWlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGcmFtZUxvYWRlcjo6Y2hlY2tMb2FkQ29t
cGxldGVGb3JUaGlzRnJhbWUgdXNlcyB3cm9uZyBoaXN0b3J5IGl0ZW0KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4ODEyCisKKyAgICAgICAgKiAuLi8u
Li9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHA6CisKIDIwMTAtMTAtMjkgIENzYWJhIE9z
enRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFt
IFJvYmVuIGFuZCBEYXZpZCBLaWx6ZXIuCkluZGV4OiBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCShyZXZp
c2lvbiA3MTA4MykKKysrIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjM1MCw3ICsyMzUwLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y2hlY2tMb2FkQ29t
cGxldGVGb3JUaAogICAgICAgICAgICAgUmVmUHRyPEhpc3RvcnlJdGVtPiBpdGVtOwogICAgICAg
ICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCkpCiAgICAgICAgICAgICAgICAg
aWYgKGlzQmFja0ZvcndhcmRMb2FkVHlwZShsb2FkVHlwZSgpKSAmJiBtX2ZyYW1lID09IHBhZ2Ut
Pm1haW5GcmFtZSgpKQotICAgICAgICAgICAgICAgICAgICBpdGVtID0gaGlzdG9yeSgpLT5jdXJy
ZW50SXRlbSgpOworICAgICAgICAgICAgICAgICAgICBwYWdlLT5iYWNrRm9yd2FyZExpc3QoKS0+
Y3VycmVudEl0ZW0oKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIGJvb2wgc2hvdWxk
UmVzZXQgPSB0cnVlOwogICAgICAgICAgICAgaWYgKCEocGRsLT5pc0xvYWRpbmdJbkFQSVNlbnNl
KCkgJiYgIXBkbC0+aXNTdG9wcGluZygpKSkgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72616</attachid>
            <date>2010-11-01 18:48:55 -0700</date>
            <delta_ts>2010-11-03 16:59:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-48812-20101101184854.patch</filename>
            <type>text/plain</type>
            <size>1229</size>
            <attacher name="Charles Reis">creis</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDcxMDg4
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTAtMTEt
MDEgIENoYXJsaWUgUmVpcyAgPGNyZWlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGcmFtZUxvYWRlcjo6Y2hlY2tMb2FkQ29t
cGxldGVGb3JUaGlzRnJhbWUgdXNlcyB3cm9uZyBoaXN0b3J5IGl0ZW0KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4ODEyCisKKyAgICAgICAgKiAuLi8u
Li9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHA6CisKIDIwMTAtMTAtMjkgIENzYWJhIE9z
enRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFt
IFJvYmVuIGFuZCBEYXZpZCBLaWx6ZXIuCkluZGV4OiBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCShyZXZp
c2lvbiA3MTA4MykKKysrIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjM1MCw3ICsyMzUwLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y2hlY2tMb2FkQ29t
cGxldGVGb3JUaAogICAgICAgICAgICAgUmVmUHRyPEhpc3RvcnlJdGVtPiBpdGVtOwogICAgICAg
ICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCkpCiAgICAgICAgICAgICAgICAg
aWYgKGlzQmFja0ZvcndhcmRMb2FkVHlwZShsb2FkVHlwZSgpKSAmJiBtX2ZyYW1lID09IHBhZ2Ut
Pm1haW5GcmFtZSgpKQotICAgICAgICAgICAgICAgICAgICBpdGVtID0gaGlzdG9yeSgpLT5jdXJy
ZW50SXRlbSgpOworICAgICAgICAgICAgICAgICAgICBpdGVtID0gcGFnZS0+YmFja0ZvcndhcmQo
KS0+Y3VycmVudEl0ZW0oKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIGJvb2wgc2hv
dWxkUmVzZXQgPSB0cnVlOwogICAgICAgICAgICAgaWYgKCEocGRsLT5pc0xvYWRpbmdJbkFQSVNl
bnNlKCkgJiYgIXBkbC0+aXNTdG9wcGluZygpKSkgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72886</attachid>
            <date>2010-11-03 16:59:27 -0700</date>
            <delta_ts>2010-11-05 15:32:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-48812-20101103165926.patch</filename>
            <type>text/plain</type>
            <size>1845</size>
            <attacher name="Charles Reis">creis</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDcxMDg4
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMTEt
MDMgIENoYXJsaWUgUmVpcyAgPGNyZWlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGcmFtZUxvYWRlcjo6Y2hlY2tMb2FkQ29t
cGxldGVGb3JUaGlzRnJhbWUgdXNlcyB3cm9uZyBoaXN0b3J5IGl0ZW0KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4ODEyCisKKyAgICAgICAgQXZvaWRz
IHVwZGF0aW5nIGJhY2svZm9yd2FyZCBsaXN0IG9uIGEgY2FuY2VsZWQgbmF2aWdhdGlvbiBpZiBh
IG5ldworICAgICAgICBuYXZpZ2F0aW9uIGlzIGFscmVhZHkgaW4gcHJvY2Vzcy4KKworICAgICAg
ICAqIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKwogMjAxMC0xMC0yOSAgQ3NhYmEg
T3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFk
YW0gUm9iZW4gYW5kIERhdmlkIEtpbHplci4KSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJl
dmlzaW9uIDcxMDgzKQorKysgV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yMzgwLDkgKzIzODAsMTMgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y2hlY2tMb2Fk
Q29tcGxldGVGb3JUaAogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKHNob3VsZFJlc2V0
ICYmIGl0ZW0pCiAgICAgICAgICAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdl
KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgcGFnZS0+YmFja0ZvcndhcmQoKS0+c2V0Q3VycmVu
dEl0ZW0oaXRlbS5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgICAgIFNldHRpbmdzKiBzZXR0aW5n
cyA9IG1fZnJhbWUtPnNldHRpbmdzKCk7Ci0gICAgICAgICAgICAgICAgICAgIHBhZ2UtPnNldEds
b2JhbEhpc3RvcnlJdGVtKCghc2V0dGluZ3MgfHwgc2V0dGluZ3MtPnByaXZhdGVCcm93c2luZ0Vu
YWJsZWQoKSkgPyAwIDogaXRlbS5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIC8vIERvIG5v
dCBjaGFuZ2UgdGhlIGhpc3RvcnkgaWYgdGhlIGJhY2tGb3J3YXJkIGNvbnRyb2xsZXIKKyAgICAg
ICAgICAgICAgICAgICAgLy8gaXMgYWxlYWR5IGxvYWRpbmcgYSBuZXcgVVJMLgorICAgICAgICAg
ICAgICAgICAgICBpZiAocGRsLT5yZXF1ZXN0KCkudXJsKCkgPT0gcGFnZS0+YmFja0ZvcndhcmQo
KS0+Y3VycmVudEl0ZW0oKS0+dXJsKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2Ut
PmJhY2tGb3J3YXJkKCktPnNldEN1cnJlbnRJdGVtKGl0ZW0uZ2V0KCkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgU2V0dGluZ3MqIHNldHRpbmdzID0gbV9mcmFtZS0+c2V0dGluZ3MoKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHBhZ2UtPnNldEdsb2JhbEhpc3RvcnlJdGVtKCghc2V0dGlu
Z3MgfHwgc2V0dGluZ3MtPnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSkgPyAwIDogaXRlbS5nZXQo
KSk7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73130</attachid>
            <date>2010-11-05 15:32:46 -0700</date>
            <delta_ts>2010-11-09 18:23:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-48812-20101105153245.patch</filename>
            <type>text/plain</type>
            <size>4509</size>
            <attacher name="Charles Reis">creis</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MTQ0OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTMgQEAKKzIwMTAtMTEtMDMgIENoYXJsaWUgUmVpcyAgPGNyZWlzQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
dm9pZHMgdXBkYXRpbmcgYmFjay9mb3J3YXJkIGxpc3Qgb24gYSBjYW5jZWxlZCBuYXZpZ2F0aW9u
IGlmIGEgbmV3CisgICAgICAgIG5hdmlnYXRpb24gaXMgYWxyZWFkeSBpbiBwcm9jZXNzLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDg4MTIKKworICAg
ICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisKIDIwMTAtMTEtMDQgIFpoZW55YW8gTW8g
IDx6bW9AZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJ1c3NlbGwu
CkluZGV4OiBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCShyZXZpc2lvbiA3MTQ0OSkKKysrIFdlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM4MCw5ICsyMzgwLDEz
IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNoZWNrTG9hZENvbXBsZXRlRm9yVGgKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGlmIChzaG91bGRSZXNldCAmJiBpdGVtKQogICAgICAgICAgICAgICAg
IGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAg
IHBhZ2UtPmJhY2tGb3J3YXJkKCktPnNldEN1cnJlbnRJdGVtKGl0ZW0uZ2V0KCkpOwotICAgICAg
ICAgICAgICAgICAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBtX2ZyYW1lLT5zZXR0aW5ncygpOwot
ICAgICAgICAgICAgICAgICAgICBwYWdlLT5zZXRHbG9iYWxIaXN0b3J5SXRlbSgoIXNldHRpbmdz
IHx8IHNldHRpbmdzLT5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkpID8gMCA6IGl0ZW0uZ2V0KCkp
OworICAgICAgICAgICAgICAgICAgICAvLyBEbyBub3QgY2hhbmdlIHRoZSBoaXN0b3J5IGlmIHRo
ZSBiYWNrRm9yd2FyZCBjb250cm9sbGVyCisgICAgICAgICAgICAgICAgICAgIC8vIGlzIGFsZWFk
eSBsb2FkaW5nIGEgbmV3IFVSTC4KKyAgICAgICAgICAgICAgICAgICAgaWYgKHBkbC0+cmVxdWVz
dCgpLnVybCgpID09IHBhZ2UtPmJhY2tGb3J3YXJkKCktPmN1cnJlbnRJdGVtKCktPnVybCgpKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBwYWdlLT5iYWNrRm9yd2FyZCgpLT5zZXRDdXJyZW50
SXRlbShpdGVtLmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFNldHRpbmdzKiBzZXR0
aW5ncyA9IG1fZnJhbWUtPnNldHRpbmdzKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBwYWdl
LT5zZXRHbG9iYWxIaXN0b3J5SXRlbSgoIXNldHRpbmdzIHx8IHNldHRpbmdzLT5wcml2YXRlQnJv
d3NpbmdFbmFibGVkKCkpID8gMCA6IGl0ZW0uZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkluZGV4
OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vYmFjay10d2ljZS13aXRob3V0LWNv
bW1pdC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9u
YXZpZ2F0aW9uL2JhY2stdHdpY2Utd2l0aG91dC1jb21taXQtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2JhY2stdHdpY2Utd2l0
aG91dC1jb21taXQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDkgQEAKK1Ro
aXMgdGVzdCBjaGVja3MgdGhhdCBnb2luZyBiYWNrIHR3aWNlIHdpdGhvdXQgY29tbWl0dGluZyBk
b2Vzbid0IGNvcnJ1cHQgdGhlIGJhY2svZm9yd2FyZCBsaXN0LgorCitJZiB0ZXN0aW5nIG1hbnVh
bGx5LCBjbGljayBoZXJlLgorCis9PT09PT09PT09PT09PSBCYWNrIEZvcndhcmQgTGlzdCA9PT09
PT09PT09PT09PQorY3Vyci0+ICBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbmF2aWdhdGlvbi9iYWNr
LXR3aWNlLXdpdGhvdXQtY29tbWl0Lmh0bWwgICoqbmF2IHRhcmdldCoqCisgICAgICAgIGh0dHA6
Ly8xMjcuMC4wLjE6ODAwMC9uYXZpZ2F0aW9uL3Jlc291cmNlcy9iYWNrLXR3aWNlLXBhZ2UtMi5o
dG1sICAqKm5hdiB0YXJnZXQqKgorICAgICAgICBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbmF2aWdh
dGlvbi9yZXNvdXJjZXMvYmFjay10d2ljZS1wYWdlLTMuaHRtbCAgKipuYXYgdGFyZ2V0KioKKz09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkluZGV4OiBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vYmFjay10d2ljZS13aXRob3V0LWNvbW1pdC5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9iYWNr
LXR3aWNlLXdpdGhvdXQtY29tbWl0Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL25hdmlnYXRpb24vYmFjay10d2ljZS13aXRob3V0LWNvbW1pdC5odG1sCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDExIEBACis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBCYWNrRm9yd2FyZExp
c3QoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIucXVldWVMb2FkKCJyZXNvdXJjZXMvYmFjay10d2ljZS1wYWdlLTIuaHRt
bCIpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLnF1ZXVlTG9hZCgicmVzb3VyY2VzL2JhY2st
dHdpY2UtcGFnZS0zLmh0bWwiKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5xdWV1ZUJhY2tU
d2ljZU5hdmlnYXRpb24oKTsKK30KKzwvc2NyaXB0PgorPHA+VGhpcyB0ZXN0IGNoZWNrcyB0aGF0
IGdvaW5nIGJhY2sgdHdpY2Ugd2l0aG91dCBjb21taXR0aW5nIGRvZXNuJ3QgY29ycnVwdCB0aGUg
YmFjay9mb3J3YXJkIGxpc3QuCis8cD5JZiB0ZXN0aW5nIG1hbnVhbGx5LCA8YSBocmVmPSJyZXNv
dXJjZXMvYmFjay10d2ljZS1wYWdlLTIuaHRtbCI+Y2xpY2sgaGVyZTwvYT4uCkluZGV4OiBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcmVzb3VyY2VzL2JhY2stdHdpY2UtcGFnZS0y
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Jl
c291cmNlcy9iYWNrLXR3aWNlLXBhZ2UtMi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Jlc291cmNlcy9iYWNrLXR3aWNlLXBhZ2UtMi5odG1s
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMgQEAKKzxwPlBhZ2UgMi4KKzxwPlRoaXMgdGVzdCBj
aGVja3MgdGhhdCBnb2luZyBiYWNrIHR3aWNlIHdpdGhvdXQgY29tbWl0dGluZyBkb2Vzbid0IGNv
cnJ1cHQgdGhlIGJhY2svZm9yd2FyZCBsaXN0LgorPHA+SWYgdGVzdGluZyBtYW51YWxseSwgPGEg
aHJlZj0iYmFjay10d2ljZS1wYWdlLTMuaHRtbCI+Y2xpY2sgaGVyZTwvYT4uCkluZGV4OiBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcmVzb3VyY2VzL2JhY2stdHdpY2UtcGFnZS0z
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Jl
c291cmNlcy9iYWNrLXR3aWNlLXBhZ2UtMy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Jlc291cmNlcy9iYWNrLXR3aWNlLXBhZ2UtMy5odG1s
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMgQEAKKzxwPlBhZ2UgMy4KKzxwPlRoaXMgdGVzdCBj
aGVja3MgdGhhdCBnb2luZyBiYWNrIHR3aWNlIHdpdGhvdXQgY29tbWl0dGluZyBkb2Vzbid0IGNv
cnJ1cHQgdGhlIGJhY2svZm9yd2FyZCBsaXN0LgorPHA+SWYgdGVzdGluZyBtYW51YWxseSwgaG9s
ZCBkb3duIHRoZSBiYWNrIGtleWJvYXJkIHNob3J0Y3V0IG9yIGNsaWNrIGJhY2sgdHdpY2UgcXVp
Y2tseS4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73449</attachid>
            <date>2010-11-09 18:23:08 -0800</date>
            <delta_ts>2010-11-10 15:35:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-48812-20101109182306.patch</filename>
            <type>text/plain</type>
            <size>12147</size>
            <attacher name="Charles Reis">creis</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MTQ0OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMTAtMTEtMDkgIENoYXJsaWUgUmVpcyAgPGNyZWlzQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
dm9pZHMgdXBkYXRpbmcgYmFjay9mb3J3YXJkIGxpc3Qgb24gYSBjYW5jZWxlZCBuYXZpZ2F0aW9u
IGlmIGEgbmV3CisgICAgICAgIG5hdmlnYXRpb24gaXMgYWxyZWFkeSBpbiBwcm9jZXNzLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDg4MTIKKworICAg
ICAgICBObyBuZXcgdGVzdHMuIChPT1BTISkKKworICAgICAgICAqIC4uLy4uL2hpc3RvcnkvSGlz
dG9yeUl0ZW0uY3BwOgorICAgICAgICAqIC4uLy4uL2hpc3RvcnkvSGlzdG9yeUl0ZW0uaDogQWRk
IGEgcmVxdWVzdElEIGZpZWxkLgorICAgICAgICAqIC4uLy4uL2xvYWRlci9GcmFtZUxvYWRlci5j
cHA6IENvbXBhcmUgY2FuY2VsZWQgcmVxdWVzdCBJRCB0byBoaXN0b3J5IHJlcXVlc3QgSUQuCisg
ICAgICAgICogLi4vLi4vcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcDoK
KyAgICAgICAgKiAuLi8uLi9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaDog
QWRkIGEgdW5pcXVlIElEIGZpZWxkLgorCiAyMDEwLTExLTA0ICBaaGVueWFvIE1vICA8em1vQGdv
b2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSdXNzZWxsLgpJbmRleDog
V2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2hp
c3RvcnkvSGlzdG9yeUl0ZW0uY3BwCShyZXZpc2lvbiA3MTQ0OSkKKysrIFdlYkNvcmUvaGlzdG9y
eS9IaXN0b3J5SXRlbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYwLDYgKzYwLDcgQEAgSGlzdG9y
eUl0ZW06Okhpc3RvcnlJdGVtKCkKICAgICAsIG1fdmlzaXRDb3VudCgwKQogICAgICwgbV9pdGVt
U2VxdWVuY2VOdW1iZXIoZ2VuZXJhdGVTZXF1ZW5jZU51bWJlcigpKQogICAgICwgbV9kb2N1bWVu
dFNlcXVlbmNlTnVtYmVyKGdlbmVyYXRlU2VxdWVuY2VOdW1iZXIoKSkKKyAgICAsIG1fcmVxdWVz
dElEKDApCiB7CiB9CiAKQEAgLTc0LDYgKzc1LDcgQEAgSGlzdG9yeUl0ZW06Okhpc3RvcnlJdGVt
KGNvbnN0IFN0cmluZyYgdQogICAgICwgbV92aXNpdENvdW50KDApCiAgICAgLCBtX2l0ZW1TZXF1
ZW5jZU51bWJlcihnZW5lcmF0ZVNlcXVlbmNlTnVtYmVyKCkpCiAgICAgLCBtX2RvY3VtZW50U2Vx
dWVuY2VOdW1iZXIoZ2VuZXJhdGVTZXF1ZW5jZU51bWJlcigpKQorICAgICwgbV9yZXF1ZXN0SUQo
MCkKIHsgICAgCiAgICAgaWNvbkRhdGFiYXNlKCktPnJldGFpbkljb25Gb3JQYWdlVVJMKG1fdXJs
U3RyaW5nKTsKIH0KQEAgLTkwLDYgKzkyLDcgQEAgSGlzdG9yeUl0ZW06Okhpc3RvcnlJdGVtKGNv
bnN0IFN0cmluZyYgdQogICAgICwgbV92aXNpdENvdW50KDApCiAgICAgLCBtX2l0ZW1TZXF1ZW5j
ZU51bWJlcihnZW5lcmF0ZVNlcXVlbmNlTnVtYmVyKCkpCiAgICAgLCBtX2RvY3VtZW50U2VxdWVu
Y2VOdW1iZXIoZ2VuZXJhdGVTZXF1ZW5jZU51bWJlcigpKQorICAgICwgbV9yZXF1ZXN0SUQoMCkK
IHsKICAgICBpY29uRGF0YWJhc2UoKS0+cmV0YWluSWNvbkZvclBhZ2VVUkwobV91cmxTdHJpbmcp
OwogfQpAQCAtMTA3LDYgKzExMCw3IEBAIEhpc3RvcnlJdGVtOjpIaXN0b3J5SXRlbShjb25zdCBL
VVJMJiB1cmwKICAgICAsIG1fdmlzaXRDb3VudCgwKQogICAgICwgbV9pdGVtU2VxdWVuY2VOdW1i
ZXIoZ2VuZXJhdGVTZXF1ZW5jZU51bWJlcigpKQogICAgICwgbV9kb2N1bWVudFNlcXVlbmNlTnVt
YmVyKGdlbmVyYXRlU2VxdWVuY2VOdW1iZXIoKSkKKyAgICAsIG1fcmVxdWVzdElEKDApCiB7ICAg
IAogICAgIGljb25EYXRhYmFzZSgpLT5yZXRhaW5JY29uRm9yUGFnZVVSTChtX3VybFN0cmluZyk7
CiB9CkBAIC0xNDAsNiArMTQ0LDcgQEAgaW5saW5lIEhpc3RvcnlJdGVtOjpIaXN0b3J5SXRlbShj
b25zdCBIaQogICAgICwgbV93ZWVrbHlWaXNpdENvdW50cyhpdGVtLm1fd2Vla2x5VmlzaXRDb3Vu
dHMpCiAgICAgLCBtX2l0ZW1TZXF1ZW5jZU51bWJlcihpdGVtLm1faXRlbVNlcXVlbmNlTnVtYmVy
KQogICAgICwgbV9kb2N1bWVudFNlcXVlbmNlTnVtYmVyKGl0ZW0ubV9kb2N1bWVudFNlcXVlbmNl
TnVtYmVyKQorICAgICwgbV9yZXF1ZXN0SUQoaXRlbS5tX3JlcXVlc3RJRCkKICAgICAsIG1fZm9y
bUNvbnRlbnRUeXBlKGl0ZW0ubV9mb3JtQ29udGVudFR5cGUpCiB7CiAgICAgaWYgKGl0ZW0ubV9m
b3JtRGF0YSkKSW5kZXg6IFdlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5oCShyZXZpc2lvbiA3MTQ0OSkKKysrIFdl
YkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDEsNyArMTQx
LDEwIEBAIHB1YmxpYzogCiAKICAgICB2b2lkIHNldERvY3VtZW50U2VxdWVuY2VOdW1iZXIobG9u
ZyBsb25nIG51bWJlcikgeyBtX2RvY3VtZW50U2VxdWVuY2VOdW1iZXIgPSBudW1iZXI7IH0KICAg
ICBsb25nIGxvbmcgZG9jdW1lbnRTZXF1ZW5jZU51bWJlcigpIGNvbnN0IHsgcmV0dXJuIG1fZG9j
dW1lbnRTZXF1ZW5jZU51bWJlcjsgfQotICAgIAorCisgICAgdm9pZCBzZXRSZXF1ZXN0SUQobG9u
ZyBsb25nIGlkKSB7IG1fcmVxdWVzdElEID0gaWQ7IH0KKyAgICBsb25nIGxvbmcgcmVxdWVzdElE
KCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0SUQ7IH0KKwogICAgIHZvaWQgc2V0Rm9ybUluZm9G
cm9tUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2b2lkIHNldEZvcm1EYXRh
KFBhc3NSZWZQdHI8Rm9ybURhdGE+KTsKICAgICB2b2lkIHNldEZvcm1Db250ZW50VHlwZShjb25z
dCBTdHJpbmcmKTsKQEAgLTI1Niw3ICsyNTksMTAgQEAgcHJpdmF0ZToKICAgICAvLyBTdXBwb3J0
IGZvciBIVE1MNSBIaXN0b3J5CiAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbV9z
dGF0ZU9iamVjdDsKICAgICBsb25nIGxvbmcgbV9kb2N1bWVudFNlcXVlbmNlTnVtYmVyOwotICAg
IAorCisgICAgLy8gVW5pcXVlIElEIGZvciBjdXJyZW50IHJlcXVlc3QsIG90aGVyd2lzZSAwLgor
ICAgIGxvbmcgbG9uZyBtX3JlcXVlc3RJRDsKKwogICAgIC8vIGluZm8gdXNlZCB0byByZXBvc3Qg
Zm9ybSBkYXRhCiAgICAgUmVmUHRyPEZvcm1EYXRhPiBtX2Zvcm1EYXRhOwogICAgIFN0cmluZyBt
X2Zvcm1Db250ZW50VHlwZTsKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJldmlzaW9uIDcx
NDQ5KQorKysgV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xODQ3LDYgKzE4NDcsOSBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjb21taXRQcm92aXNpb25hbExv
YWQoCiAgICAgaWYgKCFjYWNoZWRQYWdlICYmICFtX3N0YXRlTWFjaGluZS5jcmVhdGluZ0luaXRp
YWxFbXB0eURvY3VtZW50KCkpCiAgICAgICAgIG1fY2xpZW50LT5tYWtlUmVwcmVzZW50YXRpb24o
cGRsLmdldCgpKTsKICAgICAKKyAgICBpZiAoaXRlbSkKKyAgICAgICAgaXRlbS0+c2V0UmVxdWVz
dElEKDApOworICAgIAogICAgIHRyYW5zaXRpb25Ub0NvbW1pdHRlZChjYWNoZWRQYWdlKTsKICAg
ICAKICAgICAvLyBDYWxsIGNsaWVudFJlZGlyZWN0Q2FuY2VsbGVkT3JGaW5pc2hlZCgpIGhlcmUg
c28gdGhhdCB0aGUgZnJhbWUgbG9hZCBkZWxlZ2F0ZSBpcyBub3RpZmllZCB0aGF0IHRoZSByZWRp
cmVjdCdzCkBAIC0yMzgwLDkgKzIzODMsMTMgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y2hlY2tMb2Fk
Q29tcGxldGVGb3JUaAogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKHNob3VsZFJlc2V0
ICYmIGl0ZW0pCiAgICAgICAgICAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdl
KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgcGFnZS0+YmFja0ZvcndhcmQoKS0+c2V0Q3VycmVu
dEl0ZW0oaXRlbS5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgICAgIFNldHRpbmdzKiBzZXR0aW5n
cyA9IG1fZnJhbWUtPnNldHRpbmdzKCk7Ci0gICAgICAgICAgICAgICAgICAgIHBhZ2UtPnNldEds
b2JhbEhpc3RvcnlJdGVtKCghc2V0dGluZ3MgfHwgc2V0dGluZ3MtPnByaXZhdGVCcm93c2luZ0Vu
YWJsZWQoKSkgPyAwIDogaXRlbS5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIC8vIERvIG5v
dCBjaGFuZ2UgdGhlIGhpc3RvcnkgaWYgdGhlIGJhY2tGb3J3YXJkIGNvbnRyb2xsZXIKKyAgICAg
ICAgICAgICAgICAgICAgLy8gaXMgYWxlYWR5IGxvYWRpbmcgYSBuZXcgVVJMLgorICAgICAgICAg
ICAgICAgICAgICBpZiAocGRsLT5yZXF1ZXN0KCkuaWQoKSA9PSBwYWdlLT5iYWNrRm9yd2FyZCgp
LT5jdXJyZW50SXRlbSgpLT5yZXF1ZXN0SUQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
cGFnZS0+YmFja0ZvcndhcmQoKS0+c2V0Q3VycmVudEl0ZW0oaXRlbS5nZXQoKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBtX2ZyYW1lLT5zZXR0aW5ncygp
OworICAgICAgICAgICAgICAgICAgICAgICAgcGFnZS0+c2V0R2xvYmFsSGlzdG9yeUl0ZW0oKCFz
ZXR0aW5ncyB8fCBzZXR0aW5ncy0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpKSA/IDAgOiBpdGVt
LmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMzE3MSw2ICszMTc4LDcgQEAgdm9pZCBGcmFt
ZUxvYWRlcjo6bmF2aWdhdGVUb0RpZmZlcmVudERvYwogCiAgICAgYm9vbCBhZGRlZEV4dHJhRmll
bGRzID0gZmFsc2U7CiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoaXRlbVVSTCk7CisgICAg
aXRlbS0+c2V0UmVxdWVzdElEKHJlcXVlc3QuaWQoKSk7CiAKICAgICBpZiAoIWl0ZW0tPnJlZmVy
cmVyKCkuaXNOdWxsKCkpCiAgICAgICAgIHJlcXVlc3Quc2V0SFRUUFJlZmVycmVyKGl0ZW0tPnJl
ZmVycmVyKCkpOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVz
dEJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZVJlcXVlc3RCYXNlLmNwcAkocmV2aXNpb24gNzE0NDkpCisrKyBXZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMy
LDggQEAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitsb25n
IGxvbmcgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6aWRDb3VudGVyID0gMDsKKwogaW5saW5lIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6YXNSZXNvdXJjZVJlcXVlc3Qo
KSBjb25zdAogewogICAgIHJldHVybiAqc3RhdGljX2Nhc3Q8Y29uc3QgUmVzb3VyY2VSZXF1ZXN0
Kj4odGhpcyk7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0
QmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJl
cXVlc3RCYXNlLmgJKHJldmlzaW9uIDcxNDQ5KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlUmVxdWVzdEJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ0LDYgKzE0NCw5IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgVGFyZ2V0VHlwZSB0YXJnZXRUeXBlKCkgY29u
c3QgeyByZXR1cm4gbV90YXJnZXRUeXBlOyB9CiAgICAgICAgIHZvaWQgc2V0VGFyZ2V0VHlwZShU
YXJnZXRUeXBlIHR5cGUpIHsgbV90YXJnZXRUeXBlID0gdHlwZTsgfQogCisgICAgICAgIC8vIFVu
aXF1ZSBJRCB0byBkaXN0aW5ndWlzaCBvdGhlcndpc2UgaWRlbnRpY2FsIHJlcXVlc3RzLgorICAg
ICAgICBsb25nIGxvbmcgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CisKICAgICAgICAgc3Rh
dGljIGJvb2wgY29tcGFyZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmKTsKIAogICAgIHByb3RlY3RlZDoKQEAgLTE1NSw2ICsxNTgsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgICAgICAsIG1fcmVwb3J0TG9hZFRpbWluZyhmYWxzZSkKICAgICAg
ICAgICAgICwgbV9yZXBvcnRSYXdIZWFkZXJzKGZhbHNlKQogICAgICAgICAgICAgLCBtX3Rhcmdl
dFR5cGUoVGFyZ2V0SXNTdWJyZXNvdXJjZSkKKyAgICAgICAgICAgICwgbV9pZCgrK2lkQ291bnRl
cikKICAgICAgICAgewogICAgICAgICB9CiAKQEAgLTE3MCw2ICsxNzQsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgICAgICAsIG1fcmVwb3J0TG9hZFRpbWluZyhmYWxzZSkKICAgICAg
ICAgICAgICwgbV9yZXBvcnRSYXdIZWFkZXJzKGZhbHNlKQogICAgICAgICAgICAgLCBtX3Rhcmdl
dFR5cGUoVGFyZ2V0SXNTdWJyZXNvdXJjZSkKKyAgICAgICAgICAgICwgbV9pZCgrK2lkQ291bnRl
cikKICAgICAgICAgewogICAgICAgICB9CiAKQEAgLTE5NSw5ICsyMDAsMTIgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICBib29sIG1fcmVwb3J0TG9hZFRpbWluZzsKICAgICAgICAgYm9v
bCBtX3JlcG9ydFJhd0hlYWRlcnM7CiAgICAgICAgIFRhcmdldFR5cGUgbV90YXJnZXRUeXBlOwor
ICAgICAgICBsb25nIGxvbmcgbV9pZDsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgYXNSZXNvdXJjZVJlcXVlc3QoKSBjb25zdDsKKworICAgICAgICBzdGF0
aWMgbG9uZyBsb25nIGlkQ291bnRlcjsKICAgICB9OwogCiAgICAgYm9vbCBlcXVhbElnbm9yaW5n
SGVhZGVyRmllbGRzKGNvbnN0IFJlc291cmNlUmVxdWVzdEJhc2UmLCBjb25zdCBSZXNvdXJjZVJl
cXVlc3RCYXNlJik7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA3MTQ0OSkKKysrIExheW91dFRlc3RzL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDEwLTExLTA5ICBDaGFy
bGllIFJlaXMgIDxjcmVpc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQXZvaWRzIHVwZGF0aW5nIGJhY2svZm9yd2FyZCBsaXN0
IG9uIGEgY2FuY2VsZWQgbmF2aWdhdGlvbiBpZiBhIG5ldworICAgICAgICBuYXZpZ2F0aW9uIGlz
IGFscmVhZHkgaW4gcHJvY2Vzcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTQ4ODEyCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL25hdmlnYXRpb24vYmFj
ay10d2ljZS13aXRob3V0LWNvbW1pdC5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvbmF2aWdh
dGlvbi9yZXNvdXJjZXMvYmFjay10d2ljZS1wYWdlLTIuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rl
c3RzL25hdmlnYXRpb24vcmVzb3VyY2VzL2JhY2stdHdpY2UtcGFnZS0zLmh0bWw6CisgICAgICAg
ICogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2JhY2stdHdpY2Utd2l0aG91dC1jb21taXQtZXhwZWN0
ZWQudHh0OgorCiAyMDEwLTExLTA1ICBNaWhhaSBQYXJwYXJpdGEgIDxtaWhhaXBAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQ7IHRlc3RfZXhwZWN0YXRpb25zIGZpeC4KSW5kZXg6
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9iYWNrLXR3aWNlLXdpdGhvdXQtY29t
bWl0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25h
dmlnYXRpb24vYmFjay10d2ljZS13aXRob3V0LWNvbW1pdC1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vYmFjay10d2ljZS13aXRo
b3V0LWNvbW1pdC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOSBAQAorVGhp
cyB0ZXN0IGNoZWNrcyB0aGF0IGdvaW5nIGJhY2sgdHdpY2Ugd2l0aG91dCBjb21taXR0aW5nIGRv
ZXNuJ3QgY29ycnVwdCB0aGUgYmFjay9mb3J3YXJkIGxpc3QuCisKK0lmIHRlc3RpbmcgbWFudWFs
bHksIGNsaWNrIGhlcmUuCisKKz09PT09PT09PT09PT09IEJhY2sgRm9yd2FyZCBMaXN0ID09PT09
PT09PT09PT09CitjdXJyLT4gIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9uYXZpZ2F0aW9uL2JhY2st
dHdpY2Utd2l0aG91dC1jb21taXQuaHRtbCAgKipuYXYgdGFyZ2V0KioKKyAgICAgICAgaHR0cDov
LzEyNy4wLjAuMTo4MDAwL25hdmlnYXRpb24vcmVzb3VyY2VzL2JhY2stdHdpY2UtcGFnZS0yLmh0
bWwgICoqbmF2IHRhcmdldCoqCisgICAgICAgIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9uYXZpZ2F0
aW9uL3Jlc291cmNlcy9iYWNrLXR3aWNlLXBhZ2UtMy5odG1sICAqKm5hdiB0YXJnZXQqKgorPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSW5kZXg6IExheW91
dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9iYWNrLXR3aWNlLXdpdGhvdXQtY29tbWl0Lmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2JhY2st
dHdpY2Utd2l0aG91dC1jb21taXQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvbmF2aWdhdGlvbi9iYWNrLXR3aWNlLXdpdGhvdXQtY29tbWl0Lmh0bWwJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMjIgQEAKKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEJhY2tGb3J3YXJkTGlz
dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgIC8vIFZp
c2l0IHR3byBwYWdlcywgdGhlbiBnbyBiYWNrIHRvIHBhZ2UgMiwgd2hpY2ggaGFzIGEgc2xvdyBm
cmFtZSB0aGUgc2Vjb25kIHRpbWUuCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIucXVldWVMb2Fk
KCJyZXNvdXJjZXMvYmFjay10d2ljZS1wYWdlLTIuaHRtbCIpOworICAgIGxheW91dFRlc3RDb250
cm9sbGVyLnF1ZXVlTG9hZCgicmVzb3VyY2VzL2JhY2stdHdpY2UtcGFnZS0zLmh0bWwiKTsKKyAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5xdWV1ZUJhY2tOYXZpZ2F0aW9uKDEpOworCisgICAgLy8g
Tm93IGNvbXBldGUgd2l0aCBwYWdlIDIncyBoaXN0b3J5LmJhY2soKSBjYWxsLCB0byBhIGRpZmZl
cmVudCBoaXN0b3J5IGl0ZW0uCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIucXVldWVCYWNrTmF2
aWdhdGlvbigyKTsKKworICAgIC8vIFJlcGVhdCB0aGUgdGVzdCwgYnV0IGNvbXBldGUgd2l0aCBo
aXN0b3J5LmJhY2soKSB0byB0aGUgc2FtZSBoaXN0b3J5IGl0ZW0uCisgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIucXVldWVMb2FkKCJyZXNvdXJjZXMvYmFjay10d2ljZS1wYWdlLTIuaHRtbCIpOwor
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLnF1ZXVlTG9hZCgicmVzb3VyY2VzL2JhY2stdHdpY2Ut
cGFnZS0zLmh0bWwiKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5xdWV1ZUJhY2tOYXZpZ2F0
aW9uKDEpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLnF1ZXVlQmFja05hdmlnYXRpb24oMSk7
Cit9Cis8L3NjcmlwdD4KKzxwPlRoaXMgdGVzdCBjaGVja3MgdGhhdCBnb2luZyBiYWNrIHR3aWNl
IHdpdGhvdXQgY29tbWl0dGluZyBkb2Vzbid0IGNvcnJ1cHQgdGhlIGJhY2svZm9yd2FyZCBsaXN0
LgorPHA+SWYgdGVzdGluZyBtYW51YWxseSwgPGEgaHJlZj0icmVzb3VyY2VzL2JhY2stdHdpY2Ut
cGFnZS0yLmh0bWwiPmNsaWNrIGhlcmU8L2E+LgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9uYXZpZ2F0aW9uL3Jlc291cmNlcy9iYWNrLXR3aWNlLXBhZ2UtMi5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNvdXJjZXMvYmFjay10d2lj
ZS1wYWdlLTIuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2
aWdhdGlvbi9yZXNvdXJjZXMvYmFjay10d2ljZS1wYWdlLTIuaHRtbAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwyMSBAQAorPHA+UGFnZSAyLgorPHA+VGhpcyB0ZXN0IGNoZWNrcyB0aGF0IGdvaW5n
IGJhY2sgdHdpY2Ugd2l0aG91dCBjb21taXR0aW5nIGRvZXNuJ3QgY29ycnVwdCB0aGUgYmFjay9m
b3J3YXJkIGxpc3QuCis8cD5JZiB0ZXN0aW5nIG1hbnVhbGx5LCA8YSBocmVmPSJiYWNrLXR3aWNl
LXBhZ2UtMy5odG1sIj5jbGljayBoZXJlPC9hPi4KKworPHNjcmlwdD4KK2lmICghd2luZG93Lmxv
Y2FsU3RvcmFnZS5zdGFydGVkKSB7CisgICAgd2luZG93LmxvY2FsU3RvcmFnZS5zdGFydGVkID0g
dHJ1ZTsKK30gZWxzZSB7CisgICAgZGVsZXRlIHdpbmRvdy5sb2NhbFN0b3JhZ2Uuc3RhcnRlZDsK
KworICAgIC8vIFRoZSBzZWNvbmQgdGltZSB3ZSB2aXNpdCB0aGUgcGFnZSAoaS5lLiwgd2hpbGUg
Z29pbmcgYmFjayksIGluc2VydCBhbgorICAgIC8vIGlmcmFtZSB0aGF0IGRvZXNuJ3QgY29tbWl0
IGR1cmluZyB0aGUgdGVzdC4KKyAgICB2YXIgZiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlm
cmFtZSIpOworICAgIGYuc3JjID0gIi4uLy4uL2hpc3RvcnkvcmVzb3VyY2VzL2JhY2stZHVyaW5n
LW9ubG9hZC1odW5nLXBhZ2UucGhwIjsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGYp
OworCisgICAgLy8gTm93IGdvIGJhY2suICBUaGlzIHdpbGwgY29tcGV0ZSB3aXRoIHRoZSBzZWNv
bmQgcXVldWVCYWNrTmF2aWdhdGlvbgorICAgIC8vIGZyb20gYmFjay10d2ljZS13aXRob3V0LWNv
bW1pdC5odG1sLgorICAgIGhpc3RvcnkuYmFjaygpOworfQorPC9zY3JpcHQ+CkluZGV4OiBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcmVzb3VyY2VzL2JhY2stdHdpY2UtcGFnZS0z
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Jl
c291cmNlcy9iYWNrLXR3aWNlLXBhZ2UtMy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Jlc291cmNlcy9iYWNrLXR3aWNlLXBhZ2UtMy5odG1s
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMgQEAKKzxwPlBhZ2UgMy4KKzxwPlRoaXMgdGVzdCBj
aGVja3MgdGhhdCBnb2luZyBiYWNrIHR3aWNlIHdpdGhvdXQgY29tbWl0dGluZyBkb2Vzbid0IGNv
cnJ1cHQgdGhlIGJhY2svZm9yd2FyZCBsaXN0LgorPHA+SWYgdGVzdGluZyBtYW51YWxseSwgaG9s
ZCBkb3duIHRoZSBiYWNrIGtleWJvYXJkIHNob3J0Y3V0IG9yIGNsaWNrIGJhY2sgdHdpY2UgcXVp
Y2tseS4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73550</attachid>
            <date>2010-11-10 15:35:11 -0800</date>
            <delta_ts>2010-11-17 11:23:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-48812-20101110153509.patch</filename>
            <type>text/plain</type>
            <size>10167</size>
            <attacher name="Charles Reis">creis</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MTQ0OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTggQEAKKzIwMTAtMTEtMDkgIENoYXJsaWUgUmVpcyAgPGNyZWlzQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
dm9pZHMgdXBkYXRpbmcgYmFjay9mb3J3YXJkIGxpc3Qgb24gYSBjYW5jZWxlZCBuYXZpZ2F0aW9u
IGlmIGEgbmV3CisgICAgICAgIG5hdmlnYXRpb24gaXMgYWxyZWFkeSBpbiBwcm9jZXNzLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDg4MTIKKworICAg
ICAgICBUZXN0OiBodHRwL3Rlc3RzL25hdmlnYXRpb24vYmFjay10d2ljZS13aXRob3V0LWNvbW1p
dC5odG1sCisKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6OmNoZWNrTG9hZENvbXBsZXRlRm9yVGhpc0ZyYW1lKToKKyAgICAg
ICAgKiBsb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5jcHA6CisgICAgICAgICogbG9hZGVyL05hdmln
YXRpb25BY3Rpb24uaDogQWRkIGEgSGlzdG9yeUl0ZW0gZmllbGQuCisKIDIwMTAtMTEtMDQgIFpo
ZW55YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRo
IFJ1c3NlbGwuCkluZGV4OiBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCShyZXZpc2lvbiA3MTQ0OSkKKysr
IFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM4MCw5
ICsyMzgwLDEzIEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNoZWNrTG9hZENvbXBsZXRlRm9yVGgKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChzaG91bGRSZXNldCAmJiBpdGVtKQogICAgICAg
ICAgICAgICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIHBhZ2UtPmJhY2tGb3J3YXJkKCktPnNldEN1cnJlbnRJdGVtKGl0ZW0uZ2V0KCkp
OwotICAgICAgICAgICAgICAgICAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBtX2ZyYW1lLT5zZXR0
aW5ncygpOwotICAgICAgICAgICAgICAgICAgICBwYWdlLT5zZXRHbG9iYWxIaXN0b3J5SXRlbSgo
IXNldHRpbmdzIHx8IHNldHRpbmdzLT5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkpID8gMCA6IGl0
ZW0uZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICAvLyBEbyBub3QgY2hhbmdlIHRoZSBiYWNr
Rm9yd2FyZCBjb250cm9sbGVyIGlmIGl0IGlzIGFscmVhZHkgbG9hZGluZyBhIG5ldyBVUkwuCisg
ICAgICAgICAgICAgICAgICAgIGlmICghcGRsLT50cmlnZ2VyaW5nQWN0aW9uKCkuaXNFbXB0eSgp
CisgICAgICAgICAgICAgICAgICAgICAgICAmJiBwZGwtPnRyaWdnZXJpbmdBY3Rpb24oKS5oaXN0
b3J5SXRlbSgpID09IHBhZ2UtPmJhY2tGb3J3YXJkKCktPmN1cnJlbnRJdGVtKCkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHBhZ2UtPmJhY2tGb3J3YXJkKCktPnNldEN1cnJlbnRJdGVtKGl0
ZW0uZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgU2V0dGluZ3MqIHNldHRpbmdzID0g
bV9mcmFtZS0+c2V0dGluZ3MoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2UtPnNldEds
b2JhbEhpc3RvcnlJdGVtKCghc2V0dGluZ3MgfHwgc2V0dGluZ3MtPnByaXZhdGVCcm93c2luZ0Vu
YWJsZWQoKSkgPyAwIDogaXRlbS5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTMyMDAsMTAg
KzMyMDQsMTAgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bmF2aWdhdGVUb0RpZmZlcmVudERvYwogICAg
ICAgICAvLyBleHRyZW1lbHkgcmFyZSwgYnV0IGluIHRoYXQgY2FzZSB0aGUgdXNlciB3aWxsIGdl
dCBhbiBlcnJvciBvbiB0aGUgbmF2aWdhdGlvbi4KICAgICAgICAgCiAgICAgICAgIGlmIChSZXNv
dXJjZUhhbmRsZTo6d2lsbExvYWRGcm9tQ2FjaGUocmVxdWVzdCwgbV9mcmFtZSkpCi0gICAgICAg
ICAgICBhY3Rpb24gPSBOYXZpZ2F0aW9uQWN0aW9uKGl0ZW1VUkwsIGxvYWRUeXBlLCBmYWxzZSk7
CisgICAgICAgICAgICBhY3Rpb24gPSBOYXZpZ2F0aW9uQWN0aW9uKGl0ZW1VUkwsIGxvYWRUeXBl
LCBmYWxzZSwgMCwgaXRlbSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgcmVxdWVzdC5z
ZXRDYWNoZVBvbGljeShSZWxvYWRJZ25vcmluZ0NhY2hlRGF0YSk7Ci0gICAgICAgICAgICBhY3Rp
b24gPSBOYXZpZ2F0aW9uQWN0aW9uKGl0ZW1VUkwsIE5hdmlnYXRpb25UeXBlRm9ybVJlc3VibWl0
dGVkKTsKKyAgICAgICAgICAgIGFjdGlvbiA9IE5hdmlnYXRpb25BY3Rpb24oaXRlbVVSTCwgTmF2
aWdhdGlvblR5cGVGb3JtUmVzdWJtaXR0ZWQsIGl0ZW0pOwogICAgICAgICB9CiAgICAgfSBlbHNl
IHsKICAgICAgICAgc3dpdGNoIChsb2FkVHlwZSkgewpAQCAtMzIyOCw3ICszMjMyLDcgQEAgdm9p
ZCBGcmFtZUxvYWRlcjo6bmF2aWdhdGVUb0RpZmZlcmVudERvYwogICAgICAgICAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAKLSAgICAgICAgYWN0aW9uID0gTmF2aWdh
dGlvbkFjdGlvbihpdGVtT3JpZ2luYWxVUkwsIGxvYWRUeXBlLCBmYWxzZSk7CisgICAgICAgIGFj
dGlvbiA9IE5hdmlnYXRpb25BY3Rpb24oaXRlbU9yaWdpbmFsVVJMLCBsb2FkVHlwZSwgZmFsc2Us
IDAsIGl0ZW0pOwogICAgIH0KICAgICAKICAgICBpZiAoIWFkZGVkRXh0cmFGaWVsZHMpCkluZGV4
OiBXZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmNwcAkocmV2aXNpb24gNzE0NDkpCisrKyBXZWJD
b3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgsNiAr
NTgsMTMgQEAgTmF2aWdhdGlvbkFjdGlvbjo6TmF2aWdhdGlvbkFjdGlvbihjb25zdAogewogfQog
CitOYXZpZ2F0aW9uQWN0aW9uOjpOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IEtVUkwmIHVybCwgTmF2
aWdhdGlvblR5cGUgdHlwZSwgUGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4gaGlzdG9yeUl0ZW0pCisg
ICAgOiBtX1VSTCh1cmwpCisgICAgLCBtX3R5cGUodHlwZSkKKyAgICAsIG1faGlzdG9yeUl0ZW0o
aGlzdG9yeUl0ZW0pCit7Cit9CisKIE5hdmlnYXRpb25BY3Rpb246Ok5hdmlnYXRpb25BY3Rpb24o
Y29uc3QgS1VSTCYgdXJsLCBGcmFtZUxvYWRUeXBlIGZyYW1lTG9hZFR5cGUsCiAgICAgICAgIGJv
b2wgaXNGb3JtU3VibWlzc2lvbikKICAgICA6IG1fVVJMKHVybCkKQEAgLTgwLDQgKzg3LDEzIEBA
IE5hdmlnYXRpb25BY3Rpb246Ok5hdmlnYXRpb25BY3Rpb24oY29uc3QKIHsKIH0KIAorTmF2aWdh
dGlvbkFjdGlvbjo6TmF2aWdhdGlvbkFjdGlvbihjb25zdCBLVVJMJiB1cmwsIEZyYW1lTG9hZFR5
cGUgZnJhbWVMb2FkVHlwZSwKKyAgICAgICAgYm9vbCBpc0Zvcm1TdWJtaXNzaW9uLCBQYXNzUmVm
UHRyPEV2ZW50PiBldmVudCwgUGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4gaGlzdG9yeUl0ZW0pCisg
ICAgOiBtX1VSTCh1cmwpCisgICAgLCBtX3R5cGUobmF2aWdhdGlvblR5cGUoZnJhbWVMb2FkVHlw
ZSwgaXNGb3JtU3VibWlzc2lvbiwgZXZlbnQpKQorICAgICwgbV9ldmVudChldmVudCkKKyAgICAs
IG1faGlzdG9yeUl0ZW0oaGlzdG9yeUl0ZW0pCit7Cit9CisKIH0KSW5kZXg6IFdlYkNvcmUvbG9h
ZGVyL05hdmlnYXRpb25BY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9OYXZp
Z2F0aW9uQWN0aW9uLmgJKHJldmlzaW9uIDcxNDQ5KQorKysgV2ViQ29yZS9sb2FkZXIvTmF2aWdh
dGlvbkFjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAKICNpbmNsdWRl
ICJFdmVudC5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyVHlwZXMuaCIKKyNpbmNsdWRlICJIaXN0
b3J5SXRlbS5oIgogI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgog
CkBAIC00MCwyMCArNDEsMjQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHB1YmxpYzoKICAg
ICAgICAgTmF2aWdhdGlvbkFjdGlvbigpOwogICAgICAgICBOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0
IEtVUkwmLCBOYXZpZ2F0aW9uVHlwZSk7CisgICAgICAgIE5hdmlnYXRpb25BY3Rpb24oY29uc3Qg
S1VSTCYsIE5hdmlnYXRpb25UeXBlLCBQYXNzUmVmUHRyPEhpc3RvcnlJdGVtPik7CiAgICAgICAg
IE5hdmlnYXRpb25BY3Rpb24oY29uc3QgS1VSTCYsIEZyYW1lTG9hZFR5cGUsIGJvb2wgaXNGb3Jt
U3VibWlzc2lvbik7CiAgICAgICAgIE5hdmlnYXRpb25BY3Rpb24oY29uc3QgS1VSTCYsIE5hdmln
YXRpb25UeXBlLCBQYXNzUmVmUHRyPEV2ZW50Pik7CiAgICAgICAgIE5hdmlnYXRpb25BY3Rpb24o
Y29uc3QgS1VSTCYsIEZyYW1lTG9hZFR5cGUsIGJvb2wgaXNGb3JtU3VibWlzc2lvbiwgUGFzc1Jl
ZlB0cjxFdmVudD4pOworICAgICAgICBOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IEtVUkwmLCBGcmFt
ZUxvYWRUeXBlLCBib29sIGlzRm9ybVN1Ym1pc3Npb24sIFBhc3NSZWZQdHI8RXZlbnQ+LCBQYXNz
UmVmUHRyPEhpc3RvcnlJdGVtPik7CiAKICAgICAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyBy
ZXR1cm4gbV9VUkwuaXNFbXB0eSgpOyB9CiAKICAgICAgICAgS1VSTCB1cmwoKSBjb25zdCB7IHJl
dHVybiBtX1VSTDsgfQogICAgICAgICBOYXZpZ2F0aW9uVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1
cm4gbV90eXBlOyB9CiAgICAgICAgIGNvbnN0IEV2ZW50KiBldmVudCgpIGNvbnN0IHsgcmV0dXJu
IG1fZXZlbnQuZ2V0KCk7IH0KKyAgICAgICAgY29uc3QgSGlzdG9yeUl0ZW0qIGhpc3RvcnlJdGVt
KCkgY29uc3QgeyByZXR1cm4gbV9oaXN0b3J5SXRlbS5nZXQoKTsgfQogCiAgICAgcHJpdmF0ZToK
ICAgICAgICAgS1VSTCBtX1VSTDsKICAgICAgICAgTmF2aWdhdGlvblR5cGUgbV90eXBlOwogICAg
ICAgICBSZWZQdHI8RXZlbnQ+IG1fZXZlbnQ7CisgICAgICAgIFJlZlB0cjxIaXN0b3J5SXRlbT4g
bV9oaXN0b3J5SXRlbTsKICAgICB9OwogCiB9CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA3MTQ0OSkKKysr
IExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisy
MDEwLTExLTA5ICBDaGFybGllIFJlaXMgIDxjcmVpc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQXZvaWRzIHVwZGF0aW5nIGJh
Y2svZm9yd2FyZCBsaXN0IG9uIGEgY2FuY2VsZWQgbmF2aWdhdGlvbiBpZiBhIG5ldworICAgICAg
ICBuYXZpZ2F0aW9uIGlzIGFscmVhZHkgaW4gcHJvY2Vzcy4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4ODEyCisKKyAgICAgICAgKiBodHRwL3Rlc3Rz
L25hdmlnYXRpb24vYmFjay10d2ljZS13aXRob3V0LWNvbW1pdC5odG1sOgorICAgICAgICAqIGh0
dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNvdXJjZXMvYmFjay10d2ljZS1wYWdlLTIuaHRtbDoKKyAg
ICAgICAgKiBodHRwL3Rlc3RzL25hdmlnYXRpb24vcmVzb3VyY2VzL2JhY2stdHdpY2UtcGFnZS0z
Lmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2JhY2stdHdpY2Utd2l0aG91
dC1jb21taXQtZXhwZWN0ZWQudHh0OgorCiAyMDEwLTExLTA1ICBNaWhhaSBQYXJwYXJpdGEgIDxt
aWhhaXBAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQ7IHRlc3RfZXhwZWN0YXRp
b25zIGZpeC4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9iYWNrLXR3
aWNlLXdpdGhvdXQtY29tbWl0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vYmFjay10d2ljZS13aXRob3V0LWNvbW1pdC1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24v
YmFjay10d2ljZS13aXRob3V0LWNvbW1pdC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsOSBAQAorVGhpcyB0ZXN0IGNoZWNrcyB0aGF0IGdvaW5nIGJhY2sgdHdpY2Ugd2l0aG91
dCBjb21taXR0aW5nIGRvZXNuJ3QgY29ycnVwdCB0aGUgYmFjay9mb3J3YXJkIGxpc3QuCisKK0lm
IHRlc3RpbmcgbWFudWFsbHksIGNsaWNrIGhlcmUuCisKKz09PT09PT09PT09PT09IEJhY2sgRm9y
d2FyZCBMaXN0ID09PT09PT09PT09PT09CitjdXJyLT4gIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9u
YXZpZ2F0aW9uL2JhY2stdHdpY2Utd2l0aG91dC1jb21taXQuaHRtbCAgKipuYXYgdGFyZ2V0KioK
KyAgICAgICAgaHR0cDovLzEyNy4wLjAuMTo4MDAwL25hdmlnYXRpb24vcmVzb3VyY2VzL2JhY2st
dHdpY2UtcGFnZS0yLmh0bWwgICoqbmF2IHRhcmdldCoqCisgICAgICAgIGh0dHA6Ly8xMjcuMC4w
LjE6ODAwMC9uYXZpZ2F0aW9uL3Jlc291cmNlcy9iYWNrLXR3aWNlLXBhZ2UtMy5odG1sICAqKm5h
diB0YXJnZXQqKgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9iYWNrLXR3aWNlLXdp
dGhvdXQtY29tbWl0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9u
YXZpZ2F0aW9uL2JhY2stdHdpY2Utd2l0aG91dC1jb21taXQuaHRtbAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9iYWNrLXR3aWNlLXdpdGhvdXQtY29t
bWl0Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjIgQEAKKzxzY3JpcHQ+CitpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEJhY2tGb3J3YXJkTGlzdCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKKworICAgIC8vIFZpc2l0IHR3byBwYWdlcywgdGhlbiBnbyBiYWNrIHRvIHBhZ2UgMiwgd2hp
Y2ggaGFzIGEgc2xvdyBmcmFtZSB0aGUgc2Vjb25kIHRpbWUuCisgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIucXVldWVMb2FkKCJyZXNvdXJjZXMvYmFjay10d2ljZS1wYWdlLTIuaHRtbCIpOworICAg
IGxheW91dFRlc3RDb250cm9sbGVyLnF1ZXVlTG9hZCgicmVzb3VyY2VzL2JhY2stdHdpY2UtcGFn
ZS0zLmh0bWwiKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5xdWV1ZUJhY2tOYXZpZ2F0aW9u
KDEpOworCisgICAgLy8gTm93IGNvbXBldGUgd2l0aCBwYWdlIDIncyBoaXN0b3J5LmJhY2soKSBj
YWxsLCB0byBhIGRpZmZlcmVudCBoaXN0b3J5IGl0ZW0uCisgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIucXVldWVCYWNrTmF2aWdhdGlvbigyKTsKKworICAgIC8vIFJlcGVhdCB0aGUgdGVzdCwgYnV0
IGNvbXBldGUgd2l0aCBoaXN0b3J5LmJhY2soKSB0byB0aGUgc2FtZSBoaXN0b3J5IGl0ZW0uCisg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIucXVldWVMb2FkKCJyZXNvdXJjZXMvYmFjay10d2ljZS1w
YWdlLTIuaHRtbCIpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLnF1ZXVlTG9hZCgicmVzb3Vy
Y2VzL2JhY2stdHdpY2UtcGFnZS0zLmh0bWwiKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5x
dWV1ZUJhY2tOYXZpZ2F0aW9uKDEpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLnF1ZXVlQmFj
a05hdmlnYXRpb24oMSk7Cit9Cis8L3NjcmlwdD4KKzxwPlRoaXMgdGVzdCBjaGVja3MgdGhhdCBn
b2luZyBiYWNrIHR3aWNlIHdpdGhvdXQgY29tbWl0dGluZyBkb2Vzbid0IGNvcnJ1cHQgdGhlIGJh
Y2svZm9yd2FyZCBsaXN0LgorPHA+SWYgdGVzdGluZyBtYW51YWxseSwgPGEgaHJlZj0icmVzb3Vy
Y2VzL2JhY2stdHdpY2UtcGFnZS0yLmh0bWwiPmNsaWNrIGhlcmU8L2E+LgpJbmRleDogTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Jlc291cmNlcy9iYWNrLXR3aWNlLXBhZ2UtMi5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNv
dXJjZXMvYmFjay10d2ljZS1wYWdlLTIuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNvdXJjZXMvYmFjay10d2ljZS1wYWdlLTIuaHRtbAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMSBAQAorPHA+UGFnZSAyLgorPHA+VGhpcyB0ZXN0IGNo
ZWNrcyB0aGF0IGdvaW5nIGJhY2sgdHdpY2Ugd2l0aG91dCBjb21taXR0aW5nIGRvZXNuJ3QgY29y
cnVwdCB0aGUgYmFjay9mb3J3YXJkIGxpc3QuCis8cD5JZiB0ZXN0aW5nIG1hbnVhbGx5LCA8YSBo
cmVmPSJiYWNrLXR3aWNlLXBhZ2UtMy5odG1sIj5jbGljayBoZXJlPC9hPi4KKworPHNjcmlwdD4K
K2lmICghd2luZG93LmxvY2FsU3RvcmFnZS5zdGFydGVkKSB7CisgICAgd2luZG93LmxvY2FsU3Rv
cmFnZS5zdGFydGVkID0gdHJ1ZTsKK30gZWxzZSB7CisgICAgZGVsZXRlIHdpbmRvdy5sb2NhbFN0
b3JhZ2Uuc3RhcnRlZDsKKworICAgIC8vIFRoZSBzZWNvbmQgdGltZSB3ZSB2aXNpdCB0aGUgcGFn
ZSAoaS5lLiwgd2hpbGUgZ29pbmcgYmFjayksIGluc2VydCBhbgorICAgIC8vIGlmcmFtZSB0aGF0
IGRvZXNuJ3QgY29tbWl0IGR1cmluZyB0aGUgdGVzdC4KKyAgICB2YXIgZiA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImlmcmFtZSIpOworICAgIGYuc3JjID0gIi4uLy4uL2hpc3RvcnkvcmVzb3Vy
Y2VzL2JhY2stZHVyaW5nLW9ubG9hZC1odW5nLXBhZ2UucGhwIjsKKyAgICBkb2N1bWVudC5ib2R5
LmFwcGVuZENoaWxkKGYpOworCisgICAgLy8gTm93IGdvIGJhY2suICBUaGlzIHdpbGwgY29tcGV0
ZSB3aXRoIHRoZSBzZWNvbmQgcXVldWVCYWNrTmF2aWdhdGlvbgorICAgIC8vIGZyb20gYmFjay10
d2ljZS13aXRob3V0LWNvbW1pdC5odG1sLgorICAgIGhpc3RvcnkuYmFjaygpOworfQorPC9zY3Jp
cHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcmVzb3VyY2VzL2Jh
Y2stdHdpY2UtcGFnZS0zLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9uYXZpZ2F0aW9uL3Jlc291cmNlcy9iYWNrLXR3aWNlLXBhZ2UtMy5odG1sCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Jlc291cmNlcy9iYWNrLXR3
aWNlLXBhZ2UtMy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMgQEAKKzxwPlBhZ2UgMy4K
KzxwPlRoaXMgdGVzdCBjaGVja3MgdGhhdCBnb2luZyBiYWNrIHR3aWNlIHdpdGhvdXQgY29tbWl0
dGluZyBkb2Vzbid0IGNvcnJ1cHQgdGhlIGJhY2svZm9yd2FyZCBsaXN0LgorPHA+SWYgdGVzdGlu
ZyBtYW51YWxseSwgaG9sZCBkb3duIHRoZSBiYWNrIGtleWJvYXJkIHNob3J0Y3V0IG9yIGNsaWNr
IGJhY2sgdHdpY2UgcXVpY2tseS4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74136</attachid>
            <date>2010-11-17 11:23:55 -0800</date>
            <delta_ts>2010-11-17 12:07:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-48812-20101117112354.patch</filename>
            <type>text/plain</type>
            <size>10716</size>
            <attacher name="Charles Reis">creis</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MTQ0OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMTAtMTEtMTcgIENoYXJsaWUgUmVpcyAgPGNyZWlzQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBG
cmFtZUxvYWRlcjo6Y2hlY2tMb2FkQ29tcGxldGVGb3JUaGlzRnJhbWUgdXNlcyB3cm9uZyBoaXN0
b3J5IGl0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTQ4ODEyCisKKyAgICAgICAgQXZvaWRzIHVwZGF0aW5nIGJhY2svZm9yd2FyZCBsaXN0IG9uIGEg
Y2FuY2VsZWQgbmF2aWdhdGlvbiBpZiBhIG5ldworICAgICAgICBuYXZpZ2F0aW9uIGlzIGFscmVh
ZHkgaW4gcHJvZ3Jlc3MuCisKKyAgICAgICAgVGVzdDogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2Jh
Y2stdHdpY2Utd2l0aG91dC1jb21taXQuaHRtbAorCisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjaGVja0xvYWRDb21wbGV0
ZUZvclRoaXNGcmFtZSk6CisgICAgICAgICogbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uY3BwOgor
ICAgICAgICAqIGxvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmg6IEFkZCBhIEhpc3RvcnlJdGVtIGZp
ZWxkIGFuZCByZWZhY3RvcnMgb3ZlcmxvYWRzLgorCiAyMDEwLTExLTA0ICBaaGVueWFvIE1vICA8
em1vQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSdXNzZWxsLgpJ
bmRleDogV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNpb24gNzE0NDkpCisrKyBXZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzODAsOSArMjM4MCwxMiBA
QCB2b2lkIEZyYW1lTG9hZGVyOjpjaGVja0xvYWRDb21wbGV0ZUZvclRoCiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBpZiAoc2hvdWxkUmVzZXQgJiYgaXRlbSkKICAgICAgICAgICAgICAgICBp
ZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkgewotICAgICAgICAgICAgICAgICAgICBw
YWdlLT5iYWNrRm9yd2FyZCgpLT5zZXRDdXJyZW50SXRlbShpdGVtLmdldCgpKTsKLSAgICAgICAg
ICAgICAgICAgICAgU2V0dGluZ3MqIHNldHRpbmdzID0gbV9mcmFtZS0+c2V0dGluZ3MoKTsKLSAg
ICAgICAgICAgICAgICAgICAgcGFnZS0+c2V0R2xvYmFsSGlzdG9yeUl0ZW0oKCFzZXR0aW5ncyB8
fCBzZXR0aW5ncy0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpKSA/IDAgOiBpdGVtLmdldCgpKTsK
KyAgICAgICAgICAgICAgICAgICAgLy8gRG8gbm90IGNoYW5nZSB0aGUgYmFja0ZvcndhcmQgY29u
dHJvbGxlciBpZiBpdCBpcyBhbHJlYWR5IGxvYWRpbmcgYSBuZXcgVVJMLgorICAgICAgICAgICAg
ICAgICAgICBpZiAocGRsLT50cmlnZ2VyaW5nQWN0aW9uKCkuaGlzdG9yeUl0ZW0oKSA9PSBwYWdl
LT5iYWNrRm9yd2FyZCgpLT5jdXJyZW50SXRlbSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBwYWdlLT5iYWNrRm9yd2FyZCgpLT5zZXRDdXJyZW50SXRlbShpdGVtLmdldCgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IG1fZnJhbWUtPnNldHRpbmdz
KCk7CisgICAgICAgICAgICAgICAgICAgICAgICBwYWdlLT5zZXRHbG9iYWxIaXN0b3J5SXRlbSgo
IXNldHRpbmdzIHx8IHNldHRpbmdzLT5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkpID8gMCA6IGl0
ZW0uZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0zMjAwLDEwICszMjAzLDEwIEBAIHZvaWQg
RnJhbWVMb2FkZXI6Om5hdmlnYXRlVG9EaWZmZXJlbnREb2MKICAgICAgICAgLy8gZXh0cmVtZWx5
IHJhcmUsIGJ1dCBpbiB0aGF0IGNhc2UgdGhlIHVzZXIgd2lsbCBnZXQgYW4gZXJyb3Igb24gdGhl
IG5hdmlnYXRpb24uCiAgICAgICAgIAogICAgICAgICBpZiAoUmVzb3VyY2VIYW5kbGU6OndpbGxM
b2FkRnJvbUNhY2hlKHJlcXVlc3QsIG1fZnJhbWUpKQotICAgICAgICAgICAgYWN0aW9uID0gTmF2
aWdhdGlvbkFjdGlvbihpdGVtVVJMLCBsb2FkVHlwZSwgZmFsc2UpOworICAgICAgICAgICAgYWN0
aW9uID0gTmF2aWdhdGlvbkFjdGlvbihpdGVtVVJMLCBsb2FkVHlwZSwgaXRlbSk7CiAgICAgICAg
IGVsc2UgewogICAgICAgICAgICAgcmVxdWVzdC5zZXRDYWNoZVBvbGljeShSZWxvYWRJZ25vcmlu
Z0NhY2hlRGF0YSk7Ci0gICAgICAgICAgICBhY3Rpb24gPSBOYXZpZ2F0aW9uQWN0aW9uKGl0ZW1V
UkwsIE5hdmlnYXRpb25UeXBlRm9ybVJlc3VibWl0dGVkKTsKKyAgICAgICAgICAgIGFjdGlvbiA9
IE5hdmlnYXRpb25BY3Rpb24oaXRlbVVSTCwgTmF2aWdhdGlvblR5cGVGb3JtUmVzdWJtaXR0ZWQs
IGl0ZW0pOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgc3dpdGNoIChsb2FkVHlw
ZSkgewpAQCAtMzIyOCw3ICszMjMxLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bmF2aWdhdGVUb0Rp
ZmZlcmVudERvYwogICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAg
ICB9CiAKLSAgICAgICAgYWN0aW9uID0gTmF2aWdhdGlvbkFjdGlvbihpdGVtT3JpZ2luYWxVUkws
IGxvYWRUeXBlLCBmYWxzZSk7CisgICAgICAgIGFjdGlvbiA9IE5hdmlnYXRpb25BY3Rpb24oaXRl
bU9yaWdpbmFsVVJMLCBsb2FkVHlwZSwgaXRlbSk7CiAgICAgfQogICAgIAogICAgIGlmICghYWRk
ZWRFeHRyYUZpZWxkcykKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uY3BwCShyZXZp
c2lvbiA3MTQ0OSkKKysrIFdlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MiwyMyArNTIsMjUgQEAgTmF2aWdhdGlvbkFjdGlvbjo6TmF2aWdhdGlv
bkFjdGlvbigpCiB7CiB9CiAKLU5hdmlnYXRpb25BY3Rpb246Ok5hdmlnYXRpb25BY3Rpb24oY29u
c3QgS1VSTCYgdXJsLCBOYXZpZ2F0aW9uVHlwZSB0eXBlKQorTmF2aWdhdGlvbkFjdGlvbjo6TmF2
aWdhdGlvbkFjdGlvbihjb25zdCBLVVJMJiB1cmwsIE5hdmlnYXRpb25UeXBlIHR5cGUsIFBhc3NS
ZWZQdHI8RXZlbnQ+IGV2ZW50KQogICAgIDogbV9VUkwodXJsKQogICAgICwgbV90eXBlKHR5cGUp
CisgICAgLCBtX2V2ZW50KGV2ZW50KQogewogfQogCi1OYXZpZ2F0aW9uQWN0aW9uOjpOYXZpZ2F0
aW9uQWN0aW9uKGNvbnN0IEtVUkwmIHVybCwgRnJhbWVMb2FkVHlwZSBmcmFtZUxvYWRUeXBlLAot
ICAgICAgICBib29sIGlzRm9ybVN1Ym1pc3Npb24pCitOYXZpZ2F0aW9uQWN0aW9uOjpOYXZpZ2F0
aW9uQWN0aW9uKGNvbnN0IEtVUkwmIHVybCwgTmF2aWdhdGlvblR5cGUgdHlwZSwgUGFzc1JlZlB0
cjxIaXN0b3J5SXRlbT4gaGlzdG9yeUl0ZW0pCiAgICAgOiBtX1VSTCh1cmwpCi0gICAgLCBtX3R5
cGUobmF2aWdhdGlvblR5cGUoZnJhbWVMb2FkVHlwZSwgaXNGb3JtU3VibWlzc2lvbiwgMCkpCisg
ICAgLCBtX3R5cGUodHlwZSkKKyAgICAsIG1faGlzdG9yeUl0ZW0oaGlzdG9yeUl0ZW0pCiB7CiB9
CiAKLU5hdmlnYXRpb25BY3Rpb246Ok5hdmlnYXRpb25BY3Rpb24oY29uc3QgS1VSTCYgdXJsLCBO
YXZpZ2F0aW9uVHlwZSB0eXBlLCBQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKK05hdmlnYXRpb25B
Y3Rpb246Ok5hdmlnYXRpb25BY3Rpb24oY29uc3QgS1VSTCYgdXJsLCBGcmFtZUxvYWRUeXBlIGZy
YW1lTG9hZFR5cGUsCisgICAgICAgIFBhc3NSZWZQdHI8SGlzdG9yeUl0ZW0+IGhpc3RvcnlJdGVt
KQogICAgIDogbV9VUkwodXJsKQotICAgICwgbV90eXBlKHR5cGUpCi0gICAgLCBtX2V2ZW50KGV2
ZW50KQorICAgICwgbV90eXBlKG5hdmlnYXRpb25UeXBlKGZyYW1lTG9hZFR5cGUsIGZhbHNlLCAw
KSkKKyAgICAsIG1faGlzdG9yeUl0ZW0oaGlzdG9yeUl0ZW0pCiB7CiB9CiAKSW5kZXg6IFdlYkNv
cmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRl
ci9OYXZpZ2F0aW9uQWN0aW9uLmgJKHJldmlzaW9uIDcxNDQ5KQorKysgV2ViQ29yZS9sb2FkZXIv
TmF2aWdhdGlvbkFjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAKICNp
bmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyVHlwZXMuaCIKKyNpbmNsdWRl
ICJIaXN0b3J5SXRlbS5oIgogI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgogCkBAIC0zOSwyMSArNDAsMjMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNz
IE5hdmlnYXRpb25BY3Rpb24gewogICAgIHB1YmxpYzoKICAgICAgICAgTmF2aWdhdGlvbkFjdGlv
bigpOwotICAgICAgICBOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IEtVUkwmLCBOYXZpZ2F0aW9uVHlw
ZSk7Ci0gICAgICAgIE5hdmlnYXRpb25BY3Rpb24oY29uc3QgS1VSTCYsIEZyYW1lTG9hZFR5cGUs
IGJvb2wgaXNGb3JtU3VibWlzc2lvbik7Ci0gICAgICAgIE5hdmlnYXRpb25BY3Rpb24oY29uc3Qg
S1VSTCYsIE5hdmlnYXRpb25UeXBlLCBQYXNzUmVmUHRyPEV2ZW50Pik7Ci0gICAgICAgIE5hdmln
YXRpb25BY3Rpb24oY29uc3QgS1VSTCYsIEZyYW1lTG9hZFR5cGUsIGJvb2wgaXNGb3JtU3VibWlz
c2lvbiwgUGFzc1JlZlB0cjxFdmVudD4pOworICAgICAgICBOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0
IEtVUkwmLCBOYXZpZ2F0aW9uVHlwZSwgUGFzc1JlZlB0cjxFdmVudD4gPSAwKTsKKyAgICAgICAg
TmF2aWdhdGlvbkFjdGlvbihjb25zdCBLVVJMJiwgTmF2aWdhdGlvblR5cGUsIFBhc3NSZWZQdHI8
SGlzdG9yeUl0ZW0+KTsKKyAgICAgICAgTmF2aWdhdGlvbkFjdGlvbihjb25zdCBLVVJMJiwgRnJh
bWVMb2FkVHlwZSwgUGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4pOworICAgICAgICBOYXZpZ2F0aW9u
QWN0aW9uKGNvbnN0IEtVUkwmLCBGcmFtZUxvYWRUeXBlLCBib29sIGlzRm9ybVN1Ym1pc3Npb24s
IFBhc3NSZWZQdHI8RXZlbnQ+ID0gMCk7CiAKICAgICAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Qg
eyByZXR1cm4gbV9VUkwuaXNFbXB0eSgpOyB9CiAKICAgICAgICAgS1VSTCB1cmwoKSBjb25zdCB7
IHJldHVybiBtX1VSTDsgfQogICAgICAgICBOYXZpZ2F0aW9uVHlwZSB0eXBlKCkgY29uc3QgeyBy
ZXR1cm4gbV90eXBlOyB9CiAgICAgICAgIGNvbnN0IEV2ZW50KiBldmVudCgpIGNvbnN0IHsgcmV0
dXJuIG1fZXZlbnQuZ2V0KCk7IH0KKyAgICAgICAgY29uc3QgSGlzdG9yeUl0ZW0qIGhpc3RvcnlJ
dGVtKCkgY29uc3QgeyByZXR1cm4gbV9oaXN0b3J5SXRlbS5nZXQoKTsgfQogCiAgICAgcHJpdmF0
ZToKICAgICAgICAgS1VSTCBtX1VSTDsKICAgICAgICAgTmF2aWdhdGlvblR5cGUgbV90eXBlOwog
ICAgICAgICBSZWZQdHI8RXZlbnQ+IG1fZXZlbnQ7CisgICAgICAgIFJlZlB0cjxIaXN0b3J5SXRl
bT4gbV9oaXN0b3J5SXRlbTsKICAgICB9OwogCiB9CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA3MTQ0OSkK
KysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBA
CisyMDEwLTExLTE3ICBDaGFybGllIFJlaXMgIDxjcmVpc0BjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRnJhbWVMb2FkZXI6OmNo
ZWNrTG9hZENvbXBsZXRlRm9yVGhpc0ZyYW1lIHVzZXMgd3JvbmcgaGlzdG9yeSBpdGVtCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODgxMgorCisgICAg
ICAgIFRlc3QgdGhhdCB3ZSBhdm9pZCB1cGRhdGluZyBiYWNrL2ZvcndhcmQgbGlzdCBvbiBhIGNh
bmNlbGVkIG5hdmlnYXRpb24KKyAgICAgICAgaWYgYSBuZXcgbmF2aWdhdGlvbiBpcyBhbHJlYWR5
IGluIHByb2Nlc3MuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL25hdmlnYXRpb24vYmFjay10d2lj
ZS13aXRob3V0LWNvbW1pdC5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9i
YWNrLXR3aWNlLXdpdGhvdXQtY29tbWl0LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rl
c3RzL25hdmlnYXRpb24vcmVzb3VyY2VzL2JhY2stdHdpY2UtcGFnZS0yLmh0bWw6CisgICAgICAg
ICogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Jlc291cmNlcy9iYWNrLXR3aWNlLXBhZ2UtMy5odG1s
OgorCiAyMDEwLTExLTA1ICBNaWhhaSBQYXJwYXJpdGEgIDxtaWhhaXBAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFVucmV2aWV3ZWQ7IHRlc3RfZXhwZWN0YXRpb25zIGZpeC4KSW5kZXg6IExheW91
dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9iYWNrLXR3aWNlLXdpdGhvdXQtY29tbWl0LWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRp
b24vYmFjay10d2ljZS13aXRob3V0LWNvbW1pdC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vYmFjay10d2ljZS13aXRob3V0LWNv
bW1pdC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOSBAQAorVGhpcyB0ZXN0
IGNoZWNrcyB0aGF0IGdvaW5nIGJhY2sgdHdpY2Ugd2l0aG91dCBjb21taXR0aW5nIGRvZXNuJ3Qg
Y29ycnVwdCB0aGUgYmFjay9mb3J3YXJkIGxpc3QuCisKK0lmIHRlc3RpbmcgbWFudWFsbHksIGNs
aWNrIGhlcmUuCisKKz09PT09PT09PT09PT09IEJhY2sgRm9yd2FyZCBMaXN0ID09PT09PT09PT09
PT09CitjdXJyLT4gIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9uYXZpZ2F0aW9uL2JhY2stdHdpY2Ut
d2l0aG91dC1jb21taXQuaHRtbCAgKipuYXYgdGFyZ2V0KioKKyAgICAgICAgaHR0cDovLzEyNy4w
LjAuMTo4MDAwL25hdmlnYXRpb24vcmVzb3VyY2VzL2JhY2stdHdpY2UtcGFnZS0yLmh0bWwgICoq
bmF2IHRhcmdldCoqCisgICAgICAgIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9uYXZpZ2F0aW9uL3Jl
c291cmNlcy9iYWNrLXR3aWNlLXBhZ2UtMy5odG1sICAqKm5hdiB0YXJnZXQqKgorPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSW5kZXg6IExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9iYWNrLXR3aWNlLXdpdGhvdXQtY29tbWl0Lmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2JhY2stdHdpY2Ut
d2l0aG91dC1jb21taXQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvbmF2aWdhdGlvbi9iYWNrLXR3aWNlLXdpdGhvdXQtY29tbWl0Lmh0bWwJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMjIgQEAKKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEJhY2tGb3J3YXJkTGlzdCgpOwor
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgIC8vIFZpc2l0IHR3
byBwYWdlcywgdGhlbiBnbyBiYWNrIHRvIHBhZ2UgMiwgd2hpY2ggaGFzIGEgc2xvdyBmcmFtZSB0
aGUgc2Vjb25kIHRpbWUuCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIucXVldWVMb2FkKCJyZXNv
dXJjZXMvYmFjay10d2ljZS1wYWdlLTIuaHRtbCIpOworICAgIGxheW91dFRlc3RDb250cm9sbGVy
LnF1ZXVlTG9hZCgicmVzb3VyY2VzL2JhY2stdHdpY2UtcGFnZS0zLmh0bWwiKTsKKyAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5xdWV1ZUJhY2tOYXZpZ2F0aW9uKDEpOworCisgICAgLy8gTm93IGNv
bXBldGUgd2l0aCBwYWdlIDIncyBoaXN0b3J5LmJhY2soKSBjYWxsLCB0byBhIGRpZmZlcmVudCBo
aXN0b3J5IGl0ZW0uCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIucXVldWVCYWNrTmF2aWdhdGlv
bigyKTsKKworICAgIC8vIFJlcGVhdCB0aGUgdGVzdCwgYnV0IGNvbXBldGUgd2l0aCBoaXN0b3J5
LmJhY2soKSB0byB0aGUgc2FtZSBoaXN0b3J5IGl0ZW0uCisgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIucXVldWVMb2FkKCJyZXNvdXJjZXMvYmFjay10d2ljZS1wYWdlLTIuaHRtbCIpOworICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLnF1ZXVlTG9hZCgicmVzb3VyY2VzL2JhY2stdHdpY2UtcGFnZS0z
Lmh0bWwiKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5xdWV1ZUJhY2tOYXZpZ2F0aW9uKDEp
OworICAgIGxheW91dFRlc3RDb250cm9sbGVyLnF1ZXVlQmFja05hdmlnYXRpb24oMSk7Cit9Cis8
L3NjcmlwdD4KKzxwPlRoaXMgdGVzdCBjaGVja3MgdGhhdCBnb2luZyBiYWNrIHR3aWNlIHdpdGhv
dXQgY29tbWl0dGluZyBkb2Vzbid0IGNvcnJ1cHQgdGhlIGJhY2svZm9yd2FyZCBsaXN0LgorPHA+
SWYgdGVzdGluZyBtYW51YWxseSwgPGEgaHJlZj0icmVzb3VyY2VzL2JhY2stdHdpY2UtcGFnZS0y
Lmh0bWwiPmNsaWNrIGhlcmU8L2E+LgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZp
Z2F0aW9uL3Jlc291cmNlcy9iYWNrLXR3aWNlLXBhZ2UtMi5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNvdXJjZXMvYmFjay10d2ljZS1wYWdl
LTIuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlv
bi9yZXNvdXJjZXMvYmFjay10d2ljZS1wYWdlLTIuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwyMSBAQAorPHA+UGFnZSAyLgorPHA+VGhpcyB0ZXN0IGNoZWNrcyB0aGF0IGdvaW5nIGJhY2sg
dHdpY2Ugd2l0aG91dCBjb21taXR0aW5nIGRvZXNuJ3QgY29ycnVwdCB0aGUgYmFjay9mb3J3YXJk
IGxpc3QuCis8cD5JZiB0ZXN0aW5nIG1hbnVhbGx5LCA8YSBocmVmPSJiYWNrLXR3aWNlLXBhZ2Ut
My5odG1sIj5jbGljayBoZXJlPC9hPi4KKworPHNjcmlwdD4KK2lmICghd2luZG93LmxvY2FsU3Rv
cmFnZS5zdGFydGVkKSB7CisgICAgd2luZG93LmxvY2FsU3RvcmFnZS5zdGFydGVkID0gdHJ1ZTsK
K30gZWxzZSB7CisgICAgZGVsZXRlIHdpbmRvdy5sb2NhbFN0b3JhZ2Uuc3RhcnRlZDsKKworICAg
IC8vIFRoZSBzZWNvbmQgdGltZSB3ZSB2aXNpdCB0aGUgcGFnZSAoaS5lLiwgd2hpbGUgZ29pbmcg
YmFjayksIGluc2VydCBhbgorICAgIC8vIGlmcmFtZSB0aGF0IGRvZXNuJ3QgY29tbWl0IGR1cmlu
ZyB0aGUgdGVzdC4KKyAgICB2YXIgZiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIp
OworICAgIGYuc3JjID0gIi4uLy4uL2hpc3RvcnkvcmVzb3VyY2VzL2JhY2stZHVyaW5nLW9ubG9h
ZC1odW5nLXBhZ2UucGhwIjsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGYpOworCisg
ICAgLy8gTm93IGdvIGJhY2suICBUaGlzIHdpbGwgY29tcGV0ZSB3aXRoIHRoZSBzZWNvbmQgcXVl
dWVCYWNrTmF2aWdhdGlvbgorICAgIC8vIGZyb20gYmFjay10d2ljZS13aXRob3V0LWNvbW1pdC5o
dG1sLgorICAgIGhpc3RvcnkuYmFjaygpOworfQorPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcmVzb3VyY2VzL2JhY2stdHdpY2UtcGFnZS0zLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Jlc291cmNl
cy9iYWNrLXR3aWNlLXBhZ2UtMy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9uYXZpZ2F0aW9uL3Jlc291cmNlcy9iYWNrLXR3aWNlLXBhZ2UtMy5odG1sCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDMgQEAKKzxwPlBhZ2UgMy4KKzxwPlRoaXMgdGVzdCBjaGVja3Mg
dGhhdCBnb2luZyBiYWNrIHR3aWNlIHdpdGhvdXQgY29tbWl0dGluZyBkb2Vzbid0IGNvcnJ1cHQg
dGhlIGJhY2svZm9yd2FyZCBsaXN0LgorPHA+SWYgdGVzdGluZyBtYW51YWxseSwgaG9sZCBkb3du
IHRoZSBiYWNrIGtleWJvYXJkIHNob3J0Y3V0IG9yIGNsaWNrIGJhY2sgdHdpY2UgcXVpY2tseS4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74142</attachid>
            <date>2010-11-17 12:05:20 -0800</date>
            <delta_ts>2010-11-17 15:16:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-48812-20101117120519.patch</filename>
            <type>text/plain</type>
            <size>10720</size>
            <attacher name="Charles Reis">creis</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MTQ0OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMTAtMTEtMTcgIENoYXJsaWUgUmVpcyAgPGNyZWlzQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBG
cmFtZUxvYWRlcjo6Y2hlY2tMb2FkQ29tcGxldGVGb3JUaGlzRnJhbWUgdXNlcyB3cm9uZyBoaXN0
b3J5IGl0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTQ4ODEyCisKKyAgICAgICAgQXZvaWRzIHVwZGF0aW5nIGJhY2svZm9yd2FyZCBsaXN0IG9uIGEg
Y2FuY2VsZWQgbmF2aWdhdGlvbiBpZiBhIG5ldworICAgICAgICBuYXZpZ2F0aW9uIGlzIGFscmVh
ZHkgaW4gcHJvZ3Jlc3MuCisKKyAgICAgICAgVGVzdDogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2Jh
Y2stdHdpY2Utd2l0aG91dC1jb21taXQuaHRtbAorCisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjaGVja0xvYWRDb21wbGV0
ZUZvclRoaXNGcmFtZSk6CisgICAgICAgICogbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uY3BwOgor
ICAgICAgICAqIGxvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmg6IEFkZCBhIEhpc3RvcnlJdGVtIGZp
ZWxkIGFuZCByZWZhY3RvcnMgb3ZlcmxvYWRzLgorCiAyMDEwLTExLTA0ICBaaGVueWFvIE1vICA8
em1vQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSdXNzZWxsLgpJ
bmRleDogV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNpb24gNzE0NDkpCisrKyBXZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzODAsOSArMjM4MCwxMiBA
QCB2b2lkIEZyYW1lTG9hZGVyOjpjaGVja0xvYWRDb21wbGV0ZUZvclRoCiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBpZiAoc2hvdWxkUmVzZXQgJiYgaXRlbSkKICAgICAgICAgICAgICAgICBp
ZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkgewotICAgICAgICAgICAgICAgICAgICBw
YWdlLT5iYWNrRm9yd2FyZCgpLT5zZXRDdXJyZW50SXRlbShpdGVtLmdldCgpKTsKLSAgICAgICAg
ICAgICAgICAgICAgU2V0dGluZ3MqIHNldHRpbmdzID0gbV9mcmFtZS0+c2V0dGluZ3MoKTsKLSAg
ICAgICAgICAgICAgICAgICAgcGFnZS0+c2V0R2xvYmFsSGlzdG9yeUl0ZW0oKCFzZXR0aW5ncyB8
fCBzZXR0aW5ncy0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpKSA/IDAgOiBpdGVtLmdldCgpKTsK
KyAgICAgICAgICAgICAgICAgICAgLy8gRG8gbm90IGNoYW5nZSB0aGUgYmFja0ZvcndhcmQgY29u
dHJvbGxlciBpZiBpdCBpcyBhbHJlYWR5IGxvYWRpbmcgYSBuZXcgVVJMLgorICAgICAgICAgICAg
ICAgICAgICBpZiAocGRsLT50cmlnZ2VyaW5nQWN0aW9uKCkuaGlzdG9yeUl0ZW0oKSA9PSBwYWdl
LT5iYWNrRm9yd2FyZCgpLT5jdXJyZW50SXRlbSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBwYWdlLT5iYWNrRm9yd2FyZCgpLT5zZXRDdXJyZW50SXRlbShpdGVtLmdldCgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IG1fZnJhbWUtPnNldHRpbmdz
KCk7CisgICAgICAgICAgICAgICAgICAgICAgICBwYWdlLT5zZXRHbG9iYWxIaXN0b3J5SXRlbSgo
IXNldHRpbmdzIHx8IHNldHRpbmdzLT5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkpID8gMCA6IGl0
ZW0uZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0zMjAwLDEwICszMjAzLDEwIEBAIHZvaWQg
RnJhbWVMb2FkZXI6Om5hdmlnYXRlVG9EaWZmZXJlbnREb2MKICAgICAgICAgLy8gZXh0cmVtZWx5
IHJhcmUsIGJ1dCBpbiB0aGF0IGNhc2UgdGhlIHVzZXIgd2lsbCBnZXQgYW4gZXJyb3Igb24gdGhl
IG5hdmlnYXRpb24uCiAgICAgICAgIAogICAgICAgICBpZiAoUmVzb3VyY2VIYW5kbGU6OndpbGxM
b2FkRnJvbUNhY2hlKHJlcXVlc3QsIG1fZnJhbWUpKQotICAgICAgICAgICAgYWN0aW9uID0gTmF2
aWdhdGlvbkFjdGlvbihpdGVtVVJMLCBsb2FkVHlwZSwgZmFsc2UpOworICAgICAgICAgICAgYWN0
aW9uID0gTmF2aWdhdGlvbkFjdGlvbihpdGVtVVJMLCBsb2FkVHlwZSwgaXRlbSk7CiAgICAgICAg
IGVsc2UgewogICAgICAgICAgICAgcmVxdWVzdC5zZXRDYWNoZVBvbGljeShSZWxvYWRJZ25vcmlu
Z0NhY2hlRGF0YSk7Ci0gICAgICAgICAgICBhY3Rpb24gPSBOYXZpZ2F0aW9uQWN0aW9uKGl0ZW1V
UkwsIE5hdmlnYXRpb25UeXBlRm9ybVJlc3VibWl0dGVkKTsKKyAgICAgICAgICAgIGFjdGlvbiA9
IE5hdmlnYXRpb25BY3Rpb24oaXRlbVVSTCwgTmF2aWdhdGlvblR5cGVGb3JtUmVzdWJtaXR0ZWQs
IGl0ZW0pOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgc3dpdGNoIChsb2FkVHlw
ZSkgewpAQCAtMzIyOCw3ICszMjMxLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bmF2aWdhdGVUb0Rp
ZmZlcmVudERvYwogICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAg
ICB9CiAKLSAgICAgICAgYWN0aW9uID0gTmF2aWdhdGlvbkFjdGlvbihpdGVtT3JpZ2luYWxVUkws
IGxvYWRUeXBlLCBmYWxzZSk7CisgICAgICAgIGFjdGlvbiA9IE5hdmlnYXRpb25BY3Rpb24oaXRl
bU9yaWdpbmFsVVJMLCBsb2FkVHlwZSwgaXRlbSk7CiAgICAgfQogICAgIAogICAgIGlmICghYWRk
ZWRFeHRyYUZpZWxkcykKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uY3BwCShyZXZp
c2lvbiA3MTQ0OSkKKysrIFdlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MiwyMyArNTIsMjUgQEAgTmF2aWdhdGlvbkFjdGlvbjo6TmF2aWdhdGlv
bkFjdGlvbigpCiB7CiB9CiAKLU5hdmlnYXRpb25BY3Rpb246Ok5hdmlnYXRpb25BY3Rpb24oY29u
c3QgS1VSTCYgdXJsLCBOYXZpZ2F0aW9uVHlwZSB0eXBlKQorTmF2aWdhdGlvbkFjdGlvbjo6TmF2
aWdhdGlvbkFjdGlvbihjb25zdCBLVVJMJiB1cmwsIE5hdmlnYXRpb25UeXBlIHR5cGUsIFBhc3NS
ZWZQdHI8RXZlbnQ+IGV2ZW50KQogICAgIDogbV9VUkwodXJsKQogICAgICwgbV90eXBlKHR5cGUp
CisgICAgLCBtX2V2ZW50KGV2ZW50KQogewogfQogCi1OYXZpZ2F0aW9uQWN0aW9uOjpOYXZpZ2F0
aW9uQWN0aW9uKGNvbnN0IEtVUkwmIHVybCwgRnJhbWVMb2FkVHlwZSBmcmFtZUxvYWRUeXBlLAot
ICAgICAgICBib29sIGlzRm9ybVN1Ym1pc3Npb24pCitOYXZpZ2F0aW9uQWN0aW9uOjpOYXZpZ2F0
aW9uQWN0aW9uKGNvbnN0IEtVUkwmIHVybCwgTmF2aWdhdGlvblR5cGUgdHlwZSwgUGFzc1JlZlB0
cjxIaXN0b3J5SXRlbT4gaGlzdG9yeUl0ZW0pCiAgICAgOiBtX1VSTCh1cmwpCi0gICAgLCBtX3R5
cGUobmF2aWdhdGlvblR5cGUoZnJhbWVMb2FkVHlwZSwgaXNGb3JtU3VibWlzc2lvbiwgMCkpCisg
ICAgLCBtX3R5cGUodHlwZSkKKyAgICAsIG1faGlzdG9yeUl0ZW0oaGlzdG9yeUl0ZW0pCiB7CiB9
CiAKLU5hdmlnYXRpb25BY3Rpb246Ok5hdmlnYXRpb25BY3Rpb24oY29uc3QgS1VSTCYgdXJsLCBO
YXZpZ2F0aW9uVHlwZSB0eXBlLCBQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKK05hdmlnYXRpb25B
Y3Rpb246Ok5hdmlnYXRpb25BY3Rpb24oY29uc3QgS1VSTCYgdXJsLCBGcmFtZUxvYWRUeXBlIGZy
YW1lTG9hZFR5cGUsCisgICAgICAgIFBhc3NSZWZQdHI8SGlzdG9yeUl0ZW0+IGhpc3RvcnlJdGVt
KQogICAgIDogbV9VUkwodXJsKQotICAgICwgbV90eXBlKHR5cGUpCi0gICAgLCBtX2V2ZW50KGV2
ZW50KQorICAgICwgbV90eXBlKG5hdmlnYXRpb25UeXBlKGZyYW1lTG9hZFR5cGUsIGZhbHNlLCAw
KSkKKyAgICAsIG1faGlzdG9yeUl0ZW0oaGlzdG9yeUl0ZW0pCiB7CiB9CiAKSW5kZXg6IFdlYkNv
cmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRl
ci9OYXZpZ2F0aW9uQWN0aW9uLmgJKHJldmlzaW9uIDcxNDQ5KQorKysgV2ViQ29yZS9sb2FkZXIv
TmF2aWdhdGlvbkFjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAKICNp
bmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyVHlwZXMuaCIKKyNpbmNsdWRl
ICJIaXN0b3J5SXRlbS5oIgogI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgogCkBAIC0zOSwyMSArNDAsMjMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNz
IE5hdmlnYXRpb25BY3Rpb24gewogICAgIHB1YmxpYzoKICAgICAgICAgTmF2aWdhdGlvbkFjdGlv
bigpOwotICAgICAgICBOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IEtVUkwmLCBOYXZpZ2F0aW9uVHlw
ZSk7Ci0gICAgICAgIE5hdmlnYXRpb25BY3Rpb24oY29uc3QgS1VSTCYsIEZyYW1lTG9hZFR5cGUs
IGJvb2wgaXNGb3JtU3VibWlzc2lvbik7Ci0gICAgICAgIE5hdmlnYXRpb25BY3Rpb24oY29uc3Qg
S1VSTCYsIE5hdmlnYXRpb25UeXBlLCBQYXNzUmVmUHRyPEV2ZW50Pik7Ci0gICAgICAgIE5hdmln
YXRpb25BY3Rpb24oY29uc3QgS1VSTCYsIEZyYW1lTG9hZFR5cGUsIGJvb2wgaXNGb3JtU3VibWlz
c2lvbiwgUGFzc1JlZlB0cjxFdmVudD4pOworICAgICAgICBOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0
IEtVUkwmLCBOYXZpZ2F0aW9uVHlwZSwgUGFzc1JlZlB0cjxFdmVudD4gPSAwKTsKKyAgICAgICAg
TmF2aWdhdGlvbkFjdGlvbihjb25zdCBLVVJMJiwgTmF2aWdhdGlvblR5cGUsIFBhc3NSZWZQdHI8
SGlzdG9yeUl0ZW0+KTsKKyAgICAgICAgTmF2aWdhdGlvbkFjdGlvbihjb25zdCBLVVJMJiwgRnJh
bWVMb2FkVHlwZSwgUGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4gPSAwKTsKKyAgICAgICAgTmF2aWdh
dGlvbkFjdGlvbihjb25zdCBLVVJMJiwgRnJhbWVMb2FkVHlwZSwgYm9vbCBpc0Zvcm1TdWJtaXNz
aW9uLCBQYXNzUmVmUHRyPEV2ZW50PiA9IDApOwogCiAgICAgICAgIGJvb2wgaXNFbXB0eSgpIGNv
bnN0IHsgcmV0dXJuIG1fVVJMLmlzRW1wdHkoKTsgfQogCiAgICAgICAgIEtVUkwgdXJsKCkgY29u
c3QgeyByZXR1cm4gbV9VUkw7IH0KICAgICAgICAgTmF2aWdhdGlvblR5cGUgdHlwZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdHlwZTsgfQogICAgICAgICBjb25zdCBFdmVudCogZXZlbnQoKSBjb25zdCB7
IHJldHVybiBtX2V2ZW50LmdldCgpOyB9CisgICAgICAgIGNvbnN0IEhpc3RvcnlJdGVtKiBoaXN0
b3J5SXRlbSgpIGNvbnN0IHsgcmV0dXJuIG1faGlzdG9yeUl0ZW0uZ2V0KCk7IH0KIAogICAgIHBy
aXZhdGU6CiAgICAgICAgIEtVUkwgbV9VUkw7CiAgICAgICAgIE5hdmlnYXRpb25UeXBlIG1fdHlw
ZTsKICAgICAgICAgUmVmUHRyPEV2ZW50PiBtX2V2ZW50OworICAgICAgICBSZWZQdHI8SGlzdG9y
eUl0ZW0+IG1faGlzdG9yeUl0ZW07CiAgICAgfTsKIAogfQpJbmRleDogTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNzE0
NDkpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
OCBAQAorMjAxMC0xMS0xNyAgQ2hhcmxpZSBSZWlzICA8Y3JlaXNAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZyYW1lTG9hZGVy
OjpjaGVja0xvYWRDb21wbGV0ZUZvclRoaXNGcmFtZSB1c2VzIHdyb25nIGhpc3RvcnkgaXRlbQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDg4MTIKKwor
ICAgICAgICBUZXN0IHRoYXQgd2UgYXZvaWQgdXBkYXRpbmcgYmFjay9mb3J3YXJkIGxpc3Qgb24g
YSBjYW5jZWxlZCBuYXZpZ2F0aW9uCisgICAgICAgIGlmIGEgbmV3IG5hdmlnYXRpb24gaXMgYWxy
ZWFkeSBpbiBwcm9jZXNzLgorCisgICAgICAgICogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2JhY2st
dHdpY2Utd2l0aG91dC1jb21taXQuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL25hdmlnYXRp
b24vYmFjay10d2ljZS13aXRob3V0LWNvbW1pdC1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0
cC90ZXN0cy9uYXZpZ2F0aW9uL3Jlc291cmNlcy9iYWNrLXR3aWNlLXBhZ2UtMi5odG1sOgorICAg
ICAgICAqIGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNvdXJjZXMvYmFjay10d2ljZS1wYWdlLTMu
aHRtbDoKKwogMjAxMC0xMS0wNSAgTWloYWkgUGFycGFyaXRhICA8bWloYWlwQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBVbnJldmlld2VkOyB0ZXN0X2V4cGVjdGF0aW9ucyBmaXguCkluZGV4OiBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vYmFjay10d2ljZS13aXRob3V0LWNvbW1p
dC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZp
Z2F0aW9uL2JhY2stdHdpY2Utd2l0aG91dC1jb21taXQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2JhY2stdHdpY2Utd2l0aG91
dC1jb21taXQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDkgQEAKK1RoaXMg
dGVzdCBjaGVja3MgdGhhdCBnb2luZyBiYWNrIHR3aWNlIHdpdGhvdXQgY29tbWl0dGluZyBkb2Vz
bid0IGNvcnJ1cHQgdGhlIGJhY2svZm9yd2FyZCBsaXN0LgorCitJZiB0ZXN0aW5nIG1hbnVhbGx5
LCBjbGljayBoZXJlLgorCis9PT09PT09PT09PT09PSBCYWNrIEZvcndhcmQgTGlzdCA9PT09PT09
PT09PT09PQorY3Vyci0+ICBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbmF2aWdhdGlvbi9iYWNrLXR3
aWNlLXdpdGhvdXQtY29tbWl0Lmh0bWwgICoqbmF2IHRhcmdldCoqCisgICAgICAgIGh0dHA6Ly8x
MjcuMC4wLjE6ODAwMC9uYXZpZ2F0aW9uL3Jlc291cmNlcy9iYWNrLXR3aWNlLXBhZ2UtMi5odG1s
ICAqKm5hdiB0YXJnZXQqKgorICAgICAgICBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbmF2aWdhdGlv
bi9yZXNvdXJjZXMvYmFjay10d2ljZS1wYWdlLTMuaHRtbCAgKipuYXYgdGFyZ2V0KioKKz09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkluZGV4OiBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vYmFjay10d2ljZS13aXRob3V0LWNvbW1pdC5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9iYWNrLXR3
aWNlLXdpdGhvdXQtY29tbWl0Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL25hdmlnYXRpb24vYmFjay10d2ljZS13aXRob3V0LWNvbW1pdC5odG1sCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDIyIEBACis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBCYWNrRm9yd2FyZExpc3Qo
KTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICAvLyBWaXNp
dCB0d28gcGFnZXMsIHRoZW4gZ28gYmFjayB0byBwYWdlIDIsIHdoaWNoIGhhcyBhIHNsb3cgZnJh
bWUgdGhlIHNlY29uZCB0aW1lLgorICAgIGxheW91dFRlc3RDb250cm9sbGVyLnF1ZXVlTG9hZCgi
cmVzb3VyY2VzL2JhY2stdHdpY2UtcGFnZS0yLmh0bWwiKTsKKyAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5xdWV1ZUxvYWQoInJlc291cmNlcy9iYWNrLXR3aWNlLXBhZ2UtMy5odG1sIik7CisgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIucXVldWVCYWNrTmF2aWdhdGlvbigxKTsKKworICAgIC8vIE5v
dyBjb21wZXRlIHdpdGggcGFnZSAyJ3MgaGlzdG9yeS5iYWNrKCkgY2FsbCwgdG8gYSBkaWZmZXJl
bnQgaGlzdG9yeSBpdGVtLgorICAgIGxheW91dFRlc3RDb250cm9sbGVyLnF1ZXVlQmFja05hdmln
YXRpb24oMik7CisKKyAgICAvLyBSZXBlYXQgdGhlIHRlc3QsIGJ1dCBjb21wZXRlIHdpdGggaGlz
dG9yeS5iYWNrKCkgdG8gdGhlIHNhbWUgaGlzdG9yeSBpdGVtLgorICAgIGxheW91dFRlc3RDb250
cm9sbGVyLnF1ZXVlTG9hZCgicmVzb3VyY2VzL2JhY2stdHdpY2UtcGFnZS0yLmh0bWwiKTsKKyAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5xdWV1ZUxvYWQoInJlc291cmNlcy9iYWNrLXR3aWNlLXBh
Z2UtMy5odG1sIik7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIucXVldWVCYWNrTmF2aWdhdGlv
bigxKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5xdWV1ZUJhY2tOYXZpZ2F0aW9uKDEpOwor
fQorPC9zY3JpcHQ+Cis8cD5UaGlzIHRlc3QgY2hlY2tzIHRoYXQgZ29pbmcgYmFjayB0d2ljZSB3
aXRob3V0IGNvbW1pdHRpbmcgZG9lc24ndCBjb3JydXB0IHRoZSBiYWNrL2ZvcndhcmQgbGlzdC4K
KzxwPklmIHRlc3RpbmcgbWFudWFsbHksIDxhIGhyZWY9InJlc291cmNlcy9iYWNrLXR3aWNlLXBh
Z2UtMi5odG1sIj5jbGljayBoZXJlPC9hPi4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMv
bmF2aWdhdGlvbi9yZXNvdXJjZXMvYmFjay10d2ljZS1wYWdlLTIuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcmVzb3VyY2VzL2JhY2stdHdpY2Ut
cGFnZS0yLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmln
YXRpb24vcmVzb3VyY2VzL2JhY2stdHdpY2UtcGFnZS0yLmh0bWwJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMjEgQEAKKzxwPlBhZ2UgMi4KKzxwPlRoaXMgdGVzdCBjaGVja3MgdGhhdCBnb2luZyBi
YWNrIHR3aWNlIHdpdGhvdXQgY29tbWl0dGluZyBkb2Vzbid0IGNvcnJ1cHQgdGhlIGJhY2svZm9y
d2FyZCBsaXN0LgorPHA+SWYgdGVzdGluZyBtYW51YWxseSwgPGEgaHJlZj0iYmFjay10d2ljZS1w
YWdlLTMuaHRtbCI+Y2xpY2sgaGVyZTwvYT4uCisKKzxzY3JpcHQ+CitpZiAoIXdpbmRvdy5sb2Nh
bFN0b3JhZ2Uuc3RhcnRlZCkgeworICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2Uuc3RhcnRlZCA9IHRy
dWU7Cit9IGVsc2UgeworICAgIGRlbGV0ZSB3aW5kb3cubG9jYWxTdG9yYWdlLnN0YXJ0ZWQ7CisK
KyAgICAvLyBUaGUgc2Vjb25kIHRpbWUgd2UgdmlzaXQgdGhlIHBhZ2UgKGkuZS4sIHdoaWxlIGdv
aW5nIGJhY2spLCBpbnNlcnQgYW4KKyAgICAvLyBpZnJhbWUgdGhhdCBkb2Vzbid0IGNvbW1pdCBk
dXJpbmcgdGhlIHRlc3QuCisgICAgdmFyIGYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJh
bWUiKTsKKyAgICBmLnNyYyA9ICIuLi8uLi9oaXN0b3J5L3Jlc291cmNlcy9iYWNrLWR1cmluZy1v
bmxvYWQtaHVuZy1wYWdlLnBocCI7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChmKTsK
KworICAgIC8vIE5vdyBnbyBiYWNrLiAgVGhpcyB3aWxsIGNvbXBldGUgd2l0aCB0aGUgc2Vjb25k
IHF1ZXVlQmFja05hdmlnYXRpb24KKyAgICAvLyBmcm9tIGJhY2stdHdpY2Utd2l0aG91dC1jb21t
aXQuaHRtbC4KKyAgICBoaXN0b3J5LmJhY2soKTsKK30KKzwvc2NyaXB0PgpJbmRleDogTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Jlc291cmNlcy9iYWNrLXR3aWNlLXBhZ2UtMy5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNv
dXJjZXMvYmFjay10d2ljZS1wYWdlLTMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNvdXJjZXMvYmFjay10d2ljZS1wYWdlLTMuaHRtbAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwzIEBACis8cD5QYWdlIDMuCis8cD5UaGlzIHRlc3QgY2hl
Y2tzIHRoYXQgZ29pbmcgYmFjayB0d2ljZSB3aXRob3V0IGNvbW1pdHRpbmcgZG9lc24ndCBjb3Jy
dXB0IHRoZSBiYWNrL2ZvcndhcmQgbGlzdC4KKzxwPklmIHRlc3RpbmcgbWFudWFsbHksIGhvbGQg
ZG93biB0aGUgYmFjayBrZXlib2FyZCBzaG9ydGN1dCBvciBjbGljayBiYWNrIHR3aWNlIHF1aWNr
bHkuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74161</attachid>
            <date>2010-11-17 15:16:25 -0800</date>
            <delta_ts>2010-11-18 15:31:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-48812-20101117151624.patch</filename>
            <type>text/plain</type>
            <size>10991</size>
            <attacher name="Charles Reis">creis</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MTQ0OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMTAtMTEtMTcgIENoYXJsaWUgUmVpcyAgPGNyZWlzQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBG
cmFtZUxvYWRlcjo6Y2hlY2tMb2FkQ29tcGxldGVGb3JUaGlzRnJhbWUgdXNlcyB3cm9uZyBoaXN0
b3J5IGl0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTQ4ODEyCisKKyAgICAgICAgQXZvaWRzIHVwZGF0aW5nIGJhY2svZm9yd2FyZCBsaXN0IG9uIGEg
Y2FuY2VsZWQgbmF2aWdhdGlvbiBpZiBhIG5ldworICAgICAgICBuYXZpZ2F0aW9uIGlzIGFscmVh
ZHkgaW4gcHJvZ3Jlc3MuCisKKyAgICAgICAgVGVzdDogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2Jh
Y2stdHdpY2Utd2l0aG91dC1jb21taXQuaHRtbAorCisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjaGVja0xvYWRDb21wbGV0
ZUZvclRoaXNGcmFtZSk6CisgICAgICAgICogbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uY3BwOgor
ICAgICAgICAqIGxvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmg6IEFkZCBhIEhpc3RvcnlJdGVtIGZp
ZWxkIGFuZCByZWZhY3RvcnMgb3ZlcmxvYWRzLgorCiAyMDEwLTExLTA0ICBaaGVueWFvIE1vICA8
em1vQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSdXNzZWxsLgpJ
bmRleDogV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNpb24gNzE0NDkpCisrKyBXZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzODAsOSArMjM4MCwxMiBA
QCB2b2lkIEZyYW1lTG9hZGVyOjpjaGVja0xvYWRDb21wbGV0ZUZvclRoCiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBpZiAoc2hvdWxkUmVzZXQgJiYgaXRlbSkKICAgICAgICAgICAgICAgICBp
ZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkgewotICAgICAgICAgICAgICAgICAgICBw
YWdlLT5iYWNrRm9yd2FyZCgpLT5zZXRDdXJyZW50SXRlbShpdGVtLmdldCgpKTsKLSAgICAgICAg
ICAgICAgICAgICAgU2V0dGluZ3MqIHNldHRpbmdzID0gbV9mcmFtZS0+c2V0dGluZ3MoKTsKLSAg
ICAgICAgICAgICAgICAgICAgcGFnZS0+c2V0R2xvYmFsSGlzdG9yeUl0ZW0oKCFzZXR0aW5ncyB8
fCBzZXR0aW5ncy0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpKSA/IDAgOiBpdGVtLmdldCgpKTsK
KyAgICAgICAgICAgICAgICAgICAgLy8gRG8gbm90IGNoYW5nZSB0aGUgYmFja0ZvcndhcmQgY29u
dHJvbGxlciBpZiBpdCBpcyBhbHJlYWR5IGxvYWRpbmcgYSBuZXcgVVJMLgorICAgICAgICAgICAg
ICAgICAgICBpZiAocGRsLT50cmlnZ2VyaW5nQWN0aW9uKCkuaGlzdG9yeUl0ZW0oKSA9PSBwYWdl
LT5iYWNrRm9yd2FyZCgpLT5jdXJyZW50SXRlbSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBwYWdlLT5iYWNrRm9yd2FyZCgpLT5zZXRDdXJyZW50SXRlbShpdGVtLmdldCgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IG1fZnJhbWUtPnNldHRpbmdz
KCk7CisgICAgICAgICAgICAgICAgICAgICAgICBwYWdlLT5zZXRHbG9iYWxIaXN0b3J5SXRlbSgo
IXNldHRpbmdzIHx8IHNldHRpbmdzLT5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkpID8gMCA6IGl0
ZW0uZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0zMjAwLDEwICszMjAzLDEwIEBAIHZvaWQg
RnJhbWVMb2FkZXI6Om5hdmlnYXRlVG9EaWZmZXJlbnREb2MKICAgICAgICAgLy8gZXh0cmVtZWx5
IHJhcmUsIGJ1dCBpbiB0aGF0IGNhc2UgdGhlIHVzZXIgd2lsbCBnZXQgYW4gZXJyb3Igb24gdGhl
IG5hdmlnYXRpb24uCiAgICAgICAgIAogICAgICAgICBpZiAoUmVzb3VyY2VIYW5kbGU6OndpbGxM
b2FkRnJvbUNhY2hlKHJlcXVlc3QsIG1fZnJhbWUpKQotICAgICAgICAgICAgYWN0aW9uID0gTmF2
aWdhdGlvbkFjdGlvbihpdGVtVVJMLCBsb2FkVHlwZSwgZmFsc2UpOworICAgICAgICAgICAgYWN0
aW9uID0gTmF2aWdhdGlvbkFjdGlvbihpdGVtVVJMLCBsb2FkVHlwZSwgaXRlbSk7CiAgICAgICAg
IGVsc2UgewogICAgICAgICAgICAgcmVxdWVzdC5zZXRDYWNoZVBvbGljeShSZWxvYWRJZ25vcmlu
Z0NhY2hlRGF0YSk7Ci0gICAgICAgICAgICBhY3Rpb24gPSBOYXZpZ2F0aW9uQWN0aW9uKGl0ZW1V
UkwsIE5hdmlnYXRpb25UeXBlRm9ybVJlc3VibWl0dGVkKTsKKyAgICAgICAgICAgIGFjdGlvbiA9
IE5hdmlnYXRpb25BY3Rpb24oaXRlbVVSTCwgTmF2aWdhdGlvblR5cGVGb3JtUmVzdWJtaXR0ZWQs
IGl0ZW0pOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgc3dpdGNoIChsb2FkVHlw
ZSkgewpAQCAtMzIyOCw3ICszMjMxLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bmF2aWdhdGVUb0Rp
ZmZlcmVudERvYwogICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAg
ICB9CiAKLSAgICAgICAgYWN0aW9uID0gTmF2aWdhdGlvbkFjdGlvbihpdGVtT3JpZ2luYWxVUkws
IGxvYWRUeXBlLCBmYWxzZSk7CisgICAgICAgIGFjdGlvbiA9IE5hdmlnYXRpb25BY3Rpb24oaXRl
bU9yaWdpbmFsVVJMLCBsb2FkVHlwZSwgaXRlbSk7CiAgICAgfQogICAgIAogICAgIGlmICghYWRk
ZWRFeHRyYUZpZWxkcykKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uY3BwCShyZXZp
c2lvbiA3MTQ0OSkKKysrIFdlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00OSwyNiArNDksMzAgQEAgc3RhdGljIE5hdmlnYXRpb25UeXBlIG5hdmln
YXRpb25UeXBlKEZyYQogCiBOYXZpZ2F0aW9uQWN0aW9uOjpOYXZpZ2F0aW9uQWN0aW9uKCkKICAg
ICA6IG1fdHlwZShOYXZpZ2F0aW9uVHlwZU90aGVyKQorICAgICwgbV9oaXN0b3J5SXRlbSgwKQog
ewogfQogCi1OYXZpZ2F0aW9uQWN0aW9uOjpOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IEtVUkwmIHVy
bCwgTmF2aWdhdGlvblR5cGUgdHlwZSkKK05hdmlnYXRpb25BY3Rpb246Ok5hdmlnYXRpb25BY3Rp
b24oY29uc3QgS1VSTCYgdXJsLCBOYXZpZ2F0aW9uVHlwZSB0eXBlLCBQYXNzUmVmUHRyPEV2ZW50
PiBldmVudCkKICAgICA6IG1fVVJMKHVybCkKICAgICAsIG1fdHlwZSh0eXBlKQorICAgICwgbV9l
dmVudChldmVudCkKKyAgICAsIG1faGlzdG9yeUl0ZW0oMCkKIHsKIH0KIAotTmF2aWdhdGlvbkFj
dGlvbjo6TmF2aWdhdGlvbkFjdGlvbihjb25zdCBLVVJMJiB1cmwsIEZyYW1lTG9hZFR5cGUgZnJh
bWVMb2FkVHlwZSwKLSAgICAgICAgYm9vbCBpc0Zvcm1TdWJtaXNzaW9uKQorTmF2aWdhdGlvbkFj
dGlvbjo6TmF2aWdhdGlvbkFjdGlvbihjb25zdCBLVVJMJiB1cmwsIE5hdmlnYXRpb25UeXBlIHR5
cGUsIEhpc3RvcnlJdGVtKiBoaXN0b3J5SXRlbSkKICAgICA6IG1fVVJMKHVybCkKLSAgICAsIG1f
dHlwZShuYXZpZ2F0aW9uVHlwZShmcmFtZUxvYWRUeXBlLCBpc0Zvcm1TdWJtaXNzaW9uLCAwKSkK
KyAgICAsIG1fdHlwZSh0eXBlKQorICAgICwgbV9oaXN0b3J5SXRlbShoaXN0b3J5SXRlbSkKIHsK
IH0KIAotTmF2aWdhdGlvbkFjdGlvbjo6TmF2aWdhdGlvbkFjdGlvbihjb25zdCBLVVJMJiB1cmws
IE5hdmlnYXRpb25UeXBlIHR5cGUsIFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQorTmF2aWdhdGlv
bkFjdGlvbjo6TmF2aWdhdGlvbkFjdGlvbihjb25zdCBLVVJMJiB1cmwsIEZyYW1lTG9hZFR5cGUg
ZnJhbWVMb2FkVHlwZSwKKyAgICAgICAgSGlzdG9yeUl0ZW0qIGhpc3RvcnlJdGVtKQogICAgIDog
bV9VUkwodXJsKQotICAgICwgbV90eXBlKHR5cGUpCi0gICAgLCBtX2V2ZW50KGV2ZW50KQorICAg
ICwgbV90eXBlKG5hdmlnYXRpb25UeXBlKGZyYW1lTG9hZFR5cGUsIGZhbHNlLCAwKSkKKyAgICAs
IG1faGlzdG9yeUl0ZW0oaGlzdG9yeUl0ZW0pCiB7CiB9CiAKQEAgLTc3LDYgKzgxLDcgQEAgTmF2
aWdhdGlvbkFjdGlvbjo6TmF2aWdhdGlvbkFjdGlvbihjb25zdAogICAgIDogbV9VUkwodXJsKQog
ICAgICwgbV90eXBlKG5hdmlnYXRpb25UeXBlKGZyYW1lTG9hZFR5cGUsIGlzRm9ybVN1Ym1pc3Np
b24sIGV2ZW50KSkKICAgICAsIG1fZXZlbnQoZXZlbnQpCisgICAgLCBtX2hpc3RvcnlJdGVtKDAp
CiB7CiB9CiAKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmgJKHJldmlzaW9uIDcxNDQ5
KQorKysgV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMSw2ICszMSw3IEBACiAKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkZyYW1lTG9h
ZGVyVHlwZXMuaCIKKyNpbmNsdWRlICJIaXN0b3J5SXRlbS5oIgogI2luY2x1ZGUgIktVUkwuaCIK
ICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCkBAIC0zOSwyMSArNDAsMjMgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIGNsYXNzIE5hdmlnYXRpb25BY3Rpb24gewogICAgIHB1YmxpYzoKICAg
ICAgICAgTmF2aWdhdGlvbkFjdGlvbigpOwotICAgICAgICBOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0
IEtVUkwmLCBOYXZpZ2F0aW9uVHlwZSk7Ci0gICAgICAgIE5hdmlnYXRpb25BY3Rpb24oY29uc3Qg
S1VSTCYsIEZyYW1lTG9hZFR5cGUsIGJvb2wgaXNGb3JtU3VibWlzc2lvbik7Ci0gICAgICAgIE5h
dmlnYXRpb25BY3Rpb24oY29uc3QgS1VSTCYsIE5hdmlnYXRpb25UeXBlLCBQYXNzUmVmUHRyPEV2
ZW50Pik7Ci0gICAgICAgIE5hdmlnYXRpb25BY3Rpb24oY29uc3QgS1VSTCYsIEZyYW1lTG9hZFR5
cGUsIGJvb2wgaXNGb3JtU3VibWlzc2lvbiwgUGFzc1JlZlB0cjxFdmVudD4pOworICAgICAgICBO
YXZpZ2F0aW9uQWN0aW9uKGNvbnN0IEtVUkwmLCBOYXZpZ2F0aW9uVHlwZSwgUGFzc1JlZlB0cjxF
dmVudD4gPSAwKTsKKyAgICAgICAgTmF2aWdhdGlvbkFjdGlvbihjb25zdCBLVVJMJiwgTmF2aWdh
dGlvblR5cGUsIEhpc3RvcnlJdGVtKik7CisgICAgICAgIE5hdmlnYXRpb25BY3Rpb24oY29uc3Qg
S1VSTCYsIEZyYW1lTG9hZFR5cGUsIEhpc3RvcnlJdGVtKiA9IDApOworICAgICAgICBOYXZpZ2F0
aW9uQWN0aW9uKGNvbnN0IEtVUkwmLCBGcmFtZUxvYWRUeXBlLCBib29sIGlzRm9ybVN1Ym1pc3Np
b24sIFBhc3NSZWZQdHI8RXZlbnQ+ID0gMCk7CiAKICAgICAgICAgYm9vbCBpc0VtcHR5KCkgY29u
c3QgeyByZXR1cm4gbV9VUkwuaXNFbXB0eSgpOyB9CiAKICAgICAgICAgS1VSTCB1cmwoKSBjb25z
dCB7IHJldHVybiBtX1VSTDsgfQogICAgICAgICBOYXZpZ2F0aW9uVHlwZSB0eXBlKCkgY29uc3Qg
eyByZXR1cm4gbV90eXBlOyB9CiAgICAgICAgIGNvbnN0IEV2ZW50KiBldmVudCgpIGNvbnN0IHsg
cmV0dXJuIG1fZXZlbnQuZ2V0KCk7IH0KKyAgICAgICAgY29uc3QgSGlzdG9yeUl0ZW0qIGhpc3Rv
cnlJdGVtKCkgY29uc3QgeyByZXR1cm4gbV9oaXN0b3J5SXRlbTsgfQogCiAgICAgcHJpdmF0ZToK
ICAgICAgICAgS1VSTCBtX1VSTDsKICAgICAgICAgTmF2aWdhdGlvblR5cGUgbV90eXBlOwogICAg
ICAgICBSZWZQdHI8RXZlbnQ+IG1fZXZlbnQ7CisgICAgICAgIEhpc3RvcnlJdGVtKiBtX2hpc3Rv
cnlJdGVtOwogICAgIH07CiAKIH0KSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDcxNDQ5KQorKysgTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTAtMTEt
MTcgIENoYXJsaWUgUmVpcyAgPGNyZWlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGcmFtZUxvYWRlcjo6Y2hlY2tMb2FkQ29t
cGxldGVGb3JUaGlzRnJhbWUgdXNlcyB3cm9uZyBoaXN0b3J5IGl0ZW0KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4ODEyCisKKyAgICAgICAgVGVzdCB0
aGF0IHdlIGF2b2lkIHVwZGF0aW5nIGJhY2svZm9yd2FyZCBsaXN0IG9uIGEgY2FuY2VsZWQgbmF2
aWdhdGlvbgorICAgICAgICBpZiBhIG5ldyBuYXZpZ2F0aW9uIGlzIGFscmVhZHkgaW4gcHJvY2Vz
cy4KKworICAgICAgICAqIGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9iYWNrLXR3aWNlLXdpdGhvdXQt
Y29tbWl0Lmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2JhY2stdHdpY2Ut
d2l0aG91dC1jb21taXQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvbmF2aWdh
dGlvbi9yZXNvdXJjZXMvYmFjay10d2ljZS1wYWdlLTIuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rl
c3RzL25hdmlnYXRpb24vcmVzb3VyY2VzL2JhY2stdHdpY2UtcGFnZS0zLmh0bWw6CisKIDIwMTAt
MTEtMDUgIE1paGFpIFBhcnBhcml0YSAgPG1paGFpcEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
VW5yZXZpZXdlZDsgdGVzdF9leHBlY3RhdGlvbnMgZml4LgpJbmRleDogTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9uYXZpZ2F0aW9uL2JhY2stdHdpY2Utd2l0aG91dC1jb21taXQtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9iYWNrLXR3
aWNlLXdpdGhvdXQtY29tbWl0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9iYWNrLXR3aWNlLXdpdGhvdXQtY29tbWl0LWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5IEBACitUaGlzIHRlc3QgY2hlY2tzIHRo
YXQgZ29pbmcgYmFjayB0d2ljZSB3aXRob3V0IGNvbW1pdHRpbmcgZG9lc24ndCBjb3JydXB0IHRo
ZSBiYWNrL2ZvcndhcmQgbGlzdC4KKworSWYgdGVzdGluZyBtYW51YWxseSwgY2xpY2sgaGVyZS4K
KworPT09PT09PT09PT09PT0gQmFjayBGb3J3YXJkIExpc3QgPT09PT09PT09PT09PT0KK2N1cnIt
PiAgaHR0cDovLzEyNy4wLjAuMTo4MDAwL25hdmlnYXRpb24vYmFjay10d2ljZS13aXRob3V0LWNv
bW1pdC5odG1sICAqKm5hdiB0YXJnZXQqKgorICAgICAgICBodHRwOi8vMTI3LjAuMC4xOjgwMDAv
bmF2aWdhdGlvbi9yZXNvdXJjZXMvYmFjay10d2ljZS1wYWdlLTIuaHRtbCAgKipuYXYgdGFyZ2V0
KioKKyAgICAgICAgaHR0cDovLzEyNy4wLjAuMTo4MDAwL25hdmlnYXRpb24vcmVzb3VyY2VzL2Jh
Y2stdHdpY2UtcGFnZS0zLmh0bWwgICoqbmF2IHRhcmdldCoqCis9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9uYXZpZ2F0aW9uL2JhY2stdHdpY2Utd2l0aG91dC1jb21taXQuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vYmFjay10d2ljZS13aXRob3V0LWNv
bW1pdC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0
aW9uL2JhY2stdHdpY2Utd2l0aG91dC1jb21taXQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwyMiBAQAorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQmFja0ZvcndhcmRMaXN0KCk7CisgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgLy8gVmlzaXQgdHdvIHBhZ2VzLCB0
aGVuIGdvIGJhY2sgdG8gcGFnZSAyLCB3aGljaCBoYXMgYSBzbG93IGZyYW1lIHRoZSBzZWNvbmQg
dGltZS4KKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5xdWV1ZUxvYWQoInJlc291cmNlcy9iYWNr
LXR3aWNlLXBhZ2UtMi5odG1sIik7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIucXVldWVMb2Fk
KCJyZXNvdXJjZXMvYmFjay10d2ljZS1wYWdlLTMuaHRtbCIpOworICAgIGxheW91dFRlc3RDb250
cm9sbGVyLnF1ZXVlQmFja05hdmlnYXRpb24oMSk7CisKKyAgICAvLyBOb3cgY29tcGV0ZSB3aXRo
IHBhZ2UgMidzIGhpc3RvcnkuYmFjaygpIGNhbGwsIHRvIGEgZGlmZmVyZW50IGhpc3RvcnkgaXRl
bS4KKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5xdWV1ZUJhY2tOYXZpZ2F0aW9uKDIpOworCisg
ICAgLy8gUmVwZWF0IHRoZSB0ZXN0LCBidXQgY29tcGV0ZSB3aXRoIGhpc3RvcnkuYmFjaygpIHRv
IHRoZSBzYW1lIGhpc3RvcnkgaXRlbS4KKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5xdWV1ZUxv
YWQoInJlc291cmNlcy9iYWNrLXR3aWNlLXBhZ2UtMi5odG1sIik7CisgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIucXVldWVMb2FkKCJyZXNvdXJjZXMvYmFjay10d2ljZS1wYWdlLTMuaHRtbCIpOwor
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLnF1ZXVlQmFja05hdmlnYXRpb24oMSk7CisgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIucXVldWVCYWNrTmF2aWdhdGlvbigxKTsKK30KKzwvc2NyaXB0Pgor
PHA+VGhpcyB0ZXN0IGNoZWNrcyB0aGF0IGdvaW5nIGJhY2sgdHdpY2Ugd2l0aG91dCBjb21taXR0
aW5nIGRvZXNuJ3QgY29ycnVwdCB0aGUgYmFjay9mb3J3YXJkIGxpc3QuCis8cD5JZiB0ZXN0aW5n
IG1hbnVhbGx5LCA8YSBocmVmPSJyZXNvdXJjZXMvYmFjay10d2ljZS1wYWdlLTIuaHRtbCI+Y2xp
Y2sgaGVyZTwvYT4uCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcmVz
b3VyY2VzL2JhY2stdHdpY2UtcGFnZS0yLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Jlc291cmNlcy9iYWNrLXR3aWNlLXBhZ2UtMi5odG1sCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Jlc291cmNl
cy9iYWNrLXR3aWNlLXBhZ2UtMi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIxIEBACis8
cD5QYWdlIDIuCis8cD5UaGlzIHRlc3QgY2hlY2tzIHRoYXQgZ29pbmcgYmFjayB0d2ljZSB3aXRo
b3V0IGNvbW1pdHRpbmcgZG9lc24ndCBjb3JydXB0IHRoZSBiYWNrL2ZvcndhcmQgbGlzdC4KKzxw
PklmIHRlc3RpbmcgbWFudWFsbHksIDxhIGhyZWY9ImJhY2stdHdpY2UtcGFnZS0zLmh0bWwiPmNs
aWNrIGhlcmU8L2E+LgorCis8c2NyaXB0PgoraWYgKCF3aW5kb3cubG9jYWxTdG9yYWdlLnN0YXJ0
ZWQpIHsKKyAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnN0YXJ0ZWQgPSB0cnVlOworfSBlbHNlIHsK
KyAgICBkZWxldGUgd2luZG93LmxvY2FsU3RvcmFnZS5zdGFydGVkOworCisgICAgLy8gVGhlIHNl
Y29uZCB0aW1lIHdlIHZpc2l0IHRoZSBwYWdlIChpLmUuLCB3aGlsZSBnb2luZyBiYWNrKSwgaW5z
ZXJ0IGFuCisgICAgLy8gaWZyYW1lIHRoYXQgZG9lc24ndCBjb21taXQgZHVyaW5nIHRoZSB0ZXN0
LgorICAgIHZhciBmID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7CisgICAgZi5z
cmMgPSAiLi4vLi4vaGlzdG9yeS9yZXNvdXJjZXMvYmFjay1kdXJpbmctb25sb2FkLWh1bmctcGFn
ZS5waHAiOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZik7CisKKyAgICAvLyBOb3cg
Z28gYmFjay4gIFRoaXMgd2lsbCBjb21wZXRlIHdpdGggdGhlIHNlY29uZCBxdWV1ZUJhY2tOYXZp
Z2F0aW9uCisgICAgLy8gZnJvbSBiYWNrLXR3aWNlLXdpdGhvdXQtY29tbWl0Lmh0bWwuCisgICAg
aGlzdG9yeS5iYWNrKCk7Cit9Cis8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVz
dHMvbmF2aWdhdGlvbi9yZXNvdXJjZXMvYmFjay10d2ljZS1wYWdlLTMuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcmVzb3VyY2VzL2JhY2stdHdp
Y2UtcGFnZS0zLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25h
dmlnYXRpb24vcmVzb3VyY2VzL2JhY2stdHdpY2UtcGFnZS0zLmh0bWwJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMyBAQAorPHA+UGFnZSAzLgorPHA+VGhpcyB0ZXN0IGNoZWNrcyB0aGF0IGdvaW5n
IGJhY2sgdHdpY2Ugd2l0aG91dCBjb21taXR0aW5nIGRvZXNuJ3QgY29ycnVwdCB0aGUgYmFjay9m
b3J3YXJkIGxpc3QuCis8cD5JZiB0ZXN0aW5nIG1hbnVhbGx5LCBob2xkIGRvd24gdGhlIGJhY2sg
a2V5Ym9hcmQgc2hvcnRjdXQgb3IgY2xpY2sgYmFjayB0d2ljZSBxdWlja2x5Lgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74305</attachid>
            <date>2010-11-18 15:31:47 -0800</date>
            <delta_ts>2010-11-29 11:36:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-48812-20101118153145.patch</filename>
            <type>text/plain</type>
            <size>13100</size>
            <attacher name="Charles Reis">creis</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MjI2NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMTAtMTEtMTcgIENoYXJsaWUgUmVpcyAgPGNyZWlzQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBG
cmFtZUxvYWRlcjo6Y2hlY2tMb2FkQ29tcGxldGVGb3JUaGlzRnJhbWUgdXNlcyB3cm9uZyBoaXN0
b3J5IGl0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTQ4ODEyCisKKyAgICAgICAgQXZvaWRzIHVwZGF0aW5nIGJhY2svZm9yd2FyZCBsaXN0IG9uIGEg
Y2FuY2VsZWQgbmF2aWdhdGlvbiBpZiBhIG5ldworICAgICAgICBuYXZpZ2F0aW9uIGlzIGFscmVh
ZHkgaW4gcHJvZ3Jlc3MuCisKKyAgICAgICAgVGVzdDogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2Jh
Y2stdHdpY2Utd2l0aG91dC1jb21taXQuaHRtbAorCisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjaGVja0xvYWRDb21wbGV0
ZUZvclRoaXNGcmFtZSk6CisgICAgICAgICogbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uY3BwOgor
ICAgICAgICAqIGxvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmg6IEFkZCBhIEhpc3RvcnlJdGVtIGZp
ZWxkIGFuZCByZWZhY3RvcnMgb3ZlcmxvYWRzLgorCiAyMDEwLTExLTE3ICBEaW1pdHJpIEdsYXpr
b3YgIDxkZ2xhemtvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4g
QWRsZXIuCkluZGV4OiBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCShyZXZpc2lvbiA3MjI2NikKKysrIFdl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMxNiw3ICsx
MzE2LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFVSTChjb25zdCBLVVJMJiBuZQogICAgIGlm
IChtX3BhZ2VEaXNtaXNzYWxFdmVudEJlaW5nRGlzcGF0Y2hlZCkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgTmF2aWdhdGlvbkFjdGlvbiBhY3Rpb24obmV3VVJMLCBuZXdMb2FkVHlwZSwgaXNGb3Jt
U3VibWlzc2lvbiwgZXZlbnQpOworICAgIE5hdmlnYXRpb25BY3Rpb24gYWN0aW9uKG5ld1VSTCwg
aXNGb3JtU3VibWlzc2lvbiwgbmV3TG9hZFR5cGUsIGV2ZW50KTsKIAogICAgIGlmICghdGFyZ2V0
RnJhbWUgJiYgIWZyYW1lTmFtZS5pc0VtcHR5KCkpIHsKICAgICAgICAgcG9saWN5Q2hlY2tlcigp
LT5jaGVja05ld1dpbmRvd1BvbGljeShhY3Rpb24sIEZyYW1lTG9hZGVyOjpjYWxsQ29udGludWVM
b2FkQWZ0ZXJOZXdXaW5kb3dQb2xpY3ksCkBAIC0xNDUzLDcgKzE0NTMsNyBAQCB2b2lkIEZyYW1l
TG9hZGVyOjpsb2FkV2l0aERvY3VtZW50TG9hZGVyCiAKICAgICBpZiAoc2hvdWxkU2Nyb2xsVG9B
bmNob3IoaXNGb3JtU3VibWlzc2lvbiwgcG9saWN5Q2hlY2tlcigpLT5sb2FkVHlwZSgpLCBuZXdV
UkwpKSB7CiAgICAgICAgIFJlZlB0cjxEb2N1bWVudExvYWRlcj4gb2xkRG9jdW1lbnRMb2FkZXIg
PSBtX2RvY3VtZW50TG9hZGVyOwotICAgICAgICBOYXZpZ2F0aW9uQWN0aW9uIGFjdGlvbihuZXdV
UkwsIHBvbGljeUNoZWNrZXIoKS0+bG9hZFR5cGUoKSwgaXNGb3JtU3VibWlzc2lvbik7CisgICAg
ICAgIE5hdmlnYXRpb25BY3Rpb24gYWN0aW9uKG5ld1VSTCwgaXNGb3JtU3VibWlzc2lvbiwgcG9s
aWN5Q2hlY2tlcigpLT5sb2FkVHlwZSgpKTsKIAogICAgICAgICBvbGREb2N1bWVudExvYWRlci0+
c2V0VHJpZ2dlcmluZ0FjdGlvbihhY3Rpb24pOwogICAgICAgICBwb2xpY3lDaGVja2VyKCktPnN0
b3BDaGVjaygpOwpAQCAtMTQ2Niw3ICsxNDY2LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFdp
dGhEb2N1bWVudExvYWRlcgogICAgICAgICBwb2xpY3lDaGVja2VyKCktPnN0b3BDaGVjaygpOwog
ICAgICAgICBzZXRQb2xpY3lEb2N1bWVudExvYWRlcihsb2FkZXIpOwogICAgICAgICBpZiAobG9h
ZGVyLT50cmlnZ2VyaW5nQWN0aW9uKCkuaXNFbXB0eSgpKQotICAgICAgICAgICAgbG9hZGVyLT5z
ZXRUcmlnZ2VyaW5nQWN0aW9uKE5hdmlnYXRpb25BY3Rpb24obmV3VVJMLCBwb2xpY3lDaGVja2Vy
KCktPmxvYWRUeXBlKCksIGlzRm9ybVN1Ym1pc3Npb24pKTsKKyAgICAgICAgICAgIGxvYWRlci0+
c2V0VHJpZ2dlcmluZ0FjdGlvbihOYXZpZ2F0aW9uQWN0aW9uKG5ld1VSTCwgaXNGb3JtU3VibWlz
c2lvbiwgcG9saWN5Q2hlY2tlcigpLT5sb2FkVHlwZSgpKSk7CiAKICAgICAgICAgaWYgKEVsZW1l
bnQqIG93bmVyRWxlbWVudCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPm93bmVyRWxlbWVudCgpKSB7
CiAgICAgICAgICAgICBpZiAoIW93bmVyRWxlbWVudC0+ZGlzcGF0Y2hCZWZvcmVMb2FkRXZlbnQo
bG9hZGVyLT5yZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCkpKSB7CkBAIC0yMzc2LDkgKzIzNzYsMTIg
QEAgdm9pZCBGcmFtZUxvYWRlcjo6Y2hlY2tMb2FkQ29tcGxldGVGb3JUaAogICAgICAgICAgICAg
fQogICAgICAgICAgICAgaWYgKHNob3VsZFJlc2V0ICYmIGl0ZW0pCiAgICAgICAgICAgICAgICAg
aWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAg
cGFnZS0+YmFja0ZvcndhcmQoKS0+c2V0Q3VycmVudEl0ZW0oaXRlbS5nZXQoKSk7Ci0gICAgICAg
ICAgICAgICAgICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IG1fZnJhbWUtPnNldHRpbmdzKCk7Ci0g
ICAgICAgICAgICAgICAgICAgIHBhZ2UtPnNldEdsb2JhbEhpc3RvcnlJdGVtKCghc2V0dGluZ3Mg
fHwgc2V0dGluZ3MtPnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSkgPyAwIDogaXRlbS5nZXQoKSk7
CisgICAgICAgICAgICAgICAgICAgIC8vIERvIG5vdCBjaGFuZ2UgdGhlIGJhY2tGb3J3YXJkIGNv
bnRyb2xsZXIgaWYgaXQgaXMgYWxyZWFkeSBsb2FkaW5nIGEgbmV3IFVSTC4KKyAgICAgICAgICAg
ICAgICAgICAgaWYgKHBkbC0+dHJpZ2dlcmluZ0FjdGlvbigpLmhpc3RvcnlJdGVtKCkgPT0gcGFn
ZS0+YmFja0ZvcndhcmQoKS0+Y3VycmVudEl0ZW0oKSkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgcGFnZS0+YmFja0ZvcndhcmQoKS0+c2V0Q3VycmVudEl0ZW0oaXRlbS5nZXQoKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBtX2ZyYW1lLT5zZXR0aW5n
cygpOworICAgICAgICAgICAgICAgICAgICAgICAgcGFnZS0+c2V0R2xvYmFsSGlzdG9yeUl0ZW0o
KCFzZXR0aW5ncyB8fCBzZXR0aW5ncy0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpKSA/IDAgOiBp
dGVtLmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMjcyOSw3ICsyNzMyLDcgQEAgdm9pZCBG
cmFtZUxvYWRlcjo6bG9hZFBvc3RSZXF1ZXN0KGNvbnN0IAogICAgIHdvcmtpbmdSZXNvdXJjZVJl
cXVlc3Quc2V0SFRUUENvbnRlbnRUeXBlKGNvbnRlbnRUeXBlKTsKICAgICBhZGRFeHRyYUZpZWxk
c1RvUmVxdWVzdCh3b3JraW5nUmVzb3VyY2VSZXF1ZXN0LCBsb2FkVHlwZSwgdHJ1ZSwgdHJ1ZSk7
CiAKLSAgICBOYXZpZ2F0aW9uQWN0aW9uIGFjdGlvbih1cmwsIGxvYWRUeXBlLCB0cnVlLCBldmVu
dCk7CisgICAgTmF2aWdhdGlvbkFjdGlvbiBhY3Rpb24odXJsLCB0cnVlLCBsb2FkVHlwZSwgZXZl
bnQpOwogCiAgICAgaWYgKCFmcmFtZU5hbWUuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIFRoZSBz
ZWFyY2ggZm9yIGEgdGFyZ2V0IGZyYW1lIGlzIGRvbmUgZWFybGllciBpbiB0aGUgY2FzZSBvZiBm
b3JtIHN1Ym1pc3Npb24uCkBAIC0zMTkzLDEwICszMTk2LDEwIEBAIHZvaWQgRnJhbWVMb2FkZXI6
Om5hdmlnYXRlVG9EaWZmZXJlbnREb2MKICAgICAgICAgLy8gZXh0cmVtZWx5IHJhcmUsIGJ1dCBp
biB0aGF0IGNhc2UgdGhlIHVzZXIgd2lsbCBnZXQgYW4gZXJyb3Igb24gdGhlIG5hdmlnYXRpb24u
CiAgICAgICAgIAogICAgICAgICBpZiAoUmVzb3VyY2VIYW5kbGU6OndpbGxMb2FkRnJvbUNhY2hl
KHJlcXVlc3QsIG1fZnJhbWUpKQotICAgICAgICAgICAgYWN0aW9uID0gTmF2aWdhdGlvbkFjdGlv
bihpdGVtVVJMLCBsb2FkVHlwZSwgZmFsc2UpOworICAgICAgICAgICAgYWN0aW9uID0gTmF2aWdh
dGlvbkFjdGlvbihpdGVtVVJMLCBsb2FkVHlwZSwgaXRlbSk7CiAgICAgICAgIGVsc2UgewogICAg
ICAgICAgICAgcmVxdWVzdC5zZXRDYWNoZVBvbGljeShSZWxvYWRJZ25vcmluZ0NhY2hlRGF0YSk7
Ci0gICAgICAgICAgICBhY3Rpb24gPSBOYXZpZ2F0aW9uQWN0aW9uKGl0ZW1VUkwsIE5hdmlnYXRp
b25UeXBlRm9ybVJlc3VibWl0dGVkKTsKKyAgICAgICAgICAgIGFjdGlvbiA9IE5hdmlnYXRpb25B
Y3Rpb24oaXRlbVVSTCwgTmF2aWdhdGlvblR5cGVGb3JtUmVzdWJtaXR0ZWQsIGl0ZW0pOwogICAg
ICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgc3dpdGNoIChsb2FkVHlwZSkgewpAQCAtMzIy
MSw3ICszMjI0LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bmF2aWdhdGVUb0RpZmZlcmVudERvYwog
ICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAKLSAgICAg
ICAgYWN0aW9uID0gTmF2aWdhdGlvbkFjdGlvbihpdGVtT3JpZ2luYWxVUkwsIGxvYWRUeXBlLCBm
YWxzZSk7CisgICAgICAgIGFjdGlvbiA9IE5hdmlnYXRpb25BY3Rpb24oaXRlbU9yaWdpbmFsVVJM
LCBsb2FkVHlwZSwgaXRlbSk7CiAgICAgfQogICAgIAogICAgIGlmICghYWRkZWRFeHRyYUZpZWxk
cykKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uY3BwCShyZXZpc2lvbiA3MjI2NikK
KysrIFdlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01MiwyOCArNTIsMzAgQEAgTmF2aWdhdGlvbkFjdGlvbjo6TmF2aWdhdGlvbkFjdGlvbigpCiB7
CiB9CiAKLU5hdmlnYXRpb25BY3Rpb246Ok5hdmlnYXRpb25BY3Rpb24oY29uc3QgS1VSTCYgdXJs
LCBOYXZpZ2F0aW9uVHlwZSB0eXBlKQorTmF2aWdhdGlvbkFjdGlvbjo6TmF2aWdhdGlvbkFjdGlv
bihjb25zdCBLVVJMJiB1cmwsIE5hdmlnYXRpb25UeXBlIHR5cGUsIFBhc3NSZWZQdHI8RXZlbnQ+
IGV2ZW50KQogICAgIDogbV9VUkwodXJsKQogICAgICwgbV90eXBlKHR5cGUpCisgICAgLCBtX2V2
ZW50KGV2ZW50KQogewogfQogCi1OYXZpZ2F0aW9uQWN0aW9uOjpOYXZpZ2F0aW9uQWN0aW9uKGNv
bnN0IEtVUkwmIHVybCwgRnJhbWVMb2FkVHlwZSBmcmFtZUxvYWRUeXBlLAotICAgICAgICBib29s
IGlzRm9ybVN1Ym1pc3Npb24pCitOYXZpZ2F0aW9uQWN0aW9uOjpOYXZpZ2F0aW9uQWN0aW9uKGNv
bnN0IEtVUkwmIHVybCwgTmF2aWdhdGlvblR5cGUgdHlwZSwgUGFzc1JlZlB0cjxIaXN0b3J5SXRl
bT4gaGlzdG9yeUl0ZW0pCiAgICAgOiBtX1VSTCh1cmwpCi0gICAgLCBtX3R5cGUobmF2aWdhdGlv
blR5cGUoZnJhbWVMb2FkVHlwZSwgaXNGb3JtU3VibWlzc2lvbiwgMCkpCisgICAgLCBtX3R5cGUo
dHlwZSkKKyAgICAsIG1faGlzdG9yeUl0ZW0oaGlzdG9yeUl0ZW0pCiB7CiB9CiAKLU5hdmlnYXRp
b25BY3Rpb246Ok5hdmlnYXRpb25BY3Rpb24oY29uc3QgS1VSTCYgdXJsLCBOYXZpZ2F0aW9uVHlw
ZSB0eXBlLCBQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKK05hdmlnYXRpb25BY3Rpb246Ok5hdmln
YXRpb25BY3Rpb24oY29uc3QgS1VSTCYgdXJsLCBGcmFtZUxvYWRUeXBlIGZyYW1lTG9hZFR5cGUs
CisgICAgICAgIFBhc3NSZWZQdHI8SGlzdG9yeUl0ZW0+IGhpc3RvcnlJdGVtKQogICAgIDogbV9V
UkwodXJsKQotICAgICwgbV90eXBlKHR5cGUpCi0gICAgLCBtX2V2ZW50KGV2ZW50KQorICAgICwg
bV90eXBlKG5hdmlnYXRpb25UeXBlKGZyYW1lTG9hZFR5cGUsIGZhbHNlLCAwKSkKKyAgICAsIG1f
aGlzdG9yeUl0ZW0oaGlzdG9yeUl0ZW0pCiB7CiB9CiAKLU5hdmlnYXRpb25BY3Rpb246Ok5hdmln
YXRpb25BY3Rpb24oY29uc3QgS1VSTCYgdXJsLCBGcmFtZUxvYWRUeXBlIGZyYW1lTG9hZFR5cGUs
Ci0gICAgICAgIGJvb2wgaXNGb3JtU3VibWlzc2lvbiwgUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQp
CitOYXZpZ2F0aW9uQWN0aW9uOjpOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IEtVUkwmIHVybCwgYm9v
bCBpc0Zvcm1TdWJtaXNzaW9uLAorICAgICAgICBGcmFtZUxvYWRUeXBlIGZyYW1lTG9hZFR5cGUs
IFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQogICAgIDogbV9VUkwodXJsKQogICAgICwgbV90eXBl
KG5hdmlnYXRpb25UeXBlKGZyYW1lTG9hZFR5cGUsIGlzRm9ybVN1Ym1pc3Npb24sIGV2ZW50KSkK
ICAgICAsIG1fZXZlbnQoZXZlbnQpCkluZGV4OiBXZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0
aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5oCShy
ZXZpc2lvbiA3MjI2NikKKysrIFdlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uaAkod29y
a2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNs
dWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCisjaW5jbHVkZSAiSGlzdG9yeUl0ZW0uaCIKICNpbmNs
dWRlICJLVVJMLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIApAQCAtMzksMjEgKzQwLDIz
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBOYXZpZ2F0aW9uQWN0aW9uIHsKICAg
ICBwdWJsaWM6CiAgICAgICAgIE5hdmlnYXRpb25BY3Rpb24oKTsKLSAgICAgICAgTmF2aWdhdGlv
bkFjdGlvbihjb25zdCBLVVJMJiwgTmF2aWdhdGlvblR5cGUpOwotICAgICAgICBOYXZpZ2F0aW9u
QWN0aW9uKGNvbnN0IEtVUkwmLCBGcmFtZUxvYWRUeXBlLCBib29sIGlzRm9ybVN1Ym1pc3Npb24p
OwotICAgICAgICBOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IEtVUkwmLCBOYXZpZ2F0aW9uVHlwZSwg
UGFzc1JlZlB0cjxFdmVudD4pOwotICAgICAgICBOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IEtVUkwm
LCBGcmFtZUxvYWRUeXBlLCBib29sIGlzRm9ybVN1Ym1pc3Npb24sIFBhc3NSZWZQdHI8RXZlbnQ+
KTsKKyAgICAgICAgTmF2aWdhdGlvbkFjdGlvbihjb25zdCBLVVJMJiwgTmF2aWdhdGlvblR5cGUs
IFBhc3NSZWZQdHI8RXZlbnQ+ID0gMCk7CisgICAgICAgIE5hdmlnYXRpb25BY3Rpb24oY29uc3Qg
S1VSTCYsIE5hdmlnYXRpb25UeXBlLCBQYXNzUmVmUHRyPEhpc3RvcnlJdGVtPik7CisgICAgICAg
IE5hdmlnYXRpb25BY3Rpb24oY29uc3QgS1VSTCYsIEZyYW1lTG9hZFR5cGUsIFBhc3NSZWZQdHI8
SGlzdG9yeUl0ZW0+ID0gMCk7CisgICAgICAgIE5hdmlnYXRpb25BY3Rpb24oY29uc3QgS1VSTCYs
IGJvb2wgaXNGb3JtU3VibWlzc2lvbiwgRnJhbWVMb2FkVHlwZSwgUGFzc1JlZlB0cjxFdmVudD4g
PSAwKTsKIAogICAgICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX1VSTC5pc0Vt
cHR5KCk7IH0KIAogICAgICAgICBLVVJMIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fVVJMOyB9CiAg
ICAgICAgIE5hdmlnYXRpb25UeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KICAg
ICAgICAgY29uc3QgRXZlbnQqIGV2ZW50KCkgY29uc3QgeyByZXR1cm4gbV9ldmVudC5nZXQoKTsg
fQorICAgICAgICBjb25zdCBIaXN0b3J5SXRlbSogaGlzdG9yeUl0ZW0oKSBjb25zdCB7IHJldHVy
biBtX2hpc3RvcnlJdGVtLmdldCgpOyB9CiAKICAgICBwcml2YXRlOgogICAgICAgICBLVVJMIG1f
VVJMOwogICAgICAgICBOYXZpZ2F0aW9uVHlwZSBtX3R5cGU7CiAgICAgICAgIFJlZlB0cjxFdmVu
dD4gbV9ldmVudDsKKyAgICAgICAgUmVmUHRyPEhpc3RvcnlJdGVtPiBtX2hpc3RvcnlJdGVtOwog
ICAgIH07CiAKIH0KSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDcyMjY2KQorKysgTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTAtMTEtMTcgIENoYXJs
aWUgUmVpcyAgPGNyZWlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBGcmFtZUxvYWRlcjo6Y2hlY2tMb2FkQ29tcGxldGVGb3JU
aGlzRnJhbWUgdXNlcyB3cm9uZyBoaXN0b3J5IGl0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4ODEyCisKKyAgICAgICAgVGVzdCB0aGF0IHdlIGF2
b2lkIHVwZGF0aW5nIGJhY2svZm9yd2FyZCBsaXN0IG9uIGEgY2FuY2VsZWQgbmF2aWdhdGlvbgor
ICAgICAgICBpZiBhIG5ldyBuYXZpZ2F0aW9uIGlzIGFscmVhZHkgaW4gcHJvY2Vzcy4KKworICAg
ICAgICAqIGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9iYWNrLXR3aWNlLXdpdGhvdXQtY29tbWl0Lmh0
bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2JhY2stdHdpY2Utd2l0aG91dC1j
b21taXQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNv
dXJjZXMvYmFjay10d2ljZS1wYWdlLTIuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL25hdmln
YXRpb24vcmVzb3VyY2VzL2JhY2stdHdpY2UtcGFnZS0zLmh0bWw6CisKIDIwMTAtMTEtMTcgIERh
dmlkIExldmluICA8bGV2aW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVwZGF0ZSBjaHJvbWl1
bSByZXN1bHRzIGFmdGVyIHI3MjEyNSBhbmQgcjcyMTczLgpJbmRleDogTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9uYXZpZ2F0aW9uL2JhY2stdHdpY2Utd2l0aG91dC1jb21taXQtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9iYWNrLXR3
aWNlLXdpdGhvdXQtY29tbWl0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9iYWNrLXR3aWNlLXdpdGhvdXQtY29tbWl0LWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5IEBACitUaGlzIHRlc3QgY2hlY2tzIHRo
YXQgZ29pbmcgYmFjayB0d2ljZSB3aXRob3V0IGNvbW1pdHRpbmcgZG9lc24ndCBjb3JydXB0IHRo
ZSBiYWNrL2ZvcndhcmQgbGlzdC4KKworSWYgdGVzdGluZyBtYW51YWxseSwgY2xpY2sgaGVyZS4K
KworPT09PT09PT09PT09PT0gQmFjayBGb3J3YXJkIExpc3QgPT09PT09PT09PT09PT0KK2N1cnIt
PiAgaHR0cDovLzEyNy4wLjAuMTo4MDAwL25hdmlnYXRpb24vYmFjay10d2ljZS13aXRob3V0LWNv
bW1pdC5odG1sICAqKm5hdiB0YXJnZXQqKgorICAgICAgICBodHRwOi8vMTI3LjAuMC4xOjgwMDAv
bmF2aWdhdGlvbi9yZXNvdXJjZXMvYmFjay10d2ljZS1wYWdlLTIuaHRtbCAgKipuYXYgdGFyZ2V0
KioKKyAgICAgICAgaHR0cDovLzEyNy4wLjAuMTo4MDAwL25hdmlnYXRpb24vcmVzb3VyY2VzL2Jh
Y2stdHdpY2UtcGFnZS0zLmh0bWwgICoqbmF2IHRhcmdldCoqCis9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9uYXZpZ2F0aW9uL2JhY2stdHdpY2Utd2l0aG91dC1jb21taXQuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vYmFjay10d2ljZS13aXRob3V0LWNv
bW1pdC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0
aW9uL2JhY2stdHdpY2Utd2l0aG91dC1jb21taXQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwyMiBAQAorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQmFja0ZvcndhcmRMaXN0KCk7CisgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgLy8gVmlzaXQgdHdvIHBhZ2VzLCB0
aGVuIGdvIGJhY2sgdG8gcGFnZSAyLCB3aGljaCBoYXMgYSBzbG93IGZyYW1lIHRoZSBzZWNvbmQg
dGltZS4KKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5xdWV1ZUxvYWQoInJlc291cmNlcy9iYWNr
LXR3aWNlLXBhZ2UtMi5odG1sIik7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIucXVldWVMb2Fk
KCJyZXNvdXJjZXMvYmFjay10d2ljZS1wYWdlLTMuaHRtbCIpOworICAgIGxheW91dFRlc3RDb250
cm9sbGVyLnF1ZXVlQmFja05hdmlnYXRpb24oMSk7CisKKyAgICAvLyBOb3cgY29tcGV0ZSB3aXRo
IHBhZ2UgMidzIGhpc3RvcnkuYmFjaygpIGNhbGwsIHRvIGEgZGlmZmVyZW50IGhpc3RvcnkgaXRl
bS4KKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5xdWV1ZUJhY2tOYXZpZ2F0aW9uKDIpOworCisg
ICAgLy8gUmVwZWF0IHRoZSB0ZXN0LCBidXQgY29tcGV0ZSB3aXRoIGhpc3RvcnkuYmFjaygpIHRv
IHRoZSBzYW1lIGhpc3RvcnkgaXRlbS4KKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5xdWV1ZUxv
YWQoInJlc291cmNlcy9iYWNrLXR3aWNlLXBhZ2UtMi5odG1sIik7CisgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIucXVldWVMb2FkKCJyZXNvdXJjZXMvYmFjay10d2ljZS1wYWdlLTMuaHRtbCIpOwor
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLnF1ZXVlQmFja05hdmlnYXRpb24oMSk7CisgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIucXVldWVCYWNrTmF2aWdhdGlvbigxKTsKK30KKzwvc2NyaXB0Pgor
PHA+VGhpcyB0ZXN0IGNoZWNrcyB0aGF0IGdvaW5nIGJhY2sgdHdpY2Ugd2l0aG91dCBjb21taXR0
aW5nIGRvZXNuJ3QgY29ycnVwdCB0aGUgYmFjay9mb3J3YXJkIGxpc3QuCis8cD5JZiB0ZXN0aW5n
IG1hbnVhbGx5LCA8YSBocmVmPSJyZXNvdXJjZXMvYmFjay10d2ljZS1wYWdlLTIuaHRtbCI+Y2xp
Y2sgaGVyZTwvYT4uCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcmVz
b3VyY2VzL2JhY2stdHdpY2UtcGFnZS0yLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Jlc291cmNlcy9iYWNrLXR3aWNlLXBhZ2UtMi5odG1sCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Jlc291cmNl
cy9iYWNrLXR3aWNlLXBhZ2UtMi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIxIEBACis8
cD5QYWdlIDIuCis8cD5UaGlzIHRlc3QgY2hlY2tzIHRoYXQgZ29pbmcgYmFjayB0d2ljZSB3aXRo
b3V0IGNvbW1pdHRpbmcgZG9lc24ndCBjb3JydXB0IHRoZSBiYWNrL2ZvcndhcmQgbGlzdC4KKzxw
PklmIHRlc3RpbmcgbWFudWFsbHksIDxhIGhyZWY9ImJhY2stdHdpY2UtcGFnZS0zLmh0bWwiPmNs
aWNrIGhlcmU8L2E+LgorCis8c2NyaXB0PgoraWYgKCF3aW5kb3cubG9jYWxTdG9yYWdlLnN0YXJ0
ZWQpIHsKKyAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnN0YXJ0ZWQgPSB0cnVlOworfSBlbHNlIHsK
KyAgICBkZWxldGUgd2luZG93LmxvY2FsU3RvcmFnZS5zdGFydGVkOworCisgICAgLy8gVGhlIHNl
Y29uZCB0aW1lIHdlIHZpc2l0IHRoZSBwYWdlIChpLmUuLCB3aGlsZSBnb2luZyBiYWNrKSwgaW5z
ZXJ0IGFuCisgICAgLy8gaWZyYW1lIHRoYXQgZG9lc24ndCBjb21taXQgZHVyaW5nIHRoZSB0ZXN0
LgorICAgIHZhciBmID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7CisgICAgZi5z
cmMgPSAiLi4vLi4vaGlzdG9yeS9yZXNvdXJjZXMvYmFjay1kdXJpbmctb25sb2FkLWh1bmctcGFn
ZS5waHAiOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZik7CisKKyAgICAvLyBOb3cg
Z28gYmFjay4gIFRoaXMgd2lsbCBjb21wZXRlIHdpdGggdGhlIHNlY29uZCBxdWV1ZUJhY2tOYXZp
Z2F0aW9uCisgICAgLy8gZnJvbSBiYWNrLXR3aWNlLXdpdGhvdXQtY29tbWl0Lmh0bWwuCisgICAg
aGlzdG9yeS5iYWNrKCk7Cit9Cis8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVz
dHMvbmF2aWdhdGlvbi9yZXNvdXJjZXMvYmFjay10d2ljZS1wYWdlLTMuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcmVzb3VyY2VzL2JhY2stdHdp
Y2UtcGFnZS0zLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25h
dmlnYXRpb24vcmVzb3VyY2VzL2JhY2stdHdpY2UtcGFnZS0zLmh0bWwJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMyBAQAorPHA+UGFnZSAzLgorPHA+VGhpcyB0ZXN0IGNoZWNrcyB0aGF0IGdvaW5n
IGJhY2sgdHdpY2Ugd2l0aG91dCBjb21taXR0aW5nIGRvZXNuJ3QgY29ycnVwdCB0aGUgYmFjay9m
b3J3YXJkIGxpc3QuCis8cD5JZiB0ZXN0aW5nIG1hbnVhbGx5LCBob2xkIGRvd24gdGhlIGJhY2sg
a2V5Ym9hcmQgc2hvcnRjdXQgb3IgY2xpY2sgYmFjayB0d2ljZSBxdWlja2x5Lgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75044</attachid>
            <date>2010-11-29 11:36:53 -0800</date>
            <delta_ts>2011-01-18 14:57:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-48812-20101129113652.patch</filename>
            <type>text/plain</type>
            <size>13230</size>
            <attacher name="Charles Reis">creis</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MjgwNikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMTAtMTEtMjkgIENoYXJsaWUgUmVpcyAgPGNyZWlzQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBG
cmFtZUxvYWRlcjo6Y2hlY2tMb2FkQ29tcGxldGVGb3JUaGlzRnJhbWUgdXNlcyB3cm9uZyBoaXN0
b3J5IGl0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTQ4ODEyCisKKyAgICAgICAgQXZvaWRzIHVwZGF0aW5nIGJhY2svZm9yd2FyZCBsaXN0IG9uIGEg
Y2FuY2VsZWQgbmF2aWdhdGlvbiBpZiBhIG5ldworICAgICAgICBuYXZpZ2F0aW9uIGlzIGFscmVh
ZHkgaW4gcHJvZ3Jlc3MuCisKKyAgICAgICAgVGVzdDogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2Jh
Y2stdHdpY2Utd2l0aG91dC1jb21taXQuaHRtbAorCisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjaGVja0xvYWRDb21wbGV0
ZUZvclRoaXNGcmFtZSk6CisgICAgICAgICogbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uY3BwOgor
ICAgICAgICAqIGxvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmg6IEFkZCBhIEhpc3RvcnlJdGVtIGZp
ZWxkIGFuZCByZWZhY3RvcnMgb3ZlcmxvYWRzLgorCiAyMDEwLTExLTI5ICBXLiBKYW1lcyBNYWNM
ZWFuICA8d2ptYWNsZWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgIFJldmlld2VkIGJ5IERpcmsg
U2NodWx6ZS4KSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJldmlzaW9uIDcyODA2KQorKysg
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzIwLDcg
KzEzMjAsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkVVJMKGNvbnN0IEtVUkwmIG5lCiAgICAg
aWYgKG1fcGFnZURpc21pc3NhbEV2ZW50QmVpbmdEaXNwYXRjaGVkKQogICAgICAgICByZXR1cm47
CiAKLSAgICBOYXZpZ2F0aW9uQWN0aW9uIGFjdGlvbihuZXdVUkwsIG5ld0xvYWRUeXBlLCBpc0Zv
cm1TdWJtaXNzaW9uLCBldmVudCk7CisgICAgTmF2aWdhdGlvbkFjdGlvbiBhY3Rpb24obmV3VVJM
LCBpc0Zvcm1TdWJtaXNzaW9uLCBuZXdMb2FkVHlwZSwgZXZlbnQpOwogCiAgICAgaWYgKCF0YXJn
ZXRGcmFtZSAmJiAhZnJhbWVOYW1lLmlzRW1wdHkoKSkgewogICAgICAgICBwb2xpY3lDaGVja2Vy
KCktPmNoZWNrTmV3V2luZG93UG9saWN5KGFjdGlvbiwgRnJhbWVMb2FkZXI6OmNhbGxDb250aW51
ZUxvYWRBZnRlck5ld1dpbmRvd1BvbGljeSwKQEAgLTE0NTcsNyArMTQ1Nyw3IEBAIHZvaWQgRnJh
bWVMb2FkZXI6OmxvYWRXaXRoRG9jdW1lbnRMb2FkZXIKIAogICAgIGlmIChzaG91bGRTY3JvbGxU
b0FuY2hvcihpc0Zvcm1TdWJtaXNzaW9uLCBwb2xpY3lDaGVja2VyKCktPmxvYWRUeXBlKCksIG5l
d1VSTCkpIHsKICAgICAgICAgUmVmUHRyPERvY3VtZW50TG9hZGVyPiBvbGREb2N1bWVudExvYWRl
ciA9IG1fZG9jdW1lbnRMb2FkZXI7Ci0gICAgICAgIE5hdmlnYXRpb25BY3Rpb24gYWN0aW9uKG5l
d1VSTCwgcG9saWN5Q2hlY2tlcigpLT5sb2FkVHlwZSgpLCBpc0Zvcm1TdWJtaXNzaW9uKTsKKyAg
ICAgICAgTmF2aWdhdGlvbkFjdGlvbiBhY3Rpb24obmV3VVJMLCBpc0Zvcm1TdWJtaXNzaW9uLCBw
b2xpY3lDaGVja2VyKCktPmxvYWRUeXBlKCkpOwogCiAgICAgICAgIG9sZERvY3VtZW50TG9hZGVy
LT5zZXRUcmlnZ2VyaW5nQWN0aW9uKGFjdGlvbik7CiAgICAgICAgIHBvbGljeUNoZWNrZXIoKS0+
c3RvcENoZWNrKCk7CkBAIC0xNDcwLDcgKzE0NzAsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2Fk
V2l0aERvY3VtZW50TG9hZGVyCiAgICAgICAgIHBvbGljeUNoZWNrZXIoKS0+c3RvcENoZWNrKCk7
CiAgICAgICAgIHNldFBvbGljeURvY3VtZW50TG9hZGVyKGxvYWRlcik7CiAgICAgICAgIGlmIChs
b2FkZXItPnRyaWdnZXJpbmdBY3Rpb24oKS5pc0VtcHR5KCkpCi0gICAgICAgICAgICBsb2FkZXIt
PnNldFRyaWdnZXJpbmdBY3Rpb24oTmF2aWdhdGlvbkFjdGlvbihuZXdVUkwsIHBvbGljeUNoZWNr
ZXIoKS0+bG9hZFR5cGUoKSwgaXNGb3JtU3VibWlzc2lvbikpOworICAgICAgICAgICAgbG9hZGVy
LT5zZXRUcmlnZ2VyaW5nQWN0aW9uKE5hdmlnYXRpb25BY3Rpb24obmV3VVJMLCBpc0Zvcm1TdWJt
aXNzaW9uLCBwb2xpY3lDaGVja2VyKCktPmxvYWRUeXBlKCkpKTsKIAogICAgICAgICBpZiAoRWxl
bWVudCogb3duZXJFbGVtZW50ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+b3duZXJFbGVtZW50KCkp
IHsKICAgICAgICAgICAgIGlmICghb3duZXJFbGVtZW50LT5kaXNwYXRjaEJlZm9yZUxvYWRFdmVu
dChsb2FkZXItPnJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKSkpIHsKQEAgLTIzODAsOSArMjM4MCwx
NCBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjaGVja0xvYWRDb21wbGV0ZUZvclRoCiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBpZiAoc2hvdWxkUmVzZXQgJiYgaXRlbSkKICAgICAgICAgICAgICAg
ICBpZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkgewotICAgICAgICAgICAgICAgICAg
ICBwYWdlLT5iYWNrRm9yd2FyZCgpLT5zZXRDdXJyZW50SXRlbShpdGVtLmdldCgpKTsKLSAgICAg
ICAgICAgICAgICAgICAgU2V0dGluZ3MqIHNldHRpbmdzID0gbV9mcmFtZS0+c2V0dGluZ3MoKTsK
LSAgICAgICAgICAgICAgICAgICAgcGFnZS0+c2V0R2xvYmFsSGlzdG9yeUl0ZW0oKCFzZXR0aW5n
cyB8fCBzZXR0aW5ncy0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpKSA/IDAgOiBpdGVtLmdldCgp
KTsKKyAgICAgICAgICAgICAgICAgICAgLy8gV2UgaGF2ZSBjYW5jZWxlZCBhIHJlcXVlc3QgYW5k
IG5lZWQgdG8gcmVzZXQgdGhlIGJhY2tGb3J3YXJkCisgICAgICAgICAgICAgICAgICAgIC8vIGNv
bnRyb2xsZXIuICBPbmx5IGRvIHRoaXMgaWYgdGhlIGNhbmNlbGVkIHJlcXVlc3Qgc3RpbGwgY29y
cmVzcG9uZHMKKyAgICAgICAgICAgICAgICAgICAgLy8gdG8gdGhlIHByb3Zpc2lvbmFsIGl0ZW0s
IG5vdCBpZiB3ZSd2ZSBzdGFydGVkIGxvYWRpbmcgYSBuZXcgVVJMLgorICAgICAgICAgICAgICAg
ICAgICBpZiAocGRsLT50cmlnZ2VyaW5nQWN0aW9uKCkuaGlzdG9yeUl0ZW0oKSA9PSBoaXN0b3J5
KCktPnByb3Zpc2lvbmFsSXRlbSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwYWdlLT5i
YWNrRm9yd2FyZCgpLT5zZXRDdXJyZW50SXRlbShpdGVtLmdldCgpKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IG1fZnJhbWUtPnNldHRpbmdzKCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBwYWdlLT5zZXRHbG9iYWxIaXN0b3J5SXRlbSgoIXNldHRpbmdz
IHx8IHNldHRpbmdzLT5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkpID8gMCA6IGl0ZW0uZ2V0KCkp
OworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CkBAIC0yNzMzLDcgKzI3MzgsNyBAQCB2b2lkIEZyYW1lTG9hZGVy
Ojpsb2FkUG9zdFJlcXVlc3QoY29uc3QgCiAgICAgd29ya2luZ1Jlc291cmNlUmVxdWVzdC5zZXRI
VFRQQ29udGVudFR5cGUoY29udGVudFR5cGUpOwogICAgIGFkZEV4dHJhRmllbGRzVG9SZXF1ZXN0
KHdvcmtpbmdSZXNvdXJjZVJlcXVlc3QsIGxvYWRUeXBlLCB0cnVlLCB0cnVlKTsKIAotICAgIE5h
dmlnYXRpb25BY3Rpb24gYWN0aW9uKHVybCwgbG9hZFR5cGUsIHRydWUsIGV2ZW50KTsKKyAgICBO
YXZpZ2F0aW9uQWN0aW9uIGFjdGlvbih1cmwsIHRydWUsIGxvYWRUeXBlLCBldmVudCk7CiAKICAg
ICBpZiAoIWZyYW1lTmFtZS5pc0VtcHR5KCkpIHsKICAgICAgICAgLy8gVGhlIHNlYXJjaCBmb3Ig
YSB0YXJnZXQgZnJhbWUgaXMgZG9uZSBlYXJsaWVyIGluIHRoZSBjYXNlIG9mIGZvcm0gc3VibWlz
c2lvbi4KQEAgLTMxOTcsMTAgKzMyMDIsMTAgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bmF2aWdhdGVU
b0RpZmZlcmVudERvYwogICAgICAgICAvLyBleHRyZW1lbHkgcmFyZSwgYnV0IGluIHRoYXQgY2Fz
ZSB0aGUgdXNlciB3aWxsIGdldCBhbiBlcnJvciBvbiB0aGUgbmF2aWdhdGlvbi4KICAgICAgICAg
CiAgICAgICAgIGlmIChSZXNvdXJjZUhhbmRsZTo6d2lsbExvYWRGcm9tQ2FjaGUocmVxdWVzdCwg
bV9mcmFtZSkpCi0gICAgICAgICAgICBhY3Rpb24gPSBOYXZpZ2F0aW9uQWN0aW9uKGl0ZW1VUkws
IGxvYWRUeXBlLCBmYWxzZSk7CisgICAgICAgICAgICBhY3Rpb24gPSBOYXZpZ2F0aW9uQWN0aW9u
KGl0ZW1VUkwsIGxvYWRUeXBlLCBpdGVtKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBy
ZXF1ZXN0LnNldENhY2hlUG9saWN5KFJlbG9hZElnbm9yaW5nQ2FjaGVEYXRhKTsKLSAgICAgICAg
ICAgIGFjdGlvbiA9IE5hdmlnYXRpb25BY3Rpb24oaXRlbVVSTCwgTmF2aWdhdGlvblR5cGVGb3Jt
UmVzdWJtaXR0ZWQpOworICAgICAgICAgICAgYWN0aW9uID0gTmF2aWdhdGlvbkFjdGlvbihpdGVt
VVJMLCBOYXZpZ2F0aW9uVHlwZUZvcm1SZXN1Ym1pdHRlZCwgaXRlbSk7CiAgICAgICAgIH0KICAg
ICB9IGVsc2UgewogICAgICAgICBzd2l0Y2ggKGxvYWRUeXBlKSB7CkBAIC0zMjI1LDcgKzMyMzAs
NyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpuYXZpZ2F0ZVRvRGlmZmVyZW50RG9jCiAgICAgICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KIAotICAgICAgICBhY3Rpb24g
PSBOYXZpZ2F0aW9uQWN0aW9uKGl0ZW1PcmlnaW5hbFVSTCwgbG9hZFR5cGUsIGZhbHNlKTsKKyAg
ICAgICAgYWN0aW9uID0gTmF2aWdhdGlvbkFjdGlvbihpdGVtT3JpZ2luYWxVUkwsIGxvYWRUeXBl
LCBpdGVtKTsKICAgICB9CiAgICAgCiAgICAgaWYgKCFhZGRlZEV4dHJhRmllbGRzKQpJbmRleDog
V2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5jcHAJKHJldmlzaW9uIDcyODA2KQorKysgV2ViQ29y
ZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDI4ICs1
MiwzMCBAQCBOYXZpZ2F0aW9uQWN0aW9uOjpOYXZpZ2F0aW9uQWN0aW9uKCkKIHsKIH0KIAotTmF2
aWdhdGlvbkFjdGlvbjo6TmF2aWdhdGlvbkFjdGlvbihjb25zdCBLVVJMJiB1cmwsIE5hdmlnYXRp
b25UeXBlIHR5cGUpCitOYXZpZ2F0aW9uQWN0aW9uOjpOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IEtV
UkwmIHVybCwgTmF2aWdhdGlvblR5cGUgdHlwZSwgUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCiAg
ICAgOiBtX1VSTCh1cmwpCiAgICAgLCBtX3R5cGUodHlwZSkKKyAgICAsIG1fZXZlbnQoZXZlbnQp
CiB7CiB9CiAKLU5hdmlnYXRpb25BY3Rpb246Ok5hdmlnYXRpb25BY3Rpb24oY29uc3QgS1VSTCYg
dXJsLCBGcmFtZUxvYWRUeXBlIGZyYW1lTG9hZFR5cGUsCi0gICAgICAgIGJvb2wgaXNGb3JtU3Vi
bWlzc2lvbikKK05hdmlnYXRpb25BY3Rpb246Ok5hdmlnYXRpb25BY3Rpb24oY29uc3QgS1VSTCYg
dXJsLCBOYXZpZ2F0aW9uVHlwZSB0eXBlLCBQYXNzUmVmUHRyPEhpc3RvcnlJdGVtPiBoaXN0b3J5
SXRlbSkKICAgICA6IG1fVVJMKHVybCkKLSAgICAsIG1fdHlwZShuYXZpZ2F0aW9uVHlwZShmcmFt
ZUxvYWRUeXBlLCBpc0Zvcm1TdWJtaXNzaW9uLCAwKSkKKyAgICAsIG1fdHlwZSh0eXBlKQorICAg
ICwgbV9oaXN0b3J5SXRlbShoaXN0b3J5SXRlbSkKIHsKIH0KIAotTmF2aWdhdGlvbkFjdGlvbjo6
TmF2aWdhdGlvbkFjdGlvbihjb25zdCBLVVJMJiB1cmwsIE5hdmlnYXRpb25UeXBlIHR5cGUsIFBh
c3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQorTmF2aWdhdGlvbkFjdGlvbjo6TmF2aWdhdGlvbkFjdGlv
bihjb25zdCBLVVJMJiB1cmwsIEZyYW1lTG9hZFR5cGUgZnJhbWVMb2FkVHlwZSwKKyAgICAgICAg
UGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4gaGlzdG9yeUl0ZW0pCiAgICAgOiBtX1VSTCh1cmwpCi0g
ICAgLCBtX3R5cGUodHlwZSkKLSAgICAsIG1fZXZlbnQoZXZlbnQpCisgICAgLCBtX3R5cGUobmF2
aWdhdGlvblR5cGUoZnJhbWVMb2FkVHlwZSwgZmFsc2UsIDApKQorICAgICwgbV9oaXN0b3J5SXRl
bShoaXN0b3J5SXRlbSkKIHsKIH0KIAotTmF2aWdhdGlvbkFjdGlvbjo6TmF2aWdhdGlvbkFjdGlv
bihjb25zdCBLVVJMJiB1cmwsIEZyYW1lTG9hZFR5cGUgZnJhbWVMb2FkVHlwZSwKLSAgICAgICAg
Ym9vbCBpc0Zvcm1TdWJtaXNzaW9uLCBQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKK05hdmlnYXRp
b25BY3Rpb246Ok5hdmlnYXRpb25BY3Rpb24oY29uc3QgS1VSTCYgdXJsLCBib29sIGlzRm9ybVN1
Ym1pc3Npb24sCisgICAgICAgIEZyYW1lTG9hZFR5cGUgZnJhbWVMb2FkVHlwZSwgUGFzc1JlZlB0
cjxFdmVudD4gZXZlbnQpCiAgICAgOiBtX1VSTCh1cmwpCiAgICAgLCBtX3R5cGUobmF2aWdhdGlv
blR5cGUoZnJhbWVMb2FkVHlwZSwgaXNGb3JtU3VibWlzc2lvbiwgZXZlbnQpKQogICAgICwgbV9l
dmVudChldmVudCkKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmgJKHJldmlzaW9uIDcy
ODA2KQorKysgV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMSw2ICszMSw3IEBACiAKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkZyYW1l
TG9hZGVyVHlwZXMuaCIKKyNpbmNsdWRlICJIaXN0b3J5SXRlbS5oIgogI2luY2x1ZGUgIktVUkwu
aCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCkBAIC0zOSwyMSArNDAsMjMgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgIGNsYXNzIE5hdmlnYXRpb25BY3Rpb24gewogICAgIHB1YmxpYzoK
ICAgICAgICAgTmF2aWdhdGlvbkFjdGlvbigpOwotICAgICAgICBOYXZpZ2F0aW9uQWN0aW9uKGNv
bnN0IEtVUkwmLCBOYXZpZ2F0aW9uVHlwZSk7Ci0gICAgICAgIE5hdmlnYXRpb25BY3Rpb24oY29u
c3QgS1VSTCYsIEZyYW1lTG9hZFR5cGUsIGJvb2wgaXNGb3JtU3VibWlzc2lvbik7Ci0gICAgICAg
IE5hdmlnYXRpb25BY3Rpb24oY29uc3QgS1VSTCYsIE5hdmlnYXRpb25UeXBlLCBQYXNzUmVmUHRy
PEV2ZW50Pik7Ci0gICAgICAgIE5hdmlnYXRpb25BY3Rpb24oY29uc3QgS1VSTCYsIEZyYW1lTG9h
ZFR5cGUsIGJvb2wgaXNGb3JtU3VibWlzc2lvbiwgUGFzc1JlZlB0cjxFdmVudD4pOworICAgICAg
ICBOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IEtVUkwmLCBOYXZpZ2F0aW9uVHlwZSwgUGFzc1JlZlB0
cjxFdmVudD4gPSAwKTsKKyAgICAgICAgTmF2aWdhdGlvbkFjdGlvbihjb25zdCBLVVJMJiwgTmF2
aWdhdGlvblR5cGUsIFBhc3NSZWZQdHI8SGlzdG9yeUl0ZW0+KTsKKyAgICAgICAgTmF2aWdhdGlv
bkFjdGlvbihjb25zdCBLVVJMJiwgRnJhbWVMb2FkVHlwZSwgUGFzc1JlZlB0cjxIaXN0b3J5SXRl
bT4gPSAwKTsKKyAgICAgICAgTmF2aWdhdGlvbkFjdGlvbihjb25zdCBLVVJMJiwgYm9vbCBpc0Zv
cm1TdWJtaXNzaW9uLCBGcmFtZUxvYWRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50PiA9IDApOwogCiAg
ICAgICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fVVJMLmlzRW1wdHkoKTsgfQog
CiAgICAgICAgIEtVUkwgdXJsKCkgY29uc3QgeyByZXR1cm4gbV9VUkw7IH0KICAgICAgICAgTmF2
aWdhdGlvblR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogICAgICAgICBjb25z
dCBFdmVudCogZXZlbnQoKSBjb25zdCB7IHJldHVybiBtX2V2ZW50LmdldCgpOyB9CisgICAgICAg
IGNvbnN0IEhpc3RvcnlJdGVtKiBoaXN0b3J5SXRlbSgpIGNvbnN0IHsgcmV0dXJuIG1faGlzdG9y
eUl0ZW0uZ2V0KCk7IH0KIAogICAgIHByaXZhdGU6CiAgICAgICAgIEtVUkwgbV9VUkw7CiAgICAg
ICAgIE5hdmlnYXRpb25UeXBlIG1fdHlwZTsKICAgICAgICAgUmVmUHRyPEV2ZW50PiBtX2V2ZW50
OworICAgICAgICBSZWZQdHI8SGlzdG9yeUl0ZW0+IG1faGlzdG9yeUl0ZW07CiAgICAgfTsKIAog
fQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L0NoYW5nZUxvZwkocmV2aXNpb24gNzI4MDYpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxMC0xMS0yOSAgQ2hhcmxpZSBSZWlzICA8
Y3JlaXNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEZyYW1lTG9hZGVyOjpjaGVja0xvYWRDb21wbGV0ZUZvclRoaXNGcmFtZSB1
c2VzIHdyb25nIGhpc3RvcnkgaXRlbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NDg4MTIKKworICAgICAgICBUZXN0IHRoYXQgd2UgYXZvaWQgdXBkYXRp
bmcgYmFjay9mb3J3YXJkIGxpc3Qgb24gYSBjYW5jZWxlZCBuYXZpZ2F0aW9uCisgICAgICAgIGlm
IGEgbmV3IG5hdmlnYXRpb24gaXMgYWxyZWFkeSBpbiBwcm9jZXNzLgorCisgICAgICAgICogaHR0
cC90ZXN0cy9uYXZpZ2F0aW9uL2JhY2stdHdpY2Utd2l0aG91dC1jb21taXQuaHRtbDoKKyAgICAg
ICAgKiBodHRwL3Rlc3RzL25hdmlnYXRpb24vYmFjay10d2ljZS13aXRob3V0LWNvbW1pdC1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Jlc291cmNlcy9iYWNr
LXR3aWNlLXBhZ2UtMi5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNv
dXJjZXMvYmFjay10d2ljZS1wYWdlLTMuaHRtbDoKKwogMjAxMC0xMS0yOSAgVml0YWx5IFJlcGVz
aGtvICA8dml0YWx5ckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZC4KSW5kZXg6
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9iYWNrLXR3aWNlLXdpdGhvdXQtY29t
bWl0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25h
dmlnYXRpb24vYmFjay10d2ljZS13aXRob3V0LWNvbW1pdC1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vYmFjay10d2ljZS13aXRo
b3V0LWNvbW1pdC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOSBAQAorVGhp
cyB0ZXN0IGNoZWNrcyB0aGF0IGdvaW5nIGJhY2sgdHdpY2Ugd2l0aG91dCBjb21taXR0aW5nIGRv
ZXNuJ3QgY29ycnVwdCB0aGUgYmFjay9mb3J3YXJkIGxpc3QuCisKK0lmIHRlc3RpbmcgbWFudWFs
bHksIGNsaWNrIGhlcmUuCisKKz09PT09PT09PT09PT09IEJhY2sgRm9yd2FyZCBMaXN0ID09PT09
PT09PT09PT09CitjdXJyLT4gIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9uYXZpZ2F0aW9uL2JhY2st
dHdpY2Utd2l0aG91dC1jb21taXQuaHRtbCAgKipuYXYgdGFyZ2V0KioKKyAgICAgICAgaHR0cDov
LzEyNy4wLjAuMTo4MDAwL25hdmlnYXRpb24vcmVzb3VyY2VzL2JhY2stdHdpY2UtcGFnZS0yLmh0
bWwgICoqbmF2IHRhcmdldCoqCisgICAgICAgIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9uYXZpZ2F0
aW9uL3Jlc291cmNlcy9iYWNrLXR3aWNlLXBhZ2UtMy5odG1sICAqKm5hdiB0YXJnZXQqKgorPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSW5kZXg6IExheW91
dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9iYWNrLXR3aWNlLXdpdGhvdXQtY29tbWl0Lmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2JhY2st
dHdpY2Utd2l0aG91dC1jb21taXQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvbmF2aWdhdGlvbi9iYWNrLXR3aWNlLXdpdGhvdXQtY29tbWl0Lmh0bWwJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMjIgQEAKKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEJhY2tGb3J3YXJkTGlz
dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgIC8vIFZp
c2l0IHR3byBwYWdlcywgdGhlbiBnbyBiYWNrIHRvIHBhZ2UgMiwgd2hpY2ggaGFzIGEgc2xvdyBm
cmFtZSB0aGUgc2Vjb25kIHRpbWUuCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIucXVldWVMb2Fk
KCJyZXNvdXJjZXMvYmFjay10d2ljZS1wYWdlLTIuaHRtbCIpOworICAgIGxheW91dFRlc3RDb250
cm9sbGVyLnF1ZXVlTG9hZCgicmVzb3VyY2VzL2JhY2stdHdpY2UtcGFnZS0zLmh0bWwiKTsKKyAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5xdWV1ZUJhY2tOYXZpZ2F0aW9uKDEpOworCisgICAgLy8g
Tm93IGNvbXBldGUgd2l0aCBwYWdlIDIncyBoaXN0b3J5LmJhY2soKSBjYWxsLCB0byBhIGRpZmZl
cmVudCBoaXN0b3J5IGl0ZW0uCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIucXVldWVCYWNrTmF2
aWdhdGlvbigyKTsKKworICAgIC8vIFJlcGVhdCB0aGUgdGVzdCwgYnV0IGNvbXBldGUgd2l0aCBo
aXN0b3J5LmJhY2soKSB0byB0aGUgc2FtZSBoaXN0b3J5IGl0ZW0uCisgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIucXVldWVMb2FkKCJyZXNvdXJjZXMvYmFjay10d2ljZS1wYWdlLTIuaHRtbCIpOwor
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLnF1ZXVlTG9hZCgicmVzb3VyY2VzL2JhY2stdHdpY2Ut
cGFnZS0zLmh0bWwiKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5xdWV1ZUJhY2tOYXZpZ2F0
aW9uKDEpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLnF1ZXVlQmFja05hdmlnYXRpb24oMSk7
Cit9Cis8L3NjcmlwdD4KKzxwPlRoaXMgdGVzdCBjaGVja3MgdGhhdCBnb2luZyBiYWNrIHR3aWNl
IHdpdGhvdXQgY29tbWl0dGluZyBkb2Vzbid0IGNvcnJ1cHQgdGhlIGJhY2svZm9yd2FyZCBsaXN0
LgorPHA+SWYgdGVzdGluZyBtYW51YWxseSwgPGEgaHJlZj0icmVzb3VyY2VzL2JhY2stdHdpY2Ut
cGFnZS0yLmh0bWwiPmNsaWNrIGhlcmU8L2E+LgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9uYXZpZ2F0aW9uL3Jlc291cmNlcy9iYWNrLXR3aWNlLXBhZ2UtMi5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNvdXJjZXMvYmFjay10d2lj
ZS1wYWdlLTIuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2
aWdhdGlvbi9yZXNvdXJjZXMvYmFjay10d2ljZS1wYWdlLTIuaHRtbAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwyMSBAQAorPHA+UGFnZSAyLgorPHA+VGhpcyB0ZXN0IGNoZWNrcyB0aGF0IGdvaW5n
IGJhY2sgdHdpY2Ugd2l0aG91dCBjb21taXR0aW5nIGRvZXNuJ3QgY29ycnVwdCB0aGUgYmFjay9m
b3J3YXJkIGxpc3QuCis8cD5JZiB0ZXN0aW5nIG1hbnVhbGx5LCA8YSBocmVmPSJiYWNrLXR3aWNl
LXBhZ2UtMy5odG1sIj5jbGljayBoZXJlPC9hPi4KKworPHNjcmlwdD4KK2lmICghd2luZG93Lmxv
Y2FsU3RvcmFnZS5zdGFydGVkKSB7CisgICAgd2luZG93LmxvY2FsU3RvcmFnZS5zdGFydGVkID0g
dHJ1ZTsKK30gZWxzZSB7CisgICAgZGVsZXRlIHdpbmRvdy5sb2NhbFN0b3JhZ2Uuc3RhcnRlZDsK
KworICAgIC8vIFRoZSBzZWNvbmQgdGltZSB3ZSB2aXNpdCB0aGUgcGFnZSAoaS5lLiwgd2hpbGUg
Z29pbmcgYmFjayksIGluc2VydCBhbgorICAgIC8vIGlmcmFtZSB0aGF0IGRvZXNuJ3QgY29tbWl0
IGR1cmluZyB0aGUgdGVzdC4KKyAgICB2YXIgZiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlm
cmFtZSIpOworICAgIGYuc3JjID0gIi4uLy4uL2hpc3RvcnkvcmVzb3VyY2VzL2JhY2stZHVyaW5n
LW9ubG9hZC1odW5nLXBhZ2UucGhwIjsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGYp
OworCisgICAgLy8gTm93IGdvIGJhY2suICBUaGlzIHdpbGwgY29tcGV0ZSB3aXRoIHRoZSBzZWNv
bmQgcXVldWVCYWNrTmF2aWdhdGlvbgorICAgIC8vIGZyb20gYmFjay10d2ljZS13aXRob3V0LWNv
bW1pdC5odG1sLgorICAgIGhpc3RvcnkuYmFjaygpOworfQorPC9zY3JpcHQ+CkluZGV4OiBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcmVzb3VyY2VzL2JhY2stdHdpY2UtcGFnZS0z
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Jl
c291cmNlcy9iYWNrLXR3aWNlLXBhZ2UtMy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Jlc291cmNlcy9iYWNrLXR3aWNlLXBhZ2UtMy5odG1s
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMgQEAKKzxwPlBhZ2UgMy4KKzxwPlRoaXMgdGVzdCBj
aGVja3MgdGhhdCBnb2luZyBiYWNrIHR3aWNlIHdpdGhvdXQgY29tbWl0dGluZyBkb2Vzbid0IGNv
cnJ1cHQgdGhlIGJhY2svZm9yd2FyZCBsaXN0LgorPHA+SWYgdGVzdGluZyBtYW51YWxseSwgaG9s
ZCBkb3duIHRoZSBiYWNrIGtleWJvYXJkIHNob3J0Y3V0IG9yIGNsaWNrIGJhY2sgdHdpY2UgcXVp
Y2tseS4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79337</attachid>
            <date>2011-01-18 14:57:25 -0800</date>
            <delta_ts>2011-01-20 12:02:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-48812-20110118145724.patch</filename>
            <type>text/plain</type>
            <size>16102</size>
            <attacher name="Charles Reis">creis</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc2MDI1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMDEtMTggIENoYXJsaWUg
UmVpcyAgPGNyZWlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBGcmFtZUxvYWRlcjo6Y2hlY2tMb2FkQ29tcGxldGVGb3JUaGlz
RnJhbWUgdXNlcyB3cm9uZyBoaXN0b3J5IGl0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4ODEyCisKKyAgICAgICAgTW9zdCBjYWxscyB0byBzdG9w
QWxsTG9hZGVycyBub3cgY2xlYXIgdGhlIGhpc3RvcnkncyBwcm92aXNpb25hbCBpdGVtKHMpLgor
ICAgICAgICBXZSBjYW4gbm93IGF2b2lkIHJlc2V0dGluZyB0aGUgYmFjay9mb3J3YXJkIHN0YXRl
IGlmIGEgbmV3IG5hdmlnYXRpb24KKyAgICAgICAgaXMgaW4gcHJvZ3Jlc3MuCisKKyAgICAgICAg
VGVzdDogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2JhY2stdHdpY2Utd2l0aG91dC1jb21taXQuaHRt
bAorICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL25hdmlnYXRpb24vZm9yd2FyZC1hbmQtY2FuY2Vs
Lmh0bWwKKworICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgICogbG9h
ZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyVHlwZXMuaDoK
KwogMjAxMS0wMS0xOCAgWm9sdGFuIEhlcmN6ZWcgIDx6aGVyY3plZ0B3ZWJraXQub3JnPgogCiAg
ICAgICAgIFJ1YmJlci1zdGFtcGVkIGJ5IENzYWJhIE9zenRyb2dvbsOhYwpJbmRleDogU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCShyZXZpc2lvbiA3NjAyNSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2NzQsMTMg
KzE2NzQsMTMgQEAgYm9vbCBGcmFtZUxvYWRlcjo6c2hvdWxkQWxsb3dOYXZpZ2F0aW9uKAogICAg
IHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlcjo6c3RvcExvYWRpbmdTdWJmcmFt
ZXMoKQordm9pZCBGcmFtZUxvYWRlcjo6c3RvcExvYWRpbmdTdWJmcmFtZXMoRGF0YWJhc2VQb2xp
Y3kgZGF0YWJhc2VQb2xpY3ksIENsZWFyUHJvdmlzaW9uYWxJdGVtUG9saWN5IGNsZWFyUHJvdmlz
aW9uYWxJdGVtUG9saWN5KQogewogICAgIGZvciAoUmVmUHRyPEZyYW1lPiBjaGlsZCA9IG1fZnJh
bWUtPnRyZWUoKS0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+dHJlZSgpLT5u
ZXh0U2libGluZygpKQotICAgICAgICBjaGlsZC0+bG9hZGVyKCktPnN0b3BBbGxMb2FkZXJzKCk7
CisgICAgICAgIGNoaWxkLT5sb2FkZXIoKS0+c3RvcEFsbExvYWRlcnMoZGF0YWJhc2VQb2xpY3ks
IGNsZWFyUHJvdmlzaW9uYWxJdGVtUG9saWN5KTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlcjo6c3Rv
cEFsbExvYWRlcnMoRGF0YWJhc2VQb2xpY3kgZGF0YWJhc2VQb2xpY3kpCit2b2lkIEZyYW1lTG9h
ZGVyOjpzdG9wQWxsTG9hZGVycyhEYXRhYmFzZVBvbGljeSBkYXRhYmFzZVBvbGljeSwgQ2xlYXJQ
cm92aXNpb25hbEl0ZW1Qb2xpY3kgY2xlYXJQcm92aXNpb25hbEl0ZW1Qb2xpY3kpCiB7CiAgICAg
QVNTRVJUKCFtX2ZyYW1lLT5kb2N1bWVudCgpIHx8ICFtX2ZyYW1lLT5kb2N1bWVudCgpLT5pblBh
Z2VDYWNoZSgpKTsKICAgICBpZiAobV9wYWdlRGlzbWlzc2FsRXZlbnRCZWluZ0Rpc3BhdGNoZWQp
CkBAIC0xNjk0LDcgKzE2OTQsMTIgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c3RvcEFsbExvYWRlcnMo
RGF0YWJhcwogCiAgICAgcG9saWN5Q2hlY2tlcigpLT5zdG9wQ2hlY2soKTsKIAotICAgIHN0b3BM
b2FkaW5nU3ViZnJhbWVzKCk7CisgICAgLy8gSWYgbm8gbmV3IGxvYWQgaXMgaW4gcHJvZ3Jlc3Ms
IHdlIHNob3VsZCBjbGVhciB0aGUgcHJvdmlzaW9uYWwgaXRlbSBmcm9tIGhpc3RvcnkKKyAgICAv
LyBiZWZvcmUgd2UgY2FsbCBzdG9wTG9hZGluZy4KKyAgICBpZiAoY2xlYXJQcm92aXNpb25hbEl0
ZW1Qb2xpY3kgPT0gU2hvdWxkQ2xlYXJQcm92aXNpb25hbEl0ZW0pCisgICAgICAgIGhpc3Rvcnko
KS0+c2V0UHJvdmlzaW9uYWxJdGVtKDApOworCisgICAgc3RvcExvYWRpbmdTdWJmcmFtZXMoZGF0
YWJhc2VQb2xpY3ksIGNsZWFyUHJvdmlzaW9uYWxJdGVtUG9saWN5KTsKICAgICBpZiAobV9wcm92
aXNpb25hbERvY3VtZW50TG9hZGVyKQogICAgICAgICBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2Fk
ZXItPnN0b3BMb2FkaW5nKGRhdGFiYXNlUG9saWN5KTsKICAgICBpZiAobV9kb2N1bWVudExvYWRl
cikKQEAgLTIzNDUsNyArMjM1MCw4IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNoZWNrTG9hZENvbXBs
ZXRlRm9yVGgKICAgICAgICAgICAgICAgICAgICAgLy8gUmVzZXQgdGhlIGJhY2sgZm9yd2FyZCBs
aXN0IHRvIHRoZSBsYXN0IGNvbW1pdHRlZCBoaXN0b3J5IGl0ZW0gYXQgdGhlIHRvcCBsZXZlbC4K
ICAgICAgICAgICAgICAgICAgICAgaXRlbSA9IHBhZ2UtPm1haW5GcmFtZSgpLT5sb2FkZXIoKS0+
aGlzdG9yeSgpLT5jdXJyZW50SXRlbSgpOwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAg
Ym9vbCBzaG91bGRSZXNldCA9IHRydWU7CisgICAgICAgICAgICAvLyBPbmx5IHJlc2V0IGlmIHdl
IGFyZW4ndCBhbHJlYWR5IGdvaW5nIHRvIGEgbmV3IHByb3Zpc2lvbmFsIGl0ZW0uCisgICAgICAg
ICAgICBib29sIHNob3VsZFJlc2V0ID0gIWhpc3RvcnkoKS0+cHJvdmlzaW9uYWxJdGVtKCk7CiAg
ICAgICAgICAgICBpZiAoIShwZGwtPmlzTG9hZGluZ0luQVBJU2Vuc2UoKSAmJiAhcGRsLT5pc1N0
b3BwaW5nKCkpKSB7CiAgICAgICAgICAgICAgICAgbV9kZWxlZ2F0ZUlzSGFuZGxpbmdQcm92aXNp
b25hbExvYWRFcnJvciA9IHRydWU7CiAgICAgICAgICAgICAgICAgbV9jbGllbnQtPmRpc3BhdGNo
RGlkRmFpbFByb3Zpc2lvbmFsTG9hZChlcnJvcik7CkBAIC0yMzU0LDcgKzIzNjAsNyBAQCB2b2lk
IEZyYW1lTG9hZGVyOjpjaGVja0xvYWRDb21wbGV0ZUZvclRoCiAgICAgICAgICAgICAgICAgLy8g
RklYTUU6IGNhbiBzdG9wcGluZyBsb2FkaW5nIGhlcmUgcG9zc2libHkgaGF2ZSBhbnkgZWZmZWN0
LCBpZiBpc0xvYWRpbmcgaXMgZmFsc2UsCiAgICAgICAgICAgICAgICAgLy8gd2hpY2ggaXQgbXVz
dCBiZSB0byBiZSBpbiB0aGlzIGJyYW5jaCBvZiB0aGUgaWY/IEFuZCBpcyBpdCBPSyB0byBqdXN0
IGRvIGEgZnVsbC1vbgogICAgICAgICAgICAgICAgIC8vIHN0b3BBbGxMb2FkZXJzIGluc3RlYWQg
b2Ygc3RvcExvYWRpbmdTdWJmcmFtZXM/Ci0gICAgICAgICAgICAgICAgc3RvcExvYWRpbmdTdWJm
cmFtZXMoKTsKKyAgICAgICAgICAgICAgICBzdG9wTG9hZGluZ1N1YmZyYW1lcyhEYXRhYmFzZVBv
bGljeVN0b3AsIFNob3VsZE5vdENsZWFyUHJvdmlzaW9uYWxJdGVtKTsKICAgICAgICAgICAgICAg
ICBwZGwtPnN0b3BMb2FkaW5nKCk7CiAKICAgICAgICAgICAgICAgICAvLyBJZiB3ZSdyZSBpbiB0
aGUgbWlkZGxlIG9mIGxvYWRpbmcgbXVsdGlwYXJ0IGRhdGEsIHdlIG5lZWQgdG8gcmVzdG9yZSB0
aGUgZG9jdW1lbnQgbG9hZGVyLgpAQCAtMjk1Niw3ICsyOTYyLDggQEAgdm9pZCBGcmFtZUxvYWRl
cjo6Y29udGludWVMb2FkQWZ0ZXJOYXZpZwogICAgIH0KIAogICAgIEZyYW1lTG9hZFR5cGUgdHlw
ZSA9IHBvbGljeUNoZWNrZXIoKS0+bG9hZFR5cGUoKTsKLSAgICBzdG9wQWxsTG9hZGVycygpOwor
ICAgIC8vIEEgbmV3IG5hdmlnYXRpb24gaXMgaW4gcHJvZ3Jlc3MsIHNvIGRvbid0IGNsZWFyIHRo
ZSBoaXN0b3J5J3MgcHJvdmlzaW9uYWwgaXRlbS4KKyAgICBzdG9wQWxsTG9hZGVycyhEYXRhYmFz
ZVBvbGljeVN0b3AsIFNob3VsZE5vdENsZWFyUHJvdmlzaW9uYWxJdGVtKTsKICAgICAKICAgICAv
LyA8cmRhcjovL3Byb2JsZW0vNjI1MDg1Nj4gLSBJbiBjZXJ0YWluIGNpcmN1bXN0YW5jZXMgb24g
cGFnZXMgd2l0aCBtdWx0aXBsZSBmcmFtZXMsIHN0b3BBbGxMb2FkZXJzKCkKICAgICAvLyBtaWdo
dCBkZXRhY2ggdGhlIGN1cnJlbnQgRnJhbWVMb2FkZXIsIGluIHdoaWNoIGNhc2Ugd2Ugc2hvdWxk
IGJhaWwgb24gdGhpcyBuZXdseSBkZWZ1bmN0IGxvYWQuIApJbmRleDogU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmgJKHJldmlzaW9uIDc2MDI1KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNyw3ICsxMjcsNyBAQCBwdWJsaWM6
CiAgICAgYm9vbCBjYW5IYW5kbGVSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogCiAg
ICAgLy8gQWxzbyBub3QgY29vbC4KLSAgICB2b2lkIHN0b3BBbGxMb2FkZXJzKERhdGFiYXNlUG9s
aWN5ID0gRGF0YWJhc2VQb2xpY3lTdG9wKTsKKyAgICB2b2lkIHN0b3BBbGxMb2FkZXJzKERhdGFi
YXNlUG9saWN5ID0gRGF0YWJhc2VQb2xpY3lTdG9wLCBDbGVhclByb3Zpc2lvbmFsSXRlbVBvbGlj
eSA9IFNob3VsZENsZWFyUHJvdmlzaW9uYWxJdGVtKTsKICAgICB2b2lkIHN0b3BGb3JVc2VyQ2Fu
Y2VsKGJvb2wgZGVmZXJDaGVja0xvYWRDb21wbGV0ZSA9IGZhbHNlKTsKIAogICAgIGJvb2wgaXNM
b2FkaW5nTWFpblJlc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9pc0xvYWRpbmdNYWluUmVzb3Vy
Y2U7IH0KQEAgLTM0OSw3ICszNDksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgYWRkRXh0cmFGaWVs
ZHNUb1JlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiwgRnJhbWVMb2FkVHlwZSBsb2FkVHlwZSwgYm9v
bCBpc01haW5SZXNvdXJjZSwgYm9vbCBjb29raWVQb2xpY3lVUkxGcm9tUmVxdWVzdCk7CiAKICAg
ICAvLyBBbHNvIG5vdCBjb29sLgotICAgIHZvaWQgc3RvcExvYWRpbmdTdWJmcmFtZXMoKTsKKyAg
ICB2b2lkIHN0b3BMb2FkaW5nU3ViZnJhbWVzKERhdGFiYXNlUG9saWN5LCBDbGVhclByb3Zpc2lv
bmFsSXRlbVBvbGljeSk7CiAKICAgICB2b2lkIGNsZWFyUHJvdmlzaW9uYWxMb2FkKCk7CiAgICAg
dm9pZCBtYXJrTG9hZENvbXBsZXRlKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXJUeXBlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlclR5cGVzLmgJKHJldmlzaW9uIDc2MDI1KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyVHlwZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNzMsNiArNzMsMTEgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBEYXRhYmFzZVBvbGljeVN0b3AsICAgIC8vIFRoZSBk
YXRhYmFzZSB0aHJlYWQgc2hvdWxkIGJlIHN0b3BwZWQgYW5kIGRhdGFiYXNlIGNvbm5lY3Rpb25z
IGNsb3NlZC4KICAgICAgICAgRGF0YWJhc2VQb2xpY3lDb250aW51ZQogICAgIH07CisgICAgCisg
ICAgZW51bSBDbGVhclByb3Zpc2lvbmFsSXRlbVBvbGljeSB7CisgICAgICAgIFNob3VsZENsZWFy
UHJvdmlzaW9uYWxJdGVtLAorICAgICAgICBTaG91bGROb3RDbGVhclByb3Zpc2lvbmFsSXRlbQor
ICAgIH07CiAKICAgICBlbnVtIE9iamVjdENvbnRlbnRUeXBlIHsKICAgICAgICAgT2JqZWN0Q29u
dGVudE5vbmUsCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA3NjA0NykKKysrIExheW91dFRlc3RzL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDExLTAxLTE4ICBDaGFybGll
IFJlaXMgIDxjcmVpc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgRnJhbWVMb2FkZXI6OmNoZWNrTG9hZENvbXBsZXRlRm9yVGhp
c0ZyYW1lIHVzZXMgd3JvbmcgaGlzdG9yeSBpdGVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODgxMgorCisgICAgICAgIFRlc3QgdGhhdCB3ZSBhdm9p
ZCB1cGRhdGluZyBiYWNrL2ZvcndhcmQgbGlzdCBvbiBhIGNhbmNlbGVkIG5hdmlnYXRpb24KKyAg
ICAgICAgaWYgYSBuZXcgbmF2aWdhdGlvbiBpcyBhbHJlYWR5IGluIHByb2Nlc3MuICBBbHNvIHVw
ZGF0ZSBmb3J3YXJkLWFuZC1jYW5jZWwKKyAgICAgICAgdG8gZ28gZm9yd2FyZCwgZW5zdXJpbmcg
YmFjay9mb3J3YXJkIHN0YXRlIGlzIHJlc2V0IGlmIHVzZXIgY2xpY2tzIHN0b3AuCisKKyAgICAg
ICAgKiBodHRwL3Rlc3RzL25hdmlnYXRpb24vYmFjay10d2ljZS13aXRob3V0LWNvbW1pdC1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9iYWNrLXR3
aWNlLXdpdGhvdXQtY29tbWl0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvbmF2
aWdhdGlvbi9mb3J3YXJkLWFuZC1jYW5jZWwtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAv
dGVzdHMvbmF2aWdhdGlvbi9mb3J3YXJkLWFuZC1jYW5jZWwuaHRtbDogR28gZm9yd2FyZCBhZnRl
ciBzdG9wLCBub3QgYmFjay4KKyAgICAgICAgKiBodHRwL3Rlc3RzL25hdmlnYXRpb24vcmVzb3Vy
Y2VzL2JhY2stdHdpY2UtcGFnZS0yLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMv
bmF2aWdhdGlvbi9yZXNvdXJjZXMvYmFjay10d2ljZS1wYWdlLTMuaHRtbDogQWRkZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Jlc291cmNlcy9mb3J3YXJkLWFuZC1jYW5jZWwt
ZnJhbWVzLmh0bWw6IFJlZHVjZWQgZGVsYXkuCisKIDIwMTEtMDEtMTggIEtyaXRoaWdhc3NyZWUg
U2FtYmFtdXJ0aHkgIDxrcml0aGlnYXNzcmVlLnNhbWJhbXVydGh5QG5va2lhLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL25hdmlnYXRpb24vYmFjay10d2ljZS13aXRob3V0LWNvbW1pdC1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2JhY2stdHdpY2Ut
d2l0aG91dC1jb21taXQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2JhY2stdHdpY2Utd2l0aG91dC1jb21taXQtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDkgQEAKK1RoaXMgdGVzdCBjaGVja3MgdGhhdCBn
b2luZyBiYWNrIHR3aWNlIHdpdGhvdXQgY29tbWl0dGluZyBkb2Vzbid0IGNvcnJ1cHQgdGhlIGJh
Y2svZm9yd2FyZCBsaXN0LgorCitJZiB0ZXN0aW5nIG1hbnVhbGx5LCBjbGljayBoZXJlLgorCis9
PT09PT09PT09PT09PSBCYWNrIEZvcndhcmQgTGlzdCA9PT09PT09PT09PT09PQorY3Vyci0+ICBo
dHRwOi8vMTI3LjAuMC4xOjgwMDAvbmF2aWdhdGlvbi9iYWNrLXR3aWNlLXdpdGhvdXQtY29tbWl0
Lmh0bWwgICoqbmF2IHRhcmdldCoqCisgICAgICAgIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9uYXZp
Z2F0aW9uL3Jlc291cmNlcy9iYWNrLXR3aWNlLXBhZ2UtMi5odG1sICAqKm5hdiB0YXJnZXQqKgor
ICAgICAgICBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbmF2aWdhdGlvbi9yZXNvdXJjZXMvYmFjay10
d2ljZS1wYWdlLTMuaHRtbCAgKipuYXYgdGFyZ2V0KioKKz09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25h
dmlnYXRpb24vYmFjay10d2ljZS13aXRob3V0LWNvbW1pdC5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9iYWNrLXR3aWNlLXdpdGhvdXQtY29tbWl0
Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24v
YmFjay10d2ljZS13aXRob3V0LWNvbW1pdC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIy
IEBACis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBCYWNrRm9yd2FyZExpc3QoKTsKKyAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICAvLyBWaXNpdCB0d28gcGFnZXMsIHRoZW4g
Z28gYmFjayB0byBwYWdlIDIsIHdoaWNoIGhhcyBhIHNsb3cgZnJhbWUgdGhlIHNlY29uZCB0aW1l
LgorICAgIGxheW91dFRlc3RDb250cm9sbGVyLnF1ZXVlTG9hZCgicmVzb3VyY2VzL2JhY2stdHdp
Y2UtcGFnZS0yLmh0bWwiKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5xdWV1ZUxvYWQoInJl
c291cmNlcy9iYWNrLXR3aWNlLXBhZ2UtMy5odG1sIik7CisgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIucXVldWVCYWNrTmF2aWdhdGlvbigxKTsKKworICAgIC8vIE5vdyBjb21wZXRlIHdpdGggcGFn
ZSAyJ3MgaGlzdG9yeS5iYWNrKCkgY2FsbCwgdG8gYSBkaWZmZXJlbnQgaGlzdG9yeSBpdGVtLgor
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLnF1ZXVlQmFja05hdmlnYXRpb24oMik7CisKKyAgICAv
LyBSZXBlYXQgdGhlIHRlc3QsIGJ1dCBjb21wZXRlIHdpdGggaGlzdG9yeS5iYWNrKCkgdG8gdGhl
IHNhbWUgaGlzdG9yeSBpdGVtLgorICAgIGxheW91dFRlc3RDb250cm9sbGVyLnF1ZXVlTG9hZCgi
cmVzb3VyY2VzL2JhY2stdHdpY2UtcGFnZS0yLmh0bWwiKTsKKyAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5xdWV1ZUxvYWQoInJlc291cmNlcy9iYWNrLXR3aWNlLXBhZ2UtMy5odG1sIik7CisgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIucXVldWVCYWNrTmF2aWdhdGlvbigxKTsKKyAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5xdWV1ZUJhY2tOYXZpZ2F0aW9uKDEpOworfQorPC9zY3JpcHQ+Cis8cD5U
aGlzIHRlc3QgY2hlY2tzIHRoYXQgZ29pbmcgYmFjayB0d2ljZSB3aXRob3V0IGNvbW1pdHRpbmcg
ZG9lc24ndCBjb3JydXB0IHRoZSBiYWNrL2ZvcndhcmQgbGlzdC4KKzxwPklmIHRlc3RpbmcgbWFu
dWFsbHksIDxhIGhyZWY9InJlc291cmNlcy9iYWNrLXR3aWNlLXBhZ2UtMi5odG1sIj5jbGljayBo
ZXJlPC9hPi4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9mb3J3YXJk
LWFuZC1jYW5jZWwtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvbmF2aWdhdGlvbi9mb3J3YXJkLWFuZC1jYW5jZWwtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biA3NjA0NykKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9mb3J3YXJkLWFu
ZC1jYW5jZWwtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDE1ICsxLDEzIEBACi1U
aGlzIHRlc3QgY2hlY2tzIHRoYXQgdGhlIGJhY2tGb3J3YXJkIGxpc3QgaXMgbm90IGNvcnJ1cHRl
ZCB3aGVuIGEgZnJhbWUgbG9hZCBpcyBjYW5jZWxlZC4KLQotSWYgdGVzdGluZyBtYW51YWxseSwg
Y2xpY2sgaGVyZS4KKyAKIAogPT09PT09PT09PT09PT0gQmFjayBGb3J3YXJkIExpc3QgPT09PT09
PT09PT09PT0KLWN1cnItPiAgaHR0cDovLzEyNy4wLjAuMTo4MDAwL25hdmlnYXRpb24vZm9yd2Fy
ZC1hbmQtY2FuY2VsLmh0bWwgICoqbmF2IHRhcmdldCoqCisgICAgICAgIGh0dHA6Ly8xMjcuMC4w
LjE6ODAwMC9uYXZpZ2F0aW9uL2ZvcndhcmQtYW5kLWNhbmNlbC5odG1sICAqKm5hdiB0YXJnZXQq
KgogICAgICAgICBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbmF2aWdhdGlvbi9yZXNvdXJjZXMvZm9y
d2FyZC1hbmQtY2FuY2VsLWZyYW1lcy1jb250YWluZXIuaHRtbCAgKipuYXYgdGFyZ2V0KioKICAg
ICAgICAgICAgIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9uYXZpZ2F0aW9uL3Jlc291cmNlcy9mb3J3
YXJkLWFuZC1jYW5jZWwtZnJhbWVzLmh0bWwgKGluIGZyYW1lICI8IS0tZnJhbWVQYXRoIC8vPCEt
LWZyYW1lMC0tPi0tPiIpCiAgICAgICAgICAgICAgICAgYWJvdXQ6YmxhbmsgKGluIGZyYW1lICJm
cmFtZTEiKQogICAgICAgICAgICAgaHR0cDovLzEyNy4wLjAuMTo4MDAwL25hdmlnYXRpb24vcmVz
b3VyY2VzL290aGVycGFnZS5odG1sIChpbiBmcmFtZSAiPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFt
ZTEtLT4tLT4iKQotICAgICAgICBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbmF2aWdhdGlvbi9yZXNv
dXJjZXMvZm9yd2FyZC1hbmQtY2FuY2VsLWZyYW1lcy1jb250YWluZXIuaHRtbAorY3Vyci0+ICBo
dHRwOi8vMTI3LjAuMC4xOjgwMDAvbmF2aWdhdGlvbi9yZXNvdXJjZXMvZm9yd2FyZC1hbmQtY2Fu
Y2VsLWZyYW1lcy1jb250YWluZXIuaHRtbAogICAgICAgICAgICAgaHR0cDovLzEyNy4wLjAuMTo4
MDAwL25hdmlnYXRpb24vcmVzb3VyY2VzL2ZvcndhcmQtYW5kLWNhbmNlbC1mcmFtZXMuaHRtbCAo
aW4gZnJhbWUgIjwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+IikKLSAgICAgICAgICAg
ICAgICBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbmF2aWdhdGlvbi9yZXNvdXJjZXMvc2xvdy1yZXNv
dXJjZS0xLXNlYy5wbCAoaW4gZnJhbWUgImZyYW1lMSIpICAqKm5hdiB0YXJnZXQqKgorICAgICAg
ICAgICAgICAgIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9uYXZpZ2F0aW9uL3Jlc291cmNlcy9zbG93
LXJlc291cmNlLnBsP2RlbGF5PTI1MCAoaW4gZnJhbWUgImZyYW1lMSIpICAqKm5hdiB0YXJnZXQq
KgogICAgICAgICAgICAgaHR0cDovLzEyNy4wLjAuMTo4MDAwL25hdmlnYXRpb24vcmVzb3VyY2Vz
L290aGVycGFnZS5odG1sIChpbiBmcmFtZSAiPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTEtLT4t
LT4iKQogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSW5k
ZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9mb3J3YXJkLWFuZC1jYW5jZWwu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vZm9y
d2FyZC1hbmQtY2FuY2VsLmh0bWwJKHJldmlzaW9uIDc2MDQ3KQorKysgTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9uYXZpZ2F0aW9uL2ZvcndhcmQtYW5kLWNhbmNlbC5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC03LDggKzcsOCBAQAogLy8gICAgSW1wb3J0YW50IHRvIHVzZSBhYm91dDpibGFuaywgd2hp
Y2ggY2FuIGNvbW1pdCBpbW1lZGlhdGVseSB3aGlsZSB3YWxraW5nIHRoZSB0cmVlLgogLy8gNS4g
R28gZm9yd2FyZCB0byBzbG93IFVSTCwgYnV0IHN0b3AgYmVmb3JlIHRoZSBuYXZpZ2F0aW9uIGNv
bW1pdHMuCiAvLyAgICBJbXBvcnRhbnQgdG8gY2FuY2VsIHRoZSBsb2FkIGFuZCBlbnN1cmUgdGhl
IGhpc3RvcnkgaXMgbm90IGNvcnJ1cHRlZC4KLS8vIDYuIEdvIGJhY2sgdG8gc3RhcnQgcGFnZSB3
aXRoIG5vIGZyYW1lcy4KLS8vICAgIEltcG9ydGFudCBmb3IgdGVzdGluZyB0aGF0IHN1YmZyYW1l
cyBjYW4gYmUgcmVtb3ZlZC4KKy8vIDYuIEdvIGZvcndhcmQgYW5kIGxldCBzbG93IFVSTCBsb2Fk
LgorLy8gICAgSW1wb3J0YW50IGZvciB0ZXN0aW5nIHRoYXQgbmF2aWdhdGlvbiBzdGF0ZSBpcyBy
ZXNldCBhZnRlciBzdG9wcGluZy4KIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsK
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQmFja0ZvcndhcmRMaXN0KCk7CiAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwpAQCAtMjEsNyArMjEsOCBAQCBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CiAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIucXVl
dWVOb25Mb2FkaW5nU2NyaXB0KCJzZXRUaW1lb3V0KCdoaXN0b3J5LmZvcndhcmQoKTsnLDApOyBz
ZXRUaW1lb3V0KCd3aW5kb3cuc3RvcCgpOycsMTApOyIpOwogCiAgICAgLy8gTm93IGdvIGJhY2sg
dG8gbWFrZSBzdXJlIHRoZSBiYWNrRm9yd2FyZExpc3QgaXMgbm90IGNvcnJ1cHRlZC4KLSAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5xdWV1ZU5vbkxvYWRpbmdTY3JpcHQoInNldFRpbWVvdXQoJ2hp
c3RvcnkuYmFjaygpOycsNTApOyIpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLnF1ZXVlTm9u
TG9hZGluZ1NjcmlwdCgic2V0VGltZW91dCgnaGlzdG9yeS5mb3J3YXJkKCk7Jyw1MCk7Iik7Cisg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIucXVldWVOb25Mb2FkaW5nU2NyaXB0KCJzZXRUaW1lb3V0
KCdsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7JywxMDApOyIpOwogCiAgICAgLy8g
V2FpdCB1bnRpbCB3ZSBnZXQgYmFjayB0byB0aGlzIHBhZ2UuCiAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIucXVldWVMb2FkaW5nU2NyaXB0KCJsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxE
b25lKCk7Iik7CkBAIC0yOSwxNSArMzAsMyBAQCBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKSB7CiA8L3NjcmlwdD4KIDxwPlRoaXMgdGVzdCBjaGVja3MgdGhhdCB0aGUgYmFja0Zvcndh
cmQgbGlzdCBpcyBub3QgY29ycnVwdGVkIHdoZW4gYSBmcmFtZSBsb2FkIGlzIGNhbmNlbGVkLgog
PHA+SWYgdGVzdGluZyBtYW51YWxseSwgPGEgaHJlZj0icmVzb3VyY2VzL2ZvcndhcmQtYW5kLWNh
bmNlbC1mcmFtZXMtY29udGFpbmVyLmh0bWwiPmNsaWNrIGhlcmU8L2E+LgotCi08c2NyaXB0Pgot
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIC8vIE9ubHkgbm90aWZ5IGRv
bmUgd2hlbiB3ZSByZXR1cm4gdG8gdGhpcyBwYWdlIGEgc2Vjb25kIHRpbWUuCi0gICAgaWYgKCF3
aW5kb3cubG9jYWxTdG9yYWdlLnN0YXJ0ZWQpIHsKLSAgICAgICAgd2luZG93LmxvY2FsU3RvcmFn
ZS5zdGFydGVkID0gdHJ1ZTsKLSAgICB9IGVsc2UgewotICAgICAgICBkZWxldGUgd2luZG93Lmxv
Y2FsU3RvcmFnZS5zdGFydGVkOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlE
b25lKCk7Ci0gICAgfQotfQotPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L25hdmlnYXRpb24vcmVzb3VyY2VzL2JhY2stdHdpY2UtcGFnZS0yLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Jlc291cmNlcy9iYWNrLXR3aWNl
LXBhZ2UtMi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZp
Z2F0aW9uL3Jlc291cmNlcy9iYWNrLXR3aWNlLXBhZ2UtMi5odG1sCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDIxIEBACis8cD5QYWdlIDIuCis8cD5UaGlzIHRlc3QgY2hlY2tzIHRoYXQgZ29pbmcg
YmFjayB0d2ljZSB3aXRob3V0IGNvbW1pdHRpbmcgZG9lc24ndCBjb3JydXB0IHRoZSBiYWNrL2Zv
cndhcmQgbGlzdC4KKzxwPklmIHRlc3RpbmcgbWFudWFsbHksIDxhIGhyZWY9ImJhY2stdHdpY2Ut
cGFnZS0zLmh0bWwiPmNsaWNrIGhlcmU8L2E+LgorCis8c2NyaXB0PgoraWYgKCF3aW5kb3cubG9j
YWxTdG9yYWdlLnN0YXJ0ZWQpIHsKKyAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnN0YXJ0ZWQgPSB0
cnVlOworfSBlbHNlIHsKKyAgICBkZWxldGUgd2luZG93LmxvY2FsU3RvcmFnZS5zdGFydGVkOwor
CisgICAgLy8gVGhlIHNlY29uZCB0aW1lIHdlIHZpc2l0IHRoZSBwYWdlIChpLmUuLCB3aGlsZSBn
b2luZyBiYWNrKSwgaW5zZXJ0IGFuCisgICAgLy8gaWZyYW1lIHRoYXQgZG9lc24ndCBjb21taXQg
ZHVyaW5nIHRoZSB0ZXN0LgorICAgIHZhciBmID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZy
YW1lIik7CisgICAgZi5zcmMgPSAiLi4vLi4vaGlzdG9yeS9yZXNvdXJjZXMvYmFjay1kdXJpbmct
b25sb2FkLWh1bmctcGFnZS5waHAiOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZik7
CisKKyAgICAvLyBOb3cgZ28gYmFjay4gIFRoaXMgd2lsbCBjb21wZXRlIHdpdGggdGhlIHNlY29u
ZCBxdWV1ZUJhY2tOYXZpZ2F0aW9uCisgICAgLy8gZnJvbSBiYWNrLXR3aWNlLXdpdGhvdXQtY29t
bWl0Lmh0bWwuCisgICAgaGlzdG9yeS5iYWNrKCk7Cit9Cis8L3NjcmlwdD4KSW5kZXg6IExheW91
dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNvdXJjZXMvYmFjay10d2ljZS1wYWdlLTMu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcmVz
b3VyY2VzL2JhY2stdHdpY2UtcGFnZS0zLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcmVzb3VyY2VzL2JhY2stdHdpY2UtcGFnZS0zLmh0bWwJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMyBAQAorPHA+UGFnZSAzLgorPHA+VGhpcyB0ZXN0IGNo
ZWNrcyB0aGF0IGdvaW5nIGJhY2sgdHdpY2Ugd2l0aG91dCBjb21taXR0aW5nIGRvZXNuJ3QgY29y
cnVwdCB0aGUgYmFjay9mb3J3YXJkIGxpc3QuCis8cD5JZiB0ZXN0aW5nIG1hbnVhbGx5LCBob2xk
IGRvd24gdGhlIGJhY2sga2V5Ym9hcmQgc2hvcnRjdXQgb3IgY2xpY2sgYmFjayB0d2ljZSBxdWlj
a2x5LgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Jlc291cmNlcy9m
b3J3YXJkLWFuZC1jYW5jZWwtZnJhbWVzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Jlc291cmNlcy9mb3J3YXJkLWFuZC1jYW5jZWwtZnJhbWVz
Lmh0bWwJKHJldmlzaW9uIDc2MDQ3KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0
aW9uL3Jlc291cmNlcy9mb3J3YXJkLWFuZC1jYW5jZWwtZnJhbWVzLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTEyLDQgKzEyLDQgQEAgZnVuY3Rpb24gY2xpY2tMaW5rKCkgewogPGlmcmFtZSBpZD0i
ZnJhbWUxIiBzcmM9ImFib3V0OmJsYW5rIj48L2lmcmFtZT4KIDxicj4KIDxwPlRoaXMgdGVzdCBj
aGVja3MgdGhhdCB0aGUgYmFja0ZvcndhcmQgbGlzdCBpcyBub3QgY29ycnVwdGVkIHdoZW4gYSBm
cmFtZSBsb2FkIGlzIGNhbmNlbGVkLgotPHA+SWYgdGVzdGluZyBtYW51YWxseSwgPGEgaWQ9Imxp
bmsiIGhyZWY9InNsb3ctcmVzb3VyY2UtMS1zZWMucGwiIHRhcmdldD0iZnJhbWUxIj5jbGljayBo
ZXJlPC9hPiBhbmQgdGhlbiBCYWNrLiAgVGhlbiBjbGljayBGb3J3YXJkIGFuZCBxdWlja2x5IGNs
aWNrIFN0b3AuICBFbnN1cmUgdGhhdCBCYWNrIGFuZCBGb3J3YXJkIHN0aWxsIHdvcmsuCis8cD5J
ZiB0ZXN0aW5nIG1hbnVhbGx5LCA8YSBpZD0ibGluayIgaHJlZj0ic2xvdy1yZXNvdXJjZS5wbD9k
ZWxheT0yNTAiIHRhcmdldD0iZnJhbWUxIj5jbGljayBoZXJlPC9hPiBhbmQgdGhlbiBCYWNrLiAg
VGhlbiBjbGljayBGb3J3YXJkIGFuZCBxdWlja2x5IGNsaWNrIFN0b3AuICBFbnN1cmUgdGhhdCBC
YWNrIGFuZCBGb3J3YXJkIHN0aWxsIHdvcmsuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79629</attachid>
            <date>2011-01-20 12:02:17 -0800</date>
            <delta_ts>2011-01-20 15:00:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-48812-20110120120216.patch</filename>
            <type>text/plain</type>
            <size>17054</size>
            <attacher name="Charles Reis">creis</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc2MjY4KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTEtMDEtMjAgIENoYXJsaWUg
UmVpcyAgPGNyZWlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBGcmFtZUxvYWRlcjo6Y2hlY2tMb2FkQ29tcGxldGVGb3JUaGlz
RnJhbWUgdXNlcyB3cm9uZyBoaXN0b3J5IGl0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4ODEyCisKKyAgICAgICAgTW9zdCBjYWxscyB0byBzdG9w
QWxsTG9hZGVycyBub3cgY2xlYXIgdGhlIGhpc3RvcnkncyBwcm92aXNpb25hbCBpdGVtKHMpLgor
ICAgICAgICBXZSBjYW4gbm93IGF2b2lkIHJlc2V0dGluZyB0aGUgYmFjay9mb3J3YXJkIHN0YXRl
IGlmIGEgbmV3IG5hdmlnYXRpb24KKyAgICAgICAgaXMgaW4gcHJvZ3Jlc3MuCisKKyAgICAgICAg
VGVzdDogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2JhY2stdHdpY2Utd2l0aG91dC1jb21taXQuaHRt
bAorICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL25hdmlnYXRpb24vZm9yd2FyZC1hbmQtY2FuY2Vs
Lmh0bWwKKworICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgICogbG9h
ZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyVHlwZXMuaDoK
KyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjogVXBkYXRlIHN0b3BBbGxMb2FkZXJzIHNpZ25hdHVy
ZS4KKwogMjAxMS0wMS0yMCAgQWxleGFuZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgkocmV2aXNpb24gNzYyNjgpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5p
bgkod29ya2luZyBjb3B5KQpAQCAtMTYzLDcgKzE2Myw3IEBAIF9fWk43V2ViQ29yZTExRnJhbWVM
b2FkZXIxMXNob3VsZENsb3NlRXYKIF9fWk43V2ViQ29yZTExRnJhbWVMb2FkZXIxMXVybFNlbGVj
dGVkRVJLTlNfNEtVUkxFUktOM1dURjZTdHJpbmdFTlM0XzEwUGFzc1JlZlB0cklOU181RXZlbnRF
RUViYk5TXzE0UmVmZXJyZXJQb2xpY3lFCiBfX1pON1dlYkNvcmUxMUZyYW1lTG9hZGVyMTJzaG91
bGRSZWxvYWRFUktOU180S1VSTEVTM18KIF9fWk43V2ViQ29yZTExRnJhbWVMb2FkZXIxNGRldGFj
aENoaWxkcmVuRXYKLV9fWk43V2ViQ29yZTExRnJhbWVMb2FkZXIxNHN0b3BBbGxMb2FkZXJzRU5T
XzE0RGF0YWJhc2VQb2xpY3lFCitfX1pON1dlYkNvcmUxMUZyYW1lTG9hZGVyMTRzdG9wQWxsTG9h
ZGVyc0VOU18xNERhdGFiYXNlUG9saWN5RU5TXzI2Q2xlYXJQcm92aXNpb25hbEl0ZW1Qb2xpY3lF
CiBfX1pON1dlYkNvcmUxMUZyYW1lTG9hZGVyMTZkZXRhY2hGcm9tUGFyZW50RXYKIF9fWk43V2Vi
Q29yZTExRnJhbWVMb2FkZXIxNmxvYWRGcmFtZVJlcXVlc3RFUktOU18xNkZyYW1lTG9hZFJlcXVl
c3RFYmJOM1dURjEwUGFzc1JlZlB0cklOU181RXZlbnRFRUVOUzVfSU5TXzlGb3JtU3RhdGVFRUVO
U18xNFJlZmVycmVyUG9saWN5RQogX19aTjdXZWJDb3JlMTFGcmFtZUxvYWRlcjE3c3RvcEZvclVz
ZXJDYW5jZWxFYgpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCShyZXZp
c2lvbiA3NjI2OCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE2ODIsMTMgKzE2ODIsMTMgQEAgYm9vbCBGcmFtZUxvYWRlcjo6c2hv
dWxkQWxsb3dOYXZpZ2F0aW9uKAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBGcmFtZUxv
YWRlcjo6c3RvcExvYWRpbmdTdWJmcmFtZXMoKQordm9pZCBGcmFtZUxvYWRlcjo6c3RvcExvYWRp
bmdTdWJmcmFtZXMoRGF0YWJhc2VQb2xpY3kgZGF0YWJhc2VQb2xpY3ksIENsZWFyUHJvdmlzaW9u
YWxJdGVtUG9saWN5IGNsZWFyUHJvdmlzaW9uYWxJdGVtUG9saWN5KQogewogICAgIGZvciAoUmVm
UHRyPEZyYW1lPiBjaGlsZCA9IG1fZnJhbWUtPnRyZWUoKS0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsg
Y2hpbGQgPSBjaGlsZC0+dHJlZSgpLT5uZXh0U2libGluZygpKQotICAgICAgICBjaGlsZC0+bG9h
ZGVyKCktPnN0b3BBbGxMb2FkZXJzKCk7CisgICAgICAgIGNoaWxkLT5sb2FkZXIoKS0+c3RvcEFs
bExvYWRlcnMoZGF0YWJhc2VQb2xpY3ksIGNsZWFyUHJvdmlzaW9uYWxJdGVtUG9saWN5KTsKIH0K
IAotdm9pZCBGcmFtZUxvYWRlcjo6c3RvcEFsbExvYWRlcnMoRGF0YWJhc2VQb2xpY3kgZGF0YWJh
c2VQb2xpY3kpCit2b2lkIEZyYW1lTG9hZGVyOjpzdG9wQWxsTG9hZGVycyhEYXRhYmFzZVBvbGlj
eSBkYXRhYmFzZVBvbGljeSwgQ2xlYXJQcm92aXNpb25hbEl0ZW1Qb2xpY3kgY2xlYXJQcm92aXNp
b25hbEl0ZW1Qb2xpY3kpCiB7CiAgICAgQVNTRVJUKCFtX2ZyYW1lLT5kb2N1bWVudCgpIHx8ICFt
X2ZyYW1lLT5kb2N1bWVudCgpLT5pblBhZ2VDYWNoZSgpKTsKICAgICBpZiAobV9wYWdlRGlzbWlz
c2FsRXZlbnRCZWluZ0Rpc3BhdGNoZWQpCkBAIC0xNzAyLDcgKzE3MDIsMTIgQEAgdm9pZCBGcmFt
ZUxvYWRlcjo6c3RvcEFsbExvYWRlcnMoRGF0YWJhcwogCiAgICAgcG9saWN5Q2hlY2tlcigpLT5z
dG9wQ2hlY2soKTsKIAotICAgIHN0b3BMb2FkaW5nU3ViZnJhbWVzKCk7CisgICAgLy8gSWYgbm8g
bmV3IGxvYWQgaXMgaW4gcHJvZ3Jlc3MsIHdlIHNob3VsZCBjbGVhciB0aGUgcHJvdmlzaW9uYWwg
aXRlbSBmcm9tIGhpc3RvcnkKKyAgICAvLyBiZWZvcmUgd2UgY2FsbCBzdG9wTG9hZGluZy4KKyAg
ICBpZiAoY2xlYXJQcm92aXNpb25hbEl0ZW1Qb2xpY3kgPT0gU2hvdWxkQ2xlYXJQcm92aXNpb25h
bEl0ZW0pCisgICAgICAgIGhpc3RvcnkoKS0+c2V0UHJvdmlzaW9uYWxJdGVtKDApOworCisgICAg
c3RvcExvYWRpbmdTdWJmcmFtZXMoZGF0YWJhc2VQb2xpY3ksIGNsZWFyUHJvdmlzaW9uYWxJdGVt
UG9saWN5KTsKICAgICBpZiAobV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyKQogICAgICAgICBt
X3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXItPnN0b3BMb2FkaW5nKGRhdGFiYXNlUG9saWN5KTsK
ICAgICBpZiAobV9kb2N1bWVudExvYWRlcikKQEAgLTIzNTMsNyArMjM1OCw4IEBAIHZvaWQgRnJh
bWVMb2FkZXI6OmNoZWNrTG9hZENvbXBsZXRlRm9yVGgKICAgICAgICAgICAgICAgICAgICAgLy8g
UmVzZXQgdGhlIGJhY2sgZm9yd2FyZCBsaXN0IHRvIHRoZSBsYXN0IGNvbW1pdHRlZCBoaXN0b3J5
IGl0ZW0gYXQgdGhlIHRvcCBsZXZlbC4KICAgICAgICAgICAgICAgICAgICAgaXRlbSA9IHBhZ2Ut
Pm1haW5GcmFtZSgpLT5sb2FkZXIoKS0+aGlzdG9yeSgpLT5jdXJyZW50SXRlbSgpOwogICAgICAg
ICAgICAgICAgIAotICAgICAgICAgICAgYm9vbCBzaG91bGRSZXNldCA9IHRydWU7CisgICAgICAg
ICAgICAvLyBPbmx5IHJlc2V0IGlmIHdlIGFyZW4ndCBhbHJlYWR5IGdvaW5nIHRvIGEgbmV3IHBy
b3Zpc2lvbmFsIGl0ZW0uCisgICAgICAgICAgICBib29sIHNob3VsZFJlc2V0ID0gIWhpc3Rvcnko
KS0+cHJvdmlzaW9uYWxJdGVtKCk7CiAgICAgICAgICAgICBpZiAoIShwZGwtPmlzTG9hZGluZ0lu
QVBJU2Vuc2UoKSAmJiAhcGRsLT5pc1N0b3BwaW5nKCkpKSB7CiAgICAgICAgICAgICAgICAgbV9k
ZWxlZ2F0ZUlzSGFuZGxpbmdQcm92aXNpb25hbExvYWRFcnJvciA9IHRydWU7CiAgICAgICAgICAg
ICAgICAgbV9jbGllbnQtPmRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChlcnJvcik7CkBA
IC0yMzYyLDcgKzIzNjgsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjaGVja0xvYWRDb21wbGV0ZUZv
clRoCiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IGNhbiBzdG9wcGluZyBsb2FkaW5nIGhlcmUg
cG9zc2libHkgaGF2ZSBhbnkgZWZmZWN0LCBpZiBpc0xvYWRpbmcgaXMgZmFsc2UsCiAgICAgICAg
ICAgICAgICAgLy8gd2hpY2ggaXQgbXVzdCBiZSB0byBiZSBpbiB0aGlzIGJyYW5jaCBvZiB0aGUg
aWY/IEFuZCBpcyBpdCBPSyB0byBqdXN0IGRvIGEgZnVsbC1vbgogICAgICAgICAgICAgICAgIC8v
IHN0b3BBbGxMb2FkZXJzIGluc3RlYWQgb2Ygc3RvcExvYWRpbmdTdWJmcmFtZXM/Ci0gICAgICAg
ICAgICAgICAgc3RvcExvYWRpbmdTdWJmcmFtZXMoKTsKKyAgICAgICAgICAgICAgICBzdG9wTG9h
ZGluZ1N1YmZyYW1lcyhEYXRhYmFzZVBvbGljeVN0b3AsIFNob3VsZE5vdENsZWFyUHJvdmlzaW9u
YWxJdGVtKTsKICAgICAgICAgICAgICAgICBwZGwtPnN0b3BMb2FkaW5nKCk7CiAKICAgICAgICAg
ICAgICAgICAvLyBJZiB3ZSdyZSBpbiB0aGUgbWlkZGxlIG9mIGxvYWRpbmcgbXVsdGlwYXJ0IGRh
dGEsIHdlIG5lZWQgdG8gcmVzdG9yZSB0aGUgZG9jdW1lbnQgbG9hZGVyLgpAQCAtMjk2NCw3ICsy
OTcwLDggQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y29udGludWVMb2FkQWZ0ZXJOYXZpZwogICAgIH0K
IAogICAgIEZyYW1lTG9hZFR5cGUgdHlwZSA9IHBvbGljeUNoZWNrZXIoKS0+bG9hZFR5cGUoKTsK
LSAgICBzdG9wQWxsTG9hZGVycygpOworICAgIC8vIEEgbmV3IG5hdmlnYXRpb24gaXMgaW4gcHJv
Z3Jlc3MsIHNvIGRvbid0IGNsZWFyIHRoZSBoaXN0b3J5J3MgcHJvdmlzaW9uYWwgaXRlbS4KKyAg
ICBzdG9wQWxsTG9hZGVycyhEYXRhYmFzZVBvbGljeVN0b3AsIFNob3VsZE5vdENsZWFyUHJvdmlz
aW9uYWxJdGVtKTsKICAgICAKICAgICAvLyA8cmRhcjovL3Byb2JsZW0vNjI1MDg1Nj4gLSBJbiBj
ZXJ0YWluIGNpcmN1bXN0YW5jZXMgb24gcGFnZXMgd2l0aCBtdWx0aXBsZSBmcmFtZXMsIHN0b3BB
bGxMb2FkZXJzKCkKICAgICAvLyBtaWdodCBkZXRhY2ggdGhlIGN1cnJlbnQgRnJhbWVMb2FkZXIs
IGluIHdoaWNoIGNhc2Ugd2Ugc2hvdWxkIGJhaWwgb24gdGhpcyBuZXdseSBkZWZ1bmN0IGxvYWQu
IApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgJKHJldmlzaW9uIDc2MjY4KQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEyOCw3ICsxMjgsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBjYW5IYW5kbGVSZXF1ZXN0KGNvbnN0
IFJlc291cmNlUmVxdWVzdCYpOwogCiAgICAgLy8gQWxzbyBub3QgY29vbC4KLSAgICB2b2lkIHN0
b3BBbGxMb2FkZXJzKERhdGFiYXNlUG9saWN5ID0gRGF0YWJhc2VQb2xpY3lTdG9wKTsKKyAgICB2
b2lkIHN0b3BBbGxMb2FkZXJzKERhdGFiYXNlUG9saWN5ID0gRGF0YWJhc2VQb2xpY3lTdG9wLCBD
bGVhclByb3Zpc2lvbmFsSXRlbVBvbGljeSA9IFNob3VsZENsZWFyUHJvdmlzaW9uYWxJdGVtKTsK
ICAgICB2b2lkIHN0b3BGb3JVc2VyQ2FuY2VsKGJvb2wgZGVmZXJDaGVja0xvYWRDb21wbGV0ZSA9
IGZhbHNlKTsKIAogICAgIGJvb2wgaXNMb2FkaW5nTWFpblJlc291cmNlKCkgY29uc3QgeyByZXR1
cm4gbV9pc0xvYWRpbmdNYWluUmVzb3VyY2U7IH0KQEAgLTM1NSw3ICszNTUsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgYWRkRXh0cmFGaWVsZHNUb1JlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiwgRnJh
bWVMb2FkVHlwZSBsb2FkVHlwZSwgYm9vbCBpc01haW5SZXNvdXJjZSwgYm9vbCBjb29raWVQb2xp
Y3lVUkxGcm9tUmVxdWVzdCk7CiAKICAgICAvLyBBbHNvIG5vdCBjb29sLgotICAgIHZvaWQgc3Rv
cExvYWRpbmdTdWJmcmFtZXMoKTsKKyAgICB2b2lkIHN0b3BMb2FkaW5nU3ViZnJhbWVzKERhdGFi
YXNlUG9saWN5LCBDbGVhclByb3Zpc2lvbmFsSXRlbVBvbGljeSk7CiAKICAgICB2b2lkIGNsZWFy
UHJvdmlzaW9uYWxMb2FkKCk7CiAgICAgdm9pZCBtYXJrTG9hZENvbXBsZXRlKCk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJUeXBlcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlclR5cGVzLmgJKHJldmlzaW9uIDc2MjY4KQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyVHlwZXMuaAkod29ya2luZyBjb3B5
KQpAQCAtNzMsNiArNzMsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBEYXRhYmFz
ZVBvbGljeVN0b3AsICAgIC8vIFRoZSBkYXRhYmFzZSB0aHJlYWQgc2hvdWxkIGJlIHN0b3BwZWQg
YW5kIGRhdGFiYXNlIGNvbm5lY3Rpb25zIGNsb3NlZC4KICAgICAgICAgRGF0YWJhc2VQb2xpY3lD
b250aW51ZQogICAgIH07CisgICAgCisgICAgZW51bSBDbGVhclByb3Zpc2lvbmFsSXRlbVBvbGlj
eSB7CisgICAgICAgIFNob3VsZENsZWFyUHJvdmlzaW9uYWxJdGVtLAorICAgICAgICBTaG91bGRO
b3RDbGVhclByb3Zpc2lvbmFsSXRlbQorICAgIH07CiAKICAgICBlbnVtIE9iamVjdENvbnRlbnRU
eXBlIHsKICAgICAgICAgT2JqZWN0Q29udGVudE5vbmUsCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA3NjI2
OCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIy
IEBACisyMDExLTAxLTIwICBDaGFybGllIFJlaXMgIDxjcmVpc0BjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRnJhbWVMb2FkZXI6
OmNoZWNrTG9hZENvbXBsZXRlRm9yVGhpc0ZyYW1lIHVzZXMgd3JvbmcgaGlzdG9yeSBpdGVtCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODgxMgorCisg
ICAgICAgIFRlc3QgdGhhdCB3ZSBhdm9pZCB1cGRhdGluZyBiYWNrL2ZvcndhcmQgbGlzdCBvbiBh
IGNhbmNlbGVkIG5hdmlnYXRpb24KKyAgICAgICAgaWYgYSBuZXcgbmF2aWdhdGlvbiBpcyBhbHJl
YWR5IGluIHByb2Nlc3MuICBBbHNvIHVwZGF0ZSBmb3J3YXJkLWFuZC1jYW5jZWwKKyAgICAgICAg
dG8gZ28gZm9yd2FyZCwgZW5zdXJpbmcgYmFjay9mb3J3YXJkIHN0YXRlIGlzIHJlc2V0IGlmIHVz
ZXIgY2xpY2tzIHN0b3AuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL25hdmlnYXRpb24vYmFjay10
d2ljZS13aXRob3V0LWNvbW1pdC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAv
dGVzdHMvbmF2aWdhdGlvbi9iYWNrLXR3aWNlLXdpdGhvdXQtY29tbWl0Lmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9mb3J3YXJkLWFuZC1jYW5jZWwtZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9mb3J3YXJkLWFuZC1jYW5j
ZWwuaHRtbDogR28gZm9yd2FyZCBhZnRlciBzdG9wLCBub3QgYmFjay4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL25hdmlnYXRpb24vcmVzb3VyY2VzL2JhY2stdHdpY2UtcGFnZS0yLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNvdXJjZXMvYmFjay10d2ljZS1w
YWdlLTMuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Jlc291
cmNlcy9mb3J3YXJkLWFuZC1jYW5jZWwtZnJhbWVzLmh0bWw6IFJlZHVjZWQgZGVsYXkuCisKIDIw
MTEtMDEtMjAgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQsIHJlbW92ZSBHVEsgcmVzdWx0IGZvciB3aW5kb3ctb25lcnJvcjIgYXMg
aXQncyB0aGUgc2FtZQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2Jh
Y2stdHdpY2Utd2l0aG91dC1jb21taXQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9iYWNrLXR3aWNlLXdpdGhvdXQtY29tbWl0LWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdh
dGlvbi9iYWNrLXR3aWNlLXdpdGhvdXQtY29tbWl0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw5IEBACitUaGlzIHRlc3QgY2hlY2tzIHRoYXQgZ29pbmcgYmFjayB0d2ljZSB3
aXRob3V0IGNvbW1pdHRpbmcgZG9lc24ndCBjb3JydXB0IHRoZSBiYWNrL2ZvcndhcmQgbGlzdC4K
KworSWYgdGVzdGluZyBtYW51YWxseSwgY2xpY2sgaGVyZS4KKworPT09PT09PT09PT09PT0gQmFj
ayBGb3J3YXJkIExpc3QgPT09PT09PT09PT09PT0KK2N1cnItPiAgaHR0cDovLzEyNy4wLjAuMTo4
MDAwL25hdmlnYXRpb24vYmFjay10d2ljZS13aXRob3V0LWNvbW1pdC5odG1sICAqKm5hdiB0YXJn
ZXQqKgorICAgICAgICBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbmF2aWdhdGlvbi9yZXNvdXJjZXMv
YmFjay10d2ljZS1wYWdlLTIuaHRtbCAgKipuYXYgdGFyZ2V0KioKKyAgICAgICAgaHR0cDovLzEy
Ny4wLjAuMTo4MDAwL25hdmlnYXRpb24vcmVzb3VyY2VzL2JhY2stdHdpY2UtcGFnZS0zLmh0bWwg
ICoqbmF2IHRhcmdldCoqCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2JhY2stdHdp
Y2Utd2l0aG91dC1jb21taXQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL25hdmlnYXRpb24vYmFjay10d2ljZS13aXRob3V0LWNvbW1pdC5odG1sCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2JhY2stdHdpY2Utd2l0aG91
dC1jb21taXQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMiBAQAorPHNjcmlwdD4KK2lm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQmFja0ZvcndhcmRMaXN0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOworCisgICAgLy8gVmlzaXQgdHdvIHBhZ2VzLCB0aGVuIGdvIGJhY2sgdG8gcGFnZSAy
LCB3aGljaCBoYXMgYSBzbG93IGZyYW1lIHRoZSBzZWNvbmQgdGltZS4KKyAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5xdWV1ZUxvYWQoInJlc291cmNlcy9iYWNrLXR3aWNlLXBhZ2UtMi5odG1sIik7
CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIucXVldWVMb2FkKCJyZXNvdXJjZXMvYmFjay10d2lj
ZS1wYWdlLTMuaHRtbCIpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLnF1ZXVlQmFja05hdmln
YXRpb24oMSk7CisKKyAgICAvLyBOb3cgY29tcGV0ZSB3aXRoIHBhZ2UgMidzIGhpc3RvcnkuYmFj
aygpIGNhbGwsIHRvIGEgZGlmZmVyZW50IGhpc3RvcnkgaXRlbS4KKyAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5xdWV1ZUJhY2tOYXZpZ2F0aW9uKDIpOworCisgICAgLy8gUmVwZWF0IHRoZSB0ZXN0
LCBidXQgY29tcGV0ZSB3aXRoIGhpc3RvcnkuYmFjaygpIHRvIHRoZSBzYW1lIGhpc3RvcnkgaXRl
bS4KKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5xdWV1ZUxvYWQoInJlc291cmNlcy9iYWNrLXR3
aWNlLXBhZ2UtMi5odG1sIik7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIucXVldWVMb2FkKCJy
ZXNvdXJjZXMvYmFjay10d2ljZS1wYWdlLTMuaHRtbCIpOworICAgIGxheW91dFRlc3RDb250cm9s
bGVyLnF1ZXVlQmFja05hdmlnYXRpb24oMSk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIucXVl
dWVCYWNrTmF2aWdhdGlvbigxKTsKK30KKzwvc2NyaXB0PgorPHA+VGhpcyB0ZXN0IGNoZWNrcyB0
aGF0IGdvaW5nIGJhY2sgdHdpY2Ugd2l0aG91dCBjb21taXR0aW5nIGRvZXNuJ3QgY29ycnVwdCB0
aGUgYmFjay9mb3J3YXJkIGxpc3QuCis8cD5JZiB0ZXN0aW5nIG1hbnVhbGx5LCA8YSBocmVmPSJy
ZXNvdXJjZXMvYmFjay10d2ljZS1wYWdlLTIuaHRtbCI+Y2xpY2sgaGVyZTwvYT4uCkluZGV4OiBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vZm9yd2FyZC1hbmQtY2FuY2VsLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24v
Zm9yd2FyZC1hbmQtY2FuY2VsLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNzYyNjgpCisrKyBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vZm9yd2FyZC1hbmQtY2FuY2VsLWV4cGVjdGVk
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxNSArMSwxMyBAQAotVGhpcyB0ZXN0IGNoZWNrcyB0
aGF0IHRoZSBiYWNrRm9yd2FyZCBsaXN0IGlzIG5vdCBjb3JydXB0ZWQgd2hlbiBhIGZyYW1lIGxv
YWQgaXMgY2FuY2VsZWQuCi0KLUlmIHRlc3RpbmcgbWFudWFsbHksIGNsaWNrIGhlcmUuCisgCiAK
ID09PT09PT09PT09PT09IEJhY2sgRm9yd2FyZCBMaXN0ID09PT09PT09PT09PT09Ci1jdXJyLT4g
IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9uYXZpZ2F0aW9uL2ZvcndhcmQtYW5kLWNhbmNlbC5odG1s
ICAqKm5hdiB0YXJnZXQqKgorICAgICAgICBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbmF2aWdhdGlv
bi9mb3J3YXJkLWFuZC1jYW5jZWwuaHRtbCAgKipuYXYgdGFyZ2V0KioKICAgICAgICAgaHR0cDov
LzEyNy4wLjAuMTo4MDAwL25hdmlnYXRpb24vcmVzb3VyY2VzL2ZvcndhcmQtYW5kLWNhbmNlbC1m
cmFtZXMtY29udGFpbmVyLmh0bWwgICoqbmF2IHRhcmdldCoqCiAgICAgICAgICAgICBodHRwOi8v
MTI3LjAuMC4xOjgwMDAvbmF2aWdhdGlvbi9yZXNvdXJjZXMvZm9yd2FyZC1hbmQtY2FuY2VsLWZy
YW1lcy5odG1sIChpbiBmcmFtZSAiPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTAtLT4tLT4iKQog
ICAgICAgICAgICAgICAgIGFib3V0OmJsYW5rIChpbiBmcmFtZSAiZnJhbWUxIikKICAgICAgICAg
ICAgIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9uYXZpZ2F0aW9uL3Jlc291cmNlcy9vdGhlcnBhZ2Uu
aHRtbCAoaW4gZnJhbWUgIjwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUxLS0+LS0+IikKLSAgICAg
ICAgaHR0cDovLzEyNy4wLjAuMTo4MDAwL25hdmlnYXRpb24vcmVzb3VyY2VzL2ZvcndhcmQtYW5k
LWNhbmNlbC1mcmFtZXMtY29udGFpbmVyLmh0bWwKK2N1cnItPiAgaHR0cDovLzEyNy4wLjAuMTo4
MDAwL25hdmlnYXRpb24vcmVzb3VyY2VzL2ZvcndhcmQtYW5kLWNhbmNlbC1mcmFtZXMtY29udGFp
bmVyLmh0bWwKICAgICAgICAgICAgIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9uYXZpZ2F0aW9uL3Jl
c291cmNlcy9mb3J3YXJkLWFuZC1jYW5jZWwtZnJhbWVzLmh0bWwgKGluIGZyYW1lICI8IS0tZnJh
bWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0tPiIpCi0gICAgICAgICAgICAgICAgaHR0cDovLzEyNy4w
LjAuMTo4MDAwL25hdmlnYXRpb24vcmVzb3VyY2VzL3Nsb3ctcmVzb3VyY2UtMS1zZWMucGwgKGlu
IGZyYW1lICJmcmFtZTEiKSAgKipuYXYgdGFyZ2V0KioKKyAgICAgICAgICAgICAgICBodHRwOi8v
MTI3LjAuMC4xOjgwMDAvbmF2aWdhdGlvbi9yZXNvdXJjZXMvc2xvdy1yZXNvdXJjZS5wbD9kZWxh
eT0yNTAgKGluIGZyYW1lICJmcmFtZTEiKSAgKipuYXYgdGFyZ2V0KioKICAgICAgICAgICAgIGh0
dHA6Ly8xMjcuMC4wLjE6ODAwMC9uYXZpZ2F0aW9uL3Jlc291cmNlcy9vdGhlcnBhZ2UuaHRtbCAo
aW4gZnJhbWUgIjwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUxLS0+LS0+IikKID09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkluZGV4OiBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL25hdmlnYXRpb24vZm9yd2FyZC1hbmQtY2FuY2VsLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2ZvcndhcmQtYW5kLWNhbmNlbC5o
dG1sCShyZXZpc2lvbiA3NjI2OCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlv
bi9mb3J3YXJkLWFuZC1jYW5jZWwuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNyw4ICs3LDggQEAK
IC8vICAgIEltcG9ydGFudCB0byB1c2UgYWJvdXQ6YmxhbmssIHdoaWNoIGNhbiBjb21taXQgaW1t
ZWRpYXRlbHkgd2hpbGUgd2Fsa2luZyB0aGUgdHJlZS4KIC8vIDUuIEdvIGZvcndhcmQgdG8gc2xv
dyBVUkwsIGJ1dCBzdG9wIGJlZm9yZSB0aGUgbmF2aWdhdGlvbiBjb21taXRzLgogLy8gICAgSW1w
b3J0YW50IHRvIGNhbmNlbCB0aGUgbG9hZCBhbmQgZW5zdXJlIHRoZSBoaXN0b3J5IGlzIG5vdCBj
b3JydXB0ZWQuCi0vLyA2LiBHbyBiYWNrIHRvIHN0YXJ0IHBhZ2Ugd2l0aCBubyBmcmFtZXMuCi0v
LyAgICBJbXBvcnRhbnQgZm9yIHRlc3RpbmcgdGhhdCBzdWJmcmFtZXMgY2FuIGJlIHJlbW92ZWQu
CisvLyA2LiBHbyBmb3J3YXJkIGFuZCBsZXQgc2xvdyBVUkwgbG9hZC4KKy8vICAgIEltcG9ydGFu
dCBmb3IgdGVzdGluZyB0aGF0IG5hdmlnYXRpb24gc3RhdGUgaXMgcmVzZXQgYWZ0ZXIgc3RvcHBp
bmcuCiBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CiAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEJhY2tGb3J3YXJkTGlzdCgpOwogICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKQEAgLTIxLDcgKzIxLDggQEAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikgewogICAgIGxheW91dFRlc3RDb250cm9sbGVyLnF1ZXVlTm9uTG9hZGluZ1Njcmlw
dCgic2V0VGltZW91dCgnaGlzdG9yeS5mb3J3YXJkKCk7JywwKTsgc2V0VGltZW91dCgnd2luZG93
LnN0b3AoKTsnLDEwKTsiKTsKIAogICAgIC8vIE5vdyBnbyBiYWNrIHRvIG1ha2Ugc3VyZSB0aGUg
YmFja0ZvcndhcmRMaXN0IGlzIG5vdCBjb3JydXB0ZWQuCi0gICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIucXVldWVOb25Mb2FkaW5nU2NyaXB0KCJzZXRUaW1lb3V0KCdoaXN0b3J5LmJhY2soKTsnLDUw
KTsiKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5xdWV1ZU5vbkxvYWRpbmdTY3JpcHQoInNl
dFRpbWVvdXQoJ2hpc3RvcnkuZm9yd2FyZCgpOycsNTApOyIpOworICAgIGxheW91dFRlc3RDb250
cm9sbGVyLnF1ZXVlTm9uTG9hZGluZ1NjcmlwdCgic2V0VGltZW91dCgnbGF5b3V0VGVzdENvbnRy
b2xsZXIubm90aWZ5RG9uZSgpOycsMTAwKTsiKTsKIAogICAgIC8vIFdhaXQgdW50aWwgd2UgZ2V0
IGJhY2sgdG8gdGhpcyBwYWdlLgogICAgIGxheW91dFRlc3RDb250cm9sbGVyLnF1ZXVlTG9hZGlu
Z1NjcmlwdCgibGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOyIpOwpAQCAtMjks
MTUgKzMwLDMgQEAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewogPC9zY3JpcHQ+
CiA8cD5UaGlzIHRlc3QgY2hlY2tzIHRoYXQgdGhlIGJhY2tGb3J3YXJkIGxpc3QgaXMgbm90IGNv
cnJ1cHRlZCB3aGVuIGEgZnJhbWUgbG9hZCBpcyBjYW5jZWxlZC4KIDxwPklmIHRlc3RpbmcgbWFu
dWFsbHksIDxhIGhyZWY9InJlc291cmNlcy9mb3J3YXJkLWFuZC1jYW5jZWwtZnJhbWVzLWNvbnRh
aW5lci5odG1sIj5jbGljayBoZXJlPC9hPi4KLQotPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpIHsKLSAgICAvLyBPbmx5IG5vdGlmeSBkb25lIHdoZW4gd2UgcmV0dXJu
IHRvIHRoaXMgcGFnZSBhIHNlY29uZCB0aW1lLgotICAgIGlmICghd2luZG93LmxvY2FsU3RvcmFn
ZS5zdGFydGVkKSB7Ci0gICAgICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2Uuc3RhcnRlZCA9IHRydWU7
Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgZGVsZXRlIHdpbmRvdy5sb2NhbFN0b3JhZ2Uuc3RhcnRl
ZDsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwotICAgIH0KLX0K
LTwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Jlc291
cmNlcy9iYWNrLXR3aWNlLXBhZ2UtMi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNvdXJjZXMvYmFjay10d2ljZS1wYWdlLTIuaHRtbAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNvdXJjZXMv
YmFjay10d2ljZS1wYWdlLTIuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMSBAQAorPHA+
UGFnZSAyLgorPHA+VGhpcyB0ZXN0IGNoZWNrcyB0aGF0IGdvaW5nIGJhY2sgdHdpY2Ugd2l0aG91
dCBjb21taXR0aW5nIGRvZXNuJ3QgY29ycnVwdCB0aGUgYmFjay9mb3J3YXJkIGxpc3QuCis8cD5J
ZiB0ZXN0aW5nIG1hbnVhbGx5LCA8YSBocmVmPSJiYWNrLXR3aWNlLXBhZ2UtMy5odG1sIj5jbGlj
ayBoZXJlPC9hPi4KKworPHNjcmlwdD4KK2lmICghd2luZG93LmxvY2FsU3RvcmFnZS5zdGFydGVk
KSB7CisgICAgd2luZG93LmxvY2FsU3RvcmFnZS5zdGFydGVkID0gdHJ1ZTsKK30gZWxzZSB7Cisg
ICAgZGVsZXRlIHdpbmRvdy5sb2NhbFN0b3JhZ2Uuc3RhcnRlZDsKKworICAgIC8vIFRoZSBzZWNv
bmQgdGltZSB3ZSB2aXNpdCB0aGUgcGFnZSAoaS5lLiwgd2hpbGUgZ29pbmcgYmFjayksIGluc2Vy
dCBhbgorICAgIC8vIGlmcmFtZSB0aGF0IGRvZXNuJ3QgY29tbWl0IGR1cmluZyB0aGUgdGVzdC4K
KyAgICB2YXIgZiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOworICAgIGYuc3Jj
ID0gIi4uLy4uL2hpc3RvcnkvcmVzb3VyY2VzL2JhY2stZHVyaW5nLW9ubG9hZC1odW5nLXBhZ2Uu
cGhwIjsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGYpOworCisgICAgLy8gTm93IGdv
IGJhY2suICBUaGlzIHdpbGwgY29tcGV0ZSB3aXRoIHRoZSBzZWNvbmQgcXVldWVCYWNrTmF2aWdh
dGlvbgorICAgIC8vIGZyb20gYmFjay10d2ljZS13aXRob3V0LWNvbW1pdC5odG1sLgorICAgIGhp
c3RvcnkuYmFjaygpOworfQorPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L25hdmlnYXRpb24vcmVzb3VyY2VzL2JhY2stdHdpY2UtcGFnZS0zLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Jlc291cmNlcy9iYWNrLXR3aWNl
LXBhZ2UtMy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZp
Z2F0aW9uL3Jlc291cmNlcy9iYWNrLXR3aWNlLXBhZ2UtMy5odG1sCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDMgQEAKKzxwPlBhZ2UgMy4KKzxwPlRoaXMgdGVzdCBjaGVja3MgdGhhdCBnb2luZyBi
YWNrIHR3aWNlIHdpdGhvdXQgY29tbWl0dGluZyBkb2Vzbid0IGNvcnJ1cHQgdGhlIGJhY2svZm9y
d2FyZCBsaXN0LgorPHA+SWYgdGVzdGluZyBtYW51YWxseSwgaG9sZCBkb3duIHRoZSBiYWNrIGtl
eWJvYXJkIHNob3J0Y3V0IG9yIGNsaWNrIGJhY2sgdHdpY2UgcXVpY2tseS4KSW5kZXg6IExheW91
dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNvdXJjZXMvZm9yd2FyZC1hbmQtY2FuY2Vs
LWZyYW1lcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdh
dGlvbi9yZXNvdXJjZXMvZm9yd2FyZC1hbmQtY2FuY2VsLWZyYW1lcy5odG1sCShyZXZpc2lvbiA3
NjI2OCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNvdXJjZXMvZm9y
d2FyZC1hbmQtY2FuY2VsLWZyYW1lcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMiw0ICsxMiw0
IEBAIGZ1bmN0aW9uIGNsaWNrTGluaygpIHsKIDxpZnJhbWUgaWQ9ImZyYW1lMSIgc3JjPSJhYm91
dDpibGFuayI+PC9pZnJhbWU+CiA8YnI+CiA8cD5UaGlzIHRlc3QgY2hlY2tzIHRoYXQgdGhlIGJh
Y2tGb3J3YXJkIGxpc3QgaXMgbm90IGNvcnJ1cHRlZCB3aGVuIGEgZnJhbWUgbG9hZCBpcyBjYW5j
ZWxlZC4KLTxwPklmIHRlc3RpbmcgbWFudWFsbHksIDxhIGlkPSJsaW5rIiBocmVmPSJzbG93LXJl
c291cmNlLTEtc2VjLnBsIiB0YXJnZXQ9ImZyYW1lMSI+Y2xpY2sgaGVyZTwvYT4gYW5kIHRoZW4g
QmFjay4gIFRoZW4gY2xpY2sgRm9yd2FyZCBhbmQgcXVpY2tseSBjbGljayBTdG9wLiAgRW5zdXJl
IHRoYXQgQmFjayBhbmQgRm9yd2FyZCBzdGlsbCB3b3JrLgorPHA+SWYgdGVzdGluZyBtYW51YWxs
eSwgPGEgaWQ9ImxpbmsiIGhyZWY9InNsb3ctcmVzb3VyY2UucGw/ZGVsYXk9MjUwIiB0YXJnZXQ9
ImZyYW1lMSI+Y2xpY2sgaGVyZTwvYT4gYW5kIHRoZW4gQmFjay4gIFRoZW4gY2xpY2sgRm9yd2Fy
ZCBhbmQgcXVpY2tseSBjbGljayBTdG9wLiAgRW5zdXJlIHRoYXQgQmFjayBhbmQgRm9yd2FyZCBz
dGlsbCB3b3JrLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79655</attachid>
            <date>2011-01-20 15:00:51 -0800</date>
            <delta_ts>2011-01-21 08:31:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-48812-20110120150049.patch</filename>
            <type>text/plain</type>
            <size>17246</size>
            <attacher name="Charles Reis">creis</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc2MjY4KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTEtMDEtMjAgIENoYXJsaWUg
UmVpcyAgPGNyZWlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBGcmFtZUxvYWRlcjo6Y2hlY2tMb2FkQ29tcGxldGVGb3JUaGlz
RnJhbWUgdXNlcyB3cm9uZyBoaXN0b3J5IGl0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4ODEyCisKKyAgICAgICAgTW9zdCBjYWxscyB0byBzdG9w
QWxsTG9hZGVycyBub3cgY2xlYXIgdGhlIGhpc3RvcnkncyBwcm92aXNpb25hbCBpdGVtKHMpLgor
ICAgICAgICBXZSBjYW4gbm93IGF2b2lkIHJlc2V0dGluZyB0aGUgYmFjay9mb3J3YXJkIHN0YXRl
IGlmIGEgbmV3IG5hdmlnYXRpb24KKyAgICAgICAgaXMgaW4gcHJvZ3Jlc3MuCisKKyAgICAgICAg
VGVzdDogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2JhY2stdHdpY2Utd2l0aG91dC1jb21taXQuaHRt
bAorICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL25hdmlnYXRpb24vZm9yd2FyZC1hbmQtY2FuY2Vs
Lmh0bWwKKworICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgICogbG9h
ZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyVHlwZXMuaDoK
KyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjogVXBkYXRlIHN0b3BBbGxMb2FkZXJzIHNpZ25hdHVy
ZS4KKwogMjAxMS0wMS0yMCAgQWxleGFuZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgkocmV2aXNpb24gNzYyNjgpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5p
bgkod29ya2luZyBjb3B5KQpAQCAtMTYzLDcgKzE2Myw3IEBAIF9fWk43V2ViQ29yZTExRnJhbWVM
b2FkZXIxMXNob3VsZENsb3NlRXYKIF9fWk43V2ViQ29yZTExRnJhbWVMb2FkZXIxMXVybFNlbGVj
dGVkRVJLTlNfNEtVUkxFUktOM1dURjZTdHJpbmdFTlM0XzEwUGFzc1JlZlB0cklOU181RXZlbnRF
RUViYk5TXzE0UmVmZXJyZXJQb2xpY3lFCiBfX1pON1dlYkNvcmUxMUZyYW1lTG9hZGVyMTJzaG91
bGRSZWxvYWRFUktOU180S1VSTEVTM18KIF9fWk43V2ViQ29yZTExRnJhbWVMb2FkZXIxNGRldGFj
aENoaWxkcmVuRXYKLV9fWk43V2ViQ29yZTExRnJhbWVMb2FkZXIxNHN0b3BBbGxMb2FkZXJzRU5T
XzE0RGF0YWJhc2VQb2xpY3lFCitfX1pON1dlYkNvcmUxMUZyYW1lTG9hZGVyMTRzdG9wQWxsTG9h
ZGVyc0VOU18xNERhdGFiYXNlUG9saWN5RU5TXzI2Q2xlYXJQcm92aXNpb25hbEl0ZW1Qb2xpY3lF
CiBfX1pON1dlYkNvcmUxMUZyYW1lTG9hZGVyMTZkZXRhY2hGcm9tUGFyZW50RXYKIF9fWk43V2Vi
Q29yZTExRnJhbWVMb2FkZXIxNmxvYWRGcmFtZVJlcXVlc3RFUktOU18xNkZyYW1lTG9hZFJlcXVl
c3RFYmJOM1dURjEwUGFzc1JlZlB0cklOU181RXZlbnRFRUVOUzVfSU5TXzlGb3JtU3RhdGVFRUVO
U18xNFJlZmVycmVyUG9saWN5RQogX19aTjdXZWJDb3JlMTFGcmFtZUxvYWRlcjE3c3RvcEZvclVz
ZXJDYW5jZWxFYgpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCShyZXZp
c2lvbiA3NjI2OCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE2ODIsMTMgKzE2ODIsMTMgQEAgYm9vbCBGcmFtZUxvYWRlcjo6c2hv
dWxkQWxsb3dOYXZpZ2F0aW9uKAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBGcmFtZUxv
YWRlcjo6c3RvcExvYWRpbmdTdWJmcmFtZXMoKQordm9pZCBGcmFtZUxvYWRlcjo6c3RvcExvYWRp
bmdTdWJmcmFtZXMoRGF0YWJhc2VQb2xpY3kgZGF0YWJhc2VQb2xpY3ksIENsZWFyUHJvdmlzaW9u
YWxJdGVtUG9saWN5IGNsZWFyUHJvdmlzaW9uYWxJdGVtUG9saWN5KQogewogICAgIGZvciAoUmVm
UHRyPEZyYW1lPiBjaGlsZCA9IG1fZnJhbWUtPnRyZWUoKS0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsg
Y2hpbGQgPSBjaGlsZC0+dHJlZSgpLT5uZXh0U2libGluZygpKQotICAgICAgICBjaGlsZC0+bG9h
ZGVyKCktPnN0b3BBbGxMb2FkZXJzKCk7CisgICAgICAgIGNoaWxkLT5sb2FkZXIoKS0+c3RvcEFs
bExvYWRlcnMoZGF0YWJhc2VQb2xpY3ksIGNsZWFyUHJvdmlzaW9uYWxJdGVtUG9saWN5KTsKIH0K
IAotdm9pZCBGcmFtZUxvYWRlcjo6c3RvcEFsbExvYWRlcnMoRGF0YWJhc2VQb2xpY3kgZGF0YWJh
c2VQb2xpY3kpCit2b2lkIEZyYW1lTG9hZGVyOjpzdG9wQWxsTG9hZGVycyhEYXRhYmFzZVBvbGlj
eSBkYXRhYmFzZVBvbGljeSwgQ2xlYXJQcm92aXNpb25hbEl0ZW1Qb2xpY3kgY2xlYXJQcm92aXNp
b25hbEl0ZW1Qb2xpY3kpCiB7CiAgICAgQVNTRVJUKCFtX2ZyYW1lLT5kb2N1bWVudCgpIHx8ICFt
X2ZyYW1lLT5kb2N1bWVudCgpLT5pblBhZ2VDYWNoZSgpKTsKICAgICBpZiAobV9wYWdlRGlzbWlz
c2FsRXZlbnRCZWluZ0Rpc3BhdGNoZWQpCkBAIC0xNzAyLDcgKzE3MDIsMTIgQEAgdm9pZCBGcmFt
ZUxvYWRlcjo6c3RvcEFsbExvYWRlcnMoRGF0YWJhcwogCiAgICAgcG9saWN5Q2hlY2tlcigpLT5z
dG9wQ2hlY2soKTsKIAotICAgIHN0b3BMb2FkaW5nU3ViZnJhbWVzKCk7CisgICAgLy8gSWYgbm8g
bmV3IGxvYWQgaXMgaW4gcHJvZ3Jlc3MsIHdlIHNob3VsZCBjbGVhciB0aGUgcHJvdmlzaW9uYWwg
aXRlbSBmcm9tIGhpc3RvcnkKKyAgICAvLyBiZWZvcmUgd2UgY2FsbCBzdG9wTG9hZGluZy4KKyAg
ICBpZiAoY2xlYXJQcm92aXNpb25hbEl0ZW1Qb2xpY3kgPT0gU2hvdWxkQ2xlYXJQcm92aXNpb25h
bEl0ZW0pCisgICAgICAgIGhpc3RvcnkoKS0+c2V0UHJvdmlzaW9uYWxJdGVtKDApOworCisgICAg
c3RvcExvYWRpbmdTdWJmcmFtZXMoZGF0YWJhc2VQb2xpY3ksIGNsZWFyUHJvdmlzaW9uYWxJdGVt
UG9saWN5KTsKICAgICBpZiAobV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyKQogICAgICAgICBt
X3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXItPnN0b3BMb2FkaW5nKGRhdGFiYXNlUG9saWN5KTsK
ICAgICBpZiAobV9kb2N1bWVudExvYWRlcikKQEAgLTIzNTMsNyArMjM1OCw4IEBAIHZvaWQgRnJh
bWVMb2FkZXI6OmNoZWNrTG9hZENvbXBsZXRlRm9yVGgKICAgICAgICAgICAgICAgICAgICAgLy8g
UmVzZXQgdGhlIGJhY2sgZm9yd2FyZCBsaXN0IHRvIHRoZSBsYXN0IGNvbW1pdHRlZCBoaXN0b3J5
IGl0ZW0gYXQgdGhlIHRvcCBsZXZlbC4KICAgICAgICAgICAgICAgICAgICAgaXRlbSA9IHBhZ2Ut
Pm1haW5GcmFtZSgpLT5sb2FkZXIoKS0+aGlzdG9yeSgpLT5jdXJyZW50SXRlbSgpOwogICAgICAg
ICAgICAgICAgIAotICAgICAgICAgICAgYm9vbCBzaG91bGRSZXNldCA9IHRydWU7CisgICAgICAg
ICAgICAvLyBPbmx5IHJlc2V0IGlmIHdlIGFyZW4ndCBhbHJlYWR5IGdvaW5nIHRvIGEgbmV3IHBy
b3Zpc2lvbmFsIGl0ZW0uCisgICAgICAgICAgICBib29sIHNob3VsZFJlc2V0ID0gIWhpc3Rvcnko
KS0+cHJvdmlzaW9uYWxJdGVtKCk7CiAgICAgICAgICAgICBpZiAoIShwZGwtPmlzTG9hZGluZ0lu
QVBJU2Vuc2UoKSAmJiAhcGRsLT5pc1N0b3BwaW5nKCkpKSB7CiAgICAgICAgICAgICAgICAgbV9k
ZWxlZ2F0ZUlzSGFuZGxpbmdQcm92aXNpb25hbExvYWRFcnJvciA9IHRydWU7CiAgICAgICAgICAg
ICAgICAgbV9jbGllbnQtPmRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChlcnJvcik7CkBA
IC0yMzYyLDcgKzIzNjgsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjaGVja0xvYWRDb21wbGV0ZUZv
clRoCiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IGNhbiBzdG9wcGluZyBsb2FkaW5nIGhlcmUg
cG9zc2libHkgaGF2ZSBhbnkgZWZmZWN0LCBpZiBpc0xvYWRpbmcgaXMgZmFsc2UsCiAgICAgICAg
ICAgICAgICAgLy8gd2hpY2ggaXQgbXVzdCBiZSB0byBiZSBpbiB0aGlzIGJyYW5jaCBvZiB0aGUg
aWY/IEFuZCBpcyBpdCBPSyB0byBqdXN0IGRvIGEgZnVsbC1vbgogICAgICAgICAgICAgICAgIC8v
IHN0b3BBbGxMb2FkZXJzIGluc3RlYWQgb2Ygc3RvcExvYWRpbmdTdWJmcmFtZXM/Ci0gICAgICAg
ICAgICAgICAgc3RvcExvYWRpbmdTdWJmcmFtZXMoKTsKKyAgICAgICAgICAgICAgICBzdG9wTG9h
ZGluZ1N1YmZyYW1lcyhEYXRhYmFzZVBvbGljeVN0b3AsIFNob3VsZE5vdENsZWFyUHJvdmlzaW9u
YWxJdGVtKTsKICAgICAgICAgICAgICAgICBwZGwtPnN0b3BMb2FkaW5nKCk7CiAKICAgICAgICAg
ICAgICAgICAvLyBJZiB3ZSdyZSBpbiB0aGUgbWlkZGxlIG9mIGxvYWRpbmcgbXVsdGlwYXJ0IGRh
dGEsIHdlIG5lZWQgdG8gcmVzdG9yZSB0aGUgZG9jdW1lbnQgbG9hZGVyLgpAQCAtMjk2NCw3ICsy
OTcwLDggQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y29udGludWVMb2FkQWZ0ZXJOYXZpZwogICAgIH0K
IAogICAgIEZyYW1lTG9hZFR5cGUgdHlwZSA9IHBvbGljeUNoZWNrZXIoKS0+bG9hZFR5cGUoKTsK
LSAgICBzdG9wQWxsTG9hZGVycygpOworICAgIC8vIEEgbmV3IG5hdmlnYXRpb24gaXMgaW4gcHJv
Z3Jlc3MsIHNvIGRvbid0IGNsZWFyIHRoZSBoaXN0b3J5J3MgcHJvdmlzaW9uYWwgaXRlbS4KKyAg
ICBzdG9wQWxsTG9hZGVycyhEYXRhYmFzZVBvbGljeVN0b3AsIFNob3VsZE5vdENsZWFyUHJvdmlz
aW9uYWxJdGVtKTsKICAgICAKICAgICAvLyA8cmRhcjovL3Byb2JsZW0vNjI1MDg1Nj4gLSBJbiBj
ZXJ0YWluIGNpcmN1bXN0YW5jZXMgb24gcGFnZXMgd2l0aCBtdWx0aXBsZSBmcmFtZXMsIHN0b3BB
bGxMb2FkZXJzKCkKICAgICAvLyBtaWdodCBkZXRhY2ggdGhlIGN1cnJlbnQgRnJhbWVMb2FkZXIs
IGluIHdoaWNoIGNhc2Ugd2Ugc2hvdWxkIGJhaWwgb24gdGhpcyBuZXdseSBkZWZ1bmN0IGxvYWQu
IApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgJKHJldmlzaW9uIDc2MjY4KQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEyOCw3ICsxMjgsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBjYW5IYW5kbGVSZXF1ZXN0KGNvbnN0
IFJlc291cmNlUmVxdWVzdCYpOwogCiAgICAgLy8gQWxzbyBub3QgY29vbC4KLSAgICB2b2lkIHN0
b3BBbGxMb2FkZXJzKERhdGFiYXNlUG9saWN5ID0gRGF0YWJhc2VQb2xpY3lTdG9wKTsKKyAgICB2
b2lkIHN0b3BBbGxMb2FkZXJzKERhdGFiYXNlUG9saWN5ID0gRGF0YWJhc2VQb2xpY3lTdG9wLCBD
bGVhclByb3Zpc2lvbmFsSXRlbVBvbGljeSA9IFNob3VsZENsZWFyUHJvdmlzaW9uYWxJdGVtKTsK
ICAgICB2b2lkIHN0b3BGb3JVc2VyQ2FuY2VsKGJvb2wgZGVmZXJDaGVja0xvYWRDb21wbGV0ZSA9
IGZhbHNlKTsKIAogICAgIGJvb2wgaXNMb2FkaW5nTWFpblJlc291cmNlKCkgY29uc3QgeyByZXR1
cm4gbV9pc0xvYWRpbmdNYWluUmVzb3VyY2U7IH0KQEAgLTM1NSw3ICszNTUsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgYWRkRXh0cmFGaWVsZHNUb1JlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiwgRnJh
bWVMb2FkVHlwZSBsb2FkVHlwZSwgYm9vbCBpc01haW5SZXNvdXJjZSwgYm9vbCBjb29raWVQb2xp
Y3lVUkxGcm9tUmVxdWVzdCk7CiAKICAgICAvLyBBbHNvIG5vdCBjb29sLgotICAgIHZvaWQgc3Rv
cExvYWRpbmdTdWJmcmFtZXMoKTsKKyAgICB2b2lkIHN0b3BMb2FkaW5nU3ViZnJhbWVzKERhdGFi
YXNlUG9saWN5LCBDbGVhclByb3Zpc2lvbmFsSXRlbVBvbGljeSk7CiAKICAgICB2b2lkIGNsZWFy
UHJvdmlzaW9uYWxMb2FkKCk7CiAgICAgdm9pZCBtYXJrTG9hZENvbXBsZXRlKCk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJUeXBlcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlclR5cGVzLmgJKHJldmlzaW9uIDc2MjY4KQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyVHlwZXMuaAkod29ya2luZyBjb3B5
KQpAQCAtNzMsNiArNzMsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBEYXRhYmFz
ZVBvbGljeVN0b3AsICAgIC8vIFRoZSBkYXRhYmFzZSB0aHJlYWQgc2hvdWxkIGJlIHN0b3BwZWQg
YW5kIGRhdGFiYXNlIGNvbm5lY3Rpb25zIGNsb3NlZC4KICAgICAgICAgRGF0YWJhc2VQb2xpY3lD
b250aW51ZQogICAgIH07CisgICAgCisgICAgZW51bSBDbGVhclByb3Zpc2lvbmFsSXRlbVBvbGlj
eSB7CisgICAgICAgIFNob3VsZENsZWFyUHJvdmlzaW9uYWxJdGVtLAorICAgICAgICBTaG91bGRO
b3RDbGVhclByb3Zpc2lvbmFsSXRlbQorICAgIH07CiAKICAgICBlbnVtIE9iamVjdENvbnRlbnRU
eXBlIHsKICAgICAgICAgT2JqZWN0Q29udGVudE5vbmUsCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA3NjI2
OCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIy
IEBACisyMDExLTAxLTIwICBDaGFybGllIFJlaXMgIDxjcmVpc0BjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRnJhbWVMb2FkZXI6
OmNoZWNrTG9hZENvbXBsZXRlRm9yVGhpc0ZyYW1lIHVzZXMgd3JvbmcgaGlzdG9yeSBpdGVtCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODgxMgorCisg
ICAgICAgIFRlc3QgdGhhdCB3ZSBhdm9pZCB1cGRhdGluZyBiYWNrL2ZvcndhcmQgbGlzdCBvbiBh
IGNhbmNlbGVkIG5hdmlnYXRpb24KKyAgICAgICAgaWYgYSBuZXcgbmF2aWdhdGlvbiBpcyBhbHJl
YWR5IGluIHByb2Nlc3MuICBBbHNvIHVwZGF0ZSBmb3J3YXJkLWFuZC1jYW5jZWwKKyAgICAgICAg
dG8gZ28gZm9yd2FyZCwgZW5zdXJpbmcgYmFjay9mb3J3YXJkIHN0YXRlIGlzIHJlc2V0IGlmIHVz
ZXIgY2xpY2tzIHN0b3AuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL25hdmlnYXRpb24vYmFjay10
d2ljZS13aXRob3V0LWNvbW1pdC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAv
dGVzdHMvbmF2aWdhdGlvbi9iYWNrLXR3aWNlLXdpdGhvdXQtY29tbWl0Lmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9mb3J3YXJkLWFuZC1jYW5jZWwtZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9mb3J3YXJkLWFuZC1jYW5j
ZWwuaHRtbDogR28gZm9yd2FyZCBhZnRlciBzdG9wLCBub3QgYmFjay4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL25hdmlnYXRpb24vcmVzb3VyY2VzL2JhY2stdHdpY2UtcGFnZS0yLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNvdXJjZXMvYmFjay10d2ljZS1w
YWdlLTMuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Jlc291
cmNlcy9mb3J3YXJkLWFuZC1jYW5jZWwtZnJhbWVzLmh0bWw6IFJlZHVjZWQgZGVsYXkuCisKIDIw
MTEtMDEtMjAgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQsIHJlbW92ZSBHVEsgcmVzdWx0IGZvciB3aW5kb3ctb25lcnJvcjIgYXMg
aXQncyB0aGUgc2FtZQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2Jh
Y2stdHdpY2Utd2l0aG91dC1jb21taXQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9iYWNrLXR3aWNlLXdpdGhvdXQtY29tbWl0LWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdh
dGlvbi9iYWNrLXR3aWNlLXdpdGhvdXQtY29tbWl0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw5IEBACitUaGlzIHRlc3QgY2hlY2tzIHRoYXQgZ29pbmcgYmFjayB0d2ljZSB3
aXRob3V0IGNvbW1pdHRpbmcgZG9lc24ndCBjb3JydXB0IHRoZSBiYWNrL2ZvcndhcmQgbGlzdC4K
KworSWYgdGVzdGluZyBtYW51YWxseSwgY2xpY2sgaGVyZS4KKworPT09PT09PT09PT09PT0gQmFj
ayBGb3J3YXJkIExpc3QgPT09PT09PT09PT09PT0KK2N1cnItPiAgaHR0cDovLzEyNy4wLjAuMTo4
MDAwL25hdmlnYXRpb24vYmFjay10d2ljZS13aXRob3V0LWNvbW1pdC5odG1sICAqKm5hdiB0YXJn
ZXQqKgorICAgICAgICBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbmF2aWdhdGlvbi9yZXNvdXJjZXMv
YmFjay10d2ljZS1wYWdlLTIuaHRtbCAgKipuYXYgdGFyZ2V0KioKKyAgICAgICAgaHR0cDovLzEy
Ny4wLjAuMTo4MDAwL25hdmlnYXRpb24vcmVzb3VyY2VzL2JhY2stdHdpY2UtcGFnZS0zLmh0bWwg
ICoqbmF2IHRhcmdldCoqCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2JhY2stdHdp
Y2Utd2l0aG91dC1jb21taXQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL25hdmlnYXRpb24vYmFjay10d2ljZS13aXRob3V0LWNvbW1pdC5odG1sCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2JhY2stdHdpY2Utd2l0aG91
dC1jb21taXQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMyBAQAorPHNjcmlwdD4KK2lm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5jbGVhckJhY2tGb3J3YXJkTGlzdCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBC
YWNrRm9yd2FyZExpc3QoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CisKKyAgICAvLyBWaXNpdCB0d28gcGFnZXMsIHRoZW4gZ28gYmFjayB0byBwYWdlIDIsIHdoaWNo
IGhhcyBhIHNsb3cgZnJhbWUgdGhlIHNlY29uZCB0aW1lLgorICAgIGxheW91dFRlc3RDb250cm9s
bGVyLnF1ZXVlTG9hZCgicmVzb3VyY2VzL2JhY2stdHdpY2UtcGFnZS0yLmh0bWwiKTsKKyAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5xdWV1ZUxvYWQoInJlc291cmNlcy9iYWNrLXR3aWNlLXBhZ2Ut
My5odG1sIik7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIucXVldWVCYWNrTmF2aWdhdGlvbigx
KTsKKworICAgIC8vIE5vdyBjb21wZXRlIHdpdGggcGFnZSAyJ3MgaGlzdG9yeS5iYWNrKCkgY2Fs
bCwgdG8gYSBkaWZmZXJlbnQgaGlzdG9yeSBpdGVtLgorICAgIGxheW91dFRlc3RDb250cm9sbGVy
LnF1ZXVlQmFja05hdmlnYXRpb24oMik7CisKKyAgICAvLyBSZXBlYXQgdGhlIHRlc3QsIGJ1dCBj
b21wZXRlIHdpdGggaGlzdG9yeS5iYWNrKCkgdG8gdGhlIHNhbWUgaGlzdG9yeSBpdGVtLgorICAg
IGxheW91dFRlc3RDb250cm9sbGVyLnF1ZXVlTG9hZCgicmVzb3VyY2VzL2JhY2stdHdpY2UtcGFn
ZS0yLmh0bWwiKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5xdWV1ZUxvYWQoInJlc291cmNl
cy9iYWNrLXR3aWNlLXBhZ2UtMy5odG1sIik7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIucXVl
dWVCYWNrTmF2aWdhdGlvbigxKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5xdWV1ZUJhY2tO
YXZpZ2F0aW9uKDEpOworfQorPC9zY3JpcHQ+Cis8cD5UaGlzIHRlc3QgY2hlY2tzIHRoYXQgZ29p
bmcgYmFjayB0d2ljZSB3aXRob3V0IGNvbW1pdHRpbmcgZG9lc24ndCBjb3JydXB0IHRoZSBiYWNr
L2ZvcndhcmQgbGlzdC4KKzxwPklmIHRlc3RpbmcgbWFudWFsbHksIDxhIGhyZWY9InJlc291cmNl
cy9iYWNrLXR3aWNlLXBhZ2UtMi5odG1sIj5jbGljayBoZXJlPC9hPi4KSW5kZXg6IExheW91dFRl
c3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9mb3J3YXJkLWFuZC1jYW5jZWwtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9mb3J3YXJk
LWFuZC1jYW5jZWwtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA3NjI2OCkKKysrIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9mb3J3YXJkLWFuZC1jYW5jZWwtZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0xLDE1ICsxLDEzIEBACi1UaGlzIHRlc3QgY2hlY2tzIHRoYXQgdGhl
IGJhY2tGb3J3YXJkIGxpc3QgaXMgbm90IGNvcnJ1cHRlZCB3aGVuIGEgZnJhbWUgbG9hZCBpcyBj
YW5jZWxlZC4KLQotSWYgdGVzdGluZyBtYW51YWxseSwgY2xpY2sgaGVyZS4KKyAKIAogPT09PT09
PT09PT09PT0gQmFjayBGb3J3YXJkIExpc3QgPT09PT09PT09PT09PT0KLWN1cnItPiAgaHR0cDov
LzEyNy4wLjAuMTo4MDAwL25hdmlnYXRpb24vZm9yd2FyZC1hbmQtY2FuY2VsLmh0bWwgICoqbmF2
IHRhcmdldCoqCisgICAgICAgIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9uYXZpZ2F0aW9uL2Zvcndh
cmQtYW5kLWNhbmNlbC5odG1sICAqKm5hdiB0YXJnZXQqKgogICAgICAgICBodHRwOi8vMTI3LjAu
MC4xOjgwMDAvbmF2aWdhdGlvbi9yZXNvdXJjZXMvZm9yd2FyZC1hbmQtY2FuY2VsLWZyYW1lcy1j
b250YWluZXIuaHRtbCAgKipuYXYgdGFyZ2V0KioKICAgICAgICAgICAgIGh0dHA6Ly8xMjcuMC4w
LjE6ODAwMC9uYXZpZ2F0aW9uL3Jlc291cmNlcy9mb3J3YXJkLWFuZC1jYW5jZWwtZnJhbWVzLmh0
bWwgKGluIGZyYW1lICI8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0tPiIpCiAgICAgICAg
ICAgICAgICAgYWJvdXQ6YmxhbmsgKGluIGZyYW1lICJmcmFtZTEiKQogICAgICAgICAgICAgaHR0
cDovLzEyNy4wLjAuMTo4MDAwL25hdmlnYXRpb24vcmVzb3VyY2VzL290aGVycGFnZS5odG1sIChp
biBmcmFtZSAiPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTEtLT4tLT4iKQotICAgICAgICBodHRw
Oi8vMTI3LjAuMC4xOjgwMDAvbmF2aWdhdGlvbi9yZXNvdXJjZXMvZm9yd2FyZC1hbmQtY2FuY2Vs
LWZyYW1lcy1jb250YWluZXIuaHRtbAorY3Vyci0+ICBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbmF2
aWdhdGlvbi9yZXNvdXJjZXMvZm9yd2FyZC1hbmQtY2FuY2VsLWZyYW1lcy1jb250YWluZXIuaHRt
bAogICAgICAgICAgICAgaHR0cDovLzEyNy4wLjAuMTo4MDAwL25hdmlnYXRpb24vcmVzb3VyY2Vz
L2ZvcndhcmQtYW5kLWNhbmNlbC1mcmFtZXMuaHRtbCAoaW4gZnJhbWUgIjwhLS1mcmFtZVBhdGgg
Ly88IS0tZnJhbWUwLS0+LS0+IikKLSAgICAgICAgICAgICAgICBodHRwOi8vMTI3LjAuMC4xOjgw
MDAvbmF2aWdhdGlvbi9yZXNvdXJjZXMvc2xvdy1yZXNvdXJjZS0xLXNlYy5wbCAoaW4gZnJhbWUg
ImZyYW1lMSIpICAqKm5hdiB0YXJnZXQqKgorICAgICAgICAgICAgICAgIGh0dHA6Ly8xMjcuMC4w
LjE6ODAwMC9uYXZpZ2F0aW9uL3Jlc291cmNlcy9zbG93LXJlc291cmNlLnBsP2RlbGF5PTI1MCAo
aW4gZnJhbWUgImZyYW1lMSIpICAqKm5hdiB0YXJnZXQqKgogICAgICAgICAgICAgaHR0cDovLzEy
Ny4wLjAuMTo4MDAwL25hdmlnYXRpb24vcmVzb3VyY2VzL290aGVycGFnZS5odG1sIChpbiBmcmFt
ZSAiPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTEtLT4tLT4iKQogPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVz
dHMvbmF2aWdhdGlvbi9mb3J3YXJkLWFuZC1jYW5jZWwuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vZm9yd2FyZC1hbmQtY2FuY2VsLmh0bWwJKHJl
dmlzaW9uIDc2MjY4KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2Zvcndh
cmQtYW5kLWNhbmNlbC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC03LDkgKzcsMTAgQEAKIC8vICAg
IEltcG9ydGFudCB0byB1c2UgYWJvdXQ6YmxhbmssIHdoaWNoIGNhbiBjb21taXQgaW1tZWRpYXRl
bHkgd2hpbGUgd2Fsa2luZyB0aGUgdHJlZS4KIC8vIDUuIEdvIGZvcndhcmQgdG8gc2xvdyBVUkws
IGJ1dCBzdG9wIGJlZm9yZSB0aGUgbmF2aWdhdGlvbiBjb21taXRzLgogLy8gICAgSW1wb3J0YW50
IHRvIGNhbmNlbCB0aGUgbG9hZCBhbmQgZW5zdXJlIHRoZSBoaXN0b3J5IGlzIG5vdCBjb3JydXB0
ZWQuCi0vLyA2LiBHbyBiYWNrIHRvIHN0YXJ0IHBhZ2Ugd2l0aCBubyBmcmFtZXMuCi0vLyAgICBJ
bXBvcnRhbnQgZm9yIHRlc3RpbmcgdGhhdCBzdWJmcmFtZXMgY2FuIGJlIHJlbW92ZWQuCisvLyA2
LiBHbyBmb3J3YXJkIGFuZCBsZXQgc2xvdyBVUkwgbG9hZC4KKy8vICAgIEltcG9ydGFudCBmb3Ig
dGVzdGluZyB0aGF0IG5hdmlnYXRpb24gc3RhdGUgaXMgcmVzZXQgYWZ0ZXIgc3RvcHBpbmcuCiBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuY2xlYXJCYWNrRm9yd2FyZExpc3QoKTsKICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QmFja0ZvcndhcmRMaXN0KCk7CiAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OwogICAgIGxheW91dFRlc3RDb250cm9sbGVyLnF1ZXVlTG9hZCgicmVzb3VyY2VzL2ZvcndhcmQt
YW5kLWNhbmNlbC1mcmFtZXMtY29udGFpbmVyLmh0bWwiKTsKQEAgLTIxLDcgKzIyLDggQEAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewogICAgIGxheW91dFRlc3RDb250cm9sbGVy
LnF1ZXVlTm9uTG9hZGluZ1NjcmlwdCgic2V0VGltZW91dCgnaGlzdG9yeS5mb3J3YXJkKCk7Jyww
KTsgc2V0VGltZW91dCgnd2luZG93LnN0b3AoKTsnLDEwKTsiKTsKIAogICAgIC8vIE5vdyBnbyBi
YWNrIHRvIG1ha2Ugc3VyZSB0aGUgYmFja0ZvcndhcmRMaXN0IGlzIG5vdCBjb3JydXB0ZWQuCi0g
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIucXVldWVOb25Mb2FkaW5nU2NyaXB0KCJzZXRUaW1lb3V0
KCdoaXN0b3J5LmJhY2soKTsnLDUwKTsiKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5xdWV1
ZU5vbkxvYWRpbmdTY3JpcHQoInNldFRpbWVvdXQoJ2hpc3RvcnkuZm9yd2FyZCgpOycsNTApOyIp
OworICAgIGxheW91dFRlc3RDb250cm9sbGVyLnF1ZXVlTm9uTG9hZGluZ1NjcmlwdCgic2V0VGlt
ZW91dCgnbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOycsMTAwKTsiKTsKIAogICAg
IC8vIFdhaXQgdW50aWwgd2UgZ2V0IGJhY2sgdG8gdGhpcyBwYWdlLgogICAgIGxheW91dFRlc3RD
b250cm9sbGVyLnF1ZXVlTG9hZGluZ1NjcmlwdCgibGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVu
dGlsRG9uZSgpOyIpOwpAQCAtMjksMTUgKzMxLDMgQEAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikgewogPC9zY3JpcHQ+CiA8cD5UaGlzIHRlc3QgY2hlY2tzIHRoYXQgdGhlIGJhY2tG
b3J3YXJkIGxpc3QgaXMgbm90IGNvcnJ1cHRlZCB3aGVuIGEgZnJhbWUgbG9hZCBpcyBjYW5jZWxl
ZC4KIDxwPklmIHRlc3RpbmcgbWFudWFsbHksIDxhIGhyZWY9InJlc291cmNlcy9mb3J3YXJkLWFu
ZC1jYW5jZWwtZnJhbWVzLWNvbnRhaW5lci5odG1sIj5jbGljayBoZXJlPC9hPi4KLQotPHNjcmlw
dD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAvLyBPbmx5IG5vdGlm
eSBkb25lIHdoZW4gd2UgcmV0dXJuIHRvIHRoaXMgcGFnZSBhIHNlY29uZCB0aW1lLgotICAgIGlm
ICghd2luZG93LmxvY2FsU3RvcmFnZS5zdGFydGVkKSB7Ci0gICAgICAgIHdpbmRvdy5sb2NhbFN0
b3JhZ2Uuc3RhcnRlZCA9IHRydWU7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgZGVsZXRlIHdpbmRv
dy5sb2NhbFN0b3JhZ2Uuc3RhcnRlZDsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90
aWZ5RG9uZSgpOwotICAgIH0KLX0KLTwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9uYXZpZ2F0aW9uL3Jlc291cmNlcy9iYWNrLXR3aWNlLXBhZ2UtMi5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNvdXJjZXMvYmFjay10
d2ljZS1wYWdlLTIuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
bmF2aWdhdGlvbi9yZXNvdXJjZXMvYmFjay10d2ljZS1wYWdlLTIuaHRtbAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwyMSBAQAorPHA+UGFnZSAyLgorPHA+VGhpcyB0ZXN0IGNoZWNrcyB0aGF0IGdv
aW5nIGJhY2sgdHdpY2Ugd2l0aG91dCBjb21taXR0aW5nIGRvZXNuJ3QgY29ycnVwdCB0aGUgYmFj
ay9mb3J3YXJkIGxpc3QuCis8cD5JZiB0ZXN0aW5nIG1hbnVhbGx5LCA8YSBocmVmPSJiYWNrLXR3
aWNlLXBhZ2UtMy5odG1sIj5jbGljayBoZXJlPC9hPi4KKworPHNjcmlwdD4KK2lmICghd2luZG93
LmxvY2FsU3RvcmFnZS5zdGFydGVkKSB7CisgICAgd2luZG93LmxvY2FsU3RvcmFnZS5zdGFydGVk
ID0gdHJ1ZTsKK30gZWxzZSB7CisgICAgZGVsZXRlIHdpbmRvdy5sb2NhbFN0b3JhZ2Uuc3RhcnRl
ZDsKKworICAgIC8vIFRoZSBzZWNvbmQgdGltZSB3ZSB2aXNpdCB0aGUgcGFnZSAoaS5lLiwgd2hp
bGUgZ29pbmcgYmFjayksIGluc2VydCBhbgorICAgIC8vIGlmcmFtZSB0aGF0IGRvZXNuJ3QgY29t
bWl0IGR1cmluZyB0aGUgdGVzdC4KKyAgICB2YXIgZiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImlmcmFtZSIpOworICAgIGYuc3JjID0gIi4uLy4uL2hpc3RvcnkvcmVzb3VyY2VzL2JhY2stZHVy
aW5nLW9ubG9hZC1odW5nLXBhZ2UucGhwIjsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxk
KGYpOworCisgICAgLy8gTm93IGdvIGJhY2suICBUaGlzIHdpbGwgY29tcGV0ZSB3aXRoIHRoZSBz
ZWNvbmQgcXVldWVCYWNrTmF2aWdhdGlvbgorICAgIC8vIGZyb20gYmFjay10d2ljZS13aXRob3V0
LWNvbW1pdC5odG1sLgorICAgIGhpc3RvcnkuYmFjaygpOworfQorPC9zY3JpcHQ+CkluZGV4OiBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcmVzb3VyY2VzL2JhY2stdHdpY2UtcGFn
ZS0zLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9u
L3Jlc291cmNlcy9iYWNrLXR3aWNlLXBhZ2UtMy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Jlc291cmNlcy9iYWNrLXR3aWNlLXBhZ2UtMy5o
dG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMgQEAKKzxwPlBhZ2UgMy4KKzxwPlRoaXMgdGVz
dCBjaGVja3MgdGhhdCBnb2luZyBiYWNrIHR3aWNlIHdpdGhvdXQgY29tbWl0dGluZyBkb2Vzbid0
IGNvcnJ1cHQgdGhlIGJhY2svZm9yd2FyZCBsaXN0LgorPHA+SWYgdGVzdGluZyBtYW51YWxseSwg
aG9sZCBkb3duIHRoZSBiYWNrIGtleWJvYXJkIHNob3J0Y3V0IG9yIGNsaWNrIGJhY2sgdHdpY2Ug
cXVpY2tseS4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNvdXJj
ZXMvZm9yd2FyZC1hbmQtY2FuY2VsLWZyYW1lcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNvdXJjZXMvZm9yd2FyZC1hbmQtY2FuY2VsLWZy
YW1lcy5odG1sCShyZXZpc2lvbiA3NjI2OCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2
aWdhdGlvbi9yZXNvdXJjZXMvZm9yd2FyZC1hbmQtY2FuY2VsLWZyYW1lcy5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0xMiw0ICsxMiw0IEBAIGZ1bmN0aW9uIGNsaWNrTGluaygpIHsKIDxpZnJhbWUg
aWQ9ImZyYW1lMSIgc3JjPSJhYm91dDpibGFuayI+PC9pZnJhbWU+CiA8YnI+CiA8cD5UaGlzIHRl
c3QgY2hlY2tzIHRoYXQgdGhlIGJhY2tGb3J3YXJkIGxpc3QgaXMgbm90IGNvcnJ1cHRlZCB3aGVu
IGEgZnJhbWUgbG9hZCBpcyBjYW5jZWxlZC4KLTxwPklmIHRlc3RpbmcgbWFudWFsbHksIDxhIGlk
PSJsaW5rIiBocmVmPSJzbG93LXJlc291cmNlLTEtc2VjLnBsIiB0YXJnZXQ9ImZyYW1lMSI+Y2xp
Y2sgaGVyZTwvYT4gYW5kIHRoZW4gQmFjay4gIFRoZW4gY2xpY2sgRm9yd2FyZCBhbmQgcXVpY2ts
eSBjbGljayBTdG9wLiAgRW5zdXJlIHRoYXQgQmFjayBhbmQgRm9yd2FyZCBzdGlsbCB3b3JrLgor
PHA+SWYgdGVzdGluZyBtYW51YWxseSwgPGEgaWQ9ImxpbmsiIGhyZWY9InNsb3ctcmVzb3VyY2Uu
cGw/ZGVsYXk9MjUwIiB0YXJnZXQ9ImZyYW1lMSI+Y2xpY2sgaGVyZTwvYT4gYW5kIHRoZW4gQmFj
ay4gIFRoZW4gY2xpY2sgRm9yd2FyZCBhbmQgcXVpY2tseSBjbGljayBTdG9wLiAgRW5zdXJlIHRo
YXQgQmFjayBhbmQgRm9yd2FyZCBzdGlsbCB3b3JrLgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79742</attachid>
            <date>2011-01-21 08:32:00 -0800</date>
            <delta_ts>2011-01-21 10:26:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-48812-20110121083159.patch</filename>
            <type>text/plain</type>
            <size>17213</size>
            <attacher name="Charles Reis">creis</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc2MjY4KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTEtMDEtMjAgIENoYXJsaWUg
UmVpcyAgPGNyZWlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBGcmFtZUxvYWRlcjo6Y2hlY2tMb2FkQ29tcGxldGVGb3JUaGlz
RnJhbWUgdXNlcyB3cm9uZyBoaXN0b3J5IGl0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4ODEyCisKKyAgICAgICAgTW9zdCBjYWxscyB0byBzdG9w
QWxsTG9hZGVycyBub3cgY2xlYXIgdGhlIGhpc3RvcnkncyBwcm92aXNpb25hbCBpdGVtKHMpLgor
ICAgICAgICBXZSBjYW4gbm93IGF2b2lkIHJlc2V0dGluZyB0aGUgYmFjay9mb3J3YXJkIHN0YXRl
IGlmIGEgbmV3IG5hdmlnYXRpb24KKyAgICAgICAgaXMgaW4gcHJvZ3Jlc3MuCisKKyAgICAgICAg
VGVzdDogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2JhY2stdHdpY2Utd2l0aG91dC1jb21taXQuaHRt
bAorICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL25hdmlnYXRpb24vZm9yd2FyZC1hbmQtY2FuY2Vs
Lmh0bWwKKworICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgICogbG9h
ZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyVHlwZXMuaDoK
KyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjogVXBkYXRlIHN0b3BBbGxMb2FkZXJzIHNpZ25hdHVy
ZS4KKwogMjAxMS0wMS0yMCAgQWxleGFuZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgkocmV2aXNpb24gNzYyNjgpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5p
bgkod29ya2luZyBjb3B5KQpAQCAtMTYzLDcgKzE2Myw3IEBAIF9fWk43V2ViQ29yZTExRnJhbWVM
b2FkZXIxMXNob3VsZENsb3NlRXYKIF9fWk43V2ViQ29yZTExRnJhbWVMb2FkZXIxMXVybFNlbGVj
dGVkRVJLTlNfNEtVUkxFUktOM1dURjZTdHJpbmdFTlM0XzEwUGFzc1JlZlB0cklOU181RXZlbnRF
RUViYk5TXzE0UmVmZXJyZXJQb2xpY3lFCiBfX1pON1dlYkNvcmUxMUZyYW1lTG9hZGVyMTJzaG91
bGRSZWxvYWRFUktOU180S1VSTEVTM18KIF9fWk43V2ViQ29yZTExRnJhbWVMb2FkZXIxNGRldGFj
aENoaWxkcmVuRXYKLV9fWk43V2ViQ29yZTExRnJhbWVMb2FkZXIxNHN0b3BBbGxMb2FkZXJzRU5T
XzE0RGF0YWJhc2VQb2xpY3lFCitfX1pON1dlYkNvcmUxMUZyYW1lTG9hZGVyMTRzdG9wQWxsTG9h
ZGVyc0VOU18xNERhdGFiYXNlUG9saWN5RU5TXzI2Q2xlYXJQcm92aXNpb25hbEl0ZW1Qb2xpY3lF
CiBfX1pON1dlYkNvcmUxMUZyYW1lTG9hZGVyMTZkZXRhY2hGcm9tUGFyZW50RXYKIF9fWk43V2Vi
Q29yZTExRnJhbWVMb2FkZXIxNmxvYWRGcmFtZVJlcXVlc3RFUktOU18xNkZyYW1lTG9hZFJlcXVl
c3RFYmJOM1dURjEwUGFzc1JlZlB0cklOU181RXZlbnRFRUVOUzVfSU5TXzlGb3JtU3RhdGVFRUVO
U18xNFJlZmVycmVyUG9saWN5RQogX19aTjdXZWJDb3JlMTFGcmFtZUxvYWRlcjE3c3RvcEZvclVz
ZXJDYW5jZWxFYgpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCShyZXZp
c2lvbiA3NjI2OCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE2ODIsMTMgKzE2ODIsMTMgQEAgYm9vbCBGcmFtZUxvYWRlcjo6c2hv
dWxkQWxsb3dOYXZpZ2F0aW9uKAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBGcmFtZUxv
YWRlcjo6c3RvcExvYWRpbmdTdWJmcmFtZXMoKQordm9pZCBGcmFtZUxvYWRlcjo6c3RvcExvYWRp
bmdTdWJmcmFtZXMoRGF0YWJhc2VQb2xpY3kgZGF0YWJhc2VQb2xpY3ksIENsZWFyUHJvdmlzaW9u
YWxJdGVtUG9saWN5IGNsZWFyUHJvdmlzaW9uYWxJdGVtUG9saWN5KQogewogICAgIGZvciAoUmVm
UHRyPEZyYW1lPiBjaGlsZCA9IG1fZnJhbWUtPnRyZWUoKS0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsg
Y2hpbGQgPSBjaGlsZC0+dHJlZSgpLT5uZXh0U2libGluZygpKQotICAgICAgICBjaGlsZC0+bG9h
ZGVyKCktPnN0b3BBbGxMb2FkZXJzKCk7CisgICAgICAgIGNoaWxkLT5sb2FkZXIoKS0+c3RvcEFs
bExvYWRlcnMoZGF0YWJhc2VQb2xpY3ksIGNsZWFyUHJvdmlzaW9uYWxJdGVtUG9saWN5KTsKIH0K
IAotdm9pZCBGcmFtZUxvYWRlcjo6c3RvcEFsbExvYWRlcnMoRGF0YWJhc2VQb2xpY3kgZGF0YWJh
c2VQb2xpY3kpCit2b2lkIEZyYW1lTG9hZGVyOjpzdG9wQWxsTG9hZGVycyhEYXRhYmFzZVBvbGlj
eSBkYXRhYmFzZVBvbGljeSwgQ2xlYXJQcm92aXNpb25hbEl0ZW1Qb2xpY3kgY2xlYXJQcm92aXNp
b25hbEl0ZW1Qb2xpY3kpCiB7CiAgICAgQVNTRVJUKCFtX2ZyYW1lLT5kb2N1bWVudCgpIHx8ICFt
X2ZyYW1lLT5kb2N1bWVudCgpLT5pblBhZ2VDYWNoZSgpKTsKICAgICBpZiAobV9wYWdlRGlzbWlz
c2FsRXZlbnRCZWluZ0Rpc3BhdGNoZWQpCkBAIC0xNzAyLDcgKzE3MDIsMTIgQEAgdm9pZCBGcmFt
ZUxvYWRlcjo6c3RvcEFsbExvYWRlcnMoRGF0YWJhcwogCiAgICAgcG9saWN5Q2hlY2tlcigpLT5z
dG9wQ2hlY2soKTsKIAotICAgIHN0b3BMb2FkaW5nU3ViZnJhbWVzKCk7CisgICAgLy8gSWYgbm8g
bmV3IGxvYWQgaXMgaW4gcHJvZ3Jlc3MsIHdlIHNob3VsZCBjbGVhciB0aGUgcHJvdmlzaW9uYWwg
aXRlbSBmcm9tIGhpc3RvcnkKKyAgICAvLyBiZWZvcmUgd2UgY2FsbCBzdG9wTG9hZGluZy4KKyAg
ICBpZiAoY2xlYXJQcm92aXNpb25hbEl0ZW1Qb2xpY3kgPT0gU2hvdWxkQ2xlYXJQcm92aXNpb25h
bEl0ZW0pCisgICAgICAgIGhpc3RvcnkoKS0+c2V0UHJvdmlzaW9uYWxJdGVtKDApOworCisgICAg
c3RvcExvYWRpbmdTdWJmcmFtZXMoZGF0YWJhc2VQb2xpY3ksIGNsZWFyUHJvdmlzaW9uYWxJdGVt
UG9saWN5KTsKICAgICBpZiAobV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyKQogICAgICAgICBt
X3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXItPnN0b3BMb2FkaW5nKGRhdGFiYXNlUG9saWN5KTsK
ICAgICBpZiAobV9kb2N1bWVudExvYWRlcikKQEAgLTIzNTMsNyArMjM1OCw4IEBAIHZvaWQgRnJh
bWVMb2FkZXI6OmNoZWNrTG9hZENvbXBsZXRlRm9yVGgKICAgICAgICAgICAgICAgICAgICAgLy8g
UmVzZXQgdGhlIGJhY2sgZm9yd2FyZCBsaXN0IHRvIHRoZSBsYXN0IGNvbW1pdHRlZCBoaXN0b3J5
IGl0ZW0gYXQgdGhlIHRvcCBsZXZlbC4KICAgICAgICAgICAgICAgICAgICAgaXRlbSA9IHBhZ2Ut
Pm1haW5GcmFtZSgpLT5sb2FkZXIoKS0+aGlzdG9yeSgpLT5jdXJyZW50SXRlbSgpOwogICAgICAg
ICAgICAgICAgIAotICAgICAgICAgICAgYm9vbCBzaG91bGRSZXNldCA9IHRydWU7CisgICAgICAg
ICAgICAvLyBPbmx5IHJlc2V0IGlmIHdlIGFyZW4ndCBhbHJlYWR5IGdvaW5nIHRvIGEgbmV3IHBy
b3Zpc2lvbmFsIGl0ZW0uCisgICAgICAgICAgICBib29sIHNob3VsZFJlc2V0ID0gIWhpc3Rvcnko
KS0+cHJvdmlzaW9uYWxJdGVtKCk7CiAgICAgICAgICAgICBpZiAoIShwZGwtPmlzTG9hZGluZ0lu
QVBJU2Vuc2UoKSAmJiAhcGRsLT5pc1N0b3BwaW5nKCkpKSB7CiAgICAgICAgICAgICAgICAgbV9k
ZWxlZ2F0ZUlzSGFuZGxpbmdQcm92aXNpb25hbExvYWRFcnJvciA9IHRydWU7CiAgICAgICAgICAg
ICAgICAgbV9jbGllbnQtPmRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChlcnJvcik7CkBA
IC0yMzYyLDcgKzIzNjgsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjaGVja0xvYWRDb21wbGV0ZUZv
clRoCiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IGNhbiBzdG9wcGluZyBsb2FkaW5nIGhlcmUg
cG9zc2libHkgaGF2ZSBhbnkgZWZmZWN0LCBpZiBpc0xvYWRpbmcgaXMgZmFsc2UsCiAgICAgICAg
ICAgICAgICAgLy8gd2hpY2ggaXQgbXVzdCBiZSB0byBiZSBpbiB0aGlzIGJyYW5jaCBvZiB0aGUg
aWY/IEFuZCBpcyBpdCBPSyB0byBqdXN0IGRvIGEgZnVsbC1vbgogICAgICAgICAgICAgICAgIC8v
IHN0b3BBbGxMb2FkZXJzIGluc3RlYWQgb2Ygc3RvcExvYWRpbmdTdWJmcmFtZXM/Ci0gICAgICAg
ICAgICAgICAgc3RvcExvYWRpbmdTdWJmcmFtZXMoKTsKKyAgICAgICAgICAgICAgICBzdG9wTG9h
ZGluZ1N1YmZyYW1lcyhEYXRhYmFzZVBvbGljeVN0b3AsIFNob3VsZE5vdENsZWFyUHJvdmlzaW9u
YWxJdGVtKTsKICAgICAgICAgICAgICAgICBwZGwtPnN0b3BMb2FkaW5nKCk7CiAKICAgICAgICAg
ICAgICAgICAvLyBJZiB3ZSdyZSBpbiB0aGUgbWlkZGxlIG9mIGxvYWRpbmcgbXVsdGlwYXJ0IGRh
dGEsIHdlIG5lZWQgdG8gcmVzdG9yZSB0aGUgZG9jdW1lbnQgbG9hZGVyLgpAQCAtMjk2NCw3ICsy
OTcwLDggQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y29udGludWVMb2FkQWZ0ZXJOYXZpZwogICAgIH0K
IAogICAgIEZyYW1lTG9hZFR5cGUgdHlwZSA9IHBvbGljeUNoZWNrZXIoKS0+bG9hZFR5cGUoKTsK
LSAgICBzdG9wQWxsTG9hZGVycygpOworICAgIC8vIEEgbmV3IG5hdmlnYXRpb24gaXMgaW4gcHJv
Z3Jlc3MsIHNvIGRvbid0IGNsZWFyIHRoZSBoaXN0b3J5J3MgcHJvdmlzaW9uYWwgaXRlbS4KKyAg
ICBzdG9wQWxsTG9hZGVycyhEYXRhYmFzZVBvbGljeVN0b3AsIFNob3VsZE5vdENsZWFyUHJvdmlz
aW9uYWxJdGVtKTsKICAgICAKICAgICAvLyA8cmRhcjovL3Byb2JsZW0vNjI1MDg1Nj4gLSBJbiBj
ZXJ0YWluIGNpcmN1bXN0YW5jZXMgb24gcGFnZXMgd2l0aCBtdWx0aXBsZSBmcmFtZXMsIHN0b3BB
bGxMb2FkZXJzKCkKICAgICAvLyBtaWdodCBkZXRhY2ggdGhlIGN1cnJlbnQgRnJhbWVMb2FkZXIs
IGluIHdoaWNoIGNhc2Ugd2Ugc2hvdWxkIGJhaWwgb24gdGhpcyBuZXdseSBkZWZ1bmN0IGxvYWQu
IApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgJKHJldmlzaW9uIDc2MjY4KQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEyOCw3ICsxMjgsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBjYW5IYW5kbGVSZXF1ZXN0KGNvbnN0
IFJlc291cmNlUmVxdWVzdCYpOwogCiAgICAgLy8gQWxzbyBub3QgY29vbC4KLSAgICB2b2lkIHN0
b3BBbGxMb2FkZXJzKERhdGFiYXNlUG9saWN5ID0gRGF0YWJhc2VQb2xpY3lTdG9wKTsKKyAgICB2
b2lkIHN0b3BBbGxMb2FkZXJzKERhdGFiYXNlUG9saWN5ID0gRGF0YWJhc2VQb2xpY3lTdG9wLCBD
bGVhclByb3Zpc2lvbmFsSXRlbVBvbGljeSA9IFNob3VsZENsZWFyUHJvdmlzaW9uYWxJdGVtKTsK
ICAgICB2b2lkIHN0b3BGb3JVc2VyQ2FuY2VsKGJvb2wgZGVmZXJDaGVja0xvYWRDb21wbGV0ZSA9
IGZhbHNlKTsKIAogICAgIGJvb2wgaXNMb2FkaW5nTWFpblJlc291cmNlKCkgY29uc3QgeyByZXR1
cm4gbV9pc0xvYWRpbmdNYWluUmVzb3VyY2U7IH0KQEAgLTM1NSw3ICszNTUsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgYWRkRXh0cmFGaWVsZHNUb1JlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiwgRnJh
bWVMb2FkVHlwZSBsb2FkVHlwZSwgYm9vbCBpc01haW5SZXNvdXJjZSwgYm9vbCBjb29raWVQb2xp
Y3lVUkxGcm9tUmVxdWVzdCk7CiAKICAgICAvLyBBbHNvIG5vdCBjb29sLgotICAgIHZvaWQgc3Rv
cExvYWRpbmdTdWJmcmFtZXMoKTsKKyAgICB2b2lkIHN0b3BMb2FkaW5nU3ViZnJhbWVzKERhdGFi
YXNlUG9saWN5LCBDbGVhclByb3Zpc2lvbmFsSXRlbVBvbGljeSk7CiAKICAgICB2b2lkIGNsZWFy
UHJvdmlzaW9uYWxMb2FkKCk7CiAgICAgdm9pZCBtYXJrTG9hZENvbXBsZXRlKCk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJUeXBlcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlclR5cGVzLmgJKHJldmlzaW9uIDc2MjY4KQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyVHlwZXMuaAkod29ya2luZyBjb3B5
KQpAQCAtNzMsNiArNzMsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBEYXRhYmFz
ZVBvbGljeVN0b3AsICAgIC8vIFRoZSBkYXRhYmFzZSB0aHJlYWQgc2hvdWxkIGJlIHN0b3BwZWQg
YW5kIGRhdGFiYXNlIGNvbm5lY3Rpb25zIGNsb3NlZC4KICAgICAgICAgRGF0YWJhc2VQb2xpY3lD
b250aW51ZQogICAgIH07CisgICAgCisgICAgZW51bSBDbGVhclByb3Zpc2lvbmFsSXRlbVBvbGlj
eSB7CisgICAgICAgIFNob3VsZENsZWFyUHJvdmlzaW9uYWxJdGVtLAorICAgICAgICBTaG91bGRO
b3RDbGVhclByb3Zpc2lvbmFsSXRlbQorICAgIH07CiAKICAgICBlbnVtIE9iamVjdENvbnRlbnRU
eXBlIHsKICAgICAgICAgT2JqZWN0Q29udGVudE5vbmUsCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA3NjI2
OCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIy
IEBACisyMDExLTAxLTIwICBDaGFybGllIFJlaXMgIDxjcmVpc0BjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRnJhbWVMb2FkZXI6
OmNoZWNrTG9hZENvbXBsZXRlRm9yVGhpc0ZyYW1lIHVzZXMgd3JvbmcgaGlzdG9yeSBpdGVtCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODgxMgorCisg
ICAgICAgIFRlc3QgdGhhdCB3ZSBhdm9pZCB1cGRhdGluZyBiYWNrL2ZvcndhcmQgbGlzdCBvbiBh
IGNhbmNlbGVkIG5hdmlnYXRpb24KKyAgICAgICAgaWYgYSBuZXcgbmF2aWdhdGlvbiBpcyBhbHJl
YWR5IGluIHByb2Nlc3MuICBBbHNvIHVwZGF0ZSBmb3J3YXJkLWFuZC1jYW5jZWwKKyAgICAgICAg
dG8gZ28gZm9yd2FyZCwgZW5zdXJpbmcgYmFjay9mb3J3YXJkIHN0YXRlIGlzIHJlc2V0IGlmIHVz
ZXIgY2xpY2tzIHN0b3AuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL25hdmlnYXRpb24vYmFjay10
d2ljZS13aXRob3V0LWNvbW1pdC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAv
dGVzdHMvbmF2aWdhdGlvbi9iYWNrLXR3aWNlLXdpdGhvdXQtY29tbWl0Lmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9mb3J3YXJkLWFuZC1jYW5jZWwtZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9mb3J3YXJkLWFuZC1jYW5j
ZWwuaHRtbDogR28gZm9yd2FyZCBhZnRlciBzdG9wLCBub3QgYmFjay4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL25hdmlnYXRpb24vcmVzb3VyY2VzL2JhY2stdHdpY2UtcGFnZS0yLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNvdXJjZXMvYmFjay10d2ljZS1w
YWdlLTMuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Jlc291
cmNlcy9mb3J3YXJkLWFuZC1jYW5jZWwtZnJhbWVzLmh0bWw6IFJlZHVjZWQgZGVsYXkuCisKIDIw
MTEtMDEtMjAgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQsIHJlbW92ZSBHVEsgcmVzdWx0IGZvciB3aW5kb3ctb25lcnJvcjIgYXMg
aXQncyB0aGUgc2FtZQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2Jh
Y2stdHdpY2Utd2l0aG91dC1jb21taXQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9iYWNrLXR3aWNlLXdpdGhvdXQtY29tbWl0LWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdh
dGlvbi9iYWNrLXR3aWNlLXdpdGhvdXQtY29tbWl0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw5IEBACitUaGlzIHRlc3QgY2hlY2tzIHRoYXQgZ29pbmcgYmFjayB0d2ljZSB3
aXRob3V0IGNvbW1pdHRpbmcgZG9lc24ndCBjb3JydXB0IHRoZSBiYWNrL2ZvcndhcmQgbGlzdC4K
KworSWYgdGVzdGluZyBtYW51YWxseSwgY2xpY2sgaGVyZS4KKworPT09PT09PT09PT09PT0gQmFj
ayBGb3J3YXJkIExpc3QgPT09PT09PT09PT09PT0KK2N1cnItPiAgaHR0cDovLzEyNy4wLjAuMTo4
MDAwL25hdmlnYXRpb24vYmFjay10d2ljZS13aXRob3V0LWNvbW1pdC5odG1sICAqKm5hdiB0YXJn
ZXQqKgorICAgICAgICBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbmF2aWdhdGlvbi9yZXNvdXJjZXMv
YmFjay10d2ljZS1wYWdlLTIuaHRtbCAgKipuYXYgdGFyZ2V0KioKKyAgICAgICAgaHR0cDovLzEy
Ny4wLjAuMTo4MDAwL25hdmlnYXRpb24vcmVzb3VyY2VzL2JhY2stdHdpY2UtcGFnZS0zLmh0bWwg
ICoqbmF2IHRhcmdldCoqCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2JhY2stdHdp
Y2Utd2l0aG91dC1jb21taXQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL25hdmlnYXRpb24vYmFjay10d2ljZS13aXRob3V0LWNvbW1pdC5odG1sCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2JhY2stdHdpY2Utd2l0aG91
dC1jb21taXQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMyBAQAorPHNjcmlwdD4KK2lm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBpZiAoIXdpbmRvdy5sb2NhbFN0
b3JhZ2UucGFnZTFTdGFydGVkKSB7CisgICAgICAgIC8vIE9uIHRoZSBmaXJzdCB2aXNpdCwgY2xl
YXIgdGhlIGJhY2sgZm9yd2FyZCBsaXN0IHRvIHN0YXJ0IGZyZXNoLAorICAgICAgICAvLyB0aGVu
IHNldCB1cCB0aGUgdGVzdC4KKyAgICAgICAgd2luZG93LmxvY2FsU3RvcmFnZS5wYWdlMVN0YXJ0
ZWQgPSB0cnVlOworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5jbGVhckJhY2tGb3J3YXJk
TGlzdCgpOworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQmFja0ZvcndhcmRMaXN0
KCk7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgICAg
ICAvLyBWaXNpdCB0d28gcGFnZXMsIHRoZW4gZ28gYmFjayB0byBwYWdlIDIsIHdoaWNoIGhhcyBh
IHNsb3cgZnJhbWUgdGhlIAorICAgICAgICAvLyBzZWNvbmQgdGltZSwgYW5kIHRoZW4gYmFjayB0
byBwYWdlIDEgYmVmb3JlIHBhZ2UgMiBjb21taXRzLgorICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5xdWV1ZUxvYWQoInJlc291cmNlcy9iYWNrLXR3aWNlLXBhZ2UtMi5odG1sIik7CisgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLnF1ZXVlTG9hZCgicmVzb3VyY2VzL2JhY2stdHdpY2Ut
cGFnZS0zLmh0bWwiKTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIucXVldWVCYWNrTmF2
aWdhdGlvbigxKTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIucXVldWVCYWNrTmF2aWdh
dGlvbigxKTsKKyAgICB9IGVsc2UgeworICAgICAgICBkZWxldGUgd2luZG93LmxvY2FsU3RvcmFn
ZS5wYWdlMVN0YXJ0ZWQ7CisgICAgfQorfQorPC9zY3JpcHQ+Cis8cD5UaGlzIHRlc3QgY2hlY2tz
IHRoYXQgZ29pbmcgYmFjayB0d2ljZSB3aXRob3V0IGNvbW1pdHRpbmcgZG9lc24ndCBjb3JydXB0
IHRoZSBiYWNrL2ZvcndhcmQgbGlzdC4KKzxwPklmIHRlc3RpbmcgbWFudWFsbHksIDxhIGhyZWY9
InJlc291cmNlcy9iYWNrLXR3aWNlLXBhZ2UtMi5odG1sIj5jbGljayBoZXJlPC9hPi4KSW5kZXg6
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9mb3J3YXJkLWFuZC1jYW5jZWwtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlv
bi9mb3J3YXJkLWFuZC1jYW5jZWwtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA3NjI2OCkKKysrIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9mb3J3YXJkLWFuZC1jYW5jZWwtZXhwZWN0
ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDE1ICsxLDEzIEBACi1UaGlzIHRlc3QgY2hlY2tz
IHRoYXQgdGhlIGJhY2tGb3J3YXJkIGxpc3QgaXMgbm90IGNvcnJ1cHRlZCB3aGVuIGEgZnJhbWUg
bG9hZCBpcyBjYW5jZWxlZC4KLQotSWYgdGVzdGluZyBtYW51YWxseSwgY2xpY2sgaGVyZS4KKyAK
IAogPT09PT09PT09PT09PT0gQmFjayBGb3J3YXJkIExpc3QgPT09PT09PT09PT09PT0KLWN1cnIt
PiAgaHR0cDovLzEyNy4wLjAuMTo4MDAwL25hdmlnYXRpb24vZm9yd2FyZC1hbmQtY2FuY2VsLmh0
bWwgICoqbmF2IHRhcmdldCoqCisgICAgICAgIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9uYXZpZ2F0
aW9uL2ZvcndhcmQtYW5kLWNhbmNlbC5odG1sICAqKm5hdiB0YXJnZXQqKgogICAgICAgICBodHRw
Oi8vMTI3LjAuMC4xOjgwMDAvbmF2aWdhdGlvbi9yZXNvdXJjZXMvZm9yd2FyZC1hbmQtY2FuY2Vs
LWZyYW1lcy1jb250YWluZXIuaHRtbCAgKipuYXYgdGFyZ2V0KioKICAgICAgICAgICAgIGh0dHA6
Ly8xMjcuMC4wLjE6ODAwMC9uYXZpZ2F0aW9uL3Jlc291cmNlcy9mb3J3YXJkLWFuZC1jYW5jZWwt
ZnJhbWVzLmh0bWwgKGluIGZyYW1lICI8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0tPiIp
CiAgICAgICAgICAgICAgICAgYWJvdXQ6YmxhbmsgKGluIGZyYW1lICJmcmFtZTEiKQogICAgICAg
ICAgICAgaHR0cDovLzEyNy4wLjAuMTo4MDAwL25hdmlnYXRpb24vcmVzb3VyY2VzL290aGVycGFn
ZS5odG1sIChpbiBmcmFtZSAiPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTEtLT4tLT4iKQotICAg
ICAgICBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbmF2aWdhdGlvbi9yZXNvdXJjZXMvZm9yd2FyZC1h
bmQtY2FuY2VsLWZyYW1lcy1jb250YWluZXIuaHRtbAorY3Vyci0+ICBodHRwOi8vMTI3LjAuMC4x
OjgwMDAvbmF2aWdhdGlvbi9yZXNvdXJjZXMvZm9yd2FyZC1hbmQtY2FuY2VsLWZyYW1lcy1jb250
YWluZXIuaHRtbAogICAgICAgICAgICAgaHR0cDovLzEyNy4wLjAuMTo4MDAwL25hdmlnYXRpb24v
cmVzb3VyY2VzL2ZvcndhcmQtYW5kLWNhbmNlbC1mcmFtZXMuaHRtbCAoaW4gZnJhbWUgIjwhLS1m
cmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+IikKLSAgICAgICAgICAgICAgICBodHRwOi8vMTI3
LjAuMC4xOjgwMDAvbmF2aWdhdGlvbi9yZXNvdXJjZXMvc2xvdy1yZXNvdXJjZS0xLXNlYy5wbCAo
aW4gZnJhbWUgImZyYW1lMSIpICAqKm5hdiB0YXJnZXQqKgorICAgICAgICAgICAgICAgIGh0dHA6
Ly8xMjcuMC4wLjE6ODAwMC9uYXZpZ2F0aW9uL3Jlc291cmNlcy9zbG93LXJlc291cmNlLnBsP2Rl
bGF5PTI1MCAoaW4gZnJhbWUgImZyYW1lMSIpICAqKm5hdiB0YXJnZXQqKgogICAgICAgICAgICAg
aHR0cDovLzEyNy4wLjAuMTo4MDAwL25hdmlnYXRpb24vcmVzb3VyY2VzL290aGVycGFnZS5odG1s
IChpbiBmcmFtZSAiPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTEtLT4tLT4iKQogPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSW5kZXg6IExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9mb3J3YXJkLWFuZC1jYW5jZWwuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vZm9yd2FyZC1hbmQtY2FuY2Vs
Lmh0bWwJKHJldmlzaW9uIDc2MjY4KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0
aW9uL2ZvcndhcmQtYW5kLWNhbmNlbC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC03LDkgKzcsMTAg
QEAKIC8vICAgIEltcG9ydGFudCB0byB1c2UgYWJvdXQ6YmxhbmssIHdoaWNoIGNhbiBjb21taXQg
aW1tZWRpYXRlbHkgd2hpbGUgd2Fsa2luZyB0aGUgdHJlZS4KIC8vIDUuIEdvIGZvcndhcmQgdG8g
c2xvdyBVUkwsIGJ1dCBzdG9wIGJlZm9yZSB0aGUgbmF2aWdhdGlvbiBjb21taXRzLgogLy8gICAg
SW1wb3J0YW50IHRvIGNhbmNlbCB0aGUgbG9hZCBhbmQgZW5zdXJlIHRoZSBoaXN0b3J5IGlzIG5v
dCBjb3JydXB0ZWQuCi0vLyA2LiBHbyBiYWNrIHRvIHN0YXJ0IHBhZ2Ugd2l0aCBubyBmcmFtZXMu
Ci0vLyAgICBJbXBvcnRhbnQgZm9yIHRlc3RpbmcgdGhhdCBzdWJmcmFtZXMgY2FuIGJlIHJlbW92
ZWQuCisvLyA2LiBHbyBmb3J3YXJkIGFuZCBsZXQgc2xvdyBVUkwgbG9hZC4KKy8vICAgIEltcG9y
dGFudCBmb3IgdGVzdGluZyB0aGF0IG5hdmlnYXRpb24gc3RhdGUgaXMgcmVzZXQgYWZ0ZXIgc3Rv
cHBpbmcuCiBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuY2xlYXJCYWNrRm9yd2FyZExpc3QoKTsKICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQmFja0ZvcndhcmRMaXN0KCk7CiAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOwogICAgIGxheW91dFRlc3RDb250cm9sbGVyLnF1ZXVlTG9hZCgicmVzb3VyY2Vz
L2ZvcndhcmQtYW5kLWNhbmNlbC1mcmFtZXMtY29udGFpbmVyLmh0bWwiKTsKQEAgLTIxLDcgKzIy
LDggQEAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewogICAgIGxheW91dFRlc3RD
b250cm9sbGVyLnF1ZXVlTm9uTG9hZGluZ1NjcmlwdCgic2V0VGltZW91dCgnaGlzdG9yeS5mb3J3
YXJkKCk7JywwKTsgc2V0VGltZW91dCgnd2luZG93LnN0b3AoKTsnLDEwKTsiKTsKIAogICAgIC8v
IE5vdyBnbyBiYWNrIHRvIG1ha2Ugc3VyZSB0aGUgYmFja0ZvcndhcmRMaXN0IGlzIG5vdCBjb3Jy
dXB0ZWQuCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIucXVldWVOb25Mb2FkaW5nU2NyaXB0KCJz
ZXRUaW1lb3V0KCdoaXN0b3J5LmJhY2soKTsnLDUwKTsiKTsKKyAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5xdWV1ZU5vbkxvYWRpbmdTY3JpcHQoInNldFRpbWVvdXQoJ2hpc3RvcnkuZm9yd2FyZCgp
OycsNTApOyIpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLnF1ZXVlTm9uTG9hZGluZ1Njcmlw
dCgic2V0VGltZW91dCgnbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOycsMTAwKTsi
KTsKIAogICAgIC8vIFdhaXQgdW50aWwgd2UgZ2V0IGJhY2sgdG8gdGhpcyBwYWdlLgogICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLnF1ZXVlTG9hZGluZ1NjcmlwdCgibGF5b3V0VGVzdENvbnRyb2xs
ZXIud2FpdFVudGlsRG9uZSgpOyIpOwpAQCAtMjksMTUgKzMxLDMgQEAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikgewogPC9zY3JpcHQ+CiA8cD5UaGlzIHRlc3QgY2hlY2tzIHRoYXQg
dGhlIGJhY2tGb3J3YXJkIGxpc3QgaXMgbm90IGNvcnJ1cHRlZCB3aGVuIGEgZnJhbWUgbG9hZCBp
cyBjYW5jZWxlZC4KIDxwPklmIHRlc3RpbmcgbWFudWFsbHksIDxhIGhyZWY9InJlc291cmNlcy9m
b3J3YXJkLWFuZC1jYW5jZWwtZnJhbWVzLWNvbnRhaW5lci5odG1sIj5jbGljayBoZXJlPC9hPi4K
LQotPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAvLyBP
bmx5IG5vdGlmeSBkb25lIHdoZW4gd2UgcmV0dXJuIHRvIHRoaXMgcGFnZSBhIHNlY29uZCB0aW1l
LgotICAgIGlmICghd2luZG93LmxvY2FsU3RvcmFnZS5zdGFydGVkKSB7Ci0gICAgICAgIHdpbmRv
dy5sb2NhbFN0b3JhZ2Uuc3RhcnRlZCA9IHRydWU7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgZGVs
ZXRlIHdpbmRvdy5sb2NhbFN0b3JhZ2Uuc3RhcnRlZDsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIubm90aWZ5RG9uZSgpOwotICAgIH0KLX0KLTwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Jlc291cmNlcy9iYWNrLXR3aWNlLXBhZ2UtMi5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNvdXJj
ZXMvYmFjay10d2ljZS1wYWdlLTIuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNvdXJjZXMvYmFjay10d2ljZS1wYWdlLTIuaHRtbAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwyMSBAQAorPHA+UGFnZSAyLgorPHA+VGhpcyB0ZXN0IGNoZWNr
cyB0aGF0IGdvaW5nIGJhY2sgdHdpY2Ugd2l0aG91dCBjb21taXR0aW5nIGRvZXNuJ3QgY29ycnVw
dCB0aGUgYmFjay9mb3J3YXJkIGxpc3QuCis8cD5JZiB0ZXN0aW5nIG1hbnVhbGx5LCA8YSBocmVm
PSJiYWNrLXR3aWNlLXBhZ2UtMy5odG1sIj5jbGljayBoZXJlPC9hPi4KKworPHNjcmlwdD4KK2lm
ICghd2luZG93LmxvY2FsU3RvcmFnZS5wYWdlMlN0YXJ0ZWQpIHsKKyAgICB3aW5kb3cubG9jYWxT
dG9yYWdlLnBhZ2UyU3RhcnRlZCA9IHRydWU7Cit9IGVsc2UgeworICAgIGRlbGV0ZSB3aW5kb3cu
bG9jYWxTdG9yYWdlLnBhZ2UyU3RhcnRlZDsKKworICAgIC8vIFRoZSBzZWNvbmQgdGltZSB3ZSB2
aXNpdCB0aGUgcGFnZSAoaS5lLiwgd2hpbGUgZ29pbmcgYmFjayksIGluc2VydCBhbgorICAgIC8v
IGlmcmFtZSB0aGF0IGRvZXNuJ3QgY29tbWl0IGR1cmluZyB0aGUgdGVzdC4KKyAgICB2YXIgZiA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOworICAgIGYuc3JjID0gIi4uLy4uL2hp
c3RvcnkvcmVzb3VyY2VzL2JhY2stZHVyaW5nLW9ubG9hZC1odW5nLXBhZ2UucGhwIjsKKyAgICBk
b2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGYpOworCisgICAgLy8gTm93IGdvIGJhY2suICBUaGlz
IHdpbGwgY29tcGV0ZSB3aXRoIHRoZSBzZWNvbmQgcXVldWVCYWNrTmF2aWdhdGlvbgorICAgIC8v
IGZyb20gYmFjay10d2ljZS13aXRob3V0LWNvbW1pdC5odG1sLgorICAgIGhpc3RvcnkuYmFjaygp
OworfQorPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24v
cmVzb3VyY2VzL2JhY2stdHdpY2UtcGFnZS0zLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Jlc291cmNlcy9iYWNrLXR3aWNlLXBhZ2UtMy5odG1s
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Jlc291
cmNlcy9iYWNrLXR3aWNlLXBhZ2UtMy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMgQEAK
KzxwPlBhZ2UgMy4KKzxwPlRoaXMgdGVzdCBjaGVja3MgdGhhdCBnb2luZyBiYWNrIHR3aWNlIHdp
dGhvdXQgY29tbWl0dGluZyBkb2Vzbid0IGNvcnJ1cHQgdGhlIGJhY2svZm9yd2FyZCBsaXN0Lgor
PHA+SWYgdGVzdGluZyBtYW51YWxseSwgaG9sZCBkb3duIHRoZSBiYWNrIGtleWJvYXJkIHNob3J0
Y3V0IG9yIGNsaWNrIGJhY2sgdHdpY2UgcXVpY2tseS4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAv
dGVzdHMvbmF2aWdhdGlvbi9yZXNvdXJjZXMvZm9yd2FyZC1hbmQtY2FuY2VsLWZyYW1lcy5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNvdXJj
ZXMvZm9yd2FyZC1hbmQtY2FuY2VsLWZyYW1lcy5odG1sCShyZXZpc2lvbiA3NjI2OCkKKysrIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNvdXJjZXMvZm9yd2FyZC1hbmQtY2Fu
Y2VsLWZyYW1lcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMiw0ICsxMiw0IEBAIGZ1bmN0aW9u
IGNsaWNrTGluaygpIHsKIDxpZnJhbWUgaWQ9ImZyYW1lMSIgc3JjPSJhYm91dDpibGFuayI+PC9p
ZnJhbWU+CiA8YnI+CiA8cD5UaGlzIHRlc3QgY2hlY2tzIHRoYXQgdGhlIGJhY2tGb3J3YXJkIGxp
c3QgaXMgbm90IGNvcnJ1cHRlZCB3aGVuIGEgZnJhbWUgbG9hZCBpcyBjYW5jZWxlZC4KLTxwPklm
IHRlc3RpbmcgbWFudWFsbHksIDxhIGlkPSJsaW5rIiBocmVmPSJzbG93LXJlc291cmNlLTEtc2Vj
LnBsIiB0YXJnZXQ9ImZyYW1lMSI+Y2xpY2sgaGVyZTwvYT4gYW5kIHRoZW4gQmFjay4gIFRoZW4g
Y2xpY2sgRm9yd2FyZCBhbmQgcXVpY2tseSBjbGljayBTdG9wLiAgRW5zdXJlIHRoYXQgQmFjayBh
bmQgRm9yd2FyZCBzdGlsbCB3b3JrLgorPHA+SWYgdGVzdGluZyBtYW51YWxseSwgPGEgaWQ9Imxp
bmsiIGhyZWY9InNsb3ctcmVzb3VyY2UucGw/ZGVsYXk9MjUwIiB0YXJnZXQ9ImZyYW1lMSI+Y2xp
Y2sgaGVyZTwvYT4gYW5kIHRoZW4gQmFjay4gIFRoZW4gY2xpY2sgRm9yd2FyZCBhbmQgcXVpY2ts
eSBjbGljayBTdG9wLiAgRW5zdXJlIHRoYXQgQmFjayBhbmQgRm9yd2FyZCBzdGlsbCB3b3JrLgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>