<?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>72016</bug_id>
          
          <creation_ts>2011-11-10 05:34:32 -0800</creation_ts>
          <short_desc>[Chromium] [WebSocket] export WebSocketChannel interface for plugins</short_desc>
          <delta_ts>2011-11-18 23:20:18 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit API</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>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Takashi Toyoshima">toyoshim</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>fishd</cc>
    
    <cc>sam</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yutak</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>499814</commentid>
    <comment_count>0</comment_count>
    <who name="Takashi Toyoshima">toyoshim</who>
    <bug_when>2011-11-10 05:34:32 -0800</bug_when>
    <thetext>WebSocket feature is implemented as WebSocket class and it uses WebSocketChannel class which implements WebSocket communication protocol.
Only SocketStreamHandle is exported as a WebKit API just to implement peer-to-peer bi-directional communication port via IPC.

Now, Chromium needs WebSocketChannel as a WebKit API to use WebSocket protocol via plugins interface.

Chromium side issue,
http://code.google.com/p/chromium/issues/detail?id=103719</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499861</commentid>
    <comment_count>1</comment_count>
      <attachid>114489</attachid>
    <who name="Takashi Toyoshima">toyoshim</who>
    <bug_when>2011-11-10 06:47:36 -0800</bug_when>
    <thetext>Created attachment 114489
interface plan

I&apos;m planning to implement the interface like this.

Darin, could you look into this and check its implementation direction?
I&apos;ll start implementation tomorrow.

Thanks,</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501740</commentid>
    <comment_count>2</comment_count>
      <attachid>114904</attachid>
    <who name="Takashi Toyoshima">toyoshim</who>
    <bug_when>2011-11-14 02:14:18 -0800</bug_when>
    <thetext>Created attachment 114904
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501742</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-14 02:16:14 -0800</bug_when>
    <thetext>Please wait for approval from fishd@chromium.org before submitting because this patch contains changes to the Chromium public API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501809</commentid>
    <comment_count>4</comment_count>
      <attachid>114904</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2011-11-14 05:06:49 -0800</bug_when>
    <thetext>Comment on attachment 114904
Patch

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

[Note: I&apos;m not a WebKit reviewer.]

&gt; Source/WebCore/websockets/WebSocketChannel.h:72
&gt; +    virtual bool send(const char* data, int length);

This overload might be confusing because it isn&apos;t clear whether this version sends a text message or a binary message; maybe we should rename the first overload to &quot;sendText&quot; and the other three to &quot;sendBinary&quot;.

&gt; Source/WebKit/chromium/public/WebWebSocketChannel.h:71
&gt; +    virtual bool send(const WebString&amp; message);
&gt; +    virtual bool send(const WebData&amp; binaryData);

The above two could be &quot;sendText&quot; and &quot;sendBinary&quot;, as pointed out above.

&gt; Source/WebKit/chromium/public/WebWebSocketChannel.h:75
&gt; +    virtual void connect(const WebURL&amp;, const WebString&amp; protocol);
&gt; +    virtual WebString subprotocol();
&gt; +    virtual bool send(const WebString&amp; message);
&gt; +    virtual bool send(const WebData&amp; binaryData);
&gt; +    virtual unsigned long bufferedAmount() const;
&gt; +    virtual void close(int code, const WebString&amp; reason);
&gt; +    virtual void fail(const WebString&amp; reason);
&gt; +    virtual void disconnect();

Why did you make these functions virtual?

&gt; Source/WebKit/chromium/public/WebWebSocketChannel.h:79
&gt; +    virtual ~WebWebSocketChannel();

I guess private destructor won&apos;t compile because nobody can call this destructor (hence nobody can free any instance). IMO this destructor has to be public.

&gt; Source/WebKit/chromium/public/WebWebSocketChannelClient.h:47
&gt; +    virtual ~WebWebSocketChannelClient() { };

Semicolon is not necessary.

&gt; Source/WebKit/chromium/src/WebSocketChannelClientPrivate.h:48
&gt; +    WebSocketChannelClientPrivate(WebKit::WebWebSocketChannelClient* client) : m_private(client) { };

Semicolon is not necessary.

&gt; Source/WebKit/chromium/src/WebWebSocketChannel.cpp:74
&gt; +      delete m_client;

- Wrong indent. (hey, why did our style checker overlook this?)

- I think it&apos;s recommended to use WebPrivateOwnPtr to avoid writing &quot;delete&quot; manually.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502459</commentid>
    <comment_count>5</comment_count>
      <attachid>114904</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-11-14 16:43:42 -0800</bug_when>
    <thetext>Comment on attachment 114904
Patch

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

&gt; Source/WebKit/chromium/public/WebWebSocketChannel.h:52
&gt; +class WebWebSocketChannel {

ouch, the &quot;WebWeb&quot; prefix makes my head hurt! ;-)

since this is in the WebKit namespace, can we just call this one WebSocketChannel too?

&gt;&gt; Source/WebKit/chromium/public/WebWebSocketChannel.h:75
&gt;&gt; +    virtual void disconnect();
&gt; 
&gt; Why did you make these functions virtual?

I have the same question.

&gt; Source/WebKit/chromium/public/WebWebSocketChannel.h:82
&gt; +    WebCore::WebSocketChannelClientPrivate* m_client;

it is a bit atypical to store an additional pointer on classes like this.

perhaps it would be better to make WebKit::WebSocketChannel be a class with pure virtual functions (like WebFrame), and then provide a WebKit::WebSocketChannel::create() function that returns a WebKit::WebSocketChannel pointer.  You would then create WebSocketChannelImpl.{h,cpp}.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502697</commentid>
    <comment_count>6</comment_count>
      <attachid>115112</attachid>
    <who name="Takashi Toyoshima">toyoshim</who>
    <bug_when>2011-11-15 00:25:10 -0800</bug_when>
    <thetext>Created attachment 115112
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502699</commentid>
    <comment_count>7</comment_count>
      <attachid>114904</attachid>
    <who name="Takashi Toyoshima">toyoshim</who>
    <bug_when>2011-11-15 00:30:08 -0800</bug_when>
    <thetext>Comment on attachment 114904
Patch

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

&gt;&gt; Source/WebCore/websockets/WebSocketChannel.h:72
&gt;&gt; +    virtual bool send(const char* data, int length);
&gt; 
&gt; This overload might be confusing because it isn&apos;t clear whether this version sends a text message or a binary message; maybe we should rename the first overload to &quot;sendText&quot; and the other three to &quot;sendBinary&quot;.

I see, but I&apos;d like to split these refactoring into another change.
Because that change will affect other WebSocket related files.
It make the purpose of this change vague.

&gt;&gt; Source/WebKit/chromium/public/WebWebSocketChannel.h:52
&gt;&gt; +class WebWebSocketChannel {
&gt; 
&gt; ouch, the &quot;WebWeb&quot; prefix makes my head hurt! ;-)
&gt; 
&gt; since this is in the WebKit namespace, can we just call this one WebSocketChannel too?

Now, I try to rename it as WebKit::WebSocketChannel and WebKit::WebSocketChannelClient.
But I have a name confliction problem.

We can access the lower prioritized header by #include_next directive. But, the directive is not used in WebKit now.

Fortunately, WebKit public headers have higher priority than WebCore headers.
And WebCore files can be accessed with &apos;websockets/&apos; prefix like #include &quot;websockets/WebSocketChannel.h&quot;.
But, in both cases, we must have another policy on ifdef idiom which is used to avoid duplicated include on the head of header files.
The first WebSocketChannel_h definition disallow to include the second one. It means we must define another unique name for public headers.

Do you have any idea on that?
For now, I keep class names unchanged in the next change.

&gt;&gt; Source/WebKit/chromium/public/WebWebSocketChannel.h:71
&gt;&gt; +    virtual bool send(const WebData&amp; binaryData);
&gt; 
&gt; The above two could be &quot;sendText&quot; and &quot;sendBinary&quot;, as pointed out above.

Done.

&gt;&gt;&gt; Source/WebKit/chromium/public/WebWebSocketChannel.h:75
&gt;&gt;&gt; +    virtual void disconnect();
&gt;&gt; 
&gt;&gt; Why did you make these functions virtual?
&gt; 
&gt; I have the same question.

Sorry, I mistakenly think that all public WebKit API methods must be virtual function.

But, now I decide to move implementation into WebSocketChannelImpl.{h,cpp}.
So, I keep them virtual functions.

&gt;&gt; Source/WebKit/chromium/public/WebWebSocketChannel.h:79
&gt;&gt; +    virtual ~WebWebSocketChannel();
&gt; 
&gt; I guess private destructor won&apos;t compile because nobody can call this destructor (hence nobody can free any instance). IMO this destructor has to be public.

I think caller just call disconnect() instead of delete, then this object itself calls &apos;delete this&apos; in disconnect().
But it could bring confusion of object ownership.
I fixed.

&gt;&gt; Source/WebKit/chromium/public/WebWebSocketChannel.h:82
&gt;&gt; +    WebCore::WebSocketChannelClientPrivate* m_client;
&gt; 
&gt; it is a bit atypical to store an additional pointer on classes like this.
&gt; 
&gt; perhaps it would be better to make WebKit::WebSocketChannel be a class with pure virtual functions (like WebFrame), and then provide a WebKit::WebSocketChannel::create() function that returns a WebKit::WebSocketChannel pointer.  You would then create WebSocketChannelImpl.{h,cpp}.

Done.

&gt;&gt; Source/WebKit/chromium/public/WebWebSocketChannelClient.h:47
&gt;&gt; +    virtual ~WebWebSocketChannelClient() { };
&gt; 
&gt; Semicolon is not necessary.

Done.

&gt;&gt; Source/WebKit/chromium/src/WebSocketChannelClientPrivate.h:48
&gt;&gt; +    WebSocketChannelClientPrivate(WebKit::WebWebSocketChannelClient* client) : m_private(client) { };
&gt; 
&gt; Semicolon is not necessary.

Done.

&gt;&gt; Source/WebKit/chromium/src/WebWebSocketChannel.cpp:74
&gt;&gt; +      delete m_client;
&gt; 
&gt; - Wrong indent. (hey, why did our style checker overlook this?)
&gt; 
&gt; - I think it&apos;s recommended to use WebPrivateOwnPtr to avoid writing &quot;delete&quot; manually.

&gt; Wrong indent
Fixed.

&gt; WebPrivateOwnPtr
As Darin suggested, I move its implementation into WebWebSocketChannelImpl.
As a result, I use RefPtr and OwnPtr for each member.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502838</commentid>
    <comment_count>8</comment_count>
      <attachid>114904</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2011-11-15 05:44:20 -0800</bug_when>
    <thetext>Comment on attachment 114904
Patch

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

&gt;&gt;&gt; Source/WebCore/websockets/WebSocketChannel.h:72
&gt;&gt;&gt; +    virtual bool send(const char* data, int length);
&gt;&gt; 
&gt;&gt; This overload might be confusing because it isn&apos;t clear whether this version sends a text message or a binary message; maybe we should rename the first overload to &quot;sendText&quot; and the other three to &quot;sendBinary&quot;.
&gt; 
&gt; I see, but I&apos;d like to split these refactoring into another change.
&gt; Because that change will affect other WebSocket related files.
&gt; It make the purpose of this change vague.

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502839</commentid>
    <comment_count>9</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2011-11-15 05:46:37 -0800</bug_when>
    <thetext>The patch sounds OK to me. [Note: I&apos;m not a WebKit reviewer yet.]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502999</commentid>
    <comment_count>10</comment_count>
    <who name="Takashi Toyoshima">toyoshim</who>
    <bug_when>2011-11-15 09:56:45 -0800</bug_when>
    <thetext>Thanks Yuta.

So, Darin,
I&apos;d be happy if you could review this change again.

My best regards on your precious time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>503028</commentid>
    <comment_count>11</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-11-15 10:27:47 -0800</bug_when>
    <thetext>It seems odd to me that you are adding new stuff to the WebCore namespace not in the WebCore directory.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>503051</commentid>
    <comment_count>12</comment_count>
    <who name="Takashi Toyoshima">toyoshim</who>
    <bug_when>2011-11-15 10:51:54 -0800</bug_when>
    <thetext>Oh, I see.
I read MediaPlayerPrivateChromium.cpp but I miss MediaPlayerPrivate itself is implemented in WebCore.
So, should I move them into WebCore/websocket/?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>503073</commentid>
    <comment_count>13</comment_count>
    <who name="Takashi Toyoshima">toyoshim</who>
    <bug_when>2011-11-15 11:13:31 -0800</bug_when>
    <thetext>I have another idea to merge WebSocketChannelClientPrivate to WebWebSocketChannelImpl.
It could be more reasonable?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>503140</commentid>
    <comment_count>14</comment_count>
      <attachid>115216</attachid>
    <who name="Takashi Toyoshima">toyoshim</who>
    <bug_when>2011-11-15 12:15:43 -0800</bug_when>
    <thetext>Created attachment 115216
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504259</commentid>
    <comment_count>15</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-11-16 14:29:55 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; Now, I try to rename it as WebKit::WebSocketChannel and WebKit::WebSocketChannelClient.
&gt; But I have a name confliction problem.
&gt; 
&gt; We can access the lower prioritized header by #include_next directive. But, the directive is not used in WebKit now.
&gt; 
&gt; Fortunately, WebKit public headers have higher priority than WebCore headers.
&gt; And WebCore files can be accessed with &apos;websockets/&apos; prefix like #include &quot;websockets/WebSocketChannel.h&quot;.
&gt; But, in both cases, we must have another policy on ifdef idiom which is used to avoid duplicated include on the head of header files.
&gt; The first WebSocketChannel_h definition disallow to include the second one. It means we must define another unique name for public headers.
&gt; 
&gt; Do you have any idea on that?
&gt; For now, I keep class names unchanged in the next change.

Wow, that&apos;s really unfortunate.  Normally, WebCore stuff does not use the Web* prefix.  I wish we could just call the WebCore types SocketChannel, dropping the Web prefix there.  But, assuming that is not possible, then how about just using a different name for the WebKit API?  Maybe you could just call this WebSocket?

I realize that WebCore also defines WebSocket, but it looks like that may not cause a conflict here since you are only exposing the lower-level WebSocketChannel functionality.  To the embedder, referring to the channel as a WebSocket won&apos;t seem strange.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504309</commentid>
    <comment_count>16</comment_count>
      <attachid>115458</attachid>
    <who name="Takashi Toyoshima">toyoshim</who>
    <bug_when>2011-11-16 15:19:18 -0800</bug_when>
    <thetext>Created attachment 115458
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504314</commentid>
    <comment_count>17</comment_count>
    <who name="Takashi Toyoshima">toyoshim</who>
    <bug_when>2011-11-16 15:24:22 -0800</bug_when>
    <thetext>Thanks Darin,
Your suggestion works fine.
I revised my patch based on your suggestion, s/WebWebSocketChannel/WebSocket/g.

I&apos;d happy if you could review it again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505534</commentid>
    <comment_count>18</comment_count>
      <attachid>115458</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-11-17 23:21:08 -0800</bug_when>
    <thetext>Comment on attachment 115458
Patch

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

&gt; Source/WebKit/chromium/ChangeLog:11
&gt; +        exported as WebWebSocketChannel because it is the class which implement

This ChangeLog entry needs to be revised given the renaming.

&gt; Source/WebKit/chromium/public/WebSocket.h:37
&gt; +namespace WebCore {

nit: In other header files, we just do this all on one line:

  namespace WebCore { class WebSocketChannel; }

I think that might be nicer here too--at least for consistency sake.

&gt; Source/WebKit/chromium/public/WebSocket.h:66
&gt; +    static WebSocket* create(WebDocument*, WebSocketClient*);

nit: you need to add WEBKIT_EXPORT to static methods so that they get exported from WebKit when it is built as a DLL (to support the component build).

nit: I recommend putting a new line above the &apos;create&apos; function to separate it from the enum.

nit: Pass WebDocument as |const WebDocument&amp;|

&gt; Source/WebKit/chromium/public/WebSocketClient.h:46
&gt; +    };

same nit: add new line after enum definition.

&gt; Source/WebKit/chromium/src/WebSocketImpl.cpp:62
&gt; +    ScriptExecutionContext* context = static_cast&lt;PassRefPtr&lt;Document&gt; &gt;(*document).get();

Hmm... too bad WebSocketChannel::create doesn&apos;t take a PassRefPtr type...

How about this instead:

  m_private = WebSocketChannel::create(PassRefPtr&lt;Document&gt;(document).get(), this);

&gt; Source/WebKit/chromium/src/WebSocketImpl.cpp:93
&gt; +    if (!m_private)

see WebNode.cpp where we don&apos;t bother with these null checks.  WebSocket::create() should probably return NULL if we were unable to create a m_private.  that way you shouldn&apos;t have to worry about m_private being null here and in other methods.

you can decide separately if you want to allow construction of a WebSocket with a null m_client.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505587</commentid>
    <comment_count>19</comment_count>
      <attachid>115761</attachid>
    <who name="Takashi Toyoshima">toyoshim</who>
    <bug_when>2011-11-18 01:04:55 -0800</bug_when>
    <thetext>Created attachment 115761
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505591</commentid>
    <comment_count>20</comment_count>
      <attachid>115458</attachid>
    <who name="Takashi Toyoshima">toyoshim</who>
    <bug_when>2011-11-18 01:05:55 -0800</bug_when>
    <thetext>Comment on attachment 115458
Patch

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

&gt;&gt; Source/WebKit/chromium/ChangeLog:11
&gt;&gt; +        exported as WebWebSocketChannel because it is the class which implement
&gt; 
&gt; This ChangeLog entry needs to be revised given the renaming.

Sorry. I missed it.

&gt;&gt; Source/WebKit/chromium/public/WebSocket.h:37
&gt;&gt; +namespace WebCore {
&gt; 
&gt; nit: In other header files, we just do this all on one line:
&gt; 
&gt;   namespace WebCore { class WebSocketChannel; }
&gt; 
&gt; I think that might be nicer here too--at least for consistency sake.

Done.

I expanded it because check-webkit-style show a error on that before.
But, now I fixed and re-ran check-webkit-style, then it pass without any error.
Sorry for bothering.

&gt;&gt; Source/WebKit/chromium/public/WebSocket.h:66
&gt;&gt; +    static WebSocket* create(WebDocument*, WebSocketClient*);
&gt; 
&gt; nit: you need to add WEBKIT_EXPORT to static methods so that they get exported from WebKit when it is built as a DLL (to support the component build).
&gt; 
&gt; nit: I recommend putting a new line above the &apos;create&apos; function to separate it from the enum.
&gt; 
&gt; nit: Pass WebDocument as |const WebDocument&amp;|

Done.

&gt;&gt; Source/WebKit/chromium/public/WebSocketClient.h:46
&gt;&gt; +    };
&gt; 
&gt; same nit: add new line after enum definition.

Done.

&gt;&gt; Source/WebKit/chromium/src/WebSocketImpl.cpp:62
&gt;&gt; +    ScriptExecutionContext* context = static_cast&lt;PassRefPtr&lt;Document&gt; &gt;(*document).get();
&gt; 
&gt; Hmm... too bad WebSocketChannel::create doesn&apos;t take a PassRefPtr type...
&gt; 
&gt; How about this instead:
&gt; 
&gt;   m_private = WebSocketChannel::create(PassRefPtr&lt;Document&gt;(document).get(), this);

Thank you for good suggestion.
That work fine and looks better than before.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505592</commentid>
    <comment_count>21</comment_count>
    <who name="Takashi Toyoshima">toyoshim</who>
    <bug_when>2011-11-18 01:08:08 -0800</bug_when>
    <thetext>Greetings,

Darin, thank you for your precious review.

I revised again.
I&apos;d be happy if you have time to review it again.

Thank you so much.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505871</commentid>
    <comment_count>22</comment_count>
      <attachid>115761</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-11-18 09:52:53 -0800</bug_when>
    <thetext>Comment on attachment 115761
Patch

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

&gt; Source/WebKit/chromium/src/WebSocket.cpp:43
&gt; +    WebSocketImpl* websocket = new WebSocketImpl(document, client);

nit: WebKit style is to use OwnPtr here.

  OwnPtr&lt;WebSocketImpl&gt; websocket = adoptPtr(new WebSocketImpl(document, client));
  if (websocket &amp;&amp; websocket-&gt;isNull())
      return 0;
  return websocket.leakPtr();</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506118</commentid>
    <comment_count>23</comment_count>
      <attachid>115887</attachid>
    <who name="Takashi Toyoshima">toyoshim</who>
    <bug_when>2011-11-18 15:19:47 -0800</bug_when>
    <thetext>Created attachment 115887
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506127</commentid>
    <comment_count>24</comment_count>
    <who name="Takashi Toyoshima">toyoshim</who>
    <bug_when>2011-11-18 15:27:02 -0800</bug_when>
    <thetext>Oh, I miss your r+ because I upload new patch.
New patch is just changed by using OwnPtr as you mentioned.

I&apos;m happy if you or another guy could make it r+ and cq+?
Because I&apos;m not a WebKit committer yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506338</commentid>
    <comment_count>25</comment_count>
      <attachid>115887</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-18 23:20:13 -0800</bug_when>
    <thetext>Comment on attachment 115887
Patch

Clearing flags on attachment: 115887

Committed r100849: &lt;http://trac.webkit.org/changeset/100849&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506339</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-18 23:20:18 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114489</attachid>
            <date>2011-11-10 06:47:36 -0800</date>
            <delta_ts>2011-11-14 02:14:11 -0800</delta_ts>
            <desc>interface plan</desc>
            <filename>interface.diff</filename>
            <type>text/plain</type>
            <size>6040</size>
            <attacher name="Takashi Toyoshima">toyoshim</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldlYlNvY2tldENo
YW5uZWwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldlYlNvY2tldENoYW5u
ZWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMTQ4ODhkCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViV2ViU29ja2V0Q2hh
bm5lbC5oCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xl
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJXZWJTb2NrZXRDaGFubmVsX2gKKyNk
ZWZpbmUgV2ViV2ViU29ja2V0Q2hhbm5lbF9oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNp
bmNsdWRlICJXZWJQcml2YXRlUHRyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgV2Vi
U29ja2V0Q2hhbm5lbDsgfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViU3RyaW5n
OworY2xhc3MgV2ViVVJMOworY2xhc3MgV2ViV2ViU29ja2V0Q2hhbm5lbENsaWVudDsKKworY2xh
c3MgV2ViV2ViU29ja2V0Q2hhbm5lbCB7CitwdWJsaWM6CisgICAgZW51bSBDbG9zZUV2ZW50Q29k
ZSB7CisgICAgICAgIENsb3NlRXZlbnRDb2RlTm90U3BlY2lmaWVkID0gLTEsCisgICAgICAgIENs
b3NlRXZlbnRDb2RlTm9ybWFsQ2xvc3VyZSA9IDEwMDAsCisgICAgICAgIENsb3NlRXZlbnRDb2Rl
R29pbmdBd2F5ID0gMTAwMSwKKyAgICAgICAgQ2xvc2VFdmVudENvZGVQcm90b2NvbEVycm9yID0g
MTAwMiwKKyAgICAgICAgQ2xvc2VFdmVudENvZGVVbnN1cHBvcnRlZERhdGEgPSAxMDAzLAorICAg
ICAgICBDbG9zZUV2ZW50Q29kZUZyYW1lVG9vTGFyZ2UgPSAxMDA0LAorICAgICAgICBDbG9zZUV2
ZW50Q29kZU5vU3RhdHVzUmN2ZCA9IDEwMDUsCisgICAgICAgIENsb3NlRXZlbnRDb2RlQWJub3Jt
YWxDbG9zdXJlID0gMTAwNiwKKyAgICAgICAgQ2xvc2VFdmVudENvZGVJbnZhbGlkVVRGOCA9IDEw
MDcsCisgICAgICAgIENsb3NlRXZlbnRDb2RlTWluaW11bVVzZXJEZWZpbmVkID0gMzAwMCwKKyAg
ICAgICAgQ2xvc2VFdmVudENvZGVNYXhpbXVtVXNlckRlZmluZWQgPSA0OTk5CisgICAgfTsKKyAg
ICBXZWJXZWJTb2NrZXRDaGFubmVsKFdlYldlYlNvY2tldENoYW5uZWxDbGllbnQqIGNsaWVudCk7
CisgICAgdmlydHVhbCB+V2ViV2ViU29ja2V0Q2hhbm5lbCgpOworCisgICAgdmlydHVhbCB2b2lk
IGNvbm5lY3QoY29uc3QgV2ViVVJMJiwgY29uc3QgV2ViU3RyaW5nJiBwcm90b2NvbCk7CisgICAg
dmlydHVhbCBXZWJTdHJpbmcgc3VicHJvdG9jb2woKTsKKyAgICB2aXJ0dWFsIGJvb2wgc2VuZChj
b25zdCBXZWJTdHJpbmcmIG1lc3NhZ2UpOworICAgIC8vIEZJWE1FOiBkZWZpbmUgaW50ZXJmYWNl
IHRvIHNlbmQgYmluYXJ5LgorICAgIHZpcnR1YWwgdW5zaWduZWQgbG9uZyBidWZmZXJlZEFtb3Vu
dCgpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBjbG9zZShpbnQgY29kZSwgY29uc3QgV2ViU3Ry
aW5nJiByZWFzb24pOworICAgIHZpcnR1YWwgdm9pZCBmYWlsKGNvbnN0IFdlYlN0cmluZyYgcmVh
c29uKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVjdCgpOworCitwcml2YXRlOgorICAgIFdl
YlByaXZhdGVQdHI8V2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbD4gbV9wcml2YXRlOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJXZWJTb2NrZXRDaGFubmVsX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldlYlNvY2tldENo
YW5uZWxDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldlYlNvY2tl
dENoYW5uZWxDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNGNi
YWQ3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
V2ViU29ja2V0Q2hhbm5lbENsaWVudC5oCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlv
bi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJXZWJT
b2NrZXRDaGFubmVsQ2xpZW50X2gKKyNkZWZpbmUgV2ViV2ViU29ja2V0Q2hhbm5lbENsaWVudF9o
CisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJWZWN0b3IuaCIKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlN0cmluZzsKKworY2xhc3MgV2ViV2ViU29ja2V0
Q2hhbm5lbENsaWVudCB7CitwdWJsaWM6CisgICAgZW51bSBDbG9zaW5nSGFuZHNoYWtlQ29tcGxl
dGlvblN0YXR1cyB7CisgICAgICAgIENsb3NpbmdIYW5kc2hha2VJbmNvbXBsZXRlLAorICAgICAg
ICBDbG9zaW5nSGFuZHNoYWtlQ29tcGxldGUKKyAgICB9OworICAgIHZpcnR1YWwgfldlYldlYlNv
Y2tldENoYW5uZWxDbGllbnQoKSB7IH07CisgICAgdmlydHVhbCB2b2lkIGRpZENvbm5lY3QoKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKGNvbnN0IFdlYlN0cmluZyYg
bWVzc2FnZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQmluYXJ5RGF0YShXZWJW
ZWN0b3I8Y2hhcj4mIGJpbmFyeURhdGEpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZU1lc3NhZ2VFcnJvcigpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRDbG9zaW5nSGFu
ZHNoYWtlKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRDbG9zZSh1bnNpZ25lZCBsb25nIGJ1
ZmZlcmVkQW1vdW50LCBDbG9zaW5nSGFuZHNoYWtlQ29tcGxldGlvblN0YXR1cywgdW5zaWduZWQg
c2hvcnQgY29kZSwgY29uc3QgV2ViU3RyaW5nJiByZWFzb24pID0gMDsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViV2ViU29ja2V0Q2hhbm5lbENsaWVudF9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114904</attachid>
            <date>2011-11-14 02:14:18 -0800</date>
            <delta_ts>2011-11-15 05:44:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72016-20111114191416.patch</filename>
            <type>text/plain</type>
            <size>23729</size>
            <attacher name="Takashi Toyoshima">toyoshim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTk3NzQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmM2YwYTY4YzQ1N2Q0ZDM1
