<?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>38323</bug_id>
          
          <creation_ts>2010-04-29 06:20:14 -0700</creation_ts>
          <short_desc>Prevents setLastPosition() before startUpdating() being called.</short_desc>
          <delta_ts>2010-05-12 01:31:49 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Marcus Bulach">bulach</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bulach</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jorlow</cc>
    
    <cc>joth</cc>
    
    <cc>steveblock</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>218987</commentid>
    <comment_count>0</comment_count>
    <who name="Marcus Bulach">bulach</who>
    <bug_when>2010-04-29 06:20:14 -0700</bug_when>
    <thetext>Prevents setLastPosition() before startUpdating() being called.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>218992</commentid>
    <comment_count>1</comment_count>
      <attachid>54693</attachid>
    <who name="Marcus Bulach">bulach</who>
    <bug_when>2010-04-29 06:29:56 -0700</bug_when>
    <thetext>Created attachment 54693
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219470</commentid>
    <comment_count>2</comment_count>
      <attachid>54693</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-04-30 06:39:58 -0700</bug_when>
    <thetext>Comment on attachment 54693
Patch

&gt; diff --git a/WebKit/chromium/src/WebGeolocationServiceBridgeImpl.cpp b/WebKit/chromium/src/WebGeolocationServiceBridgeImpl.cpp
&gt; index 07f09da30cd97975622fe13fbd867496a51a9e88..9d755a15d4f7892b81a4e78638e9dbae25c181b4 100644
&gt; --- a/WebKit/chromium/src/WebGeolocationServiceBridgeImpl.cpp
&gt; +++ b/WebKit/chromium/src/WebGeolocationServiceBridgeImpl.cpp
&gt; @@ -85,6 +85,7 @@ private:
&gt;      // GeolocationServiceChromium owns us, we only have a pointer back to it.
&gt;      GeolocationServiceChromium* m_GeolocationServiceChromium;
&gt;      int m_bridgeId;
&gt; +    bool m_startUpdatingRequested;
&gt;  };
&gt;  
&gt;  GeolocationServiceBridge* createGeolocationServiceBridgeImpl(GeolocationServiceChromium* geolocationServiceChromium)
&gt; @@ -93,7 +94,8 @@ GeolocationServiceBridge* createGeolocationServiceBridgeImpl(GeolocationServiceC
&gt;  }
&gt;  
&gt;  WebGeolocationServiceBridgeImpl::WebGeolocationServiceBridgeImpl(GeolocationServiceChromium* geolocationServiceChromium)
&gt; -    : m_GeolocationServiceChromium(geolocationServiceChromium)
&gt; +    : m_GeolocationServiceChromium(geolocationServiceChromium),

comma on next line</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219474</commentid>
    <comment_count>3</comment_count>
      <attachid>54801</attachid>
    <who name="Marcus Bulach">bulach</who>
    <bug_when>2010-04-30 07:15:43 -0700</bug_when>
    <thetext>Created attachment 54801
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219475</commentid>
    <comment_count>4</comment_count>
    <who name="Marcus Bulach">bulach</who>
    <bug_when>2010-04-30 07:16:47 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 54693 [details])
&gt; &gt; diff --git a/WebKit/chromium/src/WebGeolocationServiceBridgeImpl.cpp b/WebKit/chromium/src/WebGeolocationServiceBridgeImpl.cpp
&gt; &gt; index 07f09da30cd97975622fe13fbd867496a51a9e88..9d755a15d4f7892b81a4e78638e9dbae25c181b4 100644
&gt; &gt; --- a/WebKit/chromium/src/WebGeolocationServiceBridgeImpl.cpp
&gt; &gt; +++ b/WebKit/chromium/src/WebGeolocationServiceBridgeImpl.cpp
&gt; &gt; @@ -85,6 +85,7 @@ private:
&gt; &gt;      // GeolocationServiceChromium owns us, we only have a pointer back to it.
&gt; &gt;      GeolocationServiceChromium* m_GeolocationServiceChromium;
&gt; &gt;      int m_bridgeId;
&gt; &gt; +    bool m_startUpdatingRequested;
&gt; &gt;  };
&gt; &gt;  
&gt; &gt;  GeolocationServiceBridge* createGeolocationServiceBridgeImpl(GeolocationServiceChromium* geolocationServiceChromium)
&gt; &gt; @@ -93,7 +94,8 @@ GeolocationServiceBridge* createGeolocationServiceBridgeImpl(GeolocationServiceC
&gt; &gt;  }
&gt; &gt;  
&gt; &gt;  WebGeolocationServiceBridgeImpl::WebGeolocationServiceBridgeImpl(GeolocationServiceChromium* geolocationServiceChromium)
&gt; &gt; -    : m_GeolocationServiceChromium(geolocationServiceChromium)
&gt; &gt; +    : m_GeolocationServiceChromium(geolocationServiceChromium),
&gt; 
&gt; comma on next line

done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219476</commentid>
    <comment_count>5</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-04-30 07:17:14 -0700</bug_when>
    <thetext>Steve, please do the review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219506</commentid>
    <comment_count>6</comment_count>
      <attachid>54801</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-04-30 09:34:24 -0700</bug_when>
    <thetext>Comment on attachment 54801
Patch

&gt; +        This prevents a page requesting permission when it has just accessed navigator.geolocation (without calling navigator.geolocation.getGeolocationPosition).
Did you mean navigator.geolocation.getCurrentPosition/watchPosition?

&gt; +    m_startUpdatingRequested = true;
Don&apos;t you also need to set this to false in stopUpdating() to prevent superfluous permission requests after all location requests have stopped?

If a call to navigator.getCurrentPosition/watchPosition is successful, then permission must have been granted by the time stopUpdating() is called, so there&apos;s no problem. However, if the service returns an error, or JavaScript cancels the location request before the service returns anything, then there will be no location requests in progress and no permission request will have been made. With the current patch, m_startUpdatingRequested will still be true so subsequent calls to setLastPosition() due to activity in other frames will wrongly trigger a permission request.

Or does the browser process already have logic to prevent this?

Maybe it&apos;s better to modify the browser process to only broadcast location information to bridges that have called startUpdating() but not stopUpdating(), as you suggest in the Chromium bug?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>220541</commentid>
    <comment_count>7</comment_count>
    <who name="Marcus Bulach">bulach</who>
    <bug_when>2010-05-04 03:31:09 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 54801 [details])
&gt; &gt; +        This prevents a page requesting permission when it has just accessed navigator.geolocation (without calling navigator.geolocation.getGeolocationPosition).
&gt; Did you mean navigator.geolocation.getCurrentPosition/watchPosition?

duh! :) fixed.

&gt; 
&gt; &gt; +    m_startUpdatingRequested = true;
&gt; Don&apos;t you also need to set this to false in stopUpdating() to prevent
&gt; superfluous permission requests after all location requests have stopped?
&gt; 
&gt; If a call to navigator.getCurrentPosition/watchPosition is successful, then
&gt; permission must have been granted by the time stopUpdating() is called, so
&gt; there&apos;s no problem. However, if the service returns an error, or JavaScript
&gt; cancels the location request before the service returns anything, then there
&gt; will be no location requests in progress and no permission request will have
&gt; been made. With the current patch, m_startUpdatingRequested will still be true
&gt; so subsequent calls to setLastPosition() due to activity in other frames will
&gt; wrongly trigger a permission request.
&gt; 
&gt; Or does the browser process already have logic to prevent this?
&gt; 
&gt; Maybe it&apos;s better to modify the browser process to only broadcast location
&gt; information to bridges that have called startUpdating() but not stopUpdating(),
&gt; as you suggest in the Chromium bug?

that&apos;s a *very* good point, thanks for raising it! I didn&apos;t realize startUpdating / stopUpdating weren&apos;t balanced, so the current implementation has a bug as it dettaches the bridge unconditionally on &quot;stopUpdating&quot;...
I think I can solve both bugs here rather than in the browser side, let me try a different change and will update soon.

thanks again for raising this!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>220594</commentid>
    <comment_count>8</comment_count>
      <attachid>55018</attachid>
    <who name="Marcus Bulach">bulach</who>
    <bug_when>2010-05-04 08:11:27 -0700</bug_when>
    <thetext>Created attachment 55018
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>220596</commentid>
    <comment_count>9</comment_count>
    <who name="Marcus Bulach">bulach</who>
    <bug_when>2010-05-04 08:19:11 -0700</bug_when>
    <thetext>Hi Steve,

