<?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>24152</bug_id>
          
          <creation_ts>2009-02-24 18:45:51 -0800</creation_ts>
          <short_desc>Add confirmMessageFromWorkerObject to WorkerObjectProxy.</short_desc>
          <delta_ts>2009-02-27 15:30:55 -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></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jian Li">jianli</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>dimich</cc>
    
    <cc>jianli</cc>
    
    <cc>levin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>110890</commentid>
    <comment_count>0</comment_count>
    <who name="Jian Li">jianli</who>
    <bug_when>2009-02-24 18:45:51 -0800</bug_when>
    <thetext>Move the logic to do the unconfirmed message count and pending activity setting from WorkerMessagingProxy to Worker so that it can be used by multiple platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>110900</commentid>
    <comment_count>1</comment_count>
      <attachid>27958</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2009-02-24 21:51:03 -0800</bug_when>
    <thetext>Created attachment 27958
Proposed Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>110903</commentid>
    <comment_count>2</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2009-02-24 22:06:27 -0800</bug_when>
    <thetext>Just one question, previously the code looked like this:
     return m_contextProxy-&gt;hasPendingActivity() || ActiveDOMObject::hasPendingActivity();

where

     m_contextProxy-&gt;hasPendingActivity() was &quot;(m_unconfirmedMessageCount || m_workerThreadHadPendingActivity) &amp;&amp; !m_askedToTerminate&quot;

but now it is
 
     return m_unconfirmedMessageCount || m_workerContextHadPendingActivity || ActiveDOMObject::hasPendingActivity();

Why is the loss of the m_askedToTerminate condition ok?
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>110954</commentid>
    <comment_count>3</comment_count>
    <who name="Jian Li">jianli</who>
    <bug_when>2009-02-25 08:07:53 -0800</bug_when>
    <thetext>Previously, worker object inquiries WorkerMessagingProxy about these info. So it needs to check if WorkerMessagingProxy is in terminating state or not. Now WorkerMessagingProxy passes these info directly to the worker object. So this check is performed before calling into the worker object (see WorkerMessagingProxy::reportPendingActivityInternal).