YzI1MGFkOTM3OTIyMmQ0MTg4MTUxMjRhLi5kOTI4YjkyNTJiMzViOWRhZDIzNzFjZDUyMWNmNmI1
ZWQ1NWUxYTYxIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTEtMTEtMTQgIFRha2Fz
aGkgVG95b3NoaW1hICA8dG95b3NoaW1AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1
bV0gW1dlYlNvY2tldF0gZXhwb3J0IFdlYlNvY2tldENoYW5uZWwgaW50ZXJmYWNlIGZvciBwbHVn
aW5zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjAx
NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBh
IGludGVyZmFjZSB0byBzZW5kIHJhdyBiaW5hcnkgZGF0YS4KKyAgICAgICAgVGhpcyBpbnRlcmZh
Y2UgaXMgdXNlZCBieSBXZWJXZWJTb2NrZXRDaGFubmVsIGltcGxlbWVudGF0aW9uCisgICAgICAg
IGluIFdlYktpdCBBUEkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2UganVzdCBleHBv
cnQgYSBpbnRlcmZhY2UuCisKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6c2VuZCk6CisgICAgICAg
ICogd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmg6CisKIDIwMTEtMTEtMDkgIEFsZXhhbmRy
ZSBFbGlhcyAgPGFlbGlhc0Bnb29nbGUuY29tPgogCiAgICAgICAgIFtjaHJvbWl1bV0gQWRkIGRy
YXctdGltZSBzY2FsZSBkZWx0YSB0byBjb21wb3NpdG9yIHRocmVhZApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwppbmRleCBmMGNiYTU4OTg4MGI0MGJhYjk0ODQyMDUxYmYyZmY3NTNkNWFhZDNhLi4w
ZTkwYjkyYTM4NDk1YjJkM2FhYzZjMGMzMTcwOGYxZDliMDczY2UwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDExLTExLTE0ICBUYWthc2hpIFRveW9zaGlt
YSAgPHRveW9zaGltQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIFtXZWJTb2Nr
ZXRdIGV4cG9ydCBXZWJTb2NrZXRDaGFubmVsIGludGVyZmFjZSBmb3IgcGx1Z2lucworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzIwMTYKKworICAgICAg
ICBBZGQgV2ViV2ViU29ja2V0Q2hhbm5lbCBhbmQgV2ViV2ViU29ja2V0Q2hhbm5lbENsaWVudCB0
byBXZWJLaXQgQVBJLgorICAgICAgICBDdXJyZW50bHksIG9ubHkgV2ViU29ja2V0U3RyZWFtSGFu
ZGxlIGNsYXNzIGlzIGV4cG9ydGVkIHRvIFdlYktpdCBBUEkuCisgICAgICAgIFdlYlNvY2tldFN0
cmVhbUhhbmRsZSBpbXBsZW1lbnRzIGJpLWRpcmVjdGlvbmFsIGNvbW11bmljYXRpb24gcG9ydHMu
CisgICAgICAgIElmIHBsdWdpbnMgaGFuZGxlcyB0aGUgV2ViU29ja2V0IHByb3RvY29sLCBXZWJT
b2NrZXRDaGFubmVsIG11c3QgYmUKKyAgICAgICAgZXhwb3J0ZWQgYXMgV2ViV2ViU29ja2V0Q2hh
bm5lbCBiZWNhdXNlIGl0IGlzIHRoZSBjbGFzcyB3aGljaCBpbXBsZW1lbnQKKyAgICAgICAgdGhl
IFdlYlNvY2tldCBwcm90b2NvbCBzdGFjay4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdC5neXA6CisgICAgICAgICogcHVibGljL1dlYldl
YlNvY2tldENoYW5uZWwuaDogQWRkZWQuCisgICAgICAgICogcHVibGljL1dlYldlYlNvY2tldENo
YW5uZWxDbGllbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYldlYlNvY2tldENoYW5u
ZWxDbGllbnQ6On5XZWJXZWJTb2NrZXRDaGFubmVsQ2xpZW50KToKKyAgICAgICAgKiBzcmMvV2Vi
U29ja2V0Q2hhbm5lbENsaWVudFByaXZhdGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OldlYlNvY2tldENoYW5uZWxDbGllbnRQcml2YXRlOjp+V2ViU29ja2V0Q2hhbm5lbENsaWVudFBy
aXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbENsaWVudFByaXZhdGU6
OmRpZENvbm5lY3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbENsaWVudFBy
aXZhdGU6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENo
YW5uZWxDbGllbnRQcml2YXRlOjpkaWRSZWNlaXZlQmluYXJ5RGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJTb2NrZXRDaGFubmVsQ2xpZW50UHJpdmF0ZTo6ZGlkUmVjZWl2ZU1lc3NhZ2VFcnJv
cik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsQ2xpZW50UHJpdmF0ZTo6ZGlk
U3RhcnRDbG9zaW5nSGFuZHNoYWtlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5u
ZWxDbGllbnRQcml2YXRlOjpkaWRDbG9zZSk6CisgICAgICAgICogc3JjL1dlYlNvY2tldENoYW5u
ZWxDbGllbnRQcml2YXRlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hh
bm5lbENsaWVudFByaXZhdGU6OldlYlNvY2tldENoYW5uZWxDbGllbnRQcml2YXRlKToKKyAgICAg
ICAgKiBzcmMvV2ViV2ViU29ja2V0Q2hhbm5lbC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
OjpXZWJXZWJTb2NrZXRDaGFubmVsOjpXZWJXZWJTb2NrZXRDaGFubmVsKToKKyAgICAgICAgKFdl
YktpdDo6V2ViV2ViU29ja2V0Q2hhbm5lbDo6fldlYldlYlNvY2tldENoYW5uZWwpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJXZWJTb2NrZXRDaGFubmVsOjpjb25uZWN0KToKKyAgICAgICAgKFdlYktp
dDo6V2ViV2ViU29ja2V0Q2hhbm5lbDo6c3VicHJvdG9jb2wpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJXZWJTb2NrZXRDaGFubmVsOjpzZW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViV2ViU29ja2V0
Q2hhbm5lbDo6YnVmZmVyZWRBbW91bnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJXZWJTb2NrZXRD
aGFubmVsOjpjbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYldlYlNvY2tldENoYW5uZWw6OmZh
aWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJXZWJTb2NrZXRDaGFubmVsOjpkaXNjb25uZWN0KToK
KwogMjAxMS0xMS0wOSAgQWxleGFuZHJlIEVsaWFzICA8YWVsaWFzQGdvb2dsZS5jb20+CiAKICAg
ICAgICAgW2Nocm9taXVtXSBBZGQgZHJhdy10aW1lIHNjYWxlIGRlbHRhIHRvIGNvbXBvc2l0b3Ig
dGhyZWFkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENo
YW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNw
cAppbmRleCA3NzA4NjVmNDYwNjdlNjYyNTE4YTBjMzk0MzkzNGI4YTM3MTIyMDFjLi4wNjEwZmJm
MGI3NGY2ZDk4MzZhMTkwZmU2OGMxNTE1MjQ4YjAzZDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTE4Niw2ICsxODYsMTQgQEAgYm9v
bCBXZWJTb2NrZXRDaGFubmVsOjpzZW5kKGNvbnN0IEJsb2ImIGJpbmFyeURhdGEpCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKK2Jvb2wgV2ViU29ja2V0Q2hhbm5lbDo6c2VuZChjb25zdCBjaGFyKiBk
YXRhLCBpbnQgbGVuZ3RoKQoreworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAl
cCBzZW5kIGJpbmFyeSAlcCAoJWRCKSIsIHRoaXMsIGRhdGEsIGxlbmd0aCk7CisgICAgQVNTRVJU
KCFtX3VzZUhpeGllNzZQcm90b2NvbCk7CisgICAgZW5xdWV1ZVJhd0ZyYW1lKE9wQ29kZUJpbmFy
eSwgZGF0YSwgbGVuZ3RoKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdW5zaWduZWQgbG9uZyBX
ZWJTb2NrZXRDaGFubmVsOjpidWZmZXJlZEFtb3VudCgpIGNvbnN0CiB7CiAgICAgTE9HKE5ldHdv
cmssICJXZWJTb2NrZXRDaGFubmVsICVwIGJ1ZmZlcmVkQW1vdW50IiwgdGhpcyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaCBiL1NvdXJj
ZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oCmluZGV4IDg5N2VmNjBhZTAy
NmZkZTQxMWMyYmRiMDA0ODg0N2RlZjA3NjI5MTQuLjNhOTQzNjY1Y2RiMTAzZWY0ZjBhNzU0ODli
ZjRhMmY3NjAzODYwZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2Vi
U29ja2V0Q2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0
Q2hhbm5lbC5oCkBAIC02OSw2ICs2OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc2Vu
ZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogICAgIHZpcnR1YWwgYm9vbCBzZW5kKGNvbnN0IEFy
cmF5QnVmZmVyJik7CiAgICAgdmlydHVhbCBib29sIHNlbmQoY29uc3QgQmxvYiYpOworICAgIHZp
cnR1YWwgYm9vbCBzZW5kKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpOwogICAgIHZpcnR1
YWwgdW5zaWduZWQgbG9uZyBidWZmZXJlZEFtb3VudCgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9p
ZCBjbG9zZShpbnQgY29kZSwgY29uc3QgU3RyaW5nJiByZWFzb24pOyAvLyBTdGFydCBjbG9zaW5n
IGhhbmRzaGFrZS4KICAgICB2aXJ0dWFsIHZvaWQgZmFpbChjb25zdCBTdHJpbmcmIHJlYXNvbik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKaW5kZXggNWQ4M2M4NGIwMmI2M2IyMTU0M2VkN2Y5
MDUxMDJiNmJjYjg3OTgyOC4uODgyOWNkMDMwMmVlOTg3MjM1OGVjNGE3ZWY4ZGU5YzAxZTkxYmE1
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtMzIwLDYgKzMyMCw4IEBACiAgICAg
ICAgICAgICAgICAgJ3B1YmxpYy9XZWJWZWN0b3IuaCcsCiAgICAgICAgICAgICAgICAgJ3B1Ymxp
Yy9XZWJWaWV3LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVmlld0NsaWVudC5oJywK
KyAgICAgICAgICAgICAgICAncHVibGljL1dlYldlYlNvY2tldENoYW5uZWwuaCcsCisgICAgICAg
ICAgICAgICAgJ3B1YmxpYy9XZWJXZWJTb2NrZXRDaGFubmVsQ2xpZW50LmgnLAogICAgICAgICAg
ICAgICAgICdwdWJsaWMvV2ViV2lkZ2V0LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2Vi
V2lkZ2V0Q2xpZW50LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViV29ya2VyLmgnLApA
QCAtNjAyLDYgKzYwNCw4IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJTZXR0aW5nc0ltcGwu
aCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJTaGFyZWRXb3JrZXJJbXBsLmNwcCcsCiAgICAg
ICAgICAgICAgICAgJ3NyYy9XZWJTaGFyZWRXb3JrZXJJbXBsLmgnLAorICAgICAgICAgICAgICAg
ICdzcmMvV2ViU29ja2V0Q2hhbm5lbENsaWVudFByaXZhdGUuY3BwJywKKyAgICAgICAgICAgICAg
ICAnc3JjL1dlYlNvY2tldENoYW5uZWxDbGllbnRQcml2YXRlLmgnLAogICAgICAgICAgICAgICAg
ICdzcmMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGwuY3BwJywKICAgICAgICAgICAg
ICAgICAnc3JjL1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsLmgnLAogICAgICAgICAg
ICAgICAgICdzcmMvV2ViU3BlZWNoSW5wdXRSZXN1bHQuY3BwJywKQEAgLTYyNSw2ICs2MjksNyBA
QAogICAgICAgICAgICAgICAgICdzcmMvV2ViVVJMRXJyb3IuY3BwJywKICAgICAgICAgICAgICAg
ICAnc3JjL1dlYlZpZXdJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJWaWV3SW1w
bC5oJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYldlYlNvY2tldENoYW5uZWwuY3BwJywKICAg
ICAgICAgICAgICAgICAnc3JjL1dlYldvcmtlckJhc2UuY3BwJywKICAgICAgICAgICAgICAgICAn
c3JjL1dlYldvcmtlckJhc2UuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJXb3JrZXJDbGll
bnRJbXBsLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJXZWJTb2NrZXRDaGFubmVsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJX
ZWJTb2NrZXRDaGFubmVsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTk2NzRiZjRhNjFjMmNkNzhjNmJlMGM1N2Vl
Njg5ZDExOTdlMjM1OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYldlYlNvY2tldENoYW5uZWwuaApAQCAtMCwwICsxLDg3IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
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
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2Vi
V2ViU29ja2V0Q2hhbm5lbF9oCisjZGVmaW5lIFdlYldlYlNvY2tldENoYW5uZWxfaAorCisjaW5j
bHVkZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2ViUHJpdmF0ZVB0ci5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIFdlYlNvY2tldENoYW5uZWw7CitjbGFzcyBXZWJTb2NrZXRD
aGFubmVsQ2xpZW50UHJpdmF0ZTsKKworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3Mg
V2ViRGF0YTsKK2NsYXNzIFdlYkRvY3VtZW50OworY2xhc3MgV2ViU3RyaW5nOworY2xhc3MgV2Vi
VVJMOworY2xhc3MgV2ViV2ViU29ja2V0Q2hhbm5lbENsaWVudDsKKworY2xhc3MgV2ViV2ViU29j
a2V0Q2hhbm5lbCB7CitwdWJsaWM6CisgICAgZW51bSBDbG9zZUV2ZW50Q29kZSB7CisgICAgICAg
IENsb3NlRXZlbnRDb2RlTm90U3BlY2lmaWVkID0gLTEsCisgICAgICAgIENsb3NlRXZlbnRDb2Rl
Tm9ybWFsQ2xvc3VyZSA9IDEwMDAsCisgICAgICAgIENsb3NlRXZlbnRDb2RlR29pbmdBd2F5ID0g
MTAwMSwKKyAgICAgICAgQ2xvc2VFdmVudENvZGVQcm90b2NvbEVycm9yID0gMTAwMiwKKyAgICAg
ICAgQ2xvc2VFdmVudENvZGVVbnN1cHBvcnRlZERhdGEgPSAxMDAzLAorICAgICAgICBDbG9zZUV2
ZW50Q29kZUZyYW1lVG9vTGFyZ2UgPSAxMDA0LAorICAgICAgICBDbG9zZUV2ZW50Q29kZU5vU3Rh
dHVzUmN2ZCA9IDEwMDUsCisgICAgICAgIENsb3NlRXZlbnRDb2RlQWJub3JtYWxDbG9zdXJlID0g
MTAwNiwKKyAgICAgICAgQ2xvc2VFdmVudENvZGVJbnZhbGlkVVRGOCA9IDEwMDcsCisgICAgICAg
IENsb3NlRXZlbnRDb2RlTWluaW11bVVzZXJEZWZpbmVkID0gMzAwMCwKKyAgICAgICAgQ2xvc2VF
dmVudENvZGVNYXhpbXVtVXNlckRlZmluZWQgPSA0OTk5CisgICAgfTsKKyAgICBXZWJXZWJTb2Nr
ZXRDaGFubmVsKFdlYkRvY3VtZW50KiwgV2ViV2ViU29ja2V0Q2hhbm5lbENsaWVudCopOworICAg
IHZpcnR1YWwgdm9pZCBjb25uZWN0KGNvbnN0IFdlYlVSTCYsIGNvbnN0IFdlYlN0cmluZyYgcHJv
dG9jb2wpOworICAgIHZpcnR1YWwgV2ViU3RyaW5nIHN1YnByb3RvY29sKCk7CisgICAgdmlydHVh
bCBib29sIHNlbmQoY29uc3QgV2ViU3RyaW5nJiBtZXNzYWdlKTsKKyAgICB2aXJ0dWFsIGJvb2wg
c2VuZChjb25zdCBXZWJEYXRhJiBiaW5hcnlEYXRhKTsKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGxv
bmcgYnVmZmVyZWRBbW91bnQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoaW50IGNv
ZGUsIGNvbnN0IFdlYlN0cmluZyYgcmVhc29uKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmFpbChjb25z
dCBXZWJTdHJpbmcmIHJlYXNvbik7CisgICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5lY3QoKTsKKwor
cHJpdmF0ZToKKyAgICAvLyBDYWxsIGRpc2Nvbm5lY3QoKSBpbnN0ZWFkIG9mIGRlbGV0ZS4KKyAg
ICB2aXJ0dWFsIH5XZWJXZWJTb2NrZXRDaGFubmVsKCk7CisKKyAgICBXZWJQcml2YXRlUHRyPFdl
YkNvcmU6OldlYlNvY2tldENoYW5uZWw+IG1fcHJpdmF0ZTsKKyAgICBXZWJDb3JlOjpXZWJTb2Nr
ZXRDaGFubmVsQ2xpZW50UHJpdmF0ZSogbV9jbGllbnQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmIC8vIFdlYldlYlNvY2tldENoYW5uZWxfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViV2ViU29ja2V0Q2hhbm5lbENsaWVudC5oIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViV2ViU29ja2V0Q2hhbm5lbENsaWVudC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmRjYTg3ZTExY2U0YTYxZDgzMzRiYjhmMjY4OGViMmQxZGI1M2ZhNjQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJXZWJTb2Nr
ZXRDaGFubmVsQ2xpZW50LmgKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYldlYlNvY2tldENo
YW5uZWxDbGllbnRfaAorI2RlZmluZSBXZWJXZWJTb2NrZXRDaGFubmVsQ2xpZW50X2gKKworI2lu
Y2x1ZGUgIldlYkNvbW1vbi5oIgorI2luY2x1ZGUgIldlYkRhdGEuaCIKKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK2NsYXNzIFdlYlN0cmluZzsKKworY2xhc3MgV2ViV2ViU29ja2V0Q2hhbm5lbENs
aWVudCB7CitwdWJsaWM6CisgICAgZW51bSBDbG9zaW5nSGFuZHNoYWtlQ29tcGxldGlvblN0YXR1
cyB7CisgICAgICAgIENsb3NpbmdIYW5kc2hha2VJbmNvbXBsZXRlLAorICAgICAgICBDbG9zaW5n
SGFuZHNoYWtlQ29tcGxldGUKKyAgICB9OworICAgIHZpcnR1YWwgfldlYldlYlNvY2tldENoYW5u
ZWxDbGllbnQoKSB7IH07CisgICAgdmlydHVhbCB2b2lkIGRpZENvbm5lY3QoKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKGNvbnN0IFdlYlN0cmluZyYgbWVzc2FnZSkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQmluYXJ5RGF0YShjb25zdCBXZWJEYXRh
JiBiaW5hcnlEYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRXJy
b3IoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSgpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2xvc2UodW5zaWduZWQgbG9uZyBidWZmZXJlZEFtb3Vu
dCwgQ2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb25TdGF0dXMsIHVuc2lnbmVkIHNob3J0IGNvZGUs
IGNvbnN0IFdlYlN0cmluZyYgcmVhc29uKSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKworI2VuZGlmIC8vIFdlYldlYlNvY2tldENoYW5uZWxDbGllbnRfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU29ja2V0Q2hhbm5lbENsaWVudFByaXZhdGUu
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU29ja2V0Q2hhbm5lbENsaWVudFBy
aXZhdGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU4MTk0NzI5N2ZlODFhNTY1YTk2YWJmOTUwODVkNmJlZjk0
YjIzYzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJT
b2NrZXRDaGFubmVsQ2xpZW50UHJpdmF0ZS5jcHAKQEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENv
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
b25maWcuaCIKKworI2lmIEVOQUJMRShXRUJfU09DS0VUUykKKworI2luY2x1ZGUgIldlYlNvY2tl
dENoYW5uZWxDbGllbnRQcml2YXRlLmgiCisKKyNpbmNsdWRlICJXZWJEYXRhLmgiCisjaW5jbHVk
ZSAiV2ViU3RyaW5nLmgiCisjaW5jbHVkZSAiV2ViV2ViU29ja2V0Q2hhbm5lbENsaWVudC5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1dlYlNvY2tldENoYW5uZWxDbGllbnRQcml2YXRlOjp+
V2ViU29ja2V0Q2hhbm5lbENsaWVudFByaXZhdGUoKQoreworfQorCit2b2lkIFdlYlNvY2tldENo
YW5uZWxDbGllbnRQcml2YXRlOjpkaWRDb25uZWN0KCkKK3sKKyAgICBtX3ByaXZhdGUtPmRpZENv
bm5lY3QoKTsKK30KKwordm9pZCBXZWJTb2NrZXRDaGFubmVsQ2xpZW50UHJpdmF0ZTo6ZGlkUmVj
ZWl2ZU1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQoreworICAgIG1fcHJpdmF0ZS0+ZGlk
UmVjZWl2ZU1lc3NhZ2UoV2ViS2l0OjpXZWJTdHJpbmcobWVzc2FnZSkpOworfQorCit2b2lkIFdl
YlNvY2tldENoYW5uZWxDbGllbnRQcml2YXRlOjpkaWRSZWNlaXZlQmluYXJ5RGF0YShQYXNzT3du
UHRyPFZlY3RvcjxjaGFyPiA+IGJpbmFyeURhdGEpCit7CisgICAgbV9wcml2YXRlLT5kaWRSZWNl
aXZlQmluYXJ5RGF0YShXZWJLaXQ6OldlYkRhdGEoYmluYXJ5RGF0YS0+ZGF0YSgpLCBiaW5hcnlE
YXRhLT5zaXplKCkpKTsKK30KKwordm9pZCBXZWJTb2NrZXRDaGFubmVsQ2xpZW50UHJpdmF0ZTo6
ZGlkUmVjZWl2ZU1lc3NhZ2VFcnJvcigpCit7CisgICAgbV9wcml2YXRlLT5kaWRSZWNlaXZlTWVz
c2FnZUVycm9yKCk7Cit9CisKK3ZvaWQgV2ViU29ja2V0Q2hhbm5lbENsaWVudFByaXZhdGU6OmRp
ZFN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSgpCit7CisgICAgbV9wcml2YXRlLT5kaWRTdGFydENsb3Np
bmdIYW5kc2hha2UoKTsKK30KKwordm9pZCBXZWJTb2NrZXRDaGFubmVsQ2xpZW50UHJpdmF0ZTo6
ZGlkQ2xvc2UodW5zaWduZWQgbG9uZyBidWZmZXJlZEFtb3VudCwgQ2xvc2luZ0hhbmRzaGFrZUNv
bXBsZXRpb25TdGF0dXMgc3RhdHVzLCB1bnNpZ25lZCBzaG9ydCBjb2RlLCBjb25zdCBTdHJpbmcm
IHJlYXNvbikKK3sKKyAgICBtX3ByaXZhdGUtPmRpZENsb3NlKGJ1ZmZlcmVkQW1vdW50LCBzdGF0
aWNfY2FzdDxXZWJLaXQ6OldlYldlYlNvY2tldENoYW5uZWxDbGllbnQ6OkNsb3NpbmdIYW5kc2hh
a2VDb21wbGV0aW9uU3RhdHVzPihzdGF0dXMpLCBjb2RlLCBXZWJLaXQ6OldlYlN0cmluZyhyZWFz
b24pKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNvY2tldENoYW5uZWxDbGllbnRQcml2YXRl
LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTb2NrZXRDaGFubmVsQ2xpZW50UHJp
dmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmQ5MTdjNjM1Mjc0MzJmM2RmYTA5ZDdkMzgzZjVlODBkN2E5Njdi
MzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTb2Nr
ZXRDaGFubmVsQ2xpZW50UHJpdmF0ZS5oCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlv
bi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJTb2Nr
ZXRDaGFubmVsQ2xpZW50UHJpdmF0ZV9oCisjZGVmaW5lIFdlYlNvY2tldENoYW5uZWxDbGllbnRQ
cml2YXRlX2gKKworI2lmIEVOQUJMRShXRUJfU09DS0VUUykKKworI2luY2x1ZGUgIldlYlNvY2tl
dENoYW5uZWxDbGllbnQuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYldlYlNv
Y2tldENoYW5uZWxDbGllbnQ7CisKK307CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
V2ViU29ja2V0Q2hhbm5lbENsaWVudFByaXZhdGUgOiBwdWJsaWMgV2ViU29ja2V0Q2hhbm5lbENs
aWVudCB7CitwdWJsaWM6CisgICAgV2ViU29ja2V0Q2hhbm5lbENsaWVudFByaXZhdGUoV2ViS2l0
OjpXZWJXZWJTb2NrZXRDaGFubmVsQ2xpZW50KiBjbGllbnQpIDogbV9wcml2YXRlKGNsaWVudCkg
eyB9OworICAgIHZpcnR1YWwgfldlYlNvY2tldENoYW5uZWxDbGllbnRQcml2YXRlKCk7CisKKyAg
ICAvLyBXZWJTb2NrZXRDaGFubmVsQ2xpZW50CisgICAgdmlydHVhbCB2b2lkIGRpZENvbm5lY3Qo
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNz
YWdlKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJpbmFyeURhdGEoUGFzc093blB0cjxW
ZWN0b3I8Y2hhcj4gPiBiaW5hcnlEYXRhKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1l
c3NhZ2VFcnJvcigpOworICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydENsb3NpbmdIYW5kc2hha2Uo
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2xvc2UodW5zaWduZWQgbG9uZyBidWZmZXJlZEFtb3Vu
dCwgQ2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb25TdGF0dXMsIHVuc2lnbmVkIHNob3J0IGNvZGUs
IGNvbnN0IFN0cmluZyYgcmVhc29uKTsKKworcHJpdmF0ZToKKyAgICBXZWJLaXQ6OldlYldlYlNv
Y2tldENoYW5uZWxDbGllbnQqIG1fcHJpdmF0ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfU09DS0VUUykKKworI2VuZGlmIC8vIFdlYlNvY2tl
dENoYW5uZWxDbGllbnRQcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYldlYlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViV2ViU29ja2V0Q2hhbm5lbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTQxZTU5Y2U5MTY0NDllMDk2
OWYyNDAyMTgyZWNhNDliZDg3NzA3NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYldlYlNvY2tldENoYW5uZWwuY3BwCkBAIC0wLDAgKzEsMTY4IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAq
IGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYldlYlNvY2tldENoYW5uZWwuaCIKKworI2lu
Y2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiS1VSTC5oIgorI2lmIEVOQUJMRShXRUJfU09D
S0VUUykKKyNpbmNsdWRlICJXZWJTb2NrZXRDaGFubmVsLmgiCisjaW5jbHVkZSAiV2ViU29ja2V0
Q2hhbm5lbENsaWVudC5oIgorI2luY2x1ZGUgIldlYlNvY2tldENoYW5uZWxDbGllbnRQcml2YXRl
LmgiCisjZWxzZQorbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgV2ViU29ja2V0Q2hhbm5lbCB7
Cit9OworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorI2VuZGlmCisKKyNpbmNsdWRlICJXZWJEYXRh
LmgiCisjaW5jbHVkZSAiV2ViRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJXZWJTdHJpbmcuaCIKKyNp
bmNsdWRlICJXZWJVUkwuaCIKKyNpbmNsdWRlICJXZWJXZWJTb2NrZXRDaGFubmVsQ2xpZW50Lmgi
CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2Vi
V2ViU29ja2V0Q2hhbm5lbDo6V2ViV2ViU29ja2V0Q2hhbm5lbChXZWJEb2N1bWVudCogZG9jdW1l
bnQsIFdlYldlYlNvY2tldENoYW5uZWxDbGllbnQqIGNsaWVudCkKK3sKKyNpZiBFTkFCTEUoV0VC
X1NPQ0tFVFMpCisgICAgV0VCS0lUX0FTU0VSVChjbGllbnQpOworICAgIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQgPSBzdGF0aWNfY2FzdDxQYXNzUmVmUHRyPERvY3VtZW50PiA+KCpk
b2N1bWVudCkuZ2V0KCk7CisgICAgbV9jbGllbnQgPSBuZXcgV2ViU29ja2V0Q2hhbm5lbENsaWVu
dFByaXZhdGUoY2xpZW50KTsKKyAgICBtX3ByaXZhdGUgPSBXZWJTb2NrZXRDaGFubmVsOjpjcmVh
dGUoY29udGV4dCwgbV9jbGllbnQpOworI2Vsc2UKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyNlbmRpZgorfQorCitXZWJXZWJTb2NrZXRDaGFubmVsOjp+V2ViV2ViU29ja2V0Q2hhbm5lbCgp
Cit7CisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorICAgIG1fcHJpdmF0ZS5yZXNldCgpOworICAg
IGlmIChtX2NsaWVudCkKKyAgICAgIGRlbGV0ZSBtX2NsaWVudDsKKyNlbHNlCisgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisjZW5kaWYKK30KKwordm9pZCBXZWJXZWJTb2NrZXRDaGFubmVsOjpj
b25uZWN0KGNvbnN0IFdlYlVSTCYgdXJsLCBjb25zdCBXZWJTdHJpbmcmIHByb3RvY29sKQorewor
I2lmIEVOQUJMRShXRUJfU09DS0VUUykKKyAgICBpZiAobV9wcml2YXRlLmlzTnVsbCgpKQorICAg
ICAgICByZXR1cm47CisgICAgbV9wcml2YXRlLT5jb25uZWN0KHVybCwgcHJvdG9jb2wpOworI2Vs
c2UKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNlbmRpZgorfQorCitXZWJTdHJpbmcgV2Vi
V2ViU29ja2V0Q2hhbm5lbDo6c3VicHJvdG9jb2woKQoreworI2lmIEVOQUJMRShXRUJfU09DS0VU
UykKKyAgICBpZiAobV9wcml2YXRlLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gV2ViU3RyaW5n
KCk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+c3VicHJvdG9jb2woKTsKKyNlbHNlCisgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKK30KKworYm9vbCBXZWJXZWJTb2NrZXRDaGFubmVs
OjpzZW5kKGNvbnN0IFdlYlN0cmluZyYgbWVzc2FnZSkKK3sKKyNpZiBFTkFCTEUoV0VCX1NPQ0tF
VFMpCisgICAgaWYgKG1fcHJpdmF0ZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIHJldHVybiBtX3ByaXZhdGUtPnNlbmQobWVzc2FnZSk7CisjZWxzZQorICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworI2VuZGlmCit9CisKK2Jvb2wgV2ViV2ViU29ja2V0Q2hhbm5lbDo6c2Vu
ZChjb25zdCBXZWJEYXRhJiBiaW5hcnlEYXRhKQoreworI2lmIEVOQUJMRShXRUJfU09DS0VUUykK
KyAgICBpZiAobV9wcml2YXRlLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
cmV0dXJuIG1fcHJpdmF0ZS0+c2VuZChiaW5hcnlEYXRhLmRhdGEoKSwgYmluYXJ5RGF0YS5zaXpl
KCkpOworI2Vsc2UKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNlbmRpZgorfQorCit1bnNp
Z25lZCBsb25nIFdlYldlYlNvY2tldENoYW5uZWw6OmJ1ZmZlcmVkQW1vdW50KCkgY29uc3QKK3sK
KyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisgICAgaWYgKG1fcHJpdmF0ZS5pc051bGwoKSkKKyAg
ICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+YnVmZmVyZWRBbW91bnQoKTsK
KyNlbHNlCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKK30KKwordm9pZCBXZWJX
ZWJTb2NrZXRDaGFubmVsOjpjbG9zZShpbnQgY29kZSwgY29uc3QgV2ViU3RyaW5nJiByZWFzb24p
Cit7CisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorICAgIGlmIChtX3ByaXZhdGUuaXNOdWxsKCkp
CisgICAgICAgIHJldHVybjsKKyAgICBtX3ByaXZhdGUtPmNsb3NlKGNvZGUsIHJlYXNvbik7Cisj
ZWxzZQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCit9CisKK3ZvaWQgV2ViV2Vi
U29ja2V0Q2hhbm5lbDo6ZmFpbChjb25zdCBXZWJTdHJpbmcmIHJlYXNvbikKK3sKKyNpZiBFTkFC
TEUoV0VCX1NPQ0tFVFMpCisgICAgaWYgKG1fcHJpdmF0ZS5pc051bGwoKSkKKyAgICAgICAgcmV0
dXJuOworICAgIG1fcHJpdmF0ZS0+ZmFpbChyZWFzb24pOworI2Vsc2UKKyAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyNlbmRpZgorfQorCit2b2lkIFdlYldlYlNvY2tldENoYW5uZWw6OmRpc2Nv
bm5lY3QoKQoreworI2lmIEVOQUJMRShXRUJfU09DS0VUUykKKyAgICBpZiAoIW1fcHJpdmF0ZS5p
c051bGwoKSkKKyAgICAgICAgbV9wcml2YXRlLT5kaXNjb25uZWN0KCk7CisgICAgZGVsZXRlIHRo
aXM7CisjZWxzZQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115112</attachid>
            <date>2011-11-15 00:25:10 -0800</date>
            <delta_ts>2011-11-15 12:15:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72016-20111115172509.patch</filename>
            <type>text/plain</type>
            <size>29321</size>
            <attacher name="Takashi Toyoshima">toyoshim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTk3NzQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmM2YwYTY4YzQ1N2Q0ZDM1
