<?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>44360</bug_id>
          
          <creation_ts>2010-08-20 14:43:38 -0700</creation_ts>
          <short_desc>Add Chromium API for FileWriter</short_desc>
          <delta_ts>2010-09-13 23:07:29 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</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>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>44358</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric U.">ericu</reporter>
          <assigned_to name="Eric U.">ericu</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>fishd</cc>
    
    <cc>kinuko</cc>
    
    <cc>michaeln</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>267424</commentid>
    <comment_count>0</comment_count>
    <who name="Eric U.">ericu</who>
    <bug_when>2010-08-20 14:43:38 -0700</bug_when>
    <thetext>Add the Chromium API in WebKit/chromium/public for FileWriter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267499</commentid>
    <comment_count>1</comment_count>
      <attachid>65014</attachid>
    <who name="Eric U.">ericu</who>
    <bug_when>2010-08-20 17:51:49 -0700</bug_when>
    <thetext>Created attachment 65014
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267542</commentid>
    <comment_count>2</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-08-21 00:07:26 -0700</bug_when>
    <thetext>WebKit/chromium/public/WebFileWriter.h:47
 +      // at destruction time.
Who is going to create and hold the WebFileWriter?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267641</commentid>
    <comment_count>3</comment_count>
    <who name="Eric U.">ericu</who>
    <bug_when>2010-08-21 22:06:30 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; WebKit/chromium/public/WebFileWriter.h:47
&gt;  +      // at destruction time.
&gt; Who is going to create and hold the WebFileWriter?

It&apos;ll be created by WebFileSystem::createFileWriter, and held by the implementation of AsyncFileWriter in WebKit/chromium/src, which will be held by the WebCore/html/FileWriter.  I have that implementation [it&apos;s pretty thin] ready to post if this API is acceptable.  Or I can post it in the other bug if it&apos;d help make this clearer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267714</commentid>
    <comment_count>4</comment_count>
      <attachid>65014</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-08-22 13:40:48 -0700</bug_when>
    <thetext>Comment on attachment 65014
Patch

WebKit/chromium/public/WebFileWriter.h:48
 +      virtual void setFileWriterClient(WebFileWriterClient *client) = 0;
normally client interfaces are set at construction time.  so the method
used to create a WebFileWriter should be parameterized by a WebFileWriterClient.
that way clients are immutable for the lifetime of an object.  that helps
keep code simpler.  any reason not to conform this code to that pattern?

WebKit/chromium/public/WebFileWriter.h:50
 +      virtual void write(const WebString&amp; path, long long position, const WebURL&amp; blobURL) = 0;
so a WebFileWriter instance can be used to modify multiple files?
is it intended to be used more like a global service then?  why
not instantiate a WebFileWriter from a file path?

WebKit/chromium/public/WebFileWriter.h:52
 +      virtual void abort() = 0;
cancel is the more common verb in the API (see WebURLLoader)

WebKit/chromium/public/WebFileWriterClient.h:43
 +      virtual void didWrite(long long) = 0;
please give this &apos;long long&apos; parameter a name since it isn&apos;t obvious
what this parameter is used for.

WebKit/chromium/public/WebFileWriterClient.h:41
 +      virtual ~WebFileWriterClient() { }
if you do not expect people to delete a WebFileWriterClient
through this interface then make this destructor protected.
(normally, we don&apos;t delete *Client pointers.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267715</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-08-22 13:41:13 -0700</bug_when>
    <thetext>I think it would be helpful to include in this patch the API method used to construct a WebFileWriter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268983</commentid>
    <comment_count>6</comment_count>
      <attachid>65363</attachid>
    <who name="Eric U.">ericu</who>
    <bug_when>2010-08-24 19:55:15 -0700</bug_when>
    <thetext>Created attachment 65363
NOT ready for checkin, but better than the last one

Darin, this isn&apos;t ready to go yet, and includes pieces that might be better split off, but perhaps you can take a look at it and see if it&apos;s closer.  I&apos;m not sure where I should delete the WebFileWriterClient if not through the API, so I haven&apos;t handled that yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269353</commentid>
    <comment_count>7</comment_count>
      <attachid>65363</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-08-25 11:04:50 -0700</bug_when>
    <thetext>Comment on attachment 65363
NOT ready for checkin, but better than the last one

WebKit/chromium/public/WebFileSystem.h:108
 +      virtual void createFileWriter(const WebString&amp; path, WebFileWriterClient*, WebFileSystemCallbacks*) { WEBKIT_ASSERT_NOT_REACHED(); }
I would expect this to look like:

  virtual WebFileWriter* createFileWriter(const WebString&amp; path, WebFileWriterClient*) { ... }

WebKit/chromium/public/WebFileWriter.h:44
 +      WebFileWriter(WebFileWriterClient* client);
we should move the client to the implementation class.  take a look at how WebURLLoader works for example.

WebKit/chromium/public/WebFileWriter.h:48
 +      virtual void write(long long position, const WebURL&amp; blobURL) = 0;
add some documentation about how there can only be one outstanding write or truncate at a time and that cancel is intended to interrupt that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269685</commentid>
    <comment_count>8</comment_count>
      <attachid>65516</attachid>
    <who name="Eric U.">ericu</who>
    <bug_when>2010-08-25 19:34:34 -0700</bug_when>
    <thetext>Created attachment 65516
Rolled in all comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269687</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-25 19:35:33 -0700</bug_when>
    <thetext>Attachment 65516 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebKit/chromium/public/WebFileSystem.h:107:  Use 0 instead of NULL.  [readability/null] [5]
Total errors found: 1 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269691</commentid>
    <comment_count>10</comment_count>
      <attachid>65519</attachid>
    <who name="Eric U.">ericu</who>
    <bug_when>2010-08-25 19:54:32 -0700</bug_when>
    <thetext>Created attachment 65519
Fixed style error</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269748</commentid>
    <comment_count>11</comment_count>
      <attachid>65519</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-08-25 23:41:24 -0700</bug_when>
    <thetext>Comment on attachment 65519
Fixed style error

WebKit/chromium/public/WebFileWriter.h:50
 +      // Cancel will attempt to abort a running write or truncate.
if cancel is called, will the client be guaranteed to receive a didFail even if the asynchronous operation actually ran to completion before cancel was called?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269939</commentid>
    <comment_count>12</comment_count>
    <who name="Eric U.">ericu</who>
    <bug_when>2010-08-26 10:07:59 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 65519 [details])
&gt; WebKit/chromium/public/WebFileWriter.h:50
&gt;  +      // Cancel will attempt to abort a running write or truncate.
&gt; if cancel is called, will the client be guaranteed to receive a didFail even if the asynchronous operation actually ran to completion before cancel was called?

We should probably guarantee that--it simplifies things on the client side.
However, if the operation has already completed, there&apos;s nothing to cancel, so the didFail will be reporting the failure to cancel.  We&apos;ll have to find the appropriate error code for &quot;I don&apos;t know what you&apos;re trying to do, so I can&apos;t do it&quot;.

I&apos;ll add a comment to that effect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269948</commentid>
    <comment_count>13</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-08-26 10:31:42 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #11)
&gt; &gt; (From update of attachment 65519 [details] [details])
&gt; &gt; WebKit/chromium/public/WebFileWriter.h:50
&gt; &gt;  +      // Cancel will attempt to abort a running write or truncate.
&gt; &gt; if cancel is called, will the client be guaranteed to receive a didFail even if the asynchronous operation actually ran to completion before cancel was called?
&gt; 
&gt; We should probably guarantee that--it simplifies things on the client side.
&gt; However, if the operation has already completed, there&apos;s nothing to cancel, so the didFail will be reporting the failure to cancel.  We&apos;ll have to find the appropriate error code for &quot;I don&apos;t know what you&apos;re trying to do, so I can&apos;t do it&quot;.
&gt; 
&gt; I&apos;ll add a comment to that effect.

Sorry, I meant... suppose the async operation has &quot;completed&quot; but the corresponding client method has not been called yet.  From the point of view of the WebKit thread, if a consumer calls cancel before it has received a client callback, then the client callback should be didFail(WebFileErrorAbort) even if the operation has finished its work on whatever background thread it is running on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269962</commentid>
    <comment_count>14</comment_count>
      <attachid>65582</attachid>
    <who name="Eric U.">ericu</who>
    <bug_when>2010-08-26 11:07:48 -0700</bug_when>
    <thetext>Created attachment 65582
Added requested comment

I&apos;ve added the comment; no other changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269964</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-26 11:09:34 -0700</bug_when>
    <thetext>Attachment 65582 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebKit/chromium/public/WebFileSystem.h:107:  Use 0 instead of NULL.  [readability/null] [5]
Total errors found: 1 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270159</commentid>
    <comment_count>16</comment_count>
      <attachid>65630</attachid>
    <who name="Eric U.">ericu</who>
    <bug_when>2010-08-26 15:34:28 -0700</bug_when>
    <thetext>Created attachment 65630
Adjusted as discussed offline

I added a &quot;complete&quot; parameter to write(); it seemed cumbersome to add a &quot;didSucceed&quot; method, especially for truncate, which needs only a single call.  I added a bunch of explanatory comments as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270161</commentid>
    <comment_count>17</comment_count>
      <attachid>65630</attachid>
    <who name="Eric U.">ericu</who>
    <bug_when>2010-08-26 15:35:04 -0700</bug_when>
    <thetext>Comment on attachment 65630
Adjusted as discussed offline

Fixing attachment type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270178</commentid>
    <comment_count>18</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-08-26 15:53:02 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 65630 [details])

some minor comments;

WebKit/chromium/src/AsyncFileWriterChromium.cpp:56
 +      m_writer-&gt;write(position, WebURL(data-&gt;url()));
nits: may be good to have ASSERT(m_writer)?