thanks again for your review! comments inline:

(In reply to comment #6)
&gt; (From update of attachment 54801 [details])
&gt; &gt; +        This prevents a page requesting permission when it has just accessed navigator.geolocation (without calling navigator.geolocation.getGeolocationPosition).
&gt; Did you mean navigator.geolocation.getCurrentPosition/watchPosition?
&gt; 
&gt; &gt; +    m_startUpdatingRequested = true;
&gt; Don&apos;t you also need to set this to false in stopUpdating() to prevent
&gt; superfluous permission requests after all location requests have stopped?

thanks for pointing this out: there was actually another issue with stopUpdating detaching the bridge.
fixed now by using a counter around start / stop updating.

&gt; If a call to navigator.getCurrentPosition/watchPosition is successful, then
&gt; permission must have been granted by the time stopUpdating() is called, so
&gt; there&apos;s no problem. However, if the service returns an error, or JavaScript
&gt; cancels the location request before the service returns anything, then there
&gt; will be no location requests in progress and no permission request will have
&gt; been made. With the current patch, m_startUpdatingRequested will still be true
&gt; so subsequent calls to setLastPosition() due to activity in other frames will
&gt; wrongly trigger a permission request.

yep, I guess the new patch addresses the javascript cancelling the request.
as for the service throwing error condition: if i understood the flow correctly it will eventually call stopUpdating, right? so the counter will be balanced?

&gt; 
&gt; Or does the browser process already have logic to prevent this?

nope, the browser doesn&apos;t know about this.
speaking of which, I added a browser test on the other side:
http://codereview.chromium.org/1950001/show

it fails without this patch, and obviously passes with.. :)

&gt; 
&gt; Maybe it&apos;s better to modify the browser process to only broadcast location
&gt; information to bridges that have called startUpdating() but not stopUpdating(),
&gt; as you suggest in the Chromium bug?

I think adding this logic up in the browser process would further complicate things. the issue was that the bridge was being attached too early, so I hope this patch now fixes it (by attaching it later), and also the other issue you raised about start / stop. 
from the browser point of view, a bridge now is only attached when it has a pending request.

would you please take another look?

thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223260</commentid>
    <comment_count>10</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-05-10 05:06:23 -0700</bug_when>
    <thetext>&gt; that&apos;s a *very* good point, thanks for raising it! I didn&apos;t realize startUpdating / stopUpdating weren&apos;t balanced,
&gt; so the current implementation has a bug as it dettaches the bridge unconditionally on &quot;stopUpdating&quot;...
I don&apos;t think that&apos;s a bug. Calls to startUpdating() and stopUpdating() from the Geolocation object are intentionally unbalanced. startUpdating() is called each time a new request (getCurrentPosition or watchPosition) is started. lastPosition() is only called when the last request is complete. See Geolocation::hasListeners().

FWIW, this is something I&apos;d like to change. Currently, the fact that stopUpdating() is called only once means that if a request is made with enableHighAccuracy=true, the GeolocationService will always use enableHighAccuracy=true for all future requests within the lifetime of the Geolocation object.

&gt; as for the service throwing error condition: if i understood the flow correctly it will eventually call stopUpdating, right?
Yes, that&apos;s right. If the call to startUpdating() fails, the notifier will call back to Geolocation::fatalErrorOccurred() which will call stopUpdating() if there are no longer any requests in progress.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223372</commentid>
    <comment_count>11</comment_count>
      <attachid>55564</attachid>
    <who name="Marcus Bulach">bulach</who>
    <bug_when>2010-05-10 10:05:16 -0700</bug_when>
    <thetext>Created attachment 55564
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223378</commentid>
    <comment_count>12</comment_count>
    <who name="Marcus Bulach">bulach</who>
    <bug_when>2010-05-10 10:13:45 -0700</bug_when>
    <thetext>thanks Steve! comments inline, another look please?

