<?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>42367</bug_id>
          
          <creation_ts>2010-07-15 06:43:54 -0700</creation_ts>
          <short_desc>Speech input plumbing in webkit</short_desc>
          <delta_ts>2010-07-26 04:53:08 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Forms</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>39485</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Satish Sampath">satish</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bulach</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>jorlow</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>251844</commentid>
    <comment_count>0</comment_count>
    <who name="Satish Sampath">satish</who>
    <bug_when>2010-07-15 06:43:54 -0700</bug_when>
    <thetext>Adds the following in WebKit:
- interface WebSpeechInputClient under chromium/public, implemented by the embedder and callable by WebKit
- interface WebSpeechInputClientListener under chromium/public, implemented by WebKit and callable by the embedder
- class SpeechInputClientImpl under chrome/src which acts as a bi-directional channel between WebCore and the embedder for speech input

In the next patch I&apos;ll be adding a mock implementation of SpeechInputClientImpl, LayoutTestController additions and relevant layout tests.

All possible code changes are behind the speech input compile time flag (disabled by default).

More information about the speech input API proposal can be found in the following links:
 Parent bug: https://bugs.webkit.org/show_bug.cgi?id=39485
 Full API proposal: https://docs.google.com/View?id=dcfg79pz_5dhnp23f5
 Relevant discussions in the WHATWG list:
  - http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2010-May/026338.html
  - http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2010-June/026747.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251907</commentid>
    <comment_count>1</comment_count>
      <attachid>61666</attachid>
    <who name="Satish Sampath">satish</who>
    <bug_when>2010-07-15 08:44:50 -0700</bug_when>
    <thetext>Created attachment 61666
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251963</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-15 10:13:53 -0700</bug_when>
    <thetext>Attachment 61666 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/3558030</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251966</commentid>
    <comment_count>3</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-07-15 10:17:07 -0700</bug_when>
    <thetext>Darin, can you please review the WebKit part?  Marcus, can you please review the entire thing?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251974</commentid>
    <comment_count>4</comment_count>
    <who name="Satish Sampath">satish</who>
    <bug_when>2010-07-15 10:27:52 -0700</bug_when>
    <thetext>Doh, didn&apos;t add the new files to chromium/WebKit.gyp (since I tested on windows in local machine and added manually to the .vcproj). I&apos;ll add them along with the review comments once they come in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>252446</commentid>
    <comment_count>5</comment_count>
    <who name="Marcus Bulach">bulach</who>
    <bug_when>2010-07-16 04:17:16 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Doh, didn&apos;t add the new files to chromium/WebKit.gyp (since I tested on windows in local machine and added manually to the .vcproj). I&apos;ll add them along with the review comments once they come in.

Hi Satish,

I can&apos;t do normative reviews yet, so here&apos;s some drive-by comments:

39 class WebSpeechInputClient {
 40 public:
 41     // Attaches a listener which receives future callbacks.
 42     // Returns false if a listener was already attached.
 43     virtual bool attachListener(WebSpeechInputClientListener* listener) = 0;
 I think the style is now to avoid pure virtuals and have:
 WEBKIT_ASSERT_NOT_REACHED();
 see: http://trac.webkit.org/browser/trunk/WebKit/chromium/public/WebIDBCallbacks.h
Also, no need to name the parameter when it&apos;s obvious from the type (please, check all other headers).
 
  39 class WebSpeechInputClientListener {
As above.
    
47 class SpeechInputClientImpl
both file / classname should be prefixed with &quot;Web&quot;, since they&apos;re in WebKit namespace.

43 SpeechInputClientImpl::SpeechInputClientImpl(WebSpeechInputClient* client)
use initializer for m_client, and also zero-initialize m_listener!

    
64     WebCore::SpeechInputClientListener* m_listener; // Valid when recognition is in progress.
This should probably be a WebPrivatePtr:
http://trac.webkit.org/browser/trunk/WebKit/chromium/public/WebSerializedScriptValue.h
    
 71 void SpeechInputClientImpl::recordingComplete()
 72 {
 73     ASSERT(m_listener);
 74     if (m_listener)
no need for the if since the assert will terminate.
  
 78 void SpeechInputClientImpl::setRecognitionResult(const WebString&amp; result)
 79 {
 80     ASSERT(m_listener);
 81     if (m_listener)   
as above.
   
67 } // namespace WebCore
 68 
 69 #endif // ENABLE(INPUT_SPEECH)
this is closing WebKit, not WebCore namespace.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>252527</commentid>
    <comment_count>6</comment_count>
      <attachid>61809</attachid>
    <who name="Satish Sampath">satish</who>
    <bug_when>2010-07-16 08:31:15 -0700</bug_when>
    <thetext>Created attachment 61809
Patch

Addressed all of Marcus&apos;s comments, except changing the name of SpeechInputClientImpl to WebSpeechInputClientImpl. It looks to me that the &apos;Web&apos; prefix is used primarily for interfaces/classes exposed from WebKit via the headers in chromium/public directory. Majority of classes in chromium/src doesn&apos;t have the &apos;Web&apos; prefix and most of those which do have the prefix are implementations of classes exposed in the chromium/public directory. I&apos;m happy to change the name if my understanding is incorrect and there is a strong reason to have the &apos;Web&apos; prefix even for classes internal to WebKit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>252611</commentid>
    <comment_count>7</comment_count>
      <attachid>61809</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-07-16 11:04:38 -0700</bug_when>
    <thetext>Comment on attachment 61809
Patch

WebKit/chromium/public/WebViewClient.h:340
 +       virtual WebKit::WebSpeechInputClient* speechInputClient() { return 0; }
indentation is wrong.  no need for WebKit:: prefix

WebKit/chromium/public/WebViewClient.h:340
 +       virtual WebKit::WebSpeechInputClient* speechInputClient() { return 0; }
instead of introducing a new interface here, just add the methods
from WebSpeechInputClient to WebViewClient.

Then rename WebSpeechInputClientListener to WebSpeechInputListener.

WebKit/chromium/public/WebSpeechInputClientListener.h:44
 +      virtual void recordingComplete() { WEBKIT_ASSERT_NOT_REACHED(); }
nit: didCompleteRecording

WebKit/chromium/public/WebSpeechInputClientListener.h:49
 +      virtual void setRecognitionResult(const WebString&amp;) { WEBKIT_ASSERT_NOT_REACHED(); }
didCompleteRecognition?

WebKit/chromium/public/WebSpeechInputClient.h:45
 +      virtual bool attachListener(WebSpeechInputClientListener*) { WEBKIT_ASSERT_NOT_REACHED(); }
why do we need multiple listeners?

WebKit/chromium/public/WebSpeechInputClient.h:57
 +      virtual void stopRecording() { WEBKIT_ASSERT_NOT_REACHED(); }
why do we need the recordingComplete (didCompleteRecording) event if
there is an explicit stopRecording method?  are there other ways that
a recording could stop such that WebKit would require the notification
that recording stopped?

WebKit/chromium/public/WebSpeechInputClient.h:53
 +      virtual bool startRecognition() { WEBKIT_ASSERT_NOT_REACHED(); }
nit: might be nice to put the startRecognition / cancelRecognition methods
next to each other since they seem related.

WebKit/chromium/public/WebSpeechInputClient.h:57
 +      virtual void stopRecording() { WEBKIT_ASSERT_NOT_REACHED(); }
should there be some way to start recording again?

WebKit/chromium/public/WebSpeechInputClientListener.h:44
 +      virtual void recordingComplete() { WEBKIT_ASSERT_NOT_REACHED(); }
since these methods are implemented by WebKit, they should be pure virtual.

what if there are multiple pages independently listening for speech
input?  given these interfaces, it seems like one of the pages could
cancel the speech recognition process, hampering the efforts of the
other page.  or, is that dealt with at a lower level within WebCore?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>252632</commentid>
    <comment_count>8</comment_count>
    <who name="Satish Sampath">satish</who>
    <bug_when>2010-07-16 11:40:01 -0700</bug_when>
    <thetext>(In reply to comment #7)

Thanks for the comments, some questions/replies below.

&gt; WebKit/chromium/public/WebViewClient.h:340
&gt;  +       virtual WebKit::WebSpeechInputClient* speechInputClient() { return 0; }
&gt; instead of introducing a new interface here, just add the methods
&gt; from WebSpeechInputClient to WebViewClient.
&gt; 
&gt; Then rename WebSpeechInputClientListener to WebSpeechInputListener.

I see other features such as Geolocation have an interface (WebKit::WebGeolocationService) and implemented in the chromium render process as a separate dispatcher-like class which seemed clean. Just double checking with you if we are moving away from that model..

&gt; WebKit/chromium/public/WebSpeechInputClientListener.h:49
&gt;  +      virtual void setRecognitionResult(const WebString&amp;) { WEBKIT_ASSERT_NOT_REACHED(); }
&gt; didCompleteRecognition?

This method can potentially get called multiple times, if there are partial results available as the user keeps speaking. The current name may be more suitable for such cases, is it ok to leave it as is?

&gt; WebKit/chromium/public/WebSpeechInputClient.h:45
&gt;  +      virtual bool attachListener(WebSpeechInputClientListener*) { WEBKIT_ASSERT_NOT_REACHED(); }
&gt; why do we need multiple listeners?

We don&apos;t need, there should be a 1:1 mapping between the client and listener. But since the client is fetched from the embedder on creation of WebViewImpl, I was not sure how this attach can be done before that. Any suggestions for making this better?

&gt; WebKit/chromium/public/WebSpeechInputClient.h:57
&gt;  +      virtual void stopRecording() { WEBKIT_ASSERT_NOT_REACHED(); }
&gt; why do we need the recordingComplete (didCompleteRecording) event if
&gt; there is an explicit stopRecording method?  are there other ways that
&gt; a recording could stop such that WebKit would require the notification
&gt; that recording stopped?

stopRecording() is an optional call, without that the browser&apos;s speech recording &apos;endpointer&apos; will detect silence in the input and stop recording automatically once the user stops speaking. stopRecording() is there to let users explicitly click the speech/mic button again in case they are not familiar with the workings or for better feature discoverability/usability.
recordingComplete() will be issued in both these cases. The speech element in WebKit explicitly needs to know when recording stops so it can update the UI and indicate that recognition is in progress (which can take a while if done via a speech recognition server).

&gt; WebKit/chromium/public/WebSpeechInputClient.h:57
&gt;  +      virtual void stopRecording() { WEBKIT_ASSERT_NOT_REACHED(); }
&gt; should there be some way to start recording again?

startRecognition() does that. This method is named stopRecording() and not stopRecognition() because the audio recorded so far is still recognized and the result returned to the input element.

&gt; WebKit/chromium/public/WebSpeechInputClientListener.h:44
&gt;  +      virtual void recordingComplete() { WEBKIT_ASSERT_NOT_REACHED(); }
&gt; since these methods are implemented by WebKit, they should be pure virtual.

I got comments from Marcus (above) to change from pure virtual to this model as he felt this was the new hotness, I&apos;m happy to move back to pure virtual if you think that is the way to go.

&gt; what if there are multiple pages independently listening for speech
&gt; input?  given these interfaces, it seems like one of the pages could
&gt; cancel the speech recognition process, hampering the efforts of the
&gt; other page.  or, is that dealt with at a lower level within WebCore?

In my understanding each WebViewImpl manages only a single page, but each page can have multiple speech enabled input elements. The code so far handles the multiple input element case by allowing only one input element to record at a time. Speech input code in the browser layer should handle the multiple page case, which is not done yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>254349</commentid>
    <comment_count>9</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-07-21 09:39:36 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; 
&gt; Thanks for the comments, some questions/replies below.
&gt; 
&gt; &gt; WebKit/chromium/public/WebViewClient.h:340
&gt; &gt;  +       virtual WebKit::WebSpeechInputClient* speechInputClient() { return 0; }
&gt; &gt; instead of introducing a new interface here, just add the methods
&gt; &gt; from WebSpeechInputClient to WebViewClient.
&gt; &gt; 
&gt; &gt; Then rename WebSpeechInputClientListener to WebSpeechInputListener.
&gt; 
&gt; I see other features such as Geolocation have an interface (WebKit::WebGeolocationService)
&gt; and implemented in the chromium render process as a separate dispatcher-like class which 
&gt; seemed clean. Just double checking with you if we are moving away from that model..

Yes, that&apos;s because WebGeolocationService has a lot of methods.  I&apos;m OK creating
a separate interface for speech input if you think it is going to make things
cleaner.  I would just not call it WebSpeechInputClient.  That name suggests
that it is the &quot;client&quot; to a WebSpeechInput interface, which does not appear
to exist.

Instead, I would rename WebSpeechInputClient to WebSpeechInputService.  Then
I would rename WebSpeechInputClientListener to just WebSpeechInputListener.

i.e., the speech input service can have listeners.


&gt; &gt; WebKit/chromium/public/WebSpeechInputClientListener.h:49
&gt; &gt;  +      virtual void setRecognitionResult(const WebString&amp;) { WEBKIT_ASSERT_NOT_REACHED(); }
&gt; &gt; didCompleteRecognition?
&gt; 
&gt; This method can potentially get called multiple times, if there are partial results 
&gt; available as the user keeps speaking. The current name may be more suitable for such
&gt; cases, is it ok to leave it as is?

OK, but please add comments explaining all of this.  I found these interfaces
to be very confusing when I first read them.


&gt; &gt; WebKit/chromium/public/WebSpeechInputClient.h:45
&gt; &gt;  +      virtual bool attachListener(WebSpeechInputClientListener*) { WEBKIT_ASSERT_NOT_REACHED(); }
&gt; &gt; why do we need multiple listeners?
&gt; 
&gt; We don&apos;t need, there should be a 1:1 mapping between the client and listener.
&gt; But since the client is fetched from the embedder on creation of WebViewImpl,
&gt; I was not sure how this attach can be done before that. Any suggestions for
&gt; making this better?

You should pass the WebSpeechInputListener to the method that returns
the WebSpeechInputService.  It becomes like a &quot;constructor parameter&quot;
in that case.


&gt; &gt; WebKit/chromium/public/WebSpeechInputClient.h:57
&gt; &gt;  +      virtual void stopRecording() { WEBKIT_ASSERT_NOT_REACHED(); }
&gt; &gt; why do we need the recordingComplete (didCompleteRecording) event if
&gt; &gt; there is an explicit stopRecording method?  are there other ways that
&gt; &gt; a recording could stop such that WebKit would require the notification
&gt; &gt; that recording stopped?
&gt; 
&gt; stopRecording() is an optional call, without that the browser&apos;s speech recording
&gt; &apos;endpointer&apos; will detect silence in the input and stop recording automatically
&gt; once the user stops speaking. stopRecording() is there to let users explicitly
&gt; click the speech/mic button again in case they are not familiar with the workings
&gt; or for better feature discoverability/usability.
&gt; recordingComplete() will be issued in both these cases. The speech element in
&gt; WebKit explicitly needs to know when recording stops so it can update the UI and
&gt; indicate that recognition is in progress (which can take a while if done via a
&gt; speech recognition server).

OK, please explain this in the comments.


&gt; &gt; WebKit/chromium/public/WebSpeechInputClient.h:57
&gt; &gt;  +      virtual void stopRecording() { WEBKIT_ASSERT_NOT_REACHED(); }
&gt; &gt; should there be some way to start recording again?
&gt; 
&gt; startRecognition() does that. This method is named stopRecording() and not
&gt; stopRecognition() because the audio recorded so far is still recognized and
&gt; the result returned to the input element.

OK, please explain this in the comments.


&gt; &gt; WebKit/chromium/public/WebSpeechInputClientListener.h:44
&gt; &gt;  +      virtual void recordingComplete() { WEBKIT_ASSERT_NOT_REACHED(); }
&gt; &gt; since these methods are implemented by WebKit, they should be pure virtual.
&gt; 
&gt; I got comments from Marcus (above) to change from pure virtual to this model
&gt; as he felt this was the new hotness, I&apos;m happy to move back to pure virtual
&gt; if you think that is the way to go.

The rule is very simple:  use pure virtual for methods implemented by WebKit,
but provide default implementations of methods implemented by the embedder.
Please share this rule :)

The point here is that we would prefer to always use pure virtual methods
as it allows the compiler to catch cases in which we forget to implement
a method.  However, to make it easier to roll new versions of webkit into
chromium, we provide default implementations for methods that chromium
may need to implement.  that way if the chromium side hasn&apos;t yet implemented
the new method, things will still compile (although they might not function
perfectly).


&gt; &gt; what if there are multiple pages independently listening for speech
&gt; &gt; input?  given these interfaces, it seems like one of the pages could
&gt; &gt; cancel the speech recognition process, hampering the efforts of the
&gt; &gt; other page.  or, is that dealt with at a lower level within WebCore?
&gt; 
&gt; In my understanding each WebViewImpl manages only a single page, but each
&gt; page can have multiple speech enabled input elements. The code so far
&gt; handles the multiple input element case by allowing only one input element
&gt; to record at a time. Speech input code in the browser layer should handle
&gt; the multiple page case, which is not done yet.

Makes sense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>254351</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-07-21 09:43:03 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; Instead, I would rename WebSpeechInputClient to WebSpeechInputService.  Then
&gt; I would rename WebSpeechInputClientListener to just WebSpeechInputListener.

Actually, even better:  Instead of WebSpeechInputService, how about if we call
it WebSpeechInputController?  Since there is one of these per WebView,
it seems wrong to add the &quot;Service&quot; suffix, and &quot;Controller&quot; seems like a
more accurate description of its responsibility.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>254492</commentid>
    <comment_count>11</comment_count>
      <attachid>62225</attachid>
    <who name="Satish Sampath">satish</who>
    <bug_when>2010-07-21 13:31:42 -0700</bug_when>
    <thetext>Created attachment 62225
Patch

Thanks Darin. This latest patch addresses all your comments, renamed interfaces and methods, added comments.. Please take another look.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>254497</commentid>
    <comment_count>12</comment_count>
      <attachid>62225</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-07-21 13:40:04 -0700</bug_when>
    <thetext>Comment on attachment 62225
Patch

I think you should similarly rename the WebCore classes, but perhaps that can be
done in a separate patch.

Looking at the WebCore level, you have several classes (in WebCore/page/):

  SpeechInput
  SpeechInputListener
  SpeechInputClient
  SpeechInputClientListener

Why so many classes?  SpeechInputListener and SpeechInputClientListener seem
to be identical!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>254509</commentid>
    <comment_count>13</comment_count>
    <who name="Satish Sampath">satish</who>
    <bug_when>2010-07-21 14:06:04 -0700</bug_when>
    <thetext>The original idea was to have more functionality in the SpeechInput class and expose a subset to SpeechInputListener, but it has turned out to be a simple proxy now.
In a subsequent patch I was planning to remove SpeechInput and SpeechInputListener , rename SpeechInputClientListener-&gt;SpeechInputListener and get InputFieldSpeechButtonElement implement that directly. Is that ok?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>255417</commentid>
    <comment_count>14</comment_count>
      <attachid>62432</attachid>
    <who name="Satish Sampath">satish</who>
    <bug_when>2010-07-23 09:18:59 -0700</bug_when>
    <thetext>Created attachment 62432
Patch

Removed unused headers and added a missing return statement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>255449</commentid>
    <comment_count>15</comment_count>
      <attachid>62432</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-07-23 10:08:11 -0700</bug_when>
    <thetext>Comment on attachment 62432
Patch

WebKit/chromium/public/WebViewClient.h:341
 +      virtual WebSpeechInputController* createSpeechInputController(
this method is named create*, yet it returns an interface that defines
a protected virtual destructor, so i have no way to destroy the thing
that was created for me.  perhaps you don&apos;t intend to allocate a new
WebSpeechInputController each time this method is called?  if that is
the case, then this method should just have the create prefix dropped.
it should just be named &quot;speechInputController&quot;.

cleaning up the webcore classes in a separate patch is completely fine.
my concern with this patch is that the interfaces should match up well
with what we want the webcore classes to look like.  i&apos;m happy if that&apos;s
the plan.

R=me with createSpeechInputController renamed to speechInputController.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>255484</commentid>
    <comment_count>16</comment_count>
      <attachid>62451</attachid>
    <who name="Satish Sampath">satish</who>
    <bug_when>2010-07-23 11:38:28 -0700</bug_when>
    <thetext>Created attachment 62451
Patch

Removed &apos;create&apos; from method name as suggested. Could you also please give me a commit-queue+ since I am not a committer yet?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>255950</commentid>
    <comment_count>17</comment_count>
      <attachid>62451</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-07-26 02:28:15 -0700</bug_when>
    <thetext>Comment on attachment 62451
Patch

r=me, given Darin&apos;s earlier review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>255959</commentid>
    <comment_count>18</comment_count>
      <attachid>62451</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-07-26 03:32:27 -0700</bug_when>
    <thetext>Comment on attachment 62451
Patch

Rejecting patch 62451 from commit-queue.

Failed to run &quot;[&apos;WebKitTools/Scripts/run-webkit-tests&apos;, &apos;--no-launch-safari&apos;, &apos;--exit-after-n-failures=1&apos;, &apos;--ignore-tests&apos;, &apos;compositing&apos;, &apos;--quiet&apos;]&quot; exit_code: 1
Running build-dumprendertree
Compiling Java tests
make: Nothing to be done for `default&apos;.
Running tests from /Users/eseidel/Projects/CommitQueue/LayoutTests
Testing 20718 test cases.
fast/loader/recursive-before-unload-crash.html -&gt; failed

Exiting early after 1 failures. 14202 tests run.
214.25s total testing time

14201 test cases (99%) succeeded
1 test case (&lt;1%) had incorrect layout
1 test case (&lt;1%) had stderr output

Full output: http://queues.webkit.org/results/3585565</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>255968</commentid>
    <comment_count>19</comment_count>
      <attachid>62451</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-07-26 04:08:56 -0700</bug_when>
    <thetext>Comment on attachment 62451
Patch

Observed LayoutTest crash is unrelated to this patch, trying again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>255985</commentid>
    <comment_count>20</comment_count>
      <attachid>62451</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-07-26 04:53:02 -0700</bug_when>
    <thetext>Comment on attachment 62451
Patch

Clearing flags on attachment: 62451

Committed r64042: &lt;http://trac.webkit.org/changeset/64042&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>255986</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-07-26 04:53:08 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61666</attachid>
            <date>2010-07-15 08:44:50 -0700</date>
            <delta_ts>2010-07-16 08:31:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-42367-20100715164446.patch</filename>
            <type>text/plain</type>
            <size>18018</size>
            <attacher name="Satish Sampath">satish</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
Mjc5NDZiZGY0ZTY4MmRjMWEzZTc1ZDAwNzc3ZWY3MWZlNjQ1MjVmNS4uMDk4YzY0NWVkZDMzN2E2
NzExMjM5NTE1OWY0YzEwYWExYjg5MzAzMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMC0wNy0xNSAgU2F0
aXNoIFNhbXBhdGggIDxzYXRpc2hAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBXZWJLaXQgcGx1bWJpbmcgdG8gY29ubmVj
dCBzcGVlY2ggcmVxdWVzdHMgYW5kIGNhbGxiYWNrcyBiZXR3ZWVuIFdlYkNvcmUgYW5kIHRoZSBl
bWJlZGRlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTQyMzY3CisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCB0aGUgcmVsZXZhbnQgTGF5b3V0VGVzdENv
bnRyb2xsZXIgYmluZGluZ3Mgd2lsbCBiZSBhZGRlZCBpbiB0aGUgbmV4dCBwYXRjaC4KKworICAg
ICAgICAqIHBhZ2UvU3BlZWNoSW5wdXRDbGllbnQuaDogYWRkZWQgYW4gZXh0cmEgbWV0aG9kIHRv
IG9wdGlvbmFsbHkgbGV0IHVzZXJzIHN0b3AgcmVjb3JkaW5nIG9uY2UgdGhleSBoYXZlIHNwb2tl
bi4KKwogMjAxMC0wNy0xNSAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFuLgpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wYWdlL1NwZWVjaElucHV0Q2xpZW50LmggYi9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXRDbGll
bnQuaAppbmRleCBiZTY4ZjQ2Yjk4ZTFmMmE4NmJhNjU0ZTc4ZmUxMjhhYzA2ZGVjMjExLi41ZDFl
ZDhiZDkxOTliYWIyOTdmODczOTgzYzg5YzQ0OGVkZTFkM2YwIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3BhZ2UvU3BlZWNoSW5wdXRDbGllbnQuaAorKysgYi9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXRD
bGllbnQuaApAQCAtNDIsNiArNDIsMTAgQEAgY2xhc3MgU3BlZWNoSW5wdXRDbGllbnQgewogcHVi
bGljOgogICAgIHZpcnR1YWwgYm9vbCBzdGFydFJlY29nbml0aW9uKFNwZWVjaElucHV0Q2xpZW50
TGlzdGVuZXIqIGxpc3RlbmVyKSA9IDA7CiAKKyAgICAvLyBTdG9wcyBhdWRpbyByZWNvcmRpbmcg
YW5kIHBlcmZvcm1zIHJlY29nbml0aW9uIHdpdGggdGhlIGF1ZGlvIHJlY29yZGVkIHVudGlsIG5v
dworICAgIC8vIChkb2VzIG5vdCBkaXNjYXJkIGF1ZGlvKS4KKyAgICB2aXJ0dWFsIHZvaWQgc3Rv
cFJlY29yZGluZygpID0gMDsKKwogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgflNwZWVjaElucHV0
Q2xpZW50KCkgeyB9CiB9OwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBi
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMjMyNDYwODhlNzJlMGQyNWFkNzk2MmJl
OGQzN2IwZDlkNDk5NTI2MC4uMTIzYWI1ZTU0YWUzM2IwN2RhZGQwNGEyNDU0ZWJiZGJmNTNlNTA2
ZiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTAtMDctMTUgIFNhdGlzaCBTYW1w
YXRoICA8c2F0aXNoQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgV2ViS2l0IHBsdW1iaW5nIHRvIGNvbm5lY3Qgc3BlZWNo
IHJlcXVlc3RzIGFuZCBjYWxsYmFja3MgYmV0d2VlbiBXZWJDb3JlIGFuZCB0aGUgZW1iZWRkZXIu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MjM2Nwor
CisgICAgICAgIE5vIG5ldyB0ZXN0cywgdGhlIHJlbGV2YW50IExheW91dFRlc3RDb250cm9sbGVy
IGJpbmRpbmdzIGFuZCB0ZXN0cyB3aWxsIGJlIGFkZGVkIGluIHRoZSBuZXh0IHBhdGNoLgorCisg
ICAgICAgICogcHVibGljL1dlYlNwZWVjaElucHV0Q2xpZW50Lmg6IEFkZGVkIG5ldyBpbnRlcmZh
Y2UsIGltcGxlbWVudGVkIGJ5IGVtYmVkZGVyIGFuZCBjYWxsZWQgYnkgV2ViS2l0CisgICAgICAg
IChXZWJLaXQ6OldlYlNwZWVjaElucHV0Q2xpZW50Ojp+V2ViU3BlZWNoSW5wdXRDbGllbnQpOgor
ICAgICAgICAqIHB1YmxpYy9XZWJTcGVlY2hJbnB1dENsaWVudExpc3RlbmVyLmg6IEFkZGVkIG5l
dyBpbnRlcmZhY2UsIGltcGxlbWVudGVkIGJ5IFdlYktpdCBhbmQgY2FsbGVkIGJ5IGVtYmVkZGVy
LgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hJbnB1dENsaWVudExpc3RlbmVyOjp+V2ViU3Bl
ZWNoSW5wdXRDbGllbnRMaXN0ZW5lcik6CisgICAgICAgICogcHVibGljL1dlYlZpZXdDbGllbnQu
aDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0NsaWVudDo6c3BlZWNoSW5wdXRDbGllbnQpOiBO
ZXcgbWV0aG9kIHRvIGdldCB0aGUgZW1iZWRkZXIncyBzcGVlY2ggaW5wdXQgY2xpZW50IGludGVy
ZmFjZS4KKyAgICAgICAgKiBzcmMvU3BlZWNoSW5wdXRDbGllbnRJbXBsLmNwcDogQWRkZWQgbmV3
IGNsYXNzLCBpbXBsZW1lbnRhdGlvbiBvZiBhIHR3byB3YXkgY29ubmVjdG9yIGJldHdlZW4gV2Vi
Q29yZQorICAgICAgICBhbmQgdGhlIGVtYmVkZGVyIGZvciByZXF1ZXN0cyBhbmQgcmVzcG9uc2Vz
LgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hJbnB1dENsaWVudEltcGw6OlNwZWVjaElucHV0Q2xp
ZW50SW1wbCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaElucHV0Q2xpZW50SW1wbDo6flNwZWVj
aElucHV0Q2xpZW50SW1wbCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaElucHV0Q2xpZW50SW1w
bDo6c3RhcnRSZWNvZ25pdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaElucHV0Q2xpZW50
SW1wbDo6c3RvcFJlY29yZGluZyk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaElucHV0Q2xpZW50
SW1wbDo6cmVjb3JkaW5nQ29tcGxldGUpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hJbnB1dENs
aWVudEltcGw6OnNldFJlY29nbml0aW9uUmVzdWx0KToKKyAgICAgICAgKiBzcmMvU3BlZWNoSW5w
dXRDbGllbnRJbXBsLmg6IEFkZGVkLgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbCk6IFBhc3Mgb24gdGhlIGFi
b3ZlIG1lbnRpb25lZCBzcGVlY2ggaW5wdXQgY29ubmVjdG9yIHRvIFdlYkNvcmUuCisgICAgICAg
ICogc3JjL1dlYlZpZXdJbXBsLmg6CisKIDIwMTAtMDctMTUgIFBhdmVsIEZlbGRtYW4gIDxwZmVs
ZG1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgWXVyeSBTZW1pa2hhdHNr
eS4KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoSW5wdXRDbGll
bnQuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoSW5wdXRDbGllbnQuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5iZDdlZmJlZTg0OTE3YTAxZmJhNWU2ZmNmN2Q2NmRmMWNjZjI0MDA3Ci0tLSAvZGV2
L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hJbnB1dENsaWVudC5o
CkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlNwZWVjaElucHV0Q2xpZW50X2gKKyNkZWZpbmUg
V2ViU3BlZWNoSW5wdXRDbGllbnRfaAorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2Vi
U3BlZWNoSW5wdXRDbGllbnRMaXN0ZW5lcjsKKworLy8gUHJvdmlkZXMgYW4gZW1iZWRkZXIgQVBJ
IGNhbGxlZCBieSBXZWJLaXQuCitjbGFzcyBXZWJTcGVlY2hJbnB1dENsaWVudCB7CitwdWJsaWM6
CisgICAgLy8gQXR0YWNoZXMgYSBsaXN0ZW5lciB3aGljaCByZWNlaXZlcyBmdXR1cmUgY2FsbGJh
Y2tzLgorICAgIC8vIFJldHVybnMgZmFsc2UgaWYgYSBsaXN0ZW5lciB3YXMgYWxyZWFkeSBhdHRh
Y2hlZC4KKyAgICB2aXJ0dWFsIGJvb2wgYXR0YWNoTGlzdGVuZXIoV2ViU3BlZWNoSW5wdXRDbGll
bnRMaXN0ZW5lciogbGlzdGVuZXIpID0gMDsKKworICAgIC8vIERldGFjaGVzIHRoZSBsaXN0ZW5l
ciBmcm9tIHRoZSBlbWJlZGRlci4KKyAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoTGlzdGVuZXIoV2Vi
U3BlZWNoSW5wdXRDbGllbnRMaXN0ZW5lciogbGlzdGVuZXIpID0gMDsKKworICAgIC8vIFN0YXJ0
cyBzcGVlY2ggcmVjb2duaXRpb24uIFNwZWVjaCB3aWxsIGdldCByZWNvcmRlZCB1bnRpbCB0aGUg
ZW5kcG9pbnRlciBkZXRlY3RzIHNpbGVuY2UsCisgICAgLy8gcnVucyB0byB0aGUgbGltaXQgb3Ig
c3RvcFJlY29yZGluZyBpcyBjYWxsZWQuIFByb2dyZXNzIGluZGljYXRpb25zIGFuZCB0aGUgcmVj
b2duaXplZAorICAgIC8vIHRleHQgYXJlIHJldHVybmVkIHZpYSB0aGUgbGlzdGVuZXIgaW50ZXJm
YWNlLgorICAgIHZpcnR1YWwgYm9vbCBzdGFydFJlY29nbml0aW9uKCkgPSAwOworCisgICAgLy8g
U3RvcHMgYXVkaW8gcmVjb3JkaW5nIGFuZCBwZXJmb3JtcyByZWNvZ25pdGlvbiB3aXRoIHRoZSBh
dWRpbyByZWNvcmRlZCB1bnRpbCBub3cKKyAgICAvLyAoZG9lcyBub3QgZGlzY2FyZCBhdWRpbyku
CisgICAgdmlydHVhbCB2b2lkIHN0b3BSZWNvcmRpbmcoKSA9IDA7CisKKyAgICAvLyBDYW5jZWxz
IGFuIG9uZ29pbmcgcmVjb2duaXRpb24gYW5kIGRpc2NhcmRzIGFueSBhdWRpbyByZWNvcmRlZCBz
byBmYXIuIE5vIHBhcnRpYWwKKyAgICAvLyByZWNvZ25pdGlvbiByZXN1bHRzIGFyZSByZXR1cm5l
ZCB0byB0aGUgbGlzdGVuZXIuCisgICAgdmlydHVhbCB2b2lkIGNhbmNlbFJlY29nbml0aW9uKCkg
PSAwOworCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB+V2ViU3BlZWNoSW5wdXRDbGllbnQoKSB7
IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViU3BlZWNoSW5w
dXRDbGllbnRfaApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hJ
bnB1dENsaWVudExpc3RlbmVyLmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaElu
cHV0Q2xpZW50TGlzdGVuZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wY2RhODczZmRmNzhlYzhkMGIzY2M5ZDhj
ZWU4NTJmNzI1NjcxN2ZjCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJTcGVlY2hJbnB1dENsaWVudExpc3RlbmVyLmgKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0
cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisg
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
V2ViU3BlZWNoSW5wdXRDbGllbnRMaXN0ZW5lcl9oCisjZGVmaW5lIFdlYlNwZWVjaElucHV0Q2xp
ZW50TGlzdGVuZXJfaAorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViU3RyaW5nOwor
CisvLyBQcm92aWRlcyBhIFdlYktpdCBBUEkgY2FsbGVkIGJ5IHRoZSBlbWJlZGRlci4KK2NsYXNz
IFdlYlNwZWVjaElucHV0Q2xpZW50TGlzdGVuZXIgeworcHVibGljOgorICAgIC8vIENhbGxlZCB3
aGVuIGF1ZGlvIHJlY29yZGluZyBoYXMgY29tcGxldGVkIGFuZCByZWNvZ25pdGlvbiBvZiByZWNv
cmRlZCBhdWRpbyBiZWdhbi4KKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkaW5nQ29tcGxldGUoKSA9
IDA7CisKKyAgICAvLyBDYWxsZWQgd2hlbiB0aGVyZSBpcyBhIHZhbGlkIHJlc3VsdCBhdmFpbGFi
bGUgZnJvbSB0aGUgcmVjb2duaXplci4gTWF5IG5vdAorICAgIC8vIGJlIGNhbGxlZCBpZiB0aGUg
c3BlZWNoIGNvdWxkIG5vdCBiZSByZWNvZ25pemVkIHByb3Blcmx5IG9yIGlmIHRoZXJlIHdhcyBh
bnkgb3RoZXIKKyAgICAvLyBlcnJvcnMgaW4gdGhlIHByb2Nlc3MuCisgICAgdmlydHVhbCB2b2lk
IHNldFJlY29nbml0aW9uUmVzdWx0KGNvbnN0IFdlYlN0cmluZyYgcmVzdWx0KSA9IDA7CisKK3By
b3RlY3RlZDoKKyAgICB+V2ViU3BlZWNoSW5wdXRDbGllbnRMaXN0ZW5lcigpIHsgfQorfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJTcGVlY2hJbnB1dENsaWVudExp
c3RlbmVyX2gKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVu
dC5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3Q2xpZW50LmgKaW5kZXggMTFmYjIz
M2VkODM2YWQ5MjIwMTA2YjMwM2EwOWU0NmFmOTNiYTA5Ni4uNzYwMDkwN2FjNDYxYmIyM2QxNWRm
YmQxMWNlM2MxZDc1MmM0ZTUxZCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJWaWV3Q2xpZW50LmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3Q2xpZW50
LmgKQEAgLTU1LDYgKzU1LDcgQEAgY2xhc3MgV2ViS2V5Ym9hcmRFdmVudDsKIGNsYXNzIFdlYk5v
ZGU7CiBjbGFzcyBXZWJOb3RpZmljYXRpb25QcmVzZW50ZXI7CiBjbGFzcyBXZWJSYW5nZTsKK2Ns
YXNzIFdlYlNwZWVjaElucHV0Q2xpZW50OwogY2xhc3MgV2ViU3RvcmFnZU5hbWVzcGFjZTsKIGNs
YXNzIFdlYlVSTDsKIGNsYXNzIFdlYlZpZXc7CkBAIC0zMzMsNiArMzM0LDExIEBAIHB1YmxpYzoK
ICAgICAvLyBBY2Nlc3MgdGhlIGVtYmVkZGVyIEFQSSBmb3IgZ2VvbG9jYXRpb24gc2VydmljZXMu
CiAgICAgdmlydHVhbCBXZWJLaXQ6OldlYkdlb2xvY2F0aW9uU2VydmljZSogZ2VvbG9jYXRpb25T
ZXJ2aWNlKCkgeyByZXR1cm4gMDsgfQogCisgICAgLy8gU3BlZWNoIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvLyBB
Y2Nlc3MgdGhlIGVtYmVkZGVyIEFQSSBmb3Igc3BlZWNoIGlucHV0IHNlcnZpY2VzLgorICAgICB2
aXJ0dWFsIFdlYktpdDo6V2ViU3BlZWNoSW5wdXRDbGllbnQqIHNwZWVjaElucHV0Q2xpZW50KCkg
eyByZXR1cm4gMDsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgfldlYlZpZXdDbGllbnQoKSB7IH0KIH07
CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1NwZWVjaElucHV0Q2xpZW50SW1wbC5j
cHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1NwZWVjaElucHV0Q2xpZW50SW1wbC5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZDFmZmVkOTk5MDU4YmQ4ZDAwNGFiNDZhOWY2ZDllYmIwOGQ1YTBiOAotLS0gL2Rldi9u
dWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvU3BlZWNoSW5wdXRDbGllbnRJbXBsLmNwcApA
QCAtMCwwICsxLDg3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFs
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
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNwZWVjaElucHV0
Q2xpZW50SW1wbC5oIgorCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJX
ZWJTcGVlY2hJbnB1dENsaWVudC5oIgorI2luY2x1ZGUgIldlYlN0cmluZy5oIgorI2luY2x1ZGUg
InBhZ2UvU3BlZWNoSW5wdXRDbGllbnRMaXN0ZW5lci5oIgorCisjaWYgRU5BQkxFKElOUFVUX1NQ
RUVDSCkKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1NwZWVjaElucHV0Q2xpZW50SW1wbDo6U3Bl
ZWNoSW5wdXRDbGllbnRJbXBsKFdlYlNwZWVjaElucHV0Q2xpZW50KiBjbGllbnQpCit7CisgICAg
QVNTRVJUKGNsaWVudCk7CisgICAgbV9jbGllbnQgPSBjbGllbnQ7CisgICAgbV9jbGllbnQtPmF0
dGFjaExpc3RlbmVyKHRoaXMpOworfQorCitTcGVlY2hJbnB1dENsaWVudEltcGw6On5TcGVlY2hJ
bnB1dENsaWVudEltcGwoKQoreworICAgIG1fY2xpZW50LT5kZXRhY2hMaXN0ZW5lcih0aGlzKTsK
K30KKworYm9vbCBTcGVlY2hJbnB1dENsaWVudEltcGw6OnN0YXJ0UmVjb2duaXRpb24oV2ViQ29y
ZTo6U3BlZWNoSW5wdXRDbGllbnRMaXN0ZW5lciogbGlzdGVuZXIpCit7CisgICAgLy8gQ2FuY2Vs
IGFueSBvbmdvaW5nIHJlY29nbml0aW9uIGZpcnN0LiBObyBjYWxsYmFja3Mgd2lsbCBiZSBpc3N1
ZWQgdG8gdGhhdCBsaXN0ZW5lci4KKyAgICBpZiAobV9saXN0ZW5lcikKKyAgICAgICAgbV9jbGll
bnQtPmNhbmNlbFJlY29nbml0aW9uKCk7CisKKyAgICBtX2xpc3RlbmVyID0gbGlzdGVuZXI7Cisg
ICAgcmV0dXJuIG1fY2xpZW50LT5zdGFydFJlY29nbml0aW9uKCk7Cit9CisKK3ZvaWQgU3BlZWNo
SW5wdXRDbGllbnRJbXBsOjpzdG9wUmVjb3JkaW5nKCkKK3sKKyAgICBBU1NFUlQobV9saXN0ZW5l
cik7CisgICAgbV9jbGllbnQtPnN0b3BSZWNvcmRpbmcoKTsKK30KKwordm9pZCBTcGVlY2hJbnB1
dENsaWVudEltcGw6OnJlY29yZGluZ0NvbXBsZXRlKCkKK3sKKyAgICBBU1NFUlQobV9saXN0ZW5l
cik7CisgICAgaWYgKG1fbGlzdGVuZXIpCisgICAgICAgIG1fbGlzdGVuZXItPnJlY29yZGluZ0Nv
bXBsZXRlKCk7Cit9CisKK3ZvaWQgU3BlZWNoSW5wdXRDbGllbnRJbXBsOjpzZXRSZWNvZ25pdGlv
blJlc3VsdChjb25zdCBXZWJTdHJpbmcmIHJlc3VsdCkKK3sKKyAgICBBU1NFUlQobV9saXN0ZW5l
cik7CisgICAgaWYgKG1fbGlzdGVuZXIpCisgICAgICAgIG1fbGlzdGVuZXItPnNldFJlY29nbml0
aW9uUmVzdWx0KHJlc3VsdCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYg
Ly8gRU5BQkxFKElOUFVUX1NQRUVDSCkKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMv
U3BlZWNoSW5wdXRDbGllbnRJbXBsLmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL1NwZWVjaElucHV0
Q2xpZW50SW1wbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA3YmVmMGQ4OGU4YzE3ZmExNGI3MTQ3ZDRlMDBhNTI2
YWViZDIxYWUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1NwZWVjaElu
cHV0Q2xpZW50SW1wbC5oCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFNwZWVjaElucHV0Q2xpZW50SW1wbF9o
CisjZGVmaW5lIFNwZWVjaElucHV0Q2xpZW50SW1wbF9oCisKKyNpZiBFTkFCTEUoSU5QVVRfU1BF
RUNIKQorCisjaW5jbHVkZSAiV2ViU3BlZWNoSW5wdXRDbGllbnRMaXN0ZW5lci5oIgorI2luY2x1
ZGUgInBhZ2UvU3BlZWNoSW5wdXRDbGllbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xh
c3MgU3BlZWNoSW5wdXRDbGllbnRMaXN0ZW5lcjsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K2NsYXNzIFdlYlNwZWVjaElucHV0Q2xpZW50OworCitjbGFzcyBTcGVlY2hJbnB1dENsaWVudElt
cGwKKyAgICA6IHB1YmxpYyBXZWJDb3JlOjpTcGVlY2hJbnB1dENsaWVudCwKKyAgICAgIHB1Ymxp
YyBXZWJTcGVlY2hJbnB1dENsaWVudExpc3RlbmVyIHsKK3B1YmxpYzoKKyAgICBTcGVlY2hJbnB1
dENsaWVudEltcGwoV2ViU3BlZWNoSW5wdXRDbGllbnQqIGNsaWVudCk7CisgICAgdmlydHVhbCB+
U3BlZWNoSW5wdXRDbGllbnRJbXBsKCk7CisKKyAgICAvLyBTcGVlY2hJbnB1dENsaWVudCBtZXRo
b2RzLgorICAgIGJvb2wgc3RhcnRSZWNvZ25pdGlvbihXZWJDb3JlOjpTcGVlY2hJbnB1dENsaWVu
dExpc3RlbmVyKiBsaXN0ZW5lcik7CisgICAgdm9pZCBzdG9wUmVjb3JkaW5nKCk7CisKKyAgICAv
LyBXZWJTcGVlY2hJbnB1dENsaWVudExpc3RlbmVyIG1ldGhvZHMuCisgICAgdm9pZCByZWNvcmRp
bmdDb21wbGV0ZSgpOworICAgIHZvaWQgc2V0UmVjb2duaXRpb25SZXN1bHQoY29uc3QgV2ViU3Ry
aW5nJiByZXN1bHQpOworCitwcml2YXRlOgorICAgIFdlYlNwZWVjaElucHV0Q2xpZW50KiBtX2Ns
aWVudDsgLy8gVG8gY2FsbCBpbnRvIHRoZSBlbWJlZGRlci4KKyAgICBXZWJDb3JlOjpTcGVlY2hJ
bnB1dENsaWVudExpc3RlbmVyKiBtX2xpc3RlbmVyOyAvLyBWYWxpZCB3aGVuIHJlY29nbml0aW9u
IGlzIGluIHByb2dyZXNzLgorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gRU5BQkxFKElOUFVUX1NQRUVDSCkKKworI2VuZGlmIC8vIFNwZWVjaElucHV0Q2xpZW50SW1w
bF9oCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IDhmZDM0ZDExZDY0NjA1OWVi
NjcxYTk3ZGVmYjE1M2M2YTBjYTFkMWEuLjY5ZTZiMTY5ZjQ0NTFjZGNhNWVmMGFkYzUzMzUwOWYz
ZDVkZWNlZjQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3Bw
CisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC0yNTcsNiArMjU3
LDkgQEAgV2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKFdlYlZpZXdDbGllbnQqIGNsaWVudCwgV2Vi
RGV2VG9vbHNBZ2VudENsaWVudCogZGV2VG9vbHMKICAgICAsIG1fbGF5ZXJSZW5kZXJlcigwKQog
ICAgICwgbV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUoZmFsc2UpCiAjZW5kaWYKKyNp
ZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQorICAgICwgbV9zcGVlY2hJbnB1dENsaWVudChjbGllbnQt
PnNwZWVjaElucHV0Q2xpZW50KCkpCisjZW5kaWYKICAgICAsIG1fZ2xlczJDb250ZXh0KDApCiB7
CiAgICAgLy8gV2ViS2l0L3dpbi9XZWJWaWV3LmNwcCBkb2VzIHRoZSBzYW1lIHRoaW5nLCBleGNl
cHQgdGhleSBjYWxsIHRoZQpAQCAtMjc3LDYgKzI4MCw5IEBAIFdlYlZpZXdJbXBsOjpXZWJWaWV3
SW1wbChXZWJWaWV3Q2xpZW50KiBjbGllbnQsIFdlYkRldlRvb2xzQWdlbnRDbGllbnQqIGRldlRv
b2xzCiAKICAgICBtX3BhZ2UtPmJhY2tGb3J3YXJkTGlzdCgpLT5zZXRDbGllbnQoJm1fYmFja0Zv
cndhcmRMaXN0Q2xpZW50SW1wbCk7CiAgICAgbV9wYWdlLT5zZXRHcm91cE5hbWUocGFnZUdyb3Vw
TmFtZSk7CisjaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKKyAgICBtX3BhZ2UtPnNldFNwZWVjaElu
cHV0Q2xpZW50KCZtX3NwZWVjaElucHV0Q2xpZW50KTsKKyNlbmRpZgogCiAgICAgbV9pbnNwZWN0
b3JTZXR0aW5nc01hcC5zZXQobmV3IFNldHRpbmdzTWFwKTsKIH0KZGlmZiAtLWdpdCBhL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmll
d0ltcGwuaAppbmRleCAzMTJmMjBmNjQ3Yjk2M2RmMTA3MzY5MzJlNmU2NWQyOTIxNmJjMmFlLi4z
YWM1NmExOGI2YjE1OGMzMWE0OWNlOTUxYTNmOTZjZGVlYWUyZjgyIDEwMDY0NAotLS0gYS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5oCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2xpZW50
SW1wbC5oIgogI2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIk5v
dGlmaWNhdGlvblByZXNlbnRlckltcGwuaCIKKyNpbmNsdWRlICJTcGVlY2hJbnB1dENsaWVudElt
cGwuaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KIApAQCAtNTExLDYgKzUxMiwxMCBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgc3RhdGljIGNv
bnN0IFdlYklucHV0RXZlbnQqIG1fY3VycmVudElucHV0RXZlbnQ7CiAKKyNpZiBFTkFCTEUoSU5Q
VVRfU1BFRUNIKQorICAgIFNwZWVjaElucHV0Q2xpZW50SW1wbCBtX3NwZWVjaElucHV0Q2xpZW50
OworI2VuZGlmCisKICAgICBPd25QdHI8V2ViR0xFUzJDb250ZXh0PiBtX2dsZXMyQ29udGV4dDsK
IH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61809</attachid>
            <date>2010-07-16 08:31:15 -0700</date>
            <delta_ts>2010-07-21 13:31:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-42367-20100716163113.patch</filename>
            <type>text/plain</type>
            <size>18870</size>
            <attacher name="Satish Sampath">satish</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MTdlMDgzYThhMmVlNmZhZDM5ZjBmOWEyMmMzZTg3MTliYTgyN2EzYy4uYWVlZmE2MTIwNWEwNWQ2
NjBlZmEyMTc5ZjI3NGVlNTk4ODkyZjJjNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMC0wNy0xNSAgU2F0
aXNoIFNhbXBhdGggIDxzYXRpc2hAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBXZWJLaXQgcGx1bWJpbmcgdG8gY29ubmVj
dCBzcGVlY2ggcmVxdWVzdHMgYW5kIGNhbGxiYWNrcyBiZXR3ZWVuIFdlYkNvcmUgYW5kIHRoZSBl
bWJlZGRlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTQyMzY3CisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCB0aGUgcmVsZXZhbnQgTGF5b3V0VGVzdENv
bnRyb2xsZXIgYmluZGluZ3Mgd2lsbCBiZSBhZGRlZCBpbiB0aGUgbmV4dCBwYXRjaC4KKworICAg
ICAgICAqIHBhZ2UvU3BlZWNoSW5wdXRDbGllbnQuaDogYWRkZWQgYW4gZXh0cmEgbWV0aG9kIHRv
IG9wdGlvbmFsbHkgbGV0IHVzZXJzIHN0b3AgcmVjb3JkaW5nIG9uY2UgdGhleSBoYXZlIHNwb2tl
bi4KKwogMjAxMC0wNy0xNiAgSGFucyBXZW5uYm9yZyAgPGhhbnNAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IFN0ZXZlIEJsb2NrLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdl
L1NwZWVjaElucHV0Q2xpZW50LmggYi9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXRDbGllbnQuaApp
bmRleCBiZTY4ZjQ2Yjk4ZTFmMmE4NmJhNjU0ZTc4ZmUxMjhhYzA2ZGVjMjExLi41ZDFlZDhiZDkx
OTliYWIyOTdmODczOTgzYzg5YzQ0OGVkZTFkM2YwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2Uv
U3BlZWNoSW5wdXRDbGllbnQuaAorKysgYi9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXRDbGllbnQu
aApAQCAtNDIsNiArNDIsMTAgQEAgY2xhc3MgU3BlZWNoSW5wdXRDbGllbnQgewogcHVibGljOgog
ICAgIHZpcnR1YWwgYm9vbCBzdGFydFJlY29nbml0aW9uKFNwZWVjaElucHV0Q2xpZW50TGlzdGVu
ZXIqIGxpc3RlbmVyKSA9IDA7CiAKKyAgICAvLyBTdG9wcyBhdWRpbyByZWNvcmRpbmcgYW5kIHBl
cmZvcm1zIHJlY29nbml0aW9uIHdpdGggdGhlIGF1ZGlvIHJlY29yZGVkIHVudGlsIG5vdworICAg
IC8vIChkb2VzIG5vdCBkaXNjYXJkIGF1ZGlvKS4KKyAgICB2aXJ0dWFsIHZvaWQgc3RvcFJlY29y
ZGluZygpID0gMDsKKwogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgflNwZWVjaElucHV0Q2xpZW50
KCkgeyB9CiB9OwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggZjI1OGMyYTg3NjZkN2NlN2E5YTc3YmU5Y2ZkODU4
MjU4ODBmZDY4My4uODcwMmU0YmU5ZTEwNjc3MTMwMTkzNWIxZWM4MjBiOGVjYjgyODZmNiAxMDA2
NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTAtMDctMTUgIFNhdGlzaCBTYW1wYXRoICA8
c2F0aXNoQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgV2ViS2l0IHBsdW1iaW5nIHRvIGNvbm5lY3Qgc3BlZWNoIHJlcXVl
c3RzIGFuZCBjYWxsYmFja3MgYmV0d2VlbiBXZWJDb3JlIGFuZCB0aGUgZW1iZWRkZXIuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MjM2NworCisgICAg
ICAgIE5vIG5ldyB0ZXN0cywgdGhlIHJlbGV2YW50IExheW91dFRlc3RDb250cm9sbGVyIGJpbmRp
bmdzIGFuZCB0ZXN0cyB3aWxsIGJlIGFkZGVkIGluIHRoZSBuZXh0IHBhdGNoLgorCisgICAgICAg
ICogcHVibGljL1dlYlNwZWVjaElucHV0Q2xpZW50Lmg6IEFkZGVkIG5ldyBpbnRlcmZhY2UsIGlt
cGxlbWVudGVkIGJ5IGVtYmVkZGVyIGFuZCBjYWxsZWQgYnkgV2ViS2l0CisgICAgICAgIChXZWJL
aXQ6OldlYlNwZWVjaElucHV0Q2xpZW50Ojp+V2ViU3BlZWNoSW5wdXRDbGllbnQpOgorICAgICAg
ICAqIHB1YmxpYy9XZWJTcGVlY2hJbnB1dENsaWVudExpc3RlbmVyLmg6IEFkZGVkIG5ldyBpbnRl
cmZhY2UsIGltcGxlbWVudGVkIGJ5IFdlYktpdCBhbmQgY2FsbGVkIGJ5IGVtYmVkZGVyLgorICAg
ICAgICAoV2ViS2l0OjpXZWJTcGVlY2hJbnB1dENsaWVudExpc3RlbmVyOjp+V2ViU3BlZWNoSW5w
dXRDbGllbnRMaXN0ZW5lcik6CisgICAgICAgICogcHVibGljL1dlYlZpZXdDbGllbnQuaDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViVmlld0NsaWVudDo6c3BlZWNoSW5wdXRDbGllbnQpOiBOZXcgbWV0
aG9kIHRvIGdldCB0aGUgZW1iZWRkZXIncyBzcGVlY2ggaW5wdXQgY2xpZW50IGludGVyZmFjZS4K
KyAgICAgICAgKiBzcmMvU3BlZWNoSW5wdXRDbGllbnRJbXBsLmNwcDogQWRkZWQgbmV3IGNsYXNz
LCBpbXBsZW1lbnRhdGlvbiBvZiBhIHR3byB3YXkgY29ubmVjdG9yIGJldHdlZW4gV2ViQ29yZQor
ICAgICAgICBhbmQgdGhlIGVtYmVkZGVyIGZvciByZXF1ZXN0cyBhbmQgcmVzcG9uc2VzLgorICAg
ICAgICAoV2ViS2l0OjpTcGVlY2hJbnB1dENsaWVudEltcGw6OlNwZWVjaElucHV0Q2xpZW50SW1w
bCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaElucHV0Q2xpZW50SW1wbDo6flNwZWVjaElucHV0
Q2xpZW50SW1wbCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaElucHV0Q2xpZW50SW1wbDo6c3Rh
cnRSZWNvZ25pdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaElucHV0Q2xpZW50SW1wbDo6
c3RvcFJlY29yZGluZyk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaElucHV0Q2xpZW50SW1wbDo6
cmVjb3JkaW5nQ29tcGxldGUpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hJbnB1dENsaWVudElt
cGw6OnNldFJlY29nbml0aW9uUmVzdWx0KToKKyAgICAgICAgKiBzcmMvU3BlZWNoSW5wdXRDbGll
bnRJbXBsLmg6IEFkZGVkLgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbCk6IFBhc3Mgb24gdGhlIGFib3ZlIG1l
bnRpb25lZCBzcGVlY2ggaW5wdXQgY29ubmVjdG9yIHRvIFdlYkNvcmUuCisgICAgICAgICogc3Jj
L1dlYlZpZXdJbXBsLmg6CisKIDIwMTAtMDctMTYgIE1pa2hhaWwgTmFnYW5vdiAgPG1uYWdhbm92
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFuLgpkaWZm
IC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAgYi9XZWJLaXQvY2hyb21pdW0vV2Vi
S2l0Lmd5cAppbmRleCBkYmI5ZGRhZTdiY2JlM2ZhYmY5ZDIzY2ZmMDJhZmMxYzU4ZGI2OGE4Li4x
NzViYTRiNjhjMjNmY2E2YTI5ODY5NjAzMmY4ODVhODg3MDJmZGM4IDEwMDY0NAotLS0gYS9XZWJL
aXQvY2hyb21pdW0vV2ViS2l0Lmd5cAorKysgYi9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApA
QCAtMzM4LDYgKzMzOCw4IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9SZXNvdXJjZUhhbmRsZS5j
cHAnLAogICAgICAgICAgICAgICAgICdzcmMvU2hhcmVkV29ya2VyUmVwb3NpdG9yeS5jcHAnLAog
ICAgICAgICAgICAgICAgICdzcmMvU29ja2V0U3RyZWFtSGFuZGxlLmNwcCcsCisgICAgICAgICAg
ICAgICAgJ3NyYy9TcGVlY2hJbnB1dENsaWVudEltcGwuY3BwJywKKyAgICAgICAgICAgICAgICAn
c3JjL1NwZWVjaElucHV0Q2xpZW50SW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL1N0b3Jh
Z2VBcmVhUHJveHkuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1N0b3JhZ2VBcmVhUHJveHku
aCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9TdG9yYWdlRXZlbnREaXNwYXRjaGVyQ2hyb21pdW0u
Y3BwJywKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoSW5wdXRD
bGllbnQuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoSW5wdXRDbGllbnQuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lNjMyNWNlNjY0NzI3YmZiYzQzZjE1NWMxNzQyNDA0MTljNzVmZTlhCi0tLSAv
ZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hJbnB1dENsaWVu
dC5oCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlNwZWVjaElucHV0Q2xpZW50X2gKKyNkZWZp
bmUgV2ViU3BlZWNoSW5wdXRDbGllbnRfaAorCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJTcGVlY2hJbnB1dENsaWVudExpc3RlbmVyOwor
CisvLyBQcm92aWRlcyBhbiBlbWJlZGRlciBBUEkgY2FsbGVkIGJ5IFdlYktpdC4KK2NsYXNzIFdl
YlNwZWVjaElucHV0Q2xpZW50IHsKK3B1YmxpYzoKKyAgICAvLyBBdHRhY2hlcyBhIGxpc3RlbmVy
IHdoaWNoIHJlY2VpdmVzIGZ1dHVyZSBjYWxsYmFja3MuCisgICAgLy8gUmV0dXJucyBmYWxzZSBp
ZiBhIGxpc3RlbmVyIHdhcyBhbHJlYWR5IGF0dGFjaGVkLgorICAgIHZpcnR1YWwgYm9vbCBhdHRh
Y2hMaXN0ZW5lcihXZWJTcGVlY2hJbnB1dENsaWVudExpc3RlbmVyKikgeyBXRUJLSVRfQVNTRVJU
X05PVF9SRUFDSEVEKCk7IH0KKworICAgIC8vIERldGFjaGVzIHRoZSBsaXN0ZW5lciBmcm9tIHRo
ZSBlbWJlZGRlci4KKyAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoTGlzdGVuZXIoV2ViU3BlZWNoSW5w
dXRDbGllbnRMaXN0ZW5lciopIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisKKyAg
ICAvLyBTdGFydHMgc3BlZWNoIHJlY29nbml0aW9uLiBTcGVlY2ggd2lsbCBnZXQgcmVjb3JkZWQg
dW50aWwgdGhlIGVuZHBvaW50ZXIgZGV0ZWN0cyBzaWxlbmNlLAorICAgIC8vIHJ1bnMgdG8gdGhl
IGxpbWl0IG9yIHN0b3BSZWNvcmRpbmcgaXMgY2FsbGVkLiBQcm9ncmVzcyBpbmRpY2F0aW9ucyBh
bmQgdGhlIHJlY29nbml6ZWQKKyAgICAvLyB0ZXh0IGFyZSByZXR1cm5lZCB2aWEgdGhlIGxpc3Rl
bmVyIGludGVyZmFjZS4KKyAgICB2aXJ0dWFsIGJvb2wgc3RhcnRSZWNvZ25pdGlvbigpIHsgV0VC
S0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisKKyAgICAvLyBTdG9wcyBhdWRpbyByZWNvcmRp
bmcgYW5kIHBlcmZvcm1zIHJlY29nbml0aW9uIHdpdGggdGhlIGF1ZGlvIHJlY29yZGVkIHVudGls
IG5vdworICAgIC8vIChkb2VzIG5vdCBkaXNjYXJkIGF1ZGlvKS4KKyAgICB2aXJ0dWFsIHZvaWQg
c3RvcFJlY29yZGluZygpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisKKyAgICAv
LyBDYW5jZWxzIGFuIG9uZ29pbmcgcmVjb2duaXRpb24gYW5kIGRpc2NhcmRzIGFueSBhdWRpbyBy
ZWNvcmRlZCBzbyBmYXIuIE5vIHBhcnRpYWwKKyAgICAvLyByZWNvZ25pdGlvbiByZXN1bHRzIGFy
ZSByZXR1cm5lZCB0byB0aGUgbGlzdGVuZXIuCisgICAgdmlydHVhbCB2b2lkIGNhbmNlbFJlY29n
bml0aW9uKCkgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKworcHJvdGVjdGVkOgor
ICAgIHZpcnR1YWwgfldlYlNwZWVjaElucHV0Q2xpZW50KCkgeyB9Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYlNwZWVjaElucHV0Q2xpZW50X2gKZGlmZiAtLWdp
dCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoSW5wdXRDbGllbnRMaXN0ZW5lci5o
IGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hJbnB1dENsaWVudExpc3RlbmVyLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMmEwYmZlZjA3NzNlOWQyMzM1NjFhNGQ4MjUyM2Q5MDRjZWRhZjI4OAotLS0g
L2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoSW5wdXRDbGll
bnRMaXN0ZW5lci5oCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlNwZWVjaElucHV0Q2xpZW50
TGlzdGVuZXJfaAorI2RlZmluZSBXZWJTcGVlY2hJbnB1dENsaWVudExpc3RlbmVyX2gKKworI2lu
Y2x1ZGUgIldlYkNvbW1vbi5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViU3Ry
aW5nOworCisvLyBQcm92aWRlcyBhIFdlYktpdCBBUEkgY2FsbGVkIGJ5IHRoZSBlbWJlZGRlci4K
K2NsYXNzIFdlYlNwZWVjaElucHV0Q2xpZW50TGlzdGVuZXIgeworcHVibGljOgorICAgIC8vIENh
bGxlZCB3aGVuIGF1ZGlvIHJlY29yZGluZyBoYXMgY29tcGxldGVkIGFuZCByZWNvZ25pdGlvbiBv
ZiByZWNvcmRlZCBhdWRpbyBiZWdhbi4KKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkaW5nQ29tcGxl
dGUoKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorCisgICAgLy8gQ2FsbGVkIHdo
ZW4gdGhlcmUgaXMgYSB2YWxpZCByZXN1bHQgYXZhaWxhYmxlIGZyb20gdGhlIHJlY29nbml6ZXIu
IE1heSBub3QKKyAgICAvLyBiZSBjYWxsZWQgaWYgdGhlIHNwZWVjaCBjb3VsZCBub3QgYmUgcmVj
b2duaXplZCBwcm9wZXJseSBvciBpZiB0aGVyZSB3YXMgYW55IG90aGVyCisgICAgLy8gZXJyb3Jz
IGluIHRoZSBwcm9jZXNzLgorICAgIHZpcnR1YWwgdm9pZCBzZXRSZWNvZ25pdGlvblJlc3VsdChj
b25zdCBXZWJTdHJpbmcmKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorCitwcm90
ZWN0ZWQ6CisgICAgfldlYlNwZWVjaElucHV0Q2xpZW50TGlzdGVuZXIoKSB7IH0KK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViU3BlZWNoSW5wdXRDbGllbnRMaXN0
ZW5lcl9oCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQu
aCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5oCmluZGV4IDExZmIyMzNl
ZDgzNmFkOTIyMDEwNmIzMDNhMDllNDZhZjkzYmEwOTYuLjc2MDA5MDdhYzQ2MWJiMjNkMTVkZmJk
MTFjZTNjMWQ3NTJjNGU1MWQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
Vmlld0NsaWVudC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5o
CkBAIC01NSw2ICs1NSw3IEBAIGNsYXNzIFdlYktleWJvYXJkRXZlbnQ7CiBjbGFzcyBXZWJOb2Rl
OwogY2xhc3MgV2ViTm90aWZpY2F0aW9uUHJlc2VudGVyOwogY2xhc3MgV2ViUmFuZ2U7CitjbGFz
cyBXZWJTcGVlY2hJbnB1dENsaWVudDsKIGNsYXNzIFdlYlN0b3JhZ2VOYW1lc3BhY2U7CiBjbGFz
cyBXZWJVUkw7CiBjbGFzcyBXZWJWaWV3OwpAQCAtMzMzLDYgKzMzNCwxMSBAQCBwdWJsaWM6CiAg
ICAgLy8gQWNjZXNzIHRoZSBlbWJlZGRlciBBUEkgZm9yIGdlb2xvY2F0aW9uIHNlcnZpY2VzLgog
ICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJHZW9sb2NhdGlvblNlcnZpY2UqIGdlb2xvY2F0aW9uU2Vy
dmljZSgpIHsgcmV0dXJuIDA7IH0KIAorICAgIC8vIFNwZWVjaCAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLy8gQWNj
ZXNzIHRoZSBlbWJlZGRlciBBUEkgZm9yIHNwZWVjaCBpbnB1dCBzZXJ2aWNlcy4KKyAgICAgdmly
dHVhbCBXZWJLaXQ6OldlYlNwZWVjaElucHV0Q2xpZW50KiBzcGVlY2hJbnB1dENsaWVudCgpIHsg
cmV0dXJuIDA7IH0KKwogcHJvdGVjdGVkOgogICAgIH5XZWJWaWV3Q2xpZW50KCkgeyB9CiB9Owpk
aWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9TcGVlY2hJbnB1dENsaWVudEltcGwuY3Bw
IGIvV2ViS2l0L2Nocm9taXVtL3NyYy9TcGVlY2hJbnB1dENsaWVudEltcGwuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmE3ZGJhN2M3MjA4ZDZhMDE2NTY2ZDk3Njk5YjIxOWNhMmUxZmEyYzUKLS0tIC9kZXYvbnVs
bAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1NwZWVjaElucHV0Q2xpZW50SW1wbC5jcHAKQEAg
LTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwg
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
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTcGVlY2hJbnB1dENs
aWVudEltcGwuaCIKKworI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSAiV2Vi
U3BlZWNoSW5wdXRDbGllbnQuaCIKKyNpbmNsdWRlICJXZWJTdHJpbmcuaCIKKyNpbmNsdWRlICJw
YWdlL1NwZWVjaElucHV0Q2xpZW50TGlzdGVuZXIuaCIKKworI2lmIEVOQUJMRShJTlBVVF9TUEVF
Q0gpCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitTcGVlY2hJbnB1dENsaWVudEltcGw6OlNwZWVj
aElucHV0Q2xpZW50SW1wbChXZWJTcGVlY2hJbnB1dENsaWVudCogY2xpZW50KQorICAgIDogbV9j
bGllbnQoY2xpZW50KQoreworICAgIEFTU0VSVChtX2NsaWVudCk7CisgICAgbV9jbGllbnQtPmF0
dGFjaExpc3RlbmVyKHRoaXMpOworfQorCitTcGVlY2hJbnB1dENsaWVudEltcGw6On5TcGVlY2hJ
bnB1dENsaWVudEltcGwoKQoreworICAgIG1fY2xpZW50LT5kZXRhY2hMaXN0ZW5lcih0aGlzKTsK
K30KKworYm9vbCBTcGVlY2hJbnB1dENsaWVudEltcGw6OnN0YXJ0UmVjb2duaXRpb24oV2ViQ29y
ZTo6U3BlZWNoSW5wdXRDbGllbnRMaXN0ZW5lciogbGlzdGVuZXIpCit7CisgICAgLy8gQ2FuY2Vs
IGFueSBvbmdvaW5nIHJlY29nbml0aW9uIGZpcnN0LiBObyBjYWxsYmFja3Mgd2lsbCBiZSBpc3N1
ZWQgdG8gdGhhdCBsaXN0ZW5lci4KKyAgICBpZiAobV9saXN0ZW5lcikKKyAgICAgICAgbV9jbGll
bnQtPmNhbmNlbFJlY29nbml0aW9uKCk7CisKKyAgICBtX2xpc3RlbmVyID0gbGlzdGVuZXI7Cisg
ICAgcmV0dXJuIG1fY2xpZW50LT5zdGFydFJlY29nbml0aW9uKCk7Cit9CisKK3ZvaWQgU3BlZWNo
SW5wdXRDbGllbnRJbXBsOjpzdG9wUmVjb3JkaW5nKCkKK3sKKyAgICBBU1NFUlQobV9saXN0ZW5l
cik7CisgICAgbV9jbGllbnQtPnN0b3BSZWNvcmRpbmcoKTsKK30KKwordm9pZCBTcGVlY2hJbnB1
dENsaWVudEltcGw6OnJlY29yZGluZ0NvbXBsZXRlKCkKK3sKKyAgICBBU1NFUlQobV9saXN0ZW5l
cik7CisgICAgaWYgKG1fbGlzdGVuZXIpCisgICAgICAgIG1fbGlzdGVuZXItPnJlY29yZGluZ0Nv
bXBsZXRlKCk7CisgICAgbV9saXN0ZW5lciA9IDA7Cit9CisKK3ZvaWQgU3BlZWNoSW5wdXRDbGll
bnRJbXBsOjpzZXRSZWNvZ25pdGlvblJlc3VsdChjb25zdCBXZWJTdHJpbmcmIHJlc3VsdCkKK3sK
KyAgICBBU1NFUlQobV9saXN0ZW5lcik7CisgICAgaWYgKG1fbGlzdGVuZXIpCisgICAgICAgIG1f
bGlzdGVuZXItPnNldFJlY29nbml0aW9uUmVzdWx0KHJlc3VsdCk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKElOUFVUX1NQRUVDSCkKZGlmZiAtLWdpdCBh
L1dlYktpdC9jaHJvbWl1bS9zcmMvU3BlZWNoSW5wdXRDbGllbnRJbXBsLmggYi9XZWJLaXQvY2hy
b21pdW0vc3JjL1NwZWVjaElucHV0Q2xpZW50SW1wbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYzNjcyYmZjNjY4
MzE2MTg0NTAxYzM0ZGExNjZhZTQxZmUxMDg4ODIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQv
Y2hyb21pdW0vc3JjL1NwZWVjaElucHV0Q2xpZW50SW1wbC5oCkBAIC0wLDAgKzEsNzEgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJp
YnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFNw
ZWVjaElucHV0Q2xpZW50SW1wbF9oCisjZGVmaW5lIFNwZWVjaElucHV0Q2xpZW50SW1wbF9oCisK
KyNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQorCisjaW5jbHVkZSAiV2ViU3BlZWNoSW5wdXRDbGll
bnRMaXN0ZW5lci5oIgorI2luY2x1ZGUgInBhZ2UvU3BlZWNoSW5wdXRDbGllbnQuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgU3BlZWNoSW5wdXRDbGllbnRMaXN0ZW5lcjsKK30KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlNwZWVjaElucHV0Q2xpZW50OworCitjbGFz
cyBTcGVlY2hJbnB1dENsaWVudEltcGwKKyAgICA6IHB1YmxpYyBXZWJDb3JlOjpTcGVlY2hJbnB1
dENsaWVudCwKKyAgICAgIHB1YmxpYyBXZWJTcGVlY2hJbnB1dENsaWVudExpc3RlbmVyIHsKK3B1
YmxpYzoKKyAgICBTcGVlY2hJbnB1dENsaWVudEltcGwoV2ViU3BlZWNoSW5wdXRDbGllbnQqKTsK
KyAgICB2aXJ0dWFsIH5TcGVlY2hJbnB1dENsaWVudEltcGwoKTsKKworICAgIC8vIFNwZWVjaElu
cHV0Q2xpZW50IG1ldGhvZHMuCisgICAgYm9vbCBzdGFydFJlY29nbml0aW9uKFdlYkNvcmU6OlNw
ZWVjaElucHV0Q2xpZW50TGlzdGVuZXIqKTsKKyAgICB2b2lkIHN0b3BSZWNvcmRpbmcoKTsKKwor
ICAgIC8vIFdlYlNwZWVjaElucHV0Q2xpZW50TGlzdGVuZXIgbWV0aG9kcy4KKyAgICB2b2lkIHJl
Y29yZGluZ0NvbXBsZXRlKCk7CisgICAgdm9pZCBzZXRSZWNvZ25pdGlvblJlc3VsdChjb25zdCBX
ZWJTdHJpbmcmKTsKKworcHJpdmF0ZToKKyAgICBXZWJTcGVlY2hJbnB1dENsaWVudCogbV9jbGll
bnQ7IC8vIFRvIGNhbGwgaW50byB0aGUgZW1iZWRkZXIuCisgICAgV2ViQ29yZTo6U3BlZWNoSW5w
dXRDbGllbnRMaXN0ZW5lciogbV9saXN0ZW5lcjsgLy8gVmFsaWQgd2hlbiByZWNvZ25pdGlvbiBp
cyBpbiBwcm9ncmVzcy4KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8g
RU5BQkxFKElOUFVUX1NQRUVDSCkKKworI2VuZGlmIC8vIFNwZWVjaElucHV0Q2xpZW50SW1wbF9o
CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IDNiODFiMmM4MzMxYjhlZmNhNTIz
ZTA5NzA1YTU4NTU4MzE1OWQxNzcuLjcwYzE1NTIyYTZmOTdjOTkzMjlhM2QwODhkYzA3MjFmODZk
OWM5NjIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisr
KyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC0yNTgsNiArMjU4LDkg
QEAgV2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKFdlYlZpZXdDbGllbnQqIGNsaWVudCwgV2ViRGV2
VG9vbHNBZ2VudENsaWVudCogZGV2VG9vbHMKICAgICAsIG1fbGF5ZXJSZW5kZXJlcigwKQogICAg
ICwgbV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUoZmFsc2UpCiAjZW5kaWYKKyNpZiBF
TkFCTEUoSU5QVVRfU1BFRUNIKQorICAgICwgbV9zcGVlY2hJbnB1dENsaWVudChjbGllbnQtPnNw
ZWVjaElucHV0Q2xpZW50KCkpCisjZW5kaWYKICAgICAsIG1fZ2xlczJDb250ZXh0KDApCiB7CiAg
ICAgLy8gV2ViS2l0L3dpbi9XZWJWaWV3LmNwcCBkb2VzIHRoZSBzYW1lIHRoaW5nLCBleGNlcHQg
dGhleSBjYWxsIHRoZQpAQCAtMjc4LDYgKzI4MSw5IEBAIFdlYlZpZXdJbXBsOjpXZWJWaWV3SW1w
bChXZWJWaWV3Q2xpZW50KiBjbGllbnQsIFdlYkRldlRvb2xzQWdlbnRDbGllbnQqIGRldlRvb2xz
CiAKICAgICBtX3BhZ2UtPmJhY2tGb3J3YXJkTGlzdCgpLT5zZXRDbGllbnQoJm1fYmFja0Zvcndh
cmRMaXN0Q2xpZW50SW1wbCk7CiAgICAgbV9wYWdlLT5zZXRHcm91cE5hbWUocGFnZUdyb3VwTmFt
ZSk7CisjaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKKyAgICBtX3BhZ2UtPnNldFNwZWVjaElucHV0
Q2xpZW50KCZtX3NwZWVjaElucHV0Q2xpZW50KTsKKyNlbmRpZgogCiAgICAgbV9pbnNwZWN0b3JT
ZXR0aW5nc01hcC5zZXQobmV3IFNldHRpbmdzTWFwKTsKIH0KZGlmZiAtLWdpdCBhL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0lt
cGwuaAppbmRleCAzMTJmMjBmNjQ3Yjk2M2RmMTA3MzY5MzJlNmU2NWQyOTIxNmJjMmFlLi4zYWM1
NmExOGI2YjE1OGMzMWE0OWNlOTUxYTNmOTZjZGVlYWUyZjgyIDEwMDY0NAotLS0gYS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJW
aWV3SW1wbC5oCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2xpZW50SW1w
bC5oIgogI2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIk5vdGlm
aWNhdGlvblByZXNlbnRlckltcGwuaCIKKyNpbmNsdWRlICJTcGVlY2hJbnB1dENsaWVudEltcGwu
aCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
IApAQCAtNTExLDYgKzUxMiwxMCBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgc3RhdGljIGNvbnN0
IFdlYklucHV0RXZlbnQqIG1fY3VycmVudElucHV0RXZlbnQ7CiAKKyNpZiBFTkFCTEUoSU5QVVRf
U1BFRUNIKQorICAgIFNwZWVjaElucHV0Q2xpZW50SW1wbCBtX3NwZWVjaElucHV0Q2xpZW50Owor
I2VuZGlmCisKICAgICBPd25QdHI8V2ViR0xFUzJDb250ZXh0PiBtX2dsZXMyQ29udGV4dDsKIH07
CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62225</attachid>
            <date>2010-07-21 13:31:42 -0700</date>
            <delta_ts>2010-07-23 09:18:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-42367-20100721213140.patch</filename>
            <type>text/plain</type>
            <size>24436</size>
            <attacher name="Satish Sampath">satish</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NDAxNzEwMTgyMTllNWQzMWYyYzY5YWUzODI3ZTIyYWFjNTZjYTI1ZS4uY2ViMDkzMGFiNWZkYzkz
OTA3ZGZmNzY2NTU5ZjQ2YzNkMjk2NDkwNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMC0wNy0xNSAgU2F0
aXNoIFNhbXBhdGggIDxzYXRpc2hAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBXZWJLaXQgcGx1bWJpbmcgdG8gY29ubmVj
dCBzcGVlY2ggcmVxdWVzdHMgYW5kIGNhbGxiYWNrcyBiZXR3ZWVuIFdlYkNvcmUgYW5kIHRoZSBl
bWJlZGRlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTQyMzY3CisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCB0aGUgcmVsZXZhbnQgTGF5b3V0VGVzdENv
bnRyb2xsZXIgYmluZGluZ3Mgd2lsbCBiZSBhZGRlZCBpbiB0aGUgbmV4dCBwYXRjaC4KKworICAg
ICAgICAqIHBhZ2UvU3BlZWNoSW5wdXQuY3BwOiByZW5hbWVkIGEgbWV0aG9kLgorICAgICAgICAq
IHBhZ2UvU3BlZWNoSW5wdXQuaDogcmVuYW1lZCBhIG1ldGhvZC4KKyAgICAgICAgKiBwYWdlL1Nw
ZWVjaElucHV0Q2xpZW50Lmg6IGFkZGVkIGFuIGV4dHJhIG1ldGhvZCB0byBvcHRpb25hbGx5IGxl
dCB1c2VycyBzdG9wIHJlY29yZGluZyBvbmNlIHRoZXkgaGF2ZSBzcG9rZW4uCisgICAgICAgICog
cGFnZS9TcGVlY2hJbnB1dENsaWVudExpc3RlbmVyLmg6IHJlbmFtZWQgYSBtZXRob2QuCisgICAg
ICAgICogcGFnZS9TcGVlY2hJbnB1dExpc3RlbmVyLmg6IHJlbmFtZWQgYSBtZXRob2QuCisKIDIw
MTAtMDctMjEgIFRvbnkgR2VudGlsY29yZSAgPHRvbnlnQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBVbnJldmlld2VkIGJ1aWxkIGZpeC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9TcGVlY2hJ
bnB1dC5jcHAgYi9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXQuY3BwCmluZGV4IDkyZGY3MGU0N2Rl
NDI3M2M0ODZhYThlZWRiMGU4YzhmNGVlNTQ3N2IuLmVjMzM4YzllOWU2ODI2MjRjZTMwNGE0YTc5
NWIyYzY0Mzk2Y2I1NWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dC5jcHAK
KysrIGIvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0LmNwcApAQCAtNDUsOSArNDUsOSBAQCBTcGVl
Y2hJbnB1dDo6U3BlZWNoSW5wdXQoU3BlZWNoSW5wdXRDbGllbnQqIGNsaWVudCwgU3BlZWNoSW5w
dXRMaXN0ZW5lciogbGlzdGVuZQogewogfQogCi12b2lkIFNwZWVjaElucHV0OjpyZWNvcmRpbmdD
b21wbGV0ZSgpCit2b2lkIFNwZWVjaElucHV0OjpkaWRDb21wbGV0ZVJlY29yZGluZygpCiB7Ci0g
ICAgbV9saXN0ZW5lci0+cmVjb3JkaW5nQ29tcGxldGUoKTsKKyAgICBtX2xpc3RlbmVyLT5kaWRD
b21wbGV0ZVJlY29yZGluZygpOwogfQogCiB2b2lkIFNwZWVjaElucHV0OjpzZXRSZWNvZ25pdGlv
blJlc3VsdChjb25zdCBTdHJpbmcmIHJlc3VsdCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9T
cGVlY2hJbnB1dC5oIGIvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0LmgKaW5kZXggMjAxYmU5OTEw
YTJjNmNhMmRlMGQ3NTA3YzFhMjEzY2Q3OTY3Njc0OC4uODA5OGY2NzZkZDA0MjNlOTlkZTQwM2Q3
Zjc1MGEyNDU0MmRkYzE0NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0LmgK
KysrIGIvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0LmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgYm9vbCBzdGFydFJlY29nbml0aW9uKCk7CiAKICAgICAvLyBTcGVlY2hJ
bnB1dENsaWVudDo6TGlzdGVuZXIgbWV0aG9kcy4KLSAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkaW5n
Q29tcGxldGUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVSZWNvcmRpbmcoKTsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0UmVjb2duaXRpb25SZXN1bHQoY29uc3QgU3RyaW5nJik7CiAKIHBy
b3RlY3RlZDoKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dENsaWVudC5oIGIv
V2ViQ29yZS9wYWdlL1NwZWVjaElucHV0Q2xpZW50LmgKaW5kZXggYmU2OGY0NmI5OGUxZjJhODZi
YTY1NGU3OGZlMTI4YWMwNmRlYzIxMS4uNWQxZWQ4YmQ5MTk5YmFiMjk3Zjg3Mzk4M2M4OWM0NDhl
ZGUxZDNmMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0Q2xpZW50LmgKKysr
IGIvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0Q2xpZW50LmgKQEAgLTQyLDYgKzQyLDEwIEBAIGNs
YXNzIFNwZWVjaElucHV0Q2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc3RhcnRS
ZWNvZ25pdGlvbihTcGVlY2hJbnB1dENsaWVudExpc3RlbmVyKiBsaXN0ZW5lcikgPSAwOwogCisg
ICAgLy8gU3RvcHMgYXVkaW8gcmVjb3JkaW5nIGFuZCBwZXJmb3JtcyByZWNvZ25pdGlvbiB3aXRo
IHRoZSBhdWRpbyByZWNvcmRlZCB1bnRpbCBub3cKKyAgICAvLyAoZG9lcyBub3QgZGlzY2FyZCBh
dWRpbykuCisgICAgdmlydHVhbCB2b2lkIHN0b3BSZWNvcmRpbmcoKSA9IDA7CisKIHByb3RlY3Rl
ZDoKICAgICB2aXJ0dWFsIH5TcGVlY2hJbnB1dENsaWVudCgpIHsgfQogfTsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dENsaWVudExpc3RlbmVyLmggYi9XZWJDb3JlL3BhZ2Uv
U3BlZWNoSW5wdXRDbGllbnRMaXN0ZW5lci5oCmluZGV4IGE5YTg5N2U0YjJjN2Y3MTE0NWJmMzU2
ZTkzNzdjODMxZjI4YzUyZjguLjQ4M2YyNjFhMTM2MTVmNTliZDBmNTk4ODRhOTViM2NjMDA0ZGVh
N2YgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dENsaWVudExpc3RlbmVyLmgK
KysrIGIvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0Q2xpZW50TGlzdGVuZXIuaApAQCAtNDAsNyAr
NDAsMTMgQEAgY2xhc3MgU3RyaW5nOwogLy8gUHJvdmlkZXMgYW4gaW50ZXJmYWNlIGZvciB0aGUg
ZW1iZWRkZXIgdG8gY2FsbCBpbnRvIFdlYkNvcmUuCiBjbGFzcyBTcGVlY2hJbnB1dENsaWVudExp
c3RlbmVyIHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkaW5nQ29tcGxldGUoKSA9
IDA7CisgICAgLy8gSW5mb3JtcyB0aGF0IGF1ZGlvIHJlY29yZGluZyBoYXMgY29tcGxldGVkIGFu
ZCByZWNvZ25pdGlvbiBpcyB1bmRlcndheS4KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVS
ZWNvcmRpbmcoKSA9IDA7CisKKyAgICAvLyBHaXZlcyByZXN1bHRzIGZyb20gc3BlZWNoIHJlY29n
bml0aW9uLCBlaXRoZXIgcGFydGlhbCBvciB0aGUgZmluYWwgcmVzdWx0cy4KKyAgICAvLyBUaGlz
IG1ldGhvZCBjYW4gcG90ZW50aWFsbHkgZ2V0IGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBpZiB0aGVy
ZSBhcmUgcGFydGlhbCByZXN1bHRzCisgICAgLy8gYXZhaWxhYmxlIGFzIHRoZSB1c2VyIGtlZXBz
IHNwZWFraW5nLiBJZiB0aGUgc3BlZWNoIGNvdWxkIG5vdCBiZSByZWNvZ25pemVkIHByb3Blcmx5
CisgICAgLy8gb3IgaWYgdGhlcmUgd2FzIGFueSBvdGhlciBlcnJvcnMgaW4gdGhlIHByb2Nlc3Ms
IHRoaXMgbWV0aG9kIG1heSBuZXZlciBiZSBjYWxsZWQuCiAgICAgdmlydHVhbCB2b2lkIHNldFJl
Y29nbml0aW9uUmVzdWx0KGNvbnN0IFN0cmluZyYgcmVzdWx0KSA9IDA7CiAKIHByb3RlY3RlZDoK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dExpc3RlbmVyLmggYi9XZWJDb3Jl
L3BhZ2UvU3BlZWNoSW5wdXRMaXN0ZW5lci5oCmluZGV4IGQwODdkMzY3NjhmZjliOTUzMTZmM2U3
NmU5ZWIyZDRlYmM2MjI2NTkuLjZiNGZkOWY4NDUxMmE4N2FhMzc4MjEwMTRkMjc4MTczZmZjYWE4
YjYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dExpc3RlbmVyLmgKKysrIGIv
V2ViQ29yZS9wYWdlL1NwZWVjaElucHV0TGlzdGVuZXIuaApAQCAtNDAsNyArNDAsMTMgQEAgY2xh
c3MgU3RyaW5nOwogLy8gSW50ZXJmYWNlIHRvIGJlIGltcGxlbWVudGVkIGJ5IHRoZSBlbGVtZW50
IHdoaWNoIGludm9rZXMgU3BlZWNoSW5wdXQuCiBjbGFzcyBTcGVlY2hJbnB1dExpc3RlbmVyIHsK
IHB1YmxpYzoKLSAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkaW5nQ29tcGxldGUoKSA9IDA7CisgICAg
Ly8gSW5mb3JtcyB0aGF0IGF1ZGlvIHJlY29yZGluZyBoYXMgY29tcGxldGVkIGFuZCByZWNvZ25p
dGlvbiBpcyB1bmRlcndheS4KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVSZWNvcmRpbmco
KSA9IDA7CisKKyAgICAvLyBHaXZlcyByZXN1bHRzIGZyb20gc3BlZWNoIHJlY29nbml0aW9uLCBl
aXRoZXIgcGFydGlhbCBvciB0aGUgZmluYWwgcmVzdWx0cy4KKyAgICAvLyBUaGlzIG1ldGhvZCBj
YW4gcG90ZW50aWFsbHkgZ2V0IGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBpZiB0aGVyZSBhcmUgcGFy
dGlhbCByZXN1bHRzCisgICAgLy8gYXZhaWxhYmxlIGFzIHRoZSB1c2VyIGtlZXBzIHNwZWFraW5n
LiBJZiB0aGUgc3BlZWNoIGNvdWxkIG5vdCBiZSByZWNvZ25pemVkIHByb3Blcmx5CisgICAgLy8g
b3IgaWYgdGhlcmUgd2FzIGFueSBvdGhlciBlcnJvcnMgaW4gdGhlIHByb2Nlc3MsIHRoaXMgbWV0
aG9kIG1heSBuZXZlciBiZSBjYWxsZWQuCiAgICAgdmlydHVhbCB2b2lkIHNldFJlY29nbml0aW9u
UmVzdWx0KGNvbnN0IFN0cmluZyYgcmVzdWx0KSA9IDA7CiAKIHByb3RlY3RlZDoKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAgYi9XZWJD
b3JlL3JlbmRlcmluZy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCmluZGV4IDI0ZTFkNzRl
OGU2OTA4ZTZhYjhiNGNkYWYyODcxYmZkZTkwNmJkM2MuLjljODhjMzA3NWZmNTYzZWNhMjVkYjE0
NTllNWNkZjMxNzQwMjBjZDUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRDb250
cm9sSW5uZXJFbGVtZW50cy5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dENvbnRyb2xJ
bm5lckVsZW1lbnRzLmNwcApAQCAtMzkxLDcgKzM5MSw3IEBAIFNwZWVjaElucHV0KiBJbnB1dEZp
ZWxkU3BlZWNoQnV0dG9uRWxlbWVudDo6c3BlZWNoSW5wdXQoKQogICAgIHJldHVybiBtX3NwZWVj
aElucHV0LmdldCgpOwogfQogCi12b2lkIElucHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50Ojpy
ZWNvcmRpbmdDb21wbGV0ZSgpCit2b2lkIElucHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50Ojpk
aWRDb21wbGV0ZVJlY29yZGluZygpCiB7CiAgICAgLy8gRklYTUU6IEFkZCBVSSBmZWVkYmFjayBo
ZXJlIHRvIGluZGljYXRlIHRoYXQgYXVkaW8gcmVjb3JkaW5nIHN0b3BwZWQgYW5kIHJlY29nbml0
aW9uIGlzCiAgICAgLy8gaW4gcHJvZ3Jlc3MuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmlu
Zy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRDb250
cm9sSW5uZXJFbGVtZW50cy5oCmluZGV4IDY4ZDZmZjRjNWY1MjQ0MDUxNjhiMmExMTA5MDc2ZDk2
MzBlMTBhZjAuLmQ1ZGZkNjMyYzAwNWEyYzk0ZjFjYWFiNGFhZjVhYjZiYWZjNTE2YmQgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oCisrKyBi
L1dlYkNvcmUvcmVuZGVyaW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oCkBAIC0xMjQsNyAr
MTI0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2
ZW50Kik7CiAKICAgICAvLyBTcGVlY2hJbnB1dExpc3RlbmVyIG1ldGhvZHMuCi0gICAgdm9pZCBy
ZWNvcmRpbmdDb21wbGV0ZSgpOworICAgIHZvaWQgZGlkQ29tcGxldGVSZWNvcmRpbmcoKTsKICAg
ICB2b2lkIHNldFJlY29nbml0aW9uUmVzdWx0KGNvbnN0IFN0cmluZyYgcmVzdWx0KTsKIAogcHJp
dmF0ZToKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCmluZGV4IGU5YTExMTE0ZmM4MDQ3N2Y2OGU1MjVhYTU1NzhlODEwOWE2
MDMwZmEuLjUwNWRmZDM3NDlhMGMwMjJmYmM4N2M2NGJiNWI3OGU5NDM3M2Q0NjMgMTAwNjQ0Ci0t
LSBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEwLTA3LTE1ICBTYXRpc2ggU2FtcGF0aCAgPHNhdGlz
aEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIFdlYktpdCBwbHVtYmluZyB0byBjb25uZWN0IHNwZWVjaCByZXF1ZXN0cyBh
bmQgY2FsbGJhY2tzIGJldHdlZW4gV2ViQ29yZSBhbmQgdGhlIGVtYmVkZGVyLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDIzNjcKKworICAgICAgICBO
byBuZXcgdGVzdHMsIHRoZSByZWxldmFudCBMYXlvdXRUZXN0Q29udHJvbGxlciBiaW5kaW5ncyBh
bmQgdGVzdHMgd2lsbCBiZSBhZGRlZCBpbiB0aGUgbmV4dCBwYXRjaC4KKworICAgICAgICAqIHB1
YmxpYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIuaDogQWRkZWQgbmV3IGludGVyZmFjZSwgaW1w
bGVtZW50ZWQgYnkgZW1iZWRkZXIgYW5kIGNhbGxlZCBieSBXZWJLaXQKKyAgICAgICAgKFdlYktp
dDo6V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyOjp+V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyKToK
KyAgICAgICAgKiBwdWJsaWMvV2ViU3BlZWNoSW5wdXRMaXN0ZW5lci5oOiBBZGRlZCBuZXcgaW50
ZXJmYWNlLCBpbXBsZW1lbnRlZCBieSBXZWJLaXQgYW5kIGNhbGxlZCBieSBlbWJlZGRlci4KKyAg
ICAgICAgKFdlYktpdDo6V2ViU3BlZWNoSW5wdXRMaXN0ZW5lcjo6fldlYlNwZWVjaElucHV0TGlz
dGVuZXIpOgorICAgICAgICAqIHB1YmxpYy9XZWJWaWV3Q2xpZW50Lmg6CisgICAgICAgIChXZWJL
aXQ6OldlYlZpZXdDbGllbnQ6OmNyZWF0ZVNwZWVjaElucHV0Q2xpZW50KTogTmV3IG1ldGhvZCB0
byBnZXQgdGhlIGVtYmVkZGVyJ3Mgc3BlZWNoIGlucHV0IGNsaWVudCBpbnRlcmZhY2UuCisgICAg
ICAgICogc3JjL1NwZWVjaElucHV0Q2xpZW50SW1wbC5jcHA6IEFkZGVkIG5ldyBjbGFzcywgaW1w
bGVtZW50YXRpb24gb2YgYSB0d28gd2F5IGNvbm5lY3RvciBiZXR3ZWVuIFdlYkNvcmUKKyAgICAg
ICAgYW5kIHRoZSBlbWJlZGRlciBmb3IgcmVxdWVzdHMgYW5kIHJlc3BvbnNlcy4KKyAgICAgICAg
KFdlYktpdDo6U3BlZWNoSW5wdXRDbGllbnRJbXBsOjpTcGVlY2hJbnB1dENsaWVudEltcGwpOgor
ICAgICAgICAoV2ViS2l0OjpTcGVlY2hJbnB1dENsaWVudEltcGw6On5TcGVlY2hJbnB1dENsaWVu
dEltcGwpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hJbnB1dENsaWVudEltcGw6OnN0YXJ0UmVj
b2duaXRpb24pOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hJbnB1dENsaWVudEltcGw6OnN0b3BS
ZWNvcmRpbmcpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hJbnB1dENsaWVudEltcGw6OmRpZENv
bXBsZXRlUmVjb3JkaW5nKToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoSW5wdXRDbGllbnRJbXBs
OjpzZXRSZWNvZ25pdGlvblJlc3VsdCk6CisgICAgICAgICogc3JjL1NwZWVjaElucHV0Q2xpZW50
SW1wbC5oOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwpOiBQYXNzIG9uIHRoZSBhYm92ZSBtZW50
aW9uZWQgc3BlZWNoIGlucHV0IGNvbm5lY3RvciB0byBXZWJDb3JlLgorICAgICAgICAqIHNyYy9X
ZWJWaWV3SW1wbC5oOgorCiAyMDEwLTA3LTIxICBGaW5udXIgVGhvcmFyaW5zc29uICA8ZmlubnVy
LndlYmtpdEBnbWFpbC5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292
LgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAgYi9XZWJLaXQvY2hyb21p
dW0vV2ViS2l0Lmd5cAppbmRleCBiNDdkNzU2MjZlZjRmYmZiYWM2ZWYxMDBlMTYyMjE2MTVmYzNh
NjMxLi43NmMwNDNkYTg2ODRhYmNmNTE1NWJhMzI5MmQzMDIyMDUxN2Q4MGU4IDEwMDY0NAotLS0g
YS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAorKysgYi9XZWJLaXQvY2hyb21pdW0vV2ViS2l0
Lmd5cApAQCAtMjMzLDYgKzIzMyw4IEBACiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJTb2Nr
ZXRTdHJlYW1FcnJvci5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlNvY2tldFN0cmVh
bUhhbmRsZS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlNvY2tldFN0cmVhbUhhbmRs
ZUNsaWVudC5oJywKKyAgICAgICAgICAgICAgICAncHVibGljL1dlYlNwZWVjaElucHV0Q29udHJv
bGxlci5oJywKKyAgICAgICAgICAgICAgICAncHVibGljL1dlYlNwZWVjaElucHV0TGlzdGVuZXIu
aCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJTdG9yYWdlQXJlYS5oJywKICAgICAgICAg
ICAgICAgICAncHVibGljL1dlYlN0b3JhZ2VFdmVudERpc3BhdGNoZXIuaCcsCiAgICAgICAgICAg
ICAgICAgJ3B1YmxpYy9XZWJTdG9yYWdlTmFtZXNwYWNlLmgnLApAQCAtMzM4LDYgKzM0MCw4IEBA
CiAgICAgICAgICAgICAgICAgJ3NyYy9SZXNvdXJjZUhhbmRsZS5jcHAnLAogICAgICAgICAgICAg
ICAgICdzcmMvU2hhcmVkV29ya2VyUmVwb3NpdG9yeS5jcHAnLAogICAgICAgICAgICAgICAgICdz
cmMvU29ja2V0U3RyZWFtSGFuZGxlLmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9TcGVlY2hJ
bnB1dENsaWVudEltcGwuY3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL1NwZWVjaElucHV0Q2xp
ZW50SW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL1N0b3JhZ2VBcmVhUHJveHkuY3BwJywK
ICAgICAgICAgICAgICAgICAnc3JjL1N0b3JhZ2VBcmVhUHJveHkuaCcsCiAgICAgICAgICAgICAg
ICAgJ3NyYy9TdG9yYWdlRXZlbnREaXNwYXRjaGVyQ2hyb21pdW0uY3BwJywKZGlmZiAtLWdpdCBh
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyLmggYi9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaElucHV0Q29udHJvbGxlci5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjMwM2NiZjMxMWU3NGE5NmY4M2IyNTkzNGYxN2E5MDFlNzE4MzA5NjIKLS0tIC9kZXYvbnVsbAor
KysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaElucHV0Q29udHJvbGxlci5oCkBA
IC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxs
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
TUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlNwZWVjaElucHV0Q29udHJvbGxlcl9oCisjZGVmaW5l
IFdlYlNwZWVjaElucHV0Q29udHJvbGxlcl9oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlNwZWVjaElucHV0TGlzdGVuZXI7CisKKy8v
IFByb3ZpZGVzIGFuIGVtYmVkZGVyIEFQSSBjYWxsZWQgYnkgV2ViS2l0LgorY2xhc3MgV2ViU3Bl
ZWNoSW5wdXRDb250cm9sbGVyIHsKK3B1YmxpYzoKKyAgICAvLyBTdGFydHMgc3BlZWNoIHJlY29n
bml0aW9uLiBTcGVlY2ggd2lsbCBnZXQgcmVjb3JkZWQgdW50aWwgdGhlIGVuZHBvaW50ZXIgZGV0
ZWN0cyBzaWxlbmNlLAorICAgIC8vIHJ1bnMgdG8gdGhlIGxpbWl0IG9yIHN0b3BSZWNvcmRpbmcg
aXMgY2FsbGVkLiBQcm9ncmVzcyBpbmRpY2F0aW9ucyBhbmQgdGhlIHJlY29nbml6ZWQKKyAgICAv
LyB0ZXh0IGFyZSByZXR1cm5lZCB2aWEgdGhlIGxpc3RlbmVyIGludGVyZmFjZS4KKyAgICB2aXJ0
dWFsIGJvb2wgc3RhcnRSZWNvZ25pdGlvbigpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OyB9CisKKyAgICAvLyBDYW5jZWxzIGFuIG9uZ29pbmcgcmVjb2duaXRpb24gYW5kIGRpc2NhcmRz
IGFueSBhdWRpbyByZWNvcmRlZCBzbyBmYXIuIE5vIHBhcnRpYWwKKyAgICAvLyByZWNvZ25pdGlv
biByZXN1bHRzIGFyZSByZXR1cm5lZCB0byB0aGUgbGlzdGVuZXIuCisgICAgdmlydHVhbCB2b2lk
IGNhbmNlbFJlY29nbml0aW9uKCkgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKwor
ICAgIC8vIFN0b3BzIGF1ZGlvIHJlY29yZGluZyBhbmQgcGVyZm9ybXMgcmVjb2duaXRpb24gd2l0
aCB0aGUgYXVkaW8gcmVjb3JkZWQgdW50aWwgbm93CisgICAgLy8gKGRvZXMgbm90IGRpc2NhcmQg
YXVkaW8pLiBUaGlzIGlzIGFuIG9wdGlvbmFsIGNhbGwgYW5kIGlzIHR5cGljYWxseSBpbnZva2Vk
IGlmIHRoZSB1c2VyCisgICAgLy8gd2FudHMgdG8gc3RvcCByZWNvcmRpbmcgYXVkaW8gYXMgc29v
biBhcyB0aGV5IGZpbmlzaGVkIHNwZWFraW5nLiBPdGhlcndpc2UsIHRoZSBzcGVlY2gKKyAgICAv
LyByZWNvcmRpbmcgJ2VuZHBvaW50ZXInIHNob3VsZCBkZXRlY3Qgc2lsZW5jZSBpbiB0aGUgaW5w
dXQgYW5kIHN0b3AgcmVjb3JkaW5nIGF1dG9tYXRpY2FsbHkuCisgICAgLy8gQ2FsbCBzdGFydFJl
Y29nbml0aW9uKCkgdG8gcmVjb3JkIGF1ZGlvIGFuZCByZWNvZ25pemUgc3BlZWNoIGFnYWluLgor
ICAgIHZpcnR1YWwgdm9pZCBzdG9wUmVjb3JkaW5nKCkgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFD
SEVEKCk7IH0KKworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgfldlYlNwZWVjaElucHV0Q29udHJv
bGxlcigpIHsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJT
cGVlY2hJbnB1dENvbnRyb2xsZXJfaApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJTcGVlY2hJbnB1dExpc3RlbmVyLmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNw
ZWVjaElucHV0TGlzdGVuZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41Y2E4NDlkOGI0Nzk0YTM1NDgzOTA0OWU2
Yjc0YmE0ODVjMTdhMDcxCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJTcGVlY2hJbnB1dExpc3RlbmVyLmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRp
b24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViU3Bl
ZWNoSW5wdXRMaXN0ZW5lcl9oCisjZGVmaW5lIFdlYlNwZWVjaElucHV0TGlzdGVuZXJfaAorCisj
aW5jbHVkZSAiV2ViQ29tbW9uLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJT
dHJpbmc7CisKKy8vIFByb3ZpZGVzIGEgV2ViS2l0IEFQSSBjYWxsZWQgYnkgdGhlIGVtYmVkZGVy
LgorY2xhc3MgV2ViU3BlZWNoSW5wdXRMaXN0ZW5lciB7CitwdWJsaWM6CisgICAgLy8gSW5mb3Jt
cyB0aGF0IGF1ZGlvIHJlY29yZGluZyBoYXMgY29tcGxldGVkIGFuZCByZWNvZ25pdGlvbiBpcyB1
bmRlcndheS4gVGhpcyBnZXRzIGludm9rZWQKKyAgICAvLyBpcnJlc3BlY3RpdmUgb2Ygd2hldGhl
ciByZWNvcmRpbmcgd2FzIHN0b3BwZWQgYXV0b21hdGljYWxseSBieSB0aGUgJ2VuZHBvaW50ZXIn
IG9yIGlmCisgICAgLy8gV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyOjpzdG9wUmVjb3JkaW5nKCkg
d2FzIGNhbGxlZC4KKyAgICAvLyBUeXBpY2FsbHkgYWZ0ZXIgdGhpcyBjYWxsIHRoZSBsaXN0ZW5l
ciB3b3VsZCB1cGRhdGUgdGhlIFVJIHRvIHJlZmxlY3QgdGhhdCByZWNvZ25pdGlvbiBpcworICAg
IC8vIGluIHByb2dyZXNzLgorICAgIHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0ZVJlY29yZGluZygp
ID0gMDsKKworICAgIC8vIEdpdmVzIHJlc3VsdHMgZnJvbSBzcGVlY2ggcmVjb2duaXRpb24sIGVp
dGhlciBwYXJ0aWFsIG9yIHRoZSBmaW5hbCByZXN1bHRzLgorICAgIC8vIFRoaXMgbWV0aG9kIGNh
biBwb3RlbnRpYWxseSBnZXQgY2FsbGVkIG11bHRpcGxlIHRpbWVzIGlmIHRoZXJlIGFyZSBwYXJ0
aWFsIHJlc3VsdHMKKyAgICAvLyBhdmFpbGFibGUgYXMgdGhlIHVzZXIga2VlcHMgc3BlYWtpbmcu
IElmIHRoZSBzcGVlY2ggY291bGQgbm90IGJlIHJlY29nbml6ZWQgcHJvcGVybHkKKyAgICAvLyBv
ciBpZiB0aGVyZSB3YXMgYW55IG90aGVyIGVycm9ycyBpbiB0aGUgcHJvY2VzcywgdGhpcyBtZXRo
b2QgbWF5IG5ldmVyIGJlIGNhbGxlZC4KKyAgICB2aXJ0dWFsIHZvaWQgc2V0UmVjb2duaXRpb25S
ZXN1bHQoY29uc3QgV2ViU3RyaW5nJikgPSAwOworCitwcm90ZWN0ZWQ6CisgICAgfldlYlNwZWVj
aElucHV0TGlzdGVuZXIoKSB7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5k
aWYgLy8gV2ViU3BlZWNoSW5wdXRMaXN0ZW5lcl9oCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYlZpZXdDbGllbnQuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmll
d0NsaWVudC5oCmluZGV4IDExZmIyMzNlZDgzNmFkOTIyMDEwNmIzMDNhMDllNDZhZjkzYmEwOTYu
LjY0MzQ4ZGEwOTY4ZmY4MjliMTVhZjNlZDBhZjBiM2RlMDZiMjZiZmIgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5oCisrKyBiL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViVmlld0NsaWVudC5oCkBAIC01NSw2ICs1NSw4IEBAIGNsYXNzIFdlYktleWJv
YXJkRXZlbnQ7CiBjbGFzcyBXZWJOb2RlOwogY2xhc3MgV2ViTm90aWZpY2F0aW9uUHJlc2VudGVy
OwogY2xhc3MgV2ViUmFuZ2U7CitjbGFzcyBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXI7CitjbGFz
cyBXZWJTcGVlY2hJbnB1dExpc3RlbmVyOwogY2xhc3MgV2ViU3RvcmFnZU5hbWVzcGFjZTsKIGNs
YXNzIFdlYlVSTDsKIGNsYXNzIFdlYlZpZXc7CkBAIC0zMzEsNyArMzMzLDEzIEBAIHB1YmxpYzoK
ICAgICAvLyBHZW9sb2NhdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogICAgIC8vIEFjY2VzcyB0aGUgZW1iZWRkZXIgQVBJIGZv
ciBnZW9sb2NhdGlvbiBzZXJ2aWNlcy4KLSAgICB2aXJ0dWFsIFdlYktpdDo6V2ViR2VvbG9jYXRp
b25TZXJ2aWNlKiBnZW9sb2NhdGlvblNlcnZpY2UoKSB7IHJldHVybiAwOyB9CisgICAgdmlydHVh
bCBXZWJHZW9sb2NhdGlvblNlcnZpY2UqIGdlb2xvY2F0aW9uU2VydmljZSgpIHsgcmV0dXJuIDA7
IH0KKworICAgIC8vIFNwZWVjaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLy8gQWNjZXNzIHRoZSBlbWJlZGRlciBB
UEkgZm9yIHNwZWVjaCBpbnB1dCBzZXJ2aWNlcy4KKyAgICB2aXJ0dWFsIFdlYlNwZWVjaElucHV0
Q29udHJvbGxlciogY3JlYXRlU3BlZWNoSW5wdXRDb250cm9sbGVyKAorICAgICAgICBXZWJTcGVl
Y2hJbnB1dExpc3RlbmVyKikgeyByZXR1cm4gMDsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgfldlYlZp
ZXdDbGllbnQoKSB7IH0KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvU3BlZWNoSW5w
dXRDbGllbnRJbXBsLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvU3BlZWNoSW5wdXRDbGllbnRJ
bXBsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5hNTVkMDkzZDY2ZDAzZTBmZGMxNjM3YTdkMGExY2YyNDQwNDQw
NzRjCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9TcGVlY2hJbnB1dENs
aWVudEltcGwuY3BwCkBAIC0wLDAgKzEsODcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiU3BlZWNoSW5wdXRDbGllbnRJbXBsLmgiCisKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5o
IgorI2luY2x1ZGUgIldlYlNwZWVjaElucHV0Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIldlYlN0
cmluZy5oIgorI2luY2x1ZGUgIldlYlZpZXdDbGllbnQuaCIKKyNpbmNsdWRlICJwYWdlL1NwZWVj
aElucHV0Q2xpZW50TGlzdGVuZXIuaCIKKworI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitTcGVlY2hJbnB1dENsaWVudEltcGw6OlNwZWVjaElucHV0Q2xp
ZW50SW1wbChXZWJWaWV3Q2xpZW50KiB3ZWJfdmlld19jbGllbnQpCisgICAgOiBtX2NvbnRyb2xs
ZXIod2ViX3ZpZXdfY2xpZW50LT5jcmVhdGVTcGVlY2hJbnB1dENvbnRyb2xsZXIodGhpcykpCit7
CisgICAgQVNTRVJUKG1fY29udHJvbGxlcik7Cit9CisKK1NwZWVjaElucHV0Q2xpZW50SW1wbDo6
flNwZWVjaElucHV0Q2xpZW50SW1wbCgpCit7Cit9CisKK2Jvb2wgU3BlZWNoSW5wdXRDbGllbnRJ
bXBsOjpzdGFydFJlY29nbml0aW9uKFdlYkNvcmU6OlNwZWVjaElucHV0Q2xpZW50TGlzdGVuZXIq
IGxpc3RlbmVyKQoreworICAgIC8vIENhbmNlbCBhbnkgb25nb2luZyByZWNvZ25pdGlvbiBmaXJz
dC4gTm8gY2FsbGJhY2tzIHdpbGwgYmUgaXNzdWVkIHRvIHRoYXQgbGlzdGVuZXIuCisgICAgaWYg
KG1fbGlzdGVuZXIpCisgICAgICAgIG1fY29udHJvbGxlci0+Y2FuY2VsUmVjb2duaXRpb24oKTsK
KworICAgIG1fbGlzdGVuZXIgPSBsaXN0ZW5lcjsKKyAgICByZXR1cm4gbV9jb250cm9sbGVyLT5z
dGFydFJlY29nbml0aW9uKCk7Cit9CisKK3ZvaWQgU3BlZWNoSW5wdXRDbGllbnRJbXBsOjpzdG9w
UmVjb3JkaW5nKCkKK3sKKyAgICBBU1NFUlQobV9saXN0ZW5lcik7CisgICAgbV9jb250cm9sbGVy
LT5zdG9wUmVjb3JkaW5nKCk7Cit9CisKK3ZvaWQgU3BlZWNoSW5wdXRDbGllbnRJbXBsOjpkaWRD
b21wbGV0ZVJlY29yZGluZygpCit7CisgICAgQVNTRVJUKG1fbGlzdGVuZXIpOworICAgIGlmICht
X2xpc3RlbmVyKQorICAgICAgICBtX2xpc3RlbmVyLT5kaWRDb21wbGV0ZVJlY29yZGluZygpOwor
ICAgIG1fbGlzdGVuZXIgPSAwOworfQorCit2b2lkIFNwZWVjaElucHV0Q2xpZW50SW1wbDo6c2V0
UmVjb2duaXRpb25SZXN1bHQoY29uc3QgV2ViU3RyaW5nJiByZXN1bHQpCit7CisgICAgQVNTRVJU
KG1fbGlzdGVuZXIpOworICAgIGlmIChtX2xpc3RlbmVyKQorICAgICAgICBtX2xpc3RlbmVyLT5z
ZXRSZWNvZ25pdGlvblJlc3VsdChyZXN1bHQpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
KworI2VuZGlmIC8vIEVOQUJMRShJTlBVVF9TUEVFQ0gpCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hy
b21pdW0vc3JjL1NwZWVjaElucHV0Q2xpZW50SW1wbC5oIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9T
cGVlY2hJbnB1dENsaWVudEltcGwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTY2ZGI4YmUzZTlmYTJjM2FkZWZi
NDgwM2MyMDcyNmFmMmFkOTM2Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9TcGVlY2hJbnB1dENsaWVudEltcGwuaApAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTcGVlY2hJbnB1dENs
aWVudEltcGxfaAorI2RlZmluZSBTcGVlY2hJbnB1dENsaWVudEltcGxfaAorCisjaWYgRU5BQkxF
KElOUFVUX1NQRUVDSCkKKworI2luY2x1ZGUgIldlYlNwZWVjaElucHV0TGlzdGVuZXIuaCIKKyNp
bmNsdWRlICJwYWdlL1NwZWVjaElucHV0Q2xpZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
K2NsYXNzIFNwZWVjaElucHV0Q2xpZW50TGlzdGVuZXI7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitjbGFzcyBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXI7CitjbGFzcyBXZWJWaWV3Q2xpZW50
OworCitjbGFzcyBTcGVlY2hJbnB1dENsaWVudEltcGwKKyAgICA6IHB1YmxpYyBXZWJDb3JlOjpT
cGVlY2hJbnB1dENsaWVudCwKKyAgICAgIHB1YmxpYyBXZWJTcGVlY2hJbnB1dExpc3RlbmVyIHsK
K3B1YmxpYzoKKyAgICBTcGVlY2hJbnB1dENsaWVudEltcGwoV2ViVmlld0NsaWVudCopOworICAg
IHZpcnR1YWwgflNwZWVjaElucHV0Q2xpZW50SW1wbCgpOworCisgICAgLy8gU3BlZWNoSW5wdXRD
bGllbnQgbWV0aG9kcy4KKyAgICBib29sIHN0YXJ0UmVjb2duaXRpb24oV2ViQ29yZTo6U3BlZWNo
SW5wdXRDbGllbnRMaXN0ZW5lciopOworICAgIHZvaWQgc3RvcFJlY29yZGluZygpOworCisgICAg
Ly8gV2ViU3BlZWNoSW5wdXRMaXN0ZW5lciBtZXRob2RzLgorICAgIHZvaWQgZGlkQ29tcGxldGVS
ZWNvcmRpbmcoKTsKKyAgICB2b2lkIHNldFJlY29nbml0aW9uUmVzdWx0KGNvbnN0IFdlYlN0cmlu
ZyYpOworCitwcml2YXRlOgorICAgIFdlYlNwZWVjaElucHV0Q29udHJvbGxlciogbV9jb250cm9s
bGVyOyAvLyBUbyBjYWxsIGludG8gdGhlIGVtYmVkZGVyLgorICAgIFdlYkNvcmU6OlNwZWVjaElu
cHV0Q2xpZW50TGlzdGVuZXIqIG1fbGlzdGVuZXI7IC8vIFZhbGlkIHdoZW4gcmVjb2duaXRpb24g
aXMgaW4gcHJvZ3Jlc3MuCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8v
IEVOQUJMRShJTlBVVF9TUEVFQ0gpCisKKyNlbmRpZiAvLyBTcGVlY2hJbnB1dENsaWVudEltcGxf
aApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCA4M2M4ODIyODY1YmIzZmUwOTNh
MzY2YmNiYWEwYWVlODVmNjAyMDY1Li5jM2QxNWI0MDFiYWI1OTczYTJiM2UzOGNiYjM1NTU3YWVi
MDQxZGI0IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAor
KysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtMjU4LDYgKzI1OCw5
IEBAIFdlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbChXZWJWaWV3Q2xpZW50KiBjbGllbnQsIFdlYkRl
dlRvb2xzQWdlbnRDbGllbnQqIGRldlRvb2xzCiAgICAgLCBtX2xheWVyUmVuZGVyZXIoMCkKICAg
ICAsIG1faXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKGZhbHNlKQogI2VuZGlmCisjaWYg
RU5BQkxFKElOUFVUX1NQRUVDSCkKKyAgICAsIG1fc3BlZWNoSW5wdXRDbGllbnQoY2xpZW50KQor
I2VuZGlmCiAgICAgLCBtX2dsZXMyQ29udGV4dCgwKQogewogICAgIC8vIFdlYktpdC93aW4vV2Vi
Vmlldy5jcHAgZG9lcyB0aGUgc2FtZSB0aGluZywgZXhjZXB0IHRoZXkgY2FsbCB0aGUKQEAgLTI3
OCw2ICsyODEsOSBAQCBXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwoV2ViVmlld0NsaWVudCogY2xp
ZW50LCBXZWJEZXZUb29sc0FnZW50Q2xpZW50KiBkZXZUb29scwogCiAgICAgbV9wYWdlLT5iYWNr
Rm9yd2FyZExpc3QoKS0+c2V0Q2xpZW50KCZtX2JhY2tGb3J3YXJkTGlzdENsaWVudEltcGwpOwog
ICAgIG1fcGFnZS0+c2V0R3JvdXBOYW1lKHBhZ2VHcm91cE5hbWUpOworI2lmIEVOQUJMRShJTlBV
VF9TUEVFQ0gpCisgICAgbV9wYWdlLT5zZXRTcGVlY2hJbnB1dENsaWVudCgmbV9zcGVlY2hJbnB1
dENsaWVudCk7CisjZW5kaWYKIAogICAgIG1faW5zcGVjdG9yU2V0dGluZ3NNYXAuc2V0KG5ldyBT
ZXR0aW5nc01hcCk7CiB9CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJ
bXBsLmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKaW5kZXggMzEyZjIwZjY0
N2I5NjNkZjEwNzM2OTMyZTZlNjVkMjkyMTZiYzJhZS4uM2FjNTZhMThiNmIxNThjMzFhNDljZTk1
MWEzZjk2Y2RlZWFlMmY4MiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3
SW1wbC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaApAQCAtNDcsNiAr
NDcsNyBAQAogI2luY2x1ZGUgIkluc3BlY3RvckNsaWVudEltcGwuaCIKICNpbmNsdWRlICJMYXll
clJlbmRlcmVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJOb3RpZmljYXRpb25QcmVzZW50ZXJJbXBs
LmgiCisjaW5jbHVkZSAiU3BlZWNoSW5wdXRDbGllbnRJbXBsLmgiCiAjaW5jbHVkZSA8d3RmL093
blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKQEAgLTUxMSw2ICs1MTIsMTAg
QEAgcHJpdmF0ZToKICNlbmRpZgogICAgIHN0YXRpYyBjb25zdCBXZWJJbnB1dEV2ZW50KiBtX2N1
cnJlbnRJbnB1dEV2ZW50OwogCisjaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKKyAgICBTcGVlY2hJ
bnB1dENsaWVudEltcGwgbV9zcGVlY2hJbnB1dENsaWVudDsKKyNlbmRpZgorCiAgICAgT3duUHRy
PFdlYkdMRVMyQ29udGV4dD4gbV9nbGVzMkNvbnRleHQ7CiB9OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62432</attachid>
            <date>2010-07-23 09:18:59 -0700</date>
            <delta_ts>2010-07-23 11:38:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-42367-20100723171854.patch</filename>
            <type>text/plain</type>
            <size>25187</size>
            <attacher name="Satish Sampath">satish</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OTVhMTFkNjJkY2JlZWFlOTcyOTg0N2M1ODI1NTFiZjE2NDEzMWYyMy4uNDM0ZjFiODk1ZTFjOGNh
NjY4OTMwNWQ2MTUwNThlNzY1YmUwNzg3OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMC0wNy0xNSAgU2F0
aXNoIFNhbXBhdGggIDxzYXRpc2hAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBXZWJLaXQgcGx1bWJpbmcgdG8gY29ubmVj
dCBzcGVlY2ggcmVxdWVzdHMgYW5kIGNhbGxiYWNrcyBiZXR3ZWVuIFdlYkNvcmUgYW5kIHRoZSBl
bWJlZGRlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTQyMzY3CisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCB0aGUgcmVsZXZhbnQgTGF5b3V0VGVzdENv
bnRyb2xsZXIgYmluZGluZ3Mgd2lsbCBiZSBhZGRlZCBpbiB0aGUgbmV4dCBwYXRjaC4KKworICAg
ICAgICAqIHBhZ2UvU3BlZWNoSW5wdXQuY3BwOiByZW5hbWVkIGEgbWV0aG9kLgorICAgICAgICAq
IHBhZ2UvU3BlZWNoSW5wdXQuaDogcmVuYW1lZCBhIG1ldGhvZC4KKyAgICAgICAgKiBwYWdlL1Nw
ZWVjaElucHV0Q2xpZW50Lmg6IGFkZGVkIGFuIGV4dHJhIG1ldGhvZCB0byBvcHRpb25hbGx5IGxl
dCB1c2VycyBzdG9wIHJlY29yZGluZyBvbmNlIHRoZXkgaGF2ZSBzcG9rZW4uCisgICAgICAgICog
cGFnZS9TcGVlY2hJbnB1dENsaWVudExpc3RlbmVyLmg6IHJlbmFtZWQgYSBtZXRob2QuCisgICAg
ICAgICogcGFnZS9TcGVlY2hJbnB1dExpc3RlbmVyLmg6IHJlbmFtZWQgYSBtZXRob2QuCisKIDIw
MTAtMDctMjMgIEFsZXggTWlsb3dza2kgIDxhbGV4QG1pbG93c2tpLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9TcGVlY2hJ
bnB1dC5jcHAgYi9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXQuY3BwCmluZGV4IDkyZGY3MGU0N2Rl
NDI3M2M0ODZhYThlZWRiMGU4YzhmNGVlNTQ3N2IuLmVjMzM4YzllOWU2ODI2MjRjZTMwNGE0YTc5
NWIyYzY0Mzk2Y2I1NWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dC5jcHAK
KysrIGIvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0LmNwcApAQCAtNDUsOSArNDUsOSBAQCBTcGVl
Y2hJbnB1dDo6U3BlZWNoSW5wdXQoU3BlZWNoSW5wdXRDbGllbnQqIGNsaWVudCwgU3BlZWNoSW5w
dXRMaXN0ZW5lciogbGlzdGVuZQogewogfQogCi12b2lkIFNwZWVjaElucHV0OjpyZWNvcmRpbmdD
b21wbGV0ZSgpCit2b2lkIFNwZWVjaElucHV0OjpkaWRDb21wbGV0ZVJlY29yZGluZygpCiB7Ci0g
ICAgbV9saXN0ZW5lci0+cmVjb3JkaW5nQ29tcGxldGUoKTsKKyAgICBtX2xpc3RlbmVyLT5kaWRD
b21wbGV0ZVJlY29yZGluZygpOwogfQogCiB2b2lkIFNwZWVjaElucHV0OjpzZXRSZWNvZ25pdGlv
blJlc3VsdChjb25zdCBTdHJpbmcmIHJlc3VsdCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9T
cGVlY2hJbnB1dC5oIGIvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0LmgKaW5kZXggMjAxYmU5OTEw
YTJjNmNhMmRlMGQ3NTA3YzFhMjEzY2Q3OTY3Njc0OC4uODA5OGY2NzZkZDA0MjNlOTlkZTQwM2Q3
Zjc1MGEyNDU0MmRkYzE0NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0LmgK
KysrIGIvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0LmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgYm9vbCBzdGFydFJlY29nbml0aW9uKCk7CiAKICAgICAvLyBTcGVlY2hJ
bnB1dENsaWVudDo6TGlzdGVuZXIgbWV0aG9kcy4KLSAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkaW5n
Q29tcGxldGUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVSZWNvcmRpbmcoKTsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0UmVjb2duaXRpb25SZXN1bHQoY29uc3QgU3RyaW5nJik7CiAKIHBy
b3RlY3RlZDoKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dENsaWVudC5oIGIv
V2ViQ29yZS9wYWdlL1NwZWVjaElucHV0Q2xpZW50LmgKaW5kZXggYmU2OGY0NmI5OGUxZjJhODZi
YTY1NGU3OGZlMTI4YWMwNmRlYzIxMS4uNWQxZWQ4YmQ5MTk5YmFiMjk3Zjg3Mzk4M2M4OWM0NDhl
ZGUxZDNmMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0Q2xpZW50LmgKKysr
IGIvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0Q2xpZW50LmgKQEAgLTQyLDYgKzQyLDEwIEBAIGNs
YXNzIFNwZWVjaElucHV0Q2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc3RhcnRS
ZWNvZ25pdGlvbihTcGVlY2hJbnB1dENsaWVudExpc3RlbmVyKiBsaXN0ZW5lcikgPSAwOwogCisg
ICAgLy8gU3RvcHMgYXVkaW8gcmVjb3JkaW5nIGFuZCBwZXJmb3JtcyByZWNvZ25pdGlvbiB3aXRo
IHRoZSBhdWRpbyByZWNvcmRlZCB1bnRpbCBub3cKKyAgICAvLyAoZG9lcyBub3QgZGlzY2FyZCBh
dWRpbykuCisgICAgdmlydHVhbCB2b2lkIHN0b3BSZWNvcmRpbmcoKSA9IDA7CisKIHByb3RlY3Rl
ZDoKICAgICB2aXJ0dWFsIH5TcGVlY2hJbnB1dENsaWVudCgpIHsgfQogfTsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dENsaWVudExpc3RlbmVyLmggYi9XZWJDb3JlL3BhZ2Uv
U3BlZWNoSW5wdXRDbGllbnRMaXN0ZW5lci5oCmluZGV4IGE5YTg5N2U0YjJjN2Y3MTE0NWJmMzU2
ZTkzNzdjODMxZjI4YzUyZjguLjQ4M2YyNjFhMTM2MTVmNTliZDBmNTk4ODRhOTViM2NjMDA0ZGVh
N2YgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dENsaWVudExpc3RlbmVyLmgK
KysrIGIvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0Q2xpZW50TGlzdGVuZXIuaApAQCAtNDAsNyAr
NDAsMTMgQEAgY2xhc3MgU3RyaW5nOwogLy8gUHJvdmlkZXMgYW4gaW50ZXJmYWNlIGZvciB0aGUg
ZW1iZWRkZXIgdG8gY2FsbCBpbnRvIFdlYkNvcmUuCiBjbGFzcyBTcGVlY2hJbnB1dENsaWVudExp
c3RlbmVyIHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkaW5nQ29tcGxldGUoKSA9
IDA7CisgICAgLy8gSW5mb3JtcyB0aGF0IGF1ZGlvIHJlY29yZGluZyBoYXMgY29tcGxldGVkIGFu
ZCByZWNvZ25pdGlvbiBpcyB1bmRlcndheS4KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVS
ZWNvcmRpbmcoKSA9IDA7CisKKyAgICAvLyBHaXZlcyByZXN1bHRzIGZyb20gc3BlZWNoIHJlY29n
bml0aW9uLCBlaXRoZXIgcGFydGlhbCBvciB0aGUgZmluYWwgcmVzdWx0cy4KKyAgICAvLyBUaGlz
IG1ldGhvZCBjYW4gcG90ZW50aWFsbHkgZ2V0IGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBpZiB0aGVy
ZSBhcmUgcGFydGlhbCByZXN1bHRzCisgICAgLy8gYXZhaWxhYmxlIGFzIHRoZSB1c2VyIGtlZXBz
IHNwZWFraW5nLiBJZiB0aGUgc3BlZWNoIGNvdWxkIG5vdCBiZSByZWNvZ25pemVkIHByb3Blcmx5
CisgICAgLy8gb3IgaWYgdGhlcmUgd2FzIGFueSBvdGhlciBlcnJvcnMgaW4gdGhlIHByb2Nlc3Ms
IHRoaXMgbWV0aG9kIG1heSBuZXZlciBiZSBjYWxsZWQuCiAgICAgdmlydHVhbCB2b2lkIHNldFJl
Y29nbml0aW9uUmVzdWx0KGNvbnN0IFN0cmluZyYgcmVzdWx0KSA9IDA7CiAKIHByb3RlY3RlZDoK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dExpc3RlbmVyLmggYi9XZWJDb3Jl
L3BhZ2UvU3BlZWNoSW5wdXRMaXN0ZW5lci5oCmluZGV4IGQwODdkMzY3NjhmZjliOTUzMTZmM2U3
NmU5ZWIyZDRlYmM2MjI2NTkuLjZiNGZkOWY4NDUxMmE4N2FhMzc4MjEwMTRkMjc4MTczZmZjYWE4
YjYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dExpc3RlbmVyLmgKKysrIGIv
V2ViQ29yZS9wYWdlL1NwZWVjaElucHV0TGlzdGVuZXIuaApAQCAtNDAsNyArNDAsMTMgQEAgY2xh
c3MgU3RyaW5nOwogLy8gSW50ZXJmYWNlIHRvIGJlIGltcGxlbWVudGVkIGJ5IHRoZSBlbGVtZW50
IHdoaWNoIGludm9rZXMgU3BlZWNoSW5wdXQuCiBjbGFzcyBTcGVlY2hJbnB1dExpc3RlbmVyIHsK
IHB1YmxpYzoKLSAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkaW5nQ29tcGxldGUoKSA9IDA7CisgICAg
Ly8gSW5mb3JtcyB0aGF0IGF1ZGlvIHJlY29yZGluZyBoYXMgY29tcGxldGVkIGFuZCByZWNvZ25p
dGlvbiBpcyB1bmRlcndheS4KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVSZWNvcmRpbmco
KSA9IDA7CisKKyAgICAvLyBHaXZlcyByZXN1bHRzIGZyb20gc3BlZWNoIHJlY29nbml0aW9uLCBl
aXRoZXIgcGFydGlhbCBvciB0aGUgZmluYWwgcmVzdWx0cy4KKyAgICAvLyBUaGlzIG1ldGhvZCBj
YW4gcG90ZW50aWFsbHkgZ2V0IGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBpZiB0aGVyZSBhcmUgcGFy
dGlhbCByZXN1bHRzCisgICAgLy8gYXZhaWxhYmxlIGFzIHRoZSB1c2VyIGtlZXBzIHNwZWFraW5n
LiBJZiB0aGUgc3BlZWNoIGNvdWxkIG5vdCBiZSByZWNvZ25pemVkIHByb3Blcmx5CisgICAgLy8g
b3IgaWYgdGhlcmUgd2FzIGFueSBvdGhlciBlcnJvcnMgaW4gdGhlIHByb2Nlc3MsIHRoaXMgbWV0
aG9kIG1heSBuZXZlciBiZSBjYWxsZWQuCiAgICAgdmlydHVhbCB2b2lkIHNldFJlY29nbml0aW9u
UmVzdWx0KGNvbnN0IFN0cmluZyYgcmVzdWx0KSA9IDA7CiAKIHByb3RlY3RlZDoKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAgYi9XZWJD
b3JlL3JlbmRlcmluZy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCmluZGV4IGMwZWZmYzg2
YzEzZTFhYzEzYTU0YTMwOGMwOGQzZDkzY2YxZjgyMmQuLjdjZDA4YWUyZDEyM2EwYWYwNmQxZTFl
NDI1NTFiM2RkNTRlNjgxMDkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRDb250
cm9sSW5uZXJFbGVtZW50cy5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dENvbnRyb2xJ
bm5lckVsZW1lbnRzLmNwcApAQCAtMzk3LDcgKzM5Nyw3IEBAIFNwZWVjaElucHV0KiBJbnB1dEZp
ZWxkU3BlZWNoQnV0dG9uRWxlbWVudDo6c3BlZWNoSW5wdXQoKQogICAgIHJldHVybiBtX3NwZWVj
aElucHV0LmdldCgpOwogfQogCi12b2lkIElucHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50Ojpy
ZWNvcmRpbmdDb21wbGV0ZSgpCit2b2lkIElucHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50Ojpk
aWRDb21wbGV0ZVJlY29yZGluZygpCiB7CiAgICAgLy8gRklYTUU6IEFkZCBVSSBmZWVkYmFjayBo
ZXJlIHRvIGluZGljYXRlIHRoYXQgYXVkaW8gcmVjb3JkaW5nIHN0b3BwZWQgYW5kIHJlY29nbml0
aW9uIGlzCiAgICAgLy8gaW4gcHJvZ3Jlc3MuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmlu
Zy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRDb250
cm9sSW5uZXJFbGVtZW50cy5oCmluZGV4IDY4ZDZmZjRjNWY1MjQ0MDUxNjhiMmExMTA5MDc2ZDk2
MzBlMTBhZjAuLmQ1ZGZkNjMyYzAwNWEyYzk0ZjFjYWFiNGFhZjVhYjZiYWZjNTE2YmQgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oCisrKyBi
L1dlYkNvcmUvcmVuZGVyaW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oCkBAIC0xMjQsNyAr
MTI0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2
ZW50Kik7CiAKICAgICAvLyBTcGVlY2hJbnB1dExpc3RlbmVyIG1ldGhvZHMuCi0gICAgdm9pZCBy
ZWNvcmRpbmdDb21wbGV0ZSgpOworICAgIHZvaWQgZGlkQ29tcGxldGVSZWNvcmRpbmcoKTsKICAg
ICB2b2lkIHNldFJlY29nbml0aW9uUmVzdWx0KGNvbnN0IFN0cmluZyYgcmVzdWx0KTsKIAogcHJp
dmF0ZToKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCmluZGV4IGYzYjMxYWVhOThiNmYwZjBlMTU0NmY3NjVjOGMwMDg4YWM3
YWMwYWUuLjFlOGU0NGE2ZmJkZWNlYzBhZTU2ZDEwZWViZGVkYjNlMWM5YWE1NDUgMTAwNjQ0Ci0t
LSBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEwLTA3LTE1ICBTYXRpc2ggU2FtcGF0aCAgPHNhdGlz
aEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIFdlYktpdCBwbHVtYmluZyB0byBjb25uZWN0IHNwZWVjaCByZXF1ZXN0cyBh
bmQgY2FsbGJhY2tzIGJldHdlZW4gV2ViQ29yZSBhbmQgdGhlIGVtYmVkZGVyLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDIzNjcKKworICAgICAgICBO
byBuZXcgdGVzdHMsIHRoZSByZWxldmFudCBMYXlvdXRUZXN0Q29udHJvbGxlciBiaW5kaW5ncyBh
bmQgdGVzdHMgd2lsbCBiZSBhZGRlZCBpbiB0aGUgbmV4dCBwYXRjaC4KKworICAgICAgICAqIHB1
YmxpYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIuaDogQWRkZWQgbmV3IGludGVyZmFjZSwgaW1w
bGVtZW50ZWQgYnkgZW1iZWRkZXIgYW5kIGNhbGxlZCBieSBXZWJLaXQKKyAgICAgICAgKFdlYktp
dDo6V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyOjp+V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyKToK
KyAgICAgICAgKiBwdWJsaWMvV2ViU3BlZWNoSW5wdXRMaXN0ZW5lci5oOiBBZGRlZCBuZXcgaW50
ZXJmYWNlLCBpbXBsZW1lbnRlZCBieSBXZWJLaXQgYW5kIGNhbGxlZCBieSBlbWJlZGRlci4KKyAg
ICAgICAgKFdlYktpdDo6V2ViU3BlZWNoSW5wdXRMaXN0ZW5lcjo6fldlYlNwZWVjaElucHV0TGlz
dGVuZXIpOgorICAgICAgICAqIHB1YmxpYy9XZWJWaWV3Q2xpZW50Lmg6CisgICAgICAgIChXZWJL
aXQ6OldlYlZpZXdDbGllbnQ6OmNyZWF0ZVNwZWVjaElucHV0Q2xpZW50KTogTmV3IG1ldGhvZCB0
byBnZXQgdGhlIGVtYmVkZGVyJ3Mgc3BlZWNoIGlucHV0IGNsaWVudCBpbnRlcmZhY2UuCisgICAg
ICAgICogc3JjL1NwZWVjaElucHV0Q2xpZW50SW1wbC5jcHA6IEFkZGVkIG5ldyBjbGFzcywgaW1w
bGVtZW50YXRpb24gb2YgYSB0d28gd2F5IGNvbm5lY3RvciBiZXR3ZWVuIFdlYkNvcmUKKyAgICAg
ICAgYW5kIHRoZSBlbWJlZGRlciBmb3IgcmVxdWVzdHMgYW5kIHJlc3BvbnNlcy4KKyAgICAgICAg
KFdlYktpdDo6U3BlZWNoSW5wdXRDbGllbnRJbXBsOjpTcGVlY2hJbnB1dENsaWVudEltcGwpOgor
ICAgICAgICAoV2ViS2l0OjpTcGVlY2hJbnB1dENsaWVudEltcGw6On5TcGVlY2hJbnB1dENsaWVu
dEltcGwpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hJbnB1dENsaWVudEltcGw6OnN0YXJ0UmVj
b2duaXRpb24pOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hJbnB1dENsaWVudEltcGw6OnN0b3BS
ZWNvcmRpbmcpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hJbnB1dENsaWVudEltcGw6OmRpZENv
bXBsZXRlUmVjb3JkaW5nKToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoSW5wdXRDbGllbnRJbXBs
OjpzZXRSZWNvZ25pdGlvblJlc3VsdCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaElucHV0Q2xp
ZW50SW1wbDo6ZGlkQ29tcGxldGVSZWNvZ25pdGlvbik6CisgICAgICAgICogc3JjL1NwZWVjaElu
cHV0Q2xpZW50SW1wbC5oOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwpOiBQYXNzIG9uIHRoZSBh
Ym92ZSBtZW50aW9uZWQgc3BlZWNoIGlucHV0IGNvbm5lY3RvciB0byBXZWJDb3JlLgorICAgICAg
ICAqIHNyYy9XZWJWaWV3SW1wbC5oOgorCiAyMDEwLTA3LTIzICBQYXZlbCBGZWxkbWFuICA8cGZl
bGRtYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFJldmlld2VkIGJ5IFl1
cnkgU2VtaWtoYXRza3kuCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBi
L1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4IDY2ZWY1N2VkYTBjMTE1MmI5ODg5YzA4
YTkwMjAzYzk3ZmNhYTJhYmYuLjhiMTg3OWY3NDc1ODZkZjJlNzlmNmRhY2E3YTYzZjFlNTZjMTQy
ZTQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCisrKyBiL1dlYktpdC9j
aHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC0yMzQsNiArMjM0LDggQEAKICAgICAgICAgICAgICAgICAn
cHVibGljL1dlYlNvY2tldFN0cmVhbUVycm9yLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMv
V2ViU29ja2V0U3RyZWFtSGFuZGxlLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViU29j
a2V0U3RyZWFtSGFuZGxlQ2xpZW50LmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViU3Bl
ZWNoSW5wdXRDb250cm9sbGVyLmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViU3BlZWNo
SW5wdXRMaXN0ZW5lci5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlN0b3JhZ2VBcmVh
LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5o
JywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlN0b3JhZ2VOYW1lc3BhY2UuaCcsCkBAIC0z
MzksNiArMzQxLDggQEAKICAgICAgICAgICAgICAgICAnc3JjL1Jlc291cmNlSGFuZGxlLmNwcCcs
CiAgICAgICAgICAgICAgICAgJ3NyYy9TaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmNwcCcsCiAgICAg
ICAgICAgICAgICAgJ3NyYy9Tb2NrZXRTdHJlYW1IYW5kbGUuY3BwJywKKyAgICAgICAgICAgICAg
ICAnc3JjL1NwZWVjaElucHV0Q2xpZW50SW1wbC5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMv
U3BlZWNoSW5wdXRDbGllbnRJbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvU3RvcmFnZUFy
ZWFQcm94eS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvU3RvcmFnZUFyZWFQcm94eS5oJywK
ICAgICAgICAgICAgICAgICAnc3JjL1N0b3JhZ2VFdmVudERpc3BhdGNoZXJDaHJvbWl1bS5jcHAn
LApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hJbnB1dENvbnRy
b2xsZXIuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVy
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uM2RiYTVmYjZiYjFlMmRkMWQ0YWIwOTNkMTkzZWUxY2RhZDZkZDgxMwot
LS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoSW5wdXRD
b250cm9sbGVyLmgKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
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
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViU3BlZWNoSW5wdXRDb250cm9s
bGVyX2gKKyNkZWZpbmUgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyX2gKKworI2luY2x1ZGUgIldl
YkNvbW1vbi5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8gUHJvdmlkZXMgYW4gZW1iZWRk
ZXIgQVBJIGNhbGxlZCBieSBXZWJLaXQuCitjbGFzcyBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIg
eworcHVibGljOgorICAgIC8vIFN0YXJ0cyBzcGVlY2ggcmVjb2duaXRpb24uIFNwZWVjaCB3aWxs
IGdldCByZWNvcmRlZCB1bnRpbCB0aGUgZW5kcG9pbnRlciBkZXRlY3RzIHNpbGVuY2UsCisgICAg
Ly8gcnVucyB0byB0aGUgbGltaXQgb3Igc3RvcFJlY29yZGluZyBpcyBjYWxsZWQuIFByb2dyZXNz
IGluZGljYXRpb25zIGFuZCB0aGUgcmVjb2duaXplZAorICAgIC8vIHRleHQgYXJlIHJldHVybmVk
IHZpYSB0aGUgbGlzdGVuZXIgaW50ZXJmYWNlLgorICAgIHZpcnR1YWwgYm9vbCBzdGFydFJlY29n
bml0aW9uKCkKKyAgICB7CisgICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gQ2FuY2VscyBhbiBvbmdvaW5n
IHJlY29nbml0aW9uIGFuZCBkaXNjYXJkcyBhbnkgYXVkaW8gcmVjb3JkZWQgc28gZmFyLiBObyBw
YXJ0aWFsCisgICAgLy8gcmVjb2duaXRpb24gcmVzdWx0cyBhcmUgcmV0dXJuZWQgdG8gdGhlIGxp
c3RlbmVyLgorICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxSZWNvZ25pdGlvbigpIHsgV0VCS0lUX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisKKyAgICAvLyBTdG9wcyBhdWRpbyByZWNvcmRpbmcgYW5k
IHBlcmZvcm1zIHJlY29nbml0aW9uIHdpdGggdGhlIGF1ZGlvIHJlY29yZGVkIHVudGlsIG5vdwor
ICAgIC8vIChkb2VzIG5vdCBkaXNjYXJkIGF1ZGlvKS4gVGhpcyBpcyBhbiBvcHRpb25hbCBjYWxs
IGFuZCBpcyB0eXBpY2FsbHkgaW52b2tlZCBpZiB0aGUgdXNlcgorICAgIC8vIHdhbnRzIHRvIHN0
b3AgcmVjb3JkaW5nIGF1ZGlvIGFzIHNvb24gYXMgdGhleSBmaW5pc2hlZCBzcGVha2luZy4gT3Ro
ZXJ3aXNlLCB0aGUgc3BlZWNoCisgICAgLy8gcmVjb3JkaW5nICdlbmRwb2ludGVyJyBzaG91bGQg
ZGV0ZWN0IHNpbGVuY2UgaW4gdGhlIGlucHV0IGFuZCBzdG9wIHJlY29yZGluZyBhdXRvbWF0aWNh
bGx5LgorICAgIC8vIENhbGwgc3RhcnRSZWNvZ25pdGlvbigpIHRvIHJlY29yZCBhdWRpbyBhbmQg
cmVjb2duaXplIHNwZWVjaCBhZ2Fpbi4KKyAgICB2aXJ0dWFsIHZvaWQgc3RvcFJlY29yZGluZygp
IHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0
dWFsIH5XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIoKSB7IH0KK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYgLy8gV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyX2gKZGlmZiAtLWdp
dCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoSW5wdXRMaXN0ZW5lci5oIGIvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hJbnB1dExpc3RlbmVyLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZjE3NTZhZjFlOTk5NDAwN2VhZjgxZGZlNDI5M2Y2NGVhMmVjZGUwNgotLS0gL2Rldi9udWxsCisr
KyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoSW5wdXRMaXN0ZW5lci5oCkBAIC0w
LDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1l
dDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIFdlYlNwZWVjaElucHV0TGlzdGVuZXJfaAorI2RlZmluZSBXZWJT
cGVlY2hJbnB1dExpc3RlbmVyX2gKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlN0
cmluZzsKKworLy8gUHJvdmlkZXMgYSBXZWJLaXQgQVBJIGNhbGxlZCBieSB0aGUgZW1iZWRkZXIu
CisvLyBBIHR5cGljYWwgc2VxdWVuY2Ugb2YgY2FsbHMgdG8gdGhlIGxpc3RlbmVyIHdvdWxkIGJl
CisvLyAgIDEgY2FsbCB0byBkaWRDb21wbGV0ZVJlY29yZGluZworLy8gICAwIG9yIG1vcmUgY2Fs
bHMgdG8gc2V0UmVjb2duaXRpb25SZXN1bHQKKy8vICAgMSBjYWxsIHRvIGRpZENvbXBsZXRlUmVj
b2duaXRpb24KK2NsYXNzIFdlYlNwZWVjaElucHV0TGlzdGVuZXIgeworcHVibGljOgorICAgIC8v
IEluZm9ybXMgdGhhdCBhdWRpbyByZWNvcmRpbmcgaGFzIGNvbXBsZXRlZCBhbmQgcmVjb2duaXRp
b24gaXMgdW5kZXJ3YXkuIFRoaXMgZ2V0cyBpbnZva2VkCisgICAgLy8gaXJyZXNwZWN0aXZlIG9m
IHdoZXRoZXIgcmVjb3JkaW5nIHdhcyBzdG9wcGVkIGF1dG9tYXRpY2FsbHkgYnkgdGhlICdlbmRw
b2ludGVyJyBvciBpZgorICAgIC8vIFdlYlNwZWVjaElucHV0Q29udHJvbGxlcjo6c3RvcFJlY29y
ZGluZygpIHdhcyBjYWxsZWQuCisgICAgLy8gVHlwaWNhbGx5IGFmdGVyIHRoaXMgY2FsbCB0aGUg
bGlzdGVuZXIgd291bGQgdXBkYXRlIHRoZSBVSSB0byByZWZsZWN0IHRoYXQgcmVjb2duaXRpb24g
aXMKKyAgICAvLyBpbiBwcm9ncmVzcy4KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVSZWNv
cmRpbmcoKSA9IDA7CisKKyAgICAvLyBHaXZlcyByZXN1bHRzIGZyb20gc3BlZWNoIHJlY29nbml0
aW9uLCBlaXRoZXIgcGFydGlhbCBvciB0aGUgZmluYWwgcmVzdWx0cy4KKyAgICAvLyBUaGlzIG1l
dGhvZCBjYW4gcG90ZW50aWFsbHkgZ2V0IGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBpZiB0aGVyZSBh
cmUgcGFydGlhbCByZXN1bHRzCisgICAgLy8gYXZhaWxhYmxlIGFzIHRoZSB1c2VyIGtlZXBzIHNw
ZWFraW5nLiBJZiB0aGUgc3BlZWNoIGNvdWxkIG5vdCBiZSByZWNvZ25pemVkIHByb3Blcmx5Cisg
ICAgLy8gb3IgaWYgdGhlcmUgd2FzIGFueSBvdGhlciBlcnJvcnMgaW4gdGhlIHByb2Nlc3MsIHRo
aXMgbWV0aG9kIG1heSBuZXZlciBiZSBjYWxsZWQuCisgICAgdmlydHVhbCB2b2lkIHNldFJlY29n
bml0aW9uUmVzdWx0KGNvbnN0IFdlYlN0cmluZyYpID0gMDsKKworICAgIC8vIEluZm9ybXMgdGhh
dCBzcGVlY2ggcmVjb2duaXRpb24gaGFzIGNvbXBsZXRlZC4gVGhpcyBnZXRzIGludm9rZWQgaXJy
ZXNwZWN0aXZlIG9mIHdoZXRoZXIKKyAgICAvLyByZWNvZ25pdGlvbiB3YXMgc3VjY2VzZnVsIG9y
IG5vdCwgd2hldGhlciBzZXRSZWNvZ25pdGlvblJlc3VsdCgpIHdhcyBpbnZva2VkIG9yIG5vdC4g
VGhlCisgICAgLy8gaGFuZGxlciB0eXBpY2FsbHkgZnJlZXMgdXAgYW55IHRlbXBvcmFyeSByZXNv
dXJjZXMgYWxsb2NhdGVkIGFuZCB3YWl0cyBmb3IgdGhlIG5leHQgc3BlZWNoCisgICAgLy8gcmVj
b2duaXRpb24gcmVxdWVzdC4KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVSZWNvZ25pdGlv
bigpID0gMDsKKworcHJvdGVjdGVkOgorICAgIH5XZWJTcGVlY2hJbnB1dExpc3RlbmVyKCkgeyB9
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYlNwZWVjaElucHV0
TGlzdGVuZXJfaApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3Q2xp
ZW50LmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaAppbmRleCAxMWZi
MjMzZWQ4MzZhZDkyMjAxMDZiMzAzYTA5ZTQ2YWY5M2JhMDk2Li42NDM0OGRhMDk2OGZmODI5YjE1
YWYzZWQwYWYwYjNkZTA2YjI2YmZiIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYlZpZXdDbGllbnQuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGll
bnQuaApAQCAtNTUsNiArNTUsOCBAQCBjbGFzcyBXZWJLZXlib2FyZEV2ZW50OwogY2xhc3MgV2Vi
Tm9kZTsKIGNsYXNzIFdlYk5vdGlmaWNhdGlvblByZXNlbnRlcjsKIGNsYXNzIFdlYlJhbmdlOwor
Y2xhc3MgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyOworY2xhc3MgV2ViU3BlZWNoSW5wdXRMaXN0
ZW5lcjsKIGNsYXNzIFdlYlN0b3JhZ2VOYW1lc3BhY2U7CiBjbGFzcyBXZWJVUkw7CiBjbGFzcyBX
ZWJWaWV3OwpAQCAtMzMxLDcgKzMzMywxMyBAQCBwdWJsaWM6CiAgICAgLy8gR2VvbG9jYXRpb24g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiAKICAgICAvLyBBY2Nlc3MgdGhlIGVtYmVkZGVyIEFQSSBmb3IgZ2VvbG9jYXRpb24gc2Vydmlj
ZXMuCi0gICAgdmlydHVhbCBXZWJLaXQ6OldlYkdlb2xvY2F0aW9uU2VydmljZSogZ2VvbG9jYXRp
b25TZXJ2aWNlKCkgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgV2ViR2VvbG9jYXRpb25TZXJ2
aWNlKiBnZW9sb2NhdGlvblNlcnZpY2UoKSB7IHJldHVybiAwOyB9CisKKyAgICAvLyBTcGVlY2gg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworICAgIC8vIEFjY2VzcyB0aGUgZW1iZWRkZXIgQVBJIGZvciBzcGVlY2ggaW5wdXQg
c2VydmljZXMuCisgICAgdmlydHVhbCBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIqIGNyZWF0ZVNw
ZWVjaElucHV0Q29udHJvbGxlcigKKyAgICAgICAgV2ViU3BlZWNoSW5wdXRMaXN0ZW5lciopIHsg
cmV0dXJuIDA7IH0KIAogcHJvdGVjdGVkOgogICAgIH5XZWJWaWV3Q2xpZW50KCkgeyB9CmRpZmYg
LS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1NwZWVjaElucHV0Q2xpZW50SW1wbC5jcHAgYi9X
ZWJLaXQvY2hyb21pdW0vc3JjL1NwZWVjaElucHV0Q2xpZW50SW1wbC5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
Y2Q5OWJhYzdhYThlNzBjOTVhY2Q0MDBmOTM5ODFkNTgzODViYWU2NQotLS0gL2Rldi9udWxsCisr
KyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvU3BlZWNoSW5wdXRDbGllbnRJbXBsLmNwcApAQCAtMCww
ICsxLDkzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNwZWVjaElucHV0Q2xpZW50
SW1wbC5oIgorCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJXZWJTcGVl
Y2hJbnB1dENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJXZWJTdHJpbmcuaCIKKyNpbmNsdWRlICJX
ZWJWaWV3Q2xpZW50LmgiCisjaW5jbHVkZSAicGFnZS9TcGVlY2hJbnB1dENsaWVudExpc3RlbmVy
LmgiCisKKyNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
U3BlZWNoSW5wdXRDbGllbnRJbXBsOjpTcGVlY2hJbnB1dENsaWVudEltcGwoV2ViVmlld0NsaWVu
dCogd2ViX3ZpZXdfY2xpZW50KQorICAgIDogbV9jb250cm9sbGVyKHdlYl92aWV3X2NsaWVudC0+
Y3JlYXRlU3BlZWNoSW5wdXRDb250cm9sbGVyKHRoaXMpKQorICAgICwgbV9saXN0ZW5lcigwKQor
eworICAgIEFTU0VSVChtX2NvbnRyb2xsZXIpOworfQorCitTcGVlY2hJbnB1dENsaWVudEltcGw6
On5TcGVlY2hJbnB1dENsaWVudEltcGwoKQoreworfQorCitib29sIFNwZWVjaElucHV0Q2xpZW50
SW1wbDo6c3RhcnRSZWNvZ25pdGlvbihXZWJDb3JlOjpTcGVlY2hJbnB1dENsaWVudExpc3RlbmVy
KiBsaXN0ZW5lcikKK3sKKyAgICAvLyBDYW5jZWwgYW55IG9uZ29pbmcgcmVjb2duaXRpb24gZmly
c3QuIE5vIGNhbGxiYWNrcyB3aWxsIGJlIGlzc3VlZCB0byB0aGF0IGxpc3RlbmVyLgorICAgIGlm
IChtX2xpc3RlbmVyKQorICAgICAgICBtX2NvbnRyb2xsZXItPmNhbmNlbFJlY29nbml0aW9uKCk7
CisKKyAgICBtX2xpc3RlbmVyID0gbGlzdGVuZXI7CisgICAgcmV0dXJuIG1fY29udHJvbGxlci0+
c3RhcnRSZWNvZ25pdGlvbigpOworfQorCit2b2lkIFNwZWVjaElucHV0Q2xpZW50SW1wbDo6c3Rv
cFJlY29yZGluZygpCit7CisgICAgQVNTRVJUKG1fbGlzdGVuZXIpOworICAgIG1fY29udHJvbGxl
ci0+c3RvcFJlY29yZGluZygpOworfQorCit2b2lkIFNwZWVjaElucHV0Q2xpZW50SW1wbDo6ZGlk
Q29tcGxldGVSZWNvcmRpbmcoKQoreworICAgIEFTU0VSVChtX2xpc3RlbmVyKTsKKyAgICBpZiAo
bV9saXN0ZW5lcikKKyAgICAgICAgbV9saXN0ZW5lci0+ZGlkQ29tcGxldGVSZWNvcmRpbmcoKTsK
K30KKwordm9pZCBTcGVlY2hJbnB1dENsaWVudEltcGw6OmRpZENvbXBsZXRlUmVjb2duaXRpb24o
KQoreworICAgIEFTU0VSVChtX2xpc3RlbmVyKTsKKyAgICBtX2xpc3RlbmVyID0gMDsKK30KKwor
dm9pZCBTcGVlY2hJbnB1dENsaWVudEltcGw6OnNldFJlY29nbml0aW9uUmVzdWx0KGNvbnN0IFdl
YlN0cmluZyYgcmVzdWx0KQoreworICAgIEFTU0VSVChtX2xpc3RlbmVyKTsKKyAgICBpZiAobV9s
aXN0ZW5lcikKKyAgICAgICAgbV9saXN0ZW5lci0+c2V0UmVjb2duaXRpb25SZXN1bHQocmVzdWx0
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5QVVRf
U1BFRUNIKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9TcGVlY2hJbnB1dENsaWVu
dEltcGwuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvU3BlZWNoSW5wdXRDbGllbnRJbXBsLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZmZhMjhjNzgxOTBkZjZhNDZkNDZkMjBiMGY5ZTFkZTIwNjA0ZDYxNwotLS0gL2Rl
di9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvU3BlZWNoSW5wdXRDbGllbnRJbXBsLmgK
QEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
ICogbWV0OgorICoKKyAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgU3BlZWNoSW5wdXRDbGllbnRJbXBsX2gKKyNkZWZpbmUgU3BlZWNo
SW5wdXRDbGllbnRJbXBsX2gKKworI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCisKKyNpbmNsdWRl
ICJXZWJTcGVlY2hJbnB1dExpc3RlbmVyLmgiCisjaW5jbHVkZSAicGFnZS9TcGVlY2hJbnB1dENs
aWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBTcGVlY2hJbnB1dENsaWVudExp
c3RlbmVyOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViU3BlZWNoSW5wdXRD
b250cm9sbGVyOworY2xhc3MgV2ViVmlld0NsaWVudDsKKworY2xhc3MgU3BlZWNoSW5wdXRDbGll
bnRJbXBsCisgICAgOiBwdWJsaWMgV2ViQ29yZTo6U3BlZWNoSW5wdXRDbGllbnQsCisgICAgICBw
dWJsaWMgV2ViU3BlZWNoSW5wdXRMaXN0ZW5lciB7CitwdWJsaWM6CisgICAgU3BlZWNoSW5wdXRD
bGllbnRJbXBsKFdlYlZpZXdDbGllbnQqKTsKKyAgICB2aXJ0dWFsIH5TcGVlY2hJbnB1dENsaWVu
dEltcGwoKTsKKworICAgIC8vIFNwZWVjaElucHV0Q2xpZW50IG1ldGhvZHMuCisgICAgYm9vbCBz
dGFydFJlY29nbml0aW9uKFdlYkNvcmU6OlNwZWVjaElucHV0Q2xpZW50TGlzdGVuZXIqKTsKKyAg
ICB2b2lkIHN0b3BSZWNvcmRpbmcoKTsKKworICAgIC8vIFdlYlNwZWVjaElucHV0TGlzdGVuZXIg
bWV0aG9kcy4KKyAgICB2b2lkIGRpZENvbXBsZXRlUmVjb3JkaW5nKCk7CisgICAgdm9pZCBzZXRS
ZWNvZ25pdGlvblJlc3VsdChjb25zdCBXZWJTdHJpbmcmKTsKKyAgICB2b2lkIGRpZENvbXBsZXRl
UmVjb2duaXRpb24oKTsKKworcHJpdmF0ZToKKyAgICBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIq
IG1fY29udHJvbGxlcjsgLy8gVG8gY2FsbCBpbnRvIHRoZSBlbWJlZGRlci4KKyAgICBXZWJDb3Jl
OjpTcGVlY2hJbnB1dENsaWVudExpc3RlbmVyKiBtX2xpc3RlbmVyOyAvLyBWYWxpZCB3aGVuIHJl
Y29nbml0aW9uIGlzIGluIHByb2dyZXNzLgorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
KyNlbmRpZiAvLyBFTkFCTEUoSU5QVVRfU1BFRUNIKQorCisjZW5kaWYgLy8gU3BlZWNoSW5wdXRD
bGllbnRJbXBsX2gKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwu
Y3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggYjhiODU5OTQ0
OTQwMmQxYjcwYjAyMWU2ZjkwYWVlNmEwNjJhZGMwMS4uZDhlNjlkNGVlZmJlZDNkMTM0Y2IyNmM4
ZThkMmIxY2ExMjNhYjlmOSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3
SW1wbC5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTI1
OCw2ICsyNTgsOSBAQCBXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwoV2ViVmlld0NsaWVudCogY2xp
ZW50LCBXZWJEZXZUb29sc0FnZW50Q2xpZW50KiBkZXZUb29scwogICAgICwgbV9sYXllclJlbmRl
cmVyKDApCiAgICAgLCBtX2lzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZShmYWxzZSkKICNl
bmRpZgorI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCisgICAgLCBtX3NwZWVjaElucHV0Q2xpZW50
KGNsaWVudCkKKyNlbmRpZgogICAgICwgbV9nbGVzMkNvbnRleHQoMCkKIHsKICAgICAvLyBXZWJL
aXQvd2luL1dlYlZpZXcuY3BwIGRvZXMgdGhlIHNhbWUgdGhpbmcsIGV4Y2VwdCB0aGV5IGNhbGwg
dGhlCkBAIC0yNzgsNiArMjgxLDkgQEAgV2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKFdlYlZpZXdD
bGllbnQqIGNsaWVudCwgV2ViRGV2VG9vbHNBZ2VudENsaWVudCogZGV2VG9vbHMKIAogICAgIG1f
cGFnZS0+YmFja0ZvcndhcmRMaXN0KCktPnNldENsaWVudCgmbV9iYWNrRm9yd2FyZExpc3RDbGll
bnRJbXBsKTsKICAgICBtX3BhZ2UtPnNldEdyb3VwTmFtZShwYWdlR3JvdXBOYW1lKTsKKyNpZiBF
TkFCTEUoSU5QVVRfU1BFRUNIKQorICAgIG1fcGFnZS0+c2V0U3BlZWNoSW5wdXRDbGllbnQoJm1f
c3BlZWNoSW5wdXRDbGllbnQpOworI2VuZGlmCiAKICAgICBtX2luc3BlY3RvclNldHRpbmdzTWFw
LnNldChuZXcgU2V0dGluZ3NNYXApOwogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJWaWV3SW1wbC5oIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCmluZGV4
IGQ0ZTExMTM1NDc5NmVkNTNhODE4MWI4ZGJlOTBmMTcyYTVlNGI0YzkuLmQwZmRhOTI1NzY4ZGVm
ODkwNDQ0MjVmODc4ZmE4NTA2YjU5Y2VjMWIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVmlld0ltcGwuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgK
QEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JDbGllbnRJbXBsLmgiCiAjaW5j
bHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgiCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uUHJl
c2VudGVySW1wbC5oIgorI2luY2x1ZGUgIlNwZWVjaElucHV0Q2xpZW50SW1wbC5oIgogI2luY2x1
ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCkBAIC01MTEs
NiArNTEyLDEwIEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICBzdGF0aWMgY29uc3QgV2ViSW5wdXRF
dmVudCogbV9jdXJyZW50SW5wdXRFdmVudDsKIAorI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCisg
ICAgU3BlZWNoSW5wdXRDbGllbnRJbXBsIG1fc3BlZWNoSW5wdXRDbGllbnQ7CisjZW5kaWYKKwog
ICAgIE93blB0cjxXZWJHTEVTMkNvbnRleHQ+IG1fZ2xlczJDb250ZXh0OwogfTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62451</attachid>
            <date>2010-07-23 11:38:28 -0700</date>
            <delta_ts>2010-07-26 04:53:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-42367-20100723193825.patch</filename>
            <type>text/plain</type>
            <size>25172</size>
            <attacher name="Satish Sampath">satish</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YTkyZGM3MzZkOTYwY2UzNmQ0ODIwZmEzMjU2OTIwYjVhNjFmMGJjMS4uNWI1MjFiN2ViYmFkYjVk
NzE4OGYwNWU1MmY5NTAwZTcxZjEwYTUwNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMC0wNy0xNSAgU2F0
aXNoIFNhbXBhdGggIDxzYXRpc2hAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBXZWJLaXQgcGx1bWJpbmcgdG8gY29ubmVj
dCBzcGVlY2ggcmVxdWVzdHMgYW5kIGNhbGxiYWNrcyBiZXR3ZWVuIFdlYkNvcmUgYW5kIHRoZSBl
bWJlZGRlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTQyMzY3CisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCB0aGUgcmVsZXZhbnQgTGF5b3V0VGVzdENv
bnRyb2xsZXIgYmluZGluZ3Mgd2lsbCBiZSBhZGRlZCBpbiB0aGUgbmV4dCBwYXRjaC4KKworICAg
ICAgICAqIHBhZ2UvU3BlZWNoSW5wdXQuY3BwOiByZW5hbWVkIGEgbWV0aG9kLgorICAgICAgICAq
IHBhZ2UvU3BlZWNoSW5wdXQuaDogcmVuYW1lZCBhIG1ldGhvZC4KKyAgICAgICAgKiBwYWdlL1Nw
ZWVjaElucHV0Q2xpZW50Lmg6IGFkZGVkIGFuIGV4dHJhIG1ldGhvZCB0byBvcHRpb25hbGx5IGxl
dCB1c2VycyBzdG9wIHJlY29yZGluZyBvbmNlIHRoZXkgaGF2ZSBzcG9rZW4uCisgICAgICAgICog
cGFnZS9TcGVlY2hJbnB1dENsaWVudExpc3RlbmVyLmg6IHJlbmFtZWQgYSBtZXRob2QuCisgICAg
ICAgICogcGFnZS9TcGVlY2hJbnB1dExpc3RlbmVyLmg6IHJlbmFtZWQgYSBtZXRob2QuCisKIDIw
MTAtMDctMjMgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBFcmljIFNlaWRlbC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1
dC5jcHAgYi9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXQuY3BwCmluZGV4IDkyZGY3MGU0N2RlNDI3
M2M0ODZhYThlZWRiMGU4YzhmNGVlNTQ3N2IuLmVjMzM4YzllOWU2ODI2MjRjZTMwNGE0YTc5NWIy
YzY0Mzk2Y2I1NWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dC5jcHAKKysr
IGIvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0LmNwcApAQCAtNDUsOSArNDUsOSBAQCBTcGVlY2hJ
bnB1dDo6U3BlZWNoSW5wdXQoU3BlZWNoSW5wdXRDbGllbnQqIGNsaWVudCwgU3BlZWNoSW5wdXRM
aXN0ZW5lciogbGlzdGVuZQogewogfQogCi12b2lkIFNwZWVjaElucHV0OjpyZWNvcmRpbmdDb21w
bGV0ZSgpCit2b2lkIFNwZWVjaElucHV0OjpkaWRDb21wbGV0ZVJlY29yZGluZygpCiB7Ci0gICAg
bV9saXN0ZW5lci0+cmVjb3JkaW5nQ29tcGxldGUoKTsKKyAgICBtX2xpc3RlbmVyLT5kaWRDb21w
bGV0ZVJlY29yZGluZygpOwogfQogCiB2b2lkIFNwZWVjaElucHV0OjpzZXRSZWNvZ25pdGlvblJl
c3VsdChjb25zdCBTdHJpbmcmIHJlc3VsdCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9TcGVl
Y2hJbnB1dC5oIGIvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0LmgKaW5kZXggMjAxYmU5OTEwYTJj
NmNhMmRlMGQ3NTA3YzFhMjEzY2Q3OTY3Njc0OC4uODA5OGY2NzZkZDA0MjNlOTlkZTQwM2Q3Zjc1
MGEyNDU0MmRkYzE0NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0LmgKKysr
IGIvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0LmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgYm9vbCBzdGFydFJlY29nbml0aW9uKCk7CiAKICAgICAvLyBTcGVlY2hJbnB1
dENsaWVudDo6TGlzdGVuZXIgbWV0aG9kcy4KLSAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkaW5nQ29t
cGxldGUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVSZWNvcmRpbmcoKTsKICAgICB2
aXJ0dWFsIHZvaWQgc2V0UmVjb2duaXRpb25SZXN1bHQoY29uc3QgU3RyaW5nJik7CiAKIHByb3Rl
Y3RlZDoKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dENsaWVudC5oIGIvV2Vi
Q29yZS9wYWdlL1NwZWVjaElucHV0Q2xpZW50LmgKaW5kZXggYmU2OGY0NmI5OGUxZjJhODZiYTY1
NGU3OGZlMTI4YWMwNmRlYzIxMS4uNWQxZWQ4YmQ5MTk5YmFiMjk3Zjg3Mzk4M2M4OWM0NDhlZGUx
ZDNmMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0Q2xpZW50LmgKKysrIGIv
V2ViQ29yZS9wYWdlL1NwZWVjaElucHV0Q2xpZW50LmgKQEAgLTQyLDYgKzQyLDEwIEBAIGNsYXNz
IFNwZWVjaElucHV0Q2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc3RhcnRSZWNv
Z25pdGlvbihTcGVlY2hJbnB1dENsaWVudExpc3RlbmVyKiBsaXN0ZW5lcikgPSAwOwogCisgICAg
Ly8gU3RvcHMgYXVkaW8gcmVjb3JkaW5nIGFuZCBwZXJmb3JtcyByZWNvZ25pdGlvbiB3aXRoIHRo
ZSBhdWRpbyByZWNvcmRlZCB1bnRpbCBub3cKKyAgICAvLyAoZG9lcyBub3QgZGlzY2FyZCBhdWRp
bykuCisgICAgdmlydHVhbCB2b2lkIHN0b3BSZWNvcmRpbmcoKSA9IDA7CisKIHByb3RlY3RlZDoK
ICAgICB2aXJ0dWFsIH5TcGVlY2hJbnB1dENsaWVudCgpIHsgfQogfTsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGFnZS9TcGVlY2hJbnB1dENsaWVudExpc3RlbmVyLmggYi9XZWJDb3JlL3BhZ2UvU3Bl
ZWNoSW5wdXRDbGllbnRMaXN0ZW5lci5oCmluZGV4IGE5YTg5N2U0YjJjN2Y3MTE0NWJmMzU2ZTkz
NzdjODMxZjI4YzUyZjguLjQ4M2YyNjFhMTM2MTVmNTliZDBmNTk4ODRhOTViM2NjMDA0ZGVhN2Yg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dENsaWVudExpc3RlbmVyLmgKKysr
IGIvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0Q2xpZW50TGlzdGVuZXIuaApAQCAtNDAsNyArNDAs
MTMgQEAgY2xhc3MgU3RyaW5nOwogLy8gUHJvdmlkZXMgYW4gaW50ZXJmYWNlIGZvciB0aGUgZW1i
ZWRkZXIgdG8gY2FsbCBpbnRvIFdlYkNvcmUuCiBjbGFzcyBTcGVlY2hJbnB1dENsaWVudExpc3Rl
bmVyIHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkaW5nQ29tcGxldGUoKSA9IDA7
CisgICAgLy8gSW5mb3JtcyB0aGF0IGF1ZGlvIHJlY29yZGluZyBoYXMgY29tcGxldGVkIGFuZCBy
ZWNvZ25pdGlvbiBpcyB1bmRlcndheS4KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVSZWNv
cmRpbmcoKSA9IDA7CisKKyAgICAvLyBHaXZlcyByZXN1bHRzIGZyb20gc3BlZWNoIHJlY29nbml0
aW9uLCBlaXRoZXIgcGFydGlhbCBvciB0aGUgZmluYWwgcmVzdWx0cy4KKyAgICAvLyBUaGlzIG1l
dGhvZCBjYW4gcG90ZW50aWFsbHkgZ2V0IGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBpZiB0aGVyZSBh
cmUgcGFydGlhbCByZXN1bHRzCisgICAgLy8gYXZhaWxhYmxlIGFzIHRoZSB1c2VyIGtlZXBzIHNw
ZWFraW5nLiBJZiB0aGUgc3BlZWNoIGNvdWxkIG5vdCBiZSByZWNvZ25pemVkIHByb3Blcmx5Cisg
ICAgLy8gb3IgaWYgdGhlcmUgd2FzIGFueSBvdGhlciBlcnJvcnMgaW4gdGhlIHByb2Nlc3MsIHRo
aXMgbWV0aG9kIG1heSBuZXZlciBiZSBjYWxsZWQuCiAgICAgdmlydHVhbCB2b2lkIHNldFJlY29n
bml0aW9uUmVzdWx0KGNvbnN0IFN0cmluZyYgcmVzdWx0KSA9IDA7CiAKIHByb3RlY3RlZDoKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dExpc3RlbmVyLmggYi9XZWJDb3JlL3Bh
Z2UvU3BlZWNoSW5wdXRMaXN0ZW5lci5oCmluZGV4IGQwODdkMzY3NjhmZjliOTUzMTZmM2U3NmU5
ZWIyZDRlYmM2MjI2NTkuLjZiNGZkOWY4NDUxMmE4N2FhMzc4MjEwMTRkMjc4MTczZmZjYWE4YjYg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dExpc3RlbmVyLmgKKysrIGIvV2Vi
Q29yZS9wYWdlL1NwZWVjaElucHV0TGlzdGVuZXIuaApAQCAtNDAsNyArNDAsMTMgQEAgY2xhc3Mg
U3RyaW5nOwogLy8gSW50ZXJmYWNlIHRvIGJlIGltcGxlbWVudGVkIGJ5IHRoZSBlbGVtZW50IHdo
aWNoIGludm9rZXMgU3BlZWNoSW5wdXQuCiBjbGFzcyBTcGVlY2hJbnB1dExpc3RlbmVyIHsKIHB1
YmxpYzoKLSAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkaW5nQ29tcGxldGUoKSA9IDA7CisgICAgLy8g
SW5mb3JtcyB0aGF0IGF1ZGlvIHJlY29yZGluZyBoYXMgY29tcGxldGVkIGFuZCByZWNvZ25pdGlv
biBpcyB1bmRlcndheS4KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVSZWNvcmRpbmcoKSA9
IDA7CisKKyAgICAvLyBHaXZlcyByZXN1bHRzIGZyb20gc3BlZWNoIHJlY29nbml0aW9uLCBlaXRo
ZXIgcGFydGlhbCBvciB0aGUgZmluYWwgcmVzdWx0cy4KKyAgICAvLyBUaGlzIG1ldGhvZCBjYW4g
cG90ZW50aWFsbHkgZ2V0IGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBpZiB0aGVyZSBhcmUgcGFydGlh
bCByZXN1bHRzCisgICAgLy8gYXZhaWxhYmxlIGFzIHRoZSB1c2VyIGtlZXBzIHNwZWFraW5nLiBJ
ZiB0aGUgc3BlZWNoIGNvdWxkIG5vdCBiZSByZWNvZ25pemVkIHByb3Blcmx5CisgICAgLy8gb3Ig
aWYgdGhlcmUgd2FzIGFueSBvdGhlciBlcnJvcnMgaW4gdGhlIHByb2Nlc3MsIHRoaXMgbWV0aG9k
IG1heSBuZXZlciBiZSBjYWxsZWQuCiAgICAgdmlydHVhbCB2b2lkIHNldFJlY29nbml0aW9uUmVz
dWx0KGNvbnN0IFN0cmluZyYgcmVzdWx0KSA9IDA7CiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcmVuZGVyaW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAgYi9XZWJDb3Jl
L3JlbmRlcmluZy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCmluZGV4IGMwZWZmYzg2YzEz
ZTFhYzEzYTU0YTMwOGMwOGQzZDkzY2YxZjgyMmQuLjdjZDA4YWUyZDEyM2EwYWYwNmQxZTFlNDI1
NTFiM2RkNTRlNjgxMDkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRDb250cm9s
SW5uZXJFbGVtZW50cy5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dENvbnRyb2xJbm5l
ckVsZW1lbnRzLmNwcApAQCAtMzk3LDcgKzM5Nyw3IEBAIFNwZWVjaElucHV0KiBJbnB1dEZpZWxk
U3BlZWNoQnV0dG9uRWxlbWVudDo6c3BlZWNoSW5wdXQoKQogICAgIHJldHVybiBtX3NwZWVjaElu
cHV0LmdldCgpOwogfQogCi12b2lkIElucHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50OjpyZWNv
cmRpbmdDb21wbGV0ZSgpCit2b2lkIElucHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50OjpkaWRD
b21wbGV0ZVJlY29yZGluZygpCiB7CiAgICAgLy8gRklYTUU6IEFkZCBVSSBmZWVkYmFjayBoZXJl
IHRvIGluZGljYXRlIHRoYXQgYXVkaW8gcmVjb3JkaW5nIHN0b3BwZWQgYW5kIHJlY29nbml0aW9u
IGlzCiAgICAgLy8gaW4gcHJvZ3Jlc3MuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9U
ZXh0Q29udHJvbElubmVyRWxlbWVudHMuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRDb250cm9s
SW5uZXJFbGVtZW50cy5oCmluZGV4IDY4ZDZmZjRjNWY1MjQ0MDUxNjhiMmExMTA5MDc2ZDk2MzBl
MTBhZjAuLmQ1ZGZkNjMyYzAwNWEyYzk0ZjFjYWFiNGFhZjVhYjZiYWZjNTE2YmQgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oCisrKyBiL1dl
YkNvcmUvcmVuZGVyaW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oCkBAIC0xMjQsNyArMTI0
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50
Kik7CiAKICAgICAvLyBTcGVlY2hJbnB1dExpc3RlbmVyIG1ldGhvZHMuCi0gICAgdm9pZCByZWNv
cmRpbmdDb21wbGV0ZSgpOworICAgIHZvaWQgZGlkQ29tcGxldGVSZWNvcmRpbmcoKTsKICAgICB2
b2lkIHNldFJlY29nbml0aW9uUmVzdWx0KGNvbnN0IFN0cmluZyYgcmVzdWx0KTsKIAogcHJpdmF0
ZToKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCmluZGV4IGYzYjMxYWVhOThiNmYwZjBlMTU0NmY3NjVjOGMwMDg4YWM3YWMw
YWUuLjFlOGU0NGE2ZmJkZWNlYzBhZTU2ZDEwZWViZGVkYjNlMWM5YWE1NDUgMTAwNjQ0Ci0tLSBh
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDMyIEBACisyMDEwLTA3LTE1ICBTYXRpc2ggU2FtcGF0aCAgPHNhdGlzaEBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkIFdlYktpdCBwbHVtYmluZyB0byBjb25uZWN0IHNwZWVjaCByZXF1ZXN0cyBhbmQg
Y2FsbGJhY2tzIGJldHdlZW4gV2ViQ29yZSBhbmQgdGhlIGVtYmVkZGVyLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDIzNjcKKworICAgICAgICBObyBu
ZXcgdGVzdHMsIHRoZSByZWxldmFudCBMYXlvdXRUZXN0Q29udHJvbGxlciBiaW5kaW5ncyBhbmQg
dGVzdHMgd2lsbCBiZSBhZGRlZCBpbiB0aGUgbmV4dCBwYXRjaC4KKworICAgICAgICAqIHB1Ymxp
Yy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIuaDogQWRkZWQgbmV3IGludGVyZmFjZSwgaW1wbGVt
ZW50ZWQgYnkgZW1iZWRkZXIgYW5kIGNhbGxlZCBieSBXZWJLaXQKKyAgICAgICAgKFdlYktpdDo6
V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyOjp+V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyKToKKyAg
ICAgICAgKiBwdWJsaWMvV2ViU3BlZWNoSW5wdXRMaXN0ZW5lci5oOiBBZGRlZCBuZXcgaW50ZXJm
YWNlLCBpbXBsZW1lbnRlZCBieSBXZWJLaXQgYW5kIGNhbGxlZCBieSBlbWJlZGRlci4KKyAgICAg
ICAgKFdlYktpdDo6V2ViU3BlZWNoSW5wdXRMaXN0ZW5lcjo6fldlYlNwZWVjaElucHV0TGlzdGVu
ZXIpOgorICAgICAgICAqIHB1YmxpYy9XZWJWaWV3Q2xpZW50Lmg6CisgICAgICAgIChXZWJLaXQ6
OldlYlZpZXdDbGllbnQ6OmNyZWF0ZVNwZWVjaElucHV0Q2xpZW50KTogTmV3IG1ldGhvZCB0byBn
ZXQgdGhlIGVtYmVkZGVyJ3Mgc3BlZWNoIGlucHV0IGNsaWVudCBpbnRlcmZhY2UuCisgICAgICAg
ICogc3JjL1NwZWVjaElucHV0Q2xpZW50SW1wbC5jcHA6IEFkZGVkIG5ldyBjbGFzcywgaW1wbGVt
ZW50YXRpb24gb2YgYSB0d28gd2F5IGNvbm5lY3RvciBiZXR3ZWVuIFdlYkNvcmUKKyAgICAgICAg
YW5kIHRoZSBlbWJlZGRlciBmb3IgcmVxdWVzdHMgYW5kIHJlc3BvbnNlcy4KKyAgICAgICAgKFdl
YktpdDo6U3BlZWNoSW5wdXRDbGllbnRJbXBsOjpTcGVlY2hJbnB1dENsaWVudEltcGwpOgorICAg
ICAgICAoV2ViS2l0OjpTcGVlY2hJbnB1dENsaWVudEltcGw6On5TcGVlY2hJbnB1dENsaWVudElt
cGwpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hJbnB1dENsaWVudEltcGw6OnN0YXJ0UmVjb2du
aXRpb24pOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hJbnB1dENsaWVudEltcGw6OnN0b3BSZWNv
cmRpbmcpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hJbnB1dENsaWVudEltcGw6OmRpZENvbXBs
ZXRlUmVjb3JkaW5nKToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoSW5wdXRDbGllbnRJbXBsOjpz
ZXRSZWNvZ25pdGlvblJlc3VsdCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaElucHV0Q2xpZW50
SW1wbDo6ZGlkQ29tcGxldGVSZWNvZ25pdGlvbik6CisgICAgICAgICogc3JjL1NwZWVjaElucHV0
Q2xpZW50SW1wbC5oOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwpOiBQYXNzIG9uIHRoZSBhYm92
ZSBtZW50aW9uZWQgc3BlZWNoIGlucHV0IGNvbm5lY3RvciB0byBXZWJDb3JlLgorICAgICAgICAq
IHNyYy9XZWJWaWV3SW1wbC5oOgorCiAyMDEwLTA3LTIzICBQYXZlbCBGZWxkbWFuICA8cGZlbGRt
YW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFJldmlld2VkIGJ5IFl1cnkg
U2VtaWtoYXRza3kuCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1dl
YktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4IDY2ZWY1N2VkYTBjMTE1MmI5ODg5YzA4YTkw
MjAzYzk3ZmNhYTJhYmYuLjhiMTg3OWY3NDc1ODZkZjJlNzlmNmRhY2E3YTYzZjFlNTZjMTQyZTQg
MTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCisrKyBiL1dlYktpdC9jaHJv
bWl1bS9XZWJLaXQuZ3lwCkBAIC0yMzQsNiArMjM0LDggQEAKICAgICAgICAgICAgICAgICAncHVi
bGljL1dlYlNvY2tldFN0cmVhbUVycm9yLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2Vi
U29ja2V0U3RyZWFtSGFuZGxlLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViU29ja2V0
U3RyZWFtSGFuZGxlQ2xpZW50LmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViU3BlZWNo
SW5wdXRDb250cm9sbGVyLmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViU3BlZWNoSW5w
dXRMaXN0ZW5lci5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlN0b3JhZ2VBcmVhLmgn
LAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5oJywK
ICAgICAgICAgICAgICAgICAncHVibGljL1dlYlN0b3JhZ2VOYW1lc3BhY2UuaCcsCkBAIC0zMzks
NiArMzQxLDggQEAKICAgICAgICAgICAgICAgICAnc3JjL1Jlc291cmNlSGFuZGxlLmNwcCcsCiAg
ICAgICAgICAgICAgICAgJ3NyYy9TaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmNwcCcsCiAgICAgICAg
ICAgICAgICAgJ3NyYy9Tb2NrZXRTdHJlYW1IYW5kbGUuY3BwJywKKyAgICAgICAgICAgICAgICAn
c3JjL1NwZWVjaElucHV0Q2xpZW50SW1wbC5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMvU3Bl
ZWNoSW5wdXRDbGllbnRJbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvU3RvcmFnZUFyZWFQ
cm94eS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvU3RvcmFnZUFyZWFQcm94eS5oJywKICAg
ICAgICAgICAgICAgICAnc3JjL1N0b3JhZ2VFdmVudERpc3BhdGNoZXJDaHJvbWl1bS5jcHAnLApk
aWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xs
ZXIuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uM2RiYTVmYjZiYjFlMmRkMWQ0YWIwOTNkMTkzZWUxY2RhZDZkZDgxMwotLS0g
L2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoSW5wdXRDb250
cm9sbGVyLmgKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisg
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVy
X2gKKyNkZWZpbmUgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyX2gKKworI2luY2x1ZGUgIldlYkNv
bW1vbi5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8gUHJvdmlkZXMgYW4gZW1iZWRkZXIg
QVBJIGNhbGxlZCBieSBXZWJLaXQuCitjbGFzcyBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIgewor
cHVibGljOgorICAgIC8vIFN0YXJ0cyBzcGVlY2ggcmVjb2duaXRpb24uIFNwZWVjaCB3aWxsIGdl
dCByZWNvcmRlZCB1bnRpbCB0aGUgZW5kcG9pbnRlciBkZXRlY3RzIHNpbGVuY2UsCisgICAgLy8g
cnVucyB0byB0aGUgbGltaXQgb3Igc3RvcFJlY29yZGluZyBpcyBjYWxsZWQuIFByb2dyZXNzIGlu
ZGljYXRpb25zIGFuZCB0aGUgcmVjb2duaXplZAorICAgIC8vIHRleHQgYXJlIHJldHVybmVkIHZp
YSB0aGUgbGlzdGVuZXIgaW50ZXJmYWNlLgorICAgIHZpcnR1YWwgYm9vbCBzdGFydFJlY29nbml0
aW9uKCkKKyAgICB7CisgICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gQ2FuY2VscyBhbiBvbmdvaW5nIHJl
Y29nbml0aW9uIGFuZCBkaXNjYXJkcyBhbnkgYXVkaW8gcmVjb3JkZWQgc28gZmFyLiBObyBwYXJ0
aWFsCisgICAgLy8gcmVjb2duaXRpb24gcmVzdWx0cyBhcmUgcmV0dXJuZWQgdG8gdGhlIGxpc3Rl
bmVyLgorICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxSZWNvZ25pdGlvbigpIHsgV0VCS0lUX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOyB9CisKKyAgICAvLyBTdG9wcyBhdWRpbyByZWNvcmRpbmcgYW5kIHBl
cmZvcm1zIHJlY29nbml0aW9uIHdpdGggdGhlIGF1ZGlvIHJlY29yZGVkIHVudGlsIG5vdworICAg
IC8vIChkb2VzIG5vdCBkaXNjYXJkIGF1ZGlvKS4gVGhpcyBpcyBhbiBvcHRpb25hbCBjYWxsIGFu
ZCBpcyB0eXBpY2FsbHkgaW52b2tlZCBpZiB0aGUgdXNlcgorICAgIC8vIHdhbnRzIHRvIHN0b3Ag
cmVjb3JkaW5nIGF1ZGlvIGFzIHNvb24gYXMgdGhleSBmaW5pc2hlZCBzcGVha2luZy4gT3RoZXJ3
aXNlLCB0aGUgc3BlZWNoCisgICAgLy8gcmVjb3JkaW5nICdlbmRwb2ludGVyJyBzaG91bGQgZGV0
ZWN0IHNpbGVuY2UgaW4gdGhlIGlucHV0IGFuZCBzdG9wIHJlY29yZGluZyBhdXRvbWF0aWNhbGx5
LgorICAgIC8vIENhbGwgc3RhcnRSZWNvZ25pdGlvbigpIHRvIHJlY29yZCBhdWRpbyBhbmQgcmVj
b2duaXplIHNwZWVjaCBhZ2Fpbi4KKyAgICB2aXJ0dWFsIHZvaWQgc3RvcFJlY29yZGluZygpIHsg
V0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFs
IH5XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIoKSB7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdAorCisjZW5kaWYgLy8gV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyX2gKZGlmZiAtLWdpdCBh
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoSW5wdXRMaXN0ZW5lci5oIGIvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hJbnB1dExpc3RlbmVyLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjE3
NTZhZjFlOTk5NDAwN2VhZjgxZGZlNDI5M2Y2NGVhMmVjZGUwNgotLS0gL2Rldi9udWxsCisrKyBi
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoSW5wdXRMaXN0ZW5lci5oCkBAIC0wLDAg
KzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoK
KyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgor
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIFdlYlNwZWVjaElucHV0TGlzdGVuZXJfaAorI2RlZmluZSBXZWJTcGVl
Y2hJbnB1dExpc3RlbmVyX2gKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlN0cmlu
ZzsKKworLy8gUHJvdmlkZXMgYSBXZWJLaXQgQVBJIGNhbGxlZCBieSB0aGUgZW1iZWRkZXIuCisv
LyBBIHR5cGljYWwgc2VxdWVuY2Ugb2YgY2FsbHMgdG8gdGhlIGxpc3RlbmVyIHdvdWxkIGJlCisv
LyAgIDEgY2FsbCB0byBkaWRDb21wbGV0ZVJlY29yZGluZworLy8gICAwIG9yIG1vcmUgY2FsbHMg
dG8gc2V0UmVjb2duaXRpb25SZXN1bHQKKy8vICAgMSBjYWxsIHRvIGRpZENvbXBsZXRlUmVjb2du
aXRpb24KK2NsYXNzIFdlYlNwZWVjaElucHV0TGlzdGVuZXIgeworcHVibGljOgorICAgIC8vIElu
Zm9ybXMgdGhhdCBhdWRpbyByZWNvcmRpbmcgaGFzIGNvbXBsZXRlZCBhbmQgcmVjb2duaXRpb24g
aXMgdW5kZXJ3YXkuIFRoaXMgZ2V0cyBpbnZva2VkCisgICAgLy8gaXJyZXNwZWN0aXZlIG9mIHdo
ZXRoZXIgcmVjb3JkaW5nIHdhcyBzdG9wcGVkIGF1dG9tYXRpY2FsbHkgYnkgdGhlICdlbmRwb2lu
dGVyJyBvciBpZgorICAgIC8vIFdlYlNwZWVjaElucHV0Q29udHJvbGxlcjo6c3RvcFJlY29yZGlu
ZygpIHdhcyBjYWxsZWQuCisgICAgLy8gVHlwaWNhbGx5IGFmdGVyIHRoaXMgY2FsbCB0aGUgbGlz
dGVuZXIgd291bGQgdXBkYXRlIHRoZSBVSSB0byByZWZsZWN0IHRoYXQgcmVjb2duaXRpb24gaXMK
KyAgICAvLyBpbiBwcm9ncmVzcy4KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVSZWNvcmRp
bmcoKSA9IDA7CisKKyAgICAvLyBHaXZlcyByZXN1bHRzIGZyb20gc3BlZWNoIHJlY29nbml0aW9u
LCBlaXRoZXIgcGFydGlhbCBvciB0aGUgZmluYWwgcmVzdWx0cy4KKyAgICAvLyBUaGlzIG1ldGhv
ZCBjYW4gcG90ZW50aWFsbHkgZ2V0IGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBpZiB0aGVyZSBhcmUg
cGFydGlhbCByZXN1bHRzCisgICAgLy8gYXZhaWxhYmxlIGFzIHRoZSB1c2VyIGtlZXBzIHNwZWFr
aW5nLiBJZiB0aGUgc3BlZWNoIGNvdWxkIG5vdCBiZSByZWNvZ25pemVkIHByb3Blcmx5CisgICAg
Ly8gb3IgaWYgdGhlcmUgd2FzIGFueSBvdGhlciBlcnJvcnMgaW4gdGhlIHByb2Nlc3MsIHRoaXMg
bWV0aG9kIG1heSBuZXZlciBiZSBjYWxsZWQuCisgICAgdmlydHVhbCB2b2lkIHNldFJlY29nbml0
aW9uUmVzdWx0KGNvbnN0IFdlYlN0cmluZyYpID0gMDsKKworICAgIC8vIEluZm9ybXMgdGhhdCBz
cGVlY2ggcmVjb2duaXRpb24gaGFzIGNvbXBsZXRlZC4gVGhpcyBnZXRzIGludm9rZWQgaXJyZXNw
ZWN0aXZlIG9mIHdoZXRoZXIKKyAgICAvLyByZWNvZ25pdGlvbiB3YXMgc3VjY2VzZnVsIG9yIG5v
dCwgd2hldGhlciBzZXRSZWNvZ25pdGlvblJlc3VsdCgpIHdhcyBpbnZva2VkIG9yIG5vdC4gVGhl
CisgICAgLy8gaGFuZGxlciB0eXBpY2FsbHkgZnJlZXMgdXAgYW55IHRlbXBvcmFyeSByZXNvdXJj
ZXMgYWxsb2NhdGVkIGFuZCB3YWl0cyBmb3IgdGhlIG5leHQgc3BlZWNoCisgICAgLy8gcmVjb2du
aXRpb24gcmVxdWVzdC4KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVSZWNvZ25pdGlvbigp
ID0gMDsKKworcHJvdGVjdGVkOgorICAgIH5XZWJTcGVlY2hJbnB1dExpc3RlbmVyKCkgeyB9Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYlNwZWVjaElucHV0TGlz
dGVuZXJfaApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3Q2xpZW50
LmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaAppbmRleCAxMWZiMjMz
ZWQ4MzZhZDkyMjAxMDZiMzAzYTA5ZTQ2YWY5M2JhMDk2Li40NjI4YzJmNDQzZDM1MDJmZTUyYjc2
NDJiYTQ4NWIwMzdkYTU1MjU0IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YlZpZXdDbGllbnQuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQu
aApAQCAtNTUsNiArNTUsOCBAQCBjbGFzcyBXZWJLZXlib2FyZEV2ZW50OwogY2xhc3MgV2ViTm9k
ZTsKIGNsYXNzIFdlYk5vdGlmaWNhdGlvblByZXNlbnRlcjsKIGNsYXNzIFdlYlJhbmdlOworY2xh
c3MgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyOworY2xhc3MgV2ViU3BlZWNoSW5wdXRMaXN0ZW5l
cjsKIGNsYXNzIFdlYlN0b3JhZ2VOYW1lc3BhY2U7CiBjbGFzcyBXZWJVUkw7CiBjbGFzcyBXZWJW
aWV3OwpAQCAtMzMxLDcgKzMzMywxMyBAQCBwdWJsaWM6CiAgICAgLy8gR2VvbG9jYXRpb24gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAK
ICAgICAvLyBBY2Nlc3MgdGhlIGVtYmVkZGVyIEFQSSBmb3IgZ2VvbG9jYXRpb24gc2VydmljZXMu
Ci0gICAgdmlydHVhbCBXZWJLaXQ6OldlYkdlb2xvY2F0aW9uU2VydmljZSogZ2VvbG9jYXRpb25T
ZXJ2aWNlKCkgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgV2ViR2VvbG9jYXRpb25TZXJ2aWNl
KiBnZW9sb2NhdGlvblNlcnZpY2UoKSB7IHJldHVybiAwOyB9CisKKyAgICAvLyBTcGVlY2ggLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworICAgIC8vIEFjY2VzcyB0aGUgZW1iZWRkZXIgQVBJIGZvciBzcGVlY2ggaW5wdXQgc2Vy
dmljZXMuCisgICAgdmlydHVhbCBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIqIHNwZWVjaElucHV0
Q29udHJvbGxlcigKKyAgICAgICAgV2ViU3BlZWNoSW5wdXRMaXN0ZW5lciopIHsgcmV0dXJuIDA7
IH0KIAogcHJvdGVjdGVkOgogICAgIH5XZWJWaWV3Q2xpZW50KCkgeyB9CmRpZmYgLS1naXQgYS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1NwZWVjaElucHV0Q2xpZW50SW1wbC5jcHAgYi9XZWJLaXQvY2hy
b21pdW0vc3JjL1NwZWVjaElucHV0Q2xpZW50SW1wbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDdiZTU4OGY2
NDllYTM2NDBmODQ1Y2NhZjZhM2QxMzFiZDU5ZGZkZAotLS0gL2Rldi9udWxsCisrKyBiL1dlYktp
dC9jaHJvbWl1bS9zcmMvU3BlZWNoSW5wdXRDbGllbnRJbXBsLmNwcApAQCAtMCwwICsxLDkzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
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
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNwZWVjaElucHV0Q2xpZW50SW1wbC5oIgor
CisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJXZWJTcGVlY2hJbnB1dENv
bnRyb2xsZXIuaCIKKyNpbmNsdWRlICJXZWJTdHJpbmcuaCIKKyNpbmNsdWRlICJXZWJWaWV3Q2xp
ZW50LmgiCisjaW5jbHVkZSAicGFnZS9TcGVlY2hJbnB1dENsaWVudExpc3RlbmVyLmgiCisKKyNp
ZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworU3BlZWNoSW5w
dXRDbGllbnRJbXBsOjpTcGVlY2hJbnB1dENsaWVudEltcGwoV2ViVmlld0NsaWVudCogd2ViX3Zp
ZXdfY2xpZW50KQorICAgIDogbV9jb250cm9sbGVyKHdlYl92aWV3X2NsaWVudC0+c3BlZWNoSW5w
dXRDb250cm9sbGVyKHRoaXMpKQorICAgICwgbV9saXN0ZW5lcigwKQoreworICAgIEFTU0VSVCht
X2NvbnRyb2xsZXIpOworfQorCitTcGVlY2hJbnB1dENsaWVudEltcGw6On5TcGVlY2hJbnB1dENs
aWVudEltcGwoKQoreworfQorCitib29sIFNwZWVjaElucHV0Q2xpZW50SW1wbDo6c3RhcnRSZWNv
Z25pdGlvbihXZWJDb3JlOjpTcGVlY2hJbnB1dENsaWVudExpc3RlbmVyKiBsaXN0ZW5lcikKK3sK
KyAgICAvLyBDYW5jZWwgYW55IG9uZ29pbmcgcmVjb2duaXRpb24gZmlyc3QuIE5vIGNhbGxiYWNr
cyB3aWxsIGJlIGlzc3VlZCB0byB0aGF0IGxpc3RlbmVyLgorICAgIGlmIChtX2xpc3RlbmVyKQor
ICAgICAgICBtX2NvbnRyb2xsZXItPmNhbmNlbFJlY29nbml0aW9uKCk7CisKKyAgICBtX2xpc3Rl
bmVyID0gbGlzdGVuZXI7CisgICAgcmV0dXJuIG1fY29udHJvbGxlci0+c3RhcnRSZWNvZ25pdGlv
bigpOworfQorCit2b2lkIFNwZWVjaElucHV0Q2xpZW50SW1wbDo6c3RvcFJlY29yZGluZygpCit7
CisgICAgQVNTRVJUKG1fbGlzdGVuZXIpOworICAgIG1fY29udHJvbGxlci0+c3RvcFJlY29yZGlu
ZygpOworfQorCit2b2lkIFNwZWVjaElucHV0Q2xpZW50SW1wbDo6ZGlkQ29tcGxldGVSZWNvcmRp
bmcoKQoreworICAgIEFTU0VSVChtX2xpc3RlbmVyKTsKKyAgICBpZiAobV9saXN0ZW5lcikKKyAg
ICAgICAgbV9saXN0ZW5lci0+ZGlkQ29tcGxldGVSZWNvcmRpbmcoKTsKK30KKwordm9pZCBTcGVl
Y2hJbnB1dENsaWVudEltcGw6OmRpZENvbXBsZXRlUmVjb2duaXRpb24oKQoreworICAgIEFTU0VS
VChtX2xpc3RlbmVyKTsKKyAgICBtX2xpc3RlbmVyID0gMDsKK30KKwordm9pZCBTcGVlY2hJbnB1
dENsaWVudEltcGw6OnNldFJlY29nbml0aW9uUmVzdWx0KGNvbnN0IFdlYlN0cmluZyYgcmVzdWx0
KQoreworICAgIEFTU0VSVChtX2xpc3RlbmVyKTsKKyAgICBpZiAobV9saXN0ZW5lcikKKyAgICAg
ICAgbV9saXN0ZW5lci0+c2V0UmVjb2duaXRpb25SZXN1bHQocmVzdWx0KTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5QVVRfU1BFRUNIKQpkaWZmIC0t
Z2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9TcGVlY2hJbnB1dENsaWVudEltcGwuaCBiL1dlYktp
dC9jaHJvbWl1bS9zcmMvU3BlZWNoSW5wdXRDbGllbnRJbXBsLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmZhMjhj
NzgxOTBkZjZhNDZkNDZkMjBiMGY5ZTFkZTIwNjA0ZDYxNwotLS0gL2Rldi9udWxsCisrKyBiL1dl
YktpdC9jaHJvbWl1bS9zcmMvU3BlZWNoSW5wdXRDbGllbnRJbXBsLmgKQEAgLTAsMCArMSw3MyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBk
aXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgU3BlZWNoSW5wdXRDbGllbnRJbXBsX2gKKyNkZWZpbmUgU3BlZWNoSW5wdXRDbGllbnRJbXBs
X2gKKworI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCisKKyNpbmNsdWRlICJXZWJTcGVlY2hJbnB1
dExpc3RlbmVyLmgiCisjaW5jbHVkZSAicGFnZS9TcGVlY2hJbnB1dENsaWVudC5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CitjbGFzcyBTcGVlY2hJbnB1dENsaWVudExpc3RlbmVyOworfQorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyOworY2xh
c3MgV2ViVmlld0NsaWVudDsKKworY2xhc3MgU3BlZWNoSW5wdXRDbGllbnRJbXBsCisgICAgOiBw
dWJsaWMgV2ViQ29yZTo6U3BlZWNoSW5wdXRDbGllbnQsCisgICAgICBwdWJsaWMgV2ViU3BlZWNo
SW5wdXRMaXN0ZW5lciB7CitwdWJsaWM6CisgICAgU3BlZWNoSW5wdXRDbGllbnRJbXBsKFdlYlZp
ZXdDbGllbnQqKTsKKyAgICB2aXJ0dWFsIH5TcGVlY2hJbnB1dENsaWVudEltcGwoKTsKKworICAg
IC8vIFNwZWVjaElucHV0Q2xpZW50IG1ldGhvZHMuCisgICAgYm9vbCBzdGFydFJlY29nbml0aW9u
KFdlYkNvcmU6OlNwZWVjaElucHV0Q2xpZW50TGlzdGVuZXIqKTsKKyAgICB2b2lkIHN0b3BSZWNv
cmRpbmcoKTsKKworICAgIC8vIFdlYlNwZWVjaElucHV0TGlzdGVuZXIgbWV0aG9kcy4KKyAgICB2
b2lkIGRpZENvbXBsZXRlUmVjb3JkaW5nKCk7CisgICAgdm9pZCBzZXRSZWNvZ25pdGlvblJlc3Vs
dChjb25zdCBXZWJTdHJpbmcmKTsKKyAgICB2b2lkIGRpZENvbXBsZXRlUmVjb2duaXRpb24oKTsK
KworcHJpdmF0ZToKKyAgICBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIqIG1fY29udHJvbGxlcjsg
Ly8gVG8gY2FsbCBpbnRvIHRoZSBlbWJlZGRlci4KKyAgICBXZWJDb3JlOjpTcGVlY2hJbnB1dENs
aWVudExpc3RlbmVyKiBtX2xpc3RlbmVyOyAvLyBWYWxpZCB3aGVuIHJlY29nbml0aW9uIGlzIGlu
IHByb2dyZXNzLgorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFC
TEUoSU5QVVRfU1BFRUNIKQorCisjZW5kaWYgLy8gU3BlZWNoSW5wdXRDbGllbnRJbXBsX2gKZGlm
ZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggYjhiODU5OTQ0OTQwMmQxYjcwYjAyMWU2
ZjkwYWVlNmEwNjJhZGMwMS4uZDhlNjlkNGVlZmJlZDNkMTM0Y2IyNmM4ZThkMmIxY2ExMjNhYjlm
OSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTI1OCw2ICsyNTgsOSBAQCBX
ZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwoV2ViVmlld0NsaWVudCogY2xpZW50LCBXZWJEZXZUb29s
c0FnZW50Q2xpZW50KiBkZXZUb29scwogICAgICwgbV9sYXllclJlbmRlcmVyKDApCiAgICAgLCBt
X2lzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZShmYWxzZSkKICNlbmRpZgorI2lmIEVOQUJM
RShJTlBVVF9TUEVFQ0gpCisgICAgLCBtX3NwZWVjaElucHV0Q2xpZW50KGNsaWVudCkKKyNlbmRp
ZgogICAgICwgbV9nbGVzMkNvbnRleHQoMCkKIHsKICAgICAvLyBXZWJLaXQvd2luL1dlYlZpZXcu
Y3BwIGRvZXMgdGhlIHNhbWUgdGhpbmcsIGV4Y2VwdCB0aGV5IGNhbGwgdGhlCkBAIC0yNzgsNiAr
MjgxLDkgQEAgV2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKFdlYlZpZXdDbGllbnQqIGNsaWVudCwg
V2ViRGV2VG9vbHNBZ2VudENsaWVudCogZGV2VG9vbHMKIAogICAgIG1fcGFnZS0+YmFja0Zvcndh
cmRMaXN0KCktPnNldENsaWVudCgmbV9iYWNrRm9yd2FyZExpc3RDbGllbnRJbXBsKTsKICAgICBt
X3BhZ2UtPnNldEdyb3VwTmFtZShwYWdlR3JvdXBOYW1lKTsKKyNpZiBFTkFCTEUoSU5QVVRfU1BF
RUNIKQorICAgIG1fcGFnZS0+c2V0U3BlZWNoSW5wdXRDbGllbnQoJm1fc3BlZWNoSW5wdXRDbGll
bnQpOworI2VuZGlmCiAKICAgICBtX2luc3BlY3RvclNldHRpbmdzTWFwLnNldChuZXcgU2V0dGlu
Z3NNYXApOwogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5o
IGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCmluZGV4IGQ0ZTExMTM1NDc5NmVk
NTNhODE4MWI4ZGJlOTBmMTcyYTVlNGI0YzkuLmQwZmRhOTI1NzY4ZGVmODkwNDQ0MjVmODc4ZmE4
NTA2YjU5Y2VjMWIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwu
aAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKQEAgLTQ3LDYgKzQ3LDcg
QEAKICNpbmNsdWRlICJJbnNwZWN0b3JDbGllbnRJbXBsLmgiCiAjaW5jbHVkZSAiTGF5ZXJSZW5k
ZXJlckNocm9taXVtLmgiCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uUHJlc2VudGVySW1wbC5oIgor
I2luY2x1ZGUgIlNwZWVjaElucHV0Q2xpZW50SW1wbC5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIu
aD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCkBAIC01MTEsNiArNTEyLDEwIEBAIHBy
aXZhdGU6CiAjZW5kaWYKICAgICBzdGF0aWMgY29uc3QgV2ViSW5wdXRFdmVudCogbV9jdXJyZW50
SW5wdXRFdmVudDsKIAorI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCisgICAgU3BlZWNoSW5wdXRD
bGllbnRJbXBsIG1fc3BlZWNoSW5wdXRDbGllbnQ7CisjZW5kaWYKKwogICAgIE93blB0cjxXZWJH
TEVTMkNvbnRleHQ+IG1fZ2xlczJDb250ZXh0OwogfTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>