YzI1MGFkOTM3OTIyMmQ0MTg4MTUxMjRhLi5kOTI4YjkyNTJiMzViOWRhZDIzNzFjZDUyMWNmNmI1
ZWQ1NWUxYTYxIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTEtMTEtMTQgIFRha2Fz
aGkgVG95b3NoaW1hICA8dG95b3NoaW1AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1
bV0gW1dlYlNvY2tldF0gZXhwb3J0IFdlYlNvY2tldENoYW5uZWwgaW50ZXJmYWNlIGZvciBwbHVn
aW5zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjAx
NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBh
IGludGVyZmFjZSB0byBzZW5kIHJhdyBiaW5hcnkgZGF0YS4KKyAgICAgICAgVGhpcyBpbnRlcmZh
Y2UgaXMgdXNlZCBieSBXZWJXZWJTb2NrZXRDaGFubmVsIGltcGxlbWVudGF0aW9uCisgICAgICAg
IGluIFdlYktpdCBBUEkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2UganVzdCBleHBv
cnQgYSBpbnRlcmZhY2UuCisKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6c2VuZCk6CisgICAgICAg
ICogd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmg6CisKIDIwMTEtMTEtMDkgIEFsZXhhbmRy
ZSBFbGlhcyAgPGFlbGlhc0Bnb29nbGUuY29tPgogCiAgICAgICAgIFtjaHJvbWl1bV0gQWRkIGRy
YXctdGltZSBzY2FsZSBkZWx0YSB0byBjb21wb3NpdG9yIHRocmVhZApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwppbmRleCBmMGNiYTU4OTg4MGI0MGJhYjk0ODQyMDUxYmYyZmY3NTNkNWFhZDNhLi44
YTAwNTdkMTNiZjZhNmNlYTgzMjVmODc1OWU2ZDE4NWMzYzM0YWI2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDExLTExLTE0ICBUYWthc2hpIFRveW9zaGlt
YSAgPHRveW9zaGltQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIFtXZWJTb2Nr
ZXRdIGV4cG9ydCBXZWJTb2NrZXRDaGFubmVsIGludGVyZmFjZSBmb3IgcGx1Z2lucworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzIwMTYKKworICAgICAg
ICBBZGQgV2ViV2ViU29ja2V0Q2hhbm5lbCBhbmQgV2ViV2ViU29ja2V0Q2hhbm5lbENsaWVudCB0
byBXZWJLaXQgQVBJLgorICAgICAgICBDdXJyZW50bHksIG9ubHkgV2ViU29ja2V0U3RyZWFtSGFu
ZGxlIGNsYXNzIGlzIGV4cG9ydGVkIHRvIFdlYktpdCBBUEkuCisgICAgICAgIFdlYlNvY2tldFN0
cmVhbUhhbmRsZSBpbXBsZW1lbnRzIGJpLWRpcmVjdGlvbmFsIGNvbW11bmljYXRpb24gcG9ydHMu
CisgICAgICAgIElmIHBsdWdpbnMgaGFuZGxlcyB0aGUgV2ViU29ja2V0IHByb3RvY29sLCBXZWJT
b2NrZXRDaGFubmVsIG11c3QgYmUKKyAgICAgICAgZXhwb3J0ZWQgYXMgV2ViV2ViU29ja2V0Q2hh
bm5lbCBiZWNhdXNlIGl0IGlzIHRoZSBjbGFzcyB3aGljaCBpbXBsZW1lbnQKKyAgICAgICAgdGhl
IFdlYlNvY2tldCBwcm90b2NvbCBzdGFjay4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdC5neXA6CisgICAgICAgICogcHVibGljL1dlYldl
YlNvY2tldENoYW5uZWwuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYldlYlNvY2tldENo
YW5uZWw6On5XZWJXZWJTb2NrZXRDaGFubmVsKToKKyAgICAgICAgKiBwdWJsaWMvV2ViV2ViU29j
a2V0Q2hhbm5lbENsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViV2ViU29ja2V0
Q2hhbm5lbENsaWVudDo6fldlYldlYlNvY2tldENoYW5uZWxDbGllbnQpOgorICAgICAgICAqIHNy
Yy9XZWJTb2NrZXRDaGFubmVsQ2xpZW50UHJpdmF0ZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6V2ViU29ja2V0Q2hhbm5lbENsaWVudFByaXZhdGU6OmRpZENvbm5lY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbENsaWVudFByaXZhdGU6OmRpZFJlY2VpdmVNZXNz
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWxDbGllbnRQcml2YXRlOjpk
aWRSZWNlaXZlQmluYXJ5RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVs
Q2xpZW50UHJpdmF0ZTo6ZGlkUmVjZWl2ZU1lc3NhZ2VFcnJvcik6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJTb2NrZXRDaGFubmVsQ2xpZW50UHJpdmF0ZTo6ZGlkU3RhcnRDbG9zaW5nSGFuZHNoYWtl
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWxDbGllbnRQcml2YXRlOjpkaWRD
bG9zZSk6CisgICAgICAgICogc3JjL1dlYlNvY2tldENoYW5uZWxDbGllbnRQcml2YXRlLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbENsaWVudFByaXZhdGU6Oldl
YlNvY2tldENoYW5uZWxDbGllbnRQcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tl
dENoYW5uZWxDbGllbnRQcml2YXRlOjp+V2ViU29ja2V0Q2hhbm5lbENsaWVudFByaXZhdGUpOgor
ICAgICAgICAqIHNyYy9XZWJXZWJTb2NrZXRDaGFubmVsLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6OldlYldlYlNvY2tldENoYW5uZWw6OmNyZWF0ZSk6CisgICAgICAgICogc3JjL1dlYldl
YlNvY2tldENoYW5uZWxJbXBsLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYldlYlNv
Y2tldENoYW5uZWxJbXBsOjpXZWJXZWJTb2NrZXRDaGFubmVsSW1wbCk6CisgICAgICAgIChXZWJL
aXQ6OldlYldlYlNvY2tldENoYW5uZWxJbXBsOjp+V2ViV2ViU29ja2V0Q2hhbm5lbEltcGwpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJXZWJTb2NrZXRDaGFubmVsSW1wbDo6Y29ubmVjdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYldlYlNvY2tldENoYW5uZWxJbXBsOjpzdWJwcm90b2NvbCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYldlYlNvY2tldENoYW5uZWxJbXBsOjpzZW5kVGV4dCk6CisgICAgICAg
IChXZWJLaXQ6OldlYldlYlNvY2tldENoYW5uZWxJbXBsOjpzZW5kQmluYXJ5KToKKyAgICAgICAg
KFdlYktpdDo6V2ViV2ViU29ja2V0Q2hhbm5lbEltcGw6OmJ1ZmZlcmVkQW1vdW50KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViV2ViU29ja2V0Q2hhbm5lbEltcGw6OmNsb3NlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViV2ViU29ja2V0Q2hhbm5lbEltcGw6OmZhaWwpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJXZWJTb2NrZXRDaGFubmVsSW1wbDo6ZGlzY29ubmVjdCk6CisgICAgICAgICogc3JjL1dlYldl
YlNvY2tldENoYW5uZWxJbXBsLmg6IEFkZGVkLgorCiAyMDExLTExLTA5ICBBbGV4YW5kcmUgRWxp
YXMgIDxhZWxpYXNAZ29vZ2xlLmNvbT4KIAogICAgICAgICBbY2hyb21pdW1dIEFkZCBkcmF3LXRp
bWUgc2NhbGUgZGVsdGEgdG8gY29tcG9zaXRvciB0aHJlYWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IDc3MDg2NWY0NjA2N2U2NjI1MThh
MGMzOTQzOTM0YjhhMzcxMjIwMWMuLjA2MTBmYmYwYjc0ZjZkOTgzNmExOTBmZTY4YzE1MTUyNDhi
MDNkNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hh
bm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVs
LmNwcApAQCAtMTg2LDYgKzE4NiwxNCBAQCBib29sIFdlYlNvY2tldENoYW5uZWw6OnNlbmQoY29u
c3QgQmxvYiYgYmluYXJ5RGF0YSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBXZWJTb2Nr
ZXRDaGFubmVsOjpzZW5kKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCit7CisgICAgTE9H
KE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIHNlbmQgYmluYXJ5ICVwICglZEIpIiwgdGhp
cywgZGF0YSwgbGVuZ3RoKTsKKyAgICBBU1NFUlQoIW1fdXNlSGl4aWU3NlByb3RvY29sKTsKKyAg
ICBlbnF1ZXVlUmF3RnJhbWUoT3BDb2RlQmluYXJ5LCBkYXRhLCBsZW5ndGgpOworICAgIHJldHVy
biB0cnVlOworfQorCiB1bnNpZ25lZCBsb25nIFdlYlNvY2tldENoYW5uZWw6OmJ1ZmZlcmVkQW1v
dW50KCkgY29uc3QKIHsKICAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgYnVm
ZmVyZWRBbW91bnQiLCB0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tl
dHMvV2ViU29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2Nr
ZXRDaGFubmVsLmgKaW5kZXggODk3ZWY2MGFlMDI2ZmRlNDExYzJiZGIwMDQ4ODQ3ZGVmMDc2Mjkx
NC4uM2E5NDM2NjVjZGIxMDNlZjRmMGE3NTQ4OWJmNGEyZjc2MDM4NjBlNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKQEAgLTY5LDYgKzY5LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiAg
ICAgdmlydHVhbCBib29sIHNlbmQoY29uc3QgQXJyYXlCdWZmZXImKTsKICAgICB2aXJ0dWFsIGJv
b2wgc2VuZChjb25zdCBCbG9iJik7CisgICAgdmlydHVhbCBib29sIHNlbmQoY29uc3QgY2hhciog
ZGF0YSwgaW50IGxlbmd0aCk7CiAgICAgdmlydHVhbCB1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1v
dW50KCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlKGludCBjb2RlLCBjb25zdCBTdHJp
bmcmIHJlYXNvbik7IC8vIFN0YXJ0IGNsb3NpbmcgaGFuZHNoYWtlLgogICAgIHZpcnR1YWwgdm9p
ZCBmYWlsKGNvbnN0IFN0cmluZyYgcmVhc29uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vV2ViS2l0Lmd5cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApp
bmRleCA1ZDgzYzg0YjAyYjYzYjIxNTQzZWQ3ZjkwNTEwMmI2YmNiODc5ODI4Li5hZTZkYjU2ZjU3
NDMwZmI0YTUxYzFiODE4N2MyNzE0MGUzMWQwOGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL1dlYktpdC5neXAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQu
Z3lwCkBAIC0zMjAsNiArMzIwLDggQEAKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlZlY3Rv
ci5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlZpZXcuaCcsCiAgICAgICAgICAgICAg
ICAgJ3B1YmxpYy9XZWJWaWV3Q2xpZW50LmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2Vi
V2ViU29ja2V0Q2hhbm5lbC5oJywKKyAgICAgICAgICAgICAgICAncHVibGljL1dlYldlYlNvY2tl
dENoYW5uZWxDbGllbnQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJXaWRnZXQuaCcs
CiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJXaWRnZXRDbGllbnQuaCcsCiAgICAgICAgICAg
ICAgICAgJ3B1YmxpYy9XZWJXb3JrZXIuaCcsCkBAIC02MDIsNiArNjA0LDggQEAKICAgICAgICAg
ICAgICAgICAnc3JjL1dlYlNldHRpbmdzSW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL1dl
YlNoYXJlZFdvcmtlckltcGwuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlNoYXJlZFdv
cmtlckltcGwuaCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJTb2NrZXRDaGFubmVsQ2xpZW50
UHJpdmF0ZS5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMvV2ViU29ja2V0Q2hhbm5lbENsaWVu
dFByaXZhdGUuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xs
ZXJNb2NrSW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViU3BlZWNoSW5wdXRDb250
cm9sbGVyTW9ja0ltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJTcGVlY2hJbnB1dFJl
c3VsdC5jcHAnLApAQCAtNjI1LDYgKzYyOSw5IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJV
UkxFcnJvci5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViVmlld0ltcGwuY3BwJywKICAg
ICAgICAgICAgICAgICAnc3JjL1dlYlZpZXdJbXBsLmgnLAorICAgICAgICAgICAgICAgICdzcmMv
V2ViV2ViU29ja2V0Q2hhbm5lbC5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMvV2ViV2ViU29j
a2V0Q2hhbm5lbEltcGwuY3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYldlYlNvY2tldENo
YW5uZWxJbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViV29ya2VyQmFzZS5jcHAnLAog
ICAgICAgICAgICAgICAgICdzcmMvV2ViV29ya2VyQmFzZS5oJywKICAgICAgICAgICAgICAgICAn
c3JjL1dlYldvcmtlckNsaWVudEltcGwuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYldlYlNvY2tldENoYW5uZWwuaCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYldlYlNvY2tldENoYW5uZWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZGJlOWRhNTc2
MzEzYWEzNmVmYmM0OThhOWRhYTkzOTE2YWIwNzcyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViV2ViU29ja2V0Q2hhbm5lbC5oCkBAIC0wLDAgKzEs
ODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6Cisg
KgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBXZWJXZWJTb2NrZXRDaGFubmVsX2gKKyNkZWZpbmUgV2ViV2ViU29ja2V0
Q2hhbm5lbF9oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJQcml2YXRl
UHRyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgV2ViU29ja2V0Q2hhbm5lbDsK
K2NsYXNzIFdlYlNvY2tldENoYW5uZWxDbGllbnRQcml2YXRlOworCit9CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitjbGFzcyBXZWJEYXRhOworY2xhc3MgV2ViRG9jdW1lbnQ7CitjbGFzcyBXZWJT
dHJpbmc7CitjbGFzcyBXZWJVUkw7CitjbGFzcyBXZWJXZWJTb2NrZXRDaGFubmVsQ2xpZW50Owor
CitjbGFzcyBXZWJXZWJTb2NrZXRDaGFubmVsIHsKK3B1YmxpYzoKKyAgICBlbnVtIENsb3NlRXZl
bnRDb2RlIHsKKyAgICAgICAgQ2xvc2VFdmVudENvZGVOb3RTcGVjaWZpZWQgPSAtMSwKKyAgICAg
ICAgQ2xvc2VFdmVudENvZGVOb3JtYWxDbG9zdXJlID0gMTAwMCwKKyAgICAgICAgQ2xvc2VFdmVu
dENvZGVHb2luZ0F3YXkgPSAxMDAxLAorICAgICAgICBDbG9zZUV2ZW50Q29kZVByb3RvY29sRXJy
b3IgPSAxMDAyLAorICAgICAgICBDbG9zZUV2ZW50Q29kZVVuc3VwcG9ydGVkRGF0YSA9IDEwMDMs
CisgICAgICAgIENsb3NlRXZlbnRDb2RlRnJhbWVUb29MYXJnZSA9IDEwMDQsCisgICAgICAgIENs
b3NlRXZlbnRDb2RlTm9TdGF0dXNSY3ZkID0gMTAwNSwKKyAgICAgICAgQ2xvc2VFdmVudENvZGVB
Ym5vcm1hbENsb3N1cmUgPSAxMDA2LAorICAgICAgICBDbG9zZUV2ZW50Q29kZUludmFsaWRVVEY4
ID0gMTAwNywKKyAgICAgICAgQ2xvc2VFdmVudENvZGVNaW5pbXVtVXNlckRlZmluZWQgPSAzMDAw
LAorICAgICAgICBDbG9zZUV2ZW50Q29kZU1heGltdW1Vc2VyRGVmaW5lZCA9IDQ5OTkKKyAgICB9
OworICAgIHN0YXRpYyBXZWJXZWJTb2NrZXRDaGFubmVsKiBjcmVhdGUoV2ViRG9jdW1lbnQqLCBX
ZWJXZWJTb2NrZXRDaGFubmVsQ2xpZW50Kik7CisgICAgdmlydHVhbCB+V2ViV2ViU29ja2V0Q2hh
bm5lbCgpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIGNvbm5lY3QoY29uc3QgV2ViVVJMJiwgY29u
c3QgV2ViU3RyaW5nJiBwcm90b2NvbCkgPSAwOworICAgIHZpcnR1YWwgV2ViU3RyaW5nIHN1YnBy
b3RvY29sKCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzZW5kVGV4dChjb25zdCBXZWJTdHJpbmcm
IG1lc3NhZ2UpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc2VuZEJpbmFyeShjb25zdCBXZWJEYXRh
JiBiaW5hcnlEYXRhKSA9IDA7CisgICAgdmlydHVhbCB1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1v
dW50KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjbG9zZShpbnQgY29kZSwgY29uc3Qg
V2ViU3RyaW5nJiByZWFzb24pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZmFpbChjb25zdCBXZWJT
dHJpbmcmIHJlYXNvbikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0KCkgPSAwOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJXZWJTb2NrZXRDaGFu
bmVsX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldlYlNv
Y2tldENoYW5uZWxDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldl
YlNvY2tldENoYW5uZWxDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kY2IxNjE0ZTRiMzYyNmFlNDg1Yzkz
MzhhMjBkYmI2ZjNiOTM1YzcyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViV2ViU29ja2V0Q2hhbm5lbENsaWVudC5oCkBAIC0wLDAgKzEsNTggQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBXZWJXZWJTb2NrZXRDaGFubmVsQ2xpZW50X2gKKyNkZWZpbmUgV2ViV2ViU29ja2V0
Q2hhbm5lbENsaWVudF9oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJE
YXRhLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJTdHJpbmc7CisKK2NsYXNz
IFdlYldlYlNvY2tldENoYW5uZWxDbGllbnQgeworcHVibGljOgorICAgIGVudW0gQ2xvc2luZ0hh
bmRzaGFrZUNvbXBsZXRpb25TdGF0dXMgeworICAgICAgICBDbG9zaW5nSGFuZHNoYWtlSW5jb21w
bGV0ZSwKKyAgICAgICAgQ2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRlCisgICAgfTsKKyAgICB2aXJ0
dWFsIH5XZWJXZWJTb2NrZXRDaGFubmVsQ2xpZW50KCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGRp
ZENvbm5lY3QoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKGNvbnN0
IFdlYlN0cmluZyYgbWVzc2FnZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQmlu
YXJ5RGF0YShjb25zdCBXZWJEYXRhJiBiaW5hcnlEYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGRpZFJlY2VpdmVNZXNzYWdlRXJyb3IoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0
Q2xvc2luZ0hhbmRzaGFrZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2xvc2UodW5zaWdu
ZWQgbG9uZyBidWZmZXJlZEFtb3VudCwgQ2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb25TdGF0dXMs
IHVuc2lnbmVkIHNob3J0IGNvZGUsIGNvbnN0IFdlYlN0cmluZyYgcmVhc29uKSA9IDA7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYldlYlNvY2tldENoYW5uZWxD
bGllbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU29ja2V0
Q2hhbm5lbENsaWVudFByaXZhdGUuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
U29ja2V0Q2hhbm5lbENsaWVudFByaXZhdGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE0NmYwMzY1YzRiZjhh
NWMxYzA3YWMxMDMxMWJiOGM1MDZkYWFkYjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJTb2NrZXRDaGFubmVsQ2xpZW50UHJpdmF0ZS5jcHAKQEAgLTAs
MCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0
OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShXRUJfU09DS0VUUykK
KworI2luY2x1ZGUgIldlYlNvY2tldENoYW5uZWxDbGllbnRQcml2YXRlLmgiCisKKyNpbmNsdWRl
ICJXZWJEYXRhLmgiCisjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCisjaW5jbHVkZSAiV2ViV2ViU29j
a2V0Q2hhbm5lbENsaWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgV2ViU29j
a2V0Q2hhbm5lbENsaWVudFByaXZhdGU6OmRpZENvbm5lY3QoKQoreworICAgIG1fcHJpdmF0ZS0+
ZGlkQ29ubmVjdCgpOworfQorCit2b2lkIFdlYlNvY2tldENoYW5uZWxDbGllbnRQcml2YXRlOjpk
aWRSZWNlaXZlTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgbV9wcml2YXRl
LT5kaWRSZWNlaXZlTWVzc2FnZShXZWJLaXQ6OldlYlN0cmluZyhtZXNzYWdlKSk7Cit9CisKK3Zv
aWQgV2ViU29ja2V0Q2hhbm5lbENsaWVudFByaXZhdGU6OmRpZFJlY2VpdmVCaW5hcnlEYXRhKFBh
c3NPd25QdHI8VmVjdG9yPGNoYXI+ID4gYmluYXJ5RGF0YSkKK3sKKyAgICBtX3ByaXZhdGUtPmRp
ZFJlY2VpdmVCaW5hcnlEYXRhKFdlYktpdDo6V2ViRGF0YShiaW5hcnlEYXRhLT5kYXRhKCksIGJp
bmFyeURhdGEtPnNpemUoKSkpOworfQorCit2b2lkIFdlYlNvY2tldENoYW5uZWxDbGllbnRQcml2
YXRlOjpkaWRSZWNlaXZlTWVzc2FnZUVycm9yKCkKK3sKKyAgICBtX3ByaXZhdGUtPmRpZFJlY2Vp
dmVNZXNzYWdlRXJyb3IoKTsKK30KKwordm9pZCBXZWJTb2NrZXRDaGFubmVsQ2xpZW50UHJpdmF0
ZTo6ZGlkU3RhcnRDbG9zaW5nSGFuZHNoYWtlKCkKK3sKKyAgICBtX3ByaXZhdGUtPmRpZFN0YXJ0
Q2xvc2luZ0hhbmRzaGFrZSgpOworfQorCit2b2lkIFdlYlNvY2tldENoYW5uZWxDbGllbnRQcml2
YXRlOjpkaWRDbG9zZSh1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50LCBDbG9zaW5nSGFuZHNo
YWtlQ29tcGxldGlvblN0YXR1cyBzdGF0dXMsIHVuc2lnbmVkIHNob3J0IGNvZGUsIGNvbnN0IFN0
cmluZyYgcmVhc29uKQoreworICAgIG1fcHJpdmF0ZS0+ZGlkQ2xvc2UoYnVmZmVyZWRBbW91bnQs
IHN0YXRpY19jYXN0PFdlYktpdDo6V2ViV2ViU29ja2V0Q2hhbm5lbENsaWVudDo6Q2xvc2luZ0hh
bmRzaGFrZUNvbXBsZXRpb25TdGF0dXM+KHN0YXR1cyksIGNvZGUsIFdlYktpdDo6V2ViU3RyaW5n
KHJlYXNvbikpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU29ja2V0Q2hhbm5lbENsaWVudFBy
aXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNvY2tldENoYW5uZWxDbGll
bnRQcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWFlM2NkNGJmNjgxODllOWY0ZWNkZDk3NjYzMmI3Yzkx
MjVjNTcwNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlNvY2tldENoYW5uZWxDbGllbnRQcml2YXRlLmgKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJp
YnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdl
YlNvY2tldENoYW5uZWxDbGllbnRQcml2YXRlX2gKKyNkZWZpbmUgV2ViU29ja2V0Q2hhbm5lbENs
aWVudFByaXZhdGVfaAorCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorCisjaW5jbHVkZSAiV2Vi
U29ja2V0Q2hhbm5lbENsaWVudC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2Vi
V2ViU29ja2V0Q2hhbm5lbENsaWVudDsKKworfTsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBXZWJTb2NrZXRDaGFubmVsQ2xpZW50UHJpdmF0ZSA6IHB1YmxpYyBXZWJTb2NrZXRDaGFu
bmVsQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBXZWJTb2NrZXRDaGFubmVsQ2xpZW50UHJpdmF0ZShX
ZWJLaXQ6OldlYldlYlNvY2tldENoYW5uZWxDbGllbnQqIGNsaWVudCkgOiBtX3ByaXZhdGUoY2xp
ZW50KSB7IH0KKyAgICB2aXJ0dWFsIH5XZWJTb2NrZXRDaGFubmVsQ2xpZW50UHJpdmF0ZSgpIHsg
fQorCisgICAgLy8gV2ViU29ja2V0Q2hhbm5lbENsaWVudAorICAgIHZpcnR1YWwgdm9pZCBkaWRD
b25uZWN0KCk7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSk7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCaW5hcnlEYXRhKFBhc3NP
d25QdHI8VmVjdG9yPGNoYXI+ID4gYmluYXJ5RGF0YSk7CisgICAgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVNZXNzYWdlRXJyb3IoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRDbG9zaW5nSGFu
ZHNoYWtlKCk7CisgICAgdmlydHVhbCB2b2lkIGRpZENsb3NlKHVuc2lnbmVkIGxvbmcgYnVmZmVy
ZWRBbW91bnQsIENsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uU3RhdHVzLCB1bnNpZ25lZCBzaG9y
dCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbik7CisKK3ByaXZhdGU6CisgICAgV2ViS2l0OjpX
ZWJXZWJTb2NrZXRDaGFubmVsQ2xpZW50KiBtX3ByaXZhdGU7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX1NPQ0tFVFMpCisKKyNlbmRpZiAvLyBX
ZWJTb2NrZXRDaGFubmVsQ2xpZW50UHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJXZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYldlYlNvY2tldENoYW5uZWwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkyNTQ3ZjFmYjY0
MjIxOTJiMTQyZTg5ZWI2YzhlMzlhZDJmNTEwZjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtMCwwICsxLDQz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisg
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYldlYlNvY2tldENoYW5uZWwuaCIK
KworI2luY2x1ZGUgIldlYldlYlNvY2tldENoYW5uZWxJbXBsLmgiCisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitXZWJXZWJTb2NrZXRDaGFubmVsKiBXZWJXZWJTb2NrZXRDaGFubmVsOjpjcmVhdGUo
V2ViRG9jdW1lbnQqIGRvY3VtZW50LCBXZWJXZWJTb2NrZXRDaGFubmVsQ2xpZW50KiBjbGllbnQp
Cit7CisgICAgcmV0dXJuIG5ldyBXZWJXZWJTb2NrZXRDaGFubmVsSW1wbChkb2N1bWVudCwgY2xp
ZW50KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJXZWJTb2NrZXRDaGFubmVsSW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJXZWJTb2NrZXRDaGFubmVsSW1wbC5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZTlmYmNlZGY1ZDUwYzU2OWI5YzVmMGU5YjY5ZTZjMTc5MmY1NDVlNQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldlYlNvY2tldENoYW5uZWxJbXBsLmNw
cApAQCAtMCwwICsxLDE2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5j
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
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJXZWJT
b2NrZXRDaGFubmVsSW1wbC5oIgorCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJL
VVJMLmgiCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorI2luY2x1ZGUgIldlYlNvY2tldENoYW5u
ZWwuaCIKKyNpbmNsdWRlICJXZWJTb2NrZXRDaGFubmVsQ2xpZW50LmgiCisjaW5jbHVkZSAiV2Vi
U29ja2V0Q2hhbm5lbENsaWVudFByaXZhdGUuaCIKKyNlbHNlCituYW1lc3BhY2UgV2ViQ29yZSB7
CitjbGFzcyBXZWJTb2NrZXRDaGFubmVsIHsKK307Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisj
ZW5kaWYKKworI2luY2x1ZGUgIldlYkRhdGEuaCIKKyNpbmNsdWRlICJXZWJEb2N1bWVudC5oIgor
I2luY2x1ZGUgIldlYlN0cmluZy5oIgorI2luY2x1ZGUgIldlYlVSTC5oIgorI2luY2x1ZGUgIldl
YldlYlNvY2tldENoYW5uZWxDbGllbnQuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJXZWJTb2NrZXRDaGFubmVsSW1wbDo6V2ViV2ViU29j
a2V0Q2hhbm5lbEltcGwoV2ViRG9jdW1lbnQqIGRvY3VtZW50LCBXZWJXZWJTb2NrZXRDaGFubmVs
Q2xpZW50KiBjbGllbnQpCit7CisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorICAgIFdFQktJVF9B
U1NFUlQoY2xpZW50KTsKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gc3Rh
dGljX2Nhc3Q8UGFzc1JlZlB0cjxEb2N1bWVudD4gPigqZG9jdW1lbnQpLmdldCgpOworICAgIG1f
Y2xpZW50ID0gYWRvcHRQdHIobmV3IFdlYlNvY2tldENoYW5uZWxDbGllbnRQcml2YXRlKGNsaWVu
dCkpOworICAgIG1fcHJpdmF0ZSA9IFdlYlNvY2tldENoYW5uZWw6OmNyZWF0ZShjb250ZXh0LCBt
X2NsaWVudC5nZXQoKSk7CisjZWxzZQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlm
Cit9CisKK1dlYldlYlNvY2tldENoYW5uZWxJbXBsOjp+V2ViV2ViU29ja2V0Q2hhbm5lbEltcGwo
KQoreworI2lmIEVOQUJMRShXRUJfU09DS0VUUykKKyAgICBpZiAoIW1fcHJpdmF0ZSkKKyAgICAg
ICAgbV9wcml2YXRlLT5kaXNjb25uZWN0KCk7CisjZWxzZQorICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworI2VuZGlmCit9CisKK3ZvaWQgV2ViV2ViU29ja2V0Q2hhbm5lbEltcGw6OmNvbm5lY3Qo
Y29uc3QgV2ViVVJMJiB1cmwsIGNvbnN0IFdlYlN0cmluZyYgcHJvdG9jb2wpCit7CisjaWYgRU5B
QkxFKFdFQl9TT0NLRVRTKQorICAgIGlmICghbV9wcml2YXRlKQorICAgICAgICByZXR1cm47Cisg
ICAgbV9wcml2YXRlLT5jb25uZWN0KHVybCwgcHJvdG9jb2wpOworI2Vsc2UKKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyNlbmRpZgorfQorCitXZWJTdHJpbmcgV2ViV2ViU29ja2V0Q2hhbm5l
bEltcGw6OnN1YnByb3RvY29sKCkKK3sKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisgICAgaWYg
KCFtX3ByaXZhdGUpCisgICAgICAgIHJldHVybiBXZWJTdHJpbmcoKTsKKyAgICByZXR1cm4gbV9w
cml2YXRlLT5zdWJwcm90b2NvbCgpOworI2Vsc2UKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyNlbmRpZgorfQorCitib29sIFdlYldlYlNvY2tldENoYW5uZWxJbXBsOjpzZW5kVGV4dChjb25z
dCBXZWJTdHJpbmcmIG1lc3NhZ2UpCit7CisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorICAgIGlm
ICghbV9wcml2YXRlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIG1fcHJpdmF0
ZS0+c2VuZChtZXNzYWdlKTsKKyNlbHNlCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5k
aWYKK30KKworYm9vbCBXZWJXZWJTb2NrZXRDaGFubmVsSW1wbDo6c2VuZEJpbmFyeShjb25zdCBX
ZWJEYXRhJiBiaW5hcnlEYXRhKQoreworI2lmIEVOQUJMRShXRUJfU09DS0VUUykKKyAgICBpZiAo
IW1fcHJpdmF0ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBtX3ByaXZhdGUt
PnNlbmQoYmluYXJ5RGF0YS5kYXRhKCksIGJpbmFyeURhdGEuc2l6ZSgpKTsKKyNlbHNlCisgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKK30KKwordW5zaWduZWQgbG9uZyBXZWJXZWJT
b2NrZXRDaGFubmVsSW1wbDo6YnVmZmVyZWRBbW91bnQoKSBjb25zdAoreworI2lmIEVOQUJMRShX
RUJfU09DS0VUUykKKyAgICBpZiAoIW1fcHJpdmF0ZSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAg
cmV0dXJuIG1fcHJpdmF0ZS0+YnVmZmVyZWRBbW91bnQoKTsKKyNlbHNlCisgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisjZW5kaWYKK30KKwordm9pZCBXZWJXZWJTb2NrZXRDaGFubmVsSW1wbDo6
Y2xvc2UoaW50IGNvZGUsIGNvbnN0IFdlYlN0cmluZyYgcmVhc29uKQoreworI2lmIEVOQUJMRShX
RUJfU09DS0VUUykKKyAgICBpZiAoIW1fcHJpdmF0ZSkKKyAgICAgICAgcmV0dXJuOworICAgIG1f
cHJpdmF0ZS0+Y2xvc2UoY29kZSwgcmVhc29uKTsKKyNlbHNlCisgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisjZW5kaWYKK30KKwordm9pZCBXZWJXZWJTb2NrZXRDaGFubmVsSW1wbDo6ZmFpbChj
b25zdCBXZWJTdHJpbmcmIHJlYXNvbikKK3sKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisgICAg
aWYgKCFtX3ByaXZhdGUpCisgICAgICAgIHJldHVybjsKKyAgICBtX3ByaXZhdGUtPmZhaWwocmVh
c29uKTsKKyNlbHNlCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKK30KKwordm9p
ZCBXZWJXZWJTb2NrZXRDaGFubmVsSW1wbDo6ZGlzY29ubmVjdCgpCit7CisjaWYgRU5BQkxFKFdF
Ql9TT0NLRVRTKQorICAgIGlmICghbV9wcml2YXRlKQorICAgICAgICBtX3ByaXZhdGUtPmRpc2Nv
bm5lY3QoKTsKKyNlbHNlCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJXZWJTb2NrZXRDaGFubmVsSW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViV2ViU29ja2V0Q2hhbm5lbEltcGwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZGZhOGE3NzY3MzhkMWVh
ZjY5MDgzOTY3MTEyZjgyYTM3YWJiNzgyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViV2ViU29ja2V0Q2hhbm5lbEltcGwuaApAQCAtMCwwICsxLDc3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgV2ViV2ViU29ja2V0Q2hhbm5lbEltcGxfaAorI2RlZmluZSBXZWJXZWJTb2NrZXRD
aGFubmVsSW1wbF9oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJQcml2
YXRlUHRyLmgiCisjaW5jbHVkZSAiV2ViV2ViU29ja2V0Q2hhbm5lbC5oIgorCisjaW5jbHVkZSA8
d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBXZWJTb2NrZXRDaGFubmVsOworY2xhc3MgV2ViU29ja2V0Q2hhbm5lbENs
aWVudFByaXZhdGU7CisKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkRhdGE7
CitjbGFzcyBXZWJEb2N1bWVudDsKK2NsYXNzIFdlYlN0cmluZzsKK2NsYXNzIFdlYlVSTDsKK2Ns
YXNzIFdlYldlYlNvY2tldENoYW5uZWxDbGllbnQ7CisKK2NsYXNzIFdlYldlYlNvY2tldENoYW5u
ZWxJbXBsIDogcHVibGljIFdlYldlYlNvY2tldENoYW5uZWwgeworcHVibGljOgorICAgIFdlYldl
YlNvY2tldENoYW5uZWxJbXBsKFdlYkRvY3VtZW50KiwgV2ViV2ViU29ja2V0Q2hhbm5lbENsaWVu
dCopOworICAgIHZpcnR1YWwgfldlYldlYlNvY2tldENoYW5uZWxJbXBsKCk7CisKKyAgICB2aXJ0
dWFsIHZvaWQgY29ubmVjdChjb25zdCBXZWJVUkwmLCBjb25zdCBXZWJTdHJpbmcmIHByb3RvY29s
KTsKKyAgICB2aXJ0dWFsIFdlYlN0cmluZyBzdWJwcm90b2NvbCgpOworICAgIHZpcnR1YWwgYm9v
bCBzZW5kVGV4dChjb25zdCBXZWJTdHJpbmcmIG1lc3NhZ2UpOworICAgIHZpcnR1YWwgYm9vbCBz
ZW5kQmluYXJ5KGNvbnN0IFdlYkRhdGEmIGJpbmFyeURhdGEpOworICAgIHZpcnR1YWwgdW5zaWdu
ZWQgbG9uZyBidWZmZXJlZEFtb3VudCgpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBjbG9zZShp
bnQgY29kZSwgY29uc3QgV2ViU3RyaW5nJiByZWFzb24pOworICAgIHZpcnR1YWwgdm9pZCBmYWls
KGNvbnN0IFdlYlN0cmluZyYgcmVhc29uKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVjdCgp
OworCitwcml2YXRlOgorICAgIFJlZlB0cjxXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsPiBtX3By
aXZhdGU7CisgICAgT3duUHRyPFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWxDbGllbnRQcml2YXRl
PiBtX2NsaWVudDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2Vi
V2ViU29ja2V0Q2hhbm5lbEltcGxfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115216</attachid>
            <date>2011-11-15 12:15:43 -0800</date>
            <delta_ts>2011-11-16 15:19:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72016-20111116051542.patch</filename>
            <type>text/plain</type>
            <size>24310</size>
            <attacher name="Takashi Toyoshima">toyoshim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwMTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjBkNmQ5Y2VkOGVlZDUy
