<?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>43151</bug_id>
          
          <creation_ts>2010-07-28 15:17:03 -0700</creation_ts>
          <short_desc>[chromium] Add WebKit API for HTML5 FileSystem API</short_desc>
          <delta_ts>2010-08-19 17:47:51 -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>WebKit API</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>42903</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Kinuko Yasuda">kinuko</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>dumi</cc>
    
    <cc>ericu</cc>
    
    <cc>fishd</cc>
    
    <cc>kkanetkar</cc>
    
    <cc>michaeln</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>257386</commentid>
    <comment_count>0</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-07-28 15:17:03 -0700</bug_when>
    <thetext>Add asynchronous FileSystem interface to WebKit API.
http://dev.w3.org/2009/dap/file-system/file-dir-sys.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257393</commentid>
    <comment_count>1</comment_count>
      <attachid>62887</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-07-28 15:24:11 -0700</bug_when>
    <thetext>Created attachment 62887
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257506</commentid>
    <comment_count>2</comment_count>
      <attachid>62887</attachid>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-07-28 18:13:42 -0700</bug_when>
    <thetext>Comment on attachment 62887
Patch

WebKit/chromium/ChangeLog:16
 +          * public/WebGetFileFlags.h: Added.
if you haven&apos;t done so already, please ask darin if he&apos;s ok with the names of these files.