(In reply to comment #10)
&gt; &gt; that&apos;s a *very* good point, thanks for raising it! I didn&apos;t realize startUpdating / stopUpdating weren&apos;t balanced,
&gt; &gt; so the current implementation has a bug as it dettaches the bridge unconditionally on &quot;stopUpdating&quot;...
&gt; I don&apos;t think that&apos;s a bug. Calls to startUpdating() and stopUpdating() from the Geolocation object are intentionally unbalanced. startUpdating() is called each time a new request (getCurrentPosition or watchPosition) is started. lastPosition() is only called when the last request is complete. See Geolocation::hasListeners().

I think I finally understood the flow, thanks for the clarification!
It turns out it&apos;s simpler than the original patches I proposed.
The original problem was that the bridge was being attached on the ctor, rather than on startUpdating, because requestPermission could be called without a corresponding startUpdating.

I added a new method &quot;attachBridgeIfNeeded()&quot;, which seems to make things simpler and removed the flag / refcounting / guards around start/stop updating.

please, let me know if this makes sense.

&gt; FWIW, this is something I&apos;d like to change. Currently, the fact that stopUpdating() is called only once means that if a request is made with enableHighAccuracy=true, the GeolocationService will always use enableHighAccuracy=true for all future requests within the lifetime of the Geolocation object.
&gt; 
&gt; &gt; as for the service throwing error condition: if i understood the flow correctly it will eventually call stopUpdating, right?
&gt; Yes, that&apos;s right. If the call to startUpdating() fails, the notifier will call back to Geolocation::fatalErrorOccurred() which will call stopUpdating() if there are no longer any requests in progress.

ok, thanks! with the latest patch, stopUpdating remains unchanged.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>224473</commentid>
    <comment_count>13</comment_count>
      <attachid>55564</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-05-12 01:31:42 -0700</bug_when>
    <thetext>Comment on attachment 55564
Patch

Clearing flags on attachment: 55564

Committed r59215: &lt;http://trac.webkit.org/changeset/59215&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>224475</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-05-12 01:31:49 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54693</attachid>
            <date>2010-04-29 06:29:56 -0700</date>
            <delta_ts>2010-04-30 07:15:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-38323-20100429142954.patch</filename>
            <type>text/plain</type>
            <size>3529</size>
            <attacher name="Marcus Bulach">bulach</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IDM2NTBhYzg0M2Q4M2Q5M2RkMTdkMDk5OWJhZjkwODMzOWI3NzA5MTku
LjEzOGQ3NDhiYWRjMjFlYzA1NjBmN2NmY2E2NzAyNzdmNWRlNjQ3N2YgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE3IEBACisyMDEwLTA0LTI5ICBNYXJjdXMgQnVsYWNoICA8YnVsYWNoQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBQcmV2ZW50cyBzZXRMYXN0UG9zaXRpb24oKSBiZWZvcmUgc3RhcnRVcGRhdGluZygpIGJlaW5n
IGNhbGxlZC4KKyAgICAgICAgVGhpcyBwcmV2ZW50cyBhIHBhZ2UgcmVxdWVzdGluZyBwZXJtaXNz
aW9uIHdoZW4gaXQgaGFzIGp1c3QgYWNjZXNzZWQgbmF2aWdhdG9yLmdlb2xvY2F0aW9uICh3aXRo
b3V0IGNhbGxpbmcgbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEdlb2xvY2F0aW9uUG9zaXRpb24p
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzgzMjMK
KyAgICAgICAgaHR0cDovL2NyYnVnLmNvbS80Mjc4OQorCisgICAgICAgICogc3JjL1dlYkdlb2xv
Y2F0aW9uU2VydmljZUJyaWRnZUltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2Nh
dGlvblNlcnZpY2VCcmlkZ2VJbXBsOjpXZWJHZW9sb2NhdGlvblNlcnZpY2VCcmlkZ2VJbXBsKToK
KyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlSW1wbDo6c3RhcnRV
cGRhdGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uU2VydmljZUJyaWRnZUlt
cGw6OnNldExhc3RQb3NpdGlvbik6CisKIDIwMTAtMDQtMjkgIFJhZmFlbCBXZWluc3RlaW4gIDxy
YWZhZWx3QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBGaXNoZXIu
CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkdlb2xvY2F0aW9uU2VydmljZUJy
aWRnZUltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJHZW9sb2NhdGlvblNlcnZpY2VC
cmlkZ2VJbXBsLmNwcAppbmRleCAwN2YwOWRhMzBjZDk3OTc1NjIyZmUxM2ZiZDg2NzQ5NmE1MWE5
ZTg4Li45ZDc1NWExNWQ0Zjc4OTJiODFhNGU3ODYzOGU5ZGJhZTI1YzE4MWI0IDEwMDY0NAotLS0g
YS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkdlb2xvY2F0aW9uU2VydmljZUJyaWRnZUltcGwuY3Bw
CisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViR2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlSW1w
bC5jcHAKQEAgLTg1LDYgKzg1LDcgQEAgcHJpdmF0ZToKICAgICAvLyBHZW9sb2NhdGlvblNlcnZp
Y2VDaHJvbWl1bSBvd25zIHVzLCB3ZSBvbmx5IGhhdmUgYSBwb2ludGVyIGJhY2sgdG8gaXQuCiAg
ICAgR2VvbG9jYXRpb25TZXJ2aWNlQ2hyb21pdW0qIG1fR2VvbG9jYXRpb25TZXJ2aWNlQ2hyb21p
dW07CiAgICAgaW50IG1fYnJpZGdlSWQ7CisgICAgYm9vbCBtX3N0YXJ0VXBkYXRpbmdSZXF1ZXN0
ZWQ7CiB9OwogCiBHZW9sb2NhdGlvblNlcnZpY2VCcmlkZ2UqIGNyZWF0ZUdlb2xvY2F0aW9uU2Vy
dmljZUJyaWRnZUltcGwoR2VvbG9jYXRpb25TZXJ2aWNlQ2hyb21pdW0qIGdlb2xvY2F0aW9uU2Vy
dmljZUNocm9taXVtKQpAQCAtOTMsNyArOTQsOCBAQCBHZW9sb2NhdGlvblNlcnZpY2VCcmlkZ2Uq
IGNyZWF0ZUdlb2xvY2F0aW9uU2VydmljZUJyaWRnZUltcGwoR2VvbG9jYXRpb25TZXJ2aWNlQwog
fQogCiBXZWJHZW9sb2NhdGlvblNlcnZpY2VCcmlkZ2VJbXBsOjpXZWJHZW9sb2NhdGlvblNlcnZp
Y2VCcmlkZ2VJbXBsKEdlb2xvY2F0aW9uU2VydmljZUNocm9taXVtKiBnZW9sb2NhdGlvblNlcnZp
Y2VDaHJvbWl1bSkKLSAgICA6IG1fR2VvbG9jYXRpb25TZXJ2aWNlQ2hyb21pdW0oZ2VvbG9jYXRp
b25TZXJ2aWNlQ2hyb21pdW0pCisgICAgOiBtX0dlb2xvY2F0aW9uU2VydmljZUNocm9taXVtKGdl
b2xvY2F0aW9uU2VydmljZUNocm9taXVtKSwKKyAgICAgIG1fc3RhcnRVcGRhdGluZ1JlcXVlc3Rl
ZChmYWxzZSkKIHsKICAgICAvLyBXZSBuZWVkIHRvIGF0dGFjaCBvdXJzZWx2ZXMgaGVyZTogR2Vv
bG9jYXRpb24gY2FsbHMgcmVxdWVzdFBlcm1pc3Npb25Gb3JGcmFtZSgpCiAgICAgLy8gZGlyZWN0
bHksIGFuZCB3ZSBuZWVkIHRvIGJlIGF0dGFjaGVkIHNvIHRoYXQgdGhlIGVtYmVkZGVyIGNhbiBj
YWxsCkBAIC0xMTYsNiArMTE4LDcgQEAgV2ViR2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlSW1wbDo6
fldlYkdlb2xvY2F0aW9uU2VydmljZUJyaWRnZUltcGwoKQogCiBib29sIFdlYkdlb2xvY2F0aW9u
U2VydmljZUJyaWRnZUltcGw6OnN0YXJ0VXBkYXRpbmcoUG9zaXRpb25PcHRpb25zKiBwb3NpdGlv
bk9wdGlvbnMpCiB7CisgICAgbV9zdGFydFVwZGF0aW5nUmVxdWVzdGVkID0gdHJ1ZTsKICAgICBp
ZiAoIW1fYnJpZGdlSWQpCiAgICAgICAgIG1fYnJpZGdlSWQgPSBnZXRXZWJWaWV3Q2xpZW50KCkt
Pmdlb2xvY2F0aW9uU2VydmljZSgpLT5hdHRhY2hCcmlkZ2UodGhpcyk7CiAgICAgZ2V0V2ViVmll
d0NsaWVudCgpLT5nZW9sb2NhdGlvblNlcnZpY2UoKS0+c3RhcnRVcGRhdGluZyhtX2JyaWRnZUlk
LCBtX0dlb2xvY2F0aW9uU2VydmljZUNocm9taXVtLT5mcmFtZSgpLT5kb2N1bWVudCgpLT51cmwo
KSwgcG9zaXRpb25PcHRpb25zLT5lbmFibGVIaWdoQWNjdXJhY3koKSk7CkBAIC0xNTUsNiArMTU4
LDggQEAgdm9pZCBXZWJHZW9sb2NhdGlvblNlcnZpY2VCcmlkZ2VJbXBsOjpzZXRJc0FsbG93ZWQo
Ym9vbCBhbGxvd2VkKQogCiB2b2lkIFdlYkdlb2xvY2F0aW9uU2VydmljZUJyaWRnZUltcGw6OnNl
dExhc3RQb3NpdGlvbihkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGJvb2wgcHJv
dmlkZXNBbHRpdHVkZSwgZG91YmxlIGFsdGl0dWRlLCBkb3VibGUgYWNjdXJhY3ksIGJvb2wgcHJv
dmlkZXNBbHRpdHVkZUFjY3VyYWN5LCBkb3VibGUgYWx0aXR1ZGVBY2N1cmFjeSwgYm9vbCBwcm92
aWRlc0hlYWRpbmcsIGRvdWJsZSBoZWFkaW5nLCBib29sIHByb3ZpZGVzU3BlZWQsIGRvdWJsZSBz
cGVlZCwgbG9uZyBsb25nIHRpbWVzdGFtcCkKIHsKKyAgICBpZiAoIW1fc3RhcnRVcGRhdGluZ1Jl
cXVlc3RlZCkKKyAgICAgICAgcmV0dXJuOwogICAgIFJlZlB0cjxHZW9wb3NpdGlvbj4gZ2VvcG9z
aXRpb24gPSBHZW9wb3NpdGlvbjo6Y3JlYXRlKENvb3JkaW5hdGVzOjpjcmVhdGUobGF0aXR1ZGUs
IGxvbmdpdHVkZSwgcHJvdmlkZXNBbHRpdHVkZSwgYWx0aXR1ZGUsIGFjY3VyYWN5LCBwcm92aWRl
c0FsdGl0dWRlQWNjdXJhY3ksIGFsdGl0dWRlQWNjdXJhY3ksIHByb3ZpZGVzSGVhZGluZywgaGVh
ZGluZywgcHJvdmlkZXNTcGVlZCwgc3BlZWQpLCB0aW1lc3RhbXApOwogICAgIG1fR2VvbG9jYXRp
b25TZXJ2aWNlQ2hyb21pdW0tPnNldExhc3RQb3NpdGlvbihnZW9wb3NpdGlvbik7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54801</attachid>
            <date>2010-04-30 07:15:43 -0700</date>
            <delta_ts>2010-05-04 08:11:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-38323-20100430151541.patch</filename>
            <type>text/plain</type>
            <size>3456</size>
            <attacher name="Marcus Bulach">bulach</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IDVmYjVmZmFkMTE0MDZlNzc2YjNmYWI0YWY2NWI0MmY3NDMxNzI4ZTgu
LmE3YWExMjE5MmQwZjFjZWUxMzBlNTlmYmQwMmVmNWEyYTI5N2EzNTAgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE3IEBACisyMDEwLTA0LTI5ICBNYXJjdXMgQnVsYWNoICA8YnVsYWNoQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBQcmV2ZW50cyBzZXRMYXN0UG9zaXRpb24oKSBiZWZvcmUgc3RhcnRVcGRhdGluZygpIGJlaW5n
IGNhbGxlZC4KKyAgICAgICAgVGhpcyBwcmV2ZW50cyBhIHBhZ2UgcmVxdWVzdGluZyBwZXJtaXNz
aW9uIHdoZW4gaXQgaGFzIGp1c3QgYWNjZXNzZWQgbmF2aWdhdG9yLmdlb2xvY2F0aW9uICh3aXRo
b3V0IGNhbGxpbmcgbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEdlb2xvY2F0aW9uUG9zaXRpb24p
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzgzMjMK
KyAgICAgICAgaHR0cDovL2NyYnVnLmNvbS80Mjc4OQorCisgICAgICAgICogc3JjL1dlYkdlb2xv
Y2F0aW9uU2VydmljZUJyaWRnZUltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2Nh
dGlvblNlcnZpY2VCcmlkZ2VJbXBsOjpXZWJHZW9sb2NhdGlvblNlcnZpY2VCcmlkZ2VJbXBsKToK
KyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlSW1wbDo6c3RhcnRV
cGRhdGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uU2VydmljZUJyaWRnZUlt
cGw6OnNldExhc3RQb3NpdGlvbik6CisKIDIwMTAtMDQtMjkgIEplcmVteSBPcmxvdyAgPGpvcmxv
d0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gRmlzaGVyLgpkaWZm
IC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJHZW9sb2NhdGlvblNlcnZpY2VCcmlkZ2VJ
bXBsLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViR2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdl
SW1wbC5jcHAKaW5kZXggMDdmMDlkYTMwY2Q5Nzk3NTYyMmZlMTNmYmQ4Njc0OTZhNTFhOWU4OC4u
NTNlMDM3MjBlMjU4ZWNkNTlhODU0NDRiYTQzOTYwZjZkMTk2MzRkMyAxMDA2NDQKLS0tIGEvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJHZW9sb2NhdGlvblNlcnZpY2VCcmlkZ2VJbXBsLmNwcAorKysg
Yi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkdlb2xvY2F0aW9uU2VydmljZUJyaWRnZUltcGwuY3Bw
CkBAIC04NSw2ICs4NSw3IEBAIHByaXZhdGU6CiAgICAgLy8gR2VvbG9jYXRpb25TZXJ2aWNlQ2hy
b21pdW0gb3ducyB1cywgd2Ugb25seSBoYXZlIGEgcG9pbnRlciBiYWNrIHRvIGl0LgogICAgIEdl
b2xvY2F0aW9uU2VydmljZUNocm9taXVtKiBtX0dlb2xvY2F0aW9uU2VydmljZUNocm9taXVtOwog
ICAgIGludCBtX2JyaWRnZUlkOworICAgIGJvb2wgbV9zdGFydFVwZGF0aW5nUmVxdWVzdGVkOwog
fTsKIAogR2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlKiBjcmVhdGVHZW9sb2NhdGlvblNlcnZpY2VC
cmlkZ2VJbXBsKEdlb2xvY2F0aW9uU2VydmljZUNocm9taXVtKiBnZW9sb2NhdGlvblNlcnZpY2VD
aHJvbWl1bSkKQEAgLTk0LDYgKzk1LDcgQEAgR2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlKiBjcmVh
dGVHZW9sb2NhdGlvblNlcnZpY2VCcmlkZ2VJbXBsKEdlb2xvY2F0aW9uU2VydmljZUMKIAogV2Vi
R2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlSW1wbDo6V2ViR2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdl
SW1wbChHZW9sb2NhdGlvblNlcnZpY2VDaHJvbWl1bSogZ2VvbG9jYXRpb25TZXJ2aWNlQ2hyb21p
dW0pCiAgICAgOiBtX0dlb2xvY2F0aW9uU2VydmljZUNocm9taXVtKGdlb2xvY2F0aW9uU2Vydmlj
ZUNocm9taXVtKQorICAgICwgbV9zdGFydFVwZGF0aW5nUmVxdWVzdGVkKGZhbHNlKQogewogICAg
IC8vIFdlIG5lZWQgdG8gYXR0YWNoIG91cnNlbHZlcyBoZXJlOiBHZW9sb2NhdGlvbiBjYWxscyBy
ZXF1ZXN0UGVybWlzc2lvbkZvckZyYW1lKCkKICAgICAvLyBkaXJlY3RseSwgYW5kIHdlIG5lZWQg
dG8gYmUgYXR0YWNoZWQgc28gdGhhdCB0aGUgZW1iZWRkZXIgY2FuIGNhbGwKQEAgLTExNiw2ICsx
MTgsNyBAQCBXZWJHZW9sb2NhdGlvblNlcnZpY2VCcmlkZ2VJbXBsOjp+V2ViR2VvbG9jYXRpb25T
ZXJ2aWNlQnJpZGdlSW1wbCgpCiAKIGJvb2wgV2ViR2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlSW1w
bDo6c3RhcnRVcGRhdGluZyhQb3NpdGlvbk9wdGlvbnMqIHBvc2l0aW9uT3B0aW9ucykKIHsKKyAg
ICBtX3N0YXJ0VXBkYXRpbmdSZXF1ZXN0ZWQgPSB0cnVlOwogICAgIGlmICghbV9icmlkZ2VJZCkK
ICAgICAgICAgbV9icmlkZ2VJZCA9IGdldFdlYlZpZXdDbGllbnQoKS0+Z2VvbG9jYXRpb25TZXJ2
aWNlKCktPmF0dGFjaEJyaWRnZSh0aGlzKTsKICAgICBnZXRXZWJWaWV3Q2xpZW50KCktPmdlb2xv
Y2F0aW9uU2VydmljZSgpLT5zdGFydFVwZGF0aW5nKG1fYnJpZGdlSWQsIG1fR2VvbG9jYXRpb25T
ZXJ2aWNlQ2hyb21pdW0tPmZyYW1lKCktPmRvY3VtZW50KCktPnVybCgpLCBwb3NpdGlvbk9wdGlv
bnMtPmVuYWJsZUhpZ2hBY2N1cmFjeSgpKTsKQEAgLTE1NSw2ICsxNTgsOCBAQCB2b2lkIFdlYkdl
b2xvY2F0aW9uU2VydmljZUJyaWRnZUltcGw6OnNldElzQWxsb3dlZChib29sIGFsbG93ZWQpCiAK
IHZvaWQgV2ViR2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlSW1wbDo6c2V0TGFzdFBvc2l0aW9uKGRv
dWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgYm9vbCBwcm92aWRlc0FsdGl0dWRlLCBk
b3VibGUgYWx0aXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSwgYm9vbCBwcm92aWRlc0FsdGl0dWRlQWNj
dXJhY3ksIGRvdWJsZSBhbHRpdHVkZUFjY3VyYWN5LCBib29sIHByb3ZpZGVzSGVhZGluZywgZG91
YmxlIGhlYWRpbmcsIGJvb2wgcHJvdmlkZXNTcGVlZCwgZG91YmxlIHNwZWVkLCBsb25nIGxvbmcg
dGltZXN0YW1wKQogeworICAgIGlmICghbV9zdGFydFVwZGF0aW5nUmVxdWVzdGVkKQorICAgICAg
ICByZXR1cm47CiAgICAgUmVmUHRyPEdlb3Bvc2l0aW9uPiBnZW9wb3NpdGlvbiA9IEdlb3Bvc2l0
aW9uOjpjcmVhdGUoQ29vcmRpbmF0ZXM6OmNyZWF0ZShsYXRpdHVkZSwgbG9uZ2l0dWRlLCBwcm92
aWRlc0FsdGl0dWRlLCBhbHRpdHVkZSwgYWNjdXJhY3ksIHByb3ZpZGVzQWx0aXR1ZGVBY2N1cmFj
eSwgYWx0aXR1ZGVBY2N1cmFjeSwgcHJvdmlkZXNIZWFkaW5nLCBoZWFkaW5nLCBwcm92aWRlc1Nw
ZWVkLCBzcGVlZCksIHRpbWVzdGFtcCk7CiAgICAgbV9HZW9sb2NhdGlvblNlcnZpY2VDaHJvbWl1
bS0+c2V0TGFzdFBvc2l0aW9uKGdlb3Bvc2l0aW9uKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55018</attachid>
            <date>2010-05-04 08:11:27 -0700</date>
            <delta_ts>2010-05-10 10:05:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-38323-20100504161125.patch</filename>
            <type>text/plain</type>
            <size>7169</size>
            <attacher name="Marcus Bulach">bulach</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MDljZDZmMzI5MGY4ZmUwODNjZDhjZjllMzdhMjU3NTFlNDQyYWIyMy4uZGU0ODVkYjZiZTIwZDBh
ZjUzZTdlMDFhODliODM5MTgxYTRkMTk5ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMC0wNS0wNCAgTWFy
Y3VzIEJ1bGFjaCAgPGJ1bGFjaEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQXR0YWNoZXMgdGhlIGdlb2xvY2F0aW9uIGJyaWRn
ZSBsYXRlciBvbiBzdGFydFVwZGF0aW5nKCkuCisgICAgICAgIFRoaXMgcHJldmVudHMgYSBwYWdl
IHJlcXVlc3RpbmcgcGVybWlzc2lvbiB3aGVuIGl0IGhhcyBqdXN0IGFjY2Vzc2VkIG5hdmlnYXRv
ci5nZW9sb2NhdGlvbiAod2l0aG91dCBjYWxsaW5nIG5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRD
dXJyZW50UG9zaXRpb24vd2F0Y2hQb3NpdGlvbikuCisgICAgICAgIEFsc28sIHVzZXMgYSByZWZj
b3VudCBtZWNoYW5pc20gYXJvdW5kIFdlYkdlb2xvY2F0aW9uU2VydmljZUJyaWRnZUltcGw6OnN0
YXJ0VXBkYXRpbmcgLyBzdG9wVXBkYXRpbmcuCisgICAgICAgIE5vdGU6IHdoZW4gR2VvbG9jYXRp
b246OmhhdmVTdWl0YWJsZUNhY2hlZFBvc2l0aW9uKCksIFdlYkdlb2xvY2F0aW9uU2VydmljZUJy
aWRnZUltcGw6OnN0YXJ0VXBkYXRpbmcoKSBpcyBub3QgY2FsbGVkLAorICAgICAgICBzbyB3ZSBh
dHRhY2ggdGhlIGJyaWRnZSBpZiBuZWVkZWQgYXQgcmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lv
bkZvckZyYW1lKCkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0zODMyMworICAgICAgICBodHRwOi8vY3JidWcuY29tLzQyNzg5CisKKyAgICAgICAgKiBw
bGF0Zm9ybS9jaHJvbWl1bS9HZW9sb2NhdGlvblNlcnZpY2VDaHJvbWl1bS5oOgorCiAyMDEwLTA1
LTA0ICBEaXJrIFNjaHVsemUgIDxrcml0QHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCBzb3J0IG9mIFhDb2RlcyBwcm9qZWN0IGZpbGUuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL0dlb2xvY2F0aW9uU2VydmljZUNocm9taXVtLmggYi9XZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL0dlb2xvY2F0aW9uU2VydmljZUNocm9taXVtLmgKaW5kZXggMDAwYzc3MDky
OWExNzRlYTU5MjE3Zjg4MTQyNjk4YTZiZDZmZjNjYS4uZjEzOTIyMGU4ODMwMTdjZDEwOWYzNDdh
Y2I3ZDZjZWEzNDI5MDUxZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9H
ZW9sb2NhdGlvblNlcnZpY2VDaHJvbWl1bS5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21p
dW0vR2VvbG9jYXRpb25TZXJ2aWNlQ2hyb21pdW0uaApAQCAtNTAsNiArNTAsNyBAQCBwdWJsaWM6
CiAKICAgICAvLyBDYWxsZWQgYnkgdGhlIGVtYmVkZGVyLCB0byBpZGVudGlmeSB0aGlzIGJyaWRn
ZS4KICAgICB2aXJ0dWFsIGludCBnZXRCcmlkZ2VJZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgYXR0YWNoQnJpZGdlSWZOZWVkZWQoKSA9IDA7CiB9OwogCiAvLyBUaGlzIGNsYXNzIGV4
dGVuZHMgR2VvbG9jYXRpb25TZXJ2aWNlLCBhbmQgdXNlcyBHZW9sb2NhdGlvblNlcnZpY2VCcmlk
Z2UgdG8KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCmluZGV4IDY5OTczNDUxZWUxYTA1MTYzODk2YWYzM2Q3NGI3M2MxZTBm
ZjUzMGYuLmUxYTU2YWIzZGM4MTEwZmMwNTBjZjU3ODVlOTFlY2U4ZTZiZTk5ZGQgMTAwNjQ0Ci0t
LSBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEwLTA1LTA0ICBNYXJjdXMgQnVsYWNoICA8YnVsYWNo
QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBdHRhY2hlcyB0aGUgZ2VvbG9jYXRpb24gYnJpZGdlIGxhdGVyIG9uIHN0YXJ0VXBk
YXRpbmcoKS4KKyAgICAgICAgVGhpcyBwcmV2ZW50cyBhIHBhZ2UgcmVxdWVzdGluZyBwZXJtaXNz
aW9uIHdoZW4gaXQgaGFzIGp1c3QgYWNjZXNzZWQgbmF2aWdhdG9yLmdlb2xvY2F0aW9uICh3aXRo
b3V0IGNhbGxpbmcgbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbi93YXRj
aFBvc2l0aW9uKS4KKyAgICAgICAgQWxzbywgdXNlcyBhIHJlZmNvdW50IG1lY2hhbmlzbSBhcm91
bmQgV2ViR2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlSW1wbDo6c3RhcnRVcGRhdGluZyAvIHN0b3BV
cGRhdGluZy4KKyAgICAgICAgTm90ZTogd2hlbiBHZW9sb2NhdGlvbjo6aGF2ZVN1aXRhYmxlQ2Fj
aGVkUG9zaXRpb24oKSwgV2ViR2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlSW1wbDo6c3RhcnRVcGRh
dGluZygpIGlzIG5vdCBjYWxsZWQsCisgICAgICAgIHNvIHdlIGF0dGFjaCB0aGUgYnJpZGdlIGlm
IG5lZWRlZCBhdCByZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9yRnJhbWUoKS4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4MzIzCisgICAgICAg
IGh0dHA6Ly9jcmJ1Zy5jb20vNDI3ODkKKworICAgICAgICAqIHNyYy9DaHJvbWVDbGllbnRJbXBs
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50SW1wbDo6cmVxdWVzdEdlb2xvY2F0
aW9uUGVybWlzc2lvbkZvckZyYW1lKToKKyAgICAgICAgKiBzcmMvV2ViR2VvbG9jYXRpb25TZXJ2
aWNlQnJpZGdlSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uU2Vydmlj
ZUJyaWRnZUltcGw6OmF0dGFjaEJyaWRnZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
R2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlSW1wbDo6c2V0TGFzdFBvc2l0aW9uKToKKwogMjAxMC0w
NS0wMyAgQWJoaXNoZWsgQXJ5YSAgPGluZmVybm9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IEFkYW0gQmFydGguCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL0No
cm9tZUNsaWVudEltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBs
LmNwcAppbmRleCAzZGE3ZWRhZmYyYTk1YzliMGI5MDA2MTNkMTNlMGVmYmIzYjAxN2Q5Li4wMDcy
M2U5M2Y4ZTljM2Y5MjZkN2FlNDRhNzgxYjZmY2E2YmJmMTNmIDEwMDY0NAotLS0gYS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9z
cmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAKQEAgLTcxNSw2ICs3MTUsNyBAQCBOb3RpZmljYXRpb25Q
cmVzZW50ZXIqIENocm9tZUNsaWVudEltcGw6Om5vdGlmaWNhdGlvblByZXNlbnRlcigpIGNvbnN0
CiB2b2lkIENocm9tZUNsaWVudEltcGw6OnJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JG
cmFtZShGcmFtZSogZnJhbWUsIEdlb2xvY2F0aW9uKiBnZW9sb2NhdGlvbikKIHsKICAgICBHZW9s
b2NhdGlvblNlcnZpY2VDaHJvbWl1bSogZ2VvbG9jYXRpb25TZXJ2aWNlID0gc3RhdGljX2Nhc3Q8
R2VvbG9jYXRpb25TZXJ2aWNlQ2hyb21pdW0qPihnZW9sb2NhdGlvbi0+Z2V0R2VvbG9jYXRpb25T
ZXJ2aWNlKCkpOworICAgIGdlb2xvY2F0aW9uU2VydmljZS0+Z2VvbG9jYXRpb25TZXJ2aWNlQnJp
ZGdlKCktPmF0dGFjaEJyaWRnZUlmTmVlZGVkKCk7CiAgICAgbV93ZWJWaWV3LT5jbGllbnQoKS0+
Z2VvbG9jYXRpb25TZXJ2aWNlKCktPnJlcXVlc3RQZXJtaXNzaW9uRm9yRnJhbWUoZ2VvbG9jYXRp
b25TZXJ2aWNlLT5nZW9sb2NhdGlvblNlcnZpY2VCcmlkZ2UoKS0+Z2V0QnJpZGdlSWQoKSwgZnJh
bWUtPmRvY3VtZW50KCktPnVybCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJHZW9sb2NhdGlvblNlcnZpY2VCcmlkZ2VJbXBsLmNwcCBiL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViR2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlSW1wbC5jcHAKaW5kZXggMDdmMDlkYTMw
Y2Q5Nzk3NTYyMmZlMTNmYmQ4Njc0OTZhNTFhOWU4OC4uOTZkZTBlOGVlNWZjZWFkMTZmNTYyODQ2
ZGNmMTkxOWJiMjhiMGNlNSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJHZW9s
b2NhdGlvblNlcnZpY2VCcmlkZ2VJbXBsLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
Ykdlb2xvY2F0aW9uU2VydmljZUJyaWRnZUltcGwuY3BwCkBAIC03Myw2ICs3Myw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgc3VzcGVuZCgpOwogICAgIHZpcnR1YWwgdm9pZCByZXN1bWUo
KTsKICAgICB2aXJ0dWFsIGludCBnZXRCcmlkZ2VJZCgpIGNvbnN0OworICAgIHZpcnR1YWwgdm9p
ZCBhdHRhY2hCcmlkZ2VJZk5lZWRlZCgpOwogCiAgICAgLy8gV2ViR2VvbG9jYXRpb25TZXJ2aWNl
QnJpZGdlCiAgICAgdmlydHVhbCB2b2lkIHNldElzQWxsb3dlZChib29sIGFsbG93ZWQpOwpAQCAt
ODUsNiArODYsNyBAQCBwcml2YXRlOgogICAgIC8vIEdlb2xvY2F0aW9uU2VydmljZUNocm9taXVt
IG93bnMgdXMsIHdlIG9ubHkgaGF2ZSBhIHBvaW50ZXIgYmFjayB0byBpdC4KICAgICBHZW9sb2Nh
dGlvblNlcnZpY2VDaHJvbWl1bSogbV9HZW9sb2NhdGlvblNlcnZpY2VDaHJvbWl1bTsKICAgICBp
bnQgbV9icmlkZ2VJZDsKKyAgICBpbnQgbV9zdGFydFVwZGF0aW5nQ291bnQ7CiB9OwogCiBHZW9s
b2NhdGlvblNlcnZpY2VCcmlkZ2UqIGNyZWF0ZUdlb2xvY2F0aW9uU2VydmljZUJyaWRnZUltcGwo
R2VvbG9jYXRpb25TZXJ2aWNlQ2hyb21pdW0qIGdlb2xvY2F0aW9uU2VydmljZUNocm9taXVtKQpA
QCAtOTQsMTIgKzk2LDkgQEAgR2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlKiBjcmVhdGVHZW9sb2Nh
dGlvblNlcnZpY2VCcmlkZ2VJbXBsKEdlb2xvY2F0aW9uU2VydmljZUMKIAogV2ViR2VvbG9jYXRp
b25TZXJ2aWNlQnJpZGdlSW1wbDo6V2ViR2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlSW1wbChHZW9s
b2NhdGlvblNlcnZpY2VDaHJvbWl1bSogZ2VvbG9jYXRpb25TZXJ2aWNlQ2hyb21pdW0pCiAgICAg
OiBtX0dlb2xvY2F0aW9uU2VydmljZUNocm9taXVtKGdlb2xvY2F0aW9uU2VydmljZUNocm9taXVt
KQorICAgICwgbV9icmlkZ2VJZCgwKQorICAgICwgbV9zdGFydFVwZGF0aW5nQ291bnQoMCkKIHsK
LSAgICAvLyBXZSBuZWVkIHRvIGF0dGFjaCBvdXJzZWx2ZXMgaGVyZTogR2VvbG9jYXRpb24gY2Fs
bHMgcmVxdWVzdFBlcm1pc3Npb25Gb3JGcmFtZSgpCi0gICAgLy8gZGlyZWN0bHksIGFuZCB3ZSBu
ZWVkIHRvIGJlIGF0dGFjaGVkIHNvIHRoYXQgdGhlIGVtYmVkZGVyIGNhbiBjYWxsCi0gICAgLy8g
b3VyIHNldElzQWxsb3dlZCgpLgotICAgIG1fYnJpZGdlSWQgPSBnZXRXZWJWaWV3Q2xpZW50KCkt
Pmdlb2xvY2F0aW9uU2VydmljZSgpLT5hdHRhY2hCcmlkZ2UodGhpcyk7Ci0gICAgQVNTRVJUKG1f
YnJpZGdlSWQpOwogfQogCiBXZWJHZW9sb2NhdGlvblNlcnZpY2VCcmlkZ2VJbXBsOjp+V2ViR2Vv
bG9jYXRpb25TZXJ2aWNlQnJpZGdlSW1wbCgpCkBAIC0xMTYsNiArMTE1LDcgQEAgV2ViR2VvbG9j
YXRpb25TZXJ2aWNlQnJpZGdlSW1wbDo6fldlYkdlb2xvY2F0aW9uU2VydmljZUJyaWRnZUltcGwo
KQogCiBib29sIFdlYkdlb2xvY2F0aW9uU2VydmljZUJyaWRnZUltcGw6OnN0YXJ0VXBkYXRpbmco
UG9zaXRpb25PcHRpb25zKiBwb3NpdGlvbk9wdGlvbnMpCiB7CisgICAgKyttX3N0YXJ0VXBkYXRp
bmdDb3VudDsKICAgICBpZiAoIW1fYnJpZGdlSWQpCiAgICAgICAgIG1fYnJpZGdlSWQgPSBnZXRX
ZWJWaWV3Q2xpZW50KCktPmdlb2xvY2F0aW9uU2VydmljZSgpLT5hdHRhY2hCcmlkZ2UodGhpcyk7
CiAgICAgZ2V0V2ViVmlld0NsaWVudCgpLT5nZW9sb2NhdGlvblNlcnZpY2UoKS0+c3RhcnRVcGRh
dGluZyhtX2JyaWRnZUlkLCBtX0dlb2xvY2F0aW9uU2VydmljZUNocm9taXVtLT5mcmFtZSgpLT5k
b2N1bWVudCgpLT51cmwoKSwgcG9zaXRpb25PcHRpb25zLT5lbmFibGVIaWdoQWNjdXJhY3koKSk7
CkBAIC0xMjQsMTMgKzEyNCwxNCBAQCBib29sIFdlYkdlb2xvY2F0aW9uU2VydmljZUJyaWRnZUlt
cGw6OnN0YXJ0VXBkYXRpbmcoUG9zaXRpb25PcHRpb25zKiBwb3NpdGlvbk9wdAogCiB2b2lkIFdl
Ykdlb2xvY2F0aW9uU2VydmljZUJyaWRnZUltcGw6OnN0b3BVcGRhdGluZygpCiB7CisgICAgLS1t
X3N0YXJ0VXBkYXRpbmdDb3VudDsKICAgICBXZWJWaWV3Q2xpZW50KiB3ZWJWaWV3Q2xpZW50ID0g
Z2V0V2ViVmlld0NsaWVudCgpOwotICAgIGlmIChtX2JyaWRnZUlkICYmIHdlYlZpZXdDbGllbnQp
IHsKKyAgICBpZiAobV9icmlkZ2VJZCAmJiB3ZWJWaWV3Q2xpZW50ICYmICFtX3N0YXJ0VXBkYXRp
bmdDb3VudCkgewogICAgICAgICBXZWJHZW9sb2NhdGlvblNlcnZpY2UqIGdlb2xvY2F0aW9uU2Vy
dmljZSA9IHdlYlZpZXdDbGllbnQtPmdlb2xvY2F0aW9uU2VydmljZSgpOwogICAgICAgICBnZW9s
b2NhdGlvblNlcnZpY2UtPnN0b3BVcGRhdGluZyhtX2JyaWRnZUlkKTsKICAgICAgICAgZ2VvbG9j
YXRpb25TZXJ2aWNlLT5kZXRhY2hCcmlkZ2UobV9icmlkZ2VJZCk7CisgICAgICAgIG1fYnJpZGdl
SWQgPSAwOwogICAgIH0KLSAgICBtX2JyaWRnZUlkID0gMDsKIH0KIAogdm9pZCBXZWJHZW9sb2Nh
dGlvblNlcnZpY2VCcmlkZ2VJbXBsOjpzdXNwZW5kKCkKQEAgLTE0OCw2ICsxNDksMTIgQEAgaW50
IFdlYkdlb2xvY2F0aW9uU2VydmljZUJyaWRnZUltcGw6OmdldEJyaWRnZUlkKCkgY29uc3QKICAg
ICByZXR1cm4gbV9icmlkZ2VJZDsKIH0KIAordm9pZCBXZWJHZW9sb2NhdGlvblNlcnZpY2VCcmlk
Z2VJbXBsOjphdHRhY2hCcmlkZ2VJZk5lZWRlZCgpCit7CisgICAgaWYgKCFtX2JyaWRnZUlkKQor
ICAgICAgICBtX2JyaWRnZUlkID0gZ2V0V2ViVmlld0NsaWVudCgpLT5nZW9sb2NhdGlvblNlcnZp
Y2UoKS0+YXR0YWNoQnJpZGdlKHRoaXMpOworfQorCiB2b2lkIFdlYkdlb2xvY2F0aW9uU2Vydmlj
ZUJyaWRnZUltcGw6OnNldElzQWxsb3dlZChib29sIGFsbG93ZWQpCiB7CiAgICAgbV9HZW9sb2Nh
dGlvblNlcnZpY2VDaHJvbWl1bS0+c2V0SXNBbGxvd2VkKGFsbG93ZWQpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55564</attachid>
            <date>2010-05-10 10:05:16 -0700</date>
            <delta_ts>2010-05-12 01:31:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-38323-20100510180514.patch</filename>
            <type>text/plain</type>
            <size>5938</size>
            <attacher name="Marcus Bulach">bulach</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YTRiNzdiYWIzMzZmMjcxOGMxNmNhZTM5NDA4N2E5ZmZkNGI2ZWMzZC4uOTZkYWI2NWI5MTJjMjBh
NTJiNGI0ZDgzNzlmMjM1NjIxN2JiZjBhZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMC0wNS0wNCAgTWFy
Y3VzIEJ1bGFjaCAgPGJ1bGFjaEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQXR0YWNoZXMgdGhlIGdlb2xvY2F0aW9uIGJyaWRn
ZSBsYXRlciBvbiBzdGFydFVwZGF0aW5nKCkuCisgICAgICAgIFRoaXMgcHJldmVudHMgYSBwYWdl
IHJlcXVlc3RpbmcgcGVybWlzc2lvbiB3aGVuIGl0IGhhcyBqdXN0IGFjY2Vzc2VkIG5hdmlnYXRv
ci5nZW9sb2NhdGlvbiAod2l0aG91dCBjYWxsaW5nIG5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRD
dXJyZW50UG9zaXRpb24vd2F0Y2hQb3NpdGlvbikuCisgICAgICAgIE5vdGU6IHdoZW4gR2VvbG9j
YXRpb246OmhhdmVTdWl0YWJsZUNhY2hlZFBvc2l0aW9uKCksIFdlYkdlb2xvY2F0aW9uU2Vydmlj
ZUJyaWRnZUltcGw6OnN0YXJ0VXBkYXRpbmcoKSBpcyBub3QgY2FsbGVkLAorICAgICAgICBzbyB3
ZSBhdHRhY2ggdGhlIGJyaWRnZSBpZiBuZWVkZWQgYXQgcmVxdWVzdEdlb2xvY2F0aW9uUGVybWlz
c2lvbkZvckZyYW1lKCkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0zODMyMworICAgICAgICBodHRwOi8vY3JidWcuY29tLzQyNzg5CisKKyAgICAgICAg
KiBwbGF0Zm9ybS9jaHJvbWl1bS9HZW9sb2NhdGlvblNlcnZpY2VDaHJvbWl1bS5oOgorCiAyMDEw
LTA1LTEwICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBOb3QgcmV2aWV3ZWQ6IHJvbGxiYWNrIHRoZSBjb21taXQgcjU5MDYyCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0dlb2xvY2F0aW9uU2VydmljZUNocm9taXVtLmggYi9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0dlb2xvY2F0aW9uU2VydmljZUNocm9taXVtLmgKaW5k
ZXggMDAwYzc3MDkyOWExNzRlYTU5MjE3Zjg4MTQyNjk4YTZiZDZmZjNjYS4uZjEzOTIyMGU4ODMw
MTdjZDEwOWYzNDdhY2I3ZDZjZWEzNDI5MDUxZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9HZW9sb2NhdGlvblNlcnZpY2VDaHJvbWl1bS5oCisrKyBiL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vR2VvbG9jYXRpb25TZXJ2aWNlQ2hyb21pdW0uaApAQCAtNTAsNiArNTAs
NyBAQCBwdWJsaWM6CiAKICAgICAvLyBDYWxsZWQgYnkgdGhlIGVtYmVkZGVyLCB0byBpZGVudGlm
eSB0aGlzIGJyaWRnZS4KICAgICB2aXJ0dWFsIGludCBnZXRCcmlkZ2VJZCgpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoQnJpZGdlSWZOZWVkZWQoKSA9IDA7CiB9OwogCiAvLyBU
aGlzIGNsYXNzIGV4dGVuZHMgR2VvbG9jYXRpb25TZXJ2aWNlLCBhbmQgdXNlcyBHZW9sb2NhdGlv
blNlcnZpY2VCcmlkZ2UgdG8KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cg
Yi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDEzZTExN2QzZjUyMGFkOTkzNjk1ZTU3
OTNiZTZiNjZlYjdmMjJiNmEuLjcxN2Q3YzliYjc4MmQ5MmJkOTJlNzE0ZDA4OTNlMzQ5YWMyMDFl
MjggMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEwLTA1LTA0ICBNYXJjdXMgQnVs
YWNoICA8YnVsYWNoQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBdHRhY2hlcyB0aGUgZ2VvbG9jYXRpb24gYnJpZGdlIGxhdGVy
IG9uIHN0YXJ0VXBkYXRpbmcoKS4KKyAgICAgICAgVGhpcyBwcmV2ZW50cyBhIHBhZ2UgcmVxdWVz
dGluZyBwZXJtaXNzaW9uIHdoZW4gaXQgaGFzIGp1c3QgYWNjZXNzZWQgbmF2aWdhdG9yLmdlb2xv
Y2F0aW9uICh3aXRob3V0IGNhbGxpbmcgbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQ
b3NpdGlvbi93YXRjaFBvc2l0aW9uKS4KKyAgICAgICAgTm90ZTogd2hlbiBHZW9sb2NhdGlvbjo6
aGF2ZVN1aXRhYmxlQ2FjaGVkUG9zaXRpb24oKSwgV2ViR2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdl
SW1wbDo6c3RhcnRVcGRhdGluZygpIGlzIG5vdCBjYWxsZWQsCisgICAgICAgIHNvIHdlIGF0dGFj
aCB0aGUgYnJpZGdlIGlmIG5lZWRlZCBhdCByZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9y
RnJhbWUoKS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTM4MzIzCisgICAgICAgIGh0dHA6Ly9jcmJ1Zy5jb20vNDI3ODkKKworICAgICAgICAqIHNyYy9D
aHJvbWVDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50SW1wbDo6
cmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1lKToKKyAgICAgICAgKiBzcmMvV2Vi
R2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdl
b2xvY2F0aW9uU2VydmljZUJyaWRnZUltcGw6OmF0dGFjaEJyaWRnZUlmTmVlZGVkKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlSW1wbDo6c2V0TGFzdFBvc2l0
aW9uKToKKwogMjAxMC0wNS0wOCAgSmVucyBBbGZrZSAgPHNuZWpAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IERhcmluIEZpc2hlci4KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJv
bWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9t
ZUNsaWVudEltcGwuY3BwCmluZGV4IDc0ZjBiZDg5MDkzZjEyYzFhYTQ4ZGU3MDljYjM2MGQyZWFj
OWYyYmUuLjAxNzA0NTg2MWZlZTgzMzRjNGZlYTAyMzIxMjdhMWNkMGEzMGNlYmIgMTAwNjQ0Ci0t
LSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAKKysrIGIvV2ViS2l0
L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcApAQCAtNzA4LDYgKzcwOCw3IEBAIE5v
dGlmaWNhdGlvblByZXNlbnRlciogQ2hyb21lQ2xpZW50SW1wbDo6bm90aWZpY2F0aW9uUHJlc2Vu
dGVyKCkgY29uc3QKIHZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6cmVxdWVzdEdlb2xvY2F0aW9uUGVy
bWlzc2lvbkZvckZyYW1lKEZyYW1lKiBmcmFtZSwgR2VvbG9jYXRpb24qIGdlb2xvY2F0aW9uKQog
ewogICAgIEdlb2xvY2F0aW9uU2VydmljZUNocm9taXVtKiBnZW9sb2NhdGlvblNlcnZpY2UgPSBz
dGF0aWNfY2FzdDxHZW9sb2NhdGlvblNlcnZpY2VDaHJvbWl1bSo+KGdlb2xvY2F0aW9uLT5nZXRH
ZW9sb2NhdGlvblNlcnZpY2UoKSk7CisgICAgZ2VvbG9jYXRpb25TZXJ2aWNlLT5nZW9sb2NhdGlv
blNlcnZpY2VCcmlkZ2UoKS0+YXR0YWNoQnJpZGdlSWZOZWVkZWQoKTsKICAgICBtX3dlYlZpZXct
PmNsaWVudCgpLT5nZW9sb2NhdGlvblNlcnZpY2UoKS0+cmVxdWVzdFBlcm1pc3Npb25Gb3JGcmFt
ZShnZW9sb2NhdGlvblNlcnZpY2UtPmdlb2xvY2F0aW9uU2VydmljZUJyaWRnZSgpLT5nZXRCcmlk
Z2VJZCgpLCBmcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkpOwogfQogCmRpZmYgLS1naXQgYS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkdlb2xvY2F0aW9uU2VydmljZUJyaWRnZUltcGwuY3BwIGIvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJHZW9sb2NhdGlvblNlcnZpY2VCcmlkZ2VJbXBsLmNwcAppbmRl
eCAwN2YwOWRhMzBjZDk3OTc1NjIyZmUxM2ZiZDg2NzQ5NmE1MWE5ZTg4Li4yNjVlZjRmMmRiNGRi
NGJiNGNmNzE1Y2JjZmIxNTg0ZjJlMjBkNGIzIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkdlb2xvY2F0aW9uU2VydmljZUJyaWRnZUltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViR2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlSW1wbC5jcHAKQEAgLTczLDYgKzcz
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzdXNwZW5kKCk7CiAgICAgdmlydHVhbCB2
b2lkIHJlc3VtZSgpOwogICAgIHZpcnR1YWwgaW50IGdldEJyaWRnZUlkKCkgY29uc3Q7CisgICAg
dmlydHVhbCB2b2lkIGF0dGFjaEJyaWRnZUlmTmVlZGVkKCk7CiAKICAgICAvLyBXZWJHZW9sb2Nh
dGlvblNlcnZpY2VCcmlkZ2UKICAgICB2aXJ0dWFsIHZvaWQgc2V0SXNBbGxvd2VkKGJvb2wgYWxs
b3dlZCk7CkBAIC05NCwxMiArOTUsOCBAQCBHZW9sb2NhdGlvblNlcnZpY2VCcmlkZ2UqIGNyZWF0
ZUdlb2xvY2F0aW9uU2VydmljZUJyaWRnZUltcGwoR2VvbG9jYXRpb25TZXJ2aWNlQwogCiBXZWJH
ZW9sb2NhdGlvblNlcnZpY2VCcmlkZ2VJbXBsOjpXZWJHZW9sb2NhdGlvblNlcnZpY2VCcmlkZ2VJ
bXBsKEdlb2xvY2F0aW9uU2VydmljZUNocm9taXVtKiBnZW9sb2NhdGlvblNlcnZpY2VDaHJvbWl1
bSkKICAgICA6IG1fR2VvbG9jYXRpb25TZXJ2aWNlQ2hyb21pdW0oZ2VvbG9jYXRpb25TZXJ2aWNl
Q2hyb21pdW0pCisgICAgLCBtX2JyaWRnZUlkKDApCiB7Ci0gICAgLy8gV2UgbmVlZCB0byBhdHRh
Y2ggb3Vyc2VsdmVzIGhlcmU6IEdlb2xvY2F0aW9uIGNhbGxzIHJlcXVlc3RQZXJtaXNzaW9uRm9y
RnJhbWUoKQotICAgIC8vIGRpcmVjdGx5LCBhbmQgd2UgbmVlZCB0byBiZSBhdHRhY2hlZCBzbyB0
aGF0IHRoZSBlbWJlZGRlciBjYW4gY2FsbAotICAgIC8vIG91ciBzZXRJc0FsbG93ZWQoKS4KLSAg
ICBtX2JyaWRnZUlkID0gZ2V0V2ViVmlld0NsaWVudCgpLT5nZW9sb2NhdGlvblNlcnZpY2UoKS0+
YXR0YWNoQnJpZGdlKHRoaXMpOwotICAgIEFTU0VSVChtX2JyaWRnZUlkKTsKIH0KIAogV2ViR2Vv
bG9jYXRpb25TZXJ2aWNlQnJpZGdlSW1wbDo6fldlYkdlb2xvY2F0aW9uU2VydmljZUJyaWRnZUlt
cGwoKQpAQCAtMTE2LDggKzExMyw3IEBAIFdlYkdlb2xvY2F0aW9uU2VydmljZUJyaWRnZUltcGw6
On5XZWJHZW9sb2NhdGlvblNlcnZpY2VCcmlkZ2VJbXBsKCkKIAogYm9vbCBXZWJHZW9sb2NhdGlv
blNlcnZpY2VCcmlkZ2VJbXBsOjpzdGFydFVwZGF0aW5nKFBvc2l0aW9uT3B0aW9ucyogcG9zaXRp
b25PcHRpb25zKQogewotICAgIGlmICghbV9icmlkZ2VJZCkKLSAgICAgICAgbV9icmlkZ2VJZCA9
IGdldFdlYlZpZXdDbGllbnQoKS0+Z2VvbG9jYXRpb25TZXJ2aWNlKCktPmF0dGFjaEJyaWRnZSh0
aGlzKTsKKyAgICBhdHRhY2hCcmlkZ2VJZk5lZWRlZCgpOwogICAgIGdldFdlYlZpZXdDbGllbnQo
KS0+Z2VvbG9jYXRpb25TZXJ2aWNlKCktPnN0YXJ0VXBkYXRpbmcobV9icmlkZ2VJZCwgbV9HZW9s
b2NhdGlvblNlcnZpY2VDaHJvbWl1bS0+ZnJhbWUoKS0+ZG9jdW1lbnQoKS0+dXJsKCksIHBvc2l0
aW9uT3B0aW9ucy0+ZW5hYmxlSGlnaEFjY3VyYWN5KCkpOwogICAgIHJldHVybiB0cnVlOwogfQpA
QCAtMTQ4LDYgKzE0NCwxMiBAQCBpbnQgV2ViR2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlSW1wbDo6
Z2V0QnJpZGdlSWQoKSBjb25zdAogICAgIHJldHVybiBtX2JyaWRnZUlkOwogfQogCit2b2lkIFdl
Ykdlb2xvY2F0aW9uU2VydmljZUJyaWRnZUltcGw6OmF0dGFjaEJyaWRnZUlmTmVlZGVkKCkKK3sK
KyAgICBpZiAoIW1fYnJpZGdlSWQpCisgICAgICAgIG1fYnJpZGdlSWQgPSBnZXRXZWJWaWV3Q2xp
ZW50KCktPmdlb2xvY2F0aW9uU2VydmljZSgpLT5hdHRhY2hCcmlkZ2UodGhpcyk7Cit9CisKIHZv
aWQgV2ViR2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlSW1wbDo6c2V0SXNBbGxvd2VkKGJvb2wgYWxs
b3dlZCkKIHsKICAgICBtX0dlb2xvY2F0aW9uU2VydmljZUNocm9taXVtLT5zZXRJc0FsbG93ZWQo
YWxsb3dlZCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>