Mzk3NTQzMTg5MDY3MTAxMTc0NGIzM2M4Zi4uNGVkNTg3ODg4ZWUxODNjZDc0MmJiYTk2NzRiMjM2
YjQ2NmYwNGUxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDExLTExLTE0ICBUYWth
c2hpIFRveW9zaGltYSAgPHRveW9zaGltQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21p
dW1dIFtXZWJTb2NrZXRdIGV4cG9ydCBXZWJTb2NrZXRDaGFubmVsIGludGVyZmFjZSBmb3IgcGx1
Z2lucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzIw
MTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQg
YSBpbnRlcmZhY2UgdG8gc2VuZCByYXcgYmluYXJ5IGRhdGEuCisgICAgICAgIFRoaXMgaW50ZXJm
YWNlIGlzIHVzZWQgYnkgV2ViV2ViU29ja2V0Q2hhbm5lbCBpbXBsZW1lbnRhdGlvbgorICAgICAg
ICBpbiBXZWJLaXQgQVBJLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIGp1c3QgZXhw
b3J0IGEgaW50ZXJmYWNlLgorCisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVs
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OnNlbmQpOgorICAgICAg
ICAqIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oOgorCiAyMDExLTExLTE0ICBNYXJpbyBT
YW5jaGV6IFByYWRhICA8bXNhbmNoZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBBZGQgc3VwcG9y
dCBmb3IgdGhlIGNhcmV0QnJvd3NpbmdFbmFibGVkIHByZWZlcmVuY2UgaW4gV2ViS2l0MgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA2OGY5MGY2Zjg3MDQ4YjU4NzQ3YzQ1MTYxNDgwYjQ1
ZThmNGYwNzZkLi4zNTY1NzJmNWNkNTk4ZmZjNjlkYTE5YjFhZjZiYjE1NTBmZTliOGVkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDExLTExLTE0ICBUYWth
c2hpIFRveW9zaGltYSAgPHRveW9zaGltQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21p
dW1dIFtXZWJTb2NrZXRdIGV4cG9ydCBXZWJTb2NrZXRDaGFubmVsIGludGVyZmFjZSBmb3IgcGx1
Z2lucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzIw
MTYKKworICAgICAgICBBZGQgV2ViV2ViU29ja2V0Q2hhbm5lbCBhbmQgV2ViV2ViU29ja2V0Q2hh
bm5lbENsaWVudCB0byBXZWJLaXQgQVBJLgorICAgICAgICBDdXJyZW50bHksIG9ubHkgV2ViU29j
a2V0U3RyZWFtSGFuZGxlIGNsYXNzIGlzIGV4cG9ydGVkIHRvIFdlYktpdCBBUEkuCisgICAgICAg
IFdlYlNvY2tldFN0cmVhbUhhbmRsZSBpbXBsZW1lbnRzIGJpLWRpcmVjdGlvbmFsIGNvbW11bmlj
YXRpb24gcG9ydHMuCisgICAgICAgIElmIHBsdWdpbnMgaGFuZGxlcyB0aGUgV2ViU29ja2V0IHBy
b3RvY29sLCBXZWJTb2NrZXRDaGFubmVsIG11c3QgYmUKKyAgICAgICAgZXhwb3J0ZWQgYXMgV2Vi
V2ViU29ja2V0Q2hhbm5lbCBiZWNhdXNlIGl0IGlzIHRoZSBjbGFzcyB3aGljaCBpbXBsZW1lbnQK
KyAgICAgICAgdGhlIFdlYlNvY2tldCBwcm90b2NvbCBzdGFjay4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdC5neXA6CisgICAgICAgICog
cHVibGljL1dlYldlYlNvY2tldENoYW5uZWwuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Oldl
YldlYlNvY2tldENoYW5uZWw6On5XZWJXZWJTb2NrZXRDaGFubmVsKToKKyAgICAgICAgKiBwdWJs
aWMvV2ViV2ViU29ja2V0Q2hhbm5lbENsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6
V2ViV2ViU29ja2V0Q2hhbm5lbENsaWVudDo6fldlYldlYlNvY2tldENoYW5uZWxDbGllbnQpOgor
ICAgICAgICAqIHNyYy9XZWJXZWJTb2NrZXRDaGFubmVsLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6OldlYldlYlNvY2tldENoYW5uZWw6OmNyZWF0ZSk6CisgICAgICAgICogc3JjL1dlYldl
YlNvY2tldENoYW5uZWxJbXBsLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYldlYlNv
Y2tldENoYW5uZWxJbXBsOjpXZWJXZWJTb2NrZXRDaGFubmVsSW1wbCk6CisgICAgICAgIChXZWJL
aXQ6OldlYldlYlNvY2tldENoYW5uZWxJbXBsOjp+V2ViV2ViU29ja2V0Q2hhbm5lbEltcGwpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJXZWJTb2NrZXRDaGFubmVsSW1wbDo6Y29ubmVjdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYldlYlNvY2tldENoYW5uZWxJbXBsOjpzdWJwcm90b2NvbCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYldlYlNvY2tldENoYW5uZWxJbXBsOjpzZW5kVGV4dCk6CisgICAgICAg
IChXZWJLaXQ6OldlYldlYlNvY2tldENoYW5uZWxJbXBsOjpzZW5kQmluYXJ5KToKKyAgICAgICAg
KFdlYktpdDo6V2ViV2ViU29ja2V0Q2hhbm5lbEltcGw6OmJ1ZmZlcmVkQW1vdW50KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViV2ViU29ja2V0Q2hhbm5lbEltcGw6OmNsb3NlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViV2ViU29ja2V0Q2hhbm5lbEltcGw6OmZhaWwpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJXZWJTb2NrZXRDaGFubmVsSW1wbDo6ZGlzY29ubmVjdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YldlYlNvY2tldENoYW5uZWxJbXBsOjpkaWRDb25uZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
V2ViU29ja2V0Q2hhbm5lbEltcGw6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViV2ViU29ja2V0Q2hhbm5lbEltcGw6OmRpZFJlY2VpdmVCaW5hcnlEYXRhKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViV2ViU29ja2V0Q2hhbm5lbEltcGw6OmRpZFJlY2VpdmVNZXNzYWdlRXJy
b3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJXZWJTb2NrZXRDaGFubmVsSW1wbDo6ZGlkU3RhcnRD
bG9zaW5nSGFuZHNoYWtlKToKKyAgICAgICAgKFdlYktpdDo6V2ViV2ViU29ja2V0Q2hhbm5lbElt
cGw6OmRpZENsb3NlKToKKyAgICAgICAgKiBzcmMvV2ViV2ViU29ja2V0Q2hhbm5lbEltcGwuaDog
QWRkZWQuCisKIDIwMTEtMTEtMTQgIEpvbmF0aGFuIEJhY2tlciAgPGJhY2tlckBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBQbHVtYiB0aHJvdWdoIHBhcnRpYWwgc3dhcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggNzcw
ODY1ZjQ2MDY3ZTY2MjUxOGEwYzM5NDM5MzRiOGEzNzEyMjAxYy4uMDYxMGZiZjBiNzRmNmQ5ODM2
YTE5MGZlNjhjMTUxNTI0OGIwM2Q0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2Vic29j
a2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRz
L1dlYlNvY2tldENoYW5uZWwuY3BwCkBAIC0xODYsNiArMTg2LDE0IEBAIGJvb2wgV2ViU29ja2V0
Q2hhbm5lbDo6c2VuZChjb25zdCBCbG9iJiBiaW5hcnlEYXRhKQogICAgIHJldHVybiB0cnVlOwog
fQogCitib29sIFdlYlNvY2tldENoYW5uZWw6OnNlbmQoY29uc3QgY2hhciogZGF0YSwgaW50IGxl
bmd0aCkKK3sKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgc2VuZCBiaW5h
cnkgJXAgKCVkQikiLCB0aGlzLCBkYXRhLCBsZW5ndGgpOworICAgIEFTU0VSVCghbV91c2VIaXhp
ZTc2UHJvdG9jb2wpOworICAgIGVucXVldWVSYXdGcmFtZShPcENvZGVCaW5hcnksIGRhdGEsIGxl
bmd0aCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHVuc2lnbmVkIGxvbmcgV2ViU29ja2V0Q2hh
bm5lbDo6YnVmZmVyZWRBbW91bnQoKSBjb25zdAogewogICAgIExPRyhOZXR3b3JrLCAiV2ViU29j
a2V0Q2hhbm5lbCAlcCBidWZmZXJlZEFtb3VudCIsIHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmggYi9Tb3VyY2UvV2ViQ29yZS93
ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaAppbmRleCA4OTdlZjYwYWUwMjZmZGU0MTFjMmJk
YjAwNDg4NDdkZWYwNzYyOTE0Li4zYTk0MzY2NWNkYjEwM2VmNGYwYTc1NDg5YmY0YTJmNzYwMzg2
MGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5u
ZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaApA
QCAtNjksNiArNjksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHNlbmQoY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKTsKICAgICB2aXJ0dWFsIGJvb2wgc2VuZChjb25zdCBBcnJheUJ1ZmZlciYp
OwogICAgIHZpcnR1YWwgYm9vbCBzZW5kKGNvbnN0IEJsb2ImKTsKKyAgICB2aXJ0dWFsIGJvb2wg
c2VuZChjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKTsKICAgICB2aXJ0dWFsIHVuc2lnbmVk
IGxvbmcgYnVmZmVyZWRBbW91bnQoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoaW50
IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uKTsgLy8gU3RhcnQgY2xvc2luZyBoYW5kc2hha2Uu
CiAgICAgdmlydHVhbCB2b2lkIGZhaWwoY29uc3QgU3RyaW5nJiByZWFzb24pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9XZWJLaXQuZ3lwCmluZGV4IGQzMGIyNjFiYTQ4OTA1MmVkMTJhNmI3MDc4MmNkMWI3NjY0
MmViM2MuLmI1YWFjOTAwNjQ3MmVjMWU2YTljNmJkMGJlYzFiYTUyYmMzNWI5MjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTMyMiw2ICszMjIsOCBAQAogICAgICAgICAgICAgICAg
ICdwdWJsaWMvV2ViVmVjdG9yLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVmlldy5o
JywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlZpZXdDbGllbnQuaCcsCisgICAgICAgICAg
ICAgICAgJ3B1YmxpYy9XZWJXZWJTb2NrZXRDaGFubmVsLmgnLAorICAgICAgICAgICAgICAgICdw
dWJsaWMvV2ViV2ViU29ja2V0Q2hhbm5lbENsaWVudC5oJywKICAgICAgICAgICAgICAgICAncHVi
bGljL1dlYldpZGdldC5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYldpZGdldENsaWVu
dC5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYldvcmtlci5oJywKQEAgLTYyOCw2ICs2
MzAsOSBAQAogICAgICAgICAgICAgICAgICdzcmMvV2ViVVJMRXJyb3IuY3BwJywKICAgICAgICAg
ICAgICAgICAnc3JjL1dlYlZpZXdJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJW
aWV3SW1wbC5oJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYldlYlNvY2tldENoYW5uZWwuY3Bw
JywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYldlYlNvY2tldENoYW5uZWxJbXBsLmNwcCcsCisg
ICAgICAgICAgICAgICAgJ3NyYy9XZWJXZWJTb2NrZXRDaGFubmVsSW1wbC5oJywKICAgICAgICAg
ICAgICAgICAnc3JjL1dlYldvcmtlckJhc2UuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dl
YldvcmtlckJhc2UuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJXb3JrZXJDbGllbnRJbXBs
LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJXZWJT
b2NrZXRDaGFubmVsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJXZWJTb2Nr
ZXRDaGFubmVsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGRiZTlkYTU3NjMxM2FhMzZlZmJjNDk4YTlkYWE5Mzkx
NmFiMDc3MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYldlYlNvY2tldENoYW5uZWwuaApAQCAtMCwwICsxLDgyIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDExIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
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
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViV2ViU29j
a2V0Q2hhbm5lbF9oCisjZGVmaW5lIFdlYldlYlNvY2tldENoYW5uZWxfaAorCisjaW5jbHVkZSAi
V2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2ViUHJpdmF0ZVB0ci5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIFdlYlNvY2tldENoYW5uZWw7CitjbGFzcyBXZWJTb2NrZXRDaGFubmVs
Q2xpZW50UHJpdmF0ZTsKKworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViRGF0
YTsKK2NsYXNzIFdlYkRvY3VtZW50OworY2xhc3MgV2ViU3RyaW5nOworY2xhc3MgV2ViVVJMOwor
Y2xhc3MgV2ViV2ViU29ja2V0Q2hhbm5lbENsaWVudDsKKworY2xhc3MgV2ViV2ViU29ja2V0Q2hh
bm5lbCB7CitwdWJsaWM6CisgICAgZW51bSBDbG9zZUV2ZW50Q29kZSB7CisgICAgICAgIENsb3Nl
RXZlbnRDb2RlTm90U3BlY2lmaWVkID0gLTEsCisgICAgICAgIENsb3NlRXZlbnRDb2RlTm9ybWFs
Q2xvc3VyZSA9IDEwMDAsCisgICAgICAgIENsb3NlRXZlbnRDb2RlR29pbmdBd2F5ID0gMTAwMSwK
KyAgICAgICAgQ2xvc2VFdmVudENvZGVQcm90b2NvbEVycm9yID0gMTAwMiwKKyAgICAgICAgQ2xv
c2VFdmVudENvZGVVbnN1cHBvcnRlZERhdGEgPSAxMDAzLAorICAgICAgICBDbG9zZUV2ZW50Q29k
ZUZyYW1lVG9vTGFyZ2UgPSAxMDA0LAorICAgICAgICBDbG9zZUV2ZW50Q29kZU5vU3RhdHVzUmN2
ZCA9IDEwMDUsCisgICAgICAgIENsb3NlRXZlbnRDb2RlQWJub3JtYWxDbG9zdXJlID0gMTAwNiwK
KyAgICAgICAgQ2xvc2VFdmVudENvZGVJbnZhbGlkVVRGOCA9IDEwMDcsCisgICAgICAgIENsb3Nl
RXZlbnRDb2RlTWluaW11bVVzZXJEZWZpbmVkID0gMzAwMCwKKyAgICAgICAgQ2xvc2VFdmVudENv
ZGVNYXhpbXVtVXNlckRlZmluZWQgPSA0OTk5CisgICAgfTsKKyAgICBzdGF0aWMgV2ViV2ViU29j
a2V0Q2hhbm5lbCogY3JlYXRlKFdlYkRvY3VtZW50KiwgV2ViV2ViU29ja2V0Q2hhbm5lbENsaWVu
dCopOworICAgIHZpcnR1YWwgfldlYldlYlNvY2tldENoYW5uZWwoKSB7IH0KKworICAgIHZpcnR1
YWwgdm9pZCBjb25uZWN0KGNvbnN0IFdlYlVSTCYsIGNvbnN0IFdlYlN0cmluZyYgcHJvdG9jb2wp
ID0gMDsKKyAgICB2aXJ0dWFsIFdlYlN0cmluZyBzdWJwcm90b2NvbCgpID0gMDsKKyAgICB2aXJ0
dWFsIGJvb2wgc2VuZFRleHQoY29uc3QgV2ViU3RyaW5nJiBtZXNzYWdlKSA9IDA7CisgICAgdmly
dHVhbCBib29sIHNlbmRCaW5hcnkoY29uc3QgV2ViRGF0YSYgYmluYXJ5RGF0YSkgPSAwOworICAg
IHZpcnR1YWwgdW5zaWduZWQgbG9uZyBidWZmZXJlZEFtb3VudCgpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgY2xvc2UoaW50IGNvZGUsIGNvbnN0IFdlYlN0cmluZyYgcmVhc29uKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGZhaWwoY29uc3QgV2ViU3RyaW5nJiByZWFzb24pID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVjdCgpID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdAorCisjZW5kaWYgLy8gV2ViV2ViU29ja2V0Q2hhbm5lbF9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJXZWJTb2NrZXRDaGFubmVsQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJXZWJTb2NrZXRDaGFubmVsQ2xpZW50LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZGNiMTYxNGU0YjM2MjZhZTQ4NWM5MzM4YTIwZGJiNmYzYjkzNWM3MgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldlYlNvY2tl
dENoYW5uZWxDbGllbnQuaApAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDExIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViV2ViU29ja2V0Q2hh
bm5lbENsaWVudF9oCisjZGVmaW5lIFdlYldlYlNvY2tldENoYW5uZWxDbGllbnRfaAorCisjaW5j
bHVkZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2ViRGF0YS5oIgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworY2xhc3MgV2ViU3RyaW5nOworCitjbGFzcyBXZWJXZWJTb2NrZXRDaGFubmVsQ2xp
ZW50IHsKK3B1YmxpYzoKKyAgICBlbnVtIENsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uU3RhdHVz
IHsKKyAgICAgICAgQ2xvc2luZ0hhbmRzaGFrZUluY29tcGxldGUsCisgICAgICAgIENsb3NpbmdI
YW5kc2hha2VDb21wbGV0ZQorICAgIH07CisgICAgdmlydHVhbCB+V2ViV2ViU29ja2V0Q2hhbm5l
bENsaWVudCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRDb25uZWN0KCkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShjb25zdCBXZWJTdHJpbmcmIG1lc3NhZ2UpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJpbmFyeURhdGEoY29uc3QgV2ViRGF0YSYg
YmluYXJ5RGF0YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZUVycm9y
KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydENsb3NpbmdIYW5kc2hha2UoKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGRpZENsb3NlKHVuc2lnbmVkIGxvbmcgYnVmZmVyZWRBbW91bnQs
IENsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uU3RhdHVzLCB1bnNpZ25lZCBzaG9ydCBjb2RlLCBj
b25zdCBXZWJTdHJpbmcmIHJlYXNvbikgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CisKKyNlbmRpZiAvLyBXZWJXZWJTb2NrZXRDaGFubmVsQ2xpZW50X2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldlYlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV2ViU29ja2V0Q2hhbm5lbC5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OTI1NDdmMWZiNjQyMjE5MmIxNDJlODllYjZjOGUzOWFkMmY1MTBmNgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldlYlNvY2tldENoYW5uZWwuY3BwCkBA
IC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAq
IG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViV2ViU29ja2V0
Q2hhbm5lbC5oIgorCisjaW5jbHVkZSAiV2ViV2ViU29ja2V0Q2hhbm5lbEltcGwuaCIKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK1dlYldlYlNvY2tldENoYW5uZWwqIFdlYldlYlNvY2tldENoYW5u
ZWw6OmNyZWF0ZShXZWJEb2N1bWVudCogZG9jdW1lbnQsIFdlYldlYlNvY2tldENoYW5uZWxDbGll
bnQqIGNsaWVudCkKK3sKKyAgICByZXR1cm4gbmV3IFdlYldlYlNvY2tldENoYW5uZWxJbXBsKGRv
Y3VtZW50LCBjbGllbnQpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldlYlNvY2tldENoYW5uZWxJbXBsLmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldlYlNvY2tldENoYW5uZWxJbXBsLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mYmNlZDQ1MzM3NTFlYjI4NGFjN2UyMDRmNzYyYjY0NjZmOGIzMzllCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV2ViU29ja2V0Q2hh
bm5lbEltcGwuY3BwCkBAIC0wLDAgKzEsMjM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEx
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIldlYldlYlNvY2tldENoYW5uZWxJbXBsLmgiCisKKyNpbmNsdWRlICJEb2N1bWVudC5oIgor
I2luY2x1ZGUgIktVUkwuaCIKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisjaW5jbHVkZSAiV2Vi
U29ja2V0Q2hhbm5lbC5oIgorI2luY2x1ZGUgIldlYlNvY2tldENoYW5uZWxDbGllbnQuaCIKKyNl
bHNlCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBXZWJTb2NrZXRDaGFubmVsIHsKK307Cit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisjZW5kaWYKKworI2luY2x1ZGUgIldlYkRhdGEuaCIKKyNp
bmNsdWRlICJXZWJEb2N1bWVudC5oIgorI2luY2x1ZGUgIldlYlN0cmluZy5oIgorI2luY2x1ZGUg
IldlYlVSTC5oIgorI2luY2x1ZGUgIldlYldlYlNvY2tldENoYW5uZWxDbGllbnQuaCIKKwordXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJXZWJTb2Nr
ZXRDaGFubmVsSW1wbDo6V2ViV2ViU29ja2V0Q2hhbm5lbEltcGwoV2ViRG9jdW1lbnQqIGRvY3Vt
ZW50LCBXZWJXZWJTb2NrZXRDaGFubmVsQ2xpZW50KiBjbGllbnQpCisgICAgOiBtX2NsaWVudChj
bGllbnQpCit7CisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorICAgIFdFQktJVF9BU1NFUlQoZG9j
dW1lbnQpOworICAgIFdFQktJVF9BU1NFUlQoY2xpZW50KTsKKyAgICBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8UGFzc1JlZlB0cjxEb2N1bWVudD4gPigqZG9j
dW1lbnQpLmdldCgpOworICAgIG1fcHJpdmF0ZSA9IFdlYlNvY2tldENoYW5uZWw6OmNyZWF0ZShj
b250ZXh0LCB0aGlzKTsKKyNlbHNlCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYK
K30KKworV2ViV2ViU29ja2V0Q2hhbm5lbEltcGw6On5XZWJXZWJTb2NrZXRDaGFubmVsSW1wbCgp
Cit7CisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorICAgIGlmIChtX3ByaXZhdGUpCisgICAgICAg
IG1fcHJpdmF0ZS0+ZGlzY29ubmVjdCgpOworI2Vsc2UKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyNlbmRpZgorfQorCit2b2lkIFdlYldlYlNvY2tldENoYW5uZWxJbXBsOjpjb25uZWN0KGNv
bnN0IFdlYlVSTCYgdXJsLCBjb25zdCBXZWJTdHJpbmcmIHByb3RvY29sKQoreworI2lmIEVOQUJM
RShXRUJfU09DS0VUUykKKyAgICBpZiAoIW1fcHJpdmF0ZSkKKyAgICAgICAgcmV0dXJuOworICAg
IG1fcHJpdmF0ZS0+Y29ubmVjdCh1cmwsIHByb3RvY29sKTsKKyNlbHNlCisgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisjZW5kaWYKK30KKworV2ViU3RyaW5nIFdlYldlYlNvY2tldENoYW5uZWxJ
bXBsOjpzdWJwcm90b2NvbCgpCit7CisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorICAgIGlmICgh
bV9wcml2YXRlKQorICAgICAgICByZXR1cm4gV2ViU3RyaW5nKCk7CisgICAgcmV0dXJuIG1fcHJp
dmF0ZS0+c3VicHJvdG9jb2woKTsKKyNlbHNlCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisj
ZW5kaWYKK30KKworYm9vbCBXZWJXZWJTb2NrZXRDaGFubmVsSW1wbDo6c2VuZFRleHQoY29uc3Qg
V2ViU3RyaW5nJiBtZXNzYWdlKQoreworI2lmIEVOQUJMRShXRUJfU09DS0VUUykKKyAgICBpZiAo
IW1fcHJpdmF0ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBtX3ByaXZhdGUt
PnNlbmQobWVzc2FnZSk7CisjZWxzZQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlm
Cit9CisKK2Jvb2wgV2ViV2ViU29ja2V0Q2hhbm5lbEltcGw6OnNlbmRCaW5hcnkoY29uc3QgV2Vi
RGF0YSYgYmluYXJ5RGF0YSkKK3sKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisgICAgaWYgKCFt
X3ByaXZhdGUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gbV9wcml2YXRlLT5z
ZW5kKGJpbmFyeURhdGEuZGF0YSgpLCBiaW5hcnlEYXRhLnNpemUoKSk7CisjZWxzZQorICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCit9CisKK3Vuc2lnbmVkIGxvbmcgV2ViV2ViU29j
a2V0Q2hhbm5lbEltcGw6OmJ1ZmZlcmVkQW1vdW50KCkgY29uc3QKK3sKKyNpZiBFTkFCTEUoV0VC
X1NPQ0tFVFMpCisgICAgaWYgKCFtX3ByaXZhdGUpCisgICAgICAgIHJldHVybiAwOworICAgIHJl
dHVybiBtX3ByaXZhdGUtPmJ1ZmZlcmVkQW1vdW50KCk7CisjZWxzZQorICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworI2VuZGlmCit9CisKK3ZvaWQgV2ViV2ViU29ja2V0Q2hhbm5lbEltcGw6OmNs
b3NlKGludCBjb2RlLCBjb25zdCBXZWJTdHJpbmcmIHJlYXNvbikKK3sKKyNpZiBFTkFCTEUoV0VC
X1NPQ0tFVFMpCisgICAgaWYgKCFtX3ByaXZhdGUpCisgICAgICAgIHJldHVybjsKKyAgICBtX3By
aXZhdGUtPmNsb3NlKGNvZGUsIHJlYXNvbik7CisjZWxzZQorICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworI2VuZGlmCit9CisKK3ZvaWQgV2ViV2ViU29ja2V0Q2hhbm5lbEltcGw6OmZhaWwoY29u
c3QgV2ViU3RyaW5nJiByZWFzb24pCit7CisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorICAgIGlm
ICghbV9wcml2YXRlKQorICAgICAgICByZXR1cm47CisgICAgbV9wcml2YXRlLT5mYWlsKHJlYXNv
bik7CisjZWxzZQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCit9CisKK3ZvaWQg
V2ViV2ViU29ja2V0Q2hhbm5lbEltcGw6OmRpc2Nvbm5lY3QoKQoreworI2lmIEVOQUJMRShXRUJf
U09DS0VUUykKKyAgICBtX2NsaWVudCA9IDA7CisgICAgaWYgKCFtX3ByaXZhdGUpCisgICAgICAg
IHJldHVybjsKKyAgICBtX3ByaXZhdGUtPmRpc2Nvbm5lY3QoKTsKKyNlbHNlCisgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisjZW5kaWYKK30KKwordm9pZCBXZWJXZWJTb2NrZXRDaGFubmVsSW1w
bDo6ZGlkQ29ubmVjdCgpCit7CisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorICAgIGlmICghbV9j
bGllbnQpCisgICAgICAgIHJldHVybjsKKyAgICBtX2NsaWVudC0+ZGlkQ29ubmVjdCgpOworI2Vs
c2UKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNlbmRpZgorfQorCit2b2lkIFdlYldlYlNv
Y2tldENoYW5uZWxJbXBsOjpkaWRSZWNlaXZlTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2Up
Cit7CisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorICAgIGlmICghbV9jbGllbnQpCisgICAgICAg
IHJldHVybjsKKyAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZU1lc3NhZ2UoV2ViU3RyaW5nKG1lc3Nh
Z2UpKTsKKyNlbHNlCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKK30KKwordm9p
ZCBXZWJXZWJTb2NrZXRDaGFubmVsSW1wbDo6ZGlkUmVjZWl2ZUJpbmFyeURhdGEoUGFzc093blB0
cjxWZWN0b3I8Y2hhcj4gPiBiaW5hcnlEYXRhKQoreworI2lmIEVOQUJMRShXRUJfU09DS0VUUykK
KyAgICBpZiAoIW1fY2xpZW50KQorICAgICAgICByZXR1cm47CisgICAgbV9jbGllbnQtPmRpZFJl
Y2VpdmVCaW5hcnlEYXRhKFdlYkRhdGEoYmluYXJ5RGF0YS0+ZGF0YSgpLCBiaW5hcnlEYXRhLT5z
aXplKCkpKTsKKyNlbHNlCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKK30KKwor
dm9pZCBXZWJXZWJTb2NrZXRDaGFubmVsSW1wbDo6ZGlkUmVjZWl2ZU1lc3NhZ2VFcnJvcigpCit7
CisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorICAgIGlmICghbV9jbGllbnQpCisgICAgICAgIHJl
dHVybjsKKyAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZU1lc3NhZ2VFcnJvcigpOworI2Vsc2UKKyAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNlbmRpZgorfQorCit2b2lkIFdlYldlYlNvY2tldENo
YW5uZWxJbXBsOjpkaWRTdGFydENsb3NpbmdIYW5kc2hha2UoKQoreworI2lmIEVOQUJMRShXRUJf
U09DS0VUUykKKyAgICBpZiAoIW1fY2xpZW50KQorICAgICAgICByZXR1cm47CisgICAgbV9jbGll
bnQtPmRpZFN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSgpOworI2Vsc2UKKyAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyNlbmRpZgorfQorCit2b2lkIFdlYldlYlNvY2tldENoYW5uZWxJbXBsOjpkaWRD
bG9zZSh1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50LCBDbG9zaW5nSGFuZHNoYWtlQ29tcGxl
dGlvblN0YXR1cyBzdGF0dXMsIHVuc2lnbmVkIHNob3J0IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVh
c29uKQoreworI2lmIEVOQUJMRShXRUJfU09DS0VUUykKKyAgICBpZiAoIW1fY2xpZW50KQorICAg
ICAgICByZXR1cm47CisgICAgbV9jbGllbnQtPmRpZENsb3NlKGJ1ZmZlcmVkQW1vdW50LCBzdGF0
aWNfY2FzdDxXZWJXZWJTb2NrZXRDaGFubmVsQ2xpZW50OjpDbG9zaW5nSGFuZHNoYWtlQ29tcGxl
dGlvblN0YXR1cz4oc3RhdHVzKSwgY29kZSwgV2ViU3RyaW5nKHJlYXNvbikpOworI2Vsc2UKKyAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNlbmRpZgorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldlYlNvY2tldENo
YW5uZWxJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXZWJTb2NrZXRDaGFu
bmVsSW1wbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAxNWViNjUyNTlkMzgzN2Y3ZWVmZjNlOTM3NTdhYjYzYjFl
MjBlYTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJX
ZWJTb2NrZXRDaGFubmVsSW1wbC5oCkBAIC0wLDAgKzEsODMgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4K
KyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJXZWJTb2Nr
ZXRDaGFubmVsSW1wbF9oCisjZGVmaW5lIFdlYldlYlNvY2tldENoYW5uZWxJbXBsX2gKKworI2lu
Y2x1ZGUgIldlYkNvbW1vbi5oIgorI2luY2x1ZGUgIldlYlNvY2tldENoYW5uZWxDbGllbnQuaCIK
KyNpbmNsdWRlICJXZWJXZWJTb2NrZXRDaGFubmVsLmgiCisjaW5jbHVkZSAiV2ViV2ViU29ja2V0
Q2hhbm5lbENsaWVudC5oIgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgV2ViU29ja2V0Q2hhbm5l
bDsKKworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViRGF0YTsKK2NsYXNzIFdl
YkRvY3VtZW50OworY2xhc3MgV2ViU3RyaW5nOworY2xhc3MgV2ViVVJMOworCitjbGFzcyBXZWJX
ZWJTb2NrZXRDaGFubmVsSW1wbCA6IHB1YmxpYyBXZWJXZWJTb2NrZXRDaGFubmVsLCBwdWJsaWMg
V2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbENsaWVudCB7CitwdWJsaWM6CisgICAgV2ViV2ViU29j
a2V0Q2hhbm5lbEltcGwoV2ViRG9jdW1lbnQqLCBXZWJXZWJTb2NrZXRDaGFubmVsQ2xpZW50Kik7
CisgICAgdmlydHVhbCB+V2ViV2ViU29ja2V0Q2hhbm5lbEltcGwoKTsKKworICAgIHZpcnR1YWwg
dm9pZCBjb25uZWN0KGNvbnN0IFdlYlVSTCYsIGNvbnN0IFdlYlN0cmluZyYgcHJvdG9jb2wpOwor
ICAgIHZpcnR1YWwgV2ViU3RyaW5nIHN1YnByb3RvY29sKCk7CisgICAgdmlydHVhbCBib29sIHNl
bmRUZXh0KGNvbnN0IFdlYlN0cmluZyYgbWVzc2FnZSk7CisgICAgdmlydHVhbCBib29sIHNlbmRC
aW5hcnkoY29uc3QgV2ViRGF0YSYgYmluYXJ5RGF0YSk7CisgICAgdmlydHVhbCB1bnNpZ25lZCBs
b25nIGJ1ZmZlcmVkQW1vdW50KCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGNsb3NlKGludCBj
b2RlLCBjb25zdCBXZWJTdHJpbmcmIHJlYXNvbik7CisgICAgdmlydHVhbCB2b2lkIGZhaWwoY29u
c3QgV2ViU3RyaW5nJiByZWFzb24pOworICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0KCk7CisK
KyAgICAvLyBXZWJTb2NrZXRDaGFubmVsQ2xpZW50CisgICAgdmlydHVhbCB2b2lkIGRpZENvbm5l
Y3QoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoY29uc3QgU3RyaW5nJiBt
ZXNzYWdlKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJpbmFyeURhdGEoUGFzc093blB0
cjxWZWN0b3I8Y2hhcj4gPiBiaW5hcnlEYXRhKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZU1lc3NhZ2VFcnJvcigpOworICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydENsb3NpbmdIYW5kc2hh
a2UoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2xvc2UodW5zaWduZWQgbG9uZyBidWZmZXJlZEFt
b3VudCwgQ2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb25TdGF0dXMsIHVuc2lnbmVkIHNob3J0IGNv
ZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uKTsKKworcHJpdmF0ZToKKyAgICBSZWZQdHI8V2ViQ29y
ZTo6V2ViU29ja2V0Q2hhbm5lbD4gbV9wcml2YXRlOworICAgIFdlYldlYlNvY2tldENoYW5uZWxD
bGllbnQqIG1fY2xpZW50OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAv
LyBXZWJXZWJTb2NrZXRDaGFubmVsSW1wbF9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115458</attachid>
            <date>2011-11-16 15:19:18 -0800</date>
            <delta_ts>2011-11-18 01:05:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72016-20111117081917.patch</filename>
            <type>text/plain</type>
            <size>24593</size>
            <attacher name="Takashi Toyoshima">toyoshim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwMjYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWM1NzEwOTNiNjQwZDNm