WebKit/chromium/public/WebAsyncFileSystem.h:44
 +  class WebAsyncFileSystem {
it looks to me like this class is not referenced from anywhere, and all its methods are stubbed out. i think it might be better to move this .h file to a patch that implements or uses this class.

WebKit/chromium/public/WebFSCallbacks.h:42
 +  class WebFSCallbacks {
same comment.

WebKit/chromium/public/WebFileError.h:34
 +  #include &quot;WebCommon.h&quot;
is this include needed?

WebKit/chromium/public/WebFileError.h:47
 +      enum Code {
how about renaming Code to FileErrorCode?

WebKit/chromium/public/WebFileError.h:50
 +          // NO_MODIFICATION_ALLOWED_ERR FileError in HTML5 File API.
i don&apos;t think you need a comment for every error code. i think it should be enough to mention once that these are the FileError codes from the HTML5 File API.

WebKit/chromium/public/WebGetFileFlags.h:39
 +      // If |create| is true, WebAsyncFileSystem.getFile or getDirectory creates a file or directory if it was not previously there.
nit: s/WebAsyncFileSystem.getFile/WebAsyncFileSystem::getFile()/, s/getDirectory/getDirectory()/.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257983</commentid>
    <comment_count>3</comment_count>
      <attachid>63011</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-07-29 17:01:16 -0700</bug_when>
    <thetext>Created attachment 63011
Patch (centralized APIs in a single file)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257987</commentid>
    <comment_count>4</comment_count>
      <attachid>63011</attachid>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-07-29 17:05:24 -0700</bug_when>
    <thetext>Comment on attachment 63011
Patch (centralized APIs in a single file)

r=me.

WebKit/chromium/public/WebAsyncFileSystem.h:41
 +  class WebFSCallbacks;
need this?

WebKit/chromium/public/WebAsyncFileSystem.h:48
 +      // FileError code defined for HTML5 File API.
nit: s/code/codes/.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258048</commentid>
    <comment_count>5</comment_count>
      <attachid>63011</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-07-29 21:24:08 -0700</bug_when>
    <thetext>Comment on attachment 63011
Patch (centralized APIs in a single file)

Hold the presses, I have some feedback that I&apos;m writing up now...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258058</commentid>
    <comment_count>6</comment_count>
      <attachid>63011</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-07-29 21:39:09 -0700</bug_when>
    <thetext>Comment on attachment 63011
Patch (centralized APIs in a single file)

WebKit/chromium/public/WebAsyncFileSystem.h:50
 +          SuccessError = 0,
nit: in the WebKit API we use the following format for enums:

  enum Foo {
      FooBar,
      FooBaz,
  };

So, these should be re-worded like so:

  enum Error {
      ErrorNone,
      ErrorNoModificationAllowed,
      ErrorNotFound,
      ...
  };

One more note:  It seems a bit odd for these error codes, which are generic
file system error codes, to be defined here only for use with WebAsyncFileSystem.
We also have WebFileSystem, and it seems like these could be useful for it as
well.  In fact, it seems like we should try to unify WebFileSystem and WebAsyncFileSystem
so that they expose similar APIs, with the exception of WebFileSystem containing only
synchronous methods whereas WebAsyncFileSystem contains asynchronous methods.
how about just merging these asynchronous methods into WebFileSystem?

WebKit/chromium/public/WebAsyncFileSystem.h:71
 +          virtual ~Callbacks() { }
can this destructor be made protected?  i&apos;m assuming that the
embedder who receives a Callbacks pointer is not expected to
delete it, so making it protected would enforce that.

WebKit/chromium/public/WebAsyncFileSystem.h:86
 +      virtual void getFile(const WebString&amp; path, GetFileFlags flags, Callbacks*) { WEBKIT_ASSERT_NOT_REACHED(); }
it is not clear what getFile or getDirectory do.  what result is
returned to Callbacks?

WebKit/chromium/public/WebAsyncFileSystem.h:81
 +  
it would be very helpful to document how each of these methods is expected
to work.  what callbacks get called and with what information?

WebKit/chromium/public/WebAsyncFileSystem.h:80
 +      virtual void requestFileSystem(bool persistent, long long size, const WebSecurityOrigin&amp;, WebFrame*, Callbacks*) { WEBKIT_ASSERT_NOT_REACHED(); }
this seems like a function that should be on WebFrameClient since it is
specific to a WebFrame.  policy functions generally go on WebFrameClient.
The WebSecurityOrigin can be retrieved from the WebFrame, so it does not
need to be an explicit parameter.  since requestFileSystem is an async
method, you could just have a method on WebFrame that is called to complete
the filesystem request.  you&apos;d need to have some way of identifying the
filesystem request.  or, you could define a separate callback interface
for just this one thing (e.g., like WebFileChooserCompletion).

WebKit/chromium/public/WebAsyncFileSystem.h:64
 +          bool create;
how about just expressing this as a bit-mask?  then define enums for it?

WebKit/chromium/public/WebKitClient.h:268
 +      virtual WebAsyncFileSystem* asyncFileSystem() { return 0; }
the name of this method suggests that a WebAsyncFileSystem is not created
each time this method is called.  so, you should probably make WebAsyncFileSystem&apos;s
destructor protected so that it is clear that WebKit code should not be deleting
a WebAsyncFileSystem pointer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258516</commentid>
    <comment_count>7</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-07-30 19:06:46 -0700</bug_when>
    <thetext>Thanks for the comments.

(In reply to comment #6)
&gt; (From update of attachment 63011 [details])
&gt; well.  In fact, it seems like we should try to unify WebFileSystem and WebAsyncFileSystem
&gt; so that they expose similar APIs, with the exception of WebFileSystem containing only
&gt; synchronous methods whereas WebAsyncFileSystem contains asynchronous methods.
&gt; how about just merging these asynchronous methods into WebFileSystem?

I was afraid mixing up APIs with different security assumptions in a single module would be confusing.
WebFileSystem API has more generic usage than WebAsync one - it implements APIs that are used for misc internal file operations in WebKit.  Basically they don&apos;t work in a sandbox environment except for a few APIs that are used for File API and require prior permission on the target paths.

Assumptions for HTML5 FileSystem API are different from WebSyncFileSystem - it&apos;s primarily being added for FileSystem API and is going to work only if the target paths are under a certain directory.  In that sense what we&apos;re going to add is not a generic async filesystem API but &apos;HTML5FileSystem&apos;.   Or are we planning to use it for other purpose?

I agree that it would look more natural to have synchronous API and asynchronous API together but at least it would need very clear API documentation in that case.

&gt; WebKit/chromium/public/WebAsyncFileSystem.h:71
&gt;  +          virtual ~Callbacks() { }
&gt; can this destructor be made protected?  i&apos;m assuming that the
&gt; embedder who receives a Callbacks pointer is not expected to
&gt; delete it, so making it protected would enforce that.

Hmm... I thought that just giving the ownership of the pointer to the embedder and having it delete would be easier, but it may not look clean as an exposed API.  In either way I&apos;m going to add clearer comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258532</commentid>
    <comment_count>8</comment_count>
      <attachid>63139</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-07-30 21:18:03 -0700</bug_when>
    <thetext>Created attachment 63139
Patch (updated; not yet merged into WebFileSystem)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262933</commentid>
    <comment_count>9</comment_count>
      <attachid>63139</attachid>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2010-08-10 18:09:04 -0700</bug_when>
    <thetext>Comment on attachment 63139
Patch (updated; not yet merged into WebFileSystem)

Not sure merging with WebFileSystem is a feature? Do we expect to be able to call WebFileSystem::openFile(path, OpenForRead) to retrieve a FileHandle to a file in the HTML5FileSystem, or call WebFileSystem::makeAllDirectories(x) to a location in the HTML5FileSystem? I don&apos;t think thats where we were heading. It may be less confusing to have these segregated. Many of the general purpose interfaces in WebFileSystem are crippled in child processes and fully enabled in the main browser process. In comparison, the HTML5FileSytem APIs only need to be available in child processes.


WebKit/chromium/public/WebFileSystemCallback.h:37
 +  template &lt;typename T&gt; class WebVector;
Looks like WebVector isn&apos;t needed here.

WebKit/chromium/public/WebFileSystemCallback.h:43
 +      // accepted.
nit: since no line is too long in webkit/webcore... consider unwrapping this comment line

WebKit/chromium/public/WebFileSystemCallback.h:50
 +      virtual ~WebFileSystemCallback() {}
The ownership semantics for this &apos;callback&apos; class should probably be the same as for the WebAsyncFileSystem::Callbacks, whichever way that tree falls.


WebKit/chromium/public/WebAsyncFileSystem.h:66
 +          virtual void onSuccessMetadata(WebFileInfo info) = 0;
Should this be 
virtual void onSuccessMetadata(const WebFileInfo&amp; info) = 0;

WebKit/chromium/public/WebAsyncFileSystem.h:114
 +      virtual void getDirectory(const WebString&amp; path, bool exclusive, Callbacks*) { WEBKIT_ASSERT_NOT_REACHED(); }
Should this be createDirectory() for symmetry with createFile()?

WebKit/chromium/public/WebAsyncFileSystem.h:119
 +      virtual void isFile(const WebString&amp; path, Callbacks*) { WEBKIT_ASSERT_NOT_REACHED(); }
I wonder if isDirectory and isFile could/should be subsumed by getMetaData?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262968</commentid>
    <comment_count>10</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2010-08-10 19:16:29 -0700</bug_when>
    <thetext>Following up on our discussion... other name ideas for this interface could be WebVirtualFileSystem or WebSandboxedFileSystem or WebProtectedFileSystem.

Also I have a question about the form of the &apos;path&apos; parameters that will be presented to this interface by renderers. Are those full os file system paths or are they more opaque? Full os paths will contain the os username (on windows at least) which goes against having child processes sandboxed so I&apos;m not sure that&apos;s the best option?

We could devise a naming scheme for the Web&lt;Something&gt;FileSystem that protects against leaking the os username when accessing the html5 file system, but also allows expressing full os paths (if/when we need to)? A simple prefix could suffice, if a valid prefix isn&apos;t present the operation fails.

html5 &lt;origin_id&gt;/perm/
html5 &lt;origin_id&gt;/temp/
os c:/passwords.txt
os \\filer\home\michaeln</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263583</commentid>
    <comment_count>11</comment_count>
      <attachid>64183</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-08-11 20:30:42 -0700</bug_when>
    <thetext>Created attachment 64183
Patch (cleaned up minor issues)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263585</commentid>
    <comment_count>12</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-08-11 20:47:56 -0700</bug_when>
    <thetext>Updated the patch for minor clean ups.   For now I haven&apos;t changed the code for bigger issues - e.g. whether we should merge this into WebFileSystem or not and what name the interface has to be.

(In reply to comment #9)
&gt; (From update of attachment 63139 [details])
&gt; Not sure merging with WebFileSystem is a feature? Do we expect to be able to call WebFileSystem::openFile(path, OpenForRead) to retrieve a FileHandle to a file in the HTML5FileSystem, or call WebFileSystem::makeAllDirectories(x) to a location in the HTML5FileSystem? I don&apos;t think thats where we were heading. It may be less confusing to have these segregated. Many of the general purpose interfaces in WebFileSystem are crippled in child processes and fully enabled in the main browser process. In comparison, the HTML5FileSytem APIs only need to be available in child processes.

&gt; WebKit/chromium/public/WebFileSystemCallback.h:37
&gt;  +  template &lt;typename T&gt; class WebVector;
&gt; Looks like WebVector isn&apos;t needed here.

Removed.

&gt; WebKit/chromium/public/WebFileSystemCallback.h:43
&gt;  +      // accepted.
&gt; nit: since no line is too long in webkit/webcore... consider unwrapping this comment line

Fixed.

&gt; WebKit/chromium/public/WebFileSystemCallback.h:50
&gt;  +      virtual ~WebFileSystemCallback() {}
&gt; The ownership semantics for this &apos;callback&apos; class should probably be the same as for the WebAsyncFileSystem::Callbacks, whichever way that tree falls.
&gt; 
&gt; 
&gt; WebKit/chromium/public/WebAsyncFileSystem.h:66
&gt;  +          virtual void onSuccessMetadata(WebFileInfo info) = 0;
&gt; Should this be 
&gt; virtual void onSuccessMetadata(const WebFileInfo&amp; info) = 0;

Fixed.

&gt; WebKit/chromium/public/WebAsyncFileSystem.h:114
&gt;  +      virtual void getDirectory(const WebString&amp; path, bool exclusive, Callbacks*) { WEBKIT_ASSERT_NOT_REACHED(); }
&gt; Should this be createDirectory() for symmetry with createFile()?

Exactly!  Fixed.

&gt; WebKit/chromium/public/WebAsyncFileSystem.h:119
&gt;  +      virtual void isFile(const WebString&amp; path, Callbacks*) { WEBKIT_ASSERT_NOT_REACHED(); }
&gt; I wonder if isDirectory and isFile could/should be subsumed by getMetaData?

Making them integrated into getMetadata would make sense too but I wonder if they may have a little bit different usages.   In this patch I changed their names to fileExists and directoryExists.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264131</commentid>
    <comment_count>13</comment_count>
      <attachid>64291</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-08-12 20:09:50 -0700</bug_when>
    <thetext>Created attachment 64291
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264132</commentid>
    <comment_count>14</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-08-12 20:12:30 -0700</bug_when>
    <thetext>Added readDirectory method and made some more minor fixes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264469</commentid>
    <comment_count>15</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2010-08-13 12:42:43 -0700</bug_when>
    <thetext>This interface looks good to me. I do wonder if word smithing the name of WebAsyncFileSystem would help. Let&apos;s see what darin, being the keeper of webkipAPI consistency, has to say.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265279</commentid>
    <comment_count>16</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-08-16 16:10:31 -0700</bug_when>
    <thetext>Per our offline discussion, fishd, ericu, michaeln and kinuko agreed to:
1. have separate WebKit API for HTML5 FileSystem API from existing WebFileSystem
2. rename existing WebFileSystem to WebFileUtilities
3. expose inner classes (Callbacks, Entry and Error) to top level classes and prefix them with WebFileSystem (or WebFile)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265282</commentid>
    <comment_count>17</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-08-16 16:14:57 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; Per our offline discussion, fishd, ericu, michaeln and kinuko agreed to:
&gt; 1. have separate WebKit API for HTML5 FileSystem API from existing WebFileSystem
&gt; 2. rename existing WebFileSystem to WebFileUtilities
&gt; 3. expose inner classes (Callbacks, Entry and Error) to top level classes and prefix them with WebFileSystem (or WebFile)

4. have the renderer pass absolute/sanitized paths to this API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265295</commentid>
    <comment_count>18</comment_count>
      <attachid>64291</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-08-16 16:34:09 -0700</bug_when>
    <thetext>Comment on attachment 64291
Patch

(getting this out of the review queue since there is a new version coming...)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265895</commentid>
    <comment_count>19</comment_count>
      <attachid>64658</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-08-17 18:34:57 -0700</bug_when>
    <thetext>Created attachment 64658
Patch

Uploading a new patch - this patch also does the latter half of issue 44077, i.e. replaces the WebFileSystem interface with new one.  All the inner classes were exported except for a new enum WebFileSystem::Type; for this one I was not sure if we want to put it outside of the WebFileSystem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265903</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-17 19:05:03 -0700</bug_when>
    <thetext>Attachment 64658 did not build on chromium:
Build output: http://queues.webkit.org/results/3722337</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265955</commentid>
    <comment_count>21</comment_count>
      <attachid>64658</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-08-17 22:47:20 -0700</bug_when>
    <thetext>Comment on attachment 64658
Patch

looking good... just a few more suggestions:


WebKit/chromium/public/WebFileError.h:35
 +  class WebFileError {
why not just declare an enum named WebFileError?  the webkit api declares
plain old enums in other cases.

enum WebFileError {
    WebFileErrorNone = 0,
    WebFileErrorNoModificationAllowed = 7,
    ...
};
WebKit/chromium/public/WebFileSystem.h:42
 +      enum Type {
I like this as an inner enum too.  No need to explicitly set the values
to 0 and 1 since those are the defaults.

WebKit/chromium/public/WebFileSystemCallbacks.h:47
 +      virtual void onSuccess() = 0;
nit: we use the naming scheme didFoo instead of onFoo in the webkit api.
it is also nice to try to make the names read as a phrase.  instead of
&quot;on success blah&quot;, which isn&apos;t good grammar, you&apos;d write &quot;did finish
doing blah&quot; or something like that.

so how about changing these to the following:

  didSucceed()
  didFail(WebFileError);
  didReadMetadata(const WebFileInfo&amp;);
  didReadDirectory(const WebVector&lt;WebFileSystemEntry&gt;&amp;, bool hasMore);
  didOpenFileSystem(const WebString&amp; name, const WebString&amp; rootPath);

i&apos;m not sure if didOpenFileSystem is the best name.  i was trying to
come up with a good verb.  didRequestFileSystem doesn&apos;t seem quite right
because the verb should describe the result of the request.  i guess
the result of requestFileSystem is to be able to use the file system,
which is sort of what &quot;opening&quot; the file system might mean.  maybe we
should rename &quot;requestFileSystem&quot; to &quot;openFileSystem&quot;.

i appended a &quot;hasMore&quot; parameter to didReadDirectory to suggest that it
would be called again when hasMore is true.

WebKit/chromium/public/WebFileSystemEntry.h:38
 +  struct WebFileSystemEntry {
i&apos;m curious why you went with WebFileSystemEntry instead of WebFileEntry.
on one hand, it seems nice to scope *Entry to WebFileSystem since it
represents an entry in the file system.  on the other hand, the spec
just uses &quot;FileEntry&quot; for this.  and, WebFileEntry seems descriptive
enough.

WebKit/chromium/public/WebFrameClient.h:339
 +          WebFrame*, WebFileSystem::Type, long long size,
i suspect that you need a #include &quot;WebFileSystem.h&quot; up above.

WebKit/chromium/public/WebFrameClient.h:339
 +          WebFrame*, WebFileSystem::Type, long long size,
it would be good to describe this &quot;size&quot; parameter in the comments.

WebKit/chromium/public/WebKitClient.h:266
 +      // HTML5 FileSystem ----------------------------------------------------
the filesystem spec is not strictly speaking part of html5.  may be better
to drop the &quot;HTML5&quot; from the comment.

WebKit/chromium/public/WebFileSystem.h:61
 +      virtual void getMetadata(const WebString&amp; path, WebFileSystemCallbacks* callbacks) { WEBKIT_ASSERT_NOT_REACHED(); }
maybe &quot;readMetadata&quot; instead of &quot;getMetadata&quot;?  this is about reading the
filesystem in a sense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266238</commentid>
    <comment_count>22</comment_count>
      <attachid>64735</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-08-18 10:52:20 -0700</bug_when>
    <thetext>Created attachment 64735
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266261</commentid>
    <comment_count>23</comment_count>
      <attachid>64740</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-08-18 11:15:38 -0700</bug_when>
    <thetext>Created attachment 64740
Patch

Removed unnecessary parameter names.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266269</commentid>
    <comment_count>24</comment_count>
      <attachid>64741</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-08-18 11:23:22 -0700</bug_when>
    <thetext>Created attachment 64741
Patch

Changed requestFileSystem in WebFrameClient to openFileSystem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266270</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-18 11:23:30 -0700</bug_when>
    <thetext>Attachment 64735 did not build on chromium:
Build output: http://queues.webkit.org/results/3746366</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266281</commentid>
    <comment_count>26</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-08-18 11:42:29 -0700</bug_when>
    <thetext>Thanks for reviewing.   All fixed as suggested.  (Please ignore the chromium build failure for now.)

(In reply to comment #21)
&gt; WebKit/chromium/public/WebFileSystemCallbacks.h:47
&gt;  +      virtual void onSuccess() = 0;
&gt; nit: we use the naming scheme didFoo instead of onFoo in the webkit api.
&gt; it is also nice to try to make the names read as a phrase.  instead of
&gt; &quot;on success blah&quot;, which isn&apos;t good grammar, you&apos;d write &quot;did finish
&gt; doing blah&quot; or something like that.

Changed the method names to did + verb.

&gt; i&apos;m not sure if didOpenFileSystem is the best name.  i was trying to
&gt; come up with a good verb.  didRequestFileSystem doesn&apos;t seem quite right
&gt; because the verb should describe the result of the request.  i guess
&gt; the result of requestFileSystem is to be able to use the file system,
&gt; which is sort of what &quot;opening&quot; the file system might mean.  maybe we
&gt; should rename &quot;requestFileSystem&quot; to &quot;openFileSystem&quot;.

openFileSystem sounds good to me.  (Confirmed that the verb sounds relevant to what it does to @ericu too)
I changed WebFrameClient::requestFileSystem to openFileSystem as well.

&gt; WebKit/chromium/public/WebFileSystemEntry.h:38
&gt;  +  struct WebFileSystemEntry {
&gt; i&apos;m curious why you went with WebFileSystemEntry instead of WebFileEntry.
&gt; on one hand, it seems nice to scope *Entry to WebFileSystem since it
&gt; represents an entry in the file system.  on the other hand, the spec
&gt; just uses &quot;FileEntry&quot; for this.  and, WebFileEntry seems descriptive
&gt; enough.

Renamed it to WebFileEntry... no one would love longer names when shorter one is enough.
(FileEntry in the spec specifically means the entry is a regular file but not a directory, so it has a bit different meaning.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266283</commentid>
    <comment_count>27</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-18 11:42:57 -0700</bug_when>
    <thetext>Attachment 64741 did not build on chromium:
Build output: http://queues.webkit.org/results/3705355</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266496</commentid>
    <comment_count>28</comment_count>
      <attachid>64797</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-08-18 18:30:52 -0700</bug_when>
    <thetext>Created attachment 64797
Patch

Reuploading to see if it compiles</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266533</commentid>
    <comment_count>29</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-18 21:03:49 -0700</bug_when>
    <thetext>Attachment 64797 did not build on chromium:
Build output: http://queues.webkit.org/results/3769390</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266543</commentid>
    <comment_count>30</comment_count>
      <attachid>64797</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-08-18 22:14:16 -0700</bug_when>
    <thetext>Comment on attachment 64797
Patch

WebKit/chromium/public/WebFrameClient.h:46
 +  class WebFileSystemCallbacks;
nit: this is also forward declared in WebFileSystem.h, so you don&apos;t
need it here.


note, your comment about FileEntry not corresponding to a directory in
the spec makes me reconsider my previous suggestion of changing
WebFileSystemEntry to WebFileEntry.  maybe your original name was
better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267092</commentid>
    <comment_count>31</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-08-19 17:47:51 -0700</bug_when>
    <thetext>Committed r65718: &lt;http://trac.webkit.org/changeset/65718&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62887</attachid>
            <date>2010-07-28 15:24:11 -0700</date>
            <delta_ts>2010-07-29 17:01:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43151-20100728152410.patch</filename>
            <type>text/plain</type>
            <size>13659</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IDcxYmJlMDJjMDExY2IzOGJlOWI2YTA1M2FkNTJiNTRjZGJhODZkNTIu
LjNkMzAyM2M0NDZiZTRjZmFhZjFmZmI0NzQ5OTE3NjBiMDU3MmUzZGMgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDIwIEBACisyMDEwLTA3LTI4ICBLaW51a28gWWFzdWRhICA8a2ludWtvQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGQgV2ViS2l0IEFQSSBmb3IgSFRNTDUgRmlsZVN5c3RlbSBBUEkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQzMTUxCisKKyAgICAgICAgQWRkIGFz
eW5jaHJvbm91cyBGaWxlU3lzdGVtIGludGVyZmFjZSB0byBXZWJLaXQgQVBJIGZvcgorICAgICAg
ICBIVE1MNSBGaWxlU3lzdGVtIEFQSS4KKyAgICAgICAgaHR0cDovL2Rldi53My5vcmcvMjAwOS9k
YXAvZmlsZS1zeXN0ZW0vZmlsZS1kaXItc3lzLmh0bWwKKworICAgICAgICAqIFdlYktpdC5neXA6
CisgICAgICAgICogcHVibGljL1dlYkFzeW5jRmlsZVN5c3RlbS5oOiBBZGRlZC4KKyAgICAgICAg
KiBwdWJsaWMvV2ViRlNDYWxsYmFja3MuaDogQWRkZWQuCisgICAgICAgICogcHVibGljL1dlYkZp
bGVFcnJvci5oOiBBZGRlZC4KKyAgICAgICAgKiBwdWJsaWMvV2ViR2V0RmlsZUZsYWdzLmg6IEFk
ZGVkLgorCiAyMDEwLTA3LTI4ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KZGlmZiAtLWdpdCBhL1dl
YktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKaW5k
ZXggOTdlZmRkY2I1NzEzZDMxZGJmYTM2ZGJjYjEyNGYwYzE4MDIwMGZhMy4uNDRmOTVlYjExOTYw
MjE3ODc1MTNiZjliMjNiNzRlYjRmZWRmZGU5YSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVt
L1dlYktpdC5neXAKKysrIGIvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTExNiw2ICsx
MTYsNyBAQAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViQW5pbWF0aW9uQ29udHJvbGxlci5o
JywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0LmgnLAog
ICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViQXBwbGljYXRpb25DYWNoZUhvc3RDbGllbnQuaCcs
CisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJBc3luY0ZpbGVTeXN0ZW0uaCcsCiAgICAgICAg
ICAgICAgICAgJ3B1YmxpYy9XZWJBdHRyaWJ1dGUuaCcsCiAgICAgICAgICAgICAgICAgJ3B1Ymxp
Yy9XZWJCaW5kaW5ncy5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkNhY2hlLmgnLApA
QCAtMTUzLDYgKzE1NCw3IEBACiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJFdmVudExpc3Rl
bmVyLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRmlsZUNob29zZXJDb21wbGV0aW9u
LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRmlsZUNob29zZXJQYXJhbXMuaCcsCisg
ICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJGaWxlRXJyb3IuaCcsCiAgICAgICAgICAgICAgICAg
J3B1YmxpYy9XZWJGaWxlSW5mby5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkZpbGVT
eXN0ZW0uaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJGaW5kT3B0aW9ucy5oJywKQEAg
LTE2NSw5ICsxNjcsMTEgQEAKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkZvbnRDYWNoZS5o
JywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkZvcm1Db250cm9sRWxlbWVudC5oJywKICAg
ICAgICAgICAgICAgICAncHVibGljL1dlYkZvcm1FbGVtZW50LmgnLAorICAgICAgICAgICAgICAg
ICdwdWJsaWMvV2ViRlNDYWxsYmFja3MuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJH
ZW9sb2NhdGlvblNlcnZpY2UuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJHZW9sb2Nh
dGlvblNlcnZpY2VCcmlkZ2UuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJHZW9sb2Nh
dGlvblNlcnZpY2VNb2NrLmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViR2V0RmlsZUZs
YWdzLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViR2x5cGhDYWNoZS5oJywKICAgICAg
ICAgICAgICAgICAncHVibGljL1dlYkdMRVMyQ29udGV4dC5oJywKICAgICAgICAgICAgICAgICAn
cHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmgnLApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJBc3luY0ZpbGVTeXN0ZW0uaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViQXN5bmNGaWxlU3lzdGVtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTk3ZDI0OWM3NDMxNmNlOTM5Njg5YTIy
NzBhN2IwZDY2MWE2YjY5ZgotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViQXN5bmNGaWxlU3lzdGVtLmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24u
CisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViQXN5bmNG
aWxlU3lzdGVtX2gKKyNkZWZpbmUgV2ViQXN5bmNGaWxlU3lzdGVtX2gKKworI2luY2x1ZGUgIldl
YkNvbW1vbi5oIgorI2luY2x1ZGUgIldlYkdldEZpbGVGbGFncy5oIgorI2luY2x1ZGUgIldlYlNl
Y3VyaXR5T3JpZ2luLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJGcmFtZTsK
K2NsYXNzIFdlYkZTQ2FsbGJhY2tzOworY2xhc3MgV2ViU3RyaW5nOworCitjbGFzcyBXZWJBc3lu
Y0ZpbGVTeXN0ZW0geworcHVibGljOgorICAgIC8vIFdFQktJVF9BUEkgc3RhdGljIFdlYkFzeW5j
RmlsZVN5c3RlbSogY3JlYXRlKCk7CisgICAgdmlydHVhbCB+V2ViQXN5bmNGaWxlU3lzdGVtKCkg
eyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdEZpbGVTeXN0ZW0oYm9vbCBwZXJzaXN0ZW50
LCBsb25nIGxvbmcgc2l6ZSwgY29uc3QgV2ViU2VjdXJpdHlPcmlnaW4mLCBXZWJGcmFtZSosIFdl
YkZTQ2FsbGJhY2tzKikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKworICAgIHZp
cnR1YWwgdm9pZCBtb3ZlKGNvbnN0IFdlYlN0cmluZyYgc3JjLCBjb25zdCBXZWJTdHJpbmcmIGRl
c3QsIFdlYkZTQ2FsbGJhY2tzKikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgY29weShjb25zdCBXZWJTdHJpbmcmIHNyYywgY29uc3QgV2ViU3RyaW5n
JiBkZXN0LCBXZWJGU0NhbGxiYWNrcyopIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9
CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZShjb25zdCBXZWJTdHJpbmcmIHBhdGgsIFdlYkZTQ2Fs
bGJhY2tzKikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgZ2V0TWV0YWRhdGEoY29uc3QgV2ViU3RyaW5nJiBwYXRoLCBXZWJGU0NhbGxiYWNrcyopIHsg
V0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgdmlydHVhbCB2b2lkIGdldEZpbGUo
Y29uc3QgV2ViU3RyaW5nJiBwYXRoLCBXZWJHZXRGaWxlRmxhZ3MgZmxhZ3MsIFdlYkZTQ2FsbGJh
Y2tzKikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
Z2V0RGlyZWN0b3J5KGNvbnN0IFdlYlN0cmluZyYgcGF0aCwgV2ViR2V0RmlsZUZsYWdzIGZsYWdz
LCBXZWJGU0NhbGxiYWNrcyopIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYkFzeW5jRmlsZVN5c3RlbV9o
CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZTQ2FsbGJhY2tzLmggYi9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZTQ2FsbGJhY2tzLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzJkZTQ2
ZmFiYTQ5MjRiZDU0Y2FkNGU3MzY5YTFjYTMxN2VlN2E1ZQotLS0gL2Rldi9udWxsCisrKyBiL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRlNDYWxsYmFja3MuaApAQCAtMCwwICsxLDU1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAq
IGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBXZWJGU0NhbGxiYWNrc19oCisjZGVmaW5lIFdlYkZTQ2FsbGJhY2tzX2gKKworI2luY2x1
ZGUgIldlYkNvbW1vbi5oIgorI2luY2x1ZGUgIldlYkZpbGVFcnJvci5oIgorI2luY2x1ZGUgIldl
YkZpbGVJbmZvLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJTdHJpbmc7CisK
K2NsYXNzIFdlYkZTQ2FsbGJhY2tzIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJGU0NhbGxi
YWNrcygpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcygpIHsgV0VCS0lUX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzc0VudHJ5KCkgeyBX
RUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNz
RmlsZVN5c3RlbShjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYgcGF0aCwg
bG9uZyBsb25nIHNpemUpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgdmly
dHVhbCB2b2lkIG9uU3VjY2Vzc01ldGFkYXRhKFdlYkZpbGVJbmZvIGluZm8pIHsgV0VCS0lUX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgdmlydHVhbCB2b2lkIG9uRXJyb3IoV2ViRmlsZUVy
cm9yIGNvZGUpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYkZTQ2FsbGJhY2tzX2gKZGlmZiAtLWdpdCBh
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRmlsZUVycm9yLmggYi9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkZpbGVFcnJvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlhZTVmM2VmNzgwNDc3NDBkZGU2MGJm
N2EzOTJiNTE5MWU1ZTBlZWEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYkZpbGVFcnJvci5oCkBAIC0wLDAgKzEsODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkZpbGVFcnJvcl9o
CisjZGVmaW5lIFdlYkZpbGVFcnJvcl9oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkZpbGVFcnJvciB7CitwdWJsaWM6CisgICAgV2Vi
RmlsZUVycm9yKGludCBjb2RlKSA6IG1fY29kZShzdGF0aWNfY2FzdDxDb2RlPihjb2RlKSkgeyB9
CisKKyAgICBvcGVyYXRvciBpbnQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PGludD4obV9jb2RlKTsKKyAgICB9CisKKyAgICBlbnVtIENvZGUgeworICAgICAgICBT
dWNjZXNzID0gMCwKKworICAgICAgICAvLyBOT19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlIgRmls
ZUVycm9yIGluIEhUTUw1IEZpbGUgQVBJLgorICAgICAgICBOb01vZGlmaWNhdGlvbkFsbG93ZWQg
PSA3LAorCisgICAgICAgIC8vIE5PVF9GT1VORF9FUlIgRmlsZUVycm9yIGluIEhUTUw1IEZpbGUg
QVBJLgorICAgICAgICBOb3RGb3VuZCA9IDgsCisKKyAgICAgICAgLy8gSU5WQUxJRF9TVEFURV9F
UlIgRmlsZUVycm9yIGluIEhUTUw1IEZpbGUgQVBJLgorICAgICAgICBJbnZhbGlkU3RhdGUgPSAx
MSwKKworICAgICAgICAvLyBJTlZBTElEX01PRElGSUNBVElPTl9FUlIgRmlsZUVycm9yIGluIEhU
TUw1IEZpbGUgQVBJLgorICAgICAgICBJbnZhbGlkTW9kaWZpY2F0aW9uID0gMTMsCisKKyAgICAg
ICAgLy8gU0VDVVJJVFlfRVJSIEZpbGVFcnJvciBpbiBIVE1MNSBGaWxlIEFQSS4KKyAgICAgICAg
U2VjdXJpdHkgPSAxOCwKKworICAgICAgICAvLyBBQk9SVF9FUlIgRmlsZUVycm9yIGluIEhUTUw1
IEZpbGUgQVBJLgorICAgICAgICBBYm9ydCA9IDIwLAorCisgICAgICAgIC8vIFFVT1RBX0VYQ0VF
REVEX0VSUiBGaWxlRXJyb3IgaW4gSFRNTDUgRmlsZSBBUEkuCisgICAgICAgIFF1b3RhRXhjZWVk
ZWQgPSAyMiwKKworICAgICAgICAvLyBOT1RfUkVBREFCTEVfRVJSIEZpbGVFcnJvciBpbiBIVE1M
NSBGaWxlIEFQSS4KKyAgICAgICAgTm90UmVhZGFibGUgPSAyNCwKKworICAgICAgICAvLyBFTkNP
RElOR19FUlIgRmlsZUVycm9yIGluIEhUTUw1IEZpbGUgQVBJLgorICAgICAgICBFbmNvZGluZyA9
IDI2LAorICAgIH07CisKK3ByaXZhdGU6CisgICAgQ29kZSBtX2NvZGU7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYkZpbGVFcnJvcl9oCmRpZmYgLS1naXQgYS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdldEZpbGVGbGFncy5oIGIvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJHZXRGaWxlRmxhZ3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YmY5NDM5ZTNmY2U5ODUwMGI5
OWRiOGUxYTJlZjc3NjBkYmY3NWE0Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJHZXRGaWxlRmxhZ3MuaApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlv
bi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJHZXRG
aWxlRmxhZ3NfaAorI2RlZmluZSBXZWJHZXRGaWxlRmxhZ3NfaAorCisjaW5jbHVkZSAiV2ViQ29t
bW9uLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdHJ1Y3QgV2ViR2V0RmlsZUZsYWdzIHsK
KyAgICAvLyBJZiB8Y3JlYXRlfCBpcyB0cnVlLCBXZWJBc3luY0ZpbGVTeXN0ZW0uZ2V0RmlsZSBv
ciBnZXREaXJlY3RvcnkgY3JlYXRlcyBhIGZpbGUgb3IgZGlyZWN0b3J5IGlmIGl0IHdhcyBub3Qg
cHJldmlvdXNseSB0aGVyZS4KKyAgICBib29sIGNyZWF0ZTsKKworICAgIC8vIElmIGJvdGggfGV4
Y2x1c2l2ZXwgYW5kIHxjcmVhdGV8IGFyZSB0cnVlLCBXZWJBc3luY0ZpbGVTeXN0ZW0uZ2V0Rmls
ZSBvciBnZXREaXJlY3RvcnkgbXVzdCBmYWlsIGlmIHRoZSB0YXJnZXQgcGF0aCBhbHJlYWR5IGV4
aXN0cy4KKyAgICBib29sIGV4Y2x1c2l2ZTsKKworICAgIFdlYkdldEZpbGVGbGFncygpIDogY3Jl
YXRlKGZhbHNlKSwgZXhjbHVzaXZlKGZhbHNlKSB7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdAorCisjZW5kaWYgLy8gV2ViR2V0RmlsZUZsYWdzX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63011</attachid>
            <date>2010-07-29 17:01:16 -0700</date>
            <delta_ts>2010-07-30 21:18:00 -0700</delta_ts>
            <desc>Patch (centralized APIs in a single file)</desc>
            <filename>bug-43151-20100729170115.patch</filename>
            <type>text/plain</type>
            <size>6473</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IDQzNWE2NzVmMjBhN2YwNWY0MDQ4Mjg5YTJiZjVmM2YzMmM5MjMzZjcu
LmM4MjJkMzY2YjVmNjUwMWE5MTFkNTdjOWNjMmZiODUxYjlmNmU3ZjggMTAwNjQ0Ci0tLSBhL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE5IEBACisyMDEwLTA3LTI4ICBLaW51a28gWWFzdWRhICA8a2ludWtvQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGQgV2ViS2l0IEFQSSBmb3IgSFRNTDUgRmlsZVN5c3RlbSBBUEkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQzMTUxCisKKyAgICAgICAgQWRkIGFz
eW5jaHJvbm91cyBGaWxlU3lzdGVtIGludGVyZmFjZSB0byBXZWJLaXQgQVBJIGZvcgorICAgICAg
ICBIVE1MNSBGaWxlU3lzdGVtIEFQSS4KKyAgICAgICAgaHR0cDovL2Rldi53My5vcmcvMjAwOS9k
YXAvZmlsZS1zeXN0ZW0vZmlsZS1kaXItc3lzLmh0bWwKKworICAgICAgICAqIFdlYktpdC5neXA6
CisgICAgICAgICogcHVibGljL1dlYkFzeW5jRmlsZVN5c3RlbS5oOiBBZGRlZC4KKyAgICAgICAg
KiBwdWJsaWMvV2ViS2l0Q2xpZW50Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYktpdENsaWVudDo6
YXN5bmNGaWxlU3lzdGVtKToKKwogMjAxMC0wNy0yOCAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEZpc2hlci4KZGlmZiAt
LWdpdCBhL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvV2ViS2l0L2Nocm9taXVtL1dlYktp
dC5neXAKaW5kZXggOTdlZmRkY2I1NzEzZDMxZGJmYTM2ZGJjYjEyNGYwYzE4MDIwMGZhMy4uM2Fl
MDk1NGM4ZGM1MmQyYWE3ZmRlMTYxOWNlN2Q0Nzc0MDM3NmEyZCAxMDA2NDQKLS0tIGEvV2ViS2l0
L2Nocm9taXVtL1dlYktpdC5neXAKKysrIGIvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAg
LTExNiw2ICsxMTYsNyBAQAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViQW5pbWF0aW9uQ29u
dHJvbGxlci5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkFwcGxpY2F0aW9uQ2FjaGVI
b3N0LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViQXBwbGljYXRpb25DYWNoZUhvc3RD
bGllbnQuaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJBc3luY0ZpbGVTeXN0ZW0uaCcs
CiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJBdHRyaWJ1dGUuaCcsCiAgICAgICAgICAgICAg
ICAgJ3B1YmxpYy9XZWJCaW5kaW5ncy5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkNh
Y2hlLmgnLApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJBc3luY0ZpbGVT
eXN0ZW0uaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQXN5bmNGaWxlU3lzdGVtLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOTZiOTgxY2FmMDJmMzk0ZTI3ZTUzNmQwZDU0MjRmMGI4ODhkZDI5YwotLS0gL2Rl
di9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQXN5bmNGaWxlU3lzdGVtLmgK
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
REFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViQXN5bmNGaWxlU3lzdGVtX2gKKyNkZWZpbmUgV2Vi
QXN5bmNGaWxlU3lzdGVtX2gKKworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorI2luY2x1ZGUgIldl
YkZpbGVJbmZvLmgiCisjaW5jbHVkZSAiV2ViU2VjdXJpdHlPcmlnaW4uaCIKKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2NsYXNzIFdlYkZyYW1lOworY2xhc3MgV2ViRlNDYWxsYmFja3M7CitjbGFz
cyBXZWJTdHJpbmc7CisKK2NsYXNzIFdlYkFzeW5jRmlsZVN5c3RlbSB7CitwdWJsaWM6CisgICAg
dmlydHVhbCB+V2ViQXN5bmNGaWxlU3lzdGVtKCkgeyB9CisKKyAgICAvLyBGaWxlRXJyb3IgY29k
ZSBkZWZpbmVkIGZvciBIVE1MNSBGaWxlIEFQSS4KKyAgICBlbnVtIEVycm9yQ29kZSB7CisgICAg
ICAgIFN1Y2Nlc3NFcnJvciA9IDAsCisgICAgICAgIE5vTW9kaWZpY2F0aW9uQWxsb3dlZEVycm9y
ID0gNywKKyAgICAgICAgTm90Rm91bmRFcnJvciA9IDgsCisgICAgICAgIEludmFsaWRTdGF0ZUVy
cm9yID0gMTEsCisgICAgICAgIEludmFsaWRNb2RpZmljYXRpb25FcnJvciA9IDEzLAorICAgICAg
ICBTZWN1cml0eUVycm9yID0gMTgsCisgICAgICAgIEFib3J0RXJyb3IgPSAyMCwKKyAgICAgICAg
UXVvdGFFeGNlZWRlZEVycm9yID0gMjIsCisgICAgICAgIE5vdFJlYWRhYmxlRXJyb3IgPSAyNCwK
KyAgICAgICAgRW5jb2RpbmdFcnJvciA9IDI2LAorICAgIH07CisKKyAgICBzdHJ1Y3QgR2V0Rmls
ZUZsYWdzIHsKKyAgICAgICAgLy8gSWYgfGNyZWF0ZXwgaXMgdHJ1ZSwgV2ViQXN5bmNGaWxlU3lz
dGVtOjpnZXRGaWxlKCkgb3IgZ2V0RGlyZWN0b3J5KCkgY3JlYXRlcyBhIGZpbGUgb3IgZGlyZWN0
b3J5IGlmIGl0IHdhcyBub3QgcHJldmlvdXNseSB0aGVyZS4KKyAgICAgICAgYm9vbCBjcmVhdGU7
CisgICAgICAgIC8vIElmIGJvdGggfGV4Y2x1c2l2ZXwgYW5kIHxjcmVhdGV8IGFyZSB0cnVlLCBX
ZWJBc3luY0ZpbGVTeXN0ZW06OmdldEZpbGUoKSBvciBnZXREaXJlY3RvcnkoKSBtdXN0IGZhaWwg
aWYgdGhlIHRhcmdldCBwYXRoIGFscmVhZHkgZXhpc3RzLgorICAgICAgICBib29sIGV4Y2x1c2l2
ZTsKKyAgICB9OworCisgICAgY2xhc3MgQ2FsbGJhY2tzIHsKKyAgICBwdWJsaWM6CisgICAgICAg
IHZpcnR1YWwgfkNhbGxiYWNrcygpIHsgfQorCisgICAgICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nl
c3MoKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3NFbnRyeSgpID0gMDsKKyAg
ICAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzc0ZpbGVTeXN0ZW0oY29uc3QgV2ViU3RyaW5nJiBu
YW1lLCBjb25zdCBXZWJTdHJpbmcmIHBhdGgsIGxvbmcgbG9uZyBzaXplKSA9IDA7CisgICAgICAg
IHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3NNZXRhZGF0YShXZWJGaWxlSW5mbyBpbmZvKSA9IDA7Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCBvbkVycm9yKGludCBlcnJvckNvZGUpID0gMDsKKyAgICB9Owor
CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RGaWxlU3lzdGVtKGJvb2wgcGVyc2lzdGVudCwgbG9u
ZyBsb25nIHNpemUsIGNvbnN0IFdlYlNlY3VyaXR5T3JpZ2luJiwgV2ViRnJhbWUqLCBDYWxsYmFj
a3MqKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorCisgICAgdmlydHVhbCB2b2lk
IG1vdmUoY29uc3QgV2ViU3RyaW5nJiBzcmMsIGNvbnN0IFdlYlN0cmluZyYgZGVzdCwgQ2FsbGJh
Y2tzKikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
Y29weShjb25zdCBXZWJTdHJpbmcmIHNyYywgY29uc3QgV2ViU3RyaW5nJiBkZXN0LCBDYWxsYmFj
a3MqKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBy
ZW1vdmUoY29uc3QgV2ViU3RyaW5nJiBwYXRoLCBDYWxsYmFja3MqKSB7IFdFQktJVF9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBnZXRNZXRhZGF0YShjb25zdCBXZWJT
dHJpbmcmIHBhdGgsIENhbGxiYWNrcyopIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9
CisgICAgdmlydHVhbCB2b2lkIGdldEZpbGUoY29uc3QgV2ViU3RyaW5nJiBwYXRoLCBHZXRGaWxl
RmxhZ3MgZmxhZ3MsIENhbGxiYWNrcyopIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9
CisgICAgdmlydHVhbCB2b2lkIGdldERpcmVjdG9yeShjb25zdCBXZWJTdHJpbmcmIHBhdGgsIEdl
dEZpbGVGbGFncyBmbGFncywgQ2FsbGJhY2tzKikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVE
KCk7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViQXN5bmNG
aWxlU3lzdGVtX2gKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViS2l0Q2xp
ZW50LmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYktpdENsaWVudC5oCmluZGV4IDQ4NzY1
YWNjN2VmODc2MTRhYzMwZTZjMWExMzI0MWU5ZDAzNzlkOWEuLjE4Mzg0MDgyZWY4MmFkYjQ5NmU0
ZWVkMzExMzBhODM1NWIxMTg5OGYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViS2l0Q2xpZW50LmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJLaXRDbGllbnQu
aApAQCAtNDcsNiArNDcsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViQXBwbGlj
YXRpb25DYWNoZUhvc3Q7CiBjbGFzcyBXZWJBcHBsaWNhdGlvbkNhY2hlSG9zdENsaWVudDsKK2Ns
YXNzIFdlYkFzeW5jRmlsZVN5c3RlbTsKIGNsYXNzIFdlYkNsaXBib2FyZDsKIGNsYXNzIFdlYkNv
b2tpZUphcjsKIGNsYXNzIFdlYkZpbGVTeXN0ZW07CkBAIC0yNjIsNiArMjYzLDEwIEBAIHB1Ymxp
YzoKICAgICAvLyBNYXkgcmV0dXJuIG51bGwgaWYgaXQgZmFpbHMgdG8gY3JlYXRlIHRoZSBjb250
ZXh0LgogICAgIHZpcnR1YWwgV2ViR0xFUzJDb250ZXh0KiBjcmVhdGVHTEVTMkNvbnRleHQoKSB7
IHJldHVybiAwOyB9CiAKKyAgICAvLyBIVE1MNSBGaWxlU3lzdGVtIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIHZpcnR1YWwgV2ViQXN5
bmNGaWxlU3lzdGVtKiBhc3luY0ZpbGVTeXN0ZW0oKSB7IHJldHVybiAwOyB9CisKIHByb3RlY3Rl
ZDoKICAgICB+V2ViS2l0Q2xpZW50KCkgeyB9CiB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63139</attachid>
            <date>2010-07-30 21:18:03 -0700</date>
            <delta_ts>2010-08-11 20:30:39 -0700</delta_ts>
            <desc>Patch (updated; not yet merged into WebFileSystem)</desc>
            <filename>bug-43151-20100730211802.patch</filename>
            <type>text/plain</type>
            <size>12484</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IDQzNWE2NzVmMjBhN2YwNWY0MDQ4Mjg5YTJiZjVmM2YzMmM5MjMzZjcu
Ljg0MDc5ZTMyNjY5MzVhZWU5NGUzMGJmYzcyNmJkNjQyZGQxNDU4YTEgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDIyIEBACisyMDEwLTA3LTI4ICBLaW51a28gWWFzdWRhICA8a2ludWtvQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGQgV2ViS2l0IEFQSSBmb3IgSFRNTDUgRmlsZVN5c3RlbSBBUEkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQzMTUxCisKKyAgICAgICAgQWRkIGFz
eW5jaHJvbm91cyBGaWxlU3lzdGVtIGludGVyZmFjZSB0byBXZWJLaXQgQVBJIGZvcgorICAgICAg
ICBIVE1MNSBGaWxlU3lzdGVtIEFQSS4KKyAgICAgICAgaHR0cDovL2Rldi53My5vcmcvMjAwOS9k
YXAvZmlsZS1zeXN0ZW0vZmlsZS1kaXItc3lzLmh0bWwKKworICAgICAgICAqIFdlYktpdC5neXA6
CisgICAgICAgICogcHVibGljL1dlYkFzeW5jRmlsZVN5c3RlbS5oOiBBZGRlZC4KKyAgICAgICAg
KiBwdWJsaWMvV2ViRmlsZVN5c3RlbUNhbGxiYWNrLmg6IEFkZGVkLgorICAgICAgICAqIHB1Ymxp
Yy9XZWJLaXRDbGllbnQuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViS2l0Q2xpZW50Ojphc3luY0Zp
bGVTeXN0ZW0pOgorICAgICAgICAqIHB1YmxpYy9XZWJGcmFtZUNsaWVudC5oOgorICAgICAgICAo
V2ViS2l0OjpXZWJGcmFtZUNsaWVudDo6cmVxdWVzdEZpbGVTeXN0ZW0pOgorCiAyMDEwLTA3LTI4
ICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgRGFyaW4gRmlzaGVyLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5n
eXAgYi9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCA5N2VmZGRjYjU3MTNkMzFkYmZh
MzZkYmNiMTI0ZjBjMTgwMjAwZmEzLi4wMTY0NWExYTliMWZiZTgxM2QzYzE4NDU1Njk4NDZkOTNj
YjI0OGQ5IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAorKysgYi9XZWJL
aXQvY2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtMTE2LDYgKzExNiw3IEBACiAgICAgICAgICAgICAg
ICAgJ3B1YmxpYy9XZWJBbmltYXRpb25Db250cm9sbGVyLmgnLAogICAgICAgICAgICAgICAgICdw
dWJsaWMvV2ViQXBwbGljYXRpb25DYWNoZUhvc3QuaCcsCiAgICAgICAgICAgICAgICAgJ3B1Ymxp
Yy9XZWJBcHBsaWNhdGlvbkNhY2hlSG9zdENsaWVudC5oJywKKyAgICAgICAgICAgICAgICAncHVi
bGljL1dlYkFzeW5jRmlsZVN5c3RlbS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkF0
dHJpYnV0ZS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkJpbmRpbmdzLmgnLAogICAg
ICAgICAgICAgICAgICdwdWJsaWMvV2ViQ2FjaGUuaCcsCkBAIC0xNTQsNiArMTU1LDcgQEAKICAg
ICAgICAgICAgICAgICAncHVibGljL1dlYkZpbGVDaG9vc2VyQ29tcGxldGlvbi5oJywKICAgICAg
ICAgICAgICAgICAncHVibGljL1dlYkZpbGVDaG9vc2VyUGFyYW1zLmgnLAogICAgICAgICAgICAg
ICAgICdwdWJsaWMvV2ViRmlsZUluZm8uaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJG
aWxlU3lzdGVtQ2FsbGJhY2suaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJGaWxlU3lz
dGVtLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRmluZE9wdGlvbnMuaCcsCiAgICAg
ICAgICAgICAgICAgJ3B1YmxpYy9XZWJGbG9hdFBvaW50LmgnLApkaWZmIC0tZ2l0IGEvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJBc3luY0ZpbGVTeXN0ZW0uaCBiL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViQXN5bmNGaWxlU3lzdGVtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTJjN2UzMTY1Y2E2NmFjNDE3
MTBjZTQxZDQzNzFlM2I4ZWY0NmFmZgotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViQXN5bmNGaWxlU3lzdGVtLmgKQEAgLTAsMCArMSwxMzIgQEAKKy8qCisgKiBD
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
YkFzeW5jRmlsZVN5c3RlbV9oCisjZGVmaW5lIFdlYkFzeW5jRmlsZVN5c3RlbV9oCisKKyNpbmNs
dWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJGaWxlSW5mby5oIgorI2luY2x1ZGUgIldl
YlNlY3VyaXR5T3JpZ2luLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJGcmFt
ZTsKK2NsYXNzIFdlYkZTQ2FsbGJhY2tzOworY2xhc3MgV2ViU3RyaW5nOworCitjbGFzcyBXZWJB
c3luY0ZpbGVTeXN0ZW0geworcHVibGljOgorICAgIC8vIEZpbGVFcnJvciBjb2RlIGRlZmluZWQg
Zm9yIEhUTUw1IEZpbGUgQVBJLgorICAgIC8vIEZJWE1FOiBNZXJnZSBXZWJBc3luY0ZpbGVTeXN0
ZW0gaW50byBXZWJGaWxlU3lzdGVtIG9yIGV4cG9ydCB0aGUKKyAgICAvLyBlcnJvciBjb2RlIHRv
IGEgc2VwYXJhdGUgZmlsZS4KKyAgICBlbnVtIEVycm9yIHsKKyAgICAgICAgRXJyb3JTdWNjZXNz
ID0gMCwKKyAgICAgICAgRXJyb3JOb01vZGlmaWNhdGlvbkFsbG93ZWQgPSA3LAorICAgICAgICBF
cnJvck5vdEZvdW5kID0gOCwKKyAgICAgICAgRXJyb3JJbnZhbGlkU3RhdGUgPSAxMSwKKyAgICAg
ICAgRXJyb3JJbnZhbGlkTW9kaWZpY2F0aW9uID0gMTMsCisgICAgICAgIEVycm9yU2VjdXJpdHkg
PSAxOCwKKyAgICAgICAgRXJyb3JBYm9ydCA9IDIwLAorICAgICAgICBFcnJvclF1b3RhRXhjZWVk
ZWQgPSAyMiwKKyAgICAgICAgRXJyb3JOb3RSZWFkYWJsZSA9IDI0LAorICAgICAgICBFcnJvckVu
Y29kaW5nID0gMjYsCisgICAgfTsKKworICAgIGNsYXNzIENhbGxiYWNrcyB7CisgICAgcHVibGlj
OgorICAgICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKCkgPSAwOworICAgICAgICB2aXJ0dWFs
IHZvaWQgb25TdWNjZXNzRW50cnkoKSA9IDA7IC8vIEZJWE1FOiBjbGVhbiB0aGlzIHVwCisgICAg
ICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3NNZXRhZGF0YShXZWJGaWxlSW5mbyBpbmZvKSA9IDA7
CisgICAgICAgIHZpcnR1YWwgdm9pZCBvbkVycm9yKGludCBlcnJvckNvZGUpID0gMDsKKworICAg
ICAgICAvLyBGSVhNRTogTWFrZSB0aGlzIHByb3RlY3RlZCBvciBtYWtlIGl0IGNsZWFyIGFib3V0
IHdobyBuZWVkcyB0bworICAgICAgICAvLyBvd24gYW5kIGRlbGV0ZSB0aGUgcG9pbnRlci4KKyAg
ICAgICAgdmlydHVhbCB+Q2FsbGJhY2tzKCkgeyB9CisgICAgfTsKKworICAgIC8vIE1vdmVzIGEg
ZmlsZSBvciBkaXJlY3RvcnkgYXQgfHNyY1BhdGh8IHRvIHxkZXN0UGF0aHwuCisgICAgLy8gQ2Fs
bGJhY2tzOjpvblN1Y2Nlc3NFbnRyeSgpIG1ldGhvZCBpcyBjYWxsZWQgd2hlbiB0aGUgb3BlcmF0
aW9uCisgICAgLy8gaXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseS4gIENhbGxiYWNrczo6b25FcnJv
cigpIGlzIGNhbGxlZCBvdGhlcndpc2UuCisgICAgdmlydHVhbCB2b2lkIG1vdmUoY29uc3QgV2Vi
U3RyaW5nJiBzcmNQYXRoLCBjb25zdCBXZWJTdHJpbmcmIGRlc3RQYXRoLCBDYWxsYmFja3MqKSB7
IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorCisgICAgLy8gQ29waWVzIGEgZmlsZSBv
ciBkaXJlY3RvcnkgYXQgfHNyY1BhdGh8IHRvIHxkZXN0UGF0aHwuCisgICAgLy8gQ2FsbGJhY2tz
OjpvblN1Y2Nlc3NFbnRyeSgpIG1ldGhvZCBpcyBjYWxsZWQgd2hlbiB0aGUgb3BlcmF0aW9uCisg
ICAgLy8gaXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseS4gIENhbGxiYWNrczo6b25FcnJvcigpIGlz
IGNhbGxlZCBvdGhlcndpc2UuCisgICAgdmlydHVhbCB2b2lkIGNvcHkoY29uc3QgV2ViU3RyaW5n
JiBzcmNQYXRoLCBjb25zdCBXZWJTdHJpbmcmIGRlc3RQYXRoLCBDYWxsYmFja3MqKSB7IFdFQktJ
VF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorCisgICAgLy8gRGVsZXRlcyBhIGZpbGUgb3IgZGly
ZWN0b3J5IGF0IGdpdmVuIHxwYXRofC4KKyAgICAvLyBDYWxsYmFja3M6Om9uU3VjY2VzcygpIG1l
dGhvZCBpcyBjYWxsZWQgd2hlbiB0aGUgb3BlcmF0aW9uIGlzCisgICAgLy8gY29tcGxldGVkIHN1
Y2Nlc3NmdWxseS4gIENhbGxiYWNrczo6b25FcnJvcigpIGlzIGNhbGxlZCBvdGhlcndpc2UuCisg
ICAgdmlydHVhbCB2b2lkIHJlbW92ZShjb25zdCBXZWJTdHJpbmcmIHBhdGgsIENhbGxiYWNrcyop
IHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisKKyAgICAvLyBSZXRyaWV2ZXMgdGhl
IG1ldGFkYXRhIGluZm9ybWF0aW9uIG9mIHRoZSBmaWxlIG9yIGRpcmVjdG9yeSBhdCB0aGUKKyAg
ICAvLyBnaXZlbiB8cGF0aHwuCisgICAgLy8gQ2FsbGJhY2tzOjpvblN1Y2Nlc3NNZXRhZGF0YSgp
IGlzIGNhbGxlZCB3aXRoIGEgdmFsaWQgbWV0YWRhdGEKKyAgICAvLyB3aGVuIHRoZSByZXRyaWV2
YWwgaXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseS4gIENhbGxiYWNrczo6b25FcnJvcigpCisgICAg
Ly8gaXMgY2FsbGVkIG90aGVyd2lzZS4KKyAgICB2aXJ0dWFsIHZvaWQgZ2V0TWV0YWRhdGEoY29u
c3QgV2ViU3RyaW5nJiBwYXRoLCBDYWxsYmFja3MqKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsgfQorCisgICAgLy8gQ3JlYXRlcyBvciBsb29rcyB1cCBhIGZpbGUgYXQgZ2l2ZW4gfHBh
dGh8LgorICAgIC8vIElmIHxleGNsdXNpdmV8IGlzIHRydWUsIGl0IGZhaWxzIGlmIHRoZSB8cGF0
aHwgYWxyZWFkeSBleGlzdHMuCisgICAgLy8gSWYgaXQgZG9lc24ndCBleGlzdCBpdCBjcmVhdGVz
IGEgbmV3IGZpbGUgYXQgfHBhdGh8LgorICAgIC8vIElmIHxleGNsdXNpdmV8IGlzIGZhbHNlLCBp
dCBzdWNjZWVkcyBpZiB0aGUgfHBhdGh8IGFscmVhZHkgZXhpc3RzCisgICAgLy8gb3IgaXQgaGFz
IHN1Y2Nlc3NmdWxseSBjcmVhdGVkIGEgbmV3IGZpbGUgYXQgfHBhdGh8LgorICAgIC8vCisgICAg
Ly8gQ2FsbGJhY2tzOjpvblN1Y2Nlc3NFbnRyeSgpIG1ldGhvZCBpcyBjYWxsZWQgd2hlbiB0aGUg
b3BlcmF0aW9uCisgICAgLy8gaXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseS4gQ2FsbGJhY2tzOjpv
bkVycm9yKCkgaXMgY2FsbGVkIG90aGVyd2lzZS4KKyAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlRmls
ZShjb25zdCBXZWJTdHJpbmcmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBDYWxsYmFja3MqKSB7IFdF
QktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorCisgICAgLy8gQ3JlYXRlcyBvciBsb29rcyB1
cCBhIGRpcmVjdG9yeSBhdCBnaXZlbiB8cGF0aHwuCisgICAgLy8gSWYgfGV4Y2x1c2l2ZXwgaXMg
dHJ1ZSwgaXQgZmFpbHMgaWYgdGhlIHxwYXRofCBhbHJlYWR5IGV4aXN0cy4KKyAgICAvLyBJZiBp
dCBkb2Vzbid0IGV4aXN0IGl0IGNyZWF0ZXMgYSBuZXcgZmlsZSBhdCB8cGF0aHwuCisgICAgLy8g
SWYgfGV4Y2x1c2l2ZXwgaXMgZmFsc2UsIGl0IHN1Y2NlZWRzIGlmIHRoZSB8cGF0aHwgYWxyZWFk
eSBleGlzdHMKKyAgICAvLyBvciBpdCBoYXMgc3VjY2Vzc2Z1bGx5IGNyZWF0ZWQgYSBuZXcgZmls
ZSBhdCB8cGF0aHwuCisgICAgLy8KKyAgICAvLyBDYWxsYmFja3M6Om9uU3VjY2Vzc0VudHJ5KCkg
bWV0aG9kIGlzIGNhbGxlZCB3aGVuIHRoZSBvcGVyYXRpb24KKyAgICAvLyBpcyBjb21wbGV0ZWQg
c3VjY2Vzc2Z1bGx5LiBDYWxsYmFja3M6Om9uRXJyb3IoKSBpcyBjYWxsZWQgb3RoZXJ3aXNlLgor
ICAgIHZpcnR1YWwgdm9pZCBnZXREaXJlY3RvcnkoY29uc3QgV2ViU3RyaW5nJiBwYXRoLCBib29s
IGV4Y2x1c2l2ZSwgQ2FsbGJhY2tzKikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0K
KworICAgIC8vIENoZWNrcyBpZiBhIGZpbGUgZXhpc3RzIGF0IGdpdmVuIHxwYXRofC4KKyAgICAv
LyBDYWxsYmFja3M6Om9uU3VjY2Vzc0VudHJ5KCkgbWV0aG9kIGlzIGNhbGxlZCB3aGVuIHRoZSBv
cGVyYXRpb24KKyAgICAvLyBpcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LiBDYWxsYmFja3M6Om9u
RXJyb3IoKSBpcyBjYWxsZWQgb3RoZXJ3aXNlLgorICAgIHZpcnR1YWwgdm9pZCBpc0ZpbGUoY29u
c3QgV2ViU3RyaW5nJiBwYXRoLCBDYWxsYmFja3MqKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsgfQorCisgICAgLy8gQ2hlY2tzIGlmIGEgZGlyZWN0b3J5IGV4aXN0cyBhdCBnaXZlbiB8
cGF0aHwuCisgICAgLy8gQ2FsbGJhY2tzOjpvblN1Y2Nlc3NFbnRyeSgpIG1ldGhvZCBpcyBjYWxs
ZWQgd2hlbiB0aGUgb3BlcmF0aW9uCisgICAgLy8gaXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseS4g
Q2FsbGJhY2tzOjpvbkVycm9yKCkgaXMgY2FsbGVkIG90aGVyd2lzZS4KKyAgICB2aXJ0dWFsIHZv
aWQgaXNEaXJlY3RvcnkoY29uc3QgV2ViU3RyaW5nJiBwYXRoLCBDYWxsYmFja3MqKSB7IFdFQktJ
VF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB+V2Vi
QXN5bmNGaWxlU3lzdGVtKCkgeyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2Vu
ZGlmIC8vIFdlYkFzeW5jRmlsZVN5c3RlbV9oCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkZpbGVTeXN0ZW1DYWxsYmFjay5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJGaWxlU3lzdGVtQ2FsbGJhY2suaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZTBjNGZhYzczODRlYzkyODNmZjc2
NDJlNmVhYTBlYjcyNTlmZjhhCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJGaWxlU3lzdGVtQ2FsbGJhY2suaApAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29w
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
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiAgIFdl
YkZpbGVTeXN0ZW1DYWxsYmFja19oCisjZGVmaW5lICAgV2ViRmlsZVN5c3RlbUNhbGxiYWNrX2gK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlN0cmluZzsKK3RlbXBsYXRlIDx0eXBl
bmFtZSBUPiBjbGFzcyBXZWJWZWN0b3I7CisKKy8vIEdldHMgY2FsbGVkIGJhY2sgd2hlbiBXZWJG
cmFtZUNsaWVudDo6cmVxdWVzdEZpbGVTeXN0ZW0gcmVxdWVzdCBpcyBjb21wbGV0ZWQuCitjbGFz
cyBXZWJGaWxlU3lzdGVtQ2FsbGJhY2sgeworcHVibGljOgorICAgIC8vIENhbGxlZCB3aXRoIGEg
bmFtZSBhbmQgcm9vdCBwYXRoIGZvciB0aGUgRmlsZVN5c3RlbSB3aGVuIHRoZSByZXF1ZXN0IGlz
CisgICAgLy8gYWNjZXB0ZWQuCisgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzcyhjb25zdCBXZWJT
dHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYgcm9vdFBhdGgpID0gMDsKKworICAgIC8vIENh
bGxlZCB3aGVuIHRoZSByZXF1ZXN0IGlzIGRlbmllZC4KKyAgICB2aXJ0dWFsIHZvaWQgb25FcnJv
cigpID0gMDsKKworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgfldlYkZpbGVTeXN0ZW1DYWxsYmFj
aygpIHt9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQg
YS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lQ2xpZW50LmggYi9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYkZyYW1lQ2xpZW50LmgKaW5kZXggMmI3ZWUwZDMwN2NhYWUyZTA4MDI0MzY2
MTAzZDFiYjliN2Q3NTFkZi4uMzQ2M2I1ZTc4YzdmMjRhMzYwMWMxODIwZGQ3NTAwNmY1ZDViNDkw
OCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oCisr
KyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQuaApAQCAtNDIsNiArNDIs
NyBAQCBjbGFzcyBXZWJBcHBsaWNhdGlvbkNhY2hlSG9zdDsKIGNsYXNzIFdlYkFwcGxpY2F0aW9u
Q2FjaGVIb3N0Q2xpZW50OwogY2xhc3MgV2ViQ29va2llSmFyOwogY2xhc3MgV2ViRGF0YVNvdXJj
ZTsKK2NsYXNzIFdlYkZpbGVTeXN0ZW1DYWxsYmFjazsKIGNsYXNzIFdlYkZvcm1FbGVtZW50Owog
Y2xhc3MgV2ViRnJhbWU7CiBjbGFzcyBXZWJNZWRpYVBsYXllcjsKQEAgLTMyNyw2ICszMjgsMTEg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZXBvcnRGaW5kSW5QYWdlU2VsZWN0aW9uKAog
ICAgICAgICBpbnQgaWRlbnRpZmllciwgaW50IGFjdGl2ZU1hdGNoT3JkaW5hbCwgY29uc3QgV2Vi
UmVjdCYgc2VsZWN0aW9uKSB7IH0KIAorICAgIC8vIEhUTUw1IEZpbGVTeXN0ZW0gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgdmlydHVh
bCB2b2lkIHJlcXVlc3RGaWxlU3lzdGVtKAorICAgICAgICBXZWJGcmFtZSosIGJvb2wgcGVyc2lz
dGVudCwgbG9uZyBsb25nIHNpemUsIFdlYkZpbGVTeXN0ZW1DYWxsYmFjayopIHsgfQorCiBwcm90
ZWN0ZWQ6CiAgICAgfldlYkZyYW1lQ2xpZW50KCkgeyB9CiB9OwpkaWZmIC0tZ2l0IGEvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJLaXRDbGllbnQuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViS2l0Q2xpZW50LmgKaW5kZXggNDg3NjVhY2M3ZWY4NzYxNGFjMzBlNmMxYTEzMjQxZTlkMDM3
OWQ5YS4uMTgzODQwODJlZjgyYWRiNDk2ZTRlZWQzMTEzMGE4MzU1YjExODk4ZiAxMDA2NDQKLS0t
IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJLaXRDbGllbnQuaAorKysgYi9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYktpdENsaWVudC5oCkBAIC00Nyw2ICs0Nyw3IEBAIG5hbWVzcGFjZSBX
ZWJLaXQgewogCiBjbGFzcyBXZWJBcHBsaWNhdGlvbkNhY2hlSG9zdDsKIGNsYXNzIFdlYkFwcGxp
Y2F0aW9uQ2FjaGVIb3N0Q2xpZW50OworY2xhc3MgV2ViQXN5bmNGaWxlU3lzdGVtOwogY2xhc3Mg
V2ViQ2xpcGJvYXJkOwogY2xhc3MgV2ViQ29va2llSmFyOwogY2xhc3MgV2ViRmlsZVN5c3RlbTsK
QEAgLTI2Miw2ICsyNjMsMTAgQEAgcHVibGljOgogICAgIC8vIE1heSByZXR1cm4gbnVsbCBpZiBp
dCBmYWlscyB0byBjcmVhdGUgdGhlIGNvbnRleHQuCiAgICAgdmlydHVhbCBXZWJHTEVTMkNvbnRl
eHQqIGNyZWF0ZUdMRVMyQ29udGV4dCgpIHsgcmV0dXJuIDA7IH0KIAorICAgIC8vIEhUTUw1IEZp
bGVTeXN0ZW0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCisgICAgdmlydHVhbCBXZWJBc3luY0ZpbGVTeXN0ZW0qIGFzeW5jRmlsZVN5c3RlbSgp
IHsgcmV0dXJuIDA7IH0KKwogcHJvdGVjdGVkOgogICAgIH5XZWJLaXRDbGllbnQoKSB7IH0KIH07
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64183</attachid>
            <date>2010-08-11 20:30:42 -0700</date>
            <delta_ts>2010-08-12 20:09:47 -0700</delta_ts>
            <desc>Patch (cleaned up minor issues)</desc>
            <filename>bug-43151-20100811203041.patch</filename>
            <type>text/plain</type>
            <size>12204</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IGE0Yzg0NWNhNzJmZmM1ODgzODM2MDc2OTNkNGE5YjhhOTVjNTI2MzAu
Ljg1NmM4MTRmNGI0ODdhNjVmZTRjN2EyZWY4MDgwMTkxMzI4MDNhYjAgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDIyIEBACisyMDEwLTA4LTA3ICBLaW51a28gWWFzdWRhICA8a2ludWtvQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGQgV2ViS2l0IEFQSSBmb3IgSFRNTDUgRmlsZVN5c3RlbSBBUEkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQzMTUxCisKKyAgICAgICAgQWRkIGFz
eW5jaHJvbm91cyBGaWxlU3lzdGVtIGludGVyZmFjZSB0byBXZWJLaXQgQVBJIGZvcgorICAgICAg
ICBIVE1MNSBGaWxlU3lzdGVtIEFQSS4KKyAgICAgICAgaHR0cDovL2Rldi53My5vcmcvMjAwOS9k
YXAvZmlsZS1zeXN0ZW0vZmlsZS1kaXItc3lzLmh0bWwKKworICAgICAgICAqIFdlYktpdC5neXA6
CisgICAgICAgICogcHVibGljL1dlYkFzeW5jRmlsZVN5c3RlbS5oOiBBZGRlZC4KKyAgICAgICAg
KiBwdWJsaWMvV2ViRmlsZVN5c3RlbUNhbGxiYWNrLmg6IEFkZGVkLgorICAgICAgICAqIHB1Ymxp
Yy9XZWJLaXRDbGllbnQuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViS2l0Q2xpZW50Ojphc3luY0Zp
bGVTeXN0ZW0pOgorICAgICAgICAqIHB1YmxpYy9XZWJGcmFtZUNsaWVudC5oOgorICAgICAgICAo
V2ViS2l0OjpXZWJGcmFtZUNsaWVudDo6cmVxdWVzdEZpbGVTeXN0ZW0pOgorCiAyMDEwLTA4LTA3
ICBKYXkgQ2l2ZWxsaSAgPGpjaXZlbGxpQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBFcmljIFNlaWRlbC4KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lw
IGIvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKaW5kZXggMDZmZDgyY2JiOWJlOTAwMWNjNjdm
Yzg0NzA0YTA2YjYzMzk4ZDljMy4uZTI3M2VhODM4ZjJhZWUyNDJlMDQyNGYyMzA1YTk4YTRjYTJi
OTMzNyAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKKysrIGIvV2ViS2l0
L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTExNiw2ICsxMTYsNyBAQAogICAgICAgICAgICAgICAg
ICdwdWJsaWMvV2ViQW5pbWF0aW9uQ29udHJvbGxlci5oJywKICAgICAgICAgICAgICAgICAncHVi
bGljL1dlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMv
V2ViQXBwbGljYXRpb25DYWNoZUhvc3RDbGllbnQuaCcsCisgICAgICAgICAgICAgICAgJ3B1Ymxp
Yy9XZWJBc3luY0ZpbGVTeXN0ZW0uaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJBdHRy
aWJ1dGUuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJCaW5kaW5ncy5oJywKICAgICAg
ICAgICAgICAgICAncHVibGljL1dlYkNhY2hlLmgnLApAQCAtMTUyLDYgKzE1Myw3IEBACiAgICAg
ICAgICAgICAgICAgJ3B1YmxpYy9XZWJGaWxlQ2hvb3NlckNvbXBsZXRpb24uaCcsCiAgICAgICAg
ICAgICAgICAgJ3B1YmxpYy9XZWJGaWxlQ2hvb3NlclBhcmFtcy5oJywKICAgICAgICAgICAgICAg
ICAncHVibGljL1dlYkZpbGVJbmZvLmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRmls
ZVN5c3RlbUNhbGxiYWNrLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRmlsZVN5c3Rl
bS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkZpbmRPcHRpb25zLmgnLAogICAgICAg
ICAgICAgICAgICdwdWJsaWMvV2ViRmxvYXRQb2ludC5oJywKZGlmZiAtLWdpdCBhL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViQXN5bmNGaWxlU3lzdGVtLmggYi9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYkFzeW5jRmlsZVN5c3RlbS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJmMmE3MjkxZDRhMjMyZjgzYzQ2
ZDkwMjkzOTVjOTU4OTY5NWZiYWUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkFzeW5jRmlsZVN5c3RlbS5oCkBAIC0wLDAgKzEsMTEzIEBACisvKgorICogQ29w
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
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJB
c3luY0ZpbGVTeXN0ZW1faAorI2RlZmluZSBXZWJBc3luY0ZpbGVTeXN0ZW1faAorCisjaW5jbHVk
ZSAiV2ViQ29tbW9uLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJGaWxlSW5m
bzsKK2NsYXNzIFdlYlN0cmluZzsKKworY2xhc3MgV2ViQXN5bmNGaWxlU3lzdGVtIHsKK3B1Ymxp
YzoKKyAgICAvLyBGaWxlRXJyb3IgY29kZSBkZWZpbmVkIGZvciBIVE1MNSBGaWxlIEFQSS4KKyAg
ICBlbnVtIEVycm9yIHsKKyAgICAgICAgRXJyb3JTdWNjZXNzID0gMCwKKyAgICAgICAgRXJyb3JO
b01vZGlmaWNhdGlvbkFsbG93ZWQgPSA3LAorICAgICAgICBFcnJvck5vdEZvdW5kID0gOCwKKyAg
ICAgICAgRXJyb3JJbnZhbGlkU3RhdGUgPSAxMSwKKyAgICAgICAgRXJyb3JJbnZhbGlkTW9kaWZp
Y2F0aW9uID0gMTMsCisgICAgICAgIEVycm9yU2VjdXJpdHkgPSAxOCwKKyAgICAgICAgRXJyb3JB
Ym9ydCA9IDIwLAorICAgICAgICBFcnJvclF1b3RhRXhjZWVkZWQgPSAyMiwKKyAgICAgICAgRXJy
b3JOb3RSZWFkYWJsZSA9IDI0LAorICAgICAgICBFcnJvckVuY29kaW5nID0gMjYsCisgICAgfTsK
KworICAgIGNsYXNzIENhbGxiYWNrcyB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIHZv
aWQgb25TdWNjZXNzKCkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzTWV0YWRh
dGEoY29uc3QgV2ViRmlsZUluZm8mIGluZm8pID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIG9u
RXJyb3IoaW50IGVycm9yQ29kZSkgPSAwOworCisgICAgcHJvdGVjdGVkOgorICAgICAgICB2aXJ0
dWFsIH5DYWxsYmFja3MoKSB7IH0KKyAgICB9OworCisgICAgLy8gTW92ZXMgYSBmaWxlIG9yIGRp
cmVjdG9yeSBhdCB8c3JjUGF0aHwgdG8gfGRlc3RQYXRofC4KKyAgICAvLyBDYWxsYmFja3M6Om9u
U3VjY2VzcygpIG9uIHxjYWxsYmFja3N8IG11c3QgYmUgY2FsbGVkIHdoZW4gdGhlIG9wZXJhdGlv
biBpcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LiAgQ2FsbGJhY2tzOjpvbkVycm9yKCkgbXVzdCBi
ZSBjYWxsZWQgb3RoZXJ3aXNlLgorICAgIHZpcnR1YWwgdm9pZCBtb3ZlKGNvbnN0IFdlYlN0cmlu
ZyYgc3JjUGF0aCwgY29uc3QgV2ViU3RyaW5nJiBkZXN0UGF0aCwgQ2FsbGJhY2tzKiBjYWxsYmFj
a3MpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisKKyAgICAvLyBDb3BpZXMgYSBm
aWxlIG9yIGRpcmVjdG9yeSBhdCB8c3JjUGF0aHwgdG8gfGRlc3RQYXRofC4KKyAgICAvLyBDYWxs
YmFja3M6Om9uU3VjY2VzcygpIG9uIHxjYWxsYmFja3N8IG11c3QgYmUgY2FsbGVkIHdoZW4gdGhl
IG9wZXJhdGlvbiBpcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LiAgQ2FsbGJhY2tzOjpvbkVycm9y
KCkgbXVzdCBiZSBjYWxsZWQgb3RoZXJ3aXNlLgorICAgIHZpcnR1YWwgdm9pZCBjb3B5KGNvbnN0
IFdlYlN0cmluZyYgc3JjUGF0aCwgY29uc3QgV2ViU3RyaW5nJiBkZXN0UGF0aCwgQ2FsbGJhY2tz
KiBjYWxsYmFja3MpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisKKyAgICAvLyBE
ZWxldGVzIGEgZmlsZSBvciBkaXJlY3RvcnkgYXQgZ2l2ZW4gfHBhdGh8LgorICAgIC8vIENhbGxi
YWNrczo6b25TdWNjZXNzKCkgb24gfGNhbGxiYWNrc3wgbXVzdCBiZSBjYWxsZWQgd2hlbiB0aGUg
b3BlcmF0aW9uIGlzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuICBDYWxsYmFja3M6Om9uRXJyb3Io
KSBtdXN0IGJlIGNhbGxlZCBvdGhlcndpc2UuCisgICAgdmlydHVhbCB2b2lkIHJlbW92ZShjb25z
dCBXZWJTdHJpbmcmIHBhdGgsIENhbGxiYWNrcyogY2FsbGJhY2tzKSB7IFdFQktJVF9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsgfQorCisgICAgLy8gUmV0cmlldmVzIHRoZSBtZXRhZGF0YSBpbmZvcm1h
dGlvbiBvZiB0aGUgZmlsZSBvciBkaXJlY3RvcnkgYXQgdGhlIGdpdmVuIHxwYXRofC4KKyAgICAv
LyBDYWxsYmFja3M6Om9uU3VjY2Vzc01ldGFkYXRhKCkgb24gfGNhbGxiYWNrc3wgbXVzdCBiZSBj
YWxsZWQgd2l0aCBhIHZhbGlkIG1ldGFkYXRhIHdoZW4gdGhlIHJldHJpZXZhbCBpcyBjb21wbGV0
ZWQgc3VjY2Vzc2Z1bGx5LiAgQ2FsbGJhY2tzOjpvbkVycm9yKCkgbXVzdCBiZSBjYWxsZWQgb3Ro
ZXJ3aXNlLgorICAgIHZpcnR1YWwgdm9pZCBnZXRNZXRhZGF0YShjb25zdCBXZWJTdHJpbmcmIHBh
dGgsIENhbGxiYWNrcyogY2FsbGJhY2tzKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsg
fQorCisgICAgLy8gQ3JlYXRlcyBhIGZpbGUgYXQgZ2l2ZW4gfHBhdGh8LgorICAgIC8vIElmIHRo
ZSB8cGF0aHwgZG9lc24ndCBleGlzdCwgaXQgY3JlYXRlcyBhIG5ldyBmaWxlIGF0IHxwYXRofC4K
KyAgICAvLyBJZiB8ZXhjbHVzaXZlfCBpcyB0cnVlLCBpdCBmYWlscyBpZiB0aGUgfHBhdGh8IGFs
cmVhZHkgZXhpc3RzLgorICAgIC8vIElmIHxleGNsdXNpdmV8IGlzIGZhbHNlLCBpdCBzdWNjZWVk
cyBpZiB0aGUgfHBhdGh8IGFscmVhZHkgZXhpc3RzIG9yIGl0IGhhcyBzdWNjZXNzZnVsbHkgY3Jl
YXRlZCBhIG5ldyBmaWxlIGF0IHxwYXRofC4KKyAgICAvLworICAgIC8vIENhbGxiYWNrczo6b25T
dWNjZXNzKCkgb24gfGNhbGxiYWNrc3wgbXVzdCBiZSBjYWxsZWQgd2hlbiB0aGUgb3BlcmF0aW9u
IGlzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuIENhbGxiYWNrczo6b25FcnJvcigpIG11c3QgYmUg
Y2FsbGVkIG90aGVyd2lzZS4KKyAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlRmlsZShjb25zdCBXZWJT
dHJpbmcmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBDYWxsYmFja3MqIGNhbGxiYWNrcykgeyBXRUJL
SVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKworICAgIC8vIENyZWF0ZXMgYSBkaXJlY3Rvcnkg
YXQgZ2l2ZW4gfHBhdGh8LgorICAgIC8vIElmIHRoZSB8cGF0aHwgZG9lc24ndCBleGlzdCwgaXQg
Y3JlYXRlcyBhIG5ldyBkaXJlY3RvcnkgYXQgfHBhdGh8LgorICAgIC8vIElmIHxleGNsdXNpdmV8
IGlzIHRydWUsIGl0IGZhaWxzIGlmIHRoZSB8cGF0aHwgYWxyZWFkeSBleGlzdHMuCisgICAgLy8g
SWYgfGV4Y2x1c2l2ZXwgaXMgZmFsc2UsIGl0IHN1Y2NlZWRzIGlmIHRoZSB8cGF0aHwgYWxyZWFk
eSBleGlzdHMgb3IgaXQgaGFzIHN1Y2Nlc3NmdWxseSBjcmVhdGVkIGEgbmV3IGRpcmVjdG9yeSBh
dCB8cGF0aHwuCisgICAgLy8KKyAgICAvLyBDYWxsYmFja3M6Om9uU3VjY2VzcygpIG9uIHxjYWxs
YmFja3N8IG11c3QgYmUgY2FsbGVkIHdoZW4gdGhlIG9wZXJhdGlvbiBpcyBjb21wbGV0ZWQgc3Vj
Y2Vzc2Z1bGx5LiBDYWxsYmFja3M6Om9uRXJyb3IoKSBtdXN0IGJlIGNhbGxlZCBvdGhlcndpc2Uu
CisgICAgdmlydHVhbCB2b2lkIGNyZWF0ZURpcmVjdG9yeShjb25zdCBXZWJTdHJpbmcmIHBhdGgs
IGJvb2wgZXhjbHVzaXZlLCBDYWxsYmFja3MqIGNhbGxiYWNrcykgeyBXRUJLSVRfQVNTRVJUX05P
VF9SRUFDSEVEKCk7IH0KKworICAgIC8vIENoZWNrcyBpZiBhIGZpbGUgZXhpc3RzIGF0IGdpdmVu
IHxwYXRofC4KKyAgICAvLyBDYWxsYmFja3M6Om9uU3VjY2VzcygpIG9uIHxjYWxsYmFja3N8IG11
c3QgYmUgY2FsbGVkIHdoZW4gdGhlIG9wZXJhdGlvbiBpcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5
LiBDYWxsYmFja3M6Om9uRXJyb3IoKSBtdXN0IGJlIGNhbGxlZCBvdGhlcndpc2UuCisgICAgdmly
dHVhbCB2b2lkIGZpbGVFeGlzdHMoY29uc3QgV2ViU3RyaW5nJiBwYXRoLCBDYWxsYmFja3MqIGNh
bGxiYWNrcykgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKworICAgIC8vIENoZWNr
cyBpZiBhIGRpcmVjdG9yeSBleGlzdHMgYXQgZ2l2ZW4gfHBhdGh8LgorICAgIC8vIENhbGxiYWNr
czo6b25TdWNjZXNzKCkgb24gfGNhbGxiYWNrc3wgbXVzdCBiZSBjYWxsZWQgd2hlbiB0aGUgb3Bl
cmF0aW9uIGlzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuIENhbGxiYWNrczo6b25FcnJvcigpIG11
c3QgYmUgY2FsbGVkIG90aGVyd2lzZS4KKyAgICB2aXJ0dWFsIHZvaWQgZGlyZWN0b3J5RXhpc3Rz
KGNvbnN0IFdlYlN0cmluZyYgcGF0aCwgQ2FsbGJhY2tzKiBjYWxsYmFja3MpIHsgV0VCS0lUX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIH5XZWJBc3lu
Y0ZpbGVTeXN0ZW0oKSB7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYg
Ly8gV2ViQXN5bmNGaWxlU3lzdGVtX2gKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViRmlsZVN5c3RlbUNhbGxiYWNrLmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZp
bGVTeXN0ZW1DYWxsYmFjay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg5NTdiNGMzN2M4Y2U1Zjk4NzUzNjk5MGVh
OGZmY2IyNWE0MjU0YWYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYkZpbGVTeXN0ZW1DYWxsYmFjay5oCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmln
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
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmICAgV2ViRmls
ZVN5c3RlbUNhbGxiYWNrX2gKKyNkZWZpbmUgICBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tfaAorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViU3RyaW5nOworCisvLyBHZXRzIGNhbGxlZCBi
YWNrIHdoZW4gV2ViRnJhbWVDbGllbnQ6OnJlcXVlc3RGaWxlU3lzdGVtIHJlcXVlc3QgaXMgY29t
cGxldGVkLgorY2xhc3MgV2ViRmlsZVN5c3RlbUNhbGxiYWNrIHsKK3B1YmxpYzoKKyAgICAvLyBD
YWxsZWQgd2l0aCBhIG5hbWUgYW5kIHJvb3QgcGF0aCBmb3IgdGhlIEZpbGVTeXN0ZW0gd2hlbiB0
aGUgcmVxdWVzdCBpcyBhY2NlcHRlZC4KKyAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKGNvbnN0
IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiByb290UGF0aCkgPSAwOworCisgICAg
Ly8gQ2FsbGVkIHdoZW4gdGhlIHJlcXVlc3QgaXMgZGVuaWVkLgorICAgIHZpcnR1YWwgdm9pZCBv
bkVycm9yKCkgPSAwOworCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB+V2ViRmlsZVN5c3RlbUNh
bGxiYWNrKCkge30KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQuaCBiL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQuaAppbmRleCAyYjdlZTBkMzA3Y2FhZTJlMDgw
MjQzNjYxMDNkMWJiOWI3ZDc1MWRmLi4zNDYzYjVlNzhjN2YyNGEzNjAxYzE4MjBkZDc1MDA2ZjVk
NWI0OTA4IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lQ2xpZW50
LmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oCkBAIC00Miw2
ICs0Miw3IEBAIGNsYXNzIFdlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0OwogY2xhc3MgV2ViQXBwbGlj
YXRpb25DYWNoZUhvc3RDbGllbnQ7CiBjbGFzcyBXZWJDb29raWVKYXI7CiBjbGFzcyBXZWJEYXRh
U291cmNlOworY2xhc3MgV2ViRmlsZVN5c3RlbUNhbGxiYWNrOwogY2xhc3MgV2ViRm9ybUVsZW1l
bnQ7CiBjbGFzcyBXZWJGcmFtZTsKIGNsYXNzIFdlYk1lZGlhUGxheWVyOwpAQCAtMzI3LDYgKzMy
OCwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlcG9ydEZpbmRJblBhZ2VTZWxlY3Rp
b24oCiAgICAgICAgIGludCBpZGVudGlmaWVyLCBpbnQgYWN0aXZlTWF0Y2hPcmRpbmFsLCBjb25z
dCBXZWJSZWN0JiBzZWxlY3Rpb24pIHsgfQogCisgICAgLy8gSFRNTDUgRmlsZVN5c3RlbSAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICB2
aXJ0dWFsIHZvaWQgcmVxdWVzdEZpbGVTeXN0ZW0oCisgICAgICAgIFdlYkZyYW1lKiwgYm9vbCBw
ZXJzaXN0ZW50LCBsb25nIGxvbmcgc2l6ZSwgV2ViRmlsZVN5c3RlbUNhbGxiYWNrKikgeyB9CisK
IHByb3RlY3RlZDoKICAgICB+V2ViRnJhbWVDbGllbnQoKSB7IH0KIH07CmRpZmYgLS1naXQgYS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYktpdENsaWVudC5oIGIvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJLaXRDbGllbnQuaAppbmRleCA1OTU5YTFjODEzY2M0YjM5NmQxZWU5ZjAzY2NlMmRm
ODU1ZjFhOTY1Li5hZThlYmMzZWZhMzM3MzM5MGQyMTk2ZTg0NTIwZjlkMjNiNzAxYmViIDEwMDY0
NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYktpdENsaWVudC5oCisrKyBiL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViS2l0Q2xpZW50LmgKQEAgLTQ3LDYgKzQ3LDcgQEAgbmFtZXNw
YWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0OwogY2xhc3MgV2Vi
QXBwbGljYXRpb25DYWNoZUhvc3RDbGllbnQ7CitjbGFzcyBXZWJBc3luY0ZpbGVTeXN0ZW07CiBj
bGFzcyBXZWJDbGlwYm9hcmQ7CiBjbGFzcyBXZWJDb29raWVKYXI7CiBjbGFzcyBXZWJGaWxlU3lz
dGVtOwpAQCAtMjYyLDYgKzI2MywxMCBAQCBwdWJsaWM6CiAgICAgLy8gTWF5IHJldHVybiBudWxs
IGlmIGl0IGZhaWxzIHRvIGNyZWF0ZSB0aGUgY29udGV4dC4KICAgICB2aXJ0dWFsIFdlYkdMRVMy
Q29udGV4dCogY3JlYXRlR0xFUzJDb250ZXh0KCkgeyByZXR1cm4gMDsgfQogCisgICAgLy8gSFRN
TDUgRmlsZVN5c3RlbSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisKKyAgICB2aXJ0dWFsIFdlYkFzeW5jRmlsZVN5c3RlbSogYXN5bmNGaWxlU3lz
dGVtKCkgeyByZXR1cm4gMDsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgfldlYktpdENsaWVudCgpIHsg
fQogfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64291</attachid>
            <date>2010-08-12 20:09:50 -0700</date>
            <delta_ts>2010-08-17 18:34:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43151-20100812200949.patch</filename>
            <type>text/plain</type>
            <size>12688</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IGE0Yzg0NWNhNzJmZmM1ODgzODM2MDc2OTNkNGE5YjhhOTVjNTI2MzAu
Ljg1NmM4MTRmNGI0ODdhNjVmZTRjN2EyZWY4MDgwMTkxMzI4MDNhYjAgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDIyIEBACisyMDEwLTA4LTA3ICBLaW51a28gWWFzdWRhICA8a2ludWtvQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGQgV2ViS2l0IEFQSSBmb3IgSFRNTDUgRmlsZVN5c3RlbSBBUEkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQzMTUxCisKKyAgICAgICAgQWRkIGFz
eW5jaHJvbm91cyBGaWxlU3lzdGVtIGludGVyZmFjZSB0byBXZWJLaXQgQVBJIGZvcgorICAgICAg
ICBIVE1MNSBGaWxlU3lzdGVtIEFQSS4KKyAgICAgICAgaHR0cDovL2Rldi53My5vcmcvMjAwOS9k
YXAvZmlsZS1zeXN0ZW0vZmlsZS1kaXItc3lzLmh0bWwKKworICAgICAgICAqIFdlYktpdC5neXA6
CisgICAgICAgICogcHVibGljL1dlYkFzeW5jRmlsZVN5c3RlbS5oOiBBZGRlZC4KKyAgICAgICAg
KiBwdWJsaWMvV2ViRmlsZVN5c3RlbUNhbGxiYWNrLmg6IEFkZGVkLgorICAgICAgICAqIHB1Ymxp
Yy9XZWJLaXRDbGllbnQuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViS2l0Q2xpZW50Ojphc3luY0Zp
bGVTeXN0ZW0pOgorICAgICAgICAqIHB1YmxpYy9XZWJGcmFtZUNsaWVudC5oOgorICAgICAgICAo
V2ViS2l0OjpXZWJGcmFtZUNsaWVudDo6cmVxdWVzdEZpbGVTeXN0ZW0pOgorCiAyMDEwLTA4LTA3
ICBKYXkgQ2l2ZWxsaSAgPGpjaXZlbGxpQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBFcmljIFNlaWRlbC4KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lw
IGIvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKaW5kZXggMDZmZDgyY2JiOWJlOTAwMWNjNjdm
Yzg0NzA0YTA2YjYzMzk4ZDljMy4uZTI3M2VhODM4ZjJhZWUyNDJlMDQyNGYyMzA1YTk4YTRjYTJi
OTMzNyAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKKysrIGIvV2ViS2l0
L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTExNiw2ICsxMTYsNyBAQAogICAgICAgICAgICAgICAg
ICdwdWJsaWMvV2ViQW5pbWF0aW9uQ29udHJvbGxlci5oJywKICAgICAgICAgICAgICAgICAncHVi
bGljL1dlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMv
V2ViQXBwbGljYXRpb25DYWNoZUhvc3RDbGllbnQuaCcsCisgICAgICAgICAgICAgICAgJ3B1Ymxp
Yy9XZWJBc3luY0ZpbGVTeXN0ZW0uaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJBdHRy
aWJ1dGUuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJCaW5kaW5ncy5oJywKICAgICAg
ICAgICAgICAgICAncHVibGljL1dlYkNhY2hlLmgnLApAQCAtMTUyLDYgKzE1Myw3IEBACiAgICAg
ICAgICAgICAgICAgJ3B1YmxpYy9XZWJGaWxlQ2hvb3NlckNvbXBsZXRpb24uaCcsCiAgICAgICAg
ICAgICAgICAgJ3B1YmxpYy9XZWJGaWxlQ2hvb3NlclBhcmFtcy5oJywKICAgICAgICAgICAgICAg
ICAncHVibGljL1dlYkZpbGVJbmZvLmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRmls
ZVN5c3RlbUNhbGxiYWNrLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRmlsZVN5c3Rl
bS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkZpbmRPcHRpb25zLmgnLAogICAgICAg
ICAgICAgICAgICdwdWJsaWMvV2ViRmxvYXRQb2ludC5oJywKZGlmZiAtLWdpdCBhL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViQXN5bmNGaWxlU3lzdGVtLmggYi9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYkFzeW5jRmlsZVN5c3RlbS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM2YTYwMDUwZDliYzg3MWJjMDYy
Zjg1MWUzNTkyMTVkMjAzNjMxYjUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkFzeW5jRmlsZVN5c3RlbS5oCkBAIC0wLDAgKzEsMTIzIEBACisvKgorICogQ29w
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
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJB
c3luY0ZpbGVTeXN0ZW1faAorI2RlZmluZSBXZWJBc3luY0ZpbGVTeXN0ZW1faAorCisjaW5jbHVk
ZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCisjaW5jbHVkZSAiV2ViVmVj
dG9yLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdHJ1Y3QgV2ViRmlsZUluZm87CisKK2Ns
YXNzIFdlYkFzeW5jRmlsZVN5c3RlbSB7CitwdWJsaWM6CisgICAgZW51bSBFcnJvciB7CisgICAg
ICAgIEVycm9yU3VjY2VzcyA9IDAsCisgICAgICAgIEVycm9yTm9Nb2RpZmljYXRpb25BbGxvd2Vk
ID0gNywKKyAgICAgICAgRXJyb3JOb3RGb3VuZCA9IDgsCisgICAgICAgIEVycm9ySW52YWxpZFN0
YXRlID0gMTEsCisgICAgICAgIEVycm9ySW52YWxpZE1vZGlmaWNhdGlvbiA9IDEzLAorICAgICAg
ICBFcnJvclNlY3VyaXR5ID0gMTgsCisgICAgICAgIEVycm9yQWJvcnQgPSAyMCwKKyAgICAgICAg
RXJyb3JRdW90YUV4Y2VlZGVkID0gMjIsCisgICAgICAgIEVycm9yTm90UmVhZGFibGUgPSAyNCwK
KyAgICAgICAgRXJyb3JFbmNvZGluZyA9IDI2LAorICAgIH07CisKKyAgICBzdHJ1Y3QgRW50cnkg
eworICAgICAgICBXZWJTdHJpbmcgbmFtZTsKKyAgICAgICAgYm9vbCBpc0RpcmVjdG9yeTsKKyAg
ICB9OworCisgICAgY2xhc3MgQ2FsbGJhY2tzIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1
YWwgdm9pZCBvblN1Y2Nlc3MoKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3NN
ZXRhZGF0YShjb25zdCBXZWJGaWxlSW5mbyYgaW5mbykgPSAwOworICAgICAgICB2aXJ0dWFsIHZv
aWQgb25TdWNjZXNzRW50cmllcyhjb25zdCBXZWJWZWN0b3I8RW50cnk+JiBlbnRyaWVzKSA9IDA7
CisgICAgICAgIHZpcnR1YWwgdm9pZCBvbkVycm9yKGludCBlcnJvckNvZGUpID0gMDsKKworICAg
IHByb3RlY3RlZDoKKyAgICAgICAgdmlydHVhbCB+Q2FsbGJhY2tzKCkgeyB9CisgICAgfTsKKwor
ICAgIC8vIE1vdmVzIGEgZmlsZSBvciBkaXJlY3RvcnkgYXQgfHNyY1BhdGh8IHRvIHxkZXN0UGF0
aHwuCisgICAgLy8gQ2FsbGJhY2tzOjpvblN1Y2Nlc3MoKSBvbiB8Y2FsbGJhY2tzfCBtdXN0IGJl
IGNhbGxlZCB3aGVuIHRoZSBvcGVyYXRpb24gaXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseS4gIENh
bGxiYWNrczo6b25FcnJvcigpIG11c3QgYmUgY2FsbGVkIG90aGVyd2lzZS4KKyAgICB2aXJ0dWFs
IHZvaWQgbW92ZShjb25zdCBXZWJTdHJpbmcmIHNyY1BhdGgsIGNvbnN0IFdlYlN0cmluZyYgZGVz
dFBhdGgsIENhbGxiYWNrcyogY2FsbGJhY2tzKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsgfQorCisgICAgLy8gQ29waWVzIGEgZmlsZSBvciBkaXJlY3RvcnkgYXQgfHNyY1BhdGh8IHRv
IHxkZXN0UGF0aHwuCisgICAgLy8gQ2FsbGJhY2tzOjpvblN1Y2Nlc3MoKSBvbiB8Y2FsbGJhY2tz
fCBtdXN0IGJlIGNhbGxlZCB3aGVuIHRoZSBvcGVyYXRpb24gaXMgY29tcGxldGVkIHN1Y2Nlc3Nm
dWxseS4gIENhbGxiYWNrczo6b25FcnJvcigpIG11c3QgYmUgY2FsbGVkIG90aGVyd2lzZS4KKyAg
ICB2aXJ0dWFsIHZvaWQgY29weShjb25zdCBXZWJTdHJpbmcmIHNyY1BhdGgsIGNvbnN0IFdlYlN0
cmluZyYgZGVzdFBhdGgsIENhbGxiYWNrcyogY2FsbGJhY2tzKSB7IFdFQktJVF9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsgfQorCisgICAgLy8gRGVsZXRlcyBhIGZpbGUgb3IgZGlyZWN0b3J5IGF0IGEg
Z2l2ZW4gfHBhdGh8LgorICAgIC8vIENhbGxiYWNrczo6b25TdWNjZXNzKCkgb24gfGNhbGxiYWNr
c3wgbXVzdCBiZSBjYWxsZWQgd2hlbiB0aGUgb3BlcmF0aW9uIGlzIGNvbXBsZXRlZCBzdWNjZXNz
ZnVsbHkuICBDYWxsYmFja3M6Om9uRXJyb3IoKSBtdXN0IGJlIGNhbGxlZCBvdGhlcndpc2UuCisg
ICAgdmlydHVhbCB2b2lkIHJlbW92ZShjb25zdCBXZWJTdHJpbmcmIHBhdGgsIENhbGxiYWNrcyog
Y2FsbGJhY2tzKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorCisgICAgLy8gUmV0
cmlldmVzIHRoZSBtZXRhZGF0YSBpbmZvcm1hdGlvbiBvZiB0aGUgZmlsZSBvciBkaXJlY3Rvcnkg
YXQgdGhlIGdpdmVuIHxwYXRofC4KKyAgICAvLyBDYWxsYmFja3M6Om9uU3VjY2Vzc01ldGFkYXRh
KCkgb24gfGNhbGxiYWNrc3wgbXVzdCBiZSBjYWxsZWQgd2l0aCBhIHZhbGlkIG1ldGFkYXRhIHdo
ZW4gdGhlIHJldHJpZXZhbCBpcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LiAgQ2FsbGJhY2tzOjpv
bkVycm9yKCkgbXVzdCBiZSBjYWxsZWQgb3RoZXJ3aXNlLgorICAgIHZpcnR1YWwgdm9pZCBnZXRN
ZXRhZGF0YShjb25zdCBXZWJTdHJpbmcmIHBhdGgsIENhbGxiYWNrcyogY2FsbGJhY2tzKSB7IFdF
QktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorCisgICAgLy8gQ3JlYXRlcyBhIGZpbGUgYXQg
Z2l2ZW4gfHBhdGh8LgorICAgIC8vIElmIHRoZSB8cGF0aHwgZG9lc24ndCBleGlzdCwgaXQgY3Jl
YXRlcyBhIG5ldyBmaWxlIGF0IHxwYXRofC4KKyAgICAvLyBJZiB8ZXhjbHVzaXZlfCBpcyB0cnVl
LCBpdCBmYWlscyBpZiB0aGUgfHBhdGh8IGFscmVhZHkgZXhpc3RzLgorICAgIC8vIElmIHxleGNs
dXNpdmV8IGlzIGZhbHNlLCBpdCBzdWNjZWVkcyBpZiB0aGUgfHBhdGh8IGFscmVhZHkgZXhpc3Rz
IG9yIGl0IGhhcyBzdWNjZXNzZnVsbHkgY3JlYXRlZCBhIG5ldyBmaWxlIGF0IHxwYXRofC4KKyAg
ICAvLworICAgIC8vIENhbGxiYWNrczo6b25TdWNjZXNzKCkgb24gfGNhbGxiYWNrc3wgbXVzdCBi
ZSBjYWxsZWQgd2hlbiB0aGUgb3BlcmF0aW9uIGlzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuIENh
bGxiYWNrczo6b25FcnJvcigpIG11c3QgYmUgY2FsbGVkIG90aGVyd2lzZS4KKyAgICB2aXJ0dWFs
IHZvaWQgY3JlYXRlRmlsZShjb25zdCBXZWJTdHJpbmcmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBD
YWxsYmFja3MqIGNhbGxiYWNrcykgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKwor
ICAgIC8vIENyZWF0ZXMgYSBkaXJlY3RvcnkgYXQgYSBnaXZlbiB8cGF0aHwuCisgICAgLy8gSWYg
dGhlIHxwYXRofCBkb2Vzbid0IGV4aXN0LCBpdCBjcmVhdGVzIGEgbmV3IGRpcmVjdG9yeSBhdCB8
cGF0aHwuCisgICAgLy8gSWYgfGV4Y2x1c2l2ZXwgaXMgdHJ1ZSwgaXQgZmFpbHMgaWYgdGhlIHxw
YXRofCBhbHJlYWR5IGV4aXN0cy4KKyAgICAvLyBJZiB8ZXhjbHVzaXZlfCBpcyBmYWxzZSwgaXQg
c3VjY2VlZHMgaWYgdGhlIHxwYXRofCBhbHJlYWR5IGV4aXN0cyBvciBpdCBoYXMgc3VjY2Vzc2Z1
bGx5IGNyZWF0ZWQgYSBuZXcgZGlyZWN0b3J5IGF0IHxwYXRofC4KKyAgICAvLworICAgIC8vIENh
bGxiYWNrczo6b25TdWNjZXNzKCkgb24gfGNhbGxiYWNrc3wgbXVzdCBiZSBjYWxsZWQgd2hlbiB0
aGUgb3BlcmF0aW9uIGlzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuIENhbGxiYWNrczo6b25FcnJv
cigpIG11c3QgYmUgY2FsbGVkIG90aGVyd2lzZS4KKyAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlRGly
ZWN0b3J5KGNvbnN0IFdlYlN0cmluZyYgcGF0aCwgYm9vbCBleGNsdXNpdmUsIENhbGxiYWNrcyog
Y2FsbGJhY2tzKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorCisgICAgLy8gQ2hl
Y2tzIGlmIGEgZmlsZSBleGlzdHMgYXQgYSBnaXZlbiB8cGF0aHwuCisgICAgLy8gQ2FsbGJhY2tz
OjpvblN1Y2Nlc3MoKSBvbiB8Y2FsbGJhY2tzfCBtdXN0IGJlIGNhbGxlZCB3aGVuIHRoZSBvcGVy
YXRpb24gaXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseS4gQ2FsbGJhY2tzOjpvbkVycm9yKCkgbXVz
dCBiZSBjYWxsZWQgb3RoZXJ3aXNlLgorICAgIHZpcnR1YWwgdm9pZCBmaWxlRXhpc3RzKGNvbnN0
IFdlYlN0cmluZyYgcGF0aCwgQ2FsbGJhY2tzKiBjYWxsYmFja3MpIHsgV0VCS0lUX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOyB9CisKKyAgICAvLyBDaGVja3MgaWYgYSBkaXJlY3RvcnkgZXhpc3RzIGF0
IGEgZ2l2ZW4gfHBhdGh8LgorICAgIC8vIENhbGxiYWNrczo6b25TdWNjZXNzKCkgb24gfGNhbGxi
YWNrc3wgbXVzdCBiZSBjYWxsZWQgd2hlbiB0aGUgb3BlcmF0aW9uIGlzIGNvbXBsZXRlZCBzdWNj
ZXNzZnVsbHkuIENhbGxiYWNrczo6b25FcnJvcigpIG11c3QgYmUgY2FsbGVkIG90aGVyd2lzZS4K
KyAgICB2aXJ0dWFsIHZvaWQgZGlyZWN0b3J5RXhpc3RzKGNvbnN0IFdlYlN0cmluZyYgcGF0aCwg
Q2FsbGJhY2tzKiBjYWxsYmFja3MpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisK
KyAgICAvLyBSZWFkcyBkaXJlY3RvcnkgZW50cmllcyBvZiBhIGdpdmVuIGRpcmVjdG9yeSBhdCB8
cGF0aHwuCisgICAgLy8gQ2FsbGJhY2tzOjpvblN1Y2Nlc3NFbnRyaWVzKCkgb24gfGNhbGxiYWNr
c3wgbXVzdCBiZSBjYWxsZWQgd2hlbiB0aGUgb3BlcmF0aW9uIGlzIGNvbXBsZXRlZCBzdWNjZXNz
ZnVsbHkuIENhbGxiYWNrczo6b25FcnJvcigpIG11c3QgYmUgY2FsbGVkIG90aGVyd2lzZS4KKyAg
ICB2aXJ0dWFsIHZvaWQgcmVhZERpcmVjdG9yeShjb25zdCBXZWJTdHJpbmcmIHBhdGgsIENhbGxi
YWNrcyogY2FsbGJhY2tzKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorCitwcm90
ZWN0ZWQ6CisgICAgdmlydHVhbCB+V2ViQXN5bmNGaWxlU3lzdGVtKCkgeyB9Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYkFzeW5jRmlsZVN5c3RlbV9oCmRpZmYg
LS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZpbGVTeXN0ZW1DYWxsYmFjay5oIGIv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGaWxlU3lzdGVtQ2FsbGJhY2suaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44OTU3YjRjMzdjOGNlNWY5ODc1MzY5OTBlYThmZmNiMjVhNDI1NGFmCi0tLSAvZGV2L251bGwK
KysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGaWxlU3lzdGVtQ2FsbGJhY2suaApAQCAt
MCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBt
ZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiAgIFdlYkZpbGVTeXN0ZW1DYWxsYmFja19oCisjZGVmaW5lICAg
V2ViRmlsZVN5c3RlbUNhbGxiYWNrX2gKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdl
YlN0cmluZzsKKworLy8gR2V0cyBjYWxsZWQgYmFjayB3aGVuIFdlYkZyYW1lQ2xpZW50OjpyZXF1
ZXN0RmlsZVN5c3RlbSByZXF1ZXN0IGlzIGNvbXBsZXRlZC4KK2NsYXNzIFdlYkZpbGVTeXN0ZW1D
YWxsYmFjayB7CitwdWJsaWM6CisgICAgLy8gQ2FsbGVkIHdpdGggYSBuYW1lIGFuZCByb290IHBh
dGggZm9yIHRoZSBGaWxlU3lzdGVtIHdoZW4gdGhlIHJlcXVlc3QgaXMgYWNjZXB0ZWQuCisgICAg
dmlydHVhbCB2b2lkIG9uU3VjY2Vzcyhjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0
cmluZyYgcm9vdFBhdGgpID0gMDsKKworICAgIC8vIENhbGxlZCB3aGVuIHRoZSByZXF1ZXN0IGlz
IGRlbmllZC4KKyAgICB2aXJ0dWFsIHZvaWQgb25FcnJvcigpID0gMDsKKworcHJvdGVjdGVkOgor
ICAgIHZpcnR1YWwgfldlYkZpbGVTeXN0ZW1DYWxsYmFjaygpIHt9Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYkZyYW1lQ2xpZW50LmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lQ2xpZW50
LmgKaW5kZXggMmI3ZWUwZDMwN2NhYWUyZTA4MDI0MzY2MTAzZDFiYjliN2Q3NTFkZi4uMzQ2M2I1
ZTc4YzdmMjRhMzYwMWMxODIwZGQ3NTAwNmY1ZDViNDkwOCAxMDA2NDQKLS0tIGEvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViRnJhbWVDbGllbnQuaApAQCAtNDIsNiArNDIsNyBAQCBjbGFzcyBXZWJBcHBsaWNhdGlv
bkNhY2hlSG9zdDsKIGNsYXNzIFdlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0Q2xpZW50OwogY2xhc3Mg
V2ViQ29va2llSmFyOwogY2xhc3MgV2ViRGF0YVNvdXJjZTsKK2NsYXNzIFdlYkZpbGVTeXN0ZW1D
YWxsYmFjazsKIGNsYXNzIFdlYkZvcm1FbGVtZW50OwogY2xhc3MgV2ViRnJhbWU7CiBjbGFzcyBX
ZWJNZWRpYVBsYXllcjsKQEAgLTMyNyw2ICszMjgsMTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCByZXBvcnRGaW5kSW5QYWdlU2VsZWN0aW9uKAogICAgICAgICBpbnQgaWRlbnRpZmllciwg
aW50IGFjdGl2ZU1hdGNoT3JkaW5hbCwgY29uc3QgV2ViUmVjdCYgc2VsZWN0aW9uKSB7IH0KIAor
ICAgIC8vIEhUTUw1IEZpbGVTeXN0ZW0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RGaWxlU3lzdGVt
KAorICAgICAgICBXZWJGcmFtZSosIGJvb2wgcGVyc2lzdGVudCwgbG9uZyBsb25nIHNpemUsIFdl
YkZpbGVTeXN0ZW1DYWxsYmFjayopIHsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgfldlYkZyYW1lQ2xp
ZW50KCkgeyB9CiB9OwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJLaXRD
bGllbnQuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViS2l0Q2xpZW50LmgKaW5kZXggNTk1
OWExYzgxM2NjNGIzOTZkMWVlOWYwM2NjZTJkZjg1NWYxYTk2NS4uYWU4ZWJjM2VmYTMzNzMzOTBk
MjE5NmU4NDUyMGY5ZDIzYjcwMWJlYiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJLaXRDbGllbnQuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYktpdENsaWVu
dC5oCkBAIC00Nyw2ICs0Nyw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJBcHBs
aWNhdGlvbkNhY2hlSG9zdDsKIGNsYXNzIFdlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0Q2xpZW50Owor
Y2xhc3MgV2ViQXN5bmNGaWxlU3lzdGVtOwogY2xhc3MgV2ViQ2xpcGJvYXJkOwogY2xhc3MgV2Vi
Q29va2llSmFyOwogY2xhc3MgV2ViRmlsZVN5c3RlbTsKQEAgLTI2Miw2ICsyNjMsMTAgQEAgcHVi
bGljOgogICAgIC8vIE1heSByZXR1cm4gbnVsbCBpZiBpdCBmYWlscyB0byBjcmVhdGUgdGhlIGNv
bnRleHQuCiAgICAgdmlydHVhbCBXZWJHTEVTMkNvbnRleHQqIGNyZWF0ZUdMRVMyQ29udGV4dCgp
IHsgcmV0dXJuIDA7IH0KIAorICAgIC8vIEhUTUw1IEZpbGVTeXN0ZW0gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgdmlydHVhbCBXZWJB
c3luY0ZpbGVTeXN0ZW0qIGFzeW5jRmlsZVN5c3RlbSgpIHsgcmV0dXJuIDA7IH0KKwogcHJvdGVj
dGVkOgogICAgIH5XZWJLaXRDbGllbnQoKSB7IH0KIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64658</attachid>
            <date>2010-08-17 18:34:57 -0700</date>
            <delta_ts>2010-08-18 10:52:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43151-20100817183456.patch</filename>
            <type>text/plain</type>
            <size>17555</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IGM1YjJhNWQ0NjdhMzc4ZDc0YTA2YmQyMDIxYzBiMmY0YzljNzQxNzMu
LmMzNGRlOTI0ODAzMDM5NzM0YmIxNTY3ZTk5ZjhlNGYzZmJkOTFjMzYgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDI0IEBACisyMDEwLTA4LTE3ICBLaW51a28gWWFzdWRhICA8a2ludWtvQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGQgV2ViS2l0IEFQSSBmb3IgSFRNTDUgRmlsZVN5c3RlbSBBUEkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQzMTUxCisKKyAgICAgICAgQWRkIGFz
eW5jaHJvbm91cyBGaWxlU3lzdGVtIGludGVyZmFjZSB0byBXZWJLaXQgQVBJIGZvcgorICAgICAg
ICBIVE1MNSBGaWxlU3lzdGVtIEFQSS4KKyAgICAgICAgaHR0cDovL2Rldi53My5vcmcvMjAwOS9k
YXAvZmlsZS1zeXN0ZW0vZmlsZS1kaXItc3lzLmh0bWwKKworICAgICAgICAqIFdlYktpdC5neXA6
CisgICAgICAgICogcHVibGljL1dlYkZpbGVFcnJvci5oOiBBZGRlZC4KKyAgICAgICAgKiBwdWJs
aWMvV2ViRmlsZVN5c3RlbS5oOiBBZGRlZC4KKyAgICAgICAgKiBwdWJsaWMvV2ViRmlsZVN5c3Rl
bUVudHJ5Lmg6IEFkZGVkLgorICAgICAgICAqIHB1YmxpYy9XZWJGaWxlU3lzdGVtQ2FsbGJhY2tz
Lmg6IEFkZGVkLgorICAgICAgICAqIHB1YmxpYy9XZWJLaXRDbGllbnQuaDoKKyAgICAgICAgKFdl
YktpdDo6V2ViS2l0Q2xpZW50Ojphc3luY0ZpbGVTeXN0ZW0pOgorICAgICAgICAqIHB1YmxpYy9X
ZWJGcmFtZUNsaWVudC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUNsaWVudDo6cmVxdWVz
dEZpbGVTeXN0ZW0pOgorCiAyMDEwLTA4LTE3ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcu
Ym90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByNjU1MTYu
CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1dlYktpdC9jaHJvbWl1
bS9XZWJLaXQuZ3lwCmluZGV4IGMzMzhiNTkwNDk5MmZkODZjM2UwNDcwNmJlZWM2MGRkNTg2Njll
YWQuLmYzYWFmZmU1NDUxMTU0ODg2MGIxMmQ4OTQ0MDE3YjUwZjVkOTU2OWUgMTAwNjQ0Ci0tLSBh
L1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQu
Z3lwCkBAIC0xNTYsNyArMTU2LDEwIEBACiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJFdmVu
dExpc3RlbmVyLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRmlsZUNob29zZXJDb21w
bGV0aW9uLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRmlsZUNob29zZXJQYXJhbXMu
aCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJGaWxlRXJyb3IuaCcsCiAgICAgICAgICAg
ICAgICAgJ3B1YmxpYy9XZWJGaWxlSW5mby5oJywKKyAgICAgICAgICAgICAgICAncHVibGljL1dl
YkZpbGVTeXN0ZW1DYWxsYmFja3MuaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJGaWxl
U3lzdGVtRW50cnkuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJGaWxlU3lzdGVtLmgn
LAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRmlsZVV0aWxpdGllcy5oJywKICAgICAgICAg
ICAgICAgICAncHVibGljL1dlYkZpbmRPcHRpb25zLmgnLApkaWZmIC0tZ2l0IGEvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJGaWxlRXJyb3IuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
RmlsZUVycm9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDI5Njk4ZTE2Zjk3NjZhMTk4YjEyN2QwYTgyODA4YTA2
MTI1Zjg2YgotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRmls
ZUVycm9yLmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisg
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisjaWZuZGVmICAgV2ViRmlsZUVycm9yX2gKKyNkZWZpbmUg
ICBXZWJGaWxlRXJyb3JfaAorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViRmlsZUVy
cm9yIHsKK3B1YmxpYzoKKyAgICBXZWJGaWxlRXJyb3IoaW50IGVycm9yKSA6IG1fZXJyb3Ioc3Rh
dGljX2Nhc3Q8RXJyb3I+KGVycm9yKSkgeyB9CisKKyAgICBvcGVyYXRvciBpbnQoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4obV9lcnJvcik7CisgICAgfQor
CisgICAgLy8gRmlsZS1yZWxhdGVkIGVycm9yIGNvZGUgZGVmaW5lZCBpbiBIVE1MNSBGaWxlIEFQ
SS4KKyAgICBlbnVtIEVycm9yIHsKKyAgICAgICAgRXJyb3JOb25lID0gMCwKKyAgICAgICAgRXJy
b3JOb01vZGlmaWNhdGlvbkFsbG93ZWQgPSA3LAorICAgICAgICBFcnJvck5vdEZvdW5kID0gOCwK
KyAgICAgICAgRXJyb3JJbnZhbGlkU3RhdGUgPSAxMSwKKyAgICAgICAgRXJyb3JJbnZhbGlkTW9k
aWZpY2F0aW9uID0gMTMsCisgICAgICAgIEVycm9yU2VjdXJpdHkgPSAxOCwKKyAgICAgICAgRXJy
b3JBYm9ydCA9IDIwLAorICAgICAgICBFcnJvclF1b3RhRXhjZWVkZWQgPSAyMiwKKyAgICAgICAg
RXJyb3JOb3RSZWFkYWJsZSA9IDI0LAorICAgICAgICBFcnJvckVuY29kaW5nID0gMjYsCisgICAg
fTsKKworcHJpdmF0ZToKKyAgICBFcnJvciBtX2Vycm9yOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJG
aWxlU3lzdGVtLmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZpbGVTeXN0ZW0uaAppbmRl
eCBhOTExMDZlODE5ZjdmZTc0YjQwMGM2MDY5ZGI1Y2I3ZTVkNWRhMDg2Li5lNzA2NmI4YTEwMDVl
M2QwNWNmNzE0MWFlMWMwYmYxMGNiMDZkM2M5IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkZpbGVTeXN0ZW0uaAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZp
bGVTeXN0ZW0uaApAQCAtMzEsMTIgKzMxLDY1IEBACiAjaWZuZGVmIFdlYkZpbGVTeXN0ZW1faAog
I2RlZmluZSBXZWJGaWxlU3lzdGVtX2gKIAotI2luY2x1ZGUgIldlYkZpbGVVdGlsaXRpZXMuaCIK
KyNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJTdHJpbmcuaCIKIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKLS8vIEZJWE1FOiBDbGVhbiB1cCB0aGlzIGNsYXNzIG9uY2UgdGhlIHJl
bmFtaW5nIHRvIFdlYkZpbGVVdGlsaXRpZXMgaXMgZG9uZS4KLWNsYXNzIFdlYkZpbGVTeXN0ZW0g
OiBwdWJsaWMgV2ViRmlsZVV0aWxpdGllcyB7CitjbGFzcyBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tz
OworCitjbGFzcyBXZWJGaWxlU3lzdGVtIHsKKyAgICBlbnVtIFR5cGUgeworICAgICAgICBUeXBl
VGVtcG9yYXJ5ID0gMCwKKyAgICAgICAgVHlwZVBlcnNpc3RlbnQgPSAxLAorICAgIH07CisKKyAg
ICAvLyBNb3ZlcyBhIGZpbGUgb3IgZGlyZWN0b3J5IGF0IHxzcmNQYXRofCB0byB8ZGVzdFBhdGh8
LgorICAgIC8vIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3M6Om9uU3VjY2VzcygpIG9uIHxjYWxsYmFj
a3N8IG11c3QgYmUgY2FsbGVkIHdoZW4gdGhlIG9wZXJhdGlvbiBpcyBjb21wbGV0ZWQgc3VjY2Vz
c2Z1bGx5LiBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzOjpvbkVycm9yKCkgbXVzdCBiZSBjYWxsZWQg
b3RoZXJ3aXNlLgorICAgIHZpcnR1YWwgdm9pZCBtb3ZlKGNvbnN0IFdlYlN0cmluZyYgc3JjUGF0
aCwgY29uc3QgV2ViU3RyaW5nJiBkZXN0UGF0aCwgV2ViRmlsZVN5c3RlbUNhbGxiYWNrcyogY2Fs
bGJhY2tzKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorCisgICAgLy8gQ29waWVz
IGEgZmlsZSBvciBkaXJlY3RvcnkgYXQgfHNyY1BhdGh8IHRvIHxkZXN0UGF0aHwuCisgICAgLy8g
V2ViRmlsZVN5c3RlbUNhbGxiYWNrczo6b25TdWNjZXNzKCkgb24gfGNhbGxiYWNrc3wgbXVzdCBi
ZSBjYWxsZWQgd2hlbiB0aGUgb3BlcmF0aW9uIGlzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuIFdl
YkZpbGVTeXN0ZW1DYWxsYmFja3M6Om9uRXJyb3IoKSBtdXN0IGJlIGNhbGxlZCBvdGhlcndpc2Uu
CisgICAgdmlydHVhbCB2b2lkIGNvcHkoY29uc3QgV2ViU3RyaW5nJiBzcmNQYXRoLCBjb25zdCBX
ZWJTdHJpbmcmIGRlc3RQYXRoLCBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzKiBjYWxsYmFja3MpIHsg
V0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisKKyAgICAvLyBEZWxldGVzIGEgZmlsZSBv
ciBkaXJlY3RvcnkgYXQgYSBnaXZlbiB8cGF0aHwuCisgICAgLy8gV2ViRmlsZVN5c3RlbUNhbGxi
YWNrczo6b25TdWNjZXNzKCkgb24gfGNhbGxiYWNrc3wgbXVzdCBiZSBjYWxsZWQgd2hlbiB0aGUg
b3BlcmF0aW9uIGlzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuIFdlYkZpbGVTeXN0ZW1DYWxsYmFj
a3M6Om9uRXJyb3IoKSBtdXN0IGJlIGNhbGxlZCBvdGhlcndpc2UuCisgICAgdmlydHVhbCB2b2lk
IHJlbW92ZShjb25zdCBXZWJTdHJpbmcmIHBhdGgsIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3MqIGNh
bGxiYWNrcykgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKworICAgIC8vIFJldHJp
ZXZlcyB0aGUgbWV0YWRhdGEgaW5mb3JtYXRpb24gb2YgdGhlIGZpbGUgb3IgZGlyZWN0b3J5IGF0
IHRoZSBnaXZlbiB8cGF0aHwuCisgICAgLy8gV2ViRmlsZVN5c3RlbUNhbGxiYWNrczo6b25TdWNj
ZXNzTWV0YWRhdGEoKSBvbiB8Y2FsbGJhY2tzfCBtdXN0IGJlIGNhbGxlZCB3aXRoIGEgdmFsaWQg
bWV0YWRhdGEgd2hlbiB0aGUgcmV0cmlldmFsIGlzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuIFdl
YkZpbGVTeXN0ZW1DYWxsYmFja3M6Om9uRXJyb3IoKSBtdXN0IGJlIGNhbGxlZCBvdGhlcndpc2Uu
CisgICAgdmlydHVhbCB2b2lkIGdldE1ldGFkYXRhKGNvbnN0IFdlYlN0cmluZyYgcGF0aCwgV2Vi
RmlsZVN5c3RlbUNhbGxiYWNrcyogY2FsbGJhY2tzKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsgfQorCisgICAgLy8gQ3JlYXRlcyBhIGZpbGUgYXQgZ2l2ZW4gfHBhdGh8LgorICAgIC8v
IElmIHRoZSB8cGF0aHwgZG9lc24ndCBleGlzdCwgaXQgY3JlYXRlcyBhIG5ldyBmaWxlIGF0IHxw
YXRofC4KKyAgICAvLyBJZiB8ZXhjbHVzaXZlfCBpcyB0cnVlLCBpdCBmYWlscyBpZiB0aGUgfHBh
dGh8IGFscmVhZHkgZXhpc3RzLgorICAgIC8vIElmIHxleGNsdXNpdmV8IGlzIGZhbHNlLCBpdCBz
dWNjZWVkcyBpZiB0aGUgfHBhdGh8IGFscmVhZHkgZXhpc3RzIG9yIGl0IGhhcyBzdWNjZXNzZnVs
bHkgY3JlYXRlZCBhIG5ldyBmaWxlIGF0IHxwYXRofC4KKyAgICAvLworICAgIC8vIFdlYkZpbGVT
eXN0ZW1DYWxsYmFja3M6Om9uU3VjY2VzcygpIG9uIHxjYWxsYmFja3N8IG11c3QgYmUgY2FsbGVk
IHdoZW4gdGhlIG9wZXJhdGlvbiBpcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LiBXZWJGaWxlU3lz
dGVtQ2FsbGJhY2tzOjpvbkVycm9yKCkgbXVzdCBiZSBjYWxsZWQgb3RoZXJ3aXNlLgorICAgIHZp
cnR1YWwgdm9pZCBjcmVhdGVGaWxlKGNvbnN0IFdlYlN0cmluZyYgcGF0aCwgYm9vbCBleGNsdXNp
dmUsIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3MqIGNhbGxiYWNrcykgeyBXRUJLSVRfQVNTRVJUX05P
VF9SRUFDSEVEKCk7IH0KKworICAgIC8vIENyZWF0ZXMgYSBkaXJlY3RvcnkgYXQgYSBnaXZlbiB8
cGF0aHwuCisgICAgLy8gSWYgdGhlIHxwYXRofCBkb2Vzbid0IGV4aXN0LCBpdCBjcmVhdGVzIGEg
bmV3IGRpcmVjdG9yeSBhdCB8cGF0aHwuCisgICAgLy8gSWYgfGV4Y2x1c2l2ZXwgaXMgdHJ1ZSwg
aXQgZmFpbHMgaWYgdGhlIHxwYXRofCBhbHJlYWR5IGV4aXN0cy4KKyAgICAvLyBJZiB8ZXhjbHVz
aXZlfCBpcyBmYWxzZSwgaXQgc3VjY2VlZHMgaWYgdGhlIHxwYXRofCBhbHJlYWR5IGV4aXN0cyBv
ciBpdCBoYXMgc3VjY2Vzc2Z1bGx5IGNyZWF0ZWQgYSBuZXcgZGlyZWN0b3J5IGF0IHxwYXRofC4K
KyAgICAvLworICAgIC8vIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3M6Om9uU3VjY2VzcygpIG9uIHxj
YWxsYmFja3N8IG11c3QgYmUgY2FsbGVkIHdoZW4gdGhlIG9wZXJhdGlvbiBpcyBjb21wbGV0ZWQg
c3VjY2Vzc2Z1bGx5LiBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzOjpvbkVycm9yKCkgbXVzdCBiZSBj
YWxsZWQgb3RoZXJ3aXNlLgorICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVEaXJlY3RvcnkoY29uc3Qg
V2ViU3RyaW5nJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgV2ViRmlsZVN5c3RlbUNhbGxiYWNrcyog
Y2FsbGJhY2tzKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorCisgICAgLy8gQ2hl
Y2tzIGlmIGEgZmlsZSBleGlzdHMgYXQgYSBnaXZlbiB8cGF0aHwuCisgICAgLy8gV2ViRmlsZVN5
c3RlbUNhbGxiYWNrczo6b25TdWNjZXNzKCkgb24gfGNhbGxiYWNrc3wgbXVzdCBiZSBjYWxsZWQg
d2hlbiB0aGUgb3BlcmF0aW9uIGlzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuIFdlYkZpbGVTeXN0
ZW1DYWxsYmFja3M6Om9uRXJyb3IoKSBtdXN0IGJlIGNhbGxlZCBvdGhlcndpc2UuCisgICAgdmly
dHVhbCB2b2lkIGZpbGVFeGlzdHMoY29uc3QgV2ViU3RyaW5nJiBwYXRoLCBXZWJGaWxlU3lzdGVt
Q2FsbGJhY2tzKiBjYWxsYmFja3MpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisK
KyAgICAvLyBDaGVja3MgaWYgYSBkaXJlY3RvcnkgZXhpc3RzIGF0IGEgZ2l2ZW4gfHBhdGh8Lgor
ICAgIC8vIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3M6Om9uU3VjY2VzcygpIG9uIHxjYWxsYmFja3N8
IG11c3QgYmUgY2FsbGVkIHdoZW4gdGhlIG9wZXJhdGlvbiBpcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1
bGx5LiBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzOjpvbkVycm9yKCkgbXVzdCBiZSBjYWxsZWQgb3Ro
ZXJ3aXNlLgorICAgIHZpcnR1YWwgdm9pZCBkaXJlY3RvcnlFeGlzdHMoY29uc3QgV2ViU3RyaW5n
JiBwYXRoLCBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzKiBjYWxsYmFja3MpIHsgV0VCS0lUX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOyB9CisKKyAgICAvLyBSZWFkcyBkaXJlY3RvcnkgZW50cmllcyBvZiBh
IGdpdmVuIGRpcmVjdG9yeSBhdCB8cGF0aHwuCisgICAgLy8gV2ViRmlsZVN5c3RlbUNhbGxiYWNr
czo6b25TdWNjZXNzRW50cmllcygpIG9uIHxjYWxsYmFja3N8IG11c3QgYmUgY2FsbGVkIHdoZW4g
dGhlIG9wZXJhdGlvbiBpcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LiBXZWJGaWxlU3lzdGVtQ2Fs
bGJhY2tzOjpvbkVycm9yKCkgbXVzdCBiZSBjYWxsZWQgb3RoZXJ3aXNlLgorICAgIHZpcnR1YWwg
dm9pZCByZWFkRGlyZWN0b3J5KGNvbnN0IFdlYlN0cmluZyYgcGF0aCwgV2ViRmlsZVN5c3RlbUNh
bGxiYWNrcyogY2FsbGJhY2tzKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorCitw
cm90ZWN0ZWQ6CisgICAgdmlydHVhbCB+V2ViRmlsZVN5c3RlbSgpIHsgfQogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZp
bGVTeXN0ZW1DYWxsYmFja3MuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRmlsZVN5c3Rl
bUNhbGxiYWNrcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQxMDM0ODI3ZGE0MDlhNTAxYTNhMzYxMzc0ZWU4OTdm
Y2I4NDk2MDkKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZp
bGVTeXN0ZW1DYWxsYmFja3MuaApAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiAgIFdlYkZpbGVTeXN0
ZW1DYWxsYmFja3NfaAorI2RlZmluZSAgIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3NfaAorCisjaW5j
bHVkZSAiV2ViRmlsZUVycm9yLmgiCisjaW5jbHVkZSAiV2ViRmlsZVN5c3RlbUVudHJ5LmgiCisj
aW5jbHVkZSAiV2ViVmVjdG9yLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJT
dHJpbmc7CitzdHJ1Y3QgV2ViRmlsZUluZm87CisKK2NsYXNzIFdlYkZpbGVTeXN0ZW1DYWxsYmFj
a3MgeworcHVibGljOgorICAgIC8vIENhbGxiYWNrIGZvciBXZWJGaWxlU3lzdGVtJ3MgdmFyaW91
cyBvcGVyYXRpb25zIHRoYXQgZG9uJ3QgcmVxdWlyZQorICAgIC8vIHJldHVybiB2YWx1ZXMuCisg
ICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcygpID0gMDsKKworICAgIC8vIENhbGxiYWNrIGZvciBX
ZWJGaWxlU3lzdGVtOjpnZXRNZXRhZGF0YS4gQ2FsbGVkIHdpdGggdGhlIGZpbGUgbWV0YWRhdGEK
KyAgICAvLyBmb3IgdGhlIHJlcXVlc3RlZCBwYXRoLgorICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nl
c3NNZXRhZGF0YShjb25zdCBXZWJGaWxlSW5mbyYgaW5mbykgPSAwOworCisgICAgLy8gQ2FsbGJh
Y2sgZm9yIFdlYkZpbGVTeXN0ZW06OnJlYWREaXJlY3RvcnkuICBDYWxsZWQgd2l0aCBhIHZlY3Rv
ciBvZgorICAgIC8vIGZpbGUgZW50cmllcyBpbiB0aGUgcmVxdWVzdGVkIGRpcmVjdG9yeS4gVGhp
cyBjYWxsYmFjayBtaWdodCBiZSBjYWxsZWQKKyAgICAvLyBtdWx0aXBsZSB0aW1lcyBpZiB0aGUg
ZGlyZWN0b3J5IGhhcyBtYW55IGVudHJpZXMuCisgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzc0Vu
dHJpZXMoY29uc3QgV2ViVmVjdG9yPFdlYkZpbGVTeXN0ZW1FbnRyeT4mIGVudHJpZXMpID0gMDsK
KworICAgIC8vIENhbGxiYWNrIGZvciBXZWJGcmFtZUNsaWVudDo6cmVxdWVzdEZpbGVTeXN0ZW0u
IENhbGxlZCB3aXRoIGEgbmFtZSBhbmQKKyAgICAvLyByb290IHBhdGggZm9yIGEgcmVxdWVzdGVk
IEZpbGVTeXN0ZW0gd2hlbiB0aGUgcmVxdWVzdCBpcyBhY2NlcHRlZC4KKyAgICB2aXJ0dWFsIHZv
aWQgb25TdWNjZXNzRmlsZVN5c3RlbShjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0
cmluZyYgcm9vdFBhdGgpID0gMDsKKworICAgIC8vIENhbGxlZCB3aXRoIGFuIGVycm9yIGNvZGUg
d2hlbiBhIHJlcXVlc3RlZCBvcGVyYXRpb24gaGFzbid0IGJlZW4KKyAgICAvLyBjb21wbGV0ZWQu
CisgICAgdmlydHVhbCB2b2lkIG9uRXJyb3IoV2ViRmlsZUVycm9yIGVycm9yKSA9IDA7CisKK3By
b3RlY3RlZDoKKyAgICB2aXJ0dWFsIH5XZWJGaWxlU3lzdGVtQ2FsbGJhY2tzKCkge30KK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViRmlsZVN5c3RlbUVudHJ5LmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYkZpbGVTeXN0ZW1FbnRyeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAwYTVlMzhjOTkyNWM5ZTM1ZTk1MTkx
Y2EzYzE5Yjk2Zjg1YTFiMmIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYkZpbGVTeXN0ZW1FbnRyeS5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmln
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
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkZpbGVT
eXN0ZW1FbnRyeV9oCisjZGVmaW5lIFdlYkZpbGVTeXN0ZW1FbnRyeV9oCisKKyNpbmNsdWRlICJX
ZWJTdHJpbmcuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0cnVjdCBXZWJGaWxlU3lzdGVt
RW50cnkgeworICAgIFdlYkZpbGVTeXN0ZW1FbnRyeSgpIDogaXNEaXJlY3RvcnkoZmFsc2UpIHsg
fQorCisgICAgLy8gVGhlIG5hbWUgb2YgdGhlIGVudHJ5LgorICAgIFdlYlN0cmluZyBuYW1lOwor
CisgICAgLy8gVGhpcyBmbGFnIGluZGljYXRlcyBpZiB0aGUgZW50cnkgaXMgZGlyZWN0b3J5IG9y
IG5vdC4KKyAgICBib29sIGlzRGlyZWN0b3J5OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CisKKyNlbmRpZiAvLyBXZWJGaWxlU3lzdGVtRW50cnlfaApkaWZmIC0tZ2l0IGEvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJGcmFtZUNsaWVudC5oCmluZGV4IDJiN2VlMGQzMDdjYWFlMmUwODAyNDM2NjEwM2QxYmI5Yjdk
NzUxZGYuLjZiMjdkYWJlZTM2YWVmZjY5MWJkOTVhMTI0YWQ4OGRmZjgzMDczM2IgMTAwNjQ0Ci0t
LSBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQuaAorKysgYi9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYkZyYW1lQ2xpZW50LmgKQEAgLTQyLDYgKzQyLDcgQEAgY2xhc3Mg
V2ViQXBwbGljYXRpb25DYWNoZUhvc3Q7CiBjbGFzcyBXZWJBcHBsaWNhdGlvbkNhY2hlSG9zdENs
aWVudDsKIGNsYXNzIFdlYkNvb2tpZUphcjsKIGNsYXNzIFdlYkRhdGFTb3VyY2U7CitjbGFzcyBX
ZWJGaWxlU3lzdGVtQ2FsbGJhY2tzOwogY2xhc3MgV2ViRm9ybUVsZW1lbnQ7CiBjbGFzcyBXZWJG
cmFtZTsKIGNsYXNzIFdlYk1lZGlhUGxheWVyOwpAQCAtMzI3LDYgKzMyOCwxNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHJlcG9ydEZpbmRJblBhZ2VTZWxlY3Rpb24oCiAgICAgICAgIGlu
dCBpZGVudGlmaWVyLCBpbnQgYWN0aXZlTWF0Y2hPcmRpbmFsLCBjb25zdCBXZWJSZWN0JiBzZWxl
Y3Rpb24pIHsgfQogCisgICAgLy8gSFRNTDUgRmlsZVN5c3RlbSAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvLyBSZXF1ZXN0cyBhIEhU
TUw1IEZpbGVTeXN0ZW0uCisgICAgLy8gV2ViRmlsZVN5c3RlbUNhbGxiYWNrczo6b25TdWNjZXNz
RmlsZVN5c3RlbSgpIG11c3QgYmUgY2FsbGVkIHdpdGgKKyAgICAvLyBhIG5hbWUgYW5kIHJvb3Qg
cGF0aCBmb3IgdGhlIHJlcXVlc3RlZCBGaWxlU3lzdGVtIHdoZW4gdGhlIG9wZXJhdGlvbgorICAg
IC8vIGlzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3M6Om9u
RXJyb3IoKSBtdXN0IGJlCisgICAgLy8gY2FsbGVkIG90aGVyd2lzZS4KKyAgICB2aXJ0dWFsIHZv
aWQgcmVxdWVzdEZpbGVTeXN0ZW0oCisgICAgICAgIFdlYkZyYW1lKiwgV2ViRmlsZVN5c3RlbTo6
VHlwZSwgbG9uZyBsb25nIHNpemUsCisgICAgICAgIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3MqKSB7
IH0KKwogcHJvdGVjdGVkOgogICAgIH5XZWJGcmFtZUNsaWVudCgpIHsgfQogfTsKZGlmZiAtLWdp
dCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViS2l0Q2xpZW50LmggYi9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYktpdENsaWVudC5oCmluZGV4IDQxMDQxNzUwNzUxMzcyY2YyZjllYWYwOTRj
ZGFiYThlMDUyYmZhYWQuLjc0ZGE5ZTI1YjdiOGEyZmZlOGRkYTlkN2IwYzFiODRkZTRmNTRhMzIg
MTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViS2l0Q2xpZW50LmgKKysrIGIv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJLaXRDbGllbnQuaApAQCAtMzMsNyArMzMsNiBAQAog
CiAjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCiAjaW5jbHVkZSAiV2ViRGF0YS5oIgotI2luY2x1ZGUg
IldlYkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJXZWJMb2NhbGl6ZWRTdHJpbmcuaCIKICNpbmNs
dWRlICJXZWJTdHJpbmcuaCIKICNpbmNsdWRlICJXZWJVUkwuaCIKQEAgLTUwLDYgKzQ5LDcgQEAg
Y2xhc3MgV2ViQXBwbGljYXRpb25DYWNoZUhvc3Q7CiBjbGFzcyBXZWJBcHBsaWNhdGlvbkNhY2hl
SG9zdENsaWVudDsKIGNsYXNzIFdlYkNsaXBib2FyZDsKIGNsYXNzIFdlYkNvb2tpZUphcjsKK2Ns
YXNzIFdlYkZpbGVTeXN0ZW07CiBjbGFzcyBXZWJGaWxlVXRpbGl0aWVzOwogY2xhc3MgV2ViR0xF
UzJDb250ZXh0OwogY2xhc3MgV2ViR3JhcGhpY3NDb250ZXh0M0Q7CkBAIC03MywxMiArNzMsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBXZWJNaW1lUmVnaXN0cnkqIG1pbWVSZWdpc3RyeSgpIHsg
cmV0dXJuIDA7IH0KIAogICAgIC8vIE11c3QgcmV0dXJuIG5vbi1udWxsLgotICAgIC8vIEZJWE1F
OiBDbGVhbiB1cCB0aGlzIG9uZSBvbmNlIHRoZSByZW5hbWluZyB0byBXZWJGaWxlVXRpbGl0aWVz
IGlzIGRvbmUuCi0gICAgdmlydHVhbCBXZWJGaWxlU3lzdGVtKiBmaWxlU3lzdGVtKCkgeyByZXR1
cm4gMDsgfQotCi0gICAgLy8gTXVzdCByZXR1cm4gbm9uLW51bGwuCi0gICAgLy8gRklYTUU6IENs
ZWFuIHVwIHRoaXMgb25lIG9uY2UgdGhlIHJlbmFtaW5nIGZyb20gV2ViRmlsZVN5c3RlbSBpcyBk
b25lLgotICAgIHZpcnR1YWwgV2ViRmlsZVV0aWxpdGllcyogZmlsZVV0aWxpdGllcygpIHsgcmV0
dXJuIGZpbGVTeXN0ZW0oKTsgfQorICAgIHZpcnR1YWwgV2ViRmlsZVV0aWxpdGllcyogZmlsZVV0
aWxpdGllcygpIHsgcmV0dXJuIDA7IH0KIAogICAgIC8vIE1heSByZXR1cm4gbnVsbCBpZiBzYW5k
Ym94IHN1cHBvcnQgaXMgbm90IG5lY2Vzc2FyeQogICAgIHZpcnR1YWwgV2ViU2FuZGJveFN1cHBv
cnQqIHNhbmRib3hTdXBwb3J0KCkgeyByZXR1cm4gMDsgfQpAQCAtMjY4LDYgKzI2MywxMSBAQCBw
dWJsaWM6CiAgICAgLy8gTWF5IHJldHVybiBudWxsIGlmIGl0IGZhaWxzIHRvIGNyZWF0ZSB0aGUg
Y29udGV4dC4KICAgICB2aXJ0dWFsIFdlYkdMRVMyQ29udGV4dCogY3JlYXRlR0xFUzJDb250ZXh0
KCkgeyByZXR1cm4gMDsgfQogCisgICAgLy8gSFRNTDUgRmlsZVN5c3RlbSAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvLyBNdXN0IHJl
dHVybiBub24tbnVsbC4KKyAgICB2aXJ0dWFsIFdlYkZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0oKSB7
IHJldHVybiAwOyB9CisKIHByb3RlY3RlZDoKICAgICB+V2ViS2l0Q2xpZW50KCkgeyB9CiB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64735</attachid>
            <date>2010-08-18 10:52:20 -0700</date>
            <delta_ts>2010-08-18 11:15:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43151-20100818105219.patch</filename>
            <type>text/plain</type>
            <size>17776</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IGM1YjJhNWQ0NjdhMzc4ZDc0YTA2YmQyMDIxYzBiMmY0YzljNzQxNzMu
LmVjYzk3MGQ3ODEyMGMwYTcxYjQwNGUwYTlmOWI1ZDMyNDRlMTU0M2QgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDI0IEBACisyMDEwLTA4LTE3ICBLaW51a28gWWFzdWRhICA8a2ludWtvQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGQgV2ViS2l0IEFQSSBmb3IgSFRNTDUgRmlsZVN5c3RlbSBBUEkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQzMTUxCisKKyAgICAgICAgQWRkIGFz
eW5jaHJvbm91cyBGaWxlU3lzdGVtIGludGVyZmFjZSB0byBXZWJLaXQgQVBJIGZvcgorICAgICAg
ICBIVE1MNSBGaWxlU3lzdGVtIEFQSS4KKyAgICAgICAgaHR0cDovL2Rldi53My5vcmcvMjAwOS9k
YXAvZmlsZS1zeXN0ZW0vZmlsZS1kaXItc3lzLmh0bWwKKworICAgICAgICAqIFdlYktpdC5neXA6
CisgICAgICAgICogcHVibGljL1dlYkZpbGVFbnRyeS5oOiBBZGRlZC4KKyAgICAgICAgKiBwdWJs
aWMvV2ViRmlsZUVycm9yLmg6IEFkZGVkLgorICAgICAgICAqIHB1YmxpYy9XZWJGaWxlU3lzdGVt
Lmg6IEFkZGVkLgorICAgICAgICAqIHB1YmxpYy9XZWJGaWxlU3lzdGVtQ2FsbGJhY2tzLmg6IEFk
ZGVkLgorICAgICAgICAqIHB1YmxpYy9XZWJLaXRDbGllbnQuaDoKKyAgICAgICAgKFdlYktpdDo6
V2ViS2l0Q2xpZW50Ojphc3luY0ZpbGVTeXN0ZW0pOgorICAgICAgICAqIHB1YmxpYy9XZWJGcmFt
ZUNsaWVudC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUNsaWVudDo6cmVxdWVzdEZpbGVT
eXN0ZW0pOgorCiAyMDEwLTA4LTE3ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdt
YWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByNjU1MTYuCmRpZmYg
LS1naXQgYS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1dlYktpdC9jaHJvbWl1bS9XZWJL
aXQuZ3lwCmluZGV4IGMzMzhiNTkwNDk5MmZkODZjM2UwNDcwNmJlZWM2MGRkNTg2NjllYWQuLmQy
OGM1MjlmMTg4NWEyNjliNzM5MTFiYWIyYmFjYTJmODYzNzBhMjQgMTAwNjQ0Ci0tLSBhL1dlYktp
dC9jaHJvbWl1bS9XZWJLaXQuZ3lwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBA
IC0xNTYsNyArMTU2LDEwIEBACiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJFdmVudExpc3Rl
bmVyLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRmlsZUNob29zZXJDb21wbGV0aW9u
LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRmlsZUNob29zZXJQYXJhbXMuaCcsCisg
ICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJGaWxlRW50cnkuaCcsCisgICAgICAgICAgICAgICAg
J3B1YmxpYy9XZWJGaWxlRXJyb3IuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJGaWxl
SW5mby5oJywKKyAgICAgICAgICAgICAgICAncHVibGljL1dlYkZpbGVTeXN0ZW1DYWxsYmFja3Mu
aCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJGaWxlU3lzdGVtLmgnLAogICAgICAgICAg
ICAgICAgICdwdWJsaWMvV2ViRmlsZVV0aWxpdGllcy5oJywKICAgICAgICAgICAgICAgICAncHVi
bGljL1dlYkZpbmRPcHRpb25zLmgnLApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJGaWxlRW50cnkuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRmlsZUVudHJ5LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMGQ2YjgyNWU5ZTgxYTM2ZmRhODNjZTM4Y2I5N2FjNzVjYjhiZjNkOAotLS0g
L2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRmlsZUVudHJ5LmgKQEAg
LTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICog
bWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgV2ViRmlsZUVudHJ5X2gKKyNkZWZpbmUgV2ViRmlsZUVudHJ5
X2gKKworI2luY2x1ZGUgIldlYlN0cmluZy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3Ry
dWN0IFdlYkZpbGVFbnRyeSB7CisgICAgV2ViRmlsZUVudHJ5KCkgOiBpc0RpcmVjdG9yeShmYWxz
ZSkgeyB9CisKKyAgICAvLyBUaGUgbmFtZSBvZiB0aGUgZW50cnkuCisgICAgV2ViU3RyaW5nIG5h
bWU7CisKKyAgICAvLyBUaGlzIGZsYWcgaW5kaWNhdGVzIGlmIHRoZSBlbnRyeSBpcyBkaXJlY3Rv
cnkgb3Igbm90LgorICAgIGJvb2wgaXNEaXJlY3Rvcnk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmIC8vIFdlYkZpbGVFbnRyeV9oCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYkZpbGVFcnJvci5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJG
aWxlRXJyb3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZmU4ODgyMGMzNDFhYjAyNGJiMGFhMDdmN2IwNzBiODc4
N2FmNWZkCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGaWxl
RXJyb3IuaApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKyNpZm5kZWYgICBXZWJGaWxlRXJyb3JfaAorI2RlZmluZSAg
IFdlYkZpbGVFcnJvcl9oCisKK25hbWVzcGFjZSBXZWJLaXQgeworCisvLyBGaWxlLXJlbGF0ZWQg
ZXJyb3IgY29kZSBkZWZpbmVkIGluIEhUTUw1IEZpbGUgQVBJLgorZW51bSBXZWJGaWxlRXJyb3Ig
eworICAgIFdlYkZpbGVFcnJvck5vTW9kaWZpY2F0aW9uQWxsb3dlZCA9IDcsCisgICAgV2ViRmls
ZUVycm9yTm90Rm91bmQgPSA4LAorICAgIFdlYkZpbGVFcnJvckludmFsaWRTdGF0ZSA9IDExLAor
ICAgIFdlYkZpbGVFcnJvckludmFsaWRNb2RpZmljYXRpb24gPSAxMywKKyAgICBXZWJGaWxlRXJy
b3JTZWN1cml0eSA9IDE4LAorICAgIFdlYkZpbGVFcnJvckFib3J0ID0gMjAsCisgICAgV2ViRmls
ZUVycm9yUXVvdGFFeGNlZWRlZCA9IDIyLAorICAgIFdlYkZpbGVFcnJvck5vdFJlYWRhYmxlID0g
MjQsCisgICAgV2ViRmlsZUVycm9yRW5jb2RpbmcgPSAyNiwKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
RmlsZVN5c3RlbS5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGaWxlU3lzdGVtLmgKaW5k
ZXggYTkxMTA2ZTgxOWY3ZmU3NGI0MDBjNjA2OWRiNWNiN2U1ZDVkYTA4Ni4uZjAzZjI3ZjRiY2Qx
NmI2OTg0NTExNDczMTk5YjhiNDZiNzJiNDZlYSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJGaWxlU3lzdGVtLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJG
aWxlU3lzdGVtLmgKQEAgLTMxLDEyICszMSw4NyBAQAogI2lmbmRlZiBXZWJGaWxlU3lzdGVtX2gK
ICNkZWZpbmUgV2ViRmlsZVN5c3RlbV9oCiAKLSNpbmNsdWRlICJXZWJGaWxlVXRpbGl0aWVzLmgi
CisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCi0vLyBGSVhNRTogQ2xlYW4gdXAgdGhpcyBjbGFzcyBvbmNlIHRoZSBy
ZW5hbWluZyB0byBXZWJGaWxlVXRpbGl0aWVzIGlzIGRvbmUuCi1jbGFzcyBXZWJGaWxlU3lzdGVt
IDogcHVibGljIFdlYkZpbGVVdGlsaXRpZXMgeworY2xhc3MgV2ViRmlsZVN5c3RlbUNhbGxiYWNr
czsKKworY2xhc3MgV2ViRmlsZVN5c3RlbSB7CitwdWJsaWM6CisgICAgZW51bSBUeXBlIHsKKyAg
ICAgICAgVHlwZVRlbXBvcmFyeSwKKyAgICAgICAgVHlwZVBlcnNpc3RlbnQsCisgICAgfTsKKwor
ICAgIC8vIE1vdmVzIGEgZmlsZSBvciBkaXJlY3RvcnkgYXQgfHNyY1BhdGh8IHRvIHxkZXN0UGF0
aHwuCisgICAgLy8gV2ViRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkU3VjY2VlZCgpIG9uIHxjYWxs
YmFja3N8IG11c3QgYmUgY2FsbGVkCisgICAgLy8gd2hlbiB0aGUgb3BlcmF0aW9uIGlzIGNvbXBs
ZXRlZCBzdWNjZXNzZnVsbHkuCisgICAgLy8gV2ViRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkRmFp
bCgpIG11c3QgYmUgY2FsbGVkIG90aGVyd2lzZS4KKyAgICB2aXJ0dWFsIHZvaWQgbW92ZShjb25z
dCBXZWJTdHJpbmcmIHNyY1BhdGgsIGNvbnN0IFdlYlN0cmluZyYgZGVzdFBhdGgsIFdlYkZpbGVT
eXN0ZW1DYWxsYmFja3MqIGNhbGxiYWNrcykgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7
IH0KKworICAgIC8vIENvcGllcyBhIGZpbGUgb3IgZGlyZWN0b3J5IGF0IHxzcmNQYXRofCB0byB8
ZGVzdFBhdGh8LgorICAgIC8vIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZFN1Y2NlZWQoKSBv
biB8Y2FsbGJhY2tzfCBtdXN0IGJlIGNhbGxlZAorICAgIC8vIHdoZW4gdGhlIG9wZXJhdGlvbiBp
cyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LgorICAgIC8vIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3M6
OmRpZEZhaWwoKSBtdXN0IGJlIGNhbGxlZCBvdGhlcndpc2UuCisgICAgdmlydHVhbCB2b2lkIGNv
cHkoY29uc3QgV2ViU3RyaW5nJiBzcmNQYXRoLCBjb25zdCBXZWJTdHJpbmcmIGRlc3RQYXRoLCBX
ZWJGaWxlU3lzdGVtQ2FsbGJhY2tzKiBjYWxsYmFja3MpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOyB9CisKKyAgICAvLyBEZWxldGVzIGEgZmlsZSBvciBkaXJlY3RvcnkgYXQgYSBnaXZl
biB8cGF0aHwuCisgICAgLy8gV2ViRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkU3VjY2VlZCgpIG9u
IHxjYWxsYmFja3N8IG11c3QgYmUgY2FsbGVkCisgICAgLy8gd2hlbiB0aGUgb3BlcmF0aW9uIGlz
IGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuCisgICAgLy8gV2ViRmlsZVN5c3RlbUNhbGxiYWNrczo6
ZGlkRmFpbCgpIG11c3QgYmUgY2FsbGVkIG90aGVyd2lzZS4KKyAgICB2aXJ0dWFsIHZvaWQgcmVt
b3ZlKGNvbnN0IFdlYlN0cmluZyYgcGF0aCwgV2ViRmlsZVN5c3RlbUNhbGxiYWNrcyogY2FsbGJh
Y2tzKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorCisgICAgLy8gUmV0cmlldmVz
IHRoZSBtZXRhZGF0YSBpbmZvcm1hdGlvbiBvZiB0aGUgZmlsZSBvciBkaXJlY3RvcnkgYXQgdGhl
CisgICAgLy8gZ2l2ZW4gfHBhdGh8LgorICAgIC8vIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3M6OmRp
ZFJlYWRNZXRhZGF0YSgpIG9uIHxjYWxsYmFja3N8IG11c3QgYmUgY2FsbGVkCisgICAgLy8gd2l0
aCBhIHZhbGlkIG1ldGFkYXRhIHdoZW4gdGhlIHJldHJpZXZhbCBpcyBjb21wbGV0ZWQgc3VjY2Vz
c2Z1bGx5LgorICAgIC8vIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZEZhaWwoKSBtdXN0IGJl
IGNhbGxlZCBvdGhlcndpc2UuCisgICAgdmlydHVhbCB2b2lkIHJlYWRNZXRhZGF0YShjb25zdCBX
ZWJTdHJpbmcmIHBhdGgsIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3MqIGNhbGxiYWNrcykgeyBXRUJL
SVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKworICAgIC8vIENyZWF0ZXMgYSBmaWxlIGF0IGdp
dmVuIHxwYXRofC4KKyAgICAvLyBJZiB0aGUgfHBhdGh8IGRvZXNuJ3QgZXhpc3QsIGl0IGNyZWF0
ZXMgYSBuZXcgZmlsZSBhdCB8cGF0aHwuCisgICAgLy8gSWYgfGV4Y2x1c2l2ZXwgaXMgdHJ1ZSwg
aXQgZmFpbHMgaWYgdGhlIHxwYXRofCBhbHJlYWR5IGV4aXN0cy4KKyAgICAvLyBJZiB8ZXhjbHVz
aXZlfCBpcyBmYWxzZSwgaXQgc3VjY2VlZHMgaWYgdGhlIHxwYXRofCBhbHJlYWR5IGV4aXN0cyBv
cgorICAgIC8vIGl0IGhhcyBzdWNjZXNzZnVsbHkgY3JlYXRlZCBhIG5ldyBmaWxlIGF0IHxwYXRo
fC4KKyAgICAvLworICAgIC8vIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZFN1Y2NlZWQoKSBv
biB8Y2FsbGJhY2tzfCBtdXN0IGJlIGNhbGxlZCB3aGVuCisgICAgLy8gdGhlIG9wZXJhdGlvbiBp
cyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LgorICAgIC8vIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3M6
OmRpZEZhaWwoKSBtdXN0IGJlIGNhbGxlZCBvdGhlcndpc2UuCisgICAgdmlydHVhbCB2b2lkIGNy
ZWF0ZUZpbGUoY29uc3QgV2ViU3RyaW5nJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgV2ViRmlsZVN5
c3RlbUNhbGxiYWNrcyogY2FsbGJhY2tzKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsg
fQorCisgICAgLy8gQ3JlYXRlcyBhIGRpcmVjdG9yeSBhdCBhIGdpdmVuIHxwYXRofC4KKyAgICAv
LyBJZiB0aGUgfHBhdGh8IGRvZXNuJ3QgZXhpc3QsIGl0IGNyZWF0ZXMgYSBuZXcgZGlyZWN0b3J5
IGF0IHxwYXRofC4KKyAgICAvLyBJZiB8ZXhjbHVzaXZlfCBpcyB0cnVlLCBpdCBmYWlscyBpZiB0
aGUgfHBhdGh8IGFscmVhZHkgZXhpc3RzLgorICAgIC8vIElmIHxleGNsdXNpdmV8IGlzIGZhbHNl
LCBpdCBzdWNjZWVkcyBpZiB0aGUgfHBhdGh8IGFscmVhZHkgZXhpc3RzIG9yCisgICAgLy8gaXQg
aGFzIHN1Y2Nlc3NmdWxseSBjcmVhdGVkIGEgbmV3IGRpcmVjdG9yeSBhdCB8cGF0aHwuCisgICAg
Ly8KKyAgICAvLyBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzOjpkaWRTdWNjZWVkKCkgb24gfGNhbGxi
YWNrc3wgbXVzdCBiZSBjYWxsZWQgd2hlbgorICAgIC8vIHRoZSBvcGVyYXRpb24gaXMgY29tcGxl
dGVkIHN1Y2Nlc3NmdWxseS4KKyAgICAvLyBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzOjpkaWRGYWls
KCkgbXVzdCBiZSBjYWxsZWQgb3RoZXJ3aXNlLgorICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVEaXJl
Y3RvcnkoY29uc3QgV2ViU3RyaW5nJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgV2ViRmlsZVN5c3Rl
bUNhbGxiYWNrcyogY2FsbGJhY2tzKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQor
CisgICAgLy8gQ2hlY2tzIGlmIGEgZmlsZSBleGlzdHMgYXQgYSBnaXZlbiB8cGF0aHwuCisgICAg
Ly8gV2ViRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkU3VjY2VlZCgpIG9uIHxjYWxsYmFja3N8IG11
c3QgYmUgY2FsbGVkIHdoZW4KKyAgICAvLyB0aGUgb3BlcmF0aW9uIGlzIGNvbXBsZXRlZCBzdWNj
ZXNzZnVsbHkuCisgICAgLy8gV2ViRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkRmFpbCgpIG11c3Qg
YmUgY2FsbGVkIG90aGVyd2lzZS4KKyAgICB2aXJ0dWFsIHZvaWQgZmlsZUV4aXN0cyhjb25zdCBX
ZWJTdHJpbmcmIHBhdGgsIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3MqIGNhbGxiYWNrcykgeyBXRUJL
SVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKworICAgIC8vIENoZWNrcyBpZiBhIGRpcmVjdG9y
eSBleGlzdHMgYXQgYSBnaXZlbiB8cGF0aHwuCisgICAgLy8gV2ViRmlsZVN5c3RlbUNhbGxiYWNr
czo6ZGlkU3VjY2VlZCgpIG9uIHxjYWxsYmFja3N8IG11c3QgYmUgY2FsbGVkIHdoZW4KKyAgICAv
LyB0aGUgb3BlcmF0aW9uIGlzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuCisgICAgLy8gV2ViRmls
ZVN5c3RlbUNhbGxiYWNrczo6ZGlkRmFpbCgpIG11c3QgYmUgY2FsbGVkIG90aGVyd2lzZS4KKyAg
ICB2aXJ0dWFsIHZvaWQgZGlyZWN0b3J5RXhpc3RzKGNvbnN0IFdlYlN0cmluZyYgcGF0aCwgV2Vi
RmlsZVN5c3RlbUNhbGxiYWNrcyogY2FsbGJhY2tzKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsgfQorCisgICAgLy8gUmVhZHMgZGlyZWN0b3J5IGVudHJpZXMgb2YgYSBnaXZlbiBkaXJl
Y3RvcnkgYXQgfHBhdGh8LgorICAgIC8vIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZFJlYWRE
aXJlY3RvcnkoKSBvbiB8Y2FsbGJhY2tzfCBtdXN0IGJlCisgICAgLy8gY2FsbGVkIHdoZW4gdGhl
IG9wZXJhdGlvbiBpcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LgorICAgIC8vIFdlYkZpbGVTeXN0
ZW1DYWxsYmFja3M6OmRpZEZhaWwoKSBtdXN0IGJlIGNhbGxlZCBvdGhlcndpc2UuCisgICAgdmly
dHVhbCB2b2lkIHJlYWREaXJlY3RvcnkoY29uc3QgV2ViU3RyaW5nJiBwYXRoLCBXZWJGaWxlU3lz
dGVtQ2FsbGJhY2tzKiBjYWxsYmFja3MpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9
CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIH5XZWJGaWxlU3lzdGVtKCkgeyB9CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViRmlsZVN5c3RlbUNhbGxiYWNrcy5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGaWxl
U3lzdGVtQ2FsbGJhY2tzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzVjYjgzMzhkMjgyMTcwYWRkNzE4YjJlM2U0
ZjhkZDI3ZjI3OTQxZAotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViRmlsZVN5c3RlbUNhbGxiYWNrcy5oCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5cmln
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
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmICAgV2ViRmls
ZVN5c3RlbUNhbGxiYWNrc19oCisjZGVmaW5lICAgV2ViRmlsZVN5c3RlbUNhbGxiYWNrc19oCisK
KyNpbmNsdWRlICJXZWJGaWxlRW50cnkuaCIKKyNpbmNsdWRlICJXZWJGaWxlRXJyb3IuaCIKKyNp
bmNsdWRlICJXZWJWZWN0b3IuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlN0
cmluZzsKK3N0cnVjdCBXZWJGaWxlSW5mbzsKKworY2xhc3MgV2ViRmlsZVN5c3RlbUNhbGxiYWNr
cyB7CitwdWJsaWM6CisgICAgLy8gQ2FsbGJhY2sgZm9yIFdlYkZpbGVTeXN0ZW0ncyB2YXJpb3Vz
IG9wZXJhdGlvbnMgdGhhdCBkb24ndCByZXF1aXJlCisgICAgLy8gcmV0dXJuIHZhbHVlcy4KKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkU3VjY2VlZCgpID0gMDsKKworICAgIC8vIENhbGxiYWNrIGZvciBX
ZWJGaWxlU3lzdGVtOjpnZXRNZXRhZGF0YS4gQ2FsbGVkIHdpdGggdGhlIGZpbGUgbWV0YWRhdGEK
KyAgICAvLyBmb3IgdGhlIHJlcXVlc3RlZCBwYXRoLgorICAgIHZpcnR1YWwgdm9pZCBkaWRSZWFk
TWV0YWRhdGEoY29uc3QgV2ViRmlsZUluZm8mIGluZm8pID0gMDsKKworICAgIC8vIENhbGxiYWNr
IGZvciBXZWJGaWxlU3lzdGVtOjpyZWFkRGlyZWN0b3J5LiAgQ2FsbGVkIHdpdGggYSB2ZWN0b3Ig
b2YKKyAgICAvLyBmaWxlIGVudHJpZXMgaW4gdGhlIHJlcXVlc3RlZCBkaXJlY3RvcnkuIFRoaXMg
Y2FsbGJhY2sgbWlnaHQgYmUgY2FsbGVkCisgICAgLy8gbXVsdGlwbGUgdGltZXMgaWYgdGhlIGRp
cmVjdG9yeSBoYXMgbWFueSBlbnRyaWVzLiB8aGFzTW9yZXwgbXVzdCBiZQorICAgIC8vIHRydWUg
d2hlbiB0aGVyZSBhcmUgbW9yZSBlbnRyaWVzLgorICAgIHZpcnR1YWwgdm9pZCBkaWRSZWFkRGly
ZWN0b3J5KGNvbnN0IFdlYlZlY3RvcjxXZWJGaWxlRW50cnk+JiBlbnRyaWVzLCBib29sIGhhc01v
cmUpID0gMDsKKworICAgIC8vIENhbGxiYWNrIGZvciBXZWJGcmFtZUNsaWVudDo6cmVxdWVzdEZp
bGVTeXN0ZW0uIENhbGxlZCB3aXRoIGEgbmFtZSBhbmQKKyAgICAvLyByb290IHBhdGggZm9yIGEg
cmVxdWVzdGVkIEZpbGVTeXN0ZW0gd2hlbiB0aGUgcmVxdWVzdCBpcyBhY2NlcHRlZC4KKyAgICB2
aXJ0dWFsIHZvaWQgZGlkT3BlbkZpbGVTeXN0ZW0oY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25z
dCBXZWJTdHJpbmcmIHJvb3RQYXRoKSA9IDA7CisKKyAgICAvLyBDYWxsZWQgd2l0aCBhbiBlcnJv
ciBjb2RlIHdoZW4gYSByZXF1ZXN0ZWQgb3BlcmF0aW9uIGhhc24ndCBiZWVuCisgICAgLy8gY29t
cGxldGVkLgorICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKFdlYkZpbGVFcnJvciBlcnJvcikgPSAw
OworCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB+V2ViRmlsZVN5c3RlbUNhbGxiYWNrcygpIHt9
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lQ2xpZW50LmggYi9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYkZyYW1lQ2xpZW50LmgKaW5kZXggMmI3ZWUwZDMwN2NhYWUyZTA4MDI0MzY2MTAzZDFi
YjliN2Q3NTFkZi4uNDIzMDA1YzRkZjY1YmMyYTYyZmEyYzg5NmNkYmY0Mjg5ZTEwZWQwOSAxMDA2
NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oCisrKyBiL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQuaApAQCAtMzIsNiArMzIsNyBAQAog
I2RlZmluZSBXZWJGcmFtZUNsaWVudF9oCiAKICNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNs
dWRlICJXZWJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiV2ViTmF2aWdhdGlvblBvbGljeS5oIgog
I2luY2x1ZGUgIldlYk5hdmlnYXRpb25UeXBlLmgiCiAjaW5jbHVkZSAiV2ViVVJMRXJyb3IuaCIK
QEAgLTQyLDYgKzQzLDcgQEAgY2xhc3MgV2ViQXBwbGljYXRpb25DYWNoZUhvc3Q7CiBjbGFzcyBX
ZWJBcHBsaWNhdGlvbkNhY2hlSG9zdENsaWVudDsKIGNsYXNzIFdlYkNvb2tpZUphcjsKIGNsYXNz
IFdlYkRhdGFTb3VyY2U7CitjbGFzcyBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzOwogY2xhc3MgV2Vi
Rm9ybUVsZW1lbnQ7CiBjbGFzcyBXZWJGcmFtZTsKIGNsYXNzIFdlYk1lZGlhUGxheWVyOwpAQCAt
MzI3LDYgKzMyOSwxOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlcG9ydEZpbmRJblBh
Z2VTZWxlY3Rpb24oCiAgICAgICAgIGludCBpZGVudGlmaWVyLCBpbnQgYWN0aXZlTWF0Y2hPcmRp
bmFsLCBjb25zdCBXZWJSZWN0JiBzZWxlY3Rpb24pIHsgfQogCisgICAgLy8gRmlsZVN5c3RlbSAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAg
ICAvLyBSZXF1ZXN0cyBhIEZpbGVTeXN0ZW0uCisgICAgLy8gfHNpemV8IGluZGljYXRlcyBob3cg
bXVjaCBzdG9yYWdlIHNwYWNlIChpbiBieXRlcykgdGhlIGNhbGxlciBleHBlY3RzCisgICAgLy8g
dG8gbmVlZC4KKyAgICAvLyBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzOjpvblN1Y2Nlc3NGaWxlU3lz
dGVtKCkgbXVzdCBiZSBjYWxsZWQgd2l0aAorICAgIC8vIGEgbmFtZSBhbmQgcm9vdCBwYXRoIGZv
ciB0aGUgcmVxdWVzdGVkIEZpbGVTeXN0ZW0gd2hlbiB0aGUgb3BlcmF0aW9uCisgICAgLy8gaXMg
Y29tcGxldGVkIHN1Y2Nlc3NmdWxseS4gV2ViRmlsZVN5c3RlbUNhbGxiYWNrczo6b25FcnJvcigp
IG11c3QgYmUKKyAgICAvLyBjYWxsZWQgb3RoZXJ3aXNlLgorICAgIHZpcnR1YWwgdm9pZCByZXF1
ZXN0RmlsZVN5c3RlbSgKKyAgICAgICAgV2ViRnJhbWUqLCBXZWJGaWxlU3lzdGVtOjpUeXBlLCBs
b25nIGxvbmcgc2l6ZSwKKyAgICAgICAgV2ViRmlsZVN5c3RlbUNhbGxiYWNrcyopIHsgfQorCiBw
cm90ZWN0ZWQ6CiAgICAgfldlYkZyYW1lQ2xpZW50KCkgeyB9CiB9OwpkaWZmIC0tZ2l0IGEvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJLaXRDbGllbnQuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViS2l0Q2xpZW50LmgKaW5kZXggNDEwNDE3NTA3NTEzNzJjZjJmOWVhZjA5NGNkYWJhOGUw
NTJiZmFhZC4uNjlhZGFkMDY1MWI5YjBhZTdjZmQyOWE5ZmJkZjI1MmFkNDJlNmJmOCAxMDA2NDQK
LS0tIGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJLaXRDbGllbnQuaAorKysgYi9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYktpdENsaWVudC5oCkBAIC0zMyw3ICszMyw2IEBACiAKICNpbmNs
dWRlICJXZWJDb21tb24uaCIKICNpbmNsdWRlICJXZWJEYXRhLmgiCi0jaW5jbHVkZSAiV2ViRmls
ZVN5c3RlbS5oIgogI2luY2x1ZGUgIldlYkxvY2FsaXplZFN0cmluZy5oIgogI2luY2x1ZGUgIldl
YlN0cmluZy5oIgogI2luY2x1ZGUgIldlYlVSTC5oIgpAQCAtNTAsNiArNDksNyBAQCBjbGFzcyBX
ZWJBcHBsaWNhdGlvbkNhY2hlSG9zdDsKIGNsYXNzIFdlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0Q2xp
ZW50OwogY2xhc3MgV2ViQ2xpcGJvYXJkOwogY2xhc3MgV2ViQ29va2llSmFyOworY2xhc3MgV2Vi
RmlsZVN5c3RlbTsKIGNsYXNzIFdlYkZpbGVVdGlsaXRpZXM7CiBjbGFzcyBXZWJHTEVTMkNvbnRl
eHQ7CiBjbGFzcyBXZWJHcmFwaGljc0NvbnRleHQzRDsKQEAgLTczLDEyICs3Myw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIFdlYk1pbWVSZWdpc3RyeSogbWltZVJlZ2lzdHJ5KCkgeyByZXR1cm4g
MDsgfQogCiAgICAgLy8gTXVzdCByZXR1cm4gbm9uLW51bGwuCi0gICAgLy8gRklYTUU6IENsZWFu
IHVwIHRoaXMgb25lIG9uY2UgdGhlIHJlbmFtaW5nIHRvIFdlYkZpbGVVdGlsaXRpZXMgaXMgZG9u
ZS4KLSAgICB2aXJ0dWFsIFdlYkZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0oKSB7IHJldHVybiAwOyB9
Ci0KLSAgICAvLyBNdXN0IHJldHVybiBub24tbnVsbC4KLSAgICAvLyBGSVhNRTogQ2xlYW4gdXAg
dGhpcyBvbmUgb25jZSB0aGUgcmVuYW1pbmcgZnJvbSBXZWJGaWxlU3lzdGVtIGlzIGRvbmUuCi0g
ICAgdmlydHVhbCBXZWJGaWxlVXRpbGl0aWVzKiBmaWxlVXRpbGl0aWVzKCkgeyByZXR1cm4gZmls
ZVN5c3RlbSgpOyB9CisgICAgdmlydHVhbCBXZWJGaWxlVXRpbGl0aWVzKiBmaWxlVXRpbGl0aWVz
KCkgeyByZXR1cm4gMDsgfQogCiAgICAgLy8gTWF5IHJldHVybiBudWxsIGlmIHNhbmRib3ggc3Vw
cG9ydCBpcyBub3QgbmVjZXNzYXJ5CiAgICAgdmlydHVhbCBXZWJTYW5kYm94U3VwcG9ydCogc2Fu
ZGJveFN1cHBvcnQoKSB7IHJldHVybiAwOyB9CkBAIC0yNjgsNiArMjYzLDExIEBAIHB1YmxpYzoK
ICAgICAvLyBNYXkgcmV0dXJuIG51bGwgaWYgaXQgZmFpbHMgdG8gY3JlYXRlIHRoZSBjb250ZXh0
LgogICAgIHZpcnR1YWwgV2ViR0xFUzJDb250ZXh0KiBjcmVhdGVHTEVTMkNvbnRleHQoKSB7IHJl
dHVybiAwOyB9CiAKKyAgICAvLyBGaWxlU3lzdGVtIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8vIE11c3QgcmV0dXJuIG5v
bi1udWxsLgorICAgIHZpcnR1YWwgV2ViRmlsZVN5c3RlbSogZmlsZVN5c3RlbSgpIHsgcmV0dXJu
IDA7IH0KKwogcHJvdGVjdGVkOgogICAgIH5XZWJLaXRDbGllbnQoKSB7IH0KIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64740</attachid>
            <date>2010-08-18 11:15:38 -0700</date>
            <delta_ts>2010-08-18 11:23:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43151-20100818111536.patch</filename>
            <type>text/plain</type>
            <size>17452</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IGM1YjJhNWQ0NjdhMzc4ZDc0YTA2YmQyMDIxYzBiMmY0YzljNzQxNzMu
LmVjYzk3MGQ3ODEyMGMwYTcxYjQwNGUwYTlmOWI1ZDMyNDRlMTU0M2QgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDI0IEBACisyMDEwLTA4LTE3ICBLaW51a28gWWFzdWRhICA8a2ludWtvQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGQgV2ViS2l0IEFQSSBmb3IgSFRNTDUgRmlsZVN5c3RlbSBBUEkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQzMTUxCisKKyAgICAgICAgQWRkIGFz
eW5jaHJvbm91cyBGaWxlU3lzdGVtIGludGVyZmFjZSB0byBXZWJLaXQgQVBJIGZvcgorICAgICAg
ICBIVE1MNSBGaWxlU3lzdGVtIEFQSS4KKyAgICAgICAgaHR0cDovL2Rldi53My5vcmcvMjAwOS9k
YXAvZmlsZS1zeXN0ZW0vZmlsZS1kaXItc3lzLmh0bWwKKworICAgICAgICAqIFdlYktpdC5neXA6
CisgICAgICAgICogcHVibGljL1dlYkZpbGVFbnRyeS5oOiBBZGRlZC4KKyAgICAgICAgKiBwdWJs
aWMvV2ViRmlsZUVycm9yLmg6IEFkZGVkLgorICAgICAgICAqIHB1YmxpYy9XZWJGaWxlU3lzdGVt
Lmg6IEFkZGVkLgorICAgICAgICAqIHB1YmxpYy9XZWJGaWxlU3lzdGVtQ2FsbGJhY2tzLmg6IEFk
ZGVkLgorICAgICAgICAqIHB1YmxpYy9XZWJLaXRDbGllbnQuaDoKKyAgICAgICAgKFdlYktpdDo6
V2ViS2l0Q2xpZW50Ojphc3luY0ZpbGVTeXN0ZW0pOgorICAgICAgICAqIHB1YmxpYy9XZWJGcmFt
ZUNsaWVudC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUNsaWVudDo6cmVxdWVzdEZpbGVT
eXN0ZW0pOgorCiAyMDEwLTA4LTE3ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdt
YWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByNjU1MTYuCmRpZmYg
LS1naXQgYS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1dlYktpdC9jaHJvbWl1bS9XZWJL
aXQuZ3lwCmluZGV4IGMzMzhiNTkwNDk5MmZkODZjM2UwNDcwNmJlZWM2MGRkNTg2NjllYWQuLmQy
OGM1MjlmMTg4NWEyNjliNzM5MTFiYWIyYmFjYTJmODYzNzBhMjQgMTAwNjQ0Ci0tLSBhL1dlYktp
dC9jaHJvbWl1bS9XZWJLaXQuZ3lwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBA
IC0xNTYsNyArMTU2LDEwIEBACiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJFdmVudExpc3Rl
bmVyLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRmlsZUNob29zZXJDb21wbGV0aW9u
LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRmlsZUNob29zZXJQYXJhbXMuaCcsCisg
ICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJGaWxlRW50cnkuaCcsCisgICAgICAgICAgICAgICAg
J3B1YmxpYy9XZWJGaWxlRXJyb3IuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJGaWxl
SW5mby5oJywKKyAgICAgICAgICAgICAgICAncHVibGljL1dlYkZpbGVTeXN0ZW1DYWxsYmFja3Mu
aCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJGaWxlU3lzdGVtLmgnLAogICAgICAgICAg
ICAgICAgICdwdWJsaWMvV2ViRmlsZVV0aWxpdGllcy5oJywKICAgICAgICAgICAgICAgICAncHVi
bGljL1dlYkZpbmRPcHRpb25zLmgnLApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJGaWxlRW50cnkuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRmlsZUVudHJ5LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMGQ2YjgyNWU5ZTgxYTM2ZmRhODNjZTM4Y2I5N2FjNzVjYjhiZjNkOAotLS0g
L2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRmlsZUVudHJ5LmgKQEAg
LTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICog
bWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgV2ViRmlsZUVudHJ5X2gKKyNkZWZpbmUgV2ViRmlsZUVudHJ5
X2gKKworI2luY2x1ZGUgIldlYlN0cmluZy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3Ry
dWN0IFdlYkZpbGVFbnRyeSB7CisgICAgV2ViRmlsZUVudHJ5KCkgOiBpc0RpcmVjdG9yeShmYWxz
ZSkgeyB9CisKKyAgICAvLyBUaGUgbmFtZSBvZiB0aGUgZW50cnkuCisgICAgV2ViU3RyaW5nIG5h
bWU7CisKKyAgICAvLyBUaGlzIGZsYWcgaW5kaWNhdGVzIGlmIHRoZSBlbnRyeSBpcyBkaXJlY3Rv
cnkgb3Igbm90LgorICAgIGJvb2wgaXNEaXJlY3Rvcnk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmIC8vIFdlYkZpbGVFbnRyeV9oCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYkZpbGVFcnJvci5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJG
aWxlRXJyb3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZmU4ODgyMGMzNDFhYjAyNGJiMGFhMDdmN2IwNzBiODc4
N2FmNWZkCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGaWxl
RXJyb3IuaApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKyNpZm5kZWYgICBXZWJGaWxlRXJyb3JfaAorI2RlZmluZSAg
IFdlYkZpbGVFcnJvcl9oCisKK25hbWVzcGFjZSBXZWJLaXQgeworCisvLyBGaWxlLXJlbGF0ZWQg
ZXJyb3IgY29kZSBkZWZpbmVkIGluIEhUTUw1IEZpbGUgQVBJLgorZW51bSBXZWJGaWxlRXJyb3Ig
eworICAgIFdlYkZpbGVFcnJvck5vTW9kaWZpY2F0aW9uQWxsb3dlZCA9IDcsCisgICAgV2ViRmls
ZUVycm9yTm90Rm91bmQgPSA4LAorICAgIFdlYkZpbGVFcnJvckludmFsaWRTdGF0ZSA9IDExLAor
ICAgIFdlYkZpbGVFcnJvckludmFsaWRNb2RpZmljYXRpb24gPSAxMywKKyAgICBXZWJGaWxlRXJy
b3JTZWN1cml0eSA9IDE4LAorICAgIFdlYkZpbGVFcnJvckFib3J0ID0gMjAsCisgICAgV2ViRmls
ZUVycm9yUXVvdGFFeGNlZWRlZCA9IDIyLAorICAgIFdlYkZpbGVFcnJvck5vdFJlYWRhYmxlID0g
MjQsCisgICAgV2ViRmlsZUVycm9yRW5jb2RpbmcgPSAyNiwKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
RmlsZVN5c3RlbS5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGaWxlU3lzdGVtLmgKaW5k
ZXggYTkxMTA2ZTgxOWY3ZmU3NGI0MDBjNjA2OWRiNWNiN2U1ZDVkYTA4Ni4uNjQxYzE2OTYyZjJh
ZmRiY2RkNzA3NTA3ZDkzYmI4ODA2NTY0OTJiZSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJGaWxlU3lzdGVtLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJG
aWxlU3lzdGVtLmgKQEAgLTMxLDEyICszMSw3NyBAQAogI2lmbmRlZiBXZWJGaWxlU3lzdGVtX2gK
ICNkZWZpbmUgV2ViRmlsZVN5c3RlbV9oCiAKLSNpbmNsdWRlICJXZWJGaWxlVXRpbGl0aWVzLmgi
CisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCi0vLyBGSVhNRTogQ2xlYW4gdXAgdGhpcyBjbGFzcyBvbmNlIHRoZSBy
ZW5hbWluZyB0byBXZWJGaWxlVXRpbGl0aWVzIGlzIGRvbmUuCi1jbGFzcyBXZWJGaWxlU3lzdGVt
IDogcHVibGljIFdlYkZpbGVVdGlsaXRpZXMgeworY2xhc3MgV2ViRmlsZVN5c3RlbUNhbGxiYWNr
czsKKworY2xhc3MgV2ViRmlsZVN5c3RlbSB7CitwdWJsaWM6CisgICAgZW51bSBUeXBlIHsKKyAg
ICAgICAgVHlwZVRlbXBvcmFyeSwKKyAgICAgICAgVHlwZVBlcnNpc3RlbnQsCisgICAgfTsKKwor
ICAgIC8vIE1vdmVzIGEgZmlsZSBvciBkaXJlY3RvcnkgYXQgfHNyY1BhdGh8IHRvIHxkZXN0UGF0
aHwuCisgICAgLy8gV2ViRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkU3VjY2VlZCgpIG11c3QgYmUg
Y2FsbGVkIHdoZW4gdGhlIG9wZXJhdGlvbiBpcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LgorICAg
IC8vIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZEZhaWwoKSBtdXN0IGJlIGNhbGxlZCBvdGhl
cndpc2UuCisgICAgdmlydHVhbCB2b2lkIG1vdmUoY29uc3QgV2ViU3RyaW5nJiBzcmNQYXRoLCBj
b25zdCBXZWJTdHJpbmcmIGRlc3RQYXRoLCBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzKikgeyBXRUJL
SVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKworICAgIC8vIENvcGllcyBhIGZpbGUgb3IgZGly
ZWN0b3J5IGF0IHxzcmNQYXRofCB0byB8ZGVzdFBhdGh8LgorICAgIC8vIFdlYkZpbGVTeXN0ZW1D
YWxsYmFja3M6OmRpZFN1Y2NlZWQoKSBtdXN0IGJlIGNhbGxlZCB3aGVuIHRoZSBvcGVyYXRpb24g
aXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseS4KKyAgICAvLyBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tz
OjpkaWRGYWlsKCkgbXVzdCBiZSBjYWxsZWQgb3RoZXJ3aXNlLgorICAgIHZpcnR1YWwgdm9pZCBj
b3B5KGNvbnN0IFdlYlN0cmluZyYgc3JjUGF0aCwgY29uc3QgV2ViU3RyaW5nJiBkZXN0UGF0aCwg
V2ViRmlsZVN5c3RlbUNhbGxiYWNrcyopIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9
CisKKyAgICAvLyBEZWxldGVzIGEgZmlsZSBvciBkaXJlY3RvcnkgYXQgYSBnaXZlbiB8cGF0aHwu
CisgICAgLy8gV2ViRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkU3VjY2VlZCgpIG11c3QgYmUgY2Fs
bGVkIHdoZW4gdGhlIG9wZXJhdGlvbiBpcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LgorICAgIC8v
IFdlYkZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZEZhaWwoKSBtdXN0IGJlIGNhbGxlZCBvdGhlcndp
c2UuCisgICAgdmlydHVhbCB2b2lkIHJlbW92ZShjb25zdCBXZWJTdHJpbmcmIHBhdGgsIFdlYkZp
bGVTeXN0ZW1DYWxsYmFja3MqKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorCisg
ICAgLy8gUmV0cmlldmVzIHRoZSBtZXRhZGF0YSBpbmZvcm1hdGlvbiBvZiB0aGUgZmlsZSBvciBk
aXJlY3RvcnkgYXQgdGhlIGdpdmVuIHxwYXRofC4KKyAgICAvLyBXZWJGaWxlU3lzdGVtQ2FsbGJh
Y2tzOjpkaWRSZWFkTWV0YWRhdGEoKSBtdXN0IGJlIGNhbGxlZCB3aXRoIGEgdmFsaWQgbWV0YWRh
dGEgd2hlbiB0aGUgcmV0cmlldmFsIGlzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuCisgICAgLy8g
V2ViRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkRmFpbCgpIG11c3QgYmUgY2FsbGVkIG90aGVyd2lz
ZS4KKyAgICB2aXJ0dWFsIHZvaWQgcmVhZE1ldGFkYXRhKGNvbnN0IFdlYlN0cmluZyYgcGF0aCwg
V2ViRmlsZVN5c3RlbUNhbGxiYWNrcyopIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9
CisKKyAgICAvLyBDcmVhdGVzIGEgZmlsZSBhdCBnaXZlbiB8cGF0aHwuCisgICAgLy8gSWYgdGhl
IHxwYXRofCBkb2Vzbid0IGV4aXN0LCBpdCBjcmVhdGVzIGEgbmV3IGZpbGUgYXQgfHBhdGh8Lgor
ICAgIC8vIElmIHxleGNsdXNpdmV8IGlzIHRydWUsIGl0IGZhaWxzIGlmIHRoZSB8cGF0aHwgYWxy
ZWFkeSBleGlzdHMuCisgICAgLy8gSWYgfGV4Y2x1c2l2ZXwgaXMgZmFsc2UsIGl0IHN1Y2NlZWRz
IGlmIHRoZSB8cGF0aHwgYWxyZWFkeSBleGlzdHMgb3IKKyAgICAvLyBpdCBoYXMgc3VjY2Vzc2Z1
bGx5IGNyZWF0ZWQgYSBuZXcgZmlsZSBhdCB8cGF0aHwuCisgICAgLy8KKyAgICAvLyBXZWJGaWxl
U3lzdGVtQ2FsbGJhY2tzOjpkaWRTdWNjZWVkKCkgbXVzdCBiZSBjYWxsZWQgd2hlbiB0aGUgb3Bl
cmF0aW9uIGlzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuCisgICAgLy8gV2ViRmlsZVN5c3RlbUNh
bGxiYWNrczo6ZGlkRmFpbCgpIG11c3QgYmUgY2FsbGVkIG90aGVyd2lzZS4KKyAgICB2aXJ0dWFs
IHZvaWQgY3JlYXRlRmlsZShjb25zdCBXZWJTdHJpbmcmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBX
ZWJGaWxlU3lzdGVtQ2FsbGJhY2tzKikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0K
KworICAgIC8vIENyZWF0ZXMgYSBkaXJlY3RvcnkgYXQgYSBnaXZlbiB8cGF0aHwuCisgICAgLy8g
SWYgdGhlIHxwYXRofCBkb2Vzbid0IGV4aXN0LCBpdCBjcmVhdGVzIGEgbmV3IGRpcmVjdG9yeSBh
dCB8cGF0aHwuCisgICAgLy8gSWYgfGV4Y2x1c2l2ZXwgaXMgdHJ1ZSwgaXQgZmFpbHMgaWYgdGhl
IHxwYXRofCBhbHJlYWR5IGV4aXN0cy4KKyAgICAvLyBJZiB8ZXhjbHVzaXZlfCBpcyBmYWxzZSwg
aXQgc3VjY2VlZHMgaWYgdGhlIHxwYXRofCBhbHJlYWR5IGV4aXN0cyBvciBpdCBoYXMgc3VjY2Vz
c2Z1bGx5IGNyZWF0ZWQgYSBuZXcgZGlyZWN0b3J5IGF0IHxwYXRofC4KKyAgICAvLworICAgIC8v
IFdlYkZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZFN1Y2NlZWQoKSBtdXN0IGJlIGNhbGxlZCB3aGVu
CisgICAgLy8gdGhlIG9wZXJhdGlvbiBpcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LgorICAgIC8v
IFdlYkZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZEZhaWwoKSBtdXN0IGJlIGNhbGxlZCBvdGhlcndp
c2UuCisgICAgdmlydHVhbCB2b2lkIGNyZWF0ZURpcmVjdG9yeShjb25zdCBXZWJTdHJpbmcmIHBh
dGgsIGJvb2wgZXhjbHVzaXZlLCBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzKikgeyBXRUJLSVRfQVNT
RVJUX05PVF9SRUFDSEVEKCk7IH0KKworICAgIC8vIENoZWNrcyBpZiBhIGZpbGUgZXhpc3RzIGF0
IGEgZ2l2ZW4gfHBhdGh8LgorICAgIC8vIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZFN1Y2Nl
ZWQoKSBtdXN0IGJlIGNhbGxlZCB3aGVuIHRoZSBvcGVyYXRpb24gaXMgY29tcGxldGVkIHN1Y2Nl
c3NmdWxseS4KKyAgICAvLyBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzOjpkaWRGYWlsKCkgbXVzdCBi
ZSBjYWxsZWQgb3RoZXJ3aXNlLgorICAgIHZpcnR1YWwgdm9pZCBmaWxlRXhpc3RzKGNvbnN0IFdl
YlN0cmluZyYgcGF0aCwgV2ViRmlsZVN5c3RlbUNhbGxiYWNrcyopIHsgV0VCS0lUX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOyB9CisKKyAgICAvLyBDaGVja3MgaWYgYSBkaXJlY3RvcnkgZXhpc3RzIGF0
IGEgZ2l2ZW4gfHBhdGh8LgorICAgIC8vIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZFN1Y2Nl
ZWQoKSBtdXN0IGJlIGNhbGxlZCB3aGVuIHRoZSBvcGVyYXRpb24gaXMgY29tcGxldGVkIHN1Y2Nl
c3NmdWxseS4KKyAgICAvLyBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzOjpkaWRGYWlsKCkgbXVzdCBi
ZSBjYWxsZWQgb3RoZXJ3aXNlLgorICAgIHZpcnR1YWwgdm9pZCBkaXJlY3RvcnlFeGlzdHMoY29u
c3QgV2ViU3RyaW5nJiBwYXRoLCBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzKikgeyBXRUJLSVRfQVNT
RVJUX05PVF9SRUFDSEVEKCk7IH0KKworICAgIC8vIFJlYWRzIGRpcmVjdG9yeSBlbnRyaWVzIG9m
IGEgZ2l2ZW4gZGlyZWN0b3J5IGF0IHxwYXRofC4KKyAgICAvLyBXZWJGaWxlU3lzdGVtQ2FsbGJh
Y2tzOjpkaWRSZWFkRGlyZWN0b3J5KCkgbXVzdCBiZSBjYWxsZWQgd2hlbiB0aGUgb3BlcmF0aW9u
IGlzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuCisgICAgLy8gV2ViRmlsZVN5c3RlbUNhbGxiYWNr
czo6ZGlkRmFpbCgpIG11c3QgYmUgY2FsbGVkIG90aGVyd2lzZS4KKyAgICB2aXJ0dWFsIHZvaWQg
cmVhZERpcmVjdG9yeShjb25zdCBXZWJTdHJpbmcmIHBhdGgsIFdlYkZpbGVTeXN0ZW1DYWxsYmFj
a3MqKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorCitwcm90ZWN0ZWQ6CisgICAg
dmlydHVhbCB+V2ViRmlsZVN5c3RlbSgpIHsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZpbGVTeXN0ZW1DYWxsYmFj
a3MuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRmlsZVN5c3RlbUNhbGxiYWNrcy5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjM3NjBiZTNiOTkxYjQ2ZTNmZDNhMjQxMmY1ZDIzYjJlMTNmYjdiNTkKLS0tIC9k
ZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZpbGVTeXN0ZW1DYWxsYmFj
a3MuaApAQCAtMCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiAgIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3NfaAor
I2RlZmluZSAgIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3NfaAorCisjaW5jbHVkZSAiV2ViRmlsZUVu
dHJ5LmgiCisjaW5jbHVkZSAiV2ViRmlsZUVycm9yLmgiCisjaW5jbHVkZSAiV2ViVmVjdG9yLmgi
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJTdHJpbmc7CitzdHJ1Y3QgV2ViRmls
ZUluZm87CisKK2NsYXNzIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3MgeworcHVibGljOgorICAgIC8v
IENhbGxiYWNrIGZvciBXZWJGaWxlU3lzdGVtJ3MgdmFyaW91cyBvcGVyYXRpb25zIHRoYXQgZG9u
J3QgcmVxdWlyZQorICAgIC8vIHJldHVybiB2YWx1ZXMuCisgICAgdmlydHVhbCB2b2lkIGRpZFN1
Y2NlZWQoKSA9IDA7CisKKyAgICAvLyBDYWxsYmFjayBmb3IgV2ViRmlsZVN5c3RlbTo6Z2V0TWV0
YWRhdGEuIENhbGxlZCB3aXRoIHRoZSBmaWxlIG1ldGFkYXRhCisgICAgLy8gZm9yIHRoZSByZXF1
ZXN0ZWQgcGF0aC4KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVhZE1ldGFkYXRhKGNvbnN0IFdlYkZp
bGVJbmZvJikgPSAwOworCisgICAgLy8gQ2FsbGJhY2sgZm9yIFdlYkZpbGVTeXN0ZW06OnJlYWRE
aXJlY3RvcnkuICBDYWxsZWQgd2l0aCBhIHZlY3RvciBvZgorICAgIC8vIGZpbGUgZW50cmllcyBp
biB0aGUgcmVxdWVzdGVkIGRpcmVjdG9yeS4gVGhpcyBjYWxsYmFjayBtaWdodCBiZSBjYWxsZWQK
KyAgICAvLyBtdWx0aXBsZSB0aW1lcyBpZiB0aGUgZGlyZWN0b3J5IGhhcyBtYW55IGVudHJpZXMu
IHxoYXNNb3JlfCBtdXN0IGJlCisgICAgLy8gdHJ1ZSB3aGVuIHRoZXJlIGFyZSBtb3JlIGVudHJp
ZXMuCisgICAgdmlydHVhbCB2b2lkIGRpZFJlYWREaXJlY3RvcnkoY29uc3QgV2ViVmVjdG9yPFdl
YkZpbGVFbnRyeT4mLCBib29sIGhhc01vcmUpID0gMDsKKworICAgIC8vIENhbGxiYWNrIGZvciBX
ZWJGcmFtZUNsaWVudDo6cmVxdWVzdEZpbGVTeXN0ZW0uIENhbGxlZCB3aXRoIGEgbmFtZSBhbmQK
KyAgICAvLyByb290IHBhdGggZm9yIGEgcmVxdWVzdGVkIEZpbGVTeXN0ZW0gd2hlbiB0aGUgcmVx
dWVzdCBpcyBhY2NlcHRlZC4KKyAgICB2aXJ0dWFsIHZvaWQgZGlkT3BlbkZpbGVTeXN0ZW0oY29u
c3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIHJvb3RQYXRoKSA9IDA7CisKKyAg
ICAvLyBDYWxsZWQgd2l0aCBhbiBlcnJvciBjb2RlIHdoZW4gYSByZXF1ZXN0ZWQgb3BlcmF0aW9u
IGhhc24ndCBiZWVuCisgICAgLy8gY29tcGxldGVkLgorICAgIHZpcnR1YWwgdm9pZCBkaWRGYWls
KFdlYkZpbGVFcnJvcikgPSAwOworCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB+V2ViRmlsZVN5
c3RlbUNhbGxiYWNrcygpIHt9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlm
CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lQ2xpZW50LmggYi9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lQ2xpZW50LmgKaW5kZXggMmI3ZWUwZDMwN2Nh
YWUyZTA4MDI0MzY2MTAzZDFiYjliN2Q3NTFkZi4uNDIzMDA1YzRkZjY1YmMyYTYyZmEyYzg5NmNk
YmY0Mjg5ZTEwZWQwOSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFt
ZUNsaWVudC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQuaApA
QCAtMzIsNiArMzIsNyBAQAogI2RlZmluZSBXZWJGcmFtZUNsaWVudF9oCiAKICNpbmNsdWRlICJX
ZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiV2ViTmF2
aWdhdGlvblBvbGljeS5oIgogI2luY2x1ZGUgIldlYk5hdmlnYXRpb25UeXBlLmgiCiAjaW5jbHVk
ZSAiV2ViVVJMRXJyb3IuaCIKQEAgLTQyLDYgKzQzLDcgQEAgY2xhc3MgV2ViQXBwbGljYXRpb25D
YWNoZUhvc3Q7CiBjbGFzcyBXZWJBcHBsaWNhdGlvbkNhY2hlSG9zdENsaWVudDsKIGNsYXNzIFdl
YkNvb2tpZUphcjsKIGNsYXNzIFdlYkRhdGFTb3VyY2U7CitjbGFzcyBXZWJGaWxlU3lzdGVtQ2Fs
bGJhY2tzOwogY2xhc3MgV2ViRm9ybUVsZW1lbnQ7CiBjbGFzcyBXZWJGcmFtZTsKIGNsYXNzIFdl
Yk1lZGlhUGxheWVyOwpAQCAtMzI3LDYgKzMyOSwxOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIHJlcG9ydEZpbmRJblBhZ2VTZWxlY3Rpb24oCiAgICAgICAgIGludCBpZGVudGlmaWVyLCBp
bnQgYWN0aXZlTWF0Y2hPcmRpbmFsLCBjb25zdCBXZWJSZWN0JiBzZWxlY3Rpb24pIHsgfQogCisg
ICAgLy8gRmlsZVN5c3RlbSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKKyAgICAvLyBSZXF1ZXN0cyBhIEZpbGVTeXN0ZW0uCisgICAgLy8gfHNp
emV8IGluZGljYXRlcyBob3cgbXVjaCBzdG9yYWdlIHNwYWNlIChpbiBieXRlcykgdGhlIGNhbGxl
ciBleHBlY3RzCisgICAgLy8gdG8gbmVlZC4KKyAgICAvLyBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tz
OjpvblN1Y2Nlc3NGaWxlU3lzdGVtKCkgbXVzdCBiZSBjYWxsZWQgd2l0aAorICAgIC8vIGEgbmFt
ZSBhbmQgcm9vdCBwYXRoIGZvciB0aGUgcmVxdWVzdGVkIEZpbGVTeXN0ZW0gd2hlbiB0aGUgb3Bl
cmF0aW9uCisgICAgLy8gaXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseS4gV2ViRmlsZVN5c3RlbUNh
bGxiYWNrczo6b25FcnJvcigpIG11c3QgYmUKKyAgICAvLyBjYWxsZWQgb3RoZXJ3aXNlLgorICAg
IHZpcnR1YWwgdm9pZCByZXF1ZXN0RmlsZVN5c3RlbSgKKyAgICAgICAgV2ViRnJhbWUqLCBXZWJG
aWxlU3lzdGVtOjpUeXBlLCBsb25nIGxvbmcgc2l6ZSwKKyAgICAgICAgV2ViRmlsZVN5c3RlbUNh
bGxiYWNrcyopIHsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgfldlYkZyYW1lQ2xpZW50KCkgeyB9CiB9
OwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJLaXRDbGllbnQuaCBiL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViS2l0Q2xpZW50LmgKaW5kZXggNDEwNDE3NTA3NTEzNzJj
ZjJmOWVhZjA5NGNkYWJhOGUwNTJiZmFhZC4uNjlhZGFkMDY1MWI5YjBhZTdjZmQyOWE5ZmJkZjI1
MmFkNDJlNmJmOCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJLaXRDbGll
bnQuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYktpdENsaWVudC5oCkBAIC0zMyw3
ICszMyw2IEBACiAKICNpbmNsdWRlICJXZWJDb21tb24uaCIKICNpbmNsdWRlICJXZWJEYXRhLmgi
Ci0jaW5jbHVkZSAiV2ViRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIldlYkxvY2FsaXplZFN0cmlu
Zy5oIgogI2luY2x1ZGUgIldlYlN0cmluZy5oIgogI2luY2x1ZGUgIldlYlVSTC5oIgpAQCAtNTAs
NiArNDksNyBAQCBjbGFzcyBXZWJBcHBsaWNhdGlvbkNhY2hlSG9zdDsKIGNsYXNzIFdlYkFwcGxp
Y2F0aW9uQ2FjaGVIb3N0Q2xpZW50OwogY2xhc3MgV2ViQ2xpcGJvYXJkOwogY2xhc3MgV2ViQ29v
a2llSmFyOworY2xhc3MgV2ViRmlsZVN5c3RlbTsKIGNsYXNzIFdlYkZpbGVVdGlsaXRpZXM7CiBj
bGFzcyBXZWJHTEVTMkNvbnRleHQ7CiBjbGFzcyBXZWJHcmFwaGljc0NvbnRleHQzRDsKQEAgLTcz
LDEyICs3Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFdlYk1pbWVSZWdpc3RyeSogbWltZVJl
Z2lzdHJ5KCkgeyByZXR1cm4gMDsgfQogCiAgICAgLy8gTXVzdCByZXR1cm4gbm9uLW51bGwuCi0g
ICAgLy8gRklYTUU6IENsZWFuIHVwIHRoaXMgb25lIG9uY2UgdGhlIHJlbmFtaW5nIHRvIFdlYkZp
bGVVdGlsaXRpZXMgaXMgZG9uZS4KLSAgICB2aXJ0dWFsIFdlYkZpbGVTeXN0ZW0qIGZpbGVTeXN0
ZW0oKSB7IHJldHVybiAwOyB9Ci0KLSAgICAvLyBNdXN0IHJldHVybiBub24tbnVsbC4KLSAgICAv
LyBGSVhNRTogQ2xlYW4gdXAgdGhpcyBvbmUgb25jZSB0aGUgcmVuYW1pbmcgZnJvbSBXZWJGaWxl
U3lzdGVtIGlzIGRvbmUuCi0gICAgdmlydHVhbCBXZWJGaWxlVXRpbGl0aWVzKiBmaWxlVXRpbGl0
aWVzKCkgeyByZXR1cm4gZmlsZVN5c3RlbSgpOyB9CisgICAgdmlydHVhbCBXZWJGaWxlVXRpbGl0
aWVzKiBmaWxlVXRpbGl0aWVzKCkgeyByZXR1cm4gMDsgfQogCiAgICAgLy8gTWF5IHJldHVybiBu
dWxsIGlmIHNhbmRib3ggc3VwcG9ydCBpcyBub3QgbmVjZXNzYXJ5CiAgICAgdmlydHVhbCBXZWJT
YW5kYm94U3VwcG9ydCogc2FuZGJveFN1cHBvcnQoKSB7IHJldHVybiAwOyB9CkBAIC0yNjgsNiAr
MjYzLDExIEBAIHB1YmxpYzoKICAgICAvLyBNYXkgcmV0dXJuIG51bGwgaWYgaXQgZmFpbHMgdG8g
Y3JlYXRlIHRoZSBjb250ZXh0LgogICAgIHZpcnR1YWwgV2ViR0xFUzJDb250ZXh0KiBjcmVhdGVH
TEVTMkNvbnRleHQoKSB7IHJldHVybiAwOyB9CiAKKyAgICAvLyBGaWxlU3lzdGVtIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAg
IC8vIE11c3QgcmV0dXJuIG5vbi1udWxsLgorICAgIHZpcnR1YWwgV2ViRmlsZVN5c3RlbSogZmls
ZVN5c3RlbSgpIHsgcmV0dXJuIDA7IH0KKwogcHJvdGVjdGVkOgogICAgIH5XZWJLaXRDbGllbnQo
KSB7IH0KIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64741</attachid>
            <date>2010-08-18 11:23:22 -0700</date>
            <delta_ts>2010-08-18 18:30:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43151-20100818112321.patch</filename>
            <type>text/plain</type>
            <size>17425</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IGM1YjJhNWQ0NjdhMzc4ZDc0YTA2YmQyMDIxYzBiMmY0YzljNzQxNzMu
LjcwMGM4MWE2OGZhNzU0NTViZWM0Mjg4MDRlODhhOTY5ZTFjNDJiNzUgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDI0IEBACisyMDEwLTA4LTE3ICBLaW51a28gWWFzdWRhICA8a2ludWtvQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGQgV2ViS2l0IEFQSSBmb3IgRmlsZVN5c3RlbSBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQzMTUxCisKKyAgICAgICAgQWRkIGFzeW5jaHJv
bm91cyBGaWxlU3lzdGVtIGludGVyZmFjZSB0byBXZWJLaXQgQVBJIGZvcgorICAgICAgICBGaWxl
U3lzdGVtIEFQSS4KKyAgICAgICAgaHR0cDovL2Rldi53My5vcmcvMjAwOS9kYXAvZmlsZS1zeXN0
ZW0vZmlsZS1kaXItc3lzLmh0bWwKKworICAgICAgICAqIFdlYktpdC5neXA6CisgICAgICAgICog
cHVibGljL1dlYkZpbGVFbnRyeS5oOiBBZGRlZC4KKyAgICAgICAgKiBwdWJsaWMvV2ViRmlsZUVy
cm9yLmg6IEFkZGVkLgorICAgICAgICAqIHB1YmxpYy9XZWJGaWxlU3lzdGVtLmg6IEFkZGVkLgor
ICAgICAgICAqIHB1YmxpYy9XZWJGaWxlU3lzdGVtQ2FsbGJhY2tzLmg6IEFkZGVkLgorICAgICAg
ICAqIHB1YmxpYy9XZWJLaXRDbGllbnQuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViS2l0Q2xpZW50
OjpmaWxlU3lzdGVtKToKKyAgICAgICAgKiBwdWJsaWMvV2ViRnJhbWVDbGllbnQuaDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViRnJhbWVDbGllbnQ6Om9wZW5GaWxlU3lzdGVtKToKKwogMjAxMC0wOC0x
NyAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAg
VW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjY1NTE2LgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9t
aXVtL1dlYktpdC5neXAgYi9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCBjMzM4YjU5
MDQ5OTJmZDg2YzNlMDQ3MDZiZWVjNjBkZDU4NjY5ZWFkLi5kMjhjNTI5ZjE4ODVhMjY5YjczOTEx
YmFiMmJhY2EyZjg2MzcwYTI0IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5
cAorKysgYi9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtMTU2LDcgKzE1NiwxMCBAQAog
ICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRXZlbnRMaXN0ZW5lci5oJywKICAgICAgICAgICAg
ICAgICAncHVibGljL1dlYkZpbGVDaG9vc2VyQ29tcGxldGlvbi5oJywKICAgICAgICAgICAgICAg
ICAncHVibGljL1dlYkZpbGVDaG9vc2VyUGFyYW1zLmgnLAorICAgICAgICAgICAgICAgICdwdWJs
aWMvV2ViRmlsZUVudHJ5LmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRmlsZUVycm9y
LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRmlsZUluZm8uaCcsCisgICAgICAgICAg
ICAgICAgJ3B1YmxpYy9XZWJGaWxlU3lzdGVtQ2FsbGJhY2tzLmgnLAogICAgICAgICAgICAgICAg
ICdwdWJsaWMvV2ViRmlsZVN5c3RlbS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkZp
bGVVdGlsaXRpZXMuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJGaW5kT3B0aW9ucy5o
JywKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRmlsZUVudHJ5LmggYi9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZpbGVFbnRyeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBkNmI4MjVl
OWU4MWEzNmZkYTgzY2UzOGNiOTdhYzc1Y2I4YmYzZDgKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYkZpbGVFbnRyeS5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisg
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
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IFdlYkZpbGVFbnRyeV9oCisjZGVmaW5lIFdlYkZpbGVFbnRyeV9oCisKKyNpbmNsdWRlICJXZWJT
dHJpbmcuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0cnVjdCBXZWJGaWxlRW50cnkgewor
ICAgIFdlYkZpbGVFbnRyeSgpIDogaXNEaXJlY3RvcnkoZmFsc2UpIHsgfQorCisgICAgLy8gVGhl
IG5hbWUgb2YgdGhlIGVudHJ5LgorICAgIFdlYlN0cmluZyBuYW1lOworCisgICAgLy8gVGhpcyBm
bGFnIGluZGljYXRlcyBpZiB0aGUgZW50cnkgaXMgZGlyZWN0b3J5IG9yIG5vdC4KKyAgICBib29s
IGlzRGlyZWN0b3J5OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBX
ZWJGaWxlRW50cnlfaApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGaWxl
RXJyb3IuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRmlsZUVycm9yLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uY2ZlODg4MjBjMzQxYWIwMjRiYjBhYTA3ZjdiMDcwYjg3ODdhZjVmZAotLS0gL2Rldi9udWxs
CisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRmlsZUVycm9yLmgKQEAgLTAsMCArMSw1
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
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
CisjaWZuZGVmICAgV2ViRmlsZUVycm9yX2gKKyNkZWZpbmUgICBXZWJGaWxlRXJyb3JfaAorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworLy8gRmlsZS1yZWxhdGVkIGVycm9yIGNvZGUgZGVmaW5lZCBp
biBIVE1MNSBGaWxlIEFQSS4KK2VudW0gV2ViRmlsZUVycm9yIHsKKyAgICBXZWJGaWxlRXJyb3JO
b01vZGlmaWNhdGlvbkFsbG93ZWQgPSA3LAorICAgIFdlYkZpbGVFcnJvck5vdEZvdW5kID0gOCwK
KyAgICBXZWJGaWxlRXJyb3JJbnZhbGlkU3RhdGUgPSAxMSwKKyAgICBXZWJGaWxlRXJyb3JJbnZh
bGlkTW9kaWZpY2F0aW9uID0gMTMsCisgICAgV2ViRmlsZUVycm9yU2VjdXJpdHkgPSAxOCwKKyAg
ICBXZWJGaWxlRXJyb3JBYm9ydCA9IDIwLAorICAgIFdlYkZpbGVFcnJvclF1b3RhRXhjZWVkZWQg
PSAyMiwKKyAgICBXZWJGaWxlRXJyb3JOb3RSZWFkYWJsZSA9IDI0LAorICAgIFdlYkZpbGVFcnJv
ckVuY29kaW5nID0gMjYsCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZpbGVTeXN0ZW0uaCBiL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViRmlsZVN5c3RlbS5oCmluZGV4IGE5MTEwNmU4MTlmN2ZlNzRi
NDAwYzYwNjlkYjVjYjdlNWQ1ZGEwODYuLjY0MWMxNjk2MmYyYWZkYmNkZDcwNzUwN2Q5M2JiODgw
NjU2NDkyYmUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRmlsZVN5c3Rl
bS5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRmlsZVN5c3RlbS5oCkBAIC0zMSwx
MiArMzEsNzcgQEAKICNpZm5kZWYgV2ViRmlsZVN5c3RlbV9oCiAjZGVmaW5lIFdlYkZpbGVTeXN0
ZW1faAogCi0jaW5jbHVkZSAiV2ViRmlsZVV0aWxpdGllcy5oIgorI2luY2x1ZGUgIldlYkNvbW1v
bi5oIgorI2luY2x1ZGUgIldlYlN0cmluZy5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotLy8g
RklYTUU6IENsZWFuIHVwIHRoaXMgY2xhc3Mgb25jZSB0aGUgcmVuYW1pbmcgdG8gV2ViRmlsZVV0
aWxpdGllcyBpcyBkb25lLgotY2xhc3MgV2ViRmlsZVN5c3RlbSA6IHB1YmxpYyBXZWJGaWxlVXRp
bGl0aWVzIHsKK2NsYXNzIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3M7CisKK2NsYXNzIFdlYkZpbGVT
eXN0ZW0geworcHVibGljOgorICAgIGVudW0gVHlwZSB7CisgICAgICAgIFR5cGVUZW1wb3Jhcnks
CisgICAgICAgIFR5cGVQZXJzaXN0ZW50LAorICAgIH07CisKKyAgICAvLyBNb3ZlcyBhIGZpbGUg
b3IgZGlyZWN0b3J5IGF0IHxzcmNQYXRofCB0byB8ZGVzdFBhdGh8LgorICAgIC8vIFdlYkZpbGVT
eXN0ZW1DYWxsYmFja3M6OmRpZFN1Y2NlZWQoKSBtdXN0IGJlIGNhbGxlZCB3aGVuIHRoZSBvcGVy
YXRpb24gaXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseS4KKyAgICAvLyBXZWJGaWxlU3lzdGVtQ2Fs
bGJhY2tzOjpkaWRGYWlsKCkgbXVzdCBiZSBjYWxsZWQgb3RoZXJ3aXNlLgorICAgIHZpcnR1YWwg
dm9pZCBtb3ZlKGNvbnN0IFdlYlN0cmluZyYgc3JjUGF0aCwgY29uc3QgV2ViU3RyaW5nJiBkZXN0
UGF0aCwgV2ViRmlsZVN5c3RlbUNhbGxiYWNrcyopIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOyB9CisKKyAgICAvLyBDb3BpZXMgYSBmaWxlIG9yIGRpcmVjdG9yeSBhdCB8c3JjUGF0aHwg
dG8gfGRlc3RQYXRofC4KKyAgICAvLyBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzOjpkaWRTdWNjZWVk
KCkgbXVzdCBiZSBjYWxsZWQgd2hlbiB0aGUgb3BlcmF0aW9uIGlzIGNvbXBsZXRlZCBzdWNjZXNz
ZnVsbHkuCisgICAgLy8gV2ViRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkRmFpbCgpIG11c3QgYmUg
Y2FsbGVkIG90aGVyd2lzZS4KKyAgICB2aXJ0dWFsIHZvaWQgY29weShjb25zdCBXZWJTdHJpbmcm
IHNyY1BhdGgsIGNvbnN0IFdlYlN0cmluZyYgZGVzdFBhdGgsIFdlYkZpbGVTeXN0ZW1DYWxsYmFj
a3MqKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorCisgICAgLy8gRGVsZXRlcyBh
IGZpbGUgb3IgZGlyZWN0b3J5IGF0IGEgZ2l2ZW4gfHBhdGh8LgorICAgIC8vIFdlYkZpbGVTeXN0
ZW1DYWxsYmFja3M6OmRpZFN1Y2NlZWQoKSBtdXN0IGJlIGNhbGxlZCB3aGVuIHRoZSBvcGVyYXRp
b24gaXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseS4KKyAgICAvLyBXZWJGaWxlU3lzdGVtQ2FsbGJh
Y2tzOjpkaWRGYWlsKCkgbXVzdCBiZSBjYWxsZWQgb3RoZXJ3aXNlLgorICAgIHZpcnR1YWwgdm9p
ZCByZW1vdmUoY29uc3QgV2ViU3RyaW5nJiBwYXRoLCBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzKikg
eyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKworICAgIC8vIFJldHJpZXZlcyB0aGUg
bWV0YWRhdGEgaW5mb3JtYXRpb24gb2YgdGhlIGZpbGUgb3IgZGlyZWN0b3J5IGF0IHRoZSBnaXZl
biB8cGF0aHwuCisgICAgLy8gV2ViRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkUmVhZE1ldGFkYXRh
KCkgbXVzdCBiZSBjYWxsZWQgd2l0aCBhIHZhbGlkIG1ldGFkYXRhIHdoZW4gdGhlIHJldHJpZXZh
bCBpcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LgorICAgIC8vIFdlYkZpbGVTeXN0ZW1DYWxsYmFj
a3M6OmRpZEZhaWwoKSBtdXN0IGJlIGNhbGxlZCBvdGhlcndpc2UuCisgICAgdmlydHVhbCB2b2lk
IHJlYWRNZXRhZGF0YShjb25zdCBXZWJTdHJpbmcmIHBhdGgsIFdlYkZpbGVTeXN0ZW1DYWxsYmFj
a3MqKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorCisgICAgLy8gQ3JlYXRlcyBh
IGZpbGUgYXQgZ2l2ZW4gfHBhdGh8LgorICAgIC8vIElmIHRoZSB8cGF0aHwgZG9lc24ndCBleGlz
dCwgaXQgY3JlYXRlcyBhIG5ldyBmaWxlIGF0IHxwYXRofC4KKyAgICAvLyBJZiB8ZXhjbHVzaXZl
fCBpcyB0cnVlLCBpdCBmYWlscyBpZiB0aGUgfHBhdGh8IGFscmVhZHkgZXhpc3RzLgorICAgIC8v
IElmIHxleGNsdXNpdmV8IGlzIGZhbHNlLCBpdCBzdWNjZWVkcyBpZiB0aGUgfHBhdGh8IGFscmVh
ZHkgZXhpc3RzIG9yCisgICAgLy8gaXQgaGFzIHN1Y2Nlc3NmdWxseSBjcmVhdGVkIGEgbmV3IGZp
bGUgYXQgfHBhdGh8LgorICAgIC8vCisgICAgLy8gV2ViRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlk
U3VjY2VlZCgpIG11c3QgYmUgY2FsbGVkIHdoZW4gdGhlIG9wZXJhdGlvbiBpcyBjb21wbGV0ZWQg
c3VjY2Vzc2Z1bGx5LgorICAgIC8vIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZEZhaWwoKSBt
dXN0IGJlIGNhbGxlZCBvdGhlcndpc2UuCisgICAgdmlydHVhbCB2b2lkIGNyZWF0ZUZpbGUoY29u
c3QgV2ViU3RyaW5nJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgV2ViRmlsZVN5c3RlbUNhbGxiYWNr
cyopIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisKKyAgICAvLyBDcmVhdGVzIGEg
ZGlyZWN0b3J5IGF0IGEgZ2l2ZW4gfHBhdGh8LgorICAgIC8vIElmIHRoZSB8cGF0aHwgZG9lc24n
dCBleGlzdCwgaXQgY3JlYXRlcyBhIG5ldyBkaXJlY3RvcnkgYXQgfHBhdGh8LgorICAgIC8vIElm
IHxleGNsdXNpdmV8IGlzIHRydWUsIGl0IGZhaWxzIGlmIHRoZSB8cGF0aHwgYWxyZWFkeSBleGlz
dHMuCisgICAgLy8gSWYgfGV4Y2x1c2l2ZXwgaXMgZmFsc2UsIGl0IHN1Y2NlZWRzIGlmIHRoZSB8
cGF0aHwgYWxyZWFkeSBleGlzdHMgb3IgaXQgaGFzIHN1Y2Nlc3NmdWxseSBjcmVhdGVkIGEgbmV3
IGRpcmVjdG9yeSBhdCB8cGF0aHwuCisgICAgLy8KKyAgICAvLyBXZWJGaWxlU3lzdGVtQ2FsbGJh
Y2tzOjpkaWRTdWNjZWVkKCkgbXVzdCBiZSBjYWxsZWQgd2hlbgorICAgIC8vIHRoZSBvcGVyYXRp
b24gaXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseS4KKyAgICAvLyBXZWJGaWxlU3lzdGVtQ2FsbGJh
Y2tzOjpkaWRGYWlsKCkgbXVzdCBiZSBjYWxsZWQgb3RoZXJ3aXNlLgorICAgIHZpcnR1YWwgdm9p
ZCBjcmVhdGVEaXJlY3RvcnkoY29uc3QgV2ViU3RyaW5nJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwg
V2ViRmlsZVN5c3RlbUNhbGxiYWNrcyopIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9
CisKKyAgICAvLyBDaGVja3MgaWYgYSBmaWxlIGV4aXN0cyBhdCBhIGdpdmVuIHxwYXRofC4KKyAg
ICAvLyBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzOjpkaWRTdWNjZWVkKCkgbXVzdCBiZSBjYWxsZWQg
d2hlbiB0aGUgb3BlcmF0aW9uIGlzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuCisgICAgLy8gV2Vi
RmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkRmFpbCgpIG11c3QgYmUgY2FsbGVkIG90aGVyd2lzZS4K
KyAgICB2aXJ0dWFsIHZvaWQgZmlsZUV4aXN0cyhjb25zdCBXZWJTdHJpbmcmIHBhdGgsIFdlYkZp
bGVTeXN0ZW1DYWxsYmFja3MqKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorCisg
ICAgLy8gQ2hlY2tzIGlmIGEgZGlyZWN0b3J5IGV4aXN0cyBhdCBhIGdpdmVuIHxwYXRofC4KKyAg
ICAvLyBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzOjpkaWRTdWNjZWVkKCkgbXVzdCBiZSBjYWxsZWQg
d2hlbiB0aGUgb3BlcmF0aW9uIGlzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuCisgICAgLy8gV2Vi
RmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkRmFpbCgpIG11c3QgYmUgY2FsbGVkIG90aGVyd2lzZS4K
KyAgICB2aXJ0dWFsIHZvaWQgZGlyZWN0b3J5RXhpc3RzKGNvbnN0IFdlYlN0cmluZyYgcGF0aCwg
V2ViRmlsZVN5c3RlbUNhbGxiYWNrcyopIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9
CisKKyAgICAvLyBSZWFkcyBkaXJlY3RvcnkgZW50cmllcyBvZiBhIGdpdmVuIGRpcmVjdG9yeSBh
dCB8cGF0aHwuCisgICAgLy8gV2ViRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkUmVhZERpcmVjdG9y
eSgpIG11c3QgYmUgY2FsbGVkIHdoZW4gdGhlIG9wZXJhdGlvbiBpcyBjb21wbGV0ZWQgc3VjY2Vz
c2Z1bGx5LgorICAgIC8vIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZEZhaWwoKSBtdXN0IGJl
IGNhbGxlZCBvdGhlcndpc2UuCisgICAgdmlydHVhbCB2b2lkIHJlYWREaXJlY3RvcnkoY29uc3Qg
V2ViU3RyaW5nJiBwYXRoLCBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzKikgeyBXRUJLSVRfQVNTRVJU
X05PVF9SRUFDSEVEKCk7IH0KKworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgfldlYkZpbGVTeXN0
ZW0oKSB7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJGaWxlU3lzdGVtQ2FsbGJhY2tzLmggYi9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYkZpbGVTeXN0ZW1DYWxsYmFja3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZjY4ZjgxNDAx
NDkzNzM1NTdlOTUxMTUxMjJhMjEzMzFkMThlNmFmCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJGaWxlU3lzdGVtQ2FsbGJhY2tzLmgKQEAgLTAsMCArMSw3MyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgICBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzX2gKKyNkZWZpbmUgICBXZWJGaWxlU3lz
dGVtQ2FsbGJhY2tzX2gKKworI2luY2x1ZGUgIldlYkZpbGVFbnRyeS5oIgorI2luY2x1ZGUgIldl
YkZpbGVFcnJvci5oIgorI2luY2x1ZGUgIldlYlZlY3Rvci5oIgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworY2xhc3MgV2ViU3RyaW5nOworc3RydWN0IFdlYkZpbGVJbmZvOworCitjbGFzcyBXZWJG
aWxlU3lzdGVtQ2FsbGJhY2tzIHsKK3B1YmxpYzoKKyAgICAvLyBDYWxsYmFjayBmb3IgV2ViRmls
ZVN5c3RlbSdzIHZhcmlvdXMgb3BlcmF0aW9ucyB0aGF0IGRvbid0IHJlcXVpcmUKKyAgICAvLyBy
ZXR1cm4gdmFsdWVzLgorICAgIHZpcnR1YWwgdm9pZCBkaWRTdWNjZWVkKCkgPSAwOworCisgICAg
Ly8gQ2FsbGJhY2sgZm9yIFdlYkZpbGVTeXN0ZW06OnJlYWRNZXRhZGF0YS4gQ2FsbGVkIHdpdGgg
dGhlIGZpbGUgbWV0YWRhdGEKKyAgICAvLyBmb3IgdGhlIHJlcXVlc3RlZCBwYXRoLgorICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWFkTWV0YWRhdGEoY29uc3QgV2ViRmlsZUluZm8mKSA9IDA7CisKKyAg
ICAvLyBDYWxsYmFjayBmb3IgV2ViRmlsZVN5c3RlbTo6cmVhZERpcmVjdG9yeS4gIENhbGxlZCB3
aXRoIGEgdmVjdG9yIG9mCisgICAgLy8gZmlsZSBlbnRyaWVzIGluIHRoZSByZXF1ZXN0ZWQgZGly
ZWN0b3J5LiBUaGlzIGNhbGxiYWNrIG1pZ2h0IGJlIGNhbGxlZAorICAgIC8vIG11bHRpcGxlIHRp
bWVzIGlmIHRoZSBkaXJlY3RvcnkgaGFzIG1hbnkgZW50cmllcy4gfGhhc01vcmV8IG11c3QgYmUK
KyAgICAvLyB0cnVlIHdoZW4gdGhlcmUgYXJlIG1vcmUgZW50cmllcy4KKyAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVhZERpcmVjdG9yeShjb25zdCBXZWJWZWN0b3I8V2ViRmlsZUVudHJ5PiYsIGJvb2wg
aGFzTW9yZSkgPSAwOworCisgICAgLy8gQ2FsbGJhY2sgZm9yIFdlYkZyYW1lQ2xpZW50OjpvcGVu
RmlsZVN5c3RlbS4gQ2FsbGVkIHdpdGggYSBuYW1lIGFuZAorICAgIC8vIHJvb3QgcGF0aCBmb3Ig
dGhlIEZpbGVTeXN0ZW0gd2hlbiB0aGUgcmVxdWVzdCBpcyBhY2NlcHRlZC4KKyAgICB2aXJ0dWFs
IHZvaWQgZGlkT3BlbkZpbGVTeXN0ZW0oY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJT
dHJpbmcmIHJvb3RQYXRoKSA9IDA7CisKKyAgICAvLyBDYWxsZWQgd2l0aCBhbiBlcnJvciBjb2Rl
IHdoZW4gYSByZXF1ZXN0ZWQgb3BlcmF0aW9uIGhhc24ndCBiZWVuCisgICAgLy8gY29tcGxldGVk
LgorICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKFdlYkZpbGVFcnJvcikgPSAwOworCitwcm90ZWN0
ZWQ6CisgICAgdmlydHVhbCB+V2ViRmlsZVN5c3RlbUNhbGxiYWNrcygpIHt9Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkZyYW1lQ2xpZW50LmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1l
Q2xpZW50LmgKaW5kZXggMmI3ZWUwZDMwN2NhYWUyZTA4MDI0MzY2MTAzZDFiYjliN2Q3NTFkZi4u
Y2QxZjZjMjE5MjI1MDBiN2ZiMzNjODY5OWZkNjY1Y2RlNzE4NTVjNiAxMDA2NDQKLS0tIGEvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oCisrKyBiL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQuaApAQCAtMzIsNiArMzIsNyBAQAogI2RlZmluZSBXZWJG
cmFtZUNsaWVudF9oCiAKICNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJGaWxl
U3lzdGVtLmgiCiAjaW5jbHVkZSAiV2ViTmF2aWdhdGlvblBvbGljeS5oIgogI2luY2x1ZGUgIldl
Yk5hdmlnYXRpb25UeXBlLmgiCiAjaW5jbHVkZSAiV2ViVVJMRXJyb3IuaCIKQEAgLTQyLDYgKzQz
LDcgQEAgY2xhc3MgV2ViQXBwbGljYXRpb25DYWNoZUhvc3Q7CiBjbGFzcyBXZWJBcHBsaWNhdGlv
bkNhY2hlSG9zdENsaWVudDsKIGNsYXNzIFdlYkNvb2tpZUphcjsKIGNsYXNzIFdlYkRhdGFTb3Vy
Y2U7CitjbGFzcyBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzOwogY2xhc3MgV2ViRm9ybUVsZW1lbnQ7
CiBjbGFzcyBXZWJGcmFtZTsKIGNsYXNzIFdlYk1lZGlhUGxheWVyOwpAQCAtMzI3LDYgKzMyOSwx
OSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlcG9ydEZpbmRJblBhZ2VTZWxlY3Rpb24o
CiAgICAgICAgIGludCBpZGVudGlmaWVyLCBpbnQgYWN0aXZlTWF0Y2hPcmRpbmFsLCBjb25zdCBX
ZWJSZWN0JiBzZWxlY3Rpb24pIHsgfQogCisgICAgLy8gRmlsZVN5c3RlbSAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvLyBSZXF1ZXN0
cyB0byBvcGVuIGEgRmlsZVN5c3RlbS4KKyAgICAvLyB8c2l6ZXwgaW5kaWNhdGVzIGhvdyBtdWNo
IHN0b3JhZ2Ugc3BhY2UgKGluIGJ5dGVzKSB0aGUgY2FsbGVyIGV4cGVjdHMKKyAgICAvLyB0byBu
ZWVkLgorICAgIC8vIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZE9wZW5GaWxlU3lzdGVtKCkg
bXVzdCBiZSBjYWxsZWQgd2l0aAorICAgIC8vIGEgbmFtZSBhbmQgcm9vdCBwYXRoIGZvciB0aGUg
cmVxdWVzdGVkIEZpbGVTeXN0ZW0gd2hlbiB0aGUgb3BlcmF0aW9uCisgICAgLy8gaXMgY29tcGxl
dGVkIHN1Y2Nlc3NmdWxseS4gV2ViRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkRmFpbCgpIG11c3Qg
YmUKKyAgICAvLyBjYWxsZWQgb3RoZXJ3aXNlLgorICAgIHZpcnR1YWwgdm9pZCBvcGVuRmlsZVN5
c3RlbSgKKyAgICAgICAgV2ViRnJhbWUqLCBXZWJGaWxlU3lzdGVtOjpUeXBlLCBsb25nIGxvbmcg
c2l6ZSwKKyAgICAgICAgV2ViRmlsZVN5c3RlbUNhbGxiYWNrcyopIHsgfQorCiBwcm90ZWN0ZWQ6
CiAgICAgfldlYkZyYW1lQ2xpZW50KCkgeyB9CiB9OwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJLaXRDbGllbnQuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViS2l0
Q2xpZW50LmgKaW5kZXggNDEwNDE3NTA3NTEzNzJjZjJmOWVhZjA5NGNkYWJhOGUwNTJiZmFhZC4u
NjlhZGFkMDY1MWI5YjBhZTdjZmQyOWE5ZmJkZjI1MmFkNDJlNmJmOCAxMDA2NDQKLS0tIGEvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJLaXRDbGllbnQuaAorKysgYi9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYktpdENsaWVudC5oCkBAIC0zMyw3ICszMyw2IEBACiAKICNpbmNsdWRlICJXZWJD
b21tb24uaCIKICNpbmNsdWRlICJXZWJEYXRhLmgiCi0jaW5jbHVkZSAiV2ViRmlsZVN5c3RlbS5o
IgogI2luY2x1ZGUgIldlYkxvY2FsaXplZFN0cmluZy5oIgogI2luY2x1ZGUgIldlYlN0cmluZy5o
IgogI2luY2x1ZGUgIldlYlVSTC5oIgpAQCAtNTAsNiArNDksNyBAQCBjbGFzcyBXZWJBcHBsaWNh
dGlvbkNhY2hlSG9zdDsKIGNsYXNzIFdlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0Q2xpZW50OwogY2xh
c3MgV2ViQ2xpcGJvYXJkOwogY2xhc3MgV2ViQ29va2llSmFyOworY2xhc3MgV2ViRmlsZVN5c3Rl
bTsKIGNsYXNzIFdlYkZpbGVVdGlsaXRpZXM7CiBjbGFzcyBXZWJHTEVTMkNvbnRleHQ7CiBjbGFz
cyBXZWJHcmFwaGljc0NvbnRleHQzRDsKQEAgLTczLDEyICs3Myw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIFdlYk1pbWVSZWdpc3RyeSogbWltZVJlZ2lzdHJ5KCkgeyByZXR1cm4gMDsgfQogCiAg
ICAgLy8gTXVzdCByZXR1cm4gbm9uLW51bGwuCi0gICAgLy8gRklYTUU6IENsZWFuIHVwIHRoaXMg
b25lIG9uY2UgdGhlIHJlbmFtaW5nIHRvIFdlYkZpbGVVdGlsaXRpZXMgaXMgZG9uZS4KLSAgICB2
aXJ0dWFsIFdlYkZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0oKSB7IHJldHVybiAwOyB9Ci0KLSAgICAv
LyBNdXN0IHJldHVybiBub24tbnVsbC4KLSAgICAvLyBGSVhNRTogQ2xlYW4gdXAgdGhpcyBvbmUg
b25jZSB0aGUgcmVuYW1pbmcgZnJvbSBXZWJGaWxlU3lzdGVtIGlzIGRvbmUuCi0gICAgdmlydHVh
bCBXZWJGaWxlVXRpbGl0aWVzKiBmaWxlVXRpbGl0aWVzKCkgeyByZXR1cm4gZmlsZVN5c3RlbSgp
OyB9CisgICAgdmlydHVhbCBXZWJGaWxlVXRpbGl0aWVzKiBmaWxlVXRpbGl0aWVzKCkgeyByZXR1
cm4gMDsgfQogCiAgICAgLy8gTWF5IHJldHVybiBudWxsIGlmIHNhbmRib3ggc3VwcG9ydCBpcyBu
b3QgbmVjZXNzYXJ5CiAgICAgdmlydHVhbCBXZWJTYW5kYm94U3VwcG9ydCogc2FuZGJveFN1cHBv
cnQoKSB7IHJldHVybiAwOyB9CkBAIC0yNjgsNiArMjYzLDExIEBAIHB1YmxpYzoKICAgICAvLyBN
YXkgcmV0dXJuIG51bGwgaWYgaXQgZmFpbHMgdG8gY3JlYXRlIHRoZSBjb250ZXh0LgogICAgIHZp
cnR1YWwgV2ViR0xFUzJDb250ZXh0KiBjcmVhdGVHTEVTMkNvbnRleHQoKSB7IHJldHVybiAwOyB9
CiAKKyAgICAvLyBGaWxlU3lzdGVtIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8vIE11c3QgcmV0dXJuIG5vbi1udWxsLgor
ICAgIHZpcnR1YWwgV2ViRmlsZVN5c3RlbSogZmlsZVN5c3RlbSgpIHsgcmV0dXJuIDA7IH0KKwog
cHJvdGVjdGVkOgogICAgIH5XZWJLaXRDbGllbnQoKSB7IH0KIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64797</attachid>
            <date>2010-08-18 18:30:52 -0700</date>
            <delta_ts>2010-08-18 22:14:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43151-20100818183050.patch</filename>
            <type>text/plain</type>
            <size>17420</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IDBhMDc3MzM4MzU3NjM1ZGExZmRlN2MzZmQyY2E5MzdkMTI4NDY1NDku
LjE1ZjAwYTlkZjBkYmZiMDI3YTMxOTRkNzUxZDI0MDQyNDJiZDA3YjggMTAwNjQ0Ci0tLSBhL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDI0IEBACisyMDEwLTA4LTE3ICBLaW51a28gWWFzdWRhICA8a2ludWtvQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGQgV2ViS2l0IEFQSSBmb3IgRmlsZVN5c3RlbSBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQzMTUxCisKKyAgICAgICAgQWRkIGFzeW5jaHJv
bm91cyBGaWxlU3lzdGVtIGludGVyZmFjZSB0byBXZWJLaXQgQVBJIGZvcgorICAgICAgICBGaWxl
U3lzdGVtIEFQSS4KKyAgICAgICAgaHR0cDovL2Rldi53My5vcmcvMjAwOS9kYXAvZmlsZS1zeXN0
ZW0vZmlsZS1kaXItc3lzLmh0bWwKKworICAgICAgICAqIFdlYktpdC5neXA6CisgICAgICAgICog
cHVibGljL1dlYkZpbGVFbnRyeS5oOiBBZGRlZC4KKyAgICAgICAgKiBwdWJsaWMvV2ViRmlsZUVy
cm9yLmg6IEFkZGVkLgorICAgICAgICAqIHB1YmxpYy9XZWJGaWxlU3lzdGVtLmg6IEFkZGVkLgor
ICAgICAgICAqIHB1YmxpYy9XZWJGaWxlU3lzdGVtQ2FsbGJhY2tzLmg6IEFkZGVkLgorICAgICAg
ICAqIHB1YmxpYy9XZWJLaXRDbGllbnQuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViS2l0Q2xpZW50
OjpmaWxlU3lzdGVtKToKKyAgICAgICAgKiBwdWJsaWMvV2ViRnJhbWVDbGllbnQuaDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViRnJhbWVDbGllbnQ6Om9wZW5GaWxlU3lzdGVtKToKKwogMjAxMC0wOC0x
NyAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgWXVyeSBTZW1pa2hhdHNreS4KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9X
ZWJLaXQuZ3lwIGIvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKaW5kZXggZDEyYmVlNzBlMGM2
Y2YwMjk4OGY4YjUwNjE3ZGY4MTAzMThhYWNjNi4uOTI0MDNhZmNlYjMwMjNjMzgwMzc3MmVmNzNl
MDc3NzYzZWRhNzI0YSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKKysr
IGIvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTE1Niw3ICsxNTYsMTAgQEAKICAgICAg
ICAgICAgICAgICAncHVibGljL1dlYkV2ZW50TGlzdGVuZXIuaCcsCiAgICAgICAgICAgICAgICAg
J3B1YmxpYy9XZWJGaWxlQ2hvb3NlckNvbXBsZXRpb24uaCcsCiAgICAgICAgICAgICAgICAgJ3B1
YmxpYy9XZWJGaWxlQ2hvb3NlclBhcmFtcy5oJywKKyAgICAgICAgICAgICAgICAncHVibGljL1dl
YkZpbGVFbnRyeS5oJywKKyAgICAgICAgICAgICAgICAncHVibGljL1dlYkZpbGVFcnJvci5oJywK
ICAgICAgICAgICAgICAgICAncHVibGljL1dlYkZpbGVJbmZvLmgnLAorICAgICAgICAgICAgICAg
ICdwdWJsaWMvV2ViRmlsZVN5c3RlbUNhbGxiYWNrcy5oJywKICAgICAgICAgICAgICAgICAncHVi
bGljL1dlYkZpbGVTeXN0ZW0uaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJGaWxlVXRp
bGl0aWVzLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRmluZE9wdGlvbnMuaCcsCmRp
ZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZpbGVFbnRyeS5oIGIvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJGaWxlRW50cnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZDZiODI1ZTllODFh
MzZmZGE4M2NlMzhjYjk3YWM3NWNiOGJmM2Q4Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJGaWxlRW50cnkuaApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29w
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
aWxlRW50cnlfaAorI2RlZmluZSBXZWJGaWxlRW50cnlfaAorCisjaW5jbHVkZSAiV2ViU3RyaW5n
LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdHJ1Y3QgV2ViRmlsZUVudHJ5IHsKKyAgICBX
ZWJGaWxlRW50cnkoKSA6IGlzRGlyZWN0b3J5KGZhbHNlKSB7IH0KKworICAgIC8vIFRoZSBuYW1l
IG9mIHRoZSBlbnRyeS4KKyAgICBXZWJTdHJpbmcgbmFtZTsKKworICAgIC8vIFRoaXMgZmxhZyBp
bmRpY2F0ZXMgaWYgdGhlIGVudHJ5IGlzIGRpcmVjdG9yeSBvciBub3QuCisgICAgYm9vbCBpc0Rp
cmVjdG9yeTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViRmls
ZUVudHJ5X2gKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRmlsZUVycm9y
LmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZpbGVFcnJvci5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNm
ZTg4ODIwYzM0MWFiMDI0YmIwYWEwN2Y3YjA3MGI4Nzg3YWY1ZmQKLS0tIC9kZXYvbnVsbAorKysg
Yi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZpbGVFcnJvci5oCkBAIC0wLDAgKzEsNTAgQEAK
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
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworI2lm
bmRlZiAgIFdlYkZpbGVFcnJvcl9oCisjZGVmaW5lICAgV2ViRmlsZUVycm9yX2gKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKKy8vIEZpbGUtcmVsYXRlZCBlcnJvciBjb2RlIGRlZmluZWQgaW4gSFRN
TDUgRmlsZSBBUEkuCitlbnVtIFdlYkZpbGVFcnJvciB7CisgICAgV2ViRmlsZUVycm9yTm9Nb2Rp
ZmljYXRpb25BbGxvd2VkID0gNywKKyAgICBXZWJGaWxlRXJyb3JOb3RGb3VuZCA9IDgsCisgICAg
V2ViRmlsZUVycm9ySW52YWxpZFN0YXRlID0gMTEsCisgICAgV2ViRmlsZUVycm9ySW52YWxpZE1v
ZGlmaWNhdGlvbiA9IDEzLAorICAgIFdlYkZpbGVFcnJvclNlY3VyaXR5ID0gMTgsCisgICAgV2Vi
RmlsZUVycm9yQWJvcnQgPSAyMCwKKyAgICBXZWJGaWxlRXJyb3JRdW90YUV4Y2VlZGVkID0gMjIs
CisgICAgV2ViRmlsZUVycm9yTm90UmVhZGFibGUgPSAyNCwKKyAgICBXZWJGaWxlRXJyb3JFbmNv
ZGluZyA9IDI2LAorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGaWxlU3lzdGVtLmggYi9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYkZpbGVTeXN0ZW0uaAppbmRleCBhOTExMDZlODE5ZjdmZTc0YjQwMGM2
MDY5ZGI1Y2I3ZTVkNWRhMDg2Li42NDFjMTY5NjJmMmFmZGJjZGQ3MDc1MDdkOTNiYjg4MDY1NjQ5
MmJlIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZpbGVTeXN0ZW0uaAor
KysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZpbGVTeXN0ZW0uaApAQCAtMzEsMTIgKzMx
LDc3IEBACiAjaWZuZGVmIFdlYkZpbGVTeXN0ZW1faAogI2RlZmluZSBXZWJGaWxlU3lzdGVtX2gK
IAotI2luY2x1ZGUgIldlYkZpbGVVdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJXZWJDb21tb24uaCIK
KyNpbmNsdWRlICJXZWJTdHJpbmcuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLS8vIEZJWE1F
OiBDbGVhbiB1cCB0aGlzIGNsYXNzIG9uY2UgdGhlIHJlbmFtaW5nIHRvIFdlYkZpbGVVdGlsaXRp
ZXMgaXMgZG9uZS4KLWNsYXNzIFdlYkZpbGVTeXN0ZW0gOiBwdWJsaWMgV2ViRmlsZVV0aWxpdGll
cyB7CitjbGFzcyBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzOworCitjbGFzcyBXZWJGaWxlU3lzdGVt
IHsKK3B1YmxpYzoKKyAgICBlbnVtIFR5cGUgeworICAgICAgICBUeXBlVGVtcG9yYXJ5LAorICAg
ICAgICBUeXBlUGVyc2lzdGVudCwKKyAgICB9OworCisgICAgLy8gTW92ZXMgYSBmaWxlIG9yIGRp
cmVjdG9yeSBhdCB8c3JjUGF0aHwgdG8gfGRlc3RQYXRofC4KKyAgICAvLyBXZWJGaWxlU3lzdGVt
Q2FsbGJhY2tzOjpkaWRTdWNjZWVkKCkgbXVzdCBiZSBjYWxsZWQgd2hlbiB0aGUgb3BlcmF0aW9u
IGlzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuCisgICAgLy8gV2ViRmlsZVN5c3RlbUNhbGxiYWNr
czo6ZGlkRmFpbCgpIG11c3QgYmUgY2FsbGVkIG90aGVyd2lzZS4KKyAgICB2aXJ0dWFsIHZvaWQg
bW92ZShjb25zdCBXZWJTdHJpbmcmIHNyY1BhdGgsIGNvbnN0IFdlYlN0cmluZyYgZGVzdFBhdGgs
IFdlYkZpbGVTeXN0ZW1DYWxsYmFja3MqKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsg
fQorCisgICAgLy8gQ29waWVzIGEgZmlsZSBvciBkaXJlY3RvcnkgYXQgfHNyY1BhdGh8IHRvIHxk
ZXN0UGF0aHwuCisgICAgLy8gV2ViRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkU3VjY2VlZCgpIG11
c3QgYmUgY2FsbGVkIHdoZW4gdGhlIG9wZXJhdGlvbiBpcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5
LgorICAgIC8vIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZEZhaWwoKSBtdXN0IGJlIGNhbGxl
ZCBvdGhlcndpc2UuCisgICAgdmlydHVhbCB2b2lkIGNvcHkoY29uc3QgV2ViU3RyaW5nJiBzcmNQ
YXRoLCBjb25zdCBXZWJTdHJpbmcmIGRlc3RQYXRoLCBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzKikg
eyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKworICAgIC8vIERlbGV0ZXMgYSBmaWxl
IG9yIGRpcmVjdG9yeSBhdCBhIGdpdmVuIHxwYXRofC4KKyAgICAvLyBXZWJGaWxlU3lzdGVtQ2Fs
bGJhY2tzOjpkaWRTdWNjZWVkKCkgbXVzdCBiZSBjYWxsZWQgd2hlbiB0aGUgb3BlcmF0aW9uIGlz
IGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuCisgICAgLy8gV2ViRmlsZVN5c3RlbUNhbGxiYWNrczo6
ZGlkRmFpbCgpIG11c3QgYmUgY2FsbGVkIG90aGVyd2lzZS4KKyAgICB2aXJ0dWFsIHZvaWQgcmVt
b3ZlKGNvbnN0IFdlYlN0cmluZyYgcGF0aCwgV2ViRmlsZVN5c3RlbUNhbGxiYWNrcyopIHsgV0VC
S0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisKKyAgICAvLyBSZXRyaWV2ZXMgdGhlIG1ldGFk
YXRhIGluZm9ybWF0aW9uIG9mIHRoZSBmaWxlIG9yIGRpcmVjdG9yeSBhdCB0aGUgZ2l2ZW4gfHBh
dGh8LgorICAgIC8vIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZFJlYWRNZXRhZGF0YSgpIG11
c3QgYmUgY2FsbGVkIHdpdGggYSB2YWxpZCBtZXRhZGF0YSB3aGVuIHRoZSByZXRyaWV2YWwgaXMg
Y29tcGxldGVkIHN1Y2Nlc3NmdWxseS4KKyAgICAvLyBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzOjpk
aWRGYWlsKCkgbXVzdCBiZSBjYWxsZWQgb3RoZXJ3aXNlLgorICAgIHZpcnR1YWwgdm9pZCByZWFk
TWV0YWRhdGEoY29uc3QgV2ViU3RyaW5nJiBwYXRoLCBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzKikg
eyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKworICAgIC8vIENyZWF0ZXMgYSBmaWxl
IGF0IGdpdmVuIHxwYXRofC4KKyAgICAvLyBJZiB0aGUgfHBhdGh8IGRvZXNuJ3QgZXhpc3QsIGl0
IGNyZWF0ZXMgYSBuZXcgZmlsZSBhdCB8cGF0aHwuCisgICAgLy8gSWYgfGV4Y2x1c2l2ZXwgaXMg
dHJ1ZSwgaXQgZmFpbHMgaWYgdGhlIHxwYXRofCBhbHJlYWR5IGV4aXN0cy4KKyAgICAvLyBJZiB8
ZXhjbHVzaXZlfCBpcyBmYWxzZSwgaXQgc3VjY2VlZHMgaWYgdGhlIHxwYXRofCBhbHJlYWR5IGV4
aXN0cyBvcgorICAgIC8vIGl0IGhhcyBzdWNjZXNzZnVsbHkgY3JlYXRlZCBhIG5ldyBmaWxlIGF0
IHxwYXRofC4KKyAgICAvLworICAgIC8vIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZFN1Y2Nl
ZWQoKSBtdXN0IGJlIGNhbGxlZCB3aGVuIHRoZSBvcGVyYXRpb24gaXMgY29tcGxldGVkIHN1Y2Nl
c3NmdWxseS4KKyAgICAvLyBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzOjpkaWRGYWlsKCkgbXVzdCBi
ZSBjYWxsZWQgb3RoZXJ3aXNlLgorICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVGaWxlKGNvbnN0IFdl
YlN0cmluZyYgcGF0aCwgYm9vbCBleGNsdXNpdmUsIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3MqKSB7
IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorCisgICAgLy8gQ3JlYXRlcyBhIGRpcmVj
dG9yeSBhdCBhIGdpdmVuIHxwYXRofC4KKyAgICAvLyBJZiB0aGUgfHBhdGh8IGRvZXNuJ3QgZXhp
c3QsIGl0IGNyZWF0ZXMgYSBuZXcgZGlyZWN0b3J5IGF0IHxwYXRofC4KKyAgICAvLyBJZiB8ZXhj
bHVzaXZlfCBpcyB0cnVlLCBpdCBmYWlscyBpZiB0aGUgfHBhdGh8IGFscmVhZHkgZXhpc3RzLgor
ICAgIC8vIElmIHxleGNsdXNpdmV8IGlzIGZhbHNlLCBpdCBzdWNjZWVkcyBpZiB0aGUgfHBhdGh8
IGFscmVhZHkgZXhpc3RzIG9yIGl0IGhhcyBzdWNjZXNzZnVsbHkgY3JlYXRlZCBhIG5ldyBkaXJl
Y3RvcnkgYXQgfHBhdGh8LgorICAgIC8vCisgICAgLy8gV2ViRmlsZVN5c3RlbUNhbGxiYWNrczo6
ZGlkU3VjY2VlZCgpIG11c3QgYmUgY2FsbGVkIHdoZW4KKyAgICAvLyB0aGUgb3BlcmF0aW9uIGlz
IGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuCisgICAgLy8gV2ViRmlsZVN5c3RlbUNhbGxiYWNrczo6
ZGlkRmFpbCgpIG11c3QgYmUgY2FsbGVkIG90aGVyd2lzZS4KKyAgICB2aXJ0dWFsIHZvaWQgY3Jl
YXRlRGlyZWN0b3J5KGNvbnN0IFdlYlN0cmluZyYgcGF0aCwgYm9vbCBleGNsdXNpdmUsIFdlYkZp
bGVTeXN0ZW1DYWxsYmFja3MqKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorCisg
ICAgLy8gQ2hlY2tzIGlmIGEgZmlsZSBleGlzdHMgYXQgYSBnaXZlbiB8cGF0aHwuCisgICAgLy8g
V2ViRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkU3VjY2VlZCgpIG11c3QgYmUgY2FsbGVkIHdoZW4g
dGhlIG9wZXJhdGlvbiBpcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LgorICAgIC8vIFdlYkZpbGVT
eXN0ZW1DYWxsYmFja3M6OmRpZEZhaWwoKSBtdXN0IGJlIGNhbGxlZCBvdGhlcndpc2UuCisgICAg
dmlydHVhbCB2b2lkIGZpbGVFeGlzdHMoY29uc3QgV2ViU3RyaW5nJiBwYXRoLCBXZWJGaWxlU3lz
dGVtQ2FsbGJhY2tzKikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKworICAgIC8v
IENoZWNrcyBpZiBhIGRpcmVjdG9yeSBleGlzdHMgYXQgYSBnaXZlbiB8cGF0aHwuCisgICAgLy8g
V2ViRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkU3VjY2VlZCgpIG11c3QgYmUgY2FsbGVkIHdoZW4g
dGhlIG9wZXJhdGlvbiBpcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LgorICAgIC8vIFdlYkZpbGVT
eXN0ZW1DYWxsYmFja3M6OmRpZEZhaWwoKSBtdXN0IGJlIGNhbGxlZCBvdGhlcndpc2UuCisgICAg
dmlydHVhbCB2b2lkIGRpcmVjdG9yeUV4aXN0cyhjb25zdCBXZWJTdHJpbmcmIHBhdGgsIFdlYkZp
bGVTeXN0ZW1DYWxsYmFja3MqKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorCisg
ICAgLy8gUmVhZHMgZGlyZWN0b3J5IGVudHJpZXMgb2YgYSBnaXZlbiBkaXJlY3RvcnkgYXQgfHBh
dGh8LgorICAgIC8vIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZFJlYWREaXJlY3RvcnkoKSBt
dXN0IGJlIGNhbGxlZCB3aGVuIHRoZSBvcGVyYXRpb24gaXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxs
eS4KKyAgICAvLyBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzOjpkaWRGYWlsKCkgbXVzdCBiZSBjYWxs
ZWQgb3RoZXJ3aXNlLgorICAgIHZpcnR1YWwgdm9pZCByZWFkRGlyZWN0b3J5KGNvbnN0IFdlYlN0
cmluZyYgcGF0aCwgV2ViRmlsZVN5c3RlbUNhbGxiYWNrcyopIHsgV0VCS0lUX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOyB9CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIH5XZWJGaWxlU3lzdGVtKCkg
eyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViRmlsZVN5c3RlbUNhbGxiYWNrcy5oIGIvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJGaWxlU3lzdGVtQ2FsbGJhY2tzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWY2OGY4MTQwMTQ5Mzcz
NTU3ZTk1MTE1MTIyYTIxMzMxZDE4ZTZhZgotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViRmlsZVN5c3RlbUNhbGxiYWNrcy5oCkBAIC0wLDAgKzEsNzMgQEAKKy8q
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
ZGVmICAgV2ViRmlsZVN5c3RlbUNhbGxiYWNrc19oCisjZGVmaW5lICAgV2ViRmlsZVN5c3RlbUNh
bGxiYWNrc19oCisKKyNpbmNsdWRlICJXZWJGaWxlRW50cnkuaCIKKyNpbmNsdWRlICJXZWJGaWxl
RXJyb3IuaCIKKyNpbmNsdWRlICJXZWJWZWN0b3IuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K2NsYXNzIFdlYlN0cmluZzsKK3N0cnVjdCBXZWJGaWxlSW5mbzsKKworY2xhc3MgV2ViRmlsZVN5
c3RlbUNhbGxiYWNrcyB7CitwdWJsaWM6CisgICAgLy8gQ2FsbGJhY2sgZm9yIFdlYkZpbGVTeXN0
ZW0ncyB2YXJpb3VzIG9wZXJhdGlvbnMgdGhhdCBkb24ndCByZXF1aXJlCisgICAgLy8gcmV0dXJu
IHZhbHVlcy4KKyAgICB2aXJ0dWFsIHZvaWQgZGlkU3VjY2VlZCgpID0gMDsKKworICAgIC8vIENh
bGxiYWNrIGZvciBXZWJGaWxlU3lzdGVtOjpyZWFkTWV0YWRhdGEuIENhbGxlZCB3aXRoIHRoZSBm
aWxlIG1ldGFkYXRhCisgICAgLy8gZm9yIHRoZSByZXF1ZXN0ZWQgcGF0aC4KKyAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVhZE1ldGFkYXRhKGNvbnN0IFdlYkZpbGVJbmZvJikgPSAwOworCisgICAgLy8g
Q2FsbGJhY2sgZm9yIFdlYkZpbGVTeXN0ZW06OnJlYWREaXJlY3RvcnkuICBDYWxsZWQgd2l0aCBh
IHZlY3RvciBvZgorICAgIC8vIGZpbGUgZW50cmllcyBpbiB0aGUgcmVxdWVzdGVkIGRpcmVjdG9y
eS4gVGhpcyBjYWxsYmFjayBtaWdodCBiZSBjYWxsZWQKKyAgICAvLyBtdWx0aXBsZSB0aW1lcyBp
ZiB0aGUgZGlyZWN0b3J5IGhhcyBtYW55IGVudHJpZXMuIHxoYXNNb3JlfCBtdXN0IGJlCisgICAg
Ly8gdHJ1ZSB3aGVuIHRoZXJlIGFyZSBtb3JlIGVudHJpZXMuCisgICAgdmlydHVhbCB2b2lkIGRp
ZFJlYWREaXJlY3RvcnkoY29uc3QgV2ViVmVjdG9yPFdlYkZpbGVFbnRyeT4mLCBib29sIGhhc01v
cmUpID0gMDsKKworICAgIC8vIENhbGxiYWNrIGZvciBXZWJGcmFtZUNsaWVudDo6b3BlbkZpbGVT
eXN0ZW0uIENhbGxlZCB3aXRoIGEgbmFtZSBhbmQKKyAgICAvLyByb290IHBhdGggZm9yIHRoZSBG
aWxlU3lzdGVtIHdoZW4gdGhlIHJlcXVlc3QgaXMgYWNjZXB0ZWQuCisgICAgdmlydHVhbCB2b2lk
IGRpZE9wZW5GaWxlU3lzdGVtKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5n
JiByb290UGF0aCkgPSAwOworCisgICAgLy8gQ2FsbGVkIHdpdGggYW4gZXJyb3IgY29kZSB3aGVu
IGEgcmVxdWVzdGVkIG9wZXJhdGlvbiBoYXNuJ3QgYmVlbgorICAgIC8vIGNvbXBsZXRlZC4KKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChXZWJGaWxlRXJyb3IpID0gMDsKKworcHJvdGVjdGVkOgor
ICAgIHZpcnR1YWwgfldlYkZpbGVTeXN0ZW1DYWxsYmFja3MoKSB7fQorfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJGcmFtZUNsaWVudC5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVu
dC5oCmluZGV4IDkxZjBlMzgzYjQ5ZTFiMDk0ODM0NGRlYjlkNzUyZGY1ZDUwNGExN2IuLjRmZmYy
NzEwYTU2NjAwNTI0NmEyNzkyYWIxYmU4OGZkYzk2MzY4N2QgMTAwNjQ0Ci0tLSBhL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYkZyYW1lQ2xpZW50LmgKQEAgLTMyLDYgKzMyLDcgQEAKICNkZWZpbmUgV2ViRnJhbWVD
bGllbnRfaAogCiAjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2ViRmlsZVN5c3Rl
bS5oIgogI2luY2x1ZGUgIldlYk5hdmlnYXRpb25Qb2xpY3kuaCIKICNpbmNsdWRlICJXZWJOYXZp
Z2F0aW9uVHlwZS5oIgogI2luY2x1ZGUgIldlYlVSTEVycm9yLmgiCkBAIC00Miw2ICs0Myw3IEBA
IGNsYXNzIFdlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0OwogY2xhc3MgV2ViQXBwbGljYXRpb25DYWNo
ZUhvc3RDbGllbnQ7CiBjbGFzcyBXZWJDb29raWVKYXI7CiBjbGFzcyBXZWJEYXRhU291cmNlOwor
Y2xhc3MgV2ViRmlsZVN5c3RlbUNhbGxiYWNrczsKIGNsYXNzIFdlYkZvcm1FbGVtZW50OwogY2xh
c3MgV2ViRnJhbWU7CiBjbGFzcyBXZWJNZWRpYVBsYXllcjsKQEAgLTMzMyw2ICszMzUsMTkgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZXBvcnRGaW5kSW5QYWdlU2VsZWN0aW9uKAogICAg
ICAgICBpbnQgaWRlbnRpZmllciwgaW50IGFjdGl2ZU1hdGNoT3JkaW5hbCwgY29uc3QgV2ViUmVj
dCYgc2VsZWN0aW9uKSB7IH0KIAorICAgIC8vIEZpbGVTeXN0ZW0gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLy8gUmVxdWVzdHMgdG8g
b3BlbiBhIEZpbGVTeXN0ZW0uCisgICAgLy8gfHNpemV8IGluZGljYXRlcyBob3cgbXVjaCBzdG9y
YWdlIHNwYWNlIChpbiBieXRlcykgdGhlIGNhbGxlciBleHBlY3RzCisgICAgLy8gdG8gbmVlZC4K
KyAgICAvLyBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzOjpkaWRPcGVuRmlsZVN5c3RlbSgpIG11c3Qg
YmUgY2FsbGVkIHdpdGgKKyAgICAvLyBhIG5hbWUgYW5kIHJvb3QgcGF0aCBmb3IgdGhlIHJlcXVl
c3RlZCBGaWxlU3lzdGVtIHdoZW4gdGhlIG9wZXJhdGlvbgorICAgIC8vIGlzIGNvbXBsZXRlZCBz
dWNjZXNzZnVsbHkuIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZEZhaWwoKSBtdXN0IGJlCisg
ICAgLy8gY2FsbGVkIG90aGVyd2lzZS4KKyAgICB2aXJ0dWFsIHZvaWQgb3BlbkZpbGVTeXN0ZW0o
CisgICAgICAgIFdlYkZyYW1lKiwgV2ViRmlsZVN5c3RlbTo6VHlwZSwgbG9uZyBsb25nIHNpemUs
CisgICAgICAgIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3MqKSB7IH0KKwogcHJvdGVjdGVkOgogICAg
IH5XZWJGcmFtZUNsaWVudCgpIHsgfQogfTsKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViS2l0Q2xpZW50LmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYktpdENsaWVu
dC5oCmluZGV4IDQxMDQxNzUwNzUxMzcyY2YyZjllYWYwOTRjZGFiYThlMDUyYmZhYWQuLjY5YWRh
ZDA2NTFiOWIwYWU3Y2ZkMjlhOWZiZGYyNTJhZDQyZTZiZjggMTAwNjQ0Ci0tLSBhL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViS2l0Q2xpZW50LmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJLaXRDbGllbnQuaApAQCAtMzMsNyArMzMsNiBAQAogCiAjaW5jbHVkZSAiV2ViQ29tbW9u
LmgiCiAjaW5jbHVkZSAiV2ViRGF0YS5oIgotI2luY2x1ZGUgIldlYkZpbGVTeXN0ZW0uaCIKICNp
bmNsdWRlICJXZWJMb2NhbGl6ZWRTdHJpbmcuaCIKICNpbmNsdWRlICJXZWJTdHJpbmcuaCIKICNp
bmNsdWRlICJXZWJVUkwuaCIKQEAgLTUwLDYgKzQ5LDcgQEAgY2xhc3MgV2ViQXBwbGljYXRpb25D
YWNoZUhvc3Q7CiBjbGFzcyBXZWJBcHBsaWNhdGlvbkNhY2hlSG9zdENsaWVudDsKIGNsYXNzIFdl
YkNsaXBib2FyZDsKIGNsYXNzIFdlYkNvb2tpZUphcjsKK2NsYXNzIFdlYkZpbGVTeXN0ZW07CiBj
bGFzcyBXZWJGaWxlVXRpbGl0aWVzOwogY2xhc3MgV2ViR0xFUzJDb250ZXh0OwogY2xhc3MgV2Vi
R3JhcGhpY3NDb250ZXh0M0Q7CkBAIC03MywxMiArNzMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBXZWJNaW1lUmVnaXN0cnkqIG1pbWVSZWdpc3RyeSgpIHsgcmV0dXJuIDA7IH0KIAogICAgIC8v
IE11c3QgcmV0dXJuIG5vbi1udWxsLgotICAgIC8vIEZJWE1FOiBDbGVhbiB1cCB0aGlzIG9uZSBv
bmNlIHRoZSByZW5hbWluZyB0byBXZWJGaWxlVXRpbGl0aWVzIGlzIGRvbmUuCi0gICAgdmlydHVh
bCBXZWJGaWxlU3lzdGVtKiBmaWxlU3lzdGVtKCkgeyByZXR1cm4gMDsgfQotCi0gICAgLy8gTXVz
dCByZXR1cm4gbm9uLW51bGwuCi0gICAgLy8gRklYTUU6IENsZWFuIHVwIHRoaXMgb25lIG9uY2Ug
dGhlIHJlbmFtaW5nIGZyb20gV2ViRmlsZVN5c3RlbSBpcyBkb25lLgotICAgIHZpcnR1YWwgV2Vi
RmlsZVV0aWxpdGllcyogZmlsZVV0aWxpdGllcygpIHsgcmV0dXJuIGZpbGVTeXN0ZW0oKTsgfQor
ICAgIHZpcnR1YWwgV2ViRmlsZVV0aWxpdGllcyogZmlsZVV0aWxpdGllcygpIHsgcmV0dXJuIDA7
IH0KIAogICAgIC8vIE1heSByZXR1cm4gbnVsbCBpZiBzYW5kYm94IHN1cHBvcnQgaXMgbm90IG5l
Y2Vzc2FyeQogICAgIHZpcnR1YWwgV2ViU2FuZGJveFN1cHBvcnQqIHNhbmRib3hTdXBwb3J0KCkg
eyByZXR1cm4gMDsgfQpAQCAtMjY4LDYgKzI2MywxMSBAQCBwdWJsaWM6CiAgICAgLy8gTWF5IHJl
dHVybiBudWxsIGlmIGl0IGZhaWxzIHRvIGNyZWF0ZSB0aGUgY29udGV4dC4KICAgICB2aXJ0dWFs
IFdlYkdMRVMyQ29udGV4dCogY3JlYXRlR0xFUzJDb250ZXh0KCkgeyByZXR1cm4gMDsgfQogCisg
ICAgLy8gRmlsZVN5c3RlbSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvLyBNdXN0IHJldHVybiBub24tbnVsbC4KKyAgICB2
aXJ0dWFsIFdlYkZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0oKSB7IHJldHVybiAwOyB9CisKIHByb3Rl
Y3RlZDoKICAgICB+V2ViS2l0Q2xpZW50KCkgeyB9CiB9Owo=
</data>
<flag name="review"
          id="53438"
          type_id="1"
          status="+"
          setter="fishd"
    />
          </attachment>
      

    </bug>

</bugzilla>