<?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>60247</bug_id>
          
          <creation_ts>2011-05-04 22:25:37 -0700</creation_ts>
          <short_desc>Handle the touch icon in WebKit/Chromium</short_desc>
          <delta_ts>2011-05-13 12:29:14 -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 Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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>
          <dependson>60510</dependson>
          
          <everconfirmed>0</everconfirmed>
          <reporter>michaelbai</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>fishd</cc>
    
    <cc>levin</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>398550</commentid>
    <comment_count>0</comment_count>
    <who name="">michaelbai</who>
    <bug_when>2011-05-04 22:25:37 -0700</bug_when>
    <thetext>Follow the patch https://bugs.webkit.org/show_bug.cgi?id=59143, handle the touch icon in WebKit/chromium</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>399048</commentid>
    <comment_count>1</comment_count>
      <attachid>92469</attachid>
    <who name="">michaelbai</who>
    <bug_when>2011-05-05 14:34:19 -0700</bug_when>
    <thetext>Created attachment 92469
Initial implementation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>399258</commentid>
    <comment_count>2</comment_count>
      <attachid>92469</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-05-05 18:09:50 -0700</bug_when>
    <thetext>Comment on attachment 92469
Initial implementation

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

Here&apos;s a few comments. Since this involves the chromium api though Darin should really review it. He may also say things that change what I suggested a little bit in some places so I won&apos;t mark this r- so he&apos;ll look it over.

&gt; Source/WebKit/chromium/ChangeLog:8
&gt; +        * WebKit.gyp:

Typically you should include a small note for each function or file about why a change was done there (or minimally what was done).

&gt; Source/WebKit/chromium/public/WebIconURL.h:40
&gt; +    Favicon = 1,

Inconsistent casing seems like it should be FavIcon.

Also why not make this &quot;= 1 &lt;&lt; 0&quot; for consistency as well.

&gt; Source/WebKit/chromium/public/WebIconURL.h:57
&gt; +    WebIconType m_iconType;

Typical WebKit style is to make a class with private member variables and m_ prefixes or a struct with public member variables and no m_ prefix.

&gt; Source/WebKit/chromium/src/WebFrameImpl.cpp:533
&gt; +            webIconURLs[i] = (WebIconURL(iconURLs[i].m_iconURL, WebIconTypeUtilities::ToWebIconType(iconURLs[i].m_iconType)));

Why have the outer parens?

&gt; Source/WebKit/chromium/src/WebIconTypeUtilities.cpp:50
&gt; +    default:

I would recommend not having a default and handling every case explicitly so that the compiler will catch missing enums in this switch if any are added.

In addition, just return the type directly from the case and then after the switch statement have an ASSERT_NOT_REACHED();

&gt; Source/WebKit/chromium/src/WebIconTypeUtilities.cpp:69
&gt; +    default:

Ditto.

&gt; Source/WebKit/chromium/src/WebIconTypeUtilities.h:39
&gt; +class WebIconTypeUtilities {

Is Utilities the common name for this in type of functionality in this directory? It looks like a Converter more than Utilities.

Also, I wonder if we can make the value align exactly and then do the conversion using a cast.

The fragileness of this approach would be overcome by using COMPILE_ASSERTs.

&gt; Source/WebKit/chromium/src/WebIconTypeUtilities.h:40
&gt; + public:

No indent on public:

&gt; Source/WebKit/chromium/src/WebIconTypeUtilities.h:41
&gt; +    static WebCore::IconType ToIconType(WebIconType);

Naming doesn&apos;t follow WebKit style -- should be toIconType.

&gt; Source/WebKit/chromium/src/WebIconTypeUtilities.h:42
&gt; +    static WebIconType ToWebIconType(WebCore::IconType);

Ditto.

&gt; Source/WebKit/chromium/src/WebIconTypeUtilities.h:43
&gt; +    static int ToIconTypes(int);

Ditto. Also there should be a variable name here. The variable name is only left out when it is obviously redundant with the information already on the line. This is not the case for the input &quot;int&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>399581</commentid>
    <comment_count>3</comment_count>
    <who name="">michaelbai</who>
    <bug_when>2011-05-06 09:57:15 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 92469 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=92469&amp;action=review
&gt; 
&gt; Here&apos;s a few comments. Since this involves the chromium api though Darin should really review it. He may also say things that change what I suggested a little bit in some places so I won&apos;t mark this r- so he&apos;ll look it over.
&gt; 
&gt; &gt; Source/WebKit/chromium/ChangeLog:8
&gt; &gt; +        * WebKit.gyp:
&gt; 
&gt; Typically you should include a small note for each function or file about why a change was done there (or minimally what was done).
&gt; 

Done

&gt; &gt; Source/WebKit/chromium/public/WebIconURL.h:40
&gt; &gt; +    Favicon = 1,
&gt; 
&gt; Inconsistent casing seems like it should be FavIcon.
&gt; 
&gt; Also why not make this &quot;= 1 &lt;&lt; 0&quot; for consistency as well.
&gt;

I think Favicon is a term now. It is also used in IconType.h and chromium.

&gt; &gt; Source/WebKit/chromium/public/WebIconURL.h:57
&gt; &gt; +    WebIconType m_iconType;
&gt; 
&gt; Typical WebKit style is to make a class with private member variables and m_ prefixes or a struct with public member variables and no m_ prefix.
&gt; 

Done

&gt; &gt; Source/WebKit/chromium/src/WebFrameImpl.cpp:533
&gt; &gt; +            webIconURLs[i] = (WebIconURL(iconURLs[i].m_iconURL, WebIconTypeUtilities::ToWebIconType(iconURLs[i].m_iconType)));
&gt; 
&gt; Why have the outer parens?
&gt; 

Done

&gt; &gt; Source/WebKit/chromium/src/WebIconTypeUtilities.cpp:50
&gt; &gt; +    default:
&gt; 
&gt; I would recommend not having a default and handling every case explicitly so that the compiler will catch missing enums in this switch if any are added.
&gt; 
&gt; In addition, just return the type directly from the case and then after the switch statement have an ASSERT_NOT_REACHED();
&gt; 

Done

&gt; &gt; Source/WebKit/chromium/src/WebIconTypeUtilities.cpp:69
&gt; &gt; +    default:
&gt; 
&gt; Ditto.
&gt; 

Done

&gt; &gt; Source/WebKit/chromium/src/WebIconTypeUtilities.h:39
&gt; &gt; +class WebIconTypeUtilities {
&gt; 
&gt; Is Utilities the common name for this in type of functionality in this directory? It looks like a Converter more than Utilities.
&gt; 
&gt; Also, I wonder if we can make the value align exactly and then do the conversion using a cast.
&gt; 
&gt; The fragileness of this approach would be overcome by using COMPILE_ASSERTs.
&gt;

I would prefer use the switch ... case, it prevents the missing match of icon type definition. It might also the reason we have WebXXX leayer.
  
&gt; &gt; Source/WebKit/chromium/src/WebIconTypeUtilities.h:40
&gt; &gt; + public:
&gt; 
&gt; No indent on public:
&gt; 

Done

&gt; &gt; Source/WebKit/chromium/src/WebIconTypeUtilities.h:41
&gt; &gt; +    static WebCore::IconType ToIconType(WebIconType);
&gt; 
&gt; Naming doesn&apos;t follow WebKit style -- should be toIconType.
&gt; 
&gt; &gt; Source/WebKit/chromium/src/WebIconTypeUtilities.h:42
&gt; &gt; +    static WebIconType ToWebIconType(WebCore::IconType);
&gt; 
&gt; Ditto.
&gt; 

Done

&gt; &gt; Source/WebKit/chromium/src/WebIconTypeUtilities.h:43
&gt; &gt; +    static int ToIconTypes(int);
&gt; 
&gt; Ditto. Also there should be a variable name here. The variable name is only left out when it is obviously redundant with the information already on the line. This is not the case for the input &quot;int&quot;.

Done, How do I suppress the style check error, I used to have the variable name here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>399582</commentid>
    <comment_count>4</comment_count>
      <attachid>92594</attachid>
    <who name="">michaelbai</who>
    <bug_when>2011-05-06 09:57:51 -0700</bug_when>
    <thetext>Created attachment 92594
Address all comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>399593</commentid>
    <comment_count>5</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-05-06 10:10:18 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #2)
&gt; &gt; (From update of attachment 92469 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=92469&amp;action=review
&gt; &gt; &gt; Source/WebKit/chromium/src/WebIconTypeUtilities.h:43
&gt; &gt; &gt; +    static int ToIconTypes(int);
&gt; &gt; 
&gt; &gt; Ditto. Also there should be a variable name here. The variable name is only left out when it is obviously redundant with the information already on the line. This is not the case for the input &quot;int&quot;.
&gt; 
&gt; Done, How do I suppress the style check error, I used to have the variable name here.

No style error :) (The style checker looks for name overlapping with the type given. That doesn&apos;t happen here. It also does some special checks for &quot;set&quot; functions but that isn&apos;t the case here either.)

You likely got style errors on the other lines where the variable name was redundant with the type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>399629</commentid>
    <comment_count>6</comment_count>
    <who name="">michaelbai</who>
    <bug_when>2011-05-06 10:44:18 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #3)
&gt; &gt; (In reply to comment #2)
&gt; &gt; &gt; (From update of attachment 92469 [details] [details] [details])
&gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=92469&amp;action=review
&gt; &gt; &gt; &gt; Source/WebKit/chromium/src/WebIconTypeUtilities.h:43
&gt; &gt; &gt; &gt; +    static int ToIconTypes(int);
&gt; &gt; &gt; 
&gt; &gt; &gt; Ditto. Also there should be a variable name here. The variable name is only left out when it is obviously redundant with the information already on the line. This is not the case for the input &quot;int&quot;.
&gt; &gt; 
&gt; &gt; Done, How do I suppress the style check error, I used to have the variable name here.
&gt; 
&gt; No style error :) (The style checker looks for name overlapping with the type given. That doesn&apos;t happen here. It also does some special checks for &quot;set&quot; functions but that isn&apos;t the case here either.)
&gt; 
&gt; You likely got style errors on the other lines where the variable name was redundant with the type.

You are right. It passed the check. I got the style error in different line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>399688</commentid>
    <comment_count>7</comment_count>
      <attachid>92594</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-05-06 11:58:37 -0700</bug_when>
    <thetext>Comment on attachment 92594
Address all comments

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

&gt; Source/WebKit/chromium/public/WebFrame.h:135
&gt; +    virtual WebVector&lt;WebIconURL&gt; favIconURL(int) const = 0;

what is this magic int parameter?

&gt; Source/WebKit/chromium/public/WebIconURL.h:38
&gt; +enum WebIconType {

please create a separate header file for each toplevel type: class, struct or enum.

please also follow the naming conventions for enums.  enum Foo { FooA, FooB, ... };

&gt; Source/WebKit/chromium/public/WebIconURL.h:57
&gt; +    WebIconType iconType;

do these fields need to be mutable?  maybe RIIA would be sufficient?

&gt; Source/WebKit/chromium/src/WebIconTypeUtilities.h:39
&gt; +class WebIconTypeUtilities {

utilities classes tend to become dumping grounds.  can you instead give this a more specific name?  it seems to be all about type conversion.

have you considered making the api types have exactly the same values as the webcore ones?  that could simplify conversions.  see AssertMatchingEnums.cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>399828</commentid>
    <comment_count>8</comment_count>
      <attachid>92643</attachid>
    <who name="">michaelbai</who>
    <bug_when>2011-05-06 14:40:57 -0700</bug_when>
    <thetext>Created attachment 92643
Removed the utitilies class, used COMPILE_ASSERT_MATCHING_ENUM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>399829</commentid>
    <comment_count>9</comment_count>
    <who name="">michaelbai</who>
    <bug_when>2011-05-06 14:46:03 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 92594 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=92594&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/chromium/public/WebFrame.h:135
&gt; &gt; +    virtual WebVector&lt;WebIconURL&gt; favIconURL(int) const = 0;
&gt; 
&gt; what is this magic int parameter?
&gt; 

It is the combination of IconTypes, added a comment

&gt; &gt; Source/WebKit/chromium/public/WebIconURL.h:38
&gt; &gt; +enum WebIconType {
&gt; 
&gt; please create a separate header file for each toplevel type: class, struct or enum.
&gt; 
&gt; please also follow the naming conventions for enums.  enum Foo { FooA, FooB, ... };
&gt; 

I moved the WebIconType into WebIconURL as it will only used by WebIconURL. I didn&apos;t add the prefix as to access the emun value has to be used WebIconURL::. Hope it is fine.

&gt; &gt; Source/WebKit/chromium/public/WebIconURL.h:57
&gt; &gt; +    WebIconType iconType;
&gt; 
&gt; do these fields need to be mutable?  maybe RIIA would be sufficient?
&gt; 

Sorry, I don&apos;t know RIIA stand for, I guess you want to use 
const WebIconTyp iconType.

If so, I can not assign the WebIconURL to WebVector in WebFrameImpl::favIcon(int).

&gt; &gt; Source/WebKit/chromium/src/WebIconTypeUtilities.h:39
&gt; &gt; +class WebIconTypeUtilities {
&gt; 
&gt; utilities classes tend to become dumping grounds.  can you instead give this a more specific name?  it seems to be all about type conversion.
&gt; 
&gt; have you considered making the api types have exactly the same values as the webcore ones?  that could simplify conversions.  see AssertMatchingEnums.cpp.

Removed WebIconTypeUtilities, Used AssertMatchingEnums</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>399831</commentid>
    <comment_count>10</comment_count>
      <attachid>92644</attachid>
    <who name="">michaelbai</who>
    <bug_when>2011-05-06 14:47:44 -0700</bug_when>
    <thetext>Created attachment 92644
Removed the utitilies class, used COMPILE_ASSERT_MATCHING_ENUM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>399859</commentid>
    <comment_count>11</comment_count>
      <attachid>92644</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-05-06 15:32:45 -0700</bug_when>
    <thetext>Comment on attachment 92644
Removed the utitilies class, used COMPILE_ASSERT_MATCHING_ENUM.

Attachment 92644 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/8610110</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>399905</commentid>
    <comment_count>12</comment_count>
      <attachid>92657</attachid>
    <who name="">michaelbai</who>
    <bug_when>2011-05-06 16:37:26 -0700</bug_when>
    <thetext>Created attachment 92657
Fix build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400574</commentid>
    <comment_count>13</comment_count>
      <attachid>92804</attachid>
    <who name="">michaelbai</who>
    <bug_when>2011-05-09 10:42:13 -0700</bug_when>
    <thetext>Created attachment 92804
Sync, Update change log, fix the style issus</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400580</commentid>
    <comment_count>14</comment_count>
      <attachid>92804</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-05-09 10:59:40 -0700</bug_when>
    <thetext>Comment on attachment 92804
Sync, Update change log, fix the style issus

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

Mostly following up Darin&apos;s comments.

&gt; Source/WebKit/chromium/public/WebIconURL.h:43
&gt; +        TouchPrecomposedIcon = 1 &lt;&lt; 2

Even though this is inside of the struct, I look at a number of other classes in WebKit/chromium/public and they prefix the name with the enum, so it would be
WebIconTypeInvalid, etc.

&gt; Source/WebKit/chromium/public/WebIconURL.h:57
&gt; +    WebIconType iconType;

I suspect Darin meant RAII and I believe he was suggesting making these member variables private (and making this a class essentially with m_ variables and accesssors for the values where needed), so the only place that the object become immutable (except for the copy operator, which is used in WebFrameImpl::favIconURL).

&gt; Source/WebKit/chromium/src/WebFrameImpl.cpp:529
&gt; +        WTF::Vector&lt;WebCore::IconURL&gt; iconURLs = frameLoader-&gt;iconURLs(webIconTypes);

I doubt that you need the WTF:: prefix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400624</commentid>
    <comment_count>15</comment_count>
      <attachid>92819</attachid>
    <who name="">michaelbai</who>
    <bug_when>2011-05-09 11:57:02 -0700</bug_when>
    <thetext>Created attachment 92819
Address the comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400632</commentid>
    <comment_count>16</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-05-09 12:02:48 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; Created an attachment (id=92819) [details]
&gt; Address the comments

Since the enum type is now prefixed with WebIconType, why post fix it with icon? (which makes it more verbose and clumsy).

I was trying to indicate this with my comment in which I constructed one of the names: WebIconTypeInvalid</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400645</commentid>
    <comment_count>17</comment_count>
      <attachid>92823</attachid>
    <who name="">michaelbai</who>
    <bug_when>2011-05-09 12:14:19 -0700</bug_when>
    <thetext>Created attachment 92823
Address the comments

I left the favicon as WebIconTypeFavicon as favicon is a term.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400684</commentid>
    <comment_count>18</comment_count>
      <attachid>92823</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-05-09 12:49:20 -0700</bug_when>
    <thetext>Comment on attachment 92823
Address the comments

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

&gt; Source/WebKit/chromium/public/WebIconURL.h:38
&gt; +struct WebIconURL {

Last thing (Sorry for not noticing in the last revision), but this should be a class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400697</commentid>
    <comment_count>19</comment_count>
      <attachid>92836</attachid>
    <who name="">michaelbai</who>
    <bug_when>2011-05-09 13:08:39 -0700</bug_when>
    <thetext>Created attachment 92836
Address the comment

Done, thanks very much</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400786</commentid>
    <comment_count>20</comment_count>
      <attachid>92836</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-05-09 15:04:45 -0700</bug_when>
    <thetext>Comment on attachment 92836
Address the comment

Clearing flags on attachment: 92836

Committed r86091: &lt;http://trac.webkit.org/changeset/86091&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400787</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-05-09 15:04:51 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400807</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-05-09 15:21:50 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/86091 might have broken Chromium Win Release</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400818</commentid>
    <comment_count>23</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-05-09 15:30:39 -0700</bug_when>
    <thetext>It looks like this line has problems:
        WTF::Vector&lt;WebCore::IconURL&gt; iconURLs = frameLoader-&gt;iconURLs(webIconTypes);

Specifically: FrameLoader::iconURLs doesn&apos;t seem to exist.

Also I think you can get rid of WTF:: from this line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401213</commentid>
    <comment_count>24</comment_count>
      <attachid>92836</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-05-10 08:23:22 -0700</bug_when>
    <thetext>Comment on attachment 92836
Address the comment

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

&gt; Source/WebKit/chromium/public/WebFrame.h:135
&gt; +    virtual WebVector&lt;WebIconURL&gt; favIconURL(int iconTypes) const = 0;

you should explain what this mysterious int parameter is.  it is not obviously a bit-mask of Type enum values.  you should say so!

&gt; Source/WebKit/chromium/public/WebIconURL.h:40
&gt; +    enum WebIconType {

because this enum is nested inside a class, it does not need the redundant WebIcon prefix.  if you look around at other headers, you will see that this should just be enum Type { TypeInvalid = 0, ... };

&gt; Source/WebKit/chromium/src/WebFrameImpl.cpp:529
&gt; +        WTF::Vector&lt;WebCore::IconURL&gt; iconURLs = frameLoader-&gt;iconURLs(webIconTypes);

no WTF:: in .cpp files</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401237</commentid>
    <comment_count>25</comment_count>
      <attachid>92961</attachid>
    <who name="">michaelbai</who>
    <bug_when>2011-05-10 09:00:57 -0700</bug_when>
    <thetext>Created attachment 92961
Address the comments and Rollback previous favIconURL() definition.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401240</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-05-10 09:03:29 -0700</bug_when>
    <thetext>Attachment 92961 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit/chromium/ChangeLog&apos;, u&apos;Sourc...&quot; exit_code: 1

Source/WebKit/chromium/src/WebFrameImpl.cpp:526:  An else statement can be removed when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
Total errors found: 1 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401241</commentid>
    <comment_count>27</comment_count>
      <attachid>92962</attachid>
    <who name="">michaelbai</who>
    <bug_when>2011-05-10 09:06:12 -0700</bug_when>
    <thetext>Created attachment 92962
Fix style</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401549</commentid>
    <comment_count>28</comment_count>
      <attachid>93022</attachid>
    <who name="">michaelbai</who>
    <bug_when>2011-05-10 15:11:25 -0700</bug_when>
    <thetext>Created attachment 93022
Fix style</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401686</commentid>
    <comment_count>29</comment_count>
      <attachid>93022</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-05-10 18:34:19 -0700</bug_when>
    <thetext>Comment on attachment 93022
Fix style

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

&gt; Source/WebKit/chromium/public/WebFrame.h:137
&gt; +    // the document loaded in this frame. The iconTypes could be a bit-mask of

Sorry for all the back-n-forth on this.  Being out on vacation has meant that I haven&apos;t
had the time to give this the focus I should.  Thanks for putting up with all the cycles.

nit: &quot;The iconTypes [is] a bit-mask of WebIconURL::Type values, used to select from
the available set of icon URLs.&quot;

nit: Since this method returns possibly many WebIconURL objects, please pluralize the
method name.  It should be favIconURLs instead of favIconURL.

nit: Since this method returns an array of WebIconURL and not WebFavIconURL, the method
should not have the &quot;Fav&quot; part in its name.  I think it should just be iconURLs.

&gt; Source/WebKit/chromium/public/WebFrameClient.h:206
&gt; +    virtual void didChangeIcons(WebFrame*, WebIconURL::Type) { }

I think this method name could be improved.  Since it is only reporting the
change of a single icon type, it should not be pluralized.  It should just
be didChangeIcon.

&gt; Source/WebKit/chromium/public/WebIconURL.h:67
&gt; +

you can define a constructor here that takes a WebCore::IconURL object.
wrap the constructor in #if WEBKIT_IMPLEMENTATION so that it will not
be visible to consumers of the API (we don&apos;t want them to see WebCore
stuff).

with the above constructor, it is now possible to implicitly convert
WTF::Vector&lt;WebCore::IconURL&gt; to WebVector&lt;WebIconURL&gt;.  Magic!

&gt; Source/WebKit/chromium/src/WebFrameImpl.cpp:531
&gt; +WebVector&lt;WebIconURL&gt; WebFrameImpl::favIconURL(int webIconTypes) const

nit: parameter name should just be iconTypes.

&gt; Source/WebKit/chromium/src/WebFrameImpl.cpp:537
&gt; +        Vector&lt;WebCore::IconURL&gt; iconURLs = frameLoader-&gt;iconURLs(webIconTypes);

with the constructor on WebIconURL that i mentioned, you can condense this down to:

  return frameLoader-&gt;iconURLs(iconTypes);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401710</commentid>
    <comment_count>30</comment_count>
      <attachid>93062</attachid>
    <who name="">michaelbai</who>
    <bug_when>2011-05-10 19:12:47 -0700</bug_when>
    <thetext>Created attachment 93062
Address the comment</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401727</commentid>
    <comment_count>31</comment_count>
      <attachid>93062</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-05-10 20:03:46 -0700</bug_when>
    <thetext>Comment on attachment 93062
Address the comment

Attachment 93062 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/8689133</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401991</commentid>
    <comment_count>32</comment_count>
      <attachid>93122</attachid>
    <who name="">michaelbai</who>
    <bug_when>2011-05-11 08:37:12 -0700</bug_when>
    <thetext>Created attachment 93122
Fix build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402113</commentid>
    <comment_count>33</comment_count>
      <attachid>93147</attachid>
    <who name="">michaelbai</who>
    <bug_when>2011-05-11 11:10:08 -0700</bug_when>
    <thetext>Created attachment 93147
Revert the method in WebFrameClient.h to make the transient easy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402208</commentid>
    <comment_count>34</comment_count>
      <attachid>93147</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-05-11 13:25:46 -0700</bug_when>
    <thetext>Comment on attachment 93147
Revert the method in WebFrameClient.h to make the transient easy.

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

&gt; Source/WebKit/chromium/WebKit.gyp:188
&gt; +                &apos;public/WebIconType.h&apos;,

wrong file?

&gt; Source/WebKit/chromium/public/WebFrame.h:138
&gt; +    // WebIconURL::Type values, sed to select from the available set of icon

&quot;sed&quot; -&gt; used?

&gt; Source/WebKit/chromium/public/WebIconURL.h:62
&gt; +    WebIconURL(const WebCore::IconURL&amp; iconURL)

nit: we usually place any WEBKIT_IMPLEMENTATION section as the very end of the public section.  take a look at other header files to familiarize yourself with conventions.

&gt; Source/WebKit/chromium/src/WebFrameImpl.cpp:537
&gt; +        Vector&lt;WebCore::IconURL&gt; iconURLs = frameLoader-&gt;iconURLs(webIconTypes);

were you not able to replace all of this code with a simple &quot;return frameLoader-&gt;iconURLs(...);&quot;

^^^ that was the point of defining the constructor</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402251</commentid>
    <comment_count>35</comment_count>
      <attachid>93180</attachid>
    <who name="">michaelbai</who>
    <bug_when>2011-05-11 13:59:53 -0700</bug_when>
    <thetext>Created attachment 93180
Address the comment</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402258</commentid>
    <comment_count>36</comment_count>
    <who name="">michaelbai</who>
    <bug_when>2011-05-11 14:04:08 -0700</bug_when>
    <thetext>(In reply to comment #34)
&gt; (From update of attachment 93147 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=93147&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/chromium/WebKit.gyp:188
&gt; &gt; +                &apos;public/WebIconType.h&apos;,
&gt; 
&gt; wrong file?
&gt; 

Done.

&gt; &gt; Source/WebKit/chromium/public/WebFrame.h:138
&gt; &gt; +    // WebIconURL::Type values, sed to select from the available set of icon
&gt; 
&gt; &quot;sed&quot; -&gt; used?
&gt; 

Done.

&gt; &gt; Source/WebKit/chromium/public/WebIconURL.h:62
&gt; &gt; +    WebIconURL(const WebCore::IconURL&amp; iconURL)
&gt; 
&gt; nit: we usually place any WEBKIT_IMPLEMENTATION section as the very end of the public section.  take a look at other header files to familiarize yourself with conventions.
&gt; 

Sorry, I am anxious to get this check in. 

&gt; &gt; Source/WebKit/chromium/src/WebFrameImpl.cpp:537
&gt; &gt; +        Vector&lt;WebCore::IconURL&gt; iconURLs = frameLoader-&gt;iconURLs(webIconTypes);
&gt; 
&gt; were you not able to replace all of this code with a simple &quot;return frameLoader-&gt;iconURLs(...);&quot;
&gt; 
&gt; ^^^ that was the point of defining the constructor

Not aware of the magic here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402320</commentid>
    <comment_count>37</comment_count>
      <attachid>93180</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-05-11 15:10:52 -0700</bug_when>
    <thetext>Comment on attachment 93180
Address the comment

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

&gt; Source/WebKit/chromium/WebKit.gyp:188
&gt; +                &apos;public/WebIconType.h&apos;,

did you maybe upload the wrong version of the patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402330</commentid>
    <comment_count>38</comment_count>
      <attachid>93193</attachid>
    <who name="">michaelbai</who>
    <bug_when>2011-05-11 15:16:23 -0700</bug_when>
    <thetext>Created attachment 93193
Correct patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402331</commentid>
    <comment_count>39</comment_count>
    <who name="">michaelbai</who>
    <bug_when>2011-05-11 15:18:13 -0700</bug_when>
    <thetext>I am so sorry, I uploaded wrong patch.

Just a kind reminder, please help the review chromium patch, before put this in the commit queue, 
otherwise the build will be failed.

(In reply to comment #37)
&gt; (From update of attachment 93180 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=93180&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/chromium/WebKit.gyp:188
&gt; &gt; +                &apos;public/WebIconType.h&apos;,
&gt; 
&gt; did you maybe upload the wrong version of the patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402903</commentid>
    <comment_count>40</comment_count>
      <attachid>93193</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-05-12 09:50:26 -0700</bug_when>
    <thetext>Comment on attachment 93193
Correct patch

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

&gt; Source/WebKit/chromium/ChangeLog:9
&gt; +        Added a parameter to favIconURL() to specify the type of icon need to

this is a bit stale.  it should also mention the method renaming.

&gt; Source/WebKit/chromium/public/WebFrame.h:133
&gt; +    // This method is deprecated and will be removed soon.

nit: we usually format comments like this for easy discovery later.

// DEPRECATED: Use iconIRLs instead.

&gt; Source/WebKit/chromium/public/WebFrameClient.h:205
&gt; +    // This method is deprecated and will be removed soon.

same nit...

// DEPRECATED: Implement didChangeIcon instead.

&gt; Source/WebKit/chromium/src/FrameLoaderClientImpl.cpp:764
&gt; +        // Keep the API work in the transient.

nit: this a good place to insert FIXME, again for easy discovery later.

&gt; Source/WebKit/chromium/src/WebFrameImpl.cpp:531
&gt; +WebVector&lt;WebIconURL&gt; WebFrameImpl::iconURLs(int webIconTypes) const

nit: param should just be called iconTypes as it is declared in the header.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402923</commentid>
    <comment_count>41</comment_count>
      <attachid>93298</attachid>
    <who name="">michaelbai</who>
    <bug_when>2011-05-12 10:17:01 -0700</bug_when>
    <thetext>Created attachment 93298
Final?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403262</commentid>
    <comment_count>42</comment_count>
      <attachid>93298</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-05-12 17:08:19 -0700</bug_when>
    <thetext>Comment on attachment 93298
Final?

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

&gt; Source/WebKit/chromium/public/WebFrame.h:140
&gt; +    virtual WebVector&lt;WebIconURL&gt; iconURLs(int iconTypes) const = 0;

your chromium patch, which forks a copy of WebIconURL, would be unnecessary if you made this return an empty vector.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403578</commentid>
    <comment_count>43</comment_count>
      <attachid>93457</attachid>
    <who name="">michaelbai</who>
    <bug_when>2011-05-13 09:02:33 -0700</bug_when>
    <thetext>Created attachment 93457
Implement iconURLs to make transient easy</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403579</commentid>
    <comment_count>44</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-05-13 09:05:45 -0700</bug_when>
    <thetext>Attachment 93457 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit/chromium/ChangeLog&apos;, u&apos;Sourc...&quot; exit_code: 1

Source/WebKit/chromium/public/WebFrame.h:140:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 1 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403585</commentid>
    <comment_count>45</comment_count>
      <attachid>93461</attachid>
    <who name="">michaelbai</who>
    <bug_when>2011-05-13 09:14:09 -0700</bug_when>
    <thetext>Created attachment 93461
Fix style</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403620</commentid>
    <comment_count>46</comment_count>
      <attachid>93461</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-05-13 10:01:24 -0700</bug_when>
    <thetext>Comment on attachment 93461
Fix style

Attachment 93461 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/8693222</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403628</commentid>
    <comment_count>47</comment_count>
      <attachid>93474</attachid>
    <who name="">michaelbai</who>
    <bug_when>2011-05-13 10:11:50 -0700</bug_when>
    <thetext>Created attachment 93474
Fix build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403744</commentid>
    <comment_count>48</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-05-13 12:27:41 -0700</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 93474:

http/tests/xmlhttprequest/remember-bad-password.html bug 51733 (author: ap@webkit.org)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403746</commentid>
    <comment_count>49</comment_count>
      <attachid>93474</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-05-13 12:29:05 -0700</bug_when>
    <thetext>Comment on attachment 93474
Fix build

Clearing flags on attachment: 93474

Committed r86452: &lt;http://trac.webkit.org/changeset/86452&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403747</commentid>
    <comment_count>50</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-05-13 12:29:14 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92469</attachid>
            <date>2011-05-05 14:34:19 -0700</date>
            <delta_ts>2011-05-06 09:57:51 -0700</delta_ts>
            <desc>Initial implementation</desc>
            <filename>patch.0</filename>
            <type>text/plain</type>
            <size>15732</size>
            <attacher>michaelbai</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA4NTg3OSkKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjgg
QEAKKzIwMTEtMDUtMDUgIFRhbyBCYWkgIDxtaWNoYWVsYmFpQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBIYW5kbGUgdGhlIHRv
dWNoIGljb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02MDI0NworCisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBmZWF0dXJlcy5neXBp
OgorICAgICAgICAqIHB1YmxpYy9XZWJGcmFtZS5oOgorICAgICAgICAqIHB1YmxpYy9XZWJGcmFt
ZUNsaWVudC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUNsaWVudDo6ZGlkQ2hhbmdlSWNv
bnMpOgorICAgICAgICAqIHB1YmxpYy9XZWJJY29uVVJMLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0OjpXZWJJY29uVVJMOjpXZWJJY29uVVJMKToKKyAgICAgICAgKiBzcmMvRnJhbWVMb2FkZXJD
bGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnRJbXBsOjpk
aXNwYXRjaERpZENoYW5nZUljb25zKToKKyAgICAgICAgKiBzcmMvV2ViRnJhbWVJbXBsLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVJbXBsOjpmYXZJY29uVVJMKToKKyAgICAgICAgKiBz
cmMvV2ViRnJhbWVJbXBsLmg6CisgICAgICAgICogc3JjL1dlYkljb25UeXBlVXRpbGl0aWVzLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkljb25UeXBlVXRpbGl0aWVzOjpUb0ljb25U
eXBlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSWNvblR5cGVVdGlsaXRpZXM6OlRvV2ViSWNvblR5
cGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJY29uVHlwZVV0aWxpdGllczo6VG9JY29uVHlwZXMp
OgorICAgICAgICAqIHNyYy9XZWJJY29uVHlwZVV0aWxpdGllcy5oOiBBZGRlZC4KKwogMjAxMS0w
NS0wNSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJvbGwgQ2hy
b21pdW0gREVQUy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAJKHJldmlzaW9uIDg1
ODc5KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCSh3b3JraW5nIGNvcHkp
CkBAIC0xODUsNiArMTg1LDcgQEAKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkhUVFBCb2R5
LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViSFRUUExvYWRJbmZvLmgnLAogICAgICAg
ICAgICAgICAgICdwdWJsaWMvV2ViSWNvbkxvYWRpbmdDb21wbGV0aW9uLmgnLAorICAgICAgICAg
ICAgICAgICdwdWJsaWMvV2ViSWNvblR5cGUuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9X
ZWJJbWFnZS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkltYWdlRGVjb2Rlci5oJywK
ICAgICAgICAgICAgICAgICAncHVibGljL1dlYklEQkNhbGxiYWNrcy5oJywKQEAgLTQ3NSw2ICs0
NzYsOCBAQAogICAgICAgICAgICAgICAgICdzcmMvV2ViSGlzdG9yeUl0ZW0uY3BwJywKICAgICAg
ICAgICAgICAgICAnc3JjL1dlYkhUVFBCb2R5LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9X
ZWJIVFRQTG9hZEluZm8uY3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYkljb25UeXBlVXRp
bGl0aWVzLmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJJY29uVHlwZVV0aWxpdGllcy5o
JywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkljb25Mb2FkaW5nQ29tcGxldGlvbkltcGwuY3Bw
JywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkljb25Mb2FkaW5nQ29tcGxldGlvbkltcGwuaCcs
CiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJJREJDYWxsYmFja3NJbXBsLmNwcCcsCkluZGV4OiBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpCShyZXZpc2lvbiA4NTg3OSkKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtODgsNiAr
ODgsNyBAQAogICAgICAgICAnRU5BQkxFX1NWR19GT1JFSUdOX09CSkVDVD0xJywKICAgICAgICAg
J0VOQUJMRV9TVkdfVVNFPTEnLAogICAgICAgICAnRU5BQkxFX1RPVUNIX0VWRU5UUz0xJywKKyAg
ICAgICAgJ0VOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkc9MScsCiAgICAgICAgICdFTkFCTEVfVjhf
U0NSSVBUX0RFQlVHX1NFUlZFUj0xJywKICAgICAgICAgJ0VOQUJMRV9WSURFTz0xJywKICAgICAg
ICAgJ0VOQUJMRV9XRUJfQVVESU89MCcsCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYkZyYW1lLmgJKHJldmlzaW9uIDg1ODc5KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogCiAj
aW5jbHVkZSAiV2ViQ2FudmFzLmgiCiAjaW5jbHVkZSAiV2ViRmlsZVN5c3RlbS5oIgorI2luY2x1
ZGUgIldlYkljb25VUkwuaCIKICNpbmNsdWRlICJXZWJOb2RlLmgiCiAjaW5jbHVkZSAiV2ViVVJM
LmgiCiAKQEAgLTEyOSw5ICsxMzAsOSBAQCBwdWJsaWM6CiAgICAgLy8gZGF0YVNvdXJjZSgpLT5y
ZXF1ZXN0KCkudXJsKCkuCiAgICAgdmlydHVhbCBXZWJVUkwgdXJsKCkgY29uc3QgPSAwOwogCi0g
ICAgLy8gVGhlIHVybCBvZiB0aGUgZmF2aWNvbiAoaWYgYW55KSBzcGVjaWZpZWQgYnkgdGhlIGRv
Y3VtZW50IGxvYWRlZCBpbgorICAgIC8vIFRoZSB1cmxzIG9mIHRoZSBmYXZpY29uIChpZiBhbnkp
IHNwZWNpZmllZCBieSB0aGUgZG9jdW1lbnQgbG9hZGVkIGluCiAgICAgLy8gdGhpcyBmcmFtZS4K
LSAgICB2aXJ0dWFsIFdlYlVSTCBmYXZJY29uVVJMKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
V2ViVmVjdG9yPFdlYkljb25VUkw+IGZhdkljb25VUkwoaW50KSBjb25zdCA9IDA7CiAKICAgICAv
LyBUaGUgdXJsIG9mIHRoZSBPcGVuU2VhcmNoIERlc3JpcHRpb24gRG9jdW1lbnQgKGlmIGFueSkg
c3BlY2lmaWVkIGJ5CiAgICAgLy8gdGhlIGRvY3VtZW50IGxvYWRlZCBpbiB0aGlzIGZyYW1lLgpJ
bmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5o
CShyZXZpc2lvbiA4NTg3OSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZy
YW1lQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2luY2x1ZGUg
IldlYkNvbW1vbi5oIgogI2luY2x1ZGUgIldlYkZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRlICJXZWJJ
Y29uVVJMLmgiCiAjaW5jbHVkZSAiV2ViTmF2aWdhdGlvblBvbGljeS5oIgogI2luY2x1ZGUgIldl
Yk5hdmlnYXRpb25UeXBlLmgiCiAjaW5jbHVkZSAiV2ViU3RvcmFnZVF1b3RhVHlwZS5oIgpAQCAt
MjAyLDcgKzIwMyw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICAvLyBUaGUgaWNvbnMgZm9yIHRo
ZSBwYWdlIGhhdmUgY2hhbmdlZC4KLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlSWNvbnMoV2Vi
RnJhbWUqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlSWNvbnMoV2ViRnJhbWUqLCBX
ZWJJY29uVHlwZSkgeyB9CiAKICAgICAvLyBUaGUgZnJhbWUncyBkb2N1bWVudCBmaW5pc2hlZCBs
b2FkaW5nLgogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hEb2N1bWVudExvYWQoV2ViRnJhbWUq
KSB7IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkljb25VUkwuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJY29uVVJMLmgJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJY29uVVJM
LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkljb25VUkxfaAorI2Rl
ZmluZSBXZWJJY29uVVJMX2gKKworI2luY2x1ZGUgIldlYlVSTC5oIgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworZW51bSBXZWJJY29uVHlwZSB7CisgICAgSW52YWxpZEljb24gPSAwLAorICAgIEZh
dmljb24gPSAxLAorICAgIFRvdWNoSWNvbiA9IDEgPDwgMSwKKyAgICBUb3VjaFByZWNvbXBvc2Vk
SWNvbiA9IDEgPDwgMgorfTsKKworc3RydWN0IFdlYkljb25VUkwgeworICAgIFdlYkljb25VUkwo
KQorICAgICAgICA6IG1faWNvblR5cGUoSW52YWxpZEljb24pCisgICAgeworICAgIH0KKworICAg
IFdlYkljb25VUkwoY29uc3QgV2ViVVJMJiB1cmwsIFdlYkljb25UeXBlIHR5cGUpCisgICAgICAg
IDogbV9pY29uVHlwZSh0eXBlKQorICAgICAgICAsIG1faWNvblVSTCh1cmwpCisgICAgeworICAg
IH0KKworICAgIFdlYkljb25UeXBlIG1faWNvblR5cGU7CisgICAgV2ViVVJMIG1faWNvblVSTDsK
K307CisKK30KKworI2VuZGlmIC8vIFdlYkljb25VUkxfaAoKUHJvcGVydHkgY2hhbmdlcyBvbjog
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSWNvblVSTC5oCl9fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRk
ZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAkocmV2aXNpb24gODU4Nzkp
CisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02MSw2ICs2MSw3IEBACiAjaW5jbHVkZSAiV2ViRm9ybUVsZW1l
bnQuaCIKICNpbmNsdWRlICJXZWJGcmFtZUNsaWVudC5oIgogI2luY2x1ZGUgIldlYkZyYW1lSW1w
bC5oIgorI2luY2x1ZGUgIldlYkljb25UeXBlVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiV2ViS2l0
LmgiCiAjaW5jbHVkZSAiV2ViS2l0Q2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViTWltZVJlZ2lzdHJ5
LmgiCkBAIC03NjAsNyArNzYxLDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpc3Bh
dGNoRGlkUgogdm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpc3BhdGNoRGlkQ2hhbmdlSWNv
bnMoV2ViQ29yZTo6SWNvblR5cGUgdHlwZSkKIHsKICAgICBpZiAobV93ZWJGcmFtZS0+Y2xpZW50
KCkpCi0gICAgICAgIG1fd2ViRnJhbWUtPmNsaWVudCgpLT5kaWRDaGFuZ2VJY29ucyhtX3dlYkZy
YW1lKTsKKyAgICAgICAgbV93ZWJGcmFtZS0+Y2xpZW50KCktPmRpZENoYW5nZUljb25zKG1fd2Vi
RnJhbWUsIFdlYkljb25UeXBlVXRpbGl0aWVzOjpUb1dlYkljb25UeXBlKHR5cGUpKTsKIH0KIAog
dm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpCkluZGV4
OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAJKHJldmlzaW9u
IDg1ODc5KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTM3LDYgKzEzNyw3IEBACiAjaW5jbHVkZSAiV2ViRm9ybUVsZW1l
bnQuaCIKICNpbmNsdWRlICJXZWJGcmFtZUNsaWVudC5oIgogI2luY2x1ZGUgIldlYkhpc3RvcnlJ
dGVtLmgiCisjaW5jbHVkZSAiV2ViSWNvblR5cGVVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJXZWJJ
bnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJXZWJOb2RlLmgiCiAjaW5jbHVkZSAiV2ViUGFzc3dv
cmRBdXRvY29tcGxldGVMaXN0ZW5lci5oIgpAQCAtNTE4LDE3ICs1MTksMjEgQEAgV2ViVVJMIFdl
YkZyYW1lSW1wbDo6dXJsKCkgY29uc3QKICAgICByZXR1cm4gZHMtPnJlcXVlc3QoKS51cmwoKTsK
IH0KIAotV2ViVVJMIFdlYkZyYW1lSW1wbDo6ZmF2SWNvblVSTCgpIGNvbnN0CitXZWJWZWN0b3I8
V2ViSWNvblVSTD4gV2ViRnJhbWVJbXBsOjpmYXZJY29uVVJMKGludCB3ZWJJY29uVHlwZXMpIGNv
bnN0CiB7CiAgICAgRnJhbWVMb2FkZXIqIGZyYW1lTG9hZGVyID0gbV9mcmFtZS0+bG9hZGVyKCk7
CisKICAgICAvLyBUaGUgVVJMIHRvIHRoZSBmYXZpY29uIG1heSBiZSBpbiB0aGUgaGVhZGVyLiBB
cyBzdWNoLCBvbmx5CiAgICAgLy8gYXNrIHRoZSBsb2FkZXIgZm9yIHRoZSBmYXZpY29uIGlmIGl0
J3MgZmluaXNoZWQgbG9hZGluZy4KICAgICBpZiAoZnJhbWVMb2FkZXItPnN0YXRlKCkgPT0gRnJh
bWVTdGF0ZUNvbXBsZXRlKSB7Ci0gICAgICAgIGNvbnN0IEtVUkwmIHVybCA9IGZyYW1lTG9hZGVy
LT5pY29uVVJMKCk7Ci0gICAgICAgIGlmICghdXJsLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJl
dHVybiB1cmw7CisgICAgICAgIGludCBpY29uVHlwZXMgPSBXZWJJY29uVHlwZVV0aWxpdGllczo6
VG9JY29uVHlwZXMod2ViSWNvblR5cGVzKTsKKyAgICAgICAgV1RGOjpWZWN0b3I8V2ViQ29yZTo6
SWNvblVSTD4gaWNvblVSTHMgPSBmcmFtZUxvYWRlci0+aWNvblVSTHMoaWNvblR5cGVzKTsKKyAg
ICAgICAgV2ViVmVjdG9yPFdlYkljb25VUkw+IHdlYkljb25VUkxzKGljb25VUkxzLnNpemUoKSk7
CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaWNvblVSTHMuc2l6ZSgpOyBpKyspCisg
ICAgICAgICAgICB3ZWJJY29uVVJMc1tpXSA9IChXZWJJY29uVVJMKGljb25VUkxzW2ldLm1faWNv
blVSTCwgV2ViSWNvblR5cGVVdGlsaXRpZXM6OlRvV2ViSWNvblR5cGUoaWNvblVSTHNbaV0ubV9p
Y29uVHlwZSkpKTsKKyAgICAgICAgcmV0dXJuIHdlYkljb25VUkxzOwogICAgIH0KLSAgICByZXR1
cm4gV2ViVVJMKCk7CisgICAgcmV0dXJuIFdlYlZlY3RvcjxXZWJJY29uVVJMPigpOwogfQogCiBX
ZWJVUkwgV2ViRnJhbWVJbXBsOjpvcGVuU2VhcmNoRGVzY3JpcHRpb25VUkwoKSBjb25zdApJbmRl
eDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmgJKHJldmlzaW9uIDg1
ODc5KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmgJKHdvcmtp
bmcgY29weSkKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRO
YW1lKGNvbnN0IFdlYlN0cmluZyYpOwogICAgIHZpcnR1YWwgbG9uZyBsb25nIGlkZW50aWZpZXIo
KSBjb25zdDsKICAgICB2aXJ0dWFsIFdlYlVSTCB1cmwoKSBjb25zdDsKLSAgICB2aXJ0dWFsIFdl
YlVSTCBmYXZJY29uVVJMKCkgY29uc3Q7CisgICAgdmlydHVhbCBXZWJWZWN0b3I8V2ViSWNvblVS
TD4gZmF2SWNvblVSTChpbnQpIGNvbnN0OwogICAgIHZpcnR1YWwgV2ViVVJMIG9wZW5TZWFyY2hE
ZXNjcmlwdGlvblVSTCgpIGNvbnN0OwogICAgIHZpcnR1YWwgV2ViU3RyaW5nIGVuY29kaW5nKCkg
Y29uc3Q7CiAgICAgdmlydHVhbCBXZWJTaXplIHNjcm9sbE9mZnNldCgpIGNvbnN0OwpJbmRleDog
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSWNvblR5cGVVdGlsaXRpZXMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkljb25UeXBlVXRpbGl0aWVz
LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkljb25U
eXBlVXRpbGl0aWVzLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmli
dXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKworI2luY2x1ZGUgIldlYkljb25UeXBlVXRpbGl0aWVzLmgiCisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitXZWJDb3JlOjpJY29uVHlwZSBXZWJJY29uVHlwZVV0aWxpdGllczo6VG9J
Y29uVHlwZShXZWJJY29uVHlwZSB3ZWJJY29uVHlwZSkKK3sKKyAgICBXZWJDb3JlOjpJY29uVHlw
ZSBpY29uVHlwZSA9IFdlYkNvcmU6OkludmFsaWRJY29uOworICAgIHN3aXRjaCAod2ViSWNvblR5
cGUpIHsKKyAgICBjYXNlIEZhdmljb246CisgICAgICAgIGljb25UeXBlID0gV2ViQ29yZTo6RmF2
aWNvbjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUb3VjaEljb246CisgICAgICAgIGljb25U
eXBlID0gV2ViQ29yZTo6VG91Y2hJY29uOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFRvdWNo
UHJlY29tcG9zZWRJY29uOgorICAgICAgICBpY29uVHlwZSA9IFdlYkNvcmU6OlRvdWNoUHJlY29t
cG9zZWRJY29uOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsK
KyAgICB9CisgICAgcmV0dXJuIGljb25UeXBlOworfQorCitXZWJJY29uVHlwZSBXZWJJY29uVHlw
ZVV0aWxpdGllczo6VG9XZWJJY29uVHlwZShXZWJDb3JlOjpJY29uVHlwZSBpY29uVHlwZSkKK3sK
KyAgICBXZWJJY29uVHlwZSB0eXBlID0gSW52YWxpZEljb247CisgICAgc3dpdGNoIChpY29uVHlw
ZSkgeworICAgIGNhc2UgV2ViQ29yZTo6RmF2aWNvbjoKKyAgICAgICAgdHlwZSA9IEZhdmljb247
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2ViQ29yZTo6VG91Y2hJY29uOgorICAgICAgICB0
eXBlID0gVG91Y2hJY29uOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdlYkNvcmU6OlRvdWNo
UHJlY29tcG9zZWRJY29uOgorICAgICAgICB0eXBlID0gVG91Y2hQcmVjb21wb3NlZEljb247Cisg
ICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBy
ZXR1cm4gdHlwZTsKK30KKworaW50IFdlYkljb25UeXBlVXRpbGl0aWVzOjpUb0ljb25UeXBlcyhp
bnQgd2ViSWNvblR5cGVzKQoreworICAgIGludCBpY29uVHlwZXMgPSAwOworICAgIGlmICh3ZWJJ
Y29uVHlwZXMgJiBGYXZpY29uKQorICAgICAgICBpY29uVHlwZXMgfD0gV2ViQ29yZTo6RmF2aWNv
bjsKKyAgICBpZiAod2ViSWNvblR5cGVzICYgVG91Y2hJY29uKQorICAgICAgICBpY29uVHlwZXMg
fD0gV2ViQ29yZTo6VG91Y2hJY29uOworICAgIGlmICh3ZWJJY29uVHlwZXMgJiBUb3VjaFByZWNv
bXBvc2VkSWNvbikKKyAgICAgICAgaWNvblR5cGVzIHw9IFdlYkNvcmU6OlRvdWNoUHJlY29tcG9z
ZWRJY29uOworCisgICAgcmV0dXJuIGljb25UeXBlczsKK30KKworfQoKUHJvcGVydHkgY2hhbmdl
cyBvbjogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSWNvblR5cGVVdGlsaXRpZXMuY3Bw
Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkljb25UeXBlVXRpbGl0aWVzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSWNvblR5cGVVdGlsaXRpZXMuaAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkljb25UeXBlVXRpbGl0aWVz
LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkljb25UeXBlVXRpbGl0
aWVzX2gKKyNkZWZpbmUgV2ViSWNvblR5cGVVdGlsaXRpZXNfaAorCisjaW5jbHVkZSAiSWNvblVS
TC5oIgorI2luY2x1ZGUgIldlYkljb25VUkwuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Ns
YXNzIFdlYkljb25UeXBlVXRpbGl0aWVzIHsKKyBwdWJsaWM6CisgICAgc3RhdGljIFdlYkNvcmU6
Okljb25UeXBlIFRvSWNvblR5cGUoV2ViSWNvblR5cGUpOworICAgIHN0YXRpYyBXZWJJY29uVHlw
ZSBUb1dlYkljb25UeXBlKFdlYkNvcmU6Okljb25UeXBlKTsKKyAgICBzdGF0aWMgaW50IFRvSWNv
blR5cGVzKGludCk7Cit9OworCit9CisKKyNlbmRpZiAvLyBXZWJJY29uVHlwZVV0aWxpdGllc19o
CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJY29u
VHlwZVV0aWxpdGllcy5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92594</attachid>
            <date>2011-05-06 09:57:51 -0700</date>
            <delta_ts>2011-05-06 14:40:57 -0700</delta_ts>
            <desc>Address all comments</desc>
            <filename>patch.1</filename>
            <type>text/plain</type>
            <size>15936</size>
            <attacher>michaelbai</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA4NTg3OSkKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzQg
QEAKKzIwMTEtMDUtMDUgIFRhbyBCYWkgIDxtaWNoYWVsYmFpQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBIYW5kbGUgdGhlIHRv
dWNoIGljb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02MDI0NworCisgICAgICAgIEFkZGVkIFdlYkljb25VUkwgZm9yIHRoZSBjb3JyZXNwb25kaW5n
IEljb25VUkwuCisgICAgICAgIEFkZGVkIFdlYkljb25UeXBlVXRpbGl0aWVzIHRvIGhlbHAgY29u
dmVydCBpY29uIHR5cGUgYW1vbmcgdGhlIGljb24gdHlwZQorICAgICAgICBhbmQgd2ViIGljb24g
dHlwZS4KKyAgICAgICAgQWRkZWQgYSBwYXJhbWV0ZXIgdG8gZmF2SWNvblVSTCgpIHRvIHNwZWNp
ZnkgdGhlIHR5cGUgb2YgaWNvbiBuZWVkIHRvCisgICAgICAgIHJldHVybi4KKworICAgICAgICAq
IFdlYktpdC5neXA6CisgICAgICAgICogZmVhdHVyZXMuZ3lwaToKKyAgICAgICAgKiBwdWJsaWMv
V2ViRnJhbWUuaDoKKyAgICAgICAgKiBwdWJsaWMvV2ViRnJhbWVDbGllbnQuaDoKKyAgICAgICAg
KFdlYktpdDo6V2ViRnJhbWVDbGllbnQ6OmRpZENoYW5nZUljb25zKToKKyAgICAgICAgKiBwdWJs
aWMvV2ViSWNvblVSTC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViSWNvblVSTDo6V2Vi
SWNvblVSTCk6CisgICAgICAgICogc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29u
cyk6CisgICAgICAgICogc3JjL1dlYkZyYW1lSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkZyYW1lSW1wbDo6ZmF2SWNvblVSTCk6CisgICAgICAgICogc3JjL1dlYkZyYW1lSW1wbC5oOgor
ICAgICAgICAqIHNyYy9XZWJJY29uVHlwZVV0aWxpdGllcy5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViS2l0OjpXZWJJY29uVHlwZVV0aWxpdGllczo6VG9JY29uVHlwZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYkljb25UeXBlVXRpbGl0aWVzOjpUb1dlYkljb25UeXBlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViSWNvblR5cGVVdGlsaXRpZXM6OlRvSWNvblR5cGVzKToKKyAgICAgICAgKiBzcmMvV2Vi
SWNvblR5cGVVdGlsaXRpZXMuaDogQWRkZWQuCisKIDIwMTEtMDUtMDUgIEFkYW0gQmFydGggIDxh
YmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBSb2xsIENocm9taXVtIERFUFMuCkluZGV4OiBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCShyZXZpc2lvbiA4NTg3OSkKKysrIFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vV2ViS2l0Lmd5cAkod29ya2luZyBjb3B5KQpAQCAtMTg1LDYgKzE4NSw3IEBA
CiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJIVFRQQm9keS5oJywKICAgICAgICAgICAgICAg
ICAncHVibGljL1dlYkhUVFBMb2FkSW5mby5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dl
Ykljb25Mb2FkaW5nQ29tcGxldGlvbi5oJywKKyAgICAgICAgICAgICAgICAncHVibGljL1dlYklj
b25UeXBlLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViSW1hZ2UuaCcsCiAgICAgICAg
ICAgICAgICAgJ3B1YmxpYy9XZWJJbWFnZURlY29kZXIuaCcsCiAgICAgICAgICAgICAgICAgJ3B1
YmxpYy9XZWJJREJDYWxsYmFja3MuaCcsCkBAIC00NzUsNiArNDc2LDggQEAKICAgICAgICAgICAg
ICAgICAnc3JjL1dlYkhpc3RvcnlJdGVtLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJI
VFRQQm9keS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViSFRUUExvYWRJbmZvLmNwcCcs
CisgICAgICAgICAgICAgICAgJ3NyYy9XZWJJY29uVHlwZVV0aWxpdGllcy5jcHAnLAorICAgICAg
ICAgICAgICAgICdzcmMvV2ViSWNvblR5cGVVdGlsaXRpZXMuaCcsCiAgICAgICAgICAgICAgICAg
J3NyYy9XZWJJY29uTG9hZGluZ0NvbXBsZXRpb25JbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAg
J3NyYy9XZWJJY29uTG9hZGluZ0NvbXBsZXRpb25JbXBsLmgnLAogICAgICAgICAgICAgICAgICdz
cmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5jcHAnLApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1
bS9mZWF0dXJlcy5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vZmVh
dHVyZXMuZ3lwaQkocmV2aXNpb24gODU4NzkpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL2Zl
YXR1cmVzLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTg4LDYgKzg4LDcgQEAKICAgICAgICAgJ0VO
QUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1Q9MScsCiAgICAgICAgICdFTkFCTEVfU1ZHX1VTRT0xJywK
ICAgICAgICAgJ0VOQUJMRV9UT1VDSF9FVkVOVFM9MScsCisgICAgICAgICdFTkFCTEVfVE9VQ0hf
SUNPTl9MT0FESU5HPTEnLAogICAgICAgICAnRU5BQkxFX1Y4X1NDUklQVF9ERUJVR19TRVJWRVI9
MScsCiAgICAgICAgICdFTkFCTEVfVklERU89MScsCiAgICAgICAgICdFTkFCTEVfV0VCX0FVRElP
PTAnLApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZS5oCShyZXZp
c2lvbiA4NTg3OSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2luY2x1ZGUgIldlYkNhbnZhcy5o
IgogI2luY2x1ZGUgIldlYkZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRlICJXZWJJY29uVVJMLmgiCiAj
aW5jbHVkZSAiV2ViTm9kZS5oIgogI2luY2x1ZGUgIldlYlVSTC5oIgogCkBAIC0xMjksOSArMTMw
LDkgQEAgcHVibGljOgogICAgIC8vIGRhdGFTb3VyY2UoKS0+cmVxdWVzdCgpLnVybCgpLgogICAg
IHZpcnR1YWwgV2ViVVJMIHVybCgpIGNvbnN0ID0gMDsKIAotICAgIC8vIFRoZSB1cmwgb2YgdGhl
IGZhdmljb24gKGlmIGFueSkgc3BlY2lmaWVkIGJ5IHRoZSBkb2N1bWVudCBsb2FkZWQgaW4KKyAg
ICAvLyBUaGUgdXJscyBvZiB0aGUgZmF2aWNvbiAoaWYgYW55KSBzcGVjaWZpZWQgYnkgdGhlIGRv
Y3VtZW50IGxvYWRlZCBpbgogICAgIC8vIHRoaXMgZnJhbWUuCi0gICAgdmlydHVhbCBXZWJVUkwg
ZmF2SWNvblVSTCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFdlYlZlY3RvcjxXZWJJY29uVVJM
PiBmYXZJY29uVVJMKGludCkgY29uc3QgPSAwOwogCiAgICAgLy8gVGhlIHVybCBvZiB0aGUgT3Bl
blNlYXJjaCBEZXNyaXB0aW9uIERvY3VtZW50IChpZiBhbnkpIHNwZWNpZmllZCBieQogICAgIC8v
IHRoZSBkb2N1bWVudCBsb2FkZWQgaW4gdGhpcyBmcmFtZS4KSW5kZXg6IFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYkZyYW1lQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQuaAkocmV2aXNpb24gODU4NzkpCisr
KyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAKICNpbmNsdWRlICJXZWJDb21tb24uaCIKICNpbmNs
dWRlICJXZWJGaWxlU3lzdGVtLmgiCisjaW5jbHVkZSAiV2ViSWNvblVSTC5oIgogI2luY2x1ZGUg
IldlYk5hdmlnYXRpb25Qb2xpY3kuaCIKICNpbmNsdWRlICJXZWJOYXZpZ2F0aW9uVHlwZS5oIgog
I2luY2x1ZGUgIldlYlN0b3JhZ2VRdW90YVR5cGUuaCIKQEAgLTIwMiw3ICsyMDMsNyBAQCBwdWJs
aWM6CiAgICAgfQogCiAgICAgLy8gVGhlIGljb25zIGZvciB0aGUgcGFnZSBoYXZlIGNoYW5nZWQu
Ci0gICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUljb25zKFdlYkZyYW1lKikgeyB9CisgICAgdmly
dHVhbCB2b2lkIGRpZENoYW5nZUljb25zKFdlYkZyYW1lKiwgV2ViSWNvblR5cGUpIHsgfQogCiAg
ICAgLy8gVGhlIGZyYW1lJ3MgZG9jdW1lbnQgZmluaXNoZWQgbG9hZGluZy4KICAgICB2aXJ0dWFs
IHZvaWQgZGlkRmluaXNoRG9jdW1lbnRMb2FkKFdlYkZyYW1lKikgeyB9CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJY29uVVJMLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSWNvblVSTC5oCShyZXZpc2lvbiAwKQorKysgU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSWNvblVSTC5oCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCBy
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
R0UuCisgKi8KKworI2lmbmRlZiBXZWJJY29uVVJMX2gKKyNkZWZpbmUgV2ViSWNvblVSTF9oCisK
KyNpbmNsdWRlICJXZWJVUkwuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gV2ViSWNv
blR5cGUgeworICAgIEludmFsaWRJY29uID0gMCwKKyAgICBGYXZpY29uID0gMSA8PCAwLAorICAg
IFRvdWNoSWNvbiA9IDEgPDwgMSwKKyAgICBUb3VjaFByZWNvbXBvc2VkSWNvbiA9IDEgPDwgMgor
fTsKKworc3RydWN0IFdlYkljb25VUkwgeworICAgIFdlYkljb25VUkwoKQorICAgICAgICA6IGlj
b25UeXBlKEludmFsaWRJY29uKQorICAgIHsKKyAgICB9CisKKyAgICBXZWJJY29uVVJMKGNvbnN0
IFdlYlVSTCYgdXJsLCBXZWJJY29uVHlwZSB0eXBlKQorICAgICAgICA6IGljb25UeXBlKHR5cGUp
CisgICAgICAgICwgaWNvblVSTCh1cmwpCisgICAgeworICAgIH0KKworICAgIFdlYkljb25UeXBl
IGljb25UeXBlOworICAgIFdlYlVSTCBpY29uVVJMOworfTsKKworfQorCisjZW5kaWYgLy8gV2Vi
SWNvblVSTF9oCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJJY29uVVJMLmgKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExG
CgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBs
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRl
ckNsaWVudEltcGwuY3BwCShyZXZpc2lvbiA4NTg3OSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxLDYg
KzYxLDcgQEAKICNpbmNsdWRlICJXZWJGb3JtRWxlbWVudC5oIgogI2luY2x1ZGUgIldlYkZyYW1l
Q2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVJbXBsLmgiCisjaW5jbHVkZSAiV2ViSWNvblR5
cGVVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJXZWJLaXQuaCIKICNpbmNsdWRlICJXZWJLaXRDbGll
bnQuaCIKICNpbmNsdWRlICJXZWJNaW1lUmVnaXN0cnkuaCIKQEAgLTc2MCw3ICs3NjEsNyBAQCB2
b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlzcGF0Y2hEaWRSCiB2b2lkIEZyYW1lTG9hZGVy
Q2xpZW50SW1wbDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyhXZWJDb3JlOjpJY29uVHlwZSB0eXBl
KQogewogICAgIGlmIChtX3dlYkZyYW1lLT5jbGllbnQoKSkKLSAgICAgICAgbV93ZWJGcmFtZS0+
Y2xpZW50KCktPmRpZENoYW5nZUljb25zKG1fd2ViRnJhbWUpOworICAgICAgICBtX3dlYkZyYW1l
LT5jbGllbnQoKS0+ZGlkQ2hhbmdlSWNvbnMobV93ZWJGcmFtZSwgV2ViSWNvblR5cGVVdGlsaXRp
ZXM6OnRvV2ViSWNvblR5cGUodHlwZSkpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1w
bDo6ZGlzcGF0Y2hEaWRDb21taXRMb2FkKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkZyYW1lSW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAkocmV2aXNpb24gODU4NzkpCisrKyBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzcsNiAr
MTM3LDcgQEAKICNpbmNsdWRlICJXZWJGb3JtRWxlbWVudC5oIgogI2luY2x1ZGUgIldlYkZyYW1l
Q2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViSGlzdG9yeUl0ZW0uaCIKKyNpbmNsdWRlICJXZWJJY29u
VHlwZVV0aWxpdGllcy5oIgogI2luY2x1ZGUgIldlYklucHV0RWxlbWVudC5oIgogI2luY2x1ZGUg
IldlYk5vZGUuaCIKICNpbmNsdWRlICJXZWJQYXNzd29yZEF1dG9jb21wbGV0ZUxpc3RlbmVyLmgi
CkBAIC01MTgsMTcgKzUxOSwyMSBAQCBXZWJVUkwgV2ViRnJhbWVJbXBsOjp1cmwoKSBjb25zdAog
ICAgIHJldHVybiBkcy0+cmVxdWVzdCgpLnVybCgpOwogfQogCi1XZWJVUkwgV2ViRnJhbWVJbXBs
OjpmYXZJY29uVVJMKCkgY29uc3QKK1dlYlZlY3RvcjxXZWJJY29uVVJMPiBXZWJGcmFtZUltcGw6
OmZhdkljb25VUkwoaW50IHdlYkljb25UeXBlcykgY29uc3QKIHsKICAgICBGcmFtZUxvYWRlciog
ZnJhbWVMb2FkZXIgPSBtX2ZyYW1lLT5sb2FkZXIoKTsKKwogICAgIC8vIFRoZSBVUkwgdG8gdGhl
IGZhdmljb24gbWF5IGJlIGluIHRoZSBoZWFkZXIuIEFzIHN1Y2gsIG9ubHkKICAgICAvLyBhc2sg
dGhlIGxvYWRlciBmb3IgdGhlIGZhdmljb24gaWYgaXQncyBmaW5pc2hlZCBsb2FkaW5nLgogICAg
IGlmIChmcmFtZUxvYWRlci0+c3RhdGUoKSA9PSBGcmFtZVN0YXRlQ29tcGxldGUpIHsKLSAgICAg
ICAgY29uc3QgS1VSTCYgdXJsID0gZnJhbWVMb2FkZXItPmljb25VUkwoKTsKLSAgICAgICAgaWYg
KCF1cmwuaXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuIHVybDsKKyAgICAgICAgaW50IGlj
b25UeXBlcyA9IFdlYkljb25UeXBlVXRpbGl0aWVzOjp0b0ljb25UeXBlcyh3ZWJJY29uVHlwZXMp
OworICAgICAgICBXVEY6OlZlY3RvcjxXZWJDb3JlOjpJY29uVVJMPiBpY29uVVJMcyA9IGZyYW1l
TG9hZGVyLT5pY29uVVJMcyhpY29uVHlwZXMpOworICAgICAgICBXZWJWZWN0b3I8V2ViSWNvblVS
TD4gd2ViSWNvblVSTHMoaWNvblVSTHMuc2l6ZSgpKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBpY29uVVJMcy5zaXplKCk7IGkrKykKKyAgICAgICAgICAgIHdlYkljb25VUkxzW2ld
ID0gV2ViSWNvblVSTChpY29uVVJMc1tpXS5tX2ljb25VUkwsIFdlYkljb25UeXBlVXRpbGl0aWVz
Ojp0b1dlYkljb25UeXBlKGljb25VUkxzW2ldLm1faWNvblR5cGUpKTsKKyAgICAgICAgcmV0dXJu
IHdlYkljb25VUkxzOwogICAgIH0KLSAgICByZXR1cm4gV2ViVVJMKCk7CisgICAgcmV0dXJuIFdl
YlZlY3RvcjxXZWJJY29uVVJMPigpOwogfQogCiBXZWJVUkwgV2ViRnJhbWVJbXBsOjpvcGVuU2Vh
cmNoRGVzY3JpcHRpb25VUkwoKSBjb25zdApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViRnJhbWVJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViRnJhbWVJbXBsLmgJKHJldmlzaW9uIDg1ODc5KQorKysgU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViRnJhbWVJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTcwLDcgKzcwLDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXROYW1lKGNvbnN0IFdlYlN0cmluZyYpOwogICAg
IHZpcnR1YWwgbG9uZyBsb25nIGlkZW50aWZpZXIoKSBjb25zdDsKICAgICB2aXJ0dWFsIFdlYlVS
TCB1cmwoKSBjb25zdDsKLSAgICB2aXJ0dWFsIFdlYlVSTCBmYXZJY29uVVJMKCkgY29uc3Q7Cisg
ICAgdmlydHVhbCBXZWJWZWN0b3I8V2ViSWNvblVSTD4gZmF2SWNvblVSTChpbnQpIGNvbnN0Owog
ICAgIHZpcnR1YWwgV2ViVVJMIG9wZW5TZWFyY2hEZXNjcmlwdGlvblVSTCgpIGNvbnN0OwogICAg
IHZpcnR1YWwgV2ViU3RyaW5nIGVuY29kaW5nKCkgY29uc3Q7CiAgICAgdmlydHVhbCBXZWJTaXpl
IHNjcm9sbE9mZnNldCgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViSWNvblR5cGVVdGlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkljb25UeXBlVXRpbGl0aWVzLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkljb25UeXBlVXRpbGl0aWVzLmNwcAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw4MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIldlYklj
b25UeXBlVXRpbGl0aWVzLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJDb3JlOjpJY29u
VHlwZSBXZWJJY29uVHlwZVV0aWxpdGllczo6dG9JY29uVHlwZShXZWJJY29uVHlwZSB3ZWJJY29u
VHlwZSkKK3sKKyAgICBzd2l0Y2ggKHdlYkljb25UeXBlKSB7CisgICAgY2FzZSBJbnZhbGlkSWNv
bjoKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkludmFsaWRJY29uOworICAgIGNhc2UgRmF2aWNv
bjoKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkZhdmljb247CisgICAgY2FzZSBUb3VjaEljb246
CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpUb3VjaEljb247CisgICAgY2FzZSBUb3VjaFByZWNv
bXBvc2VkSWNvbjoKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlRvdWNoUHJlY29tcG9zZWRJY29u
OworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6
SW52YWxpZEljb247Cit9CisKK1dlYkljb25UeXBlIFdlYkljb25UeXBlVXRpbGl0aWVzOjp0b1dl
Ykljb25UeXBlKFdlYkNvcmU6Okljb25UeXBlIGljb25UeXBlKQoreworICAgIHN3aXRjaCAoaWNv
blR5cGUpIHsKKyAgICBjYXNlIFdlYkNvcmU6OkludmFsaWRJY29uOgorICAgICAgICByZXR1cm4g
SW52YWxpZEljb247CisgICAgY2FzZSBXZWJDb3JlOjpGYXZpY29uOgorICAgICAgICByZXR1cm4g
RmF2aWNvbjsKKyAgICBjYXNlIFdlYkNvcmU6OlRvdWNoSWNvbjoKKyAgICAgICAgcmV0dXJuIFRv
dWNoSWNvbjsKKyAgICBjYXNlIFdlYkNvcmU6OlRvdWNoUHJlY29tcG9zZWRJY29uOgorICAgICAg
ICByZXR1cm4gVG91Y2hQcmVjb21wb3NlZEljb247CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIHJldHVybiBJbnZhbGlkSWNvbjsKK30KKworaW50IFdlYkljb25UeXBlVXRp
bGl0aWVzOjp0b0ljb25UeXBlcyhpbnQgd2ViSWNvblR5cGVzKQoreworICAgIGludCBpY29uVHlw
ZXMgPSAwOworICAgIGlmICh3ZWJJY29uVHlwZXMgJiBGYXZpY29uKQorICAgICAgICBpY29uVHlw
ZXMgfD0gV2ViQ29yZTo6RmF2aWNvbjsKKyAgICBpZiAod2ViSWNvblR5cGVzICYgVG91Y2hJY29u
KQorICAgICAgICBpY29uVHlwZXMgfD0gV2ViQ29yZTo6VG91Y2hJY29uOworICAgIGlmICh3ZWJJ
Y29uVHlwZXMgJiBUb3VjaFByZWNvbXBvc2VkSWNvbikKKyAgICAgICAgaWNvblR5cGVzIHw9IFdl
YkNvcmU6OlRvdWNoUHJlY29tcG9zZWRJY29uOworCisgICAgcmV0dXJuIGljb25UeXBlczsKK30K
KworfQoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
SWNvblR5cGVVdGlsaXRpZXMuY3BwCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAg
KyBMRgoKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkljb25UeXBlVXRpbGl0
aWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSWNvblR5
cGVVdGlsaXRpZXMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkljb25UeXBlVXRpbGl0aWVzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
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
ZGVmIFdlYkljb25UeXBlVXRpbGl0aWVzX2gKKyNkZWZpbmUgV2ViSWNvblR5cGVVdGlsaXRpZXNf
aAorCisjaW5jbHVkZSAiSWNvblVSTC5oIgorI2luY2x1ZGUgIldlYkljb25VUkwuaCIKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkljb25UeXBlVXRpbGl0aWVzIHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgV2ViQ29yZTo6SWNvblR5cGUgdG9JY29uVHlwZShXZWJJY29uVHlwZSk7Cisg
ICAgc3RhdGljIFdlYkljb25UeXBlIHRvV2ViSWNvblR5cGUoV2ViQ29yZTo6SWNvblR5cGUpOwor
ICAgIHN0YXRpYyBpbnQgdG9JY29uVHlwZXMoaW50IHdlYkljb25UeXBlcyk7Cit9OworCit9CisK
KyNlbmRpZiAvLyBXZWJJY29uVHlwZVV0aWxpdGllc19oCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJY29uVHlwZVV0aWxpdGllcy5oCl9fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoK
</data>
<flag name="review"
          id="85582"
          type_id="1"
          status="-"
          setter="fishd"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>92643</attachid>
            <date>2011-05-06 14:40:57 -0700</date>
            <delta_ts>2011-05-06 14:47:44 -0700</delta_ts>
            <desc>Removed the utitilies class, used COMPILE_ASSERT_MATCHING_ENUM.</desc>
            <filename>patch.2</filename>
            <type>application/octet-stream</type>
            <size>11433</size>
            <attacher>michaelbai</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA4NTk3MSkKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMTEtMDUtMDUgIFRhbyBCYWkgIDxtaWNoYWVsYmFpQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBIYW5kbGUgdGhlIHRv
dWNoIGljb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02MDI0NworCisgICAgICAgIEFkZGVkIFdlYkljb25VUkwgZm9yIHRoZSBjb3JyZXNwb25kaW5n
IEljb25VUkwuCisgICAgICAgIEFkZGVkIGEgcGFyYW1ldGVyIHRvIGZhdkljb25VUkwoKSB0byBz
cGVjaWZ5IHRoZSB0eXBlIG9mIGljb24gbmVlZCB0bworICAgICAgICByZXR1cm4uCisKIDIwMTEt
MDUtMDYgIEpvaG4gQWJkLUVsLU1hbGVrICA8amFtQGNocm9taXVtLm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBKYW1lcyBSb2JpbnNvbi4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
V2ViS2l0Lmd5cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5n
eXAJKHJldmlzaW9uIDg1OTcxKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lw
CSh3b3JraW5nIGNvcHkpCkBAIC0xODUsNiArMTg1LDcgQEAKICAgICAgICAgICAgICAgICAncHVi
bGljL1dlYkhUVFBCb2R5LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViSFRUUExvYWRJ
bmZvLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViSWNvbkxvYWRpbmdDb21wbGV0aW9u
LmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViSWNvblR5cGUuaCcsCiAgICAgICAgICAg
ICAgICAgJ3B1YmxpYy9XZWJJbWFnZS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYklt
YWdlRGVjb2Rlci5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYklEQkNhbGxiYWNrcy5o
JywKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lwaQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkJKHJldmlzaW9uIDg1OTcx
KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpCSh3b3JraW5nIGNvcHkp
CkBAIC04OCw2ICs4OCw3IEBACiAgICAgICAgICdFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUPTEn
LAogICAgICAgICAnRU5BQkxFX1NWR19VU0U9MScsCiAgICAgICAgICdFTkFCTEVfVE9VQ0hfRVZF
TlRTPTEnLAorICAgICAgICAnRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORz0xJywKICAgICAgICAg
J0VOQUJMRV9WOF9TQ1JJUFRfREVCVUdfU0VSVkVSPTEnLAogICAgICAgICAnRU5BQkxFX1ZJREVP
PTEnLAogICAgICAgICAnRU5BQkxFX1dFQl9BVURJTz0wJywKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYkZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViRnJhbWUuaAkocmV2aXNpb24gODU5NzEpCisrKyBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICsz
Myw3IEBACiAKICNpbmNsdWRlICJXZWJDYW52YXMuaCIKICNpbmNsdWRlICJXZWJGaWxlU3lzdGVt
LmgiCisjaW5jbHVkZSAiV2ViSWNvblVSTC5oIgogI2luY2x1ZGUgIldlYk5vZGUuaCIKICNpbmNs
dWRlICJXZWJVUkwuaCIKIApAQCAtMTI5LDkgKzEzMCw5IEBAIHB1YmxpYzoKICAgICAvLyBkYXRh
U291cmNlKCktPnJlcXVlc3QoKS51cmwoKS4KICAgICB2aXJ0dWFsIFdlYlVSTCB1cmwoKSBjb25z
dCA9IDA7CiAKLSAgICAvLyBUaGUgdXJsIG9mIHRoZSBmYXZpY29uIChpZiBhbnkpIHNwZWNpZmll
ZCBieSB0aGUgZG9jdW1lbnQgbG9hZGVkIGluCi0gICAgLy8gdGhpcyBmcmFtZS4KLSAgICB2aXJ0
dWFsIFdlYlVSTCBmYXZJY29uVVJMKCkgY29uc3QgPSAwOworICAgIC8vIFRoZSB1cmxzIG9mIHRo
ZSBnaXZlbiBjb21iaW5hdGlvbiB0eXBlcyBvZiBmYXZpY29uIChpZiBhbnkpIHNwZWNpZmllZCBi
eQorICAgIC8vIHRoZSBkb2N1bWVudCBsb2FkZWQgaW4gdGhpcyBmcmFtZS4KKyAgICB2aXJ0dWFs
IFdlYlZlY3RvcjxXZWJJY29uVVJMPiBmYXZJY29uVVJMKGludCBpY29uVHlwZXMpIGNvbnN0ID0g
MDsKIAogICAgIC8vIFRoZSB1cmwgb2YgdGhlIE9wZW5TZWFyY2ggRGVzcmlwdGlvbiBEb2N1bWVu
dCAoaWYgYW55KSBzcGVjaWZpZWQgYnkKICAgICAvLyB0aGUgZG9jdW1lbnQgbG9hZGVkIGluIHRo
aXMgZnJhbWUuCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNs
aWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZy
YW1lQ2xpZW50LmgJKHJldmlzaW9uIDg1OTcxKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViRnJhbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAog
CiAjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCiAjaW5jbHVkZSAiV2ViRmlsZVN5c3RlbS5oIgorI2lu
Y2x1ZGUgIldlYkljb25VUkwuaCIKICNpbmNsdWRlICJXZWJOYXZpZ2F0aW9uUG9saWN5LmgiCiAj
aW5jbHVkZSAiV2ViTmF2aWdhdGlvblR5cGUuaCIKICNpbmNsdWRlICJXZWJTdG9yYWdlUXVvdGFU
eXBlLmgiCkBAIC0yMDIsNyArMjAzLDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIC8vIFRoZSBp
Y29ucyBmb3IgdGhlIHBhZ2UgaGF2ZSBjaGFuZ2VkLgotICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFu
Z2VJY29ucyhXZWJGcmFtZSopIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VJY29ucyhX
ZWJGcmFtZSosIFdlYkljb25VUkw6OldlYkljb25UeXBlKSB7IH0KIAogICAgIC8vIFRoZSBmcmFt
ZSdzIGRvY3VtZW50IGZpbmlzaGVkIGxvYWRpbmcuCiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlz
aERvY3VtZW50TG9hZChXZWJGcmFtZSopIHsgfQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViSWNvblVSTC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYkljb25VUkwuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYkljb25VUkwuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgV2ViSWNvblVSTF9oCisjZGVmaW5lIFdlYkljb25VUkxfaAorCisjaW5jbHVkZSAiV2Vi
VVJMLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdHJ1Y3QgV2ViSWNvblVSTCB7CisgICAg
ZW51bSBXZWJJY29uVHlwZSB7CisgICAgICAgIEludmFsaWRJY29uID0gMCwKKyAgICAgICAgRmF2
aWNvbiA9IDEgPDwgMCwKKyAgICAgICAgVG91Y2hJY29uID0gMSA8PCAxLAorICAgICAgICBUb3Vj
aFByZWNvbXBvc2VkSWNvbiA9IDEgPDwgMgorICAgIH07CisKKyAgICBXZWJJY29uVVJMKCkKKyAg
ICAgICAgOiBpY29uVHlwZShJbnZhbGlkSWNvbikKKyAgICB7CisgICAgfQorCisgICAgV2ViSWNv
blVSTChjb25zdCBXZWJVUkwmIHVybCwgV2ViSWNvblR5cGUgdHlwZSkKKyAgICAgICAgOiBpY29u
VHlwZSh0eXBlKQorICAgICAgICAsIGljb25VUkwodXJsKQorICAgIHsKKyAgICB9CisKKyAgICBX
ZWJJY29uVHlwZSBpY29uVHlwZTsKKyAgICBXZWJVUkwgaWNvblVSTDsKK307CisKK30KKworI2Vu
ZGlmIC8vIFdlYkljb25VUkxfaAoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViSWNvblVSTC5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5
bGUKICAgKyBMRgoKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2VydE1hdGNo
aW5nRW51bXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fz
c2VydE1hdGNoaW5nRW51bXMuY3BwCShyZXZpc2lvbiA4NTk3MSkKKysrIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
Niw2ICs0Niw3IEBACiAjaW5jbHVkZSAiR2VvbG9jYXRpb25FcnJvci5oIgogI2luY2x1ZGUgIkdl
b2xvY2F0aW9uUG9zaXRpb24uaCIKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCisjaW5j
bHVkZSAiSWNvblVSTC5oIgogI2luY2x1ZGUgIklEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlLmgi
CiAjaW5jbHVkZSAiSURCS2V5LmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKQEAgLTcyLDYg
KzczLDcgQEAKICNpbmNsdWRlICJXZWJHZW9sb2NhdGlvblBvc2l0aW9uLmgiCiAjaW5jbHVkZSAi
V2ViSURCRmFjdG9yeS5oIgogI2luY2x1ZGUgIldlYklEQktleS5oIgorI2luY2x1ZGUgIldlYklj
b25VUkwuaCIKICNpbmNsdWRlICJXZWJJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJXZWJNZWRp
YVBsYXllci5oIgogI2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvblByZXNlbnRlci5oIgpAQCAtMzAy
LDYgKzMwNCwxMiBAQCBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYkZvbnREZXNjCiBD
T01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYkZvbnREZXNjcmlwdGlvbjo6V2VpZ2h0Tm9y
bWFsLCBGb250V2VpZ2h0Tm9ybWFsKTsKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2Vi
Rm9udERlc2NyaXB0aW9uOjpXZWlnaHRCb2xkLCBGb250V2VpZ2h0Qm9sZCk7CiAKKworQ09NUElM
RV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJY29uVVJMOjpJbnZhbGlkSWNvbiwgSW52YWxpZElj
b24pOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJY29uVVJMOjpGYXZpY29uLCBG
YXZpY29uKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViSWNvblVSTDo6VG91Y2hJ
Y29uLCBUb3VjaEljb24pOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJY29uVVJM
OjpUb3VjaFByZWNvbXBvc2VkSWNvbiwgVG91Y2hQcmVjb21wb3NlZEljb24pOworCiBDT01QSUxF
X0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYk5vZGU6OkVsZW1lbnROb2RlLCBOb2RlOjpFTEVNRU5U
X05PREUpOwogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJOb2RlOjpBdHRyaWJ1dGVO
b2RlLCBOb2RlOjpBVFRSSUJVVEVfTk9ERSk7CiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVN
KFdlYk5vZGU6OlRleHROb2RlLCBOb2RlOjpURVhUX05PREUpOwpJbmRleDogU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCShyZXZp
c2lvbiA4NTk3MSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xp
ZW50SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2MCw3ICs3NjAsNyBAQCB2b2lkIEZyYW1l
TG9hZGVyQ2xpZW50SW1wbDo6ZGlzcGF0Y2hEaWRSCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1w
bDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyhXZWJDb3JlOjpJY29uVHlwZSB0eXBlKQogewogICAg
IGlmIChtX3dlYkZyYW1lLT5jbGllbnQoKSkKLSAgICAgICAgbV93ZWJGcmFtZS0+Y2xpZW50KCkt
PmRpZENoYW5nZUljb25zKG1fd2ViRnJhbWUpOworICAgICAgICBtX3dlYkZyYW1lLT5jbGllbnQo
KS0+ZGlkQ2hhbmdlSWNvbnMobV93ZWJGcmFtZSwgc3RhdGljX2Nhc3Q8V2ViSWNvblVSTDo6V2Vi
SWNvblR5cGU+KHR5cGUpKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpc3Bh
dGNoRGlkQ29tbWl0TG9hZCgpCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJG
cmFtZUltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkZyYW1lSW1wbC5jcHAJKHJldmlzaW9uIDg1OTcxKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODksNyArODksNiBAQAog
I2luY2x1ZGUgIkZvcm1TdGF0ZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZFJlcXVlc3QuaCIKICNp
bmNsdWRlICJGcmFtZUxvYWRlci5oIgotI2luY2x1ZGUgIkZyYW1lU2VsZWN0aW9uLmgiCiAjaW5j
bHVkZSAiRnJhbWVUcmVlLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiSFRN
TENvbGxlY3Rpb24uaCIKQEAgLTEwMSw2ICsxMDAsNyBAQAogI2luY2x1ZGUgIkhUTUxOYW1lcy5o
IgogI2luY2x1ZGUgIkhpc3RvcnlJdGVtLmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgor
I2luY2x1ZGUgIkljb25VUkwuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAj
aW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgInBhaW50aW5nL0dyYXBoaWNzQ29udGV4dEJ1aWxk
ZXIuaCIKQEAgLTEyNCw2ICsxMjQsNyBAQAogI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5j
bHVkZSAiU2Nyb2xsVHlwZXMuaCIKICNpbmNsdWRlICJTY3JvbGxiYXJUaGVtZS5oIgorI2luY2x1
ZGUgIlNlbGVjdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1
ZGUgIlNraWFVdGlscy5oIgogI2luY2x1ZGUgIlN1YnN0aXR1dGVEYXRhLmgiCkBAIC0xMzcsNiAr
MTM4LDcgQEAKICNpbmNsdWRlICJXZWJGb3JtRWxlbWVudC5oIgogI2luY2x1ZGUgIldlYkZyYW1l
Q2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViSGlzdG9yeUl0ZW0uaCIKKyNpbmNsdWRlICJXZWJJY29u
VVJMLmgiCiAjaW5jbHVkZSAiV2ViSW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiV2ViTm9kZS5o
IgogI2luY2x1ZGUgIldlYlBhc3N3b3JkQXV0b2NvbXBsZXRlTGlzdGVuZXIuaCIKQEAgLTUxOCwx
NyArNTIwLDIwIEBAIFdlYlVSTCBXZWJGcmFtZUltcGw6OnVybCgpIGNvbnN0CiAgICAgcmV0dXJu
IGRzLT5yZXF1ZXN0KCkudXJsKCk7CiB9CiAKLVdlYlVSTCBXZWJGcmFtZUltcGw6OmZhdkljb25V
UkwoKSBjb25zdAorV2ViVmVjdG9yPFdlYkljb25VUkw+IFdlYkZyYW1lSW1wbDo6ZmF2SWNvblVS
TChpbnQgd2ViSWNvblR5cGVzKSBjb25zdAogewogICAgIEZyYW1lTG9hZGVyKiBmcmFtZUxvYWRl
ciA9IG1fZnJhbWUtPmxvYWRlcigpOworCiAgICAgLy8gVGhlIFVSTCB0byB0aGUgZmF2aWNvbiBt
YXkgYmUgaW4gdGhlIGhlYWRlci4gQXMgc3VjaCwgb25seQogICAgIC8vIGFzayB0aGUgbG9hZGVy
IGZvciB0aGUgZmF2aWNvbiBpZiBpdCdzIGZpbmlzaGVkIGxvYWRpbmcuCiAgICAgaWYgKGZyYW1l
TG9hZGVyLT5zdGF0ZSgpID09IEZyYW1lU3RhdGVDb21wbGV0ZSkgewotICAgICAgICBjb25zdCBL
VVJMJiB1cmwgPSBmcmFtZUxvYWRlci0+aWNvblVSTCgpOwotICAgICAgICBpZiAoIXVybC5pc0Vt
cHR5KCkpCi0gICAgICAgICAgICByZXR1cm4gdXJsOworICAgICAgICBXVEY6OlZlY3RvcjxXZWJD
b3JlOjpJY29uVVJMPiBpY29uVVJMcyA9IGZyYW1lTG9hZGVyLT5pY29uVVJMcyh3ZWJJY29uVHlw
ZXMpOworICAgICAgICBXZWJWZWN0b3I8V2ViSWNvblVSTD4gd2ViSWNvblVSTHMoaWNvblVSTHMu
c2l6ZSgpKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpY29uVVJMcy5zaXplKCk7
IGkrKykKKyAgICAgICAgICAgIHdlYkljb25VUkxzW2ldID0gV2ViSWNvblVSTChpY29uVVJMc1tp
XS5tX2ljb25VUkwsIChXZWJJY29uVVJMOjpXZWJJY29uVHlwZSlpY29uVVJMc1tpXS5tX2ljb25U
eXBlKTsKKyAgICAgICAgcmV0dXJuIHdlYkljb25VUkxzOwogICAgIH0KLSAgICByZXR1cm4gV2Vi
VVJMKCk7CisgICAgcmV0dXJuIFdlYlZlY3RvcjxXZWJJY29uVVJMPigpOwogfQogCiBXZWJVUkwg
V2ViRnJhbWVJbXBsOjpvcGVuU2VhcmNoRGVzY3JpcHRpb25VUkwoKSBjb25zdApAQCAtMTM0NSwx
MSArMTM1MCwxMSBAQCB2b2lkIFdlYkZyYW1lSW1wbDo6c2VsZWN0V29yZEFyb3VuZFBvc2l0CiAK
IGJvb2wgV2ViRnJhbWVJbXBsOjpzZWxlY3RXb3JkQXJvdW5kQ2FyZXQoKQogewotICAgIEZyYW1l
U2VsZWN0aW9uKiBzZWxlY3Rpb24gPSBmcmFtZSgpLT5zZWxlY3Rpb24oKTsKLSAgICBBU1NFUlQo
IXNlbGVjdGlvbi0+aXNOb25lKCkpOwotICAgIGlmIChzZWxlY3Rpb24tPmlzTm9uZSgpIHx8IHNl
bGVjdGlvbi0+aXNSYW5nZSgpKQorICAgIFNlbGVjdGlvbkNvbnRyb2xsZXIqIGNvbnRyb2xsZXIg
PSBmcmFtZSgpLT5zZWxlY3Rpb24oKTsKKyAgICBBU1NFUlQoIWNvbnRyb2xsZXItPmlzTm9uZSgp
KTsKKyAgICBpZiAoY29udHJvbGxlci0+aXNOb25lKCkgfHwgY29udHJvbGxlci0+aXNSYW5nZSgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgc2VsZWN0V29yZEFyb3VuZFBvc2l0aW9uKGZy
YW1lKCksIHNlbGVjdGlvbi0+c2VsZWN0aW9uKCkudmlzaWJsZVN0YXJ0KCkpOworICAgIHNlbGVj
dFdvcmRBcm91bmRQb3NpdGlvbihmcmFtZSgpLCBjb250cm9sbGVyLT5zZWxlY3Rpb24oKS52aXNp
YmxlU3RhcnQoKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5oCShyZXZpc2lvbiA4NTk3MSkKKysrIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3
ICs3MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmFtZShjb25zdCBXZWJTdHJp
bmcmKTsKICAgICB2aXJ0dWFsIGxvbmcgbG9uZyBpZGVudGlmaWVyKCkgY29uc3Q7CiAgICAgdmly
dHVhbCBXZWJVUkwgdXJsKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBXZWJVUkwgZmF2SWNvblVSTCgp
IGNvbnN0OworICAgIHZpcnR1YWwgV2ViVmVjdG9yPFdlYkljb25VUkw+IGZhdkljb25VUkwoaW50
KSBjb25zdDsKICAgICB2aXJ0dWFsIFdlYlVSTCBvcGVuU2VhcmNoRGVzY3JpcHRpb25VUkwoKSBj
b25zdDsKICAgICB2aXJ0dWFsIFdlYlN0cmluZyBlbmNvZGluZygpIGNvbnN0OwogICAgIHZpcnR1
YWwgV2ViU2l6ZSBzY3JvbGxPZmZzZXQoKSBjb25zdDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92644</attachid>
            <date>2011-05-06 14:47:44 -0700</date>
            <delta_ts>2011-05-06 16:37:26 -0700</delta_ts>
            <desc>Removed the utitilies class, used COMPILE_ASSERT_MATCHING_ENUM.</desc>
            <filename>patch.2</filename>
            <type>text/plain</type>
            <size>11433</size>
            <attacher>michaelbai</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA4NTk3MSkKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMTEtMDUtMDUgIFRhbyBCYWkgIDxtaWNoYWVsYmFpQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBIYW5kbGUgdGhlIHRv
dWNoIGljb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02MDI0NworCisgICAgICAgIEFkZGVkIFdlYkljb25VUkwgZm9yIHRoZSBjb3JyZXNwb25kaW5n
IEljb25VUkwuCisgICAgICAgIEFkZGVkIGEgcGFyYW1ldGVyIHRvIGZhdkljb25VUkwoKSB0byBz
cGVjaWZ5IHRoZSB0eXBlIG9mIGljb24gbmVlZCB0bworICAgICAgICByZXR1cm4uCisKIDIwMTEt
MDUtMDYgIEpvaG4gQWJkLUVsLU1hbGVrICA8amFtQGNocm9taXVtLm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBKYW1lcyBSb2JpbnNvbi4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
V2ViS2l0Lmd5cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5n
eXAJKHJldmlzaW9uIDg1OTcxKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lw
CSh3b3JraW5nIGNvcHkpCkBAIC0xODUsNiArMTg1LDcgQEAKICAgICAgICAgICAgICAgICAncHVi
bGljL1dlYkhUVFBCb2R5LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViSFRUUExvYWRJ
bmZvLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViSWNvbkxvYWRpbmdDb21wbGV0aW9u
LmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViSWNvblR5cGUuaCcsCiAgICAgICAgICAg
ICAgICAgJ3B1YmxpYy9XZWJJbWFnZS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYklt
YWdlRGVjb2Rlci5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYklEQkNhbGxiYWNrcy5o
JywKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lwaQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkJKHJldmlzaW9uIDg1OTcx
KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpCSh3b3JraW5nIGNvcHkp
CkBAIC04OCw2ICs4OCw3IEBACiAgICAgICAgICdFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUPTEn
LAogICAgICAgICAnRU5BQkxFX1NWR19VU0U9MScsCiAgICAgICAgICdFTkFCTEVfVE9VQ0hfRVZF
TlRTPTEnLAorICAgICAgICAnRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORz0xJywKICAgICAgICAg
J0VOQUJMRV9WOF9TQ1JJUFRfREVCVUdfU0VSVkVSPTEnLAogICAgICAgICAnRU5BQkxFX1ZJREVP
PTEnLAogICAgICAgICAnRU5BQkxFX1dFQl9BVURJTz0wJywKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYkZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViRnJhbWUuaAkocmV2aXNpb24gODU5NzEpCisrKyBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICsz
Myw3IEBACiAKICNpbmNsdWRlICJXZWJDYW52YXMuaCIKICNpbmNsdWRlICJXZWJGaWxlU3lzdGVt
LmgiCisjaW5jbHVkZSAiV2ViSWNvblVSTC5oIgogI2luY2x1ZGUgIldlYk5vZGUuaCIKICNpbmNs
dWRlICJXZWJVUkwuaCIKIApAQCAtMTI5LDkgKzEzMCw5IEBAIHB1YmxpYzoKICAgICAvLyBkYXRh
U291cmNlKCktPnJlcXVlc3QoKS51cmwoKS4KICAgICB2aXJ0dWFsIFdlYlVSTCB1cmwoKSBjb25z
dCA9IDA7CiAKLSAgICAvLyBUaGUgdXJsIG9mIHRoZSBmYXZpY29uIChpZiBhbnkpIHNwZWNpZmll
ZCBieSB0aGUgZG9jdW1lbnQgbG9hZGVkIGluCi0gICAgLy8gdGhpcyBmcmFtZS4KLSAgICB2aXJ0
dWFsIFdlYlVSTCBmYXZJY29uVVJMKCkgY29uc3QgPSAwOworICAgIC8vIFRoZSB1cmxzIG9mIHRo
ZSBnaXZlbiBjb21iaW5hdGlvbiB0eXBlcyBvZiBmYXZpY29uIChpZiBhbnkpIHNwZWNpZmllZCBi
eQorICAgIC8vIHRoZSBkb2N1bWVudCBsb2FkZWQgaW4gdGhpcyBmcmFtZS4KKyAgICB2aXJ0dWFs
IFdlYlZlY3RvcjxXZWJJY29uVVJMPiBmYXZJY29uVVJMKGludCBpY29uVHlwZXMpIGNvbnN0ID0g
MDsKIAogICAgIC8vIFRoZSB1cmwgb2YgdGhlIE9wZW5TZWFyY2ggRGVzcmlwdGlvbiBEb2N1bWVu
dCAoaWYgYW55KSBzcGVjaWZpZWQgYnkKICAgICAvLyB0aGUgZG9jdW1lbnQgbG9hZGVkIGluIHRo
aXMgZnJhbWUuCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNs
aWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZy
YW1lQ2xpZW50LmgJKHJldmlzaW9uIDg1OTcxKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViRnJhbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAog
CiAjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCiAjaW5jbHVkZSAiV2ViRmlsZVN5c3RlbS5oIgorI2lu
Y2x1ZGUgIldlYkljb25VUkwuaCIKICNpbmNsdWRlICJXZWJOYXZpZ2F0aW9uUG9saWN5LmgiCiAj
aW5jbHVkZSAiV2ViTmF2aWdhdGlvblR5cGUuaCIKICNpbmNsdWRlICJXZWJTdG9yYWdlUXVvdGFU
eXBlLmgiCkBAIC0yMDIsNyArMjAzLDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIC8vIFRoZSBp
Y29ucyBmb3IgdGhlIHBhZ2UgaGF2ZSBjaGFuZ2VkLgotICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFu
Z2VJY29ucyhXZWJGcmFtZSopIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VJY29ucyhX
ZWJGcmFtZSosIFdlYkljb25VUkw6OldlYkljb25UeXBlKSB7IH0KIAogICAgIC8vIFRoZSBmcmFt
ZSdzIGRvY3VtZW50IGZpbmlzaGVkIGxvYWRpbmcuCiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlz
aERvY3VtZW50TG9hZChXZWJGcmFtZSopIHsgfQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViSWNvblVSTC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYkljb25VUkwuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYkljb25VUkwuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgV2ViSWNvblVSTF9oCisjZGVmaW5lIFdlYkljb25VUkxfaAorCisjaW5jbHVkZSAiV2Vi
VVJMLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdHJ1Y3QgV2ViSWNvblVSTCB7CisgICAg
ZW51bSBXZWJJY29uVHlwZSB7CisgICAgICAgIEludmFsaWRJY29uID0gMCwKKyAgICAgICAgRmF2
aWNvbiA9IDEgPDwgMCwKKyAgICAgICAgVG91Y2hJY29uID0gMSA8PCAxLAorICAgICAgICBUb3Vj
aFByZWNvbXBvc2VkSWNvbiA9IDEgPDwgMgorICAgIH07CisKKyAgICBXZWJJY29uVVJMKCkKKyAg
ICAgICAgOiBpY29uVHlwZShJbnZhbGlkSWNvbikKKyAgICB7CisgICAgfQorCisgICAgV2ViSWNv
blVSTChjb25zdCBXZWJVUkwmIHVybCwgV2ViSWNvblR5cGUgdHlwZSkKKyAgICAgICAgOiBpY29u
VHlwZSh0eXBlKQorICAgICAgICAsIGljb25VUkwodXJsKQorICAgIHsKKyAgICB9CisKKyAgICBX
ZWJJY29uVHlwZSBpY29uVHlwZTsKKyAgICBXZWJVUkwgaWNvblVSTDsKK307CisKK30KKworI2Vu
ZGlmIC8vIFdlYkljb25VUkxfaAoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViSWNvblVSTC5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5
bGUKICAgKyBMRgoKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2VydE1hdGNo
aW5nRW51bXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fz
c2VydE1hdGNoaW5nRW51bXMuY3BwCShyZXZpc2lvbiA4NTk3MSkKKysrIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
Niw2ICs0Niw3IEBACiAjaW5jbHVkZSAiR2VvbG9jYXRpb25FcnJvci5oIgogI2luY2x1ZGUgIkdl
b2xvY2F0aW9uUG9zaXRpb24uaCIKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCisjaW5j
bHVkZSAiSWNvblVSTC5oIgogI2luY2x1ZGUgIklEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlLmgi
CiAjaW5jbHVkZSAiSURCS2V5LmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKQEAgLTcyLDYg
KzczLDcgQEAKICNpbmNsdWRlICJXZWJHZW9sb2NhdGlvblBvc2l0aW9uLmgiCiAjaW5jbHVkZSAi
V2ViSURCRmFjdG9yeS5oIgogI2luY2x1ZGUgIldlYklEQktleS5oIgorI2luY2x1ZGUgIldlYklj
b25VUkwuaCIKICNpbmNsdWRlICJXZWJJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJXZWJNZWRp
YVBsYXllci5oIgogI2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvblByZXNlbnRlci5oIgpAQCAtMzAy
LDYgKzMwNCwxMiBAQCBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYkZvbnREZXNjCiBD
T01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYkZvbnREZXNjcmlwdGlvbjo6V2VpZ2h0Tm9y
bWFsLCBGb250V2VpZ2h0Tm9ybWFsKTsKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2Vi
Rm9udERlc2NyaXB0aW9uOjpXZWlnaHRCb2xkLCBGb250V2VpZ2h0Qm9sZCk7CiAKKworQ09NUElM
RV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJY29uVVJMOjpJbnZhbGlkSWNvbiwgSW52YWxpZElj
b24pOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJY29uVVJMOjpGYXZpY29uLCBG
YXZpY29uKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViSWNvblVSTDo6VG91Y2hJ
Y29uLCBUb3VjaEljb24pOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJY29uVVJM
OjpUb3VjaFByZWNvbXBvc2VkSWNvbiwgVG91Y2hQcmVjb21wb3NlZEljb24pOworCiBDT01QSUxF
X0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYk5vZGU6OkVsZW1lbnROb2RlLCBOb2RlOjpFTEVNRU5U
X05PREUpOwogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJOb2RlOjpBdHRyaWJ1dGVO
b2RlLCBOb2RlOjpBVFRSSUJVVEVfTk9ERSk7CiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVN
KFdlYk5vZGU6OlRleHROb2RlLCBOb2RlOjpURVhUX05PREUpOwpJbmRleDogU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCShyZXZp
c2lvbiA4NTk3MSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xp
ZW50SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2MCw3ICs3NjAsNyBAQCB2b2lkIEZyYW1l
TG9hZGVyQ2xpZW50SW1wbDo6ZGlzcGF0Y2hEaWRSCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1w
bDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyhXZWJDb3JlOjpJY29uVHlwZSB0eXBlKQogewogICAg
IGlmIChtX3dlYkZyYW1lLT5jbGllbnQoKSkKLSAgICAgICAgbV93ZWJGcmFtZS0+Y2xpZW50KCkt
PmRpZENoYW5nZUljb25zKG1fd2ViRnJhbWUpOworICAgICAgICBtX3dlYkZyYW1lLT5jbGllbnQo
KS0+ZGlkQ2hhbmdlSWNvbnMobV93ZWJGcmFtZSwgc3RhdGljX2Nhc3Q8V2ViSWNvblVSTDo6V2Vi
SWNvblR5cGU+KHR5cGUpKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpc3Bh
dGNoRGlkQ29tbWl0TG9hZCgpCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJG
cmFtZUltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkZyYW1lSW1wbC5jcHAJKHJldmlzaW9uIDg1OTcxKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODksNyArODksNiBAQAog
I2luY2x1ZGUgIkZvcm1TdGF0ZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZFJlcXVlc3QuaCIKICNp
bmNsdWRlICJGcmFtZUxvYWRlci5oIgotI2luY2x1ZGUgIkZyYW1lU2VsZWN0aW9uLmgiCiAjaW5j
bHVkZSAiRnJhbWVUcmVlLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiSFRN
TENvbGxlY3Rpb24uaCIKQEAgLTEwMSw2ICsxMDAsNyBAQAogI2luY2x1ZGUgIkhUTUxOYW1lcy5o
IgogI2luY2x1ZGUgIkhpc3RvcnlJdGVtLmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgor
I2luY2x1ZGUgIkljb25VUkwuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAj
aW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgInBhaW50aW5nL0dyYXBoaWNzQ29udGV4dEJ1aWxk
ZXIuaCIKQEAgLTEyNCw2ICsxMjQsNyBAQAogI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5j
bHVkZSAiU2Nyb2xsVHlwZXMuaCIKICNpbmNsdWRlICJTY3JvbGxiYXJUaGVtZS5oIgorI2luY2x1
ZGUgIlNlbGVjdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1
ZGUgIlNraWFVdGlscy5oIgogI2luY2x1ZGUgIlN1YnN0aXR1dGVEYXRhLmgiCkBAIC0xMzcsNiAr
MTM4LDcgQEAKICNpbmNsdWRlICJXZWJGb3JtRWxlbWVudC5oIgogI2luY2x1ZGUgIldlYkZyYW1l
Q2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViSGlzdG9yeUl0ZW0uaCIKKyNpbmNsdWRlICJXZWJJY29u
VVJMLmgiCiAjaW5jbHVkZSAiV2ViSW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiV2ViTm9kZS5o
IgogI2luY2x1ZGUgIldlYlBhc3N3b3JkQXV0b2NvbXBsZXRlTGlzdGVuZXIuaCIKQEAgLTUxOCwx
NyArNTIwLDIwIEBAIFdlYlVSTCBXZWJGcmFtZUltcGw6OnVybCgpIGNvbnN0CiAgICAgcmV0dXJu
IGRzLT5yZXF1ZXN0KCkudXJsKCk7CiB9CiAKLVdlYlVSTCBXZWJGcmFtZUltcGw6OmZhdkljb25V
UkwoKSBjb25zdAorV2ViVmVjdG9yPFdlYkljb25VUkw+IFdlYkZyYW1lSW1wbDo6ZmF2SWNvblVS
TChpbnQgd2ViSWNvblR5cGVzKSBjb25zdAogewogICAgIEZyYW1lTG9hZGVyKiBmcmFtZUxvYWRl
ciA9IG1fZnJhbWUtPmxvYWRlcigpOworCiAgICAgLy8gVGhlIFVSTCB0byB0aGUgZmF2aWNvbiBt
YXkgYmUgaW4gdGhlIGhlYWRlci4gQXMgc3VjaCwgb25seQogICAgIC8vIGFzayB0aGUgbG9hZGVy
IGZvciB0aGUgZmF2aWNvbiBpZiBpdCdzIGZpbmlzaGVkIGxvYWRpbmcuCiAgICAgaWYgKGZyYW1l
TG9hZGVyLT5zdGF0ZSgpID09IEZyYW1lU3RhdGVDb21wbGV0ZSkgewotICAgICAgICBjb25zdCBL
VVJMJiB1cmwgPSBmcmFtZUxvYWRlci0+aWNvblVSTCgpOwotICAgICAgICBpZiAoIXVybC5pc0Vt
cHR5KCkpCi0gICAgICAgICAgICByZXR1cm4gdXJsOworICAgICAgICBXVEY6OlZlY3RvcjxXZWJD
b3JlOjpJY29uVVJMPiBpY29uVVJMcyA9IGZyYW1lTG9hZGVyLT5pY29uVVJMcyh3ZWJJY29uVHlw
ZXMpOworICAgICAgICBXZWJWZWN0b3I8V2ViSWNvblVSTD4gd2ViSWNvblVSTHMoaWNvblVSTHMu
c2l6ZSgpKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpY29uVVJMcy5zaXplKCk7
IGkrKykKKyAgICAgICAgICAgIHdlYkljb25VUkxzW2ldID0gV2ViSWNvblVSTChpY29uVVJMc1tp
XS5tX2ljb25VUkwsIChXZWJJY29uVVJMOjpXZWJJY29uVHlwZSlpY29uVVJMc1tpXS5tX2ljb25U
eXBlKTsKKyAgICAgICAgcmV0dXJuIHdlYkljb25VUkxzOwogICAgIH0KLSAgICByZXR1cm4gV2Vi
VVJMKCk7CisgICAgcmV0dXJuIFdlYlZlY3RvcjxXZWJJY29uVVJMPigpOwogfQogCiBXZWJVUkwg
V2ViRnJhbWVJbXBsOjpvcGVuU2VhcmNoRGVzY3JpcHRpb25VUkwoKSBjb25zdApAQCAtMTM0NSwx
MSArMTM1MCwxMSBAQCB2b2lkIFdlYkZyYW1lSW1wbDo6c2VsZWN0V29yZEFyb3VuZFBvc2l0CiAK
IGJvb2wgV2ViRnJhbWVJbXBsOjpzZWxlY3RXb3JkQXJvdW5kQ2FyZXQoKQogewotICAgIEZyYW1l
U2VsZWN0aW9uKiBzZWxlY3Rpb24gPSBmcmFtZSgpLT5zZWxlY3Rpb24oKTsKLSAgICBBU1NFUlQo
IXNlbGVjdGlvbi0+aXNOb25lKCkpOwotICAgIGlmIChzZWxlY3Rpb24tPmlzTm9uZSgpIHx8IHNl
bGVjdGlvbi0+aXNSYW5nZSgpKQorICAgIFNlbGVjdGlvbkNvbnRyb2xsZXIqIGNvbnRyb2xsZXIg
PSBmcmFtZSgpLT5zZWxlY3Rpb24oKTsKKyAgICBBU1NFUlQoIWNvbnRyb2xsZXItPmlzTm9uZSgp
KTsKKyAgICBpZiAoY29udHJvbGxlci0+aXNOb25lKCkgfHwgY29udHJvbGxlci0+aXNSYW5nZSgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgc2VsZWN0V29yZEFyb3VuZFBvc2l0aW9uKGZy
YW1lKCksIHNlbGVjdGlvbi0+c2VsZWN0aW9uKCkudmlzaWJsZVN0YXJ0KCkpOworICAgIHNlbGVj
dFdvcmRBcm91bmRQb3NpdGlvbihmcmFtZSgpLCBjb250cm9sbGVyLT5zZWxlY3Rpb24oKS52aXNp
YmxlU3RhcnQoKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5oCShyZXZpc2lvbiA4NTk3MSkKKysrIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3
ICs3MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmFtZShjb25zdCBXZWJTdHJp
bmcmKTsKICAgICB2aXJ0dWFsIGxvbmcgbG9uZyBpZGVudGlmaWVyKCkgY29uc3Q7CiAgICAgdmly
dHVhbCBXZWJVUkwgdXJsKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBXZWJVUkwgZmF2SWNvblVSTCgp
IGNvbnN0OworICAgIHZpcnR1YWwgV2ViVmVjdG9yPFdlYkljb25VUkw+IGZhdkljb25VUkwoaW50
KSBjb25zdDsKICAgICB2aXJ0dWFsIFdlYlVSTCBvcGVuU2VhcmNoRGVzY3JpcHRpb25VUkwoKSBj
b25zdDsKICAgICB2aXJ0dWFsIFdlYlN0cmluZyBlbmNvZGluZygpIGNvbnN0OwogICAgIHZpcnR1
YWwgV2ViU2l6ZSBzY3JvbGxPZmZzZXQoKSBjb25zdDsK
</data>
<flag name="commit-queue"
          id="85651"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92657</attachid>
            <date>2011-05-06 16:37:26 -0700</date>
            <delta_ts>2011-05-09 10:42:13 -0700</delta_ts>
            <desc>Fix build</desc>
            <filename>patch.3</filename>
            <type>text/plain</type>
            <size>10399</size>
            <attacher>michaelbai</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA4NTk3MSkKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMTEtMDUtMDUgIFRhbyBCYWkgIDxtaWNoYWVsYmFpQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBIYW5kbGUgdGhlIHRv
dWNoIGljb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02MDI0NworCisgICAgICAgIEFkZGVkIFdlYkljb25VUkwgZm9yIHRoZSBjb3JyZXNwb25kaW5n
IEljb25VUkwuCisgICAgICAgIEFkZGVkIGEgcGFyYW1ldGVyIHRvIGZhdkljb25VUkwoKSB0byBz
cGVjaWZ5IHRoZSB0eXBlIG9mIGljb24gbmVlZCB0bworICAgICAgICByZXR1cm4uCisKIDIwMTEt
MDUtMDYgIEpvaG4gQWJkLUVsLU1hbGVrICA8amFtQGNocm9taXVtLm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBKYW1lcyBSb2JpbnNvbi4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
V2ViS2l0Lmd5cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5n
eXAJKHJldmlzaW9uIDg1OTcxKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lw
CSh3b3JraW5nIGNvcHkpCkBAIC0xODUsNiArMTg1LDcgQEAKICAgICAgICAgICAgICAgICAncHVi
bGljL1dlYkhUVFBCb2R5LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViSFRUUExvYWRJ
bmZvLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViSWNvbkxvYWRpbmdDb21wbGV0aW9u
LmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViSWNvblR5cGUuaCcsCiAgICAgICAgICAg
ICAgICAgJ3B1YmxpYy9XZWJJbWFnZS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYklt
YWdlRGVjb2Rlci5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYklEQkNhbGxiYWNrcy5o
JywKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lwaQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkJKHJldmlzaW9uIDg1OTcx
KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpCSh3b3JraW5nIGNvcHkp
CkBAIC04OCw2ICs4OCw3IEBACiAgICAgICAgICdFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUPTEn
LAogICAgICAgICAnRU5BQkxFX1NWR19VU0U9MScsCiAgICAgICAgICdFTkFCTEVfVE9VQ0hfRVZF
TlRTPTEnLAorICAgICAgICAnRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORz0xJywKICAgICAgICAg
J0VOQUJMRV9WOF9TQ1JJUFRfREVCVUdfU0VSVkVSPTEnLAogICAgICAgICAnRU5BQkxFX1ZJREVP
PTEnLAogICAgICAgICAnRU5BQkxFX1dFQl9BVURJTz0wJywKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYkZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViRnJhbWUuaAkocmV2aXNpb24gODU5NzEpCisrKyBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICsz
Myw3IEBACiAKICNpbmNsdWRlICJXZWJDYW52YXMuaCIKICNpbmNsdWRlICJXZWJGaWxlU3lzdGVt
LmgiCisjaW5jbHVkZSAiV2ViSWNvblVSTC5oIgogI2luY2x1ZGUgIldlYk5vZGUuaCIKICNpbmNs
dWRlICJXZWJVUkwuaCIKIApAQCAtMTI5LDkgKzEzMCw5IEBAIHB1YmxpYzoKICAgICAvLyBkYXRh
U291cmNlKCktPnJlcXVlc3QoKS51cmwoKS4KICAgICB2aXJ0dWFsIFdlYlVSTCB1cmwoKSBjb25z
dCA9IDA7CiAKLSAgICAvLyBUaGUgdXJsIG9mIHRoZSBmYXZpY29uIChpZiBhbnkpIHNwZWNpZmll
ZCBieSB0aGUgZG9jdW1lbnQgbG9hZGVkIGluCi0gICAgLy8gdGhpcyBmcmFtZS4KLSAgICB2aXJ0
dWFsIFdlYlVSTCBmYXZJY29uVVJMKCkgY29uc3QgPSAwOworICAgIC8vIFRoZSB1cmxzIG9mIHRo
ZSBnaXZlbiBjb21iaW5hdGlvbiB0eXBlcyBvZiBmYXZpY29uIChpZiBhbnkpIHNwZWNpZmllZCBi
eQorICAgIC8vIHRoZSBkb2N1bWVudCBsb2FkZWQgaW4gdGhpcyBmcmFtZS4KKyAgICB2aXJ0dWFs
IFdlYlZlY3RvcjxXZWJJY29uVVJMPiBmYXZJY29uVVJMKGludCBpY29uVHlwZXMpIGNvbnN0ID0g
MDsKIAogICAgIC8vIFRoZSB1cmwgb2YgdGhlIE9wZW5TZWFyY2ggRGVzcmlwdGlvbiBEb2N1bWVu
dCAoaWYgYW55KSBzcGVjaWZpZWQgYnkKICAgICAvLyB0aGUgZG9jdW1lbnQgbG9hZGVkIGluIHRo
aXMgZnJhbWUuCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNs
aWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZy
YW1lQ2xpZW50LmgJKHJldmlzaW9uIDg1OTcxKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViRnJhbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAog
CiAjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCiAjaW5jbHVkZSAiV2ViRmlsZVN5c3RlbS5oIgorI2lu
Y2x1ZGUgIldlYkljb25VUkwuaCIKICNpbmNsdWRlICJXZWJOYXZpZ2F0aW9uUG9saWN5LmgiCiAj
aW5jbHVkZSAiV2ViTmF2aWdhdGlvblR5cGUuaCIKICNpbmNsdWRlICJXZWJTdG9yYWdlUXVvdGFU
eXBlLmgiCkBAIC0yMDIsNyArMjAzLDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIC8vIFRoZSBp
Y29ucyBmb3IgdGhlIHBhZ2UgaGF2ZSBjaGFuZ2VkLgotICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFu
Z2VJY29ucyhXZWJGcmFtZSopIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VJY29ucyhX
ZWJGcmFtZSosIFdlYkljb25VUkw6OldlYkljb25UeXBlKSB7IH0KIAogICAgIC8vIFRoZSBmcmFt
ZSdzIGRvY3VtZW50IGZpbmlzaGVkIGxvYWRpbmcuCiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlz
aERvY3VtZW50TG9hZChXZWJGcmFtZSopIHsgfQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViSWNvblVSTC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYkljb25VUkwuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYkljb25VUkwuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgV2ViSWNvblVSTF9oCisjZGVmaW5lIFdlYkljb25VUkxfaAorCisjaW5jbHVkZSAiV2Vi
VVJMLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdHJ1Y3QgV2ViSWNvblVSTCB7CisgICAg
ZW51bSBXZWJJY29uVHlwZSB7CisgICAgICAgIEludmFsaWRJY29uID0gMCwKKyAgICAgICAgRmF2
aWNvbiA9IDEgPDwgMCwKKyAgICAgICAgVG91Y2hJY29uID0gMSA8PCAxLAorICAgICAgICBUb3Vj
aFByZWNvbXBvc2VkSWNvbiA9IDEgPDwgMgorICAgIH07CisKKyAgICBXZWJJY29uVVJMKCkKKyAg
ICAgICAgOiBpY29uVHlwZShJbnZhbGlkSWNvbikKKyAgICB7CisgICAgfQorCisgICAgV2ViSWNv
blVSTChjb25zdCBXZWJVUkwmIHVybCwgV2ViSWNvblR5cGUgdHlwZSkKKyAgICAgICAgOiBpY29u
VHlwZSh0eXBlKQorICAgICAgICAsIGljb25VUkwodXJsKQorICAgIHsKKyAgICB9CisKKyAgICBX
ZWJJY29uVHlwZSBpY29uVHlwZTsKKyAgICBXZWJVUkwgaWNvblVSTDsKK307CisKK30KKworI2Vu
ZGlmIC8vIFdlYkljb25VUkxfaAoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViSWNvblVSTC5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5
bGUKICAgKyBMRgoKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2VydE1hdGNo
aW5nRW51bXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fz
c2VydE1hdGNoaW5nRW51bXMuY3BwCShyZXZpc2lvbiA4NTk3MSkKKysrIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
Niw2ICs0Niw3IEBACiAjaW5jbHVkZSAiR2VvbG9jYXRpb25FcnJvci5oIgogI2luY2x1ZGUgIkdl
b2xvY2F0aW9uUG9zaXRpb24uaCIKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCisjaW5j
bHVkZSAiSWNvblVSTC5oIgogI2luY2x1ZGUgIklEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlLmgi
CiAjaW5jbHVkZSAiSURCS2V5LmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKQEAgLTcyLDYg
KzczLDcgQEAKICNpbmNsdWRlICJXZWJHZW9sb2NhdGlvblBvc2l0aW9uLmgiCiAjaW5jbHVkZSAi
V2ViSURCRmFjdG9yeS5oIgogI2luY2x1ZGUgIldlYklEQktleS5oIgorI2luY2x1ZGUgIldlYklj
b25VUkwuaCIKICNpbmNsdWRlICJXZWJJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJXZWJNZWRp
YVBsYXllci5oIgogI2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvblByZXNlbnRlci5oIgpAQCAtMzAy
LDYgKzMwNCwxMiBAQCBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYkZvbnREZXNjCiBD
T01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYkZvbnREZXNjcmlwdGlvbjo6V2VpZ2h0Tm9y
bWFsLCBGb250V2VpZ2h0Tm9ybWFsKTsKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2Vi
Rm9udERlc2NyaXB0aW9uOjpXZWlnaHRCb2xkLCBGb250V2VpZ2h0Qm9sZCk7CiAKKworQ09NUElM
RV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJY29uVVJMOjpJbnZhbGlkSWNvbiwgSW52YWxpZElj
b24pOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJY29uVVJMOjpGYXZpY29uLCBG
YXZpY29uKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViSWNvblVSTDo6VG91Y2hJ
Y29uLCBUb3VjaEljb24pOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJY29uVVJM
OjpUb3VjaFByZWNvbXBvc2VkSWNvbiwgVG91Y2hQcmVjb21wb3NlZEljb24pOworCiBDT01QSUxF
X0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYk5vZGU6OkVsZW1lbnROb2RlLCBOb2RlOjpFTEVNRU5U
X05PREUpOwogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJOb2RlOjpBdHRyaWJ1dGVO
b2RlLCBOb2RlOjpBVFRSSUJVVEVfTk9ERSk7CiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVN
KFdlYk5vZGU6OlRleHROb2RlLCBOb2RlOjpURVhUX05PREUpOwpJbmRleDogU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCShyZXZp
c2lvbiA4NTk3MSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xp
ZW50SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2MCw3ICs3NjAsNyBAQCB2b2lkIEZyYW1l
TG9hZGVyQ2xpZW50SW1wbDo6ZGlzcGF0Y2hEaWRSCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1w
bDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyhXZWJDb3JlOjpJY29uVHlwZSB0eXBlKQogewogICAg
IGlmIChtX3dlYkZyYW1lLT5jbGllbnQoKSkKLSAgICAgICAgbV93ZWJGcmFtZS0+Y2xpZW50KCkt
PmRpZENoYW5nZUljb25zKG1fd2ViRnJhbWUpOworICAgICAgICBtX3dlYkZyYW1lLT5jbGllbnQo
KS0+ZGlkQ2hhbmdlSWNvbnMobV93ZWJGcmFtZSwgc3RhdGljX2Nhc3Q8V2ViSWNvblVSTDo6V2Vi
SWNvblR5cGU+KHR5cGUpKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpc3Bh
dGNoRGlkQ29tbWl0TG9hZCgpCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJG
cmFtZUltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkZyYW1lSW1wbC5jcHAJKHJldmlzaW9uIDg1OTcxKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDYgKzEwMSw3IEBA
CiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSGlzdG9yeUl0ZW0uaCIKICNpbmNs
dWRlICJIaXRUZXN0UmVzdWx0LmgiCisjaW5jbHVkZSAiSWNvblVSTC5oIgogI2luY2x1ZGUgIklu
c3BlY3RvckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAicGFpbnRp
bmcvR3JhcGhpY3NDb250ZXh0QnVpbGRlci5oIgpAQCAtMTM3LDYgKzEzOCw3IEBACiAjaW5jbHVk
ZSAiV2ViRm9ybUVsZW1lbnQuaCIKICNpbmNsdWRlICJXZWJGcmFtZUNsaWVudC5oIgogI2luY2x1
ZGUgIldlYkhpc3RvcnlJdGVtLmgiCisjaW5jbHVkZSAiV2ViSWNvblVSTC5oIgogI2luY2x1ZGUg
IldlYklucHV0RWxlbWVudC5oIgogI2luY2x1ZGUgIldlYk5vZGUuaCIKICNpbmNsdWRlICJXZWJQ
YXNzd29yZEF1dG9jb21wbGV0ZUxpc3RlbmVyLmgiCkBAIC01MTgsMTcgKzUyMCwxOSBAQCBXZWJV
UkwgV2ViRnJhbWVJbXBsOjp1cmwoKSBjb25zdAogICAgIHJldHVybiBkcy0+cmVxdWVzdCgpLnVy
bCgpOwogfQogCi1XZWJVUkwgV2ViRnJhbWVJbXBsOjpmYXZJY29uVVJMKCkgY29uc3QKK1dlYlZl
Y3RvcjxXZWJJY29uVVJMPiBXZWJGcmFtZUltcGw6OmZhdkljb25VUkwoaW50IHdlYkljb25UeXBl
cykgY29uc3QKIHsKICAgICBGcmFtZUxvYWRlciogZnJhbWVMb2FkZXIgPSBtX2ZyYW1lLT5sb2Fk
ZXIoKTsKICAgICAvLyBUaGUgVVJMIHRvIHRoZSBmYXZpY29uIG1heSBiZSBpbiB0aGUgaGVhZGVy
LiBBcyBzdWNoLCBvbmx5CiAgICAgLy8gYXNrIHRoZSBsb2FkZXIgZm9yIHRoZSBmYXZpY29uIGlm
IGl0J3MgZmluaXNoZWQgbG9hZGluZy4KICAgICBpZiAoZnJhbWVMb2FkZXItPnN0YXRlKCkgPT0g
RnJhbWVTdGF0ZUNvbXBsZXRlKSB7Ci0gICAgICAgIGNvbnN0IEtVUkwmIHVybCA9IGZyYW1lTG9h
ZGVyLT5pY29uVVJMKCk7Ci0gICAgICAgIGlmICghdXJsLmlzRW1wdHkoKSkKLSAgICAgICAgICAg
IHJldHVybiB1cmw7CisgICAgICAgIFdURjo6VmVjdG9yPFdlYkNvcmU6Okljb25VUkw+IGljb25V
UkxzID0gZnJhbWVMb2FkZXItPmljb25VUkxzKHdlYkljb25UeXBlcyk7CisgICAgICAgIFdlYlZl
Y3RvcjxXZWJJY29uVVJMPiB3ZWJJY29uVVJMcyhpY29uVVJMcy5zaXplKCkpOworICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGljb25VUkxzLnNpemUoKTsgaSsrKQorICAgICAgICAgICAg
d2ViSWNvblVSTHNbaV0gPSBXZWJJY29uVVJMKGljb25VUkxzW2ldLm1faWNvblVSTCwgKFdlYklj
b25VUkw6OldlYkljb25UeXBlKWljb25VUkxzW2ldLm1faWNvblR5cGUpOworICAgICAgICByZXR1
cm4gd2ViSWNvblVSTHM7CiAgICAgfQotICAgIHJldHVybiBXZWJVUkwoKTsKKyAgICByZXR1cm4g
V2ViVmVjdG9yPFdlYkljb25VUkw+KCk7CiB9CiAKIFdlYlVSTCBXZWJGcmFtZUltcGw6Om9wZW5T
ZWFyY2hEZXNjcmlwdGlvblVSTCgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJGcmFtZUltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJGcmFtZUltcGwuaAkocmV2aXNpb24gODU5NzEpCisrKyBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJGcmFtZUltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldE5hbWUoY29uc3QgV2ViU3RyaW5nJik7CiAg
ICAgdmlydHVhbCBsb25nIGxvbmcgaWRlbnRpZmllcigpIGNvbnN0OwogICAgIHZpcnR1YWwgV2Vi
VVJMIHVybCgpIGNvbnN0OwotICAgIHZpcnR1YWwgV2ViVVJMIGZhdkljb25VUkwoKSBjb25zdDsK
KyAgICB2aXJ0dWFsIFdlYlZlY3RvcjxXZWJJY29uVVJMPiBmYXZJY29uVVJMKGludCkgY29uc3Q7
CiAgICAgdmlydHVhbCBXZWJVUkwgb3BlblNlYXJjaERlc2NyaXB0aW9uVVJMKCkgY29uc3Q7CiAg
ICAgdmlydHVhbCBXZWJTdHJpbmcgZW5jb2RpbmcoKSBjb25zdDsKICAgICB2aXJ0dWFsIFdlYlNp
emUgc2Nyb2xsT2Zmc2V0KCkgY29uc3Q7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92804</attachid>
            <date>2011-05-09 10:42:13 -0700</date>
            <delta_ts>2011-05-09 11:57:02 -0700</delta_ts>
            <desc>Sync, Update change log, fix the style issus</desc>
            <filename>patch.4</filename>
            <type>text/plain</type>
            <size>10932</size>
            <attacher>michaelbai</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA4NjA2MykKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjgg
QEAKKzIwMTEtMDUtMDkgIFRhbyBCYWkgIDxtaWNoYWVsYmFpQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBIYW5kbGUgdGhlIHRv
dWNoIGljb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02MDI0NworCisgICAgICAgIEFkZGVkIFdlYkljb25VUkwgZm9yIHRoZSBjb3JyZXNwb25kaW5n
IEljb25VUkwuCisgICAgICAgIEFkZGVkIGEgcGFyYW1ldGVyIHRvIGZhdkljb25VUkwoKSB0byBz
cGVjaWZ5IHRoZSB0eXBlIG9mIGljb24gbmVlZCB0bworICAgICAgICByZXR1cm4uCisKKyAgICAg
ICAgKiBXZWJLaXQuZ3lwOgorICAgICAgICAqIGZlYXR1cmVzLmd5cGk6CisgICAgICAgICogcHVi
bGljL1dlYkZyYW1lLmg6CisgICAgICAgICogcHVibGljL1dlYkZyYW1lQ2xpZW50Lmg6CisgICAg
ICAgIChXZWJLaXQ6OldlYkZyYW1lQ2xpZW50OjpkaWRDaGFuZ2VJY29ucyk6CisgICAgICAgICog
cHVibGljL1dlYkljb25VUkwuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkljb25VUkw6
OldlYkljb25VUkwpOgorICAgICAgICAqIHNyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcDoKKyAg
ICAgICAgKiBzcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
RnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaERpZENoYW5nZUljb25zKToKKyAgICAgICAg
KiBzcmMvV2ViRnJhbWVJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVJbXBsOjpm
YXZJY29uVVJMKToKKyAgICAgICAgKiBzcmMvV2ViRnJhbWVJbXBsLmg6CisKIDIwMTEtMDUtMDkg
IFNoaXNoaXIgQWdyYXdhbCAgPHNoaXNoaXJAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IFRvbnkgR2VudGlsY29yZS4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2Vi
S2l0Lmd5cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAJ
KHJldmlzaW9uIDg2MDYzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCSh3
b3JraW5nIGNvcHkpCkBAIC0xODUsNiArMTg1LDcgQEAKICAgICAgICAgICAgICAgICAncHVibGlj
L1dlYkhUVFBCb2R5LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViSFRUUExvYWRJbmZv
LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViSWNvbkxvYWRpbmdDb21wbGV0aW9uLmgn
LAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViSWNvblR5cGUuaCcsCiAgICAgICAgICAgICAg
ICAgJ3B1YmxpYy9XZWJJbWFnZS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkltYWdl
RGVjb2Rlci5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYklEQkNhbGxiYWNrcy5oJywK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lwaQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkJKHJldmlzaW9uIDg2MDYzKQor
KysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpCSh3b3JraW5nIGNvcHkpCkBA
IC04OCw2ICs4OCw3IEBACiAgICAgICAgICdFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUPTEnLAog
ICAgICAgICAnRU5BQkxFX1NWR19VU0U9MScsCiAgICAgICAgICdFTkFCTEVfVE9VQ0hfRVZFTlRT
PTEnLAorICAgICAgICAnRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORz0xJywKICAgICAgICAgJ0VO
QUJMRV9WOF9TQ1JJUFRfREVCVUdfU0VSVkVSPTEnLAogICAgICAgICAnRU5BQkxFX1ZJREVPPTEn
LAogICAgICAgICAnRU5BQkxFX1dFQl9BVURJTz0wJywKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYkZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViRnJhbWUuaAkocmV2aXNpb24gODYwNjMpCisrKyBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3
IEBACiAKICNpbmNsdWRlICJXZWJDYW52YXMuaCIKICNpbmNsdWRlICJXZWJGaWxlU3lzdGVtLmgi
CisjaW5jbHVkZSAiV2ViSWNvblVSTC5oIgogI2luY2x1ZGUgIldlYk5vZGUuaCIKICNpbmNsdWRl
ICJXZWJVUkwuaCIKIApAQCAtMTI5LDkgKzEzMCw5IEBAIHB1YmxpYzoKICAgICAvLyBkYXRhU291
cmNlKCktPnJlcXVlc3QoKS51cmwoKS4KICAgICB2aXJ0dWFsIFdlYlVSTCB1cmwoKSBjb25zdCA9
IDA7CiAKLSAgICAvLyBUaGUgdXJsIG9mIHRoZSBmYXZpY29uIChpZiBhbnkpIHNwZWNpZmllZCBi
eSB0aGUgZG9jdW1lbnQgbG9hZGVkIGluCi0gICAgLy8gdGhpcyBmcmFtZS4KLSAgICB2aXJ0dWFs
IFdlYlVSTCBmYXZJY29uVVJMKCkgY29uc3QgPSAwOworICAgIC8vIFRoZSB1cmxzIG9mIHRoZSBn
aXZlbiBjb21iaW5hdGlvbiB0eXBlcyBvZiBmYXZpY29uIChpZiBhbnkpIHNwZWNpZmllZCBieQor
ICAgIC8vIHRoZSBkb2N1bWVudCBsb2FkZWQgaW4gdGhpcyBmcmFtZS4KKyAgICB2aXJ0dWFsIFdl
YlZlY3RvcjxXZWJJY29uVVJMPiBmYXZJY29uVVJMKGludCBpY29uVHlwZXMpIGNvbnN0ID0gMDsK
IAogICAgIC8vIFRoZSB1cmwgb2YgdGhlIE9wZW5TZWFyY2ggRGVzcmlwdGlvbiBEb2N1bWVudCAo
aWYgYW55KSBzcGVjaWZpZWQgYnkKICAgICAvLyB0aGUgZG9jdW1lbnQgbG9hZGVkIGluIHRoaXMg
ZnJhbWUuCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1l
Q2xpZW50LmgJKHJldmlzaW9uIDg2MDYzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViRnJhbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogCiAj
aW5jbHVkZSAiV2ViQ29tbW9uLmgiCiAjaW5jbHVkZSAiV2ViRmlsZVN5c3RlbS5oIgorI2luY2x1
ZGUgIldlYkljb25VUkwuaCIKICNpbmNsdWRlICJXZWJOYXZpZ2F0aW9uUG9saWN5LmgiCiAjaW5j
bHVkZSAiV2ViTmF2aWdhdGlvblR5cGUuaCIKICNpbmNsdWRlICJXZWJTdG9yYWdlUXVvdGFUeXBl
LmgiCkBAIC0yMDIsNyArMjAzLDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIC8vIFRoZSBpY29u
cyBmb3IgdGhlIHBhZ2UgaGF2ZSBjaGFuZ2VkLgotICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VJ
Y29ucyhXZWJGcmFtZSopIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VJY29ucyhXZWJG
cmFtZSosIFdlYkljb25VUkw6OldlYkljb25UeXBlKSB7IH0KIAogICAgIC8vIFRoZSBmcmFtZSdz
IGRvY3VtZW50IGZpbmlzaGVkIGxvYWRpbmcuCiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaERv
Y3VtZW50TG9hZChXZWJGcmFtZSopIHsgfQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViSWNvblVSTC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkljb25VUkwuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYkljb25VUkwuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBk
aXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgV2ViSWNvblVSTF9oCisjZGVmaW5lIFdlYkljb25VUkxfaAorCisjaW5jbHVkZSAiV2ViVVJM
LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdHJ1Y3QgV2ViSWNvblVSTCB7CisgICAgZW51
bSBXZWJJY29uVHlwZSB7CisgICAgICAgIEludmFsaWRJY29uID0gMCwKKyAgICAgICAgRmF2aWNv
biA9IDEgPDwgMCwKKyAgICAgICAgVG91Y2hJY29uID0gMSA8PCAxLAorICAgICAgICBUb3VjaFBy
ZWNvbXBvc2VkSWNvbiA9IDEgPDwgMgorICAgIH07CisKKyAgICBXZWJJY29uVVJMKCkKKyAgICAg
ICAgOiBpY29uVHlwZShJbnZhbGlkSWNvbikKKyAgICB7CisgICAgfQorCisgICAgV2ViSWNvblVS
TChjb25zdCBXZWJVUkwmIHVybCwgV2ViSWNvblR5cGUgdHlwZSkKKyAgICAgICAgOiBpY29uVHlw
ZSh0eXBlKQorICAgICAgICAsIGljb25VUkwodXJsKQorICAgIHsKKyAgICB9CisKKyAgICBXZWJJ
Y29uVHlwZSBpY29uVHlwZTsKKyAgICBXZWJVUkwgaWNvblVSTDsKK307CisKK30KKworI2VuZGlm
IC8vIFdlYkljb25VUkxfaAoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViSWNvblVSTC5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUK
ICAgKyBMRgoKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2VydE1hdGNoaW5n
RW51bXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2Vy
dE1hdGNoaW5nRW51bXMuY3BwCShyZXZpc2lvbiA4NjA2MykKKysrIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2
ICs0Niw3IEBACiAjaW5jbHVkZSAiR2VvbG9jYXRpb25FcnJvci5oIgogI2luY2x1ZGUgIkdlb2xv
Y2F0aW9uUG9zaXRpb24uaCIKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCisjaW5jbHVk
ZSAiSWNvblVSTC5oIgogI2luY2x1ZGUgIklEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlLmgiCiAj
aW5jbHVkZSAiSURCS2V5LmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKQEAgLTczLDYgKzc0
LDcgQEAKICNpbmNsdWRlICJXZWJHZW9sb2NhdGlvblBvc2l0aW9uLmgiCiAjaW5jbHVkZSAiV2Vi
SURCRmFjdG9yeS5oIgogI2luY2x1ZGUgIldlYklEQktleS5oIgorI2luY2x1ZGUgIldlYkljb25V
UkwuaCIKICNpbmNsdWRlICJXZWJJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJXZWJNZWRpYVBs
YXllci5oIgogI2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvblByZXNlbnRlci5oIgpAQCAtMzA0LDYg
KzMwNiwxMiBAQCBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYkZvbnREZXNjCiBDT01Q
SUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYkZvbnREZXNjcmlwdGlvbjo6V2VpZ2h0Tm9ybWFs
LCBGb250V2VpZ2h0Tm9ybWFsKTsKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViRm9u
dERlc2NyaXB0aW9uOjpXZWlnaHRCb2xkLCBGb250V2VpZ2h0Qm9sZCk7CiAKKworQ09NUElMRV9B
U1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJY29uVVJMOjpJbnZhbGlkSWNvbiwgSW52YWxpZEljb24p
OworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJY29uVVJMOjpGYXZpY29uLCBGYXZp
Y29uKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViSWNvblVSTDo6VG91Y2hJY29u
LCBUb3VjaEljb24pOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJY29uVVJMOjpU
b3VjaFByZWNvbXBvc2VkSWNvbiwgVG91Y2hQcmVjb21wb3NlZEljb24pOworCiBDT01QSUxFX0FT
U0VSVF9NQVRDSElOR19FTlVNKFdlYk5vZGU6OkVsZW1lbnROb2RlLCBOb2RlOjpFTEVNRU5UX05P
REUpOwogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJOb2RlOjpBdHRyaWJ1dGVOb2Rl
LCBOb2RlOjpBVFRSSUJVVEVfTk9ERSk7CiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdl
Yk5vZGU6OlRleHROb2RlLCBOb2RlOjpURVhUX05PREUpOwpJbmRleDogU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCShyZXZpc2lv
biA4NjA2MykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50
SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2MCw3ICs3NjAsNyBAQCB2b2lkIEZyYW1lTG9h
ZGVyQ2xpZW50SW1wbDo6ZGlzcGF0Y2hEaWRSCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6
ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyhXZWJDb3JlOjpJY29uVHlwZSB0eXBlKQogewogICAgIGlm
IChtX3dlYkZyYW1lLT5jbGllbnQoKSkKLSAgICAgICAgbV93ZWJGcmFtZS0+Y2xpZW50KCktPmRp
ZENoYW5nZUljb25zKG1fd2ViRnJhbWUpOworICAgICAgICBtX3dlYkZyYW1lLT5jbGllbnQoKS0+
ZGlkQ2hhbmdlSWNvbnMobV93ZWJGcmFtZSwgc3RhdGljX2Nhc3Q8V2ViSWNvblVSTDo6V2ViSWNv
blR5cGU+KHR5cGUpKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpc3BhdGNo
RGlkQ29tbWl0TG9hZCgpCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFt
ZUltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZy
YW1lSW1wbC5jcHAJKHJldmlzaW9uIDg2MDYzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViRnJhbWVJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDYgKzEwMSw3IEBACiAj
aW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSGlzdG9yeUl0ZW0uaCIKICNpbmNsdWRl
ICJIaXRUZXN0UmVzdWx0LmgiCisjaW5jbHVkZSAiSWNvblVSTC5oIgogI2luY2x1ZGUgIkluc3Bl
Y3RvckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAicGFpbnRpbmcv
R3JhcGhpY3NDb250ZXh0QnVpbGRlci5oIgpAQCAtMTM3LDYgKzEzOCw3IEBACiAjaW5jbHVkZSAi
V2ViRm9ybUVsZW1lbnQuaCIKICNpbmNsdWRlICJXZWJGcmFtZUNsaWVudC5oIgogI2luY2x1ZGUg
IldlYkhpc3RvcnlJdGVtLmgiCisjaW5jbHVkZSAiV2ViSWNvblVSTC5oIgogI2luY2x1ZGUgIldl
YklucHV0RWxlbWVudC5oIgogI2luY2x1ZGUgIldlYk5vZGUuaCIKICNpbmNsdWRlICJXZWJQYXNz
d29yZEF1dG9jb21wbGV0ZUxpc3RlbmVyLmgiCkBAIC01MTgsMTcgKzUyMCwxOSBAQCBXZWJVUkwg
V2ViRnJhbWVJbXBsOjp1cmwoKSBjb25zdAogICAgIHJldHVybiBkcy0+cmVxdWVzdCgpLnVybCgp
OwogfQogCi1XZWJVUkwgV2ViRnJhbWVJbXBsOjpmYXZJY29uVVJMKCkgY29uc3QKK1dlYlZlY3Rv
cjxXZWJJY29uVVJMPiBXZWJGcmFtZUltcGw6OmZhdkljb25VUkwoaW50IHdlYkljb25UeXBlcykg
Y29uc3QKIHsKICAgICBGcmFtZUxvYWRlciogZnJhbWVMb2FkZXIgPSBtX2ZyYW1lLT5sb2FkZXIo
KTsKICAgICAvLyBUaGUgVVJMIHRvIHRoZSBmYXZpY29uIG1heSBiZSBpbiB0aGUgaGVhZGVyLiBB
cyBzdWNoLCBvbmx5CiAgICAgLy8gYXNrIHRoZSBsb2FkZXIgZm9yIHRoZSBmYXZpY29uIGlmIGl0
J3MgZmluaXNoZWQgbG9hZGluZy4KICAgICBpZiAoZnJhbWVMb2FkZXItPnN0YXRlKCkgPT0gRnJh
bWVTdGF0ZUNvbXBsZXRlKSB7Ci0gICAgICAgIGNvbnN0IEtVUkwmIHVybCA9IGZyYW1lTG9hZGVy
LT5pY29uVVJMKCk7Ci0gICAgICAgIGlmICghdXJsLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJl
dHVybiB1cmw7CisgICAgICAgIFdURjo6VmVjdG9yPFdlYkNvcmU6Okljb25VUkw+IGljb25VUkxz
ID0gZnJhbWVMb2FkZXItPmljb25VUkxzKHdlYkljb25UeXBlcyk7CisgICAgICAgIFdlYlZlY3Rv
cjxXZWJJY29uVVJMPiB3ZWJJY29uVVJMcyhpY29uVVJMcy5zaXplKCkpOworICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGljb25VUkxzLnNpemUoKTsgaSsrKQorICAgICAgICAgICAgd2Vi
SWNvblVSTHNbaV0gPSBXZWJJY29uVVJMKGljb25VUkxzW2ldLm1faWNvblVSTCwgc3RhdGljX2Nh
c3Q8V2ViSWNvblVSTDo6V2ViSWNvblR5cGU+KGljb25VUkxzW2ldLm1faWNvblR5cGUpKTsKKyAg
ICAgICAgcmV0dXJuIHdlYkljb25VUkxzOwogICAgIH0KLSAgICByZXR1cm4gV2ViVVJMKCk7Cisg
ICAgcmV0dXJuIFdlYlZlY3RvcjxXZWJJY29uVVJMPigpOwogfQogCiBXZWJVUkwgV2ViRnJhbWVJ
bXBsOjpvcGVuU2VhcmNoRGVzY3JpcHRpb25VUkwoKSBjb25zdApJbmRleDogU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmgJKHJldmlzaW9uIDg2MDYzKQorKysgU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTcw
LDcgKzcwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXROYW1lKGNvbnN0IFdlYlN0
cmluZyYpOwogICAgIHZpcnR1YWwgbG9uZyBsb25nIGlkZW50aWZpZXIoKSBjb25zdDsKICAgICB2
aXJ0dWFsIFdlYlVSTCB1cmwoKSBjb25zdDsKLSAgICB2aXJ0dWFsIFdlYlVSTCBmYXZJY29uVVJM
KCkgY29uc3Q7CisgICAgdmlydHVhbCBXZWJWZWN0b3I8V2ViSWNvblVSTD4gZmF2SWNvblVSTChp
bnQgaWNvblR5cGVzKSBjb25zdDsKICAgICB2aXJ0dWFsIFdlYlVSTCBvcGVuU2VhcmNoRGVzY3Jp
cHRpb25VUkwoKSBjb25zdDsKICAgICB2aXJ0dWFsIFdlYlN0cmluZyBlbmNvZGluZygpIGNvbnN0
OwogICAgIHZpcnR1YWwgV2ViU2l6ZSBzY3JvbGxPZmZzZXQoKSBjb25zdDsK
</data>
<flag name="review"
          id="85832"
          type_id="1"
          status="-"
          setter="levin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92819</attachid>
            <date>2011-05-09 11:57:02 -0700</date>
            <delta_ts>2011-05-09 12:14:19 -0700</delta_ts>
            <desc>Address the comments</desc>
            <filename>patch.5</filename>
            <type>text/plain</type>
            <size>11205</size>
            <attacher>michaelbai</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA4NjA2MykKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjgg
QEAKKzIwMTEtMDUtMDkgIFRhbyBCYWkgIDxtaWNoYWVsYmFpQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBIYW5kbGUgdGhlIHRv
dWNoIGljb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02MDI0NworCisgICAgICAgIEFkZGVkIFdlYkljb25VUkwgZm9yIHRoZSBjb3JyZXNwb25kaW5n
IEljb25VUkwuCisgICAgICAgIEFkZGVkIGEgcGFyYW1ldGVyIHRvIGZhdkljb25VUkwoKSB0byBz
cGVjaWZ5IHRoZSB0eXBlIG9mIGljb24gbmVlZCB0bworICAgICAgICByZXR1cm4uCisKKyAgICAg
ICAgKiBXZWJLaXQuZ3lwOgorICAgICAgICAqIGZlYXR1cmVzLmd5cGk6CisgICAgICAgICogcHVi
bGljL1dlYkZyYW1lLmg6CisgICAgICAgICogcHVibGljL1dlYkZyYW1lQ2xpZW50Lmg6CisgICAg
ICAgIChXZWJLaXQ6OldlYkZyYW1lQ2xpZW50OjpkaWRDaGFuZ2VJY29ucyk6CisgICAgICAgICog
cHVibGljL1dlYkljb25VUkwuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkljb25VUkw6
OldlYkljb25VUkwpOgorICAgICAgICAqIHNyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcDoKKyAg
ICAgICAgKiBzcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
RnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaERpZENoYW5nZUljb25zKToKKyAgICAgICAg
KiBzcmMvV2ViRnJhbWVJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVJbXBsOjpm
YXZJY29uVVJMKToKKyAgICAgICAgKiBzcmMvV2ViRnJhbWVJbXBsLmg6CisKIDIwMTEtMDUtMDkg
IFNoaXNoaXIgQWdyYXdhbCAgPHNoaXNoaXJAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IFRvbnkgR2VudGlsY29yZS4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2Vi
S2l0Lmd5cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAJ
KHJldmlzaW9uIDg2MDYzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCSh3
b3JraW5nIGNvcHkpCkBAIC0xODUsNiArMTg1LDcgQEAKICAgICAgICAgICAgICAgICAncHVibGlj
L1dlYkhUVFBCb2R5LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViSFRUUExvYWRJbmZv
LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViSWNvbkxvYWRpbmdDb21wbGV0aW9uLmgn
LAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViSWNvblR5cGUuaCcsCiAgICAgICAgICAgICAg
ICAgJ3B1YmxpYy9XZWJJbWFnZS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkltYWdl
RGVjb2Rlci5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYklEQkNhbGxiYWNrcy5oJywK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lwaQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkJKHJldmlzaW9uIDg2MDYzKQor
KysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpCSh3b3JraW5nIGNvcHkpCkBA
IC04OCw2ICs4OCw3IEBACiAgICAgICAgICdFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUPTEnLAog
ICAgICAgICAnRU5BQkxFX1NWR19VU0U9MScsCiAgICAgICAgICdFTkFCTEVfVE9VQ0hfRVZFTlRT
PTEnLAorICAgICAgICAnRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORz0xJywKICAgICAgICAgJ0VO
QUJMRV9WOF9TQ1JJUFRfREVCVUdfU0VSVkVSPTEnLAogICAgICAgICAnRU5BQkxFX1ZJREVPPTEn
LAogICAgICAgICAnRU5BQkxFX1dFQl9BVURJTz0wJywKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYkZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViRnJhbWUuaAkocmV2aXNpb24gODYwNjMpCisrKyBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3
IEBACiAKICNpbmNsdWRlICJXZWJDYW52YXMuaCIKICNpbmNsdWRlICJXZWJGaWxlU3lzdGVtLmgi
CisjaW5jbHVkZSAiV2ViSWNvblVSTC5oIgogI2luY2x1ZGUgIldlYk5vZGUuaCIKICNpbmNsdWRl
ICJXZWJVUkwuaCIKIApAQCAtMTI5LDkgKzEzMCw5IEBAIHB1YmxpYzoKICAgICAvLyBkYXRhU291
cmNlKCktPnJlcXVlc3QoKS51cmwoKS4KICAgICB2aXJ0dWFsIFdlYlVSTCB1cmwoKSBjb25zdCA9
IDA7CiAKLSAgICAvLyBUaGUgdXJsIG9mIHRoZSBmYXZpY29uIChpZiBhbnkpIHNwZWNpZmllZCBi
eSB0aGUgZG9jdW1lbnQgbG9hZGVkIGluCi0gICAgLy8gdGhpcyBmcmFtZS4KLSAgICB2aXJ0dWFs
IFdlYlVSTCBmYXZJY29uVVJMKCkgY29uc3QgPSAwOworICAgIC8vIFRoZSB1cmxzIG9mIHRoZSBn
aXZlbiBjb21iaW5hdGlvbiB0eXBlcyBvZiBmYXZpY29uIChpZiBhbnkpIHNwZWNpZmllZCBieQor
ICAgIC8vIHRoZSBkb2N1bWVudCBsb2FkZWQgaW4gdGhpcyBmcmFtZS4KKyAgICB2aXJ0dWFsIFdl
YlZlY3RvcjxXZWJJY29uVVJMPiBmYXZJY29uVVJMKGludCBpY29uVHlwZXMpIGNvbnN0ID0gMDsK
IAogICAgIC8vIFRoZSB1cmwgb2YgdGhlIE9wZW5TZWFyY2ggRGVzcmlwdGlvbiBEb2N1bWVudCAo
aWYgYW55KSBzcGVjaWZpZWQgYnkKICAgICAvLyB0aGUgZG9jdW1lbnQgbG9hZGVkIGluIHRoaXMg
ZnJhbWUuCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1l
Q2xpZW50LmgJKHJldmlzaW9uIDg2MDYzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViRnJhbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogCiAj
aW5jbHVkZSAiV2ViQ29tbW9uLmgiCiAjaW5jbHVkZSAiV2ViRmlsZVN5c3RlbS5oIgorI2luY2x1
ZGUgIldlYkljb25VUkwuaCIKICNpbmNsdWRlICJXZWJOYXZpZ2F0aW9uUG9saWN5LmgiCiAjaW5j
bHVkZSAiV2ViTmF2aWdhdGlvblR5cGUuaCIKICNpbmNsdWRlICJXZWJTdG9yYWdlUXVvdGFUeXBl
LmgiCkBAIC0yMDIsNyArMjAzLDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIC8vIFRoZSBpY29u
cyBmb3IgdGhlIHBhZ2UgaGF2ZSBjaGFuZ2VkLgotICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VJ
Y29ucyhXZWJGcmFtZSopIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VJY29ucyhXZWJG
cmFtZSosIFdlYkljb25VUkw6OldlYkljb25UeXBlKSB7IH0KIAogICAgIC8vIFRoZSBmcmFtZSdz
IGRvY3VtZW50IGZpbmlzaGVkIGxvYWRpbmcuCiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaERv
Y3VtZW50TG9hZChXZWJGcmFtZSopIHsgfQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViSWNvblVSTC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkljb25VUkwuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYkljb25VUkwuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3NCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBk
aXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgV2ViSWNvblVSTF9oCisjZGVmaW5lIFdlYkljb25VUkxfaAorCisjaW5jbHVkZSAiV2ViVVJM
LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdHJ1Y3QgV2ViSWNvblVSTCB7CisgICAgZW51
bSBXZWJJY29uVHlwZSB7CisgICAgICAgIFdlYkljb25UeXBlSW52YWxpZEljb24gPSAwLAorICAg
ICAgICBXZWJJY29uVHlwZUZhdmljb24gPSAxIDw8IDAsCisgICAgICAgIFdlYkljb25UeXBlVG91
Y2hJY29uID0gMSA8PCAxLAorICAgICAgICBXZWJJY29uVHlwZVRvdWNoUHJlY29tcG9zZWRJY29u
ID0gMSA8PCAyCisgICAgfTsKKworICAgIFdlYkljb25VUkwoKQorICAgICAgICA6IG1faWNvblR5
cGUoV2ViSWNvblR5cGVJbnZhbGlkSWNvbikKKyAgICB7CisgICAgfQorCisgICAgV2ViSWNvblVS
TChjb25zdCBXZWJVUkwmIHVybCwgV2ViSWNvblR5cGUgdHlwZSkKKyAgICAgICAgOiBtX2ljb25U
eXBlKHR5cGUpCisgICAgICAgICwgbV9pY29uVVJMKHVybCkKKyAgICB7CisgICAgfQorCisgICAg
V2ViSWNvblR5cGUgaWNvblR5cGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1faWNv
blR5cGU7CisgICAgfQorCisgICAgY29uc3QgV2ViVVJMJiBpY29uVVJMKCkgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiBtX2ljb25VUkw7CisgICAgfQorCitwcml2YXRlOgorICAgIFdlYklj
b25UeXBlIG1faWNvblR5cGU7CisgICAgV2ViVVJMIG1faWNvblVSTDsKK307CisKK30KKworI2Vu
ZGlmIC8vIFdlYkljb25VUkxfaAoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViSWNvblVSTC5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5
bGUKICAgKyBMRgoKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2VydE1hdGNo
aW5nRW51bXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fz
c2VydE1hdGNoaW5nRW51bXMuY3BwCShyZXZpc2lvbiA4NjA2MykKKysrIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
Niw2ICs0Niw3IEBACiAjaW5jbHVkZSAiR2VvbG9jYXRpb25FcnJvci5oIgogI2luY2x1ZGUgIkdl
b2xvY2F0aW9uUG9zaXRpb24uaCIKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCisjaW5j
bHVkZSAiSWNvblVSTC5oIgogI2luY2x1ZGUgIklEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlLmgi
CiAjaW5jbHVkZSAiSURCS2V5LmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKQEAgLTczLDYg
Kzc0LDcgQEAKICNpbmNsdWRlICJXZWJHZW9sb2NhdGlvblBvc2l0aW9uLmgiCiAjaW5jbHVkZSAi
V2ViSURCRmFjdG9yeS5oIgogI2luY2x1ZGUgIldlYklEQktleS5oIgorI2luY2x1ZGUgIldlYklj
b25VUkwuaCIKICNpbmNsdWRlICJXZWJJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJXZWJNZWRp
YVBsYXllci5oIgogI2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvblByZXNlbnRlci5oIgpAQCAtMzA0
LDYgKzMwNiwxMSBAQCBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYkZvbnREZXNjCiBD
T01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYkZvbnREZXNjcmlwdGlvbjo6V2VpZ2h0Tm9y
bWFsLCBGb250V2VpZ2h0Tm9ybWFsKTsKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2Vi
Rm9udERlc2NyaXB0aW9uOjpXZWlnaHRCb2xkLCBGb250V2VpZ2h0Qm9sZCk7CiAKK0NPTVBJTEVf
QVNTRVJUX01BVENISU5HX0VOVU0oV2ViSWNvblVSTDo6V2ViSWNvblR5cGVJbnZhbGlkSWNvbiwg
SW52YWxpZEljb24pOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJY29uVVJMOjpX
ZWJJY29uVHlwZUZhdmljb24sIEZhdmljb24pOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5V
TShXZWJJY29uVVJMOjpXZWJJY29uVHlwZVRvdWNoSWNvbiwgVG91Y2hJY29uKTsKK0NPTVBJTEVf
QVNTRVJUX01BVENISU5HX0VOVU0oV2ViSWNvblVSTDo6V2ViSWNvblR5cGVUb3VjaFByZWNvbXBv
c2VkSWNvbiwgVG91Y2hQcmVjb21wb3NlZEljb24pOworCiBDT01QSUxFX0FTU0VSVF9NQVRDSElO
R19FTlVNKFdlYk5vZGU6OkVsZW1lbnROb2RlLCBOb2RlOjpFTEVNRU5UX05PREUpOwogQ09NUElM
RV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJOb2RlOjpBdHRyaWJ1dGVOb2RlLCBOb2RlOjpBVFRS
SUJVVEVfTk9ERSk7CiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYk5vZGU6OlRleHRO
b2RlLCBOb2RlOjpURVhUX05PREUpOwpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
RnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCShyZXZpc2lvbiA4NjA2MykKKysr
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTc2MCw3ICs3NjAsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1w
bDo6ZGlzcGF0Y2hEaWRSCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlzcGF0Y2hEaWRD
aGFuZ2VJY29ucyhXZWJDb3JlOjpJY29uVHlwZSB0eXBlKQogewogICAgIGlmIChtX3dlYkZyYW1l
LT5jbGllbnQoKSkKLSAgICAgICAgbV93ZWJGcmFtZS0+Y2xpZW50KCktPmRpZENoYW5nZUljb25z
KG1fd2ViRnJhbWUpOworICAgICAgICBtX3dlYkZyYW1lLT5jbGllbnQoKS0+ZGlkQ2hhbmdlSWNv
bnMobV93ZWJGcmFtZSwgc3RhdGljX2Nhc3Q8V2ViSWNvblVSTDo6V2ViSWNvblR5cGU+KHR5cGUp
KTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpc3BhdGNoRGlkQ29tbWl0TG9h
ZCgpCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAJ
KHJldmlzaW9uIDg2MDYzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJ
bXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDYgKzEwMSw3IEBACiAjaW5jbHVkZSAiSFRN
TE5hbWVzLmgiCiAjaW5jbHVkZSAiSGlzdG9yeUl0ZW0uaCIKICNpbmNsdWRlICJIaXRUZXN0UmVz
dWx0LmgiCisjaW5jbHVkZSAiSWNvblVSTC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xs
ZXIuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAicGFpbnRpbmcvR3JhcGhpY3NDb250
ZXh0QnVpbGRlci5oIgpAQCAtMTM3LDYgKzEzOCw3IEBACiAjaW5jbHVkZSAiV2ViRm9ybUVsZW1l
bnQuaCIKICNpbmNsdWRlICJXZWJGcmFtZUNsaWVudC5oIgogI2luY2x1ZGUgIldlYkhpc3RvcnlJ
dGVtLmgiCisjaW5jbHVkZSAiV2ViSWNvblVSTC5oIgogI2luY2x1ZGUgIldlYklucHV0RWxlbWVu
dC5oIgogI2luY2x1ZGUgIldlYk5vZGUuaCIKICNpbmNsdWRlICJXZWJQYXNzd29yZEF1dG9jb21w
bGV0ZUxpc3RlbmVyLmgiCkBAIC01MTgsMTcgKzUyMCwxOSBAQCBXZWJVUkwgV2ViRnJhbWVJbXBs
Ojp1cmwoKSBjb25zdAogICAgIHJldHVybiBkcy0+cmVxdWVzdCgpLnVybCgpOwogfQogCi1XZWJV
UkwgV2ViRnJhbWVJbXBsOjpmYXZJY29uVVJMKCkgY29uc3QKK1dlYlZlY3RvcjxXZWJJY29uVVJM
PiBXZWJGcmFtZUltcGw6OmZhdkljb25VUkwoaW50IHdlYkljb25UeXBlcykgY29uc3QKIHsKICAg
ICBGcmFtZUxvYWRlciogZnJhbWVMb2FkZXIgPSBtX2ZyYW1lLT5sb2FkZXIoKTsKICAgICAvLyBU
aGUgVVJMIHRvIHRoZSBmYXZpY29uIG1heSBiZSBpbiB0aGUgaGVhZGVyLiBBcyBzdWNoLCBvbmx5
CiAgICAgLy8gYXNrIHRoZSBsb2FkZXIgZm9yIHRoZSBmYXZpY29uIGlmIGl0J3MgZmluaXNoZWQg
bG9hZGluZy4KICAgICBpZiAoZnJhbWVMb2FkZXItPnN0YXRlKCkgPT0gRnJhbWVTdGF0ZUNvbXBs
ZXRlKSB7Ci0gICAgICAgIGNvbnN0IEtVUkwmIHVybCA9IGZyYW1lTG9hZGVyLT5pY29uVVJMKCk7
Ci0gICAgICAgIGlmICghdXJsLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVybiB1cmw7Cisg
ICAgICAgIFdURjo6VmVjdG9yPFdlYkNvcmU6Okljb25VUkw+IGljb25VUkxzID0gZnJhbWVMb2Fk
ZXItPmljb25VUkxzKHdlYkljb25UeXBlcyk7CisgICAgICAgIFdlYlZlY3RvcjxXZWJJY29uVVJM
PiB3ZWJJY29uVVJMcyhpY29uVVJMcy5zaXplKCkpOworICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGljb25VUkxzLnNpemUoKTsgaSsrKQorICAgICAgICAgICAgd2ViSWNvblVSTHNbaV0g
PSBXZWJJY29uVVJMKGljb25VUkxzW2ldLm1faWNvblVSTCwgc3RhdGljX2Nhc3Q8V2ViSWNvblVS
TDo6V2ViSWNvblR5cGU+KGljb25VUkxzW2ldLm1faWNvblR5cGUpKTsKKyAgICAgICAgcmV0dXJu
IHdlYkljb25VUkxzOwogICAgIH0KLSAgICByZXR1cm4gV2ViVVJMKCk7CisgICAgcmV0dXJuIFdl
YlZlY3RvcjxXZWJJY29uVVJMPigpOwogfQogCiBXZWJVUkwgV2ViRnJhbWVJbXBsOjpvcGVuU2Vh
cmNoRGVzY3JpcHRpb25VUkwoKSBjb25zdApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViRnJhbWVJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViRnJhbWVJbXBsLmgJKHJldmlzaW9uIDg2MDYzKQorKysgU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViRnJhbWVJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTcwLDcgKzcwLDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXROYW1lKGNvbnN0IFdlYlN0cmluZyYpOwogICAg
IHZpcnR1YWwgbG9uZyBsb25nIGlkZW50aWZpZXIoKSBjb25zdDsKICAgICB2aXJ0dWFsIFdlYlVS
TCB1cmwoKSBjb25zdDsKLSAgICB2aXJ0dWFsIFdlYlVSTCBmYXZJY29uVVJMKCkgY29uc3Q7Cisg
ICAgdmlydHVhbCBXZWJWZWN0b3I8V2ViSWNvblVSTD4gZmF2SWNvblVSTChpbnQgaWNvblR5cGVz
KSBjb25zdDsKICAgICB2aXJ0dWFsIFdlYlVSTCBvcGVuU2VhcmNoRGVzY3JpcHRpb25VUkwoKSBj
b25zdDsKICAgICB2aXJ0dWFsIFdlYlN0cmluZyBlbmNvZGluZygpIGNvbnN0OwogICAgIHZpcnR1
YWwgV2ViU2l6ZSBzY3JvbGxPZmZzZXQoKSBjb25zdDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92823</attachid>
            <date>2011-05-09 12:14:19 -0700</date>
            <delta_ts>2011-05-09 13:08:39 -0700</delta_ts>
            <desc>Address the comments</desc>
            <filename>patch.6</filename>
            <type>text/plain</type>
            <size>11177</size>
            <attacher>michaelbai</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA4NjA2MykKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjgg
QEAKKzIwMTEtMDUtMDkgIFRhbyBCYWkgIDxtaWNoYWVsYmFpQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBIYW5kbGUgdGhlIHRv
dWNoIGljb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02MDI0NworCisgICAgICAgIEFkZGVkIFdlYkljb25VUkwgZm9yIHRoZSBjb3JyZXNwb25kaW5n
IEljb25VUkwuCisgICAgICAgIEFkZGVkIGEgcGFyYW1ldGVyIHRvIGZhdkljb25VUkwoKSB0byBz
cGVjaWZ5IHRoZSB0eXBlIG9mIGljb24gbmVlZCB0bworICAgICAgICByZXR1cm4uCisKKyAgICAg
ICAgKiBXZWJLaXQuZ3lwOgorICAgICAgICAqIGZlYXR1cmVzLmd5cGk6CisgICAgICAgICogcHVi
bGljL1dlYkZyYW1lLmg6CisgICAgICAgICogcHVibGljL1dlYkZyYW1lQ2xpZW50Lmg6CisgICAg
ICAgIChXZWJLaXQ6OldlYkZyYW1lQ2xpZW50OjpkaWRDaGFuZ2VJY29ucyk6CisgICAgICAgICog
cHVibGljL1dlYkljb25VUkwuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkljb25VUkw6
OldlYkljb25VUkwpOgorICAgICAgICAqIHNyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcDoKKyAg
ICAgICAgKiBzcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
RnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaERpZENoYW5nZUljb25zKToKKyAgICAgICAg
KiBzcmMvV2ViRnJhbWVJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVJbXBsOjpm
YXZJY29uVVJMKToKKyAgICAgICAgKiBzcmMvV2ViRnJhbWVJbXBsLmg6CisKIDIwMTEtMDUtMDkg
IFNoaXNoaXIgQWdyYXdhbCAgPHNoaXNoaXJAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IFRvbnkgR2VudGlsY29yZS4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2Vi
S2l0Lmd5cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAJ
KHJldmlzaW9uIDg2MDYzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCSh3
b3JraW5nIGNvcHkpCkBAIC0xODUsNiArMTg1LDcgQEAKICAgICAgICAgICAgICAgICAncHVibGlj
L1dlYkhUVFBCb2R5LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViSFRUUExvYWRJbmZv
LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViSWNvbkxvYWRpbmdDb21wbGV0aW9uLmgn
LAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViSWNvblR5cGUuaCcsCiAgICAgICAgICAgICAg
ICAgJ3B1YmxpYy9XZWJJbWFnZS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkltYWdl
RGVjb2Rlci5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYklEQkNhbGxiYWNrcy5oJywK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lwaQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkJKHJldmlzaW9uIDg2MDYzKQor
KysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpCSh3b3JraW5nIGNvcHkpCkBA
IC04OCw2ICs4OCw3IEBACiAgICAgICAgICdFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUPTEnLAog
ICAgICAgICAnRU5BQkxFX1NWR19VU0U9MScsCiAgICAgICAgICdFTkFCTEVfVE9VQ0hfRVZFTlRT
PTEnLAorICAgICAgICAnRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORz0xJywKICAgICAgICAgJ0VO
QUJMRV9WOF9TQ1JJUFRfREVCVUdfU0VSVkVSPTEnLAogICAgICAgICAnRU5BQkxFX1ZJREVPPTEn
LAogICAgICAgICAnRU5BQkxFX1dFQl9BVURJTz0wJywKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYkZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViRnJhbWUuaAkocmV2aXNpb24gODYwNjMpCisrKyBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3
IEBACiAKICNpbmNsdWRlICJXZWJDYW52YXMuaCIKICNpbmNsdWRlICJXZWJGaWxlU3lzdGVtLmgi
CisjaW5jbHVkZSAiV2ViSWNvblVSTC5oIgogI2luY2x1ZGUgIldlYk5vZGUuaCIKICNpbmNsdWRl
ICJXZWJVUkwuaCIKIApAQCAtMTI5LDkgKzEzMCw5IEBAIHB1YmxpYzoKICAgICAvLyBkYXRhU291
cmNlKCktPnJlcXVlc3QoKS51cmwoKS4KICAgICB2aXJ0dWFsIFdlYlVSTCB1cmwoKSBjb25zdCA9
IDA7CiAKLSAgICAvLyBUaGUgdXJsIG9mIHRoZSBmYXZpY29uIChpZiBhbnkpIHNwZWNpZmllZCBi
eSB0aGUgZG9jdW1lbnQgbG9hZGVkIGluCi0gICAgLy8gdGhpcyBmcmFtZS4KLSAgICB2aXJ0dWFs
IFdlYlVSTCBmYXZJY29uVVJMKCkgY29uc3QgPSAwOworICAgIC8vIFRoZSB1cmxzIG9mIHRoZSBn
aXZlbiBjb21iaW5hdGlvbiB0eXBlcyBvZiBmYXZpY29uIChpZiBhbnkpIHNwZWNpZmllZCBieQor
ICAgIC8vIHRoZSBkb2N1bWVudCBsb2FkZWQgaW4gdGhpcyBmcmFtZS4KKyAgICB2aXJ0dWFsIFdl
YlZlY3RvcjxXZWJJY29uVVJMPiBmYXZJY29uVVJMKGludCBpY29uVHlwZXMpIGNvbnN0ID0gMDsK
IAogICAgIC8vIFRoZSB1cmwgb2YgdGhlIE9wZW5TZWFyY2ggRGVzcmlwdGlvbiBEb2N1bWVudCAo
aWYgYW55KSBzcGVjaWZpZWQgYnkKICAgICAvLyB0aGUgZG9jdW1lbnQgbG9hZGVkIGluIHRoaXMg
ZnJhbWUuCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1l
Q2xpZW50LmgJKHJldmlzaW9uIDg2MDYzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViRnJhbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogCiAj
aW5jbHVkZSAiV2ViQ29tbW9uLmgiCiAjaW5jbHVkZSAiV2ViRmlsZVN5c3RlbS5oIgorI2luY2x1
ZGUgIldlYkljb25VUkwuaCIKICNpbmNsdWRlICJXZWJOYXZpZ2F0aW9uUG9saWN5LmgiCiAjaW5j
bHVkZSAiV2ViTmF2aWdhdGlvblR5cGUuaCIKICNpbmNsdWRlICJXZWJTdG9yYWdlUXVvdGFUeXBl
LmgiCkBAIC0yMDIsNyArMjAzLDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIC8vIFRoZSBpY29u
cyBmb3IgdGhlIHBhZ2UgaGF2ZSBjaGFuZ2VkLgotICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VJ
Y29ucyhXZWJGcmFtZSopIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VJY29ucyhXZWJG
cmFtZSosIFdlYkljb25VUkw6OldlYkljb25UeXBlKSB7IH0KIAogICAgIC8vIFRoZSBmcmFtZSdz
IGRvY3VtZW50IGZpbmlzaGVkIGxvYWRpbmcuCiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaERv
Y3VtZW50TG9hZChXZWJGcmFtZSopIHsgfQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViSWNvblVSTC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkljb25VUkwuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYkljb25VUkwuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3NCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBk
aXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgV2ViSWNvblVSTF9oCisjZGVmaW5lIFdlYkljb25VUkxfaAorCisjaW5jbHVkZSAiV2ViVVJM
LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdHJ1Y3QgV2ViSWNvblVSTCB7CisgICAgZW51
bSBXZWJJY29uVHlwZSB7CisgICAgICAgIFdlYkljb25UeXBlSW52YWxpZCA9IDAsCisgICAgICAg
IFdlYkljb25UeXBlRmF2aWNvbiA9IDEgPDwgMCwKKyAgICAgICAgV2ViSWNvblR5cGVUb3VjaCA9
IDEgPDwgMSwKKyAgICAgICAgV2ViSWNvblR5cGVUb3VjaFByZWNvbXBvc2VkID0gMSA8PCAyCisg
ICAgfTsKKworICAgIFdlYkljb25VUkwoKQorICAgICAgICA6IG1faWNvblR5cGUoV2ViSWNvblR5
cGVJbnZhbGlkKQorICAgIHsKKyAgICB9CisKKyAgICBXZWJJY29uVVJMKGNvbnN0IFdlYlVSTCYg
dXJsLCBXZWJJY29uVHlwZSB0eXBlKQorICAgICAgICA6IG1faWNvblR5cGUodHlwZSkKKyAgICAg
ICAgLCBtX2ljb25VUkwodXJsKQorICAgIHsKKyAgICB9CisKKyAgICBXZWJJY29uVHlwZSBpY29u
VHlwZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9pY29uVHlwZTsKKyAgICB9CisK
KyAgICBjb25zdCBXZWJVUkwmIGljb25VUkwoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IG1faWNvblVSTDsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgV2ViSWNvblR5cGUgbV9pY29uVHlw
ZTsKKyAgICBXZWJVUkwgbV9pY29uVVJMOworfTsKKworfQorCisjZW5kaWYgLy8gV2ViSWNvblVS
TF9oCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJJY29uVVJMLmgKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRl
eDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVt
cy5jcHAJKHJldmlzaW9uIDg2MDYzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNz
ZXJ0TWF0Y2hpbmdFbnVtcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDcgQEAKICNp
bmNsdWRlICJHZW9sb2NhdGlvbkVycm9yLmgiCiAjaW5jbHVkZSAiR2VvbG9jYXRpb25Qb3NpdGlv
bi5oIgogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKKyNpbmNsdWRlICJJY29uVVJMLmgi
CiAjaW5jbHVkZSAiSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJJREJL
ZXkuaCIKICNpbmNsdWRlICJNZWRpYVBsYXllci5oIgpAQCAtNzMsNiArNzQsNyBAQAogI2luY2x1
ZGUgIldlYkdlb2xvY2F0aW9uUG9zaXRpb24uaCIKICNpbmNsdWRlICJXZWJJREJGYWN0b3J5Lmgi
CiAjaW5jbHVkZSAiV2ViSURCS2V5LmgiCisjaW5jbHVkZSAiV2ViSWNvblVSTC5oIgogI2luY2x1
ZGUgIldlYklucHV0RWxlbWVudC5oIgogI2luY2x1ZGUgIldlYk1lZGlhUGxheWVyLmgiCiAjaW5j
bHVkZSAiV2ViTm90aWZpY2F0aW9uUHJlc2VudGVyLmgiCkBAIC0zMDQsNiArMzA2LDExIEBAIENP
TVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViRm9udERlc2MKIENPTVBJTEVfQVNTRVJUX01B
VENISU5HX0VOVU0oV2ViRm9udERlc2NyaXB0aW9uOjpXZWlnaHROb3JtYWwsIEZvbnRXZWlnaHRO
b3JtYWwpOwogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJGb250RGVzY3JpcHRpb246
OldlaWdodEJvbGQsIEZvbnRXZWlnaHRCb2xkKTsKIAorQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdf
RU5VTShXZWJJY29uVVJMOjpXZWJJY29uVHlwZUludmFsaWQsIEludmFsaWRJY29uKTsKK0NPTVBJ
TEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViSWNvblVSTDo6V2ViSWNvblR5cGVGYXZpY29uLCBG
YXZpY29uKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViSWNvblVSTDo6V2ViSWNv
blR5cGVUb3VjaCwgVG91Y2hJY29uKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2Vi
SWNvblVSTDo6V2ViSWNvblR5cGVUb3VjaFByZWNvbXBvc2VkLCBUb3VjaFByZWNvbXBvc2VkSWNv
bik7CisKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViTm9kZTo6RWxlbWVudE5vZGUs
IE5vZGU6OkVMRU1FTlRfTk9ERSk7CiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYk5v
ZGU6OkF0dHJpYnV0ZU5vZGUsIE5vZGU6OkFUVFJJQlVURV9OT0RFKTsKIENPTVBJTEVfQVNTRVJU
X01BVENISU5HX0VOVU0oV2ViTm9kZTo6VGV4dE5vZGUsIE5vZGU6OlRFWFRfTk9ERSk7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50
SW1wbC5jcHAJKHJldmlzaW9uIDg2MDYzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
RnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzYwLDcgKzc2MCw3
IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaERpZFIKIHZvaWQgRnJhbWVM
b2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaERpZENoYW5nZUljb25zKFdlYkNvcmU6Okljb25UeXBl
IHR5cGUpCiB7CiAgICAgaWYgKG1fd2ViRnJhbWUtPmNsaWVudCgpKQotICAgICAgICBtX3dlYkZy
YW1lLT5jbGllbnQoKS0+ZGlkQ2hhbmdlSWNvbnMobV93ZWJGcmFtZSk7CisgICAgICAgIG1fd2Vi
RnJhbWUtPmNsaWVudCgpLT5kaWRDaGFuZ2VJY29ucyhtX3dlYkZyYW1lLCBzdGF0aWNfY2FzdDxX
ZWJJY29uVVJMOjpXZWJJY29uVHlwZT4odHlwZSkpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyQ2xp
ZW50SW1wbDo6ZGlzcGF0Y2hEaWRDb21taXRMb2FkKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAkocmV2aXNpb24gODYwNjMpCisrKyBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDEsNiArMTAxLDcgQEAKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIaXN0b3J5
SXRlbS5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKKyNpbmNsdWRlICJJY29uVVJMLmgi
CiAjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNp
bmNsdWRlICJwYWludGluZy9HcmFwaGljc0NvbnRleHRCdWlsZGVyLmgiCkBAIC0xMzcsNiArMTM4
LDcgQEAKICNpbmNsdWRlICJXZWJGb3JtRWxlbWVudC5oIgogI2luY2x1ZGUgIldlYkZyYW1lQ2xp
ZW50LmgiCiAjaW5jbHVkZSAiV2ViSGlzdG9yeUl0ZW0uaCIKKyNpbmNsdWRlICJXZWJJY29uVVJM
LmgiCiAjaW5jbHVkZSAiV2ViSW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiV2ViTm9kZS5oIgog
I2luY2x1ZGUgIldlYlBhc3N3b3JkQXV0b2NvbXBsZXRlTGlzdGVuZXIuaCIKQEAgLTUxOCwxNyAr
NTIwLDE5IEBAIFdlYlVSTCBXZWJGcmFtZUltcGw6OnVybCgpIGNvbnN0CiAgICAgcmV0dXJuIGRz
LT5yZXF1ZXN0KCkudXJsKCk7CiB9CiAKLVdlYlVSTCBXZWJGcmFtZUltcGw6OmZhdkljb25VUkwo
KSBjb25zdAorV2ViVmVjdG9yPFdlYkljb25VUkw+IFdlYkZyYW1lSW1wbDo6ZmF2SWNvblVSTChp
bnQgd2ViSWNvblR5cGVzKSBjb25zdAogewogICAgIEZyYW1lTG9hZGVyKiBmcmFtZUxvYWRlciA9
IG1fZnJhbWUtPmxvYWRlcigpOwogICAgIC8vIFRoZSBVUkwgdG8gdGhlIGZhdmljb24gbWF5IGJl
IGluIHRoZSBoZWFkZXIuIEFzIHN1Y2gsIG9ubHkKICAgICAvLyBhc2sgdGhlIGxvYWRlciBmb3Ig
dGhlIGZhdmljb24gaWYgaXQncyBmaW5pc2hlZCBsb2FkaW5nLgogICAgIGlmIChmcmFtZUxvYWRl
ci0+c3RhdGUoKSA9PSBGcmFtZVN0YXRlQ29tcGxldGUpIHsKLSAgICAgICAgY29uc3QgS1VSTCYg
dXJsID0gZnJhbWVMb2FkZXItPmljb25VUkwoKTsKLSAgICAgICAgaWYgKCF1cmwuaXNFbXB0eSgp
KQotICAgICAgICAgICAgcmV0dXJuIHVybDsKKyAgICAgICAgV1RGOjpWZWN0b3I8V2ViQ29yZTo6
SWNvblVSTD4gaWNvblVSTHMgPSBmcmFtZUxvYWRlci0+aWNvblVSTHMod2ViSWNvblR5cGVzKTsK
KyAgICAgICAgV2ViVmVjdG9yPFdlYkljb25VUkw+IHdlYkljb25VUkxzKGljb25VUkxzLnNpemUo
KSk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaWNvblVSTHMuc2l6ZSgpOyBpKysp
CisgICAgICAgICAgICB3ZWJJY29uVVJMc1tpXSA9IFdlYkljb25VUkwoaWNvblVSTHNbaV0ubV9p
Y29uVVJMLCBzdGF0aWNfY2FzdDxXZWJJY29uVVJMOjpXZWJJY29uVHlwZT4oaWNvblVSTHNbaV0u
bV9pY29uVHlwZSkpOworICAgICAgICByZXR1cm4gd2ViSWNvblVSTHM7CiAgICAgfQotICAgIHJl
dHVybiBXZWJVUkwoKTsKKyAgICByZXR1cm4gV2ViVmVjdG9yPFdlYkljb25VUkw+KCk7CiB9CiAK
IFdlYlVSTCBXZWJGcmFtZUltcGw6Om9wZW5TZWFyY2hEZXNjcmlwdGlvblVSTCgpIGNvbnN0Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuaAkocmV2aXNpb24g
ODYwNjMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuaAkod29y
a2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNl
dE5hbWUoY29uc3QgV2ViU3RyaW5nJik7CiAgICAgdmlydHVhbCBsb25nIGxvbmcgaWRlbnRpZmll
cigpIGNvbnN0OwogICAgIHZpcnR1YWwgV2ViVVJMIHVybCgpIGNvbnN0OwotICAgIHZpcnR1YWwg
V2ViVVJMIGZhdkljb25VUkwoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFdlYlZlY3RvcjxXZWJJY29u
VVJMPiBmYXZJY29uVVJMKGludCBpY29uVHlwZXMpIGNvbnN0OwogICAgIHZpcnR1YWwgV2ViVVJM
IG9wZW5TZWFyY2hEZXNjcmlwdGlvblVSTCgpIGNvbnN0OwogICAgIHZpcnR1YWwgV2ViU3RyaW5n
IGVuY29kaW5nKCkgY29uc3Q7CiAgICAgdmlydHVhbCBXZWJTaXplIHNjcm9sbE9mZnNldCgpIGNv
bnN0Owo=
</data>
<flag name="review"
          id="85868"
          type_id="1"
          status="-"
          setter="levin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92836</attachid>
            <date>2011-05-09 13:08:39 -0700</date>
            <delta_ts>2011-05-10 09:01:28 -0700</delta_ts>
            <desc>Address the comment</desc>
            <filename>patch.7</filename>
            <type>text/plain</type>
            <size>11173</size>
            <attacher>michaelbai</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA4NjA4MykKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjgg
QEAKKzIwMTEtMDUtMDkgIFRhbyBCYWkgIDxtaWNoYWVsYmFpQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBIYW5kbGUgdGhlIHRv
dWNoIGljb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02MDI0NworCisgICAgICAgIEFkZGVkIFdlYkljb25VUkwgZm9yIHRoZSBjb3JyZXNwb25kaW5n
IEljb25VUkwuCisgICAgICAgIEFkZGVkIGEgcGFyYW1ldGVyIHRvIGZhdkljb25VUkwoKSB0byBz
cGVjaWZ5IHRoZSB0eXBlIG9mIGljb24gbmVlZCB0bworICAgICAgICByZXR1cm4uCisKKyAgICAg
ICAgKiBXZWJLaXQuZ3lwOgorICAgICAgICAqIGZlYXR1cmVzLmd5cGk6CisgICAgICAgICogcHVi
bGljL1dlYkZyYW1lLmg6CisgICAgICAgICogcHVibGljL1dlYkZyYW1lQ2xpZW50Lmg6CisgICAg
ICAgIChXZWJLaXQ6OldlYkZyYW1lQ2xpZW50OjpkaWRDaGFuZ2VJY29ucyk6CisgICAgICAgICog
cHVibGljL1dlYkljb25VUkwuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkljb25VUkw6
OldlYkljb25VUkwpOgorICAgICAgICAqIHNyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcDoKKyAg
ICAgICAgKiBzcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
RnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaERpZENoYW5nZUljb25zKToKKyAgICAgICAg
KiBzcmMvV2ViRnJhbWVJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVJbXBsOjpm
YXZJY29uVVJMKToKKyAgICAgICAgKiBzcmMvV2ViRnJhbWVJbXBsLmg6CisKIDIwMTEtMDUtMDkg
IEV2YW4gTWFydGluICA8ZXZhbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
VG9ueSBDaGFuZy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAJKHJldmlzaW9uIDg2
MDgzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCSh3b3JraW5nIGNvcHkp
CkBAIC0xODUsNiArMTg1LDcgQEAKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkhUVFBCb2R5
LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViSFRUUExvYWRJbmZvLmgnLAogICAgICAg
ICAgICAgICAgICdwdWJsaWMvV2ViSWNvbkxvYWRpbmdDb21wbGV0aW9uLmgnLAorICAgICAgICAg
ICAgICAgICdwdWJsaWMvV2ViSWNvblR5cGUuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9X
ZWJJbWFnZS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkltYWdlRGVjb2Rlci5oJywK
ICAgICAgICAgICAgICAgICAncHVibGljL1dlYklEQkNhbGxiYWNrcy5oJywKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkJKHJldmlzaW9uIDg2MDgzKQorKysgU291cmNlL1dl
YktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC04OCw2ICs4OCw3
IEBACiAgICAgICAgICdFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUPTEnLAogICAgICAgICAnRU5B
QkxFX1NWR19VU0U9MScsCiAgICAgICAgICdFTkFCTEVfVE9VQ0hfRVZFTlRTPTEnLAorICAgICAg
ICAnRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORz0xJywKICAgICAgICAgJ0VOQUJMRV9WOF9TQ1JJ
UFRfREVCVUdfU0VSVkVSPTEnLAogICAgICAgICAnRU5BQkxFX1ZJREVPPTEnLAogICAgICAgICAn
RU5BQkxFX1dFQl9BVURJTz0wJywKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYkZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViRnJhbWUuaAkocmV2aXNpb24gODYwODMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJGcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAKICNpbmNs
dWRlICJXZWJDYW52YXMuaCIKICNpbmNsdWRlICJXZWJGaWxlU3lzdGVtLmgiCisjaW5jbHVkZSAi
V2ViSWNvblVSTC5oIgogI2luY2x1ZGUgIldlYk5vZGUuaCIKICNpbmNsdWRlICJXZWJVUkwuaCIK
IApAQCAtMTI5LDkgKzEzMCw5IEBAIHB1YmxpYzoKICAgICAvLyBkYXRhU291cmNlKCktPnJlcXVl
c3QoKS51cmwoKS4KICAgICB2aXJ0dWFsIFdlYlVSTCB1cmwoKSBjb25zdCA9IDA7CiAKLSAgICAv
LyBUaGUgdXJsIG9mIHRoZSBmYXZpY29uIChpZiBhbnkpIHNwZWNpZmllZCBieSB0aGUgZG9jdW1l
bnQgbG9hZGVkIGluCi0gICAgLy8gdGhpcyBmcmFtZS4KLSAgICB2aXJ0dWFsIFdlYlVSTCBmYXZJ
Y29uVVJMKCkgY29uc3QgPSAwOworICAgIC8vIFRoZSB1cmxzIG9mIHRoZSBnaXZlbiBjb21iaW5h
dGlvbiB0eXBlcyBvZiBmYXZpY29uIChpZiBhbnkpIHNwZWNpZmllZCBieQorICAgIC8vIHRoZSBk
b2N1bWVudCBsb2FkZWQgaW4gdGhpcyBmcmFtZS4KKyAgICB2aXJ0dWFsIFdlYlZlY3RvcjxXZWJJ
Y29uVVJMPiBmYXZJY29uVVJMKGludCBpY29uVHlwZXMpIGNvbnN0ID0gMDsKIAogICAgIC8vIFRo
ZSB1cmwgb2YgdGhlIE9wZW5TZWFyY2ggRGVzcmlwdGlvbiBEb2N1bWVudCAoaWYgYW55KSBzcGVj
aWZpZWQgYnkKICAgICAvLyB0aGUgZG9jdW1lbnQgbG9hZGVkIGluIHRoaXMgZnJhbWUuCkluZGV4
OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lQ2xpZW50LmgJKHJl
dmlzaW9uIDg2MDgzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVD
bGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogCiAjaW5jbHVkZSAiV2Vi
Q29tbW9uLmgiCiAjaW5jbHVkZSAiV2ViRmlsZVN5c3RlbS5oIgorI2luY2x1ZGUgIldlYkljb25V
UkwuaCIKICNpbmNsdWRlICJXZWJOYXZpZ2F0aW9uUG9saWN5LmgiCiAjaW5jbHVkZSAiV2ViTmF2
aWdhdGlvblR5cGUuaCIKICNpbmNsdWRlICJXZWJTdG9yYWdlUXVvdGFUeXBlLmgiCkBAIC0yMDIs
NyArMjAzLDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIC8vIFRoZSBpY29ucyBmb3IgdGhlIHBh
Z2UgaGF2ZSBjaGFuZ2VkLgotICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VJY29ucyhXZWJGcmFt
ZSopIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VJY29ucyhXZWJGcmFtZSosIFdlYklj
b25VUkw6OldlYkljb25UeXBlKSB7IH0KIAogICAgIC8vIFRoZSBmcmFtZSdzIGRvY3VtZW50IGZp
bmlzaGVkIGxvYWRpbmcuCiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaERvY3VtZW50TG9hZChX
ZWJGcmFtZSopIHsgfQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSWNv
blVSTC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklj
b25VUkwuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
Ykljb25VUkwuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
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
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViSWNvblVS
TF9oCisjZGVmaW5lIFdlYkljb25VUkxfaAorCisjaW5jbHVkZSAiV2ViVVJMLmgiCisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJJY29uVVJMIHsKK3B1YmxpYzoKKyAgICBlbnVtIFdl
Ykljb25UeXBlIHsKKyAgICAgICAgV2ViSWNvblR5cGVJbnZhbGlkID0gMCwKKyAgICAgICAgV2Vi
SWNvblR5cGVGYXZpY29uID0gMSA8PCAwLAorICAgICAgICBXZWJJY29uVHlwZVRvdWNoID0gMSA8
PCAxLAorICAgICAgICBXZWJJY29uVHlwZVRvdWNoUHJlY29tcG9zZWQgPSAxIDw8IDIKKyAgICB9
OworCisgICAgV2ViSWNvblVSTCgpCisgICAgICAgIDogbV9pY29uVHlwZShXZWJJY29uVHlwZUlu
dmFsaWQpCisgICAgeworICAgIH0KKworICAgIFdlYkljb25VUkwoY29uc3QgV2ViVVJMJiB1cmws
IFdlYkljb25UeXBlIHR5cGUpCisgICAgICAgIDogbV9pY29uVHlwZSh0eXBlKQorICAgICAgICAs
IG1faWNvblVSTCh1cmwpCisgICAgeworICAgIH0KKworICAgIFdlYkljb25UeXBlIGljb25UeXBl
KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2ljb25UeXBlOworICAgIH0KKworICAg
IGNvbnN0IFdlYlVSTCYgaWNvblVSTCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9p
Y29uVVJMOworICAgIH0KKworcHJpdmF0ZToKKyAgICBXZWJJY29uVHlwZSBtX2ljb25UeXBlOwor
ICAgIFdlYlVSTCBtX2ljb25VUkw7Cit9OworCit9CisKKyNlbmRpZiAvLyBXZWJJY29uVVJMX2gK
ClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklj
b25VUkwuaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4OiBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNw
cAkocmV2aXNpb24gODYwODMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRN
YXRjaGluZ0VudW1zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1
ZGUgIkdlb2xvY2F0aW9uRXJyb3IuaCIKICNpbmNsdWRlICJHZW9sb2NhdGlvblBvc2l0aW9uLmgi
CiAjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgorI2luY2x1ZGUgIkljb25VUkwuaCIKICNp
bmNsdWRlICJJREJGYWN0b3J5QmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUgIklEQktleS5o
IgogI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCkBAIC03Myw2ICs3NCw3IEBACiAjaW5jbHVkZSAi
V2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oIgogI2luY2x1ZGUgIldlYklEQkZhY3RvcnkuaCIKICNp
bmNsdWRlICJXZWJJREJLZXkuaCIKKyNpbmNsdWRlICJXZWJJY29uVVJMLmgiCiAjaW5jbHVkZSAi
V2ViSW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiV2ViTWVkaWFQbGF5ZXIuaCIKICNpbmNsdWRl
ICJXZWJOb3RpZmljYXRpb25QcmVzZW50ZXIuaCIKQEAgLTMwNCw2ICszMDYsMTEgQEAgQ09NUElM
RV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJGb250RGVzYwogQ09NUElMRV9BU1NFUlRfTUFUQ0hJ
TkdfRU5VTShXZWJGb250RGVzY3JpcHRpb246OldlaWdodE5vcm1hbCwgRm9udFdlaWdodE5vcm1h
bCk7CiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYkZvbnREZXNjcmlwdGlvbjo6V2Vp
Z2h0Qm9sZCwgRm9udFdlaWdodEJvbGQpOwogCitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVN
KFdlYkljb25VUkw6OldlYkljb25UeXBlSW52YWxpZCwgSW52YWxpZEljb24pOworQ09NUElMRV9B
U1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJY29uVVJMOjpXZWJJY29uVHlwZUZhdmljb24sIEZhdmlj
b24pOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJY29uVVJMOjpXZWJJY29uVHlw
ZVRvdWNoLCBUb3VjaEljb24pOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJY29u
VVJMOjpXZWJJY29uVHlwZVRvdWNoUHJlY29tcG9zZWQsIFRvdWNoUHJlY29tcG9zZWRJY29uKTsK
KwogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJOb2RlOjpFbGVtZW50Tm9kZSwgTm9k
ZTo6RUxFTUVOVF9OT0RFKTsKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViTm9kZTo6
QXR0cmlidXRlTm9kZSwgTm9kZTo6QVRUUklCVVRFX05PREUpOwogQ09NUElMRV9BU1NFUlRfTUFU
Q0hJTkdfRU5VTShXZWJOb2RlOjpUZXh0Tm9kZSwgTm9kZTo6VEVYVF9OT0RFKTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBs
LmNwcAkocmV2aXNpb24gODYwODMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFt
ZUxvYWRlckNsaWVudEltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NjAsNyArNzYwLDcgQEAg
dm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpc3BhdGNoRGlkUgogdm9pZCBGcmFtZUxvYWRl
ckNsaWVudEltcGw6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoV2ViQ29yZTo6SWNvblR5cGUgdHlw
ZSkKIHsKICAgICBpZiAobV93ZWJGcmFtZS0+Y2xpZW50KCkpCi0gICAgICAgIG1fd2ViRnJhbWUt
PmNsaWVudCgpLT5kaWRDaGFuZ2VJY29ucyhtX3dlYkZyYW1lKTsKKyAgICAgICAgbV93ZWJGcmFt
ZS0+Y2xpZW50KCktPmRpZENoYW5nZUljb25zKG1fd2ViRnJhbWUsIHN0YXRpY19jYXN0PFdlYklj
b25VUkw6OldlYkljb25UeXBlPih0eXBlKSk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRJ
bXBsOjpkaXNwYXRjaERpZENvbW1pdExvYWQoKQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCShyZXZpc2lvbiA4NjA4MykKKysrIFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMSw2
ICsxMDEsNyBAQAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhpc3RvcnlJdGVt
LmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgorI2luY2x1ZGUgIkljb25VUkwuaCIKICNp
bmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1
ZGUgInBhaW50aW5nL0dyYXBoaWNzQ29udGV4dEJ1aWxkZXIuaCIKQEAgLTEzNyw2ICsxMzgsNyBA
QAogI2luY2x1ZGUgIldlYkZvcm1FbGVtZW50LmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVDbGllbnQu
aCIKICNpbmNsdWRlICJXZWJIaXN0b3J5SXRlbS5oIgorI2luY2x1ZGUgIldlYkljb25VUkwuaCIK
ICNpbmNsdWRlICJXZWJJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJXZWJOb2RlLmgiCiAjaW5j
bHVkZSAiV2ViUGFzc3dvcmRBdXRvY29tcGxldGVMaXN0ZW5lci5oIgpAQCAtNTE4LDE3ICs1MjAs
MTkgQEAgV2ViVVJMIFdlYkZyYW1lSW1wbDo6dXJsKCkgY29uc3QKICAgICByZXR1cm4gZHMtPnJl
cXVlc3QoKS51cmwoKTsKIH0KIAotV2ViVVJMIFdlYkZyYW1lSW1wbDo6ZmF2SWNvblVSTCgpIGNv
bnN0CitXZWJWZWN0b3I8V2ViSWNvblVSTD4gV2ViRnJhbWVJbXBsOjpmYXZJY29uVVJMKGludCB3
ZWJJY29uVHlwZXMpIGNvbnN0CiB7CiAgICAgRnJhbWVMb2FkZXIqIGZyYW1lTG9hZGVyID0gbV9m
cmFtZS0+bG9hZGVyKCk7CiAgICAgLy8gVGhlIFVSTCB0byB0aGUgZmF2aWNvbiBtYXkgYmUgaW4g
dGhlIGhlYWRlci4gQXMgc3VjaCwgb25seQogICAgIC8vIGFzayB0aGUgbG9hZGVyIGZvciB0aGUg
ZmF2aWNvbiBpZiBpdCdzIGZpbmlzaGVkIGxvYWRpbmcuCiAgICAgaWYgKGZyYW1lTG9hZGVyLT5z
dGF0ZSgpID09IEZyYW1lU3RhdGVDb21wbGV0ZSkgewotICAgICAgICBjb25zdCBLVVJMJiB1cmwg
PSBmcmFtZUxvYWRlci0+aWNvblVSTCgpOwotICAgICAgICBpZiAoIXVybC5pc0VtcHR5KCkpCi0g
ICAgICAgICAgICByZXR1cm4gdXJsOworICAgICAgICBXVEY6OlZlY3RvcjxXZWJDb3JlOjpJY29u
VVJMPiBpY29uVVJMcyA9IGZyYW1lTG9hZGVyLT5pY29uVVJMcyh3ZWJJY29uVHlwZXMpOworICAg
ICAgICBXZWJWZWN0b3I8V2ViSWNvblVSTD4gd2ViSWNvblVSTHMoaWNvblVSTHMuc2l6ZSgpKTsK
KyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpY29uVVJMcy5zaXplKCk7IGkrKykKKyAg
ICAgICAgICAgIHdlYkljb25VUkxzW2ldID0gV2ViSWNvblVSTChpY29uVVJMc1tpXS5tX2ljb25V
UkwsIHN0YXRpY19jYXN0PFdlYkljb25VUkw6OldlYkljb25UeXBlPihpY29uVVJMc1tpXS5tX2lj
b25UeXBlKSk7CisgICAgICAgIHJldHVybiB3ZWJJY29uVVJMczsKICAgICB9Ci0gICAgcmV0dXJu
IFdlYlVSTCgpOworICAgIHJldHVybiBXZWJWZWN0b3I8V2ViSWNvblVSTD4oKTsKIH0KIAogV2Vi
VVJMIFdlYkZyYW1lSW1wbDo6b3BlblNlYXJjaERlc2NyaXB0aW9uVVJMKCkgY29uc3QKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5oCShyZXZpc2lvbiA4NjA4
MykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5oCSh3b3JraW5n
IGNvcHkpCkBAIC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmFt
ZShjb25zdCBXZWJTdHJpbmcmKTsKICAgICB2aXJ0dWFsIGxvbmcgbG9uZyBpZGVudGlmaWVyKCkg
Y29uc3Q7CiAgICAgdmlydHVhbCBXZWJVUkwgdXJsKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBXZWJV
UkwgZmF2SWNvblVSTCgpIGNvbnN0OworICAgIHZpcnR1YWwgV2ViVmVjdG9yPFdlYkljb25VUkw+
IGZhdkljb25VUkwoaW50IGljb25UeXBlcykgY29uc3Q7CiAgICAgdmlydHVhbCBXZWJVUkwgb3Bl
blNlYXJjaERlc2NyaXB0aW9uVVJMKCkgY29uc3Q7CiAgICAgdmlydHVhbCBXZWJTdHJpbmcgZW5j
b2RpbmcoKSBjb25zdDsKICAgICB2aXJ0dWFsIFdlYlNpemUgc2Nyb2xsT2Zmc2V0KCkgY29uc3Q7
Cg==
</data>
<flag name="review"
          id="86013"
          type_id="1"
          status="-"
          setter="fishd"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92961</attachid>
            <date>2011-05-10 09:00:57 -0700</date>
            <delta_ts>2011-05-10 09:06:12 -0700</delta_ts>
            <desc>Address the comments and Rollback previous favIconURL() definition.</desc>
            <filename>patch.8</filename>
            <type>text/plain</type>
            <size>11607</size>
            <attacher>michaelbai</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA4NjE1NykKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzIg
QEAKKzIwMTEtMDUtMTAgIFRhbyBCYWkgIDxtaWNoYWVsYmFpQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBIYW5kbGUgdGhlIHRv
dWNoIGljb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02MDI0NworCisgICAgICAgIEFkZGVkIFdlYkljb25VUkwgZm9yIHRoZSBjb3JyZXNwb25kaW5n
IEljb25VUkwuCisgICAgICAgIEFkZGVkIGEgcGFyYW1ldGVyIHRvIGZhdkljb25VUkwoKSB0byBz
cGVjaWZ5IHRoZSB0eXBlIG9mIGljb24gbmVlZCB0bworICAgICAgICByZXR1cm4uCisgICAgICAg
IFJvbGxiYWNrIHRoZSBwcmV2aW91cyBmYXZJY29uVVJMKCksIHNvIGl0IGNhbiBiZSBjb21waWxl
ZCBpbiBDaHJvbWl1bQorICAgICAgICBhbmQgd2lsbCByZW1vdmUgaXQgbGF0ZXIuIAorCisgICAg
ICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBmZWF0dXJlcy5neXBpOgorICAgICAgICAqIHB1
YmxpYy9XZWJGcmFtZS5oOgorICAgICAgICAqIHB1YmxpYy9XZWJGcmFtZUNsaWVudC5oOgorICAg
ICAgICAoV2ViS2l0OjpXZWJGcmFtZUNsaWVudDo6ZGlkQ2hhbmdlSWNvbnMpOgorICAgICAgICAq
IHB1YmxpYy9XZWJJY29uVVJMLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJJY29uVVJM
OjpXZWJJY29uVVJMKToKKyAgICAgICAgKFdlYktpdDo6V2ViSWNvblVSTDo6aWNvblR5cGUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJY29uVVJMOjppY29uVVJMKToKKyAgICAgICAgKiBzcmMvQXNz
ZXJ0TWF0Y2hpbmdFbnVtcy5jcHA6CisgICAgICAgICogc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1w
bC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlzcGF0Y2hE
aWRDaGFuZ2VJY29ucyk6CisgICAgICAgICogc3JjL1dlYkZyYW1lSW1wbC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkZyYW1lSW1wbDo6ZmF2SWNvblVSTCk6CisgICAgICAgICogc3JjL1dlYkZy
YW1lSW1wbC5oOgorCiAyMDExLTA1LTEwICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgQXR0ZW1wdCB0byBmaXggdGhlIGNsYW5nIGJ1aWxkLgpJbmRleDogU291cmNl
L1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vV2ViS2l0Lmd5cAkocmV2aXNpb24gODYwODMpCisrKyBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL1dlYktpdC5neXAJKHdvcmtpbmcgY29weSkKQEAgLTE4NSw2ICsxODUsNyBAQAogICAg
ICAgICAgICAgICAgICdwdWJsaWMvV2ViSFRUUEJvZHkuaCcsCiAgICAgICAgICAgICAgICAgJ3B1
YmxpYy9XZWJIVFRQTG9hZEluZm8uaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJJY29u
TG9hZGluZ0NvbXBsZXRpb24uaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJJY29uVHlw
ZS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkltYWdlLmgnLAogICAgICAgICAgICAg
ICAgICdwdWJsaWMvV2ViSW1hZ2VEZWNvZGVyLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMv
V2ViSURCQ2FsbGJhY2tzLmgnLApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJl
cy5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lw
aQkocmV2aXNpb24gODYwODMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5
cGkJKHdvcmtpbmcgY29weSkKQEAgLTg4LDYgKzg4LDcgQEAKICAgICAgICAgJ0VOQUJMRV9TVkdf
Rk9SRUlHTl9PQkpFQ1Q9MScsCiAgICAgICAgICdFTkFCTEVfU1ZHX1VTRT0xJywKICAgICAgICAg
J0VOQUJMRV9UT1VDSF9FVkVOVFM9MScsCisgICAgICAgICdFTkFCTEVfVE9VQ0hfSUNPTl9MT0FE
SU5HPTEnLAogICAgICAgICAnRU5BQkxFX1Y4X1NDUklQVF9ERUJVR19TRVJWRVI9MScsCiAgICAg
ICAgICdFTkFCTEVfVklERU89MScsCiAgICAgICAgICdFTkFCTEVfV0VCX0FVRElPPTAnLApJbmRl
eDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZS5oCShyZXZpc2lvbiA4NjA4
MykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2luY2x1ZGUgIldlYkNhbnZhcy5oIgogI2luY2x1
ZGUgIldlYkZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRlICJXZWJJY29uVVJMLmgiCiAjaW5jbHVkZSAi
V2ViTm9kZS5oIgogI2luY2x1ZGUgIldlYlVSTC5oIgogCkBAIC0xMjksMTAgKzEzMCwxNCBAQCBw
dWJsaWM6CiAgICAgLy8gZGF0YVNvdXJjZSgpLT5yZXF1ZXN0KCkudXJsKCkuCiAgICAgdmlydHVh
bCBXZWJVUkwgdXJsKCkgY29uc3QgPSAwOwogCi0gICAgLy8gVGhlIHVybCBvZiB0aGUgZmF2aWNv
biAoaWYgYW55KSBzcGVjaWZpZWQgYnkgdGhlIGRvY3VtZW50IGxvYWRlZCBpbgotICAgIC8vIHRo
aXMgZnJhbWUuCisgICAgLy8gVGhpcyBtZXRob2QgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSBy
ZW1vdmVkIHNvb24uCiAgICAgdmlydHVhbCBXZWJVUkwgZmF2SWNvblVSTCgpIGNvbnN0ID0gMDsK
IAorICAgIC8vIFRoZSB1cmxzIG9mIHRoZSBnaXZlbiBjb21iaW5hdGlvbiB0eXBlcyBvZiBmYXZp
Y29uIChpZiBhbnkpIHNwZWNpZmllZCBieQorICAgIC8vIHRoZSBkb2N1bWVudCBsb2FkZWQgaW4g
dGhpcyBmcmFtZS4gVGhlIGljb25UeXBlcyBjb3VsZCBiZSBhIGJpdC1tYXNrIG9mCisgICAgLy8g
V2ViSWNvblR5cGUgdG8gZ2V0IG11bHRpcGxlIGljb24ncyBVUkxzLgorICAgIHZpcnR1YWwgV2Vi
VmVjdG9yPFdlYkljb25VUkw+IGZhdkljb25VUkwoaW50IGljb25UeXBlcykgY29uc3QgPSAwOwor
CiAgICAgLy8gVGhlIHVybCBvZiB0aGUgT3BlblNlYXJjaCBEZXNyaXB0aW9uIERvY3VtZW50IChp
ZiBhbnkpIHNwZWNpZmllZCBieQogICAgIC8vIHRoZSBkb2N1bWVudCBsb2FkZWQgaW4gdGhpcyBm
cmFtZS4KICAgICB2aXJ0dWFsIFdlYlVSTCBvcGVuU2VhcmNoRGVzY3JpcHRpb25VUkwoKSBjb25z
dCA9IDA7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1l
Q2xpZW50LmgJKHJldmlzaW9uIDg2MDgzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViRnJhbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogCiAj
aW5jbHVkZSAiV2ViQ29tbW9uLmgiCiAjaW5jbHVkZSAiV2ViRmlsZVN5c3RlbS5oIgorI2luY2x1
ZGUgIldlYkljb25VUkwuaCIKICNpbmNsdWRlICJXZWJOYXZpZ2F0aW9uUG9saWN5LmgiCiAjaW5j
bHVkZSAiV2ViTmF2aWdhdGlvblR5cGUuaCIKICNpbmNsdWRlICJXZWJTdG9yYWdlUXVvdGFUeXBl
LmgiCkBAIC0yMDIsNyArMjAzLDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIC8vIFRoZSBpY29u
cyBmb3IgdGhlIHBhZ2UgaGF2ZSBjaGFuZ2VkLgotICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VJ
Y29ucyhXZWJGcmFtZSopIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VJY29ucyhXZWJG
cmFtZSosIFdlYkljb25VUkw6OldlYkljb25UeXBlKSB7IH0KIAogICAgIC8vIFRoZSBmcmFtZSdz
IGRvY3VtZW50IGZpbmlzaGVkIGxvYWRpbmcuCiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaERv
Y3VtZW50TG9hZChXZWJGcmFtZSopIHsgfQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViSWNvblVSTC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkljb25VUkwuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYkljb25VUkwuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3NSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBk
aXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgV2ViSWNvblVSTF9oCisjZGVmaW5lIFdlYkljb25VUkxfaAorCisjaW5jbHVkZSAiV2ViVVJM
LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJJY29uVVJMIHsKK3B1YmxpYzoK
KyAgICBlbnVtIFdlYkljb25UeXBlIHsKKyAgICAgICAgVHlwZUludmFsaWQgPSAwLAorICAgICAg
ICBUeXBlRmF2aWNvbiA9IDEgPDwgMCwKKyAgICAgICAgVHlwZVRvdWNoID0gMSA8PCAxLAorICAg
ICAgICBUeXBlVG91Y2hQcmVjb21wb3NlZCA9IDEgPDwgMgorICAgIH07CisKKyAgICBXZWJJY29u
VVJMKCkKKyAgICAgICAgOiBtX2ljb25UeXBlKFR5cGVJbnZhbGlkKQorICAgIHsKKyAgICB9CisK
KyAgICBXZWJJY29uVVJMKGNvbnN0IFdlYlVSTCYgdXJsLCBXZWJJY29uVHlwZSB0eXBlKQorICAg
ICAgICA6IG1faWNvblR5cGUodHlwZSkKKyAgICAgICAgLCBtX2ljb25VUkwodXJsKQorICAgIHsK
KyAgICB9CisKKyAgICBXZWJJY29uVHlwZSBpY29uVHlwZSgpIGNvbnN0CisgICAgeworICAgICAg
ICByZXR1cm4gbV9pY29uVHlwZTsKKyAgICB9CisKKyAgICBjb25zdCBXZWJVUkwmIGljb25VUkwo
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1faWNvblVSTDsKKyAgICB9CisKK3ByaXZh
dGU6CisgICAgV2ViSWNvblR5cGUgbV9pY29uVHlwZTsKKyAgICBXZWJVUkwgbV9pY29uVVJMOwor
fTsKKworfQorCisjZW5kaWYgLy8gV2ViSWNvblVSTF9oCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJY29uVVJMLmgKX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRl
ZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAJKHJldmlzaW9uIDg2MDgzKQorKysg
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJHZW9sb2NhdGlvbkVycm9yLmgi
CiAjaW5jbHVkZSAiR2VvbG9jYXRpb25Qb3NpdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxJbnB1dEVs
ZW1lbnQuaCIKKyNpbmNsdWRlICJJY29uVVJMLmgiCiAjaW5jbHVkZSAiSURCRmFjdG9yeUJhY2tl
bmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJJREJLZXkuaCIKICNpbmNsdWRlICJNZWRpYVBsYXll
ci5oIgpAQCAtNzMsNiArNzQsNyBAQAogI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uUG9zaXRpb24u
aCIKICNpbmNsdWRlICJXZWJJREJGYWN0b3J5LmgiCiAjaW5jbHVkZSAiV2ViSURCS2V5LmgiCisj
aW5jbHVkZSAiV2ViSWNvblVSTC5oIgogI2luY2x1ZGUgIldlYklucHV0RWxlbWVudC5oIgogI2lu
Y2x1ZGUgIldlYk1lZGlhUGxheWVyLmgiCiAjaW5jbHVkZSAiV2ViTm90aWZpY2F0aW9uUHJlc2Vu
dGVyLmgiCkBAIC0zMDQsNiArMzA2LDExIEBAIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0o
V2ViRm9udERlc2MKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViRm9udERlc2NyaXB0
aW9uOjpXZWlnaHROb3JtYWwsIEZvbnRXZWlnaHROb3JtYWwpOwogQ09NUElMRV9BU1NFUlRfTUFU
Q0hJTkdfRU5VTShXZWJGb250RGVzY3JpcHRpb246OldlaWdodEJvbGQsIEZvbnRXZWlnaHRCb2xk
KTsKIAorQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJY29uVVJMOjpUeXBlSW52YWxp
ZCwgSW52YWxpZEljb24pOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJY29uVVJM
OjpUeXBlRmF2aWNvbiwgRmF2aWNvbik7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdl
Ykljb25VUkw6OlR5cGVUb3VjaCwgVG91Y2hJY29uKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5H
X0VOVU0oV2ViSWNvblVSTDo6VHlwZVRvdWNoUHJlY29tcG9zZWQsIFRvdWNoUHJlY29tcG9zZWRJ
Y29uKTsKKwogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJOb2RlOjpFbGVtZW50Tm9k
ZSwgTm9kZTo6RUxFTUVOVF9OT0RFKTsKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2Vi
Tm9kZTo6QXR0cmlidXRlTm9kZSwgTm9kZTo6QVRUUklCVVRFX05PREUpOwogQ09NUElMRV9BU1NF
UlRfTUFUQ0hJTkdfRU5VTShXZWJOb2RlOjpUZXh0Tm9kZSwgTm9kZTo6VEVYVF9OT0RFKTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGll
bnRJbXBsLmNwcAkocmV2aXNpb24gODYwODMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NjAsNyArNzYw
LDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpc3BhdGNoRGlkUgogdm9pZCBGcmFt
ZUxvYWRlckNsaWVudEltcGw6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoV2ViQ29yZTo6SWNvblR5
cGUgdHlwZSkKIHsKICAgICBpZiAobV93ZWJGcmFtZS0+Y2xpZW50KCkpCi0gICAgICAgIG1fd2Vi
RnJhbWUtPmNsaWVudCgpLT5kaWRDaGFuZ2VJY29ucyhtX3dlYkZyYW1lKTsKKyAgICAgICAgbV93
ZWJGcmFtZS0+Y2xpZW50KCktPmRpZENoYW5nZUljb25zKG1fd2ViRnJhbWUsIHN0YXRpY19jYXN0
PFdlYkljb25VUkw6OldlYkljb25UeXBlPih0eXBlKSk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXJD
bGllbnRJbXBsOjpkaXNwYXRjaERpZENvbW1pdExvYWQoKQpJbmRleDogU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCShyZXZpc2lvbiA4NjA4MykKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEwMSw2ICsxMDEsNyBAQAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhpc3Rv
cnlJdGVtLmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgorI2luY2x1ZGUgIkljb25VUkwu
aCIKICNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgog
I2luY2x1ZGUgInBhaW50aW5nL0dyYXBoaWNzQ29udGV4dEJ1aWxkZXIuaCIKQEAgLTEzNyw2ICsx
MzgsNyBAQAogI2luY2x1ZGUgIldlYkZvcm1FbGVtZW50LmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVD
bGllbnQuaCIKICNpbmNsdWRlICJXZWJIaXN0b3J5SXRlbS5oIgorI2luY2x1ZGUgIldlYkljb25V
UkwuaCIKICNpbmNsdWRlICJXZWJJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJXZWJOb2RlLmgi
CiAjaW5jbHVkZSAiV2ViUGFzc3dvcmRBdXRvY29tcGxldGVMaXN0ZW5lci5oIgpAQCAtNTIwLDE1
ICs1MjIsMjYgQEAgV2ViVVJMIFdlYkZyYW1lSW1wbDo6dXJsKCkgY29uc3QKIAogV2ViVVJMIFdl
YkZyYW1lSW1wbDo6ZmF2SWNvblVSTCgpIGNvbnN0CiB7CisgICAgV2ViVmVjdG9yPFdlYkljb25V
Ukw+IHVybHMgPSBmYXZJY29uVVJMKFdlYkljb25VUkw6OlR5cGVGYXZpY29uKTsKKyAgICBpZiAo
dXJscy5zaXplKCkpCisgICAgICAgIHJldHVybiB1cmxzWzBdLmljb25VUkwoKTsKKyAgICBlbHNl
CisgICAgICAgIHJldHVybiBXZWJVUkwoKTsKK30KKworV2ViVmVjdG9yPFdlYkljb25VUkw+IFdl
YkZyYW1lSW1wbDo6ZmF2SWNvblVSTChpbnQgd2ViSWNvblR5cGVzKSBjb25zdAorewogICAgIEZy
YW1lTG9hZGVyKiBmcmFtZUxvYWRlciA9IG1fZnJhbWUtPmxvYWRlcigpOwogICAgIC8vIFRoZSBV
UkwgdG8gdGhlIGZhdmljb24gbWF5IGJlIGluIHRoZSBoZWFkZXIuIEFzIHN1Y2gsIG9ubHkKICAg
ICAvLyBhc2sgdGhlIGxvYWRlciBmb3IgdGhlIGZhdmljb24gaWYgaXQncyBmaW5pc2hlZCBsb2Fk
aW5nLgogICAgIGlmIChmcmFtZUxvYWRlci0+c3RhdGUoKSA9PSBGcmFtZVN0YXRlQ29tcGxldGUp
IHsKLSAgICAgICAgY29uc3QgS1VSTCYgdXJsID0gZnJhbWVMb2FkZXItPmljb25VUkwoKTsKLSAg
ICAgICAgaWYgKCF1cmwuaXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuIHVybDsKKyAgICAg
ICAgVmVjdG9yPFdlYkNvcmU6Okljb25VUkw+IGljb25VUkxzID0gZnJhbWVMb2FkZXItPmljb25V
UkxzKHdlYkljb25UeXBlcyk7CisgICAgICAgIFdlYlZlY3RvcjxXZWJJY29uVVJMPiB3ZWJJY29u
VVJMcyhpY29uVVJMcy5zaXplKCkpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGlj
b25VUkxzLnNpemUoKTsgaSsrKQorICAgICAgICAgICAgd2ViSWNvblVSTHNbaV0gPSBXZWJJY29u
VVJMKGljb25VUkxzW2ldLm1faWNvblVSTCwgc3RhdGljX2Nhc3Q8V2ViSWNvblVSTDo6V2ViSWNv
blR5cGU+KGljb25VUkxzW2ldLm1faWNvblR5cGUpKTsKKyAgICAgICAgcmV0dXJuIHdlYkljb25V
UkxzOwogICAgIH0KLSAgICByZXR1cm4gV2ViVVJMKCk7CisgICAgcmV0dXJuIFdlYlZlY3RvcjxX
ZWJJY29uVVJMPigpOwogfQogCiBXZWJVUkwgV2ViRnJhbWVJbXBsOjpvcGVuU2VhcmNoRGVzY3Jp
cHRpb25VUkwoKSBjb25zdApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJh
bWVJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJh
bWVJbXBsLmgJKHJldmlzaW9uIDg2MDgzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViRnJhbWVJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTcxLDYgKzcxLDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgbG9uZyBsb25nIGlkZW50aWZpZXIoKSBjb25zdDsKICAgICB2aXJ0dWFsIFdl
YlVSTCB1cmwoKSBjb25zdDsKICAgICB2aXJ0dWFsIFdlYlVSTCBmYXZJY29uVVJMKCkgY29uc3Q7
CisgICAgdmlydHVhbCBXZWJWZWN0b3I8V2ViSWNvblVSTD4gZmF2SWNvblVSTChpbnQgaWNvblR5
cGVzKSBjb25zdDsKICAgICB2aXJ0dWFsIFdlYlVSTCBvcGVuU2VhcmNoRGVzY3JpcHRpb25VUkwo
KSBjb25zdDsKICAgICB2aXJ0dWFsIFdlYlN0cmluZyBlbmNvZGluZygpIGNvbnN0OwogICAgIHZp
cnR1YWwgV2ViU2l6ZSBzY3JvbGxPZmZzZXQoKSBjb25zdDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92962</attachid>
            <date>2011-05-10 09:06:12 -0700</date>
            <delta_ts>2011-05-10 15:11:25 -0700</delta_ts>
            <desc>Fix style</desc>
            <filename>patch.9</filename>
            <type>text/plain</type>
            <size>11593</size>
            <attacher>michaelbai</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA4NjE1NykKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzIg
QEAKKzIwMTEtMDUtMTAgIFRhbyBCYWkgIDxtaWNoYWVsYmFpQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBIYW5kbGUgdGhlIHRv
dWNoIGljb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02MDI0NworCisgICAgICAgIEFkZGVkIFdlYkljb25VUkwgZm9yIHRoZSBjb3JyZXNwb25kaW5n
IEljb25VUkwuCisgICAgICAgIEFkZGVkIGEgcGFyYW1ldGVyIHRvIGZhdkljb25VUkwoKSB0byBz
cGVjaWZ5IHRoZSB0eXBlIG9mIGljb24gbmVlZCB0bworICAgICAgICByZXR1cm4uCisgICAgICAg
IFJvbGxiYWNrIHRoZSBwcmV2aW91cyBmYXZJY29uVVJMKCksIHNvIGl0IGNhbiBiZSBjb21waWxl
ZCBpbiBDaHJvbWl1bQorICAgICAgICBhbmQgd2lsbCByZW1vdmUgaXQgbGF0ZXIuIAorCisgICAg
ICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBmZWF0dXJlcy5neXBpOgorICAgICAgICAqIHB1
YmxpYy9XZWJGcmFtZS5oOgorICAgICAgICAqIHB1YmxpYy9XZWJGcmFtZUNsaWVudC5oOgorICAg
ICAgICAoV2ViS2l0OjpXZWJGcmFtZUNsaWVudDo6ZGlkQ2hhbmdlSWNvbnMpOgorICAgICAgICAq
IHB1YmxpYy9XZWJJY29uVVJMLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJJY29uVVJM
OjpXZWJJY29uVVJMKToKKyAgICAgICAgKFdlYktpdDo6V2ViSWNvblVSTDo6aWNvblR5cGUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJY29uVVJMOjppY29uVVJMKToKKyAgICAgICAgKiBzcmMvQXNz
ZXJ0TWF0Y2hpbmdFbnVtcy5jcHA6CisgICAgICAgICogc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1w
bC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlzcGF0Y2hE
aWRDaGFuZ2VJY29ucyk6CisgICAgICAgICogc3JjL1dlYkZyYW1lSW1wbC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkZyYW1lSW1wbDo6ZmF2SWNvblVSTCk6CisgICAgICAgICogc3JjL1dlYkZy
YW1lSW1wbC5oOgorCiAyMDExLTA1LTEwICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgQXR0ZW1wdCB0byBmaXggdGhlIGNsYW5nIGJ1aWxkLgpJbmRleDogU291cmNl
L1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vV2ViS2l0Lmd5cAkocmV2aXNpb24gODYwODMpCisrKyBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL1dlYktpdC5neXAJKHdvcmtpbmcgY29weSkKQEAgLTE4NSw2ICsxODUsNyBAQAogICAg
ICAgICAgICAgICAgICdwdWJsaWMvV2ViSFRUUEJvZHkuaCcsCiAgICAgICAgICAgICAgICAgJ3B1
YmxpYy9XZWJIVFRQTG9hZEluZm8uaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJJY29u
TG9hZGluZ0NvbXBsZXRpb24uaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJJY29uVHlw
ZS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkltYWdlLmgnLAogICAgICAgICAgICAg
ICAgICdwdWJsaWMvV2ViSW1hZ2VEZWNvZGVyLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMv
V2ViSURCQ2FsbGJhY2tzLmgnLApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJl
cy5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lw
aQkocmV2aXNpb24gODYwODMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5
cGkJKHdvcmtpbmcgY29weSkKQEAgLTg4LDYgKzg4LDcgQEAKICAgICAgICAgJ0VOQUJMRV9TVkdf
Rk9SRUlHTl9PQkpFQ1Q9MScsCiAgICAgICAgICdFTkFCTEVfU1ZHX1VTRT0xJywKICAgICAgICAg
J0VOQUJMRV9UT1VDSF9FVkVOVFM9MScsCisgICAgICAgICdFTkFCTEVfVE9VQ0hfSUNPTl9MT0FE
SU5HPTEnLAogICAgICAgICAnRU5BQkxFX1Y4X1NDUklQVF9ERUJVR19TRVJWRVI9MScsCiAgICAg
ICAgICdFTkFCTEVfVklERU89MScsCiAgICAgICAgICdFTkFCTEVfV0VCX0FVRElPPTAnLApJbmRl
eDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZS5oCShyZXZpc2lvbiA4NjA4
MykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2luY2x1ZGUgIldlYkNhbnZhcy5oIgogI2luY2x1
ZGUgIldlYkZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRlICJXZWJJY29uVVJMLmgiCiAjaW5jbHVkZSAi
V2ViTm9kZS5oIgogI2luY2x1ZGUgIldlYlVSTC5oIgogCkBAIC0xMjksMTAgKzEzMCwxNCBAQCBw
dWJsaWM6CiAgICAgLy8gZGF0YVNvdXJjZSgpLT5yZXF1ZXN0KCkudXJsKCkuCiAgICAgdmlydHVh
bCBXZWJVUkwgdXJsKCkgY29uc3QgPSAwOwogCi0gICAgLy8gVGhlIHVybCBvZiB0aGUgZmF2aWNv
biAoaWYgYW55KSBzcGVjaWZpZWQgYnkgdGhlIGRvY3VtZW50IGxvYWRlZCBpbgotICAgIC8vIHRo
aXMgZnJhbWUuCisgICAgLy8gVGhpcyBtZXRob2QgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSBy
ZW1vdmVkIHNvb24uCiAgICAgdmlydHVhbCBXZWJVUkwgZmF2SWNvblVSTCgpIGNvbnN0ID0gMDsK
IAorICAgIC8vIFRoZSB1cmxzIG9mIHRoZSBnaXZlbiBjb21iaW5hdGlvbiB0eXBlcyBvZiBmYXZp
Y29uIChpZiBhbnkpIHNwZWNpZmllZCBieQorICAgIC8vIHRoZSBkb2N1bWVudCBsb2FkZWQgaW4g
dGhpcyBmcmFtZS4gVGhlIGljb25UeXBlcyBjb3VsZCBiZSBhIGJpdC1tYXNrIG9mCisgICAgLy8g
V2ViSWNvblR5cGUgdG8gZ2V0IG11bHRpcGxlIGljb24ncyBVUkxzLgorICAgIHZpcnR1YWwgV2Vi
VmVjdG9yPFdlYkljb25VUkw+IGZhdkljb25VUkwoaW50IGljb25UeXBlcykgY29uc3QgPSAwOwor
CiAgICAgLy8gVGhlIHVybCBvZiB0aGUgT3BlblNlYXJjaCBEZXNyaXB0aW9uIERvY3VtZW50IChp
ZiBhbnkpIHNwZWNpZmllZCBieQogICAgIC8vIHRoZSBkb2N1bWVudCBsb2FkZWQgaW4gdGhpcyBm
cmFtZS4KICAgICB2aXJ0dWFsIFdlYlVSTCBvcGVuU2VhcmNoRGVzY3JpcHRpb25VUkwoKSBjb25z
dCA9IDA7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1l
Q2xpZW50LmgJKHJldmlzaW9uIDg2MDgzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViRnJhbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogCiAj
aW5jbHVkZSAiV2ViQ29tbW9uLmgiCiAjaW5jbHVkZSAiV2ViRmlsZVN5c3RlbS5oIgorI2luY2x1
ZGUgIldlYkljb25VUkwuaCIKICNpbmNsdWRlICJXZWJOYXZpZ2F0aW9uUG9saWN5LmgiCiAjaW5j
bHVkZSAiV2ViTmF2aWdhdGlvblR5cGUuaCIKICNpbmNsdWRlICJXZWJTdG9yYWdlUXVvdGFUeXBl
LmgiCkBAIC0yMDIsNyArMjAzLDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIC8vIFRoZSBpY29u
cyBmb3IgdGhlIHBhZ2UgaGF2ZSBjaGFuZ2VkLgotICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VJ
Y29ucyhXZWJGcmFtZSopIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VJY29ucyhXZWJG
cmFtZSosIFdlYkljb25VUkw6OldlYkljb25UeXBlKSB7IH0KIAogICAgIC8vIFRoZSBmcmFtZSdz
IGRvY3VtZW50IGZpbmlzaGVkIGxvYWRpbmcuCiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaERv
Y3VtZW50TG9hZChXZWJGcmFtZSopIHsgfQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViSWNvblVSTC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkljb25VUkwuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYkljb25VUkwuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3NSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBk
aXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgV2ViSWNvblVSTF9oCisjZGVmaW5lIFdlYkljb25VUkxfaAorCisjaW5jbHVkZSAiV2ViVVJM
LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJJY29uVVJMIHsKK3B1YmxpYzoK
KyAgICBlbnVtIFdlYkljb25UeXBlIHsKKyAgICAgICAgVHlwZUludmFsaWQgPSAwLAorICAgICAg
ICBUeXBlRmF2aWNvbiA9IDEgPDwgMCwKKyAgICAgICAgVHlwZVRvdWNoID0gMSA8PCAxLAorICAg
ICAgICBUeXBlVG91Y2hQcmVjb21wb3NlZCA9IDEgPDwgMgorICAgIH07CisKKyAgICBXZWJJY29u
VVJMKCkKKyAgICAgICAgOiBtX2ljb25UeXBlKFR5cGVJbnZhbGlkKQorICAgIHsKKyAgICB9CisK
KyAgICBXZWJJY29uVVJMKGNvbnN0IFdlYlVSTCYgdXJsLCBXZWJJY29uVHlwZSB0eXBlKQorICAg
ICAgICA6IG1faWNvblR5cGUodHlwZSkKKyAgICAgICAgLCBtX2ljb25VUkwodXJsKQorICAgIHsK
KyAgICB9CisKKyAgICBXZWJJY29uVHlwZSBpY29uVHlwZSgpIGNvbnN0CisgICAgeworICAgICAg
ICByZXR1cm4gbV9pY29uVHlwZTsKKyAgICB9CisKKyAgICBjb25zdCBXZWJVUkwmIGljb25VUkwo
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1faWNvblVSTDsKKyAgICB9CisKK3ByaXZh
dGU6CisgICAgV2ViSWNvblR5cGUgbV9pY29uVHlwZTsKKyAgICBXZWJVUkwgbV9pY29uVVJMOwor
fTsKKworfQorCisjZW5kaWYgLy8gV2ViSWNvblVSTF9oCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJY29uVVJMLmgKX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRl
ZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAJKHJldmlzaW9uIDg2MDgzKQorKysg
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJHZW9sb2NhdGlvbkVycm9yLmgi
CiAjaW5jbHVkZSAiR2VvbG9jYXRpb25Qb3NpdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxJbnB1dEVs
ZW1lbnQuaCIKKyNpbmNsdWRlICJJY29uVVJMLmgiCiAjaW5jbHVkZSAiSURCRmFjdG9yeUJhY2tl
bmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJJREJLZXkuaCIKICNpbmNsdWRlICJNZWRpYVBsYXll
ci5oIgpAQCAtNzMsNiArNzQsNyBAQAogI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uUG9zaXRpb24u
aCIKICNpbmNsdWRlICJXZWJJREJGYWN0b3J5LmgiCiAjaW5jbHVkZSAiV2ViSURCS2V5LmgiCisj
aW5jbHVkZSAiV2ViSWNvblVSTC5oIgogI2luY2x1ZGUgIldlYklucHV0RWxlbWVudC5oIgogI2lu
Y2x1ZGUgIldlYk1lZGlhUGxheWVyLmgiCiAjaW5jbHVkZSAiV2ViTm90aWZpY2F0aW9uUHJlc2Vu
dGVyLmgiCkBAIC0zMDQsNiArMzA2LDExIEBAIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0o
V2ViRm9udERlc2MKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViRm9udERlc2NyaXB0
aW9uOjpXZWlnaHROb3JtYWwsIEZvbnRXZWlnaHROb3JtYWwpOwogQ09NUElMRV9BU1NFUlRfTUFU
Q0hJTkdfRU5VTShXZWJGb250RGVzY3JpcHRpb246OldlaWdodEJvbGQsIEZvbnRXZWlnaHRCb2xk
KTsKIAorQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJY29uVVJMOjpUeXBlSW52YWxp
ZCwgSW52YWxpZEljb24pOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJY29uVVJM
OjpUeXBlRmF2aWNvbiwgRmF2aWNvbik7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdl
Ykljb25VUkw6OlR5cGVUb3VjaCwgVG91Y2hJY29uKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5H
X0VOVU0oV2ViSWNvblVSTDo6VHlwZVRvdWNoUHJlY29tcG9zZWQsIFRvdWNoUHJlY29tcG9zZWRJ
Y29uKTsKKwogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJOb2RlOjpFbGVtZW50Tm9k
ZSwgTm9kZTo6RUxFTUVOVF9OT0RFKTsKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2Vi
Tm9kZTo6QXR0cmlidXRlTm9kZSwgTm9kZTo6QVRUUklCVVRFX05PREUpOwogQ09NUElMRV9BU1NF
UlRfTUFUQ0hJTkdfRU5VTShXZWJOb2RlOjpUZXh0Tm9kZSwgTm9kZTo6VEVYVF9OT0RFKTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGll
bnRJbXBsLmNwcAkocmV2aXNpb24gODYwODMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NjAsNyArNzYw
LDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpc3BhdGNoRGlkUgogdm9pZCBGcmFt
ZUxvYWRlckNsaWVudEltcGw6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoV2ViQ29yZTo6SWNvblR5
cGUgdHlwZSkKIHsKICAgICBpZiAobV93ZWJGcmFtZS0+Y2xpZW50KCkpCi0gICAgICAgIG1fd2Vi
RnJhbWUtPmNsaWVudCgpLT5kaWRDaGFuZ2VJY29ucyhtX3dlYkZyYW1lKTsKKyAgICAgICAgbV93
ZWJGcmFtZS0+Y2xpZW50KCktPmRpZENoYW5nZUljb25zKG1fd2ViRnJhbWUsIHN0YXRpY19jYXN0
PFdlYkljb25VUkw6OldlYkljb25UeXBlPih0eXBlKSk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXJD
bGllbnRJbXBsOjpkaXNwYXRjaERpZENvbW1pdExvYWQoKQpJbmRleDogU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCShyZXZpc2lvbiA4NjA4MykKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEwMSw2ICsxMDEsNyBAQAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhpc3Rv
cnlJdGVtLmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgorI2luY2x1ZGUgIkljb25VUkwu
aCIKICNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgog
I2luY2x1ZGUgInBhaW50aW5nL0dyYXBoaWNzQ29udGV4dEJ1aWxkZXIuaCIKQEAgLTEzNyw2ICsx
MzgsNyBAQAogI2luY2x1ZGUgIldlYkZvcm1FbGVtZW50LmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVD
bGllbnQuaCIKICNpbmNsdWRlICJXZWJIaXN0b3J5SXRlbS5oIgorI2luY2x1ZGUgIldlYkljb25V
UkwuaCIKICNpbmNsdWRlICJXZWJJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJXZWJOb2RlLmgi
CiAjaW5jbHVkZSAiV2ViUGFzc3dvcmRBdXRvY29tcGxldGVMaXN0ZW5lci5oIgpAQCAtNTIwLDE1
ICs1MjIsMjUgQEAgV2ViVVJMIFdlYkZyYW1lSW1wbDo6dXJsKCkgY29uc3QKIAogV2ViVVJMIFdl
YkZyYW1lSW1wbDo6ZmF2SWNvblVSTCgpIGNvbnN0CiB7CisgICAgV2ViVmVjdG9yPFdlYkljb25V
Ukw+IHVybHMgPSBmYXZJY29uVVJMKFdlYkljb25VUkw6OlR5cGVGYXZpY29uKTsKKyAgICBpZiAo
dXJscy5zaXplKCkpCisgICAgICAgIHJldHVybiB1cmxzWzBdLmljb25VUkwoKTsKKyAgICByZXR1
cm4gV2ViVVJMKCk7Cit9CisKK1dlYlZlY3RvcjxXZWJJY29uVVJMPiBXZWJGcmFtZUltcGw6OmZh
dkljb25VUkwoaW50IHdlYkljb25UeXBlcykgY29uc3QKK3sKICAgICBGcmFtZUxvYWRlciogZnJh
bWVMb2FkZXIgPSBtX2ZyYW1lLT5sb2FkZXIoKTsKICAgICAvLyBUaGUgVVJMIHRvIHRoZSBmYXZp
Y29uIG1heSBiZSBpbiB0aGUgaGVhZGVyLiBBcyBzdWNoLCBvbmx5CiAgICAgLy8gYXNrIHRoZSBs
b2FkZXIgZm9yIHRoZSBmYXZpY29uIGlmIGl0J3MgZmluaXNoZWQgbG9hZGluZy4KICAgICBpZiAo
ZnJhbWVMb2FkZXItPnN0YXRlKCkgPT0gRnJhbWVTdGF0ZUNvbXBsZXRlKSB7Ci0gICAgICAgIGNv
bnN0IEtVUkwmIHVybCA9IGZyYW1lTG9hZGVyLT5pY29uVVJMKCk7Ci0gICAgICAgIGlmICghdXJs
LmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVybiB1cmw7CisgICAgICAgIFZlY3RvcjxXZWJD
b3JlOjpJY29uVVJMPiBpY29uVVJMcyA9IGZyYW1lTG9hZGVyLT5pY29uVVJMcyh3ZWJJY29uVHlw
ZXMpOworICAgICAgICBXZWJWZWN0b3I8V2ViSWNvblVSTD4gd2ViSWNvblVSTHMoaWNvblVSTHMu
c2l6ZSgpKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpY29uVVJMcy5zaXplKCk7
IGkrKykKKyAgICAgICAgICAgIHdlYkljb25VUkxzW2ldID0gV2ViSWNvblVSTChpY29uVVJMc1tp
XS5tX2ljb25VUkwsIHN0YXRpY19jYXN0PFdlYkljb25VUkw6OldlYkljb25UeXBlPihpY29uVVJM
c1tpXS5tX2ljb25UeXBlKSk7CisgICAgICAgIHJldHVybiB3ZWJJY29uVVJMczsKICAgICB9Ci0g
ICAgcmV0dXJuIFdlYlVSTCgpOworICAgIHJldHVybiBXZWJWZWN0b3I8V2ViSWNvblVSTD4oKTsK
IH0KIAogV2ViVVJMIFdlYkZyYW1lSW1wbDo6b3BlblNlYXJjaERlc2NyaXB0aW9uVVJMKCkgY29u
c3QKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5oCShyZXZp
c2lvbiA4NjA4MykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5o
CSh3b3JraW5nIGNvcHkpCkBAIC03MSw2ICs3MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGxv
bmcgbG9uZyBpZGVudGlmaWVyKCkgY29uc3Q7CiAgICAgdmlydHVhbCBXZWJVUkwgdXJsKCkgY29u
c3Q7CiAgICAgdmlydHVhbCBXZWJVUkwgZmF2SWNvblVSTCgpIGNvbnN0OworICAgIHZpcnR1YWwg
V2ViVmVjdG9yPFdlYkljb25VUkw+IGZhdkljb25VUkwoaW50IGljb25UeXBlcykgY29uc3Q7CiAg
ICAgdmlydHVhbCBXZWJVUkwgb3BlblNlYXJjaERlc2NyaXB0aW9uVVJMKCkgY29uc3Q7CiAgICAg
dmlydHVhbCBXZWJTdHJpbmcgZW5jb2RpbmcoKSBjb25zdDsKICAgICB2aXJ0dWFsIFdlYlNpemUg
c2Nyb2xsT2Zmc2V0KCkgY29uc3Q7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93022</attachid>
            <date>2011-05-10 15:11:25 -0700</date>
            <delta_ts>2011-05-10 19:12:47 -0700</delta_ts>
            <desc>Fix style</desc>
            <filename>patch.10</filename>
            <type>text/plain</type>
            <size>11544</size>
            <attacher>michaelbai</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA4NjE1NykKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzIg
QEAKKzIwMTEtMDUtMTAgIFRhbyBCYWkgIDxtaWNoYWVsYmFpQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBIYW5kbGUgdGhlIHRv
dWNoIGljb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02MDI0NworCisgICAgICAgIEFkZGVkIFdlYkljb25VUkwgZm9yIHRoZSBjb3JyZXNwb25kaW5n
IEljb25VUkwuCisgICAgICAgIEFkZGVkIGEgcGFyYW1ldGVyIHRvIGZhdkljb25VUkwoKSB0byBz
cGVjaWZ5IHRoZSB0eXBlIG9mIGljb24gbmVlZCB0bworICAgICAgICByZXR1cm4uCisgICAgICAg
IFJvbGxiYWNrIHRoZSBwcmV2aW91cyBmYXZJY29uVVJMKCksIHNvIGl0IGNhbiBiZSBjb21waWxl
ZCBpbiBDaHJvbWl1bQorICAgICAgICBhbmQgd2lsbCByZW1vdmUgaXQgbGF0ZXIuIAorCisgICAg
ICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBmZWF0dXJlcy5neXBpOgorICAgICAgICAqIHB1
YmxpYy9XZWJGcmFtZS5oOgorICAgICAgICAqIHB1YmxpYy9XZWJGcmFtZUNsaWVudC5oOgorICAg
ICAgICAoV2ViS2l0OjpXZWJGcmFtZUNsaWVudDo6ZGlkQ2hhbmdlSWNvbnMpOgorICAgICAgICAq
IHB1YmxpYy9XZWJJY29uVVJMLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJJY29uVVJM
OjpXZWJJY29uVVJMKToKKyAgICAgICAgKFdlYktpdDo6V2ViSWNvblVSTDo6aWNvblR5cGUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJY29uVVJMOjppY29uVVJMKToKKyAgICAgICAgKiBzcmMvQXNz
ZXJ0TWF0Y2hpbmdFbnVtcy5jcHA6CisgICAgICAgICogc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1w
bC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlzcGF0Y2hE
aWRDaGFuZ2VJY29ucyk6CisgICAgICAgICogc3JjL1dlYkZyYW1lSW1wbC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkZyYW1lSW1wbDo6ZmF2SWNvblVSTCk6CisgICAgICAgICogc3JjL1dlYkZy
YW1lSW1wbC5oOgorCiAyMDExLTA1LTEwICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgQXR0ZW1wdCB0byBmaXggdGhlIGNsYW5nIGJ1aWxkLgpJbmRleDogU291cmNl
L1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vV2ViS2l0Lmd5cAkocmV2aXNpb24gODYwODMpCisrKyBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL1dlYktpdC5neXAJKHdvcmtpbmcgY29weSkKQEAgLTE4NSw2ICsxODUsNyBAQAogICAg
ICAgICAgICAgICAgICdwdWJsaWMvV2ViSFRUUEJvZHkuaCcsCiAgICAgICAgICAgICAgICAgJ3B1
YmxpYy9XZWJIVFRQTG9hZEluZm8uaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJJY29u
TG9hZGluZ0NvbXBsZXRpb24uaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJJY29uVHlw
ZS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkltYWdlLmgnLAogICAgICAgICAgICAg
ICAgICdwdWJsaWMvV2ViSW1hZ2VEZWNvZGVyLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMv
V2ViSURCQ2FsbGJhY2tzLmgnLApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJl
cy5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lw
aQkocmV2aXNpb24gODYwODMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5
cGkJKHdvcmtpbmcgY29weSkKQEAgLTg4LDYgKzg4LDcgQEAKICAgICAgICAgJ0VOQUJMRV9TVkdf
Rk9SRUlHTl9PQkpFQ1Q9MScsCiAgICAgICAgICdFTkFCTEVfU1ZHX1VTRT0xJywKICAgICAgICAg
J0VOQUJMRV9UT1VDSF9FVkVOVFM9MScsCisgICAgICAgICdFTkFCTEVfVE9VQ0hfSUNPTl9MT0FE
SU5HPTEnLAogICAgICAgICAnRU5BQkxFX1Y4X1NDUklQVF9ERUJVR19TRVJWRVI9MScsCiAgICAg
ICAgICdFTkFCTEVfVklERU89MScsCiAgICAgICAgICdFTkFCTEVfV0VCX0FVRElPPTAnLApJbmRl
eDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZS5oCShyZXZpc2lvbiA4NjA4
MykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2luY2x1ZGUgIldlYkNhbnZhcy5oIgogI2luY2x1
ZGUgIldlYkZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRlICJXZWJJY29uVVJMLmgiCiAjaW5jbHVkZSAi
V2ViTm9kZS5oIgogI2luY2x1ZGUgIldlYlVSTC5oIgogCkBAIC0xMjksMTAgKzEzMCwxNCBAQCBw
dWJsaWM6CiAgICAgLy8gZGF0YVNvdXJjZSgpLT5yZXF1ZXN0KCkudXJsKCkuCiAgICAgdmlydHVh
bCBXZWJVUkwgdXJsKCkgY29uc3QgPSAwOwogCi0gICAgLy8gVGhlIHVybCBvZiB0aGUgZmF2aWNv
biAoaWYgYW55KSBzcGVjaWZpZWQgYnkgdGhlIGRvY3VtZW50IGxvYWRlZCBpbgotICAgIC8vIHRo
aXMgZnJhbWUuCisgICAgLy8gVGhpcyBtZXRob2QgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSBy
ZW1vdmVkIHNvb24uCiAgICAgdmlydHVhbCBXZWJVUkwgZmF2SWNvblVSTCgpIGNvbnN0ID0gMDsK
IAorICAgIC8vIFRoZSB1cmxzIG9mIHRoZSBnaXZlbiBjb21iaW5hdGlvbiB0eXBlcyBvZiBmYXZp
Y29uIChpZiBhbnkpIHNwZWNpZmllZCBieQorICAgIC8vIHRoZSBkb2N1bWVudCBsb2FkZWQgaW4g
dGhpcyBmcmFtZS4gVGhlIGljb25UeXBlcyBjb3VsZCBiZSBhIGJpdC1tYXNrIG9mCisgICAgLy8g
V2ViSWNvblR5cGUgdG8gZ2V0IG11bHRpcGxlIGljb24ncyBVUkxzLgorICAgIHZpcnR1YWwgV2Vi
VmVjdG9yPFdlYkljb25VUkw+IGZhdkljb25VUkwoaW50IGljb25UeXBlcykgY29uc3QgPSAwOwor
CiAgICAgLy8gVGhlIHVybCBvZiB0aGUgT3BlblNlYXJjaCBEZXNyaXB0aW9uIERvY3VtZW50IChp
ZiBhbnkpIHNwZWNpZmllZCBieQogICAgIC8vIHRoZSBkb2N1bWVudCBsb2FkZWQgaW4gdGhpcyBm
cmFtZS4KICAgICB2aXJ0dWFsIFdlYlVSTCBvcGVuU2VhcmNoRGVzY3JpcHRpb25VUkwoKSBjb25z
dCA9IDA7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1l
Q2xpZW50LmgJKHJldmlzaW9uIDg2MDgzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViRnJhbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogCiAj
aW5jbHVkZSAiV2ViQ29tbW9uLmgiCiAjaW5jbHVkZSAiV2ViRmlsZVN5c3RlbS5oIgorI2luY2x1
ZGUgIldlYkljb25VUkwuaCIKICNpbmNsdWRlICJXZWJOYXZpZ2F0aW9uUG9saWN5LmgiCiAjaW5j
bHVkZSAiV2ViTmF2aWdhdGlvblR5cGUuaCIKICNpbmNsdWRlICJXZWJTdG9yYWdlUXVvdGFUeXBl
LmgiCkBAIC0yMDIsNyArMjAzLDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIC8vIFRoZSBpY29u
cyBmb3IgdGhlIHBhZ2UgaGF2ZSBjaGFuZ2VkLgotICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VJ
Y29ucyhXZWJGcmFtZSopIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VJY29ucyhXZWJG
cmFtZSosIFdlYkljb25VUkw6OlR5cGUpIHsgfQogCiAgICAgLy8gVGhlIGZyYW1lJ3MgZG9jdW1l
bnQgZmluaXNoZWQgbG9hZGluZy4KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoRG9jdW1lbnRM
b2FkKFdlYkZyYW1lKikgeyB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJJY29uVVJMLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViSWNvblVSTC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViSWNvblVSTC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
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
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJJ
Y29uVVJMX2gKKyNkZWZpbmUgV2ViSWNvblVSTF9oCisKKyNpbmNsdWRlICJXZWJVUkwuaCIKKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkljb25VUkwgeworcHVibGljOgorICAgIGVu
dW0gVHlwZSB7CisgICAgICAgIFR5cGVJbnZhbGlkID0gMCwKKyAgICAgICAgVHlwZUZhdmljb24g
PSAxIDw8IDAsCisgICAgICAgIFR5cGVUb3VjaCA9IDEgPDwgMSwKKyAgICAgICAgVHlwZVRvdWNo
UHJlY29tcG9zZWQgPSAxIDw8IDIKKyAgICB9OworCisgICAgV2ViSWNvblVSTCgpCisgICAgICAg
IDogbV9pY29uVHlwZShUeXBlSW52YWxpZCkKKyAgICB7CisgICAgfQorCisgICAgV2ViSWNvblVS
TChjb25zdCBXZWJVUkwmIHVybCwgVHlwZSB0eXBlKQorICAgICAgICA6IG1faWNvblR5cGUodHlw
ZSkKKyAgICAgICAgLCBtX2ljb25VUkwodXJsKQorICAgIHsKKyAgICB9CisKKyAgICBUeXBlIGlj
b25UeXBlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2ljb25UeXBlOworICAgIH0K
KworICAgIGNvbnN0IFdlYlVSTCYgaWNvblVSTCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gbV9pY29uVVJMOworICAgIH0KKworcHJpdmF0ZToKKyAgICBUeXBlIG1faWNvblR5cGU7Cisg
ICAgV2ViVVJMIG1faWNvblVSTDsKK307CisKK30KKworI2VuZGlmIC8vIFdlYkljb25VUkxfaAoK
UHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSWNv
blVSTC5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3Bw
CShyZXZpc2lvbiA4NjA4MykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2VydE1h
dGNoaW5nRW51bXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niw3IEBACiAjaW5jbHVk
ZSAiR2VvbG9jYXRpb25FcnJvci5oIgogI2luY2x1ZGUgIkdlb2xvY2F0aW9uUG9zaXRpb24uaCIK
ICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCisjaW5jbHVkZSAiSWNvblVSTC5oIgogI2lu
Y2x1ZGUgIklEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSURCS2V5Lmgi
CiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKQEAgLTczLDYgKzc0LDcgQEAKICNpbmNsdWRlICJX
ZWJHZW9sb2NhdGlvblBvc2l0aW9uLmgiCiAjaW5jbHVkZSAiV2ViSURCRmFjdG9yeS5oIgogI2lu
Y2x1ZGUgIldlYklEQktleS5oIgorI2luY2x1ZGUgIldlYkljb25VUkwuaCIKICNpbmNsdWRlICJX
ZWJJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJXZWJNZWRpYVBsYXllci5oIgogI2luY2x1ZGUg
IldlYk5vdGlmaWNhdGlvblByZXNlbnRlci5oIgpAQCAtMzA0LDYgKzMwNiwxMSBAQCBDT01QSUxF
X0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYkZvbnREZXNjCiBDT01QSUxFX0FTU0VSVF9NQVRDSElO
R19FTlVNKFdlYkZvbnREZXNjcmlwdGlvbjo6V2VpZ2h0Tm9ybWFsLCBGb250V2VpZ2h0Tm9ybWFs
KTsKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViRm9udERlc2NyaXB0aW9uOjpXZWln
aHRCb2xkLCBGb250V2VpZ2h0Qm9sZCk7CiAKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0o
V2ViSWNvblVSTDo6VHlwZUludmFsaWQsIEludmFsaWRJY29uKTsKK0NPTVBJTEVfQVNTRVJUX01B
VENISU5HX0VOVU0oV2ViSWNvblVSTDo6VHlwZUZhdmljb24sIEZhdmljb24pOworQ09NUElMRV9B
U1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJY29uVVJMOjpUeXBlVG91Y2gsIFRvdWNoSWNvbik7CitD
T01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYkljb25VUkw6OlR5cGVUb3VjaFByZWNvbXBv
c2VkLCBUb3VjaFByZWNvbXBvc2VkSWNvbik7CisKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VO
VU0oV2ViTm9kZTo6RWxlbWVudE5vZGUsIE5vZGU6OkVMRU1FTlRfTk9ERSk7CiBDT01QSUxFX0FT
U0VSVF9NQVRDSElOR19FTlVNKFdlYk5vZGU6OkF0dHJpYnV0ZU5vZGUsIE5vZGU6OkFUVFJJQlVU
RV9OT0RFKTsKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViTm9kZTo6VGV4dE5vZGUs
IE5vZGU6OlRFWFRfTk9ERSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFt
ZUxvYWRlckNsaWVudEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAJKHJldmlzaW9uIDg2MDgzKQorKysgU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNzYwLDcgKzc2MCw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpk
aXNwYXRjaERpZFIKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaERpZENoYW5n
ZUljb25zKFdlYkNvcmU6Okljb25UeXBlIHR5cGUpCiB7CiAgICAgaWYgKG1fd2ViRnJhbWUtPmNs
aWVudCgpKQotICAgICAgICBtX3dlYkZyYW1lLT5jbGllbnQoKS0+ZGlkQ2hhbmdlSWNvbnMobV93
ZWJGcmFtZSk7CisgICAgICAgIG1fd2ViRnJhbWUtPmNsaWVudCgpLT5kaWRDaGFuZ2VJY29ucyht
X3dlYkZyYW1lLCBzdGF0aWNfY2FzdDxXZWJJY29uVVJMOjpUeXBlPih0eXBlKSk7CiB9CiAKIHZv
aWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaERpZENvbW1pdExvYWQoKQpJbmRleDog
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCShyZXZpc2lvbiA4
NjA4MykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEwMSw2ICsxMDEsNyBAQAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgog
I2luY2x1ZGUgIkhpc3RvcnlJdGVtLmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgorI2lu
Y2x1ZGUgIkljb25VUkwuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5j
bHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgInBhaW50aW5nL0dyYXBoaWNzQ29udGV4dEJ1aWxkZXIu
aCIKQEAgLTEzNyw2ICsxMzgsNyBAQAogI2luY2x1ZGUgIldlYkZvcm1FbGVtZW50LmgiCiAjaW5j
bHVkZSAiV2ViRnJhbWVDbGllbnQuaCIKICNpbmNsdWRlICJXZWJIaXN0b3J5SXRlbS5oIgorI2lu
Y2x1ZGUgIldlYkljb25VUkwuaCIKICNpbmNsdWRlICJXZWJJbnB1dEVsZW1lbnQuaCIKICNpbmNs
dWRlICJXZWJOb2RlLmgiCiAjaW5jbHVkZSAiV2ViUGFzc3dvcmRBdXRvY29tcGxldGVMaXN0ZW5l
ci5oIgpAQCAtNTIwLDE1ICs1MjIsMjUgQEAgV2ViVVJMIFdlYkZyYW1lSW1wbDo6dXJsKCkgY29u
c3QKIAogV2ViVVJMIFdlYkZyYW1lSW1wbDo6ZmF2SWNvblVSTCgpIGNvbnN0CiB7CisgICAgV2Vi
VmVjdG9yPFdlYkljb25VUkw+IHVybHMgPSBmYXZJY29uVVJMKFdlYkljb25VUkw6OlR5cGVGYXZp
Y29uKTsKKyAgICBpZiAodXJscy5zaXplKCkpCisgICAgICAgIHJldHVybiB1cmxzWzBdLmljb25V
UkwoKTsKKyAgICByZXR1cm4gV2ViVVJMKCk7Cit9CisKK1dlYlZlY3RvcjxXZWJJY29uVVJMPiBX
ZWJGcmFtZUltcGw6OmZhdkljb25VUkwoaW50IHdlYkljb25UeXBlcykgY29uc3QKK3sKICAgICBG
cmFtZUxvYWRlciogZnJhbWVMb2FkZXIgPSBtX2ZyYW1lLT5sb2FkZXIoKTsKICAgICAvLyBUaGUg
VVJMIHRvIHRoZSBmYXZpY29uIG1heSBiZSBpbiB0aGUgaGVhZGVyLiBBcyBzdWNoLCBvbmx5CiAg
ICAgLy8gYXNrIHRoZSBsb2FkZXIgZm9yIHRoZSBmYXZpY29uIGlmIGl0J3MgZmluaXNoZWQgbG9h
ZGluZy4KICAgICBpZiAoZnJhbWVMb2FkZXItPnN0YXRlKCkgPT0gRnJhbWVTdGF0ZUNvbXBsZXRl
KSB7Ci0gICAgICAgIGNvbnN0IEtVUkwmIHVybCA9IGZyYW1lTG9hZGVyLT5pY29uVVJMKCk7Ci0g
ICAgICAgIGlmICghdXJsLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVybiB1cmw7CisgICAg
ICAgIFZlY3RvcjxXZWJDb3JlOjpJY29uVVJMPiBpY29uVVJMcyA9IGZyYW1lTG9hZGVyLT5pY29u
VVJMcyh3ZWJJY29uVHlwZXMpOworICAgICAgICBXZWJWZWN0b3I8V2ViSWNvblVSTD4gd2ViSWNv
blVSTHMoaWNvblVSTHMuc2l6ZSgpKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBp
Y29uVVJMcy5zaXplKCk7IGkrKykKKyAgICAgICAgICAgIHdlYkljb25VUkxzW2ldID0gV2ViSWNv
blVSTChpY29uVVJMc1tpXS5tX2ljb25VUkwsIHN0YXRpY19jYXN0PFdlYkljb25VUkw6OlR5cGU+
KGljb25VUkxzW2ldLm1faWNvblR5cGUpKTsKKyAgICAgICAgcmV0dXJuIHdlYkljb25VUkxzOwog
ICAgIH0KLSAgICByZXR1cm4gV2ViVVJMKCk7CisgICAgcmV0dXJuIFdlYlZlY3RvcjxXZWJJY29u
VVJMPigpOwogfQogCiBXZWJVUkwgV2ViRnJhbWVJbXBsOjpvcGVuU2VhcmNoRGVzY3JpcHRpb25V
UkwoKSBjb25zdApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBs
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBs
LmgJKHJldmlzaW9uIDg2MDgzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJh
bWVJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTcxLDYgKzcxLDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgbG9uZyBsb25nIGlkZW50aWZpZXIoKSBjb25zdDsKICAgICB2aXJ0dWFsIFdlYlVSTCB1
cmwoKSBjb25zdDsKICAgICB2aXJ0dWFsIFdlYlVSTCBmYXZJY29uVVJMKCkgY29uc3Q7CisgICAg
dmlydHVhbCBXZWJWZWN0b3I8V2ViSWNvblVSTD4gZmF2SWNvblVSTChpbnQgaWNvblR5cGVzKSBj
b25zdDsKICAgICB2aXJ0dWFsIFdlYlVSTCBvcGVuU2VhcmNoRGVzY3JpcHRpb25VUkwoKSBjb25z
dDsKICAgICB2aXJ0dWFsIFdlYlN0cmluZyBlbmNvZGluZygpIGNvbnN0OwogICAgIHZpcnR1YWwg
V2ViU2l6ZSBzY3JvbGxPZmZzZXQoKSBjb25zdDsK
</data>
<flag name="review"
          id="86098"
          type_id="1"
          status="-"
          setter="fishd"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93062</attachid>
            <date>2011-05-10 19:12:47 -0700</date>
            <delta_ts>2011-05-11 08:37:12 -0700</delta_ts>
            <desc>Address the comment</desc>
            <filename>patch.11</filename>
            <type>text/plain</type>
            <size>11879</size>
            <attacher>michaelbai</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA4NjE1NykKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzIg
QEAKKzIwMTEtMDUtMTAgIFRhbyBCYWkgIDxtaWNoYWVsYmFpQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBIYW5kbGUgdGhlIHRv
dWNoIGljb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02MDI0NworCisgICAgICAgIEFkZGVkIFdlYkljb25VUkwgZm9yIHRoZSBjb3JyZXNwb25kaW5n
IEljb25VUkwuCisgICAgICAgIEFkZGVkIGEgcGFyYW1ldGVyIHRvIGZhdkljb25VUkwoKSB0byBz
cGVjaWZ5IHRoZSB0eXBlIG9mIGljb24gbmVlZCB0bworICAgICAgICByZXR1cm4uCisgICAgICAg
IFJvbGxiYWNrIHRoZSBwcmV2aW91cyBmYXZJY29uVVJMKCksIHNvIGl0IGNhbiBiZSBjb21waWxl
ZCBpbiBDaHJvbWl1bQorICAgICAgICBhbmQgd2lsbCByZW1vdmUgaXQgbGF0ZXIuIAorCisgICAg
ICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBmZWF0dXJlcy5neXBpOgorICAgICAgICAqIHB1
YmxpYy9XZWJGcmFtZS5oOgorICAgICAgICAqIHB1YmxpYy9XZWJGcmFtZUNsaWVudC5oOgorICAg
ICAgICAoV2ViS2l0OjpXZWJGcmFtZUNsaWVudDo6ZGlkQ2hhbmdlSWNvbnMpOgorICAgICAgICAq
IHB1YmxpYy9XZWJJY29uVVJMLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJJY29uVVJM
OjpXZWJJY29uVVJMKToKKyAgICAgICAgKFdlYktpdDo6V2ViSWNvblVSTDo6aWNvblR5cGUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJY29uVVJMOjppY29uVVJMKToKKyAgICAgICAgKiBzcmMvQXNz
ZXJ0TWF0Y2hpbmdFbnVtcy5jcHA6CisgICAgICAgICogc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1w
bC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlzcGF0Y2hE
aWRDaGFuZ2VJY29ucyk6CisgICAgICAgICogc3JjL1dlYkZyYW1lSW1wbC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkZyYW1lSW1wbDo6ZmF2SWNvblVSTCk6CisgICAgICAgICogc3JjL1dlYkZy
YW1lSW1wbC5oOgorCiAyMDExLTA1LTEwICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgQXR0ZW1wdCB0byBmaXggdGhlIGNsYW5nIGJ1aWxkLgpJbmRleDogU291cmNl
L1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vV2ViS2l0Lmd5cAkocmV2aXNpb24gODYwODMpCisrKyBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL1dlYktpdC5neXAJKHdvcmtpbmcgY29weSkKQEAgLTE4NSw2ICsxODUsNyBAQAogICAg
ICAgICAgICAgICAgICdwdWJsaWMvV2ViSFRUUEJvZHkuaCcsCiAgICAgICAgICAgICAgICAgJ3B1
YmxpYy9XZWJIVFRQTG9hZEluZm8uaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJJY29u
TG9hZGluZ0NvbXBsZXRpb24uaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJJY29uVHlw
ZS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkltYWdlLmgnLAogICAgICAgICAgICAg
ICAgICdwdWJsaWMvV2ViSW1hZ2VEZWNvZGVyLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMv
V2ViSURCQ2FsbGJhY2tzLmgnLApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJl
cy5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lw
aQkocmV2aXNpb24gODYwODMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5
cGkJKHdvcmtpbmcgY29weSkKQEAgLTg4LDYgKzg4LDcgQEAKICAgICAgICAgJ0VOQUJMRV9TVkdf
Rk9SRUlHTl9PQkpFQ1Q9MScsCiAgICAgICAgICdFTkFCTEVfU1ZHX1VTRT0xJywKICAgICAgICAg
J0VOQUJMRV9UT1VDSF9FVkVOVFM9MScsCisgICAgICAgICdFTkFCTEVfVE9VQ0hfSUNPTl9MT0FE
SU5HPTEnLAogICAgICAgICAnRU5BQkxFX1Y4X1NDUklQVF9ERUJVR19TRVJWRVI9MScsCiAgICAg
ICAgICdFTkFCTEVfVklERU89MScsCiAgICAgICAgICdFTkFCTEVfV0VCX0FVRElPPTAnLApJbmRl
eDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZS5oCShyZXZpc2lvbiA4NjA4
MykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2luY2x1ZGUgIldlYkNhbnZhcy5oIgogI2luY2x1
ZGUgIldlYkZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRlICJXZWJJY29uVVJMLmgiCiAjaW5jbHVkZSAi
V2ViTm9kZS5oIgogI2luY2x1ZGUgIldlYlVSTC5oIgogCkBAIC0xMjksMTAgKzEzMCwxNSBAQCBw
dWJsaWM6CiAgICAgLy8gZGF0YVNvdXJjZSgpLT5yZXF1ZXN0KCkudXJsKCkuCiAgICAgdmlydHVh
bCBXZWJVUkwgdXJsKCkgY29uc3QgPSAwOwogCi0gICAgLy8gVGhlIHVybCBvZiB0aGUgZmF2aWNv
biAoaWYgYW55KSBzcGVjaWZpZWQgYnkgdGhlIGRvY3VtZW50IGxvYWRlZCBpbgotICAgIC8vIHRo
aXMgZnJhbWUuCisgICAgLy8gVGhpcyBtZXRob2QgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSBy
ZW1vdmVkIHNvb24uCiAgICAgdmlydHVhbCBXZWJVUkwgZmF2SWNvblVSTCgpIGNvbnN0ID0gMDsK
IAorICAgIC8vIFRoZSB1cmxzIG9mIHRoZSBnaXZlbiBjb21iaW5hdGlvbiB0eXBlcyBvZiBmYXZp
Y29uIChpZiBhbnkpIHNwZWNpZmllZCBieQorICAgIC8vIHRoZSBkb2N1bWVudCBsb2FkZWQgaW4g
dGhpcyBmcmFtZS4gVGhlIGljb25UeXBlcyBpcyBhIGJpdC1tYXNrIG9mCisgICAgLy8gV2ViSWNv
blVSTDo6VHlwZSB2YWx1ZXMsIHNlZCB0byBzZWxlY3QgZnJvbSB0aGUgYXZhaWxhYmxlIHNldCBv
ZiBpY29uCisgICAgLy8gVVJMcworICAgIHZpcnR1YWwgV2ViVmVjdG9yPFdlYkljb25VUkw+IGlj
b25VUkxzKGludCBpY29uVHlwZXMpIGNvbnN0ID0gMDsKKwogICAgIC8vIFRoZSB1cmwgb2YgdGhl
IE9wZW5TZWFyY2ggRGVzcmlwdGlvbiBEb2N1bWVudCAoaWYgYW55KSBzcGVjaWZpZWQgYnkKICAg
ICAvLyB0aGUgZG9jdW1lbnQgbG9hZGVkIGluIHRoaXMgZnJhbWUuCiAgICAgdmlydHVhbCBXZWJV
Ukwgb3BlblNlYXJjaERlc2NyaXB0aW9uVVJMKCkgY29uc3QgPSAwOwpJbmRleDogU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oCShyZXZpc2lvbiA4NjA4
MykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lQ2xpZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2luY2x1ZGUgIldlYkNvbW1vbi5oIgog
I2luY2x1ZGUgIldlYkZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRlICJXZWJJY29uVVJMLmgiCiAjaW5j
bHVkZSAiV2ViTmF2aWdhdGlvblBvbGljeS5oIgogI2luY2x1ZGUgIldlYk5hdmlnYXRpb25UeXBl
LmgiCiAjaW5jbHVkZSAiV2ViU3RvcmFnZVF1b3RhVHlwZS5oIgpAQCAtMjAyLDcgKzIwMyw3IEBA
IHB1YmxpYzoKICAgICB9CiAKICAgICAvLyBUaGUgaWNvbnMgZm9yIHRoZSBwYWdlIGhhdmUgY2hh
bmdlZC4KLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlSWNvbnMoV2ViRnJhbWUqKSB7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlSWNvbihXZWJGcmFtZSosIFdlYkljb25VUkw6OlR5cGUp
IHsgfQogCiAgICAgLy8gVGhlIGZyYW1lJ3MgZG9jdW1lbnQgZmluaXNoZWQgbG9hZGluZy4KICAg
ICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoRG9jdW1lbnRMb2FkKFdlYkZyYW1lKikgeyB9CkluZGV4
OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJY29uVVJMLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSWNvblVSTC5oCShyZXZpc2lvbiAw
KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSWNvblVSTC5oCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDg2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJ
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
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJJY29uVVJMX2gKKyNkZWZpbmUgV2ViSWNv
blVSTF9oCisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyNpbmNsdWRlICJJY29uVVJMLmgi
CisjZW5kaWYKKyNpbmNsdWRlICJXZWJVUkwuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Ns
YXNzIFdlYkljb25VUkwgeworcHVibGljOgorICAgIGVudW0gVHlwZSB7CisgICAgICAgIFR5cGVJ
bnZhbGlkID0gMCwKKyAgICAgICAgVHlwZUZhdmljb24gPSAxIDw8IDAsCisgICAgICAgIFR5cGVU
b3VjaCA9IDEgPDwgMSwKKyAgICAgICAgVHlwZVRvdWNoUHJlY29tcG9zZWQgPSAxIDw8IDIKKyAg
ICB9OworCisgICAgV2ViSWNvblVSTCgpCisgICAgICAgIDogbV9pY29uVHlwZShUeXBlSW52YWxp
ZCkKKyAgICB7CisgICAgfQorCisgICAgV2ViSWNvblVSTChjb25zdCBXZWJVUkwmIHVybCwgVHlw
ZSB0eXBlKQorICAgICAgICA6IG1faWNvblR5cGUodHlwZSkKKyAgICAgICAgLCBtX2ljb25VUkwo
dXJsKQorICAgIHsKKyAgICB9CisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICBXZWJJ
Y29uVVJMKGNvbnN0IFdlYkNvcmU6Okljb25VUkwmIGljb25VUkwpCisgICAgICAgIDogbV9pY29u
VHlwZShzdGF0aWNfY2FzdDxUeXBlPihpY29uVVJMLm1faWNvblR5cGUpKQorICAgICAgICAsIG1f
aWNvblVSTChpY29uVVJMLm1faWNvblVSTCkKKyAgICB7CisgICAgfQorI2VuZGlmCisKKyAgICBU
eXBlIGljb25UeXBlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2ljb25UeXBlOwor
ICAgIH0KKworICAgIGNvbnN0IFdlYlVSTCYgaWNvblVSTCgpIGNvbnN0CisgICAgeworICAgICAg
ICByZXR1cm4gbV9pY29uVVJMOworICAgIH0KKworcHJpdmF0ZToKKyAgICBUeXBlIG1faWNvblR5
cGU7CisgICAgV2ViVVJMIG1faWNvblVSTDsKK307CisKK30KKworI2VuZGlmIC8vIFdlYkljb25V
UkxfaAoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViSWNvblVSTC5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51
bXMuY3BwCShyZXZpc2lvbiA4NjA4MykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fz
c2VydE1hdGNoaW5nRW51bXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niw3IEBACiAj
aW5jbHVkZSAiR2VvbG9jYXRpb25FcnJvci5oIgogI2luY2x1ZGUgIkdlb2xvY2F0aW9uUG9zaXRp
b24uaCIKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCisjaW5jbHVkZSAiSWNvblVSTC5o
IgogI2luY2x1ZGUgIklEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSURC
S2V5LmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKQEAgLTczLDYgKzc0LDcgQEAKICNpbmNs
dWRlICJXZWJHZW9sb2NhdGlvblBvc2l0aW9uLmgiCiAjaW5jbHVkZSAiV2ViSURCRmFjdG9yeS5o
IgogI2luY2x1ZGUgIldlYklEQktleS5oIgorI2luY2x1ZGUgIldlYkljb25VUkwuaCIKICNpbmNs
dWRlICJXZWJJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJXZWJNZWRpYVBsYXllci5oIgogI2lu
Y2x1ZGUgIldlYk5vdGlmaWNhdGlvblByZXNlbnRlci5oIgpAQCAtMzA0LDYgKzMwNiwxMSBAQCBD
T01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYkZvbnREZXNjCiBDT01QSUxFX0FTU0VSVF9N
QVRDSElOR19FTlVNKFdlYkZvbnREZXNjcmlwdGlvbjo6V2VpZ2h0Tm9ybWFsLCBGb250V2VpZ2h0
Tm9ybWFsKTsKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViRm9udERlc2NyaXB0aW9u
OjpXZWlnaHRCb2xkLCBGb250V2VpZ2h0Qm9sZCk7CiAKK0NPTVBJTEVfQVNTRVJUX01BVENISU5H
X0VOVU0oV2ViSWNvblVSTDo6VHlwZUludmFsaWQsIEludmFsaWRJY29uKTsKK0NPTVBJTEVfQVNT
RVJUX01BVENISU5HX0VOVU0oV2ViSWNvblVSTDo6VHlwZUZhdmljb24sIEZhdmljb24pOworQ09N
UElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJY29uVVJMOjpUeXBlVG91Y2gsIFRvdWNoSWNv
bik7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYkljb25VUkw6OlR5cGVUb3VjaFBy
ZWNvbXBvc2VkLCBUb3VjaFByZWNvbXBvc2VkSWNvbik7CisKIENPTVBJTEVfQVNTRVJUX01BVENI
SU5HX0VOVU0oV2ViTm9kZTo6RWxlbWVudE5vZGUsIE5vZGU6OkVMRU1FTlRfTk9ERSk7CiBDT01Q
SUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYk5vZGU6OkF0dHJpYnV0ZU5vZGUsIE5vZGU6OkFU
VFJJQlVURV9OT0RFKTsKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViTm9kZTo6VGV4
dE5vZGUsIE5vZGU6OlRFWFRfTk9ERSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAJKHJldmlzaW9uIDg2MDgzKQor
KysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzYwLDcgKzc2MCw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRJ
bXBsOjpkaXNwYXRjaERpZFIKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaERp
ZENoYW5nZUljb25zKFdlYkNvcmU6Okljb25UeXBlIHR5cGUpCiB7CiAgICAgaWYgKG1fd2ViRnJh
bWUtPmNsaWVudCgpKQotICAgICAgICBtX3dlYkZyYW1lLT5jbGllbnQoKS0+ZGlkQ2hhbmdlSWNv
bnMobV93ZWJGcmFtZSk7CisgICAgICAgIG1fd2ViRnJhbWUtPmNsaWVudCgpLT5kaWRDaGFuZ2VJ
Y29uKG1fd2ViRnJhbWUsIHN0YXRpY19jYXN0PFdlYkljb25VUkw6OlR5cGU+KHR5cGUpKTsKIH0K
IAogdm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAJKHJldmlz
aW9uIDg2MDgzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDYgKzEwMSw3IEBACiAjaW5jbHVkZSAiSFRNTE5hbWVz
LmgiCiAjaW5jbHVkZSAiSGlzdG9yeUl0ZW0uaCIKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0Lmgi
CisjaW5jbHVkZSAiSWNvblVSTC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIK
ICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAicGFpbnRpbmcvR3JhcGhpY3NDb250ZXh0QnVp
bGRlci5oIgpAQCAtMTM3LDYgKzEzOCw3IEBACiAjaW5jbHVkZSAiV2ViRm9ybUVsZW1lbnQuaCIK
ICNpbmNsdWRlICJXZWJGcmFtZUNsaWVudC5oIgogI2luY2x1ZGUgIldlYkhpc3RvcnlJdGVtLmgi
CisjaW5jbHVkZSAiV2ViSWNvblVSTC5oIgogI2luY2x1ZGUgIldlYklucHV0RWxlbWVudC5oIgog
I2luY2x1ZGUgIldlYk5vZGUuaCIKICNpbmNsdWRlICJXZWJQYXNzd29yZEF1dG9jb21wbGV0ZUxp
c3RlbmVyLmgiCkBAIC01MjAsMTUgKzUyMiwyNSBAQCBXZWJVUkwgV2ViRnJhbWVJbXBsOjp1cmwo
KSBjb25zdAogCiBXZWJVUkwgV2ViRnJhbWVJbXBsOjpmYXZJY29uVVJMKCkgY29uc3QKIHsKKyAg
ICBXZWJWZWN0b3I8V2ViSWNvblVSTD4gdXJscyA9IGZhdkljb25VUkwoV2ViSWNvblVSTDo6VHlw
ZUZhdmljb24pOworICAgIGlmICh1cmxzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIHVybHNbMF0u
aWNvblVSTCgpOworICAgIHJldHVybiBXZWJVUkwoKTsKK30KKworV2ViVmVjdG9yPFdlYkljb25V
Ukw+IFdlYkZyYW1lSW1wbDo6aWNvblVSTHMoaW50IHdlYkljb25UeXBlcykgY29uc3QKK3sKICAg
ICBGcmFtZUxvYWRlciogZnJhbWVMb2FkZXIgPSBtX2ZyYW1lLT5sb2FkZXIoKTsKLSAgICAvLyBU
aGUgVVJMIHRvIHRoZSBmYXZpY29uIG1heSBiZSBpbiB0aGUgaGVhZGVyLiBBcyBzdWNoLCBvbmx5
Ci0gICAgLy8gYXNrIHRoZSBsb2FkZXIgZm9yIHRoZSBmYXZpY29uIGlmIGl0J3MgZmluaXNoZWQg
bG9hZGluZy4KKyAgICAvLyBUaGUgVVJMIHRvIHRoZSBpY29uIG1heSBiZSBpbiB0aGUgaGVhZGVy
LiBBcyBzdWNoLCBvbmx5CisgICAgLy8gYXNrIHRoZSBsb2FkZXIgZm9yIHRoZSBpY29uIGlmIGl0
J3MgZmluaXNoZWQgbG9hZGluZy4KICAgICBpZiAoZnJhbWVMb2FkZXItPnN0YXRlKCkgPT0gRnJh
bWVTdGF0ZUNvbXBsZXRlKSB7Ci0gICAgICAgIGNvbnN0IEtVUkwmIHVybCA9IGZyYW1lTG9hZGVy
LT5pY29uVVJMKCk7Ci0gICAgICAgIGlmICghdXJsLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJl
dHVybiB1cmw7CisgICAgICAgIFZlY3RvcjxXZWJDb3JlOjpJY29uVVJMPiBpY29uVVJMcyA9IGZy
YW1lTG9hZGVyLT5pY29uVVJMcyh3ZWJJY29uVHlwZXMpOworICAgICAgICBXZWJWZWN0b3I8V2Vi
SWNvblVSTD4gd2ViSWNvblVSTHMoaWNvblVSTHMuc2l6ZSgpKTsKKyAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBpY29uVVJMcy5zaXplKCk7IGkrKykKKyAgICAgICAgICAgIHdlYkljb25V
UkxzW2ldID0gaWNvblVSTHNbaV07CisgICAgICAgIHJldHVybiB3ZWJJY29uVVJMczsKICAgICB9
Ci0gICAgcmV0dXJuIFdlYlVSTCgpOworICAgIHJldHVybiBXZWJWZWN0b3I8V2ViSWNvblVSTD4o
KTsKIH0KIAogV2ViVVJMIFdlYkZyYW1lSW1wbDo6b3BlblNlYXJjaERlc2NyaXB0aW9uVVJMKCkg
Y29uc3QKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5oCShy
ZXZpc2lvbiA4NjA4MykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1w
bC5oCSh3b3JraW5nIGNvcHkpCkBAIC03MSw2ICs3MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IGxvbmcgbG9uZyBpZGVudGlmaWVyKCkgY29uc3Q7CiAgICAgdmlydHVhbCBXZWJVUkwgdXJsKCkg
Y29uc3Q7CiAgICAgdmlydHVhbCBXZWJVUkwgZmF2SWNvblVSTCgpIGNvbnN0OworICAgIHZpcnR1
YWwgV2ViVmVjdG9yPFdlYkljb25VUkw+IGljb25VUkxzKGludCBpY29uVHlwZXMpIGNvbnN0Owog
ICAgIHZpcnR1YWwgV2ViVVJMIG9wZW5TZWFyY2hEZXNjcmlwdGlvblVSTCgpIGNvbnN0OwogICAg
IHZpcnR1YWwgV2ViU3RyaW5nIGVuY29kaW5nKCkgY29uc3Q7CiAgICAgdmlydHVhbCBXZWJTaXpl
IHNjcm9sbE9mZnNldCgpIGNvbnN0Owo=
</data>
<flag name="commit-queue"
          id="86158"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93122</attachid>
            <date>2011-05-11 08:37:12 -0700</date>
            <delta_ts>2011-05-11 11:10:08 -0700</delta_ts>
            <desc>Fix build</desc>
            <filename>patch.12</filename>
            <type>text/plain</type>
            <size>11877</size>
            <attacher>michaelbai</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA4NjE1NykKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzIg
QEAKKzIwMTEtMDUtMTAgIFRhbyBCYWkgIDxtaWNoYWVsYmFpQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBIYW5kbGUgdGhlIHRv
dWNoIGljb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02MDI0NworCisgICAgICAgIEFkZGVkIFdlYkljb25VUkwgZm9yIHRoZSBjb3JyZXNwb25kaW5n
IEljb25VUkwuCisgICAgICAgIEFkZGVkIGEgcGFyYW1ldGVyIHRvIGZhdkljb25VUkwoKSB0byBz
cGVjaWZ5IHRoZSB0eXBlIG9mIGljb24gbmVlZCB0bworICAgICAgICByZXR1cm4uCisgICAgICAg
IFJvbGxiYWNrIHRoZSBwcmV2aW91cyBmYXZJY29uVVJMKCksIHNvIGl0IGNhbiBiZSBjb21waWxl
ZCBpbiBDaHJvbWl1bQorICAgICAgICBhbmQgd2lsbCByZW1vdmUgaXQgbGF0ZXIuIAorCisgICAg
ICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBmZWF0dXJlcy5neXBpOgorICAgICAgICAqIHB1
YmxpYy9XZWJGcmFtZS5oOgorICAgICAgICAqIHB1YmxpYy9XZWJGcmFtZUNsaWVudC5oOgorICAg
ICAgICAoV2ViS2l0OjpXZWJGcmFtZUNsaWVudDo6ZGlkQ2hhbmdlSWNvbnMpOgorICAgICAgICAq
IHB1YmxpYy9XZWJJY29uVVJMLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJJY29uVVJM
OjpXZWJJY29uVVJMKToKKyAgICAgICAgKFdlYktpdDo6V2ViSWNvblVSTDo6aWNvblR5cGUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJY29uVVJMOjppY29uVVJMKToKKyAgICAgICAgKiBzcmMvQXNz
ZXJ0TWF0Y2hpbmdFbnVtcy5jcHA6CisgICAgICAgICogc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1w
bC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlzcGF0Y2hE
aWRDaGFuZ2VJY29ucyk6CisgICAgICAgICogc3JjL1dlYkZyYW1lSW1wbC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkZyYW1lSW1wbDo6ZmF2SWNvblVSTCk6CisgICAgICAgICogc3JjL1dlYkZy
YW1lSW1wbC5oOgorCiAyMDExLTA1LTEwICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgQXR0ZW1wdCB0byBmaXggdGhlIGNsYW5nIGJ1aWxkLgpJbmRleDogU291cmNl
L1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vV2ViS2l0Lmd5cAkocmV2aXNpb24gODYwODMpCisrKyBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL1dlYktpdC5neXAJKHdvcmtpbmcgY29weSkKQEAgLTE4NSw2ICsxODUsNyBAQAogICAg
ICAgICAgICAgICAgICdwdWJsaWMvV2ViSFRUUEJvZHkuaCcsCiAgICAgICAgICAgICAgICAgJ3B1
YmxpYy9XZWJIVFRQTG9hZEluZm8uaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJJY29u
TG9hZGluZ0NvbXBsZXRpb24uaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJJY29uVHlw
ZS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkltYWdlLmgnLAogICAgICAgICAgICAg
ICAgICdwdWJsaWMvV2ViSW1hZ2VEZWNvZGVyLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMv
V2ViSURCQ2FsbGJhY2tzLmgnLApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJl
cy5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lw
aQkocmV2aXNpb24gODYwODMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5
cGkJKHdvcmtpbmcgY29weSkKQEAgLTg4LDYgKzg4LDcgQEAKICAgICAgICAgJ0VOQUJMRV9TVkdf
Rk9SRUlHTl9PQkpFQ1Q9MScsCiAgICAgICAgICdFTkFCTEVfU1ZHX1VTRT0xJywKICAgICAgICAg
J0VOQUJMRV9UT1VDSF9FVkVOVFM9MScsCisgICAgICAgICdFTkFCTEVfVE9VQ0hfSUNPTl9MT0FE
SU5HPTEnLAogICAgICAgICAnRU5BQkxFX1Y4X1NDUklQVF9ERUJVR19TRVJWRVI9MScsCiAgICAg
ICAgICdFTkFCTEVfVklERU89MScsCiAgICAgICAgICdFTkFCTEVfV0VCX0FVRElPPTAnLApJbmRl
eDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZS5oCShyZXZpc2lvbiA4NjA4
MykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2luY2x1ZGUgIldlYkNhbnZhcy5oIgogI2luY2x1
ZGUgIldlYkZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRlICJXZWJJY29uVVJMLmgiCiAjaW5jbHVkZSAi
V2ViTm9kZS5oIgogI2luY2x1ZGUgIldlYlVSTC5oIgogCkBAIC0xMjksMTAgKzEzMCwxNSBAQCBw
dWJsaWM6CiAgICAgLy8gZGF0YVNvdXJjZSgpLT5yZXF1ZXN0KCkudXJsKCkuCiAgICAgdmlydHVh
bCBXZWJVUkwgdXJsKCkgY29uc3QgPSAwOwogCi0gICAgLy8gVGhlIHVybCBvZiB0aGUgZmF2aWNv
biAoaWYgYW55KSBzcGVjaWZpZWQgYnkgdGhlIGRvY3VtZW50IGxvYWRlZCBpbgotICAgIC8vIHRo
aXMgZnJhbWUuCisgICAgLy8gVGhpcyBtZXRob2QgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSBy
ZW1vdmVkIHNvb24uCiAgICAgdmlydHVhbCBXZWJVUkwgZmF2SWNvblVSTCgpIGNvbnN0ID0gMDsK
IAorICAgIC8vIFRoZSB1cmxzIG9mIHRoZSBnaXZlbiBjb21iaW5hdGlvbiB0eXBlcyBvZiBmYXZp
Y29uIChpZiBhbnkpIHNwZWNpZmllZCBieQorICAgIC8vIHRoZSBkb2N1bWVudCBsb2FkZWQgaW4g
dGhpcyBmcmFtZS4gVGhlIGljb25UeXBlcyBpcyBhIGJpdC1tYXNrIG9mCisgICAgLy8gV2ViSWNv
blVSTDo6VHlwZSB2YWx1ZXMsIHNlZCB0byBzZWxlY3QgZnJvbSB0aGUgYXZhaWxhYmxlIHNldCBv
ZiBpY29uCisgICAgLy8gVVJMcworICAgIHZpcnR1YWwgV2ViVmVjdG9yPFdlYkljb25VUkw+IGlj
b25VUkxzKGludCBpY29uVHlwZXMpIGNvbnN0ID0gMDsKKwogICAgIC8vIFRoZSB1cmwgb2YgdGhl
IE9wZW5TZWFyY2ggRGVzcmlwdGlvbiBEb2N1bWVudCAoaWYgYW55KSBzcGVjaWZpZWQgYnkKICAg
ICAvLyB0aGUgZG9jdW1lbnQgbG9hZGVkIGluIHRoaXMgZnJhbWUuCiAgICAgdmlydHVhbCBXZWJV
Ukwgb3BlblNlYXJjaERlc2NyaXB0aW9uVVJMKCkgY29uc3QgPSAwOwpJbmRleDogU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oCShyZXZpc2lvbiA4NjA4
MykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lQ2xpZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2luY2x1ZGUgIldlYkNvbW1vbi5oIgog
I2luY2x1ZGUgIldlYkZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRlICJXZWJJY29uVVJMLmgiCiAjaW5j
bHVkZSAiV2ViTmF2aWdhdGlvblBvbGljeS5oIgogI2luY2x1ZGUgIldlYk5hdmlnYXRpb25UeXBl
LmgiCiAjaW5jbHVkZSAiV2ViU3RvcmFnZVF1b3RhVHlwZS5oIgpAQCAtMjAyLDcgKzIwMyw3IEBA
IHB1YmxpYzoKICAgICB9CiAKICAgICAvLyBUaGUgaWNvbnMgZm9yIHRoZSBwYWdlIGhhdmUgY2hh
bmdlZC4KLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlSWNvbnMoV2ViRnJhbWUqKSB7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlSWNvbihXZWJGcmFtZSosIFdlYkljb25VUkw6OlR5cGUp
IHsgfQogCiAgICAgLy8gVGhlIGZyYW1lJ3MgZG9jdW1lbnQgZmluaXNoZWQgbG9hZGluZy4KICAg
ICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoRG9jdW1lbnRMb2FkKFdlYkZyYW1lKikgeyB9CkluZGV4
OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJY29uVVJMLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSWNvblVSTC5oCShyZXZpc2lvbiAw
KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSWNvblVSTC5oCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDg2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJ
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
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJJY29uVVJMX2gKKyNkZWZpbmUgV2ViSWNv
blVSTF9oCisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyNpbmNsdWRlICJJY29uVVJMLmgi
CisjZW5kaWYKKyNpbmNsdWRlICJXZWJVUkwuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Ns
YXNzIFdlYkljb25VUkwgeworcHVibGljOgorICAgIGVudW0gVHlwZSB7CisgICAgICAgIFR5cGVJ
bnZhbGlkID0gMCwKKyAgICAgICAgVHlwZUZhdmljb24gPSAxIDw8IDAsCisgICAgICAgIFR5cGVU
b3VjaCA9IDEgPDwgMSwKKyAgICAgICAgVHlwZVRvdWNoUHJlY29tcG9zZWQgPSAxIDw8IDIKKyAg
ICB9OworCisgICAgV2ViSWNvblVSTCgpCisgICAgICAgIDogbV9pY29uVHlwZShUeXBlSW52YWxp
ZCkKKyAgICB7CisgICAgfQorCisgICAgV2ViSWNvblVSTChjb25zdCBXZWJVUkwmIHVybCwgVHlw
ZSB0eXBlKQorICAgICAgICA6IG1faWNvblR5cGUodHlwZSkKKyAgICAgICAgLCBtX2ljb25VUkwo
dXJsKQorICAgIHsKKyAgICB9CisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICBXZWJJ
Y29uVVJMKGNvbnN0IFdlYkNvcmU6Okljb25VUkwmIGljb25VUkwpCisgICAgICAgIDogbV9pY29u
VHlwZShzdGF0aWNfY2FzdDxUeXBlPihpY29uVVJMLm1faWNvblR5cGUpKQorICAgICAgICAsIG1f
aWNvblVSTChpY29uVVJMLm1faWNvblVSTCkKKyAgICB7CisgICAgfQorI2VuZGlmCisKKyAgICBU
eXBlIGljb25UeXBlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2ljb25UeXBlOwor
ICAgIH0KKworICAgIGNvbnN0IFdlYlVSTCYgaWNvblVSTCgpIGNvbnN0CisgICAgeworICAgICAg
ICByZXR1cm4gbV9pY29uVVJMOworICAgIH0KKworcHJpdmF0ZToKKyAgICBUeXBlIG1faWNvblR5
cGU7CisgICAgV2ViVVJMIG1faWNvblVSTDsKK307CisKK30KKworI2VuZGlmIC8vIFdlYkljb25V
UkxfaAoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViSWNvblVSTC5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51
bXMuY3BwCShyZXZpc2lvbiA4NjA4MykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fz
c2VydE1hdGNoaW5nRW51bXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niw3IEBACiAj
aW5jbHVkZSAiR2VvbG9jYXRpb25FcnJvci5oIgogI2luY2x1ZGUgIkdlb2xvY2F0aW9uUG9zaXRp
b24uaCIKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCisjaW5jbHVkZSAiSWNvblVSTC5o
IgogI2luY2x1ZGUgIklEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSURC
S2V5LmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKQEAgLTczLDYgKzc0LDcgQEAKICNpbmNs
dWRlICJXZWJHZW9sb2NhdGlvblBvc2l0aW9uLmgiCiAjaW5jbHVkZSAiV2ViSURCRmFjdG9yeS5o
IgogI2luY2x1ZGUgIldlYklEQktleS5oIgorI2luY2x1ZGUgIldlYkljb25VUkwuaCIKICNpbmNs
dWRlICJXZWJJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJXZWJNZWRpYVBsYXllci5oIgogI2lu
Y2x1ZGUgIldlYk5vdGlmaWNhdGlvblByZXNlbnRlci5oIgpAQCAtMzA0LDYgKzMwNiwxMSBAQCBD
T01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYkZvbnREZXNjCiBDT01QSUxFX0FTU0VSVF9N
QVRDSElOR19FTlVNKFdlYkZvbnREZXNjcmlwdGlvbjo6V2VpZ2h0Tm9ybWFsLCBGb250V2VpZ2h0
Tm9ybWFsKTsKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViRm9udERlc2NyaXB0aW9u
OjpXZWlnaHRCb2xkLCBGb250V2VpZ2h0Qm9sZCk7CiAKK0NPTVBJTEVfQVNTRVJUX01BVENISU5H
X0VOVU0oV2ViSWNvblVSTDo6VHlwZUludmFsaWQsIEludmFsaWRJY29uKTsKK0NPTVBJTEVfQVNT
RVJUX01BVENISU5HX0VOVU0oV2ViSWNvblVSTDo6VHlwZUZhdmljb24sIEZhdmljb24pOworQ09N
UElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJY29uVVJMOjpUeXBlVG91Y2gsIFRvdWNoSWNv
bik7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYkljb25VUkw6OlR5cGVUb3VjaFBy
ZWNvbXBvc2VkLCBUb3VjaFByZWNvbXBvc2VkSWNvbik7CisKIENPTVBJTEVfQVNTRVJUX01BVENI
SU5HX0VOVU0oV2ViTm9kZTo6RWxlbWVudE5vZGUsIE5vZGU6OkVMRU1FTlRfTk9ERSk7CiBDT01Q
SUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYk5vZGU6OkF0dHJpYnV0ZU5vZGUsIE5vZGU6OkFU
VFJJQlVURV9OT0RFKTsKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViTm9kZTo6VGV4
dE5vZGUsIE5vZGU6OlRFWFRfTk9ERSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAJKHJldmlzaW9uIDg2MDgzKQor
KysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzYwLDcgKzc2MCw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRJ
bXBsOjpkaXNwYXRjaERpZFIKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaERp
ZENoYW5nZUljb25zKFdlYkNvcmU6Okljb25UeXBlIHR5cGUpCiB7CiAgICAgaWYgKG1fd2ViRnJh
bWUtPmNsaWVudCgpKQotICAgICAgICBtX3dlYkZyYW1lLT5jbGllbnQoKS0+ZGlkQ2hhbmdlSWNv
bnMobV93ZWJGcmFtZSk7CisgICAgICAgIG1fd2ViRnJhbWUtPmNsaWVudCgpLT5kaWRDaGFuZ2VJ
Y29uKG1fd2ViRnJhbWUsIHN0YXRpY19jYXN0PFdlYkljb25VUkw6OlR5cGU+KHR5cGUpKTsKIH0K
IAogdm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAJKHJldmlz
aW9uIDg2MDgzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDYgKzEwMSw3IEBACiAjaW5jbHVkZSAiSFRNTE5hbWVz
LmgiCiAjaW5jbHVkZSAiSGlzdG9yeUl0ZW0uaCIKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0Lmgi
CisjaW5jbHVkZSAiSWNvblVSTC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIK
ICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAicGFpbnRpbmcvR3JhcGhpY3NDb250ZXh0QnVp
bGRlci5oIgpAQCAtMTM3LDYgKzEzOCw3IEBACiAjaW5jbHVkZSAiV2ViRm9ybUVsZW1lbnQuaCIK
ICNpbmNsdWRlICJXZWJGcmFtZUNsaWVudC5oIgogI2luY2x1ZGUgIldlYkhpc3RvcnlJdGVtLmgi
CisjaW5jbHVkZSAiV2ViSWNvblVSTC5oIgogI2luY2x1ZGUgIldlYklucHV0RWxlbWVudC5oIgog
I2luY2x1ZGUgIldlYk5vZGUuaCIKICNpbmNsdWRlICJXZWJQYXNzd29yZEF1dG9jb21wbGV0ZUxp
c3RlbmVyLmgiCkBAIC01MjAsMTUgKzUyMiwyNSBAQCBXZWJVUkwgV2ViRnJhbWVJbXBsOjp1cmwo
KSBjb25zdAogCiBXZWJVUkwgV2ViRnJhbWVJbXBsOjpmYXZJY29uVVJMKCkgY29uc3QKIHsKKyAg
ICBXZWJWZWN0b3I8V2ViSWNvblVSTD4gdXJscyA9IGljb25VUkxzKFdlYkljb25VUkw6OlR5cGVG
YXZpY29uKTsKKyAgICBpZiAodXJscy5zaXplKCkpCisgICAgICAgIHJldHVybiB1cmxzWzBdLmlj
b25VUkwoKTsKKyAgICByZXR1cm4gV2ViVVJMKCk7Cit9CisKK1dlYlZlY3RvcjxXZWJJY29uVVJM
PiBXZWJGcmFtZUltcGw6Omljb25VUkxzKGludCB3ZWJJY29uVHlwZXMpIGNvbnN0Cit7CiAgICAg
RnJhbWVMb2FkZXIqIGZyYW1lTG9hZGVyID0gbV9mcmFtZS0+bG9hZGVyKCk7Ci0gICAgLy8gVGhl
IFVSTCB0byB0aGUgZmF2aWNvbiBtYXkgYmUgaW4gdGhlIGhlYWRlci4gQXMgc3VjaCwgb25seQot
ICAgIC8vIGFzayB0aGUgbG9hZGVyIGZvciB0aGUgZmF2aWNvbiBpZiBpdCdzIGZpbmlzaGVkIGxv
YWRpbmcuCisgICAgLy8gVGhlIFVSTCB0byB0aGUgaWNvbiBtYXkgYmUgaW4gdGhlIGhlYWRlci4g
QXMgc3VjaCwgb25seQorICAgIC8vIGFzayB0aGUgbG9hZGVyIGZvciB0aGUgaWNvbiBpZiBpdCdz
IGZpbmlzaGVkIGxvYWRpbmcuCiAgICAgaWYgKGZyYW1lTG9hZGVyLT5zdGF0ZSgpID09IEZyYW1l
U3RhdGVDb21wbGV0ZSkgewotICAgICAgICBjb25zdCBLVVJMJiB1cmwgPSBmcmFtZUxvYWRlci0+
aWNvblVSTCgpOwotICAgICAgICBpZiAoIXVybC5pc0VtcHR5KCkpCi0gICAgICAgICAgICByZXR1
cm4gdXJsOworICAgICAgICBWZWN0b3I8V2ViQ29yZTo6SWNvblVSTD4gaWNvblVSTHMgPSBmcmFt
ZUxvYWRlci0+aWNvblVSTHMod2ViSWNvblR5cGVzKTsKKyAgICAgICAgV2ViVmVjdG9yPFdlYklj
b25VUkw+IHdlYkljb25VUkxzKGljb25VUkxzLnNpemUoKSk7CisgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgaWNvblVSTHMuc2l6ZSgpOyBpKyspCisgICAgICAgICAgICB3ZWJJY29uVVJM
c1tpXSA9IGljb25VUkxzW2ldOworICAgICAgICByZXR1cm4gd2ViSWNvblVSTHM7CiAgICAgfQot
ICAgIHJldHVybiBXZWJVUkwoKTsKKyAgICByZXR1cm4gV2ViVmVjdG9yPFdlYkljb25VUkw+KCk7
CiB9CiAKIFdlYlVSTCBXZWJGcmFtZUltcGw6Om9wZW5TZWFyY2hEZXNjcmlwdGlvblVSTCgpIGNv
bnN0CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuaAkocmV2
aXNpb24gODYwODMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwu
aAkod29ya2luZyBjb3B5KQpAQCAtNzEsNiArNzEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBs
b25nIGxvbmcgaWRlbnRpZmllcigpIGNvbnN0OwogICAgIHZpcnR1YWwgV2ViVVJMIHVybCgpIGNv
bnN0OwogICAgIHZpcnR1YWwgV2ViVVJMIGZhdkljb25VUkwoKSBjb25zdDsKKyAgICB2aXJ0dWFs
IFdlYlZlY3RvcjxXZWJJY29uVVJMPiBpY29uVVJMcyhpbnQgaWNvblR5cGVzKSBjb25zdDsKICAg
ICB2aXJ0dWFsIFdlYlVSTCBvcGVuU2VhcmNoRGVzY3JpcHRpb25VUkwoKSBjb25zdDsKICAgICB2
aXJ0dWFsIFdlYlN0cmluZyBlbmNvZGluZygpIGNvbnN0OwogICAgIHZpcnR1YWwgV2ViU2l6ZSBz
Y3JvbGxPZmZzZXQoKSBjb25zdDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93147</attachid>
            <date>2011-05-11 11:10:08 -0700</date>
            <delta_ts>2011-05-11 13:59:53 -0700</delta_ts>
            <desc>Revert the method in WebFrameClient.h to make the transient easy.</desc>
            <filename>patch.12</filename>
            <type>text/plain</type>
            <size>12219</size>
            <attacher>michaelbai</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA4NjE1NykKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzIg
QEAKKzIwMTEtMDUtMTAgIFRhbyBCYWkgIDxtaWNoYWVsYmFpQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBIYW5kbGUgdGhlIHRv
dWNoIGljb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02MDI0NworCisgICAgICAgIEFkZGVkIFdlYkljb25VUkwgZm9yIHRoZSBjb3JyZXNwb25kaW5n
IEljb25VUkwuCisgICAgICAgIEFkZGVkIGEgcGFyYW1ldGVyIHRvIGZhdkljb25VUkwoKSB0byBz
cGVjaWZ5IHRoZSB0eXBlIG9mIGljb24gbmVlZCB0bworICAgICAgICByZXR1cm4uCisgICAgICAg
IFJvbGxiYWNrIHRoZSBwcmV2aW91cyBmYXZJY29uVVJMKCksIHNvIGl0IGNhbiBiZSBjb21waWxl
ZCBpbiBDaHJvbWl1bQorICAgICAgICBhbmQgd2lsbCByZW1vdmUgaXQgbGF0ZXIuIAorCisgICAg
ICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBmZWF0dXJlcy5neXBpOgorICAgICAgICAqIHB1
YmxpYy9XZWJGcmFtZS5oOgorICAgICAgICAqIHB1YmxpYy9XZWJGcmFtZUNsaWVudC5oOgorICAg
ICAgICAoV2ViS2l0OjpXZWJGcmFtZUNsaWVudDo6ZGlkQ2hhbmdlSWNvbnMpOgorICAgICAgICAq
IHB1YmxpYy9XZWJJY29uVVJMLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJJY29uVVJM
OjpXZWJJY29uVVJMKToKKyAgICAgICAgKFdlYktpdDo6V2ViSWNvblVSTDo6aWNvblR5cGUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJY29uVVJMOjppY29uVVJMKToKKyAgICAgICAgKiBzcmMvQXNz
ZXJ0TWF0Y2hpbmdFbnVtcy5jcHA6CisgICAgICAgICogc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1w
bC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlzcGF0Y2hE
aWRDaGFuZ2VJY29ucyk6CisgICAgICAgICogc3JjL1dlYkZyYW1lSW1wbC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkZyYW1lSW1wbDo6ZmF2SWNvblVSTCk6CisgICAgICAgICogc3JjL1dlYkZy
YW1lSW1wbC5oOgorCiAyMDExLTA1LTEwICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgQXR0ZW1wdCB0byBmaXggdGhlIGNsYW5nIGJ1aWxkLgpJbmRleDogU291cmNl
L1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vV2ViS2l0Lmd5cAkocmV2aXNpb24gODYwODMpCisrKyBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL1dlYktpdC5neXAJKHdvcmtpbmcgY29weSkKQEAgLTE4NSw2ICsxODUsNyBAQAogICAg
ICAgICAgICAgICAgICdwdWJsaWMvV2ViSFRUUEJvZHkuaCcsCiAgICAgICAgICAgICAgICAgJ3B1
YmxpYy9XZWJIVFRQTG9hZEluZm8uaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJJY29u
TG9hZGluZ0NvbXBsZXRpb24uaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJJY29uVHlw
ZS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkltYWdlLmgnLAogICAgICAgICAgICAg
ICAgICdwdWJsaWMvV2ViSW1hZ2VEZWNvZGVyLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMv
V2ViSURCQ2FsbGJhY2tzLmgnLApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJl
cy5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lw
aQkocmV2aXNpb24gODYwODMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5
cGkJKHdvcmtpbmcgY29weSkKQEAgLTg4LDYgKzg4LDcgQEAKICAgICAgICAgJ0VOQUJMRV9TVkdf
Rk9SRUlHTl9PQkpFQ1Q9MScsCiAgICAgICAgICdFTkFCTEVfU1ZHX1VTRT0xJywKICAgICAgICAg
J0VOQUJMRV9UT1VDSF9FVkVOVFM9MScsCisgICAgICAgICdFTkFCTEVfVE9VQ0hfSUNPTl9MT0FE
SU5HPTEnLAogICAgICAgICAnRU5BQkxFX1Y4X1NDUklQVF9ERUJVR19TRVJWRVI9MScsCiAgICAg
ICAgICdFTkFCTEVfVklERU89MScsCiAgICAgICAgICdFTkFCTEVfV0VCX0FVRElPPTAnLApJbmRl
eDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZS5oCShyZXZpc2lvbiA4NjA4
MykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2luY2x1ZGUgIldlYkNhbnZhcy5oIgogI2luY2x1
ZGUgIldlYkZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRlICJXZWJJY29uVVJMLmgiCiAjaW5jbHVkZSAi
V2ViTm9kZS5oIgogI2luY2x1ZGUgIldlYlVSTC5oIgogCkBAIC0xMjksMTAgKzEzMCwxNSBAQCBw
dWJsaWM6CiAgICAgLy8gZGF0YVNvdXJjZSgpLT5yZXF1ZXN0KCkudXJsKCkuCiAgICAgdmlydHVh
bCBXZWJVUkwgdXJsKCkgY29uc3QgPSAwOwogCi0gICAgLy8gVGhlIHVybCBvZiB0aGUgZmF2aWNv
biAoaWYgYW55KSBzcGVjaWZpZWQgYnkgdGhlIGRvY3VtZW50IGxvYWRlZCBpbgotICAgIC8vIHRo
aXMgZnJhbWUuCisgICAgLy8gVGhpcyBtZXRob2QgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSBy
ZW1vdmVkIHNvb24uCiAgICAgdmlydHVhbCBXZWJVUkwgZmF2SWNvblVSTCgpIGNvbnN0ID0gMDsK
IAorICAgIC8vIFRoZSB1cmxzIG9mIHRoZSBnaXZlbiBjb21iaW5hdGlvbiB0eXBlcyBvZiBmYXZp
Y29uIChpZiBhbnkpIHNwZWNpZmllZCBieQorICAgIC8vIHRoZSBkb2N1bWVudCBsb2FkZWQgaW4g
dGhpcyBmcmFtZS4gVGhlIGljb25UeXBlcyBpcyBhIGJpdC1tYXNrIG9mCisgICAgLy8gV2ViSWNv
blVSTDo6VHlwZSB2YWx1ZXMsIHNlZCB0byBzZWxlY3QgZnJvbSB0aGUgYXZhaWxhYmxlIHNldCBv
ZiBpY29uCisgICAgLy8gVVJMcworICAgIHZpcnR1YWwgV2ViVmVjdG9yPFdlYkljb25VUkw+IGlj
b25VUkxzKGludCBpY29uVHlwZXMpIGNvbnN0ID0gMDsKKwogICAgIC8vIFRoZSB1cmwgb2YgdGhl
IE9wZW5TZWFyY2ggRGVzcmlwdGlvbiBEb2N1bWVudCAoaWYgYW55KSBzcGVjaWZpZWQgYnkKICAg
ICAvLyB0aGUgZG9jdW1lbnQgbG9hZGVkIGluIHRoaXMgZnJhbWUuCiAgICAgdmlydHVhbCBXZWJV
Ukwgb3BlblNlYXJjaERlc2NyaXB0aW9uVVJMKCkgY29uc3QgPSAwOwpJbmRleDogU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oCShyZXZpc2lvbiA4NjA4
MykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lQ2xpZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2luY2x1ZGUgIldlYkNvbW1vbi5oIgog
I2luY2x1ZGUgIldlYkZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRlICJXZWJJY29uVVJMLmgiCiAjaW5j
bHVkZSAiV2ViTmF2aWdhdGlvblBvbGljeS5oIgogI2luY2x1ZGUgIldlYk5hdmlnYXRpb25UeXBl
LmgiCiAjaW5jbHVkZSAiV2ViU3RvcmFnZVF1b3RhVHlwZS5oIgpAQCAtMjAxLDkgKzIwMiwxMiBA
QCBwdWJsaWM6CiAgICAgICAgIGRpZFJlY2VpdmVUaXRsZShmcmFtZSwgdGl0bGUpOwogICAgIH0K
IAotICAgIC8vIFRoZSBpY29ucyBmb3IgdGhlIHBhZ2UgaGF2ZSBjaGFuZ2VkLgorICAgIC8vIFRo
aXMgbWV0aG9kIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBzb29uLgogICAgIHZp
cnR1YWwgdm9pZCBkaWRDaGFuZ2VJY29ucyhXZWJGcmFtZSopIHsgfQogCisgICAgLy8gVGhlIGlj
b24gZm9yIHRoZSBwYWdlIGhhdmUgY2hhbmdlZC4KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdl
SWNvbihXZWJGcmFtZSosIFdlYkljb25VUkw6OlR5cGUpIHsgfQorCiAgICAgLy8gVGhlIGZyYW1l
J3MgZG9jdW1lbnQgZmluaXNoZWQgbG9hZGluZy4KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNo
RG9jdW1lbnRMb2FkKFdlYkZyYW1lKikgeyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYkljb25VUkwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJJY29uVVJMLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJJY29uVVJMLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
ICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIFdlYkljb25VUkxfaAorI2RlZmluZSBXZWJJY29uVVJMX2gKKworI2lmIFdFQktJVF9J
TVBMRU1FTlRBVElPTgorI2luY2x1ZGUgIkljb25VUkwuaCIKKyNlbmRpZgorI2luY2x1ZGUgIldl
YlVSTC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViSWNvblVSTCB7CitwdWJs
aWM6CisgICAgZW51bSBUeXBlIHsKKyAgICAgICAgVHlwZUludmFsaWQgPSAwLAorICAgICAgICBU
eXBlRmF2aWNvbiA9IDEgPDwgMCwKKyAgICAgICAgVHlwZVRvdWNoID0gMSA8PCAxLAorICAgICAg
ICBUeXBlVG91Y2hQcmVjb21wb3NlZCA9IDEgPDwgMgorICAgIH07CisKKyAgICBXZWJJY29uVVJM
KCkKKyAgICAgICAgOiBtX2ljb25UeXBlKFR5cGVJbnZhbGlkKQorICAgIHsKKyAgICB9CisKKyAg
ICBXZWJJY29uVVJMKGNvbnN0IFdlYlVSTCYgdXJsLCBUeXBlIHR5cGUpCisgICAgICAgIDogbV9p
Y29uVHlwZSh0eXBlKQorICAgICAgICAsIG1faWNvblVSTCh1cmwpCisgICAgeworICAgIH0KKwor
I2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorICAgIFdlYkljb25VUkwoY29uc3QgV2ViQ29yZTo6
SWNvblVSTCYgaWNvblVSTCkKKyAgICAgICAgOiBtX2ljb25UeXBlKHN0YXRpY19jYXN0PFR5cGU+
KGljb25VUkwubV9pY29uVHlwZSkpCisgICAgICAgICwgbV9pY29uVVJMKGljb25VUkwubV9pY29u
VVJMKQorICAgIHsKKyAgICB9CisjZW5kaWYKKworICAgIFR5cGUgaWNvblR5cGUoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG1faWNvblR5cGU7CisgICAgfQorCisgICAgY29uc3QgV2Vi
VVJMJiBpY29uVVJMKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2ljb25VUkw7Cisg
ICAgfQorCitwcml2YXRlOgorICAgIFR5cGUgbV9pY29uVHlwZTsKKyAgICBXZWJVUkwgbV9pY29u
VVJMOworfTsKKworfQorCisjZW5kaWYgLy8gV2ViSWNvblVSTF9oCgpQcm9wZXJ0eSBjaGFuZ2Vz
IG9uOiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJY29uVVJMLmgKX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
XwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDogU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAJKHJldmlzaW9uIDg2MDgz
KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJHZW9sb2NhdGlvbkVy
cm9yLmgiCiAjaW5jbHVkZSAiR2VvbG9jYXRpb25Qb3NpdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxJ
bnB1dEVsZW1lbnQuaCIKKyNpbmNsdWRlICJJY29uVVJMLmgiCiAjaW5jbHVkZSAiSURCRmFjdG9y
eUJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJJREJLZXkuaCIKICNpbmNsdWRlICJNZWRp
YVBsYXllci5oIgpAQCAtNzMsNiArNzQsNyBAQAogI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uUG9z
aXRpb24uaCIKICNpbmNsdWRlICJXZWJJREJGYWN0b3J5LmgiCiAjaW5jbHVkZSAiV2ViSURCS2V5
LmgiCisjaW5jbHVkZSAiV2ViSWNvblVSTC5oIgogI2luY2x1ZGUgIldlYklucHV0RWxlbWVudC5o
IgogI2luY2x1ZGUgIldlYk1lZGlhUGxheWVyLmgiCiAjaW5jbHVkZSAiV2ViTm90aWZpY2F0aW9u
UHJlc2VudGVyLmgiCkBAIC0zMDQsNiArMzA2LDExIEBAIENPTVBJTEVfQVNTRVJUX01BVENISU5H
X0VOVU0oV2ViRm9udERlc2MKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViRm9udERl
c2NyaXB0aW9uOjpXZWlnaHROb3JtYWwsIEZvbnRXZWlnaHROb3JtYWwpOwogQ09NUElMRV9BU1NF
UlRfTUFUQ0hJTkdfRU5VTShXZWJGb250RGVzY3JpcHRpb246OldlaWdodEJvbGQsIEZvbnRXZWln
aHRCb2xkKTsKIAorQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJY29uVVJMOjpUeXBl
SW52YWxpZCwgSW52YWxpZEljb24pOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJ
Y29uVVJMOjpUeXBlRmF2aWNvbiwgRmF2aWNvbik7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19F
TlVNKFdlYkljb25VUkw6OlR5cGVUb3VjaCwgVG91Y2hJY29uKTsKK0NPTVBJTEVfQVNTRVJUX01B
VENISU5HX0VOVU0oV2ViSWNvblVSTDo6VHlwZVRvdWNoUHJlY29tcG9zZWQsIFRvdWNoUHJlY29t
cG9zZWRJY29uKTsKKwogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJOb2RlOjpFbGVt
ZW50Tm9kZSwgTm9kZTo6RUxFTUVOVF9OT0RFKTsKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VO
VU0oV2ViTm9kZTo6QXR0cmlidXRlTm9kZSwgTm9kZTo6QVRUUklCVVRFX05PREUpOwogQ09NUElM
RV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJOb2RlOjpUZXh0Tm9kZSwgTm9kZTo6VEVYVF9OT0RF
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1w
bC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2Fk
ZXJDbGllbnRJbXBsLmNwcAkocmV2aXNpb24gODYwODMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NTks
OCArNzU5LDEyIEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaERpZFIKIAog
dm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoV2ViQ29y
ZTo6SWNvblR5cGUgdHlwZSkKIHsKLSAgICBpZiAobV93ZWJGcmFtZS0+Y2xpZW50KCkpCi0gICAg
ICAgIG1fd2ViRnJhbWUtPmNsaWVudCgpLT5kaWRDaGFuZ2VJY29ucyhtX3dlYkZyYW1lKTsKKyAg
ICBpZiAobV93ZWJGcmFtZS0+Y2xpZW50KCkpIHsKKyAgICAgICAgbV93ZWJGcmFtZS0+Y2xpZW50
KCktPmRpZENoYW5nZUljb24obV93ZWJGcmFtZSwgc3RhdGljX2Nhc3Q8V2ViSWNvblVSTDo6VHlw
ZT4odHlwZSkpOworICAgICAgICAvLyBLZWVwIHRoZSBBUEkgd29yayBpbiB0aGUgdHJhbnNpZW50
LgorICAgICAgICBpZiAodHlwZSA9PSBXZWJDb3JlOjpGYXZpY29uKQorICAgICAgICAgICAgbV93
ZWJGcmFtZS0+Y2xpZW50KCktPmRpZENoYW5nZUljb25zKG1fd2ViRnJhbWUpOworICAgIH0KIH0K
IAogdm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAJKHJldmlz
aW9uIDg2MDgzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDYgKzEwMSw3IEBACiAjaW5jbHVkZSAiSFRNTE5hbWVz
LmgiCiAjaW5jbHVkZSAiSGlzdG9yeUl0ZW0uaCIKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0Lmgi
CisjaW5jbHVkZSAiSWNvblVSTC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIK
ICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAicGFpbnRpbmcvR3JhcGhpY3NDb250ZXh0QnVp
bGRlci5oIgpAQCAtMTM3LDYgKzEzOCw3IEBACiAjaW5jbHVkZSAiV2ViRm9ybUVsZW1lbnQuaCIK
ICNpbmNsdWRlICJXZWJGcmFtZUNsaWVudC5oIgogI2luY2x1ZGUgIldlYkhpc3RvcnlJdGVtLmgi
CisjaW5jbHVkZSAiV2ViSWNvblVSTC5oIgogI2luY2x1ZGUgIldlYklucHV0RWxlbWVudC5oIgog
I2luY2x1ZGUgIldlYk5vZGUuaCIKICNpbmNsdWRlICJXZWJQYXNzd29yZEF1dG9jb21wbGV0ZUxp
c3RlbmVyLmgiCkBAIC01MjAsMTUgKzUyMiwyNSBAQCBXZWJVUkwgV2ViRnJhbWVJbXBsOjp1cmwo
KSBjb25zdAogCiBXZWJVUkwgV2ViRnJhbWVJbXBsOjpmYXZJY29uVVJMKCkgY29uc3QKIHsKKyAg
ICBXZWJWZWN0b3I8V2ViSWNvblVSTD4gdXJscyA9IGljb25VUkxzKFdlYkljb25VUkw6OlR5cGVG
YXZpY29uKTsKKyAgICBpZiAodXJscy5zaXplKCkpCisgICAgICAgIHJldHVybiB1cmxzWzBdLmlj
b25VUkwoKTsKKyAgICByZXR1cm4gV2ViVVJMKCk7Cit9CisKK1dlYlZlY3RvcjxXZWJJY29uVVJM
PiBXZWJGcmFtZUltcGw6Omljb25VUkxzKGludCB3ZWJJY29uVHlwZXMpIGNvbnN0Cit7CiAgICAg
RnJhbWVMb2FkZXIqIGZyYW1lTG9hZGVyID0gbV9mcmFtZS0+bG9hZGVyKCk7Ci0gICAgLy8gVGhl
IFVSTCB0byB0aGUgZmF2aWNvbiBtYXkgYmUgaW4gdGhlIGhlYWRlci4gQXMgc3VjaCwgb25seQot
ICAgIC8vIGFzayB0aGUgbG9hZGVyIGZvciB0aGUgZmF2aWNvbiBpZiBpdCdzIGZpbmlzaGVkIGxv
YWRpbmcuCisgICAgLy8gVGhlIFVSTCB0byB0aGUgaWNvbiBtYXkgYmUgaW4gdGhlIGhlYWRlci4g
QXMgc3VjaCwgb25seQorICAgIC8vIGFzayB0aGUgbG9hZGVyIGZvciB0aGUgaWNvbiBpZiBpdCdz
IGZpbmlzaGVkIGxvYWRpbmcuCiAgICAgaWYgKGZyYW1lTG9hZGVyLT5zdGF0ZSgpID09IEZyYW1l
U3RhdGVDb21wbGV0ZSkgewotICAgICAgICBjb25zdCBLVVJMJiB1cmwgPSBmcmFtZUxvYWRlci0+
aWNvblVSTCgpOwotICAgICAgICBpZiAoIXVybC5pc0VtcHR5KCkpCi0gICAgICAgICAgICByZXR1
cm4gdXJsOworICAgICAgICBWZWN0b3I8V2ViQ29yZTo6SWNvblVSTD4gaWNvblVSTHMgPSBmcmFt
ZUxvYWRlci0+aWNvblVSTHMod2ViSWNvblR5cGVzKTsKKyAgICAgICAgV2ViVmVjdG9yPFdlYklj
b25VUkw+IHdlYkljb25VUkxzKGljb25VUkxzLnNpemUoKSk7CisgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgaWNvblVSTHMuc2l6ZSgpOyBpKyspCisgICAgICAgICAgICB3ZWJJY29uVVJM
c1tpXSA9IGljb25VUkxzW2ldOworICAgICAgICByZXR1cm4gd2ViSWNvblVSTHM7CiAgICAgfQot
ICAgIHJldHVybiBXZWJVUkwoKTsKKyAgICByZXR1cm4gV2ViVmVjdG9yPFdlYkljb25VUkw+KCk7
CiB9CiAKIFdlYlVSTCBXZWJGcmFtZUltcGw6Om9wZW5TZWFyY2hEZXNjcmlwdGlvblVSTCgpIGNv
bnN0CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuaAkocmV2
aXNpb24gODYwODMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwu
aAkod29ya2luZyBjb3B5KQpAQCAtNzEsNiArNzEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBs
b25nIGxvbmcgaWRlbnRpZmllcigpIGNvbnN0OwogICAgIHZpcnR1YWwgV2ViVVJMIHVybCgpIGNv
bnN0OwogICAgIHZpcnR1YWwgV2ViVVJMIGZhdkljb25VUkwoKSBjb25zdDsKKyAgICB2aXJ0dWFs
IFdlYlZlY3RvcjxXZWJJY29uVVJMPiBpY29uVVJMcyhpbnQgaWNvblR5cGVzKSBjb25zdDsKICAg
ICB2aXJ0dWFsIFdlYlVSTCBvcGVuU2VhcmNoRGVzY3JpcHRpb25VUkwoKSBjb25zdDsKICAgICB2
aXJ0dWFsIFdlYlN0cmluZyBlbmNvZGluZygpIGNvbnN0OwogICAgIHZpcnR1YWwgV2ViU2l6ZSBz
Y3JvbGxPZmZzZXQoKSBjb25zdDsK
</data>
<flag name="review"
          id="86252"
          type_id="1"
          status="-"
          setter="fishd"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93180</attachid>
            <date>2011-05-11 13:59:53 -0700</date>
            <delta_ts>2011-05-11 15:16:23 -0700</delta_ts>
            <desc>Address the comment</desc>
            <filename>patch.12</filename>
            <type>text/plain</type>
            <size>12219</size>
            <attacher>michaelbai</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA4NjE1NykKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzIg
QEAKKzIwMTEtMDUtMTAgIFRhbyBCYWkgIDxtaWNoYWVsYmFpQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBIYW5kbGUgdGhlIHRv
dWNoIGljb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02MDI0NworCisgICAgICAgIEFkZGVkIFdlYkljb25VUkwgZm9yIHRoZSBjb3JyZXNwb25kaW5n
IEljb25VUkwuCisgICAgICAgIEFkZGVkIGEgcGFyYW1ldGVyIHRvIGZhdkljb25VUkwoKSB0byBz
cGVjaWZ5IHRoZSB0eXBlIG9mIGljb24gbmVlZCB0bworICAgICAgICByZXR1cm4uCisgICAgICAg
IFJvbGxiYWNrIHRoZSBwcmV2aW91cyBmYXZJY29uVVJMKCksIHNvIGl0IGNhbiBiZSBjb21waWxl
ZCBpbiBDaHJvbWl1bQorICAgICAgICBhbmQgd2lsbCByZW1vdmUgaXQgbGF0ZXIuIAorCisgICAg
ICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBmZWF0dXJlcy5neXBpOgorICAgICAgICAqIHB1
YmxpYy9XZWJGcmFtZS5oOgorICAgICAgICAqIHB1YmxpYy9XZWJGcmFtZUNsaWVudC5oOgorICAg
ICAgICAoV2ViS2l0OjpXZWJGcmFtZUNsaWVudDo6ZGlkQ2hhbmdlSWNvbnMpOgorICAgICAgICAq
IHB1YmxpYy9XZWJJY29uVVJMLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJJY29uVVJM
OjpXZWJJY29uVVJMKToKKyAgICAgICAgKFdlYktpdDo6V2ViSWNvblVSTDo6aWNvblR5cGUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJY29uVVJMOjppY29uVVJMKToKKyAgICAgICAgKiBzcmMvQXNz
ZXJ0TWF0Y2hpbmdFbnVtcy5jcHA6CisgICAgICAgICogc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1w
bC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlzcGF0Y2hE
aWRDaGFuZ2VJY29ucyk6CisgICAgICAgICogc3JjL1dlYkZyYW1lSW1wbC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkZyYW1lSW1wbDo6ZmF2SWNvblVSTCk6CisgICAgICAgICogc3JjL1dlYkZy
YW1lSW1wbC5oOgorCiAyMDExLTA1LTEwICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgQXR0ZW1wdCB0byBmaXggdGhlIGNsYW5nIGJ1aWxkLgpJbmRleDogU291cmNl
L1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vV2ViS2l0Lmd5cAkocmV2aXNpb24gODYwODMpCisrKyBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL1dlYktpdC5neXAJKHdvcmtpbmcgY29weSkKQEAgLTE4NSw2ICsxODUsNyBAQAogICAg
ICAgICAgICAgICAgICdwdWJsaWMvV2ViSFRUUEJvZHkuaCcsCiAgICAgICAgICAgICAgICAgJ3B1
YmxpYy9XZWJIVFRQTG9hZEluZm8uaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJJY29u
TG9hZGluZ0NvbXBsZXRpb24uaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJJY29uVHlw
ZS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkltYWdlLmgnLAogICAgICAgICAgICAg
ICAgICdwdWJsaWMvV2ViSW1hZ2VEZWNvZGVyLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMv
V2ViSURCQ2FsbGJhY2tzLmgnLApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJl
cy5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lw
aQkocmV2aXNpb24gODYwODMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5
cGkJKHdvcmtpbmcgY29weSkKQEAgLTg4LDYgKzg4LDcgQEAKICAgICAgICAgJ0VOQUJMRV9TVkdf
Rk9SRUlHTl9PQkpFQ1Q9MScsCiAgICAgICAgICdFTkFCTEVfU1ZHX1VTRT0xJywKICAgICAgICAg
J0VOQUJMRV9UT1VDSF9FVkVOVFM9MScsCisgICAgICAgICdFTkFCTEVfVE9VQ0hfSUNPTl9MT0FE
SU5HPTEnLAogICAgICAgICAnRU5BQkxFX1Y4X1NDUklQVF9ERUJVR19TRVJWRVI9MScsCiAgICAg
ICAgICdFTkFCTEVfVklERU89MScsCiAgICAgICAgICdFTkFCTEVfV0VCX0FVRElPPTAnLApJbmRl
eDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZS5oCShyZXZpc2lvbiA4NjA4
MykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2luY2x1ZGUgIldlYkNhbnZhcy5oIgogI2luY2x1
ZGUgIldlYkZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRlICJXZWJJY29uVVJMLmgiCiAjaW5jbHVkZSAi
V2ViTm9kZS5oIgogI2luY2x1ZGUgIldlYlVSTC5oIgogCkBAIC0xMjksMTAgKzEzMCwxNSBAQCBw
dWJsaWM6CiAgICAgLy8gZGF0YVNvdXJjZSgpLT5yZXF1ZXN0KCkudXJsKCkuCiAgICAgdmlydHVh
bCBXZWJVUkwgdXJsKCkgY29uc3QgPSAwOwogCi0gICAgLy8gVGhlIHVybCBvZiB0aGUgZmF2aWNv
biAoaWYgYW55KSBzcGVjaWZpZWQgYnkgdGhlIGRvY3VtZW50IGxvYWRlZCBpbgotICAgIC8vIHRo
aXMgZnJhbWUuCisgICAgLy8gVGhpcyBtZXRob2QgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSBy
ZW1vdmVkIHNvb24uCiAgICAgdmlydHVhbCBXZWJVUkwgZmF2SWNvblVSTCgpIGNvbnN0ID0gMDsK
IAorICAgIC8vIFRoZSB1cmxzIG9mIHRoZSBnaXZlbiBjb21iaW5hdGlvbiB0eXBlcyBvZiBmYXZp
Y29uIChpZiBhbnkpIHNwZWNpZmllZCBieQorICAgIC8vIHRoZSBkb2N1bWVudCBsb2FkZWQgaW4g
dGhpcyBmcmFtZS4gVGhlIGljb25UeXBlcyBpcyBhIGJpdC1tYXNrIG9mCisgICAgLy8gV2ViSWNv
blVSTDo6VHlwZSB2YWx1ZXMsIHNlZCB0byBzZWxlY3QgZnJvbSB0aGUgYXZhaWxhYmxlIHNldCBv
ZiBpY29uCisgICAgLy8gVVJMcworICAgIHZpcnR1YWwgV2ViVmVjdG9yPFdlYkljb25VUkw+IGlj
b25VUkxzKGludCBpY29uVHlwZXMpIGNvbnN0ID0gMDsKKwogICAgIC8vIFRoZSB1cmwgb2YgdGhl
IE9wZW5TZWFyY2ggRGVzcmlwdGlvbiBEb2N1bWVudCAoaWYgYW55KSBzcGVjaWZpZWQgYnkKICAg
ICAvLyB0aGUgZG9jdW1lbnQgbG9hZGVkIGluIHRoaXMgZnJhbWUuCiAgICAgdmlydHVhbCBXZWJV
Ukwgb3BlblNlYXJjaERlc2NyaXB0aW9uVVJMKCkgY29uc3QgPSAwOwpJbmRleDogU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oCShyZXZpc2lvbiA4NjA4
MykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lQ2xpZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2luY2x1ZGUgIldlYkNvbW1vbi5oIgog
I2luY2x1ZGUgIldlYkZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRlICJXZWJJY29uVVJMLmgiCiAjaW5j
bHVkZSAiV2ViTmF2aWdhdGlvblBvbGljeS5oIgogI2luY2x1ZGUgIldlYk5hdmlnYXRpb25UeXBl
LmgiCiAjaW5jbHVkZSAiV2ViU3RvcmFnZVF1b3RhVHlwZS5oIgpAQCAtMjAxLDkgKzIwMiwxMiBA
QCBwdWJsaWM6CiAgICAgICAgIGRpZFJlY2VpdmVUaXRsZShmcmFtZSwgdGl0bGUpOwogICAgIH0K
IAotICAgIC8vIFRoZSBpY29ucyBmb3IgdGhlIHBhZ2UgaGF2ZSBjaGFuZ2VkLgorICAgIC8vIFRo
aXMgbWV0aG9kIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBzb29uLgogICAgIHZp
cnR1YWwgdm9pZCBkaWRDaGFuZ2VJY29ucyhXZWJGcmFtZSopIHsgfQogCisgICAgLy8gVGhlIGlj
b24gZm9yIHRoZSBwYWdlIGhhdmUgY2hhbmdlZC4KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdl
SWNvbihXZWJGcmFtZSosIFdlYkljb25VUkw6OlR5cGUpIHsgfQorCiAgICAgLy8gVGhlIGZyYW1l
J3MgZG9jdW1lbnQgZmluaXNoZWQgbG9hZGluZy4KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNo
RG9jdW1lbnRMb2FkKFdlYkZyYW1lKikgeyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYkljb25VUkwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJJY29uVVJMLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJJY29uVVJMLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
ICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIFdlYkljb25VUkxfaAorI2RlZmluZSBXZWJJY29uVVJMX2gKKworI2lmIFdFQktJVF9J
TVBMRU1FTlRBVElPTgorI2luY2x1ZGUgIkljb25VUkwuaCIKKyNlbmRpZgorI2luY2x1ZGUgIldl
YlVSTC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViSWNvblVSTCB7CitwdWJs
aWM6CisgICAgZW51bSBUeXBlIHsKKyAgICAgICAgVHlwZUludmFsaWQgPSAwLAorICAgICAgICBU
eXBlRmF2aWNvbiA9IDEgPDwgMCwKKyAgICAgICAgVHlwZVRvdWNoID0gMSA8PCAxLAorICAgICAg
ICBUeXBlVG91Y2hQcmVjb21wb3NlZCA9IDEgPDwgMgorICAgIH07CisKKyAgICBXZWJJY29uVVJM
KCkKKyAgICAgICAgOiBtX2ljb25UeXBlKFR5cGVJbnZhbGlkKQorICAgIHsKKyAgICB9CisKKyAg
ICBXZWJJY29uVVJMKGNvbnN0IFdlYlVSTCYgdXJsLCBUeXBlIHR5cGUpCisgICAgICAgIDogbV9p
Y29uVHlwZSh0eXBlKQorICAgICAgICAsIG1faWNvblVSTCh1cmwpCisgICAgeworICAgIH0KKwor
I2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorICAgIFdlYkljb25VUkwoY29uc3QgV2ViQ29yZTo6
SWNvblVSTCYgaWNvblVSTCkKKyAgICAgICAgOiBtX2ljb25UeXBlKHN0YXRpY19jYXN0PFR5cGU+
KGljb25VUkwubV9pY29uVHlwZSkpCisgICAgICAgICwgbV9pY29uVVJMKGljb25VUkwubV9pY29u
VVJMKQorICAgIHsKKyAgICB9CisjZW5kaWYKKworICAgIFR5cGUgaWNvblR5cGUoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG1faWNvblR5cGU7CisgICAgfQorCisgICAgY29uc3QgV2Vi
VVJMJiBpY29uVVJMKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2ljb25VUkw7Cisg
ICAgfQorCitwcml2YXRlOgorICAgIFR5cGUgbV9pY29uVHlwZTsKKyAgICBXZWJVUkwgbV9pY29u
VVJMOworfTsKKworfQorCisjZW5kaWYgLy8gV2ViSWNvblVSTF9oCgpQcm9wZXJ0eSBjaGFuZ2Vz
IG9uOiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJY29uVVJMLmgKX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
XwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDogU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAJKHJldmlzaW9uIDg2MDgz
KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJHZW9sb2NhdGlvbkVy
cm9yLmgiCiAjaW5jbHVkZSAiR2VvbG9jYXRpb25Qb3NpdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxJ
bnB1dEVsZW1lbnQuaCIKKyNpbmNsdWRlICJJY29uVVJMLmgiCiAjaW5jbHVkZSAiSURCRmFjdG9y
eUJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJJREJLZXkuaCIKICNpbmNsdWRlICJNZWRp
YVBsYXllci5oIgpAQCAtNzMsNiArNzQsNyBAQAogI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uUG9z
aXRpb24uaCIKICNpbmNsdWRlICJXZWJJREJGYWN0b3J5LmgiCiAjaW5jbHVkZSAiV2ViSURCS2V5
LmgiCisjaW5jbHVkZSAiV2ViSWNvblVSTC5oIgogI2luY2x1ZGUgIldlYklucHV0RWxlbWVudC5o
IgogI2luY2x1ZGUgIldlYk1lZGlhUGxheWVyLmgiCiAjaW5jbHVkZSAiV2ViTm90aWZpY2F0aW9u
UHJlc2VudGVyLmgiCkBAIC0zMDQsNiArMzA2LDExIEBAIENPTVBJTEVfQVNTRVJUX01BVENISU5H
X0VOVU0oV2ViRm9udERlc2MKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViRm9udERl
c2NyaXB0aW9uOjpXZWlnaHROb3JtYWwsIEZvbnRXZWlnaHROb3JtYWwpOwogQ09NUElMRV9BU1NF
UlRfTUFUQ0hJTkdfRU5VTShXZWJGb250RGVzY3JpcHRpb246OldlaWdodEJvbGQsIEZvbnRXZWln
aHRCb2xkKTsKIAorQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJY29uVVJMOjpUeXBl
SW52YWxpZCwgSW52YWxpZEljb24pOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJ
Y29uVVJMOjpUeXBlRmF2aWNvbiwgRmF2aWNvbik7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19F
TlVNKFdlYkljb25VUkw6OlR5cGVUb3VjaCwgVG91Y2hJY29uKTsKK0NPTVBJTEVfQVNTRVJUX01B
VENISU5HX0VOVU0oV2ViSWNvblVSTDo6VHlwZVRvdWNoUHJlY29tcG9zZWQsIFRvdWNoUHJlY29t
cG9zZWRJY29uKTsKKwogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJOb2RlOjpFbGVt
ZW50Tm9kZSwgTm9kZTo6RUxFTUVOVF9OT0RFKTsKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VO
VU0oV2ViTm9kZTo6QXR0cmlidXRlTm9kZSwgTm9kZTo6QVRUUklCVVRFX05PREUpOwogQ09NUElM
RV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJOb2RlOjpUZXh0Tm9kZSwgTm9kZTo6VEVYVF9OT0RF
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1w
bC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2Fk
ZXJDbGllbnRJbXBsLmNwcAkocmV2aXNpb24gODYwODMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NTks
OCArNzU5LDEyIEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaERpZFIKIAog
dm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoV2ViQ29y
ZTo6SWNvblR5cGUgdHlwZSkKIHsKLSAgICBpZiAobV93ZWJGcmFtZS0+Y2xpZW50KCkpCi0gICAg
ICAgIG1fd2ViRnJhbWUtPmNsaWVudCgpLT5kaWRDaGFuZ2VJY29ucyhtX3dlYkZyYW1lKTsKKyAg
ICBpZiAobV93ZWJGcmFtZS0+Y2xpZW50KCkpIHsKKyAgICAgICAgbV93ZWJGcmFtZS0+Y2xpZW50
KCktPmRpZENoYW5nZUljb24obV93ZWJGcmFtZSwgc3RhdGljX2Nhc3Q8V2ViSWNvblVSTDo6VHlw
ZT4odHlwZSkpOworICAgICAgICAvLyBLZWVwIHRoZSBBUEkgd29yayBpbiB0aGUgdHJhbnNpZW50
LgorICAgICAgICBpZiAodHlwZSA9PSBXZWJDb3JlOjpGYXZpY29uKQorICAgICAgICAgICAgbV93
ZWJGcmFtZS0+Y2xpZW50KCktPmRpZENoYW5nZUljb25zKG1fd2ViRnJhbWUpOworICAgIH0KIH0K
IAogdm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAJKHJldmlz
aW9uIDg2MDgzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDYgKzEwMSw3IEBACiAjaW5jbHVkZSAiSFRNTE5hbWVz
LmgiCiAjaW5jbHVkZSAiSGlzdG9yeUl0ZW0uaCIKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0Lmgi
CisjaW5jbHVkZSAiSWNvblVSTC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIK
ICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAicGFpbnRpbmcvR3JhcGhpY3NDb250ZXh0QnVp
bGRlci5oIgpAQCAtMTM3LDYgKzEzOCw3IEBACiAjaW5jbHVkZSAiV2ViRm9ybUVsZW1lbnQuaCIK
ICNpbmNsdWRlICJXZWJGcmFtZUNsaWVudC5oIgogI2luY2x1ZGUgIldlYkhpc3RvcnlJdGVtLmgi
CisjaW5jbHVkZSAiV2ViSWNvblVSTC5oIgogI2luY2x1ZGUgIldlYklucHV0RWxlbWVudC5oIgog
I2luY2x1ZGUgIldlYk5vZGUuaCIKICNpbmNsdWRlICJXZWJQYXNzd29yZEF1dG9jb21wbGV0ZUxp
c3RlbmVyLmgiCkBAIC01MjAsMTUgKzUyMiwyNSBAQCBXZWJVUkwgV2ViRnJhbWVJbXBsOjp1cmwo
KSBjb25zdAogCiBXZWJVUkwgV2ViRnJhbWVJbXBsOjpmYXZJY29uVVJMKCkgY29uc3QKIHsKKyAg
ICBXZWJWZWN0b3I8V2ViSWNvblVSTD4gdXJscyA9IGljb25VUkxzKFdlYkljb25VUkw6OlR5cGVG
YXZpY29uKTsKKyAgICBpZiAodXJscy5zaXplKCkpCisgICAgICAgIHJldHVybiB1cmxzWzBdLmlj
b25VUkwoKTsKKyAgICByZXR1cm4gV2ViVVJMKCk7Cit9CisKK1dlYlZlY3RvcjxXZWJJY29uVVJM
PiBXZWJGcmFtZUltcGw6Omljb25VUkxzKGludCB3ZWJJY29uVHlwZXMpIGNvbnN0Cit7CiAgICAg
RnJhbWVMb2FkZXIqIGZyYW1lTG9hZGVyID0gbV9mcmFtZS0+bG9hZGVyKCk7Ci0gICAgLy8gVGhl
IFVSTCB0byB0aGUgZmF2aWNvbiBtYXkgYmUgaW4gdGhlIGhlYWRlci4gQXMgc3VjaCwgb25seQot
ICAgIC8vIGFzayB0aGUgbG9hZGVyIGZvciB0aGUgZmF2aWNvbiBpZiBpdCdzIGZpbmlzaGVkIGxv
YWRpbmcuCisgICAgLy8gVGhlIFVSTCB0byB0aGUgaWNvbiBtYXkgYmUgaW4gdGhlIGhlYWRlci4g
QXMgc3VjaCwgb25seQorICAgIC8vIGFzayB0aGUgbG9hZGVyIGZvciB0aGUgaWNvbiBpZiBpdCdz
IGZpbmlzaGVkIGxvYWRpbmcuCiAgICAgaWYgKGZyYW1lTG9hZGVyLT5zdGF0ZSgpID09IEZyYW1l
U3RhdGVDb21wbGV0ZSkgewotICAgICAgICBjb25zdCBLVVJMJiB1cmwgPSBmcmFtZUxvYWRlci0+
aWNvblVSTCgpOwotICAgICAgICBpZiAoIXVybC5pc0VtcHR5KCkpCi0gICAgICAgICAgICByZXR1
cm4gdXJsOworICAgICAgICBWZWN0b3I8V2ViQ29yZTo6SWNvblVSTD4gaWNvblVSTHMgPSBmcmFt
ZUxvYWRlci0+aWNvblVSTHMod2ViSWNvblR5cGVzKTsKKyAgICAgICAgV2ViVmVjdG9yPFdlYklj
b25VUkw+IHdlYkljb25VUkxzKGljb25VUkxzLnNpemUoKSk7CisgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgaWNvblVSTHMuc2l6ZSgpOyBpKyspCisgICAgICAgICAgICB3ZWJJY29uVVJM
c1tpXSA9IGljb25VUkxzW2ldOworICAgICAgICByZXR1cm4gd2ViSWNvblVSTHM7CiAgICAgfQot
ICAgIHJldHVybiBXZWJVUkwoKTsKKyAgICByZXR1cm4gV2ViVmVjdG9yPFdlYkljb25VUkw+KCk7
CiB9CiAKIFdlYlVSTCBXZWJGcmFtZUltcGw6Om9wZW5TZWFyY2hEZXNjcmlwdGlvblVSTCgpIGNv
bnN0CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuaAkocmV2
aXNpb24gODYwODMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwu
aAkod29ya2luZyBjb3B5KQpAQCAtNzEsNiArNzEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBs
b25nIGxvbmcgaWRlbnRpZmllcigpIGNvbnN0OwogICAgIHZpcnR1YWwgV2ViVVJMIHVybCgpIGNv
bnN0OwogICAgIHZpcnR1YWwgV2ViVVJMIGZhdkljb25VUkwoKSBjb25zdDsKKyAgICB2aXJ0dWFs
IFdlYlZlY3RvcjxXZWJJY29uVVJMPiBpY29uVVJMcyhpbnQgaWNvblR5cGVzKSBjb25zdDsKICAg
ICB2aXJ0dWFsIFdlYlVSTCBvcGVuU2VhcmNoRGVzY3JpcHRpb25VUkwoKSBjb25zdDsKICAgICB2
aXJ0dWFsIFdlYlN0cmluZyBlbmNvZGluZygpIGNvbnN0OwogICAgIHZpcnR1YWwgV2ViU2l6ZSBz
Y3JvbGxPZmZzZXQoKSBjb25zdDsK
</data>
<flag name="review"
          id="86297"
          type_id="1"
          status="-"
          setter="fishd"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93193</attachid>
            <date>2011-05-11 15:16:23 -0700</date>
            <delta_ts>2011-05-12 10:17:01 -0700</delta_ts>
            <desc>Correct patch</desc>
            <filename>patch.13</filename>
            <type>text/plain</type>
            <size>12139</size>
            <attacher>michaelbai</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA4NjE1NykKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzIg
QEAKKzIwMTEtMDUtMTAgIFRhbyBCYWkgIDxtaWNoYWVsYmFpQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBIYW5kbGUgdGhlIHRv
dWNoIGljb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02MDI0NworCisgICAgICAgIEFkZGVkIFdlYkljb25VUkwgZm9yIHRoZSBjb3JyZXNwb25kaW5n
IEljb25VUkwuCisgICAgICAgIEFkZGVkIGEgcGFyYW1ldGVyIHRvIGZhdkljb25VUkwoKSB0byBz
cGVjaWZ5IHRoZSB0eXBlIG9mIGljb24gbmVlZCB0bworICAgICAgICByZXR1cm4uCisgICAgICAg
IFJvbGxiYWNrIHRoZSBwcmV2aW91cyBmYXZJY29uVVJMKCksIHNvIGl0IGNhbiBiZSBjb21waWxl
ZCBpbiBDaHJvbWl1bQorICAgICAgICBhbmQgd2lsbCByZW1vdmUgaXQgbGF0ZXIuIAorCisgICAg
ICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBmZWF0dXJlcy5neXBpOgorICAgICAgICAqIHB1
YmxpYy9XZWJGcmFtZS5oOgorICAgICAgICAqIHB1YmxpYy9XZWJGcmFtZUNsaWVudC5oOgorICAg
ICAgICAoV2ViS2l0OjpXZWJGcmFtZUNsaWVudDo6ZGlkQ2hhbmdlSWNvbnMpOgorICAgICAgICAq
IHB1YmxpYy9XZWJJY29uVVJMLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJJY29uVVJM
OjpXZWJJY29uVVJMKToKKyAgICAgICAgKFdlYktpdDo6V2ViSWNvblVSTDo6aWNvblR5cGUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJY29uVVJMOjppY29uVVJMKToKKyAgICAgICAgKiBzcmMvQXNz
ZXJ0TWF0Y2hpbmdFbnVtcy5jcHA6CisgICAgICAgICogc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1w
bC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlzcGF0Y2hE
aWRDaGFuZ2VJY29ucyk6CisgICAgICAgICogc3JjL1dlYkZyYW1lSW1wbC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkZyYW1lSW1wbDo6ZmF2SWNvblVSTCk6CisgICAgICAgICogc3JjL1dlYkZy
YW1lSW1wbC5oOgorCiAyMDExLTA1LTEwICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgQXR0ZW1wdCB0byBmaXggdGhlIGNsYW5nIGJ1aWxkLgpJbmRleDogU291cmNl
L1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vV2ViS2l0Lmd5cAkocmV2aXNpb24gODYwODMpCisrKyBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL1dlYktpdC5neXAJKHdvcmtpbmcgY29weSkKQEAgLTE4NSw2ICsxODUsNyBAQAogICAg
ICAgICAgICAgICAgICdwdWJsaWMvV2ViSFRUUEJvZHkuaCcsCiAgICAgICAgICAgICAgICAgJ3B1
YmxpYy9XZWJIVFRQTG9hZEluZm8uaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJJY29u
TG9hZGluZ0NvbXBsZXRpb24uaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJJY29uVVJM
LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViSW1hZ2UuaCcsCiAgICAgICAgICAgICAg
ICAgJ3B1YmxpYy9XZWJJbWFnZURlY29kZXIuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9X
ZWJJREJDYWxsYmFja3MuaCcsCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVz
Lmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBp
CShyZXZpc2lvbiA4NjA4MykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lw
aQkod29ya2luZyBjb3B5KQpAQCAtODgsNiArODgsNyBAQAogICAgICAgICAnRU5BQkxFX1NWR19G
T1JFSUdOX09CSkVDVD0xJywKICAgICAgICAgJ0VOQUJMRV9TVkdfVVNFPTEnLAogICAgICAgICAn
RU5BQkxFX1RPVUNIX0VWRU5UUz0xJywKKyAgICAgICAgJ0VOQUJMRV9UT1VDSF9JQ09OX0xPQURJ
Tkc9MScsCiAgICAgICAgICdFTkFCTEVfVjhfU0NSSVBUX0RFQlVHX1NFUlZFUj0xJywKICAgICAg
ICAgJ0VOQUJMRV9WSURFTz0xJywKICAgICAgICAgJ0VOQUJMRV9XRUJfQVVESU89MCcsCkluZGV4
OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lLmgJKHJldmlzaW9uIDg2MDgz
KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWUuaAkod29ya2luZyBj
b3B5KQpAQCAtMzMsNiArMzMsNyBAQAogCiAjaW5jbHVkZSAiV2ViQ2FudmFzLmgiCiAjaW5jbHVk
ZSAiV2ViRmlsZVN5c3RlbS5oIgorI2luY2x1ZGUgIldlYkljb25VUkwuaCIKICNpbmNsdWRlICJX
ZWJOb2RlLmgiCiAjaW5jbHVkZSAiV2ViVVJMLmgiCiAKQEAgLTEyOSwxMCArMTMwLDE1IEBAIHB1
YmxpYzoKICAgICAvLyBkYXRhU291cmNlKCktPnJlcXVlc3QoKS51cmwoKS4KICAgICB2aXJ0dWFs
IFdlYlVSTCB1cmwoKSBjb25zdCA9IDA7CiAKLSAgICAvLyBUaGUgdXJsIG9mIHRoZSBmYXZpY29u
IChpZiBhbnkpIHNwZWNpZmllZCBieSB0aGUgZG9jdW1lbnQgbG9hZGVkIGluCi0gICAgLy8gdGhp
cyBmcmFtZS4KKyAgICAvLyBUaGlzIG1ldGhvZCBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJl
bW92ZWQgc29vbi4KICAgICB2aXJ0dWFsIFdlYlVSTCBmYXZJY29uVVJMKCkgY29uc3QgPSAwOwog
CisgICAgLy8gVGhlIHVybHMgb2YgdGhlIGdpdmVuIGNvbWJpbmF0aW9uIHR5cGVzIG9mIGZhdmlj
b24gKGlmIGFueSkgc3BlY2lmaWVkIGJ5CisgICAgLy8gdGhlIGRvY3VtZW50IGxvYWRlZCBpbiB0
aGlzIGZyYW1lLiBUaGUgaWNvblR5cGVzIGlzIGEgYml0LW1hc2sgb2YKKyAgICAvLyBXZWJJY29u
VVJMOjpUeXBlIHZhbHVlcywgdXNlZCB0byBzZWxlY3QgZnJvbSB0aGUgYXZhaWxhYmxlIHNldCBv
ZiBpY29uCisgICAgLy8gVVJMcworICAgIHZpcnR1YWwgV2ViVmVjdG9yPFdlYkljb25VUkw+IGlj
b25VUkxzKGludCBpY29uVHlwZXMpIGNvbnN0ID0gMDsKKwogICAgIC8vIFRoZSB1cmwgb2YgdGhl
IE9wZW5TZWFyY2ggRGVzcmlwdGlvbiBEb2N1bWVudCAoaWYgYW55KSBzcGVjaWZpZWQgYnkKICAg
ICAvLyB0aGUgZG9jdW1lbnQgbG9hZGVkIGluIHRoaXMgZnJhbWUuCiAgICAgdmlydHVhbCBXZWJV
Ukwgb3BlblNlYXJjaERlc2NyaXB0aW9uVVJMKCkgY29uc3QgPSAwOwpJbmRleDogU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oCShyZXZpc2lvbiA4NjA4
MykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lQ2xpZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2luY2x1ZGUgIldlYkNvbW1vbi5oIgog
I2luY2x1ZGUgIldlYkZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRlICJXZWJJY29uVVJMLmgiCiAjaW5j
bHVkZSAiV2ViTmF2aWdhdGlvblBvbGljeS5oIgogI2luY2x1ZGUgIldlYk5hdmlnYXRpb25UeXBl
LmgiCiAjaW5jbHVkZSAiV2ViU3RvcmFnZVF1b3RhVHlwZS5oIgpAQCAtMjAxLDkgKzIwMiwxMiBA
QCBwdWJsaWM6CiAgICAgICAgIGRpZFJlY2VpdmVUaXRsZShmcmFtZSwgdGl0bGUpOwogICAgIH0K
IAotICAgIC8vIFRoZSBpY29ucyBmb3IgdGhlIHBhZ2UgaGF2ZSBjaGFuZ2VkLgorICAgIC8vIFRo
aXMgbWV0aG9kIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBzb29uLgogICAgIHZp
cnR1YWwgdm9pZCBkaWRDaGFuZ2VJY29ucyhXZWJGcmFtZSopIHsgfQogCisgICAgLy8gVGhlIGlj
b24gZm9yIHRoZSBwYWdlIGhhdmUgY2hhbmdlZC4KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdl
SWNvbihXZWJGcmFtZSosIFdlYkljb25VUkw6OlR5cGUpIHsgfQorCiAgICAgLy8gVGhlIGZyYW1l
J3MgZG9jdW1lbnQgZmluaXNoZWQgbG9hZGluZy4KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNo
RG9jdW1lbnRMb2FkKFdlYkZyYW1lKikgeyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYkljb25VUkwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJJY29uVVJMLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJJY29uVVJMLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
ICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIFdlYkljb25VUkxfaAorI2RlZmluZSBXZWJJY29uVVJMX2gKKworI2lmIFdFQktJVF9J
TVBMRU1FTlRBVElPTgorI2luY2x1ZGUgIkljb25VUkwuaCIKKyNlbmRpZgorI2luY2x1ZGUgIldl
YlVSTC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViSWNvblVSTCB7CitwdWJs
aWM6CisgICAgZW51bSBUeXBlIHsKKyAgICAgICAgVHlwZUludmFsaWQgPSAwLAorICAgICAgICBU
eXBlRmF2aWNvbiA9IDEgPDwgMCwKKyAgICAgICAgVHlwZVRvdWNoID0gMSA8PCAxLAorICAgICAg
ICBUeXBlVG91Y2hQcmVjb21wb3NlZCA9IDEgPDwgMgorICAgIH07CisKKyAgICBXZWJJY29uVVJM
KCkKKyAgICAgICAgOiBtX2ljb25UeXBlKFR5cGVJbnZhbGlkKQorICAgIHsKKyAgICB9CisKKyAg
ICBXZWJJY29uVVJMKGNvbnN0IFdlYlVSTCYgdXJsLCBUeXBlIHR5cGUpCisgICAgICAgIDogbV9p
Y29uVHlwZSh0eXBlKQorICAgICAgICAsIG1faWNvblVSTCh1cmwpCisgICAgeworICAgIH0KKwor
ICAgIFR5cGUgaWNvblR5cGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1faWNvblR5
cGU7CisgICAgfQorCisgICAgY29uc3QgV2ViVVJMJiBpY29uVVJMKCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiBtX2ljb25VUkw7CisgICAgfQorCisjaWYgV0VCS0lUX0lNUExFTUVOVEFU
SU9OCisgICAgV2ViSWNvblVSTChjb25zdCBXZWJDb3JlOjpJY29uVVJMJiBpY29uVVJMKQorICAg
ICAgICA6IG1faWNvblR5cGUoc3RhdGljX2Nhc3Q8VHlwZT4oaWNvblVSTC5tX2ljb25UeXBlKSkK
KyAgICAgICAgLCBtX2ljb25VUkwoaWNvblVSTC5tX2ljb25VUkwpCisgICAgeworICAgIH0KKyNl
bmRpZgorCitwcml2YXRlOgorICAgIFR5cGUgbV9pY29uVHlwZTsKKyAgICBXZWJVUkwgbV9pY29u
VVJMOworfTsKKworfQorCisjZW5kaWYgLy8gV2ViSWNvblVSTF9oCgpQcm9wZXJ0eSBjaGFuZ2Vz
IG9uOiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJY29uVVJMLmgKX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
XwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDogU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAJKHJldmlzaW9uIDg2MDgz
KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJHZW9sb2NhdGlvbkVy
cm9yLmgiCiAjaW5jbHVkZSAiR2VvbG9jYXRpb25Qb3NpdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxJ
bnB1dEVsZW1lbnQuaCIKKyNpbmNsdWRlICJJY29uVVJMLmgiCiAjaW5jbHVkZSAiSURCRmFjdG9y
eUJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJJREJLZXkuaCIKICNpbmNsdWRlICJNZWRp
YVBsYXllci5oIgpAQCAtNzMsNiArNzQsNyBAQAogI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uUG9z
aXRpb24uaCIKICNpbmNsdWRlICJXZWJJREJGYWN0b3J5LmgiCiAjaW5jbHVkZSAiV2ViSURCS2V5
LmgiCisjaW5jbHVkZSAiV2ViSWNvblVSTC5oIgogI2luY2x1ZGUgIldlYklucHV0RWxlbWVudC5o
IgogI2luY2x1ZGUgIldlYk1lZGlhUGxheWVyLmgiCiAjaW5jbHVkZSAiV2ViTm90aWZpY2F0aW9u
UHJlc2VudGVyLmgiCkBAIC0zMDQsNiArMzA2LDExIEBAIENPTVBJTEVfQVNTRVJUX01BVENISU5H
X0VOVU0oV2ViRm9udERlc2MKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViRm9udERl
c2NyaXB0aW9uOjpXZWlnaHROb3JtYWwsIEZvbnRXZWlnaHROb3JtYWwpOwogQ09NUElMRV9BU1NF
UlRfTUFUQ0hJTkdfRU5VTShXZWJGb250RGVzY3JpcHRpb246OldlaWdodEJvbGQsIEZvbnRXZWln
aHRCb2xkKTsKIAorQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJY29uVVJMOjpUeXBl
SW52YWxpZCwgSW52YWxpZEljb24pOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJ
Y29uVVJMOjpUeXBlRmF2aWNvbiwgRmF2aWNvbik7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19F
TlVNKFdlYkljb25VUkw6OlR5cGVUb3VjaCwgVG91Y2hJY29uKTsKK0NPTVBJTEVfQVNTRVJUX01B
VENISU5HX0VOVU0oV2ViSWNvblVSTDo6VHlwZVRvdWNoUHJlY29tcG9zZWQsIFRvdWNoUHJlY29t
cG9zZWRJY29uKTsKKwogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJOb2RlOjpFbGVt
ZW50Tm9kZSwgTm9kZTo6RUxFTUVOVF9OT0RFKTsKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VO
VU0oV2ViTm9kZTo6QXR0cmlidXRlTm9kZSwgTm9kZTo6QVRUUklCVVRFX05PREUpOwogQ09NUElM
RV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJOb2RlOjpUZXh0Tm9kZSwgTm9kZTo6VEVYVF9OT0RF
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1w
bC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2Fk
ZXJDbGllbnRJbXBsLmNwcAkocmV2aXNpb24gODYwODMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NTks
OCArNzU5LDEyIEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaERpZFIKIAog
dm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoV2ViQ29y
ZTo6SWNvblR5cGUgdHlwZSkKIHsKLSAgICBpZiAobV93ZWJGcmFtZS0+Y2xpZW50KCkpCi0gICAg
ICAgIG1fd2ViRnJhbWUtPmNsaWVudCgpLT5kaWRDaGFuZ2VJY29ucyhtX3dlYkZyYW1lKTsKKyAg
ICBpZiAobV93ZWJGcmFtZS0+Y2xpZW50KCkpIHsKKyAgICAgICAgbV93ZWJGcmFtZS0+Y2xpZW50
KCktPmRpZENoYW5nZUljb24obV93ZWJGcmFtZSwgc3RhdGljX2Nhc3Q8V2ViSWNvblVSTDo6VHlw
ZT4odHlwZSkpOworICAgICAgICAvLyBLZWVwIHRoZSBBUEkgd29yayBpbiB0aGUgdHJhbnNpZW50
LgorICAgICAgICBpZiAodHlwZSA9PSBXZWJDb3JlOjpGYXZpY29uKQorICAgICAgICAgICAgbV93
ZWJGcmFtZS0+Y2xpZW50KCktPmRpZENoYW5nZUljb25zKG1fd2ViRnJhbWUpOworICAgIH0KIH0K
IAogdm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAJKHJldmlz
aW9uIDg2MDgzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDYgKzEwMSw3IEBACiAjaW5jbHVkZSAiSFRNTE5hbWVz
LmgiCiAjaW5jbHVkZSAiSGlzdG9yeUl0ZW0uaCIKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0Lmgi
CisjaW5jbHVkZSAiSWNvblVSTC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIK
ICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAicGFpbnRpbmcvR3JhcGhpY3NDb250ZXh0QnVp
bGRlci5oIgpAQCAtMTM3LDYgKzEzOCw3IEBACiAjaW5jbHVkZSAiV2ViRm9ybUVsZW1lbnQuaCIK
ICNpbmNsdWRlICJXZWJGcmFtZUNsaWVudC5oIgogI2luY2x1ZGUgIldlYkhpc3RvcnlJdGVtLmgi
CisjaW5jbHVkZSAiV2ViSWNvblVSTC5oIgogI2luY2x1ZGUgIldlYklucHV0RWxlbWVudC5oIgog
I2luY2x1ZGUgIldlYk5vZGUuaCIKICNpbmNsdWRlICJXZWJQYXNzd29yZEF1dG9jb21wbGV0ZUxp
c3RlbmVyLmgiCkBAIC01MjAsMTcgKzUyMiwyMiBAQCBXZWJVUkwgV2ViRnJhbWVJbXBsOjp1cmwo
KSBjb25zdAogCiBXZWJVUkwgV2ViRnJhbWVJbXBsOjpmYXZJY29uVVJMKCkgY29uc3QKIHsKLSAg
ICBGcmFtZUxvYWRlciogZnJhbWVMb2FkZXIgPSBtX2ZyYW1lLT5sb2FkZXIoKTsKLSAgICAvLyBU
aGUgVVJMIHRvIHRoZSBmYXZpY29uIG1heSBiZSBpbiB0aGUgaGVhZGVyLiBBcyBzdWNoLCBvbmx5
Ci0gICAgLy8gYXNrIHRoZSBsb2FkZXIgZm9yIHRoZSBmYXZpY29uIGlmIGl0J3MgZmluaXNoZWQg
bG9hZGluZy4KLSAgICBpZiAoZnJhbWVMb2FkZXItPnN0YXRlKCkgPT0gRnJhbWVTdGF0ZUNvbXBs
ZXRlKSB7Ci0gICAgICAgIGNvbnN0IEtVUkwmIHVybCA9IGZyYW1lTG9hZGVyLT5pY29uVVJMKCk7
Ci0gICAgICAgIGlmICghdXJsLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVybiB1cmw7Ci0g
ICAgfQorICAgIFdlYlZlY3RvcjxXZWJJY29uVVJMPiB1cmxzID0gaWNvblVSTHMoV2ViSWNvblVS
TDo6VHlwZUZhdmljb24pOworICAgIGlmICh1cmxzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIHVy
bHNbMF0uaWNvblVSTCgpOwogICAgIHJldHVybiBXZWJVUkwoKTsKIH0KIAorV2ViVmVjdG9yPFdl
Ykljb25VUkw+IFdlYkZyYW1lSW1wbDo6aWNvblVSTHMoaW50IHdlYkljb25UeXBlcykgY29uc3QK
K3sKKyAgICBGcmFtZUxvYWRlciogZnJhbWVMb2FkZXIgPSBtX2ZyYW1lLT5sb2FkZXIoKTsKKyAg
ICAvLyBUaGUgVVJMIHRvIHRoZSBpY29uIG1heSBiZSBpbiB0aGUgaGVhZGVyLiBBcyBzdWNoLCBv
bmx5CisgICAgLy8gYXNrIHRoZSBsb2FkZXIgZm9yIHRoZSBpY29uIGlmIGl0J3MgZmluaXNoZWQg
bG9hZGluZy4KKyAgICBpZiAoZnJhbWVMb2FkZXItPnN0YXRlKCkgPT0gRnJhbWVTdGF0ZUNvbXBs
ZXRlKQorICAgICAgICByZXR1cm4gZnJhbWVMb2FkZXItPmljb25VUkxzKHdlYkljb25UeXBlcyk7
CisgICAgcmV0dXJuIFdlYlZlY3RvcjxXZWJJY29uVVJMPigpOworfQorCiBXZWJVUkwgV2ViRnJh
bWVJbXBsOjpvcGVuU2VhcmNoRGVzY3JpcHRpb25VUkwoKSBjb25zdAogewogICAgIEZyYW1lTG9h
ZGVyKiBmcmFtZUxvYWRlciA9IG1fZnJhbWUtPmxvYWRlcigpOwpJbmRleDogU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmgJKHJldmlzaW9uIDg2MDgzKQorKysgU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTcx
LDYgKzcxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgbG9uZyBsb25nIGlkZW50aWZpZXIoKSBj
b25zdDsKICAgICB2aXJ0dWFsIFdlYlVSTCB1cmwoKSBjb25zdDsKICAgICB2aXJ0dWFsIFdlYlVS
TCBmYXZJY29uVVJMKCkgY29uc3Q7CisgICAgdmlydHVhbCBXZWJWZWN0b3I8V2ViSWNvblVSTD4g
aWNvblVSTHMoaW50IGljb25UeXBlcykgY29uc3Q7CiAgICAgdmlydHVhbCBXZWJVUkwgb3BlblNl
YXJjaERlc2NyaXB0aW9uVVJMKCkgY29uc3Q7CiAgICAgdmlydHVhbCBXZWJTdHJpbmcgZW5jb2Rp
bmcoKSBjb25zdDsKICAgICB2aXJ0dWFsIFdlYlNpemUgc2Nyb2xsT2Zmc2V0KCkgY29uc3Q7Cg==
</data>
<flag name="review"
          id="86313"
          type_id="1"
          status="+"
          setter="fishd"
    />
    <flag name="commit-queue"
          id="86436"
          type_id="3"
          status="-"
          setter="fishd"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93298</attachid>
            <date>2011-05-12 10:17:01 -0700</date>
            <delta_ts>2011-05-13 09:02:33 -0700</delta_ts>
            <desc>Final?</desc>
            <filename>patch.14</filename>
            <type>text/plain</type>
            <size>12447</size>
            <attacher>michaelbai</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA4NjE1NykKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAg
QEAKKzIwMTEtMDUtMTAgIFRhbyBCYWkgIDxtaWNoYWVsYmFpQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBIYW5kbGUgdGhlIHRv
dWNoIGljb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02MDI0NworCisgICAgICAgIEFkZGVkIFdlYkljb25VUkwgZm9yIHRoZSBjb3JyZXNwb25kaW5n
IEljb25VUkwuCisgICAgICAgIEFkZGVkIG1ldGhvZCBpY29uVVJMcygpIHRvIHNwZWNpZnkgdGhl
IHR5cGUgb2YgaWNvbiBuZWVkIHRvIHJldHVybi4KKyAgICAgICAgVGhlIGZhdkljb25VUkwoKSBp
cyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgbGF0ZXIuIAorCisgICAgICAgICogV2Vi
S2l0Lmd5cDoKKyAgICAgICAgKiBmZWF0dXJlcy5neXBpOgorICAgICAgICAqIHB1YmxpYy9XZWJG
cmFtZS5oOgorICAgICAgICAqIHB1YmxpYy9XZWJGcmFtZUNsaWVudC5oOgorICAgICAgICAoV2Vi
S2l0OjpXZWJGcmFtZUNsaWVudDo6ZGlkQ2hhbmdlSWNvbnMpOgorICAgICAgICAqIHB1YmxpYy9X
ZWJJY29uVVJMLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJJY29uVVJMOjpXZWJJY29u
VVJMKToKKyAgICAgICAgKFdlYktpdDo6V2ViSWNvblVSTDo6aWNvblR5cGUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJJY29uVVJMOjppY29uVVJMKToKKyAgICAgICAgKiBzcmMvQXNzZXJ0TWF0Y2hp
bmdFbnVtcy5jcHA6CisgICAgICAgICogc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJ
Y29ucyk6CisgICAgICAgICogc3JjL1dlYkZyYW1lSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkZyYW1lSW1wbDo6ZmF2SWNvblVSTCk6CisgICAgICAgICogc3JjL1dlYkZyYW1lSW1wbC5o
OgorCiAyMDExLTA1LTEwICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgQXR0ZW1wdCB0byBmaXggdGhlIGNsYW5nIGJ1aWxkLgpAQCAtMzQsOCArNjEsOCBAQAogICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjAyNDcKIAogICAg
ICAgICBBZGRlZCBXZWJJY29uVVJMIGZvciB0aGUgY29ycmVzcG9uZGluZyBJY29uVVJMLgotICAg
ICAgICBBZGRlZCBhIHBhcmFtZXRlciB0byBmYXZJY29uVVJMKCkgdG8gc3BlY2lmeSB0aGUgdHlw
ZSBvZiBpY29uIG5lZWQgdG8KLSAgICAgICAgcmV0dXJuLgorICAgICAgICBBZGRlZCBtZXRob2Qg
aWNvblVSTHMoKSB0byBzcGVjaWZ5IHRoZSB0eXBlIG9mIGljb24gbmVlZCB0byByZXR1cm4uCisg
ICAgICAgIFRoZSBmYXZJY29uVVJMKCkgaXMgZGVwcmVjYXRlZC4KIAogICAgICAgICAqIFdlYktp
dC5neXA6CiAgICAgICAgICogZmVhdHVyZXMuZ3lwaToKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vV2ViS2l0Lmd5cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dl
YktpdC5neXAJKHJldmlzaW9uIDg2MDgzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJL
aXQuZ3lwCSh3b3JraW5nIGNvcHkpCkBAIC0xODUsNiArMTg1LDcgQEAKICAgICAgICAgICAgICAg
ICAncHVibGljL1dlYkhUVFBCb2R5LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViSFRU
UExvYWRJbmZvLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViSWNvbkxvYWRpbmdDb21w
bGV0aW9uLmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViSWNvblVSTC5oJywKICAgICAg
ICAgICAgICAgICAncHVibGljL1dlYkltYWdlLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMv
V2ViSW1hZ2VEZWNvZGVyLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViSURCQ2FsbGJh
Y2tzLmgnLApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lwaQkocmV2aXNpb24g
ODYwODMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkJKHdvcmtpbmcg
Y29weSkKQEAgLTg4LDYgKzg4LDcgQEAKICAgICAgICAgJ0VOQUJMRV9TVkdfRk9SRUlHTl9PQkpF
Q1Q9MScsCiAgICAgICAgICdFTkFCTEVfU1ZHX1VTRT0xJywKICAgICAgICAgJ0VOQUJMRV9UT1VD
SF9FVkVOVFM9MScsCisgICAgICAgICdFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HPTEnLAogICAg
ICAgICAnRU5BQkxFX1Y4X1NDUklQVF9ERUJVR19TRVJWRVI9MScsCiAgICAgICAgICdFTkFCTEVf
VklERU89MScsCiAgICAgICAgICdFTkFCTEVfV0VCX0FVRElPPTAnLApJbmRleDogU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZS5oCShyZXZpc2lvbiA4NjA4MykKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTMz
LDYgKzMzLDcgQEAKIAogI2luY2x1ZGUgIldlYkNhbnZhcy5oIgogI2luY2x1ZGUgIldlYkZpbGVT
eXN0ZW0uaCIKKyNpbmNsdWRlICJXZWJJY29uVVJMLmgiCiAjaW5jbHVkZSAiV2ViTm9kZS5oIgog
I2luY2x1ZGUgIldlYlVSTC5oIgogCkBAIC0xMjksMTAgKzEzMCwxNSBAQCBwdWJsaWM6CiAgICAg
Ly8gZGF0YVNvdXJjZSgpLT5yZXF1ZXN0KCkudXJsKCkuCiAgICAgdmlydHVhbCBXZWJVUkwgdXJs
KCkgY29uc3QgPSAwOwogCi0gICAgLy8gVGhlIHVybCBvZiB0aGUgZmF2aWNvbiAoaWYgYW55KSBz
cGVjaWZpZWQgYnkgdGhlIGRvY3VtZW50IGxvYWRlZCBpbgotICAgIC8vIHRoaXMgZnJhbWUuCisg
ICAgLy8gREVQUkVDQVRFRDogVXNlIGljb25JUkxzIGluc3RlYWQuCiAgICAgdmlydHVhbCBXZWJV
UkwgZmF2SWNvblVSTCgpIGNvbnN0ID0gMDsKIAorICAgIC8vIFRoZSB1cmxzIG9mIHRoZSBnaXZl
biBjb21iaW5hdGlvbiB0eXBlcyBvZiBmYXZpY29uIChpZiBhbnkpIHNwZWNpZmllZCBieQorICAg
IC8vIHRoZSBkb2N1bWVudCBsb2FkZWQgaW4gdGhpcyBmcmFtZS4gVGhlIGljb25UeXBlcyBpcyBh
IGJpdC1tYXNrIG9mCisgICAgLy8gV2ViSWNvblVSTDo6VHlwZSB2YWx1ZXMsIHVzZWQgdG8gc2Vs
ZWN0IGZyb20gdGhlIGF2YWlsYWJsZSBzZXQgb2YgaWNvbgorICAgIC8vIFVSTHMKKyAgICB2aXJ0
dWFsIFdlYlZlY3RvcjxXZWJJY29uVVJMPiBpY29uVVJMcyhpbnQgaWNvblR5cGVzKSBjb25zdCA9
IDA7CisKICAgICAvLyBUaGUgdXJsIG9mIHRoZSBPcGVuU2VhcmNoIERlc3JpcHRpb24gRG9jdW1l
bnQgKGlmIGFueSkgc3BlY2lmaWVkIGJ5CiAgICAgLy8gdGhlIGRvY3VtZW50IGxvYWRlZCBpbiB0
aGlzIGZyYW1lLgogICAgIHZpcnR1YWwgV2ViVVJMIG9wZW5TZWFyY2hEZXNjcmlwdGlvblVSTCgp
IGNvbnN0ID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1l
Q2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
RnJhbWVDbGllbnQuaAkocmV2aXNpb24gODYwODMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBA
CiAKICNpbmNsdWRlICJXZWJDb21tb24uaCIKICNpbmNsdWRlICJXZWJGaWxlU3lzdGVtLmgiCisj
aW5jbHVkZSAiV2ViSWNvblVSTC5oIgogI2luY2x1ZGUgIldlYk5hdmlnYXRpb25Qb2xpY3kuaCIK
ICNpbmNsdWRlICJXZWJOYXZpZ2F0aW9uVHlwZS5oIgogI2luY2x1ZGUgIldlYlN0b3JhZ2VRdW90
YVR5cGUuaCIKQEAgLTIwMSw5ICsyMDIsMTIgQEAgcHVibGljOgogICAgICAgICBkaWRSZWNlaXZl
VGl0bGUoZnJhbWUsIHRpdGxlKTsKICAgICB9CiAKLSAgICAvLyBUaGUgaWNvbnMgZm9yIHRoZSBw
YWdlIGhhdmUgY2hhbmdlZC4KKyAgICAvLyBERVBSRUNBVEVEOiBJbXBsZW1lbnQgZGlkQ2hhbmdl
SWNvbiBpbnN0ZWFkLgogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VJY29ucyhXZWJGcmFtZSop
IHsgfQogCisgICAgLy8gVGhlIGljb24gZm9yIHRoZSBwYWdlIGhhdmUgY2hhbmdlZC4KKyAgICB2
aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlSWNvbihXZWJGcmFtZSosIFdlYkljb25VUkw6OlR5cGUpIHsg
fQorCiAgICAgLy8gVGhlIGZyYW1lJ3MgZG9jdW1lbnQgZmluaXNoZWQgbG9hZGluZy4KICAgICB2
aXJ0dWFsIHZvaWQgZGlkRmluaXNoRG9jdW1lbnRMb2FkKFdlYkZyYW1lKikgeyB9CiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkljb25VUkwuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJY29uVVJMLmgJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJY29uVVJMLmgJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsODYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkljb25VUkxfaAorI2RlZmluZSBXZWJJY29u
VVJMX2gKKworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorI2luY2x1ZGUgIkljb25VUkwuaCIK
KyNlbmRpZgorI2luY2x1ZGUgIldlYlVSTC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xh
c3MgV2ViSWNvblVSTCB7CitwdWJsaWM6CisgICAgZW51bSBUeXBlIHsKKyAgICAgICAgVHlwZUlu
dmFsaWQgPSAwLAorICAgICAgICBUeXBlRmF2aWNvbiA9IDEgPDwgMCwKKyAgICAgICAgVHlwZVRv
dWNoID0gMSA8PCAxLAorICAgICAgICBUeXBlVG91Y2hQcmVjb21wb3NlZCA9IDEgPDwgMgorICAg
IH07CisKKyAgICBXZWJJY29uVVJMKCkKKyAgICAgICAgOiBtX2ljb25UeXBlKFR5cGVJbnZhbGlk
KQorICAgIHsKKyAgICB9CisKKyAgICBXZWJJY29uVVJMKGNvbnN0IFdlYlVSTCYgdXJsLCBUeXBl
IHR5cGUpCisgICAgICAgIDogbV9pY29uVHlwZSh0eXBlKQorICAgICAgICAsIG1faWNvblVSTCh1
cmwpCisgICAgeworICAgIH0KKworICAgIFR5cGUgaWNvblR5cGUoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG1faWNvblR5cGU7CisgICAgfQorCisgICAgY29uc3QgV2ViVVJMJiBpY29u
VVJMKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2ljb25VUkw7CisgICAgfQorCisj
aWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAgV2ViSWNvblVSTChjb25zdCBXZWJDb3JlOjpJ
Y29uVVJMJiBpY29uVVJMKQorICAgICAgICA6IG1faWNvblR5cGUoc3RhdGljX2Nhc3Q8VHlwZT4o
aWNvblVSTC5tX2ljb25UeXBlKSkKKyAgICAgICAgLCBtX2ljb25VUkwoaWNvblVSTC5tX2ljb25V
UkwpCisgICAgeworICAgIH0KKyNlbmRpZgorCitwcml2YXRlOgorICAgIFR5cGUgbV9pY29uVHlw
ZTsKKyAgICBXZWJVUkwgbV9pY29uVVJMOworfTsKKworfQorCisjZW5kaWYgLy8gV2ViSWNvblVS
TF9oCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJJY29uVVJMLmgKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRl
eDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVt
cy5jcHAJKHJldmlzaW9uIDg2MDgzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNz
ZXJ0TWF0Y2hpbmdFbnVtcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDcgQEAKICNp
bmNsdWRlICJHZW9sb2NhdGlvbkVycm9yLmgiCiAjaW5jbHVkZSAiR2VvbG9jYXRpb25Qb3NpdGlv
bi5oIgogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKKyNpbmNsdWRlICJJY29uVVJMLmgi
CiAjaW5jbHVkZSAiSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJJREJL
ZXkuaCIKICNpbmNsdWRlICJNZWRpYVBsYXllci5oIgpAQCAtNzMsNiArNzQsNyBAQAogI2luY2x1
ZGUgIldlYkdlb2xvY2F0aW9uUG9zaXRpb24uaCIKICNpbmNsdWRlICJXZWJJREJGYWN0b3J5Lmgi
CiAjaW5jbHVkZSAiV2ViSURCS2V5LmgiCisjaW5jbHVkZSAiV2ViSWNvblVSTC5oIgogI2luY2x1
ZGUgIldlYklucHV0RWxlbWVudC5oIgogI2luY2x1ZGUgIldlYk1lZGlhUGxheWVyLmgiCiAjaW5j
bHVkZSAiV2ViTm90aWZpY2F0aW9uUHJlc2VudGVyLmgiCkBAIC0zMDQsNiArMzA2LDExIEBAIENP
TVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViRm9udERlc2MKIENPTVBJTEVfQVNTRVJUX01B
VENISU5HX0VOVU0oV2ViRm9udERlc2NyaXB0aW9uOjpXZWlnaHROb3JtYWwsIEZvbnRXZWlnaHRO
b3JtYWwpOwogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJGb250RGVzY3JpcHRpb246
OldlaWdodEJvbGQsIEZvbnRXZWlnaHRCb2xkKTsKIAorQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdf
RU5VTShXZWJJY29uVVJMOjpUeXBlSW52YWxpZCwgSW52YWxpZEljb24pOworQ09NUElMRV9BU1NF
UlRfTUFUQ0hJTkdfRU5VTShXZWJJY29uVVJMOjpUeXBlRmF2aWNvbiwgRmF2aWNvbik7CitDT01Q
SUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYkljb25VUkw6OlR5cGVUb3VjaCwgVG91Y2hJY29u
KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViSWNvblVSTDo6VHlwZVRvdWNoUHJl
Y29tcG9zZWQsIFRvdWNoUHJlY29tcG9zZWRJY29uKTsKKwogQ09NUElMRV9BU1NFUlRfTUFUQ0hJ
TkdfRU5VTShXZWJOb2RlOjpFbGVtZW50Tm9kZSwgTm9kZTo6RUxFTUVOVF9OT0RFKTsKIENPTVBJ
TEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViTm9kZTo6QXR0cmlidXRlTm9kZSwgTm9kZTo6QVRU
UklCVVRFX05PREUpOwogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJOb2RlOjpUZXh0
Tm9kZSwgTm9kZTo6VEVYVF9OT0RFKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAkocmV2aXNpb24gODYwODMpCisr
KyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03NTksOCArNzU5LDEyIEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRJ
bXBsOjpkaXNwYXRjaERpZFIKIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpc3BhdGNo
RGlkQ2hhbmdlSWNvbnMoV2ViQ29yZTo6SWNvblR5cGUgdHlwZSkKIHsKLSAgICBpZiAobV93ZWJG
cmFtZS0+Y2xpZW50KCkpCi0gICAgICAgIG1fd2ViRnJhbWUtPmNsaWVudCgpLT5kaWRDaGFuZ2VJ
Y29ucyhtX3dlYkZyYW1lKTsKKyAgICBpZiAobV93ZWJGcmFtZS0+Y2xpZW50KCkpIHsKKyAgICAg
ICAgbV93ZWJGcmFtZS0+Y2xpZW50KCktPmRpZENoYW5nZUljb24obV93ZWJGcmFtZSwgc3RhdGlj
X2Nhc3Q8V2ViSWNvblVSTDo6VHlwZT4odHlwZSkpOworICAgICAgICAvLyBGSVhNRSA6IEtlZXAg
dGhlIEFQSSB3b3JrIGluIHRoZSB0cmFuc2llbnQuCisgICAgICAgIGlmICh0eXBlID09IFdlYkNv
cmU6OkZhdmljb24pCisgICAgICAgICAgICBtX3dlYkZyYW1lLT5jbGllbnQoKS0+ZGlkQ2hhbmdl
SWNvbnMobV93ZWJGcmFtZSk7CisgICAgfQogfQogCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1w
bDo6ZGlzcGF0Y2hEaWRDb21taXRMb2FkKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkZyYW1lSW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAkocmV2aXNpb24gODYwODMpCisrKyBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNiAr
MTAxLDcgQEAKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIaXN0b3J5SXRlbS5o
IgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKKyNpbmNsdWRlICJJY29uVVJMLmgiCiAjaW5j
bHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRl
ICJwYWludGluZy9HcmFwaGljc0NvbnRleHRCdWlsZGVyLmgiCkBAIC0xMzcsNiArMTM4LDcgQEAK
ICNpbmNsdWRlICJXZWJGb3JtRWxlbWVudC5oIgogI2luY2x1ZGUgIldlYkZyYW1lQ2xpZW50Lmgi
CiAjaW5jbHVkZSAiV2ViSGlzdG9yeUl0ZW0uaCIKKyNpbmNsdWRlICJXZWJJY29uVVJMLmgiCiAj
aW5jbHVkZSAiV2ViSW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiV2ViTm9kZS5oIgogI2luY2x1
ZGUgIldlYlBhc3N3b3JkQXV0b2NvbXBsZXRlTGlzdGVuZXIuaCIKQEAgLTUyMCwxNyArNTIyLDIy
IEBAIFdlYlVSTCBXZWJGcmFtZUltcGw6OnVybCgpIGNvbnN0CiAKIFdlYlVSTCBXZWJGcmFtZUlt
cGw6OmZhdkljb25VUkwoKSBjb25zdAogewotICAgIEZyYW1lTG9hZGVyKiBmcmFtZUxvYWRlciA9
IG1fZnJhbWUtPmxvYWRlcigpOwotICAgIC8vIFRoZSBVUkwgdG8gdGhlIGZhdmljb24gbWF5IGJl
IGluIHRoZSBoZWFkZXIuIEFzIHN1Y2gsIG9ubHkKLSAgICAvLyBhc2sgdGhlIGxvYWRlciBmb3Ig
dGhlIGZhdmljb24gaWYgaXQncyBmaW5pc2hlZCBsb2FkaW5nLgotICAgIGlmIChmcmFtZUxvYWRl
ci0+c3RhdGUoKSA9PSBGcmFtZVN0YXRlQ29tcGxldGUpIHsKLSAgICAgICAgY29uc3QgS1VSTCYg
dXJsID0gZnJhbWVMb2FkZXItPmljb25VUkwoKTsKLSAgICAgICAgaWYgKCF1cmwuaXNFbXB0eSgp
KQotICAgICAgICAgICAgcmV0dXJuIHVybDsKLSAgICB9CisgICAgV2ViVmVjdG9yPFdlYkljb25V
Ukw+IHVybHMgPSBpY29uVVJMcyhXZWJJY29uVVJMOjpUeXBlRmF2aWNvbik7CisgICAgaWYgKHVy
bHMuc2l6ZSgpKQorICAgICAgICByZXR1cm4gdXJsc1swXS5pY29uVVJMKCk7CiAgICAgcmV0dXJu
IFdlYlVSTCgpOwogfQogCitXZWJWZWN0b3I8V2ViSWNvblVSTD4gV2ViRnJhbWVJbXBsOjppY29u
VVJMcyhpbnQgaWNvblR5cGVzKSBjb25zdAoreworICAgIEZyYW1lTG9hZGVyKiBmcmFtZUxvYWRl
ciA9IG1fZnJhbWUtPmxvYWRlcigpOworICAgIC8vIFRoZSBVUkwgdG8gdGhlIGljb24gbWF5IGJl
IGluIHRoZSBoZWFkZXIuIEFzIHN1Y2gsIG9ubHkKKyAgICAvLyBhc2sgdGhlIGxvYWRlciBmb3Ig
dGhlIGljb24gaWYgaXQncyBmaW5pc2hlZCBsb2FkaW5nLgorICAgIGlmIChmcmFtZUxvYWRlci0+
c3RhdGUoKSA9PSBGcmFtZVN0YXRlQ29tcGxldGUpCisgICAgICAgIHJldHVybiBmcmFtZUxvYWRl
ci0+aWNvblVSTHMoaWNvblR5cGVzKTsKKyAgICByZXR1cm4gV2ViVmVjdG9yPFdlYkljb25VUkw+
KCk7Cit9CisKIFdlYlVSTCBXZWJGcmFtZUltcGw6Om9wZW5TZWFyY2hEZXNjcmlwdGlvblVSTCgp
IGNvbnN0CiB7CiAgICAgRnJhbWVMb2FkZXIqIGZyYW1lTG9hZGVyID0gbV9mcmFtZS0+bG9hZGVy
KCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuaAkocmV2
aXNpb24gODYwODMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwu
aAkod29ya2luZyBjb3B5KQpAQCAtNzEsNiArNzEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBs
b25nIGxvbmcgaWRlbnRpZmllcigpIGNvbnN0OwogICAgIHZpcnR1YWwgV2ViVVJMIHVybCgpIGNv
bnN0OwogICAgIHZpcnR1YWwgV2ViVVJMIGZhdkljb25VUkwoKSBjb25zdDsKKyAgICB2aXJ0dWFs
IFdlYlZlY3RvcjxXZWJJY29uVVJMPiBpY29uVVJMcyhpbnQgaWNvblR5cGVzKSBjb25zdDsKICAg
ICB2aXJ0dWFsIFdlYlVSTCBvcGVuU2VhcmNoRGVzY3JpcHRpb25VUkwoKSBjb25zdDsKICAgICB2
aXJ0dWFsIFdlYlN0cmluZyBlbmNvZGluZygpIGNvbnN0OwogICAgIHZpcnR1YWwgV2ViU2l6ZSBz
Y3JvbGxPZmZzZXQoKSBjb25zdDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93457</attachid>
            <date>2011-05-13 09:02:33 -0700</date>
            <delta_ts>2011-05-13 09:14:09 -0700</delta_ts>
            <desc>Implement iconURLs to make transient easy</desc>
            <filename>patch.15</filename>
            <type>text/plain</type>
            <size>0</size>
            <attacher>michaelbai</attacher>
            
              <data encoding="base64"></data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93461</attachid>
            <date>2011-05-13 09:14:09 -0700</date>
            <delta_ts>2011-05-13 10:11:50 -0700</delta_ts>
            <desc>Fix style</desc>
            <filename>patch.16</filename>
            <type>text/plain</type>
            <size>12613</size>
            <attacher>michaelbai</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA4NjQzNikKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAg
QEAKKzIwMTEtMDUtMTAgIFRhbyBCYWkgIDxtaWNoYWVsYmFpQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBIYW5kbGUgdGhlIHRv
dWNoIGljb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02MDI0NworCisgICAgICAgIEFkZGVkIFdlYkljb25VUkwgZm9yIHRoZSBjb3JyZXNwb25kaW5n
IEljb25VUkwuCisgICAgICAgIEFkZGVkIG1ldGhvZCBpY29uVVJMcygpIHRvIHNwZWNpZnkgdGhl
IHR5cGUgb2YgaWNvbiBuZWVkIHRvIHJldHVybi4KKyAgICAgICAgVGhlIGZhdkljb25VUkwoKSBp
cyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgbGF0ZXIuIAorCisgICAgICAgICogV2Vi
S2l0Lmd5cDoKKyAgICAgICAgKiBmZWF0dXJlcy5neXBpOgorICAgICAgICAqIHB1YmxpYy9XZWJG
cmFtZS5oOgorICAgICAgICAqIHB1YmxpYy9XZWJGcmFtZUNsaWVudC5oOgorICAgICAgICAoV2Vi
S2l0OjpXZWJGcmFtZUNsaWVudDo6ZGlkQ2hhbmdlSWNvbnMpOgorICAgICAgICAqIHB1YmxpYy9X
ZWJJY29uVVJMLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJJY29uVVJMOjpXZWJJY29u
VVJMKToKKyAgICAgICAgKFdlYktpdDo6V2ViSWNvblVSTDo6aWNvblR5cGUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJJY29uVVJMOjppY29uVVJMKToKKyAgICAgICAgKiBzcmMvQXNzZXJ0TWF0Y2hp
bmdFbnVtcy5jcHA6CisgICAgICAgICogc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJ
Y29ucyk6CisgICAgICAgICogc3JjL1dlYkZyYW1lSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkZyYW1lSW1wbDo6ZmF2SWNvblVSTCk6CisgICAgICAgICogc3JjL1dlYkZyYW1lSW1wbC5o
OgorCiAyMDExLTA1LTExICBIYW5zIFdlbm5ib3JnICA8aGFuc0BjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgVG9ueSBHZW50aWxjb3JlLgpAQCAtMjM4LDggKzI2NSw4IEBACiAg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDI0NwogCiAg
ICAgICAgIEFkZGVkIFdlYkljb25VUkwgZm9yIHRoZSBjb3JyZXNwb25kaW5nIEljb25VUkwuCi0g
ICAgICAgIEFkZGVkIGEgcGFyYW1ldGVyIHRvIGZhdkljb25VUkwoKSB0byBzcGVjaWZ5IHRoZSB0
eXBlIG9mIGljb24gbmVlZCB0bwotICAgICAgICByZXR1cm4uCisgICAgICAgIEFkZGVkIG1ldGhv
ZCBpY29uVVJMcygpIHRvIHNwZWNpZnkgdGhlIHR5cGUgb2YgaWNvbiBuZWVkIHRvIHJldHVybi4K
KyAgICAgICAgVGhlIGZhdkljb25VUkwoKSBpcyBkZXByZWNhdGVkLgogCiAgICAgICAgICogV2Vi
S2l0Lmd5cDoKICAgICAgICAgKiBmZWF0dXJlcy5neXBpOgpJbmRleDogU291cmNlL1dlYktpdC9j
aHJvbWl1bS9XZWJLaXQuZ3lwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
V2ViS2l0Lmd5cAkocmV2aXNpb24gODY0MzYpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dl
YktpdC5neXAJKHdvcmtpbmcgY29weSkKQEAgLTE4NSw2ICsxODUsNyBAQAogICAgICAgICAgICAg
ICAgICdwdWJsaWMvV2ViSFRUUEJvZHkuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJI
VFRQTG9hZEluZm8uaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJJY29uTG9hZGluZ0Nv
bXBsZXRpb24uaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJJY29uVVJMLmgnLAogICAg
ICAgICAgICAgICAgICdwdWJsaWMvV2ViSW1hZ2UuaCcsCiAgICAgICAgICAgICAgICAgJ3B1Ymxp
Yy9XZWJJbWFnZURlY29kZXIuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJJREJDYWxs
YmFja3MuaCcsCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpCShyZXZpc2lv
biA4NjQzNikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lwaQkod29ya2lu
ZyBjb3B5KQpAQCAtODgsNiArODgsNyBAQAogICAgICAgICAnRU5BQkxFX1NWR19GT1JFSUdOX09C
SkVDVD0xJywKICAgICAgICAgJ0VOQUJMRV9TVkdfVVNFPTEnLAogICAgICAgICAnRU5BQkxFX1RP
VUNIX0VWRU5UUz0xJywKKyAgICAgICAgJ0VOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkc9MScsCiAg
ICAgICAgICdFTkFCTEVfVjhfU0NSSVBUX0RFQlVHX1NFUlZFUj0xJywKICAgICAgICAgJ0VOQUJM
RV9WSURFTz0xJywKICAgICAgICAgJ0VOQUJMRV9XRUJfQVVESU89MCcsCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lLmgJKHJldmlzaW9uIDg2NDM2KQorKysgU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAt
MzMsNiArMzMsNyBAQAogCiAjaW5jbHVkZSAiV2ViQ2FudmFzLmgiCiAjaW5jbHVkZSAiV2ViRmls
ZVN5c3RlbS5oIgorI2luY2x1ZGUgIldlYkljb25VUkwuaCIKICNpbmNsdWRlICJXZWJOb2RlLmgi
CiAjaW5jbHVkZSAiV2ViVVJMLmgiCiAKQEAgLTEyOSwxMCArMTMwLDIwIEBAIHB1YmxpYzoKICAg
ICAvLyBkYXRhU291cmNlKCktPnJlcXVlc3QoKS51cmwoKS4KICAgICB2aXJ0dWFsIFdlYlVSTCB1
cmwoKSBjb25zdCA9IDA7CiAKLSAgICAvLyBUaGUgdXJsIG9mIHRoZSBmYXZpY29uIChpZiBhbnkp
IHNwZWNpZmllZCBieSB0aGUgZG9jdW1lbnQgbG9hZGVkIGluCi0gICAgLy8gdGhpcyBmcmFtZS4K
KyAgICAvLyBERVBSRUNBVEVEOiBVc2UgaWNvbklSTHMgaW5zdGVhZC4KICAgICB2aXJ0dWFsIFdl
YlVSTCBmYXZJY29uVVJMKCkgY29uc3QgPSAwOwogCisgICAgLy8gVGhlIHVybHMgb2YgdGhlIGdp
dmVuIGNvbWJpbmF0aW9uIHR5cGVzIG9mIGZhdmljb24gKGlmIGFueSkgc3BlY2lmaWVkIGJ5Cisg
ICAgLy8gdGhlIGRvY3VtZW50IGxvYWRlZCBpbiB0aGlzIGZyYW1lLiBUaGUgaWNvblR5cGVzIGlz
IGEgYml0LW1hc2sgb2YKKyAgICAvLyBXZWJJY29uVVJMOjpUeXBlIHZhbHVlcywgdXNlZCB0byBz
ZWxlY3QgZnJvbSB0aGUgYXZhaWxhYmxlIHNldCBvZiBpY29uCisgICAgLy8gVVJMcworICAgIHZp
cnR1YWwgV2ViVmVjdG9yPFdlYkljb25VUkw+IGljb25VUkxzKGludCBpY29uVHlwZXMpIGNvbnN0
CisgICAgeworICAgICAgICAvLyBGSVhNRSA6IFJlbW92ZSB0aGUgaW1wbGVtZW50YXRpb24sIHRo
aXMgbWFrZSBidWlsZGJvdCBoYXBweSBkdXJpbmcKKyAgICAgICAgLy8gICAgICAgICB0aGUgdHJh
bnNpZW50LgorICAgICAgICByZXR1cm4gV2ViVmVjdG9yPFdlYkljb25VUkw+KCk7CisgICAgfQor
CiAgICAgLy8gVGhlIHVybCBvZiB0aGUgT3BlblNlYXJjaCBEZXNyaXB0aW9uIERvY3VtZW50IChp
ZiBhbnkpIHNwZWNpZmllZCBieQogICAgIC8vIHRoZSBkb2N1bWVudCBsb2FkZWQgaW4gdGhpcyBm
cmFtZS4KICAgICB2aXJ0dWFsIFdlYlVSTCBvcGVuU2VhcmNoRGVzY3JpcHRpb25VUkwoKSBjb25z
dCA9IDA7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1l
Q2xpZW50LmgJKHJldmlzaW9uIDg2NDM2KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViRnJhbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogCiAj
aW5jbHVkZSAiV2ViQ29tbW9uLmgiCiAjaW5jbHVkZSAiV2ViRmlsZVN5c3RlbS5oIgorI2luY2x1
ZGUgIldlYkljb25VUkwuaCIKICNpbmNsdWRlICJXZWJOYXZpZ2F0aW9uUG9saWN5LmgiCiAjaW5j
bHVkZSAiV2ViTmF2aWdhdGlvblR5cGUuaCIKICNpbmNsdWRlICJXZWJTdG9yYWdlUXVvdGFUeXBl
LmgiCkBAIC0yMDEsOSArMjAyLDEyIEBAIHB1YmxpYzoKICAgICAgICAgZGlkUmVjZWl2ZVRpdGxl
KGZyYW1lLCB0aXRsZSk7CiAgICAgfQogCi0gICAgLy8gVGhlIGljb25zIGZvciB0aGUgcGFnZSBo
YXZlIGNoYW5nZWQuCisgICAgLy8gREVQUkVDQVRFRDogSW1wbGVtZW50IGRpZENoYW5nZUljb24g
aW5zdGVhZC4KICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlSWNvbnMoV2ViRnJhbWUqKSB7IH0K
IAorICAgIC8vIFRoZSBpY29uIGZvciB0aGUgcGFnZSBoYXZlIGNoYW5nZWQuCisgICAgdmlydHVh
bCB2b2lkIGRpZENoYW5nZUljb24oV2ViRnJhbWUqLCBXZWJJY29uVVJMOjpUeXBlKSB7IH0KKwog
ICAgIC8vIFRoZSBmcmFtZSdzIGRvY3VtZW50IGZpbmlzaGVkIGxvYWRpbmcuCiAgICAgdmlydHVh
bCB2b2lkIGRpZEZpbmlzaERvY3VtZW50TG9hZChXZWJGcmFtZSopIHsgfQogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJY29uVVJMLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSWNvblVSTC5oCShyZXZpc2lvbiAwKQorKysg
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSWNvblVSTC5oCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDg2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisg
KiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisg
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJJY29uVVJMX2gKKyNkZWZpbmUgV2ViSWNvblVSTF9o
CisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyNpbmNsdWRlICJJY29uVVJMLmgiCisjZW5k
aWYKKyNpbmNsdWRlICJXZWJVUkwuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdl
Ykljb25VUkwgeworcHVibGljOgorICAgIGVudW0gVHlwZSB7CisgICAgICAgIFR5cGVJbnZhbGlk
ID0gMCwKKyAgICAgICAgVHlwZUZhdmljb24gPSAxIDw8IDAsCisgICAgICAgIFR5cGVUb3VjaCA9
IDEgPDwgMSwKKyAgICAgICAgVHlwZVRvdWNoUHJlY29tcG9zZWQgPSAxIDw8IDIKKyAgICB9Owor
CisgICAgV2ViSWNvblVSTCgpCisgICAgICAgIDogbV9pY29uVHlwZShUeXBlSW52YWxpZCkKKyAg
ICB7CisgICAgfQorCisgICAgV2ViSWNvblVSTChjb25zdCBXZWJVUkwmIHVybCwgVHlwZSB0eXBl
KQorICAgICAgICA6IG1faWNvblR5cGUodHlwZSkKKyAgICAgICAgLCBtX2ljb25VUkwodXJsKQor
ICAgIHsKKyAgICB9CisKKyAgICBUeXBlIGljb25UeXBlKCkgY29uc3QKKyAgICB7CisgICAgICAg
IHJldHVybiBtX2ljb25UeXBlOworICAgIH0KKworICAgIGNvbnN0IFdlYlVSTCYgaWNvblVSTCgp
IGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9pY29uVVJMOworICAgIH0KKworI2lmIFdF
QktJVF9JTVBMRU1FTlRBVElPTgorICAgIFdlYkljb25VUkwoY29uc3QgV2ViQ29yZTo6SWNvblVS
TCYgaWNvblVSTCkKKyAgICAgICAgOiBtX2ljb25UeXBlKHN0YXRpY19jYXN0PFR5cGU+KGljb25V
UkwubV9pY29uVHlwZSkpCisgICAgICAgICwgbV9pY29uVVJMKGljb25VUkwubV9pY29uVVJMKQor
ICAgIHsKKyAgICB9CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBUeXBlIG1faWNvblR5cGU7Cisg
ICAgV2ViVVJMIG1faWNvblVSTDsKK307CisKK30KKworI2VuZGlmIC8vIFdlYkljb25VUkxfaAoK
UHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSWNv
blVSTC5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3Bw
CShyZXZpc2lvbiA4NjQzNikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2VydE1h
dGNoaW5nRW51bXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niw3IEBACiAjaW5jbHVk
ZSAiR2VvbG9jYXRpb25FcnJvci5oIgogI2luY2x1ZGUgIkdlb2xvY2F0aW9uUG9zaXRpb24uaCIK
ICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCisjaW5jbHVkZSAiSWNvblVSTC5oIgogI2lu
Y2x1ZGUgIklEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSURCS2V5Lmgi
CiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKQEAgLTczLDYgKzc0LDcgQEAKICNpbmNsdWRlICJX
ZWJHZW9sb2NhdGlvblBvc2l0aW9uLmgiCiAjaW5jbHVkZSAiV2ViSURCRmFjdG9yeS5oIgogI2lu
Y2x1ZGUgIldlYklEQktleS5oIgorI2luY2x1ZGUgIldlYkljb25VUkwuaCIKICNpbmNsdWRlICJX
ZWJJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJXZWJNZWRpYVBsYXllci5oIgogI2luY2x1ZGUg
IldlYk5vdGlmaWNhdGlvblByZXNlbnRlci5oIgpAQCAtMzA0LDYgKzMwNiwxMSBAQCBDT01QSUxF
X0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYkZvbnREZXNjCiBDT01QSUxFX0FTU0VSVF9NQVRDSElO
R19FTlVNKFdlYkZvbnREZXNjcmlwdGlvbjo6V2VpZ2h0Tm9ybWFsLCBGb250V2VpZ2h0Tm9ybWFs
KTsKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViRm9udERlc2NyaXB0aW9uOjpXZWln
aHRCb2xkLCBGb250V2VpZ2h0Qm9sZCk7CiAKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0o
V2ViSWNvblVSTDo6VHlwZUludmFsaWQsIEludmFsaWRJY29uKTsKK0NPTVBJTEVfQVNTRVJUX01B
VENISU5HX0VOVU0oV2ViSWNvblVSTDo6VHlwZUZhdmljb24sIEZhdmljb24pOworQ09NUElMRV9B
U1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJY29uVVJMOjpUeXBlVG91Y2gsIFRvdWNoSWNvbik7CitD
T01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYkljb25VUkw6OlR5cGVUb3VjaFByZWNvbXBv
c2VkLCBUb3VjaFByZWNvbXBvc2VkSWNvbik7CisKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VO
VU0oV2ViTm9kZTo6RWxlbWVudE5vZGUsIE5vZGU6OkVMRU1FTlRfTk9ERSk7CiBDT01QSUxFX0FT
U0VSVF9NQVRDSElOR19FTlVNKFdlYk5vZGU6OkF0dHJpYnV0ZU5vZGUsIE5vZGU6OkFUVFJJQlVU
RV9OT0RFKTsKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViTm9kZTo6VGV4dE5vZGUs
IE5vZGU6OlRFWFRfTk9ERSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFt
ZUxvYWRlckNsaWVudEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAJKHJldmlzaW9uIDg2NDM2KQorKysgU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNzU5LDggKzc1OSwxMiBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6
ZGlzcGF0Y2hEaWRSCiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaERpZENo
YW5nZUljb25zKFdlYkNvcmU6Okljb25UeXBlIHR5cGUpCiB7Ci0gICAgaWYgKG1fd2ViRnJhbWUt
PmNsaWVudCgpKQotICAgICAgICBtX3dlYkZyYW1lLT5jbGllbnQoKS0+ZGlkQ2hhbmdlSWNvbnMo
bV93ZWJGcmFtZSk7CisgICAgaWYgKG1fd2ViRnJhbWUtPmNsaWVudCgpKSB7CisgICAgICAgIG1f
d2ViRnJhbWUtPmNsaWVudCgpLT5kaWRDaGFuZ2VJY29uKG1fd2ViRnJhbWUsIHN0YXRpY19jYXN0
PFdlYkljb25VUkw6OlR5cGU+KHR5cGUpKTsKKyAgICAgICAgLy8gRklYTUUgOiBLZWVwIHRoZSBB
UEkgd29yayBpbiB0aGUgdHJhbnNpZW50LgorICAgICAgICBpZiAodHlwZSA9PSBXZWJDb3JlOjpG
YXZpY29uKQorICAgICAgICAgICAgbV93ZWJGcmFtZS0+Y2xpZW50KCktPmRpZENoYW5nZUljb25z
KG1fd2ViRnJhbWUpOworICAgIH0KIH0KIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmRp
c3BhdGNoRGlkQ29tbWl0TG9hZCgpCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJGcmFtZUltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkZyYW1lSW1wbC5jcHAJKHJldmlzaW9uIDg2NDM2KQorKysgU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDYgKzEwMSw3
IEBACiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSGlzdG9yeUl0ZW0uaCIKICNp
bmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCisjaW5jbHVkZSAiSWNvblVSTC5oIgogI2luY2x1ZGUg
Ikluc3BlY3RvckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAicGFp
bnRpbmcvR3JhcGhpY3NDb250ZXh0QnVpbGRlci5oIgpAQCAtMTM3LDYgKzEzOCw3IEBACiAjaW5j
bHVkZSAiV2ViRm9ybUVsZW1lbnQuaCIKICNpbmNsdWRlICJXZWJGcmFtZUNsaWVudC5oIgogI2lu
Y2x1ZGUgIldlYkhpc3RvcnlJdGVtLmgiCisjaW5jbHVkZSAiV2ViSWNvblVSTC5oIgogI2luY2x1
ZGUgIldlYklucHV0RWxlbWVudC5oIgogI2luY2x1ZGUgIldlYk5vZGUuaCIKICNpbmNsdWRlICJX
ZWJQYXNzd29yZEF1dG9jb21wbGV0ZUxpc3RlbmVyLmgiCkBAIC01MjAsMTcgKzUyMiwyMiBAQCBX
ZWJVUkwgV2ViRnJhbWVJbXBsOjp1cmwoKSBjb25zdAogCiBXZWJVUkwgV2ViRnJhbWVJbXBsOjpm
YXZJY29uVVJMKCkgY29uc3QKIHsKLSAgICBGcmFtZUxvYWRlciogZnJhbWVMb2FkZXIgPSBtX2Zy
YW1lLT5sb2FkZXIoKTsKLSAgICAvLyBUaGUgVVJMIHRvIHRoZSBmYXZpY29uIG1heSBiZSBpbiB0
aGUgaGVhZGVyLiBBcyBzdWNoLCBvbmx5Ci0gICAgLy8gYXNrIHRoZSBsb2FkZXIgZm9yIHRoZSBm
YXZpY29uIGlmIGl0J3MgZmluaXNoZWQgbG9hZGluZy4KLSAgICBpZiAoZnJhbWVMb2FkZXItPnN0
YXRlKCkgPT0gRnJhbWVTdGF0ZUNvbXBsZXRlKSB7Ci0gICAgICAgIGNvbnN0IEtVUkwmIHVybCA9
IGZyYW1lTG9hZGVyLT5pY29uVVJMKCk7Ci0gICAgICAgIGlmICghdXJsLmlzRW1wdHkoKSkKLSAg
ICAgICAgICAgIHJldHVybiB1cmw7Ci0gICAgfQorICAgIFdlYlZlY3RvcjxXZWJJY29uVVJMPiB1
cmxzID0gaWNvblVSTHMoV2ViSWNvblVSTDo6VHlwZUZhdmljb24pOworICAgIGlmICh1cmxzLnNp
emUoKSkKKyAgICAgICAgcmV0dXJuIHVybHNbMF0uaWNvblVSTCgpOwogICAgIHJldHVybiBXZWJV
UkwoKTsKIH0KIAorV2ViVmVjdG9yPFdlYkljb25VUkw+IFdlYkZyYW1lSW1wbDo6aWNvblVSTHMo
aW50IGljb25UeXBlcykgY29uc3QKK3sKKyAgICBGcmFtZUxvYWRlciogZnJhbWVMb2FkZXIgPSBt
X2ZyYW1lLT5sb2FkZXIoKTsKKyAgICAvLyBUaGUgVVJMIHRvIHRoZSBpY29uIG1heSBiZSBpbiB0
aGUgaGVhZGVyLiBBcyBzdWNoLCBvbmx5CisgICAgLy8gYXNrIHRoZSBsb2FkZXIgZm9yIHRoZSBp
Y29uIGlmIGl0J3MgZmluaXNoZWQgbG9hZGluZy4KKyAgICBpZiAoZnJhbWVMb2FkZXItPnN0YXRl
KCkgPT0gRnJhbWVTdGF0ZUNvbXBsZXRlKQorICAgICAgICByZXR1cm4gZnJhbWVMb2FkZXItPmlj
b25VUkxzKGljb25UeXBlcyk7CisgICAgcmV0dXJuIFdlYlZlY3RvcjxXZWJJY29uVVJMPigpOwor
fQorCiBXZWJVUkwgV2ViRnJhbWVJbXBsOjpvcGVuU2VhcmNoRGVzY3JpcHRpb25VUkwoKSBjb25z
dAogewogICAgIEZyYW1lTG9hZGVyKiBmcmFtZUxvYWRlciA9IG1fZnJhbWUtPmxvYWRlcigpOwpJ
bmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmgJKHJldmlzaW9u
IDg2NDM2KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmgJKHdv
cmtpbmcgY29weSkKQEAgLTcxLDYgKzcxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgbG9uZyBs
b25nIGlkZW50aWZpZXIoKSBjb25zdDsKICAgICB2aXJ0dWFsIFdlYlVSTCB1cmwoKSBjb25zdDsK
ICAgICB2aXJ0dWFsIFdlYlVSTCBmYXZJY29uVVJMKCkgY29uc3Q7CisgICAgdmlydHVhbCBXZWJW
ZWN0b3I8V2ViSWNvblVSTD4gaWNvblVSTHMoaW50IGljb25UeXBlcykgY29uc3Q7CiAgICAgdmly
dHVhbCBXZWJVUkwgb3BlblNlYXJjaERlc2NyaXB0aW9uVVJMKCkgY29uc3Q7CiAgICAgdmlydHVh
bCBXZWJTdHJpbmcgZW5jb2RpbmcoKSBjb25zdDsKICAgICB2aXJ0dWFsIFdlYlNpemUgc2Nyb2xs
T2Zmc2V0KCkgY29uc3Q7Cg==
</data>
<flag name="commit-queue"
          id="86625"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93474</attachid>
            <date>2011-05-13 10:11:50 -0700</date>
            <delta_ts>2011-05-13 12:29:05 -0700</delta_ts>
            <desc>Fix build</desc>
            <filename>patch.17</filename>
            <type>text/plain</type>
            <size>12708</size>
            <attacher>michaelbai</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA4NjQzNikKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAg
QEAKKzIwMTEtMDUtMTAgIFRhbyBCYWkgIDxtaWNoYWVsYmFpQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBIYW5kbGUgdGhlIHRv
dWNoIGljb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02MDI0NworCisgICAgICAgIEFkZGVkIFdlYkljb25VUkwgZm9yIHRoZSBjb3JyZXNwb25kaW5n
IEljb25VUkwuCisgICAgICAgIEFkZGVkIG1ldGhvZCBpY29uVVJMcygpIHRvIHNwZWNpZnkgdGhl
IHR5cGUgb2YgaWNvbiBuZWVkIHRvIHJldHVybi4KKyAgICAgICAgVGhlIGZhdkljb25VUkwoKSBp
cyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgbGF0ZXIuIAorCisgICAgICAgICogV2Vi
S2l0Lmd5cDoKKyAgICAgICAgKiBmZWF0dXJlcy5neXBpOgorICAgICAgICAqIHB1YmxpYy9XZWJG
cmFtZS5oOgorICAgICAgICAqIHB1YmxpYy9XZWJGcmFtZUNsaWVudC5oOgorICAgICAgICAoV2Vi
S2l0OjpXZWJGcmFtZUNsaWVudDo6ZGlkQ2hhbmdlSWNvbnMpOgorICAgICAgICAqIHB1YmxpYy9X
ZWJJY29uVVJMLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJJY29uVVJMOjpXZWJJY29u
VVJMKToKKyAgICAgICAgKFdlYktpdDo6V2ViSWNvblVSTDo6aWNvblR5cGUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJJY29uVVJMOjppY29uVVJMKToKKyAgICAgICAgKiBzcmMvQXNzZXJ0TWF0Y2hp
bmdFbnVtcy5jcHA6CisgICAgICAgICogc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJ
Y29ucyk6CisgICAgICAgICogc3JjL1dlYkZyYW1lSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkZyYW1lSW1wbDo6ZmF2SWNvblVSTCk6CisgICAgICAgICogc3JjL1dlYkZyYW1lSW1wbC5o
OgorCiAyMDExLTA1LTExICBIYW5zIFdlbm5ib3JnICA8aGFuc0BjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgVG9ueSBHZW50aWxjb3JlLgpAQCAtMjM4LDggKzI2NSw4IEBACiAg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDI0NwogCiAg
ICAgICAgIEFkZGVkIFdlYkljb25VUkwgZm9yIHRoZSBjb3JyZXNwb25kaW5nIEljb25VUkwuCi0g
ICAgICAgIEFkZGVkIGEgcGFyYW1ldGVyIHRvIGZhdkljb25VUkwoKSB0byBzcGVjaWZ5IHRoZSB0
eXBlIG9mIGljb24gbmVlZCB0bwotICAgICAgICByZXR1cm4uCisgICAgICAgIEFkZGVkIG1ldGhv
ZCBpY29uVVJMcygpIHRvIHNwZWNpZnkgdGhlIHR5cGUgb2YgaWNvbiBuZWVkIHRvIHJldHVybi4K
KyAgICAgICAgVGhlIGZhdkljb25VUkwoKSBpcyBkZXByZWNhdGVkLgogCiAgICAgICAgICogV2Vi
S2l0Lmd5cDoKICAgICAgICAgKiBmZWF0dXJlcy5neXBpOgpJbmRleDogU291cmNlL1dlYktpdC9j
aHJvbWl1bS9XZWJLaXQuZ3lwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
V2ViS2l0Lmd5cAkocmV2aXNpb24gODY0MzYpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dl
YktpdC5neXAJKHdvcmtpbmcgY29weSkKQEAgLTE4NSw2ICsxODUsNyBAQAogICAgICAgICAgICAg
ICAgICdwdWJsaWMvV2ViSFRUUEJvZHkuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJI
VFRQTG9hZEluZm8uaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJJY29uTG9hZGluZ0Nv
bXBsZXRpb24uaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJJY29uVVJMLmgnLAogICAg
ICAgICAgICAgICAgICdwdWJsaWMvV2ViSW1hZ2UuaCcsCiAgICAgICAgICAgICAgICAgJ3B1Ymxp
Yy9XZWJJbWFnZURlY29kZXIuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJJREJDYWxs
YmFja3MuaCcsCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpCShyZXZpc2lv
biA4NjQzNikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lwaQkod29ya2lu
ZyBjb3B5KQpAQCAtODgsNiArODgsNyBAQAogICAgICAgICAnRU5BQkxFX1NWR19GT1JFSUdOX09C
SkVDVD0xJywKICAgICAgICAgJ0VOQUJMRV9TVkdfVVNFPTEnLAogICAgICAgICAnRU5BQkxFX1RP
VUNIX0VWRU5UUz0xJywKKyAgICAgICAgJ0VOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkc9MScsCiAg
ICAgICAgICdFTkFCTEVfVjhfU0NSSVBUX0RFQlVHX1NFUlZFUj0xJywKICAgICAgICAgJ0VOQUJM
RV9WSURFTz0xJywKICAgICAgICAgJ0VOQUJMRV9XRUJfQVVESU89MCcsCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lLmgJKHJldmlzaW9uIDg2NDM2KQorKysgU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAt
MzMsOCArMzMsMTEgQEAKIAogI2luY2x1ZGUgIldlYkNhbnZhcy5oIgogI2luY2x1ZGUgIldlYkZp
bGVTeXN0ZW0uaCIKKyNpbmNsdWRlICJXZWJJY29uVVJMLmgiCiAjaW5jbHVkZSAiV2ViTm9kZS5o
IgogI2luY2x1ZGUgIldlYlVSTC5oIgorLy8gRklYTUUgOiBSZW1vdmUgdGhpcyBmaWxlIHdoZW4g
dHJhbnNpZW50IGRvbmUuCisjaW5jbHVkZSAiV2ViVmVjdG9yLmgiCiAKIHN0cnVjdCBOUE9iamVj
dDsKIApAQCAtMTI5LDEwICsxMzIsMjAgQEAgcHVibGljOgogICAgIC8vIGRhdGFTb3VyY2UoKS0+
cmVxdWVzdCgpLnVybCgpLgogICAgIHZpcnR1YWwgV2ViVVJMIHVybCgpIGNvbnN0ID0gMDsKIAot
ICAgIC8vIFRoZSB1cmwgb2YgdGhlIGZhdmljb24gKGlmIGFueSkgc3BlY2lmaWVkIGJ5IHRoZSBk
b2N1bWVudCBsb2FkZWQgaW4KLSAgICAvLyB0aGlzIGZyYW1lLgorICAgIC8vIERFUFJFQ0FURUQ6
IFVzZSBpY29uSVJMcyBpbnN0ZWFkLgogICAgIHZpcnR1YWwgV2ViVVJMIGZhdkljb25VUkwoKSBj
b25zdCA9IDA7CiAKKyAgICAvLyBUaGUgdXJscyBvZiB0aGUgZ2l2ZW4gY29tYmluYXRpb24gdHlw
ZXMgb2YgZmF2aWNvbiAoaWYgYW55KSBzcGVjaWZpZWQgYnkKKyAgICAvLyB0aGUgZG9jdW1lbnQg
bG9hZGVkIGluIHRoaXMgZnJhbWUuIFRoZSBpY29uVHlwZXMgaXMgYSBiaXQtbWFzayBvZgorICAg
IC8vIFdlYkljb25VUkw6OlR5cGUgdmFsdWVzLCB1c2VkIHRvIHNlbGVjdCBmcm9tIHRoZSBhdmFp
bGFibGUgc2V0IG9mIGljb24KKyAgICAvLyBVUkxzCisgICAgdmlydHVhbCBXZWJWZWN0b3I8V2Vi
SWNvblVSTD4gaWNvblVSTHMoaW50IGljb25UeXBlcykgY29uc3QKKyAgICB7CisgICAgICAgIC8v
IEZJWE1FIDogUmVtb3ZlIHRoZSBpbXBsZW1lbnRhdGlvbiwgdGhpcyBtYWtlIGJ1aWxkYm90IGhh
cHB5IGR1cmluZworICAgICAgICAvLyAgICAgICAgIHRoZSB0cmFuc2llbnQuCisgICAgICAgIHJl
dHVybiBXZWJWZWN0b3I8V2ViSWNvblVSTD4oKTsKKyAgICB9CisKICAgICAvLyBUaGUgdXJsIG9m
IHRoZSBPcGVuU2VhcmNoIERlc3JpcHRpb24gRG9jdW1lbnQgKGlmIGFueSkgc3BlY2lmaWVkIGJ5
CiAgICAgLy8gdGhlIGRvY3VtZW50IGxvYWRlZCBpbiB0aGlzIGZyYW1lLgogICAgIHZpcnR1YWwg
V2ViVVJMIG9wZW5TZWFyY2hEZXNjcmlwdGlvblVSTCgpIGNvbnN0ID0gMDsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lQ2xpZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQuaAkocmV2aXNpb24g
ODY0MzYpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAKICNpbmNsdWRlICJXZWJDb21tb24u
aCIKICNpbmNsdWRlICJXZWJGaWxlU3lzdGVtLmgiCisjaW5jbHVkZSAiV2ViSWNvblVSTC5oIgog
I2luY2x1ZGUgIldlYk5hdmlnYXRpb25Qb2xpY3kuaCIKICNpbmNsdWRlICJXZWJOYXZpZ2F0aW9u
VHlwZS5oIgogI2luY2x1ZGUgIldlYlN0b3JhZ2VRdW90YVR5cGUuaCIKQEAgLTIwMSw5ICsyMDIs
MTIgQEAgcHVibGljOgogICAgICAgICBkaWRSZWNlaXZlVGl0bGUoZnJhbWUsIHRpdGxlKTsKICAg
ICB9CiAKLSAgICAvLyBUaGUgaWNvbnMgZm9yIHRoZSBwYWdlIGhhdmUgY2hhbmdlZC4KKyAgICAv
LyBERVBSRUNBVEVEOiBJbXBsZW1lbnQgZGlkQ2hhbmdlSWNvbiBpbnN0ZWFkLgogICAgIHZpcnR1
YWwgdm9pZCBkaWRDaGFuZ2VJY29ucyhXZWJGcmFtZSopIHsgfQogCisgICAgLy8gVGhlIGljb24g
Zm9yIHRoZSBwYWdlIGhhdmUgY2hhbmdlZC4KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlSWNv
bihXZWJGcmFtZSosIFdlYkljb25VUkw6OlR5cGUpIHsgfQorCiAgICAgLy8gVGhlIGZyYW1lJ3Mg
ZG9jdW1lbnQgZmluaXNoZWQgbG9hZGluZy4KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoRG9j
dW1lbnRMb2FkKFdlYkZyYW1lKikgeyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkljb25VUkwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJJY29uVVJMLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJJY29uVVJMLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODYgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
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
ZGVmIFdlYkljb25VUkxfaAorI2RlZmluZSBXZWJJY29uVVJMX2gKKworI2lmIFdFQktJVF9JTVBM
RU1FTlRBVElPTgorI2luY2x1ZGUgIkljb25VUkwuaCIKKyNlbmRpZgorI2luY2x1ZGUgIldlYlVS
TC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViSWNvblVSTCB7CitwdWJsaWM6
CisgICAgZW51bSBUeXBlIHsKKyAgICAgICAgVHlwZUludmFsaWQgPSAwLAorICAgICAgICBUeXBl
RmF2aWNvbiA9IDEgPDwgMCwKKyAgICAgICAgVHlwZVRvdWNoID0gMSA8PCAxLAorICAgICAgICBU
eXBlVG91Y2hQcmVjb21wb3NlZCA9IDEgPDwgMgorICAgIH07CisKKyAgICBXZWJJY29uVVJMKCkK
KyAgICAgICAgOiBtX2ljb25UeXBlKFR5cGVJbnZhbGlkKQorICAgIHsKKyAgICB9CisKKyAgICBX
ZWJJY29uVVJMKGNvbnN0IFdlYlVSTCYgdXJsLCBUeXBlIHR5cGUpCisgICAgICAgIDogbV9pY29u
VHlwZSh0eXBlKQorICAgICAgICAsIG1faWNvblVSTCh1cmwpCisgICAgeworICAgIH0KKworICAg
IFR5cGUgaWNvblR5cGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1faWNvblR5cGU7
CisgICAgfQorCisgICAgY29uc3QgV2ViVVJMJiBpY29uVVJMKCkgY29uc3QKKyAgICB7CisgICAg
ICAgIHJldHVybiBtX2ljb25VUkw7CisgICAgfQorCisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9O
CisgICAgV2ViSWNvblVSTChjb25zdCBXZWJDb3JlOjpJY29uVVJMJiBpY29uVVJMKQorICAgICAg
ICA6IG1faWNvblR5cGUoc3RhdGljX2Nhc3Q8VHlwZT4oaWNvblVSTC5tX2ljb25UeXBlKSkKKyAg
ICAgICAgLCBtX2ljb25VUkwoaWNvblVSTC5tX2ljb25VUkwpCisgICAgeworICAgIH0KKyNlbmRp
ZgorCitwcml2YXRlOgorICAgIFR5cGUgbV9pY29uVHlwZTsKKyAgICBXZWJVUkwgbV9pY29uVVJM
OworfTsKKworfQorCisjZW5kaWYgLy8gV2ViSWNvblVSTF9oCgpQcm9wZXJ0eSBjaGFuZ2VzIG9u
OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJY29uVVJMLmgKX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpB
ZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAJKHJldmlzaW9uIDg2NDM2KQor
KysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJHZW9sb2NhdGlvbkVycm9y
LmgiCiAjaW5jbHVkZSAiR2VvbG9jYXRpb25Qb3NpdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxJbnB1
dEVsZW1lbnQuaCIKKyNpbmNsdWRlICJJY29uVVJMLmgiCiAjaW5jbHVkZSAiSURCRmFjdG9yeUJh
Y2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJJREJLZXkuaCIKICNpbmNsdWRlICJNZWRpYVBs
YXllci5oIgpAQCAtNzMsNiArNzQsNyBAQAogI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uUG9zaXRp
b24uaCIKICNpbmNsdWRlICJXZWJJREJGYWN0b3J5LmgiCiAjaW5jbHVkZSAiV2ViSURCS2V5Lmgi
CisjaW5jbHVkZSAiV2ViSWNvblVSTC5oIgogI2luY2x1ZGUgIldlYklucHV0RWxlbWVudC5oIgog
I2luY2x1ZGUgIldlYk1lZGlhUGxheWVyLmgiCiAjaW5jbHVkZSAiV2ViTm90aWZpY2F0aW9uUHJl
c2VudGVyLmgiCkBAIC0zMDQsNiArMzA2LDExIEBAIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VO
VU0oV2ViRm9udERlc2MKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViRm9udERlc2Ny
aXB0aW9uOjpXZWlnaHROb3JtYWwsIEZvbnRXZWlnaHROb3JtYWwpOwogQ09NUElMRV9BU1NFUlRf
TUFUQ0hJTkdfRU5VTShXZWJGb250RGVzY3JpcHRpb246OldlaWdodEJvbGQsIEZvbnRXZWlnaHRC
b2xkKTsKIAorQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJY29uVVJMOjpUeXBlSW52
YWxpZCwgSW52YWxpZEljb24pOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJY29u
VVJMOjpUeXBlRmF2aWNvbiwgRmF2aWNvbik7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVN
KFdlYkljb25VUkw6OlR5cGVUb3VjaCwgVG91Y2hJY29uKTsKK0NPTVBJTEVfQVNTRVJUX01BVENI
SU5HX0VOVU0oV2ViSWNvblVSTDo6VHlwZVRvdWNoUHJlY29tcG9zZWQsIFRvdWNoUHJlY29tcG9z
ZWRJY29uKTsKKwogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJOb2RlOjpFbGVtZW50
Tm9kZSwgTm9kZTo6RUxFTUVOVF9OT0RFKTsKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0o
V2ViTm9kZTo6QXR0cmlidXRlTm9kZSwgTm9kZTo6QVRUUklCVVRFX05PREUpOwogQ09NUElMRV9B
U1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJOb2RlOjpUZXh0Tm9kZSwgTm9kZTo6VEVYVF9OT0RFKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJD
bGllbnRJbXBsLmNwcAkocmV2aXNpb24gODY0MzYpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NTksOCAr
NzU5LDEyIEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaERpZFIKIAogdm9p
ZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoV2ViQ29yZTo6
SWNvblR5cGUgdHlwZSkKIHsKLSAgICBpZiAobV93ZWJGcmFtZS0+Y2xpZW50KCkpCi0gICAgICAg
IG1fd2ViRnJhbWUtPmNsaWVudCgpLT5kaWRDaGFuZ2VJY29ucyhtX3dlYkZyYW1lKTsKKyAgICBp
ZiAobV93ZWJGcmFtZS0+Y2xpZW50KCkpIHsKKyAgICAgICAgbV93ZWJGcmFtZS0+Y2xpZW50KCkt
PmRpZENoYW5nZUljb24obV93ZWJGcmFtZSwgc3RhdGljX2Nhc3Q8V2ViSWNvblVSTDo6VHlwZT4o
dHlwZSkpOworICAgICAgICAvLyBGSVhNRSA6IEtlZXAgdGhlIEFQSSB3b3JrIGluIHRoZSB0cmFu
c2llbnQuCisgICAgICAgIGlmICh0eXBlID09IFdlYkNvcmU6OkZhdmljb24pCisgICAgICAgICAg
ICBtX3dlYkZyYW1lLT5jbGllbnQoKS0+ZGlkQ2hhbmdlSWNvbnMobV93ZWJGcmFtZSk7CisgICAg
fQogfQogCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlzcGF0Y2hEaWRDb21taXRMb2Fk
KCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAko
cmV2aXNpb24gODY0MzYpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUlt
cGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNiArMTAxLDcgQEAKICNpbmNsdWRlICJIVE1M
TmFtZXMuaCIKICNpbmNsdWRlICJIaXN0b3J5SXRlbS5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1
bHQuaCIKKyNpbmNsdWRlICJJY29uVVJMLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxl
ci5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJwYWludGluZy9HcmFwaGljc0NvbnRl
eHRCdWlsZGVyLmgiCkBAIC0xMzcsNiArMTM4LDcgQEAKICNpbmNsdWRlICJXZWJGb3JtRWxlbWVu
dC5oIgogI2luY2x1ZGUgIldlYkZyYW1lQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViSGlzdG9yeUl0
ZW0uaCIKKyNpbmNsdWRlICJXZWJJY29uVVJMLmgiCiAjaW5jbHVkZSAiV2ViSW5wdXRFbGVtZW50
LmgiCiAjaW5jbHVkZSAiV2ViTm9kZS5oIgogI2luY2x1ZGUgIldlYlBhc3N3b3JkQXV0b2NvbXBs
ZXRlTGlzdGVuZXIuaCIKQEAgLTUyMCwxNyArNTIyLDIyIEBAIFdlYlVSTCBXZWJGcmFtZUltcGw6
OnVybCgpIGNvbnN0CiAKIFdlYlVSTCBXZWJGcmFtZUltcGw6OmZhdkljb25VUkwoKSBjb25zdAog
ewotICAgIEZyYW1lTG9hZGVyKiBmcmFtZUxvYWRlciA9IG1fZnJhbWUtPmxvYWRlcigpOwotICAg
IC8vIFRoZSBVUkwgdG8gdGhlIGZhdmljb24gbWF5IGJlIGluIHRoZSBoZWFkZXIuIEFzIHN1Y2gs
IG9ubHkKLSAgICAvLyBhc2sgdGhlIGxvYWRlciBmb3IgdGhlIGZhdmljb24gaWYgaXQncyBmaW5p
c2hlZCBsb2FkaW5nLgotICAgIGlmIChmcmFtZUxvYWRlci0+c3RhdGUoKSA9PSBGcmFtZVN0YXRl
Q29tcGxldGUpIHsKLSAgICAgICAgY29uc3QgS1VSTCYgdXJsID0gZnJhbWVMb2FkZXItPmljb25V
UkwoKTsKLSAgICAgICAgaWYgKCF1cmwuaXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuIHVy
bDsKLSAgICB9CisgICAgV2ViVmVjdG9yPFdlYkljb25VUkw+IHVybHMgPSBpY29uVVJMcyhXZWJJ
Y29uVVJMOjpUeXBlRmF2aWNvbik7CisgICAgaWYgKHVybHMuc2l6ZSgpKQorICAgICAgICByZXR1
cm4gdXJsc1swXS5pY29uVVJMKCk7CiAgICAgcmV0dXJuIFdlYlVSTCgpOwogfQogCitXZWJWZWN0
b3I8V2ViSWNvblVSTD4gV2ViRnJhbWVJbXBsOjppY29uVVJMcyhpbnQgaWNvblR5cGVzKSBjb25z
dAoreworICAgIEZyYW1lTG9hZGVyKiBmcmFtZUxvYWRlciA9IG1fZnJhbWUtPmxvYWRlcigpOwor
ICAgIC8vIFRoZSBVUkwgdG8gdGhlIGljb24gbWF5IGJlIGluIHRoZSBoZWFkZXIuIEFzIHN1Y2gs
IG9ubHkKKyAgICAvLyBhc2sgdGhlIGxvYWRlciBmb3IgdGhlIGljb24gaWYgaXQncyBmaW5pc2hl
ZCBsb2FkaW5nLgorICAgIGlmIChmcmFtZUxvYWRlci0+c3RhdGUoKSA9PSBGcmFtZVN0YXRlQ29t
cGxldGUpCisgICAgICAgIHJldHVybiBmcmFtZUxvYWRlci0+aWNvblVSTHMoaWNvblR5cGVzKTsK
KyAgICByZXR1cm4gV2ViVmVjdG9yPFdlYkljb25VUkw+KCk7Cit9CisKIFdlYlVSTCBXZWJGcmFt
ZUltcGw6Om9wZW5TZWFyY2hEZXNjcmlwdGlvblVSTCgpIGNvbnN0CiB7CiAgICAgRnJhbWVMb2Fk
ZXIqIGZyYW1lTG9hZGVyID0gbV9mcmFtZS0+bG9hZGVyKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuaAkocmV2aXNpb24gODY0MzYpCisrKyBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtNzEs
NiArNzEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBsb25nIGxvbmcgaWRlbnRpZmllcigpIGNv
bnN0OwogICAgIHZpcnR1YWwgV2ViVVJMIHVybCgpIGNvbnN0OwogICAgIHZpcnR1YWwgV2ViVVJM
IGZhdkljb25VUkwoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFdlYlZlY3RvcjxXZWJJY29uVVJMPiBp
Y29uVVJMcyhpbnQgaWNvblR5cGVzKSBjb25zdDsKICAgICB2aXJ0dWFsIFdlYlVSTCBvcGVuU2Vh
cmNoRGVzY3JpcHRpb25VUkwoKSBjb25zdDsKICAgICB2aXJ0dWFsIFdlYlN0cmluZyBlbmNvZGlu
ZygpIGNvbnN0OwogICAgIHZpcnR1YWwgV2ViU2l6ZSBzY3JvbGxPZmZzZXQoKSBjb25zdDsK
</data>

          </attachment>
      

    </bug>

</bugzilla>