(In reply to comment #2)
&gt; Just one question, previously the code looked like this:
&gt;      return m_contextProxy-&gt;hasPendingActivity() ||
&gt; ActiveDOMObject::hasPendingActivity();
&gt; 
&gt; where
&gt; 
&gt;      m_contextProxy-&gt;hasPendingActivity() was &quot;(m_unconfirmedMessageCount ||
&gt; m_workerThreadHadPendingActivity) &amp;&amp; !m_askedToTerminate&quot;
&gt; 
&gt; but now it is
&gt; 
&gt;      return m_unconfirmedMessageCount || m_workerContextHadPendingActivity ||
&gt; ActiveDOMObject::hasPendingActivity();
&gt; 
&gt; Why is the loss of the m_askedToTerminate condition ok?
&gt; 

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>110970</commentid>
    <comment_count>4</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2009-02-25 09:27:05 -0800</bug_when>
    <thetext>I don&apos;t under this:
  Worker::hasPendingActivity() will return true even after the worker context has been terminated. Previously, it would return false after this.

Why is this change ok?  (Won&apos;t this cause GC issues?)
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>111115</commentid>
    <comment_count>5</comment_count>
      <attachid>28006</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2009-02-25 23:19:41 -0800</bug_when>
    <thetext>Created attachment 28006
Proposed Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>111119</commentid>
    <comment_count>6</comment_count>
    <who name="Jian Li">jianli</who>
    <bug_when>2009-02-25 23:25:42 -0800</bug_when>
    <thetext>Fixed this issue by adding the check in Worker class.

I also fixed the occasional crash I talked to you this afternoon. The fix is to change line &quot;reportPendingActivity(true);&quot; in WorkerMessagingProxy::workerThreadCreated to &quot;m_workerObject-&gt;reportPendingActivity(false, true);&quot;. The reason for the failure is that workerThreadCreated is executed in main thread and if we call reportPendingActivity(true) it will post a task to the main thread and unfortunately this task might get a chance to be performed at very late time when the proxy goes away.

(In reply to comment #4)
&gt; I don&apos;t under this:
&gt;   Worker::hasPendingActivity() will return true even after the worker context
&gt; has been terminated. Previously, it would return false after this.
&gt; 
&gt; Why is this change ok?  (Won&apos;t this cause GC issues?)
&gt; 

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>111122</commentid>
    <comment_count>7</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2009-02-25 23:37:53 -0800</bug_when>
    <thetext>Worker::hasPendingActivity() has changed behavior in this patch.  I think you want:

   return (!m_askedToTerminate &amp;&amp; (m_unconfirmedMessageCount || m_workerContextHadPendingActivity)) || ActiveDOMObject::hasPendingActivity();

and it would be nice to put this part &quot;!m_askedToTerminate &amp;&amp; (m_unconfirmedMessageCount || m_workerContextHadPendingActivity&quot; in a local bool to make it more readable. 



&gt; for (unsigned i = 0; i &lt; m_queuedEarlyTasks.size(); ++i)
It would be nice to put m_queuedEarlyTasks.size() in a local variable.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>111155</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-02-26 03:37:48 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; I also fixed the occasional crash I talked to you this afternoon.

Could you make an automated test case for it? Even if it won&apos;t be 100% reliable, it&apos;s better than having no test at all.
 </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>111191</commentid>
    <comment_count>9</comment_count>
      <attachid>28016</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2009-02-26 08:30:28 -0800</bug_when>
    <thetext>Created attachment 28016
Proposed Patch

Fix per David&apos;s feedback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>111195</commentid>
    <comment_count>10</comment_count>
    <who name="Jian Li">jianli</who>
    <bug_when>2009-02-26 08:36:30 -0800</bug_when>
    <thetext>I am not sure how to add test case for this since it is extremely reproduce.

I encountered this crash when I ran all worker layout tests, like &quot;run-webkit-tests LayoutTest/fast/workers/&quot;. This could reproduce occasionally, say 2%. It does not reproduce when I debug it in xcode.

I found out that if I run the test command &quot;run-webkit-tests LayoutTest/fast/workers/&quot; from two terminal windows in parallel, it will add up the repro chance.

If you know how to get a test case for this, please let me know.

(In reply to comment #8)
&gt; (In reply to comment #6)
&gt; &gt; I also fixed the occasional crash I talked to you this afternoon.
&gt; 
&gt; Could you make an automated test case for it? Even if it won&apos;t be 100%
&gt; reliable, it&apos;s better than having no test at all.
&gt; 
&gt; 

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>111196</commentid>
    <comment_count>11</comment_count>
    <who name="Jian Li">jianli</who>
    <bug_when>2009-02-26 08:37:39 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; I am not sure how to add test case for this since it is extremely reproduce.
Sorry, I mean extremely hard-to-reproduce.
&gt; 
&gt; I encountered this crash when I ran all worker layout tests, like
&gt; &quot;run-webkit-tests LayoutTest/fast/workers/&quot;. This could reproduce occasionally,
&gt; say 2%. It does not reproduce when I debug it in xcode.
&gt; 
&gt; I found out that if I run the test command &quot;run-webkit-tests
&gt; LayoutTest/fast/workers/&quot; from two terminal windows in parallel, it will add up
&gt; the repro chance.
&gt; 
&gt; If you know how to get a test case for this, please let me know.
&gt; 
&gt; (In reply to comment #8)
&gt; &gt; (In reply to comment #6)
&gt; &gt; &gt; I also fixed the occasional crash I talked to you this afternoon.
&gt; &gt; 
&gt; &gt; Could you make an automated test case for it? Even if it won&apos;t be 100%
&gt; &gt; reliable, it&apos;s better than having no test at all.
&gt; &gt; 
&gt; &gt; 
&gt; 

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>111232</commentid>
    <comment_count>12</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2009-02-26 11:08:46 -0800</bug_when>
    <thetext>Thanks Jian, Looks good to me .
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>111417</commentid>
    <comment_count>13</comment_count>
      <attachid>28016</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-02-27 01:24:49 -0800</bug_when>
    <thetext>Comment on attachment 28016
Proposed Patch

+    bool hasPendingActivity = !m_askedToTerminate &amp;&amp; (m_unconfirmedMessageCount || m_workerContextHadPendingActivity);
+    return hasPendingActivity || ActiveDOMObject::hasPendingActivity();

This variable name is not helpful. I suggest workerContextHasPendingActivity.

+        bool m_askedToTerminate;

Why duplicate this member variable in Worker when it&apos;s already available in the proxy?

-        m_unconfirmedMessageCount = taskCount;
-        m_workerThreadHadPendingActivity = true; // Worker initialization means a pending activity.
+        m_workerObject-&gt;reportPendingActivity(false, true); // Worker initialization means a pending activity.

This patch makes workers that failed to load leak. Previously, m_unconfirmedMessageCount was only set to non-zero after creating the thread, so messages posted to a worker that never spawned a thread didn&apos;t count as activity. Consider the following test:

var worker = new Worker(&quot;does-not-exist.js&quot;);
worker.postMessage(...);
worker = null;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>111443</commentid>
    <comment_count>14</comment_count>
      <attachid>28074</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2009-02-27 09:06:13 -0800</bug_when>
    <thetext>Created attachment 28074
Proposed Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>111444</commentid>
    <comment_count>15</comment_count>
    <who name="Jian Li">jianli</who>
    <bug_when>2009-02-27 09:07:52 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 28016 [review])
&gt; +    bool hasPendingActivity = !m_askedToTerminate &amp;&amp;
&gt; (m_unconfirmedMessageCount || m_workerContextHadPendingActivity);
&gt; +    return hasPendingActivity || ActiveDOMObject::hasPendingActivity();
&gt; 
&gt; This variable name is not helpful. I suggest workerContextHasPendingActivity.

Changed.
&gt; 
&gt; +        bool m_askedToTerminate;
&gt; 
&gt; Why duplicate this member variable in Worker when it&apos;s already available in the
&gt; proxy?

Yes, it is already available in the proxy. However it is not exposed in WorkerContextProxy which is the interface Worker knows about. So I have to duplicate the logic.
&gt; 
&gt; -        m_unconfirmedMessageCount = taskCount;
&gt; -        m_workerThreadHadPendingActivity = true; // Worker initialization
&gt; means a pending activity.
&gt; +        m_workerObject-&gt;reportPendingActivity(false, true); // Worker
&gt; initialization means a pending activity.
&gt; 
&gt; This patch makes workers that failed to load leak. Previously,
&gt; m_unconfirmedMessageCount was only set to non-zero after creating the thread,
&gt; so messages posted to a worker that never spawned a thread didn&apos;t count as
&gt; activity. Consider the following test:
&gt; 
&gt; var worker = new Worker(&quot;does-not-exist.js&quot;);
&gt; worker.postMessage(...);
&gt; worker = null;
&gt; 
Good catch. I added the check for this.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>111454</commentid>
    <comment_count>16</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-02-27 09:41:33 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; Yes, it is already available in the proxy. However it is not exposed in
&gt; WorkerContextProxy which is the interface Worker knows about. So I have to
&gt; duplicate the logic.

Why not expose it then?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>111459</commentid>
    <comment_count>17</comment_count>
    <who name="Jian Li">jianli</who>
    <bug_when>2009-02-27 10:05:10 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; (In reply to comment #15)
&gt; &gt; Yes, it is already available in the proxy. However it is not exposed in
&gt; &gt; WorkerContextProxy which is the interface Worker knows about. So I have to
&gt; &gt; duplicate the logic.
&gt; 
&gt; Why not expose it then?
&gt; 

We could expose it. However, I think this seems not to be part of communication between two proxy interfaces. When worker object calls WorkerContextProxy::terminateWorkerContext, it already knows that it requests to terminate the context. So it just seems not very natural for the worker object to ask the corresponding proxy for the information it knows about.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>111471</commentid>
    <comment_count>18</comment_count>
      <attachid>28081</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2009-02-27 10:40:58 -0800</bug_when>
    <thetext>Created attachment 28081
Proposed Patch

Changed to expose askedToTerminate in WorkerContextProxy per discussion with ap.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>111476</commentid>
    <comment_count>19</comment_count>
      <attachid>28084</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2009-02-27 10:58:23 -0800</bug_when>
    <thetext>Created attachment 28084
Proposed Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>111505</commentid>
    <comment_count>20</comment_count>
      <attachid>28084</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2009-02-27 11:48:21 -0800</bug_when>
    <thetext>Comment on attachment 28084
Proposed Patch

Retreat this patch since we&apos;re taking a different way to address the issue: exposing one more method in WorkerObjectProxy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>111515</commentid>
    <comment_count>21</comment_count>
    <who name="Jian Li">jianli</who>
    <bug_when>2009-02-27 12:07:12 -0800</bug_when>
    <thetext>Need to add virtual void confirmMessageFromWorkerObject(bool hasPendingActivity) to WorkerObjectProxy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>111516</commentid>
    <comment_count>22</comment_count>
      <attachid>28096</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2009-02-27 12:09:21 -0800</bug_when>
    <thetext>Created attachment 28096
Proposed Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>111519</commentid>
    <comment_count>23</comment_count>
      <attachid>28096</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-02-27 12:12:06 -0800</bug_when>
    <thetext>Comment on attachment 28096
Proposed Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>111566</commentid>
    <comment_count>24</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2009-02-27 15:30:55 -0800</bug_when>
    <thetext>Committed as r41305.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27958</attachid>
            <date>2009-02-24 21:51:03 -0800</date>
            <delta_ts>2009-02-25 23:19:41 -0800</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>WorkerActivity</filename>
            <type>text/plain</type>
            <size>7943</size>
            <attacher name="Jian Li">jianli</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MzNkMGMwNC4uZDhkNTEwNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAwOS0wMi0yNCAgSmlhbiBMaSAgPGpp
YW5saUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgTW92ZSB0aGUgbG9naWMgdG8gZG8gdGhlIHVuY29uZmlybWVkIG1lc3NhZ2Ug
Y291bnQgYW5kIHBlbmRpbmcgYWN0aXZpdHkgc2V0dGluZyBmcm9tIFdvcmtlck1lc3NhZ2luZ1By
b3h5IHRvIFdvcmtlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTI0MTUyCisKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXI6Oldvcmtlcik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXI6OnBvc3RN
ZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlcjo6aGFzUGVuZGluZ0FjdGl2aXR5KToK
KyAgICAgICAgKFdlYkNvcmU6Oldvcmtlcjo6cmVwb3J0UGVuZGluZ0FjdGl2aXR5KToKKyAgICAg
ICAgKiB3b3JrZXJzL1dvcmtlci5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyQ29udGV4dFBy
b3h5Lmg6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJNZXNzYWdpbmdQcm94eTo6V29ya2VyTWVzc2FnaW5nUHJveHkp
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RNZXNzYWdlVG9X
b3JrZXJDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3NhZ2luZ1Byb3h5Ojp3
b3JrZXJUaHJlYWRDcmVhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3NhZ2luZ1By
b3h5OjpyZXBvcnRQZW5kaW5nQWN0aXZpdHlJbnRlcm5hbCk6CisgICAgICAgICogd29ya2Vycy9X
b3JrZXJNZXNzYWdpbmdQcm94eS5oOgorCiAyMDA5LTAyLTI0ICBEYXZpZCBMZXZpbiAgPGxldmlu
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKGJ1aWxkIGZpeCku
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcCBiL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXIuY3BwCmluZGV4IDBiYzlkYTIuLmY2MzJlN2EgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXIuY3BwCisrKyBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwCkBAIC01
Miw2ICs1Miw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFdvcmtlcjo6V29ya2VyKGNvbnN0IFN0
cmluZyYgdXJsLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2Rl
JiBlYykKICAgICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0LCB0aGlzKQogICAgICwgbV9jb250
ZXh0UHJveHkoV29ya2VyQ29udGV4dFByb3h5OjpjcmVhdGUodGhpcykpCisgICAgLCBtX3VuY29u
ZmlybWVkTWVzc2FnZUNvdW50KDApCisgICAgLCBtX3dvcmtlckNvbnRleHRIYWRQZW5kaW5nQWN0
aXZpdHkoZmFsc2UpCiB7CiAgICAgbV9zY3JpcHRVUkwgPSBjb250ZXh0LT5jb21wbGV0ZVVSTCh1
cmwpOwogICAgIGlmICh1cmwuaXNFbXB0eSgpIHx8ICFtX3NjcmlwdFVSTC5pc1ZhbGlkKCkpIHsK
QEAgLTg3LDYgKzg5LDcgQEAgV29ya2VyOjp+V29ya2VyKCkKIAogdm9pZCBXb3JrZXI6OnBvc3RN
ZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKKyAgICBtX3VuY29uZmlybWVkTWVzc2Fn
ZUNvdW50Kys7CiAgICAgbV9jb250ZXh0UHJveHktPnBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0
KG1lc3NhZ2UpOwogfQogCkBAIC0xMDgsNyArMTExLDcgQEAgdm9pZCBXb3JrZXI6OnN0b3AoKQog
CiBib29sIFdvcmtlcjo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKIHsKLSAgICByZXR1cm4g
bV9jb250ZXh0UHJveHktPmhhc1BlbmRpbmdBY3Rpdml0eSgpIHx8IEFjdGl2ZURPTU9iamVjdDo6
aGFzUGVuZGluZ0FjdGl2aXR5KCk7CisgICAgcmV0dXJuIG1fdW5jb25maXJtZWRNZXNzYWdlQ291
bnQgfHwgbV93b3JrZXJDb250ZXh0SGFkUGVuZGluZ0FjdGl2aXR5IHx8IEFjdGl2ZURPTU9iamVj
dDo6aGFzUGVuZGluZ0FjdGl2aXR5KCk7CiB9CiAKIHZvaWQgV29ya2VyOjpub3RpZnlGaW5pc2hl
ZChDYWNoZWRSZXNvdXJjZSogdW51c2VkUmVzb3VyY2UpCkBAIC0yMDUsNiArMjA4LDE1IEBAIHZv
aWQgV29ya2VyOjpkaXNwYXRjaE1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAgIGRp
c3BhdGNoRXZlbnQoZXZ0LnJlbGVhc2UoKSwgZWMpOwogICAgIEFTU0VSVCghZWMpOwogfQorICAg
IAordm9pZCBXb3JrZXI6OnJlcG9ydFBlbmRpbmdBY3Rpdml0eShib29sIGNvbmZpcm1pbmdNZXNz
YWdlLCBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSkKK3sKKyAgICBpZiAoY29uZmlybWluZ01lc3Nh
Z2UpIHsKKyAgICAgICAgQVNTRVJUKG1fdW5jb25maXJtZWRNZXNzYWdlQ291bnQpOworICAgICAg
ICAtLW1fdW5jb25maXJtZWRNZXNzYWdlQ291bnQ7CisgICAgfQorICAgIG1fd29ya2VyQ29udGV4
dEhhZFBlbmRpbmdBY3Rpdml0eSA9IGhhc1BlbmRpbmdBY3Rpdml0eTsKK30KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmggYi9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyLmgKaW5kZXggZDA1ZjlkNS4uNWYwZjAxYiAxMDA2NDQKLS0t
IGEvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5oCisrKyBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIu
aApAQCAtODYsNiArODYsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0
T25lcnJvcihQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGV2ZW50TGlzdGVuZXIpIHsgbV9vbkVy
cm9yTGlzdGVuZXIgPSBldmVudExpc3RlbmVyOyB9CiAgICAgICAgIEV2ZW50TGlzdGVuZXIqIG9u
ZXJyb3IoKSBjb25zdCB7IHJldHVybiBtX29uRXJyb3JMaXN0ZW5lci5nZXQoKTsgfQogCisgICAg
ICAgIHZvaWQgcmVwb3J0UGVuZGluZ0FjdGl2aXR5KGJvb2wgY29uZmlybWluZ01lc3NhZ2UsIGJv
b2wgaGFzUGVuZGluZ0FjdGl2aXR5KTsKKwogICAgIHByaXZhdGU6CiAgICAgICAgIFdvcmtlcihj
b25zdCBTdHJpbmcmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXhjZXB0aW9uQ29kZSYpOwog
CkBAIC05OSw2ICsxMDEsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgV29ya2Vy
Q29udGV4dFByb3h5KiBtX2NvbnRleHRQcm94eTsgLy8gVGhlIHByb3h5IG91dGxpdmVzIHRoZSB3
b3JrZXIgdG8gcGVyZm9ybSB0aHJlYWQgc2h1dGRvd24uCiAKKyAgICAgICAgdW5zaWduZWQgbV91
bmNvbmZpcm1lZE1lc3NhZ2VDb3VudDsgLy8gVW5jb25maXJtZWQgbWVzc2FnZXMgZnJvbSB3b3Jr
ZXIgb2JqZWN0IHRvIHdvcmtlciB0aHJlYWQuCisgICAgICAgIGJvb2wgbV93b3JrZXJDb250ZXh0
SGFkUGVuZGluZ0FjdGl2aXR5OyAvLyBUaGUgbGF0ZXN0IGNvbmZpcm1hdGlvbiBmcm9tIHdvcmtl
ciBjb250ZXh0IHJlcG9ydGVkIHRoYXQgaXQgd2FzIHN0aWxsIGFjdGl2ZS4KKwogICAgICAgICBS
ZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbV9vbk1lc3NhZ2VMaXN0ZW5lcjsKICAgICAgICAgUmVmUHRy
PEV2ZW50TGlzdGVuZXI+IG1fb25FcnJvckxpc3RlbmVyOwogICAgICAgICBFdmVudExpc3RlbmVy
c01hcCBtX2V2ZW50TGlzdGVuZXJzOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ckNvbnRleHRQcm94eS5oIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHRQcm94eS5oCmlu
ZGV4IGM4ZjU3NjEuLmZiOGZjMjAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJD
b250ZXh0UHJveHkuaAorKysgYi9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dFByb3h5LmgK
QEAgLTUyLDggKzUyLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZpcnR1YWwg
dm9pZCBwb3N0TWVzc2FnZVRvV29ya2VyQ29udGV4dChjb25zdCBTdHJpbmcmKSA9IDA7CiAKLSAg
ICAgICAgdmlydHVhbCBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0ID0gMDsKLQogICAg
ICAgICB2aXJ0dWFsIHZvaWQgd29ya2VyT2JqZWN0RGVzdHJveWVkKCkgPSAwOwogICAgIH07CiAK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAgYi9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCmluZGV4IGZhY2IwOGMuLjJl
YWIzOTkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5j
cHAKKysrIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcApAQCAtMTgw
LDggKzE4MCw2IEBAIFdvcmtlckNvbnRleHRQcm94eSogV29ya2VyQ29udGV4dFByb3h5OjpjcmVh
dGUoV29ya2VyKiB3b3JrZXIpCiBXb3JrZXJNZXNzYWdpbmdQcm94eTo6V29ya2VyTWVzc2FnaW5n
UHJveHkoV29ya2VyKiB3b3JrZXJPYmplY3QpCiAgICAgOiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQod29ya2VyT2JqZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCiAgICAgLCBtX3dvcmtl
ck9iamVjdCh3b3JrZXJPYmplY3QpCi0gICAgLCBtX3VuY29uZmlybWVkTWVzc2FnZUNvdW50KDAp
Ci0gICAgLCBtX3dvcmtlclRocmVhZEhhZFBlbmRpbmdBY3Rpdml0eShmYWxzZSkKICAgICAsIG1f
YXNrZWRUb1Rlcm1pbmF0ZShmYWxzZSkKIHsKICAgICBBU1NFUlQobV93b3JrZXJPYmplY3QpOwpA
QCAtMjE0LDcgKzIxMiw2IEBAIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RNZXNzYWdl
VG9Xb3JrZXJDb250ZXh0KGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgaWYgKG1fd29ya2VyVGhyZWFkKSB7Ci0gICAgICAgICsrbV91bmNvbmZpcm1lZE1lc3Nh
Z2VDb3VudDsKICAgICAgICAgbV93b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFzayhNZXNz
YWdlV29ya2VyQ29udGV4dFRhc2s6OmNyZWF0ZShtZXNzYWdlKSk7CiAgICAgfSBlbHNlCiAgICAg
ICAgIG1fcXVldWVkRWFybHlUYXNrcy5hcHBlbmQoTWVzc2FnZVdvcmtlckNvbnRleHRUYXNrOjpj
cmVhdGUobWVzc2FnZSkpOwpAQCAtMjY0LDEyICsyNjEsOSBAQCB2b2lkIFdvcmtlck1lc3NhZ2lu
Z1Byb3h5Ojp3b3JrZXJUaHJlYWRDcmVhdGVkKFBhc3NSZWZQdHI8V29ya2VyVGhyZWFkPiB3b3Jr
ZXJUaAogICAgICAgICAvLyBXb3JrZXIudGVybWluYXRlKCkgY291bGQgYmUgY2FsbGVkIGZyb20g
SlMgYmVmb3JlIHRoZSB0aHJlYWQgd2FzIGNyZWF0ZWQuCiAgICAgICAgIG1fd29ya2VyVGhyZWFk
LT5zdG9wKCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgdW5zaWduZWQgdGFza0NvdW50ID0gbV9x
dWV1ZWRFYXJseVRhc2tzLnNpemUoKTsKLSAgICAgICAgQVNTRVJUKCFtX3VuY29uZmlybWVkTWVz
c2FnZUNvdW50KTsKLSAgICAgICAgbV91bmNvbmZpcm1lZE1lc3NhZ2VDb3VudCA9IHRhc2tDb3Vu
dDsKLSAgICAgICAgbV93b3JrZXJUaHJlYWRIYWRQZW5kaW5nQWN0aXZpdHkgPSB0cnVlOyAvLyBX
b3JrZXIgaW5pdGlhbGl6YXRpb24gbWVhbnMgYSBwZW5kaW5nIGFjdGl2aXR5LgorICAgICAgICBy
ZXBvcnRQZW5kaW5nQWN0aXZpdHkodHJ1ZSk7IC8vIFdvcmtlciBpbml0aWFsaXphdGlvbiBtZWFu
cyBhIHBlbmRpbmcgYWN0aXZpdHkuCiAKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IHRhc2tDb3VudDsgKytpKQorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9xdWV1
ZWRFYXJseVRhc2tzLnNpemUoKTsgKytpKQogICAgICAgICAgICAgbV93b3JrZXJUaHJlYWQtPnJ1
bkxvb3AoKS5wb3N0VGFzayhtX3F1ZXVlZEVhcmx5VGFza3NbaV0pOwogICAgICAgICBtX3F1ZXVl
ZEVhcmx5VGFza3MuY2xlYXIoKTsKICAgICB9CkBAIC0zMjMsMTcgKzMxNywxMCBAQCB2b2lkIFdv
cmtlck1lc3NhZ2luZ1Byb3h5OjpyZXBvcnRQZW5kaW5nQWN0aXZpdHkoYm9vbCBoYXNQZW5kaW5n
QWN0aXZpdHkpCiAKIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnJlcG9ydFBlbmRpbmdBY3Rp
dml0eUludGVybmFsKGJvb2wgY29uZmlybWluZ01lc3NhZ2UsIGJvb2wgaGFzUGVuZGluZ0FjdGl2
aXR5KQogewotICAgIGlmIChjb25maXJtaW5nTWVzc2FnZSAmJiAhbV9hc2tlZFRvVGVybWluYXRl
KSB7Ci0gICAgICAgIEFTU0VSVChtX3VuY29uZmlybWVkTWVzc2FnZUNvdW50KTsKLSAgICAgICAg
LS1tX3VuY29uZmlybWVkTWVzc2FnZUNvdW50OwotICAgIH0KLQotICAgIG1fd29ya2VyVGhyZWFk
SGFkUGVuZGluZ0FjdGl2aXR5ID0gaGFzUGVuZGluZ0FjdGl2aXR5OwotfQotCi1ib29sIFdvcmtl
ck1lc3NhZ2luZ1Byb3h5OjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAotewotICAgIHJldHVy
biAobV91bmNvbmZpcm1lZE1lc3NhZ2VDb3VudCB8fCBtX3dvcmtlclRocmVhZEhhZFBlbmRpbmdB
Y3Rpdml0eSkgJiYgIW1fYXNrZWRUb1Rlcm1pbmF0ZTsKKyAgICBpZiAobV9hc2tlZFRvVGVybWlu
YXRlKQorICAgICAgICByZXR1cm47CisgICAgaWYgKG1fd29ya2VyT2JqZWN0KQorICAgICAgICBt
X3dvcmtlck9iamVjdC0+cmVwb3J0UGVuZGluZ0FjdGl2aXR5KGNvbmZpcm1pbmdNZXNzYWdlLCBo
YXNQZW5kaW5nQWN0aXZpdHkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuaCBiL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5oCmluZGV4IDNjODU4NzYuLjhmZGNlZjggMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5oCisrKyBiL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5oCkBAIC01Myw3ICs1Myw2IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIHN0YXJ0V29ya2VyQ29udGV4dChj
b25zdCBLVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBjb25zdCBTdHJp
bmcmIHNvdXJjZUNvZGUpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgdGVybWluYXRlV29ya2VyQ29u
dGV4dCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlckNvbnRleHQo
Y29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKLSAgICAgICAgdmlydHVhbCBib29sIGhhc1BlbmRpbmdB
Y3Rpdml0eSgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIHZvaWQgd29ya2VyT2JqZWN0RGVzdHJv
eWVkKCk7CiAKICAgICAgICAgLy8gSW1wbGVtZW50YXRpb25zIG9mIFdvcmtlck9iamVjdFByb3h5
LgpAQCAtOTAsOSArODksNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFdvcmtlciog
bV93b3JrZXJPYmplY3Q7CiAgICAgICAgIFJlZlB0cjxXb3JrZXJUaHJlYWQ+IG1fd29ya2VyVGhy
ZWFkOwogCi0gICAgICAgIHVuc2lnbmVkIG1fdW5jb25maXJtZWRNZXNzYWdlQ291bnQ7IC8vIFVu
Y29uZmlybWVkIG1lc3NhZ2VzIGZyb20gd29ya2VyIG9iamVjdCB0byB3b3JrZXIgdGhyZWFkLgot
ICAgICAgICBib29sIG1fd29ya2VyVGhyZWFkSGFkUGVuZGluZ0FjdGl2aXR5OyAvLyBUaGUgbGF0
ZXN0IGNvbmZpcm1hdGlvbiBmcm9tIHdvcmtlciB0aHJlYWQgcmVwb3J0ZWQgdGhhdCBpdCB3YXMg
c3RpbGwgYWN0aXZlLgotCiAgICAgICAgIGJvb2wgbV9hc2tlZFRvVGVybWluYXRlOwogCiAgICAg
ICAgIFZlY3RvcjxSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gPiBtX3F1ZXVl
ZEVhcmx5VGFza3M7IC8vIFRhc2tzIGFyZSBxdWV1ZWQgaGVyZSB1bnRpbCB0aGVyZSdzIGEgdGhy
ZWFkIG9iamVjdCBjcmVhdGVkLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>28006</attachid>
            <date>2009-02-25 23:19:41 -0800</date>
            <delta_ts>2009-02-26 08:30:28 -0800</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>WorkerActivity4</filename>
            <type>text/plain</type>
            <size>8249</size>
            <attacher name="Jian Li">jianli</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MzNkMGMwNC4uNjBmZGRjOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAwOS0wMi0yNSAgSmlhbiBMaSAgPGpp
YW5saUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgTW92ZSB0aGUgbG9naWMgdG8gZG8gdGhlIHVuY29uZmlybWVkIG1lc3NhZ2Ug
Y291bnQgYW5kIHBlbmRpbmcgYWN0aXZpdHkgc2V0dGluZyBmcm9tIFdvcmtlck1lc3NhZ2luZ1By
b3h5IHRvIFdvcmtlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTI0MTUyCisKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXI6Oldvcmtlcik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXI6OnBvc3RN
ZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlcjo6dGVybWluYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6Oldvcmtlcjo6aGFzUGVuZGluZ0FjdGl2aXR5KToKKyAgICAgICAgKFdlYkNvcmU6
Oldvcmtlcjo6cmVwb3J0UGVuZGluZ0FjdGl2aXR5KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtl
ci5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyQ29udGV4dFByb3h5Lmg6CisgICAgICAgICog
d29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJNZXNzYWdpbmdQcm94eTo6V29ya2VyTWVzc2FnaW5nUHJveHkpOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0KToKKyAg
ICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3NhZ2luZ1Byb3h5Ojp3b3JrZXJUaHJlYWRDcmVhdGVk
KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3NhZ2luZ1Byb3h5OjpyZXBvcnRQZW5kaW5n
QWN0aXZpdHlJbnRlcm5hbCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94
eS5oOgorCiAyMDA5LTAyLTI0ICBEYXZpZCBMZXZpbiAgPGxldmluQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKGJ1aWxkIGZpeCkuCmRpZmYgLS1naXQgYS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyLmNwcCBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwCmluZGV4
IDBiYzlkYTIuLjk3YmMzYTMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3Bw
CisrKyBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwCkBAIC01Miw2ICs1Miw5IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIFdvcmtlcjo6V29ya2VyKGNvbnN0IFN0cmluZyYgdXJsLCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykKICAgICA6IEFjdGl2
ZURPTU9iamVjdChjb250ZXh0LCB0aGlzKQogICAgICwgbV9jb250ZXh0UHJveHkoV29ya2VyQ29u
dGV4dFByb3h5OjpjcmVhdGUodGhpcykpCisgICAgLCBtX3VuY29uZmlybWVkTWVzc2FnZUNvdW50
KDApCisgICAgLCBtX3dvcmtlckNvbnRleHRIYWRQZW5kaW5nQWN0aXZpdHkoZmFsc2UpCisgICAg
LCBtX2Fza2VkVG9UZXJtaW5hdGUoZmFsc2UpCiB7CiAgICAgbV9zY3JpcHRVUkwgPSBjb250ZXh0
LT5jb21wbGV0ZVVSTCh1cmwpOwogICAgIGlmICh1cmwuaXNFbXB0eSgpIHx8ICFtX3NjcmlwdFVS
TC5pc1ZhbGlkKCkpIHsKQEAgLTg3LDExICs5MCwxMyBAQCBXb3JrZXI6On5Xb3JrZXIoKQogCiB2
b2lkIFdvcmtlcjo6cG9zdE1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogeworICAgIG1f
dW5jb25maXJtZWRNZXNzYWdlQ291bnQrKzsKICAgICBtX2NvbnRleHRQcm94eS0+cG9zdE1lc3Nh
Z2VUb1dvcmtlckNvbnRleHQobWVzc2FnZSk7CiB9CiAKIHZvaWQgV29ya2VyOjp0ZXJtaW5hdGUo
KQogeworICAgIG1fYXNrZWRUb1Rlcm1pbmF0ZSA9IHRydWU7CiAgICAgbV9jb250ZXh0UHJveHkt
PnRlcm1pbmF0ZVdvcmtlckNvbnRleHQoKTsKIH0KIApAQCAtMTA4LDcgKzExMyw3IEBAIHZvaWQg
V29ya2VyOjpzdG9wKCkKIAogYm9vbCBXb3JrZXI6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIG1fY29udGV4dFByb3h5LT5oYXNQZW5kaW5nQWN0aXZpdHkoKSB8fCBB
Y3RpdmVET01PYmplY3Q6Omhhc1BlbmRpbmdBY3Rpdml0eSgpOworICAgIHJldHVybiAhbV9hc2tl
ZFRvVGVybWluYXRlICYmIChtX3VuY29uZmlybWVkTWVzc2FnZUNvdW50IHx8IG1fd29ya2VyQ29u
dGV4dEhhZFBlbmRpbmdBY3Rpdml0eSB8fCBBY3RpdmVET01PYmplY3Q6Omhhc1BlbmRpbmdBY3Rp
dml0eSgpKTsKIH0KIAogdm9pZCBXb3JrZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNl
KiB1bnVzZWRSZXNvdXJjZSkKQEAgLTIwNSw2ICsyMTAsMTUgQEAgdm9pZCBXb3JrZXI6OmRpc3Bh
dGNoTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAgICAgZGlzcGF0Y2hFdmVudChldnQu
cmVsZWFzZSgpLCBlYyk7CiAgICAgQVNTRVJUKCFlYyk7CiB9CisgICAgCit2b2lkIFdvcmtlcjo6
cmVwb3J0UGVuZGluZ0FjdGl2aXR5KGJvb2wgY29uZmlybWluZ01lc3NhZ2UsIGJvb2wgaGFzUGVu
ZGluZ0FjdGl2aXR5KQoreworICAgIGlmIChjb25maXJtaW5nTWVzc2FnZSkgeworICAgICAgICBB
U1NFUlQobV91bmNvbmZpcm1lZE1lc3NhZ2VDb3VudCk7CisgICAgICAgIC0tbV91bmNvbmZpcm1l
ZE1lc3NhZ2VDb3VudDsKKyAgICB9CisgICAgbV93b3JrZXJDb250ZXh0SGFkUGVuZGluZ0FjdGl2
aXR5ID0gaGFzUGVuZGluZ0FjdGl2aXR5OworfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaCBiL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXIuaAppbmRleCBkMDVmOWQ1Li44ODMxNTg5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyLmgKKysrIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5oCkBAIC04Niw2ICs4Niw4
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBzZXRPbmVycm9yKFBhc3NSZWZQ
dHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lcikgeyBtX29uRXJyb3JMaXN0ZW5lciA9IGV2
ZW50TGlzdGVuZXI7IH0KICAgICAgICAgRXZlbnRMaXN0ZW5lciogb25lcnJvcigpIGNvbnN0IHsg
cmV0dXJuIG1fb25FcnJvckxpc3RlbmVyLmdldCgpOyB9CiAKKyAgICAgICAgdm9pZCByZXBvcnRQ
ZW5kaW5nQWN0aXZpdHkoYm9vbCBjb25maXJtaW5nTWVzc2FnZSwgYm9vbCBoYXNQZW5kaW5nQWN0
aXZpdHkpOworCiAgICAgcHJpdmF0ZToKICAgICAgICAgV29ya2VyKGNvbnN0IFN0cmluZyYsIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFeGNlcHRpb25Db2RlJik7CiAKQEAgLTk5LDkgKzEwMSwx
NCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgV29ya2VyQ29udGV4dFByb3h5KiBt
X2NvbnRleHRQcm94eTsgLy8gVGhlIHByb3h5IG91dGxpdmVzIHRoZSB3b3JrZXIgdG8gcGVyZm9y
bSB0aHJlYWQgc2h1dGRvd24uCiAKKyAgICAgICAgdW5zaWduZWQgbV91bmNvbmZpcm1lZE1lc3Nh
Z2VDb3VudDsgLy8gVW5jb25maXJtZWQgbWVzc2FnZXMgZnJvbSB3b3JrZXIgb2JqZWN0IHRvIHdv
cmtlciB0aHJlYWQuCisgICAgICAgIGJvb2wgbV93b3JrZXJDb250ZXh0SGFkUGVuZGluZ0FjdGl2
aXR5OyAvLyBUaGUgbGF0ZXN0IGNvbmZpcm1hdGlvbiBmcm9tIHdvcmtlciBjb250ZXh0IHJlcG9y
dGVkIHRoYXQgaXQgd2FzIHN0aWxsIGFjdGl2ZS4KKwogICAgICAgICBSZWZQdHI8RXZlbnRMaXN0
ZW5lcj4gbV9vbk1lc3NhZ2VMaXN0ZW5lcjsKICAgICAgICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+
IG1fb25FcnJvckxpc3RlbmVyOwogICAgICAgICBFdmVudExpc3RlbmVyc01hcCBtX2V2ZW50TGlz
dGVuZXJzOworCisgICAgICAgIGJvb2wgbV9hc2tlZFRvVGVybWluYXRlOwogICAgIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJD
b250ZXh0UHJveHkuaCBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0UHJveHkuaAppbmRl
eCBjOGY1NzYxLi5mYjhmYzIwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29u
dGV4dFByb3h5LmgKKysrIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHRQcm94eS5oCkBA
IC01Miw4ICs1Miw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2aXJ0dWFsIHZv
aWQgcG9zdE1lc3NhZ2VUb1dvcmtlckNvbnRleHQoY29uc3QgU3RyaW5nJikgPSAwOwogCi0gICAg
ICAgIHZpcnR1YWwgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCA9IDA7Ci0KICAgICAg
ICAgdmlydHVhbCB2b2lkIHdvcmtlck9iamVjdERlc3Ryb3llZCgpID0gMDsKICAgICB9OwogCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwIGIvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcAppbmRleCBmYWNiMDhjLi42NmFi
ODA3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3Bw
CisrKyBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKQEAgLTE4MCw4
ICsxODAsNiBAQCBXb3JrZXJDb250ZXh0UHJveHkqIFdvcmtlckNvbnRleHRQcm94eTo6Y3JlYXRl
KFdvcmtlciogd29ya2VyKQogV29ya2VyTWVzc2FnaW5nUHJveHk6Oldvcmtlck1lc3NhZ2luZ1By
b3h5KFdvcmtlciogd29ya2VyT2JqZWN0KQogICAgIDogbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
KHdvcmtlck9iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQogICAgICwgbV93b3JrZXJP
YmplY3Qod29ya2VyT2JqZWN0KQotICAgICwgbV91bmNvbmZpcm1lZE1lc3NhZ2VDb3VudCgwKQot
ICAgICwgbV93b3JrZXJUaHJlYWRIYWRQZW5kaW5nQWN0aXZpdHkoZmFsc2UpCiAgICAgLCBtX2Fz
a2VkVG9UZXJtaW5hdGUoZmFsc2UpCiB7CiAgICAgQVNTRVJUKG1fd29ya2VyT2JqZWN0KTsKQEAg
LTIxNCw3ICsyMTIsNiBAQCB2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0TWVzc2FnZVRv
V29ya2VyQ29udGV4dChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIGlmIChtX3dvcmtlclRocmVhZCkgewotICAgICAgICArK21fdW5jb25maXJtZWRNZXNzYWdl
Q291bnQ7CiAgICAgICAgIG1fd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2soTWVzc2Fn
ZVdvcmtlckNvbnRleHRUYXNrOjpjcmVhdGUobWVzc2FnZSkpOwogICAgIH0gZWxzZQogICAgICAg
ICBtX3F1ZXVlZEVhcmx5VGFza3MuYXBwZW5kKE1lc3NhZ2VXb3JrZXJDb250ZXh0VGFzazo6Y3Jl
YXRlKG1lc3NhZ2UpKTsKQEAgLTI2NCwxMiArMjYxLDkgQEAgdm9pZCBXb3JrZXJNZXNzYWdpbmdQ
cm94eTo6d29ya2VyVGhyZWFkQ3JlYXRlZChQYXNzUmVmUHRyPFdvcmtlclRocmVhZD4gd29ya2Vy
VGgKICAgICAgICAgLy8gV29ya2VyLnRlcm1pbmF0ZSgpIGNvdWxkIGJlIGNhbGxlZCBmcm9tIEpT
IGJlZm9yZSB0aGUgdGhyZWFkIHdhcyBjcmVhdGVkLgogICAgICAgICBtX3dvcmtlclRocmVhZC0+
c3RvcCgpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHVuc2lnbmVkIHRhc2tDb3VudCA9IG1fcXVl
dWVkRWFybHlUYXNrcy5zaXplKCk7Ci0gICAgICAgIEFTU0VSVCghbV91bmNvbmZpcm1lZE1lc3Nh
Z2VDb3VudCk7Ci0gICAgICAgIG1fdW5jb25maXJtZWRNZXNzYWdlQ291bnQgPSB0YXNrQ291bnQ7
Ci0gICAgICAgIG1fd29ya2VyVGhyZWFkSGFkUGVuZGluZ0FjdGl2aXR5ID0gdHJ1ZTsgLy8gV29y
a2VyIGluaXRpYWxpemF0aW9uIG1lYW5zIGEgcGVuZGluZyBhY3Rpdml0eS4KKyAgICAgICAgbV93
b3JrZXJPYmplY3QtPnJlcG9ydFBlbmRpbmdBY3Rpdml0eShmYWxzZSwgdHJ1ZSk7IC8vIFdvcmtl
ciBpbml0aWFsaXphdGlvbiBtZWFucyBhIHBlbmRpbmcgYWN0aXZpdHkuCiAKLSAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHRhc2tDb3VudDsgKytpKQorICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbV9xdWV1ZWRFYXJseVRhc2tzLnNpemUoKTsgKytpKQogICAgICAgICAg
ICAgbV93b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFzayhtX3F1ZXVlZEVhcmx5VGFza3Nb
aV0pOwogICAgICAgICBtX3F1ZXVlZEVhcmx5VGFza3MuY2xlYXIoKTsKICAgICB9CkBAIC0zMjMs
MTcgKzMxNywxMCBAQCB2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5OjpyZXBvcnRQZW5kaW5nQWN0
aXZpdHkoYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkpCiAKIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJv
eHk6OnJlcG9ydFBlbmRpbmdBY3Rpdml0eUludGVybmFsKGJvb2wgY29uZmlybWluZ01lc3NhZ2Us
IGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KQogewotICAgIGlmIChjb25maXJtaW5nTWVzc2FnZSAm
JiAhbV9hc2tlZFRvVGVybWluYXRlKSB7Ci0gICAgICAgIEFTU0VSVChtX3VuY29uZmlybWVkTWVz
c2FnZUNvdW50KTsKLSAgICAgICAgLS1tX3VuY29uZmlybWVkTWVzc2FnZUNvdW50OwotICAgIH0K
LQotICAgIG1fd29ya2VyVGhyZWFkSGFkUGVuZGluZ0FjdGl2aXR5ID0gaGFzUGVuZGluZ0FjdGl2
aXR5OwotfQotCi1ib29sIFdvcmtlck1lc3NhZ2luZ1Byb3h5OjpoYXNQZW5kaW5nQWN0aXZpdHko
KSBjb25zdAotewotICAgIHJldHVybiAobV91bmNvbmZpcm1lZE1lc3NhZ2VDb3VudCB8fCBtX3dv
cmtlclRocmVhZEhhZFBlbmRpbmdBY3Rpdml0eSkgJiYgIW1fYXNrZWRUb1Rlcm1pbmF0ZTsKKyAg
ICBpZiAobV9hc2tlZFRvVGVybWluYXRlKQorICAgICAgICByZXR1cm47CisgICAgaWYgKG1fd29y
a2VyT2JqZWN0KQorICAgICAgICBtX3dvcmtlck9iamVjdC0+cmVwb3J0UGVuZGluZ0FjdGl2aXR5
KGNvbmZpcm1pbmdNZXNzYWdlLCBoYXNQZW5kaW5nQWN0aXZpdHkpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5n
UHJveHkuaCBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5oCmluZGV4IDNj
ODU4NzYuLjhmZGNlZjggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdp
bmdQcm94eS5oCisrKyBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5oCkBA
IC01Myw3ICs1Myw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lk
IHN0YXJ0V29ya2VyQ29udGV4dChjb25zdCBLVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0cmluZyYg
dXNlckFnZW50LCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUpOwogICAgICAgICB2aXJ0dWFsIHZv
aWQgdGVybWluYXRlV29ya2VyQ29udGV4dCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgcG9zdE1l
c3NhZ2VUb1dvcmtlckNvbnRleHQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKLSAgICAgICAgdmly
dHVhbCBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIHZv
aWQgd29ya2VyT2JqZWN0RGVzdHJveWVkKCk7CiAKICAgICAgICAgLy8gSW1wbGVtZW50YXRpb25z
IG9mIFdvcmtlck9iamVjdFByb3h5LgpAQCAtOTAsOSArODksNiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIFdvcmtlciogbV93b3JrZXJPYmplY3Q7CiAgICAgICAgIFJlZlB0cjxXb3Jr
ZXJUaHJlYWQ+IG1fd29ya2VyVGhyZWFkOwogCi0gICAgICAgIHVuc2lnbmVkIG1fdW5jb25maXJt
ZWRNZXNzYWdlQ291bnQ7IC8vIFVuY29uZmlybWVkIG1lc3NhZ2VzIGZyb20gd29ya2VyIG9iamVj
dCB0byB3b3JrZXIgdGhyZWFkLgotICAgICAgICBib29sIG1fd29ya2VyVGhyZWFkSGFkUGVuZGlu
Z0FjdGl2aXR5OyAvLyBUaGUgbGF0ZXN0IGNvbmZpcm1hdGlvbiBmcm9tIHdvcmtlciB0aHJlYWQg
cmVwb3J0ZWQgdGhhdCBpdCB3YXMgc3RpbGwgYWN0aXZlLgotCiAgICAgICAgIGJvb2wgbV9hc2tl
ZFRvVGVybWluYXRlOwogCiAgICAgICAgIFZlY3RvcjxSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6VGFzaz4gPiBtX3F1ZXVlZEVhcmx5VGFza3M7IC8vIFRhc2tzIGFyZSBxdWV1ZWQgaGVy
ZSB1bnRpbCB0aGVyZSdzIGEgdGhyZWFkIG9iamVjdCBjcmVhdGVkLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>28016</attachid>
            <date>2009-02-26 08:30:28 -0800</date>
            <delta_ts>2009-02-27 09:06:13 -0800</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>WorkerActivity5</filename>
            <type>text/plain</type>
            <size>8284</size>
            <attacher name="Jian Li">jianli</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MzNkMGMwNC4uNjBmZGRjOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAwOS0wMi0yNSAgSmlhbiBMaSAgPGpp
YW5saUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgTW92ZSB0aGUgbG9naWMgdG8gZG8gdGhlIHVuY29uZmlybWVkIG1lc3NhZ2Ug
Y291bnQgYW5kIHBlbmRpbmcgYWN0aXZpdHkgc2V0dGluZyBmcm9tIFdvcmtlck1lc3NhZ2luZ1By
b3h5IHRvIFdvcmtlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTI0MTUyCisKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXI6Oldvcmtlcik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXI6OnBvc3RN
ZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlcjo6dGVybWluYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6Oldvcmtlcjo6aGFzUGVuZGluZ0FjdGl2aXR5KToKKyAgICAgICAgKFdlYkNvcmU6
Oldvcmtlcjo6cmVwb3J0UGVuZGluZ0FjdGl2aXR5KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtl
ci5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyQ29udGV4dFByb3h5Lmg6CisgICAgICAgICog
d29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJNZXNzYWdpbmdQcm94eTo6V29ya2VyTWVzc2FnaW5nUHJveHkpOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0KToKKyAg
ICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3NhZ2luZ1Byb3h5Ojp3b3JrZXJUaHJlYWRDcmVhdGVk
KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3NhZ2luZ1Byb3h5OjpyZXBvcnRQZW5kaW5n
QWN0aXZpdHlJbnRlcm5hbCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94
eS5oOgorCiAyMDA5LTAyLTI0ICBEYXZpZCBMZXZpbiAgPGxldmluQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKGJ1aWxkIGZpeCkuCmRpZmYgLS1naXQgYS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyLmNwcCBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwCmluZGV4
IDBiYzlkYTIuLjBkOTQwY2YgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3Bw
CisrKyBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwCkBAIC01Miw2ICs1Miw5IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIFdvcmtlcjo6V29ya2VyKGNvbnN0IFN0cmluZyYgdXJsLCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykKICAgICA6IEFjdGl2
ZURPTU9iamVjdChjb250ZXh0LCB0aGlzKQogICAgICwgbV9jb250ZXh0UHJveHkoV29ya2VyQ29u
dGV4dFByb3h5OjpjcmVhdGUodGhpcykpCisgICAgLCBtX3VuY29uZmlybWVkTWVzc2FnZUNvdW50
KDApCisgICAgLCBtX3dvcmtlckNvbnRleHRIYWRQZW5kaW5nQWN0aXZpdHkoZmFsc2UpCisgICAg
LCBtX2Fza2VkVG9UZXJtaW5hdGUoZmFsc2UpCiB7CiAgICAgbV9zY3JpcHRVUkwgPSBjb250ZXh0
LT5jb21wbGV0ZVVSTCh1cmwpOwogICAgIGlmICh1cmwuaXNFbXB0eSgpIHx8ICFtX3NjcmlwdFVS
TC5pc1ZhbGlkKCkpIHsKQEAgLTg3LDExICs5MCwxMyBAQCBXb3JrZXI6On5Xb3JrZXIoKQogCiB2
b2lkIFdvcmtlcjo6cG9zdE1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogeworICAgIG1f
dW5jb25maXJtZWRNZXNzYWdlQ291bnQrKzsKICAgICBtX2NvbnRleHRQcm94eS0+cG9zdE1lc3Nh
Z2VUb1dvcmtlckNvbnRleHQobWVzc2FnZSk7CiB9CiAKIHZvaWQgV29ya2VyOjp0ZXJtaW5hdGUo
KQogeworICAgIG1fYXNrZWRUb1Rlcm1pbmF0ZSA9IHRydWU7CiAgICAgbV9jb250ZXh0UHJveHkt
PnRlcm1pbmF0ZVdvcmtlckNvbnRleHQoKTsKIH0KIApAQCAtMTA4LDcgKzExMyw4IEBAIHZvaWQg
V29ya2VyOjpzdG9wKCkKIAogYm9vbCBXb3JrZXI6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIG1fY29udGV4dFByb3h5LT5oYXNQZW5kaW5nQWN0aXZpdHkoKSB8fCBB
Y3RpdmVET01PYmplY3Q6Omhhc1BlbmRpbmdBY3Rpdml0eSgpOworICAgIGJvb2wgaGFzUGVuZGlu
Z0FjdGl2aXR5ID0gIW1fYXNrZWRUb1Rlcm1pbmF0ZSAmJiAobV91bmNvbmZpcm1lZE1lc3NhZ2VD
b3VudCB8fCBtX3dvcmtlckNvbnRleHRIYWRQZW5kaW5nQWN0aXZpdHkpOworICAgIHJldHVybiBo
YXNQZW5kaW5nQWN0aXZpdHkgfHwgQWN0aXZlRE9NT2JqZWN0OjpoYXNQZW5kaW5nQWN0aXZpdHko
KTsKIH0KIAogdm9pZCBXb3JrZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKiB1bnVz
ZWRSZXNvdXJjZSkKQEAgLTIwNSw2ICsyMTEsMTUgQEAgdm9pZCBXb3JrZXI6OmRpc3BhdGNoTWVz
c2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAgICAgZGlzcGF0Y2hFdmVudChldnQucmVsZWFz
ZSgpLCBlYyk7CiAgICAgQVNTRVJUKCFlYyk7CiB9CisgICAgCit2b2lkIFdvcmtlcjo6cmVwb3J0
UGVuZGluZ0FjdGl2aXR5KGJvb2wgY29uZmlybWluZ01lc3NhZ2UsIGJvb2wgaGFzUGVuZGluZ0Fj
dGl2aXR5KQoreworICAgIGlmIChjb25maXJtaW5nTWVzc2FnZSkgeworICAgICAgICBBU1NFUlQo
bV91bmNvbmZpcm1lZE1lc3NhZ2VDb3VudCk7CisgICAgICAgIC0tbV91bmNvbmZpcm1lZE1lc3Nh
Z2VDb3VudDsKKyAgICB9CisgICAgbV93b3JrZXJDb250ZXh0SGFkUGVuZGluZ0FjdGl2aXR5ID0g
aGFzUGVuZGluZ0FjdGl2aXR5OworfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaCBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIu
aAppbmRleCBkMDVmOWQ1Li44ODMxNTg5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyLmgKKysrIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5oCkBAIC04Niw2ICs4Niw4IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBzZXRPbmVycm9yKFBhc3NSZWZQdHI8RXZl
bnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lcikgeyBtX29uRXJyb3JMaXN0ZW5lciA9IGV2ZW50TGlz
dGVuZXI7IH0KICAgICAgICAgRXZlbnRMaXN0ZW5lciogb25lcnJvcigpIGNvbnN0IHsgcmV0dXJu
IG1fb25FcnJvckxpc3RlbmVyLmdldCgpOyB9CiAKKyAgICAgICAgdm9pZCByZXBvcnRQZW5kaW5n
QWN0aXZpdHkoYm9vbCBjb25maXJtaW5nTWVzc2FnZSwgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkp
OworCiAgICAgcHJpdmF0ZToKICAgICAgICAgV29ya2VyKGNvbnN0IFN0cmluZyYsIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBFeGNlcHRpb25Db2RlJik7CiAKQEAgLTk5LDkgKzEwMSwxNCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgV29ya2VyQ29udGV4dFByb3h5KiBtX2NvbnRl
eHRQcm94eTsgLy8gVGhlIHByb3h5IG91dGxpdmVzIHRoZSB3b3JrZXIgdG8gcGVyZm9ybSB0aHJl
YWQgc2h1dGRvd24uCiAKKyAgICAgICAgdW5zaWduZWQgbV91bmNvbmZpcm1lZE1lc3NhZ2VDb3Vu
dDsgLy8gVW5jb25maXJtZWQgbWVzc2FnZXMgZnJvbSB3b3JrZXIgb2JqZWN0IHRvIHdvcmtlciB0
aHJlYWQuCisgICAgICAgIGJvb2wgbV93b3JrZXJDb250ZXh0SGFkUGVuZGluZ0FjdGl2aXR5OyAv
LyBUaGUgbGF0ZXN0IGNvbmZpcm1hdGlvbiBmcm9tIHdvcmtlciBjb250ZXh0IHJlcG9ydGVkIHRo
YXQgaXQgd2FzIHN0aWxsIGFjdGl2ZS4KKwogICAgICAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4g
bV9vbk1lc3NhZ2VMaXN0ZW5lcjsKICAgICAgICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IG1fb25F
cnJvckxpc3RlbmVyOwogICAgICAgICBFdmVudExpc3RlbmVyc01hcCBtX2V2ZW50TGlzdGVuZXJz
OworCisgICAgICAgIGJvb2wgbV9hc2tlZFRvVGVybWluYXRlOwogICAgIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0
UHJveHkuaCBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0UHJveHkuaAppbmRleCBjOGY1
NzYxLi5mYjhmYzIwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dFBy
b3h5LmgKKysrIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHRQcm94eS5oCkBAIC01Miw4
ICs1Miw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgcG9z
dE1lc3NhZ2VUb1dvcmtlckNvbnRleHQoY29uc3QgU3RyaW5nJikgPSAwOwogCi0gICAgICAgIHZp
cnR1YWwgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCA9IDA7Ci0KICAgICAgICAgdmly
dHVhbCB2b2lkIHdvcmtlck9iamVjdERlc3Ryb3llZCgpID0gMDsKICAgICB9OwogCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwIGIvV2ViQ29yZS93
b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcAppbmRleCBmYWNiMDhjLi45MmNlZDk2IDEw
MDY0NAotLS0gYS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCisrKyBi
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKQEAgLTE4MCw4ICsxODAs
NiBAQCBXb3JrZXJDb250ZXh0UHJveHkqIFdvcmtlckNvbnRleHRQcm94eTo6Y3JlYXRlKFdvcmtl
ciogd29ya2VyKQogV29ya2VyTWVzc2FnaW5nUHJveHk6Oldvcmtlck1lc3NhZ2luZ1Byb3h5KFdv
cmtlciogd29ya2VyT2JqZWN0KQogICAgIDogbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KHdvcmtl
ck9iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQogICAgICwgbV93b3JrZXJPYmplY3Qo
d29ya2VyT2JqZWN0KQotICAgICwgbV91bmNvbmZpcm1lZE1lc3NhZ2VDb3VudCgwKQotICAgICwg
bV93b3JrZXJUaHJlYWRIYWRQZW5kaW5nQWN0aXZpdHkoZmFsc2UpCiAgICAgLCBtX2Fza2VkVG9U
ZXJtaW5hdGUoZmFsc2UpCiB7CiAgICAgQVNTRVJUKG1fd29ya2VyT2JqZWN0KTsKQEAgLTIxNCw3
ICsyMTIsNiBAQCB2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0TWVzc2FnZVRvV29ya2Vy
Q29udGV4dChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlm
IChtX3dvcmtlclRocmVhZCkgewotICAgICAgICArK21fdW5jb25maXJtZWRNZXNzYWdlQ291bnQ7
CiAgICAgICAgIG1fd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2soTWVzc2FnZVdvcmtl
ckNvbnRleHRUYXNrOjpjcmVhdGUobWVzc2FnZSkpOwogICAgIH0gZWxzZQogICAgICAgICBtX3F1
ZXVlZEVhcmx5VGFza3MuYXBwZW5kKE1lc3NhZ2VXb3JrZXJDb250ZXh0VGFzazo6Y3JlYXRlKG1l
c3NhZ2UpKTsKQEAgLTI2NCwxMSArMjYxLDkgQEAgdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6
d29ya2VyVGhyZWFkQ3JlYXRlZChQYXNzUmVmUHRyPFdvcmtlclRocmVhZD4gd29ya2VyVGgKICAg
ICAgICAgLy8gV29ya2VyLnRlcm1pbmF0ZSgpIGNvdWxkIGJlIGNhbGxlZCBmcm9tIEpTIGJlZm9y
ZSB0aGUgdGhyZWFkIHdhcyBjcmVhdGVkLgogICAgICAgICBtX3dvcmtlclRocmVhZC0+c3RvcCgp
OwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHVuc2lnbmVkIHRhc2tDb3VudCA9IG1fcXVldWVkRWFy
bHlUYXNrcy5zaXplKCk7Ci0gICAgICAgIEFTU0VSVCghbV91bmNvbmZpcm1lZE1lc3NhZ2VDb3Vu
dCk7Ci0gICAgICAgIG1fdW5jb25maXJtZWRNZXNzYWdlQ291bnQgPSB0YXNrQ291bnQ7Ci0gICAg
ICAgIG1fd29ya2VyVGhyZWFkSGFkUGVuZGluZ0FjdGl2aXR5ID0gdHJ1ZTsgLy8gV29ya2VyIGlu
aXRpYWxpemF0aW9uIG1lYW5zIGEgcGVuZGluZyBhY3Rpdml0eS4KKyAgICAgICAgbV93b3JrZXJP
YmplY3QtPnJlcG9ydFBlbmRpbmdBY3Rpdml0eShmYWxzZSwgdHJ1ZSk7IC8vIFdvcmtlciBpbml0
aWFsaXphdGlvbiBtZWFucyBhIHBlbmRpbmcgYWN0aXZpdHkuCiAKKyAgICAgICAgdW5zaWduZWQg
dGFza0NvdW50ID0gbV9xdWV1ZWRFYXJseVRhc2tzLnNpemUoKTsKICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IHRhc2tDb3VudDsgKytpKQogICAgICAgICAgICAgbV93b3JrZXJUaHJl
YWQtPnJ1bkxvb3AoKS5wb3N0VGFzayhtX3F1ZXVlZEVhcmx5VGFza3NbaV0pOwogICAgICAgICBt
X3F1ZXVlZEVhcmx5VGFza3MuY2xlYXIoKTsKQEAgLTMyMywxNyArMzE4LDEwIEBAIHZvaWQgV29y
a2VyTWVzc2FnaW5nUHJveHk6OnJlcG9ydFBlbmRpbmdBY3Rpdml0eShib29sIGhhc1BlbmRpbmdB
Y3Rpdml0eSkKIAogdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cmVwb3J0UGVuZGluZ0FjdGl2
aXR5SW50ZXJuYWwoYm9vbCBjb25maXJtaW5nTWVzc2FnZSwgYm9vbCBoYXNQZW5kaW5nQWN0aXZp
dHkpCiB7Ci0gICAgaWYgKGNvbmZpcm1pbmdNZXNzYWdlICYmICFtX2Fza2VkVG9UZXJtaW5hdGUp
IHsKLSAgICAgICAgQVNTRVJUKG1fdW5jb25maXJtZWRNZXNzYWdlQ291bnQpOwotICAgICAgICAt
LW1fdW5jb25maXJtZWRNZXNzYWdlQ291bnQ7Ci0gICAgfQotCi0gICAgbV93b3JrZXJUaHJlYWRI
YWRQZW5kaW5nQWN0aXZpdHkgPSBoYXNQZW5kaW5nQWN0aXZpdHk7Ci19Ci0KLWJvb2wgV29ya2Vy
TWVzc2FnaW5nUHJveHk6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IChtX3VuY29uZmlybWVkTWVzc2FnZUNvdW50IHx8IG1fd29ya2VyVGhyZWFkSGFkUGVuZGluZ0Fj
dGl2aXR5KSAmJiAhbV9hc2tlZFRvVGVybWluYXRlOworICAgIGlmIChtX2Fza2VkVG9UZXJtaW5h
dGUpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAobV93b3JrZXJPYmplY3QpCisgICAgICAgIG1f
d29ya2VyT2JqZWN0LT5yZXBvcnRQZW5kaW5nQWN0aXZpdHkoY29uZmlybWluZ01lc3NhZ2UsIGhh
c1BlbmRpbmdBY3Rpdml0eSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5oIGIvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmgKaW5kZXggM2M4NTg3Ni4uOGZkY2VmOCAxMDA2NDQK
LS0tIGEvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmgKKysrIGIvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmgKQEAgLTUzLDcgKzUzLDYgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRXb3JrZXJDb250ZXh0KGNv
bnN0IEtVUkwmIHNjcmlwdFVSTCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IFN0cmlu
ZyYgc291cmNlQ29kZSk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCB0ZXJtaW5hdGVXb3JrZXJDb250
ZXh0KCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBwb3N0TWVzc2FnZVRvV29ya2VyQ29udGV4dChj
b25zdCBTdHJpbmcmIG1lc3NhZ2UpOwotICAgICAgICB2aXJ0dWFsIGJvb2wgaGFzUGVuZGluZ0Fj
dGl2aXR5KCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgdm9pZCB3b3JrZXJPYmplY3REZXN0cm95
ZWQoKTsKIAogICAgICAgICAvLyBJbXBsZW1lbnRhdGlvbnMgb2YgV29ya2VyT2JqZWN0UHJveHku
CkBAIC05MCw5ICs4OSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgV29ya2VyKiBt
X3dvcmtlck9iamVjdDsKICAgICAgICAgUmVmUHRyPFdvcmtlclRocmVhZD4gbV93b3JrZXJUaHJl
YWQ7CiAKLSAgICAgICAgdW5zaWduZWQgbV91bmNvbmZpcm1lZE1lc3NhZ2VDb3VudDsgLy8gVW5j
b25maXJtZWQgbWVzc2FnZXMgZnJvbSB3b3JrZXIgb2JqZWN0IHRvIHdvcmtlciB0aHJlYWQuCi0g
ICAgICAgIGJvb2wgbV93b3JrZXJUaHJlYWRIYWRQZW5kaW5nQWN0aXZpdHk7IC8vIFRoZSBsYXRl
c3QgY29uZmlybWF0aW9uIGZyb20gd29ya2VyIHRocmVhZCByZXBvcnRlZCB0aGF0IGl0IHdhcyBz
dGlsbCBhY3RpdmUuCi0KICAgICAgICAgYm9vbCBtX2Fza2VkVG9UZXJtaW5hdGU7CiAKICAgICAg
ICAgVmVjdG9yPFJlZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiA+IG1fcXVldWVk
RWFybHlUYXNrczsgLy8gVGFza3MgYXJlIHF1ZXVlZCBoZXJlIHVudGlsIHRoZXJlJ3MgYSB0aHJl
YWQgb2JqZWN0IGNyZWF0ZWQuCg==
</data>
<flag name="review"
          id="13652"
          type_id="1"
          status="-"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>28074</attachid>
            <date>2009-02-27 09:06:13 -0800</date>
            <delta_ts>2009-02-27 10:40:58 -0800</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>WorkerActivity6</filename>
            <type>text/plain</type>
            <size>8842</size>
            <attacher name="Jian Li">jianli</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MzNkMGMwNC4uZTZlMGEyYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAwOS0wMi0yNyAgSmlhbiBMaSAgPGpp
YW5saUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgTW92ZSB0aGUgbG9naWMgdG8gZG8gdGhlIHVuY29uZmlybWVkIG1lc3NhZ2Ug
Y291bnQgYW5kIHBlbmRpbmcgYWN0aXZpdHkgc2V0dGluZyBmcm9tIFdvcmtlck1lc3NhZ2luZ1By
b3h5IHRvIFdvcmtlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTI0MTUyCisKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXI6Oldvcmtlcik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXI6OnBvc3RN
ZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlcjo6dGVybWluYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6Oldvcmtlcjo6aGFzUGVuZGluZ0FjdGl2aXR5KToKKyAgICAgICAgKFdlYkNvcmU6
Oldvcmtlcjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyOjpyZXBv
cnRQZW5kaW5nQWN0aXZpdHkpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyLmg6CisgICAgICAg
ICogd29ya2Vycy9Xb3JrZXJDb250ZXh0UHJveHkuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtl
ck1lc3NhZ2luZ1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3NhZ2luZ1By
b3h5OjpXb3JrZXJNZXNzYWdpbmdQcm94eSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJNZXNz
YWdpbmdQcm94eTo6cG9zdE1lc3NhZ2VUb1dvcmtlckNvbnRleHQpOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6OndvcmtlclRocmVhZENyZWF0ZWQpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6OnJlcG9ydFBlbmRpbmdBY3Rpdml0eUludGVy
bmFsKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5Lmg6CisKIDIwMDkt
MDItMjQgIERhdmlkIExldmluICA8bGV2aW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoYnVpbGQgZml4KS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXIuY3BwIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAKaW5kZXggMGJjOWRhMi4uYjM0
NWQ3NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAKKysrIGIvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlci5jcHAKQEAgLTUyLDYgKzUyLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIFdvcmtlcjo6V29ya2VyKGNvbnN0IFN0cmluZyYgdXJsLCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykKICAgICA6IEFjdGl2ZURPTU9iamVjdChj
b250ZXh0LCB0aGlzKQogICAgICwgbV9jb250ZXh0UHJveHkoV29ya2VyQ29udGV4dFByb3h5Ojpj
cmVhdGUodGhpcykpCisgICAgLCBtX3VuY29uZmlybWVkTWVzc2FnZUNvdW50KDApCisgICAgLCBt
X3dvcmtlckNvbnRleHRIYWRQZW5kaW5nQWN0aXZpdHkoZmFsc2UpCisgICAgLCBtX2Fza2VkVG9U
ZXJtaW5hdGUoZmFsc2UpCisgICAgLCBtX2hhc0Vycm9yKGZhbHNlKQogewogICAgIG1fc2NyaXB0
VVJMID0gY29udGV4dC0+Y29tcGxldGVVUkwodXJsKTsKICAgICBpZiAodXJsLmlzRW1wdHkoKSB8
fCAhbV9zY3JpcHRVUkwuaXNWYWxpZCgpKSB7CkBAIC04NywxMSArOTEsMTMgQEAgV29ya2VyOjp+
V29ya2VyKCkKIAogdm9pZCBXb3JrZXI6OnBvc3RNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSkKIHsKKyAgICBtX3VuY29uZmlybWVkTWVzc2FnZUNvdW50Kys7CiAgICAgbV9jb250ZXh0UHJv
eHktPnBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0KG1lc3NhZ2UpOwogfQogCiB2b2lkIFdvcmtl
cjo6dGVybWluYXRlKCkKIHsKKyAgICBtX2Fza2VkVG9UZXJtaW5hdGUgPSB0cnVlOwogICAgIG1f
Y29udGV4dFByb3h5LT50ZXJtaW5hdGVXb3JrZXJDb250ZXh0KCk7CiB9CiAKQEAgLTEwOCwxNiAr
MTE0LDE4IEBAIHZvaWQgV29ya2VyOjpzdG9wKCkKIAogYm9vbCBXb3JrZXI6Omhhc1BlbmRpbmdB
Y3Rpdml0eSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fY29udGV4dFByb3h5LT5oYXNQZW5kaW5n
QWN0aXZpdHkoKSB8fCBBY3RpdmVET01PYmplY3Q6Omhhc1BlbmRpbmdBY3Rpdml0eSgpOworICAg
IGJvb2wgd29ya2VyQ29udGV4dEhhc1BlbmRpbmdBY3Rpdml0eSA9ICFtX2Fza2VkVG9UZXJtaW5h
dGUgJiYgIW1faGFzRXJyb3IgJiYgKG1fdW5jb25maXJtZWRNZXNzYWdlQ291bnQgfHwgbV93b3Jr
ZXJDb250ZXh0SGFkUGVuZGluZ0FjdGl2aXR5KTsKKyAgICByZXR1cm4gd29ya2VyQ29udGV4dEhh
c1BlbmRpbmdBY3Rpdml0eSB8fCBBY3RpdmVET01PYmplY3Q6Omhhc1BlbmRpbmdBY3Rpdml0eSgp
OwogfQogCiB2b2lkIFdvcmtlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqIHVudXNl
ZFJlc291cmNlKQogewogICAgIEFTU0VSVF9VTlVTRUQodW51c2VkUmVzb3VyY2UsIHVudXNlZFJl
c291cmNlID09IG1fY2FjaGVkU2NyaXB0KTsKIAotICAgIGlmIChtX2NhY2hlZFNjcmlwdC0+ZXJy
b3JPY2N1cnJlZCgpKQorICAgIGlmIChtX2NhY2hlZFNjcmlwdC0+ZXJyb3JPY2N1cnJlZCgpKSB7
CisgICAgICAgIG1faGFzRXJyb3IgPSB0cnVlOwogICAgICAgICBkaXNwYXRjaEVycm9yRXZlbnQo
KTsKLSAgICBlbHNlCisgICAgfSBlbHNlCiAgICAgICAgIG1fY29udGV4dFByb3h5LT5zdGFydFdv
cmtlckNvbnRleHQobV9zY3JpcHRVUkwsIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+dXNlckFn
ZW50KG1fc2NyaXB0VVJMKSwgbV9jYWNoZWRTY3JpcHQtPnNjcmlwdCgpKTsKIAogICAgIG1fY2Fj
aGVkU2NyaXB0LT5yZW1vdmVDbGllbnQodGhpcyk7CkBAIC0yMDUsNiArMjEzLDE1IEBAIHZvaWQg
V29ya2VyOjpkaXNwYXRjaE1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAgIGRpc3Bh
dGNoRXZlbnQoZXZ0LnJlbGVhc2UoKSwgZWMpOwogICAgIEFTU0VSVCghZWMpOwogfQorICAgIAor
dm9pZCBXb3JrZXI6OnJlcG9ydFBlbmRpbmdBY3Rpdml0eShib29sIGNvbmZpcm1pbmdNZXNzYWdl
LCBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSkKK3sKKyAgICBpZiAoY29uZmlybWluZ01lc3NhZ2Up
IHsKKyAgICAgICAgQVNTRVJUKG1fdW5jb25maXJtZWRNZXNzYWdlQ291bnQpOworICAgICAgICAt
LW1fdW5jb25maXJtZWRNZXNzYWdlQ291bnQ7CisgICAgfQorICAgIG1fd29ya2VyQ29udGV4dEhh
ZFBlbmRpbmdBY3Rpdml0eSA9IGhhc1BlbmRpbmdBY3Rpdml0eTsKK30KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmggYi9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyLmgKaW5kZXggZDA1ZjlkNS4uOTljZjc4MyAxMDA2NDQKLS0tIGEv
V2ViQ29yZS93b3JrZXJzL1dvcmtlci5oCisrKyBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaApA
QCAtODYsNiArODYsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0T25l
cnJvcihQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGV2ZW50TGlzdGVuZXIpIHsgbV9vbkVycm9y
TGlzdGVuZXIgPSBldmVudExpc3RlbmVyOyB9CiAgICAgICAgIEV2ZW50TGlzdGVuZXIqIG9uZXJy
b3IoKSBjb25zdCB7IHJldHVybiBtX29uRXJyb3JMaXN0ZW5lci5nZXQoKTsgfQogCisgICAgICAg
IHZvaWQgcmVwb3J0UGVuZGluZ0FjdGl2aXR5KGJvb2wgY29uZmlybWluZ01lc3NhZ2UsIGJvb2wg
aGFzUGVuZGluZ0FjdGl2aXR5KTsKKwogICAgIHByaXZhdGU6CiAgICAgICAgIFdvcmtlcihjb25z
dCBTdHJpbmcmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXhjZXB0aW9uQ29kZSYpOwogCkBA
IC05OSw5ICsxMDEsMTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIFdvcmtlckNv
bnRleHRQcm94eSogbV9jb250ZXh0UHJveHk7IC8vIFRoZSBwcm94eSBvdXRsaXZlcyB0aGUgd29y
a2VyIHRvIHBlcmZvcm0gdGhyZWFkIHNodXRkb3duLgogCisgICAgICAgIHVuc2lnbmVkIG1fdW5j
b25maXJtZWRNZXNzYWdlQ291bnQ7IC8vIFVuY29uZmlybWVkIG1lc3NhZ2VzIGZyb20gd29ya2Vy
IG9iamVjdCB0byB3b3JrZXIgdGhyZWFkLgorICAgICAgICBib29sIG1fd29ya2VyQ29udGV4dEhh
ZFBlbmRpbmdBY3Rpdml0eTsgLy8gVGhlIGxhdGVzdCBjb25maXJtYXRpb24gZnJvbSB3b3JrZXIg
Y29udGV4dCByZXBvcnRlZCB0aGF0IGl0IHdhcyBzdGlsbCBhY3RpdmUuCisKICAgICAgICAgUmVm
UHRyPEV2ZW50TGlzdGVuZXI+IG1fb25NZXNzYWdlTGlzdGVuZXI7CiAgICAgICAgIFJlZlB0cjxF
dmVudExpc3RlbmVyPiBtX29uRXJyb3JMaXN0ZW5lcjsKICAgICAgICAgRXZlbnRMaXN0ZW5lcnNN
YXAgbV9ldmVudExpc3RlbmVyczsKKworICAgICAgICBib29sIG1fYXNrZWRUb1Rlcm1pbmF0ZTsK
KyAgICAgICAgYm9vbCBtX2hhc0Vycm9yOwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0UHJveHkuaCBiL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0UHJveHkuaAppbmRleCBjOGY1NzYxLi5mYjhmYzIw
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dFByb3h5LmgKKysrIGIv
V2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHRQcm94eS5oCkBAIC01Miw4ICs1Miw2IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1dv
cmtlckNvbnRleHQoY29uc3QgU3RyaW5nJikgPSAwOwogCi0gICAgICAgIHZpcnR1YWwgYm9vbCBo
YXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCA9IDA7Ci0KICAgICAgICAgdmlydHVhbCB2b2lkIHdv
cmtlck9iamVjdERlc3Ryb3llZCgpID0gMDsKICAgICB9OwogCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ck1lc3NhZ2luZ1Byb3h5LmNwcAppbmRleCBmYWNiMDhjLi45MmNlZDk2IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCisrKyBiL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKQEAgLTE4MCw4ICsxODAsNiBAQCBXb3JrZXJD
b250ZXh0UHJveHkqIFdvcmtlckNvbnRleHRQcm94eTo6Y3JlYXRlKFdvcmtlciogd29ya2VyKQog
V29ya2VyTWVzc2FnaW5nUHJveHk6Oldvcmtlck1lc3NhZ2luZ1Byb3h5KFdvcmtlciogd29ya2Vy
T2JqZWN0KQogICAgIDogbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KHdvcmtlck9iamVjdC0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpKQogICAgICwgbV93b3JrZXJPYmplY3Qod29ya2VyT2JqZWN0
KQotICAgICwgbV91bmNvbmZpcm1lZE1lc3NhZ2VDb3VudCgwKQotICAgICwgbV93b3JrZXJUaHJl
YWRIYWRQZW5kaW5nQWN0aXZpdHkoZmFsc2UpCiAgICAgLCBtX2Fza2VkVG9UZXJtaW5hdGUoZmFs
c2UpCiB7CiAgICAgQVNTRVJUKG1fd29ya2VyT2JqZWN0KTsKQEAgLTIxNCw3ICsyMTIsNiBAQCB2
b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0TWVzc2FnZVRvV29ya2VyQ29udGV4dChjb25z
dCBTdHJpbmcmIG1lc3NhZ2UpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX3dvcmtlclRo
cmVhZCkgewotICAgICAgICArK21fdW5jb25maXJtZWRNZXNzYWdlQ291bnQ7CiAgICAgICAgIG1f
d29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2soTWVzc2FnZVdvcmtlckNvbnRleHRUYXNr
OjpjcmVhdGUobWVzc2FnZSkpOwogICAgIH0gZWxzZQogICAgICAgICBtX3F1ZXVlZEVhcmx5VGFz
a3MuYXBwZW5kKE1lc3NhZ2VXb3JrZXJDb250ZXh0VGFzazo6Y3JlYXRlKG1lc3NhZ2UpKTsKQEAg
LTI2NCwxMSArMjYxLDkgQEAgdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6d29ya2VyVGhyZWFk
Q3JlYXRlZChQYXNzUmVmUHRyPFdvcmtlclRocmVhZD4gd29ya2VyVGgKICAgICAgICAgLy8gV29y
a2VyLnRlcm1pbmF0ZSgpIGNvdWxkIGJlIGNhbGxlZCBmcm9tIEpTIGJlZm9yZSB0aGUgdGhyZWFk
IHdhcyBjcmVhdGVkLgogICAgICAgICBtX3dvcmtlclRocmVhZC0+c3RvcCgpOwogICAgIH0gZWxz
ZSB7Ci0gICAgICAgIHVuc2lnbmVkIHRhc2tDb3VudCA9IG1fcXVldWVkRWFybHlUYXNrcy5zaXpl
KCk7Ci0gICAgICAgIEFTU0VSVCghbV91bmNvbmZpcm1lZE1lc3NhZ2VDb3VudCk7Ci0gICAgICAg
IG1fdW5jb25maXJtZWRNZXNzYWdlQ291bnQgPSB0YXNrQ291bnQ7Ci0gICAgICAgIG1fd29ya2Vy
VGhyZWFkSGFkUGVuZGluZ0FjdGl2aXR5ID0gdHJ1ZTsgLy8gV29ya2VyIGluaXRpYWxpemF0aW9u
IG1lYW5zIGEgcGVuZGluZyBhY3Rpdml0eS4KKyAgICAgICAgbV93b3JrZXJPYmplY3QtPnJlcG9y
dFBlbmRpbmdBY3Rpdml0eShmYWxzZSwgdHJ1ZSk7IC8vIFdvcmtlciBpbml0aWFsaXphdGlvbiBt
ZWFucyBhIHBlbmRpbmcgYWN0aXZpdHkuCiAKKyAgICAgICAgdW5zaWduZWQgdGFza0NvdW50ID0g
bV9xdWV1ZWRFYXJseVRhc2tzLnNpemUoKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IHRhc2tDb3VudDsgKytpKQogICAgICAgICAgICAgbV93b3JrZXJUaHJlYWQtPnJ1bkxvb3Ao
KS5wb3N0VGFzayhtX3F1ZXVlZEVhcmx5VGFza3NbaV0pOwogICAgICAgICBtX3F1ZXVlZEVhcmx5
VGFza3MuY2xlYXIoKTsKQEAgLTMyMywxNyArMzE4LDEwIEBAIHZvaWQgV29ya2VyTWVzc2FnaW5n
UHJveHk6OnJlcG9ydFBlbmRpbmdBY3Rpdml0eShib29sIGhhc1BlbmRpbmdBY3Rpdml0eSkKIAog
dm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cmVwb3J0UGVuZGluZ0FjdGl2aXR5SW50ZXJuYWwo
Ym9vbCBjb25maXJtaW5nTWVzc2FnZSwgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkpCiB7Ci0gICAg
aWYgKGNvbmZpcm1pbmdNZXNzYWdlICYmICFtX2Fza2VkVG9UZXJtaW5hdGUpIHsKLSAgICAgICAg
QVNTRVJUKG1fdW5jb25maXJtZWRNZXNzYWdlQ291bnQpOwotICAgICAgICAtLW1fdW5jb25maXJt
ZWRNZXNzYWdlQ291bnQ7Ci0gICAgfQotCi0gICAgbV93b3JrZXJUaHJlYWRIYWRQZW5kaW5nQWN0
aXZpdHkgPSBoYXNQZW5kaW5nQWN0aXZpdHk7Ci19Ci0KLWJvb2wgV29ya2VyTWVzc2FnaW5nUHJv
eHk6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIChtX3VuY29uZmly
bWVkTWVzc2FnZUNvdW50IHx8IG1fd29ya2VyVGhyZWFkSGFkUGVuZGluZ0FjdGl2aXR5KSAmJiAh
bV9hc2tlZFRvVGVybWluYXRlOworICAgIGlmIChtX2Fza2VkVG9UZXJtaW5hdGUpCisgICAgICAg
IHJldHVybjsKKyAgICBpZiAobV93b3JrZXJPYmplY3QpCisgICAgICAgIG1fd29ya2VyT2JqZWN0
LT5yZXBvcnRQZW5kaW5nQWN0aXZpdHkoY29uZmlybWluZ01lc3NhZ2UsIGhhc1BlbmRpbmdBY3Rp
dml0eSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5oIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1l
c3NhZ2luZ1Byb3h5LmgKaW5kZXggM2M4NTg3Ni4uOGZkY2VmOCAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmgKKysrIGIvV2ViQ29yZS93b3JrZXJzL1dv
cmtlck1lc3NhZ2luZ1Byb3h5LmgKQEAgLTUzLDcgKzUzLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRXb3JrZXJDb250ZXh0KGNvbnN0IEtVUkwmIHNj
cmlwdFVSTCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IFN0cmluZyYgc291cmNlQ29k
ZSk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCB0ZXJtaW5hdGVXb3JrZXJDb250ZXh0KCk7CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBwb3N0TWVzc2FnZVRvV29ya2VyQ29udGV4dChjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpOwotICAgICAgICB2aXJ0dWFsIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29u
c3Q7CiAgICAgICAgIHZpcnR1YWwgdm9pZCB3b3JrZXJPYmplY3REZXN0cm95ZWQoKTsKIAogICAg
ICAgICAvLyBJbXBsZW1lbnRhdGlvbnMgb2YgV29ya2VyT2JqZWN0UHJveHkuCkBAIC05MCw5ICs4
OSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgV29ya2VyKiBtX3dvcmtlck9iamVj
dDsKICAgICAgICAgUmVmUHRyPFdvcmtlclRocmVhZD4gbV93b3JrZXJUaHJlYWQ7CiAKLSAgICAg
ICAgdW5zaWduZWQgbV91bmNvbmZpcm1lZE1lc3NhZ2VDb3VudDsgLy8gVW5jb25maXJtZWQgbWVz
c2FnZXMgZnJvbSB3b3JrZXIgb2JqZWN0IHRvIHdvcmtlciB0aHJlYWQuCi0gICAgICAgIGJvb2wg
bV93b3JrZXJUaHJlYWRIYWRQZW5kaW5nQWN0aXZpdHk7IC8vIFRoZSBsYXRlc3QgY29uZmlybWF0
aW9uIGZyb20gd29ya2VyIHRocmVhZCByZXBvcnRlZCB0aGF0IGl0IHdhcyBzdGlsbCBhY3RpdmUu
Ci0KICAgICAgICAgYm9vbCBtX2Fza2VkVG9UZXJtaW5hdGU7CiAKICAgICAgICAgVmVjdG9yPFJl
ZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiA+IG1fcXVldWVkRWFybHlUYXNrczsg
Ly8gVGFza3MgYXJlIHF1ZXVlZCBoZXJlIHVudGlsIHRoZXJlJ3MgYSB0aHJlYWQgb2JqZWN0IGNy
ZWF0ZWQuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>28081</attachid>
            <date>2009-02-27 10:40:58 -0800</date>
            <delta_ts>2009-02-27 10:58:45 -0800</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>WorkerActivity7</filename>
            <type>text/plain</type>
            <size>11501</size>
            <attacher name="Jian Li">jianli</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MzNkMGMwNC4uMjJmYWExOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAwOS0wMi0yNyAgSmlhbiBMaSAgPGpp
YW5saUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgTW92ZSB0aGUgbG9naWMgdG8gZG8gdGhlIHVuY29uZmlybWVkIG1lc3NhZ2Ug
Y291bnQgYW5kIHBlbmRpbmcgYWN0aXZpdHkgc2V0dGluZyBmcm9tIFdvcmtlck1lc3NhZ2luZ1By
b3h5IHRvIFdvcmtlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTI0MTUyCisKKyAgICAgICAgKiBsb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFk
QnJpZGdlOjptYWluVGhyZWFkQ3JlYXRlTG9hZGVyKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXI6Oldvcmtlcik6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXI6OnBvc3RNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlcjo6aGFz
UGVuZGluZ0FjdGl2aXR5KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlcjo6bm90aWZ5RmluaXNo
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyOjpyZXBvcnRQZW5kaW5nQWN0aXZpdHkpOgor
ICAgICAgICAqIHdvcmtlcnMvV29ya2VyLmg6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJDb250
ZXh0UHJveHkuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VXb3JrZXJUYXNrOjpwZXJmb3JtVGFzayk6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJFeGNlcHRpb25UYXNrOjpwZXJmb3JtVGFzayk6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJNZXNzYWdpbmdQcm94eTo6V29ya2VyTWVzc2FnaW5nUHJveHkpOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RNZXNzYWdlVG9Xb3Jr
ZXJDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OnBvc3RDb25zb2xlTWVzc2FnZVRhc2spOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6OndvcmtlclRocmVhZENyZWF0
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6OnJlcG9ydFBlbmRp
bmdBY3Rpdml0eUludGVybmFsKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1By
b3h5Lmg6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJNZXNzYWdpbmdQcm94eTo6d29ya2VyQ29u
dGV4dEFza2VkVG9UZXJtaW5hdGUpOgorCiAyMDA5LTAyLTI0ICBEYXZpZCBMZXZpbiAgPGxldmlu
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKGJ1aWxkIGZpeCku
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcCBi
L1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IGQ4MDFjMmMu
LjRlMDVjMWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2Fk
ZXIuY3BwCisrKyBiL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCkBA
IC05Miw3ICs5Miw3IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJy
aWRnZTo6bWFpblRocmVhZENyZWF0ZUxvYWRlcihTY3JpcHRFeGVjCiAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKICAgICBBU1NFUlQoY29udGV4dC0+aXNEb2N1bWVudCgpKTsKIAotICAgIGlm
ICh0aGlzUHRyLT5tX21lc3NhZ2luZ1Byb3h5LmFza2VkVG9UZXJtaW5hdGUoKSkKKyAgICBpZiAo
dGhpc1B0ci0+bV9tZXNzYWdpbmdQcm94eS53b3JrZXJDb250ZXh0QXNrZWRUb1Rlcm1pbmF0ZSgp
KQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBGSVhNRTogdGhlIGNyZWF0ZWQgbG9hZGVyIGhh
cyBubyBrbm93bGVkZ2Ugb2YgdGhlIG9yaWdpbiBvZiB0aGUgd29ya2VyIGRvaW5nIHRoZSBsb2Fk
IHJlcXVlc3QuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcCBiL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXIuY3BwCmluZGV4IDBiYzlkYTIuLjBkZjgwMTMgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwCisrKyBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIu
Y3BwCkBAIC01Miw2ICs1Miw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFdvcmtlcjo6V29ya2Vy
KGNvbnN0IFN0cmluZyYgdXJsLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNl
cHRpb25Db2RlJiBlYykKICAgICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0LCB0aGlzKQogICAg
ICwgbV9jb250ZXh0UHJveHkoV29ya2VyQ29udGV4dFByb3h5OjpjcmVhdGUodGhpcykpCisgICAg
LCBtX3VuY29uZmlybWVkTWVzc2FnZUNvdW50KDApCisgICAgLCBtX3dvcmtlckNvbnRleHRIYWRQ
ZW5kaW5nQWN0aXZpdHkoZmFsc2UpCisgICAgLCBtX2hhc0Vycm9yKGZhbHNlKQogewogICAgIG1f
c2NyaXB0VVJMID0gY29udGV4dC0+Y29tcGxldGVVUkwodXJsKTsKICAgICBpZiAodXJsLmlzRW1w
dHkoKSB8fCAhbV9zY3JpcHRVUkwuaXNWYWxpZCgpKSB7CkBAIC04Nyw2ICs5MCw3IEBAIFdvcmtl
cjo6fldvcmtlcigpCiAKIHZvaWQgV29ya2VyOjpwb3N0TWVzc2FnZShjb25zdCBTdHJpbmcmIG1l
c3NhZ2UpCiB7CisgICAgbV91bmNvbmZpcm1lZE1lc3NhZ2VDb3VudCsrOwogICAgIG1fY29udGV4
dFByb3h5LT5wb3N0TWVzc2FnZVRvV29ya2VyQ29udGV4dChtZXNzYWdlKTsKIH0KIApAQCAtMTA4
LDE2ICsxMTIsMTggQEAgdm9pZCBXb3JrZXI6OnN0b3AoKQogCiBib29sIFdvcmtlcjo6aGFzUGVu
ZGluZ0FjdGl2aXR5KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9jb250ZXh0UHJveHktPmhhc1Bl
bmRpbmdBY3Rpdml0eSgpIHx8IEFjdGl2ZURPTU9iamVjdDo6aGFzUGVuZGluZ0FjdGl2aXR5KCk7
CisgICAgYm9vbCB3b3JrZXJDb250ZXh0SGFzUGVuZGluZ0FjdGl2aXR5ID0gIW1faGFzRXJyb3Ig
JiYgIW1fY29udGV4dFByb3h5LT53b3JrZXJDb250ZXh0QXNrZWRUb1Rlcm1pbmF0ZSgpICYmICht
X3VuY29uZmlybWVkTWVzc2FnZUNvdW50IHx8IG1fd29ya2VyQ29udGV4dEhhZFBlbmRpbmdBY3Rp
dml0eSk7CisgICAgcmV0dXJuIHdvcmtlckNvbnRleHRIYXNQZW5kaW5nQWN0aXZpdHkgfHwgQWN0
aXZlRE9NT2JqZWN0OjpoYXNQZW5kaW5nQWN0aXZpdHkoKTsKIH0KIAogdm9pZCBXb3JrZXI6Om5v
dGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKiB1bnVzZWRSZXNvdXJjZSkKIHsKICAgICBBU1NF
UlRfVU5VU0VEKHVudXNlZFJlc291cmNlLCB1bnVzZWRSZXNvdXJjZSA9PSBtX2NhY2hlZFNjcmlw
dCk7CiAKLSAgICBpZiAobV9jYWNoZWRTY3JpcHQtPmVycm9yT2NjdXJyZWQoKSkKKyAgICBpZiAo
bV9jYWNoZWRTY3JpcHQtPmVycm9yT2NjdXJyZWQoKSkgeworICAgICAgICBtX2hhc0Vycm9yID0g
dHJ1ZTsKICAgICAgICAgZGlzcGF0Y2hFcnJvckV2ZW50KCk7Ci0gICAgZWxzZQorICAgIH0gZWxz
ZQogICAgICAgICBtX2NvbnRleHRQcm94eS0+c3RhcnRXb3JrZXJDb250ZXh0KG1fc2NyaXB0VVJM
LCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnVzZXJBZ2VudChtX3NjcmlwdFVSTCksIG1fY2Fj
aGVkU2NyaXB0LT5zY3JpcHQoKSk7CiAKICAgICBtX2NhY2hlZFNjcmlwdC0+cmVtb3ZlQ2xpZW50
KHRoaXMpOwpAQCAtMjA1LDYgKzIxMSwxNSBAQCB2b2lkIFdvcmtlcjo6ZGlzcGF0Y2hNZXNzYWdl
KGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKICAgICBkaXNwYXRjaEV2ZW50KGV2dC5yZWxlYXNlKCks
IGVjKTsKICAgICBBU1NFUlQoIWVjKTsKIH0KKyAgICAKK3ZvaWQgV29ya2VyOjpyZXBvcnRQZW5k
aW5nQWN0aXZpdHkoYm9vbCBjb25maXJtaW5nTWVzc2FnZSwgYm9vbCBoYXNQZW5kaW5nQWN0aXZp
dHkpCit7CisgICAgaWYgKGNvbmZpcm1pbmdNZXNzYWdlKSB7CisgICAgICAgIEFTU0VSVChtX3Vu
Y29uZmlybWVkTWVzc2FnZUNvdW50KTsKKyAgICAgICAgLS1tX3VuY29uZmlybWVkTWVzc2FnZUNv
dW50OworICAgIH0KKyAgICBtX3dvcmtlckNvbnRleHRIYWRQZW5kaW5nQWN0aXZpdHkgPSBoYXNQ
ZW5kaW5nQWN0aXZpdHk7Cit9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5oIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5oCmlu
ZGV4IGQwNWY5ZDUuLjkxYmQ3ZmMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIu
aAorKysgYi9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmgKQEAgLTg2LDYgKzg2LDggQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHNldE9uZXJyb3IoUGFzc1JlZlB0cjxFdmVudExp
c3RlbmVyPiBldmVudExpc3RlbmVyKSB7IG1fb25FcnJvckxpc3RlbmVyID0gZXZlbnRMaXN0ZW5l
cjsgfQogICAgICAgICBFdmVudExpc3RlbmVyKiBvbmVycm9yKCkgY29uc3QgeyByZXR1cm4gbV9v
bkVycm9yTGlzdGVuZXIuZ2V0KCk7IH0KIAorICAgICAgICB2b2lkIHJlcG9ydFBlbmRpbmdBY3Rp
dml0eShib29sIGNvbmZpcm1pbmdNZXNzYWdlLCBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSk7CisK
ICAgICBwcml2YXRlOgogICAgICAgICBXb3JrZXIoY29uc3QgU3RyaW5nJiwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIEV4Y2VwdGlvbkNvZGUmKTsKIApAQCAtOTksOSArMTAxLDE0IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBXb3JrZXJDb250ZXh0UHJveHkqIG1fY29udGV4dFBy
b3h5OyAvLyBUaGUgcHJveHkgb3V0bGl2ZXMgdGhlIHdvcmtlciB0byBwZXJmb3JtIHRocmVhZCBz
aHV0ZG93bi4KIAorICAgICAgICB1bnNpZ25lZCBtX3VuY29uZmlybWVkTWVzc2FnZUNvdW50OyAv
LyBVbmNvbmZpcm1lZCBtZXNzYWdlcyBmcm9tIHdvcmtlciBvYmplY3QgdG8gd29ya2VyIHRocmVh
ZC4KKyAgICAgICAgYm9vbCBtX3dvcmtlckNvbnRleHRIYWRQZW5kaW5nQWN0aXZpdHk7IC8vIFRo
ZSBsYXRlc3QgY29uZmlybWF0aW9uIGZyb20gd29ya2VyIGNvbnRleHQgcmVwb3J0ZWQgdGhhdCBp
dCB3YXMgc3RpbGwgYWN0aXZlLgorCiAgICAgICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBtX29u
TWVzc2FnZUxpc3RlbmVyOwogICAgICAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbV9vbkVycm9y
TGlzdGVuZXI7CiAgICAgICAgIEV2ZW50TGlzdGVuZXJzTWFwIG1fZXZlbnRMaXN0ZW5lcnM7CisK
KyAgICAgICAgYm9vbCBtX2hhc0Vycm9yOwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0UHJveHkuaCBiL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0UHJveHkuaAppbmRleCBjOGY1NzYxLi5iZDgzNDNi
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dFByb3h5LmgKKysrIGIv
V2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHRQcm94eS5oCkBAIC01Miw5ICs1Miw5IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1dv
cmtlckNvbnRleHQoY29uc3QgU3RyaW5nJikgPSAwOwogCi0gICAgICAgIHZpcnR1YWwgYm9vbCBo
YXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCA9IDA7Ci0KICAgICAgICAgdmlydHVhbCB2b2lkIHdv
cmtlck9iamVjdERlc3Ryb3llZCgpID0gMDsKKyAgICAgICAgCisgICAgICAgIHZpcnR1YWwgYm9v
bCB3b3JrZXJDb250ZXh0QXNrZWRUb1Rlcm1pbmF0ZSgpIGNvbnN0ID0gMDsKICAgICB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
TWVzc2FnaW5nUHJveHkuY3BwIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5
LmNwcAppbmRleCBmYWNiMDhjLi40YWQ4NGE1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCisrKyBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNz
YWdpbmdQcm94eS5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZv
aWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopCiAgICAgewogICAgICAgICBX
b3JrZXIqIHdvcmtlck9iamVjdCA9IG1fbWVzc2FnaW5nUHJveHktPndvcmtlck9iamVjdCgpOwot
ICAgICAgICBpZiAoIXdvcmtlck9iamVjdCB8fCBtX21lc3NhZ2luZ1Byb3h5LT5hc2tlZFRvVGVy
bWluYXRlKCkpCisgICAgICAgIGlmICghd29ya2VyT2JqZWN0IHx8IG1fbWVzc2FnaW5nUHJveHkt
PndvcmtlckNvbnRleHRBc2tlZFRvVGVybWluYXRlKCkpCiAgICAgICAgICAgICByZXR1cm47CiAK
ICAgICAgICAgd29ya2VyT2JqZWN0LT5kaXNwYXRjaE1lc3NhZ2UobV9tZXNzYWdlKTsKQEAgLTEx
NSw3ICsxMTUsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAgICAgewotICAgICAgICBpZiAoIW1fbWVz
c2FnaW5nUHJveHktPmFza2VkVG9UZXJtaW5hdGUoKSkKKyAgICAgICAgaWYgKCFtX21lc3NhZ2lu
Z1Byb3h5LT53b3JrZXJDb250ZXh0QXNrZWRUb1Rlcm1pbmF0ZSgpKQogICAgICAgICAgICAgY29u
dGV4dC0+cmVwb3J0RXhjZXB0aW9uKG1fZXJyb3JNZXNzYWdlLCBtX2xpbmVOdW1iZXIsIG1fc291
cmNlVVJMKTsKICAgICB9CiAKQEAgLTE4MCw4ICsxODAsNiBAQCBXb3JrZXJDb250ZXh0UHJveHkq
IFdvcmtlckNvbnRleHRQcm94eTo6Y3JlYXRlKFdvcmtlciogd29ya2VyKQogV29ya2VyTWVzc2Fn
aW5nUHJveHk6Oldvcmtlck1lc3NhZ2luZ1Byb3h5KFdvcmtlciogd29ya2VyT2JqZWN0KQogICAg
IDogbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KHdvcmtlck9iamVjdC0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpKQogICAgICwgbV93b3JrZXJPYmplY3Qod29ya2VyT2JqZWN0KQotICAgICwgbV91
bmNvbmZpcm1lZE1lc3NhZ2VDb3VudCgwKQotICAgICwgbV93b3JrZXJUaHJlYWRIYWRQZW5kaW5n
QWN0aXZpdHkoZmFsc2UpCiAgICAgLCBtX2Fza2VkVG9UZXJtaW5hdGUoZmFsc2UpCiB7CiAgICAg
QVNTRVJUKG1fd29ya2VyT2JqZWN0KTsKQEAgLTIxNCw3ICsyMTIsNiBAQCB2b2lkIFdvcmtlck1l
c3NhZ2luZ1Byb3h5Ojpwb3N0TWVzc2FnZVRvV29ya2VyQ29udGV4dChjb25zdCBTdHJpbmcmIG1l
c3NhZ2UpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX3dvcmtlclRocmVhZCkgewotICAg
ICAgICArK21fdW5jb25maXJtZWRNZXNzYWdlQ291bnQ7CiAgICAgICAgIG1fd29ya2VyVGhyZWFk
LT5ydW5Mb29wKCkucG9zdFRhc2soTWVzc2FnZVdvcmtlckNvbnRleHRUYXNrOjpjcmVhdGUobWVz
c2FnZSkpOwogICAgIH0gZWxzZQogICAgICAgICBtX3F1ZXVlZEVhcmx5VGFza3MuYXBwZW5kKE1l
c3NhZ2VXb3JrZXJDb250ZXh0VGFzazo6Y3JlYXRlKG1lc3NhZ2UpKTsKQEAgLTI0Niw3ICsyNDMs
NyBAQCB2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmpl
Y3QoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZwogICAgIAogc3RhdGljIHZvaWQgcG9zdENvbnNv
bGVNZXNzYWdlVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBXb3JrZXJNZXNz
YWdpbmdQcm94eSogbWVzc2FnaW5nUHJveHksIE1lc3NhZ2VEZXN0aW5hdGlvbiBkZXN0aW5hdGlv
biwgTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5n
JiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkK
IHsKLSAgICBpZiAobWVzc2FnaW5nUHJveHktPmFza2VkVG9UZXJtaW5hdGUoKSkKKyAgICBpZiAo
bWVzc2FnaW5nUHJveHktPndvcmtlckNvbnRleHRBc2tlZFRvVGVybWluYXRlKCkpCiAgICAgICAg
IHJldHVybjsKICAgICBjb250ZXh0LT5hZGRNZXNzYWdlKGRlc3RpbmF0aW9uLCBzb3VyY2UsIGxl
dmVsLCBtZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwpOwogfQpAQCAtMjY0LDExICsyNjEs
OSBAQCB2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojp3b3JrZXJUaHJlYWRDcmVhdGVkKFBhc3NS
ZWZQdHI8V29ya2VyVGhyZWFkPiB3b3JrZXJUaAogICAgICAgICAvLyBXb3JrZXIudGVybWluYXRl
KCkgY291bGQgYmUgY2FsbGVkIGZyb20gSlMgYmVmb3JlIHRoZSB0aHJlYWQgd2FzIGNyZWF0ZWQu
CiAgICAgICAgIG1fd29ya2VyVGhyZWFkLT5zdG9wKCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAg
dW5zaWduZWQgdGFza0NvdW50ID0gbV9xdWV1ZWRFYXJseVRhc2tzLnNpemUoKTsKLSAgICAgICAg
QVNTRVJUKCFtX3VuY29uZmlybWVkTWVzc2FnZUNvdW50KTsKLSAgICAgICAgbV91bmNvbmZpcm1l
ZE1lc3NhZ2VDb3VudCA9IHRhc2tDb3VudDsKLSAgICAgICAgbV93b3JrZXJUaHJlYWRIYWRQZW5k
aW5nQWN0aXZpdHkgPSB0cnVlOyAvLyBXb3JrZXIgaW5pdGlhbGl6YXRpb24gbWVhbnMgYSBwZW5k
aW5nIGFjdGl2aXR5LgorICAgICAgICBtX3dvcmtlck9iamVjdC0+cmVwb3J0UGVuZGluZ0FjdGl2
aXR5KGZhbHNlLCB0cnVlKTsgLy8gV29ya2VyIGluaXRpYWxpemF0aW9uIG1lYW5zIGEgcGVuZGlu
ZyBhY3Rpdml0eS4KIAorICAgICAgICB1bnNpZ25lZCB0YXNrQ291bnQgPSBtX3F1ZXVlZEVhcmx5
VGFza3Muc2l6ZSgpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdGFza0NvdW50
OyArK2kpCiAgICAgICAgICAgICBtX3dvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrKG1f
cXVldWVkRWFybHlUYXNrc1tpXSk7CiAgICAgICAgIG1fcXVldWVkRWFybHlUYXNrcy5jbGVhcigp
OwpAQCAtMzIzLDE3ICszMTgsMTAgQEAgdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cmVwb3J0
UGVuZGluZ0FjdGl2aXR5KGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KQogCiB2b2lkIFdvcmtlck1l
c3NhZ2luZ1Byb3h5OjpyZXBvcnRQZW5kaW5nQWN0aXZpdHlJbnRlcm5hbChib29sIGNvbmZpcm1p
bmdNZXNzYWdlLCBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSkKIHsKLSAgICBpZiAoY29uZmlybWlu
Z01lc3NhZ2UgJiYgIW1fYXNrZWRUb1Rlcm1pbmF0ZSkgewotICAgICAgICBBU1NFUlQobV91bmNv
bmZpcm1lZE1lc3NhZ2VDb3VudCk7Ci0gICAgICAgIC0tbV91bmNvbmZpcm1lZE1lc3NhZ2VDb3Vu
dDsKLSAgICB9Ci0KLSAgICBtX3dvcmtlclRocmVhZEhhZFBlbmRpbmdBY3Rpdml0eSA9IGhhc1Bl
bmRpbmdBY3Rpdml0eTsKLX0KLQotYm9vbCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6aGFzUGVuZGlu
Z0FjdGl2aXR5KCkgY29uc3QKLXsKLSAgICByZXR1cm4gKG1fdW5jb25maXJtZWRNZXNzYWdlQ291
bnQgfHwgbV93b3JrZXJUaHJlYWRIYWRQZW5kaW5nQWN0aXZpdHkpICYmICFtX2Fza2VkVG9UZXJt
aW5hdGU7CisgICAgaWYgKG1fYXNrZWRUb1Rlcm1pbmF0ZSkKKyAgICAgICAgcmV0dXJuOworICAg
IGlmIChtX3dvcmtlck9iamVjdCkKKyAgICAgICAgbV93b3JrZXJPYmplY3QtPnJlcG9ydFBlbmRp
bmdBY3Rpdml0eShjb25maXJtaW5nTWVzc2FnZSwgaGFzUGVuZGluZ0FjdGl2aXR5KTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ck1lc3NhZ2luZ1Byb3h5LmggYi9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHku
aAppbmRleCAzYzg1ODc2Li4yNGEzYjA0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyTWVzc2FnaW5nUHJveHkuaAorKysgYi9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5n
UHJveHkuaApAQCAtNTMsOCArNTMsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBzdGFydFdvcmtlckNvbnRleHQoY29uc3QgS1VSTCYgc2NyaXB0VVJMLCBjb25z
dCBTdHJpbmcmIHVzZXJBZ2VudCwgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlKTsKICAgICAgICAg
dmlydHVhbCB2b2lkIHRlcm1pbmF0ZVdvcmtlckNvbnRleHQoKTsKICAgICAgICAgdmlydHVhbCB2
b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0KGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7Ci0g
ICAgICAgIHZpcnR1YWwgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdDsKICAgICAgICAg
dmlydHVhbCB2b2lkIHdvcmtlck9iamVjdERlc3Ryb3llZCgpOworICAgICAgICB2aXJ0dWFsIGJv
b2wgd29ya2VyQ29udGV4dEFza2VkVG9UZXJtaW5hdGUoKSBjb25zdCB7IHJldHVybiBtX2Fza2Vk
VG9UZXJtaW5hdGU7IH0KIAogICAgICAgICAvLyBJbXBsZW1lbnRhdGlvbnMgb2YgV29ya2VyT2Jq
ZWN0UHJveHkuCiAgICAgICAgIC8vIChPbmx5IHVzZSB0aGVzZSBtZXRob2RzIGluIHRoZSB3b3Jr
ZXIgY29udGV4dCB0aHJlYWQuKQpAQCAtNzIsOSArNzIsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKICAgICAgICAgdm9pZCBjb25maXJtV29ya2VyVGhyZWFkTWVzc2FnZShib29sIGhhc1BlbmRp
bmdBY3Rpdml0eSk7CiAKLSAgICAgICAgLy8gT25seSB1c2UgdGhpcyBtZXRob2Qgb24gdGhlIHdv
cmtlciBvYmplY3QgdGhyZWFkLgotICAgICAgICBib29sIGFza2VkVG9UZXJtaW5hdGUoKSBjb25z
dCB7IHJldHVybiBtX2Fza2VkVG9UZXJtaW5hdGU7IH0KLQogICAgIHByaXZhdGU6CiAgICAgICAg
IGZyaWVuZCBjbGFzcyBNZXNzYWdlV29ya2VyVGFzazsKICAgICAgICAgZnJpZW5kIGNsYXNzIFdv
cmtlckNvbnRleHREZXN0cm95ZWRUYXNrOwpAQCAtOTAsOSArODcsNiBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIFdvcmtlciogbV93b3JrZXJPYmplY3Q7CiAgICAgICAgIFJlZlB0cjxX
b3JrZXJUaHJlYWQ+IG1fd29ya2VyVGhyZWFkOwogCi0gICAgICAgIHVuc2lnbmVkIG1fdW5jb25m
aXJtZWRNZXNzYWdlQ291bnQ7IC8vIFVuY29uZmlybWVkIG1lc3NhZ2VzIGZyb20gd29ya2VyIG9i
amVjdCB0byB3b3JrZXIgdGhyZWFkLgotICAgICAgICBib29sIG1fd29ya2VyVGhyZWFkSGFkUGVu
ZGluZ0FjdGl2aXR5OyAvLyBUaGUgbGF0ZXN0IGNvbmZpcm1hdGlvbiBmcm9tIHdvcmtlciB0aHJl
YWQgcmVwb3J0ZWQgdGhhdCBpdCB3YXMgc3RpbGwgYWN0aXZlLgotCiAgICAgICAgIGJvb2wgbV9h
c2tlZFRvVGVybWluYXRlOwogCiAgICAgICAgIFZlY3RvcjxSZWZQdHI8U2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6VGFzaz4gPiBtX3F1ZXVlZEVhcmx5VGFza3M7IC8vIFRhc2tzIGFyZSBxdWV1ZWQg
aGVyZSB1bnRpbCB0aGVyZSdzIGEgdGhyZWFkIG9iamVjdCBjcmVhdGVkLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>28084</attachid>
            <date>2009-02-27 10:58:23 -0800</date>
            <delta_ts>2009-02-27 11:48:21 -0800</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>WorkerActivity8</filename>
            <type>text/plain</type>
            <size>11553</size>
            <attacher name="Jian Li">jianli</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MzNkMGMwNC4uMjJmYWExOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAwOS0wMi0yNyAgSmlhbiBMaSAgPGpp
YW5saUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgTW92ZSB0aGUgbG9naWMgdG8gZG8gdGhlIHVuY29uZmlybWVkIG1lc3NhZ2Ug
Y291bnQgYW5kIHBlbmRpbmcgYWN0aXZpdHkgc2V0dGluZyBmcm9tIFdvcmtlck1lc3NhZ2luZ1By
b3h5IHRvIFdvcmtlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTI0MTUyCisKKyAgICAgICAgKiBsb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFk
QnJpZGdlOjptYWluVGhyZWFkQ3JlYXRlTG9hZGVyKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXI6Oldvcmtlcik6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXI6OnBvc3RNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlcjo6aGFz
UGVuZGluZ0FjdGl2aXR5KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlcjo6bm90aWZ5RmluaXNo
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyOjpyZXBvcnRQZW5kaW5nQWN0aXZpdHkpOgor
ICAgICAgICAqIHdvcmtlcnMvV29ya2VyLmg6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJDb250
ZXh0UHJveHkuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VXb3JrZXJUYXNrOjpwZXJmb3JtVGFzayk6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJFeGNlcHRpb25UYXNrOjpwZXJmb3JtVGFzayk6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJNZXNzYWdpbmdQcm94eTo6V29ya2VyTWVzc2FnaW5nUHJveHkpOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RNZXNzYWdlVG9Xb3Jr
ZXJDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OnBvc3RDb25zb2xlTWVzc2FnZVRhc2spOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6OndvcmtlclRocmVhZENyZWF0
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6OnJlcG9ydFBlbmRp
bmdBY3Rpdml0eUludGVybmFsKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1By
b3h5Lmg6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJNZXNzYWdpbmdQcm94eTo6d29ya2VyQ29u
dGV4dEFza2VkVG9UZXJtaW5hdGUpOgorCiAyMDA5LTAyLTI0ICBEYXZpZCBMZXZpbiAgPGxldmlu
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKGJ1aWxkIGZpeCku
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcCBi
L1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IGQ4MDFjMmMu
LjRlMDVjMWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2Fk
ZXIuY3BwCisrKyBiL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCkBA
IC05Miw3ICs5Miw3IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJy
aWRnZTo6bWFpblRocmVhZENyZWF0ZUxvYWRlcihTY3JpcHRFeGVjCiAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKICAgICBBU1NFUlQoY29udGV4dC0+aXNEb2N1bWVudCgpKTsKIAotICAgIGlm
ICh0aGlzUHRyLT5tX21lc3NhZ2luZ1Byb3h5LmFza2VkVG9UZXJtaW5hdGUoKSkKKyAgICBpZiAo
dGhpc1B0ci0+bV9tZXNzYWdpbmdQcm94eS53b3JrZXJDb250ZXh0QXNrZWRUb1Rlcm1pbmF0ZSgp
KQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBGSVhNRTogdGhlIGNyZWF0ZWQgbG9hZGVyIGhh
cyBubyBrbm93bGVkZ2Ugb2YgdGhlIG9yaWdpbiBvZiB0aGUgd29ya2VyIGRvaW5nIHRoZSBsb2Fk
IHJlcXVlc3QuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcCBiL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXIuY3BwCmluZGV4IDBiYzlkYTIuLjRmMDRiNGUgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwCisrKyBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIu
Y3BwCkBAIC01Miw2ICs1Miw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFdvcmtlcjo6V29ya2Vy
KGNvbnN0IFN0cmluZyYgdXJsLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNl
cHRpb25Db2RlJiBlYykKICAgICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0LCB0aGlzKQogICAg
ICwgbV9jb250ZXh0UHJveHkoV29ya2VyQ29udGV4dFByb3h5OjpjcmVhdGUodGhpcykpCisgICAg
LCBtX3VuY29uZmlybWVkTWVzc2FnZUNvdW50KDApCisgICAgLCBtX3dvcmtlckNvbnRleHRIYWRQ
ZW5kaW5nQWN0aXZpdHkoZmFsc2UpCisgICAgLCBtX2NvbnRleHRDcmVhdGlvbkZhaWxlZChmYWxz
ZSkKIHsKICAgICBtX3NjcmlwdFVSTCA9IGNvbnRleHQtPmNvbXBsZXRlVVJMKHVybCk7CiAgICAg
aWYgKHVybC5pc0VtcHR5KCkgfHwgIW1fc2NyaXB0VVJMLmlzVmFsaWQoKSkgewpAQCAtODcsNiAr
OTAsNyBAQCBXb3JrZXI6On5Xb3JrZXIoKQogCiB2b2lkIFdvcmtlcjo6cG9zdE1lc3NhZ2UoY29u
c3QgU3RyaW5nJiBtZXNzYWdlKQogeworICAgIG1fdW5jb25maXJtZWRNZXNzYWdlQ291bnQrKzsK
ICAgICBtX2NvbnRleHRQcm94eS0+cG9zdE1lc3NhZ2VUb1dvcmtlckNvbnRleHQobWVzc2FnZSk7
CiB9CiAKQEAgLTEwOCwxNiArMTEyLDE4IEBAIHZvaWQgV29ya2VyOjpzdG9wKCkKIAogYm9vbCBX
b3JrZXI6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fY29udGV4
dFByb3h5LT5oYXNQZW5kaW5nQWN0aXZpdHkoKSB8fCBBY3RpdmVET01PYmplY3Q6Omhhc1BlbmRp
bmdBY3Rpdml0eSgpOworICAgIGJvb2wgd29ya2VyQ29udGV4dEhhc1BlbmRpbmdBY3Rpdml0eSA9
ICFtX2NvbnRleHRDcmVhdGlvbkZhaWxlZCAmJiAhbV9jb250ZXh0UHJveHktPndvcmtlckNvbnRl
eHRBc2tlZFRvVGVybWluYXRlKCkgJiYgKG1fdW5jb25maXJtZWRNZXNzYWdlQ291bnQgfHwgbV93
b3JrZXJDb250ZXh0SGFkUGVuZGluZ0FjdGl2aXR5KTsKKyAgICByZXR1cm4gd29ya2VyQ29udGV4
dEhhc1BlbmRpbmdBY3Rpdml0eSB8fCBBY3RpdmVET01PYmplY3Q6Omhhc1BlbmRpbmdBY3Rpdml0
eSgpOwogfQogCiB2b2lkIFdvcmtlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqIHVu
dXNlZFJlc291cmNlKQogewogICAgIEFTU0VSVF9VTlVTRUQodW51c2VkUmVzb3VyY2UsIHVudXNl
ZFJlc291cmNlID09IG1fY2FjaGVkU2NyaXB0KTsKIAotICAgIGlmIChtX2NhY2hlZFNjcmlwdC0+
ZXJyb3JPY2N1cnJlZCgpKQorICAgIGlmIChtX2NhY2hlZFNjcmlwdC0+ZXJyb3JPY2N1cnJlZCgp
KSB7CisgICAgICAgIG1fY29udGV4dENyZWF0aW9uRmFpbGVkID0gdHJ1ZTsKICAgICAgICAgZGlz
cGF0Y2hFcnJvckV2ZW50KCk7Ci0gICAgZWxzZQorICAgIH0gZWxzZQogICAgICAgICBtX2NvbnRl
eHRQcm94eS0+c3RhcnRXb3JrZXJDb250ZXh0KG1fc2NyaXB0VVJMLCBzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCktPnVzZXJBZ2VudChtX3NjcmlwdFVSTCksIG1fY2FjaGVkU2NyaXB0LT5zY3JpcHQo
KSk7CiAKICAgICBtX2NhY2hlZFNjcmlwdC0+cmVtb3ZlQ2xpZW50KHRoaXMpOwpAQCAtMjA1LDYg
KzIxMSwxNSBAQCB2b2lkIFdvcmtlcjo6ZGlzcGF0Y2hNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVz
c2FnZSkKICAgICBkaXNwYXRjaEV2ZW50KGV2dC5yZWxlYXNlKCksIGVjKTsKICAgICBBU1NFUlQo
IWVjKTsKIH0KKyAgICAKK3ZvaWQgV29ya2VyOjpyZXBvcnRQZW5kaW5nQWN0aXZpdHkoYm9vbCBj
b25maXJtaW5nTWVzc2FnZSwgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkpCit7CisgICAgaWYgKGNv
bmZpcm1pbmdNZXNzYWdlKSB7CisgICAgICAgIEFTU0VSVChtX3VuY29uZmlybWVkTWVzc2FnZUNv
dW50KTsKKyAgICAgICAgLS1tX3VuY29uZmlybWVkTWVzc2FnZUNvdW50OworICAgIH0KKyAgICBt
X3dvcmtlckNvbnRleHRIYWRQZW5kaW5nQWN0aXZpdHkgPSBoYXNQZW5kaW5nQWN0aXZpdHk7Cit9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS93b3JrZXJz
L1dvcmtlci5oIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5oCmluZGV4IGQwNWY5ZDUuLjFjMGVh
OWEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaAorKysgYi9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyLmgKQEAgLTg2LDYgKzg2LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICB2b2lkIHNldE9uZXJyb3IoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBldmVudExpc3Rl
bmVyKSB7IG1fb25FcnJvckxpc3RlbmVyID0gZXZlbnRMaXN0ZW5lcjsgfQogICAgICAgICBFdmVu
dExpc3RlbmVyKiBvbmVycm9yKCkgY29uc3QgeyByZXR1cm4gbV9vbkVycm9yTGlzdGVuZXIuZ2V0
KCk7IH0KIAorICAgICAgICB2b2lkIHJlcG9ydFBlbmRpbmdBY3Rpdml0eShib29sIGNvbmZpcm1p
bmdNZXNzYWdlLCBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSk7CisKICAgICBwcml2YXRlOgogICAg
ICAgICBXb3JrZXIoY29uc3QgU3RyaW5nJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV4Y2Vw
dGlvbkNvZGUmKTsKIApAQCAtOTksOSArMTAxLDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
ICAgICAgICBXb3JrZXJDb250ZXh0UHJveHkqIG1fY29udGV4dFByb3h5OyAvLyBUaGUgcHJveHkg
b3V0bGl2ZXMgdGhlIHdvcmtlciB0byBwZXJmb3JtIHRocmVhZCBzaHV0ZG93bi4KIAorICAgICAg
ICB1bnNpZ25lZCBtX3VuY29uZmlybWVkTWVzc2FnZUNvdW50OyAvLyBVbmNvbmZpcm1lZCBtZXNz
YWdlcyBmcm9tIHdvcmtlciBvYmplY3QgdG8gd29ya2VyIHRocmVhZC4KKyAgICAgICAgYm9vbCBt
X3dvcmtlckNvbnRleHRIYWRQZW5kaW5nQWN0aXZpdHk7IC8vIFRoZSBsYXRlc3QgY29uZmlybWF0
aW9uIGZyb20gd29ya2VyIGNvbnRleHQgcmVwb3J0ZWQgdGhhdCBpdCB3YXMgc3RpbGwgYWN0aXZl
LgorCiAgICAgICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBtX29uTWVzc2FnZUxpc3RlbmVyOwog
ICAgICAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbV9vbkVycm9yTGlzdGVuZXI7CiAgICAgICAg
IEV2ZW50TGlzdGVuZXJzTWFwIG1fZXZlbnRMaXN0ZW5lcnM7CisKKyAgICAgICAgYm9vbCBtX2Nv
bnRleHRDcmVhdGlvbkZhaWxlZDsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dFByb3h5LmggYi9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyQ29udGV4dFByb3h5LmgKaW5kZXggYzhmNTc2MS4uYmQ4MzQzYiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHRQcm94eS5oCisrKyBiL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0UHJveHkuaApAQCAtNTIsOSArNTIsOSBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJD
b250ZXh0KGNvbnN0IFN0cmluZyYpID0gMDsKIAotICAgICAgICB2aXJ0dWFsIGJvb2wgaGFzUGVu
ZGluZ0FjdGl2aXR5KCkgY29uc3QgPSAwOwotCiAgICAgICAgIHZpcnR1YWwgdm9pZCB3b3JrZXJP
YmplY3REZXN0cm95ZWQoKSA9IDA7CisgICAgICAgIAorICAgICAgICB2aXJ0dWFsIGJvb2wgd29y
a2VyQ29udGV4dEFza2VkVG9UZXJtaW5hdGUoKSBjb25zdCA9IDA7CiAgICAgfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3Nh
Z2luZ1Byb3h5LmNwcCBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAK
aW5kZXggZmFjYjA4Yy4uNGFkODRhNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ck1lc3NhZ2luZ1Byb3h5LmNwcAorKysgYi9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5n
UHJveHkuY3BwCkBAIC04Niw3ICs4Niw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBl
cmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKQogICAgIHsKICAgICAgICAgV29ya2Vy
KiB3b3JrZXJPYmplY3QgPSBtX21lc3NhZ2luZ1Byb3h5LT53b3JrZXJPYmplY3QoKTsKLSAgICAg
ICAgaWYgKCF3b3JrZXJPYmplY3QgfHwgbV9tZXNzYWdpbmdQcm94eS0+YXNrZWRUb1Rlcm1pbmF0
ZSgpKQorICAgICAgICBpZiAoIXdvcmtlck9iamVjdCB8fCBtX21lc3NhZ2luZ1Byb3h5LT53b3Jr
ZXJDb250ZXh0QXNrZWRUb1Rlcm1pbmF0ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAg
ICAgIHdvcmtlck9iamVjdC0+ZGlzcGF0Y2hNZXNzYWdlKG1fbWVzc2FnZSk7CkBAIC0xMTUsNyAr
MTE1LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgIHsKLSAgICAgICAgaWYgKCFtX21lc3NhZ2lu
Z1Byb3h5LT5hc2tlZFRvVGVybWluYXRlKCkpCisgICAgICAgIGlmICghbV9tZXNzYWdpbmdQcm94
eS0+d29ya2VyQ29udGV4dEFza2VkVG9UZXJtaW5hdGUoKSkKICAgICAgICAgICAgIGNvbnRleHQt
PnJlcG9ydEV4Y2VwdGlvbihtX2Vycm9yTWVzc2FnZSwgbV9saW5lTnVtYmVyLCBtX3NvdXJjZVVS
TCk7CiAgICAgfQogCkBAIC0xODAsOCArMTgwLDYgQEAgV29ya2VyQ29udGV4dFByb3h5KiBXb3Jr
ZXJDb250ZXh0UHJveHk6OmNyZWF0ZShXb3JrZXIqIHdvcmtlcikKIFdvcmtlck1lc3NhZ2luZ1By
b3h5OjpXb3JrZXJNZXNzYWdpbmdQcm94eShXb3JrZXIqIHdvcmtlck9iamVjdCkKICAgICA6IG1f
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCh3b3JrZXJPYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSkKICAgICAsIG1fd29ya2VyT2JqZWN0KHdvcmtlck9iamVjdCkKLSAgICAsIG1fdW5jb25m
aXJtZWRNZXNzYWdlQ291bnQoMCkKLSAgICAsIG1fd29ya2VyVGhyZWFkSGFkUGVuZGluZ0FjdGl2
aXR5KGZhbHNlKQogICAgICwgbV9hc2tlZFRvVGVybWluYXRlKGZhbHNlKQogewogICAgIEFTU0VS
VChtX3dvcmtlck9iamVjdCk7CkBAIC0yMTQsNyArMjEyLDYgQEAgdm9pZCBXb3JrZXJNZXNzYWdp
bmdQcm94eTo6cG9zdE1lc3NhZ2VUb1dvcmtlckNvbnRleHQoY29uc3QgU3RyaW5nJiBtZXNzYWdl
KQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV93b3JrZXJUaHJlYWQpIHsKLSAgICAgICAg
KyttX3VuY29uZmlybWVkTWVzc2FnZUNvdW50OwogICAgICAgICBtX3dvcmtlclRocmVhZC0+cnVu
TG9vcCgpLnBvc3RUYXNrKE1lc3NhZ2VXb3JrZXJDb250ZXh0VGFzazo6Y3JlYXRlKG1lc3NhZ2Up
KTsKICAgICB9IGVsc2UKICAgICAgICAgbV9xdWV1ZWRFYXJseVRhc2tzLmFwcGVuZChNZXNzYWdl
V29ya2VyQ29udGV4dFRhc2s6OmNyZWF0ZShtZXNzYWdlKSk7CkBAIC0yNDYsNyArMjQzLDcgQEAg
dm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KGNv
bnN0IFN0cmluZyYgZXJyb3JNZXNzYWcKICAgICAKIHN0YXRpYyB2b2lkIHBvc3RDb25zb2xlTWVz
c2FnZVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgV29ya2VyTWVzc2FnaW5n
UHJveHkqIG1lc3NhZ2luZ1Byb3h5LCBNZXNzYWdlRGVzdGluYXRpb24gZGVzdGluYXRpb24sIE1l
c3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCiB7Ci0g
ICAgaWYgKG1lc3NhZ2luZ1Byb3h5LT5hc2tlZFRvVGVybWluYXRlKCkpCisgICAgaWYgKG1lc3Nh
Z2luZ1Byb3h5LT53b3JrZXJDb250ZXh0QXNrZWRUb1Rlcm1pbmF0ZSgpKQogICAgICAgICByZXR1
cm47CiAgICAgY29udGV4dC0+YWRkTWVzc2FnZShkZXN0aW5hdGlvbiwgc291cmNlLCBsZXZlbCwg
bWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMKTsKIH0KQEAgLTI2NCwxMSArMjYxLDkgQEAg
dm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6d29ya2VyVGhyZWFkQ3JlYXRlZChQYXNzUmVmUHRy
PFdvcmtlclRocmVhZD4gd29ya2VyVGgKICAgICAgICAgLy8gV29ya2VyLnRlcm1pbmF0ZSgpIGNv
dWxkIGJlIGNhbGxlZCBmcm9tIEpTIGJlZm9yZSB0aGUgdGhyZWFkIHdhcyBjcmVhdGVkLgogICAg
ICAgICBtX3dvcmtlclRocmVhZC0+c3RvcCgpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHVuc2ln
bmVkIHRhc2tDb3VudCA9IG1fcXVldWVkRWFybHlUYXNrcy5zaXplKCk7Ci0gICAgICAgIEFTU0VS
VCghbV91bmNvbmZpcm1lZE1lc3NhZ2VDb3VudCk7Ci0gICAgICAgIG1fdW5jb25maXJtZWRNZXNz
YWdlQ291bnQgPSB0YXNrQ291bnQ7Ci0gICAgICAgIG1fd29ya2VyVGhyZWFkSGFkUGVuZGluZ0Fj
dGl2aXR5ID0gdHJ1ZTsgLy8gV29ya2VyIGluaXRpYWxpemF0aW9uIG1lYW5zIGEgcGVuZGluZyBh
Y3Rpdml0eS4KKyAgICAgICAgbV93b3JrZXJPYmplY3QtPnJlcG9ydFBlbmRpbmdBY3Rpdml0eShm
YWxzZSwgdHJ1ZSk7IC8vIFdvcmtlciBpbml0aWFsaXphdGlvbiBtZWFucyBhIHBlbmRpbmcgYWN0
aXZpdHkuCiAKKyAgICAgICAgdW5zaWduZWQgdGFza0NvdW50ID0gbV9xdWV1ZWRFYXJseVRhc2tz
LnNpemUoKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRhc2tDb3VudDsgKytp
KQogICAgICAgICAgICAgbV93b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFzayhtX3F1ZXVl
ZEVhcmx5VGFza3NbaV0pOwogICAgICAgICBtX3F1ZXVlZEVhcmx5VGFza3MuY2xlYXIoKTsKQEAg
LTMyMywxNyArMzE4LDEwIEBAIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnJlcG9ydFBlbmRp
bmdBY3Rpdml0eShib29sIGhhc1BlbmRpbmdBY3Rpdml0eSkKIAogdm9pZCBXb3JrZXJNZXNzYWdp
bmdQcm94eTo6cmVwb3J0UGVuZGluZ0FjdGl2aXR5SW50ZXJuYWwoYm9vbCBjb25maXJtaW5nTWVz
c2FnZSwgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkpCiB7Ci0gICAgaWYgKGNvbmZpcm1pbmdNZXNz
YWdlICYmICFtX2Fza2VkVG9UZXJtaW5hdGUpIHsKLSAgICAgICAgQVNTRVJUKG1fdW5jb25maXJt
ZWRNZXNzYWdlQ291bnQpOwotICAgICAgICAtLW1fdW5jb25maXJtZWRNZXNzYWdlQ291bnQ7Ci0g
ICAgfQotCi0gICAgbV93b3JrZXJUaHJlYWRIYWRQZW5kaW5nQWN0aXZpdHkgPSBoYXNQZW5kaW5n
QWN0aXZpdHk7Ci19Ci0KLWJvb2wgV29ya2VyTWVzc2FnaW5nUHJveHk6Omhhc1BlbmRpbmdBY3Rp
dml0eSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIChtX3VuY29uZmlybWVkTWVzc2FnZUNvdW50IHx8
IG1fd29ya2VyVGhyZWFkSGFkUGVuZGluZ0FjdGl2aXR5KSAmJiAhbV9hc2tlZFRvVGVybWluYXRl
OworICAgIGlmIChtX2Fza2VkVG9UZXJtaW5hdGUpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAo
bV93b3JrZXJPYmplY3QpCisgICAgICAgIG1fd29ya2VyT2JqZWN0LT5yZXBvcnRQZW5kaW5nQWN0
aXZpdHkoY29uZmlybWluZ01lc3NhZ2UsIGhhc1BlbmRpbmdBY3Rpdml0eSk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNz
YWdpbmdQcm94eS5oIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmgKaW5k
ZXggM2M4NTg3Ni4uMjRhM2IwNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1l
c3NhZ2luZ1Byb3h5LmgKKysrIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5
LmgKQEAgLTUzLDggKzUzLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFs
IHZvaWQgc3RhcnRXb3JrZXJDb250ZXh0KGNvbnN0IEtVUkwmIHNjcmlwdFVSTCwgY29uc3QgU3Ry
aW5nJiB1c2VyQWdlbnQsIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSk7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCB0ZXJtaW5hdGVXb3JrZXJDb250ZXh0KCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBw
b3N0TWVzc2FnZVRvV29ya2VyQ29udGV4dChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwotICAgICAg
ICB2aXJ0dWFsIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3Q7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCB3b3JrZXJPYmplY3REZXN0cm95ZWQoKTsKKyAgICAgICAgdmlydHVhbCBib29sIHdv
cmtlckNvbnRleHRBc2tlZFRvVGVybWluYXRlKCkgY29uc3QgeyByZXR1cm4gbV9hc2tlZFRvVGVy
bWluYXRlOyB9CiAKICAgICAgICAgLy8gSW1wbGVtZW50YXRpb25zIG9mIFdvcmtlck9iamVjdFBy
b3h5LgogICAgICAgICAvLyAoT25seSB1c2UgdGhlc2UgbWV0aG9kcyBpbiB0aGUgd29ya2VyIGNv
bnRleHQgdGhyZWFkLikKQEAgLTcyLDkgKzcyLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAg
ICAgICAgIHZvaWQgY29uZmlybVdvcmtlclRocmVhZE1lc3NhZ2UoYm9vbCBoYXNQZW5kaW5nQWN0
aXZpdHkpOwogCi0gICAgICAgIC8vIE9ubHkgdXNlIHRoaXMgbWV0aG9kIG9uIHRoZSB3b3JrZXIg
b2JqZWN0IHRocmVhZC4KLSAgICAgICAgYm9vbCBhc2tlZFRvVGVybWluYXRlKCkgY29uc3QgeyBy
ZXR1cm4gbV9hc2tlZFRvVGVybWluYXRlOyB9Ci0KICAgICBwcml2YXRlOgogICAgICAgICBmcmll
bmQgY2xhc3MgTWVzc2FnZVdvcmtlclRhc2s7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBXb3JrZXJD
b250ZXh0RGVzdHJveWVkVGFzazsKQEAgLTkwLDkgKzg3LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICBXb3JrZXIqIG1fd29ya2VyT2JqZWN0OwogICAgICAgICBSZWZQdHI8V29ya2Vy
VGhyZWFkPiBtX3dvcmtlclRocmVhZDsKIAotICAgICAgICB1bnNpZ25lZCBtX3VuY29uZmlybWVk
TWVzc2FnZUNvdW50OyAvLyBVbmNvbmZpcm1lZCBtZXNzYWdlcyBmcm9tIHdvcmtlciBvYmplY3Qg
dG8gd29ya2VyIHRocmVhZC4KLSAgICAgICAgYm9vbCBtX3dvcmtlclRocmVhZEhhZFBlbmRpbmdB
Y3Rpdml0eTsgLy8gVGhlIGxhdGVzdCBjb25maXJtYXRpb24gZnJvbSB3b3JrZXIgdGhyZWFkIHJl
cG9ydGVkIHRoYXQgaXQgd2FzIHN0aWxsIGFjdGl2ZS4KLQogICAgICAgICBib29sIG1fYXNrZWRU
b1Rlcm1pbmF0ZTsKIAogICAgICAgICBWZWN0b3I8UmVmUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ6OlRhc2s+ID4gbV9xdWV1ZWRFYXJseVRhc2tzOyAvLyBUYXNrcyBhcmUgcXVldWVkIGhlcmUg
dW50aWwgdGhlcmUncyBhIHRocmVhZCBvYmplY3QgY3JlYXRlZC4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>28096</attachid>
            <date>2009-02-27 12:09:21 -0800</date>
            <delta_ts>2009-02-27 12:12:06 -0800</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>ConfirmMessage</filename>
            <type>text/plain</type>
            <size>3502</size>
            <attacher name="Jian Li">jianli</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ODQ4ZWIzOC4uYWYwMzdmYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAwOS0wMi0yNyAgSmlhbiBMaSAgPGpp
YW5saUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIGNvbmZpcm1NZXNzYWdlRnJvbVdvcmtlck9iamVjdCB0byBXb3JrZXJP
YmplY3RQcm94eS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTI0MTUyCisKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VXb3JrZXJDb250ZXh0VGFzazo6cGVyZm9ybVRhc2sp
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6OmNvbmZpcm1NZXNzYWdl
RnJvbVdvcmtlck9iamVjdCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94
eS5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyT2JqZWN0UHJveHkuaDoKKwogMjAwOS0wMi0y
NyAgWWFlbCBBaGFyb24gIDx5YWVsLmFoYXJvbkBub2tpYS5jb20+CiAKICAgICAgICAgQWRkZWQg
YSByZWZyZXNoIGJ1dHRvbiB0byBzdG9yYWdlIHZpZXdzLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS93
b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcCBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJN
ZXNzYWdpbmdQcm94eS5jcHAKaW5kZXggZmFjYjA4Yy4uNWYxZGFkMCAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcAorKysgYi9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCkBAIC02Miw3ICs2Miw3IEBAIHByaXZhdGU6CiAK
ICAgICAgICAgY29udGV4dC0+ZGlzcGF0Y2hNZXNzYWdlKG1fbWVzc2FnZSk7CiAKLSAgICAgICAg
c3RhdGljX2Nhc3Q8V29ya2VyTWVzc2FnaW5nUHJveHkqPihjb250ZXh0LT50aHJlYWQoKS0+d29y
a2VyT2JqZWN0UHJveHkoKSktPmNvbmZpcm1Xb3JrZXJUaHJlYWRNZXNzYWdlKGNvbnRleHQtPmhh
c1BlbmRpbmdBY3Rpdml0eSgpKTsKKyAgICAgICAgY29udGV4dC0+dGhyZWFkKCktPndvcmtlck9i
amVjdFByb3h5KCktPmNvbmZpcm1NZXNzYWdlRnJvbVdvcmtlck9iamVjdChjb250ZXh0LT5oYXNQ
ZW5kaW5nQWN0aXZpdHkoKSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMzA5LDcgKzMwOSw3IEBA
IHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnRlcm1pbmF0ZVdvcmtlckNvbnRleHQoKQogICAg
ICAgICBtX3dvcmtlclRocmVhZC0+c3RvcCgpOwogfQogCi12b2lkIFdvcmtlck1lc3NhZ2luZ1By
b3h5Ojpjb25maXJtV29ya2VyVGhyZWFkTWVzc2FnZShib29sIGhhc1BlbmRpbmdBY3Rpdml0eSkK
K3ZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OmNvbmZpcm1NZXNzYWdlRnJvbVdvcmtlck9iamVj
dChib29sIGhhc1BlbmRpbmdBY3Rpdml0eSkKIHsKICAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQtPnBvc3RUYXNrKFdvcmtlclRocmVhZEFjdGl2aXR5UmVwb3J0VGFzazo6Y3JlYXRlKHRoaXMs
IHRydWUsIGhhc1BlbmRpbmdBY3Rpdml0eSkpOwogICAgIC8vIFdpbGwgZXhlY3V0ZSByZXBvcnRQ
ZW5kaW5nQWN0aXZpdHlJbnRlcm5hbCgpIG9uIGNvbnRleHQncyB0aHJlYWQuCmRpZmYgLS1naXQg
YS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuaCBiL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5oCmluZGV4IDNjODU4NzYuLjhkODFkZWIgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5oCisrKyBiL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5oCkBAIC02MSw2ICs2MSw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJPYmpl
Y3QoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RFeGNl
cHRpb25Ub1dvcmtlck9iamVjdChjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVO
dW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHBv
c3RDb25zb2xlTWVzc2FnZVRvV29ya2VyT2JqZWN0KE1lc3NhZ2VEZXN0aW5hdGlvbiwgTWVzc2Fn
ZVNvdXJjZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGludCBsaW5lTnVt
YmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBjb25m
aXJtTWVzc2FnZUZyb21Xb3JrZXJPYmplY3QoYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkpOwogICAg
ICAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0UGVuZGluZ0FjdGl2aXR5KGJvb2wgaGFzUGVuZGluZ0Fj
dGl2aXR5KTsKICAgICAgICAgdmlydHVhbCB2b2lkIHdvcmtlckNvbnRleHREZXN0cm95ZWQoKTsK
IApAQCAtNzAsOCArNzEsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdm9pZCB3
b3JrZXJUaHJlYWRDcmVhdGVkKFBhc3NSZWZQdHI8V29ya2VyVGhyZWFkPik7CiAKLSAgICAgICAg
dm9pZCBjb25maXJtV29ya2VyVGhyZWFkTWVzc2FnZShib29sIGhhc1BlbmRpbmdBY3Rpdml0eSk7
Ci0KICAgICAgICAgLy8gT25seSB1c2UgdGhpcyBtZXRob2Qgb24gdGhlIHdvcmtlciBvYmplY3Qg
dGhyZWFkLgogICAgICAgICBib29sIGFza2VkVG9UZXJtaW5hdGUoKSBjb25zdCB7IHJldHVybiBt
X2Fza2VkVG9UZXJtaW5hdGU7IH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ck9iamVjdFByb3h5LmggYi9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT2JqZWN0UHJveHkuaAppbmRl
eCA2MWFiYTczLi4zYjg2MDI4IDEwMDY0NAotLS0gYS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT2Jq
ZWN0UHJveHkuaAorKysgYi9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT2JqZWN0UHJveHkuaApAQCAt
NTAsNiArNTAsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdmlydHVhbCB2b2lk
IHBvc3RDb25zb2xlTWVzc2FnZVRvV29ya2VyT2JqZWN0KE1lc3NhZ2VEZXN0aW5hdGlvbiwgTWVz
c2FnZVNvdXJjZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGludCBsaW5l
TnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkgPSAwOwogCisgICAgICAgIHZpcnR1YWwg
dm9pZCBjb25maXJtTWVzc2FnZUZyb21Xb3JrZXJPYmplY3QoYm9vbCBoYXNQZW5kaW5nQWN0aXZp
dHkpID0gMDsKKwogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0UGVuZGluZ0FjdGl2aXR5KGJv
b2wgaGFzUGVuZGluZ0FjdGl2aXR5KSA9IDA7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHdvcmtl
ckNvbnRleHREZXN0cm95ZWQoKSA9IDA7Cg==
</data>
<flag name="review"
          id="13712"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
      

    </bug>

</bugzilla>