Y2Q1Zjg1MGQ3ZWRiMjUzNDk1NmVkOTRmNC4uZTg1MTI1Y2FmNWRkZTYyZjMwZDdiNTA1MTkyNTdh
MzhkODg1MTFhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDExLTExLTE2ICBUYWth
c2hpIFRveW9zaGltYSAgPHRveW9zaGltQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21p
dW1dIFtXZWJTb2NrZXRdIGV4cG9ydCBXZWJTb2NrZXRDaGFubmVsIGludGVyZmFjZSBmb3IgcGx1
Z2lucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzIw
MTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQg
YSBpbnRlcmZhY2UgdG8gc2VuZCByYXcgYmluYXJ5IGRhdGEuCisgICAgICAgIFRoaXMgaW50ZXJm
YWNlIGlzIHVzZWQgYnkgV2ViV2ViU29ja2V0Q2hhbm5lbCBpbXBsZW1lbnRhdGlvbgorICAgICAg
ICBpbiBXZWJLaXQgQVBJLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIGp1c3QgZXhw
b3J0IGEgaW50ZXJmYWNlLgorCisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVs
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OnNlbmQpOgorICAgICAg
ICAqIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oOgorCiAyMDExLTExLTE1ICBTaGVyaWZm
IEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2Vk
LCByb2xsaW5nIG91dCByMTAwMjEzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBhOTNj
N2Q2OGE4ZmRlMDkwZGVhNTYxMjlhY2YwMTM5NDBkYThlZmE0Li4xNjVjOWQ0OTkzYTg1YjZkZjA4
ZDJhYmY3MDM2YTdmY2QxNWFjNzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDUwIEBACisyMDExLTExLTE2ICBUYWthc2hpIFRveW9zaGltYSAgPHRveW9zaGltQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIFtXZWJTb2NrZXRdIGV4cG9ydCBXZWJTb2Nr
ZXRDaGFubmVsIGludGVyZmFjZSBmb3IgcGx1Z2lucworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzIwMTYKKworICAgICAgICBBZGQgV2ViU29ja2V0IGFu
ZCBXZWJTb2NrZXRDbGllbnQgdG8gV2ViS2l0IEFQSS4KKworICAgICAgICBDdXJyZW50bHksIG9u
bHkgV2ViU29ja2V0U3RyZWFtSGFuZGxlIGNsYXNzIGlzIGV4cG9ydGVkIHRvIFdlYktpdCBBUEku
CisgICAgICAgIFdlYlNvY2tldFN0cmVhbUhhbmRsZSBpbXBsZW1lbnRzIGJpLWRpcmVjdGlvbmFs
IGNvbW11bmljYXRpb24gcG9ydHMuCisgICAgICAgIElmIHBsdWdpbnMgaGFuZGxlcyB0aGUgV2Vi
U29ja2V0IHByb3RvY29sLCBXZWJTb2NrZXRDaGFubmVsIG11c3QgYmUKKyAgICAgICAgZXhwb3J0
ZWQgYXMgV2ViV2ViU29ja2V0Q2hhbm5lbCBiZWNhdXNlIGl0IGlzIHRoZSBjbGFzcyB3aGljaCBp
bXBsZW1lbnQKKyAgICAgICAgdGhlIFdlYlNvY2tldCBwcm90b2NvbCBzdGFjay4KKworICAgICAg
ICBOb3JtYWxseSwgd2UgdXNlIFdlYldlYlNvY2tldENoYW5uZWwgYW5kIFdlYldlYlNvY2tldENo
YW5uZWxDbGllbnQgYXMKKyAgICAgICAgdGhlaXIgY2xhc3MgbmFtZS4gQnV0IGhlcmUgd2UgdXNl
IGp1c3QgV2ViU29ja2V0IGJlY2F1c2Ugb2YgYXZvaWRpbmcKKyAgICAgICAgV2ViV2ViIHByZWZp
eCBhbmQgY2xhc3MgbmFtZSBjb25mbGljdGlvbiBvbiBpbmNsdWRlLgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAg
KiBwdWJsaWMvV2ViU29ja2V0Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJTb2NrZXQ6
On5XZWJTb2NrZXQpOgorICAgICAgICAqIHB1YmxpYy9XZWJTb2NrZXRDbGllbnQuaDogQWRkZWQu
CisgICAgICAgIChXZWJLaXQ6OldlYlNvY2tldENsaWVudDo6fldlYlNvY2tldENsaWVudCk6Cisg
ICAgICAgICogc3JjL1dlYlJ1bnRpbWVGZWF0dXJlcy5jcHA6IEluc2VydCB3ZWJzb2NrZXRzIGRp
cmVjdG9yeSB0byBpbmNsdWRlIHBhdGggaW4gb3JkZXIgdG8gYXZvaWQgZmlsZW5hbWUgY29uZmxp
Y3Rpb24uCisgICAgICAgIChXZWJLaXQ6OldlYlJ1bnRpbWVGZWF0dXJlczo6ZW5hYmxlU29ja2V0
cyk6IFVzZSBXZWJDb3JlIG5hbWVzcGFjZSBleHBsaWNpdGx5LgorICAgICAgICAqIHNyYy9XZWJT
b2NrZXQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViU29ja2V0OjpjcmVhdGUpOgor
ICAgICAgICAqIHNyYy9XZWJTb2NrZXRJbXBsLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6
OldlYlNvY2tldEltcGw6OldlYlNvY2tldEltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJTb2Nr
ZXRJbXBsOjp+V2ViU29ja2V0SW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNvY2tldEltcGw6
OmNvbm5lY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJTb2NrZXRJbXBsOjpzdWJwcm90b2NvbCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlNvY2tldEltcGw6OnNlbmRUZXh0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViU29ja2V0SW1wbDo6c2VuZEJpbmFyeSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNv
Y2tldEltcGw6OmJ1ZmZlcmVkQW1vdW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViU29ja2V0SW1w
bDo6Y2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJTb2NrZXRJbXBsOjpmYWlsKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViU29ja2V0SW1wbDo6ZGlzY29ubmVjdCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlNvY2tldEltcGw6OmRpZENvbm5lY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJTb2NrZXRJ
bXBsOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNvY2tldEltcGw6
OmRpZFJlY2VpdmVCaW5hcnlEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViU29ja2V0SW1wbDo6
ZGlkUmVjZWl2ZU1lc3NhZ2VFcnJvcik6CisgICAgICAgIChXZWJLaXQ6OldlYlNvY2tldEltcGw6
OmRpZFN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNvY2tldElt
cGw6OmRpZENsb3NlKToKKyAgICAgICAgKiBzcmMvV2ViU29ja2V0SW1wbC5oOiBBZGRlZC4KKwog
MjAxMS0xMS0xNSAgQWxwaGEgTGFtICA8aGNsYW1AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtj
aHJvbWl1bV0gc2Nyb2xsIGRlbHRhcyBhcmUgY2xlYXJlZCBkdXJpbmcgY29tbWl0IHRvIHRoZSBt
YWluIHRocmVhZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2Nr
ZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5l
bC5jcHAKaW5kZXggNzcwODY1ZjQ2MDY3ZTY2MjUxOGEwYzM5NDM5MzRiOGEzNzEyMjAxYy4uMDYx
MGZiZjBiNzRmNmQ5ODM2YTE5MGZlNjhjMTUxNTI0OGIwM2Q0OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCkBAIC0xODYsNiArMTg2LDE0IEBA
IGJvb2wgV2ViU29ja2V0Q2hhbm5lbDo6c2VuZChjb25zdCBCbG9iJiBiaW5hcnlEYXRhKQogICAg
IHJldHVybiB0cnVlOwogfQogCitib29sIFdlYlNvY2tldENoYW5uZWw6OnNlbmQoY29uc3QgY2hh
ciogZGF0YSwgaW50IGxlbmd0aCkKK3sKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5u
ZWwgJXAgc2VuZCBiaW5hcnkgJXAgKCVkQikiLCB0aGlzLCBkYXRhLCBsZW5ndGgpOworICAgIEFT
U0VSVCghbV91c2VIaXhpZTc2UHJvdG9jb2wpOworICAgIGVucXVldWVSYXdGcmFtZShPcENvZGVC
aW5hcnksIGRhdGEsIGxlbmd0aCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHVuc2lnbmVkIGxv
bmcgV2ViU29ja2V0Q2hhbm5lbDo6YnVmZmVyZWRBbW91bnQoKSBjb25zdAogewogICAgIExPRyhO
ZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBidWZmZXJlZEFtb3VudCIsIHRoaXMpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmggYi9T
b3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaAppbmRleCBkMzMzNTdh
M2YxNzYyOGFiM2M4OWViNTliNjI1YjY2N2Q1MGFlYjkwLi5lMzFiYmUzMTc3ZGFmNjZiY2U2OGRh
N2IwOWQ1NmZmMTljZmU3NGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRz
L1dlYlNvY2tldENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNv
Y2tldENoYW5uZWwuaApAQCAtNjgsNiArNjgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29s
IHNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKICAgICB2aXJ0dWFsIGJvb2wgc2VuZChjb25z
dCBBcnJheUJ1ZmZlciYpOwogICAgIHZpcnR1YWwgYm9vbCBzZW5kKGNvbnN0IEJsb2ImKTsKKyAg
ICB2aXJ0dWFsIGJvb2wgc2VuZChjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKTsKICAgICB2
aXJ0dWFsIHVuc2lnbmVkIGxvbmcgYnVmZmVyZWRBbW91bnQoKSBjb25zdDsKICAgICB2aXJ0dWFs
IHZvaWQgY2xvc2UoaW50IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uKTsgLy8gU3RhcnQgY2xv
c2luZyBoYW5kc2hha2UuCiAgICAgdmlydHVhbCB2b2lkIGZhaWwoY29uc3QgU3RyaW5nJiByZWFz
b24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4IGQzMGIyNjFiYTQ4OTA1MmVkMTJh
NmI3MDc4MmNkMWI3NjY0MmViM2MuLjE4NDQ2NGRjZWMzZjY5NTMwNTkyYTI4MzhlNDJhOGYxNjk3
ODY4MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTI4OSw2ICsyODksOCBAQAog
ICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViU2hhcmVkV29ya2VyLmgnLAogICAgICAgICAgICAg
ICAgICdwdWJsaWMvV2ViU2hhcmVkV29ya2VyUmVwb3NpdG9yeS5oJywKICAgICAgICAgICAgICAg
ICAncHVibGljL1dlYlNpemUuaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJTb2NrZXQu
aCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJTb2NrZXRDbGllbnQuaCcsCiAgICAgICAg
ICAgICAgICAgJ3B1YmxpYy9XZWJTb2NrZXRTdHJlYW1FcnJvci5oJywKICAgICAgICAgICAgICAg
ICAncHVibGljL1dlYlNvY2tldFN0cmVhbUhhbmRsZS5oJywKICAgICAgICAgICAgICAgICAncHVi
bGljL1dlYlNvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oJywKQEAgLTYwNSw2ICs2MDcsOSBAQAog
ICAgICAgICAgICAgICAgICdzcmMvV2ViU2V0dGluZ3NJbXBsLmgnLAogICAgICAgICAgICAgICAg
ICdzcmMvV2ViU2hhcmVkV29ya2VySW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2Vi
U2hhcmVkV29ya2VySW1wbC5oJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYlNvY2tldC5jcHAn
LAorICAgICAgICAgICAgICAgICdzcmMvV2ViU29ja2V0SW1wbC5jcHAnLAorICAgICAgICAgICAg
ICAgICdzcmMvV2ViU29ja2V0SW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlNwZWVj
aElucHV0Q29udHJvbGxlck1vY2tJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJT
cGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL1dl
YlNwZWVjaElucHV0UmVzdWx0LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJTb2NrZXQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YlNvY2tldC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA5NDJkZTY1NWEwOTVlNmM1M2RhOTI5YjczNzhmY2ViYzk5
M2MwNDUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJTb2NrZXQuaApAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViU29ja2V0X2gKKyNkZWZpbmUg
V2ViU29ja2V0X2gKKworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorI2luY2x1ZGUgIldlYlByaXZh
dGVQdHIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBXZWJTb2NrZXRDaGFubmVs
OworCit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJEYXRhOworY2xhc3MgV2Vi
RG9jdW1lbnQ7CitjbGFzcyBXZWJTdHJpbmc7CitjbGFzcyBXZWJVUkw7CitjbGFzcyBXZWJTb2Nr
ZXRDbGllbnQ7CisKK2NsYXNzIFdlYlNvY2tldCB7CitwdWJsaWM6CisgICAgZW51bSBDbG9zZUV2
ZW50Q29kZSB7CisgICAgICAgIENsb3NlRXZlbnRDb2RlTm90U3BlY2lmaWVkID0gLTEsCisgICAg
ICAgIENsb3NlRXZlbnRDb2RlTm9ybWFsQ2xvc3VyZSA9IDEwMDAsCisgICAgICAgIENsb3NlRXZl
bnRDb2RlR29pbmdBd2F5ID0gMTAwMSwKKyAgICAgICAgQ2xvc2VFdmVudENvZGVQcm90b2NvbEVy
cm9yID0gMTAwMiwKKyAgICAgICAgQ2xvc2VFdmVudENvZGVVbnN1cHBvcnRlZERhdGEgPSAxMDAz
LAorICAgICAgICBDbG9zZUV2ZW50Q29kZUZyYW1lVG9vTGFyZ2UgPSAxMDA0LAorICAgICAgICBD
bG9zZUV2ZW50Q29kZU5vU3RhdHVzUmN2ZCA9IDEwMDUsCisgICAgICAgIENsb3NlRXZlbnRDb2Rl
QWJub3JtYWxDbG9zdXJlID0gMTAwNiwKKyAgICAgICAgQ2xvc2VFdmVudENvZGVJbnZhbGlkVVRG
OCA9IDEwMDcsCisgICAgICAgIENsb3NlRXZlbnRDb2RlTWluaW11bVVzZXJEZWZpbmVkID0gMzAw
MCwKKyAgICAgICAgQ2xvc2VFdmVudENvZGVNYXhpbXVtVXNlckRlZmluZWQgPSA0OTk5CisgICAg
fTsKKyAgICBzdGF0aWMgV2ViU29ja2V0KiBjcmVhdGUoV2ViRG9jdW1lbnQqLCBXZWJTb2NrZXRD
bGllbnQqKTsKKyAgICB2aXJ0dWFsIH5XZWJTb2NrZXQoKSB7IH0KKworICAgIHZpcnR1YWwgdm9p
ZCBjb25uZWN0KGNvbnN0IFdlYlVSTCYsIGNvbnN0IFdlYlN0cmluZyYgcHJvdG9jb2wpID0gMDsK
KyAgICB2aXJ0dWFsIFdlYlN0cmluZyBzdWJwcm90b2NvbCgpID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgc2VuZFRleHQoY29uc3QgV2ViU3RyaW5nJiBtZXNzYWdlKSA9IDA7CisgICAgdmlydHVhbCBi
b29sIHNlbmRCaW5hcnkoY29uc3QgV2ViRGF0YSYgYmluYXJ5RGF0YSkgPSAwOworICAgIHZpcnR1
YWwgdW5zaWduZWQgbG9uZyBidWZmZXJlZEFtb3VudCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgY2xvc2UoaW50IGNvZGUsIGNvbnN0IFdlYlN0cmluZyYgcmVhc29uKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGZhaWwoY29uc3QgV2ViU3RyaW5nJiByZWFzb24pID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgZGlzY29ubmVjdCgpID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAor
CisjZW5kaWYgLy8gV2ViU29ja2V0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYlNvY2tldENsaWVudC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViU29ja2V0Q2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGI1MzhlMmQ1MTJhMDIwYTViZGIxMjE0
ZTE2YTYyNWI4MTJlMTA3YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYlNvY2tldENsaWVudC5oCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
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
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJT
b2NrZXRDbGllbnRfaAorI2RlZmluZSBXZWJTb2NrZXRDbGllbnRfaAorCisjaW5jbHVkZSAiV2Vi
Q29tbW9uLmgiCisjaW5jbHVkZSAiV2ViRGF0YS5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
Y2xhc3MgV2ViU3RyaW5nOworCitjbGFzcyBXZWJTb2NrZXRDbGllbnQgeworcHVibGljOgorICAg
IGVudW0gQ2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb25TdGF0dXMgeworICAgICAgICBDbG9zaW5n
SGFuZHNoYWtlSW5jb21wbGV0ZSwKKyAgICAgICAgQ2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRlCisg
ICAgfTsKKyAgICB2aXJ0dWFsIH5XZWJTb2NrZXRDbGllbnQoKSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgZGlkQ29ubmVjdCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2Uo
Y29uc3QgV2ViU3RyaW5nJiBtZXNzYWdlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2Vp
dmVCaW5hcnlEYXRhKGNvbnN0IFdlYkRhdGEmIGJpbmFyeURhdGEpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VFcnJvcigpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
U3RhcnRDbG9zaW5nSGFuZHNoYWtlKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRDbG9zZSh1
bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50LCBDbG9zaW5nSGFuZHNoYWtlQ29tcGxldGlvblN0
YXR1cywgdW5zaWduZWQgc2hvcnQgY29kZSwgY29uc3QgV2ViU3RyaW5nJiByZWFzb24pID0gMDsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViU29ja2V0Q2xpZW50
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlJ1bnRpbWVGZWF0
dXJlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJSdW50aW1lRmVhdHVyZXMu
Y3BwCmluZGV4IDYyMjQ5ZGE4ZDMwNzFiNjM5NzJjMjI0MjJlNTJmZGQxZDIyYjFkNGQuLjU2Y2Q4
MDMwOWIxYTQ1N2RjODUyOTE4Mzg1N2I2M2ZmZjg3MzFlZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlJ1bnRpbWVGZWF0dXJlcy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViUnVudGltZUZlYXR1cmVzLmNwcApAQCAtMzQsNyArMzQsNyBA
QAogI2luY2x1ZGUgIkFic3RyYWN0RGF0YWJhc2UuaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmgiCi0jaW5j
bHVkZSAiV2ViU29ja2V0LmgiCisjaW5jbHVkZSAid2Vic29ja2V0cy9XZWJTb2NrZXQuaCIKIAog
I2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgogCkBAIC0xMDEsNyArMTAxLDcgQEAgYm9vbCBX
ZWJSdW50aW1lRmVhdHVyZXM6OmlzTWVkaWFQbGF5ZXJFbmFibGVkKCkKIHZvaWQgV2ViUnVudGlt
ZUZlYXR1cmVzOjplbmFibGVTb2NrZXRzKGJvb2wgZW5hYmxlKQogewogI2lmIEVOQUJMRShXRUJf
U09DS0VUUykKLSAgICBXZWJTb2NrZXQ6OnNldElzQXZhaWxhYmxlKGVuYWJsZSk7CisgICAgV2Vi
Q29yZTo6V2ViU29ja2V0OjpzZXRJc0F2YWlsYWJsZShlbmFibGUpOwogI2VuZGlmCiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNvY2tldC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTb2NrZXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRmYjU1MGQz
NTkzZmZhMTRhNzVhYzkwMGQ0ZDJlZmRiZDhhYjU3MDgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTb2NrZXQuY3BwCkBAIC0wLDAgKzEsNDMgQEAKKy8q
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
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViU29ja2V0LmgiCisKKyNpbmNsdWRlICJXZWJT
b2NrZXRJbXBsLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJTb2NrZXQqIFdlYlNvY2tl
dDo6Y3JlYXRlKFdlYkRvY3VtZW50KiBkb2N1bWVudCwgV2ViU29ja2V0Q2xpZW50KiBjbGllbnQp
Cit7CisgICAgcmV0dXJuIG5ldyBXZWJTb2NrZXRJbXBsKGRvY3VtZW50LCBjbGllbnQpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlNvY2tldEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
U29ja2V0SW1wbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWY1NGExNjgxYmNiZmM2Y2U5MDMyYThiYzUxYWIx
NmU5NDViOTZlYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlNvY2tldEltcGwuY3BwCkBAIC0wLDAgKzEsMjM0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIldlYlNvY2tldEltcGwuaCIKKworI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5j
bHVkZSAiS1VSTC5oIgorI2lmIEVOQUJMRShXRUJfU09DS0VUUykKKyNpbmNsdWRlICJXZWJTb2Nr
ZXRDaGFubmVsLmgiCisjaW5jbHVkZSAiV2ViU29ja2V0Q2hhbm5lbENsaWVudC5oIgorI2Vsc2UK
K25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFdlYlNvY2tldENoYW5uZWwgeworfTsKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKyNlbmRpZgorCisjaW5jbHVkZSAiV2ViRGF0YS5oIgorI2luY2x1
ZGUgIldlYkRvY3VtZW50LmgiCisjaW5jbHVkZSAiV2ViU29ja2V0Q2xpZW50LmgiCisjaW5jbHVk
ZSAiV2ViU3RyaW5nLmgiCisjaW5jbHVkZSAiV2ViVVJMLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViU29ja2V0SW1wbDo6V2ViU29ja2V0
SW1wbChXZWJEb2N1bWVudCogZG9jdW1lbnQsIFdlYlNvY2tldENsaWVudCogY2xpZW50KQorICAg
IDogbV9jbGllbnQoY2xpZW50KQoreworI2lmIEVOQUJMRShXRUJfU09DS0VUUykKKyAgICBXRUJL
SVRfQVNTRVJUKGRvY3VtZW50KTsKKyAgICBXRUJLSVRfQVNTRVJUKGNsaWVudCk7CisgICAgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IHN0YXRpY19jYXN0PFBhc3NSZWZQdHI8RG9j
dW1lbnQ+ID4oKmRvY3VtZW50KS5nZXQoKTsKKyAgICBtX3ByaXZhdGUgPSBXZWJTb2NrZXRDaGFu
bmVsOjpjcmVhdGUoY29udGV4dCwgdGhpcyk7CisjZWxzZQorICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworI2VuZGlmCit9CisKK1dlYlNvY2tldEltcGw6On5XZWJTb2NrZXRJbXBsKCkKK3sKKyNp
ZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisgICAgaWYgKG1fcHJpdmF0ZSkKKyAgICAgICAgbV9wcml2
YXRlLT5kaXNjb25uZWN0KCk7CisjZWxzZQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2Vu
ZGlmCit9CisKK3ZvaWQgV2ViU29ja2V0SW1wbDo6Y29ubmVjdChjb25zdCBXZWJVUkwmIHVybCwg
Y29uc3QgV2ViU3RyaW5nJiBwcm90b2NvbCkKK3sKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisg
ICAgaWYgKCFtX3ByaXZhdGUpCisgICAgICAgIHJldHVybjsKKyAgICBtX3ByaXZhdGUtPmNvbm5l
Y3QodXJsLCBwcm90b2NvbCk7CisjZWxzZQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2Vu
ZGlmCit9CisKK1dlYlN0cmluZyBXZWJTb2NrZXRJbXBsOjpzdWJwcm90b2NvbCgpCit7CisjaWYg
RU5BQkxFKFdFQl9TT0NLRVRTKQorICAgIGlmICghbV9wcml2YXRlKQorICAgICAgICByZXR1cm4g
V2ViU3RyaW5nKCk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+c3VicHJvdG9jb2woKTsKKyNlbHNl
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKK30KKworYm9vbCBXZWJTb2NrZXRJ
bXBsOjpzZW5kVGV4dChjb25zdCBXZWJTdHJpbmcmIG1lc3NhZ2UpCit7CisjaWYgRU5BQkxFKFdF
Ql9TT0NLRVRTKQorICAgIGlmICghbV9wcml2YXRlKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgcmV0dXJuIG1fcHJpdmF0ZS0+c2VuZChtZXNzYWdlKTsKKyNlbHNlCisgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisjZW5kaWYKK30KKworYm9vbCBXZWJTb2NrZXRJbXBsOjpzZW5kQmluYXJ5
KGNvbnN0IFdlYkRhdGEmIGJpbmFyeURhdGEpCit7CisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQor
ICAgIGlmICghbV9wcml2YXRlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIG1f
cHJpdmF0ZS0+c2VuZChiaW5hcnlEYXRhLmRhdGEoKSwgYmluYXJ5RGF0YS5zaXplKCkpOworI2Vs
c2UKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNlbmRpZgorfQorCit1bnNpZ25lZCBsb25n
IFdlYlNvY2tldEltcGw6OmJ1ZmZlcmVkQW1vdW50KCkgY29uc3QKK3sKKyNpZiBFTkFCTEUoV0VC
X1NPQ0tFVFMpCisgICAgaWYgKCFtX3ByaXZhdGUpCisgICAgICAgIHJldHVybiAwOworICAgIHJl
dHVybiBtX3ByaXZhdGUtPmJ1ZmZlcmVkQW1vdW50KCk7CisjZWxzZQorICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworI2VuZGlmCit9CisKK3ZvaWQgV2ViU29ja2V0SW1wbDo6Y2xvc2UoaW50IGNv
ZGUsIGNvbnN0IFdlYlN0cmluZyYgcmVhc29uKQoreworI2lmIEVOQUJMRShXRUJfU09DS0VUUykK
KyAgICBpZiAoIW1fcHJpdmF0ZSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fcHJpdmF0ZS0+Y2xv
c2UoY29kZSwgcmVhc29uKTsKKyNlbHNlCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5k
aWYKK30KKwordm9pZCBXZWJTb2NrZXRJbXBsOjpmYWlsKGNvbnN0IFdlYlN0cmluZyYgcmVhc29u
KQoreworI2lmIEVOQUJMRShXRUJfU09DS0VUUykKKyAgICBpZiAoIW1fcHJpdmF0ZSkKKyAgICAg
ICAgcmV0dXJuOworICAgIG1fcHJpdmF0ZS0+ZmFpbChyZWFzb24pOworI2Vsc2UKKyAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyNlbmRpZgorfQorCit2b2lkIFdlYlNvY2tldEltcGw6OmRpc2Nv
bm5lY3QoKQoreworI2lmIEVOQUJMRShXRUJfU09DS0VUUykKKyAgICBtX2NsaWVudCA9IDA7Cisg
ICAgaWYgKCFtX3ByaXZhdGUpCisgICAgICAgIHJldHVybjsKKyAgICBtX3ByaXZhdGUtPmRpc2Nv
bm5lY3QoKTsKKyNlbHNlCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKK30KKwor
dm9pZCBXZWJTb2NrZXRJbXBsOjpkaWRDb25uZWN0KCkKK3sKKyNpZiBFTkFCTEUoV0VCX1NPQ0tF
VFMpCisgICAgaWYgKCFtX2NsaWVudCkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY2xpZW50LT5k
aWRDb25uZWN0KCk7CisjZWxzZQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCit9
CisKK3ZvaWQgV2ViU29ja2V0SW1wbDo6ZGlkUmVjZWl2ZU1lc3NhZ2UoY29uc3QgU3RyaW5nJiBt
ZXNzYWdlKQoreworI2lmIEVOQUJMRShXRUJfU09DS0VUUykKKyAgICBpZiAoIW1fY2xpZW50KQor
ICAgICAgICByZXR1cm47CisgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVNZXNzYWdlKFdlYlN0cmlu
ZyhtZXNzYWdlKSk7CisjZWxzZQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCit9
CisKK3ZvaWQgV2ViU29ja2V0SW1wbDo6ZGlkUmVjZWl2ZUJpbmFyeURhdGEoUGFzc093blB0cjxW
ZWN0b3I8Y2hhcj4gPiBiaW5hcnlEYXRhKQoreworI2lmIEVOQUJMRShXRUJfU09DS0VUUykKKyAg
ICBpZiAoIW1fY2xpZW50KQorICAgICAgICByZXR1cm47CisgICAgbV9jbGllbnQtPmRpZFJlY2Vp
dmVCaW5hcnlEYXRhKFdlYkRhdGEoYmluYXJ5RGF0YS0+ZGF0YSgpLCBiaW5hcnlEYXRhLT5zaXpl
KCkpKTsKKyNlbHNlCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKK30KKwordm9p
ZCBXZWJTb2NrZXRJbXBsOjpkaWRSZWNlaXZlTWVzc2FnZUVycm9yKCkKK3sKKyNpZiBFTkFCTEUo
V0VCX1NPQ0tFVFMpCisgICAgaWYgKCFtX2NsaWVudCkKKyAgICAgICAgcmV0dXJuOworICAgIG1f
Y2xpZW50LT5kaWRSZWNlaXZlTWVzc2FnZUVycm9yKCk7CisjZWxzZQorICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworI2VuZGlmCit9CisKK3ZvaWQgV2ViU29ja2V0SW1wbDo6ZGlkU3RhcnRDbG9z
aW5nSGFuZHNoYWtlKCkKK3sKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisgICAgaWYgKCFtX2Ns
aWVudCkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY2xpZW50LT5kaWRTdGFydENsb3NpbmdIYW5k
c2hha2UoKTsKKyNlbHNlCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKK30KKwor
dm9pZCBXZWJTb2NrZXRJbXBsOjpkaWRDbG9zZSh1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50
LCBDbG9zaW5nSGFuZHNoYWtlQ29tcGxldGlvblN0YXR1cyBzdGF0dXMsIHVuc2lnbmVkIHNob3J0
IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uKQoreworI2lmIEVOQUJMRShXRUJfU09DS0VUUykK
KyAgICBpZiAoIW1fY2xpZW50KQorICAgICAgICByZXR1cm47CisgICAgbV9jbGllbnQtPmRpZENs
b3NlKGJ1ZmZlcmVkQW1vdW50LCBzdGF0aWNfY2FzdDxXZWJTb2NrZXRDbGllbnQ6OkNsb3NpbmdI
YW5kc2hha2VDb21wbGV0aW9uU3RhdHVzPihzdGF0dXMpLCBjb2RlLCBXZWJTdHJpbmcocmVhc29u
KSk7CisjZWxzZQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViU29ja2V0SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU29ja2V0SW1w
bC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjBkMGNkY2FjODNhYmJmZTg1ZjExODU3MzNhNTA4MWJjMjFlNzE0ZjgK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTb2NrZXRJ
bXBsLmgKQEAgLTAsMCArMSw4MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlNvY2tldEltcGxfaAorI2RlZmluZSBX
ZWJTb2NrZXRJbXBsX2gKKworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorI2luY2x1ZGUgIldlYlNv
Y2tldC5oIgorI2luY2x1ZGUgIldlYlNvY2tldENoYW5uZWxDbGllbnQuaCIKKyNpbmNsdWRlICJX
ZWJTb2NrZXRDbGllbnQuaCIKKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFdlYlNvY2tldENoYW5u
ZWw7CisKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkRhdGE7CitjbGFzcyBX
ZWJEb2N1bWVudDsKK2NsYXNzIFdlYlN0cmluZzsKK2NsYXNzIFdlYlVSTDsKKworY2xhc3MgV2Vi
U29ja2V0SW1wbCA6IHB1YmxpYyBXZWJTb2NrZXQsIHB1YmxpYyBXZWJDb3JlOjpXZWJTb2NrZXRD
aGFubmVsQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBXZWJTb2NrZXRJbXBsKFdlYkRvY3VtZW50Kiwg
V2ViU29ja2V0Q2xpZW50Kik7CisgICAgdmlydHVhbCB+V2ViU29ja2V0SW1wbCgpOworCisgICAg
dmlydHVhbCB2b2lkIGNvbm5lY3QoY29uc3QgV2ViVVJMJiwgY29uc3QgV2ViU3RyaW5nJiBwcm90
b2NvbCk7CisgICAgdmlydHVhbCBXZWJTdHJpbmcgc3VicHJvdG9jb2woKTsKKyAgICB2aXJ0dWFs
IGJvb2wgc2VuZFRleHQoY29uc3QgV2ViU3RyaW5nJiBtZXNzYWdlKTsKKyAgICB2aXJ0dWFsIGJv
b2wgc2VuZEJpbmFyeShjb25zdCBXZWJEYXRhJiBiaW5hcnlEYXRhKTsKKyAgICB2aXJ0dWFsIHVu
c2lnbmVkIGxvbmcgYnVmZmVyZWRBbW91bnQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgY2xv
c2UoaW50IGNvZGUsIGNvbnN0IFdlYlN0cmluZyYgcmVhc29uKTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZmFpbChjb25zdCBXZWJTdHJpbmcmIHJlYXNvbik7CisgICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5l
Y3QoKTsKKworICAgIC8vIFdlYlNvY2tldENoYW5uZWxDbGllbnQKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ29ubmVjdCgpOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShjb25zdCBT
dHJpbmcmIG1lc3NhZ2UpOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQmluYXJ5RGF0YShQ
YXNzT3duUHRyPFZlY3RvcjxjaGFyPiA+IGJpbmFyeURhdGEpOworICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWNlaXZlTWVzc2FnZUVycm9yKCk7CisgICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0Q2xvc2lu
Z0hhbmRzaGFrZSgpOworICAgIHZpcnR1YWwgdm9pZCBkaWRDbG9zZSh1bnNpZ25lZCBsb25nIGJ1
ZmZlcmVkQW1vdW50LCBDbG9zaW5nSGFuZHNoYWtlQ29tcGxldGlvblN0YXR1cywgdW5zaWduZWQg
c2hvcnQgY29kZSwgY29uc3QgU3RyaW5nJiByZWFzb24pOworCitwcml2YXRlOgorICAgIFJlZlB0
cjxXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsPiBtX3ByaXZhdGU7CisgICAgV2ViU29ja2V0Q2xp
ZW50KiBtX2NsaWVudDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8g
V2ViV2ViU29ja2V0Q2hhbm5lbEltcGxfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115761</attachid>
            <date>2011-11-18 01:04:55 -0800</date>
            <delta_ts>2011-11-18 15:19:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72016-20111118180454.patch</filename>
            <type>text/plain</type>
            <size>24271</size>
            <attacher name="Takashi Toyoshima">toyoshim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwNTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWI4OTk1YWViMTRlNmMz