WebKit/chromium/src/AsyncFileWriterChromium.h:49
 +  class AsyncFileWriterChromium : public WebCore::AsyncFileWriter, WebFileWriterClient {
WebFileWriterClient is privately inherited - is it intentional?

WebKit/chromium/src/AsyncFileWriterChromium.h:67
 +      OwnPtr&lt;WebFileWriter*&gt; m_writer;
OwnPtr&lt;WebFileWriter&gt; m_writer;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270189</commentid>
    <comment_count>19</comment_count>
      <attachid>65638</attachid>
    <who name="Eric U.">ericu</who>
    <bug_when>2010-08-26 16:04:13 -0700</bug_when>
    <thetext>Created attachment 65638
Fixed issues Kinuko found

All fixed.  Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270315</commentid>
    <comment_count>20</comment_count>
      <attachid>65638</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-08-26 22:40:05 -0700</bug_when>
    <thetext>Comment on attachment 65638
Fixed issues Kinuko found

WebKit/chromium/public/WebFileWriterClient.h:48
 +      // Called if the write or truncate fails, or if it is cancelled before didWrite or didTruncate is called.
what does the client call sequence look like if writing completes but cancel is called before didWrite(bytes, true) is called?

the comment above for didFail says that didFail will be called if cancel is called before didWrite or didTruncate is called.  but what if the system did complete writing the file before that time?

i&apos;m concerned that it is complicated for the client to know that if he receives didWrite(bytes, true) that didFail may or may not follow.  he would need to keep track of whether or not he called cancel.

WebKit/chromium/src/AsyncFileWriterChromium.cpp:43
 +  AsyncFileWriterChromium::AsyncFileWriterChromium(WebCore::FileWriterClient* client)
nit: i recommend putting a &apos;using namespace WebCore&apos; at the top so you can drop the WebCore:: prefix in this .cpp file</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270578</commentid>
    <comment_count>21</comment_count>
      <attachid>65730</attachid>
    <who name="Eric U.">ericu</who>
    <bug_when>2010-08-27 10:34:14 -0700</bug_when>
    <thetext>Created attachment 65730
Adjusted comments for behavior and clarity, added namespace decl.

I think this adjustment addresses all your concerns.  I&apos;ll let the comments speak for themselves; if they don&apos;t answer all your questions, I should add more.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270622</commentid>
    <comment_count>22</comment_count>
      <attachid>65730</attachid>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2010-08-27 11:33:01 -0700</bug_when>
    <thetext>Comment on attachment 65730
Adjusted comments for behavior and clarity, added namespace decl.

drive by comment

WebKit/chromium/src/AsyncFileWriterChromium.h:57
 +      void write(long long position, WebCore::Blob* data);
these methods are overrides, maybe use the virtual keyword to help make that more clear</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270633</commentid>
    <comment_count>23</comment_count>
      <attachid>65744</attachid>
    <who name="Eric U.">ericu</who>
    <bug_when>2010-08-27 11:45:19 -0700</bug_when>
    <thetext>Created attachment 65744
Added virtual hint

Added virtual hints, as Michael suggested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270950</commentid>
    <comment_count>24</comment_count>
      <attachid>65744</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-08-28 01:14:38 -0700</bug_when>
    <thetext>Comment on attachment 65744
Added virtual hint

Rejecting patch 65744 from commit-queue.

Failed to run &quot;[u&apos;/Users/eseidel/Projects/CommitQueue/WebKitTools/Scripts/svn-apply&apos;, u&apos;--reviewer&apos;, u&apos;Darin Fisher&apos;, u&apos;--force&apos;]&quot; exit_code: 1
Last 500 characters of output:
 file WebKit/chromium/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file WebKit/chromium/WebKit.gyp
Hunk #2 FAILED at 294.
1 out of 2 hunks FAILED -- saving rejects to file WebKit/chromium/WebKit.gyp.rej
patching file WebKit/chromium/public/WebFileSystem.h
patching file WebKit/chromium/public/WebFileWriter.h
patching file WebKit/chromium/public/WebFileWriterClient.h
patching file WebKit/chromium/src/AsyncFileWriterChromium.cpp
patching file WebKit/chromium/src/AsyncFileWriterChromium.h

Full output: http://queues.webkit.org/results/3837044</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>274934</commentid>
    <comment_count>25</comment_count>
      <attachid>65519</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-09-07 03:19:13 -0700</bug_when>
    <thetext>Comment on attachment 65519
Fixed style error

Cleared Darin Fisher&apos;s review+ from obsolete attachment 65519 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>276239</commentid>
    <comment_count>26</comment_count>
      <attachid>66980</attachid>
    <who name="Eric U.">ericu</who>
    <bug_when>2010-09-08 18:16:19 -0700</bug_when>
    <thetext>Created attachment 66980
Merged out the latest code.

No functional changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277656</commentid>
    <comment_count>27</comment_count>
      <attachid>65744</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-09-10 23:04:23 -0700</bug_when>
    <thetext>Comment on attachment 65744
Added virtual hint

Cleared Darin Fisher&apos;s review+ from obsolete attachment 65744 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>278651</commentid>
    <comment_count>28</comment_count>
    <who name="Eric U.">ericu</who>
    <bug_when>2010-09-13 19:17:15 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; Created an attachment (id=66980) [details]
&gt; Merged out the latest code.
&gt; 
&gt; No functional changes.

Ping?

This is the same CL that was R+ a while back, but failed on CQ due to a merge problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>278736</commentid>
    <comment_count>29</comment_count>
      <attachid>66980</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-09-13 23:07:23 -0700</bug_when>
    <thetext>Comment on attachment 66980
Merged out the latest code.

Clearing flags on attachment: 66980

Committed r67446: &lt;http://trac.webkit.org/changeset/67446&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>278737</commentid>
    <comment_count>30</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-09-13 23:07:29 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65014</attachid>
            <date>2010-08-20 17:51:49 -0700</date>
            <delta_ts>2010-08-24 19:55:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-44360-20100820175148.patch</filename>
            <type>text/plain</type>
            <size>6162</size>
            <attacher name="Eric U.">ericu</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNjU3NzApCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTAtMDgtMjAgIEVyaWMg
VWhyaGFuZSAgPGVyaWN1QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgQ2hyb21pdW0gQVBJIGZvciBGaWxlV3JpdGVyCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDM2MAorCisg
ICAgICAgIFRoZXJlJ3Mgbm8gaW1wbGVtZW50YXRpb24gaGVyZSB5ZXQsIGp1c3QgdGhlIGFic3Ry
YWN0IEFQSS4KKworICAgICAgICAqIFdlYktpdC5neXA6IEFkZCBuZXcgZmlsZXMuCisgICAgICAg
ICogcHVibGljL1dlYkZpbGVXcml0ZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkZp
bGVXcml0ZXI6On5XZWJGaWxlV3JpdGVyKToKKyAgICAgICAgKiBwdWJsaWMvV2ViRmlsZVdyaXRl
ckNsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViRmlsZVdyaXRlckNsaWVudDo6
fldlYkZpbGVXcml0ZXJDbGllbnQpOgorCiAyMDEwLTA4LTIwICBLaW51a28gWWFzdWRhICA8a2lu
dWtvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkOyBidWlsZCBmaXggZm9yIGNo
cm9taXVtIChhbmQgcmVtb3ZlIGR1cGxpY2F0ZWQgQ2hhbmdlTG9nIGVudHJ5KS4KSW5kZXg6IFdl
YktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9X
ZWJLaXQuZ3lwCShyZXZpc2lvbiA2NTc1OCkKKysrIFdlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNjcsNiArMTY3LDggQEAKICAgICAgICAgICAgICAgICAncHVi
bGljL1dlYkZpbGVTeXN0ZW1DYWxsYmFja3MuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9X
ZWJGaWxlU3lzdGVtRW50cnkuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJGaWxlVXRp
bGl0aWVzLmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRmlsZVdyaXRlci5oJywKKyAg
ICAgICAgICAgICAgICAncHVibGljL1dlYkZpbGVXcml0ZXJDbGllbnQuaCcsCiAgICAgICAgICAg
ICAgICAgJ3B1YmxpYy9XZWJGaW5kT3B0aW9ucy5oJywKICAgICAgICAgICAgICAgICAncHVibGlj
L1dlYkZsb2F0UG9pbnQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJGbG9hdFJlY3Qu
aCcsCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZpbGVXcml0ZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZpbGVXcml0ZXIuaAkocmV2aXNpb24g
MCkKKysrIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRmlsZVdyaXRlci5oCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJGaWxlV3JpdGVyX2gKKyNkZWZpbmUgV2ViRmls
ZVdyaXRlcl9oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJTdHJpbmcu
aCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkZpbGVXcml0ZXJDbGllbnQ7Citj
bGFzcyBXZWJVUkw7CisKK2NsYXNzIFdlYkZpbGVXcml0ZXIgeworcHVibGljOgorICAgIHZpcnR1
YWwgfldlYkZpbGVXcml0ZXIoKSB7IH0KKworICAgIC8vIFRoZSBXZWJGaWxlV3JpdGVyIGlzIHJl
c3BvbnNpYmxlIGZvciBkZWxldGluZyB0aGUgV2ViRmlsZVdyaXRlckNsaWVudAorICAgIC8vIGF0
IGRlc3RydWN0aW9uIHRpbWUuCisgICAgdmlydHVhbCB2b2lkIHNldEZpbGVXcml0ZXJDbGllbnQo
V2ViRmlsZVdyaXRlckNsaWVudCAqY2xpZW50KSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgd3Jp
dGUoY29uc3QgV2ViU3RyaW5nJiBwYXRoLCBsb25nIGxvbmcgcG9zaXRpb24sIGNvbnN0IFdlYlVS
TCYgYmxvYlVSTCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB0cnVuY2F0ZShjb25zdCBXZWJTdHJp
bmcmIHBhdGgsIGxvbmcgbG9uZyBwb3NpdGlvbikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhYm9y
dCgpID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKSW5kZXg6IFdl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRmlsZVdyaXRlckNsaWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRmlsZVdyaXRlckNsaWVudC5oCShyZXZpc2lvbiAw
KQorKysgV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGaWxlV3JpdGVyQ2xpZW50LmgJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkZpbGVXcml0ZXJDbGllbnRfaAorI2Rl
ZmluZSBXZWJGaWxlV3JpdGVyQ2xpZW50X2gKKworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorI2lu
Y2x1ZGUgIldlYkZpbGVFcnJvci5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2Vi
RmlsZVdyaXRlckNsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+V2ViRmlsZVdyaXRlckNs
aWVudCgpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIGRpZFdyaXRlKGxvbmcgbG9uZykgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBkaWRUcnVuY2F0ZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
RmFpbChXZWJGaWxlRXJyb3IpID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYK
</data>
<flag name="review"
          id="53698"
          type_id="1"
          status="-"
          setter="fishd"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65363</attachid>
            <date>2010-08-24 19:55:15 -0700</date>
            <delta_ts>2010-08-25 19:34:34 -0700</delta_ts>
            <desc>NOT ready for checkin, but better than the last one</desc>
            <filename>44360.patch</filename>
            <type>text/plain</type>
            <size>19960</size>
            <attacher name="Eric U.">ericu</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9j
aHJvbWl1bS9XZWJLaXQuZ3lwCShyZXZpc2lvbiA2NTgzNCkKKysrIFdlYktpdC9jaHJvbWl1bS9X
ZWJLaXQuZ3lwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjcsNiArMTY3LDggQEAKICAgICAgICAgICAg
ICAgICAncHVibGljL1dlYkZpbGVTeXN0ZW1DYWxsYmFja3MuaCcsCiAgICAgICAgICAgICAgICAg
J3B1YmxpYy9XZWJGaWxlU3lzdGVtRW50cnkuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9X
ZWJGaWxlVXRpbGl0aWVzLmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRmlsZVdyaXRl
ci5oJywKKyAgICAgICAgICAgICAgICAncHVibGljL1dlYkZpbGVXcml0ZXJDbGllbnQuaCcsCiAg
ICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJGaW5kT3B0aW9ucy5oJywKICAgICAgICAgICAgICAg
ICAncHVibGljL1dlYkZsb2F0UG9pbnQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJG
bG9hdFJlY3QuaCcsCkBAIC0yOTIsNiArMjk0LDggQEAKICAgICAgICAgICAgICAgICAnc3JjL0Fw
cGxpY2F0aW9uQ2FjaGVIb3N0LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9BcHBsaWNhdGlv
bkNhY2hlSG9zdEludGVybmFsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvQXNzZXJ0TWF0Y2hp
bmdFbnVtcy5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMvQXN5bmNGaWxlV3JpdGVyQ2hyb21p
dW0uY3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL0FzeW5jRmlsZVdyaXRlckNocm9taXVtLmgn
LAogICAgICAgICAgICAgICAgICdzcmMvQXV0b0ZpbGxQb3B1cE1lbnVDbGllbnQuY3BwJywKICAg
ICAgICAgICAgICAgICAnc3JjL0F1dG9GaWxsUG9wdXBNZW51Q2xpZW50LmgnLAogICAgICAgICAg
ICAgICAgICdzcmMvQmFja0ZvcndhcmRMaXN0Q2xpZW50SW1wbC5jcHAnLApAQCAtNDI2LDYgKzQz
MCw4IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJGaWxlQ2hvb3NlckNvbXBsZXRpb25JbXBs
LmgnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViRmlsZVN5c3RlbUNhbGxiYWNrc0ltcGwuY3Bw
JywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsLmgnLAor
ICAgICAgICAgICAgICAgICdzcmMvV2ViRmlsZVdyaXRlckNsaWVudEltcGwuY3BwJywKKyAgICAg
ICAgICAgICAgICAnc3JjL1dlYkZpbGVXcml0ZXJDbGllbnRJbXBsLmgnLAogICAgICAgICAgICAg
ICAgICdzcmMvV2ViRm9udENhY2hlLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJGb250
RGVzY3JpcHRpb24uY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkZvbnRJbXBsLmNwcCcs
CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZpbGVTeXN0ZW0uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZpbGVTeXN0ZW0uaAkocmV2aXNpb24gNjU4
MzQpCisrKyBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZpbGVTeXN0ZW0uaAkod29ya2luZyBj
b3B5KQpAQCAtMzcsNiArMzcsNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYkZp
bGVTeXN0ZW1DYWxsYmFja3M7CitjbGFzcyBXZWJGaWxlV3JpdGVyQ2xpZW50OwogCiBjbGFzcyBX
ZWJGaWxlU3lzdGVtIHsKIHB1YmxpYzoKQEAgLTEwMCw2ICsxMDEsMTMgQEAgcHVibGljOgogICAg
IC8vIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZEZhaWwoKSBtdXN0IGJlIGNhbGxlZCBvdGhl
cndpc2UuCiAgICAgdmlydHVhbCB2b2lkIHJlYWREaXJlY3RvcnkoY29uc3QgV2ViU3RyaW5nJiBw
YXRoLCBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzKikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVE
KCk7IH0KIAorI2lmIEVOQUJMRShGSUxFX1dSSVRFUikKKyAgICAvLyBDcmVhdGVzIGEgV2ViRmls
ZVdyaXRlciB0aGF0IGNhbiBiZSB1c2VkIHRvIHdyaXRlIHRvIHRoZSBnaXZlbiBmaWxlLgorICAg
IC8vIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZENyZWF0ZUZpbGVXcml0ZXIoKSBtdXN0IGJl
IGNhbGxlZCB3aGVuIHRoZSBvcGVyYXRpb24gaXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseS4KKyAg
ICAvLyBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzOjpkaWRGYWlsKCkgbXVzdCBiZSBjYWxsZWQgb3Ro
ZXJ3aXNlLgorICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVGaWxlV3JpdGVyKGNvbnN0IFdlYlN0cmlu
ZyYgcGF0aCwgV2ViRmlsZVdyaXRlckNsaWVudCosIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3MqKSB7
IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorI2VuZGlmCisKIHByb3RlY3RlZDoKICAg
ICB2aXJ0dWFsIH5XZWJGaWxlU3lzdGVtKCkgeyB9CiB9OwpJbmRleDogV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJGaWxlV3JpdGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJGaWxlV3JpdGVyLmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYkZpbGVXcml0ZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0
cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisg
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
V2ViRmlsZVdyaXRlcl9oCisjZGVmaW5lIFdlYkZpbGVXcml0ZXJfaAorCisjaW5jbHVkZSAiV2Vi
Q29tbW9uLmgiCisjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitjbGFzcyBXZWJGaWxlV3JpdGVyQ2xpZW50OworY2xhc3MgV2ViVVJMOworCitjbGFzcyBXZWJG
aWxlV3JpdGVyIHsKK3B1YmxpYzoKKyAgICBXZWJGaWxlV3JpdGVyKFdlYkZpbGVXcml0ZXJDbGll
bnQqIGNsaWVudCk7CisKKyAgICB2aXJ0dWFsIH5XZWJGaWxlV3JpdGVyKCkgeyB9CisKKyAgICB2
aXJ0dWFsIHZvaWQgd3JpdGUobG9uZyBsb25nIHBvc2l0aW9uLCBjb25zdCBXZWJVUkwmIGJsb2JV
UkwpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdHJ1bmNhdGUobG9uZyBsb25nIHBvc2l0aW9uKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGNhbmNlbCgpID0gMDsKKworcHJvdGVjdGVkOgorICAgIFdl
YkZpbGVXcml0ZXJDbGllbnQqIG1fY2xpZW50OworfTsKKyAgICAKK30gLy8gbmFtZXNwYWNlIFdl
YktpdAorCisjZW5kaWYKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRmlsZVdyaXRl
ckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRmlsZVdy
aXRlckNsaWVudC5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJG
aWxlV3JpdGVyQ2xpZW50LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJp
YnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdl
YkZpbGVXcml0ZXJDbGllbnRfaAorI2RlZmluZSBXZWJGaWxlV3JpdGVyQ2xpZW50X2gKKworI2lu
Y2x1ZGUgIldlYkNvbW1vbi5oIgorI2luY2x1ZGUgIldlYkZpbGVFcnJvci5oIgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworY2xhc3MgV2ViRmlsZVdyaXRlckNsaWVudCB7CitwdWJsaWM6CisgICAg
dmlydHVhbCB2b2lkIGRpZFdyaXRlKGxvbmcgbG9uZyBieXRlcykgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBkaWRUcnVuY2F0ZShsb25nIGxvbmcgcG9zaXRpb24pID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgZGlkRmFpbChXZWJGaWxlRXJyb3IpID0gMDsKKworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwg
fldlYkZpbGVXcml0ZXJDbGllbnQoKSB7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAor
CisjZW5kaWYKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvQXN5bmNGaWxlV3JpdGVyQ2hyb21p
dW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvQXN5bmNGaWxlV3JpdGVy
Q2hyb21pdW0uY3BwCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3luY0Zp
bGVXcml0ZXJDaHJvbWl1bS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlz
dHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0uaCIKKworI2lm
IEVOQUJMRShGSUxFX1dSSVRFUikKKworI2luY2x1ZGUgIkZpbGVXcml0ZXJDbGllbnQuaCIKKyNp
bmNsdWRlICJXZWJGaWxlV3JpdGVyLmgiCisjaW5jbHVkZSAiV2ViRmlsZVdyaXRlckNsaWVudElt
cGwuaCIKKyNpbmNsdWRlICJXZWJTdHJpbmcuaCIKKyNpbmNsdWRlICJXZWJVUkwuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitBc3luY0ZpbGVXcml0ZXJDaHJvbWl1bTo6QXN5bmNGaWxlV3Jp
dGVyQ2hyb21pdW0oV2ViS2l0OjpXZWJGaWxlV3JpdGVyKiB3cml0ZXIpCisgICAgOiBtX3dyaXRl
cih3cml0ZXIpCit7Cit9CisKK3ZvaWQgQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW06OndyaXRlKGxv
bmcgbG9uZyBwb3NpdGlvbiwgQmxvYiogZGF0YSkKK3sKKyAgICBtX3dyaXRlci0+d3JpdGUocG9z
aXRpb24sIFdlYlVSTChkYXRhLT51cmwoKSkpOworfQorCit2b2lkIEFzeW5jRmlsZVdyaXRlcjo6
dHJ1bmNhdGUobG9uZyBsb25nIHBvc2l0aW9uKQoreworICAgIG1fd3JpdGVyLT50cnVuY2F0ZShw
b3NpdGlvbik7Cit9CisKK3ZvaWQgQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW06OmFib3J0KCkKK3sK
KyAgICBtX3dyaXRlci0+YWJvcnQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UKKworI2VuZGlmIC8v
IEVOQUJMRShGSUxFX1dSSVRFUikKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvQXN5bmNGaWxl
V3JpdGVyQ2hyb21pdW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL0FzeW5j
RmlsZVdyaXRlckNocm9taXVtLmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQvY2hyb21pdW0vc3Jj
L0FzeW5jRmlsZVdyaXRlckNocm9taXVtLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
ICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIEFzeW5jRmlsZVdyaXRlckNocm9taXVtX2gKKyNkZWZpbmUgQXN5bmNGaWxlV3JpdGVy
Q2hyb21pdW1faAorCisjaWYgRU5BQkxFKEZJTEVfV1JJVEVSKQorCisjaW5jbHVkZSAiQXN5bmNG
aWxlV3JpdGVyLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViRmlsZVdyaXRlcjsK
K30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBCbG9iOworY2xhc3MgRmlsZVdyaXRl
ckNsaWVudDsKKworY2xhc3MgQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0gOiBwdWJsaWMgQXN5bmNG
aWxlV3JpdGVyIHsKK3B1YmxpYzoKKyAgICBBc3luY0ZpbGVXcml0ZXJDaHJvbWl1bShXZWJLaXQ6
OldlYkZpbGVXcml0ZXIqIHdyaXRlcik7CisKKyAgICB2b2lkIHdyaXRlKGxvbmcgbG9uZyBwb3Np
dGlvbiwgQmxvYiogZGF0YSk7CisgICAgdm9pZCB0cnVuY2F0ZShsb25nIGxvbmcgcG9zaXRpb24p
OworICAgIHZvaWQgYWJvcnQoKTsKKworcHJpdmF0ZToKKyAgICBPd25QdHI8V2ViS2l0OjpXZWJG
aWxlV3JpdGVyKj4gbV93cml0ZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZQorCisjZW5kaWYgLy8g
RU5BQkxFKEZJTEVfV1JJVEVSKQorCisjZW5kaWYgLy8gQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW1f
aApJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGaWxlU3lzdGVtQ2FsbGJhY2tzSW1wbC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGaWxlU3lzdGVtQ2FsbGJh
Y2tzSW1wbC5jcHAJKHJldmlzaW9uIDY1ODM0KQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJG
aWxlU3lzdGVtQ2FsbGJhY2tzSW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2LDYgKzc2LDEz
IEBAIHZvaWQgV2ViRmlsZVN5c3RlbUNhbGxiYWNrc0ltcGw6OmRpZFJlYWQKICAgICAgICAgZGVs
ZXRlIHRoaXM7CiB9CiAKK3ZvaWQgV2ViRmlsZVN5c3RlbUNhbGxiYWNrc0ltcGw6OmRpZENyZWF0
ZUZpbGVXcml0ZXIoV2ViRmlsZVdyaXRlciogd3JpdGVyKQoreworICAgIEFTU0VSVChtX2NhbGxi
YWNrcyk7CisgICAgbV9jYWxsYmFja3MtPmRpZENyZWF0ZUZpbGVXcml0ZXIoYWRvcHRSZWYobmV3
IEFzeW5jRmlsZVdyaXRlckNocm9taXVtKHdyaXRlcikpKTsKKyAgICBkZWxldGUgdGhpczsKK30K
Kwogdm9pZCBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzSW1wbDo6ZGlkT3BlbkZpbGVTeXN0ZW0oY29u
c3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIHBhdGgpCiB7CiAgICAgbV9jYWxs
YmFja3MtPmRpZE9wZW5GaWxlU3lzdGVtKG5hbWUsIHBhdGgpOwpJbmRleDogV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJGaWxlV3JpdGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkZpbGVXcml0ZXIuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJGaWxlV3JpdGVyLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0
cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisg
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJGaWxlV3JpdGVyLmgiCisKKyNpbmNsdWRlICJXZWJG
aWxlV3JpdGVyQ2xpZW50LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJGaWxlV3JpdGVy
OjpXZWJGaWxlV3JpdGVyKFdlYkZpbGVXcml0ZXJDbGllbnQqIGNsaWVudCkKKyAgICA6IG1fY2xp
ZW50KGNsaWVudCkKK3sKK30KKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYK
SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViRmlsZVdyaXRlckNsaWVudEltcGwuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViRmlsZVdyaXRlckNsaWVudEltcGwu
Y3BwCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGaWxlV3JpdGVyQ2xp
ZW50SW1wbC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiV2ViRmlsZVdyaXRlckNsaWVudEltcGwuaCIKKworI2lmIEVOQUJMRShG
SUxFX1dSSVRFUikKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYkZpbGVXcml0ZXJDbGllbnRJ
bXBsOjpXZWJGaWxlV3JpdGVyQ2xpZW50SW1wbChXZWJDb3JlOjpGaWxlV3JpdGVyQ2xpZW50KiBj
bGllbnQpCisgICAgOiBtX2NsaWVudChjbGllbnQpCit7Cit9CisKK3ZvaWQgV2ViRmlsZVdyaXRl
ckNsaWVudEltcGw6OmRpZFdyaXRlKGxvbmcgbG9uZyBieXRlcykKK3sKKyAgICBtX2NsaWVudC0+
ZGlkV3JpdGUoYnl0ZSk7Cit9CisKK3ZvaWQgV2ViRmlsZVdyaXRlckNsaWVudEltcGw6OmRpZFRy
dW5jYXRlKCkKK3sKKyAgICBtX2NsaWVudC0+ZGlkVHJ1bmNhdGUoKTsKK30KKwordm9pZCBXZWJG
aWxlV3JpdGVyQ2xpZW50SW1wbDo6ZGlkRmFpbChXZWJGaWxlRXJyb3IgZXJyb3IpCit7CisgICAg
Ly8gVE9ETzogVHJhbnNsYXRlIGV4Y2VwdGlvbiBjb2RlLgorICAgIG1fY2xpZW50LT5kaWRGYWls
KEV4Y2VwdGlvbkNvZGUpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8v
IEVOQUJMRShGSUxFX1dSSVRFUikKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViRmlsZVdy
aXRlckNsaWVudEltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZp
bGVXcml0ZXJDbGllbnRJbXBsLmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkZpbGVXcml0ZXJDbGllbnRJbXBsLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjAgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
ICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIFdlYkZpbGVXcml0ZXJDbGllbnRJbXBsX2gKKyNkZWZpbmUgV2ViRmlsZVdyaXRlckNs
aWVudEltcGxfaAorCisjaWYgRU5BQkxFKEZJTEVfV1JJVEVSKQorCisjaW5jbHVkZSAiV2ViRmls
ZVdyaXRlckNsaWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBGaWxlV3JpdGVy
Q2xpZW50OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViRmlsZVdyaXRlckNs
aWVudEltcGwgOiBwdWJsaWMgV2ViRmlsZVdyaXRlckNsaWVudCB7CitwdWJsaWM6CisgICAgV2Vi
RmlsZVdyaXRlckNsaWVudEltcGwoV2ViQ29yZTo6RmlsZVdyaXRlckNsaWVudCogY2xpZW50KTsK
KworICAgIHZpcnR1YWwgdm9pZCBkaWRXcml0ZShsb25nIGxvbmcgbGVuZ3RoKTsKKyAgICB2aXJ0
dWFsIHZvaWQgZGlkVHJ1bmNhdGUobG9uZyBsb25nIHBvc2l0aW9uKTsKKyAgICB2aXJ0dWFsIHZv
aWQgZGlkRmFpbChXZWJGaWxlRXJyb3IpOworCitwcml2YXRlOgorICAgIFdlYkNvcmU6OkZpbGVX
cml0ZXJDbGllbnQqIG1fY2xpZW50OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNl
bmRpZiAvLyBFTkFCTEUoRklMRV9XUklURVIpCisKKyNlbmRpZiAvLyBXZWJGaWxlV3JpdGVyQ2xp
ZW50SW1wbF9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65516</attachid>
            <date>2010-08-25 19:34:34 -0700</date>
            <delta_ts>2010-08-25 19:54:32 -0700</delta_ts>
            <desc>Rolled in all comments.</desc>
            <filename>webkit.patch</filename>
            <type>text/plain</type>
            <size>13731</size>
            <attacher name="Eric U.">ericu</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNjYwNjEpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTAtMDgtMjUgIEVyaWMg
VWhyaGFuZSAgPGVyaWN1QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgQ2hyb21pdW0gQVBJIGZvciBGaWxlV3JpdGVyCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDM2MAorCisg
ICAgICAgIEJ1aWxkIGZpbGUgY2hhbmdlcy4KKyAgICAgICAgKiBXZWJLaXQuZ3lwOgorCisgICAg
ICAgIEFkZGVkIGEgd2F5IHRvIGdldCBhIFdlYkZpbGVXcml0ZXIuCisgICAgICAgICogcHVibGlj
L1dlYkZpbGVTeXN0ZW0uaDoKKyAgICAgICAgKFdlYktpdDo6V2ViRmlsZVN5c3RlbTo6Y3JlYXRl
RmlsZVdyaXRlcik6CisKKyAgICAgICAgV2ViRmlsZVdyaXRlciB3cml0ZXMgYW5kIHRydW5jYXRl
cyBmaWxlcy4KKyAgICAgICAgKiBwdWJsaWMvV2ViRmlsZVdyaXRlci5oOiBBZGRlZC4KKworICAg
ICAgICBXZWJGaWxlV3JpdGVyQ2xpZW50IHJlcG9ydHMgc3VjY2Vzcy9mYWlsdXJlIGFuZCBwcm9n
cmVzcyBldmVudHMuCisgICAgICAgICogcHVibGljL1dlYkZpbGVXcml0ZXJDbGllbnQuaDogQWRk
ZWQuCisKKyAgICAgICAgQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0gaXMgYSBjb25uZWN0b3IgdGhh
dCBsaW5rcyBGaWxlV3JpdGVyIGFuZCBXZWJGaWxlV3JpdGVyLCBGaWxlV3JpdGVyQ2xpZW50IGFu
ZCBXZWJGaWxlV3JpdGVyQ2xpZW50LgorICAgICAgICAqIHNyYy9Bc3luY0ZpbGVXcml0ZXJDaHJv
bWl1bS5jcHA6IEFkZGVkLgorICAgICAgICAqIHNyYy9Bc3luY0ZpbGVXcml0ZXJDaHJvbWl1bS5o
OiBBZGRlZC4KKwogMjAxMC0wOC0yNSAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgVW5yZXZpZXdlZC4gIEJ1aWxkIGZpeC4KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9X
ZWJLaXQuZ3lwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCShyZXZp
c2lvbiA2NTgzNCkKKysrIFdlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNjcsNiArMTY3LDggQEAKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkZpbGVTeXN0
ZW1DYWxsYmFja3MuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJGaWxlU3lzdGVtRW50
cnkuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJGaWxlVXRpbGl0aWVzLmgnLAorICAg
ICAgICAgICAgICAgICdwdWJsaWMvV2ViRmlsZVdyaXRlci5oJywKKyAgICAgICAgICAgICAgICAn
cHVibGljL1dlYkZpbGVXcml0ZXJDbGllbnQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9X
ZWJGaW5kT3B0aW9ucy5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkZsb2F0UG9pbnQu
aCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJGbG9hdFJlY3QuaCcsCkBAIC0yOTIsNiAr
Mjk0LDggQEAKICAgICAgICAgICAgICAgICAnc3JjL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcCcs
CiAgICAgICAgICAgICAgICAgJ3NyYy9BcHBsaWNhdGlvbkNhY2hlSG9zdEludGVybmFsLmgnLAog
ICAgICAgICAgICAgICAgICdzcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAnLAorICAgICAgICAg
ICAgICAgICdzcmMvQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0uY3BwJywKKyAgICAgICAgICAgICAg
ICAnc3JjL0FzeW5jRmlsZVdyaXRlckNocm9taXVtLmgnLAogICAgICAgICAgICAgICAgICdzcmMv
QXV0b0ZpbGxQb3B1cE1lbnVDbGllbnQuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL0F1dG9G
aWxsUG9wdXBNZW51Q2xpZW50LmgnLAogICAgICAgICAgICAgICAgICdzcmMvQmFja0ZvcndhcmRM
aXN0Q2xpZW50SW1wbC5jcHAnLApJbmRleDogV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGaWxl
U3lzdGVtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGaWxlU3lz
dGVtLmgJKHJldmlzaW9uIDY1ODM0KQorKysgV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGaWxl
U3lzdGVtLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDggQEAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCiBjbGFzcyBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzOworY2xhc3MgV2ViRmlsZVdyaXRl
cjsKK2NsYXNzIFdlYkZpbGVXcml0ZXJDbGllbnQ7CiAKIGNsYXNzIFdlYkZpbGVTeXN0ZW0gewog
cHVibGljOgpAQCAtMTAwLDYgKzEwMiwxMCBAQCBwdWJsaWM6CiAgICAgLy8gV2ViRmlsZVN5c3Rl
bUNhbGxiYWNrczo6ZGlkRmFpbCgpIG11c3QgYmUgY2FsbGVkIG90aGVyd2lzZS4KICAgICB2aXJ0
dWFsIHZvaWQgcmVhZERpcmVjdG9yeShjb25zdCBXZWJTdHJpbmcmIHBhdGgsIFdlYkZpbGVTeXN0
ZW1DYWxsYmFja3MqKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCisgICAgLy8g
Q3JlYXRlcyBhIFdlYkZpbGVXcml0ZXIgdGhhdCBjYW4gYmUgdXNlZCB0byB3cml0ZSB0byB0aGUg
Z2l2ZW4gZmlsZS4KKyAgICAvLyBUaGlzIGlzIGEgZmFzdCwgc3luY2hyb25vdXMgY2FsbCwgYW5k
IHNob3VsZCBub3Qgc3RhdCB0aGUgZmlsZXN5c3RlbS4KKyAgICB2aXJ0dWFsIFdlYkZpbGVXcml0
ZXIqIGNyZWF0ZUZpbGVXcml0ZXIoY29uc3QgV2ViU3RyaW5nJiBwYXRoLCBXZWJGaWxlV3JpdGVy
Q2xpZW50KikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBOVUxMOyB9CisK
IHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5XZWJGaWxlU3lzdGVtKCkgeyB9CiB9OwpJbmRleDog
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGaWxlV3JpdGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGaWxlV3JpdGVyLmgJKHJldmlzaW9uIDApCisrKyBXZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYkZpbGVXcml0ZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0Ogor
ICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisg
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgV2ViRmlsZVdyaXRlcl9oCisjZGVmaW5lIFdlYkZpbGVXcml0ZXJfaAor
CisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJVUkw7CisKK2NsYXNzIFdlYkZpbGVXcml0ZXIgewor
cHVibGljOgorICAgIHZpcnR1YWwgfldlYkZpbGVXcml0ZXIoKSB7IH0KKworICAgIC8vIE9ubHkg
b25lIHdyaXRlIG9yIG9uZSB0cnVuY2F0ZSBvcGVyYXRpb24gY2FuIGJlIGluIHByb2dyZXNzIGF0
IGEgdGltZS4KKyAgICAvLyBUaGVzZSBmdW5jdGlvbnMgYXJlIGFzeW5jaHJvbm91cyBhbmQgd2ls
bCByZXBvcnQgcmVzdWx0cyB0aHJvdWdoIHRoZSBXZWJGaWxlV3JpdGVyJ3MgYXNzb2NpYXRlZCBX
ZWJGaWxlV3JpdGVyQ2xpZW50LgorICAgIHZpcnR1YWwgdm9pZCB3cml0ZShsb25nIGxvbmcgcG9z
aXRpb24sIGNvbnN0IFdlYlVSTCYgYmxvYlVSTCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB0cnVu
Y2F0ZShsb25nIGxvbmcgbGVuZ3RoKSA9IDA7CisKKyAgICAvLyBDYW5jZWwgd2lsbCBhdHRlbXB0
IHRvIGFib3J0IGEgcnVubmluZyB3cml0ZSBvciB0cnVuY2F0ZS4KKyAgICB2aXJ0dWFsIHZvaWQg
Y2FuY2VsKCkgPSAwOworfTsKKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYK
SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRmlsZVdyaXRlckNsaWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRmlsZVdyaXRlckNsaWVudC5oCShy
ZXZpc2lvbiAwKQorKysgV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGaWxlV3JpdGVyQ2xpZW50
LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkZpbGVXcml0ZXJDbGll
bnRfaAorI2RlZmluZSBXZWJGaWxlV3JpdGVyQ2xpZW50X2gKKworI2luY2x1ZGUgIldlYkNvbW1v
bi5oIgorI2luY2x1ZGUgIldlYkZpbGVFcnJvci5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
Y2xhc3MgV2ViRmlsZVdyaXRlckNsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB2b2lkIGRp
ZFdyaXRlKGxvbmcgbG9uZyBieXRlcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRUcnVuY2F0
ZShsb25nIGxvbmcgbGVuZ3RoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoV2ViRmls
ZUVycm9yKSA9IDA7CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIH5XZWJGaWxlV3JpdGVyQ2xp
ZW50KCkgeyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCkluZGV4OiBX
ZWJLaXQvY2hyb21pdW0vc3JjL0FzeW5jRmlsZVdyaXRlckNocm9taXVtLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL0FzeW5jRmlsZVdyaXRlckNocm9taXVtLmNwcAkocmV2
aXNpb24gMCkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0u
Y3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDg2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
KyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkFzeW5jRmlsZVdyaXRlckNocm9taXVtLmgiCisKKyNpZiBFTkFCTEUoRklMRV9XUklU
RVIpCisKKyNpbmNsdWRlICJCbG9iLmgiCisjaW5jbHVkZSAiRmlsZVdyaXRlckNsaWVudC5oIgor
I2luY2x1ZGUgIldlYkZpbGVXcml0ZXIuaCIKKyNpbmNsdWRlICJXZWJVUkwuaCIKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK0FzeW5jRmlsZVdyaXRlckNocm9taXVtOjpBc3luY0ZpbGVXcml0ZXJD
aHJvbWl1bShXZWJDb3JlOjpGaWxlV3JpdGVyQ2xpZW50KiBjbGllbnQpCisgICAgOiBtX2NsaWVu
dChjbGllbnQpCit7Cit9CisKK3ZvaWQgQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW06OnNldFdlYkZp
bGVXcml0ZXIoV2ViRmlsZVdyaXRlciogd3JpdGVyKQoreworICAgIEFTU0VSVCghbV93cml0ZXIp
OworICAgIG1fd3JpdGVyID0gd3JpdGVyOworfQorCit2b2lkIEFzeW5jRmlsZVdyaXRlckNocm9t
aXVtOjp3cml0ZShsb25nIGxvbmcgcG9zaXRpb24sIFdlYkNvcmU6OkJsb2IqIGRhdGEpCit7Cisg
ICAgbV93cml0ZXItPndyaXRlKHBvc2l0aW9uLCBXZWJVUkwoZGF0YS0+dXJsKCkpKTsKK30KKwor
dm9pZCBBc3luY0ZpbGVXcml0ZXJDaHJvbWl1bTo6dHJ1bmNhdGUobG9uZyBsb25nIGxlbmd0aCkK
K3sKKyAgICBtX3dyaXRlci0+dHJ1bmNhdGUobGVuZ3RoKTsKK30KKwordm9pZCBBc3luY0ZpbGVX
cml0ZXJDaHJvbWl1bTo6YWJvcnQoKQoreworICAgIG1fd3JpdGVyLT5jYW5jZWwoKTsKK30KKwor
dm9pZCBBc3luY0ZpbGVXcml0ZXJDaHJvbWl1bTo6ZGlkV3JpdGUobG9uZyBsb25nIGJ5dGVzKQor
eworICAgIG1fY2xpZW50LT5kaWRXcml0ZShieXRlcyk7Cit9CisKK3ZvaWQgQXN5bmNGaWxlV3Jp
dGVyQ2hyb21pdW06OmRpZFRydW5jYXRlKGxvbmcgbG9uZyBsZW5ndGgpCit7CisgICAgbV9jbGll
bnQtPmRpZFRydW5jYXRlKGxlbmd0aCk7Cit9CisKK3ZvaWQgQXN5bmNGaWxlV3JpdGVyQ2hyb21p
dW06OmRpZEZhaWwoV2ViRmlsZUVycm9yIGVycm9yKQoreworICAgIG1fY2xpZW50LT5kaWRGYWls
KGVycm9yKTsKK30KKworfSAvLyBuYW1lc3BhY2UKKworI2VuZGlmIC8vIEVOQUJMRShGSUxFX1dS
SVRFUikKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL0FzeW5jRmlsZVdyaXRlckNocm9t
aXVtLmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL0FzeW5jRmlsZVdyaXRl
ckNocm9taXVtLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEFzeW5jRmls
ZVdyaXRlckNocm9taXVtX2gKKyNkZWZpbmUgQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW1faAorCisj
aWYgRU5BQkxFKEZJTEVfV1JJVEVSKQorCisjaW5jbHVkZSAiQXN5bmNGaWxlV3JpdGVyLmgiCisj
aW5jbHVkZSAiV2ViRmlsZUVycm9yLmgiCisjaW5jbHVkZSAiV2ViRmlsZVdyaXRlckNsaWVudC5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBCbG9iOworY2xhc3MgRmlsZVdyaXRlckNs
aWVudDsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkZpbGVXcml0ZXI7CisK
K2NsYXNzIEFzeW5jRmlsZVdyaXRlckNocm9taXVtIDogcHVibGljIFdlYkNvcmU6OkFzeW5jRmls
ZVdyaXRlciwgV2ViRmlsZVdyaXRlckNsaWVudCB7CitwdWJsaWM6CisgICAgQXN5bmNGaWxlV3Jp
dGVyQ2hyb21pdW0oV2ViQ29yZTo6RmlsZVdyaXRlckNsaWVudCogY2xpZW50KTsKKyAgICB+QXN5
bmNGaWxlV3JpdGVyQ2hyb21pdW0oKTsKKworICAgIHZvaWQgc2V0V2ViRmlsZVdyaXRlcihXZWJG
aWxlV3JpdGVyKiB3cml0ZXIpOworCisgICAgLy8gRmlsZVdyaXRlcgorICAgIHZvaWQgd3JpdGUo
bG9uZyBsb25nIHBvc2l0aW9uLCBXZWJDb3JlOjpCbG9iKiBkYXRhKTsKKyAgICB2b2lkIHRydW5j
YXRlKGxvbmcgbG9uZyBsZW5ndGgpOworICAgIHZvaWQgYWJvcnQoKTsKKworICAgIC8vIFdlYkZp
bGVXcml0ZXJDbGllbnQKKyAgICB2aXJ0dWFsIHZvaWQgZGlkV3JpdGUobG9uZyBsb25nIGJ5dGVz
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkVHJ1bmNhdGUobG9uZyBsb25nIGxlbmd0aCk7CisgICAg
dmlydHVhbCB2b2lkIGRpZEZhaWwoV2ViRmlsZUVycm9yKTsKKworcHJpdmF0ZToKKyAgICBPd25Q
dHI8V2ViRmlsZVdyaXRlcio+IG1fd3JpdGVyOworICAgIFdlYkNvcmU6OkZpbGVXcml0ZXJDbGll
bnQqIG1fY2xpZW50OworfTsKKworfSAvLyBuYW1lc3BhY2UKKworI2VuZGlmIC8vIEVOQUJMRShG
SUxFX1dSSVRFUikKKworI2VuZGlmIC8vIEFzeW5jRmlsZVdyaXRlckNocm9taXVtX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65519</attachid>
            <date>2010-08-25 19:54:32 -0700</date>
            <delta_ts>2010-09-07 03:19:13 -0700</delta_ts>
            <desc>Fixed style error</desc>
            <filename>attachment.txt</filename>
            <type>text/plain</type>
            <size>13728</size>
            <attacher name="Eric U.">ericu</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNjYwNjEpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTAtMDgtMjUgIEVyaWMg
VWhyaGFuZSAgPGVyaWN1QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgQ2hyb21pdW0gQVBJIGZvciBGaWxlV3JpdGVyCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDM2MAorCisg
ICAgICAgIEJ1aWxkIGZpbGUgY2hhbmdlcy4KKyAgICAgICAgKiBXZWJLaXQuZ3lwOgorCisgICAg
ICAgIEFkZGVkIGEgd2F5IHRvIGdldCBhIFdlYkZpbGVXcml0ZXIuCisgICAgICAgICogcHVibGlj
L1dlYkZpbGVTeXN0ZW0uaDoKKyAgICAgICAgKFdlYktpdDo6V2ViRmlsZVN5c3RlbTo6Y3JlYXRl
RmlsZVdyaXRlcik6CisKKyAgICAgICAgV2ViRmlsZVdyaXRlciB3cml0ZXMgYW5kIHRydW5jYXRl
cyBmaWxlcy4KKyAgICAgICAgKiBwdWJsaWMvV2ViRmlsZVdyaXRlci5oOiBBZGRlZC4KKworICAg
ICAgICBXZWJGaWxlV3JpdGVyQ2xpZW50IHJlcG9ydHMgc3VjY2Vzcy9mYWlsdXJlIGFuZCBwcm9n
cmVzcyBldmVudHMuCisgICAgICAgICogcHVibGljL1dlYkZpbGVXcml0ZXJDbGllbnQuaDogQWRk
ZWQuCisKKyAgICAgICAgQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0gaXMgYSBjb25uZWN0b3IgdGhh
dCBsaW5rcyBGaWxlV3JpdGVyIGFuZCBXZWJGaWxlV3JpdGVyLCBGaWxlV3JpdGVyQ2xpZW50IGFu
ZCBXZWJGaWxlV3JpdGVyQ2xpZW50LgorICAgICAgICAqIHNyYy9Bc3luY0ZpbGVXcml0ZXJDaHJv
bWl1bS5jcHA6IEFkZGVkLgorICAgICAgICAqIHNyYy9Bc3luY0ZpbGVXcml0ZXJDaHJvbWl1bS5o
OiBBZGRlZC4KKwogMjAxMC0wOC0yNSAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgVW5yZXZpZXdlZC4gIEJ1aWxkIGZpeC4KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9X
ZWJLaXQuZ3lwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCShyZXZp
c2lvbiA2NTgzNCkKKysrIFdlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNjcsNiArMTY3LDggQEAKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkZpbGVTeXN0
ZW1DYWxsYmFja3MuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJGaWxlU3lzdGVtRW50
cnkuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJGaWxlVXRpbGl0aWVzLmgnLAorICAg
ICAgICAgICAgICAgICdwdWJsaWMvV2ViRmlsZVdyaXRlci5oJywKKyAgICAgICAgICAgICAgICAn
cHVibGljL1dlYkZpbGVXcml0ZXJDbGllbnQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9X
ZWJGaW5kT3B0aW9ucy5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkZsb2F0UG9pbnQu
aCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJGbG9hdFJlY3QuaCcsCkBAIC0yOTIsNiAr
Mjk0LDggQEAKICAgICAgICAgICAgICAgICAnc3JjL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcCcs
CiAgICAgICAgICAgICAgICAgJ3NyYy9BcHBsaWNhdGlvbkNhY2hlSG9zdEludGVybmFsLmgnLAog
ICAgICAgICAgICAgICAgICdzcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAnLAorICAgICAgICAg
ICAgICAgICdzcmMvQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0uY3BwJywKKyAgICAgICAgICAgICAg
ICAnc3JjL0FzeW5jRmlsZVdyaXRlckNocm9taXVtLmgnLAogICAgICAgICAgICAgICAgICdzcmMv
QXV0b0ZpbGxQb3B1cE1lbnVDbGllbnQuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL0F1dG9G
aWxsUG9wdXBNZW51Q2xpZW50LmgnLAogICAgICAgICAgICAgICAgICdzcmMvQmFja0ZvcndhcmRM
aXN0Q2xpZW50SW1wbC5jcHAnLApJbmRleDogV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGaWxl
U3lzdGVtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGaWxlU3lz
dGVtLmgJKHJldmlzaW9uIDY1ODM0KQorKysgV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGaWxl
U3lzdGVtLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDggQEAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCiBjbGFzcyBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzOworY2xhc3MgV2ViRmlsZVdyaXRl
cjsKK2NsYXNzIFdlYkZpbGVXcml0ZXJDbGllbnQ7CiAKIGNsYXNzIFdlYkZpbGVTeXN0ZW0gewog
cHVibGljOgpAQCAtMTAwLDYgKzEwMiwxMCBAQCBwdWJsaWM6CiAgICAgLy8gV2ViRmlsZVN5c3Rl
bUNhbGxiYWNrczo6ZGlkRmFpbCgpIG11c3QgYmUgY2FsbGVkIG90aGVyd2lzZS4KICAgICB2aXJ0
dWFsIHZvaWQgcmVhZERpcmVjdG9yeShjb25zdCBXZWJTdHJpbmcmIHBhdGgsIFdlYkZpbGVTeXN0
ZW1DYWxsYmFja3MqKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCisgICAgLy8g
Q3JlYXRlcyBhIFdlYkZpbGVXcml0ZXIgdGhhdCBjYW4gYmUgdXNlZCB0byB3cml0ZSB0byB0aGUg
Z2l2ZW4gZmlsZS4KKyAgICAvLyBUaGlzIGlzIGEgZmFzdCwgc3luY2hyb25vdXMgY2FsbCwgYW5k
IHNob3VsZCBub3Qgc3RhdCB0aGUgZmlsZXN5c3RlbS4KKyAgICB2aXJ0dWFsIFdlYkZpbGVXcml0
ZXIqIGNyZWF0ZUZpbGVXcml0ZXIoY29uc3QgV2ViU3RyaW5nJiBwYXRoLCBXZWJGaWxlV3JpdGVy
Q2xpZW50KikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiAwOyB9CisKIHBy
b3RlY3RlZDoKICAgICB2aXJ0dWFsIH5XZWJGaWxlU3lzdGVtKCkgeyB9CiB9OwpJbmRleDogV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGaWxlV3JpdGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJGaWxlV3JpdGVyLmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYkZpbGVXcml0ZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoK
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgV2ViRmlsZVdyaXRlcl9oCisjZGVmaW5lIFdlYkZpbGVXcml0ZXJfaAorCisj
aW5jbHVkZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitjbGFzcyBXZWJVUkw7CisKK2NsYXNzIFdlYkZpbGVXcml0ZXIgeworcHVi
bGljOgorICAgIHZpcnR1YWwgfldlYkZpbGVXcml0ZXIoKSB7IH0KKworICAgIC8vIE9ubHkgb25l
IHdyaXRlIG9yIG9uZSB0cnVuY2F0ZSBvcGVyYXRpb24gY2FuIGJlIGluIHByb2dyZXNzIGF0IGEg
dGltZS4KKyAgICAvLyBUaGVzZSBmdW5jdGlvbnMgYXJlIGFzeW5jaHJvbm91cyBhbmQgd2lsbCBy
ZXBvcnQgcmVzdWx0cyB0aHJvdWdoIHRoZSBXZWJGaWxlV3JpdGVyJ3MgYXNzb2NpYXRlZCBXZWJG
aWxlV3JpdGVyQ2xpZW50LgorICAgIHZpcnR1YWwgdm9pZCB3cml0ZShsb25nIGxvbmcgcG9zaXRp
b24sIGNvbnN0IFdlYlVSTCYgYmxvYlVSTCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB0cnVuY2F0
ZShsb25nIGxvbmcgbGVuZ3RoKSA9IDA7CisKKyAgICAvLyBDYW5jZWwgd2lsbCBhdHRlbXB0IHRv
IGFib3J0IGEgcnVubmluZyB3cml0ZSBvciB0cnVuY2F0ZS4KKyAgICB2aXJ0dWFsIHZvaWQgY2Fu
Y2VsKCkgPSAwOworfTsKKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKSW5k
ZXg6IFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRmlsZVdyaXRlckNsaWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRmlsZVdyaXRlckNsaWVudC5oCShyZXZp
c2lvbiAwKQorKysgV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGaWxlV3JpdGVyQ2xpZW50LmgJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkZpbGVXcml0ZXJDbGllbnRf
aAorI2RlZmluZSBXZWJGaWxlV3JpdGVyQ2xpZW50X2gKKworI2luY2x1ZGUgIldlYkNvbW1vbi5o
IgorI2luY2x1ZGUgIldlYkZpbGVFcnJvci5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xh
c3MgV2ViRmlsZVdyaXRlckNsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB2b2lkIGRpZFdy
aXRlKGxvbmcgbG9uZyBieXRlcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRUcnVuY2F0ZShs
b25nIGxvbmcgbGVuZ3RoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoV2ViRmlsZUVy
cm9yKSA9IDA7CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIH5XZWJGaWxlV3JpdGVyQ2xpZW50
KCkgeyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCkluZGV4OiBXZWJL
aXQvY2hyb21pdW0vc3JjL0FzeW5jRmlsZVdyaXRlckNocm9taXVtLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvY2hyb21pdW0vc3JjL0FzeW5jRmlsZVdyaXRlckNocm9taXVtLmNwcAkocmV2aXNp
b24gMCkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0uY3Bw
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDg2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEw
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkFzeW5jRmlsZVdyaXRlckNocm9taXVtLmgiCisKKyNpZiBFTkFCTEUoRklMRV9XUklURVIp
CisKKyNpbmNsdWRlICJCbG9iLmgiCisjaW5jbHVkZSAiRmlsZVdyaXRlckNsaWVudC5oIgorI2lu
Y2x1ZGUgIldlYkZpbGVXcml0ZXIuaCIKKyNpbmNsdWRlICJXZWJVUkwuaCIKKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK0FzeW5jRmlsZVdyaXRlckNocm9taXVtOjpBc3luY0ZpbGVXcml0ZXJDaHJv
bWl1bShXZWJDb3JlOjpGaWxlV3JpdGVyQ2xpZW50KiBjbGllbnQpCisgICAgOiBtX2NsaWVudChj
bGllbnQpCit7Cit9CisKK3ZvaWQgQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW06OnNldFdlYkZpbGVX
cml0ZXIoV2ViRmlsZVdyaXRlciogd3JpdGVyKQoreworICAgIEFTU0VSVCghbV93cml0ZXIpOwor
ICAgIG1fd3JpdGVyID0gd3JpdGVyOworfQorCit2b2lkIEFzeW5jRmlsZVdyaXRlckNocm9taXVt
Ojp3cml0ZShsb25nIGxvbmcgcG9zaXRpb24sIFdlYkNvcmU6OkJsb2IqIGRhdGEpCit7CisgICAg
bV93cml0ZXItPndyaXRlKHBvc2l0aW9uLCBXZWJVUkwoZGF0YS0+dXJsKCkpKTsKK30KKwordm9p
ZCBBc3luY0ZpbGVXcml0ZXJDaHJvbWl1bTo6dHJ1bmNhdGUobG9uZyBsb25nIGxlbmd0aCkKK3sK
KyAgICBtX3dyaXRlci0+dHJ1bmNhdGUobGVuZ3RoKTsKK30KKwordm9pZCBBc3luY0ZpbGVXcml0
ZXJDaHJvbWl1bTo6YWJvcnQoKQoreworICAgIG1fd3JpdGVyLT5jYW5jZWwoKTsKK30KKwordm9p
ZCBBc3luY0ZpbGVXcml0ZXJDaHJvbWl1bTo6ZGlkV3JpdGUobG9uZyBsb25nIGJ5dGVzKQorewor
ICAgIG1fY2xpZW50LT5kaWRXcml0ZShieXRlcyk7Cit9CisKK3ZvaWQgQXN5bmNGaWxlV3JpdGVy
Q2hyb21pdW06OmRpZFRydW5jYXRlKGxvbmcgbG9uZyBsZW5ndGgpCit7CisgICAgbV9jbGllbnQt
PmRpZFRydW5jYXRlKGxlbmd0aCk7Cit9CisKK3ZvaWQgQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW06
OmRpZEZhaWwoV2ViRmlsZUVycm9yIGVycm9yKQoreworICAgIG1fY2xpZW50LT5kaWRGYWlsKGVy
cm9yKTsKK30KKworfSAvLyBuYW1lc3BhY2UKKworI2VuZGlmIC8vIEVOQUJMRShGSUxFX1dSSVRF
UikKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL0FzeW5jRmlsZVdyaXRlckNocm9taXVt
LmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL0FzeW5jRmlsZVdyaXRlckNo
cm9taXVtLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgor
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEFzeW5jRmlsZVdy
aXRlckNocm9taXVtX2gKKyNkZWZpbmUgQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW1faAorCisjaWYg
RU5BQkxFKEZJTEVfV1JJVEVSKQorCisjaW5jbHVkZSAiQXN5bmNGaWxlV3JpdGVyLmgiCisjaW5j
bHVkZSAiV2ViRmlsZUVycm9yLmgiCisjaW5jbHVkZSAiV2ViRmlsZVdyaXRlckNsaWVudC5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBCbG9iOworY2xhc3MgRmlsZVdyaXRlckNsaWVu
dDsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkZpbGVXcml0ZXI7CisKK2Ns
YXNzIEFzeW5jRmlsZVdyaXRlckNocm9taXVtIDogcHVibGljIFdlYkNvcmU6OkFzeW5jRmlsZVdy
aXRlciwgV2ViRmlsZVdyaXRlckNsaWVudCB7CitwdWJsaWM6CisgICAgQXN5bmNGaWxlV3JpdGVy
Q2hyb21pdW0oV2ViQ29yZTo6RmlsZVdyaXRlckNsaWVudCogY2xpZW50KTsKKyAgICB+QXN5bmNG
aWxlV3JpdGVyQ2hyb21pdW0oKTsKKworICAgIHZvaWQgc2V0V2ViRmlsZVdyaXRlcihXZWJGaWxl
V3JpdGVyKiB3cml0ZXIpOworCisgICAgLy8gRmlsZVdyaXRlcgorICAgIHZvaWQgd3JpdGUobG9u
ZyBsb25nIHBvc2l0aW9uLCBXZWJDb3JlOjpCbG9iKiBkYXRhKTsKKyAgICB2b2lkIHRydW5jYXRl
KGxvbmcgbG9uZyBsZW5ndGgpOworICAgIHZvaWQgYWJvcnQoKTsKKworICAgIC8vIFdlYkZpbGVX
cml0ZXJDbGllbnQKKyAgICB2aXJ0dWFsIHZvaWQgZGlkV3JpdGUobG9uZyBsb25nIGJ5dGVzKTsK
KyAgICB2aXJ0dWFsIHZvaWQgZGlkVHJ1bmNhdGUobG9uZyBsb25nIGxlbmd0aCk7CisgICAgdmly
dHVhbCB2b2lkIGRpZEZhaWwoV2ViRmlsZUVycm9yKTsKKworcHJpdmF0ZToKKyAgICBPd25QdHI8
V2ViRmlsZVdyaXRlcio+IG1fd3JpdGVyOworICAgIFdlYkNvcmU6OkZpbGVXcml0ZXJDbGllbnQq
IG1fY2xpZW50OworfTsKKworfSAvLyBuYW1lc3BhY2UKKworI2VuZGlmIC8vIEVOQUJMRShGSUxF
X1dSSVRFUikKKworI2VuZGlmIC8vIEFzeW5jRmlsZVdyaXRlckNocm9taXVtX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65582</attachid>
            <date>2010-08-26 11:07:48 -0700</date>
            <delta_ts>2010-08-26 15:34:28 -0700</delta_ts>
            <desc>Added requested comment</desc>
            <filename>webkit.patch</filename>
            <type>text/plain</type>
            <size>13914</size>
            <attacher name="Eric U.">ericu</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNjYxMTMpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTAtMDgtMjUgIEVyaWMg
VWhyaGFuZSAgPGVyaWN1QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgQ2hyb21pdW0gQVBJIGZvciBGaWxlV3JpdGVyCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDM2MAorCisg
ICAgICAgIEJ1aWxkIGZpbGUgY2hhbmdlcy4KKyAgICAgICAgKiBXZWJLaXQuZ3lwOgorCisgICAg
ICAgIEFkZGVkIGEgd2F5IHRvIGdldCBhIFdlYkZpbGVXcml0ZXIuCisgICAgICAgICogcHVibGlj
L1dlYkZpbGVTeXN0ZW0uaDoKKyAgICAgICAgKFdlYktpdDo6V2ViRmlsZVN5c3RlbTo6Y3JlYXRl
RmlsZVdyaXRlcik6CisKKyAgICAgICAgV2ViRmlsZVdyaXRlciB3cml0ZXMgYW5kIHRydW5jYXRl
cyBmaWxlcy4KKyAgICAgICAgKiBwdWJsaWMvV2ViRmlsZVdyaXRlci5oOiBBZGRlZC4KKworICAg
ICAgICBXZWJGaWxlV3JpdGVyQ2xpZW50IHJlcG9ydHMgc3VjY2Vzcy9mYWlsdXJlIGFuZCBwcm9n
cmVzcyBldmVudHMuCisgICAgICAgICogcHVibGljL1dlYkZpbGVXcml0ZXJDbGllbnQuaDogQWRk
ZWQuCisKKyAgICAgICAgQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0gaXMgYSBjb25uZWN0b3IgdGhh
dCBsaW5rcyBGaWxlV3JpdGVyIGFuZCBXZWJGaWxlV3JpdGVyLCBGaWxlV3JpdGVyQ2xpZW50IGFu
ZCBXZWJGaWxlV3JpdGVyQ2xpZW50LgorICAgICAgICAqIHNyYy9Bc3luY0ZpbGVXcml0ZXJDaHJv
bWl1bS5jcHA6IEFkZGVkLgorICAgICAgICAqIHNyYy9Bc3luY0ZpbGVXcml0ZXJDaHJvbWl1bS5o
OiBBZGRlZC4KKwogMjAxMC0wOC0yNiAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLiBSZXZlcnQgcjY2MTAzIHNpbmNlIFF0IHRlc3Rz
IGFyZSBmYWlsaW5nLgpJbmRleDogV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAJKHJldmlzaW9uIDY2MTEzKQorKysgV2Vi
S2l0L2Nocm9taXVtL1dlYktpdC5neXAJKHdvcmtpbmcgY29weSkKQEAgLTE2Nyw2ICsxNjcsOCBA
QAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRmlsZVN5c3RlbUNhbGxiYWNrcy5oJywKICAg
ICAgICAgICAgICAgICAncHVibGljL1dlYkZpbGVTeXN0ZW1FbnRyeS5oJywKICAgICAgICAgICAg
ICAgICAncHVibGljL1dlYkZpbGVVdGlsaXRpZXMuaCcsCisgICAgICAgICAgICAgICAgJ3B1Ymxp
Yy9XZWJGaWxlV3JpdGVyLmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRmlsZVdyaXRl
ckNsaWVudC5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkZpbmRPcHRpb25zLmgnLAog
ICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRmxvYXRQb2ludC5oJywKICAgICAgICAgICAgICAg
ICAncHVibGljL1dlYkZsb2F0UmVjdC5oJywKQEAgLTI5Miw2ICsyOTQsOCBAQAogICAgICAgICAg
ICAgICAgICdzcmMvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwJywKICAgICAgICAgICAgICAgICAn
c3JjL0FwcGxpY2F0aW9uQ2FjaGVIb3N0SW50ZXJuYWwuaCcsCiAgICAgICAgICAgICAgICAgJ3Ny
Yy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9Bc3luY0Zp
bGVXcml0ZXJDaHJvbWl1bS5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMvQXN5bmNGaWxlV3Jp
dGVyQ2hyb21pdW0uaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9BdXRvRmlsbFBvcHVwTWVudUNs
aWVudC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvQXV0b0ZpbGxQb3B1cE1lbnVDbGllbnQu
aCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9CYWNrRm9yd2FyZExpc3RDbGllbnRJbXBsLmNwcCcs
CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZpbGVTeXN0ZW0uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZpbGVTeXN0ZW0uaAkocmV2aXNpb24gNjYx
MTMpCisrKyBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZpbGVTeXN0ZW0uaAkod29ya2luZyBj
b3B5KQpAQCAtMzcsNiArMzcsOCBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYkZp
bGVTeXN0ZW1DYWxsYmFja3M7CitjbGFzcyBXZWJGaWxlV3JpdGVyOworY2xhc3MgV2ViRmlsZVdy
aXRlckNsaWVudDsKIAogY2xhc3MgV2ViRmlsZVN5c3RlbSB7CiBwdWJsaWM6CkBAIC0xMDAsNiAr
MTAyLDEwIEBAIHB1YmxpYzoKICAgICAvLyBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzOjpkaWRGYWls
KCkgbXVzdCBiZSBjYWxsZWQgb3RoZXJ3aXNlLgogICAgIHZpcnR1YWwgdm9pZCByZWFkRGlyZWN0
b3J5KGNvbnN0IFdlYlN0cmluZyYgcGF0aCwgV2ViRmlsZVN5c3RlbUNhbGxiYWNrcyopIHsgV0VC
S0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKKyAgICAvLyBDcmVhdGVzIGEgV2ViRmlsZVdy
aXRlciB0aGF0IGNhbiBiZSB1c2VkIHRvIHdyaXRlIHRvIHRoZSBnaXZlbiBmaWxlLgorICAgIC8v
IFRoaXMgaXMgYSBmYXN0LCBzeW5jaHJvbm91cyBjYWxsLCBhbmQgc2hvdWxkIG5vdCBzdGF0IHRo
ZSBmaWxlc3lzdGVtLgorICAgIHZpcnR1YWwgV2ViRmlsZVdyaXRlciogY3JlYXRlRmlsZVdyaXRl
cihjb25zdCBXZWJTdHJpbmcmIHBhdGgsIFdlYkZpbGVXcml0ZXJDbGllbnQqKSB7IFdFQktJVF9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIE5VTEw7IH0KKwogcHJvdGVjdGVkOgogICAgIHZp
cnR1YWwgfldlYkZpbGVTeXN0ZW0oKSB7IH0KIH07CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYkZpbGVXcml0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYkZpbGVXcml0ZXIuaAkocmV2aXNpb24gMCkKKysrIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViRmlsZVdyaXRlci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1
dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJG
aWxlV3JpdGVyX2gKKyNkZWZpbmUgV2ViRmlsZVdyaXRlcl9oCisKKyNpbmNsdWRlICJXZWJDb21t
b24uaCIKKyNpbmNsdWRlICJXZWJTdHJpbmcuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Ns
YXNzIFdlYlVSTDsKKworY2xhc3MgV2ViRmlsZVdyaXRlciB7CitwdWJsaWM6CisgICAgdmlydHVh
bCB+V2ViRmlsZVdyaXRlcigpIHsgfQorCisgICAgLy8gT25seSBvbmUgd3JpdGUgb3Igb25lIHRy
dW5jYXRlIG9wZXJhdGlvbiBjYW4gYmUgaW4gcHJvZ3Jlc3MgYXQgYSB0aW1lLgorICAgIC8vIFRo
ZXNlIGZ1bmN0aW9ucyBhcmUgYXN5bmNocm9ub3VzIGFuZCB3aWxsIHJlcG9ydCByZXN1bHRzIHRo
cm91Z2ggdGhlIFdlYkZpbGVXcml0ZXIncyBhc3NvY2lhdGVkIFdlYkZpbGVXcml0ZXJDbGllbnQu
CisgICAgdmlydHVhbCB2b2lkIHdyaXRlKGxvbmcgbG9uZyBwb3NpdGlvbiwgY29uc3QgV2ViVVJM
JiBibG9iVVJMKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHRydW5jYXRlKGxvbmcgbG9uZyBsZW5n
dGgpID0gMDsKKworICAgIC8vIENhbmNlbCB3aWxsIGF0dGVtcHQgdG8gYWJvcnQgYSBydW5uaW5n
IHdyaXRlIG9yIHRydW5jYXRlLgorICAgIC8vIEEgY2FuY2VsIHdpbGwgYWx3YXlzIHJlcG9ydCBh
IHJlc3VsdCB0aHJvdWdoIHRoZSBXZWJGaWxlV3JpdGVyJ3MgYXNzb2NpYXRlZCBXZWJGaWxlV3Jp
dGVyQ2xpZW50LCBldmVuIGlmIHRoZXJlIGlzIG5vIGFjdGlvbiBpbiBwcm9ncmVzcy4KKyAgICB2
aXJ0dWFsIHZvaWQgY2FuY2VsKCkgPSAwOworfTsKKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorCisjZW5kaWYKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRmlsZVdyaXRlckNs
aWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRmlsZVdyaXRl
ckNsaWVudC5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGaWxl
V3JpdGVyQ2xpZW50LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0
aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkZp
bGVXcml0ZXJDbGllbnRfaAorI2RlZmluZSBXZWJGaWxlV3JpdGVyQ2xpZW50X2gKKworI2luY2x1
ZGUgIldlYkNvbW1vbi5oIgorI2luY2x1ZGUgIldlYkZpbGVFcnJvci5oIgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworY2xhc3MgV2ViRmlsZVdyaXRlckNsaWVudCB7CitwdWJsaWM6CisgICAgdmly
dHVhbCB2b2lkIGRpZFdyaXRlKGxvbmcgbG9uZyBieXRlcykgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBkaWRUcnVuY2F0ZShsb25nIGxvbmcgbGVuZ3RoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRp
ZEZhaWwoV2ViRmlsZUVycm9yKSA9IDA7CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIH5XZWJG
aWxlV3JpdGVyQ2xpZW50KCkgeyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2Vu
ZGlmCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL0FzeW5jRmlsZVdyaXRlckNocm9taXVtLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL0FzeW5jRmlsZVdyaXRlckNocm9t
aXVtLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvQXN5bmNGaWxlV3Jp
dGVyQ2hyb21pdW0uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDg2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1
dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkFzeW5jRmlsZVdyaXRlckNocm9taXVtLmgiCisKKyNpZiBFTkFC
TEUoRklMRV9XUklURVIpCisKKyNpbmNsdWRlICJCbG9iLmgiCisjaW5jbHVkZSAiRmlsZVdyaXRl
ckNsaWVudC5oIgorI2luY2x1ZGUgIldlYkZpbGVXcml0ZXIuaCIKKyNpbmNsdWRlICJXZWJVUkwu
aCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK0FzeW5jRmlsZVdyaXRlckNocm9taXVtOjpBc3lu
Y0ZpbGVXcml0ZXJDaHJvbWl1bShXZWJDb3JlOjpGaWxlV3JpdGVyQ2xpZW50KiBjbGllbnQpCisg
ICAgOiBtX2NsaWVudChjbGllbnQpCit7Cit9CisKK3ZvaWQgQXN5bmNGaWxlV3JpdGVyQ2hyb21p
dW06OnNldFdlYkZpbGVXcml0ZXIoV2ViRmlsZVdyaXRlciogd3JpdGVyKQoreworICAgIEFTU0VS
VCghbV93cml0ZXIpOworICAgIG1fd3JpdGVyID0gd3JpdGVyOworfQorCit2b2lkIEFzeW5jRmls
ZVdyaXRlckNocm9taXVtOjp3cml0ZShsb25nIGxvbmcgcG9zaXRpb24sIFdlYkNvcmU6OkJsb2Iq
IGRhdGEpCit7CisgICAgbV93cml0ZXItPndyaXRlKHBvc2l0aW9uLCBXZWJVUkwoZGF0YS0+dXJs
KCkpKTsKK30KKwordm9pZCBBc3luY0ZpbGVXcml0ZXJDaHJvbWl1bTo6dHJ1bmNhdGUobG9uZyBs
b25nIGxlbmd0aCkKK3sKKyAgICBtX3dyaXRlci0+dHJ1bmNhdGUobGVuZ3RoKTsKK30KKwordm9p
ZCBBc3luY0ZpbGVXcml0ZXJDaHJvbWl1bTo6YWJvcnQoKQoreworICAgIG1fd3JpdGVyLT5jYW5j
ZWwoKTsKK30KKwordm9pZCBBc3luY0ZpbGVXcml0ZXJDaHJvbWl1bTo6ZGlkV3JpdGUobG9uZyBs
b25nIGJ5dGVzKQoreworICAgIG1fY2xpZW50LT5kaWRXcml0ZShieXRlcyk7Cit9CisKK3ZvaWQg
QXN5bmNGaWxlV3JpdGVyQ2hyb21pdW06OmRpZFRydW5jYXRlKGxvbmcgbG9uZyBsZW5ndGgpCit7
CisgICAgbV9jbGllbnQtPmRpZFRydW5jYXRlKGxlbmd0aCk7Cit9CisKK3ZvaWQgQXN5bmNGaWxl
V3JpdGVyQ2hyb21pdW06OmRpZEZhaWwoV2ViRmlsZUVycm9yIGVycm9yKQoreworICAgIG1fY2xp
ZW50LT5kaWRGYWlsKGVycm9yKTsKK30KKworfSAvLyBuYW1lc3BhY2UKKworI2VuZGlmIC8vIEVO
QUJMRShGSUxFX1dSSVRFUikKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvQXN5bmNGaWxlV3Jp
dGVyQ2hyb21pdW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL0FzeW5jRmls
ZVdyaXRlckNocm9taXVtLmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL0Fz
eW5jRmlsZVdyaXRlckNocm9taXVtLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzUgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICog
ZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIEFzeW5jRmlsZVdyaXRlckNocm9taXVtX2gKKyNkZWZpbmUgQXN5bmNGaWxlV3JpdGVyQ2hy
b21pdW1faAorCisjaWYgRU5BQkxFKEZJTEVfV1JJVEVSKQorCisjaW5jbHVkZSAiQXN5bmNGaWxl
V3JpdGVyLmgiCisjaW5jbHVkZSAiV2ViRmlsZUVycm9yLmgiCisjaW5jbHVkZSAiV2ViRmlsZVdy
aXRlckNsaWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBCbG9iOworY2xhc3Mg
RmlsZVdyaXRlckNsaWVudDsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkZp
bGVXcml0ZXI7CisKK2NsYXNzIEFzeW5jRmlsZVdyaXRlckNocm9taXVtIDogcHVibGljIFdlYkNv
cmU6OkFzeW5jRmlsZVdyaXRlciwgV2ViRmlsZVdyaXRlckNsaWVudCB7CitwdWJsaWM6CisgICAg
QXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0oV2ViQ29yZTo6RmlsZVdyaXRlckNsaWVudCogY2xpZW50
KTsKKyAgICB+QXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0oKTsKKworICAgIHZvaWQgc2V0V2ViRmls
ZVdyaXRlcihXZWJGaWxlV3JpdGVyKiB3cml0ZXIpOworCisgICAgLy8gRmlsZVdyaXRlcgorICAg
IHZvaWQgd3JpdGUobG9uZyBsb25nIHBvc2l0aW9uLCBXZWJDb3JlOjpCbG9iKiBkYXRhKTsKKyAg
ICB2b2lkIHRydW5jYXRlKGxvbmcgbG9uZyBsZW5ndGgpOworICAgIHZvaWQgYWJvcnQoKTsKKwor
ICAgIC8vIFdlYkZpbGVXcml0ZXJDbGllbnQKKyAgICB2aXJ0dWFsIHZvaWQgZGlkV3JpdGUobG9u
ZyBsb25nIGJ5dGVzKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkVHJ1bmNhdGUobG9uZyBsb25nIGxl
bmd0aCk7CisgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoV2ViRmlsZUVycm9yKTsKKworcHJpdmF0
ZToKKyAgICBPd25QdHI8V2ViRmlsZVdyaXRlcio+IG1fd3JpdGVyOworICAgIFdlYkNvcmU6OkZp
bGVXcml0ZXJDbGllbnQqIG1fY2xpZW50OworfTsKKworfSAvLyBuYW1lc3BhY2UKKworI2VuZGlm
IC8vIEVOQUJMRShGSUxFX1dSSVRFUikKKworI2VuZGlmIC8vIEFzeW5jRmlsZVdyaXRlckNocm9t
aXVtX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65630</attachid>
            <date>2010-08-26 15:34:28 -0700</date>
            <delta_ts>2010-08-26 16:04:13 -0700</delta_ts>
            <desc>Adjusted as discussed offline</desc>
            <filename>webkit.patch</filename>
            <type>text/plain</type>
            <size>14316</size>
            <attacher name="Eric U.">ericu</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNjYxMzkpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTAtMDgtMjUgIEVyaWMg
VWhyaGFuZSAgPGVyaWN1QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgQ2hyb21pdW0gQVBJIGZvciBGaWxlV3JpdGVyCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDM2MAorCisg
ICAgICAgIEJ1aWxkIGZpbGUgY2hhbmdlcy4KKyAgICAgICAgKiBXZWJLaXQuZ3lwOgorCisgICAg
ICAgIEFkZGVkIGEgd2F5IHRvIGdldCBhIFdlYkZpbGVXcml0ZXIuCisgICAgICAgICogcHVibGlj
L1dlYkZpbGVTeXN0ZW0uaDoKKyAgICAgICAgKFdlYktpdDo6V2ViRmlsZVN5c3RlbTo6Y3JlYXRl
RmlsZVdyaXRlcik6CisKKyAgICAgICAgV2ViRmlsZVdyaXRlciB3cml0ZXMgYW5kIHRydW5jYXRl
cyBmaWxlcy4KKyAgICAgICAgKiBwdWJsaWMvV2ViRmlsZVdyaXRlci5oOiBBZGRlZC4KKworICAg
ICAgICBXZWJGaWxlV3JpdGVyQ2xpZW50IHJlcG9ydHMgc3VjY2Vzcy9mYWlsdXJlIGFuZCBwcm9n
cmVzcyBldmVudHMuCisgICAgICAgICogcHVibGljL1dlYkZpbGVXcml0ZXJDbGllbnQuaDogQWRk
ZWQuCisKKyAgICAgICAgQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0gaXMgYSBjb25uZWN0b3IgdGhh
dCBsaW5rcyBGaWxlV3JpdGVyIGFuZCBXZWJGaWxlV3JpdGVyLCBGaWxlV3JpdGVyQ2xpZW50IGFu
ZCBXZWJGaWxlV3JpdGVyQ2xpZW50LgorICAgICAgICAqIHNyYy9Bc3luY0ZpbGVXcml0ZXJDaHJv
bWl1bS5jcHA6IEFkZGVkLgorICAgICAgICAqIHNyYy9Bc3luY0ZpbGVXcml0ZXJDaHJvbWl1bS5o
OiBBZGRlZC4KKwogMjAxMC0wOC0yNiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6IFdlYktpdC9jaHJvbWl1
bS9XZWJLaXQuZ3lwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCShy
ZXZpc2lvbiA2NjEzOSkKKysrIFdlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNjcsNiArMTY3LDggQEAKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkZpbGVT
eXN0ZW1DYWxsYmFja3MuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJGaWxlU3lzdGVt
RW50cnkuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJGaWxlVXRpbGl0aWVzLmgnLAor
ICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRmlsZVdyaXRlci5oJywKKyAgICAgICAgICAgICAg
ICAncHVibGljL1dlYkZpbGVXcml0ZXJDbGllbnQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1Ymxp
Yy9XZWJGaW5kT3B0aW9ucy5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkZsb2F0UG9p
bnQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJGbG9hdFJlY3QuaCcsCkBAIC0yOTIs
NiArMjk0LDggQEAKICAgICAgICAgICAgICAgICAnc3JjL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNw
cCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9BcHBsaWNhdGlvbkNhY2hlSG9zdEludGVybmFsLmgn
LAogICAgICAgICAgICAgICAgICdzcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAnLAorICAgICAg
ICAgICAgICAgICdzcmMvQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0uY3BwJywKKyAgICAgICAgICAg
ICAgICAnc3JjL0FzeW5jRmlsZVdyaXRlckNocm9taXVtLmgnLAogICAgICAgICAgICAgICAgICdz
cmMvQXV0b0ZpbGxQb3B1cE1lbnVDbGllbnQuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL0F1
dG9GaWxsUG9wdXBNZW51Q2xpZW50LmgnLAogICAgICAgICAgICAgICAgICdzcmMvQmFja0Zvcndh
cmRMaXN0Q2xpZW50SW1wbC5jcHAnLApJbmRleDogV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJG
aWxlU3lzdGVtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGaWxl
U3lzdGVtLmgJKHJldmlzaW9uIDY2MTM5KQorKysgV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJG
aWxlU3lzdGVtLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDggQEAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCiBjbGFzcyBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzOworY2xhc3MgV2ViRmlsZVdy
aXRlcjsKK2NsYXNzIFdlYkZpbGVXcml0ZXJDbGllbnQ7CiAKIGNsYXNzIFdlYkZpbGVTeXN0ZW0g
ewogcHVibGljOgpAQCAtMTAwLDYgKzEwMiwxMCBAQCBwdWJsaWM6CiAgICAgLy8gV2ViRmlsZVN5
c3RlbUNhbGxiYWNrczo6ZGlkRmFpbCgpIG11c3QgYmUgY2FsbGVkIG90aGVyd2lzZS4KICAgICB2
aXJ0dWFsIHZvaWQgcmVhZERpcmVjdG9yeShjb25zdCBXZWJTdHJpbmcmIHBhdGgsIFdlYkZpbGVT
eXN0ZW1DYWxsYmFja3MqKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCisgICAg
Ly8gQ3JlYXRlcyBhIFdlYkZpbGVXcml0ZXIgdGhhdCBjYW4gYmUgdXNlZCB0byB3cml0ZSB0byB0
aGUgZ2l2ZW4gZmlsZS4KKyAgICAvLyBUaGlzIGlzIGEgZmFzdCwgc3luY2hyb25vdXMgY2FsbCwg
YW5kIHNob3VsZCBub3Qgc3RhdCB0aGUgZmlsZXN5c3RlbS4KKyAgICB2aXJ0dWFsIFdlYkZpbGVX
cml0ZXIqIGNyZWF0ZUZpbGVXcml0ZXIoY29uc3QgV2ViU3RyaW5nJiBwYXRoLCBXZWJGaWxlV3Jp
dGVyQ2xpZW50KikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiAwOyB9CisK
IHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5XZWJGaWxlU3lzdGVtKCkgeyB9CiB9OwpJbmRleDog
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGaWxlV3JpdGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGaWxlV3JpdGVyLmgJKHJldmlzaW9uIDApCisrKyBXZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYkZpbGVXcml0ZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0Ogor
ICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisg
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgV2ViRmlsZVdyaXRlcl9oCisjZGVmaW5lIFdlYkZpbGVXcml0ZXJfaAor
CisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJVUkw7CisKK2NsYXNzIFdlYkZpbGVXcml0ZXIgewor
cHVibGljOgorICAgIHZpcnR1YWwgfldlYkZpbGVXcml0ZXIoKSB7IH0KKworICAgIC8vIE9ubHkg
b25lIHdyaXRlIG9yIG9uZSB0cnVuY2F0ZSBvcGVyYXRpb24gY2FuIGJlIGluIHByb2dyZXNzIGF0
IGEgdGltZS4KKyAgICAvLyBUaGVzZSBmdW5jdGlvbnMgYXJlIGFzeW5jaHJvbm91cyBhbmQgd2ls
bCByZXBvcnQgcmVzdWx0cyB0aHJvdWdoIHRoZSBXZWJGaWxlV3JpdGVyJ3MgYXNzb2NpYXRlZCBX
ZWJGaWxlV3JpdGVyQ2xpZW50LgorICAgIHZpcnR1YWwgdm9pZCB3cml0ZShsb25nIGxvbmcgcG9z
aXRpb24sIGNvbnN0IFdlYlVSTCYgYmxvYlVSTCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB0cnVu
Y2F0ZShsb25nIGxvbmcgbGVuZ3RoKSA9IDA7CisKKyAgICAvLyBDYW5jZWwgd2lsbCBhdHRlbXB0
IHRvIGFib3J0IGEgcnVubmluZyB3cml0ZSBvciB0cnVuY2F0ZS4gIEhvd2V2ZXIsIGl0IG1heSBu
b3QgYmUgcG9zc2libGUgdG8gY2FuY2VsIGFuIGluLXByb2dyZXNzIGFjdGlvbiwgb3IgdGhlIGNh
bGwgbWF5IGhhdmUgY29tZSBpbiB0b28gbGF0ZS4gIFBhcnRpYWwgd3JpdGVzIGFyZSBwb3NzaWJs
ZS4KKyAgICAvLyBEbyBub3QgY2FsbCBjYW5jZWwgd2hlbiB0aGVyZSBpcyBubyB3cml0ZSBvciB0
cnVuY2F0ZSBpbiBwcm9ncmVzcy4KKyAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsKCkgPSAwOworfTsK
KyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKSW5kZXg6IFdlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViRmlsZVdyaXRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViRmlsZVdyaXRlckNsaWVudC5oCShyZXZpc2lvbiAwKQorKysgV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGaWxlV3JpdGVyQ2xpZW50LmgJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAq
IG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkZpbGVXcml0ZXJDbGllbnRfaAorI2RlZmluZSBXZWJG
aWxlV3JpdGVyQ2xpZW50X2gKKworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorI2luY2x1ZGUgIldl
YkZpbGVFcnJvci5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViRmlsZVdyaXRl
ckNsaWVudCB7CitwdWJsaWM6CisgICAgLy8gQ2FsbGVkIGZvciBlYWNoIGNodW5rIG9mIGEgd3Jp
dGUsIHRvIGluZGljYXRlIHByb2dyZXNzLgorICAgIC8vIE9uIHRoZSBmaW5hbCBjaHVuaywgd2hl
biB0aGUgd3JpdGUgaXMgZmluaXNoZWQsIGNvbXBsZXRlIHdpbGwgYmUgdHJ1ZS4KKyAgICB2aXJ0
dWFsIHZvaWQgZGlkV3JpdGUobG9uZyBsb25nIGJ5dGVzLCBib29sIGNvbXBsZXRlKSA9IDA7CisK
KyAgICAvLyBDYWxsZWQgb25jZSB3aGVuIHRoZSB0cnVuY2F0ZSBjb21wbGV0ZXMgc3VjY2Vzc2Z1
bGx5LgorICAgIHZpcnR1YWwgdm9pZCBkaWRUcnVuY2F0ZShsb25nIGxvbmcgbGVuZ3RoKSA9IDA7
CisKKyAgICAvLyBDYWxsZWQgaWYgdGhlIHdyaXRlIG9yIHRydW5jYXRlIGZhaWxzLCBvciBpZiBp
dCBpcyBjYW5jZWxsZWQgYmVmb3JlIGRpZFdyaXRlIG9yIGRpZFRydW5jYXRlIGlzIGNhbGxlZC4K
KyAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChXZWJGaWxlRXJyb3IpID0gMDsKKworcHJvdGVjdGVk
OgorICAgIHZpcnR1YWwgfldlYkZpbGVXcml0ZXJDbGllbnQoKSB7IH0KK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdAorCisjZW5kaWYKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvQXN5bmNG
aWxlV3JpdGVyQ2hyb21pdW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMv
QXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0uY3BwCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L2Nocm9t
aXVtL3NyYy9Bc3luY0ZpbGVXcml0ZXJDaHJvbWl1bS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsODYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoK
KyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgor
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQXN5bmNGaWxlV3JpdGVyQ2hy
b21pdW0uaCIKKworI2lmIEVOQUJMRShGSUxFX1dSSVRFUikKKworI2luY2x1ZGUgIkJsb2IuaCIK
KyNpbmNsdWRlICJGaWxlV3JpdGVyQ2xpZW50LmgiCisjaW5jbHVkZSAiV2ViRmlsZVdyaXRlci5o
IgorI2luY2x1ZGUgIldlYlVSTC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworQXN5bmNGaWxl
V3JpdGVyQ2hyb21pdW06OkFzeW5jRmlsZVdyaXRlckNocm9taXVtKFdlYkNvcmU6OkZpbGVXcml0
ZXJDbGllbnQqIGNsaWVudCkKKyAgICA6IG1fY2xpZW50KGNsaWVudCkKK3sKK30KKwordm9pZCBB
c3luY0ZpbGVXcml0ZXJDaHJvbWl1bTo6c2V0V2ViRmlsZVdyaXRlcihXZWJGaWxlV3JpdGVyKiB3
cml0ZXIpCit7CisgICAgQVNTRVJUKCFtX3dyaXRlcik7CisgICAgbV93cml0ZXIgPSB3cml0ZXI7
Cit9CisKK3ZvaWQgQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW06OndyaXRlKGxvbmcgbG9uZyBwb3Np
dGlvbiwgV2ViQ29yZTo6QmxvYiogZGF0YSkKK3sKKyAgICBtX3dyaXRlci0+d3JpdGUocG9zaXRp
b24sIFdlYlVSTChkYXRhLT51cmwoKSkpOworfQorCit2b2lkIEFzeW5jRmlsZVdyaXRlckNocm9t
aXVtOjp0cnVuY2F0ZShsb25nIGxvbmcgbGVuZ3RoKQoreworICAgIG1fd3JpdGVyLT50cnVuY2F0
ZShsZW5ndGgpOworfQorCit2b2lkIEFzeW5jRmlsZVdyaXRlckNocm9taXVtOjphYm9ydCgpCit7
CisgICAgbV93cml0ZXItPmNhbmNlbCgpOworfQorCit2b2lkIEFzeW5jRmlsZVdyaXRlckNocm9t
aXVtOjpkaWRXcml0ZShsb25nIGxvbmcgYnl0ZXMsIGJvb2wgY29tcGxldGUpCit7CisgICAgbV9j
bGllbnQtPmRpZFdyaXRlKGJ5dGVzLCBjb21wbGV0ZSk7Cit9CisKK3ZvaWQgQXN5bmNGaWxlV3Jp
dGVyQ2hyb21pdW06OmRpZFRydW5jYXRlKGxvbmcgbG9uZyBsZW5ndGgpCit7CisgICAgbV9jbGll
bnQtPmRpZFRydW5jYXRlKGxlbmd0aCk7Cit9CisKK3ZvaWQgQXN5bmNGaWxlV3JpdGVyQ2hyb21p
dW06OmRpZEZhaWwoV2ViRmlsZUVycm9yIGVycm9yKQoreworICAgIG1fY2xpZW50LT5kaWRGYWls
KGVycm9yKTsKK30KKworfSAvLyBuYW1lc3BhY2UKKworI2VuZGlmIC8vIEVOQUJMRShGSUxFX1dS
SVRFUikKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL0FzeW5jRmlsZVdyaXRlckNocm9t
aXVtLmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL0FzeW5jRmlsZVdyaXRl
ckNocm9taXVtLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEFzeW5jRmls
ZVdyaXRlckNocm9taXVtX2gKKyNkZWZpbmUgQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW1faAorCisj
aWYgRU5BQkxFKEZJTEVfV1JJVEVSKQorCisjaW5jbHVkZSAiQXN5bmNGaWxlV3JpdGVyLmgiCisj
aW5jbHVkZSAiV2ViRmlsZUVycm9yLmgiCisjaW5jbHVkZSAiV2ViRmlsZVdyaXRlckNsaWVudC5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBCbG9iOworY2xhc3MgRmlsZVdyaXRlckNs
aWVudDsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkZpbGVXcml0ZXI7CisK
K2NsYXNzIEFzeW5jRmlsZVdyaXRlckNocm9taXVtIDogcHVibGljIFdlYkNvcmU6OkFzeW5jRmls
ZVdyaXRlciwgV2ViRmlsZVdyaXRlckNsaWVudCB7CitwdWJsaWM6CisgICAgQXN5bmNGaWxlV3Jp
dGVyQ2hyb21pdW0oV2ViQ29yZTo6RmlsZVdyaXRlckNsaWVudCogY2xpZW50KTsKKyAgICB+QXN5
bmNGaWxlV3JpdGVyQ2hyb21pdW0oKTsKKworICAgIHZvaWQgc2V0V2ViRmlsZVdyaXRlcihXZWJG
aWxlV3JpdGVyKiB3cml0ZXIpOworCisgICAgLy8gRmlsZVdyaXRlcgorICAgIHZvaWQgd3JpdGUo
bG9uZyBsb25nIHBvc2l0aW9uLCBXZWJDb3JlOjpCbG9iKiBkYXRhKTsKKyAgICB2b2lkIHRydW5j
YXRlKGxvbmcgbG9uZyBsZW5ndGgpOworICAgIHZvaWQgYWJvcnQoKTsKKworICAgIC8vIFdlYkZp
bGVXcml0ZXJDbGllbnQKKyAgICB2aXJ0dWFsIHZvaWQgZGlkV3JpdGUobG9uZyBsb25nIGJ5dGVz
LCBib29sIGNvbXBsZXRlKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkVHJ1bmNhdGUobG9uZyBsb25n
IGxlbmd0aCk7CisgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoV2ViRmlsZUVycm9yKTsKKworcHJp
dmF0ZToKKyAgICBPd25QdHI8V2ViRmlsZVdyaXRlcio+IG1fd3JpdGVyOworICAgIFdlYkNvcmU6
OkZpbGVXcml0ZXJDbGllbnQqIG1fY2xpZW50OworfTsKKworfSAvLyBuYW1lc3BhY2UKKworI2Vu
ZGlmIC8vIEVOQUJMRShGSUxFX1dSSVRFUikKKworI2VuZGlmIC8vIEFzeW5jRmlsZVdyaXRlckNo
cm9taXVtX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65638</attachid>
            <date>2010-08-26 16:04:13 -0700</date>
            <delta_ts>2010-08-27 10:34:14 -0700</delta_ts>
            <desc>Fixed issues Kinuko found</desc>
            <filename>webkit.patch</filename>
            <type>text/plain</type>
            <size>14414</size>
            <attacher name="Eric U.">ericu</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNjYxMzkpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTAtMDgtMjUgIEVyaWMg
VWhyaGFuZSAgPGVyaWN1QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgQ2hyb21pdW0gQVBJIGZvciBGaWxlV3JpdGVyCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDM2MAorCisg
ICAgICAgIEJ1aWxkIGZpbGUgY2hhbmdlcy4KKyAgICAgICAgKiBXZWJLaXQuZ3lwOgorCisgICAg
ICAgIEFkZGVkIGEgd2F5IHRvIGdldCBhIFdlYkZpbGVXcml0ZXIuCisgICAgICAgICogcHVibGlj
L1dlYkZpbGVTeXN0ZW0uaDoKKyAgICAgICAgKFdlYktpdDo6V2ViRmlsZVN5c3RlbTo6Y3JlYXRl
RmlsZVdyaXRlcik6CisKKyAgICAgICAgV2ViRmlsZVdyaXRlciB3cml0ZXMgYW5kIHRydW5jYXRl
cyBmaWxlcy4KKyAgICAgICAgKiBwdWJsaWMvV2ViRmlsZVdyaXRlci5oOiBBZGRlZC4KKworICAg
ICAgICBXZWJGaWxlV3JpdGVyQ2xpZW50IHJlcG9ydHMgc3VjY2Vzcy9mYWlsdXJlIGFuZCBwcm9n
cmVzcyBldmVudHMuCisgICAgICAgICogcHVibGljL1dlYkZpbGVXcml0ZXJDbGllbnQuaDogQWRk
ZWQuCisKKyAgICAgICAgQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0gaXMgYSBjb25uZWN0b3IgdGhh
dCBsaW5rcyBGaWxlV3JpdGVyIGFuZCBXZWJGaWxlV3JpdGVyLCBGaWxlV3JpdGVyQ2xpZW50IGFu
ZCBXZWJGaWxlV3JpdGVyQ2xpZW50LgorICAgICAgICAqIHNyYy9Bc3luY0ZpbGVXcml0ZXJDaHJv
bWl1bS5jcHA6IEFkZGVkLgorICAgICAgICAqIHNyYy9Bc3luY0ZpbGVXcml0ZXJDaHJvbWl1bS5o
OiBBZGRlZC4KKwogMjAxMC0wOC0yNiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6IFdlYktpdC9jaHJvbWl1
bS9XZWJLaXQuZ3lwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCShy
ZXZpc2lvbiA2NjEzOSkKKysrIFdlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNjcsNiArMTY3LDggQEAKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkZpbGVT
eXN0ZW1DYWxsYmFja3MuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJGaWxlU3lzdGVt
RW50cnkuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJGaWxlVXRpbGl0aWVzLmgnLAor
ICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRmlsZVdyaXRlci5oJywKKyAgICAgICAgICAgICAg
ICAncHVibGljL1dlYkZpbGVXcml0ZXJDbGllbnQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1Ymxp
Yy9XZWJGaW5kT3B0aW9ucy5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkZsb2F0UG9p
bnQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJGbG9hdFJlY3QuaCcsCkBAIC0yOTIs
NiArMjk0LDggQEAKICAgICAgICAgICAgICAgICAnc3JjL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNw
cCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9BcHBsaWNhdGlvbkNhY2hlSG9zdEludGVybmFsLmgn
LAogICAgICAgICAgICAgICAgICdzcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAnLAorICAgICAg
ICAgICAgICAgICdzcmMvQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0uY3BwJywKKyAgICAgICAgICAg
ICAgICAnc3JjL0FzeW5jRmlsZVdyaXRlckNocm9taXVtLmgnLAogICAgICAgICAgICAgICAgICdz
cmMvQXV0b0ZpbGxQb3B1cE1lbnVDbGllbnQuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL0F1
dG9GaWxsUG9wdXBNZW51Q2xpZW50LmgnLAogICAgICAgICAgICAgICAgICdzcmMvQmFja0Zvcndh
cmRMaXN0Q2xpZW50SW1wbC5jcHAnLApJbmRleDogV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJG
aWxlU3lzdGVtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGaWxl
U3lzdGVtLmgJKHJldmlzaW9uIDY2MTM5KQorKysgV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJG
aWxlU3lzdGVtLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDggQEAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCiBjbGFzcyBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzOworY2xhc3MgV2ViRmlsZVdy
aXRlcjsKK2NsYXNzIFdlYkZpbGVXcml0ZXJDbGllbnQ7CiAKIGNsYXNzIFdlYkZpbGVTeXN0ZW0g
ewogcHVibGljOgpAQCAtMTAwLDYgKzEwMiwxMCBAQCBwdWJsaWM6CiAgICAgLy8gV2ViRmlsZVN5
c3RlbUNhbGxiYWNrczo6ZGlkRmFpbCgpIG11c3QgYmUgY2FsbGVkIG90aGVyd2lzZS4KICAgICB2
aXJ0dWFsIHZvaWQgcmVhZERpcmVjdG9yeShjb25zdCBXZWJTdHJpbmcmIHBhdGgsIFdlYkZpbGVT
eXN0ZW1DYWxsYmFja3MqKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCisgICAg
Ly8gQ3JlYXRlcyBhIFdlYkZpbGVXcml0ZXIgdGhhdCBjYW4gYmUgdXNlZCB0byB3cml0ZSB0byB0
aGUgZ2l2ZW4gZmlsZS4KKyAgICAvLyBUaGlzIGlzIGEgZmFzdCwgc3luY2hyb25vdXMgY2FsbCwg
YW5kIHNob3VsZCBub3Qgc3RhdCB0aGUgZmlsZXN5c3RlbS4KKyAgICB2aXJ0dWFsIFdlYkZpbGVX
cml0ZXIqIGNyZWF0ZUZpbGVXcml0ZXIoY29uc3QgV2ViU3RyaW5nJiBwYXRoLCBXZWJGaWxlV3Jp
dGVyQ2xpZW50KikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiAwOyB9CisK
IHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5XZWJGaWxlU3lzdGVtKCkgeyB9CiB9OwpJbmRleDog
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGaWxlV3JpdGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGaWxlV3JpdGVyLmgJKHJldmlzaW9uIDApCisrKyBXZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYkZpbGVXcml0ZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0Ogor
ICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisg
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgV2ViRmlsZVdyaXRlcl9oCisjZGVmaW5lIFdlYkZpbGVXcml0ZXJfaAor
CisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJVUkw7CisKK2NsYXNzIFdlYkZpbGVXcml0ZXIgewor
cHVibGljOgorICAgIHZpcnR1YWwgfldlYkZpbGVXcml0ZXIoKSB7IH0KKworICAgIC8vIE9ubHkg
b25lIHdyaXRlIG9yIG9uZSB0cnVuY2F0ZSBvcGVyYXRpb24gY2FuIGJlIGluIHByb2dyZXNzIGF0
IGEgdGltZS4KKyAgICAvLyBUaGVzZSBmdW5jdGlvbnMgYXJlIGFzeW5jaHJvbm91cyBhbmQgd2ls
bCByZXBvcnQgcmVzdWx0cyB0aHJvdWdoIHRoZSBXZWJGaWxlV3JpdGVyJ3MgYXNzb2NpYXRlZCBX
ZWJGaWxlV3JpdGVyQ2xpZW50LgorICAgIHZpcnR1YWwgdm9pZCB3cml0ZShsb25nIGxvbmcgcG9z
aXRpb24sIGNvbnN0IFdlYlVSTCYgYmxvYlVSTCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB0cnVu
Y2F0ZShsb25nIGxvbmcgbGVuZ3RoKSA9IDA7CisKKyAgICAvLyBDYW5jZWwgd2lsbCBhdHRlbXB0
IHRvIGFib3J0IGEgcnVubmluZyB3cml0ZSBvciB0cnVuY2F0ZS4gIEhvd2V2ZXIsIGl0IG1heSBu
b3QgYmUgcG9zc2libGUgdG8gY2FuY2VsIGFuIGluLXByb2dyZXNzIGFjdGlvbiwgb3IgdGhlIGNh
bGwgbWF5IGhhdmUgY29tZSBpbiB0b28gbGF0ZS4gIFBhcnRpYWwgd3JpdGVzIGFyZSBwb3NzaWJs
ZS4KKyAgICAvLyBEbyBub3QgY2FsbCBjYW5jZWwgd2hlbiB0aGVyZSBpcyBubyB3cml0ZSBvciB0
cnVuY2F0ZSBpbiBwcm9ncmVzcy4KKyAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsKCkgPSAwOworfTsK
KyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKSW5kZXg6IFdlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViRmlsZVdyaXRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViRmlsZVdyaXRlckNsaWVudC5oCShyZXZpc2lvbiAwKQorKysgV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGaWxlV3JpdGVyQ2xpZW50LmgJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAq
IG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkZpbGVXcml0ZXJDbGllbnRfaAorI2RlZmluZSBXZWJG
aWxlV3JpdGVyQ2xpZW50X2gKKworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorI2luY2x1ZGUgIldl
YkZpbGVFcnJvci5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViRmlsZVdyaXRl
ckNsaWVudCB7CitwdWJsaWM6CisgICAgLy8gQ2FsbGVkIGZvciBlYWNoIGNodW5rIG9mIGEgd3Jp
dGUsIHRvIGluZGljYXRlIHByb2dyZXNzLgorICAgIC8vIE9uIHRoZSBmaW5hbCBjaHVuaywgd2hl
biB0aGUgd3JpdGUgaXMgZmluaXNoZWQsIGNvbXBsZXRlIHdpbGwgYmUgdHJ1ZS4KKyAgICB2aXJ0
dWFsIHZvaWQgZGlkV3JpdGUobG9uZyBsb25nIGJ5dGVzLCBib29sIGNvbXBsZXRlKSA9IDA7CisK
KyAgICAvLyBDYWxsZWQgb25jZSB3aGVuIHRoZSB0cnVuY2F0ZSBjb21wbGV0ZXMgc3VjY2Vzc2Z1
bGx5LgorICAgIHZpcnR1YWwgdm9pZCBkaWRUcnVuY2F0ZShsb25nIGxvbmcgbGVuZ3RoKSA9IDA7
CisKKyAgICAvLyBDYWxsZWQgaWYgdGhlIHdyaXRlIG9yIHRydW5jYXRlIGZhaWxzLCBvciBpZiBp
dCBpcyBjYW5jZWxsZWQgYmVmb3JlIGRpZFdyaXRlIG9yIGRpZFRydW5jYXRlIGlzIGNhbGxlZC4K
KyAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChXZWJGaWxlRXJyb3IpID0gMDsKKworcHJvdGVjdGVk
OgorICAgIHZpcnR1YWwgfldlYkZpbGVXcml0ZXJDbGllbnQoKSB7IH0KK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdAorCisjZW5kaWYKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvQXN5bmNG
aWxlV3JpdGVyQ2hyb21pdW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMv
QXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0uY3BwCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L2Nocm9t
aXVtL3NyYy9Bc3luY0ZpbGVXcml0ZXJDaHJvbWl1bS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoK
KyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgor
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQXN5bmNGaWxlV3JpdGVyQ2hy
b21pdW0uaCIKKworI2lmIEVOQUJMRShGSUxFX1dSSVRFUikKKworI2luY2x1ZGUgIkJsb2IuaCIK
KyNpbmNsdWRlICJGaWxlV3JpdGVyQ2xpZW50LmgiCisjaW5jbHVkZSAiV2ViRmlsZVdyaXRlci5o
IgorI2luY2x1ZGUgIldlYlVSTC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworQXN5bmNGaWxl
V3JpdGVyQ2hyb21pdW06OkFzeW5jRmlsZVdyaXRlckNocm9taXVtKFdlYkNvcmU6OkZpbGVXcml0
ZXJDbGllbnQqIGNsaWVudCkKKyAgICA6IG1fY2xpZW50KGNsaWVudCkKK3sKK30KKwordm9pZCBB
c3luY0ZpbGVXcml0ZXJDaHJvbWl1bTo6c2V0V2ViRmlsZVdyaXRlcihXZWJGaWxlV3JpdGVyKiB3
cml0ZXIpCit7CisgICAgQVNTRVJUKCFtX3dyaXRlcik7CisgICAgbV93cml0ZXIgPSB3cml0ZXI7
Cit9CisKK3ZvaWQgQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW06OndyaXRlKGxvbmcgbG9uZyBwb3Np
dGlvbiwgV2ViQ29yZTo6QmxvYiogZGF0YSkKK3sKKyAgICBBU1NFUlQobV93cml0ZXIpOworICAg
IG1fd3JpdGVyLT53cml0ZShwb3NpdGlvbiwgV2ViVVJMKGRhdGEtPnVybCgpKSk7Cit9CisKK3Zv
aWQgQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW06OnRydW5jYXRlKGxvbmcgbG9uZyBsZW5ndGgpCit7
CisgICAgQVNTRVJUKG1fd3JpdGVyKTsKKyAgICBtX3dyaXRlci0+dHJ1bmNhdGUobGVuZ3RoKTsK
K30KKwordm9pZCBBc3luY0ZpbGVXcml0ZXJDaHJvbWl1bTo6YWJvcnQoKQoreworICAgIEFTU0VS
VChtX3dyaXRlcik7CisgICAgbV93cml0ZXItPmNhbmNlbCgpOworfQorCit2b2lkIEFzeW5jRmls
ZVdyaXRlckNocm9taXVtOjpkaWRXcml0ZShsb25nIGxvbmcgYnl0ZXMsIGJvb2wgY29tcGxldGUp
Cit7CisgICAgQVNTRVJUKG1fd3JpdGVyKTsKKyAgICBtX2NsaWVudC0+ZGlkV3JpdGUoYnl0ZXMs
IGNvbXBsZXRlKTsKK30KKwordm9pZCBBc3luY0ZpbGVXcml0ZXJDaHJvbWl1bTo6ZGlkVHJ1bmNh
dGUobG9uZyBsb25nIGxlbmd0aCkKK3sKKyAgICBtX2NsaWVudC0+ZGlkVHJ1bmNhdGUobGVuZ3Ro
KTsKK30KKwordm9pZCBBc3luY0ZpbGVXcml0ZXJDaHJvbWl1bTo6ZGlkRmFpbChXZWJGaWxlRXJy
b3IgZXJyb3IpCit7CisgICAgbV9jbGllbnQtPmRpZEZhaWwoZXJyb3IpOworfQorCit9IC8vIG5h
bWVzcGFjZQorCisjZW5kaWYgLy8gRU5BQkxFKEZJTEVfV1JJVEVSKQpJbmRleDogV2ViS2l0L2No
cm9taXVtL3NyYy9Bc3luY0ZpbGVXcml0ZXJDaHJvbWl1bS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dC9jaHJvbWl1bS9zcmMvQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0uaAkocmV2aXNpb24gMCkKKysr
IFdlYktpdC9jaHJvbWl1bS9zcmMvQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0uaAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW1faAorI2Rl
ZmluZSBBc3luY0ZpbGVXcml0ZXJDaHJvbWl1bV9oCisKKyNpZiBFTkFCTEUoRklMRV9XUklURVIp
CisKKyNpbmNsdWRlICJBc3luY0ZpbGVXcml0ZXIuaCIKKyNpbmNsdWRlICJXZWJGaWxlRXJyb3Iu
aCIKKyNpbmNsdWRlICJXZWJGaWxlV3JpdGVyQ2xpZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKK2NsYXNzIEJsb2I7CitjbGFzcyBGaWxlV3JpdGVyQ2xpZW50OworfQorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworY2xhc3MgV2ViRmlsZVdyaXRlcjsKKworY2xhc3MgQXN5bmNGaWxlV3JpdGVy
Q2hyb21pdW0gOiBwdWJsaWMgV2ViQ29yZTo6QXN5bmNGaWxlV3JpdGVyLCBwdWJsaWMgV2ViRmls
ZVdyaXRlckNsaWVudCB7CitwdWJsaWM6CisgICAgQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0oV2Vi
Q29yZTo6RmlsZVdyaXRlckNsaWVudCogY2xpZW50KTsKKyAgICB+QXN5bmNGaWxlV3JpdGVyQ2hy
b21pdW0oKTsKKworICAgIHZvaWQgc2V0V2ViRmlsZVdyaXRlcihXZWJGaWxlV3JpdGVyKiB3cml0
ZXIpOworCisgICAgLy8gRmlsZVdyaXRlcgorICAgIHZvaWQgd3JpdGUobG9uZyBsb25nIHBvc2l0
aW9uLCBXZWJDb3JlOjpCbG9iKiBkYXRhKTsKKyAgICB2b2lkIHRydW5jYXRlKGxvbmcgbG9uZyBs
ZW5ndGgpOworICAgIHZvaWQgYWJvcnQoKTsKKworICAgIC8vIFdlYkZpbGVXcml0ZXJDbGllbnQK
KyAgICB2aXJ0dWFsIHZvaWQgZGlkV3JpdGUobG9uZyBsb25nIGJ5dGVzLCBib29sIGNvbXBsZXRl
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkVHJ1bmNhdGUobG9uZyBsb25nIGxlbmd0aCk7CisgICAg
dmlydHVhbCB2b2lkIGRpZEZhaWwoV2ViRmlsZUVycm9yKTsKKworcHJpdmF0ZToKKyAgICBPd25Q
dHI8V2ViRmlsZVdyaXRlcj4gbV93cml0ZXI7CisgICAgV2ViQ29yZTo6RmlsZVdyaXRlckNsaWVu
dCogbV9jbGllbnQ7Cit9OworCit9IC8vIG5hbWVzcGFjZQorCisjZW5kaWYgLy8gRU5BQkxFKEZJ
TEVfV1JJVEVSKQorCisjZW5kaWYgLy8gQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW1faAo=
</data>
<flag name="review"
          id="54462"
          type_id="1"
          status="-"
          setter="fishd"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65730</attachid>
            <date>2010-08-27 10:34:14 -0700</date>
            <delta_ts>2010-08-27 11:45:19 -0700</delta_ts>
            <desc>Adjusted comments for behavior and clarity, added namespace decl.</desc>
            <filename>webkit.patch</filename>
            <type>text/plain</type>
            <size>14541</size>
            <attacher name="Eric U.">ericu</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNjYyMzIpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTAtMDgtMjcgIEVyaWMg
VWhyaGFuZSAgPGVyaWN1QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgQ2hyb21pdW0gQVBJIGZvciBGaWxlV3JpdGVyCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDM2MAorCisg
ICAgICAgIEJ1aWxkIGZpbGUgY2hhbmdlcy4KKyAgICAgICAgKiBXZWJLaXQuZ3lwOgorCisgICAg
ICAgIEFkZGVkIGEgd2F5IHRvIGdldCBhIFdlYkZpbGVXcml0ZXIuCisgICAgICAgICogcHVibGlj
L1dlYkZpbGVTeXN0ZW0uaDoKKyAgICAgICAgKFdlYktpdDo6V2ViRmlsZVN5c3RlbTo6Y3JlYXRl
RmlsZVdyaXRlcik6CisKKyAgICAgICAgV2ViRmlsZVdyaXRlciB3cml0ZXMgYW5kIHRydW5jYXRl
cyBmaWxlcy4KKyAgICAgICAgKiBwdWJsaWMvV2ViRmlsZVdyaXRlci5oOiBBZGRlZC4KKworICAg
ICAgICBXZWJGaWxlV3JpdGVyQ2xpZW50IHJlcG9ydHMgc3VjY2Vzcy9mYWlsdXJlIGFuZCBwcm9n
cmVzcyBldmVudHMuCisgICAgICAgICogcHVibGljL1dlYkZpbGVXcml0ZXJDbGllbnQuaDogQWRk
ZWQuCisKKyAgICAgICAgQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0gaXMgYSBjb25uZWN0b3IgdGhh
dCBsaW5rcyBGaWxlV3JpdGVyIGFuZCBXZWJGaWxlV3JpdGVyLCBGaWxlV3JpdGVyQ2xpZW50IGFu
ZCBXZWJGaWxlV3JpdGVyQ2xpZW50LgorICAgICAgICAqIHNyYy9Bc3luY0ZpbGVXcml0ZXJDaHJv
bWl1bS5jcHA6IEFkZGVkLgorICAgICAgICAqIHNyYy9Bc3luY0ZpbGVXcml0ZXJDaHJvbWl1bS5o
OiBBZGRlZC4KKwogMjAxMC0wOC0yNSAgSmVyZW15IE9ybG93ICA8am9ybG93QGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBTdGV2ZSBCbG9jay4KSW5kZXg6IFdlYktpdC9jaHJv
bWl1bS9XZWJLaXQuZ3lwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lw
CShyZXZpc2lvbiA2NjEzOSkKKysrIFdlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNjcsNiArMTY3LDggQEAKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkZp
bGVTeXN0ZW1DYWxsYmFja3MuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJGaWxlU3lz
dGVtRW50cnkuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJGaWxlVXRpbGl0aWVzLmgn
LAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRmlsZVdyaXRlci5oJywKKyAgICAgICAgICAg
ICAgICAncHVibGljL1dlYkZpbGVXcml0ZXJDbGllbnQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1
YmxpYy9XZWJGaW5kT3B0aW9ucy5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkZsb2F0
UG9pbnQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJGbG9hdFJlY3QuaCcsCkBAIC0y
OTIsNiArMjk0LDggQEAKICAgICAgICAgICAgICAgICAnc3JjL0FwcGxpY2F0aW9uQ2FjaGVIb3N0
LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9BcHBsaWNhdGlvbkNhY2hlSG9zdEludGVybmFs
LmgnLAogICAgICAgICAgICAgICAgICdzcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAnLAorICAg
ICAgICAgICAgICAgICdzcmMvQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0uY3BwJywKKyAgICAgICAg
ICAgICAgICAnc3JjL0FzeW5jRmlsZVdyaXRlckNocm9taXVtLmgnLAogICAgICAgICAgICAgICAg
ICdzcmMvQXV0b0ZpbGxQb3B1cE1lbnVDbGllbnQuY3BwJywKICAgICAgICAgICAgICAgICAnc3Jj
L0F1dG9GaWxsUG9wdXBNZW51Q2xpZW50LmgnLAogICAgICAgICAgICAgICAgICdzcmMvQmFja0Zv
cndhcmRMaXN0Q2xpZW50SW1wbC5jcHAnLApJbmRleDogV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJGaWxlU3lzdGVtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJG
aWxlU3lzdGVtLmgJKHJldmlzaW9uIDY2MTM5KQorKysgV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJGaWxlU3lzdGVtLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDggQEAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiBjbGFzcyBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzOworY2xhc3MgV2ViRmls
ZVdyaXRlcjsKK2NsYXNzIFdlYkZpbGVXcml0ZXJDbGllbnQ7CiAKIGNsYXNzIFdlYkZpbGVTeXN0
ZW0gewogcHVibGljOgpAQCAtMTAwLDYgKzEwMiwxMCBAQCBwdWJsaWM6CiAgICAgLy8gV2ViRmls
ZVN5c3RlbUNhbGxiYWNrczo6ZGlkRmFpbCgpIG11c3QgYmUgY2FsbGVkIG90aGVyd2lzZS4KICAg
ICB2aXJ0dWFsIHZvaWQgcmVhZERpcmVjdG9yeShjb25zdCBXZWJTdHJpbmcmIHBhdGgsIFdlYkZp
bGVTeXN0ZW1DYWxsYmFja3MqKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCisg
ICAgLy8gQ3JlYXRlcyBhIFdlYkZpbGVXcml0ZXIgdGhhdCBjYW4gYmUgdXNlZCB0byB3cml0ZSB0
byB0aGUgZ2l2ZW4gZmlsZS4KKyAgICAvLyBUaGlzIGlzIGEgZmFzdCwgc3luY2hyb25vdXMgY2Fs
bCwgYW5kIHNob3VsZCBub3Qgc3RhdCB0aGUgZmlsZXN5c3RlbS4KKyAgICB2aXJ0dWFsIFdlYkZp
bGVXcml0ZXIqIGNyZWF0ZUZpbGVXcml0ZXIoY29uc3QgV2ViU3RyaW5nJiBwYXRoLCBXZWJGaWxl
V3JpdGVyQ2xpZW50KikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiAwOyB9
CisKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5XZWJGaWxlU3lzdGVtKCkgeyB9CiB9OwpJbmRl
eDogV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGaWxlV3JpdGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGaWxlV3JpdGVyLmgJKHJldmlzaW9uIDApCisrKyBX
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZpbGVXcml0ZXIuaAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0
OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgV2ViRmlsZVdyaXRlcl9oCisjZGVmaW5lIFdlYkZpbGVXcml0ZXJf
aAorCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJVUkw7CisKK2NsYXNzIFdlYkZpbGVXcml0ZXIg
eworcHVibGljOgorICAgIHZpcnR1YWwgfldlYkZpbGVXcml0ZXIoKSB7IH0KKworICAgIC8vIE9u
bHkgb25lIHdyaXRlIG9yIG9uZSB0cnVuY2F0ZSBvcGVyYXRpb24gY2FuIGJlIGluIHByb2dyZXNz
IGF0IGEgdGltZS4KKyAgICAvLyBUaGVzZSBmdW5jdGlvbnMgYXJlIGFzeW5jaHJvbm91cyBhbmQg
d2lsbCByZXBvcnQgcmVzdWx0cyB0aHJvdWdoIHRoZSBXZWJGaWxlV3JpdGVyJ3MgYXNzb2NpYXRl
ZCBXZWJGaWxlV3JpdGVyQ2xpZW50LgorICAgIHZpcnR1YWwgdm9pZCB3cml0ZShsb25nIGxvbmcg
cG9zaXRpb24sIGNvbnN0IFdlYlVSTCYgYmxvYlVSTCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB0
cnVuY2F0ZShsb25nIGxvbmcgbGVuZ3RoKSA9IDA7CisKKyAgICAvLyBDYW5jZWwgd2lsbCBhdHRl
bXB0IHRvIGFib3J0IGEgcnVubmluZyB3cml0ZSBvciB0cnVuY2F0ZS4gIEhvd2V2ZXIsIGl0IG1h
eSBub3QgYmUgcG9zc2libGUgdG8gY2FuY2VsIGFuIGluLXByb2dyZXNzIGFjdGlvbiwgb3IgdGhl
IGNhbGwgbWF5IGhhdmUgY29tZSBpbiB0b28gbGF0ZS4gIFBhcnRpYWwgd3JpdGVzIGFyZSBwb3Nz
aWJsZS4KKyAgICAvLyBEbyBub3QgY2FsbCBjYW5jZWwgd2hlbiB0aGVyZSBpcyBubyB3cml0ZSBv
ciB0cnVuY2F0ZSBpbiBwcm9ncmVzcy4KKyAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsKCkgPSAwOwor
fTsKKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKSW5kZXg6IFdlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViRmlsZVdyaXRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViRmlsZVdyaXRlckNsaWVudC5oCShyZXZpc2lvbiAwKQorKysg
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGaWxlV3JpdGVyQ2xpZW50LmgJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkZpbGVXcml0ZXJDbGllbnRfaAorI2RlZmluZSBX
ZWJGaWxlV3JpdGVyQ2xpZW50X2gKKworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorI2luY2x1ZGUg
IldlYkZpbGVFcnJvci5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViRmlsZVdy
aXRlckNsaWVudCB7CitwdWJsaWM6CisgICAgLy8gQ2FsbGVkIGZvciBlYWNoIGNodW5rIG9mIGEg
d3JpdGUsIHRvIGluZGljYXRlIHByb2dyZXNzLgorICAgIC8vIE9uIHRoZSBmaW5hbCBjaHVuaywg
d2hlbiB0aGUgd3JpdGUgaXMgZmluaXNoZWQsIGNvbXBsZXRlIHdpbGwgYmUgdHJ1ZS4KKyAgICB2
aXJ0dWFsIHZvaWQgZGlkV3JpdGUobG9uZyBsb25nIGJ5dGVzLCBib29sIGNvbXBsZXRlKSA9IDA7
CisKKyAgICAvLyBDYWxsZWQgb25jZSB3aGVuIHRoZSB0cnVuY2F0ZSBjb21wbGV0ZXMgc3VjY2Vz
c2Z1bGx5LgorICAgIHZpcnR1YWwgdm9pZCBkaWRUcnVuY2F0ZShsb25nIGxvbmcgbGVuZ3RoKSA9
IDA7CisKKyAgICAvLyBDYWxsZWQgaWYgdGhlIHdyaXRlIG9yIHRydW5jYXRlIGZhaWxzLCBvciBp
ZiBpdCBpcyBjYW5jZWxsZWQgYmVmb3JlIHRoZSB3cml0ZSBvciB0cnVuY2F0ZSBjb21wbGV0ZXMu
ICBDb21wbGV0aW9uIG9mIGFuIG9wZXJhdGlvbiB3aWxsIGJlIHNpZ25hbGxlZCBleGFjdGx5IG9u
Y2UsIGVpdGhlciBieSBkaWRGYWlsLCBkaWRUcnVuY2F0ZSwgb3IgZGlkV3JpdGUoLi4uLCB0cnVl
KS4KKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChXZWJGaWxlRXJyb3IpID0gMDsKKworcHJvdGVj
dGVkOgorICAgIHZpcnR1YWwgfldlYkZpbGVXcml0ZXJDbGllbnQoKSB7IH0KK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvQXN5
bmNGaWxlV3JpdGVyQ2hyb21pdW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9z
cmMvQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0uY3BwCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L2No
cm9taXVtL3NyYy9Bc3luY0ZpbGVXcml0ZXJDaHJvbWl1bS5jcHAJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsOTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1l
dDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQXN5bmNGaWxlV3JpdGVy
Q2hyb21pdW0uaCIKKworI2lmIEVOQUJMRShGSUxFX1dSSVRFUikKKworI2luY2x1ZGUgIkJsb2Iu
aCIKKyNpbmNsdWRlICJGaWxlV3JpdGVyQ2xpZW50LmgiCisjaW5jbHVkZSAiV2ViRmlsZVdyaXRl
ci5oIgorI2luY2x1ZGUgIldlYlVSTC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK0FzeW5jRmlsZVdyaXRlckNocm9taXVtOjpBc3luY0ZpbGVX
cml0ZXJDaHJvbWl1bShGaWxlV3JpdGVyQ2xpZW50KiBjbGllbnQpCisgICAgOiBtX2NsaWVudChj
bGllbnQpCit7Cit9CisKK3ZvaWQgQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW06OnNldFdlYkZpbGVX
cml0ZXIoV2ViRmlsZVdyaXRlciogd3JpdGVyKQoreworICAgIEFTU0VSVCghbV93cml0ZXIpOwor
ICAgIG1fd3JpdGVyID0gd3JpdGVyOworfQorCit2b2lkIEFzeW5jRmlsZVdyaXRlckNocm9taXVt
Ojp3cml0ZShsb25nIGxvbmcgcG9zaXRpb24sIEJsb2IqIGRhdGEpCit7CisgICAgQVNTRVJUKG1f
d3JpdGVyKTsKKyAgICBtX3dyaXRlci0+d3JpdGUocG9zaXRpb24sIFdlYlVSTChkYXRhLT51cmwo
KSkpOworfQorCit2b2lkIEFzeW5jRmlsZVdyaXRlckNocm9taXVtOjp0cnVuY2F0ZShsb25nIGxv
bmcgbGVuZ3RoKQoreworICAgIEFTU0VSVChtX3dyaXRlcik7CisgICAgbV93cml0ZXItPnRydW5j
YXRlKGxlbmd0aCk7Cit9CisKK3ZvaWQgQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW06OmFib3J0KCkK
K3sKKyAgICBBU1NFUlQobV93cml0ZXIpOworICAgIG1fd3JpdGVyLT5jYW5jZWwoKTsKK30KKwor
dm9pZCBBc3luY0ZpbGVXcml0ZXJDaHJvbWl1bTo6ZGlkV3JpdGUobG9uZyBsb25nIGJ5dGVzLCBi
b29sIGNvbXBsZXRlKQoreworICAgIEFTU0VSVChtX3dyaXRlcik7CisgICAgbV9jbGllbnQtPmRp
ZFdyaXRlKGJ5dGVzLCBjb21wbGV0ZSk7Cit9CisKK3ZvaWQgQXN5bmNGaWxlV3JpdGVyQ2hyb21p
dW06OmRpZFRydW5jYXRlKGxvbmcgbG9uZyBsZW5ndGgpCit7CisgICAgbV9jbGllbnQtPmRpZFRy
dW5jYXRlKGxlbmd0aCk7Cit9CisKK3ZvaWQgQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW06OmRpZEZh
aWwoV2ViRmlsZUVycm9yIGVycm9yKQoreworICAgIG1fY2xpZW50LT5kaWRGYWlsKGVycm9yKTsK
K30KKworfSAvLyBuYW1lc3BhY2UKKworI2VuZGlmIC8vIEVOQUJMRShGSUxFX1dSSVRFUikKSW5k
ZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL0FzeW5jRmlsZVdyaXRlckNocm9taXVtLmgJKHJl
dmlzaW9uIDApCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL0FzeW5jRmlsZVdyaXRlckNocm9taXVt
LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEFzeW5jRmlsZVdyaXRlckNo
cm9taXVtX2gKKyNkZWZpbmUgQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW1faAorCisjaWYgRU5BQkxF
KEZJTEVfV1JJVEVSKQorCisjaW5jbHVkZSAiQXN5bmNGaWxlV3JpdGVyLmgiCisjaW5jbHVkZSAi
V2ViRmlsZUVycm9yLmgiCisjaW5jbHVkZSAiV2ViRmlsZVdyaXRlckNsaWVudC5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CitjbGFzcyBCbG9iOworY2xhc3MgRmlsZVdyaXRlckNsaWVudDsKK30K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkZpbGVXcml0ZXI7CisKK2NsYXNzIEFz
eW5jRmlsZVdyaXRlckNocm9taXVtIDogcHVibGljIFdlYkNvcmU6OkFzeW5jRmlsZVdyaXRlciwg
cHVibGljIFdlYkZpbGVXcml0ZXJDbGllbnQgeworcHVibGljOgorICAgIEFzeW5jRmlsZVdyaXRl
ckNocm9taXVtKFdlYkNvcmU6OkZpbGVXcml0ZXJDbGllbnQqIGNsaWVudCk7CisgICAgfkFzeW5j
RmlsZVdyaXRlckNocm9taXVtKCk7CisKKyAgICB2b2lkIHNldFdlYkZpbGVXcml0ZXIoV2ViRmls
ZVdyaXRlciogd3JpdGVyKTsKKworICAgIC8vIEZpbGVXcml0ZXIKKyAgICB2b2lkIHdyaXRlKGxv
bmcgbG9uZyBwb3NpdGlvbiwgV2ViQ29yZTo6QmxvYiogZGF0YSk7CisgICAgdm9pZCB0cnVuY2F0
ZShsb25nIGxvbmcgbGVuZ3RoKTsKKyAgICB2b2lkIGFib3J0KCk7CisKKyAgICAvLyBXZWJGaWxl
V3JpdGVyQ2xpZW50CisgICAgdmlydHVhbCB2b2lkIGRpZFdyaXRlKGxvbmcgbG9uZyBieXRlcywg
Ym9vbCBjb21wbGV0ZSk7CisgICAgdmlydHVhbCB2b2lkIGRpZFRydW5jYXRlKGxvbmcgbG9uZyBs
ZW5ndGgpOworICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKFdlYkZpbGVFcnJvcik7CisKK3ByaXZh
dGU6CisgICAgT3duUHRyPFdlYkZpbGVXcml0ZXI+IG1fd3JpdGVyOworICAgIFdlYkNvcmU6OkZp
bGVXcml0ZXJDbGllbnQqIG1fY2xpZW50OworfTsKKworfSAvLyBuYW1lc3BhY2UKKworI2VuZGlm
IC8vIEVOQUJMRShGSUxFX1dSSVRFUikKKworI2VuZGlmIC8vIEFzeW5jRmlsZVdyaXRlckNocm9t
aXVtX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65744</attachid>
            <date>2010-08-27 11:45:19 -0700</date>
            <delta_ts>2010-09-10 23:04:23 -0700</delta_ts>
            <desc>Added virtual hint</desc>
            <filename>webkit1.patch</filename>
            <type>text/plain</type>
            <size>14565</size>
            <attacher name="Eric U.">ericu</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNjYyMzIpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTAtMDgtMjcgIEVyaWMg
VWhyaGFuZSAgPGVyaWN1QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgQ2hyb21pdW0gQVBJIGZvciBGaWxlV3JpdGVyCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDM2MAorCisg
ICAgICAgIEJ1aWxkIGZpbGUgY2hhbmdlcy4KKyAgICAgICAgKiBXZWJLaXQuZ3lwOgorCisgICAg
ICAgIEFkZGVkIGEgd2F5IHRvIGdldCBhIFdlYkZpbGVXcml0ZXIuCisgICAgICAgICogcHVibGlj
L1dlYkZpbGVTeXN0ZW0uaDoKKyAgICAgICAgKFdlYktpdDo6V2ViRmlsZVN5c3RlbTo6Y3JlYXRl
RmlsZVdyaXRlcik6CisKKyAgICAgICAgV2ViRmlsZVdyaXRlciB3cml0ZXMgYW5kIHRydW5jYXRl
cyBmaWxlcy4KKyAgICAgICAgKiBwdWJsaWMvV2ViRmlsZVdyaXRlci5oOiBBZGRlZC4KKworICAg
ICAgICBXZWJGaWxlV3JpdGVyQ2xpZW50IHJlcG9ydHMgc3VjY2Vzcy9mYWlsdXJlIGFuZCBwcm9n
cmVzcyBldmVudHMuCisgICAgICAgICogcHVibGljL1dlYkZpbGVXcml0ZXJDbGllbnQuaDogQWRk
ZWQuCisKKyAgICAgICAgQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0gaXMgYSBjb25uZWN0b3IgdGhh
dCBsaW5rcyBGaWxlV3JpdGVyIGFuZCBXZWJGaWxlV3JpdGVyLCBGaWxlV3JpdGVyQ2xpZW50IGFu
ZCBXZWJGaWxlV3JpdGVyQ2xpZW50LgorICAgICAgICAqIHNyYy9Bc3luY0ZpbGVXcml0ZXJDaHJv
bWl1bS5jcHA6IEFkZGVkLgorICAgICAgICAqIHNyYy9Bc3luY0ZpbGVXcml0ZXJDaHJvbWl1bS5o
OiBBZGRlZC4KKwogMjAxMC0wOC0yNSAgSmVyZW15IE9ybG93ICA8am9ybG93QGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBTdGV2ZSBCbG9jay4KSW5kZXg6IFdlYktpdC9jaHJv
bWl1bS9XZWJLaXQuZ3lwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lw
CShyZXZpc2lvbiA2NjEzOSkKKysrIFdlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNjcsNiArMTY3LDggQEAKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkZp
bGVTeXN0ZW1DYWxsYmFja3MuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJGaWxlU3lz
dGVtRW50cnkuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJGaWxlVXRpbGl0aWVzLmgn
LAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRmlsZVdyaXRlci5oJywKKyAgICAgICAgICAg
ICAgICAncHVibGljL1dlYkZpbGVXcml0ZXJDbGllbnQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1
YmxpYy9XZWJGaW5kT3B0aW9ucy5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkZsb2F0
UG9pbnQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJGbG9hdFJlY3QuaCcsCkBAIC0y
OTIsNiArMjk0LDggQEAKICAgICAgICAgICAgICAgICAnc3JjL0FwcGxpY2F0aW9uQ2FjaGVIb3N0
LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9BcHBsaWNhdGlvbkNhY2hlSG9zdEludGVybmFs
LmgnLAogICAgICAgICAgICAgICAgICdzcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAnLAorICAg
ICAgICAgICAgICAgICdzcmMvQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0uY3BwJywKKyAgICAgICAg
ICAgICAgICAnc3JjL0FzeW5jRmlsZVdyaXRlckNocm9taXVtLmgnLAogICAgICAgICAgICAgICAg
ICdzcmMvQXV0b0ZpbGxQb3B1cE1lbnVDbGllbnQuY3BwJywKICAgICAgICAgICAgICAgICAnc3Jj
L0F1dG9GaWxsUG9wdXBNZW51Q2xpZW50LmgnLAogICAgICAgICAgICAgICAgICdzcmMvQmFja0Zv
cndhcmRMaXN0Q2xpZW50SW1wbC5jcHAnLApJbmRleDogV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJGaWxlU3lzdGVtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJG
aWxlU3lzdGVtLmgJKHJldmlzaW9uIDY2MTM5KQorKysgV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJGaWxlU3lzdGVtLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDggQEAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiBjbGFzcyBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzOworY2xhc3MgV2ViRmls
ZVdyaXRlcjsKK2NsYXNzIFdlYkZpbGVXcml0ZXJDbGllbnQ7CiAKIGNsYXNzIFdlYkZpbGVTeXN0
ZW0gewogcHVibGljOgpAQCAtMTAwLDYgKzEwMiwxMCBAQCBwdWJsaWM6CiAgICAgLy8gV2ViRmls
ZVN5c3RlbUNhbGxiYWNrczo6ZGlkRmFpbCgpIG11c3QgYmUgY2FsbGVkIG90aGVyd2lzZS4KICAg
ICB2aXJ0dWFsIHZvaWQgcmVhZERpcmVjdG9yeShjb25zdCBXZWJTdHJpbmcmIHBhdGgsIFdlYkZp
bGVTeXN0ZW1DYWxsYmFja3MqKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCisg
ICAgLy8gQ3JlYXRlcyBhIFdlYkZpbGVXcml0ZXIgdGhhdCBjYW4gYmUgdXNlZCB0byB3cml0ZSB0
byB0aGUgZ2l2ZW4gZmlsZS4KKyAgICAvLyBUaGlzIGlzIGEgZmFzdCwgc3luY2hyb25vdXMgY2Fs
bCwgYW5kIHNob3VsZCBub3Qgc3RhdCB0aGUgZmlsZXN5c3RlbS4KKyAgICB2aXJ0dWFsIFdlYkZp
bGVXcml0ZXIqIGNyZWF0ZUZpbGVXcml0ZXIoY29uc3QgV2ViU3RyaW5nJiBwYXRoLCBXZWJGaWxl
V3JpdGVyQ2xpZW50KikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiAwOyB9
CisKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5XZWJGaWxlU3lzdGVtKCkgeyB9CiB9OwpJbmRl
eDogV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGaWxlV3JpdGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGaWxlV3JpdGVyLmgJKHJldmlzaW9uIDApCisrKyBX
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZpbGVXcml0ZXIuaAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0
OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgV2ViRmlsZVdyaXRlcl9oCisjZGVmaW5lIFdlYkZpbGVXcml0ZXJf
aAorCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJVUkw7CisKK2NsYXNzIFdlYkZpbGVXcml0ZXIg
eworcHVibGljOgorICAgIHZpcnR1YWwgfldlYkZpbGVXcml0ZXIoKSB7IH0KKworICAgIC8vIE9u
bHkgb25lIHdyaXRlIG9yIG9uZSB0cnVuY2F0ZSBvcGVyYXRpb24gY2FuIGJlIGluIHByb2dyZXNz
IGF0IGEgdGltZS4KKyAgICAvLyBUaGVzZSBmdW5jdGlvbnMgYXJlIGFzeW5jaHJvbm91cyBhbmQg
d2lsbCByZXBvcnQgcmVzdWx0cyB0aHJvdWdoIHRoZSBXZWJGaWxlV3JpdGVyJ3MgYXNzb2NpYXRl
ZCBXZWJGaWxlV3JpdGVyQ2xpZW50LgorICAgIHZpcnR1YWwgdm9pZCB3cml0ZShsb25nIGxvbmcg
cG9zaXRpb24sIGNvbnN0IFdlYlVSTCYgYmxvYlVSTCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB0
cnVuY2F0ZShsb25nIGxvbmcgbGVuZ3RoKSA9IDA7CisKKyAgICAvLyBDYW5jZWwgd2lsbCBhdHRl
bXB0IHRvIGFib3J0IGEgcnVubmluZyB3cml0ZSBvciB0cnVuY2F0ZS4gIEhvd2V2ZXIsIGl0IG1h
eSBub3QgYmUgcG9zc2libGUgdG8gY2FuY2VsIGFuIGluLXByb2dyZXNzIGFjdGlvbiwgb3IgdGhl
IGNhbGwgbWF5IGhhdmUgY29tZSBpbiB0b28gbGF0ZS4gIFBhcnRpYWwgd3JpdGVzIGFyZSBwb3Nz
aWJsZS4KKyAgICAvLyBEbyBub3QgY2FsbCBjYW5jZWwgd2hlbiB0aGVyZSBpcyBubyB3cml0ZSBv
ciB0cnVuY2F0ZSBpbiBwcm9ncmVzcy4KKyAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsKCkgPSAwOwor
fTsKKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKSW5kZXg6IFdlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViRmlsZVdyaXRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViRmlsZVdyaXRlckNsaWVudC5oCShyZXZpc2lvbiAwKQorKysg
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGaWxlV3JpdGVyQ2xpZW50LmgJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkZpbGVXcml0ZXJDbGllbnRfaAorI2RlZmluZSBX
ZWJGaWxlV3JpdGVyQ2xpZW50X2gKKworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorI2luY2x1ZGUg
IldlYkZpbGVFcnJvci5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViRmlsZVdy
aXRlckNsaWVudCB7CitwdWJsaWM6CisgICAgLy8gQ2FsbGVkIGZvciBlYWNoIGNodW5rIG9mIGEg
d3JpdGUsIHRvIGluZGljYXRlIHByb2dyZXNzLgorICAgIC8vIE9uIHRoZSBmaW5hbCBjaHVuaywg
d2hlbiB0aGUgd3JpdGUgaXMgZmluaXNoZWQsIGNvbXBsZXRlIHdpbGwgYmUgdHJ1ZS4KKyAgICB2
aXJ0dWFsIHZvaWQgZGlkV3JpdGUobG9uZyBsb25nIGJ5dGVzLCBib29sIGNvbXBsZXRlKSA9IDA7
CisKKyAgICAvLyBDYWxsZWQgb25jZSB3aGVuIHRoZSB0cnVuY2F0ZSBjb21wbGV0ZXMgc3VjY2Vz
c2Z1bGx5LgorICAgIHZpcnR1YWwgdm9pZCBkaWRUcnVuY2F0ZShsb25nIGxvbmcgbGVuZ3RoKSA9
IDA7CisKKyAgICAvLyBDYWxsZWQgaWYgdGhlIHdyaXRlIG9yIHRydW5jYXRlIGZhaWxzLCBvciBp
ZiBpdCBpcyBjYW5jZWxsZWQgYmVmb3JlIHRoZSB3cml0ZSBvciB0cnVuY2F0ZSBjb21wbGV0ZXMu
ICBDb21wbGV0aW9uIG9mIGFuIG9wZXJhdGlvbiB3aWxsIGJlIHNpZ25hbGxlZCBleGFjdGx5IG9u
Y2UsIGVpdGhlciBieSBkaWRGYWlsLCBkaWRUcnVuY2F0ZSwgb3IgZGlkV3JpdGUoLi4uLCB0cnVl
KS4KKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChXZWJGaWxlRXJyb3IpID0gMDsKKworcHJvdGVj
dGVkOgorICAgIHZpcnR1YWwgfldlYkZpbGVXcml0ZXJDbGllbnQoKSB7IH0KK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvQXN5
bmNGaWxlV3JpdGVyQ2hyb21pdW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9z
cmMvQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0uY3BwCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L2No
cm9taXVtL3NyYy9Bc3luY0ZpbGVXcml0ZXJDaHJvbWl1bS5jcHAJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsOTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1l
dDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQXN5bmNGaWxlV3JpdGVy
Q2hyb21pdW0uaCIKKworI2lmIEVOQUJMRShGSUxFX1dSSVRFUikKKworI2luY2x1ZGUgIkJsb2Iu
aCIKKyNpbmNsdWRlICJGaWxlV3JpdGVyQ2xpZW50LmgiCisjaW5jbHVkZSAiV2ViRmlsZVdyaXRl
ci5oIgorI2luY2x1ZGUgIldlYlVSTC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK0FzeW5jRmlsZVdyaXRlckNocm9taXVtOjpBc3luY0ZpbGVX
cml0ZXJDaHJvbWl1bShGaWxlV3JpdGVyQ2xpZW50KiBjbGllbnQpCisgICAgOiBtX2NsaWVudChj
bGllbnQpCit7Cit9CisKK3ZvaWQgQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW06OnNldFdlYkZpbGVX
cml0ZXIoV2ViRmlsZVdyaXRlciogd3JpdGVyKQoreworICAgIEFTU0VSVCghbV93cml0ZXIpOwor
ICAgIG1fd3JpdGVyID0gd3JpdGVyOworfQorCit2b2lkIEFzeW5jRmlsZVdyaXRlckNocm9taXVt
Ojp3cml0ZShsb25nIGxvbmcgcG9zaXRpb24sIEJsb2IqIGRhdGEpCit7CisgICAgQVNTRVJUKG1f
d3JpdGVyKTsKKyAgICBtX3dyaXRlci0+d3JpdGUocG9zaXRpb24sIFdlYlVSTChkYXRhLT51cmwo
KSkpOworfQorCit2b2lkIEFzeW5jRmlsZVdyaXRlckNocm9taXVtOjp0cnVuY2F0ZShsb25nIGxv
bmcgbGVuZ3RoKQoreworICAgIEFTU0VSVChtX3dyaXRlcik7CisgICAgbV93cml0ZXItPnRydW5j
YXRlKGxlbmd0aCk7Cit9CisKK3ZvaWQgQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW06OmFib3J0KCkK
K3sKKyAgICBBU1NFUlQobV93cml0ZXIpOworICAgIG1fd3JpdGVyLT5jYW5jZWwoKTsKK30KKwor
dm9pZCBBc3luY0ZpbGVXcml0ZXJDaHJvbWl1bTo6ZGlkV3JpdGUobG9uZyBsb25nIGJ5dGVzLCBi
b29sIGNvbXBsZXRlKQoreworICAgIEFTU0VSVChtX3dyaXRlcik7CisgICAgbV9jbGllbnQtPmRp
ZFdyaXRlKGJ5dGVzLCBjb21wbGV0ZSk7Cit9CisKK3ZvaWQgQXN5bmNGaWxlV3JpdGVyQ2hyb21p
dW06OmRpZFRydW5jYXRlKGxvbmcgbG9uZyBsZW5ndGgpCit7CisgICAgbV9jbGllbnQtPmRpZFRy
dW5jYXRlKGxlbmd0aCk7Cit9CisKK3ZvaWQgQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW06OmRpZEZh
aWwoV2ViRmlsZUVycm9yIGVycm9yKQoreworICAgIG1fY2xpZW50LT5kaWRGYWlsKGVycm9yKTsK
K30KKworfSAvLyBuYW1lc3BhY2UKKworI2VuZGlmIC8vIEVOQUJMRShGSUxFX1dSSVRFUikKSW5k
ZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL0FzeW5jRmlsZVdyaXRlckNocm9taXVtLmgJKHJl
dmlzaW9uIDApCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL0FzeW5jRmlsZVdyaXRlckNocm9taXVt
LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEFzeW5jRmlsZVdyaXRlckNo
cm9taXVtX2gKKyNkZWZpbmUgQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW1faAorCisjaWYgRU5BQkxF
KEZJTEVfV1JJVEVSKQorCisjaW5jbHVkZSAiQXN5bmNGaWxlV3JpdGVyLmgiCisjaW5jbHVkZSAi
V2ViRmlsZUVycm9yLmgiCisjaW5jbHVkZSAiV2ViRmlsZVdyaXRlckNsaWVudC5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CitjbGFzcyBCbG9iOworY2xhc3MgRmlsZVdyaXRlckNsaWVudDsKK30K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkZpbGVXcml0ZXI7CisKK2NsYXNzIEFz
eW5jRmlsZVdyaXRlckNocm9taXVtIDogcHVibGljIFdlYkNvcmU6OkFzeW5jRmlsZVdyaXRlciwg
cHVibGljIFdlYkZpbGVXcml0ZXJDbGllbnQgeworcHVibGljOgorICAgIEFzeW5jRmlsZVdyaXRl
ckNocm9taXVtKFdlYkNvcmU6OkZpbGVXcml0ZXJDbGllbnQqIGNsaWVudCk7CisgICAgfkFzeW5j
RmlsZVdyaXRlckNocm9taXVtKCk7CisKKyAgICB2b2lkIHNldFdlYkZpbGVXcml0ZXIoV2ViRmls
ZVdyaXRlciogd3JpdGVyKTsKKworICAgIC8vIEZpbGVXcml0ZXIKKyAgICB2aXJ0dWFsIHZvaWQg
d3JpdGUobG9uZyBsb25nIHBvc2l0aW9uLCBXZWJDb3JlOjpCbG9iKiBkYXRhKTsKKyAgICB2aXJ0
dWFsIHZvaWQgdHJ1bmNhdGUobG9uZyBsb25nIGxlbmd0aCk7CisgICAgdmlydHVhbCB2b2lkIGFi
b3J0KCk7CisKKyAgICAvLyBXZWJGaWxlV3JpdGVyQ2xpZW50CisgICAgdmlydHVhbCB2b2lkIGRp
ZFdyaXRlKGxvbmcgbG9uZyBieXRlcywgYm9vbCBjb21wbGV0ZSk7CisgICAgdmlydHVhbCB2b2lk
IGRpZFRydW5jYXRlKGxvbmcgbG9uZyBsZW5ndGgpOworICAgIHZpcnR1YWwgdm9pZCBkaWRGYWls
KFdlYkZpbGVFcnJvcik7CisKK3ByaXZhdGU6CisgICAgT3duUHRyPFdlYkZpbGVXcml0ZXI+IG1f
d3JpdGVyOworICAgIFdlYkNvcmU6OkZpbGVXcml0ZXJDbGllbnQqIG1fY2xpZW50OworfTsKKwor
fSAvLyBuYW1lc3BhY2UKKworI2VuZGlmIC8vIEVOQUJMRShGSUxFX1dSSVRFUikKKworI2VuZGlm
IC8vIEFzeW5jRmlsZVdyaXRlckNocm9taXVtX2gK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>66980</attachid>
            <date>2010-09-08 18:16:19 -0700</date>
            <delta_ts>2010-09-13 23:07:22 -0700</delta_ts>
            <desc>Merged out the latest code.</desc>
            <filename>merged.patch</filename>
            <type>text/plain</type>
            <size>14570</size>
            <attacher name="Eric U.">ericu</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNjcwNDApCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTAtMDktMDggIEVyaWMg
VWhyaGFuZSAgPGVyaWN1QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgQ2hyb21pdW0gQVBJIGZvciBGaWxlV3JpdGVyCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDM2MAorCisg
ICAgICAgIEJ1aWxkIGZpbGUgY2hhbmdlcy4KKyAgICAgICAgKiBXZWJLaXQuZ3lwOgorCisgICAg
ICAgIEFkZGVkIGEgd2F5IHRvIGdldCBhIFdlYkZpbGVXcml0ZXIuCisgICAgICAgICogcHVibGlj
L1dlYkZpbGVTeXN0ZW0uaDoKKyAgICAgICAgKFdlYktpdDo6V2ViRmlsZVN5c3RlbTo6Y3JlYXRl
RmlsZVdyaXRlcik6CisKKyAgICAgICAgV2ViRmlsZVdyaXRlciB3cml0ZXMgYW5kIHRydW5jYXRl
cyBmaWxlcy4KKyAgICAgICAgKiBwdWJsaWMvV2ViRmlsZVdyaXRlci5oOiBBZGRlZC4KKworICAg
ICAgICBXZWJGaWxlV3JpdGVyQ2xpZW50IHJlcG9ydHMgc3VjY2Vzcy9mYWlsdXJlIGFuZCBwcm9n
cmVzcyBldmVudHMuCisgICAgICAgICogcHVibGljL1dlYkZpbGVXcml0ZXJDbGllbnQuaDogQWRk
ZWQuCisKKyAgICAgICAgQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0gaXMgYSBjb25uZWN0b3IgdGhh
dCBsaW5rcyBGaWxlV3JpdGVyIGFuZCBXZWJGaWxlV3JpdGVyLCBGaWxlV3JpdGVyQ2xpZW50IGFu
ZCBXZWJGaWxlV3JpdGVyQ2xpZW50LgorICAgICAgICAqIHNyYy9Bc3luY0ZpbGVXcml0ZXJDaHJv
bWl1bS5jcHA6IEFkZGVkLgorICAgICAgICAqIHNyYy9Bc3luY0ZpbGVXcml0ZXJDaHJvbWl1bS5o
OiBBZGRlZC4KKwogMjAxMC0wOS0wOCAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBKb3NlcGggUGVjb3Jhcm8uCkluZGV4OiBXZWJL
aXQvY2hyb21pdW0vV2ViS2l0Lmd5cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vV2Vi
S2l0Lmd5cAkocmV2aXNpb24gNjcwNDApCisrKyBXZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAko
d29ya2luZyBjb3B5KQpAQCAtMTUzLDYgKzE1Myw4IEBACiAgICAgICAgICAgICAgICAgJ3B1Ymxp
Yy9XZWJGaWxlU3lzdGVtQ2FsbGJhY2tzLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2Vi
RmlsZVN5c3RlbUVudHJ5LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRmlsZVV0aWxp
dGllcy5oJywKKyAgICAgICAgICAgICAgICAncHVibGljL1dlYkZpbGVXcml0ZXIuaCcsCisgICAg
ICAgICAgICAgICAgJ3B1YmxpYy9XZWJGaWxlV3JpdGVyQ2xpZW50LmgnLAogICAgICAgICAgICAg
ICAgICdwdWJsaWMvV2ViRmluZE9wdGlvbnMuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9X
ZWJGbG9hdFBvaW50LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRmxvYXRSZWN0Lmgn
LApAQCAtMjgwLDYgKzI4Miw4IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9Bc3NlcnRNYXRjaGlu
Z0VudW1zLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9Bc3luY0ZpbGVTeXN0ZW1DaHJvbWl1
bS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0uaCcs
CisgICAgICAgICAgICAgICAgJ3NyYy9Bc3luY0ZpbGVXcml0ZXJDaHJvbWl1bS5jcHAnLAorICAg
ICAgICAgICAgICAgICdzcmMvQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0uaCcsCiAgICAgICAgICAg
ICAgICAgJ3NyYy9BdXRvRmlsbFBvcHVwTWVudUNsaWVudC5jcHAnLAogICAgICAgICAgICAgICAg
ICdzcmMvQXV0b0ZpbGxQb3B1cE1lbnVDbGllbnQuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9C
YWNrRm9yd2FyZExpc3RDbGllbnRJbXBsLmNwcCcsCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYkZpbGVTeXN0ZW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYkZpbGVTeXN0ZW0uaAkocmV2aXNpb24gNjcwNDApCisrKyBXZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYkZpbGVTeXN0ZW0uaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsOCBAQAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3M7CitjbGFzcyBX
ZWJGaWxlV3JpdGVyOworY2xhc3MgV2ViRmlsZVdyaXRlckNsaWVudDsKIAogY2xhc3MgV2ViRmls
ZVN5c3RlbSB7CiBwdWJsaWM6CkBAIC0xMDAsNiArMTAyLDEwIEBAIHB1YmxpYzoKICAgICAvLyBX
ZWJGaWxlU3lzdGVtQ2FsbGJhY2tzOjpkaWRGYWlsKCkgbXVzdCBiZSBjYWxsZWQgb3RoZXJ3aXNl
LgogICAgIHZpcnR1YWwgdm9pZCByZWFkRGlyZWN0b3J5KGNvbnN0IFdlYlN0cmluZyYgcGF0aCwg
V2ViRmlsZVN5c3RlbUNhbGxiYWNrcyopIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9
CiAKKyAgICAvLyBDcmVhdGVzIGEgV2ViRmlsZVdyaXRlciB0aGF0IGNhbiBiZSB1c2VkIHRvIHdy
aXRlIHRvIHRoZSBnaXZlbiBmaWxlLgorICAgIC8vIFRoaXMgaXMgYSBmYXN0LCBzeW5jaHJvbm91
cyBjYWxsLCBhbmQgc2hvdWxkIG5vdCBzdGF0IHRoZSBmaWxlc3lzdGVtLgorICAgIHZpcnR1YWwg
V2ViRmlsZVdyaXRlciogY3JlYXRlRmlsZVdyaXRlcihjb25zdCBXZWJTdHJpbmcmIHBhdGgsIFdl
YkZpbGVXcml0ZXJDbGllbnQqKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJu
IDA7IH0KKwogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgfldlYkZpbGVTeXN0ZW0oKSB7IH0KIH07
CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZpbGVXcml0ZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZpbGVXcml0ZXIuaAkocmV2aXNpb24gMCkK
KysrIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRmlsZVdyaXRlci5oCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisg
KiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisg
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJGaWxlV3JpdGVyX2gKKyNkZWZpbmUgV2ViRmlsZVdy
aXRlcl9oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJTdHJpbmcuaCIK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlVSTDsKKworY2xhc3MgV2ViRmlsZVdy
aXRlciB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+V2ViRmlsZVdyaXRlcigpIHsgfQorCisgICAg
Ly8gT25seSBvbmUgd3JpdGUgb3Igb25lIHRydW5jYXRlIG9wZXJhdGlvbiBjYW4gYmUgaW4gcHJv
Z3Jlc3MgYXQgYSB0aW1lLgorICAgIC8vIFRoZXNlIGZ1bmN0aW9ucyBhcmUgYXN5bmNocm9ub3Vz
IGFuZCB3aWxsIHJlcG9ydCByZXN1bHRzIHRocm91Z2ggdGhlIFdlYkZpbGVXcml0ZXIncyBhc3Nv
Y2lhdGVkIFdlYkZpbGVXcml0ZXJDbGllbnQuCisgICAgdmlydHVhbCB2b2lkIHdyaXRlKGxvbmcg
bG9uZyBwb3NpdGlvbiwgY29uc3QgV2ViVVJMJiBibG9iVVJMKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHRydW5jYXRlKGxvbmcgbG9uZyBsZW5ndGgpID0gMDsKKworICAgIC8vIENhbmNlbCB3aWxs
IGF0dGVtcHQgdG8gYWJvcnQgYSBydW5uaW5nIHdyaXRlIG9yIHRydW5jYXRlLiAgSG93ZXZlciwg
aXQgbWF5IG5vdCBiZSBwb3NzaWJsZSB0byBjYW5jZWwgYW4gaW4tcHJvZ3Jlc3MgYWN0aW9uLCBv
ciB0aGUgY2FsbCBtYXkgaGF2ZSBjb21lIGluIHRvbyBsYXRlLiAgUGFydGlhbCB3cml0ZXMgYXJl
IHBvc3NpYmxlLgorICAgIC8vIERvIG5vdCBjYWxsIGNhbmNlbCB3aGVuIHRoZXJlIGlzIG5vIHdy
aXRlIG9yIHRydW5jYXRlIGluIHByb2dyZXNzLgorICAgIHZpcnR1YWwgdm9pZCBjYW5jZWwoKSA9
IDA7Cit9OworICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpJbmRleDogV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGaWxlV3JpdGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGaWxlV3JpdGVyQ2xpZW50LmgJKHJldmlzaW9uIDAp
CisrKyBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZpbGVXcml0ZXJDbGllbnQuaAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViRmlsZVdyaXRlckNsaWVudF9oCisjZGVm
aW5lIFdlYkZpbGVXcml0ZXJDbGllbnRfaAorCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisjaW5j
bHVkZSAiV2ViRmlsZUVycm9yLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJG
aWxlV3JpdGVyQ2xpZW50IHsKK3B1YmxpYzoKKyAgICAvLyBDYWxsZWQgZm9yIGVhY2ggY2h1bmsg
b2YgYSB3cml0ZSwgdG8gaW5kaWNhdGUgcHJvZ3Jlc3MuCisgICAgLy8gT24gdGhlIGZpbmFsIGNo
dW5rLCB3aGVuIHRoZSB3cml0ZSBpcyBmaW5pc2hlZCwgY29tcGxldGUgd2lsbCBiZSB0cnVlLgor
ICAgIHZpcnR1YWwgdm9pZCBkaWRXcml0ZShsb25nIGxvbmcgYnl0ZXMsIGJvb2wgY29tcGxldGUp
ID0gMDsKKworICAgIC8vIENhbGxlZCBvbmNlIHdoZW4gdGhlIHRydW5jYXRlIGNvbXBsZXRlcyBz
dWNjZXNzZnVsbHkuCisgICAgdmlydHVhbCB2b2lkIGRpZFRydW5jYXRlKGxvbmcgbG9uZyBsZW5n
dGgpID0gMDsKKworICAgIC8vIENhbGxlZCBpZiB0aGUgd3JpdGUgb3IgdHJ1bmNhdGUgZmFpbHMs
IG9yIGlmIGl0IGlzIGNhbmNlbGxlZCBiZWZvcmUgdGhlIHdyaXRlIG9yIHRydW5jYXRlIGNvbXBs
ZXRlcy4gIENvbXBsZXRpb24gb2YgYW4gb3BlcmF0aW9uIHdpbGwgYmUgc2lnbmFsbGVkIGV4YWN0
bHkgb25jZSwgZWl0aGVyIGJ5IGRpZEZhaWwsIGRpZFRydW5jYXRlLCBvciBkaWRXcml0ZSguLi4s
IHRydWUpLgorICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKFdlYkZpbGVFcnJvcikgPSAwOworCitw
cm90ZWN0ZWQ6CisgICAgdmlydHVhbCB+V2ViRmlsZVdyaXRlckNsaWVudCgpIHsgfQorfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3Ny
Yy9Bc3luY0ZpbGVXcml0ZXJDaHJvbWl1bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9t
aXVtL3NyYy9Bc3luY0ZpbGVXcml0ZXJDaHJvbWl1bS5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJL
aXQvY2hyb21pdW0vc3JjL0FzeW5jRmlsZVdyaXRlckNocm9taXVtLmNwcAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw5MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
ICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBc3luY0ZpbGVX
cml0ZXJDaHJvbWl1bS5oIgorCisjaWYgRU5BQkxFKEZJTEVfV1JJVEVSKQorCisjaW5jbHVkZSAi
QmxvYi5oIgorI2luY2x1ZGUgIkZpbGVXcml0ZXJDbGllbnQuaCIKKyNpbmNsdWRlICJXZWJGaWxl
V3JpdGVyLmgiCisjaW5jbHVkZSAiV2ViVVJMLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OworCituYW1lc3BhY2UgV2ViS2l0IHsKKworQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW06OkFzeW5j
RmlsZVdyaXRlckNocm9taXVtKEZpbGVXcml0ZXJDbGllbnQqIGNsaWVudCkKKyAgICA6IG1fY2xp
ZW50KGNsaWVudCkKK3sKK30KKwordm9pZCBBc3luY0ZpbGVXcml0ZXJDaHJvbWl1bTo6c2V0V2Vi
RmlsZVdyaXRlcihXZWJGaWxlV3JpdGVyKiB3cml0ZXIpCit7CisgICAgQVNTRVJUKCFtX3dyaXRl
cik7CisgICAgbV93cml0ZXIgPSB3cml0ZXI7Cit9CisKK3ZvaWQgQXN5bmNGaWxlV3JpdGVyQ2hy
b21pdW06OndyaXRlKGxvbmcgbG9uZyBwb3NpdGlvbiwgQmxvYiogZGF0YSkKK3sKKyAgICBBU1NF
UlQobV93cml0ZXIpOworICAgIG1fd3JpdGVyLT53cml0ZShwb3NpdGlvbiwgV2ViVVJMKGRhdGEt
PnVybCgpKSk7Cit9CisKK3ZvaWQgQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW06OnRydW5jYXRlKGxv
bmcgbG9uZyBsZW5ndGgpCit7CisgICAgQVNTRVJUKG1fd3JpdGVyKTsKKyAgICBtX3dyaXRlci0+
dHJ1bmNhdGUobGVuZ3RoKTsKK30KKwordm9pZCBBc3luY0ZpbGVXcml0ZXJDaHJvbWl1bTo6YWJv
cnQoKQoreworICAgIEFTU0VSVChtX3dyaXRlcik7CisgICAgbV93cml0ZXItPmNhbmNlbCgpOwor
fQorCit2b2lkIEFzeW5jRmlsZVdyaXRlckNocm9taXVtOjpkaWRXcml0ZShsb25nIGxvbmcgYnl0
ZXMsIGJvb2wgY29tcGxldGUpCit7CisgICAgQVNTRVJUKG1fd3JpdGVyKTsKKyAgICBtX2NsaWVu
dC0+ZGlkV3JpdGUoYnl0ZXMsIGNvbXBsZXRlKTsKK30KKwordm9pZCBBc3luY0ZpbGVXcml0ZXJD
aHJvbWl1bTo6ZGlkVHJ1bmNhdGUobG9uZyBsb25nIGxlbmd0aCkKK3sKKyAgICBtX2NsaWVudC0+
ZGlkVHJ1bmNhdGUobGVuZ3RoKTsKK30KKwordm9pZCBBc3luY0ZpbGVXcml0ZXJDaHJvbWl1bTo6
ZGlkRmFpbChXZWJGaWxlRXJyb3IgZXJyb3IpCit7CisgICAgbV9jbGllbnQtPmRpZEZhaWwoZXJy
b3IpOworfQorCit9IC8vIG5hbWVzcGFjZQorCisjZW5kaWYgLy8gRU5BQkxFKEZJTEVfV1JJVEVS
KQpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3luY0ZpbGVXcml0ZXJDaHJvbWl1bS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0u
aAkocmV2aXNpb24gMCkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvQXN5bmNGaWxlV3JpdGVyQ2hy
b21pdW0uaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisg
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQXN5bmNGaWxlV3Jp
dGVyQ2hyb21pdW1faAorI2RlZmluZSBBc3luY0ZpbGVXcml0ZXJDaHJvbWl1bV9oCisKKyNpZiBF
TkFCTEUoRklMRV9XUklURVIpCisKKyNpbmNsdWRlICJBc3luY0ZpbGVXcml0ZXIuaCIKKyNpbmNs
dWRlICJXZWJGaWxlRXJyb3IuaCIKKyNpbmNsdWRlICJXZWJGaWxlV3JpdGVyQ2xpZW50LmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEJsb2I7CitjbGFzcyBGaWxlV3JpdGVyQ2xpZW50
OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViRmlsZVdyaXRlcjsKKworY2xh
c3MgQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0gOiBwdWJsaWMgV2ViQ29yZTo6QXN5bmNGaWxlV3Jp
dGVyLCBwdWJsaWMgV2ViRmlsZVdyaXRlckNsaWVudCB7CitwdWJsaWM6CisgICAgQXN5bmNGaWxl
V3JpdGVyQ2hyb21pdW0oV2ViQ29yZTo6RmlsZVdyaXRlckNsaWVudCogY2xpZW50KTsKKyAgICB+
QXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0oKTsKKworICAgIHZvaWQgc2V0V2ViRmlsZVdyaXRlcihX
ZWJGaWxlV3JpdGVyKiB3cml0ZXIpOworCisgICAgLy8gRmlsZVdyaXRlcgorICAgIHZpcnR1YWwg
dm9pZCB3cml0ZShsb25nIGxvbmcgcG9zaXRpb24sIFdlYkNvcmU6OkJsb2IqIGRhdGEpOworICAg
IHZpcnR1YWwgdm9pZCB0cnVuY2F0ZShsb25nIGxvbmcgbGVuZ3RoKTsKKyAgICB2aXJ0dWFsIHZv
aWQgYWJvcnQoKTsKKworICAgIC8vIFdlYkZpbGVXcml0ZXJDbGllbnQKKyAgICB2aXJ0dWFsIHZv
aWQgZGlkV3JpdGUobG9uZyBsb25nIGJ5dGVzLCBib29sIGNvbXBsZXRlKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkVHJ1bmNhdGUobG9uZyBsb25nIGxlbmd0aCk7CisgICAgdmlydHVhbCB2b2lkIGRp
ZEZhaWwoV2ViRmlsZUVycm9yKTsKKworcHJpdmF0ZToKKyAgICBPd25QdHI8V2ViRmlsZVdyaXRl
cj4gbV93cml0ZXI7CisgICAgV2ViQ29yZTo6RmlsZVdyaXRlckNsaWVudCogbV9jbGllbnQ7Cit9
OworCit9IC8vIG5hbWVzcGFjZQorCisjZW5kaWYgLy8gRU5BQkxFKEZJTEVfV1JJVEVSKQorCisj
ZW5kaWYgLy8gQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW1faAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>