NzU2ZGJmNGU2NjdmY2QwYmEyOWY4MmFkNy4uNDc3OGI0NzgyOWY3OTZjMmI1YjMxMGI3ZjFhYzAx
M2NjZmNlYjljMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDExLTExLTE2ICBUYWth
c2hpIFRveW9zaGltYSAgPHRveW9zaGltQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21p
dW1dIFtXZWJTb2NrZXRdIGV4cG9ydCBXZWJTb2NrZXRDaGFubmVsIGludGVyZmFjZSBmb3IgcGx1
Z2lucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzIw
MTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQg
YSBpbnRlcmZhY2UgdG8gc2VuZCByYXcgYmluYXJ5IGRhdGEuCisgICAgICAgIFRoaXMgaW50ZXJm
YWNlIGlzIHVzZWQgYnkgV2ViV2ViU29ja2V0Q2hhbm5lbCBpbXBsZW1lbnRhdGlvbgorICAgICAg
ICBpbiBXZWJLaXQgQVBJLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIGp1c3QgZXhw
b3J0IGEgaW50ZXJmYWNlLgorCisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVs
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OnNlbmQpOgorICAgICAg
ICAqIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oOgorCiAyMDExLTExLTE2ICBBbGV4YW5k
cmUgRWxpYXMgIDxhZWxpYXNAZ29vZ2xlLmNvbT4KIAogICAgICAgICBbY2hyb21pdW1dIEltcHJv
dmVtZW50cyBmb3IgcGFnZSBzY2FsZSBkZWx0YSBkdXJpbmcgY29tbWl0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IDFjMmVjYWUzYTNmNjdiNjE1ZGI5ZTI5OGI3MjI3NmM2NDNiZDY3YTku
LjQyZDZmOGY3YmEyZmU3MjgzY2QxYjFmYmNiYmM0NWFkNjQzMzA4NDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIgQEAKKzIwMTEtMTEtMTYgIFRha2FzaGkgVG95b3No
aW1hICA8dG95b3NoaW1AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0gW1dlYlNv
Y2tldF0gZXhwb3J0IFdlYlNvY2tldENoYW5uZWwgaW50ZXJmYWNlIGZvciBwbHVnaW5zCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjAxNgorCisgICAg
ICAgIEFkZCBXZWJTb2NrZXQgYW5kIFdlYlNvY2tldENsaWVudCB0byBXZWJLaXQgQVBJLgorCisg
ICAgICAgIEN1cnJlbnRseSwgb25seSBXZWJTb2NrZXRTdHJlYW1IYW5kbGUgY2xhc3MgaXMgZXhw
b3J0ZWQgdG8gV2ViS2l0IEFQSS4KKyAgICAgICAgV2ViU29ja2V0U3RyZWFtSGFuZGxlIGltcGxl
bWVudHMgYmktZGlyZWN0aW9uYWwgY29tbXVuaWNhdGlvbiBwb3J0cy4KKyAgICAgICAgSWYgcGx1
Z2lucyBoYW5kbGVzIHRoZSBXZWJTb2NrZXQgcHJvdG9jb2wsIFdlYlNvY2tldENoYW5uZWwgYW5k
CisgICAgICAgIFdlYlNvY2tldENoYW5uZWxDbGllbnQgbXVzdCBiZSBleHBvcnRlZCBhcyBXZWJT
b2NrZXQgYmVjYXVzZSB0aGV5IGFyZQorICAgICAgICB0aGUgY2xhc3NlcyB3aGljaCBpbXBsZW1l
bnQgdGhlIFdlYlNvY2tldCBwcm90b2NvbCBzdGFjay4KKworICAgICAgICBOb3JtYWxseSwgd2Ug
dXNlIFdlYldlYlNvY2tldENoYW5uZWwgYW5kIFdlYldlYlNvY2tldENoYW5uZWxDbGllbnQgYXMK
KyAgICAgICAgdGhlaXIgY2xhc3MgbmFtZXMuIEJ1dCBoZXJlIHdlIHVzZSBqdXN0IFdlYlNvY2tl
dCBhbmQgV2ViU29ja2V0Q2xpZW50CisgICAgICAgIGJlY2F1c2Ugb2YgYXZvaWRpbmcgV2ViV2Vi
IHByZWZpeCBhbmQgY2xhc3MgbmFtZSBjb25mbGljdGlvbiBvbgorICAgICAgICBoZWFkZXIgaW5j
bHVkZS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFdlYktpdC5neXA6CisgICAgICAgICogcHVibGljL1dlYlNvY2tldC5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViU29ja2V0Ojp+V2ViU29ja2V0KToKKyAgICAgICAgKiBwdWJsaWMvV2Vi
U29ja2V0Q2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJTb2NrZXRDbGllbnQ6
On5XZWJTb2NrZXRDbGllbnQpOgorICAgICAgICAqIHNyYy9XZWJSdW50aW1lRmVhdHVyZXMuY3Bw
OiBJbnNlcnQgd2Vic29ja2V0cyBkaXJlY3RvcnkgdG8gaW5jbHVkZSBwYXRoIGluIG9yZGVyIHRv
IGF2b2lkIGZpbGVuYW1lIGNvbmZsaWN0aW9uLgorICAgICAgICAoV2ViS2l0OjpXZWJSdW50aW1l
RmVhdHVyZXM6OmVuYWJsZVNvY2tldHMpOiBVc2UgV2ViQ29yZSBuYW1lc3BhY2UgZXhwbGljaXRs
eS4KKyAgICAgICAgKiBzcmMvV2ViU29ja2V0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6
OldlYlNvY2tldDo6Y3JlYXRlKToKKyAgICAgICAgKiBzcmMvV2ViU29ja2V0SW1wbC5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJTb2NrZXRJbXBsOjpXZWJTb2NrZXRJbXBsKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU29ja2V0SW1wbDo6fldlYlNvY2tldEltcGwpOgorICAgICAgICAo
V2ViS2l0OjpXZWJTb2NrZXRJbXBsOjpjb25uZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU29j
a2V0SW1wbDo6c3VicHJvdG9jb2wpOgorICAgICAgICAoV2ViS2l0OjpXZWJTb2NrZXRJbXBsOjpz
ZW5kVGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNvY2tldEltcGw6OnNlbmRCaW5hcnkpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJTb2NrZXRJbXBsOjpidWZmZXJlZEFtb3VudCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlNvY2tldEltcGw6OmNsb3NlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU29j
a2V0SW1wbDo6ZmFpbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNvY2tldEltcGw6OmRpc2Nvbm5l
Y3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJTb2NrZXRJbXBsOjpkaWRDb25uZWN0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViU29ja2V0SW1wbDo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAo
V2ViS2l0OjpXZWJTb2NrZXRJbXBsOjpkaWRSZWNlaXZlQmluYXJ5RGF0YSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlNvY2tldEltcGw6OmRpZFJlY2VpdmVNZXNzYWdlRXJyb3IpOgorICAgICAgICAo
V2ViS2l0OjpXZWJTb2NrZXRJbXBsOjpkaWRTdGFydENsb3NpbmdIYW5kc2hha2UpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJTb2NrZXRJbXBsOjpkaWRDbG9zZSk6CisgICAgICAgICogc3JjL1dlYlNv
Y2tldEltcGwuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlNvY2tldEltcGw6OmlzTnVs
bCk6CisKIDIwMTEtMTEtMTYgIEFsZXhhbmRyZSBFbGlhcyAgPGFlbGlhc0Bnb29nbGUuY29tPgog
CiAgICAgICAgIFtjaHJvbWl1bV0gSW1wcm92ZW1lbnRzIGZvciBwYWdlIHNjYWxlIGRlbHRhIGR1
cmluZyBjb21taXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29j
a2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5u
ZWwuY3BwCmluZGV4IDc3MDg2NWY0NjA2N2U2NjI1MThhMGMzOTQzOTM0YjhhMzcxMjIwMWMuLjA2
MTBmYmYwYjc0ZjZkOTgzNmExOTBmZTY4YzE1MTUyNDhiMDNkNDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtMTg2LDYgKzE4NiwxNCBA
QCBib29sIFdlYlNvY2tldENoYW5uZWw6OnNlbmQoY29uc3QgQmxvYiYgYmluYXJ5RGF0YSkKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBXZWJTb2NrZXRDaGFubmVsOjpzZW5kKGNvbnN0IGNo
YXIqIGRhdGEsIGludCBsZW5ndGgpCit7CisgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFu
bmVsICVwIHNlbmQgYmluYXJ5ICVwICglZEIpIiwgdGhpcywgZGF0YSwgbGVuZ3RoKTsKKyAgICBB
U1NFUlQoIW1fdXNlSGl4aWU3NlByb3RvY29sKTsKKyAgICBlbnF1ZXVlUmF3RnJhbWUoT3BDb2Rl
QmluYXJ5LCBkYXRhLCBsZW5ndGgpOworICAgIHJldHVybiB0cnVlOworfQorCiB1bnNpZ25lZCBs
b25nIFdlYlNvY2tldENoYW5uZWw6OmJ1ZmZlcmVkQW1vdW50KCkgY29uc3QKIHsKICAgICBMT0co
TmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgYnVmZmVyZWRBbW91bnQiLCB0aGlzKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oIGIv
U291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKaW5kZXggZDMzMzU3
YTNmMTc2MjhhYjNjODllYjU5YjYyNWI2NjdkNTBhZWI5MC4uZTMxYmJlMzE3N2RhZjY2YmNlNjhk
YTdiMDlkNTZmZjE5Y2ZlNzRkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0
cy9XZWJTb2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJT
b2NrZXRDaGFubmVsLmgKQEAgLTY4LDYgKzY4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9v
bCBzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiAgICAgdmlydHVhbCBib29sIHNlbmQoY29u
c3QgQXJyYXlCdWZmZXImKTsKICAgICB2aXJ0dWFsIGJvb2wgc2VuZChjb25zdCBCbG9iJik7Cisg
ICAgdmlydHVhbCBib29sIHNlbmQoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCk7CiAgICAg
dmlydHVhbCB1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50KCkgY29uc3Q7CiAgICAgdmlydHVh
bCB2b2lkIGNsb3NlKGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbik7IC8vIFN0YXJ0IGNs
b3NpbmcgaGFuZHNoYWtlLgogICAgIHZpcnR1YWwgdm9pZCBmYWlsKGNvbnN0IFN0cmluZyYgcmVh
c29uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCBiYTg1NGVhYmNkNmFmODc0NWI3
MWFhYjljMTc2NTIzYzEwZTk5MjQ5Li5jN2ExODMwMzcyMTM4MmZhY2JkNTI5YzY1ZWQ4OTU2MDM2
MDVlZDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC0yOTEsNiArMjkxLDggQEAK
ICAgICAgICAgICAgICAgICAncHVibGljL1dlYlNoYXJlZFdvcmtlci5oJywKICAgICAgICAgICAg
ICAgICAncHVibGljL1dlYlNoYXJlZFdvcmtlclJlcG9zaXRvcnkuaCcsCiAgICAgICAgICAgICAg
ICAgJ3B1YmxpYy9XZWJTaXplLmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViU29ja2V0
LmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViU29ja2V0Q2xpZW50LmgnLAogICAgICAg
ICAgICAgICAgICdwdWJsaWMvV2ViU29ja2V0U3RyZWFtRXJyb3IuaCcsCiAgICAgICAgICAgICAg
ICAgJ3B1YmxpYy9XZWJTb2NrZXRTdHJlYW1IYW5kbGUuaCcsCiAgICAgICAgICAgICAgICAgJ3B1
YmxpYy9XZWJTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaCcsCkBAIC02MDYsNiArNjA4LDkgQEAK
ICAgICAgICAgICAgICAgICAnc3JjL1dlYlNldHRpbmdzSW1wbC5oJywKICAgICAgICAgICAgICAg
ICAnc3JjL1dlYlNoYXJlZFdvcmtlckltcGwuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dl
YlNoYXJlZFdvcmtlckltcGwuaCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJTb2NrZXQuY3Bw
JywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYlNvY2tldEltcGwuY3BwJywKKyAgICAgICAgICAg
ICAgICAnc3JjL1dlYlNvY2tldEltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJTcGVl
Y2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2Vi
U3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9X
ZWJTcGVlY2hJbnB1dFJlc3VsdC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViU29ja2V0LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJTb2NrZXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNzRlMGNiODA1ZmViYzUyNWIyMDcxZjUxN2QzYjUxNzg2
ZDYxMjUzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViU29ja2V0LmgKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBH
b29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlNvY2tldF9oCisjZGVmaW5l
IFdlYlNvY2tldF9oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJQcml2
YXRlUHRyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgV2ViU29ja2V0Q2hhbm5lbDsg
fQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViRGF0YTsKK2NsYXNzIFdlYkRvY3Vt
ZW50OworY2xhc3MgV2ViU3RyaW5nOworY2xhc3MgV2ViVVJMOworY2xhc3MgV2ViU29ja2V0Q2xp
ZW50OworCitjbGFzcyBXZWJTb2NrZXQgeworcHVibGljOgorICAgIGVudW0gQ2xvc2VFdmVudENv
ZGUgeworICAgICAgICBDbG9zZUV2ZW50Q29kZU5vdFNwZWNpZmllZCA9IC0xLAorICAgICAgICBD
bG9zZUV2ZW50Q29kZU5vcm1hbENsb3N1cmUgPSAxMDAwLAorICAgICAgICBDbG9zZUV2ZW50Q29k
ZUdvaW5nQXdheSA9IDEwMDEsCisgICAgICAgIENsb3NlRXZlbnRDb2RlUHJvdG9jb2xFcnJvciA9
IDEwMDIsCisgICAgICAgIENsb3NlRXZlbnRDb2RlVW5zdXBwb3J0ZWREYXRhID0gMTAwMywKKyAg
ICAgICAgQ2xvc2VFdmVudENvZGVGcmFtZVRvb0xhcmdlID0gMTAwNCwKKyAgICAgICAgQ2xvc2VF
dmVudENvZGVOb1N0YXR1c1JjdmQgPSAxMDA1LAorICAgICAgICBDbG9zZUV2ZW50Q29kZUFibm9y
bWFsQ2xvc3VyZSA9IDEwMDYsCisgICAgICAgIENsb3NlRXZlbnRDb2RlSW52YWxpZFVURjggPSAx
MDA3LAorICAgICAgICBDbG9zZUV2ZW50Q29kZU1pbmltdW1Vc2VyRGVmaW5lZCA9IDMwMDAsCisg
ICAgICAgIENsb3NlRXZlbnRDb2RlTWF4aW11bVVzZXJEZWZpbmVkID0gNDk5OQorICAgIH07CisK
KyAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJTb2NrZXQqIGNyZWF0ZShjb25zdCBXZWJEb2N1
bWVudCYsIFdlYlNvY2tldENsaWVudCopOworICAgIHZpcnR1YWwgfldlYlNvY2tldCgpIHsgfQor
CisgICAgdmlydHVhbCB2b2lkIGNvbm5lY3QoY29uc3QgV2ViVVJMJiwgY29uc3QgV2ViU3RyaW5n
JiBwcm90b2NvbCkgPSAwOworICAgIHZpcnR1YWwgV2ViU3RyaW5nIHN1YnByb3RvY29sKCkgPSAw
OworICAgIHZpcnR1YWwgYm9vbCBzZW5kVGV4dChjb25zdCBXZWJTdHJpbmcmIG1lc3NhZ2UpID0g
MDsKKyAgICB2aXJ0dWFsIGJvb2wgc2VuZEJpbmFyeShjb25zdCBXZWJEYXRhJiBiaW5hcnlEYXRh
KSA9IDA7CisgICAgdmlydHVhbCB1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50KCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBjbG9zZShpbnQgY29kZSwgY29uc3QgV2ViU3RyaW5nJiBy
ZWFzb24pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZmFpbChjb25zdCBXZWJTdHJpbmcmIHJlYXNv
bikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0KCkgPSAwOworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJTb2NrZXRfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU29ja2V0Q2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTb2NrZXRDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYjllZDA1
NGM2NGY1MWM0N2UzZTAxZTZjZDUzN2I0OTk1ZWZhMTBjCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU29ja2V0Q2xpZW50LmgKQEAgLTAsMCArMSw1
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIFdlYlNvY2tldENsaWVudF9oCisjZGVmaW5lIFdlYlNvY2tldENsaWVudF9o
CisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJEYXRhLmgiCisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJTdHJpbmc7CisKK2NsYXNzIFdlYlNvY2tldENsaWVu
dCB7CitwdWJsaWM6CisgICAgZW51bSBDbG9zaW5nSGFuZHNoYWtlQ29tcGxldGlvblN0YXR1cyB7
CisgICAgICAgIENsb3NpbmdIYW5kc2hha2VJbmNvbXBsZXRlLAorICAgICAgICBDbG9zaW5nSGFu
ZHNoYWtlQ29tcGxldGUKKyAgICB9OworCisgICAgdmlydHVhbCB+V2ViU29ja2V0Q2xpZW50KCkg
eyB9CisgICAgdmlydHVhbCB2b2lkIGRpZENvbm5lY3QoKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGRpZFJlY2VpdmVNZXNzYWdlKGNvbnN0IFdlYlN0cmluZyYgbWVzc2FnZSkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWNlaXZlQmluYXJ5RGF0YShjb25zdCBXZWJEYXRhJiBiaW5hcnlEYXRh
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRXJyb3IoKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSgpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgZGlkQ2xvc2UodW5zaWduZWQgbG9uZyBidWZmZXJlZEFtb3VudCwgQ2xvc2luZ0hh
bmRzaGFrZUNvbXBsZXRpb25TdGF0dXMsIHVuc2lnbmVkIHNob3J0IGNvZGUsIGNvbnN0IFdlYlN0
cmluZyYgcmVhc29uKSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlm
IC8vIFdlYlNvY2tldENsaWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJSdW50aW1lRmVhdHVyZXMuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViUnVudGltZUZlYXR1cmVzLmNwcAppbmRleCAxMjhhNmZhZTE4ZWZjMzEyM2E4ZjgzYTAyNzY2
MWUzMWJjNDE4OGY4Li43ZGE0NjVjNzIxZGY2ZTdjMzc2MDZiMDNiNGE4MzVlNTJiMmJlYmU0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJSdW50aW1lRmVhdHVyZXMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlJ1bnRpbWVGZWF0dXJlcy5j
cHAKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlICJBYnN0cmFjdERhdGFiYXNlLmgiCiAjaW5j
bHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIldlYk1lZGlhUGxheWVy
Q2xpZW50SW1wbC5oIgotI2luY2x1ZGUgIldlYlNvY2tldC5oIgorI2luY2x1ZGUgIndlYnNvY2tl
dHMvV2ViU29ja2V0LmgiCiAKICNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KIApAQCAtMTAx
LDcgKzEwMSw3IEBAIGJvb2wgV2ViUnVudGltZUZlYXR1cmVzOjppc01lZGlhUGxheWVyRW5hYmxl
ZCgpCiB2b2lkIFdlYlJ1bnRpbWVGZWF0dXJlczo6ZW5hYmxlU29ja2V0cyhib29sIGVuYWJsZSkK
IHsKICNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCi0gICAgV2ViU29ja2V0OjpzZXRJc0F2YWlsYWJs
ZShlbmFibGUpOworICAgIFdlYkNvcmU6OldlYlNvY2tldDo6c2V0SXNBdmFpbGFibGUoZW5hYmxl
KTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJTb2NrZXQuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU29ja2V0LmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5kMmIxMGQyZTcxMzQxNGY1YmE3YmQ1MTAyMmIyMWE1Yjk2NzZkYTM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU29ja2V0LmNwcApA
QCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFs
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
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlNvY2tldC5o
IgorCisjaW5jbHVkZSAiV2ViU29ja2V0SW1wbC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
V2ViU29ja2V0KiBXZWJTb2NrZXQ6OmNyZWF0ZShjb25zdCBXZWJEb2N1bWVudCYgZG9jdW1lbnQs
IFdlYlNvY2tldENsaWVudCogY2xpZW50KQoreworICAgIGlmICghY2xpZW50KQorICAgICAgICBy
ZXR1cm4gMDsKKworICAgIFdlYlNvY2tldEltcGwqIHdlYnNvY2tldCA9IG5ldyBXZWJTb2NrZXRJ
bXBsKGRvY3VtZW50LCBjbGllbnQpOworICAgIGlmICh3ZWJzb2NrZXQgJiYgd2Vic29ja2V0LT5p
c051bGwoKSkgeworICAgICAgICBkZWxldGUgd2Vic29ja2V0OworICAgICAgICByZXR1cm4gMDsK
KyAgICB9CisgICAgcmV0dXJuIHdlYnNvY2tldDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTb2NrZXRJbXBsLmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNvY2tldEltcGwuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjY1OTNkNGJmMWY1MWZmM2M0MTg2ZWEyOGNkYThhM2MxMWE2OWNiOTgKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTb2NrZXRJbXBsLmNwcApAQCAt
MCwwICsxLDIwMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICog
bWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJTb2NrZXRJbXBs
LmgiCisKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIktVUkwuaCIKKyNpZiBFTkFC
TEUoV0VCX1NPQ0tFVFMpCisjaW5jbHVkZSAiV2ViU29ja2V0Q2hhbm5lbC5oIgorI2luY2x1ZGUg
IldlYlNvY2tldENoYW5uZWxDbGllbnQuaCIKKyNlbHNlCituYW1lc3BhY2UgV2ViQ29yZSB7Citj
bGFzcyBXZWJTb2NrZXRDaGFubmVsIHsKK307Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisjZW5k
aWYKKworI2luY2x1ZGUgIldlYkRhdGEuaCIKKyNpbmNsdWRlICJXZWJEb2N1bWVudC5oIgorI2lu
Y2x1ZGUgIldlYlNvY2tldENsaWVudC5oIgorI2luY2x1ZGUgIldlYlN0cmluZy5oIgorI2luY2x1
ZGUgIldlYlVSTC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK1dlYlNvY2tldEltcGw6OldlYlNvY2tldEltcGwoY29uc3QgV2ViRG9jdW1lbnQm
IGRvY3VtZW50LCBXZWJTb2NrZXRDbGllbnQqIGNsaWVudCkKKyAgICA6IG1fY2xpZW50KGNsaWVu
dCkKK3sKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisgICAgbV9wcml2YXRlID0gV2ViU29ja2V0
Q2hhbm5lbDo6Y3JlYXRlKFBhc3NSZWZQdHI8RG9jdW1lbnQ+KGRvY3VtZW50KS5nZXQoKSwgdGhp
cyk7CisjZWxzZQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCit9CisKK1dlYlNv
Y2tldEltcGw6On5XZWJTb2NrZXRJbXBsKCkKK3sKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisg
ICAgbV9wcml2YXRlLT5kaXNjb25uZWN0KCk7CisjZWxzZQorICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworI2VuZGlmCit9CisKK3ZvaWQgV2ViU29ja2V0SW1wbDo6Y29ubmVjdChjb25zdCBXZWJV
UkwmIHVybCwgY29uc3QgV2ViU3RyaW5nJiBwcm90b2NvbCkKK3sKKyNpZiBFTkFCTEUoV0VCX1NP
Q0tFVFMpCisgICAgbV9wcml2YXRlLT5jb25uZWN0KHVybCwgcHJvdG9jb2wpOworI2Vsc2UKKyAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNlbmRpZgorfQorCitXZWJTdHJpbmcgV2ViU29ja2V0
SW1wbDo6c3VicHJvdG9jb2woKQoreworI2lmIEVOQUJMRShXRUJfU09DS0VUUykKKyAgICByZXR1
cm4gbV9wcml2YXRlLT5zdWJwcm90b2NvbCgpOworI2Vsc2UKKyAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyNlbmRpZgorfQorCitib29sIFdlYlNvY2tldEltcGw6OnNlbmRUZXh0KGNvbnN0IFdl
YlN0cmluZyYgbWVzc2FnZSkKK3sKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisgICAgcmV0dXJu
IG1fcHJpdmF0ZS0+c2VuZChtZXNzYWdlKTsKKyNlbHNlCisgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisjZW5kaWYKK30KKworYm9vbCBXZWJTb2NrZXRJbXBsOjpzZW5kQmluYXJ5KGNvbnN0IFdl
YkRhdGEmIGJpbmFyeURhdGEpCit7CisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorICAgIHJldHVy
biBtX3ByaXZhdGUtPnNlbmQoYmluYXJ5RGF0YS5kYXRhKCksIGJpbmFyeURhdGEuc2l6ZSgpKTsK
KyNlbHNlCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKK30KKwordW5zaWduZWQg
bG9uZyBXZWJTb2NrZXRJbXBsOjpidWZmZXJlZEFtb3VudCgpIGNvbnN0Cit7CisjaWYgRU5BQkxF
KFdFQl9TT0NLRVRTKQorICAgIHJldHVybiBtX3ByaXZhdGUtPmJ1ZmZlcmVkQW1vdW50KCk7Cisj
ZWxzZQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCit9CisKK3ZvaWQgV2ViU29j
a2V0SW1wbDo6Y2xvc2UoaW50IGNvZGUsIGNvbnN0IFdlYlN0cmluZyYgcmVhc29uKQoreworI2lm
IEVOQUJMRShXRUJfU09DS0VUUykKKyAgICBtX3ByaXZhdGUtPmNsb3NlKGNvZGUsIHJlYXNvbik7
CisjZWxzZQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCit9CisKK3ZvaWQgV2Vi
U29ja2V0SW1wbDo6ZmFpbChjb25zdCBXZWJTdHJpbmcmIHJlYXNvbikKK3sKKyNpZiBFTkFCTEUo
V0VCX1NPQ0tFVFMpCisgICAgbV9wcml2YXRlLT5mYWlsKHJlYXNvbik7CisjZWxzZQorICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCit9CisKK3ZvaWQgV2ViU29ja2V0SW1wbDo6ZGlz
Y29ubmVjdCgpCit7CisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorICAgIG1fcHJpdmF0ZS0+ZGlz
Y29ubmVjdCgpOworICAgIG1fY2xpZW50ID0gMDsKKyNlbHNlCisgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisjZW5kaWYKK30KKwordm9pZCBXZWJTb2NrZXRJbXBsOjpkaWRDb25uZWN0KCkKK3sK
KyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisgICAgbV9jbGllbnQtPmRpZENvbm5lY3QoKTsKKyNl
bHNlCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKK30KKwordm9pZCBXZWJTb2Nr
ZXRJbXBsOjpkaWRSZWNlaXZlTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisjaWYg
RU5BQkxFKFdFQl9TT0NLRVRTKQorICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlTWVzc2FnZShXZWJT
dHJpbmcobWVzc2FnZSkpOworI2Vsc2UKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNlbmRp
ZgorfQorCit2b2lkIFdlYlNvY2tldEltcGw6OmRpZFJlY2VpdmVCaW5hcnlEYXRhKFBhc3NPd25Q
dHI8VmVjdG9yPGNoYXI+ID4gYmluYXJ5RGF0YSkKK3sKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMp
CisgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVCaW5hcnlEYXRhKFdlYkRhdGEoYmluYXJ5RGF0YS0+
ZGF0YSgpLCBiaW5hcnlEYXRhLT5zaXplKCkpKTsKKyNlbHNlCisgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisjZW5kaWYKK30KKwordm9pZCBXZWJTb2NrZXRJbXBsOjpkaWRSZWNlaXZlTWVzc2Fn
ZUVycm9yKCkKK3sKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisgICAgbV9jbGllbnQtPmRpZFJl
Y2VpdmVNZXNzYWdlRXJyb3IoKTsKKyNlbHNlCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisj
ZW5kaWYKK30KKwordm9pZCBXZWJTb2NrZXRJbXBsOjpkaWRTdGFydENsb3NpbmdIYW5kc2hha2Uo
KQoreworI2lmIEVOQUJMRShXRUJfU09DS0VUUykKKyAgICBtX2NsaWVudC0+ZGlkU3RhcnRDbG9z
aW5nSGFuZHNoYWtlKCk7CisjZWxzZQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlm
Cit9CisKK3ZvaWQgV2ViU29ja2V0SW1wbDo6ZGlkQ2xvc2UodW5zaWduZWQgbG9uZyBidWZmZXJl
ZEFtb3VudCwgQ2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb25TdGF0dXMgc3RhdHVzLCB1bnNpZ25l
ZCBzaG9ydCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbikKK3sKKyNpZiBFTkFCTEUoV0VCX1NP
Q0tFVFMpCisgICAgbV9jbGllbnQtPmRpZENsb3NlKGJ1ZmZlcmVkQW1vdW50LCBzdGF0aWNfY2Fz
dDxXZWJTb2NrZXRDbGllbnQ6OkNsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uU3RhdHVzPihzdGF0
dXMpLCBjb2RlLCBXZWJTdHJpbmcocmVhc29uKSk7CisjZWxzZQorICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworI2VuZGlmCit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU29ja2V0SW1wbC5oIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViU29ja2V0SW1wbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZkOTJiZTUwYjNjN2U2
NWRkOTNhMWVhMTczNGE1NTU4ZDA2OTg5YWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJTb2NrZXRJbXBsLmgKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlz
dHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IFdlYlNvY2tldEltcGxfaAorI2RlZmluZSBXZWJTb2NrZXRJbXBsX2gKKworI2luY2x1ZGUgIldl
YkNvbW1vbi5oIgorI2luY2x1ZGUgIldlYlNvY2tldC5oIgorI2luY2x1ZGUgIldlYlNvY2tldENo
YW5uZWxDbGllbnQuaCIKKyNpbmNsdWRlICJXZWJTb2NrZXRDbGllbnQuaCIKKyNpbmNsdWRlIDx3
dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7IGNsYXNzIFdlYlNvY2tldENoYW5uZWw7IH0KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Ns
YXNzIFdlYkRhdGE7CitjbGFzcyBXZWJEb2N1bWVudDsKK2NsYXNzIFdlYlN0cmluZzsKK2NsYXNz
IFdlYlVSTDsKKworY2xhc3MgV2ViU29ja2V0SW1wbCA6IHB1YmxpYyBXZWJTb2NrZXQsIHB1Ymxp
YyBXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBXZWJTb2Nr
ZXRJbXBsKGNvbnN0IFdlYkRvY3VtZW50JiwgV2ViU29ja2V0Q2xpZW50Kik7CisgICAgdmlydHVh
bCB+V2ViU29ja2V0SW1wbCgpOworCisgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiAh
bV9wcml2YXRlOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgY29ubmVjdChjb25zdCBXZWJVUkwmLCBj
b25zdCBXZWJTdHJpbmcmIHByb3RvY29sKTsKKyAgICB2aXJ0dWFsIFdlYlN0cmluZyBzdWJwcm90
b2NvbCgpOworICAgIHZpcnR1YWwgYm9vbCBzZW5kVGV4dChjb25zdCBXZWJTdHJpbmcmIG1lc3Nh
Z2UpOworICAgIHZpcnR1YWwgYm9vbCBzZW5kQmluYXJ5KGNvbnN0IFdlYkRhdGEmIGJpbmFyeURh
dGEpOworICAgIHZpcnR1YWwgdW5zaWduZWQgbG9uZyBidWZmZXJlZEFtb3VudCgpIGNvbnN0Owor
ICAgIHZpcnR1YWwgdm9pZCBjbG9zZShpbnQgY29kZSwgY29uc3QgV2ViU3RyaW5nJiByZWFzb24p
OworICAgIHZpcnR1YWwgdm9pZCBmYWlsKGNvbnN0IFdlYlN0cmluZyYgcmVhc29uKTsKKyAgICB2
aXJ0dWFsIHZvaWQgZGlzY29ubmVjdCgpOworCisgICAgLy8gV2ViU29ja2V0Q2hhbm5lbENsaWVu
dAorICAgIHZpcnR1YWwgdm9pZCBkaWRDb25uZWN0KCk7CisgICAgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CisgICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVCaW5hcnlEYXRhKFBhc3NPd25QdHI8VmVjdG9yPGNoYXI+ID4gYmluYXJ5RGF0YSk7
CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRXJyb3IoKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkU3RhcnRDbG9zaW5nSGFuZHNoYWtlKCk7CisgICAgdmlydHVhbCB2b2lkIGRpZENs
b3NlKHVuc2lnbmVkIGxvbmcgYnVmZmVyZWRBbW91bnQsIENsb3NpbmdIYW5kc2hha2VDb21wbGV0
aW9uU3RhdHVzLCB1bnNpZ25lZCBzaG9ydCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbik7CisK
K3ByaXZhdGU6CisgICAgUmVmUHRyPFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw+IG1fcHJpdmF0
ZTsKKyAgICBXZWJTb2NrZXRDbGllbnQqIG1fY2xpZW50OworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CisKKyNlbmRpZiAvLyBXZWJXZWJTb2NrZXRDaGFubmVsSW1wbF9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115887</attachid>
            <date>2011-11-18 15:19:47 -0800</date>
            <delta_ts>2011-11-18 23:20:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72016-20111119081946.patch</filename>
            <type>text/plain</type>
            <size>24262</size>
            <attacher name="Takashi Toyoshima">toyoshim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwNTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWI4OTk1YWViMTRlNmMz
NzU2ZGJmNGU2NjdmY2QwYmEyOWY4MmFkNy4uNDc3OGI0NzgyOWY3OTZjMmI1YjMxMGI3ZjFhYzAx
M2NjZmNlYjljMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDExLTExLTE2ICBUYWth
c2hpIFRveW9zaGltYSAgPHRveW9zaGltQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21p
dW1dIFtXZWJTb2NrZXRdIGV4cG9ydCBXZWJTb2NrZXRDaGFubmVsIGludGVyZmFjZSBmb3IgcGx1
Z2lucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzIw
MTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQg
YSBpbnRlcmZhY2UgdG8gc2VuZCByYXcgYmluYXJ5IGRhdGEuCisgICAgICAgIFRoaXMgaW50ZXJm
YWNlIGlzIHVzZWQgYnkgV2ViV2ViU29ja2V0Q2hhbm5lbCBpbXBsZW1lbnRhdGlvbgorICAgICAg
ICBpbiBXZWJLaXQgQVBJLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIGp1c3QgZXhw
b3J0IGEgaW50ZXJmYWNlLgorCisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVs
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OnNlbmQpOgorICAgICAg
ICAqIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oOgorCiAyMDExLTExLTE2ICBBbGV4YW5k
cmUgRWxpYXMgIDxhZWxpYXNAZ29vZ2xlLmNvbT4KIAogICAgICAgICBbY2hyb21pdW1dIEltcHJv
dmVtZW50cyBmb3IgcGFnZSBzY2FsZSBkZWx0YSBkdXJpbmcgY29tbWl0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IDFjMmVjYWUzYTNmNjdiNjE1ZGI5ZTI5OGI3MjI3NmM2NDNiZDY3YTku
LjQyZDZmOGY3YmEyZmU3MjgzY2QxYjFmYmNiYmM0NWFkNjQzMzA4NDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIgQEAKKzIwMTEtMTEtMTYgIFRha2FzaGkgVG95b3No
aW1hICA8dG95b3NoaW1AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0gW1dlYlNv
Y2tldF0gZXhwb3J0IFdlYlNvY2tldENoYW5uZWwgaW50ZXJmYWNlIGZvciBwbHVnaW5zCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjAxNgorCisgICAg
ICAgIEFkZCBXZWJTb2NrZXQgYW5kIFdlYlNvY2tldENsaWVudCB0byBXZWJLaXQgQVBJLgorCisg
ICAgICAgIEN1cnJlbnRseSwgb25seSBXZWJTb2NrZXRTdHJlYW1IYW5kbGUgY2xhc3MgaXMgZXhw
b3J0ZWQgdG8gV2ViS2l0IEFQSS4KKyAgICAgICAgV2ViU29ja2V0U3RyZWFtSGFuZGxlIGltcGxl
bWVudHMgYmktZGlyZWN0aW9uYWwgY29tbXVuaWNhdGlvbiBwb3J0cy4KKyAgICAgICAgSWYgcGx1
Z2lucyBoYW5kbGVzIHRoZSBXZWJTb2NrZXQgcHJvdG9jb2wsIFdlYlNvY2tldENoYW5uZWwgYW5k
CisgICAgICAgIFdlYlNvY2tldENoYW5uZWxDbGllbnQgbXVzdCBiZSBleHBvcnRlZCBhcyBXZWJT
b2NrZXQgYmVjYXVzZSB0aGV5IGFyZQorICAgICAgICB0aGUgY2xhc3NlcyB3aGljaCBpbXBsZW1l
bnQgdGhlIFdlYlNvY2tldCBwcm90b2NvbCBzdGFjay4KKworICAgICAgICBOb3JtYWxseSwgd2Ug
dXNlIFdlYldlYlNvY2tldENoYW5uZWwgYW5kIFdlYldlYlNvY2tldENoYW5uZWxDbGllbnQgYXMK
KyAgICAgICAgdGhlaXIgY2xhc3MgbmFtZXMuIEJ1dCBoZXJlIHdlIHVzZSBqdXN0IFdlYlNvY2tl
dCBhbmQgV2ViU29ja2V0Q2xpZW50CisgICAgICAgIGJlY2F1c2Ugb2YgYXZvaWRpbmcgV2ViV2Vi
IHByZWZpeCBhbmQgY2xhc3MgbmFtZSBjb25mbGljdGlvbiBvbgorICAgICAgICBoZWFkZXIgaW5j
bHVkZS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFdlYktpdC5neXA6CisgICAgICAgICogcHVibGljL1dlYlNvY2tldC5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViU29ja2V0Ojp+V2ViU29ja2V0KToKKyAgICAgICAgKiBwdWJsaWMvV2Vi
U29ja2V0Q2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJTb2NrZXRDbGllbnQ6
On5XZWJTb2NrZXRDbGllbnQpOgorICAgICAgICAqIHNyYy9XZWJSdW50aW1lRmVhdHVyZXMuY3Bw
OiBJbnNlcnQgd2Vic29ja2V0cyBkaXJlY3RvcnkgdG8gaW5jbHVkZSBwYXRoIGluIG9yZGVyIHRv
IGF2b2lkIGZpbGVuYW1lIGNvbmZsaWN0aW9uLgorICAgICAgICAoV2ViS2l0OjpXZWJSdW50aW1l
RmVhdHVyZXM6OmVuYWJsZVNvY2tldHMpOiBVc2UgV2ViQ29yZSBuYW1lc3BhY2UgZXhwbGljaXRs
eS4KKyAgICAgICAgKiBzcmMvV2ViU29ja2V0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6
OldlYlNvY2tldDo6Y3JlYXRlKToKKyAgICAgICAgKiBzcmMvV2ViU29ja2V0SW1wbC5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJTb2NrZXRJbXBsOjpXZWJTb2NrZXRJbXBsKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU29ja2V0SW1wbDo6fldlYlNvY2tldEltcGwpOgorICAgICAgICAo
V2ViS2l0OjpXZWJTb2NrZXRJbXBsOjpjb25uZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU29j
a2V0SW1wbDo6c3VicHJvdG9jb2wpOgorICAgICAgICAoV2ViS2l0OjpXZWJTb2NrZXRJbXBsOjpz
ZW5kVGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNvY2tldEltcGw6OnNlbmRCaW5hcnkpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJTb2NrZXRJbXBsOjpidWZmZXJlZEFtb3VudCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlNvY2tldEltcGw6OmNsb3NlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU29j
a2V0SW1wbDo6ZmFpbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNvY2tldEltcGw6OmRpc2Nvbm5l
Y3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJTb2NrZXRJbXBsOjpkaWRDb25uZWN0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViU29ja2V0SW1wbDo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAo
V2ViS2l0OjpXZWJTb2NrZXRJbXBsOjpkaWRSZWNlaXZlQmluYXJ5RGF0YSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlNvY2tldEltcGw6OmRpZFJlY2VpdmVNZXNzYWdlRXJyb3IpOgorICAgICAgICAo
V2ViS2l0OjpXZWJTb2NrZXRJbXBsOjpkaWRTdGFydENsb3NpbmdIYW5kc2hha2UpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJTb2NrZXRJbXBsOjpkaWRDbG9zZSk6CisgICAgICAgICogc3JjL1dlYlNv
Y2tldEltcGwuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlNvY2tldEltcGw6OmlzTnVs
bCk6CisKIDIwMTEtMTEtMTYgIEFsZXhhbmRyZSBFbGlhcyAgPGFlbGlhc0Bnb29nbGUuY29tPgog
CiAgICAgICAgIFtjaHJvbWl1bV0gSW1wcm92ZW1lbnRzIGZvciBwYWdlIHNjYWxlIGRlbHRhIGR1
cmluZyBjb21taXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29j
a2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5u
ZWwuY3BwCmluZGV4IDc3MDg2NWY0NjA2N2U2NjI1MThhMGMzOTQzOTM0YjhhMzcxMjIwMWMuLjA2
MTBmYmYwYjc0ZjZkOTgzNmExOTBmZTY4YzE1MTUyNDhiMDNkNDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtMTg2LDYgKzE4NiwxNCBA
QCBib29sIFdlYlNvY2tldENoYW5uZWw6OnNlbmQoY29uc3QgQmxvYiYgYmluYXJ5RGF0YSkKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBXZWJTb2NrZXRDaGFubmVsOjpzZW5kKGNvbnN0IGNo
YXIqIGRhdGEsIGludCBsZW5ndGgpCit7CisgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFu
bmVsICVwIHNlbmQgYmluYXJ5ICVwICglZEIpIiwgdGhpcywgZGF0YSwgbGVuZ3RoKTsKKyAgICBB
U1NFUlQoIW1fdXNlSGl4aWU3NlByb3RvY29sKTsKKyAgICBlbnF1ZXVlUmF3RnJhbWUoT3BDb2Rl
QmluYXJ5LCBkYXRhLCBsZW5ndGgpOworICAgIHJldHVybiB0cnVlOworfQorCiB1bnNpZ25lZCBs
b25nIFdlYlNvY2tldENoYW5uZWw6OmJ1ZmZlcmVkQW1vdW50KCkgY29uc3QKIHsKICAgICBMT0co
TmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgYnVmZmVyZWRBbW91bnQiLCB0aGlzKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oIGIv
U291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKaW5kZXggZDMzMzU3
YTNmMTc2MjhhYjNjODllYjU5YjYyNWI2NjdkNTBhZWI5MC4uZTMxYmJlMzE3N2RhZjY2YmNlNjhk
YTdiMDlkNTZmZjE5Y2ZlNzRkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0
cy9XZWJTb2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJT
b2NrZXRDaGFubmVsLmgKQEAgLTY4LDYgKzY4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9v
bCBzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiAgICAgdmlydHVhbCBib29sIHNlbmQoY29u
c3QgQXJyYXlCdWZmZXImKTsKICAgICB2aXJ0dWFsIGJvb2wgc2VuZChjb25zdCBCbG9iJik7Cisg
ICAgdmlydHVhbCBib29sIHNlbmQoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCk7CiAgICAg
dmlydHVhbCB1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50KCkgY29uc3Q7CiAgICAgdmlydHVh
bCB2b2lkIGNsb3NlKGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbik7IC8vIFN0YXJ0IGNs
b3NpbmcgaGFuZHNoYWtlLgogICAgIHZpcnR1YWwgdm9pZCBmYWlsKGNvbnN0IFN0cmluZyYgcmVh
c29uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCBiYTg1NGVhYmNkNmFmODc0NWI3
MWFhYjljMTc2NTIzYzEwZTk5MjQ5Li5jN2ExODMwMzcyMTM4MmZhY2JkNTI5YzY1ZWQ4OTU2MDM2
MDVlZDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC0yOTEsNiArMjkxLDggQEAK
ICAgICAgICAgICAgICAgICAncHVibGljL1dlYlNoYXJlZFdvcmtlci5oJywKICAgICAgICAgICAg
ICAgICAncHVibGljL1dlYlNoYXJlZFdvcmtlclJlcG9zaXRvcnkuaCcsCiAgICAgICAgICAgICAg
ICAgJ3B1YmxpYy9XZWJTaXplLmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViU29ja2V0
LmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViU29ja2V0Q2xpZW50LmgnLAogICAgICAg
ICAgICAgICAgICdwdWJsaWMvV2ViU29ja2V0U3RyZWFtRXJyb3IuaCcsCiAgICAgICAgICAgICAg
ICAgJ3B1YmxpYy9XZWJTb2NrZXRTdHJlYW1IYW5kbGUuaCcsCiAgICAgICAgICAgICAgICAgJ3B1
YmxpYy9XZWJTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaCcsCkBAIC02MDYsNiArNjA4LDkgQEAK
ICAgICAgICAgICAgICAgICAnc3JjL1dlYlNldHRpbmdzSW1wbC5oJywKICAgICAgICAgICAgICAg
ICAnc3JjL1dlYlNoYXJlZFdvcmtlckltcGwuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dl
YlNoYXJlZFdvcmtlckltcGwuaCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJTb2NrZXQuY3Bw
JywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYlNvY2tldEltcGwuY3BwJywKKyAgICAgICAgICAg
ICAgICAnc3JjL1dlYlNvY2tldEltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJTcGVl
Y2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2Vi
U3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9X
ZWJTcGVlY2hJbnB1dFJlc3VsdC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViU29ja2V0LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJTb2NrZXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNzRlMGNiODA1ZmViYzUyNWIyMDcxZjUxN2QzYjUxNzg2
ZDYxMjUzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViU29ja2V0LmgKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBH
b29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlNvY2tldF9oCisjZGVmaW5l
IFdlYlNvY2tldF9oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJQcml2
YXRlUHRyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgV2ViU29ja2V0Q2hhbm5lbDsg
fQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViRGF0YTsKK2NsYXNzIFdlYkRvY3Vt
ZW50OworY2xhc3MgV2ViU3RyaW5nOworY2xhc3MgV2ViVVJMOworY2xhc3MgV2ViU29ja2V0Q2xp
ZW50OworCitjbGFzcyBXZWJTb2NrZXQgeworcHVibGljOgorICAgIGVudW0gQ2xvc2VFdmVudENv
ZGUgeworICAgICAgICBDbG9zZUV2ZW50Q29kZU5vdFNwZWNpZmllZCA9IC0xLAorICAgICAgICBD
bG9zZUV2ZW50Q29kZU5vcm1hbENsb3N1cmUgPSAxMDAwLAorICAgICAgICBDbG9zZUV2ZW50Q29k
ZUdvaW5nQXdheSA9IDEwMDEsCisgICAgICAgIENsb3NlRXZlbnRDb2RlUHJvdG9jb2xFcnJvciA9
IDEwMDIsCisgICAgICAgIENsb3NlRXZlbnRDb2RlVW5zdXBwb3J0ZWREYXRhID0gMTAwMywKKyAg
ICAgICAgQ2xvc2VFdmVudENvZGVGcmFtZVRvb0xhcmdlID0gMTAwNCwKKyAgICAgICAgQ2xvc2VF
dmVudENvZGVOb1N0YXR1c1JjdmQgPSAxMDA1LAorICAgICAgICBDbG9zZUV2ZW50Q29kZUFibm9y
bWFsQ2xvc3VyZSA9IDEwMDYsCisgICAgICAgIENsb3NlRXZlbnRDb2RlSW52YWxpZFVURjggPSAx
MDA3LAorICAgICAgICBDbG9zZUV2ZW50Q29kZU1pbmltdW1Vc2VyRGVmaW5lZCA9IDMwMDAsCisg
ICAgICAgIENsb3NlRXZlbnRDb2RlTWF4aW11bVVzZXJEZWZpbmVkID0gNDk5OQorICAgIH07CisK
KyAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJTb2NrZXQqIGNyZWF0ZShjb25zdCBXZWJEb2N1
bWVudCYsIFdlYlNvY2tldENsaWVudCopOworICAgIHZpcnR1YWwgfldlYlNvY2tldCgpIHsgfQor
CisgICAgdmlydHVhbCB2b2lkIGNvbm5lY3QoY29uc3QgV2ViVVJMJiwgY29uc3QgV2ViU3RyaW5n
JiBwcm90b2NvbCkgPSAwOworICAgIHZpcnR1YWwgV2ViU3RyaW5nIHN1YnByb3RvY29sKCkgPSAw
OworICAgIHZpcnR1YWwgYm9vbCBzZW5kVGV4dChjb25zdCBXZWJTdHJpbmcmIG1lc3NhZ2UpID0g
MDsKKyAgICB2aXJ0dWFsIGJvb2wgc2VuZEJpbmFyeShjb25zdCBXZWJEYXRhJiBiaW5hcnlEYXRh
KSA9IDA7CisgICAgdmlydHVhbCB1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50KCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBjbG9zZShpbnQgY29kZSwgY29uc3QgV2ViU3RyaW5nJiBy
ZWFzb24pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZmFpbChjb25zdCBXZWJTdHJpbmcmIHJlYXNv
bikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0KCkgPSAwOworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJTb2NrZXRfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU29ja2V0Q2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTb2NrZXRDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYjllZDA1
NGM2NGY1MWM0N2UzZTAxZTZjZDUzN2I0OTk1ZWZhMTBjCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU29ja2V0Q2xpZW50LmgKQEAgLTAsMCArMSw1
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIFdlYlNvY2tldENsaWVudF9oCisjZGVmaW5lIFdlYlNvY2tldENsaWVudF9o
CisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJEYXRhLmgiCisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJTdHJpbmc7CisKK2NsYXNzIFdlYlNvY2tldENsaWVu
dCB7CitwdWJsaWM6CisgICAgZW51bSBDbG9zaW5nSGFuZHNoYWtlQ29tcGxldGlvblN0YXR1cyB7
CisgICAgICAgIENsb3NpbmdIYW5kc2hha2VJbmNvbXBsZXRlLAorICAgICAgICBDbG9zaW5nSGFu
ZHNoYWtlQ29tcGxldGUKKyAgICB9OworCisgICAgdmlydHVhbCB+V2ViU29ja2V0Q2xpZW50KCkg
eyB9CisgICAgdmlydHVhbCB2b2lkIGRpZENvbm5lY3QoKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGRpZFJlY2VpdmVNZXNzYWdlKGNvbnN0IFdlYlN0cmluZyYgbWVzc2FnZSkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWNlaXZlQmluYXJ5RGF0YShjb25zdCBXZWJEYXRhJiBiaW5hcnlEYXRh
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRXJyb3IoKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSgpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgZGlkQ2xvc2UodW5zaWduZWQgbG9uZyBidWZmZXJlZEFtb3VudCwgQ2xvc2luZ0hh
bmRzaGFrZUNvbXBsZXRpb25TdGF0dXMsIHVuc2lnbmVkIHNob3J0IGNvZGUsIGNvbnN0IFdlYlN0
cmluZyYgcmVhc29uKSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlm
IC8vIFdlYlNvY2tldENsaWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJSdW50aW1lRmVhdHVyZXMuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViUnVudGltZUZlYXR1cmVzLmNwcAppbmRleCAxMjhhNmZhZTE4ZWZjMzEyM2E4ZjgzYTAyNzY2
MWUzMWJjNDE4OGY4Li43ZGE0NjVjNzIxZGY2ZTdjMzc2MDZiMDNiNGE4MzVlNTJiMmJlYmU0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJSdW50aW1lRmVhdHVyZXMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlJ1bnRpbWVGZWF0dXJlcy5j
cHAKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlICJBYnN0cmFjdERhdGFiYXNlLmgiCiAjaW5j
bHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIldlYk1lZGlhUGxheWVy
Q2xpZW50SW1wbC5oIgotI2luY2x1ZGUgIldlYlNvY2tldC5oIgorI2luY2x1ZGUgIndlYnNvY2tl
dHMvV2ViU29ja2V0LmgiCiAKICNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KIApAQCAtMTAx
LDcgKzEwMSw3IEBAIGJvb2wgV2ViUnVudGltZUZlYXR1cmVzOjppc01lZGlhUGxheWVyRW5hYmxl
ZCgpCiB2b2lkIFdlYlJ1bnRpbWVGZWF0dXJlczo6ZW5hYmxlU29ja2V0cyhib29sIGVuYWJsZSkK
IHsKICNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCi0gICAgV2ViU29ja2V0OjpzZXRJc0F2YWlsYWJs
ZShlbmFibGUpOworICAgIFdlYkNvcmU6OldlYlNvY2tldDo6c2V0SXNBdmFpbGFibGUoZW5hYmxl
KTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJTb2NrZXQuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU29ja2V0LmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi44NDUzMzIzNDNmZTFmNDZlZjZmYTY2Zjk5MDA2MjA3OGFlODBhNzhlCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU29ja2V0LmNwcApA
QCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFs
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
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlNvY2tldC5o
IgorCisjaW5jbHVkZSAiV2ViU29ja2V0SW1wbC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
V2ViU29ja2V0KiBXZWJTb2NrZXQ6OmNyZWF0ZShjb25zdCBXZWJEb2N1bWVudCYgZG9jdW1lbnQs
IFdlYlNvY2tldENsaWVudCogY2xpZW50KQoreworICAgIGlmICghY2xpZW50KQorICAgICAgICBy
ZXR1cm4gMDsKKworICAgIE93blB0cjxXZWJTb2NrZXRJbXBsPiB3ZWJzb2NrZXQgPSBhZG9wdFB0
cihuZXcgV2ViU29ja2V0SW1wbChkb2N1bWVudCwgY2xpZW50KSk7CisgICAgaWYgKHdlYnNvY2tl
dCAmJiB3ZWJzb2NrZXQtPmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4g
d2Vic29ja2V0LmxlYWtQdHIoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTb2NrZXRJbXBsLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNvY2tldEltcGwuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY1OTNk
NGJmMWY1MWZmM2M0MTg2ZWEyOGNkYThhM2MxMWE2OWNiOTgKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTb2NrZXRJbXBsLmNwcApAQCAtMCwwICsxLDIw
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoK
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJTb2NrZXRJbXBsLmgiCisKKyNp
bmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIktVUkwuaCIKKyNpZiBFTkFCTEUoV0VCX1NP
Q0tFVFMpCisjaW5jbHVkZSAiV2ViU29ja2V0Q2hhbm5lbC5oIgorI2luY2x1ZGUgIldlYlNvY2tl
dENoYW5uZWxDbGllbnQuaCIKKyNlbHNlCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBXZWJT
b2NrZXRDaGFubmVsIHsKK307Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisjZW5kaWYKKworI2lu
Y2x1ZGUgIldlYkRhdGEuaCIKKyNpbmNsdWRlICJXZWJEb2N1bWVudC5oIgorI2luY2x1ZGUgIldl
YlNvY2tldENsaWVudC5oIgorI2luY2x1ZGUgIldlYlN0cmluZy5oIgorI2luY2x1ZGUgIldlYlVS
TC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K1dlYlNvY2tldEltcGw6OldlYlNvY2tldEltcGwoY29uc3QgV2ViRG9jdW1lbnQmIGRvY3VtZW50
LCBXZWJTb2NrZXRDbGllbnQqIGNsaWVudCkKKyAgICA6IG1fY2xpZW50KGNsaWVudCkKK3sKKyNp
ZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisgICAgbV9wcml2YXRlID0gV2ViU29ja2V0Q2hhbm5lbDo6
Y3JlYXRlKFBhc3NSZWZQdHI8RG9jdW1lbnQ+KGRvY3VtZW50KS5nZXQoKSwgdGhpcyk7CisjZWxz
ZQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCit9CisKK1dlYlNvY2tldEltcGw6
On5XZWJTb2NrZXRJbXBsKCkKK3sKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisgICAgbV9wcml2
YXRlLT5kaXNjb25uZWN0KCk7CisjZWxzZQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2Vu
ZGlmCit9CisKK3ZvaWQgV2ViU29ja2V0SW1wbDo6Y29ubmVjdChjb25zdCBXZWJVUkwmIHVybCwg
Y29uc3QgV2ViU3RyaW5nJiBwcm90b2NvbCkKK3sKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisg
ICAgbV9wcml2YXRlLT5jb25uZWN0KHVybCwgcHJvdG9jb2wpOworI2Vsc2UKKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyNlbmRpZgorfQorCitXZWJTdHJpbmcgV2ViU29ja2V0SW1wbDo6c3Vi
cHJvdG9jb2woKQoreworI2lmIEVOQUJMRShXRUJfU09DS0VUUykKKyAgICByZXR1cm4gbV9wcml2
YXRlLT5zdWJwcm90b2NvbCgpOworI2Vsc2UKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNl
bmRpZgorfQorCitib29sIFdlYlNvY2tldEltcGw6OnNlbmRUZXh0KGNvbnN0IFdlYlN0cmluZyYg
bWVzc2FnZSkKK3sKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisgICAgcmV0dXJuIG1fcHJpdmF0
ZS0+c2VuZChtZXNzYWdlKTsKKyNlbHNlCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5k
aWYKK30KKworYm9vbCBXZWJTb2NrZXRJbXBsOjpzZW5kQmluYXJ5KGNvbnN0IFdlYkRhdGEmIGJp
bmFyeURhdGEpCit7CisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorICAgIHJldHVybiBtX3ByaXZh
dGUtPnNlbmQoYmluYXJ5RGF0YS5kYXRhKCksIGJpbmFyeURhdGEuc2l6ZSgpKTsKKyNlbHNlCisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKK30KKwordW5zaWduZWQgbG9uZyBXZWJT
b2NrZXRJbXBsOjpidWZmZXJlZEFtb3VudCgpIGNvbnN0Cit7CisjaWYgRU5BQkxFKFdFQl9TT0NL
RVRTKQorICAgIHJldHVybiBtX3ByaXZhdGUtPmJ1ZmZlcmVkQW1vdW50KCk7CisjZWxzZQorICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCit9CisKK3ZvaWQgV2ViU29ja2V0SW1wbDo6
Y2xvc2UoaW50IGNvZGUsIGNvbnN0IFdlYlN0cmluZyYgcmVhc29uKQoreworI2lmIEVOQUJMRShX
RUJfU09DS0VUUykKKyAgICBtX3ByaXZhdGUtPmNsb3NlKGNvZGUsIHJlYXNvbik7CisjZWxzZQor
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCit9CisKK3ZvaWQgV2ViU29ja2V0SW1w
bDo6ZmFpbChjb25zdCBXZWJTdHJpbmcmIHJlYXNvbikKK3sKKyNpZiBFTkFCTEUoV0VCX1NPQ0tF
VFMpCisgICAgbV9wcml2YXRlLT5mYWlsKHJlYXNvbik7CisjZWxzZQorICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworI2VuZGlmCit9CisKK3ZvaWQgV2ViU29ja2V0SW1wbDo6ZGlzY29ubmVjdCgp
Cit7CisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorICAgIG1fcHJpdmF0ZS0+ZGlzY29ubmVjdCgp
OworICAgIG1fY2xpZW50ID0gMDsKKyNlbHNlCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisj
ZW5kaWYKK30KKwordm9pZCBXZWJTb2NrZXRJbXBsOjpkaWRDb25uZWN0KCkKK3sKKyNpZiBFTkFC
TEUoV0VCX1NPQ0tFVFMpCisgICAgbV9jbGllbnQtPmRpZENvbm5lY3QoKTsKKyNlbHNlCisgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKK30KKwordm9pZCBXZWJTb2NrZXRJbXBsOjpk
aWRSZWNlaXZlTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisjaWYgRU5BQkxFKFdF
Ql9TT0NLRVRTKQorICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlTWVzc2FnZShXZWJTdHJpbmcobWVz
c2FnZSkpOworI2Vsc2UKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNlbmRpZgorfQorCit2
b2lkIFdlYlNvY2tldEltcGw6OmRpZFJlY2VpdmVCaW5hcnlEYXRhKFBhc3NPd25QdHI8VmVjdG9y
PGNoYXI+ID4gYmluYXJ5RGF0YSkKK3sKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisgICAgbV9j
bGllbnQtPmRpZFJlY2VpdmVCaW5hcnlEYXRhKFdlYkRhdGEoYmluYXJ5RGF0YS0+ZGF0YSgpLCBi
aW5hcnlEYXRhLT5zaXplKCkpKTsKKyNlbHNlCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisj
ZW5kaWYKK30KKwordm9pZCBXZWJTb2NrZXRJbXBsOjpkaWRSZWNlaXZlTWVzc2FnZUVycm9yKCkK
K3sKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVNZXNz
YWdlRXJyb3IoKTsKKyNlbHNlCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKK30K
Kwordm9pZCBXZWJTb2NrZXRJbXBsOjpkaWRTdGFydENsb3NpbmdIYW5kc2hha2UoKQoreworI2lm
IEVOQUJMRShXRUJfU09DS0VUUykKKyAgICBtX2NsaWVudC0+ZGlkU3RhcnRDbG9zaW5nSGFuZHNo
YWtlKCk7CisjZWxzZQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCit9CisKK3Zv
aWQgV2ViU29ja2V0SW1wbDo6ZGlkQ2xvc2UodW5zaWduZWQgbG9uZyBidWZmZXJlZEFtb3VudCwg
Q2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb25TdGF0dXMgc3RhdHVzLCB1bnNpZ25lZCBzaG9ydCBj
b2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbikKK3sKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisg
ICAgbV9jbGllbnQtPmRpZENsb3NlKGJ1ZmZlcmVkQW1vdW50LCBzdGF0aWNfY2FzdDxXZWJTb2Nr
ZXRDbGllbnQ6OkNsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uU3RhdHVzPihzdGF0dXMpLCBjb2Rl
LCBXZWJTdHJpbmcocmVhc29uKSk7CisjZWxzZQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
I2VuZGlmCit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViU29ja2V0SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViU29ja2V0SW1wbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZkOTJiZTUwYjNjN2U2NWRkOTNhMWVh
MTczNGE1NTU4ZDA2OTg5YWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJTb2NrZXRJbXBsLmgKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlNvY2tl
dEltcGxfaAorI2RlZmluZSBXZWJTb2NrZXRJbXBsX2gKKworI2luY2x1ZGUgIldlYkNvbW1vbi5o
IgorI2luY2x1ZGUgIldlYlNvY2tldC5oIgorI2luY2x1ZGUgIldlYlNvY2tldENoYW5uZWxDbGll
bnQuaCIKKyNpbmNsdWRlICJXZWJTb2NrZXRDbGllbnQuaCIKKyNpbmNsdWRlIDx3dGYvT3duUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNz
IFdlYlNvY2tldENoYW5uZWw7IH0KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkRh
dGE7CitjbGFzcyBXZWJEb2N1bWVudDsKK2NsYXNzIFdlYlN0cmluZzsKK2NsYXNzIFdlYlVSTDsK
KworY2xhc3MgV2ViU29ja2V0SW1wbCA6IHB1YmxpYyBXZWJTb2NrZXQsIHB1YmxpYyBXZWJDb3Jl
OjpXZWJTb2NrZXRDaGFubmVsQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBXZWJTb2NrZXRJbXBsKGNv
bnN0IFdlYkRvY3VtZW50JiwgV2ViU29ja2V0Q2xpZW50Kik7CisgICAgdmlydHVhbCB+V2ViU29j
a2V0SW1wbCgpOworCisgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiAhbV9wcml2YXRl
OyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgY29ubmVjdChjb25zdCBXZWJVUkwmLCBjb25zdCBXZWJT
dHJpbmcmIHByb3RvY29sKTsKKyAgICB2aXJ0dWFsIFdlYlN0cmluZyBzdWJwcm90b2NvbCgpOwor
ICAgIHZpcnR1YWwgYm9vbCBzZW5kVGV4dChjb25zdCBXZWJTdHJpbmcmIG1lc3NhZ2UpOworICAg
IHZpcnR1YWwgYm9vbCBzZW5kQmluYXJ5KGNvbnN0IFdlYkRhdGEmIGJpbmFyeURhdGEpOworICAg
IHZpcnR1YWwgdW5zaWduZWQgbG9uZyBidWZmZXJlZEFtb3VudCgpIGNvbnN0OworICAgIHZpcnR1
YWwgdm9pZCBjbG9zZShpbnQgY29kZSwgY29uc3QgV2ViU3RyaW5nJiByZWFzb24pOworICAgIHZp
cnR1YWwgdm9pZCBmYWlsKGNvbnN0IFdlYlN0cmluZyYgcmVhc29uKTsKKyAgICB2aXJ0dWFsIHZv
aWQgZGlzY29ubmVjdCgpOworCisgICAgLy8gV2ViU29ja2V0Q2hhbm5lbENsaWVudAorICAgIHZp
cnR1YWwgdm9pZCBkaWRDb25uZWN0KCk7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNz
YWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVC
aW5hcnlEYXRhKFBhc3NPd25QdHI8VmVjdG9yPGNoYXI+ID4gYmluYXJ5RGF0YSk7CisgICAgdmly
dHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRXJyb3IoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
U3RhcnRDbG9zaW5nSGFuZHNoYWtlKCk7CisgICAgdmlydHVhbCB2b2lkIGRpZENsb3NlKHVuc2ln
bmVkIGxvbmcgYnVmZmVyZWRBbW91bnQsIENsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uU3RhdHVz
LCB1bnNpZ25lZCBzaG9ydCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbik7CisKK3ByaXZhdGU6
CisgICAgUmVmUHRyPFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw+IG1fcHJpdmF0ZTsKKyAgICBX
ZWJTb2NrZXRDbGllbnQqIG1fY2xpZW50OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
KyNlbmRpZiAvLyBXZWJXZWJTb2NrZXRDaGFubmVsSW1wbF9oCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>