<?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>47089</bug_id>
          
          <creation_ts>2010-10-04 08:25:01 -0700</creation_ts>
          <short_desc>Language tag in speech for HTML input elements</short_desc>
          <delta_ts>2012-09-19 07:16:04 -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>
          <dependson>47420</dependson>
    
    <dependson>47989</dependson>
    
    <dependson>48126</dependson>
          <blocked>39485</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Leandro Graciá Gil">leandrogracia</reporter>
          <assigned_to name="Leandro Graciá Gil">leandrogracia</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>gustavo</cc>
    
    <cc>jorlow</cc>
    
    <cc>mitz</cc>
    
    <cc>satish</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>288941</commentid>
    <comment_count>0</comment_count>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2010-10-04 08:25:01 -0700</bug_when>
    <thetext>The current implementation of the speech tags in HTML does not consider the language of the input element, its ancestor elements or the document. The objective of this bug is to patch the implementation to get the contents of the nearest &apos;lang&apos; attribute, perform a brief verification and include them as a parameter in the startRecognition methods.

Related bug: https://bugs.webkit.org/show_bug.cgi?id=39485</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290173</commentid>
    <comment_count>1</comment_count>
      <attachid>69914</attachid>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2010-10-06 03:38:18 -0700</bug_when>
    <thetext>Created attachment 69914
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290209</commentid>
    <comment_count>2</comment_count>
      <attachid>69925</attachid>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2010-10-06 04:56:20 -0700</bug_when>
    <thetext>Created attachment 69925
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290216</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-06 05:06:34 -0700</bug_when>
    <thetext>Attachment 69925 did not build on gtk:
Build output: http://queues.webkit.org/results/4219107</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290276</commentid>
    <comment_count>4</comment_count>
      <attachid>69934</attachid>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2010-10-06 07:19:51 -0700</bug_when>
    <thetext>Created attachment 69934
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290284</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-06 07:27:15 -0700</bug_when>
    <thetext>Attachment 69934 did not build on gtk:
Build output: http://queues.webkit.org/results/4202096</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290295</commentid>
    <comment_count>6</comment_count>
      <attachid>69940</attachid>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2010-10-06 07:58:39 -0700</bug_when>
    <thetext>Created attachment 69940
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290348</commentid>
    <comment_count>7</comment_count>
      <attachid>69940</attachid>
    <who name="">mitz</who>
    <bug_when>2010-10-06 09:16:00 -0700</bug_when>
    <thetext>Comment on attachment 69940
Patch

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

&gt; WebCore/page/SpeechInput.cpp:96
&gt; +bool SpeechInput::startRecognition(int listenerId, const CString&amp; languageTag, const IntRect&amp; elementRect)

Why are you using a CString for the language identifier?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290394</commentid>
    <comment_count>8</comment_count>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2010-10-06 10:05:09 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 69940 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=69940&amp;action=review
&gt; 
&gt; &gt; WebCore/page/SpeechInput.cpp:96
&gt; &gt; +bool SpeechInput::startRecognition(int listenerId, const CString&amp; languageTag, const IntRect&amp; elementRect)
&gt; 
&gt; Why are you using a CString for the language identifier?

Because the expected input is a valid BCP47 language tag: http://tools.ietf.org/rfc/bcp/bcp47.txt. The spec includes a grammar for the valid ones but all of them are composed of alphanumeric ASCII characters and the &apos;-&apos; symbol. Any tag not passing this simple test is considered invalid and the languageTag variable becomes an empty string. Note that a full language tag parsing for validation is not intended here.

So, since any valid content can be safely represented with a 8-bit ASCII string (even with a 7-bit one) there&apos;s absolutely no need to use any wide-char strings for this. It&apos;s just a waste of memory.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290419</commentid>
    <comment_count>9</comment_count>
      <attachid>69940</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-10-06 10:28:35 -0700</bug_when>
    <thetext>Comment on attachment 69940
Patch

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

&gt; WebKit/chromium/public/WebSpeechInputController.h:47
&gt; +    virtual bool startRecognition(int requestId, const WebCString&amp;, const WebRect&amp;)

this WebCString parameter needs a name.  you should give parameters a name
unless the name you would pick is redundant with the type name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290442</commentid>
    <comment_count>10</comment_count>
      <attachid>69940</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-10-06 10:56:29 -0700</bug_when>
    <thetext>Comment on attachment 69940
Patch

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

A few initial thoughts...

&gt; LayoutTests/fast/speech/input-text-language-tag.html:15
&gt; +function onChange_none() {

this is not webkit style..fix here and elsewhere

&gt;&gt;&gt; WebCore/page/SpeechInput.cpp:96
&gt;&gt;&gt; +bool SpeechInput::startRecognition(int listenerId, const CString&amp; languageTag, const IntRect&amp; elementRect)
&gt;&gt; 
&gt;&gt; Why are you using a CString for the language identifier?
&gt; 
&gt; Because the expected input is a valid BCP47 language tag: http://tools.ietf.org/rfc/bcp/bcp47.txt. The spec includes a grammar for the valid ones but all of them are composed of alphanumeric ASCII characters and the &apos;-&apos; symbol. Any tag not passing this simple test is considered invalid and the languageTag variable becomes an empty string. Note that a full language tag parsing for validation is not intended here.
&gt; 
&gt; So, since any valid content can be safely represented with a 8-bit ASCII string (even with a 7-bit one) there&apos;s absolutely no need to use any wide-char strings for this. It&apos;s just a waste of memory.

For simplicity we generally stick with strings (UTF16) unless there&apos;s a good reason not to.  The memory saving his are negligible, so we should probably not be using a cstring here.

&gt; WebCore/rendering/TextControlInnerElements.cpp:103
&gt; +    

get rid of white space

&gt; WebCore/rendering/TextControlInnerElements.cpp:286
&gt; + 

get rid of white space

&gt; WebKit/chromium/public/WebSpeechInputControllerMock.h:47
&gt; +    virtual void setMockRecognitionResult(const WebString&amp; result, const WebString&amp; languageTag) = 0;

We don&apos;t do pure virtual methods in the WebKit API anymore.  Please make this (and others) have a WEBKIT_ASSERT_NOT_REACHED() default method body.

&gt; WebKit/chromium/src/WebSpeechInputControllerMockImpl.h:72
&gt; +    // TODO(leandrogracia): delete this temporary fix. Required to launch a two-sided patch.

This is not Webkit style.  Use FIXME.

&gt; WebKit/chromium/src/WebViewImpl.cpp:279
&gt; +    , m_speechInputClient(new SpeechInputClientImpl(client))

SpeechInputClientImpl should have a create factory method that returns a passownptr</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290443</commentid>
    <comment_count>11</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-10-06 10:56:56 -0700</bug_when>
    <thetext>Satish, can you please do an informal review of this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290896</commentid>
    <comment_count>12</comment_count>
      <attachid>69940</attachid>
    <who name="Satish Sampath">satish</who>
    <bug_when>2010-10-07 02:55:01 -0700</bug_when>
    <thetext>Comment on attachment 69940
Patch

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

&gt; LayoutTests/fast/speech/input-text-language-tag.html:48
&gt; +    var input_none = document.createElement(&apos;input&apos;);

Can you declare these input elements in html instead of having all this JS code to create and initialize them?

&gt; LayoutTests/fast/speech/input-text-language-tag.html:50
&gt; +    input_none.speech = &apos;speech&apos;;

This will no longer work, I renamed this attribute to webkitSpeech recently. So this will become:
  input.webkitSpeech = &apos;webkitSpeech&apos;
Same for all other places in this file. And if you take the above suggestion and declare these in html, then use
  &lt;input x-webkit-speech&gt;

&gt; LayoutTests/fast/speech/input-text-speechbutton.html:35
&gt; +        layoutTestController.setMockSpeechInputResult(&apos;Pictures of the moon&apos;, &apos;en&apos;);

Is &apos;en&apos; required here or can we pass an empty string? On a related note, does the c++ code get &apos;en&apos; as the language if the web page did not specify any language at the document or node level?

&gt; WebCore/ChangeLog:5
&gt; +        Patch the current speech HTML tag implementation to use and validate

nit: replace &apos;speech HTML tag&apos; with &apos;speech input&apos; since speech input has not introduced any new HTML tags, instead it tries to work with existing ones.

&gt;&gt;&gt;&gt; WebCore/page/SpeechInput.cpp:96
&gt;&gt;&gt;&gt; +bool SpeechInput::startRecognition(int listenerId, const CString&amp; languageTag, const IntRect&amp; elementRect)
&gt;&gt;&gt; 
&gt;&gt;&gt; Why are you using a CString for the language identifier?
&gt;&gt; 
&gt;&gt; Because the expected input is a valid BCP47 language tag: http://tools.ietf.org/rfc/bcp/bcp47.txt. The spec includes a grammar for the valid ones but all of them are composed of alphanumeric ASCII characters and the &apos;-&apos; symbol. Any tag not passing this simple test is considered invalid and the languageTag variable becomes an empty string. Note that a full language tag parsing for validation is not intended here.
&gt;&gt; 
&gt;&gt; So, since any valid content can be safely represented with a 8-bit ASCII string (even with a 7-bit one) there&apos;s absolutely no need to use any wide-char strings for this. It&apos;s just a waste of memory.
&gt; 
&gt; For simplicity we generally stick with strings (UTF16) unless there&apos;s a good reason not to.  The memory saving his are negligible, so we should probably not be using a cstring here.

I agree, keep it simple and use a String

&gt; WebCore/platform/mock/SpeechInputClientMock.cpp:53
&gt; +bool SpeechInputClientMock::startRecognition(int requestId, const CString&amp; languageTag, const IntRect&amp;)

I suggest renaming &apos;languageTag&apos; to &apos;language&apos;, because though BCP47 calls them as language tags it is confusing in the context of WebCore whether these are html tags or something else. If you agree, could also rename all other occurances of this name

&gt; WebCore/rendering/TextControlInnerElements.cpp:464
&gt; +CString InputFieldSpeechButtonElement::validatedInheritedLanguage(HTMLInputElement *input)

I think a better place for validating this would be inside the Element::computeInheritedLanguage() method you are calling below. That will allow all callers of that method to benefit from this validation instead of just speech input.

&gt;&gt; WebKit/chromium/public/WebSpeechInputController.h:47
&gt;&gt; +    virtual bool startRecognition(int requestId, const WebCString&amp;, const WebRect&amp;)
&gt; 
&gt; this WebCString parameter needs a name.  you should give parameters a name
&gt; unless the name you would pick is redundant with the type name.

Can you also name the WebRect to &apos;element_rect&apos; since that is not obvious as well?

&gt;&gt; WebKit/chromium/public/WebSpeechInputControllerMock.h:47
&gt;&gt; +    virtual void setMockRecognitionResult(const WebString&amp; result, const WebString&amp; languageTag) = 0;
&gt; 
&gt; We don&apos;t do pure virtual methods in the WebKit API anymore.  Please make this (and others) have a WEBKIT_ASSERT_NOT_REACHED() default method body.

I think pure virtual is used for all public APIs called by the embedder, and WEBKIT_ASSERT_NOT_REACHED() is used for all public APIs implemented by the embedder (and called by webkit). In that context, this interface is called by the embedder hence pure virtual is matching the style.

&gt; WebKit/chromium/src/WebSpeechInputControllerMockImpl.cpp:59
&gt;  void WebSpeechInputControllerMockImpl::setMockRecognitionResult(const WebString&amp; result)

Is this old method still required?

&gt;&gt; WebKit/chromium/src/WebViewImpl.cpp:279
&gt;&gt; +    , m_speechInputClient(new SpeechInputClientImpl(client))
&gt; 
&gt; SpeechInputClientImpl should have a create factory method that returns a passownptr

For the reason behind this suggestion, please see https://lists.webkit.org/pipermail/webkit-dev/2010-August/014006.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290912</commentid>
    <comment_count>13</comment_count>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2010-10-07 04:07:07 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; &gt; WebKit/chromium/src/WebSpeechInputControllerMockImpl.cpp:59
&gt; &gt;  void WebSpeechInputControllerMockImpl::setMockRecognitionResult(const WebString&amp; result)
&gt; 
&gt; Is this old method still required?

I&apos;m afraid that for the moment it is. It breaks chromium&apos;s test_shell otherwise. I&apos;ll remove this in a new patch once the chromium-side one has been applied.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290923</commentid>
    <comment_count>14</comment_count>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2010-10-07 04:55:07 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 69940 [details])
&gt; &gt; LayoutTests/fast/speech/input-text-speechbutton.html:35
&gt; &gt; +        layoutTestController.setMockSpeechInputResult(&apos;Pictures of the moon&apos;, &apos;en&apos;);
&gt; 
&gt; Is &apos;en&apos; required here or can we pass an empty string? On a related note, does the c++ code get &apos;en&apos; as the language if the web page did not specify any language at the document or node level?

In this case we should pass &apos;en&apos; there since the empty string is left for the invalid and unspecified language tag cases, which have their own tests. The c++ code in this patch won&apos;t get any language if none is specified. This will be done in the chromium side of the patch, where the application locale will be used when receiving an empty language tag string.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291181</commentid>
    <comment_count>15</comment_count>
      <attachid>70128</attachid>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2010-10-07 12:30:30 -0700</bug_when>
    <thetext>Created attachment 70128
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291186</commentid>
    <comment_count>16</comment_count>
      <attachid>69940</attachid>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2010-10-07 12:39:13 -0700</bug_when>
    <thetext>Comment on attachment 69940
Patch

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

&gt;&gt; LayoutTests/fast/speech/input-text-language-tag.html:15
&gt;&gt; +function onChange_none() {
&gt; 
&gt; this is not webkit style..fix here and elsewhere

Done.

&gt;&gt; LayoutTests/fast/speech/input-text-language-tag.html:48
&gt;&gt; +    var input_none = document.createElement(&apos;input&apos;);
&gt; 
&gt; Can you declare these input elements in html instead of having all this JS code to create and initialize them?

Done.

&gt;&gt; LayoutTests/fast/speech/input-text-language-tag.html:50
&gt;&gt; +    input_none.speech = &apos;speech&apos;;
&gt; 
&gt; This will no longer work, I renamed this attribute to webkitSpeech recently. So this will become:
&gt;   input.webkitSpeech = &apos;webkitSpeech&apos;
&gt; Same for all other places in this file. And if you take the above suggestion and declare these in html, then use
&gt;   &lt;input x-webkit-speech&gt;

Done.

&gt;&gt;&gt; LayoutTests/fast/speech/input-text-speechbutton.html:35
&gt;&gt;&gt; +        layoutTestController.setMockSpeechInputResult(&apos;Pictures of the moon&apos;, &apos;en&apos;);
&gt;&gt; 
&gt;&gt; Is &apos;en&apos; required here or can we pass an empty string? On a related note, does the c++ code get &apos;en&apos; as the language if the web page did not specify any language at the document or node level?
&gt; 
&gt; In this case we should pass &apos;en&apos; there since the empty string is left for the invalid and unspecified language tag cases, which have their own tests. The c++ code in this patch won&apos;t get any language if none is specified. This will be done in the chromium side of the patch, where the application locale will be used when receiving an empty language tag string.

Sorry, my mistake. For some reason I though you where talking about the language tag layout test. You&apos;re right, in this case the most logical choice would be to pass an empty language string as no language is set in the test.

However I found today some segmentation fault bugs caused by the HashMap handling these results when the language was an empty string. Because of this, now any call to setMockSpeechInputResult with an empty language string is ignored. In the new patch I have set the appropriate language tags in this and other tests using &apos;en&apos; as language (could be any valid one).

&gt;&gt; WebCore/ChangeLog:5
&gt;&gt; +        Patch the current speech HTML tag implementation to use and validate
&gt; 
&gt; nit: replace &apos;speech HTML tag&apos; with &apos;speech input&apos; since speech input has not introduced any new HTML tags, instead it tries to work with existing ones.

Done.

&gt;&gt;&gt;&gt;&gt; WebCore/page/SpeechInput.cpp:96
&gt;&gt;&gt;&gt;&gt; +bool SpeechInput::startRecognition(int listenerId, const CString&amp; languageTag, const IntRect&amp; elementRect)
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; Why are you using a CString for the language identifier?
&gt;&gt;&gt; 
&gt;&gt;&gt; Because the expected input is a valid BCP47 language tag: http://tools.ietf.org/rfc/bcp/bcp47.txt. The spec includes a grammar for the valid ones but all of them are composed of alphanumeric ASCII characters and the &apos;-&apos; symbol. Any tag not passing this simple test is considered invalid and the languageTag variable becomes an empty string. Note that a full language tag parsing for validation is not intended here.
&gt;&gt;&gt; 
&gt;&gt;&gt; So, since any valid content can be safely represented with a 8-bit ASCII string (even with a 7-bit one) there&apos;s absolutely no need to use any wide-char strings for this. It&apos;s just a waste of memory.
&gt;&gt; 
&gt;&gt; For simplicity we generally stick with strings (UTF16) unless there&apos;s a good reason not to.  The memory saving his are negligible, so we should probably not be using a cstring here.
&gt; 
&gt; I agree, keep it simple and use a String

Done.

&gt;&gt; WebCore/platform/mock/SpeechInputClientMock.cpp:53
&gt;&gt; +bool SpeechInputClientMock::startRecognition(int requestId, const CString&amp; languageTag, const IntRect&amp;)
&gt; 
&gt; I suggest renaming &apos;languageTag&apos; to &apos;language&apos;, because though BCP47 calls them as language tags it is confusing in the context of WebCore whether these are html tags or something else. If you agree, could also rename all other occurances of this name

Done.

&gt;&gt; WebCore/rendering/TextControlInnerElements.cpp:103
&gt;&gt; +    
&gt; 
&gt; get rid of white space

Done.

&gt;&gt; WebCore/rendering/TextControlInnerElements.cpp:286
&gt;&gt; + 
&gt; 
&gt; get rid of white space

Done.

&gt;&gt; WebCore/rendering/TextControlInnerElements.cpp:464
&gt;&gt; +CString InputFieldSpeechButtonElement::validatedInheritedLanguage(HTMLInputElement *input)
&gt; 
&gt; I think a better place for validating this would be inside the Element::computeInheritedLanguage() method you are calling below. That will allow all callers of that method to benefit from this validation instead of just speech input.

Done.

&gt;&gt;&gt; WebKit/chromium/public/WebSpeechInputController.h:47
&gt;&gt;&gt; +    virtual bool startRecognition(int requestId, const WebCString&amp;, const WebRect&amp;)
&gt;&gt; 
&gt;&gt; this WebCString parameter needs a name.  you should give parameters a name
&gt;&gt; unless the name you would pick is redundant with the type name.
&gt; 
&gt; Can you also name the WebRect to &apos;element_rect&apos; since that is not obvious as well?

Done.

&gt;&gt;&gt; WebKit/chromium/public/WebSpeechInputControllerMock.h:47
&gt;&gt;&gt; +    virtual void setMockRecognitionResult(const WebString&amp; result, const WebString&amp; languageTag) = 0;
&gt;&gt; 
&gt;&gt; We don&apos;t do pure virtual methods in the WebKit API anymore.  Please make this (and others) have a WEBKIT_ASSERT_NOT_REACHED() default method body.
&gt; 
&gt; I think pure virtual is used for all public APIs called by the embedder, and WEBKIT_ASSERT_NOT_REACHED() is used for all public APIs implemented by the embedder (and called by webkit). In that context, this interface is called by the embedder hence pure virtual is matching the style.

No changes here for the moment.

&gt;&gt; WebKit/chromium/src/WebSpeechInputControllerMockImpl.cpp:59
&gt;&gt;  void WebSpeechInputControllerMockImpl::setMockRecognitionResult(const WebString&amp; result)
&gt; 
&gt; Is this old method still required?

Yes, for the moment it is. It breaks chromium&apos;s test_shell otherwise. I&apos;ll delete these in a future patch once the chromium side has landed.

&gt;&gt; WebKit/chromium/src/WebSpeechInputControllerMockImpl.h:72
&gt;&gt; +    // TODO(leandrogracia): delete this temporary fix. Required to launch a two-sided patch.
&gt; 
&gt; This is not Webkit style.  Use FIXME.

Done.

&gt;&gt;&gt; WebKit/chromium/src/WebViewImpl.cpp:279
&gt;&gt;&gt; +    , m_speechInputClient(new SpeechInputClientImpl(client))
&gt;&gt; 
&gt;&gt; SpeechInputClientImpl should have a create factory method that returns a passownptr
&gt; 
&gt; For the reason behind this suggestion, please see https://lists.webkit.org/pipermail/webkit-dev/2010-August/014006.html

Done. Thanks for the link.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291296</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-07 15:54:28 -0700</bug_when>
    <thetext>Attachment 70128 did not build on gtk:
Build output: http://queues.webkit.org/results/4222120</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291621</commentid>
    <comment_count>18</comment_count>
      <attachid>70243</attachid>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2010-10-08 06:58:47 -0700</bug_when>
    <thetext>Created attachment 70243
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291638</commentid>
    <comment_count>19</comment_count>
      <attachid>70248</attachid>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2010-10-08 07:20:08 -0700</bug_when>
    <thetext>Created attachment 70248
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291654</commentid>
    <comment_count>20</comment_count>
      <attachid>70248</attachid>
    <who name="Satish Sampath">satish</who>
    <bug_when>2010-10-08 07:38:40 -0700</bug_when>
    <thetext>Comment on attachment 70248
Patch

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

&gt; LayoutTests/fast/speech/input-text-language-tag.html:16
&gt; +    shouldBeEqualToString(&apos;document.getElementById(&quot;speechInputNone&quot;).value&apos;, &apos;error: no result found for language \&apos;\&apos;&apos;);

Instead of treating this as an error case, can you set a mock result for the empty language tag and check that here?

&gt; WebCore/platform/mock/SpeechInputClientMock.cpp:33
&gt; +#include &lt;wtf/text/CString.h&gt;

Do you need this include in the latest code?

&gt; WebCore/platform/mock/SpeechInputClientMock.cpp:88
&gt; +        m_recognitionResult.set(&quot;_&quot;, result);

Define &quot;_&quot; as a constant at the top of the file and use it both here and in timerFired(). Also add a comment with this constant declaration explaining what it is used for.

&gt; WebCore/platform/mock/SpeechInputClientMock.cpp:103
&gt; +            String error(&quot;error: no result found for language &apos;&quot;);

Since this is test code and from the test result we know exactly which portion of the code called this, perhaps we don&apos;t need this human-readable error string. Instead you can just skip calling setRecognitionResult(). That also matches what the real recognizer would do, if it was not able to recognize the user voice in the given language.

&gt; WebCore/platform/mock/SpeechInputClientMock.h:55
&gt; +    bool startRecognition(int, const WTF::String&amp;, const IntRect&amp;);

Remove the WTF:: specifier

&gt; WebKit/chromium/src/SpeechInputClientImpl.h:39
&gt; +#include &lt;wtf/text/WTFString.h&gt;

Remove this since you have a forward declaration for String below.

&gt; WebKit/chromium/src/WebSpeechInputControllerMockImpl.cpp:60
&gt; +    m_webcoreMock-&gt;setRecognitionResult(result, WebString::fromUTF8(&quot;en&quot;));

Should you pass an empty string here instead of &apos;en&apos; ?

&gt; WebKit/chromium/src/WebSpeechInputControllerMockImpl.h:39
&gt; +#include &lt;wtf/text/WTFString.h&gt;

Remove this since you have a forward declaration for String below.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291671</commentid>
    <comment_count>21</comment_count>
      <attachid>70248</attachid>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2010-10-08 08:44:48 -0700</bug_when>
    <thetext>Comment on attachment 70248
Patch

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

&gt;&gt; LayoutTests/fast/speech/input-text-language-tag.html:16
&gt;&gt; +    shouldBeEqualToString(&apos;document.getElementById(&quot;speechInputNone&quot;).value&apos;, &apos;error: no result found for language \&apos;\&apos;&apos;);
&gt; 
&gt; Instead of treating this as an error case, can you set a mock result for the empty language tag and check that here?

Discussed and rejected. We need a result in all cases to start the change event, and this is as good as any other.

&gt;&gt; WebCore/platform/mock/SpeechInputClientMock.cpp:33
&gt;&gt; +#include &lt;wtf/text/CString.h&gt;
&gt; 
&gt; Do you need this include in the latest code?

Sorry, my mistake during rebase merges.
Done.

&gt;&gt; WebCore/platform/mock/SpeechInputClientMock.cpp:88
&gt;&gt; +        m_recognitionResult.set(&quot;_&quot;, result);
&gt; 
&gt; Define &quot;_&quot; as a constant at the top of the file and use it both here and in timerFired(). Also add a comment with this constant declaration explaining what it is used for.

Done.

&gt;&gt; WebCore/platform/mock/SpeechInputClientMock.cpp:103
&gt;&gt; +            String error(&quot;error: no result found for language &apos;&quot;);
&gt; 
&gt; Since this is test code and from the test result we know exactly which portion of the code called this, perhaps we don&apos;t need this human-readable error string. Instead you can just skip calling setRecognitionResult(). That also matches what the real recognizer would do, if it was not able to recognize the user voice in the given language.

Wee need some output even for the empty language case. Otherwise no change event will be generated and the test will timeout without any checking.

&gt;&gt; WebCore/platform/mock/SpeechInputClientMock.h:55
&gt;&gt; +    bool startRecognition(int, const WTF::String&amp;, const IntRect&amp;);
&gt; 
&gt; Remove the WTF:: specifier

Done.

&gt;&gt; WebKit/chromium/src/SpeechInputClientImpl.h:39
&gt;&gt; +#include &lt;wtf/text/WTFString.h&gt;
&gt; 
&gt; Remove this since you have a forward declaration for String below.

Done.

&gt;&gt; WebKit/chromium/src/WebSpeechInputControllerMockImpl.cpp:60
&gt;&gt; +    m_webcoreMock-&gt;setRecognitionResult(result, WebString::fromUTF8(&quot;en&quot;));
&gt; 
&gt; Should you pass an empty string here instead of &apos;en&apos; ?

Done. Now that mock results for empty language strings are again supported it makes sense.

&gt;&gt; WebKit/chromium/src/WebSpeechInputControllerMockImpl.h:39
&gt;&gt; +#include &lt;wtf/text/WTFString.h&gt;
&gt; 
&gt; Remove this since you have a forward declaration for String below.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291673</commentid>
    <comment_count>22</comment_count>
      <attachid>70252</attachid>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2010-10-08 08:49:45 -0700</bug_when>
    <thetext>Created attachment 70252
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291677</commentid>
    <comment_count>23</comment_count>
      <attachid>70252</attachid>
    <who name="Satish Sampath">satish</who>
    <bug_when>2010-10-08 08:54:06 -0700</bug_when>
    <thetext>Comment on attachment 70252
Patch

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

r=me
Looks good, small nit below.

&gt; WebCore/platform/mock/SpeechInputClientMock.cpp:39
&gt; +    // Empty language strings crash the HashMap. This value, an invalid BCP47 tag, is used for those cases.

I&apos;d suggest rewording this as &apos;HashMap doesn&apos;t support empty strings as keys, so ...&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291691</commentid>
    <comment_count>24</comment_count>
      <attachid>70252</attachid>
    <who name="">mitz</who>
    <bug_when>2010-10-08 09:09:58 -0700</bug_when>
    <thetext>Comment on attachment 70252
Patch

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

&gt; WebCore/dom/Element.cpp:1474
&gt; +        CString languageTag = value.string().ascii();

The creation of a CString here is unnecessary. Please don’t do this.

&gt; WebCore/page/SpeechInputClient.h:39
&gt; +namespace WTF {
&gt; +class String;
&gt; +}
&gt; +

Why is this needed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291696</commentid>
    <comment_count>25</comment_count>
      <attachid>70258</attachid>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2010-10-08 09:16:11 -0700</bug_when>
    <thetext>Created attachment 70258
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>293368</commentid>
    <comment_count>26</comment_count>
      <attachid>70602</attachid>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2010-10-13 05:35:27 -0700</bug_when>
    <thetext>Created attachment 70602
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>293370</commentid>
    <comment_count>27</comment_count>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2010-10-13 05:46:51 -0700</bug_when>
    <thetext>Here are the links to all the other parts of this patch (4-sided):
- 1st part: http://codereview.chromium.org/3615005/show
- 2nd part: https://bugs.webkit.org/show_bug.cgi?id=47089 (this one)
- 3rd part: http://codereview.chromium.org/3595018/show
- 4th part: https://bugs.webkit.org/show_bug.cgi?id=47420</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>293404</commentid>
    <comment_count>28</comment_count>
      <attachid>70608</attachid>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2010-10-13 06:54:28 -0700</bug_when>
    <thetext>Created attachment 70608
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>293410</commentid>
    <comment_count>29</comment_count>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2010-10-13 07:02:28 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; (From update of attachment 70252 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=70252&amp;action=review
&gt;  
&gt; &gt; WebCore/page/SpeechInputClient.h:39
&gt; &gt; +namespace WTF {
&gt; &gt; +class String;
&gt; &gt; +}
&gt; &gt; +
&gt; 
&gt; Why is this needed?

That&apos;s for the language string in the startRecognition method. I already tried to remove it but the build breaks if I do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>293421</commentid>
    <comment_count>30</comment_count>
    <who name="">mitz</who>
    <bug_when>2010-10-13 07:34:17 -0700</bug_when>
    <thetext>(In reply to comment #29)
&gt; (In reply to comment #24)
&gt; &gt; (From update of attachment 70252 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=70252&amp;action=review
&gt; &gt;  
&gt; &gt; &gt; WebCore/page/SpeechInputClient.h:39
&gt; &gt; &gt; +namespace WTF {
&gt; &gt; &gt; +class String;
&gt; &gt; &gt; +}
&gt; &gt; &gt; +
&gt; &gt; 
&gt; &gt; Why is this needed?
&gt; 
&gt; That&apos;s for the language string in the startRecognition method. I already tried to remove it but the build breaks if I do.

Please just include &lt;wtf/Forward.h&gt; and use unqualified String.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>293432</commentid>
    <comment_count>31</comment_count>
      <attachid>70611</attachid>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2010-10-13 07:59:01 -0700</bug_when>
    <thetext>Created attachment 70611
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>293437</commentid>
    <comment_count>32</comment_count>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2010-10-13 08:19:33 -0700</bug_when>
    <thetext>(In reply to comment #30)
&gt; (In reply to comment #29)
&gt; &gt; (In reply to comment #24)
&gt; &gt; &gt; (From update of attachment 70252 [details] [details] [details])
&gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=70252&amp;action=review
&gt; &gt; &gt;  
&gt; &gt; &gt; &gt; WebCore/page/SpeechInputClient.h:39
&gt; &gt; &gt; &gt; +namespace WTF {
&gt; &gt; &gt; &gt; +class String;
&gt; &gt; &gt; &gt; +}
&gt; &gt; &gt; &gt; +
&gt; &gt; &gt; 
&gt; &gt; &gt; Why is this needed?
&gt; &gt; 
&gt; &gt; That&apos;s for the language string in the startRecognition method. I already tried to remove it but the build breaks if I do.
&gt; 
&gt; Please just include &lt;wtf/Forward.h&gt; and use unqualified String.

Done there and in WebKit/chromium/src/SpeechInputClientImpl.h/cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294732</commentid>
    <comment_count>33</comment_count>
      <attachid>70611</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-10-15 06:49:26 -0700</bug_when>
    <thetext>Comment on attachment 70611
Patch

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

Looks fine to me.  Mitz, please speak up if you have any additional concerns?

&gt; WebKit/chromium/src/SpeechInputClientImpl.cpp:38
&gt;  #include &quot;page/SpeechInputListener.h&quot;

no page/

&gt; WebKit/chromium/src/SpeechInputClientImpl.h:37
&gt;  #include &quot;page/SpeechInputClient.h&quot;

Remove page/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294749</commentid>
    <comment_count>34</comment_count>
      <attachid>70867</attachid>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2010-10-15 08:05:51 -0700</bug_when>
    <thetext>Created attachment 70867
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294750</commentid>
    <comment_count>35</comment_count>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2010-10-15 08:06:21 -0700</bug_when>
    <thetext>(In reply to comment #33)
&gt; (From update of attachment 70611 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=70611&amp;action=review
&gt; 
&gt; Looks fine to me.  Mitz, please speak up if you have any additional concerns?
&gt; 
&gt; &gt; WebKit/chromium/src/SpeechInputClientImpl.cpp:38
&gt; &gt;  #include &quot;page/SpeechInputListener.h&quot;
&gt; 
&gt; no page/
&gt; 
&gt; &gt; WebKit/chromium/src/SpeechInputClientImpl.h:37
&gt; &gt;  #include &quot;page/SpeechInputClient.h&quot;
&gt; 
&gt; Remove page/

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296161</commentid>
    <comment_count>36</comment_count>
      <attachid>71163</attachid>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2010-10-19 06:54:29 -0700</bug_when>
    <thetext>Created attachment 71163
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296164</commentid>
    <comment_count>37</comment_count>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2010-10-19 06:55:28 -0700</bug_when>
    <thetext>(In reply to comment #36)
&gt; Created an attachment (id=71163) [details]
&gt; Patch

Rebased for review and landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296165</commentid>
    <comment_count>38</comment_count>
      <attachid>71163</attachid>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2010-10-19 06:57:22 -0700</bug_when>
    <thetext>Comment on attachment 71163
Patch

Rebase performed. Please review and commit if looks good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296166</commentid>
    <comment_count>39</comment_count>
      <attachid>71163</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-10-19 07:00:29 -0700</bug_when>
    <thetext>Comment on attachment 71163
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296188</commentid>
    <comment_count>40</comment_count>
      <attachid>71163</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-10-19 07:50:36 -0700</bug_when>
    <thetext>Comment on attachment 71163
Patch

Rejecting patch 71163 from commit-queue.

Failed to run &quot;[&apos;./WebKitTools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=abarth-cq-sl&apos;, &apos;build-and-test&apos;, &apos;--no-clean&apos;, &apos;--no-update&apos;, &apos;--test&apos;, &apos;--quiet&apos;, &apos;--non-interactive&apos;]&quot; exit_code: 2
Last 500 characters of output:
....ok
WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseSvnPropertyValue..........ok
WebKitTools/Scripts/webkitperl/VCSUtils_unittest/prepareParsedPatch.............ok
WebKitTools/Scripts/webkitperl/VCSUtils_unittest/runPatchCommand................ok
WebKitTools/Scripts/webkitperl/VCSUtils_unittest/setChangeLogDateAndReviewer....ok
All tests successful.
Files=14, Tests=304,  1 wallclock secs ( 0.63 cusr +  0.13 csys =  0.76 CPU)
Running build-dumprendertree
Compiling DumpRenderTree failed!

Full output: http://queues.webkit.org/results/4430115</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296777</commentid>
    <comment_count>41</comment_count>
      <attachid>71163</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-10-20 07:03:46 -0700</bug_when>
    <thetext>Comment on attachment 71163
Patch

once more</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296795</commentid>
    <comment_count>42</comment_count>
      <attachid>71163</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-10-20 07:53:57 -0700</bug_when>
    <thetext>Comment on attachment 71163
Patch

Rejecting patch 71163 from commit-queue.

Failed to run &quot;[&apos;./WebKitTools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=abarth-cq-sl&apos;, &apos;build-and-test&apos;, &apos;--no-clean&apos;, &apos;--no-update&apos;, &apos;--test&apos;, &apos;--quiet&apos;, &apos;--non-interactive&apos;]&quot; exit_code: 2
Last 500 characters of output:
....ok
WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseSvnPropertyValue..........ok
WebKitTools/Scripts/webkitperl/VCSUtils_unittest/prepareParsedPatch.............ok
WebKitTools/Scripts/webkitperl/VCSUtils_unittest/runPatchCommand................ok
WebKitTools/Scripts/webkitperl/VCSUtils_unittest/setChangeLogDateAndReviewer....ok
All tests successful.
Files=14, Tests=304,  0 wallclock secs ( 0.64 cusr +  0.14 csys =  0.78 CPU)
Running build-dumprendertree
Compiling DumpRenderTree failed!

Full output: http://queues.webkit.org/results/4517018</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296826</commentid>
    <comment_count>43</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-20 09:15:39 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/70149 might have broken SnowLeopard Intel Release (Tests) and Qt Linux Release</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296839</commentid>
    <comment_count>44</comment_count>
      <attachid>71299</attachid>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2010-10-20 09:35:45 -0700</bug_when>
    <thetext>Created attachment 71299
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296840</commentid>
    <comment_count>45</comment_count>
      <attachid>71299</attachid>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2010-10-20 09:37:40 -0700</bug_when>
    <thetext>Comment on attachment 71299
Patch

Added the missing patches to the Win, Mac and Wx versions of the LayoutTestController that were causing the build to break.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296845</commentid>
    <comment_count>46</comment_count>
      <attachid>71299</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-10-20 09:42:07 -0700</bug_when>
    <thetext>Comment on attachment 71299
Patch

looks fine...hopefully ASSERT_UNUSEDs aren&apos;t necessary, but I guess the commit queue will let us know if it is?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296897</commentid>
    <comment_count>47</comment_count>
      <attachid>71299</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-10-20 11:55:10 -0700</bug_when>
    <thetext>Comment on attachment 71299
Patch

Rejecting patch 71299 from commit-queue.

Failed to run &quot;[&apos;./WebKitTools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;apply-attachment&apos;, &apos;--force-clean&apos;, &apos;--non-interactive&apos;, &apos;--quiet&apos;, 71299]&quot; exit_code: 2
Cleaning working directory
Updating working directory
Failed to run &quot;[&apos;WebKitTools/Scripts/update-webkit&apos;]&quot; exit_code: 2

Full output: http://queues.webkit.org/results/4524017</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296902</commentid>
    <comment_count>48</comment_count>
      <attachid>71299</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-10-20 11:57:58 -0700</bug_when>
    <thetext>Comment on attachment 71299
Patch

I think this was a false rejection from a run-away commit-node.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297310</commentid>
    <comment_count>49</comment_count>
      <attachid>71299</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-10-21 02:24:37 -0700</bug_when>
    <thetext>Comment on attachment 71299
Patch

Rejecting patch 71299 from commit-queue.

Failed to run &quot;[&apos;./WebKitTools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;apply-attachment&apos;, &apos;--force-clean&apos;, &apos;--non-interactive&apos;, &apos;--quiet&apos;, 71299]&quot; exit_code: 2
Cleaning working directory
Updating working directory
Logging in as commit-queue@webkit.org...
Fetching: https://bugs.webkit.org/attachment.cgi?id=71299&amp;action=edit
Fetching: https://bugs.webkit.org/show_bug.cgi?id=47089&amp;ctype=xml
Processing 1 patch from 1 bug.
Processing patch 71299 from bug 47089.
Failed to run &quot;[u&apos;/Projects/CommitQueue/WebKitTools/Scripts/svn-apply&apos;, u&apos;--reviewer&apos;, u&apos;Jeremy Orlow&apos;, u&apos;--force&apos;]&quot; exit_code: 1

Full output: http://queues.webkit.org/results/4616007</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297623</commentid>
    <comment_count>50</comment_count>
      <attachid>71487</attachid>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2010-10-21 14:05:36 -0700</bug_when>
    <thetext>Created attachment 71487
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297673</commentid>
    <comment_count>51</comment_count>
      <attachid>71487</attachid>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2010-10-21 15:03:44 -0700</bug_when>
    <thetext>Comment on attachment 71487
Patch

Rebase and patches to the Qt port.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297880</commentid>
    <comment_count>52</comment_count>
      <attachid>71540</attachid>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2010-10-22 03:08:44 -0700</bug_when>
    <thetext>Created attachment 71540
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297882</commentid>
    <comment_count>53</comment_count>
      <attachid>71540</attachid>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2010-10-22 03:13:58 -0700</bug_when>
    <thetext>Comment on attachment 71540
Patch

Rebase.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297911</commentid>
    <comment_count>54</comment_count>
      <attachid>71540</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-10-22 05:09:26 -0700</bug_when>
    <thetext>Comment on attachment 71540
Patch

Clearing flags on attachment: 71540

Committed r70301: &lt;http://trac.webkit.org/changeset/70301&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297912</commentid>
    <comment_count>55</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-10-22 05:09:41 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297930</commentid>
    <comment_count>56</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-22 05:46:51 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/70301 might have broken Qt Linux Release
The following tests are not passing:
fast/css/lang-selector-empty-attribute.xhtml
fast/dom/SelectorAPI/resig-SelectorsAPI-test.xhtml</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298009</commentid>
    <comment_count>57</comment_count>
      <attachid>71569</attachid>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2010-10-22 09:34:28 -0700</bug_when>
    <thetext>Created attachment 71569
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298012</commentid>
    <comment_count>58</comment_count>
      <attachid>71569</attachid>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2010-10-22 09:38:05 -0700</bug_when>
    <thetext>Comment on attachment 71569
Patch

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

Fixed problems in Element.cpp that caused some layout tests to fail.

&gt; WebCore/dom/Element.cpp:1480
&gt; +        CString asciiOnly = value.string().ascii();

The CString object is required here to ensure that the memory pointed by p is valid until the end of the if block. Note that value contains the object returned by string() but ascii creates a new CString with the ASCII-only representation of the UTF16 string value, replacing all non-ASCII characters with question mark symbols.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298071</commentid>
    <comment_count>59</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-10-22 10:52:04 -0700</bug_when>
    <thetext>Reopening, since r70301 has been rolled out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298074</commentid>
    <comment_count>60</comment_count>
      <attachid>71569</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-10-22 10:55:34 -0700</bug_when>
    <thetext>Comment on attachment 71569
Patch

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

&gt; WebCore/ChangeLog:18
&gt; +        Fixed a problem in dom/Element.cpp that caused some layout tests to fail.

No need to mention that - this doesn&apos;t fix any problems in ToT.

&gt; WebCore/ChangeLog:22
&gt; +        (WebCore::Element::computeInheritedLanguage): includes a brief character
&gt; +          validation for the BCP 47 language tag.

Please file a separate bug for this, and provide a patch that tests this change with default WebKit build options (i.e. outside of speech recognition context). r- for the need to split DOM changes out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300293</commentid>
    <comment_count>61</comment_count>
      <attachid>72049</attachid>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2010-10-27 09:50:08 -0700</bug_when>
    <thetext>Created attachment 72049
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300302</commentid>
    <comment_count>62</comment_count>
      <attachid>72049</attachid>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2010-10-27 09:59:46 -0700</bug_when>
    <thetext>Comment on attachment 72049
Patch

Language validation has been removed and handled separately in bug https://bugs.webkit.org/show_bug.cgi?id=48225 (currently a WONTFIX). The invalid language tag case has been removed from the layout test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300306</commentid>
    <comment_count>63</comment_count>
      <attachid>72049</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-10-27 10:03:03 -0700</bug_when>
    <thetext>Comment on attachment 72049
Patch

yup...looks pretty much like before minus those bits</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300323</commentid>
    <comment_count>64</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-10-27 10:14:12 -0700</bug_when>
    <thetext>(In reply to comment #63)
&gt; (From update of attachment 72049 [details])
&gt; yup...looks pretty much like before minus those bits

r=me (AP&apos;s comments seem to be addressed, but please yell if that&apos;s not true)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300332</commentid>
    <comment_count>65</comment_count>
      <attachid>72049</attachid>
    <who name="Satish Sampath">satish</who>
    <bug_when>2010-10-27 10:19:59 -0700</bug_when>
    <thetext>Comment on attachment 72049
Patch

Clearing flags on attachment: 72049

Committed r70665: &lt;http://trac.webkit.org/changeset/70665&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300333</commentid>
    <comment_count>66</comment_count>
    <who name="Satish Sampath">satish</who>
    <bug_when>2010-10-27 10:20:15 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300349</commentid>
    <comment_count>67</comment_count>
      <attachid>72049</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-10-27 10:29:51 -0700</bug_when>
    <thetext>Comment on attachment 72049
Patch

Sorry, I only looked at the latest patch now. I&apos;m not happy with it.

+        http://codereview.chromium.org/3595018/show. The last of the 4 patches
+        depends also on the language tag validation provided by this patch:
+        https://bugs.webkit.org/show_bug.cgi?id=48225.
...
+description(&apos;Tests for language tag inheritance and validation in speech buttons.&apos;);
...
+        Patch the current speech input implementation to use and validate the
+        nearest language tag. The language is now passed to the startRecognition
...
+        (WebCore::Element::computeInheritedLanguage): includes a brief character
+          validation for the BCP 47 language tag.

We don&apos;t validate, correct?

+namespace {

As a matter of coding style, we use static keyword, not anonymous namespaces.

+    // HashMap doesn&apos;t support empty strings as keys, so this value (an invalid BCP47 tag) is used for those cases.
+    const String emptyLanguage = &quot;_&quot;;

This will have an observable effect, now that we don&apos;t validate - the computed language can be &quot;_&quot;. Perhaps not a big deal, but somewhat unclean nonetheless. This creates an untested and poorly understood code path - something that security bugs need to breed.

Also, we can not have global static objects with constructors and destructors. The rationale is that no WebKit code at all should run when WebKit library is loaded into an application, and no WebKit code should run when an application quits.

We have an automated test that fails the build for constructors and destructors on Mac, so this should have broken Mac build. I&apos;m not sure if the check failed, or if you didn&apos;t try building on Mac.

Please consider using AtomicString for language codes - they are quite likely to all be the same in a particular engine instance, so atomizing should be highly beneficial.

I didn&apos;t read the whole patch, just the parts around instances of the word &quot;valid&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300415</commentid>
    <comment_count>68</comment_count>
    <who name="Satish Sampath">satish</who>
    <bug_when>2010-10-27 11:55:01 -0700</bug_when>
    <thetext>Reverted r70665 for reason:

Need to address Alexey&apos;s review comments.

Committed r70669: &lt;http://trac.webkit.org/changeset/70669&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300547</commentid>
    <comment_count>69</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-27 14:04:36 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/70665 might have broken GTK Linux 32-bit Debug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>301158</commentid>
    <comment_count>70</comment_count>
      <attachid>72208</attachid>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2010-10-28 10:50:08 -0700</bug_when>
    <thetext>Created attachment 72208
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>301159</commentid>
    <comment_count>71</comment_count>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2010-10-28 10:55:47 -0700</bug_when>
    <thetext>(In reply to comment #67)
&gt; (From update of attachment 72049 [details])
&gt; Sorry, I only looked at the latest patch now. I&apos;m not happy with it.
&gt; 
&gt; +        http://codereview.chromium.org/3595018/show. The last of the 4 patches
&gt; +        depends also on the language tag validation provided by this patch:
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=48225.
&gt; ...
&gt; +description(&apos;Tests for language tag inheritance and validation in speech buttons.&apos;);
&gt; ...
&gt; +        Patch the current speech input implementation to use and validate the
&gt; +        nearest language tag. The language is now passed to the startRecognition
&gt; ...
&gt; +        (WebCore::Element::computeInheritedLanguage): includes a brief character
&gt; +          validation for the BCP 47 language tag.
&gt; 
&gt; We don&apos;t validate, correct?
&gt; 
&gt; +namespace {
&gt; 
&gt; As a matter of coding style, we use static keyword, not anonymous namespaces.
&gt; 
&gt; +    // HashMap doesn&apos;t support empty strings as keys, so this value (an invalid BCP47 tag) is used for those cases.
&gt; +    const String emptyLanguage = &quot;_&quot;;
&gt; 
&gt; This will have an observable effect, now that we don&apos;t validate - the computed language can be &quot;_&quot;. Perhaps not a big deal, but somewhat unclean nonetheless. This creates an untested and poorly understood code path - something that security bugs need to breed.
&gt; 
&gt; Also, we can not have global static objects with constructors and destructors. The rationale is that no WebKit code at all should run when WebKit library is loaded into an application, and no WebKit code should run when an application quits.
&gt; 
&gt; We have an automated test that fails the build for constructors and destructors on Mac, so this should have broken Mac build. I&apos;m not sure if the check failed, or if you didn&apos;t try building on Mac.
&gt; 
&gt; Please consider using AtomicString for language codes - they are quite likely to all be the same in a particular engine instance, so atomizing should be highly beneficial.
&gt; 
&gt; I didn&apos;t read the whole patch, just the parts around instances of the word &quot;valid&quot;.

Changes done and AtomicString adopted for the language codes.

About solving the problem with the empty language case in the hash map, I think that handling the case separately is probably the simplest and cleanest way. Other possible solutions like STL maps required operator overloading, or using STL vectors required creating (language, result) tuples and checking for existing (language,*) entries. Could be done but this seems to be quite simpler.

Any suggestions are welcome, and thank you for the style information on the static objects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>301166</commentid>
    <comment_count>72</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-10-28 10:59:44 -0700</bug_when>
    <thetext>Thanks Leandro! I don&apos;t have any complaints about this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>301167</commentid>
    <comment_count>73</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-10-28 11:01:49 -0700</bug_when>
    <thetext>STL containers generally require exceptions to be enabled, so we cannot use them in WebKit (we sometimes use them in separate tools).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>301175</commentid>
    <comment_count>74</comment_count>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2010-10-28 11:12:43 -0700</bug_when>
    <thetext>(In reply to comment #73)
&gt; STL containers generally require exceptions to be enabled, so we cannot use them in WebKit (we sometimes use them in separate tools).

Good and useful to know. Thank you for your help.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>301690</commentid>
    <comment_count>75</comment_count>
      <attachid>72316</attachid>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2010-10-29 04:49:04 -0700</bug_when>
    <thetext>Created attachment 72316
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>301692</commentid>
    <comment_count>76</comment_count>
      <attachid>72316</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-10-29 04:53:26 -0700</bug_when>
    <thetext>Comment on attachment 72316
Patch

rubber stamp...again</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>301693</commentid>
    <comment_count>77</comment_count>
      <attachid>72316</attachid>
    <who name="Satish Sampath">satish</who>
    <bug_when>2010-10-29 05:00:17 -0700</bug_when>
    <thetext>Comment on attachment 72316
Patch

Clearing flags on attachment: 72316

Committed r70863: &lt;http://trac.webkit.org/changeset/70863&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>301694</commentid>
    <comment_count>78</comment_count>
    <who name="Satish Sampath">satish</who>
    <bug_when>2010-10-29 05:00:36 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69914</attachid>
            <date>2010-10-06 03:38:18 -0700</date>
            <delta_ts>2010-10-06 04:56:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47089-20101006113816.patch</filename>
            <type>text/plain</type>
            <size>21283</size>
            <attacher name="Leandro Graciá Gil">leandrogracia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmMjkyZjlkNGUxNzAzMGMxNDM5MWY0YmE3OTA3MGRiNDUxZDE5YmFkLi4yMWM5NDI0
YTQ2MzdiMWQwZmVkNzVjNWQ4OWMzNTUwN2E5NDFkZTg3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTAtMTAtMDYgIExlYW5kcm8gR3JhY2nDoSBHaWwgIDxsZWFuZHJvZ3JhY2lhQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGRlZCBhIGxheW91dCB0ZXN0IGZvciB0aGUgbGFuZ3VhZ2UgdGFnIGluIHNwZWVjaCBidXR0b25z
LiBVcGRhdGVkCisgICAgICAgIHRoZSBzcGVlY2ggYnV0dG9uIHRlc3QgdG8gaW5jbHVkZSB0aGUg
bmV3IGxhbmd1YWdlIHBhcmFtZXRlciBpbiB0aGUKKyAgICAgICAgbW9jayByZXN1bHQuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzA4OQorCisgICAg
ICAgICogZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1sYW5ndWFnZS10YWctZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L3NwZWVjaC9pbnB1dC10ZXh0LWxhbmd1YWdlLXRhZy5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3NwZWVjaC9pbnB1dC10ZXh0LXNwZWVjaGJ1dHRvbi5o
dG1sOiBBZGRlZCBsYW5ndWFnZSBwYXJhbWV0ZXIuCisKIDIwMTAtMDktMjQgIFNhdGlzaCBTYW1w
YXRoICA8c2F0aXNoQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBKZXJlbXkg
T3Jsb3cuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9pbnB1dC10ZXh0LWxh
bmd1YWdlLXRhZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9pbnB1dC10
ZXh0LWxhbmd1YWdlLXRhZy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWY3MWE1NTk0YTFkZDdh
NjcyNmUxNmFjMGJiZTFhZGEzN2NhNzk4ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3Qvc3BlZWNoL2lucHV0LXRleHQtbGFuZ3VhZ2UtdGFnLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDEyIEBACitUZXN0cyBmb3IgbGFuZ3VhZ2UgdGFnIGluaGVyaXRhbmNlIGFuZCB2YWxpZGF0
aW9uIGluIHNwZWVjaCBidXR0b25zPi4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
K1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNwZWVjaElucHV0X25vbmUiKS52YWx1ZSBp
cyAiZXJyb3I6IG5vIHJlc3VsdCBmb3IgdGhlIHByb3ZpZGVkIGxhbmd1YWdlIHRhZyIKK1BBU1Mg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNwZWVjaElucHV0X2VsZW1lbnQiKS52YWx1ZSBpcyAi
UGljdHVyZXMgb2YgdGhlIG1vb24iCitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzcGVl
Y2hJbnB1dF9pbmhlcml0ZWQiKS52YWx1ZSBpcyAi5pyI44Gu5YaZ55yfIgorUEFTUyBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgic3BlZWNoSW5wdXRfaW52YWxpZCIpLnZhbHVlIGlzICJlcnJvcjog
aW52YWxpZCBzdHJpbmcgKGluc3RlYWQgb2YgbGFuZ3VhZ2Ugbm90IGZvdW5kKSIKK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1sYW5ndWFnZS10YWcuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3Qvc3BlZWNoL2lucHV0LXRleHQtbGFuZ3VhZ2UtdGFnLmh0bWwKaW5kZXggMDM0
M2FmMTU0YjE2ODVmMTM4YzBiNTY0M2MwMzc0YmViY2FlMTEwOC4uNWQ2NzE4ZmUyNjJiMjAwZDRi
NjljMTM1ZGI4ZWI3YzY5ZmQ3NmNkYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9zcGVl
Y2gvaW5wdXQtdGV4dC1sYW5ndWFnZS10YWcuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Nw
ZWVjaC9pbnB1dC10ZXh0LWxhbmd1YWdlLXRhZy5odG1sCkBAIC0xLDUgKzEsNiBAQAogPCFET0NU
WVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgogPGh0bWw+Cis8bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+CiA8aGVhZD4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
anMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KIDxzY3JpcHQgc3JjPSIuLi9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgpAQCAtMTAsMjcgKzExLDc3IEBACiA8c2Ny
aXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiBkZXNjcmlwdGlvbignVGVzdHMgZm9yIGxhbmd1
YWdlIHRhZyBpbmhlcml0YW5jZSBhbmQgdmFsaWRhdGlvbiBpbiBzcGVlY2ggYnV0dG9ucz4uJyk7
CiAKLWZ1bmN0aW9uIG9uQ2hhbmdlKCkgewotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNwZWVjaElucHV0IikudmFsdWUnLCAnUGljdHVyZXMgb2Yg
dGhlIG1vb24jZW4tVUsnKTsKKy8vIE5vdGU6IHRlc3QgY2FzZXMgYXJlIHNlcXVlbnRpYWwgdG8g
ZW5zdXJlIHRoYXQgbm8gbmV3IHJlY29nbml0aW9uIHN0YXJ0cyB3aGVuIGFub3RoZXIgcmVjb2du
aXRpb24gcmVjb3JkaW5nIGlzIGFjdGl2ZS4KK2Z1bmN0aW9uIG9uQ2hhbmdlX25vbmUoKSB7Cisg
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3BlZWNo
SW5wdXRfbm9uZSIpLnZhbHVlJywgJ2Vycm9yOiBubyByZXN1bHQgZm9yIHRoZSBwcm92aWRlZCBs
YW5ndWFnZSB0YWcnKTsKKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzcGVlY2hCdXR0b25D
bGljaygnc3BlZWNoSW5wdXRfZWxlbWVudCcpOyB9LCA1MCk7Cit9CisKK2Z1bmN0aW9uIG9uQ2hh
bmdlX2VsZW1lbnQoKSB7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgic3BlZWNoSW5wdXRfZWxlbWVudCIpLnZhbHVlJywgJ1BpY3R1cmVzIG9mIHRo
ZSBtb29uJyk7CisgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc3BlZWNoQnV0dG9uQ2xpY2so
J3NwZWVjaElucHV0X2luaGVyaXRlZCcpOyB9LCA1MCk7Cit9CisKK2Z1bmN0aW9uIG9uQ2hhbmdl
X2luaGVyaXRlZCgpIHsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2RvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJzcGVlY2hJbnB1dF9pbmhlcml0ZWQiKS52YWx1ZScsICfmnIjjga7lhpnnnJ8n
KTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoJ2Vy
cm9yOiBpbnZhbGlkIHN0cmluZyAoaW5zdGVhZCBvZiBsYW5ndWFnZSBub3QgZm91bmQpJywgJycp
OworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNwZWVjaEJ1dHRvbkNsaWNrKCdzcGVlY2hJ
bnB1dF9pbnZhbGlkJyk7IH0sIDUwKTsKK30KKworZnVuY3Rpb24gb25DaGFuZ2VfaW52YWxpZCgp
IHsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJz
cGVlY2hJbnB1dF9pbnZhbGlkIikudmFsdWUnLCAnZXJyb3I6IGludmFsaWQgc3RyaW5nIChpbnN0
ZWFkIG9mIGxhbmd1YWdlIG5vdCBmb3VuZCknKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5z
ZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoJ2Vycm9yOiBubyByZXN1bHQgZm9yIHRoZSBwcm92aWRl
ZCBsYW5ndWFnZSB0YWcnLCAnJyk7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK2Z1bmN0aW9u
IHNwZWVjaEJ1dHRvbkNsaWNrKGVsZW1lbnRfaWQpIHsKKyAgICB2YXIgZWxlbWVudCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRfaWQpOworICAgIHZhciB4ID0gZWxlbWVudC5vZmZz
ZXRMZWZ0ICsgZWxlbWVudC5vZmZzZXRXaWR0aCAtIDQ7CisgICAgdmFyIHkgPSBlbGVtZW50Lm9m
ZnNldFRvcCArIGVsZW1lbnQub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICBldmVudFNlbmRlci5tb3Vz
ZU1vdmVUbyh4LCB5KTsKKyAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICBldmVudFNl
bmRlci5tb3VzZVVwKCk7CiB9CiAKIGZ1bmN0aW9uIHJ1bigpIHsKLSAgICB2YXIgaW5wdXQgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpOwotICAgIGlucHV0LmlkID0gJ3NwZWVjaElu
cHV0JzsKLSAgICBpbnB1dC5zcGVlY2ggPSAnc3BlZWNoJzsKLSAgICBpbnB1dC5sYW5nID0gJ2Vu
LVVLJzsKLSAgICBpbnB1dC5vbmNoYW5nZSA9IG9uQ2hhbmdlOwotICAgIGRvY3VtZW50LmJvZHku
YXBwZW5kQ2hpbGQoaW5wdXQpOworICAgIC8vIE5vIGNvbnRlbnQgbGFuZ3VhZ2UgKHNob3VsZCBk
ZWZhdWx0IHRvIGFuIGVtcHR5IHN0cmluZykKKyAgICB2YXIgaW5wdXRfbm9uZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7CisgICAgaW5wdXRfbm9uZS5pZCA9ICdzcGVlY2hJbnB1
dF9ub25lJzsKKyAgICBpbnB1dF9ub25lLnNwZWVjaCA9ICdzcGVlY2gnOworICAgIGlucHV0X25v
bmUub25jaGFuZ2UgPSBvbkNoYW5nZV9ub25lOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hp
bGQoaW5wdXRfbm9uZSk7CisKKyAgICAvLyBMYW5ndWFnZSB0YWcgaW4gdGhlIGVsZW1lbnQgKGVu
LUdCKQorICAgIHZhciBpbnB1dF9lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5w
dXQnKTsKKyAgICBpbnB1dF9lbGVtZW50LmlkID0gJ3NwZWVjaElucHV0X2VsZW1lbnQnOworICAg
IGlucHV0X2VsZW1lbnQuc3BlZWNoID0gJ3NwZWVjaCc7CisgICAgaW5wdXRfZWxlbWVudC5sYW5n
ID0gJ2VuLUdCJzsKKyAgICBpbnB1dF9lbGVtZW50Lm9uY2hhbmdlID0gb25DaGFuZ2VfZWxlbWVu
dDsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGlucHV0X2VsZW1lbnQpOworCisgICAg
Ly8gTGFuZ3VhZ2UgdGFnIGluaGVyaXRlZCBmcm9tIGNvbnRhaW5lciBvYmplY3QgKGphKQorICAg
IHZhciBpbnB1dF9pbmhlcml0ZWQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpOwor
ICAgIGlucHV0X2luaGVyaXRlZC5pZCA9ICdzcGVlY2hJbnB1dF9pbmhlcml0ZWQnOworICAgIGlu
cHV0X2luaGVyaXRlZC5zcGVlY2ggPSAnc3BlZWNoJzsKKyAgICBpbnB1dF9pbmhlcml0ZWQub25j
aGFuZ2UgPSBvbkNoYW5nZV9pbmhlcml0ZWQ7CisKKyAgICB2YXIgZGl2ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnZGl2Jyk7CisgICAgZGl2LmFwcGVuZENoaWxkKGlucHV0X2luaGVyaXRlZCk7
CisgICAgZGl2LmxhbmcgPSAnamEnOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZGl2
KTsKKworICAgIC8vIEludmFsaWQgbGFuZ3VhZ2UgdGFnIChzaG91bGQgcmV0dXJuIGFuIGVtcHR5
IHN0cmluZykKKyAgICB2YXIgaW5wdXRfaW52YWxpZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J2lucHV0Jyk7CisgICAgaW5wdXRfaW52YWxpZC5pZCA9ICdzcGVlY2hJbnB1dF9pbnZhbGlkJzsK
KyAgICBpbnB1dF9pbnZhbGlkLnNwZWVjaCA9ICdzcGVlY2gnOworICAgIGlucHV0X2ludmFsaWQu
bGFuZyA9ICcnOyAvLycxMzM3JMO+M867ayc7CisgICAgaW5wdXRfaW52YWxpZC5vbmNoYW5nZSA9
IG9uQ2hhbmdlX2ludmFsaWQ7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpbnB1dF9p
bnZhbGlkKTsKIAogICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIgJiYgd2luZG93
LmV2ZW50U2VuZGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldE1vY2tTcGVl
Y2hJbnB1dFJlc3VsdCgnUGljdHVyZXMgb2YgdGhlIG1vb24nKTsKLQotICAgICAgICAvLyBDbGlj
a2luZyB0aGUgc3BlZWNoIGJ1dHRvbiBzaG91bGQgZmlsbCBpbiBtb2NrIHNwZWVjaC1yZWNvZ25p
emVkIHRleHQuCi0gICAgICAgIHZhciB4ID0gaW5wdXQub2Zmc2V0TGVmdCArIGlucHV0Lm9mZnNl
dFdpZHRoIC0gNDsKLSAgICAgICAgdmFyIHkgPSBpbnB1dC5vZmZzZXRUb3AgKyBpbnB1dC5vZmZz
ZXRIZWlnaHQgLyAyOwotICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKLSAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7Ci0gICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
VXAoKTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja1NwZWVjaElucHV0UmVz
dWx0KCdQaWN0dXJlcyBvZiB0aGUgbW9vbicsICdlbi1HQicpOworICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5zZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoJ+aciOOBruWGmeecnycsICdqYScp
OworICAgICAgICBzcGVlY2hCdXR0b25DbGljaygnc3BlZWNoSW5wdXRfbm9uZScpOwogICAgIH0K
IH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1zcGVl
Y2hidXR0b24uaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL2lucHV0LXRleHQtc3BlZWNo
YnV0dG9uLmh0bWwKaW5kZXggOThiZjhiNzgyYzk3MTY4ODUxYjMxNDJkYTc3ZWViZDY2ZGM4N2M3
MS4uM2FlZTVkODY5Yjg2OWJiYWI2OWFlOGEyMDc5OTI4ZmJhZWQ3ZTExZCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1zcGVlY2hidXR0b24uaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9pbnB1dC10ZXh0LXNwZWVjaGJ1dHRvbi5odG1sCkBA
IC0zOCw3ICszOCw3IEBAIGZ1bmN0aW9uIHJ1bigpIHsKICAgICBkb2N1bWVudC5ib2R5LmFwcGVu
ZENoaWxkKGlucHV0KTsKIAogICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIgJiYg
d2luZG93LmV2ZW50U2VuZGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldE1v
Y2tTcGVlY2hJbnB1dFJlc3VsdCgnUGljdHVyZXMgb2YgdGhlIG1vb24nKTsKKyAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KCdQaWN0dXJlcyBvZiB0
aGUgbW9vbicsICdlbicpOwogCiAgICAgICAgIC8vIENsaWNraW5nIHRoZSBzcGVlY2ggYnV0dG9u
IHNob3VsZCBmaWxsIGluIG1vY2sgc3BlZWNoLXJlY29nbml6ZWQgdGV4dC4KICAgICAgICAgdmFy
IHggPSBpbnB1dC5vZmZzZXRMZWZ0ICsgaW5wdXQub2Zmc2V0V2lkdGggLSA0OwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkM2Y5MGZhYjFm
M2RkNjQxYzE0ODdkYzkzMTczMGQ3ZWZjY2ExNDNhLi5iNDdjZmE2NWY4YTBiOGU3MzU4MWQ3ZTBm
NDdiZTgzMTA0ZTYzNWUzIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEwLTEwLTA2ICBMZWFuZHJvIEdyYWNp
w6EgR2lsICA8bGVhbmRyb2dyYWNpYUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGF0Y2ggdGhlIGN1cnJlbnQgc3BlZWNoIEhU
TUwgdGFnIGltcGxlbWVudGF0aW9uIHRvIHVzZSBhbmQgdmFsaWRhdGUKKyAgICAgICAgdGhlIG5l
YXJlc3QgbGFuZ3VhZ2UgdGFnLiBUaGUgbGFuZ3VhZ2UgaXMgbm93IHBhc3NlZCB0byB0aGUKKyAg
ICAgICAgc3RhcnRSZWNvZ25pdGlvbiBtZXRob2RzIHNvIHRoYXQgbGFuZ3VhZ2Utc3BlY2lmaWMg
cmVjb2duaXRpb24gY291bGQKKyAgICAgICAgYmUgdXNlZC4gQWxzbyBhZGRlZCBhIHNlY29uZCBw
YXJhbWV0ZXIgdG8gc2V0TW9ja1NwZWVjaElucHV0UmVzdWx0IGZvcgorICAgICAgICB0aGUgbGFu
Z3VhZ2UgdXNlZCBpbiBzcGVlY2ggcmVjb2duaXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzA4OQorCisgICAgICAgICogcGFnZS9TcGVlY2hJ
bnB1dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hJbnB1dDo6c3RhcnRSZWNvZ25pdGlv
bik6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9TcGVlY2hJbnB1dENsaWVudE1vY2suY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U3BlZWNoSW5wdXRDbGllbnRNb2NrOjpzdGFydFJlY29nbml0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaElucHV0Q2xpZW50TW9jazo6c2V0UmVjb2duaXRp
b25SZXN1bHQpOiByZXN1bHRzIGFyZQorICAgICAgICAgIG5vdyBzdG9yZWQgYnkgbGFuZ3VhZ2Ug
dXNpbmcgYSBoYXNoIG1hcC4KKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaElucHV0Q2xpZW50TW9j
azo6dGltZXJGaXJlZCk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9TcGVlY2hJbnB1dENsaWVu
dE1vY2suaDoKKyAgICAgICAgKiByZW5kZXJpbmcvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OklucHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50OjpkZWZh
dWx0RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0RmllbGRTcGVlY2hCdXR0
b25FbGVtZW50Ojp2YWxpZGF0ZUluaGVyaXRlZExhbmd1YWdlKToKKyAgICAgICAgICBpbmNsdWRl
cyBhIGJyaWVmIGNoYXJhY3RlciB2YWxpZGF0aW9uIGZvciB0aGUgQkNQIDQ3IGxhbmd1YWdlIHRh
Zy4KKwogMjAxMC0wOS0yNCAgWWFlbCBBaGFyb24gIDx5YWVsLmFoYXJvbkBub2tpYS5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXQuY3BwIGIvV2ViQ29yZS9wYWdlL1NwZWVjaElu
cHV0LmNwcAppbmRleCAzYTc1NDc1OTg5ZTBkNTlhODBlMDg0Yzg5MzA5OGFjNGJhOThhMjA0Li4w
ODhkMzc0MDk3MzM3YzM1NmYxY2JkMjQyNGI2ZmQ5MzkzYjNjMmQwIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BhZ2UvU3BlZWNoSW5wdXQuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dC5j
cHAKQEAgLTkzLDEwICs5MywxMCBAQCB2b2lkIFNwZWVjaElucHV0OjpzZXRSZWNvZ25pdGlvblJl
c3VsdChpbnQgbGlzdGVuZXJJZCwgY29uc3QgU3RyaW5nJiByZXN1bHQpCiAgICAgICAgIG1fbGlz
dGVuZXJzLmdldChsaXN0ZW5lcklkKS0+c2V0UmVjb2duaXRpb25SZXN1bHQobGlzdGVuZXJJZCwg
cmVzdWx0KTsKIH0KIAotYm9vbCBTcGVlY2hJbnB1dDo6c3RhcnRSZWNvZ25pdGlvbihpbnQgbGlz
dGVuZXJJZCwgY29uc3QgQ1N0cmluZyYgbGFuZ3VhZ2VfdGFnLCBjb25zdCBJbnRSZWN0JiBlbGVt
ZW50UmVjdCkKK2Jvb2wgU3BlZWNoSW5wdXQ6OnN0YXJ0UmVjb2duaXRpb24oaW50IGxpc3RlbmVy
SWQsIGNvbnN0IENTdHJpbmcmIGxhbmd1YWdlVGFnLCBjb25zdCBJbnRSZWN0JiBlbGVtZW50UmVj
dCkKIHsKICAgICBBU1NFUlQobV9saXN0ZW5lcnMuY29udGFpbnMobGlzdGVuZXJJZCkpOwotICAg
IHJldHVybiBtX2NsaWVudC0+c3RhcnRSZWNvZ25pdGlvbihsaXN0ZW5lcklkLCBsYW5ndWFnZV90
YWcsIGVsZW1lbnRSZWN0KTsKKyAgICByZXR1cm4gbV9jbGllbnQtPnN0YXJ0UmVjb2duaXRpb24o
bGlzdGVuZXJJZCwgbGFuZ3VhZ2VUYWcsIGVsZW1lbnRSZWN0KTsKIH0KIAogdm9pZCBTcGVlY2hJ
bnB1dDo6c3RvcFJlY29yZGluZyhpbnQgbGlzdGVuZXJJZCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9TcGVlY2hJbnB1dENsaWVudE1vY2suY3BwIGIvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL1NwZWVjaElucHV0Q2xpZW50TW9jay5jcHAKaW5kZXggODljZGNhY2QyMzI5NmMzMmUw
MzZmOTg1MGEzNzdiMjliZGMxZmYwMC4uYjY5N2IzMTkyNjVkNmEwYWJhN2YwYWQwYjc5NDE0MDM2
NTNlYWY3YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xp
ZW50TW9jay5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xpZW50
TW9jay5jcHAKQEAgLTU1LDEyICs1NSw4IEBAIGJvb2wgU3BlZWNoSW5wdXRDbGllbnRNb2NrOjpz
dGFydFJlY29nbml0aW9uKGludCByZXF1ZXN0SWQsIGNvbnN0IENTdHJpbmcmIGxhbmd1CiAgICAg
aWYgKG1fdGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIG1fcmVx
dWVzdElkID0gcmVxdWVzdElkOwotCW1fcmVjb3JkaW5nID0gdHJ1ZTsKLQkKLQkvLyBVcGRhdGUg
dGhlIHJlY29nbml0aW9uIHJlc3VsdCAoc2hvdWxkIGJlIGFscmVhZHkgc2V0KSB0byBpbmNsdWRl
IHRoZSBsYW5ndWFnZSB0YWcKLQltX3JlY29nbml0aW9uUmVzdWx0LmFwcGVuZCgnIycpOwotCW1f
cmVjb2duaXRpb25SZXN1bHQuYXBwZW5kKGxhbmd1YWdlVGFnLmRhdGEoKSk7Ci0JCisgICAgbV9y
ZWNvcmRpbmcgPSB0cnVlOworICAgIG1fbGFuZ3VhZ2VUYWcgPSBTdHJpbmcobGFuZ3VhZ2VUYWcu
ZGF0YSgpKTsKICAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdCgwKTsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KQEAgLTg1LDkgKzgxLDkgQEAgdm9pZCBTcGVlY2hJbnB1dENsaWVudE1vY2s6OmNhbmNlbFJl
Y29nbml0aW9uKGludCByZXF1ZXN0SWQpCiAgICAgfQogfQogCi12b2lkIFNwZWVjaElucHV0Q2xp
ZW50TW9jazo6c2V0UmVjb2duaXRpb25SZXN1bHQoY29uc3QgU3RyaW5nJiByZXN1bHQpCit2b2lk
IFNwZWVjaElucHV0Q2xpZW50TW9jazo6c2V0UmVjb2duaXRpb25SZXN1bHQoY29uc3QgU3RyaW5n
JiByZXN1bHQsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2VUYWcpCiB7Ci0JbV9yZWNvZ25pdGlvblJl
c3VsdCA9IHJlc3VsdDsKKyAgICBtX3JlY29nbml0aW9uUmVzdWx0LnNldChsYW5ndWFnZVRhZywg
cmVzdWx0KTsKIH0KIAogdm9pZCBTcGVlY2hJbnB1dENsaWVudE1vY2s6OnRpbWVyRmlyZWQoV2Vi
Q29yZTo6VGltZXI8U3BlZWNoSW5wdXRDbGllbnRNb2NrPiopCkBAIC05Nyw3ICs5MywxMSBAQCB2
b2lkIFNwZWVjaElucHV0Q2xpZW50TW9jazo6dGltZXJGaXJlZChXZWJDb3JlOjpUaW1lcjxTcGVl
Y2hJbnB1dENsaWVudE1vY2s+KikKICAgICAgICAgbV9saXN0ZW5lci0+ZGlkQ29tcGxldGVSZWNv
cmRpbmcobV9yZXF1ZXN0SWQpOwogICAgICAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdCgwKTsKICAg
ICB9IGVsc2UgewotICAgICAgICBtX2xpc3RlbmVyLT5zZXRSZWNvZ25pdGlvblJlc3VsdChtX3Jl
cXVlc3RJZCwgbV9yZWNvZ25pdGlvblJlc3VsdCk7CisgICAgICAgIGlmIChtX3JlY29nbml0aW9u
UmVzdWx0LmZpbmQobV9sYW5ndWFnZVRhZykgPT0gbV9yZWNvZ25pdGlvblJlc3VsdC5lbmQoKSkK
KyAgICAgICAgICAgIG1fbGlzdGVuZXItPnNldFJlY29nbml0aW9uUmVzdWx0KG1fcmVxdWVzdElk
LCBTdHJpbmcoImVycm9yOiBubyByZXN1bHQgZm9yIHRoZSBwcm92aWRlZCBsYW5ndWFnZSB0YWci
KSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fbGlzdGVuZXItPnNldFJlY29nbml0aW9u
UmVzdWx0KG1fcmVxdWVzdElkLCBtX3JlY29nbml0aW9uUmVzdWx0LmdldChtX2xhbmd1YWdlVGFn
KSk7CisKICAgICAgICAgbV9saXN0ZW5lci0+ZGlkQ29tcGxldGVSZWNvZ25pdGlvbihtX3JlcXVl
c3RJZCk7CiAgICAgICAgIG1fcmVxdWVzdElkID0gMDsKICAgICB9CmRpZmYgLS1naXQgYS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svU3BlZWNoSW5wdXRDbGllbnRNb2NrLmggYi9XZWJDb3JlL3BsYXRm
b3JtL21vY2svU3BlZWNoSW5wdXRDbGllbnRNb2NrLmgKaW5kZXggODI3MDBjZGU2YjdmMDkzZjgw
NGE0MzIzNTRmNWQwZDk0OWFlMTM1YS4uZGI1OGRlNGY3MWFlNjU0MDkxYjNjZjFjMjgxZDM3ZjVm
NDAzNGYxYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xp
ZW50TW9jay5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TcGVlY2hJbnB1dENsaWVudE1v
Y2suaApAQCAtMzQsNyArMzQsOSBAQAogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5j
bHVkZSAiU3BlZWNoSW5wdXRDbGllbnQuaCIKICNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSAid3RmL3RleHQvQ1N0cmluZy5oIgorI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCiAKQEAg
LTQ3LDcgKzQ5LDcgQEAgY2xhc3MgU3BlZWNoSW5wdXRDbGllbnRNb2NrIDogcHVibGljIFNwZWVj
aElucHV0Q2xpZW50IHsKIHB1YmxpYzoKICAgICBTcGVlY2hJbnB1dENsaWVudE1vY2soKTsKIAot
ICAgIHZvaWQgc2V0UmVjb2duaXRpb25SZXN1bHQoY29uc3QgU3RyaW5nJiByZXN1bHQpOworICAg
IHZvaWQgc2V0UmVjb2duaXRpb25SZXN1bHQoY29uc3QgU3RyaW5nJiByZXN1bHQsIGNvbnN0IFN0
cmluZyYgbGFuZ3VhZ2VUYWcpOwogCiAgICAgLy8gU3BlZWNoSW5wdXRDbGllbnQgbWV0aG9kcy4K
ICAgICB2b2lkIHNldExpc3RlbmVyKFNwZWVjaElucHV0TGlzdGVuZXIqKTsKQEAgLTYyLDcgKzY0
LDExIEBAIHByaXZhdGU6CiAgICAgVGltZXI8U3BlZWNoSW5wdXRDbGllbnRNb2NrPiBtX3RpbWVy
OwogICAgIFNwZWVjaElucHV0TGlzdGVuZXIqIG1fbGlzdGVuZXI7CiAgICAgaW50IG1fcmVxdWVz
dElkOwotICAgIFN0cmluZyBtX3JlY29nbml0aW9uUmVzdWx0OworCisgICAgLy8gU3RyaW5ncyBh
cmUgdXNlZCBpbnN0ZWFkIG9mIENTdHJpbmcgZm9yIHRoZSBsYW5ndWFnZSB0YWcKKyAgICAvLyBz
aW5jZSBEZWZhdWx0SGFzaDxXVEY6OkNTdHJpbmc+OjpIYXNoIHNlZW1zIG5vdCB0byBiZSBwcm92
aWRlZAorICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IG1fcmVjb2duaXRpb25SZXN1bHQ7Cisg
ICAgU3RyaW5nIG1fbGFuZ3VhZ2VUYWc7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3Bw
IGIvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAppbmRleCBi
Mzc4MWFmMzUwYTNjZTllZDA0ZjM2ZDc1M2JjZTZlNWE1YjUzMWEzLi4yNGYwYzk0YzA0MWQzNjhi
Y2Q4YWUxMzE0MWQ0YTU3NzUzMmZjODUwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9U
ZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRD
b250cm9sSW5uZXJFbGVtZW50cy5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lkIFRleHRDb250
cm9sSW5uZXJFbGVtZW50OjphdHRhY2hJbm5lckVsZW1lbnQoTm9kZSogcGFyZW50LCBQYXNzUmVm
UHRyPFJlbmRlcgogewogICAgIC8vIFdoZW4gYWRkaW5nIHRoZXNlIGVsZW1lbnRzLCBjcmVhdGUg
dGhlIHJlbmRlcmVyICYgc3R5bGUgZmlyc3QgYmVmb3JlIGFkZGluZyB0byB0aGUgRE9NLgogICAg
IC8vIE90aGVyd2lzZSwgdGhlIHJlbmRlciB0cmVlIHdpbGwgY3JlYXRlIHNvbWUgYW5vbnltb3Vz
IGJsb2NrcyB0aGF0IHdpbGwgbWVzcyB1cCBvdXIgbGF5b3V0LgotCisgICAgCiAgICAgLy8gQ3Jl
YXRlIHRoZSByZW5kZXJlciB3aXRoIHRoZSBzcGVjaWZpZWQgc3R5bGUKICAgICBSZW5kZXJPYmpl
Y3QqIHJlbmRlcmVyID0gY3JlYXRlUmVuZGVyZXIoYXJlbmEsIHN0eWxlLmdldCgpKTsKICAgICBp
ZiAocmVuZGVyZXIpIHsKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGM4YmVkMmVlZDVkODNmZjhkNWRmZDYyM2Jk
MmZhZjAwMmU0NDZmMmMuLjIxNjFlNDdhNjA1ZjY4Y2I2YjU2OWE3YjNiOGRjYWMzOTcwNzJiZGMg
MTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEwLTEwLTA2ICBMZWFuZHJvIEdyYWNp
w6EgR2lsICA8bGVhbmRyb2dyYWNpYUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGF0Y2ggdGhlIGN1cnJlbnQgc3BlZWNoIEhU
TUwgdGFnIGltcGxlbWVudGF0aW9uIHRvIHVzZSBhbmQgdmFsaWRhdGUKKyAgICAgICAgdGhlIG5l
YXJlc3QgbGFuZ3VhZ2UgdGFnLiBUaGUgbGFuZ3VhZ2UgaXMgbm93IHBhc3NlZCB0byB0aGUKKyAg
ICAgICAgc3RhcnRSZWNvZ25pdGlvbiBtZXRob2RzIHNvIHRoYXQgbGFuZ3VhZ2Utc3BlY2lmaWMg
cmVjb2duaXRpb24gY291bGQKKyAgICAgICAgYmUgdXNlZC4gQWxzbyBhZGRlZCBhIHNlY29uZCBw
YXJhbWV0ZXIgdG8gc2V0TW9ja1NwZWVjaElucHV0UmVzdWx0IGZvcgorICAgICAgICB0aGUgbGFu
Z3VhZ2UgdXNlZCBpbiBzcGVlY2ggcmVjb2duaXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzA4OQorCisgICAgICAgICogcHVibGljL1dlYlNw
ZWVjaElucHV0Q29udHJvbGxlck1vY2suaDoKKyAgICAgICAgKiBzcmMvV2ViU3BlZWNoSW5wdXRD
b250cm9sbGVyTW9ja0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hJbnB1dENv
bnRyb2xsZXJNb2NrSW1wbDo6c2V0TW9ja1JlY29nbml0aW9uUmVzdWx0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OnN0YXJ0UmVjb2duaXRpb24p
OgorICAgICAgICAqIHNyYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbC5oOgorCiAy
MDEwLTA5LTI0ICBFcmljIFVocmhhbmUgIDxlcmljdUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgRGF2aWQgTGV2aW4uCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2suaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9jay5oCmluZGV4IDlhMjYyMzVmZjZkNWRjY2Ji
ZTI0NzI2MmFlNDRhM2FjNzM5N2MzZjQuLmQzNjkyZDc2ODNhM2RjZmU4MDRhMzA3NTM3YmM1ZjQ2
ZmUyNzc1M2UgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoSW5w
dXRDb250cm9sbGVyTW9jay5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNo
SW5wdXRDb250cm9sbGVyTW9jay5oCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICAgICAg
V2ViU3BlZWNoSW5wdXRMaXN0ZW5lciogbGlzdGVuZXIpOwogICAgIHZpcnR1YWwgfldlYlNwZWVj
aElucHV0Q29udHJvbGxlck1vY2soKSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBzZXRNb2NrUmVj
b2duaXRpb25SZXN1bHQoY29uc3QgV2ViU3RyaW5nJiByZXN1bHQpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0TW9ja1JlY29nbml0aW9uUmVzdWx0KGNvbnN0IFdlYlN0cmluZyYgcmVzdWx0LCBj
b25zdCBXZWJTdHJpbmcmIGxhbmd1YWdlVGFnKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3BlZWNoSW5wdXRDb250
cm9sbGVyTW9ja0ltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTcGVlY2hJbnB1dENv
bnRyb2xsZXJNb2NrSW1wbC5jcHAKaW5kZXggNmMxYTM5M2RmYzFjMDlhZjY2M2JiMDdmY2MyODY2
ZmI5NDM2ZDM1MC4uMWYyNzQ4YTQ4MThmMGFlMDQ1MGVhOTA3ZTBhNDBjZmNmZjc1NWMyOCAxMDA2
NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2Nr
SW1wbC5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xs
ZXJNb2NrSW1wbC5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2luY2x1ZGUgIlBsYXRmb3JtU3Ry
aW5nLmgiCiAjaW5jbHVkZSAiU3BlZWNoSW5wdXRDbGllbnRNb2NrLmgiCisjaW5jbHVkZSAiV2Vi
Q1N0cmluZy5oIgogI2luY2x1ZGUgIldlYlJlY3QuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBA
IC01NSw5ICs1Niw5IEBAIFdlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsOjp+V2ViU3Bl
ZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGwoKQogICAgIG1fd2ViY29yZU1vY2stPnNldExpc3Rl
bmVyKDApOwogfQogCi12b2lkIFdlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsOjpzZXRN
b2NrUmVjb2duaXRpb25SZXN1bHQoY29uc3QgV2ViU3RyaW5nJiByZXN1bHQpCit2b2lkIFdlYlNw
ZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsOjpzZXRNb2NrUmVjb2duaXRpb25SZXN1bHQoY29u
c3QgV2ViU3RyaW5nJiByZXN1bHQsIGNvbnN0IFdlYlN0cmluZyAmbGFuZ3VhZ2VUYWcpCiB7Ci0g
ICAgbV93ZWJjb3JlTW9jay0+c2V0UmVjb2duaXRpb25SZXN1bHQocmVzdWx0KTsKKyAgICBtX3dl
YmNvcmVNb2NrLT5zZXRSZWNvZ25pdGlvblJlc3VsdChyZXN1bHQsIGxhbmd1YWdlVGFnKTsKIH0K
IAogdm9pZCBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6ZGlkQ29tcGxldGVSZWNv
cmRpbmcoaW50IHJlcXVlc3RJZCkKQEAgLTc1LDcgKzc2LDcgQEAgdm9pZCBXZWJTcGVlY2hJbnB1
dENvbnRyb2xsZXJNb2NrSW1wbDo6c2V0UmVjb2duaXRpb25SZXN1bHQoaW50IHJlcXVlc3RJZCwg
Y29uc3QKICAgICBtX2xpc3RlbmVyLT5zZXRSZWNvZ25pdGlvblJlc3VsdChyZXF1ZXN0SWQsIHJl
c3VsdCk7CiB9CiAKLWJvb2wgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OnN0YXJ0
UmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCwgY29uc3QgV1RGOjpDU3RyaW5nJiBsYW5ndWFnZVRh
ZywgY29uc3QgV2ViUmVjdCYgZWxlbWVudFJlY3QpCitib29sIFdlYlNwZWVjaElucHV0Q29udHJv
bGxlck1vY2tJbXBsOjpzdGFydFJlY29nbml0aW9uKGludCByZXF1ZXN0SWQsIGNvbnN0IFdlYkNT
dHJpbmcmIGxhbmd1YWdlVGFnLCBjb25zdCBXZWJSZWN0JiBlbGVtZW50UmVjdCkKIHsKICAgICBy
ZXR1cm4gbV93ZWJjb3JlTW9jay0+c3RhcnRSZWNvZ25pdGlvbihyZXF1ZXN0SWQsIGxhbmd1YWdl
VGFnLCBlbGVtZW50UmVjdCk7CiB9CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsLmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsLmgKaW5kZXggMWUyYmVlNTIxYjk3N2VlNmY2
ODNmNDc2ZWZlNjNmNTE2ODMwZTFlNC4uZTI0ZDgwYTNiNzFiZTcwOTJjNGY3MjNmNjk4MzgyNGU5
M2I4OTRhMSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTcGVlY2hJbnB1dENv
bnRyb2xsZXJNb2NrSW1wbC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3BlZWNoSW5w
dXRDb250cm9sbGVyTW9ja0ltcGwuaApAQCAtNjIsMTIgKzYyLDEyIEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldFJlY29nbml0aW9uUmVzdWx0KGludCByZXF1ZXN0SWQsIGNvbnN0IFdURjo6U3RyaW5n
JiByZXN1bHQpOwogCiAgICAgLy8gV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyIG1ldGhvZHMuCi0g
ICAgYm9vbCBzdGFydFJlY29nbml0aW9uKGludCByZXF1ZXN0SWQsIGNvbnN0IFdURjo6Q1N0cmlu
ZyYgbGFuZ3VhZ2VUYWcsIGNvbnN0IFdlYlJlY3QmIGVsZW1lbnRSZWN0KTsKKyAgICBib29sIHN0
YXJ0UmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCwgY29uc3QgV2ViQ1N0cmluZyYgbGFuZ3VhZ2VU
YWcsIGNvbnN0IFdlYlJlY3QmIGVsZW1lbnRSZWN0KTsKICAgICB2b2lkIGNhbmNlbFJlY29nbml0
aW9uKGludCByZXF1ZXN0SWQpOwogICAgIHZvaWQgc3RvcFJlY29yZGluZyhpbnQgcmVxdWVzdElk
KTsKIAogICAgIC8vIFdlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2sgbWV0aG9kcy4KLSAgICB2
b2lkIHNldE1vY2tSZWNvZ25pdGlvblJlc3VsdChjb25zdCBXZWJTdHJpbmcmIHJlc3VsdCk7Cisg
ICAgdm9pZCBzZXRNb2NrUmVjb2duaXRpb25SZXN1bHQoY29uc3QgV2ViU3RyaW5nJiByZXN1bHQs
IGNvbnN0IFdlYlN0cmluZyYgbGFuZ3VhZ2VUYWcpOwogCiBwcml2YXRlOgogICAgIE93blB0cjxX
ZWJDb3JlOjpTcGVlY2hJbnB1dENsaWVudE1vY2s+IG1fd2ViY29yZU1vY2s7CmRpZmYgLS1naXQg
YS9XZWJLaXRUb29scy9DaGFuZ2VMb2cgYi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKaW5kZXggM2Y2
N2E0ODFhN2YwMmJmYzk5MGE4ZGU1YTg3ZjI1ZjQ3YzljNjdmNS4uMTU0YjA0MDY2NTc0NzViODMx
NWVjNTNiZWZmM2U4NTExNjNkYzg2ZCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9n
CisrKyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEwLTEwLTA2
ICBMZWFuZHJvIEdyYWNpw6EgR2lsICA8bGVhbmRyb2dyYWNpYUBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgYSBzZWNv
bmQgcGFyYW1ldGVyIHRvIHNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdCBmb3IKKyAgICAgICAgdGhl
IGxhbmd1YWdlIHVzZWQgaW4gc3BlZWNoIHJlY29nbml0aW9uLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDcwODkKKworICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKHNldE1vY2tTcGVlY2hJ
bnB1dFJlc3VsdENhbGxiYWNrKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9M
YXlvdXRUZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6
c2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KToKKwogMjAxMC0wOS0yMyAgVG9ueSBDaGFuZyAgPHRv
bnlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI2ODIz
Mi4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250
cm9sbGVyLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9s
bGVyLmNwcAppbmRleCAxNjQzYmE2ZDNhOWM2ODRlOTE2MDliOTI0OGE5ODU5ZGI5NzBmYmMxLi45
YTkyYzYzYzI0YmU1ZWI2MjI4ODdiN2Q4MmUyYjBmZjhjOGRhNjYwIDEwMDY0NAotLS0gYS9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKKysrIGIvV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCkBAIC0xMDUy
LDE0ICsxMDUyLDE3IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIHNldE1vY2tHZW9sb2NhdGlvbkVycm9y
Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0CiAKIHN0YXRpYyBKU1ZhbHVl
UmVmIHNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0
LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFy
Z3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4
Y2VwdGlvbikKIHsKLSAgICBpZiAoYXJndW1lbnRDb3VudCA8IDEpCisgICAgaWYgKGFyZ3VtZW50
Q291bnQgPCAyKQogICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7
CiAKICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gcmVzdWx0KEFkb3B0LCBKU1ZhbHVlVG9T
dHJpbmdDb3B5KGNvbnRleHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKSk7CiAgICAgQVNTRVJU
KCEqZXhjZXB0aW9uKTsKIAorICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBsYW5ndWFnZShB
ZG9wdCwgSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBhcmd1bWVudHNbMV0sIGV4Y2VwdGlv
bikpOworICAgIEFTU0VSVCghKmV4Y2VwdGlvbik7CisKICAgICBMYXlvdXRUZXN0Q29udHJvbGxl
ciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PExheW91dFRlc3RDb250cm9sbGVyKj4oSlNPYmpl
Y3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKLSAgICBjb250cm9sbGVyLT5zZXRNb2NrU3BlZWNo
SW5wdXRSZXN1bHQocmVzdWx0LmdldCgpKTsKKyAgICBjb250cm9sbGVyLT5zZXRNb2NrU3BlZWNo
SW5wdXRSZXN1bHQocmVzdWx0LmdldCgpLCBsYW5ndWFnZS5nZXQoKSk7CiAKICAgICByZXR1cm4g
SlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CmRpZmYgLS1naXQgYS9XZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAgYi9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAK
aW5kZXggM2QzYzIwNDRlM2FlYjYyZjViZmU2YWJlNmZmMTQ3OGZlYWU0OTQyMC4uNTU0Nzk1NzQ3
MTI3ODE3MmFmYzllYzdhNjZhY2M3NGRkNTcwMjNkZSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1dl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNw
cApAQCAtMTUyNCwxMCArMTUyNCwxMCBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjphYm9y
dE1vZGFsKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYQogdm9pZCBM
YXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KGNvbnN0IENwcEFy
Z3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCiB7CiAgICAgcmVzdWx0
LT5zZXROdWxsKCk7Ci0gICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgPCAxIHx8ICFhcmd1bWVudHNb
MF0uaXNTdHJpbmcoKSkKKyAgICBpZiAoYXJndW1lbnRzLnNpemUoKSA8IDIgfHwgIWFyZ3VtZW50
c1swXS5pc1N0cmluZygpIHx8ICFhcmd1bWVudHNbMV0uaXNTdHJpbmcoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgbV9zcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrLT5zZXRNb2NrUmVjb2duaXRp
b25SZXN1bHQoY3BwVmFyaWFudFRvV2ViU3RyaW5nKGFyZ3VtZW50c1swXSkpOworICAgIG1fc3Bl
ZWNoSW5wdXRDb250cm9sbGVyTW9jay0+c2V0TW9ja1JlY29nbml0aW9uUmVzdWx0KGNwcFZhcmlh
bnRUb1dlYlN0cmluZyhhcmd1bWVudHNbMF0pLCBjcHBWYXJpYW50VG9XZWJTdHJpbmcoYXJndW1l
bnRzWzFdKSk7CiB9CiAKIFdlYktpdDo6V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyKiBMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6c3BlZWNoSW5wdXRDb250cm9sbGVyKFdlYktpdDo6V2ViU3BlZWNoSW5w
dXRMaXN0ZW5lciogbGlzdGVuZXIpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69925</attachid>
            <date>2010-10-06 04:56:20 -0700</date>
            <delta_ts>2010-10-06 07:19:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47089-20101006125617.patch</filename>
            <type>text/plain</type>
            <size>32610</size>
            <attacher name="Leandro Graciá Gil">leandrogracia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmYjgwZjI3ODBkOWQ2NjRiMjgwN2IwMDJiODM4Y2MzZTVlYTMyZTE3Li5lNzBlNDA5
MzUwZTY4N2EyYzI5M2YwMjg2YTcwNjZiNmYxMzhlYmE3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTAtMTAtMDYgIExlYW5kcm8gR3JhY2nDoSBHaWwgIDxsZWFuZHJvZ3JhY2lhQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGRlZCBhIGxheW91dCB0ZXN0IGZvciB0aGUgbGFuZ3VhZ2UgdGFnIGluIHNwZWVjaCBidXR0b25z
LiBVcGRhdGVkCisgICAgICAgIHRoZSBzcGVlY2ggYnV0dG9uIHRlc3QgdG8gaW5jbHVkZSB0aGUg
bmV3IGxhbmd1YWdlIHBhcmFtZXRlciBpbiB0aGUKKyAgICAgICAgbW9jayByZXN1bHQuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzA4OQorCisgICAg
ICAgICogZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1sYW5ndWFnZS10YWctZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L3NwZWVjaC9pbnB1dC10ZXh0LWxhbmd1YWdlLXRhZy5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3NwZWVjaC9pbnB1dC10ZXh0LXNwZWVjaGJ1dHRvbi5o
dG1sOiBBZGRlZCBsYW5ndWFnZSBwYXJhbWV0ZXIuCisKIDIwMTAtMTAtMDYgIERpcmsgU2NodWx6
ZSAgPGtyaXRAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIG5ldyBiYXNlbGluZSBm
b3IgUXQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9pbnB1dC10ZXh0LWxh
bmd1YWdlLXRhZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9pbnB1dC10
ZXh0LWxhbmd1YWdlLXRhZy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWY3MWE1NTk0YTFkZDdh
NjcyNmUxNmFjMGJiZTFhZGEzN2NhNzk4ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3Qvc3BlZWNoL2lucHV0LXRleHQtbGFuZ3VhZ2UtdGFnLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDEyIEBACitUZXN0cyBmb3IgbGFuZ3VhZ2UgdGFnIGluaGVyaXRhbmNlIGFuZCB2YWxpZGF0
aW9uIGluIHNwZWVjaCBidXR0b25zPi4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
K1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNwZWVjaElucHV0X25vbmUiKS52YWx1ZSBp
cyAiZXJyb3I6IG5vIHJlc3VsdCBmb3IgdGhlIHByb3ZpZGVkIGxhbmd1YWdlIHRhZyIKK1BBU1Mg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNwZWVjaElucHV0X2VsZW1lbnQiKS52YWx1ZSBpcyAi
UGljdHVyZXMgb2YgdGhlIG1vb24iCitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzcGVl
Y2hJbnB1dF9pbmhlcml0ZWQiKS52YWx1ZSBpcyAi5pyI44Gu5YaZ55yfIgorUEFTUyBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgic3BlZWNoSW5wdXRfaW52YWxpZCIpLnZhbHVlIGlzICJlcnJvcjog
aW52YWxpZCBzdHJpbmcgKGluc3RlYWQgb2YgbGFuZ3VhZ2Ugbm90IGZvdW5kKSIKK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1sYW5ndWFnZS10YWcuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3Qvc3BlZWNoL2lucHV0LXRleHQtbGFuZ3VhZ2UtdGFnLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNWQ2NzE4ZmUyNjJiMjAwZDRiNjljMTM1ZGI4ZWI3YzY5ZmQ3NmNkYQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL2lucHV0LXRleHQtbGFuZ3VhZ2UtdGFnLmh0
bWwKQEAgLTAsMCArMSw5NCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQg
SFRNTC8vRU4iPgorPGh0bWw+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8aGVhZD4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ij4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorZGVzY3JpcHRp
b24oJ1Rlc3RzIGZvciBsYW5ndWFnZSB0YWcgaW5oZXJpdGFuY2UgYW5kIHZhbGlkYXRpb24gaW4g
c3BlZWNoIGJ1dHRvbnM+LicpOworCisvLyBOb3RlOiB0ZXN0IGNhc2VzIGFyZSBzZXF1ZW50aWFs
IHRvIGVuc3VyZSB0aGF0IG5vIG5ldyByZWNvZ25pdGlvbiBzdGFydHMgd2hlbiBhbm90aGVyIHJl
Y29nbml0aW9uIHJlY29yZGluZyBpcyBhY3RpdmUuCitmdW5jdGlvbiBvbkNoYW5nZV9ub25lKCkg
eworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNw
ZWVjaElucHV0X25vbmUiKS52YWx1ZScsICdlcnJvcjogbm8gcmVzdWx0IGZvciB0aGUgcHJvdmlk
ZWQgbGFuZ3VhZ2UgdGFnJyk7CisgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc3BlZWNoQnV0
dG9uQ2xpY2soJ3NwZWVjaElucHV0X2VsZW1lbnQnKTsgfSwgNTApOworfQorCitmdW5jdGlvbiBv
bkNoYW5nZV9lbGVtZW50KCkgeworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInNwZWVjaElucHV0X2VsZW1lbnQiKS52YWx1ZScsICdQaWN0dXJlcyBv
ZiB0aGUgbW9vbicpOworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNwZWVjaEJ1dHRvbkNs
aWNrKCdzcGVlY2hJbnB1dF9pbmhlcml0ZWQnKTsgfSwgNTApOworfQorCitmdW5jdGlvbiBvbkNo
YW5nZV9pbmhlcml0ZWQoKSB7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgic3BlZWNoSW5wdXRfaW5oZXJpdGVkIikudmFsdWUnLCAn5pyI44Gu5YaZ
55yfJyk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja1NwZWVjaElucHV0UmVzdWx0
KCdlcnJvcjogaW52YWxpZCBzdHJpbmcgKGluc3RlYWQgb2YgbGFuZ3VhZ2Ugbm90IGZvdW5kKScs
ICcnKTsKKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzcGVlY2hCdXR0b25DbGljaygnc3Bl
ZWNoSW5wdXRfaW52YWxpZCcpOyB9LCA1MCk7Cit9CisKK2Z1bmN0aW9uIG9uQ2hhbmdlX2ludmFs
aWQoKSB7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgic3BlZWNoSW5wdXRfaW52YWxpZCIpLnZhbHVlJywgJ2Vycm9yOiBpbnZhbGlkIHN0cmluZyAo
aW5zdGVhZCBvZiBsYW5ndWFnZSBub3QgZm91bmQpJyk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuc2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KCdlcnJvcjogbm8gcmVzdWx0IGZvciB0aGUgcHJv
dmlkZWQgbGFuZ3VhZ2UgdGFnJywgJycpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCitmdW5j
dGlvbiBzcGVlY2hCdXR0b25DbGljayhlbGVtZW50X2lkKSB7CisgICAgdmFyIGVsZW1lbnQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50X2lkKTsKKyAgICB2YXIgeCA9IGVsZW1lbnQu
b2Zmc2V0TGVmdCArIGVsZW1lbnQub2Zmc2V0V2lkdGggLSA0OworICAgIHZhciB5ID0gZWxlbWVu
dC5vZmZzZXRUb3AgKyBlbGVtZW50Lm9mZnNldEhlaWdodCAvIDI7CisgICAgZXZlbnRTZW5kZXIu
bW91c2VNb3ZlVG8oeCwgeSk7CisgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgZXZl
bnRTZW5kZXIubW91c2VVcCgpOworfQorCitmdW5jdGlvbiBydW4oKSB7CisgICAgLy8gTm8gY29u
dGVudCBsYW5ndWFnZSAoc2hvdWxkIGRlZmF1bHQgdG8gYW4gZW1wdHkgc3RyaW5nKQorICAgIHZh
ciBpbnB1dF9ub25lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTsKKyAgICBpbnB1
dF9ub25lLmlkID0gJ3NwZWVjaElucHV0X25vbmUnOworICAgIGlucHV0X25vbmUuc3BlZWNoID0g
J3NwZWVjaCc7CisgICAgaW5wdXRfbm9uZS5vbmNoYW5nZSA9IG9uQ2hhbmdlX25vbmU7CisgICAg
ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpbnB1dF9ub25lKTsKKworICAgIC8vIExhbmd1YWdl
IHRhZyBpbiB0aGUgZWxlbWVudCAoZW4tR0IpCisgICAgdmFyIGlucHV0X2VsZW1lbnQgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpOworICAgIGlucHV0X2VsZW1lbnQuaWQgPSAnc3Bl
ZWNoSW5wdXRfZWxlbWVudCc7CisgICAgaW5wdXRfZWxlbWVudC5zcGVlY2ggPSAnc3BlZWNoJzsK
KyAgICBpbnB1dF9lbGVtZW50LmxhbmcgPSAnZW4tR0InOworICAgIGlucHV0X2VsZW1lbnQub25j
aGFuZ2UgPSBvbkNoYW5nZV9lbGVtZW50OworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQo
aW5wdXRfZWxlbWVudCk7CisKKyAgICAvLyBMYW5ndWFnZSB0YWcgaW5oZXJpdGVkIGZyb20gY29u
dGFpbmVyIG9iamVjdCAoamEpCisgICAgdmFyIGlucHV0X2luaGVyaXRlZCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7CisgICAgaW5wdXRfaW5oZXJpdGVkLmlkID0gJ3NwZWVjaElu
cHV0X2luaGVyaXRlZCc7CisgICAgaW5wdXRfaW5oZXJpdGVkLnNwZWVjaCA9ICdzcGVlY2gnOwor
ICAgIGlucHV0X2luaGVyaXRlZC5vbmNoYW5nZSA9IG9uQ2hhbmdlX2luaGVyaXRlZDsKKworICAg
IHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICBkaXYuYXBwZW5k
Q2hpbGQoaW5wdXRfaW5oZXJpdGVkKTsKKyAgICBkaXYubGFuZyA9ICdqYSc7CisgICAgZG9jdW1l
bnQuYm9keS5hcHBlbmRDaGlsZChkaXYpOworCisgICAgLy8gSW52YWxpZCBsYW5ndWFnZSB0YWcg
KHNob3VsZCByZXR1cm4gYW4gZW1wdHkgc3RyaW5nKQorICAgIHZhciBpbnB1dF9pbnZhbGlkID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTsKKyAgICBpbnB1dF9pbnZhbGlkLmlkID0g
J3NwZWVjaElucHV0X2ludmFsaWQnOworICAgIGlucHV0X2ludmFsaWQuc3BlZWNoID0gJ3NwZWVj
aCc7CisgICAgaW5wdXRfaW52YWxpZC5sYW5nID0gJyc7IC8vJzEzMzckw74zzrtrJzsKKyAgICBp
bnB1dF9pbnZhbGlkLm9uY2hhbmdlID0gb25DaGFuZ2VfaW52YWxpZDsKKyAgICBkb2N1bWVudC5i
b2R5LmFwcGVuZENoaWxkKGlucHV0X2ludmFsaWQpOworCisgICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlciAmJiB3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuc2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KCdQaWN0dXJlcyBvZiB0aGUgbW9v
bicsICdlbi1HQicpOworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRNb2NrU3BlZWNo
SW5wdXRSZXN1bHQoJ+aciOOBruWGmeecnycsICdqYScpOworICAgICAgICBzcGVlY2hCdXR0b25D
bGljaygnc3BlZWNoSW5wdXRfbm9uZScpOworICAgIH0KK30KKword2luZG93Lm9ubG9hZCA9IHJ1
bjsKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK3dpbmRvdy5zdWNjZXNzZnVsbHlQYXJz
ZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L3NwZWVjaC9pbnB1dC10ZXh0LXNwZWVjaGJ1dHRvbi5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1zcGVlY2hidXR0b24uaHRtbAppbmRleCA2ZjVi
YzRiMTIxZmI0ZjlkOWRkYTZjMzMxZjhiMjZkYzFjZDQzOTk0Li40OGJlOWMwZTRhY2FhOTY3YzIy
ZTQ0ZjEwOTg2MWQzZGE5YTk2NzM5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L3NwZWVj
aC9pbnB1dC10ZXh0LXNwZWVjaGJ1dHRvbi5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc3Bl
ZWNoL2lucHV0LXRleHQtc3BlZWNoYnV0dG9uLmh0bWwKQEAgLTMyLDcgKzMyLDcgQEAgZnVuY3Rp
b24gb25XZWJraXRTcGVlY2hDaGFuZ2UoKSB7CiAKIGZ1bmN0aW9uIHJ1bigpIHsKICAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyICYmIHdpbmRvdy5ldmVudFNlbmRlcikgewotICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoJ1BpY3R1
cmVzIG9mIHRoZSBtb29uJyk7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldE1vY2tT
cGVlY2hJbnB1dFJlc3VsdCgnUGljdHVyZXMgb2YgdGhlIG1vb24nLCAnZW4nKTsKIAogICAgICAg
ICAvLyBDbGlja2luZyB0aGUgc3BlZWNoIGJ1dHRvbiBzaG91bGQgZmlsbCBpbiBtb2NrIHNwZWVj
aC1yZWNvZ25pemVkIHRleHQuCiAgICAgICAgIHZhciBpbnB1dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdzcGVlY2hJbnB1dCcpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2Mzc3Y2E5YWQ4MjAzZGQ0NDQzYjMzNmQwNmJjNjE5OWIz
NTFkMmVmLi5mMjg1NTRhZmI5ODdjZmE0M2U2ZDgwMDMyY2VkZGQyYTYwOTdjZjNkIDEwMDY0NAot
LS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDM2IEBACisyMDEwLTEwLTA2ICBMZWFuZHJvIEdyYWNpw6EgR2lsICA8bGVhbmRyb2dyYWNpYUBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgUGF0Y2ggdGhlIGN1cnJlbnQgc3BlZWNoIEhUTUwgdGFnIGltcGxlbWVudGF0aW9uIHRv
IHVzZSBhbmQgdmFsaWRhdGUKKyAgICAgICAgdGhlIG5lYXJlc3QgbGFuZ3VhZ2UgdGFnLiBUaGUg
bGFuZ3VhZ2UgaXMgbm93IHBhc3NlZCB0byB0aGUKKyAgICAgICAgc3RhcnRSZWNvZ25pdGlvbiBt
ZXRob2RzIHNvIHRoYXQgbGFuZ3VhZ2Utc3BlY2lmaWMgcmVjb2duaXRpb24gY291bGQKKyAgICAg
ICAgYmUgdXNlZC4gQWxzbyBhZGRlZCBhIHNlY29uZCBwYXJhbWV0ZXIgdG8gc2V0TW9ja1NwZWVj
aElucHV0UmVzdWx0IGZvcgorICAgICAgICB0aGUgbGFuZ3VhZ2UgdXNlZCBpbiBzcGVlY2ggcmVj
b2duaXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD00NzA4OQorCisgICAgICAgIFRlc3Q6IGZhc3Qvc3BlZWNoL2lucHV0LXRleHQtbGFuZ3VhZ2Ut
dGFnLmh0bWwKKworICAgICAgICAqIHBhZ2UvU3BlZWNoSW5wdXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U3BlZWNoSW5wdXQ6OnN0YXJ0UmVjb2duaXRpb24pOgorICAgICAgICAqIHBhZ2UvU3Bl
ZWNoSW5wdXQuaDoKKyAgICAgICAgKiBwYWdlL1NwZWVjaElucHV0Q2xpZW50Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vbW9jay9TcGVlY2hJbnB1dENsaWVudE1vY2suY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U3BlZWNoSW5wdXRDbGllbnRNb2NrOjpzdGFydFJlY29nbml0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OlNwZWVjaElucHV0Q2xpZW50TW9jazo6c2V0UmVjb2duaXRpb25SZXN1bHQpOiBy
ZXN1bHRzIGFyZQorICAgICAgICAgIG5vdyBzdG9yZWQgYnkgbGFuZ3VhZ2UgdXNpbmcgYSBoYXNo
IG1hcC4KKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaElucHV0Q2xpZW50TW9jazo6dGltZXJGaXJl
ZCk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9TcGVlY2hJbnB1dENsaWVudE1vY2suaDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlRleHRDb250cm9sSW5uZXJFbGVtZW50OjphdHRhY2hJbm5lckVsZW1lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6U2VhcmNoRmllbGRDYW5jZWxCdXR0b25FbGVtZW50OjpkZXRhY2gp
OgorICAgICAgICAoV2ViQ29yZTo6U3BpbkJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRs
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQ6OmRl
ZmF1bHRFdmVudEhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRGaWVsZFNwZWVjaEJ1
dHRvbkVsZW1lbnQ6OnZhbGlkYXRlZEluaGVyaXRlZExhbmd1YWdlKToKKyAgICAgICAgICBpbmNs
dWRlcyBhIGJyaWVmIGNoYXJhY3RlciB2YWxpZGF0aW9uIGZvciB0aGUgQkNQIDQ3IGxhbmd1YWdl
IHRhZy4KKyAgICAgICAgKFdlYkNvcmU6OklucHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50Ojpk
ZXRhY2gpOgorICAgICAgICAqIHJlbmRlcmluZy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuaDoK
KwogMjAxMC0xMC0wNiAgRGlyayBTY2h1bHplICA8a3JpdEB3ZWJraXQub3JnPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IE5pa29sYXMgWmltbWVybWFubi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFn
ZS9TcGVlY2hJbnB1dC5jcHAgYi9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXQuY3BwCmluZGV4IDIz
NDc5MWJjNGIxM2Y0M2RmOWQxNzM5ZDVkMjA1ZjlhYTI3ZTIwNzIuLjA4OGQzNzQwOTczMzdjMzU2
ZjFjYmQyNDI0YjZmZDkzOTNiM2MyZDAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9TcGVlY2hJ
bnB1dC5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0LmNwcApAQCAtOTMsMTAgKzkz
LDEwIEBAIHZvaWQgU3BlZWNoSW5wdXQ6OnNldFJlY29nbml0aW9uUmVzdWx0KGludCBsaXN0ZW5l
cklkLCBjb25zdCBTdHJpbmcmIHJlc3VsdCkKICAgICAgICAgbV9saXN0ZW5lcnMuZ2V0KGxpc3Rl
bmVySWQpLT5zZXRSZWNvZ25pdGlvblJlc3VsdChsaXN0ZW5lcklkLCByZXN1bHQpOwogfQogCi1i
b29sIFNwZWVjaElucHV0OjpzdGFydFJlY29nbml0aW9uKGludCBsaXN0ZW5lcklkLCBjb25zdCBJ
bnRSZWN0JiBlbGVtZW50UmVjdCkKK2Jvb2wgU3BlZWNoSW5wdXQ6OnN0YXJ0UmVjb2duaXRpb24o
aW50IGxpc3RlbmVySWQsIGNvbnN0IENTdHJpbmcmIGxhbmd1YWdlVGFnLCBjb25zdCBJbnRSZWN0
JiBlbGVtZW50UmVjdCkKIHsKICAgICBBU1NFUlQobV9saXN0ZW5lcnMuY29udGFpbnMobGlzdGVu
ZXJJZCkpOwotICAgIHJldHVybiBtX2NsaWVudC0+c3RhcnRSZWNvZ25pdGlvbihsaXN0ZW5lcklk
LCBlbGVtZW50UmVjdCk7CisgICAgcmV0dXJuIG1fY2xpZW50LT5zdGFydFJlY29nbml0aW9uKGxp
c3RlbmVySWQsIGxhbmd1YWdlVGFnLCBlbGVtZW50UmVjdCk7CiB9CiAKIHZvaWQgU3BlZWNoSW5w
dXQ6OnN0b3BSZWNvcmRpbmcoaW50IGxpc3RlbmVySWQpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bh
Z2UvU3BlZWNoSW5wdXQuaCBiL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dC5oCmluZGV4IGQxMGI3
ODlhYWQyNzM5ZWRkM2JmNDUzMGU3YzZlMDBjNGUyZGFlOGEuLjA1ZTIwMDljNTBjMWU5NzY0ZjVl
ZWMzZDJmNTc4YTkxM2ZlZDlkZGMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1
dC5oCisrKyBiL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dC5oCkBAIC02MSw3ICs2MSw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHVucmVnaXN0ZXJMaXN0ZW5lcihpbnQpOwogCiAgICAgLy8gTWV0aG9k
cyBpbnZva2VkIGJ5IHRoZSBpbnB1dCBlbGVtZW50cy4KLSAgICBib29sIHN0YXJ0UmVjb2duaXRp
b24oaW50LCBjb25zdCBJbnRSZWN0Jik7CisgICAgYm9vbCBzdGFydFJlY29nbml0aW9uKGludCwg
Y29uc3QgQ1N0cmluZyYsIGNvbnN0IEludFJlY3QmKTsKICAgICB2b2lkIHN0b3BSZWNvcmRpbmco
aW50KTsKICAgICB2b2lkIGNhbmNlbFJlY29nbml0aW9uKGludCk7CiAKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGFnZS9TcGVlY2hJbnB1dENsaWVudC5oIGIvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0
Q2xpZW50LmgKaW5kZXggZDVmZGExN2ZhYTJjZDc5NWFmNDRmNTNhNDZmY2JhNTk3NDFhYjc2Yy4u
ZmUyNTc4YjMxYTM3MzUwZTc3ODc5MzY3YTYxOTAwNzA3YWUzZjlkYiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wYWdlL1NwZWVjaElucHV0Q2xpZW50LmgKKysrIGIvV2ViQ29yZS9wYWdlL1NwZWVjaElu
cHV0Q2xpZW50LmgKQEAgLTMzLDYgKzMzLDEwIEBACiAKICNpZiBFTkFCTEUoSU5QVVRfU1BFRUNI
KQogCituYW1lc3BhY2UgV1RGIHsKK2NsYXNzIENTdHJpbmc7Cit9CisKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgSW50UmVjdDsKQEAgLTQ4LDcgKzUyLDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBzZXRMaXN0ZW5lcihTcGVlY2hJbnB1dExpc3RlbmVyKikgPSAwOwogCiAgICAg
Ly8gU3RhcnRzIHNwZWVjaCByZWNvZ25pdGlvbiBhbmQgYXVkaW8gcmVjb3JkaW5nLgotICAgIHZp
cnR1YWwgYm9vbCBzdGFydFJlY29nbml0aW9uKGludCByZXF1ZXN0SWQsIGNvbnN0IEludFJlY3Qm
IGVsZW1lbnRSZWN0KSA9IDA7CisgICAgdmlydHVhbCBib29sIHN0YXJ0UmVjb2duaXRpb24oaW50
IHJlcXVlc3RJZCwgY29uc3QgV1RGOjpDU3RyaW5nJiwgY29uc3QgSW50UmVjdCYgZWxlbWVudFJl
Y3QpID0gMDsKIAogICAgIC8vIFN0b3BzIGF1ZGlvIHJlY29yZGluZyBhbmQgcGVyZm9ybXMgcmVj
b2duaXRpb24gd2l0aCB0aGUgYXVkaW8gcmVjb3JkZWQgdW50aWwgbm93CiAgICAgLy8gKGRvZXMg
bm90IGRpc2NhcmQgYXVkaW8pLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Nw
ZWVjaElucHV0Q2xpZW50TW9jay5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL21vY2svU3BlZWNoSW5w
dXRDbGllbnRNb2NrLmNwcAppbmRleCA2YjY0OTQyZjE3YjkyNWI0OWVmMDkyMTQ3YzBhMTZhMDdm
MGQ3Y2NjLi5iNjk3YjMxOTI2NWQ2YTBhYmE3ZjBhZDBiNzk0MTQwMzY1M2VhZjdjIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BsYXRmb3JtL21vY2svU3BlZWNoSW5wdXRDbGllbnRNb2NrLmNwcAorKysg
Yi9XZWJDb3JlL3BsYXRmb3JtL21vY2svU3BlZWNoSW5wdXRDbGllbnRNb2NrLmNwcApAQCAtNTAs
MTIgKzUwLDEzIEBAIHZvaWQgU3BlZWNoSW5wdXRDbGllbnRNb2NrOjpzZXRMaXN0ZW5lcihTcGVl
Y2hJbnB1dExpc3RlbmVyKiBsaXN0ZW5lcikKICAgICBtX2xpc3RlbmVyID0gbGlzdGVuZXI7CiB9
CiAKLWJvb2wgU3BlZWNoSW5wdXRDbGllbnRNb2NrOjpzdGFydFJlY29nbml0aW9uKGludCByZXF1
ZXN0SWQsIGNvbnN0IEludFJlY3QmKQorYm9vbCBTcGVlY2hJbnB1dENsaWVudE1vY2s6OnN0YXJ0
UmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCwgY29uc3QgQ1N0cmluZyYgbGFuZ3VhZ2VUYWcsIGNv
bnN0IEludFJlY3QmKQogewogICAgIGlmIChtX3RpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICBtX3JlcXVlc3RJZCA9IHJlcXVlc3RJZDsKICAgICBtX3JlY29yZGlu
ZyA9IHRydWU7CisgICAgbV9sYW5ndWFnZVRhZyA9IFN0cmluZyhsYW5ndWFnZVRhZy5kYXRhKCkp
OwogICAgIG1fdGltZXIuc3RhcnRPbmVTaG90KDApOwogICAgIHJldHVybiB0cnVlOwogfQpAQCAt
ODAsOSArODEsOSBAQCB2b2lkIFNwZWVjaElucHV0Q2xpZW50TW9jazo6Y2FuY2VsUmVjb2duaXRp
b24oaW50IHJlcXVlc3RJZCkKICAgICB9CiB9CiAKLXZvaWQgU3BlZWNoSW5wdXRDbGllbnRNb2Nr
OjpzZXRSZWNvZ25pdGlvblJlc3VsdChjb25zdCBTdHJpbmcmIHJlc3VsdCkKK3ZvaWQgU3BlZWNo
SW5wdXRDbGllbnRNb2NrOjpzZXRSZWNvZ25pdGlvblJlc3VsdChjb25zdCBTdHJpbmcmIHJlc3Vs
dCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZVRhZykKIHsKLSAgICBtX3JlY29nbml0aW9uUmVzdWx0
ID0gcmVzdWx0OworICAgIG1fcmVjb2duaXRpb25SZXN1bHQuc2V0KGxhbmd1YWdlVGFnLCByZXN1
bHQpOwogfQogCiB2b2lkIFNwZWVjaElucHV0Q2xpZW50TW9jazo6dGltZXJGaXJlZChXZWJDb3Jl
OjpUaW1lcjxTcGVlY2hJbnB1dENsaWVudE1vY2s+KikKQEAgLTkyLDcgKzkzLDExIEBAIHZvaWQg
U3BlZWNoSW5wdXRDbGllbnRNb2NrOjp0aW1lckZpcmVkKFdlYkNvcmU6OlRpbWVyPFNwZWVjaElu
cHV0Q2xpZW50TW9jaz4qKQogICAgICAgICBtX2xpc3RlbmVyLT5kaWRDb21wbGV0ZVJlY29yZGlu
ZyhtX3JlcXVlc3RJZCk7CiAgICAgICAgIG1fdGltZXIuc3RhcnRPbmVTaG90KDApOwogICAgIH0g
ZWxzZSB7Ci0gICAgICAgIG1fbGlzdGVuZXItPnNldFJlY29nbml0aW9uUmVzdWx0KG1fcmVxdWVz
dElkLCBtX3JlY29nbml0aW9uUmVzdWx0KTsKKyAgICAgICAgaWYgKG1fcmVjb2duaXRpb25SZXN1
bHQuZmluZChtX2xhbmd1YWdlVGFnKSA9PSBtX3JlY29nbml0aW9uUmVzdWx0LmVuZCgpKQorICAg
ICAgICAgICAgbV9saXN0ZW5lci0+c2V0UmVjb2duaXRpb25SZXN1bHQobV9yZXF1ZXN0SWQsIFN0
cmluZygiZXJyb3I6IG5vIHJlc3VsdCBmb3IgdGhlIHByb3ZpZGVkIGxhbmd1YWdlIHRhZyIpKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9saXN0ZW5lci0+c2V0UmVjb2duaXRpb25SZXN1
bHQobV9yZXF1ZXN0SWQsIG1fcmVjb2duaXRpb25SZXN1bHQuZ2V0KG1fbGFuZ3VhZ2VUYWcpKTsK
KwogICAgICAgICBtX2xpc3RlbmVyLT5kaWRDb21wbGV0ZVJlY29nbml0aW9uKG1fcmVxdWVzdElk
KTsKICAgICAgICAgbV9yZXF1ZXN0SWQgPSAwOwogICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9TcGVlY2hJbnB1dENsaWVudE1vY2suaCBiL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9TcGVlY2hJbnB1dENsaWVudE1vY2suaAppbmRleCBjZTgzZDNiYjljYjg4YjBhM2E5NWI1
NDk1NDI3ZDI5OTFmMmUwYjRmLi4zOThjNTY1MzljN2RhNDZlMDFiNDUzNjI1YzQxODVkMmIwNzRk
OWNjIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL21vY2svU3BlZWNoSW5wdXRDbGllbnRN
b2NrLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xpZW50TW9jay5o
CkBAIC0zNCw2ICszNCw5IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRl
ICJTcGVlY2hJbnB1dENsaWVudC5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCisjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nSGFzaC5oPgogCiAjaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKIApAQCAtNDYs
MTEgKzQ5LDExIEBAIGNsYXNzIFNwZWVjaElucHV0Q2xpZW50TW9jayA6IHB1YmxpYyBTcGVlY2hJ
bnB1dENsaWVudCB7CiBwdWJsaWM6CiAgICAgU3BlZWNoSW5wdXRDbGllbnRNb2NrKCk7CiAKLSAg
ICB2b2lkIHNldFJlY29nbml0aW9uUmVzdWx0KGNvbnN0IFN0cmluZyYgcmVzdWx0KTsKKyAgICB2
b2lkIHNldFJlY29nbml0aW9uUmVzdWx0KGNvbnN0IFN0cmluZyYgcmVzdWx0LCBjb25zdCBTdHJp
bmcmIGxhbmd1YWdlVGFnKTsKIAogICAgIC8vIFNwZWVjaElucHV0Q2xpZW50IG1ldGhvZHMuCiAg
ICAgdm9pZCBzZXRMaXN0ZW5lcihTcGVlY2hJbnB1dExpc3RlbmVyKik7Ci0gICAgYm9vbCBzdGFy
dFJlY29nbml0aW9uKGludCwgY29uc3QgSW50UmVjdCYpOworICAgIGJvb2wgc3RhcnRSZWNvZ25p
dGlvbihpbnQsIGNvbnN0IFdURjo6Q1N0cmluZyYsIGNvbnN0IEludFJlY3QmKTsKICAgICB2b2lk
IHN0b3BSZWNvcmRpbmcoaW50KTsKICAgICB2b2lkIGNhbmNlbFJlY29nbml0aW9uKGludCk7CiAK
QEAgLTYxLDcgKzY0LDExIEBAIHByaXZhdGU6CiAgICAgVGltZXI8U3BlZWNoSW5wdXRDbGllbnRN
b2NrPiBtX3RpbWVyOwogICAgIFNwZWVjaElucHV0TGlzdGVuZXIqIG1fbGlzdGVuZXI7CiAgICAg
aW50IG1fcmVxdWVzdElkOwotICAgIFN0cmluZyBtX3JlY29nbml0aW9uUmVzdWx0OworCisgICAg
Ly8gU3RyaW5ncyBhcmUgdXNlZCBpbnN0ZWFkIG9mIENTdHJpbmcgZm9yIHRoZSBsYW5ndWFnZSB0
YWcKKyAgICAvLyBzaW5jZSBEZWZhdWx0SGFzaDxXVEY6OkNTdHJpbmc+OjpIYXNoIHNlZW1zIG5v
dCB0byBiZSBwcm92aWRlZAorICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IG1fcmVjb2duaXRp
b25SZXN1bHQ7CisgICAgU3RyaW5nIG1fbGFuZ3VhZ2VUYWc7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Q29udHJvbElubmVy
RWxlbWVudHMuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRz
LmNwcAppbmRleCA1ZDViOGIzMGI0MTEwNTIwZDFhNGRlN2I4YTc5YzQ4NWQ3OTM2NjA4Li44Nzli
MzJkZTMwMWM4ZmViZWFjYjJhNTBiYjJmZGFkMmE1MDQ5MjNkIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3JlbmRlcmluZy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCisrKyBiL1dlYkNvcmUvcmVu
ZGVyaW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKQEAgLTIxLDkgKzIxLDkgQEAKICAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKICAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KLSAKKwogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlRl
eHRDb250cm9sSW5uZXJFbGVtZW50cy5oIgogCkBAIC0xMDAsMjUgKzEwMCwyNSBAQCB2b2lkIFRl
eHRDb250cm9sSW5uZXJFbGVtZW50OjphdHRhY2hJbm5lckVsZW1lbnQoTm9kZSogcGFyZW50LCBQ
YXNzUmVmUHRyPFJlbmRlcgogewogICAgIC8vIFdoZW4gYWRkaW5nIHRoZXNlIGVsZW1lbnRzLCBj
cmVhdGUgdGhlIHJlbmRlcmVyICYgc3R5bGUgZmlyc3QgYmVmb3JlIGFkZGluZyB0byB0aGUgRE9N
LgogICAgIC8vIE90aGVyd2lzZSwgdGhlIHJlbmRlciB0cmVlIHdpbGwgY3JlYXRlIHNvbWUgYW5v
bnltb3VzIGJsb2NrcyB0aGF0IHdpbGwgbWVzcyB1cCBvdXIgbGF5b3V0LgotCisgICAgCiAgICAg
Ly8gQ3JlYXRlIHRoZSByZW5kZXJlciB3aXRoIHRoZSBzcGVjaWZpZWQgc3R5bGUKICAgICBSZW5k
ZXJPYmplY3QqIHJlbmRlcmVyID0gY3JlYXRlUmVuZGVyZXIoYXJlbmEsIHN0eWxlLmdldCgpKTsK
ICAgICBpZiAocmVuZGVyZXIpIHsKICAgICAgICAgc2V0UmVuZGVyZXIocmVuZGVyZXIpOwogICAg
ICAgICByZW5kZXJlci0+c2V0U3R5bGUoc3R5bGUpOwogICAgIH0KLSAgICAKKwogICAgIC8vIFNl
dCB0aGVzZSBleHBsaWNpdGx5IHNpbmNlIHRoaXMgbm9ybWFsbHkgaGFwcGVucyBkdXJpbmcgYW4g
YXR0YWNoKCkKICAgICBzZXRBdHRhY2hlZCgpOwogICAgIHNldEluRG9jdW1lbnQoKTsKLSAgICAK
KwogICAgIC8vIEZvciBlbGVtZW50cyB3aXRob3V0IGEgc2hhZG93IHBhcmVudCwgYWRkIHRoZSBu
b2RlIHRvIHRoZSBET00gbm9ybWFsbHkuCiAgICAgaWYgKCFtX3NoYWRvd1BhcmVudCkgewogICAg
ICAgICAvLyBGSVhNRTogVGhpcyBjb2RlIHNlZW1zIHZlcnkgd3JvbmcuICBXaHkgYXJlIHdlIG1h
Z2ljYWxseSBhZGRpbmcgfHRoaXN8IHRvIHRoZSBET00gaGVyZT8KICAgICAgICAgLy8gICAgICAg
IFdlIHNob3VsZG4ndCBiZSBjYWxsaW5nIHBhcnNlciBBUEkgbWV0aG9kcyBvdXRzaWRlIG9mIHRo
ZSBwYXJzZXIhCiAgICAgICAgIHBhcmVudC0+ZGVwcmVjYXRlZFBhcnNlckFkZENoaWxkKHRoaXMp
OwogICAgIH0KLSAKKwogICAgIC8vIEFkZCB0aGUgcmVuZGVyZXIgdG8gdGhlIHJlbmRlciB0cmVl
CiAgICAgaWYgKHJlbmRlcmVyKQogICAgICAgICBwYXJlbnQtPnJlbmRlcmVyKCktPmFkZENoaWxk
KHJlbmRlcmVyKTsKQEAgLTIwOCw3ICsyMDgsNyBAQCB2b2lkIFNlYXJjaEZpZWxkQ2FuY2VsQnV0
dG9uRWxlbWVudDo6ZGV0YWNoKCkKIHsKICAgICBpZiAobV9jYXB0dXJpbmcpIHsKICAgICAgICAg
aWYgKEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCkpCi0gICAgICAgICAgICBmcmFt
ZS0+ZXZlbnRIYW5kbGVyKCktPnNldENhcHR1cmluZ01vdXNlRXZlbnRzTm9kZSgwKTsgICAgICAK
KyAgICAgICAgICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+c2V0Q2FwdHVyaW5nTW91c2VFdmVu
dHNOb2RlKDApOwogICAgIH0KICAgICBUZXh0Q29udHJvbElubmVyRWxlbWVudDo6ZGV0YWNoKCk7
CiB9CkBAIC0yODEsOSArMjgxLDkgQEAgdm9pZCBTcGluQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2
ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiAgICAgaWYgKCFib3gpIHsKICAgICAgICAgaWYgKCFl
dmVudC0+ZGVmYXVsdEhhbmRsZWQoKSkKICAgICAgICAgICAgIEhUTUxEaXZFbGVtZW50OjpkZWZh
dWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKLSAgICAgICAgcmV0dXJuOyAgICAgICAgCisgICAgICAg
IHJldHVybjsKICAgICB9Ci0gICAgCisgCiAgICAgSFRNTElucHV0RWxlbWVudCogaW5wdXQgPSBz
dGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4oc2hhZG93QW5jZXN0b3JOb2RlKCkpOwogICAg
IGlmIChpbnB1dC0+ZGlzYWJsZWQoKSB8fCBpbnB1dC0+aXNSZWFkT25seUZvcm1Db250cm9sKCkp
IHsKICAgICAgICAgaWYgKCFldmVudC0+ZGVmYXVsdEhhbmRsZWQoKSkKQEAgLTQzMSw3ICs0MzEs
NyBAQCB2b2lkIElucHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5k
bGVyKEV2ZW50KiBldmVudCkKICAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCku
Y2xpY2tFdmVudCkgewogICAgICAgICBzd2l0Y2ggKG1fc3RhdGUpIHsKICAgICAgICAgY2FzZSBJ
ZGxlOgotICAgICAgICAgICAgaWYgKHNwZWVjaElucHV0KCktPnN0YXJ0UmVjb2duaXRpb24obV9s
aXN0ZW5lcklkLCBpbnB1dC0+cmVuZGVyZXIoKS0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKSkp
CisgICAgICAgICAgICBpZiAoc3BlZWNoSW5wdXQoKS0+c3RhcnRSZWNvZ25pdGlvbihtX2xpc3Rl
bmVySWQsIHZhbGlkYXRlZEluaGVyaXRlZExhbmd1YWdlKGlucHV0KSwgaW5wdXQtPnJlbmRlcmVy
KCktPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCkpKQogICAgICAgICAgICAgICAgIHNldFN0YXRl
KFJlY29yZGluZyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBSZWNvcmRpbmc6
CkBAIC00NjEsNiArNDYxLDE4IEBAIFNwZWVjaElucHV0KiBJbnB1dEZpZWxkU3BlZWNoQnV0dG9u
RWxlbWVudDo6c3BlZWNoSW5wdXQoKQogICAgIHJldHVybiBkb2N1bWVudCgpLT5wYWdlKCkgPyBk
b2N1bWVudCgpLT5wYWdlKCktPnNwZWVjaElucHV0KCkgOiAwOwogfQogCitDU3RyaW5nIElucHV0
RmllbGRTcGVlY2hCdXR0b25FbGVtZW50Ojp2YWxpZGF0ZWRJbmhlcml0ZWRMYW5ndWFnZShIVE1M
SW5wdXRFbGVtZW50ICppbnB1dCkKK3sKKyAgICAvLyBPbmx5IEEtWmEtejAtOSBhbmQgJy0nIGFy
ZSBhbGxvd2VkIGluIHRoZSBsYW5ndWFnZSB0YWcgKHNlZSBCQ1AgNDcpCisgICAgQ1N0cmluZyBs
YW5ndWFnZVRhZyA9IGlucHV0LT5jb21wdXRlSW5oZXJpdGVkTGFuZ3VhZ2UoKS5zdHJpbmcoKS5h
c2NpaSgpOworICAgIGZvciAoY29uc3QgY2hhciAqcCA9IGxhbmd1YWdlVGFnLmRhdGEoKTsgKnAg
IT0gJ1wwJzsgKytwKSB7CisgICAgICAgIGlmICghaXNhbG51bSgqcCkgJiYgKnAgIT0gJy0nKQor
ICAgICAgICAgICAgcmV0dXJuIENTdHJpbmcoKTsKKyAgICB9CisKKyAgICByZXR1cm4gbGFuZ3Vh
Z2VUYWc7Cit9CisKIHZvaWQgSW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQ6OmRpZENvbXBs
ZXRlUmVjb3JkaW5nKGludCkKIHsKICAgICBzZXRTdGF0ZShSZWNvZ25pemluZyk7CkBAIC00ODcs
NyArNDk5LDcgQEAgdm9pZCBJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudDo6ZGV0YWNoKCkK
IHsKICAgICBpZiAobV9jYXB0dXJpbmcpIHsKICAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRv
Y3VtZW50KCktPmZyYW1lKCkpCi0gICAgICAgICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPnNl
dENhcHR1cmluZ01vdXNlRXZlbnRzTm9kZSgwKTsgICAgICAKKyAgICAgICAgICAgIGZyYW1lLT5l
dmVudEhhbmRsZXIoKS0+c2V0Q2FwdHVyaW5nTW91c2VFdmVudHNOb2RlKDApOwogICAgIH0KIAog
ICAgIGlmIChtX3N0YXRlICE9IElkbGUpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9U
ZXh0Q29udHJvbElubmVyRWxlbWVudHMuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRDb250cm9s
SW5uZXJFbGVtZW50cy5oCmluZGV4IGMxNDZhNDJkYzQzNDllNzdkZGFiZWUzMTdkYTZlNzFlZjU2
YTdlNTguLjRmNTAyNmJiYmQzZTViMGQ1OTdlZjQzZmFmYjc5M2NiZTJlNWU3ODcgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oCisrKyBiL1dl
YkNvcmUvcmVuZGVyaW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oCkBAIC0xNDcsNiArMTQ3
LDcgQEAgcHJpdmF0ZToKICAgICBJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudChIVE1MRWxl
bWVudCopOwogICAgIFNwZWVjaElucHV0KiBzcGVlY2hJbnB1dCgpOwogICAgIHZvaWQgc2V0U3Rh
dGUoU3BlZWNoSW5wdXRTdGF0ZSBzdGF0ZSk7CisgICAgQ1N0cmluZyB2YWxpZGF0ZWRJbmhlcml0
ZWRMYW5ndWFnZShIVE1MSW5wdXRFbGVtZW50ICppbnB1dCk7CiAKICAgICBib29sIG1fY2FwdHVy
aW5nOwogICAgIFNwZWVjaElucHV0U3RhdGUgbV9zdGF0ZTsKZGlmZiAtLWdpdCBhL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGQ4ODRh
YjYwYWNkN2Y3YjdmYjcwYTI4MTJhZjA5MGJkNTIzMmJmY2UuLjBhYWM2MjUwMzNhYzBiNjA0MzEx
YmQ0NTNlZDAyZWIzNzRjMzY0OTcgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEw
LTEwLTA2ICBMZWFuZHJvIEdyYWNpw6EgR2lsICA8bGVhbmRyb2dyYWNpYUBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGF0Y2gg
dGhlIGN1cnJlbnQgc3BlZWNoIEhUTUwgdGFnIGltcGxlbWVudGF0aW9uIHRvIHVzZSBhbmQgdmFs
aWRhdGUKKyAgICAgICAgdGhlIG5lYXJlc3QgbGFuZ3VhZ2UgdGFnLiBUaGUgbGFuZ3VhZ2UgaXMg
bm93IHBhc3NlZCB0byB0aGUKKyAgICAgICAgc3RhcnRSZWNvZ25pdGlvbiBtZXRob2RzIHNvIHRo
YXQgbGFuZ3VhZ2Utc3BlY2lmaWMgcmVjb2duaXRpb24gY291bGQKKyAgICAgICAgYmUgdXNlZC4g
QWxzbyBhZGRlZCBhIHNlY29uZCBwYXJhbWV0ZXIgdG8gc2V0TW9ja1NwZWVjaElucHV0UmVzdWx0
IGZvcgorICAgICAgICB0aGUgbGFuZ3VhZ2UgdXNlZCBpbiBzcGVlY2ggcmVjb2duaXRpb24uCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzA4OQorCisg
ICAgICAgICogcHVibGljL1dlYlNwZWVjaElucHV0Q29udHJvbGxlci5oOgorICAgICAgICAoV2Vi
S2l0OjpXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXI6OnN0YXJ0UmVjb2duaXRpb24pOgorICAgICAg
ICAqIHB1YmxpYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrLmg6CisgICAgICAgICogc3Jj
L1NwZWVjaElucHV0Q2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaElucHV0
Q2xpZW50SW1wbDo6c3RhcnRSZWNvZ25pdGlvbik6CisgICAgICAgICogc3JjL1NwZWVjaElucHV0
Q2xpZW50SW1wbC5oOgorICAgICAgICAqIHNyYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2Nr
SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJ
bXBsOjpzZXRNb2NrUmVjb2duaXRpb25SZXN1bHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVl
Y2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6c3RhcnRSZWNvZ25pdGlvbik6CisgICAgICAgICog
c3JjL1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsLmg6CisgICAgICAgICogc3JjL1dl
YlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OldlYlZpZXdJbXBs
KToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuaDoKKwogMjAxMC0wOS0yOSAgQWxwaGEgTGFt
ICA8aGNsYW1AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEphbWVzIFJvYmlu
c29uLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hJbnB1dENv
bnRyb2xsZXIuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoSW5wdXRDb250cm9s
bGVyLmgKaW5kZXggNTQwODc0MWEzYzk0ZDNiZjFjNTQzZDk2ZTlmYzE2YTYzOTBkYjAyZi4uOWZi
Y2NhMjNkOTNkOGU4OGEyZjIyMzlkZjljYWM2NTRkMGIzOTgyYiAxMDA2NDQKLS0tIGEvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIuaAorKysgYi9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYlNwZWVjaElucHV0Q29udHJvbGxlci5oCkBAIC0zNSw2ICszNSw3
IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBXZWJDU3RyaW5nOwogc3RydWN0IFdl
YlJlY3Q7CiAKIC8vIFByb3ZpZGVzIGFuIGVtYmVkZGVyIEFQSSBjYWxsZWQgYnkgV2ViS2l0LgpA
QCAtNDMsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgLy8gU3RhcnRzIHNwZWVjaCByZWNvZ25pdGlv
bi4gU3BlZWNoIHdpbGwgZ2V0IHJlY29yZGVkIHVudGlsIHRoZSBlbmRwb2ludGVyIGRldGVjdHMg
c2lsZW5jZSwKICAgICAvLyBydW5zIHRvIHRoZSBsaW1pdCBvciBzdG9wUmVjb3JkaW5nIGlzIGNh
bGxlZC4gUHJvZ3Jlc3MgaW5kaWNhdGlvbnMgYW5kIHRoZSByZWNvZ25pemVkCiAgICAgLy8gdGV4
dCBhcmUgcmV0dXJuZWQgdmlhIHRoZSBsaXN0ZW5lciBpbnRlcmZhY2UuCi0gICAgdmlydHVhbCBi
b29sIHN0YXJ0UmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCwgY29uc3QgV2ViUmVjdCYpCisgICAg
dmlydHVhbCBib29sIHN0YXJ0UmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCwgY29uc3QgV2ViQ1N0
cmluZyYsIGNvbnN0IFdlYlJlY3QmKQogICAgIHsKICAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2suaCBiL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9jay5oCmluZGV4IDlhMjYyMzVm
ZjZkNWRjY2JiZTI0NzI2MmFlNDRhM2FjNzM5N2MzZjQuLmQzNjkyZDc2ODNhM2RjZmU4MDRhMzA3
NTM3YmM1ZjQ2ZmUyNzc1M2UgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
U3BlZWNoSW5wdXRDb250cm9sbGVyTW9jay5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9jay5oCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoK
ICAgICAgICAgV2ViU3BlZWNoSW5wdXRMaXN0ZW5lciogbGlzdGVuZXIpOwogICAgIHZpcnR1YWwg
fldlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2soKSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBz
ZXRNb2NrUmVjb2duaXRpb25SZXN1bHQoY29uc3QgV2ViU3RyaW5nJiByZXN1bHQpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0TW9ja1JlY29nbml0aW9uUmVzdWx0KGNvbnN0IFdlYlN0cmluZyYg
cmVzdWx0LCBjb25zdCBXZWJTdHJpbmcmIGxhbmd1YWdlVGFnKSA9IDA7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvU3BlZWNoSW5w
dXRDbGllbnRJbXBsLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvU3BlZWNoSW5wdXRDbGllbnRJ
bXBsLmNwcAppbmRleCA5NjNkNDQwNWE2MmQzMmUxYThjZWNkNTRjMDhjNWJiZWIzYTYyZGNhLi44
MGEwOWMwOGZiMjAwNTFiYjQyZmNmNGI5ODJhMDFjODg3ZDBiYWRkIDEwMDY0NAotLS0gYS9XZWJL
aXQvY2hyb21pdW0vc3JjL1NwZWVjaElucHV0Q2xpZW50SW1wbC5jcHAKKysrIGIvV2ViS2l0L2No
cm9taXVtL3NyYy9TcGVlY2hJbnB1dENsaWVudEltcGwuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAj
aW5jbHVkZSAiU3BlZWNoSW5wdXRDbGllbnRJbXBsLmgiCiAKICNpbmNsdWRlICJQbGF0Zm9ybVN0
cmluZy5oIgorI2luY2x1ZGUgIldlYkNTdHJpbmcuaCIKICNpbmNsdWRlICJXZWJTcGVlY2hJbnB1
dENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJXZWJTdHJpbmcuaCIKICNpbmNsdWRlICJXZWJWaWV3
Q2xpZW50LmgiCkBAIC01NiwxMCArNTcsMTAgQEAgdm9pZCBTcGVlY2hJbnB1dENsaWVudEltcGw6
OnNldExpc3RlbmVyKFdlYkNvcmU6OlNwZWVjaElucHV0TGlzdGVuZXIqIGxpc3RlbmVyKQogICAg
IG1fbGlzdGVuZXIgPSBsaXN0ZW5lcjsKIH0KIAotYm9vbCBTcGVlY2hJbnB1dENsaWVudEltcGw6
OnN0YXJ0UmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYg
ZWxlbWVudFJlY3QpCitib29sIFNwZWVjaElucHV0Q2xpZW50SW1wbDo6c3RhcnRSZWNvZ25pdGlv
bihpbnQgcmVxdWVzdElkLCBjb25zdCBXVEY6OkNTdHJpbmcmIGxhbmd1YWdlVGFnLCBjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiBlbGVtZW50UmVjdCkKIHsKICAgICBBU1NFUlQobV9saXN0ZW5lcik7
Ci0gICAgcmV0dXJuIG1fY29udHJvbGxlci0+c3RhcnRSZWNvZ25pdGlvbihyZXF1ZXN0SWQsIGVs
ZW1lbnRSZWN0KTsKKyAgICByZXR1cm4gbV9jb250cm9sbGVyLT5zdGFydFJlY29nbml0aW9uKHJl
cXVlc3RJZCwgbGFuZ3VhZ2VUYWcsIGVsZW1lbnRSZWN0KTsKIH0KIAogdm9pZCBTcGVlY2hJbnB1
dENsaWVudEltcGw6OnN0b3BSZWNvcmRpbmcoaW50IHJlcXVlc3RJZCkKZGlmZiAtLWdpdCBhL1dl
YktpdC9jaHJvbWl1bS9zcmMvU3BlZWNoSW5wdXRDbGllbnRJbXBsLmggYi9XZWJLaXQvY2hyb21p
dW0vc3JjL1NwZWVjaElucHV0Q2xpZW50SW1wbC5oCmluZGV4IDgxN2IzMmIxMjQxNGIzYTA3ZGZh
M2FlMzUxOTA4N2RlYTVhMGY3MzMuLmM5MWEzOGNkMGQzZjQyNmUxOThhNzgxOWI3NDRjYjhlZjFi
Njg2OGYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvU3BlZWNoSW5wdXRDbGllbnRJ
bXBsLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9TcGVlY2hJbnB1dENsaWVudEltcGwuaApA
QCAtMzYsNiArMzYsMTAgQEAKICNpbmNsdWRlICJXZWJTcGVlY2hJbnB1dExpc3RlbmVyLmgiCiAj
aW5jbHVkZSAicGFnZS9TcGVlY2hJbnB1dENsaWVudC5oIgogCituYW1lc3BhY2UgV1RGIHsKK2Ns
YXNzIENTdHJpbmc7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFNwZWVjaElucHV0
TGlzdGVuZXI7CiB9CkBAIC01NCw3ICs1OCw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFNwZWVjaElu
cHV0Q2xpZW50IG1ldGhvZHMuCiAgICAgdm9pZCBzZXRMaXN0ZW5lcihXZWJDb3JlOjpTcGVlY2hJ
bnB1dExpc3RlbmVyKik7Ci0gICAgYm9vbCBzdGFydFJlY29nbml0aW9uKGludCwgY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYpOworICAgIGJvb2wgc3RhcnRSZWNvZ25pdGlvbihpbnQsIGNvbnN0IFdU
Rjo6Q1N0cmluZyYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKICAgICB2b2lkIHN0b3BSZWNv
cmRpbmcoaW50KTsKICAgICB2b2lkIGNhbmNlbFJlY29nbml0aW9uKGludCk7CiAKZGlmZiAtLWdp
dCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGwu
Y3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1w
bC5jcHAKaW5kZXggNjBjNGZlZDg1MmIyODRlMDI3MWFkMDBlZDk3MTAwMmEyZjU3YTRiNi4uMWYy
NzQ4YTQ4MThmMGFlMDQ1MGVhOTA3ZTBhNDBjZmNmZjc1NWMyOCAxMDA2NDQKLS0tIGEvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbC5jcHAKKysrIGIv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbC5jcHAK
QEAgLTMzLDYgKzMzLDcgQEAKIAogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVk
ZSAiU3BlZWNoSW5wdXRDbGllbnRNb2NrLmgiCisjaW5jbHVkZSAiV2ViQ1N0cmluZy5oIgogI2lu
Y2x1ZGUgIldlYlJlY3QuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01NSw5ICs1Niw5IEBA
IFdlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsOjp+V2ViU3BlZWNoSW5wdXRDb250cm9s
bGVyTW9ja0ltcGwoKQogICAgIG1fd2ViY29yZU1vY2stPnNldExpc3RlbmVyKDApOwogfQogCi12
b2lkIFdlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsOjpzZXRNb2NrUmVjb2duaXRpb25S
ZXN1bHQoY29uc3QgV2ViU3RyaW5nJiByZXN1bHQpCit2b2lkIFdlYlNwZWVjaElucHV0Q29udHJv
bGxlck1vY2tJbXBsOjpzZXRNb2NrUmVjb2duaXRpb25SZXN1bHQoY29uc3QgV2ViU3RyaW5nJiBy
ZXN1bHQsIGNvbnN0IFdlYlN0cmluZyAmbGFuZ3VhZ2VUYWcpCiB7Ci0gICAgbV93ZWJjb3JlTW9j
ay0+c2V0UmVjb2duaXRpb25SZXN1bHQocmVzdWx0KTsKKyAgICBtX3dlYmNvcmVNb2NrLT5zZXRS
ZWNvZ25pdGlvblJlc3VsdChyZXN1bHQsIGxhbmd1YWdlVGFnKTsKIH0KIAogdm9pZCBXZWJTcGVl
Y2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6ZGlkQ29tcGxldGVSZWNvcmRpbmcoaW50IHJlcXVl
c3RJZCkKQEAgLTc1LDkgKzc2LDkgQEAgdm9pZCBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2Nr
SW1wbDo6c2V0UmVjb2duaXRpb25SZXN1bHQoaW50IHJlcXVlc3RJZCwgY29uc3QKICAgICBtX2xp
c3RlbmVyLT5zZXRSZWNvZ25pdGlvblJlc3VsdChyZXF1ZXN0SWQsIHJlc3VsdCk7CiB9CiAKLWJv
b2wgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OnN0YXJ0UmVjb2duaXRpb24oaW50
IHJlcXVlc3RJZCwgY29uc3QgV2ViUmVjdCYgZWxlbWVudFJlY3QpCitib29sIFdlYlNwZWVjaElu
cHV0Q29udHJvbGxlck1vY2tJbXBsOjpzdGFydFJlY29nbml0aW9uKGludCByZXF1ZXN0SWQsIGNv
bnN0IFdlYkNTdHJpbmcmIGxhbmd1YWdlVGFnLCBjb25zdCBXZWJSZWN0JiBlbGVtZW50UmVjdCkK
IHsKLSAgICByZXR1cm4gbV93ZWJjb3JlTW9jay0+c3RhcnRSZWNvZ25pdGlvbihyZXF1ZXN0SWQs
IGVsZW1lbnRSZWN0KTsKKyAgICByZXR1cm4gbV93ZWJjb3JlTW9jay0+c3RhcnRSZWNvZ25pdGlv
bihyZXF1ZXN0SWQsIGxhbmd1YWdlVGFnLCBlbGVtZW50UmVjdCk7CiB9CiAKIHZvaWQgV2ViU3Bl
ZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OmNhbmNlbFJlY29nbml0aW9uKGludCByZXF1ZXN0
SWQpCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNwZWVjaElucHV0Q29udHJv
bGxlck1vY2tJbXBsLmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNwZWVjaElucHV0Q29udHJv
bGxlck1vY2tJbXBsLmgKaW5kZXggZWRiZmNhM2VlNjBlOTM5NDI4OTNlMjcyMTg5M2U0M2EwZWI4
N2M1Zi4uZTI0ZDgwYTNiNzFiZTcwOTJjNGY3MjNmNjk4MzgyNGU5M2I4OTRhMSAxMDA2NDQKLS0t
IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbC5o
CisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0lt
cGwuaApAQCAtMzYsNiArMzYsMTEgQEAKICNpbmNsdWRlICJXZWJTcGVlY2hJbnB1dExpc3RlbmVy
LmgiCiAjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV1RGIHsKK2NsYXNzIFN0
cmluZzsKK30KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgU3BlZWNoSW5wdXRDbGllbnRN
b2NrOwpAQCAtNTcsMTIgKzYyLDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFJlY29nbml0aW9u
UmVzdWx0KGludCByZXF1ZXN0SWQsIGNvbnN0IFdURjo6U3RyaW5nJiByZXN1bHQpOwogCiAgICAg
Ly8gV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyIG1ldGhvZHMuCi0gICAgYm9vbCBzdGFydFJlY29n
bml0aW9uKGludCByZXF1ZXN0SWQsIGNvbnN0IFdlYlJlY3QmIGVsZW1lbnRSZWN0KTsKKyAgICBi
b29sIHN0YXJ0UmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCwgY29uc3QgV2ViQ1N0cmluZyYgbGFu
Z3VhZ2VUYWcsIGNvbnN0IFdlYlJlY3QmIGVsZW1lbnRSZWN0KTsKICAgICB2b2lkIGNhbmNlbFJl
Y29nbml0aW9uKGludCByZXF1ZXN0SWQpOwogICAgIHZvaWQgc3RvcFJlY29yZGluZyhpbnQgcmVx
dWVzdElkKTsKIAogICAgIC8vIFdlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2sgbWV0aG9kcy4K
LSAgICB2b2lkIHNldE1vY2tSZWNvZ25pdGlvblJlc3VsdChjb25zdCBXZWJTdHJpbmcmIHJlc3Vs
dCk7CisgICAgdm9pZCBzZXRNb2NrUmVjb2duaXRpb25SZXN1bHQoY29uc3QgV2ViU3RyaW5nJiBy
ZXN1bHQsIGNvbnN0IFdlYlN0cmluZyYgbGFuZ3VhZ2VUYWcpOwogCiBwcml2YXRlOgogICAgIE93
blB0cjxXZWJDb3JlOjpTcGVlY2hJbnB1dENsaWVudE1vY2s+IG1fd2ViY29yZU1vY2s7CmRpZmYg
LS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IDU5OWM2NWUwYzNhZDc4YmRkMzMzYjNkOWQw
NWYwYTMzYmNhNWM2YjkuLjEzMDI4OGIyODMxMzE4YzdhMzI0MjdhZDljZGZiNDFlNzkxNDQ4NjMg
MTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC04OCw2ICs4OCw3IEBACiAjaW5j
bHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZWxlY3Rpb25Db250cm9sbGVyLmgi
CiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRlICJTcGVlY2hJbnB1dENsaWVudEltcGwu
aCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgIlR5cGluZ0NvbW1hbmQuaCIKICNpbmNs
dWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgpAQCAtMjc1LDcgKzI3Niw3IEBAIFdlYlZpZXdJ
bXBsOjpXZWJWaWV3SW1wbChXZWJWaWV3Q2xpZW50KiBjbGllbnQsIFdlYkRldlRvb2xzQWdlbnRD
bGllbnQqIGRldlRvb2xzCiAgICAgLCBtX2NvbXBvc2l0b3JDcmVhdGlvbkZhaWxlZChmYWxzZSkK
ICNlbmRpZgogI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCi0gICAgLCBtX3NwZWVjaElucHV0Q2xp
ZW50KGNsaWVudCkKKyAgICAsIG1fc3BlZWNoSW5wdXRDbGllbnQobmV3IFNwZWVjaElucHV0Q2xp
ZW50SW1wbChjbGllbnQpKQogI2VuZGlmCiAgICAgLCBtX2RldmljZU9yaWVudGF0aW9uQ2xpZW50
UHJveHkobmV3IERldmljZU9yaWVudGF0aW9uQ2xpZW50UHJveHkoY2xpZW50ID8gY2xpZW50LT5k
ZXZpY2VPcmllbnRhdGlvbkNsaWVudCgpIDogMCkpCiB7CkBAIC0yOTgsNyArMjk5LDcgQEAgV2Vi
Vmlld0ltcGw6OldlYlZpZXdJbXBsKFdlYlZpZXdDbGllbnQqIGNsaWVudCwgV2ViRGV2VG9vbHNB
Z2VudENsaWVudCogZGV2VG9vbHMKICAgICBwYWdlQ2xpZW50cy5kcmFnQ2xpZW50ID0gJm1fZHJh
Z0NsaWVudEltcGw7CiAgICAgcGFnZUNsaWVudHMuaW5zcGVjdG9yQ2xpZW50ID0gJm1faW5zcGVj
dG9yQ2xpZW50SW1wbDsKICNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQotICAgIHBhZ2VDbGllbnRz
LnNwZWVjaElucHV0Q2xpZW50ID0gJm1fc3BlZWNoSW5wdXRDbGllbnQ7CisgICAgcGFnZUNsaWVu
dHMuc3BlZWNoSW5wdXRDbGllbnQgPSBtX3NwZWVjaElucHV0Q2xpZW50LmdldCgpOwogI2VuZGlm
CiAgICAgcGFnZUNsaWVudHMuZGV2aWNlT3JpZW50YXRpb25DbGllbnQgPSBtX2RldmljZU9yaWVu
dGF0aW9uQ2xpZW50UHJveHkuZ2V0KCk7CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVmlld0ltcGwuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAppbmRl
eCBlNTFkZjRkOThlM2Q4ZTJiNjExMjU1MDM4ZjA4YzYxZmU0MmM3ODc4Li42YzYzNDZkNDA3Nzlm
OTczNGY2NTgzZDY3ZGY5YTdkOWE0YTMyZTFlIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlZpZXdJbXBsLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5o
CkBAIC00OSw3ICs0OSw2IEBACiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIkxheWVy
UmVuZGVyZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlvblByZXNlbnRlckltcGwu
aCIKLSNpbmNsdWRlICJTcGVlY2hJbnB1dENsaWVudEltcGwuaCIKICNpbmNsdWRlIDx3dGYvT3du
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIApAQCAtNzQsNiArNzMsNyBAQCBj
bGFzcyBBdXRvRmlsbFBvcHVwTWVudUNsaWVudDsKIGNsYXNzIENvbnRleHRNZW51Q2xpZW50SW1w
bDsKIGNsYXNzIERldmljZU9yaWVudGF0aW9uQ2xpZW50UHJveHk7CiBjbGFzcyBEcmFnU2Nyb2xs
VGltZXI7CitjbGFzcyBTcGVlY2hJbnB1dENsaWVudEltcGw7CiBjbGFzcyBXZWJBY2Nlc3NpYmls
aXR5T2JqZWN0OwogY2xhc3MgV2ViRGV2VG9vbHNBZ2VudENsaWVudDsKIGNsYXNzIFdlYkRldlRv
b2xzQWdlbnRQcml2YXRlOwpAQCAtNTM3LDcgKzUzNyw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGlj
IGNvbnN0IFdlYklucHV0RXZlbnQqIG1fY3VycmVudElucHV0RXZlbnQ7CiAKICNpZiBFTkFCTEUo
SU5QVVRfU1BFRUNIKQotICAgIFNwZWVjaElucHV0Q2xpZW50SW1wbCBtX3NwZWVjaElucHV0Q2xp
ZW50OworICAgIE93blB0cjxTcGVlY2hJbnB1dENsaWVudEltcGw+IG1fc3BlZWNoSW5wdXRDbGll
bnQ7CiAjZW5kaWYKICAgICAvLyBJZiB3ZSBhdHRlbXB0IHRvIGZldGNoIHRoZSBvbi1zY3JlZW4g
R3JhcGhpY3NDb250ZXh0M0QgYmVmb3JlCiAgICAgLy8gdGhlIGNvbXBvc2l0b3IgaGFzIGJlZW4g
dHVybmVkIG9uLCB3ZSBuZWVkIHRvIGluc3RhbnRpYXRlIGl0CmRpZmYgLS1naXQgYS9XZWJLaXRU
b29scy9DaGFuZ2VMb2cgYi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKaW5kZXggMmEzMTYyMTU5ZWM0
ZTI0YWQwOWRlODlkZTNlMDlkMjJlOWMzNTZhYy4uMDRmOTY0NTA0NmNmZWU4NTI0Mjc1MWJmMTY0
ZDA1OTE2N2NmMDA2ZCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1dl
YktpdFRvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEwLTEwLTA2ICBMZWFuZHJv
IEdyYWNpw6EgR2lsICA8bGVhbmRyb2dyYWNpYUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgYSBzZWNvbmQgcGFyYW1l
dGVyIHRvIHNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdCBmb3IKKyAgICAgICAgdGhlIGxhbmd1YWdl
IHVzZWQgaW4gc3BlZWNoIHJlY29nbml0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDcwODkKKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xh
eW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKHNldE1vY2tTcGVlY2hJbnB1dFJlc3Vs
dENhbGxiYWNrKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja1Nw
ZWVjaElucHV0UmVzdWx0KToKKwogMjAxMC0xMC0wNSAgRGFuaWVsIEJhdGVzICA8ZGJhdGVzQHJp
bS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgS2lsemVyLgpkaWZmIC0tZ2l0IGEv
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwIGIvV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IGVl
NDQzMjViNmQ1NTA3N2YzNWY2NGI3ZGQ4YjIxMTVhZGNlMTczNzAuLjdkZTU3MzIzNmUwYzJmNjA5
ZjhmZDhiZjkyZjgyZmI4ZDg5ZTliNmYgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKQEAgLTEwNzAsMTQgKzEwNzAsMTcgQEAg
c3RhdGljIEpTVmFsdWVSZWYgc2V0TW9ja0dlb2xvY2F0aW9uRXJyb3JDYWxsYmFjayhKU0NvbnRl
eHRSZWYgY29udGV4dCwgSlNPYmplY3QKIAogc3RhdGljIEpTVmFsdWVSZWYgc2V0TW9ja1NwZWVj
aElucHV0UmVzdWx0Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1
bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29u
c3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewotICAg
IGlmIChhcmd1bWVudENvdW50IDwgMSkKKyAgICBpZiAoYXJndW1lbnRDb3VudCA8IDIpCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIAogICAgIEpTUmV0YWlu
UHRyPEpTU3RyaW5nUmVmPiByZXN1bHQoQWRvcHQsIEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4
dCwgYXJndW1lbnRzWzBdLCBleGNlcHRpb24pKTsKICAgICBBU1NFUlQoISpleGNlcHRpb24pOwog
CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGxhbmd1YWdlKEFkb3B0LCBKU1ZhbHVlVG9T
dHJpbmdDb3B5KGNvbnRleHQsIGFyZ3VtZW50c1sxXSwgZXhjZXB0aW9uKSk7CisgICAgQVNTRVJU
KCEqZXhjZXB0aW9uKTsKKwogICAgIExheW91dFRlc3RDb250cm9sbGVyKiBjb250cm9sbGVyID0g
c3RhdGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xsZXIqPihKU09iamVjdEdldFByaXZhdGUodGhp
c09iamVjdCkpOwotICAgIGNvbnRyb2xsZXItPnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdChyZXN1
bHQuZ2V0KCkpOworICAgIGNvbnRyb2xsZXItPnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdChyZXN1
bHQuZ2V0KCksIGxhbmd1YWdlLmdldCgpKTsKIAogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVm
aW5lZChjb250ZXh0KTsKIH0KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAppbmRleCBkNzc3NGU5OTY3
YmU4NjlhNGQzNTM2OTZmYzA0Y2MzZmRmOTgxZGRhLi4zY2NiNzQyNjQwZjRkMmZhMTQyYTcxODli
MzhlZjMzZWJkNDBmYzk0IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCkBAIC0xNTI1LDEwICsx
NTI1LDEwIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFib3J0TW9kYWwoY29uc3QgQ3Bw
QXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhCiB2b2lkIExheW91dFRlc3RDb250cm9s
bGVyOjpzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1
bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKIHsKICAgICByZXN1bHQtPnNldE51bGwoKTsKLSAg
ICBpZiAoYXJndW1lbnRzLnNpemUoKSA8IDEgfHwgIWFyZ3VtZW50c1swXS5pc1N0cmluZygpKQor
ICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpIDwgMiB8fCAhYXJndW1lbnRzWzBdLmlzU3RyaW5nKCkg
fHwgIWFyZ3VtZW50c1sxXS5pc1N0cmluZygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Nw
ZWVjaElucHV0Q29udHJvbGxlck1vY2stPnNldE1vY2tSZWNvZ25pdGlvblJlc3VsdChjcHBWYXJp
YW50VG9XZWJTdHJpbmcoYXJndW1lbnRzWzBdKSk7CisgICAgbV9zcGVlY2hJbnB1dENvbnRyb2xs
ZXJNb2NrLT5zZXRNb2NrUmVjb2duaXRpb25SZXN1bHQoY3BwVmFyaWFudFRvV2ViU3RyaW5nKGFy
Z3VtZW50c1swXSksIGNwcFZhcmlhbnRUb1dlYlN0cmluZyhhcmd1bWVudHNbMV0pKTsKIH0KIAog
V2ViS2l0OjpXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIqIExheW91dFRlc3RDb250cm9sbGVyOjpz
cGVlY2hJbnB1dENvbnRyb2xsZXIoV2ViS2l0OjpXZWJTcGVlY2hJbnB1dExpc3RlbmVyKiBsaXN0
ZW5lcikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69934</attachid>
            <date>2010-10-06 07:19:51 -0700</date>
            <delta_ts>2010-10-06 07:58:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47089-20101006151949.patch</filename>
            <type>text/plain</type>
            <size>33802</size>
            <attacher name="Leandro Graciá Gil">leandrogracia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmYjgwZjI3ODBkOWQ2NjRiMjgwN2IwMDJiODM4Y2MzZTVlYTMyZTE3Li5lNzBlNDA5
MzUwZTY4N2EyYzI5M2YwMjg2YTcwNjZiNmYxMzhlYmE3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTAtMTAtMDYgIExlYW5kcm8gR3JhY2nDoSBHaWwgIDxsZWFuZHJvZ3JhY2lhQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGRlZCBhIGxheW91dCB0ZXN0IGZvciB0aGUgbGFuZ3VhZ2UgdGFnIGluIHNwZWVjaCBidXR0b25z
LiBVcGRhdGVkCisgICAgICAgIHRoZSBzcGVlY2ggYnV0dG9uIHRlc3QgdG8gaW5jbHVkZSB0aGUg
bmV3IGxhbmd1YWdlIHBhcmFtZXRlciBpbiB0aGUKKyAgICAgICAgbW9jayByZXN1bHQuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzA4OQorCisgICAg
ICAgICogZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1sYW5ndWFnZS10YWctZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L3NwZWVjaC9pbnB1dC10ZXh0LWxhbmd1YWdlLXRhZy5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3NwZWVjaC9pbnB1dC10ZXh0LXNwZWVjaGJ1dHRvbi5o
dG1sOiBBZGRlZCBsYW5ndWFnZSBwYXJhbWV0ZXIuCisKIDIwMTAtMTAtMDYgIERpcmsgU2NodWx6
ZSAgPGtyaXRAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIG5ldyBiYXNlbGluZSBm
b3IgUXQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9pbnB1dC10ZXh0LWxh
bmd1YWdlLXRhZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9pbnB1dC10
ZXh0LWxhbmd1YWdlLXRhZy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWY3MWE1NTk0YTFkZDdh
NjcyNmUxNmFjMGJiZTFhZGEzN2NhNzk4ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3Qvc3BlZWNoL2lucHV0LXRleHQtbGFuZ3VhZ2UtdGFnLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDEyIEBACitUZXN0cyBmb3IgbGFuZ3VhZ2UgdGFnIGluaGVyaXRhbmNlIGFuZCB2YWxpZGF0
aW9uIGluIHNwZWVjaCBidXR0b25zPi4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
K1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNwZWVjaElucHV0X25vbmUiKS52YWx1ZSBp
cyAiZXJyb3I6IG5vIHJlc3VsdCBmb3IgdGhlIHByb3ZpZGVkIGxhbmd1YWdlIHRhZyIKK1BBU1Mg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNwZWVjaElucHV0X2VsZW1lbnQiKS52YWx1ZSBpcyAi
UGljdHVyZXMgb2YgdGhlIG1vb24iCitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzcGVl
Y2hJbnB1dF9pbmhlcml0ZWQiKS52YWx1ZSBpcyAi5pyI44Gu5YaZ55yfIgorUEFTUyBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgic3BlZWNoSW5wdXRfaW52YWxpZCIpLnZhbHVlIGlzICJlcnJvcjog
aW52YWxpZCBzdHJpbmcgKGluc3RlYWQgb2YgbGFuZ3VhZ2Ugbm90IGZvdW5kKSIKK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1sYW5ndWFnZS10YWcuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3Qvc3BlZWNoL2lucHV0LXRleHQtbGFuZ3VhZ2UtdGFnLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNWQ2NzE4ZmUyNjJiMjAwZDRiNjljMTM1ZGI4ZWI3YzY5ZmQ3NmNkYQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL2lucHV0LXRleHQtbGFuZ3VhZ2UtdGFnLmh0
bWwKQEAgLTAsMCArMSw5NCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQg
SFRNTC8vRU4iPgorPGh0bWw+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8aGVhZD4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ij4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorZGVzY3JpcHRp
b24oJ1Rlc3RzIGZvciBsYW5ndWFnZSB0YWcgaW5oZXJpdGFuY2UgYW5kIHZhbGlkYXRpb24gaW4g
c3BlZWNoIGJ1dHRvbnM+LicpOworCisvLyBOb3RlOiB0ZXN0IGNhc2VzIGFyZSBzZXF1ZW50aWFs
IHRvIGVuc3VyZSB0aGF0IG5vIG5ldyByZWNvZ25pdGlvbiBzdGFydHMgd2hlbiBhbm90aGVyIHJl
Y29nbml0aW9uIHJlY29yZGluZyBpcyBhY3RpdmUuCitmdW5jdGlvbiBvbkNoYW5nZV9ub25lKCkg
eworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNw
ZWVjaElucHV0X25vbmUiKS52YWx1ZScsICdlcnJvcjogbm8gcmVzdWx0IGZvciB0aGUgcHJvdmlk
ZWQgbGFuZ3VhZ2UgdGFnJyk7CisgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc3BlZWNoQnV0
dG9uQ2xpY2soJ3NwZWVjaElucHV0X2VsZW1lbnQnKTsgfSwgNTApOworfQorCitmdW5jdGlvbiBv
bkNoYW5nZV9lbGVtZW50KCkgeworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInNwZWVjaElucHV0X2VsZW1lbnQiKS52YWx1ZScsICdQaWN0dXJlcyBv
ZiB0aGUgbW9vbicpOworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNwZWVjaEJ1dHRvbkNs
aWNrKCdzcGVlY2hJbnB1dF9pbmhlcml0ZWQnKTsgfSwgNTApOworfQorCitmdW5jdGlvbiBvbkNo
YW5nZV9pbmhlcml0ZWQoKSB7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgic3BlZWNoSW5wdXRfaW5oZXJpdGVkIikudmFsdWUnLCAn5pyI44Gu5YaZ
55yfJyk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja1NwZWVjaElucHV0UmVzdWx0
KCdlcnJvcjogaW52YWxpZCBzdHJpbmcgKGluc3RlYWQgb2YgbGFuZ3VhZ2Ugbm90IGZvdW5kKScs
ICcnKTsKKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzcGVlY2hCdXR0b25DbGljaygnc3Bl
ZWNoSW5wdXRfaW52YWxpZCcpOyB9LCA1MCk7Cit9CisKK2Z1bmN0aW9uIG9uQ2hhbmdlX2ludmFs
aWQoKSB7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgic3BlZWNoSW5wdXRfaW52YWxpZCIpLnZhbHVlJywgJ2Vycm9yOiBpbnZhbGlkIHN0cmluZyAo
aW5zdGVhZCBvZiBsYW5ndWFnZSBub3QgZm91bmQpJyk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuc2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KCdlcnJvcjogbm8gcmVzdWx0IGZvciB0aGUgcHJv
dmlkZWQgbGFuZ3VhZ2UgdGFnJywgJycpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCitmdW5j
dGlvbiBzcGVlY2hCdXR0b25DbGljayhlbGVtZW50X2lkKSB7CisgICAgdmFyIGVsZW1lbnQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50X2lkKTsKKyAgICB2YXIgeCA9IGVsZW1lbnQu
b2Zmc2V0TGVmdCArIGVsZW1lbnQub2Zmc2V0V2lkdGggLSA0OworICAgIHZhciB5ID0gZWxlbWVu
dC5vZmZzZXRUb3AgKyBlbGVtZW50Lm9mZnNldEhlaWdodCAvIDI7CisgICAgZXZlbnRTZW5kZXIu
bW91c2VNb3ZlVG8oeCwgeSk7CisgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgZXZl
bnRTZW5kZXIubW91c2VVcCgpOworfQorCitmdW5jdGlvbiBydW4oKSB7CisgICAgLy8gTm8gY29u
dGVudCBsYW5ndWFnZSAoc2hvdWxkIGRlZmF1bHQgdG8gYW4gZW1wdHkgc3RyaW5nKQorICAgIHZh
ciBpbnB1dF9ub25lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTsKKyAgICBpbnB1
dF9ub25lLmlkID0gJ3NwZWVjaElucHV0X25vbmUnOworICAgIGlucHV0X25vbmUuc3BlZWNoID0g
J3NwZWVjaCc7CisgICAgaW5wdXRfbm9uZS5vbmNoYW5nZSA9IG9uQ2hhbmdlX25vbmU7CisgICAg
ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpbnB1dF9ub25lKTsKKworICAgIC8vIExhbmd1YWdl
IHRhZyBpbiB0aGUgZWxlbWVudCAoZW4tR0IpCisgICAgdmFyIGlucHV0X2VsZW1lbnQgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpOworICAgIGlucHV0X2VsZW1lbnQuaWQgPSAnc3Bl
ZWNoSW5wdXRfZWxlbWVudCc7CisgICAgaW5wdXRfZWxlbWVudC5zcGVlY2ggPSAnc3BlZWNoJzsK
KyAgICBpbnB1dF9lbGVtZW50LmxhbmcgPSAnZW4tR0InOworICAgIGlucHV0X2VsZW1lbnQub25j
aGFuZ2UgPSBvbkNoYW5nZV9lbGVtZW50OworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQo
aW5wdXRfZWxlbWVudCk7CisKKyAgICAvLyBMYW5ndWFnZSB0YWcgaW5oZXJpdGVkIGZyb20gY29u
dGFpbmVyIG9iamVjdCAoamEpCisgICAgdmFyIGlucHV0X2luaGVyaXRlZCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7CisgICAgaW5wdXRfaW5oZXJpdGVkLmlkID0gJ3NwZWVjaElu
cHV0X2luaGVyaXRlZCc7CisgICAgaW5wdXRfaW5oZXJpdGVkLnNwZWVjaCA9ICdzcGVlY2gnOwor
ICAgIGlucHV0X2luaGVyaXRlZC5vbmNoYW5nZSA9IG9uQ2hhbmdlX2luaGVyaXRlZDsKKworICAg
IHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICBkaXYuYXBwZW5k
Q2hpbGQoaW5wdXRfaW5oZXJpdGVkKTsKKyAgICBkaXYubGFuZyA9ICdqYSc7CisgICAgZG9jdW1l
bnQuYm9keS5hcHBlbmRDaGlsZChkaXYpOworCisgICAgLy8gSW52YWxpZCBsYW5ndWFnZSB0YWcg
KHNob3VsZCByZXR1cm4gYW4gZW1wdHkgc3RyaW5nKQorICAgIHZhciBpbnB1dF9pbnZhbGlkID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTsKKyAgICBpbnB1dF9pbnZhbGlkLmlkID0g
J3NwZWVjaElucHV0X2ludmFsaWQnOworICAgIGlucHV0X2ludmFsaWQuc3BlZWNoID0gJ3NwZWVj
aCc7CisgICAgaW5wdXRfaW52YWxpZC5sYW5nID0gJyc7IC8vJzEzMzckw74zzrtrJzsKKyAgICBp
bnB1dF9pbnZhbGlkLm9uY2hhbmdlID0gb25DaGFuZ2VfaW52YWxpZDsKKyAgICBkb2N1bWVudC5i
b2R5LmFwcGVuZENoaWxkKGlucHV0X2ludmFsaWQpOworCisgICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlciAmJiB3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuc2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KCdQaWN0dXJlcyBvZiB0aGUgbW9v
bicsICdlbi1HQicpOworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRNb2NrU3BlZWNo
SW5wdXRSZXN1bHQoJ+aciOOBruWGmeecnycsICdqYScpOworICAgICAgICBzcGVlY2hCdXR0b25D
bGljaygnc3BlZWNoSW5wdXRfbm9uZScpOworICAgIH0KK30KKword2luZG93Lm9ubG9hZCA9IHJ1
bjsKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK3dpbmRvdy5zdWNjZXNzZnVsbHlQYXJz
ZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L3NwZWVjaC9pbnB1dC10ZXh0LXNwZWVjaGJ1dHRvbi5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1zcGVlY2hidXR0b24uaHRtbAppbmRleCA2ZjVi
YzRiMTIxZmI0ZjlkOWRkYTZjMzMxZjhiMjZkYzFjZDQzOTk0Li40OGJlOWMwZTRhY2FhOTY3YzIy
ZTQ0ZjEwOTg2MWQzZGE5YTk2NzM5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L3NwZWVj
aC9pbnB1dC10ZXh0LXNwZWVjaGJ1dHRvbi5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc3Bl
ZWNoL2lucHV0LXRleHQtc3BlZWNoYnV0dG9uLmh0bWwKQEAgLTMyLDcgKzMyLDcgQEAgZnVuY3Rp
b24gb25XZWJraXRTcGVlY2hDaGFuZ2UoKSB7CiAKIGZ1bmN0aW9uIHJ1bigpIHsKICAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyICYmIHdpbmRvdy5ldmVudFNlbmRlcikgewotICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoJ1BpY3R1
cmVzIG9mIHRoZSBtb29uJyk7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldE1vY2tT
cGVlY2hJbnB1dFJlc3VsdCgnUGljdHVyZXMgb2YgdGhlIG1vb24nLCAnZW4nKTsKIAogICAgICAg
ICAvLyBDbGlja2luZyB0aGUgc3BlZWNoIGJ1dHRvbiBzaG91bGQgZmlsbCBpbiBtb2NrIHNwZWVj
aC1yZWNvZ25pemVkIHRleHQuCiAgICAgICAgIHZhciBpbnB1dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdzcGVlY2hJbnB1dCcpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2Mzc3Y2E5YWQ4MjAzZGQ0NDQzYjMzNmQwNmJjNjE5OWIz
NTFkMmVmLi5mMjg1NTRhZmI5ODdjZmE0M2U2ZDgwMDMyY2VkZGQyYTYwOTdjZjNkIDEwMDY0NAot
LS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDM2IEBACisyMDEwLTEwLTA2ICBMZWFuZHJvIEdyYWNpw6EgR2lsICA8bGVhbmRyb2dyYWNpYUBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgUGF0Y2ggdGhlIGN1cnJlbnQgc3BlZWNoIEhUTUwgdGFnIGltcGxlbWVudGF0aW9uIHRv
IHVzZSBhbmQgdmFsaWRhdGUKKyAgICAgICAgdGhlIG5lYXJlc3QgbGFuZ3VhZ2UgdGFnLiBUaGUg
bGFuZ3VhZ2UgaXMgbm93IHBhc3NlZCB0byB0aGUKKyAgICAgICAgc3RhcnRSZWNvZ25pdGlvbiBt
ZXRob2RzIHNvIHRoYXQgbGFuZ3VhZ2Utc3BlY2lmaWMgcmVjb2duaXRpb24gY291bGQKKyAgICAg
ICAgYmUgdXNlZC4gQWxzbyBhZGRlZCBhIHNlY29uZCBwYXJhbWV0ZXIgdG8gc2V0TW9ja1NwZWVj
aElucHV0UmVzdWx0IGZvcgorICAgICAgICB0aGUgbGFuZ3VhZ2UgdXNlZCBpbiBzcGVlY2ggcmVj
b2duaXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD00NzA4OQorCisgICAgICAgIFRlc3Q6IGZhc3Qvc3BlZWNoL2lucHV0LXRleHQtbGFuZ3VhZ2Ut
dGFnLmh0bWwKKworICAgICAgICAqIHBhZ2UvU3BlZWNoSW5wdXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U3BlZWNoSW5wdXQ6OnN0YXJ0UmVjb2duaXRpb24pOgorICAgICAgICAqIHBhZ2UvU3Bl
ZWNoSW5wdXQuaDoKKyAgICAgICAgKiBwYWdlL1NwZWVjaElucHV0Q2xpZW50Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vbW9jay9TcGVlY2hJbnB1dENsaWVudE1vY2suY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U3BlZWNoSW5wdXRDbGllbnRNb2NrOjpzdGFydFJlY29nbml0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OlNwZWVjaElucHV0Q2xpZW50TW9jazo6c2V0UmVjb2duaXRpb25SZXN1bHQpOiBy
ZXN1bHRzIGFyZQorICAgICAgICAgIG5vdyBzdG9yZWQgYnkgbGFuZ3VhZ2UgdXNpbmcgYSBoYXNo
IG1hcC4KKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaElucHV0Q2xpZW50TW9jazo6dGltZXJGaXJl
ZCk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9TcGVlY2hJbnB1dENsaWVudE1vY2suaDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlRleHRDb250cm9sSW5uZXJFbGVtZW50OjphdHRhY2hJbm5lckVsZW1lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6U2VhcmNoRmllbGRDYW5jZWxCdXR0b25FbGVtZW50OjpkZXRhY2gp
OgorICAgICAgICAoV2ViQ29yZTo6U3BpbkJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRs
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQ6OmRl
ZmF1bHRFdmVudEhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRGaWVsZFNwZWVjaEJ1
dHRvbkVsZW1lbnQ6OnZhbGlkYXRlZEluaGVyaXRlZExhbmd1YWdlKToKKyAgICAgICAgICBpbmNs
dWRlcyBhIGJyaWVmIGNoYXJhY3RlciB2YWxpZGF0aW9uIGZvciB0aGUgQkNQIDQ3IGxhbmd1YWdl
IHRhZy4KKyAgICAgICAgKFdlYkNvcmU6OklucHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50Ojpk
ZXRhY2gpOgorICAgICAgICAqIHJlbmRlcmluZy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuaDoK
KwogMjAxMC0xMC0wNiAgRGlyayBTY2h1bHplICA8a3JpdEB3ZWJraXQub3JnPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IE5pa29sYXMgWmltbWVybWFubi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFn
ZS9TcGVlY2hJbnB1dC5jcHAgYi9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXQuY3BwCmluZGV4IDIz
NDc5MWJjNGIxM2Y0M2RmOWQxNzM5ZDVkMjA1ZjlhYTI3ZTIwNzIuLjA4OGQzNzQwOTczMzdjMzU2
ZjFjYmQyNDI0YjZmZDkzOTNiM2MyZDAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9TcGVlY2hJ
bnB1dC5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0LmNwcApAQCAtOTMsMTAgKzkz
LDEwIEBAIHZvaWQgU3BlZWNoSW5wdXQ6OnNldFJlY29nbml0aW9uUmVzdWx0KGludCBsaXN0ZW5l
cklkLCBjb25zdCBTdHJpbmcmIHJlc3VsdCkKICAgICAgICAgbV9saXN0ZW5lcnMuZ2V0KGxpc3Rl
bmVySWQpLT5zZXRSZWNvZ25pdGlvblJlc3VsdChsaXN0ZW5lcklkLCByZXN1bHQpOwogfQogCi1i
b29sIFNwZWVjaElucHV0OjpzdGFydFJlY29nbml0aW9uKGludCBsaXN0ZW5lcklkLCBjb25zdCBJ
bnRSZWN0JiBlbGVtZW50UmVjdCkKK2Jvb2wgU3BlZWNoSW5wdXQ6OnN0YXJ0UmVjb2duaXRpb24o
aW50IGxpc3RlbmVySWQsIGNvbnN0IENTdHJpbmcmIGxhbmd1YWdlVGFnLCBjb25zdCBJbnRSZWN0
JiBlbGVtZW50UmVjdCkKIHsKICAgICBBU1NFUlQobV9saXN0ZW5lcnMuY29udGFpbnMobGlzdGVu
ZXJJZCkpOwotICAgIHJldHVybiBtX2NsaWVudC0+c3RhcnRSZWNvZ25pdGlvbihsaXN0ZW5lcklk
LCBlbGVtZW50UmVjdCk7CisgICAgcmV0dXJuIG1fY2xpZW50LT5zdGFydFJlY29nbml0aW9uKGxp
c3RlbmVySWQsIGxhbmd1YWdlVGFnLCBlbGVtZW50UmVjdCk7CiB9CiAKIHZvaWQgU3BlZWNoSW5w
dXQ6OnN0b3BSZWNvcmRpbmcoaW50IGxpc3RlbmVySWQpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bh
Z2UvU3BlZWNoSW5wdXQuaCBiL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dC5oCmluZGV4IGQxMGI3
ODlhYWQyNzM5ZWRkM2JmNDUzMGU3YzZlMDBjNGUyZGFlOGEuLjA1ZTIwMDljNTBjMWU5NzY0ZjVl
ZWMzZDJmNTc4YTkxM2ZlZDlkZGMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1
dC5oCisrKyBiL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dC5oCkBAIC02MSw3ICs2MSw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHVucmVnaXN0ZXJMaXN0ZW5lcihpbnQpOwogCiAgICAgLy8gTWV0aG9k
cyBpbnZva2VkIGJ5IHRoZSBpbnB1dCBlbGVtZW50cy4KLSAgICBib29sIHN0YXJ0UmVjb2duaXRp
b24oaW50LCBjb25zdCBJbnRSZWN0Jik7CisgICAgYm9vbCBzdGFydFJlY29nbml0aW9uKGludCwg
Y29uc3QgQ1N0cmluZyYsIGNvbnN0IEludFJlY3QmKTsKICAgICB2b2lkIHN0b3BSZWNvcmRpbmco
aW50KTsKICAgICB2b2lkIGNhbmNlbFJlY29nbml0aW9uKGludCk7CiAKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGFnZS9TcGVlY2hJbnB1dENsaWVudC5oIGIvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0
Q2xpZW50LmgKaW5kZXggZDVmZGExN2ZhYTJjZDc5NWFmNDRmNTNhNDZmY2JhNTk3NDFhYjc2Yy4u
ZmUyNTc4YjMxYTM3MzUwZTc3ODc5MzY3YTYxOTAwNzA3YWUzZjlkYiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wYWdlL1NwZWVjaElucHV0Q2xpZW50LmgKKysrIGIvV2ViQ29yZS9wYWdlL1NwZWVjaElu
cHV0Q2xpZW50LmgKQEAgLTMzLDYgKzMzLDEwIEBACiAKICNpZiBFTkFCTEUoSU5QVVRfU1BFRUNI
KQogCituYW1lc3BhY2UgV1RGIHsKK2NsYXNzIENTdHJpbmc7Cit9CisKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgSW50UmVjdDsKQEAgLTQ4LDcgKzUyLDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBzZXRMaXN0ZW5lcihTcGVlY2hJbnB1dExpc3RlbmVyKikgPSAwOwogCiAgICAg
Ly8gU3RhcnRzIHNwZWVjaCByZWNvZ25pdGlvbiBhbmQgYXVkaW8gcmVjb3JkaW5nLgotICAgIHZp
cnR1YWwgYm9vbCBzdGFydFJlY29nbml0aW9uKGludCByZXF1ZXN0SWQsIGNvbnN0IEludFJlY3Qm
IGVsZW1lbnRSZWN0KSA9IDA7CisgICAgdmlydHVhbCBib29sIHN0YXJ0UmVjb2duaXRpb24oaW50
IHJlcXVlc3RJZCwgY29uc3QgV1RGOjpDU3RyaW5nJiwgY29uc3QgSW50UmVjdCYgZWxlbWVudFJl
Y3QpID0gMDsKIAogICAgIC8vIFN0b3BzIGF1ZGlvIHJlY29yZGluZyBhbmQgcGVyZm9ybXMgcmVj
b2duaXRpb24gd2l0aCB0aGUgYXVkaW8gcmVjb3JkZWQgdW50aWwgbm93CiAgICAgLy8gKGRvZXMg
bm90IGRpc2NhcmQgYXVkaW8pLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Nw
ZWVjaElucHV0Q2xpZW50TW9jay5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL21vY2svU3BlZWNoSW5w
dXRDbGllbnRNb2NrLmNwcAppbmRleCA2YjY0OTQyZjE3YjkyNWI0OWVmMDkyMTQ3YzBhMTZhMDdm
MGQ3Y2NjLi5iNjk3YjMxOTI2NWQ2YTBhYmE3ZjBhZDBiNzk0MTQwMzY1M2VhZjdjIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BsYXRmb3JtL21vY2svU3BlZWNoSW5wdXRDbGllbnRNb2NrLmNwcAorKysg
Yi9XZWJDb3JlL3BsYXRmb3JtL21vY2svU3BlZWNoSW5wdXRDbGllbnRNb2NrLmNwcApAQCAtNTAs
MTIgKzUwLDEzIEBAIHZvaWQgU3BlZWNoSW5wdXRDbGllbnRNb2NrOjpzZXRMaXN0ZW5lcihTcGVl
Y2hJbnB1dExpc3RlbmVyKiBsaXN0ZW5lcikKICAgICBtX2xpc3RlbmVyID0gbGlzdGVuZXI7CiB9
CiAKLWJvb2wgU3BlZWNoSW5wdXRDbGllbnRNb2NrOjpzdGFydFJlY29nbml0aW9uKGludCByZXF1
ZXN0SWQsIGNvbnN0IEludFJlY3QmKQorYm9vbCBTcGVlY2hJbnB1dENsaWVudE1vY2s6OnN0YXJ0
UmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCwgY29uc3QgQ1N0cmluZyYgbGFuZ3VhZ2VUYWcsIGNv
bnN0IEludFJlY3QmKQogewogICAgIGlmIChtX3RpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICBtX3JlcXVlc3RJZCA9IHJlcXVlc3RJZDsKICAgICBtX3JlY29yZGlu
ZyA9IHRydWU7CisgICAgbV9sYW5ndWFnZVRhZyA9IFN0cmluZyhsYW5ndWFnZVRhZy5kYXRhKCkp
OwogICAgIG1fdGltZXIuc3RhcnRPbmVTaG90KDApOwogICAgIHJldHVybiB0cnVlOwogfQpAQCAt
ODAsOSArODEsOSBAQCB2b2lkIFNwZWVjaElucHV0Q2xpZW50TW9jazo6Y2FuY2VsUmVjb2duaXRp
b24oaW50IHJlcXVlc3RJZCkKICAgICB9CiB9CiAKLXZvaWQgU3BlZWNoSW5wdXRDbGllbnRNb2Nr
OjpzZXRSZWNvZ25pdGlvblJlc3VsdChjb25zdCBTdHJpbmcmIHJlc3VsdCkKK3ZvaWQgU3BlZWNo
SW5wdXRDbGllbnRNb2NrOjpzZXRSZWNvZ25pdGlvblJlc3VsdChjb25zdCBTdHJpbmcmIHJlc3Vs
dCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZVRhZykKIHsKLSAgICBtX3JlY29nbml0aW9uUmVzdWx0
ID0gcmVzdWx0OworICAgIG1fcmVjb2duaXRpb25SZXN1bHQuc2V0KGxhbmd1YWdlVGFnLCByZXN1
bHQpOwogfQogCiB2b2lkIFNwZWVjaElucHV0Q2xpZW50TW9jazo6dGltZXJGaXJlZChXZWJDb3Jl
OjpUaW1lcjxTcGVlY2hJbnB1dENsaWVudE1vY2s+KikKQEAgLTkyLDcgKzkzLDExIEBAIHZvaWQg
U3BlZWNoSW5wdXRDbGllbnRNb2NrOjp0aW1lckZpcmVkKFdlYkNvcmU6OlRpbWVyPFNwZWVjaElu
cHV0Q2xpZW50TW9jaz4qKQogICAgICAgICBtX2xpc3RlbmVyLT5kaWRDb21wbGV0ZVJlY29yZGlu
ZyhtX3JlcXVlc3RJZCk7CiAgICAgICAgIG1fdGltZXIuc3RhcnRPbmVTaG90KDApOwogICAgIH0g
ZWxzZSB7Ci0gICAgICAgIG1fbGlzdGVuZXItPnNldFJlY29nbml0aW9uUmVzdWx0KG1fcmVxdWVz
dElkLCBtX3JlY29nbml0aW9uUmVzdWx0KTsKKyAgICAgICAgaWYgKG1fcmVjb2duaXRpb25SZXN1
bHQuZmluZChtX2xhbmd1YWdlVGFnKSA9PSBtX3JlY29nbml0aW9uUmVzdWx0LmVuZCgpKQorICAg
ICAgICAgICAgbV9saXN0ZW5lci0+c2V0UmVjb2duaXRpb25SZXN1bHQobV9yZXF1ZXN0SWQsIFN0
cmluZygiZXJyb3I6IG5vIHJlc3VsdCBmb3IgdGhlIHByb3ZpZGVkIGxhbmd1YWdlIHRhZyIpKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9saXN0ZW5lci0+c2V0UmVjb2duaXRpb25SZXN1
bHQobV9yZXF1ZXN0SWQsIG1fcmVjb2duaXRpb25SZXN1bHQuZ2V0KG1fbGFuZ3VhZ2VUYWcpKTsK
KwogICAgICAgICBtX2xpc3RlbmVyLT5kaWRDb21wbGV0ZVJlY29nbml0aW9uKG1fcmVxdWVzdElk
KTsKICAgICAgICAgbV9yZXF1ZXN0SWQgPSAwOwogICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9TcGVlY2hJbnB1dENsaWVudE1vY2suaCBiL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9TcGVlY2hJbnB1dENsaWVudE1vY2suaAppbmRleCBjZTgzZDNiYjljYjg4YjBhM2E5NWI1
NDk1NDI3ZDI5OTFmMmUwYjRmLi4zOThjNTY1MzljN2RhNDZlMDFiNDUzNjI1YzQxODVkMmIwNzRk
OWNjIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL21vY2svU3BlZWNoSW5wdXRDbGllbnRN
b2NrLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xpZW50TW9jay5o
CkBAIC0zNCw2ICszNCw5IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRl
ICJTcGVlY2hJbnB1dENsaWVudC5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCisjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nSGFzaC5oPgogCiAjaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKIApAQCAtNDYs
MTEgKzQ5LDExIEBAIGNsYXNzIFNwZWVjaElucHV0Q2xpZW50TW9jayA6IHB1YmxpYyBTcGVlY2hJ
bnB1dENsaWVudCB7CiBwdWJsaWM6CiAgICAgU3BlZWNoSW5wdXRDbGllbnRNb2NrKCk7CiAKLSAg
ICB2b2lkIHNldFJlY29nbml0aW9uUmVzdWx0KGNvbnN0IFN0cmluZyYgcmVzdWx0KTsKKyAgICB2
b2lkIHNldFJlY29nbml0aW9uUmVzdWx0KGNvbnN0IFN0cmluZyYgcmVzdWx0LCBjb25zdCBTdHJp
bmcmIGxhbmd1YWdlVGFnKTsKIAogICAgIC8vIFNwZWVjaElucHV0Q2xpZW50IG1ldGhvZHMuCiAg
ICAgdm9pZCBzZXRMaXN0ZW5lcihTcGVlY2hJbnB1dExpc3RlbmVyKik7Ci0gICAgYm9vbCBzdGFy
dFJlY29nbml0aW9uKGludCwgY29uc3QgSW50UmVjdCYpOworICAgIGJvb2wgc3RhcnRSZWNvZ25p
dGlvbihpbnQsIGNvbnN0IFdURjo6Q1N0cmluZyYsIGNvbnN0IEludFJlY3QmKTsKICAgICB2b2lk
IHN0b3BSZWNvcmRpbmcoaW50KTsKICAgICB2b2lkIGNhbmNlbFJlY29nbml0aW9uKGludCk7CiAK
QEAgLTYxLDcgKzY0LDExIEBAIHByaXZhdGU6CiAgICAgVGltZXI8U3BlZWNoSW5wdXRDbGllbnRN
b2NrPiBtX3RpbWVyOwogICAgIFNwZWVjaElucHV0TGlzdGVuZXIqIG1fbGlzdGVuZXI7CiAgICAg
aW50IG1fcmVxdWVzdElkOwotICAgIFN0cmluZyBtX3JlY29nbml0aW9uUmVzdWx0OworCisgICAg
Ly8gU3RyaW5ncyBhcmUgdXNlZCBpbnN0ZWFkIG9mIENTdHJpbmcgZm9yIHRoZSBsYW5ndWFnZSB0
YWcKKyAgICAvLyBzaW5jZSBEZWZhdWx0SGFzaDxXVEY6OkNTdHJpbmc+OjpIYXNoIHNlZW1zIG5v
dCB0byBiZSBwcm92aWRlZAorICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IG1fcmVjb2duaXRp
b25SZXN1bHQ7CisgICAgU3RyaW5nIG1fbGFuZ3VhZ2VUYWc7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Q29udHJvbElubmVy
RWxlbWVudHMuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRz
LmNwcAppbmRleCA1ZDViOGIzMGI0MTEwNTIwZDFhNGRlN2I4YTc5YzQ4NWQ3OTM2NjA4Li44Nzli
MzJkZTMwMWM4ZmViZWFjYjJhNTBiYjJmZGFkMmE1MDQ5MjNkIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3JlbmRlcmluZy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCisrKyBiL1dlYkNvcmUvcmVu
ZGVyaW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKQEAgLTIxLDkgKzIxLDkgQEAKICAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKICAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KLSAKKwogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlRl
eHRDb250cm9sSW5uZXJFbGVtZW50cy5oIgogCkBAIC0xMDAsMjUgKzEwMCwyNSBAQCB2b2lkIFRl
eHRDb250cm9sSW5uZXJFbGVtZW50OjphdHRhY2hJbm5lckVsZW1lbnQoTm9kZSogcGFyZW50LCBQ
YXNzUmVmUHRyPFJlbmRlcgogewogICAgIC8vIFdoZW4gYWRkaW5nIHRoZXNlIGVsZW1lbnRzLCBj
cmVhdGUgdGhlIHJlbmRlcmVyICYgc3R5bGUgZmlyc3QgYmVmb3JlIGFkZGluZyB0byB0aGUgRE9N
LgogICAgIC8vIE90aGVyd2lzZSwgdGhlIHJlbmRlciB0cmVlIHdpbGwgY3JlYXRlIHNvbWUgYW5v
bnltb3VzIGJsb2NrcyB0aGF0IHdpbGwgbWVzcyB1cCBvdXIgbGF5b3V0LgotCisgICAgCiAgICAg
Ly8gQ3JlYXRlIHRoZSByZW5kZXJlciB3aXRoIHRoZSBzcGVjaWZpZWQgc3R5bGUKICAgICBSZW5k
ZXJPYmplY3QqIHJlbmRlcmVyID0gY3JlYXRlUmVuZGVyZXIoYXJlbmEsIHN0eWxlLmdldCgpKTsK
ICAgICBpZiAocmVuZGVyZXIpIHsKICAgICAgICAgc2V0UmVuZGVyZXIocmVuZGVyZXIpOwogICAg
ICAgICByZW5kZXJlci0+c2V0U3R5bGUoc3R5bGUpOwogICAgIH0KLSAgICAKKwogICAgIC8vIFNl
dCB0aGVzZSBleHBsaWNpdGx5IHNpbmNlIHRoaXMgbm9ybWFsbHkgaGFwcGVucyBkdXJpbmcgYW4g
YXR0YWNoKCkKICAgICBzZXRBdHRhY2hlZCgpOwogICAgIHNldEluRG9jdW1lbnQoKTsKLSAgICAK
KwogICAgIC8vIEZvciBlbGVtZW50cyB3aXRob3V0IGEgc2hhZG93IHBhcmVudCwgYWRkIHRoZSBu
b2RlIHRvIHRoZSBET00gbm9ybWFsbHkuCiAgICAgaWYgKCFtX3NoYWRvd1BhcmVudCkgewogICAg
ICAgICAvLyBGSVhNRTogVGhpcyBjb2RlIHNlZW1zIHZlcnkgd3JvbmcuICBXaHkgYXJlIHdlIG1h
Z2ljYWxseSBhZGRpbmcgfHRoaXN8IHRvIHRoZSBET00gaGVyZT8KICAgICAgICAgLy8gICAgICAg
IFdlIHNob3VsZG4ndCBiZSBjYWxsaW5nIHBhcnNlciBBUEkgbWV0aG9kcyBvdXRzaWRlIG9mIHRo
ZSBwYXJzZXIhCiAgICAgICAgIHBhcmVudC0+ZGVwcmVjYXRlZFBhcnNlckFkZENoaWxkKHRoaXMp
OwogICAgIH0KLSAKKwogICAgIC8vIEFkZCB0aGUgcmVuZGVyZXIgdG8gdGhlIHJlbmRlciB0cmVl
CiAgICAgaWYgKHJlbmRlcmVyKQogICAgICAgICBwYXJlbnQtPnJlbmRlcmVyKCktPmFkZENoaWxk
KHJlbmRlcmVyKTsKQEAgLTIwOCw3ICsyMDgsNyBAQCB2b2lkIFNlYXJjaEZpZWxkQ2FuY2VsQnV0
dG9uRWxlbWVudDo6ZGV0YWNoKCkKIHsKICAgICBpZiAobV9jYXB0dXJpbmcpIHsKICAgICAgICAg
aWYgKEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCkpCi0gICAgICAgICAgICBmcmFt
ZS0+ZXZlbnRIYW5kbGVyKCktPnNldENhcHR1cmluZ01vdXNlRXZlbnRzTm9kZSgwKTsgICAgICAK
KyAgICAgICAgICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+c2V0Q2FwdHVyaW5nTW91c2VFdmVu
dHNOb2RlKDApOwogICAgIH0KICAgICBUZXh0Q29udHJvbElubmVyRWxlbWVudDo6ZGV0YWNoKCk7
CiB9CkBAIC0yODEsOSArMjgxLDkgQEAgdm9pZCBTcGluQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2
ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiAgICAgaWYgKCFib3gpIHsKICAgICAgICAgaWYgKCFl
dmVudC0+ZGVmYXVsdEhhbmRsZWQoKSkKICAgICAgICAgICAgIEhUTUxEaXZFbGVtZW50OjpkZWZh
dWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKLSAgICAgICAgcmV0dXJuOyAgICAgICAgCisgICAgICAg
IHJldHVybjsKICAgICB9Ci0gICAgCisgCiAgICAgSFRNTElucHV0RWxlbWVudCogaW5wdXQgPSBz
dGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4oc2hhZG93QW5jZXN0b3JOb2RlKCkpOwogICAg
IGlmIChpbnB1dC0+ZGlzYWJsZWQoKSB8fCBpbnB1dC0+aXNSZWFkT25seUZvcm1Db250cm9sKCkp
IHsKICAgICAgICAgaWYgKCFldmVudC0+ZGVmYXVsdEhhbmRsZWQoKSkKQEAgLTQzMSw3ICs0MzEs
NyBAQCB2b2lkIElucHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5k
bGVyKEV2ZW50KiBldmVudCkKICAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCku
Y2xpY2tFdmVudCkgewogICAgICAgICBzd2l0Y2ggKG1fc3RhdGUpIHsKICAgICAgICAgY2FzZSBJ
ZGxlOgotICAgICAgICAgICAgaWYgKHNwZWVjaElucHV0KCktPnN0YXJ0UmVjb2duaXRpb24obV9s
aXN0ZW5lcklkLCBpbnB1dC0+cmVuZGVyZXIoKS0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKSkp
CisgICAgICAgICAgICBpZiAoc3BlZWNoSW5wdXQoKS0+c3RhcnRSZWNvZ25pdGlvbihtX2xpc3Rl
bmVySWQsIHZhbGlkYXRlZEluaGVyaXRlZExhbmd1YWdlKGlucHV0KSwgaW5wdXQtPnJlbmRlcmVy
KCktPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCkpKQogICAgICAgICAgICAgICAgIHNldFN0YXRl
KFJlY29yZGluZyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBSZWNvcmRpbmc6
CkBAIC00NjEsNiArNDYxLDE4IEBAIFNwZWVjaElucHV0KiBJbnB1dEZpZWxkU3BlZWNoQnV0dG9u
RWxlbWVudDo6c3BlZWNoSW5wdXQoKQogICAgIHJldHVybiBkb2N1bWVudCgpLT5wYWdlKCkgPyBk
b2N1bWVudCgpLT5wYWdlKCktPnNwZWVjaElucHV0KCkgOiAwOwogfQogCitDU3RyaW5nIElucHV0
RmllbGRTcGVlY2hCdXR0b25FbGVtZW50Ojp2YWxpZGF0ZWRJbmhlcml0ZWRMYW5ndWFnZShIVE1M
SW5wdXRFbGVtZW50ICppbnB1dCkKK3sKKyAgICAvLyBPbmx5IEEtWmEtejAtOSBhbmQgJy0nIGFy
ZSBhbGxvd2VkIGluIHRoZSBsYW5ndWFnZSB0YWcgKHNlZSBCQ1AgNDcpCisgICAgQ1N0cmluZyBs
YW5ndWFnZVRhZyA9IGlucHV0LT5jb21wdXRlSW5oZXJpdGVkTGFuZ3VhZ2UoKS5zdHJpbmcoKS5h
c2NpaSgpOworICAgIGZvciAoY29uc3QgY2hhciAqcCA9IGxhbmd1YWdlVGFnLmRhdGEoKTsgKnAg
IT0gJ1wwJzsgKytwKSB7CisgICAgICAgIGlmICghaXNhbG51bSgqcCkgJiYgKnAgIT0gJy0nKQor
ICAgICAgICAgICAgcmV0dXJuIENTdHJpbmcoKTsKKyAgICB9CisKKyAgICByZXR1cm4gbGFuZ3Vh
Z2VUYWc7Cit9CisKIHZvaWQgSW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQ6OmRpZENvbXBs
ZXRlUmVjb3JkaW5nKGludCkKIHsKICAgICBzZXRTdGF0ZShSZWNvZ25pemluZyk7CkBAIC00ODcs
NyArNDk5LDcgQEAgdm9pZCBJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudDo6ZGV0YWNoKCkK
IHsKICAgICBpZiAobV9jYXB0dXJpbmcpIHsKICAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRv
Y3VtZW50KCktPmZyYW1lKCkpCi0gICAgICAgICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPnNl
dENhcHR1cmluZ01vdXNlRXZlbnRzTm9kZSgwKTsgICAgICAKKyAgICAgICAgICAgIGZyYW1lLT5l
dmVudEhhbmRsZXIoKS0+c2V0Q2FwdHVyaW5nTW91c2VFdmVudHNOb2RlKDApOwogICAgIH0KIAog
ICAgIGlmIChtX3N0YXRlICE9IElkbGUpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9U
ZXh0Q29udHJvbElubmVyRWxlbWVudHMuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRDb250cm9s
SW5uZXJFbGVtZW50cy5oCmluZGV4IGMxNDZhNDJkYzQzNDllNzdkZGFiZWUzMTdkYTZlNzFlZjU2
YTdlNTguLjRmNTAyNmJiYmQzZTViMGQ1OTdlZjQzZmFmYjc5M2NiZTJlNWU3ODcgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oCisrKyBiL1dl
YkNvcmUvcmVuZGVyaW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oCkBAIC0xNDcsNiArMTQ3
LDcgQEAgcHJpdmF0ZToKICAgICBJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudChIVE1MRWxl
bWVudCopOwogICAgIFNwZWVjaElucHV0KiBzcGVlY2hJbnB1dCgpOwogICAgIHZvaWQgc2V0U3Rh
dGUoU3BlZWNoSW5wdXRTdGF0ZSBzdGF0ZSk7CisgICAgQ1N0cmluZyB2YWxpZGF0ZWRJbmhlcml0
ZWRMYW5ndWFnZShIVE1MSW5wdXRFbGVtZW50ICppbnB1dCk7CiAKICAgICBib29sIG1fY2FwdHVy
aW5nOwogICAgIFNwZWVjaElucHV0U3RhdGUgbV9zdGF0ZTsKZGlmZiAtLWdpdCBhL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGQ4ODRh
YjYwYWNkN2Y3YjdmYjcwYTI4MTJhZjA5MGJkNTIzMmJmY2UuLjBhYWM2MjUwMzNhYzBiNjA0MzEx
YmQ0NTNlZDAyZWIzNzRjMzY0OTcgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEw
LTEwLTA2ICBMZWFuZHJvIEdyYWNpw6EgR2lsICA8bGVhbmRyb2dyYWNpYUBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGF0Y2gg
dGhlIGN1cnJlbnQgc3BlZWNoIEhUTUwgdGFnIGltcGxlbWVudGF0aW9uIHRvIHVzZSBhbmQgdmFs
aWRhdGUKKyAgICAgICAgdGhlIG5lYXJlc3QgbGFuZ3VhZ2UgdGFnLiBUaGUgbGFuZ3VhZ2UgaXMg
bm93IHBhc3NlZCB0byB0aGUKKyAgICAgICAgc3RhcnRSZWNvZ25pdGlvbiBtZXRob2RzIHNvIHRo
YXQgbGFuZ3VhZ2Utc3BlY2lmaWMgcmVjb2duaXRpb24gY291bGQKKyAgICAgICAgYmUgdXNlZC4g
QWxzbyBhZGRlZCBhIHNlY29uZCBwYXJhbWV0ZXIgdG8gc2V0TW9ja1NwZWVjaElucHV0UmVzdWx0
IGZvcgorICAgICAgICB0aGUgbGFuZ3VhZ2UgdXNlZCBpbiBzcGVlY2ggcmVjb2duaXRpb24uCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzA4OQorCisg
ICAgICAgICogcHVibGljL1dlYlNwZWVjaElucHV0Q29udHJvbGxlci5oOgorICAgICAgICAoV2Vi
S2l0OjpXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXI6OnN0YXJ0UmVjb2duaXRpb24pOgorICAgICAg
ICAqIHB1YmxpYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrLmg6CisgICAgICAgICogc3Jj
L1NwZWVjaElucHV0Q2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaElucHV0
Q2xpZW50SW1wbDo6c3RhcnRSZWNvZ25pdGlvbik6CisgICAgICAgICogc3JjL1NwZWVjaElucHV0
Q2xpZW50SW1wbC5oOgorICAgICAgICAqIHNyYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2Nr
SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJ
bXBsOjpzZXRNb2NrUmVjb2duaXRpb25SZXN1bHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVl
Y2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6c3RhcnRSZWNvZ25pdGlvbik6CisgICAgICAgICog
c3JjL1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsLmg6CisgICAgICAgICogc3JjL1dl
YlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OldlYlZpZXdJbXBs
KToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuaDoKKwogMjAxMC0wOS0yOSAgQWxwaGEgTGFt
ICA8aGNsYW1AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEphbWVzIFJvYmlu
c29uLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hJbnB1dENv
bnRyb2xsZXIuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoSW5wdXRDb250cm9s
bGVyLmgKaW5kZXggNTQwODc0MWEzYzk0ZDNiZjFjNTQzZDk2ZTlmYzE2YTYzOTBkYjAyZi4uOWZi
Y2NhMjNkOTNkOGU4OGEyZjIyMzlkZjljYWM2NTRkMGIzOTgyYiAxMDA2NDQKLS0tIGEvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIuaAorKysgYi9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYlNwZWVjaElucHV0Q29udHJvbGxlci5oCkBAIC0zNSw2ICszNSw3
IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBXZWJDU3RyaW5nOwogc3RydWN0IFdl
YlJlY3Q7CiAKIC8vIFByb3ZpZGVzIGFuIGVtYmVkZGVyIEFQSSBjYWxsZWQgYnkgV2ViS2l0LgpA
QCAtNDMsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgLy8gU3RhcnRzIHNwZWVjaCByZWNvZ25pdGlv
bi4gU3BlZWNoIHdpbGwgZ2V0IHJlY29yZGVkIHVudGlsIHRoZSBlbmRwb2ludGVyIGRldGVjdHMg
c2lsZW5jZSwKICAgICAvLyBydW5zIHRvIHRoZSBsaW1pdCBvciBzdG9wUmVjb3JkaW5nIGlzIGNh
bGxlZC4gUHJvZ3Jlc3MgaW5kaWNhdGlvbnMgYW5kIHRoZSByZWNvZ25pemVkCiAgICAgLy8gdGV4
dCBhcmUgcmV0dXJuZWQgdmlhIHRoZSBsaXN0ZW5lciBpbnRlcmZhY2UuCi0gICAgdmlydHVhbCBi
b29sIHN0YXJ0UmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCwgY29uc3QgV2ViUmVjdCYpCisgICAg
dmlydHVhbCBib29sIHN0YXJ0UmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCwgY29uc3QgV2ViQ1N0
cmluZyYsIGNvbnN0IFdlYlJlY3QmKQogICAgIHsKICAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2suaCBiL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9jay5oCmluZGV4IDlhMjYyMzVm
ZjZkNWRjY2JiZTI0NzI2MmFlNDRhM2FjNzM5N2MzZjQuLmI2OWI1ODk0ZTFkZTBiZTNiZTlmMzZh
YTkwYjUxODdlNDM2ZTA3ZmQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
U3BlZWNoSW5wdXRDb250cm9sbGVyTW9jay5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9jay5oCkBAIC00NCw2ICs0NCw5IEBAIHB1YmxpYzoK
ICAgICAgICAgV2ViU3BlZWNoSW5wdXRMaXN0ZW5lciogbGlzdGVuZXIpOwogICAgIHZpcnR1YWwg
fldlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2soKSB7IH0KIAorICAgIHZpcnR1YWwgdm9pZCBz
ZXRNb2NrUmVjb2duaXRpb25SZXN1bHQoY29uc3QgV2ViU3RyaW5nJiByZXN1bHQsIGNvbnN0IFdl
YlN0cmluZyYgbGFuZ3VhZ2VUYWcpID0gMDsKKworICAgIC8vIFRPRE8obGVhbmRyb2dyYWNpYSk6
IGRlbGV0ZSB0aGlzIHRlbXBvcmFyeSBmaXguIFJlcXVpcmVkIHRvIGxhdW5jaCBhIHR3by1zaWRl
ZCBwYXRjaC4KICAgICB2aXJ0dWFsIHZvaWQgc2V0TW9ja1JlY29nbml0aW9uUmVzdWx0KGNvbnN0
IFdlYlN0cmluZyYgcmVzdWx0KSA9IDA7CiB9OwogCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21p
dW0vc3JjL1NwZWVjaElucHV0Q2xpZW50SW1wbC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1Nw
ZWVjaElucHV0Q2xpZW50SW1wbC5jcHAKaW5kZXggOTYzZDQ0MDVhNjJkMzJlMWE4Y2VjZDU0YzA4
YzViYmViM2E2MmRjYS4uODBhMDljMDhmYjIwMDUxYmI0MmZjZjRiOTgyYTAxYzg4N2QwYmFkZCAx
MDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9TcGVlY2hJbnB1dENsaWVudEltcGwuY3Bw
CisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvU3BlZWNoSW5wdXRDbGllbnRJbXBsLmNwcApAQCAt
MzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIlNwZWVjaElucHV0Q2xpZW50SW1wbC5oIgogCiAjaW5j
bHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJXZWJDU3RyaW5nLmgiCiAjaW5jbHVk
ZSAiV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCiAj
aW5jbHVkZSAiV2ViVmlld0NsaWVudC5oIgpAQCAtNTYsMTAgKzU3LDEwIEBAIHZvaWQgU3BlZWNo
SW5wdXRDbGllbnRJbXBsOjpzZXRMaXN0ZW5lcihXZWJDb3JlOjpTcGVlY2hJbnB1dExpc3RlbmVy
KiBsaXN0ZW5lcikKICAgICBtX2xpc3RlbmVyID0gbGlzdGVuZXI7CiB9CiAKLWJvb2wgU3BlZWNo
SW5wdXRDbGllbnRJbXBsOjpzdGFydFJlY29nbml0aW9uKGludCByZXF1ZXN0SWQsIGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmIGVsZW1lbnRSZWN0KQorYm9vbCBTcGVlY2hJbnB1dENsaWVudEltcGw6
OnN0YXJ0UmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCwgY29uc3QgV1RGOjpDU3RyaW5nJiBsYW5n
dWFnZVRhZywgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZWxlbWVudFJlY3QpCiB7CiAgICAgQVNT
RVJUKG1fbGlzdGVuZXIpOwotICAgIHJldHVybiBtX2NvbnRyb2xsZXItPnN0YXJ0UmVjb2duaXRp
b24ocmVxdWVzdElkLCBlbGVtZW50UmVjdCk7CisgICAgcmV0dXJuIG1fY29udHJvbGxlci0+c3Rh
cnRSZWNvZ25pdGlvbihyZXF1ZXN0SWQsIGxhbmd1YWdlVGFnLCBlbGVtZW50UmVjdCk7CiB9CiAK
IHZvaWQgU3BlZWNoSW5wdXRDbGllbnRJbXBsOjpzdG9wUmVjb3JkaW5nKGludCByZXF1ZXN0SWQp
CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1NwZWVjaElucHV0Q2xpZW50SW1wbC5o
IGIvV2ViS2l0L2Nocm9taXVtL3NyYy9TcGVlY2hJbnB1dENsaWVudEltcGwuaAppbmRleCA4MTdi
MzJiMTI0MTRiM2EwN2RmYTNhZTM1MTkwODdkZWE1YTBmNzMzLi5jOTFhMzhjZDBkM2Y0MjZlMTk4
YTc4MTliNzQ0Y2I4ZWYxYjY4NjhmIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1Nw
ZWVjaElucHV0Q2xpZW50SW1wbC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvU3BlZWNoSW5w
dXRDbGllbnRJbXBsLmgKQEAgLTM2LDYgKzM2LDEwIEBACiAjaW5jbHVkZSAiV2ViU3BlZWNoSW5w
dXRMaXN0ZW5lci5oIgogI2luY2x1ZGUgInBhZ2UvU3BlZWNoSW5wdXRDbGllbnQuaCIKIAorbmFt
ZXNwYWNlIFdURiB7CitjbGFzcyBDU3RyaW5nOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBTcGVlY2hJbnB1dExpc3RlbmVyOwogfQpAQCAtNTQsNyArNTgsNyBAQCBwdWJsaWM6CiAK
ICAgICAvLyBTcGVlY2hJbnB1dENsaWVudCBtZXRob2RzLgogICAgIHZvaWQgc2V0TGlzdGVuZXIo
V2ViQ29yZTo6U3BlZWNoSW5wdXRMaXN0ZW5lciopOwotICAgIGJvb2wgc3RhcnRSZWNvZ25pdGlv
bihpbnQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKKyAgICBib29sIHN0YXJ0UmVjb2duaXRp
b24oaW50LCBjb25zdCBXVEY6OkNTdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CiAg
ICAgdm9pZCBzdG9wUmVjb3JkaW5nKGludCk7CiAgICAgdm9pZCBjYW5jZWxSZWNvZ25pdGlvbihp
bnQpOwogCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNwZWVjaElucHV0Q29u
dHJvbGxlck1vY2tJbXBsLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3BlZWNoSW5wdXRD
b250cm9sbGVyTW9ja0ltcGwuY3BwCmluZGV4IDYwYzRmZWQ4NTJiMjg0ZTAyNzFhZDAwZWQ5NzEw
MDJhMmY1N2E0YjYuLmQwYjIyYWIyMzMyOGNjYWQ1ZDVmMjI3ZTU0YTMyNGU5YTU2Yjk0ZTMgMTAw
NjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9j
a0ltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3BlZWNoSW5wdXRDb250cm9s
bGVyTW9ja0ltcGwuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAKICNpbmNsdWRlICJQbGF0Zm9ybVN0
cmluZy5oIgogI2luY2x1ZGUgIlNwZWVjaElucHV0Q2xpZW50TW9jay5oIgorI2luY2x1ZGUgIldl
YkNTdHJpbmcuaCIKICNpbmNsdWRlICJXZWJSZWN0LmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpA
QCAtNTcsNyArNTgsMTIgQEAgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6On5XZWJT
cGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbCgpCiAKIHZvaWQgV2ViU3BlZWNoSW5wdXRDb250
cm9sbGVyTW9ja0ltcGw6OnNldE1vY2tSZWNvZ25pdGlvblJlc3VsdChjb25zdCBXZWJTdHJpbmcm
IHJlc3VsdCkKIHsKLSAgICBtX3dlYmNvcmVNb2NrLT5zZXRSZWNvZ25pdGlvblJlc3VsdChyZXN1
bHQpOworICAgIG1fd2ViY29yZU1vY2stPnNldFJlY29nbml0aW9uUmVzdWx0KHJlc3VsdCwgV2Vi
U3RyaW5nOjpmcm9tVVRGOCgiZW4iKSk7Cit9CisKK3ZvaWQgV2ViU3BlZWNoSW5wdXRDb250cm9s
bGVyTW9ja0ltcGw6OnNldE1vY2tSZWNvZ25pdGlvblJlc3VsdChjb25zdCBXZWJTdHJpbmcmIHJl
c3VsdCwgY29uc3QgV2ViU3RyaW5nICZsYW5ndWFnZVRhZykKK3sKKyAgICBtX3dlYmNvcmVNb2Nr
LT5zZXRSZWNvZ25pdGlvblJlc3VsdChyZXN1bHQsIGxhbmd1YWdlVGFnKTsKIH0KIAogdm9pZCBX
ZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6ZGlkQ29tcGxldGVSZWNvcmRpbmcoaW50
IHJlcXVlc3RJZCkKQEAgLTc1LDkgKzgxLDkgQEAgdm9pZCBXZWJTcGVlY2hJbnB1dENvbnRyb2xs
ZXJNb2NrSW1wbDo6c2V0UmVjb2duaXRpb25SZXN1bHQoaW50IHJlcXVlc3RJZCwgY29uc3QKICAg
ICBtX2xpc3RlbmVyLT5zZXRSZWNvZ25pdGlvblJlc3VsdChyZXF1ZXN0SWQsIHJlc3VsdCk7CiB9
CiAKLWJvb2wgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OnN0YXJ0UmVjb2duaXRp
b24oaW50IHJlcXVlc3RJZCwgY29uc3QgV2ViUmVjdCYgZWxlbWVudFJlY3QpCitib29sIFdlYlNw
ZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsOjpzdGFydFJlY29nbml0aW9uKGludCByZXF1ZXN0
SWQsIGNvbnN0IFdlYkNTdHJpbmcmIGxhbmd1YWdlVGFnLCBjb25zdCBXZWJSZWN0JiBlbGVtZW50
UmVjdCkKIHsKLSAgICByZXR1cm4gbV93ZWJjb3JlTW9jay0+c3RhcnRSZWNvZ25pdGlvbihyZXF1
ZXN0SWQsIGVsZW1lbnRSZWN0KTsKKyAgICByZXR1cm4gbV93ZWJjb3JlTW9jay0+c3RhcnRSZWNv
Z25pdGlvbihyZXF1ZXN0SWQsIGxhbmd1YWdlVGFnLCBlbGVtZW50UmVjdCk7CiB9CiAKIHZvaWQg
V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OmNhbmNlbFJlY29nbml0aW9uKGludCBy
ZXF1ZXN0SWQpCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNwZWVjaElucHV0
Q29udHJvbGxlck1vY2tJbXBsLmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNwZWVjaElucHV0
Q29udHJvbGxlck1vY2tJbXBsLmgKaW5kZXggZWRiZmNhM2VlNjBlOTM5NDI4OTNlMjcyMTg5M2U0
M2EwZWI4N2M1Zi4uMjcyYTM2ZWJhNTI1YzllMjY0ODJiMDY5ZTQzMGRmZDk1MDRjNDE2NSAxMDA2
NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2Nr
SW1wbC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVy
TW9ja0ltcGwuaApAQCAtMzYsNiArMzYsMTEgQEAKICNpbmNsdWRlICJXZWJTcGVlY2hJbnB1dExp
c3RlbmVyLmgiCiAjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV1RGIHsKK2Ns
YXNzIFN0cmluZzsKK30KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgU3BlZWNoSW5wdXRD
bGllbnRNb2NrOwpAQCAtNTcsMTEgKzYyLDE0IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFJlY29n
bml0aW9uUmVzdWx0KGludCByZXF1ZXN0SWQsIGNvbnN0IFdURjo6U3RyaW5nJiByZXN1bHQpOwog
CiAgICAgLy8gV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyIG1ldGhvZHMuCi0gICAgYm9vbCBzdGFy
dFJlY29nbml0aW9uKGludCByZXF1ZXN0SWQsIGNvbnN0IFdlYlJlY3QmIGVsZW1lbnRSZWN0KTsK
KyAgICBib29sIHN0YXJ0UmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCwgY29uc3QgV2ViQ1N0cmlu
ZyYgbGFuZ3VhZ2VUYWcsIGNvbnN0IFdlYlJlY3QmIGVsZW1lbnRSZWN0KTsKICAgICB2b2lkIGNh
bmNlbFJlY29nbml0aW9uKGludCByZXF1ZXN0SWQpOwogICAgIHZvaWQgc3RvcFJlY29yZGluZyhp
bnQgcmVxdWVzdElkKTsKIAogICAgIC8vIFdlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2sgbWV0
aG9kcy4KKyAgICB2b2lkIHNldE1vY2tSZWNvZ25pdGlvblJlc3VsdChjb25zdCBXZWJTdHJpbmcm
IHJlc3VsdCwgY29uc3QgV2ViU3RyaW5nJiBsYW5ndWFnZVRhZyk7CisKKyAgICAvLyBUT0RPKGxl
YW5kcm9ncmFjaWEpOiBkZWxldGUgdGhpcyB0ZW1wb3JhcnkgZml4LiBSZXF1aXJlZCB0byBsYXVu
Y2ggYSB0d28tc2lkZWQgcGF0Y2guCiAgICAgdm9pZCBzZXRNb2NrUmVjb2duaXRpb25SZXN1bHQo
Y29uc3QgV2ViU3RyaW5nJiByZXN1bHQpOwogCiBwcml2YXRlOgpAQCAtNzIsNCArODAsMyBAQCBw
cml2YXRlOgogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBXZWJTcGVlY2hJbnB1
dENvbnRyb2xsZXJNb2NrSW1wbF9oCi0KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViVmlld0ltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5k
ZXggNTk5YzY1ZTBjM2FkNzhiZGQzMzNiM2Q5ZDA1ZjBhMzNiY2E1YzZiOS4uMTMwMjg4YjI4MzEz
MThjN2EzMjQyN2FkOWNkZmI0MWU3OTE0NDg2MyAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1w
bC5jcHAKQEAgLTg4LDYgKzg4LDcgQEAKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2lu
Y2x1ZGUgIlNlbGVjdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2lu
Y2x1ZGUgIlNwZWVjaElucHV0Q2xpZW50SW1wbC5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5j
bHVkZSAiVHlwaW5nQ29tbWFuZC5oIgogI2luY2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9yLmgi
CkBAIC0yNzUsNyArMjc2LDcgQEAgV2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKFdlYlZpZXdDbGll
bnQqIGNsaWVudCwgV2ViRGV2VG9vbHNBZ2VudENsaWVudCogZGV2VG9vbHMKICAgICAsIG1fY29t
cG9zaXRvckNyZWF0aW9uRmFpbGVkKGZhbHNlKQogI2VuZGlmCiAjaWYgRU5BQkxFKElOUFVUX1NQ
RUVDSCkKLSAgICAsIG1fc3BlZWNoSW5wdXRDbGllbnQoY2xpZW50KQorICAgICwgbV9zcGVlY2hJ
bnB1dENsaWVudChuZXcgU3BlZWNoSW5wdXRDbGllbnRJbXBsKGNsaWVudCkpCiAjZW5kaWYKICAg
ICAsIG1fZGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eShuZXcgRGV2aWNlT3JpZW50YXRpb25D
bGllbnRQcm94eShjbGllbnQgPyBjbGllbnQtPmRldmljZU9yaWVudGF0aW9uQ2xpZW50KCkgOiAw
KSkKIHsKQEAgLTI5OCw3ICsyOTksNyBAQCBXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwoV2ViVmll
d0NsaWVudCogY2xpZW50LCBXZWJEZXZUb29sc0FnZW50Q2xpZW50KiBkZXZUb29scwogICAgIHBh
Z2VDbGllbnRzLmRyYWdDbGllbnQgPSAmbV9kcmFnQ2xpZW50SW1wbDsKICAgICBwYWdlQ2xpZW50
cy5pbnNwZWN0b3JDbGllbnQgPSAmbV9pbnNwZWN0b3JDbGllbnRJbXBsOwogI2lmIEVOQUJMRShJ
TlBVVF9TUEVFQ0gpCi0gICAgcGFnZUNsaWVudHMuc3BlZWNoSW5wdXRDbGllbnQgPSAmbV9zcGVl
Y2hJbnB1dENsaWVudDsKKyAgICBwYWdlQ2xpZW50cy5zcGVlY2hJbnB1dENsaWVudCA9IG1fc3Bl
ZWNoSW5wdXRDbGllbnQuZ2V0KCk7CiAjZW5kaWYKICAgICBwYWdlQ2xpZW50cy5kZXZpY2VPcmll
bnRhdGlvbkNsaWVudCA9IG1fZGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eS5nZXQoKTsKIApk
aWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oIGIvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCmluZGV4IGU1MWRmNGQ5OGUzZDhlMmI2MTEyNTUwMzhm
MDhjNjFmZTQyYzc4NzguLjZjNjM0NmQ0MDc3OWY5NzM0ZjY1ODNkNjdkZjlhN2Q5YTRhMzJlMWUg
MTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAorKysgYi9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKQEAgLTQ5LDcgKzQ5LDYgQEAKICNpbmNsdWRl
ICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgiCiAjaW5jbHVk
ZSAiTm90aWZpY2F0aW9uUHJlc2VudGVySW1wbC5oIgotI2luY2x1ZGUgIlNwZWVjaElucHV0Q2xp
ZW50SW1wbC5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgogCkBAIC03NCw2ICs3Myw3IEBAIGNsYXNzIEF1dG9GaWxsUG9wdXBNZW51Q2xpZW50
OwogY2xhc3MgQ29udGV4dE1lbnVDbGllbnRJbXBsOwogY2xhc3MgRGV2aWNlT3JpZW50YXRpb25D
bGllbnRQcm94eTsKIGNsYXNzIERyYWdTY3JvbGxUaW1lcjsKK2NsYXNzIFNwZWVjaElucHV0Q2xp
ZW50SW1wbDsKIGNsYXNzIFdlYkFjY2Vzc2liaWxpdHlPYmplY3Q7CiBjbGFzcyBXZWJEZXZUb29s
c0FnZW50Q2xpZW50OwogY2xhc3MgV2ViRGV2VG9vbHNBZ2VudFByaXZhdGU7CkBAIC01MzcsNyAr
NTM3LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3QgV2ViSW5wdXRFdmVudCogbV9jdXJy
ZW50SW5wdXRFdmVudDsKIAogI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCi0gICAgU3BlZWNoSW5w
dXRDbGllbnRJbXBsIG1fc3BlZWNoSW5wdXRDbGllbnQ7CisgICAgT3duUHRyPFNwZWVjaElucHV0
Q2xpZW50SW1wbD4gbV9zcGVlY2hJbnB1dENsaWVudDsKICNlbmRpZgogICAgIC8vIElmIHdlIGF0
dGVtcHQgdG8gZmV0Y2ggdGhlIG9uLXNjcmVlbiBHcmFwaGljc0NvbnRleHQzRCBiZWZvcmUKICAg
ICAvLyB0aGUgY29tcG9zaXRvciBoYXMgYmVlbiB0dXJuZWQgb24sIHdlIG5lZWQgdG8gaW5zdGFu
dGlhdGUgaXQKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xz
L0NoYW5nZUxvZwppbmRleCAyYTMxNjIxNTllYzRlMjRhZDA5ZGU4OWRlM2UwOWQyMmU5YzM1NmFj
Li4wNGY5NjQ1MDQ2Y2ZlZTg1MjQyNzUxYmYxNjRkMDU5MTY3Y2YwMDZkIDEwMDY0NAotLS0gYS9X
ZWJLaXRUb29scy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTYgQEAKKzIwMTAtMTAtMDYgIExlYW5kcm8gR3JhY2nDoSBHaWwgIDxsZWFuZHJvZ3JhY2lh
QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGRlZCBhIHNlY29uZCBwYXJhbWV0ZXIgdG8gc2V0TW9ja1NwZWVjaElucHV0UmVz
dWx0IGZvcgorICAgICAgICB0aGUgbGFuZ3VhZ2UgdXNlZCBpbiBzcGVlY2ggcmVjb2duaXRpb24u
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzA4OQor
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoc2V0TW9ja1NwZWVjaElucHV0UmVzdWx0Q2FsbGJhY2spOgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKExh
eW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQpOgorCiAyMDEwLTEw
LTA1ICBEYW5pZWwgQmF0ZXMgIDxkYmF0ZXNAcmltLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBEYXZpZCBLaWx6ZXIuCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9M
YXlvdXRUZXN0Q29udHJvbGxlci5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlv
dXRUZXN0Q29udHJvbGxlci5jcHAKaW5kZXggZWU0NDMyNWI2ZDU1MDc3ZjM1ZjY0YjdkZDhiMjEx
NWFkY2UxNzM3MC4uN2RlNTczMjM2ZTBjMmY2MDlmOGZkOGJmOTJmODJmYjhkODllOWI2ZiAxMDA2
NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIu
Y3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVy
LmNwcApAQCAtMTA3MCwxNCArMTA3MCwxNyBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBzZXRNb2NrR2Vv
bG9jYXRpb25FcnJvckNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdAogCiBz
dGF0aWMgSlNWYWx1ZVJlZiBzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHRDYWxsYmFjayhKU0NvbnRl
eHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmpl
Y3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBK
U1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7Ci0gICAgaWYgKGFyZ3VtZW50Q291bnQgPCAxKQorICAg
IGlmIChhcmd1bWVudENvdW50IDwgMikKICAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZp
bmVkKGNvbnRleHQpOwogCiAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHJlc3VsdChBZG9w
dCwgSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBhcmd1bWVudHNbMF0sIGV4Y2VwdGlvbikp
OwogICAgIEFTU0VSVCghKmV4Y2VwdGlvbik7CiAKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1Jl
Zj4gbGFuZ3VhZ2UoQWRvcHQsIEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgYXJndW1lbnRz
WzFdLCBleGNlcHRpb24pKTsKKyAgICBBU1NFUlQoISpleGNlcHRpb24pOworCiAgICAgTGF5b3V0
VGVzdENvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJv
bGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7Ci0gICAgY29udHJvbGxlci0+
c2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KHJlc3VsdC5nZXQoKSk7CisgICAgY29udHJvbGxlci0+
c2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KHJlc3VsdC5nZXQoKSwgbGFuZ3VhZ2UuZ2V0KCkpOwog
CiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogfQpkaWZmIC0tZ2l0
IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaCBiL1dl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKaW5kZXggNzU1
YTJiMmI5YzY4ODViNzk2YTAzZTUyZDUwMjBkODhiNDNkZDk4Yi4uYmNjYzBhMDYwZWVmODc5ODYy
NDAyNTkxOGYzOTY2NjIyMjU4OGRlMSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCkBAIC05NCw3ICs5NCw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldE1vY2tEZXZpY2VPcmllbnRhdGlvbihib29sIGNhblByb3ZpZGVBbHBoYSwgZG91
YmxlIGFscGhhLCBib29sIGNhblByb3ZpZGVCZXRhLCBkb3VibGUgYmV0YSwgYm9vbCBjYW5Qcm92
aWRlR2FtbWEsIGRvdWJsZSBnYW1tYSk7CiAgICAgdm9pZCBzZXRNb2NrR2VvbG9jYXRpb25FcnJv
cihpbnQgY29kZSwgSlNTdHJpbmdSZWYgbWVzc2FnZSk7CiAgICAgdm9pZCBzZXRNb2NrR2VvbG9j
YXRpb25Qb3NpdGlvbihkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBh
Y2N1cmFjeSk7Ci0gICAgdm9pZCBzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoSlNTdHJpbmdSZWYg
cmVzdWx0KTsKKyAgICB2b2lkIHNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdChKU1N0cmluZ1JlZiBy
ZXN1bHQsIEpTU3RyaW5nUmVmIGxhbmd1YWdlVGFnKTsKICAgICB2b2lkIHNldFBlcnNpc3RlbnRV
c2VyU3R5bGVTaGVldExvY2F0aW9uKEpTU3RyaW5nUmVmIHBhdGgpOwogICAgIHZvaWQgc2V0UGx1
Z2luc0VuYWJsZWQoYm9vbCBmbGFnKTsKICAgICB2b2lkIHNldFBvcHVwQmxvY2tpbmdFbmFibGVk
KGJvb2wgZmxhZyk7CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKaW5kZXggZDc3NzRlOTk2N2JlODY5
YTRkMzUzNjk2ZmMwNGNjM2ZkZjk4MWRkYS4uM2NjYjc0MjY0MGY0ZDJmYTE0MmE3MTg5YjM4ZWYz
M2ViZDQwZmM5NCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcApAQCAtMTUyNSwxMCArMTUyNSwx
MCBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjphYm9ydE1vZGFsKGNvbnN0IENwcEFyZ3Vt
ZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYQogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
c2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRz
LCBDcHBWYXJpYW50KiByZXN1bHQpCiB7CiAgICAgcmVzdWx0LT5zZXROdWxsKCk7Ci0gICAgaWYg
KGFyZ3VtZW50cy5zaXplKCkgPCAxIHx8ICFhcmd1bWVudHNbMF0uaXNTdHJpbmcoKSkKKyAgICBp
ZiAoYXJndW1lbnRzLnNpemUoKSA8IDIgfHwgIWFyZ3VtZW50c1swXS5pc1N0cmluZygpIHx8ICFh
cmd1bWVudHNbMV0uaXNTdHJpbmcoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9zcGVlY2hJ
bnB1dENvbnRyb2xsZXJNb2NrLT5zZXRNb2NrUmVjb2duaXRpb25SZXN1bHQoY3BwVmFyaWFudFRv
V2ViU3RyaW5nKGFyZ3VtZW50c1swXSkpOworICAgIG1fc3BlZWNoSW5wdXRDb250cm9sbGVyTW9j
ay0+c2V0TW9ja1JlY29nbml0aW9uUmVzdWx0KGNwcFZhcmlhbnRUb1dlYlN0cmluZyhhcmd1bWVu
dHNbMF0pLCBjcHBWYXJpYW50VG9XZWJTdHJpbmcoYXJndW1lbnRzWzFdKSk7CiB9CiAKIFdlYktp
dDo6V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyKiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3BlZWNo
SW5wdXRDb250cm9sbGVyKFdlYktpdDo6V2ViU3BlZWNoSW5wdXRMaXN0ZW5lciogbGlzdGVuZXIp
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69940</attachid>
            <date>2010-10-06 07:58:39 -0700</date>
            <delta_ts>2010-10-07 12:39:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47089-20101006155837.patch</filename>
            <type>text/plain</type>
            <size>34584</size>
            <attacher name="Leandro Graciá Gil">leandrogracia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2YzhhZmM0ZTg4YjYzYTFmZDY2Y2Y0NDU4NDgyOTkwYmM3NzU1OTRhLi4yM2YyYjk2
YTFhOTJmNTFhNTQ5MmZkNDVkZWUwNTYzYTFjY2RjOWIxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTAtMTAtMDYgIExlYW5kcm8gR3JhY2nDoSBHaWwgIDxsZWFuZHJvZ3JhY2lhQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGRlZCBhIGxheW91dCB0ZXN0IGZvciB0aGUgbGFuZ3VhZ2UgdGFnIGluIHNwZWVjaCBidXR0b25z
LiBVcGRhdGVkCisgICAgICAgIHRoZSBzcGVlY2ggYnV0dG9uIHRlc3QgdG8gaW5jbHVkZSB0aGUg
bmV3IGxhbmd1YWdlIHBhcmFtZXRlciBpbiB0aGUKKyAgICAgICAgbW9jayByZXN1bHQuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzA4OQorCisgICAg
ICAgICogZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1sYW5ndWFnZS10YWctZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L3NwZWVjaC9pbnB1dC10ZXh0LWxhbmd1YWdlLXRhZy5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3NwZWVjaC9pbnB1dC10ZXh0LXNwZWVjaGJ1dHRvbi5o
dG1sOiBBZGRlZCBsYW5ndWFnZSBwYXJhbWV0ZXIuCisKIDIwMTAtMTAtMDYgIFl1cnkgU2VtaWto
YXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwg
RmVsZG1hbi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL2lucHV0LXRleHQt
bGFuZ3VhZ2UtdGFnLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL2lucHV0
LXRleHQtbGFuZ3VhZ2UtdGFnLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZjcxYTU1OTRhMWRk
N2E2NzI2ZTE2YWMwYmJlMWFkYTM3Y2E3OThlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1sYW5ndWFnZS10YWctZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMTIgQEAKK1Rlc3RzIGZvciBsYW5ndWFnZSB0YWcgaW5oZXJpdGFuY2UgYW5kIHZhbGlk
YXRpb24gaW4gc3BlZWNoIGJ1dHRvbnM+LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisK
KworUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3BlZWNoSW5wdXRfbm9uZSIpLnZhbHVl
IGlzICJlcnJvcjogbm8gcmVzdWx0IGZvciB0aGUgcHJvdmlkZWQgbGFuZ3VhZ2UgdGFnIgorUEFT
UyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3BlZWNoSW5wdXRfZWxlbWVudCIpLnZhbHVlIGlz
ICJQaWN0dXJlcyBvZiB0aGUgbW9vbiIKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNw
ZWVjaElucHV0X2luaGVyaXRlZCIpLnZhbHVlIGlzICLmnIjjga7lhpnnnJ8iCitQQVNTIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJzcGVlY2hJbnB1dF9pbnZhbGlkIikudmFsdWUgaXMgImVycm9y
OiBpbnZhbGlkIHN0cmluZyAoaW5zdGVhZCBvZiBsYW5ndWFnZSBub3QgZm91bmQpIgorUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9pbnB1dC10ZXh0LWxhbmd1YWdlLXRhZy5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1sYW5ndWFnZS10YWcuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi41ZDY3MThmZTI2MmIyMDBkNGI2OWMxMzVkYjhlYjdjNjlmZDc2Y2RhCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1sYW5ndWFnZS10YWcu
aHRtbApAQCAtMCwwICsxLDk0IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RU
RCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxoZWFkPgorPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CitkZXNjcmlw
dGlvbignVGVzdHMgZm9yIGxhbmd1YWdlIHRhZyBpbmhlcml0YW5jZSBhbmQgdmFsaWRhdGlvbiBp
biBzcGVlY2ggYnV0dG9ucz4uJyk7CisKKy8vIE5vdGU6IHRlc3QgY2FzZXMgYXJlIHNlcXVlbnRp
YWwgdG8gZW5zdXJlIHRoYXQgbm8gbmV3IHJlY29nbml0aW9uIHN0YXJ0cyB3aGVuIGFub3RoZXIg
cmVjb2duaXRpb24gcmVjb3JkaW5nIGlzIGFjdGl2ZS4KK2Z1bmN0aW9uIG9uQ2hhbmdlX25vbmUo
KSB7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
c3BlZWNoSW5wdXRfbm9uZSIpLnZhbHVlJywgJ2Vycm9yOiBubyByZXN1bHQgZm9yIHRoZSBwcm92
aWRlZCBsYW5ndWFnZSB0YWcnKTsKKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzcGVlY2hC
dXR0b25DbGljaygnc3BlZWNoSW5wdXRfZWxlbWVudCcpOyB9LCA1MCk7Cit9CisKK2Z1bmN0aW9u
IG9uQ2hhbmdlX2VsZW1lbnQoKSB7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgic3BlZWNoSW5wdXRfZWxlbWVudCIpLnZhbHVlJywgJ1BpY3R1cmVz
IG9mIHRoZSBtb29uJyk7CisgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc3BlZWNoQnV0dG9u
Q2xpY2soJ3NwZWVjaElucHV0X2luaGVyaXRlZCcpOyB9LCA1MCk7Cit9CisKK2Z1bmN0aW9uIG9u
Q2hhbmdlX2luaGVyaXRlZCgpIHsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2RvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJzcGVlY2hJbnB1dF9pbmhlcml0ZWQiKS52YWx1ZScsICfmnIjjga7l
hpnnnJ8nKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRNb2NrU3BlZWNoSW5wdXRSZXN1
bHQoJ2Vycm9yOiBpbnZhbGlkIHN0cmluZyAoaW5zdGVhZCBvZiBsYW5ndWFnZSBub3QgZm91bmQp
JywgJycpOworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNwZWVjaEJ1dHRvbkNsaWNrKCdz
cGVlY2hJbnB1dF9pbnZhbGlkJyk7IH0sIDUwKTsKK30KKworZnVuY3Rpb24gb25DaGFuZ2VfaW52
YWxpZCgpIHsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2RvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJzcGVlY2hJbnB1dF9pbnZhbGlkIikudmFsdWUnLCAnZXJyb3I6IGludmFsaWQgc3RyaW5n
IChpbnN0ZWFkIG9mIGxhbmd1YWdlIG5vdCBmb3VuZCknKTsKKyAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5zZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoJ2Vycm9yOiBubyByZXN1bHQgZm9yIHRoZSBw
cm92aWRlZCBsYW5ndWFnZSB0YWcnLCAnJyk7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK2Z1
bmN0aW9uIHNwZWVjaEJ1dHRvbkNsaWNrKGVsZW1lbnRfaWQpIHsKKyAgICB2YXIgZWxlbWVudCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRfaWQpOworICAgIHZhciB4ID0gZWxlbWVu
dC5vZmZzZXRMZWZ0ICsgZWxlbWVudC5vZmZzZXRXaWR0aCAtIDQ7CisgICAgdmFyIHkgPSBlbGVt
ZW50Lm9mZnNldFRvcCArIGVsZW1lbnQub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICBldmVudFNlbmRl
ci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICBl
dmVudFNlbmRlci5tb3VzZVVwKCk7Cit9CisKK2Z1bmN0aW9uIHJ1bigpIHsKKyAgICAvLyBObyBj
b250ZW50IGxhbmd1YWdlIChzaG91bGQgZGVmYXVsdCB0byBhbiBlbXB0eSBzdHJpbmcpCisgICAg
dmFyIGlucHV0X25vbmUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpOworICAgIGlu
cHV0X25vbmUuaWQgPSAnc3BlZWNoSW5wdXRfbm9uZSc7CisgICAgaW5wdXRfbm9uZS5zcGVlY2gg
PSAnc3BlZWNoJzsKKyAgICBpbnB1dF9ub25lLm9uY2hhbmdlID0gb25DaGFuZ2Vfbm9uZTsKKyAg
ICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGlucHV0X25vbmUpOworCisgICAgLy8gTGFuZ3Vh
Z2UgdGFnIGluIHRoZSBlbGVtZW50IChlbi1HQikKKyAgICB2YXIgaW5wdXRfZWxlbWVudCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7CisgICAgaW5wdXRfZWxlbWVudC5pZCA9ICdz
cGVlY2hJbnB1dF9lbGVtZW50JzsKKyAgICBpbnB1dF9lbGVtZW50LnNwZWVjaCA9ICdzcGVlY2gn
OworICAgIGlucHV0X2VsZW1lbnQubGFuZyA9ICdlbi1HQic7CisgICAgaW5wdXRfZWxlbWVudC5v
bmNoYW5nZSA9IG9uQ2hhbmdlX2VsZW1lbnQ7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGls
ZChpbnB1dF9lbGVtZW50KTsKKworICAgIC8vIExhbmd1YWdlIHRhZyBpbmhlcml0ZWQgZnJvbSBj
b250YWluZXIgb2JqZWN0IChqYSkKKyAgICB2YXIgaW5wdXRfaW5oZXJpdGVkID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnaW5wdXQnKTsKKyAgICBpbnB1dF9pbmhlcml0ZWQuaWQgPSAnc3BlZWNo
SW5wdXRfaW5oZXJpdGVkJzsKKyAgICBpbnB1dF9pbmhlcml0ZWQuc3BlZWNoID0gJ3NwZWVjaCc7
CisgICAgaW5wdXRfaW5oZXJpdGVkLm9uY2hhbmdlID0gb25DaGFuZ2VfaW5oZXJpdGVkOworCisg
ICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIGRpdi5hcHBl
bmRDaGlsZChpbnB1dF9pbmhlcml0ZWQpOworICAgIGRpdi5sYW5nID0gJ2phJzsKKyAgICBkb2N1
bWVudC5ib2R5LmFwcGVuZENoaWxkKGRpdik7CisKKyAgICAvLyBJbnZhbGlkIGxhbmd1YWdlIHRh
ZyAoc2hvdWxkIHJldHVybiBhbiBlbXB0eSBzdHJpbmcpCisgICAgdmFyIGlucHV0X2ludmFsaWQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpOworICAgIGlucHV0X2ludmFsaWQuaWQg
PSAnc3BlZWNoSW5wdXRfaW52YWxpZCc7CisgICAgaW5wdXRfaW52YWxpZC5zcGVlY2ggPSAnc3Bl
ZWNoJzsKKyAgICBpbnB1dF9pbnZhbGlkLmxhbmcgPSAnJzsgLy8nMTMzNyTDvjPOu2snOworICAg
IGlucHV0X2ludmFsaWQub25jaGFuZ2UgPSBvbkNoYW5nZV9pbnZhbGlkOworICAgIGRvY3VtZW50
LmJvZHkuYXBwZW5kQ2hpbGQoaW5wdXRfaW52YWxpZCk7CisKKyAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyICYmIHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5zZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoJ1BpY3R1cmVzIG9mIHRoZSBt
b29uJywgJ2VuLUdCJyk7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldE1vY2tTcGVl
Y2hJbnB1dFJlc3VsdCgn5pyI44Gu5YaZ55yfJywgJ2phJyk7CisgICAgICAgIHNwZWVjaEJ1dHRv
bkNsaWNrKCdzcGVlY2hJbnB1dF9ub25lJyk7CisgICAgfQorfQorCit3aW5kb3cub25sb2FkID0g
cnVuOword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOword2luZG93LnN1Y2Nlc3NmdWxseVBh
cnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3Qvc3BlZWNoL2lucHV0LXRleHQtc3BlZWNoYnV0dG9uLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L3NwZWVjaC9pbnB1dC10ZXh0LXNwZWVjaGJ1dHRvbi5odG1sCmluZGV4IDZm
NWJjNGIxMjFmYjRmOWQ5ZGRhNmMzMzFmOGIyNmRjMWNkNDM5OTQuLjQ4YmU5YzBlNGFjYWE5Njdj
MjJlNDRmMTA5ODYxZDNkYTlhOTY3MzkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qvc3Bl
ZWNoL2lucHV0LXRleHQtc3BlZWNoYnV0dG9uLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9z
cGVlY2gvaW5wdXQtdGV4dC1zcGVlY2hidXR0b24uaHRtbApAQCAtMzIsNyArMzIsNyBAQCBmdW5j
dGlvbiBvbldlYmtpdFNwZWVjaENoYW5nZSgpIHsKIAogZnVuY3Rpb24gcnVuKCkgewogICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIgJiYgd2luZG93LmV2ZW50U2VuZGVyKSB7Ci0g
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdCgnUGlj
dHVyZXMgb2YgdGhlIG1vb24nKTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9j
a1NwZWVjaElucHV0UmVzdWx0KCdQaWN0dXJlcyBvZiB0aGUgbW9vbicsICdlbicpOwogCiAgICAg
ICAgIC8vIENsaWNraW5nIHRoZSBzcGVlY2ggYnV0dG9uIHNob3VsZCBmaWxsIGluIG1vY2sgc3Bl
ZWNoLXJlY29nbml6ZWQgdGV4dC4KICAgICAgICAgdmFyIGlucHV0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ3NwZWVjaElucHV0Jyk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDI3YWY2YTFkM2JkYjVlM2VhMzViODc3YTQwNDUyOGE5
ZmExODJiNjguLjUxNzE0MDNlM2ZkYzdmZjI1M2I3MTk3YzQ4MDJkNzY3MGJmZGY1OGMgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzYgQEAKKzIwMTAtMTAtMDYgIExlYW5kcm8gR3JhY2nDoSBHaWwgIDxsZWFuZHJvZ3JhY2lh
QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBQYXRjaCB0aGUgY3VycmVudCBzcGVlY2ggSFRNTCB0YWcgaW1wbGVtZW50YXRpb24g
dG8gdXNlIGFuZCB2YWxpZGF0ZQorICAgICAgICB0aGUgbmVhcmVzdCBsYW5ndWFnZSB0YWcuIFRo
ZSBsYW5ndWFnZSBpcyBub3cgcGFzc2VkIHRvIHRoZQorICAgICAgICBzdGFydFJlY29nbml0aW9u
IG1ldGhvZHMgc28gdGhhdCBsYW5ndWFnZS1zcGVjaWZpYyByZWNvZ25pdGlvbiBjb3VsZAorICAg
ICAgICBiZSB1c2VkLiBBbHNvIGFkZGVkIGEgc2Vjb25kIHBhcmFtZXRlciB0byBzZXRNb2NrU3Bl
ZWNoSW5wdXRSZXN1bHQgZm9yCisgICAgICAgIHRoZSBsYW5ndWFnZSB1c2VkIGluIHNwZWVjaCBy
ZWNvZ25pdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQ3MDg5CisKKyAgICAgICAgVGVzdDogZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1sYW5ndWFn
ZS10YWcuaHRtbAorCisgICAgICAgICogcGFnZS9TcGVlY2hJbnB1dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTcGVlY2hJbnB1dDo6c3RhcnRSZWNvZ25pdGlvbik6CisgICAgICAgICogcGFnZS9T
cGVlY2hJbnB1dC5oOgorICAgICAgICAqIHBhZ2UvU3BlZWNoSW5wdXRDbGllbnQuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xpZW50TW9jay5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTcGVlY2hJbnB1dENsaWVudE1vY2s6OnN0YXJ0UmVjb2duaXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6U3BlZWNoSW5wdXRDbGllbnRNb2NrOjpzZXRSZWNvZ25pdGlvblJlc3VsdCk6
IHJlc3VsdHMgYXJlCisgICAgICAgICAgbm93IHN0b3JlZCBieSBsYW5ndWFnZSB1c2luZyBhIGhh
c2ggbWFwLgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoSW5wdXRDbGllbnRNb2NrOjp0aW1lckZp
cmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xpZW50TW9jay5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dENvbnRyb2xJbm5lckVsZW1lbnQ6OmF0dGFjaElubmVyRWxlbWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpTZWFyY2hGaWVsZENhbmNlbEJ1dHRvbkVsZW1lbnQ6OmRldGFj
aCk6CisgICAgICAgIChXZWJDb3JlOjpTcGluQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFu
ZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudDo6
ZGVmYXVsdEV2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dEZpZWxkU3BlZWNo
QnV0dG9uRWxlbWVudDo6dmFsaWRhdGVkSW5oZXJpdGVkTGFuZ3VhZ2UpOgorICAgICAgICAgIGlu
Y2x1ZGVzIGEgYnJpZWYgY2hhcmFjdGVyIHZhbGlkYXRpb24gZm9yIHRoZSBCQ1AgNDcgbGFuZ3Vh
Z2UgdGFnLgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQ6
OmRldGFjaCk6CisgICAgICAgICogcmVuZGVyaW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5o
OgorCiAyMDEwLTEwLTA2ICBEaXJrIFNjaHVsemUgIDxrcml0QHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCBmaXggb2YgQ2Fpcm8gcG9ydHMuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bh
Z2UvU3BlZWNoSW5wdXQuY3BwIGIvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0LmNwcAppbmRleCAy
MzQ3OTFiYzRiMTNmNDNkZjlkMTczOWQ1ZDIwNWY5YWEyN2UyMDcyLi4wODhkMzc0MDk3MzM3YzM1
NmYxY2JkMjQyNGI2ZmQ5MzkzYjNjMmQwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvU3BlZWNo
SW5wdXQuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dC5jcHAKQEAgLTkzLDEwICs5
MywxMCBAQCB2b2lkIFNwZWVjaElucHV0OjpzZXRSZWNvZ25pdGlvblJlc3VsdChpbnQgbGlzdGVu
ZXJJZCwgY29uc3QgU3RyaW5nJiByZXN1bHQpCiAgICAgICAgIG1fbGlzdGVuZXJzLmdldChsaXN0
ZW5lcklkKS0+c2V0UmVjb2duaXRpb25SZXN1bHQobGlzdGVuZXJJZCwgcmVzdWx0KTsKIH0KIAot
Ym9vbCBTcGVlY2hJbnB1dDo6c3RhcnRSZWNvZ25pdGlvbihpbnQgbGlzdGVuZXJJZCwgY29uc3Qg
SW50UmVjdCYgZWxlbWVudFJlY3QpCitib29sIFNwZWVjaElucHV0OjpzdGFydFJlY29nbml0aW9u
KGludCBsaXN0ZW5lcklkLCBjb25zdCBDU3RyaW5nJiBsYW5ndWFnZVRhZywgY29uc3QgSW50UmVj
dCYgZWxlbWVudFJlY3QpCiB7CiAgICAgQVNTRVJUKG1fbGlzdGVuZXJzLmNvbnRhaW5zKGxpc3Rl
bmVySWQpKTsKLSAgICByZXR1cm4gbV9jbGllbnQtPnN0YXJ0UmVjb2duaXRpb24obGlzdGVuZXJJ
ZCwgZWxlbWVudFJlY3QpOworICAgIHJldHVybiBtX2NsaWVudC0+c3RhcnRSZWNvZ25pdGlvbihs
aXN0ZW5lcklkLCBsYW5ndWFnZVRhZywgZWxlbWVudFJlY3QpOwogfQogCiB2b2lkIFNwZWVjaElu
cHV0OjpzdG9wUmVjb3JkaW5nKGludCBsaXN0ZW5lcklkKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
YWdlL1NwZWVjaElucHV0LmggYi9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXQuaAppbmRleCBkMTBi
Nzg5YWFkMjczOWVkZDNiZjQ1MzBlN2M2ZTAwYzRlMmRhZThhLi4wNWUyMDA5YzUwYzFlOTc2NGY1
ZWVjM2QyZjU3OGE5MTNmZWQ5ZGRjIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5w
dXQuaAorKysgYi9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXQuaApAQCAtNjEsNyArNjEsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCB1bnJlZ2lzdGVyTGlzdGVuZXIoaW50KTsKIAogICAgIC8vIE1ldGhv
ZHMgaW52b2tlZCBieSB0aGUgaW5wdXQgZWxlbWVudHMuCi0gICAgYm9vbCBzdGFydFJlY29nbml0
aW9uKGludCwgY29uc3QgSW50UmVjdCYpOworICAgIGJvb2wgc3RhcnRSZWNvZ25pdGlvbihpbnQs
IGNvbnN0IENTdHJpbmcmLCBjb25zdCBJbnRSZWN0Jik7CiAgICAgdm9pZCBzdG9wUmVjb3JkaW5n
KGludCk7CiAgICAgdm9pZCBjYW5jZWxSZWNvZ25pdGlvbihpbnQpOwogCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXRDbGllbnQuaCBiL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1
dENsaWVudC5oCmluZGV4IGQ1ZmRhMTdmYWEyY2Q3OTVhZjQ0ZjUzYTQ2ZmNiYTU5NzQxYWI3NmMu
LmZlMjU3OGIzMWEzNzM1MGU3Nzg3OTM2N2E2MTkwMDcwN2FlM2Y5ZGIgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcGFnZS9TcGVlY2hJbnB1dENsaWVudC5oCisrKyBiL1dlYkNvcmUvcGFnZS9TcGVlY2hJ
bnB1dENsaWVudC5oCkBAIC0zMyw2ICszMywxMCBAQAogCiAjaWYgRU5BQkxFKElOUFVUX1NQRUVD
SCkKIAorbmFtZXNwYWNlIFdURiB7CitjbGFzcyBDU3RyaW5nOworfQorCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIEludFJlY3Q7CkBAIC00OCw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgc2V0TGlzdGVuZXIoU3BlZWNoSW5wdXRMaXN0ZW5lciopID0gMDsKIAogICAg
IC8vIFN0YXJ0cyBzcGVlY2ggcmVjb2duaXRpb24gYW5kIGF1ZGlvIHJlY29yZGluZy4KLSAgICB2
aXJ0dWFsIGJvb2wgc3RhcnRSZWNvZ25pdGlvbihpbnQgcmVxdWVzdElkLCBjb25zdCBJbnRSZWN0
JiBlbGVtZW50UmVjdCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzdGFydFJlY29nbml0aW9uKGlu
dCByZXF1ZXN0SWQsIGNvbnN0IFdURjo6Q1N0cmluZyYsIGNvbnN0IEludFJlY3QmIGVsZW1lbnRS
ZWN0KSA9IDA7CiAKICAgICAvLyBTdG9wcyBhdWRpbyByZWNvcmRpbmcgYW5kIHBlcmZvcm1zIHJl
Y29nbml0aW9uIHdpdGggdGhlIGF1ZGlvIHJlY29yZGVkIHVudGlsIG5vdwogICAgIC8vIChkb2Vz
IG5vdCBkaXNjYXJkIGF1ZGlvKS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9T
cGVlY2hJbnB1dENsaWVudE1vY2suY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1NwZWVjaElu
cHV0Q2xpZW50TW9jay5jcHAKaW5kZXggNmI2NDk0MmYxN2I5MjViNDllZjA5MjE0N2MwYTE2YTA3
ZjBkN2NjYy4uYjY5N2IzMTkyNjVkNmEwYWJhN2YwYWQwYjc5NDE0MDM2NTNlYWY3YyAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xpZW50TW9jay5jcHAKKysr
IGIvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xpZW50TW9jay5jcHAKQEAgLTUw
LDEyICs1MCwxMyBAQCB2b2lkIFNwZWVjaElucHV0Q2xpZW50TW9jazo6c2V0TGlzdGVuZXIoU3Bl
ZWNoSW5wdXRMaXN0ZW5lciogbGlzdGVuZXIpCiAgICAgbV9saXN0ZW5lciA9IGxpc3RlbmVyOwog
fQogCi1ib29sIFNwZWVjaElucHV0Q2xpZW50TW9jazo6c3RhcnRSZWNvZ25pdGlvbihpbnQgcmVx
dWVzdElkLCBjb25zdCBJbnRSZWN0JikKK2Jvb2wgU3BlZWNoSW5wdXRDbGllbnRNb2NrOjpzdGFy
dFJlY29nbml0aW9uKGludCByZXF1ZXN0SWQsIGNvbnN0IENTdHJpbmcmIGxhbmd1YWdlVGFnLCBj
b25zdCBJbnRSZWN0JikKIHsKICAgICBpZiAobV90aW1lci5pc0FjdGl2ZSgpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgbV9yZXF1ZXN0SWQgPSByZXF1ZXN0SWQ7CiAgICAgbV9yZWNvcmRp
bmcgPSB0cnVlOworICAgIG1fbGFuZ3VhZ2VUYWcgPSBTdHJpbmcobGFuZ3VhZ2VUYWcuZGF0YSgp
KTsKICAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdCgwKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAg
LTgwLDkgKzgxLDkgQEAgdm9pZCBTcGVlY2hJbnB1dENsaWVudE1vY2s6OmNhbmNlbFJlY29nbml0
aW9uKGludCByZXF1ZXN0SWQpCiAgICAgfQogfQogCi12b2lkIFNwZWVjaElucHV0Q2xpZW50TW9j
azo6c2V0UmVjb2duaXRpb25SZXN1bHQoY29uc3QgU3RyaW5nJiByZXN1bHQpCit2b2lkIFNwZWVj
aElucHV0Q2xpZW50TW9jazo6c2V0UmVjb2duaXRpb25SZXN1bHQoY29uc3QgU3RyaW5nJiByZXN1
bHQsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2VUYWcpCiB7Ci0gICAgbV9yZWNvZ25pdGlvblJlc3Vs
dCA9IHJlc3VsdDsKKyAgICBtX3JlY29nbml0aW9uUmVzdWx0LnNldChsYW5ndWFnZVRhZywgcmVz
dWx0KTsKIH0KIAogdm9pZCBTcGVlY2hJbnB1dENsaWVudE1vY2s6OnRpbWVyRmlyZWQoV2ViQ29y
ZTo6VGltZXI8U3BlZWNoSW5wdXRDbGllbnRNb2NrPiopCkBAIC05Miw3ICs5MywxMSBAQCB2b2lk
IFNwZWVjaElucHV0Q2xpZW50TW9jazo6dGltZXJGaXJlZChXZWJDb3JlOjpUaW1lcjxTcGVlY2hJ
bnB1dENsaWVudE1vY2s+KikKICAgICAgICAgbV9saXN0ZW5lci0+ZGlkQ29tcGxldGVSZWNvcmRp
bmcobV9yZXF1ZXN0SWQpOwogICAgICAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdCgwKTsKICAgICB9
IGVsc2UgewotICAgICAgICBtX2xpc3RlbmVyLT5zZXRSZWNvZ25pdGlvblJlc3VsdChtX3JlcXVl
c3RJZCwgbV9yZWNvZ25pdGlvblJlc3VsdCk7CisgICAgICAgIGlmIChtX3JlY29nbml0aW9uUmVz
dWx0LmZpbmQobV9sYW5ndWFnZVRhZykgPT0gbV9yZWNvZ25pdGlvblJlc3VsdC5lbmQoKSkKKyAg
ICAgICAgICAgIG1fbGlzdGVuZXItPnNldFJlY29nbml0aW9uUmVzdWx0KG1fcmVxdWVzdElkLCBT
dHJpbmcoImVycm9yOiBubyByZXN1bHQgZm9yIHRoZSBwcm92aWRlZCBsYW5ndWFnZSB0YWciKSk7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fbGlzdGVuZXItPnNldFJlY29nbml0aW9uUmVz
dWx0KG1fcmVxdWVzdElkLCBtX3JlY29nbml0aW9uUmVzdWx0LmdldChtX2xhbmd1YWdlVGFnKSk7
CisKICAgICAgICAgbV9saXN0ZW5lci0+ZGlkQ29tcGxldGVSZWNvZ25pdGlvbihtX3JlcXVlc3RJ
ZCk7CiAgICAgICAgIG1fcmVxdWVzdElkID0gMDsKICAgICB9CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svU3BlZWNoSW5wdXRDbGllbnRNb2NrLmggYi9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svU3BlZWNoSW5wdXRDbGllbnRNb2NrLmgKaW5kZXggY2U4M2QzYmI5Y2I4OGIwYTNhOTVi
NTQ5NTQyN2QyOTkxZjJlMGI0Zi4uMzk4YzU2NTM5YzdkYTQ2ZTAxYjQ1MzYyNWM0MTg1ZDJiMDc0
ZDljYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xpZW50
TW9jay5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TcGVlY2hJbnB1dENsaWVudE1vY2su
aApAQCAtMzQsNiArMzQsOSBAQAogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVk
ZSAiU3BlZWNoSW5wdXRDbGllbnQuaCIKICNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCiAKQEAgLTQ2
LDExICs0OSwxMSBAQCBjbGFzcyBTcGVlY2hJbnB1dENsaWVudE1vY2sgOiBwdWJsaWMgU3BlZWNo
SW5wdXRDbGllbnQgewogcHVibGljOgogICAgIFNwZWVjaElucHV0Q2xpZW50TW9jaygpOwogCi0g
ICAgdm9pZCBzZXRSZWNvZ25pdGlvblJlc3VsdChjb25zdCBTdHJpbmcmIHJlc3VsdCk7CisgICAg
dm9pZCBzZXRSZWNvZ25pdGlvblJlc3VsdChjb25zdCBTdHJpbmcmIHJlc3VsdCwgY29uc3QgU3Ry
aW5nJiBsYW5ndWFnZVRhZyk7CiAKICAgICAvLyBTcGVlY2hJbnB1dENsaWVudCBtZXRob2RzLgog
ICAgIHZvaWQgc2V0TGlzdGVuZXIoU3BlZWNoSW5wdXRMaXN0ZW5lciopOwotICAgIGJvb2wgc3Rh
cnRSZWNvZ25pdGlvbihpbnQsIGNvbnN0IEludFJlY3QmKTsKKyAgICBib29sIHN0YXJ0UmVjb2du
aXRpb24oaW50LCBjb25zdCBXVEY6OkNTdHJpbmcmLCBjb25zdCBJbnRSZWN0Jik7CiAgICAgdm9p
ZCBzdG9wUmVjb3JkaW5nKGludCk7CiAgICAgdm9pZCBjYW5jZWxSZWNvZ25pdGlvbihpbnQpOwog
CkBAIC02MSw3ICs2NCwxMSBAQCBwcml2YXRlOgogICAgIFRpbWVyPFNwZWVjaElucHV0Q2xpZW50
TW9jaz4gbV90aW1lcjsKICAgICBTcGVlY2hJbnB1dExpc3RlbmVyKiBtX2xpc3RlbmVyOwogICAg
IGludCBtX3JlcXVlc3RJZDsKLSAgICBTdHJpbmcgbV9yZWNvZ25pdGlvblJlc3VsdDsKKworICAg
IC8vIFN0cmluZ3MgYXJlIHVzZWQgaW5zdGVhZCBvZiBDU3RyaW5nIGZvciB0aGUgbGFuZ3VhZ2Ug
dGFnCisgICAgLy8gc2luY2UgRGVmYXVsdEhhc2g8V1RGOjpDU3RyaW5nPjo6SGFzaCBzZWVtcyBu
b3QgdG8gYmUgcHJvdmlkZWQKKyAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBtX3JlY29nbml0
aW9uUmVzdWx0OworICAgIFN0cmluZyBtX2xhbmd1YWdlVGFnOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dENvbnRyb2xJbm5l
ckVsZW1lbnRzLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50
cy5jcHAKaW5kZXggNWQ1YjhiMzBiNDExMDUyMGQxYTRkZTdiOGE3OWM0ODVkNzkzNjYwOC4uODc5
YjMyZGUzMDFjOGZlYmVhY2IyYTUwYmIyZmRhZDJhNTA0OTIzZCAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9yZW5kZXJpbmcvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAorKysgYi9XZWJDb3JlL3Jl
bmRlcmluZy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCkBAIC0yMSw5ICsyMSw5IEBACiAg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCiAgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogICovCi0gCisKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJU
ZXh0Q29udHJvbElubmVyRWxlbWVudHMuaCIKIApAQCAtMTAwLDI1ICsxMDAsMjUgQEAgdm9pZCBU
ZXh0Q29udHJvbElubmVyRWxlbWVudDo6YXR0YWNoSW5uZXJFbGVtZW50KE5vZGUqIHBhcmVudCwg
UGFzc1JlZlB0cjxSZW5kZXIKIHsKICAgICAvLyBXaGVuIGFkZGluZyB0aGVzZSBlbGVtZW50cywg
Y3JlYXRlIHRoZSByZW5kZXJlciAmIHN0eWxlIGZpcnN0IGJlZm9yZSBhZGRpbmcgdG8gdGhlIERP
TS4KICAgICAvLyBPdGhlcndpc2UsIHRoZSByZW5kZXIgdHJlZSB3aWxsIGNyZWF0ZSBzb21lIGFu
b255bW91cyBibG9ja3MgdGhhdCB3aWxsIG1lc3MgdXAgb3VyIGxheW91dC4KLQorICAgIAogICAg
IC8vIENyZWF0ZSB0aGUgcmVuZGVyZXIgd2l0aCB0aGUgc3BlY2lmaWVkIHN0eWxlCiAgICAgUmVu
ZGVyT2JqZWN0KiByZW5kZXJlciA9IGNyZWF0ZVJlbmRlcmVyKGFyZW5hLCBzdHlsZS5nZXQoKSk7
CiAgICAgaWYgKHJlbmRlcmVyKSB7CiAgICAgICAgIHNldFJlbmRlcmVyKHJlbmRlcmVyKTsKICAg
ICAgICAgcmVuZGVyZXItPnNldFN0eWxlKHN0eWxlKTsKICAgICB9Ci0gICAgCisKICAgICAvLyBT
ZXQgdGhlc2UgZXhwbGljaXRseSBzaW5jZSB0aGlzIG5vcm1hbGx5IGhhcHBlbnMgZHVyaW5nIGFu
IGF0dGFjaCgpCiAgICAgc2V0QXR0YWNoZWQoKTsKICAgICBzZXRJbkRvY3VtZW50KCk7Ci0gICAg
CisKICAgICAvLyBGb3IgZWxlbWVudHMgd2l0aG91dCBhIHNoYWRvdyBwYXJlbnQsIGFkZCB0aGUg
bm9kZSB0byB0aGUgRE9NIG5vcm1hbGx5LgogICAgIGlmICghbV9zaGFkb3dQYXJlbnQpIHsKICAg
ICAgICAgLy8gRklYTUU6IFRoaXMgY29kZSBzZWVtcyB2ZXJ5IHdyb25nLiAgV2h5IGFyZSB3ZSBt
YWdpY2FsbHkgYWRkaW5nIHx0aGlzfCB0byB0aGUgRE9NIGhlcmU/CiAgICAgICAgIC8vICAgICAg
ICBXZSBzaG91bGRuJ3QgYmUgY2FsbGluZyBwYXJzZXIgQVBJIG1ldGhvZHMgb3V0c2lkZSBvZiB0
aGUgcGFyc2VyIQogICAgICAgICBwYXJlbnQtPmRlcHJlY2F0ZWRQYXJzZXJBZGRDaGlsZCh0aGlz
KTsKICAgICB9Ci0gCisKICAgICAvLyBBZGQgdGhlIHJlbmRlcmVyIHRvIHRoZSByZW5kZXIgdHJl
ZQogICAgIGlmIChyZW5kZXJlcikKICAgICAgICAgcGFyZW50LT5yZW5kZXJlcigpLT5hZGRDaGls
ZChyZW5kZXJlcik7CkBAIC0yMDgsNyArMjA4LDcgQEAgdm9pZCBTZWFyY2hGaWVsZENhbmNlbEJ1
dHRvbkVsZW1lbnQ6OmRldGFjaCgpCiB7CiAgICAgaWYgKG1fY2FwdHVyaW5nKSB7CiAgICAgICAg
IGlmIChGcmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLT5mcmFtZSgpKQotICAgICAgICAgICAgZnJh
bWUtPmV2ZW50SGFuZGxlcigpLT5zZXRDYXB0dXJpbmdNb3VzZUV2ZW50c05vZGUoMCk7ICAgICAg
CisgICAgICAgICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPnNldENhcHR1cmluZ01vdXNlRXZl
bnRzTm9kZSgwKTsKICAgICB9CiAgICAgVGV4dENvbnRyb2xJbm5lckVsZW1lbnQ6OmRldGFjaCgp
OwogfQpAQCAtMjgxLDkgKzI4MSw5IEBAIHZvaWQgU3BpbkJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRF
dmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogICAgIGlmICghYm94KSB7CiAgICAgICAgIGlmICgh
ZXZlbnQtPmRlZmF1bHRIYW5kbGVkKCkpCiAgICAgICAgICAgICBIVE1MRGl2RWxlbWVudDo6ZGVm
YXVsdEV2ZW50SGFuZGxlcihldmVudCk7Ci0gICAgICAgIHJldHVybjsgICAgICAgIAorICAgICAg
ICByZXR1cm47CiAgICAgfQotICAgIAorIAogICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0ID0g
c3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KHNoYWRvd0FuY2VzdG9yTm9kZSgpKTsKICAg
ICBpZiAoaW5wdXQtPmRpc2FibGVkKCkgfHwgaW5wdXQtPmlzUmVhZE9ubHlGb3JtQ29udHJvbCgp
KSB7CiAgICAgICAgIGlmICghZXZlbnQtPmRlZmF1bHRIYW5kbGVkKCkpCkBAIC00MzEsNyArNDMx
LDcgQEAgdm9pZCBJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFu
ZGxlcihFdmVudCogZXZlbnQpCiAgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygp
LmNsaWNrRXZlbnQpIHsKICAgICAgICAgc3dpdGNoIChtX3N0YXRlKSB7CiAgICAgICAgIGNhc2Ug
SWRsZToKLSAgICAgICAgICAgIGlmIChzcGVlY2hJbnB1dCgpLT5zdGFydFJlY29nbml0aW9uKG1f
bGlzdGVuZXJJZCwgaW5wdXQtPnJlbmRlcmVyKCktPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCkp
KQorICAgICAgICAgICAgaWYgKHNwZWVjaElucHV0KCktPnN0YXJ0UmVjb2duaXRpb24obV9saXN0
ZW5lcklkLCB2YWxpZGF0ZWRJbmhlcml0ZWRMYW5ndWFnZShpbnB1dCksIGlucHV0LT5yZW5kZXJl
cigpLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpKSkKICAgICAgICAgICAgICAgICBzZXRTdGF0
ZShSZWNvcmRpbmcpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUmVjb3JkaW5n
OgpAQCAtNDYxLDYgKzQ2MSwxOCBAQCBTcGVlY2hJbnB1dCogSW5wdXRGaWVsZFNwZWVjaEJ1dHRv
bkVsZW1lbnQ6OnNwZWVjaElucHV0KCkKICAgICByZXR1cm4gZG9jdW1lbnQoKS0+cGFnZSgpID8g
ZG9jdW1lbnQoKS0+cGFnZSgpLT5zcGVlY2hJbnB1dCgpIDogMDsKIH0KIAorQ1N0cmluZyBJbnB1
dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudDo6dmFsaWRhdGVkSW5oZXJpdGVkTGFuZ3VhZ2UoSFRN
TElucHV0RWxlbWVudCAqaW5wdXQpCit7CisgICAgLy8gT25seSBBLVphLXowLTkgYW5kICctJyBh
cmUgYWxsb3dlZCBpbiB0aGUgbGFuZ3VhZ2UgdGFnIChzZWUgQkNQIDQ3KQorICAgIENTdHJpbmcg
bGFuZ3VhZ2VUYWcgPSBpbnB1dC0+Y29tcHV0ZUluaGVyaXRlZExhbmd1YWdlKCkuc3RyaW5nKCku
YXNjaWkoKTsKKyAgICBmb3IgKGNvbnN0IGNoYXIgKnAgPSBsYW5ndWFnZVRhZy5kYXRhKCk7ICpw
ICE9ICdcMCc7ICsrcCkgeworICAgICAgICBpZiAoIWlzYWxudW0oKnApICYmICpwICE9ICctJykK
KyAgICAgICAgICAgIHJldHVybiBDU3RyaW5nKCk7CisgICAgfQorCisgICAgcmV0dXJuIGxhbmd1
YWdlVGFnOworfQorCiB2b2lkIElucHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50OjpkaWRDb21w
bGV0ZVJlY29yZGluZyhpbnQpCiB7CiAgICAgc2V0U3RhdGUoUmVjb2duaXppbmcpOwpAQCAtNDg3
LDcgKzQ5OSw3IEBAIHZvaWQgSW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQ6OmRldGFjaCgp
CiB7CiAgICAgaWYgKG1fY2FwdHVyaW5nKSB7CiAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBk
b2N1bWVudCgpLT5mcmFtZSgpKQotICAgICAgICAgICAgZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5z
ZXRDYXB0dXJpbmdNb3VzZUV2ZW50c05vZGUoMCk7ICAgICAgCisgICAgICAgICAgICBmcmFtZS0+
ZXZlbnRIYW5kbGVyKCktPnNldENhcHR1cmluZ01vdXNlRXZlbnRzTm9kZSgwKTsKICAgICB9CiAK
ICAgICBpZiAobV9zdGF0ZSAhPSBJZGxlKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcv
VGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmggYi9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Q29udHJv
bElubmVyRWxlbWVudHMuaAppbmRleCBjMTQ2YTQyZGM0MzQ5ZTc3ZGRhYmVlMzE3ZGE2ZTcxZWY1
NmE3ZTU4Li40ZjUwMjZiYmJkM2U1YjBkNTk3ZWY0M2ZhZmI3OTNjYmUyZTVlNzg3IDEwMDY0NAot
LS0gYS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuaAorKysgYi9X
ZWJDb3JlL3JlbmRlcmluZy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuaApAQCAtMTQ3LDYgKzE0
Nyw3IEBAIHByaXZhdGU6CiAgICAgSW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQoSFRNTEVs
ZW1lbnQqKTsKICAgICBTcGVlY2hJbnB1dCogc3BlZWNoSW5wdXQoKTsKICAgICB2b2lkIHNldFN0
YXRlKFNwZWVjaElucHV0U3RhdGUgc3RhdGUpOworICAgIENTdHJpbmcgdmFsaWRhdGVkSW5oZXJp
dGVkTGFuZ3VhZ2UoSFRNTElucHV0RWxlbWVudCAqaW5wdXQpOwogCiAgICAgYm9vbCBtX2NhcHR1
cmluZzsKICAgICBTcGVlY2hJbnB1dFN0YXRlIG1fc3RhdGU7CmRpZmYgLS1naXQgYS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBkODg0
YWI2MGFjZDdmN2I3ZmI3MGEyODEyYWYwOTBiZDUyMzJiZmNlLi4wYWFjNjI1MDMzYWMwYjYwNDMx
MWJkNDUzZWQwMmViMzc0YzM2NDk3IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCisrKyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAx
MC0xMC0wNiAgTGVhbmRybyBHcmFjacOhIEdpbCAgPGxlYW5kcm9ncmFjaWFAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBhdGNo
IHRoZSBjdXJyZW50IHNwZWVjaCBIVE1MIHRhZyBpbXBsZW1lbnRhdGlvbiB0byB1c2UgYW5kIHZh
bGlkYXRlCisgICAgICAgIHRoZSBuZWFyZXN0IGxhbmd1YWdlIHRhZy4gVGhlIGxhbmd1YWdlIGlz
IG5vdyBwYXNzZWQgdG8gdGhlCisgICAgICAgIHN0YXJ0UmVjb2duaXRpb24gbWV0aG9kcyBzbyB0
aGF0IGxhbmd1YWdlLXNwZWNpZmljIHJlY29nbml0aW9uIGNvdWxkCisgICAgICAgIGJlIHVzZWQu
IEFsc28gYWRkZWQgYSBzZWNvbmQgcGFyYW1ldGVyIHRvIHNldE1vY2tTcGVlY2hJbnB1dFJlc3Vs
dCBmb3IKKyAgICAgICAgdGhlIGxhbmd1YWdlIHVzZWQgaW4gc3BlZWNoIHJlY29nbml0aW9uLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDcwODkKKwor
ICAgICAgICAqIHB1YmxpYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIuaDoKKyAgICAgICAgKFdl
YktpdDo6V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyOjpzdGFydFJlY29nbml0aW9uKToKKyAgICAg
ICAgKiBwdWJsaWMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9jay5oOgorICAgICAgICAqIHNy
Yy9TcGVlY2hJbnB1dENsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hJbnB1
dENsaWVudEltcGw6OnN0YXJ0UmVjb2duaXRpb24pOgorICAgICAgICAqIHNyYy9TcGVlY2hJbnB1
dENsaWVudEltcGwuaDoKKyAgICAgICAgKiBzcmMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9j
a0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2Nr
SW1wbDo6c2V0TW9ja1JlY29nbml0aW9uUmVzdWx0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU3Bl
ZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OnN0YXJ0UmVjb2duaXRpb24pOgorICAgICAgICAq
IHNyYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbC5oOgorICAgICAgICAqIHNyYy9X
ZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpXZWJWaWV3SW1w
bCk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmg6CisKIDIwMTAtMDktMjkgIEFscGhhIExh
bSAgPGhjbGFtQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBKYW1lcyBSb2Jp
bnNvbi4KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoSW5wdXRD
b250cm9sbGVyLmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaElucHV0Q29udHJv
bGxlci5oCmluZGV4IDU0MDg3NDFhM2M5NGQzYmYxYzU0M2Q5NmU5ZmMxNmE2MzkwZGIwMmYuLjlm
YmNjYTIzZDkzZDhlODhhMmYyMjM5ZGY5Y2FjNjU0ZDBiMzk4MmIgMTAwNjQ0Ci0tLSBhL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyLmgKKysrIGIvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIuaApAQCAtMzUsNiArMzUs
NyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgV2ViQ1N0cmluZzsKIHN0cnVjdCBX
ZWJSZWN0OwogCiAvLyBQcm92aWRlcyBhbiBlbWJlZGRlciBBUEkgY2FsbGVkIGJ5IFdlYktpdC4K
QEAgLTQzLDcgKzQ0LDcgQEAgcHVibGljOgogICAgIC8vIFN0YXJ0cyBzcGVlY2ggcmVjb2duaXRp
b24uIFNwZWVjaCB3aWxsIGdldCByZWNvcmRlZCB1bnRpbCB0aGUgZW5kcG9pbnRlciBkZXRlY3Rz
IHNpbGVuY2UsCiAgICAgLy8gcnVucyB0byB0aGUgbGltaXQgb3Igc3RvcFJlY29yZGluZyBpcyBj
YWxsZWQuIFByb2dyZXNzIGluZGljYXRpb25zIGFuZCB0aGUgcmVjb2duaXplZAogICAgIC8vIHRl
eHQgYXJlIHJldHVybmVkIHZpYSB0aGUgbGlzdGVuZXIgaW50ZXJmYWNlLgotICAgIHZpcnR1YWwg
Ym9vbCBzdGFydFJlY29nbml0aW9uKGludCByZXF1ZXN0SWQsIGNvbnN0IFdlYlJlY3QmKQorICAg
IHZpcnR1YWwgYm9vbCBzdGFydFJlY29nbml0aW9uKGludCByZXF1ZXN0SWQsIGNvbnN0IFdlYkNT
dHJpbmcmLCBjb25zdCBXZWJSZWN0JikKICAgICB7CiAgICAgICAgIFdFQktJVF9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrLmggYi9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2suaAppbmRleCA5YTI2MjM1
ZmY2ZDVkY2NiYmUyNDcyNjJhZTQ0YTNhYzczOTdjM2Y0Li5iNjliNTg5NGUxZGUwYmUzYmU5ZjM2
YWE5MGI1MTg3ZTQzNmUwN2ZkIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YlNwZWVjaElucHV0Q29udHJvbGxlck1vY2suaAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2suaApAQCAtNDQsNiArNDQsOSBAQCBwdWJsaWM6
CiAgICAgICAgIFdlYlNwZWVjaElucHV0TGlzdGVuZXIqIGxpc3RlbmVyKTsKICAgICB2aXJ0dWFs
IH5XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrKCkgeyB9CiAKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0TW9ja1JlY29nbml0aW9uUmVzdWx0KGNvbnN0IFdlYlN0cmluZyYgcmVzdWx0LCBjb25zdCBX
ZWJTdHJpbmcmIGxhbmd1YWdlVGFnKSA9IDA7CisKKyAgICAvLyBUT0RPKGxlYW5kcm9ncmFjaWEp
OiBkZWxldGUgdGhpcyB0ZW1wb3JhcnkgZml4LiBSZXF1aXJlZCB0byBsYXVuY2ggYSB0d28tc2lk
ZWQgcGF0Y2guCiAgICAgdmlydHVhbCB2b2lkIHNldE1vY2tSZWNvZ25pdGlvblJlc3VsdChjb25z
dCBXZWJTdHJpbmcmIHJlc3VsdCkgPSAwOwogfTsKIApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9t
aXVtL3NyYy9TcGVlY2hJbnB1dENsaWVudEltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9T
cGVlY2hJbnB1dENsaWVudEltcGwuY3BwCmluZGV4IDk2M2Q0NDA1YTYyZDMyZTFhOGNlY2Q1NGMw
OGM1YmJlYjNhNjJkY2EuLjgwYTA5YzA4ZmIyMDA1MWJiNDJmY2Y0Yjk4MmEwMWM4ODdkMGJhZGQg
MTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvU3BlZWNoSW5wdXRDbGllbnRJbXBsLmNw
cAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1NwZWVjaElucHV0Q2xpZW50SW1wbC5jcHAKQEAg
LTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJTcGVlY2hJbnB1dENsaWVudEltcGwuaCIKIAogI2lu
Y2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSAiV2ViQ1N0cmluZy5oIgogI2luY2x1
ZGUgIldlYlNwZWVjaElucHV0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIldlYlN0cmluZy5oIgog
I2luY2x1ZGUgIldlYlZpZXdDbGllbnQuaCIKQEAgLTU2LDEwICs1NywxMCBAQCB2b2lkIFNwZWVj
aElucHV0Q2xpZW50SW1wbDo6c2V0TGlzdGVuZXIoV2ViQ29yZTo6U3BlZWNoSW5wdXRMaXN0ZW5l
ciogbGlzdGVuZXIpCiAgICAgbV9saXN0ZW5lciA9IGxpc3RlbmVyOwogfQogCi1ib29sIFNwZWVj
aElucHV0Q2xpZW50SW1wbDo6c3RhcnRSZWNvZ25pdGlvbihpbnQgcmVxdWVzdElkLCBjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiBlbGVtZW50UmVjdCkKK2Jvb2wgU3BlZWNoSW5wdXRDbGllbnRJbXBs
OjpzdGFydFJlY29nbml0aW9uKGludCByZXF1ZXN0SWQsIGNvbnN0IFdURjo6Q1N0cmluZyYgbGFu
Z3VhZ2VUYWcsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGVsZW1lbnRSZWN0KQogewogICAgIEFT
U0VSVChtX2xpc3RlbmVyKTsKLSAgICByZXR1cm4gbV9jb250cm9sbGVyLT5zdGFydFJlY29nbml0
aW9uKHJlcXVlc3RJZCwgZWxlbWVudFJlY3QpOworICAgIHJldHVybiBtX2NvbnRyb2xsZXItPnN0
YXJ0UmVjb2duaXRpb24ocmVxdWVzdElkLCBsYW5ndWFnZVRhZywgZWxlbWVudFJlY3QpOwogfQog
CiB2b2lkIFNwZWVjaElucHV0Q2xpZW50SW1wbDo6c3RvcFJlY29yZGluZyhpbnQgcmVxdWVzdElk
KQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9TcGVlY2hJbnB1dENsaWVudEltcGwu
aCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvU3BlZWNoSW5wdXRDbGllbnRJbXBsLmgKaW5kZXggODE3
YjMyYjEyNDE0YjNhMDdkZmEzYWUzNTE5MDg3ZGVhNWEwZjczMy4uYzkxYTM4Y2QwZDNmNDI2ZTE5
OGE3ODE5Yjc0NGNiOGVmMWI2ODY4ZiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9T
cGVlY2hJbnB1dENsaWVudEltcGwuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1NwZWVjaElu
cHV0Q2xpZW50SW1wbC5oCkBAIC0zNiw2ICszNiwxMCBAQAogI2luY2x1ZGUgIldlYlNwZWVjaElu
cHV0TGlzdGVuZXIuaCIKICNpbmNsdWRlICJwYWdlL1NwZWVjaElucHV0Q2xpZW50LmgiCiAKK25h
bWVzcGFjZSBXVEYgeworY2xhc3MgQ1N0cmluZzsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgU3BlZWNoSW5wdXRMaXN0ZW5lcjsKIH0KQEAgLTU0LDcgKzU4LDcgQEAgcHVibGljOgog
CiAgICAgLy8gU3BlZWNoSW5wdXRDbGllbnQgbWV0aG9kcy4KICAgICB2b2lkIHNldExpc3RlbmVy
KFdlYkNvcmU6OlNwZWVjaElucHV0TGlzdGVuZXIqKTsKLSAgICBib29sIHN0YXJ0UmVjb2duaXRp
b24oaW50LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CisgICAgYm9vbCBzdGFydFJlY29nbml0
aW9uKGludCwgY29uc3QgV1RGOjpDU3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOwog
ICAgIHZvaWQgc3RvcFJlY29yZGluZyhpbnQpOwogICAgIHZvaWQgY2FuY2VsUmVjb2duaXRpb24o
aW50KTsKIApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTcGVlY2hJbnB1dENv
bnRyb2xsZXJNb2NrSW1wbC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNwZWVjaElucHV0
Q29udHJvbGxlck1vY2tJbXBsLmNwcAppbmRleCA2MGM0ZmVkODUyYjI4NGUwMjcxYWQwMGVkOTcx
MDAyYTJmNTdhNGI2Li5kMGIyMmFiMjMzMjhjY2FkNWQ1ZjIyN2U1NGEzMjRlOWE1NmI5NGUzIDEw
MDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1v
Y2tJbXBsLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNwZWVjaElucHV0Q29udHJv
bGxlck1vY2tJbXBsLmNwcApAQCAtMzMsNiArMzMsNyBAQAogCiAjaW5jbHVkZSAiUGxhdGZvcm1T
dHJpbmcuaCIKICNpbmNsdWRlICJTcGVlY2hJbnB1dENsaWVudE1vY2suaCIKKyNpbmNsdWRlICJX
ZWJDU3RyaW5nLmgiCiAjaW5jbHVkZSAiV2ViUmVjdC5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
QEAgLTU3LDcgKzU4LDEyIEBAIFdlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsOjp+V2Vi
U3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGwoKQogCiB2b2lkIFdlYlNwZWVjaElucHV0Q29u
dHJvbGxlck1vY2tJbXBsOjpzZXRNb2NrUmVjb2duaXRpb25SZXN1bHQoY29uc3QgV2ViU3RyaW5n
JiByZXN1bHQpCiB7Ci0gICAgbV93ZWJjb3JlTW9jay0+c2V0UmVjb2duaXRpb25SZXN1bHQocmVz
dWx0KTsKKyAgICBtX3dlYmNvcmVNb2NrLT5zZXRSZWNvZ25pdGlvblJlc3VsdChyZXN1bHQsIFdl
YlN0cmluZzo6ZnJvbVVURjgoImVuIikpOworfQorCit2b2lkIFdlYlNwZWVjaElucHV0Q29udHJv
bGxlck1vY2tJbXBsOjpzZXRNb2NrUmVjb2duaXRpb25SZXN1bHQoY29uc3QgV2ViU3RyaW5nJiBy
ZXN1bHQsIGNvbnN0IFdlYlN0cmluZyAmbGFuZ3VhZ2VUYWcpCit7CisgICAgbV93ZWJjb3JlTW9j
ay0+c2V0UmVjb2duaXRpb25SZXN1bHQocmVzdWx0LCBsYW5ndWFnZVRhZyk7CiB9CiAKIHZvaWQg
V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OmRpZENvbXBsZXRlUmVjb3JkaW5nKGlu
dCByZXF1ZXN0SWQpCkBAIC03NSw5ICs4MSw5IEBAIHZvaWQgV2ViU3BlZWNoSW5wdXRDb250cm9s
bGVyTW9ja0ltcGw6OnNldFJlY29nbml0aW9uUmVzdWx0KGludCByZXF1ZXN0SWQsIGNvbnN0CiAg
ICAgbV9saXN0ZW5lci0+c2V0UmVjb2duaXRpb25SZXN1bHQocmVxdWVzdElkLCByZXN1bHQpOwog
fQogCi1ib29sIFdlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsOjpzdGFydFJlY29nbml0
aW9uKGludCByZXF1ZXN0SWQsIGNvbnN0IFdlYlJlY3QmIGVsZW1lbnRSZWN0KQorYm9vbCBXZWJT
cGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6c3RhcnRSZWNvZ25pdGlvbihpbnQgcmVxdWVz
dElkLCBjb25zdCBXZWJDU3RyaW5nJiBsYW5ndWFnZVRhZywgY29uc3QgV2ViUmVjdCYgZWxlbWVu
dFJlY3QpCiB7Ci0gICAgcmV0dXJuIG1fd2ViY29yZU1vY2stPnN0YXJ0UmVjb2duaXRpb24ocmVx
dWVzdElkLCBlbGVtZW50UmVjdCk7CisgICAgcmV0dXJuIG1fd2ViY29yZU1vY2stPnN0YXJ0UmVj
b2duaXRpb24ocmVxdWVzdElkLCBsYW5ndWFnZVRhZywgZWxlbWVudFJlY3QpOwogfQogCiB2b2lk
IFdlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsOjpjYW5jZWxSZWNvZ25pdGlvbihpbnQg
cmVxdWVzdElkKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTcGVlY2hJbnB1
dENvbnRyb2xsZXJNb2NrSW1wbC5oIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTcGVlY2hJbnB1
dENvbnRyb2xsZXJNb2NrSW1wbC5oCmluZGV4IGVkYmZjYTNlZTYwZTkzOTQyODkzZTI3MjE4OTNl
NDNhMGViODdjNWYuLjI3MmEzNmViYTUyNWM5ZTI2NDgyYjA2OWU0MzBkZmQ5NTA0YzQxNjUgMTAw
NjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9j
a0ltcGwuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNwZWVjaElucHV0Q29udHJvbGxl
ck1vY2tJbXBsLmgKQEAgLTM2LDYgKzM2LDExIEBACiAjaW5jbHVkZSAiV2ViU3BlZWNoSW5wdXRM
aXN0ZW5lci5oIgogI2luY2x1ZGUgIldlYlN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdURiB7Citj
bGFzcyBTdHJpbmc7Cit9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFNwZWVjaElucHV0
Q2xpZW50TW9jazsKQEAgLTU3LDExICs2MiwxNCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRSZWNv
Z25pdGlvblJlc3VsdChpbnQgcmVxdWVzdElkLCBjb25zdCBXVEY6OlN0cmluZyYgcmVzdWx0KTsK
IAogICAgIC8vIFdlYlNwZWVjaElucHV0Q29udHJvbGxlciBtZXRob2RzLgotICAgIGJvb2wgc3Rh
cnRSZWNvZ25pdGlvbihpbnQgcmVxdWVzdElkLCBjb25zdCBXZWJSZWN0JiBlbGVtZW50UmVjdCk7
CisgICAgYm9vbCBzdGFydFJlY29nbml0aW9uKGludCByZXF1ZXN0SWQsIGNvbnN0IFdlYkNTdHJp
bmcmIGxhbmd1YWdlVGFnLCBjb25zdCBXZWJSZWN0JiBlbGVtZW50UmVjdCk7CiAgICAgdm9pZCBj
YW5jZWxSZWNvZ25pdGlvbihpbnQgcmVxdWVzdElkKTsKICAgICB2b2lkIHN0b3BSZWNvcmRpbmco
aW50IHJlcXVlc3RJZCk7CiAKICAgICAvLyBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrIG1l
dGhvZHMuCisgICAgdm9pZCBzZXRNb2NrUmVjb2duaXRpb25SZXN1bHQoY29uc3QgV2ViU3RyaW5n
JiByZXN1bHQsIGNvbnN0IFdlYlN0cmluZyYgbGFuZ3VhZ2VUYWcpOworCisgICAgLy8gVE9ETyhs
ZWFuZHJvZ3JhY2lhKTogZGVsZXRlIHRoaXMgdGVtcG9yYXJ5IGZpeC4gUmVxdWlyZWQgdG8gbGF1
bmNoIGEgdHdvLXNpZGVkIHBhdGNoLgogICAgIHZvaWQgc2V0TW9ja1JlY29nbml0aW9uUmVzdWx0
KGNvbnN0IFdlYlN0cmluZyYgcmVzdWx0KTsKIAogcHJpdmF0ZToKQEAgLTcyLDQgKzgwLDMgQEAg
cHJpdmF0ZToKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gV2ViU3BlZWNoSW5w
dXRDb250cm9sbGVyTW9ja0ltcGxfaAotCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlZpZXdJbXBsLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmlu
ZGV4IDU5OWM2NWUwYzNhZDc4YmRkMzMzYjNkOWQwNWYwYTMzYmNhNWM2YjkuLjEzMDI4OGIyODMx
MzE4YzdhMzI0MjdhZDljZGZiNDFlNzkxNDQ4NjMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0lt
cGwuY3BwCkBAIC04OCw2ICs4OCw3IEBACiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNp
bmNsdWRlICJTZWxlY3Rpb25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNp
bmNsdWRlICJTcGVlY2hJbnB1dENsaWVudEltcGwuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2lu
Y2x1ZGUgIlR5cGluZ0NvbW1hbmQuaCIKICNpbmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5o
IgpAQCAtMjc1LDcgKzI3Niw3IEBAIFdlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbChXZWJWaWV3Q2xp
ZW50KiBjbGllbnQsIFdlYkRldlRvb2xzQWdlbnRDbGllbnQqIGRldlRvb2xzCiAgICAgLCBtX2Nv
bXBvc2l0b3JDcmVhdGlvbkZhaWxlZChmYWxzZSkKICNlbmRpZgogI2lmIEVOQUJMRShJTlBVVF9T
UEVFQ0gpCi0gICAgLCBtX3NwZWVjaElucHV0Q2xpZW50KGNsaWVudCkKKyAgICAsIG1fc3BlZWNo
SW5wdXRDbGllbnQobmV3IFNwZWVjaElucHV0Q2xpZW50SW1wbChjbGllbnQpKQogI2VuZGlmCiAg
ICAgLCBtX2RldmljZU9yaWVudGF0aW9uQ2xpZW50UHJveHkobmV3IERldmljZU9yaWVudGF0aW9u
Q2xpZW50UHJveHkoY2xpZW50ID8gY2xpZW50LT5kZXZpY2VPcmllbnRhdGlvbkNsaWVudCgpIDog
MCkpCiB7CkBAIC0yOTgsNyArMjk5LDcgQEAgV2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKFdlYlZp
ZXdDbGllbnQqIGNsaWVudCwgV2ViRGV2VG9vbHNBZ2VudENsaWVudCogZGV2VG9vbHMKICAgICBw
YWdlQ2xpZW50cy5kcmFnQ2xpZW50ID0gJm1fZHJhZ0NsaWVudEltcGw7CiAgICAgcGFnZUNsaWVu
dHMuaW5zcGVjdG9yQ2xpZW50ID0gJm1faW5zcGVjdG9yQ2xpZW50SW1wbDsKICNpZiBFTkFCTEUo
SU5QVVRfU1BFRUNIKQotICAgIHBhZ2VDbGllbnRzLnNwZWVjaElucHV0Q2xpZW50ID0gJm1fc3Bl
ZWNoSW5wdXRDbGllbnQ7CisgICAgcGFnZUNsaWVudHMuc3BlZWNoSW5wdXRDbGllbnQgPSBtX3Nw
ZWVjaElucHV0Q2xpZW50LmdldCgpOwogI2VuZGlmCiAgICAgcGFnZUNsaWVudHMuZGV2aWNlT3Jp
ZW50YXRpb25DbGllbnQgPSBtX2RldmljZU9yaWVudGF0aW9uQ2xpZW50UHJveHkuZ2V0KCk7CiAK
ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaCBiL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAppbmRleCBlNTFkZjRkOThlM2Q4ZTJiNjExMjU1MDM4
ZjA4YzYxZmU0MmM3ODc4Li42YzYzNDZkNDA3NzlmOTczNGY2NTgzZDY3ZGY5YTdkOWE0YTMyZTFl
IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKKysrIGIvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCkBAIC00OSw3ICs0OSw2IEBACiAjaW5jbHVk
ZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgogI2luY2x1
ZGUgIk5vdGlmaWNhdGlvblByZXNlbnRlckltcGwuaCIKLSNpbmNsdWRlICJTcGVlY2hJbnB1dENs
aWVudEltcGwuaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KIApAQCAtNzQsNiArNzMsNyBAQCBjbGFzcyBBdXRvRmlsbFBvcHVwTWVudUNsaWVu
dDsKIGNsYXNzIENvbnRleHRNZW51Q2xpZW50SW1wbDsKIGNsYXNzIERldmljZU9yaWVudGF0aW9u
Q2xpZW50UHJveHk7CiBjbGFzcyBEcmFnU2Nyb2xsVGltZXI7CitjbGFzcyBTcGVlY2hJbnB1dENs
aWVudEltcGw7CiBjbGFzcyBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0OwogY2xhc3MgV2ViRGV2VG9v
bHNBZ2VudENsaWVudDsKIGNsYXNzIFdlYkRldlRvb2xzQWdlbnRQcml2YXRlOwpAQCAtNTM3LDcg
KzUzNyw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IFdlYklucHV0RXZlbnQqIG1fY3Vy
cmVudElucHV0RXZlbnQ7CiAKICNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQotICAgIFNwZWVjaElu
cHV0Q2xpZW50SW1wbCBtX3NwZWVjaElucHV0Q2xpZW50OworICAgIE93blB0cjxTcGVlY2hJbnB1
dENsaWVudEltcGw+IG1fc3BlZWNoSW5wdXRDbGllbnQ7CiAjZW5kaWYKICAgICAvLyBJZiB3ZSBh
dHRlbXB0IHRvIGZldGNoIHRoZSBvbi1zY3JlZW4gR3JhcGhpY3NDb250ZXh0M0QgYmVmb3JlCiAg
ICAgLy8gdGhlIGNvbXBvc2l0b3IgaGFzIGJlZW4gdHVybmVkIG9uLCB3ZSBuZWVkIHRvIGluc3Rh
bnRpYXRlIGl0CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cgYi9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKaW5kZXggMmEzMTYyMTU5ZWM0ZTI0YWQwOWRlODlkZTNlMDlkMjJlOWMzNTZh
Yy4uMDRmOTY0NTA0NmNmZWU4NTI0Mjc1MWJmMTY0ZDA1OTE2N2NmMDA2ZCAxMDA2NDQKLS0tIGEv
V2ViS2l0VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE2IEBACisyMDEwLTEwLTA2ICBMZWFuZHJvIEdyYWNpw6EgR2lsICA8bGVhbmRyb2dyYWNp
YUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkZWQgYSBzZWNvbmQgcGFyYW1ldGVyIHRvIHNldE1vY2tTcGVlY2hJbnB1dFJl
c3VsdCBmb3IKKyAgICAgICAgdGhlIGxhbmd1YWdlIHVzZWQgaW4gc3BlZWNoIHJlY29nbml0aW9u
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDcwODkK
KworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKHNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdENhbGxiYWNrKToKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChM
YXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KToKKwogMjAxMC0x
MC0wNSAgRGFuaWVsIEJhdGVzICA8ZGJhdGVzQHJpbS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgRGF2aWQgS2lsemVyLgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
TGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5
b3V0VGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IGVlNDQzMjViNmQ1NTA3N2YzNWY2NGI3ZGQ4YjIx
MTVhZGNlMTczNzAuLjdkZTU3MzIzNmUwYzJmNjA5ZjhmZDhiZjkyZjgyZmI4ZDg5ZTliNmYgMTAw
NjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVy
LmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxl
ci5jcHAKQEAgLTEwNzAsMTQgKzEwNzAsMTcgQEAgc3RhdGljIEpTVmFsdWVSZWYgc2V0TW9ja0dl
b2xvY2F0aW9uRXJyb3JDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3QKIAog
c3RhdGljIEpTVmFsdWVSZWYgc2V0TW9ja1NwZWVjaElucHV0UmVzdWx0Q2FsbGJhY2soSlNDb250
ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2Jq
ZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwg
SlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewotICAgIGlmIChhcmd1bWVudENvdW50IDwgMSkKKyAg
ICBpZiAoYXJndW1lbnRDb3VudCA8IDIpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVm
aW5lZChjb250ZXh0KTsKIAogICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiByZXN1bHQoQWRv
cHQsIEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgYXJndW1lbnRzWzBdLCBleGNlcHRpb24p
KTsKICAgICBBU1NFUlQoISpleGNlcHRpb24pOwogCisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdS
ZWY+IGxhbmd1YWdlKEFkb3B0LCBKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIGFyZ3VtZW50
c1sxXSwgZXhjZXB0aW9uKSk7CisgICAgQVNTRVJUKCEqZXhjZXB0aW9uKTsKKwogICAgIExheW91
dFRlc3RDb250cm9sbGVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRy
b2xsZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOwotICAgIGNvbnRyb2xsZXIt
PnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdChyZXN1bHQuZ2V0KCkpOworICAgIGNvbnRyb2xsZXIt
PnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdChyZXN1bHQuZ2V0KCksIGxhbmd1YWdlLmdldCgpKTsK
IAogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KZGlmZiAtLWdp
dCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmggYi9X
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCmluZGV4IDc1
NWEyYjJiOWM2ODg1Yjc5NmEwM2U1MmQ1MDIwZDg4YjQzZGQ5OGIuLmJjY2MwYTA2MGVlZjg3OTg2
MjQwMjU5MThmMzk2NjYyMjI1ODhkZTEgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaApAQCAtOTQsNyArOTQsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRNb2NrRGV2aWNlT3JpZW50YXRpb24oYm9vbCBjYW5Qcm92aWRlQWxwaGEsIGRv
dWJsZSBhbHBoYSwgYm9vbCBjYW5Qcm92aWRlQmV0YSwgZG91YmxlIGJldGEsIGJvb2wgY2FuUHJv
dmlkZUdhbW1hLCBkb3VibGUgZ2FtbWEpOwogICAgIHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9uRXJy
b3IoaW50IGNvZGUsIEpTU3RyaW5nUmVmIG1lc3NhZ2UpOwogICAgIHZvaWQgc2V0TW9ja0dlb2xv
Y2F0aW9uUG9zaXRpb24oZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3VibGUg
YWNjdXJhY3kpOwotICAgIHZvaWQgc2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KEpTU3RyaW5nUmVm
IHJlc3VsdCk7CisgICAgdm9pZCBzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoSlNTdHJpbmdSZWYg
cmVzdWx0LCBKU1N0cmluZ1JlZiBsYW5ndWFnZVRhZyk7CiAgICAgdm9pZCBzZXRQZXJzaXN0ZW50
VXNlclN0eWxlU2hlZXRMb2NhdGlvbihKU1N0cmluZ1JlZiBwYXRoKTsKICAgICB2b2lkIHNldFBs
dWdpbnNFbmFibGVkKGJvb2wgZmxhZyk7CiAgICAgdm9pZCBzZXRQb3B1cEJsb2NraW5nRW5hYmxl
ZChib29sIGZsYWcpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IGQ3Nzc0ZTk5NjdiZTg2
OWE0ZDM1MzY5NmZjMDRjYzNmZGY5ODFkZGEuLjNjY2I3NDI2NDBmNGQyZmExNDJhNzE4OWIzOGVm
MzNlYmQ0MGZjOTQgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKQEAgLTE1MjUsMTAgKzE1MjUs
MTAgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6YWJvcnRNb2RhbChjb25zdCBDcHBBcmd1
bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWEKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50
cywgQ3BwVmFyaWFudCogcmVzdWx0KQogewogICAgIHJlc3VsdC0+c2V0TnVsbCgpOwotICAgIGlm
IChhcmd1bWVudHMuc2l6ZSgpIDwgMSB8fCAhYXJndW1lbnRzWzBdLmlzU3RyaW5nKCkpCisgICAg
aWYgKGFyZ3VtZW50cy5zaXplKCkgPCAyIHx8ICFhcmd1bWVudHNbMF0uaXNTdHJpbmcoKSB8fCAh
YXJndW1lbnRzWzFdLmlzU3RyaW5nKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fc3BlZWNo
SW5wdXRDb250cm9sbGVyTW9jay0+c2V0TW9ja1JlY29nbml0aW9uUmVzdWx0KGNwcFZhcmlhbnRU
b1dlYlN0cmluZyhhcmd1bWVudHNbMF0pKTsKKyAgICBtX3NwZWVjaElucHV0Q29udHJvbGxlck1v
Y2stPnNldE1vY2tSZWNvZ25pdGlvblJlc3VsdChjcHBWYXJpYW50VG9XZWJTdHJpbmcoYXJndW1l
bnRzWzBdKSwgY3BwVmFyaWFudFRvV2ViU3RyaW5nKGFyZ3VtZW50c1sxXSkpOwogfQogCiBXZWJL
aXQ6OldlYlNwZWVjaElucHV0Q29udHJvbGxlciogTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNwZWVj
aElucHV0Q29udHJvbGxlcihXZWJLaXQ6OldlYlNwZWVjaElucHV0TGlzdGVuZXIqIGxpc3RlbmVy
KQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RD
b250cm9sbGVyR3RrLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRU
ZXN0Q29udHJvbGxlckd0ay5jcHAKaW5kZXggZDgzMTA3NjNkZTY2NGYzOTUyNDA0NGU3Zjg1Zjc3
NTViZDQ4ZjFjMC4uMmZjZjQzMDk0MDcxNjNkZjUyZDQzMmU4ZGI3ZjBlNDI3NWFlMzMzNSAxMDA2
NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9s
bGVyR3RrLmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVz
dENvbnRyb2xsZXJHdGsuY3BwCkBAIC00ODgsNyArNDg4LDcgQEAgdm9pZCBMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6c2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKGJvb2wgYWxsb3cpCiAgICAgc2V0R2Vv
bG9jYXRpb25QZXJtaXNzaW9uQ29tbW9uKGFsbG93KTsKIH0KIAotdm9pZCBMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6c2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KEpTU3RyaW5nUmVmIHJlc3VsdCkKK3Zv
aWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdChKU1N0cmlu
Z1JlZiByZXN1bHQsIEpTU3RyaW5nUmVmIGxhbmd1YWdlVGFnKQogewogICAgIC8vIEZJWE1FOiBJ
bXBsZW1lbnQgZm9yIHNwZWVjaCBpbnB1dCBsYXlvdXQgdGVzdHMuCiAgICAgLy8gU2VlIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTQ4NS4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70128</attachid>
            <date>2010-10-07 12:30:30 -0700</date>
            <delta_ts>2010-10-08 06:58:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47089-20101007203028.patch</filename>
            <type>text/plain</type>
            <size>35139</size>
            <attacher name="Leandro Graciá Gil">leandrogracia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1ZjY3ODIxZTExZDdiNmI2ODc3NmNmMzlmZThlZGUzNzA5Yjg3MzUwLi43Njk3MTEy
MDNhYzJhMmI3Yzk1MmQ0Y2VmNzJlZGQ0ZmNlNDBhMmIwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTAtMTAtMDcgIExlYW5kcm8gR3JhY2nDoSBHaWwgIDxsZWFuZHJvZ3JhY2lhQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGRlZCBhIGxheW91dCB0ZXN0IGZvciB0aGUgbGFuZ3VhZ2UgdGFnIGluIHNwZWVjaCBpbnB1dC4g
VXBkYXRlZAorICAgICAgICB0aGUgc3BlZWNoIGJ1dHRvbiB0ZXN0IHRvIGluY2x1ZGUgdGhlIG5l
dyBsYW5ndWFnZSBwYXJhbWV0ZXIgaW4gdGhlCisgICAgICAgIG1vY2sgcmVzdWx0LgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDcwODkKKworICAgICAg
ICAqIGZhc3Qvc3BlZWNoL2lucHV0LXRleHQtbGFuZ3VhZ2UtdGFnLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1sYW5ndWFnZS10YWcuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1zcGVlY2hidXR0b24uaHRt
bDogQWRkZWQgbGFuZ3VhZ2UgcGFyYW1ldGVyLgorICAgICAgICAqIGZhc3Qvc3BlZWNoL3NwZWVj
aC1idXR0b24taWdub3JlLWdlbmVyYXRlZC1ldmVudHMuaHRtbDogQWRkZWQgbGFuZ3VhZ2UgcGFy
YW1ldGVyLgorCiAyMDEwLTA5LTIxICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlh
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBGbGVpemFjaC4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL2lucHV0LXRleHQtbGFuZ3VhZ2UtdGFnLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL2lucHV0LXRleHQtbGFuZ3VhZ2UtdGFnLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYTM3YmZiYTM3NDU3YzQ5OGFlNGNiOGM0MTMxZjM5ZjIy
MDRjYzczCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvaW5wdXQt
dGV4dC1sYW5ndWFnZS10YWctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTMgQEAKK1Rlc3RzIGZv
ciBsYW5ndWFnZSB0YWcgaW5oZXJpdGFuY2UgYW5kIHZhbGlkYXRpb24gaW4gc3BlZWNoIGJ1dHRv
bnMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJzcGVlY2hJbnB1dE5vbmUiKS52YWx1ZSBpcyAiZXJyb3I6IG5vIHJlc3VsdCBm
b3IgdGhlIHByb3ZpZGVkIGxhbmd1YWdlIgorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
c3BlZWNoSW5wdXRFbGVtZW50IikudmFsdWUgaXMgIlBpY3R1cmVzIG9mIHRoZSBtb29uIgorUEFT
UyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3BlZWNoSW5wdXRJbmhlcml0ZWQiKS52YWx1ZSBp
cyAi5pyI44Gu5YaZ55yfIgorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3BlZWNoSW5w
dXRJbnZhbGlkIikudmFsdWUgaXMgImVycm9yOiBubyByZXN1bHQgZm9yIHRoZSBwcm92aWRlZCBs
YW5ndWFnZSIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1sYW5n
dWFnZS10YWcuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL2lucHV0LXRleHQtbGFuZ3Vh
Z2UtdGFnLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTY3NWU1YTJhZjU0YzFkMzhhOTgxNDhlMmNhMTU0ZDM2
ODhhMzlhZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL2lucHV0
LXRleHQtbGFuZ3VhZ2UtdGFnLmh0bWwKQEAgLTAsMCArMSw2MiBAQAorPCFET0NUWVBFIEhUTUwg
UFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8bWV0YSBjaGFyc2V0PSJ1
dGYtOCI+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vanMvcmVzb3Vy
Y2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRp
b24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2ph
dmFzY3JpcHQiPgorZGVzY3JpcHRpb24oJ1Rlc3RzIGZvciBsYW5ndWFnZSB0YWcgaW5oZXJpdGFu
Y2UgYW5kIHZhbGlkYXRpb24gaW4gc3BlZWNoIGJ1dHRvbnMuJyk7CisKKy8vIE5vdGU6IHRlc3Qg
Y2FzZXMgYXJlIHNlcXVlbnRpYWwgdG8gZW5zdXJlIHRoYXQgbm8gbmV3IHJlY29nbml0aW9uIHN0
YXJ0cyB3aGVuIGFub3RoZXIgcmVjb2duaXRpb24gcmVjb3JkaW5nIGlzIGFjdGl2ZS4KK2Z1bmN0
aW9uIG9uQ2hhbmdlTm9uZSgpIHsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2RvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJzcGVlY2hJbnB1dE5vbmUiKS52YWx1ZScsICdlcnJvcjogbm8gcmVz
dWx0IGZvciB0aGUgcHJvdmlkZWQgbGFuZ3VhZ2UnKTsKKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9u
KCkgeyBzcGVlY2hCdXR0b25DbGljaygnc3BlZWNoSW5wdXRFbGVtZW50Jyk7IH0sIDUwKTsKK30K
KworZnVuY3Rpb24gb25DaGFuZ2VFbGVtZW50KCkgeworICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygnZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNwZWVjaElucHV0RWxlbWVudCIpLnZhbHVlJywg
J1BpY3R1cmVzIG9mIHRoZSBtb29uJyk7CisgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc3Bl
ZWNoQnV0dG9uQ2xpY2soJ3NwZWVjaElucHV0SW5oZXJpdGVkJyk7IH0sIDUwKTsKK30KKworZnVu
Y3Rpb24gb25DaGFuZ2VJbmhlcml0ZWQoKSB7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3BlZWNoSW5wdXRJbmhlcml0ZWQiKS52YWx1ZScsICfm
nIjjga7lhpnnnJ8nKTsKKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzcGVlY2hCdXR0b25D
bGljaygnc3BlZWNoSW5wdXRJbnZhbGlkJyk7IH0sIDUwKTsKK30KKworZnVuY3Rpb24gb25DaGFu
Z2VJbnZhbGlkKCkgeworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInNwZWVjaElucHV0SW52YWxpZCIpLnZhbHVlJywgJ2Vycm9yOiBubyByZXN1bHQg
Zm9yIHRoZSBwcm92aWRlZCBsYW5ndWFnZScpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCitm
dW5jdGlvbiBzcGVlY2hCdXR0b25DbGljayhlbGVtZW50SWQpIHsKKyAgICB2YXIgZWxlbWVudCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJZCk7CisgICAgdmFyIHggPSBlbGVtZW50
Lm9mZnNldExlZnQgKyBlbGVtZW50Lm9mZnNldFdpZHRoIC0gNDsKKyAgICB2YXIgeSA9IGVsZW1l
bnQub2Zmc2V0VG9wICsgZWxlbWVudC5vZmZzZXRIZWlnaHQgLyAyOworICAgIGV2ZW50U2VuZGVy
Lm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgIGV2
ZW50U2VuZGVyLm1vdXNlVXAoKTsKK30KKworZnVuY3Rpb24gcnVuKCkgeworICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIgJiYgd2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdCgnUGljdHVyZXMg
b2YgdGhlIG1vb24nLCAnZW4tR0InKTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0
TW9ja1NwZWVjaElucHV0UmVzdWx0KCfmnIjjga7lhpnnnJ8nLCAnamEnKTsKKyAgICAgICAgc3Bl
ZWNoQnV0dG9uQ2xpY2soJ3NwZWVjaElucHV0Tm9uZScpOworICAgIH0KK30KKword2luZG93Lm9u
bG9hZCA9IHJ1bjsKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK3dpbmRvdy5zdWNjZXNz
ZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8aW5wdXQgaWQ9InNwZWVjaElucHV0Tm9u
ZSIgeC13ZWJraXQtc3BlZWNoIG9ud2Via2l0c3BlZWNoY2hhbmdlPSJvbkNoYW5nZU5vbmUoKSI+
Cis8aW5wdXQgaWQ9InNwZWVjaElucHV0RWxlbWVudCIgeC13ZWJraXQtc3BlZWNoIG9ud2Via2l0
c3BlZWNoY2hhbmdlPSJvbkNoYW5nZUVsZW1lbnQoKSIgbGFuZz0iZW4tR0IiPgorPGRpdiBsYW5n
PSJqYSI+IDxpbnB1dCBpZD0ic3BlZWNoSW5wdXRJbmhlcml0ZWQiIHgtd2Via2l0LXNwZWVjaCBv
bndlYmtpdHNwZWVjaGNoYW5nZT0ib25DaGFuZ2VJbmhlcml0ZWQoKSI+IDwvZGl2PgorPGlucHV0
IGlkPSJzcGVlY2hJbnB1dEludmFsaWQiIHgtd2Via2l0LXNwZWVjaCBvbndlYmtpdHNwZWVjaGNo
YW5nZT0ib25DaGFuZ2VJbnZhbGlkKCkiIGxhbmc9IjEzMzckw74zzrtrIj4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL2lucHV0LXRleHQtc3Bl
ZWNoYnV0dG9uLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9pbnB1dC10ZXh0LXNwZWVj
aGJ1dHRvbi5odG1sCmluZGV4IDZmNWJjNGIxMjFmYjRmOWQ5ZGRhNmMzMzFmOGIyNmRjMWNkNDM5
OTQuLjIyOWNkNGRlMGI4MThiZTUxMThkMjQyMTVkYmJkZDZkYjg5ODFjZTYgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL2lucHV0LXRleHQtc3BlZWNoYnV0dG9uLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1zcGVlY2hidXR0b24uaHRtbApA
QCAtMzIsNyArMzIsNyBAQCBmdW5jdGlvbiBvbldlYmtpdFNwZWVjaENoYW5nZSgpIHsKIAogZnVu
Y3Rpb24gcnVuKCkgewogICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIgJiYgd2lu
ZG93LmV2ZW50U2VuZGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldE1vY2tT
cGVlY2hJbnB1dFJlc3VsdCgnUGljdHVyZXMgb2YgdGhlIG1vb24nKTsKKyAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuc2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KCdQaWN0dXJlcyBvZiB0aGUg
bW9vbicsICdlbicpOwogCiAgICAgICAgIC8vIENsaWNraW5nIHRoZSBzcGVlY2ggYnV0dG9uIHNo
b3VsZCBmaWxsIGluIG1vY2sgc3BlZWNoLXJlY29nbml6ZWQgdGV4dC4KICAgICAgICAgdmFyIGlu
cHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NwZWVjaElucHV0Jyk7CkBAIC00OSw2ICs0
OSw2IEBAIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKIHdpbmRvdy5zdWNjZXNzZnVsbHlQ
YXJzZWQgPSB0cnVlOwogPC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08aW5wdXQgaWQ9J3NwZWVjaElucHV0JyB4LXdlYmtp
dC1zcGVlY2ggb253ZWJraXRzcGVlY2hjaGFuZ2U9Im9uV2Via2l0U3BlZWNoQ2hhbmdlKCkiPgor
PGlucHV0IGlkPSdzcGVlY2hJbnB1dCcgeC13ZWJraXQtc3BlZWNoIG9ud2Via2l0c3BlZWNoY2hh
bmdlPSJvbldlYmtpdFNwZWVjaENoYW5nZSgpIiBsYW5nPSJlbiI+CiA8L2JvZHk+CiA8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9zcGVlY2gtYnV0dG9uLWlnbm9y
ZS1nZW5lcmF0ZWQtZXZlbnRzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9zcGVlY2gt
YnV0dG9uLWlnbm9yZS1nZW5lcmF0ZWQtZXZlbnRzLmh0bWwKaW5kZXggYjliOGVjMzY2MDU1Nzlm
MmIxMjZkNmYxZGEzNTYwYzY3MmFkMmI3MS4uYTA5MWQzYWM3Yjc1NTNjODhiMjAwNDFlN2MyMTFm
NDBlN2YwYjlmNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvc3BlZWNoLWJ1
dHRvbi1pZ25vcmUtZ2VuZXJhdGVkLWV2ZW50cy5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
c3BlZWNoL3NwZWVjaC1idXR0b24taWdub3JlLWdlbmVyYXRlZC1ldmVudHMuaHRtbApAQCAtNDks
NyArNDksNyBAQCBmdW5jdGlvbiBzZXR1cERpc3BhdGNoRXZlbnRUZXN0KCkgewogZnVuY3Rpb24g
cnVuKCkgewogICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIgJiYgd2luZG93LmV2
ZW50U2VuZGVyKSB7CiAgICAgICAgIC8vIFJ1bm5pbmcgaW4gRFJULCB0ZXN0IHRoZSBldmVudFNl
bmRlciBjYXNlLgotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRNb2NrU3BlZWNoSW5w
dXRSZXN1bHQoJ1BpY3R1cmVzIG9mIHRoZSBtb29uJyk7CisgICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdCgnUGljdHVyZXMgb2YgdGhlIG1vb24nLCAn
ZW4nKTsKICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NwZWVjaElucHV0Jykub253
ZWJraXRzcGVlY2hjaGFuZ2UgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygnZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNwZWVjaElucHV0IikudmFsdWUn
LCAnUGljdHVyZXMgb2YgdGhlIG1vb24nKTsKIApAQCAtNjgsNiArNjgsNiBAQCB3aW5kb3cuanNU
ZXN0SXNBc3luYyA9IHRydWU7CiB3aW5kb3cuc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKIDwv
c2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgotPGlucHV0IGlkPSdzcGVlY2hJbnB1dCcgeC13ZWJraXQtc3BlZWNoPgorPGlucHV0
IGlkPSdzcGVlY2hJbnB1dCcgeC13ZWJraXQtc3BlZWNoIGxhbmc9ImVuIj4KIDwvYm9keT4KIDwv
aHRtbD4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggZGU5MWY0ZDM1ZGEwNjAyM2VkMGNmNzAzYmQxOTVmNWY4NzlhYjNiOS4uZDRjZTU3OWFj
YTk4ZmYxNDAxYmEwN2IyOGVkYjc1ODEzN2U3ZmY5OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAxMC0xMC0w
NyAgTGVhbmRybyBHcmFjacOhIEdpbCAgPGxlYW5kcm9ncmFjaWFAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBhdGNoIHRoZSBj
dXJyZW50IHNwZWVjaCBpbnB1dCBpbXBsZW1lbnRhdGlvbiB0byB1c2UgYW5kIHZhbGlkYXRlIHRo
ZQorICAgICAgICBuZWFyZXN0IGxhbmd1YWdlIHRhZy4gVGhlIGxhbmd1YWdlIGlzIG5vdyBwYXNz
ZWQgdG8gdGhlIHN0YXJ0UmVjb2duaXRpb24KKyAgICAgICAgbWV0aG9kcyBzbyB0aGF0IGxhbmd1
YWdlLXNwZWNpZmljIHJlY29nbml0aW9uIGNvdWxkIGJlIHVzZWQuIEFsc28gYWRkZWQKKyAgICAg
ICAgYSBzZWNvbmQgcGFyYW1ldGVyIHRvIHNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdCBmb3IgdGhl
IGxhbmd1YWdlIHVzZWQgaW4KKyAgICAgICAgc3BlZWNoIHJlY29nbml0aW9uLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDcwODkKKworICAgICAgICBU
ZXN0OiBmYXN0L3NwZWVjaC9pbnB1dC10ZXh0LWxhbmd1YWdlLXRhZy5odG1sCisKKyAgICAgICAg
KiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojpjb21wdXRlSW5o
ZXJpdGVkTGFuZ3VhZ2UpOiBpbmNsdWRlcyBhIGJyaWVmIGNoYXJhY3RlcgorICAgICAgICAgIHZh
bGlkYXRpb24gZm9yIHRoZSBCQ1AgNDcgbGFuZ3VhZ2UgdGFnLgorICAgICAgICAqIHBhZ2UvU3Bl
ZWNoSW5wdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoSW5wdXQ6OnN0YXJ0UmVjb2du
aXRpb24pOgorICAgICAgICAqIHBhZ2UvU3BlZWNoSW5wdXQuaDoKKyAgICAgICAgKiBwYWdlL1Nw
ZWVjaElucHV0Q2xpZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9TcGVlY2hJbnB1dENs
aWVudE1vY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoSW5wdXRDbGllbnRNb2NrOjpz
dGFydFJlY29nbml0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaElucHV0Q2xpZW50TW9j
azo6c2V0UmVjb2duaXRpb25SZXN1bHQpOiByZXN1bHRzIGFyZQorICAgICAgICAgIG5vdyBzdG9y
ZWQgYnkgbGFuZ3VhZ2UgdXNpbmcgYSBoYXNoIG1hcC4KKyAgICAgICAgKFdlYkNvcmU6OlNwZWVj
aElucHV0Q2xpZW50TW9jazo6dGltZXJGaXJlZCk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9T
cGVlY2hJbnB1dENsaWVudE1vY2suaDoKKyAgICAgICAgKiByZW5kZXJpbmcvVGV4dENvbnRyb2xJ
bm5lckVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb250cm9sSW5uZXJFbGVt
ZW50OjphdHRhY2hJbm5lckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoRmllbGRD
YW5jZWxCdXR0b25FbGVtZW50OjpkZXRhY2gpOgorICAgICAgICAoV2ViQ29yZTo6U3BpbkJ1dHRv
bkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRG
aWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOgorICAgICAgICAo
V2ViQ29yZTo6SW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQ6OmRldGFjaCk6CisKIDIwMTAt
MTAtMDUgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IENocmlzIEZsZWl6YWNoLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vRWxl
bWVudC5jcHAgYi9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCA2MGExMDYzYzRkMjhkMjgy
ZjY3NzM2NjczYzQzY2NkZThlNmFjZmY0Li4wMmU1OWVkMmI2ZjdkNTNhYjhjMGUxNWExZDEwZTMw
MWMzMGIzYTgyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9XZWJD
b3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMTQ2OCw2ICsxNDY4LDE1IEBAIEF0b21pY1N0cmluZyBF
bGVtZW50Ojpjb21wdXRlSW5oZXJpdGVkTGFuZ3VhZ2UoKSBjb25zdAogICAgICAgICBuID0gbi0+
cGFyZW50KCk7CiAgICAgfQogCisgICAgaWYgKCF2YWx1ZS5pc051bGwoKSAmJiAhdmFsdWUuaXNF
bXB0eSgpKSB7CisgICAgICAgIC8vIE9ubHkgQS1aYS16MC05IGFuZCAnLScgYXJlIGFsbG93ZWQg
aW4gdGhlIGxhbmd1YWdlIHRhZyAoc2VlIEJDUCA0NykKKyAgICAgICAgQ1N0cmluZyBsYW5ndWFn
ZVRhZyA9IHZhbHVlLnN0cmluZygpLmFzY2lpKCk7CisgICAgICAgIGZvciAoY29uc3QgY2hhciAq
cCA9IGxhbmd1YWdlVGFnLmRhdGEoKTsgKnAgIT0gJ1wwJzsgKytwKSB7CisgICAgICAgICAgICBp
ZiAoIWlzYWxudW0oKnApICYmICpwICE9ICctJykKKyAgICAgICAgICAgICAgICByZXR1cm4gQXRv
bWljU3RyaW5nKCk7CisgICAgICAgIH0KKyAgICB9CisKICAgICByZXR1cm4gdmFsdWU7CiB9CiAK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dC5jcHAgYi9XZWJDb3JlL3BhZ2Uv
U3BlZWNoSW5wdXQuY3BwCmluZGV4IDIzNDc5MWJjNGIxM2Y0M2RmOWQxNzM5ZDVkMjA1ZjlhYTI3
ZTIwNzIuLmNjNWUwZjk3ZmJhYmY5YWZhM2Y0MzU5YzcyNmJhYzg3ZTUzNDE4Y2YgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dC5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL1NwZWVj
aElucHV0LmNwcApAQCAtOTMsMTAgKzkzLDEwIEBAIHZvaWQgU3BlZWNoSW5wdXQ6OnNldFJlY29n
bml0aW9uUmVzdWx0KGludCBsaXN0ZW5lcklkLCBjb25zdCBTdHJpbmcmIHJlc3VsdCkKICAgICAg
ICAgbV9saXN0ZW5lcnMuZ2V0KGxpc3RlbmVySWQpLT5zZXRSZWNvZ25pdGlvblJlc3VsdChsaXN0
ZW5lcklkLCByZXN1bHQpOwogfQogCi1ib29sIFNwZWVjaElucHV0OjpzdGFydFJlY29nbml0aW9u
KGludCBsaXN0ZW5lcklkLCBjb25zdCBJbnRSZWN0JiBlbGVtZW50UmVjdCkKK2Jvb2wgU3BlZWNo
SW5wdXQ6OnN0YXJ0UmVjb2duaXRpb24oaW50IGxpc3RlbmVySWQsIGNvbnN0IFN0cmluZyYgbGFu
Z3VhZ2UsIGNvbnN0IEludFJlY3QmIGVsZW1lbnRSZWN0KQogewogICAgIEFTU0VSVChtX2xpc3Rl
bmVycy5jb250YWlucyhsaXN0ZW5lcklkKSk7Ci0gICAgcmV0dXJuIG1fY2xpZW50LT5zdGFydFJl
Y29nbml0aW9uKGxpc3RlbmVySWQsIGVsZW1lbnRSZWN0KTsKKyAgICByZXR1cm4gbV9jbGllbnQt
PnN0YXJ0UmVjb2duaXRpb24obGlzdGVuZXJJZCwgbGFuZ3VhZ2UsIGVsZW1lbnRSZWN0KTsKIH0K
IAogdm9pZCBTcGVlY2hJbnB1dDo6c3RvcFJlY29yZGluZyhpbnQgbGlzdGVuZXJJZCkKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dC5oIGIvV2ViQ29yZS9wYWdlL1NwZWVjaElu
cHV0LmgKaW5kZXggZDEwYjc4OWFhZDI3MzllZGQzYmY0NTMwZTdjNmUwMGM0ZTJkYWU4YS4uOGI0
MjZmNTYzMTM2ZWQ2NTFkZDY0NTZlODM1YjRkNDQ1M2FiODAxMiAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9wYWdlL1NwZWVjaElucHV0LmgKKysrIGIvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0LmgKQEAg
LTYxLDcgKzYxLDcgQEAgcHVibGljOgogICAgIHZvaWQgdW5yZWdpc3Rlckxpc3RlbmVyKGludCk7
CiAKICAgICAvLyBNZXRob2RzIGludm9rZWQgYnkgdGhlIGlucHV0IGVsZW1lbnRzLgotICAgIGJv
b2wgc3RhcnRSZWNvZ25pdGlvbihpbnQsIGNvbnN0IEludFJlY3QmKTsKKyAgICBib29sIHN0YXJ0
UmVjb2duaXRpb24oaW50LCBjb25zdCBTdHJpbmcmLCBjb25zdCBJbnRSZWN0Jik7CiAgICAgdm9p
ZCBzdG9wUmVjb3JkaW5nKGludCk7CiAgICAgdm9pZCBjYW5jZWxSZWNvZ25pdGlvbihpbnQpOwog
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXRDbGllbnQuaCBiL1dlYkNvcmUv
cGFnZS9TcGVlY2hJbnB1dENsaWVudC5oCmluZGV4IGQ1ZmRhMTdmYWEyY2Q3OTVhZjQ0ZjUzYTQ2
ZmNiYTU5NzQxYWI3NmMuLjM4YmZlNGZjNDU1MjlmMDA3MjI0M2ZlYWQ4ZjdiYzZmYTlkYWE2ZmIg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dENsaWVudC5oCisrKyBiL1dlYkNv
cmUvcGFnZS9TcGVlY2hJbnB1dENsaWVudC5oCkBAIC0zMyw2ICszMywxMCBAQAogCiAjaWYgRU5B
QkxFKElOUFVUX1NQRUVDSCkKIAorbmFtZXNwYWNlIFdURiB7CitjbGFzcyBTdHJpbmc7Cit9CisK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW50UmVjdDsKQEAgLTQ4LDcgKzUyLDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRMaXN0ZW5lcihTcGVlY2hJbnB1dExpc3RlbmVy
KikgPSAwOwogCiAgICAgLy8gU3RhcnRzIHNwZWVjaCByZWNvZ25pdGlvbiBhbmQgYXVkaW8gcmVj
b3JkaW5nLgotICAgIHZpcnR1YWwgYm9vbCBzdGFydFJlY29nbml0aW9uKGludCByZXF1ZXN0SWQs
IGNvbnN0IEludFJlY3QmIGVsZW1lbnRSZWN0KSA9IDA7CisgICAgdmlydHVhbCBib29sIHN0YXJ0
UmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCwgY29uc3QgV1RGOjpTdHJpbmcmIGxhbmd1YWdlLCBj
b25zdCBJbnRSZWN0JiBlbGVtZW50UmVjdCkgPSAwOwogCiAgICAgLy8gU3RvcHMgYXVkaW8gcmVj
b3JkaW5nIGFuZCBwZXJmb3JtcyByZWNvZ25pdGlvbiB3aXRoIHRoZSBhdWRpbyByZWNvcmRlZCB1
bnRpbCBub3cKICAgICAvLyAoZG9lcyBub3QgZGlzY2FyZCBhdWRpbykuCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svU3BlZWNoSW5wdXRDbGllbnRNb2NrLmNwcCBiL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9TcGVlY2hJbnB1dENsaWVudE1vY2suY3BwCmluZGV4IDZiNjQ5NDJmMTdi
OTI1YjQ5ZWYwOTIxNDdjMGExNmEwN2YwZDdjY2MuLjFjM2M4M2YyZTg1YjcxOTg0YmZjMGU1MWUz
MGIwYTk1ZWJiMmM5NjcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TcGVlY2hJ
bnB1dENsaWVudE1vY2suY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TcGVlY2hJbnB1
dENsaWVudE1vY2suY3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJTcGVlY2hJbnB1dENsaWVudE1vY2suaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CiAKICNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQogCkBAIC01MCwxMiArNTEsMTMg
QEAgdm9pZCBTcGVlY2hJbnB1dENsaWVudE1vY2s6OnNldExpc3RlbmVyKFNwZWVjaElucHV0TGlz
dGVuZXIqIGxpc3RlbmVyKQogICAgIG1fbGlzdGVuZXIgPSBsaXN0ZW5lcjsKIH0KIAotYm9vbCBT
cGVlY2hJbnB1dENsaWVudE1vY2s6OnN0YXJ0UmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCwgY29u
c3QgSW50UmVjdCYpCitib29sIFNwZWVjaElucHV0Q2xpZW50TW9jazo6c3RhcnRSZWNvZ25pdGlv
bihpbnQgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlLCBjb25zdCBJbnRSZWN0JikK
IHsKICAgICBpZiAobV90aW1lci5pc0FjdGl2ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgbV9yZXF1ZXN0SWQgPSByZXF1ZXN0SWQ7CiAgICAgbV9yZWNvcmRpbmcgPSB0cnVlOworICAg
IG1fbGFuZ3VhZ2UgPSBsYW5ndWFnZTsKICAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdCgwKTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTgwLDkgKzgyLDEwIEBAIHZvaWQgU3BlZWNoSW5wdXRDbGll
bnRNb2NrOjpjYW5jZWxSZWNvZ25pdGlvbihpbnQgcmVxdWVzdElkKQogICAgIH0KIH0KIAotdm9p
ZCBTcGVlY2hJbnB1dENsaWVudE1vY2s6OnNldFJlY29nbml0aW9uUmVzdWx0KGNvbnN0IFN0cmlu
ZyYgcmVzdWx0KQordm9pZCBTcGVlY2hJbnB1dENsaWVudE1vY2s6OnNldFJlY29nbml0aW9uUmVz
dWx0KGNvbnN0IFN0cmluZyYgcmVzdWx0LCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlKQogewotICAg
IG1fcmVjb2duaXRpb25SZXN1bHQgPSByZXN1bHQ7CisgICAgaWYgKCFsYW5ndWFnZS5pc0VtcHR5
KCkpCisgICAgICAgIG1fcmVjb2duaXRpb25SZXN1bHQuc2V0KGxhbmd1YWdlLCByZXN1bHQpOwog
fQogCiB2b2lkIFNwZWVjaElucHV0Q2xpZW50TW9jazo6dGltZXJGaXJlZChXZWJDb3JlOjpUaW1l
cjxTcGVlY2hJbnB1dENsaWVudE1vY2s+KikKQEAgLTkyLDcgKzk1LDExIEBAIHZvaWQgU3BlZWNo
SW5wdXRDbGllbnRNb2NrOjp0aW1lckZpcmVkKFdlYkNvcmU6OlRpbWVyPFNwZWVjaElucHV0Q2xp
ZW50TW9jaz4qKQogICAgICAgICBtX2xpc3RlbmVyLT5kaWRDb21wbGV0ZVJlY29yZGluZyhtX3Jl
cXVlc3RJZCk7CiAgICAgICAgIG1fdGltZXIuc3RhcnRPbmVTaG90KDApOwogICAgIH0gZWxzZSB7
Ci0gICAgICAgIG1fbGlzdGVuZXItPnNldFJlY29nbml0aW9uUmVzdWx0KG1fcmVxdWVzdElkLCBt
X3JlY29nbml0aW9uUmVzdWx0KTsKKyAgICAgICAgaWYgKG1fbGFuZ3VhZ2UuaXNFbXB0eSgpIHx8
ICFtX3JlY29nbml0aW9uUmVzdWx0LmNvbnRhaW5zKG1fbGFuZ3VhZ2UpKQorICAgICAgICAgICAg
bV9saXN0ZW5lci0+c2V0UmVjb2duaXRpb25SZXN1bHQobV9yZXF1ZXN0SWQsIFN0cmluZygiZXJy
b3I6IG5vIHJlc3VsdCBmb3IgdGhlIHByb3ZpZGVkIGxhbmd1YWdlIikpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBtX2xpc3RlbmVyLT5zZXRSZWNvZ25pdGlvblJlc3VsdChtX3JlcXVlc3RJ
ZCwgbV9yZWNvZ25pdGlvblJlc3VsdC5nZXQobV9sYW5ndWFnZSkpOworCiAgICAgICAgIG1fbGlz
dGVuZXItPmRpZENvbXBsZXRlUmVjb2duaXRpb24obV9yZXF1ZXN0SWQpOwogICAgICAgICBtX3Jl
cXVlc3RJZCA9IDA7CiAgICAgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Nw
ZWVjaElucHV0Q2xpZW50TW9jay5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0
Q2xpZW50TW9jay5oCmluZGV4IGNlODNkM2JiOWNiODhiMGEzYTk1YjU0OTU0MjdkMjk5MWYyZTBi
NGYuLmI2NzQ0ZjEwNTYxMmJlMGMyZDllM2NjNzY5NmQ4YzM3ZjY5YzAwMzQgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TcGVlY2hJbnB1dENsaWVudE1vY2suaAorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL21vY2svU3BlZWNoSW5wdXRDbGllbnRNb2NrLmgKQEAgLTM0LDYgKzM0LDgg
QEAKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIlNwZWVjaElucHV0Q2xp
ZW50LmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gp
CiAKQEAgLTQ2LDExICs0OCwxMSBAQCBjbGFzcyBTcGVlY2hJbnB1dENsaWVudE1vY2sgOiBwdWJs
aWMgU3BlZWNoSW5wdXRDbGllbnQgewogcHVibGljOgogICAgIFNwZWVjaElucHV0Q2xpZW50TW9j
aygpOwogCi0gICAgdm9pZCBzZXRSZWNvZ25pdGlvblJlc3VsdChjb25zdCBTdHJpbmcmIHJlc3Vs
dCk7CisgICAgdm9pZCBzZXRSZWNvZ25pdGlvblJlc3VsdChjb25zdCBTdHJpbmcmIHJlc3VsdCwg
Y29uc3QgU3RyaW5nJiBsYW5ndWFnZSk7CiAKICAgICAvLyBTcGVlY2hJbnB1dENsaWVudCBtZXRo
b2RzLgogICAgIHZvaWQgc2V0TGlzdGVuZXIoU3BlZWNoSW5wdXRMaXN0ZW5lciopOwotICAgIGJv
b2wgc3RhcnRSZWNvZ25pdGlvbihpbnQsIGNvbnN0IEludFJlY3QmKTsKKyAgICBib29sIHN0YXJ0
UmVjb2duaXRpb24oaW50LCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IEludFJlY3QmKTsKICAg
ICB2b2lkIHN0b3BSZWNvcmRpbmcoaW50KTsKICAgICB2b2lkIGNhbmNlbFJlY29nbml0aW9uKGlu
dCk7CiAKQEAgLTYxLDcgKzYzLDkgQEAgcHJpdmF0ZToKICAgICBUaW1lcjxTcGVlY2hJbnB1dENs
aWVudE1vY2s+IG1fdGltZXI7CiAgICAgU3BlZWNoSW5wdXRMaXN0ZW5lciogbV9saXN0ZW5lcjsK
ICAgICBpbnQgbV9yZXF1ZXN0SWQ7Ci0gICAgU3RyaW5nIG1fcmVjb2duaXRpb25SZXN1bHQ7CisK
KyAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBtX3JlY29nbml0aW9uUmVzdWx0OworICAgIFN0
cmluZyBtX2xhbmd1YWdlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcCBiL1dlYkNv
cmUvcmVuZGVyaW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKaW5kZXggNWQ1YjhiMzBi
NDExMDUyMGQxYTRkZTdiOGE3OWM0ODVkNzkzNjYwOC4uNjVkMGE2NDYwOWQyMDM0YjEwOTk1MDNk
MTY5MTUxYWJlNjZkYWEzZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dENvbnRy
b2xJbm5lckVsZW1lbnRzLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Q29udHJvbElu
bmVyRWxlbWVudHMuY3BwCkBAIC0yMSw5ICsyMSw5IEBACiAgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCiAgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
ICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCi0g
CisKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJUZXh0Q29udHJvbElubmVyRWxlbWVu
dHMuaCIKIApAQCAtMTA3LDE4ICsxMDcsMTggQEAgdm9pZCBUZXh0Q29udHJvbElubmVyRWxlbWVu
dDo6YXR0YWNoSW5uZXJFbGVtZW50KE5vZGUqIHBhcmVudCwgUGFzc1JlZlB0cjxSZW5kZXIKICAg
ICAgICAgc2V0UmVuZGVyZXIocmVuZGVyZXIpOwogICAgICAgICByZW5kZXJlci0+c2V0U3R5bGUo
c3R5bGUpOwogICAgIH0KLSAgICAKKwogICAgIC8vIFNldCB0aGVzZSBleHBsaWNpdGx5IHNpbmNl
IHRoaXMgbm9ybWFsbHkgaGFwcGVucyBkdXJpbmcgYW4gYXR0YWNoKCkKICAgICBzZXRBdHRhY2hl
ZCgpOwogICAgIHNldEluRG9jdW1lbnQoKTsKLSAgICAKKwogICAgIC8vIEZvciBlbGVtZW50cyB3
aXRob3V0IGEgc2hhZG93IHBhcmVudCwgYWRkIHRoZSBub2RlIHRvIHRoZSBET00gbm9ybWFsbHku
CiAgICAgaWYgKCFtX3NoYWRvd1BhcmVudCkgewogICAgICAgICAvLyBGSVhNRTogVGhpcyBjb2Rl
IHNlZW1zIHZlcnkgd3JvbmcuICBXaHkgYXJlIHdlIG1hZ2ljYWxseSBhZGRpbmcgfHRoaXN8IHRv
IHRoZSBET00gaGVyZT8KICAgICAgICAgLy8gICAgICAgIFdlIHNob3VsZG4ndCBiZSBjYWxsaW5n
IHBhcnNlciBBUEkgbWV0aG9kcyBvdXRzaWRlIG9mIHRoZSBwYXJzZXIhCiAgICAgICAgIHBhcmVu
dC0+ZGVwcmVjYXRlZFBhcnNlckFkZENoaWxkKHRoaXMpOwogICAgIH0KLSAKKwogICAgIC8vIEFk
ZCB0aGUgcmVuZGVyZXIgdG8gdGhlIHJlbmRlciB0cmVlCiAgICAgaWYgKHJlbmRlcmVyKQogICAg
ICAgICBwYXJlbnQtPnJlbmRlcmVyKCktPmFkZENoaWxkKHJlbmRlcmVyKTsKQEAgLTIwOCw3ICsy
MDgsNyBAQCB2b2lkIFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uRWxlbWVudDo6ZGV0YWNoKCkKIHsK
ICAgICBpZiAobV9jYXB0dXJpbmcpIHsKICAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRvY3Vt
ZW50KCktPmZyYW1lKCkpCi0gICAgICAgICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPnNldENh
cHR1cmluZ01vdXNlRXZlbnRzTm9kZSgwKTsgICAgICAKKyAgICAgICAgICAgIGZyYW1lLT5ldmVu
dEhhbmRsZXIoKS0+c2V0Q2FwdHVyaW5nTW91c2VFdmVudHNOb2RlKDApOwogICAgIH0KICAgICBU
ZXh0Q29udHJvbElubmVyRWxlbWVudDo6ZGV0YWNoKCk7CiB9CkBAIC0yODEsOSArMjgxLDkgQEAg
dm9pZCBTcGluQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQp
CiAgICAgaWYgKCFib3gpIHsKICAgICAgICAgaWYgKCFldmVudC0+ZGVmYXVsdEhhbmRsZWQoKSkK
ICAgICAgICAgICAgIEhUTUxEaXZFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsK
LSAgICAgICAgcmV0dXJuOyAgICAgICAgCisgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCisK
ICAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dCA9IHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1l
bnQqPihzaGFkb3dBbmNlc3Rvck5vZGUoKSk7CiAgICAgaWYgKGlucHV0LT5kaXNhYmxlZCgpIHx8
IGlucHV0LT5pc1JlYWRPbmx5Rm9ybUNvbnRyb2woKSkgewogICAgICAgICBpZiAoIWV2ZW50LT5k
ZWZhdWx0SGFuZGxlZCgpKQpAQCAtNDMxLDcgKzQzMSw3IEBAIHZvaWQgSW5wdXRGaWVsZFNwZWVj
aEJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogICAgIGlm
IChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50KSB7CiAgICAgICAgIHN3
aXRjaCAobV9zdGF0ZSkgewogICAgICAgICBjYXNlIElkbGU6Ci0gICAgICAgICAgICBpZiAoc3Bl
ZWNoSW5wdXQoKS0+c3RhcnRSZWNvZ25pdGlvbihtX2xpc3RlbmVySWQsIGlucHV0LT5yZW5kZXJl
cigpLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpKSkKKyAgICAgICAgICAgIGlmIChzcGVlY2hJ
bnB1dCgpLT5zdGFydFJlY29nbml0aW9uKG1fbGlzdGVuZXJJZCwgaW5wdXQtPmNvbXB1dGVJbmhl
cml0ZWRMYW5ndWFnZSgpLCBpbnB1dC0+cmVuZGVyZXIoKS0+YWJzb2x1dGVCb3VuZGluZ0JveFJl
Y3QoKSkpCiAgICAgICAgICAgICAgICAgc2V0U3RhdGUoUmVjb3JkaW5nKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIFJlY29yZGluZzoKQEAgLTQ4Nyw3ICs0ODcsNyBAQCB2b2lk
IElucHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50OjpkZXRhY2goKQogewogICAgIGlmIChtX2Nh
cHR1cmluZykgewogICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQoKS0+ZnJhbWUo
KSkKLSAgICAgICAgICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+c2V0Q2FwdHVyaW5nTW91c2VF
dmVudHNOb2RlKDApOyAgICAgIAorICAgICAgICAgICAgZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5z
ZXRDYXB0dXJpbmdNb3VzZUV2ZW50c05vZGUoMCk7CiAgICAgfQogCiAgICAgaWYgKG1fc3RhdGUg
IT0gSWRsZSkKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGZmYTdjMGIwN2Y4MDkyODIyNTlmOGNjYjYyMDU3NjBm
MmE1MTVkMDMuLmRmNDI2MWFkZmFhODlhNWZkMTlmODcxNDliNzQzYTY5MWRlY2ZlNmIgMTAwNjQ0
Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEwLTEwLTA3ICBMZWFuZHJvIEdyYWNpw6EgR2ls
ICA8bGVhbmRyb2dyYWNpYUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUGF0Y2ggdGhlIGN1cnJlbnQgc3BlZWNoIGlucHV0IGlt
cGxlbWVudGF0aW9uIHRvIHVzZSBhbmQgdmFsaWRhdGUgdGhlCisgICAgICAgIG5lYXJlc3QgbGFu
Z3VhZ2UgdGFnLiBUaGUgbGFuZ3VhZ2UgaXMgbm93IHBhc3NlZCB0byB0aGUgc3RhcnRSZWNvZ25p
dGlvbgorICAgICAgICBtZXRob2RzIHNvIHRoYXQgbGFuZ3VhZ2Utc3BlY2lmaWMgcmVjb2duaXRp
b24gY291bGQgYmUgdXNlZC4gQWxzbyBhZGRlZAorICAgICAgICBhIHNlY29uZCBwYXJhbWV0ZXIg
dG8gc2V0TW9ja1NwZWVjaElucHV0UmVzdWx0IGZvciB0aGUgbGFuZ3VhZ2UgdXNlZCBpbgorICAg
ICAgICBzcGVlY2ggcmVjb2duaXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD00NzA4OQorCisgICAgICAgICogcHVibGljL1dlYlNwZWVjaElucHV0
Q29udHJvbGxlci5oOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXI6
OnN0YXJ0UmVjb2duaXRpb24pOgorICAgICAgICAqIHB1YmxpYy9XZWJTcGVlY2hJbnB1dENvbnRy
b2xsZXJNb2NrLmg6CisgICAgICAgICogc3JjL1NwZWVjaElucHV0Q2xpZW50SW1wbC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlNwZWVjaElucHV0Q2xpZW50SW1wbDo6c3RhcnRSZWNvZ25pdGlvbik6
CisgICAgICAgICogc3JjL1NwZWVjaElucHV0Q2xpZW50SW1wbC5oOgorICAgICAgICAqIHNyYy9X
ZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsOjpzZXRNb2NrUmVjb2duaXRpb25SZXN1bHQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6c3Rh
cnRSZWNvZ25pdGlvbik6CisgICAgICAgICogc3JjL1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1v
Y2tJbXBsLmg6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwu
aDoKKwogMjAxMC0xMC0wNyAgRGF2ZSBNb29yZSAgPGRhdmVtb29yZUBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgS2VudCBUYW11cmEuCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYlNwZWVjaElucHV0Q29udHJvbGxlci5oIGIvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIuaAppbmRleCA1NDA4NzQxYTNjOTRkM2Jm
MWM1NDNkOTZlOWZjMTZhNjM5MGRiMDJmLi4xZmRlMmE4ZTc3NGYzMmU1OGY4ODcyZjI0ODIyMjMw
NTljODhjMTQ3IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaElu
cHV0Q29udHJvbGxlci5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoSW5w
dXRDb250cm9sbGVyLmgKQEAgLTM1LDYgKzM1LDcgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
K2NsYXNzIFdlYlN0cmluZzsKIHN0cnVjdCBXZWJSZWN0OwogCiAvLyBQcm92aWRlcyBhbiBlbWJl
ZGRlciBBUEkgY2FsbGVkIGJ5IFdlYktpdC4KQEAgLTQzLDcgKzQ0LDcgQEAgcHVibGljOgogICAg
IC8vIFN0YXJ0cyBzcGVlY2ggcmVjb2duaXRpb24uIFNwZWVjaCB3aWxsIGdldCByZWNvcmRlZCB1
bnRpbCB0aGUgZW5kcG9pbnRlciBkZXRlY3RzIHNpbGVuY2UsCiAgICAgLy8gcnVucyB0byB0aGUg
bGltaXQgb3Igc3RvcFJlY29yZGluZyBpcyBjYWxsZWQuIFByb2dyZXNzIGluZGljYXRpb25zIGFu
ZCB0aGUgcmVjb2duaXplZAogICAgIC8vIHRleHQgYXJlIHJldHVybmVkIHZpYSB0aGUgbGlzdGVu
ZXIgaW50ZXJmYWNlLgotICAgIHZpcnR1YWwgYm9vbCBzdGFydFJlY29nbml0aW9uKGludCByZXF1
ZXN0SWQsIGNvbnN0IFdlYlJlY3QmKQorICAgIHZpcnR1YWwgYm9vbCBzdGFydFJlY29nbml0aW9u
KGludCByZXF1ZXN0SWQsIGNvbnN0IFdlYlN0cmluZyYgbGFuZ3VhZ2UsIGNvbnN0IFdlYlJlY3Qm
IGVsZW1lbnRSZWN0KQogICAgIHsKICAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2suaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9jay5oCmluZGV4IDlhMjYyMzVmZjZkNWRjY2Ji
ZTI0NzI2MmFlNDRhM2FjNzM5N2MzZjQuLmI0YzUwYTA1ZGNmNWExMmY4NDFiZjliNjc1NWNkMjg4
MTdmOGMwOGIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoSW5w
dXRDb250cm9sbGVyTW9jay5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNo
SW5wdXRDb250cm9sbGVyTW9jay5oCkBAIC00NCw2ICs0NCwxMCBAQCBwdWJsaWM6CiAgICAgICAg
IFdlYlNwZWVjaElucHV0TGlzdGVuZXIqIGxpc3RlbmVyKTsKICAgICB2aXJ0dWFsIH5XZWJTcGVl
Y2hJbnB1dENvbnRyb2xsZXJNb2NrKCkgeyB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgc2V0TW9ja1Jl
Y29nbml0aW9uUmVzdWx0KGNvbnN0IFdlYlN0cmluZyYgcmVzdWx0LCBjb25zdCBXZWJTdHJpbmcm
IGxhbmd1YWdlKSA9IDA7CisKKyAgICAvLyBGSVhNRTogdGhpcyBpcyBhIGZpeCBmb3IgYSB0d28t
c2lkZWQgcGF0Y2guIERlbGV0ZSBhcyBzb29uIGFzIHRoZSBjaHJvbWl1bSBzaWRlIGlzIHBhdGNo
ZWQuCisgICAgLy8gQ2hyb21pdW0gcGF0Y2ggbm90IHVwbG9hZGVkIHlldCwgYnV0IHdpbGwgZGVw
ZW5kIG9uIGh0dHA6Ly9jb2RlcmV2aWV3LmNocm9taXVtLm9yZy8zNjE1MDA1L3Nob3cgcGF0Y2gu
CiAgICAgdmlydHVhbCB2b2lkIHNldE1vY2tSZWNvZ25pdGlvblJlc3VsdChjb25zdCBXZWJTdHJp
bmcmIHJlc3VsdCkgPSAwOwogfTsKIApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9T
cGVlY2hJbnB1dENsaWVudEltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9TcGVlY2hJbnB1
dENsaWVudEltcGwuY3BwCmluZGV4IDk2M2Q0NDA1YTYyZDMyZTFhOGNlY2Q1NGMwOGM1YmJlYjNh
NjJkY2EuLmEzMGQ5ODZhNjZhMWE2MGMzYTk3MzhjYmE5ZTRmYWZiNTM3YjI3MGYgMTAwNjQ0Ci0t
LSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvU3BlZWNoSW5wdXRDbGllbnRJbXBsLmNwcAorKysgYi9X
ZWJLaXQvY2hyb21pdW0vc3JjL1NwZWVjaElucHV0Q2xpZW50SW1wbC5jcHAKQEAgLTM2LDExICsz
NiwxNyBAQAogI2luY2x1ZGUgIldlYlN0cmluZy5oIgogI2luY2x1ZGUgIldlYlZpZXdDbGllbnQu
aCIKICNpbmNsdWRlICJwYWdlL1NwZWVjaElucHV0TGlzdGVuZXIuaCIKKyNpbmNsdWRlIDx3dGYv
UGFzc093blB0ci5oPgogCiAjaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKIAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKK1Bhc3NPd25QdHI8U3BlZWNoSW5wdXRDbGllbnRJbXBsPiBTcGVlY2hJbnB1dENs
aWVudEltcGw6OmNyZWF0ZShXZWJWaWV3Q2xpZW50KiBjbGllbnQpCit7CisgICAgcmV0dXJuIGFk
b3B0UHRyKG5ldyBTcGVlY2hJbnB1dENsaWVudEltcGwoY2xpZW50KSk7Cit9CisKIFNwZWVjaElu
cHV0Q2xpZW50SW1wbDo6U3BlZWNoSW5wdXRDbGllbnRJbXBsKFdlYlZpZXdDbGllbnQqIHdlYl92
aWV3X2NsaWVudCkKICAgICA6IG1fY29udHJvbGxlcih3ZWJfdmlld19jbGllbnQgPyB3ZWJfdmll
d19jbGllbnQtPnNwZWVjaElucHV0Q29udHJvbGxlcih0aGlzKSA6IDApCiAgICAgLCBtX2xpc3Rl
bmVyKDApCkBAIC01NiwxMCArNjIsMTAgQEAgdm9pZCBTcGVlY2hJbnB1dENsaWVudEltcGw6OnNl
dExpc3RlbmVyKFdlYkNvcmU6OlNwZWVjaElucHV0TGlzdGVuZXIqIGxpc3RlbmVyKQogICAgIG1f
bGlzdGVuZXIgPSBsaXN0ZW5lcjsKIH0KIAotYm9vbCBTcGVlY2hJbnB1dENsaWVudEltcGw6OnN0
YXJ0UmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZWxl
bWVudFJlY3QpCitib29sIFNwZWVjaElucHV0Q2xpZW50SW1wbDo6c3RhcnRSZWNvZ25pdGlvbihp
bnQgcmVxdWVzdElkLCBjb25zdCBXVEY6OlN0cmluZyYgbGFuZ3VhZ2UsIGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmIGVsZW1lbnRSZWN0KQogewogICAgIEFTU0VSVChtX2xpc3RlbmVyKTsKLSAgICBy
ZXR1cm4gbV9jb250cm9sbGVyLT5zdGFydFJlY29nbml0aW9uKHJlcXVlc3RJZCwgZWxlbWVudFJl
Y3QpOworICAgIHJldHVybiBtX2NvbnRyb2xsZXItPnN0YXJ0UmVjb2duaXRpb24ocmVxdWVzdElk
LCBsYW5ndWFnZSwgZWxlbWVudFJlY3QpOwogfQogCiB2b2lkIFNwZWVjaElucHV0Q2xpZW50SW1w
bDo6c3RvcFJlY29yZGluZyhpbnQgcmVxdWVzdElkKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9t
aXVtL3NyYy9TcGVlY2hJbnB1dENsaWVudEltcGwuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvU3Bl
ZWNoSW5wdXRDbGllbnRJbXBsLmgKaW5kZXggODE3YjMyYjEyNDE0YjNhMDdkZmEzYWUzNTE5MDg3
ZGVhNWEwZjczMy4uYjQ3MTAzMDExZjM3NTI4YmY1YTY3ZTM0Nzc5NTAyYWQ5ZDQxYmNjYyAxMDA2
NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9TcGVlY2hJbnB1dENsaWVudEltcGwuaAorKysg
Yi9XZWJLaXQvY2hyb21pdW0vc3JjL1NwZWVjaElucHV0Q2xpZW50SW1wbC5oCkBAIC0zNSw2ICsz
NSwxMiBAQAogCiAjaW5jbHVkZSAiV2ViU3BlZWNoSW5wdXRMaXN0ZW5lci5oIgogI2luY2x1ZGUg
InBhZ2UvU3BlZWNoSW5wdXRDbGllbnQuaCIKKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgU3Ry
aW5nOworfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBTcGVlY2hJbnB1dExpc3RlbmVy
OwpAQCAtNDksMTIgKzU1LDEyIEBAIGNsYXNzIFNwZWVjaElucHV0Q2xpZW50SW1wbAogICAgIDog
cHVibGljIFdlYkNvcmU6OlNwZWVjaElucHV0Q2xpZW50LAogICAgICAgcHVibGljIFdlYlNwZWVj
aElucHV0TGlzdGVuZXIgewogcHVibGljOgotICAgIFNwZWVjaElucHV0Q2xpZW50SW1wbChXZWJW
aWV3Q2xpZW50Kik7CisgICAgc3RhdGljIFBhc3NPd25QdHI8U3BlZWNoSW5wdXRDbGllbnRJbXBs
PiBjcmVhdGUoV2ViVmlld0NsaWVudCopOwogICAgIHZpcnR1YWwgflNwZWVjaElucHV0Q2xpZW50
SW1wbCgpOwogCiAgICAgLy8gU3BlZWNoSW5wdXRDbGllbnQgbWV0aG9kcy4KICAgICB2b2lkIHNl
dExpc3RlbmVyKFdlYkNvcmU6OlNwZWVjaElucHV0TGlzdGVuZXIqKTsKLSAgICBib29sIHN0YXJ0
UmVjb2duaXRpb24oaW50LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CisgICAgYm9vbCBzdGFy
dFJlY29nbml0aW9uKGludCwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0Jik7CiAgICAgdm9pZCBzdG9wUmVjb3JkaW5nKGludCk7CiAgICAgdm9pZCBjYW5jZWxSZWNv
Z25pdGlvbihpbnQpOwogCkBAIC02NCw2ICs3MCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZENv
bXBsZXRlUmVjb2duaXRpb24oaW50KTsKIAogcHJpdmF0ZToKKyAgICBTcGVlY2hJbnB1dENsaWVu
dEltcGwoV2ViVmlld0NsaWVudCopOworCiAgICAgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyKiBt
X2NvbnRyb2xsZXI7IC8vIFRvIGNhbGwgaW50byB0aGUgZW1iZWRkZXIuCiAgICAgV2ViQ29yZTo6
U3BlZWNoSW5wdXRMaXN0ZW5lciogbV9saXN0ZW5lcjsKIH07CmRpZmYgLS1naXQgYS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsLmNwcCBiL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGwuY3BwCmluZGV4
IDYwYzRmZWQ4NTJiMjg0ZTAyNzFhZDAwZWQ5NzEwMDJhMmY1N2E0YjYuLmMzZTRhOWU1MzRhOTVk
MzZkNzE0NjQ3ZTIyZjNjZWRlNWNhMzhlMmYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGwuY3BwCkBAIC01Nyw3ICs1
NywxMiBAQCBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6fldlYlNwZWVjaElucHV0
Q29udHJvbGxlck1vY2tJbXBsKCkKIAogdm9pZCBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2Nr
SW1wbDo6c2V0TW9ja1JlY29nbml0aW9uUmVzdWx0KGNvbnN0IFdlYlN0cmluZyYgcmVzdWx0KQog
ewotICAgIG1fd2ViY29yZU1vY2stPnNldFJlY29nbml0aW9uUmVzdWx0KHJlc3VsdCk7CisgICAg
bV93ZWJjb3JlTW9jay0+c2V0UmVjb2duaXRpb25SZXN1bHQocmVzdWx0LCBXZWJTdHJpbmc6OmZy
b21VVEY4KCJlbiIpKTsKK30KKwordm9pZCBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1w
bDo6c2V0TW9ja1JlY29nbml0aW9uUmVzdWx0KGNvbnN0IFdlYlN0cmluZyYgcmVzdWx0LCBjb25z
dCBXZWJTdHJpbmcgJmxhbmd1YWdlKQoreworICAgIG1fd2ViY29yZU1vY2stPnNldFJlY29nbml0
aW9uUmVzdWx0KHJlc3VsdCwgbGFuZ3VhZ2UpOwogfQogCiB2b2lkIFdlYlNwZWVjaElucHV0Q29u
dHJvbGxlck1vY2tJbXBsOjpkaWRDb21wbGV0ZVJlY29yZGluZyhpbnQgcmVxdWVzdElkKQpAQCAt
NzUsOSArODAsOSBAQCB2b2lkIFdlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsOjpzZXRS
ZWNvZ25pdGlvblJlc3VsdChpbnQgcmVxdWVzdElkLCBjb25zdAogICAgIG1fbGlzdGVuZXItPnNl
dFJlY29nbml0aW9uUmVzdWx0KHJlcXVlc3RJZCwgcmVzdWx0KTsKIH0KIAotYm9vbCBXZWJTcGVl
Y2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6c3RhcnRSZWNvZ25pdGlvbihpbnQgcmVxdWVzdElk
LCBjb25zdCBXZWJSZWN0JiBlbGVtZW50UmVjdCkKK2Jvb2wgV2ViU3BlZWNoSW5wdXRDb250cm9s
bGVyTW9ja0ltcGw6OnN0YXJ0UmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCwgY29uc3QgV2ViU3Ry
aW5nJiBsYW5ndWFnZSwgY29uc3QgV2ViUmVjdCYgZWxlbWVudFJlY3QpCiB7Ci0gICAgcmV0dXJu
IG1fd2ViY29yZU1vY2stPnN0YXJ0UmVjb2duaXRpb24ocmVxdWVzdElkLCBlbGVtZW50UmVjdCk7
CisgICAgcmV0dXJuIG1fd2ViY29yZU1vY2stPnN0YXJ0UmVjb2duaXRpb24ocmVxdWVzdElkLCBs
YW5ndWFnZSwgZWxlbWVudFJlY3QpOwogfQogCiB2b2lkIFdlYlNwZWVjaElucHV0Q29udHJvbGxl
ck1vY2tJbXBsOjpjYW5jZWxSZWNvZ25pdGlvbihpbnQgcmVxdWVzdElkKQpkaWZmIC0tZ2l0IGEv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbC5oIGIv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbC5oCmlu
ZGV4IGVkYmZjYTNlZTYwZTkzOTQyODkzZTI3MjE4OTNlNDNhMGViODdjNWYuLjcyMmNmZjQ3OGM5
NjA3MWM5YmQ0YjFkYTQ2NDE4NzY2NWU0NTBlNzIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGwuaAorKysgYi9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsLmgKQEAgLTM2LDYgKzM2
LDExIEBACiAjaW5jbHVkZSAiV2ViU3BlZWNoSW5wdXRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIldl
YlN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdURiB7CitjbGFzcyBTdHJpbmc7Cit9CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIFNwZWVjaElucHV0Q2xpZW50TW9jazsKQEAgLTU3LDExICs2
MiwxNSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRSZWNvZ25pdGlvblJlc3VsdChpbnQgcmVxdWVz
dElkLCBjb25zdCBXVEY6OlN0cmluZyYgcmVzdWx0KTsKIAogICAgIC8vIFdlYlNwZWVjaElucHV0
Q29udHJvbGxlciBtZXRob2RzLgotICAgIGJvb2wgc3RhcnRSZWNvZ25pdGlvbihpbnQgcmVxdWVz
dElkLCBjb25zdCBXZWJSZWN0JiBlbGVtZW50UmVjdCk7CisgICAgYm9vbCBzdGFydFJlY29nbml0
aW9uKGludCByZXF1ZXN0SWQsIGNvbnN0IFdlYlN0cmluZyYgbGFuZ3VhZ2UsIGNvbnN0IFdlYlJl
Y3QmIGVsZW1lbnRSZWN0KTsKICAgICB2b2lkIGNhbmNlbFJlY29nbml0aW9uKGludCByZXF1ZXN0
SWQpOwogICAgIHZvaWQgc3RvcFJlY29yZGluZyhpbnQgcmVxdWVzdElkKTsKIAogICAgIC8vIFdl
YlNwZWVjaElucHV0Q29udHJvbGxlck1vY2sgbWV0aG9kcy4KKyAgICB2b2lkIHNldE1vY2tSZWNv
Z25pdGlvblJlc3VsdChjb25zdCBXZWJTdHJpbmcmIHJlc3VsdCwgY29uc3QgV2ViU3RyaW5nJiBs
YW5ndWFnZSk7CisKKyAgICAvLyBGSVhNRTogdGhpcyBpcyBhIGZpeCBmb3IgYSB0d28tc2lkZWQg
cGF0Y2guIERlbGV0ZSBhcyBzb29uIGFzIHRoZSBjaHJvbWl1bSBzaWRlIGlzIHBhdGNoZWQuCisg
ICAgLy8gQ2hyb21pdW0gcGF0Y2ggbm90IHVwbG9hZGVkIHlldCwgYnV0IHdpbGwgZGVwZW5kIG9u
IGh0dHA6Ly9jb2RlcmV2aWV3LmNocm9taXVtLm9yZy8zNjE1MDA1L3Nob3cgcGF0Y2guCiAgICAg
dm9pZCBzZXRNb2NrUmVjb2duaXRpb25SZXN1bHQoY29uc3QgV2ViU3RyaW5nJiByZXN1bHQpOwog
CiBwcml2YXRlOgpAQCAtNzIsNCArODEsMyBAQCBwcml2YXRlOgogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CiAKICNlbmRpZiAvLyBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbF9oCi0KZGlm
ZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggNTk5YzY1ZTBjM2FkNzhiZGQzMzNiM2Q5
ZDA1ZjBhMzNiY2E1YzZiOS4uZTYyNTlkZTEzMzNkNjNkYWI5ZGU4MDYzMWVmZjhmYTc1NmFjNGRi
YyAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTg4LDYgKzg4LDcgQEAKICNp
bmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNlbGVjdGlvbkNvbnRyb2xsZXIu
aCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIlNwZWVjaElucHV0Q2xpZW50SW1w
bC5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSAiVHlwaW5nQ29tbWFuZC5oIgogI2lu
Y2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9yLmgiCkBAIC0yNzUsNyArMjc2LDcgQEAgV2ViVmll
d0ltcGw6OldlYlZpZXdJbXBsKFdlYlZpZXdDbGllbnQqIGNsaWVudCwgV2ViRGV2VG9vbHNBZ2Vu
dENsaWVudCogZGV2VG9vbHMKICAgICAsIG1fY29tcG9zaXRvckNyZWF0aW9uRmFpbGVkKGZhbHNl
KQogI2VuZGlmCiAjaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKLSAgICAsIG1fc3BlZWNoSW5wdXRD
bGllbnQoY2xpZW50KQorICAgICwgbV9zcGVlY2hJbnB1dENsaWVudChTcGVlY2hJbnB1dENsaWVu
dEltcGw6OmNyZWF0ZShjbGllbnQpKQogI2VuZGlmCiAgICAgLCBtX2RldmljZU9yaWVudGF0aW9u
Q2xpZW50UHJveHkobmV3IERldmljZU9yaWVudGF0aW9uQ2xpZW50UHJveHkoY2xpZW50ID8gY2xp
ZW50LT5kZXZpY2VPcmllbnRhdGlvbkNsaWVudCgpIDogMCkpCiB7CkBAIC0yOTgsNyArMjk5LDcg
QEAgV2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKFdlYlZpZXdDbGllbnQqIGNsaWVudCwgV2ViRGV2
VG9vbHNBZ2VudENsaWVudCogZGV2VG9vbHMKICAgICBwYWdlQ2xpZW50cy5kcmFnQ2xpZW50ID0g
Jm1fZHJhZ0NsaWVudEltcGw7CiAgICAgcGFnZUNsaWVudHMuaW5zcGVjdG9yQ2xpZW50ID0gJm1f
aW5zcGVjdG9yQ2xpZW50SW1wbDsKICNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQotICAgIHBhZ2VD
bGllbnRzLnNwZWVjaElucHV0Q2xpZW50ID0gJm1fc3BlZWNoSW5wdXRDbGllbnQ7CisgICAgcGFn
ZUNsaWVudHMuc3BlZWNoSW5wdXRDbGllbnQgPSBtX3NwZWVjaElucHV0Q2xpZW50LmdldCgpOwog
I2VuZGlmCiAgICAgcGFnZUNsaWVudHMuZGV2aWNlT3JpZW50YXRpb25DbGllbnQgPSBtX2Rldmlj
ZU9yaWVudGF0aW9uQ2xpZW50UHJveHkuZ2V0KCk7CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViVmlld0ltcGwuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwu
aAppbmRleCBlNTFkZjRkOThlM2Q4ZTJiNjExMjU1MDM4ZjA4YzYxZmU0MmM3ODc4Li42YzYzNDZk
NDA3NzlmOTczNGY2NTgzZDY3ZGY5YTdkOWE0YTMyZTFlIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3
SW1wbC5oCkBAIC00OSw3ICs0OSw2IEBACiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUg
IkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlvblByZXNlbnRl
ckltcGwuaCIKLSNpbmNsdWRlICJTcGVlY2hJbnB1dENsaWVudEltcGwuaCIKICNpbmNsdWRlIDx3
dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIApAQCAtNzQsNiArNzMs
NyBAQCBjbGFzcyBBdXRvRmlsbFBvcHVwTWVudUNsaWVudDsKIGNsYXNzIENvbnRleHRNZW51Q2xp
ZW50SW1wbDsKIGNsYXNzIERldmljZU9yaWVudGF0aW9uQ2xpZW50UHJveHk7CiBjbGFzcyBEcmFn
U2Nyb2xsVGltZXI7CitjbGFzcyBTcGVlY2hJbnB1dENsaWVudEltcGw7CiBjbGFzcyBXZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0OwogY2xhc3MgV2ViRGV2VG9vbHNBZ2VudENsaWVudDsKIGNsYXNzIFdl
YkRldlRvb2xzQWdlbnRQcml2YXRlOwpAQCAtNTM3LDcgKzUzNyw3IEBAIHByaXZhdGU6CiAgICAg
c3RhdGljIGNvbnN0IFdlYklucHV0RXZlbnQqIG1fY3VycmVudElucHV0RXZlbnQ7CiAKICNpZiBF
TkFCTEUoSU5QVVRfU1BFRUNIKQotICAgIFNwZWVjaElucHV0Q2xpZW50SW1wbCBtX3NwZWVjaElu
cHV0Q2xpZW50OworICAgIE93blB0cjxTcGVlY2hJbnB1dENsaWVudEltcGw+IG1fc3BlZWNoSW5w
dXRDbGllbnQ7CiAjZW5kaWYKICAgICAvLyBJZiB3ZSBhdHRlbXB0IHRvIGZldGNoIHRoZSBvbi1z
Y3JlZW4gR3JhcGhpY3NDb250ZXh0M0QgYmVmb3JlCiAgICAgLy8gdGhlIGNvbXBvc2l0b3IgaGFz
IGJlZW4gdHVybmVkIG9uLCB3ZSBuZWVkIHRvIGluc3RhbnRpYXRlIGl0CmRpZmYgLS1naXQgYS9X
ZWJLaXRUb29scy9DaGFuZ2VMb2cgYi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKaW5kZXggZDE4ODIw
NDk2MmMzZWRjMDVjOWY1MGZiZTMxY2U4ZjA3ZDBkMzYzNS4uNzFlOWZkN2RmMmQyNmEwZTg4OTg1
ZWU0NTc1MTMzOTk1Yjk1MWVmMiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCisr
KyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEwLTEwLTA3ICBM
ZWFuZHJvIEdyYWNpw6EgR2lsICA8bGVhbmRyb2dyYWNpYUBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgYSBzZWNvbmQg
cGFyYW1ldGVyIHRvIHNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdCBmb3IKKyAgICAgICAgdGhlIGxh
bmd1YWdlIHVzZWQgaW4gc3BlZWNoIGlucHV0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDcwODkKKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xh
eW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKHNldE1vY2tTcGVlY2hJbnB1dFJlc3Vs
dENhbGxiYWNrKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja1Nw
ZWVjaElucHV0UmVzdWx0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVz
dENvbnRyb2xsZXJHdGsuY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1v
Y2tTcGVlY2hJbnB1dFJlc3VsdCk6CisKIDIwMTAtMDktMjEgIE1hcnRpbiBSb2JpbnNvbiAgPG1y
b2JpbnNvbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IENocmlzIEZsZWl6YWNo
LgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRy
b2xsZXIuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xs
ZXIuY3BwCmluZGV4IGVlNDQzMjViNmQ1NTA3N2YzNWY2NGI3ZGQ4YjIxMTVhZGNlMTczNzAuLjdk
ZTU3MzIzNmUwYzJmNjA5ZjhmZDhiZjkyZjgyZmI4ZDg5ZTliNmYgMTAwNjQ0Ci0tLSBhL1dlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAorKysgYi9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKQEAgLTEwNzAs
MTQgKzEwNzAsMTcgQEAgc3RhdGljIEpTVmFsdWVSZWYgc2V0TW9ja0dlb2xvY2F0aW9uRXJyb3JD
YWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3QKIAogc3RhdGljIEpTVmFsdWVS
ZWYgc2V0TW9ja1NwZWVjaElucHV0UmVzdWx0Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQs
IEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJn
dW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhj
ZXB0aW9uKQogewotICAgIGlmIChhcmd1bWVudENvdW50IDwgMSkKKyAgICBpZiAoYXJndW1lbnRD
b3VudCA8IDIpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsK
IAogICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiByZXN1bHQoQWRvcHQsIEpTVmFsdWVUb1N0
cmluZ0NvcHkoY29udGV4dCwgYXJndW1lbnRzWzBdLCBleGNlcHRpb24pKTsKICAgICBBU1NFUlQo
ISpleGNlcHRpb24pOwogCisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGxhbmd1YWdlKEFk
b3B0LCBKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIGFyZ3VtZW50c1sxXSwgZXhjZXB0aW9u
KSk7CisgICAgQVNTRVJUKCEqZXhjZXB0aW9uKTsKKwogICAgIExheW91dFRlc3RDb250cm9sbGVy
KiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xsZXIqPihKU09iamVj
dEdldFByaXZhdGUodGhpc09iamVjdCkpOwotICAgIGNvbnRyb2xsZXItPnNldE1vY2tTcGVlY2hJ
bnB1dFJlc3VsdChyZXN1bHQuZ2V0KCkpOworICAgIGNvbnRyb2xsZXItPnNldE1vY2tTcGVlY2hJ
bnB1dFJlc3VsdChyZXN1bHQuZ2V0KCksIGxhbmd1YWdlLmdldCgpKTsKIAogICAgIHJldHVybiBK
U1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmggYi9XZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCmluZGV4IDc1NWEyYjJiOWM2ODg1Yjc5
NmEwM2U1MmQ1MDIwZDg4YjQzZGQ5OGIuLmJjY2MwYTA2MGVlZjg3OTg2MjQwMjU5MThmMzk2NjYy
MjI1ODhkZTEgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRl
c3RDb250cm9sbGVyLmgKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVz
dENvbnRyb2xsZXIuaApAQCAtOTQsNyArOTQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRNb2Nr
RGV2aWNlT3JpZW50YXRpb24oYm9vbCBjYW5Qcm92aWRlQWxwaGEsIGRvdWJsZSBhbHBoYSwgYm9v
bCBjYW5Qcm92aWRlQmV0YSwgZG91YmxlIGJldGEsIGJvb2wgY2FuUHJvdmlkZUdhbW1hLCBkb3Vi
bGUgZ2FtbWEpOwogICAgIHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IoaW50IGNvZGUsIEpT
U3RyaW5nUmVmIG1lc3NhZ2UpOwogICAgIHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24o
ZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJhY3kpOwotICAg
IHZvaWQgc2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KEpTU3RyaW5nUmVmIHJlc3VsdCk7CisgICAg
dm9pZCBzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoSlNTdHJpbmdSZWYgcmVzdWx0LCBKU1N0cmlu
Z1JlZiBsYW5ndWFnZVRhZyk7CiAgICAgdm9pZCBzZXRQZXJzaXN0ZW50VXNlclN0eWxlU2hlZXRM
b2NhdGlvbihKU1N0cmluZ1JlZiBwYXRoKTsKICAgICB2b2lkIHNldFBsdWdpbnNFbmFibGVkKGJv
b2wgZmxhZyk7CiAgICAgdm9pZCBzZXRQb3B1cEJsb2NraW5nRW5hYmxlZChib29sIGZsYWcpOwpk
aWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVz
dENvbnRyb2xsZXIuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5
b3V0VGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IGQ3Nzc0ZTk5NjdiZTg2OWE0ZDM1MzY5NmZjMDRj
YzNmZGY5ODFkZGEuLjNjY2I3NDI2NDBmNGQyZmExNDJhNzE4OWIzOGVmMzNlYmQ0MGZjOTQgMTAw
NjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RD
b250cm9sbGVyLmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9M
YXlvdXRUZXN0Q29udHJvbGxlci5jcHAKQEAgLTE1MjUsMTAgKzE1MjUsMTAgQEAgdm9pZCBMYXlv
dXRUZXN0Q29udHJvbGxlcjo6YWJvcnRNb2RhbChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3Vt
ZW50cywgQ3BwVmFyaWEKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tTcGVlY2hJ
bnB1dFJlc3VsdChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCog
cmVzdWx0KQogewogICAgIHJlc3VsdC0+c2V0TnVsbCgpOwotICAgIGlmIChhcmd1bWVudHMuc2l6
ZSgpIDwgMSB8fCAhYXJndW1lbnRzWzBdLmlzU3RyaW5nKCkpCisgICAgaWYgKGFyZ3VtZW50cy5z
aXplKCkgPCAyIHx8ICFhcmd1bWVudHNbMF0uaXNTdHJpbmcoKSB8fCAhYXJndW1lbnRzWzFdLmlz
U3RyaW5nKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fc3BlZWNoSW5wdXRDb250cm9sbGVy
TW9jay0+c2V0TW9ja1JlY29nbml0aW9uUmVzdWx0KGNwcFZhcmlhbnRUb1dlYlN0cmluZyhhcmd1
bWVudHNbMF0pKTsKKyAgICBtX3NwZWVjaElucHV0Q29udHJvbGxlck1vY2stPnNldE1vY2tSZWNv
Z25pdGlvblJlc3VsdChjcHBWYXJpYW50VG9XZWJTdHJpbmcoYXJndW1lbnRzWzBdKSwgY3BwVmFy
aWFudFRvV2ViU3RyaW5nKGFyZ3VtZW50c1sxXSkpOwogfQogCiBXZWJLaXQ6OldlYlNwZWVjaElu
cHV0Q29udHJvbGxlciogTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNwZWVjaElucHV0Q29udHJvbGxl
cihXZWJLaXQ6OldlYlNwZWVjaElucHV0TGlzdGVuZXIqIGxpc3RlbmVyKQpkaWZmIC0tZ2l0IGEv
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNw
cCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0
ay5jcHAKaW5kZXggZDgzMTA3NjNkZTY2NGYzOTUyNDA0NGU3Zjg1Zjc3NTViZDQ4ZjFjMC4uMmZj
ZjQzMDk0MDcxNjNkZjUyZDQzMmU4ZGI3ZjBlNDI3NWFlMzMzNSAxMDA2NDQKLS0tIGEvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcAorKysg
Yi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsu
Y3BwCkBAIC00ODgsNyArNDg4LDcgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0R2Vv
bG9jYXRpb25QZXJtaXNzaW9uKGJvb2wgYWxsb3cpCiAgICAgc2V0R2VvbG9jYXRpb25QZXJtaXNz
aW9uQ29tbW9uKGFsbG93KTsKIH0KIAotdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9j
a1NwZWVjaElucHV0UmVzdWx0KEpTU3RyaW5nUmVmIHJlc3VsdCkKK3ZvaWQgTGF5b3V0VGVzdENv
bnRyb2xsZXI6OnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdChKU1N0cmluZ1JlZiByZXN1bHQsIEpT
U3RyaW5nUmVmIGxhbmd1YWdlVGFnKQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIHNw
ZWVjaCBpbnB1dCBsYXlvdXQgdGVzdHMuCiAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zOTQ4NS4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70243</attachid>
            <date>2010-10-08 06:58:47 -0700</date>
            <delta_ts>2010-10-08 07:19:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47089-20101008145845.patch</filename>
            <type>text/plain</type>
            <size>35905</size>
            <attacher name="Leandro Graciá Gil">leandrogracia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhNWU4NTI5ZjBlMzg2YjA3MTk0YmRiNjVlOWFmNGE5NjQ2NGFhMWZmLi40ZTRmZDVm
ZTg3ZTUyZjgzYzBiYzEwOWY0MjdhMDFkN2Q3OGEwZDE2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAK
KzIwMTAtMTAtMDggIExlYW5kcm8gR3JhY2nDoSBHaWwgIDxsZWFuZHJvZ3JhY2lhQGdvb2dsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
ZWQgYSBsYXlvdXQgdGVzdCBmb3IgdGhlIGxhbmd1YWdlIHRhZyBpbiBzcGVlY2ggaW5wdXQuIFVw
ZGF0ZWQKKyAgICAgICAgdGhlIHNwZWVjaCBidXR0b24gdGVzdHMgdG8gaW5jbHVkZSB0aGUgbmV3
IGxhbmd1YWdlIHBhcmFtZXRlciBpbiB0aGUKKyAgICAgICAgbW9jayByZXN1bHQuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzA4OQorCisgICAgICAg
ICogZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1sYW5ndWFnZS10YWctZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L3NwZWVjaC9pbnB1dC10ZXh0LWxhbmd1YWdlLXRhZy5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L3NwZWVjaC9pbnB1dC10ZXh0LXNwZWVjaGJ1dHRvbi5odG1s
OiBBZGRlZCBsYW5ndWFnZSBwYXJhbWV0ZXIuCisgICAgICAgICogZmFzdC9zcGVlY2gvc3BlZWNo
LWJ1dHRvbi1pZ25vcmUtZ2VuZXJhdGVkLWV2ZW50cy5odG1sOiBBZGRlZAorICAgICAgICAgIGxh
bmd1YWdlIHBhcmFtZXRlci4KKwogMjAxMC0xMC0wOCAgTmlrb2xhcyBaaW1tZXJtYW5uICA8bnpp
bW1lcm1hbm5AcmltLmNvbT4KIAogICAgICAgICBOb3QgcmV2aWV3ZWQuCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9pbnB1dC10ZXh0LWxhbmd1YWdlLXRhZy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9pbnB1dC10ZXh0LWxhbmd1YWdlLXRhZy1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOTFmMzBkNjk2ZjVkMjUwZjE0YWY1NmI5OWI0ZTcwYzg3OWMw
ZTUwMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL2lucHV0LXRl
eHQtbGFuZ3VhZ2UtdGFnLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEzIEBACitUZXN0cyBmb3Ig
bGFuZ3VhZ2UgdGFnIGluaGVyaXRhbmNlIGFuZCB2YWxpZGF0aW9uIGluIHNwZWVjaCBidXR0b25z
LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgic3BlZWNoSW5wdXROb25lIikudmFsdWUgaXMgImVycm9yOiBubyByZXN1bHQgZm91
bmQgZm9yIGxhbmd1YWdlICcnIgorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3BlZWNo
SW5wdXRFbGVtZW50IikudmFsdWUgaXMgIlBpY3R1cmVzIG9mIHRoZSBtb29uIgorUEFTUyBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgic3BlZWNoSW5wdXRJbmhlcml0ZWQiKS52YWx1ZSBpcyAi5pyI
44Gu5YaZ55yfIgorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3BlZWNoSW5wdXRJbnZh
bGlkIikudmFsdWUgaXMgImVycm9yOiBubyByZXN1bHQgZm91bmQgZm9yIGxhbmd1YWdlICcnIgor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisgCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9pbnB1dC10ZXh0LWxhbmd1YWdlLXRhZy5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1sYW5ndWFnZS10YWcuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45YmZjODIyNjJlZTMwYTJjNWZhNWUyNTgxNjFlYThhMWUxOGU2NWFmCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1sYW5n
dWFnZS10YWcuaHRtbApAQCAtMCwwICsxLDYyIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0v
L0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxo
ZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+
CitkZXNjcmlwdGlvbignVGVzdHMgZm9yIGxhbmd1YWdlIHRhZyBpbmhlcml0YW5jZSBhbmQgdmFs
aWRhdGlvbiBpbiBzcGVlY2ggYnV0dG9ucy4nKTsKKworLy8gTm90ZTogdGVzdCBjYXNlcyBhcmUg
c2VxdWVudGlhbCB0byBlbnN1cmUgdGhhdCBubyBuZXcgcmVjb2duaXRpb24gc3RhcnRzIHdoZW4g
YW5vdGhlciByZWNvZ25pdGlvbiByZWNvcmRpbmcgaXMgYWN0aXZlLgorZnVuY3Rpb24gb25DaGFu
Z2VOb25lKCkgeworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInNwZWVjaElucHV0Tm9uZSIpLnZhbHVlJywgJ2Vycm9yOiBubyByZXN1bHQgZm91bmQg
Zm9yIGxhbmd1YWdlIFwnXCcnKTsKKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzcGVlY2hC
dXR0b25DbGljaygnc3BlZWNoSW5wdXRFbGVtZW50Jyk7IH0sIDUwKTsKK30KKworZnVuY3Rpb24g
b25DaGFuZ2VFbGVtZW50KCkgeworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInNwZWVjaElucHV0RWxlbWVudCIpLnZhbHVlJywgJ1BpY3R1cmVzIG9m
IHRoZSBtb29uJyk7CisgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc3BlZWNoQnV0dG9uQ2xp
Y2soJ3NwZWVjaElucHV0SW5oZXJpdGVkJyk7IH0sIDUwKTsKK30KKworZnVuY3Rpb24gb25DaGFu
Z2VJbmhlcml0ZWQoKSB7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgic3BlZWNoSW5wdXRJbmhlcml0ZWQiKS52YWx1ZScsICfmnIjjga7lhpnnnJ8n
KTsKKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzcGVlY2hCdXR0b25DbGljaygnc3BlZWNo
SW5wdXRJbnZhbGlkJyk7IH0sIDUwKTsKK30KKworZnVuY3Rpb24gb25DaGFuZ2VJbnZhbGlkKCkg
eworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNw
ZWVjaElucHV0SW52YWxpZCIpLnZhbHVlJywgJ2Vycm9yOiBubyByZXN1bHQgZm91bmQgZm9yIGxh
bmd1YWdlIFwnXCcnKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworZnVuY3Rpb24gc3BlZWNo
QnV0dG9uQ2xpY2soZWxlbWVudElkKSB7CisgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZChlbGVtZW50SWQpOworICAgIHZhciB4ID0gZWxlbWVudC5vZmZzZXRMZWZ0ICsg
ZWxlbWVudC5vZmZzZXRXaWR0aCAtIDQ7CisgICAgdmFyIHkgPSBlbGVtZW50Lm9mZnNldFRvcCAr
IGVsZW1lbnQub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4
LCB5KTsKKyAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICBldmVudFNlbmRlci5tb3Vz
ZVVwKCk7Cit9CisKK2Z1bmN0aW9uIHJ1bigpIHsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyICYmIHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5zZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoJ1BpY3R1cmVzIG9mIHRoZSBtb29uJywg
J2VuLUdCJyk7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldE1vY2tTcGVlY2hJbnB1
dFJlc3VsdCgn5pyI44Gu5YaZ55yfJywgJ2phJyk7CisgICAgICAgIHNwZWVjaEJ1dHRvbkNsaWNr
KCdzcGVlY2hJbnB1dE5vbmUnKTsKKyAgICB9Cit9CisKK3dpbmRvdy5vbmxvYWQgPSBydW47Cit3
aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Cit3aW5kb3cuc3VjY2Vzc2Z1bGx5UGFyc2VkID0g
dHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgorPGlucHV0IGlkPSJzcGVlY2hJbnB1dE5vbmUiIHgtd2Via2l0LXNw
ZWVjaCBvbndlYmtpdHNwZWVjaGNoYW5nZT0ib25DaGFuZ2VOb25lKCkiPgorPGlucHV0IGlkPSJz
cGVlY2hJbnB1dEVsZW1lbnQiIHgtd2Via2l0LXNwZWVjaCBvbndlYmtpdHNwZWVjaGNoYW5nZT0i
b25DaGFuZ2VFbGVtZW50KCkiIGxhbmc9ImVuLUdCIj4KKzxkaXYgbGFuZz0iamEiPiA8aW5wdXQg
aWQ9InNwZWVjaElucHV0SW5oZXJpdGVkIiB4LXdlYmtpdC1zcGVlY2ggb253ZWJraXRzcGVlY2hj
aGFuZ2U9Im9uQ2hhbmdlSW5oZXJpdGVkKCkiPiA8L2Rpdj4KKzxpbnB1dCBpZD0ic3BlZWNoSW5w
dXRJbnZhbGlkIiB4LXdlYmtpdC1zcGVlY2ggb253ZWJraXRzcGVlY2hjaGFuZ2U9Im9uQ2hhbmdl
SW52YWxpZCgpIiBsYW5nPSIxMzM3JMO+M867ayI+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9pbnB1dC10ZXh0LXNwZWVjaGJ1dHRvbi5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1zcGVlY2hidXR0b24uaHRtbApp
bmRleCA2ZjViYzRiMTIxZmI0ZjlkOWRkYTZjMzMxZjhiMjZkYzFjZDQzOTk0Li4yMjljZDRkZTBi
ODE4YmU1MTE4ZDI0MjE1ZGJiZGQ2ZGI4OTgxY2U2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9m
YXN0L3NwZWVjaC9pbnB1dC10ZXh0LXNwZWVjaGJ1dHRvbi5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3Qvc3BlZWNoL2lucHV0LXRleHQtc3BlZWNoYnV0dG9uLmh0bWwKQEAgLTMyLDcgKzMyLDcg
QEAgZnVuY3Rpb24gb25XZWJraXRTcGVlY2hDaGFuZ2UoKSB7CiAKIGZ1bmN0aW9uIHJ1bigpIHsK
ICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyICYmIHdpbmRvdy5ldmVudFNlbmRl
cikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRNb2NrU3BlZWNoSW5wdXRSZXN1
bHQoJ1BpY3R1cmVzIG9mIHRoZSBtb29uJyk7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdCgnUGljdHVyZXMgb2YgdGhlIG1vb24nLCAnZW4nKTsK
IAogICAgICAgICAvLyBDbGlja2luZyB0aGUgc3BlZWNoIGJ1dHRvbiBzaG91bGQgZmlsbCBpbiBt
b2NrIHNwZWVjaC1yZWNvZ25pemVkIHRleHQuCiAgICAgICAgIHZhciBpbnB1dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdzcGVlY2hJbnB1dCcpOwpAQCAtNDksNiArNDksNiBAQCB3aW5kb3cu
anNUZXN0SXNBc3luYyA9IHRydWU7CiB3aW5kb3cuc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsK
IDwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgotPGlucHV0IGlkPSdzcGVlY2hJbnB1dCcgeC13ZWJraXQtc3BlZWNoIG9ud2Vi
a2l0c3BlZWNoY2hhbmdlPSJvbldlYmtpdFNwZWVjaENoYW5nZSgpIj4KKzxpbnB1dCBpZD0nc3Bl
ZWNoSW5wdXQnIHgtd2Via2l0LXNwZWVjaCBvbndlYmtpdHNwZWVjaGNoYW5nZT0ib25XZWJraXRT
cGVlY2hDaGFuZ2UoKSIgbGFuZz0iZW4iPgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvc3BlZWNoLWJ1dHRvbi1pZ25vcmUtZ2VuZXJhdGVkLWV2
ZW50cy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvc3BlZWNoLWJ1dHRvbi1pZ25vcmUt
Z2VuZXJhdGVkLWV2ZW50cy5odG1sCmluZGV4IGI5YjhlYzM2NjA1NTc5ZjJiMTI2ZDZmMWRhMzU2
MGM2NzJhZDJiNzEuLmEwOTFkM2FjN2I3NTUzYzg4YjIwMDQxZTdjMjExZjQwZTdmMGI5ZjYgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL3NwZWVjaC1idXR0b24taWdub3JlLWdl
bmVyYXRlZC1ldmVudHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9zcGVlY2gt
YnV0dG9uLWlnbm9yZS1nZW5lcmF0ZWQtZXZlbnRzLmh0bWwKQEAgLTQ5LDcgKzQ5LDcgQEAgZnVu
Y3Rpb24gc2V0dXBEaXNwYXRjaEV2ZW50VGVzdCgpIHsKIGZ1bmN0aW9uIHJ1bigpIHsKICAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyICYmIHdpbmRvdy5ldmVudFNlbmRlcikgewog
ICAgICAgICAvLyBSdW5uaW5nIGluIERSVCwgdGVzdCB0aGUgZXZlbnRTZW5kZXIgY2FzZS4KLSAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KCdQaWN0
dXJlcyBvZiB0aGUgbW9vbicpOworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRNb2Nr
U3BlZWNoSW5wdXRSZXN1bHQoJ1BpY3R1cmVzIG9mIHRoZSBtb29uJywgJ2VuJyk7CiAgICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzcGVlY2hJbnB1dCcpLm9ud2Via2l0c3BlZWNoY2hh
bmdlID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2Rv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJzcGVlY2hJbnB1dCIpLnZhbHVlJywgJ1BpY3R1cmVzIG9m
IHRoZSBtb29uJyk7CiAKQEAgLTY4LDYgKzY4LDYgQEAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0
cnVlOwogd2luZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CiA8L3NjcmlwdD4KIDxzY3Jp
cHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTxpbnB1
dCBpZD0nc3BlZWNoSW5wdXQnIHgtd2Via2l0LXNwZWVjaD4KKzxpbnB1dCBpZD0nc3BlZWNoSW5w
dXQnIHgtd2Via2l0LXNwZWVjaCBsYW5nPSJlbiI+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDM4MWE5ZTlh
NjE4ODI2NWE5YWMyYjIyNWYxYTEwNjBhN2MwNWU5MWIuLmZmNWU2YjU5Mjk4MDExZmU3MDUzYjg5
OWVjMmNkYjE4Nzk3NDY2ZTIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMTAtMTAtMDggIExlYW5kcm8gR3Jh
Y2nDoSBHaWwgIDxsZWFuZHJvZ3JhY2lhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGF0Y2ggdGhlIGN1cnJlbnQgc3BlZWNoIGlu
cHV0IGltcGxlbWVudGF0aW9uIHRvIHVzZSBhbmQgdmFsaWRhdGUgdGhlCisgICAgICAgIG5lYXJl
c3QgbGFuZ3VhZ2UgdGFnLiBUaGUgbGFuZ3VhZ2UgaXMgbm93IHBhc3NlZCB0byB0aGUgc3RhcnRS
ZWNvZ25pdGlvbgorICAgICAgICBtZXRob2RzIHNvIHRoYXQgbGFuZ3VhZ2Utc3BlY2lmaWMgcmVj
b2duaXRpb24gY291bGQgYmUgdXNlZC4gQWxzbyBhZGRlZAorICAgICAgICBhIHNlY29uZCBwYXJh
bWV0ZXIgdG8gc2V0TW9ja1NwZWVjaElucHV0UmVzdWx0IGZvciB0aGUgbGFuZ3VhZ2UgdXNlZCBp
bgorICAgICAgICBzcGVlY2ggcmVjb2duaXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzA4OQorCisgICAgICAgIFRoaXMgaXMgdGhlIDJuZCBv
ZiBhIDQtc2lkZWQgcGF0Y2ggaW4gQ2hyb21pdW0gYW5kIFdlYktpdC4gRm9yIG1vcmUKKyAgICAg
ICAgZGV0YWlscyBzZWUgaHR0cDovL2NvZGVyZXZpZXcuY2hyb21pdW0ub3JnLzM2MTUwMDUvc2hv
dyBhbmQKKyAgICAgICAgaHR0cDovL2NvZGVyZXZpZXcuY2hyb21pdW0ub3JnLzM1OTUwMTgvc2hv
dy4KKworICAgICAgICBUZXN0OiBmYXN0L3NwZWVjaC9pbnB1dC10ZXh0LWxhbmd1YWdlLXRhZy5o
dG1sCisKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVt
ZW50Ojpjb21wdXRlSW5oZXJpdGVkTGFuZ3VhZ2UpOiBpbmNsdWRlcyBhIGJyaWVmIGNoYXJhY3Rl
cgorICAgICAgICAgIHZhbGlkYXRpb24gZm9yIHRoZSBCQ1AgNDcgbGFuZ3VhZ2UgdGFnLgorICAg
ICAgICAqIHBhZ2UvU3BlZWNoSW5wdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoSW5w
dXQ6OnN0YXJ0UmVjb2duaXRpb24pOgorICAgICAgICAqIHBhZ2UvU3BlZWNoSW5wdXQuaDoKKyAg
ICAgICAgKiBwYWdlL1NwZWVjaElucHV0Q2xpZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vbW9j
ay9TcGVlY2hJbnB1dENsaWVudE1vY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoSW5w
dXRDbGllbnRNb2NrOjpzdGFydFJlY29nbml0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVj
aElucHV0Q2xpZW50TW9jazo6c2V0UmVjb2duaXRpb25SZXN1bHQpOiByZXN1bHRzIGFyZSBub3cK
KyAgICAgICAgICBzdG9yZWQgYnkgbGFuZ3VhZ2UgdXNpbmcgYSBoYXNoIG1hcC4KKyAgICAgICAg
KFdlYkNvcmU6OlNwZWVjaElucHV0Q2xpZW50TW9jazo6dGltZXJGaXJlZCk6CisgICAgICAgICog
cGxhdGZvcm0vbW9jay9TcGVlY2hJbnB1dENsaWVudE1vY2suaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRD
b250cm9sSW5uZXJFbGVtZW50OjphdHRhY2hJbm5lckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6U2VhcmNoRmllbGRDYW5jZWxCdXR0b25FbGVtZW50OjpkZXRhY2gpOgorICAgICAgICAoV2Vi
Q29yZTo6U3BpbkJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOgorICAgICAgICAo
V2ViQ29yZTo6SW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRs
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQ6OmRl
dGFjaCk6CisKIDIwMTAtMTAtMDggIEFuZHJlYXMgS2xpbmcgIDxhbmRyZWFzLmtsaW5nQG5va2lh
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBOaWtvbGFzIFppbW1lcm1hbm4uCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmlu
ZGV4IDYwYTEwNjNjNGQyOGQyODJmNjc3MzY2NzNjNDNjY2RlOGU2YWNmZjQuLjVhNDJjZDM4ODI3
YjA4ZTQ4NGU0NmY4YTA5MjJlOWMyNzI2MTMxYjQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC01Niw2ICs1Niw3IEBA
CiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNpbmNs
dWRlICJYTUxOYW1lcy5oIgorI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgogCiAjaWYgRU5BQkxFKFNWRykKQEAgLTE0NjgsNiArMTQ2OSwx
NSBAQCBBdG9taWNTdHJpbmcgRWxlbWVudDo6Y29tcHV0ZUluaGVyaXRlZExhbmd1YWdlKCkgY29u
c3QKICAgICAgICAgbiA9IG4tPnBhcmVudCgpOwogICAgIH0KIAorICAgIGlmICghdmFsdWUuaXNO
dWxsKCkgJiYgIXZhbHVlLmlzRW1wdHkoKSkgeworICAgICAgICAvLyBPbmx5IEEtWmEtejAtOSBh
bmQgJy0nIGFyZSBhbGxvd2VkIGluIHRoZSBsYW5ndWFnZSB0YWcgKHNlZSBCQ1AgNDcpCisgICAg
ICAgIENTdHJpbmcgbGFuZ3VhZ2VUYWcgPSB2YWx1ZS5zdHJpbmcoKS5hc2NpaSgpOworICAgICAg
ICBmb3IgKGNvbnN0IGNoYXIgKnAgPSBsYW5ndWFnZVRhZy5kYXRhKCk7ICpwICE9ICdcMCc7ICsr
cCkgeworICAgICAgICAgICAgaWYgKCFpc0FTQ0lJQWxwaGFudW1lcmljKCpwKSAmJiAqcCAhPSAn
LScpCisgICAgICAgICAgICAgICAgcmV0dXJuIEF0b21pY1N0cmluZygpOworICAgICAgICB9Cisg
ICAgfQorCiAgICAgcmV0dXJuIHZhbHVlOwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2Uv
U3BlZWNoSW5wdXQuY3BwIGIvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0LmNwcAppbmRleCAyMzQ3
OTFiYzRiMTNmNDNkZjlkMTczOWQ1ZDIwNWY5YWEyN2UyMDcyLi5jYzVlMGY5N2ZiYWJmOWFmYTNm
NDM1OWM3MjZiYWM4N2U1MzQxOGNmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5w
dXQuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dC5jcHAKQEAgLTkzLDEwICs5Mywx
MCBAQCB2b2lkIFNwZWVjaElucHV0OjpzZXRSZWNvZ25pdGlvblJlc3VsdChpbnQgbGlzdGVuZXJJ
ZCwgY29uc3QgU3RyaW5nJiByZXN1bHQpCiAgICAgICAgIG1fbGlzdGVuZXJzLmdldChsaXN0ZW5l
cklkKS0+c2V0UmVjb2duaXRpb25SZXN1bHQobGlzdGVuZXJJZCwgcmVzdWx0KTsKIH0KIAotYm9v
bCBTcGVlY2hJbnB1dDo6c3RhcnRSZWNvZ25pdGlvbihpbnQgbGlzdGVuZXJJZCwgY29uc3QgSW50
UmVjdCYgZWxlbWVudFJlY3QpCitib29sIFNwZWVjaElucHV0OjpzdGFydFJlY29nbml0aW9uKGlu
dCBsaXN0ZW5lcklkLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlLCBjb25zdCBJbnRSZWN0JiBlbGVt
ZW50UmVjdCkKIHsKICAgICBBU1NFUlQobV9saXN0ZW5lcnMuY29udGFpbnMobGlzdGVuZXJJZCkp
OwotICAgIHJldHVybiBtX2NsaWVudC0+c3RhcnRSZWNvZ25pdGlvbihsaXN0ZW5lcklkLCBlbGVt
ZW50UmVjdCk7CisgICAgcmV0dXJuIG1fY2xpZW50LT5zdGFydFJlY29nbml0aW9uKGxpc3RlbmVy
SWQsIGxhbmd1YWdlLCBlbGVtZW50UmVjdCk7CiB9CiAKIHZvaWQgU3BlZWNoSW5wdXQ6OnN0b3BS
ZWNvcmRpbmcoaW50IGxpc3RlbmVySWQpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvU3BlZWNo
SW5wdXQuaCBiL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dC5oCmluZGV4IGQxMGI3ODlhYWQyNzM5
ZWRkM2JmNDUzMGU3YzZlMDBjNGUyZGFlOGEuLjhiNDI2ZjU2MzEzNmVkNjUxZGQ2NDU2ZTgzNWI0
ZDQ0NTNhYjgwMTIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dC5oCisrKyBi
L1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dC5oCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHVucmVnaXN0ZXJMaXN0ZW5lcihpbnQpOwogCiAgICAgLy8gTWV0aG9kcyBpbnZva2Vk
IGJ5IHRoZSBpbnB1dCBlbGVtZW50cy4KLSAgICBib29sIHN0YXJ0UmVjb2duaXRpb24oaW50LCBj
b25zdCBJbnRSZWN0Jik7CisgICAgYm9vbCBzdGFydFJlY29nbml0aW9uKGludCwgY29uc3QgU3Ry
aW5nJiwgY29uc3QgSW50UmVjdCYpOwogICAgIHZvaWQgc3RvcFJlY29yZGluZyhpbnQpOwogICAg
IHZvaWQgY2FuY2VsUmVjb2duaXRpb24oaW50KTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdl
L1NwZWVjaElucHV0Q2xpZW50LmggYi9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXRDbGllbnQuaApp
bmRleCBkNWZkYTE3ZmFhMmNkNzk1YWY0NGY1M2E0NmZjYmE1OTc0MWFiNzZjLi4zOGJmZTRmYzQ1
NTI5ZjAwNzIyNDNmZWFkOGY3YmM2ZmE5ZGFhNmZiIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2Uv
U3BlZWNoSW5wdXRDbGllbnQuaAorKysgYi9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXRDbGllbnQu
aApAQCAtMzMsNiArMzMsMTAgQEAKIAogI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCiAKK25hbWVz
cGFjZSBXVEYgeworY2xhc3MgU3RyaW5nOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIEludFJlY3Q7CkBAIC00OCw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
c2V0TGlzdGVuZXIoU3BlZWNoSW5wdXRMaXN0ZW5lciopID0gMDsKIAogICAgIC8vIFN0YXJ0cyBz
cGVlY2ggcmVjb2duaXRpb24gYW5kIGF1ZGlvIHJlY29yZGluZy4KLSAgICB2aXJ0dWFsIGJvb2wg
c3RhcnRSZWNvZ25pdGlvbihpbnQgcmVxdWVzdElkLCBjb25zdCBJbnRSZWN0JiBlbGVtZW50UmVj
dCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzdGFydFJlY29nbml0aW9uKGludCByZXF1ZXN0SWQs
IGNvbnN0IFdURjo6U3RyaW5nJiBsYW5ndWFnZSwgY29uc3QgSW50UmVjdCYgZWxlbWVudFJlY3Qp
ID0gMDsKIAogICAgIC8vIFN0b3BzIGF1ZGlvIHJlY29yZGluZyBhbmQgcGVyZm9ybXMgcmVjb2du
aXRpb24gd2l0aCB0aGUgYXVkaW8gcmVjb3JkZWQgdW50aWwgbm93CiAgICAgLy8gKGRvZXMgbm90
IGRpc2NhcmQgYXVkaW8pLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1NwZWVj
aElucHV0Q2xpZW50TW9jay5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL21vY2svU3BlZWNoSW5wdXRD
bGllbnRNb2NrLmNwcAppbmRleCA2YjY0OTQyZjE3YjkyNWI0OWVmMDkyMTQ3YzBhMTZhMDdmMGQ3
Y2NjLi5hNWE4YjRjZTBkZGY2YjBjNjlhMjMzMDNmYWY3OWNlZjUzYjA2MzVjIDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BsYXRmb3JtL21vY2svU3BlZWNoSW5wdXRDbGllbnRNb2NrLmNwcAorKysgYi9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svU3BlZWNoSW5wdXRDbGllbnRNb2NrLmNwcApAQCAtMzAsNiAr
MzAsNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU3BlZWNoSW5wdXRDbGll
bnRNb2NrLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiAjaWYgRU5BQkxFKElO
UFVUX1NQRUVDSCkKIApAQCAtNTAsMTIgKzUxLDEzIEBAIHZvaWQgU3BlZWNoSW5wdXRDbGllbnRN
b2NrOjpzZXRMaXN0ZW5lcihTcGVlY2hJbnB1dExpc3RlbmVyKiBsaXN0ZW5lcikKICAgICBtX2xp
c3RlbmVyID0gbGlzdGVuZXI7CiB9CiAKLWJvb2wgU3BlZWNoSW5wdXRDbGllbnRNb2NrOjpzdGFy
dFJlY29nbml0aW9uKGludCByZXF1ZXN0SWQsIGNvbnN0IEludFJlY3QmKQorYm9vbCBTcGVlY2hJ
bnB1dENsaWVudE1vY2s6OnN0YXJ0UmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCwgY29uc3QgU3Ry
aW5nJiBsYW5ndWFnZSwgY29uc3QgSW50UmVjdCYpCiB7CiAgICAgaWYgKG1fdGltZXIuaXNBY3Rp
dmUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIG1fcmVxdWVzdElkID0gcmVxdWVzdElk
OwogICAgIG1fcmVjb3JkaW5nID0gdHJ1ZTsKKyAgICBtX2xhbmd1YWdlID0gbGFuZ3VhZ2U7CiAg
ICAgbV90aW1lci5zdGFydE9uZVNob3QoMCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC04MCw5
ICs4MiwxMCBAQCB2b2lkIFNwZWVjaElucHV0Q2xpZW50TW9jazo6Y2FuY2VsUmVjb2duaXRpb24o
aW50IHJlcXVlc3RJZCkKICAgICB9CiB9CiAKLXZvaWQgU3BlZWNoSW5wdXRDbGllbnRNb2NrOjpz
ZXRSZWNvZ25pdGlvblJlc3VsdChjb25zdCBTdHJpbmcmIHJlc3VsdCkKK3ZvaWQgU3BlZWNoSW5w
dXRDbGllbnRNb2NrOjpzZXRSZWNvZ25pdGlvblJlc3VsdChjb25zdCBTdHJpbmcmIHJlc3VsdCwg
Y29uc3QgU3RyaW5nJiBsYW5ndWFnZSkKIHsKLSAgICBtX3JlY29nbml0aW9uUmVzdWx0ID0gcmVz
dWx0OworICAgIGlmICghbGFuZ3VhZ2UuaXNFbXB0eSgpKQorICAgICAgICBtX3JlY29nbml0aW9u
UmVzdWx0LnNldChsYW5ndWFnZSwgcmVzdWx0KTsKIH0KIAogdm9pZCBTcGVlY2hJbnB1dENsaWVu
dE1vY2s6OnRpbWVyRmlyZWQoV2ViQ29yZTo6VGltZXI8U3BlZWNoSW5wdXRDbGllbnRNb2NrPiop
CkBAIC05Miw3ICs5NSwxNCBAQCB2b2lkIFNwZWVjaElucHV0Q2xpZW50TW9jazo6dGltZXJGaXJl
ZChXZWJDb3JlOjpUaW1lcjxTcGVlY2hJbnB1dENsaWVudE1vY2s+KikKICAgICAgICAgbV9saXN0
ZW5lci0+ZGlkQ29tcGxldGVSZWNvcmRpbmcobV9yZXF1ZXN0SWQpOwogICAgICAgICBtX3RpbWVy
LnN0YXJ0T25lU2hvdCgwKTsKICAgICB9IGVsc2UgewotICAgICAgICBtX2xpc3RlbmVyLT5zZXRS
ZWNvZ25pdGlvblJlc3VsdChtX3JlcXVlc3RJZCwgbV9yZWNvZ25pdGlvblJlc3VsdCk7CisgICAg
ICAgIGlmIChtX2xhbmd1YWdlLmlzRW1wdHkoKSB8fCAhbV9yZWNvZ25pdGlvblJlc3VsdC5jb250
YWlucyhtX2xhbmd1YWdlKSkgeworICAgICAgICAgICAgU3RyaW5nIGVycm9yKCJlcnJvcjogbm8g
cmVzdWx0IGZvdW5kIGZvciBsYW5ndWFnZSAnIik7CisgICAgICAgICAgICBlcnJvci5hcHBlbmQo
bV9sYW5ndWFnZSk7CisgICAgICAgICAgICBlcnJvci5hcHBlbmQoIiciKTsKKyAgICAgICAgICAg
IG1fbGlzdGVuZXItPnNldFJlY29nbml0aW9uUmVzdWx0KG1fcmVxdWVzdElkLCBlcnJvcik7Cisg
ICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbV9saXN0ZW5lci0+c2V0UmVjb2duaXRpb25SZXN1
bHQobV9yZXF1ZXN0SWQsIG1fcmVjb2duaXRpb25SZXN1bHQuZ2V0KG1fbGFuZ3VhZ2UpKTsKKwog
ICAgICAgICBtX2xpc3RlbmVyLT5kaWRDb21wbGV0ZVJlY29nbml0aW9uKG1fcmVxdWVzdElkKTsK
ICAgICAgICAgbV9yZXF1ZXN0SWQgPSAwOwogICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9TcGVlY2hJbnB1dENsaWVudE1vY2suaCBiL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9TcGVlY2hJbnB1dENsaWVudE1vY2suaAppbmRleCBjZTgzZDNiYjljYjg4YjBhM2E5NWI1NDk1
NDI3ZDI5OTFmMmUwYjRmLi5iNjc0NGYxMDU2MTJiZTBjMmQ5ZTNjYzc2OTZkOGMzN2Y2OWMwMDM0
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL21vY2svU3BlZWNoSW5wdXRDbGllbnRNb2Nr
LmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xpZW50TW9jay5oCkBA
IC0zNCw2ICszNCw4IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJT
cGVlY2hJbnB1dENsaWVudC5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCisjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKICNpZiBFTkFCTEUo
SU5QVVRfU1BFRUNIKQogCkBAIC00NiwxMSArNDgsMTEgQEAgY2xhc3MgU3BlZWNoSW5wdXRDbGll
bnRNb2NrIDogcHVibGljIFNwZWVjaElucHV0Q2xpZW50IHsKIHB1YmxpYzoKICAgICBTcGVlY2hJ
bnB1dENsaWVudE1vY2soKTsKIAotICAgIHZvaWQgc2V0UmVjb2duaXRpb25SZXN1bHQoY29uc3Qg
U3RyaW5nJiByZXN1bHQpOworICAgIHZvaWQgc2V0UmVjb2duaXRpb25SZXN1bHQoY29uc3QgU3Ry
aW5nJiByZXN1bHQsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UpOwogCiAgICAgLy8gU3BlZWNoSW5w
dXRDbGllbnQgbWV0aG9kcy4KICAgICB2b2lkIHNldExpc3RlbmVyKFNwZWVjaElucHV0TGlzdGVu
ZXIqKTsKLSAgICBib29sIHN0YXJ0UmVjb2duaXRpb24oaW50LCBjb25zdCBJbnRSZWN0Jik7Cisg
ICAgYm9vbCBzdGFydFJlY29nbml0aW9uKGludCwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBJ
bnRSZWN0Jik7CiAgICAgdm9pZCBzdG9wUmVjb3JkaW5nKGludCk7CiAgICAgdm9pZCBjYW5jZWxS
ZWNvZ25pdGlvbihpbnQpOwogCkBAIC02MSw3ICs2Myw5IEBAIHByaXZhdGU6CiAgICAgVGltZXI8
U3BlZWNoSW5wdXRDbGllbnRNb2NrPiBtX3RpbWVyOwogICAgIFNwZWVjaElucHV0TGlzdGVuZXIq
IG1fbGlzdGVuZXI7CiAgICAgaW50IG1fcmVxdWVzdElkOwotICAgIFN0cmluZyBtX3JlY29nbml0
aW9uUmVzdWx0OworCisgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gbV9yZWNvZ25pdGlvblJl
c3VsdDsKKyAgICBTdHJpbmcgbV9sYW5ndWFnZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50
cy5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCmlu
ZGV4IDVkNWI4YjMwYjQxMTA1MjBkMWE0ZGU3YjhhNzljNDg1ZDc5MzY2MDguLjY1ZDBhNjQ2MDlk
MjAzNGIxMDk5NTAzZDE2OTE1MWFiZTY2ZGFhM2UgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVy
aW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcv
VGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcApAQCAtMjEsOSArMjEsOSBAQAogICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQogICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwotIAorCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVGV4dENvbnRy
b2xJbm5lckVsZW1lbnRzLmgiCiAKQEAgLTEwNywxOCArMTA3LDE4IEBAIHZvaWQgVGV4dENvbnRy
b2xJbm5lckVsZW1lbnQ6OmF0dGFjaElubmVyRWxlbWVudChOb2RlKiBwYXJlbnQsIFBhc3NSZWZQ
dHI8UmVuZGVyCiAgICAgICAgIHNldFJlbmRlcmVyKHJlbmRlcmVyKTsKICAgICAgICAgcmVuZGVy
ZXItPnNldFN0eWxlKHN0eWxlKTsKICAgICB9Ci0gICAgCisKICAgICAvLyBTZXQgdGhlc2UgZXhw
bGljaXRseSBzaW5jZSB0aGlzIG5vcm1hbGx5IGhhcHBlbnMgZHVyaW5nIGFuIGF0dGFjaCgpCiAg
ICAgc2V0QXR0YWNoZWQoKTsKICAgICBzZXRJbkRvY3VtZW50KCk7Ci0gICAgCisKICAgICAvLyBG
b3IgZWxlbWVudHMgd2l0aG91dCBhIHNoYWRvdyBwYXJlbnQsIGFkZCB0aGUgbm9kZSB0byB0aGUg
RE9NIG5vcm1hbGx5LgogICAgIGlmICghbV9zaGFkb3dQYXJlbnQpIHsKICAgICAgICAgLy8gRklY
TUU6IFRoaXMgY29kZSBzZWVtcyB2ZXJ5IHdyb25nLiAgV2h5IGFyZSB3ZSBtYWdpY2FsbHkgYWRk
aW5nIHx0aGlzfCB0byB0aGUgRE9NIGhlcmU/CiAgICAgICAgIC8vICAgICAgICBXZSBzaG91bGRu
J3QgYmUgY2FsbGluZyBwYXJzZXIgQVBJIG1ldGhvZHMgb3V0c2lkZSBvZiB0aGUgcGFyc2VyIQog
ICAgICAgICBwYXJlbnQtPmRlcHJlY2F0ZWRQYXJzZXJBZGRDaGlsZCh0aGlzKTsKICAgICB9Ci0g
CisKICAgICAvLyBBZGQgdGhlIHJlbmRlcmVyIHRvIHRoZSByZW5kZXIgdHJlZQogICAgIGlmIChy
ZW5kZXJlcikKICAgICAgICAgcGFyZW50LT5yZW5kZXJlcigpLT5hZGRDaGlsZChyZW5kZXJlcik7
CkBAIC0yMDgsNyArMjA4LDcgQEAgdm9pZCBTZWFyY2hGaWVsZENhbmNlbEJ1dHRvbkVsZW1lbnQ6
OmRldGFjaCgpCiB7CiAgICAgaWYgKG1fY2FwdHVyaW5nKSB7CiAgICAgICAgIGlmIChGcmFtZSog
ZnJhbWUgPSBkb2N1bWVudCgpLT5mcmFtZSgpKQotICAgICAgICAgICAgZnJhbWUtPmV2ZW50SGFu
ZGxlcigpLT5zZXRDYXB0dXJpbmdNb3VzZUV2ZW50c05vZGUoMCk7ICAgICAgCisgICAgICAgICAg
ICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPnNldENhcHR1cmluZ01vdXNlRXZlbnRzTm9kZSgwKTsK
ICAgICB9CiAgICAgVGV4dENvbnRyb2xJbm5lckVsZW1lbnQ6OmRldGFjaCgpOwogfQpAQCAtMjgx
LDkgKzI4MSw5IEBAIHZvaWQgU3BpbkJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIo
RXZlbnQqIGV2ZW50KQogICAgIGlmICghYm94KSB7CiAgICAgICAgIGlmICghZXZlbnQtPmRlZmF1
bHRIYW5kbGVkKCkpCiAgICAgICAgICAgICBIVE1MRGl2RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFu
ZGxlcihldmVudCk7Ci0gICAgICAgIHJldHVybjsgICAgICAgIAorICAgICAgICByZXR1cm47CiAg
ICAgfQotICAgIAorCiAgICAgSFRNTElucHV0RWxlbWVudCogaW5wdXQgPSBzdGF0aWNfY2FzdDxI
VE1MSW5wdXRFbGVtZW50Kj4oc2hhZG93QW5jZXN0b3JOb2RlKCkpOwogICAgIGlmIChpbnB1dC0+
ZGlzYWJsZWQoKSB8fCBpbnB1dC0+aXNSZWFkT25seUZvcm1Db250cm9sKCkpIHsKICAgICAgICAg
aWYgKCFldmVudC0+ZGVmYXVsdEhhbmRsZWQoKSkKQEAgLTQzMSw3ICs0MzEsNyBAQCB2b2lkIElu
cHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBl
dmVudCkKICAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuY2xpY2tFdmVudCkg
ewogICAgICAgICBzd2l0Y2ggKG1fc3RhdGUpIHsKICAgICAgICAgY2FzZSBJZGxlOgotICAgICAg
ICAgICAgaWYgKHNwZWVjaElucHV0KCktPnN0YXJ0UmVjb2duaXRpb24obV9saXN0ZW5lcklkLCBp
bnB1dC0+cmVuZGVyZXIoKS0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKSkpCisgICAgICAgICAg
ICBpZiAoc3BlZWNoSW5wdXQoKS0+c3RhcnRSZWNvZ25pdGlvbihtX2xpc3RlbmVySWQsIGlucHV0
LT5jb21wdXRlSW5oZXJpdGVkTGFuZ3VhZ2UoKSwgaW5wdXQtPnJlbmRlcmVyKCktPmFic29sdXRl
Qm91bmRpbmdCb3hSZWN0KCkpKQogICAgICAgICAgICAgICAgIHNldFN0YXRlKFJlY29yZGluZyk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBSZWNvcmRpbmc6CkBAIC00ODcsNyAr
NDg3LDcgQEAgdm9pZCBJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudDo6ZGV0YWNoKCkKIHsK
ICAgICBpZiAobV9jYXB0dXJpbmcpIHsKICAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRvY3Vt
ZW50KCktPmZyYW1lKCkpCi0gICAgICAgICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPnNldENh
cHR1cmluZ01vdXNlRXZlbnRzTm9kZSgwKTsgICAgICAKKyAgICAgICAgICAgIGZyYW1lLT5ldmVu
dEhhbmRsZXIoKS0+c2V0Q2FwdHVyaW5nTW91c2VFdmVudHNOb2RlKDApOwogICAgIH0KIAogICAg
IGlmIChtX3N0YXRlICE9IElkbGUpCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA0M2UxOGVjYjc1Zjk5YzFmY2Zl
MGE3MzJhM2U2YjE4ZmY3ODBhMjU0Li5mNTA4ZDU2M2MyNDQwMGZlOTA2MjlmMzlmZjkyZDAyNDli
OGMxYjEwIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAxMC0xMC0wOCAgTGVhbmRy
byBHcmFjacOhIEdpbCAgPGxlYW5kcm9ncmFjaWFAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXRjaCB0aGUgY3VycmVudCBzcGVl
Y2ggaW5wdXQgaW1wbGVtZW50YXRpb24gdG8gdXNlIGFuZCB2YWxpZGF0ZSB0aGUKKyAgICAgICAg
bmVhcmVzdCBsYW5ndWFnZSB0YWcuIFRoZSBsYW5ndWFnZSBpcyBub3cgcGFzc2VkIHRvIHRoZSBz
dGFydFJlY29nbml0aW9uCisgICAgICAgIG1ldGhvZHMgc28gdGhhdCBsYW5ndWFnZS1zcGVjaWZp
YyByZWNvZ25pdGlvbiBjb3VsZCBiZSB1c2VkLiBBbHNvIGFkZGVkCisgICAgICAgIGEgc2Vjb25k
IHBhcmFtZXRlciB0byBzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQgZm9yIHRoZSBsYW5ndWFnZSB1
c2VkIGluCisgICAgICAgIHNwZWVjaCByZWNvZ25pdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3MDg5CisKKyAgICAgICAgVGhpcyBpcyB0aGUg
Mm5kIG9mIGEgNC1zaWRlZCBwYXRjaCBpbiBDaHJvbWl1bSBhbmQgV2ViS2l0LiBGb3IgbW9yZQor
ICAgICAgICBkZXRhaWxzIHNlZSBodHRwOi8vY29kZXJldmlldy5jaHJvbWl1bS5vcmcvMzYxNTAw
NS9zaG93IGFuZAorICAgICAgICBodHRwOi8vY29kZXJldmlldy5jaHJvbWl1bS5vcmcvMzU5NTAx
OC9zaG93LgorCisgICAgICAgICogcHVibGljL1dlYlNwZWVjaElucHV0Q29udHJvbGxlci5oOgor
ICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXI6OnN0YXJ0UmVjb2duaXRp
b24pOgorICAgICAgICAqIHB1YmxpYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrLmg6Cisg
ICAgICAgICogc3JjL1NwZWVjaElucHV0Q2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlNwZWVjaElucHV0Q2xpZW50SW1wbDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNo
SW5wdXRDbGllbnRJbXBsOjpzdGFydFJlY29nbml0aW9uKToKKyAgICAgICAgKiBzcmMvU3BlZWNo
SW5wdXRDbGllbnRJbXBsLmg6CisgICAgICAgICogc3JjL1dlYlNwZWVjaElucHV0Q29udHJvbGxl
ck1vY2tJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoSW5wdXRDb250cm9sbGVy
TW9ja0ltcGw6OnNldE1vY2tSZWNvZ25pdGlvblJlc3VsdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsOjpzdGFydFJlY29nbml0aW9uKToKKyAgICAg
ICAgKiBzcmMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGwuaDoKKyAgICAgICAgKiBz
cmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6V2ViVmll
d0ltcGwpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5oOgorCiAyMDEwLTEwLTA3ICBaaGVu
eWFvIE1vICA8em1vQGdvb2dsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbCBjaHJv
bWl1bSB0byByNjE5MDIuCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNw
ZWVjaElucHV0Q29udHJvbGxlci5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hJ
bnB1dENvbnRyb2xsZXIuaAppbmRleCA1NDA4NzQxYTNjOTRkM2JmMWM1NDNkOTZlOWZjMTZhNjM5
MGRiMDJmLi4xZmRlMmE4ZTc3NGYzMmU1OGY4ODcyZjI0ODIyMjMwNTljODhjMTQ3IDEwMDY0NAot
LS0gYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaElucHV0Q29udHJvbGxlci5oCisr
KyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyLmgKQEAg
LTM1LDYgKzM1LDcgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIFdlYlN0cmluZzsK
IHN0cnVjdCBXZWJSZWN0OwogCiAvLyBQcm92aWRlcyBhbiBlbWJlZGRlciBBUEkgY2FsbGVkIGJ5
IFdlYktpdC4KQEAgLTQzLDcgKzQ0LDcgQEAgcHVibGljOgogICAgIC8vIFN0YXJ0cyBzcGVlY2gg
cmVjb2duaXRpb24uIFNwZWVjaCB3aWxsIGdldCByZWNvcmRlZCB1bnRpbCB0aGUgZW5kcG9pbnRl
ciBkZXRlY3RzIHNpbGVuY2UsCiAgICAgLy8gcnVucyB0byB0aGUgbGltaXQgb3Igc3RvcFJlY29y
ZGluZyBpcyBjYWxsZWQuIFByb2dyZXNzIGluZGljYXRpb25zIGFuZCB0aGUgcmVjb2duaXplZAog
ICAgIC8vIHRleHQgYXJlIHJldHVybmVkIHZpYSB0aGUgbGlzdGVuZXIgaW50ZXJmYWNlLgotICAg
IHZpcnR1YWwgYm9vbCBzdGFydFJlY29nbml0aW9uKGludCByZXF1ZXN0SWQsIGNvbnN0IFdlYlJl
Y3QmKQorICAgIHZpcnR1YWwgYm9vbCBzdGFydFJlY29nbml0aW9uKGludCByZXF1ZXN0SWQsIGNv
bnN0IFdlYlN0cmluZyYgbGFuZ3VhZ2UsIGNvbnN0IFdlYlJlY3QmIGVsZW1lbnRSZWN0KQogICAg
IHsKICAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaElucHV0
Q29udHJvbGxlck1vY2suaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoSW5wdXRD
b250cm9sbGVyTW9jay5oCmluZGV4IDlhMjYyMzVmZjZkNWRjY2JiZTI0NzI2MmFlNDRhM2FjNzM5
N2MzZjQuLmI0YzUwYTA1ZGNmNWExMmY4NDFiZjliNjc1NWNkMjg4MTdmOGMwOGIgMTAwNjQ0Ci0t
LSBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9jay5o
CisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9j
ay5oCkBAIC00NCw2ICs0NCwxMCBAQCBwdWJsaWM6CiAgICAgICAgIFdlYlNwZWVjaElucHV0TGlz
dGVuZXIqIGxpc3RlbmVyKTsKICAgICB2aXJ0dWFsIH5XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJN
b2NrKCkgeyB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgc2V0TW9ja1JlY29nbml0aW9uUmVzdWx0KGNv
bnN0IFdlYlN0cmluZyYgcmVzdWx0LCBjb25zdCBXZWJTdHJpbmcmIGxhbmd1YWdlKSA9IDA7CisK
KyAgICAvLyBGSVhNRTogdGhpcyBpcyBhIGZpeCBmb3IgYSB0d28tc2lkZWQgcGF0Y2guIERlbGV0
ZSBhcyBzb29uIGFzIHRoZSBjaHJvbWl1bSBzaWRlIGlzIHBhdGNoZWQuCisgICAgLy8gQ2hyb21p
dW0gcGF0Y2ggbm90IHVwbG9hZGVkIHlldCwgYnV0IHdpbGwgZGVwZW5kIG9uIGh0dHA6Ly9jb2Rl
cmV2aWV3LmNocm9taXVtLm9yZy8zNjE1MDA1L3Nob3cgcGF0Y2guCiAgICAgdmlydHVhbCB2b2lk
IHNldE1vY2tSZWNvZ25pdGlvblJlc3VsdChjb25zdCBXZWJTdHJpbmcmIHJlc3VsdCkgPSAwOwog
fTsKIApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9TcGVlY2hJbnB1dENsaWVudElt
cGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9TcGVlY2hJbnB1dENsaWVudEltcGwuY3BwCmlu
ZGV4IDk2M2Q0NDA1YTYyZDMyZTFhOGNlY2Q1NGMwOGM1YmJlYjNhNjJkY2EuLmEzMGQ5ODZhNjZh
MWE2MGMzYTk3MzhjYmE5ZTRmYWZiNTM3YjI3MGYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1
bS9zcmMvU3BlZWNoSW5wdXRDbGllbnRJbXBsLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3Jj
L1NwZWVjaElucHV0Q2xpZW50SW1wbC5jcHAKQEAgLTM2LDExICszNiwxNyBAQAogI2luY2x1ZGUg
IldlYlN0cmluZy5oIgogI2luY2x1ZGUgIldlYlZpZXdDbGllbnQuaCIKICNpbmNsdWRlICJwYWdl
L1NwZWVjaElucHV0TGlzdGVuZXIuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCiAj
aWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK1Bhc3NPd25Q
dHI8U3BlZWNoSW5wdXRDbGllbnRJbXBsPiBTcGVlY2hJbnB1dENsaWVudEltcGw6OmNyZWF0ZShX
ZWJWaWV3Q2xpZW50KiBjbGllbnQpCit7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBTcGVlY2hJ
bnB1dENsaWVudEltcGwoY2xpZW50KSk7Cit9CisKIFNwZWVjaElucHV0Q2xpZW50SW1wbDo6U3Bl
ZWNoSW5wdXRDbGllbnRJbXBsKFdlYlZpZXdDbGllbnQqIHdlYl92aWV3X2NsaWVudCkKICAgICA6
IG1fY29udHJvbGxlcih3ZWJfdmlld19jbGllbnQgPyB3ZWJfdmlld19jbGllbnQtPnNwZWVjaElu
cHV0Q29udHJvbGxlcih0aGlzKSA6IDApCiAgICAgLCBtX2xpc3RlbmVyKDApCkBAIC01NiwxMCAr
NjIsMTAgQEAgdm9pZCBTcGVlY2hJbnB1dENsaWVudEltcGw6OnNldExpc3RlbmVyKFdlYkNvcmU6
OlNwZWVjaElucHV0TGlzdGVuZXIqIGxpc3RlbmVyKQogICAgIG1fbGlzdGVuZXIgPSBsaXN0ZW5l
cjsKIH0KIAotYm9vbCBTcGVlY2hJbnB1dENsaWVudEltcGw6OnN0YXJ0UmVjb2duaXRpb24oaW50
IHJlcXVlc3RJZCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZWxlbWVudFJlY3QpCitib29sIFNw
ZWVjaElucHV0Q2xpZW50SW1wbDo6c3RhcnRSZWNvZ25pdGlvbihpbnQgcmVxdWVzdElkLCBjb25z
dCBXVEY6OlN0cmluZyYgbGFuZ3VhZ2UsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGVsZW1lbnRS
ZWN0KQogewogICAgIEFTU0VSVChtX2xpc3RlbmVyKTsKLSAgICByZXR1cm4gbV9jb250cm9sbGVy
LT5zdGFydFJlY29nbml0aW9uKHJlcXVlc3RJZCwgZWxlbWVudFJlY3QpOworICAgIHJldHVybiBt
X2NvbnRyb2xsZXItPnN0YXJ0UmVjb2duaXRpb24ocmVxdWVzdElkLCBsYW5ndWFnZSwgZWxlbWVu
dFJlY3QpOwogfQogCiB2b2lkIFNwZWVjaElucHV0Q2xpZW50SW1wbDo6c3RvcFJlY29yZGluZyhp
bnQgcmVxdWVzdElkKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9TcGVlY2hJbnB1
dENsaWVudEltcGwuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvU3BlZWNoSW5wdXRDbGllbnRJbXBs
LmgKaW5kZXggODE3YjMyYjEyNDE0YjNhMDdkZmEzYWUzNTE5MDg3ZGVhNWEwZjczMy4uYjQ3MTAz
MDExZjM3NTI4YmY1YTY3ZTM0Nzc5NTAyYWQ5ZDQxYmNjYyAxMDA2NDQKLS0tIGEvV2ViS2l0L2No
cm9taXVtL3NyYy9TcGVlY2hJbnB1dENsaWVudEltcGwuaAorKysgYi9XZWJLaXQvY2hyb21pdW0v
c3JjL1NwZWVjaElucHV0Q2xpZW50SW1wbC5oCkBAIC0zNSw2ICszNSwxMiBAQAogCiAjaW5jbHVk
ZSAiV2ViU3BlZWNoSW5wdXRMaXN0ZW5lci5oIgogI2luY2x1ZGUgInBhZ2UvU3BlZWNoSW5wdXRD
bGllbnQuaCIKKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CisKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgU3RyaW5nOworfQogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBTcGVlY2hJbnB1dExpc3RlbmVyOwpAQCAtNDksMTIgKzU1LDEy
IEBAIGNsYXNzIFNwZWVjaElucHV0Q2xpZW50SW1wbAogICAgIDogcHVibGljIFdlYkNvcmU6OlNw
ZWVjaElucHV0Q2xpZW50LAogICAgICAgcHVibGljIFdlYlNwZWVjaElucHV0TGlzdGVuZXIgewog
cHVibGljOgotICAgIFNwZWVjaElucHV0Q2xpZW50SW1wbChXZWJWaWV3Q2xpZW50Kik7CisgICAg
c3RhdGljIFBhc3NPd25QdHI8U3BlZWNoSW5wdXRDbGllbnRJbXBsPiBjcmVhdGUoV2ViVmlld0Ns
aWVudCopOwogICAgIHZpcnR1YWwgflNwZWVjaElucHV0Q2xpZW50SW1wbCgpOwogCiAgICAgLy8g
U3BlZWNoSW5wdXRDbGllbnQgbWV0aG9kcy4KICAgICB2b2lkIHNldExpc3RlbmVyKFdlYkNvcmU6
OlNwZWVjaElucHV0TGlzdGVuZXIqKTsKLSAgICBib29sIHN0YXJ0UmVjb2duaXRpb24oaW50LCBj
b25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CisgICAgYm9vbCBzdGFydFJlY29nbml0aW9uKGludCwg
Y29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CiAgICAgdm9pZCBz
dG9wUmVjb3JkaW5nKGludCk7CiAgICAgdm9pZCBjYW5jZWxSZWNvZ25pdGlvbihpbnQpOwogCkBA
IC02NCw2ICs3MCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZENvbXBsZXRlUmVjb2duaXRpb24o
aW50KTsKIAogcHJpdmF0ZToKKyAgICBTcGVlY2hJbnB1dENsaWVudEltcGwoV2ViVmlld0NsaWVu
dCopOworCiAgICAgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyKiBtX2NvbnRyb2xsZXI7IC8vIFRv
IGNhbGwgaW50byB0aGUgZW1iZWRkZXIuCiAgICAgV2ViQ29yZTo6U3BlZWNoSW5wdXRMaXN0ZW5l
ciogbV9saXN0ZW5lcjsKIH07CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNw
ZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
U3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGwuY3BwCmluZGV4IDYwYzRmZWQ4NTJiMjg0ZTAy
NzFhZDAwZWQ5NzEwMDJhMmY1N2E0YjYuLmMzZTRhOWU1MzRhOTVkMzZkNzE0NjQ3ZTIyZjNjZWRl
NWNhMzhlMmYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3BlZWNoSW5wdXRD
b250cm9sbGVyTW9ja0ltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3BlZWNo
SW5wdXRDb250cm9sbGVyTW9ja0ltcGwuY3BwCkBAIC01Nyw3ICs1NywxMiBAQCBXZWJTcGVlY2hJ
bnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6fldlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBs
KCkKIAogdm9pZCBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6c2V0TW9ja1JlY29n
bml0aW9uUmVzdWx0KGNvbnN0IFdlYlN0cmluZyYgcmVzdWx0KQogewotICAgIG1fd2ViY29yZU1v
Y2stPnNldFJlY29nbml0aW9uUmVzdWx0KHJlc3VsdCk7CisgICAgbV93ZWJjb3JlTW9jay0+c2V0
UmVjb2duaXRpb25SZXN1bHQocmVzdWx0LCBXZWJTdHJpbmc6OmZyb21VVEY4KCJlbiIpKTsKK30K
Kwordm9pZCBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6c2V0TW9ja1JlY29nbml0
aW9uUmVzdWx0KGNvbnN0IFdlYlN0cmluZyYgcmVzdWx0LCBjb25zdCBXZWJTdHJpbmcgJmxhbmd1
YWdlKQoreworICAgIG1fd2ViY29yZU1vY2stPnNldFJlY29nbml0aW9uUmVzdWx0KHJlc3VsdCwg
bGFuZ3VhZ2UpOwogfQogCiB2b2lkIFdlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsOjpk
aWRDb21wbGV0ZVJlY29yZGluZyhpbnQgcmVxdWVzdElkKQpAQCAtNzUsOSArODAsOSBAQCB2b2lk
IFdlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsOjpzZXRSZWNvZ25pdGlvblJlc3VsdChp
bnQgcmVxdWVzdElkLCBjb25zdAogICAgIG1fbGlzdGVuZXItPnNldFJlY29nbml0aW9uUmVzdWx0
KHJlcXVlc3RJZCwgcmVzdWx0KTsKIH0KIAotYm9vbCBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJN
b2NrSW1wbDo6c3RhcnRSZWNvZ25pdGlvbihpbnQgcmVxdWVzdElkLCBjb25zdCBXZWJSZWN0JiBl
bGVtZW50UmVjdCkKK2Jvb2wgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OnN0YXJ0
UmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCwgY29uc3QgV2ViU3RyaW5nJiBsYW5ndWFnZSwgY29u
c3QgV2ViUmVjdCYgZWxlbWVudFJlY3QpCiB7Ci0gICAgcmV0dXJuIG1fd2ViY29yZU1vY2stPnN0
YXJ0UmVjb2duaXRpb24ocmVxdWVzdElkLCBlbGVtZW50UmVjdCk7CisgICAgcmV0dXJuIG1fd2Vi
Y29yZU1vY2stPnN0YXJ0UmVjb2duaXRpb24ocmVxdWVzdElkLCBsYW5ndWFnZSwgZWxlbWVudFJl
Y3QpOwogfQogCiB2b2lkIFdlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsOjpjYW5jZWxS
ZWNvZ25pdGlvbihpbnQgcmVxdWVzdElkKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbC5oIGIvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbC5oCmluZGV4IGVkYmZjYTNlZTYwZTkz
OTQyODkzZTI3MjE4OTNlNDNhMGViODdjNWYuLjcyMmNmZjQ3OGM5NjA3MWM5YmQ0YjFkYTQ2NDE4
NzY2NWU0NTBlNzIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3BlZWNoSW5w
dXRDb250cm9sbGVyTW9ja0ltcGwuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNwZWVj
aElucHV0Q29udHJvbGxlck1vY2tJbXBsLmgKQEAgLTM2LDYgKzM2LDExIEBACiAjaW5jbHVkZSAi
V2ViU3BlZWNoSW5wdXRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIldlYlN0cmluZy5oIgogI2luY2x1
ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFt
ZXNwYWNlIFdURiB7CitjbGFzcyBTdHJpbmc7Cit9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIFNwZWVjaElucHV0Q2xpZW50TW9jazsKQEAgLTU3LDExICs2MiwxNSBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRSZWNvZ25pdGlvblJlc3VsdChpbnQgcmVxdWVzdElkLCBjb25zdCBXVEY6OlN0
cmluZyYgcmVzdWx0KTsKIAogICAgIC8vIFdlYlNwZWVjaElucHV0Q29udHJvbGxlciBtZXRob2Rz
LgotICAgIGJvb2wgc3RhcnRSZWNvZ25pdGlvbihpbnQgcmVxdWVzdElkLCBjb25zdCBXZWJSZWN0
JiBlbGVtZW50UmVjdCk7CisgICAgYm9vbCBzdGFydFJlY29nbml0aW9uKGludCByZXF1ZXN0SWQs
IGNvbnN0IFdlYlN0cmluZyYgbGFuZ3VhZ2UsIGNvbnN0IFdlYlJlY3QmIGVsZW1lbnRSZWN0KTsK
ICAgICB2b2lkIGNhbmNlbFJlY29nbml0aW9uKGludCByZXF1ZXN0SWQpOwogICAgIHZvaWQgc3Rv
cFJlY29yZGluZyhpbnQgcmVxdWVzdElkKTsKIAogICAgIC8vIFdlYlNwZWVjaElucHV0Q29udHJv
bGxlck1vY2sgbWV0aG9kcy4KKyAgICB2b2lkIHNldE1vY2tSZWNvZ25pdGlvblJlc3VsdChjb25z
dCBXZWJTdHJpbmcmIHJlc3VsdCwgY29uc3QgV2ViU3RyaW5nJiBsYW5ndWFnZSk7CisKKyAgICAv
LyBGSVhNRTogdGhpcyBpcyBhIGZpeCBmb3IgYSB0d28tc2lkZWQgcGF0Y2guIERlbGV0ZSBhcyBz
b29uIGFzIHRoZSBjaHJvbWl1bSBzaWRlIGlzIHBhdGNoZWQuCisgICAgLy8gQ2hyb21pdW0gcGF0
Y2ggbm90IHVwbG9hZGVkIHlldCwgYnV0IHdpbGwgZGVwZW5kIG9uIGh0dHA6Ly9jb2RlcmV2aWV3
LmNocm9taXVtLm9yZy8zNjE1MDA1L3Nob3cgcGF0Y2guCiAgICAgdm9pZCBzZXRNb2NrUmVjb2du
aXRpb25SZXN1bHQoY29uc3QgV2ViU3RyaW5nJiByZXN1bHQpOwogCiBwcml2YXRlOgpAQCAtNzIs
NCArODEsMyBAQCBwcml2YXRlOgogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBX
ZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbF9oCi0KZGlmZiAtLWdpdCBhL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3
SW1wbC5jcHAKaW5kZXggNTk5YzY1ZTBjM2FkNzhiZGQzMzNiM2Q5ZDA1ZjBhMzNiY2E1YzZiOS4u
ZTYyNTlkZTEzMzNkNjNkYWI5ZGU4MDYzMWVmZjhmYTc1NmFjNGRiYyAxMDA2NDQKLS0tIGEvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJWaWV3SW1wbC5jcHAKQEAgLTg4LDYgKzg4LDcgQEAKICNpbmNsdWRlICJTZWN1cml0eU9y
aWdpbi5oIgogI2luY2x1ZGUgIlNlbGVjdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTZXR0
aW5ncy5oIgorI2luY2x1ZGUgIlNwZWVjaElucHV0Q2xpZW50SW1wbC5oIgogI2luY2x1ZGUgIlRp
bWVyLmgiCiAjaW5jbHVkZSAiVHlwaW5nQ29tbWFuZC5oIgogI2luY2x1ZGUgIlVzZXJHZXN0dXJl
SW5kaWNhdG9yLmgiCkBAIC0yNzUsNyArMjc2LDcgQEAgV2ViVmlld0ltcGw6OldlYlZpZXdJbXBs
KFdlYlZpZXdDbGllbnQqIGNsaWVudCwgV2ViRGV2VG9vbHNBZ2VudENsaWVudCogZGV2VG9vbHMK
ICAgICAsIG1fY29tcG9zaXRvckNyZWF0aW9uRmFpbGVkKGZhbHNlKQogI2VuZGlmCiAjaWYgRU5B
QkxFKElOUFVUX1NQRUVDSCkKLSAgICAsIG1fc3BlZWNoSW5wdXRDbGllbnQoY2xpZW50KQorICAg
ICwgbV9zcGVlY2hJbnB1dENsaWVudChTcGVlY2hJbnB1dENsaWVudEltcGw6OmNyZWF0ZShjbGll
bnQpKQogI2VuZGlmCiAgICAgLCBtX2RldmljZU9yaWVudGF0aW9uQ2xpZW50UHJveHkobmV3IERl
dmljZU9yaWVudGF0aW9uQ2xpZW50UHJveHkoY2xpZW50ID8gY2xpZW50LT5kZXZpY2VPcmllbnRh
dGlvbkNsaWVudCgpIDogMCkpCiB7CkBAIC0yOTgsNyArMjk5LDcgQEAgV2ViVmlld0ltcGw6Oldl
YlZpZXdJbXBsKFdlYlZpZXdDbGllbnQqIGNsaWVudCwgV2ViRGV2VG9vbHNBZ2VudENsaWVudCog
ZGV2VG9vbHMKICAgICBwYWdlQ2xpZW50cy5kcmFnQ2xpZW50ID0gJm1fZHJhZ0NsaWVudEltcGw7
CiAgICAgcGFnZUNsaWVudHMuaW5zcGVjdG9yQ2xpZW50ID0gJm1faW5zcGVjdG9yQ2xpZW50SW1w
bDsKICNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQotICAgIHBhZ2VDbGllbnRzLnNwZWVjaElucHV0
Q2xpZW50ID0gJm1fc3BlZWNoSW5wdXRDbGllbnQ7CisgICAgcGFnZUNsaWVudHMuc3BlZWNoSW5w
dXRDbGllbnQgPSBtX3NwZWVjaElucHV0Q2xpZW50LmdldCgpOwogI2VuZGlmCiAgICAgcGFnZUNs
aWVudHMuZGV2aWNlT3JpZW50YXRpb25DbGllbnQgPSBtX2RldmljZU9yaWVudGF0aW9uQ2xpZW50
UHJveHkuZ2V0KCk7CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0lt
cGwuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAppbmRleCBlNTFkZjRkOThl
M2Q4ZTJiNjExMjU1MDM4ZjA4YzYxZmU0MmM3ODc4Li42YzYzNDZkNDA3NzlmOTczNGY2NTgzZDY3
ZGY5YTdkOWE0YTMyZTFlIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJ
bXBsLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCkBAIC00OSw3ICs0
OSw2IEBACiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJv
bWl1bS5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlvblByZXNlbnRlckltcGwuaCIKLSNpbmNsdWRl
ICJTcGVlY2hJbnB1dENsaWVudEltcGwuaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIApAQCAtNzQsNiArNzMsNyBAQCBjbGFzcyBBdXRvRmls
bFBvcHVwTWVudUNsaWVudDsKIGNsYXNzIENvbnRleHRNZW51Q2xpZW50SW1wbDsKIGNsYXNzIERl
dmljZU9yaWVudGF0aW9uQ2xpZW50UHJveHk7CiBjbGFzcyBEcmFnU2Nyb2xsVGltZXI7CitjbGFz
cyBTcGVlY2hJbnB1dENsaWVudEltcGw7CiBjbGFzcyBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0Owog
Y2xhc3MgV2ViRGV2VG9vbHNBZ2VudENsaWVudDsKIGNsYXNzIFdlYkRldlRvb2xzQWdlbnRQcml2
YXRlOwpAQCAtNTM3LDcgKzUzNyw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IFdlYklu
cHV0RXZlbnQqIG1fY3VycmVudElucHV0RXZlbnQ7CiAKICNpZiBFTkFCTEUoSU5QVVRfU1BFRUNI
KQotICAgIFNwZWVjaElucHV0Q2xpZW50SW1wbCBtX3NwZWVjaElucHV0Q2xpZW50OworICAgIE93
blB0cjxTcGVlY2hJbnB1dENsaWVudEltcGw+IG1fc3BlZWNoSW5wdXRDbGllbnQ7CiAjZW5kaWYK
ICAgICAvLyBJZiB3ZSBhdHRlbXB0IHRvIGZldGNoIHRoZSBvbi1zY3JlZW4gR3JhcGhpY3NDb250
ZXh0M0QgYmVmb3JlCiAgICAgLy8gdGhlIGNvbXBvc2l0b3IgaGFzIGJlZW4gdHVybmVkIG9uLCB3
ZSBuZWVkIHRvIGluc3RhbnRpYXRlIGl0CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cgYi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKaW5kZXggMGFiYzIwODc3NjExOTk4ZDVlMzhjODNh
NDc5Mjg5NTA1MTVmZmY4OS4uYjIxOTdlNTQwZmMzZDliZTNkYmYyMTUyMWQyZmEyZDlkZWE5Mjdm
NCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1dlYktpdFRvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEwLTEwLTA4ICBMZWFuZHJvIEdyYWNpw6EgR2ls
ICA8bGVhbmRyb2dyYWNpYUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGEgc2Vjb25kIHBhcmFtZXRlciB0byBzZXRNb2Nr
U3BlZWNoSW5wdXRSZXN1bHQgZm9yCisgICAgICAgIHRoZSBsYW5ndWFnZSB1c2VkIGluIHNwZWVj
aCBpbnB1dC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTQ3MDg5CisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5j
cHA6CisgICAgICAgIChzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHRDYWxsYmFjayk6CisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChM
YXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KToKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwOgorICAgICAg
ICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdCk6CisKIDIw
MTAtMTAtMDggIEFuZHJhcyBCZWNzaSAgPGFiZWNzaUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IENzYWJhIE9zenRyb2dvbsOhYy4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAppbmRleCAwYTdjMTFmZTU4ZTdmZTM2
NmE3MGI2Y2QyMjc0YjM3ZGE1ZDI3ODcyLi4wNjdjZDAxNDIzNDhjYjg1ZTIwNjc4ZjRhMjc1ZWY5
MzUwYzJlNjEwIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRU
ZXN0Q29udHJvbGxlci5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0
VGVzdENvbnRyb2xsZXIuY3BwCkBAIC0xMDcwLDE0ICsxMDcwLDE3IEBAIHN0YXRpYyBKU1ZhbHVl
UmVmIHNldE1vY2tHZW9sb2NhdGlvbkVycm9yQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQs
IEpTT2JqZWN0CiAKIHN0YXRpYyBKU1ZhbHVlUmVmIHNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdENh
bGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmpl
Y3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYg
YXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKLSAgICBpZiAoYXJndW1lbnRD
b3VudCA8IDEpCisgICAgaWYgKGFyZ3VtZW50Q291bnQgPCAyKQogICAgICAgICByZXR1cm4gSlNW
YWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiAKICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1Jl
Zj4gcmVzdWx0KEFkb3B0LCBKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIGFyZ3VtZW50c1sw
XSwgZXhjZXB0aW9uKSk7CiAgICAgQVNTRVJUKCEqZXhjZXB0aW9uKTsKIAorICAgIEpTUmV0YWlu
UHRyPEpTU3RyaW5nUmVmPiBsYW5ndWFnZShBZG9wdCwgSlNWYWx1ZVRvU3RyaW5nQ29weShjb250
ZXh0LCBhcmd1bWVudHNbMV0sIGV4Y2VwdGlvbikpOworICAgIEFTU0VSVCghKmV4Y2VwdGlvbik7
CisKICAgICBMYXlvdXRUZXN0Q29udHJvbGxlciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PExh
eW91dFRlc3RDb250cm9sbGVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKLSAg
ICBjb250cm9sbGVyLT5zZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQocmVzdWx0LmdldCgpKTsKKyAg
ICBjb250cm9sbGVyLT5zZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQocmVzdWx0LmdldCgpLCBsYW5n
dWFnZS5nZXQoKSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7
CiB9CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29u
dHJvbGxlci5oIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xs
ZXIuaAppbmRleCA3NTVhMmIyYjljNjg4NWI3OTZhMDNlNTJkNTAyMGQ4OGI0M2RkOThiLi5iY2Nj
MGEwNjBlZWY4Nzk4NjI0MDI1OTE4ZjM5NjY2MjIyNTg4ZGUxIDEwMDY0NAotLS0gYS9XZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCisrKyBiL1dlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKQEAgLTk0LDcgKzk0LDcg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0TW9ja0RldmljZU9yaWVudGF0aW9uKGJvb2wgY2FuUHJv
dmlkZUFscGhhLCBkb3VibGUgYWxwaGEsIGJvb2wgY2FuUHJvdmlkZUJldGEsIGRvdWJsZSBiZXRh
LCBib29sIGNhblByb3ZpZGVHYW1tYSwgZG91YmxlIGdhbW1hKTsKICAgICB2b2lkIHNldE1vY2tH
ZW9sb2NhdGlvbkVycm9yKGludCBjb2RlLCBKU1N0cmluZ1JlZiBtZXNzYWdlKTsKICAgICB2b2lk
IHNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdp
dHVkZSwgZG91YmxlIGFjY3VyYWN5KTsKLSAgICB2b2lkIHNldE1vY2tTcGVlY2hJbnB1dFJlc3Vs
dChKU1N0cmluZ1JlZiByZXN1bHQpOworICAgIHZvaWQgc2V0TW9ja1NwZWVjaElucHV0UmVzdWx0
KEpTU3RyaW5nUmVmIHJlc3VsdCwgSlNTdHJpbmdSZWYgbGFuZ3VhZ2VUYWcpOwogICAgIHZvaWQg
c2V0UGVyc2lzdGVudFVzZXJTdHlsZVNoZWV0TG9jYXRpb24oSlNTdHJpbmdSZWYgcGF0aCk7CiAg
ICAgdm9pZCBzZXRQbHVnaW5zRW5hYmxlZChib29sIGZsYWcpOwogICAgIHZvaWQgc2V0UG9wdXBC
bG9ja2luZ0VuYWJsZWQoYm9vbCBmbGFnKTsKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcCBiL1dlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAppbmRleCBk
Nzc3NGU5OTY3YmU4NjlhNGQzNTM2OTZmYzA0Y2MzZmRmOTgxZGRhLi4zY2NiNzQyNjQwZjRkMmZh
MTQyYTcxODliMzhlZjMzZWJkNDBmYzk0IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKKysrIGIvV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCkBAIC0x
NTI1LDEwICsxNTI1LDEwIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFib3J0TW9kYWwo
Y29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhCiB2b2lkIExheW91dFRl
c3RDb250cm9sbGVyOjpzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoY29uc3QgQ3BwQXJndW1lbnRM
aXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKIHsKICAgICByZXN1bHQtPnNldE51
bGwoKTsKLSAgICBpZiAoYXJndW1lbnRzLnNpemUoKSA8IDEgfHwgIWFyZ3VtZW50c1swXS5pc1N0
cmluZygpKQorICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpIDwgMiB8fCAhYXJndW1lbnRzWzBdLmlz
U3RyaW5nKCkgfHwgIWFyZ3VtZW50c1sxXS5pc1N0cmluZygpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBtX3NwZWVjaElucHV0Q29udHJvbGxlck1vY2stPnNldE1vY2tSZWNvZ25pdGlvblJlc3Vs
dChjcHBWYXJpYW50VG9XZWJTdHJpbmcoYXJndW1lbnRzWzBdKSk7CisgICAgbV9zcGVlY2hJbnB1
dENvbnRyb2xsZXJNb2NrLT5zZXRNb2NrUmVjb2duaXRpb25SZXN1bHQoY3BwVmFyaWFudFRvV2Vi
U3RyaW5nKGFyZ3VtZW50c1swXSksIGNwcFZhcmlhbnRUb1dlYlN0cmluZyhhcmd1bWVudHNbMV0p
KTsKIH0KIAogV2ViS2l0OjpXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIqIExheW91dFRlc3RDb250
cm9sbGVyOjpzcGVlY2hJbnB1dENvbnRyb2xsZXIoV2ViS2l0OjpXZWJTcGVlY2hJbnB1dExpc3Rl
bmVyKiBsaXN0ZW5lcikKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0
ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCmluZGV4IGQ4MzEwNzYzZGU2NjRmMzk1
MjQwNDRlN2Y4NWY3NzU1YmQ0OGYxYzAuLjg2N2YzMjdkNmY2ZTI2ZGUxMjNhMGNlOWYzMzdiODhk
YzVjZDFlNmIgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlv
dXRUZXN0Q29udHJvbGxlckd0ay5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
Z3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcApAQCAtNDg4LDcgKzQ4OCw3IEBAIHZvaWQg
TGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbihib29sIGFsbG93
KQogICAgIHNldEdlb2xvY2F0aW9uUGVybWlzc2lvbkNvbW1vbihhbGxvdyk7CiB9CiAKLXZvaWQg
TGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdChKU1N0cmluZ1Jl
ZiByZXN1bHQpCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrU3BlZWNoSW5wdXRS
ZXN1bHQoSlNTdHJpbmdSZWYgcmVzdWx0LCBKU1N0cmluZ1JlZiBsYW5ndWFnZSkKIHsKICAgICAv
LyBGSVhNRTogSW1wbGVtZW50IGZvciBzcGVlY2ggaW5wdXQgbGF5b3V0IHRlc3RzLgogICAgIC8v
IFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk0ODUuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70248</attachid>
            <date>2010-10-08 07:20:08 -0700</date>
            <delta_ts>2010-10-08 08:49:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47089-20101008152003.patch</filename>
            <type>text/plain</type>
            <size>35519</size>
            <attacher name="Leandro Graciá Gil">leandrogracia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhNWU4NTI5ZjBlMzg2YjA3MTk0YmRiNjVlOWFmNGE5NjQ2NGFhMWZmLi5mOGU1ZGQx
MzI4OTkzNjYxYzZmNDdkYzgzMTIxNzcyNzk4NDQwMDIwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAK
KzIwMTAtMTAtMDggIExlYW5kcm8gR3JhY2nDoSBHaWwgIDxsZWFuZHJvZ3JhY2lhQGdvb2dsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
ZWQgYSBsYXlvdXQgdGVzdCBmb3IgdGhlIGxhbmd1YWdlIHRhZyBpbiBzcGVlY2ggaW5wdXQuIFVw
ZGF0ZWQKKyAgICAgICAgdGhlIHNwZWVjaCBidXR0b24gdGVzdHMgdG8gaW5jbHVkZSB0aGUgbmV3
IGxhbmd1YWdlIHBhcmFtZXRlciBpbiB0aGUKKyAgICAgICAgbW9jayByZXN1bHQuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzA4OQorCisgICAgICAg
ICogZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1sYW5ndWFnZS10YWctZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L3NwZWVjaC9pbnB1dC10ZXh0LWxhbmd1YWdlLXRhZy5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L3NwZWVjaC9pbnB1dC10ZXh0LXNwZWVjaGJ1dHRvbi5odG1s
OiBBZGRlZCBhbiBlbXB0eSBsYW5ndWFnZQorICAgICAgICAgIHBhcmFtZXRlci4KKyAgICAgICAg
KiBmYXN0L3NwZWVjaC9zcGVlY2gtYnV0dG9uLWlnbm9yZS1nZW5lcmF0ZWQtZXZlbnRzLmh0bWw6
IEFkZGVkIGFuCisgICAgICAgICAgZW1wdHkgbGFuZ3VhZ2UgcGFyYW1ldGVyLgorCiAyMDEwLTEw
LTA4ICBOaWtvbGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkByaW0uY29tPgogCiAgICAgICAg
IE5vdCByZXZpZXdlZC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL2lucHV0
LXRleHQtbGFuZ3VhZ2UtdGFnLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNo
L2lucHV0LXRleHQtbGFuZ3VhZ2UtdGFnLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MWYzMGQ2
OTZmNWQyNTBmMTRhZjU2Yjk5YjRlNzBjODc5YzBlNTAyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1sYW5ndWFnZS10YWctZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMTMgQEAKK1Rlc3RzIGZvciBsYW5ndWFnZSB0YWcgaW5oZXJpdGFuY2UgYW5k
IHZhbGlkYXRpb24gaW4gc3BlZWNoIGJ1dHRvbnMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworCitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzcGVlY2hJbnB1dE5vbmUiKS52
YWx1ZSBpcyAiZXJyb3I6IG5vIHJlc3VsdCBmb3VuZCBmb3IgbGFuZ3VhZ2UgJyciCitQQVNTIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJzcGVlY2hJbnB1dEVsZW1lbnQiKS52YWx1ZSBpcyAiUGlj
dHVyZXMgb2YgdGhlIG1vb24iCitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzcGVlY2hJ
bnB1dEluaGVyaXRlZCIpLnZhbHVlIGlzICLmnIjjga7lhpnnnJ8iCitQQVNTIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJzcGVlY2hJbnB1dEludmFsaWQiKS52YWx1ZSBpcyAiZXJyb3I6IG5vIHJl
c3VsdCBmb3VuZCBmb3IgbGFuZ3VhZ2UgJyciCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKyAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc3Bl
ZWNoL2lucHV0LXRleHQtbGFuZ3VhZ2UtdGFnLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVj
aC9pbnB1dC10ZXh0LWxhbmd1YWdlLXRhZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjliZmM4MjI2MmVlMzBh
MmM1ZmE1ZTI1ODE2MWVhOGExZTE4ZTY1YWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L3NwZWVjaC9pbnB1dC10ZXh0LWxhbmd1YWdlLXRhZy5odG1sCkBAIC0wLDAgKzEsNjIg
QEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1s
PgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0i
Li4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxz
Y3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KK2Rlc2NyaXB0aW9uKCdUZXN0cyBmb3IgbGFu
Z3VhZ2UgdGFnIGluaGVyaXRhbmNlIGFuZCB2YWxpZGF0aW9uIGluIHNwZWVjaCBidXR0b25zLicp
OworCisvLyBOb3RlOiB0ZXN0IGNhc2VzIGFyZSBzZXF1ZW50aWFsIHRvIGVuc3VyZSB0aGF0IG5v
IG5ldyByZWNvZ25pdGlvbiBzdGFydHMgd2hlbiBhbm90aGVyIHJlY29nbml0aW9uIHJlY29yZGlu
ZyBpcyBhY3RpdmUuCitmdW5jdGlvbiBvbkNoYW5nZU5vbmUoKSB7CisgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCdkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3BlZWNoSW5wdXROb25lIikudmFs
dWUnLCAnZXJyb3I6IG5vIHJlc3VsdCBmb3VuZCBmb3IgbGFuZ3VhZ2UgXCdcJycpOworICAgIHNl
dFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNwZWVjaEJ1dHRvbkNsaWNrKCdzcGVlY2hJbnB1dEVsZW1l
bnQnKTsgfSwgNTApOworfQorCitmdW5jdGlvbiBvbkNoYW5nZUVsZW1lbnQoKSB7CisgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCdkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3BlZWNoSW5wdXRF
bGVtZW50IikudmFsdWUnLCAnUGljdHVyZXMgb2YgdGhlIG1vb24nKTsKKyAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgeyBzcGVlY2hCdXR0b25DbGljaygnc3BlZWNoSW5wdXRJbmhlcml0ZWQnKTsg
fSwgNTApOworfQorCitmdW5jdGlvbiBvbkNoYW5nZUluaGVyaXRlZCgpIHsKKyAgICBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoJ2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzcGVlY2hJbnB1dEluaGVy
aXRlZCIpLnZhbHVlJywgJ+aciOOBruWGmeecnycpOworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IHNwZWVjaEJ1dHRvbkNsaWNrKCdzcGVlY2hJbnB1dEludmFsaWQnKTsgfSwgNTApOworfQor
CitmdW5jdGlvbiBvbkNoYW5nZUludmFsaWQoKSB7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCdkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3BlZWNoSW5wdXRJbnZhbGlkIikudmFsdWUnLCAn
ZXJyb3I6IG5vIHJlc3VsdCBmb3VuZCBmb3IgbGFuZ3VhZ2UgXCdcJycpOworICAgIGZpbmlzaEpT
VGVzdCgpOworfQorCitmdW5jdGlvbiBzcGVlY2hCdXR0b25DbGljayhlbGVtZW50SWQpIHsKKyAg
ICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJZCk7CisgICAg
dmFyIHggPSBlbGVtZW50Lm9mZnNldExlZnQgKyBlbGVtZW50Lm9mZnNldFdpZHRoIC0gNDsKKyAg
ICB2YXIgeSA9IGVsZW1lbnQub2Zmc2V0VG9wICsgZWxlbWVudC5vZmZzZXRIZWlnaHQgLyAyOwor
ICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGV2ZW50U2VuZGVyLm1vdXNl
RG93bigpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKK30KKworZnVuY3Rpb24gcnVuKCkg
eworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIgJiYgd2luZG93LmV2ZW50U2Vu
ZGVyKSB7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldE1vY2tTcGVlY2hJbnB1dFJl
c3VsdCgnUGljdHVyZXMgb2YgdGhlIG1vb24nLCAnZW4tR0InKTsKKyAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuc2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KCfmnIjjga7lhpnnnJ8nLCAnamEn
KTsKKyAgICAgICAgc3BlZWNoQnV0dG9uQ2xpY2soJ3NwZWVjaElucHV0Tm9uZScpOworICAgIH0K
K30KKword2luZG93Lm9ubG9hZCA9IHJ1bjsKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsK
K3dpbmRvdy5zdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8aW5wdXQgaWQ9
InNwZWVjaElucHV0Tm9uZSIgeC13ZWJraXQtc3BlZWNoIG9ud2Via2l0c3BlZWNoY2hhbmdlPSJv
bkNoYW5nZU5vbmUoKSI+Cis8aW5wdXQgaWQ9InNwZWVjaElucHV0RWxlbWVudCIgeC13ZWJraXQt
c3BlZWNoIG9ud2Via2l0c3BlZWNoY2hhbmdlPSJvbkNoYW5nZUVsZW1lbnQoKSIgbGFuZz0iZW4t
R0IiPgorPGRpdiBsYW5nPSJqYSI+IDxpbnB1dCBpZD0ic3BlZWNoSW5wdXRJbmhlcml0ZWQiIHgt
d2Via2l0LXNwZWVjaCBvbndlYmtpdHNwZWVjaGNoYW5nZT0ib25DaGFuZ2VJbmhlcml0ZWQoKSI+
IDwvZGl2PgorPGlucHV0IGlkPSJzcGVlY2hJbnB1dEludmFsaWQiIHgtd2Via2l0LXNwZWVjaCBv
bndlYmtpdHNwZWVjaGNoYW5nZT0ib25DaGFuZ2VJbnZhbGlkKCkiIGxhbmc9IjEzMzckw74zzrtr
Ij4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNo
L2lucHV0LXRleHQtc3BlZWNoYnV0dG9uLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9p
bnB1dC10ZXh0LXNwZWVjaGJ1dHRvbi5odG1sCmluZGV4IDZmNWJjNGIxMjFmYjRmOWQ5ZGRhNmMz
MzFmOGIyNmRjMWNkNDM5OTQuLmNlZjc3MDU2YjE3ZDFjZDQ1MWI0OTBiN2MxZjI0NmJhNmM4OTUw
ZGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL2lucHV0LXRleHQtc3BlZWNo
YnV0dG9uLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1zcGVl
Y2hidXR0b24uaHRtbApAQCAtMzIsNyArMzIsNyBAQCBmdW5jdGlvbiBvbldlYmtpdFNwZWVjaENo
YW5nZSgpIHsKIAogZnVuY3Rpb24gcnVuKCkgewogICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIgJiYgd2luZG93LmV2ZW50U2VuZGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdCgnUGljdHVyZXMgb2YgdGhlIG1vb24nKTsK
KyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KCdQ
aWN0dXJlcyBvZiB0aGUgbW9vbicsICcnKTsKIAogICAgICAgICAvLyBDbGlja2luZyB0aGUgc3Bl
ZWNoIGJ1dHRvbiBzaG91bGQgZmlsbCBpbiBtb2NrIHNwZWVjaC1yZWNvZ25pemVkIHRleHQuCiAg
ICAgICAgIHZhciBpbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzcGVlY2hJbnB1dCcp
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvc3BlZWNoLWJ1dHRvbi1pZ25v
cmUtZ2VuZXJhdGVkLWV2ZW50cy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvc3BlZWNo
LWJ1dHRvbi1pZ25vcmUtZ2VuZXJhdGVkLWV2ZW50cy5odG1sCmluZGV4IGI5YjhlYzM2NjA1NTc5
ZjJiMTI2ZDZmMWRhMzU2MGM2NzJhZDJiNzEuLmM2ODQ4NjM3NzA1MzM5OWIyOWQwNGZjMjk5MDdl
NTVlOGFiZjA2MDggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL3NwZWVjaC1i
dXR0b24taWdub3JlLWdlbmVyYXRlZC1ldmVudHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L3NwZWVjaC9zcGVlY2gtYnV0dG9uLWlnbm9yZS1nZW5lcmF0ZWQtZXZlbnRzLmh0bWwKQEAgLTQ5
LDcgKzQ5LDcgQEAgZnVuY3Rpb24gc2V0dXBEaXNwYXRjaEV2ZW50VGVzdCgpIHsKIGZ1bmN0aW9u
IHJ1bigpIHsKICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyICYmIHdpbmRvdy5l
dmVudFNlbmRlcikgewogICAgICAgICAvLyBSdW5uaW5nIGluIERSVCwgdGVzdCB0aGUgZXZlbnRT
ZW5kZXIgY2FzZS4KLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja1NwZWVjaElu
cHV0UmVzdWx0KCdQaWN0dXJlcyBvZiB0aGUgbW9vbicpOworICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5zZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoJ1BpY3R1cmVzIG9mIHRoZSBtb29uJywg
JycpOwogICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3BlZWNoSW5wdXQnKS5vbndl
YmtpdHNwZWVjaGNoYW5nZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCdkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3BlZWNoSW5wdXQiKS52YWx1ZScs
ICdQaWN0dXJlcyBvZiB0aGUgbW9vbicpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDM4MWE5ZTlhNjE4ODI2NWE5YWMyYjIyNWYxYTEw
NjBhN2MwNWU5MWIuLmZmNWU2YjU5Mjk4MDExZmU3MDUzYjg5OWVjMmNkYjE4Nzk3NDY2ZTIgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNDAgQEAKKzIwMTAtMTAtMDggIExlYW5kcm8gR3JhY2nDoSBHaWwgIDxsZWFuZHJvZ3Jh
Y2lhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgUGF0Y2ggdGhlIGN1cnJlbnQgc3BlZWNoIGlucHV0IGltcGxlbWVudGF0aW9uIHRv
IHVzZSBhbmQgdmFsaWRhdGUgdGhlCisgICAgICAgIG5lYXJlc3QgbGFuZ3VhZ2UgdGFnLiBUaGUg
bGFuZ3VhZ2UgaXMgbm93IHBhc3NlZCB0byB0aGUgc3RhcnRSZWNvZ25pdGlvbgorICAgICAgICBt
ZXRob2RzIHNvIHRoYXQgbGFuZ3VhZ2Utc3BlY2lmaWMgcmVjb2duaXRpb24gY291bGQgYmUgdXNl
ZC4gQWxzbyBhZGRlZAorICAgICAgICBhIHNlY29uZCBwYXJhbWV0ZXIgdG8gc2V0TW9ja1NwZWVj
aElucHV0UmVzdWx0IGZvciB0aGUgbGFuZ3VhZ2UgdXNlZCBpbgorICAgICAgICBzcGVlY2ggcmVj
b2duaXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD00NzA4OQorCisgICAgICAgIFRoaXMgaXMgdGhlIDJuZCBvZiBhIDQtc2lkZWQgcGF0Y2ggaW4g
Q2hyb21pdW0gYW5kIFdlYktpdC4gRm9yIG1vcmUKKyAgICAgICAgZGV0YWlscyBzZWUgaHR0cDov
L2NvZGVyZXZpZXcuY2hyb21pdW0ub3JnLzM2MTUwMDUvc2hvdyBhbmQKKyAgICAgICAgaHR0cDov
L2NvZGVyZXZpZXcuY2hyb21pdW0ub3JnLzM1OTUwMTgvc2hvdy4KKworICAgICAgICBUZXN0OiBm
YXN0L3NwZWVjaC9pbnB1dC10ZXh0LWxhbmd1YWdlLXRhZy5odG1sCisKKyAgICAgICAgKiBkb20v
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojpjb21wdXRlSW5oZXJpdGVk
TGFuZ3VhZ2UpOiBpbmNsdWRlcyBhIGJyaWVmIGNoYXJhY3RlcgorICAgICAgICAgIHZhbGlkYXRp
b24gZm9yIHRoZSBCQ1AgNDcgbGFuZ3VhZ2UgdGFnLgorICAgICAgICAqIHBhZ2UvU3BlZWNoSW5w
dXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoSW5wdXQ6OnN0YXJ0UmVjb2duaXRpb24p
OgorICAgICAgICAqIHBhZ2UvU3BlZWNoSW5wdXQuaDoKKyAgICAgICAgKiBwYWdlL1NwZWVjaElu
cHV0Q2xpZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9TcGVlY2hJbnB1dENsaWVudE1v
Y2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoSW5wdXRDbGllbnRNb2NrOjpzdGFydFJl
Y29nbml0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaElucHV0Q2xpZW50TW9jazo6c2V0
UmVjb2duaXRpb25SZXN1bHQpOiByZXN1bHRzIGFyZSBub3cKKyAgICAgICAgICBzdG9yZWQgYnkg
bGFuZ3VhZ2UgdXNpbmcgYSBoYXNoIG1hcC4KKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaElucHV0
Q2xpZW50TW9jazo6dGltZXJGaXJlZCk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9TcGVlY2hJ
bnB1dENsaWVudE1vY2suaDoKKyAgICAgICAgKiByZW5kZXJpbmcvVGV4dENvbnRyb2xJbm5lckVs
ZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb250cm9sSW5uZXJFbGVtZW50Ojph
dHRhY2hJbm5lckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoRmllbGRDYW5jZWxC
dXR0b25FbGVtZW50OjpkZXRhY2gpOgorICAgICAgICAoV2ViQ29yZTo6U3BpbkJ1dHRvbkVsZW1l
bnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRGaWVsZFNw
ZWVjaEJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQ6OmRldGFjaCk6CisKIDIwMTAtMTAtMDgg
IEFuZHJlYXMgS2xpbmcgIDxhbmRyZWFzLmtsaW5nQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBOaWtvbGFzIFppbW1lcm1hbm4uCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcCBiL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IDYwYTEwNjNjNGQyOGQyODJm
Njc3MzY2NzNjNDNjY2RlOGU2YWNmZjQuLjVhNDJjZDM4ODI3YjA4ZTQ4NGU0NmY4YTA5MjJlOWMy
NzI2MTMxYjQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1dlYkNv
cmUvZG9tL0VsZW1lbnQuY3BwCkBAIC01Niw2ICs1Niw3IEBACiAjaW5jbHVkZSAiU2V0dGluZ3Mu
aCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJYTUxOYW1lcy5oIgorI2lu
Y2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgog
CiAjaWYgRU5BQkxFKFNWRykKQEAgLTE0NjgsNiArMTQ2OSwxNSBAQCBBdG9taWNTdHJpbmcgRWxl
bWVudDo6Y29tcHV0ZUluaGVyaXRlZExhbmd1YWdlKCkgY29uc3QKICAgICAgICAgbiA9IG4tPnBh
cmVudCgpOwogICAgIH0KIAorICAgIGlmICghdmFsdWUuaXNOdWxsKCkgJiYgIXZhbHVlLmlzRW1w
dHkoKSkgeworICAgICAgICAvLyBPbmx5IEEtWmEtejAtOSBhbmQgJy0nIGFyZSBhbGxvd2VkIGlu
IHRoZSBsYW5ndWFnZSB0YWcgKHNlZSBCQ1AgNDcpCisgICAgICAgIENTdHJpbmcgbGFuZ3VhZ2VU
YWcgPSB2YWx1ZS5zdHJpbmcoKS5hc2NpaSgpOworICAgICAgICBmb3IgKGNvbnN0IGNoYXIgKnAg
PSBsYW5ndWFnZVRhZy5kYXRhKCk7ICpwICE9ICdcMCc7ICsrcCkgeworICAgICAgICAgICAgaWYg
KCFpc0FTQ0lJQWxwaGFudW1lcmljKCpwKSAmJiAqcCAhPSAnLScpCisgICAgICAgICAgICAgICAg
cmV0dXJuIEF0b21pY1N0cmluZygpOworICAgICAgICB9CisgICAgfQorCiAgICAgcmV0dXJuIHZh
bHVlOwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXQuY3BwIGIvV2Vi
Q29yZS9wYWdlL1NwZWVjaElucHV0LmNwcAppbmRleCAyMzQ3OTFiYzRiMTNmNDNkZjlkMTczOWQ1
ZDIwNWY5YWEyN2UyMDcyLi5jYzVlMGY5N2ZiYWJmOWFmYTNmNDM1OWM3MjZiYWM4N2U1MzQxOGNm
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXQuY3BwCisrKyBiL1dlYkNvcmUv
cGFnZS9TcGVlY2hJbnB1dC5jcHAKQEAgLTkzLDEwICs5MywxMCBAQCB2b2lkIFNwZWVjaElucHV0
OjpzZXRSZWNvZ25pdGlvblJlc3VsdChpbnQgbGlzdGVuZXJJZCwgY29uc3QgU3RyaW5nJiByZXN1
bHQpCiAgICAgICAgIG1fbGlzdGVuZXJzLmdldChsaXN0ZW5lcklkKS0+c2V0UmVjb2duaXRpb25S
ZXN1bHQobGlzdGVuZXJJZCwgcmVzdWx0KTsKIH0KIAotYm9vbCBTcGVlY2hJbnB1dDo6c3RhcnRS
ZWNvZ25pdGlvbihpbnQgbGlzdGVuZXJJZCwgY29uc3QgSW50UmVjdCYgZWxlbWVudFJlY3QpCiti
b29sIFNwZWVjaElucHV0OjpzdGFydFJlY29nbml0aW9uKGludCBsaXN0ZW5lcklkLCBjb25zdCBT
dHJpbmcmIGxhbmd1YWdlLCBjb25zdCBJbnRSZWN0JiBlbGVtZW50UmVjdCkKIHsKICAgICBBU1NF
UlQobV9saXN0ZW5lcnMuY29udGFpbnMobGlzdGVuZXJJZCkpOwotICAgIHJldHVybiBtX2NsaWVu
dC0+c3RhcnRSZWNvZ25pdGlvbihsaXN0ZW5lcklkLCBlbGVtZW50UmVjdCk7CisgICAgcmV0dXJu
IG1fY2xpZW50LT5zdGFydFJlY29nbml0aW9uKGxpc3RlbmVySWQsIGxhbmd1YWdlLCBlbGVtZW50
UmVjdCk7CiB9CiAKIHZvaWQgU3BlZWNoSW5wdXQ6OnN0b3BSZWNvcmRpbmcoaW50IGxpc3RlbmVy
SWQpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXQuaCBiL1dlYkNvcmUvcGFn
ZS9TcGVlY2hJbnB1dC5oCmluZGV4IGQxMGI3ODlhYWQyNzM5ZWRkM2JmNDUzMGU3YzZlMDBjNGUy
ZGFlOGEuLjhiNDI2ZjU2MzEzNmVkNjUxZGQ2NDU2ZTgzNWI0ZDQ0NTNhYjgwMTIgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dC5oCisrKyBiL1dlYkNvcmUvcGFnZS9TcGVlY2hJ
bnB1dC5oCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHVucmVnaXN0ZXJMaXN0
ZW5lcihpbnQpOwogCiAgICAgLy8gTWV0aG9kcyBpbnZva2VkIGJ5IHRoZSBpbnB1dCBlbGVtZW50
cy4KLSAgICBib29sIHN0YXJ0UmVjb2duaXRpb24oaW50LCBjb25zdCBJbnRSZWN0Jik7CisgICAg
Ym9vbCBzdGFydFJlY29nbml0aW9uKGludCwgY29uc3QgU3RyaW5nJiwgY29uc3QgSW50UmVjdCYp
OwogICAgIHZvaWQgc3RvcFJlY29yZGluZyhpbnQpOwogICAgIHZvaWQgY2FuY2VsUmVjb2duaXRp
b24oaW50KTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0Q2xpZW50Lmgg
Yi9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXRDbGllbnQuaAppbmRleCBkNWZkYTE3ZmFhMmNkNzk1
YWY0NGY1M2E0NmZjYmE1OTc0MWFiNzZjLi4zOGJmZTRmYzQ1NTI5ZjAwNzIyNDNmZWFkOGY3YmM2
ZmE5ZGFhNmZiIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXRDbGllbnQuaAor
KysgYi9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXRDbGllbnQuaApAQCAtMzMsNiArMzMsMTAgQEAK
IAogI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCiAKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgU3Ry
aW5nOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEludFJlY3Q7CkBAIC00OCw3
ICs1Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0TGlzdGVuZXIoU3BlZWNoSW5w
dXRMaXN0ZW5lciopID0gMDsKIAogICAgIC8vIFN0YXJ0cyBzcGVlY2ggcmVjb2duaXRpb24gYW5k
IGF1ZGlvIHJlY29yZGluZy4KLSAgICB2aXJ0dWFsIGJvb2wgc3RhcnRSZWNvZ25pdGlvbihpbnQg
cmVxdWVzdElkLCBjb25zdCBJbnRSZWN0JiBlbGVtZW50UmVjdCkgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCBzdGFydFJlY29nbml0aW9uKGludCByZXF1ZXN0SWQsIGNvbnN0IFdURjo6U3RyaW5nJiBs
YW5ndWFnZSwgY29uc3QgSW50UmVjdCYgZWxlbWVudFJlY3QpID0gMDsKIAogICAgIC8vIFN0b3Bz
IGF1ZGlvIHJlY29yZGluZyBhbmQgcGVyZm9ybXMgcmVjb2duaXRpb24gd2l0aCB0aGUgYXVkaW8g
cmVjb3JkZWQgdW50aWwgbm93CiAgICAgLy8gKGRvZXMgbm90IGRpc2NhcmQgYXVkaW8pLgpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xpZW50TW9jay5jcHAg
Yi9XZWJDb3JlL3BsYXRmb3JtL21vY2svU3BlZWNoSW5wdXRDbGllbnRNb2NrLmNwcAppbmRleCA2
YjY0OTQyZjE3YjkyNWI0OWVmMDkyMTQ3YzBhMTZhMDdmMGQ3Y2NjLi42YzdkNjViOTI0MzM4ODk1
MDk5MDBlZTM2MDcwYjEyY2M0ZGM1MzNlIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svU3BlZWNoSW5wdXRDbGllbnRNb2NrLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
U3BlZWNoSW5wdXRDbGllbnRNb2NrLmNwcApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiU3BlZWNoSW5wdXRDbGllbnRNb2NrLmgiCisjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgogCiAjaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKIApAQCAtNTAs
MTIgKzUxLDEzIEBAIHZvaWQgU3BlZWNoSW5wdXRDbGllbnRNb2NrOjpzZXRMaXN0ZW5lcihTcGVl
Y2hJbnB1dExpc3RlbmVyKiBsaXN0ZW5lcikKICAgICBtX2xpc3RlbmVyID0gbGlzdGVuZXI7CiB9
CiAKLWJvb2wgU3BlZWNoSW5wdXRDbGllbnRNb2NrOjpzdGFydFJlY29nbml0aW9uKGludCByZXF1
ZXN0SWQsIGNvbnN0IEludFJlY3QmKQorYm9vbCBTcGVlY2hJbnB1dENsaWVudE1vY2s6OnN0YXJ0
UmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSwgY29uc3Qg
SW50UmVjdCYpCiB7CiAgICAgaWYgKG1fdGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIG1fcmVxdWVzdElkID0gcmVxdWVzdElkOwogICAgIG1fcmVjb3JkaW5nID0g
dHJ1ZTsKKyAgICBtX2xhbmd1YWdlID0gbGFuZ3VhZ2U7CiAgICAgbV90aW1lci5zdGFydE9uZVNo
b3QoMCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC04MCw5ICs4MiwxMiBAQCB2b2lkIFNwZWVj
aElucHV0Q2xpZW50TW9jazo6Y2FuY2VsUmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCkKICAgICB9
CiB9CiAKLXZvaWQgU3BlZWNoSW5wdXRDbGllbnRNb2NrOjpzZXRSZWNvZ25pdGlvblJlc3VsdChj
b25zdCBTdHJpbmcmIHJlc3VsdCkKK3ZvaWQgU3BlZWNoSW5wdXRDbGllbnRNb2NrOjpzZXRSZWNv
Z25pdGlvblJlc3VsdChjb25zdCBTdHJpbmcmIHJlc3VsdCwgY29uc3QgU3RyaW5nJiBsYW5ndWFn
ZSkKIHsKLSAgICBtX3JlY29nbml0aW9uUmVzdWx0ID0gcmVzdWx0OworICAgIGlmIChsYW5ndWFn
ZS5pc0VtcHR5KCkpCisgICAgICAgIG1fcmVjb2duaXRpb25SZXN1bHQuc2V0KCJfIiwgcmVzdWx0
KTsKKyAgICBlbHNlCisgICAgICAgIG1fcmVjb2duaXRpb25SZXN1bHQuc2V0KGxhbmd1YWdlLCBy
ZXN1bHQpOwogfQogCiB2b2lkIFNwZWVjaElucHV0Q2xpZW50TW9jazo6dGltZXJGaXJlZChXZWJD
b3JlOjpUaW1lcjxTcGVlY2hJbnB1dENsaWVudE1vY2s+KikKQEAgLTkyLDcgKzk3LDE2IEBAIHZv
aWQgU3BlZWNoSW5wdXRDbGllbnRNb2NrOjp0aW1lckZpcmVkKFdlYkNvcmU6OlRpbWVyPFNwZWVj
aElucHV0Q2xpZW50TW9jaz4qKQogICAgICAgICBtX2xpc3RlbmVyLT5kaWRDb21wbGV0ZVJlY29y
ZGluZyhtX3JlcXVlc3RJZCk7CiAgICAgICAgIG1fdGltZXIuc3RhcnRPbmVTaG90KDApOwogICAg
IH0gZWxzZSB7Ci0gICAgICAgIG1fbGlzdGVuZXItPnNldFJlY29nbml0aW9uUmVzdWx0KG1fcmVx
dWVzdElkLCBtX3JlY29nbml0aW9uUmVzdWx0KTsKKyAgICAgICAgLy8gRW1wdHkgbGFuZ3VhZ2Ug
c3RyaW5ncyBjcmFzaCB0aGUgSGFzaE1hcC4gVXNpbmcgYW4gaW52YWxpZCBsYW5ndWFnZSB2YWx1
ZSBmb3IgdGhhdCBjYXNlLgorICAgICAgICBTdHJpbmcgbGFuZ3VhZ2UgPSBtX2xhbmd1YWdlLmlz
RW1wdHkoKSA/IFN0cmluZygiXyIpIDogbV9sYW5ndWFnZTsKKyAgICAgICAgaWYgKCFtX3JlY29n
bml0aW9uUmVzdWx0LmNvbnRhaW5zKGxhbmd1YWdlKSkgeworICAgICAgICAgICAgU3RyaW5nIGVy
cm9yKCJlcnJvcjogbm8gcmVzdWx0IGZvdW5kIGZvciBsYW5ndWFnZSAnIik7CisgICAgICAgICAg
ICBlcnJvci5hcHBlbmQobV9sYW5ndWFnZSk7CisgICAgICAgICAgICBlcnJvci5hcHBlbmQoIici
KTsKKyAgICAgICAgICAgIG1fbGlzdGVuZXItPnNldFJlY29nbml0aW9uUmVzdWx0KG1fcmVxdWVz
dElkLCBlcnJvcik7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbV9saXN0ZW5lci0+c2V0
UmVjb2duaXRpb25SZXN1bHQobV9yZXF1ZXN0SWQsIG1fcmVjb2duaXRpb25SZXN1bHQuZ2V0KGxh
bmd1YWdlKSk7CisKICAgICAgICAgbV9saXN0ZW5lci0+ZGlkQ29tcGxldGVSZWNvZ25pdGlvbiht
X3JlcXVlc3RJZCk7CiAgICAgICAgIG1fcmVxdWVzdElkID0gMDsKICAgICB9CmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BsYXRmb3JtL21vY2svU3BlZWNoSW5wdXRDbGllbnRNb2NrLmggYi9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svU3BlZWNoSW5wdXRDbGllbnRNb2NrLmgKaW5kZXggY2U4M2QzYmI5Y2I4
OGIwYTNhOTViNTQ5NTQyN2QyOTkxZjJlMGI0Zi4uYjY3NDRmMTA1NjEyYmUwYzJkOWUzY2M3Njk2
ZDhjMzdmNjljMDAzNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1NwZWVjaElu
cHV0Q2xpZW50TW9jay5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TcGVlY2hJbnB1dENs
aWVudE1vY2suaApAQCAtMzQsNiArMzQsOCBAQAogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgi
CiAjaW5jbHVkZSAiU3BlZWNoSW5wdXRDbGllbnQuaCIKICNpbmNsdWRlICJUaW1lci5oIgorI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgog
CiAjaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKIApAQCAtNDYsMTEgKzQ4LDExIEBAIGNsYXNzIFNw
ZWVjaElucHV0Q2xpZW50TW9jayA6IHB1YmxpYyBTcGVlY2hJbnB1dENsaWVudCB7CiBwdWJsaWM6
CiAgICAgU3BlZWNoSW5wdXRDbGllbnRNb2NrKCk7CiAKLSAgICB2b2lkIHNldFJlY29nbml0aW9u
UmVzdWx0KGNvbnN0IFN0cmluZyYgcmVzdWx0KTsKKyAgICB2b2lkIHNldFJlY29nbml0aW9uUmVz
dWx0KGNvbnN0IFN0cmluZyYgcmVzdWx0LCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlKTsKIAogICAg
IC8vIFNwZWVjaElucHV0Q2xpZW50IG1ldGhvZHMuCiAgICAgdm9pZCBzZXRMaXN0ZW5lcihTcGVl
Y2hJbnB1dExpc3RlbmVyKik7Ci0gICAgYm9vbCBzdGFydFJlY29nbml0aW9uKGludCwgY29uc3Qg
SW50UmVjdCYpOworICAgIGJvb2wgc3RhcnRSZWNvZ25pdGlvbihpbnQsIGNvbnN0IFdURjo6U3Ry
aW5nJiwgY29uc3QgSW50UmVjdCYpOwogICAgIHZvaWQgc3RvcFJlY29yZGluZyhpbnQpOwogICAg
IHZvaWQgY2FuY2VsUmVjb2duaXRpb24oaW50KTsKIApAQCAtNjEsNyArNjMsOSBAQCBwcml2YXRl
OgogICAgIFRpbWVyPFNwZWVjaElucHV0Q2xpZW50TW9jaz4gbV90aW1lcjsKICAgICBTcGVlY2hJ
bnB1dExpc3RlbmVyKiBtX2xpc3RlbmVyOwogICAgIGludCBtX3JlcXVlc3RJZDsKLSAgICBTdHJp
bmcgbV9yZWNvZ25pdGlvblJlc3VsdDsKKworICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IG1f
cmVjb2duaXRpb25SZXN1bHQ7CisgICAgU3RyaW5nIG1fbGFuZ3VhZ2U7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Q29udHJv
bElubmVyRWxlbWVudHMuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dENvbnRyb2xJbm5lckVs
ZW1lbnRzLmNwcAppbmRleCA1ZDViOGIzMGI0MTEwNTIwZDFhNGRlN2I4YTc5YzQ4NWQ3OTM2NjA4
Li42NWQwYTY0NjA5ZDIwMzRiMTA5OTUwM2QxNjkxNTFhYmU2NmRhYTNlIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3JlbmRlcmluZy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCisrKyBiL1dlYkNv
cmUvcmVuZGVyaW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKQEAgLTIxLDkgKzIxLDkg
QEAKICAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKICAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KLSAKKwogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIlRleHRDb250cm9sSW5uZXJFbGVtZW50cy5oIgogCkBAIC0xMDcsMTggKzEwNywxOCBAQCB2
b2lkIFRleHRDb250cm9sSW5uZXJFbGVtZW50OjphdHRhY2hJbm5lckVsZW1lbnQoTm9kZSogcGFy
ZW50LCBQYXNzUmVmUHRyPFJlbmRlcgogICAgICAgICBzZXRSZW5kZXJlcihyZW5kZXJlcik7CiAg
ICAgICAgIHJlbmRlcmVyLT5zZXRTdHlsZShzdHlsZSk7CiAgICAgfQotICAgIAorCiAgICAgLy8g
U2V0IHRoZXNlIGV4cGxpY2l0bHkgc2luY2UgdGhpcyBub3JtYWxseSBoYXBwZW5zIGR1cmluZyBh
biBhdHRhY2goKQogICAgIHNldEF0dGFjaGVkKCk7CiAgICAgc2V0SW5Eb2N1bWVudCgpOwotICAg
IAorCiAgICAgLy8gRm9yIGVsZW1lbnRzIHdpdGhvdXQgYSBzaGFkb3cgcGFyZW50LCBhZGQgdGhl
IG5vZGUgdG8gdGhlIERPTSBub3JtYWxseS4KICAgICBpZiAoIW1fc2hhZG93UGFyZW50KSB7CiAg
ICAgICAgIC8vIEZJWE1FOiBUaGlzIGNvZGUgc2VlbXMgdmVyeSB3cm9uZy4gIFdoeSBhcmUgd2Ug
bWFnaWNhbGx5IGFkZGluZyB8dGhpc3wgdG8gdGhlIERPTSBoZXJlPwogICAgICAgICAvLyAgICAg
ICAgV2Ugc2hvdWxkbid0IGJlIGNhbGxpbmcgcGFyc2VyIEFQSSBtZXRob2RzIG91dHNpZGUgb2Yg
dGhlIHBhcnNlciEKICAgICAgICAgcGFyZW50LT5kZXByZWNhdGVkUGFyc2VyQWRkQ2hpbGQodGhp
cyk7CiAgICAgfQotIAorCiAgICAgLy8gQWRkIHRoZSByZW5kZXJlciB0byB0aGUgcmVuZGVyIHRy
ZWUKICAgICBpZiAocmVuZGVyZXIpCiAgICAgICAgIHBhcmVudC0+cmVuZGVyZXIoKS0+YWRkQ2hp
bGQocmVuZGVyZXIpOwpAQCAtMjA4LDcgKzIwOCw3IEBAIHZvaWQgU2VhcmNoRmllbGRDYW5jZWxC
dXR0b25FbGVtZW50OjpkZXRhY2goKQogewogICAgIGlmIChtX2NhcHR1cmluZykgewogICAgICAg
ICBpZiAoRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQoKS0+ZnJhbWUoKSkKLSAgICAgICAgICAgIGZy
YW1lLT5ldmVudEhhbmRsZXIoKS0+c2V0Q2FwdHVyaW5nTW91c2VFdmVudHNOb2RlKDApOyAgICAg
IAorICAgICAgICAgICAgZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5zZXRDYXB0dXJpbmdNb3VzZUV2
ZW50c05vZGUoMCk7CiAgICAgfQogICAgIFRleHRDb250cm9sSW5uZXJFbGVtZW50OjpkZXRhY2go
KTsKIH0KQEAgLTI4MSw5ICsyODEsOSBAQCB2b2lkIFNwaW5CdXR0b25FbGVtZW50OjpkZWZhdWx0
RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKICAgICBpZiAoIWJveCkgewogICAgICAgICBpZiAo
IWV2ZW50LT5kZWZhdWx0SGFuZGxlZCgpKQogICAgICAgICAgICAgSFRNTERpdkVsZW1lbnQ6OmRl
ZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOwotICAgICAgICByZXR1cm47ICAgICAgICAKKyAgICAg
ICAgcmV0dXJuOwogICAgIH0KLSAgICAKKwogICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0ID0g
c3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KHNoYWRvd0FuY2VzdG9yTm9kZSgpKTsKICAg
ICBpZiAoaW5wdXQtPmRpc2FibGVkKCkgfHwgaW5wdXQtPmlzUmVhZE9ubHlGb3JtQ29udHJvbCgp
KSB7CiAgICAgICAgIGlmICghZXZlbnQtPmRlZmF1bHRIYW5kbGVkKCkpCkBAIC00MzEsNyArNDMx
LDcgQEAgdm9pZCBJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFu
ZGxlcihFdmVudCogZXZlbnQpCiAgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygp
LmNsaWNrRXZlbnQpIHsKICAgICAgICAgc3dpdGNoIChtX3N0YXRlKSB7CiAgICAgICAgIGNhc2Ug
SWRsZToKLSAgICAgICAgICAgIGlmIChzcGVlY2hJbnB1dCgpLT5zdGFydFJlY29nbml0aW9uKG1f
bGlzdGVuZXJJZCwgaW5wdXQtPnJlbmRlcmVyKCktPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCkp
KQorICAgICAgICAgICAgaWYgKHNwZWVjaElucHV0KCktPnN0YXJ0UmVjb2duaXRpb24obV9saXN0
ZW5lcklkLCBpbnB1dC0+Y29tcHV0ZUluaGVyaXRlZExhbmd1YWdlKCksIGlucHV0LT5yZW5kZXJl
cigpLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpKSkKICAgICAgICAgICAgICAgICBzZXRTdGF0
ZShSZWNvcmRpbmcpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUmVjb3JkaW5n
OgpAQCAtNDg3LDcgKzQ4Nyw3IEBAIHZvaWQgSW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQ6
OmRldGFjaCgpCiB7CiAgICAgaWYgKG1fY2FwdHVyaW5nKSB7CiAgICAgICAgIGlmIChGcmFtZSog
ZnJhbWUgPSBkb2N1bWVudCgpLT5mcmFtZSgpKQotICAgICAgICAgICAgZnJhbWUtPmV2ZW50SGFu
ZGxlcigpLT5zZXRDYXB0dXJpbmdNb3VzZUV2ZW50c05vZGUoMCk7ICAgICAgCisgICAgICAgICAg
ICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPnNldENhcHR1cmluZ01vdXNlRXZlbnRzTm9kZSgwKTsK
ICAgICB9CiAKICAgICBpZiAobV9zdGF0ZSAhPSBJZGxlKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNDNlMThl
Y2I3NWY5OWMxZmNmZTBhNzMyYTNlNmIxOGZmNzgwYTI1NC4uZjUwOGQ1NjNjMjQ0MDBmZTkwNjI5
ZjM5ZmY5MmQwMjQ5YjhjMWIxMCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZworKysgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTAt
MTAtMDggIExlYW5kcm8gR3JhY2nDoSBHaWwgIDxsZWFuZHJvZ3JhY2lhQGdvb2dsZS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGF0Y2ggdGhl
IGN1cnJlbnQgc3BlZWNoIGlucHV0IGltcGxlbWVudGF0aW9uIHRvIHVzZSBhbmQgdmFsaWRhdGUg
dGhlCisgICAgICAgIG5lYXJlc3QgbGFuZ3VhZ2UgdGFnLiBUaGUgbGFuZ3VhZ2UgaXMgbm93IHBh
c3NlZCB0byB0aGUgc3RhcnRSZWNvZ25pdGlvbgorICAgICAgICBtZXRob2RzIHNvIHRoYXQgbGFu
Z3VhZ2Utc3BlY2lmaWMgcmVjb2duaXRpb24gY291bGQgYmUgdXNlZC4gQWxzbyBhZGRlZAorICAg
ICAgICBhIHNlY29uZCBwYXJhbWV0ZXIgdG8gc2V0TW9ja1NwZWVjaElucHV0UmVzdWx0IGZvciB0
aGUgbGFuZ3VhZ2UgdXNlZCBpbgorICAgICAgICBzcGVlY2ggcmVjb2duaXRpb24uCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzA4OQorCisgICAgICAg
IFRoaXMgaXMgdGhlIDJuZCBvZiBhIDQtc2lkZWQgcGF0Y2ggaW4gQ2hyb21pdW0gYW5kIFdlYktp
dC4gRm9yIG1vcmUKKyAgICAgICAgZGV0YWlscyBzZWUgaHR0cDovL2NvZGVyZXZpZXcuY2hyb21p
dW0ub3JnLzM2MTUwMDUvc2hvdyBhbmQKKyAgICAgICAgaHR0cDovL2NvZGVyZXZpZXcuY2hyb21p
dW0ub3JnLzM1OTUwMTgvc2hvdy4KKworICAgICAgICAqIHB1YmxpYy9XZWJTcGVlY2hJbnB1dENv
bnRyb2xsZXIuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyOjpz
dGFydFJlY29nbml0aW9uKToKKyAgICAgICAgKiBwdWJsaWMvV2ViU3BlZWNoSW5wdXRDb250cm9s
bGVyTW9jay5oOgorICAgICAgICAqIHNyYy9TcGVlY2hJbnB1dENsaWVudEltcGwuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpTcGVlY2hJbnB1dENsaWVudEltcGw6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OlNwZWVjaElucHV0Q2xpZW50SW1wbDo6c3RhcnRSZWNvZ25pdGlvbik6CisgICAgICAg
ICogc3JjL1NwZWVjaElucHV0Q2xpZW50SW1wbC5oOgorICAgICAgICAqIHNyYy9XZWJTcGVlY2hJ
bnB1dENvbnRyb2xsZXJNb2NrSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaElu
cHV0Q29udHJvbGxlck1vY2tJbXBsOjpzZXRNb2NrUmVjb2duaXRpb25SZXN1bHQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6c3RhcnRSZWNvZ25p
dGlvbik6CisgICAgICAgICogc3JjL1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsLmg6
CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmll
d0ltcGw6OldlYlZpZXdJbXBsKToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuaDoKKwogMjAx
MC0xMC0wNyAgWmhlbnlhbyBNbyAgPHptb0Bnb29nbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3
ZWQsIHJvbGwgY2hyb21pdW0gdG8gcjYxOTAyLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyLmgKaW5kZXggNTQwODc0MWEzYzk0ZDNiZjFjNTQz
ZDk2ZTlmYzE2YTYzOTBkYjAyZi4uMWZkZTJhOGU3NzRmMzJlNThmODg3MmYyNDgyMjIzMDU5Yzg4
YzE0NyAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hJbnB1dENv
bnRyb2xsZXIuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaElucHV0Q29u
dHJvbGxlci5oCkBAIC0zNSw2ICszNSw3IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFz
cyBXZWJTdHJpbmc7CiBzdHJ1Y3QgV2ViUmVjdDsKIAogLy8gUHJvdmlkZXMgYW4gZW1iZWRkZXIg
QVBJIGNhbGxlZCBieSBXZWJLaXQuCkBAIC00Myw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICAvLyBT
dGFydHMgc3BlZWNoIHJlY29nbml0aW9uLiBTcGVlY2ggd2lsbCBnZXQgcmVjb3JkZWQgdW50aWwg
dGhlIGVuZHBvaW50ZXIgZGV0ZWN0cyBzaWxlbmNlLAogICAgIC8vIHJ1bnMgdG8gdGhlIGxpbWl0
IG9yIHN0b3BSZWNvcmRpbmcgaXMgY2FsbGVkLiBQcm9ncmVzcyBpbmRpY2F0aW9ucyBhbmQgdGhl
IHJlY29nbml6ZWQKICAgICAvLyB0ZXh0IGFyZSByZXR1cm5lZCB2aWEgdGhlIGxpc3RlbmVyIGlu
dGVyZmFjZS4KLSAgICB2aXJ0dWFsIGJvb2wgc3RhcnRSZWNvZ25pdGlvbihpbnQgcmVxdWVzdElk
LCBjb25zdCBXZWJSZWN0JikKKyAgICB2aXJ0dWFsIGJvb2wgc3RhcnRSZWNvZ25pdGlvbihpbnQg
cmVxdWVzdElkLCBjb25zdCBXZWJTdHJpbmcmIGxhbmd1YWdlLCBjb25zdCBXZWJSZWN0JiBlbGVt
ZW50UmVjdCkKICAgICB7CiAgICAgICAgIFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrLmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YlNwZWVjaElucHV0Q29udHJvbGxlck1vY2suaAppbmRleCA5YTI2MjM1ZmY2ZDVkY2NiYmUyNDcy
NjJhZTQ0YTNhYzczOTdjM2Y0Li5iNGM1MGEwNWRjZjVhMTJmODQxYmY5YjY3NTVjZDI4ODE3Zjhj
MDhiIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaElucHV0Q29u
dHJvbGxlck1vY2suaAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaElucHV0
Q29udHJvbGxlck1vY2suaApAQCAtNDQsNiArNDQsMTAgQEAgcHVibGljOgogICAgICAgICBXZWJT
cGVlY2hJbnB1dExpc3RlbmVyKiBsaXN0ZW5lcik7CiAgICAgdmlydHVhbCB+V2ViU3BlZWNoSW5w
dXRDb250cm9sbGVyTW9jaygpIHsgfQogCisgICAgdmlydHVhbCB2b2lkIHNldE1vY2tSZWNvZ25p
dGlvblJlc3VsdChjb25zdCBXZWJTdHJpbmcmIHJlc3VsdCwgY29uc3QgV2ViU3RyaW5nJiBsYW5n
dWFnZSkgPSAwOworCisgICAgLy8gRklYTUU6IHRoaXMgaXMgYSBmaXggZm9yIGEgdHdvLXNpZGVk
IHBhdGNoLiBEZWxldGUgYXMgc29vbiBhcyB0aGUgY2hyb21pdW0gc2lkZSBpcyBwYXRjaGVkLgor
ICAgIC8vIENocm9taXVtIHBhdGNoIG5vdCB1cGxvYWRlZCB5ZXQsIGJ1dCB3aWxsIGRlcGVuZCBv
biBodHRwOi8vY29kZXJldmlldy5jaHJvbWl1bS5vcmcvMzYxNTAwNS9zaG93IHBhdGNoLgogICAg
IHZpcnR1YWwgdm9pZCBzZXRNb2NrUmVjb2duaXRpb25SZXN1bHQoY29uc3QgV2ViU3RyaW5nJiBy
ZXN1bHQpID0gMDsKIH07CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvU3BlZWNo
SW5wdXRDbGllbnRJbXBsLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvU3BlZWNoSW5wdXRDbGll
bnRJbXBsLmNwcAppbmRleCA5NjNkNDQwNWE2MmQzMmUxYThjZWNkNTRjMDhjNWJiZWIzYTYyZGNh
Li5hMzBkOTg2YTY2YTFhNjBjM2E5NzM4Y2JhOWU0ZmFmYjUzN2IyNzBmIDEwMDY0NAotLS0gYS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1NwZWVjaElucHV0Q2xpZW50SW1wbC5jcHAKKysrIGIvV2ViS2l0
L2Nocm9taXVtL3NyYy9TcGVlY2hJbnB1dENsaWVudEltcGwuY3BwCkBAIC0zNiwxMSArMzYsMTcg
QEAKICNpbmNsdWRlICJXZWJTdHJpbmcuaCIKICNpbmNsdWRlICJXZWJWaWV3Q2xpZW50LmgiCiAj
aW5jbHVkZSAicGFnZS9TcGVlY2hJbnB1dExpc3RlbmVyLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NP
d25QdHIuaD4KIAogI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCitQYXNzT3duUHRyPFNwZWVjaElucHV0Q2xpZW50SW1wbD4gU3BlZWNoSW5wdXRDbGllbnRJ
bXBsOjpjcmVhdGUoV2ViVmlld0NsaWVudCogY2xpZW50KQoreworICAgIHJldHVybiBhZG9wdFB0
cihuZXcgU3BlZWNoSW5wdXRDbGllbnRJbXBsKGNsaWVudCkpOworfQorCiBTcGVlY2hJbnB1dENs
aWVudEltcGw6OlNwZWVjaElucHV0Q2xpZW50SW1wbChXZWJWaWV3Q2xpZW50KiB3ZWJfdmlld19j
bGllbnQpCiAgICAgOiBtX2NvbnRyb2xsZXIod2ViX3ZpZXdfY2xpZW50ID8gd2ViX3ZpZXdfY2xp
ZW50LT5zcGVlY2hJbnB1dENvbnRyb2xsZXIodGhpcykgOiAwKQogICAgICwgbV9saXN0ZW5lcigw
KQpAQCAtNTYsMTAgKzYyLDEwIEBAIHZvaWQgU3BlZWNoSW5wdXRDbGllbnRJbXBsOjpzZXRMaXN0
ZW5lcihXZWJDb3JlOjpTcGVlY2hJbnB1dExpc3RlbmVyKiBsaXN0ZW5lcikKICAgICBtX2xpc3Rl
bmVyID0gbGlzdGVuZXI7CiB9CiAKLWJvb2wgU3BlZWNoSW5wdXRDbGllbnRJbXBsOjpzdGFydFJl
Y29nbml0aW9uKGludCByZXF1ZXN0SWQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGVsZW1lbnRS
ZWN0KQorYm9vbCBTcGVlY2hJbnB1dENsaWVudEltcGw6OnN0YXJ0UmVjb2duaXRpb24oaW50IHJl
cXVlc3RJZCwgY29uc3QgV1RGOjpTdHJpbmcmIGxhbmd1YWdlLCBjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0JiBlbGVtZW50UmVjdCkKIHsKICAgICBBU1NFUlQobV9saXN0ZW5lcik7Ci0gICAgcmV0dXJu
IG1fY29udHJvbGxlci0+c3RhcnRSZWNvZ25pdGlvbihyZXF1ZXN0SWQsIGVsZW1lbnRSZWN0KTsK
KyAgICByZXR1cm4gbV9jb250cm9sbGVyLT5zdGFydFJlY29nbml0aW9uKHJlcXVlc3RJZCwgbGFu
Z3VhZ2UsIGVsZW1lbnRSZWN0KTsKIH0KIAogdm9pZCBTcGVlY2hJbnB1dENsaWVudEltcGw6OnN0
b3BSZWNvcmRpbmcoaW50IHJlcXVlc3RJZCkKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9z
cmMvU3BlZWNoSW5wdXRDbGllbnRJbXBsLmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL1NwZWVjaElu
cHV0Q2xpZW50SW1wbC5oCmluZGV4IDgxN2IzMmIxMjQxNGIzYTA3ZGZhM2FlMzUxOTA4N2RlYTVh
MGY3MzMuLmI0NzEwMzAxMWYzNzUyOGJmNWE2N2UzNDc3OTUwMmFkOWQ0MWJjY2MgMTAwNjQ0Ci0t
LSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvU3BlZWNoSW5wdXRDbGllbnRJbXBsLmgKKysrIGIvV2Vi
S2l0L2Nocm9taXVtL3NyYy9TcGVlY2hJbnB1dENsaWVudEltcGwuaApAQCAtMzUsNiArMzUsMTIg
QEAKIAogI2luY2x1ZGUgIldlYlNwZWVjaElucHV0TGlzdGVuZXIuaCIKICNpbmNsdWRlICJwYWdl
L1NwZWVjaElucHV0Q2xpZW50LmgiCisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV1RGIHsKK2NsYXNzIFN0cmluZzsK
K30KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgU3BlZWNoSW5wdXRMaXN0ZW5lcjsKQEAg
LTQ5LDEyICs1NSwxMiBAQCBjbGFzcyBTcGVlY2hJbnB1dENsaWVudEltcGwKICAgICA6IHB1Ymxp
YyBXZWJDb3JlOjpTcGVlY2hJbnB1dENsaWVudCwKICAgICAgIHB1YmxpYyBXZWJTcGVlY2hJbnB1
dExpc3RlbmVyIHsKIHB1YmxpYzoKLSAgICBTcGVlY2hJbnB1dENsaWVudEltcGwoV2ViVmlld0Ns
aWVudCopOworICAgIHN0YXRpYyBQYXNzT3duUHRyPFNwZWVjaElucHV0Q2xpZW50SW1wbD4gY3Jl
YXRlKFdlYlZpZXdDbGllbnQqKTsKICAgICB2aXJ0dWFsIH5TcGVlY2hJbnB1dENsaWVudEltcGwo
KTsKIAogICAgIC8vIFNwZWVjaElucHV0Q2xpZW50IG1ldGhvZHMuCiAgICAgdm9pZCBzZXRMaXN0
ZW5lcihXZWJDb3JlOjpTcGVlY2hJbnB1dExpc3RlbmVyKik7Ci0gICAgYm9vbCBzdGFydFJlY29n
bml0aW9uKGludCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOworICAgIGJvb2wgc3RhcnRSZWNv
Z25pdGlvbihpbnQsIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYp
OwogICAgIHZvaWQgc3RvcFJlY29yZGluZyhpbnQpOwogICAgIHZvaWQgY2FuY2VsUmVjb2duaXRp
b24oaW50KTsKIApAQCAtNjQsNiArNzAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRDb21wbGV0
ZVJlY29nbml0aW9uKGludCk7CiAKIHByaXZhdGU6CisgICAgU3BlZWNoSW5wdXRDbGllbnRJbXBs
KFdlYlZpZXdDbGllbnQqKTsKKwogICAgIFdlYlNwZWVjaElucHV0Q29udHJvbGxlciogbV9jb250
cm9sbGVyOyAvLyBUbyBjYWxsIGludG8gdGhlIGVtYmVkZGVyLgogICAgIFdlYkNvcmU6OlNwZWVj
aElucHV0TGlzdGVuZXIqIG1fbGlzdGVuZXI7CiB9OwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbC5jcHAgYi9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsLmNwcAppbmRleCA2MGM0
ZmVkODUyYjI4NGUwMjcxYWQwMGVkOTcxMDAyYTJmNTdhNGI2Li5jM2U0YTllNTM0YTk1ZDM2ZDcx
NDY0N2UyMmYzY2VkZTVjYTM4ZTJmIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsLmNwcApAQCAtNTcsNyArNTcsMTIg
QEAgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6On5XZWJTcGVlY2hJbnB1dENvbnRy
b2xsZXJNb2NrSW1wbCgpCiAKIHZvaWQgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6
OnNldE1vY2tSZWNvZ25pdGlvblJlc3VsdChjb25zdCBXZWJTdHJpbmcmIHJlc3VsdCkKIHsKLSAg
ICBtX3dlYmNvcmVNb2NrLT5zZXRSZWNvZ25pdGlvblJlc3VsdChyZXN1bHQpOworICAgIG1fd2Vi
Y29yZU1vY2stPnNldFJlY29nbml0aW9uUmVzdWx0KHJlc3VsdCwgV2ViU3RyaW5nOjpmcm9tVVRG
OCgiZW4iKSk7Cit9CisKK3ZvaWQgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OnNl
dE1vY2tSZWNvZ25pdGlvblJlc3VsdChjb25zdCBXZWJTdHJpbmcmIHJlc3VsdCwgY29uc3QgV2Vi
U3RyaW5nICZsYW5ndWFnZSkKK3sKKyAgICBtX3dlYmNvcmVNb2NrLT5zZXRSZWNvZ25pdGlvblJl
c3VsdChyZXN1bHQsIGxhbmd1YWdlKTsKIH0KIAogdm9pZCBXZWJTcGVlY2hJbnB1dENvbnRyb2xs
ZXJNb2NrSW1wbDo6ZGlkQ29tcGxldGVSZWNvcmRpbmcoaW50IHJlcXVlc3RJZCkKQEAgLTc1LDkg
KzgwLDkgQEAgdm9pZCBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6c2V0UmVjb2du
aXRpb25SZXN1bHQoaW50IHJlcXVlc3RJZCwgY29uc3QKICAgICBtX2xpc3RlbmVyLT5zZXRSZWNv
Z25pdGlvblJlc3VsdChyZXF1ZXN0SWQsIHJlc3VsdCk7CiB9CiAKLWJvb2wgV2ViU3BlZWNoSW5w
dXRDb250cm9sbGVyTW9ja0ltcGw6OnN0YXJ0UmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCwgY29u
c3QgV2ViUmVjdCYgZWxlbWVudFJlY3QpCitib29sIFdlYlNwZWVjaElucHV0Q29udHJvbGxlck1v
Y2tJbXBsOjpzdGFydFJlY29nbml0aW9uKGludCByZXF1ZXN0SWQsIGNvbnN0IFdlYlN0cmluZyYg
bGFuZ3VhZ2UsIGNvbnN0IFdlYlJlY3QmIGVsZW1lbnRSZWN0KQogewotICAgIHJldHVybiBtX3dl
YmNvcmVNb2NrLT5zdGFydFJlY29nbml0aW9uKHJlcXVlc3RJZCwgZWxlbWVudFJlY3QpOworICAg
IHJldHVybiBtX3dlYmNvcmVNb2NrLT5zdGFydFJlY29nbml0aW9uKHJlcXVlc3RJZCwgbGFuZ3Vh
Z2UsIGVsZW1lbnRSZWN0KTsKIH0KIAogdm9pZCBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2Nr
SW1wbDo6Y2FuY2VsUmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCkKZGlmZiAtLWdpdCBhL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGwuaCBiL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGwuaAppbmRleCBl
ZGJmY2EzZWU2MGU5Mzk0Mjg5M2UyNzIxODkzZTQzYTBlYjg3YzVmLi43MjJjZmY0NzhjOTYwNzFj
OWJkNGIxZGE0NjQxODc2NjVlNDUwZTcyIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsLmgKKysrIGIvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbC5oCkBAIC0zNiw2ICszNiwxMSBA
QAogI2luY2x1ZGUgIldlYlNwZWVjaElucHV0TGlzdGVuZXIuaCIKICNpbmNsdWRlICJXZWJTdHJp
bmcuaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CisKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgU3RyaW5nOworfQogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBTcGVlY2hJbnB1dENsaWVudE1vY2s7CkBAIC01NywxMSArNjIsMTUg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0UmVjb2duaXRpb25SZXN1bHQoaW50IHJlcXVlc3RJZCwg
Y29uc3QgV1RGOjpTdHJpbmcmIHJlc3VsdCk7CiAKICAgICAvLyBXZWJTcGVlY2hJbnB1dENvbnRy
b2xsZXIgbWV0aG9kcy4KLSAgICBib29sIHN0YXJ0UmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCwg
Y29uc3QgV2ViUmVjdCYgZWxlbWVudFJlY3QpOworICAgIGJvb2wgc3RhcnRSZWNvZ25pdGlvbihp
bnQgcmVxdWVzdElkLCBjb25zdCBXZWJTdHJpbmcmIGxhbmd1YWdlLCBjb25zdCBXZWJSZWN0JiBl
bGVtZW50UmVjdCk7CiAgICAgdm9pZCBjYW5jZWxSZWNvZ25pdGlvbihpbnQgcmVxdWVzdElkKTsK
ICAgICB2b2lkIHN0b3BSZWNvcmRpbmcoaW50IHJlcXVlc3RJZCk7CiAKICAgICAvLyBXZWJTcGVl
Y2hJbnB1dENvbnRyb2xsZXJNb2NrIG1ldGhvZHMuCisgICAgdm9pZCBzZXRNb2NrUmVjb2duaXRp
b25SZXN1bHQoY29uc3QgV2ViU3RyaW5nJiByZXN1bHQsIGNvbnN0IFdlYlN0cmluZyYgbGFuZ3Vh
Z2UpOworCisgICAgLy8gRklYTUU6IHRoaXMgaXMgYSBmaXggZm9yIGEgdHdvLXNpZGVkIHBhdGNo
LiBEZWxldGUgYXMgc29vbiBhcyB0aGUgY2hyb21pdW0gc2lkZSBpcyBwYXRjaGVkLgorICAgIC8v
IENocm9taXVtIHBhdGNoIG5vdCB1cGxvYWRlZCB5ZXQsIGJ1dCB3aWxsIGRlcGVuZCBvbiBodHRw
Oi8vY29kZXJldmlldy5jaHJvbWl1bS5vcmcvMzYxNTAwNS9zaG93IHBhdGNoLgogICAgIHZvaWQg
c2V0TW9ja1JlY29nbml0aW9uUmVzdWx0KGNvbnN0IFdlYlN0cmluZyYgcmVzdWx0KTsKIAogcHJp
dmF0ZToKQEAgLTcyLDQgKzgxLDMgQEAgcHJpdmF0ZToKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAog
CiAjZW5kaWYgLy8gV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGxfaAotCmRpZmYgLS1n
aXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IDU5OWM2NWUwYzNhZDc4YmRkMzMzYjNkOWQwNWYw
YTMzYmNhNWM2YjkuLmU2MjU5ZGUxMzMzZDYzZGFiOWRlODA2MzFlZmY4ZmE3NTZhYzRkYmMgMTAw
NjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC04OCw2ICs4OCw3IEBACiAjaW5jbHVk
ZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZWxlY3Rpb25Db250cm9sbGVyLmgiCiAj
aW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRlICJTcGVlY2hJbnB1dENsaWVudEltcGwuaCIK
ICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgIlR5cGluZ0NvbW1hbmQuaCIKICNpbmNsdWRl
ICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgpAQCAtMjc1LDcgKzI3Niw3IEBAIFdlYlZpZXdJbXBs
OjpXZWJWaWV3SW1wbChXZWJWaWV3Q2xpZW50KiBjbGllbnQsIFdlYkRldlRvb2xzQWdlbnRDbGll
bnQqIGRldlRvb2xzCiAgICAgLCBtX2NvbXBvc2l0b3JDcmVhdGlvbkZhaWxlZChmYWxzZSkKICNl
bmRpZgogI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCi0gICAgLCBtX3NwZWVjaElucHV0Q2xpZW50
KGNsaWVudCkKKyAgICAsIG1fc3BlZWNoSW5wdXRDbGllbnQoU3BlZWNoSW5wdXRDbGllbnRJbXBs
OjpjcmVhdGUoY2xpZW50KSkKICNlbmRpZgogICAgICwgbV9kZXZpY2VPcmllbnRhdGlvbkNsaWVu
dFByb3h5KG5ldyBEZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5KGNsaWVudCA/IGNsaWVudC0+
ZGV2aWNlT3JpZW50YXRpb25DbGllbnQoKSA6IDApKQogewpAQCAtMjk4LDcgKzI5OSw3IEBAIFdl
YlZpZXdJbXBsOjpXZWJWaWV3SW1wbChXZWJWaWV3Q2xpZW50KiBjbGllbnQsIFdlYkRldlRvb2xz
QWdlbnRDbGllbnQqIGRldlRvb2xzCiAgICAgcGFnZUNsaWVudHMuZHJhZ0NsaWVudCA9ICZtX2Ry
YWdDbGllbnRJbXBsOwogICAgIHBhZ2VDbGllbnRzLmluc3BlY3RvckNsaWVudCA9ICZtX2luc3Bl
Y3RvckNsaWVudEltcGw7CiAjaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKLSAgICBwYWdlQ2xpZW50
cy5zcGVlY2hJbnB1dENsaWVudCA9ICZtX3NwZWVjaElucHV0Q2xpZW50OworICAgIHBhZ2VDbGll
bnRzLnNwZWVjaElucHV0Q2xpZW50ID0gbV9zcGVlY2hJbnB1dENsaWVudC5nZXQoKTsKICNlbmRp
ZgogICAgIHBhZ2VDbGllbnRzLmRldmljZU9yaWVudGF0aW9uQ2xpZW50ID0gbV9kZXZpY2VPcmll
bnRhdGlvbkNsaWVudFByb3h5LmdldCgpOwogCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlZpZXdJbXBsLmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKaW5k
ZXggZTUxZGY0ZDk4ZTNkOGUyYjYxMTI1NTAzOGYwOGM2MWZlNDJjNzg3OC4uNmM2MzQ2ZDQwNzc5
Zjk3MzRmNjU4M2Q2N2RmOWE3ZDlhNGEzMmUxZSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJWaWV3SW1wbC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwu
aApAQCAtNDksNyArNDksNiBAQAogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJMYXll
clJlbmRlcmVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJOb3RpZmljYXRpb25QcmVzZW50ZXJJbXBs
LmgiCi0jaW5jbHVkZSAiU3BlZWNoSW5wdXRDbGllbnRJbXBsLmgiCiAjaW5jbHVkZSA8d3RmL093
blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKQEAgLTc0LDYgKzczLDcgQEAg
Y2xhc3MgQXV0b0ZpbGxQb3B1cE1lbnVDbGllbnQ7CiBjbGFzcyBDb250ZXh0TWVudUNsaWVudElt
cGw7CiBjbGFzcyBEZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5OwogY2xhc3MgRHJhZ1Njcm9s
bFRpbWVyOworY2xhc3MgU3BlZWNoSW5wdXRDbGllbnRJbXBsOwogY2xhc3MgV2ViQWNjZXNzaWJp
bGl0eU9iamVjdDsKIGNsYXNzIFdlYkRldlRvb2xzQWdlbnRDbGllbnQ7CiBjbGFzcyBXZWJEZXZU
b29sc0FnZW50UHJpdmF0ZTsKQEAgLTUzNyw3ICs1MzcsNyBAQCBwcml2YXRlOgogICAgIHN0YXRp
YyBjb25zdCBXZWJJbnB1dEV2ZW50KiBtX2N1cnJlbnRJbnB1dEV2ZW50OwogCiAjaWYgRU5BQkxF
KElOUFVUX1NQRUVDSCkKLSAgICBTcGVlY2hJbnB1dENsaWVudEltcGwgbV9zcGVlY2hJbnB1dENs
aWVudDsKKyAgICBPd25QdHI8U3BlZWNoSW5wdXRDbGllbnRJbXBsPiBtX3NwZWVjaElucHV0Q2xp
ZW50OwogI2VuZGlmCiAgICAgLy8gSWYgd2UgYXR0ZW1wdCB0byBmZXRjaCB0aGUgb24tc2NyZWVu
IEdyYXBoaWNzQ29udGV4dDNEIGJlZm9yZQogICAgIC8vIHRoZSBjb21wb3NpdG9yIGhhcyBiZWVu
IHR1cm5lZCBvbiwgd2UgbmVlZCB0byBpbnN0YW50aWF0ZSBpdApkaWZmIC0tZ2l0IGEvV2ViS2l0
VG9vbHMvQ2hhbmdlTG9nIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDBhYmMyMDg3NzYx
MTk5OGQ1ZTM4YzgzYTQ3OTI4OTUwNTE1ZmZmODkuLmIyMTk3ZTU0MGZjM2Q5YmUzZGJmMjE1MjFk
MmZhMmQ5ZGVhOTI3ZjQgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZworKysgYi9X
ZWJLaXRUb29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMC0xMC0wOCAgTGVhbmRy
byBHcmFjacOhIEdpbCAgPGxlYW5kcm9ncmFjaWFAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBhIHNlY29uZCBwYXJhbWV0
ZXIgdG8gc2V0TW9ja1NwZWVjaElucHV0UmVzdWx0IGZvcgorICAgICAgICB0aGUgbGFuZ3VhZ2Ug
dXNlZCBpbiBzcGVlY2ggaW5wdXQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00NzA4OQorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVz
dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoc2V0TW9ja1NwZWVjaElucHV0UmVzdWx0Q2FsbGJh
Y2spOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmg6Cisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tTcGVlY2hJbnB1dFJlc3Vs
dCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3Rr
LmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrU3BlZWNoSW5wdXRS
ZXN1bHQpOgorCiAyMDEwLTEwLTA4ICBBbmRyYXMgQmVjc2kgIDxhYmVjc2lAd2Via2l0Lm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBDc2FiYSBPc3p0cm9nb27DoWMuCmRpZmYgLS1naXQgYS9X
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAgYi9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKaW5kZXggMGE3
YzExZmU1OGU3ZmUzNjZhNzBiNmNkMjI3NGIzN2RhNWQyNzg3Mi4uMDY3Y2QwMTQyMzQ4Y2I4NWUy
MDY3OGY0YTI3NWVmOTM1MGMyZTYxMCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcApAQCAtMTA3MCwxNCArMTA3MCwxNyBAQCBz
dGF0aWMgSlNWYWx1ZVJlZiBzZXRNb2NrR2VvbG9jYXRpb25FcnJvckNhbGxiYWNrKEpTQ29udGV4
dFJlZiBjb250ZXh0LCBKU09iamVjdAogCiBzdGF0aWMgSlNWYWx1ZVJlZiBzZXRNb2NrU3BlZWNo
SW5wdXRSZXN1bHRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVu
Y3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25z
dCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7Ci0gICAg
aWYgKGFyZ3VtZW50Q291bnQgPCAxKQorICAgIGlmIChhcmd1bWVudENvdW50IDwgMikKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogCiAgICAgSlNSZXRhaW5Q
dHI8SlNTdHJpbmdSZWY+IHJlc3VsdChBZG9wdCwgSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0
LCBhcmd1bWVudHNbMF0sIGV4Y2VwdGlvbikpOwogICAgIEFTU0VSVCghKmV4Y2VwdGlvbik7CiAK
KyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gbGFuZ3VhZ2UoQWRvcHQsIEpTVmFsdWVUb1N0
cmluZ0NvcHkoY29udGV4dCwgYXJndW1lbnRzWzFdLCBleGNlcHRpb24pKTsKKyAgICBBU1NFUlQo
ISpleGNlcHRpb24pOworCiAgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBz
dGF0aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlz
T2JqZWN0KSk7Ci0gICAgY29udHJvbGxlci0+c2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KHJlc3Vs
dC5nZXQoKSk7CisgICAgY29udHJvbGxlci0+c2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KHJlc3Vs
dC5nZXQoKSwgbGFuZ3VhZ2UuZ2V0KCkpOwogCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZp
bmVkKGNvbnRleHQpOwogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
TGF5b3V0VGVzdENvbnRyb2xsZXIuaCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91
dFRlc3RDb250cm9sbGVyLmgKaW5kZXggNzU1YTJiMmI5YzY4ODViNzk2YTAzZTUyZDUwMjBkODhi
NDNkZDk4Yi4uYmNjYzBhMDYwZWVmODc5ODYyNDAyNTkxOGYzOTY2NjIyMjU4OGRlMSAxMDA2NDQK
LS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAor
KysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCkBA
IC05NCw3ICs5NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE1vY2tEZXZpY2VPcmllbnRhdGlv
bihib29sIGNhblByb3ZpZGVBbHBoYSwgZG91YmxlIGFscGhhLCBib29sIGNhblByb3ZpZGVCZXRh
LCBkb3VibGUgYmV0YSwgYm9vbCBjYW5Qcm92aWRlR2FtbWEsIGRvdWJsZSBnYW1tYSk7CiAgICAg
dm9pZCBzZXRNb2NrR2VvbG9jYXRpb25FcnJvcihpbnQgY29kZSwgSlNTdHJpbmdSZWYgbWVzc2Fn
ZSk7CiAgICAgdm9pZCBzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihkb3VibGUgbGF0aXR1ZGUs
IGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSk7Ci0gICAgdm9pZCBzZXRNb2NrU3Bl
ZWNoSW5wdXRSZXN1bHQoSlNTdHJpbmdSZWYgcmVzdWx0KTsKKyAgICB2b2lkIHNldE1vY2tTcGVl
Y2hJbnB1dFJlc3VsdChKU1N0cmluZ1JlZiByZXN1bHQsIEpTU3RyaW5nUmVmIGxhbmd1YWdlVGFn
KTsKICAgICB2b2lkIHNldFBlcnNpc3RlbnRVc2VyU3R5bGVTaGVldExvY2F0aW9uKEpTU3RyaW5n
UmVmIHBhdGgpOwogICAgIHZvaWQgc2V0UGx1Z2luc0VuYWJsZWQoYm9vbCBmbGFnKTsKICAgICB2
b2lkIHNldFBvcHVwQmxvY2tpbmdFbmFibGVkKGJvb2wgZmxhZyk7CmRpZmYgLS1naXQgYS9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAg
Yi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxl
ci5jcHAKaW5kZXggZDc3NzRlOTk2N2JlODY5YTRkMzUzNjk2ZmMwNGNjM2ZkZjk4MWRkYS4uM2Nj
Yjc0MjY0MGY0ZDJmYTE0MmE3MTg5YjM4ZWYzM2ViZDQwZmM5NCAxMDA2NDQKLS0tIGEvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCisr
KyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9s
bGVyLmNwcApAQCAtMTUyNSwxMCArMTUyNSwxMCBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVy
OjphYm9ydE1vZGFsKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYQog
dm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KGNvbnN0
IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCiB7CiAgICAg
cmVzdWx0LT5zZXROdWxsKCk7Ci0gICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgPCAxIHx8ICFhcmd1
bWVudHNbMF0uaXNTdHJpbmcoKSkKKyAgICBpZiAoYXJndW1lbnRzLnNpemUoKSA8IDIgfHwgIWFy
Z3VtZW50c1swXS5pc1N0cmluZygpIHx8ICFhcmd1bWVudHNbMV0uaXNTdHJpbmcoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgbV9zcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrLT5zZXRNb2NrUmVj
b2duaXRpb25SZXN1bHQoY3BwVmFyaWFudFRvV2ViU3RyaW5nKGFyZ3VtZW50c1swXSkpOworICAg
IG1fc3BlZWNoSW5wdXRDb250cm9sbGVyTW9jay0+c2V0TW9ja1JlY29nbml0aW9uUmVzdWx0KGNw
cFZhcmlhbnRUb1dlYlN0cmluZyhhcmd1bWVudHNbMF0pLCBjcHBWYXJpYW50VG9XZWJTdHJpbmco
YXJndW1lbnRzWzFdKSk7CiB9CiAKIFdlYktpdDo6V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyKiBM
YXlvdXRUZXN0Q29udHJvbGxlcjo6c3BlZWNoSW5wdXRDb250cm9sbGVyKFdlYktpdDo6V2ViU3Bl
ZWNoSW5wdXRMaXN0ZW5lciogbGlzdGVuZXIpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwIGIvV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcAppbmRleCBkODMx
MDc2M2RlNjY0ZjM5NTI0MDQ0ZTdmODVmNzc1NWJkNDhmMWMwLi44NjdmMzI3ZDZmNmUyNmRlMTIz
YTBjZTlmMzM3Yjg4ZGM1Y2QxZTZiIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAKQEAgLTQ4OCw3ICs0
ODgsNyBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRHZW9sb2NhdGlvblBlcm1pc3Np
b24oYm9vbCBhbGxvdykKICAgICBzZXRHZW9sb2NhdGlvblBlcm1pc3Npb25Db21tb24oYWxsb3cp
OwogfQogCi12b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrU3BlZWNoSW5wdXRSZXN1
bHQoSlNTdHJpbmdSZWYgcmVzdWx0KQordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9j
a1NwZWVjaElucHV0UmVzdWx0KEpTU3RyaW5nUmVmIHJlc3VsdCwgSlNTdHJpbmdSZWYgbGFuZ3Vh
Z2UpCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3Igc3BlZWNoIGlucHV0IGxheW91dCB0
ZXN0cy4KICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTM5NDg1Lgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70252</attachid>
            <date>2010-10-08 08:49:45 -0700</date>
            <delta_ts>2010-10-08 09:16:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47089-20101008164942.patch</filename>
            <type>text/plain</type>
            <size>35709</size>
            <attacher name="Leandro Graciá Gil">leandrogracia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhNWU4NTI5ZjBlMzg2YjA3MTk0YmRiNjVlOWFmNGE5NjQ2NGFhMWZmLi5mOGU1ZGQx
MzI4OTkzNjYxYzZmNDdkYzgzMTIxNzcyNzk4NDQwMDIwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAK
KzIwMTAtMTAtMDggIExlYW5kcm8gR3JhY2nDoSBHaWwgIDxsZWFuZHJvZ3JhY2lhQGdvb2dsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
ZWQgYSBsYXlvdXQgdGVzdCBmb3IgdGhlIGxhbmd1YWdlIHRhZyBpbiBzcGVlY2ggaW5wdXQuIFVw
ZGF0ZWQKKyAgICAgICAgdGhlIHNwZWVjaCBidXR0b24gdGVzdHMgdG8gaW5jbHVkZSB0aGUgbmV3
IGxhbmd1YWdlIHBhcmFtZXRlciBpbiB0aGUKKyAgICAgICAgbW9jayByZXN1bHQuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzA4OQorCisgICAgICAg
ICogZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1sYW5ndWFnZS10YWctZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L3NwZWVjaC9pbnB1dC10ZXh0LWxhbmd1YWdlLXRhZy5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L3NwZWVjaC9pbnB1dC10ZXh0LXNwZWVjaGJ1dHRvbi5odG1s
OiBBZGRlZCBhbiBlbXB0eSBsYW5ndWFnZQorICAgICAgICAgIHBhcmFtZXRlci4KKyAgICAgICAg
KiBmYXN0L3NwZWVjaC9zcGVlY2gtYnV0dG9uLWlnbm9yZS1nZW5lcmF0ZWQtZXZlbnRzLmh0bWw6
IEFkZGVkIGFuCisgICAgICAgICAgZW1wdHkgbGFuZ3VhZ2UgcGFyYW1ldGVyLgorCiAyMDEwLTEw
LTA4ICBOaWtvbGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkByaW0uY29tPgogCiAgICAgICAg
IE5vdCByZXZpZXdlZC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL2lucHV0
LXRleHQtbGFuZ3VhZ2UtdGFnLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNo
L2lucHV0LXRleHQtbGFuZ3VhZ2UtdGFnLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MWYzMGQ2
OTZmNWQyNTBmMTRhZjU2Yjk5YjRlNzBjODc5YzBlNTAyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1sYW5ndWFnZS10YWctZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMTMgQEAKK1Rlc3RzIGZvciBsYW5ndWFnZSB0YWcgaW5oZXJpdGFuY2UgYW5k
IHZhbGlkYXRpb24gaW4gc3BlZWNoIGJ1dHRvbnMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworCitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzcGVlY2hJbnB1dE5vbmUiKS52
YWx1ZSBpcyAiZXJyb3I6IG5vIHJlc3VsdCBmb3VuZCBmb3IgbGFuZ3VhZ2UgJyciCitQQVNTIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJzcGVlY2hJbnB1dEVsZW1lbnQiKS52YWx1ZSBpcyAiUGlj
dHVyZXMgb2YgdGhlIG1vb24iCitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzcGVlY2hJ
bnB1dEluaGVyaXRlZCIpLnZhbHVlIGlzICLmnIjjga7lhpnnnJ8iCitQQVNTIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJzcGVlY2hJbnB1dEludmFsaWQiKS52YWx1ZSBpcyAiZXJyb3I6IG5vIHJl
c3VsdCBmb3VuZCBmb3IgbGFuZ3VhZ2UgJyciCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKyAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc3Bl
ZWNoL2lucHV0LXRleHQtbGFuZ3VhZ2UtdGFnLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVj
aC9pbnB1dC10ZXh0LWxhbmd1YWdlLXRhZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjliZmM4MjI2MmVlMzBh
MmM1ZmE1ZTI1ODE2MWVhOGExZTE4ZTY1YWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L3NwZWVjaC9pbnB1dC10ZXh0LWxhbmd1YWdlLXRhZy5odG1sCkBAIC0wLDAgKzEsNjIg
QEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1s
PgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0i
Li4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxz
Y3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KK2Rlc2NyaXB0aW9uKCdUZXN0cyBmb3IgbGFu
Z3VhZ2UgdGFnIGluaGVyaXRhbmNlIGFuZCB2YWxpZGF0aW9uIGluIHNwZWVjaCBidXR0b25zLicp
OworCisvLyBOb3RlOiB0ZXN0IGNhc2VzIGFyZSBzZXF1ZW50aWFsIHRvIGVuc3VyZSB0aGF0IG5v
IG5ldyByZWNvZ25pdGlvbiBzdGFydHMgd2hlbiBhbm90aGVyIHJlY29nbml0aW9uIHJlY29yZGlu
ZyBpcyBhY3RpdmUuCitmdW5jdGlvbiBvbkNoYW5nZU5vbmUoKSB7CisgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCdkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3BlZWNoSW5wdXROb25lIikudmFs
dWUnLCAnZXJyb3I6IG5vIHJlc3VsdCBmb3VuZCBmb3IgbGFuZ3VhZ2UgXCdcJycpOworICAgIHNl
dFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNwZWVjaEJ1dHRvbkNsaWNrKCdzcGVlY2hJbnB1dEVsZW1l
bnQnKTsgfSwgNTApOworfQorCitmdW5jdGlvbiBvbkNoYW5nZUVsZW1lbnQoKSB7CisgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCdkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3BlZWNoSW5wdXRF
bGVtZW50IikudmFsdWUnLCAnUGljdHVyZXMgb2YgdGhlIG1vb24nKTsKKyAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgeyBzcGVlY2hCdXR0b25DbGljaygnc3BlZWNoSW5wdXRJbmhlcml0ZWQnKTsg
fSwgNTApOworfQorCitmdW5jdGlvbiBvbkNoYW5nZUluaGVyaXRlZCgpIHsKKyAgICBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoJ2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzcGVlY2hJbnB1dEluaGVy
aXRlZCIpLnZhbHVlJywgJ+aciOOBruWGmeecnycpOworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IHNwZWVjaEJ1dHRvbkNsaWNrKCdzcGVlY2hJbnB1dEludmFsaWQnKTsgfSwgNTApOworfQor
CitmdW5jdGlvbiBvbkNoYW5nZUludmFsaWQoKSB7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCdkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3BlZWNoSW5wdXRJbnZhbGlkIikudmFsdWUnLCAn
ZXJyb3I6IG5vIHJlc3VsdCBmb3VuZCBmb3IgbGFuZ3VhZ2UgXCdcJycpOworICAgIGZpbmlzaEpT
VGVzdCgpOworfQorCitmdW5jdGlvbiBzcGVlY2hCdXR0b25DbGljayhlbGVtZW50SWQpIHsKKyAg
ICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJZCk7CisgICAg
dmFyIHggPSBlbGVtZW50Lm9mZnNldExlZnQgKyBlbGVtZW50Lm9mZnNldFdpZHRoIC0gNDsKKyAg
ICB2YXIgeSA9IGVsZW1lbnQub2Zmc2V0VG9wICsgZWxlbWVudC5vZmZzZXRIZWlnaHQgLyAyOwor
ICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGV2ZW50U2VuZGVyLm1vdXNl
RG93bigpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKK30KKworZnVuY3Rpb24gcnVuKCkg
eworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIgJiYgd2luZG93LmV2ZW50U2Vu
ZGVyKSB7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldE1vY2tTcGVlY2hJbnB1dFJl
c3VsdCgnUGljdHVyZXMgb2YgdGhlIG1vb24nLCAnZW4tR0InKTsKKyAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuc2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KCfmnIjjga7lhpnnnJ8nLCAnamEn
KTsKKyAgICAgICAgc3BlZWNoQnV0dG9uQ2xpY2soJ3NwZWVjaElucHV0Tm9uZScpOworICAgIH0K
K30KKword2luZG93Lm9ubG9hZCA9IHJ1bjsKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsK
K3dpbmRvdy5zdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8aW5wdXQgaWQ9
InNwZWVjaElucHV0Tm9uZSIgeC13ZWJraXQtc3BlZWNoIG9ud2Via2l0c3BlZWNoY2hhbmdlPSJv
bkNoYW5nZU5vbmUoKSI+Cis8aW5wdXQgaWQ9InNwZWVjaElucHV0RWxlbWVudCIgeC13ZWJraXQt
c3BlZWNoIG9ud2Via2l0c3BlZWNoY2hhbmdlPSJvbkNoYW5nZUVsZW1lbnQoKSIgbGFuZz0iZW4t
R0IiPgorPGRpdiBsYW5nPSJqYSI+IDxpbnB1dCBpZD0ic3BlZWNoSW5wdXRJbmhlcml0ZWQiIHgt
d2Via2l0LXNwZWVjaCBvbndlYmtpdHNwZWVjaGNoYW5nZT0ib25DaGFuZ2VJbmhlcml0ZWQoKSI+
IDwvZGl2PgorPGlucHV0IGlkPSJzcGVlY2hJbnB1dEludmFsaWQiIHgtd2Via2l0LXNwZWVjaCBv
bndlYmtpdHNwZWVjaGNoYW5nZT0ib25DaGFuZ2VJbnZhbGlkKCkiIGxhbmc9IjEzMzckw74zzrtr
Ij4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNo
L2lucHV0LXRleHQtc3BlZWNoYnV0dG9uLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9p
bnB1dC10ZXh0LXNwZWVjaGJ1dHRvbi5odG1sCmluZGV4IDZmNWJjNGIxMjFmYjRmOWQ5ZGRhNmMz
MzFmOGIyNmRjMWNkNDM5OTQuLmNlZjc3MDU2YjE3ZDFjZDQ1MWI0OTBiN2MxZjI0NmJhNmM4OTUw
ZGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL2lucHV0LXRleHQtc3BlZWNo
YnV0dG9uLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1zcGVl
Y2hidXR0b24uaHRtbApAQCAtMzIsNyArMzIsNyBAQCBmdW5jdGlvbiBvbldlYmtpdFNwZWVjaENo
YW5nZSgpIHsKIAogZnVuY3Rpb24gcnVuKCkgewogICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIgJiYgd2luZG93LmV2ZW50U2VuZGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdCgnUGljdHVyZXMgb2YgdGhlIG1vb24nKTsK
KyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KCdQ
aWN0dXJlcyBvZiB0aGUgbW9vbicsICcnKTsKIAogICAgICAgICAvLyBDbGlja2luZyB0aGUgc3Bl
ZWNoIGJ1dHRvbiBzaG91bGQgZmlsbCBpbiBtb2NrIHNwZWVjaC1yZWNvZ25pemVkIHRleHQuCiAg
ICAgICAgIHZhciBpbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzcGVlY2hJbnB1dCcp
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvc3BlZWNoLWJ1dHRvbi1pZ25v
cmUtZ2VuZXJhdGVkLWV2ZW50cy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvc3BlZWNo
LWJ1dHRvbi1pZ25vcmUtZ2VuZXJhdGVkLWV2ZW50cy5odG1sCmluZGV4IGI5YjhlYzM2NjA1NTc5
ZjJiMTI2ZDZmMWRhMzU2MGM2NzJhZDJiNzEuLmM2ODQ4NjM3NzA1MzM5OWIyOWQwNGZjMjk5MDdl
NTVlOGFiZjA2MDggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL3NwZWVjaC1i
dXR0b24taWdub3JlLWdlbmVyYXRlZC1ldmVudHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L3NwZWVjaC9zcGVlY2gtYnV0dG9uLWlnbm9yZS1nZW5lcmF0ZWQtZXZlbnRzLmh0bWwKQEAgLTQ5
LDcgKzQ5LDcgQEAgZnVuY3Rpb24gc2V0dXBEaXNwYXRjaEV2ZW50VGVzdCgpIHsKIGZ1bmN0aW9u
IHJ1bigpIHsKICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyICYmIHdpbmRvdy5l
dmVudFNlbmRlcikgewogICAgICAgICAvLyBSdW5uaW5nIGluIERSVCwgdGVzdCB0aGUgZXZlbnRT
ZW5kZXIgY2FzZS4KLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja1NwZWVjaElu
cHV0UmVzdWx0KCdQaWN0dXJlcyBvZiB0aGUgbW9vbicpOworICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5zZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoJ1BpY3R1cmVzIG9mIHRoZSBtb29uJywg
JycpOwogICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3BlZWNoSW5wdXQnKS5vbndl
YmtpdHNwZWVjaGNoYW5nZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCdkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3BlZWNoSW5wdXQiKS52YWx1ZScs
ICdQaWN0dXJlcyBvZiB0aGUgbW9vbicpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDM4MWE5ZTlhNjE4ODI2NWE5YWMyYjIyNWYxYTEw
NjBhN2MwNWU5MWIuLmZmNWU2YjU5Mjk4MDExZmU3MDUzYjg5OWVjMmNkYjE4Nzk3NDY2ZTIgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNDAgQEAKKzIwMTAtMTAtMDggIExlYW5kcm8gR3JhY2nDoSBHaWwgIDxsZWFuZHJvZ3Jh
Y2lhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgUGF0Y2ggdGhlIGN1cnJlbnQgc3BlZWNoIGlucHV0IGltcGxlbWVudGF0aW9uIHRv
IHVzZSBhbmQgdmFsaWRhdGUgdGhlCisgICAgICAgIG5lYXJlc3QgbGFuZ3VhZ2UgdGFnLiBUaGUg
bGFuZ3VhZ2UgaXMgbm93IHBhc3NlZCB0byB0aGUgc3RhcnRSZWNvZ25pdGlvbgorICAgICAgICBt
ZXRob2RzIHNvIHRoYXQgbGFuZ3VhZ2Utc3BlY2lmaWMgcmVjb2duaXRpb24gY291bGQgYmUgdXNl
ZC4gQWxzbyBhZGRlZAorICAgICAgICBhIHNlY29uZCBwYXJhbWV0ZXIgdG8gc2V0TW9ja1NwZWVj
aElucHV0UmVzdWx0IGZvciB0aGUgbGFuZ3VhZ2UgdXNlZCBpbgorICAgICAgICBzcGVlY2ggcmVj
b2duaXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD00NzA4OQorCisgICAgICAgIFRoaXMgaXMgdGhlIDJuZCBvZiBhIDQtc2lkZWQgcGF0Y2ggaW4g
Q2hyb21pdW0gYW5kIFdlYktpdC4gRm9yIG1vcmUKKyAgICAgICAgZGV0YWlscyBzZWUgaHR0cDov
L2NvZGVyZXZpZXcuY2hyb21pdW0ub3JnLzM2MTUwMDUvc2hvdyBhbmQKKyAgICAgICAgaHR0cDov
L2NvZGVyZXZpZXcuY2hyb21pdW0ub3JnLzM1OTUwMTgvc2hvdy4KKworICAgICAgICBUZXN0OiBm
YXN0L3NwZWVjaC9pbnB1dC10ZXh0LWxhbmd1YWdlLXRhZy5odG1sCisKKyAgICAgICAgKiBkb20v
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojpjb21wdXRlSW5oZXJpdGVk
TGFuZ3VhZ2UpOiBpbmNsdWRlcyBhIGJyaWVmIGNoYXJhY3RlcgorICAgICAgICAgIHZhbGlkYXRp
b24gZm9yIHRoZSBCQ1AgNDcgbGFuZ3VhZ2UgdGFnLgorICAgICAgICAqIHBhZ2UvU3BlZWNoSW5w
dXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoSW5wdXQ6OnN0YXJ0UmVjb2duaXRpb24p
OgorICAgICAgICAqIHBhZ2UvU3BlZWNoSW5wdXQuaDoKKyAgICAgICAgKiBwYWdlL1NwZWVjaElu
cHV0Q2xpZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9TcGVlY2hJbnB1dENsaWVudE1v
Y2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoSW5wdXRDbGllbnRNb2NrOjpzdGFydFJl
Y29nbml0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaElucHV0Q2xpZW50TW9jazo6c2V0
UmVjb2duaXRpb25SZXN1bHQpOiByZXN1bHRzIGFyZSBub3cKKyAgICAgICAgICBzdG9yZWQgYnkg
bGFuZ3VhZ2UgdXNpbmcgYSBoYXNoIG1hcC4KKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaElucHV0
Q2xpZW50TW9jazo6dGltZXJGaXJlZCk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9TcGVlY2hJ
bnB1dENsaWVudE1vY2suaDoKKyAgICAgICAgKiByZW5kZXJpbmcvVGV4dENvbnRyb2xJbm5lckVs
ZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb250cm9sSW5uZXJFbGVtZW50Ojph
dHRhY2hJbm5lckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoRmllbGRDYW5jZWxC
dXR0b25FbGVtZW50OjpkZXRhY2gpOgorICAgICAgICAoV2ViQ29yZTo6U3BpbkJ1dHRvbkVsZW1l
bnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRGaWVsZFNw
ZWVjaEJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQ6OmRldGFjaCk6CisKIDIwMTAtMTAtMDgg
IEFuZHJlYXMgS2xpbmcgIDxhbmRyZWFzLmtsaW5nQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBOaWtvbGFzIFppbW1lcm1hbm4uCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcCBiL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IDYwYTEwNjNjNGQyOGQyODJm
Njc3MzY2NzNjNDNjY2RlOGU2YWNmZjQuLjVhNDJjZDM4ODI3YjA4ZTQ4NGU0NmY4YTA5MjJlOWMy
NzI2MTMxYjQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1dlYkNv
cmUvZG9tL0VsZW1lbnQuY3BwCkBAIC01Niw2ICs1Niw3IEBACiAjaW5jbHVkZSAiU2V0dGluZ3Mu
aCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJYTUxOYW1lcy5oIgorI2lu
Y2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgog
CiAjaWYgRU5BQkxFKFNWRykKQEAgLTE0NjgsNiArMTQ2OSwxNSBAQCBBdG9taWNTdHJpbmcgRWxl
bWVudDo6Y29tcHV0ZUluaGVyaXRlZExhbmd1YWdlKCkgY29uc3QKICAgICAgICAgbiA9IG4tPnBh
cmVudCgpOwogICAgIH0KIAorICAgIGlmICghdmFsdWUuaXNOdWxsKCkgJiYgIXZhbHVlLmlzRW1w
dHkoKSkgeworICAgICAgICAvLyBPbmx5IEEtWmEtejAtOSBhbmQgJy0nIGFyZSBhbGxvd2VkIGlu
IHRoZSBsYW5ndWFnZSB0YWcgKHNlZSBCQ1AgNDcpCisgICAgICAgIENTdHJpbmcgbGFuZ3VhZ2VU
YWcgPSB2YWx1ZS5zdHJpbmcoKS5hc2NpaSgpOworICAgICAgICBmb3IgKGNvbnN0IGNoYXIgKnAg
PSBsYW5ndWFnZVRhZy5kYXRhKCk7ICpwICE9ICdcMCc7ICsrcCkgeworICAgICAgICAgICAgaWYg
KCFpc0FTQ0lJQWxwaGFudW1lcmljKCpwKSAmJiAqcCAhPSAnLScpCisgICAgICAgICAgICAgICAg
cmV0dXJuIEF0b21pY1N0cmluZygpOworICAgICAgICB9CisgICAgfQorCiAgICAgcmV0dXJuIHZh
bHVlOwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXQuY3BwIGIvV2Vi
Q29yZS9wYWdlL1NwZWVjaElucHV0LmNwcAppbmRleCAyMzQ3OTFiYzRiMTNmNDNkZjlkMTczOWQ1
ZDIwNWY5YWEyN2UyMDcyLi5jYzVlMGY5N2ZiYWJmOWFmYTNmNDM1OWM3MjZiYWM4N2U1MzQxOGNm
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXQuY3BwCisrKyBiL1dlYkNvcmUv
cGFnZS9TcGVlY2hJbnB1dC5jcHAKQEAgLTkzLDEwICs5MywxMCBAQCB2b2lkIFNwZWVjaElucHV0
OjpzZXRSZWNvZ25pdGlvblJlc3VsdChpbnQgbGlzdGVuZXJJZCwgY29uc3QgU3RyaW5nJiByZXN1
bHQpCiAgICAgICAgIG1fbGlzdGVuZXJzLmdldChsaXN0ZW5lcklkKS0+c2V0UmVjb2duaXRpb25S
ZXN1bHQobGlzdGVuZXJJZCwgcmVzdWx0KTsKIH0KIAotYm9vbCBTcGVlY2hJbnB1dDo6c3RhcnRS
ZWNvZ25pdGlvbihpbnQgbGlzdGVuZXJJZCwgY29uc3QgSW50UmVjdCYgZWxlbWVudFJlY3QpCiti
b29sIFNwZWVjaElucHV0OjpzdGFydFJlY29nbml0aW9uKGludCBsaXN0ZW5lcklkLCBjb25zdCBT
dHJpbmcmIGxhbmd1YWdlLCBjb25zdCBJbnRSZWN0JiBlbGVtZW50UmVjdCkKIHsKICAgICBBU1NF
UlQobV9saXN0ZW5lcnMuY29udGFpbnMobGlzdGVuZXJJZCkpOwotICAgIHJldHVybiBtX2NsaWVu
dC0+c3RhcnRSZWNvZ25pdGlvbihsaXN0ZW5lcklkLCBlbGVtZW50UmVjdCk7CisgICAgcmV0dXJu
IG1fY2xpZW50LT5zdGFydFJlY29nbml0aW9uKGxpc3RlbmVySWQsIGxhbmd1YWdlLCBlbGVtZW50
UmVjdCk7CiB9CiAKIHZvaWQgU3BlZWNoSW5wdXQ6OnN0b3BSZWNvcmRpbmcoaW50IGxpc3RlbmVy
SWQpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXQuaCBiL1dlYkNvcmUvcGFn
ZS9TcGVlY2hJbnB1dC5oCmluZGV4IGQxMGI3ODlhYWQyNzM5ZWRkM2JmNDUzMGU3YzZlMDBjNGUy
ZGFlOGEuLjhiNDI2ZjU2MzEzNmVkNjUxZGQ2NDU2ZTgzNWI0ZDQ0NTNhYjgwMTIgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dC5oCisrKyBiL1dlYkNvcmUvcGFnZS9TcGVlY2hJ
bnB1dC5oCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHVucmVnaXN0ZXJMaXN0
ZW5lcihpbnQpOwogCiAgICAgLy8gTWV0aG9kcyBpbnZva2VkIGJ5IHRoZSBpbnB1dCBlbGVtZW50
cy4KLSAgICBib29sIHN0YXJ0UmVjb2duaXRpb24oaW50LCBjb25zdCBJbnRSZWN0Jik7CisgICAg
Ym9vbCBzdGFydFJlY29nbml0aW9uKGludCwgY29uc3QgU3RyaW5nJiwgY29uc3QgSW50UmVjdCYp
OwogICAgIHZvaWQgc3RvcFJlY29yZGluZyhpbnQpOwogICAgIHZvaWQgY2FuY2VsUmVjb2duaXRp
b24oaW50KTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0Q2xpZW50Lmgg
Yi9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXRDbGllbnQuaAppbmRleCBkNWZkYTE3ZmFhMmNkNzk1
YWY0NGY1M2E0NmZjYmE1OTc0MWFiNzZjLi4zOGJmZTRmYzQ1NTI5ZjAwNzIyNDNmZWFkOGY3YmM2
ZmE5ZGFhNmZiIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXRDbGllbnQuaAor
KysgYi9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXRDbGllbnQuaApAQCAtMzMsNiArMzMsMTAgQEAK
IAogI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCiAKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgU3Ry
aW5nOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEludFJlY3Q7CkBAIC00OCw3
ICs1Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0TGlzdGVuZXIoU3BlZWNoSW5w
dXRMaXN0ZW5lciopID0gMDsKIAogICAgIC8vIFN0YXJ0cyBzcGVlY2ggcmVjb2duaXRpb24gYW5k
IGF1ZGlvIHJlY29yZGluZy4KLSAgICB2aXJ0dWFsIGJvb2wgc3RhcnRSZWNvZ25pdGlvbihpbnQg
cmVxdWVzdElkLCBjb25zdCBJbnRSZWN0JiBlbGVtZW50UmVjdCkgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCBzdGFydFJlY29nbml0aW9uKGludCByZXF1ZXN0SWQsIGNvbnN0IFdURjo6U3RyaW5nJiBs
YW5ndWFnZSwgY29uc3QgSW50UmVjdCYgZWxlbWVudFJlY3QpID0gMDsKIAogICAgIC8vIFN0b3Bz
IGF1ZGlvIHJlY29yZGluZyBhbmQgcGVyZm9ybXMgcmVjb2duaXRpb24gd2l0aCB0aGUgYXVkaW8g
cmVjb3JkZWQgdW50aWwgbm93CiAgICAgLy8gKGRvZXMgbm90IGRpc2NhcmQgYXVkaW8pLgpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xpZW50TW9jay5jcHAg
Yi9XZWJDb3JlL3BsYXRmb3JtL21vY2svU3BlZWNoSW5wdXRDbGllbnRNb2NrLmNwcAppbmRleCA2
YjY0OTQyZjE3YjkyNWI0OWVmMDkyMTQ3YzBhMTZhMDdmMGQ3Y2NjLi5lYTUwNjZmNjFhN2UxYzQ3
MzQ3NmQyMmUyNmM4YTgwOWI3ODI4YjVjIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svU3BlZWNoSW5wdXRDbGllbnRNb2NrLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
U3BlZWNoSW5wdXRDbGllbnRNb2NrLmNwcApAQCAtMzUsNiArMzUsMTEgQEAKIAogI2luY2x1ZGUg
IlNwZWVjaElucHV0TGlzdGVuZXIuaCIKIAorbmFtZXNwYWNlIHsKKyAgICAvLyBFbXB0eSBsYW5n
dWFnZSBzdHJpbmdzIGNyYXNoIHRoZSBIYXNoTWFwLiBUaGlzIHZhbHVlLCBhbiBpbnZhbGlkIEJD
UDQ3IHRhZywgaXMgdXNlZCBmb3IgdGhvc2UgY2FzZXMuCisgICAgY29uc3QgU3RyaW5nIGVtcHR5
TGFuZ3VhZ2UgPSAiXyI7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU3BlZWNoSW5wdXRD
bGllbnRNb2NrOjpTcGVlY2hJbnB1dENsaWVudE1vY2soKQpAQCAtNTAsMTIgKzU1LDEzIEBAIHZv
aWQgU3BlZWNoSW5wdXRDbGllbnRNb2NrOjpzZXRMaXN0ZW5lcihTcGVlY2hJbnB1dExpc3RlbmVy
KiBsaXN0ZW5lcikKICAgICBtX2xpc3RlbmVyID0gbGlzdGVuZXI7CiB9CiAKLWJvb2wgU3BlZWNo
SW5wdXRDbGllbnRNb2NrOjpzdGFydFJlY29nbml0aW9uKGludCByZXF1ZXN0SWQsIGNvbnN0IElu
dFJlY3QmKQorYm9vbCBTcGVlY2hJbnB1dENsaWVudE1vY2s6OnN0YXJ0UmVjb2duaXRpb24oaW50
IHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSwgY29uc3QgSW50UmVjdCYpCiB7CiAg
ICAgaWYgKG1fdGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIG1f
cmVxdWVzdElkID0gcmVxdWVzdElkOwogICAgIG1fcmVjb3JkaW5nID0gdHJ1ZTsKKyAgICBtX2xh
bmd1YWdlID0gbGFuZ3VhZ2U7CiAgICAgbV90aW1lci5zdGFydE9uZVNob3QoMCk7CiAgICAgcmV0
dXJuIHRydWU7CiB9CkBAIC04MCw5ICs4NiwxMiBAQCB2b2lkIFNwZWVjaElucHV0Q2xpZW50TW9j
azo6Y2FuY2VsUmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCkKICAgICB9CiB9CiAKLXZvaWQgU3Bl
ZWNoSW5wdXRDbGllbnRNb2NrOjpzZXRSZWNvZ25pdGlvblJlc3VsdChjb25zdCBTdHJpbmcmIHJl
c3VsdCkKK3ZvaWQgU3BlZWNoSW5wdXRDbGllbnRNb2NrOjpzZXRSZWNvZ25pdGlvblJlc3VsdChj
b25zdCBTdHJpbmcmIHJlc3VsdCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSkKIHsKLSAgICBtX3Jl
Y29nbml0aW9uUmVzdWx0ID0gcmVzdWx0OworICAgIGlmIChsYW5ndWFnZS5pc0VtcHR5KCkpCisg
ICAgICAgIG1fcmVjb2duaXRpb25SZXN1bHQuc2V0KGVtcHR5TGFuZ3VhZ2UsIHJlc3VsdCk7Cisg
ICAgZWxzZQorICAgICAgICBtX3JlY29nbml0aW9uUmVzdWx0LnNldChsYW5ndWFnZSwgcmVzdWx0
KTsKIH0KIAogdm9pZCBTcGVlY2hJbnB1dENsaWVudE1vY2s6OnRpbWVyRmlyZWQoV2ViQ29yZTo6
VGltZXI8U3BlZWNoSW5wdXRDbGllbnRNb2NrPiopCkBAIC05Miw3ICsxMDEsMTcgQEAgdm9pZCBT
cGVlY2hJbnB1dENsaWVudE1vY2s6OnRpbWVyRmlyZWQoV2ViQ29yZTo6VGltZXI8U3BlZWNoSW5w
dXRDbGllbnRNb2NrPiopCiAgICAgICAgIG1fbGlzdGVuZXItPmRpZENvbXBsZXRlUmVjb3JkaW5n
KG1fcmVxdWVzdElkKTsKICAgICAgICAgbV90aW1lci5zdGFydE9uZVNob3QoMCk7CiAgICAgfSBl
bHNlIHsKLSAgICAgICAgbV9saXN0ZW5lci0+c2V0UmVjb2duaXRpb25SZXN1bHQobV9yZXF1ZXN0
SWQsIG1fcmVjb2duaXRpb25SZXN1bHQpOworICAgICAgICBTdHJpbmcgbGFuZ3VhZ2UgPSBtX2xh
bmd1YWdlLmlzRW1wdHkoKSA/IFN0cmluZyhlbXB0eUxhbmd1YWdlKSA6IG1fbGFuZ3VhZ2U7Cisg
ICAgICAgIGlmICghbV9yZWNvZ25pdGlvblJlc3VsdC5jb250YWlucyhsYW5ndWFnZSkpIHsKKyAg
ICAgICAgICAgIC8vIENhbid0IGF2b2lkIHNldHRpbmcgYSByZXN1bHQgb24gZW1wdHkgb3IgaW52
YWxpZCBsYW5ndWFnZSBzdHJpbmdzLgorICAgICAgICAgICAgLy8gVGhpcyB3b3VsZCBhdm9pZCBn
ZW5lcmF0aW5nIHRoZSBldmVudHMgdXNlZCB0byBjaGVjayB0aGUgcmVzdWx0cyBhbmQgdGhlIHRl
c3Qgd291bGQgdGltZW91dC4KKyAgICAgICAgICAgIFN0cmluZyBlcnJvcigiZXJyb3I6IG5vIHJl
c3VsdCBmb3VuZCBmb3IgbGFuZ3VhZ2UgJyIpOworICAgICAgICAgICAgZXJyb3IuYXBwZW5kKG1f
bGFuZ3VhZ2UpOworICAgICAgICAgICAgZXJyb3IuYXBwZW5kKCInIik7CisgICAgICAgICAgICBt
X2xpc3RlbmVyLT5zZXRSZWNvZ25pdGlvblJlc3VsdChtX3JlcXVlc3RJZCwgZXJyb3IpOworICAg
ICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1fbGlzdGVuZXItPnNldFJlY29nbml0aW9uUmVzdWx0
KG1fcmVxdWVzdElkLCBtX3JlY29nbml0aW9uUmVzdWx0LmdldChsYW5ndWFnZSkpOworCiAgICAg
ICAgIG1fbGlzdGVuZXItPmRpZENvbXBsZXRlUmVjb2duaXRpb24obV9yZXF1ZXN0SWQpOwogICAg
ICAgICBtX3JlcXVlc3RJZCA9IDA7CiAgICAgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL1NwZWVjaElucHV0Q2xpZW50TW9jay5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Nw
ZWVjaElucHV0Q2xpZW50TW9jay5oCmluZGV4IGNlODNkM2JiOWNiODhiMGEzYTk1YjU0OTU0Mjdk
Mjk5MWYyZTBiNGYuLjNjZTk4N2I4MjNjZDE5ODAyODY2OWM3NzlmM2M0NzljNDczY2I3ZWQgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TcGVlY2hJbnB1dENsaWVudE1vY2suaAor
KysgYi9XZWJDb3JlL3BsYXRmb3JtL21vY2svU3BlZWNoSW5wdXRDbGllbnRNb2NrLmgKQEAgLTM0
LDYgKzM0LDggQEAKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIlNwZWVj
aElucHV0Q2xpZW50LmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogI2lmIEVOQUJMRShJTlBV
VF9TUEVFQ0gpCiAKQEAgLTQ2LDExICs0OCwxMSBAQCBjbGFzcyBTcGVlY2hJbnB1dENsaWVudE1v
Y2sgOiBwdWJsaWMgU3BlZWNoSW5wdXRDbGllbnQgewogcHVibGljOgogICAgIFNwZWVjaElucHV0
Q2xpZW50TW9jaygpOwogCi0gICAgdm9pZCBzZXRSZWNvZ25pdGlvblJlc3VsdChjb25zdCBTdHJp
bmcmIHJlc3VsdCk7CisgICAgdm9pZCBzZXRSZWNvZ25pdGlvblJlc3VsdChjb25zdCBTdHJpbmcm
IHJlc3VsdCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSk7CiAKICAgICAvLyBTcGVlY2hJbnB1dENs
aWVudCBtZXRob2RzLgogICAgIHZvaWQgc2V0TGlzdGVuZXIoU3BlZWNoSW5wdXRMaXN0ZW5lciop
OwotICAgIGJvb2wgc3RhcnRSZWNvZ25pdGlvbihpbnQsIGNvbnN0IEludFJlY3QmKTsKKyAgICBi
b29sIHN0YXJ0UmVjb2duaXRpb24oaW50LCBjb25zdCBTdHJpbmcmLCBjb25zdCBJbnRSZWN0Jik7
CiAgICAgdm9pZCBzdG9wUmVjb3JkaW5nKGludCk7CiAgICAgdm9pZCBjYW5jZWxSZWNvZ25pdGlv
bihpbnQpOwogCkBAIC02MSw3ICs2Myw5IEBAIHByaXZhdGU6CiAgICAgVGltZXI8U3BlZWNoSW5w
dXRDbGllbnRNb2NrPiBtX3RpbWVyOwogICAgIFNwZWVjaElucHV0TGlzdGVuZXIqIG1fbGlzdGVu
ZXI7CiAgICAgaW50IG1fcmVxdWVzdElkOwotICAgIFN0cmluZyBtX3JlY29nbml0aW9uUmVzdWx0
OworCisgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gbV9yZWNvZ25pdGlvblJlc3VsdDsKKyAg
ICBTdHJpbmcgbV9sYW5ndWFnZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAgYi9X
ZWJDb3JlL3JlbmRlcmluZy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCmluZGV4IDVkNWI4
YjMwYjQxMTA1MjBkMWE0ZGU3YjhhNzljNDg1ZDc5MzY2MDguLjY1ZDBhNjQ2MDlkMjAzNGIxMDk5
NTAzZDE2OTE1MWFiZTY2ZGFhM2UgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRD
b250cm9sSW5uZXJFbGVtZW50cy5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dENvbnRy
b2xJbm5lckVsZW1lbnRzLmNwcApAQCAtMjEsOSArMjEsOSBAQAogICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQogICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwotIAorCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVGV4dENvbnRyb2xJbm5lckVs
ZW1lbnRzLmgiCiAKQEAgLTEwNywxOCArMTA3LDE4IEBAIHZvaWQgVGV4dENvbnRyb2xJbm5lckVs
ZW1lbnQ6OmF0dGFjaElubmVyRWxlbWVudChOb2RlKiBwYXJlbnQsIFBhc3NSZWZQdHI8UmVuZGVy
CiAgICAgICAgIHNldFJlbmRlcmVyKHJlbmRlcmVyKTsKICAgICAgICAgcmVuZGVyZXItPnNldFN0
eWxlKHN0eWxlKTsKICAgICB9Ci0gICAgCisKICAgICAvLyBTZXQgdGhlc2UgZXhwbGljaXRseSBz
aW5jZSB0aGlzIG5vcm1hbGx5IGhhcHBlbnMgZHVyaW5nIGFuIGF0dGFjaCgpCiAgICAgc2V0QXR0
YWNoZWQoKTsKICAgICBzZXRJbkRvY3VtZW50KCk7Ci0gICAgCisKICAgICAvLyBGb3IgZWxlbWVu
dHMgd2l0aG91dCBhIHNoYWRvdyBwYXJlbnQsIGFkZCB0aGUgbm9kZSB0byB0aGUgRE9NIG5vcm1h
bGx5LgogICAgIGlmICghbV9zaGFkb3dQYXJlbnQpIHsKICAgICAgICAgLy8gRklYTUU6IFRoaXMg
Y29kZSBzZWVtcyB2ZXJ5IHdyb25nLiAgV2h5IGFyZSB3ZSBtYWdpY2FsbHkgYWRkaW5nIHx0aGlz
fCB0byB0aGUgRE9NIGhlcmU/CiAgICAgICAgIC8vICAgICAgICBXZSBzaG91bGRuJ3QgYmUgY2Fs
bGluZyBwYXJzZXIgQVBJIG1ldGhvZHMgb3V0c2lkZSBvZiB0aGUgcGFyc2VyIQogICAgICAgICBw
YXJlbnQtPmRlcHJlY2F0ZWRQYXJzZXJBZGRDaGlsZCh0aGlzKTsKICAgICB9Ci0gCisKICAgICAv
LyBBZGQgdGhlIHJlbmRlcmVyIHRvIHRoZSByZW5kZXIgdHJlZQogICAgIGlmIChyZW5kZXJlcikK
ICAgICAgICAgcGFyZW50LT5yZW5kZXJlcigpLT5hZGRDaGlsZChyZW5kZXJlcik7CkBAIC0yMDgs
NyArMjA4LDcgQEAgdm9pZCBTZWFyY2hGaWVsZENhbmNlbEJ1dHRvbkVsZW1lbnQ6OmRldGFjaCgp
CiB7CiAgICAgaWYgKG1fY2FwdHVyaW5nKSB7CiAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBk
b2N1bWVudCgpLT5mcmFtZSgpKQotICAgICAgICAgICAgZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5z
ZXRDYXB0dXJpbmdNb3VzZUV2ZW50c05vZGUoMCk7ICAgICAgCisgICAgICAgICAgICBmcmFtZS0+
ZXZlbnRIYW5kbGVyKCktPnNldENhcHR1cmluZ01vdXNlRXZlbnRzTm9kZSgwKTsKICAgICB9CiAg
ICAgVGV4dENvbnRyb2xJbm5lckVsZW1lbnQ6OmRldGFjaCgpOwogfQpAQCAtMjgxLDkgKzI4MSw5
IEBAIHZvaWQgU3BpbkJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2
ZW50KQogICAgIGlmICghYm94KSB7CiAgICAgICAgIGlmICghZXZlbnQtPmRlZmF1bHRIYW5kbGVk
KCkpCiAgICAgICAgICAgICBIVE1MRGl2RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVu
dCk7Ci0gICAgICAgIHJldHVybjsgICAgICAgIAorICAgICAgICByZXR1cm47CiAgICAgfQotICAg
IAorCiAgICAgSFRNTElucHV0RWxlbWVudCogaW5wdXQgPSBzdGF0aWNfY2FzdDxIVE1MSW5wdXRF
bGVtZW50Kj4oc2hhZG93QW5jZXN0b3JOb2RlKCkpOwogICAgIGlmIChpbnB1dC0+ZGlzYWJsZWQo
KSB8fCBpbnB1dC0+aXNSZWFkT25seUZvcm1Db250cm9sKCkpIHsKICAgICAgICAgaWYgKCFldmVu
dC0+ZGVmYXVsdEhhbmRsZWQoKSkKQEAgLTQzMSw3ICs0MzEsNyBAQCB2b2lkIElucHV0RmllbGRT
cGVlY2hCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKICAg
ICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuY2xpY2tFdmVudCkgewogICAgICAg
ICBzd2l0Y2ggKG1fc3RhdGUpIHsKICAgICAgICAgY2FzZSBJZGxlOgotICAgICAgICAgICAgaWYg
KHNwZWVjaElucHV0KCktPnN0YXJ0UmVjb2duaXRpb24obV9saXN0ZW5lcklkLCBpbnB1dC0+cmVu
ZGVyZXIoKS0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKSkpCisgICAgICAgICAgICBpZiAoc3Bl
ZWNoSW5wdXQoKS0+c3RhcnRSZWNvZ25pdGlvbihtX2xpc3RlbmVySWQsIGlucHV0LT5jb21wdXRl
SW5oZXJpdGVkTGFuZ3VhZ2UoKSwgaW5wdXQtPnJlbmRlcmVyKCktPmFic29sdXRlQm91bmRpbmdC
b3hSZWN0KCkpKQogICAgICAgICAgICAgICAgIHNldFN0YXRlKFJlY29yZGluZyk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBSZWNvcmRpbmc6CkBAIC00ODcsNyArNDg3LDcgQEAg
dm9pZCBJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudDo6ZGV0YWNoKCkKIHsKICAgICBpZiAo
bV9jYXB0dXJpbmcpIHsKICAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCktPmZy
YW1lKCkpCi0gICAgICAgICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPnNldENhcHR1cmluZ01v
dXNlRXZlbnRzTm9kZSgwKTsgICAgICAKKyAgICAgICAgICAgIGZyYW1lLT5ldmVudEhhbmRsZXIo
KS0+c2V0Q2FwdHVyaW5nTW91c2VFdmVudHNOb2RlKDApOwogICAgIH0KIAogICAgIGlmIChtX3N0
YXRlICE9IElkbGUpCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA0M2UxOGVjYjc1Zjk5YzFmY2ZlMGE3MzJhM2U2
YjE4ZmY3ODBhMjU0Li5mNTA4ZDU2M2MyNDQwMGZlOTA2MjlmMzlmZjkyZDAyNDliOGMxYjEwIDEw
MDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAxMC0xMC0wOCAgTGVhbmRybyBHcmFjacOh
IEdpbCAgPGxlYW5kcm9ncmFjaWFAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXRjaCB0aGUgY3VycmVudCBzcGVlY2ggaW5wdXQg
aW1wbGVtZW50YXRpb24gdG8gdXNlIGFuZCB2YWxpZGF0ZSB0aGUKKyAgICAgICAgbmVhcmVzdCBs
YW5ndWFnZSB0YWcuIFRoZSBsYW5ndWFnZSBpcyBub3cgcGFzc2VkIHRvIHRoZSBzdGFydFJlY29n
bml0aW9uCisgICAgICAgIG1ldGhvZHMgc28gdGhhdCBsYW5ndWFnZS1zcGVjaWZpYyByZWNvZ25p
dGlvbiBjb3VsZCBiZSB1c2VkLiBBbHNvIGFkZGVkCisgICAgICAgIGEgc2Vjb25kIHBhcmFtZXRl
ciB0byBzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQgZm9yIHRoZSBsYW5ndWFnZSB1c2VkIGluCisg
ICAgICAgIHNwZWVjaCByZWNvZ25pdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQ3MDg5CisKKyAgICAgICAgVGhpcyBpcyB0aGUgMm5kIG9mIGEg
NC1zaWRlZCBwYXRjaCBpbiBDaHJvbWl1bSBhbmQgV2ViS2l0LiBGb3IgbW9yZQorICAgICAgICBk
ZXRhaWxzIHNlZSBodHRwOi8vY29kZXJldmlldy5jaHJvbWl1bS5vcmcvMzYxNTAwNS9zaG93IGFu
ZAorICAgICAgICBodHRwOi8vY29kZXJldmlldy5jaHJvbWl1bS5vcmcvMzU5NTAxOC9zaG93Lgor
CisgICAgICAgICogcHVibGljL1dlYlNwZWVjaElucHV0Q29udHJvbGxlci5oOgorICAgICAgICAo
V2ViS2l0OjpXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXI6OnN0YXJ0UmVjb2duaXRpb24pOgorICAg
ICAgICAqIHB1YmxpYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrLmg6CisgICAgICAgICog
c3JjL1NwZWVjaElucHV0Q2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaElu
cHV0Q2xpZW50SW1wbDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoSW5wdXRDbGll
bnRJbXBsOjpzdGFydFJlY29nbml0aW9uKToKKyAgICAgICAgKiBzcmMvU3BlZWNoSW5wdXRDbGll
bnRJbXBsLmg6CisgICAgICAgICogc3JjL1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBs
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6
OnNldE1vY2tSZWNvZ25pdGlvblJlc3VsdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaElu
cHV0Q29udHJvbGxlck1vY2tJbXBsOjpzdGFydFJlY29nbml0aW9uKToKKyAgICAgICAgKiBzcmMv
V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGwuaDoKKyAgICAgICAgKiBzcmMvV2ViVmll
d0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwpOgor
ICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5oOgorCiAyMDEwLTEwLTA3ICBaaGVueWFvIE1vICA8
em1vQGdvb2dsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbCBjaHJvbWl1bSB0byBy
NjE5MDIuCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaElucHV0
Q29udHJvbGxlci5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hJbnB1dENvbnRy
b2xsZXIuaAppbmRleCA1NDA4NzQxYTNjOTRkM2JmMWM1NDNkOTZlOWZjMTZhNjM5MGRiMDJmLi4x
ZmRlMmE4ZTc3NGYzMmU1OGY4ODcyZjI0ODIyMjMwNTljODhjMTQ3IDEwMDY0NAotLS0gYS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaElucHV0Q29udHJvbGxlci5oCisrKyBiL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyLmgKQEAgLTM1LDYgKzM1
LDcgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIFdlYlN0cmluZzsKIHN0cnVjdCBX
ZWJSZWN0OwogCiAvLyBQcm92aWRlcyBhbiBlbWJlZGRlciBBUEkgY2FsbGVkIGJ5IFdlYktpdC4K
QEAgLTQzLDcgKzQ0LDcgQEAgcHVibGljOgogICAgIC8vIFN0YXJ0cyBzcGVlY2ggcmVjb2duaXRp
b24uIFNwZWVjaCB3aWxsIGdldCByZWNvcmRlZCB1bnRpbCB0aGUgZW5kcG9pbnRlciBkZXRlY3Rz
IHNpbGVuY2UsCiAgICAgLy8gcnVucyB0byB0aGUgbGltaXQgb3Igc3RvcFJlY29yZGluZyBpcyBj
YWxsZWQuIFByb2dyZXNzIGluZGljYXRpb25zIGFuZCB0aGUgcmVjb2duaXplZAogICAgIC8vIHRl
eHQgYXJlIHJldHVybmVkIHZpYSB0aGUgbGlzdGVuZXIgaW50ZXJmYWNlLgotICAgIHZpcnR1YWwg
Ym9vbCBzdGFydFJlY29nbml0aW9uKGludCByZXF1ZXN0SWQsIGNvbnN0IFdlYlJlY3QmKQorICAg
IHZpcnR1YWwgYm9vbCBzdGFydFJlY29nbml0aW9uKGludCByZXF1ZXN0SWQsIGNvbnN0IFdlYlN0
cmluZyYgbGFuZ3VhZ2UsIGNvbnN0IFdlYlJlY3QmIGVsZW1lbnRSZWN0KQogICAgIHsKICAgICAg
ICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gZmFsc2U7CmRp
ZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaElucHV0Q29udHJvbGxl
ck1vY2suaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVy
TW9jay5oCmluZGV4IDlhMjYyMzVmZjZkNWRjY2JiZTI0NzI2MmFlNDRhM2FjNzM5N2MzZjQuLmI0
YzUwYTA1ZGNmNWExMmY4NDFiZjliNjc1NWNkMjg4MTdmOGMwOGIgMTAwNjQ0Ci0tLSBhL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9jay5oCisrKyBiL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9jay5oCkBAIC00
NCw2ICs0NCwxMCBAQCBwdWJsaWM6CiAgICAgICAgIFdlYlNwZWVjaElucHV0TGlzdGVuZXIqIGxp
c3RlbmVyKTsKICAgICB2aXJ0dWFsIH5XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrKCkgeyB9
CiAKKyAgICB2aXJ0dWFsIHZvaWQgc2V0TW9ja1JlY29nbml0aW9uUmVzdWx0KGNvbnN0IFdlYlN0
cmluZyYgcmVzdWx0LCBjb25zdCBXZWJTdHJpbmcmIGxhbmd1YWdlKSA9IDA7CisKKyAgICAvLyBG
SVhNRTogdGhpcyBpcyBhIGZpeCBmb3IgYSB0d28tc2lkZWQgcGF0Y2guIERlbGV0ZSBhcyBzb29u
IGFzIHRoZSBjaHJvbWl1bSBzaWRlIGlzIHBhdGNoZWQuCisgICAgLy8gQ2hyb21pdW0gcGF0Y2gg
bm90IHVwbG9hZGVkIHlldCwgYnV0IHdpbGwgZGVwZW5kIG9uIGh0dHA6Ly9jb2RlcmV2aWV3LmNo
cm9taXVtLm9yZy8zNjE1MDA1L3Nob3cgcGF0Y2guCiAgICAgdmlydHVhbCB2b2lkIHNldE1vY2tS
ZWNvZ25pdGlvblJlc3VsdChjb25zdCBXZWJTdHJpbmcmIHJlc3VsdCkgPSAwOwogfTsKIApkaWZm
IC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9TcGVlY2hJbnB1dENsaWVudEltcGwuY3BwIGIv
V2ViS2l0L2Nocm9taXVtL3NyYy9TcGVlY2hJbnB1dENsaWVudEltcGwuY3BwCmluZGV4IDk2M2Q0
NDA1YTYyZDMyZTFhOGNlY2Q1NGMwOGM1YmJlYjNhNjJkY2EuLmEzMGQ5ODZhNjZhMWE2MGMzYTk3
MzhjYmE5ZTRmYWZiNTM3YjI3MGYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvU3Bl
ZWNoSW5wdXRDbGllbnRJbXBsLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1NwZWVjaElu
cHV0Q2xpZW50SW1wbC5jcHAKQEAgLTM2LDExICszNiwxNyBAQAogI2luY2x1ZGUgIldlYlN0cmlu
Zy5oIgogI2luY2x1ZGUgIldlYlZpZXdDbGllbnQuaCIKICNpbmNsdWRlICJwYWdlL1NwZWVjaElu
cHV0TGlzdGVuZXIuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCiAjaWYgRU5BQkxF
KElOUFVUX1NQRUVDSCkKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK1Bhc3NPd25QdHI8U3BlZWNo
SW5wdXRDbGllbnRJbXBsPiBTcGVlY2hJbnB1dENsaWVudEltcGw6OmNyZWF0ZShXZWJWaWV3Q2xp
ZW50KiBjbGllbnQpCit7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBTcGVlY2hJbnB1dENsaWVu
dEltcGwoY2xpZW50KSk7Cit9CisKIFNwZWVjaElucHV0Q2xpZW50SW1wbDo6U3BlZWNoSW5wdXRD
bGllbnRJbXBsKFdlYlZpZXdDbGllbnQqIHdlYl92aWV3X2NsaWVudCkKICAgICA6IG1fY29udHJv
bGxlcih3ZWJfdmlld19jbGllbnQgPyB3ZWJfdmlld19jbGllbnQtPnNwZWVjaElucHV0Q29udHJv
bGxlcih0aGlzKSA6IDApCiAgICAgLCBtX2xpc3RlbmVyKDApCkBAIC01NiwxMCArNjIsMTAgQEAg
dm9pZCBTcGVlY2hJbnB1dENsaWVudEltcGw6OnNldExpc3RlbmVyKFdlYkNvcmU6OlNwZWVjaElu
cHV0TGlzdGVuZXIqIGxpc3RlbmVyKQogICAgIG1fbGlzdGVuZXIgPSBsaXN0ZW5lcjsKIH0KIAot
Ym9vbCBTcGVlY2hJbnB1dENsaWVudEltcGw6OnN0YXJ0UmVjb2duaXRpb24oaW50IHJlcXVlc3RJ
ZCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZWxlbWVudFJlY3QpCitib29sIFNwZWVjaElucHV0
Q2xpZW50SW1wbDo6c3RhcnRSZWNvZ25pdGlvbihpbnQgcmVxdWVzdElkLCBjb25zdCBXVEY6OlN0
cmluZyYgbGFuZ3VhZ2UsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGVsZW1lbnRSZWN0KQogewog
ICAgIEFTU0VSVChtX2xpc3RlbmVyKTsKLSAgICByZXR1cm4gbV9jb250cm9sbGVyLT5zdGFydFJl
Y29nbml0aW9uKHJlcXVlc3RJZCwgZWxlbWVudFJlY3QpOworICAgIHJldHVybiBtX2NvbnRyb2xs
ZXItPnN0YXJ0UmVjb2duaXRpb24ocmVxdWVzdElkLCBsYW5ndWFnZSwgZWxlbWVudFJlY3QpOwog
fQogCiB2b2lkIFNwZWVjaElucHV0Q2xpZW50SW1wbDo6c3RvcFJlY29yZGluZyhpbnQgcmVxdWVz
dElkKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9TcGVlY2hJbnB1dENsaWVudElt
cGwuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvU3BlZWNoSW5wdXRDbGllbnRJbXBsLmgKaW5kZXgg
ODE3YjMyYjEyNDE0YjNhMDdkZmEzYWUzNTE5MDg3ZGVhNWEwZjczMy4uMzhjZWIxODhiYzkzY2Jl
NjY1M2NiZjkwNGE3MGE5NzcyNWYyMmFmMSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9TcGVlY2hJbnB1dENsaWVudEltcGwuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1NwZWVj
aElucHV0Q2xpZW50SW1wbC5oCkBAIC0zNSw2ICszNSwxMiBAQAogCiAjaW5jbHVkZSAiV2ViU3Bl
ZWNoSW5wdXRMaXN0ZW5lci5oIgogI2luY2x1ZGUgInBhZ2UvU3BlZWNoSW5wdXRDbGllbnQuaCIK
KyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKwor
bmFtZXNwYWNlIFdURiB7CitjbGFzcyBTdHJpbmc7Cit9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIFNwZWVjaElucHV0TGlzdGVuZXI7CkBAIC00OSwxMiArNTUsMTIgQEAgY2xhc3MgU3Bl
ZWNoSW5wdXRDbGllbnRJbXBsCiAgICAgOiBwdWJsaWMgV2ViQ29yZTo6U3BlZWNoSW5wdXRDbGll
bnQsCiAgICAgICBwdWJsaWMgV2ViU3BlZWNoSW5wdXRMaXN0ZW5lciB7CiBwdWJsaWM6Ci0gICAg
U3BlZWNoSW5wdXRDbGllbnRJbXBsKFdlYlZpZXdDbGllbnQqKTsKKyAgICBzdGF0aWMgUGFzc093
blB0cjxTcGVlY2hJbnB1dENsaWVudEltcGw+IGNyZWF0ZShXZWJWaWV3Q2xpZW50Kik7CiAgICAg
dmlydHVhbCB+U3BlZWNoSW5wdXRDbGllbnRJbXBsKCk7CiAKICAgICAvLyBTcGVlY2hJbnB1dENs
aWVudCBtZXRob2RzLgogICAgIHZvaWQgc2V0TGlzdGVuZXIoV2ViQ29yZTo6U3BlZWNoSW5wdXRM
aXN0ZW5lciopOwotICAgIGJvb2wgc3RhcnRSZWNvZ25pdGlvbihpbnQsIGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmKTsKKyAgICBib29sIHN0YXJ0UmVjb2duaXRpb24oaW50LCBjb25zdCBXVEY6OlN0
cmluZyYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKICAgICB2b2lkIHN0b3BSZWNvcmRpbmco
aW50KTsKICAgICB2b2lkIGNhbmNlbFJlY29nbml0aW9uKGludCk7CiAKQEAgLTY0LDYgKzcwLDgg
QEAgcHVibGljOgogICAgIHZvaWQgZGlkQ29tcGxldGVSZWNvZ25pdGlvbihpbnQpOwogCiBwcml2
YXRlOgorICAgIFNwZWVjaElucHV0Q2xpZW50SW1wbChXZWJWaWV3Q2xpZW50Kik7CisKICAgICBX
ZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIqIG1fY29udHJvbGxlcjsgLy8gVG8gY2FsbCBpbnRvIHRo
ZSBlbWJlZGRlci4KICAgICBXZWJDb3JlOjpTcGVlY2hJbnB1dExpc3RlbmVyKiBtX2xpc3RlbmVy
OwogfTsKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3BlZWNoSW5wdXRDb250
cm9sbGVyTW9ja0ltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTcGVlY2hJbnB1dENv
bnRyb2xsZXJNb2NrSW1wbC5jcHAKaW5kZXggNjBjNGZlZDg1MmIyODRlMDI3MWFkMDBlZDk3MTAw
MmEyZjU3YTRiNi4uNDVjNmZmMDg2MmYwMjRmYzE4MDU3MzNjMTZhOTMzMDU3MzdhYzM5MyAxMDA2
NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2Nr
SW1wbC5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xs
ZXJNb2NrSW1wbC5jcHAKQEAgLTU3LDcgKzU3LDEyIEBAIFdlYlNwZWVjaElucHV0Q29udHJvbGxl
ck1vY2tJbXBsOjp+V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGwoKQogCiB2b2lkIFdl
YlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsOjpzZXRNb2NrUmVjb2duaXRpb25SZXN1bHQo
Y29uc3QgV2ViU3RyaW5nJiByZXN1bHQpCiB7Ci0gICAgbV93ZWJjb3JlTW9jay0+c2V0UmVjb2du
aXRpb25SZXN1bHQocmVzdWx0KTsKKyAgICBtX3dlYmNvcmVNb2NrLT5zZXRSZWNvZ25pdGlvblJl
c3VsdChyZXN1bHQsIFdlYlN0cmluZzo6ZnJvbVVURjgoIiIpKTsKK30KKwordm9pZCBXZWJTcGVl
Y2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6c2V0TW9ja1JlY29nbml0aW9uUmVzdWx0KGNvbnN0
IFdlYlN0cmluZyYgcmVzdWx0LCBjb25zdCBXZWJTdHJpbmcgJmxhbmd1YWdlKQoreworICAgIG1f
d2ViY29yZU1vY2stPnNldFJlY29nbml0aW9uUmVzdWx0KHJlc3VsdCwgbGFuZ3VhZ2UpOwogfQog
CiB2b2lkIFdlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsOjpkaWRDb21wbGV0ZVJlY29y
ZGluZyhpbnQgcmVxdWVzdElkKQpAQCAtNzUsOSArODAsOSBAQCB2b2lkIFdlYlNwZWVjaElucHV0
Q29udHJvbGxlck1vY2tJbXBsOjpzZXRSZWNvZ25pdGlvblJlc3VsdChpbnQgcmVxdWVzdElkLCBj
b25zdAogICAgIG1fbGlzdGVuZXItPnNldFJlY29nbml0aW9uUmVzdWx0KHJlcXVlc3RJZCwgcmVz
dWx0KTsKIH0KIAotYm9vbCBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6c3RhcnRS
ZWNvZ25pdGlvbihpbnQgcmVxdWVzdElkLCBjb25zdCBXZWJSZWN0JiBlbGVtZW50UmVjdCkKK2Jv
b2wgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OnN0YXJ0UmVjb2duaXRpb24oaW50
IHJlcXVlc3RJZCwgY29uc3QgV2ViU3RyaW5nJiBsYW5ndWFnZSwgY29uc3QgV2ViUmVjdCYgZWxl
bWVudFJlY3QpCiB7Ci0gICAgcmV0dXJuIG1fd2ViY29yZU1vY2stPnN0YXJ0UmVjb2duaXRpb24o
cmVxdWVzdElkLCBlbGVtZW50UmVjdCk7CisgICAgcmV0dXJuIG1fd2ViY29yZU1vY2stPnN0YXJ0
UmVjb2duaXRpb24ocmVxdWVzdElkLCBsYW5ndWFnZSwgZWxlbWVudFJlY3QpOwogfQogCiB2b2lk
IFdlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsOjpjYW5jZWxSZWNvZ25pdGlvbihpbnQg
cmVxdWVzdElkKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTcGVlY2hJbnB1
dENvbnRyb2xsZXJNb2NrSW1wbC5oIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTcGVlY2hJbnB1
dENvbnRyb2xsZXJNb2NrSW1wbC5oCmluZGV4IGVkYmZjYTNlZTYwZTkzOTQyODkzZTI3MjE4OTNl
NDNhMGViODdjNWYuLjFiMzA1M2JmMDkyNzUzZWY3OTI5M2RkY2ExMmU4NDM1MjA2YmRiYzAgMTAw
NjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9j
a0ltcGwuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNwZWVjaElucHV0Q29udHJvbGxl
ck1vY2tJbXBsLmgKQEAgLTM3LDYgKzM3LDEwIEBACiAjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCiAj
aW5jbHVkZSA8d3RmL093blB0ci5oPgogCituYW1lc3BhY2UgV1RGIHsKK2NsYXNzIFN0cmluZzsK
K30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgU3BlZWNoSW5wdXRDbGllbnRNb2NrOwog
fQpAQCAtNTcsMTEgKzYxLDE1IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFJlY29nbml0aW9uUmVz
dWx0KGludCByZXF1ZXN0SWQsIGNvbnN0IFdURjo6U3RyaW5nJiByZXN1bHQpOwogCiAgICAgLy8g
V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyIG1ldGhvZHMuCi0gICAgYm9vbCBzdGFydFJlY29nbml0
aW9uKGludCByZXF1ZXN0SWQsIGNvbnN0IFdlYlJlY3QmIGVsZW1lbnRSZWN0KTsKKyAgICBib29s
IHN0YXJ0UmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCwgY29uc3QgV2ViU3RyaW5nJiBsYW5ndWFn
ZSwgY29uc3QgV2ViUmVjdCYgZWxlbWVudFJlY3QpOwogICAgIHZvaWQgY2FuY2VsUmVjb2duaXRp
b24oaW50IHJlcXVlc3RJZCk7CiAgICAgdm9pZCBzdG9wUmVjb3JkaW5nKGludCByZXF1ZXN0SWQp
OwogCiAgICAgLy8gV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9jayBtZXRob2RzLgorICAgIHZv
aWQgc2V0TW9ja1JlY29nbml0aW9uUmVzdWx0KGNvbnN0IFdlYlN0cmluZyYgcmVzdWx0LCBjb25z
dCBXZWJTdHJpbmcmIGxhbmd1YWdlKTsKKworICAgIC8vIEZJWE1FOiB0aGlzIGlzIGEgZml4IGZv
ciBhIHR3by1zaWRlZCBwYXRjaC4gRGVsZXRlIGFzIHNvb24gYXMgdGhlIGNocm9taXVtIHNpZGUg
aXMgcGF0Y2hlZC4KKyAgICAvLyBDaHJvbWl1bSBwYXRjaCBub3QgdXBsb2FkZWQgeWV0LCBidXQg
d2lsbCBkZXBlbmQgb24gaHR0cDovL2NvZGVyZXZpZXcuY2hyb21pdW0ub3JnLzM2MTUwMDUvc2hv
dyBwYXRjaC4KICAgICB2b2lkIHNldE1vY2tSZWNvZ25pdGlvblJlc3VsdChjb25zdCBXZWJTdHJp
bmcmIHJlc3VsdCk7CiAKIHByaXZhdGU6CkBAIC03Miw0ICs4MCwzIEBAIHByaXZhdGU6CiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIFdlYlNwZWVjaElucHV0Q29udHJvbGxlck1v
Y2tJbXBsX2gKLQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5j
cHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCA1OTljNjVlMGMz
YWQ3OGJkZDMzM2IzZDlkMDVmMGEzM2JjYTVjNmI5Li5lNjI1OWRlMTMzM2Q2M2RhYjlkZTgwNjMx
ZWZmOGZhNzU2YWM0ZGJjIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJ
bXBsLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtODgs
NiArODgsNyBAQAogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2VsZWN0
aW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCisjaW5jbHVkZSAiU3BlZWNo
SW5wdXRDbGllbnRJbXBsLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlICJUeXBpbmdD
b21tYW5kLmgiCiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3IuaCIKQEAgLTI3NSw3ICsy
NzYsNyBAQCBXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwoV2ViVmlld0NsaWVudCogY2xpZW50LCBX
ZWJEZXZUb29sc0FnZW50Q2xpZW50KiBkZXZUb29scwogICAgICwgbV9jb21wb3NpdG9yQ3JlYXRp
b25GYWlsZWQoZmFsc2UpCiAjZW5kaWYKICNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQotICAgICwg
bV9zcGVlY2hJbnB1dENsaWVudChjbGllbnQpCisgICAgLCBtX3NwZWVjaElucHV0Q2xpZW50KFNw
ZWVjaElucHV0Q2xpZW50SW1wbDo6Y3JlYXRlKGNsaWVudCkpCiAjZW5kaWYKICAgICAsIG1fZGV2
aWNlT3JpZW50YXRpb25DbGllbnRQcm94eShuZXcgRGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94
eShjbGllbnQgPyBjbGllbnQtPmRldmljZU9yaWVudGF0aW9uQ2xpZW50KCkgOiAwKSkKIHsKQEAg
LTI5OCw3ICsyOTksNyBAQCBXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwoV2ViVmlld0NsaWVudCog
Y2xpZW50LCBXZWJEZXZUb29sc0FnZW50Q2xpZW50KiBkZXZUb29scwogICAgIHBhZ2VDbGllbnRz
LmRyYWdDbGllbnQgPSAmbV9kcmFnQ2xpZW50SW1wbDsKICAgICBwYWdlQ2xpZW50cy5pbnNwZWN0
b3JDbGllbnQgPSAmbV9pbnNwZWN0b3JDbGllbnRJbXBsOwogI2lmIEVOQUJMRShJTlBVVF9TUEVF
Q0gpCi0gICAgcGFnZUNsaWVudHMuc3BlZWNoSW5wdXRDbGllbnQgPSAmbV9zcGVlY2hJbnB1dENs
aWVudDsKKyAgICBwYWdlQ2xpZW50cy5zcGVlY2hJbnB1dENsaWVudCA9IG1fc3BlZWNoSW5wdXRD
bGllbnQuZ2V0KCk7CiAjZW5kaWYKICAgICBwYWdlQ2xpZW50cy5kZXZpY2VPcmllbnRhdGlvbkNs
aWVudCA9IG1fZGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eS5nZXQoKTsKIApkaWZmIC0tZ2l0
IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oIGIvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJWaWV3SW1wbC5oCmluZGV4IGU1MWRmNGQ5OGUzZDhlMmI2MTEyNTUwMzhmMDhjNjFmZTQy
Yzc4NzguLjZjNjM0NmQ0MDc3OWY5NzM0ZjY1ODNkNjdkZjlhN2Q5YTRhMzJlMWUgMTAwNjQ0Ci0t
LSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAorKysgYi9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlZpZXdJbXBsLmgKQEAgLTQ5LDcgKzQ5LDYgQEAKICNpbmNsdWRlICJJbnRSZWN0
LmgiCiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgiCiAjaW5jbHVkZSAiTm90aWZp
Y2F0aW9uUHJlc2VudGVySW1wbC5oIgotI2luY2x1ZGUgIlNwZWVjaElucHV0Q2xpZW50SW1wbC5o
IgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgog
CkBAIC03NCw2ICs3Myw3IEBAIGNsYXNzIEF1dG9GaWxsUG9wdXBNZW51Q2xpZW50OwogY2xhc3Mg
Q29udGV4dE1lbnVDbGllbnRJbXBsOwogY2xhc3MgRGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94
eTsKIGNsYXNzIERyYWdTY3JvbGxUaW1lcjsKK2NsYXNzIFNwZWVjaElucHV0Q2xpZW50SW1wbDsK
IGNsYXNzIFdlYkFjY2Vzc2liaWxpdHlPYmplY3Q7CiBjbGFzcyBXZWJEZXZUb29sc0FnZW50Q2xp
ZW50OwogY2xhc3MgV2ViRGV2VG9vbHNBZ2VudFByaXZhdGU7CkBAIC01MzcsNyArNTM3LDcgQEAg
cHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3QgV2ViSW5wdXRFdmVudCogbV9jdXJyZW50SW5wdXRF
dmVudDsKIAogI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCi0gICAgU3BlZWNoSW5wdXRDbGllbnRJ
bXBsIG1fc3BlZWNoSW5wdXRDbGllbnQ7CisgICAgT3duUHRyPFNwZWVjaElucHV0Q2xpZW50SW1w
bD4gbV9zcGVlY2hJbnB1dENsaWVudDsKICNlbmRpZgogICAgIC8vIElmIHdlIGF0dGVtcHQgdG8g
ZmV0Y2ggdGhlIG9uLXNjcmVlbiBHcmFwaGljc0NvbnRleHQzRCBiZWZvcmUKICAgICAvLyB0aGUg
Y29tcG9zaXRvciBoYXMgYmVlbiB0dXJuZWQgb24sIHdlIG5lZWQgdG8gaW5zdGFudGlhdGUgaXQK
ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCAwYWJjMjA4Nzc2MTE5OThkNWUzOGM4M2E0NzkyODk1MDUxNWZmZjg5Li5iMjE5N2U1
NDBmYzNkOWJlM2RiZjIxNTIxZDJmYTJkOWRlYTkyN2Y0IDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAK
KzIwMTAtMTAtMDggIExlYW5kcm8gR3JhY2nDoSBHaWwgIDxsZWFuZHJvZ3JhY2lhQGdvb2dsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
ZWQgYSBzZWNvbmQgcGFyYW1ldGVyIHRvIHNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdCBmb3IKKyAg
ICAgICAgdGhlIGxhbmd1YWdlIHVzZWQgaW4gc3BlZWNoIGlucHV0LgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDcwODkKKworICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKHNldE1vY2tTcGVl
Y2hJbnB1dFJlc3VsdENhbGxiYWNrKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRU
ZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91
dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRN
b2NrU3BlZWNoSW5wdXRSZXN1bHQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2d0ay9MYXlv
dXRUZXN0Q29udHJvbGxlckd0ay5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6
c2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KToKKwogMjAxMC0xMC0wOCAgQW5kcmFzIEJlY3NpICA8
YWJlY3NpQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQ3NhYmEgT3N6dHJvZ29u
w6FjLgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENv
bnRyb2xsZXIuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRy
b2xsZXIuY3BwCmluZGV4IDBhN2MxMWZlNThlN2ZlMzY2YTcwYjZjZDIyNzRiMzdkYTVkMjc4NzIu
LjA2N2NkMDE0MjM0OGNiODVlMjA2NzhmNGEyNzVlZjkzNTBjMmU2MTAgMTAwNjQ0Ci0tLSBhL1dl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAorKysgYi9X
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKQEAgLTEw
NzAsMTQgKzEwNzAsMTcgQEAgc3RhdGljIEpTVmFsdWVSZWYgc2V0TW9ja0dlb2xvY2F0aW9uRXJy
b3JDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3QKIAogc3RhdGljIEpTVmFs
dWVSZWYgc2V0TW9ja1NwZWVjaElucHV0UmVzdWx0Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRl
eHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3Qg
YXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiog
ZXhjZXB0aW9uKQogewotICAgIGlmIChhcmd1bWVudENvdW50IDwgMSkKKyAgICBpZiAoYXJndW1l
bnRDb3VudCA8IDIpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0
KTsKIAogICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiByZXN1bHQoQWRvcHQsIEpTVmFsdWVU
b1N0cmluZ0NvcHkoY29udGV4dCwgYXJndW1lbnRzWzBdLCBleGNlcHRpb24pKTsKICAgICBBU1NF
UlQoISpleGNlcHRpb24pOwogCisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGxhbmd1YWdl
KEFkb3B0LCBKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIGFyZ3VtZW50c1sxXSwgZXhjZXB0
aW9uKSk7CisgICAgQVNTRVJUKCEqZXhjZXB0aW9uKTsKKwogICAgIExheW91dFRlc3RDb250cm9s
bGVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xsZXIqPihKU09i
amVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOwotICAgIGNvbnRyb2xsZXItPnNldE1vY2tTcGVl
Y2hJbnB1dFJlc3VsdChyZXN1bHQuZ2V0KCkpOworICAgIGNvbnRyb2xsZXItPnNldE1vY2tTcGVl
Y2hJbnB1dFJlc3VsdChyZXN1bHQuZ2V0KCksIGxhbmd1YWdlLmdldCgpKTsKIAogICAgIHJldHVy
biBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KZGlmZiAtLWdpdCBhL1dlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmggYi9XZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCmluZGV4IDc1NWEyYjJiOWM2ODg1
Yjc5NmEwM2U1MmQ1MDIwZDg4YjQzZGQ5OGIuLmJjY2MwYTA2MGVlZjg3OTg2MjQwMjU5MThmMzk2
NjYyMjI1ODhkZTEgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91
dFRlc3RDb250cm9sbGVyLmgKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0
VGVzdENvbnRyb2xsZXIuaApAQCAtOTQsNyArOTQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRN
b2NrRGV2aWNlT3JpZW50YXRpb24oYm9vbCBjYW5Qcm92aWRlQWxwaGEsIGRvdWJsZSBhbHBoYSwg
Ym9vbCBjYW5Qcm92aWRlQmV0YSwgZG91YmxlIGJldGEsIGJvb2wgY2FuUHJvdmlkZUdhbW1hLCBk
b3VibGUgZ2FtbWEpOwogICAgIHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IoaW50IGNvZGUs
IEpTU3RyaW5nUmVmIG1lc3NhZ2UpOwogICAgIHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRp
b24oZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJhY3kpOwot
ICAgIHZvaWQgc2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KEpTU3RyaW5nUmVmIHJlc3VsdCk7Cisg
ICAgdm9pZCBzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoSlNTdHJpbmdSZWYgcmVzdWx0LCBKU1N0
cmluZ1JlZiBsYW5ndWFnZVRhZyk7CiAgICAgdm9pZCBzZXRQZXJzaXN0ZW50VXNlclN0eWxlU2hl
ZXRMb2NhdGlvbihKU1N0cmluZ1JlZiBwYXRoKTsKICAgICB2b2lkIHNldFBsdWdpbnNFbmFibGVk
KGJvb2wgZmxhZyk7CiAgICAgdm9pZCBzZXRQb3B1cEJsb2NraW5nRW5hYmxlZChib29sIGZsYWcp
OwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0
VGVzdENvbnRyb2xsZXIuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
TGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IGQ3Nzc0ZTk5NjdiZTg2OWE0ZDM1MzY5NmZj
MDRjYzNmZGY5ODFkZGEuLjNjY2I3NDI2NDBmNGQyZmExNDJhNzE4OWIzOGVmMzNlYmQ0MGZjOTQg
MTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRl
c3RDb250cm9sbGVyLmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKQEAgLTE1MjUsMTAgKzE1MjUsMTAgQEAgdm9pZCBM
YXlvdXRUZXN0Q29udHJvbGxlcjo6YWJvcnRNb2RhbChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFy
Z3VtZW50cywgQ3BwVmFyaWEKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tTcGVl
Y2hJbnB1dFJlc3VsdChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFu
dCogcmVzdWx0KQogewogICAgIHJlc3VsdC0+c2V0TnVsbCgpOwotICAgIGlmIChhcmd1bWVudHMu
c2l6ZSgpIDwgMSB8fCAhYXJndW1lbnRzWzBdLmlzU3RyaW5nKCkpCisgICAgaWYgKGFyZ3VtZW50
cy5zaXplKCkgPCAyIHx8ICFhcmd1bWVudHNbMF0uaXNTdHJpbmcoKSB8fCAhYXJndW1lbnRzWzFd
LmlzU3RyaW5nKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fc3BlZWNoSW5wdXRDb250cm9s
bGVyTW9jay0+c2V0TW9ja1JlY29nbml0aW9uUmVzdWx0KGNwcFZhcmlhbnRUb1dlYlN0cmluZyhh
cmd1bWVudHNbMF0pKTsKKyAgICBtX3NwZWVjaElucHV0Q29udHJvbGxlck1vY2stPnNldE1vY2tS
ZWNvZ25pdGlvblJlc3VsdChjcHBWYXJpYW50VG9XZWJTdHJpbmcoYXJndW1lbnRzWzBdKSwgY3Bw
VmFyaWFudFRvV2ViU3RyaW5nKGFyZ3VtZW50c1sxXSkpOwogfQogCiBXZWJLaXQ6OldlYlNwZWVj
aElucHV0Q29udHJvbGxlciogTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNwZWVjaElucHV0Q29udHJv
bGxlcihXZWJLaXQ6OldlYlNwZWVjaElucHV0TGlzdGVuZXIqIGxpc3RlbmVyKQpkaWZmIC0tZ2l0
IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3Rr
LmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxl
ckd0ay5jcHAKaW5kZXggZDgzMTA3NjNkZTY2NGYzOTUyNDA0NGU3Zjg1Zjc3NTViZDQ4ZjFjMC4u
ODY3ZjMyN2Q2ZjZlMjZkZTEyM2EwY2U5ZjMzN2I4OGRjNWNkMWU2YiAxMDA2NDQKLS0tIGEvV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcAor
KysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJH
dGsuY3BwCkBAIC00ODgsNyArNDg4LDcgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0
R2VvbG9jYXRpb25QZXJtaXNzaW9uKGJvb2wgYWxsb3cpCiAgICAgc2V0R2VvbG9jYXRpb25QZXJt
aXNzaW9uQ29tbW9uKGFsbG93KTsKIH0KIAotdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0
TW9ja1NwZWVjaElucHV0UmVzdWx0KEpTU3RyaW5nUmVmIHJlc3VsdCkKK3ZvaWQgTGF5b3V0VGVz
dENvbnRyb2xsZXI6OnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdChKU1N0cmluZ1JlZiByZXN1bHQs
IEpTU3RyaW5nUmVmIGxhbmd1YWdlKQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIHNw
ZWVjaCBpbnB1dCBsYXlvdXQgdGVzdHMuCiAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zOTQ4NS4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70258</attachid>
            <date>2010-10-08 09:16:11 -0700</date>
            <delta_ts>2010-10-13 05:35:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47089-20101008171608.patch</filename>
            <type>text/plain</type>
            <size>35717</size>
            <attacher name="Leandro Graciá Gil">leandrogracia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhNWU4NTI5ZjBlMzg2YjA3MTk0YmRiNjVlOWFmNGE5NjQ2NGFhMWZmLi5mOGU1ZGQx
MzI4OTkzNjYxYzZmNDdkYzgzMTIxNzcyNzk4NDQwMDIwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAK
KzIwMTAtMTAtMDggIExlYW5kcm8gR3JhY2nDoSBHaWwgIDxsZWFuZHJvZ3JhY2lhQGdvb2dsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
ZWQgYSBsYXlvdXQgdGVzdCBmb3IgdGhlIGxhbmd1YWdlIHRhZyBpbiBzcGVlY2ggaW5wdXQuIFVw
ZGF0ZWQKKyAgICAgICAgdGhlIHNwZWVjaCBidXR0b24gdGVzdHMgdG8gaW5jbHVkZSB0aGUgbmV3
IGxhbmd1YWdlIHBhcmFtZXRlciBpbiB0aGUKKyAgICAgICAgbW9jayByZXN1bHQuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzA4OQorCisgICAgICAg
ICogZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1sYW5ndWFnZS10YWctZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L3NwZWVjaC9pbnB1dC10ZXh0LWxhbmd1YWdlLXRhZy5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L3NwZWVjaC9pbnB1dC10ZXh0LXNwZWVjaGJ1dHRvbi5odG1s
OiBBZGRlZCBhbiBlbXB0eSBsYW5ndWFnZQorICAgICAgICAgIHBhcmFtZXRlci4KKyAgICAgICAg
KiBmYXN0L3NwZWVjaC9zcGVlY2gtYnV0dG9uLWlnbm9yZS1nZW5lcmF0ZWQtZXZlbnRzLmh0bWw6
IEFkZGVkIGFuCisgICAgICAgICAgZW1wdHkgbGFuZ3VhZ2UgcGFyYW1ldGVyLgorCiAyMDEwLTEw
LTA4ICBOaWtvbGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkByaW0uY29tPgogCiAgICAgICAg
IE5vdCByZXZpZXdlZC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL2lucHV0
LXRleHQtbGFuZ3VhZ2UtdGFnLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNo
L2lucHV0LXRleHQtbGFuZ3VhZ2UtdGFnLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MWYzMGQ2
OTZmNWQyNTBmMTRhZjU2Yjk5YjRlNzBjODc5YzBlNTAyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1sYW5ndWFnZS10YWctZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMTMgQEAKK1Rlc3RzIGZvciBsYW5ndWFnZSB0YWcgaW5oZXJpdGFuY2UgYW5k
IHZhbGlkYXRpb24gaW4gc3BlZWNoIGJ1dHRvbnMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworCitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzcGVlY2hJbnB1dE5vbmUiKS52
YWx1ZSBpcyAiZXJyb3I6IG5vIHJlc3VsdCBmb3VuZCBmb3IgbGFuZ3VhZ2UgJyciCitQQVNTIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJzcGVlY2hJbnB1dEVsZW1lbnQiKS52YWx1ZSBpcyAiUGlj
dHVyZXMgb2YgdGhlIG1vb24iCitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzcGVlY2hJ
bnB1dEluaGVyaXRlZCIpLnZhbHVlIGlzICLmnIjjga7lhpnnnJ8iCitQQVNTIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJzcGVlY2hJbnB1dEludmFsaWQiKS52YWx1ZSBpcyAiZXJyb3I6IG5vIHJl
c3VsdCBmb3VuZCBmb3IgbGFuZ3VhZ2UgJyciCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKyAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc3Bl
ZWNoL2lucHV0LXRleHQtbGFuZ3VhZ2UtdGFnLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVj
aC9pbnB1dC10ZXh0LWxhbmd1YWdlLXRhZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjliZmM4MjI2MmVlMzBh
MmM1ZmE1ZTI1ODE2MWVhOGExZTE4ZTY1YWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L3NwZWVjaC9pbnB1dC10ZXh0LWxhbmd1YWdlLXRhZy5odG1sCkBAIC0wLDAgKzEsNjIg
QEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1s
PgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0i
Li4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxz
Y3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KK2Rlc2NyaXB0aW9uKCdUZXN0cyBmb3IgbGFu
Z3VhZ2UgdGFnIGluaGVyaXRhbmNlIGFuZCB2YWxpZGF0aW9uIGluIHNwZWVjaCBidXR0b25zLicp
OworCisvLyBOb3RlOiB0ZXN0IGNhc2VzIGFyZSBzZXF1ZW50aWFsIHRvIGVuc3VyZSB0aGF0IG5v
IG5ldyByZWNvZ25pdGlvbiBzdGFydHMgd2hlbiBhbm90aGVyIHJlY29nbml0aW9uIHJlY29yZGlu
ZyBpcyBhY3RpdmUuCitmdW5jdGlvbiBvbkNoYW5nZU5vbmUoKSB7CisgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCdkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3BlZWNoSW5wdXROb25lIikudmFs
dWUnLCAnZXJyb3I6IG5vIHJlc3VsdCBmb3VuZCBmb3IgbGFuZ3VhZ2UgXCdcJycpOworICAgIHNl
dFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNwZWVjaEJ1dHRvbkNsaWNrKCdzcGVlY2hJbnB1dEVsZW1l
bnQnKTsgfSwgNTApOworfQorCitmdW5jdGlvbiBvbkNoYW5nZUVsZW1lbnQoKSB7CisgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCdkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3BlZWNoSW5wdXRF
bGVtZW50IikudmFsdWUnLCAnUGljdHVyZXMgb2YgdGhlIG1vb24nKTsKKyAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgeyBzcGVlY2hCdXR0b25DbGljaygnc3BlZWNoSW5wdXRJbmhlcml0ZWQnKTsg
fSwgNTApOworfQorCitmdW5jdGlvbiBvbkNoYW5nZUluaGVyaXRlZCgpIHsKKyAgICBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoJ2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzcGVlY2hJbnB1dEluaGVy
aXRlZCIpLnZhbHVlJywgJ+aciOOBruWGmeecnycpOworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IHNwZWVjaEJ1dHRvbkNsaWNrKCdzcGVlY2hJbnB1dEludmFsaWQnKTsgfSwgNTApOworfQor
CitmdW5jdGlvbiBvbkNoYW5nZUludmFsaWQoKSB7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCdkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3BlZWNoSW5wdXRJbnZhbGlkIikudmFsdWUnLCAn
ZXJyb3I6IG5vIHJlc3VsdCBmb3VuZCBmb3IgbGFuZ3VhZ2UgXCdcJycpOworICAgIGZpbmlzaEpT
VGVzdCgpOworfQorCitmdW5jdGlvbiBzcGVlY2hCdXR0b25DbGljayhlbGVtZW50SWQpIHsKKyAg
ICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJZCk7CisgICAg
dmFyIHggPSBlbGVtZW50Lm9mZnNldExlZnQgKyBlbGVtZW50Lm9mZnNldFdpZHRoIC0gNDsKKyAg
ICB2YXIgeSA9IGVsZW1lbnQub2Zmc2V0VG9wICsgZWxlbWVudC5vZmZzZXRIZWlnaHQgLyAyOwor
ICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGV2ZW50U2VuZGVyLm1vdXNl
RG93bigpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKK30KKworZnVuY3Rpb24gcnVuKCkg
eworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIgJiYgd2luZG93LmV2ZW50U2Vu
ZGVyKSB7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldE1vY2tTcGVlY2hJbnB1dFJl
c3VsdCgnUGljdHVyZXMgb2YgdGhlIG1vb24nLCAnZW4tR0InKTsKKyAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuc2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KCfmnIjjga7lhpnnnJ8nLCAnamEn
KTsKKyAgICAgICAgc3BlZWNoQnV0dG9uQ2xpY2soJ3NwZWVjaElucHV0Tm9uZScpOworICAgIH0K
K30KKword2luZG93Lm9ubG9hZCA9IHJ1bjsKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsK
K3dpbmRvdy5zdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8aW5wdXQgaWQ9
InNwZWVjaElucHV0Tm9uZSIgeC13ZWJraXQtc3BlZWNoIG9ud2Via2l0c3BlZWNoY2hhbmdlPSJv
bkNoYW5nZU5vbmUoKSI+Cis8aW5wdXQgaWQ9InNwZWVjaElucHV0RWxlbWVudCIgeC13ZWJraXQt
c3BlZWNoIG9ud2Via2l0c3BlZWNoY2hhbmdlPSJvbkNoYW5nZUVsZW1lbnQoKSIgbGFuZz0iZW4t
R0IiPgorPGRpdiBsYW5nPSJqYSI+IDxpbnB1dCBpZD0ic3BlZWNoSW5wdXRJbmhlcml0ZWQiIHgt
d2Via2l0LXNwZWVjaCBvbndlYmtpdHNwZWVjaGNoYW5nZT0ib25DaGFuZ2VJbmhlcml0ZWQoKSI+
IDwvZGl2PgorPGlucHV0IGlkPSJzcGVlY2hJbnB1dEludmFsaWQiIHgtd2Via2l0LXNwZWVjaCBv
bndlYmtpdHNwZWVjaGNoYW5nZT0ib25DaGFuZ2VJbnZhbGlkKCkiIGxhbmc9IjEzMzckw74zzrtr
Ij4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNo
L2lucHV0LXRleHQtc3BlZWNoYnV0dG9uLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9p
bnB1dC10ZXh0LXNwZWVjaGJ1dHRvbi5odG1sCmluZGV4IDZmNWJjNGIxMjFmYjRmOWQ5ZGRhNmMz
MzFmOGIyNmRjMWNkNDM5OTQuLmNlZjc3MDU2YjE3ZDFjZDQ1MWI0OTBiN2MxZjI0NmJhNmM4OTUw
ZGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL2lucHV0LXRleHQtc3BlZWNo
YnV0dG9uLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1zcGVl
Y2hidXR0b24uaHRtbApAQCAtMzIsNyArMzIsNyBAQCBmdW5jdGlvbiBvbldlYmtpdFNwZWVjaENo
YW5nZSgpIHsKIAogZnVuY3Rpb24gcnVuKCkgewogICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIgJiYgd2luZG93LmV2ZW50U2VuZGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdCgnUGljdHVyZXMgb2YgdGhlIG1vb24nKTsK
KyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KCdQ
aWN0dXJlcyBvZiB0aGUgbW9vbicsICcnKTsKIAogICAgICAgICAvLyBDbGlja2luZyB0aGUgc3Bl
ZWNoIGJ1dHRvbiBzaG91bGQgZmlsbCBpbiBtb2NrIHNwZWVjaC1yZWNvZ25pemVkIHRleHQuCiAg
ICAgICAgIHZhciBpbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzcGVlY2hJbnB1dCcp
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvc3BlZWNoLWJ1dHRvbi1pZ25v
cmUtZ2VuZXJhdGVkLWV2ZW50cy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvc3BlZWNo
LWJ1dHRvbi1pZ25vcmUtZ2VuZXJhdGVkLWV2ZW50cy5odG1sCmluZGV4IGI5YjhlYzM2NjA1NTc5
ZjJiMTI2ZDZmMWRhMzU2MGM2NzJhZDJiNzEuLmM2ODQ4NjM3NzA1MzM5OWIyOWQwNGZjMjk5MDdl
NTVlOGFiZjA2MDggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL3NwZWVjaC1i
dXR0b24taWdub3JlLWdlbmVyYXRlZC1ldmVudHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L3NwZWVjaC9zcGVlY2gtYnV0dG9uLWlnbm9yZS1nZW5lcmF0ZWQtZXZlbnRzLmh0bWwKQEAgLTQ5
LDcgKzQ5LDcgQEAgZnVuY3Rpb24gc2V0dXBEaXNwYXRjaEV2ZW50VGVzdCgpIHsKIGZ1bmN0aW9u
IHJ1bigpIHsKICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyICYmIHdpbmRvdy5l
dmVudFNlbmRlcikgewogICAgICAgICAvLyBSdW5uaW5nIGluIERSVCwgdGVzdCB0aGUgZXZlbnRT
ZW5kZXIgY2FzZS4KLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja1NwZWVjaElu
cHV0UmVzdWx0KCdQaWN0dXJlcyBvZiB0aGUgbW9vbicpOworICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5zZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoJ1BpY3R1cmVzIG9mIHRoZSBtb29uJywg
JycpOwogICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3BlZWNoSW5wdXQnKS5vbndl
YmtpdHNwZWVjaGNoYW5nZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCdkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3BlZWNoSW5wdXQiKS52YWx1ZScs
ICdQaWN0dXJlcyBvZiB0aGUgbW9vbicpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDM4MWE5ZTlhNjE4ODI2NWE5YWMyYjIyNWYxYTEw
NjBhN2MwNWU5MWIuLmZmNWU2YjU5Mjk4MDExZmU3MDUzYjg5OWVjMmNkYjE4Nzk3NDY2ZTIgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNDAgQEAKKzIwMTAtMTAtMDggIExlYW5kcm8gR3JhY2nDoSBHaWwgIDxsZWFuZHJvZ3Jh
Y2lhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgUGF0Y2ggdGhlIGN1cnJlbnQgc3BlZWNoIGlucHV0IGltcGxlbWVudGF0aW9uIHRv
IHVzZSBhbmQgdmFsaWRhdGUgdGhlCisgICAgICAgIG5lYXJlc3QgbGFuZ3VhZ2UgdGFnLiBUaGUg
bGFuZ3VhZ2UgaXMgbm93IHBhc3NlZCB0byB0aGUgc3RhcnRSZWNvZ25pdGlvbgorICAgICAgICBt
ZXRob2RzIHNvIHRoYXQgbGFuZ3VhZ2Utc3BlY2lmaWMgcmVjb2duaXRpb24gY291bGQgYmUgdXNl
ZC4gQWxzbyBhZGRlZAorICAgICAgICBhIHNlY29uZCBwYXJhbWV0ZXIgdG8gc2V0TW9ja1NwZWVj
aElucHV0UmVzdWx0IGZvciB0aGUgbGFuZ3VhZ2UgdXNlZCBpbgorICAgICAgICBzcGVlY2ggcmVj
b2duaXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD00NzA4OQorCisgICAgICAgIFRoaXMgaXMgdGhlIDJuZCBvZiBhIDQtc2lkZWQgcGF0Y2ggaW4g
Q2hyb21pdW0gYW5kIFdlYktpdC4gRm9yIG1vcmUKKyAgICAgICAgZGV0YWlscyBzZWUgaHR0cDov
L2NvZGVyZXZpZXcuY2hyb21pdW0ub3JnLzM2MTUwMDUvc2hvdyBhbmQKKyAgICAgICAgaHR0cDov
L2NvZGVyZXZpZXcuY2hyb21pdW0ub3JnLzM1OTUwMTgvc2hvdy4KKworICAgICAgICBUZXN0OiBm
YXN0L3NwZWVjaC9pbnB1dC10ZXh0LWxhbmd1YWdlLXRhZy5odG1sCisKKyAgICAgICAgKiBkb20v
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojpjb21wdXRlSW5oZXJpdGVk
TGFuZ3VhZ2UpOiBpbmNsdWRlcyBhIGJyaWVmIGNoYXJhY3RlcgorICAgICAgICAgIHZhbGlkYXRp
b24gZm9yIHRoZSBCQ1AgNDcgbGFuZ3VhZ2UgdGFnLgorICAgICAgICAqIHBhZ2UvU3BlZWNoSW5w
dXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoSW5wdXQ6OnN0YXJ0UmVjb2duaXRpb24p
OgorICAgICAgICAqIHBhZ2UvU3BlZWNoSW5wdXQuaDoKKyAgICAgICAgKiBwYWdlL1NwZWVjaElu
cHV0Q2xpZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9TcGVlY2hJbnB1dENsaWVudE1v
Y2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoSW5wdXRDbGllbnRNb2NrOjpzdGFydFJl
Y29nbml0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaElucHV0Q2xpZW50TW9jazo6c2V0
UmVjb2duaXRpb25SZXN1bHQpOiByZXN1bHRzIGFyZSBub3cKKyAgICAgICAgICBzdG9yZWQgYnkg
bGFuZ3VhZ2UgdXNpbmcgYSBoYXNoIG1hcC4KKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaElucHV0
Q2xpZW50TW9jazo6dGltZXJGaXJlZCk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9TcGVlY2hJ
bnB1dENsaWVudE1vY2suaDoKKyAgICAgICAgKiByZW5kZXJpbmcvVGV4dENvbnRyb2xJbm5lckVs
ZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb250cm9sSW5uZXJFbGVtZW50Ojph
dHRhY2hJbm5lckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoRmllbGRDYW5jZWxC
dXR0b25FbGVtZW50OjpkZXRhY2gpOgorICAgICAgICAoV2ViQ29yZTo6U3BpbkJ1dHRvbkVsZW1l
bnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRGaWVsZFNw
ZWVjaEJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQ6OmRldGFjaCk6CisKIDIwMTAtMTAtMDgg
IEFuZHJlYXMgS2xpbmcgIDxhbmRyZWFzLmtsaW5nQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBOaWtvbGFzIFppbW1lcm1hbm4uCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcCBiL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IDYwYTEwNjNjNGQyOGQyODJm
Njc3MzY2NzNjNDNjY2RlOGU2YWNmZjQuLjVhNDJjZDM4ODI3YjA4ZTQ4NGU0NmY4YTA5MjJlOWMy
NzI2MTMxYjQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1dlYkNv
cmUvZG9tL0VsZW1lbnQuY3BwCkBAIC01Niw2ICs1Niw3IEBACiAjaW5jbHVkZSAiU2V0dGluZ3Mu
aCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJYTUxOYW1lcy5oIgorI2lu
Y2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgog
CiAjaWYgRU5BQkxFKFNWRykKQEAgLTE0NjgsNiArMTQ2OSwxNSBAQCBBdG9taWNTdHJpbmcgRWxl
bWVudDo6Y29tcHV0ZUluaGVyaXRlZExhbmd1YWdlKCkgY29uc3QKICAgICAgICAgbiA9IG4tPnBh
cmVudCgpOwogICAgIH0KIAorICAgIGlmICghdmFsdWUuaXNOdWxsKCkgJiYgIXZhbHVlLmlzRW1w
dHkoKSkgeworICAgICAgICAvLyBPbmx5IEEtWmEtejAtOSBhbmQgJy0nIGFyZSBhbGxvd2VkIGlu
IHRoZSBsYW5ndWFnZSB0YWcgKHNlZSBCQ1AgNDcpCisgICAgICAgIENTdHJpbmcgbGFuZ3VhZ2VU
YWcgPSB2YWx1ZS5zdHJpbmcoKS5hc2NpaSgpOworICAgICAgICBmb3IgKGNvbnN0IGNoYXIgKnAg
PSBsYW5ndWFnZVRhZy5kYXRhKCk7ICpwICE9ICdcMCc7ICsrcCkgeworICAgICAgICAgICAgaWYg
KCFpc0FTQ0lJQWxwaGFudW1lcmljKCpwKSAmJiAqcCAhPSAnLScpCisgICAgICAgICAgICAgICAg
cmV0dXJuIEF0b21pY1N0cmluZygpOworICAgICAgICB9CisgICAgfQorCiAgICAgcmV0dXJuIHZh
bHVlOwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXQuY3BwIGIvV2Vi
Q29yZS9wYWdlL1NwZWVjaElucHV0LmNwcAppbmRleCAyMzQ3OTFiYzRiMTNmNDNkZjlkMTczOWQ1
ZDIwNWY5YWEyN2UyMDcyLi5jYzVlMGY5N2ZiYWJmOWFmYTNmNDM1OWM3MjZiYWM4N2U1MzQxOGNm
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXQuY3BwCisrKyBiL1dlYkNvcmUv
cGFnZS9TcGVlY2hJbnB1dC5jcHAKQEAgLTkzLDEwICs5MywxMCBAQCB2b2lkIFNwZWVjaElucHV0
OjpzZXRSZWNvZ25pdGlvblJlc3VsdChpbnQgbGlzdGVuZXJJZCwgY29uc3QgU3RyaW5nJiByZXN1
bHQpCiAgICAgICAgIG1fbGlzdGVuZXJzLmdldChsaXN0ZW5lcklkKS0+c2V0UmVjb2duaXRpb25S
ZXN1bHQobGlzdGVuZXJJZCwgcmVzdWx0KTsKIH0KIAotYm9vbCBTcGVlY2hJbnB1dDo6c3RhcnRS
ZWNvZ25pdGlvbihpbnQgbGlzdGVuZXJJZCwgY29uc3QgSW50UmVjdCYgZWxlbWVudFJlY3QpCiti
b29sIFNwZWVjaElucHV0OjpzdGFydFJlY29nbml0aW9uKGludCBsaXN0ZW5lcklkLCBjb25zdCBT
dHJpbmcmIGxhbmd1YWdlLCBjb25zdCBJbnRSZWN0JiBlbGVtZW50UmVjdCkKIHsKICAgICBBU1NF
UlQobV9saXN0ZW5lcnMuY29udGFpbnMobGlzdGVuZXJJZCkpOwotICAgIHJldHVybiBtX2NsaWVu
dC0+c3RhcnRSZWNvZ25pdGlvbihsaXN0ZW5lcklkLCBlbGVtZW50UmVjdCk7CisgICAgcmV0dXJu
IG1fY2xpZW50LT5zdGFydFJlY29nbml0aW9uKGxpc3RlbmVySWQsIGxhbmd1YWdlLCBlbGVtZW50
UmVjdCk7CiB9CiAKIHZvaWQgU3BlZWNoSW5wdXQ6OnN0b3BSZWNvcmRpbmcoaW50IGxpc3RlbmVy
SWQpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXQuaCBiL1dlYkNvcmUvcGFn
ZS9TcGVlY2hJbnB1dC5oCmluZGV4IGQxMGI3ODlhYWQyNzM5ZWRkM2JmNDUzMGU3YzZlMDBjNGUy
ZGFlOGEuLjhiNDI2ZjU2MzEzNmVkNjUxZGQ2NDU2ZTgzNWI0ZDQ0NTNhYjgwMTIgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dC5oCisrKyBiL1dlYkNvcmUvcGFnZS9TcGVlY2hJ
bnB1dC5oCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHVucmVnaXN0ZXJMaXN0
ZW5lcihpbnQpOwogCiAgICAgLy8gTWV0aG9kcyBpbnZva2VkIGJ5IHRoZSBpbnB1dCBlbGVtZW50
cy4KLSAgICBib29sIHN0YXJ0UmVjb2duaXRpb24oaW50LCBjb25zdCBJbnRSZWN0Jik7CisgICAg
Ym9vbCBzdGFydFJlY29nbml0aW9uKGludCwgY29uc3QgU3RyaW5nJiwgY29uc3QgSW50UmVjdCYp
OwogICAgIHZvaWQgc3RvcFJlY29yZGluZyhpbnQpOwogICAgIHZvaWQgY2FuY2VsUmVjb2duaXRp
b24oaW50KTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0Q2xpZW50Lmgg
Yi9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXRDbGllbnQuaAppbmRleCBkNWZkYTE3ZmFhMmNkNzk1
YWY0NGY1M2E0NmZjYmE1OTc0MWFiNzZjLi4zOGJmZTRmYzQ1NTI5ZjAwNzIyNDNmZWFkOGY3YmM2
ZmE5ZGFhNmZiIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXRDbGllbnQuaAor
KysgYi9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXRDbGllbnQuaApAQCAtMzMsNiArMzMsMTAgQEAK
IAogI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCiAKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgU3Ry
aW5nOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEludFJlY3Q7CkBAIC00OCw3
ICs1Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0TGlzdGVuZXIoU3BlZWNoSW5w
dXRMaXN0ZW5lciopID0gMDsKIAogICAgIC8vIFN0YXJ0cyBzcGVlY2ggcmVjb2duaXRpb24gYW5k
IGF1ZGlvIHJlY29yZGluZy4KLSAgICB2aXJ0dWFsIGJvb2wgc3RhcnRSZWNvZ25pdGlvbihpbnQg
cmVxdWVzdElkLCBjb25zdCBJbnRSZWN0JiBlbGVtZW50UmVjdCkgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCBzdGFydFJlY29nbml0aW9uKGludCByZXF1ZXN0SWQsIGNvbnN0IFdURjo6U3RyaW5nJiBs
YW5ndWFnZSwgY29uc3QgSW50UmVjdCYgZWxlbWVudFJlY3QpID0gMDsKIAogICAgIC8vIFN0b3Bz
IGF1ZGlvIHJlY29yZGluZyBhbmQgcGVyZm9ybXMgcmVjb2duaXRpb24gd2l0aCB0aGUgYXVkaW8g
cmVjb3JkZWQgdW50aWwgbm93CiAgICAgLy8gKGRvZXMgbm90IGRpc2NhcmQgYXVkaW8pLgpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xpZW50TW9jay5jcHAg
Yi9XZWJDb3JlL3BsYXRmb3JtL21vY2svU3BlZWNoSW5wdXRDbGllbnRNb2NrLmNwcAppbmRleCA2
YjY0OTQyZjE3YjkyNWI0OWVmMDkyMTQ3YzBhMTZhMDdmMGQ3Y2NjLi5jMDQ5NzFlMGE5NDM4NTVh
OGNmY2QxZDFjMjQ1NjMyYmE4MjFiMTBhIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svU3BlZWNoSW5wdXRDbGllbnRNb2NrLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
U3BlZWNoSW5wdXRDbGllbnRNb2NrLmNwcApAQCAtMzUsNiArMzUsMTEgQEAKIAogI2luY2x1ZGUg
IlNwZWVjaElucHV0TGlzdGVuZXIuaCIKIAorbmFtZXNwYWNlIHsKKyAgICAvLyBIYXNoTWFwIGRv
ZXNuJ3Qgc3VwcG9ydCBlbXB0eSBzdHJpbmdzIGFzIGtleXMsIHNvIHRoaXMgdmFsdWUgKGFuIGlu
dmFsaWQgQkNQNDcgdGFnKSBpcyB1c2VkIGZvciB0aG9zZSBjYXNlcy4KKyAgICBjb25zdCBTdHJp
bmcgZW1wdHlMYW5ndWFnZSA9ICJfIjsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTcGVl
Y2hJbnB1dENsaWVudE1vY2s6OlNwZWVjaElucHV0Q2xpZW50TW9jaygpCkBAIC01MCwxMiArNTUs
MTMgQEAgdm9pZCBTcGVlY2hJbnB1dENsaWVudE1vY2s6OnNldExpc3RlbmVyKFNwZWVjaElucHV0
TGlzdGVuZXIqIGxpc3RlbmVyKQogICAgIG1fbGlzdGVuZXIgPSBsaXN0ZW5lcjsKIH0KIAotYm9v
bCBTcGVlY2hJbnB1dENsaWVudE1vY2s6OnN0YXJ0UmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCwg
Y29uc3QgSW50UmVjdCYpCitib29sIFNwZWVjaElucHV0Q2xpZW50TW9jazo6c3RhcnRSZWNvZ25p
dGlvbihpbnQgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlLCBjb25zdCBJbnRSZWN0
JikKIHsKICAgICBpZiAobV90aW1lci5pc0FjdGl2ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgbV9yZXF1ZXN0SWQgPSByZXF1ZXN0SWQ7CiAgICAgbV9yZWNvcmRpbmcgPSB0cnVlOwor
ICAgIG1fbGFuZ3VhZ2UgPSBsYW5ndWFnZTsKICAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdCgwKTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTgwLDkgKzg2LDEyIEBAIHZvaWQgU3BlZWNoSW5wdXRD
bGllbnRNb2NrOjpjYW5jZWxSZWNvZ25pdGlvbihpbnQgcmVxdWVzdElkKQogICAgIH0KIH0KIAot
dm9pZCBTcGVlY2hJbnB1dENsaWVudE1vY2s6OnNldFJlY29nbml0aW9uUmVzdWx0KGNvbnN0IFN0
cmluZyYgcmVzdWx0KQordm9pZCBTcGVlY2hJbnB1dENsaWVudE1vY2s6OnNldFJlY29nbml0aW9u
UmVzdWx0KGNvbnN0IFN0cmluZyYgcmVzdWx0LCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlKQogewot
ICAgIG1fcmVjb2duaXRpb25SZXN1bHQgPSByZXN1bHQ7CisgICAgaWYgKGxhbmd1YWdlLmlzRW1w
dHkoKSkKKyAgICAgICAgbV9yZWNvZ25pdGlvblJlc3VsdC5zZXQoZW1wdHlMYW5ndWFnZSwgcmVz
dWx0KTsKKyAgICBlbHNlCisgICAgICAgIG1fcmVjb2duaXRpb25SZXN1bHQuc2V0KGxhbmd1YWdl
LCByZXN1bHQpOwogfQogCiB2b2lkIFNwZWVjaElucHV0Q2xpZW50TW9jazo6dGltZXJGaXJlZChX
ZWJDb3JlOjpUaW1lcjxTcGVlY2hJbnB1dENsaWVudE1vY2s+KikKQEAgLTkyLDcgKzEwMSwxNyBA
QCB2b2lkIFNwZWVjaElucHV0Q2xpZW50TW9jazo6dGltZXJGaXJlZChXZWJDb3JlOjpUaW1lcjxT
cGVlY2hJbnB1dENsaWVudE1vY2s+KikKICAgICAgICAgbV9saXN0ZW5lci0+ZGlkQ29tcGxldGVS
ZWNvcmRpbmcobV9yZXF1ZXN0SWQpOwogICAgICAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdCgwKTsK
ICAgICB9IGVsc2UgewotICAgICAgICBtX2xpc3RlbmVyLT5zZXRSZWNvZ25pdGlvblJlc3VsdCht
X3JlcXVlc3RJZCwgbV9yZWNvZ25pdGlvblJlc3VsdCk7CisgICAgICAgIFN0cmluZyBsYW5ndWFn
ZSA9IG1fbGFuZ3VhZ2UuaXNFbXB0eSgpID8gU3RyaW5nKGVtcHR5TGFuZ3VhZ2UpIDogbV9sYW5n
dWFnZTsKKyAgICAgICAgaWYgKCFtX3JlY29nbml0aW9uUmVzdWx0LmNvbnRhaW5zKGxhbmd1YWdl
KSkgeworICAgICAgICAgICAgLy8gQ2FuJ3QgYXZvaWQgc2V0dGluZyBhIHJlc3VsdCBvbiBlbXB0
eSBvciBpbnZhbGlkIGxhbmd1YWdlIHN0cmluZ3MuCisgICAgICAgICAgICAvLyBUaGlzIHdvdWxk
IGF2b2lkIGdlbmVyYXRpbmcgdGhlIGV2ZW50cyB1c2VkIHRvIGNoZWNrIHRoZSByZXN1bHRzIGFu
ZCB0aGUgdGVzdCB3b3VsZCB0aW1lb3V0LgorICAgICAgICAgICAgU3RyaW5nIGVycm9yKCJlcnJv
cjogbm8gcmVzdWx0IGZvdW5kIGZvciBsYW5ndWFnZSAnIik7CisgICAgICAgICAgICBlcnJvci5h
cHBlbmQobV9sYW5ndWFnZSk7CisgICAgICAgICAgICBlcnJvci5hcHBlbmQoIiciKTsKKyAgICAg
ICAgICAgIG1fbGlzdGVuZXItPnNldFJlY29nbml0aW9uUmVzdWx0KG1fcmVxdWVzdElkLCBlcnJv
cik7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbV9saXN0ZW5lci0+c2V0UmVjb2duaXRp
b25SZXN1bHQobV9yZXF1ZXN0SWQsIG1fcmVjb2duaXRpb25SZXN1bHQuZ2V0KGxhbmd1YWdlKSk7
CisKICAgICAgICAgbV9saXN0ZW5lci0+ZGlkQ29tcGxldGVSZWNvZ25pdGlvbihtX3JlcXVlc3RJ
ZCk7CiAgICAgICAgIG1fcmVxdWVzdElkID0gMDsKICAgICB9CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svU3BlZWNoSW5wdXRDbGllbnRNb2NrLmggYi9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svU3BlZWNoSW5wdXRDbGllbnRNb2NrLmgKaW5kZXggY2U4M2QzYmI5Y2I4OGIwYTNhOTVi
NTQ5NTQyN2QyOTkxZjJlMGI0Zi4uM2NlOTg3YjgyM2NkMTk4MDI4NjY5Yzc3OWYzYzQ3OWM0NzNj
YjdlZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xpZW50
TW9jay5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TcGVlY2hJbnB1dENsaWVudE1vY2su
aApAQCAtMzQsNiArMzQsOCBAQAogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVk
ZSAiU3BlZWNoSW5wdXRDbGllbnQuaCIKICNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiAjaWYgRU5B
QkxFKElOUFVUX1NQRUVDSCkKIApAQCAtNDYsMTEgKzQ4LDExIEBAIGNsYXNzIFNwZWVjaElucHV0
Q2xpZW50TW9jayA6IHB1YmxpYyBTcGVlY2hJbnB1dENsaWVudCB7CiBwdWJsaWM6CiAgICAgU3Bl
ZWNoSW5wdXRDbGllbnRNb2NrKCk7CiAKLSAgICB2b2lkIHNldFJlY29nbml0aW9uUmVzdWx0KGNv
bnN0IFN0cmluZyYgcmVzdWx0KTsKKyAgICB2b2lkIHNldFJlY29nbml0aW9uUmVzdWx0KGNvbnN0
IFN0cmluZyYgcmVzdWx0LCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlKTsKIAogICAgIC8vIFNwZWVj
aElucHV0Q2xpZW50IG1ldGhvZHMuCiAgICAgdm9pZCBzZXRMaXN0ZW5lcihTcGVlY2hJbnB1dExp
c3RlbmVyKik7Ci0gICAgYm9vbCBzdGFydFJlY29nbml0aW9uKGludCwgY29uc3QgSW50UmVjdCYp
OworICAgIGJvb2wgc3RhcnRSZWNvZ25pdGlvbihpbnQsIGNvbnN0IFN0cmluZyYsIGNvbnN0IElu
dFJlY3QmKTsKICAgICB2b2lkIHN0b3BSZWNvcmRpbmcoaW50KTsKICAgICB2b2lkIGNhbmNlbFJl
Y29nbml0aW9uKGludCk7CiAKQEAgLTYxLDcgKzYzLDkgQEAgcHJpdmF0ZToKICAgICBUaW1lcjxT
cGVlY2hJbnB1dENsaWVudE1vY2s+IG1fdGltZXI7CiAgICAgU3BlZWNoSW5wdXRMaXN0ZW5lciog
bV9saXN0ZW5lcjsKICAgICBpbnQgbV9yZXF1ZXN0SWQ7Ci0gICAgU3RyaW5nIG1fcmVjb2duaXRp
b25SZXN1bHQ7CisKKyAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBtX3JlY29nbml0aW9uUmVz
dWx0OworICAgIFN0cmluZyBtX2xhbmd1YWdlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRz
LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKaW5k
ZXggNWQ1YjhiMzBiNDExMDUyMGQxYTRkZTdiOGE3OWM0ODVkNzkzNjYwOC4uNjVkMGE2NDYwOWQy
MDM0YjEwOTk1MDNkMTY5MTUxYWJlNjZkYWEzZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJp
bmcvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9U
ZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCkBAIC0yMSw5ICsyMSw5IEBACiAgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCiAgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogICovCi0gCisKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJUZXh0Q29udHJv
bElubmVyRWxlbWVudHMuaCIKIApAQCAtMTA3LDE4ICsxMDcsMTggQEAgdm9pZCBUZXh0Q29udHJv
bElubmVyRWxlbWVudDo6YXR0YWNoSW5uZXJFbGVtZW50KE5vZGUqIHBhcmVudCwgUGFzc1JlZlB0
cjxSZW5kZXIKICAgICAgICAgc2V0UmVuZGVyZXIocmVuZGVyZXIpOwogICAgICAgICByZW5kZXJl
ci0+c2V0U3R5bGUoc3R5bGUpOwogICAgIH0KLSAgICAKKwogICAgIC8vIFNldCB0aGVzZSBleHBs
aWNpdGx5IHNpbmNlIHRoaXMgbm9ybWFsbHkgaGFwcGVucyBkdXJpbmcgYW4gYXR0YWNoKCkKICAg
ICBzZXRBdHRhY2hlZCgpOwogICAgIHNldEluRG9jdW1lbnQoKTsKLSAgICAKKwogICAgIC8vIEZv
ciBlbGVtZW50cyB3aXRob3V0IGEgc2hhZG93IHBhcmVudCwgYWRkIHRoZSBub2RlIHRvIHRoZSBE
T00gbm9ybWFsbHkuCiAgICAgaWYgKCFtX3NoYWRvd1BhcmVudCkgewogICAgICAgICAvLyBGSVhN
RTogVGhpcyBjb2RlIHNlZW1zIHZlcnkgd3JvbmcuICBXaHkgYXJlIHdlIG1hZ2ljYWxseSBhZGRp
bmcgfHRoaXN8IHRvIHRoZSBET00gaGVyZT8KICAgICAgICAgLy8gICAgICAgIFdlIHNob3VsZG4n
dCBiZSBjYWxsaW5nIHBhcnNlciBBUEkgbWV0aG9kcyBvdXRzaWRlIG9mIHRoZSBwYXJzZXIhCiAg
ICAgICAgIHBhcmVudC0+ZGVwcmVjYXRlZFBhcnNlckFkZENoaWxkKHRoaXMpOwogICAgIH0KLSAK
KwogICAgIC8vIEFkZCB0aGUgcmVuZGVyZXIgdG8gdGhlIHJlbmRlciB0cmVlCiAgICAgaWYgKHJl
bmRlcmVyKQogICAgICAgICBwYXJlbnQtPnJlbmRlcmVyKCktPmFkZENoaWxkKHJlbmRlcmVyKTsK
QEAgLTIwOCw3ICsyMDgsNyBAQCB2b2lkIFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uRWxlbWVudDo6
ZGV0YWNoKCkKIHsKICAgICBpZiAobV9jYXB0dXJpbmcpIHsKICAgICAgICAgaWYgKEZyYW1lKiBm
cmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCkpCi0gICAgICAgICAgICBmcmFtZS0+ZXZlbnRIYW5k
bGVyKCktPnNldENhcHR1cmluZ01vdXNlRXZlbnRzTm9kZSgwKTsgICAgICAKKyAgICAgICAgICAg
IGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+c2V0Q2FwdHVyaW5nTW91c2VFdmVudHNOb2RlKDApOwog
ICAgIH0KICAgICBUZXh0Q29udHJvbElubmVyRWxlbWVudDo6ZGV0YWNoKCk7CiB9CkBAIC0yODEs
OSArMjgxLDkgQEAgdm9pZCBTcGluQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihF
dmVudCogZXZlbnQpCiAgICAgaWYgKCFib3gpIHsKICAgICAgICAgaWYgKCFldmVudC0+ZGVmYXVs
dEhhbmRsZWQoKSkKICAgICAgICAgICAgIEhUTUxEaXZFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5k
bGVyKGV2ZW50KTsKLSAgICAgICAgcmV0dXJuOyAgICAgICAgCisgICAgICAgIHJldHVybjsKICAg
ICB9Ci0gICAgCisKICAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dCA9IHN0YXRpY19jYXN0PEhU
TUxJbnB1dEVsZW1lbnQqPihzaGFkb3dBbmNlc3Rvck5vZGUoKSk7CiAgICAgaWYgKGlucHV0LT5k
aXNhYmxlZCgpIHx8IGlucHV0LT5pc1JlYWRPbmx5Rm9ybUNvbnRyb2woKSkgewogICAgICAgICBp
ZiAoIWV2ZW50LT5kZWZhdWx0SGFuZGxlZCgpKQpAQCAtNDMxLDcgKzQzMSw3IEBAIHZvaWQgSW5w
dXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2
ZW50KQogICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50KSB7
CiAgICAgICAgIHN3aXRjaCAobV9zdGF0ZSkgewogICAgICAgICBjYXNlIElkbGU6Ci0gICAgICAg
ICAgICBpZiAoc3BlZWNoSW5wdXQoKS0+c3RhcnRSZWNvZ25pdGlvbihtX2xpc3RlbmVySWQsIGlu
cHV0LT5yZW5kZXJlcigpLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpKSkKKyAgICAgICAgICAg
IGlmIChzcGVlY2hJbnB1dCgpLT5zdGFydFJlY29nbml0aW9uKG1fbGlzdGVuZXJJZCwgaW5wdXQt
PmNvbXB1dGVJbmhlcml0ZWRMYW5ndWFnZSgpLCBpbnB1dC0+cmVuZGVyZXIoKS0+YWJzb2x1dGVC
b3VuZGluZ0JveFJlY3QoKSkpCiAgICAgICAgICAgICAgICAgc2V0U3RhdGUoUmVjb3JkaW5nKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFJlY29yZGluZzoKQEAgLTQ4Nyw3ICs0
ODcsNyBAQCB2b2lkIElucHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50OjpkZXRhY2goKQogewog
ICAgIGlmIChtX2NhcHR1cmluZykgewogICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gZG9jdW1l
bnQoKS0+ZnJhbWUoKSkKLSAgICAgICAgICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+c2V0Q2Fw
dHVyaW5nTW91c2VFdmVudHNOb2RlKDApOyAgICAgIAorICAgICAgICAgICAgZnJhbWUtPmV2ZW50
SGFuZGxlcigpLT5zZXRDYXB0dXJpbmdNb3VzZUV2ZW50c05vZGUoMCk7CiAgICAgfQogCiAgICAg
aWYgKG1fc3RhdGUgIT0gSWRsZSkKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDQzZTE4ZWNiNzVmOTljMWZjZmUw
YTczMmEzZTZiMThmZjc4MGEyNTQuLmY1MDhkNTYzYzI0NDAwZmU5MDYyOWYzOWZmOTJkMDI0OWI4
YzFiMTAgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEwLTEwLTA4ICBMZWFuZHJv
IEdyYWNpw6EgR2lsICA8bGVhbmRyb2dyYWNpYUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBhdGNoIHRoZSBjdXJyZW50IHNwZWVj
aCBpbnB1dCBpbXBsZW1lbnRhdGlvbiB0byB1c2UgYW5kIHZhbGlkYXRlIHRoZQorICAgICAgICBu
ZWFyZXN0IGxhbmd1YWdlIHRhZy4gVGhlIGxhbmd1YWdlIGlzIG5vdyBwYXNzZWQgdG8gdGhlIHN0
YXJ0UmVjb2duaXRpb24KKyAgICAgICAgbWV0aG9kcyBzbyB0aGF0IGxhbmd1YWdlLXNwZWNpZmlj
IHJlY29nbml0aW9uIGNvdWxkIGJlIHVzZWQuIEFsc28gYWRkZWQKKyAgICAgICAgYSBzZWNvbmQg
cGFyYW1ldGVyIHRvIHNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdCBmb3IgdGhlIGxhbmd1YWdlIHVz
ZWQgaW4KKyAgICAgICAgc3BlZWNoIHJlY29nbml0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDcwODkKKworICAgICAgICBUaGlzIGlzIHRoZSAy
bmQgb2YgYSA0LXNpZGVkIHBhdGNoIGluIENocm9taXVtIGFuZCBXZWJLaXQuIEZvciBtb3JlCisg
ICAgICAgIGRldGFpbHMgc2VlIGh0dHA6Ly9jb2RlcmV2aWV3LmNocm9taXVtLm9yZy8zNjE1MDA1
L3Nob3cgYW5kCisgICAgICAgIGh0dHA6Ly9jb2RlcmV2aWV3LmNocm9taXVtLm9yZy8zNTk1MDE4
L3Nob3cuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyLmg6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaElucHV0Q29udHJvbGxlcjo6c3RhcnRSZWNvZ25pdGlv
bik6CisgICAgICAgICogcHVibGljL1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2suaDoKKyAg
ICAgICAgKiBzcmMvU3BlZWNoSW5wdXRDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
U3BlZWNoSW5wdXRDbGllbnRJbXBsOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hJ
bnB1dENsaWVudEltcGw6OnN0YXJ0UmVjb2duaXRpb24pOgorICAgICAgICAqIHNyYy9TcGVlY2hJ
bnB1dENsaWVudEltcGwuaDoKKyAgICAgICAgKiBzcmMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVy
TW9ja0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJN
b2NrSW1wbDo6c2V0TW9ja1JlY29nbml0aW9uUmVzdWx0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
U3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OnN0YXJ0UmVjb2duaXRpb24pOgorICAgICAg
ICAqIHNyYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbC5oOgorICAgICAgICAqIHNy
Yy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpXZWJWaWV3
SW1wbCk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmg6CisKIDIwMTAtMTAtMDcgIFpoZW55
YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsIGNocm9t
aXVtIHRvIHI2MTkwMi4KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3Bl
ZWNoSW5wdXRDb250cm9sbGVyLmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaElu
cHV0Q29udHJvbGxlci5oCmluZGV4IDU0MDg3NDFhM2M5NGQzYmYxYzU0M2Q5NmU5ZmMxNmE2Mzkw
ZGIwMmYuLjFmZGUyYThlNzc0ZjMyZTU4Zjg4NzJmMjQ4MjIyMzA1OWM4OGMxNDcgMTAwNjQ0Ci0t
LSBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyLmgKKysr
IGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIuaApAQCAt
MzUsNiArMzUsNyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgV2ViU3RyaW5nOwog
c3RydWN0IFdlYlJlY3Q7CiAKIC8vIFByb3ZpZGVzIGFuIGVtYmVkZGVyIEFQSSBjYWxsZWQgYnkg
V2ViS2l0LgpAQCAtNDMsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgLy8gU3RhcnRzIHNwZWVjaCBy
ZWNvZ25pdGlvbi4gU3BlZWNoIHdpbGwgZ2V0IHJlY29yZGVkIHVudGlsIHRoZSBlbmRwb2ludGVy
IGRldGVjdHMgc2lsZW5jZSwKICAgICAvLyBydW5zIHRvIHRoZSBsaW1pdCBvciBzdG9wUmVjb3Jk
aW5nIGlzIGNhbGxlZC4gUHJvZ3Jlc3MgaW5kaWNhdGlvbnMgYW5kIHRoZSByZWNvZ25pemVkCiAg
ICAgLy8gdGV4dCBhcmUgcmV0dXJuZWQgdmlhIHRoZSBsaXN0ZW5lciBpbnRlcmZhY2UuCi0gICAg
dmlydHVhbCBib29sIHN0YXJ0UmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCwgY29uc3QgV2ViUmVj
dCYpCisgICAgdmlydHVhbCBib29sIHN0YXJ0UmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCwgY29u
c3QgV2ViU3RyaW5nJiBsYW5ndWFnZSwgY29uc3QgV2ViUmVjdCYgZWxlbWVudFJlY3QpCiAgICAg
ewogICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoSW5wdXRD
b250cm9sbGVyTW9jay5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hJbnB1dENv
bnRyb2xsZXJNb2NrLmgKaW5kZXggOWEyNjIzNWZmNmQ1ZGNjYmJlMjQ3MjYyYWU0NGEzYWM3Mzk3
YzNmNC4uYjRjNTBhMDVkY2Y1YTEyZjg0MWJmOWI2NzU1Y2QyODgxN2Y4YzA4YiAxMDA2NDQKLS0t
IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrLmgK
KysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2Nr
LmgKQEAgLTQ0LDYgKzQ0LDEwIEBAIHB1YmxpYzoKICAgICAgICAgV2ViU3BlZWNoSW5wdXRMaXN0
ZW5lciogbGlzdGVuZXIpOwogICAgIHZpcnR1YWwgfldlYlNwZWVjaElucHV0Q29udHJvbGxlck1v
Y2soKSB7IH0KIAorICAgIHZpcnR1YWwgdm9pZCBzZXRNb2NrUmVjb2duaXRpb25SZXN1bHQoY29u
c3QgV2ViU3RyaW5nJiByZXN1bHQsIGNvbnN0IFdlYlN0cmluZyYgbGFuZ3VhZ2UpID0gMDsKKwor
ICAgIC8vIEZJWE1FOiB0aGlzIGlzIGEgZml4IGZvciBhIHR3by1zaWRlZCBwYXRjaC4gRGVsZXRl
IGFzIHNvb24gYXMgdGhlIGNocm9taXVtIHNpZGUgaXMgcGF0Y2hlZC4KKyAgICAvLyBDaHJvbWl1
bSBwYXRjaCBub3QgdXBsb2FkZWQgeWV0LCBidXQgd2lsbCBkZXBlbmQgb24gaHR0cDovL2NvZGVy
ZXZpZXcuY2hyb21pdW0ub3JnLzM2MTUwMDUvc2hvdyBwYXRjaC4KICAgICB2aXJ0dWFsIHZvaWQg
c2V0TW9ja1JlY29nbml0aW9uUmVzdWx0KGNvbnN0IFdlYlN0cmluZyYgcmVzdWx0KSA9IDA7CiB9
OwogCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1NwZWVjaElucHV0Q2xpZW50SW1w
bC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1NwZWVjaElucHV0Q2xpZW50SW1wbC5jcHAKaW5k
ZXggOTYzZDQ0MDVhNjJkMzJlMWE4Y2VjZDU0YzA4YzViYmViM2E2MmRjYS4uYTMwZDk4NmE2NmEx
YTYwYzNhOTczOGNiYTllNGZhZmI1MzdiMjcwZiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVt
L3NyYy9TcGVlY2hJbnB1dENsaWVudEltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMv
U3BlZWNoSW5wdXRDbGllbnRJbXBsLmNwcApAQCAtMzYsMTEgKzM2LDE3IEBACiAjaW5jbHVkZSAi
V2ViU3RyaW5nLmgiCiAjaW5jbHVkZSAiV2ViVmlld0NsaWVudC5oIgogI2luY2x1ZGUgInBhZ2Uv
U3BlZWNoSW5wdXRMaXN0ZW5lci5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKICNp
ZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorUGFzc093blB0
cjxTcGVlY2hJbnB1dENsaWVudEltcGw+IFNwZWVjaElucHV0Q2xpZW50SW1wbDo6Y3JlYXRlKFdl
YlZpZXdDbGllbnQqIGNsaWVudCkKK3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IFNwZWVjaElu
cHV0Q2xpZW50SW1wbChjbGllbnQpKTsKK30KKwogU3BlZWNoSW5wdXRDbGllbnRJbXBsOjpTcGVl
Y2hJbnB1dENsaWVudEltcGwoV2ViVmlld0NsaWVudCogd2ViX3ZpZXdfY2xpZW50KQogICAgIDog
bV9jb250cm9sbGVyKHdlYl92aWV3X2NsaWVudCA/IHdlYl92aWV3X2NsaWVudC0+c3BlZWNoSW5w
dXRDb250cm9sbGVyKHRoaXMpIDogMCkKICAgICAsIG1fbGlzdGVuZXIoMCkKQEAgLTU2LDEwICs2
MiwxMCBAQCB2b2lkIFNwZWVjaElucHV0Q2xpZW50SW1wbDo6c2V0TGlzdGVuZXIoV2ViQ29yZTo6
U3BlZWNoSW5wdXRMaXN0ZW5lciogbGlzdGVuZXIpCiAgICAgbV9saXN0ZW5lciA9IGxpc3RlbmVy
OwogfQogCi1ib29sIFNwZWVjaElucHV0Q2xpZW50SW1wbDo6c3RhcnRSZWNvZ25pdGlvbihpbnQg
cmVxdWVzdElkLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBlbGVtZW50UmVjdCkKK2Jvb2wgU3Bl
ZWNoSW5wdXRDbGllbnRJbXBsOjpzdGFydFJlY29nbml0aW9uKGludCByZXF1ZXN0SWQsIGNvbnN0
IFdURjo6U3RyaW5nJiBsYW5ndWFnZSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZWxlbWVudFJl
Y3QpCiB7CiAgICAgQVNTRVJUKG1fbGlzdGVuZXIpOwotICAgIHJldHVybiBtX2NvbnRyb2xsZXIt
PnN0YXJ0UmVjb2duaXRpb24ocmVxdWVzdElkLCBlbGVtZW50UmVjdCk7CisgICAgcmV0dXJuIG1f
Y29udHJvbGxlci0+c3RhcnRSZWNvZ25pdGlvbihyZXF1ZXN0SWQsIGxhbmd1YWdlLCBlbGVtZW50
UmVjdCk7CiB9CiAKIHZvaWQgU3BlZWNoSW5wdXRDbGllbnRJbXBsOjpzdG9wUmVjb3JkaW5nKGlu
dCByZXF1ZXN0SWQpCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1NwZWVjaElucHV0
Q2xpZW50SW1wbC5oIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9TcGVlY2hJbnB1dENsaWVudEltcGwu
aAppbmRleCA4MTdiMzJiMTI0MTRiM2EwN2RmYTNhZTM1MTkwODdkZWE1YTBmNzMzLi4zOGNlYjE4
OGJjOTNjYmU2NjUzY2JmOTA0YTcwYTk3NzI1ZjIyYWYxIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hy
b21pdW0vc3JjL1NwZWVjaElucHV0Q2xpZW50SW1wbC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9z
cmMvU3BlZWNoSW5wdXRDbGllbnRJbXBsLmgKQEAgLTM1LDYgKzM1LDEyIEBACiAKICNpbmNsdWRl
ICJXZWJTcGVlY2hJbnB1dExpc3RlbmVyLmgiCiAjaW5jbHVkZSAicGFnZS9TcGVlY2hJbnB1dENs
aWVudC5oIgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0
ci5oPgorCituYW1lc3BhY2UgV1RGIHsKK2NsYXNzIFN0cmluZzsKK30KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgU3BlZWNoSW5wdXRMaXN0ZW5lcjsKQEAgLTQ5LDEyICs1NSwxMiBAQCBj
bGFzcyBTcGVlY2hJbnB1dENsaWVudEltcGwKICAgICA6IHB1YmxpYyBXZWJDb3JlOjpTcGVlY2hJ
bnB1dENsaWVudCwKICAgICAgIHB1YmxpYyBXZWJTcGVlY2hJbnB1dExpc3RlbmVyIHsKIHB1Ymxp
YzoKLSAgICBTcGVlY2hJbnB1dENsaWVudEltcGwoV2ViVmlld0NsaWVudCopOworICAgIHN0YXRp
YyBQYXNzT3duUHRyPFNwZWVjaElucHV0Q2xpZW50SW1wbD4gY3JlYXRlKFdlYlZpZXdDbGllbnQq
KTsKICAgICB2aXJ0dWFsIH5TcGVlY2hJbnB1dENsaWVudEltcGwoKTsKIAogICAgIC8vIFNwZWVj
aElucHV0Q2xpZW50IG1ldGhvZHMuCiAgICAgdm9pZCBzZXRMaXN0ZW5lcihXZWJDb3JlOjpTcGVl
Y2hJbnB1dExpc3RlbmVyKik7Ci0gICAgYm9vbCBzdGFydFJlY29nbml0aW9uKGludCwgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYpOworICAgIGJvb2wgc3RhcnRSZWNvZ25pdGlvbihpbnQsIGNvbnN0
IFdURjo6U3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOwogICAgIHZvaWQgc3RvcFJl
Y29yZGluZyhpbnQpOwogICAgIHZvaWQgY2FuY2VsUmVjb2duaXRpb24oaW50KTsKIApAQCAtNjQs
NiArNzAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRDb21wbGV0ZVJlY29nbml0aW9uKGludCk7
CiAKIHByaXZhdGU6CisgICAgU3BlZWNoSW5wdXRDbGllbnRJbXBsKFdlYlZpZXdDbGllbnQqKTsK
KwogICAgIFdlYlNwZWVjaElucHV0Q29udHJvbGxlciogbV9jb250cm9sbGVyOyAvLyBUbyBjYWxs
IGludG8gdGhlIGVtYmVkZGVyLgogICAgIFdlYkNvcmU6OlNwZWVjaElucHV0TGlzdGVuZXIqIG1f
bGlzdGVuZXI7CiB9OwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTcGVlY2hJ
bnB1dENvbnRyb2xsZXJNb2NrSW1wbC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNwZWVj
aElucHV0Q29udHJvbGxlck1vY2tJbXBsLmNwcAppbmRleCA2MGM0ZmVkODUyYjI4NGUwMjcxYWQw
MGVkOTcxMDAyYTJmNTdhNGI2Li40NWM2ZmYwODYyZjAyNGZjMTgwNTczM2MxNmE5MzMwNTczN2Fj
MzkzIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNwZWVjaElucHV0Q29udHJv
bGxlck1vY2tJbXBsLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNwZWVjaElucHV0
Q29udHJvbGxlck1vY2tJbXBsLmNwcApAQCAtNTcsNyArNTcsMTIgQEAgV2ViU3BlZWNoSW5wdXRD
b250cm9sbGVyTW9ja0ltcGw6On5XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbCgpCiAK
IHZvaWQgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OnNldE1vY2tSZWNvZ25pdGlv
blJlc3VsdChjb25zdCBXZWJTdHJpbmcmIHJlc3VsdCkKIHsKLSAgICBtX3dlYmNvcmVNb2NrLT5z
ZXRSZWNvZ25pdGlvblJlc3VsdChyZXN1bHQpOworICAgIG1fd2ViY29yZU1vY2stPnNldFJlY29n
bml0aW9uUmVzdWx0KHJlc3VsdCwgV2ViU3RyaW5nOjpmcm9tVVRGOCgiIikpOworfQorCit2b2lk
IFdlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsOjpzZXRNb2NrUmVjb2duaXRpb25SZXN1
bHQoY29uc3QgV2ViU3RyaW5nJiByZXN1bHQsIGNvbnN0IFdlYlN0cmluZyAmbGFuZ3VhZ2UpCit7
CisgICAgbV93ZWJjb3JlTW9jay0+c2V0UmVjb2duaXRpb25SZXN1bHQocmVzdWx0LCBsYW5ndWFn
ZSk7CiB9CiAKIHZvaWQgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OmRpZENvbXBs
ZXRlUmVjb3JkaW5nKGludCByZXF1ZXN0SWQpCkBAIC03NSw5ICs4MCw5IEBAIHZvaWQgV2ViU3Bl
ZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OnNldFJlY29nbml0aW9uUmVzdWx0KGludCByZXF1
ZXN0SWQsIGNvbnN0CiAgICAgbV9saXN0ZW5lci0+c2V0UmVjb2duaXRpb25SZXN1bHQocmVxdWVz
dElkLCByZXN1bHQpOwogfQogCi1ib29sIFdlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBs
OjpzdGFydFJlY29nbml0aW9uKGludCByZXF1ZXN0SWQsIGNvbnN0IFdlYlJlY3QmIGVsZW1lbnRS
ZWN0KQorYm9vbCBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6c3RhcnRSZWNvZ25p
dGlvbihpbnQgcmVxdWVzdElkLCBjb25zdCBXZWJTdHJpbmcmIGxhbmd1YWdlLCBjb25zdCBXZWJS
ZWN0JiBlbGVtZW50UmVjdCkKIHsKLSAgICByZXR1cm4gbV93ZWJjb3JlTW9jay0+c3RhcnRSZWNv
Z25pdGlvbihyZXF1ZXN0SWQsIGVsZW1lbnRSZWN0KTsKKyAgICByZXR1cm4gbV93ZWJjb3JlTW9j
ay0+c3RhcnRSZWNvZ25pdGlvbihyZXF1ZXN0SWQsIGxhbmd1YWdlLCBlbGVtZW50UmVjdCk7CiB9
CiAKIHZvaWQgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OmNhbmNlbFJlY29nbml0
aW9uKGludCByZXF1ZXN0SWQpCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNw
ZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsLmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNw
ZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsLmgKaW5kZXggZWRiZmNhM2VlNjBlOTM5NDI4OTNl
MjcyMTg5M2U0M2EwZWI4N2M1Zi4uMWIzMDUzYmYwOTI3NTNlZjc5MjkzZGRjYTEyZTg0MzUyMDZi
ZGJjMCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTcGVlY2hJbnB1dENvbnRy
b2xsZXJNb2NrSW1wbC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3BlZWNoSW5wdXRD
b250cm9sbGVyTW9ja0ltcGwuaApAQCAtMzcsNiArMzcsMTAgQEAKICNpbmNsdWRlICJXZWJTdHJp
bmcuaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKK25hbWVzcGFjZSBXVEYgeworY2xhc3Mg
U3RyaW5nOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBTcGVlY2hJbnB1dENsaWVu
dE1vY2s7CiB9CkBAIC01NywxMSArNjEsMTUgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UmVjb2du
aXRpb25SZXN1bHQoaW50IHJlcXVlc3RJZCwgY29uc3QgV1RGOjpTdHJpbmcmIHJlc3VsdCk7CiAK
ICAgICAvLyBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIgbWV0aG9kcy4KLSAgICBib29sIHN0YXJ0
UmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCwgY29uc3QgV2ViUmVjdCYgZWxlbWVudFJlY3QpOwor
ICAgIGJvb2wgc3RhcnRSZWNvZ25pdGlvbihpbnQgcmVxdWVzdElkLCBjb25zdCBXZWJTdHJpbmcm
IGxhbmd1YWdlLCBjb25zdCBXZWJSZWN0JiBlbGVtZW50UmVjdCk7CiAgICAgdm9pZCBjYW5jZWxS
ZWNvZ25pdGlvbihpbnQgcmVxdWVzdElkKTsKICAgICB2b2lkIHN0b3BSZWNvcmRpbmcoaW50IHJl
cXVlc3RJZCk7CiAKICAgICAvLyBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrIG1ldGhvZHMu
CisgICAgdm9pZCBzZXRNb2NrUmVjb2duaXRpb25SZXN1bHQoY29uc3QgV2ViU3RyaW5nJiByZXN1
bHQsIGNvbnN0IFdlYlN0cmluZyYgbGFuZ3VhZ2UpOworCisgICAgLy8gRklYTUU6IHRoaXMgaXMg
YSBmaXggZm9yIGEgdHdvLXNpZGVkIHBhdGNoLiBEZWxldGUgYXMgc29vbiBhcyB0aGUgY2hyb21p
dW0gc2lkZSBpcyBwYXRjaGVkLgorICAgIC8vIENocm9taXVtIHBhdGNoIG5vdCB1cGxvYWRlZCB5
ZXQsIGJ1dCB3aWxsIGRlcGVuZCBvbiBodHRwOi8vY29kZXJldmlldy5jaHJvbWl1bS5vcmcvMzYx
NTAwNS9zaG93IHBhdGNoLgogICAgIHZvaWQgc2V0TW9ja1JlY29nbml0aW9uUmVzdWx0KGNvbnN0
IFdlYlN0cmluZyYgcmVzdWx0KTsKIAogcHJpdmF0ZToKQEAgLTcyLDQgKzgwLDMgQEAgcHJpdmF0
ZToKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gV2ViU3BlZWNoSW5wdXRDb250
cm9sbGVyTW9ja0ltcGxfaAotCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZp
ZXdJbXBsLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IDU5
OWM2NWUwYzNhZDc4YmRkMzMzYjNkOWQwNWYwYTMzYmNhNWM2YjkuLmU2MjU5ZGUxMzMzZDYzZGFi
OWRlODA2MzFlZmY4ZmE3NTZhYzRkYmMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViVmlld0ltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3Bw
CkBAIC04OCw2ICs4OCw3IEBACiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRl
ICJTZWxlY3Rpb25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRl
ICJTcGVlY2hJbnB1dENsaWVudEltcGwuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUg
IlR5cGluZ0NvbW1hbmQuaCIKICNpbmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgpAQCAt
Mjc1LDcgKzI3Niw3IEBAIFdlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbChXZWJWaWV3Q2xpZW50KiBj
bGllbnQsIFdlYkRldlRvb2xzQWdlbnRDbGllbnQqIGRldlRvb2xzCiAgICAgLCBtX2NvbXBvc2l0
b3JDcmVhdGlvbkZhaWxlZChmYWxzZSkKICNlbmRpZgogI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gp
Ci0gICAgLCBtX3NwZWVjaElucHV0Q2xpZW50KGNsaWVudCkKKyAgICAsIG1fc3BlZWNoSW5wdXRD
bGllbnQoU3BlZWNoSW5wdXRDbGllbnRJbXBsOjpjcmVhdGUoY2xpZW50KSkKICNlbmRpZgogICAg
ICwgbV9kZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5KG5ldyBEZXZpY2VPcmllbnRhdGlvbkNs
aWVudFByb3h5KGNsaWVudCA/IGNsaWVudC0+ZGV2aWNlT3JpZW50YXRpb25DbGllbnQoKSA6IDAp
KQogewpAQCAtMjk4LDcgKzI5OSw3IEBAIFdlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbChXZWJWaWV3
Q2xpZW50KiBjbGllbnQsIFdlYkRldlRvb2xzQWdlbnRDbGllbnQqIGRldlRvb2xzCiAgICAgcGFn
ZUNsaWVudHMuZHJhZ0NsaWVudCA9ICZtX2RyYWdDbGllbnRJbXBsOwogICAgIHBhZ2VDbGllbnRz
Lmluc3BlY3RvckNsaWVudCA9ICZtX2luc3BlY3RvckNsaWVudEltcGw7CiAjaWYgRU5BQkxFKElO
UFVUX1NQRUVDSCkKLSAgICBwYWdlQ2xpZW50cy5zcGVlY2hJbnB1dENsaWVudCA9ICZtX3NwZWVj
aElucHV0Q2xpZW50OworICAgIHBhZ2VDbGllbnRzLnNwZWVjaElucHV0Q2xpZW50ID0gbV9zcGVl
Y2hJbnB1dENsaWVudC5nZXQoKTsKICNlbmRpZgogICAgIHBhZ2VDbGllbnRzLmRldmljZU9yaWVu
dGF0aW9uQ2xpZW50ID0gbV9kZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5LmdldCgpOwogCmRp
ZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmggYi9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKaW5kZXggZTUxZGY0ZDk4ZTNkOGUyYjYxMTI1NTAzOGYw
OGM2MWZlNDJjNzg3OC4uNmM2MzQ2ZDQwNzc5Zjk3MzRmNjU4M2Q2N2RmOWE3ZDlhNGEzMmUxZSAx
MDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCisrKyBiL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaApAQCAtNDksNyArNDksNiBAQAogI2luY2x1ZGUg
IkludFJlY3QuaCIKICNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIKICNpbmNsdWRl
ICJOb3RpZmljYXRpb25QcmVzZW50ZXJJbXBsLmgiCi0jaW5jbHVkZSAiU3BlZWNoSW5wdXRDbGll
bnRJbXBsLmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CiAKQEAgLTc0LDYgKzczLDcgQEAgY2xhc3MgQXV0b0ZpbGxQb3B1cE1lbnVDbGllbnQ7
CiBjbGFzcyBDb250ZXh0TWVudUNsaWVudEltcGw7CiBjbGFzcyBEZXZpY2VPcmllbnRhdGlvbkNs
aWVudFByb3h5OwogY2xhc3MgRHJhZ1Njcm9sbFRpbWVyOworY2xhc3MgU3BlZWNoSW5wdXRDbGll
bnRJbXBsOwogY2xhc3MgV2ViQWNjZXNzaWJpbGl0eU9iamVjdDsKIGNsYXNzIFdlYkRldlRvb2xz
QWdlbnRDbGllbnQ7CiBjbGFzcyBXZWJEZXZUb29sc0FnZW50UHJpdmF0ZTsKQEAgLTUzNyw3ICs1
MzcsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBjb25zdCBXZWJJbnB1dEV2ZW50KiBtX2N1cnJl
bnRJbnB1dEV2ZW50OwogCiAjaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKLSAgICBTcGVlY2hJbnB1
dENsaWVudEltcGwgbV9zcGVlY2hJbnB1dENsaWVudDsKKyAgICBPd25QdHI8U3BlZWNoSW5wdXRD
bGllbnRJbXBsPiBtX3NwZWVjaElucHV0Q2xpZW50OwogI2VuZGlmCiAgICAgLy8gSWYgd2UgYXR0
ZW1wdCB0byBmZXRjaCB0aGUgb24tc2NyZWVuIEdyYXBoaWNzQ29udGV4dDNEIGJlZm9yZQogICAg
IC8vIHRoZSBjb21wb3NpdG9yIGhhcyBiZWVuIHR1cm5lZCBvbiwgd2UgbmVlZCB0byBpbnN0YW50
aWF0ZSBpdApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nIGIvV2ViS2l0VG9vbHMv
Q2hhbmdlTG9nCmluZGV4IDBhYmMyMDg3NzYxMTk5OGQ1ZTM4YzgzYTQ3OTI4OTUwNTE1ZmZmODku
LmIyMTk3ZTU0MGZjM2Q5YmUzZGJmMjE1MjFkMmZhMmQ5ZGVhOTI3ZjQgMTAwNjQ0Ci0tLSBhL1dl
YktpdFRvb2xzL0NoYW5nZUxvZworKysgYi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxOSBAQAorMjAxMC0xMC0wOCAgTGVhbmRybyBHcmFjacOhIEdpbCAgPGxlYW5kcm9ncmFjaWFA
Z29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGRlZCBhIHNlY29uZCBwYXJhbWV0ZXIgdG8gc2V0TW9ja1NwZWVjaElucHV0UmVzdWx0
IGZvcgorICAgICAgICB0aGUgbGFuZ3VhZ2UgdXNlZCBpbiBzcGVlY2ggaW5wdXQuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzA4OQorCisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoc2V0
TW9ja1NwZWVjaElucHV0UmVzdWx0Q2FsbGJhY2spOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L0xheW91dFRlc3RDb250cm9sbGVyLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
Z3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250
cm9sbGVyOjpzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQpOgorCiAyMDEwLTEwLTA4ICBBbmRyYXMg
QmVjc2kgIDxhYmVjc2lAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBDc2FiYSBP
c3p0cm9nb27DoWMuCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlv
dXRUZXN0Q29udHJvbGxlci5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRU
ZXN0Q29udHJvbGxlci5jcHAKaW5kZXggMGE3YzExZmU1OGU3ZmUzNjZhNzBiNmNkMjI3NGIzN2Rh
NWQyNzg3Mi4uMDY3Y2QwMTQyMzQ4Y2I4NWUyMDY3OGY0YTI3NWVmOTM1MGMyZTYxMCAxMDA2NDQK
LS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3Bw
CisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNw
cApAQCAtMTA3MCwxNCArMTA3MCwxNyBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBzZXRNb2NrR2VvbG9j
YXRpb25FcnJvckNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdAogCiBzdGF0
aWMgSlNWYWx1ZVJlZiBzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHRDYWxsYmFjayhKU0NvbnRleHRS
ZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3Qs
IHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1Zh
bHVlUmVmKiBleGNlcHRpb24pCiB7Ci0gICAgaWYgKGFyZ3VtZW50Q291bnQgPCAxKQorICAgIGlm
IChhcmd1bWVudENvdW50IDwgMikKICAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVk
KGNvbnRleHQpOwogCiAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHJlc3VsdChBZG9wdCwg
SlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBhcmd1bWVudHNbMF0sIGV4Y2VwdGlvbikpOwog
ICAgIEFTU0VSVCghKmV4Y2VwdGlvbik7CiAKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4g
bGFuZ3VhZ2UoQWRvcHQsIEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgYXJndW1lbnRzWzFd
LCBleGNlcHRpb24pKTsKKyAgICBBU1NFUlQoISpleGNlcHRpb24pOworCiAgICAgTGF5b3V0VGVz
dENvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxl
cio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7Ci0gICAgY29udHJvbGxlci0+c2V0
TW9ja1NwZWVjaElucHV0UmVzdWx0KHJlc3VsdC5nZXQoKSk7CisgICAgY29udHJvbGxlci0+c2V0
TW9ja1NwZWVjaElucHV0UmVzdWx0KHJlc3VsdC5nZXQoKSwgbGFuZ3VhZ2UuZ2V0KCkpOwogCiAg
ICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogfQpkaWZmIC0tZ2l0IGEv
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaCBiL1dlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKaW5kZXggNzU1YTJi
MmI5YzY4ODViNzk2YTAzZTUyZDUwMjBkODhiNDNkZDk4Yi4uYmNjYzBhMDYwZWVmODc5ODYyNDAy
NTkxOGYzOTY2NjIyMjU4OGRlMSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCkBAIC05NCw3ICs5NCw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldE1vY2tEZXZpY2VPcmllbnRhdGlvbihib29sIGNhblByb3ZpZGVBbHBoYSwgZG91Ymxl
IGFscGhhLCBib29sIGNhblByb3ZpZGVCZXRhLCBkb3VibGUgYmV0YSwgYm9vbCBjYW5Qcm92aWRl
R2FtbWEsIGRvdWJsZSBnYW1tYSk7CiAgICAgdm9pZCBzZXRNb2NrR2VvbG9jYXRpb25FcnJvcihp
bnQgY29kZSwgSlNTdHJpbmdSZWYgbWVzc2FnZSk7CiAgICAgdm9pZCBzZXRNb2NrR2VvbG9jYXRp
b25Qb3NpdGlvbihkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1
cmFjeSk7Ci0gICAgdm9pZCBzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoSlNTdHJpbmdSZWYgcmVz
dWx0KTsKKyAgICB2b2lkIHNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdChKU1N0cmluZ1JlZiByZXN1
bHQsIEpTU3RyaW5nUmVmIGxhbmd1YWdlVGFnKTsKICAgICB2b2lkIHNldFBlcnNpc3RlbnRVc2Vy
U3R5bGVTaGVldExvY2F0aW9uKEpTU3RyaW5nUmVmIHBhdGgpOwogICAgIHZvaWQgc2V0UGx1Z2lu
c0VuYWJsZWQoYm9vbCBmbGFnKTsKICAgICB2b2lkIHNldFBvcHVwQmxvY2tpbmdFbmFibGVkKGJv
b2wgZmxhZyk7CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKaW5kZXggZDc3NzRlOTk2N2JlODY5YTRk
MzUzNjk2ZmMwNGNjM2ZkZjk4MWRkYS4uM2NjYjc0MjY0MGY0ZDJmYTE0MmE3MTg5YjM4ZWYzM2Vi
ZDQwZmM5NCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
TGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcApAQCAtMTUyNSwxMCArMTUyNSwxMCBA
QCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjphYm9ydE1vZGFsKGNvbnN0IENwcEFyZ3VtZW50
TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYQogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0
TW9ja1NwZWVjaElucHV0UmVzdWx0KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBD
cHBWYXJpYW50KiByZXN1bHQpCiB7CiAgICAgcmVzdWx0LT5zZXROdWxsKCk7Ci0gICAgaWYgKGFy
Z3VtZW50cy5zaXplKCkgPCAxIHx8ICFhcmd1bWVudHNbMF0uaXNTdHJpbmcoKSkKKyAgICBpZiAo
YXJndW1lbnRzLnNpemUoKSA8IDIgfHwgIWFyZ3VtZW50c1swXS5pc1N0cmluZygpIHx8ICFhcmd1
bWVudHNbMV0uaXNTdHJpbmcoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9zcGVlY2hJbnB1
dENvbnRyb2xsZXJNb2NrLT5zZXRNb2NrUmVjb2duaXRpb25SZXN1bHQoY3BwVmFyaWFudFRvV2Vi
U3RyaW5nKGFyZ3VtZW50c1swXSkpOworICAgIG1fc3BlZWNoSW5wdXRDb250cm9sbGVyTW9jay0+
c2V0TW9ja1JlY29nbml0aW9uUmVzdWx0KGNwcFZhcmlhbnRUb1dlYlN0cmluZyhhcmd1bWVudHNb
MF0pLCBjcHBWYXJpYW50VG9XZWJTdHJpbmcoYXJndW1lbnRzWzFdKSk7CiB9CiAKIFdlYktpdDo6
V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyKiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3BlZWNoSW5w
dXRDb250cm9sbGVyKFdlYktpdDo6V2ViU3BlZWNoSW5wdXRMaXN0ZW5lciogbGlzdGVuZXIpCmRp
ZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRy
b2xsZXJHdGsuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RD
b250cm9sbGVyR3RrLmNwcAppbmRleCBkODMxMDc2M2RlNjY0ZjM5NTI0MDQ0ZTdmODVmNzc1NWJk
NDhmMWMwLi44NjdmMzI3ZDZmNmUyNmRlMTIzYTBjZTlmMzM3Yjg4ZGM1Y2QxZTZiIDEwMDY0NAot
LS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJH
dGsuY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29u
dHJvbGxlckd0ay5jcHAKQEAgLTQ4OCw3ICs0ODgsNyBAQCB2b2lkIExheW91dFRlc3RDb250cm9s
bGVyOjpzZXRHZW9sb2NhdGlvblBlcm1pc3Npb24oYm9vbCBhbGxvdykKICAgICBzZXRHZW9sb2Nh
dGlvblBlcm1pc3Npb25Db21tb24oYWxsb3cpOwogfQogCi12b2lkIExheW91dFRlc3RDb250cm9s
bGVyOjpzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoSlNTdHJpbmdSZWYgcmVzdWx0KQordm9pZCBM
YXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KEpTU3RyaW5nUmVm
IHJlc3VsdCwgSlNTdHJpbmdSZWYgbGFuZ3VhZ2UpCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVu
dCBmb3Igc3BlZWNoIGlucHV0IGxheW91dCB0ZXN0cy4KICAgICAvLyBTZWUgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NDg1Lgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70602</attachid>
            <date>2010-10-13 05:35:27 -0700</date>
            <delta_ts>2010-10-13 06:54:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47089-20101013133525.patch</filename>
            <type>text/plain</type>
            <size>36535</size>
            <attacher name="Leandro Graciá Gil">leandrogracia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyN2IzZmFlZWRiYTY5ZTZlNDVlNzNjMjAxMDgwZDUwMDkxYzEzMDBmLi44OTVmMTZl
MDc1YzlkYTI0MDEyYWE5ZmM2N2MzZDQxZWNiNjliMzA3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAK
KzIwMTAtMTAtMTMgIExlYW5kcm8gR3JhY2nDoSBHaWwgIDxsZWFuZHJvZ3JhY2lhQGdvb2dsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
ZWQgYSBsYXlvdXQgdGVzdCBmb3IgdGhlIGxhbmd1YWdlIHRhZyBpbiBzcGVlY2ggaW5wdXQuIFVw
ZGF0ZWQKKyAgICAgICAgdGhlIHNwZWVjaCBidXR0b24gdGVzdHMgdG8gaW5jbHVkZSB0aGUgbmV3
IGxhbmd1YWdlIHBhcmFtZXRlciBpbiB0aGUKKyAgICAgICAgbW9jayByZXN1bHQuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzA4OQorCisgICAgICAg
ICogZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1sYW5ndWFnZS10YWctZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L3NwZWVjaC9pbnB1dC10ZXh0LWxhbmd1YWdlLXRhZy5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L3NwZWVjaC9pbnB1dC10ZXh0LXNwZWVjaGJ1dHRvbi5odG1s
OiBBZGRlZCBhbiBlbXB0eSBsYW5ndWFnZQorICAgICAgICAgIHBhcmFtZXRlci4KKyAgICAgICAg
KiBmYXN0L3NwZWVjaC9zcGVlY2gtYnV0dG9uLWlnbm9yZS1nZW5lcmF0ZWQtZXZlbnRzLmh0bWw6
IEFkZGVkIGFuCisgICAgICAgICAgZW1wdHkgbGFuZ3VhZ2UgcGFyYW1ldGVyLgorICAgICAgICAq
IHBsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dDogbGFuZ3VhZ2UgdGFnIHRl
c3QgaXMgZXhwZWN0ZWQKKyAgICAgICAgICB0byBmYWlsIHVudGlsIHRoZSBjaHJvbWl1bS1zaWRl
IHBhdGNoIGhhcyBiZWVuIGFwcGxpZWQuCisKIDIwMTAtMTAtMTMgIEFsZXhhbmRlciBQYXZsb3Yg
IDxhcGF2bG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIFVucmV2aWV3ZWQs
IGJ1aWxkIGZpeC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL2lucHV0LXRl
eHQtbGFuZ3VhZ2UtdGFnLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL2lu
cHV0LXRleHQtbGFuZ3VhZ2UtdGFnLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MWYzMGQ2OTZm
NWQyNTBmMTRhZjU2Yjk5YjRlNzBjODc5YzBlNTAyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1sYW5ndWFnZS10YWctZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMTMgQEAKK1Rlc3RzIGZvciBsYW5ndWFnZSB0YWcgaW5oZXJpdGFuY2UgYW5kIHZh
bGlkYXRpb24gaW4gc3BlZWNoIGJ1dHRvbnMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzcGVlY2hJbnB1dE5vbmUiKS52YWx1
ZSBpcyAiZXJyb3I6IG5vIHJlc3VsdCBmb3VuZCBmb3IgbGFuZ3VhZ2UgJyciCitQQVNTIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJzcGVlY2hJbnB1dEVsZW1lbnQiKS52YWx1ZSBpcyAiUGljdHVy
ZXMgb2YgdGhlIG1vb24iCitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzcGVlY2hJbnB1
dEluaGVyaXRlZCIpLnZhbHVlIGlzICLmnIjjga7lhpnnnJ8iCitQQVNTIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJzcGVlY2hJbnB1dEludmFsaWQiKS52YWx1ZSBpcyAiZXJyb3I6IG5vIHJlc3Vs
dCBmb3VuZCBmb3IgbGFuZ3VhZ2UgJyciCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKyAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNo
L2lucHV0LXRleHQtbGFuZ3VhZ2UtdGFnLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9p
bnB1dC10ZXh0LWxhbmd1YWdlLXRhZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjliZmM4MjI2MmVlMzBhMmM1
ZmE1ZTI1ODE2MWVhOGExZTE4ZTY1YWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L3NwZWVjaC9pbnB1dC10ZXh0LWxhbmd1YWdlLXRhZy5odG1sCkBAIC0wLDAgKzEsNjIgQEAK
KzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgor
PG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4v
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3Jp
cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KK2Rlc2NyaXB0aW9uKCdUZXN0cyBmb3IgbGFuZ3Vh
Z2UgdGFnIGluaGVyaXRhbmNlIGFuZCB2YWxpZGF0aW9uIGluIHNwZWVjaCBidXR0b25zLicpOwor
CisvLyBOb3RlOiB0ZXN0IGNhc2VzIGFyZSBzZXF1ZW50aWFsIHRvIGVuc3VyZSB0aGF0IG5vIG5l
dyByZWNvZ25pdGlvbiBzdGFydHMgd2hlbiBhbm90aGVyIHJlY29nbml0aW9uIHJlY29yZGluZyBp
cyBhY3RpdmUuCitmdW5jdGlvbiBvbkNoYW5nZU5vbmUoKSB7CisgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCdkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3BlZWNoSW5wdXROb25lIikudmFsdWUn
LCAnZXJyb3I6IG5vIHJlc3VsdCBmb3VuZCBmb3IgbGFuZ3VhZ2UgXCdcJycpOworICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7IHNwZWVjaEJ1dHRvbkNsaWNrKCdzcGVlY2hJbnB1dEVsZW1lbnQn
KTsgfSwgNTApOworfQorCitmdW5jdGlvbiBvbkNoYW5nZUVsZW1lbnQoKSB7CisgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCdkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3BlZWNoSW5wdXRFbGVt
ZW50IikudmFsdWUnLCAnUGljdHVyZXMgb2YgdGhlIG1vb24nKTsKKyAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgeyBzcGVlY2hCdXR0b25DbGljaygnc3BlZWNoSW5wdXRJbmhlcml0ZWQnKTsgfSwg
NTApOworfQorCitmdW5jdGlvbiBvbkNoYW5nZUluaGVyaXRlZCgpIHsKKyAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoJ2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzcGVlY2hJbnB1dEluaGVyaXRl
ZCIpLnZhbHVlJywgJ+aciOOBruWGmeecnycpOworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
IHNwZWVjaEJ1dHRvbkNsaWNrKCdzcGVlY2hJbnB1dEludmFsaWQnKTsgfSwgNTApOworfQorCitm
dW5jdGlvbiBvbkNoYW5nZUludmFsaWQoKSB7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3BlZWNoSW5wdXRJbnZhbGlkIikudmFsdWUnLCAnZXJy
b3I6IG5vIHJlc3VsdCBmb3VuZCBmb3IgbGFuZ3VhZ2UgXCdcJycpOworICAgIGZpbmlzaEpTVGVz
dCgpOworfQorCitmdW5jdGlvbiBzcGVlY2hCdXR0b25DbGljayhlbGVtZW50SWQpIHsKKyAgICB2
YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJZCk7CisgICAgdmFy
IHggPSBlbGVtZW50Lm9mZnNldExlZnQgKyBlbGVtZW50Lm9mZnNldFdpZHRoIC0gNDsKKyAgICB2
YXIgeSA9IGVsZW1lbnQub2Zmc2V0VG9wICsgZWxlbWVudC5vZmZzZXRIZWlnaHQgLyAyOworICAg
IGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93
bigpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKK30KKworZnVuY3Rpb24gcnVuKCkgewor
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIgJiYgd2luZG93LmV2ZW50U2VuZGVy
KSB7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldE1vY2tTcGVlY2hJbnB1dFJlc3Vs
dCgnUGljdHVyZXMgb2YgdGhlIG1vb24nLCAnZW4tR0InKTsKKyAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuc2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KCfmnIjjga7lhpnnnJ8nLCAnamEnKTsK
KyAgICAgICAgc3BlZWNoQnV0dG9uQ2xpY2soJ3NwZWVjaElucHV0Tm9uZScpOworICAgIH0KK30K
Kword2luZG93Lm9ubG9hZCA9IHJ1bjsKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK3dp
bmRvdy5zdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8aW5wdXQgaWQ9InNw
ZWVjaElucHV0Tm9uZSIgeC13ZWJraXQtc3BlZWNoIG9ud2Via2l0c3BlZWNoY2hhbmdlPSJvbkNo
YW5nZU5vbmUoKSI+Cis8aW5wdXQgaWQ9InNwZWVjaElucHV0RWxlbWVudCIgeC13ZWJraXQtc3Bl
ZWNoIG9ud2Via2l0c3BlZWNoY2hhbmdlPSJvbkNoYW5nZUVsZW1lbnQoKSIgbGFuZz0iZW4tR0Ii
PgorPGRpdiBsYW5nPSJqYSI+IDxpbnB1dCBpZD0ic3BlZWNoSW5wdXRJbmhlcml0ZWQiIHgtd2Vi
a2l0LXNwZWVjaCBvbndlYmtpdHNwZWVjaGNoYW5nZT0ib25DaGFuZ2VJbmhlcml0ZWQoKSI+IDwv
ZGl2PgorPGlucHV0IGlkPSJzcGVlY2hJbnB1dEludmFsaWQiIHgtd2Via2l0LXNwZWVjaCBvbndl
YmtpdHNwZWVjaGNoYW5nZT0ib25DaGFuZ2VJbnZhbGlkKCkiIGxhbmc9IjEzMzckw74zzrtrIj4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL2lu
cHV0LXRleHQtc3BlZWNoYnV0dG9uLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9pbnB1
dC10ZXh0LXNwZWVjaGJ1dHRvbi5odG1sCmluZGV4IDZmNWJjNGIxMjFmYjRmOWQ5ZGRhNmMzMzFm
OGIyNmRjMWNkNDM5OTQuLmNlZjc3MDU2YjE3ZDFjZDQ1MWI0OTBiN2MxZjI0NmJhNmM4OTUwZGIg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL2lucHV0LXRleHQtc3BlZWNoYnV0
dG9uLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1zcGVlY2hi
dXR0b24uaHRtbApAQCAtMzIsNyArMzIsNyBAQCBmdW5jdGlvbiBvbldlYmtpdFNwZWVjaENoYW5n
ZSgpIHsKIAogZnVuY3Rpb24gcnVuKCkgewogICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIgJiYgd2luZG93LmV2ZW50U2VuZGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdCgnUGljdHVyZXMgb2YgdGhlIG1vb24nKTsKKyAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KCdQaWN0
dXJlcyBvZiB0aGUgbW9vbicsICcnKTsKIAogICAgICAgICAvLyBDbGlja2luZyB0aGUgc3BlZWNo
IGJ1dHRvbiBzaG91bGQgZmlsbCBpbiBtb2NrIHNwZWVjaC1yZWNvZ25pemVkIHRleHQuCiAgICAg
ICAgIHZhciBpbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzcGVlY2hJbnB1dCcpOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvc3BlZWNoLWJ1dHRvbi1pZ25vcmUt
Z2VuZXJhdGVkLWV2ZW50cy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvc3BlZWNoLWJ1
dHRvbi1pZ25vcmUtZ2VuZXJhdGVkLWV2ZW50cy5odG1sCmluZGV4IGI5YjhlYzM2NjA1NTc5ZjJi
MTI2ZDZmMWRhMzU2MGM2NzJhZDJiNzEuLmM2ODQ4NjM3NzA1MzM5OWIyOWQwNGZjMjk5MDdlNTVl
OGFiZjA2MDggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL3NwZWVjaC1idXR0
b24taWdub3JlLWdlbmVyYXRlZC1ldmVudHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Nw
ZWVjaC9zcGVlY2gtYnV0dG9uLWlnbm9yZS1nZW5lcmF0ZWQtZXZlbnRzLmh0bWwKQEAgLTQ5LDcg
KzQ5LDcgQEAgZnVuY3Rpb24gc2V0dXBEaXNwYXRjaEV2ZW50VGVzdCgpIHsKIGZ1bmN0aW9uIHJ1
bigpIHsKICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyICYmIHdpbmRvdy5ldmVu
dFNlbmRlcikgewogICAgICAgICAvLyBSdW5uaW5nIGluIERSVCwgdGVzdCB0aGUgZXZlbnRTZW5k
ZXIgY2FzZS4KLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja1NwZWVjaElucHV0
UmVzdWx0KCdQaWN0dXJlcyBvZiB0aGUgbW9vbicpOworICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5zZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoJ1BpY3R1cmVzIG9mIHRoZSBtb29uJywgJycp
OwogICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3BlZWNoSW5wdXQnKS5vbndlYmtp
dHNwZWVjaGNoYW5nZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCdkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3BlZWNoSW5wdXQiKS52YWx1ZScsICdQ
aWN0dXJlcyBvZiB0aGUgbW9vbicpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKaW5kZXggNDk1ZWY4MGFjMzhhMjliMzlkYzA4
MWQ5ZjJiM2UzZDc0MmJjNTExNi4uMDFmZWQwOWMyYzc3MmI5OTlhMjZjZGUxNzNhZDMyYjQzZGZk
Mjg2YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBl
Y3RhdGlvbnMudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhw
ZWN0YXRpb25zLnR4dApAQCAtMzIyNSwzICszMjI1LDYgQEAgQlVHNTg5NDIgOiBmYXN0L2RvbS9w
cm90b3R5cGUtaW5oZXJpdGFuY2UuaHRtbCA9IFRFWFQKIAogLy8gU3RhcnRlZCBmYWlsaW5nIGF0
IFdlYmtpdCByNjk2MjguCiBCVUc0NzU3OCA6IHByaW50aW5nL3NpbXVsdGFuZW91cy1wb3NpdGlv
bi1mbG9hdC1jaGFuZ2UuaHRtbCA9IElNQUdFK1RFWFQKKworLy8gVGVtcG9yYXJpbHkgZGlzYWJs
ZWQgZm9yIGEgNC1zaWRlZCBwYXRjaAorQlVHNDcwODkgOiBmYXN0L3NwZWVjaC9pbnB1dC10ZXh0
LWxhbmd1YWdlLXRhZy5odG1sID0gRkFJTApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxMzBiZGU0MTk1ZjI5NDlmZWJlOGM3OTRjMzYyYzI3
YmFjYWRmM2VkLi4xMTk2NTc5MDU0OGE1NmJmYWJjMjAyNzdlMTI2MjVmZTljZjhhN2U5IDEwMDY0
NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDQwIEBACisyMDEwLTEwLTEzICBMZWFuZHJvIEdyYWNpw6EgR2lsICA8bGVhbmRyb2dyYWNp
YUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFBhdGNoIHRoZSBjdXJyZW50IHNwZWVjaCBpbnB1dCBpbXBsZW1lbnRhdGlvbiB0byB1
c2UgYW5kIHZhbGlkYXRlIHRoZQorICAgICAgICBuZWFyZXN0IGxhbmd1YWdlIHRhZy4gVGhlIGxh
bmd1YWdlIGlzIG5vdyBwYXNzZWQgdG8gdGhlIHN0YXJ0UmVjb2duaXRpb24KKyAgICAgICAgbWV0
aG9kcyBzbyB0aGF0IGxhbmd1YWdlLXNwZWNpZmljIHJlY29nbml0aW9uIGNvdWxkIGJlIHVzZWQu
IEFsc28gYWRkZWQKKyAgICAgICAgYSBzZWNvbmQgcGFyYW1ldGVyIHRvIHNldE1vY2tTcGVlY2hJ
bnB1dFJlc3VsdCBmb3IgdGhlIGxhbmd1YWdlIHVzZWQgaW4KKyAgICAgICAgc3BlZWNoIHJlY29n
bml0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDcwODkKKworICAgICAgICBUaGlzIGlzIHRoZSAybmQgb2YgYSA0LXNpZGVkIHBhdGNoIGluIENo
cm9taXVtIGFuZCBXZWJLaXQuIEZvciBtb3JlCisgICAgICAgIGRldGFpbHMgc2VlIGh0dHA6Ly9j
b2RlcmV2aWV3LmNocm9taXVtLm9yZy8zNjE1MDA1L3Nob3cgYW5kCisgICAgICAgIGh0dHA6Ly9j
b2RlcmV2aWV3LmNocm9taXVtLm9yZy8zNTk1MDE4L3Nob3cuCisKKyAgICAgICAgVGVzdDogZmFz
dC9zcGVlY2gvaW5wdXQtdGV4dC1sYW5ndWFnZS10YWcuaHRtbAorCisgICAgICAgICogZG9tL0Vs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Y29tcHV0ZUluaGVyaXRlZExh
bmd1YWdlKTogaW5jbHVkZXMgYSBicmllZiBjaGFyYWN0ZXIKKyAgICAgICAgICB2YWxpZGF0aW9u
IGZvciB0aGUgQkNQIDQ3IGxhbmd1YWdlIHRhZy4KKyAgICAgICAgKiBwYWdlL1NwZWVjaElucHV0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaElucHV0OjpzdGFydFJlY29nbml0aW9uKToK
KyAgICAgICAgKiBwYWdlL1NwZWVjaElucHV0Lmg6CisgICAgICAgICogcGFnZS9TcGVlY2hJbnB1
dENsaWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svU3BlZWNoSW5wdXRDbGllbnRNb2Nr
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaElucHV0Q2xpZW50TW9jazo6c3RhcnRSZWNv
Z25pdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hJbnB1dENsaWVudE1vY2s6OnNldFJl
Y29nbml0aW9uUmVzdWx0KTogcmVzdWx0cyBhcmUgbm93CisgICAgICAgICAgc3RvcmVkIGJ5IGxh
bmd1YWdlIHVzaW5nIGEgaGFzaCBtYXAuCisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hJbnB1dENs
aWVudE1vY2s6OnRpbWVyRmlyZWQpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svU3BlZWNoSW5w
dXRDbGllbnRNb2NrLmg6CisgICAgICAgICogcmVuZGVyaW5nL1RleHRDb250cm9sSW5uZXJFbGVt
ZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29udHJvbElubmVyRWxlbWVudDo6YXR0
YWNoSW5uZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaEZpZWxkQ2FuY2VsQnV0
dG9uRWxlbWVudDo6ZGV0YWNoKToKKyAgICAgICAgKFdlYkNvcmU6OlNwaW5CdXR0b25FbGVtZW50
OjpkZWZhdWx0RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0RmllbGRTcGVl
Y2hCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OklucHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50OjpkZXRhY2gpOgorCiAyMDEwLTEwLTEzICBK
ZW5uIEJyYWl0aHdhaXRlICA8amVubmJAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IERtaXRyeSBUaXRvdi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIv
V2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggNjdlMGZkMGFjNWIzNWQxMmRkNTBhYTQ1NDlm
YjNjOGY5ZDVhMmM4MS4uYTUzODJiYWMyZTQ5N2QwODZlOGFjZjYxNTRlYWIxMTRmYzg0MmQ4ZSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9kb20vRWxl
bWVudC5jcHAKQEAgLTU2LDYgKzU2LDcgQEAKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1
ZGUgIlRleHRJdGVyYXRvci5oIgogI2luY2x1ZGUgIlhNTE5hbWVzLmgiCisjaW5jbHVkZSA8d3Rm
L0FTQ0lJQ1R5cGUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKICNpZiBFTkFC
TEUoU1ZHKQpAQCAtMTQ3Myw2ICsxNDc0LDE1IEBAIEF0b21pY1N0cmluZyBFbGVtZW50Ojpjb21w
dXRlSW5oZXJpdGVkTGFuZ3VhZ2UoKSBjb25zdAogICAgICAgICBuID0gbi0+cGFyZW50KCk7CiAg
ICAgfQogCisgICAgaWYgKCF2YWx1ZS5pc051bGwoKSAmJiAhdmFsdWUuaXNFbXB0eSgpKSB7Cisg
ICAgICAgIC8vIE9ubHkgQS1aYS16MC05IGFuZCAnLScgYXJlIGFsbG93ZWQgaW4gdGhlIGxhbmd1
YWdlIHRhZyAoc2VlIEJDUCA0NykKKyAgICAgICAgQ1N0cmluZyBsYW5ndWFnZVRhZyA9IHZhbHVl
LnN0cmluZygpLmFzY2lpKCk7CisgICAgICAgIGZvciAoY29uc3QgY2hhciAqcCA9IGxhbmd1YWdl
VGFnLmRhdGEoKTsgKnAgIT0gJ1wwJzsgKytwKSB7CisgICAgICAgICAgICBpZiAoIWlzQVNDSUlB
bHBoYW51bWVyaWMoKnApICYmICpwICE9ICctJykKKyAgICAgICAgICAgICAgICByZXR1cm4gQXRv
bWljU3RyaW5nKCk7CisgICAgICAgIH0KKyAgICB9CisKICAgICByZXR1cm4gdmFsdWU7CiB9CiAK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dC5jcHAgYi9XZWJDb3JlL3BhZ2Uv
U3BlZWNoSW5wdXQuY3BwCmluZGV4IDIzNDc5MWJjNGIxM2Y0M2RmOWQxNzM5ZDVkMjA1ZjlhYTI3
ZTIwNzIuLmNjNWUwZjk3ZmJhYmY5YWZhM2Y0MzU5YzcyNmJhYzg3ZTUzNDE4Y2YgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dC5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL1NwZWVj
aElucHV0LmNwcApAQCAtOTMsMTAgKzkzLDEwIEBAIHZvaWQgU3BlZWNoSW5wdXQ6OnNldFJlY29n
bml0aW9uUmVzdWx0KGludCBsaXN0ZW5lcklkLCBjb25zdCBTdHJpbmcmIHJlc3VsdCkKICAgICAg
ICAgbV9saXN0ZW5lcnMuZ2V0KGxpc3RlbmVySWQpLT5zZXRSZWNvZ25pdGlvblJlc3VsdChsaXN0
ZW5lcklkLCByZXN1bHQpOwogfQogCi1ib29sIFNwZWVjaElucHV0OjpzdGFydFJlY29nbml0aW9u
KGludCBsaXN0ZW5lcklkLCBjb25zdCBJbnRSZWN0JiBlbGVtZW50UmVjdCkKK2Jvb2wgU3BlZWNo
SW5wdXQ6OnN0YXJ0UmVjb2duaXRpb24oaW50IGxpc3RlbmVySWQsIGNvbnN0IFN0cmluZyYgbGFu
Z3VhZ2UsIGNvbnN0IEludFJlY3QmIGVsZW1lbnRSZWN0KQogewogICAgIEFTU0VSVChtX2xpc3Rl
bmVycy5jb250YWlucyhsaXN0ZW5lcklkKSk7Ci0gICAgcmV0dXJuIG1fY2xpZW50LT5zdGFydFJl
Y29nbml0aW9uKGxpc3RlbmVySWQsIGVsZW1lbnRSZWN0KTsKKyAgICByZXR1cm4gbV9jbGllbnQt
PnN0YXJ0UmVjb2duaXRpb24obGlzdGVuZXJJZCwgbGFuZ3VhZ2UsIGVsZW1lbnRSZWN0KTsKIH0K
IAogdm9pZCBTcGVlY2hJbnB1dDo6c3RvcFJlY29yZGluZyhpbnQgbGlzdGVuZXJJZCkKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dC5oIGIvV2ViQ29yZS9wYWdlL1NwZWVjaElu
cHV0LmgKaW5kZXggZDEwYjc4OWFhZDI3MzllZGQzYmY0NTMwZTdjNmUwMGM0ZTJkYWU4YS4uOGI0
MjZmNTYzMTM2ZWQ2NTFkZDY0NTZlODM1YjRkNDQ1M2FiODAxMiAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9wYWdlL1NwZWVjaElucHV0LmgKKysrIGIvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0LmgKQEAg
LTYxLDcgKzYxLDcgQEAgcHVibGljOgogICAgIHZvaWQgdW5yZWdpc3Rlckxpc3RlbmVyKGludCk7
CiAKICAgICAvLyBNZXRob2RzIGludm9rZWQgYnkgdGhlIGlucHV0IGVsZW1lbnRzLgotICAgIGJv
b2wgc3RhcnRSZWNvZ25pdGlvbihpbnQsIGNvbnN0IEludFJlY3QmKTsKKyAgICBib29sIHN0YXJ0
UmVjb2duaXRpb24oaW50LCBjb25zdCBTdHJpbmcmLCBjb25zdCBJbnRSZWN0Jik7CiAgICAgdm9p
ZCBzdG9wUmVjb3JkaW5nKGludCk7CiAgICAgdm9pZCBjYW5jZWxSZWNvZ25pdGlvbihpbnQpOwog
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXRDbGllbnQuaCBiL1dlYkNvcmUv
cGFnZS9TcGVlY2hJbnB1dENsaWVudC5oCmluZGV4IGQ1ZmRhMTdmYWEyY2Q3OTVhZjQ0ZjUzYTQ2
ZmNiYTU5NzQxYWI3NmMuLjM4YmZlNGZjNDU1MjlmMDA3MjI0M2ZlYWQ4ZjdiYzZmYTlkYWE2ZmIg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dENsaWVudC5oCisrKyBiL1dlYkNv
cmUvcGFnZS9TcGVlY2hJbnB1dENsaWVudC5oCkBAIC0zMyw2ICszMywxMCBAQAogCiAjaWYgRU5B
QkxFKElOUFVUX1NQRUVDSCkKIAorbmFtZXNwYWNlIFdURiB7CitjbGFzcyBTdHJpbmc7Cit9CisK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW50UmVjdDsKQEAgLTQ4LDcgKzUyLDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRMaXN0ZW5lcihTcGVlY2hJbnB1dExpc3RlbmVy
KikgPSAwOwogCiAgICAgLy8gU3RhcnRzIHNwZWVjaCByZWNvZ25pdGlvbiBhbmQgYXVkaW8gcmVj
b3JkaW5nLgotICAgIHZpcnR1YWwgYm9vbCBzdGFydFJlY29nbml0aW9uKGludCByZXF1ZXN0SWQs
IGNvbnN0IEludFJlY3QmIGVsZW1lbnRSZWN0KSA9IDA7CisgICAgdmlydHVhbCBib29sIHN0YXJ0
UmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCwgY29uc3QgV1RGOjpTdHJpbmcmIGxhbmd1YWdlLCBj
b25zdCBJbnRSZWN0JiBlbGVtZW50UmVjdCkgPSAwOwogCiAgICAgLy8gU3RvcHMgYXVkaW8gcmVj
b3JkaW5nIGFuZCBwZXJmb3JtcyByZWNvZ25pdGlvbiB3aXRoIHRoZSBhdWRpbyByZWNvcmRlZCB1
bnRpbCBub3cKICAgICAvLyAoZG9lcyBub3QgZGlzY2FyZCBhdWRpbykuCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svU3BlZWNoSW5wdXRDbGllbnRNb2NrLmNwcCBiL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9TcGVlY2hJbnB1dENsaWVudE1vY2suY3BwCmluZGV4IDZiNjQ5NDJmMTdi
OTI1YjQ5ZWYwOTIxNDdjMGExNmEwN2YwZDdjY2MuLmMwNDk3MWUwYTk0Mzg1NWE4Y2ZjZDFkMWMy
NDU2MzJiYTgyMWIxMGEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TcGVlY2hJ
bnB1dENsaWVudE1vY2suY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TcGVlY2hJbnB1
dENsaWVudE1vY2suY3BwCkBAIC0zNSw2ICszNSwxMSBAQAogCiAjaW5jbHVkZSAiU3BlZWNoSW5w
dXRMaXN0ZW5lci5oIgogCituYW1lc3BhY2UgeworICAgIC8vIEhhc2hNYXAgZG9lc24ndCBzdXBw
b3J0IGVtcHR5IHN0cmluZ3MgYXMga2V5cywgc28gdGhpcyB2YWx1ZSAoYW4gaW52YWxpZCBCQ1A0
NyB0YWcpIGlzIHVzZWQgZm9yIHRob3NlIGNhc2VzLgorICAgIGNvbnN0IFN0cmluZyBlbXB0eUxh
bmd1YWdlID0gIl8iOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNwZWVjaElucHV0Q2xp
ZW50TW9jazo6U3BlZWNoSW5wdXRDbGllbnRNb2NrKCkKQEAgLTUwLDEyICs1NSwxMyBAQCB2b2lk
IFNwZWVjaElucHV0Q2xpZW50TW9jazo6c2V0TGlzdGVuZXIoU3BlZWNoSW5wdXRMaXN0ZW5lciog
bGlzdGVuZXIpCiAgICAgbV9saXN0ZW5lciA9IGxpc3RlbmVyOwogfQogCi1ib29sIFNwZWVjaElu
cHV0Q2xpZW50TW9jazo6c3RhcnRSZWNvZ25pdGlvbihpbnQgcmVxdWVzdElkLCBjb25zdCBJbnRS
ZWN0JikKK2Jvb2wgU3BlZWNoSW5wdXRDbGllbnRNb2NrOjpzdGFydFJlY29nbml0aW9uKGludCBy
ZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UsIGNvbnN0IEludFJlY3QmKQogewogICAg
IGlmIChtX3RpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBtX3Jl
cXVlc3RJZCA9IHJlcXVlc3RJZDsKICAgICBtX3JlY29yZGluZyA9IHRydWU7CisgICAgbV9sYW5n
dWFnZSA9IGxhbmd1YWdlOwogICAgIG1fdGltZXIuc3RhcnRPbmVTaG90KDApOwogICAgIHJldHVy
biB0cnVlOwogfQpAQCAtODAsOSArODYsMTIgQEAgdm9pZCBTcGVlY2hJbnB1dENsaWVudE1vY2s6
OmNhbmNlbFJlY29nbml0aW9uKGludCByZXF1ZXN0SWQpCiAgICAgfQogfQogCi12b2lkIFNwZWVj
aElucHV0Q2xpZW50TW9jazo6c2V0UmVjb2duaXRpb25SZXN1bHQoY29uc3QgU3RyaW5nJiByZXN1
bHQpCit2b2lkIFNwZWVjaElucHV0Q2xpZW50TW9jazo6c2V0UmVjb2duaXRpb25SZXN1bHQoY29u
c3QgU3RyaW5nJiByZXN1bHQsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UpCiB7Ci0gICAgbV9yZWNv
Z25pdGlvblJlc3VsdCA9IHJlc3VsdDsKKyAgICBpZiAobGFuZ3VhZ2UuaXNFbXB0eSgpKQorICAg
ICAgICBtX3JlY29nbml0aW9uUmVzdWx0LnNldChlbXB0eUxhbmd1YWdlLCByZXN1bHQpOworICAg
IGVsc2UKKyAgICAgICAgbV9yZWNvZ25pdGlvblJlc3VsdC5zZXQobGFuZ3VhZ2UsIHJlc3VsdCk7
CiB9CiAKIHZvaWQgU3BlZWNoSW5wdXRDbGllbnRNb2NrOjp0aW1lckZpcmVkKFdlYkNvcmU6OlRp
bWVyPFNwZWVjaElucHV0Q2xpZW50TW9jaz4qKQpAQCAtOTIsNyArMTAxLDE3IEBAIHZvaWQgU3Bl
ZWNoSW5wdXRDbGllbnRNb2NrOjp0aW1lckZpcmVkKFdlYkNvcmU6OlRpbWVyPFNwZWVjaElucHV0
Q2xpZW50TW9jaz4qKQogICAgICAgICBtX2xpc3RlbmVyLT5kaWRDb21wbGV0ZVJlY29yZGluZyht
X3JlcXVlc3RJZCk7CiAgICAgICAgIG1fdGltZXIuc3RhcnRPbmVTaG90KDApOwogICAgIH0gZWxz
ZSB7Ci0gICAgICAgIG1fbGlzdGVuZXItPnNldFJlY29nbml0aW9uUmVzdWx0KG1fcmVxdWVzdElk
LCBtX3JlY29nbml0aW9uUmVzdWx0KTsKKyAgICAgICAgU3RyaW5nIGxhbmd1YWdlID0gbV9sYW5n
dWFnZS5pc0VtcHR5KCkgPyBTdHJpbmcoZW1wdHlMYW5ndWFnZSkgOiBtX2xhbmd1YWdlOworICAg
ICAgICBpZiAoIW1fcmVjb2duaXRpb25SZXN1bHQuY29udGFpbnMobGFuZ3VhZ2UpKSB7CisgICAg
ICAgICAgICAvLyBDYW4ndCBhdm9pZCBzZXR0aW5nIGEgcmVzdWx0IG9uIGVtcHR5IG9yIGludmFs
aWQgbGFuZ3VhZ2Ugc3RyaW5ncy4KKyAgICAgICAgICAgIC8vIFRoaXMgd291bGQgYXZvaWQgZ2Vu
ZXJhdGluZyB0aGUgZXZlbnRzIHVzZWQgdG8gY2hlY2sgdGhlIHJlc3VsdHMgYW5kIHRoZSB0ZXN0
IHdvdWxkIHRpbWVvdXQuCisgICAgICAgICAgICBTdHJpbmcgZXJyb3IoImVycm9yOiBubyByZXN1
bHQgZm91bmQgZm9yIGxhbmd1YWdlICciKTsKKyAgICAgICAgICAgIGVycm9yLmFwcGVuZChtX2xh
bmd1YWdlKTsKKyAgICAgICAgICAgIGVycm9yLmFwcGVuZCgiJyIpOworICAgICAgICAgICAgbV9s
aXN0ZW5lci0+c2V0UmVjb2duaXRpb25SZXN1bHQobV9yZXF1ZXN0SWQsIGVycm9yKTsKKyAgICAg
ICAgfSBlbHNlCisgICAgICAgICAgICBtX2xpc3RlbmVyLT5zZXRSZWNvZ25pdGlvblJlc3VsdCht
X3JlcXVlc3RJZCwgbV9yZWNvZ25pdGlvblJlc3VsdC5nZXQobGFuZ3VhZ2UpKTsKKwogICAgICAg
ICBtX2xpc3RlbmVyLT5kaWRDb21wbGV0ZVJlY29nbml0aW9uKG1fcmVxdWVzdElkKTsKICAgICAg
ICAgbV9yZXF1ZXN0SWQgPSAwOwogICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9TcGVlY2hJbnB1dENsaWVudE1vY2suaCBiL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TcGVl
Y2hJbnB1dENsaWVudE1vY2suaAppbmRleCBjZTgzZDNiYjljYjg4YjBhM2E5NWI1NDk1NDI3ZDI5
OTFmMmUwYjRmLi4zY2U5ODdiODIzY2QxOTgwMjg2NjljNzc5ZjNjNDc5YzQ3M2NiN2VkIDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL21vY2svU3BlZWNoSW5wdXRDbGllbnRNb2NrLmgKKysr
IGIvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xpZW50TW9jay5oCkBAIC0zNCw2
ICszNCw4IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJTcGVlY2hJ
bnB1dENsaWVudC5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKICNpZiBFTkFCTEUoSU5QVVRf
U1BFRUNIKQogCkBAIC00NiwxMSArNDgsMTEgQEAgY2xhc3MgU3BlZWNoSW5wdXRDbGllbnRNb2Nr
IDogcHVibGljIFNwZWVjaElucHV0Q2xpZW50IHsKIHB1YmxpYzoKICAgICBTcGVlY2hJbnB1dENs
aWVudE1vY2soKTsKIAotICAgIHZvaWQgc2V0UmVjb2duaXRpb25SZXN1bHQoY29uc3QgU3RyaW5n
JiByZXN1bHQpOworICAgIHZvaWQgc2V0UmVjb2duaXRpb25SZXN1bHQoY29uc3QgU3RyaW5nJiBy
ZXN1bHQsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UpOwogCiAgICAgLy8gU3BlZWNoSW5wdXRDbGll
bnQgbWV0aG9kcy4KICAgICB2b2lkIHNldExpc3RlbmVyKFNwZWVjaElucHV0TGlzdGVuZXIqKTsK
LSAgICBib29sIHN0YXJ0UmVjb2duaXRpb24oaW50LCBjb25zdCBJbnRSZWN0Jik7CisgICAgYm9v
bCBzdGFydFJlY29nbml0aW9uKGludCwgY29uc3QgU3RyaW5nJiwgY29uc3QgSW50UmVjdCYpOwog
ICAgIHZvaWQgc3RvcFJlY29yZGluZyhpbnQpOwogICAgIHZvaWQgY2FuY2VsUmVjb2duaXRpb24o
aW50KTsKIApAQCAtNjEsNyArNjMsOSBAQCBwcml2YXRlOgogICAgIFRpbWVyPFNwZWVjaElucHV0
Q2xpZW50TW9jaz4gbV90aW1lcjsKICAgICBTcGVlY2hJbnB1dExpc3RlbmVyKiBtX2xpc3RlbmVy
OwogICAgIGludCBtX3JlcXVlc3RJZDsKLSAgICBTdHJpbmcgbV9yZWNvZ25pdGlvblJlc3VsdDsK
KworICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IG1fcmVjb2duaXRpb25SZXN1bHQ7CisgICAg
U3RyaW5nIG1fbGFuZ3VhZ2U7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwIGIvV2Vi
Q29yZS9yZW5kZXJpbmcvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAppbmRleCA1ZDViOGIz
MGI0MTEwNTIwZDFhNGRlN2I4YTc5YzQ4NWQ3OTM2NjA4Li42NWQwYTY0NjA5ZDIwMzRiMTA5OTUw
M2QxNjkxNTFhYmU2NmRhYTNlIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Q29u
dHJvbElubmVyRWxlbWVudHMuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRDb250cm9s
SW5uZXJFbGVtZW50cy5jcHAKQEAgLTIxLDkgKzIxLDkgQEAKICAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8K
LSAKKwogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlRleHRDb250cm9sSW5uZXJFbGVt
ZW50cy5oIgogCkBAIC0xMDcsMTggKzEwNywxOCBAQCB2b2lkIFRleHRDb250cm9sSW5uZXJFbGVt
ZW50OjphdHRhY2hJbm5lckVsZW1lbnQoTm9kZSogcGFyZW50LCBQYXNzUmVmUHRyPFJlbmRlcgog
ICAgICAgICBzZXRSZW5kZXJlcihyZW5kZXJlcik7CiAgICAgICAgIHJlbmRlcmVyLT5zZXRTdHls
ZShzdHlsZSk7CiAgICAgfQotICAgIAorCiAgICAgLy8gU2V0IHRoZXNlIGV4cGxpY2l0bHkgc2lu
Y2UgdGhpcyBub3JtYWxseSBoYXBwZW5zIGR1cmluZyBhbiBhdHRhY2goKQogICAgIHNldEF0dGFj
aGVkKCk7CiAgICAgc2V0SW5Eb2N1bWVudCgpOwotICAgIAorCiAgICAgLy8gRm9yIGVsZW1lbnRz
IHdpdGhvdXQgYSBzaGFkb3cgcGFyZW50LCBhZGQgdGhlIG5vZGUgdG8gdGhlIERPTSBub3JtYWxs
eS4KICAgICBpZiAoIW1fc2hhZG93UGFyZW50KSB7CiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGNv
ZGUgc2VlbXMgdmVyeSB3cm9uZy4gIFdoeSBhcmUgd2UgbWFnaWNhbGx5IGFkZGluZyB8dGhpc3wg
dG8gdGhlIERPTSBoZXJlPwogICAgICAgICAvLyAgICAgICAgV2Ugc2hvdWxkbid0IGJlIGNhbGxp
bmcgcGFyc2VyIEFQSSBtZXRob2RzIG91dHNpZGUgb2YgdGhlIHBhcnNlciEKICAgICAgICAgcGFy
ZW50LT5kZXByZWNhdGVkUGFyc2VyQWRkQ2hpbGQodGhpcyk7CiAgICAgfQotIAorCiAgICAgLy8g
QWRkIHRoZSByZW5kZXJlciB0byB0aGUgcmVuZGVyIHRyZWUKICAgICBpZiAocmVuZGVyZXIpCiAg
ICAgICAgIHBhcmVudC0+cmVuZGVyZXIoKS0+YWRkQ2hpbGQocmVuZGVyZXIpOwpAQCAtMjA4LDcg
KzIwOCw3IEBAIHZvaWQgU2VhcmNoRmllbGRDYW5jZWxCdXR0b25FbGVtZW50OjpkZXRhY2goKQog
ewogICAgIGlmIChtX2NhcHR1cmluZykgewogICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gZG9j
dW1lbnQoKS0+ZnJhbWUoKSkKLSAgICAgICAgICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+c2V0
Q2FwdHVyaW5nTW91c2VFdmVudHNOb2RlKDApOyAgICAgIAorICAgICAgICAgICAgZnJhbWUtPmV2
ZW50SGFuZGxlcigpLT5zZXRDYXB0dXJpbmdNb3VzZUV2ZW50c05vZGUoMCk7CiAgICAgfQogICAg
IFRleHRDb250cm9sSW5uZXJFbGVtZW50OjpkZXRhY2goKTsKIH0KQEAgLTI4MSw5ICsyODEsOSBA
QCB2b2lkIFNwaW5CdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVu
dCkKICAgICBpZiAoIWJveCkgewogICAgICAgICBpZiAoIWV2ZW50LT5kZWZhdWx0SGFuZGxlZCgp
KQogICAgICAgICAgICAgSFRNTERpdkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQp
OwotICAgICAgICByZXR1cm47ICAgICAgICAKKyAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAK
KwogICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0ID0gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxl
bWVudCo+KHNoYWRvd0FuY2VzdG9yTm9kZSgpKTsKICAgICBpZiAoaW5wdXQtPmRpc2FibGVkKCkg
fHwgaW5wdXQtPmlzUmVhZE9ubHlGb3JtQ29udHJvbCgpKSB7CiAgICAgICAgIGlmICghZXZlbnQt
PmRlZmF1bHRIYW5kbGVkKCkpCkBAIC00MzEsNyArNDMxLDcgQEAgdm9pZCBJbnB1dEZpZWxkU3Bl
ZWNoQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiAgICAg
aWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmNsaWNrRXZlbnQpIHsKICAgICAgICAg
c3dpdGNoIChtX3N0YXRlKSB7CiAgICAgICAgIGNhc2UgSWRsZToKLSAgICAgICAgICAgIGlmIChz
cGVlY2hJbnB1dCgpLT5zdGFydFJlY29nbml0aW9uKG1fbGlzdGVuZXJJZCwgaW5wdXQtPnJlbmRl
cmVyKCktPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCkpKQorICAgICAgICAgICAgaWYgKHNwZWVj
aElucHV0KCktPnN0YXJ0UmVjb2duaXRpb24obV9saXN0ZW5lcklkLCBpbnB1dC0+Y29tcHV0ZUlu
aGVyaXRlZExhbmd1YWdlKCksIGlucHV0LT5yZW5kZXJlcigpLT5hYnNvbHV0ZUJvdW5kaW5nQm94
UmVjdCgpKSkKICAgICAgICAgICAgICAgICBzZXRTdGF0ZShSZWNvcmRpbmcpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUmVjb3JkaW5nOgpAQCAtNDg3LDcgKzQ4Nyw3IEBAIHZv
aWQgSW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQ6OmRldGFjaCgpCiB7CiAgICAgaWYgKG1f
Y2FwdHVyaW5nKSB7CiAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLT5mcmFt
ZSgpKQotICAgICAgICAgICAgZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5zZXRDYXB0dXJpbmdNb3Vz
ZUV2ZW50c05vZGUoMCk7ICAgICAgCisgICAgICAgICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCkt
PnNldENhcHR1cmluZ01vdXNlRXZlbnRzTm9kZSgwKTsKICAgICB9CiAKICAgICBpZiAobV9zdGF0
ZSAhPSBJZGxlKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMTgwZTMzMGE3ODI5YTE5NGJlZTRlMjM3ZGZjZDcy
ZGM3NTdiODg3MS4uYTBkYjdiZjdiMWQ4ZTU5MjdjODU0Y2E4YjZiYjI0NzhhYzgyNDJmOCAxMDA2
NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTAtMTAtMTMgIExlYW5kcm8gR3JhY2nDoSBH
aWwgIDxsZWFuZHJvZ3JhY2lhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUGF0Y2ggdGhlIGN1cnJlbnQgc3BlZWNoIGlucHV0IGlt
cGxlbWVudGF0aW9uIHRvIHVzZSBhbmQgdmFsaWRhdGUgdGhlCisgICAgICAgIG5lYXJlc3QgbGFu
Z3VhZ2UgdGFnLiBUaGUgbGFuZ3VhZ2UgaXMgbm93IHBhc3NlZCB0byB0aGUgc3RhcnRSZWNvZ25p
dGlvbgorICAgICAgICBtZXRob2RzIHNvIHRoYXQgbGFuZ3VhZ2Utc3BlY2lmaWMgcmVjb2duaXRp
b24gY291bGQgYmUgdXNlZC4gQWxzbyBhZGRlZAorICAgICAgICBhIHNlY29uZCBwYXJhbWV0ZXIg
dG8gc2V0TW9ja1NwZWVjaElucHV0UmVzdWx0IGZvciB0aGUgbGFuZ3VhZ2UgdXNlZCBpbgorICAg
ICAgICBzcGVlY2ggcmVjb2duaXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD00NzA4OQorCisgICAgICAgIFRoaXMgaXMgdGhlIDJuZCBvZiBhIDQt
c2lkZWQgcGF0Y2ggaW4gQ2hyb21pdW0gYW5kIFdlYktpdC4gRm9yIG1vcmUKKyAgICAgICAgZGV0
YWlscyBzZWUgaHR0cDovL2NvZGVyZXZpZXcuY2hyb21pdW0ub3JnLzM2MTUwMDUvc2hvdyBhbmQK
KyAgICAgICAgaHR0cDovL2NvZGVyZXZpZXcuY2hyb21pdW0ub3JnLzM1OTUwMTgvc2hvdy4KKwor
ICAgICAgICAqIHB1YmxpYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIuaDoKKyAgICAgICAgKFdl
YktpdDo6V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyOjpzdGFydFJlY29nbml0aW9uKToKKyAgICAg
ICAgKiBwdWJsaWMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9jay5oOgorICAgICAgICAqIHNy
Yy9TcGVlY2hJbnB1dENsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hJbnB1
dENsaWVudEltcGw6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaElucHV0Q2xpZW50
SW1wbDo6c3RhcnRSZWNvZ25pdGlvbik6CisgICAgICAgICogc3JjL1NwZWVjaElucHV0Q2xpZW50
SW1wbC5oOgorICAgICAgICAqIHNyYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsOjpz
ZXRNb2NrUmVjb2duaXRpb25SZXN1bHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hJbnB1
dENvbnRyb2xsZXJNb2NrSW1wbDo6c3RhcnRSZWNvZ25pdGlvbik6CisgICAgICAgICogc3JjL1dl
YlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsLmg6CisgICAgICAgICogc3JjL1dlYlZpZXdJ
bXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKToKKyAg
ICAgICAgKiBzcmMvV2ViVmlld0ltcGwuaDoKKwogMjAxMC0xMC0xMiAgS2VubmV0aCBSdXNzZWxs
ICA8a2JyQGdvb2dsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gRml4ZXMgZm9yIGFsbCBX
ZWJHTCBjb250ZW50IGNhdXNpbmcgYXNzZXJ0aW9uIGZhaWx1cmVzCmRpZmYgLS1naXQgYS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaElucHV0Q29udHJvbGxlci5oIGIvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIuaAppbmRleCA1NDA4NzQxYTNj
OTRkM2JmMWM1NDNkOTZlOWZjMTZhNjM5MGRiMDJmLi4xZmRlMmE4ZTc3NGYzMmU1OGY4ODcyZjI0
ODIyMjMwNTljODhjMTQ3IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNw
ZWVjaElucHV0Q29udHJvbGxlci5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3Bl
ZWNoSW5wdXRDb250cm9sbGVyLmgKQEAgLTM1LDYgKzM1LDcgQEAKIAogbmFtZXNwYWNlIFdlYktp
dCB7CiAKK2NsYXNzIFdlYlN0cmluZzsKIHN0cnVjdCBXZWJSZWN0OwogCiAvLyBQcm92aWRlcyBh
biBlbWJlZGRlciBBUEkgY2FsbGVkIGJ5IFdlYktpdC4KQEAgLTQzLDcgKzQ0LDcgQEAgcHVibGlj
OgogICAgIC8vIFN0YXJ0cyBzcGVlY2ggcmVjb2duaXRpb24uIFNwZWVjaCB3aWxsIGdldCByZWNv
cmRlZCB1bnRpbCB0aGUgZW5kcG9pbnRlciBkZXRlY3RzIHNpbGVuY2UsCiAgICAgLy8gcnVucyB0
byB0aGUgbGltaXQgb3Igc3RvcFJlY29yZGluZyBpcyBjYWxsZWQuIFByb2dyZXNzIGluZGljYXRp
b25zIGFuZCB0aGUgcmVjb2duaXplZAogICAgIC8vIHRleHQgYXJlIHJldHVybmVkIHZpYSB0aGUg
bGlzdGVuZXIgaW50ZXJmYWNlLgotICAgIHZpcnR1YWwgYm9vbCBzdGFydFJlY29nbml0aW9uKGlu
dCByZXF1ZXN0SWQsIGNvbnN0IFdlYlJlY3QmKQorICAgIHZpcnR1YWwgYm9vbCBzdGFydFJlY29n
bml0aW9uKGludCByZXF1ZXN0SWQsIGNvbnN0IFdlYlN0cmluZyYgbGFuZ3VhZ2UsIGNvbnN0IFdl
YlJlY3QmIGVsZW1lbnRSZWN0KQogICAgIHsKICAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2suaCBiL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9jay5oCmluZGV4IDlhMjYyMzVmZjZk
NWRjY2JiZTI0NzI2MmFlNDRhM2FjNzM5N2MzZjQuLmI0YzUwYTA1ZGNmNWExMmY4NDFiZjliNjc1
NWNkMjg4MTdmOGMwOGIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3Bl
ZWNoSW5wdXRDb250cm9sbGVyTW9jay5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
U3BlZWNoSW5wdXRDb250cm9sbGVyTW9jay5oCkBAIC00NCw2ICs0NCwxMCBAQCBwdWJsaWM6CiAg
ICAgICAgIFdlYlNwZWVjaElucHV0TGlzdGVuZXIqIGxpc3RlbmVyKTsKICAgICB2aXJ0dWFsIH5X
ZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrKCkgeyB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
TW9ja1JlY29nbml0aW9uUmVzdWx0KGNvbnN0IFdlYlN0cmluZyYgcmVzdWx0LCBjb25zdCBXZWJT
dHJpbmcmIGxhbmd1YWdlKSA9IDA7CisKKyAgICAvLyBGSVhNRTogdGhpcyBpcyBhIGZpeCBmb3Ig
YSB0d28tc2lkZWQgcGF0Y2guIERlbGV0ZSBhcyBzb29uIGFzIHRoZSBjaHJvbWl1bSBzaWRlIGlz
IHBhdGNoZWQuCisgICAgLy8gQ2hyb21pdW0gcGF0Y2ggbm90IHVwbG9hZGVkIHlldCwgYnV0IHdp
bGwgZGVwZW5kIG9uIGh0dHA6Ly9jb2RlcmV2aWV3LmNocm9taXVtLm9yZy8zNjE1MDA1L3Nob3cg
cGF0Y2guCiAgICAgdmlydHVhbCB2b2lkIHNldE1vY2tSZWNvZ25pdGlvblJlc3VsdChjb25zdCBX
ZWJTdHJpbmcmIHJlc3VsdCkgPSAwOwogfTsKIApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVt
L3NyYy9TcGVlY2hJbnB1dENsaWVudEltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9TcGVl
Y2hJbnB1dENsaWVudEltcGwuY3BwCmluZGV4IDk2M2Q0NDA1YTYyZDMyZTFhOGNlY2Q1NGMwOGM1
YmJlYjNhNjJkY2EuLmEzMGQ5ODZhNjZhMWE2MGMzYTk3MzhjYmE5ZTRmYWZiNTM3YjI3MGYgMTAw
NjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvU3BlZWNoSW5wdXRDbGllbnRJbXBsLmNwcAor
KysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1NwZWVjaElucHV0Q2xpZW50SW1wbC5jcHAKQEAgLTM2
LDExICszNiwxNyBAQAogI2luY2x1ZGUgIldlYlN0cmluZy5oIgogI2luY2x1ZGUgIldlYlZpZXdD
bGllbnQuaCIKICNpbmNsdWRlICJwYWdlL1NwZWVjaElucHV0TGlzdGVuZXIuaCIKKyNpbmNsdWRl
IDx3dGYvUGFzc093blB0ci5oPgogCiAjaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKK1Bhc3NPd25QdHI8U3BlZWNoSW5wdXRDbGllbnRJbXBsPiBTcGVlY2hJ
bnB1dENsaWVudEltcGw6OmNyZWF0ZShXZWJWaWV3Q2xpZW50KiBjbGllbnQpCit7CisgICAgcmV0
dXJuIGFkb3B0UHRyKG5ldyBTcGVlY2hJbnB1dENsaWVudEltcGwoY2xpZW50KSk7Cit9CisKIFNw
ZWVjaElucHV0Q2xpZW50SW1wbDo6U3BlZWNoSW5wdXRDbGllbnRJbXBsKFdlYlZpZXdDbGllbnQq
IHdlYl92aWV3X2NsaWVudCkKICAgICA6IG1fY29udHJvbGxlcih3ZWJfdmlld19jbGllbnQgPyB3
ZWJfdmlld19jbGllbnQtPnNwZWVjaElucHV0Q29udHJvbGxlcih0aGlzKSA6IDApCiAgICAgLCBt
X2xpc3RlbmVyKDApCkBAIC01NiwxMCArNjIsMTAgQEAgdm9pZCBTcGVlY2hJbnB1dENsaWVudElt
cGw6OnNldExpc3RlbmVyKFdlYkNvcmU6OlNwZWVjaElucHV0TGlzdGVuZXIqIGxpc3RlbmVyKQog
ICAgIG1fbGlzdGVuZXIgPSBsaXN0ZW5lcjsKIH0KIAotYm9vbCBTcGVlY2hJbnB1dENsaWVudElt
cGw6OnN0YXJ0UmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCwgY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYgZWxlbWVudFJlY3QpCitib29sIFNwZWVjaElucHV0Q2xpZW50SW1wbDo6c3RhcnRSZWNvZ25p
dGlvbihpbnQgcmVxdWVzdElkLCBjb25zdCBXVEY6OlN0cmluZyYgbGFuZ3VhZ2UsIGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmIGVsZW1lbnRSZWN0KQogewogICAgIEFTU0VSVChtX2xpc3RlbmVyKTsK
LSAgICByZXR1cm4gbV9jb250cm9sbGVyLT5zdGFydFJlY29nbml0aW9uKHJlcXVlc3RJZCwgZWxl
bWVudFJlY3QpOworICAgIHJldHVybiBtX2NvbnRyb2xsZXItPnN0YXJ0UmVjb2duaXRpb24ocmVx
dWVzdElkLCBsYW5ndWFnZSwgZWxlbWVudFJlY3QpOwogfQogCiB2b2lkIFNwZWVjaElucHV0Q2xp
ZW50SW1wbDo6c3RvcFJlY29yZGluZyhpbnQgcmVxdWVzdElkKQpkaWZmIC0tZ2l0IGEvV2ViS2l0
L2Nocm9taXVtL3NyYy9TcGVlY2hJbnB1dENsaWVudEltcGwuaCBiL1dlYktpdC9jaHJvbWl1bS9z
cmMvU3BlZWNoSW5wdXRDbGllbnRJbXBsLmgKaW5kZXggODE3YjMyYjEyNDE0YjNhMDdkZmEzYWUz
NTE5MDg3ZGVhNWEwZjczMy4uMzhjZWIxODhiYzkzY2JlNjY1M2NiZjkwNGE3MGE5NzcyNWYyMmFm
MSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9TcGVlY2hJbnB1dENsaWVudEltcGwu
aAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1NwZWVjaElucHV0Q2xpZW50SW1wbC5oCkBAIC0z
NSw2ICszNSwxMiBAQAogCiAjaW5jbHVkZSAiV2ViU3BlZWNoSW5wdXRMaXN0ZW5lci5oIgogI2lu
Y2x1ZGUgInBhZ2UvU3BlZWNoSW5wdXRDbGllbnQuaCIKKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworbmFtZXNwYWNlIFdURiB7CitjbGFzcyBT
dHJpbmc7Cit9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFNwZWVjaElucHV0TGlzdGVu
ZXI7CkBAIC00OSwxMiArNTUsMTIgQEAgY2xhc3MgU3BlZWNoSW5wdXRDbGllbnRJbXBsCiAgICAg
OiBwdWJsaWMgV2ViQ29yZTo6U3BlZWNoSW5wdXRDbGllbnQsCiAgICAgICBwdWJsaWMgV2ViU3Bl
ZWNoSW5wdXRMaXN0ZW5lciB7CiBwdWJsaWM6Ci0gICAgU3BlZWNoSW5wdXRDbGllbnRJbXBsKFdl
YlZpZXdDbGllbnQqKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxTcGVlY2hJbnB1dENsaWVudElt
cGw+IGNyZWF0ZShXZWJWaWV3Q2xpZW50Kik7CiAgICAgdmlydHVhbCB+U3BlZWNoSW5wdXRDbGll
bnRJbXBsKCk7CiAKICAgICAvLyBTcGVlY2hJbnB1dENsaWVudCBtZXRob2RzLgogICAgIHZvaWQg
c2V0TGlzdGVuZXIoV2ViQ29yZTo6U3BlZWNoSW5wdXRMaXN0ZW5lciopOwotICAgIGJvb2wgc3Rh
cnRSZWNvZ25pdGlvbihpbnQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKKyAgICBib29sIHN0
YXJ0UmVjb2duaXRpb24oaW50LCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmKTsKICAgICB2b2lkIHN0b3BSZWNvcmRpbmcoaW50KTsKICAgICB2b2lkIGNhbmNlbFJl
Y29nbml0aW9uKGludCk7CiAKQEAgLTY0LDYgKzcwLDggQEAgcHVibGljOgogICAgIHZvaWQgZGlk
Q29tcGxldGVSZWNvZ25pdGlvbihpbnQpOwogCiBwcml2YXRlOgorICAgIFNwZWVjaElucHV0Q2xp
ZW50SW1wbChXZWJWaWV3Q2xpZW50Kik7CisKICAgICBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIq
IG1fY29udHJvbGxlcjsgLy8gVG8gY2FsbCBpbnRvIHRoZSBlbWJlZGRlci4KICAgICBXZWJDb3Jl
OjpTcGVlY2hJbnB1dExpc3RlbmVyKiBtX2xpc3RlbmVyOwogfTsKZGlmZiAtLWdpdCBhL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGwuY3BwIGIvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbC5jcHAKaW5k
ZXggNjBjNGZlZDg1MmIyODRlMDI3MWFkMDBlZDk3MTAwMmEyZjU3YTRiNi4uNDVjNmZmMDg2MmYw
MjRmYzE4MDU3MzNjMTZhOTMzMDU3MzdhYzM5MyAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbC5jcHAKKysrIGIvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbC5jcHAKQEAgLTU3LDcg
KzU3LDEyIEBAIFdlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsOjp+V2ViU3BlZWNoSW5w
dXRDb250cm9sbGVyTW9ja0ltcGwoKQogCiB2b2lkIFdlYlNwZWVjaElucHV0Q29udHJvbGxlck1v
Y2tJbXBsOjpzZXRNb2NrUmVjb2duaXRpb25SZXN1bHQoY29uc3QgV2ViU3RyaW5nJiByZXN1bHQp
CiB7Ci0gICAgbV93ZWJjb3JlTW9jay0+c2V0UmVjb2duaXRpb25SZXN1bHQocmVzdWx0KTsKKyAg
ICBtX3dlYmNvcmVNb2NrLT5zZXRSZWNvZ25pdGlvblJlc3VsdChyZXN1bHQsIFdlYlN0cmluZzo6
ZnJvbVVURjgoIiIpKTsKK30KKwordm9pZCBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1w
bDo6c2V0TW9ja1JlY29nbml0aW9uUmVzdWx0KGNvbnN0IFdlYlN0cmluZyYgcmVzdWx0LCBjb25z
dCBXZWJTdHJpbmcgJmxhbmd1YWdlKQoreworICAgIG1fd2ViY29yZU1vY2stPnNldFJlY29nbml0
aW9uUmVzdWx0KHJlc3VsdCwgbGFuZ3VhZ2UpOwogfQogCiB2b2lkIFdlYlNwZWVjaElucHV0Q29u
dHJvbGxlck1vY2tJbXBsOjpkaWRDb21wbGV0ZVJlY29yZGluZyhpbnQgcmVxdWVzdElkKQpAQCAt
NzUsOSArODAsOSBAQCB2b2lkIFdlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsOjpzZXRS
ZWNvZ25pdGlvblJlc3VsdChpbnQgcmVxdWVzdElkLCBjb25zdAogICAgIG1fbGlzdGVuZXItPnNl
dFJlY29nbml0aW9uUmVzdWx0KHJlcXVlc3RJZCwgcmVzdWx0KTsKIH0KIAotYm9vbCBXZWJTcGVl
Y2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6c3RhcnRSZWNvZ25pdGlvbihpbnQgcmVxdWVzdElk
LCBjb25zdCBXZWJSZWN0JiBlbGVtZW50UmVjdCkKK2Jvb2wgV2ViU3BlZWNoSW5wdXRDb250cm9s
bGVyTW9ja0ltcGw6OnN0YXJ0UmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCwgY29uc3QgV2ViU3Ry
aW5nJiBsYW5ndWFnZSwgY29uc3QgV2ViUmVjdCYgZWxlbWVudFJlY3QpCiB7Ci0gICAgcmV0dXJu
IG1fd2ViY29yZU1vY2stPnN0YXJ0UmVjb2duaXRpb24ocmVxdWVzdElkLCBlbGVtZW50UmVjdCk7
CisgICAgcmV0dXJuIG1fd2ViY29yZU1vY2stPnN0YXJ0UmVjb2duaXRpb24ocmVxdWVzdElkLCBs
YW5ndWFnZSwgZWxlbWVudFJlY3QpOwogfQogCiB2b2lkIFdlYlNwZWVjaElucHV0Q29udHJvbGxl
ck1vY2tJbXBsOjpjYW5jZWxSZWNvZ25pdGlvbihpbnQgcmVxdWVzdElkKQpkaWZmIC0tZ2l0IGEv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbC5oIGIv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbC5oCmlu
ZGV4IGVkYmZjYTNlZTYwZTkzOTQyODkzZTI3MjE4OTNlNDNhMGViODdjNWYuLjFiMzA1M2JmMDky
NzUzZWY3OTI5M2RkY2ExMmU4NDM1MjA2YmRiYzAgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGwuaAorKysgYi9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsLmgKQEAgLTM3LDYgKzM3
LDEwIEBACiAjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgog
CituYW1lc3BhY2UgV1RGIHsKK2NsYXNzIFN0cmluZzsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgU3BlZWNoSW5wdXRDbGllbnRNb2NrOwogfQpAQCAtNTcsMTEgKzYxLDE1IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldFJlY29nbml0aW9uUmVzdWx0KGludCByZXF1ZXN0SWQsIGNvbnN0
IFdURjo6U3RyaW5nJiByZXN1bHQpOwogCiAgICAgLy8gV2ViU3BlZWNoSW5wdXRDb250cm9sbGVy
IG1ldGhvZHMuCi0gICAgYm9vbCBzdGFydFJlY29nbml0aW9uKGludCByZXF1ZXN0SWQsIGNvbnN0
IFdlYlJlY3QmIGVsZW1lbnRSZWN0KTsKKyAgICBib29sIHN0YXJ0UmVjb2duaXRpb24oaW50IHJl
cXVlc3RJZCwgY29uc3QgV2ViU3RyaW5nJiBsYW5ndWFnZSwgY29uc3QgV2ViUmVjdCYgZWxlbWVu
dFJlY3QpOwogICAgIHZvaWQgY2FuY2VsUmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCk7CiAgICAg
dm9pZCBzdG9wUmVjb3JkaW5nKGludCByZXF1ZXN0SWQpOwogCiAgICAgLy8gV2ViU3BlZWNoSW5w
dXRDb250cm9sbGVyTW9jayBtZXRob2RzLgorICAgIHZvaWQgc2V0TW9ja1JlY29nbml0aW9uUmVz
dWx0KGNvbnN0IFdlYlN0cmluZyYgcmVzdWx0LCBjb25zdCBXZWJTdHJpbmcmIGxhbmd1YWdlKTsK
KworICAgIC8vIEZJWE1FOiB0aGlzIGlzIGEgZml4IGZvciBhIHR3by1zaWRlZCBwYXRjaC4gRGVs
ZXRlIGFzIHNvb24gYXMgdGhlIGNocm9taXVtIHNpZGUgaXMgcGF0Y2hlZC4KKyAgICAvLyBDaHJv
bWl1bSBwYXRjaCBub3QgdXBsb2FkZWQgeWV0LCBidXQgd2lsbCBkZXBlbmQgb24gaHR0cDovL2Nv
ZGVyZXZpZXcuY2hyb21pdW0ub3JnLzM2MTUwMDUvc2hvdyBwYXRjaC4KICAgICB2b2lkIHNldE1v
Y2tSZWNvZ25pdGlvblJlc3VsdChjb25zdCBXZWJTdHJpbmcmIHJlc3VsdCk7CiAKIHByaXZhdGU6
CkBAIC03Miw0ICs4MCwzIEBAIHByaXZhdGU6CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2Vu
ZGlmIC8vIFdlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsX2gKLQpkaWZmIC0tZ2l0IGEv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlZpZXdJbXBsLmNwcAppbmRleCAwYjMzZDE3NGMyMzg0MzQzNTFkOTBmNWY4ODA5NTUwNWQw
NjJlM2ZkLi5kYzQxNjRhMzg2M2Y0NzM1ZjI0MTdjMDhjZDMxM2M5Nzg3ZTI4ZjkyIDEwMDY0NAot
LS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtODgsNiArODgsNyBAQAogI2luY2x1ZGUgIlNl
Y3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2VsZWN0aW9uQ29udHJvbGxlci5oIgogI2luY2x1
ZGUgIlNldHRpbmdzLmgiCisjaW5jbHVkZSAiU3BlZWNoSW5wdXRDbGllbnRJbXBsLmgiCiAjaW5j
bHVkZSAiVGltZXIuaCIKICNpbmNsdWRlICJUeXBpbmdDb21tYW5kLmgiCiAjaW5jbHVkZSAiVXNl
ckdlc3R1cmVJbmRpY2F0b3IuaCIKQEAgLTI3NSw3ICsyNzYsNyBAQCBXZWJWaWV3SW1wbDo6V2Vi
Vmlld0ltcGwoV2ViVmlld0NsaWVudCogY2xpZW50LCBXZWJEZXZUb29sc0FnZW50Q2xpZW50KiBk
ZXZUb29scwogICAgICwgbV9jb21wb3NpdG9yQ3JlYXRpb25GYWlsZWQoZmFsc2UpCiAjZW5kaWYK
ICNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQotICAgICwgbV9zcGVlY2hJbnB1dENsaWVudChjbGll
bnQpCisgICAgLCBtX3NwZWVjaElucHV0Q2xpZW50KFNwZWVjaElucHV0Q2xpZW50SW1wbDo6Y3Jl
YXRlKGNsaWVudCkpCiAjZW5kaWYKICAgICAsIG1fZGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94
eShuZXcgRGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eShjbGllbnQgPyBjbGllbnQtPmRldmlj
ZU9yaWVudGF0aW9uQ2xpZW50KCkgOiAwKSkKIHsKQEAgLTI5OCw3ICsyOTksNyBAQCBXZWJWaWV3
SW1wbDo6V2ViVmlld0ltcGwoV2ViVmlld0NsaWVudCogY2xpZW50LCBXZWJEZXZUb29sc0FnZW50
Q2xpZW50KiBkZXZUb29scwogICAgIHBhZ2VDbGllbnRzLmRyYWdDbGllbnQgPSAmbV9kcmFnQ2xp
ZW50SW1wbDsKICAgICBwYWdlQ2xpZW50cy5pbnNwZWN0b3JDbGllbnQgPSAmbV9pbnNwZWN0b3JD
bGllbnRJbXBsOwogI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCi0gICAgcGFnZUNsaWVudHMuc3Bl
ZWNoSW5wdXRDbGllbnQgPSAmbV9zcGVlY2hJbnB1dENsaWVudDsKKyAgICBwYWdlQ2xpZW50cy5z
cGVlY2hJbnB1dENsaWVudCA9IG1fc3BlZWNoSW5wdXRDbGllbnQuZ2V0KCk7CiAjZW5kaWYKICAg
ICBwYWdlQ2xpZW50cy5kZXZpY2VPcmllbnRhdGlvbkNsaWVudCA9IG1fZGV2aWNlT3JpZW50YXRp
b25DbGllbnRQcm94eS5nZXQoKTsKIApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5oIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCmluZGV4IDA1
MGI1ZTE2YWE1MmYyMzBjOTg0OWVkODQ4MjM5NjBjYzk2YTgwNjMuLjcxMmViN2E0MDgzNTA5MDRh
ODk1YTNkOGYwNzkyMDIzYTZkYmFiOWIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViVmlld0ltcGwuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKQEAg
LTQ5LDcgKzQ5LDYgQEAKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiTGF5ZXJSZW5k
ZXJlckNocm9taXVtLmgiCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uUHJlc2VudGVySW1wbC5oIgot
I2luY2x1ZGUgIlNwZWVjaElucHV0Q2xpZW50SW1wbC5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIu
aD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCkBAIC03NCw2ICs3Myw3IEBAIGNsYXNz
IEF1dG9GaWxsUG9wdXBNZW51Q2xpZW50OwogY2xhc3MgQ29udGV4dE1lbnVDbGllbnRJbXBsOwog
Y2xhc3MgRGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eTsKIGNsYXNzIERyYWdTY3JvbGxUaW1l
cjsKK2NsYXNzIFNwZWVjaElucHV0Q2xpZW50SW1wbDsKIGNsYXNzIFdlYkFjY2Vzc2liaWxpdHlP
YmplY3Q7CiBjbGFzcyBXZWJEZXZUb29sc0FnZW50Q2xpZW50OwogY2xhc3MgV2ViRGV2VG9vbHNB
Z2VudFByaXZhdGU7CkBAIC01NDMsNyArNTQzLDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgY29u
c3QgV2ViSW5wdXRFdmVudCogbV9jdXJyZW50SW5wdXRFdmVudDsKIAogI2lmIEVOQUJMRShJTlBV
VF9TUEVFQ0gpCi0gICAgU3BlZWNoSW5wdXRDbGllbnRJbXBsIG1fc3BlZWNoSW5wdXRDbGllbnQ7
CisgICAgT3duUHRyPFNwZWVjaElucHV0Q2xpZW50SW1wbD4gbV9zcGVlY2hJbnB1dENsaWVudDsK
ICNlbmRpZgogICAgIC8vIElmIHdlIGF0dGVtcHQgdG8gZmV0Y2ggdGhlIG9uLXNjcmVlbiBHcmFw
aGljc0NvbnRleHQzRCBiZWZvcmUKICAgICAvLyB0aGUgY29tcG9zaXRvciBoYXMgYmVlbiB0dXJu
ZWQgb24sIHdlIG5lZWQgdG8gaW5zdGFudGlhdGUgaXQKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xz
L0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwppbmRleCBlOWJkMzEwN2U1MTgzYTIx
YThhMmFmNWE3NjE1YmU2ODI2M2RjMmQ3Li4yZGFiZjE0MmVlZjQ4YTc4MDM5ZDc2NzA2ZWFhOTEy
ZWI5YzkzZWYzIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTAtMTAtMTMgIExlYW5kcm8gR3Jh
Y2nDoSBHaWwgIDxsZWFuZHJvZ3JhY2lhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgYSBzZWNvbmQgcGFyYW1ldGVyIHRv
IHNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdCBmb3IKKyAgICAgICAgdGhlIGxhbmd1YWdlIHVzZWQg
aW4gc3BlZWNoIGlucHV0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NDcwODkKKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250
cm9sbGVyLmNwcDoKKyAgICAgICAgKHNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdENhbGxiYWNrKToK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQpOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHA6
CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja1NwZWVjaElucHV0UmVzdWx0
KToKKwogMjAxMC0xMC0xMiAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcCBiL1dlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAppbmRleCAwYTdjMTFmZTU4ZTdm
ZTM2NmE3MGI2Y2QyMjc0YjM3ZGE1ZDI3ODcyLi4wNjdjZDAxNDIzNDhjYjg1ZTIwNjc4ZjRhMjc1
ZWY5MzUwYzJlNjEwIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlv
dXRUZXN0Q29udHJvbGxlci5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5
b3V0VGVzdENvbnRyb2xsZXIuY3BwCkBAIC0xMDcwLDE0ICsxMDcwLDE3IEBAIHN0YXRpYyBKU1Zh
bHVlUmVmIHNldE1vY2tHZW9sb2NhdGlvbkVycm9yQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRl
eHQsIEpTT2JqZWN0CiAKIHN0YXRpYyBKU1ZhbHVlUmVmIHNldE1vY2tTcGVlY2hJbnB1dFJlc3Vs
dENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNP
YmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVS
ZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKLSAgICBpZiAoYXJndW1l
bnRDb3VudCA8IDEpCisgICAgaWYgKGFyZ3VtZW50Q291bnQgPCAyKQogICAgICAgICByZXR1cm4g
SlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiAKICAgICBKU1JldGFpblB0cjxKU1N0cmlu
Z1JlZj4gcmVzdWx0KEFkb3B0LCBKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIGFyZ3VtZW50
c1swXSwgZXhjZXB0aW9uKSk7CiAgICAgQVNTRVJUKCEqZXhjZXB0aW9uKTsKIAorICAgIEpTUmV0
YWluUHRyPEpTU3RyaW5nUmVmPiBsYW5ndWFnZShBZG9wdCwgSlNWYWx1ZVRvU3RyaW5nQ29weShj
b250ZXh0LCBhcmd1bWVudHNbMV0sIGV4Y2VwdGlvbikpOworICAgIEFTU0VSVCghKmV4Y2VwdGlv
bik7CisKICAgICBMYXlvdXRUZXN0Q29udHJvbGxlciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0
PExheW91dFRlc3RDb250cm9sbGVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsK
LSAgICBjb250cm9sbGVyLT5zZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQocmVzdWx0LmdldCgpKTsK
KyAgICBjb250cm9sbGVyLT5zZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQocmVzdWx0LmdldCgpLCBs
YW5ndWFnZS5nZXQoKSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4
dCk7CiB9CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0
Q29udHJvbGxlci5oIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRy
b2xsZXIuaAppbmRleCA3NTVhMmIyYjljNjg4NWI3OTZhMDNlNTJkNTAyMGQ4OGI0M2RkOThiLi5i
Y2NjMGEwNjBlZWY4Nzk4NjI0MDI1OTE4ZjM5NjY2MjIyNTg4ZGUxIDEwMDY0NAotLS0gYS9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCisrKyBiL1dlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKQEAgLTk0LDcgKzk0
LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0TW9ja0RldmljZU9yaWVudGF0aW9uKGJvb2wgY2Fu
UHJvdmlkZUFscGhhLCBkb3VibGUgYWxwaGEsIGJvb2wgY2FuUHJvdmlkZUJldGEsIGRvdWJsZSBi
ZXRhLCBib29sIGNhblByb3ZpZGVHYW1tYSwgZG91YmxlIGdhbW1hKTsKICAgICB2b2lkIHNldE1v
Y2tHZW9sb2NhdGlvbkVycm9yKGludCBjb2RlLCBKU1N0cmluZ1JlZiBtZXNzYWdlKTsKICAgICB2
b2lkIHNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxv
bmdpdHVkZSwgZG91YmxlIGFjY3VyYWN5KTsKLSAgICB2b2lkIHNldE1vY2tTcGVlY2hJbnB1dFJl
c3VsdChKU1N0cmluZ1JlZiByZXN1bHQpOworICAgIHZvaWQgc2V0TW9ja1NwZWVjaElucHV0UmVz
dWx0KEpTU3RyaW5nUmVmIHJlc3VsdCwgSlNTdHJpbmdSZWYgbGFuZ3VhZ2VUYWcpOwogICAgIHZv
aWQgc2V0UGVyc2lzdGVudFVzZXJTdHlsZVNoZWV0TG9jYXRpb24oSlNTdHJpbmdSZWYgcGF0aCk7
CiAgICAgdm9pZCBzZXRQbHVnaW5zRW5hYmxlZChib29sIGZsYWcpOwogICAgIHZvaWQgc2V0UG9w
dXBCbG9ja2luZ0VuYWJsZWQoYm9vbCBmbGFnKTsKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcCBiL1dlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAppbmRl
eCBkNzc3NGU5OTY3YmU4NjlhNGQzNTM2OTZmYzA0Y2MzZmRmOTgxZGRhLi4zY2NiNzQyNjQwZjRk
MmZhMTQyYTcxODliMzhlZjMzZWJkNDBmYzk0IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKKysrIGIvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCkBA
IC0xNTI1LDEwICsxNTI1LDEwIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFib3J0TW9k
YWwoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhCiB2b2lkIExheW91
dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoY29uc3QgQ3BwQXJndW1l
bnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKIHsKICAgICByZXN1bHQtPnNl
dE51bGwoKTsKLSAgICBpZiAoYXJndW1lbnRzLnNpemUoKSA8IDEgfHwgIWFyZ3VtZW50c1swXS5p
c1N0cmluZygpKQorICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpIDwgMiB8fCAhYXJndW1lbnRzWzBd
LmlzU3RyaW5nKCkgfHwgIWFyZ3VtZW50c1sxXS5pc1N0cmluZygpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBtX3NwZWVjaElucHV0Q29udHJvbGxlck1vY2stPnNldE1vY2tSZWNvZ25pdGlvblJl
c3VsdChjcHBWYXJpYW50VG9XZWJTdHJpbmcoYXJndW1lbnRzWzBdKSk7CisgICAgbV9zcGVlY2hJ
bnB1dENvbnRyb2xsZXJNb2NrLT5zZXRNb2NrUmVjb2duaXRpb25SZXN1bHQoY3BwVmFyaWFudFRv
V2ViU3RyaW5nKGFyZ3VtZW50c1swXSksIGNwcFZhcmlhbnRUb1dlYlN0cmluZyhhcmd1bWVudHNb
MV0pKTsKIH0KIAogV2ViS2l0OjpXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIqIExheW91dFRlc3RD
b250cm9sbGVyOjpzcGVlY2hJbnB1dENvbnRyb2xsZXIoV2ViS2l0OjpXZWJTcGVlY2hJbnB1dExp
c3RlbmVyKiBsaXN0ZW5lcikKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCmluZGV4IGQ4MzEwNzYzZGU2NjRm
Mzk1MjQwNDRlN2Y4NWY3NzU1YmQ0OGYxYzAuLjg2N2YzMjdkNmY2ZTI2ZGUxMjNhMGNlOWYzMzdi
ODhkYzVjZDFlNmIgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9M
YXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcApAQCAtNDg4LDcgKzQ4OCw3IEBAIHZv
aWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbihib29sIGFs
bG93KQogICAgIHNldEdlb2xvY2F0aW9uUGVybWlzc2lvbkNvbW1vbihhbGxvdyk7CiB9CiAKLXZv
aWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdChKU1N0cmlu
Z1JlZiByZXN1bHQpCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrU3BlZWNoSW5w
dXRSZXN1bHQoSlNTdHJpbmdSZWYgcmVzdWx0LCBKU1N0cmluZ1JlZiBsYW5ndWFnZSkKIHsKICAg
ICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBzcGVlY2ggaW5wdXQgbGF5b3V0IHRlc3RzLgogICAg
IC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk0ODUuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70608</attachid>
            <date>2010-10-13 06:54:28 -0700</date>
            <delta_ts>2010-10-13 07:58:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47089-20101013145425.patch</filename>
            <type>text/plain</type>
            <size>36504</size>
            <attacher name="Leandro Graciá Gil">leandrogracia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyN2IzZmFlZWRiYTY5ZTZlNDVlNzNjMjAxMDgwZDUwMDkxYzEzMDBmLi44OTVmMTZl
MDc1YzlkYTI0MDEyYWE5ZmM2N2MzZDQxZWNiNjliMzA3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAK
KzIwMTAtMTAtMTMgIExlYW5kcm8gR3JhY2nDoSBHaWwgIDxsZWFuZHJvZ3JhY2lhQGdvb2dsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
ZWQgYSBsYXlvdXQgdGVzdCBmb3IgdGhlIGxhbmd1YWdlIHRhZyBpbiBzcGVlY2ggaW5wdXQuIFVw
ZGF0ZWQKKyAgICAgICAgdGhlIHNwZWVjaCBidXR0b24gdGVzdHMgdG8gaW5jbHVkZSB0aGUgbmV3
IGxhbmd1YWdlIHBhcmFtZXRlciBpbiB0aGUKKyAgICAgICAgbW9jayByZXN1bHQuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzA4OQorCisgICAgICAg
ICogZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1sYW5ndWFnZS10YWctZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L3NwZWVjaC9pbnB1dC10ZXh0LWxhbmd1YWdlLXRhZy5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L3NwZWVjaC9pbnB1dC10ZXh0LXNwZWVjaGJ1dHRvbi5odG1s
OiBBZGRlZCBhbiBlbXB0eSBsYW5ndWFnZQorICAgICAgICAgIHBhcmFtZXRlci4KKyAgICAgICAg
KiBmYXN0L3NwZWVjaC9zcGVlY2gtYnV0dG9uLWlnbm9yZS1nZW5lcmF0ZWQtZXZlbnRzLmh0bWw6
IEFkZGVkIGFuCisgICAgICAgICAgZW1wdHkgbGFuZ3VhZ2UgcGFyYW1ldGVyLgorICAgICAgICAq
IHBsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dDogbGFuZ3VhZ2UgdGFnIHRl
c3QgaXMgZXhwZWN0ZWQKKyAgICAgICAgICB0byBmYWlsIHVudGlsIHRoZSBjaHJvbWl1bS1zaWRl
IHBhdGNoIGhhcyBiZWVuIGFwcGxpZWQuCisKIDIwMTAtMTAtMTMgIEFsZXhhbmRlciBQYXZsb3Yg
IDxhcGF2bG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIFVucmV2aWV3ZWQs
IGJ1aWxkIGZpeC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL2lucHV0LXRl
eHQtbGFuZ3VhZ2UtdGFnLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL2lu
cHV0LXRleHQtbGFuZ3VhZ2UtdGFnLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MWYzMGQ2OTZm
NWQyNTBmMTRhZjU2Yjk5YjRlNzBjODc5YzBlNTAyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1sYW5ndWFnZS10YWctZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMTMgQEAKK1Rlc3RzIGZvciBsYW5ndWFnZSB0YWcgaW5oZXJpdGFuY2UgYW5kIHZh
bGlkYXRpb24gaW4gc3BlZWNoIGJ1dHRvbnMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzcGVlY2hJbnB1dE5vbmUiKS52YWx1
ZSBpcyAiZXJyb3I6IG5vIHJlc3VsdCBmb3VuZCBmb3IgbGFuZ3VhZ2UgJyciCitQQVNTIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJzcGVlY2hJbnB1dEVsZW1lbnQiKS52YWx1ZSBpcyAiUGljdHVy
ZXMgb2YgdGhlIG1vb24iCitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzcGVlY2hJbnB1
dEluaGVyaXRlZCIpLnZhbHVlIGlzICLmnIjjga7lhpnnnJ8iCitQQVNTIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJzcGVlY2hJbnB1dEludmFsaWQiKS52YWx1ZSBpcyAiZXJyb3I6IG5vIHJlc3Vs
dCBmb3VuZCBmb3IgbGFuZ3VhZ2UgJyciCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKyAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNo
L2lucHV0LXRleHQtbGFuZ3VhZ2UtdGFnLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9p
bnB1dC10ZXh0LWxhbmd1YWdlLXRhZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjliZmM4MjI2MmVlMzBhMmM1
ZmE1ZTI1ODE2MWVhOGExZTE4ZTY1YWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L3NwZWVjaC9pbnB1dC10ZXh0LWxhbmd1YWdlLXRhZy5odG1sCkBAIC0wLDAgKzEsNjIgQEAK
KzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgor
PG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4v
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3Jp
cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KK2Rlc2NyaXB0aW9uKCdUZXN0cyBmb3IgbGFuZ3Vh
Z2UgdGFnIGluaGVyaXRhbmNlIGFuZCB2YWxpZGF0aW9uIGluIHNwZWVjaCBidXR0b25zLicpOwor
CisvLyBOb3RlOiB0ZXN0IGNhc2VzIGFyZSBzZXF1ZW50aWFsIHRvIGVuc3VyZSB0aGF0IG5vIG5l
dyByZWNvZ25pdGlvbiBzdGFydHMgd2hlbiBhbm90aGVyIHJlY29nbml0aW9uIHJlY29yZGluZyBp
cyBhY3RpdmUuCitmdW5jdGlvbiBvbkNoYW5nZU5vbmUoKSB7CisgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCdkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3BlZWNoSW5wdXROb25lIikudmFsdWUn
LCAnZXJyb3I6IG5vIHJlc3VsdCBmb3VuZCBmb3IgbGFuZ3VhZ2UgXCdcJycpOworICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7IHNwZWVjaEJ1dHRvbkNsaWNrKCdzcGVlY2hJbnB1dEVsZW1lbnQn
KTsgfSwgNTApOworfQorCitmdW5jdGlvbiBvbkNoYW5nZUVsZW1lbnQoKSB7CisgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCdkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3BlZWNoSW5wdXRFbGVt
ZW50IikudmFsdWUnLCAnUGljdHVyZXMgb2YgdGhlIG1vb24nKTsKKyAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgeyBzcGVlY2hCdXR0b25DbGljaygnc3BlZWNoSW5wdXRJbmhlcml0ZWQnKTsgfSwg
NTApOworfQorCitmdW5jdGlvbiBvbkNoYW5nZUluaGVyaXRlZCgpIHsKKyAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoJ2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzcGVlY2hJbnB1dEluaGVyaXRl
ZCIpLnZhbHVlJywgJ+aciOOBruWGmeecnycpOworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
IHNwZWVjaEJ1dHRvbkNsaWNrKCdzcGVlY2hJbnB1dEludmFsaWQnKTsgfSwgNTApOworfQorCitm
dW5jdGlvbiBvbkNoYW5nZUludmFsaWQoKSB7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3BlZWNoSW5wdXRJbnZhbGlkIikudmFsdWUnLCAnZXJy
b3I6IG5vIHJlc3VsdCBmb3VuZCBmb3IgbGFuZ3VhZ2UgXCdcJycpOworICAgIGZpbmlzaEpTVGVz
dCgpOworfQorCitmdW5jdGlvbiBzcGVlY2hCdXR0b25DbGljayhlbGVtZW50SWQpIHsKKyAgICB2
YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJZCk7CisgICAgdmFy
IHggPSBlbGVtZW50Lm9mZnNldExlZnQgKyBlbGVtZW50Lm9mZnNldFdpZHRoIC0gNDsKKyAgICB2
YXIgeSA9IGVsZW1lbnQub2Zmc2V0VG9wICsgZWxlbWVudC5vZmZzZXRIZWlnaHQgLyAyOworICAg
IGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93
bigpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKK30KKworZnVuY3Rpb24gcnVuKCkgewor
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIgJiYgd2luZG93LmV2ZW50U2VuZGVy
KSB7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldE1vY2tTcGVlY2hJbnB1dFJlc3Vs
dCgnUGljdHVyZXMgb2YgdGhlIG1vb24nLCAnZW4tR0InKTsKKyAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuc2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KCfmnIjjga7lhpnnnJ8nLCAnamEnKTsK
KyAgICAgICAgc3BlZWNoQnV0dG9uQ2xpY2soJ3NwZWVjaElucHV0Tm9uZScpOworICAgIH0KK30K
Kword2luZG93Lm9ubG9hZCA9IHJ1bjsKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK3dp
bmRvdy5zdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8aW5wdXQgaWQ9InNw
ZWVjaElucHV0Tm9uZSIgeC13ZWJraXQtc3BlZWNoIG9ud2Via2l0c3BlZWNoY2hhbmdlPSJvbkNo
YW5nZU5vbmUoKSI+Cis8aW5wdXQgaWQ9InNwZWVjaElucHV0RWxlbWVudCIgeC13ZWJraXQtc3Bl
ZWNoIG9ud2Via2l0c3BlZWNoY2hhbmdlPSJvbkNoYW5nZUVsZW1lbnQoKSIgbGFuZz0iZW4tR0Ii
PgorPGRpdiBsYW5nPSJqYSI+IDxpbnB1dCBpZD0ic3BlZWNoSW5wdXRJbmhlcml0ZWQiIHgtd2Vi
a2l0LXNwZWVjaCBvbndlYmtpdHNwZWVjaGNoYW5nZT0ib25DaGFuZ2VJbmhlcml0ZWQoKSI+IDwv
ZGl2PgorPGlucHV0IGlkPSJzcGVlY2hJbnB1dEludmFsaWQiIHgtd2Via2l0LXNwZWVjaCBvbndl
YmtpdHNwZWVjaGNoYW5nZT0ib25DaGFuZ2VJbnZhbGlkKCkiIGxhbmc9IjEzMzckw74zzrtrIj4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL2lu
cHV0LXRleHQtc3BlZWNoYnV0dG9uLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9pbnB1
dC10ZXh0LXNwZWVjaGJ1dHRvbi5odG1sCmluZGV4IDZmNWJjNGIxMjFmYjRmOWQ5ZGRhNmMzMzFm
OGIyNmRjMWNkNDM5OTQuLmNlZjc3MDU2YjE3ZDFjZDQ1MWI0OTBiN2MxZjI0NmJhNmM4OTUwZGIg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL2lucHV0LXRleHQtc3BlZWNoYnV0
dG9uLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1zcGVlY2hi
dXR0b24uaHRtbApAQCAtMzIsNyArMzIsNyBAQCBmdW5jdGlvbiBvbldlYmtpdFNwZWVjaENoYW5n
ZSgpIHsKIAogZnVuY3Rpb24gcnVuKCkgewogICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIgJiYgd2luZG93LmV2ZW50U2VuZGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdCgnUGljdHVyZXMgb2YgdGhlIG1vb24nKTsKKyAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KCdQaWN0
dXJlcyBvZiB0aGUgbW9vbicsICcnKTsKIAogICAgICAgICAvLyBDbGlja2luZyB0aGUgc3BlZWNo
IGJ1dHRvbiBzaG91bGQgZmlsbCBpbiBtb2NrIHNwZWVjaC1yZWNvZ25pemVkIHRleHQuCiAgICAg
ICAgIHZhciBpbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzcGVlY2hJbnB1dCcpOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvc3BlZWNoLWJ1dHRvbi1pZ25vcmUt
Z2VuZXJhdGVkLWV2ZW50cy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvc3BlZWNoLWJ1
dHRvbi1pZ25vcmUtZ2VuZXJhdGVkLWV2ZW50cy5odG1sCmluZGV4IGI5YjhlYzM2NjA1NTc5ZjJi
MTI2ZDZmMWRhMzU2MGM2NzJhZDJiNzEuLmM2ODQ4NjM3NzA1MzM5OWIyOWQwNGZjMjk5MDdlNTVl
OGFiZjA2MDggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL3NwZWVjaC1idXR0
b24taWdub3JlLWdlbmVyYXRlZC1ldmVudHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Nw
ZWVjaC9zcGVlY2gtYnV0dG9uLWlnbm9yZS1nZW5lcmF0ZWQtZXZlbnRzLmh0bWwKQEAgLTQ5LDcg
KzQ5LDcgQEAgZnVuY3Rpb24gc2V0dXBEaXNwYXRjaEV2ZW50VGVzdCgpIHsKIGZ1bmN0aW9uIHJ1
bigpIHsKICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyICYmIHdpbmRvdy5ldmVu
dFNlbmRlcikgewogICAgICAgICAvLyBSdW5uaW5nIGluIERSVCwgdGVzdCB0aGUgZXZlbnRTZW5k
ZXIgY2FzZS4KLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja1NwZWVjaElucHV0
UmVzdWx0KCdQaWN0dXJlcyBvZiB0aGUgbW9vbicpOworICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5zZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoJ1BpY3R1cmVzIG9mIHRoZSBtb29uJywgJycp
OwogICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3BlZWNoSW5wdXQnKS5vbndlYmtp
dHNwZWVjaGNoYW5nZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCdkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3BlZWNoSW5wdXQiKS52YWx1ZScsICdQ
aWN0dXJlcyBvZiB0aGUgbW9vbicpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKaW5kZXggNDk1ZWY4MGFjMzhhMjliMzlkYzA4
MWQ5ZjJiM2UzZDc0MmJjNTExNi4uOGFiYmEwZWFjNTdlOWIxODhhM2MxNzUwNDU0NDFmNTM4NjAx
NzQ5NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBl
Y3RhdGlvbnMudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhw
ZWN0YXRpb25zLnR4dApAQCAtMzIyNSwzICszMjI1LDYgQEAgQlVHNTg5NDIgOiBmYXN0L2RvbS9w
cm90b3R5cGUtaW5oZXJpdGFuY2UuaHRtbCA9IFRFWFQKIAogLy8gU3RhcnRlZCBmYWlsaW5nIGF0
IFdlYmtpdCByNjk2MjguCiBCVUc0NzU3OCA6IHByaW50aW5nL3NpbXVsdGFuZW91cy1wb3NpdGlv
bi1mbG9hdC1jaGFuZ2UuaHRtbCA9IElNQUdFK1RFWFQKKworLy8gVGVtcG9yYXJpbHkgZGlzYWJs
ZWQgZm9yIGEgNC1zaWRlZCBwYXRjaAorQlVHV0s0NzA4OSA6IGZhc3Qvc3BlZWNoL2lucHV0LXRl
eHQtbGFuZ3VhZ2UtdGFnLmh0bWwgPSBGQUlMCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDEzMGJkZTQxOTVmMjk0OWZlYmU4Yzc5NGMzNjJj
MjdiYWNhZGYzZWQuLjExOTY1NzkwNTQ4YTU2YmZhYmMyMDI3N2UxMjYyNWZlOWNmOGE3ZTkgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNDAgQEAKKzIwMTAtMTAtMTMgIExlYW5kcm8gR3JhY2nDoSBHaWwgIDxsZWFuZHJvZ3Jh
Y2lhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgUGF0Y2ggdGhlIGN1cnJlbnQgc3BlZWNoIGlucHV0IGltcGxlbWVudGF0aW9uIHRv
IHVzZSBhbmQgdmFsaWRhdGUgdGhlCisgICAgICAgIG5lYXJlc3QgbGFuZ3VhZ2UgdGFnLiBUaGUg
bGFuZ3VhZ2UgaXMgbm93IHBhc3NlZCB0byB0aGUgc3RhcnRSZWNvZ25pdGlvbgorICAgICAgICBt
ZXRob2RzIHNvIHRoYXQgbGFuZ3VhZ2Utc3BlY2lmaWMgcmVjb2duaXRpb24gY291bGQgYmUgdXNl
ZC4gQWxzbyBhZGRlZAorICAgICAgICBhIHNlY29uZCBwYXJhbWV0ZXIgdG8gc2V0TW9ja1NwZWVj
aElucHV0UmVzdWx0IGZvciB0aGUgbGFuZ3VhZ2UgdXNlZCBpbgorICAgICAgICBzcGVlY2ggcmVj
b2duaXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD00NzA4OQorCisgICAgICAgIFRoaXMgaXMgdGhlIDJuZCBvZiBhIDQtc2lkZWQgcGF0Y2ggaW4g
Q2hyb21pdW0gYW5kIFdlYktpdC4gRm9yIG1vcmUKKyAgICAgICAgZGV0YWlscyBzZWUgaHR0cDov
L2NvZGVyZXZpZXcuY2hyb21pdW0ub3JnLzM2MTUwMDUvc2hvdyBhbmQKKyAgICAgICAgaHR0cDov
L2NvZGVyZXZpZXcuY2hyb21pdW0ub3JnLzM1OTUwMTgvc2hvdy4KKworICAgICAgICBUZXN0OiBm
YXN0L3NwZWVjaC9pbnB1dC10ZXh0LWxhbmd1YWdlLXRhZy5odG1sCisKKyAgICAgICAgKiBkb20v
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojpjb21wdXRlSW5oZXJpdGVk
TGFuZ3VhZ2UpOiBpbmNsdWRlcyBhIGJyaWVmIGNoYXJhY3RlcgorICAgICAgICAgIHZhbGlkYXRp
b24gZm9yIHRoZSBCQ1AgNDcgbGFuZ3VhZ2UgdGFnLgorICAgICAgICAqIHBhZ2UvU3BlZWNoSW5w
dXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoSW5wdXQ6OnN0YXJ0UmVjb2duaXRpb24p
OgorICAgICAgICAqIHBhZ2UvU3BlZWNoSW5wdXQuaDoKKyAgICAgICAgKiBwYWdlL1NwZWVjaElu
cHV0Q2xpZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9TcGVlY2hJbnB1dENsaWVudE1v
Y2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoSW5wdXRDbGllbnRNb2NrOjpzdGFydFJl
Y29nbml0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaElucHV0Q2xpZW50TW9jazo6c2V0
UmVjb2duaXRpb25SZXN1bHQpOiByZXN1bHRzIGFyZSBub3cKKyAgICAgICAgICBzdG9yZWQgYnkg
bGFuZ3VhZ2UgdXNpbmcgYSBoYXNoIG1hcC4KKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaElucHV0
Q2xpZW50TW9jazo6dGltZXJGaXJlZCk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9TcGVlY2hJ
bnB1dENsaWVudE1vY2suaDoKKyAgICAgICAgKiByZW5kZXJpbmcvVGV4dENvbnRyb2xJbm5lckVs
ZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb250cm9sSW5uZXJFbGVtZW50Ojph
dHRhY2hJbm5lckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoRmllbGRDYW5jZWxC
dXR0b25FbGVtZW50OjpkZXRhY2gpOgorICAgICAgICAoV2ViQ29yZTo6U3BpbkJ1dHRvbkVsZW1l
bnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRGaWVsZFNw
ZWVjaEJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQ6OmRldGFjaCk6CisKIDIwMTAtMTAtMTMg
IEplbm4gQnJhaXRod2FpdGUgIDxqZW5uYkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgRG1pdHJ5IFRpdG92LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAg
Yi9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCA2N2UwZmQwYWM1YjM1ZDEyZGQ1MGFhNDU0
OWZiM2M4ZjlkNWEyYzgxLi5kM2Q3ZGI5Yzg0ZjA0M2Q1YTc3ZDA3OTgwMzI0OWU3ZGM5YjkwOGQ4
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2RvbS9F
bGVtZW50LmNwcApAQCAtNTYsNiArNTYsNyBAQAogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5j
bHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiWE1MTmFtZXMuaCIKKyNpbmNsdWRlIDx3
dGYvQVNDSUlDVHlwZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogI2lmIEVO
QUJMRShTVkcpCkBAIC0xNDczLDYgKzE0NzQsMTUgQEAgQXRvbWljU3RyaW5nIEVsZW1lbnQ6OmNv
bXB1dGVJbmhlcml0ZWRMYW5ndWFnZSgpIGNvbnN0CiAgICAgICAgIG4gPSBuLT5wYXJlbnQoKTsK
ICAgICB9CiAKKyAgICBpZiAoIXZhbHVlLmlzTnVsbCgpICYmICF2YWx1ZS5pc0VtcHR5KCkpIHsK
KyAgICAgICAgLy8gT25seSBBLVphLXowLTkgYW5kICctJyBhcmUgYWxsb3dlZCBpbiB0aGUgbGFu
Z3VhZ2UgdGFnIChzZWUgQkNQIDQ3KQorICAgICAgICBjb25zdCBjaGFyICpwID0gdmFsdWUuc3Ry
aW5nKCkuYXNjaWkoKS5kYXRhKCk7CisgICAgICAgIGZvciAoOyAqcCAhPSAnXDAnOyArK3ApIHsK
KyAgICAgICAgICAgIGlmICghaXNBU0NJSUFscGhhbnVtZXJpYygqcCkgJiYgKnAgIT0gJy0nKQor
ICAgICAgICAgICAgICAgIHJldHVybiBBdG9taWNTdHJpbmcoKTsKKyAgICAgICAgfQorICAgIH0K
KwogICAgIHJldHVybiB2YWx1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL1NwZWVj
aElucHV0LmNwcCBiL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dC5jcHAKaW5kZXggMjM0NzkxYmM0
YjEzZjQzZGY5ZDE3MzlkNWQyMDVmOWFhMjdlMjA3Mi4uY2M1ZTBmOTdmYmFiZjlhZmEzZjQzNTlj
NzI2YmFjODdlNTM0MThjZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0LmNw
cAorKysgYi9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXQuY3BwCkBAIC05MywxMCArOTMsMTAgQEAg
dm9pZCBTcGVlY2hJbnB1dDo6c2V0UmVjb2duaXRpb25SZXN1bHQoaW50IGxpc3RlbmVySWQsIGNv
bnN0IFN0cmluZyYgcmVzdWx0KQogICAgICAgICBtX2xpc3RlbmVycy5nZXQobGlzdGVuZXJJZCkt
PnNldFJlY29nbml0aW9uUmVzdWx0KGxpc3RlbmVySWQsIHJlc3VsdCk7CiB9CiAKLWJvb2wgU3Bl
ZWNoSW5wdXQ6OnN0YXJ0UmVjb2duaXRpb24oaW50IGxpc3RlbmVySWQsIGNvbnN0IEludFJlY3Qm
IGVsZW1lbnRSZWN0KQorYm9vbCBTcGVlY2hJbnB1dDo6c3RhcnRSZWNvZ25pdGlvbihpbnQgbGlz
dGVuZXJJZCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSwgY29uc3QgSW50UmVjdCYgZWxlbWVudFJl
Y3QpCiB7CiAgICAgQVNTRVJUKG1fbGlzdGVuZXJzLmNvbnRhaW5zKGxpc3RlbmVySWQpKTsKLSAg
ICByZXR1cm4gbV9jbGllbnQtPnN0YXJ0UmVjb2duaXRpb24obGlzdGVuZXJJZCwgZWxlbWVudFJl
Y3QpOworICAgIHJldHVybiBtX2NsaWVudC0+c3RhcnRSZWNvZ25pdGlvbihsaXN0ZW5lcklkLCBs
YW5ndWFnZSwgZWxlbWVudFJlY3QpOwogfQogCiB2b2lkIFNwZWVjaElucHV0OjpzdG9wUmVjb3Jk
aW5nKGludCBsaXN0ZW5lcklkKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0
LmggYi9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXQuaAppbmRleCBkMTBiNzg5YWFkMjczOWVkZDNi
ZjQ1MzBlN2M2ZTAwYzRlMmRhZThhLi44YjQyNmY1NjMxMzZlZDY1MWRkNjQ1NmU4MzViNGQ0NDUz
YWI4MDEyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXQuaAorKysgYi9XZWJD
b3JlL3BhZ2UvU3BlZWNoSW5wdXQuaApAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCB1bnJlZ2lzdGVyTGlzdGVuZXIoaW50KTsKIAogICAgIC8vIE1ldGhvZHMgaW52b2tlZCBieSB0
aGUgaW5wdXQgZWxlbWVudHMuCi0gICAgYm9vbCBzdGFydFJlY29nbml0aW9uKGludCwgY29uc3Qg
SW50UmVjdCYpOworICAgIGJvb2wgc3RhcnRSZWNvZ25pdGlvbihpbnQsIGNvbnN0IFN0cmluZyYs
IGNvbnN0IEludFJlY3QmKTsKICAgICB2b2lkIHN0b3BSZWNvcmRpbmcoaW50KTsKICAgICB2b2lk
IGNhbmNlbFJlY29nbml0aW9uKGludCk7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9TcGVl
Y2hJbnB1dENsaWVudC5oIGIvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0Q2xpZW50LmgKaW5kZXgg
ZDVmZGExN2ZhYTJjZDc5NWFmNDRmNTNhNDZmY2JhNTk3NDFhYjc2Yy4uMzhiZmU0ZmM0NTUyOWYw
MDcyMjQzZmVhZDhmN2JjNmZhOWRhYTZmYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1NwZWVj
aElucHV0Q2xpZW50LmgKKysrIGIvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0Q2xpZW50LmgKQEAg
LTMzLDYgKzMzLDEwIEBACiAKICNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQogCituYW1lc3BhY2Ug
V1RGIHsKK2NsYXNzIFN0cmluZzsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJ
bnRSZWN0OwpAQCAtNDgsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldExp
c3RlbmVyKFNwZWVjaElucHV0TGlzdGVuZXIqKSA9IDA7CiAKICAgICAvLyBTdGFydHMgc3BlZWNo
IHJlY29nbml0aW9uIGFuZCBhdWRpbyByZWNvcmRpbmcuCi0gICAgdmlydHVhbCBib29sIHN0YXJ0
UmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCwgY29uc3QgSW50UmVjdCYgZWxlbWVudFJlY3QpID0g
MDsKKyAgICB2aXJ0dWFsIGJvb2wgc3RhcnRSZWNvZ25pdGlvbihpbnQgcmVxdWVzdElkLCBjb25z
dCBXVEY6OlN0cmluZyYgbGFuZ3VhZ2UsIGNvbnN0IEludFJlY3QmIGVsZW1lbnRSZWN0KSA9IDA7
CiAKICAgICAvLyBTdG9wcyBhdWRpbyByZWNvcmRpbmcgYW5kIHBlcmZvcm1zIHJlY29nbml0aW9u
IHdpdGggdGhlIGF1ZGlvIHJlY29yZGVkIHVudGlsIG5vdwogICAgIC8vIChkb2VzIG5vdCBkaXNj
YXJkIGF1ZGlvKS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TcGVlY2hJbnB1
dENsaWVudE1vY2suY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xpZW50
TW9jay5jcHAKaW5kZXggNmI2NDk0MmYxN2I5MjViNDllZjA5MjE0N2MwYTE2YTA3ZjBkN2NjYy4u
YzA0OTcxZTBhOTQzODU1YThjZmNkMWQxYzI0NTYzMmJhODIxYjEwYSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xpZW50TW9jay5jcHAKKysrIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xpZW50TW9jay5jcHAKQEAgLTM1LDYgKzM1LDEx
IEBACiAKICNpbmNsdWRlICJTcGVlY2hJbnB1dExpc3RlbmVyLmgiCiAKK25hbWVzcGFjZSB7Cisg
ICAgLy8gSGFzaE1hcCBkb2Vzbid0IHN1cHBvcnQgZW1wdHkgc3RyaW5ncyBhcyBrZXlzLCBzbyB0
aGlzIHZhbHVlIChhbiBpbnZhbGlkIEJDUDQ3IHRhZykgaXMgdXNlZCBmb3IgdGhvc2UgY2FzZXMu
CisgICAgY29uc3QgU3RyaW5nIGVtcHR5TGFuZ3VhZ2UgPSAiXyI7Cit9CisKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogU3BlZWNoSW5wdXRDbGllbnRNb2NrOjpTcGVlY2hJbnB1dENsaWVudE1vY2so
KQpAQCAtNTAsMTIgKzU1LDEzIEBAIHZvaWQgU3BlZWNoSW5wdXRDbGllbnRNb2NrOjpzZXRMaXN0
ZW5lcihTcGVlY2hJbnB1dExpc3RlbmVyKiBsaXN0ZW5lcikKICAgICBtX2xpc3RlbmVyID0gbGlz
dGVuZXI7CiB9CiAKLWJvb2wgU3BlZWNoSW5wdXRDbGllbnRNb2NrOjpzdGFydFJlY29nbml0aW9u
KGludCByZXF1ZXN0SWQsIGNvbnN0IEludFJlY3QmKQorYm9vbCBTcGVlY2hJbnB1dENsaWVudE1v
Y2s6OnN0YXJ0UmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBsYW5ndWFn
ZSwgY29uc3QgSW50UmVjdCYpCiB7CiAgICAgaWYgKG1fdGltZXIuaXNBY3RpdmUoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIG1fcmVxdWVzdElkID0gcmVxdWVzdElkOwogICAgIG1fcmVj
b3JkaW5nID0gdHJ1ZTsKKyAgICBtX2xhbmd1YWdlID0gbGFuZ3VhZ2U7CiAgICAgbV90aW1lci5z
dGFydE9uZVNob3QoMCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC04MCw5ICs4NiwxMiBAQCB2
b2lkIFNwZWVjaElucHV0Q2xpZW50TW9jazo6Y2FuY2VsUmVjb2duaXRpb24oaW50IHJlcXVlc3RJ
ZCkKICAgICB9CiB9CiAKLXZvaWQgU3BlZWNoSW5wdXRDbGllbnRNb2NrOjpzZXRSZWNvZ25pdGlv
blJlc3VsdChjb25zdCBTdHJpbmcmIHJlc3VsdCkKK3ZvaWQgU3BlZWNoSW5wdXRDbGllbnRNb2Nr
OjpzZXRSZWNvZ25pdGlvblJlc3VsdChjb25zdCBTdHJpbmcmIHJlc3VsdCwgY29uc3QgU3RyaW5n
JiBsYW5ndWFnZSkKIHsKLSAgICBtX3JlY29nbml0aW9uUmVzdWx0ID0gcmVzdWx0OworICAgIGlm
IChsYW5ndWFnZS5pc0VtcHR5KCkpCisgICAgICAgIG1fcmVjb2duaXRpb25SZXN1bHQuc2V0KGVt
cHR5TGFuZ3VhZ2UsIHJlc3VsdCk7CisgICAgZWxzZQorICAgICAgICBtX3JlY29nbml0aW9uUmVz
dWx0LnNldChsYW5ndWFnZSwgcmVzdWx0KTsKIH0KIAogdm9pZCBTcGVlY2hJbnB1dENsaWVudE1v
Y2s6OnRpbWVyRmlyZWQoV2ViQ29yZTo6VGltZXI8U3BlZWNoSW5wdXRDbGllbnRNb2NrPiopCkBA
IC05Miw3ICsxMDEsMTcgQEAgdm9pZCBTcGVlY2hJbnB1dENsaWVudE1vY2s6OnRpbWVyRmlyZWQo
V2ViQ29yZTo6VGltZXI8U3BlZWNoSW5wdXRDbGllbnRNb2NrPiopCiAgICAgICAgIG1fbGlzdGVu
ZXItPmRpZENvbXBsZXRlUmVjb3JkaW5nKG1fcmVxdWVzdElkKTsKICAgICAgICAgbV90aW1lci5z
dGFydE9uZVNob3QoMCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgbV9saXN0ZW5lci0+c2V0UmVj
b2duaXRpb25SZXN1bHQobV9yZXF1ZXN0SWQsIG1fcmVjb2duaXRpb25SZXN1bHQpOworICAgICAg
ICBTdHJpbmcgbGFuZ3VhZ2UgPSBtX2xhbmd1YWdlLmlzRW1wdHkoKSA/IFN0cmluZyhlbXB0eUxh
bmd1YWdlKSA6IG1fbGFuZ3VhZ2U7CisgICAgICAgIGlmICghbV9yZWNvZ25pdGlvblJlc3VsdC5j
b250YWlucyhsYW5ndWFnZSkpIHsKKyAgICAgICAgICAgIC8vIENhbid0IGF2b2lkIHNldHRpbmcg
YSByZXN1bHQgb24gZW1wdHkgb3IgaW52YWxpZCBsYW5ndWFnZSBzdHJpbmdzLgorICAgICAgICAg
ICAgLy8gVGhpcyB3b3VsZCBhdm9pZCBnZW5lcmF0aW5nIHRoZSBldmVudHMgdXNlZCB0byBjaGVj
ayB0aGUgcmVzdWx0cyBhbmQgdGhlIHRlc3Qgd291bGQgdGltZW91dC4KKyAgICAgICAgICAgIFN0
cmluZyBlcnJvcigiZXJyb3I6IG5vIHJlc3VsdCBmb3VuZCBmb3IgbGFuZ3VhZ2UgJyIpOworICAg
ICAgICAgICAgZXJyb3IuYXBwZW5kKG1fbGFuZ3VhZ2UpOworICAgICAgICAgICAgZXJyb3IuYXBw
ZW5kKCInIik7CisgICAgICAgICAgICBtX2xpc3RlbmVyLT5zZXRSZWNvZ25pdGlvblJlc3VsdCht
X3JlcXVlc3RJZCwgZXJyb3IpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1fbGlzdGVu
ZXItPnNldFJlY29nbml0aW9uUmVzdWx0KG1fcmVxdWVzdElkLCBtX3JlY29nbml0aW9uUmVzdWx0
LmdldChsYW5ndWFnZSkpOworCiAgICAgICAgIG1fbGlzdGVuZXItPmRpZENvbXBsZXRlUmVjb2du
aXRpb24obV9yZXF1ZXN0SWQpOwogICAgICAgICBtX3JlcXVlc3RJZCA9IDA7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xpZW50TW9jay5oIGIv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xpZW50TW9jay5oCmluZGV4IGNlODNk
M2JiOWNiODhiMGEzYTk1YjU0OTU0MjdkMjk5MWYyZTBiNGYuLjNjZTk4N2I4MjNjZDE5ODAyODY2
OWM3NzlmM2M0NzljNDczY2I3ZWQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9T
cGVlY2hJbnB1dENsaWVudE1vY2suaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL21vY2svU3BlZWNo
SW5wdXRDbGllbnRNb2NrLmgKQEAgLTM0LDYgKzM0LDggQEAKICNpbmNsdWRlICJQbGF0Zm9ybVN0
cmluZy5oIgogI2luY2x1ZGUgIlNwZWVjaElucHV0Q2xpZW50LmgiCiAjaW5jbHVkZSAiVGltZXIu
aCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hh
c2guaD4KIAogI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCiAKQEAgLTQ2LDExICs0OCwxMSBAQCBj
bGFzcyBTcGVlY2hJbnB1dENsaWVudE1vY2sgOiBwdWJsaWMgU3BlZWNoSW5wdXRDbGllbnQgewog
cHVibGljOgogICAgIFNwZWVjaElucHV0Q2xpZW50TW9jaygpOwogCi0gICAgdm9pZCBzZXRSZWNv
Z25pdGlvblJlc3VsdChjb25zdCBTdHJpbmcmIHJlc3VsdCk7CisgICAgdm9pZCBzZXRSZWNvZ25p
dGlvblJlc3VsdChjb25zdCBTdHJpbmcmIHJlc3VsdCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSk7
CiAKICAgICAvLyBTcGVlY2hJbnB1dENsaWVudCBtZXRob2RzLgogICAgIHZvaWQgc2V0TGlzdGVu
ZXIoU3BlZWNoSW5wdXRMaXN0ZW5lciopOwotICAgIGJvb2wgc3RhcnRSZWNvZ25pdGlvbihpbnQs
IGNvbnN0IEludFJlY3QmKTsKKyAgICBib29sIHN0YXJ0UmVjb2duaXRpb24oaW50LCBjb25zdCBT
dHJpbmcmLCBjb25zdCBJbnRSZWN0Jik7CiAgICAgdm9pZCBzdG9wUmVjb3JkaW5nKGludCk7CiAg
ICAgdm9pZCBjYW5jZWxSZWNvZ25pdGlvbihpbnQpOwogCkBAIC02MSw3ICs2Myw5IEBAIHByaXZh
dGU6CiAgICAgVGltZXI8U3BlZWNoSW5wdXRDbGllbnRNb2NrPiBtX3RpbWVyOwogICAgIFNwZWVj
aElucHV0TGlzdGVuZXIqIG1fbGlzdGVuZXI7CiAgICAgaW50IG1fcmVxdWVzdElkOwotICAgIFN0
cmluZyBtX3JlY29nbml0aW9uUmVzdWx0OworCisgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4g
bV9yZWNvZ25pdGlvblJlc3VsdDsKKyAgICBTdHJpbmcgbV9sYW5ndWFnZTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRDb250
cm9sSW5uZXJFbGVtZW50cy5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Q29udHJvbElubmVy
RWxlbWVudHMuY3BwCmluZGV4IDVkNWI4YjMwYjQxMTA1MjBkMWE0ZGU3YjhhNzljNDg1ZDc5MzY2
MDguLjY1ZDBhNjQ2MDlkMjAzNGIxMDk5NTAzZDE2OTE1MWFiZTY2ZGFhM2UgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcmVuZGVyaW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKKysrIGIvV2Vi
Q29yZS9yZW5kZXJpbmcvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcApAQCAtMjEsOSArMjEs
OSBAQAogICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQogICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwotIAorCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgiCiAKQEAgLTEwNywxOCArMTA3LDE4IEBA
IHZvaWQgVGV4dENvbnRyb2xJbm5lckVsZW1lbnQ6OmF0dGFjaElubmVyRWxlbWVudChOb2RlKiBw
YXJlbnQsIFBhc3NSZWZQdHI8UmVuZGVyCiAgICAgICAgIHNldFJlbmRlcmVyKHJlbmRlcmVyKTsK
ICAgICAgICAgcmVuZGVyZXItPnNldFN0eWxlKHN0eWxlKTsKICAgICB9Ci0gICAgCisKICAgICAv
LyBTZXQgdGhlc2UgZXhwbGljaXRseSBzaW5jZSB0aGlzIG5vcm1hbGx5IGhhcHBlbnMgZHVyaW5n
IGFuIGF0dGFjaCgpCiAgICAgc2V0QXR0YWNoZWQoKTsKICAgICBzZXRJbkRvY3VtZW50KCk7Ci0g
ICAgCisKICAgICAvLyBGb3IgZWxlbWVudHMgd2l0aG91dCBhIHNoYWRvdyBwYXJlbnQsIGFkZCB0
aGUgbm9kZSB0byB0aGUgRE9NIG5vcm1hbGx5LgogICAgIGlmICghbV9zaGFkb3dQYXJlbnQpIHsK
ICAgICAgICAgLy8gRklYTUU6IFRoaXMgY29kZSBzZWVtcyB2ZXJ5IHdyb25nLiAgV2h5IGFyZSB3
ZSBtYWdpY2FsbHkgYWRkaW5nIHx0aGlzfCB0byB0aGUgRE9NIGhlcmU/CiAgICAgICAgIC8vICAg
ICAgICBXZSBzaG91bGRuJ3QgYmUgY2FsbGluZyBwYXJzZXIgQVBJIG1ldGhvZHMgb3V0c2lkZSBv
ZiB0aGUgcGFyc2VyIQogICAgICAgICBwYXJlbnQtPmRlcHJlY2F0ZWRQYXJzZXJBZGRDaGlsZCh0
aGlzKTsKICAgICB9Ci0gCisKICAgICAvLyBBZGQgdGhlIHJlbmRlcmVyIHRvIHRoZSByZW5kZXIg
dHJlZQogICAgIGlmIChyZW5kZXJlcikKICAgICAgICAgcGFyZW50LT5yZW5kZXJlcigpLT5hZGRD
aGlsZChyZW5kZXJlcik7CkBAIC0yMDgsNyArMjA4LDcgQEAgdm9pZCBTZWFyY2hGaWVsZENhbmNl
bEJ1dHRvbkVsZW1lbnQ6OmRldGFjaCgpCiB7CiAgICAgaWYgKG1fY2FwdHVyaW5nKSB7CiAgICAg
ICAgIGlmIChGcmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLT5mcmFtZSgpKQotICAgICAgICAgICAg
ZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5zZXRDYXB0dXJpbmdNb3VzZUV2ZW50c05vZGUoMCk7ICAg
ICAgCisgICAgICAgICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPnNldENhcHR1cmluZ01vdXNl
RXZlbnRzTm9kZSgwKTsKICAgICB9CiAgICAgVGV4dENvbnRyb2xJbm5lckVsZW1lbnQ6OmRldGFj
aCgpOwogfQpAQCAtMjgxLDkgKzI4MSw5IEBAIHZvaWQgU3BpbkJ1dHRvbkVsZW1lbnQ6OmRlZmF1
bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogICAgIGlmICghYm94KSB7CiAgICAgICAgIGlm
ICghZXZlbnQtPmRlZmF1bHRIYW5kbGVkKCkpCiAgICAgICAgICAgICBIVE1MRGl2RWxlbWVudDo6
ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVudCk7Ci0gICAgICAgIHJldHVybjsgICAgICAgIAorICAg
ICAgICByZXR1cm47CiAgICAgfQotICAgIAorCiAgICAgSFRNTElucHV0RWxlbWVudCogaW5wdXQg
PSBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4oc2hhZG93QW5jZXN0b3JOb2RlKCkpOwog
ICAgIGlmIChpbnB1dC0+ZGlzYWJsZWQoKSB8fCBpbnB1dC0+aXNSZWFkT25seUZvcm1Db250cm9s
KCkpIHsKICAgICAgICAgaWYgKCFldmVudC0+ZGVmYXVsdEhhbmRsZWQoKSkKQEAgLTQzMSw3ICs0
MzEsNyBAQCB2b2lkIElucHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRI
YW5kbGVyKEV2ZW50KiBldmVudCkKICAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVz
KCkuY2xpY2tFdmVudCkgewogICAgICAgICBzd2l0Y2ggKG1fc3RhdGUpIHsKICAgICAgICAgY2Fz
ZSBJZGxlOgotICAgICAgICAgICAgaWYgKHNwZWVjaElucHV0KCktPnN0YXJ0UmVjb2duaXRpb24o
bV9saXN0ZW5lcklkLCBpbnB1dC0+cmVuZGVyZXIoKS0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3Qo
KSkpCisgICAgICAgICAgICBpZiAoc3BlZWNoSW5wdXQoKS0+c3RhcnRSZWNvZ25pdGlvbihtX2xp
c3RlbmVySWQsIGlucHV0LT5jb21wdXRlSW5oZXJpdGVkTGFuZ3VhZ2UoKSwgaW5wdXQtPnJlbmRl
cmVyKCktPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCkpKQogICAgICAgICAgICAgICAgIHNldFN0
YXRlKFJlY29yZGluZyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBSZWNvcmRp
bmc6CkBAIC00ODcsNyArNDg3LDcgQEAgdm9pZCBJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVu
dDo6ZGV0YWNoKCkKIHsKICAgICBpZiAobV9jYXB0dXJpbmcpIHsKICAgICAgICAgaWYgKEZyYW1l
KiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCkpCi0gICAgICAgICAgICBmcmFtZS0+ZXZlbnRI
YW5kbGVyKCktPnNldENhcHR1cmluZ01vdXNlRXZlbnRzTm9kZSgwKTsgICAgICAKKyAgICAgICAg
ICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+c2V0Q2FwdHVyaW5nTW91c2VFdmVudHNOb2RlKDAp
OwogICAgIH0KIAogICAgIGlmIChtX3N0YXRlICE9IElkbGUpCmRpZmYgLS1naXQgYS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAxODBl
MzMwYTc4MjlhMTk0YmVlNGUyMzdkZmNkNzJkYzc1N2I4ODcxLi5hMGRiN2JmN2IxZDhlNTkyN2M4
NTRjYThiNmJiMjQ3OGFjODI0MmY4IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCisrKyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAx
MC0xMC0xMyAgTGVhbmRybyBHcmFjacOhIEdpbCAgPGxlYW5kcm9ncmFjaWFAZ29vZ2xlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXRjaCB0
aGUgY3VycmVudCBzcGVlY2ggaW5wdXQgaW1wbGVtZW50YXRpb24gdG8gdXNlIGFuZCB2YWxpZGF0
ZSB0aGUKKyAgICAgICAgbmVhcmVzdCBsYW5ndWFnZSB0YWcuIFRoZSBsYW5ndWFnZSBpcyBub3cg
cGFzc2VkIHRvIHRoZSBzdGFydFJlY29nbml0aW9uCisgICAgICAgIG1ldGhvZHMgc28gdGhhdCBs
YW5ndWFnZS1zcGVjaWZpYyByZWNvZ25pdGlvbiBjb3VsZCBiZSB1c2VkLiBBbHNvIGFkZGVkCisg
ICAgICAgIGEgc2Vjb25kIHBhcmFtZXRlciB0byBzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQgZm9y
IHRoZSBsYW5ndWFnZSB1c2VkIGluCisgICAgICAgIHNwZWVjaCByZWNvZ25pdGlvbi4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3MDg5CisKKyAgICAg
ICAgVGhpcyBpcyB0aGUgMm5kIG9mIGEgNC1zaWRlZCBwYXRjaCBpbiBDaHJvbWl1bSBhbmQgV2Vi
S2l0LiBGb3IgbW9yZQorICAgICAgICBkZXRhaWxzIHNlZSBodHRwOi8vY29kZXJldmlldy5jaHJv
bWl1bS5vcmcvMzYxNTAwNS9zaG93IGFuZAorICAgICAgICBodHRwOi8vY29kZXJldmlldy5jaHJv
bWl1bS5vcmcvMzU5NTAxOC9zaG93LgorCisgICAgICAgICogcHVibGljL1dlYlNwZWVjaElucHV0
Q29udHJvbGxlci5oOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXI6
OnN0YXJ0UmVjb2duaXRpb24pOgorICAgICAgICAqIHB1YmxpYy9XZWJTcGVlY2hJbnB1dENvbnRy
b2xsZXJNb2NrLmg6CisgICAgICAgICogc3JjL1NwZWVjaElucHV0Q2xpZW50SW1wbC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlNwZWVjaElucHV0Q2xpZW50SW1wbDo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYktpdDo6U3BlZWNoSW5wdXRDbGllbnRJbXBsOjpzdGFydFJlY29nbml0aW9uKToKKyAgICAg
ICAgKiBzcmMvU3BlZWNoSW5wdXRDbGllbnRJbXBsLmg6CisgICAgICAgICogc3JjL1dlYlNwZWVj
aElucHV0Q29udHJvbGxlck1vY2tJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNo
SW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OnNldE1vY2tSZWNvZ25pdGlvblJlc3VsdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsOjpzdGFydFJlY29n
bml0aW9uKToKKyAgICAgICAgKiBzcmMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGwu
aDoKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3SW1wbDo6V2ViVmlld0ltcGwpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5oOgorCiAy
MDEwLTEwLTEyICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xlLmNvbT4KIAogICAgICAgICBV
bnJldmlld2VkLiBGaXhlcyBmb3IgYWxsIFdlYkdMIGNvbnRlbnQgY2F1c2luZyBhc3NlcnRpb24g
ZmFpbHVyZXMKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoSW5w
dXRDb250cm9sbGVyLmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaElucHV0Q29u
dHJvbGxlci5oCmluZGV4IDU0MDg3NDFhM2M5NGQzYmYxYzU0M2Q5NmU5ZmMxNmE2MzkwZGIwMmYu
LjFmZGUyYThlNzc0ZjMyZTU4Zjg4NzJmMjQ4MjIyMzA1OWM4OGMxNDcgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyLmgKKysrIGIvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIuaApAQCAtMzUsNiAr
MzUsNyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgV2ViU3RyaW5nOwogc3RydWN0
IFdlYlJlY3Q7CiAKIC8vIFByb3ZpZGVzIGFuIGVtYmVkZGVyIEFQSSBjYWxsZWQgYnkgV2ViS2l0
LgpAQCAtNDMsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgLy8gU3RhcnRzIHNwZWVjaCByZWNvZ25p
dGlvbi4gU3BlZWNoIHdpbGwgZ2V0IHJlY29yZGVkIHVudGlsIHRoZSBlbmRwb2ludGVyIGRldGVj
dHMgc2lsZW5jZSwKICAgICAvLyBydW5zIHRvIHRoZSBsaW1pdCBvciBzdG9wUmVjb3JkaW5nIGlz
IGNhbGxlZC4gUHJvZ3Jlc3MgaW5kaWNhdGlvbnMgYW5kIHRoZSByZWNvZ25pemVkCiAgICAgLy8g
dGV4dCBhcmUgcmV0dXJuZWQgdmlhIHRoZSBsaXN0ZW5lciBpbnRlcmZhY2UuCi0gICAgdmlydHVh
bCBib29sIHN0YXJ0UmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCwgY29uc3QgV2ViUmVjdCYpCisg
ICAgdmlydHVhbCBib29sIHN0YXJ0UmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCwgY29uc3QgV2Vi
U3RyaW5nJiBsYW5ndWFnZSwgY29uc3QgV2ViUmVjdCYgZWxlbWVudFJlY3QpCiAgICAgewogICAg
ICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoSW5wdXRDb250cm9s
bGVyTW9jay5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xs
ZXJNb2NrLmgKaW5kZXggOWEyNjIzNWZmNmQ1ZGNjYmJlMjQ3MjYyYWU0NGEzYWM3Mzk3YzNmNC4u
YjRjNTBhMDVkY2Y1YTEyZjg0MWJmOWI2NzU1Y2QyODgxN2Y4YzA4YiAxMDA2NDQKLS0tIGEvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrLmgKKysrIGIv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrLmgKQEAg
LTQ0LDYgKzQ0LDEwIEBAIHB1YmxpYzoKICAgICAgICAgV2ViU3BlZWNoSW5wdXRMaXN0ZW5lciog
bGlzdGVuZXIpOwogICAgIHZpcnR1YWwgfldlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2soKSB7
IH0KIAorICAgIHZpcnR1YWwgdm9pZCBzZXRNb2NrUmVjb2duaXRpb25SZXN1bHQoY29uc3QgV2Vi
U3RyaW5nJiByZXN1bHQsIGNvbnN0IFdlYlN0cmluZyYgbGFuZ3VhZ2UpID0gMDsKKworICAgIC8v
IEZJWE1FOiB0aGlzIGlzIGEgZml4IGZvciBhIHR3by1zaWRlZCBwYXRjaC4gRGVsZXRlIGFzIHNv
b24gYXMgdGhlIGNocm9taXVtIHNpZGUgaXMgcGF0Y2hlZC4KKyAgICAvLyBDaHJvbWl1bSBwYXRj
aCBub3QgdXBsb2FkZWQgeWV0LCBidXQgd2lsbCBkZXBlbmQgb24gaHR0cDovL2NvZGVyZXZpZXcu
Y2hyb21pdW0ub3JnLzM2MTUwMDUvc2hvdyBwYXRjaC4KICAgICB2aXJ0dWFsIHZvaWQgc2V0TW9j
a1JlY29nbml0aW9uUmVzdWx0KGNvbnN0IFdlYlN0cmluZyYgcmVzdWx0KSA9IDA7CiB9OwogCmRp
ZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1NwZWVjaElucHV0Q2xpZW50SW1wbC5jcHAg
Yi9XZWJLaXQvY2hyb21pdW0vc3JjL1NwZWVjaElucHV0Q2xpZW50SW1wbC5jcHAKaW5kZXggOTYz
ZDQ0MDVhNjJkMzJlMWE4Y2VjZDU0YzA4YzViYmViM2E2MmRjYS4uYTMwZDk4NmE2NmExYTYwYzNh
OTczOGNiYTllNGZhZmI1MzdiMjcwZiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9T
cGVlY2hJbnB1dENsaWVudEltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvU3BlZWNo
SW5wdXRDbGllbnRJbXBsLmNwcApAQCAtMzYsMTEgKzM2LDE3IEBACiAjaW5jbHVkZSAiV2ViU3Ry
aW5nLmgiCiAjaW5jbHVkZSAiV2ViVmlld0NsaWVudC5oIgogI2luY2x1ZGUgInBhZ2UvU3BlZWNo
SW5wdXRMaXN0ZW5lci5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKICNpZiBFTkFC
TEUoSU5QVVRfU1BFRUNIKQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorUGFzc093blB0cjxTcGVl
Y2hJbnB1dENsaWVudEltcGw+IFNwZWVjaElucHV0Q2xpZW50SW1wbDo6Y3JlYXRlKFdlYlZpZXdD
bGllbnQqIGNsaWVudCkKK3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IFNwZWVjaElucHV0Q2xp
ZW50SW1wbChjbGllbnQpKTsKK30KKwogU3BlZWNoSW5wdXRDbGllbnRJbXBsOjpTcGVlY2hJbnB1
dENsaWVudEltcGwoV2ViVmlld0NsaWVudCogd2ViX3ZpZXdfY2xpZW50KQogICAgIDogbV9jb250
cm9sbGVyKHdlYl92aWV3X2NsaWVudCA/IHdlYl92aWV3X2NsaWVudC0+c3BlZWNoSW5wdXRDb250
cm9sbGVyKHRoaXMpIDogMCkKICAgICAsIG1fbGlzdGVuZXIoMCkKQEAgLTU2LDEwICs2MiwxMCBA
QCB2b2lkIFNwZWVjaElucHV0Q2xpZW50SW1wbDo6c2V0TGlzdGVuZXIoV2ViQ29yZTo6U3BlZWNo
SW5wdXRMaXN0ZW5lciogbGlzdGVuZXIpCiAgICAgbV9saXN0ZW5lciA9IGxpc3RlbmVyOwogfQog
Ci1ib29sIFNwZWVjaElucHV0Q2xpZW50SW1wbDo6c3RhcnRSZWNvZ25pdGlvbihpbnQgcmVxdWVz
dElkLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBlbGVtZW50UmVjdCkKK2Jvb2wgU3BlZWNoSW5w
dXRDbGllbnRJbXBsOjpzdGFydFJlY29nbml0aW9uKGludCByZXF1ZXN0SWQsIGNvbnN0IFdURjo6
U3RyaW5nJiBsYW5ndWFnZSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZWxlbWVudFJlY3QpCiB7
CiAgICAgQVNTRVJUKG1fbGlzdGVuZXIpOwotICAgIHJldHVybiBtX2NvbnRyb2xsZXItPnN0YXJ0
UmVjb2duaXRpb24ocmVxdWVzdElkLCBlbGVtZW50UmVjdCk7CisgICAgcmV0dXJuIG1fY29udHJv
bGxlci0+c3RhcnRSZWNvZ25pdGlvbihyZXF1ZXN0SWQsIGxhbmd1YWdlLCBlbGVtZW50UmVjdCk7
CiB9CiAKIHZvaWQgU3BlZWNoSW5wdXRDbGllbnRJbXBsOjpzdG9wUmVjb3JkaW5nKGludCByZXF1
ZXN0SWQpCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1NwZWVjaElucHV0Q2xpZW50
SW1wbC5oIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9TcGVlY2hJbnB1dENsaWVudEltcGwuaAppbmRl
eCA4MTdiMzJiMTI0MTRiM2EwN2RmYTNhZTM1MTkwODdkZWE1YTBmNzMzLi4zOGNlYjE4OGJjOTNj
YmU2NjUzY2JmOTA0YTcwYTk3NzI1ZjIyYWYxIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0v
c3JjL1NwZWVjaElucHV0Q2xpZW50SW1wbC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvU3Bl
ZWNoSW5wdXRDbGllbnRJbXBsLmgKQEAgLTM1LDYgKzM1LDEyIEBACiAKICNpbmNsdWRlICJXZWJT
cGVlY2hJbnB1dExpc3RlbmVyLmgiCiAjaW5jbHVkZSAicGFnZS9TcGVlY2hJbnB1dENsaWVudC5o
IgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgor
CituYW1lc3BhY2UgV1RGIHsKK2NsYXNzIFN0cmluZzsKK30KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgU3BlZWNoSW5wdXRMaXN0ZW5lcjsKQEAgLTQ5LDEyICs1NSwxMiBAQCBjbGFzcyBT
cGVlY2hJbnB1dENsaWVudEltcGwKICAgICA6IHB1YmxpYyBXZWJDb3JlOjpTcGVlY2hJbnB1dENs
aWVudCwKICAgICAgIHB1YmxpYyBXZWJTcGVlY2hJbnB1dExpc3RlbmVyIHsKIHB1YmxpYzoKLSAg
ICBTcGVlY2hJbnB1dENsaWVudEltcGwoV2ViVmlld0NsaWVudCopOworICAgIHN0YXRpYyBQYXNz
T3duUHRyPFNwZWVjaElucHV0Q2xpZW50SW1wbD4gY3JlYXRlKFdlYlZpZXdDbGllbnQqKTsKICAg
ICB2aXJ0dWFsIH5TcGVlY2hJbnB1dENsaWVudEltcGwoKTsKIAogICAgIC8vIFNwZWVjaElucHV0
Q2xpZW50IG1ldGhvZHMuCiAgICAgdm9pZCBzZXRMaXN0ZW5lcihXZWJDb3JlOjpTcGVlY2hJbnB1
dExpc3RlbmVyKik7Ci0gICAgYm9vbCBzdGFydFJlY29nbml0aW9uKGludCwgY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYpOworICAgIGJvb2wgc3RhcnRSZWNvZ25pdGlvbihpbnQsIGNvbnN0IFdURjo6
U3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOwogICAgIHZvaWQgc3RvcFJlY29yZGlu
ZyhpbnQpOwogICAgIHZvaWQgY2FuY2VsUmVjb2duaXRpb24oaW50KTsKIApAQCAtNjQsNiArNzAs
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRDb21wbGV0ZVJlY29nbml0aW9uKGludCk7CiAKIHBy
aXZhdGU6CisgICAgU3BlZWNoSW5wdXRDbGllbnRJbXBsKFdlYlZpZXdDbGllbnQqKTsKKwogICAg
IFdlYlNwZWVjaElucHV0Q29udHJvbGxlciogbV9jb250cm9sbGVyOyAvLyBUbyBjYWxsIGludG8g
dGhlIGVtYmVkZGVyLgogICAgIFdlYkNvcmU6OlNwZWVjaElucHV0TGlzdGVuZXIqIG1fbGlzdGVu
ZXI7CiB9OwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTcGVlY2hJbnB1dENv
bnRyb2xsZXJNb2NrSW1wbC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNwZWVjaElucHV0
Q29udHJvbGxlck1vY2tJbXBsLmNwcAppbmRleCA2MGM0ZmVkODUyYjI4NGUwMjcxYWQwMGVkOTcx
MDAyYTJmNTdhNGI2Li40NWM2ZmYwODYyZjAyNGZjMTgwNTczM2MxNmE5MzMwNTczN2FjMzkzIDEw
MDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1v
Y2tJbXBsLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNwZWVjaElucHV0Q29udHJv
bGxlck1vY2tJbXBsLmNwcApAQCAtNTcsNyArNTcsMTIgQEAgV2ViU3BlZWNoSW5wdXRDb250cm9s
bGVyTW9ja0ltcGw6On5XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbCgpCiAKIHZvaWQg
V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OnNldE1vY2tSZWNvZ25pdGlvblJlc3Vs
dChjb25zdCBXZWJTdHJpbmcmIHJlc3VsdCkKIHsKLSAgICBtX3dlYmNvcmVNb2NrLT5zZXRSZWNv
Z25pdGlvblJlc3VsdChyZXN1bHQpOworICAgIG1fd2ViY29yZU1vY2stPnNldFJlY29nbml0aW9u
UmVzdWx0KHJlc3VsdCwgV2ViU3RyaW5nOjpmcm9tVVRGOCgiIikpOworfQorCit2b2lkIFdlYlNw
ZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsOjpzZXRNb2NrUmVjb2duaXRpb25SZXN1bHQoY29u
c3QgV2ViU3RyaW5nJiByZXN1bHQsIGNvbnN0IFdlYlN0cmluZyAmbGFuZ3VhZ2UpCit7CisgICAg
bV93ZWJjb3JlTW9jay0+c2V0UmVjb2duaXRpb25SZXN1bHQocmVzdWx0LCBsYW5ndWFnZSk7CiB9
CiAKIHZvaWQgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OmRpZENvbXBsZXRlUmVj
b3JkaW5nKGludCByZXF1ZXN0SWQpCkBAIC03NSw5ICs4MCw5IEBAIHZvaWQgV2ViU3BlZWNoSW5w
dXRDb250cm9sbGVyTW9ja0ltcGw6OnNldFJlY29nbml0aW9uUmVzdWx0KGludCByZXF1ZXN0SWQs
IGNvbnN0CiAgICAgbV9saXN0ZW5lci0+c2V0UmVjb2duaXRpb25SZXN1bHQocmVxdWVzdElkLCBy
ZXN1bHQpOwogfQogCi1ib29sIFdlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsOjpzdGFy
dFJlY29nbml0aW9uKGludCByZXF1ZXN0SWQsIGNvbnN0IFdlYlJlY3QmIGVsZW1lbnRSZWN0KQor
Ym9vbCBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6c3RhcnRSZWNvZ25pdGlvbihp
bnQgcmVxdWVzdElkLCBjb25zdCBXZWJTdHJpbmcmIGxhbmd1YWdlLCBjb25zdCBXZWJSZWN0JiBl
bGVtZW50UmVjdCkKIHsKLSAgICByZXR1cm4gbV93ZWJjb3JlTW9jay0+c3RhcnRSZWNvZ25pdGlv
bihyZXF1ZXN0SWQsIGVsZW1lbnRSZWN0KTsKKyAgICByZXR1cm4gbV93ZWJjb3JlTW9jay0+c3Rh
cnRSZWNvZ25pdGlvbihyZXF1ZXN0SWQsIGxhbmd1YWdlLCBlbGVtZW50UmVjdCk7CiB9CiAKIHZv
aWQgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OmNhbmNlbFJlY29nbml0aW9uKGlu
dCByZXF1ZXN0SWQpCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNwZWVjaElu
cHV0Q29udHJvbGxlck1vY2tJbXBsLmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNwZWVjaElu
cHV0Q29udHJvbGxlck1vY2tJbXBsLmgKaW5kZXggZWRiZmNhM2VlNjBlOTM5NDI4OTNlMjcyMTg5
M2U0M2EwZWI4N2M1Zi4uMWIzMDUzYmYwOTI3NTNlZjc5MjkzZGRjYTEyZTg0MzUyMDZiZGJjMCAx
MDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJN
b2NrSW1wbC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3BlZWNoSW5wdXRDb250cm9s
bGVyTW9ja0ltcGwuaApAQCAtMzcsNiArMzcsMTAgQEAKICNpbmNsdWRlICJXZWJTdHJpbmcuaCIK
ICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgU3RyaW5n
OworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBTcGVlY2hJbnB1dENsaWVudE1vY2s7
CiB9CkBAIC01NywxMSArNjEsMTUgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UmVjb2duaXRpb25S
ZXN1bHQoaW50IHJlcXVlc3RJZCwgY29uc3QgV1RGOjpTdHJpbmcmIHJlc3VsdCk7CiAKICAgICAv
LyBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIgbWV0aG9kcy4KLSAgICBib29sIHN0YXJ0UmVjb2du
aXRpb24oaW50IHJlcXVlc3RJZCwgY29uc3QgV2ViUmVjdCYgZWxlbWVudFJlY3QpOworICAgIGJv
b2wgc3RhcnRSZWNvZ25pdGlvbihpbnQgcmVxdWVzdElkLCBjb25zdCBXZWJTdHJpbmcmIGxhbmd1
YWdlLCBjb25zdCBXZWJSZWN0JiBlbGVtZW50UmVjdCk7CiAgICAgdm9pZCBjYW5jZWxSZWNvZ25p
dGlvbihpbnQgcmVxdWVzdElkKTsKICAgICB2b2lkIHN0b3BSZWNvcmRpbmcoaW50IHJlcXVlc3RJ
ZCk7CiAKICAgICAvLyBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrIG1ldGhvZHMuCisgICAg
dm9pZCBzZXRNb2NrUmVjb2duaXRpb25SZXN1bHQoY29uc3QgV2ViU3RyaW5nJiByZXN1bHQsIGNv
bnN0IFdlYlN0cmluZyYgbGFuZ3VhZ2UpOworCisgICAgLy8gRklYTUU6IHRoaXMgaXMgYSBmaXgg
Zm9yIGEgdHdvLXNpZGVkIHBhdGNoLiBEZWxldGUgYXMgc29vbiBhcyB0aGUgY2hyb21pdW0gc2lk
ZSBpcyBwYXRjaGVkLgorICAgIC8vIENocm9taXVtIHBhdGNoIG5vdCB1cGxvYWRlZCB5ZXQsIGJ1
dCB3aWxsIGRlcGVuZCBvbiBodHRwOi8vY29kZXJldmlldy5jaHJvbWl1bS5vcmcvMzYxNTAwNS9z
aG93IHBhdGNoLgogICAgIHZvaWQgc2V0TW9ja1JlY29nbml0aW9uUmVzdWx0KGNvbnN0IFdlYlN0
cmluZyYgcmVzdWx0KTsKIAogcHJpdmF0ZToKQEAgLTcyLDQgKzgwLDMgQEAgcHJpdmF0ZToKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gV2ViU3BlZWNoSW5wdXRDb250cm9sbGVy
TW9ja0ltcGxfaAotCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBs
LmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IDBiMzNkMTc0
YzIzODQzNDM1MWQ5MGY1Zjg4MDk1NTA1ZDA2MmUzZmQuLmRjNDE2NGEzODYzZjQ3MzVmMjQxN2Mw
OGNkMzEzYzk3ODdlMjhmOTIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmll
d0ltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC04
OCw2ICs4OCw3IEBACiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZWxl
Y3Rpb25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRlICJTcGVl
Y2hJbnB1dENsaWVudEltcGwuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgIlR5cGlu
Z0NvbW1hbmQuaCIKICNpbmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgpAQCAtMjc1LDcg
KzI3Niw3IEBAIFdlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbChXZWJWaWV3Q2xpZW50KiBjbGllbnQs
IFdlYkRldlRvb2xzQWdlbnRDbGllbnQqIGRldlRvb2xzCiAgICAgLCBtX2NvbXBvc2l0b3JDcmVh
dGlvbkZhaWxlZChmYWxzZSkKICNlbmRpZgogI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCi0gICAg
LCBtX3NwZWVjaElucHV0Q2xpZW50KGNsaWVudCkKKyAgICAsIG1fc3BlZWNoSW5wdXRDbGllbnQo
U3BlZWNoSW5wdXRDbGllbnRJbXBsOjpjcmVhdGUoY2xpZW50KSkKICNlbmRpZgogICAgICwgbV9k
ZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5KG5ldyBEZXZpY2VPcmllbnRhdGlvbkNsaWVudFBy
b3h5KGNsaWVudCA/IGNsaWVudC0+ZGV2aWNlT3JpZW50YXRpb25DbGllbnQoKSA6IDApKQogewpA
QCAtMjk4LDcgKzI5OSw3IEBAIFdlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbChXZWJWaWV3Q2xpZW50
KiBjbGllbnQsIFdlYkRldlRvb2xzQWdlbnRDbGllbnQqIGRldlRvb2xzCiAgICAgcGFnZUNsaWVu
dHMuZHJhZ0NsaWVudCA9ICZtX2RyYWdDbGllbnRJbXBsOwogICAgIHBhZ2VDbGllbnRzLmluc3Bl
Y3RvckNsaWVudCA9ICZtX2luc3BlY3RvckNsaWVudEltcGw7CiAjaWYgRU5BQkxFKElOUFVUX1NQ
RUVDSCkKLSAgICBwYWdlQ2xpZW50cy5zcGVlY2hJbnB1dENsaWVudCA9ICZtX3NwZWVjaElucHV0
Q2xpZW50OworICAgIHBhZ2VDbGllbnRzLnNwZWVjaElucHV0Q2xpZW50ID0gbV9zcGVlY2hJbnB1
dENsaWVudC5nZXQoKTsKICNlbmRpZgogICAgIHBhZ2VDbGllbnRzLmRldmljZU9yaWVudGF0aW9u
Q2xpZW50ID0gbV9kZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5LmdldCgpOwogCmRpZmYgLS1n
aXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmggYi9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlZpZXdJbXBsLmgKaW5kZXggMDUwYjVlMTZhYTUyZjIzMGM5ODQ5ZWQ4NDgyMzk2MGNj
OTZhODA2My4uNzEyZWI3YTQwODM1MDkwNGE4OTVhM2Q4ZjA3OTIwMjNhNmRiYWI5YiAxMDA2NDQK
LS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCisrKyBiL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViVmlld0ltcGwuaApAQCAtNDksNyArNDksNiBAQAogI2luY2x1ZGUgIkludFJl
Y3QuaCIKICNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJOb3Rp
ZmljYXRpb25QcmVzZW50ZXJJbXBsLmgiCi0jaW5jbHVkZSAiU3BlZWNoSW5wdXRDbGllbnRJbXBs
LmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CiAKQEAgLTc0LDYgKzczLDcgQEAgY2xhc3MgQXV0b0ZpbGxQb3B1cE1lbnVDbGllbnQ7CiBjbGFz
cyBDb250ZXh0TWVudUNsaWVudEltcGw7CiBjbGFzcyBEZXZpY2VPcmllbnRhdGlvbkNsaWVudFBy
b3h5OwogY2xhc3MgRHJhZ1Njcm9sbFRpbWVyOworY2xhc3MgU3BlZWNoSW5wdXRDbGllbnRJbXBs
OwogY2xhc3MgV2ViQWNjZXNzaWJpbGl0eU9iamVjdDsKIGNsYXNzIFdlYkRldlRvb2xzQWdlbnRD
bGllbnQ7CiBjbGFzcyBXZWJEZXZUb29sc0FnZW50UHJpdmF0ZTsKQEAgLTU0Myw3ICs1NDMsNyBA
QCBwcml2YXRlOgogICAgIHN0YXRpYyBjb25zdCBXZWJJbnB1dEV2ZW50KiBtX2N1cnJlbnRJbnB1
dEV2ZW50OwogCiAjaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKLSAgICBTcGVlY2hJbnB1dENsaWVu
dEltcGwgbV9zcGVlY2hJbnB1dENsaWVudDsKKyAgICBPd25QdHI8U3BlZWNoSW5wdXRDbGllbnRJ
bXBsPiBtX3NwZWVjaElucHV0Q2xpZW50OwogI2VuZGlmCiAgICAgLy8gSWYgd2UgYXR0ZW1wdCB0
byBmZXRjaCB0aGUgb24tc2NyZWVuIEdyYXBoaWNzQ29udGV4dDNEIGJlZm9yZQogICAgIC8vIHRo
ZSBjb21wb3NpdG9yIGhhcyBiZWVuIHR1cm5lZCBvbiwgd2UgbmVlZCB0byBpbnN0YW50aWF0ZSBp
dApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nIGIvV2ViS2l0VG9vbHMvQ2hhbmdl
TG9nCmluZGV4IGU5YmQzMTA3ZTUxODNhMjFhOGEyYWY1YTc2MTViZTY4MjYzZGMyZDcuLjJkYWJm
MTQyZWVmNDhhNzgwMzlkNzY3MDZlYWE5MTJlYjljOTNlZjMgMTAwNjQ0Ci0tLSBhL1dlYktpdFRv
b2xzL0NoYW5nZUxvZworKysgYi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBA
QAorMjAxMC0xMC0xMyAgTGVhbmRybyBHcmFjacOhIEdpbCAgPGxlYW5kcm9ncmFjaWFAZ29vZ2xl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGRlZCBhIHNlY29uZCBwYXJhbWV0ZXIgdG8gc2V0TW9ja1NwZWVjaElucHV0UmVzdWx0IGZvcgor
ICAgICAgICB0aGUgbGFuZ3VhZ2UgdXNlZCBpbiBzcGVlY2ggaW5wdXQuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzA4OQorCisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoc2V0TW9ja1Nw
ZWVjaElucHV0UmVzdWx0Q2FsbGJhY2spOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91
dFRlc3RDb250cm9sbGVyLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5
b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNl
dE1vY2tTcGVlY2hJbnB1dFJlc3VsdCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZ3RrL0xh
eW91dFRlc3RDb250cm9sbGVyR3RrLmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVy
OjpzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQpOgorCiAyMDEwLTEwLTEyICBEaXJrIFByYW5rZSAg
PGRwcmFua2VAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVs
LgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRy
b2xsZXIuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xs
ZXIuY3BwCmluZGV4IDBhN2MxMWZlNThlN2ZlMzY2YTcwYjZjZDIyNzRiMzdkYTVkMjc4NzIuLjA2
N2NkMDE0MjM0OGNiODVlMjA2NzhmNGEyNzVlZjkzNTBjMmU2MTAgMTAwNjQ0Ci0tLSBhL1dlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAorKysgYi9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKQEAgLTEwNzAs
MTQgKzEwNzAsMTcgQEAgc3RhdGljIEpTVmFsdWVSZWYgc2V0TW9ja0dlb2xvY2F0aW9uRXJyb3JD
YWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3QKIAogc3RhdGljIEpTVmFsdWVS
ZWYgc2V0TW9ja1NwZWVjaElucHV0UmVzdWx0Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQs
IEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJn
dW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhj
ZXB0aW9uKQogewotICAgIGlmIChhcmd1bWVudENvdW50IDwgMSkKKyAgICBpZiAoYXJndW1lbnRD
b3VudCA8IDIpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsK
IAogICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiByZXN1bHQoQWRvcHQsIEpTVmFsdWVUb1N0
cmluZ0NvcHkoY29udGV4dCwgYXJndW1lbnRzWzBdLCBleGNlcHRpb24pKTsKICAgICBBU1NFUlQo
ISpleGNlcHRpb24pOwogCisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGxhbmd1YWdlKEFk
b3B0LCBKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIGFyZ3VtZW50c1sxXSwgZXhjZXB0aW9u
KSk7CisgICAgQVNTRVJUKCEqZXhjZXB0aW9uKTsKKwogICAgIExheW91dFRlc3RDb250cm9sbGVy
KiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xsZXIqPihKU09iamVj
dEdldFByaXZhdGUodGhpc09iamVjdCkpOwotICAgIGNvbnRyb2xsZXItPnNldE1vY2tTcGVlY2hJ
bnB1dFJlc3VsdChyZXN1bHQuZ2V0KCkpOworICAgIGNvbnRyb2xsZXItPnNldE1vY2tTcGVlY2hJ
bnB1dFJlc3VsdChyZXN1bHQuZ2V0KCksIGxhbmd1YWdlLmdldCgpKTsKIAogICAgIHJldHVybiBK
U1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmggYi9XZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCmluZGV4IDc1NWEyYjJiOWM2ODg1Yjc5
NmEwM2U1MmQ1MDIwZDg4YjQzZGQ5OGIuLmJjY2MwYTA2MGVlZjg3OTg2MjQwMjU5MThmMzk2NjYy
MjI1ODhkZTEgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRl
c3RDb250cm9sbGVyLmgKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVz
dENvbnRyb2xsZXIuaApAQCAtOTQsNyArOTQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRNb2Nr
RGV2aWNlT3JpZW50YXRpb24oYm9vbCBjYW5Qcm92aWRlQWxwaGEsIGRvdWJsZSBhbHBoYSwgYm9v
bCBjYW5Qcm92aWRlQmV0YSwgZG91YmxlIGJldGEsIGJvb2wgY2FuUHJvdmlkZUdhbW1hLCBkb3Vi
bGUgZ2FtbWEpOwogICAgIHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IoaW50IGNvZGUsIEpT
U3RyaW5nUmVmIG1lc3NhZ2UpOwogICAgIHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24o
ZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJhY3kpOwotICAg
IHZvaWQgc2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KEpTU3RyaW5nUmVmIHJlc3VsdCk7CisgICAg
dm9pZCBzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoSlNTdHJpbmdSZWYgcmVzdWx0LCBKU1N0cmlu
Z1JlZiBsYW5ndWFnZVRhZyk7CiAgICAgdm9pZCBzZXRQZXJzaXN0ZW50VXNlclN0eWxlU2hlZXRM
b2NhdGlvbihKU1N0cmluZ1JlZiBwYXRoKTsKICAgICB2b2lkIHNldFBsdWdpbnNFbmFibGVkKGJv
b2wgZmxhZyk7CiAgICAgdm9pZCBzZXRQb3B1cEJsb2NraW5nRW5hYmxlZChib29sIGZsYWcpOwpk
aWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVz
dENvbnRyb2xsZXIuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5
b3V0VGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IGQ3Nzc0ZTk5NjdiZTg2OWE0ZDM1MzY5NmZjMDRj
YzNmZGY5ODFkZGEuLjNjY2I3NDI2NDBmNGQyZmExNDJhNzE4OWIzOGVmMzNlYmQ0MGZjOTQgMTAw
NjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RD
b250cm9sbGVyLmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9M
YXlvdXRUZXN0Q29udHJvbGxlci5jcHAKQEAgLTE1MjUsMTAgKzE1MjUsMTAgQEAgdm9pZCBMYXlv
dXRUZXN0Q29udHJvbGxlcjo6YWJvcnRNb2RhbChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3Vt
ZW50cywgQ3BwVmFyaWEKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tTcGVlY2hJ
bnB1dFJlc3VsdChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCog
cmVzdWx0KQogewogICAgIHJlc3VsdC0+c2V0TnVsbCgpOwotICAgIGlmIChhcmd1bWVudHMuc2l6
ZSgpIDwgMSB8fCAhYXJndW1lbnRzWzBdLmlzU3RyaW5nKCkpCisgICAgaWYgKGFyZ3VtZW50cy5z
aXplKCkgPCAyIHx8ICFhcmd1bWVudHNbMF0uaXNTdHJpbmcoKSB8fCAhYXJndW1lbnRzWzFdLmlz
U3RyaW5nKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fc3BlZWNoSW5wdXRDb250cm9sbGVy
TW9jay0+c2V0TW9ja1JlY29nbml0aW9uUmVzdWx0KGNwcFZhcmlhbnRUb1dlYlN0cmluZyhhcmd1
bWVudHNbMF0pKTsKKyAgICBtX3NwZWVjaElucHV0Q29udHJvbGxlck1vY2stPnNldE1vY2tSZWNv
Z25pdGlvblJlc3VsdChjcHBWYXJpYW50VG9XZWJTdHJpbmcoYXJndW1lbnRzWzBdKSwgY3BwVmFy
aWFudFRvV2ViU3RyaW5nKGFyZ3VtZW50c1sxXSkpOwogfQogCiBXZWJLaXQ6OldlYlNwZWVjaElu
cHV0Q29udHJvbGxlciogTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNwZWVjaElucHV0Q29udHJvbGxl
cihXZWJLaXQ6OldlYlNwZWVjaElucHV0TGlzdGVuZXIqIGxpc3RlbmVyKQpkaWZmIC0tZ2l0IGEv
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNw
cCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0
ay5jcHAKaW5kZXggZDgzMTA3NjNkZTY2NGYzOTUyNDA0NGU3Zjg1Zjc3NTViZDQ4ZjFjMC4uODY3
ZjMyN2Q2ZjZlMjZkZTEyM2EwY2U5ZjMzN2I4OGRjNWNkMWU2YiAxMDA2NDQKLS0tIGEvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcAorKysg
Yi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsu
Y3BwCkBAIC00ODgsNyArNDg4LDcgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0R2Vv
bG9jYXRpb25QZXJtaXNzaW9uKGJvb2wgYWxsb3cpCiAgICAgc2V0R2VvbG9jYXRpb25QZXJtaXNz
aW9uQ29tbW9uKGFsbG93KTsKIH0KIAotdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9j
a1NwZWVjaElucHV0UmVzdWx0KEpTU3RyaW5nUmVmIHJlc3VsdCkKK3ZvaWQgTGF5b3V0VGVzdENv
bnRyb2xsZXI6OnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdChKU1N0cmluZ1JlZiByZXN1bHQsIEpT
U3RyaW5nUmVmIGxhbmd1YWdlKQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIHNwZWVj
aCBpbnB1dCBsYXlvdXQgdGVzdHMuCiAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0zOTQ4NS4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70611</attachid>
            <date>2010-10-13 07:59:01 -0700</date>
            <delta_ts>2010-10-15 08:05:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47089-20101013155858.patch</filename>
            <type>text/plain</type>
            <size>36545</size>
            <attacher name="Leandro Graciá Gil">leandrogracia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyN2IzZmFlZWRiYTY5ZTZlNDVlNzNjMjAxMDgwZDUwMDkxYzEzMDBmLi44OTVmMTZl
MDc1YzlkYTI0MDEyYWE5ZmM2N2MzZDQxZWNiNjliMzA3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAK
KzIwMTAtMTAtMTMgIExlYW5kcm8gR3JhY2nDoSBHaWwgIDxsZWFuZHJvZ3JhY2lhQGdvb2dsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
ZWQgYSBsYXlvdXQgdGVzdCBmb3IgdGhlIGxhbmd1YWdlIHRhZyBpbiBzcGVlY2ggaW5wdXQuIFVw
ZGF0ZWQKKyAgICAgICAgdGhlIHNwZWVjaCBidXR0b24gdGVzdHMgdG8gaW5jbHVkZSB0aGUgbmV3
IGxhbmd1YWdlIHBhcmFtZXRlciBpbiB0aGUKKyAgICAgICAgbW9jayByZXN1bHQuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzA4OQorCisgICAgICAg
ICogZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1sYW5ndWFnZS10YWctZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L3NwZWVjaC9pbnB1dC10ZXh0LWxhbmd1YWdlLXRhZy5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L3NwZWVjaC9pbnB1dC10ZXh0LXNwZWVjaGJ1dHRvbi5odG1s
OiBBZGRlZCBhbiBlbXB0eSBsYW5ndWFnZQorICAgICAgICAgIHBhcmFtZXRlci4KKyAgICAgICAg
KiBmYXN0L3NwZWVjaC9zcGVlY2gtYnV0dG9uLWlnbm9yZS1nZW5lcmF0ZWQtZXZlbnRzLmh0bWw6
IEFkZGVkIGFuCisgICAgICAgICAgZW1wdHkgbGFuZ3VhZ2UgcGFyYW1ldGVyLgorICAgICAgICAq
IHBsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dDogbGFuZ3VhZ2UgdGFnIHRl
c3QgaXMgZXhwZWN0ZWQKKyAgICAgICAgICB0byBmYWlsIHVudGlsIHRoZSBjaHJvbWl1bS1zaWRl
IHBhdGNoIGhhcyBiZWVuIGFwcGxpZWQuCisKIDIwMTAtMTAtMTMgIEFsZXhhbmRlciBQYXZsb3Yg
IDxhcGF2bG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIFVucmV2aWV3ZWQs
IGJ1aWxkIGZpeC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL2lucHV0LXRl
eHQtbGFuZ3VhZ2UtdGFnLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL2lu
cHV0LXRleHQtbGFuZ3VhZ2UtdGFnLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MWYzMGQ2OTZm
NWQyNTBmMTRhZjU2Yjk5YjRlNzBjODc5YzBlNTAyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1sYW5ndWFnZS10YWctZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMTMgQEAKK1Rlc3RzIGZvciBsYW5ndWFnZSB0YWcgaW5oZXJpdGFuY2UgYW5kIHZh
bGlkYXRpb24gaW4gc3BlZWNoIGJ1dHRvbnMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzcGVlY2hJbnB1dE5vbmUiKS52YWx1
ZSBpcyAiZXJyb3I6IG5vIHJlc3VsdCBmb3VuZCBmb3IgbGFuZ3VhZ2UgJyciCitQQVNTIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJzcGVlY2hJbnB1dEVsZW1lbnQiKS52YWx1ZSBpcyAiUGljdHVy
ZXMgb2YgdGhlIG1vb24iCitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzcGVlY2hJbnB1
dEluaGVyaXRlZCIpLnZhbHVlIGlzICLmnIjjga7lhpnnnJ8iCitQQVNTIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJzcGVlY2hJbnB1dEludmFsaWQiKS52YWx1ZSBpcyAiZXJyb3I6IG5vIHJlc3Vs
dCBmb3VuZCBmb3IgbGFuZ3VhZ2UgJyciCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKyAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNo
L2lucHV0LXRleHQtbGFuZ3VhZ2UtdGFnLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9p
bnB1dC10ZXh0LWxhbmd1YWdlLXRhZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjliZmM4MjI2MmVlMzBhMmM1
ZmE1ZTI1ODE2MWVhOGExZTE4ZTY1YWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L3NwZWVjaC9pbnB1dC10ZXh0LWxhbmd1YWdlLXRhZy5odG1sCkBAIC0wLDAgKzEsNjIgQEAK
KzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgor
PG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4v
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3Jp
cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KK2Rlc2NyaXB0aW9uKCdUZXN0cyBmb3IgbGFuZ3Vh
Z2UgdGFnIGluaGVyaXRhbmNlIGFuZCB2YWxpZGF0aW9uIGluIHNwZWVjaCBidXR0b25zLicpOwor
CisvLyBOb3RlOiB0ZXN0IGNhc2VzIGFyZSBzZXF1ZW50aWFsIHRvIGVuc3VyZSB0aGF0IG5vIG5l
dyByZWNvZ25pdGlvbiBzdGFydHMgd2hlbiBhbm90aGVyIHJlY29nbml0aW9uIHJlY29yZGluZyBp
cyBhY3RpdmUuCitmdW5jdGlvbiBvbkNoYW5nZU5vbmUoKSB7CisgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCdkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3BlZWNoSW5wdXROb25lIikudmFsdWUn
LCAnZXJyb3I6IG5vIHJlc3VsdCBmb3VuZCBmb3IgbGFuZ3VhZ2UgXCdcJycpOworICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7IHNwZWVjaEJ1dHRvbkNsaWNrKCdzcGVlY2hJbnB1dEVsZW1lbnQn
KTsgfSwgNTApOworfQorCitmdW5jdGlvbiBvbkNoYW5nZUVsZW1lbnQoKSB7CisgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCdkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3BlZWNoSW5wdXRFbGVt
ZW50IikudmFsdWUnLCAnUGljdHVyZXMgb2YgdGhlIG1vb24nKTsKKyAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgeyBzcGVlY2hCdXR0b25DbGljaygnc3BlZWNoSW5wdXRJbmhlcml0ZWQnKTsgfSwg
NTApOworfQorCitmdW5jdGlvbiBvbkNoYW5nZUluaGVyaXRlZCgpIHsKKyAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoJ2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzcGVlY2hJbnB1dEluaGVyaXRl
ZCIpLnZhbHVlJywgJ+aciOOBruWGmeecnycpOworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
IHNwZWVjaEJ1dHRvbkNsaWNrKCdzcGVlY2hJbnB1dEludmFsaWQnKTsgfSwgNTApOworfQorCitm
dW5jdGlvbiBvbkNoYW5nZUludmFsaWQoKSB7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3BlZWNoSW5wdXRJbnZhbGlkIikudmFsdWUnLCAnZXJy
b3I6IG5vIHJlc3VsdCBmb3VuZCBmb3IgbGFuZ3VhZ2UgXCdcJycpOworICAgIGZpbmlzaEpTVGVz
dCgpOworfQorCitmdW5jdGlvbiBzcGVlY2hCdXR0b25DbGljayhlbGVtZW50SWQpIHsKKyAgICB2
YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJZCk7CisgICAgdmFy
IHggPSBlbGVtZW50Lm9mZnNldExlZnQgKyBlbGVtZW50Lm9mZnNldFdpZHRoIC0gNDsKKyAgICB2
YXIgeSA9IGVsZW1lbnQub2Zmc2V0VG9wICsgZWxlbWVudC5vZmZzZXRIZWlnaHQgLyAyOworICAg
IGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93
bigpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKK30KKworZnVuY3Rpb24gcnVuKCkgewor
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIgJiYgd2luZG93LmV2ZW50U2VuZGVy
KSB7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldE1vY2tTcGVlY2hJbnB1dFJlc3Vs
dCgnUGljdHVyZXMgb2YgdGhlIG1vb24nLCAnZW4tR0InKTsKKyAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuc2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KCfmnIjjga7lhpnnnJ8nLCAnamEnKTsK
KyAgICAgICAgc3BlZWNoQnV0dG9uQ2xpY2soJ3NwZWVjaElucHV0Tm9uZScpOworICAgIH0KK30K
Kword2luZG93Lm9ubG9hZCA9IHJ1bjsKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK3dp
bmRvdy5zdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8aW5wdXQgaWQ9InNw
ZWVjaElucHV0Tm9uZSIgeC13ZWJraXQtc3BlZWNoIG9ud2Via2l0c3BlZWNoY2hhbmdlPSJvbkNo
YW5nZU5vbmUoKSI+Cis8aW5wdXQgaWQ9InNwZWVjaElucHV0RWxlbWVudCIgeC13ZWJraXQtc3Bl
ZWNoIG9ud2Via2l0c3BlZWNoY2hhbmdlPSJvbkNoYW5nZUVsZW1lbnQoKSIgbGFuZz0iZW4tR0Ii
PgorPGRpdiBsYW5nPSJqYSI+IDxpbnB1dCBpZD0ic3BlZWNoSW5wdXRJbmhlcml0ZWQiIHgtd2Vi
a2l0LXNwZWVjaCBvbndlYmtpdHNwZWVjaGNoYW5nZT0ib25DaGFuZ2VJbmhlcml0ZWQoKSI+IDwv
ZGl2PgorPGlucHV0IGlkPSJzcGVlY2hJbnB1dEludmFsaWQiIHgtd2Via2l0LXNwZWVjaCBvbndl
YmtpdHNwZWVjaGNoYW5nZT0ib25DaGFuZ2VJbnZhbGlkKCkiIGxhbmc9IjEzMzckw74zzrtrIj4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL2lu
cHV0LXRleHQtc3BlZWNoYnV0dG9uLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9pbnB1
dC10ZXh0LXNwZWVjaGJ1dHRvbi5odG1sCmluZGV4IDZmNWJjNGIxMjFmYjRmOWQ5ZGRhNmMzMzFm
OGIyNmRjMWNkNDM5OTQuLmNlZjc3MDU2YjE3ZDFjZDQ1MWI0OTBiN2MxZjI0NmJhNmM4OTUwZGIg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL2lucHV0LXRleHQtc3BlZWNoYnV0
dG9uLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1zcGVlY2hi
dXR0b24uaHRtbApAQCAtMzIsNyArMzIsNyBAQCBmdW5jdGlvbiBvbldlYmtpdFNwZWVjaENoYW5n
ZSgpIHsKIAogZnVuY3Rpb24gcnVuKCkgewogICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIgJiYgd2luZG93LmV2ZW50U2VuZGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdCgnUGljdHVyZXMgb2YgdGhlIG1vb24nKTsKKyAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KCdQaWN0
dXJlcyBvZiB0aGUgbW9vbicsICcnKTsKIAogICAgICAgICAvLyBDbGlja2luZyB0aGUgc3BlZWNo
IGJ1dHRvbiBzaG91bGQgZmlsbCBpbiBtb2NrIHNwZWVjaC1yZWNvZ25pemVkIHRleHQuCiAgICAg
ICAgIHZhciBpbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzcGVlY2hJbnB1dCcpOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvc3BlZWNoLWJ1dHRvbi1pZ25vcmUt
Z2VuZXJhdGVkLWV2ZW50cy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvc3BlZWNoLWJ1
dHRvbi1pZ25vcmUtZ2VuZXJhdGVkLWV2ZW50cy5odG1sCmluZGV4IGI5YjhlYzM2NjA1NTc5ZjJi
MTI2ZDZmMWRhMzU2MGM2NzJhZDJiNzEuLmM2ODQ4NjM3NzA1MzM5OWIyOWQwNGZjMjk5MDdlNTVl
OGFiZjA2MDggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL3NwZWVjaC1idXR0
b24taWdub3JlLWdlbmVyYXRlZC1ldmVudHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Nw
ZWVjaC9zcGVlY2gtYnV0dG9uLWlnbm9yZS1nZW5lcmF0ZWQtZXZlbnRzLmh0bWwKQEAgLTQ5LDcg
KzQ5LDcgQEAgZnVuY3Rpb24gc2V0dXBEaXNwYXRjaEV2ZW50VGVzdCgpIHsKIGZ1bmN0aW9uIHJ1
bigpIHsKICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyICYmIHdpbmRvdy5ldmVu
dFNlbmRlcikgewogICAgICAgICAvLyBSdW5uaW5nIGluIERSVCwgdGVzdCB0aGUgZXZlbnRTZW5k
ZXIgY2FzZS4KLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja1NwZWVjaElucHV0
UmVzdWx0KCdQaWN0dXJlcyBvZiB0aGUgbW9vbicpOworICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5zZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoJ1BpY3R1cmVzIG9mIHRoZSBtb29uJywgJycp
OwogICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3BlZWNoSW5wdXQnKS5vbndlYmtp
dHNwZWVjaGNoYW5nZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCdkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3BlZWNoSW5wdXQiKS52YWx1ZScsICdQ
aWN0dXJlcyBvZiB0aGUgbW9vbicpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKaW5kZXggNDk1ZWY4MGFjMzhhMjliMzlkYzA4
MWQ5ZjJiM2UzZDc0MmJjNTExNi4uOGFiYmEwZWFjNTdlOWIxODhhM2MxNzUwNDU0NDFmNTM4NjAx
NzQ5NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBl
Y3RhdGlvbnMudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhw
ZWN0YXRpb25zLnR4dApAQCAtMzIyNSwzICszMjI1LDYgQEAgQlVHNTg5NDIgOiBmYXN0L2RvbS9w
cm90b3R5cGUtaW5oZXJpdGFuY2UuaHRtbCA9IFRFWFQKIAogLy8gU3RhcnRlZCBmYWlsaW5nIGF0
IFdlYmtpdCByNjk2MjguCiBCVUc0NzU3OCA6IHByaW50aW5nL3NpbXVsdGFuZW91cy1wb3NpdGlv
bi1mbG9hdC1jaGFuZ2UuaHRtbCA9IElNQUdFK1RFWFQKKworLy8gVGVtcG9yYXJpbHkgZGlzYWJs
ZWQgZm9yIGEgNC1zaWRlZCBwYXRjaAorQlVHV0s0NzA4OSA6IGZhc3Qvc3BlZWNoL2lucHV0LXRl
eHQtbGFuZ3VhZ2UtdGFnLmh0bWwgPSBGQUlMCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDEzMGJkZTQxOTVmMjk0OWZlYmU4Yzc5NGMzNjJj
MjdiYWNhZGYzZWQuLjExOTY1NzkwNTQ4YTU2YmZhYmMyMDI3N2UxMjYyNWZlOWNmOGE3ZTkgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNDAgQEAKKzIwMTAtMTAtMTMgIExlYW5kcm8gR3JhY2nDoSBHaWwgIDxsZWFuZHJvZ3Jh
Y2lhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgUGF0Y2ggdGhlIGN1cnJlbnQgc3BlZWNoIGlucHV0IGltcGxlbWVudGF0aW9uIHRv
IHVzZSBhbmQgdmFsaWRhdGUgdGhlCisgICAgICAgIG5lYXJlc3QgbGFuZ3VhZ2UgdGFnLiBUaGUg
bGFuZ3VhZ2UgaXMgbm93IHBhc3NlZCB0byB0aGUgc3RhcnRSZWNvZ25pdGlvbgorICAgICAgICBt
ZXRob2RzIHNvIHRoYXQgbGFuZ3VhZ2Utc3BlY2lmaWMgcmVjb2duaXRpb24gY291bGQgYmUgdXNl
ZC4gQWxzbyBhZGRlZAorICAgICAgICBhIHNlY29uZCBwYXJhbWV0ZXIgdG8gc2V0TW9ja1NwZWVj
aElucHV0UmVzdWx0IGZvciB0aGUgbGFuZ3VhZ2UgdXNlZCBpbgorICAgICAgICBzcGVlY2ggcmVj
b2duaXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD00NzA4OQorCisgICAgICAgIFRoaXMgaXMgdGhlIDJuZCBvZiBhIDQtc2lkZWQgcGF0Y2ggaW4g
Q2hyb21pdW0gYW5kIFdlYktpdC4gRm9yIG1vcmUKKyAgICAgICAgZGV0YWlscyBzZWUgaHR0cDov
L2NvZGVyZXZpZXcuY2hyb21pdW0ub3JnLzM2MTUwMDUvc2hvdyBhbmQKKyAgICAgICAgaHR0cDov
L2NvZGVyZXZpZXcuY2hyb21pdW0ub3JnLzM1OTUwMTgvc2hvdy4KKworICAgICAgICBUZXN0OiBm
YXN0L3NwZWVjaC9pbnB1dC10ZXh0LWxhbmd1YWdlLXRhZy5odG1sCisKKyAgICAgICAgKiBkb20v
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojpjb21wdXRlSW5oZXJpdGVk
TGFuZ3VhZ2UpOiBpbmNsdWRlcyBhIGJyaWVmIGNoYXJhY3RlcgorICAgICAgICAgIHZhbGlkYXRp
b24gZm9yIHRoZSBCQ1AgNDcgbGFuZ3VhZ2UgdGFnLgorICAgICAgICAqIHBhZ2UvU3BlZWNoSW5w
dXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoSW5wdXQ6OnN0YXJ0UmVjb2duaXRpb24p
OgorICAgICAgICAqIHBhZ2UvU3BlZWNoSW5wdXQuaDoKKyAgICAgICAgKiBwYWdlL1NwZWVjaElu
cHV0Q2xpZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9TcGVlY2hJbnB1dENsaWVudE1v
Y2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoSW5wdXRDbGllbnRNb2NrOjpzdGFydFJl
Y29nbml0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaElucHV0Q2xpZW50TW9jazo6c2V0
UmVjb2duaXRpb25SZXN1bHQpOiByZXN1bHRzIGFyZSBub3cKKyAgICAgICAgICBzdG9yZWQgYnkg
bGFuZ3VhZ2UgdXNpbmcgYSBoYXNoIG1hcC4KKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaElucHV0
Q2xpZW50TW9jazo6dGltZXJGaXJlZCk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9TcGVlY2hJ
bnB1dENsaWVudE1vY2suaDoKKyAgICAgICAgKiByZW5kZXJpbmcvVGV4dENvbnRyb2xJbm5lckVs
ZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb250cm9sSW5uZXJFbGVtZW50Ojph
dHRhY2hJbm5lckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoRmllbGRDYW5jZWxC
dXR0b25FbGVtZW50OjpkZXRhY2gpOgorICAgICAgICAoV2ViQ29yZTo6U3BpbkJ1dHRvbkVsZW1l
bnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRGaWVsZFNw
ZWVjaEJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQ6OmRldGFjaCk6CisKIDIwMTAtMTAtMTMg
IEplbm4gQnJhaXRod2FpdGUgIDxqZW5uYkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgRG1pdHJ5IFRpdG92LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAg
Yi9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCA2N2UwZmQwYWM1YjM1ZDEyZGQ1MGFhNDU0
OWZiM2M4ZjlkNWEyYzgxLi5kM2Q3ZGI5Yzg0ZjA0M2Q1YTc3ZDA3OTgwMzI0OWU3ZGM5YjkwOGQ4
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2RvbS9F
bGVtZW50LmNwcApAQCAtNTYsNiArNTYsNyBAQAogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5j
bHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiWE1MTmFtZXMuaCIKKyNpbmNsdWRlIDx3
dGYvQVNDSUlDVHlwZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogI2lmIEVO
QUJMRShTVkcpCkBAIC0xNDczLDYgKzE0NzQsMTUgQEAgQXRvbWljU3RyaW5nIEVsZW1lbnQ6OmNv
bXB1dGVJbmhlcml0ZWRMYW5ndWFnZSgpIGNvbnN0CiAgICAgICAgIG4gPSBuLT5wYXJlbnQoKTsK
ICAgICB9CiAKKyAgICBpZiAoIXZhbHVlLmlzTnVsbCgpICYmICF2YWx1ZS5pc0VtcHR5KCkpIHsK
KyAgICAgICAgLy8gT25seSBBLVphLXowLTkgYW5kICctJyBhcmUgYWxsb3dlZCBpbiB0aGUgbGFu
Z3VhZ2UgdGFnIChzZWUgQkNQIDQ3KQorICAgICAgICBjb25zdCBjaGFyICpwID0gdmFsdWUuc3Ry
aW5nKCkuYXNjaWkoKS5kYXRhKCk7CisgICAgICAgIGZvciAoOyAqcCAhPSAnXDAnOyArK3ApIHsK
KyAgICAgICAgICAgIGlmICghaXNBU0NJSUFscGhhbnVtZXJpYygqcCkgJiYgKnAgIT0gJy0nKQor
ICAgICAgICAgICAgICAgIHJldHVybiBBdG9taWNTdHJpbmcoKTsKKyAgICAgICAgfQorICAgIH0K
KwogICAgIHJldHVybiB2YWx1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL1NwZWVj
aElucHV0LmNwcCBiL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dC5jcHAKaW5kZXggMjM0NzkxYmM0
YjEzZjQzZGY5ZDE3MzlkNWQyMDVmOWFhMjdlMjA3Mi4uY2M1ZTBmOTdmYmFiZjlhZmEzZjQzNTlj
NzI2YmFjODdlNTM0MThjZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0LmNw
cAorKysgYi9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXQuY3BwCkBAIC05MywxMCArOTMsMTAgQEAg
dm9pZCBTcGVlY2hJbnB1dDo6c2V0UmVjb2duaXRpb25SZXN1bHQoaW50IGxpc3RlbmVySWQsIGNv
bnN0IFN0cmluZyYgcmVzdWx0KQogICAgICAgICBtX2xpc3RlbmVycy5nZXQobGlzdGVuZXJJZCkt
PnNldFJlY29nbml0aW9uUmVzdWx0KGxpc3RlbmVySWQsIHJlc3VsdCk7CiB9CiAKLWJvb2wgU3Bl
ZWNoSW5wdXQ6OnN0YXJ0UmVjb2duaXRpb24oaW50IGxpc3RlbmVySWQsIGNvbnN0IEludFJlY3Qm
IGVsZW1lbnRSZWN0KQorYm9vbCBTcGVlY2hJbnB1dDo6c3RhcnRSZWNvZ25pdGlvbihpbnQgbGlz
dGVuZXJJZCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSwgY29uc3QgSW50UmVjdCYgZWxlbWVudFJl
Y3QpCiB7CiAgICAgQVNTRVJUKG1fbGlzdGVuZXJzLmNvbnRhaW5zKGxpc3RlbmVySWQpKTsKLSAg
ICByZXR1cm4gbV9jbGllbnQtPnN0YXJ0UmVjb2duaXRpb24obGlzdGVuZXJJZCwgZWxlbWVudFJl
Y3QpOworICAgIHJldHVybiBtX2NsaWVudC0+c3RhcnRSZWNvZ25pdGlvbihsaXN0ZW5lcklkLCBs
YW5ndWFnZSwgZWxlbWVudFJlY3QpOwogfQogCiB2b2lkIFNwZWVjaElucHV0OjpzdG9wUmVjb3Jk
aW5nKGludCBsaXN0ZW5lcklkKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0
LmggYi9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXQuaAppbmRleCBkMTBiNzg5YWFkMjczOWVkZDNi
ZjQ1MzBlN2M2ZTAwYzRlMmRhZThhLi44YjQyNmY1NjMxMzZlZDY1MWRkNjQ1NmU4MzViNGQ0NDUz
YWI4MDEyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXQuaAorKysgYi9XZWJD
b3JlL3BhZ2UvU3BlZWNoSW5wdXQuaApAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCB1bnJlZ2lzdGVyTGlzdGVuZXIoaW50KTsKIAogICAgIC8vIE1ldGhvZHMgaW52b2tlZCBieSB0
aGUgaW5wdXQgZWxlbWVudHMuCi0gICAgYm9vbCBzdGFydFJlY29nbml0aW9uKGludCwgY29uc3Qg
SW50UmVjdCYpOworICAgIGJvb2wgc3RhcnRSZWNvZ25pdGlvbihpbnQsIGNvbnN0IFN0cmluZyYs
IGNvbnN0IEludFJlY3QmKTsKICAgICB2b2lkIHN0b3BSZWNvcmRpbmcoaW50KTsKICAgICB2b2lk
IGNhbmNlbFJlY29nbml0aW9uKGludCk7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9TcGVl
Y2hJbnB1dENsaWVudC5oIGIvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0Q2xpZW50LmgKaW5kZXgg
ZDVmZGExN2ZhYTJjZDc5NWFmNDRmNTNhNDZmY2JhNTk3NDFhYjc2Yy4uZjVhYWIwMmE3NjYxNjYx
OGE2MGM3NzQ0Y2I0NzQ2NjNkY2I1MjJiNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1NwZWVj
aElucHV0Q2xpZW50LmgKKysrIGIvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0Q2xpZW50LmgKQEAg
LTMxLDYgKzMxLDggQEAKICNpZm5kZWYgU3BlZWNoSW5wdXRDbGllbnRfaAogI2RlZmluZSBTcGVl
Y2hJbnB1dENsaWVudF9oCiAKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCiAjaWYgRU5BQkxF
KElOUFVUX1NQRUVDSCkKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDgsNyArNTAsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldExpc3RlbmVyKFNwZWVjaElucHV0TGlzdGVuZXIq
KSA9IDA7CiAKICAgICAvLyBTdGFydHMgc3BlZWNoIHJlY29nbml0aW9uIGFuZCBhdWRpbyByZWNv
cmRpbmcuCi0gICAgdmlydHVhbCBib29sIHN0YXJ0UmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCwg
Y29uc3QgSW50UmVjdCYgZWxlbWVudFJlY3QpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc3RhcnRS
ZWNvZ25pdGlvbihpbnQgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlLCBjb25zdCBJ
bnRSZWN0JiBlbGVtZW50UmVjdCkgPSAwOwogCiAgICAgLy8gU3RvcHMgYXVkaW8gcmVjb3JkaW5n
IGFuZCBwZXJmb3JtcyByZWNvZ25pdGlvbiB3aXRoIHRoZSBhdWRpbyByZWNvcmRlZCB1bnRpbCBu
b3cKICAgICAvLyAoZG9lcyBub3QgZGlzY2FyZCBhdWRpbykuCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svU3BlZWNoSW5wdXRDbGllbnRNb2NrLmNwcCBiL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9TcGVlY2hJbnB1dENsaWVudE1vY2suY3BwCmluZGV4IDZiNjQ5NDJmMTdiOTI1YjQ5
ZWYwOTIxNDdjMGExNmEwN2YwZDdjY2MuLmMwNDk3MWUwYTk0Mzg1NWE4Y2ZjZDFkMWMyNDU2MzJi
YTgyMWIxMGEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TcGVlY2hJbnB1dENs
aWVudE1vY2suY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TcGVlY2hJbnB1dENsaWVu
dE1vY2suY3BwCkBAIC0zNSw2ICszNSwxMSBAQAogCiAjaW5jbHVkZSAiU3BlZWNoSW5wdXRMaXN0
ZW5lci5oIgogCituYW1lc3BhY2UgeworICAgIC8vIEhhc2hNYXAgZG9lc24ndCBzdXBwb3J0IGVt
cHR5IHN0cmluZ3MgYXMga2V5cywgc28gdGhpcyB2YWx1ZSAoYW4gaW52YWxpZCBCQ1A0NyB0YWcp
IGlzIHVzZWQgZm9yIHRob3NlIGNhc2VzLgorICAgIGNvbnN0IFN0cmluZyBlbXB0eUxhbmd1YWdl
ID0gIl8iOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNwZWVjaElucHV0Q2xpZW50TW9j
azo6U3BlZWNoSW5wdXRDbGllbnRNb2NrKCkKQEAgLTUwLDEyICs1NSwxMyBAQCB2b2lkIFNwZWVj
aElucHV0Q2xpZW50TW9jazo6c2V0TGlzdGVuZXIoU3BlZWNoSW5wdXRMaXN0ZW5lciogbGlzdGVu
ZXIpCiAgICAgbV9saXN0ZW5lciA9IGxpc3RlbmVyOwogfQogCi1ib29sIFNwZWVjaElucHV0Q2xp
ZW50TW9jazo6c3RhcnRSZWNvZ25pdGlvbihpbnQgcmVxdWVzdElkLCBjb25zdCBJbnRSZWN0JikK
K2Jvb2wgU3BlZWNoSW5wdXRDbGllbnRNb2NrOjpzdGFydFJlY29nbml0aW9uKGludCByZXF1ZXN0
SWQsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UsIGNvbnN0IEludFJlY3QmKQogewogICAgIGlmICht
X3RpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBtX3JlcXVlc3RJ
ZCA9IHJlcXVlc3RJZDsKICAgICBtX3JlY29yZGluZyA9IHRydWU7CisgICAgbV9sYW5ndWFnZSA9
IGxhbmd1YWdlOwogICAgIG1fdGltZXIuc3RhcnRPbmVTaG90KDApOwogICAgIHJldHVybiB0cnVl
OwogfQpAQCAtODAsOSArODYsMTIgQEAgdm9pZCBTcGVlY2hJbnB1dENsaWVudE1vY2s6OmNhbmNl
bFJlY29nbml0aW9uKGludCByZXF1ZXN0SWQpCiAgICAgfQogfQogCi12b2lkIFNwZWVjaElucHV0
Q2xpZW50TW9jazo6c2V0UmVjb2duaXRpb25SZXN1bHQoY29uc3QgU3RyaW5nJiByZXN1bHQpCit2
b2lkIFNwZWVjaElucHV0Q2xpZW50TW9jazo6c2V0UmVjb2duaXRpb25SZXN1bHQoY29uc3QgU3Ry
aW5nJiByZXN1bHQsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UpCiB7Ci0gICAgbV9yZWNvZ25pdGlv
blJlc3VsdCA9IHJlc3VsdDsKKyAgICBpZiAobGFuZ3VhZ2UuaXNFbXB0eSgpKQorICAgICAgICBt
X3JlY29nbml0aW9uUmVzdWx0LnNldChlbXB0eUxhbmd1YWdlLCByZXN1bHQpOworICAgIGVsc2UK
KyAgICAgICAgbV9yZWNvZ25pdGlvblJlc3VsdC5zZXQobGFuZ3VhZ2UsIHJlc3VsdCk7CiB9CiAK
IHZvaWQgU3BlZWNoSW5wdXRDbGllbnRNb2NrOjp0aW1lckZpcmVkKFdlYkNvcmU6OlRpbWVyPFNw
ZWVjaElucHV0Q2xpZW50TW9jaz4qKQpAQCAtOTIsNyArMTAxLDE3IEBAIHZvaWQgU3BlZWNoSW5w
dXRDbGllbnRNb2NrOjp0aW1lckZpcmVkKFdlYkNvcmU6OlRpbWVyPFNwZWVjaElucHV0Q2xpZW50
TW9jaz4qKQogICAgICAgICBtX2xpc3RlbmVyLT5kaWRDb21wbGV0ZVJlY29yZGluZyhtX3JlcXVl
c3RJZCk7CiAgICAgICAgIG1fdGltZXIuc3RhcnRPbmVTaG90KDApOwogICAgIH0gZWxzZSB7Ci0g
ICAgICAgIG1fbGlzdGVuZXItPnNldFJlY29nbml0aW9uUmVzdWx0KG1fcmVxdWVzdElkLCBtX3Jl
Y29nbml0aW9uUmVzdWx0KTsKKyAgICAgICAgU3RyaW5nIGxhbmd1YWdlID0gbV9sYW5ndWFnZS5p
c0VtcHR5KCkgPyBTdHJpbmcoZW1wdHlMYW5ndWFnZSkgOiBtX2xhbmd1YWdlOworICAgICAgICBp
ZiAoIW1fcmVjb2duaXRpb25SZXN1bHQuY29udGFpbnMobGFuZ3VhZ2UpKSB7CisgICAgICAgICAg
ICAvLyBDYW4ndCBhdm9pZCBzZXR0aW5nIGEgcmVzdWx0IG9uIGVtcHR5IG9yIGludmFsaWQgbGFu
Z3VhZ2Ugc3RyaW5ncy4KKyAgICAgICAgICAgIC8vIFRoaXMgd291bGQgYXZvaWQgZ2VuZXJhdGlu
ZyB0aGUgZXZlbnRzIHVzZWQgdG8gY2hlY2sgdGhlIHJlc3VsdHMgYW5kIHRoZSB0ZXN0IHdvdWxk
IHRpbWVvdXQuCisgICAgICAgICAgICBTdHJpbmcgZXJyb3IoImVycm9yOiBubyByZXN1bHQgZm91
bmQgZm9yIGxhbmd1YWdlICciKTsKKyAgICAgICAgICAgIGVycm9yLmFwcGVuZChtX2xhbmd1YWdl
KTsKKyAgICAgICAgICAgIGVycm9yLmFwcGVuZCgiJyIpOworICAgICAgICAgICAgbV9saXN0ZW5l
ci0+c2V0UmVjb2duaXRpb25SZXN1bHQobV9yZXF1ZXN0SWQsIGVycm9yKTsKKyAgICAgICAgfSBl
bHNlCisgICAgICAgICAgICBtX2xpc3RlbmVyLT5zZXRSZWNvZ25pdGlvblJlc3VsdChtX3JlcXVl
c3RJZCwgbV9yZWNvZ25pdGlvblJlc3VsdC5nZXQobGFuZ3VhZ2UpKTsKKwogICAgICAgICBtX2xp
c3RlbmVyLT5kaWRDb21wbGV0ZVJlY29nbml0aW9uKG1fcmVxdWVzdElkKTsKICAgICAgICAgbV9y
ZXF1ZXN0SWQgPSAwOwogICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9T
cGVlY2hJbnB1dENsaWVudE1vY2suaCBiL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TcGVlY2hJbnB1
dENsaWVudE1vY2suaAppbmRleCBjZTgzZDNiYjljYjg4YjBhM2E5NWI1NDk1NDI3ZDI5OTFmMmUw
YjRmLi4zY2U5ODdiODIzY2QxOTgwMjg2NjljNzc5ZjNjNDc5YzQ3M2NiN2VkIDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BsYXRmb3JtL21vY2svU3BlZWNoSW5wdXRDbGllbnRNb2NrLmgKKysrIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xpZW50TW9jay5oCkBAIC0zNCw2ICszNCw4
IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJTcGVlY2hJbnB1dENs
aWVudC5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKICNpZiBFTkFCTEUoSU5QVVRfU1BFRUNI
KQogCkBAIC00NiwxMSArNDgsMTEgQEAgY2xhc3MgU3BlZWNoSW5wdXRDbGllbnRNb2NrIDogcHVi
bGljIFNwZWVjaElucHV0Q2xpZW50IHsKIHB1YmxpYzoKICAgICBTcGVlY2hJbnB1dENsaWVudE1v
Y2soKTsKIAotICAgIHZvaWQgc2V0UmVjb2duaXRpb25SZXN1bHQoY29uc3QgU3RyaW5nJiByZXN1
bHQpOworICAgIHZvaWQgc2V0UmVjb2duaXRpb25SZXN1bHQoY29uc3QgU3RyaW5nJiByZXN1bHQs
IGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UpOwogCiAgICAgLy8gU3BlZWNoSW5wdXRDbGllbnQgbWV0
aG9kcy4KICAgICB2b2lkIHNldExpc3RlbmVyKFNwZWVjaElucHV0TGlzdGVuZXIqKTsKLSAgICBi
b29sIHN0YXJ0UmVjb2duaXRpb24oaW50LCBjb25zdCBJbnRSZWN0Jik7CisgICAgYm9vbCBzdGFy
dFJlY29nbml0aW9uKGludCwgY29uc3QgU3RyaW5nJiwgY29uc3QgSW50UmVjdCYpOwogICAgIHZv
aWQgc3RvcFJlY29yZGluZyhpbnQpOwogICAgIHZvaWQgY2FuY2VsUmVjb2duaXRpb24oaW50KTsK
IApAQCAtNjEsNyArNjMsOSBAQCBwcml2YXRlOgogICAgIFRpbWVyPFNwZWVjaElucHV0Q2xpZW50
TW9jaz4gbV90aW1lcjsKICAgICBTcGVlY2hJbnB1dExpc3RlbmVyKiBtX2xpc3RlbmVyOwogICAg
IGludCBtX3JlcXVlc3RJZDsKLSAgICBTdHJpbmcgbV9yZWNvZ25pdGlvblJlc3VsdDsKKworICAg
IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IG1fcmVjb2duaXRpb25SZXN1bHQ7CisgICAgU3RyaW5n
IG1fbGFuZ3VhZ2U7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3JlbmRlcmluZy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwIGIvV2ViQ29yZS9y
ZW5kZXJpbmcvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAppbmRleCA1ZDViOGIzMGI0MTEw
NTIwZDFhNGRlN2I4YTc5YzQ4NWQ3OTM2NjA4Li42NWQwYTY0NjA5ZDIwMzRiMTA5OTUwM2QxNjkx
NTFhYmU2NmRhYTNlIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Q29udHJvbElu
bmVyRWxlbWVudHMuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRDb250cm9sSW5uZXJF
bGVtZW50cy5jcHAKQEAgLTIxLDkgKzIxLDkgQEAKICAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KLSAKKwog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlRleHRDb250cm9sSW5uZXJFbGVtZW50cy5o
IgogCkBAIC0xMDcsMTggKzEwNywxOCBAQCB2b2lkIFRleHRDb250cm9sSW5uZXJFbGVtZW50Ojph
dHRhY2hJbm5lckVsZW1lbnQoTm9kZSogcGFyZW50LCBQYXNzUmVmUHRyPFJlbmRlcgogICAgICAg
ICBzZXRSZW5kZXJlcihyZW5kZXJlcik7CiAgICAgICAgIHJlbmRlcmVyLT5zZXRTdHlsZShzdHls
ZSk7CiAgICAgfQotICAgIAorCiAgICAgLy8gU2V0IHRoZXNlIGV4cGxpY2l0bHkgc2luY2UgdGhp
cyBub3JtYWxseSBoYXBwZW5zIGR1cmluZyBhbiBhdHRhY2goKQogICAgIHNldEF0dGFjaGVkKCk7
CiAgICAgc2V0SW5Eb2N1bWVudCgpOwotICAgIAorCiAgICAgLy8gRm9yIGVsZW1lbnRzIHdpdGhv
dXQgYSBzaGFkb3cgcGFyZW50LCBhZGQgdGhlIG5vZGUgdG8gdGhlIERPTSBub3JtYWxseS4KICAg
ICBpZiAoIW1fc2hhZG93UGFyZW50KSB7CiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGNvZGUgc2Vl
bXMgdmVyeSB3cm9uZy4gIFdoeSBhcmUgd2UgbWFnaWNhbGx5IGFkZGluZyB8dGhpc3wgdG8gdGhl
IERPTSBoZXJlPwogICAgICAgICAvLyAgICAgICAgV2Ugc2hvdWxkbid0IGJlIGNhbGxpbmcgcGFy
c2VyIEFQSSBtZXRob2RzIG91dHNpZGUgb2YgdGhlIHBhcnNlciEKICAgICAgICAgcGFyZW50LT5k
ZXByZWNhdGVkUGFyc2VyQWRkQ2hpbGQodGhpcyk7CiAgICAgfQotIAorCiAgICAgLy8gQWRkIHRo
ZSByZW5kZXJlciB0byB0aGUgcmVuZGVyIHRyZWUKICAgICBpZiAocmVuZGVyZXIpCiAgICAgICAg
IHBhcmVudC0+cmVuZGVyZXIoKS0+YWRkQ2hpbGQocmVuZGVyZXIpOwpAQCAtMjA4LDcgKzIwOCw3
IEBAIHZvaWQgU2VhcmNoRmllbGRDYW5jZWxCdXR0b25FbGVtZW50OjpkZXRhY2goKQogewogICAg
IGlmIChtX2NhcHR1cmluZykgewogICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQo
KS0+ZnJhbWUoKSkKLSAgICAgICAgICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+c2V0Q2FwdHVy
aW5nTW91c2VFdmVudHNOb2RlKDApOyAgICAgIAorICAgICAgICAgICAgZnJhbWUtPmV2ZW50SGFu
ZGxlcigpLT5zZXRDYXB0dXJpbmdNb3VzZUV2ZW50c05vZGUoMCk7CiAgICAgfQogICAgIFRleHRD
b250cm9sSW5uZXJFbGVtZW50OjpkZXRhY2goKTsKIH0KQEAgLTI4MSw5ICsyODEsOSBAQCB2b2lk
IFNwaW5CdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKICAg
ICBpZiAoIWJveCkgewogICAgICAgICBpZiAoIWV2ZW50LT5kZWZhdWx0SGFuZGxlZCgpKQogICAg
ICAgICAgICAgSFRNTERpdkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOwotICAg
ICAgICByZXR1cm47ICAgICAgICAKKyAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKKwogICAg
IEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0ID0gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+
KHNoYWRvd0FuY2VzdG9yTm9kZSgpKTsKICAgICBpZiAoaW5wdXQtPmRpc2FibGVkKCkgfHwgaW5w
dXQtPmlzUmVhZE9ubHlGb3JtQ29udHJvbCgpKSB7CiAgICAgICAgIGlmICghZXZlbnQtPmRlZmF1
bHRIYW5kbGVkKCkpCkBAIC00MzEsNyArNDMxLDcgQEAgdm9pZCBJbnB1dEZpZWxkU3BlZWNoQnV0
dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiAgICAgaWYgKGV2
ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmNsaWNrRXZlbnQpIHsKICAgICAgICAgc3dpdGNo
IChtX3N0YXRlKSB7CiAgICAgICAgIGNhc2UgSWRsZToKLSAgICAgICAgICAgIGlmIChzcGVlY2hJ
bnB1dCgpLT5zdGFydFJlY29nbml0aW9uKG1fbGlzdGVuZXJJZCwgaW5wdXQtPnJlbmRlcmVyKCkt
PmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCkpKQorICAgICAgICAgICAgaWYgKHNwZWVjaElucHV0
KCktPnN0YXJ0UmVjb2duaXRpb24obV9saXN0ZW5lcklkLCBpbnB1dC0+Y29tcHV0ZUluaGVyaXRl
ZExhbmd1YWdlKCksIGlucHV0LT5yZW5kZXJlcigpLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgp
KSkKICAgICAgICAgICAgICAgICBzZXRTdGF0ZShSZWNvcmRpbmcpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgUmVjb3JkaW5nOgpAQCAtNDg3LDcgKzQ4Nyw3IEBAIHZvaWQgSW5w
dXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQ6OmRldGFjaCgpCiB7CiAgICAgaWYgKG1fY2FwdHVy
aW5nKSB7CiAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLT5mcmFtZSgpKQot
ICAgICAgICAgICAgZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5zZXRDYXB0dXJpbmdNb3VzZUV2ZW50
c05vZGUoMCk7ICAgICAgCisgICAgICAgICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPnNldENh
cHR1cmluZ01vdXNlRXZlbnRzTm9kZSgwKTsKICAgICB9CiAKICAgICBpZiAobV9zdGF0ZSAhPSBJ
ZGxlKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKaW5kZXggMTgwZTMzMGE3ODI5YTE5NGJlZTRlMjM3ZGZjZDcyZGM3NTdi
ODg3MS4uYTBkYjdiZjdiMWQ4ZTU5MjdjODU0Y2E4YjZiYjI0NzhhYzgyNDJmOCAxMDA2NDQKLS0t
IGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTAtMTAtMTMgIExlYW5kcm8gR3JhY2nDoSBHaWwgIDxs
ZWFuZHJvZ3JhY2lhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUGF0Y2ggdGhlIGN1cnJlbnQgc3BlZWNoIGlucHV0IGltcGxlbWVu
dGF0aW9uIHRvIHVzZSBhbmQgdmFsaWRhdGUgdGhlCisgICAgICAgIG5lYXJlc3QgbGFuZ3VhZ2Ug
dGFnLiBUaGUgbGFuZ3VhZ2UgaXMgbm93IHBhc3NlZCB0byB0aGUgc3RhcnRSZWNvZ25pdGlvbgor
ICAgICAgICBtZXRob2RzIHNvIHRoYXQgbGFuZ3VhZ2Utc3BlY2lmaWMgcmVjb2duaXRpb24gY291
bGQgYmUgdXNlZC4gQWxzbyBhZGRlZAorICAgICAgICBhIHNlY29uZCBwYXJhbWV0ZXIgdG8gc2V0
TW9ja1NwZWVjaElucHV0UmVzdWx0IGZvciB0aGUgbGFuZ3VhZ2UgdXNlZCBpbgorICAgICAgICBz
cGVlY2ggcmVjb2duaXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD00NzA4OQorCisgICAgICAgIFRoaXMgaXMgdGhlIDJuZCBvZiBhIDQtc2lkZWQg
cGF0Y2ggaW4gQ2hyb21pdW0gYW5kIFdlYktpdC4gRm9yIG1vcmUKKyAgICAgICAgZGV0YWlscyBz
ZWUgaHR0cDovL2NvZGVyZXZpZXcuY2hyb21pdW0ub3JnLzM2MTUwMDUvc2hvdyBhbmQKKyAgICAg
ICAgaHR0cDovL2NvZGVyZXZpZXcuY2hyb21pdW0ub3JnLzM1OTUwMTgvc2hvdy4KKworICAgICAg
ICAqIHB1YmxpYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIuaDoKKyAgICAgICAgKFdlYktpdDo6
V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyOjpzdGFydFJlY29nbml0aW9uKToKKyAgICAgICAgKiBw
dWJsaWMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9jay5oOgorICAgICAgICAqIHNyYy9TcGVl
Y2hJbnB1dENsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hJbnB1dENsaWVu
dEltcGw6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaElucHV0Q2xpZW50SW1wbDo6
c3RhcnRSZWNvZ25pdGlvbik6CisgICAgICAgICogc3JjL1NwZWVjaElucHV0Q2xpZW50SW1wbC5o
OgorICAgICAgICAqIHNyYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsOjpzZXRNb2Nr
UmVjb2duaXRpb25SZXN1bHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hJbnB1dENvbnRy
b2xsZXJNb2NrSW1wbDo6c3RhcnRSZWNvZ25pdGlvbik6CisgICAgICAgICogc3JjL1dlYlNwZWVj
aElucHV0Q29udHJvbGxlck1vY2tJbXBsLmg6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKToKKyAgICAgICAg
KiBzcmMvV2ViVmlld0ltcGwuaDoKKwogMjAxMC0xMC0xMiAgS2VubmV0aCBSdXNzZWxsICA8a2Jy
QGdvb2dsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gRml4ZXMgZm9yIGFsbCBXZWJHTCBj
b250ZW50IGNhdXNpbmcgYXNzZXJ0aW9uIGZhaWx1cmVzCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYlNwZWVjaElucHV0Q29udHJvbGxlci5oIGIvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIuaAppbmRleCA1NDA4NzQxYTNjOTRkM2Jm
MWM1NDNkOTZlOWZjMTZhNjM5MGRiMDJmLi4xZmRlMmE4ZTc3NGYzMmU1OGY4ODcyZjI0ODIyMjMw
NTljODhjMTQ3IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaElu
cHV0Q29udHJvbGxlci5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoSW5w
dXRDb250cm9sbGVyLmgKQEAgLTM1LDYgKzM1LDcgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
K2NsYXNzIFdlYlN0cmluZzsKIHN0cnVjdCBXZWJSZWN0OwogCiAvLyBQcm92aWRlcyBhbiBlbWJl
ZGRlciBBUEkgY2FsbGVkIGJ5IFdlYktpdC4KQEAgLTQzLDcgKzQ0LDcgQEAgcHVibGljOgogICAg
IC8vIFN0YXJ0cyBzcGVlY2ggcmVjb2duaXRpb24uIFNwZWVjaCB3aWxsIGdldCByZWNvcmRlZCB1
bnRpbCB0aGUgZW5kcG9pbnRlciBkZXRlY3RzIHNpbGVuY2UsCiAgICAgLy8gcnVucyB0byB0aGUg
bGltaXQgb3Igc3RvcFJlY29yZGluZyBpcyBjYWxsZWQuIFByb2dyZXNzIGluZGljYXRpb25zIGFu
ZCB0aGUgcmVjb2duaXplZAogICAgIC8vIHRleHQgYXJlIHJldHVybmVkIHZpYSB0aGUgbGlzdGVu
ZXIgaW50ZXJmYWNlLgotICAgIHZpcnR1YWwgYm9vbCBzdGFydFJlY29nbml0aW9uKGludCByZXF1
ZXN0SWQsIGNvbnN0IFdlYlJlY3QmKQorICAgIHZpcnR1YWwgYm9vbCBzdGFydFJlY29nbml0aW9u
KGludCByZXF1ZXN0SWQsIGNvbnN0IFdlYlN0cmluZyYgbGFuZ3VhZ2UsIGNvbnN0IFdlYlJlY3Qm
IGVsZW1lbnRSZWN0KQogICAgIHsKICAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2suaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9jay5oCmluZGV4IDlhMjYyMzVmZjZkNWRjY2Ji
ZTI0NzI2MmFlNDRhM2FjNzM5N2MzZjQuLmI0YzUwYTA1ZGNmNWExMmY4NDFiZjliNjc1NWNkMjg4
MTdmOGMwOGIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoSW5w
dXRDb250cm9sbGVyTW9jay5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNo
SW5wdXRDb250cm9sbGVyTW9jay5oCkBAIC00NCw2ICs0NCwxMCBAQCBwdWJsaWM6CiAgICAgICAg
IFdlYlNwZWVjaElucHV0TGlzdGVuZXIqIGxpc3RlbmVyKTsKICAgICB2aXJ0dWFsIH5XZWJTcGVl
Y2hJbnB1dENvbnRyb2xsZXJNb2NrKCkgeyB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgc2V0TW9ja1Jl
Y29nbml0aW9uUmVzdWx0KGNvbnN0IFdlYlN0cmluZyYgcmVzdWx0LCBjb25zdCBXZWJTdHJpbmcm
IGxhbmd1YWdlKSA9IDA7CisKKyAgICAvLyBGSVhNRTogdGhpcyBpcyBhIGZpeCBmb3IgYSB0d28t
c2lkZWQgcGF0Y2guIERlbGV0ZSBhcyBzb29uIGFzIHRoZSBjaHJvbWl1bSBzaWRlIGlzIHBhdGNo
ZWQuCisgICAgLy8gQ2hyb21pdW0gcGF0Y2ggbm90IHVwbG9hZGVkIHlldCwgYnV0IHdpbGwgZGVw
ZW5kIG9uIGh0dHA6Ly9jb2RlcmV2aWV3LmNocm9taXVtLm9yZy8zNjE1MDA1L3Nob3cgcGF0Y2gu
CiAgICAgdmlydHVhbCB2b2lkIHNldE1vY2tSZWNvZ25pdGlvblJlc3VsdChjb25zdCBXZWJTdHJp
bmcmIHJlc3VsdCkgPSAwOwogfTsKIApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9T
cGVlY2hJbnB1dENsaWVudEltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9TcGVlY2hJbnB1
dENsaWVudEltcGwuY3BwCmluZGV4IDk2M2Q0NDA1YTYyZDMyZTFhOGNlY2Q1NGMwOGM1YmJlYjNh
NjJkY2EuLjA2NWY2MzU5Mjg3OWM0Mzc1ZTY2MjM5YWQ1OTRlZmNjOTI0YWU4NTYgMTAwNjQ0Ci0t
LSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvU3BlZWNoSW5wdXRDbGllbnRJbXBsLmNwcAorKysgYi9X
ZWJLaXQvY2hyb21pdW0vc3JjL1NwZWVjaElucHV0Q2xpZW50SW1wbC5jcHAKQEAgLTM2LDExICsz
NiwxNyBAQAogI2luY2x1ZGUgIldlYlN0cmluZy5oIgogI2luY2x1ZGUgIldlYlZpZXdDbGllbnQu
aCIKICNpbmNsdWRlICJwYWdlL1NwZWVjaElucHV0TGlzdGVuZXIuaCIKKyNpbmNsdWRlIDx3dGYv
UGFzc093blB0ci5oPgogCiAjaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKIAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKK1Bhc3NPd25QdHI8U3BlZWNoSW5wdXRDbGllbnRJbXBsPiBTcGVlY2hJbnB1dENs
aWVudEltcGw6OmNyZWF0ZShXZWJWaWV3Q2xpZW50KiBjbGllbnQpCit7CisgICAgcmV0dXJuIGFk
b3B0UHRyKG5ldyBTcGVlY2hJbnB1dENsaWVudEltcGwoY2xpZW50KSk7Cit9CisKIFNwZWVjaElu
cHV0Q2xpZW50SW1wbDo6U3BlZWNoSW5wdXRDbGllbnRJbXBsKFdlYlZpZXdDbGllbnQqIHdlYl92
aWV3X2NsaWVudCkKICAgICA6IG1fY29udHJvbGxlcih3ZWJfdmlld19jbGllbnQgPyB3ZWJfdmll
d19jbGllbnQtPnNwZWVjaElucHV0Q29udHJvbGxlcih0aGlzKSA6IDApCiAgICAgLCBtX2xpc3Rl
bmVyKDApCkBAIC01NiwxMCArNjIsMTAgQEAgdm9pZCBTcGVlY2hJbnB1dENsaWVudEltcGw6OnNl
dExpc3RlbmVyKFdlYkNvcmU6OlNwZWVjaElucHV0TGlzdGVuZXIqIGxpc3RlbmVyKQogICAgIG1f
bGlzdGVuZXIgPSBsaXN0ZW5lcjsKIH0KIAotYm9vbCBTcGVlY2hJbnB1dENsaWVudEltcGw6OnN0
YXJ0UmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZWxl
bWVudFJlY3QpCitib29sIFNwZWVjaElucHV0Q2xpZW50SW1wbDo6c3RhcnRSZWNvZ25pdGlvbihp
bnQgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlLCBjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0JiBlbGVtZW50UmVjdCkKIHsKICAgICBBU1NFUlQobV9saXN0ZW5lcik7Ci0gICAgcmV0dXJu
IG1fY29udHJvbGxlci0+c3RhcnRSZWNvZ25pdGlvbihyZXF1ZXN0SWQsIGVsZW1lbnRSZWN0KTsK
KyAgICByZXR1cm4gbV9jb250cm9sbGVyLT5zdGFydFJlY29nbml0aW9uKHJlcXVlc3RJZCwgbGFu
Z3VhZ2UsIGVsZW1lbnRSZWN0KTsKIH0KIAogdm9pZCBTcGVlY2hJbnB1dENsaWVudEltcGw6OnN0
b3BSZWNvcmRpbmcoaW50IHJlcXVlc3RJZCkKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9z
cmMvU3BlZWNoSW5wdXRDbGllbnRJbXBsLmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL1NwZWVjaElu
cHV0Q2xpZW50SW1wbC5oCmluZGV4IDgxN2IzMmIxMjQxNGIzYTA3ZGZhM2FlMzUxOTA4N2RlYTVh
MGY3MzMuLmQyNjM1MDFhZTUxNDgzMzBmYTdlODI5ODkyY2ZhMDRiZWJiNDdlNjMgMTAwNjQ0Ci0t
LSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvU3BlZWNoSW5wdXRDbGllbnRJbXBsLmgKKysrIGIvV2Vi
S2l0L2Nocm9taXVtL3NyYy9TcGVlY2hJbnB1dENsaWVudEltcGwuaApAQCAtMzUsNiArMzUsMTMg
QEAKIAogI2luY2x1ZGUgIldlYlNwZWVjaElucHV0TGlzdGVuZXIuaCIKICNpbmNsdWRlICJwYWdl
L1NwZWVjaElucHV0Q2xpZW50LmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRl
IDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworbmFtZXNwYWNl
IFdURiB7CitjbGFzcyBTdHJpbmc7Cit9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFNw
ZWVjaElucHV0TGlzdGVuZXI7CkBAIC00OSwxMiArNTYsMTIgQEAgY2xhc3MgU3BlZWNoSW5wdXRD
bGllbnRJbXBsCiAgICAgOiBwdWJsaWMgV2ViQ29yZTo6U3BlZWNoSW5wdXRDbGllbnQsCiAgICAg
ICBwdWJsaWMgV2ViU3BlZWNoSW5wdXRMaXN0ZW5lciB7CiBwdWJsaWM6Ci0gICAgU3BlZWNoSW5w
dXRDbGllbnRJbXBsKFdlYlZpZXdDbGllbnQqKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxTcGVl
Y2hJbnB1dENsaWVudEltcGw+IGNyZWF0ZShXZWJWaWV3Q2xpZW50Kik7CiAgICAgdmlydHVhbCB+
U3BlZWNoSW5wdXRDbGllbnRJbXBsKCk7CiAKICAgICAvLyBTcGVlY2hJbnB1dENsaWVudCBtZXRo
b2RzLgogICAgIHZvaWQgc2V0TGlzdGVuZXIoV2ViQ29yZTo6U3BlZWNoSW5wdXRMaXN0ZW5lciop
OwotICAgIGJvb2wgc3RhcnRSZWNvZ25pdGlvbihpbnQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
KTsKKyAgICBib29sIHN0YXJ0UmVjb2duaXRpb24oaW50LCBjb25zdCBTdHJpbmcmLCBjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0Jik7CiAgICAgdm9pZCBzdG9wUmVjb3JkaW5nKGludCk7CiAgICAgdm9p
ZCBjYW5jZWxSZWNvZ25pdGlvbihpbnQpOwogCkBAIC02NCw2ICs3MSw4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGRpZENvbXBsZXRlUmVjb2duaXRpb24oaW50KTsKIAogcHJpdmF0ZToKKyAgICBTcGVl
Y2hJbnB1dENsaWVudEltcGwoV2ViVmlld0NsaWVudCopOworCiAgICAgV2ViU3BlZWNoSW5wdXRD
b250cm9sbGVyKiBtX2NvbnRyb2xsZXI7IC8vIFRvIGNhbGwgaW50byB0aGUgZW1iZWRkZXIuCiAg
ICAgV2ViQ29yZTo6U3BlZWNoSW5wdXRMaXN0ZW5lciogbV9saXN0ZW5lcjsKIH07CmRpZmYgLS1n
aXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBs
LmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0lt
cGwuY3BwCmluZGV4IDYwYzRmZWQ4NTJiMjg0ZTAyNzFhZDAwZWQ5NzEwMDJhMmY1N2E0YjYuLjQ1
YzZmZjA4NjJmMDI0ZmMxODA1NzMzYzE2YTkzMzA1NzM3YWMzOTMgMTAwNjQ0Ci0tLSBhL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGwuY3BwCisrKyBi
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGwuY3Bw
CkBAIC01Nyw3ICs1NywxMiBAQCBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6fldl
YlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsKCkKIAogdm9pZCBXZWJTcGVlY2hJbnB1dENv
bnRyb2xsZXJNb2NrSW1wbDo6c2V0TW9ja1JlY29nbml0aW9uUmVzdWx0KGNvbnN0IFdlYlN0cmlu
ZyYgcmVzdWx0KQogewotICAgIG1fd2ViY29yZU1vY2stPnNldFJlY29nbml0aW9uUmVzdWx0KHJl
c3VsdCk7CisgICAgbV93ZWJjb3JlTW9jay0+c2V0UmVjb2duaXRpb25SZXN1bHQocmVzdWx0LCBX
ZWJTdHJpbmc6OmZyb21VVEY4KCIiKSk7Cit9CisKK3ZvaWQgV2ViU3BlZWNoSW5wdXRDb250cm9s
bGVyTW9ja0ltcGw6OnNldE1vY2tSZWNvZ25pdGlvblJlc3VsdChjb25zdCBXZWJTdHJpbmcmIHJl
c3VsdCwgY29uc3QgV2ViU3RyaW5nICZsYW5ndWFnZSkKK3sKKyAgICBtX3dlYmNvcmVNb2NrLT5z
ZXRSZWNvZ25pdGlvblJlc3VsdChyZXN1bHQsIGxhbmd1YWdlKTsKIH0KIAogdm9pZCBXZWJTcGVl
Y2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6ZGlkQ29tcGxldGVSZWNvcmRpbmcoaW50IHJlcXVl
c3RJZCkKQEAgLTc1LDkgKzgwLDkgQEAgdm9pZCBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2Nr
SW1wbDo6c2V0UmVjb2duaXRpb25SZXN1bHQoaW50IHJlcXVlc3RJZCwgY29uc3QKICAgICBtX2xp
c3RlbmVyLT5zZXRSZWNvZ25pdGlvblJlc3VsdChyZXF1ZXN0SWQsIHJlc3VsdCk7CiB9CiAKLWJv
b2wgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OnN0YXJ0UmVjb2duaXRpb24oaW50
IHJlcXVlc3RJZCwgY29uc3QgV2ViUmVjdCYgZWxlbWVudFJlY3QpCitib29sIFdlYlNwZWVjaElu
cHV0Q29udHJvbGxlck1vY2tJbXBsOjpzdGFydFJlY29nbml0aW9uKGludCByZXF1ZXN0SWQsIGNv
bnN0IFdlYlN0cmluZyYgbGFuZ3VhZ2UsIGNvbnN0IFdlYlJlY3QmIGVsZW1lbnRSZWN0KQogewot
ICAgIHJldHVybiBtX3dlYmNvcmVNb2NrLT5zdGFydFJlY29nbml0aW9uKHJlcXVlc3RJZCwgZWxl
bWVudFJlY3QpOworICAgIHJldHVybiBtX3dlYmNvcmVNb2NrLT5zdGFydFJlY29nbml0aW9uKHJl
cXVlc3RJZCwgbGFuZ3VhZ2UsIGVsZW1lbnRSZWN0KTsKIH0KIAogdm9pZCBXZWJTcGVlY2hJbnB1
dENvbnRyb2xsZXJNb2NrSW1wbDo6Y2FuY2VsUmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCkKZGlm
ZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9j
a0ltcGwuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9j
a0ltcGwuaAppbmRleCBlZGJmY2EzZWU2MGU5Mzk0Mjg5M2UyNzIxODkzZTQzYTBlYjg3YzVmLi4x
YjMwNTNiZjA5Mjc1M2VmNzkyOTNkZGNhMTJlODQzNTIwNmJkYmMwIDEwMDY0NAotLS0gYS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsLmgKKysrIGIv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbC5oCkBA
IC0zNyw2ICszNywxMCBAQAogI2luY2x1ZGUgIldlYlN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9P
d25QdHIuaD4KIAorbmFtZXNwYWNlIFdURiB7CitjbGFzcyBTdHJpbmc7Cit9CisKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIGNsYXNzIFNwZWVjaElucHV0Q2xpZW50TW9jazsKIH0KQEAgLTU3LDExICs2
MSwxNSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRSZWNvZ25pdGlvblJlc3VsdChpbnQgcmVxdWVz
dElkLCBjb25zdCBXVEY6OlN0cmluZyYgcmVzdWx0KTsKIAogICAgIC8vIFdlYlNwZWVjaElucHV0
Q29udHJvbGxlciBtZXRob2RzLgotICAgIGJvb2wgc3RhcnRSZWNvZ25pdGlvbihpbnQgcmVxdWVz
dElkLCBjb25zdCBXZWJSZWN0JiBlbGVtZW50UmVjdCk7CisgICAgYm9vbCBzdGFydFJlY29nbml0
aW9uKGludCByZXF1ZXN0SWQsIGNvbnN0IFdlYlN0cmluZyYgbGFuZ3VhZ2UsIGNvbnN0IFdlYlJl
Y3QmIGVsZW1lbnRSZWN0KTsKICAgICB2b2lkIGNhbmNlbFJlY29nbml0aW9uKGludCByZXF1ZXN0
SWQpOwogICAgIHZvaWQgc3RvcFJlY29yZGluZyhpbnQgcmVxdWVzdElkKTsKIAogICAgIC8vIFdl
YlNwZWVjaElucHV0Q29udHJvbGxlck1vY2sgbWV0aG9kcy4KKyAgICB2b2lkIHNldE1vY2tSZWNv
Z25pdGlvblJlc3VsdChjb25zdCBXZWJTdHJpbmcmIHJlc3VsdCwgY29uc3QgV2ViU3RyaW5nJiBs
YW5ndWFnZSk7CisKKyAgICAvLyBGSVhNRTogdGhpcyBpcyBhIGZpeCBmb3IgYSB0d28tc2lkZWQg
cGF0Y2guIERlbGV0ZSBhcyBzb29uIGFzIHRoZSBjaHJvbWl1bSBzaWRlIGlzIHBhdGNoZWQuCisg
ICAgLy8gQ2hyb21pdW0gcGF0Y2ggbm90IHVwbG9hZGVkIHlldCwgYnV0IHdpbGwgZGVwZW5kIG9u
IGh0dHA6Ly9jb2RlcmV2aWV3LmNocm9taXVtLm9yZy8zNjE1MDA1L3Nob3cgcGF0Y2guCiAgICAg
dm9pZCBzZXRNb2NrUmVjb2duaXRpb25SZXN1bHQoY29uc3QgV2ViU3RyaW5nJiByZXN1bHQpOwog
CiBwcml2YXRlOgpAQCAtNzIsNCArODAsMyBAQCBwcml2YXRlOgogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CiAKICNlbmRpZiAvLyBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbF9oCi0KZGlm
ZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggMGIzM2QxNzRjMjM4NDM0MzUxZDkwZjVm
ODgwOTU1MDVkMDYyZTNmZC4uZGM0MTY0YTM4NjNmNDczNWYyNDE3YzA4Y2QzMTNjOTc4N2UyOGY5
MiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTg4LDYgKzg4LDcgQEAKICNp
bmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNlbGVjdGlvbkNvbnRyb2xsZXIu
aCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIlNwZWVjaElucHV0Q2xpZW50SW1w
bC5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSAiVHlwaW5nQ29tbWFuZC5oIgogI2lu
Y2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9yLmgiCkBAIC0yNzUsNyArMjc2LDcgQEAgV2ViVmll
d0ltcGw6OldlYlZpZXdJbXBsKFdlYlZpZXdDbGllbnQqIGNsaWVudCwgV2ViRGV2VG9vbHNBZ2Vu
dENsaWVudCogZGV2VG9vbHMKICAgICAsIG1fY29tcG9zaXRvckNyZWF0aW9uRmFpbGVkKGZhbHNl
KQogI2VuZGlmCiAjaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKLSAgICAsIG1fc3BlZWNoSW5wdXRD
bGllbnQoY2xpZW50KQorICAgICwgbV9zcGVlY2hJbnB1dENsaWVudChTcGVlY2hJbnB1dENsaWVu
dEltcGw6OmNyZWF0ZShjbGllbnQpKQogI2VuZGlmCiAgICAgLCBtX2RldmljZU9yaWVudGF0aW9u
Q2xpZW50UHJveHkobmV3IERldmljZU9yaWVudGF0aW9uQ2xpZW50UHJveHkoY2xpZW50ID8gY2xp
ZW50LT5kZXZpY2VPcmllbnRhdGlvbkNsaWVudCgpIDogMCkpCiB7CkBAIC0yOTgsNyArMjk5LDcg
QEAgV2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKFdlYlZpZXdDbGllbnQqIGNsaWVudCwgV2ViRGV2
VG9vbHNBZ2VudENsaWVudCogZGV2VG9vbHMKICAgICBwYWdlQ2xpZW50cy5kcmFnQ2xpZW50ID0g
Jm1fZHJhZ0NsaWVudEltcGw7CiAgICAgcGFnZUNsaWVudHMuaW5zcGVjdG9yQ2xpZW50ID0gJm1f
aW5zcGVjdG9yQ2xpZW50SW1wbDsKICNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQotICAgIHBhZ2VD
bGllbnRzLnNwZWVjaElucHV0Q2xpZW50ID0gJm1fc3BlZWNoSW5wdXRDbGllbnQ7CisgICAgcGFn
ZUNsaWVudHMuc3BlZWNoSW5wdXRDbGllbnQgPSBtX3NwZWVjaElucHV0Q2xpZW50LmdldCgpOwog
I2VuZGlmCiAgICAgcGFnZUNsaWVudHMuZGV2aWNlT3JpZW50YXRpb25DbGllbnQgPSBtX2Rldmlj
ZU9yaWVudGF0aW9uQ2xpZW50UHJveHkuZ2V0KCk7CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViVmlld0ltcGwuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwu
aAppbmRleCAwNTBiNWUxNmFhNTJmMjMwYzk4NDllZDg0ODIzOTYwY2M5NmE4MDYzLi43MTJlYjdh
NDA4MzUwOTA0YTg5NWEzZDhmMDc5MjAyM2E2ZGJhYjliIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3
SW1wbC5oCkBAIC00OSw3ICs0OSw2IEBACiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUg
IkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlvblByZXNlbnRl
ckltcGwuaCIKLSNpbmNsdWRlICJTcGVlY2hJbnB1dENsaWVudEltcGwuaCIKICNpbmNsdWRlIDx3
dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIApAQCAtNzQsNiArNzMs
NyBAQCBjbGFzcyBBdXRvRmlsbFBvcHVwTWVudUNsaWVudDsKIGNsYXNzIENvbnRleHRNZW51Q2xp
ZW50SW1wbDsKIGNsYXNzIERldmljZU9yaWVudGF0aW9uQ2xpZW50UHJveHk7CiBjbGFzcyBEcmFn
U2Nyb2xsVGltZXI7CitjbGFzcyBTcGVlY2hJbnB1dENsaWVudEltcGw7CiBjbGFzcyBXZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0OwogY2xhc3MgV2ViRGV2VG9vbHNBZ2VudENsaWVudDsKIGNsYXNzIFdl
YkRldlRvb2xzQWdlbnRQcml2YXRlOwpAQCAtNTQzLDcgKzU0Myw3IEBAIHByaXZhdGU6CiAgICAg
c3RhdGljIGNvbnN0IFdlYklucHV0RXZlbnQqIG1fY3VycmVudElucHV0RXZlbnQ7CiAKICNpZiBF
TkFCTEUoSU5QVVRfU1BFRUNIKQotICAgIFNwZWVjaElucHV0Q2xpZW50SW1wbCBtX3NwZWVjaElu
cHV0Q2xpZW50OworICAgIE93blB0cjxTcGVlY2hJbnB1dENsaWVudEltcGw+IG1fc3BlZWNoSW5w
dXRDbGllbnQ7CiAjZW5kaWYKICAgICAvLyBJZiB3ZSBhdHRlbXB0IHRvIGZldGNoIHRoZSBvbi1z
Y3JlZW4gR3JhcGhpY3NDb250ZXh0M0QgYmVmb3JlCiAgICAgLy8gdGhlIGNvbXBvc2l0b3IgaGFz
IGJlZW4gdHVybmVkIG9uLCB3ZSBuZWVkIHRvIGluc3RhbnRpYXRlIGl0CmRpZmYgLS1naXQgYS9X
ZWJLaXRUb29scy9DaGFuZ2VMb2cgYi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKaW5kZXggZTliZDMx
MDdlNTE4M2EyMWE4YTJhZjVhNzYxNWJlNjgyNjNkYzJkNy4uMmRhYmYxNDJlZWY0OGE3ODAzOWQ3
NjcwNmVhYTkxMmViOWM5M2VmMyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCisr
KyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEwLTEwLTEzICBM
ZWFuZHJvIEdyYWNpw6EgR2lsICA8bGVhbmRyb2dyYWNpYUBnb29nbGUuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGEgc2Vjb25kIHBh
cmFtZXRlciB0byBzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQgZm9yCisgICAgICAgIHRoZSBsYW5n
dWFnZSB1c2VkIGluIHNwZWVjaCBpbnB1dC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQ3MDg5CisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlv
dXRUZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHRD
YWxsYmFjayk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIu
aDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxl
ci5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja1NwZWVjaElucHV0
UmVzdWx0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xs
ZXJHdGsuY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tTcGVlY2hJ
bnB1dFJlc3VsdCk6CisKIDIwMTAtMTAtMTIgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCmRpZmYgLS1naXQgYS9X
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAgYi9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKaW5kZXggMGE3
YzExZmU1OGU3ZmUzNjZhNzBiNmNkMjI3NGIzN2RhNWQyNzg3Mi4uMDY3Y2QwMTQyMzQ4Y2I4NWUy
MDY3OGY0YTI3NWVmOTM1MGMyZTYxMCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcApAQCAtMTA3MCwxNCArMTA3MCwxNyBAQCBz
dGF0aWMgSlNWYWx1ZVJlZiBzZXRNb2NrR2VvbG9jYXRpb25FcnJvckNhbGxiYWNrKEpTQ29udGV4
dFJlZiBjb250ZXh0LCBKU09iamVjdAogCiBzdGF0aWMgSlNWYWx1ZVJlZiBzZXRNb2NrU3BlZWNo
SW5wdXRSZXN1bHRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVu
Y3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25z
dCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7Ci0gICAg
aWYgKGFyZ3VtZW50Q291bnQgPCAxKQorICAgIGlmIChhcmd1bWVudENvdW50IDwgMikKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogCiAgICAgSlNSZXRhaW5Q
dHI8SlNTdHJpbmdSZWY+IHJlc3VsdChBZG9wdCwgSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0
LCBhcmd1bWVudHNbMF0sIGV4Y2VwdGlvbikpOwogICAgIEFTU0VSVCghKmV4Y2VwdGlvbik7CiAK
KyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gbGFuZ3VhZ2UoQWRvcHQsIEpTVmFsdWVUb1N0
cmluZ0NvcHkoY29udGV4dCwgYXJndW1lbnRzWzFdLCBleGNlcHRpb24pKTsKKyAgICBBU1NFUlQo
ISpleGNlcHRpb24pOworCiAgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBz
dGF0aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlz
T2JqZWN0KSk7Ci0gICAgY29udHJvbGxlci0+c2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KHJlc3Vs
dC5nZXQoKSk7CisgICAgY29udHJvbGxlci0+c2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KHJlc3Vs
dC5nZXQoKSwgbGFuZ3VhZ2UuZ2V0KCkpOwogCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZp
bmVkKGNvbnRleHQpOwogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
TGF5b3V0VGVzdENvbnRyb2xsZXIuaCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91
dFRlc3RDb250cm9sbGVyLmgKaW5kZXggNzU1YTJiMmI5YzY4ODViNzk2YTAzZTUyZDUwMjBkODhi
NDNkZDk4Yi4uYmNjYzBhMDYwZWVmODc5ODYyNDAyNTkxOGYzOTY2NjIyMjU4OGRlMSAxMDA2NDQK
LS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAor
KysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCkBA
IC05NCw3ICs5NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE1vY2tEZXZpY2VPcmllbnRhdGlv
bihib29sIGNhblByb3ZpZGVBbHBoYSwgZG91YmxlIGFscGhhLCBib29sIGNhblByb3ZpZGVCZXRh
LCBkb3VibGUgYmV0YSwgYm9vbCBjYW5Qcm92aWRlR2FtbWEsIGRvdWJsZSBnYW1tYSk7CiAgICAg
dm9pZCBzZXRNb2NrR2VvbG9jYXRpb25FcnJvcihpbnQgY29kZSwgSlNTdHJpbmdSZWYgbWVzc2Fn
ZSk7CiAgICAgdm9pZCBzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihkb3VibGUgbGF0aXR1ZGUs
IGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSk7Ci0gICAgdm9pZCBzZXRNb2NrU3Bl
ZWNoSW5wdXRSZXN1bHQoSlNTdHJpbmdSZWYgcmVzdWx0KTsKKyAgICB2b2lkIHNldE1vY2tTcGVl
Y2hJbnB1dFJlc3VsdChKU1N0cmluZ1JlZiByZXN1bHQsIEpTU3RyaW5nUmVmIGxhbmd1YWdlVGFn
KTsKICAgICB2b2lkIHNldFBlcnNpc3RlbnRVc2VyU3R5bGVTaGVldExvY2F0aW9uKEpTU3RyaW5n
UmVmIHBhdGgpOwogICAgIHZvaWQgc2V0UGx1Z2luc0VuYWJsZWQoYm9vbCBmbGFnKTsKICAgICB2
b2lkIHNldFBvcHVwQmxvY2tpbmdFbmFibGVkKGJvb2wgZmxhZyk7CmRpZmYgLS1naXQgYS9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAg
Yi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxl
ci5jcHAKaW5kZXggZDc3NzRlOTk2N2JlODY5YTRkMzUzNjk2ZmMwNGNjM2ZkZjk4MWRkYS4uM2Nj
Yjc0MjY0MGY0ZDJmYTE0MmE3MTg5YjM4ZWYzM2ViZDQwZmM5NCAxMDA2NDQKLS0tIGEvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCisr
KyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9s
bGVyLmNwcApAQCAtMTUyNSwxMCArMTUyNSwxMCBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVy
OjphYm9ydE1vZGFsKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYQog
dm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KGNvbnN0
IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCiB7CiAgICAg
cmVzdWx0LT5zZXROdWxsKCk7Ci0gICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgPCAxIHx8ICFhcmd1
bWVudHNbMF0uaXNTdHJpbmcoKSkKKyAgICBpZiAoYXJndW1lbnRzLnNpemUoKSA8IDIgfHwgIWFy
Z3VtZW50c1swXS5pc1N0cmluZygpIHx8ICFhcmd1bWVudHNbMV0uaXNTdHJpbmcoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgbV9zcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrLT5zZXRNb2NrUmVj
b2duaXRpb25SZXN1bHQoY3BwVmFyaWFudFRvV2ViU3RyaW5nKGFyZ3VtZW50c1swXSkpOworICAg
IG1fc3BlZWNoSW5wdXRDb250cm9sbGVyTW9jay0+c2V0TW9ja1JlY29nbml0aW9uUmVzdWx0KGNw
cFZhcmlhbnRUb1dlYlN0cmluZyhhcmd1bWVudHNbMF0pLCBjcHBWYXJpYW50VG9XZWJTdHJpbmco
YXJndW1lbnRzWzFdKSk7CiB9CiAKIFdlYktpdDo6V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyKiBM
YXlvdXRUZXN0Q29udHJvbGxlcjo6c3BlZWNoSW5wdXRDb250cm9sbGVyKFdlYktpdDo6V2ViU3Bl
ZWNoSW5wdXRMaXN0ZW5lciogbGlzdGVuZXIpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwIGIvV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcAppbmRleCBkODMx
MDc2M2RlNjY0ZjM5NTI0MDQ0ZTdmODVmNzc1NWJkNDhmMWMwLi44NjdmMzI3ZDZmNmUyNmRlMTIz
YTBjZTlmMzM3Yjg4ZGM1Y2QxZTZiIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAKQEAgLTQ4OCw3ICs0
ODgsNyBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRHZW9sb2NhdGlvblBlcm1pc3Np
b24oYm9vbCBhbGxvdykKICAgICBzZXRHZW9sb2NhdGlvblBlcm1pc3Npb25Db21tb24oYWxsb3cp
OwogfQogCi12b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrU3BlZWNoSW5wdXRSZXN1
bHQoSlNTdHJpbmdSZWYgcmVzdWx0KQordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9j
a1NwZWVjaElucHV0UmVzdWx0KEpTU3RyaW5nUmVmIHJlc3VsdCwgSlNTdHJpbmdSZWYgbGFuZ3Vh
Z2UpCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3Igc3BlZWNoIGlucHV0IGxheW91dCB0
ZXN0cy4KICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTM5NDg1Lgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70867</attachid>
            <date>2010-10-15 08:05:51 -0700</date>
            <delta_ts>2010-10-19 06:54:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47089-20101015160549.patch</filename>
            <type>text/plain</type>
            <size>36793</size>
            <attacher name="Leandro Graciá Gil">leandrogracia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhNDA3ODFhYTkzNTVkZWQ2ZDU4NmZmYWJjMWFlNzQxZTkzZDJlNWMyLi40OTU4M2Ni
ZmRiMzg3ZDcwYzg0YThkYmI5MTYxMjkxODdhZTIzMGU5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAK
KzIwMTAtMTAtMTUgIExlYW5kcm8gR3JhY2nDoSBHaWwgIDxsZWFuZHJvZ3JhY2lhQGdvb2dsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
ZWQgYSBsYXlvdXQgdGVzdCBmb3IgdGhlIGxhbmd1YWdlIHRhZyBpbiBzcGVlY2ggaW5wdXQuIFVw
ZGF0ZWQKKyAgICAgICAgdGhlIHNwZWVjaCBidXR0b24gdGVzdHMgdG8gaW5jbHVkZSB0aGUgbmV3
IGxhbmd1YWdlIHBhcmFtZXRlciBpbiB0aGUKKyAgICAgICAgbW9jayByZXN1bHQuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzA4OQorCisgICAgICAg
ICogZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1sYW5ndWFnZS10YWctZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L3NwZWVjaC9pbnB1dC10ZXh0LWxhbmd1YWdlLXRhZy5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L3NwZWVjaC9pbnB1dC10ZXh0LXNwZWVjaGJ1dHRvbi5odG1s
OiBBZGRlZCBhbiBlbXB0eSBsYW5ndWFnZQorICAgICAgICAgIHBhcmFtZXRlci4KKyAgICAgICAg
KiBmYXN0L3NwZWVjaC9zcGVlY2gtYnV0dG9uLWlnbm9yZS1nZW5lcmF0ZWQtZXZlbnRzLmh0bWw6
IEFkZGVkIGFuCisgICAgICAgICAgZW1wdHkgbGFuZ3VhZ2UgcGFyYW1ldGVyLgorICAgICAgICAq
IHBsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dDogbGFuZ3VhZ2UgdGFnIHRl
c3QgaXMgZXhwZWN0ZWQKKyAgICAgICAgICB0byBmYWlsIHVudGlsIHRoZSBjaHJvbWl1bS1zaWRl
IHBhdGNoIGhhcyBiZWVuIGFwcGxpZWQuCisKIDIwMTAtMTAtMTUgIEFsZWphbmRybyBHLiBDYXN0
cm8gIDxhbGV4QGlnYWxpYS5jb20+CiAKICAgICAgICAgUmViYXNlbGluZSBzb21lIGZhaWxpbmcg
dGVzdHMgdG8gdGhlIGZvcm1lciByZXN1bHRzLCBhcHBhcmVudGx5CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L3NwZWVjaC9pbnB1dC10ZXh0LWxhbmd1YWdlLXRhZy1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9pbnB1dC10ZXh0LWxhbmd1YWdlLXRhZy1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOTFmMzBkNjk2ZjVkMjUwZjE0YWY1NmI5OWI0ZTcwYzg3OWMwZTUw
MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL2lucHV0LXRleHQt
bGFuZ3VhZ2UtdGFnLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEzIEBACitUZXN0cyBmb3IgbGFu
Z3VhZ2UgdGFnIGluaGVyaXRhbmNlIGFuZCB2YWxpZGF0aW9uIGluIHNwZWVjaCBidXR0b25zLgor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgic3BlZWNoSW5wdXROb25lIikudmFsdWUgaXMgImVycm9yOiBubyByZXN1bHQgZm91bmQg
Zm9yIGxhbmd1YWdlICcnIgorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3BlZWNoSW5w
dXRFbGVtZW50IikudmFsdWUgaXMgIlBpY3R1cmVzIG9mIHRoZSBtb29uIgorUEFTUyBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgic3BlZWNoSW5wdXRJbmhlcml0ZWQiKS52YWx1ZSBpcyAi5pyI44Gu
5YaZ55yfIgorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3BlZWNoSW5wdXRJbnZhbGlk
IikudmFsdWUgaXMgImVycm9yOiBubyByZXN1bHQgZm91bmQgZm9yIGxhbmd1YWdlICcnIgorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisgCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9pbnB1dC10ZXh0LWxhbmd1YWdlLXRhZy5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1sYW5ndWFnZS10YWcuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi45YmZjODIyNjJlZTMwYTJjNWZhNWUyNTgxNjFlYThhMWUxOGU2NWFmCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1sYW5ndWFn
ZS10YWcuaHRtbApAQCAtMCwwICsxLDYyIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lF
VEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxoZWFk
PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1z
dHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Citk
ZXNjcmlwdGlvbignVGVzdHMgZm9yIGxhbmd1YWdlIHRhZyBpbmhlcml0YW5jZSBhbmQgdmFsaWRh
dGlvbiBpbiBzcGVlY2ggYnV0dG9ucy4nKTsKKworLy8gTm90ZTogdGVzdCBjYXNlcyBhcmUgc2Vx
dWVudGlhbCB0byBlbnN1cmUgdGhhdCBubyBuZXcgcmVjb2duaXRpb24gc3RhcnRzIHdoZW4gYW5v
dGhlciByZWNvZ25pdGlvbiByZWNvcmRpbmcgaXMgYWN0aXZlLgorZnVuY3Rpb24gb25DaGFuZ2VO
b25lKCkgeworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInNwZWVjaElucHV0Tm9uZSIpLnZhbHVlJywgJ2Vycm9yOiBubyByZXN1bHQgZm91bmQgZm9y
IGxhbmd1YWdlIFwnXCcnKTsKKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzcGVlY2hCdXR0
b25DbGljaygnc3BlZWNoSW5wdXRFbGVtZW50Jyk7IH0sIDUwKTsKK30KKworZnVuY3Rpb24gb25D
aGFuZ2VFbGVtZW50KCkgeworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInNwZWVjaElucHV0RWxlbWVudCIpLnZhbHVlJywgJ1BpY3R1cmVzIG9mIHRo
ZSBtb29uJyk7CisgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc3BlZWNoQnV0dG9uQ2xpY2so
J3NwZWVjaElucHV0SW5oZXJpdGVkJyk7IH0sIDUwKTsKK30KKworZnVuY3Rpb24gb25DaGFuZ2VJ
bmhlcml0ZWQoKSB7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgic3BlZWNoSW5wdXRJbmhlcml0ZWQiKS52YWx1ZScsICfmnIjjga7lhpnnnJ8nKTsK
KyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzcGVlY2hCdXR0b25DbGljaygnc3BlZWNoSW5w
dXRJbnZhbGlkJyk7IH0sIDUwKTsKK30KKworZnVuY3Rpb24gb25DaGFuZ2VJbnZhbGlkKCkgewor
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNwZWVj
aElucHV0SW52YWxpZCIpLnZhbHVlJywgJ2Vycm9yOiBubyByZXN1bHQgZm91bmQgZm9yIGxhbmd1
YWdlIFwnXCcnKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworZnVuY3Rpb24gc3BlZWNoQnV0
dG9uQ2xpY2soZWxlbWVudElkKSB7CisgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZChlbGVtZW50SWQpOworICAgIHZhciB4ID0gZWxlbWVudC5vZmZzZXRMZWZ0ICsgZWxl
bWVudC5vZmZzZXRXaWR0aCAtIDQ7CisgICAgdmFyIHkgPSBlbGVtZW50Lm9mZnNldFRvcCArIGVs
ZW1lbnQub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5
KTsKKyAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVVw
KCk7Cit9CisKK2Z1bmN0aW9uIHJ1bigpIHsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyICYmIHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5zZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoJ1BpY3R1cmVzIG9mIHRoZSBtb29uJywgJ2Vu
LUdCJyk7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldE1vY2tTcGVlY2hJbnB1dFJl
c3VsdCgn5pyI44Gu5YaZ55yfJywgJ2phJyk7CisgICAgICAgIHNwZWVjaEJ1dHRvbkNsaWNrKCdz
cGVlY2hJbnB1dE5vbmUnKTsKKyAgICB9Cit9CisKK3dpbmRvdy5vbmxvYWQgPSBydW47Cit3aW5k
b3cuanNUZXN0SXNBc3luYyA9IHRydWU7Cit3aW5kb3cuc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1
ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorPGlucHV0IGlkPSJzcGVlY2hJbnB1dE5vbmUiIHgtd2Via2l0LXNwZWVj
aCBvbndlYmtpdHNwZWVjaGNoYW5nZT0ib25DaGFuZ2VOb25lKCkiPgorPGlucHV0IGlkPSJzcGVl
Y2hJbnB1dEVsZW1lbnQiIHgtd2Via2l0LXNwZWVjaCBvbndlYmtpdHNwZWVjaGNoYW5nZT0ib25D
aGFuZ2VFbGVtZW50KCkiIGxhbmc9ImVuLUdCIj4KKzxkaXYgbGFuZz0iamEiPiA8aW5wdXQgaWQ9
InNwZWVjaElucHV0SW5oZXJpdGVkIiB4LXdlYmtpdC1zcGVlY2ggb253ZWJraXRzcGVlY2hjaGFu
Z2U9Im9uQ2hhbmdlSW5oZXJpdGVkKCkiPiA8L2Rpdj4KKzxpbnB1dCBpZD0ic3BlZWNoSW5wdXRJ
bnZhbGlkIiB4LXdlYmtpdC1zcGVlY2ggb253ZWJraXRzcGVlY2hjaGFuZ2U9Im9uQ2hhbmdlSW52
YWxpZCgpIiBsYW5nPSIxMzM3JMO+M867ayI+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9pbnB1dC10ZXh0LXNwZWVjaGJ1dHRvbi5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1zcGVlY2hidXR0b24uaHRtbAppbmRl
eCA2ZjViYzRiMTIxZmI0ZjlkOWRkYTZjMzMxZjhiMjZkYzFjZDQzOTk0Li5jZWY3NzA1NmIxN2Qx
Y2Q0NTFiNDkwYjdjMWYyNDZiYTZjODk1MGRiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0
L3NwZWVjaC9pbnB1dC10ZXh0LXNwZWVjaGJ1dHRvbi5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zh
c3Qvc3BlZWNoL2lucHV0LXRleHQtc3BlZWNoYnV0dG9uLmh0bWwKQEAgLTMyLDcgKzMyLDcgQEAg
ZnVuY3Rpb24gb25XZWJraXRTcGVlY2hDaGFuZ2UoKSB7CiAKIGZ1bmN0aW9uIHJ1bigpIHsKICAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyICYmIHdpbmRvdy5ldmVudFNlbmRlcikg
ewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQo
J1BpY3R1cmVzIG9mIHRoZSBtb29uJyk7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNl
dE1vY2tTcGVlY2hJbnB1dFJlc3VsdCgnUGljdHVyZXMgb2YgdGhlIG1vb24nLCAnJyk7CiAKICAg
ICAgICAgLy8gQ2xpY2tpbmcgdGhlIHNwZWVjaCBidXR0b24gc2hvdWxkIGZpbGwgaW4gbW9jayBz
cGVlY2gtcmVjb2duaXplZCB0ZXh0LgogICAgICAgICB2YXIgaW5wdXQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnc3BlZWNoSW5wdXQnKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
c3BlZWNoL3NwZWVjaC1idXR0b24taWdub3JlLWdlbmVyYXRlZC1ldmVudHMuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3Qvc3BlZWNoL3NwZWVjaC1idXR0b24taWdub3JlLWdlbmVyYXRlZC1ldmVudHMu
aHRtbAppbmRleCBiOWI4ZWMzNjYwNTU3OWYyYjEyNmQ2ZjFkYTM1NjBjNjcyYWQyYjcxLi5jNjg0
ODYzNzcwNTMzOTliMjlkMDRmYzI5OTA3ZTU1ZThhYmYwNjA4IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9mYXN0L3NwZWVjaC9zcGVlY2gtYnV0dG9uLWlnbm9yZS1nZW5lcmF0ZWQtZXZlbnRzLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvc3BlZWNoLWJ1dHRvbi1pZ25vcmUtZ2Vu
ZXJhdGVkLWV2ZW50cy5odG1sCkBAIC00OSw3ICs0OSw3IEBAIGZ1bmN0aW9uIHNldHVwRGlzcGF0
Y2hFdmVudFRlc3QoKSB7CiBmdW5jdGlvbiBydW4oKSB7CiAgICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlciAmJiB3aW5kb3cuZXZlbnRTZW5kZXIpIHsKICAgICAgICAgLy8gUnVubmlu
ZyBpbiBEUlQsIHRlc3QgdGhlIGV2ZW50U2VuZGVyIGNhc2UuCi0gICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdCgnUGljdHVyZXMgb2YgdGhlIG1vb24n
KTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja1NwZWVjaElucHV0UmVzdWx0
KCdQaWN0dXJlcyBvZiB0aGUgbW9vbicsICcnKTsKICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3NwZWVjaElucHV0Jykub253ZWJraXRzcGVlY2hjaGFuZ2UgPSBmdW5jdGlvbigpIHsK
ICAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInNwZWVjaElucHV0IikudmFsdWUnLCAnUGljdHVyZXMgb2YgdGhlIG1vb24nKTsKIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMu
dHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0
CmluZGV4IGEyNzEwZTcxZDkzZTczM2M4ODFiNTI4ODk2NjcxZTgyODk2YzkyYzkuLmFkYzg2NTdk
ZTYwOGQ4NDAxMDVkYWZiZTNmMzVjZmE5OTQ0Y2VmYzUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKQEAgLTMyMjMsMyArMzIy
Myw2IEBAIEJVR0pBUEhFVCA6IGZhc3QvZG9tL2FuY2hvci1nZXRQYXJhbWV0ZXIuaHRtbCA9IFRF
WFQKIAogLy8gQWRkZWQgaW4gV2Via2l0IHI2OTcwNyB3aXRob3V0IGV4cGVjdGVkIHJlc3VsdHMu
CiBCVUdKQVBIRVQgOiBwbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS9hcmlhLXRhYmxlLWhpZXJh
cmNoeS5odG1sID0gTUlTU0lORworCisvLyBUZW1wb3JhcmlseSBkaXNhYmxlZCBmb3IgYSA0LXNp
ZGVkIHBhdGNoLiBXaWxsIGJlIGVuYWJsZWQgYWdhaW4gYnkgQlVHV0s0NzQyMC4KK0JVR1dLNDcw
ODkgOiBmYXN0L3NwZWVjaC9pbnB1dC10ZXh0LWxhbmd1YWdlLXRhZy5odG1sID0gRkFJTApkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiZjIz
MTUzZmU2MzBiYjU5NDllMjJhZjlmZWU5MzcxZjAxZTljYmYxLi43Zjk5NWU2N2RiZGYxODI2M2E2
Mjg0MGIyM2U4YzgxMDJmMmNkYmExIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEwLTEwLTE1ICBMZWFuZHJv
IEdyYWNpw6EgR2lsICA8bGVhbmRyb2dyYWNpYUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBhdGNoIHRoZSBjdXJyZW50IHNwZWVj
aCBpbnB1dCBpbXBsZW1lbnRhdGlvbiB0byB1c2UgYW5kIHZhbGlkYXRlIHRoZQorICAgICAgICBu
ZWFyZXN0IGxhbmd1YWdlIHRhZy4gVGhlIGxhbmd1YWdlIGlzIG5vdyBwYXNzZWQgdG8gdGhlIHN0
YXJ0UmVjb2duaXRpb24KKyAgICAgICAgbWV0aG9kcyBzbyB0aGF0IGxhbmd1YWdlLXNwZWNpZmlj
IHJlY29nbml0aW9uIGNvdWxkIGJlIHVzZWQuIEFsc28gYWRkZWQKKyAgICAgICAgYSBzZWNvbmQg
cGFyYW1ldGVyIHRvIHNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdCBmb3IgdGhlIGxhbmd1YWdlIHVz
ZWQgaW4KKyAgICAgICAgc3BlZWNoIHJlY29nbml0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDcwODkKKworICAgICAgICBUaGlzIGlzIHRoZSAy
bmQgb2YgYSA0LXNpZGVkIHBhdGNoIGluIENocm9taXVtIGFuZCBXZWJLaXQuIEZvciBtb3JlCisg
ICAgICAgIGRldGFpbHMgc2VlIGh0dHA6Ly9jb2RlcmV2aWV3LmNocm9taXVtLm9yZy8zNjE1MDA1
L3Nob3cgYW5kCisgICAgICAgIGh0dHA6Ly9jb2RlcmV2aWV3LmNocm9taXVtLm9yZy8zNTk1MDE4
L3Nob3cuCisKKyAgICAgICAgVGVzdDogZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1sYW5ndWFnZS10
YWcuaHRtbAorCisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RWxlbWVudDo6Y29tcHV0ZUluaGVyaXRlZExhbmd1YWdlKTogaW5jbHVkZXMgYSBicmllZiBjaGFy
YWN0ZXIKKyAgICAgICAgICB2YWxpZGF0aW9uIGZvciB0aGUgQkNQIDQ3IGxhbmd1YWdlIHRhZy4K
KyAgICAgICAgKiBwYWdlL1NwZWVjaElucHV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVj
aElucHV0OjpzdGFydFJlY29nbml0aW9uKToKKyAgICAgICAgKiBwYWdlL1NwZWVjaElucHV0Lmg6
CisgICAgICAgICogcGFnZS9TcGVlY2hJbnB1dENsaWVudC5oOgorICAgICAgICAqIHBsYXRmb3Jt
L21vY2svU3BlZWNoSW5wdXRDbGllbnRNb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVj
aElucHV0Q2xpZW50TW9jazo6c3RhcnRSZWNvZ25pdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpT
cGVlY2hJbnB1dENsaWVudE1vY2s6OnNldFJlY29nbml0aW9uUmVzdWx0KTogcmVzdWx0cyBhcmUg
bm93CisgICAgICAgICAgc3RvcmVkIGJ5IGxhbmd1YWdlIHVzaW5nIGEgaGFzaCBtYXAuCisgICAg
ICAgIChXZWJDb3JlOjpTcGVlY2hJbnB1dENsaWVudE1vY2s6OnRpbWVyRmlyZWQpOgorICAgICAg
ICAqIHBsYXRmb3JtL21vY2svU3BlZWNoSW5wdXRDbGllbnRNb2NrLmg6CisgICAgICAgICogcmVu
ZGVyaW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0Q29udHJvbElubmVyRWxlbWVudDo6YXR0YWNoSW5uZXJFbGVtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uRWxlbWVudDo6ZGV0YWNoKToKKyAgICAgICAg
KFdlYkNvcmU6OlNwaW5CdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OklucHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRI
YW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50
OjpkZXRhY2gpOgorCiAyMDEwLTEwLTE1ICBSeXVhbiBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5n
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBOaWtvbGFzIFppbW1lcm1hbm4uCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmlu
ZGV4IDY3ZTBmZDBhYzViMzVkMTJkZDUwYWE0NTQ5ZmIzYzhmOWQ1YTJjODEuLmQzZDdkYjljODRm
MDQzZDVhNzdkMDc5ODAzMjQ5ZTdkYzliOTA4ZDggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC01Niw2ICs1Niw3IEBA
CiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNpbmNs
dWRlICJYTUxOYW1lcy5oIgorI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgogCiAjaWYgRU5BQkxFKFNWRykKQEAgLTE0NzMsNiArMTQ3NCwx
NSBAQCBBdG9taWNTdHJpbmcgRWxlbWVudDo6Y29tcHV0ZUluaGVyaXRlZExhbmd1YWdlKCkgY29u
c3QKICAgICAgICAgbiA9IG4tPnBhcmVudCgpOwogICAgIH0KIAorICAgIGlmICghdmFsdWUuaXNO
dWxsKCkgJiYgIXZhbHVlLmlzRW1wdHkoKSkgeworICAgICAgICAvLyBPbmx5IEEtWmEtejAtOSBh
bmQgJy0nIGFyZSBhbGxvd2VkIGluIHRoZSBsYW5ndWFnZSB0YWcgKHNlZSBCQ1AgNDcpCisgICAg
ICAgIGNvbnN0IGNoYXIgKnAgPSB2YWx1ZS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKTsKKyAgICAg
ICAgZm9yICg7ICpwICE9ICdcMCc7ICsrcCkgeworICAgICAgICAgICAgaWYgKCFpc0FTQ0lJQWxw
aGFudW1lcmljKCpwKSAmJiAqcCAhPSAnLScpCisgICAgICAgICAgICAgICAgcmV0dXJuIEF0b21p
Y1N0cmluZygpOworICAgICAgICB9CisgICAgfQorCiAgICAgcmV0dXJuIHZhbHVlOwogfQogCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXQuY3BwIGIvV2ViQ29yZS9wYWdlL1Nw
ZWVjaElucHV0LmNwcAppbmRleCAyMzQ3OTFiYzRiMTNmNDNkZjlkMTczOWQ1ZDIwNWY5YWEyN2Uy
MDcyLi5jYzVlMGY5N2ZiYWJmOWFmYTNmNDM1OWM3MjZiYWM4N2U1MzQxOGNmIDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXQuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9TcGVlY2hJ
bnB1dC5jcHAKQEAgLTkzLDEwICs5MywxMCBAQCB2b2lkIFNwZWVjaElucHV0OjpzZXRSZWNvZ25p
dGlvblJlc3VsdChpbnQgbGlzdGVuZXJJZCwgY29uc3QgU3RyaW5nJiByZXN1bHQpCiAgICAgICAg
IG1fbGlzdGVuZXJzLmdldChsaXN0ZW5lcklkKS0+c2V0UmVjb2duaXRpb25SZXN1bHQobGlzdGVu
ZXJJZCwgcmVzdWx0KTsKIH0KIAotYm9vbCBTcGVlY2hJbnB1dDo6c3RhcnRSZWNvZ25pdGlvbihp
bnQgbGlzdGVuZXJJZCwgY29uc3QgSW50UmVjdCYgZWxlbWVudFJlY3QpCitib29sIFNwZWVjaElu
cHV0OjpzdGFydFJlY29nbml0aW9uKGludCBsaXN0ZW5lcklkLCBjb25zdCBTdHJpbmcmIGxhbmd1
YWdlLCBjb25zdCBJbnRSZWN0JiBlbGVtZW50UmVjdCkKIHsKICAgICBBU1NFUlQobV9saXN0ZW5l
cnMuY29udGFpbnMobGlzdGVuZXJJZCkpOwotICAgIHJldHVybiBtX2NsaWVudC0+c3RhcnRSZWNv
Z25pdGlvbihsaXN0ZW5lcklkLCBlbGVtZW50UmVjdCk7CisgICAgcmV0dXJuIG1fY2xpZW50LT5z
dGFydFJlY29nbml0aW9uKGxpc3RlbmVySWQsIGxhbmd1YWdlLCBlbGVtZW50UmVjdCk7CiB9CiAK
IHZvaWQgU3BlZWNoSW5wdXQ6OnN0b3BSZWNvcmRpbmcoaW50IGxpc3RlbmVySWQpCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXQuaCBiL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1
dC5oCmluZGV4IGQxMGI3ODlhYWQyNzM5ZWRkM2JmNDUzMGU3YzZlMDBjNGUyZGFlOGEuLjhiNDI2
ZjU2MzEzNmVkNjUxZGQ2NDU2ZTgzNWI0ZDQ0NTNhYjgwMTIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cGFnZS9TcGVlY2hJbnB1dC5oCisrKyBiL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dC5oCkBAIC02
MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHVucmVnaXN0ZXJMaXN0ZW5lcihpbnQpOwog
CiAgICAgLy8gTWV0aG9kcyBpbnZva2VkIGJ5IHRoZSBpbnB1dCBlbGVtZW50cy4KLSAgICBib29s
IHN0YXJ0UmVjb2duaXRpb24oaW50LCBjb25zdCBJbnRSZWN0Jik7CisgICAgYm9vbCBzdGFydFJl
Y29nbml0aW9uKGludCwgY29uc3QgU3RyaW5nJiwgY29uc3QgSW50UmVjdCYpOwogICAgIHZvaWQg
c3RvcFJlY29yZGluZyhpbnQpOwogICAgIHZvaWQgY2FuY2VsUmVjb2duaXRpb24oaW50KTsKIApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0Q2xpZW50LmggYi9XZWJDb3JlL3Bh
Z2UvU3BlZWNoSW5wdXRDbGllbnQuaAppbmRleCBkNWZkYTE3ZmFhMmNkNzk1YWY0NGY1M2E0NmZj
YmE1OTc0MWFiNzZjLi5mNWFhYjAyYTc2NjE2NjE4YTYwYzc3NDRjYjQ3NDY2M2RjYjUyMmI0IDEw
MDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXRDbGllbnQuaAorKysgYi9XZWJDb3Jl
L3BhZ2UvU3BlZWNoSW5wdXRDbGllbnQuaApAQCAtMzEsNiArMzEsOCBAQAogI2lmbmRlZiBTcGVl
Y2hJbnB1dENsaWVudF9oCiAjZGVmaW5lIFNwZWVjaElucHV0Q2xpZW50X2gKIAorI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CisKICNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC00OCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0
TGlzdGVuZXIoU3BlZWNoSW5wdXRMaXN0ZW5lciopID0gMDsKIAogICAgIC8vIFN0YXJ0cyBzcGVl
Y2ggcmVjb2duaXRpb24gYW5kIGF1ZGlvIHJlY29yZGluZy4KLSAgICB2aXJ0dWFsIGJvb2wgc3Rh
cnRSZWNvZ25pdGlvbihpbnQgcmVxdWVzdElkLCBjb25zdCBJbnRSZWN0JiBlbGVtZW50UmVjdCkg
PSAwOworICAgIHZpcnR1YWwgYm9vbCBzdGFydFJlY29nbml0aW9uKGludCByZXF1ZXN0SWQsIGNv
bnN0IFN0cmluZyYgbGFuZ3VhZ2UsIGNvbnN0IEludFJlY3QmIGVsZW1lbnRSZWN0KSA9IDA7CiAK
ICAgICAvLyBTdG9wcyBhdWRpbyByZWNvcmRpbmcgYW5kIHBlcmZvcm1zIHJlY29nbml0aW9uIHdp
dGggdGhlIGF1ZGlvIHJlY29yZGVkIHVudGlsIG5vdwogICAgIC8vIChkb2VzIG5vdCBkaXNjYXJk
IGF1ZGlvKS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TcGVlY2hJbnB1dENs
aWVudE1vY2suY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xpZW50TW9j
ay5jcHAKaW5kZXggNmI2NDk0MmYxN2I5MjViNDllZjA5MjE0N2MwYTE2YTA3ZjBkN2NjYy4uYzA0
OTcxZTBhOTQzODU1YThjZmNkMWQxYzI0NTYzMmJhODIxYjEwYSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xpZW50TW9jay5jcHAKKysrIGIvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xpZW50TW9jay5jcHAKQEAgLTM1LDYgKzM1LDExIEBA
CiAKICNpbmNsdWRlICJTcGVlY2hJbnB1dExpc3RlbmVyLmgiCiAKK25hbWVzcGFjZSB7CisgICAg
Ly8gSGFzaE1hcCBkb2Vzbid0IHN1cHBvcnQgZW1wdHkgc3RyaW5ncyBhcyBrZXlzLCBzbyB0aGlz
IHZhbHVlIChhbiBpbnZhbGlkIEJDUDQ3IHRhZykgaXMgdXNlZCBmb3IgdGhvc2UgY2FzZXMuCisg
ICAgY29uc3QgU3RyaW5nIGVtcHR5TGFuZ3VhZ2UgPSAiXyI7Cit9CisKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogU3BlZWNoSW5wdXRDbGllbnRNb2NrOjpTcGVlY2hJbnB1dENsaWVudE1vY2soKQpA
QCAtNTAsMTIgKzU1LDEzIEBAIHZvaWQgU3BlZWNoSW5wdXRDbGllbnRNb2NrOjpzZXRMaXN0ZW5l
cihTcGVlY2hJbnB1dExpc3RlbmVyKiBsaXN0ZW5lcikKICAgICBtX2xpc3RlbmVyID0gbGlzdGVu
ZXI7CiB9CiAKLWJvb2wgU3BlZWNoSW5wdXRDbGllbnRNb2NrOjpzdGFydFJlY29nbml0aW9uKGlu
dCByZXF1ZXN0SWQsIGNvbnN0IEludFJlY3QmKQorYm9vbCBTcGVlY2hJbnB1dENsaWVudE1vY2s6
OnN0YXJ0UmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSwg
Y29uc3QgSW50UmVjdCYpCiB7CiAgICAgaWYgKG1fdGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIG1fcmVxdWVzdElkID0gcmVxdWVzdElkOwogICAgIG1fcmVjb3Jk
aW5nID0gdHJ1ZTsKKyAgICBtX2xhbmd1YWdlID0gbGFuZ3VhZ2U7CiAgICAgbV90aW1lci5zdGFy
dE9uZVNob3QoMCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC04MCw5ICs4NiwxMiBAQCB2b2lk
IFNwZWVjaElucHV0Q2xpZW50TW9jazo6Y2FuY2VsUmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCkK
ICAgICB9CiB9CiAKLXZvaWQgU3BlZWNoSW5wdXRDbGllbnRNb2NrOjpzZXRSZWNvZ25pdGlvblJl
c3VsdChjb25zdCBTdHJpbmcmIHJlc3VsdCkKK3ZvaWQgU3BlZWNoSW5wdXRDbGllbnRNb2NrOjpz
ZXRSZWNvZ25pdGlvblJlc3VsdChjb25zdCBTdHJpbmcmIHJlc3VsdCwgY29uc3QgU3RyaW5nJiBs
YW5ndWFnZSkKIHsKLSAgICBtX3JlY29nbml0aW9uUmVzdWx0ID0gcmVzdWx0OworICAgIGlmIChs
YW5ndWFnZS5pc0VtcHR5KCkpCisgICAgICAgIG1fcmVjb2duaXRpb25SZXN1bHQuc2V0KGVtcHR5
TGFuZ3VhZ2UsIHJlc3VsdCk7CisgICAgZWxzZQorICAgICAgICBtX3JlY29nbml0aW9uUmVzdWx0
LnNldChsYW5ndWFnZSwgcmVzdWx0KTsKIH0KIAogdm9pZCBTcGVlY2hJbnB1dENsaWVudE1vY2s6
OnRpbWVyRmlyZWQoV2ViQ29yZTo6VGltZXI8U3BlZWNoSW5wdXRDbGllbnRNb2NrPiopCkBAIC05
Miw3ICsxMDEsMTcgQEAgdm9pZCBTcGVlY2hJbnB1dENsaWVudE1vY2s6OnRpbWVyRmlyZWQoV2Vi
Q29yZTo6VGltZXI8U3BlZWNoSW5wdXRDbGllbnRNb2NrPiopCiAgICAgICAgIG1fbGlzdGVuZXIt
PmRpZENvbXBsZXRlUmVjb3JkaW5nKG1fcmVxdWVzdElkKTsKICAgICAgICAgbV90aW1lci5zdGFy
dE9uZVNob3QoMCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgbV9saXN0ZW5lci0+c2V0UmVjb2du
aXRpb25SZXN1bHQobV9yZXF1ZXN0SWQsIG1fcmVjb2duaXRpb25SZXN1bHQpOworICAgICAgICBT
dHJpbmcgbGFuZ3VhZ2UgPSBtX2xhbmd1YWdlLmlzRW1wdHkoKSA/IFN0cmluZyhlbXB0eUxhbmd1
YWdlKSA6IG1fbGFuZ3VhZ2U7CisgICAgICAgIGlmICghbV9yZWNvZ25pdGlvblJlc3VsdC5jb250
YWlucyhsYW5ndWFnZSkpIHsKKyAgICAgICAgICAgIC8vIENhbid0IGF2b2lkIHNldHRpbmcgYSBy
ZXN1bHQgb24gZW1wdHkgb3IgaW52YWxpZCBsYW5ndWFnZSBzdHJpbmdzLgorICAgICAgICAgICAg
Ly8gVGhpcyB3b3VsZCBhdm9pZCBnZW5lcmF0aW5nIHRoZSBldmVudHMgdXNlZCB0byBjaGVjayB0
aGUgcmVzdWx0cyBhbmQgdGhlIHRlc3Qgd291bGQgdGltZW91dC4KKyAgICAgICAgICAgIFN0cmlu
ZyBlcnJvcigiZXJyb3I6IG5vIHJlc3VsdCBmb3VuZCBmb3IgbGFuZ3VhZ2UgJyIpOworICAgICAg
ICAgICAgZXJyb3IuYXBwZW5kKG1fbGFuZ3VhZ2UpOworICAgICAgICAgICAgZXJyb3IuYXBwZW5k
KCInIik7CisgICAgICAgICAgICBtX2xpc3RlbmVyLT5zZXRSZWNvZ25pdGlvblJlc3VsdChtX3Jl
cXVlc3RJZCwgZXJyb3IpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1fbGlzdGVuZXIt
PnNldFJlY29nbml0aW9uUmVzdWx0KG1fcmVxdWVzdElkLCBtX3JlY29nbml0aW9uUmVzdWx0Lmdl
dChsYW5ndWFnZSkpOworCiAgICAgICAgIG1fbGlzdGVuZXItPmRpZENvbXBsZXRlUmVjb2duaXRp
b24obV9yZXF1ZXN0SWQpOwogICAgICAgICBtX3JlcXVlc3RJZCA9IDA7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xpZW50TW9jay5oIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xpZW50TW9jay5oCmluZGV4IGNlODNkM2Ji
OWNiODhiMGEzYTk1YjU0OTU0MjdkMjk5MWYyZTBiNGYuLjNjZTk4N2I4MjNjZDE5ODAyODY2OWM3
NzlmM2M0NzljNDczY2I3ZWQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TcGVl
Y2hJbnB1dENsaWVudE1vY2suaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL21vY2svU3BlZWNoSW5w
dXRDbGllbnRNb2NrLmgKQEAgLTM0LDYgKzM0LDggQEAKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmlu
Zy5oIgogI2luY2x1ZGUgIlNwZWVjaElucHV0Q2xpZW50LmgiCiAjaW5jbHVkZSAiVGltZXIuaCIK
KyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2gu
aD4KIAogI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCiAKQEAgLTQ2LDExICs0OCwxMSBAQCBjbGFz
cyBTcGVlY2hJbnB1dENsaWVudE1vY2sgOiBwdWJsaWMgU3BlZWNoSW5wdXRDbGllbnQgewogcHVi
bGljOgogICAgIFNwZWVjaElucHV0Q2xpZW50TW9jaygpOwogCi0gICAgdm9pZCBzZXRSZWNvZ25p
dGlvblJlc3VsdChjb25zdCBTdHJpbmcmIHJlc3VsdCk7CisgICAgdm9pZCBzZXRSZWNvZ25pdGlv
blJlc3VsdChjb25zdCBTdHJpbmcmIHJlc3VsdCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSk7CiAK
ICAgICAvLyBTcGVlY2hJbnB1dENsaWVudCBtZXRob2RzLgogICAgIHZvaWQgc2V0TGlzdGVuZXIo
U3BlZWNoSW5wdXRMaXN0ZW5lciopOwotICAgIGJvb2wgc3RhcnRSZWNvZ25pdGlvbihpbnQsIGNv
bnN0IEludFJlY3QmKTsKKyAgICBib29sIHN0YXJ0UmVjb2duaXRpb24oaW50LCBjb25zdCBTdHJp
bmcmLCBjb25zdCBJbnRSZWN0Jik7CiAgICAgdm9pZCBzdG9wUmVjb3JkaW5nKGludCk7CiAgICAg
dm9pZCBjYW5jZWxSZWNvZ25pdGlvbihpbnQpOwogCkBAIC02MSw3ICs2Myw5IEBAIHByaXZhdGU6
CiAgICAgVGltZXI8U3BlZWNoSW5wdXRDbGllbnRNb2NrPiBtX3RpbWVyOwogICAgIFNwZWVjaElu
cHV0TGlzdGVuZXIqIG1fbGlzdGVuZXI7CiAgICAgaW50IG1fcmVxdWVzdElkOwotICAgIFN0cmlu
ZyBtX3JlY29nbml0aW9uUmVzdWx0OworCisgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gbV9y
ZWNvZ25pdGlvblJlc3VsdDsKKyAgICBTdHJpbmcgbV9sYW5ndWFnZTsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRDb250cm9s
SW5uZXJFbGVtZW50cy5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Q29udHJvbElubmVyRWxl
bWVudHMuY3BwCmluZGV4IDVkNWI4YjMwYjQxMTA1MjBkMWE0ZGU3YjhhNzljNDg1ZDc5MzY2MDgu
LjY1ZDBhNjQ2MDlkMjAzNGIxMDk5NTAzZDE2OTE1MWFiZTY2ZGFhM2UgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcmVuZGVyaW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKKysrIGIvV2ViQ29y
ZS9yZW5kZXJpbmcvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcApAQCAtMjEsOSArMjEsOSBA
QAogICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQogICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KICAqLwotIAorCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgiCiAKQEAgLTEwNywxOCArMTA3LDE4IEBAIHZv
aWQgVGV4dENvbnRyb2xJbm5lckVsZW1lbnQ6OmF0dGFjaElubmVyRWxlbWVudChOb2RlKiBwYXJl
bnQsIFBhc3NSZWZQdHI8UmVuZGVyCiAgICAgICAgIHNldFJlbmRlcmVyKHJlbmRlcmVyKTsKICAg
ICAgICAgcmVuZGVyZXItPnNldFN0eWxlKHN0eWxlKTsKICAgICB9Ci0gICAgCisKICAgICAvLyBT
ZXQgdGhlc2UgZXhwbGljaXRseSBzaW5jZSB0aGlzIG5vcm1hbGx5IGhhcHBlbnMgZHVyaW5nIGFu
IGF0dGFjaCgpCiAgICAgc2V0QXR0YWNoZWQoKTsKICAgICBzZXRJbkRvY3VtZW50KCk7Ci0gICAg
CisKICAgICAvLyBGb3IgZWxlbWVudHMgd2l0aG91dCBhIHNoYWRvdyBwYXJlbnQsIGFkZCB0aGUg
bm9kZSB0byB0aGUgRE9NIG5vcm1hbGx5LgogICAgIGlmICghbV9zaGFkb3dQYXJlbnQpIHsKICAg
ICAgICAgLy8gRklYTUU6IFRoaXMgY29kZSBzZWVtcyB2ZXJ5IHdyb25nLiAgV2h5IGFyZSB3ZSBt
YWdpY2FsbHkgYWRkaW5nIHx0aGlzfCB0byB0aGUgRE9NIGhlcmU/CiAgICAgICAgIC8vICAgICAg
ICBXZSBzaG91bGRuJ3QgYmUgY2FsbGluZyBwYXJzZXIgQVBJIG1ldGhvZHMgb3V0c2lkZSBvZiB0
aGUgcGFyc2VyIQogICAgICAgICBwYXJlbnQtPmRlcHJlY2F0ZWRQYXJzZXJBZGRDaGlsZCh0aGlz
KTsKICAgICB9Ci0gCisKICAgICAvLyBBZGQgdGhlIHJlbmRlcmVyIHRvIHRoZSByZW5kZXIgdHJl
ZQogICAgIGlmIChyZW5kZXJlcikKICAgICAgICAgcGFyZW50LT5yZW5kZXJlcigpLT5hZGRDaGls
ZChyZW5kZXJlcik7CkBAIC0yMDgsNyArMjA4LDcgQEAgdm9pZCBTZWFyY2hGaWVsZENhbmNlbEJ1
dHRvbkVsZW1lbnQ6OmRldGFjaCgpCiB7CiAgICAgaWYgKG1fY2FwdHVyaW5nKSB7CiAgICAgICAg
IGlmIChGcmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLT5mcmFtZSgpKQotICAgICAgICAgICAgZnJh
bWUtPmV2ZW50SGFuZGxlcigpLT5zZXRDYXB0dXJpbmdNb3VzZUV2ZW50c05vZGUoMCk7ICAgICAg
CisgICAgICAgICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPnNldENhcHR1cmluZ01vdXNlRXZl
bnRzTm9kZSgwKTsKICAgICB9CiAgICAgVGV4dENvbnRyb2xJbm5lckVsZW1lbnQ6OmRldGFjaCgp
OwogfQpAQCAtMjgxLDkgKzI4MSw5IEBAIHZvaWQgU3BpbkJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRF
dmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogICAgIGlmICghYm94KSB7CiAgICAgICAgIGlmICgh
ZXZlbnQtPmRlZmF1bHRIYW5kbGVkKCkpCiAgICAgICAgICAgICBIVE1MRGl2RWxlbWVudDo6ZGVm
YXVsdEV2ZW50SGFuZGxlcihldmVudCk7Ci0gICAgICAgIHJldHVybjsgICAgICAgIAorICAgICAg
ICByZXR1cm47CiAgICAgfQotICAgIAorCiAgICAgSFRNTElucHV0RWxlbWVudCogaW5wdXQgPSBz
dGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4oc2hhZG93QW5jZXN0b3JOb2RlKCkpOwogICAg
IGlmIChpbnB1dC0+ZGlzYWJsZWQoKSB8fCBpbnB1dC0+aXNSZWFkT25seUZvcm1Db250cm9sKCkp
IHsKICAgICAgICAgaWYgKCFldmVudC0+ZGVmYXVsdEhhbmRsZWQoKSkKQEAgLTQzMSw3ICs0MzEs
NyBAQCB2b2lkIElucHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5k
bGVyKEV2ZW50KiBldmVudCkKICAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCku
Y2xpY2tFdmVudCkgewogICAgICAgICBzd2l0Y2ggKG1fc3RhdGUpIHsKICAgICAgICAgY2FzZSBJ
ZGxlOgotICAgICAgICAgICAgaWYgKHNwZWVjaElucHV0KCktPnN0YXJ0UmVjb2duaXRpb24obV9s
aXN0ZW5lcklkLCBpbnB1dC0+cmVuZGVyZXIoKS0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKSkp
CisgICAgICAgICAgICBpZiAoc3BlZWNoSW5wdXQoKS0+c3RhcnRSZWNvZ25pdGlvbihtX2xpc3Rl
bmVySWQsIGlucHV0LT5jb21wdXRlSW5oZXJpdGVkTGFuZ3VhZ2UoKSwgaW5wdXQtPnJlbmRlcmVy
KCktPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCkpKQogICAgICAgICAgICAgICAgIHNldFN0YXRl
KFJlY29yZGluZyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBSZWNvcmRpbmc6
CkBAIC00ODcsNyArNDg3LDcgQEAgdm9pZCBJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudDo6
ZGV0YWNoKCkKIHsKICAgICBpZiAobV9jYXB0dXJpbmcpIHsKICAgICAgICAgaWYgKEZyYW1lKiBm
cmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCkpCi0gICAgICAgICAgICBmcmFtZS0+ZXZlbnRIYW5k
bGVyKCktPnNldENhcHR1cmluZ01vdXNlRXZlbnRzTm9kZSgwKTsgICAgICAKKyAgICAgICAgICAg
IGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+c2V0Q2FwdHVyaW5nTW91c2VFdmVudHNOb2RlKDApOwog
ICAgIH0KIAogICAgIGlmIChtX3N0YXRlICE9IElkbGUpCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA3ZDJjZmE5
ZDk4NzEzNTBmOTNhNTg3ODc1Y2VkYzE1ZDMyNTQ0MTRmLi42YzZjOTBiOGNkNDdkMTczZjAwZTU4
MzA1YTQzNTk1ZTg2OTZjZjRlIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CisrKyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAxMC0x
MC0xNSAgTGVhbmRybyBHcmFjacOhIEdpbCAgPGxlYW5kcm9ncmFjaWFAZ29vZ2xlLmNvbT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXRjaCB0aGUg
Y3VycmVudCBzcGVlY2ggaW5wdXQgaW1wbGVtZW50YXRpb24gdG8gdXNlIGFuZCB2YWxpZGF0ZSB0
aGUKKyAgICAgICAgbmVhcmVzdCBsYW5ndWFnZSB0YWcuIFRoZSBsYW5ndWFnZSBpcyBub3cgcGFz
c2VkIHRvIHRoZSBzdGFydFJlY29nbml0aW9uCisgICAgICAgIG1ldGhvZHMgc28gdGhhdCBsYW5n
dWFnZS1zcGVjaWZpYyByZWNvZ25pdGlvbiBjb3VsZCBiZSB1c2VkLiBBbHNvIGFkZGVkCisgICAg
ICAgIGEgc2Vjb25kIHBhcmFtZXRlciB0byBzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQgZm9yIHRo
ZSBsYW5ndWFnZSB1c2VkIGluCisgICAgICAgIHNwZWVjaCByZWNvZ25pdGlvbi4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3MDg5CisKKyAgICAgICAg
VGhpcyBpcyB0aGUgMm5kIG9mIGEgNC1zaWRlZCBwYXRjaCBpbiBDaHJvbWl1bSBhbmQgV2ViS2l0
LiBGb3IgbW9yZQorICAgICAgICBkZXRhaWxzIHNlZSBodHRwOi8vY29kZXJldmlldy5jaHJvbWl1
bS5vcmcvMzYxNTAwNS9zaG93IGFuZAorICAgICAgICBodHRwOi8vY29kZXJldmlldy5jaHJvbWl1
bS5vcmcvMzU5NTAxOC9zaG93LgorCisgICAgICAgICogcHVibGljL1dlYlNwZWVjaElucHV0Q29u
dHJvbGxlci5oOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXI6OnN0
YXJ0UmVjb2duaXRpb24pOgorICAgICAgICAqIHB1YmxpYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xs
ZXJNb2NrLmg6CisgICAgICAgICogc3JjL1NwZWVjaElucHV0Q2xpZW50SW1wbC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlNwZWVjaElucHV0Q2xpZW50SW1wbDo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YktpdDo6U3BlZWNoSW5wdXRDbGllbnRJbXBsOjpzdGFydFJlY29nbml0aW9uKToKKyAgICAgICAg
KiBzcmMvU3BlZWNoSW5wdXRDbGllbnRJbXBsLmg6CisgICAgICAgICogc3JjL1dlYlNwZWVjaElu
cHV0Q29udHJvbGxlck1vY2tJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoSW5w
dXRDb250cm9sbGVyTW9ja0ltcGw6OnNldE1vY2tSZWNvZ25pdGlvblJlc3VsdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsOjpzdGFydFJlY29nbml0
aW9uKToKKyAgICAgICAgKiBzcmMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGwuaDoK
KyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3
SW1wbDo6V2ViVmlld0ltcGwpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5oOgorCiAyMDEw
LTEwLTE1ICBOaWtvbGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkByaW0uY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IERpcmsgU2NodWx6ZS4KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyLmggYi9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYlNwZWVjaElucHV0Q29udHJvbGxlci5oCmluZGV4IDU0MDg3NDFhM2M5NGQzYmYxYzU0
M2Q5NmU5ZmMxNmE2MzkwZGIwMmYuLjFmZGUyYThlNzc0ZjMyZTU4Zjg4NzJmMjQ4MjIyMzA1OWM4
OGMxNDcgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoSW5wdXRD
b250cm9sbGVyLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hJbnB1dENv
bnRyb2xsZXIuaApAQCAtMzUsNiArMzUsNyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xh
c3MgV2ViU3RyaW5nOwogc3RydWN0IFdlYlJlY3Q7CiAKIC8vIFByb3ZpZGVzIGFuIGVtYmVkZGVy
IEFQSSBjYWxsZWQgYnkgV2ViS2l0LgpAQCAtNDMsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgLy8g
U3RhcnRzIHNwZWVjaCByZWNvZ25pdGlvbi4gU3BlZWNoIHdpbGwgZ2V0IHJlY29yZGVkIHVudGls
IHRoZSBlbmRwb2ludGVyIGRldGVjdHMgc2lsZW5jZSwKICAgICAvLyBydW5zIHRvIHRoZSBsaW1p
dCBvciBzdG9wUmVjb3JkaW5nIGlzIGNhbGxlZC4gUHJvZ3Jlc3MgaW5kaWNhdGlvbnMgYW5kIHRo
ZSByZWNvZ25pemVkCiAgICAgLy8gdGV4dCBhcmUgcmV0dXJuZWQgdmlhIHRoZSBsaXN0ZW5lciBp
bnRlcmZhY2UuCi0gICAgdmlydHVhbCBib29sIHN0YXJ0UmVjb2duaXRpb24oaW50IHJlcXVlc3RJ
ZCwgY29uc3QgV2ViUmVjdCYpCisgICAgdmlydHVhbCBib29sIHN0YXJ0UmVjb2duaXRpb24oaW50
IHJlcXVlc3RJZCwgY29uc3QgV2ViU3RyaW5nJiBsYW5ndWFnZSwgY29uc3QgV2ViUmVjdCYgZWxl
bWVudFJlY3QpCiAgICAgewogICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9jay5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrLmgKaW5kZXggOWEyNjIzNWZmNmQ1ZGNjYmJlMjQ3
MjYyYWU0NGEzYWM3Mzk3YzNmNC4uYjRjNTBhMDVkY2Y1YTEyZjg0MWJmOWI2NzU1Y2QyODgxN2Y4
YzA4YiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hJbnB1dENv
bnRyb2xsZXJNb2NrLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hJbnB1
dENvbnRyb2xsZXJNb2NrLmgKQEAgLTQ0LDYgKzQ0LDEwIEBAIHB1YmxpYzoKICAgICAgICAgV2Vi
U3BlZWNoSW5wdXRMaXN0ZW5lciogbGlzdGVuZXIpOwogICAgIHZpcnR1YWwgfldlYlNwZWVjaElu
cHV0Q29udHJvbGxlck1vY2soKSB7IH0KIAorICAgIHZpcnR1YWwgdm9pZCBzZXRNb2NrUmVjb2du
aXRpb25SZXN1bHQoY29uc3QgV2ViU3RyaW5nJiByZXN1bHQsIGNvbnN0IFdlYlN0cmluZyYgbGFu
Z3VhZ2UpID0gMDsKKworICAgIC8vIEZJWE1FOiB0aGlzIGlzIGEgZml4IGZvciBhIHR3by1zaWRl
ZCBwYXRjaC4gRGVsZXRlIGFzIHNvb24gYXMgdGhlIGNocm9taXVtIHNpZGUgaXMgcGF0Y2hlZC4K
KyAgICAvLyBDaHJvbWl1bSBwYXRjaCBub3QgdXBsb2FkZWQgeWV0LCBidXQgd2lsbCBkZXBlbmQg
b24gaHR0cDovL2NvZGVyZXZpZXcuY2hyb21pdW0ub3JnLzM2MTUwMDUvc2hvdyBwYXRjaC4KICAg
ICB2aXJ0dWFsIHZvaWQgc2V0TW9ja1JlY29nbml0aW9uUmVzdWx0KGNvbnN0IFdlYlN0cmluZyYg
cmVzdWx0KSA9IDA7CiB9OwogCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1NwZWVj
aElucHV0Q2xpZW50SW1wbC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1NwZWVjaElucHV0Q2xp
ZW50SW1wbC5jcHAKaW5kZXggOTYzZDQ0MDVhNjJkMzJlMWE4Y2VjZDU0YzA4YzViYmViM2E2MmRj
YS4uMTM4MTkyOTYzYjU0MzA1YzZhMzgzYTUyZWMyMzhjYTBjNWIxMDRjZiAxMDA2NDQKLS0tIGEv
V2ViS2l0L2Nocm9taXVtL3NyYy9TcGVlY2hJbnB1dENsaWVudEltcGwuY3BwCisrKyBiL1dlYktp
dC9jaHJvbWl1bS9zcmMvU3BlZWNoSW5wdXRDbGllbnRJbXBsLmNwcApAQCAtMzIsMTUgKzMyLDIx
IEBACiAjaW5jbHVkZSAiU3BlZWNoSW5wdXRDbGllbnRJbXBsLmgiCiAKICNpbmNsdWRlICJQbGF0
Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgIlNwZWVjaElucHV0TGlzdGVuZXIuaCIKICNpbmNsdWRl
ICJXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJXZWJTdHJpbmcuaCIKICNp
bmNsdWRlICJXZWJWaWV3Q2xpZW50LmgiCi0jaW5jbHVkZSAicGFnZS9TcGVlY2hJbnB1dExpc3Rl
bmVyLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAogI2lmIEVOQUJMRShJTlBVVF9T
UEVFQ0gpCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitQYXNzT3duUHRyPFNwZWVjaElucHV0Q2xp
ZW50SW1wbD4gU3BlZWNoSW5wdXRDbGllbnRJbXBsOjpjcmVhdGUoV2ViVmlld0NsaWVudCogY2xp
ZW50KQoreworICAgIHJldHVybiBhZG9wdFB0cihuZXcgU3BlZWNoSW5wdXRDbGllbnRJbXBsKGNs
aWVudCkpOworfQorCiBTcGVlY2hJbnB1dENsaWVudEltcGw6OlNwZWVjaElucHV0Q2xpZW50SW1w
bChXZWJWaWV3Q2xpZW50KiB3ZWJfdmlld19jbGllbnQpCiAgICAgOiBtX2NvbnRyb2xsZXIod2Vi
X3ZpZXdfY2xpZW50ID8gd2ViX3ZpZXdfY2xpZW50LT5zcGVlY2hJbnB1dENvbnRyb2xsZXIodGhp
cykgOiAwKQogICAgICwgbV9saXN0ZW5lcigwKQpAQCAtNTYsMTAgKzYyLDEwIEBAIHZvaWQgU3Bl
ZWNoSW5wdXRDbGllbnRJbXBsOjpzZXRMaXN0ZW5lcihXZWJDb3JlOjpTcGVlY2hJbnB1dExpc3Rl
bmVyKiBsaXN0ZW5lcikKICAgICBtX2xpc3RlbmVyID0gbGlzdGVuZXI7CiB9CiAKLWJvb2wgU3Bl
ZWNoSW5wdXRDbGllbnRJbXBsOjpzdGFydFJlY29nbml0aW9uKGludCByZXF1ZXN0SWQsIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmIGVsZW1lbnRSZWN0KQorYm9vbCBTcGVlY2hJbnB1dENsaWVudElt
cGw6OnN0YXJ0UmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBsYW5ndWFn
ZSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZWxlbWVudFJlY3QpCiB7CiAgICAgQVNTRVJUKG1f
bGlzdGVuZXIpOwotICAgIHJldHVybiBtX2NvbnRyb2xsZXItPnN0YXJ0UmVjb2duaXRpb24ocmVx
dWVzdElkLCBlbGVtZW50UmVjdCk7CisgICAgcmV0dXJuIG1fY29udHJvbGxlci0+c3RhcnRSZWNv
Z25pdGlvbihyZXF1ZXN0SWQsIGxhbmd1YWdlLCBlbGVtZW50UmVjdCk7CiB9CiAKIHZvaWQgU3Bl
ZWNoSW5wdXRDbGllbnRJbXBsOjpzdG9wUmVjb3JkaW5nKGludCByZXF1ZXN0SWQpCmRpZmYgLS1n
aXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1NwZWVjaElucHV0Q2xpZW50SW1wbC5oIGIvV2ViS2l0
L2Nocm9taXVtL3NyYy9TcGVlY2hJbnB1dENsaWVudEltcGwuaAppbmRleCA4MTdiMzJiMTI0MTRi
M2EwN2RmYTNhZTM1MTkwODdkZWE1YTBmNzMzLi5jN2QxZmEzYTZjNTg1NTc3ZmM5NDUyYzRkYmNk
NWU4NzBmYzg3YTNhIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1NwZWVjaElucHV0
Q2xpZW50SW1wbC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvU3BlZWNoSW5wdXRDbGllbnRJ
bXBsLmgKQEAgLTMzLDggKzMzLDE1IEBACiAKICNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQogCisj
aW5jbHVkZSAiU3BlZWNoSW5wdXRDbGllbnQuaCIKICNpbmNsdWRlICJXZWJTcGVlY2hJbnB1dExp
c3RlbmVyLmgiCi0jaW5jbHVkZSAicGFnZS9TcGVlY2hJbnB1dENsaWVudC5oIgorI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9Q
YXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgU3RyaW5nOworfQogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBTcGVlY2hJbnB1dExpc3RlbmVyOwpAQCAtNDksMTIgKzU2
LDEyIEBAIGNsYXNzIFNwZWVjaElucHV0Q2xpZW50SW1wbAogICAgIDogcHVibGljIFdlYkNvcmU6
OlNwZWVjaElucHV0Q2xpZW50LAogICAgICAgcHVibGljIFdlYlNwZWVjaElucHV0TGlzdGVuZXIg
ewogcHVibGljOgotICAgIFNwZWVjaElucHV0Q2xpZW50SW1wbChXZWJWaWV3Q2xpZW50Kik7Cisg
ICAgc3RhdGljIFBhc3NPd25QdHI8U3BlZWNoSW5wdXRDbGllbnRJbXBsPiBjcmVhdGUoV2ViVmll
d0NsaWVudCopOwogICAgIHZpcnR1YWwgflNwZWVjaElucHV0Q2xpZW50SW1wbCgpOwogCiAgICAg
Ly8gU3BlZWNoSW5wdXRDbGllbnQgbWV0aG9kcy4KICAgICB2b2lkIHNldExpc3RlbmVyKFdlYkNv
cmU6OlNwZWVjaElucHV0TGlzdGVuZXIqKTsKLSAgICBib29sIHN0YXJ0UmVjb2duaXRpb24oaW50
LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CisgICAgYm9vbCBzdGFydFJlY29nbml0aW9uKGlu
dCwgY29uc3QgU3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOwogICAgIHZvaWQgc3Rv
cFJlY29yZGluZyhpbnQpOwogICAgIHZvaWQgY2FuY2VsUmVjb2duaXRpb24oaW50KTsKIApAQCAt
NjQsNiArNzEsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRDb21wbGV0ZVJlY29nbml0aW9uKGlu
dCk7CiAKIHByaXZhdGU6CisgICAgU3BlZWNoSW5wdXRDbGllbnRJbXBsKFdlYlZpZXdDbGllbnQq
KTsKKwogICAgIFdlYlNwZWVjaElucHV0Q29udHJvbGxlciogbV9jb250cm9sbGVyOyAvLyBUbyBj
YWxsIGludG8gdGhlIGVtYmVkZGVyLgogICAgIFdlYkNvcmU6OlNwZWVjaElucHV0TGlzdGVuZXIq
IG1fbGlzdGVuZXI7CiB9OwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTcGVl
Y2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNw
ZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsLmNwcAppbmRleCA2MGM0ZmVkODUyYjI4NGUwMjcx
YWQwMGVkOTcxMDAyYTJmNTdhNGI2Li40NWM2ZmYwODYyZjAyNGZjMTgwNTczM2MxNmE5MzMwNTcz
N2FjMzkzIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNwZWVjaElucHV0Q29u
dHJvbGxlck1vY2tJbXBsLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNwZWVjaElu
cHV0Q29udHJvbGxlck1vY2tJbXBsLmNwcApAQCAtNTcsNyArNTcsMTIgQEAgV2ViU3BlZWNoSW5w
dXRDb250cm9sbGVyTW9ja0ltcGw6On5XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbCgp
CiAKIHZvaWQgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OnNldE1vY2tSZWNvZ25p
dGlvblJlc3VsdChjb25zdCBXZWJTdHJpbmcmIHJlc3VsdCkKIHsKLSAgICBtX3dlYmNvcmVNb2Nr
LT5zZXRSZWNvZ25pdGlvblJlc3VsdChyZXN1bHQpOworICAgIG1fd2ViY29yZU1vY2stPnNldFJl
Y29nbml0aW9uUmVzdWx0KHJlc3VsdCwgV2ViU3RyaW5nOjpmcm9tVVRGOCgiIikpOworfQorCit2
b2lkIFdlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsOjpzZXRNb2NrUmVjb2duaXRpb25S
ZXN1bHQoY29uc3QgV2ViU3RyaW5nJiByZXN1bHQsIGNvbnN0IFdlYlN0cmluZyAmbGFuZ3VhZ2Up
Cit7CisgICAgbV93ZWJjb3JlTW9jay0+c2V0UmVjb2duaXRpb25SZXN1bHQocmVzdWx0LCBsYW5n
dWFnZSk7CiB9CiAKIHZvaWQgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OmRpZENv
bXBsZXRlUmVjb3JkaW5nKGludCByZXF1ZXN0SWQpCkBAIC03NSw5ICs4MCw5IEBAIHZvaWQgV2Vi
U3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OnNldFJlY29nbml0aW9uUmVzdWx0KGludCBy
ZXF1ZXN0SWQsIGNvbnN0CiAgICAgbV9saXN0ZW5lci0+c2V0UmVjb2duaXRpb25SZXN1bHQocmVx
dWVzdElkLCByZXN1bHQpOwogfQogCi1ib29sIFdlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJ
bXBsOjpzdGFydFJlY29nbml0aW9uKGludCByZXF1ZXN0SWQsIGNvbnN0IFdlYlJlY3QmIGVsZW1l
bnRSZWN0KQorYm9vbCBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6c3RhcnRSZWNv
Z25pdGlvbihpbnQgcmVxdWVzdElkLCBjb25zdCBXZWJTdHJpbmcmIGxhbmd1YWdlLCBjb25zdCBX
ZWJSZWN0JiBlbGVtZW50UmVjdCkKIHsKLSAgICByZXR1cm4gbV93ZWJjb3JlTW9jay0+c3RhcnRS
ZWNvZ25pdGlvbihyZXF1ZXN0SWQsIGVsZW1lbnRSZWN0KTsKKyAgICByZXR1cm4gbV93ZWJjb3Jl
TW9jay0+c3RhcnRSZWNvZ25pdGlvbihyZXF1ZXN0SWQsIGxhbmd1YWdlLCBlbGVtZW50UmVjdCk7
CiB9CiAKIHZvaWQgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OmNhbmNlbFJlY29n
bml0aW9uKGludCByZXF1ZXN0SWQpCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsLmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsLmgKaW5kZXggZWRiZmNhM2VlNjBlOTM5NDI4
OTNlMjcyMTg5M2U0M2EwZWI4N2M1Zi4uMWIzMDUzYmYwOTI3NTNlZjc5MjkzZGRjYTEyZTg0MzUy
MDZiZGJjMCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTcGVlY2hJbnB1dENv
bnRyb2xsZXJNb2NrSW1wbC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3BlZWNoSW5w
dXRDb250cm9sbGVyTW9ja0ltcGwuaApAQCAtMzcsNiArMzcsMTAgQEAKICNpbmNsdWRlICJXZWJT
dHJpbmcuaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKK25hbWVzcGFjZSBXVEYgeworY2xh
c3MgU3RyaW5nOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBTcGVlY2hJbnB1dENs
aWVudE1vY2s7CiB9CkBAIC01NywxMSArNjEsMTUgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UmVj
b2duaXRpb25SZXN1bHQoaW50IHJlcXVlc3RJZCwgY29uc3QgV1RGOjpTdHJpbmcmIHJlc3VsdCk7
CiAKICAgICAvLyBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIgbWV0aG9kcy4KLSAgICBib29sIHN0
YXJ0UmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCwgY29uc3QgV2ViUmVjdCYgZWxlbWVudFJlY3Qp
OworICAgIGJvb2wgc3RhcnRSZWNvZ25pdGlvbihpbnQgcmVxdWVzdElkLCBjb25zdCBXZWJTdHJp
bmcmIGxhbmd1YWdlLCBjb25zdCBXZWJSZWN0JiBlbGVtZW50UmVjdCk7CiAgICAgdm9pZCBjYW5j
ZWxSZWNvZ25pdGlvbihpbnQgcmVxdWVzdElkKTsKICAgICB2b2lkIHN0b3BSZWNvcmRpbmcoaW50
IHJlcXVlc3RJZCk7CiAKICAgICAvLyBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrIG1ldGhv
ZHMuCisgICAgdm9pZCBzZXRNb2NrUmVjb2duaXRpb25SZXN1bHQoY29uc3QgV2ViU3RyaW5nJiBy
ZXN1bHQsIGNvbnN0IFdlYlN0cmluZyYgbGFuZ3VhZ2UpOworCisgICAgLy8gRklYTUU6IHRoaXMg
aXMgYSBmaXggZm9yIGEgdHdvLXNpZGVkIHBhdGNoLiBEZWxldGUgYXMgc29vbiBhcyB0aGUgY2hy
b21pdW0gc2lkZSBpcyBwYXRjaGVkLgorICAgIC8vIENocm9taXVtIHBhdGNoIG5vdCB1cGxvYWRl
ZCB5ZXQsIGJ1dCB3aWxsIGRlcGVuZCBvbiBodHRwOi8vY29kZXJldmlldy5jaHJvbWl1bS5vcmcv
MzYxNTAwNS9zaG93IHBhdGNoLgogICAgIHZvaWQgc2V0TW9ja1JlY29nbml0aW9uUmVzdWx0KGNv
bnN0IFdlYlN0cmluZyYgcmVzdWx0KTsKIAogcHJpdmF0ZToKQEAgLTcyLDQgKzgwLDMgQEAgcHJp
dmF0ZToKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gV2ViU3BlZWNoSW5wdXRD
b250cm9sbGVyTW9ja0ltcGxfaAotCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlZpZXdJbXBsLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4
IDBlYWFhYzE1YzA1ODgzNzFlNTg5MTFiYWY4MjVlZDg4NjVkYjVmNWUuLmFiYTBmM2VmOTU5ZWI2
NGYxN2VlMDVjOTc2ZjE5ZWIxZTkwYzk4OTcgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwu
Y3BwCkBAIC04OCw2ICs4OCw3IEBACiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNs
dWRlICJTZWxlY3Rpb25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNs
dWRlICJTcGVlY2hJbnB1dENsaWVudEltcGwuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1
ZGUgIlR5cGluZ0NvbW1hbmQuaCIKICNpbmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgpA
QCAtMjc1LDcgKzI3Niw3IEBAIFdlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbChXZWJWaWV3Q2xpZW50
KiBjbGllbnQsIFdlYkRldlRvb2xzQWdlbnRDbGllbnQqIGRldlRvb2xzCiAgICAgLCBtX2NvbXBv
c2l0b3JDcmVhdGlvbkZhaWxlZChmYWxzZSkKICNlbmRpZgogI2lmIEVOQUJMRShJTlBVVF9TUEVF
Q0gpCi0gICAgLCBtX3NwZWVjaElucHV0Q2xpZW50KGNsaWVudCkKKyAgICAsIG1fc3BlZWNoSW5w
dXRDbGllbnQoU3BlZWNoSW5wdXRDbGllbnRJbXBsOjpjcmVhdGUoY2xpZW50KSkKICNlbmRpZgog
ICAgICwgbV9kZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5KG5ldyBEZXZpY2VPcmllbnRhdGlv
bkNsaWVudFByb3h5KGNsaWVudCA/IGNsaWVudC0+ZGV2aWNlT3JpZW50YXRpb25DbGllbnQoKSA6
IDApKQogewpAQCAtMjk4LDcgKzI5OSw3IEBAIFdlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbChXZWJW
aWV3Q2xpZW50KiBjbGllbnQsIFdlYkRldlRvb2xzQWdlbnRDbGllbnQqIGRldlRvb2xzCiAgICAg
cGFnZUNsaWVudHMuZHJhZ0NsaWVudCA9ICZtX2RyYWdDbGllbnRJbXBsOwogICAgIHBhZ2VDbGll
bnRzLmluc3BlY3RvckNsaWVudCA9ICZtX2luc3BlY3RvckNsaWVudEltcGw7CiAjaWYgRU5BQkxF
KElOUFVUX1NQRUVDSCkKLSAgICBwYWdlQ2xpZW50cy5zcGVlY2hJbnB1dENsaWVudCA9ICZtX3Nw
ZWVjaElucHV0Q2xpZW50OworICAgIHBhZ2VDbGllbnRzLnNwZWVjaElucHV0Q2xpZW50ID0gbV9z
cGVlY2hJbnB1dENsaWVudC5nZXQoKTsKICNlbmRpZgogICAgIHBhZ2VDbGllbnRzLmRldmljZU9y
aWVudGF0aW9uQ2xpZW50ID0gbV9kZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5LmdldCgpOwog
CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmggYi9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKaW5kZXggMDUwYjVlMTZhYTUyZjIzMGM5ODQ5ZWQ4
NDgyMzk2MGNjOTZhODA2My4uNzEyZWI3YTQwODM1MDkwNGE4OTVhM2Q4ZjA3OTIwMjNhNmRiYWI5
YiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCisrKyBiL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaApAQCAtNDksNyArNDksNiBAQAogI2luY2x1
ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIKICNpbmNs
dWRlICJOb3RpZmljYXRpb25QcmVzZW50ZXJJbXBsLmgiCi0jaW5jbHVkZSAiU3BlZWNoSW5wdXRD
bGllbnRJbXBsLmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CiAKQEAgLTc0LDYgKzczLDcgQEAgY2xhc3MgQXV0b0ZpbGxQb3B1cE1lbnVDbGll
bnQ7CiBjbGFzcyBDb250ZXh0TWVudUNsaWVudEltcGw7CiBjbGFzcyBEZXZpY2VPcmllbnRhdGlv
bkNsaWVudFByb3h5OwogY2xhc3MgRHJhZ1Njcm9sbFRpbWVyOworY2xhc3MgU3BlZWNoSW5wdXRD
bGllbnRJbXBsOwogY2xhc3MgV2ViQWNjZXNzaWJpbGl0eU9iamVjdDsKIGNsYXNzIFdlYkRldlRv
b2xzQWdlbnRDbGllbnQ7CiBjbGFzcyBXZWJEZXZUb29sc0FnZW50UHJpdmF0ZTsKQEAgLTU0Myw3
ICs1NDMsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBjb25zdCBXZWJJbnB1dEV2ZW50KiBtX2N1
cnJlbnRJbnB1dEV2ZW50OwogCiAjaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKLSAgICBTcGVlY2hJ
bnB1dENsaWVudEltcGwgbV9zcGVlY2hJbnB1dENsaWVudDsKKyAgICBPd25QdHI8U3BlZWNoSW5w
dXRDbGllbnRJbXBsPiBtX3NwZWVjaElucHV0Q2xpZW50OwogI2VuZGlmCiAgICAgLy8gSWYgd2Ug
YXR0ZW1wdCB0byBmZXRjaCB0aGUgb24tc2NyZWVuIEdyYXBoaWNzQ29udGV4dDNEIGJlZm9yZQog
ICAgIC8vIHRoZSBjb21wb3NpdG9yIGhhcyBiZWVuIHR1cm5lZCBvbiwgd2UgbmVlZCB0byBpbnN0
YW50aWF0ZSBpdApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nIGIvV2ViS2l0VG9v
bHMvQ2hhbmdlTG9nCmluZGV4IDlkZjMwMTVlYjNkYmZmNTJjZDA0YmRlNTMyNzdhMzVlYmY5ZDRh
ZjAuLjRmZmQ3MDYzN2FhNmJkNjRhNjljMDU3MThiNjJkMGRiNmVlNmM1NzkgMTAwNjQ0Ci0tLSBh
L1dlYktpdFRvb2xzL0NoYW5nZUxvZworKysgYi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOSBAQAorMjAxMC0xMC0xNSAgTGVhbmRybyBHcmFjacOhIEdpbCAgPGxlYW5kcm9ncmFj
aWFAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGRlZCBhIHNlY29uZCBwYXJhbWV0ZXIgdG8gc2V0TW9ja1NwZWVjaElucHV0UmVz
dWx0IGZvcgorICAgICAgICB0aGUgbGFuZ3VhZ2UgdXNlZCBpbiBzcGVlY2ggaW5wdXQuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzA4OQorCisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
c2V0TW9ja1NwZWVjaElucHV0UmVzdWx0Q2FsbGJhY2spOgorICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL0xheW91dFRlc3RDb250cm9sbGVyLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRy
b2xsZXI6OnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdCk6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcDoKKyAgICAgICAgKExheW91dFRlc3RD
b250cm9sbGVyOjpzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQpOgorCiAyMDEwLTEwLTE1ICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBC
YXJ0aC4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RD
b250cm9sbGVyLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250
cm9sbGVyLmNwcAppbmRleCAwYTdjMTFmZTU4ZTdmZTM2NmE3MGI2Y2QyMjc0YjM3ZGE1ZDI3ODcy
Li4wNjdjZDAxNDIzNDhjYjg1ZTIwNjc4ZjRhMjc1ZWY5MzUwYzJlNjEwIDEwMDY0NAotLS0gYS9X
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKKysrIGIv
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCkBAIC0x
MDcwLDE0ICsxMDcwLDE3IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIHNldE1vY2tHZW9sb2NhdGlvbkVy
cm9yQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0CiAKIHN0YXRpYyBKU1Zh
bHVlUmVmIHNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250
ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90
IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYq
IGV4Y2VwdGlvbikKIHsKLSAgICBpZiAoYXJndW1lbnRDb3VudCA8IDEpCisgICAgaWYgKGFyZ3Vt
ZW50Q291bnQgPCAyKQogICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4
dCk7CiAKICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gcmVzdWx0KEFkb3B0LCBKU1ZhbHVl
VG9TdHJpbmdDb3B5KGNvbnRleHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKSk7CiAgICAgQVNT
RVJUKCEqZXhjZXB0aW9uKTsKIAorICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBsYW5ndWFn
ZShBZG9wdCwgSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBhcmd1bWVudHNbMV0sIGV4Y2Vw
dGlvbikpOworICAgIEFTU0VSVCghKmV4Y2VwdGlvbik7CisKICAgICBMYXlvdXRUZXN0Q29udHJv
bGxlciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PExheW91dFRlc3RDb250cm9sbGVyKj4oSlNP
YmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKLSAgICBjb250cm9sbGVyLT5zZXRNb2NrU3Bl
ZWNoSW5wdXRSZXN1bHQocmVzdWx0LmdldCgpKTsKKyAgICBjb250cm9sbGVyLT5zZXRNb2NrU3Bl
ZWNoSW5wdXRSZXN1bHQocmVzdWx0LmdldCgpLCBsYW5ndWFnZS5nZXQoKSk7CiAKICAgICByZXR1
cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CmRpZmYgLS1naXQgYS9XZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oIGIvV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAppbmRleCA3NTVhMmIyYjljNjg4
NWI3OTZhMDNlNTJkNTAyMGQ4OGI0M2RkOThiLi5iY2NjMGEwNjBlZWY4Nzk4NjI0MDI1OTE4ZjM5
NjY2MjIyNTg4ZGUxIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlv
dXRUZXN0Q29udHJvbGxlci5oCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91
dFRlc3RDb250cm9sbGVyLmgKQEAgLTk0LDcgKzk0LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0
TW9ja0RldmljZU9yaWVudGF0aW9uKGJvb2wgY2FuUHJvdmlkZUFscGhhLCBkb3VibGUgYWxwaGEs
IGJvb2wgY2FuUHJvdmlkZUJldGEsIGRvdWJsZSBiZXRhLCBib29sIGNhblByb3ZpZGVHYW1tYSwg
ZG91YmxlIGdhbW1hKTsKICAgICB2b2lkIHNldE1vY2tHZW9sb2NhdGlvbkVycm9yKGludCBjb2Rl
LCBKU1N0cmluZ1JlZiBtZXNzYWdlKTsKICAgICB2b2lkIHNldE1vY2tHZW9sb2NhdGlvblBvc2l0
aW9uKGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFjY3VyYWN5KTsK
LSAgICB2b2lkIHNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdChKU1N0cmluZ1JlZiByZXN1bHQpOwor
ICAgIHZvaWQgc2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KEpTU3RyaW5nUmVmIHJlc3VsdCwgSlNT
dHJpbmdSZWYgbGFuZ3VhZ2VUYWcpOwogICAgIHZvaWQgc2V0UGVyc2lzdGVudFVzZXJTdHlsZVNo
ZWV0TG9jYXRpb24oSlNTdHJpbmdSZWYgcGF0aCk7CiAgICAgdm9pZCBzZXRQbHVnaW5zRW5hYmxl
ZChib29sIGZsYWcpOwogICAgIHZvaWQgc2V0UG9wdXBCbG9ja2luZ0VuYWJsZWQoYm9vbCBmbGFn
KTsKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91
dFRlc3RDb250cm9sbGVyLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L0xheW91dFRlc3RDb250cm9sbGVyLmNwcAppbmRleCBkNzc3NGU5OTY3YmU4NjlhNGQzNTM2OTZm
YzA0Y2MzZmRmOTgxZGRhLi4zY2NiNzQyNjQwZjRkMmZhMTQyYTcxODliMzhlZjMzZWJkNDBmYzk0
IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRU
ZXN0Q29udHJvbGxlci5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCkBAIC0xNTI1LDEwICsxNTI1LDEwIEBAIHZvaWQg
TGF5b3V0VGVzdENvbnRyb2xsZXI6OmFib3J0TW9kYWwoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBh
cmd1bWVudHMsIENwcFZhcmlhCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrU3Bl
ZWNoSW5wdXRSZXN1bHQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlh
bnQqIHJlc3VsdCkKIHsKICAgICByZXN1bHQtPnNldE51bGwoKTsKLSAgICBpZiAoYXJndW1lbnRz
LnNpemUoKSA8IDEgfHwgIWFyZ3VtZW50c1swXS5pc1N0cmluZygpKQorICAgIGlmIChhcmd1bWVu
dHMuc2l6ZSgpIDwgMiB8fCAhYXJndW1lbnRzWzBdLmlzU3RyaW5nKCkgfHwgIWFyZ3VtZW50c1sx
XS5pc1N0cmluZygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3NwZWVjaElucHV0Q29udHJv
bGxlck1vY2stPnNldE1vY2tSZWNvZ25pdGlvblJlc3VsdChjcHBWYXJpYW50VG9XZWJTdHJpbmco
YXJndW1lbnRzWzBdKSk7CisgICAgbV9zcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrLT5zZXRNb2Nr
UmVjb2duaXRpb25SZXN1bHQoY3BwVmFyaWFudFRvV2ViU3RyaW5nKGFyZ3VtZW50c1swXSksIGNw
cFZhcmlhbnRUb1dlYlN0cmluZyhhcmd1bWVudHNbMV0pKTsKIH0KIAogV2ViS2l0OjpXZWJTcGVl
Y2hJbnB1dENvbnRyb2xsZXIqIExheW91dFRlc3RDb250cm9sbGVyOjpzcGVlY2hJbnB1dENvbnRy
b2xsZXIoV2ViS2l0OjpXZWJTcGVlY2hJbnB1dExpc3RlbmVyKiBsaXN0ZW5lcikKZGlmZiAtLWdp
dCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0
ay5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xs
ZXJHdGsuY3BwCmluZGV4IGQ4MzEwNzYzZGU2NjRmMzk1MjQwNDRlN2Y4NWY3NzU1YmQ0OGYxYzAu
Ljg2N2YzMjdkNmY2ZTI2ZGUxMjNhMGNlOWYzMzdiODhkYzVjZDFlNmIgMTAwNjQ0Ci0tLSBhL1dl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAK
KysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVy
R3RrLmNwcApAQCAtNDg4LDcgKzQ4OCw3IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNl
dEdlb2xvY2F0aW9uUGVybWlzc2lvbihib29sIGFsbG93KQogICAgIHNldEdlb2xvY2F0aW9uUGVy
bWlzc2lvbkNvbW1vbihhbGxvdyk7CiB9CiAKLXZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNl
dE1vY2tTcGVlY2hJbnB1dFJlc3VsdChKU1N0cmluZ1JlZiByZXN1bHQpCit2b2lkIExheW91dFRl
c3RDb250cm9sbGVyOjpzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoSlNTdHJpbmdSZWYgcmVzdWx0
LCBKU1N0cmluZ1JlZiBsYW5ndWFnZSkKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBz
cGVlY2ggaW5wdXQgbGF5b3V0IHRlc3RzLgogICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk0ODUuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71163</attachid>
            <date>2010-10-19 06:54:29 -0700</date>
            <delta_ts>2010-10-20 09:35:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47089-20101019145427.patch</filename>
            <type>text/plain</type>
            <size>36804</size>
            <attacher name="Leandro Graciá Gil">leandrogracia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2OTA0YWRkNTEzMzU2OWQzMzlkMzM4YmE4OTdhZDRlZjhiMmZiMjg2Li43YTNiYzA5
ZTY2ZmUxYzgxMGZjZmRiNTdjNzcyNDdiZjBiODQzNmFhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAK
KzIwMTAtMTAtMTkgIExlYW5kcm8gR3JhY2nDoSBHaWwgIDxsZWFuZHJvZ3JhY2lhQGdvb2dsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
ZWQgYSBsYXlvdXQgdGVzdCBmb3IgdGhlIGxhbmd1YWdlIHRhZyBpbiBzcGVlY2ggaW5wdXQuIFVw
ZGF0ZWQKKyAgICAgICAgdGhlIHNwZWVjaCBidXR0b24gdGVzdHMgdG8gaW5jbHVkZSB0aGUgbmV3
IGxhbmd1YWdlIHBhcmFtZXRlciBpbiB0aGUKKyAgICAgICAgbW9jayByZXN1bHQuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzA4OQorCisgICAgICAg
ICogZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1sYW5ndWFnZS10YWctZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L3NwZWVjaC9pbnB1dC10ZXh0LWxhbmd1YWdlLXRhZy5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L3NwZWVjaC9pbnB1dC10ZXh0LXNwZWVjaGJ1dHRvbi5odG1s
OiBBZGRlZCBhbiBlbXB0eSBsYW5ndWFnZQorICAgICAgICAgIHBhcmFtZXRlci4KKyAgICAgICAg
KiBmYXN0L3NwZWVjaC9zcGVlY2gtYnV0dG9uLWlnbm9yZS1nZW5lcmF0ZWQtZXZlbnRzLmh0bWw6
IEFkZGVkIGFuCisgICAgICAgICAgZW1wdHkgbGFuZ3VhZ2UgcGFyYW1ldGVyLgorICAgICAgICAq
IHBsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dDogbGFuZ3VhZ2UgdGFnIHRl
c3QgaXMgZXhwZWN0ZWQKKyAgICAgICAgICB0byBmYWlsIHVudGlsIHRoZSBjaHJvbWl1bS1zaWRl
IHBhdGNoIGhhcyBiZWVuIGFwcGxpZWQuCisKIDIwMTAtMTAtMTkgIEJlbiBNdXJkb2NoICA8YmVu
bUBnb29nbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHVwZGF0ZSB0aGUgUXQgdGVzdCBl
eHBlY3RhdGlvbnMgYWZ0ZXIgcjcwMDQ3LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9z
cGVlY2gvaW5wdXQtdGV4dC1sYW5ndWFnZS10YWctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
ZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1sYW5ndWFnZS10YWctZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjkxZjMwZDY5NmY1ZDI1MGYxNGFmNTZiOTliNGU3MGM4NzljMGU1MDIKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9pbnB1dC10ZXh0LWxhbmd1YWdlLXRhZy1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMyBAQAorVGVzdHMgZm9yIGxhbmd1YWdlIHRhZyBpbmhl
cml0YW5jZSBhbmQgdmFsaWRhdGlvbiBpbiBzcGVlY2ggYnV0dG9ucy4KKworT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLgorCisKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNwZWVjaElu
cHV0Tm9uZSIpLnZhbHVlIGlzICJlcnJvcjogbm8gcmVzdWx0IGZvdW5kIGZvciBsYW5ndWFnZSAn
JyIKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNwZWVjaElucHV0RWxlbWVudCIpLnZh
bHVlIGlzICJQaWN0dXJlcyBvZiB0aGUgbW9vbiIKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInNwZWVjaElucHV0SW5oZXJpdGVkIikudmFsdWUgaXMgIuaciOOBruWGmeecnyIKK1BBU1Mg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNwZWVjaElucHV0SW52YWxpZCIpLnZhbHVlIGlzICJl
cnJvcjogbm8gcmVzdWx0IGZvdW5kIGZvciBsYW5ndWFnZSAnJyIKK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1sYW5ndWFnZS10YWcuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3Qvc3BlZWNoL2lucHV0LXRleHQtbGFuZ3VhZ2UtdGFnLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWJm
YzgyMjYyZWUzMGEyYzVmYTVlMjU4MTYxZWE4YTFlMThlNjVhZgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL2lucHV0LXRleHQtbGFuZ3VhZ2UtdGFnLmh0bWwKQEAg
LTAsMCArMSw2MiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8v
RU4iPgorPGh0bWw+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8aGVhZD4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxz
Y3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorZGVzY3JpcHRpb24oJ1Rl
c3RzIGZvciBsYW5ndWFnZSB0YWcgaW5oZXJpdGFuY2UgYW5kIHZhbGlkYXRpb24gaW4gc3BlZWNo
IGJ1dHRvbnMuJyk7CisKKy8vIE5vdGU6IHRlc3QgY2FzZXMgYXJlIHNlcXVlbnRpYWwgdG8gZW5z
dXJlIHRoYXQgbm8gbmV3IHJlY29nbml0aW9uIHN0YXJ0cyB3aGVuIGFub3RoZXIgcmVjb2duaXRp
b24gcmVjb3JkaW5nIGlzIGFjdGl2ZS4KK2Z1bmN0aW9uIG9uQ2hhbmdlTm9uZSgpIHsKKyAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoJ2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzcGVlY2hJbnB1
dE5vbmUiKS52YWx1ZScsICdlcnJvcjogbm8gcmVzdWx0IGZvdW5kIGZvciBsYW5ndWFnZSBcJ1wn
Jyk7CisgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc3BlZWNoQnV0dG9uQ2xpY2soJ3NwZWVj
aElucHV0RWxlbWVudCcpOyB9LCA1MCk7Cit9CisKK2Z1bmN0aW9uIG9uQ2hhbmdlRWxlbWVudCgp
IHsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJz
cGVlY2hJbnB1dEVsZW1lbnQiKS52YWx1ZScsICdQaWN0dXJlcyBvZiB0aGUgbW9vbicpOworICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNwZWVjaEJ1dHRvbkNsaWNrKCdzcGVlY2hJbnB1dElu
aGVyaXRlZCcpOyB9LCA1MCk7Cit9CisKK2Z1bmN0aW9uIG9uQ2hhbmdlSW5oZXJpdGVkKCkgewor
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNwZWVj
aElucHV0SW5oZXJpdGVkIikudmFsdWUnLCAn5pyI44Gu5YaZ55yfJyk7CisgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsgc3BlZWNoQnV0dG9uQ2xpY2soJ3NwZWVjaElucHV0SW52YWxpZCcpOyB9
LCA1MCk7Cit9CisKK2Z1bmN0aW9uIG9uQ2hhbmdlSW52YWxpZCgpIHsKKyAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoJ2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzcGVlY2hJbnB1dEludmFsaWQi
KS52YWx1ZScsICdlcnJvcjogbm8gcmVzdWx0IGZvdW5kIGZvciBsYW5ndWFnZSBcJ1wnJyk7Cisg
ICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK2Z1bmN0aW9uIHNwZWVjaEJ1dHRvbkNsaWNrKGVsZW1l
bnRJZCkgeworICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlbWVu
dElkKTsKKyAgICB2YXIgeCA9IGVsZW1lbnQub2Zmc2V0TGVmdCArIGVsZW1lbnQub2Zmc2V0V2lk
dGggLSA0OworICAgIHZhciB5ID0gZWxlbWVudC5vZmZzZXRUb3AgKyBlbGVtZW50Lm9mZnNldEhl
aWdodCAvIDI7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgZXZlbnRT
ZW5kZXIubW91c2VEb3duKCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworfQorCitmdW5j
dGlvbiBydW4oKSB7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlciAmJiB3aW5k
b3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja1Nw
ZWVjaElucHV0UmVzdWx0KCdQaWN0dXJlcyBvZiB0aGUgbW9vbicsICdlbi1HQicpOworICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoJ+aciOOBruWG
meecnycsICdqYScpOworICAgICAgICBzcGVlY2hCdXR0b25DbGljaygnc3BlZWNoSW5wdXROb25l
Jyk7CisgICAgfQorfQorCit3aW5kb3cub25sb2FkID0gcnVuOword2luZG93LmpzVGVzdElzQXN5
bmMgPSB0cnVlOword2luZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KzxpbnB1dCBpZD0ic3BlZWNoSW5wdXROb25lIiB4LXdlYmtpdC1zcGVlY2ggb253ZWJraXRzcGVl
Y2hjaGFuZ2U9Im9uQ2hhbmdlTm9uZSgpIj4KKzxpbnB1dCBpZD0ic3BlZWNoSW5wdXRFbGVtZW50
IiB4LXdlYmtpdC1zcGVlY2ggb253ZWJraXRzcGVlY2hjaGFuZ2U9Im9uQ2hhbmdlRWxlbWVudCgp
IiBsYW5nPSJlbi1HQiI+Cis8ZGl2IGxhbmc9ImphIj4gPGlucHV0IGlkPSJzcGVlY2hJbnB1dElu
aGVyaXRlZCIgeC13ZWJraXQtc3BlZWNoIG9ud2Via2l0c3BlZWNoY2hhbmdlPSJvbkNoYW5nZUlu
aGVyaXRlZCgpIj4gPC9kaXY+Cis8aW5wdXQgaWQ9InNwZWVjaElucHV0SW52YWxpZCIgeC13ZWJr
aXQtc3BlZWNoIG9ud2Via2l0c3BlZWNoY2hhbmdlPSJvbkNoYW5nZUludmFsaWQoKSIgbGFuZz0i
MTMzNyTDvjPOu2siPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1zcGVlY2hidXR0b24uaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3Qvc3BlZWNoL2lucHV0LXRleHQtc3BlZWNoYnV0dG9uLmh0bWwKaW5kZXggNmY1YmM0YjEyMWZi
NGY5ZDlkZGE2YzMzMWY4YjI2ZGMxY2Q0Mzk5NC4uY2VmNzcwNTZiMTdkMWNkNDUxYjQ5MGI3YzFm
MjQ2YmE2Yzg5NTBkYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvaW5wdXQt
dGV4dC1zcGVlY2hidXR0b24uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9pbnB1
dC10ZXh0LXNwZWVjaGJ1dHRvbi5odG1sCkBAIC0zMiw3ICszMiw3IEBAIGZ1bmN0aW9uIG9uV2Vi
a2l0U3BlZWNoQ2hhbmdlKCkgewogCiBmdW5jdGlvbiBydW4oKSB7CiAgICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlciAmJiB3aW5kb3cuZXZlbnRTZW5kZXIpIHsKLSAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KCdQaWN0dXJlcyBvZiB0
aGUgbW9vbicpOworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRNb2NrU3BlZWNoSW5w
dXRSZXN1bHQoJ1BpY3R1cmVzIG9mIHRoZSBtb29uJywgJycpOwogCiAgICAgICAgIC8vIENsaWNr
aW5nIHRoZSBzcGVlY2ggYnV0dG9uIHNob3VsZCBmaWxsIGluIG1vY2sgc3BlZWNoLXJlY29nbml6
ZWQgdGV4dC4KICAgICAgICAgdmFyIGlucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Nw
ZWVjaElucHV0Jyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9zcGVlY2gt
YnV0dG9uLWlnbm9yZS1nZW5lcmF0ZWQtZXZlbnRzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3Nw
ZWVjaC9zcGVlY2gtYnV0dG9uLWlnbm9yZS1nZW5lcmF0ZWQtZXZlbnRzLmh0bWwKaW5kZXggYjli
OGVjMzY2MDU1NzlmMmIxMjZkNmYxZGEzNTYwYzY3MmFkMmI3MS4uYzY4NDg2Mzc3MDUzMzk5YjI5
ZDA0ZmMyOTkwN2U1NWU4YWJmMDYwOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9zcGVl
Y2gvc3BlZWNoLWJ1dHRvbi1pZ25vcmUtZ2VuZXJhdGVkLWV2ZW50cy5odG1sCisrKyBiL0xheW91
dFRlc3RzL2Zhc3Qvc3BlZWNoL3NwZWVjaC1idXR0b24taWdub3JlLWdlbmVyYXRlZC1ldmVudHMu
aHRtbApAQCAtNDksNyArNDksNyBAQCBmdW5jdGlvbiBzZXR1cERpc3BhdGNoRXZlbnRUZXN0KCkg
ewogZnVuY3Rpb24gcnVuKCkgewogICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIg
JiYgd2luZG93LmV2ZW50U2VuZGVyKSB7CiAgICAgICAgIC8vIFJ1bm5pbmcgaW4gRFJULCB0ZXN0
IHRoZSBldmVudFNlbmRlciBjYXNlLgotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRN
b2NrU3BlZWNoSW5wdXRSZXN1bHQoJ1BpY3R1cmVzIG9mIHRoZSBtb29uJyk7CisgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdCgnUGljdHVyZXMgb2Yg
dGhlIG1vb24nLCAnJyk7CiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzcGVlY2hJ
bnB1dCcpLm9ud2Via2l0c3BlZWNoY2hhbmdlID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoJ2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzcGVlY2hJbnB1
dCIpLnZhbHVlJywgJ1BpY3R1cmVzIG9mIHRoZSBtb29uJyk7CiAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dCBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAppbmRleCBhMjM5ZWJm
ZGJmYjk3YTBlMGNjNDcyYjY1ZWJlNTU0NmI4NTVkZmUxLi5jOWFmYmZmY2ZhOTc1MWRjYzhiZWE3
YTM1ZjJmZGM4MTcwYzBlODU1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CkBAIC0zMjQwLDMgKzMyNDAsNiBAQCBCVUdKQVBI
RVQgOiBmYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtcHJldmVu
dHMtcmViYXNlLmh0bWwgPQogCiAvLyByNjk4MzMsIEpTQy9WOCBEYXRlIHBhcnNpbmcgZGlmZmVy
ZW5jZXMKIEJVR0pBUEhFVCA6IGZhc3QvanMvZGF0ZS1wYXJzZS10ZXN0Lmh0bWwgPSBURVhUCisK
Ky8vIFRlbXBvcmFyaWx5IGRpc2FibGVkIGZvciBhIDQtc2lkZWQgcGF0Y2guIFdpbGwgYmUgZW5h
YmxlZCBhZ2FpbiBieSBCVUdXSzQ3NDIwLgorQlVHV0s0NzA4OSA6IGZhc3Qvc3BlZWNoL2lucHV0
LXRleHQtbGFuZ3VhZ2UtdGFnLmh0bWwgPSBGQUlMCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDE4ZmM4ZTkzNTA3NmUzMjFmZmE5MmM4NWYx
YWMxODZhYWVkM2FhZDguLjcwNjI2Y2RhNzljOThkZjExY2JhMDU5NDRiNjAyOWZhYzRkNzIxNDQg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDAgQEAKKzIwMTAtMTAtMTkgIExlYW5kcm8gR3JhY2nDoSBHaWwgIDxsZWFuZHJv
Z3JhY2lhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgUGF0Y2ggdGhlIGN1cnJlbnQgc3BlZWNoIGlucHV0IGltcGxlbWVudGF0aW9u
IHRvIHVzZSBhbmQgdmFsaWRhdGUgdGhlCisgICAgICAgIG5lYXJlc3QgbGFuZ3VhZ2UgdGFnLiBU
aGUgbGFuZ3VhZ2UgaXMgbm93IHBhc3NlZCB0byB0aGUgc3RhcnRSZWNvZ25pdGlvbgorICAgICAg
ICBtZXRob2RzIHNvIHRoYXQgbGFuZ3VhZ2Utc3BlY2lmaWMgcmVjb2duaXRpb24gY291bGQgYmUg
dXNlZC4gQWxzbyBhZGRlZAorICAgICAgICBhIHNlY29uZCBwYXJhbWV0ZXIgdG8gc2V0TW9ja1Nw
ZWVjaElucHV0UmVzdWx0IGZvciB0aGUgbGFuZ3VhZ2UgdXNlZCBpbgorICAgICAgICBzcGVlY2gg
cmVjb2duaXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00NzA4OQorCisgICAgICAgIFRoaXMgaXMgdGhlIDJuZCBvZiBhIDQtc2lkZWQgcGF0Y2gg
aW4gQ2hyb21pdW0gYW5kIFdlYktpdC4gRm9yIG1vcmUKKyAgICAgICAgZGV0YWlscyBzZWUgaHR0
cDovL2NvZGVyZXZpZXcuY2hyb21pdW0ub3JnLzM2MTUwMDUvc2hvdyBhbmQKKyAgICAgICAgaHR0
cDovL2NvZGVyZXZpZXcuY2hyb21pdW0ub3JnLzM1OTUwMTgvc2hvdy4KKworICAgICAgICBUZXN0
OiBmYXN0L3NwZWVjaC9pbnB1dC10ZXh0LWxhbmd1YWdlLXRhZy5odG1sCisKKyAgICAgICAgKiBk
b20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojpjb21wdXRlSW5oZXJp
dGVkTGFuZ3VhZ2UpOiBpbmNsdWRlcyBhIGJyaWVmIGNoYXJhY3RlcgorICAgICAgICAgIHZhbGlk
YXRpb24gZm9yIHRoZSBCQ1AgNDcgbGFuZ3VhZ2UgdGFnLgorICAgICAgICAqIHBhZ2UvU3BlZWNo
SW5wdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoSW5wdXQ6OnN0YXJ0UmVjb2duaXRp
b24pOgorICAgICAgICAqIHBhZ2UvU3BlZWNoSW5wdXQuaDoKKyAgICAgICAgKiBwYWdlL1NwZWVj
aElucHV0Q2xpZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9TcGVlY2hJbnB1dENsaWVu
dE1vY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoSW5wdXRDbGllbnRNb2NrOjpzdGFy
dFJlY29nbml0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaElucHV0Q2xpZW50TW9jazo6
c2V0UmVjb2duaXRpb25SZXN1bHQpOiByZXN1bHRzIGFyZSBub3cKKyAgICAgICAgICBzdG9yZWQg
YnkgbGFuZ3VhZ2UgdXNpbmcgYSBoYXNoIG1hcC4KKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaElu
cHV0Q2xpZW50TW9jazo6dGltZXJGaXJlZCk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9TcGVl
Y2hJbnB1dENsaWVudE1vY2suaDoKKyAgICAgICAgKiByZW5kZXJpbmcvVGV4dENvbnRyb2xJbm5l
ckVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb250cm9sSW5uZXJFbGVtZW50
OjphdHRhY2hJbm5lckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoRmllbGRDYW5j
ZWxCdXR0b25FbGVtZW50OjpkZXRhY2gpOgorICAgICAgICAoV2ViQ29yZTo6U3BpbkJ1dHRvbkVs
ZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRGaWVs
ZFNwZWVjaEJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQ6OmRldGFjaCk6CisKIDIwMTAtMTAt
MTkgIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFVucmV2
aWV3ZWQgYXR0ZW1wdCB0byByZW1vdmUgd2FybmluZyBpbiBFRkwgYnVpbGQuCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4
IDgzZTEyOWU4ZTI4Y2ZhNTEwZWUwZDgxNTZkMjQzODVkMWU5M2RjZjkuLmM3ZDQ0MmFmOTY4MDky
NmU0YTJjYzQxYTVmODY2ZjlkY2VmNDU0YjAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0VsZW1l
bnQuY3BwCisrKyBiL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC01Niw2ICs1Niw3IEBACiAj
aW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRl
ICJYTUxOYW1lcy5oIgorI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgogCiAjaWYgRU5BQkxFKFNWRykKQEAgLTE0NzQsNiArMTQ3NSwxNSBA
QCBBdG9taWNTdHJpbmcgRWxlbWVudDo6Y29tcHV0ZUluaGVyaXRlZExhbmd1YWdlKCkgY29uc3QK
ICAgICAgICAgbiA9IG4tPnBhcmVudCgpOwogICAgIH0KIAorICAgIGlmICghdmFsdWUuaXNOdWxs
KCkgJiYgIXZhbHVlLmlzRW1wdHkoKSkgeworICAgICAgICAvLyBPbmx5IEEtWmEtejAtOSBhbmQg
Jy0nIGFyZSBhbGxvd2VkIGluIHRoZSBsYW5ndWFnZSB0YWcgKHNlZSBCQ1AgNDcpCisgICAgICAg
IGNvbnN0IGNoYXIgKnAgPSB2YWx1ZS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKTsKKyAgICAgICAg
Zm9yICg7ICpwICE9ICdcMCc7ICsrcCkgeworICAgICAgICAgICAgaWYgKCFpc0FTQ0lJQWxwaGFu
dW1lcmljKCpwKSAmJiAqcCAhPSAnLScpCisgICAgICAgICAgICAgICAgcmV0dXJuIEF0b21pY1N0
cmluZygpOworICAgICAgICB9CisgICAgfQorCiAgICAgcmV0dXJuIHZhbHVlOwogfQogCmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXQuY3BwIGIvV2ViQ29yZS9wYWdlL1NwZWVj
aElucHV0LmNwcAppbmRleCAyMzQ3OTFiYzRiMTNmNDNkZjlkMTczOWQ1ZDIwNWY5YWEyN2UyMDcy
Li5jYzVlMGY5N2ZiYWJmOWFmYTNmNDM1OWM3MjZiYWM4N2U1MzQxOGNmIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXQuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1
dC5jcHAKQEAgLTkzLDEwICs5MywxMCBAQCB2b2lkIFNwZWVjaElucHV0OjpzZXRSZWNvZ25pdGlv
blJlc3VsdChpbnQgbGlzdGVuZXJJZCwgY29uc3QgU3RyaW5nJiByZXN1bHQpCiAgICAgICAgIG1f
bGlzdGVuZXJzLmdldChsaXN0ZW5lcklkKS0+c2V0UmVjb2duaXRpb25SZXN1bHQobGlzdGVuZXJJ
ZCwgcmVzdWx0KTsKIH0KIAotYm9vbCBTcGVlY2hJbnB1dDo6c3RhcnRSZWNvZ25pdGlvbihpbnQg
bGlzdGVuZXJJZCwgY29uc3QgSW50UmVjdCYgZWxlbWVudFJlY3QpCitib29sIFNwZWVjaElucHV0
OjpzdGFydFJlY29nbml0aW9uKGludCBsaXN0ZW5lcklkLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdl
LCBjb25zdCBJbnRSZWN0JiBlbGVtZW50UmVjdCkKIHsKICAgICBBU1NFUlQobV9saXN0ZW5lcnMu
Y29udGFpbnMobGlzdGVuZXJJZCkpOwotICAgIHJldHVybiBtX2NsaWVudC0+c3RhcnRSZWNvZ25p
dGlvbihsaXN0ZW5lcklkLCBlbGVtZW50UmVjdCk7CisgICAgcmV0dXJuIG1fY2xpZW50LT5zdGFy
dFJlY29nbml0aW9uKGxpc3RlbmVySWQsIGxhbmd1YWdlLCBlbGVtZW50UmVjdCk7CiB9CiAKIHZv
aWQgU3BlZWNoSW5wdXQ6OnN0b3BSZWNvcmRpbmcoaW50IGxpc3RlbmVySWQpCmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXQuaCBiL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dC5o
CmluZGV4IGQxMGI3ODlhYWQyNzM5ZWRkM2JmNDUzMGU3YzZlMDBjNGUyZGFlOGEuLjhiNDI2ZjU2
MzEzNmVkNjUxZGQ2NDU2ZTgzNWI0ZDQ0NTNhYjgwMTIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFn
ZS9TcGVlY2hJbnB1dC5oCisrKyBiL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dC5oCkBAIC02MSw3
ICs2MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHVucmVnaXN0ZXJMaXN0ZW5lcihpbnQpOwogCiAg
ICAgLy8gTWV0aG9kcyBpbnZva2VkIGJ5IHRoZSBpbnB1dCBlbGVtZW50cy4KLSAgICBib29sIHN0
YXJ0UmVjb2duaXRpb24oaW50LCBjb25zdCBJbnRSZWN0Jik7CisgICAgYm9vbCBzdGFydFJlY29n
bml0aW9uKGludCwgY29uc3QgU3RyaW5nJiwgY29uc3QgSW50UmVjdCYpOwogICAgIHZvaWQgc3Rv
cFJlY29yZGluZyhpbnQpOwogICAgIHZvaWQgY2FuY2VsUmVjb2duaXRpb24oaW50KTsKIApkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0Q2xpZW50LmggYi9XZWJDb3JlL3BhZ2Uv
U3BlZWNoSW5wdXRDbGllbnQuaAppbmRleCBkNWZkYTE3ZmFhMmNkNzk1YWY0NGY1M2E0NmZjYmE1
OTc0MWFiNzZjLi5mNWFhYjAyYTc2NjE2NjE4YTYwYzc3NDRjYjQ3NDY2M2RjYjUyMmI0IDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXRDbGllbnQuaAorKysgYi9XZWJDb3JlL3Bh
Z2UvU3BlZWNoSW5wdXRDbGllbnQuaApAQCAtMzEsNiArMzEsOCBAQAogI2lmbmRlZiBTcGVlY2hJ
bnB1dENsaWVudF9oCiAjZGVmaW5lIFNwZWVjaElucHV0Q2xpZW50X2gKIAorI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CisKICNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC00OCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0TGlz
dGVuZXIoU3BlZWNoSW5wdXRMaXN0ZW5lciopID0gMDsKIAogICAgIC8vIFN0YXJ0cyBzcGVlY2gg
cmVjb2duaXRpb24gYW5kIGF1ZGlvIHJlY29yZGluZy4KLSAgICB2aXJ0dWFsIGJvb2wgc3RhcnRS
ZWNvZ25pdGlvbihpbnQgcmVxdWVzdElkLCBjb25zdCBJbnRSZWN0JiBlbGVtZW50UmVjdCkgPSAw
OworICAgIHZpcnR1YWwgYm9vbCBzdGFydFJlY29nbml0aW9uKGludCByZXF1ZXN0SWQsIGNvbnN0
IFN0cmluZyYgbGFuZ3VhZ2UsIGNvbnN0IEludFJlY3QmIGVsZW1lbnRSZWN0KSA9IDA7CiAKICAg
ICAvLyBTdG9wcyBhdWRpbyByZWNvcmRpbmcgYW5kIHBlcmZvcm1zIHJlY29nbml0aW9uIHdpdGgg
dGhlIGF1ZGlvIHJlY29yZGVkIHVudGlsIG5vdwogICAgIC8vIChkb2VzIG5vdCBkaXNjYXJkIGF1
ZGlvKS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TcGVlY2hJbnB1dENsaWVu
dE1vY2suY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xpZW50TW9jay5j
cHAKaW5kZXggNmI2NDk0MmYxN2I5MjViNDllZjA5MjE0N2MwYTE2YTA3ZjBkN2NjYy4uYzA0OTcx
ZTBhOTQzODU1YThjZmNkMWQxYzI0NTYzMmJhODIxYjEwYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xpZW50TW9jay5jcHAKKysrIGIvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xpZW50TW9jay5jcHAKQEAgLTM1LDYgKzM1LDExIEBACiAK
ICNpbmNsdWRlICJTcGVlY2hJbnB1dExpc3RlbmVyLmgiCiAKK25hbWVzcGFjZSB7CisgICAgLy8g
SGFzaE1hcCBkb2Vzbid0IHN1cHBvcnQgZW1wdHkgc3RyaW5ncyBhcyBrZXlzLCBzbyB0aGlzIHZh
bHVlIChhbiBpbnZhbGlkIEJDUDQ3IHRhZykgaXMgdXNlZCBmb3IgdGhvc2UgY2FzZXMuCisgICAg
Y29uc3QgU3RyaW5nIGVtcHR5TGFuZ3VhZ2UgPSAiXyI7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogU3BlZWNoSW5wdXRDbGllbnRNb2NrOjpTcGVlY2hJbnB1dENsaWVudE1vY2soKQpAQCAt
NTAsMTIgKzU1LDEzIEBAIHZvaWQgU3BlZWNoSW5wdXRDbGllbnRNb2NrOjpzZXRMaXN0ZW5lcihT
cGVlY2hJbnB1dExpc3RlbmVyKiBsaXN0ZW5lcikKICAgICBtX2xpc3RlbmVyID0gbGlzdGVuZXI7
CiB9CiAKLWJvb2wgU3BlZWNoSW5wdXRDbGllbnRNb2NrOjpzdGFydFJlY29nbml0aW9uKGludCBy
ZXF1ZXN0SWQsIGNvbnN0IEludFJlY3QmKQorYm9vbCBTcGVlY2hJbnB1dENsaWVudE1vY2s6OnN0
YXJ0UmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSwgY29u
c3QgSW50UmVjdCYpCiB7CiAgICAgaWYgKG1fdGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIG1fcmVxdWVzdElkID0gcmVxdWVzdElkOwogICAgIG1fcmVjb3JkaW5n
ID0gdHJ1ZTsKKyAgICBtX2xhbmd1YWdlID0gbGFuZ3VhZ2U7CiAgICAgbV90aW1lci5zdGFydE9u
ZVNob3QoMCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC04MCw5ICs4NiwxMiBAQCB2b2lkIFNw
ZWVjaElucHV0Q2xpZW50TW9jazo6Y2FuY2VsUmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCkKICAg
ICB9CiB9CiAKLXZvaWQgU3BlZWNoSW5wdXRDbGllbnRNb2NrOjpzZXRSZWNvZ25pdGlvblJlc3Vs
dChjb25zdCBTdHJpbmcmIHJlc3VsdCkKK3ZvaWQgU3BlZWNoSW5wdXRDbGllbnRNb2NrOjpzZXRS
ZWNvZ25pdGlvblJlc3VsdChjb25zdCBTdHJpbmcmIHJlc3VsdCwgY29uc3QgU3RyaW5nJiBsYW5n
dWFnZSkKIHsKLSAgICBtX3JlY29nbml0aW9uUmVzdWx0ID0gcmVzdWx0OworICAgIGlmIChsYW5n
dWFnZS5pc0VtcHR5KCkpCisgICAgICAgIG1fcmVjb2duaXRpb25SZXN1bHQuc2V0KGVtcHR5TGFu
Z3VhZ2UsIHJlc3VsdCk7CisgICAgZWxzZQorICAgICAgICBtX3JlY29nbml0aW9uUmVzdWx0LnNl
dChsYW5ndWFnZSwgcmVzdWx0KTsKIH0KIAogdm9pZCBTcGVlY2hJbnB1dENsaWVudE1vY2s6OnRp
bWVyRmlyZWQoV2ViQ29yZTo6VGltZXI8U3BlZWNoSW5wdXRDbGllbnRNb2NrPiopCkBAIC05Miw3
ICsxMDEsMTcgQEAgdm9pZCBTcGVlY2hJbnB1dENsaWVudE1vY2s6OnRpbWVyRmlyZWQoV2ViQ29y
ZTo6VGltZXI8U3BlZWNoSW5wdXRDbGllbnRNb2NrPiopCiAgICAgICAgIG1fbGlzdGVuZXItPmRp
ZENvbXBsZXRlUmVjb3JkaW5nKG1fcmVxdWVzdElkKTsKICAgICAgICAgbV90aW1lci5zdGFydE9u
ZVNob3QoMCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgbV9saXN0ZW5lci0+c2V0UmVjb2duaXRp
b25SZXN1bHQobV9yZXF1ZXN0SWQsIG1fcmVjb2duaXRpb25SZXN1bHQpOworICAgICAgICBTdHJp
bmcgbGFuZ3VhZ2UgPSBtX2xhbmd1YWdlLmlzRW1wdHkoKSA/IFN0cmluZyhlbXB0eUxhbmd1YWdl
KSA6IG1fbGFuZ3VhZ2U7CisgICAgICAgIGlmICghbV9yZWNvZ25pdGlvblJlc3VsdC5jb250YWlu
cyhsYW5ndWFnZSkpIHsKKyAgICAgICAgICAgIC8vIENhbid0IGF2b2lkIHNldHRpbmcgYSByZXN1
bHQgb24gZW1wdHkgb3IgaW52YWxpZCBsYW5ndWFnZSBzdHJpbmdzLgorICAgICAgICAgICAgLy8g
VGhpcyB3b3VsZCBhdm9pZCBnZW5lcmF0aW5nIHRoZSBldmVudHMgdXNlZCB0byBjaGVjayB0aGUg
cmVzdWx0cyBhbmQgdGhlIHRlc3Qgd291bGQgdGltZW91dC4KKyAgICAgICAgICAgIFN0cmluZyBl
cnJvcigiZXJyb3I6IG5vIHJlc3VsdCBmb3VuZCBmb3IgbGFuZ3VhZ2UgJyIpOworICAgICAgICAg
ICAgZXJyb3IuYXBwZW5kKG1fbGFuZ3VhZ2UpOworICAgICAgICAgICAgZXJyb3IuYXBwZW5kKCIn
Iik7CisgICAgICAgICAgICBtX2xpc3RlbmVyLT5zZXRSZWNvZ25pdGlvblJlc3VsdChtX3JlcXVl
c3RJZCwgZXJyb3IpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1fbGlzdGVuZXItPnNl
dFJlY29nbml0aW9uUmVzdWx0KG1fcmVxdWVzdElkLCBtX3JlY29nbml0aW9uUmVzdWx0LmdldChs
YW5ndWFnZSkpOworCiAgICAgICAgIG1fbGlzdGVuZXItPmRpZENvbXBsZXRlUmVjb2duaXRpb24o
bV9yZXF1ZXN0SWQpOwogICAgICAgICBtX3JlcXVlc3RJZCA9IDA7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xpZW50TW9jay5oIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xpZW50TW9jay5oCmluZGV4IGNlODNkM2JiOWNi
ODhiMGEzYTk1YjU0OTU0MjdkMjk5MWYyZTBiNGYuLjNjZTk4N2I4MjNjZDE5ODAyODY2OWM3Nzlm
M2M0NzljNDczY2I3ZWQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TcGVlY2hJ
bnB1dENsaWVudE1vY2suaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL21vY2svU3BlZWNoSW5wdXRD
bGllbnRNb2NrLmgKQEAgLTM0LDYgKzM0LDggQEAKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5o
IgogI2luY2x1ZGUgIlNwZWVjaElucHV0Q2xpZW50LmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKKyNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4K
IAogI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCiAKQEAgLTQ2LDExICs0OCwxMSBAQCBjbGFzcyBT
cGVlY2hJbnB1dENsaWVudE1vY2sgOiBwdWJsaWMgU3BlZWNoSW5wdXRDbGllbnQgewogcHVibGlj
OgogICAgIFNwZWVjaElucHV0Q2xpZW50TW9jaygpOwogCi0gICAgdm9pZCBzZXRSZWNvZ25pdGlv
blJlc3VsdChjb25zdCBTdHJpbmcmIHJlc3VsdCk7CisgICAgdm9pZCBzZXRSZWNvZ25pdGlvblJl
c3VsdChjb25zdCBTdHJpbmcmIHJlc3VsdCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSk7CiAKICAg
ICAvLyBTcGVlY2hJbnB1dENsaWVudCBtZXRob2RzLgogICAgIHZvaWQgc2V0TGlzdGVuZXIoU3Bl
ZWNoSW5wdXRMaXN0ZW5lciopOwotICAgIGJvb2wgc3RhcnRSZWNvZ25pdGlvbihpbnQsIGNvbnN0
IEludFJlY3QmKTsKKyAgICBib29sIHN0YXJ0UmVjb2duaXRpb24oaW50LCBjb25zdCBTdHJpbmcm
LCBjb25zdCBJbnRSZWN0Jik7CiAgICAgdm9pZCBzdG9wUmVjb3JkaW5nKGludCk7CiAgICAgdm9p
ZCBjYW5jZWxSZWNvZ25pdGlvbihpbnQpOwogCkBAIC02MSw3ICs2Myw5IEBAIHByaXZhdGU6CiAg
ICAgVGltZXI8U3BlZWNoSW5wdXRDbGllbnRNb2NrPiBtX3RpbWVyOwogICAgIFNwZWVjaElucHV0
TGlzdGVuZXIqIG1fbGlzdGVuZXI7CiAgICAgaW50IG1fcmVxdWVzdElkOwotICAgIFN0cmluZyBt
X3JlY29nbml0aW9uUmVzdWx0OworCisgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gbV9yZWNv
Z25pdGlvblJlc3VsdDsKKyAgICBTdHJpbmcgbV9sYW5ndWFnZTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRDb250cm9sSW5u
ZXJFbGVtZW50cy5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Q29udHJvbElubmVyRWxlbWVu
dHMuY3BwCmluZGV4IDVkNWI4YjMwYjQxMTA1MjBkMWE0ZGU3YjhhNzljNDg1ZDc5MzY2MDguLjY1
ZDBhNjQ2MDlkMjAzNGIxMDk5NTAzZDE2OTE1MWFiZTY2ZGFhM2UgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcmVuZGVyaW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKKysrIGIvV2ViQ29yZS9y
ZW5kZXJpbmcvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcApAQCAtMjEsOSArMjEsOSBAQAog
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQogICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwotIAorCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
VGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgiCiAKQEAgLTEwNywxOCArMTA3LDE4IEBAIHZvaWQg
VGV4dENvbnRyb2xJbm5lckVsZW1lbnQ6OmF0dGFjaElubmVyRWxlbWVudChOb2RlKiBwYXJlbnQs
IFBhc3NSZWZQdHI8UmVuZGVyCiAgICAgICAgIHNldFJlbmRlcmVyKHJlbmRlcmVyKTsKICAgICAg
ICAgcmVuZGVyZXItPnNldFN0eWxlKHN0eWxlKTsKICAgICB9Ci0gICAgCisKICAgICAvLyBTZXQg
dGhlc2UgZXhwbGljaXRseSBzaW5jZSB0aGlzIG5vcm1hbGx5IGhhcHBlbnMgZHVyaW5nIGFuIGF0
dGFjaCgpCiAgICAgc2V0QXR0YWNoZWQoKTsKICAgICBzZXRJbkRvY3VtZW50KCk7Ci0gICAgCisK
ICAgICAvLyBGb3IgZWxlbWVudHMgd2l0aG91dCBhIHNoYWRvdyBwYXJlbnQsIGFkZCB0aGUgbm9k
ZSB0byB0aGUgRE9NIG5vcm1hbGx5LgogICAgIGlmICghbV9zaGFkb3dQYXJlbnQpIHsKICAgICAg
ICAgLy8gRklYTUU6IFRoaXMgY29kZSBzZWVtcyB2ZXJ5IHdyb25nLiAgV2h5IGFyZSB3ZSBtYWdp
Y2FsbHkgYWRkaW5nIHx0aGlzfCB0byB0aGUgRE9NIGhlcmU/CiAgICAgICAgIC8vICAgICAgICBX
ZSBzaG91bGRuJ3QgYmUgY2FsbGluZyBwYXJzZXIgQVBJIG1ldGhvZHMgb3V0c2lkZSBvZiB0aGUg
cGFyc2VyIQogICAgICAgICBwYXJlbnQtPmRlcHJlY2F0ZWRQYXJzZXJBZGRDaGlsZCh0aGlzKTsK
ICAgICB9Ci0gCisKICAgICAvLyBBZGQgdGhlIHJlbmRlcmVyIHRvIHRoZSByZW5kZXIgdHJlZQog
ICAgIGlmIChyZW5kZXJlcikKICAgICAgICAgcGFyZW50LT5yZW5kZXJlcigpLT5hZGRDaGlsZChy
ZW5kZXJlcik7CkBAIC0yMDgsNyArMjA4LDcgQEAgdm9pZCBTZWFyY2hGaWVsZENhbmNlbEJ1dHRv
bkVsZW1lbnQ6OmRldGFjaCgpCiB7CiAgICAgaWYgKG1fY2FwdHVyaW5nKSB7CiAgICAgICAgIGlm
IChGcmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLT5mcmFtZSgpKQotICAgICAgICAgICAgZnJhbWUt
PmV2ZW50SGFuZGxlcigpLT5zZXRDYXB0dXJpbmdNb3VzZUV2ZW50c05vZGUoMCk7ICAgICAgCisg
ICAgICAgICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPnNldENhcHR1cmluZ01vdXNlRXZlbnRz
Tm9kZSgwKTsKICAgICB9CiAgICAgVGV4dENvbnRyb2xJbm5lckVsZW1lbnQ6OmRldGFjaCgpOwog
fQpAQCAtMjgxLDkgKzI4MSw5IEBAIHZvaWQgU3BpbkJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVu
dEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogICAgIGlmICghYm94KSB7CiAgICAgICAgIGlmICghZXZl
bnQtPmRlZmF1bHRIYW5kbGVkKCkpCiAgICAgICAgICAgICBIVE1MRGl2RWxlbWVudDo6ZGVmYXVs
dEV2ZW50SGFuZGxlcihldmVudCk7Ci0gICAgICAgIHJldHVybjsgICAgICAgIAorICAgICAgICBy
ZXR1cm47CiAgICAgfQotICAgIAorCiAgICAgSFRNTElucHV0RWxlbWVudCogaW5wdXQgPSBzdGF0
aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4oc2hhZG93QW5jZXN0b3JOb2RlKCkpOwogICAgIGlm
IChpbnB1dC0+ZGlzYWJsZWQoKSB8fCBpbnB1dC0+aXNSZWFkT25seUZvcm1Db250cm9sKCkpIHsK
ICAgICAgICAgaWYgKCFldmVudC0+ZGVmYXVsdEhhbmRsZWQoKSkKQEAgLTQzMSw3ICs0MzEsNyBA
QCB2b2lkIElucHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVy
KEV2ZW50KiBldmVudCkKICAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuY2xp
Y2tFdmVudCkgewogICAgICAgICBzd2l0Y2ggKG1fc3RhdGUpIHsKICAgICAgICAgY2FzZSBJZGxl
OgotICAgICAgICAgICAgaWYgKHNwZWVjaElucHV0KCktPnN0YXJ0UmVjb2duaXRpb24obV9saXN0
ZW5lcklkLCBpbnB1dC0+cmVuZGVyZXIoKS0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKSkpCisg
ICAgICAgICAgICBpZiAoc3BlZWNoSW5wdXQoKS0+c3RhcnRSZWNvZ25pdGlvbihtX2xpc3RlbmVy
SWQsIGlucHV0LT5jb21wdXRlSW5oZXJpdGVkTGFuZ3VhZ2UoKSwgaW5wdXQtPnJlbmRlcmVyKCkt
PmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCkpKQogICAgICAgICAgICAgICAgIHNldFN0YXRlKFJl
Y29yZGluZyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBSZWNvcmRpbmc6CkBA
IC00ODcsNyArNDg3LDcgQEAgdm9pZCBJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudDo6ZGV0
YWNoKCkKIHsKICAgICBpZiAobV9jYXB0dXJpbmcpIHsKICAgICAgICAgaWYgKEZyYW1lKiBmcmFt
ZSA9IGRvY3VtZW50KCktPmZyYW1lKCkpCi0gICAgICAgICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVy
KCktPnNldENhcHR1cmluZ01vdXNlRXZlbnRzTm9kZSgwKTsgICAgICAKKyAgICAgICAgICAgIGZy
YW1lLT5ldmVudEhhbmRsZXIoKS0+c2V0Q2FwdHVyaW5nTW91c2VFdmVudHNOb2RlKDApOwogICAg
IH0KIAogICAgIGlmIChtX3N0YXRlICE9IElkbGUpCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAxOTc3ZGMxMTM2
MTlmNjMxZTQyMGFlNmMzM2U4YjA0OWY5YWZlNGIyLi5kMTdiNjMyOGU5MWE1NmViMjY1YjdlM2E1
NDVjMDhiZDc2ODEzZGUwIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisr
KyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAxMC0xMC0x
OSAgTGVhbmRybyBHcmFjacOhIEdpbCAgPGxlYW5kcm9ncmFjaWFAZ29vZ2xlLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXRjaCB0aGUgY3Vy
cmVudCBzcGVlY2ggaW5wdXQgaW1wbGVtZW50YXRpb24gdG8gdXNlIGFuZCB2YWxpZGF0ZSB0aGUK
KyAgICAgICAgbmVhcmVzdCBsYW5ndWFnZSB0YWcuIFRoZSBsYW5ndWFnZSBpcyBub3cgcGFzc2Vk
IHRvIHRoZSBzdGFydFJlY29nbml0aW9uCisgICAgICAgIG1ldGhvZHMgc28gdGhhdCBsYW5ndWFn
ZS1zcGVjaWZpYyByZWNvZ25pdGlvbiBjb3VsZCBiZSB1c2VkLiBBbHNvIGFkZGVkCisgICAgICAg
IGEgc2Vjb25kIHBhcmFtZXRlciB0byBzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQgZm9yIHRoZSBs
YW5ndWFnZSB1c2VkIGluCisgICAgICAgIHNwZWVjaCByZWNvZ25pdGlvbi4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3MDg5CisKKyAgICAgICAgVGhp
cyBpcyB0aGUgMm5kIG9mIGEgNC1zaWRlZCBwYXRjaCBpbiBDaHJvbWl1bSBhbmQgV2ViS2l0LiBG
b3IgbW9yZQorICAgICAgICBkZXRhaWxzIHNlZSBodHRwOi8vY29kZXJldmlldy5jaHJvbWl1bS5v
cmcvMzYxNTAwNS9zaG93IGFuZAorICAgICAgICBodHRwOi8vY29kZXJldmlldy5jaHJvbWl1bS5v
cmcvMzU5NTAxOC9zaG93LgorCisgICAgICAgICogcHVibGljL1dlYlNwZWVjaElucHV0Q29udHJv
bGxlci5oOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXI6OnN0YXJ0
UmVjb2duaXRpb24pOgorICAgICAgICAqIHB1YmxpYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJN
b2NrLmg6CisgICAgICAgICogc3JjL1NwZWVjaElucHV0Q2xpZW50SW1wbC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlNwZWVjaElucHV0Q2xpZW50SW1wbDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktp
dDo6U3BlZWNoSW5wdXRDbGllbnRJbXBsOjpzdGFydFJlY29nbml0aW9uKToKKyAgICAgICAgKiBz
cmMvU3BlZWNoSW5wdXRDbGllbnRJbXBsLmg6CisgICAgICAgICogc3JjL1dlYlNwZWVjaElucHV0
Q29udHJvbGxlck1vY2tJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoSW5wdXRD
b250cm9sbGVyTW9ja0ltcGw6OnNldE1vY2tSZWNvZ25pdGlvblJlc3VsdCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsOjpzdGFydFJlY29nbml0aW9u
KToKKyAgICAgICAgKiBzcmMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGwuaDoKKyAg
ICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1w
bDo6V2ViVmlld0ltcGwpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5oOgorCiAyMDEwLTEw
LTE4ICBBZHJpZW5uZSBXYWxrZXIgIDxlbm5lQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgS2VubmV0aCBSdXNzZWxsLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
U3BlZWNoSW5wdXRDb250cm9sbGVyLmgKaW5kZXggNTQwODc0MWEzYzk0ZDNiZjFjNTQzZDk2ZTlm
YzE2YTYzOTBkYjAyZi4uMWZkZTJhOGU3NzRmMzJlNThmODg3MmYyNDgyMjIzMDU5Yzg4YzE0NyAx
MDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xs
ZXIuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaElucHV0Q29udHJvbGxl
ci5oCkBAIC0zNSw2ICszNSw3IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBXZWJT
dHJpbmc7CiBzdHJ1Y3QgV2ViUmVjdDsKIAogLy8gUHJvdmlkZXMgYW4gZW1iZWRkZXIgQVBJIGNh
bGxlZCBieSBXZWJLaXQuCkBAIC00Myw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICAvLyBTdGFydHMg
c3BlZWNoIHJlY29nbml0aW9uLiBTcGVlY2ggd2lsbCBnZXQgcmVjb3JkZWQgdW50aWwgdGhlIGVu
ZHBvaW50ZXIgZGV0ZWN0cyBzaWxlbmNlLAogICAgIC8vIHJ1bnMgdG8gdGhlIGxpbWl0IG9yIHN0
b3BSZWNvcmRpbmcgaXMgY2FsbGVkLiBQcm9ncmVzcyBpbmRpY2F0aW9ucyBhbmQgdGhlIHJlY29n
bml6ZWQKICAgICAvLyB0ZXh0IGFyZSByZXR1cm5lZCB2aWEgdGhlIGxpc3RlbmVyIGludGVyZmFj
ZS4KLSAgICB2aXJ0dWFsIGJvb2wgc3RhcnRSZWNvZ25pdGlvbihpbnQgcmVxdWVzdElkLCBjb25z
dCBXZWJSZWN0JikKKyAgICB2aXJ0dWFsIGJvb2wgc3RhcnRSZWNvZ25pdGlvbihpbnQgcmVxdWVz
dElkLCBjb25zdCBXZWJTdHJpbmcmIGxhbmd1YWdlLCBjb25zdCBXZWJSZWN0JiBlbGVtZW50UmVj
dCkKICAgICB7CiAgICAgICAgIFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTcGVl
Y2hJbnB1dENvbnRyb2xsZXJNb2NrLmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNwZWVj
aElucHV0Q29udHJvbGxlck1vY2suaAppbmRleCA5YTI2MjM1ZmY2ZDVkY2NiYmUyNDcyNjJhZTQ0
YTNhYzczOTdjM2Y0Li5iNGM1MGEwNWRjZjVhMTJmODQxYmY5YjY3NTVjZDI4ODE3ZjhjMDhiIDEw
MDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaElucHV0Q29udHJvbGxl
ck1vY2suaAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaElucHV0Q29udHJv
bGxlck1vY2suaApAQCAtNDQsNiArNDQsMTAgQEAgcHVibGljOgogICAgICAgICBXZWJTcGVlY2hJ
bnB1dExpc3RlbmVyKiBsaXN0ZW5lcik7CiAgICAgdmlydHVhbCB+V2ViU3BlZWNoSW5wdXRDb250
cm9sbGVyTW9jaygpIHsgfQogCisgICAgdmlydHVhbCB2b2lkIHNldE1vY2tSZWNvZ25pdGlvblJl
c3VsdChjb25zdCBXZWJTdHJpbmcmIHJlc3VsdCwgY29uc3QgV2ViU3RyaW5nJiBsYW5ndWFnZSkg
PSAwOworCisgICAgLy8gRklYTUU6IHRoaXMgaXMgYSBmaXggZm9yIGEgdHdvLXNpZGVkIHBhdGNo
LiBEZWxldGUgYXMgc29vbiBhcyB0aGUgY2hyb21pdW0gc2lkZSBpcyBwYXRjaGVkLgorICAgIC8v
IENocm9taXVtIHBhdGNoIG5vdCB1cGxvYWRlZCB5ZXQsIGJ1dCB3aWxsIGRlcGVuZCBvbiBodHRw
Oi8vY29kZXJldmlldy5jaHJvbWl1bS5vcmcvMzYxNTAwNS9zaG93IHBhdGNoLgogICAgIHZpcnR1
YWwgdm9pZCBzZXRNb2NrUmVjb2duaXRpb25SZXN1bHQoY29uc3QgV2ViU3RyaW5nJiByZXN1bHQp
ID0gMDsKIH07CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvU3BlZWNoSW5wdXRD
bGllbnRJbXBsLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvU3BlZWNoSW5wdXRDbGllbnRJbXBs
LmNwcAppbmRleCA5NjNkNDQwNWE2MmQzMmUxYThjZWNkNTRjMDhjNWJiZWIzYTYyZGNhLi4xMzgx
OTI5NjNiNTQzMDVjNmEzODNhNTJlYzIzOGNhMGM1YjEwNGNmIDEwMDY0NAotLS0gYS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1NwZWVjaElucHV0Q2xpZW50SW1wbC5jcHAKKysrIGIvV2ViS2l0L2Nocm9t
aXVtL3NyYy9TcGVlY2hJbnB1dENsaWVudEltcGwuY3BwCkBAIC0zMiwxNSArMzIsMjEgQEAKICNp
bmNsdWRlICJTcGVlY2hJbnB1dENsaWVudEltcGwuaCIKIAogI2luY2x1ZGUgIlBsYXRmb3JtU3Ry
aW5nLmgiCisjaW5jbHVkZSAiU3BlZWNoSW5wdXRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIldlYlNw
ZWVjaElucHV0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIldlYlN0cmluZy5oIgogI2luY2x1ZGUg
IldlYlZpZXdDbGllbnQuaCIKLSNpbmNsdWRlICJwYWdlL1NwZWVjaElucHV0TGlzdGVuZXIuaCIK
KyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCiAjaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkK
IAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK1Bhc3NPd25QdHI8U3BlZWNoSW5wdXRDbGllbnRJbXBs
PiBTcGVlY2hJbnB1dENsaWVudEltcGw6OmNyZWF0ZShXZWJWaWV3Q2xpZW50KiBjbGllbnQpCit7
CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBTcGVlY2hJbnB1dENsaWVudEltcGwoY2xpZW50KSk7
Cit9CisKIFNwZWVjaElucHV0Q2xpZW50SW1wbDo6U3BlZWNoSW5wdXRDbGllbnRJbXBsKFdlYlZp
ZXdDbGllbnQqIHdlYl92aWV3X2NsaWVudCkKICAgICA6IG1fY29udHJvbGxlcih3ZWJfdmlld19j
bGllbnQgPyB3ZWJfdmlld19jbGllbnQtPnNwZWVjaElucHV0Q29udHJvbGxlcih0aGlzKSA6IDAp
CiAgICAgLCBtX2xpc3RlbmVyKDApCkBAIC01NiwxMCArNjIsMTAgQEAgdm9pZCBTcGVlY2hJbnB1
dENsaWVudEltcGw6OnNldExpc3RlbmVyKFdlYkNvcmU6OlNwZWVjaElucHV0TGlzdGVuZXIqIGxp
c3RlbmVyKQogICAgIG1fbGlzdGVuZXIgPSBsaXN0ZW5lcjsKIH0KIAotYm9vbCBTcGVlY2hJbnB1
dENsaWVudEltcGw6OnN0YXJ0UmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCwgY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYgZWxlbWVudFJlY3QpCitib29sIFNwZWVjaElucHV0Q2xpZW50SW1wbDo6c3Rh
cnRSZWNvZ25pdGlvbihpbnQgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlLCBjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JiBlbGVtZW50UmVjdCkKIHsKICAgICBBU1NFUlQobV9saXN0ZW5l
cik7Ci0gICAgcmV0dXJuIG1fY29udHJvbGxlci0+c3RhcnRSZWNvZ25pdGlvbihyZXF1ZXN0SWQs
IGVsZW1lbnRSZWN0KTsKKyAgICByZXR1cm4gbV9jb250cm9sbGVyLT5zdGFydFJlY29nbml0aW9u
KHJlcXVlc3RJZCwgbGFuZ3VhZ2UsIGVsZW1lbnRSZWN0KTsKIH0KIAogdm9pZCBTcGVlY2hJbnB1
dENsaWVudEltcGw6OnN0b3BSZWNvcmRpbmcoaW50IHJlcXVlc3RJZCkKZGlmZiAtLWdpdCBhL1dl
YktpdC9jaHJvbWl1bS9zcmMvU3BlZWNoSW5wdXRDbGllbnRJbXBsLmggYi9XZWJLaXQvY2hyb21p
dW0vc3JjL1NwZWVjaElucHV0Q2xpZW50SW1wbC5oCmluZGV4IDgxN2IzMmIxMjQxNGIzYTA3ZGZh
M2FlMzUxOTA4N2RlYTVhMGY3MzMuLmM3ZDFmYTNhNmM1ODU1NzdmYzk0NTJjNGRiY2Q1ZTg3MGZj
ODdhM2EgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvU3BlZWNoSW5wdXRDbGllbnRJ
bXBsLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9TcGVlY2hJbnB1dENsaWVudEltcGwuaApA
QCAtMzMsOCArMzMsMTUgQEAKIAogI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCiAKKyNpbmNsdWRl
ICJTcGVlY2hJbnB1dENsaWVudC5oIgogI2luY2x1ZGUgIldlYlNwZWVjaElucHV0TGlzdGVuZXIu
aCIKLSNpbmNsdWRlICJwYWdlL1NwZWVjaElucHV0Q2xpZW50LmgiCisjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25Q
dHIuaD4KKworbmFtZXNwYWNlIFdURiB7CitjbGFzcyBTdHJpbmc7Cit9CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIFNwZWVjaElucHV0TGlzdGVuZXI7CkBAIC00OSwxMiArNTYsMTIgQEAg
Y2xhc3MgU3BlZWNoSW5wdXRDbGllbnRJbXBsCiAgICAgOiBwdWJsaWMgV2ViQ29yZTo6U3BlZWNo
SW5wdXRDbGllbnQsCiAgICAgICBwdWJsaWMgV2ViU3BlZWNoSW5wdXRMaXN0ZW5lciB7CiBwdWJs
aWM6Ci0gICAgU3BlZWNoSW5wdXRDbGllbnRJbXBsKFdlYlZpZXdDbGllbnQqKTsKKyAgICBzdGF0
aWMgUGFzc093blB0cjxTcGVlY2hJbnB1dENsaWVudEltcGw+IGNyZWF0ZShXZWJWaWV3Q2xpZW50
Kik7CiAgICAgdmlydHVhbCB+U3BlZWNoSW5wdXRDbGllbnRJbXBsKCk7CiAKICAgICAvLyBTcGVl
Y2hJbnB1dENsaWVudCBtZXRob2RzLgogICAgIHZvaWQgc2V0TGlzdGVuZXIoV2ViQ29yZTo6U3Bl
ZWNoSW5wdXRMaXN0ZW5lciopOwotICAgIGJvb2wgc3RhcnRSZWNvZ25pdGlvbihpbnQsIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmKTsKKyAgICBib29sIHN0YXJ0UmVjb2duaXRpb24oaW50LCBjb25z
dCBTdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CiAgICAgdm9pZCBzdG9wUmVjb3Jk
aW5nKGludCk7CiAgICAgdm9pZCBjYW5jZWxSZWNvZ25pdGlvbihpbnQpOwogCkBAIC02NCw2ICs3
MSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZENvbXBsZXRlUmVjb2duaXRpb24oaW50KTsKIAog
cHJpdmF0ZToKKyAgICBTcGVlY2hJbnB1dENsaWVudEltcGwoV2ViVmlld0NsaWVudCopOworCiAg
ICAgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyKiBtX2NvbnRyb2xsZXI7IC8vIFRvIGNhbGwgaW50
byB0aGUgZW1iZWRkZXIuCiAgICAgV2ViQ29yZTo6U3BlZWNoSW5wdXRMaXN0ZW5lciogbV9saXN0
ZW5lcjsKIH07CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNwZWVjaElucHV0
Q29udHJvbGxlck1vY2tJbXBsLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3BlZWNoSW5w
dXRDb250cm9sbGVyTW9ja0ltcGwuY3BwCmluZGV4IDYwYzRmZWQ4NTJiMjg0ZTAyNzFhZDAwZWQ5
NzEwMDJhMmY1N2E0YjYuLjQ1YzZmZjA4NjJmMDI0ZmMxODA1NzMzYzE2YTkzMzA1NzM3YWMzOTMg
MTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVy
TW9ja0ltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3BlZWNoSW5wdXRDb250
cm9sbGVyTW9ja0ltcGwuY3BwCkBAIC01Nyw3ICs1NywxMiBAQCBXZWJTcGVlY2hJbnB1dENvbnRy
b2xsZXJNb2NrSW1wbDo6fldlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsKCkKIAogdm9p
ZCBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6c2V0TW9ja1JlY29nbml0aW9uUmVz
dWx0KGNvbnN0IFdlYlN0cmluZyYgcmVzdWx0KQogewotICAgIG1fd2ViY29yZU1vY2stPnNldFJl
Y29nbml0aW9uUmVzdWx0KHJlc3VsdCk7CisgICAgbV93ZWJjb3JlTW9jay0+c2V0UmVjb2duaXRp
b25SZXN1bHQocmVzdWx0LCBXZWJTdHJpbmc6OmZyb21VVEY4KCIiKSk7Cit9CisKK3ZvaWQgV2Vi
U3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OnNldE1vY2tSZWNvZ25pdGlvblJlc3VsdChj
b25zdCBXZWJTdHJpbmcmIHJlc3VsdCwgY29uc3QgV2ViU3RyaW5nICZsYW5ndWFnZSkKK3sKKyAg
ICBtX3dlYmNvcmVNb2NrLT5zZXRSZWNvZ25pdGlvblJlc3VsdChyZXN1bHQsIGxhbmd1YWdlKTsK
IH0KIAogdm9pZCBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6ZGlkQ29tcGxldGVS
ZWNvcmRpbmcoaW50IHJlcXVlc3RJZCkKQEAgLTc1LDkgKzgwLDkgQEAgdm9pZCBXZWJTcGVlY2hJ
bnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6c2V0UmVjb2duaXRpb25SZXN1bHQoaW50IHJlcXVlc3RJ
ZCwgY29uc3QKICAgICBtX2xpc3RlbmVyLT5zZXRSZWNvZ25pdGlvblJlc3VsdChyZXF1ZXN0SWQs
IHJlc3VsdCk7CiB9CiAKLWJvb2wgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OnN0
YXJ0UmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCwgY29uc3QgV2ViUmVjdCYgZWxlbWVudFJlY3Qp
Citib29sIFdlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsOjpzdGFydFJlY29nbml0aW9u
KGludCByZXF1ZXN0SWQsIGNvbnN0IFdlYlN0cmluZyYgbGFuZ3VhZ2UsIGNvbnN0IFdlYlJlY3Qm
IGVsZW1lbnRSZWN0KQogewotICAgIHJldHVybiBtX3dlYmNvcmVNb2NrLT5zdGFydFJlY29nbml0
aW9uKHJlcXVlc3RJZCwgZWxlbWVudFJlY3QpOworICAgIHJldHVybiBtX3dlYmNvcmVNb2NrLT5z
dGFydFJlY29nbml0aW9uKHJlcXVlc3RJZCwgbGFuZ3VhZ2UsIGVsZW1lbnRSZWN0KTsKIH0KIAog
dm9pZCBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6Y2FuY2VsUmVjb2duaXRpb24o
aW50IHJlcXVlc3RJZCkKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3BlZWNo
SW5wdXRDb250cm9sbGVyTW9ja0ltcGwuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3BlZWNo
SW5wdXRDb250cm9sbGVyTW9ja0ltcGwuaAppbmRleCBlZGJmY2EzZWU2MGU5Mzk0Mjg5M2UyNzIx
ODkzZTQzYTBlYjg3YzVmLi4xYjMwNTNiZjA5Mjc1M2VmNzkyOTNkZGNhMTJlODQzNTIwNmJkYmMw
IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNwZWVjaElucHV0Q29udHJvbGxl
ck1vY2tJbXBsLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTcGVlY2hJbnB1dENvbnRy
b2xsZXJNb2NrSW1wbC5oCkBAIC0zNyw2ICszNywxMCBAQAogI2luY2x1ZGUgIldlYlN0cmluZy5o
IgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIAorbmFtZXNwYWNlIFdURiB7CitjbGFzcyBTdHJp
bmc7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFNwZWVjaElucHV0Q2xpZW50TW9j
azsKIH0KQEAgLTU3LDExICs2MSwxNSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRSZWNvZ25pdGlv
blJlc3VsdChpbnQgcmVxdWVzdElkLCBjb25zdCBXVEY6OlN0cmluZyYgcmVzdWx0KTsKIAogICAg
IC8vIFdlYlNwZWVjaElucHV0Q29udHJvbGxlciBtZXRob2RzLgotICAgIGJvb2wgc3RhcnRSZWNv
Z25pdGlvbihpbnQgcmVxdWVzdElkLCBjb25zdCBXZWJSZWN0JiBlbGVtZW50UmVjdCk7CisgICAg
Ym9vbCBzdGFydFJlY29nbml0aW9uKGludCByZXF1ZXN0SWQsIGNvbnN0IFdlYlN0cmluZyYgbGFu
Z3VhZ2UsIGNvbnN0IFdlYlJlY3QmIGVsZW1lbnRSZWN0KTsKICAgICB2b2lkIGNhbmNlbFJlY29n
bml0aW9uKGludCByZXF1ZXN0SWQpOwogICAgIHZvaWQgc3RvcFJlY29yZGluZyhpbnQgcmVxdWVz
dElkKTsKIAogICAgIC8vIFdlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2sgbWV0aG9kcy4KKyAg
ICB2b2lkIHNldE1vY2tSZWNvZ25pdGlvblJlc3VsdChjb25zdCBXZWJTdHJpbmcmIHJlc3VsdCwg
Y29uc3QgV2ViU3RyaW5nJiBsYW5ndWFnZSk7CisKKyAgICAvLyBGSVhNRTogdGhpcyBpcyBhIGZp
eCBmb3IgYSB0d28tc2lkZWQgcGF0Y2guIERlbGV0ZSBhcyBzb29uIGFzIHRoZSBjaHJvbWl1bSBz
aWRlIGlzIHBhdGNoZWQuCisgICAgLy8gQ2hyb21pdW0gcGF0Y2ggbm90IHVwbG9hZGVkIHlldCwg
YnV0IHdpbGwgZGVwZW5kIG9uIGh0dHA6Ly9jb2RlcmV2aWV3LmNocm9taXVtLm9yZy8zNjE1MDA1
L3Nob3cgcGF0Y2guCiAgICAgdm9pZCBzZXRNb2NrUmVjb2duaXRpb25SZXN1bHQoY29uc3QgV2Vi
U3RyaW5nJiByZXN1bHQpOwogCiBwcml2YXRlOgpAQCAtNzIsNCArODAsMyBAQCBwcml2YXRlOgog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBXZWJTcGVlY2hJbnB1dENvbnRyb2xs
ZXJNb2NrSW1wbF9oCi0KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0lt
cGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggMGVhYWFj
MTVjMDU4ODM3MWU1ODkxMWJhZjgyNWVkODg2NWRiNWY1ZS4uYWJhMGYzZWY5NTllYjY0ZjE3ZWUw
NWM5NzZmMTllYjFlOTBjOTg5NyAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJW
aWV3SW1wbC5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAg
LTg4LDYgKzg4LDcgQEAKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNl
bGVjdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIlNw
ZWVjaElucHV0Q2xpZW50SW1wbC5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSAiVHlw
aW5nQ29tbWFuZC5oIgogI2luY2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9yLmgiCkBAIC0yNzUs
NyArMjc2LDcgQEAgV2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKFdlYlZpZXdDbGllbnQqIGNsaWVu
dCwgV2ViRGV2VG9vbHNBZ2VudENsaWVudCogZGV2VG9vbHMKICAgICAsIG1fY29tcG9zaXRvckNy
ZWF0aW9uRmFpbGVkKGZhbHNlKQogI2VuZGlmCiAjaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKLSAg
ICAsIG1fc3BlZWNoSW5wdXRDbGllbnQoY2xpZW50KQorICAgICwgbV9zcGVlY2hJbnB1dENsaWVu
dChTcGVlY2hJbnB1dENsaWVudEltcGw6OmNyZWF0ZShjbGllbnQpKQogI2VuZGlmCiAgICAgLCBt
X2RldmljZU9yaWVudGF0aW9uQ2xpZW50UHJveHkobmV3IERldmljZU9yaWVudGF0aW9uQ2xpZW50
UHJveHkoY2xpZW50ID8gY2xpZW50LT5kZXZpY2VPcmllbnRhdGlvbkNsaWVudCgpIDogMCkpCiB7
CkBAIC0yOTgsNyArMjk5LDcgQEAgV2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKFdlYlZpZXdDbGll
bnQqIGNsaWVudCwgV2ViRGV2VG9vbHNBZ2VudENsaWVudCogZGV2VG9vbHMKICAgICBwYWdlQ2xp
ZW50cy5kcmFnQ2xpZW50ID0gJm1fZHJhZ0NsaWVudEltcGw7CiAgICAgcGFnZUNsaWVudHMuaW5z
cGVjdG9yQ2xpZW50ID0gJm1faW5zcGVjdG9yQ2xpZW50SW1wbDsKICNpZiBFTkFCTEUoSU5QVVRf
U1BFRUNIKQotICAgIHBhZ2VDbGllbnRzLnNwZWVjaElucHV0Q2xpZW50ID0gJm1fc3BlZWNoSW5w
dXRDbGllbnQ7CisgICAgcGFnZUNsaWVudHMuc3BlZWNoSW5wdXRDbGllbnQgPSBtX3NwZWVjaElu
cHV0Q2xpZW50LmdldCgpOwogI2VuZGlmCiAgICAgcGFnZUNsaWVudHMuZGV2aWNlT3JpZW50YXRp
b25DbGllbnQgPSBtX2RldmljZU9yaWVudGF0aW9uQ2xpZW50UHJveHkuZ2V0KCk7CiAKZGlmZiAt
LWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaCBiL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViVmlld0ltcGwuaAppbmRleCAwNTBiNWUxNmFhNTJmMjMwYzk4NDllZDg0ODIzOTYw
Y2M5NmE4MDYzLi43MTJlYjdhNDA4MzUwOTA0YTg5NWEzZDhmMDc5MjAyM2E2ZGJhYjliIDEwMDY0
NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKKysrIGIvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCkBAIC00OSw3ICs0OSw2IEBACiAjaW5jbHVkZSAiSW50
UmVjdC5oIgogI2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIk5v
dGlmaWNhdGlvblByZXNlbnRlckltcGwuaCIKLSNpbmNsdWRlICJTcGVlY2hJbnB1dENsaWVudElt
cGwuaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KIApAQCAtNzQsNiArNzMsNyBAQCBjbGFzcyBBdXRvRmlsbFBvcHVwTWVudUNsaWVudDsKIGNs
YXNzIENvbnRleHRNZW51Q2xpZW50SW1wbDsKIGNsYXNzIERldmljZU9yaWVudGF0aW9uQ2xpZW50
UHJveHk7CiBjbGFzcyBEcmFnU2Nyb2xsVGltZXI7CitjbGFzcyBTcGVlY2hJbnB1dENsaWVudElt
cGw7CiBjbGFzcyBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0OwogY2xhc3MgV2ViRGV2VG9vbHNBZ2Vu
dENsaWVudDsKIGNsYXNzIFdlYkRldlRvb2xzQWdlbnRQcml2YXRlOwpAQCAtNTQzLDcgKzU0Myw3
IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IFdlYklucHV0RXZlbnQqIG1fY3VycmVudElu
cHV0RXZlbnQ7CiAKICNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQotICAgIFNwZWVjaElucHV0Q2xp
ZW50SW1wbCBtX3NwZWVjaElucHV0Q2xpZW50OworICAgIE93blB0cjxTcGVlY2hJbnB1dENsaWVu
dEltcGw+IG1fc3BlZWNoSW5wdXRDbGllbnQ7CiAjZW5kaWYKICAgICAvLyBJZiB3ZSBhdHRlbXB0
IHRvIGZldGNoIHRoZSBvbi1zY3JlZW4gR3JhcGhpY3NDb250ZXh0M0QgYmVmb3JlCiAgICAgLy8g
dGhlIGNvbXBvc2l0b3IgaGFzIGJlZW4gdHVybmVkIG9uLCB3ZSBuZWVkIHRvIGluc3RhbnRpYXRl
IGl0CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cgYi9XZWJLaXRUb29scy9DaGFu
Z2VMb2cKaW5kZXggODhmNWIwZjFlOTVkNmViNDkzODM4MGEzNzI4ZmJkZWU1MGI1ZDcwYi4uYTg2
MWRkZWVhYThlYTY1ZWQ3YzIwMzEyYjg3OWZiYTNjNWM4OGJmNSAxMDA2NDQKLS0tIGEvV2ViS2l0
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5
IEBACisyMDEwLTEwLTE5ICBMZWFuZHJvIEdyYWNpw6EgR2lsICA8bGVhbmRyb2dyYWNpYUBnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZGVkIGEgc2Vjb25kIHBhcmFtZXRlciB0byBzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQgZm9y
CisgICAgICAgIHRoZSBsYW5ndWFnZSB1c2VkIGluIHNwZWVjaCBpbnB1dC4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3MDg5CisKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChzZXRNb2Nr
U3BlZWNoSW5wdXRSZXN1bHRDYWxsYmFjayk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5
b3V0VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9M
YXlvdXRUZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6
c2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ndGsv
TGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdCk6CisKIDIwMTAtMTAtMTggIEpvY2VseW4gVHVy
Y290dGUgIDxqb2NlbHluLnR1cmNvdHRlQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBBbmRyZWFzIEtsaW5nLgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
TGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5
b3V0VGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IGI1Y2M4NzQyMTViNDBmNTkwNzU1YTQwNDdlYmRk
NWQ5ZjhlZDYyNzkuLmRiNDcwYzg2MjJjMDNkYmE0YWQ4OTAxN2IwZWM5MjhiYmQ0YTM3YzEgMTAw
NjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVy
LmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxl
ci5jcHAKQEAgLTEwNzAsMTQgKzEwNzAsMTcgQEAgc3RhdGljIEpTVmFsdWVSZWYgc2V0TW9ja0dl
b2xvY2F0aW9uRXJyb3JDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3QKIAog
c3RhdGljIEpTVmFsdWVSZWYgc2V0TW9ja1NwZWVjaElucHV0UmVzdWx0Q2FsbGJhY2soSlNDb250
ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2Jq
ZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwg
SlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewotICAgIGlmIChhcmd1bWVudENvdW50IDwgMSkKKyAg
ICBpZiAoYXJndW1lbnRDb3VudCA8IDIpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVm
aW5lZChjb250ZXh0KTsKIAogICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiByZXN1bHQoQWRv
cHQsIEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgYXJndW1lbnRzWzBdLCBleGNlcHRpb24p
KTsKICAgICBBU1NFUlQoISpleGNlcHRpb24pOwogCisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdS
ZWY+IGxhbmd1YWdlKEFkb3B0LCBKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIGFyZ3VtZW50
c1sxXSwgZXhjZXB0aW9uKSk7CisgICAgQVNTRVJUKCEqZXhjZXB0aW9uKTsKKwogICAgIExheW91
dFRlc3RDb250cm9sbGVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRy
b2xsZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOwotICAgIGNvbnRyb2xsZXIt
PnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdChyZXN1bHQuZ2V0KCkpOworICAgIGNvbnRyb2xsZXIt
PnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdChyZXN1bHQuZ2V0KCksIGxhbmd1YWdlLmdldCgpKTsK
IAogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KZGlmZiAtLWdp
dCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmggYi9X
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCmluZGV4IDY4
OWUxMTQ1NzUwOGRmZmU3ZDg4N2JkZTE2NDgyMTQwYmE3NWJjMWEuLjlhOTQ1ZTk4MmI4YjVjODgy
NThhZjZhYWQ3OGQ2MzhkNDNjMDIwNTYgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaApAQCAtOTQsNyArOTQsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRNb2NrRGV2aWNlT3JpZW50YXRpb24oYm9vbCBjYW5Qcm92aWRlQWxwaGEsIGRv
dWJsZSBhbHBoYSwgYm9vbCBjYW5Qcm92aWRlQmV0YSwgZG91YmxlIGJldGEsIGJvb2wgY2FuUHJv
dmlkZUdhbW1hLCBkb3VibGUgZ2FtbWEpOwogICAgIHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9uRXJy
b3IoaW50IGNvZGUsIEpTU3RyaW5nUmVmIG1lc3NhZ2UpOwogICAgIHZvaWQgc2V0TW9ja0dlb2xv
Y2F0aW9uUG9zaXRpb24oZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3VibGUg
YWNjdXJhY3kpOwotICAgIHZvaWQgc2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KEpTU3RyaW5nUmVm
IHJlc3VsdCk7CisgICAgdm9pZCBzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoSlNTdHJpbmdSZWYg
cmVzdWx0LCBKU1N0cmluZ1JlZiBsYW5ndWFnZVRhZyk7CiAgICAgdm9pZCBzZXRQZXJzaXN0ZW50
VXNlclN0eWxlU2hlZXRMb2NhdGlvbihKU1N0cmluZ1JlZiBwYXRoKTsKICAgICB2b2lkIHNldFBs
dWdpbnNFbmFibGVkKGJvb2wgZmxhZyk7CiAgICAgdm9pZCBzZXRQb3B1cEJsb2NraW5nRW5hYmxl
ZChib29sIGZsYWcpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IGQ4NWYwY2EyYmNjMmE4
NGY1NzY1YjU2YTdjYzRmYjBkNDhlN2RhNmQuLjM2ZmZlOTc0YWQ2OWUxYTZjZjAxYjg5MmY3M2Vk
MmEyOWE3NjI5MTEgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKQEAgLTE1MjYsMTAgKzE1MjYs
MTAgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6YWJvcnRNb2RhbChjb25zdCBDcHBBcmd1
bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWEKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50
cywgQ3BwVmFyaWFudCogcmVzdWx0KQogewogICAgIHJlc3VsdC0+c2V0TnVsbCgpOwotICAgIGlm
IChhcmd1bWVudHMuc2l6ZSgpIDwgMSB8fCAhYXJndW1lbnRzWzBdLmlzU3RyaW5nKCkpCisgICAg
aWYgKGFyZ3VtZW50cy5zaXplKCkgPCAyIHx8ICFhcmd1bWVudHNbMF0uaXNTdHJpbmcoKSB8fCAh
YXJndW1lbnRzWzFdLmlzU3RyaW5nKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fc3BlZWNo
SW5wdXRDb250cm9sbGVyTW9jay0+c2V0TW9ja1JlY29nbml0aW9uUmVzdWx0KGNwcFZhcmlhbnRU
b1dlYlN0cmluZyhhcmd1bWVudHNbMF0pKTsKKyAgICBtX3NwZWVjaElucHV0Q29udHJvbGxlck1v
Y2stPnNldE1vY2tSZWNvZ25pdGlvblJlc3VsdChjcHBWYXJpYW50VG9XZWJTdHJpbmcoYXJndW1l
bnRzWzBdKSwgY3BwVmFyaWFudFRvV2ViU3RyaW5nKGFyZ3VtZW50c1sxXSkpOwogfQogCiBXZWJL
aXQ6OldlYlNwZWVjaElucHV0Q29udHJvbGxlciogTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNwZWVj
aElucHV0Q29udHJvbGxlcihXZWJLaXQ6OldlYlNwZWVjaElucHV0TGlzdGVuZXIqIGxpc3RlbmVy
KQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RD
b250cm9sbGVyR3RrLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRU
ZXN0Q29udHJvbGxlckd0ay5jcHAKaW5kZXggMTgxZWY5ZjBiMjljZTYwOThiMThiZDY0MDNlMWVj
YWIxOGUwM2I0NC4uZjNkYjYyMmU2Njc4MDFlNzBmNjQ4NDVjYzBmNDkwNzQ1YzcwZjkyNCAxMDA2
NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9s
bGVyR3RrLmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVz
dENvbnRyb2xsZXJHdGsuY3BwCkBAIC01MDAsNyArNTAwLDcgQEAgdm9pZCBMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6c2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKGJvb2wgYWxsb3cpCiAgICAgc2V0R2Vv
bG9jYXRpb25QZXJtaXNzaW9uQ29tbW9uKGFsbG93KTsKIH0KIAotdm9pZCBMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6c2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KEpTU3RyaW5nUmVmIHJlc3VsdCkKK3Zv
aWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdChKU1N0cmlu
Z1JlZiByZXN1bHQsIEpTU3RyaW5nUmVmIGxhbmd1YWdlKQogewogICAgIC8vIEZJWE1FOiBJbXBs
ZW1lbnQgZm9yIHNwZWVjaCBpbnB1dCBsYXlvdXQgdGVzdHMuCiAgICAgLy8gU2VlIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTQ4NS4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71299</attachid>
            <date>2010-10-20 09:35:45 -0700</date>
            <delta_ts>2010-10-21 14:05:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47089-20101020173543.patch</filename>
            <type>text/plain</type>
            <size>39648</size>
            <attacher name="Leandro Graciá Gil">leandrogracia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2OTA0YWRkNTEzMzU2OWQzMzlkMzM4YmE4OTdhZDRlZjhiMmZiMjg2Li5hNDU0ZDRi
ODZlMWE0ZDMwNGZmY2UwNjIzZWUyZDNkZDI5Y2E4YTZhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAK
KzIwMTAtMTAtMTkgIExlYW5kcm8gR3JhY2lhIEdpbCAgPGxlYW5kcm9ncmFjaWFAZ29vZ2xlLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRl
ZCBhIGxheW91dCB0ZXN0IGZvciB0aGUgbGFuZ3VhZ2UgdGFnIGluIHNwZWVjaCBpbnB1dC4gVXBk
YXRlZAorICAgICAgICB0aGUgc3BlZWNoIGJ1dHRvbiB0ZXN0cyB0byBpbmNsdWRlIHRoZSBuZXcg
bGFuZ3VhZ2UgcGFyYW1ldGVyIGluIHRoZQorICAgICAgICBtb2NrIHJlc3VsdC4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3MDg5CisKKyAgICAgICAg
KiBmYXN0L3NwZWVjaC9pbnB1dC10ZXh0LWxhbmd1YWdlLXRhZy1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGZhc3Qvc3BlZWNoL2lucHV0LXRleHQtbGFuZ3VhZ2UtdGFnLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3Qvc3BlZWNoL2lucHV0LXRleHQtc3BlZWNoYnV0dG9uLmh0bWw6
IEFkZGVkIGFuIGVtcHR5IGxhbmd1YWdlCisgICAgICAgICAgcGFyYW1ldGVyLgorICAgICAgICAq
IGZhc3Qvc3BlZWNoL3NwZWVjaC1idXR0b24taWdub3JlLWdlbmVyYXRlZC1ldmVudHMuaHRtbDog
QWRkZWQgYW4KKyAgICAgICAgICBlbXB0eSBsYW5ndWFnZSBwYXJhbWV0ZXIuCisgICAgICAgICog
cGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0OiBsYW5ndWFnZSB0YWcgdGVz
dCBpcyBleHBlY3RlZAorICAgICAgICAgIHRvIGZhaWwgdW50aWwgdGhlIGNocm9taXVtLXNpZGUg
cGF0Y2ggaGFzIGJlZW4gYXBwbGllZC4KKwogMjAxMC0xMC0xOSAgQmVuIE11cmRvY2ggIDxiZW5t
QGdvb2dsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgdXBkYXRlIHRoZSBRdCB0ZXN0IGV4
cGVjdGF0aW9ucyBhZnRlciByNzAwNDcuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Nw
ZWVjaC9pbnB1dC10ZXh0LWxhbmd1YWdlLXRhZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9m
YXN0L3NwZWVjaC9pbnB1dC10ZXh0LWxhbmd1YWdlLXRhZy1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOTFmMzBkNjk2ZjVkMjUwZjE0YWY1NmI5OWI0ZTcwYzg3OWMwZTUwMgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL2lucHV0LXRleHQtbGFuZ3VhZ2UtdGFnLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDEzIEBACitUZXN0cyBmb3IgbGFuZ3VhZ2UgdGFnIGluaGVy
aXRhbmNlIGFuZCB2YWxpZGF0aW9uIGluIHNwZWVjaCBidXR0b25zLgorCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCisKKworUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3BlZWNoSW5w
dXROb25lIikudmFsdWUgaXMgImVycm9yOiBubyByZXN1bHQgZm91bmQgZm9yIGxhbmd1YWdlICcn
IgorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3BlZWNoSW5wdXRFbGVtZW50IikudmFs
dWUgaXMgIlBpY3R1cmVzIG9mIHRoZSBtb29uIgorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgic3BlZWNoSW5wdXRJbmhlcml0ZWQiKS52YWx1ZSBpcyAi5pyI44Gu5YaZ55yfIgorUEFTUyBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3BlZWNoSW5wdXRJbnZhbGlkIikudmFsdWUgaXMgImVy
cm9yOiBubyByZXN1bHQgZm91bmQgZm9yIGxhbmd1YWdlICcnIgorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisgCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L3NwZWVjaC9pbnB1dC10ZXh0LWxhbmd1YWdlLXRhZy5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1sYW5ndWFnZS10YWcuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YmZj
ODIyNjJlZTMwYTJjNWZhNWUyNTgxNjFlYThhMWUxOGU2NWFmCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1sYW5ndWFnZS10YWcuaHRtbApAQCAt
MCwwICsxLDYyIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9F
TiI+Cis8aHRtbD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxoZWFkPgorPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNj
cmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CitkZXNjcmlwdGlvbignVGVz
dHMgZm9yIGxhbmd1YWdlIHRhZyBpbmhlcml0YW5jZSBhbmQgdmFsaWRhdGlvbiBpbiBzcGVlY2gg
YnV0dG9ucy4nKTsKKworLy8gTm90ZTogdGVzdCBjYXNlcyBhcmUgc2VxdWVudGlhbCB0byBlbnN1
cmUgdGhhdCBubyBuZXcgcmVjb2duaXRpb24gc3RhcnRzIHdoZW4gYW5vdGhlciByZWNvZ25pdGlv
biByZWNvcmRpbmcgaXMgYWN0aXZlLgorZnVuY3Rpb24gb25DaGFuZ2VOb25lKCkgeworICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygnZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNwZWVjaElucHV0
Tm9uZSIpLnZhbHVlJywgJ2Vycm9yOiBubyByZXN1bHQgZm91bmQgZm9yIGxhbmd1YWdlIFwnXCcn
KTsKKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzcGVlY2hCdXR0b25DbGljaygnc3BlZWNo
SW5wdXRFbGVtZW50Jyk7IH0sIDUwKTsKK30KKworZnVuY3Rpb24gb25DaGFuZ2VFbGVtZW50KCkg
eworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNw
ZWVjaElucHV0RWxlbWVudCIpLnZhbHVlJywgJ1BpY3R1cmVzIG9mIHRoZSBtb29uJyk7CisgICAg
c2V0VGltZW91dChmdW5jdGlvbigpIHsgc3BlZWNoQnV0dG9uQ2xpY2soJ3NwZWVjaElucHV0SW5o
ZXJpdGVkJyk7IH0sIDUwKTsKK30KKworZnVuY3Rpb24gb25DaGFuZ2VJbmhlcml0ZWQoKSB7Cisg
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3BlZWNo
SW5wdXRJbmhlcml0ZWQiKS52YWx1ZScsICfmnIjjga7lhpnnnJ8nKTsKKyAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgeyBzcGVlY2hCdXR0b25DbGljaygnc3BlZWNoSW5wdXRJbnZhbGlkJyk7IH0s
IDUwKTsKK30KKworZnVuY3Rpb24gb25DaGFuZ2VJbnZhbGlkKCkgeworICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygnZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNwZWVjaElucHV0SW52YWxpZCIp
LnZhbHVlJywgJ2Vycm9yOiBubyByZXN1bHQgZm91bmQgZm9yIGxhbmd1YWdlIFwnXCcnKTsKKyAg
ICBmaW5pc2hKU1Rlc3QoKTsKK30KKworZnVuY3Rpb24gc3BlZWNoQnV0dG9uQ2xpY2soZWxlbWVu
dElkKSB7CisgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50
SWQpOworICAgIHZhciB4ID0gZWxlbWVudC5vZmZzZXRMZWZ0ICsgZWxlbWVudC5vZmZzZXRXaWR0
aCAtIDQ7CisgICAgdmFyIHkgPSBlbGVtZW50Lm9mZnNldFRvcCArIGVsZW1lbnQub2Zmc2V0SGVp
Z2h0IC8gMjsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICBldmVudFNl
bmRlci5tb3VzZURvd24oKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7Cit9CisKK2Z1bmN0
aW9uIHJ1bigpIHsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyICYmIHdpbmRv
dy5ldmVudFNlbmRlcikgeworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRNb2NrU3Bl
ZWNoSW5wdXRSZXN1bHQoJ1BpY3R1cmVzIG9mIHRoZSBtb29uJywgJ2VuLUdCJyk7CisgICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdCgn5pyI44Gu5YaZ
55yfJywgJ2phJyk7CisgICAgICAgIHNwZWVjaEJ1dHRvbkNsaWNrKCdzcGVlY2hJbnB1dE5vbmUn
KTsKKyAgICB9Cit9CisKK3dpbmRvdy5vbmxvYWQgPSBydW47Cit3aW5kb3cuanNUZXN0SXNBc3lu
YyA9IHRydWU7Cit3aW5kb3cuc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgor
PGlucHV0IGlkPSJzcGVlY2hJbnB1dE5vbmUiIHgtd2Via2l0LXNwZWVjaCBvbndlYmtpdHNwZWVj
aGNoYW5nZT0ib25DaGFuZ2VOb25lKCkiPgorPGlucHV0IGlkPSJzcGVlY2hJbnB1dEVsZW1lbnQi
IHgtd2Via2l0LXNwZWVjaCBvbndlYmtpdHNwZWVjaGNoYW5nZT0ib25DaGFuZ2VFbGVtZW50KCki
IGxhbmc9ImVuLUdCIj4KKzxkaXYgbGFuZz0iamEiPiA8aW5wdXQgaWQ9InNwZWVjaElucHV0SW5o
ZXJpdGVkIiB4LXdlYmtpdC1zcGVlY2ggb253ZWJraXRzcGVlY2hjaGFuZ2U9Im9uQ2hhbmdlSW5o
ZXJpdGVkKCkiPiA8L2Rpdj4KKzxpbnB1dCBpZD0ic3BlZWNoSW5wdXRJbnZhbGlkIiB4LXdlYmtp
dC1zcGVlY2ggb253ZWJraXRzcGVlY2hjaGFuZ2U9Im9uQ2hhbmdlSW52YWxpZCgpIiBsYW5nPSIx
MzM3JMO+M867ayI+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L3NwZWVjaC9pbnB1dC10ZXh0LXNwZWVjaGJ1dHRvbi5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9zcGVlY2gvaW5wdXQtdGV4dC1zcGVlY2hidXR0b24uaHRtbAppbmRleCA2ZjViYzRiMTIxZmI0
ZjlkOWRkYTZjMzMxZjhiMjZkYzFjZDQzOTk0Li5jZWY3NzA1NmIxN2QxY2Q0NTFiNDkwYjdjMWYy
NDZiYTZjODk1MGRiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9pbnB1dC10
ZXh0LXNwZWVjaGJ1dHRvbi5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL2lucHV0
LXRleHQtc3BlZWNoYnV0dG9uLmh0bWwKQEAgLTMyLDcgKzMyLDcgQEAgZnVuY3Rpb24gb25XZWJr
aXRTcGVlY2hDaGFuZ2UoKSB7CiAKIGZ1bmN0aW9uIHJ1bigpIHsKICAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyICYmIHdpbmRvdy5ldmVudFNlbmRlcikgewotICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5zZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoJ1BpY3R1cmVzIG9mIHRo
ZSBtb29uJyk7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldE1vY2tTcGVlY2hJbnB1
dFJlc3VsdCgnUGljdHVyZXMgb2YgdGhlIG1vb24nLCAnJyk7CiAKICAgICAgICAgLy8gQ2xpY2tp
bmcgdGhlIHNwZWVjaCBidXR0b24gc2hvdWxkIGZpbGwgaW4gbW9jayBzcGVlY2gtcmVjb2duaXpl
ZCB0ZXh0LgogICAgICAgICB2YXIgaW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3Bl
ZWNoSW5wdXQnKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL3NwZWVjaC1i
dXR0b24taWdub3JlLWdlbmVyYXRlZC1ldmVudHMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc3Bl
ZWNoL3NwZWVjaC1idXR0b24taWdub3JlLWdlbmVyYXRlZC1ldmVudHMuaHRtbAppbmRleCBiOWI4
ZWMzNjYwNTU3OWYyYjEyNmQ2ZjFkYTM1NjBjNjcyYWQyYjcxLi5jNjg0ODYzNzcwNTMzOTliMjlk
MDRmYzI5OTA3ZTU1ZThhYmYwNjA4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L3NwZWVj
aC9zcGVlY2gtYnV0dG9uLWlnbm9yZS1nZW5lcmF0ZWQtZXZlbnRzLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9zcGVlY2gvc3BlZWNoLWJ1dHRvbi1pZ25vcmUtZ2VuZXJhdGVkLWV2ZW50cy5o
dG1sCkBAIC00OSw3ICs0OSw3IEBAIGZ1bmN0aW9uIHNldHVwRGlzcGF0Y2hFdmVudFRlc3QoKSB7
CiBmdW5jdGlvbiBydW4oKSB7CiAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlciAm
JiB3aW5kb3cuZXZlbnRTZW5kZXIpIHsKICAgICAgICAgLy8gUnVubmluZyBpbiBEUlQsIHRlc3Qg
dGhlIGV2ZW50U2VuZGVyIGNhc2UuCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldE1v
Y2tTcGVlY2hJbnB1dFJlc3VsdCgnUGljdHVyZXMgb2YgdGhlIG1vb24nKTsKKyAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KCdQaWN0dXJlcyBvZiB0
aGUgbW9vbicsICcnKTsKICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NwZWVjaElu
cHV0Jykub253ZWJraXRzcGVlY2hjaGFuZ2UgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygnZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNwZWVjaElucHV0
IikudmFsdWUnLCAnUGljdHVyZXMgb2YgdGhlIG1vb24nKTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0IGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CmluZGV4IGEyMzllYmZk
YmZiOTdhMGUwY2M0NzJiNjVlYmU1NTQ2Yjg1NWRmZTEuLmM5YWZiZmZjZmE5NzUxZGNjOGJlYTdh
MzVmMmZkYzgxNzBjMGU4NTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKQEAgLTMyNDAsMyArMzI0MCw2IEBAIEJVR0pBUEhF
VCA6IGZhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS1wcmV2ZW50
cy1yZWJhc2UuaHRtbCA9CiAKIC8vIHI2OTgzMywgSlNDL1Y4IERhdGUgcGFyc2luZyBkaWZmZXJl
bmNlcwogQlVHSkFQSEVUIDogZmFzdC9qcy9kYXRlLXBhcnNlLXRlc3QuaHRtbCA9IFRFWFQKKwor
Ly8gVGVtcG9yYXJpbHkgZGlzYWJsZWQgZm9yIGEgNC1zaWRlZCBwYXRjaC4gV2lsbCBiZSBlbmFi
bGVkIGFnYWluIGJ5IEJVR1dLNDc0MjAuCitCVUdXSzQ3MDg5IDogZmFzdC9zcGVlY2gvaW5wdXQt
dGV4dC1sYW5ndWFnZS10YWcuaHRtbCA9IEZBSUwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdl
TG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMThmYzhlOTM1MDc2ZTMyMWZmYTkyYzg1ZjFh
YzE4NmFhZWQzYWFkOC4uY2U2MGE1ZmY5OWZkNDBlYzJlOTk4MDQ3ZGQ5ODU4OGIzNTk3NDM4MyAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw0MCBAQAorMjAxMC0xMC0xOSAgTGVhbmRybyBHcmFjaWEgR2lsICA8bGVhbmRyb2dy
YWNpYUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFBhdGNoIHRoZSBjdXJyZW50IHNwZWVjaCBpbnB1dCBpbXBsZW1lbnRhdGlvbiB0
byB1c2UgYW5kIHZhbGlkYXRlIHRoZQorICAgICAgICBuZWFyZXN0IGxhbmd1YWdlIHRhZy4gVGhl
IGxhbmd1YWdlIGlzIG5vdyBwYXNzZWQgdG8gdGhlIHN0YXJ0UmVjb2duaXRpb24KKyAgICAgICAg
bWV0aG9kcyBzbyB0aGF0IGxhbmd1YWdlLXNwZWNpZmljIHJlY29nbml0aW9uIGNvdWxkIGJlIHVz
ZWQuIEFsc28gYWRkZWQKKyAgICAgICAgYSBzZWNvbmQgcGFyYW1ldGVyIHRvIHNldE1vY2tTcGVl
Y2hJbnB1dFJlc3VsdCBmb3IgdGhlIGxhbmd1YWdlIHVzZWQgaW4KKyAgICAgICAgc3BlZWNoIHJl
Y29nbml0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDcwODkKKworICAgICAgICBUaGlzIGlzIHRoZSAybmQgb2YgYSA0LXNpZGVkIHBhdGNoIGlu
IENocm9taXVtIGFuZCBXZWJLaXQuIEZvciBtb3JlCisgICAgICAgIGRldGFpbHMgc2VlIGh0dHA6
Ly9jb2RlcmV2aWV3LmNocm9taXVtLm9yZy8zNjE1MDA1L3Nob3cgYW5kCisgICAgICAgIGh0dHA6
Ly9jb2RlcmV2aWV3LmNocm9taXVtLm9yZy8zNTk1MDE4L3Nob3cuCisKKyAgICAgICAgVGVzdDog
ZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1sYW5ndWFnZS10YWcuaHRtbAorCisgICAgICAgICogZG9t
L0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Y29tcHV0ZUluaGVyaXRl
ZExhbmd1YWdlKTogaW5jbHVkZXMgYSBicmllZiBjaGFyYWN0ZXIKKyAgICAgICAgICB2YWxpZGF0
aW9uIGZvciB0aGUgQkNQIDQ3IGxhbmd1YWdlIHRhZy4KKyAgICAgICAgKiBwYWdlL1NwZWVjaElu
cHV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaElucHV0OjpzdGFydFJlY29nbml0aW9u
KToKKyAgICAgICAgKiBwYWdlL1NwZWVjaElucHV0Lmg6CisgICAgICAgICogcGFnZS9TcGVlY2hJ
bnB1dENsaWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svU3BlZWNoSW5wdXRDbGllbnRN
b2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaElucHV0Q2xpZW50TW9jazo6c3RhcnRS
ZWNvZ25pdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hJbnB1dENsaWVudE1vY2s6OnNl
dFJlY29nbml0aW9uUmVzdWx0KTogcmVzdWx0cyBhcmUgbm93CisgICAgICAgICAgc3RvcmVkIGJ5
IGxhbmd1YWdlIHVzaW5nIGEgaGFzaCBtYXAuCisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hJbnB1
dENsaWVudE1vY2s6OnRpbWVyRmlyZWQpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svU3BlZWNo
SW5wdXRDbGllbnRNb2NrLmg6CisgICAgICAgICogcmVuZGVyaW5nL1RleHRDb250cm9sSW5uZXJF
bGVtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29udHJvbElubmVyRWxlbWVudDo6
YXR0YWNoSW5uZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaEZpZWxkQ2FuY2Vs
QnV0dG9uRWxlbWVudDo6ZGV0YWNoKToKKyAgICAgICAgKFdlYkNvcmU6OlNwaW5CdXR0b25FbGVt
ZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0RmllbGRT
cGVlY2hCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OklucHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50OjpkZXRhY2gpOgorCiAyMDEwLTEwLTE5
ICBSeXVhbiBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBVbnJldmll
d2VkIGF0dGVtcHQgdG8gcmVtb3ZlIHdhcm5pbmcgaW4gRUZMIGJ1aWxkLgpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCA4
M2UxMjllOGUyOGNmYTUxMGVlMGQ4MTU2ZDI0Mzg1ZDFlOTNkY2Y5Li5jN2Q0NDJhZjk2ODA5MjZl
NGEyY2M0MWE1Zjg2NmY5ZGNlZjQ1NGIwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9FbGVtZW50
LmNwcAorKysgYi9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtNTYsNiArNTYsNyBAQAogI2lu
Y2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAi
WE1MTmFtZXMuaCIKKyNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L0NTdHJpbmcuaD4KIAogI2lmIEVOQUJMRShTVkcpCkBAIC0xNDc0LDYgKzE0NzUsMTUgQEAg
QXRvbWljU3RyaW5nIEVsZW1lbnQ6OmNvbXB1dGVJbmhlcml0ZWRMYW5ndWFnZSgpIGNvbnN0CiAg
ICAgICAgIG4gPSBuLT5wYXJlbnQoKTsKICAgICB9CiAKKyAgICBpZiAoIXZhbHVlLmlzTnVsbCgp
ICYmICF2YWx1ZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgLy8gT25seSBBLVphLXowLTkgYW5kICct
JyBhcmUgYWxsb3dlZCBpbiB0aGUgbGFuZ3VhZ2UgdGFnIChzZWUgQkNQIDQ3KQorICAgICAgICBj
b25zdCBjaGFyICpwID0gdmFsdWUuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCk7CisgICAgICAgIGZv
ciAoOyAqcCAhPSAnXDAnOyArK3ApIHsKKyAgICAgICAgICAgIGlmICghaXNBU0NJSUFscGhhbnVt
ZXJpYygqcCkgJiYgKnAgIT0gJy0nKQorICAgICAgICAgICAgICAgIHJldHVybiBBdG9taWNTdHJp
bmcoKTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIHJldHVybiB2YWx1ZTsKIH0KIApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0LmNwcCBiL1dlYkNvcmUvcGFnZS9TcGVlY2hJ
bnB1dC5jcHAKaW5kZXggMjM0NzkxYmM0YjEzZjQzZGY5ZDE3MzlkNWQyMDVmOWFhMjdlMjA3Mi4u
Y2M1ZTBmOTdmYmFiZjlhZmEzZjQzNTljNzI2YmFjODdlNTM0MThjZiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wYWdlL1NwZWVjaElucHV0LmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXQu
Y3BwCkBAIC05MywxMCArOTMsMTAgQEAgdm9pZCBTcGVlY2hJbnB1dDo6c2V0UmVjb2duaXRpb25S
ZXN1bHQoaW50IGxpc3RlbmVySWQsIGNvbnN0IFN0cmluZyYgcmVzdWx0KQogICAgICAgICBtX2xp
c3RlbmVycy5nZXQobGlzdGVuZXJJZCktPnNldFJlY29nbml0aW9uUmVzdWx0KGxpc3RlbmVySWQs
IHJlc3VsdCk7CiB9CiAKLWJvb2wgU3BlZWNoSW5wdXQ6OnN0YXJ0UmVjb2duaXRpb24oaW50IGxp
c3RlbmVySWQsIGNvbnN0IEludFJlY3QmIGVsZW1lbnRSZWN0KQorYm9vbCBTcGVlY2hJbnB1dDo6
c3RhcnRSZWNvZ25pdGlvbihpbnQgbGlzdGVuZXJJZCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSwg
Y29uc3QgSW50UmVjdCYgZWxlbWVudFJlY3QpCiB7CiAgICAgQVNTRVJUKG1fbGlzdGVuZXJzLmNv
bnRhaW5zKGxpc3RlbmVySWQpKTsKLSAgICByZXR1cm4gbV9jbGllbnQtPnN0YXJ0UmVjb2duaXRp
b24obGlzdGVuZXJJZCwgZWxlbWVudFJlY3QpOworICAgIHJldHVybiBtX2NsaWVudC0+c3RhcnRS
ZWNvZ25pdGlvbihsaXN0ZW5lcklkLCBsYW5ndWFnZSwgZWxlbWVudFJlY3QpOwogfQogCiB2b2lk
IFNwZWVjaElucHV0OjpzdG9wUmVjb3JkaW5nKGludCBsaXN0ZW5lcklkKQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wYWdlL1NwZWVjaElucHV0LmggYi9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXQuaApp
bmRleCBkMTBiNzg5YWFkMjczOWVkZDNiZjQ1MzBlN2M2ZTAwYzRlMmRhZThhLi44YjQyNmY1NjMx
MzZlZDY1MWRkNjQ1NmU4MzViNGQ0NDUzYWI4MDEyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2Uv
U3BlZWNoSW5wdXQuaAorKysgYi9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXQuaApAQCAtNjEsNyAr
NjEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB1bnJlZ2lzdGVyTGlzdGVuZXIoaW50KTsKIAogICAg
IC8vIE1ldGhvZHMgaW52b2tlZCBieSB0aGUgaW5wdXQgZWxlbWVudHMuCi0gICAgYm9vbCBzdGFy
dFJlY29nbml0aW9uKGludCwgY29uc3QgSW50UmVjdCYpOworICAgIGJvb2wgc3RhcnRSZWNvZ25p
dGlvbihpbnQsIGNvbnN0IFN0cmluZyYsIGNvbnN0IEludFJlY3QmKTsKICAgICB2b2lkIHN0b3BS
ZWNvcmRpbmcoaW50KTsKICAgICB2b2lkIGNhbmNlbFJlY29nbml0aW9uKGludCk7CiAKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dENsaWVudC5oIGIvV2ViQ29yZS9wYWdlL1Nw
ZWVjaElucHV0Q2xpZW50LmgKaW5kZXggZDVmZGExN2ZhYTJjZDc5NWFmNDRmNTNhNDZmY2JhNTk3
NDFhYjc2Yy4uZjVhYWIwMmE3NjYxNjYxOGE2MGM3NzQ0Y2I0NzQ2NjNkY2I1MjJiNCAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0Q2xpZW50LmgKKysrIGIvV2ViQ29yZS9wYWdl
L1NwZWVjaElucHV0Q2xpZW50LmgKQEAgLTMxLDYgKzMxLDggQEAKICNpZm5kZWYgU3BlZWNoSW5w
dXRDbGllbnRfaAogI2RlZmluZSBTcGVlY2hJbnB1dENsaWVudF9oCiAKKyNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgorCiAjaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtNDgsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldExpc3Rl
bmVyKFNwZWVjaElucHV0TGlzdGVuZXIqKSA9IDA7CiAKICAgICAvLyBTdGFydHMgc3BlZWNoIHJl
Y29nbml0aW9uIGFuZCBhdWRpbyByZWNvcmRpbmcuCi0gICAgdmlydHVhbCBib29sIHN0YXJ0UmVj
b2duaXRpb24oaW50IHJlcXVlc3RJZCwgY29uc3QgSW50UmVjdCYgZWxlbWVudFJlY3QpID0gMDsK
KyAgICB2aXJ0dWFsIGJvb2wgc3RhcnRSZWNvZ25pdGlvbihpbnQgcmVxdWVzdElkLCBjb25zdCBT
dHJpbmcmIGxhbmd1YWdlLCBjb25zdCBJbnRSZWN0JiBlbGVtZW50UmVjdCkgPSAwOwogCiAgICAg
Ly8gU3RvcHMgYXVkaW8gcmVjb3JkaW5nIGFuZCBwZXJmb3JtcyByZWNvZ25pdGlvbiB3aXRoIHRo
ZSBhdWRpbyByZWNvcmRlZCB1bnRpbCBub3cKICAgICAvLyAoZG9lcyBub3QgZGlzY2FyZCBhdWRp
bykuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL21vY2svU3BlZWNoSW5wdXRDbGllbnRN
b2NrLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TcGVlY2hJbnB1dENsaWVudE1vY2suY3Bw
CmluZGV4IDZiNjQ5NDJmMTdiOTI1YjQ5ZWYwOTIxNDdjMGExNmEwN2YwZDdjY2MuLmMwNDk3MWUw
YTk0Mzg1NWE4Y2ZjZDFkMWMyNDU2MzJiYTgyMWIxMGEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9TcGVlY2hJbnB1dENsaWVudE1vY2suY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9TcGVlY2hJbnB1dENsaWVudE1vY2suY3BwCkBAIC0zNSw2ICszNSwxMSBAQAogCiAj
aW5jbHVkZSAiU3BlZWNoSW5wdXRMaXN0ZW5lci5oIgogCituYW1lc3BhY2UgeworICAgIC8vIEhh
c2hNYXAgZG9lc24ndCBzdXBwb3J0IGVtcHR5IHN0cmluZ3MgYXMga2V5cywgc28gdGhpcyB2YWx1
ZSAoYW4gaW52YWxpZCBCQ1A0NyB0YWcpIGlzIHVzZWQgZm9yIHRob3NlIGNhc2VzLgorICAgIGNv
bnN0IFN0cmluZyBlbXB0eUxhbmd1YWdlID0gIl8iOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIFNwZWVjaElucHV0Q2xpZW50TW9jazo6U3BlZWNoSW5wdXRDbGllbnRNb2NrKCkKQEAgLTUw
LDEyICs1NSwxMyBAQCB2b2lkIFNwZWVjaElucHV0Q2xpZW50TW9jazo6c2V0TGlzdGVuZXIoU3Bl
ZWNoSW5wdXRMaXN0ZW5lciogbGlzdGVuZXIpCiAgICAgbV9saXN0ZW5lciA9IGxpc3RlbmVyOwog
fQogCi1ib29sIFNwZWVjaElucHV0Q2xpZW50TW9jazo6c3RhcnRSZWNvZ25pdGlvbihpbnQgcmVx
dWVzdElkLCBjb25zdCBJbnRSZWN0JikKK2Jvb2wgU3BlZWNoSW5wdXRDbGllbnRNb2NrOjpzdGFy
dFJlY29nbml0aW9uKGludCByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UsIGNvbnN0
IEludFJlY3QmKQogewogICAgIGlmIChtX3RpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICBtX3JlcXVlc3RJZCA9IHJlcXVlc3RJZDsKICAgICBtX3JlY29yZGluZyA9
IHRydWU7CisgICAgbV9sYW5ndWFnZSA9IGxhbmd1YWdlOwogICAgIG1fdGltZXIuc3RhcnRPbmVT
aG90KDApOwogICAgIHJldHVybiB0cnVlOwogfQpAQCAtODAsOSArODYsMTIgQEAgdm9pZCBTcGVl
Y2hJbnB1dENsaWVudE1vY2s6OmNhbmNlbFJlY29nbml0aW9uKGludCByZXF1ZXN0SWQpCiAgICAg
fQogfQogCi12b2lkIFNwZWVjaElucHV0Q2xpZW50TW9jazo6c2V0UmVjb2duaXRpb25SZXN1bHQo
Y29uc3QgU3RyaW5nJiByZXN1bHQpCit2b2lkIFNwZWVjaElucHV0Q2xpZW50TW9jazo6c2V0UmVj
b2duaXRpb25SZXN1bHQoY29uc3QgU3RyaW5nJiByZXN1bHQsIGNvbnN0IFN0cmluZyYgbGFuZ3Vh
Z2UpCiB7Ci0gICAgbV9yZWNvZ25pdGlvblJlc3VsdCA9IHJlc3VsdDsKKyAgICBpZiAobGFuZ3Vh
Z2UuaXNFbXB0eSgpKQorICAgICAgICBtX3JlY29nbml0aW9uUmVzdWx0LnNldChlbXB0eUxhbmd1
YWdlLCByZXN1bHQpOworICAgIGVsc2UKKyAgICAgICAgbV9yZWNvZ25pdGlvblJlc3VsdC5zZXQo
bGFuZ3VhZ2UsIHJlc3VsdCk7CiB9CiAKIHZvaWQgU3BlZWNoSW5wdXRDbGllbnRNb2NrOjp0aW1l
ckZpcmVkKFdlYkNvcmU6OlRpbWVyPFNwZWVjaElucHV0Q2xpZW50TW9jaz4qKQpAQCAtOTIsNyAr
MTAxLDE3IEBAIHZvaWQgU3BlZWNoSW5wdXRDbGllbnRNb2NrOjp0aW1lckZpcmVkKFdlYkNvcmU6
OlRpbWVyPFNwZWVjaElucHV0Q2xpZW50TW9jaz4qKQogICAgICAgICBtX2xpc3RlbmVyLT5kaWRD
b21wbGV0ZVJlY29yZGluZyhtX3JlcXVlc3RJZCk7CiAgICAgICAgIG1fdGltZXIuc3RhcnRPbmVT
aG90KDApOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIG1fbGlzdGVuZXItPnNldFJlY29nbml0aW9u
UmVzdWx0KG1fcmVxdWVzdElkLCBtX3JlY29nbml0aW9uUmVzdWx0KTsKKyAgICAgICAgU3RyaW5n
IGxhbmd1YWdlID0gbV9sYW5ndWFnZS5pc0VtcHR5KCkgPyBTdHJpbmcoZW1wdHlMYW5ndWFnZSkg
OiBtX2xhbmd1YWdlOworICAgICAgICBpZiAoIW1fcmVjb2duaXRpb25SZXN1bHQuY29udGFpbnMo
bGFuZ3VhZ2UpKSB7CisgICAgICAgICAgICAvLyBDYW4ndCBhdm9pZCBzZXR0aW5nIGEgcmVzdWx0
IG9uIGVtcHR5IG9yIGludmFsaWQgbGFuZ3VhZ2Ugc3RyaW5ncy4KKyAgICAgICAgICAgIC8vIFRo
aXMgd291bGQgYXZvaWQgZ2VuZXJhdGluZyB0aGUgZXZlbnRzIHVzZWQgdG8gY2hlY2sgdGhlIHJl
c3VsdHMgYW5kIHRoZSB0ZXN0IHdvdWxkIHRpbWVvdXQuCisgICAgICAgICAgICBTdHJpbmcgZXJy
b3IoImVycm9yOiBubyByZXN1bHQgZm91bmQgZm9yIGxhbmd1YWdlICciKTsKKyAgICAgICAgICAg
IGVycm9yLmFwcGVuZChtX2xhbmd1YWdlKTsKKyAgICAgICAgICAgIGVycm9yLmFwcGVuZCgiJyIp
OworICAgICAgICAgICAgbV9saXN0ZW5lci0+c2V0UmVjb2duaXRpb25SZXN1bHQobV9yZXF1ZXN0
SWQsIGVycm9yKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBtX2xpc3RlbmVyLT5zZXRS
ZWNvZ25pdGlvblJlc3VsdChtX3JlcXVlc3RJZCwgbV9yZWNvZ25pdGlvblJlc3VsdC5nZXQobGFu
Z3VhZ2UpKTsKKwogICAgICAgICBtX2xpc3RlbmVyLT5kaWRDb21wbGV0ZVJlY29nbml0aW9uKG1f
cmVxdWVzdElkKTsKICAgICAgICAgbV9yZXF1ZXN0SWQgPSAwOwogICAgIH0KZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TcGVlY2hJbnB1dENsaWVudE1vY2suaCBiL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9TcGVlY2hJbnB1dENsaWVudE1vY2suaAppbmRleCBjZTgzZDNiYjljYjg4
YjBhM2E5NWI1NDk1NDI3ZDI5OTFmMmUwYjRmLi4zY2U5ODdiODIzY2QxOTgwMjg2NjljNzc5ZjNj
NDc5YzQ3M2NiN2VkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL21vY2svU3BlZWNoSW5w
dXRDbGllbnRNb2NrLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xp
ZW50TW9jay5oCkBAIC0zNCw2ICszNCw4IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIK
ICNpbmNsdWRlICJTcGVlY2hJbnB1dENsaWVudC5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCisjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAK
ICNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQogCkBAIC00NiwxMSArNDgsMTEgQEAgY2xhc3MgU3Bl
ZWNoSW5wdXRDbGllbnRNb2NrIDogcHVibGljIFNwZWVjaElucHV0Q2xpZW50IHsKIHB1YmxpYzoK
ICAgICBTcGVlY2hJbnB1dENsaWVudE1vY2soKTsKIAotICAgIHZvaWQgc2V0UmVjb2duaXRpb25S
ZXN1bHQoY29uc3QgU3RyaW5nJiByZXN1bHQpOworICAgIHZvaWQgc2V0UmVjb2duaXRpb25SZXN1
bHQoY29uc3QgU3RyaW5nJiByZXN1bHQsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UpOwogCiAgICAg
Ly8gU3BlZWNoSW5wdXRDbGllbnQgbWV0aG9kcy4KICAgICB2b2lkIHNldExpc3RlbmVyKFNwZWVj
aElucHV0TGlzdGVuZXIqKTsKLSAgICBib29sIHN0YXJ0UmVjb2duaXRpb24oaW50LCBjb25zdCBJ
bnRSZWN0Jik7CisgICAgYm9vbCBzdGFydFJlY29nbml0aW9uKGludCwgY29uc3QgU3RyaW5nJiwg
Y29uc3QgSW50UmVjdCYpOwogICAgIHZvaWQgc3RvcFJlY29yZGluZyhpbnQpOwogICAgIHZvaWQg
Y2FuY2VsUmVjb2duaXRpb24oaW50KTsKIApAQCAtNjEsNyArNjMsOSBAQCBwcml2YXRlOgogICAg
IFRpbWVyPFNwZWVjaElucHV0Q2xpZW50TW9jaz4gbV90aW1lcjsKICAgICBTcGVlY2hJbnB1dExp
c3RlbmVyKiBtX2xpc3RlbmVyOwogICAgIGludCBtX3JlcXVlc3RJZDsKLSAgICBTdHJpbmcgbV9y
ZWNvZ25pdGlvblJlc3VsdDsKKworICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IG1fcmVjb2du
aXRpb25SZXN1bHQ7CisgICAgU3RyaW5nIG1fbGFuZ3VhZ2U7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Q29udHJvbElubmVy
RWxlbWVudHMuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRz
LmNwcAppbmRleCA1ZDViOGIzMGI0MTEwNTIwZDFhNGRlN2I4YTc5YzQ4NWQ3OTM2NjA4Li42NWQw
YTY0NjA5ZDIwMzRiMTA5OTUwM2QxNjkxNTFhYmU2NmRhYTNlIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3JlbmRlcmluZy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCisrKyBiL1dlYkNvcmUvcmVu
ZGVyaW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKQEAgLTIxLDkgKzIxLDkgQEAKICAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKICAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KLSAKKwogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlRl
eHRDb250cm9sSW5uZXJFbGVtZW50cy5oIgogCkBAIC0xMDcsMTggKzEwNywxOCBAQCB2b2lkIFRl
eHRDb250cm9sSW5uZXJFbGVtZW50OjphdHRhY2hJbm5lckVsZW1lbnQoTm9kZSogcGFyZW50LCBQ
YXNzUmVmUHRyPFJlbmRlcgogICAgICAgICBzZXRSZW5kZXJlcihyZW5kZXJlcik7CiAgICAgICAg
IHJlbmRlcmVyLT5zZXRTdHlsZShzdHlsZSk7CiAgICAgfQotICAgIAorCiAgICAgLy8gU2V0IHRo
ZXNlIGV4cGxpY2l0bHkgc2luY2UgdGhpcyBub3JtYWxseSBoYXBwZW5zIGR1cmluZyBhbiBhdHRh
Y2goKQogICAgIHNldEF0dGFjaGVkKCk7CiAgICAgc2V0SW5Eb2N1bWVudCgpOwotICAgIAorCiAg
ICAgLy8gRm9yIGVsZW1lbnRzIHdpdGhvdXQgYSBzaGFkb3cgcGFyZW50LCBhZGQgdGhlIG5vZGUg
dG8gdGhlIERPTSBub3JtYWxseS4KICAgICBpZiAoIW1fc2hhZG93UGFyZW50KSB7CiAgICAgICAg
IC8vIEZJWE1FOiBUaGlzIGNvZGUgc2VlbXMgdmVyeSB3cm9uZy4gIFdoeSBhcmUgd2UgbWFnaWNh
bGx5IGFkZGluZyB8dGhpc3wgdG8gdGhlIERPTSBoZXJlPwogICAgICAgICAvLyAgICAgICAgV2Ug
c2hvdWxkbid0IGJlIGNhbGxpbmcgcGFyc2VyIEFQSSBtZXRob2RzIG91dHNpZGUgb2YgdGhlIHBh
cnNlciEKICAgICAgICAgcGFyZW50LT5kZXByZWNhdGVkUGFyc2VyQWRkQ2hpbGQodGhpcyk7CiAg
ICAgfQotIAorCiAgICAgLy8gQWRkIHRoZSByZW5kZXJlciB0byB0aGUgcmVuZGVyIHRyZWUKICAg
ICBpZiAocmVuZGVyZXIpCiAgICAgICAgIHBhcmVudC0+cmVuZGVyZXIoKS0+YWRkQ2hpbGQocmVu
ZGVyZXIpOwpAQCAtMjA4LDcgKzIwOCw3IEBAIHZvaWQgU2VhcmNoRmllbGRDYW5jZWxCdXR0b25F
bGVtZW50OjpkZXRhY2goKQogewogICAgIGlmIChtX2NhcHR1cmluZykgewogICAgICAgICBpZiAo
RnJhbWUqIGZyYW1lID0gZG9jdW1lbnQoKS0+ZnJhbWUoKSkKLSAgICAgICAgICAgIGZyYW1lLT5l
dmVudEhhbmRsZXIoKS0+c2V0Q2FwdHVyaW5nTW91c2VFdmVudHNOb2RlKDApOyAgICAgIAorICAg
ICAgICAgICAgZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5zZXRDYXB0dXJpbmdNb3VzZUV2ZW50c05v
ZGUoMCk7CiAgICAgfQogICAgIFRleHRDb250cm9sSW5uZXJFbGVtZW50OjpkZXRhY2goKTsKIH0K
QEAgLTI4MSw5ICsyODEsOSBAQCB2b2lkIFNwaW5CdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRI
YW5kbGVyKEV2ZW50KiBldmVudCkKICAgICBpZiAoIWJveCkgewogICAgICAgICBpZiAoIWV2ZW50
LT5kZWZhdWx0SGFuZGxlZCgpKQogICAgICAgICAgICAgSFRNTERpdkVsZW1lbnQ6OmRlZmF1bHRF
dmVudEhhbmRsZXIoZXZlbnQpOwotICAgICAgICByZXR1cm47ICAgICAgICAKKyAgICAgICAgcmV0
dXJuOwogICAgIH0KLSAgICAKKwogICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0ID0gc3RhdGlj
X2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KHNoYWRvd0FuY2VzdG9yTm9kZSgpKTsKICAgICBpZiAo
aW5wdXQtPmRpc2FibGVkKCkgfHwgaW5wdXQtPmlzUmVhZE9ubHlGb3JtQ29udHJvbCgpKSB7CiAg
ICAgICAgIGlmICghZXZlbnQtPmRlZmF1bHRIYW5kbGVkKCkpCkBAIC00MzEsNyArNDMxLDcgQEAg
dm9pZCBJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihF
dmVudCogZXZlbnQpCiAgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmNsaWNr
RXZlbnQpIHsKICAgICAgICAgc3dpdGNoIChtX3N0YXRlKSB7CiAgICAgICAgIGNhc2UgSWRsZToK
LSAgICAgICAgICAgIGlmIChzcGVlY2hJbnB1dCgpLT5zdGFydFJlY29nbml0aW9uKG1fbGlzdGVu
ZXJJZCwgaW5wdXQtPnJlbmRlcmVyKCktPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCkpKQorICAg
ICAgICAgICAgaWYgKHNwZWVjaElucHV0KCktPnN0YXJ0UmVjb2duaXRpb24obV9saXN0ZW5lcklk
LCBpbnB1dC0+Y29tcHV0ZUluaGVyaXRlZExhbmd1YWdlKCksIGlucHV0LT5yZW5kZXJlcigpLT5h
YnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpKSkKICAgICAgICAgICAgICAgICBzZXRTdGF0ZShSZWNv
cmRpbmcpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUmVjb3JkaW5nOgpAQCAt
NDg3LDcgKzQ4Nyw3IEBAIHZvaWQgSW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQ6OmRldGFj
aCgpCiB7CiAgICAgaWYgKG1fY2FwdHVyaW5nKSB7CiAgICAgICAgIGlmIChGcmFtZSogZnJhbWUg
PSBkb2N1bWVudCgpLT5mcmFtZSgpKQotICAgICAgICAgICAgZnJhbWUtPmV2ZW50SGFuZGxlcigp
LT5zZXRDYXB0dXJpbmdNb3VzZUV2ZW50c05vZGUoMCk7ICAgICAgCisgICAgICAgICAgICBmcmFt
ZS0+ZXZlbnRIYW5kbGVyKCktPnNldENhcHR1cmluZ01vdXNlRXZlbnRzTm9kZSgwKTsKICAgICB9
CiAKICAgICBpZiAobV9zdGF0ZSAhPSBJZGxlKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMTk3N2RjMTEzNjE5
ZjYzMWU0MjBhZTZjMzNlOGIwNDlmOWFmZTRiMi4uYTllOWIyNDY4ZjBiMTg4Zjk3MGRiYWU2Yjhi
NThmMGQ3OWU0OTU0MCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysg
Yi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTAtMTAtMTkg
IExlYW5kcm8gR3JhY2lhIEdpbCAgPGxlYW5kcm9ncmFjaWFAZ29vZ2xlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXRjaCB0aGUgY3VycmVu
dCBzcGVlY2ggaW5wdXQgaW1wbGVtZW50YXRpb24gdG8gdXNlIGFuZCB2YWxpZGF0ZSB0aGUKKyAg
ICAgICAgbmVhcmVzdCBsYW5ndWFnZSB0YWcuIFRoZSBsYW5ndWFnZSBpcyBub3cgcGFzc2VkIHRv
IHRoZSBzdGFydFJlY29nbml0aW9uCisgICAgICAgIG1ldGhvZHMgc28gdGhhdCBsYW5ndWFnZS1z
cGVjaWZpYyByZWNvZ25pdGlvbiBjb3VsZCBiZSB1c2VkLiBBbHNvIGFkZGVkCisgICAgICAgIGEg
c2Vjb25kIHBhcmFtZXRlciB0byBzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQgZm9yIHRoZSBsYW5n
dWFnZSB1c2VkIGluCisgICAgICAgIHNwZWVjaCByZWNvZ25pdGlvbi4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3MDg5CisKKyAgICAgICAgVGhpcyBp
cyB0aGUgMm5kIG9mIGEgNC1zaWRlZCBwYXRjaCBpbiBDaHJvbWl1bSBhbmQgV2ViS2l0LiBGb3Ig
bW9yZQorICAgICAgICBkZXRhaWxzIHNlZSBodHRwOi8vY29kZXJldmlldy5jaHJvbWl1bS5vcmcv
MzYxNTAwNS9zaG93IGFuZAorICAgICAgICBodHRwOi8vY29kZXJldmlldy5jaHJvbWl1bS5vcmcv
MzU5NTAxOC9zaG93LgorCisgICAgICAgICogcHVibGljL1dlYlNwZWVjaElucHV0Q29udHJvbGxl
ci5oOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXI6OnN0YXJ0UmVj
b2duaXRpb24pOgorICAgICAgICAqIHB1YmxpYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2Nr
Lmg6CisgICAgICAgICogc3JjL1NwZWVjaElucHV0Q2xpZW50SW1wbC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlNwZWVjaElucHV0Q2xpZW50SW1wbDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6
U3BlZWNoSW5wdXRDbGllbnRJbXBsOjpzdGFydFJlY29nbml0aW9uKToKKyAgICAgICAgKiBzcmMv
U3BlZWNoSW5wdXRDbGllbnRJbXBsLmg6CisgICAgICAgICogc3JjL1dlYlNwZWVjaElucHV0Q29u
dHJvbGxlck1vY2tJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoSW5wdXRDb250
cm9sbGVyTW9ja0ltcGw6OnNldE1vY2tSZWNvZ25pdGlvblJlc3VsdCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsOjpzdGFydFJlY29nbml0aW9uKToK
KyAgICAgICAgKiBzcmMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGwuaDoKKyAgICAg
ICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6
V2ViVmlld0ltcGwpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5oOgorCiAyMDEwLTEwLTE4
ICBBZHJpZW5uZSBXYWxrZXIgIDxlbm5lQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgS2VubmV0aCBSdXNzZWxsLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3Bl
ZWNoSW5wdXRDb250cm9sbGVyLmgKaW5kZXggNTQwODc0MWEzYzk0ZDNiZjFjNTQzZDk2ZTlmYzE2
YTYzOTBkYjAyZi4uMWZkZTJhOGU3NzRmMzJlNThmODg3MmYyNDgyMjIzMDU5Yzg4YzE0NyAxMDA2
NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIu
aAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaElucHV0Q29udHJvbGxlci5o
CkBAIC0zNSw2ICszNSw3IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBXZWJTdHJp
bmc7CiBzdHJ1Y3QgV2ViUmVjdDsKIAogLy8gUHJvdmlkZXMgYW4gZW1iZWRkZXIgQVBJIGNhbGxl
ZCBieSBXZWJLaXQuCkBAIC00Myw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICAvLyBTdGFydHMgc3Bl
ZWNoIHJlY29nbml0aW9uLiBTcGVlY2ggd2lsbCBnZXQgcmVjb3JkZWQgdW50aWwgdGhlIGVuZHBv
aW50ZXIgZGV0ZWN0cyBzaWxlbmNlLAogICAgIC8vIHJ1bnMgdG8gdGhlIGxpbWl0IG9yIHN0b3BS
ZWNvcmRpbmcgaXMgY2FsbGVkLiBQcm9ncmVzcyBpbmRpY2F0aW9ucyBhbmQgdGhlIHJlY29nbml6
ZWQKICAgICAvLyB0ZXh0IGFyZSByZXR1cm5lZCB2aWEgdGhlIGxpc3RlbmVyIGludGVyZmFjZS4K
LSAgICB2aXJ0dWFsIGJvb2wgc3RhcnRSZWNvZ25pdGlvbihpbnQgcmVxdWVzdElkLCBjb25zdCBX
ZWJSZWN0JikKKyAgICB2aXJ0dWFsIGJvb2wgc3RhcnRSZWNvZ25pdGlvbihpbnQgcmVxdWVzdElk
LCBjb25zdCBXZWJTdHJpbmcmIGxhbmd1YWdlLCBjb25zdCBXZWJSZWN0JiBlbGVtZW50UmVjdCkK
ICAgICB7CiAgICAgICAgIFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hJ
bnB1dENvbnRyb2xsZXJNb2NrLmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaElu
cHV0Q29udHJvbGxlck1vY2suaAppbmRleCA5YTI2MjM1ZmY2ZDVkY2NiYmUyNDcyNjJhZTQ0YTNh
YzczOTdjM2Y0Li5iNGM1MGEwNWRjZjVhMTJmODQxYmY5YjY3NTVjZDI4ODE3ZjhjMDhiIDEwMDY0
NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1v
Y2suaAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaElucHV0Q29udHJvbGxl
ck1vY2suaApAQCAtNDQsNiArNDQsMTAgQEAgcHVibGljOgogICAgICAgICBXZWJTcGVlY2hJbnB1
dExpc3RlbmVyKiBsaXN0ZW5lcik7CiAgICAgdmlydHVhbCB+V2ViU3BlZWNoSW5wdXRDb250cm9s
bGVyTW9jaygpIHsgfQogCisgICAgdmlydHVhbCB2b2lkIHNldE1vY2tSZWNvZ25pdGlvblJlc3Vs
dChjb25zdCBXZWJTdHJpbmcmIHJlc3VsdCwgY29uc3QgV2ViU3RyaW5nJiBsYW5ndWFnZSkgPSAw
OworCisgICAgLy8gRklYTUU6IHRoaXMgaXMgYSBmaXggZm9yIGEgdHdvLXNpZGVkIHBhdGNoLiBE
ZWxldGUgYXMgc29vbiBhcyB0aGUgY2hyb21pdW0gc2lkZSBpcyBwYXRjaGVkLgorICAgIC8vIENo
cm9taXVtIHBhdGNoIG5vdCB1cGxvYWRlZCB5ZXQsIGJ1dCB3aWxsIGRlcGVuZCBvbiBodHRwOi8v
Y29kZXJldmlldy5jaHJvbWl1bS5vcmcvMzYxNTAwNS9zaG93IHBhdGNoLgogICAgIHZpcnR1YWwg
dm9pZCBzZXRNb2NrUmVjb2duaXRpb25SZXN1bHQoY29uc3QgV2ViU3RyaW5nJiByZXN1bHQpID0g
MDsKIH07CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvU3BlZWNoSW5wdXRDbGll
bnRJbXBsLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvU3BlZWNoSW5wdXRDbGllbnRJbXBsLmNw
cAppbmRleCA5NjNkNDQwNWE2MmQzMmUxYThjZWNkNTRjMDhjNWJiZWIzYTYyZGNhLi4xMzgxOTI5
NjNiNTQzMDVjNmEzODNhNTJlYzIzOGNhMGM1YjEwNGNmIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hy
b21pdW0vc3JjL1NwZWVjaElucHV0Q2xpZW50SW1wbC5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVt
L3NyYy9TcGVlY2hJbnB1dENsaWVudEltcGwuY3BwCkBAIC0zMiwxNSArMzIsMjEgQEAKICNpbmNs
dWRlICJTcGVlY2hJbnB1dENsaWVudEltcGwuaCIKIAogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5n
LmgiCisjaW5jbHVkZSAiU3BlZWNoSW5wdXRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIldlYlNwZWVj
aElucHV0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIldlYlN0cmluZy5oIgogI2luY2x1ZGUgIldl
YlZpZXdDbGllbnQuaCIKLSNpbmNsdWRlICJwYWdlL1NwZWVjaElucHV0TGlzdGVuZXIuaCIKKyNp
bmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCiAjaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKK1Bhc3NPd25QdHI8U3BlZWNoSW5wdXRDbGllbnRJbXBsPiBT
cGVlY2hJbnB1dENsaWVudEltcGw6OmNyZWF0ZShXZWJWaWV3Q2xpZW50KiBjbGllbnQpCit7Cisg
ICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBTcGVlY2hJbnB1dENsaWVudEltcGwoY2xpZW50KSk7Cit9
CisKIFNwZWVjaElucHV0Q2xpZW50SW1wbDo6U3BlZWNoSW5wdXRDbGllbnRJbXBsKFdlYlZpZXdD
bGllbnQqIHdlYl92aWV3X2NsaWVudCkKICAgICA6IG1fY29udHJvbGxlcih3ZWJfdmlld19jbGll
bnQgPyB3ZWJfdmlld19jbGllbnQtPnNwZWVjaElucHV0Q29udHJvbGxlcih0aGlzKSA6IDApCiAg
ICAgLCBtX2xpc3RlbmVyKDApCkBAIC01NiwxMCArNjIsMTAgQEAgdm9pZCBTcGVlY2hJbnB1dENs
aWVudEltcGw6OnNldExpc3RlbmVyKFdlYkNvcmU6OlNwZWVjaElucHV0TGlzdGVuZXIqIGxpc3Rl
bmVyKQogICAgIG1fbGlzdGVuZXIgPSBsaXN0ZW5lcjsKIH0KIAotYm9vbCBTcGVlY2hJbnB1dENs
aWVudEltcGw6OnN0YXJ0UmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCwgY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYgZWxlbWVudFJlY3QpCitib29sIFNwZWVjaElucHV0Q2xpZW50SW1wbDo6c3RhcnRS
ZWNvZ25pdGlvbihpbnQgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlLCBjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiBlbGVtZW50UmVjdCkKIHsKICAgICBBU1NFUlQobV9saXN0ZW5lcik7
Ci0gICAgcmV0dXJuIG1fY29udHJvbGxlci0+c3RhcnRSZWNvZ25pdGlvbihyZXF1ZXN0SWQsIGVs
ZW1lbnRSZWN0KTsKKyAgICByZXR1cm4gbV9jb250cm9sbGVyLT5zdGFydFJlY29nbml0aW9uKHJl
cXVlc3RJZCwgbGFuZ3VhZ2UsIGVsZW1lbnRSZWN0KTsKIH0KIAogdm9pZCBTcGVlY2hJbnB1dENs
aWVudEltcGw6OnN0b3BSZWNvcmRpbmcoaW50IHJlcXVlc3RJZCkKZGlmZiAtLWdpdCBhL1dlYktp
dC9jaHJvbWl1bS9zcmMvU3BlZWNoSW5wdXRDbGllbnRJbXBsLmggYi9XZWJLaXQvY2hyb21pdW0v
c3JjL1NwZWVjaElucHV0Q2xpZW50SW1wbC5oCmluZGV4IDgxN2IzMmIxMjQxNGIzYTA3ZGZhM2Fl
MzUxOTA4N2RlYTVhMGY3MzMuLmM3ZDFmYTNhNmM1ODU1NzdmYzk0NTJjNGRiY2Q1ZTg3MGZjODdh
M2EgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvU3BlZWNoSW5wdXRDbGllbnRJbXBs
LmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9TcGVlY2hJbnB1dENsaWVudEltcGwuaApAQCAt
MzMsOCArMzMsMTUgQEAKIAogI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCiAKKyNpbmNsdWRlICJT
cGVlY2hJbnB1dENsaWVudC5oIgogI2luY2x1ZGUgIldlYlNwZWVjaElucHV0TGlzdGVuZXIuaCIK
LSNpbmNsdWRlICJwYWdlL1NwZWVjaElucHV0Q2xpZW50LmgiCisjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIu
aD4KKworbmFtZXNwYWNlIFdURiB7CitjbGFzcyBTdHJpbmc7Cit9CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIFNwZWVjaElucHV0TGlzdGVuZXI7CkBAIC00OSwxMiArNTYsMTIgQEAgY2xh
c3MgU3BlZWNoSW5wdXRDbGllbnRJbXBsCiAgICAgOiBwdWJsaWMgV2ViQ29yZTo6U3BlZWNoSW5w
dXRDbGllbnQsCiAgICAgICBwdWJsaWMgV2ViU3BlZWNoSW5wdXRMaXN0ZW5lciB7CiBwdWJsaWM6
Ci0gICAgU3BlZWNoSW5wdXRDbGllbnRJbXBsKFdlYlZpZXdDbGllbnQqKTsKKyAgICBzdGF0aWMg
UGFzc093blB0cjxTcGVlY2hJbnB1dENsaWVudEltcGw+IGNyZWF0ZShXZWJWaWV3Q2xpZW50Kik7
CiAgICAgdmlydHVhbCB+U3BlZWNoSW5wdXRDbGllbnRJbXBsKCk7CiAKICAgICAvLyBTcGVlY2hJ
bnB1dENsaWVudCBtZXRob2RzLgogICAgIHZvaWQgc2V0TGlzdGVuZXIoV2ViQ29yZTo6U3BlZWNo
SW5wdXRMaXN0ZW5lciopOwotICAgIGJvb2wgc3RhcnRSZWNvZ25pdGlvbihpbnQsIGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmKTsKKyAgICBib29sIHN0YXJ0UmVjb2duaXRpb24oaW50LCBjb25zdCBT
dHJpbmcmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CiAgICAgdm9pZCBzdG9wUmVjb3JkaW5n
KGludCk7CiAgICAgdm9pZCBjYW5jZWxSZWNvZ25pdGlvbihpbnQpOwogCkBAIC02NCw2ICs3MSw4
IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZENvbXBsZXRlUmVjb2duaXRpb24oaW50KTsKIAogcHJp
dmF0ZToKKyAgICBTcGVlY2hJbnB1dENsaWVudEltcGwoV2ViVmlld0NsaWVudCopOworCiAgICAg
V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyKiBtX2NvbnRyb2xsZXI7IC8vIFRvIGNhbGwgaW50byB0
aGUgZW1iZWRkZXIuCiAgICAgV2ViQ29yZTo6U3BlZWNoSW5wdXRMaXN0ZW5lciogbV9saXN0ZW5l
cjsKIH07CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNwZWVjaElucHV0Q29u
dHJvbGxlck1vY2tJbXBsLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3BlZWNoSW5wdXRD
b250cm9sbGVyTW9ja0ltcGwuY3BwCmluZGV4IDYwYzRmZWQ4NTJiMjg0ZTAyNzFhZDAwZWQ5NzEw
MDJhMmY1N2E0YjYuLjQ1YzZmZjA4NjJmMDI0ZmMxODA1NzMzYzE2YTkzMzA1NzM3YWMzOTMgMTAw
NjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9j
a0ltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3BlZWNoSW5wdXRDb250cm9s
bGVyTW9ja0ltcGwuY3BwCkBAIC01Nyw3ICs1NywxMiBAQCBXZWJTcGVlY2hJbnB1dENvbnRyb2xs
ZXJNb2NrSW1wbDo6fldlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsKCkKIAogdm9pZCBX
ZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6c2V0TW9ja1JlY29nbml0aW9uUmVzdWx0
KGNvbnN0IFdlYlN0cmluZyYgcmVzdWx0KQogewotICAgIG1fd2ViY29yZU1vY2stPnNldFJlY29n
bml0aW9uUmVzdWx0KHJlc3VsdCk7CisgICAgbV93ZWJjb3JlTW9jay0+c2V0UmVjb2duaXRpb25S
ZXN1bHQocmVzdWx0LCBXZWJTdHJpbmc6OmZyb21VVEY4KCIiKSk7Cit9CisKK3ZvaWQgV2ViU3Bl
ZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OnNldE1vY2tSZWNvZ25pdGlvblJlc3VsdChjb25z
dCBXZWJTdHJpbmcmIHJlc3VsdCwgY29uc3QgV2ViU3RyaW5nICZsYW5ndWFnZSkKK3sKKyAgICBt
X3dlYmNvcmVNb2NrLT5zZXRSZWNvZ25pdGlvblJlc3VsdChyZXN1bHQsIGxhbmd1YWdlKTsKIH0K
IAogdm9pZCBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6ZGlkQ29tcGxldGVSZWNv
cmRpbmcoaW50IHJlcXVlc3RJZCkKQEAgLTc1LDkgKzgwLDkgQEAgdm9pZCBXZWJTcGVlY2hJbnB1
dENvbnRyb2xsZXJNb2NrSW1wbDo6c2V0UmVjb2duaXRpb25SZXN1bHQoaW50IHJlcXVlc3RJZCwg
Y29uc3QKICAgICBtX2xpc3RlbmVyLT5zZXRSZWNvZ25pdGlvblJlc3VsdChyZXF1ZXN0SWQsIHJl
c3VsdCk7CiB9CiAKLWJvb2wgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OnN0YXJ0
UmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCwgY29uc3QgV2ViUmVjdCYgZWxlbWVudFJlY3QpCiti
b29sIFdlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsOjpzdGFydFJlY29nbml0aW9uKGlu
dCByZXF1ZXN0SWQsIGNvbnN0IFdlYlN0cmluZyYgbGFuZ3VhZ2UsIGNvbnN0IFdlYlJlY3QmIGVs
ZW1lbnRSZWN0KQogewotICAgIHJldHVybiBtX3dlYmNvcmVNb2NrLT5zdGFydFJlY29nbml0aW9u
KHJlcXVlc3RJZCwgZWxlbWVudFJlY3QpOworICAgIHJldHVybiBtX3dlYmNvcmVNb2NrLT5zdGFy
dFJlY29nbml0aW9uKHJlcXVlc3RJZCwgbGFuZ3VhZ2UsIGVsZW1lbnRSZWN0KTsKIH0KIAogdm9p
ZCBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6Y2FuY2VsUmVjb2duaXRpb24oaW50
IHJlcXVlc3RJZCkKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3BlZWNoSW5w
dXRDb250cm9sbGVyTW9ja0ltcGwuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3BlZWNoSW5w
dXRDb250cm9sbGVyTW9ja0ltcGwuaAppbmRleCBlZGJmY2EzZWU2MGU5Mzk0Mjg5M2UyNzIxODkz
ZTQzYTBlYjg3YzVmLi4xYjMwNTNiZjA5Mjc1M2VmNzkyOTNkZGNhMTJlODQzNTIwNmJkYmMwIDEw
MDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1v
Y2tJbXBsLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xs
ZXJNb2NrSW1wbC5oCkBAIC0zNyw2ICszNywxMCBAQAogI2luY2x1ZGUgIldlYlN0cmluZy5oIgog
I2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIAorbmFtZXNwYWNlIFdURiB7CitjbGFzcyBTdHJpbmc7
Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFNwZWVjaElucHV0Q2xpZW50TW9jazsK
IH0KQEAgLTU3LDExICs2MSwxNSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRSZWNvZ25pdGlvblJl
c3VsdChpbnQgcmVxdWVzdElkLCBjb25zdCBXVEY6OlN0cmluZyYgcmVzdWx0KTsKIAogICAgIC8v
IFdlYlNwZWVjaElucHV0Q29udHJvbGxlciBtZXRob2RzLgotICAgIGJvb2wgc3RhcnRSZWNvZ25p
dGlvbihpbnQgcmVxdWVzdElkLCBjb25zdCBXZWJSZWN0JiBlbGVtZW50UmVjdCk7CisgICAgYm9v
bCBzdGFydFJlY29nbml0aW9uKGludCByZXF1ZXN0SWQsIGNvbnN0IFdlYlN0cmluZyYgbGFuZ3Vh
Z2UsIGNvbnN0IFdlYlJlY3QmIGVsZW1lbnRSZWN0KTsKICAgICB2b2lkIGNhbmNlbFJlY29nbml0
aW9uKGludCByZXF1ZXN0SWQpOwogICAgIHZvaWQgc3RvcFJlY29yZGluZyhpbnQgcmVxdWVzdElk
KTsKIAogICAgIC8vIFdlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2sgbWV0aG9kcy4KKyAgICB2
b2lkIHNldE1vY2tSZWNvZ25pdGlvblJlc3VsdChjb25zdCBXZWJTdHJpbmcmIHJlc3VsdCwgY29u
c3QgV2ViU3RyaW5nJiBsYW5ndWFnZSk7CisKKyAgICAvLyBGSVhNRTogdGhpcyBpcyBhIGZpeCBm
b3IgYSB0d28tc2lkZWQgcGF0Y2guIERlbGV0ZSBhcyBzb29uIGFzIHRoZSBjaHJvbWl1bSBzaWRl
IGlzIHBhdGNoZWQuCisgICAgLy8gQ2hyb21pdW0gcGF0Y2ggbm90IHVwbG9hZGVkIHlldCwgYnV0
IHdpbGwgZGVwZW5kIG9uIGh0dHA6Ly9jb2RlcmV2aWV3LmNocm9taXVtLm9yZy8zNjE1MDA1L3No
b3cgcGF0Y2guCiAgICAgdm9pZCBzZXRNb2NrUmVjb2duaXRpb25SZXN1bHQoY29uc3QgV2ViU3Ry
aW5nJiByZXN1bHQpOwogCiBwcml2YXRlOgpAQCAtNzIsNCArODAsMyBAQCBwcml2YXRlOgogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJN
b2NrSW1wbF9oCi0KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwu
Y3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggMGVhYWFjMTVj
MDU4ODM3MWU1ODkxMWJhZjgyNWVkODg2NWRiNWY1ZS4uYWJhMGYzZWY5NTllYjY0ZjE3ZWUwNWM5
NzZmMTllYjFlOTBjOTg5NyAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3
SW1wbC5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTg4
LDYgKzg4LDcgQEAKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNlbGVj
dGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIlNwZWVj
aElucHV0Q2xpZW50SW1wbC5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSAiVHlwaW5n
Q29tbWFuZC5oIgogI2luY2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9yLmgiCkBAIC0yNzUsNyAr
Mjc2LDcgQEAgV2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKFdlYlZpZXdDbGllbnQqIGNsaWVudCwg
V2ViRGV2VG9vbHNBZ2VudENsaWVudCogZGV2VG9vbHMKICAgICAsIG1fY29tcG9zaXRvckNyZWF0
aW9uRmFpbGVkKGZhbHNlKQogI2VuZGlmCiAjaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKLSAgICAs
IG1fc3BlZWNoSW5wdXRDbGllbnQoY2xpZW50KQorICAgICwgbV9zcGVlY2hJbnB1dENsaWVudChT
cGVlY2hJbnB1dENsaWVudEltcGw6OmNyZWF0ZShjbGllbnQpKQogI2VuZGlmCiAgICAgLCBtX2Rl
dmljZU9yaWVudGF0aW9uQ2xpZW50UHJveHkobmV3IERldmljZU9yaWVudGF0aW9uQ2xpZW50UHJv
eHkoY2xpZW50ID8gY2xpZW50LT5kZXZpY2VPcmllbnRhdGlvbkNsaWVudCgpIDogMCkpCiB7CkBA
IC0yOTgsNyArMjk5LDcgQEAgV2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKFdlYlZpZXdDbGllbnQq
IGNsaWVudCwgV2ViRGV2VG9vbHNBZ2VudENsaWVudCogZGV2VG9vbHMKICAgICBwYWdlQ2xpZW50
cy5kcmFnQ2xpZW50ID0gJm1fZHJhZ0NsaWVudEltcGw7CiAgICAgcGFnZUNsaWVudHMuaW5zcGVj
dG9yQ2xpZW50ID0gJm1faW5zcGVjdG9yQ2xpZW50SW1wbDsKICNpZiBFTkFCTEUoSU5QVVRfU1BF
RUNIKQotICAgIHBhZ2VDbGllbnRzLnNwZWVjaElucHV0Q2xpZW50ID0gJm1fc3BlZWNoSW5wdXRD
bGllbnQ7CisgICAgcGFnZUNsaWVudHMuc3BlZWNoSW5wdXRDbGllbnQgPSBtX3NwZWVjaElucHV0
Q2xpZW50LmdldCgpOwogI2VuZGlmCiAgICAgcGFnZUNsaWVudHMuZGV2aWNlT3JpZW50YXRpb25D
bGllbnQgPSBtX2RldmljZU9yaWVudGF0aW9uQ2xpZW50UHJveHkuZ2V0KCk7CiAKZGlmZiAtLWdp
dCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaCBiL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVmlld0ltcGwuaAppbmRleCAwNTBiNWUxNmFhNTJmMjMwYzk4NDllZDg0ODIzOTYwY2M5
NmE4MDYzLi43MTJlYjdhNDA4MzUwOTA0YTg5NWEzZDhmMDc5MjAyM2E2ZGJhYjliIDEwMDY0NAot
LS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKKysrIGIvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJWaWV3SW1wbC5oCkBAIC00OSw3ICs0OSw2IEBACiAjaW5jbHVkZSAiSW50UmVj
dC5oIgogI2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIk5vdGlm
aWNhdGlvblByZXNlbnRlckltcGwuaCIKLSNpbmNsdWRlICJTcGVlY2hJbnB1dENsaWVudEltcGwu
aCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
IApAQCAtNzQsNiArNzMsNyBAQCBjbGFzcyBBdXRvRmlsbFBvcHVwTWVudUNsaWVudDsKIGNsYXNz
IENvbnRleHRNZW51Q2xpZW50SW1wbDsKIGNsYXNzIERldmljZU9yaWVudGF0aW9uQ2xpZW50UHJv
eHk7CiBjbGFzcyBEcmFnU2Nyb2xsVGltZXI7CitjbGFzcyBTcGVlY2hJbnB1dENsaWVudEltcGw7
CiBjbGFzcyBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0OwogY2xhc3MgV2ViRGV2VG9vbHNBZ2VudENs
aWVudDsKIGNsYXNzIFdlYkRldlRvb2xzQWdlbnRQcml2YXRlOwpAQCAtNTQzLDcgKzU0Myw3IEBA
IHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IFdlYklucHV0RXZlbnQqIG1fY3VycmVudElucHV0
RXZlbnQ7CiAKICNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQotICAgIFNwZWVjaElucHV0Q2xpZW50
SW1wbCBtX3NwZWVjaElucHV0Q2xpZW50OworICAgIE93blB0cjxTcGVlY2hJbnB1dENsaWVudElt
cGw+IG1fc3BlZWNoSW5wdXRDbGllbnQ7CiAjZW5kaWYKICAgICAvLyBJZiB3ZSBhdHRlbXB0IHRv
IGZldGNoIHRoZSBvbi1zY3JlZW4gR3JhcGhpY3NDb250ZXh0M0QgYmVmb3JlCiAgICAgLy8gdGhl
IGNvbXBvc2l0b3IgaGFzIGJlZW4gdHVybmVkIG9uLCB3ZSBuZWVkIHRvIGluc3RhbnRpYXRlIGl0
CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cgYi9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKaW5kZXggODhmNWIwZjFlOTVkNmViNDkzODM4MGEzNzI4ZmJkZWU1MGI1ZDcwYi4uZDA4NzFm
MmE2M2NiZDI3ODM4NzQ2YjQ4ZWY0NTczNGI1NWFkNDk2OSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBA
CisyMDEwLTEwLTE5ICBMZWFuZHJvIEdyYWNpYSBHaWwgIDxsZWFuZHJvZ3JhY2lhQGdvb2dsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
ZWQgYSBzZWNvbmQgcGFyYW1ldGVyIHRvIHNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdCBmb3IKKyAg
ICAgICAgdGhlIGxhbmd1YWdlIHVzZWQgaW4gc3BlZWNoIGlucHV0LgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDcwODkKKworICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKHNldE1vY2tTcGVl
Y2hJbnB1dFJlc3VsdENhbGxiYWNrKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRU
ZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91
dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRN
b2NrU3BlZWNoSW5wdXRSZXN1bHQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2d0ay9MYXlv
dXRUZXN0Q29udHJvbGxlckd0ay5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6
c2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMv
TGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxl
cjo6c2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93
aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRy
b2xsZXI6OnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdCk6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6c2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KToKKwogMjAxMC0xMC0xOCAgSm9jZWx5
biBUdXJjb3R0ZSAgPGpvY2VseW4udHVyY290dGVAbm9raWEuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IEFuZHJlYXMgS2xpbmcuCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKaW5kZXggYjVjYzg3NDIxNWI0MGY1OTA3NTVhNDA0
N2ViZGQ1ZDlmOGVkNjI3OS4uZGI0NzBjODYyMmMwM2RiYTRhZDg5MDE3YjBlYzkyOGJiZDRhMzdj
MSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRy
b2xsZXIuY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250
cm9sbGVyLmNwcApAQCAtMTA3MCwxNCArMTA3MCwxNyBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBzZXRN
b2NrR2VvbG9jYXRpb25FcnJvckNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVj
dAogCiBzdGF0aWMgSlNWYWx1ZVJlZiBzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHRDYWxsYmFjayhK
U0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRo
aXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50
c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7Ci0gICAgaWYgKGFyZ3VtZW50Q291bnQgPCAx
KQorICAgIGlmIChhcmd1bWVudENvdW50IDwgMikKICAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtl
VW5kZWZpbmVkKGNvbnRleHQpOwogCiAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHJlc3Vs
dChBZG9wdCwgSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBhcmd1bWVudHNbMF0sIGV4Y2Vw
dGlvbikpOwogICAgIEFTU0VSVCghKmV4Y2VwdGlvbik7CiAKKyAgICBKU1JldGFpblB0cjxKU1N0
cmluZ1JlZj4gbGFuZ3VhZ2UoQWRvcHQsIEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgYXJn
dW1lbnRzWzFdLCBleGNlcHRpb24pKTsKKyAgICBBU1NFUlQoISpleGNlcHRpb24pOworCiAgICAg
TGF5b3V0VGVzdENvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRUZXN0
Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7Ci0gICAgY29udHJv
bGxlci0+c2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KHJlc3VsdC5nZXQoKSk7CisgICAgY29udHJv
bGxlci0+c2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KHJlc3VsdC5nZXQoKSwgbGFuZ3VhZ2UuZ2V0
KCkpOwogCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogfQpkaWZm
IC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIu
aCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKaW5k
ZXggNjg5ZTExNDU3NTA4ZGZmZTdkODg3YmRlMTY0ODIxNDBiYTc1YmMxYS4uOWE5NDVlOTgyYjhi
NWM4ODI1OGFmNmFhZDc4ZDYzOGQ0M2MwMjA1NiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAorKysgYi9XZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCkBAIC05NCw3ICs5NCw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldE1vY2tEZXZpY2VPcmllbnRhdGlvbihib29sIGNhblByb3ZpZGVBbHBo
YSwgZG91YmxlIGFscGhhLCBib29sIGNhblByb3ZpZGVCZXRhLCBkb3VibGUgYmV0YSwgYm9vbCBj
YW5Qcm92aWRlR2FtbWEsIGRvdWJsZSBnYW1tYSk7CiAgICAgdm9pZCBzZXRNb2NrR2VvbG9jYXRp
b25FcnJvcihpbnQgY29kZSwgSlNTdHJpbmdSZWYgbWVzc2FnZSk7CiAgICAgdm9pZCBzZXRNb2Nr
R2VvbG9jYXRpb25Qb3NpdGlvbihkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRv
dWJsZSBhY2N1cmFjeSk7Ci0gICAgdm9pZCBzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoSlNTdHJp
bmdSZWYgcmVzdWx0KTsKKyAgICB2b2lkIHNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdChKU1N0cmlu
Z1JlZiByZXN1bHQsIEpTU3RyaW5nUmVmIGxhbmd1YWdlVGFnKTsKICAgICB2b2lkIHNldFBlcnNp
c3RlbnRVc2VyU3R5bGVTaGVldExvY2F0aW9uKEpTU3RyaW5nUmVmIHBhdGgpOwogICAgIHZvaWQg
c2V0UGx1Z2luc0VuYWJsZWQoYm9vbCBmbGFnKTsKICAgICB2b2lkIHNldFBvcHVwQmxvY2tpbmdF
bmFibGVkKGJvb2wgZmxhZyk7CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKaW5kZXggZDg1ZjBjYTJi
Y2MyYTg0ZjU3NjViNTZhN2NjNGZiMGQ0OGU3ZGE2ZC4uMzZmZmU5NzRhZDY5ZTFhNmNmMDFiODky
ZjczZWQyYTI5YTc2MjkxMSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcApAQCAtMTUyNiwxMCAr
MTUyNiwxMCBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjphYm9ydE1vZGFsKGNvbnN0IENw
cEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYQogdm9pZCBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6c2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJn
dW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCiB7CiAgICAgcmVzdWx0LT5zZXROdWxsKCk7Ci0g
ICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgPCAxIHx8ICFhcmd1bWVudHNbMF0uaXNTdHJpbmcoKSkK
KyAgICBpZiAoYXJndW1lbnRzLnNpemUoKSA8IDIgfHwgIWFyZ3VtZW50c1swXS5pc1N0cmluZygp
IHx8ICFhcmd1bWVudHNbMV0uaXNTdHJpbmcoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9z
cGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrLT5zZXRNb2NrUmVjb2duaXRpb25SZXN1bHQoY3BwVmFy
aWFudFRvV2ViU3RyaW5nKGFyZ3VtZW50c1swXSkpOworICAgIG1fc3BlZWNoSW5wdXRDb250cm9s
bGVyTW9jay0+c2V0TW9ja1JlY29nbml0aW9uUmVzdWx0KGNwcFZhcmlhbnRUb1dlYlN0cmluZyhh
cmd1bWVudHNbMF0pLCBjcHBWYXJpYW50VG9XZWJTdHJpbmcoYXJndW1lbnRzWzFdKSk7CiB9CiAK
IFdlYktpdDo6V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyKiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
c3BlZWNoSW5wdXRDb250cm9sbGVyKFdlYktpdDo6V2ViU3BlZWNoSW5wdXRMaXN0ZW5lciogbGlz
dGVuZXIpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0
VGVzdENvbnRyb2xsZXJHdGsuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xh
eW91dFRlc3RDb250cm9sbGVyR3RrLmNwcAppbmRleCAxODFlZjlmMGIyOWNlNjA5OGIxOGJkNjQw
M2UxZWNhYjE4ZTAzYjQ0Li5mM2RiNjIyZTY2NzgwMWU3MGY2NDg0NWNjMGY0OTA3NDVjNzBmOTI0
IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENv
bnRyb2xsZXJHdGsuY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlv
dXRUZXN0Q29udHJvbGxlckd0ay5jcHAKQEAgLTUwMCw3ICs1MDAsNyBAQCB2b2lkIExheW91dFRl
c3RDb250cm9sbGVyOjpzZXRHZW9sb2NhdGlvblBlcm1pc3Npb24oYm9vbCBhbGxvdykKICAgICBz
ZXRHZW9sb2NhdGlvblBlcm1pc3Npb25Db21tb24oYWxsb3cpOwogfQogCi12b2lkIExheW91dFRl
c3RDb250cm9sbGVyOjpzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoSlNTdHJpbmdSZWYgcmVzdWx0
KQordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KEpT
U3RyaW5nUmVmIHJlc3VsdCwgSlNTdHJpbmdSZWYgbGFuZ3VhZ2UpCiB7CiAgICAgLy8gRklYTUU6
IEltcGxlbWVudCBmb3Igc3BlZWNoIGlucHV0IGxheW91dCB0ZXN0cy4KICAgICAvLyBTZWUgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NDg1LgpkaWZmIC0tZ2l0IGEv
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1t
IGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFj
Lm1tCmluZGV4IGM1ZDVhOTA2OTU5OWJhNGJjZmMyYWNhMzExYzdhM2E3NjVhYjVlMWQuLjE1MGI2
ZjljZDNhNWJjZjQ5MDEwNzcxOGRmZmY5MzNkNWM5NGM0ZDEgMTAwNjQ0Ci0tLSBhL1dlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQorKysgYi9X
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0K
QEAgLTM3MSw3ICszNzEsNyBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRHZW9sb2Nh
dGlvblBlcm1pc3Npb24oYm9vbCBhbGxvdykKICAgICBbW1ttYWluRnJhbWUgd2ViVmlld10gVUlE
ZWxlZ2F0ZV0gZGlkU2V0TW9ja0dlb2xvY2F0aW9uUGVybWlzc2lvbl07CiB9CiAKLXZvaWQgTGF5
b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdChKU1N0cmluZ1JlZiBy
ZXN1bHQpCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrU3BlZWNoSW5wdXRSZXN1
bHQoSlNTdHJpbmdSZWYgcmVzdWx0LCBKU1N0cmluZ1JlZiBsYW5ndWFnZSkKIHsKICAgICAvLyBG
SVhNRTogSW1wbGVtZW50IGZvciBzcGVlY2ggaW5wdXQgbGF5b3V0IHRlc3RzLgogICAgIC8vIFNl
ZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk0ODUuCmRpZmYgLS1n
aXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJX
aW4uY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9s
bGVyV2luLmNwcAppbmRleCBkMjE0MGQxMDUzMmYyOGQ3M2ZjYmUxMzkxYzIxMzUzOTRlZDE4Mjhk
Li4wZTQ2N2FiMjY4ZDMwNTliOGU3NjI4Y2YyNTI4NzViYzMwNWFkMDIxIDEwMDY0NAotLS0gYS9X
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3Bw
CisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxl
cldpbi5jcHAKQEAgLTQwNSw3ICs0MDUsNyBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpz
ZXRHZW9sb2NhdGlvblBlcm1pc3Npb24oYm9vbCBhbGxvdykKICAgICBzZXRHZW9sb2NhdGlvblBl
cm1pc3Npb25Db21tb24oYWxsb3cpOwogfQogCi12b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpz
ZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoSlNTdHJpbmdSZWYgcmVzdWx0KQordm9pZCBMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6c2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KEpTU3RyaW5nUmVmIHJlc3Vs
dCwgSlNTdHJpbmdSZWYgbGFuZ3VhZ2UpCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3Ig
c3BlZWNoIGlucHV0IGxheW91dCB0ZXN0cy4KICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NDg1LgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAgYi9XZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcAppbmRleCBlZWZjNTg3
ODFlMGExZWFiY2QwZmQ4MTM4OTMyY2M0M2M0ZDc4NDdmLi4zMjYxNGMxMTMzZGRmOGFhZDc3ZWZi
MGQxZDRhNmIzMGU0MDExMDhiIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcApAQCAtMzIwLDcgKzMyMCw3IEBA
IHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbihib29s
IGFsbG93KQogICAgIHNldEdlb2xvY2F0aW9uUGVybWlzc2lvbkNvbW1vbihhbGxvdyk7CiB9CiAK
LXZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdChKU1N0
cmluZ1JlZiByZXN1bHQpCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrU3BlZWNo
SW5wdXRSZXN1bHQoSlNTdHJpbmdSZWYgcmVzdWx0LCBKU1N0cmluZ1JlZiBsYW5ndWFnZSkKIHsK
ICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBzcGVlY2ggaW5wdXQgbGF5b3V0IHRlc3RzLgog
ICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk0ODUu
CkBAIC01MjgsNCArNTI4LDMgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IExheW91dFRlc3RD
b250cm9sbGVyOjpwYWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVscyhpbnQgcGEKICAgICAvLyBGSVhN
RTogSW1wbGVtZW50CiAgICAgcmV0dXJuIDA7CiB9Ci0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71487</attachid>
            <date>2010-10-21 14:05:36 -0700</date>
            <delta_ts>2010-10-22 03:08:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47089-20101021220534.patch</filename>
            <type>text/plain</type>
            <size>46968</size>
            <attacher name="Leandro Graciá Gil">leandrogracia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0NjI5ODI5ODQ1NWJlNTMxODY2YmRmYmUwODMxOTllNzYzOTg3MmRiLi4wMWU4MjE5
NjVhZmQyMDdjNjgxZTY0ZTdmYjY1YjY2YWMzYTI2ZDNlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAK
KzIwMTAtMTAtMjEgIExlYW5kcm8gR3JhY2lhIEdpbCAgPGxlYW5kcm9ncmFjaWFAZ29vZ2xlLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBKZXJlbXkgT3Jsb3cuCisKKyAgICAgICAgQWRkZWQg
YSBsYXlvdXQgdGVzdCBmb3IgdGhlIGxhbmd1YWdlIHRhZyBpbiBzcGVlY2ggaW5wdXQuIFVwZGF0
ZWQKKyAgICAgICAgdGhlIHNwZWVjaCBidXR0b24gdGVzdHMgdG8gaW5jbHVkZSB0aGUgbmV3IGxh
bmd1YWdlIHBhcmFtZXRlciBpbiB0aGUKKyAgICAgICAgbW9jayByZXN1bHQuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzA4OQorCisgICAgICAgICog
ZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1sYW5ndWFnZS10YWctZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L3NwZWVjaC9pbnB1dC10ZXh0LWxhbmd1YWdlLXRhZy5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L3NwZWVjaC9pbnB1dC10ZXh0LXNwZWVjaGJ1dHRvbi5odG1sOiBB
ZGRlZCBhbiBlbXB0eSBsYW5ndWFnZQorICAgICAgICAgIHBhcmFtZXRlci4KKyAgICAgICAgKiBm
YXN0L3NwZWVjaC9zcGVlY2gtYnV0dG9uLWlnbm9yZS1nZW5lcmF0ZWQtZXZlbnRzLmh0bWw6IEFk
ZGVkIGFuCisgICAgICAgICAgZW1wdHkgbGFuZ3VhZ2UgcGFyYW1ldGVyLgorICAgICAgICAqIHBs
YXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dDogbGFuZ3VhZ2UgdGFnIHRlc3Qg
aXMgZXhwZWN0ZWQKKyAgICAgICAgICB0byBmYWlsIHVudGlsIHRoZSBjaHJvbWl1bS1zaWRlIHBh
dGNoIGhhcyBiZWVuIGFwcGxpZWQuCisKIDIwMTAtMTAtMjEgIHRha2FubyB0YWt1bWkgIDx0YWth
bm8xQGFzaWEuYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhbiBCZXJuc3RlaW4u
CkBAIC0xMTY3LDI0ICsxMTg1LDYgQEAKIAogICAgICAgICAqIHBsYXRmb3JtL2d0ay9Ta2lwcGVk
OiBVbnNraXAgcGFzc2luZyB0ZXN0cy4KIAotMjAxMC0xMC0xOSAgTGVhbmRybyBHcmFjaWEgR2ls
ICA8bGVhbmRyb2dyYWNpYUBnb29nbGUuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEplcmVt
eSBPcmxvdy4KLQotICAgICAgICBBZGRlZCBhIGxheW91dCB0ZXN0IGZvciB0aGUgbGFuZ3VhZ2Ug
dGFnIGluIHNwZWVjaCBpbnB1dC4gVXBkYXRlZAotICAgICAgICB0aGUgc3BlZWNoIGJ1dHRvbiB0
ZXN0cyB0byBpbmNsdWRlIHRoZSBuZXcgbGFuZ3VhZ2UgcGFyYW1ldGVyIGluIHRoZQotICAgICAg
ICBtb2NrIHJlc3VsdC4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQ3MDg5Ci0KLSAgICAgICAgKiBmYXN0L3NwZWVjaC9pbnB1dC10ZXh0LWxhbmd1YWdl
LXRhZy1leHBlY3RlZC50eHQ6IEFkZGVkLgotICAgICAgICAqIGZhc3Qvc3BlZWNoL2lucHV0LXRl
eHQtbGFuZ3VhZ2UtdGFnLmh0bWw6IEFkZGVkLgotICAgICAgICAqIGZhc3Qvc3BlZWNoL2lucHV0
LXRleHQtc3BlZWNoYnV0dG9uLmh0bWw6IEFkZGVkIGFuIGVtcHR5IGxhbmd1YWdlCi0gICAgICAg
ICAgcGFyYW1ldGVyLgotICAgICAgICAqIGZhc3Qvc3BlZWNoL3NwZWVjaC1idXR0b24taWdub3Jl
LWdlbmVyYXRlZC1ldmVudHMuaHRtbDogQWRkZWQgYW4KLSAgICAgICAgICBlbXB0eSBsYW5ndWFn
ZSBwYXJhbWV0ZXIuCi0gICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlv
bnMudHh0OiBsYW5ndWFnZSB0YWcgdGVzdCBpcyBleHBlY3RlZAotICAgICAgICAgIHRvIGZhaWwg
dW50aWwgdGhlIGNocm9taXVtLXNpZGUgcGF0Y2ggaGFzIGJlZW4gYXBwbGllZC4KLQogMjAxMC0x
MC0xOSAgQW50b25pbyBHb21lcyAgPGFnb21lc0ByaW0uY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1sYW5ndWFnZS10YWctZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1sYW5ndWFnZS10YWctZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjkxZjMwZDY5NmY1ZDI1MGYxNGFmNTZiOTliNGU3MGM4NzljMGU1MDIKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9pbnB1dC10ZXh0LWxhbmd1YWdl
LXRhZy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMyBAQAorVGVzdHMgZm9yIGxhbmd1YWdlIHRh
ZyBpbmhlcml0YW5jZSBhbmQgdmFsaWRhdGlvbiBpbiBzcGVlY2ggYnV0dG9ucy4KKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNw
ZWVjaElucHV0Tm9uZSIpLnZhbHVlIGlzICJlcnJvcjogbm8gcmVzdWx0IGZvdW5kIGZvciBsYW5n
dWFnZSAnJyIKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNwZWVjaElucHV0RWxlbWVu
dCIpLnZhbHVlIGlzICJQaWN0dXJlcyBvZiB0aGUgbW9vbiIKK1BBU1MgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInNwZWVjaElucHV0SW5oZXJpdGVkIikudmFsdWUgaXMgIuaciOOBruWGmeecnyIK
K1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNwZWVjaElucHV0SW52YWxpZCIpLnZhbHVl
IGlzICJlcnJvcjogbm8gcmVzdWx0IGZvdW5kIGZvciBsYW5ndWFnZSAnJyIKK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1sYW5ndWFnZS10YWcuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3Qvc3BlZWNoL2lucHV0LXRleHQtbGFuZ3VhZ2UtdGFnLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOWJmYzgyMjYyZWUzMGEyYzVmYTVlMjU4MTYxZWE4YTFlMThlNjVhZgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL2lucHV0LXRleHQtbGFuZ3VhZ2UtdGFnLmh0
bWwKQEAgLTAsMCArMSw2MiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQg
SFRNTC8vRU4iPgorPGh0bWw+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8aGVhZD4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ij4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorZGVzY3JpcHRp
b24oJ1Rlc3RzIGZvciBsYW5ndWFnZSB0YWcgaW5oZXJpdGFuY2UgYW5kIHZhbGlkYXRpb24gaW4g
c3BlZWNoIGJ1dHRvbnMuJyk7CisKKy8vIE5vdGU6IHRlc3QgY2FzZXMgYXJlIHNlcXVlbnRpYWwg
dG8gZW5zdXJlIHRoYXQgbm8gbmV3IHJlY29nbml0aW9uIHN0YXJ0cyB3aGVuIGFub3RoZXIgcmVj
b2duaXRpb24gcmVjb3JkaW5nIGlzIGFjdGl2ZS4KK2Z1bmN0aW9uIG9uQ2hhbmdlTm9uZSgpIHsK
KyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzcGVl
Y2hJbnB1dE5vbmUiKS52YWx1ZScsICdlcnJvcjogbm8gcmVzdWx0IGZvdW5kIGZvciBsYW5ndWFn
ZSBcJ1wnJyk7CisgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc3BlZWNoQnV0dG9uQ2xpY2so
J3NwZWVjaElucHV0RWxlbWVudCcpOyB9LCA1MCk7Cit9CisKK2Z1bmN0aW9uIG9uQ2hhbmdlRWxl
bWVudCgpIHsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2RvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJzcGVlY2hJbnB1dEVsZW1lbnQiKS52YWx1ZScsICdQaWN0dXJlcyBvZiB0aGUgbW9vbicp
OworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNwZWVjaEJ1dHRvbkNsaWNrKCdzcGVlY2hJ
bnB1dEluaGVyaXRlZCcpOyB9LCA1MCk7Cit9CisKK2Z1bmN0aW9uIG9uQ2hhbmdlSW5oZXJpdGVk
KCkgeworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InNwZWVjaElucHV0SW5oZXJpdGVkIikudmFsdWUnLCAn5pyI44Gu5YaZ55yfJyk7CisgICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsgc3BlZWNoQnV0dG9uQ2xpY2soJ3NwZWVjaElucHV0SW52YWxp
ZCcpOyB9LCA1MCk7Cit9CisKK2Z1bmN0aW9uIG9uQ2hhbmdlSW52YWxpZCgpIHsKKyAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoJ2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzcGVlY2hJbnB1dElu
dmFsaWQiKS52YWx1ZScsICdlcnJvcjogbm8gcmVzdWx0IGZvdW5kIGZvciBsYW5ndWFnZSBcJ1wn
Jyk7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK2Z1bmN0aW9uIHNwZWVjaEJ1dHRvbkNsaWNr
KGVsZW1lbnRJZCkgeworICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ZWxlbWVudElkKTsKKyAgICB2YXIgeCA9IGVsZW1lbnQub2Zmc2V0TGVmdCArIGVsZW1lbnQub2Zm
c2V0V2lkdGggLSA0OworICAgIHZhciB5ID0gZWxlbWVudC5vZmZzZXRUb3AgKyBlbGVtZW50Lm9m
ZnNldEhlaWdodCAvIDI7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAg
ZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworfQor
CitmdW5jdGlvbiBydW4oKSB7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlciAm
JiB3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0
TW9ja1NwZWVjaElucHV0UmVzdWx0KCdQaWN0dXJlcyBvZiB0aGUgbW9vbicsICdlbi1HQicpOwor
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoJ+ac
iOOBruWGmeecnycsICdqYScpOworICAgICAgICBzcGVlY2hCdXR0b25DbGljaygnc3BlZWNoSW5w
dXROb25lJyk7CisgICAgfQorfQorCit3aW5kb3cub25sb2FkID0gcnVuOword2luZG93LmpzVGVz
dElzQXN5bmMgPSB0cnVlOword2luZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KKzxpbnB1dCBpZD0ic3BlZWNoSW5wdXROb25lIiB4LXdlYmtpdC1zcGVlY2ggb253ZWJr
aXRzcGVlY2hjaGFuZ2U9Im9uQ2hhbmdlTm9uZSgpIj4KKzxpbnB1dCBpZD0ic3BlZWNoSW5wdXRF
bGVtZW50IiB4LXdlYmtpdC1zcGVlY2ggb253ZWJraXRzcGVlY2hjaGFuZ2U9Im9uQ2hhbmdlRWxl
bWVudCgpIiBsYW5nPSJlbi1HQiI+Cis8ZGl2IGxhbmc9ImphIj4gPGlucHV0IGlkPSJzcGVlY2hJ
bnB1dEluaGVyaXRlZCIgeC13ZWJraXQtc3BlZWNoIG9ud2Via2l0c3BlZWNoY2hhbmdlPSJvbkNo
YW5nZUluaGVyaXRlZCgpIj4gPC9kaXY+Cis8aW5wdXQgaWQ9InNwZWVjaElucHV0SW52YWxpZCIg
eC13ZWJraXQtc3BlZWNoIG9ud2Via2l0c3BlZWNoY2hhbmdlPSJvbkNoYW5nZUludmFsaWQoKSIg
bGFuZz0iMTMzNyTDvjPOu2siPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1zcGVlY2hidXR0b24uaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3Qvc3BlZWNoL2lucHV0LXRleHQtc3BlZWNoYnV0dG9uLmh0bWwKaW5kZXggNmY1YmM0
YjEyMWZiNGY5ZDlkZGE2YzMzMWY4YjI2ZGMxY2Q0Mzk5NC4uY2VmNzcwNTZiMTdkMWNkNDUxYjQ5
MGI3YzFmMjQ2YmE2Yzg5NTBkYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gv
aW5wdXQtdGV4dC1zcGVlY2hidXR0b24uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVj
aC9pbnB1dC10ZXh0LXNwZWVjaGJ1dHRvbi5odG1sCkBAIC0zMiw3ICszMiw3IEBAIGZ1bmN0aW9u
IG9uV2Via2l0U3BlZWNoQ2hhbmdlKCkgewogCiBmdW5jdGlvbiBydW4oKSB7CiAgICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlciAmJiB3aW5kb3cuZXZlbnRTZW5kZXIpIHsKLSAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KCdQaWN0dXJl
cyBvZiB0aGUgbW9vbicpOworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRNb2NrU3Bl
ZWNoSW5wdXRSZXN1bHQoJ1BpY3R1cmVzIG9mIHRoZSBtb29uJywgJycpOwogCiAgICAgICAgIC8v
IENsaWNraW5nIHRoZSBzcGVlY2ggYnV0dG9uIHNob3VsZCBmaWxsIGluIG1vY2sgc3BlZWNoLXJl
Y29nbml6ZWQgdGV4dC4KICAgICAgICAgdmFyIGlucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ3NwZWVjaElucHV0Jyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9z
cGVlY2gtYnV0dG9uLWlnbm9yZS1nZW5lcmF0ZWQtZXZlbnRzLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L3NwZWVjaC9zcGVlY2gtYnV0dG9uLWlnbm9yZS1nZW5lcmF0ZWQtZXZlbnRzLmh0bWwKaW5k
ZXggYjliOGVjMzY2MDU1NzlmMmIxMjZkNmYxZGEzNTYwYzY3MmFkMmI3MS4uYzY4NDg2Mzc3MDUz
Mzk5YjI5ZDA0ZmMyOTkwN2U1NWU4YWJmMDYwOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFz
dC9zcGVlY2gvc3BlZWNoLWJ1dHRvbi1pZ25vcmUtZ2VuZXJhdGVkLWV2ZW50cy5odG1sCisrKyBi
L0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL3NwZWVjaC1idXR0b24taWdub3JlLWdlbmVyYXRlZC1l
dmVudHMuaHRtbApAQCAtNDksNyArNDksNyBAQCBmdW5jdGlvbiBzZXR1cERpc3BhdGNoRXZlbnRU
ZXN0KCkgewogZnVuY3Rpb24gcnVuKCkgewogICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIgJiYgd2luZG93LmV2ZW50U2VuZGVyKSB7CiAgICAgICAgIC8vIFJ1bm5pbmcgaW4gRFJU
LCB0ZXN0IHRoZSBldmVudFNlbmRlciBjYXNlLgotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5zZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoJ1BpY3R1cmVzIG9mIHRoZSBtb29uJyk7CisgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdCgnUGljdHVy
ZXMgb2YgdGhlIG1vb24nLCAnJyk7CiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdz
cGVlY2hJbnB1dCcpLm9ud2Via2l0c3BlZWNoY2hhbmdlID0gZnVuY3Rpb24oKSB7CiAgICAgICAg
ICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzcGVl
Y2hJbnB1dCIpLnZhbHVlJywgJ1BpY3R1cmVzIG9mIHRoZSBtb29uJyk7CiAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dCBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAppbmRleCAy
YzkwYTVmNWRlOGIwMGFjNmRmZGYyYmZmMTgzNTBhZjAxOTBjYjVkLi40ZGUxMjMwNzhjMWE1YTFm
MGUyNGY0ZmRlMzQ3YWYxMzkxZWI5MWVmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CkBAIC0zMjQzLDMgKzMyNDMsNiBAQCBC
VUdKQVBIRVQgOiBmYXN0L2pzL2RhdGUtcGFyc2UtdGVzdC5odG1sID0gVEVYVAogCiAvLyBBZGRl
ZCBpbiBXZWJLaXQgcjcwMTkwCiBCVUdXSzQ4MDM0IDogcGx1Z2lucy9wYXNzLWRpZmZlcmVudC1u
cHAtc3RydWN0Lmh0bWwgPSBURVhUCisKKy8vIFRlbXBvcmFyaWx5IGRpc2FibGVkIGZvciBhIDQt
c2lkZWQgcGF0Y2guIFdpbGwgYmUgZW5hYmxlZCBhZ2FpbiBieSBCVUdXSzQ3NDIwLgorQlVHV0s0
NzA4OSA6IGZhc3Qvc3BlZWNoL2lucHV0LXRleHQtbGFuZ3VhZ2UtdGFnLmh0bWwgPSBGQUlMCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGM0
NjU0Yzc2NmQzMjRjOGFkMjEwYWIxMDNhMzY2NzkyMDE0Njc4Y2IuLjYwZDg4ZDU3YmEzNTM5Yzdk
YTBmZDEwNzg4NGZiOWFiZjBmNWFmMDYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMTAtMTAtMjEgIExlYW5k
cm8gR3JhY2lhIEdpbCAgPGxlYW5kcm9ncmFjaWFAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBKZXJlbXkgT3Jsb3cuCisKKyAgICAgICAgUGF0Y2ggdGhlIGN1cnJlbnQgc3BlZWNo
IGlucHV0IGltcGxlbWVudGF0aW9uIHRvIHVzZSBhbmQgdmFsaWRhdGUgdGhlCisgICAgICAgIG5l
YXJlc3QgbGFuZ3VhZ2UgdGFnLiBUaGUgbGFuZ3VhZ2UgaXMgbm93IHBhc3NlZCB0byB0aGUgc3Rh
cnRSZWNvZ25pdGlvbgorICAgICAgICBtZXRob2RzIHNvIHRoYXQgbGFuZ3VhZ2Utc3BlY2lmaWMg
cmVjb2duaXRpb24gY291bGQgYmUgdXNlZC4gQWxzbyBhZGRlZAorICAgICAgICBhIHNlY29uZCBw
YXJhbWV0ZXIgdG8gc2V0TW9ja1NwZWVjaElucHV0UmVzdWx0IGZvciB0aGUgbGFuZ3VhZ2UgdXNl
ZCBpbgorICAgICAgICBzcGVlY2ggcmVjb2duaXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzA4OQorCisgICAgICAgIFRoaXMgaXMgdGhlIDJu
ZCBvZiBhIDQtc2lkZWQgcGF0Y2ggaW4gQ2hyb21pdW0gYW5kIFdlYktpdC4gRm9yIG1vcmUKKyAg
ICAgICAgZGV0YWlscyBzZWUgaHR0cDovL2NvZGVyZXZpZXcuY2hyb21pdW0ub3JnLzM2MTUwMDUv
c2hvdyBhbmQKKyAgICAgICAgaHR0cDovL2NvZGVyZXZpZXcuY2hyb21pdW0ub3JnLzM1OTUwMTgv
c2hvdy4KKworICAgICAgICBUZXN0OiBmYXN0L3NwZWVjaC9pbnB1dC10ZXh0LWxhbmd1YWdlLXRh
Zy5odG1sCisKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50Ojpjb21wdXRlSW5oZXJpdGVkTGFuZ3VhZ2UpOiBpbmNsdWRlcyBhIGJyaWVmIGNoYXJh
Y3RlcgorICAgICAgICAgIHZhbGlkYXRpb24gZm9yIHRoZSBCQ1AgNDcgbGFuZ3VhZ2UgdGFnLgor
ICAgICAgICAqIHBhZ2UvU3BlZWNoSW5wdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNo
SW5wdXQ6OnN0YXJ0UmVjb2duaXRpb24pOgorICAgICAgICAqIHBhZ2UvU3BlZWNoSW5wdXQuaDoK
KyAgICAgICAgKiBwYWdlL1NwZWVjaElucHV0Q2xpZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0v
bW9jay9TcGVlY2hJbnB1dENsaWVudE1vY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNo
SW5wdXRDbGllbnRNb2NrOjpzdGFydFJlY29nbml0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNw
ZWVjaElucHV0Q2xpZW50TW9jazo6c2V0UmVjb2duaXRpb25SZXN1bHQpOiByZXN1bHRzIGFyZSBu
b3cKKyAgICAgICAgICBzdG9yZWQgYnkgbGFuZ3VhZ2UgdXNpbmcgYSBoYXNoIG1hcC4KKyAgICAg
ICAgKFdlYkNvcmU6OlNwZWVjaElucHV0Q2xpZW50TW9jazo6dGltZXJGaXJlZCk6CisgICAgICAg
ICogcGxhdGZvcm0vbW9jay9TcGVlY2hJbnB1dENsaWVudE1vY2suaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRDb250cm9sSW5uZXJFbGVtZW50OjphdHRhY2hJbm5lckVsZW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6U2VhcmNoRmllbGRDYW5jZWxCdXR0b25FbGVtZW50OjpkZXRhY2gpOgorICAgICAgICAo
V2ViQ29yZTo6U3BpbkJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhh
bmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQ6
OmRldGFjaCk6CisKIDIwMTAtMTAtMjAgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgpAQCAtMTI0OSw0MyArMTI4Niw2
IEBACiAgICAgICAgIChXZWJDb3JlOjpJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudDo6ZGVm
YXVsdEV2ZW50SGFuZGxlcik6CiAgICAgICAgIChXZWJDb3JlOjpJbnB1dEZpZWxkU3BlZWNoQnV0
dG9uRWxlbWVudDo6ZGV0YWNoKToKIAotMjAxMC0xMC0xOSAgTGVhbmRybyBHcmFjaWEgR2lsICA8
bGVhbmRyb2dyYWNpYUBnb29nbGUuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEplcmVteSBP
cmxvdy4KLQotICAgICAgICBQYXRjaCB0aGUgY3VycmVudCBzcGVlY2ggaW5wdXQgaW1wbGVtZW50
YXRpb24gdG8gdXNlIGFuZCB2YWxpZGF0ZSB0aGUKLSAgICAgICAgbmVhcmVzdCBsYW5ndWFnZSB0
YWcuIFRoZSBsYW5ndWFnZSBpcyBub3cgcGFzc2VkIHRvIHRoZSBzdGFydFJlY29nbml0aW9uCi0g
ICAgICAgIG1ldGhvZHMgc28gdGhhdCBsYW5ndWFnZS1zcGVjaWZpYyByZWNvZ25pdGlvbiBjb3Vs
ZCBiZSB1c2VkLiBBbHNvIGFkZGVkCi0gICAgICAgIGEgc2Vjb25kIHBhcmFtZXRlciB0byBzZXRN
b2NrU3BlZWNoSW5wdXRSZXN1bHQgZm9yIHRoZSBsYW5ndWFnZSB1c2VkIGluCi0gICAgICAgIHNw
ZWVjaCByZWNvZ25pdGlvbi4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQ3MDg5Ci0KLSAgICAgICAgVGhpcyBpcyB0aGUgMm5kIG9mIGEgNC1zaWRlZCBw
YXRjaCBpbiBDaHJvbWl1bSBhbmQgV2ViS2l0LiBGb3IgbW9yZQotICAgICAgICBkZXRhaWxzIHNl
ZSBodHRwOi8vY29kZXJldmlldy5jaHJvbWl1bS5vcmcvMzYxNTAwNS9zaG93IGFuZAotICAgICAg
ICBodHRwOi8vY29kZXJldmlldy5jaHJvbWl1bS5vcmcvMzU5NTAxOC9zaG93LgotCi0gICAgICAg
IFRlc3Q6IGZhc3Qvc3BlZWNoL2lucHV0LXRleHQtbGFuZ3VhZ2UtdGFnLmh0bWwKLQotICAgICAg
ICAqIGRvbS9FbGVtZW50LmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNvbXB1dGVJ
bmhlcml0ZWRMYW5ndWFnZSk6IGluY2x1ZGVzIGEgYnJpZWYgY2hhcmFjdGVyCi0gICAgICAgICAg
dmFsaWRhdGlvbiBmb3IgdGhlIEJDUCA0NyBsYW5ndWFnZSB0YWcuCi0gICAgICAgICogcGFnZS9T
cGVlY2hJbnB1dC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpTcGVlY2hJbnB1dDo6c3RhcnRSZWNv
Z25pdGlvbik6Ci0gICAgICAgICogcGFnZS9TcGVlY2hJbnB1dC5oOgotICAgICAgICAqIHBhZ2Uv
U3BlZWNoSW5wdXRDbGllbnQuaDoKLSAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0
Q2xpZW50TW9jay5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpTcGVlY2hJbnB1dENsaWVudE1vY2s6
OnN0YXJ0UmVjb2duaXRpb24pOgotICAgICAgICAoV2ViQ29yZTo6U3BlZWNoSW5wdXRDbGllbnRN
b2NrOjpzZXRSZWNvZ25pdGlvblJlc3VsdCk6IHJlc3VsdHMgYXJlIG5vdwotICAgICAgICAgIHN0
b3JlZCBieSBsYW5ndWFnZSB1c2luZyBhIGhhc2ggbWFwLgotICAgICAgICAoV2ViQ29yZTo6U3Bl
ZWNoSW5wdXRDbGllbnRNb2NrOjp0aW1lckZpcmVkKToKLSAgICAgICAgKiBwbGF0Zm9ybS9tb2Nr
L1NwZWVjaElucHV0Q2xpZW50TW9jay5oOgotICAgICAgICAqIHJlbmRlcmluZy9UZXh0Q29udHJv
bElubmVyRWxlbWVudHMuY3BwOgotICAgICAgICAoV2ViQ29yZTo6VGV4dENvbnRyb2xJbm5lckVs
ZW1lbnQ6OmF0dGFjaElubmVyRWxlbWVudCk6Ci0gICAgICAgIChXZWJDb3JlOjpTZWFyY2hGaWVs
ZENhbmNlbEJ1dHRvbkVsZW1lbnQ6OmRldGFjaCk6Ci0gICAgICAgIChXZWJDb3JlOjpTcGluQnV0
dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6Ci0gICAgICAgIChXZWJDb3JlOjpJbnB1
dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6Ci0gICAgICAg
IChXZWJDb3JlOjpJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudDo6ZGV0YWNoKToKLQogMjAx
MC0xMC0yMCAgRGlyayBTY2h1bHplICA8a3JpdEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IE5pa29sYXMgWmltbWVybWFubi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0VsZW1l
bnQuY3BwIGIvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggODNlMTI5ZThlMjhjZmE1MTBl
ZTBkODE1NmQyNDM4NWQxZTkzZGNmOS4uYzdkNDQyYWY5NjgwOTI2ZTRhMmNjNDFhNWY4NjZmOWRj
ZWY0NTRiMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvV2ViQ29y
ZS9kb20vRWxlbWVudC5jcHAKQEAgLTU2LDYgKzU2LDcgQEAKICNpbmNsdWRlICJTZXR0aW5ncy5o
IgogI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgogI2luY2x1ZGUgIlhNTE5hbWVzLmgiCisjaW5j
bHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAK
ICNpZiBFTkFCTEUoU1ZHKQpAQCAtMTQ3NCw2ICsxNDc1LDE1IEBAIEF0b21pY1N0cmluZyBFbGVt
ZW50Ojpjb21wdXRlSW5oZXJpdGVkTGFuZ3VhZ2UoKSBjb25zdAogICAgICAgICBuID0gbi0+cGFy
ZW50KCk7CiAgICAgfQogCisgICAgaWYgKCF2YWx1ZS5pc051bGwoKSAmJiAhdmFsdWUuaXNFbXB0
eSgpKSB7CisgICAgICAgIC8vIE9ubHkgQS1aYS16MC05IGFuZCAnLScgYXJlIGFsbG93ZWQgaW4g
dGhlIGxhbmd1YWdlIHRhZyAoc2VlIEJDUCA0NykKKyAgICAgICAgY29uc3QgY2hhciAqcCA9IHZh
bHVlLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpOworICAgICAgICBmb3IgKDsgKnAgIT0gJ1wwJzsg
KytwKSB7CisgICAgICAgICAgICBpZiAoIWlzQVNDSUlBbHBoYW51bWVyaWMoKnApICYmICpwICE9
ICctJykKKyAgICAgICAgICAgICAgICByZXR1cm4gQXRvbWljU3RyaW5nKCk7CisgICAgICAgIH0K
KyAgICB9CisKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFn
ZS9TcGVlY2hJbnB1dC5jcHAgYi9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXQuY3BwCmluZGV4IDIz
NDc5MWJjNGIxM2Y0M2RmOWQxNzM5ZDVkMjA1ZjlhYTI3ZTIwNzIuLmNjNWUwZjk3ZmJhYmY5YWZh
M2Y0MzU5YzcyNmJhYzg3ZTUzNDE4Y2YgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9TcGVlY2hJ
bnB1dC5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0LmNwcApAQCAtOTMsMTAgKzkz
LDEwIEBAIHZvaWQgU3BlZWNoSW5wdXQ6OnNldFJlY29nbml0aW9uUmVzdWx0KGludCBsaXN0ZW5l
cklkLCBjb25zdCBTdHJpbmcmIHJlc3VsdCkKICAgICAgICAgbV9saXN0ZW5lcnMuZ2V0KGxpc3Rl
bmVySWQpLT5zZXRSZWNvZ25pdGlvblJlc3VsdChsaXN0ZW5lcklkLCByZXN1bHQpOwogfQogCi1i
b29sIFNwZWVjaElucHV0OjpzdGFydFJlY29nbml0aW9uKGludCBsaXN0ZW5lcklkLCBjb25zdCBJ
bnRSZWN0JiBlbGVtZW50UmVjdCkKK2Jvb2wgU3BlZWNoSW5wdXQ6OnN0YXJ0UmVjb2duaXRpb24o
aW50IGxpc3RlbmVySWQsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UsIGNvbnN0IEludFJlY3QmIGVs
ZW1lbnRSZWN0KQogewogICAgIEFTU0VSVChtX2xpc3RlbmVycy5jb250YWlucyhsaXN0ZW5lcklk
KSk7Ci0gICAgcmV0dXJuIG1fY2xpZW50LT5zdGFydFJlY29nbml0aW9uKGxpc3RlbmVySWQsIGVs
ZW1lbnRSZWN0KTsKKyAgICByZXR1cm4gbV9jbGllbnQtPnN0YXJ0UmVjb2duaXRpb24obGlzdGVu
ZXJJZCwgbGFuZ3VhZ2UsIGVsZW1lbnRSZWN0KTsKIH0KIAogdm9pZCBTcGVlY2hJbnB1dDo6c3Rv
cFJlY29yZGluZyhpbnQgbGlzdGVuZXJJZCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9TcGVl
Y2hJbnB1dC5oIGIvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0LmgKaW5kZXggZDEwYjc4OWFhZDI3
MzllZGQzYmY0NTMwZTdjNmUwMGM0ZTJkYWU4YS4uOGI0MjZmNTYzMTM2ZWQ2NTFkZDY0NTZlODM1
YjRkNDQ1M2FiODAxMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0LmgKKysr
IGIvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0LmgKQEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgog
ICAgIHZvaWQgdW5yZWdpc3Rlckxpc3RlbmVyKGludCk7CiAKICAgICAvLyBNZXRob2RzIGludm9r
ZWQgYnkgdGhlIGlucHV0IGVsZW1lbnRzLgotICAgIGJvb2wgc3RhcnRSZWNvZ25pdGlvbihpbnQs
IGNvbnN0IEludFJlY3QmKTsKKyAgICBib29sIHN0YXJ0UmVjb2duaXRpb24oaW50LCBjb25zdCBT
dHJpbmcmLCBjb25zdCBJbnRSZWN0Jik7CiAgICAgdm9pZCBzdG9wUmVjb3JkaW5nKGludCk7CiAg
ICAgdm9pZCBjYW5jZWxSZWNvZ25pdGlvbihpbnQpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bh
Z2UvU3BlZWNoSW5wdXRDbGllbnQuaCBiL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dENsaWVudC5o
CmluZGV4IGQ1ZmRhMTdmYWEyY2Q3OTVhZjQ0ZjUzYTQ2ZmNiYTU5NzQxYWI3NmMuLmY1YWFiMDJh
NzY2MTY2MThhNjBjNzc0NGNiNDc0NjYzZGNiNTIyYjQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFn
ZS9TcGVlY2hJbnB1dENsaWVudC5oCisrKyBiL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dENsaWVu
dC5oCkBAIC0zMSw2ICszMSw4IEBACiAjaWZuZGVmIFNwZWVjaElucHV0Q2xpZW50X2gKICNkZWZp
bmUgU3BlZWNoSW5wdXRDbGllbnRfaAogCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKwogI2lm
IEVOQUJMRShJTlBVVF9TUEVFQ0gpCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ4LDcgKzUw
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRMaXN0ZW5lcihTcGVlY2hJbnB1dExp
c3RlbmVyKikgPSAwOwogCiAgICAgLy8gU3RhcnRzIHNwZWVjaCByZWNvZ25pdGlvbiBhbmQgYXVk
aW8gcmVjb3JkaW5nLgotICAgIHZpcnR1YWwgYm9vbCBzdGFydFJlY29nbml0aW9uKGludCByZXF1
ZXN0SWQsIGNvbnN0IEludFJlY3QmIGVsZW1lbnRSZWN0KSA9IDA7CisgICAgdmlydHVhbCBib29s
IHN0YXJ0UmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSwg
Y29uc3QgSW50UmVjdCYgZWxlbWVudFJlY3QpID0gMDsKIAogICAgIC8vIFN0b3BzIGF1ZGlvIHJl
Y29yZGluZyBhbmQgcGVyZm9ybXMgcmVjb2duaXRpb24gd2l0aCB0aGUgYXVkaW8gcmVjb3JkZWQg
dW50aWwgbm93CiAgICAgLy8gKGRvZXMgbm90IGRpc2NhcmQgYXVkaW8pLgpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xpZW50TW9jay5jcHAgYi9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svU3BlZWNoSW5wdXRDbGllbnRNb2NrLmNwcAppbmRleCA2YjY0OTQyZjE3
YjkyNWI0OWVmMDkyMTQ3YzBhMTZhMDdmMGQ3Y2NjLi5jMDQ5NzFlMGE5NDM4NTVhOGNmY2QxZDFj
MjQ1NjMyYmE4MjFiMTBhIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL21vY2svU3BlZWNo
SW5wdXRDbGllbnRNb2NrLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL21vY2svU3BlZWNoSW5w
dXRDbGllbnRNb2NrLmNwcApAQCAtMzUsNiArMzUsMTEgQEAKIAogI2luY2x1ZGUgIlNwZWVjaElu
cHV0TGlzdGVuZXIuaCIKIAorbmFtZXNwYWNlIHsKKyAgICAvLyBIYXNoTWFwIGRvZXNuJ3Qgc3Vw
cG9ydCBlbXB0eSBzdHJpbmdzIGFzIGtleXMsIHNvIHRoaXMgdmFsdWUgKGFuIGludmFsaWQgQkNQ
NDcgdGFnKSBpcyB1c2VkIGZvciB0aG9zZSBjYXNlcy4KKyAgICBjb25zdCBTdHJpbmcgZW1wdHlM
YW5ndWFnZSA9ICJfIjsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTcGVlY2hJbnB1dENs
aWVudE1vY2s6OlNwZWVjaElucHV0Q2xpZW50TW9jaygpCkBAIC01MCwxMiArNTUsMTMgQEAgdm9p
ZCBTcGVlY2hJbnB1dENsaWVudE1vY2s6OnNldExpc3RlbmVyKFNwZWVjaElucHV0TGlzdGVuZXIq
IGxpc3RlbmVyKQogICAgIG1fbGlzdGVuZXIgPSBsaXN0ZW5lcjsKIH0KIAotYm9vbCBTcGVlY2hJ
bnB1dENsaWVudE1vY2s6OnN0YXJ0UmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCwgY29uc3QgSW50
UmVjdCYpCitib29sIFNwZWVjaElucHV0Q2xpZW50TW9jazo6c3RhcnRSZWNvZ25pdGlvbihpbnQg
cmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlLCBjb25zdCBJbnRSZWN0JikKIHsKICAg
ICBpZiAobV90aW1lci5pc0FjdGl2ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgbV9y
ZXF1ZXN0SWQgPSByZXF1ZXN0SWQ7CiAgICAgbV9yZWNvcmRpbmcgPSB0cnVlOworICAgIG1fbGFu
Z3VhZ2UgPSBsYW5ndWFnZTsKICAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdCgwKTsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KQEAgLTgwLDkgKzg2LDEyIEBAIHZvaWQgU3BlZWNoSW5wdXRDbGllbnRNb2Nr
OjpjYW5jZWxSZWNvZ25pdGlvbihpbnQgcmVxdWVzdElkKQogICAgIH0KIH0KIAotdm9pZCBTcGVl
Y2hJbnB1dENsaWVudE1vY2s6OnNldFJlY29nbml0aW9uUmVzdWx0KGNvbnN0IFN0cmluZyYgcmVz
dWx0KQordm9pZCBTcGVlY2hJbnB1dENsaWVudE1vY2s6OnNldFJlY29nbml0aW9uUmVzdWx0KGNv
bnN0IFN0cmluZyYgcmVzdWx0LCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlKQogewotICAgIG1fcmVj
b2duaXRpb25SZXN1bHQgPSByZXN1bHQ7CisgICAgaWYgKGxhbmd1YWdlLmlzRW1wdHkoKSkKKyAg
ICAgICAgbV9yZWNvZ25pdGlvblJlc3VsdC5zZXQoZW1wdHlMYW5ndWFnZSwgcmVzdWx0KTsKKyAg
ICBlbHNlCisgICAgICAgIG1fcmVjb2duaXRpb25SZXN1bHQuc2V0KGxhbmd1YWdlLCByZXN1bHQp
OwogfQogCiB2b2lkIFNwZWVjaElucHV0Q2xpZW50TW9jazo6dGltZXJGaXJlZChXZWJDb3JlOjpU
aW1lcjxTcGVlY2hJbnB1dENsaWVudE1vY2s+KikKQEAgLTkyLDcgKzEwMSwxNyBAQCB2b2lkIFNw
ZWVjaElucHV0Q2xpZW50TW9jazo6dGltZXJGaXJlZChXZWJDb3JlOjpUaW1lcjxTcGVlY2hJbnB1
dENsaWVudE1vY2s+KikKICAgICAgICAgbV9saXN0ZW5lci0+ZGlkQ29tcGxldGVSZWNvcmRpbmco
bV9yZXF1ZXN0SWQpOwogICAgICAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdCgwKTsKICAgICB9IGVs
c2UgewotICAgICAgICBtX2xpc3RlbmVyLT5zZXRSZWNvZ25pdGlvblJlc3VsdChtX3JlcXVlc3RJ
ZCwgbV9yZWNvZ25pdGlvblJlc3VsdCk7CisgICAgICAgIFN0cmluZyBsYW5ndWFnZSA9IG1fbGFu
Z3VhZ2UuaXNFbXB0eSgpID8gU3RyaW5nKGVtcHR5TGFuZ3VhZ2UpIDogbV9sYW5ndWFnZTsKKyAg
ICAgICAgaWYgKCFtX3JlY29nbml0aW9uUmVzdWx0LmNvbnRhaW5zKGxhbmd1YWdlKSkgeworICAg
ICAgICAgICAgLy8gQ2FuJ3QgYXZvaWQgc2V0dGluZyBhIHJlc3VsdCBvbiBlbXB0eSBvciBpbnZh
bGlkIGxhbmd1YWdlIHN0cmluZ3MuCisgICAgICAgICAgICAvLyBUaGlzIHdvdWxkIGF2b2lkIGdl
bmVyYXRpbmcgdGhlIGV2ZW50cyB1c2VkIHRvIGNoZWNrIHRoZSByZXN1bHRzIGFuZCB0aGUgdGVz
dCB3b3VsZCB0aW1lb3V0LgorICAgICAgICAgICAgU3RyaW5nIGVycm9yKCJlcnJvcjogbm8gcmVz
dWx0IGZvdW5kIGZvciBsYW5ndWFnZSAnIik7CisgICAgICAgICAgICBlcnJvci5hcHBlbmQobV9s
YW5ndWFnZSk7CisgICAgICAgICAgICBlcnJvci5hcHBlbmQoIiciKTsKKyAgICAgICAgICAgIG1f
bGlzdGVuZXItPnNldFJlY29nbml0aW9uUmVzdWx0KG1fcmVxdWVzdElkLCBlcnJvcik7CisgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgbV9saXN0ZW5lci0+c2V0UmVjb2duaXRpb25SZXN1bHQo
bV9yZXF1ZXN0SWQsIG1fcmVjb2duaXRpb25SZXN1bHQuZ2V0KGxhbmd1YWdlKSk7CisKICAgICAg
ICAgbV9saXN0ZW5lci0+ZGlkQ29tcGxldGVSZWNvZ25pdGlvbihtX3JlcXVlc3RJZCk7CiAgICAg
ICAgIG1fcmVxdWVzdElkID0gMDsKICAgICB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svU3BlZWNoSW5wdXRDbGllbnRNb2NrLmggYi9XZWJDb3JlL3BsYXRmb3JtL21vY2svU3Bl
ZWNoSW5wdXRDbGllbnRNb2NrLmgKaW5kZXggY2U4M2QzYmI5Y2I4OGIwYTNhOTViNTQ5NTQyN2Qy
OTkxZjJlMGI0Zi4uM2NlOTg3YjgyM2NkMTk4MDI4NjY5Yzc3OWYzYzQ3OWM0NzNjYjdlZCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xpZW50TW9jay5oCisr
KyBiL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TcGVlY2hJbnB1dENsaWVudE1vY2suaApAQCAtMzQs
NiArMzQsOCBAQAogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiU3BlZWNo
SW5wdXRDbGllbnQuaCIKICNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiAjaWYgRU5BQkxFKElOUFVU
X1NQRUVDSCkKIApAQCAtNDYsMTEgKzQ4LDExIEBAIGNsYXNzIFNwZWVjaElucHV0Q2xpZW50TW9j
ayA6IHB1YmxpYyBTcGVlY2hJbnB1dENsaWVudCB7CiBwdWJsaWM6CiAgICAgU3BlZWNoSW5wdXRD
bGllbnRNb2NrKCk7CiAKLSAgICB2b2lkIHNldFJlY29nbml0aW9uUmVzdWx0KGNvbnN0IFN0cmlu
ZyYgcmVzdWx0KTsKKyAgICB2b2lkIHNldFJlY29nbml0aW9uUmVzdWx0KGNvbnN0IFN0cmluZyYg
cmVzdWx0LCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlKTsKIAogICAgIC8vIFNwZWVjaElucHV0Q2xp
ZW50IG1ldGhvZHMuCiAgICAgdm9pZCBzZXRMaXN0ZW5lcihTcGVlY2hJbnB1dExpc3RlbmVyKik7
Ci0gICAgYm9vbCBzdGFydFJlY29nbml0aW9uKGludCwgY29uc3QgSW50UmVjdCYpOworICAgIGJv
b2wgc3RhcnRSZWNvZ25pdGlvbihpbnQsIGNvbnN0IFN0cmluZyYsIGNvbnN0IEludFJlY3QmKTsK
ICAgICB2b2lkIHN0b3BSZWNvcmRpbmcoaW50KTsKICAgICB2b2lkIGNhbmNlbFJlY29nbml0aW9u
KGludCk7CiAKQEAgLTYxLDcgKzYzLDkgQEAgcHJpdmF0ZToKICAgICBUaW1lcjxTcGVlY2hJbnB1
dENsaWVudE1vY2s+IG1fdGltZXI7CiAgICAgU3BlZWNoSW5wdXRMaXN0ZW5lciogbV9saXN0ZW5l
cjsKICAgICBpbnQgbV9yZXF1ZXN0SWQ7Ci0gICAgU3RyaW5nIG1fcmVjb2duaXRpb25SZXN1bHQ7
CisKKyAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBtX3JlY29nbml0aW9uUmVzdWx0OworICAg
IFN0cmluZyBtX2xhbmd1YWdlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcCBiL1dl
YkNvcmUvcmVuZGVyaW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKaW5kZXggNWQ1Yjhi
MzBiNDExMDUyMGQxYTRkZTdiOGE3OWM0ODVkNzkzNjYwOC4uNjVkMGE2NDYwOWQyMDM0YjEwOTk1
MDNkMTY5MTUxYWJlNjZkYWEzZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dENv
bnRyb2xJbm5lckVsZW1lbnRzLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Q29udHJv
bElubmVyRWxlbWVudHMuY3BwCkBAIC0yMSw5ICsyMSw5IEBACiAgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCiAgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
Ci0gCisKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJUZXh0Q29udHJvbElubmVyRWxl
bWVudHMuaCIKIApAQCAtMTA3LDE4ICsxMDcsMTggQEAgdm9pZCBUZXh0Q29udHJvbElubmVyRWxl
bWVudDo6YXR0YWNoSW5uZXJFbGVtZW50KE5vZGUqIHBhcmVudCwgUGFzc1JlZlB0cjxSZW5kZXIK
ICAgICAgICAgc2V0UmVuZGVyZXIocmVuZGVyZXIpOwogICAgICAgICByZW5kZXJlci0+c2V0U3R5
bGUoc3R5bGUpOwogICAgIH0KLSAgICAKKwogICAgIC8vIFNldCB0aGVzZSBleHBsaWNpdGx5IHNp
bmNlIHRoaXMgbm9ybWFsbHkgaGFwcGVucyBkdXJpbmcgYW4gYXR0YWNoKCkKICAgICBzZXRBdHRh
Y2hlZCgpOwogICAgIHNldEluRG9jdW1lbnQoKTsKLSAgICAKKwogICAgIC8vIEZvciBlbGVtZW50
cyB3aXRob3V0IGEgc2hhZG93IHBhcmVudCwgYWRkIHRoZSBub2RlIHRvIHRoZSBET00gbm9ybWFs
bHkuCiAgICAgaWYgKCFtX3NoYWRvd1BhcmVudCkgewogICAgICAgICAvLyBGSVhNRTogVGhpcyBj
b2RlIHNlZW1zIHZlcnkgd3JvbmcuICBXaHkgYXJlIHdlIG1hZ2ljYWxseSBhZGRpbmcgfHRoaXN8
IHRvIHRoZSBET00gaGVyZT8KICAgICAgICAgLy8gICAgICAgIFdlIHNob3VsZG4ndCBiZSBjYWxs
aW5nIHBhcnNlciBBUEkgbWV0aG9kcyBvdXRzaWRlIG9mIHRoZSBwYXJzZXIhCiAgICAgICAgIHBh
cmVudC0+ZGVwcmVjYXRlZFBhcnNlckFkZENoaWxkKHRoaXMpOwogICAgIH0KLSAKKwogICAgIC8v
IEFkZCB0aGUgcmVuZGVyZXIgdG8gdGhlIHJlbmRlciB0cmVlCiAgICAgaWYgKHJlbmRlcmVyKQog
ICAgICAgICBwYXJlbnQtPnJlbmRlcmVyKCktPmFkZENoaWxkKHJlbmRlcmVyKTsKQEAgLTIwOCw3
ICsyMDgsNyBAQCB2b2lkIFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uRWxlbWVudDo6ZGV0YWNoKCkK
IHsKICAgICBpZiAobV9jYXB0dXJpbmcpIHsKICAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRv
Y3VtZW50KCktPmZyYW1lKCkpCi0gICAgICAgICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPnNl
dENhcHR1cmluZ01vdXNlRXZlbnRzTm9kZSgwKTsgICAgICAKKyAgICAgICAgICAgIGZyYW1lLT5l
dmVudEhhbmRsZXIoKS0+c2V0Q2FwdHVyaW5nTW91c2VFdmVudHNOb2RlKDApOwogICAgIH0KICAg
ICBUZXh0Q29udHJvbElubmVyRWxlbWVudDo6ZGV0YWNoKCk7CiB9CkBAIC0yODEsOSArMjgxLDkg
QEAgdm9pZCBTcGluQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZl
bnQpCiAgICAgaWYgKCFib3gpIHsKICAgICAgICAgaWYgKCFldmVudC0+ZGVmYXVsdEhhbmRsZWQo
KSkKICAgICAgICAgICAgIEhUTUxEaXZFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50
KTsKLSAgICAgICAgcmV0dXJuOyAgICAgICAgCisgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAg
CisKICAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dCA9IHN0YXRpY19jYXN0PEhUTUxJbnB1dEVs
ZW1lbnQqPihzaGFkb3dBbmNlc3Rvck5vZGUoKSk7CiAgICAgaWYgKGlucHV0LT5kaXNhYmxlZCgp
IHx8IGlucHV0LT5pc1JlYWRPbmx5Rm9ybUNvbnRyb2woKSkgewogICAgICAgICBpZiAoIWV2ZW50
LT5kZWZhdWx0SGFuZGxlZCgpKQpAQCAtNDMxLDcgKzQzMSw3IEBAIHZvaWQgSW5wdXRGaWVsZFNw
ZWVjaEJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogICAg
IGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50KSB7CiAgICAgICAg
IHN3aXRjaCAobV9zdGF0ZSkgewogICAgICAgICBjYXNlIElkbGU6Ci0gICAgICAgICAgICBpZiAo
c3BlZWNoSW5wdXQoKS0+c3RhcnRSZWNvZ25pdGlvbihtX2xpc3RlbmVySWQsIGlucHV0LT5yZW5k
ZXJlcigpLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpKSkKKyAgICAgICAgICAgIGlmIChzcGVl
Y2hJbnB1dCgpLT5zdGFydFJlY29nbml0aW9uKG1fbGlzdGVuZXJJZCwgaW5wdXQtPmNvbXB1dGVJ
bmhlcml0ZWRMYW5ndWFnZSgpLCBpbnB1dC0+cmVuZGVyZXIoKS0+YWJzb2x1dGVCb3VuZGluZ0Jv
eFJlY3QoKSkpCiAgICAgICAgICAgICAgICAgc2V0U3RhdGUoUmVjb3JkaW5nKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIFJlY29yZGluZzoKQEAgLTQ4Nyw3ICs0ODcsNyBAQCB2
b2lkIElucHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50OjpkZXRhY2goKQogewogICAgIGlmICht
X2NhcHR1cmluZykgewogICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQoKS0+ZnJh
bWUoKSkKLSAgICAgICAgICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+c2V0Q2FwdHVyaW5nTW91
c2VFdmVudHNOb2RlKDApOyAgICAgIAorICAgICAgICAgICAgZnJhbWUtPmV2ZW50SGFuZGxlcigp
LT5zZXRDYXB0dXJpbmdNb3VzZUV2ZW50c05vZGUoMCk7CiAgICAgfQogCiAgICAgaWYgKG1fc3Rh
dGUgIT0gSWRsZSkKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDAwZmEzNmQ0OTY5MmE0NGM0MzhlNmRlYTUwNjdk
Mjc2NDAyNWE1NzYuLjVmNzFiNmFhZmNmMzA0NTZjMDhmZGQ3MzVjOGJkYzI5MjNjMjg5ZmUgMTAw
NjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEwLTEwLTIxICBMZWFuZHJvIEdyYWNpYSBH
aWwgIDxsZWFuZHJvZ3JhY2lhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSmVy
ZW15IE9ybG93LgorIAorICAgICAgICBQYXRjaCB0aGUgY3VycmVudCBzcGVlY2ggaW5wdXQgaW1w
bGVtZW50YXRpb24gdG8gdXNlIGFuZCB2YWxpZGF0ZSB0aGUKKyAgICAgICAgbmVhcmVzdCBsYW5n
dWFnZSB0YWcuIFRoZSBsYW5ndWFnZSBpcyBub3cgcGFzc2VkIHRvIHRoZSBzdGFydFJlY29nbml0
aW9uCisgICAgICAgIG1ldGhvZHMgc28gdGhhdCBsYW5ndWFnZS1zcGVjaWZpYyByZWNvZ25pdGlv
biBjb3VsZCBiZSB1c2VkLiBBbHNvIGFkZGVkCisgICAgICAgIGEgc2Vjb25kIHBhcmFtZXRlciB0
byBzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQgZm9yIHRoZSBsYW5ndWFnZSB1c2VkIGluCisgICAg
ICAgIHNwZWVjaCByZWNvZ25pdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTQ3MDg5CisKKyAgICAgICAgVGhpcyBpcyB0aGUgMm5kIG9mIGEgNC1z
aWRlZCBwYXRjaCBpbiBDaHJvbWl1bSBhbmQgV2ViS2l0LiBGb3IgbW9yZQorICAgICAgICBkZXRh
aWxzIHNlZSBodHRwOi8vY29kZXJldmlldy5jaHJvbWl1bS5vcmcvMzYxNTAwNS9zaG93IGFuZAor
ICAgICAgICBodHRwOi8vY29kZXJldmlldy5jaHJvbWl1bS5vcmcvMzU5NTAxOC9zaG93LgorCisg
ICAgICAgICogcHVibGljL1dlYlNwZWVjaElucHV0Q29udHJvbGxlci5oOgorICAgICAgICAoV2Vi
S2l0OjpXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXI6OnN0YXJ0UmVjb2duaXRpb24pOgorICAgICAg
ICAqIHB1YmxpYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrLmg6CisgICAgICAgICogc3Jj
L1NwZWVjaElucHV0Q2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaElucHV0
Q2xpZW50SW1wbDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoSW5wdXRDbGllbnRJ
bXBsOjpzdGFydFJlY29nbml0aW9uKToKKyAgICAgICAgKiBzcmMvU3BlZWNoSW5wdXRDbGllbnRJ
bXBsLmg6CisgICAgICAgICogc3JjL1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OnNl
dE1vY2tSZWNvZ25pdGlvblJlc3VsdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaElucHV0
Q29udHJvbGxlck1vY2tJbXBsOjpzdGFydFJlY29nbml0aW9uKToKKyAgICAgICAgKiBzcmMvV2Vi
U3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGwuaDoKKyAgICAgICAgKiBzcmMvV2ViVmlld0lt
cGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwpOgorICAg
ICAgICAqIHNyYy9XZWJWaWV3SW1wbC5oOgorCiAyMDEwLTEwLTIxICBQYXZlbCBGZWxkbWFuICA8
cGZlbGRtYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFl1cnkgU2VtaWto
YXRza3kuCkBAIC0xMDMsMzYgKzEzMyw2IEBACiAgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBs
OjpXZWJWaWV3SW1wbCk6CiAgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmg6CiAKLTIwMTAtMTAt
MTkgIExlYW5kcm8gR3JhY2lhIEdpbCAgPGxlYW5kcm9ncmFjaWFAZ29vZ2xlLmNvbT4KLQotICAg
ICAgICBSZXZpZXdlZCBieSBKZXJlbXkgT3Jsb3cuCi0gCi0gICAgICAgIFBhdGNoIHRoZSBjdXJy
ZW50IHNwZWVjaCBpbnB1dCBpbXBsZW1lbnRhdGlvbiB0byB1c2UgYW5kIHZhbGlkYXRlIHRoZQot
ICAgICAgICBuZWFyZXN0IGxhbmd1YWdlIHRhZy4gVGhlIGxhbmd1YWdlIGlzIG5vdyBwYXNzZWQg
dG8gdGhlIHN0YXJ0UmVjb2duaXRpb24KLSAgICAgICAgbWV0aG9kcyBzbyB0aGF0IGxhbmd1YWdl
LXNwZWNpZmljIHJlY29nbml0aW9uIGNvdWxkIGJlIHVzZWQuIEFsc28gYWRkZWQKLSAgICAgICAg
YSBzZWNvbmQgcGFyYW1ldGVyIHRvIHNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdCBmb3IgdGhlIGxh
bmd1YWdlIHVzZWQgaW4KLSAgICAgICAgc3BlZWNoIHJlY29nbml0aW9uLgotICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDcwODkKLQotICAgICAgICBUaGlz
IGlzIHRoZSAybmQgb2YgYSA0LXNpZGVkIHBhdGNoIGluIENocm9taXVtIGFuZCBXZWJLaXQuIEZv
ciBtb3JlCi0gICAgICAgIGRldGFpbHMgc2VlIGh0dHA6Ly9jb2RlcmV2aWV3LmNocm9taXVtLm9y
Zy8zNjE1MDA1L3Nob3cgYW5kCi0gICAgICAgIGh0dHA6Ly9jb2RlcmV2aWV3LmNocm9taXVtLm9y
Zy8zNTk1MDE4L3Nob3cuCi0KLSAgICAgICAgKiBwdWJsaWMvV2ViU3BlZWNoSW5wdXRDb250cm9s
bGVyLmg6Ci0gICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaElucHV0Q29udHJvbGxlcjo6c3RhcnRS
ZWNvZ25pdGlvbik6Ci0gICAgICAgICogcHVibGljL1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1v
Y2suaDoKLSAgICAgICAgKiBzcmMvU3BlZWNoSW5wdXRDbGllbnRJbXBsLmNwcDoKLSAgICAgICAg
KFdlYktpdDo6U3BlZWNoSW5wdXRDbGllbnRJbXBsOjpjcmVhdGUpOgotICAgICAgICAoV2ViS2l0
OjpTcGVlY2hJbnB1dENsaWVudEltcGw6OnN0YXJ0UmVjb2duaXRpb24pOgotICAgICAgICAqIHNy
Yy9TcGVlY2hJbnB1dENsaWVudEltcGwuaDoKLSAgICAgICAgKiBzcmMvV2ViU3BlZWNoSW5wdXRD
b250cm9sbGVyTW9ja0ltcGwuY3BwOgotICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hJbnB1dENv
bnRyb2xsZXJNb2NrSW1wbDo6c2V0TW9ja1JlY29nbml0aW9uUmVzdWx0KToKLSAgICAgICAgKFdl
YktpdDo6V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OnN0YXJ0UmVjb2duaXRpb24p
OgotICAgICAgICAqIHNyYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbC5oOgotICAg
ICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6Ci0gICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBs
OjpXZWJWaWV3SW1wbCk6Ci0gICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmg6Ci0KIDIwMTAtMTAt
MjAgIERpcmsgU2NodWx6ZSAgPGtyaXRAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2Vk
IENocm9taXVtIHdpbiBidWlsZCBmaXguCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYlNwZWVjaElucHV0Q29udHJvbGxlci5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIuaAppbmRleCA1NDA4NzQxYTNjOTRkM2JmMWM1NDNkOTZl
OWZjMTZhNjM5MGRiMDJmLi4xZmRlMmE4ZTc3NGYzMmU1OGY4ODcyZjI0ODIyMjMwNTljODhjMTQ3
IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaElucHV0Q29udHJv
bGxlci5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoSW5wdXRDb250cm9s
bGVyLmgKQEAgLTM1LDYgKzM1LDcgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIFdl
YlN0cmluZzsKIHN0cnVjdCBXZWJSZWN0OwogCiAvLyBQcm92aWRlcyBhbiBlbWJlZGRlciBBUEkg
Y2FsbGVkIGJ5IFdlYktpdC4KQEAgLTQzLDcgKzQ0LDcgQEAgcHVibGljOgogICAgIC8vIFN0YXJ0
cyBzcGVlY2ggcmVjb2duaXRpb24uIFNwZWVjaCB3aWxsIGdldCByZWNvcmRlZCB1bnRpbCB0aGUg
ZW5kcG9pbnRlciBkZXRlY3RzIHNpbGVuY2UsCiAgICAgLy8gcnVucyB0byB0aGUgbGltaXQgb3Ig
c3RvcFJlY29yZGluZyBpcyBjYWxsZWQuIFByb2dyZXNzIGluZGljYXRpb25zIGFuZCB0aGUgcmVj
b2duaXplZAogICAgIC8vIHRleHQgYXJlIHJldHVybmVkIHZpYSB0aGUgbGlzdGVuZXIgaW50ZXJm
YWNlLgotICAgIHZpcnR1YWwgYm9vbCBzdGFydFJlY29nbml0aW9uKGludCByZXF1ZXN0SWQsIGNv
bnN0IFdlYlJlY3QmKQorICAgIHZpcnR1YWwgYm9vbCBzdGFydFJlY29nbml0aW9uKGludCByZXF1
ZXN0SWQsIGNvbnN0IFdlYlN0cmluZyYgbGFuZ3VhZ2UsIGNvbnN0IFdlYlJlY3QmIGVsZW1lbnRS
ZWN0KQogICAgIHsKICAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNw
ZWVjaElucHV0Q29udHJvbGxlck1vY2suaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3Bl
ZWNoSW5wdXRDb250cm9sbGVyTW9jay5oCmluZGV4IDlhMjYyMzVmZjZkNWRjY2JiZTI0NzI2MmFl
NDRhM2FjNzM5N2MzZjQuLmI0YzUwYTA1ZGNmNWExMmY4NDFiZjliNjc1NWNkMjg4MTdmOGMwOGIg
MTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoSW5wdXRDb250cm9s
bGVyTW9jay5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoSW5wdXRDb250
cm9sbGVyTW9jay5oCkBAIC00NCw2ICs0NCwxMCBAQCBwdWJsaWM6CiAgICAgICAgIFdlYlNwZWVj
aElucHV0TGlzdGVuZXIqIGxpc3RlbmVyKTsKICAgICB2aXJ0dWFsIH5XZWJTcGVlY2hJbnB1dENv
bnRyb2xsZXJNb2NrKCkgeyB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgc2V0TW9ja1JlY29nbml0aW9u
UmVzdWx0KGNvbnN0IFdlYlN0cmluZyYgcmVzdWx0LCBjb25zdCBXZWJTdHJpbmcmIGxhbmd1YWdl
KSA9IDA7CisKKyAgICAvLyBGSVhNRTogdGhpcyBpcyBhIGZpeCBmb3IgYSB0d28tc2lkZWQgcGF0
Y2guIERlbGV0ZSBhcyBzb29uIGFzIHRoZSBjaHJvbWl1bSBzaWRlIGlzIHBhdGNoZWQuCisgICAg
Ly8gQ2hyb21pdW0gcGF0Y2ggbm90IHVwbG9hZGVkIHlldCwgYnV0IHdpbGwgZGVwZW5kIG9uIGh0
dHA6Ly9jb2RlcmV2aWV3LmNocm9taXVtLm9yZy8zNjE1MDA1L3Nob3cgcGF0Y2guCiAgICAgdmly
dHVhbCB2b2lkIHNldE1vY2tSZWNvZ25pdGlvblJlc3VsdChjb25zdCBXZWJTdHJpbmcmIHJlc3Vs
dCkgPSAwOwogfTsKIApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9TcGVlY2hJbnB1
dENsaWVudEltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9TcGVlY2hJbnB1dENsaWVudElt
cGwuY3BwCmluZGV4IDk2M2Q0NDA1YTYyZDMyZTFhOGNlY2Q1NGMwOGM1YmJlYjNhNjJkY2EuLjEz
ODE5Mjk2M2I1NDMwNWM2YTM4M2E1MmVjMjM4Y2EwYzViMTA0Y2YgMTAwNjQ0Ci0tLSBhL1dlYktp
dC9jaHJvbWl1bS9zcmMvU3BlZWNoSW5wdXRDbGllbnRJbXBsLmNwcAorKysgYi9XZWJLaXQvY2hy
b21pdW0vc3JjL1NwZWVjaElucHV0Q2xpZW50SW1wbC5jcHAKQEAgLTMyLDE1ICszMiwyMSBAQAog
I2luY2x1ZGUgIlNwZWVjaElucHV0Q2xpZW50SW1wbC5oIgogCiAjaW5jbHVkZSAiUGxhdGZvcm1T
dHJpbmcuaCIKKyNpbmNsdWRlICJTcGVlY2hJbnB1dExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiV2Vi
U3BlZWNoSW5wdXRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCiAjaW5jbHVk
ZSAiV2ViVmlld0NsaWVudC5oIgotI2luY2x1ZGUgInBhZ2UvU3BlZWNoSW5wdXRMaXN0ZW5lci5o
IgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKICNpZiBFTkFCTEUoSU5QVVRfU1BFRUNI
KQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorUGFzc093blB0cjxTcGVlY2hJbnB1dENsaWVudElt
cGw+IFNwZWVjaElucHV0Q2xpZW50SW1wbDo6Y3JlYXRlKFdlYlZpZXdDbGllbnQqIGNsaWVudCkK
K3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IFNwZWVjaElucHV0Q2xpZW50SW1wbChjbGllbnQp
KTsKK30KKwogU3BlZWNoSW5wdXRDbGllbnRJbXBsOjpTcGVlY2hJbnB1dENsaWVudEltcGwoV2Vi
Vmlld0NsaWVudCogd2ViX3ZpZXdfY2xpZW50KQogICAgIDogbV9jb250cm9sbGVyKHdlYl92aWV3
X2NsaWVudCA/IHdlYl92aWV3X2NsaWVudC0+c3BlZWNoSW5wdXRDb250cm9sbGVyKHRoaXMpIDog
MCkKICAgICAsIG1fbGlzdGVuZXIoMCkKQEAgLTU2LDEwICs2MiwxMCBAQCB2b2lkIFNwZWVjaElu
cHV0Q2xpZW50SW1wbDo6c2V0TGlzdGVuZXIoV2ViQ29yZTo6U3BlZWNoSW5wdXRMaXN0ZW5lciog
bGlzdGVuZXIpCiAgICAgbV9saXN0ZW5lciA9IGxpc3RlbmVyOwogfQogCi1ib29sIFNwZWVjaElu
cHV0Q2xpZW50SW1wbDo6c3RhcnRSZWNvZ25pdGlvbihpbnQgcmVxdWVzdElkLCBjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JiBlbGVtZW50UmVjdCkKK2Jvb2wgU3BlZWNoSW5wdXRDbGllbnRJbXBsOjpz
dGFydFJlY29nbml0aW9uKGludCByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UsIGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmIGVsZW1lbnRSZWN0KQogewogICAgIEFTU0VSVChtX2xpc3Rl
bmVyKTsKLSAgICByZXR1cm4gbV9jb250cm9sbGVyLT5zdGFydFJlY29nbml0aW9uKHJlcXVlc3RJ
ZCwgZWxlbWVudFJlY3QpOworICAgIHJldHVybiBtX2NvbnRyb2xsZXItPnN0YXJ0UmVjb2duaXRp
b24ocmVxdWVzdElkLCBsYW5ndWFnZSwgZWxlbWVudFJlY3QpOwogfQogCiB2b2lkIFNwZWVjaElu
cHV0Q2xpZW50SW1wbDo6c3RvcFJlY29yZGluZyhpbnQgcmVxdWVzdElkKQpkaWZmIC0tZ2l0IGEv
V2ViS2l0L2Nocm9taXVtL3NyYy9TcGVlY2hJbnB1dENsaWVudEltcGwuaCBiL1dlYktpdC9jaHJv
bWl1bS9zcmMvU3BlZWNoSW5wdXRDbGllbnRJbXBsLmgKaW5kZXggODE3YjMyYjEyNDE0YjNhMDdk
ZmEzYWUzNTE5MDg3ZGVhNWEwZjczMy4uYzdkMWZhM2E2YzU4NTU3N2ZjOTQ1MmM0ZGJjZDVlODcw
ZmM4N2EzYSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9TcGVlY2hJbnB1dENsaWVu
dEltcGwuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1NwZWVjaElucHV0Q2xpZW50SW1wbC5o
CkBAIC0zMyw4ICszMywxNSBAQAogCiAjaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKIAorI2luY2x1
ZGUgIlNwZWVjaElucHV0Q2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViU3BlZWNoSW5wdXRMaXN0ZW5l
ci5oIgotI2luY2x1ZGUgInBhZ2UvU3BlZWNoSW5wdXRDbGllbnQuaCIKKyNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093
blB0ci5oPgorCituYW1lc3BhY2UgV1RGIHsKK2NsYXNzIFN0cmluZzsKK30KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgU3BlZWNoSW5wdXRMaXN0ZW5lcjsKQEAgLTQ5LDEyICs1NiwxMiBA
QCBjbGFzcyBTcGVlY2hJbnB1dENsaWVudEltcGwKICAgICA6IHB1YmxpYyBXZWJDb3JlOjpTcGVl
Y2hJbnB1dENsaWVudCwKICAgICAgIHB1YmxpYyBXZWJTcGVlY2hJbnB1dExpc3RlbmVyIHsKIHB1
YmxpYzoKLSAgICBTcGVlY2hJbnB1dENsaWVudEltcGwoV2ViVmlld0NsaWVudCopOworICAgIHN0
YXRpYyBQYXNzT3duUHRyPFNwZWVjaElucHV0Q2xpZW50SW1wbD4gY3JlYXRlKFdlYlZpZXdDbGll
bnQqKTsKICAgICB2aXJ0dWFsIH5TcGVlY2hJbnB1dENsaWVudEltcGwoKTsKIAogICAgIC8vIFNw
ZWVjaElucHV0Q2xpZW50IG1ldGhvZHMuCiAgICAgdm9pZCBzZXRMaXN0ZW5lcihXZWJDb3JlOjpT
cGVlY2hJbnB1dExpc3RlbmVyKik7Ci0gICAgYm9vbCBzdGFydFJlY29nbml0aW9uKGludCwgY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYpOworICAgIGJvb2wgc3RhcnRSZWNvZ25pdGlvbihpbnQsIGNv
bnN0IFN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKICAgICB2b2lkIHN0b3BSZWNv
cmRpbmcoaW50KTsKICAgICB2b2lkIGNhbmNlbFJlY29nbml0aW9uKGludCk7CiAKQEAgLTY0LDYg
KzcxLDggQEAgcHVibGljOgogICAgIHZvaWQgZGlkQ29tcGxldGVSZWNvZ25pdGlvbihpbnQpOwog
CiBwcml2YXRlOgorICAgIFNwZWVjaElucHV0Q2xpZW50SW1wbChXZWJWaWV3Q2xpZW50Kik7CisK
ICAgICBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIqIG1fY29udHJvbGxlcjsgLy8gVG8gY2FsbCBp
bnRvIHRoZSBlbWJlZGRlci4KICAgICBXZWJDb3JlOjpTcGVlY2hJbnB1dExpc3RlbmVyKiBtX2xp
c3RlbmVyOwogfTsKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3BlZWNoSW5w
dXRDb250cm9sbGVyTW9ja0ltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTcGVlY2hJ
bnB1dENvbnRyb2xsZXJNb2NrSW1wbC5jcHAKaW5kZXggNjBjNGZlZDg1MmIyODRlMDI3MWFkMDBl
ZDk3MTAwMmEyZjU3YTRiNi4uNDVjNmZmMDg2MmYwMjRmYzE4MDU3MzNjMTZhOTMzMDU3MzdhYzM5
MyAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xs
ZXJNb2NrSW1wbC5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTcGVlY2hJbnB1dENv
bnRyb2xsZXJNb2NrSW1wbC5jcHAKQEAgLTU3LDcgKzU3LDEyIEBAIFdlYlNwZWVjaElucHV0Q29u
dHJvbGxlck1vY2tJbXBsOjp+V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGwoKQogCiB2
b2lkIFdlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsOjpzZXRNb2NrUmVjb2duaXRpb25S
ZXN1bHQoY29uc3QgV2ViU3RyaW5nJiByZXN1bHQpCiB7Ci0gICAgbV93ZWJjb3JlTW9jay0+c2V0
UmVjb2duaXRpb25SZXN1bHQocmVzdWx0KTsKKyAgICBtX3dlYmNvcmVNb2NrLT5zZXRSZWNvZ25p
dGlvblJlc3VsdChyZXN1bHQsIFdlYlN0cmluZzo6ZnJvbVVURjgoIiIpKTsKK30KKwordm9pZCBX
ZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6c2V0TW9ja1JlY29nbml0aW9uUmVzdWx0
KGNvbnN0IFdlYlN0cmluZyYgcmVzdWx0LCBjb25zdCBXZWJTdHJpbmcgJmxhbmd1YWdlKQorewor
ICAgIG1fd2ViY29yZU1vY2stPnNldFJlY29nbml0aW9uUmVzdWx0KHJlc3VsdCwgbGFuZ3VhZ2Up
OwogfQogCiB2b2lkIFdlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsOjpkaWRDb21wbGV0
ZVJlY29yZGluZyhpbnQgcmVxdWVzdElkKQpAQCAtNzUsOSArODAsOSBAQCB2b2lkIFdlYlNwZWVj
aElucHV0Q29udHJvbGxlck1vY2tJbXBsOjpzZXRSZWNvZ25pdGlvblJlc3VsdChpbnQgcmVxdWVz
dElkLCBjb25zdAogICAgIG1fbGlzdGVuZXItPnNldFJlY29nbml0aW9uUmVzdWx0KHJlcXVlc3RJ
ZCwgcmVzdWx0KTsKIH0KIAotYm9vbCBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6
c3RhcnRSZWNvZ25pdGlvbihpbnQgcmVxdWVzdElkLCBjb25zdCBXZWJSZWN0JiBlbGVtZW50UmVj
dCkKK2Jvb2wgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OnN0YXJ0UmVjb2duaXRp
b24oaW50IHJlcXVlc3RJZCwgY29uc3QgV2ViU3RyaW5nJiBsYW5ndWFnZSwgY29uc3QgV2ViUmVj
dCYgZWxlbWVudFJlY3QpCiB7Ci0gICAgcmV0dXJuIG1fd2ViY29yZU1vY2stPnN0YXJ0UmVjb2du
aXRpb24ocmVxdWVzdElkLCBlbGVtZW50UmVjdCk7CisgICAgcmV0dXJuIG1fd2ViY29yZU1vY2st
PnN0YXJ0UmVjb2duaXRpb24ocmVxdWVzdElkLCBsYW5ndWFnZSwgZWxlbWVudFJlY3QpOwogfQog
CiB2b2lkIFdlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsOjpjYW5jZWxSZWNvZ25pdGlv
bihpbnQgcmVxdWVzdElkKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTcGVl
Y2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbC5oIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTcGVl
Y2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbC5oCmluZGV4IGVkYmZjYTNlZTYwZTkzOTQyODkzZTI3
MjE4OTNlNDNhMGViODdjNWYuLjFiMzA1M2JmMDkyNzUzZWY3OTI5M2RkY2ExMmU4NDM1MjA2YmRi
YzAgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3BlZWNoSW5wdXRDb250cm9s
bGVyTW9ja0ltcGwuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNwZWVjaElucHV0Q29u
dHJvbGxlck1vY2tJbXBsLmgKQEAgLTM3LDYgKzM3LDEwIEBACiAjaW5jbHVkZSAiV2ViU3RyaW5n
LmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogCituYW1lc3BhY2UgV1RGIHsKK2NsYXNzIFN0
cmluZzsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgU3BlZWNoSW5wdXRDbGllbnRN
b2NrOwogfQpAQCAtNTcsMTEgKzYxLDE1IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFJlY29nbml0
aW9uUmVzdWx0KGludCByZXF1ZXN0SWQsIGNvbnN0IFdURjo6U3RyaW5nJiByZXN1bHQpOwogCiAg
ICAgLy8gV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyIG1ldGhvZHMuCi0gICAgYm9vbCBzdGFydFJl
Y29nbml0aW9uKGludCByZXF1ZXN0SWQsIGNvbnN0IFdlYlJlY3QmIGVsZW1lbnRSZWN0KTsKKyAg
ICBib29sIHN0YXJ0UmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCwgY29uc3QgV2ViU3RyaW5nJiBs
YW5ndWFnZSwgY29uc3QgV2ViUmVjdCYgZWxlbWVudFJlY3QpOwogICAgIHZvaWQgY2FuY2VsUmVj
b2duaXRpb24oaW50IHJlcXVlc3RJZCk7CiAgICAgdm9pZCBzdG9wUmVjb3JkaW5nKGludCByZXF1
ZXN0SWQpOwogCiAgICAgLy8gV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9jayBtZXRob2RzLgor
ICAgIHZvaWQgc2V0TW9ja1JlY29nbml0aW9uUmVzdWx0KGNvbnN0IFdlYlN0cmluZyYgcmVzdWx0
LCBjb25zdCBXZWJTdHJpbmcmIGxhbmd1YWdlKTsKKworICAgIC8vIEZJWE1FOiB0aGlzIGlzIGEg
Zml4IGZvciBhIHR3by1zaWRlZCBwYXRjaC4gRGVsZXRlIGFzIHNvb24gYXMgdGhlIGNocm9taXVt
IHNpZGUgaXMgcGF0Y2hlZC4KKyAgICAvLyBDaHJvbWl1bSBwYXRjaCBub3QgdXBsb2FkZWQgeWV0
LCBidXQgd2lsbCBkZXBlbmQgb24gaHR0cDovL2NvZGVyZXZpZXcuY2hyb21pdW0ub3JnLzM2MTUw
MDUvc2hvdyBwYXRjaC4KICAgICB2b2lkIHNldE1vY2tSZWNvZ25pdGlvblJlc3VsdChjb25zdCBX
ZWJTdHJpbmcmIHJlc3VsdCk7CiAKIHByaXZhdGU6CkBAIC03Miw0ICs4MCwzIEBAIHByaXZhdGU6
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIFdlYlNwZWVjaElucHV0Q29udHJv
bGxlck1vY2tJbXBsX2gKLQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3
SW1wbC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCA5Mjlm
OTFhYmY0NDAxMWU1MGQzMzUyNDFmNTYxYjg2N2FmODhjNGZlLi43ZmM5ZWY3NjA0NzBiMzY1MmYz
YTM3YmQyODNhZDEzNmI4OTVkYmE3IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlZpZXdJbXBsLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApA
QCAtODgsNiArODgsNyBAQAogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAi
U2VsZWN0aW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCisjaW5jbHVkZSAi
U3BlZWNoSW5wdXRDbGllbnRJbXBsLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlICJU
eXBpbmdDb21tYW5kLmgiCiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3IuaCIKQEAgLTI4
Miw3ICsyODMsNyBAQCBXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwoV2ViVmlld0NsaWVudCogY2xp
ZW50LCBXZWJEZXZUb29sc0FnZW50Q2xpZW50KiBkZXZUb29scwogICAgICwgbV9jb21wb3NpdG9y
Q3JlYXRpb25GYWlsZWQoZmFsc2UpCiAjZW5kaWYKICNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQot
ICAgICwgbV9zcGVlY2hJbnB1dENsaWVudChjbGllbnQpCisgICAgLCBtX3NwZWVjaElucHV0Q2xp
ZW50KFNwZWVjaElucHV0Q2xpZW50SW1wbDo6Y3JlYXRlKGNsaWVudCkpCiAjZW5kaWYKICAgICAs
IG1fZGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eShuZXcgRGV2aWNlT3JpZW50YXRpb25DbGll
bnRQcm94eShjbGllbnQgPyBjbGllbnQtPmRldmljZU9yaWVudGF0aW9uQ2xpZW50KCkgOiAwKSkK
IHsKQEAgLTMwNSw3ICszMDYsNyBAQCBXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwoV2ViVmlld0Ns
aWVudCogY2xpZW50LCBXZWJEZXZUb29sc0FnZW50Q2xpZW50KiBkZXZUb29scwogICAgIHBhZ2VD
bGllbnRzLmRyYWdDbGllbnQgPSAmbV9kcmFnQ2xpZW50SW1wbDsKICAgICBwYWdlQ2xpZW50cy5p
bnNwZWN0b3JDbGllbnQgPSAmbV9pbnNwZWN0b3JDbGllbnRJbXBsOwogI2lmIEVOQUJMRShJTlBV
VF9TUEVFQ0gpCi0gICAgcGFnZUNsaWVudHMuc3BlZWNoSW5wdXRDbGllbnQgPSAmbV9zcGVlY2hJ
bnB1dENsaWVudDsKKyAgICBwYWdlQ2xpZW50cy5zcGVlY2hJbnB1dENsaWVudCA9IG1fc3BlZWNo
SW5wdXRDbGllbnQuZ2V0KCk7CiAjZW5kaWYKICAgICBwYWdlQ2xpZW50cy5kZXZpY2VPcmllbnRh
dGlvbkNsaWVudCA9IG1fZGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eS5nZXQoKTsKIApkaWZm
IC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oIGIvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJWaWV3SW1wbC5oCmluZGV4IDg0MTBlYmQ0ODUyMzBjMGVhZTE1YTVmYTFhNWNh
Y2M2ZTg4Y2Q0MTEuLjA1MDlkMDUwZGJhMWExNTA1MTE4ZTQ0NzY3YmQ3NGYzODBjMTQ0ZGQgMTAw
NjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAorKysgYi9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKQEAgLTQ5LDcgKzQ5LDYgQEAKICNpbmNsdWRlICJJ
bnRSZWN0LmgiCiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgiCiAjaW5jbHVkZSAi
Tm90aWZpY2F0aW9uUHJlc2VudGVySW1wbC5oIgotI2luY2x1ZGUgIlNwZWVjaElucHV0Q2xpZW50
SW1wbC5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgogCkBAIC03NCw2ICs3Myw3IEBAIGNsYXNzIEF1dG9GaWxsUG9wdXBNZW51Q2xpZW50Owog
Y2xhc3MgQ29udGV4dE1lbnVDbGllbnRJbXBsOwogY2xhc3MgRGV2aWNlT3JpZW50YXRpb25DbGll
bnRQcm94eTsKIGNsYXNzIERyYWdTY3JvbGxUaW1lcjsKK2NsYXNzIFNwZWVjaElucHV0Q2xpZW50
SW1wbDsKIGNsYXNzIFdlYkFjY2Vzc2liaWxpdHlPYmplY3Q7CiBjbGFzcyBXZWJEZXZUb29sc0Fn
ZW50Q2xpZW50OwogY2xhc3MgV2ViRGV2VG9vbHNBZ2VudFByaXZhdGU7CkBAIC01NDcsNyArNTQ3
LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3QgV2ViSW5wdXRFdmVudCogbV9jdXJyZW50
SW5wdXRFdmVudDsKIAogI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCi0gICAgU3BlZWNoSW5wdXRD
bGllbnRJbXBsIG1fc3BlZWNoSW5wdXRDbGllbnQ7CisgICAgT3duUHRyPFNwZWVjaElucHV0Q2xp
ZW50SW1wbD4gbV9zcGVlY2hJbnB1dENsaWVudDsKICNlbmRpZgogICAgIC8vIElmIHdlIGF0dGVt
cHQgdG8gZmV0Y2ggdGhlIG9uLXNjcmVlbiBHcmFwaGljc0NvbnRleHQzRCBiZWZvcmUKICAgICAv
LyB0aGUgY29tcG9zaXRvciBoYXMgYmVlbiB0dXJuZWQgb24sIHdlIG5lZWQgdG8gaW5zdGFudGlh
dGUgaXQKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0No
YW5nZUxvZwppbmRleCAwNDQzMjRkYjg0ZDRhYWFiNjFiN2Q1YWY1ZDVjMzA4MmVlY2E5ZGUxLi5j
Y2ZmZWVjM2I2OWRlNDQ5Y2U3Nzc5OGI2NTNkNjA0YTI4YjVhMjA2IDEwMDY0NAotLS0gYS9XZWJL
aXRUb29scy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjggQEAKKzIwMTAtMTAtMjEgIExlYW5kcm8gR3JhY2lhIEdpbCAgPGxlYW5kcm9ncmFjaWFAZ29v
Z2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBKZXJlbXkgT3Jsb3cuCisKKyAgICAgICAg
QWRkZWQgYSBzZWNvbmQgcGFyYW1ldGVyIHRvIHNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdCBmb3IK
KyAgICAgICAgdGhlIGxhbmd1YWdlIHVzZWQgaW4gc3BlZWNoIGlucHV0LgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDcwODkKKworICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKHNldE1vY2tT
cGVlY2hJbnB1dFJlc3VsdENhbGxiYWNrKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlv
dXRUZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xh
eW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpz
ZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2d0ay9M
YXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxl
cjo6c2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9t
YWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJv
bGxlcjo6c2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0Lmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
cXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJv
bGxlcjo6c2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENv
bnRyb2xsZXI6OnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdCk6CisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0
Q29udHJvbGxlcjo6c2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KToKKwogMjAxMC0xMC0yMCAgQWRh
bSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+CiAKICAgICAgICAgVGVzdCB0aGF0IHRoZSBVSSBj
bGllbnQgZ2V0cyBub3RpZmllZCB3aGVuIFdLVmlldyByZWNlaXZlcyBhIFdNX0NMT1NFCkBAIC0z
NzgsMjIgKzQwMyw2IEBACiAgICAgICAgICogRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RD
b250cm9sbGVyR3RrLmNwcDoKICAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2Nr
U3BlZWNoSW5wdXRSZXN1bHQpOgogCi0yMDEwLTEwLTE5ICBMZWFuZHJvIEdyYWNpYSBHaWwgIDxs
ZWFuZHJvZ3JhY2lhQGdvb2dsZS5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgSmVyZW15IE9y
bG93LgotCi0gICAgICAgIEFkZGVkIGEgc2Vjb25kIHBhcmFtZXRlciB0byBzZXRNb2NrU3BlZWNo
SW5wdXRSZXN1bHQgZm9yCi0gICAgICAgIHRoZSBsYW5ndWFnZSB1c2VkIGluIHNwZWVjaCBpbnB1
dC4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3MDg5
Ci0KLSAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6Ci0g
ICAgICAgIChzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHRDYWxsYmFjayk6Ci0gICAgICAgICogRHVt
cFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaDoKLSAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6Ci0gICAgICAgIChMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6c2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KToKLSAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwOgotICAgICAgICAoTGF5
b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdCk6Ci0KIDIwMTAtMTAt
MTkgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFRlYWNoIHVwZGF0
ZS13ZWJraXQtc3VwcG9ydC1saWJzIGFib3V0IHRoZSBuZXcgdmVyc2lvbmluZyBvZgpkaWZmIC0t
Z2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3Bw
IGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCmlu
ZGV4IGI1Y2M4NzQyMTViNDBmNTkwNzU1YTQwNDdlYmRkNWQ5ZjhlZDYyNzkuLmRiNDcwYzg2MjJj
MDNkYmE0YWQ4OTAxN2IwZWM5MjhiYmQ0YTM3YzEgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAorKysgYi9XZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKQEAgLTEwNzAsMTQgKzEwNzAs
MTcgQEAgc3RhdGljIEpTVmFsdWVSZWYgc2V0TW9ja0dlb2xvY2F0aW9uRXJyb3JDYWxsYmFjayhK
U0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3QKIAogc3RhdGljIEpTVmFsdWVSZWYgc2V0TW9j
a1NwZWVjaElucHV0UmVzdWx0Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0
UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3Vu
dCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQog
ewotICAgIGlmIChhcmd1bWVudENvdW50IDwgMSkKKyAgICBpZiAoYXJndW1lbnRDb3VudCA8IDIp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIAogICAgIEpT
UmV0YWluUHRyPEpTU3RyaW5nUmVmPiByZXN1bHQoQWRvcHQsIEpTVmFsdWVUb1N0cmluZ0NvcHko
Y29udGV4dCwgYXJndW1lbnRzWzBdLCBleGNlcHRpb24pKTsKICAgICBBU1NFUlQoISpleGNlcHRp
b24pOwogCisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGxhbmd1YWdlKEFkb3B0LCBKU1Zh
bHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIGFyZ3VtZW50c1sxXSwgZXhjZXB0aW9uKSk7CisgICAg
QVNTRVJUKCEqZXhjZXB0aW9uKTsKKwogICAgIExheW91dFRlc3RDb250cm9sbGVyKiBjb250cm9s
bGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xsZXIqPihKU09iamVjdEdldFByaXZh
dGUodGhpc09iamVjdCkpOwotICAgIGNvbnRyb2xsZXItPnNldE1vY2tTcGVlY2hJbnB1dFJlc3Vs
dChyZXN1bHQuZ2V0KCkpOworICAgIGNvbnRyb2xsZXItPnNldE1vY2tTcGVlY2hJbnB1dFJlc3Vs
dChyZXN1bHQuZ2V0KCksIGxhbmd1YWdlLmdldCgpKTsKIAogICAgIHJldHVybiBKU1ZhbHVlTWFr
ZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmggYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCmluZGV4IDY4OWUxMTQ1NzUwOGRmZmU3ZDg4N2JkZTE2
NDgyMTQwYmE3NWJjMWEuLjQ0MTBiZmQyY2FiZDIzMWI5NzFkMTk0ODA4YzZkZWYyYmYzZmFlNDYg
MTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9s
bGVyLmgKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xs
ZXIuaApAQCAtOTQsNyArOTQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRNb2NrRGV2aWNlT3Jp
ZW50YXRpb24oYm9vbCBjYW5Qcm92aWRlQWxwaGEsIGRvdWJsZSBhbHBoYSwgYm9vbCBjYW5Qcm92
aWRlQmV0YSwgZG91YmxlIGJldGEsIGJvb2wgY2FuUHJvdmlkZUdhbW1hLCBkb3VibGUgZ2FtbWEp
OwogICAgIHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IoaW50IGNvZGUsIEpTU3RyaW5nUmVm
IG1lc3NhZ2UpOwogICAgIHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oZG91YmxlIGxh
dGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJhY3kpOwotICAgIHZvaWQgc2V0
TW9ja1NwZWVjaElucHV0UmVzdWx0KEpTU3RyaW5nUmVmIHJlc3VsdCk7CisgICAgdm9pZCBzZXRN
b2NrU3BlZWNoSW5wdXRSZXN1bHQoSlNTdHJpbmdSZWYgcmVzdWx0LCBKU1N0cmluZ1JlZiBsYW5n
dWFnZSk7CiAgICAgdm9pZCBzZXRQZXJzaXN0ZW50VXNlclN0eWxlU2hlZXRMb2NhdGlvbihKU1N0
cmluZ1JlZiBwYXRoKTsKICAgICB2b2lkIHNldFBsdWdpbnNFbmFibGVkKGJvb2wgZmxhZyk7CiAg
ICAgdm9pZCBzZXRQb3B1cEJsb2NraW5nRW5hYmxlZChib29sIGZsYWcpOwpkaWZmIC0tZ2l0IGEv
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIu
Y3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRy
b2xsZXIuY3BwCmluZGV4IDgyZmQwODUxNjdkYjNlZWFiZDk1Y2RmNGM4MTcwZjdkZWNmZmExNzUu
LmQ5ZDgxODM1NmUzMzkwMWEyM2YxYjI1YjMzMjJmNjFiOTc2YmJiYzIgMTAwNjQ0Ci0tLSBhL1dl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNw
cAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29u
dHJvbGxlci5jcHAKQEAgLTE1MjYsMTAgKzE1MjYsMTAgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6YWJvcnRNb2RhbChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFy
aWEKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdChj
b25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQogewog
ICAgIHJlc3VsdC0+c2V0TnVsbCgpOwotICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpIDwgMSB8fCAh
YXJndW1lbnRzWzBdLmlzU3RyaW5nKCkpCisgICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgPCAyIHx8
ICFhcmd1bWVudHNbMF0uaXNTdHJpbmcoKSB8fCAhYXJndW1lbnRzWzFdLmlzU3RyaW5nKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIG1fc3BlZWNoSW5wdXRDb250cm9sbGVyTW9jay0+c2V0TW9j
a1JlY29nbml0aW9uUmVzdWx0KGNwcFZhcmlhbnRUb1dlYlN0cmluZyhhcmd1bWVudHNbMF0pKTsK
KyAgICBtX3NwZWVjaElucHV0Q29udHJvbGxlck1vY2stPnNldE1vY2tSZWNvZ25pdGlvblJlc3Vs
dChjcHBWYXJpYW50VG9XZWJTdHJpbmcoYXJndW1lbnRzWzBdKSwgY3BwVmFyaWFudFRvV2ViU3Ry
aW5nKGFyZ3VtZW50c1sxXSkpOwogfQogCiBXZWJLaXQ6OldlYlNwZWVjaElucHV0Q29udHJvbGxl
ciogTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNwZWVjaElucHV0Q29udHJvbGxlcihXZWJLaXQ6Oldl
YlNwZWVjaElucHV0TGlzdGVuZXIqIGxpc3RlbmVyKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcCBiL1dlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAKaW5kZXgg
MTgxZWY5ZjBiMjljZTYwOThiMThiZDY0MDNlMWVjYWIxOGUwM2I0NC4uZjNkYjYyMmU2Njc4MDFl
NzBmNjQ4NDVjYzBmNDkwNzQ1YzcwZjkyNCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcAorKysgYi9XZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCkBAIC01MDAs
NyArNTAwLDcgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0R2VvbG9jYXRpb25QZXJt
aXNzaW9uKGJvb2wgYWxsb3cpCiAgICAgc2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uQ29tbW9uKGFs
bG93KTsKIH0KIAotdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja1NwZWVjaElucHV0
UmVzdWx0KEpTU3RyaW5nUmVmIHJlc3VsdCkKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNl
dE1vY2tTcGVlY2hJbnB1dFJlc3VsdChKU1N0cmluZ1JlZiByZXN1bHQsIEpTU3RyaW5nUmVmIGxh
bmd1YWdlKQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIHNwZWVjaCBpbnB1dCBsYXlv
dXQgdGVzdHMuCiAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0zOTQ4NS4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9M
YXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbSBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQppbmRleCBjNWQ1YTkwNjk1OTliYTRiY2ZjMmFj
YTMxMWM3YTNhNzY1YWI1ZTFkLi4xNTBiNmY5Y2QzYTViY2Y0OTAxMDc3MThkZmZmOTMzZDVjOTRj
NGQxIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVz
dENvbnRyb2xsZXJNYWMubW0KKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xh
eW91dFRlc3RDb250cm9sbGVyTWFjLm1tCkBAIC0zNzEsNyArMzcxLDcgQEAgdm9pZCBMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6c2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKGJvb2wgYWxsb3cpCiAgICAg
W1tbbWFpbkZyYW1lIHdlYlZpZXddIFVJRGVsZWdhdGVdIGRpZFNldE1vY2tHZW9sb2NhdGlvblBl
cm1pc3Npb25dOwogfQogCi12b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrU3BlZWNo
SW5wdXRSZXN1bHQoSlNTdHJpbmdSZWYgcmVzdWx0KQordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxl
cjo6c2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KEpTU3RyaW5nUmVmIHJlc3VsdCwgSlNTdHJpbmdS
ZWYgbGFuZ3VhZ2UpCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3Igc3BlZWNoIGlucHV0
IGxheW91dCB0ZXN0cy4KICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTM5NDg1LgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
cXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcAppbmRleCBkMzZhMDc0NGU2ODZkMzNhZTU2
MWJjYTFlYzVjMjk0MjdiNGU4YzFiLi4yMDU2YjQwYmZkMWE2MzgwNDRkZWRjODRjYzA1YmVhYmQ3
YmUwY2IyIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRU
ZXN0Q29udHJvbGxlclF0LmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9M
YXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcApAQCAtNzU5LDcgKzc1OSw3IEBAIHZvaWQgTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKGRvdWJsZSBsYXRpdHVk
ZSwgZG91YmxlIGxvCiAgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldE1vY2tHZW9sb2Nh
dGlvblBvc2l0aW9uKGxhdGl0dWRlLCBsb25naXR1ZGUsIGFjY3VyYWN5KTsKIH0KIAotdm9pZCBM
YXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KGNvbnN0IFFTdHJp
bmcmIHJlc3VsdCkKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tTcGVlY2hJbnB1
dFJlc3VsdChjb25zdCBRU3RyaW5nJiByZXN1bHQsIGNvbnN0IFFTdHJpbmcmIGxhbmd1YWdlKQog
ewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIHNwZWVjaCBpbnB1dCBsYXlvdXQgdGVzdHMu
CiAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTQ4
NS4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RD
b250cm9sbGVyUXQuaCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RD
b250cm9sbGVyUXQuaAppbmRleCAzNjg0OTQ2YTQwNTUwNTVhYzE0YzQxZmYyMzE1ZTk3MzIxYjU5
ZGQ5Li4xMDZjNzNiZTIwMjNiMTA3ZmM1MmM3MzY1NGQxNWFmZWQ0ZTgzZTUwIDEwMDY0NAotLS0g
YS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmgK
KysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJR
dC5oCkBAIC0yMTUsNyArMjE1LDcgQEAgcHVibGljIHNsb3RzOgogICAgIGJvb2wgaXNHZW9sb2Nh
dGlvblBlcm1pc3Npb25TZXQoKSBjb25zdCB7IHJldHVybiBtX2lzR2VvbG9jYXRpb25QZXJtaXNz
aW9uU2V0OyB9CiAgICAgYm9vbCBnZW9sb2NhdGlvblBlcm1pc3Npb24oKSBjb25zdCB7IHJldHVy
biBtX2dlb2xvY2F0aW9uUGVybWlzc2lvbjsgfQogCi0gICAgdm9pZCBzZXRNb2NrU3BlZWNoSW5w
dXRSZXN1bHQoY29uc3QgUVN0cmluZyYgcmVzdWx0KTsKKyAgICB2b2lkIHNldE1vY2tTcGVlY2hJ
bnB1dFJlc3VsdChjb25zdCBRU3RyaW5nJiByZXN1bHQsIGNvbnN0IFFTdHJpbmcmIGxhbmd1YWdl
KTsKIAogICAgIC8vIEVtcHR5IHN0dWIgbWV0aG9kIHRvIGtlZXAgcGFyaXR5IHdpdGggb2JqZWN0
IG1vZGVsIGV4cG9zZWQgYnkgZ2xvYmFsIExheW91dFRlc3RDb250cm9sbGVyLgogICAgIHZvaWQg
YWJvcnRNb2RhbCgpIHt9CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93
aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAppbmRleCBkMjE0MGQxMDUzMmYyOGQ3
M2ZjYmUxMzkxYzIxMzUzOTRlZDE4MjhkLi4wZTQ2N2FiMjY4ZDMwNTliOGU3NjI4Y2YyNTI4NzVi
YzMwNWFkMDIxIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5
b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAKQEAgLTQwNSw3ICs0MDUsNyBAQCB2b2lk
IExheW91dFRlc3RDb250cm9sbGVyOjpzZXRHZW9sb2NhdGlvblBlcm1pc3Npb24oYm9vbCBhbGxv
dykKICAgICBzZXRHZW9sb2NhdGlvblBlcm1pc3Npb25Db21tb24oYWxsb3cpOwogfQogCi12b2lk
IExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoSlNTdHJpbmdS
ZWYgcmVzdWx0KQordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja1NwZWVjaElucHV0
UmVzdWx0KEpTU3RyaW5nUmVmIHJlc3VsdCwgSlNTdHJpbmdSZWYgbGFuZ3VhZ2UpCiB7CiAgICAg
Ly8gRklYTUU6IEltcGxlbWVudCBmb3Igc3BlZWNoIGlucHV0IGxheW91dCB0ZXN0cy4KICAgICAv
LyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NDg1LgpkaWZm
IC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xs
ZXJXeC5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJv
bGxlcld4LmNwcAppbmRleCBlZWZjNTg3ODFlMGExZWFiY2QwZmQ4MTM4OTMyY2M0M2M0ZDc4NDdm
Li4zMjYxNGMxMTMzZGRmOGFhZDc3ZWZiMGQxZDRhNmIzMGU0MDExMDhiIDEwMDY0NAotLS0gYS9X
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcAor
KysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4
LmNwcApAQCAtMzIwLDcgKzMyMCw3IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEdl
b2xvY2F0aW9uUGVybWlzc2lvbihib29sIGFsbG93KQogICAgIHNldEdlb2xvY2F0aW9uUGVybWlz
c2lvbkNvbW1vbihhbGxvdyk7CiB9CiAKLXZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1v
Y2tTcGVlY2hJbnB1dFJlc3VsdChKU1N0cmluZ1JlZiByZXN1bHQpCit2b2lkIExheW91dFRlc3RD
b250cm9sbGVyOjpzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoSlNTdHJpbmdSZWYgcmVzdWx0LCBK
U1N0cmluZ1JlZiBsYW5ndWFnZSkKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBzcGVl
Y2ggaW5wdXQgbGF5b3V0IHRlc3RzLgogICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9Mzk0ODUuCkBAIC01MjgsNCArNTI4LDMgQEAgSlNSZXRhaW5QdHI8
SlNTdHJpbmdSZWY+IExheW91dFRlc3RDb250cm9sbGVyOjpwYWdlU2l6ZUFuZE1hcmdpbnNJblBp
eGVscyhpbnQgcGEKICAgICAvLyBGSVhNRTogSW1wbGVtZW50CiAgICAgcmV0dXJuIDA7CiB9Ci0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71540</attachid>
            <date>2010-10-22 03:08:44 -0700</date>
            <delta_ts>2010-10-22 09:34:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47089-20101022110841.patch</filename>
            <type>text/plain</type>
            <size>47067</size>
            <attacher name="Leandro Graciá Gil">leandrogracia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBjZDQzZGJkYzQwMDg0YzZhMTQyNWMyNWVmMDRmN2RmMzViZTAzYTdjLi43YTk2OTQw
OWVlMDViMDViMjQ0ZjAwY2JlODY3ZDJhMzg3NGNmNjZjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAK
KzIwMTAtMTAtMjIgIExlYW5kcm8gR3JhY2lhIEdpbCAgPGxlYW5kcm9ncmFjaWFAZ29vZ2xlLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBKZXJlbXkgT3Jsb3cuCisKKyAgICAgICAgQWRkZWQg
YSBsYXlvdXQgdGVzdCBmb3IgdGhlIGxhbmd1YWdlIHRhZyBpbiBzcGVlY2ggaW5wdXQuIFVwZGF0
ZWQKKyAgICAgICAgdGhlIHNwZWVjaCBidXR0b24gdGVzdHMgdG8gaW5jbHVkZSB0aGUgbmV3IGxh
bmd1YWdlIHBhcmFtZXRlciBpbiB0aGUKKyAgICAgICAgbW9jayByZXN1bHQuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzA4OQorCisgICAgICAgICog
ZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1sYW5ndWFnZS10YWctZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L3NwZWVjaC9pbnB1dC10ZXh0LWxhbmd1YWdlLXRhZy5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L3NwZWVjaC9pbnB1dC10ZXh0LXNwZWVjaGJ1dHRvbi5odG1sOiBB
ZGRlZCBhbiBlbXB0eSBsYW5ndWFnZQorICAgICAgICAgIHBhcmFtZXRlci4KKyAgICAgICAgKiBm
YXN0L3NwZWVjaC9zcGVlY2gtYnV0dG9uLWlnbm9yZS1nZW5lcmF0ZWQtZXZlbnRzLmh0bWw6IEFk
ZGVkIGFuCisgICAgICAgICAgZW1wdHkgbGFuZ3VhZ2UgcGFyYW1ldGVyLgorICAgICAgICAqIHBs
YXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dDogbGFuZ3VhZ2UgdGFnIHRlc3Qg
aXMgZXhwZWN0ZWQKKyAgICAgICAgICB0byBmYWlsIHVudGlsIHRoZSBjaHJvbWl1bS1zaWRlIHBh
dGNoIGhhcyBiZWVuIGFwcGxpZWQuCisKIDIwMTAtMTAtMjIgIE1PUklUQSBIYWppbWUgIDxtb3Jy
aXRhQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VudCBUYW11cmEuCkBAIC0x
NTU3LDI0ICsxNTc1LDYgQEAKIAogICAgICAgICAqIHBsYXRmb3JtL2d0ay9Ta2lwcGVkOiBVbnNr
aXAgcGFzc2luZyB0ZXN0cy4KIAotMjAxMC0xMC0xOSAgTGVhbmRybyBHcmFjaWEgR2lsICA8bGVh
bmRyb2dyYWNpYUBnb29nbGUuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEplcmVteSBPcmxv
dy4KLQotICAgICAgICBBZGRlZCBhIGxheW91dCB0ZXN0IGZvciB0aGUgbGFuZ3VhZ2UgdGFnIGlu
IHNwZWVjaCBpbnB1dC4gVXBkYXRlZAotICAgICAgICB0aGUgc3BlZWNoIGJ1dHRvbiB0ZXN0cyB0
byBpbmNsdWRlIHRoZSBuZXcgbGFuZ3VhZ2UgcGFyYW1ldGVyIGluIHRoZQotICAgICAgICBtb2Nr
IHJlc3VsdC4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTQ3MDg5Ci0KLSAgICAgICAgKiBmYXN0L3NwZWVjaC9pbnB1dC10ZXh0LWxhbmd1YWdlLXRhZy1l
eHBlY3RlZC50eHQ6IEFkZGVkLgotICAgICAgICAqIGZhc3Qvc3BlZWNoL2lucHV0LXRleHQtbGFu
Z3VhZ2UtdGFnLmh0bWw6IEFkZGVkLgotICAgICAgICAqIGZhc3Qvc3BlZWNoL2lucHV0LXRleHQt
c3BlZWNoYnV0dG9uLmh0bWw6IEFkZGVkIGFuIGVtcHR5IGxhbmd1YWdlCi0gICAgICAgICAgcGFy
YW1ldGVyLgotICAgICAgICAqIGZhc3Qvc3BlZWNoL3NwZWVjaC1idXR0b24taWdub3JlLWdlbmVy
YXRlZC1ldmVudHMuaHRtbDogQWRkZWQgYW4KLSAgICAgICAgICBlbXB0eSBsYW5ndWFnZSBwYXJh
bWV0ZXIuCi0gICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0
OiBsYW5ndWFnZSB0YWcgdGVzdCBpcyBleHBlY3RlZAotICAgICAgICAgIHRvIGZhaWwgdW50aWwg
dGhlIGNocm9taXVtLXNpZGUgcGF0Y2ggaGFzIGJlZW4gYXBwbGllZC4KLQogMjAxMC0xMC0xOSAg
QW50b25pbyBHb21lcyAgPGFnb21lc0ByaW0uY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtl
bm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9z
cGVlY2gvaW5wdXQtdGV4dC1sYW5ndWFnZS10YWctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
ZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1sYW5ndWFnZS10YWctZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjkxZjMwZDY5NmY1ZDI1MGYxNGFmNTZiOTliNGU3MGM4NzljMGU1MDIKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9pbnB1dC10ZXh0LWxhbmd1YWdlLXRhZy1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMyBAQAorVGVzdHMgZm9yIGxhbmd1YWdlIHRhZyBpbmhl
cml0YW5jZSBhbmQgdmFsaWRhdGlvbiBpbiBzcGVlY2ggYnV0dG9ucy4KKworT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLgorCisKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNwZWVjaElu
cHV0Tm9uZSIpLnZhbHVlIGlzICJlcnJvcjogbm8gcmVzdWx0IGZvdW5kIGZvciBsYW5ndWFnZSAn
JyIKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNwZWVjaElucHV0RWxlbWVudCIpLnZh
bHVlIGlzICJQaWN0dXJlcyBvZiB0aGUgbW9vbiIKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInNwZWVjaElucHV0SW5oZXJpdGVkIikudmFsdWUgaXMgIuaciOOBruWGmeecnyIKK1BBU1Mg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNwZWVjaElucHV0SW52YWxpZCIpLnZhbHVlIGlzICJl
cnJvcjogbm8gcmVzdWx0IGZvdW5kIGZvciBsYW5ndWFnZSAnJyIKK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1sYW5ndWFnZS10YWcuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3Qvc3BlZWNoL2lucHV0LXRleHQtbGFuZ3VhZ2UtdGFnLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWJm
YzgyMjYyZWUzMGEyYzVmYTVlMjU4MTYxZWE4YTFlMThlNjVhZgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL2lucHV0LXRleHQtbGFuZ3VhZ2UtdGFnLmh0bWwKQEAg
LTAsMCArMSw2MiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8v
RU4iPgorPGh0bWw+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8aGVhZD4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxz
Y3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorZGVzY3JpcHRpb24oJ1Rl
c3RzIGZvciBsYW5ndWFnZSB0YWcgaW5oZXJpdGFuY2UgYW5kIHZhbGlkYXRpb24gaW4gc3BlZWNo
IGJ1dHRvbnMuJyk7CisKKy8vIE5vdGU6IHRlc3QgY2FzZXMgYXJlIHNlcXVlbnRpYWwgdG8gZW5z
dXJlIHRoYXQgbm8gbmV3IHJlY29nbml0aW9uIHN0YXJ0cyB3aGVuIGFub3RoZXIgcmVjb2duaXRp
b24gcmVjb3JkaW5nIGlzIGFjdGl2ZS4KK2Z1bmN0aW9uIG9uQ2hhbmdlTm9uZSgpIHsKKyAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoJ2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzcGVlY2hJbnB1
dE5vbmUiKS52YWx1ZScsICdlcnJvcjogbm8gcmVzdWx0IGZvdW5kIGZvciBsYW5ndWFnZSBcJ1wn
Jyk7CisgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc3BlZWNoQnV0dG9uQ2xpY2soJ3NwZWVj
aElucHV0RWxlbWVudCcpOyB9LCA1MCk7Cit9CisKK2Z1bmN0aW9uIG9uQ2hhbmdlRWxlbWVudCgp
IHsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJz
cGVlY2hJbnB1dEVsZW1lbnQiKS52YWx1ZScsICdQaWN0dXJlcyBvZiB0aGUgbW9vbicpOworICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNwZWVjaEJ1dHRvbkNsaWNrKCdzcGVlY2hJbnB1dElu
aGVyaXRlZCcpOyB9LCA1MCk7Cit9CisKK2Z1bmN0aW9uIG9uQ2hhbmdlSW5oZXJpdGVkKCkgewor
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNwZWVj
aElucHV0SW5oZXJpdGVkIikudmFsdWUnLCAn5pyI44Gu5YaZ55yfJyk7CisgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsgc3BlZWNoQnV0dG9uQ2xpY2soJ3NwZWVjaElucHV0SW52YWxpZCcpOyB9
LCA1MCk7Cit9CisKK2Z1bmN0aW9uIG9uQ2hhbmdlSW52YWxpZCgpIHsKKyAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoJ2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzcGVlY2hJbnB1dEludmFsaWQi
KS52YWx1ZScsICdlcnJvcjogbm8gcmVzdWx0IGZvdW5kIGZvciBsYW5ndWFnZSBcJ1wnJyk7Cisg
ICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK2Z1bmN0aW9uIHNwZWVjaEJ1dHRvbkNsaWNrKGVsZW1l
bnRJZCkgeworICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlbWVu
dElkKTsKKyAgICB2YXIgeCA9IGVsZW1lbnQub2Zmc2V0TGVmdCArIGVsZW1lbnQub2Zmc2V0V2lk
dGggLSA0OworICAgIHZhciB5ID0gZWxlbWVudC5vZmZzZXRUb3AgKyBlbGVtZW50Lm9mZnNldEhl
aWdodCAvIDI7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgZXZlbnRT
ZW5kZXIubW91c2VEb3duKCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworfQorCitmdW5j
dGlvbiBydW4oKSB7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlciAmJiB3aW5k
b3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja1Nw
ZWVjaElucHV0UmVzdWx0KCdQaWN0dXJlcyBvZiB0aGUgbW9vbicsICdlbi1HQicpOworICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoJ+aciOOBruWG
meecnycsICdqYScpOworICAgICAgICBzcGVlY2hCdXR0b25DbGljaygnc3BlZWNoSW5wdXROb25l
Jyk7CisgICAgfQorfQorCit3aW5kb3cub25sb2FkID0gcnVuOword2luZG93LmpzVGVzdElzQXN5
bmMgPSB0cnVlOword2luZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KzxpbnB1dCBpZD0ic3BlZWNoSW5wdXROb25lIiB4LXdlYmtpdC1zcGVlY2ggb253ZWJraXRzcGVl
Y2hjaGFuZ2U9Im9uQ2hhbmdlTm9uZSgpIj4KKzxpbnB1dCBpZD0ic3BlZWNoSW5wdXRFbGVtZW50
IiB4LXdlYmtpdC1zcGVlY2ggb253ZWJraXRzcGVlY2hjaGFuZ2U9Im9uQ2hhbmdlRWxlbWVudCgp
IiBsYW5nPSJlbi1HQiI+Cis8ZGl2IGxhbmc9ImphIj4gPGlucHV0IGlkPSJzcGVlY2hJbnB1dElu
aGVyaXRlZCIgeC13ZWJraXQtc3BlZWNoIG9ud2Via2l0c3BlZWNoY2hhbmdlPSJvbkNoYW5nZUlu
aGVyaXRlZCgpIj4gPC9kaXY+Cis8aW5wdXQgaWQ9InNwZWVjaElucHV0SW52YWxpZCIgeC13ZWJr
aXQtc3BlZWNoIG9ud2Via2l0c3BlZWNoY2hhbmdlPSJvbkNoYW5nZUludmFsaWQoKSIgbGFuZz0i
MTMzNyTDvjPOu2siPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1zcGVlY2hidXR0b24uaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3Qvc3BlZWNoL2lucHV0LXRleHQtc3BlZWNoYnV0dG9uLmh0bWwKaW5kZXggNmY1YmM0YjEyMWZi
NGY5ZDlkZGE2YzMzMWY4YjI2ZGMxY2Q0Mzk5NC4uY2VmNzcwNTZiMTdkMWNkNDUxYjQ5MGI3YzFm
MjQ2YmE2Yzg5NTBkYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvaW5wdXQt
dGV4dC1zcGVlY2hidXR0b24uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9pbnB1
dC10ZXh0LXNwZWVjaGJ1dHRvbi5odG1sCkBAIC0zMiw3ICszMiw3IEBAIGZ1bmN0aW9uIG9uV2Vi
a2l0U3BlZWNoQ2hhbmdlKCkgewogCiBmdW5jdGlvbiBydW4oKSB7CiAgICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlciAmJiB3aW5kb3cuZXZlbnRTZW5kZXIpIHsKLSAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KCdQaWN0dXJlcyBvZiB0
aGUgbW9vbicpOworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRNb2NrU3BlZWNoSW5w
dXRSZXN1bHQoJ1BpY3R1cmVzIG9mIHRoZSBtb29uJywgJycpOwogCiAgICAgICAgIC8vIENsaWNr
aW5nIHRoZSBzcGVlY2ggYnV0dG9uIHNob3VsZCBmaWxsIGluIG1vY2sgc3BlZWNoLXJlY29nbml6
ZWQgdGV4dC4KICAgICAgICAgdmFyIGlucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Nw
ZWVjaElucHV0Jyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9zcGVlY2gt
YnV0dG9uLWlnbm9yZS1nZW5lcmF0ZWQtZXZlbnRzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3Nw
ZWVjaC9zcGVlY2gtYnV0dG9uLWlnbm9yZS1nZW5lcmF0ZWQtZXZlbnRzLmh0bWwKaW5kZXggYjli
OGVjMzY2MDU1NzlmMmIxMjZkNmYxZGEzNTYwYzY3MmFkMmI3MS4uYzY4NDg2Mzc3MDUzMzk5YjI5
ZDA0ZmMyOTkwN2U1NWU4YWJmMDYwOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9zcGVl
Y2gvc3BlZWNoLWJ1dHRvbi1pZ25vcmUtZ2VuZXJhdGVkLWV2ZW50cy5odG1sCisrKyBiL0xheW91
dFRlc3RzL2Zhc3Qvc3BlZWNoL3NwZWVjaC1idXR0b24taWdub3JlLWdlbmVyYXRlZC1ldmVudHMu
aHRtbApAQCAtNDksNyArNDksNyBAQCBmdW5jdGlvbiBzZXR1cERpc3BhdGNoRXZlbnRUZXN0KCkg
ewogZnVuY3Rpb24gcnVuKCkgewogICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIg
JiYgd2luZG93LmV2ZW50U2VuZGVyKSB7CiAgICAgICAgIC8vIFJ1bm5pbmcgaW4gRFJULCB0ZXN0
IHRoZSBldmVudFNlbmRlciBjYXNlLgotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRN
b2NrU3BlZWNoSW5wdXRSZXN1bHQoJ1BpY3R1cmVzIG9mIHRoZSBtb29uJyk7CisgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdCgnUGljdHVyZXMgb2Yg
dGhlIG1vb24nLCAnJyk7CiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzcGVlY2hJ
bnB1dCcpLm9ud2Via2l0c3BlZWNoY2hhbmdlID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoJ2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzcGVlY2hJbnB1
dCIpLnZhbHVlJywgJ1BpY3R1cmVzIG9mIHRoZSBtb29uJyk7CiAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dCBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAppbmRleCAzNmZmMDI1
Y2FjNDIyNjU5MTM1Y2NiYTgzYzE4MmZlM2ExNjVlODk2Li4zNWRiYjNlM2U3NzA1Nzk4ODNiM2Vm
NjBmY2Y0MzY3YmI2ODRiMTViIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CkBAIC0zMjQ4LDUgKzMyNDgsOSBAQCBCVUdKQVBI
RVQgOiBmYXN0L2pzL2RhdGUtcGFyc2UtdGVzdC5odG1sID0gVEVYVAogCiAvLyBBZGRlZCBpbiBX
ZWJLaXQgcjcwMTkwCiBCVUdXSzQ4MDM0IDogcGx1Z2lucy9wYXNzLWRpZmZlcmVudC1ucHAtc3Ry
dWN0Lmh0bWwgPSBURVhUCisKIC8vIEFkZGVkIGluIFdlYktpdCByNzAyNjUKIEJVR1dLNDgwMzQg
OiBwbGF0Zm9ybS93aW4vcGx1Z2lucy9ucG4taW52YWxpZGF0ZS1yZWN0LWludmFsaWRhdGVzLXdp
bmRvdy5odG1sID0gVEVYVAorCisvLyBUZW1wb3JhcmlseSBkaXNhYmxlZCBmb3IgYSA0LXNpZGVk
IHBhdGNoLiBXaWxsIGJlIGVuYWJsZWQgYWdhaW4gYnkgQlVHV0s0NzQyMC4KK0JVR1dLNDcwODkg
OiBmYXN0L3NwZWVjaC9pbnB1dC10ZXh0LWxhbmd1YWdlLXRhZy5odG1sID0gRkFJTApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1MjljNzdi
ZDZjNWVhYTE2ZTQ3NjkzNGI5YTUxMTM5NDNlNmUwMTM3Li4wMmY0NTc3ZTZkZTFmZmVkMGY5MzUy
M2RlNDI5ZDY2YTVkOTljMmYzIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEwLTEwLTIyICBMZWFuZHJvIEdy
YWNpYSBHaWwgIDxsZWFuZHJvZ3JhY2lhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgSmVyZW15IE9ybG93LgorCisgICAgICAgIFBhdGNoIHRoZSBjdXJyZW50IHNwZWVjaCBpbnB1
dCBpbXBsZW1lbnRhdGlvbiB0byB1c2UgYW5kIHZhbGlkYXRlIHRoZQorICAgICAgICBuZWFyZXN0
IGxhbmd1YWdlIHRhZy4gVGhlIGxhbmd1YWdlIGlzIG5vdyBwYXNzZWQgdG8gdGhlIHN0YXJ0UmVj
b2duaXRpb24KKyAgICAgICAgbWV0aG9kcyBzbyB0aGF0IGxhbmd1YWdlLXNwZWNpZmljIHJlY29n
bml0aW9uIGNvdWxkIGJlIHVzZWQuIEFsc28gYWRkZWQKKyAgICAgICAgYSBzZWNvbmQgcGFyYW1l
dGVyIHRvIHNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdCBmb3IgdGhlIGxhbmd1YWdlIHVzZWQgaW4K
KyAgICAgICAgc3BlZWNoIHJlY29nbml0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDcwODkKKworICAgICAgICBUaGlzIGlzIHRoZSAybmQgb2Yg
YSA0LXNpZGVkIHBhdGNoIGluIENocm9taXVtIGFuZCBXZWJLaXQuIEZvciBtb3JlCisgICAgICAg
IGRldGFpbHMgc2VlIGh0dHA6Ly9jb2RlcmV2aWV3LmNocm9taXVtLm9yZy8zNjE1MDA1L3Nob3cg
YW5kCisgICAgICAgIGh0dHA6Ly9jb2RlcmV2aWV3LmNocm9taXVtLm9yZy8zNTk1MDE4L3Nob3cu
CisKKyAgICAgICAgVGVzdDogZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1sYW5ndWFnZS10YWcuaHRt
bAorCisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dDo6Y29tcHV0ZUluaGVyaXRlZExhbmd1YWdlKTogaW5jbHVkZXMgYSBicmllZiBjaGFyYWN0ZXIK
KyAgICAgICAgICB2YWxpZGF0aW9uIGZvciB0aGUgQkNQIDQ3IGxhbmd1YWdlIHRhZy4KKyAgICAg
ICAgKiBwYWdlL1NwZWVjaElucHV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaElucHV0
OjpzdGFydFJlY29nbml0aW9uKToKKyAgICAgICAgKiBwYWdlL1NwZWVjaElucHV0Lmg6CisgICAg
ICAgICogcGFnZS9TcGVlY2hJbnB1dENsaWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL21vY2sv
U3BlZWNoSW5wdXRDbGllbnRNb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaElucHV0
Q2xpZW50TW9jazo6c3RhcnRSZWNvZ25pdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hJ
bnB1dENsaWVudE1vY2s6OnNldFJlY29nbml0aW9uUmVzdWx0KTogcmVzdWx0cyBhcmUgbm93Cisg
ICAgICAgICAgc3RvcmVkIGJ5IGxhbmd1YWdlIHVzaW5nIGEgaGFzaCBtYXAuCisgICAgICAgIChX
ZWJDb3JlOjpTcGVlY2hJbnB1dENsaWVudE1vY2s6OnRpbWVyRmlyZWQpOgorICAgICAgICAqIHBs
YXRmb3JtL21vY2svU3BlZWNoSW5wdXRDbGllbnRNb2NrLmg6CisgICAgICAgICogcmVuZGVyaW5n
L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29u
dHJvbElubmVyRWxlbWVudDo6YXR0YWNoSW5uZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uRWxlbWVudDo6ZGV0YWNoKToKKyAgICAgICAgKFdlYkNv
cmU6OlNwaW5CdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OklucHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50OjpkZXRh
Y2gpOgorCiAyMDEwLTEwLTIyICBab2x0YW4gSGVyY3plZyAgPHpoZXJjemVnQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGlyayBTY2h1bHplLgpAQCAtMTU1Miw0MyArMTU4OSw2
IEBACiAgICAgICAgIChXZWJDb3JlOjpJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudDo6ZGVm
YXVsdEV2ZW50SGFuZGxlcik6CiAgICAgICAgIChXZWJDb3JlOjpJbnB1dEZpZWxkU3BlZWNoQnV0
dG9uRWxlbWVudDo6ZGV0YWNoKToKIAotMjAxMC0xMC0xOSAgTGVhbmRybyBHcmFjaWEgR2lsICA8
bGVhbmRyb2dyYWNpYUBnb29nbGUuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEplcmVteSBP
cmxvdy4KLQotICAgICAgICBQYXRjaCB0aGUgY3VycmVudCBzcGVlY2ggaW5wdXQgaW1wbGVtZW50
YXRpb24gdG8gdXNlIGFuZCB2YWxpZGF0ZSB0aGUKLSAgICAgICAgbmVhcmVzdCBsYW5ndWFnZSB0
YWcuIFRoZSBsYW5ndWFnZSBpcyBub3cgcGFzc2VkIHRvIHRoZSBzdGFydFJlY29nbml0aW9uCi0g
ICAgICAgIG1ldGhvZHMgc28gdGhhdCBsYW5ndWFnZS1zcGVjaWZpYyByZWNvZ25pdGlvbiBjb3Vs
ZCBiZSB1c2VkLiBBbHNvIGFkZGVkCi0gICAgICAgIGEgc2Vjb25kIHBhcmFtZXRlciB0byBzZXRN
b2NrU3BlZWNoSW5wdXRSZXN1bHQgZm9yIHRoZSBsYW5ndWFnZSB1c2VkIGluCi0gICAgICAgIHNw
ZWVjaCByZWNvZ25pdGlvbi4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQ3MDg5Ci0KLSAgICAgICAgVGhpcyBpcyB0aGUgMm5kIG9mIGEgNC1zaWRlZCBw
YXRjaCBpbiBDaHJvbWl1bSBhbmQgV2ViS2l0LiBGb3IgbW9yZQotICAgICAgICBkZXRhaWxzIHNl
ZSBodHRwOi8vY29kZXJldmlldy5jaHJvbWl1bS5vcmcvMzYxNTAwNS9zaG93IGFuZAotICAgICAg
ICBodHRwOi8vY29kZXJldmlldy5jaHJvbWl1bS5vcmcvMzU5NTAxOC9zaG93LgotCi0gICAgICAg
IFRlc3Q6IGZhc3Qvc3BlZWNoL2lucHV0LXRleHQtbGFuZ3VhZ2UtdGFnLmh0bWwKLQotICAgICAg
ICAqIGRvbS9FbGVtZW50LmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNvbXB1dGVJ
bmhlcml0ZWRMYW5ndWFnZSk6IGluY2x1ZGVzIGEgYnJpZWYgY2hhcmFjdGVyCi0gICAgICAgICAg
dmFsaWRhdGlvbiBmb3IgdGhlIEJDUCA0NyBsYW5ndWFnZSB0YWcuCi0gICAgICAgICogcGFnZS9T
cGVlY2hJbnB1dC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpTcGVlY2hJbnB1dDo6c3RhcnRSZWNv
Z25pdGlvbik6Ci0gICAgICAgICogcGFnZS9TcGVlY2hJbnB1dC5oOgotICAgICAgICAqIHBhZ2Uv
U3BlZWNoSW5wdXRDbGllbnQuaDoKLSAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0
Q2xpZW50TW9jay5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpTcGVlY2hJbnB1dENsaWVudE1vY2s6
OnN0YXJ0UmVjb2duaXRpb24pOgotICAgICAgICAoV2ViQ29yZTo6U3BlZWNoSW5wdXRDbGllbnRN
b2NrOjpzZXRSZWNvZ25pdGlvblJlc3VsdCk6IHJlc3VsdHMgYXJlIG5vdwotICAgICAgICAgIHN0
b3JlZCBieSBsYW5ndWFnZSB1c2luZyBhIGhhc2ggbWFwLgotICAgICAgICAoV2ViQ29yZTo6U3Bl
ZWNoSW5wdXRDbGllbnRNb2NrOjp0aW1lckZpcmVkKToKLSAgICAgICAgKiBwbGF0Zm9ybS9tb2Nr
L1NwZWVjaElucHV0Q2xpZW50TW9jay5oOgotICAgICAgICAqIHJlbmRlcmluZy9UZXh0Q29udHJv
bElubmVyRWxlbWVudHMuY3BwOgotICAgICAgICAoV2ViQ29yZTo6VGV4dENvbnRyb2xJbm5lckVs
ZW1lbnQ6OmF0dGFjaElubmVyRWxlbWVudCk6Ci0gICAgICAgIChXZWJDb3JlOjpTZWFyY2hGaWVs
ZENhbmNlbEJ1dHRvbkVsZW1lbnQ6OmRldGFjaCk6Ci0gICAgICAgIChXZWJDb3JlOjpTcGluQnV0
dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6Ci0gICAgICAgIChXZWJDb3JlOjpJbnB1
dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6Ci0gICAgICAg
IChXZWJDb3JlOjpJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudDo6ZGV0YWNoKToKLQogMjAx
MC0xMC0yMCAgRGlyayBTY2h1bHplICA8a3JpdEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IE5pa29sYXMgWmltbWVybWFubi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0VsZW1l
bnQuY3BwIGIvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggODNlMTI5ZThlMjhjZmE1MTBl
ZTBkODE1NmQyNDM4NWQxZTkzZGNmOS4uYzdkNDQyYWY5NjgwOTI2ZTRhMmNjNDFhNWY4NjZmOWRj
ZWY0NTRiMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvV2ViQ29y
ZS9kb20vRWxlbWVudC5jcHAKQEAgLTU2LDYgKzU2LDcgQEAKICNpbmNsdWRlICJTZXR0aW5ncy5o
IgogI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgogI2luY2x1ZGUgIlhNTE5hbWVzLmgiCisjaW5j
bHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAK
ICNpZiBFTkFCTEUoU1ZHKQpAQCAtMTQ3NCw2ICsxNDc1LDE1IEBAIEF0b21pY1N0cmluZyBFbGVt
ZW50Ojpjb21wdXRlSW5oZXJpdGVkTGFuZ3VhZ2UoKSBjb25zdAogICAgICAgICBuID0gbi0+cGFy
ZW50KCk7CiAgICAgfQogCisgICAgaWYgKCF2YWx1ZS5pc051bGwoKSAmJiAhdmFsdWUuaXNFbXB0
eSgpKSB7CisgICAgICAgIC8vIE9ubHkgQS1aYS16MC05IGFuZCAnLScgYXJlIGFsbG93ZWQgaW4g
dGhlIGxhbmd1YWdlIHRhZyAoc2VlIEJDUCA0NykKKyAgICAgICAgY29uc3QgY2hhciAqcCA9IHZh
bHVlLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpOworICAgICAgICBmb3IgKDsgKnAgIT0gJ1wwJzsg
KytwKSB7CisgICAgICAgICAgICBpZiAoIWlzQVNDSUlBbHBoYW51bWVyaWMoKnApICYmICpwICE9
ICctJykKKyAgICAgICAgICAgICAgICByZXR1cm4gQXRvbWljU3RyaW5nKCk7CisgICAgICAgIH0K
KyAgICB9CisKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFn
ZS9TcGVlY2hJbnB1dC5jcHAgYi9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXQuY3BwCmluZGV4IDIz
NDc5MWJjNGIxM2Y0M2RmOWQxNzM5ZDVkMjA1ZjlhYTI3ZTIwNzIuLmNjNWUwZjk3ZmJhYmY5YWZh
M2Y0MzU5YzcyNmJhYzg3ZTUzNDE4Y2YgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9TcGVlY2hJ
bnB1dC5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0LmNwcApAQCAtOTMsMTAgKzkz
LDEwIEBAIHZvaWQgU3BlZWNoSW5wdXQ6OnNldFJlY29nbml0aW9uUmVzdWx0KGludCBsaXN0ZW5l
cklkLCBjb25zdCBTdHJpbmcmIHJlc3VsdCkKICAgICAgICAgbV9saXN0ZW5lcnMuZ2V0KGxpc3Rl
bmVySWQpLT5zZXRSZWNvZ25pdGlvblJlc3VsdChsaXN0ZW5lcklkLCByZXN1bHQpOwogfQogCi1i
b29sIFNwZWVjaElucHV0OjpzdGFydFJlY29nbml0aW9uKGludCBsaXN0ZW5lcklkLCBjb25zdCBJ
bnRSZWN0JiBlbGVtZW50UmVjdCkKK2Jvb2wgU3BlZWNoSW5wdXQ6OnN0YXJ0UmVjb2duaXRpb24o
aW50IGxpc3RlbmVySWQsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UsIGNvbnN0IEludFJlY3QmIGVs
ZW1lbnRSZWN0KQogewogICAgIEFTU0VSVChtX2xpc3RlbmVycy5jb250YWlucyhsaXN0ZW5lcklk
KSk7Ci0gICAgcmV0dXJuIG1fY2xpZW50LT5zdGFydFJlY29nbml0aW9uKGxpc3RlbmVySWQsIGVs
ZW1lbnRSZWN0KTsKKyAgICByZXR1cm4gbV9jbGllbnQtPnN0YXJ0UmVjb2duaXRpb24obGlzdGVu
ZXJJZCwgbGFuZ3VhZ2UsIGVsZW1lbnRSZWN0KTsKIH0KIAogdm9pZCBTcGVlY2hJbnB1dDo6c3Rv
cFJlY29yZGluZyhpbnQgbGlzdGVuZXJJZCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9TcGVl
Y2hJbnB1dC5oIGIvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0LmgKaW5kZXggZDEwYjc4OWFhZDI3
MzllZGQzYmY0NTMwZTdjNmUwMGM0ZTJkYWU4YS4uOGI0MjZmNTYzMTM2ZWQ2NTFkZDY0NTZlODM1
YjRkNDQ1M2FiODAxMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0LmgKKysr
IGIvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0LmgKQEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgog
ICAgIHZvaWQgdW5yZWdpc3Rlckxpc3RlbmVyKGludCk7CiAKICAgICAvLyBNZXRob2RzIGludm9r
ZWQgYnkgdGhlIGlucHV0IGVsZW1lbnRzLgotICAgIGJvb2wgc3RhcnRSZWNvZ25pdGlvbihpbnQs
IGNvbnN0IEludFJlY3QmKTsKKyAgICBib29sIHN0YXJ0UmVjb2duaXRpb24oaW50LCBjb25zdCBT
dHJpbmcmLCBjb25zdCBJbnRSZWN0Jik7CiAgICAgdm9pZCBzdG9wUmVjb3JkaW5nKGludCk7CiAg
ICAgdm9pZCBjYW5jZWxSZWNvZ25pdGlvbihpbnQpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bh
Z2UvU3BlZWNoSW5wdXRDbGllbnQuaCBiL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dENsaWVudC5o
CmluZGV4IGQ1ZmRhMTdmYWEyY2Q3OTVhZjQ0ZjUzYTQ2ZmNiYTU5NzQxYWI3NmMuLmY1YWFiMDJh
NzY2MTY2MThhNjBjNzc0NGNiNDc0NjYzZGNiNTIyYjQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFn
ZS9TcGVlY2hJbnB1dENsaWVudC5oCisrKyBiL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dENsaWVu
dC5oCkBAIC0zMSw2ICszMSw4IEBACiAjaWZuZGVmIFNwZWVjaElucHV0Q2xpZW50X2gKICNkZWZp
bmUgU3BlZWNoSW5wdXRDbGllbnRfaAogCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKwogI2lm
IEVOQUJMRShJTlBVVF9TUEVFQ0gpCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ4LDcgKzUw
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRMaXN0ZW5lcihTcGVlY2hJbnB1dExp
c3RlbmVyKikgPSAwOwogCiAgICAgLy8gU3RhcnRzIHNwZWVjaCByZWNvZ25pdGlvbiBhbmQgYXVk
aW8gcmVjb3JkaW5nLgotICAgIHZpcnR1YWwgYm9vbCBzdGFydFJlY29nbml0aW9uKGludCByZXF1
ZXN0SWQsIGNvbnN0IEludFJlY3QmIGVsZW1lbnRSZWN0KSA9IDA7CisgICAgdmlydHVhbCBib29s
IHN0YXJ0UmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSwg
Y29uc3QgSW50UmVjdCYgZWxlbWVudFJlY3QpID0gMDsKIAogICAgIC8vIFN0b3BzIGF1ZGlvIHJl
Y29yZGluZyBhbmQgcGVyZm9ybXMgcmVjb2duaXRpb24gd2l0aCB0aGUgYXVkaW8gcmVjb3JkZWQg
dW50aWwgbm93CiAgICAgLy8gKGRvZXMgbm90IGRpc2NhcmQgYXVkaW8pLgpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xpZW50TW9jay5jcHAgYi9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svU3BlZWNoSW5wdXRDbGllbnRNb2NrLmNwcAppbmRleCA2YjY0OTQyZjE3
YjkyNWI0OWVmMDkyMTQ3YzBhMTZhMDdmMGQ3Y2NjLi5jMDQ5NzFlMGE5NDM4NTVhOGNmY2QxZDFj
MjQ1NjMyYmE4MjFiMTBhIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL21vY2svU3BlZWNo
SW5wdXRDbGllbnRNb2NrLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL21vY2svU3BlZWNoSW5w
dXRDbGllbnRNb2NrLmNwcApAQCAtMzUsNiArMzUsMTEgQEAKIAogI2luY2x1ZGUgIlNwZWVjaElu
cHV0TGlzdGVuZXIuaCIKIAorbmFtZXNwYWNlIHsKKyAgICAvLyBIYXNoTWFwIGRvZXNuJ3Qgc3Vw
cG9ydCBlbXB0eSBzdHJpbmdzIGFzIGtleXMsIHNvIHRoaXMgdmFsdWUgKGFuIGludmFsaWQgQkNQ
NDcgdGFnKSBpcyB1c2VkIGZvciB0aG9zZSBjYXNlcy4KKyAgICBjb25zdCBTdHJpbmcgZW1wdHlM
YW5ndWFnZSA9ICJfIjsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTcGVlY2hJbnB1dENs
aWVudE1vY2s6OlNwZWVjaElucHV0Q2xpZW50TW9jaygpCkBAIC01MCwxMiArNTUsMTMgQEAgdm9p
ZCBTcGVlY2hJbnB1dENsaWVudE1vY2s6OnNldExpc3RlbmVyKFNwZWVjaElucHV0TGlzdGVuZXIq
IGxpc3RlbmVyKQogICAgIG1fbGlzdGVuZXIgPSBsaXN0ZW5lcjsKIH0KIAotYm9vbCBTcGVlY2hJ
bnB1dENsaWVudE1vY2s6OnN0YXJ0UmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCwgY29uc3QgSW50
UmVjdCYpCitib29sIFNwZWVjaElucHV0Q2xpZW50TW9jazo6c3RhcnRSZWNvZ25pdGlvbihpbnQg
cmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlLCBjb25zdCBJbnRSZWN0JikKIHsKICAg
ICBpZiAobV90aW1lci5pc0FjdGl2ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgbV9y
ZXF1ZXN0SWQgPSByZXF1ZXN0SWQ7CiAgICAgbV9yZWNvcmRpbmcgPSB0cnVlOworICAgIG1fbGFu
Z3VhZ2UgPSBsYW5ndWFnZTsKICAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdCgwKTsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KQEAgLTgwLDkgKzg2LDEyIEBAIHZvaWQgU3BlZWNoSW5wdXRDbGllbnRNb2Nr
OjpjYW5jZWxSZWNvZ25pdGlvbihpbnQgcmVxdWVzdElkKQogICAgIH0KIH0KIAotdm9pZCBTcGVl
Y2hJbnB1dENsaWVudE1vY2s6OnNldFJlY29nbml0aW9uUmVzdWx0KGNvbnN0IFN0cmluZyYgcmVz
dWx0KQordm9pZCBTcGVlY2hJbnB1dENsaWVudE1vY2s6OnNldFJlY29nbml0aW9uUmVzdWx0KGNv
bnN0IFN0cmluZyYgcmVzdWx0LCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlKQogewotICAgIG1fcmVj
b2duaXRpb25SZXN1bHQgPSByZXN1bHQ7CisgICAgaWYgKGxhbmd1YWdlLmlzRW1wdHkoKSkKKyAg
ICAgICAgbV9yZWNvZ25pdGlvblJlc3VsdC5zZXQoZW1wdHlMYW5ndWFnZSwgcmVzdWx0KTsKKyAg
ICBlbHNlCisgICAgICAgIG1fcmVjb2duaXRpb25SZXN1bHQuc2V0KGxhbmd1YWdlLCByZXN1bHQp
OwogfQogCiB2b2lkIFNwZWVjaElucHV0Q2xpZW50TW9jazo6dGltZXJGaXJlZChXZWJDb3JlOjpU
aW1lcjxTcGVlY2hJbnB1dENsaWVudE1vY2s+KikKQEAgLTkyLDcgKzEwMSwxNyBAQCB2b2lkIFNw
ZWVjaElucHV0Q2xpZW50TW9jazo6dGltZXJGaXJlZChXZWJDb3JlOjpUaW1lcjxTcGVlY2hJbnB1
dENsaWVudE1vY2s+KikKICAgICAgICAgbV9saXN0ZW5lci0+ZGlkQ29tcGxldGVSZWNvcmRpbmco
bV9yZXF1ZXN0SWQpOwogICAgICAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdCgwKTsKICAgICB9IGVs
c2UgewotICAgICAgICBtX2xpc3RlbmVyLT5zZXRSZWNvZ25pdGlvblJlc3VsdChtX3JlcXVlc3RJ
ZCwgbV9yZWNvZ25pdGlvblJlc3VsdCk7CisgICAgICAgIFN0cmluZyBsYW5ndWFnZSA9IG1fbGFu
Z3VhZ2UuaXNFbXB0eSgpID8gU3RyaW5nKGVtcHR5TGFuZ3VhZ2UpIDogbV9sYW5ndWFnZTsKKyAg
ICAgICAgaWYgKCFtX3JlY29nbml0aW9uUmVzdWx0LmNvbnRhaW5zKGxhbmd1YWdlKSkgeworICAg
ICAgICAgICAgLy8gQ2FuJ3QgYXZvaWQgc2V0dGluZyBhIHJlc3VsdCBvbiBlbXB0eSBvciBpbnZh
bGlkIGxhbmd1YWdlIHN0cmluZ3MuCisgICAgICAgICAgICAvLyBUaGlzIHdvdWxkIGF2b2lkIGdl
bmVyYXRpbmcgdGhlIGV2ZW50cyB1c2VkIHRvIGNoZWNrIHRoZSByZXN1bHRzIGFuZCB0aGUgdGVz
dCB3b3VsZCB0aW1lb3V0LgorICAgICAgICAgICAgU3RyaW5nIGVycm9yKCJlcnJvcjogbm8gcmVz
dWx0IGZvdW5kIGZvciBsYW5ndWFnZSAnIik7CisgICAgICAgICAgICBlcnJvci5hcHBlbmQobV9s
YW5ndWFnZSk7CisgICAgICAgICAgICBlcnJvci5hcHBlbmQoIiciKTsKKyAgICAgICAgICAgIG1f
bGlzdGVuZXItPnNldFJlY29nbml0aW9uUmVzdWx0KG1fcmVxdWVzdElkLCBlcnJvcik7CisgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgbV9saXN0ZW5lci0+c2V0UmVjb2duaXRpb25SZXN1bHQo
bV9yZXF1ZXN0SWQsIG1fcmVjb2duaXRpb25SZXN1bHQuZ2V0KGxhbmd1YWdlKSk7CisKICAgICAg
ICAgbV9saXN0ZW5lci0+ZGlkQ29tcGxldGVSZWNvZ25pdGlvbihtX3JlcXVlc3RJZCk7CiAgICAg
ICAgIG1fcmVxdWVzdElkID0gMDsKICAgICB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svU3BlZWNoSW5wdXRDbGllbnRNb2NrLmggYi9XZWJDb3JlL3BsYXRmb3JtL21vY2svU3Bl
ZWNoSW5wdXRDbGllbnRNb2NrLmgKaW5kZXggY2U4M2QzYmI5Y2I4OGIwYTNhOTViNTQ5NTQyN2Qy
OTkxZjJlMGI0Zi4uM2NlOTg3YjgyM2NkMTk4MDI4NjY5Yzc3OWYzYzQ3OWM0NzNjYjdlZCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xpZW50TW9jay5oCisr
KyBiL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TcGVlY2hJbnB1dENsaWVudE1vY2suaApAQCAtMzQs
NiArMzQsOCBAQAogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiU3BlZWNo
SW5wdXRDbGllbnQuaCIKICNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiAjaWYgRU5BQkxFKElOUFVU
X1NQRUVDSCkKIApAQCAtNDYsMTEgKzQ4LDExIEBAIGNsYXNzIFNwZWVjaElucHV0Q2xpZW50TW9j
ayA6IHB1YmxpYyBTcGVlY2hJbnB1dENsaWVudCB7CiBwdWJsaWM6CiAgICAgU3BlZWNoSW5wdXRD
bGllbnRNb2NrKCk7CiAKLSAgICB2b2lkIHNldFJlY29nbml0aW9uUmVzdWx0KGNvbnN0IFN0cmlu
ZyYgcmVzdWx0KTsKKyAgICB2b2lkIHNldFJlY29nbml0aW9uUmVzdWx0KGNvbnN0IFN0cmluZyYg
cmVzdWx0LCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlKTsKIAogICAgIC8vIFNwZWVjaElucHV0Q2xp
ZW50IG1ldGhvZHMuCiAgICAgdm9pZCBzZXRMaXN0ZW5lcihTcGVlY2hJbnB1dExpc3RlbmVyKik7
Ci0gICAgYm9vbCBzdGFydFJlY29nbml0aW9uKGludCwgY29uc3QgSW50UmVjdCYpOworICAgIGJv
b2wgc3RhcnRSZWNvZ25pdGlvbihpbnQsIGNvbnN0IFN0cmluZyYsIGNvbnN0IEludFJlY3QmKTsK
ICAgICB2b2lkIHN0b3BSZWNvcmRpbmcoaW50KTsKICAgICB2b2lkIGNhbmNlbFJlY29nbml0aW9u
KGludCk7CiAKQEAgLTYxLDcgKzYzLDkgQEAgcHJpdmF0ZToKICAgICBUaW1lcjxTcGVlY2hJbnB1
dENsaWVudE1vY2s+IG1fdGltZXI7CiAgICAgU3BlZWNoSW5wdXRMaXN0ZW5lciogbV9saXN0ZW5l
cjsKICAgICBpbnQgbV9yZXF1ZXN0SWQ7Ci0gICAgU3RyaW5nIG1fcmVjb2duaXRpb25SZXN1bHQ7
CisKKyAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBtX3JlY29nbml0aW9uUmVzdWx0OworICAg
IFN0cmluZyBtX2xhbmd1YWdlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcCBiL1dl
YkNvcmUvcmVuZGVyaW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKaW5kZXggNWQ1Yjhi
MzBiNDExMDUyMGQxYTRkZTdiOGE3OWM0ODVkNzkzNjYwOC4uNjVkMGE2NDYwOWQyMDM0YjEwOTk1
MDNkMTY5MTUxYWJlNjZkYWEzZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dENv
bnRyb2xJbm5lckVsZW1lbnRzLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Q29udHJv
bElubmVyRWxlbWVudHMuY3BwCkBAIC0yMSw5ICsyMSw5IEBACiAgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCiAgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
Ci0gCisKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJUZXh0Q29udHJvbElubmVyRWxl
bWVudHMuaCIKIApAQCAtMTA3LDE4ICsxMDcsMTggQEAgdm9pZCBUZXh0Q29udHJvbElubmVyRWxl
bWVudDo6YXR0YWNoSW5uZXJFbGVtZW50KE5vZGUqIHBhcmVudCwgUGFzc1JlZlB0cjxSZW5kZXIK
ICAgICAgICAgc2V0UmVuZGVyZXIocmVuZGVyZXIpOwogICAgICAgICByZW5kZXJlci0+c2V0U3R5
bGUoc3R5bGUpOwogICAgIH0KLSAgICAKKwogICAgIC8vIFNldCB0aGVzZSBleHBsaWNpdGx5IHNp
bmNlIHRoaXMgbm9ybWFsbHkgaGFwcGVucyBkdXJpbmcgYW4gYXR0YWNoKCkKICAgICBzZXRBdHRh
Y2hlZCgpOwogICAgIHNldEluRG9jdW1lbnQoKTsKLSAgICAKKwogICAgIC8vIEZvciBlbGVtZW50
cyB3aXRob3V0IGEgc2hhZG93IHBhcmVudCwgYWRkIHRoZSBub2RlIHRvIHRoZSBET00gbm9ybWFs
bHkuCiAgICAgaWYgKCFtX3NoYWRvd1BhcmVudCkgewogICAgICAgICAvLyBGSVhNRTogVGhpcyBj
b2RlIHNlZW1zIHZlcnkgd3JvbmcuICBXaHkgYXJlIHdlIG1hZ2ljYWxseSBhZGRpbmcgfHRoaXN8
IHRvIHRoZSBET00gaGVyZT8KICAgICAgICAgLy8gICAgICAgIFdlIHNob3VsZG4ndCBiZSBjYWxs
aW5nIHBhcnNlciBBUEkgbWV0aG9kcyBvdXRzaWRlIG9mIHRoZSBwYXJzZXIhCiAgICAgICAgIHBh
cmVudC0+ZGVwcmVjYXRlZFBhcnNlckFkZENoaWxkKHRoaXMpOwogICAgIH0KLSAKKwogICAgIC8v
IEFkZCB0aGUgcmVuZGVyZXIgdG8gdGhlIHJlbmRlciB0cmVlCiAgICAgaWYgKHJlbmRlcmVyKQog
ICAgICAgICBwYXJlbnQtPnJlbmRlcmVyKCktPmFkZENoaWxkKHJlbmRlcmVyKTsKQEAgLTIwOCw3
ICsyMDgsNyBAQCB2b2lkIFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uRWxlbWVudDo6ZGV0YWNoKCkK
IHsKICAgICBpZiAobV9jYXB0dXJpbmcpIHsKICAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRv
Y3VtZW50KCktPmZyYW1lKCkpCi0gICAgICAgICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPnNl
dENhcHR1cmluZ01vdXNlRXZlbnRzTm9kZSgwKTsgICAgICAKKyAgICAgICAgICAgIGZyYW1lLT5l
dmVudEhhbmRsZXIoKS0+c2V0Q2FwdHVyaW5nTW91c2VFdmVudHNOb2RlKDApOwogICAgIH0KICAg
ICBUZXh0Q29udHJvbElubmVyRWxlbWVudDo6ZGV0YWNoKCk7CiB9CkBAIC0yODEsOSArMjgxLDkg
QEAgdm9pZCBTcGluQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZl
bnQpCiAgICAgaWYgKCFib3gpIHsKICAgICAgICAgaWYgKCFldmVudC0+ZGVmYXVsdEhhbmRsZWQo
KSkKICAgICAgICAgICAgIEhUTUxEaXZFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50
KTsKLSAgICAgICAgcmV0dXJuOyAgICAgICAgCisgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAg
CisKICAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dCA9IHN0YXRpY19jYXN0PEhUTUxJbnB1dEVs
ZW1lbnQqPihzaGFkb3dBbmNlc3Rvck5vZGUoKSk7CiAgICAgaWYgKGlucHV0LT5kaXNhYmxlZCgp
IHx8IGlucHV0LT5pc1JlYWRPbmx5Rm9ybUNvbnRyb2woKSkgewogICAgICAgICBpZiAoIWV2ZW50
LT5kZWZhdWx0SGFuZGxlZCgpKQpAQCAtNDMxLDcgKzQzMSw3IEBAIHZvaWQgSW5wdXRGaWVsZFNw
ZWVjaEJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogICAg
IGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50KSB7CiAgICAgICAg
IHN3aXRjaCAobV9zdGF0ZSkgewogICAgICAgICBjYXNlIElkbGU6Ci0gICAgICAgICAgICBpZiAo
c3BlZWNoSW5wdXQoKS0+c3RhcnRSZWNvZ25pdGlvbihtX2xpc3RlbmVySWQsIGlucHV0LT5yZW5k
ZXJlcigpLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpKSkKKyAgICAgICAgICAgIGlmIChzcGVl
Y2hJbnB1dCgpLT5zdGFydFJlY29nbml0aW9uKG1fbGlzdGVuZXJJZCwgaW5wdXQtPmNvbXB1dGVJ
bmhlcml0ZWRMYW5ndWFnZSgpLCBpbnB1dC0+cmVuZGVyZXIoKS0+YWJzb2x1dGVCb3VuZGluZ0Jv
eFJlY3QoKSkpCiAgICAgICAgICAgICAgICAgc2V0U3RhdGUoUmVjb3JkaW5nKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIFJlY29yZGluZzoKQEAgLTQ4Nyw3ICs0ODcsNyBAQCB2
b2lkIElucHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50OjpkZXRhY2goKQogewogICAgIGlmICht
X2NhcHR1cmluZykgewogICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQoKS0+ZnJh
bWUoKSkKLSAgICAgICAgICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+c2V0Q2FwdHVyaW5nTW91
c2VFdmVudHNOb2RlKDApOyAgICAgIAorICAgICAgICAgICAgZnJhbWUtPmV2ZW50SGFuZGxlcigp
LT5zZXRDYXB0dXJpbmdNb3VzZUV2ZW50c05vZGUoMCk7CiAgICAgfQogCiAgICAgaWYgKG1fc3Rh
dGUgIT0gSWRsZSkKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDdjMWY0OTFmZjdhZjdhNDI2MTE2NWY0Y2EwZWFh
ODE0MmEyZDg1NDQuLmY2N2EzNzQ3MTc5NDNlZGQwNDRlOGIzMjY1MzNmMGU5MWNjYzY5NDggMTAw
NjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEwLTEwLTIyICBMZWFuZHJvIEdyYWNpYSBH
aWwgIDxsZWFuZHJvZ3JhY2lhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSmVy
ZW15IE9ybG93LgorIAorICAgICAgICBQYXRjaCB0aGUgY3VycmVudCBzcGVlY2ggaW5wdXQgaW1w
bGVtZW50YXRpb24gdG8gdXNlIGFuZCB2YWxpZGF0ZSB0aGUKKyAgICAgICAgbmVhcmVzdCBsYW5n
dWFnZSB0YWcuIFRoZSBsYW5ndWFnZSBpcyBub3cgcGFzc2VkIHRvIHRoZSBzdGFydFJlY29nbml0
aW9uCisgICAgICAgIG1ldGhvZHMgc28gdGhhdCBsYW5ndWFnZS1zcGVjaWZpYyByZWNvZ25pdGlv
biBjb3VsZCBiZSB1c2VkLiBBbHNvIGFkZGVkCisgICAgICAgIGEgc2Vjb25kIHBhcmFtZXRlciB0
byBzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQgZm9yIHRoZSBsYW5ndWFnZSB1c2VkIGluCisgICAg
ICAgIHNwZWVjaCByZWNvZ25pdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTQ3MDg5CisKKyAgICAgICAgVGhpcyBpcyB0aGUgMm5kIG9mIGEgNC1z
aWRlZCBwYXRjaCBpbiBDaHJvbWl1bSBhbmQgV2ViS2l0LiBGb3IgbW9yZQorICAgICAgICBkZXRh
aWxzIHNlZSBodHRwOi8vY29kZXJldmlldy5jaHJvbWl1bS5vcmcvMzYxNTAwNS9zaG93IGFuZAor
ICAgICAgICBodHRwOi8vY29kZXJldmlldy5jaHJvbWl1bS5vcmcvMzU5NTAxOC9zaG93LgorCisg
ICAgICAgICogcHVibGljL1dlYlNwZWVjaElucHV0Q29udHJvbGxlci5oOgorICAgICAgICAoV2Vi
S2l0OjpXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXI6OnN0YXJ0UmVjb2duaXRpb24pOgorICAgICAg
ICAqIHB1YmxpYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrLmg6CisgICAgICAgICogc3Jj
L1NwZWVjaElucHV0Q2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaElucHV0
Q2xpZW50SW1wbDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoSW5wdXRDbGllbnRJ
bXBsOjpzdGFydFJlY29nbml0aW9uKToKKyAgICAgICAgKiBzcmMvU3BlZWNoSW5wdXRDbGllbnRJ
bXBsLmg6CisgICAgICAgICogc3JjL1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OnNl
dE1vY2tSZWNvZ25pdGlvblJlc3VsdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaElucHV0
Q29udHJvbGxlck1vY2tJbXBsOjpzdGFydFJlY29nbml0aW9uKToKKyAgICAgICAgKiBzcmMvV2Vi
U3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGwuaDoKKyAgICAgICAgKiBzcmMvV2ViVmlld0lt
cGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwpOgorICAg
ICAgICAqIHNyYy9XZWJWaWV3SW1wbC5oOgorCiAyMDEwLTEwLTIxICBZdXpvIEZ1amlzaGltYSAg
PHl1em9AZ29vZ2xlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeCBhdHRlbXB0
IGZvciBDaHJvbWl1bSBMaW51eCBEZWJ1ZyBDbGFuZwpAQCAtMTIwLDM2ICsxNTAsNiBAQAogICAg
ICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwpOgogICAgICAgICAqIHNyYy9X
ZWJWaWV3SW1wbC5oOgogCi0yMDEwLTEwLTE5ICBMZWFuZHJvIEdyYWNpYSBHaWwgIDxsZWFuZHJv
Z3JhY2lhQGdvb2dsZS5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgSmVyZW15IE9ybG93Lgot
IAotICAgICAgICBQYXRjaCB0aGUgY3VycmVudCBzcGVlY2ggaW5wdXQgaW1wbGVtZW50YXRpb24g
dG8gdXNlIGFuZCB2YWxpZGF0ZSB0aGUKLSAgICAgICAgbmVhcmVzdCBsYW5ndWFnZSB0YWcuIFRo
ZSBsYW5ndWFnZSBpcyBub3cgcGFzc2VkIHRvIHRoZSBzdGFydFJlY29nbml0aW9uCi0gICAgICAg
IG1ldGhvZHMgc28gdGhhdCBsYW5ndWFnZS1zcGVjaWZpYyByZWNvZ25pdGlvbiBjb3VsZCBiZSB1
c2VkLiBBbHNvIGFkZGVkCi0gICAgICAgIGEgc2Vjb25kIHBhcmFtZXRlciB0byBzZXRNb2NrU3Bl
ZWNoSW5wdXRSZXN1bHQgZm9yIHRoZSBsYW5ndWFnZSB1c2VkIGluCi0gICAgICAgIHNwZWVjaCBy
ZWNvZ25pdGlvbi4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQ3MDg5Ci0KLSAgICAgICAgVGhpcyBpcyB0aGUgMm5kIG9mIGEgNC1zaWRlZCBwYXRjaCBp
biBDaHJvbWl1bSBhbmQgV2ViS2l0LiBGb3IgbW9yZQotICAgICAgICBkZXRhaWxzIHNlZSBodHRw
Oi8vY29kZXJldmlldy5jaHJvbWl1bS5vcmcvMzYxNTAwNS9zaG93IGFuZAotICAgICAgICBodHRw
Oi8vY29kZXJldmlldy5jaHJvbWl1bS5vcmcvMzU5NTAxOC9zaG93LgotCi0gICAgICAgICogcHVi
bGljL1dlYlNwZWVjaElucHV0Q29udHJvbGxlci5oOgotICAgICAgICAoV2ViS2l0OjpXZWJTcGVl
Y2hJbnB1dENvbnRyb2xsZXI6OnN0YXJ0UmVjb2duaXRpb24pOgotICAgICAgICAqIHB1YmxpYy9X
ZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrLmg6Ci0gICAgICAgICogc3JjL1NwZWVjaElucHV0
Q2xpZW50SW1wbC5jcHA6Ci0gICAgICAgIChXZWJLaXQ6OlNwZWVjaElucHV0Q2xpZW50SW1wbDo6
Y3JlYXRlKToKLSAgICAgICAgKFdlYktpdDo6U3BlZWNoSW5wdXRDbGllbnRJbXBsOjpzdGFydFJl
Y29nbml0aW9uKToKLSAgICAgICAgKiBzcmMvU3BlZWNoSW5wdXRDbGllbnRJbXBsLmg6Ci0gICAg
ICAgICogc3JjL1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsLmNwcDoKLSAgICAgICAg
KFdlYktpdDo6V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OnNldE1vY2tSZWNvZ25p
dGlvblJlc3VsdCk6Ci0gICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaElucHV0Q29udHJvbGxlck1v
Y2tJbXBsOjpzdGFydFJlY29nbml0aW9uKToKLSAgICAgICAgKiBzcmMvV2ViU3BlZWNoSW5wdXRD
b250cm9sbGVyTW9ja0ltcGwuaDoKLSAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgotICAg
ICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwpOgotICAgICAgICAqIHNyYy9X
ZWJWaWV3SW1wbC5oOgotCiAyMDEwLTEwLTIwICBEaXJrIFNjaHVsemUgIDxrcml0QHdlYmtpdC5v
cmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCBDaHJvbWl1bSB3aW4gYnVpbGQgZml4LgpkaWZmIC0t
Z2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIuaCBi
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyLmgKaW5kZXgg
NTQwODc0MWEzYzk0ZDNiZjFjNTQzZDk2ZTlmYzE2YTYzOTBkYjAyZi4uMWZkZTJhOGU3NzRmMzJl
NThmODg3MmYyNDgyMjIzMDU5Yzg4YzE0NyAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYlNwZWVjaElucHV0Q29udHJvbGxlci5oCkBAIC0zNSw2ICszNSw3IEBACiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCitjbGFzcyBXZWJTdHJpbmc7CiBzdHJ1Y3QgV2ViUmVjdDsKIAogLy8g
UHJvdmlkZXMgYW4gZW1iZWRkZXIgQVBJIGNhbGxlZCBieSBXZWJLaXQuCkBAIC00Myw3ICs0NCw3
IEBAIHB1YmxpYzoKICAgICAvLyBTdGFydHMgc3BlZWNoIHJlY29nbml0aW9uLiBTcGVlY2ggd2ls
bCBnZXQgcmVjb3JkZWQgdW50aWwgdGhlIGVuZHBvaW50ZXIgZGV0ZWN0cyBzaWxlbmNlLAogICAg
IC8vIHJ1bnMgdG8gdGhlIGxpbWl0IG9yIHN0b3BSZWNvcmRpbmcgaXMgY2FsbGVkLiBQcm9ncmVz
cyBpbmRpY2F0aW9ucyBhbmQgdGhlIHJlY29nbml6ZWQKICAgICAvLyB0ZXh0IGFyZSByZXR1cm5l
ZCB2aWEgdGhlIGxpc3RlbmVyIGludGVyZmFjZS4KLSAgICB2aXJ0dWFsIGJvb2wgc3RhcnRSZWNv
Z25pdGlvbihpbnQgcmVxdWVzdElkLCBjb25zdCBXZWJSZWN0JikKKyAgICB2aXJ0dWFsIGJvb2wg
c3RhcnRSZWNvZ25pdGlvbihpbnQgcmVxdWVzdElkLCBjb25zdCBXZWJTdHJpbmcmIGxhbmd1YWdl
LCBjb25zdCBXZWJSZWN0JiBlbGVtZW50UmVjdCkKICAgICB7CiAgICAgICAgIFdFQktJVF9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrLmggYi9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2suaAppbmRleCA5
YTI2MjM1ZmY2ZDVkY2NiYmUyNDcyNjJhZTQ0YTNhYzczOTdjM2Y0Li5iNGM1MGEwNWRjZjVhMTJm
ODQxYmY5YjY3NTVjZDI4ODE3ZjhjMDhiIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2suaAorKysgYi9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2suaApAQCAtNDQsNiArNDQsMTAgQEAg
cHVibGljOgogICAgICAgICBXZWJTcGVlY2hJbnB1dExpc3RlbmVyKiBsaXN0ZW5lcik7CiAgICAg
dmlydHVhbCB+V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9jaygpIHsgfQogCisgICAgdmlydHVh
bCB2b2lkIHNldE1vY2tSZWNvZ25pdGlvblJlc3VsdChjb25zdCBXZWJTdHJpbmcmIHJlc3VsdCwg
Y29uc3QgV2ViU3RyaW5nJiBsYW5ndWFnZSkgPSAwOworCisgICAgLy8gRklYTUU6IHRoaXMgaXMg
YSBmaXggZm9yIGEgdHdvLXNpZGVkIHBhdGNoLiBEZWxldGUgYXMgc29vbiBhcyB0aGUgY2hyb21p
dW0gc2lkZSBpcyBwYXRjaGVkLgorICAgIC8vIENocm9taXVtIHBhdGNoIG5vdCB1cGxvYWRlZCB5
ZXQsIGJ1dCB3aWxsIGRlcGVuZCBvbiBodHRwOi8vY29kZXJldmlldy5jaHJvbWl1bS5vcmcvMzYx
NTAwNS9zaG93IHBhdGNoLgogICAgIHZpcnR1YWwgdm9pZCBzZXRNb2NrUmVjb2duaXRpb25SZXN1
bHQoY29uc3QgV2ViU3RyaW5nJiByZXN1bHQpID0gMDsKIH07CiAKZGlmZiAtLWdpdCBhL1dlYktp
dC9jaHJvbWl1bS9zcmMvU3BlZWNoSW5wdXRDbGllbnRJbXBsLmNwcCBiL1dlYktpdC9jaHJvbWl1
bS9zcmMvU3BlZWNoSW5wdXRDbGllbnRJbXBsLmNwcAppbmRleCA5NjNkNDQwNWE2MmQzMmUxYThj
ZWNkNTRjMDhjNWJiZWIzYTYyZGNhLi4xMzgxOTI5NjNiNTQzMDVjNmEzODNhNTJlYzIzOGNhMGM1
YjEwNGNmIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1NwZWVjaElucHV0Q2xpZW50
SW1wbC5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9TcGVlY2hJbnB1dENsaWVudEltcGwu
Y3BwCkBAIC0zMiwxNSArMzIsMjEgQEAKICNpbmNsdWRlICJTcGVlY2hJbnB1dENsaWVudEltcGwu
aCIKIAogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSAiU3BlZWNoSW5wdXRM
aXN0ZW5lci5oIgogI2luY2x1ZGUgIldlYlNwZWVjaElucHV0Q29udHJvbGxlci5oIgogI2luY2x1
ZGUgIldlYlN0cmluZy5oIgogI2luY2x1ZGUgIldlYlZpZXdDbGllbnQuaCIKLSNpbmNsdWRlICJw
YWdlL1NwZWVjaElucHV0TGlzdGVuZXIuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgog
CiAjaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK1Bhc3NP
d25QdHI8U3BlZWNoSW5wdXRDbGllbnRJbXBsPiBTcGVlY2hJbnB1dENsaWVudEltcGw6OmNyZWF0
ZShXZWJWaWV3Q2xpZW50KiBjbGllbnQpCit7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBTcGVl
Y2hJbnB1dENsaWVudEltcGwoY2xpZW50KSk7Cit9CisKIFNwZWVjaElucHV0Q2xpZW50SW1wbDo6
U3BlZWNoSW5wdXRDbGllbnRJbXBsKFdlYlZpZXdDbGllbnQqIHdlYl92aWV3X2NsaWVudCkKICAg
ICA6IG1fY29udHJvbGxlcih3ZWJfdmlld19jbGllbnQgPyB3ZWJfdmlld19jbGllbnQtPnNwZWVj
aElucHV0Q29udHJvbGxlcih0aGlzKSA6IDApCiAgICAgLCBtX2xpc3RlbmVyKDApCkBAIC01Niwx
MCArNjIsMTAgQEAgdm9pZCBTcGVlY2hJbnB1dENsaWVudEltcGw6OnNldExpc3RlbmVyKFdlYkNv
cmU6OlNwZWVjaElucHV0TGlzdGVuZXIqIGxpc3RlbmVyKQogICAgIG1fbGlzdGVuZXIgPSBsaXN0
ZW5lcjsKIH0KIAotYm9vbCBTcGVlY2hJbnB1dENsaWVudEltcGw6OnN0YXJ0UmVjb2duaXRpb24o
aW50IHJlcXVlc3RJZCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZWxlbWVudFJlY3QpCitib29s
IFNwZWVjaElucHV0Q2xpZW50SW1wbDo6c3RhcnRSZWNvZ25pdGlvbihpbnQgcmVxdWVzdElkLCBj
b25zdCBTdHJpbmcmIGxhbmd1YWdlLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBlbGVtZW50UmVj
dCkKIHsKICAgICBBU1NFUlQobV9saXN0ZW5lcik7Ci0gICAgcmV0dXJuIG1fY29udHJvbGxlci0+
c3RhcnRSZWNvZ25pdGlvbihyZXF1ZXN0SWQsIGVsZW1lbnRSZWN0KTsKKyAgICByZXR1cm4gbV9j
b250cm9sbGVyLT5zdGFydFJlY29nbml0aW9uKHJlcXVlc3RJZCwgbGFuZ3VhZ2UsIGVsZW1lbnRS
ZWN0KTsKIH0KIAogdm9pZCBTcGVlY2hJbnB1dENsaWVudEltcGw6OnN0b3BSZWNvcmRpbmcoaW50
IHJlcXVlc3RJZCkKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvU3BlZWNoSW5wdXRD
bGllbnRJbXBsLmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL1NwZWVjaElucHV0Q2xpZW50SW1wbC5o
CmluZGV4IDgxN2IzMmIxMjQxNGIzYTA3ZGZhM2FlMzUxOTA4N2RlYTVhMGY3MzMuLmM3ZDFmYTNh
NmM1ODU1NzdmYzk0NTJjNGRiY2Q1ZTg3MGZjODdhM2EgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJv
bWl1bS9zcmMvU3BlZWNoSW5wdXRDbGllbnRJbXBsLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9TcGVlY2hJbnB1dENsaWVudEltcGwuaApAQCAtMzMsOCArMzMsMTUgQEAKIAogI2lmIEVOQUJM
RShJTlBVVF9TUEVFQ0gpCiAKKyNpbmNsdWRlICJTcGVlY2hJbnB1dENsaWVudC5oIgogI2luY2x1
ZGUgIldlYlNwZWVjaElucHV0TGlzdGVuZXIuaCIKLSNpbmNsdWRlICJwYWdlL1NwZWVjaElucHV0
Q2xpZW50LmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvT3duUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworbmFtZXNwYWNlIFdURiB7CitjbGFz
cyBTdHJpbmc7Cit9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFNwZWVjaElucHV0TGlz
dGVuZXI7CkBAIC00OSwxMiArNTYsMTIgQEAgY2xhc3MgU3BlZWNoSW5wdXRDbGllbnRJbXBsCiAg
ICAgOiBwdWJsaWMgV2ViQ29yZTo6U3BlZWNoSW5wdXRDbGllbnQsCiAgICAgICBwdWJsaWMgV2Vi
U3BlZWNoSW5wdXRMaXN0ZW5lciB7CiBwdWJsaWM6Ci0gICAgU3BlZWNoSW5wdXRDbGllbnRJbXBs
KFdlYlZpZXdDbGllbnQqKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxTcGVlY2hJbnB1dENsaWVu
dEltcGw+IGNyZWF0ZShXZWJWaWV3Q2xpZW50Kik7CiAgICAgdmlydHVhbCB+U3BlZWNoSW5wdXRD
bGllbnRJbXBsKCk7CiAKICAgICAvLyBTcGVlY2hJbnB1dENsaWVudCBtZXRob2RzLgogICAgIHZv
aWQgc2V0TGlzdGVuZXIoV2ViQ29yZTo6U3BlZWNoSW5wdXRMaXN0ZW5lciopOwotICAgIGJvb2wg
c3RhcnRSZWNvZ25pdGlvbihpbnQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKKyAgICBib29s
IHN0YXJ0UmVjb2duaXRpb24oaW50LCBjb25zdCBTdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0Jik7CiAgICAgdm9pZCBzdG9wUmVjb3JkaW5nKGludCk7CiAgICAgdm9pZCBjYW5jZWxSZWNv
Z25pdGlvbihpbnQpOwogCkBAIC02NCw2ICs3MSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZENv
bXBsZXRlUmVjb2duaXRpb24oaW50KTsKIAogcHJpdmF0ZToKKyAgICBTcGVlY2hJbnB1dENsaWVu
dEltcGwoV2ViVmlld0NsaWVudCopOworCiAgICAgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyKiBt
X2NvbnRyb2xsZXI7IC8vIFRvIGNhbGwgaW50byB0aGUgZW1iZWRkZXIuCiAgICAgV2ViQ29yZTo6
U3BlZWNoSW5wdXRMaXN0ZW5lciogbV9saXN0ZW5lcjsKIH07CmRpZmYgLS1naXQgYS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsLmNwcCBiL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGwuY3BwCmluZGV4
IDYwYzRmZWQ4NTJiMjg0ZTAyNzFhZDAwZWQ5NzEwMDJhMmY1N2E0YjYuLjQ1YzZmZjA4NjJmMDI0
ZmMxODA1NzMzYzE2YTkzMzA1NzM3YWMzOTMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGwuY3BwCkBAIC01Nyw3ICs1
NywxMiBAQCBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6fldlYlNwZWVjaElucHV0
Q29udHJvbGxlck1vY2tJbXBsKCkKIAogdm9pZCBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2Nr
SW1wbDo6c2V0TW9ja1JlY29nbml0aW9uUmVzdWx0KGNvbnN0IFdlYlN0cmluZyYgcmVzdWx0KQog
ewotICAgIG1fd2ViY29yZU1vY2stPnNldFJlY29nbml0aW9uUmVzdWx0KHJlc3VsdCk7CisgICAg
bV93ZWJjb3JlTW9jay0+c2V0UmVjb2duaXRpb25SZXN1bHQocmVzdWx0LCBXZWJTdHJpbmc6OmZy
b21VVEY4KCIiKSk7Cit9CisKK3ZvaWQgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6
OnNldE1vY2tSZWNvZ25pdGlvblJlc3VsdChjb25zdCBXZWJTdHJpbmcmIHJlc3VsdCwgY29uc3Qg
V2ViU3RyaW5nICZsYW5ndWFnZSkKK3sKKyAgICBtX3dlYmNvcmVNb2NrLT5zZXRSZWNvZ25pdGlv
blJlc3VsdChyZXN1bHQsIGxhbmd1YWdlKTsKIH0KIAogdm9pZCBXZWJTcGVlY2hJbnB1dENvbnRy
b2xsZXJNb2NrSW1wbDo6ZGlkQ29tcGxldGVSZWNvcmRpbmcoaW50IHJlcXVlc3RJZCkKQEAgLTc1
LDkgKzgwLDkgQEAgdm9pZCBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6c2V0UmVj
b2duaXRpb25SZXN1bHQoaW50IHJlcXVlc3RJZCwgY29uc3QKICAgICBtX2xpc3RlbmVyLT5zZXRS
ZWNvZ25pdGlvblJlc3VsdChyZXF1ZXN0SWQsIHJlc3VsdCk7CiB9CiAKLWJvb2wgV2ViU3BlZWNo
SW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OnN0YXJ0UmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCwg
Y29uc3QgV2ViUmVjdCYgZWxlbWVudFJlY3QpCitib29sIFdlYlNwZWVjaElucHV0Q29udHJvbGxl
ck1vY2tJbXBsOjpzdGFydFJlY29nbml0aW9uKGludCByZXF1ZXN0SWQsIGNvbnN0IFdlYlN0cmlu
ZyYgbGFuZ3VhZ2UsIGNvbnN0IFdlYlJlY3QmIGVsZW1lbnRSZWN0KQogewotICAgIHJldHVybiBt
X3dlYmNvcmVNb2NrLT5zdGFydFJlY29nbml0aW9uKHJlcXVlc3RJZCwgZWxlbWVudFJlY3QpOwor
ICAgIHJldHVybiBtX3dlYmNvcmVNb2NrLT5zdGFydFJlY29nbml0aW9uKHJlcXVlc3RJZCwgbGFu
Z3VhZ2UsIGVsZW1lbnRSZWN0KTsKIH0KIAogdm9pZCBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJN
b2NrSW1wbDo6Y2FuY2VsUmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCkKZGlmZiAtLWdpdCBhL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGwuaCBiL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGwuaAppbmRl
eCBlZGJmY2EzZWU2MGU5Mzk0Mjg5M2UyNzIxODkzZTQzYTBlYjg3YzVmLi4xYjMwNTNiZjA5Mjc1
M2VmNzkyOTNkZGNhMTJlODQzNTIwNmJkYmMwIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsLmgKKysrIGIvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbC5oCkBAIC0zNyw2ICszNywx
MCBAQAogI2luY2x1ZGUgIldlYlN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIAor
bmFtZXNwYWNlIFdURiB7CitjbGFzcyBTdHJpbmc7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIFNwZWVjaElucHV0Q2xpZW50TW9jazsKIH0KQEAgLTU3LDExICs2MSwxNSBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRSZWNvZ25pdGlvblJlc3VsdChpbnQgcmVxdWVzdElkLCBjb25zdCBX
VEY6OlN0cmluZyYgcmVzdWx0KTsKIAogICAgIC8vIFdlYlNwZWVjaElucHV0Q29udHJvbGxlciBt
ZXRob2RzLgotICAgIGJvb2wgc3RhcnRSZWNvZ25pdGlvbihpbnQgcmVxdWVzdElkLCBjb25zdCBX
ZWJSZWN0JiBlbGVtZW50UmVjdCk7CisgICAgYm9vbCBzdGFydFJlY29nbml0aW9uKGludCByZXF1
ZXN0SWQsIGNvbnN0IFdlYlN0cmluZyYgbGFuZ3VhZ2UsIGNvbnN0IFdlYlJlY3QmIGVsZW1lbnRS
ZWN0KTsKICAgICB2b2lkIGNhbmNlbFJlY29nbml0aW9uKGludCByZXF1ZXN0SWQpOwogICAgIHZv
aWQgc3RvcFJlY29yZGluZyhpbnQgcmVxdWVzdElkKTsKIAogICAgIC8vIFdlYlNwZWVjaElucHV0
Q29udHJvbGxlck1vY2sgbWV0aG9kcy4KKyAgICB2b2lkIHNldE1vY2tSZWNvZ25pdGlvblJlc3Vs
dChjb25zdCBXZWJTdHJpbmcmIHJlc3VsdCwgY29uc3QgV2ViU3RyaW5nJiBsYW5ndWFnZSk7CisK
KyAgICAvLyBGSVhNRTogdGhpcyBpcyBhIGZpeCBmb3IgYSB0d28tc2lkZWQgcGF0Y2guIERlbGV0
ZSBhcyBzb29uIGFzIHRoZSBjaHJvbWl1bSBzaWRlIGlzIHBhdGNoZWQuCisgICAgLy8gQ2hyb21p
dW0gcGF0Y2ggbm90IHVwbG9hZGVkIHlldCwgYnV0IHdpbGwgZGVwZW5kIG9uIGh0dHA6Ly9jb2Rl
cmV2aWV3LmNocm9taXVtLm9yZy8zNjE1MDA1L3Nob3cgcGF0Y2guCiAgICAgdm9pZCBzZXRNb2Nr
UmVjb2duaXRpb25SZXN1bHQoY29uc3QgV2ViU3RyaW5nJiByZXN1bHQpOwogCiBwcml2YXRlOgpA
QCAtNzIsNCArODAsMyBAQCBwcml2YXRlOgogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRp
ZiAvLyBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbF9oCi0KZGlmZiAtLWdpdCBhL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5jcHAKaW5kZXggOTI5ZjkxYWJmNDQwMTFlNTBkMzM1MjQxZjU2MWI4NjdhZjg4
YzRmZS4uN2ZjOWVmNzYwNDcwYjM2NTJmM2EzN2JkMjgzYWQxMzZiODk1ZGJhNyAxMDA2NDQKLS0t
IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTg4LDYgKzg4LDcgQEAKICNpbmNsdWRlICJTZWN1
cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNlbGVjdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRl
ICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIlNwZWVjaElucHV0Q2xpZW50SW1wbC5oIgogI2luY2x1
ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSAiVHlwaW5nQ29tbWFuZC5oIgogI2luY2x1ZGUgIlVzZXJH
ZXN0dXJlSW5kaWNhdG9yLmgiCkBAIC0yODIsNyArMjgzLDcgQEAgV2ViVmlld0ltcGw6OldlYlZp
ZXdJbXBsKFdlYlZpZXdDbGllbnQqIGNsaWVudCwgV2ViRGV2VG9vbHNBZ2VudENsaWVudCogZGV2
VG9vbHMKICAgICAsIG1fY29tcG9zaXRvckNyZWF0aW9uRmFpbGVkKGZhbHNlKQogI2VuZGlmCiAj
aWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKLSAgICAsIG1fc3BlZWNoSW5wdXRDbGllbnQoY2xpZW50
KQorICAgICwgbV9zcGVlY2hJbnB1dENsaWVudChTcGVlY2hJbnB1dENsaWVudEltcGw6OmNyZWF0
ZShjbGllbnQpKQogI2VuZGlmCiAgICAgLCBtX2RldmljZU9yaWVudGF0aW9uQ2xpZW50UHJveHko
bmV3IERldmljZU9yaWVudGF0aW9uQ2xpZW50UHJveHkoY2xpZW50ID8gY2xpZW50LT5kZXZpY2VP
cmllbnRhdGlvbkNsaWVudCgpIDogMCkpCiB7CkBAIC0zMDUsNyArMzA2LDcgQEAgV2ViVmlld0lt
cGw6OldlYlZpZXdJbXBsKFdlYlZpZXdDbGllbnQqIGNsaWVudCwgV2ViRGV2VG9vbHNBZ2VudENs
aWVudCogZGV2VG9vbHMKICAgICBwYWdlQ2xpZW50cy5kcmFnQ2xpZW50ID0gJm1fZHJhZ0NsaWVu
dEltcGw7CiAgICAgcGFnZUNsaWVudHMuaW5zcGVjdG9yQ2xpZW50ID0gJm1faW5zcGVjdG9yQ2xp
ZW50SW1wbDsKICNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQotICAgIHBhZ2VDbGllbnRzLnNwZWVj
aElucHV0Q2xpZW50ID0gJm1fc3BlZWNoSW5wdXRDbGllbnQ7CisgICAgcGFnZUNsaWVudHMuc3Bl
ZWNoSW5wdXRDbGllbnQgPSBtX3NwZWVjaElucHV0Q2xpZW50LmdldCgpOwogI2VuZGlmCiAgICAg
cGFnZUNsaWVudHMuZGV2aWNlT3JpZW50YXRpb25DbGllbnQgPSBtX2RldmljZU9yaWVudGF0aW9u
Q2xpZW50UHJveHkuZ2V0KCk7CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAppbmRleCA4NDEw
ZWJkNDg1MjMwYzBlYWUxNWE1ZmExYTVjYWNjNmU4OGNkNDExLi4wNTA5ZDA1MGRiYTFhMTUwNTEx
OGU0NDc2N2JkNzRmMzgwYzE0NGRkIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlZpZXdJbXBsLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCkBAIC00
OSw3ICs0OSw2IEBACiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIkxheWVyUmVuZGVy
ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlvblByZXNlbnRlckltcGwuaCIKLSNp
bmNsdWRlICJTcGVlY2hJbnB1dENsaWVudEltcGwuaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIApAQCAtNzQsNiArNzMsNyBAQCBjbGFzcyBB
dXRvRmlsbFBvcHVwTWVudUNsaWVudDsKIGNsYXNzIENvbnRleHRNZW51Q2xpZW50SW1wbDsKIGNs
YXNzIERldmljZU9yaWVudGF0aW9uQ2xpZW50UHJveHk7CiBjbGFzcyBEcmFnU2Nyb2xsVGltZXI7
CitjbGFzcyBTcGVlY2hJbnB1dENsaWVudEltcGw7CiBjbGFzcyBXZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OwogY2xhc3MgV2ViRGV2VG9vbHNBZ2VudENsaWVudDsKIGNsYXNzIFdlYkRldlRvb2xzQWdl
bnRQcml2YXRlOwpAQCAtNTQ3LDcgKzU0Nyw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0
IFdlYklucHV0RXZlbnQqIG1fY3VycmVudElucHV0RXZlbnQ7CiAKICNpZiBFTkFCTEUoSU5QVVRf
U1BFRUNIKQotICAgIFNwZWVjaElucHV0Q2xpZW50SW1wbCBtX3NwZWVjaElucHV0Q2xpZW50Owor
ICAgIE93blB0cjxTcGVlY2hJbnB1dENsaWVudEltcGw+IG1fc3BlZWNoSW5wdXRDbGllbnQ7CiAj
ZW5kaWYKICAgICAvLyBJZiB3ZSBhdHRlbXB0IHRvIGZldGNoIHRoZSBvbi1zY3JlZW4gR3JhcGhp
Y3NDb250ZXh0M0QgYmVmb3JlCiAgICAgLy8gdGhlIGNvbXBvc2l0b3IgaGFzIGJlZW4gdHVybmVk
IG9uLCB3ZSBuZWVkIHRvIGluc3RhbnRpYXRlIGl0CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9D
aGFuZ2VMb2cgYi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKaW5kZXggODZiYTcyZjBiNzkyNWNiMmNk
NWVlNjNlNWRiYTdlZmU5NzAyNzBmYy4uZGVhZTgyZDViYzg5ZjY3M2I1NGNlOTMyZWRhMjdjZGY5
OTZkYTkyNyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1dlYktpdFRv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEwLTEwLTIyICBMZWFuZHJvIEdyYWNp
YSBHaWwgIDxsZWFuZHJvZ3JhY2lhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
SmVyZW15IE9ybG93LgorCisgICAgICAgIEFkZGVkIGEgc2Vjb25kIHBhcmFtZXRlciB0byBzZXRN
b2NrU3BlZWNoSW5wdXRSZXN1bHQgZm9yCisgICAgICAgIHRoZSBsYW5ndWFnZSB1c2VkIGluIHNw
ZWVjaCBpbnB1dC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQ3MDg5CisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxl
ci5jcHA6CisgICAgICAgIChzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHRDYWxsYmFjayk6CisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAg
IChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KToKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwOgorICAg
ICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdCk6Cisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tOgor
ICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdCk6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwOgor
ICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdCk6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNw
cDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrU3BlZWNoSW5wdXRSZXN1
bHQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3gu
Y3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tTcGVlY2hJbnB1dFJl
c3VsdCk6CisKIDIwMTAtMTAtMjEgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VudCBUYW11cmEuCkBAIC01NzEsMjIgKzU5Niw2IEBA
CiAgICAgICAgICogRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNw
cDoKICAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrU3BlZWNoSW5wdXRSZXN1
bHQpOgogCi0yMDEwLTEwLTE5ICBMZWFuZHJvIEdyYWNpYSBHaWwgIDxsZWFuZHJvZ3JhY2lhQGdv
b2dsZS5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgSmVyZW15IE9ybG93LgotCi0gICAgICAg
IEFkZGVkIGEgc2Vjb25kIHBhcmFtZXRlciB0byBzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQgZm9y
Ci0gICAgICAgIHRoZSBsYW5ndWFnZSB1c2VkIGluIHNwZWVjaCBpbnB1dC4KLSAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3MDg5Ci0KLSAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6Ci0gICAgICAgIChzZXRNb2Nr
U3BlZWNoSW5wdXRSZXN1bHRDYWxsYmFjayk6Ci0gICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5
b3V0VGVzdENvbnRyb2xsZXIuaDoKLSAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9M
YXlvdXRUZXN0Q29udHJvbGxlci5jcHA6Ci0gICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6
c2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KToKLSAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ndGsv
TGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwOgotICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdCk6Ci0KIDIwMTAtMTAtMTkgIEFkYW0gUm9iZW4g
IDxhcm9iZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFRlYWNoIHVwZGF0ZS13ZWJraXQtc3VwcG9y
dC1saWJzIGFib3V0IHRoZSBuZXcgdmVyc2lvbmluZyBvZgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwIGIvV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IGI1Y2M4NzQyMTVi
NDBmNTkwNzU1YTQwNDdlYmRkNWQ5ZjhlZDYyNzkuLmRiNDcwYzg2MjJjMDNkYmE0YWQ4OTAxN2Iw
ZWM5MjhiYmQ0YTM3YzEgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xh
eW91dFRlc3RDb250cm9sbGVyLmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9M
YXlvdXRUZXN0Q29udHJvbGxlci5jcHAKQEAgLTEwNzAsMTQgKzEwNzAsMTcgQEAgc3RhdGljIEpT
VmFsdWVSZWYgc2V0TW9ja0dlb2xvY2F0aW9uRXJyb3JDYWxsYmFjayhKU0NvbnRleHRSZWYgY29u
dGV4dCwgSlNPYmplY3QKIAogc3RhdGljIEpTVmFsdWVSZWYgc2V0TW9ja1NwZWVjaElucHV0UmVz
dWx0Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBK
U09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1
ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewotICAgIGlmIChhcmd1
bWVudENvdW50IDwgMSkKKyAgICBpZiAoYXJndW1lbnRDb3VudCA8IDIpCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIAogICAgIEpTUmV0YWluUHRyPEpTU3Ry
aW5nUmVmPiByZXN1bHQoQWRvcHQsIEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgYXJndW1l
bnRzWzBdLCBleGNlcHRpb24pKTsKICAgICBBU1NFUlQoISpleGNlcHRpb24pOwogCisgICAgSlNS
ZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGxhbmd1YWdlKEFkb3B0LCBKU1ZhbHVlVG9TdHJpbmdDb3B5
KGNvbnRleHQsIGFyZ3VtZW50c1sxXSwgZXhjZXB0aW9uKSk7CisgICAgQVNTRVJUKCEqZXhjZXB0
aW9uKTsKKwogICAgIExheW91dFRlc3RDb250cm9sbGVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nh
c3Q8TGF5b3V0VGVzdENvbnRyb2xsZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkp
OwotICAgIGNvbnRyb2xsZXItPnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdChyZXN1bHQuZ2V0KCkp
OworICAgIGNvbnRyb2xsZXItPnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdChyZXN1bHQuZ2V0KCks
IGxhbmd1YWdlLmdldCgpKTsKIAogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250
ZXh0KTsKIH0KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRl
c3RDb250cm9sbGVyLmggYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29u
dHJvbGxlci5oCmluZGV4IDY4OWUxMTQ1NzUwOGRmZmU3ZDg4N2JkZTE2NDgyMTQwYmE3NWJjMWEu
LjQ0MTBiZmQyY2FiZDIzMWI5NzFkMTk0ODA4YzZkZWYyYmYzZmFlNDYgMTAwNjQ0Ci0tLSBhL1dl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKKysrIGIvV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaApAQCAtOTQsNyAr
OTQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRNb2NrRGV2aWNlT3JpZW50YXRpb24oYm9vbCBj
YW5Qcm92aWRlQWxwaGEsIGRvdWJsZSBhbHBoYSwgYm9vbCBjYW5Qcm92aWRlQmV0YSwgZG91Ymxl
IGJldGEsIGJvb2wgY2FuUHJvdmlkZUdhbW1hLCBkb3VibGUgZ2FtbWEpOwogICAgIHZvaWQgc2V0
TW9ja0dlb2xvY2F0aW9uRXJyb3IoaW50IGNvZGUsIEpTU3RyaW5nUmVmIG1lc3NhZ2UpOwogICAg
IHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oZG91YmxlIGxhdGl0dWRlLCBkb3VibGUg
bG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJhY3kpOwotICAgIHZvaWQgc2V0TW9ja1NwZWVjaElucHV0
UmVzdWx0KEpTU3RyaW5nUmVmIHJlc3VsdCk7CisgICAgdm9pZCBzZXRNb2NrU3BlZWNoSW5wdXRS
ZXN1bHQoSlNTdHJpbmdSZWYgcmVzdWx0LCBKU1N0cmluZ1JlZiBsYW5ndWFnZSk7CiAgICAgdm9p
ZCBzZXRQZXJzaXN0ZW50VXNlclN0eWxlU2hlZXRMb2NhdGlvbihKU1N0cmluZ1JlZiBwYXRoKTsK
ICAgICB2b2lkIHNldFBsdWdpbnNFbmFibGVkKGJvb2wgZmxhZyk7CiAgICAgdm9pZCBzZXRQb3B1
cEJsb2NraW5nRW5hYmxlZChib29sIGZsYWcpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwIGIvV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCmluZGV4
IDgyZmQwODUxNjdkYjNlZWFiZDk1Y2RmNGM4MTcwZjdkZWNmZmExNzUuLmQ5ZDgxODM1NmUzMzkw
MWEyM2YxYjI1YjMzMjJmNjFiOTc2YmJiYzIgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAorKysgYi9XZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKQEAg
LTE1MjYsMTAgKzE1MjYsMTAgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6YWJvcnRNb2Rh
bChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWEKIHZvaWQgTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdChjb25zdCBDcHBBcmd1bWVu
dExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQogewogICAgIHJlc3VsdC0+c2V0
TnVsbCgpOwotICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpIDwgMSB8fCAhYXJndW1lbnRzWzBdLmlz
U3RyaW5nKCkpCisgICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgPCAyIHx8ICFhcmd1bWVudHNbMF0u
aXNTdHJpbmcoKSB8fCAhYXJndW1lbnRzWzFdLmlzU3RyaW5nKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIG1fc3BlZWNoSW5wdXRDb250cm9sbGVyTW9jay0+c2V0TW9ja1JlY29nbml0aW9uUmVz
dWx0KGNwcFZhcmlhbnRUb1dlYlN0cmluZyhhcmd1bWVudHNbMF0pKTsKKyAgICBtX3NwZWVjaElu
cHV0Q29udHJvbGxlck1vY2stPnNldE1vY2tSZWNvZ25pdGlvblJlc3VsdChjcHBWYXJpYW50VG9X
ZWJTdHJpbmcoYXJndW1lbnRzWzBdKSwgY3BwVmFyaWFudFRvV2ViU3RyaW5nKGFyZ3VtZW50c1sx
XSkpOwogfQogCiBXZWJLaXQ6OldlYlNwZWVjaElucHV0Q29udHJvbGxlciogTGF5b3V0VGVzdENv
bnRyb2xsZXI6OnNwZWVjaElucHV0Q29udHJvbGxlcihXZWJLaXQ6OldlYlNwZWVjaElucHV0TGlz
dGVuZXIqIGxpc3RlbmVyKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
Z3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAKaW5kZXggMTgxZWY5ZjBiMjljZTYw
OThiMThiZDY0MDNlMWVjYWIxOGUwM2I0NC4uZjNkYjYyMmU2Njc4MDFlNzBmNjQ4NDVjYzBmNDkw
NzQ1YzcwZjkyNCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xh
eW91dFRlc3RDb250cm9sbGVyR3RrLmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCkBAIC01MDAsNyArNTAwLDcgQEAgdm9p
ZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKGJvb2wgYWxs
b3cpCiAgICAgc2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uQ29tbW9uKGFsbG93KTsKIH0KIAotdm9p
ZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KEpTU3RyaW5n
UmVmIHJlc3VsdCkKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tTcGVlY2hJbnB1
dFJlc3VsdChKU1N0cmluZ1JlZiByZXN1bHQsIEpTU3RyaW5nUmVmIGxhbmd1YWdlKQogewogICAg
IC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIHNwZWVjaCBpbnB1dCBsYXlvdXQgdGVzdHMuCiAgICAg
Ly8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTQ4NS4KZGlm
ZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJv
bGxlck1hYy5tbSBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29u
dHJvbGxlck1hYy5tbQppbmRleCBjNWQ1YTkwNjk1OTliYTRiY2ZjMmFjYTMxMWM3YTNhNzY1YWI1
ZTFkLi4xNTBiNmY5Y2QzYTViY2Y0OTAxMDc3MThkZmZmOTMzZDVjOTRjNGQxIDEwMDY0NAotLS0g
YS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMu
bW0KKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9s
bGVyTWFjLm1tCkBAIC0zNzEsNyArMzcxLDcgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
c2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKGJvb2wgYWxsb3cpCiAgICAgW1tbbWFpbkZyYW1lIHdl
YlZpZXddIFVJRGVsZWdhdGVdIGRpZFNldE1vY2tHZW9sb2NhdGlvblBlcm1pc3Npb25dOwogfQog
Ci12b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoSlNT
dHJpbmdSZWYgcmVzdWx0KQordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja1NwZWVj
aElucHV0UmVzdWx0KEpTU3RyaW5nUmVmIHJlc3VsdCwgSlNTdHJpbmdSZWYgbGFuZ3VhZ2UpCiB7
CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3Igc3BlZWNoIGlucHV0IGxheW91dCB0ZXN0cy4K
ICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NDg1
LgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENv
bnRyb2xsZXJRdC5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0
Q29udHJvbGxlclF0LmNwcAppbmRleCBkMzZhMDc0NGU2ODZkMzNhZTU2MWJjYTFlYzVjMjk0Mjdi
NGU4YzFiLi4yMDU2YjQwYmZkMWE2MzgwNDRkZWRjODRjYzA1YmVhYmQ3YmUwY2IyIDEwMDY0NAot
LS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0
LmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJv
bGxlclF0LmNwcApAQCAtNzU5LDcgKzc1OSw3IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvCiAg
ICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKGxh
dGl0dWRlLCBsb25naXR1ZGUsIGFjY3VyYWN5KTsKIH0KIAotdm9pZCBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6c2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KGNvbnN0IFFTdHJpbmcmIHJlc3VsdCkKK3Zv
aWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdChjb25zdCBR
U3RyaW5nJiByZXN1bHQsIGNvbnN0IFFTdHJpbmcmIGxhbmd1YWdlKQogewogICAgIC8vIEZJWE1F
OiBJbXBsZW1lbnQgZm9yIHNwZWVjaCBpbnB1dCBsYXlvdXQgdGVzdHMuCiAgICAgLy8gU2VlIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTQ4NS4KZGlmZiAtLWdpdCBh
L1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaCBi
L1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaApp
bmRleCAzNjg0OTQ2YTQwNTUwNTVhYzE0YzQxZmYyMzE1ZTk3MzIxYjU5ZGQ5Li4xMDZjNzNiZTIw
MjNiMTA3ZmM1MmM3MzY1NGQxNWFmZWQ0ZTgzZTUwIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmgKKysrIGIvV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oCkBAIC0yMTUsNyAr
MjE1LDcgQEAgcHVibGljIHNsb3RzOgogICAgIGJvb2wgaXNHZW9sb2NhdGlvblBlcm1pc3Npb25T
ZXQoKSBjb25zdCB7IHJldHVybiBtX2lzR2VvbG9jYXRpb25QZXJtaXNzaW9uU2V0OyB9CiAgICAg
Ym9vbCBnZW9sb2NhdGlvblBlcm1pc3Npb24oKSBjb25zdCB7IHJldHVybiBtX2dlb2xvY2F0aW9u
UGVybWlzc2lvbjsgfQogCi0gICAgdm9pZCBzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoY29uc3Qg
UVN0cmluZyYgcmVzdWx0KTsKKyAgICB2b2lkIHNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdChjb25z
dCBRU3RyaW5nJiByZXN1bHQsIGNvbnN0IFFTdHJpbmcmIGxhbmd1YWdlKTsKIAogICAgIC8vIEVt
cHR5IHN0dWIgbWV0aG9kIHRvIGtlZXAgcGFyaXR5IHdpdGggb2JqZWN0IG1vZGVsIGV4cG9zZWQg
YnkgZ2xvYmFsIExheW91dFRlc3RDb250cm9sbGVyLgogICAgIHZvaWQgYWJvcnRNb2RhbCgpIHt9
CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENv
bnRyb2xsZXJXaW4uY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRl
c3RDb250cm9sbGVyV2luLmNwcAppbmRleCA5ZThlZDFlNjk1N2Q3ZjdjYTRmZWFkOTFkODdiOWI1
NmZiNDIxNDU5Li5kN2M0MWUwYTZiZjU3ZWY0ZDA5OTE1ZTgzYTQ5MjEyNWNkYTU4Y2Q4IDEwMDY0
NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xs
ZXJXaW4uY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0
Q29udHJvbGxlcldpbi5jcHAKQEAgLTQwNSw3ICs0MDUsNyBAQCB2b2lkIExheW91dFRlc3RDb250
cm9sbGVyOjpzZXRHZW9sb2NhdGlvblBlcm1pc3Npb24oYm9vbCBhbGxvdykKICAgICBzZXRHZW9s
b2NhdGlvblBlcm1pc3Npb25Db21tb24oYWxsb3cpOwogfQogCi12b2lkIExheW91dFRlc3RDb250
cm9sbGVyOjpzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoSlNTdHJpbmdSZWYgcmVzdWx0KQordm9p
ZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KEpTU3RyaW5n
UmVmIHJlc3VsdCwgSlNTdHJpbmdSZWYgbGFuZ3VhZ2UpCiB7CiAgICAgLy8gRklYTUU6IEltcGxl
bWVudCBmb3Igc3BlZWNoIGlucHV0IGxheW91dCB0ZXN0cy4KICAgICAvLyBTZWUgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NDg1LgpkaWZmIC0tZ2l0IGEvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAgYi9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcAppbmRl
eCBlZWZjNTg3ODFlMGExZWFiY2QwZmQ4MTM4OTMyY2M0M2M0ZDc4NDdmLi4zMjYxNGMxMTMzZGRm
OGFhZDc3ZWZiMGQxZDRhNmIzMGU0MDExMDhiIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcAorKysgYi9XZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcApAQCAtMzIwLDcg
KzMyMCw3IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEdlb2xvY2F0aW9uUGVybWlz
c2lvbihib29sIGFsbG93KQogICAgIHNldEdlb2xvY2F0aW9uUGVybWlzc2lvbkNvbW1vbihhbGxv
dyk7CiB9CiAKLXZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tTcGVlY2hJbnB1dFJl
c3VsdChKU1N0cmluZ1JlZiByZXN1bHQpCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRN
b2NrU3BlZWNoSW5wdXRSZXN1bHQoSlNTdHJpbmdSZWYgcmVzdWx0LCBKU1N0cmluZ1JlZiBsYW5n
dWFnZSkKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBzcGVlY2ggaW5wdXQgbGF5b3V0
IHRlc3RzLgogICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9Mzk0ODUuCkBAIC01MjgsNCArNTI4LDMgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IExh
eW91dFRlc3RDb250cm9sbGVyOjpwYWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVscyhpbnQgcGEKICAg
ICAvLyBGSVhNRTogSW1wbGVtZW50CiAgICAgcmV0dXJuIDA7CiB9Ci0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71569</attachid>
            <date>2010-10-22 09:34:28 -0700</date>
            <delta_ts>2010-10-27 09:49:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47089-20101022173425.patch</filename>
            <type>text/plain</type>
            <size>48002</size>
            <attacher name="Leandro Graciá Gil">leandrogracia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlNmVjOTliZGQ0NDFjZTNjMzliYTA4OTQwOTNiMDI3Mjk5NGQ5YmUwLi5kY2FjYWM1
ZWZmYmFiZWQzOWU4Y2U1ZDk2ODBmMjBkZTc2ZDgyNTAyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAK
KzIwMTAtMTAtMjIgIExlYW5kcm8gR3JhY2lhIEdpbCAgPGxlYW5kcm9ncmFjaWFAZ29vZ2xlLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBKZXJlbXkgT3Jsb3cuCisKKyAgICAgICAgQWRkZWQg
YSBsYXlvdXQgdGVzdCBmb3IgdGhlIGxhbmd1YWdlIHRhZyBpbiBzcGVlY2ggaW5wdXQuIFVwZGF0
ZWQKKyAgICAgICAgdGhlIHNwZWVjaCBidXR0b24gdGVzdHMgdG8gaW5jbHVkZSB0aGUgbmV3IGxh
bmd1YWdlIHBhcmFtZXRlciBpbiB0aGUKKyAgICAgICAgbW9jayByZXN1bHQuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzA4OQorCisgICAgICAgICog
ZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1sYW5ndWFnZS10YWctZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L3NwZWVjaC9pbnB1dC10ZXh0LWxhbmd1YWdlLXRhZy5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L3NwZWVjaC9pbnB1dC10ZXh0LXNwZWVjaGJ1dHRvbi5odG1sOiBB
ZGRlZCBhbiBlbXB0eSBsYW5ndWFnZQorICAgICAgICAgIHBhcmFtZXRlci4KKyAgICAgICAgKiBm
YXN0L3NwZWVjaC9zcGVlY2gtYnV0dG9uLWlnbm9yZS1nZW5lcmF0ZWQtZXZlbnRzLmh0bWw6IEFk
ZGVkIGFuCisgICAgICAgICAgZW1wdHkgbGFuZ3VhZ2UgcGFyYW1ldGVyLgorICAgICAgICAqIHBs
YXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dDogbGFuZ3VhZ2UgdGFnIHRlc3Qg
aXMgZXhwZWN0ZWQKKyAgICAgICAgICB0byBmYWlsIHVudGlsIHRoZSBjaHJvbWl1bS1zaWRlIHBh
dGNoIGhhcyBiZWVuIGFwcGxpZWQuCisKIDIwMTAtMTAtMjIgIEFuZHJlYXMgS2xpbmcgIDxrbGlu
Z0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0
aWFuc2VuLgpAQCAtMTYxNCw2ICsxNjMyLDI0IEBACiAgICAgICAgICogZmFzdC9zcGVlY2gvc3Bl
ZWNoLWJ1dHRvbi1pZ25vcmUtZ2VuZXJhdGVkLWV2ZW50cy5odG1sOgogICAgICAgICAqIHBsYXRm
b3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dDoKIAorMjAxMC0xMC0yMCAgTGVhbmRy
byBHcmFjaWEgR2lsICA8bGVhbmRyb2dyYWNpYUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IEplcmVteSBPcmxvdy4KKworICAgICAgICBBZGRlZCBhIGxheW91dCB0ZXN0IGZvciB0
aGUgbGFuZ3VhZ2UgdGFnIGluIHNwZWVjaCBpbnB1dC4gVXBkYXRlZAorICAgICAgICB0aGUgc3Bl
ZWNoIGJ1dHRvbiB0ZXN0cyB0byBpbmNsdWRlIHRoZSBuZXcgbGFuZ3VhZ2UgcGFyYW1ldGVyIGlu
IHRoZQorICAgICAgICBtb2NrIHJlc3VsdC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQ3MDg5CisKKyAgICAgICAgKiBmYXN0L3NwZWVjaC9pbnB1dC10
ZXh0LWxhbmd1YWdlLXRhZy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc3Bl
ZWNoL2lucHV0LXRleHQtbGFuZ3VhZ2UtdGFnLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
c3BlZWNoL2lucHV0LXRleHQtc3BlZWNoYnV0dG9uLmh0bWw6IEFkZGVkIGFuIGVtcHR5IGxhbmd1
YWdlCisgICAgICAgICAgcGFyYW1ldGVyLgorICAgICAgICAqIGZhc3Qvc3BlZWNoL3NwZWVjaC1i
dXR0b24taWdub3JlLWdlbmVyYXRlZC1ldmVudHMuaHRtbDogQWRkZWQgYW4KKyAgICAgICAgICBl
bXB0eSBsYW5ndWFnZSBwYXJhbWV0ZXIuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vdGVz
dF9leHBlY3RhdGlvbnMudHh0OiBsYW5ndWFnZSB0YWcgdGVzdCBpcyBleHBlY3RlZAorICAgICAg
ICAgIHRvIGZhaWwgdW50aWwgdGhlIGNocm9taXVtLXNpZGUgcGF0Y2ggaGFzIGJlZW4gYXBwbGll
ZC4KKwogMjAxMC0xMC0yMCAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+
CiAKICAgICAgICAgVW5za2lwIHNvbWUgdGVzdHMgdGhhdCBhcmUgbm93IHBhc3NpbmcuCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9pbnB1dC10ZXh0LWxhbmd1YWdlLXRhZy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9pbnB1dC10ZXh0LWxhbmd1YWdl
LXRhZy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTFmMzBkNjk2ZjVkMjUwZjE0YWY1NmI5OWI0
ZTcwYzg3OWMwZTUwMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNo
L2lucHV0LXRleHQtbGFuZ3VhZ2UtdGFnLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEzIEBACitU
ZXN0cyBmb3IgbGFuZ3VhZ2UgdGFnIGluaGVyaXRhbmNlIGFuZCB2YWxpZGF0aW9uIGluIHNwZWVj
aCBidXR0b25zLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgic3BlZWNoSW5wdXROb25lIikudmFsdWUgaXMgImVycm9yOiBubyBy
ZXN1bHQgZm91bmQgZm9yIGxhbmd1YWdlICcnIgorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgic3BlZWNoSW5wdXRFbGVtZW50IikudmFsdWUgaXMgIlBpY3R1cmVzIG9mIHRoZSBtb29uIgor
UEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3BlZWNoSW5wdXRJbmhlcml0ZWQiKS52YWx1
ZSBpcyAi5pyI44Gu5YaZ55yfIgorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3BlZWNo
SW5wdXRJbnZhbGlkIikudmFsdWUgaXMgImVycm9yOiBubyByZXN1bHQgZm91bmQgZm9yIGxhbmd1
YWdlICcnIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisgCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9pbnB1dC10ZXh0LWxhbmd1
YWdlLXRhZy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1sYW5ndWFn
ZS10YWcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YmZjODIyNjJlZTMwYTJjNWZhNWUyNTgxNjFlYThhMWUx
OGU2NWFmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvaW5wdXQt
dGV4dC1sYW5ndWFnZS10YWcuaHRtbApAQCAtMCwwICsxLDYyIEBACis8IURPQ1RZUEUgSFRNTCBQ
VUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxtZXRhIGNoYXJzZXQ9InV0
Zi04Ij4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlv
biI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2
YXNjcmlwdCI+CitkZXNjcmlwdGlvbignVGVzdHMgZm9yIGxhbmd1YWdlIHRhZyBpbmhlcml0YW5j
ZSBhbmQgdmFsaWRhdGlvbiBpbiBzcGVlY2ggYnV0dG9ucy4nKTsKKworLy8gTm90ZTogdGVzdCBj
YXNlcyBhcmUgc2VxdWVudGlhbCB0byBlbnN1cmUgdGhhdCBubyBuZXcgcmVjb2duaXRpb24gc3Rh
cnRzIHdoZW4gYW5vdGhlciByZWNvZ25pdGlvbiByZWNvcmRpbmcgaXMgYWN0aXZlLgorZnVuY3Rp
b24gb25DaGFuZ2VOb25lKCkgeworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInNwZWVjaElucHV0Tm9uZSIpLnZhbHVlJywgJ2Vycm9yOiBubyByZXN1
bHQgZm91bmQgZm9yIGxhbmd1YWdlIFwnXCcnKTsKKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eyBzcGVlY2hCdXR0b25DbGljaygnc3BlZWNoSW5wdXRFbGVtZW50Jyk7IH0sIDUwKTsKK30KKwor
ZnVuY3Rpb24gb25DaGFuZ2VFbGVtZW50KCkgeworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygn
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNwZWVjaElucHV0RWxlbWVudCIpLnZhbHVlJywgJ1Bp
Y3R1cmVzIG9mIHRoZSBtb29uJyk7CisgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc3BlZWNo
QnV0dG9uQ2xpY2soJ3NwZWVjaElucHV0SW5oZXJpdGVkJyk7IH0sIDUwKTsKK30KKworZnVuY3Rp
b24gb25DaGFuZ2VJbmhlcml0ZWQoKSB7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgic3BlZWNoSW5wdXRJbmhlcml0ZWQiKS52YWx1ZScsICfmnIjj
ga7lhpnnnJ8nKTsKKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzcGVlY2hCdXR0b25DbGlj
aygnc3BlZWNoSW5wdXRJbnZhbGlkJyk7IH0sIDUwKTsKK30KKworZnVuY3Rpb24gb25DaGFuZ2VJ
bnZhbGlkKCkgeworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInNwZWVjaElucHV0SW52YWxpZCIpLnZhbHVlJywgJ2Vycm9yOiBubyByZXN1bHQgZm91
bmQgZm9yIGxhbmd1YWdlIFwnXCcnKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworZnVuY3Rp
b24gc3BlZWNoQnV0dG9uQ2xpY2soZWxlbWVudElkKSB7CisgICAgdmFyIGVsZW1lbnQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50SWQpOworICAgIHZhciB4ID0gZWxlbWVudC5vZmZz
ZXRMZWZ0ICsgZWxlbWVudC5vZmZzZXRXaWR0aCAtIDQ7CisgICAgdmFyIHkgPSBlbGVtZW50Lm9m
ZnNldFRvcCArIGVsZW1lbnQub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICBldmVudFNlbmRlci5tb3Vz
ZU1vdmVUbyh4LCB5KTsKKyAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICBldmVudFNl
bmRlci5tb3VzZVVwKCk7Cit9CisKK2Z1bmN0aW9uIHJ1bigpIHsKKyAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyICYmIHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5zZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoJ1BpY3R1cmVzIG9mIHRo
ZSBtb29uJywgJ2VuLUdCJyk7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldE1vY2tT
cGVlY2hJbnB1dFJlc3VsdCgn5pyI44Gu5YaZ55yfJywgJ2phJyk7CisgICAgICAgIHNwZWVjaEJ1
dHRvbkNsaWNrKCdzcGVlY2hJbnB1dE5vbmUnKTsKKyAgICB9Cit9CisKK3dpbmRvdy5vbmxvYWQg
PSBydW47Cit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Cit3aW5kb3cuc3VjY2Vzc2Z1bGx5
UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPGlucHV0IGlkPSJzcGVlY2hJbnB1dE5vbmUiIHgt
d2Via2l0LXNwZWVjaCBvbndlYmtpdHNwZWVjaGNoYW5nZT0ib25DaGFuZ2VOb25lKCkiPgorPGlu
cHV0IGlkPSJzcGVlY2hJbnB1dEVsZW1lbnQiIHgtd2Via2l0LXNwZWVjaCBvbndlYmtpdHNwZWVj
aGNoYW5nZT0ib25DaGFuZ2VFbGVtZW50KCkiIGxhbmc9ImVuLUdCIj4KKzxkaXYgbGFuZz0iamEi
PiA8aW5wdXQgaWQ9InNwZWVjaElucHV0SW5oZXJpdGVkIiB4LXdlYmtpdC1zcGVlY2ggb253ZWJr
aXRzcGVlY2hjaGFuZ2U9Im9uQ2hhbmdlSW5oZXJpdGVkKCkiPiA8L2Rpdj4KKzxpbnB1dCBpZD0i
c3BlZWNoSW5wdXRJbnZhbGlkIiB4LXdlYmtpdC1zcGVlY2ggb253ZWJraXRzcGVlY2hjaGFuZ2U9
Im9uQ2hhbmdlSW52YWxpZCgpIiBsYW5nPSIxMzM3JMO+M867ayI+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9pbnB1dC10ZXh0LXNwZWVjaGJ1
dHRvbi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1zcGVlY2hidXR0
b24uaHRtbAppbmRleCA2ZjViYzRiMTIxZmI0ZjlkOWRkYTZjMzMxZjhiMjZkYzFjZDQzOTk0Li5j
ZWY3NzA1NmIxN2QxY2Q0NTFiNDkwYjdjMWYyNDZiYTZjODk1MGRiIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9mYXN0L3NwZWVjaC9pbnB1dC10ZXh0LXNwZWVjaGJ1dHRvbi5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3Qvc3BlZWNoL2lucHV0LXRleHQtc3BlZWNoYnV0dG9uLmh0bWwKQEAgLTMy
LDcgKzMyLDcgQEAgZnVuY3Rpb24gb25XZWJraXRTcGVlY2hDaGFuZ2UoKSB7CiAKIGZ1bmN0aW9u
IHJ1bigpIHsKICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyICYmIHdpbmRvdy5l
dmVudFNlbmRlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRNb2NrU3BlZWNo
SW5wdXRSZXN1bHQoJ1BpY3R1cmVzIG9mIHRoZSBtb29uJyk7CisgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdCgnUGljdHVyZXMgb2YgdGhlIG1vb24n
LCAnJyk7CiAKICAgICAgICAgLy8gQ2xpY2tpbmcgdGhlIHNwZWVjaCBidXR0b24gc2hvdWxkIGZp
bGwgaW4gbW9jayBzcGVlY2gtcmVjb2duaXplZCB0ZXh0LgogICAgICAgICB2YXIgaW5wdXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3BlZWNoSW5wdXQnKTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3Qvc3BlZWNoL3NwZWVjaC1idXR0b24taWdub3JlLWdlbmVyYXRlZC1ldmVudHMu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL3NwZWVjaC1idXR0b24taWdub3JlLWdlbmVy
YXRlZC1ldmVudHMuaHRtbAppbmRleCBiOWI4ZWMzNjYwNTU3OWYyYjEyNmQ2ZjFkYTM1NjBjNjcy
YWQyYjcxLi5jNjg0ODYzNzcwNTMzOTliMjlkMDRmYzI5OTA3ZTU1ZThhYmYwNjA4IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9zcGVlY2gtYnV0dG9uLWlnbm9yZS1nZW5lcmF0
ZWQtZXZlbnRzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvc3BlZWNoLWJ1dHRv
bi1pZ25vcmUtZ2VuZXJhdGVkLWV2ZW50cy5odG1sCkBAIC00OSw3ICs0OSw3IEBAIGZ1bmN0aW9u
IHNldHVwRGlzcGF0Y2hFdmVudFRlc3QoKSB7CiBmdW5jdGlvbiBydW4oKSB7CiAgICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlciAmJiB3aW5kb3cuZXZlbnRTZW5kZXIpIHsKICAgICAg
ICAgLy8gUnVubmluZyBpbiBEUlQsIHRlc3QgdGhlIGV2ZW50U2VuZGVyIGNhc2UuCi0gICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdCgnUGljdHVyZXMg
b2YgdGhlIG1vb24nKTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja1NwZWVj
aElucHV0UmVzdWx0KCdQaWN0dXJlcyBvZiB0aGUgbW9vbicsICcnKTsKICAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ3NwZWVjaElucHV0Jykub253ZWJraXRzcGVlY2hjaGFuZ2UgPSBm
dW5jdGlvbigpIHsKICAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInNwZWVjaElucHV0IikudmFsdWUnLCAnUGljdHVyZXMgb2YgdGhlIG1v
b24nKTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9l
eHBlY3RhdGlvbnMudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBl
Y3RhdGlvbnMudHh0CmluZGV4IDM2ZmYwMjVjYWM0MjI2NTkxMzVjY2JhODNjMTgyZmUzYTE2NWU4
OTYuLjM1ZGJiM2UzZTc3MDU3OTg4M2IzZWY2MGZjZjQzNjdiYjY4NGIxNWIgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKQEAg
LTMyNDgsNSArMzI0OCw5IEBAIEJVR0pBUEhFVCA6IGZhc3QvanMvZGF0ZS1wYXJzZS10ZXN0Lmh0
bWwgPSBURVhUCiAKIC8vIEFkZGVkIGluIFdlYktpdCByNzAxOTAKIEJVR1dLNDgwMzQgOiBwbHVn
aW5zL3Bhc3MtZGlmZmVyZW50LW5wcC1zdHJ1Y3QuaHRtbCA9IFRFWFQKKwogLy8gQWRkZWQgaW4g
V2ViS2l0IHI3MDI2NQogQlVHV0s0ODAzNCA6IHBsYXRmb3JtL3dpbi9wbHVnaW5zL25wbi1pbnZh
bGlkYXRlLXJlY3QtaW52YWxpZGF0ZXMtd2luZG93Lmh0bWwgPSBURVhUCisKKy8vIFRlbXBvcmFy
aWx5IGRpc2FibGVkIGZvciBhIDQtc2lkZWQgcGF0Y2guIFdpbGwgYmUgZW5hYmxlZCBhZ2FpbiBi
eSBCVUdXSzQ3NDIwLgorQlVHV0s0NzA4OSA6IGZhc3Qvc3BlZWNoL2lucHV0LXRleHQtbGFuZ3Vh
Z2UtdGFnLmh0bWwgPSBGQUlMCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IDhiYmNkM2I4N2QxYzg2YjQ5NzcwNzBmMDhhZjExZjk1YTU3MDQy
ZjEuLjQyODk0NWI0M2I1ZTdiM2YwNDBmNDA1N2YzY2NjOWI2ZjU0YWVjZjQgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIg
QEAKKzIwMTAtMTAtMjIgIExlYW5kcm8gR3JhY2lhIEdpbCAgPGxlYW5kcm9ncmFjaWFAZ29vZ2xl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBKZXJlbXkgT3Jsb3cuCisKKyAgICAgICAgUGF0
Y2ggdGhlIGN1cnJlbnQgc3BlZWNoIGlucHV0IGltcGxlbWVudGF0aW9uIHRvIHVzZSBhbmQgdmFs
aWRhdGUgdGhlCisgICAgICAgIG5lYXJlc3QgbGFuZ3VhZ2UgdGFnLiBUaGUgbGFuZ3VhZ2UgaXMg
bm93IHBhc3NlZCB0byB0aGUgc3RhcnRSZWNvZ25pdGlvbgorICAgICAgICBtZXRob2RzIHNvIHRo
YXQgbGFuZ3VhZ2Utc3BlY2lmaWMgcmVjb2duaXRpb24gY291bGQgYmUgdXNlZC4gQWxzbyBhZGRl
ZAorICAgICAgICBhIHNlY29uZCBwYXJhbWV0ZXIgdG8gc2V0TW9ja1NwZWVjaElucHV0UmVzdWx0
IGZvciB0aGUgbGFuZ3VhZ2UgdXNlZCBpbgorICAgICAgICBzcGVlY2ggcmVjb2duaXRpb24uCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzA4OQorCisg
ICAgICAgIFRoaXMgaXMgdGhlIDJuZCBvZiBhIDQtc2lkZWQgcGF0Y2ggaW4gQ2hyb21pdW0gYW5k
IFdlYktpdC4gRm9yIG1vcmUKKyAgICAgICAgZGV0YWlscyBzZWUgaHR0cDovL2NvZGVyZXZpZXcu
Y2hyb21pdW0ub3JnLzM2MTUwMDUvc2hvdyBhbmQKKyAgICAgICAgaHR0cDovL2NvZGVyZXZpZXcu
Y2hyb21pdW0ub3JnLzM1OTUwMTgvc2hvdy4KKworICAgICAgICBUZXN0OiBmYXN0L3NwZWVjaC9p
bnB1dC10ZXh0LWxhbmd1YWdlLXRhZy5odG1sCisKKyAgICAgICAgRml4ZWQgYSBwcm9ibGVtIGlu
IGRvbS9FbGVtZW50LmNwcCB0aGF0IGNhdXNlZCBzb21lIGxheW91dCB0ZXN0cyB0byBmYWlsLgor
CisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6
Y29tcHV0ZUluaGVyaXRlZExhbmd1YWdlKTogaW5jbHVkZXMgYSBicmllZiBjaGFyYWN0ZXIKKyAg
ICAgICAgICB2YWxpZGF0aW9uIGZvciB0aGUgQkNQIDQ3IGxhbmd1YWdlIHRhZy4KKyAgICAgICAg
KiBwYWdlL1NwZWVjaElucHV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaElucHV0Ojpz
dGFydFJlY29nbml0aW9uKToKKyAgICAgICAgKiBwYWdlL1NwZWVjaElucHV0Lmg6CisgICAgICAg
ICogcGFnZS9TcGVlY2hJbnB1dENsaWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svU3Bl
ZWNoSW5wdXRDbGllbnRNb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaElucHV0Q2xp
ZW50TW9jazo6c3RhcnRSZWNvZ25pdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hJbnB1
dENsaWVudE1vY2s6OnNldFJlY29nbml0aW9uUmVzdWx0KTogcmVzdWx0cyBhcmUgbm93CisgICAg
ICAgICAgc3RvcmVkIGJ5IGxhbmd1YWdlIHVzaW5nIGEgaGFzaCBtYXAuCisgICAgICAgIChXZWJD
b3JlOjpTcGVlY2hJbnB1dENsaWVudE1vY2s6OnRpbWVyRmlyZWQpOgorICAgICAgICAqIHBsYXRm
b3JtL21vY2svU3BlZWNoSW5wdXRDbGllbnRNb2NrLmg6CisgICAgICAgICogcmVuZGVyaW5nL1Rl
eHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29udHJv
bElubmVyRWxlbWVudDo6YXR0YWNoSW5uZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNl
YXJjaEZpZWxkQ2FuY2VsQnV0dG9uRWxlbWVudDo6ZGV0YWNoKToKKyAgICAgICAgKFdlYkNvcmU6
OlNwaW5CdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OklucHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OklucHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50OjpkZXRhY2gp
OgorCiAyMDEwLTEwLTIyICBBbmRyZWFzIEtsaW5nICA8a2xpbmdAd2Via2l0Lm9yZz4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KQEAgLTE5MjUsNiAr
MTk2NCw0MyBAQAogICAgICAgICAoV2ViQ29yZTo6SW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1l
bnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOgogICAgICAgICAoV2ViQ29yZTo6SW5wdXRGaWVsZFNw
ZWVjaEJ1dHRvbkVsZW1lbnQ6OmRldGFjaCk6CiAKKzIwMTAtMTAtMjAgIExlYW5kcm8gR3JhY2lh
IEdpbCAgPGxlYW5kcm9ncmFjaWFAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBK
ZXJlbXkgT3Jsb3cuCisKKyAgICAgICAgUGF0Y2ggdGhlIGN1cnJlbnQgc3BlZWNoIGlucHV0IGlt
cGxlbWVudGF0aW9uIHRvIHVzZSBhbmQgdmFsaWRhdGUgdGhlCisgICAgICAgIG5lYXJlc3QgbGFu
Z3VhZ2UgdGFnLiBUaGUgbGFuZ3VhZ2UgaXMgbm93IHBhc3NlZCB0byB0aGUgc3RhcnRSZWNvZ25p
dGlvbgorICAgICAgICBtZXRob2RzIHNvIHRoYXQgbGFuZ3VhZ2Utc3BlY2lmaWMgcmVjb2duaXRp
b24gY291bGQgYmUgdXNlZC4gQWxzbyBhZGRlZAorICAgICAgICBhIHNlY29uZCBwYXJhbWV0ZXIg
dG8gc2V0TW9ja1NwZWVjaElucHV0UmVzdWx0IGZvciB0aGUgbGFuZ3VhZ2UgdXNlZCBpbgorICAg
ICAgICBzcGVlY2ggcmVjb2duaXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD00NzA4OQorCisgICAgICAgIFRoaXMgaXMgdGhlIDJuZCBvZiBhIDQt
c2lkZWQgcGF0Y2ggaW4gQ2hyb21pdW0gYW5kIFdlYktpdC4gRm9yIG1vcmUKKyAgICAgICAgZGV0
YWlscyBzZWUgaHR0cDovL2NvZGVyZXZpZXcuY2hyb21pdW0ub3JnLzM2MTUwMDUvc2hvdyBhbmQK
KyAgICAgICAgaHR0cDovL2NvZGVyZXZpZXcuY2hyb21pdW0ub3JnLzM1OTUwMTgvc2hvdy4KKwor
ICAgICAgICBUZXN0OiBmYXN0L3NwZWVjaC9pbnB1dC10ZXh0LWxhbmd1YWdlLXRhZy5odG1sCisK
KyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojpj
b21wdXRlSW5oZXJpdGVkTGFuZ3VhZ2UpOiBpbmNsdWRlcyBhIGJyaWVmIGNoYXJhY3RlcgorICAg
ICAgICAgIHZhbGlkYXRpb24gZm9yIHRoZSBCQ1AgNDcgbGFuZ3VhZ2UgdGFnLgorICAgICAgICAq
IHBhZ2UvU3BlZWNoSW5wdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoSW5wdXQ6OnN0
YXJ0UmVjb2duaXRpb24pOgorICAgICAgICAqIHBhZ2UvU3BlZWNoSW5wdXQuaDoKKyAgICAgICAg
KiBwYWdlL1NwZWVjaElucHV0Q2xpZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9TcGVl
Y2hJbnB1dENsaWVudE1vY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoSW5wdXRDbGll
bnRNb2NrOjpzdGFydFJlY29nbml0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaElucHV0
Q2xpZW50TW9jazo6c2V0UmVjb2duaXRpb25SZXN1bHQpOiByZXN1bHRzIGFyZSBub3cKKyAgICAg
ICAgICBzdG9yZWQgYnkgbGFuZ3VhZ2UgdXNpbmcgYSBoYXNoIG1hcC4KKyAgICAgICAgKFdlYkNv
cmU6OlNwZWVjaElucHV0Q2xpZW50TW9jazo6dGltZXJGaXJlZCk6CisgICAgICAgICogcGxhdGZv
cm0vbW9jay9TcGVlY2hJbnB1dENsaWVudE1vY2suaDoKKyAgICAgICAgKiByZW5kZXJpbmcvVGV4
dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb250cm9s
SW5uZXJFbGVtZW50OjphdHRhY2hJbm5lckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2Vh
cmNoRmllbGRDYW5jZWxCdXR0b25FbGVtZW50OjpkZXRhY2gpOgorICAgICAgICAoV2ViQ29yZTo6
U3BpbkJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQ6OmRldGFjaCk6
CisKIDIwMTAtMTAtMjAgIERpcmsgU2NodWx6ZSAgPGtyaXRAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBOaWtvbGFzIFppbW1lcm1hbm4uCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmNwcCBiL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IDgzZTEyOWU4ZTI4
Y2ZhNTEwZWUwZDgxNTZkMjQzODVkMWU5M2RjZjkuLjRkNjMwNWY3ODYzZTcyNzRmODQ0Nzk3ZmY1
NTkzNjQ5ODZmYTMxMDUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBi
L1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC01Niw2ICs1Niw3IEBACiAjaW5jbHVkZSAiU2V0
dGluZ3MuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJYTUxOYW1lcy5o
IgorI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgogCiAjaWYgRU5BQkxFKFNWRykKQEAgLTE0NzQsNiArMTQ3NSwxNiBAQCBBdG9taWNTdHJp
bmcgRWxlbWVudDo6Y29tcHV0ZUluaGVyaXRlZExhbmd1YWdlKCkgY29uc3QKICAgICAgICAgbiA9
IG4tPnBhcmVudCgpOwogICAgIH0KIAorICAgIGlmICghdmFsdWUuaXNOdWxsKCkgJiYgIXZhbHVl
LmlzRW1wdHkoKSkgeworICAgICAgICAvLyBPbmx5IEEtWmEtejAtOSBhbmQgJy0nIGFyZSBhbGxv
d2VkIGluIHRoZSBsYW5ndWFnZSB0YWcgKHNlZSBCQ1AgNDcpCisgICAgICAgIENTdHJpbmcgYXNj
aWlPbmx5ID0gdmFsdWUuc3RyaW5nKCkuYXNjaWkoKTsKKyAgICAgICAgY29uc3QgY2hhciAqcCA9
IGFzY2lpT25seS5kYXRhKCk7CisgICAgICAgIGZvciAoOyAqcCAhPSAnXDAnOyArK3ApIHsKKyAg
ICAgICAgICAgIGlmICghaXNBU0NJSUFscGhhbnVtZXJpYygqcCkgJiYgKnAgIT0gJy0nKQorICAg
ICAgICAgICAgICAgIHJldHVybiBBdG9taWNTdHJpbmcoKTsKKyAgICAgICAgfQorICAgIH0KKwog
ICAgIHJldHVybiB2YWx1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL1NwZWVjaElu
cHV0LmNwcCBiL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dC5jcHAKaW5kZXggMjM0NzkxYmM0YjEz
ZjQzZGY5ZDE3MzlkNWQyMDVmOWFhMjdlMjA3Mi4uY2M1ZTBmOTdmYmFiZjlhZmEzZjQzNTljNzI2
YmFjODdlNTM0MThjZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0LmNwcAor
KysgYi9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXQuY3BwCkBAIC05MywxMCArOTMsMTAgQEAgdm9p
ZCBTcGVlY2hJbnB1dDo6c2V0UmVjb2duaXRpb25SZXN1bHQoaW50IGxpc3RlbmVySWQsIGNvbnN0
IFN0cmluZyYgcmVzdWx0KQogICAgICAgICBtX2xpc3RlbmVycy5nZXQobGlzdGVuZXJJZCktPnNl
dFJlY29nbml0aW9uUmVzdWx0KGxpc3RlbmVySWQsIHJlc3VsdCk7CiB9CiAKLWJvb2wgU3BlZWNo
SW5wdXQ6OnN0YXJ0UmVjb2duaXRpb24oaW50IGxpc3RlbmVySWQsIGNvbnN0IEludFJlY3QmIGVs
ZW1lbnRSZWN0KQorYm9vbCBTcGVlY2hJbnB1dDo6c3RhcnRSZWNvZ25pdGlvbihpbnQgbGlzdGVu
ZXJJZCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSwgY29uc3QgSW50UmVjdCYgZWxlbWVudFJlY3Qp
CiB7CiAgICAgQVNTRVJUKG1fbGlzdGVuZXJzLmNvbnRhaW5zKGxpc3RlbmVySWQpKTsKLSAgICBy
ZXR1cm4gbV9jbGllbnQtPnN0YXJ0UmVjb2duaXRpb24obGlzdGVuZXJJZCwgZWxlbWVudFJlY3Qp
OworICAgIHJldHVybiBtX2NsaWVudC0+c3RhcnRSZWNvZ25pdGlvbihsaXN0ZW5lcklkLCBsYW5n
dWFnZSwgZWxlbWVudFJlY3QpOwogfQogCiB2b2lkIFNwZWVjaElucHV0OjpzdG9wUmVjb3JkaW5n
KGludCBsaXN0ZW5lcklkKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0Lmgg
Yi9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXQuaAppbmRleCBkMTBiNzg5YWFkMjczOWVkZDNiZjQ1
MzBlN2M2ZTAwYzRlMmRhZThhLi44YjQyNmY1NjMxMzZlZDY1MWRkNjQ1NmU4MzViNGQ0NDUzYWI4
MDEyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXQuaAorKysgYi9XZWJDb3Jl
L3BhZ2UvU3BlZWNoSW5wdXQuaApAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB1
bnJlZ2lzdGVyTGlzdGVuZXIoaW50KTsKIAogICAgIC8vIE1ldGhvZHMgaW52b2tlZCBieSB0aGUg
aW5wdXQgZWxlbWVudHMuCi0gICAgYm9vbCBzdGFydFJlY29nbml0aW9uKGludCwgY29uc3QgSW50
UmVjdCYpOworICAgIGJvb2wgc3RhcnRSZWNvZ25pdGlvbihpbnQsIGNvbnN0IFN0cmluZyYsIGNv
bnN0IEludFJlY3QmKTsKICAgICB2b2lkIHN0b3BSZWNvcmRpbmcoaW50KTsKICAgICB2b2lkIGNh
bmNlbFJlY29nbml0aW9uKGludCk7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9TcGVlY2hJ
bnB1dENsaWVudC5oIGIvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0Q2xpZW50LmgKaW5kZXggZDVm
ZGExN2ZhYTJjZDc5NWFmNDRmNTNhNDZmY2JhNTk3NDFhYjc2Yy4uZjVhYWIwMmE3NjYxNjYxOGE2
MGM3NzQ0Y2I0NzQ2NjNkY2I1MjJiNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1NwZWVjaElu
cHV0Q2xpZW50LmgKKysrIGIvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0Q2xpZW50LmgKQEAgLTMx
LDYgKzMxLDggQEAKICNpZm5kZWYgU3BlZWNoSW5wdXRDbGllbnRfaAogI2RlZmluZSBTcGVlY2hJ
bnB1dENsaWVudF9oCiAKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCiAjaWYgRU5BQkxFKElO
UFVUX1NQRUVDSCkKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDgsNyArNTAsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIHNldExpc3RlbmVyKFNwZWVjaElucHV0TGlzdGVuZXIqKSA9
IDA7CiAKICAgICAvLyBTdGFydHMgc3BlZWNoIHJlY29nbml0aW9uIGFuZCBhdWRpbyByZWNvcmRp
bmcuCi0gICAgdmlydHVhbCBib29sIHN0YXJ0UmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCwgY29u
c3QgSW50UmVjdCYgZWxlbWVudFJlY3QpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc3RhcnRSZWNv
Z25pdGlvbihpbnQgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlLCBjb25zdCBJbnRS
ZWN0JiBlbGVtZW50UmVjdCkgPSAwOwogCiAgICAgLy8gU3RvcHMgYXVkaW8gcmVjb3JkaW5nIGFu
ZCBwZXJmb3JtcyByZWNvZ25pdGlvbiB3aXRoIHRoZSBhdWRpbyByZWNvcmRlZCB1bnRpbCBub3cK
ICAgICAvLyAoZG9lcyBub3QgZGlzY2FyZCBhdWRpbykuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svU3BlZWNoSW5wdXRDbGllbnRNb2NrLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9TcGVlY2hJbnB1dENsaWVudE1vY2suY3BwCmluZGV4IDZiNjQ5NDJmMTdiOTI1YjQ5ZWYw
OTIxNDdjMGExNmEwN2YwZDdjY2MuLmMwNDk3MWUwYTk0Mzg1NWE4Y2ZjZDFkMWMyNDU2MzJiYTgy
MWIxMGEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TcGVlY2hJbnB1dENsaWVu
dE1vY2suY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TcGVlY2hJbnB1dENsaWVudE1v
Y2suY3BwCkBAIC0zNSw2ICszNSwxMSBAQAogCiAjaW5jbHVkZSAiU3BlZWNoSW5wdXRMaXN0ZW5l
ci5oIgogCituYW1lc3BhY2UgeworICAgIC8vIEhhc2hNYXAgZG9lc24ndCBzdXBwb3J0IGVtcHR5
IHN0cmluZ3MgYXMga2V5cywgc28gdGhpcyB2YWx1ZSAoYW4gaW52YWxpZCBCQ1A0NyB0YWcpIGlz
IHVzZWQgZm9yIHRob3NlIGNhc2VzLgorICAgIGNvbnN0IFN0cmluZyBlbXB0eUxhbmd1YWdlID0g
Il8iOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNwZWVjaElucHV0Q2xpZW50TW9jazo6
U3BlZWNoSW5wdXRDbGllbnRNb2NrKCkKQEAgLTUwLDEyICs1NSwxMyBAQCB2b2lkIFNwZWVjaElu
cHV0Q2xpZW50TW9jazo6c2V0TGlzdGVuZXIoU3BlZWNoSW5wdXRMaXN0ZW5lciogbGlzdGVuZXIp
CiAgICAgbV9saXN0ZW5lciA9IGxpc3RlbmVyOwogfQogCi1ib29sIFNwZWVjaElucHV0Q2xpZW50
TW9jazo6c3RhcnRSZWNvZ25pdGlvbihpbnQgcmVxdWVzdElkLCBjb25zdCBJbnRSZWN0JikKK2Jv
b2wgU3BlZWNoSW5wdXRDbGllbnRNb2NrOjpzdGFydFJlY29nbml0aW9uKGludCByZXF1ZXN0SWQs
IGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UsIGNvbnN0IEludFJlY3QmKQogewogICAgIGlmIChtX3Rp
bWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBtX3JlcXVlc3RJZCA9
IHJlcXVlc3RJZDsKICAgICBtX3JlY29yZGluZyA9IHRydWU7CisgICAgbV9sYW5ndWFnZSA9IGxh
bmd1YWdlOwogICAgIG1fdGltZXIuc3RhcnRPbmVTaG90KDApOwogICAgIHJldHVybiB0cnVlOwog
fQpAQCAtODAsOSArODYsMTIgQEAgdm9pZCBTcGVlY2hJbnB1dENsaWVudE1vY2s6OmNhbmNlbFJl
Y29nbml0aW9uKGludCByZXF1ZXN0SWQpCiAgICAgfQogfQogCi12b2lkIFNwZWVjaElucHV0Q2xp
ZW50TW9jazo6c2V0UmVjb2duaXRpb25SZXN1bHQoY29uc3QgU3RyaW5nJiByZXN1bHQpCit2b2lk
IFNwZWVjaElucHV0Q2xpZW50TW9jazo6c2V0UmVjb2duaXRpb25SZXN1bHQoY29uc3QgU3RyaW5n
JiByZXN1bHQsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UpCiB7Ci0gICAgbV9yZWNvZ25pdGlvblJl
c3VsdCA9IHJlc3VsdDsKKyAgICBpZiAobGFuZ3VhZ2UuaXNFbXB0eSgpKQorICAgICAgICBtX3Jl
Y29nbml0aW9uUmVzdWx0LnNldChlbXB0eUxhbmd1YWdlLCByZXN1bHQpOworICAgIGVsc2UKKyAg
ICAgICAgbV9yZWNvZ25pdGlvblJlc3VsdC5zZXQobGFuZ3VhZ2UsIHJlc3VsdCk7CiB9CiAKIHZv
aWQgU3BlZWNoSW5wdXRDbGllbnRNb2NrOjp0aW1lckZpcmVkKFdlYkNvcmU6OlRpbWVyPFNwZWVj
aElucHV0Q2xpZW50TW9jaz4qKQpAQCAtOTIsNyArMTAxLDE3IEBAIHZvaWQgU3BlZWNoSW5wdXRD
bGllbnRNb2NrOjp0aW1lckZpcmVkKFdlYkNvcmU6OlRpbWVyPFNwZWVjaElucHV0Q2xpZW50TW9j
az4qKQogICAgICAgICBtX2xpc3RlbmVyLT5kaWRDb21wbGV0ZVJlY29yZGluZyhtX3JlcXVlc3RJ
ZCk7CiAgICAgICAgIG1fdGltZXIuc3RhcnRPbmVTaG90KDApOwogICAgIH0gZWxzZSB7Ci0gICAg
ICAgIG1fbGlzdGVuZXItPnNldFJlY29nbml0aW9uUmVzdWx0KG1fcmVxdWVzdElkLCBtX3JlY29n
bml0aW9uUmVzdWx0KTsKKyAgICAgICAgU3RyaW5nIGxhbmd1YWdlID0gbV9sYW5ndWFnZS5pc0Vt
cHR5KCkgPyBTdHJpbmcoZW1wdHlMYW5ndWFnZSkgOiBtX2xhbmd1YWdlOworICAgICAgICBpZiAo
IW1fcmVjb2duaXRpb25SZXN1bHQuY29udGFpbnMobGFuZ3VhZ2UpKSB7CisgICAgICAgICAgICAv
LyBDYW4ndCBhdm9pZCBzZXR0aW5nIGEgcmVzdWx0IG9uIGVtcHR5IG9yIGludmFsaWQgbGFuZ3Vh
Z2Ugc3RyaW5ncy4KKyAgICAgICAgICAgIC8vIFRoaXMgd291bGQgYXZvaWQgZ2VuZXJhdGluZyB0
aGUgZXZlbnRzIHVzZWQgdG8gY2hlY2sgdGhlIHJlc3VsdHMgYW5kIHRoZSB0ZXN0IHdvdWxkIHRp
bWVvdXQuCisgICAgICAgICAgICBTdHJpbmcgZXJyb3IoImVycm9yOiBubyByZXN1bHQgZm91bmQg
Zm9yIGxhbmd1YWdlICciKTsKKyAgICAgICAgICAgIGVycm9yLmFwcGVuZChtX2xhbmd1YWdlKTsK
KyAgICAgICAgICAgIGVycm9yLmFwcGVuZCgiJyIpOworICAgICAgICAgICAgbV9saXN0ZW5lci0+
c2V0UmVjb2duaXRpb25SZXN1bHQobV9yZXF1ZXN0SWQsIGVycm9yKTsKKyAgICAgICAgfSBlbHNl
CisgICAgICAgICAgICBtX2xpc3RlbmVyLT5zZXRSZWNvZ25pdGlvblJlc3VsdChtX3JlcXVlc3RJ
ZCwgbV9yZWNvZ25pdGlvblJlc3VsdC5nZXQobGFuZ3VhZ2UpKTsKKwogICAgICAgICBtX2xpc3Rl
bmVyLT5kaWRDb21wbGV0ZVJlY29nbml0aW9uKG1fcmVxdWVzdElkKTsKICAgICAgICAgbV9yZXF1
ZXN0SWQgPSAwOwogICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TcGVl
Y2hJbnB1dENsaWVudE1vY2suaCBiL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TcGVlY2hJbnB1dENs
aWVudE1vY2suaAppbmRleCBjZTgzZDNiYjljYjg4YjBhM2E5NWI1NDk1NDI3ZDI5OTFmMmUwYjRm
Li4zY2U5ODdiODIzY2QxOTgwMjg2NjljNzc5ZjNjNDc5YzQ3M2NiN2VkIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svU3BlZWNoSW5wdXRDbGllbnRNb2NrLmgKKysrIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xpZW50TW9jay5oCkBAIC0zNCw2ICszNCw4IEBA
CiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJTcGVlY2hJbnB1dENsaWVu
dC5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKICNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQog
CkBAIC00NiwxMSArNDgsMTEgQEAgY2xhc3MgU3BlZWNoSW5wdXRDbGllbnRNb2NrIDogcHVibGlj
IFNwZWVjaElucHV0Q2xpZW50IHsKIHB1YmxpYzoKICAgICBTcGVlY2hJbnB1dENsaWVudE1vY2so
KTsKIAotICAgIHZvaWQgc2V0UmVjb2duaXRpb25SZXN1bHQoY29uc3QgU3RyaW5nJiByZXN1bHQp
OworICAgIHZvaWQgc2V0UmVjb2duaXRpb25SZXN1bHQoY29uc3QgU3RyaW5nJiByZXN1bHQsIGNv
bnN0IFN0cmluZyYgbGFuZ3VhZ2UpOwogCiAgICAgLy8gU3BlZWNoSW5wdXRDbGllbnQgbWV0aG9k
cy4KICAgICB2b2lkIHNldExpc3RlbmVyKFNwZWVjaElucHV0TGlzdGVuZXIqKTsKLSAgICBib29s
IHN0YXJ0UmVjb2duaXRpb24oaW50LCBjb25zdCBJbnRSZWN0Jik7CisgICAgYm9vbCBzdGFydFJl
Y29nbml0aW9uKGludCwgY29uc3QgU3RyaW5nJiwgY29uc3QgSW50UmVjdCYpOwogICAgIHZvaWQg
c3RvcFJlY29yZGluZyhpbnQpOwogICAgIHZvaWQgY2FuY2VsUmVjb2duaXRpb24oaW50KTsKIApA
QCAtNjEsNyArNjMsOSBAQCBwcml2YXRlOgogICAgIFRpbWVyPFNwZWVjaElucHV0Q2xpZW50TW9j
az4gbV90aW1lcjsKICAgICBTcGVlY2hJbnB1dExpc3RlbmVyKiBtX2xpc3RlbmVyOwogICAgIGlu
dCBtX3JlcXVlc3RJZDsKLSAgICBTdHJpbmcgbV9yZWNvZ25pdGlvblJlc3VsdDsKKworICAgIEhh
c2hNYXA8U3RyaW5nLCBTdHJpbmc+IG1fcmVjb2duaXRpb25SZXN1bHQ7CisgICAgU3RyaW5nIG1f
bGFuZ3VhZ2U7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJD
b3JlL3JlbmRlcmluZy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwIGIvV2ViQ29yZS9yZW5k
ZXJpbmcvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAppbmRleCA1ZDViOGIzMGI0MTEwNTIw
ZDFhNGRlN2I4YTc5YzQ4NWQ3OTM2NjA4Li42NWQwYTY0NjA5ZDIwMzRiMTA5OTUwM2QxNjkxNTFh
YmU2NmRhYTNlIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Q29udHJvbElubmVy
RWxlbWVudHMuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRDb250cm9sSW5uZXJFbGVt
ZW50cy5jcHAKQEAgLTIxLDkgKzIxLDkgQEAKICAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KLSAKKwogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlRleHRDb250cm9sSW5uZXJFbGVtZW50cy5oIgog
CkBAIC0xMDcsMTggKzEwNywxOCBAQCB2b2lkIFRleHRDb250cm9sSW5uZXJFbGVtZW50OjphdHRh
Y2hJbm5lckVsZW1lbnQoTm9kZSogcGFyZW50LCBQYXNzUmVmUHRyPFJlbmRlcgogICAgICAgICBz
ZXRSZW5kZXJlcihyZW5kZXJlcik7CiAgICAgICAgIHJlbmRlcmVyLT5zZXRTdHlsZShzdHlsZSk7
CiAgICAgfQotICAgIAorCiAgICAgLy8gU2V0IHRoZXNlIGV4cGxpY2l0bHkgc2luY2UgdGhpcyBu
b3JtYWxseSBoYXBwZW5zIGR1cmluZyBhbiBhdHRhY2goKQogICAgIHNldEF0dGFjaGVkKCk7CiAg
ICAgc2V0SW5Eb2N1bWVudCgpOwotICAgIAorCiAgICAgLy8gRm9yIGVsZW1lbnRzIHdpdGhvdXQg
YSBzaGFkb3cgcGFyZW50LCBhZGQgdGhlIG5vZGUgdG8gdGhlIERPTSBub3JtYWxseS4KICAgICBp
ZiAoIW1fc2hhZG93UGFyZW50KSB7CiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGNvZGUgc2VlbXMg
dmVyeSB3cm9uZy4gIFdoeSBhcmUgd2UgbWFnaWNhbGx5IGFkZGluZyB8dGhpc3wgdG8gdGhlIERP
TSBoZXJlPwogICAgICAgICAvLyAgICAgICAgV2Ugc2hvdWxkbid0IGJlIGNhbGxpbmcgcGFyc2Vy
IEFQSSBtZXRob2RzIG91dHNpZGUgb2YgdGhlIHBhcnNlciEKICAgICAgICAgcGFyZW50LT5kZXBy
ZWNhdGVkUGFyc2VyQWRkQ2hpbGQodGhpcyk7CiAgICAgfQotIAorCiAgICAgLy8gQWRkIHRoZSBy
ZW5kZXJlciB0byB0aGUgcmVuZGVyIHRyZWUKICAgICBpZiAocmVuZGVyZXIpCiAgICAgICAgIHBh
cmVudC0+cmVuZGVyZXIoKS0+YWRkQ2hpbGQocmVuZGVyZXIpOwpAQCAtMjA4LDcgKzIwOCw3IEBA
IHZvaWQgU2VhcmNoRmllbGRDYW5jZWxCdXR0b25FbGVtZW50OjpkZXRhY2goKQogewogICAgIGlm
IChtX2NhcHR1cmluZykgewogICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQoKS0+
ZnJhbWUoKSkKLSAgICAgICAgICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+c2V0Q2FwdHVyaW5n
TW91c2VFdmVudHNOb2RlKDApOyAgICAgIAorICAgICAgICAgICAgZnJhbWUtPmV2ZW50SGFuZGxl
cigpLT5zZXRDYXB0dXJpbmdNb3VzZUV2ZW50c05vZGUoMCk7CiAgICAgfQogICAgIFRleHRDb250
cm9sSW5uZXJFbGVtZW50OjpkZXRhY2goKTsKIH0KQEAgLTI4MSw5ICsyODEsOSBAQCB2b2lkIFNw
aW5CdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKICAgICBp
ZiAoIWJveCkgewogICAgICAgICBpZiAoIWV2ZW50LT5kZWZhdWx0SGFuZGxlZCgpKQogICAgICAg
ICAgICAgSFRNTERpdkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOwotICAgICAg
ICByZXR1cm47ICAgICAgICAKKyAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKKwogICAgIEhU
TUxJbnB1dEVsZW1lbnQqIGlucHV0ID0gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KHNo
YWRvd0FuY2VzdG9yTm9kZSgpKTsKICAgICBpZiAoaW5wdXQtPmRpc2FibGVkKCkgfHwgaW5wdXQt
PmlzUmVhZE9ubHlGb3JtQ29udHJvbCgpKSB7CiAgICAgICAgIGlmICghZXZlbnQtPmRlZmF1bHRI
YW5kbGVkKCkpCkBAIC00MzEsNyArNDMxLDcgQEAgdm9pZCBJbnB1dEZpZWxkU3BlZWNoQnV0dG9u
RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiAgICAgaWYgKGV2ZW50
LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmNsaWNrRXZlbnQpIHsKICAgICAgICAgc3dpdGNoICht
X3N0YXRlKSB7CiAgICAgICAgIGNhc2UgSWRsZToKLSAgICAgICAgICAgIGlmIChzcGVlY2hJbnB1
dCgpLT5zdGFydFJlY29nbml0aW9uKG1fbGlzdGVuZXJJZCwgaW5wdXQtPnJlbmRlcmVyKCktPmFi
c29sdXRlQm91bmRpbmdCb3hSZWN0KCkpKQorICAgICAgICAgICAgaWYgKHNwZWVjaElucHV0KCkt
PnN0YXJ0UmVjb2duaXRpb24obV9saXN0ZW5lcklkLCBpbnB1dC0+Y29tcHV0ZUluaGVyaXRlZExh
bmd1YWdlKCksIGlucHV0LT5yZW5kZXJlcigpLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpKSkK
ICAgICAgICAgICAgICAgICBzZXRTdGF0ZShSZWNvcmRpbmcpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgUmVjb3JkaW5nOgpAQCAtNDg3LDcgKzQ4Nyw3IEBAIHZvaWQgSW5wdXRG
aWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQ6OmRldGFjaCgpCiB7CiAgICAgaWYgKG1fY2FwdHVyaW5n
KSB7CiAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLT5mcmFtZSgpKQotICAg
ICAgICAgICAgZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5zZXRDYXB0dXJpbmdNb3VzZUV2ZW50c05v
ZGUoMCk7ICAgICAgCisgICAgICAgICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPnNldENhcHR1
cmluZ01vdXNlRXZlbnRzTm9kZSgwKTsKICAgICB9CiAKICAgICBpZiAobV9zdGF0ZSAhPSBJZGxl
KQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKaW5kZXggNWM3YzI1ZjFkMTQxM2NjMDM2MDk1M2U4NmQyOTIxMjI4ZWI3MDM1
MS4uMzU4OTcyYWFlOGZjMDVmMzE4NmE0ZDVlMmQ0Njg2YzUzNTJiMzIyMSAxMDA2NDQKLS0tIGEv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMzMgQEAKKzIwMTAtMTAtMjIgIExlYW5kcm8gR3JhY2lhIEdpbCAgPGxlYW5k
cm9ncmFjaWFAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBKZXJlbXkgT3Jsb3cu
CisKKyAgICAgICAgUGF0Y2ggdGhlIGN1cnJlbnQgc3BlZWNoIGlucHV0IGltcGxlbWVudGF0aW9u
IHRvIHVzZSBhbmQgdmFsaWRhdGUgdGhlCisgICAgICAgIG5lYXJlc3QgbGFuZ3VhZ2UgdGFnLiBU
aGUgbGFuZ3VhZ2UgaXMgbm93IHBhc3NlZCB0byB0aGUgc3RhcnRSZWNvZ25pdGlvbgorICAgICAg
ICBtZXRob2RzIHNvIHRoYXQgbGFuZ3VhZ2Utc3BlY2lmaWMgcmVjb2duaXRpb24gY291bGQgYmUg
dXNlZC4gQWxzbyBhZGRlZAorICAgICAgICBhIHNlY29uZCBwYXJhbWV0ZXIgdG8gc2V0TW9ja1Nw
ZWVjaElucHV0UmVzdWx0IGZvciB0aGUgbGFuZ3VhZ2UgdXNlZCBpbgorICAgICAgICBzcGVlY2gg
cmVjb2duaXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00NzA4OQorCisgICAgICAgIFRoaXMgaXMgdGhlIDJuZCBvZiBhIDQtc2lkZWQgcGF0Y2gg
aW4gQ2hyb21pdW0gYW5kIFdlYktpdC4gRm9yIG1vcmUKKyAgICAgICAgZGV0YWlscyBzZWUgaHR0
cDovL2NvZGVyZXZpZXcuY2hyb21pdW0ub3JnLzM2MTUwMDUvc2hvdyBhbmQKKyAgICAgICAgaHR0
cDovL2NvZGVyZXZpZXcuY2hyb21pdW0ub3JnLzM1OTUwMTgvc2hvdy4KKworICAgICAgICAqIHB1
YmxpYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViU3Bl
ZWNoSW5wdXRDb250cm9sbGVyOjpzdGFydFJlY29nbml0aW9uKToKKyAgICAgICAgKiBwdWJsaWMv
V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9jay5oOgorICAgICAgICAqIHNyYy9TcGVlY2hJbnB1
dENsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hJbnB1dENsaWVudEltcGw6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaElucHV0Q2xpZW50SW1wbDo6c3RhcnRS
ZWNvZ25pdGlvbik6CisgICAgICAgICogc3JjL1NwZWVjaElucHV0Q2xpZW50SW1wbC5oOgorICAg
ICAgICAqIHNyYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsOjpzZXRNb2NrUmVjb2du
aXRpb25SZXN1bHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJN
b2NrSW1wbDo6c3RhcnRSZWNvZ25pdGlvbik6CisgICAgICAgICogc3JjL1dlYlNwZWVjaElucHV0
Q29udHJvbGxlck1vY2tJbXBsLmg6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKToKKyAgICAgICAgKiBzcmMv
V2ViVmlld0ltcGwuaDoKKwogMjAxMC0xMC0yMiAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3
LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjcwMzAx
LgpAQCAtMjQsNyArNTQsNyBAQAogMjAxMC0xMC0yMiAgTGVhbmRybyBHcmFjaWEgR2lsICA8bGVh
bmRyb2dyYWNpYUBnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEplcmVteSBPcmxv
dy4KLSAKKwogICAgICAgICBQYXRjaCB0aGUgY3VycmVudCBzcGVlY2ggaW5wdXQgaW1wbGVtZW50
YXRpb24gdG8gdXNlIGFuZCB2YWxpZGF0ZSB0aGUKICAgICAgICAgbmVhcmVzdCBsYW5ndWFnZSB0
YWcuIFRoZSBsYW5ndWFnZSBpcyBub3cgcGFzc2VkIHRvIHRoZSBzdGFydFJlY29nbml0aW9uCiAg
ICAgICAgIG1ldGhvZHMgc28gdGhhdCBsYW5ndWFnZS1zcGVjaWZpYyByZWNvZ25pdGlvbiBjb3Vs
ZCBiZSB1c2VkLiBBbHNvIGFkZGVkCkBAIC0xNzMsNiArMjAzLDM2IEBACiAgICAgICAgIChXZWJL
aXQ6OldlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbCk6CiAgICAgICAgICogc3JjL1dlYlZpZXdJbXBs
Lmg6CiAKKzIwMTAtMTAtMjAgIExlYW5kcm8gR3JhY2lhIEdpbCAgPGxlYW5kcm9ncmFjaWFAZ29v
Z2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBKZXJlbXkgT3Jsb3cuCisKKyAgICAgICAg
UGF0Y2ggdGhlIGN1cnJlbnQgc3BlZWNoIGlucHV0IGltcGxlbWVudGF0aW9uIHRvIHVzZSBhbmQg
dmFsaWRhdGUgdGhlCisgICAgICAgIG5lYXJlc3QgbGFuZ3VhZ2UgdGFnLiBUaGUgbGFuZ3VhZ2Ug
aXMgbm93IHBhc3NlZCB0byB0aGUgc3RhcnRSZWNvZ25pdGlvbgorICAgICAgICBtZXRob2RzIHNv
IHRoYXQgbGFuZ3VhZ2Utc3BlY2lmaWMgcmVjb2duaXRpb24gY291bGQgYmUgdXNlZC4gQWxzbyBh
ZGRlZAorICAgICAgICBhIHNlY29uZCBwYXJhbWV0ZXIgdG8gc2V0TW9ja1NwZWVjaElucHV0UmVz
dWx0IGZvciB0aGUgbGFuZ3VhZ2UgdXNlZCBpbgorICAgICAgICBzcGVlY2ggcmVjb2duaXRpb24u
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzA4OQor
CisgICAgICAgIFRoaXMgaXMgdGhlIDJuZCBvZiBhIDQtc2lkZWQgcGF0Y2ggaW4gQ2hyb21pdW0g
YW5kIFdlYktpdC4gRm9yIG1vcmUKKyAgICAgICAgZGV0YWlscyBzZWUgaHR0cDovL2NvZGVyZXZp
ZXcuY2hyb21pdW0ub3JnLzM2MTUwMDUvc2hvdyBhbmQKKyAgICAgICAgaHR0cDovL2NvZGVyZXZp
ZXcuY2hyb21pdW0ub3JnLzM1OTUwMTgvc2hvdy4KKworICAgICAgICAqIHB1YmxpYy9XZWJTcGVl
Y2hJbnB1dENvbnRyb2xsZXIuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoSW5wdXRDb250
cm9sbGVyOjpzdGFydFJlY29nbml0aW9uKToKKyAgICAgICAgKiBwdWJsaWMvV2ViU3BlZWNoSW5w
dXRDb250cm9sbGVyTW9jay5oOgorICAgICAgICAqIHNyYy9TcGVlY2hJbnB1dENsaWVudEltcGwu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hJbnB1dENsaWVudEltcGw6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlNwZWVjaElucHV0Q2xpZW50SW1wbDo6c3RhcnRSZWNvZ25pdGlvbik6
CisgICAgICAgICogc3JjL1NwZWVjaElucHV0Q2xpZW50SW1wbC5oOgorICAgICAgICAqIHNyYy9X
ZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsOjpzZXRNb2NrUmVjb2duaXRpb25SZXN1bHQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6c3Rh
cnRSZWNvZ25pdGlvbik6CisgICAgICAgICogc3JjL1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1v
Y2tJbXBsLmg6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwu
aDoKKwogMjAxMC0xMC0yMCAgRGlyayBTY2h1bHplICA8a3JpdEB3ZWJraXQub3JnPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQgQ2hyb21pdW0gd2luIGJ1aWxkIGZpeC4KZGlmZiAtLWdpdCBhL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyLmggYi9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYlNwZWVjaElucHV0Q29udHJvbGxlci5oCmluZGV4IDU0MDg3NDFhM2M5
NGQzYmYxYzU0M2Q5NmU5ZmMxNmE2MzkwZGIwMmYuLjFmZGUyYThlNzc0ZjMyZTU4Zjg4NzJmMjQ4
MjIyMzA1OWM4OGMxNDcgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3Bl
ZWNoSW5wdXRDb250cm9sbGVyLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTcGVl
Y2hJbnB1dENvbnRyb2xsZXIuaApAQCAtMzUsNiArMzUsNyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAorY2xhc3MgV2ViU3RyaW5nOwogc3RydWN0IFdlYlJlY3Q7CiAKIC8vIFByb3ZpZGVzIGFu
IGVtYmVkZGVyIEFQSSBjYWxsZWQgYnkgV2ViS2l0LgpAQCAtNDMsNyArNDQsNyBAQCBwdWJsaWM6
CiAgICAgLy8gU3RhcnRzIHNwZWVjaCByZWNvZ25pdGlvbi4gU3BlZWNoIHdpbGwgZ2V0IHJlY29y
ZGVkIHVudGlsIHRoZSBlbmRwb2ludGVyIGRldGVjdHMgc2lsZW5jZSwKICAgICAvLyBydW5zIHRv
IHRoZSBsaW1pdCBvciBzdG9wUmVjb3JkaW5nIGlzIGNhbGxlZC4gUHJvZ3Jlc3MgaW5kaWNhdGlv
bnMgYW5kIHRoZSByZWNvZ25pemVkCiAgICAgLy8gdGV4dCBhcmUgcmV0dXJuZWQgdmlhIHRoZSBs
aXN0ZW5lciBpbnRlcmZhY2UuCi0gICAgdmlydHVhbCBib29sIHN0YXJ0UmVjb2duaXRpb24oaW50
IHJlcXVlc3RJZCwgY29uc3QgV2ViUmVjdCYpCisgICAgdmlydHVhbCBib29sIHN0YXJ0UmVjb2du
aXRpb24oaW50IHJlcXVlc3RJZCwgY29uc3QgV2ViU3RyaW5nJiBsYW5ndWFnZSwgY29uc3QgV2Vi
UmVjdCYgZWxlbWVudFJlY3QpCiAgICAgewogICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9jay5oIGIvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrLmgKaW5kZXggOWEyNjIzNWZmNmQ1
ZGNjYmJlMjQ3MjYyYWU0NGEzYWM3Mzk3YzNmNC4uYjRjNTBhMDVkY2Y1YTEyZjg0MWJmOWI2NzU1
Y2QyODgxN2Y4YzA4YiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTcGVl
Y2hJbnB1dENvbnRyb2xsZXJNb2NrLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJT
cGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrLmgKQEAgLTQ0LDYgKzQ0LDEwIEBAIHB1YmxpYzoKICAg
ICAgICAgV2ViU3BlZWNoSW5wdXRMaXN0ZW5lciogbGlzdGVuZXIpOwogICAgIHZpcnR1YWwgfldl
YlNwZWVjaElucHV0Q29udHJvbGxlck1vY2soKSB7IH0KIAorICAgIHZpcnR1YWwgdm9pZCBzZXRN
b2NrUmVjb2duaXRpb25SZXN1bHQoY29uc3QgV2ViU3RyaW5nJiByZXN1bHQsIGNvbnN0IFdlYlN0
cmluZyYgbGFuZ3VhZ2UpID0gMDsKKworICAgIC8vIEZJWE1FOiB0aGlzIGlzIGEgZml4IGZvciBh
IHR3by1zaWRlZCBwYXRjaC4gRGVsZXRlIGFzIHNvb24gYXMgdGhlIGNocm9taXVtIHNpZGUgaXMg
cGF0Y2hlZC4KKyAgICAvLyBDaHJvbWl1bSBwYXRjaCBub3QgdXBsb2FkZWQgeWV0LCBidXQgd2ls
bCBkZXBlbmQgb24gaHR0cDovL2NvZGVyZXZpZXcuY2hyb21pdW0ub3JnLzM2MTUwMDUvc2hvdyBw
YXRjaC4KICAgICB2aXJ0dWFsIHZvaWQgc2V0TW9ja1JlY29nbml0aW9uUmVzdWx0KGNvbnN0IFdl
YlN0cmluZyYgcmVzdWx0KSA9IDA7CiB9OwogCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0v
c3JjL1NwZWVjaElucHV0Q2xpZW50SW1wbC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1NwZWVj
aElucHV0Q2xpZW50SW1wbC5jcHAKaW5kZXggOTYzZDQ0MDVhNjJkMzJlMWE4Y2VjZDU0YzA4YzVi
YmViM2E2MmRjYS4uMTM4MTkyOTYzYjU0MzA1YzZhMzgzYTUyZWMyMzhjYTBjNWIxMDRjZiAxMDA2
NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9TcGVlY2hJbnB1dENsaWVudEltcGwuY3BwCisr
KyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvU3BlZWNoSW5wdXRDbGllbnRJbXBsLmNwcApAQCAtMzIs
MTUgKzMyLDIxIEBACiAjaW5jbHVkZSAiU3BlZWNoSW5wdXRDbGllbnRJbXBsLmgiCiAKICNpbmNs
dWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgIlNwZWVjaElucHV0TGlzdGVuZXIuaCIK
ICNpbmNsdWRlICJXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJXZWJTdHJp
bmcuaCIKICNpbmNsdWRlICJXZWJWaWV3Q2xpZW50LmgiCi0jaW5jbHVkZSAicGFnZS9TcGVlY2hJ
bnB1dExpc3RlbmVyLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAogI2lmIEVOQUJM
RShJTlBVVF9TUEVFQ0gpCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitQYXNzT3duUHRyPFNwZWVj
aElucHV0Q2xpZW50SW1wbD4gU3BlZWNoSW5wdXRDbGllbnRJbXBsOjpjcmVhdGUoV2ViVmlld0Ns
aWVudCogY2xpZW50KQoreworICAgIHJldHVybiBhZG9wdFB0cihuZXcgU3BlZWNoSW5wdXRDbGll
bnRJbXBsKGNsaWVudCkpOworfQorCiBTcGVlY2hJbnB1dENsaWVudEltcGw6OlNwZWVjaElucHV0
Q2xpZW50SW1wbChXZWJWaWV3Q2xpZW50KiB3ZWJfdmlld19jbGllbnQpCiAgICAgOiBtX2NvbnRy
b2xsZXIod2ViX3ZpZXdfY2xpZW50ID8gd2ViX3ZpZXdfY2xpZW50LT5zcGVlY2hJbnB1dENvbnRy
b2xsZXIodGhpcykgOiAwKQogICAgICwgbV9saXN0ZW5lcigwKQpAQCAtNTYsMTAgKzYyLDEwIEBA
IHZvaWQgU3BlZWNoSW5wdXRDbGllbnRJbXBsOjpzZXRMaXN0ZW5lcihXZWJDb3JlOjpTcGVlY2hJ
bnB1dExpc3RlbmVyKiBsaXN0ZW5lcikKICAgICBtX2xpc3RlbmVyID0gbGlzdGVuZXI7CiB9CiAK
LWJvb2wgU3BlZWNoSW5wdXRDbGllbnRJbXBsOjpzdGFydFJlY29nbml0aW9uKGludCByZXF1ZXN0
SWQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGVsZW1lbnRSZWN0KQorYm9vbCBTcGVlY2hJbnB1
dENsaWVudEltcGw6OnN0YXJ0UmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCwgY29uc3QgU3RyaW5n
JiBsYW5ndWFnZSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZWxlbWVudFJlY3QpCiB7CiAgICAg
QVNTRVJUKG1fbGlzdGVuZXIpOwotICAgIHJldHVybiBtX2NvbnRyb2xsZXItPnN0YXJ0UmVjb2du
aXRpb24ocmVxdWVzdElkLCBlbGVtZW50UmVjdCk7CisgICAgcmV0dXJuIG1fY29udHJvbGxlci0+
c3RhcnRSZWNvZ25pdGlvbihyZXF1ZXN0SWQsIGxhbmd1YWdlLCBlbGVtZW50UmVjdCk7CiB9CiAK
IHZvaWQgU3BlZWNoSW5wdXRDbGllbnRJbXBsOjpzdG9wUmVjb3JkaW5nKGludCByZXF1ZXN0SWQp
CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1NwZWVjaElucHV0Q2xpZW50SW1wbC5o
IGIvV2ViS2l0L2Nocm9taXVtL3NyYy9TcGVlY2hJbnB1dENsaWVudEltcGwuaAppbmRleCA4MTdi
MzJiMTI0MTRiM2EwN2RmYTNhZTM1MTkwODdkZWE1YTBmNzMzLi5jN2QxZmEzYTZjNTg1NTc3ZmM5
NDUyYzRkYmNkNWU4NzBmYzg3YTNhIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1Nw
ZWVjaElucHV0Q2xpZW50SW1wbC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvU3BlZWNoSW5w
dXRDbGllbnRJbXBsLmgKQEAgLTMzLDggKzMzLDE1IEBACiAKICNpZiBFTkFCTEUoSU5QVVRfU1BF
RUNIKQogCisjaW5jbHVkZSAiU3BlZWNoSW5wdXRDbGllbnQuaCIKICNpbmNsdWRlICJXZWJTcGVl
Y2hJbnB1dExpc3RlbmVyLmgiCi0jaW5jbHVkZSAicGFnZS9TcGVlY2hJbnB1dENsaWVudC5oIgor
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgU3RyaW5nOwor
fQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBTcGVlY2hJbnB1dExpc3RlbmVyOwpAQCAt
NDksMTIgKzU2LDEyIEBAIGNsYXNzIFNwZWVjaElucHV0Q2xpZW50SW1wbAogICAgIDogcHVibGlj
IFdlYkNvcmU6OlNwZWVjaElucHV0Q2xpZW50LAogICAgICAgcHVibGljIFdlYlNwZWVjaElucHV0
TGlzdGVuZXIgewogcHVibGljOgotICAgIFNwZWVjaElucHV0Q2xpZW50SW1wbChXZWJWaWV3Q2xp
ZW50Kik7CisgICAgc3RhdGljIFBhc3NPd25QdHI8U3BlZWNoSW5wdXRDbGllbnRJbXBsPiBjcmVh
dGUoV2ViVmlld0NsaWVudCopOwogICAgIHZpcnR1YWwgflNwZWVjaElucHV0Q2xpZW50SW1wbCgp
OwogCiAgICAgLy8gU3BlZWNoSW5wdXRDbGllbnQgbWV0aG9kcy4KICAgICB2b2lkIHNldExpc3Rl
bmVyKFdlYkNvcmU6OlNwZWVjaElucHV0TGlzdGVuZXIqKTsKLSAgICBib29sIHN0YXJ0UmVjb2du
aXRpb24oaW50LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CisgICAgYm9vbCBzdGFydFJlY29n
bml0aW9uKGludCwgY29uc3QgU3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOwogICAg
IHZvaWQgc3RvcFJlY29yZGluZyhpbnQpOwogICAgIHZvaWQgY2FuY2VsUmVjb2duaXRpb24oaW50
KTsKIApAQCAtNjQsNiArNzEsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRDb21wbGV0ZVJlY29n
bml0aW9uKGludCk7CiAKIHByaXZhdGU6CisgICAgU3BlZWNoSW5wdXRDbGllbnRJbXBsKFdlYlZp
ZXdDbGllbnQqKTsKKwogICAgIFdlYlNwZWVjaElucHV0Q29udHJvbGxlciogbV9jb250cm9sbGVy
OyAvLyBUbyBjYWxsIGludG8gdGhlIGVtYmVkZGVyLgogICAgIFdlYkNvcmU6OlNwZWVjaElucHV0
TGlzdGVuZXIqIG1fbGlzdGVuZXI7CiB9OwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbC5jcHAgYi9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsLmNwcAppbmRleCA2MGM0ZmVkODUy
YjI4NGUwMjcxYWQwMGVkOTcxMDAyYTJmNTdhNGI2Li40NWM2ZmYwODYyZjAyNGZjMTgwNTczM2Mx
NmE5MzMwNTczN2FjMzkzIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNwZWVj
aElucHV0Q29udHJvbGxlck1vY2tJbXBsLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsLmNwcApAQCAtNTcsNyArNTcsMTIgQEAgV2Vi
U3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6On5XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJN
b2NrSW1wbCgpCiAKIHZvaWQgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OnNldE1v
Y2tSZWNvZ25pdGlvblJlc3VsdChjb25zdCBXZWJTdHJpbmcmIHJlc3VsdCkKIHsKLSAgICBtX3dl
YmNvcmVNb2NrLT5zZXRSZWNvZ25pdGlvblJlc3VsdChyZXN1bHQpOworICAgIG1fd2ViY29yZU1v
Y2stPnNldFJlY29nbml0aW9uUmVzdWx0KHJlc3VsdCwgV2ViU3RyaW5nOjpmcm9tVVRGOCgiIikp
OworfQorCit2b2lkIFdlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsOjpzZXRNb2NrUmVj
b2duaXRpb25SZXN1bHQoY29uc3QgV2ViU3RyaW5nJiByZXN1bHQsIGNvbnN0IFdlYlN0cmluZyAm
bGFuZ3VhZ2UpCit7CisgICAgbV93ZWJjb3JlTW9jay0+c2V0UmVjb2duaXRpb25SZXN1bHQocmVz
dWx0LCBsYW5ndWFnZSk7CiB9CiAKIHZvaWQgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0lt
cGw6OmRpZENvbXBsZXRlUmVjb3JkaW5nKGludCByZXF1ZXN0SWQpCkBAIC03NSw5ICs4MCw5IEBA
IHZvaWQgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OnNldFJlY29nbml0aW9uUmVz
dWx0KGludCByZXF1ZXN0SWQsIGNvbnN0CiAgICAgbV9saXN0ZW5lci0+c2V0UmVjb2duaXRpb25S
ZXN1bHQocmVxdWVzdElkLCByZXN1bHQpOwogfQogCi1ib29sIFdlYlNwZWVjaElucHV0Q29udHJv
bGxlck1vY2tJbXBsOjpzdGFydFJlY29nbml0aW9uKGludCByZXF1ZXN0SWQsIGNvbnN0IFdlYlJl
Y3QmIGVsZW1lbnRSZWN0KQorYm9vbCBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6
c3RhcnRSZWNvZ25pdGlvbihpbnQgcmVxdWVzdElkLCBjb25zdCBXZWJTdHJpbmcmIGxhbmd1YWdl
LCBjb25zdCBXZWJSZWN0JiBlbGVtZW50UmVjdCkKIHsKLSAgICByZXR1cm4gbV93ZWJjb3JlTW9j
ay0+c3RhcnRSZWNvZ25pdGlvbihyZXF1ZXN0SWQsIGVsZW1lbnRSZWN0KTsKKyAgICByZXR1cm4g
bV93ZWJjb3JlTW9jay0+c3RhcnRSZWNvZ25pdGlvbihyZXF1ZXN0SWQsIGxhbmd1YWdlLCBlbGVt
ZW50UmVjdCk7CiB9CiAKIHZvaWQgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OmNh
bmNlbFJlY29nbml0aW9uKGludCByZXF1ZXN0SWQpCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsLmggYi9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsLmgKaW5kZXggZWRiZmNhM2Vl
NjBlOTM5NDI4OTNlMjcyMTg5M2U0M2EwZWI4N2M1Zi4uMWIzMDUzYmYwOTI3NTNlZjc5MjkzZGRj
YTEyZTg0MzUyMDZiZGJjMCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTcGVl
Y2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
U3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGwuaApAQCAtMzcsNiArMzcsMTAgQEAKICNpbmNs
dWRlICJXZWJTdHJpbmcuaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKK25hbWVzcGFjZSBX
VEYgeworY2xhc3MgU3RyaW5nOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBTcGVl
Y2hJbnB1dENsaWVudE1vY2s7CiB9CkBAIC01NywxMSArNjEsMTUgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0UmVjb2duaXRpb25SZXN1bHQoaW50IHJlcXVlc3RJZCwgY29uc3QgV1RGOjpTdHJpbmcm
IHJlc3VsdCk7CiAKICAgICAvLyBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIgbWV0aG9kcy4KLSAg
ICBib29sIHN0YXJ0UmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCwgY29uc3QgV2ViUmVjdCYgZWxl
bWVudFJlY3QpOworICAgIGJvb2wgc3RhcnRSZWNvZ25pdGlvbihpbnQgcmVxdWVzdElkLCBjb25z
dCBXZWJTdHJpbmcmIGxhbmd1YWdlLCBjb25zdCBXZWJSZWN0JiBlbGVtZW50UmVjdCk7CiAgICAg
dm9pZCBjYW5jZWxSZWNvZ25pdGlvbihpbnQgcmVxdWVzdElkKTsKICAgICB2b2lkIHN0b3BSZWNv
cmRpbmcoaW50IHJlcXVlc3RJZCk7CiAKICAgICAvLyBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJN
b2NrIG1ldGhvZHMuCisgICAgdm9pZCBzZXRNb2NrUmVjb2duaXRpb25SZXN1bHQoY29uc3QgV2Vi
U3RyaW5nJiByZXN1bHQsIGNvbnN0IFdlYlN0cmluZyYgbGFuZ3VhZ2UpOworCisgICAgLy8gRklY
TUU6IHRoaXMgaXMgYSBmaXggZm9yIGEgdHdvLXNpZGVkIHBhdGNoLiBEZWxldGUgYXMgc29vbiBh
cyB0aGUgY2hyb21pdW0gc2lkZSBpcyBwYXRjaGVkLgorICAgIC8vIENocm9taXVtIHBhdGNoIG5v
dCB1cGxvYWRlZCB5ZXQsIGJ1dCB3aWxsIGRlcGVuZCBvbiBodHRwOi8vY29kZXJldmlldy5jaHJv
bWl1bS5vcmcvMzYxNTAwNS9zaG93IHBhdGNoLgogICAgIHZvaWQgc2V0TW9ja1JlY29nbml0aW9u
UmVzdWx0KGNvbnN0IFdlYlN0cmluZyYgcmVzdWx0KTsKIAogcHJpdmF0ZToKQEAgLTcyLDQgKzgw
LDMgQEAgcHJpdmF0ZToKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gV2ViU3Bl
ZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGxfaAotCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwu
Y3BwCmluZGV4IDkyOWY5MWFiZjQ0MDExZTUwZDMzNTI0MWY1NjFiODY3YWY4OGM0ZmUuLjdmYzll
Zjc2MDQ3MGIzNjUyZjNhMzdiZDI4M2FkMTM2Yjg5NWRiYTcgMTAwNjQ0Ci0tLSBhL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuY3BwCkBAIC04OCw2ICs4OCw3IEBACiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4u
aCIKICNpbmNsdWRlICJTZWxlY3Rpb25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3Mu
aCIKKyNpbmNsdWRlICJTcGVlY2hJbnB1dENsaWVudEltcGwuaCIKICNpbmNsdWRlICJUaW1lci5o
IgogI2luY2x1ZGUgIlR5cGluZ0NvbW1hbmQuaCIKICNpbmNsdWRlICJVc2VyR2VzdHVyZUluZGlj
YXRvci5oIgpAQCAtMjgyLDcgKzI4Myw3IEBAIFdlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbChXZWJW
aWV3Q2xpZW50KiBjbGllbnQsIFdlYkRldlRvb2xzQWdlbnRDbGllbnQqIGRldlRvb2xzCiAgICAg
LCBtX2NvbXBvc2l0b3JDcmVhdGlvbkZhaWxlZChmYWxzZSkKICNlbmRpZgogI2lmIEVOQUJMRShJ
TlBVVF9TUEVFQ0gpCi0gICAgLCBtX3NwZWVjaElucHV0Q2xpZW50KGNsaWVudCkKKyAgICAsIG1f
c3BlZWNoSW5wdXRDbGllbnQoU3BlZWNoSW5wdXRDbGllbnRJbXBsOjpjcmVhdGUoY2xpZW50KSkK
ICNlbmRpZgogICAgICwgbV9kZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5KG5ldyBEZXZpY2VP
cmllbnRhdGlvbkNsaWVudFByb3h5KGNsaWVudCA/IGNsaWVudC0+ZGV2aWNlT3JpZW50YXRpb25D
bGllbnQoKSA6IDApKQogewpAQCAtMzA1LDcgKzMwNiw3IEBAIFdlYlZpZXdJbXBsOjpXZWJWaWV3
SW1wbChXZWJWaWV3Q2xpZW50KiBjbGllbnQsIFdlYkRldlRvb2xzQWdlbnRDbGllbnQqIGRldlRv
b2xzCiAgICAgcGFnZUNsaWVudHMuZHJhZ0NsaWVudCA9ICZtX2RyYWdDbGllbnRJbXBsOwogICAg
IHBhZ2VDbGllbnRzLmluc3BlY3RvckNsaWVudCA9ICZtX2luc3BlY3RvckNsaWVudEltcGw7CiAj
aWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKLSAgICBwYWdlQ2xpZW50cy5zcGVlY2hJbnB1dENsaWVu
dCA9ICZtX3NwZWVjaElucHV0Q2xpZW50OworICAgIHBhZ2VDbGllbnRzLnNwZWVjaElucHV0Q2xp
ZW50ID0gbV9zcGVlY2hJbnB1dENsaWVudC5nZXQoKTsKICNlbmRpZgogICAgIHBhZ2VDbGllbnRz
LmRldmljZU9yaWVudGF0aW9uQ2xpZW50ID0gbV9kZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5
LmdldCgpOwogCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgg
Yi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKaW5kZXggODQxMGViZDQ4NTIzMGMw
ZWFlMTVhNWZhMWE1Y2FjYzZlODhjZDQxMS4uMDUwOWQwNTBkYmExYTE1MDUxMThlNDQ3NjdiZDc0
ZjM4MGMxNDRkZCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5o
CisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaApAQCAtNDksNyArNDksNiBA
QAogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0u
aCIKICNpbmNsdWRlICJOb3RpZmljYXRpb25QcmVzZW50ZXJJbXBsLmgiCi0jaW5jbHVkZSAiU3Bl
ZWNoSW5wdXRDbGllbnRJbXBsLmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CiAKQEAgLTc0LDYgKzczLDcgQEAgY2xhc3MgQXV0b0ZpbGxQb3B1
cE1lbnVDbGllbnQ7CiBjbGFzcyBDb250ZXh0TWVudUNsaWVudEltcGw7CiBjbGFzcyBEZXZpY2VP
cmllbnRhdGlvbkNsaWVudFByb3h5OwogY2xhc3MgRHJhZ1Njcm9sbFRpbWVyOworY2xhc3MgU3Bl
ZWNoSW5wdXRDbGllbnRJbXBsOwogY2xhc3MgV2ViQWNjZXNzaWJpbGl0eU9iamVjdDsKIGNsYXNz
IFdlYkRldlRvb2xzQWdlbnRDbGllbnQ7CiBjbGFzcyBXZWJEZXZUb29sc0FnZW50UHJpdmF0ZTsK
QEAgLTU0Nyw3ICs1NDcsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBjb25zdCBXZWJJbnB1dEV2
ZW50KiBtX2N1cnJlbnRJbnB1dEV2ZW50OwogCiAjaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKLSAg
ICBTcGVlY2hJbnB1dENsaWVudEltcGwgbV9zcGVlY2hJbnB1dENsaWVudDsKKyAgICBPd25QdHI8
U3BlZWNoSW5wdXRDbGllbnRJbXBsPiBtX3NwZWVjaElucHV0Q2xpZW50OwogI2VuZGlmCiAgICAg
Ly8gSWYgd2UgYXR0ZW1wdCB0byBmZXRjaCB0aGUgb24tc2NyZWVuIEdyYXBoaWNzQ29udGV4dDNE
IGJlZm9yZQogICAgIC8vIHRoZSBjb21wb3NpdG9yIGhhcyBiZWVuIHR1cm5lZCBvbiwgd2UgbmVl
ZCB0byBpbnN0YW50aWF0ZSBpdApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nIGIv
V2ViS2l0VG9vbHMvQ2hhbmdlTG9nCmluZGV4IGE5MWZlODVlYTMzMjc3YTNhMGI2OTRiNzVjZGM2
Y2JlN2Q3ZWM3OGIuLmEzOTJmOGRjMDVhMTViZmU0OGMzZGIxNTU0ZDhhNjEwNzE4NzcxMDIgMTAw
NjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZworKysgYi9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwzMCBAQAorMjAxMC0xMC0yMiAgTGVhbmRybyBHcmFjaWEgR2lsICA8bGVh
bmRyb2dyYWNpYUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEplcmVteSBPcmxv
dy4KKworICAgICAgICBBZGRlZCBhIHNlY29uZCBwYXJhbWV0ZXIgdG8gc2V0TW9ja1NwZWVjaElu
cHV0UmVzdWx0IGZvcgorICAgICAgICB0aGUgbGFuZ3VhZ2UgdXNlZCBpbiBzcGVlY2ggaW5wdXQu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzA4OQor
CisgICAgICAgIEZpeGVkIG1pc3NpbmcgcGF0Y2hlcyB0byBzb21lIHBvcnRzLgorCisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoc2V0
TW9ja1NwZWVjaElucHV0UmVzdWx0Q2FsbGJhY2spOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L0xheW91dFRlc3RDb250cm9sbGVyLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
Z3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250
cm9sbGVyOjpzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQpOgorICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKExheW91dFRlc3RD
b250cm9sbGVyOjpzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQpOgorICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcDoKKyAgICAgICAgKExheW91dFRlc3RD
b250cm9sbGVyOjpzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQpOgorICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHA6CisgICAgICAgIChMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6c2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KToKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcDoKKyAgICAgICAgKExheW91
dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQpOgorCiAyMDEwLTEwLTIy
ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBV
bnJldmlld2VkLCByb2xsaW5nIG91dCByNzAzMDEuCkBAIC0zMiw2ICs1OSw4IEBACiAgICAgICAg
IHRoZSBsYW5ndWFnZSB1c2VkIGluIHNwZWVjaCBpbnB1dC4KICAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3MDg5CiAKKyAgICAgICAgRml4ZWQgbWlzc2lu
ZyBwYXRjaGVzIHRvIHNvbWUgcG9ydHMuCisKICAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlv
dXRUZXN0Q29udHJvbGxlci5jcHA6CiAgICAgICAgIChzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHRD
YWxsYmFjayk6CiAgICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIu
aDoKQEAgLTYyMiw2ICs2NTEsMjIgQEAKICAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ndGsvTGF5
b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwOgogICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdCk6CiAKKzIwMTAtMTAtMjAgIExlYW5kcm8gR3JhY2lh
IEdpbCAgPGxlYW5kcm9ncmFjaWFAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBK
ZXJlbXkgT3Jsb3cuCisKKyAgICAgICAgQWRkZWQgYSBzZWNvbmQgcGFyYW1ldGVyIHRvIHNldE1v
Y2tTcGVlY2hJbnB1dFJlc3VsdCBmb3IKKyAgICAgICAgdGhlIGxhbmd1YWdlIHVzZWQgaW4gc3Bl
ZWNoIGlucHV0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDcwODkKKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKHNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdENhbGxiYWNrKToKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQpOgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHA6CisgICAg
ICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KToKKwog
MjAxMC0xMC0xOSAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+CiAKICAgICAgICAgVGVh
Y2ggdXBkYXRlLXdlYmtpdC1zdXBwb3J0LWxpYnMgYWJvdXQgdGhlIG5ldyB2ZXJzaW9uaW5nIG9m
CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJv
bGxlci5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxl
ci5jcHAKaW5kZXggYjVjYzg3NDIxNWI0MGY1OTA3NTVhNDA0N2ViZGQ1ZDlmOGVkNjI3OS4uZGI0
NzBjODYyMmMwM2RiYTRhZDg5MDE3YjBlYzkyOGJiZDRhMzdjMSAxMDA2NDQKLS0tIGEvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1dlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcApAQCAtMTA3MCwx
NCArMTA3MCwxNyBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBzZXRNb2NrR2VvbG9jYXRpb25FcnJvckNh
bGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdAogCiBzdGF0aWMgSlNWYWx1ZVJl
ZiBzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwg
SlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1
bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNl
cHRpb24pCiB7Ci0gICAgaWYgKGFyZ3VtZW50Q291bnQgPCAxKQorICAgIGlmIChhcmd1bWVudENv
dW50IDwgMikKICAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwog
CiAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHJlc3VsdChBZG9wdCwgSlNWYWx1ZVRvU3Ry
aW5nQ29weShjb250ZXh0LCBhcmd1bWVudHNbMF0sIGV4Y2VwdGlvbikpOwogICAgIEFTU0VSVCgh
KmV4Y2VwdGlvbik7CiAKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gbGFuZ3VhZ2UoQWRv
cHQsIEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgYXJndW1lbnRzWzFdLCBleGNlcHRpb24p
KTsKKyAgICBBU1NFUlQoISpleGNlcHRpb24pOworCiAgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIq
IGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0
R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7Ci0gICAgY29udHJvbGxlci0+c2V0TW9ja1NwZWVjaElu
cHV0UmVzdWx0KHJlc3VsdC5nZXQoKSk7CisgICAgY29udHJvbGxlci0+c2V0TW9ja1NwZWVjaElu
cHV0UmVzdWx0KHJlc3VsdC5nZXQoKSwgbGFuZ3VhZ2UuZ2V0KCkpOwogCiAgICAgcmV0dXJuIEpT
VmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaCBiL1dlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKaW5kZXggNjg5ZTExNDU3NTA4ZGZmZTdk
ODg3YmRlMTY0ODIxNDBiYTc1YmMxYS4uNDQxMGJmZDJjYWJkMjMxYjk3MWQxOTQ4MDhjNmRlZjJi
ZjNmYWU0NiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVz
dENvbnRyb2xsZXIuaAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0
Q29udHJvbGxlci5oCkBAIC05NCw3ICs5NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE1vY2tE
ZXZpY2VPcmllbnRhdGlvbihib29sIGNhblByb3ZpZGVBbHBoYSwgZG91YmxlIGFscGhhLCBib29s
IGNhblByb3ZpZGVCZXRhLCBkb3VibGUgYmV0YSwgYm9vbCBjYW5Qcm92aWRlR2FtbWEsIGRvdWJs
ZSBnYW1tYSk7CiAgICAgdm9pZCBzZXRNb2NrR2VvbG9jYXRpb25FcnJvcihpbnQgY29kZSwgSlNT
dHJpbmdSZWYgbWVzc2FnZSk7CiAgICAgdm9pZCBzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihk
b3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSk7Ci0gICAg
dm9pZCBzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoSlNTdHJpbmdSZWYgcmVzdWx0KTsKKyAgICB2
b2lkIHNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdChKU1N0cmluZ1JlZiByZXN1bHQsIEpTU3RyaW5n
UmVmIGxhbmd1YWdlKTsKICAgICB2b2lkIHNldFBlcnNpc3RlbnRVc2VyU3R5bGVTaGVldExvY2F0
aW9uKEpTU3RyaW5nUmVmIHBhdGgpOwogICAgIHZvaWQgc2V0UGx1Z2luc0VuYWJsZWQoYm9vbCBm
bGFnKTsKICAgICB2b2lkIHNldFBvcHVwQmxvY2tpbmdFbmFibGVkKGJvb2wgZmxhZyk7CmRpZmYg
LS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29u
dHJvbGxlci5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRU
ZXN0Q29udHJvbGxlci5jcHAKaW5kZXggODJmZDA4NTE2N2RiM2VlYWJkOTVjZGY0YzgxNzBmN2Rl
Y2ZmYTE3NS4uZDlkODE4MzU2ZTMzOTAxYTIzZjFiMjViMzMyMmY2MWI5NzZiYmJjMiAxMDA2NDQK
LS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRy
b2xsZXIuY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91
dFRlc3RDb250cm9sbGVyLmNwcApAQCAtMTUyNiwxMCArMTUyNiwxMCBAQCB2b2lkIExheW91dFRl
c3RDb250cm9sbGVyOjphYm9ydE1vZGFsKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRz
LCBDcHBWYXJpYQogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja1NwZWVjaElucHV0
UmVzdWx0KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1
bHQpCiB7CiAgICAgcmVzdWx0LT5zZXROdWxsKCk7Ci0gICAgaWYgKGFyZ3VtZW50cy5zaXplKCkg
PCAxIHx8ICFhcmd1bWVudHNbMF0uaXNTdHJpbmcoKSkKKyAgICBpZiAoYXJndW1lbnRzLnNpemUo
KSA8IDIgfHwgIWFyZ3VtZW50c1swXS5pc1N0cmluZygpIHx8ICFhcmd1bWVudHNbMV0uaXNTdHJp
bmcoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9zcGVlY2hJbnB1dENvbnRyb2xsZXJNb2Nr
LT5zZXRNb2NrUmVjb2duaXRpb25SZXN1bHQoY3BwVmFyaWFudFRvV2ViU3RyaW5nKGFyZ3VtZW50
c1swXSkpOworICAgIG1fc3BlZWNoSW5wdXRDb250cm9sbGVyTW9jay0+c2V0TW9ja1JlY29nbml0
aW9uUmVzdWx0KGNwcFZhcmlhbnRUb1dlYlN0cmluZyhhcmd1bWVudHNbMF0pLCBjcHBWYXJpYW50
VG9XZWJTdHJpbmcoYXJndW1lbnRzWzFdKSk7CiB9CiAKIFdlYktpdDo6V2ViU3BlZWNoSW5wdXRD
b250cm9sbGVyKiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3BlZWNoSW5wdXRDb250cm9sbGVyKFdl
YktpdDo6V2ViU3BlZWNoSW5wdXRMaXN0ZW5lciogbGlzdGVuZXIpCmRpZmYgLS1naXQgYS9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwIGIv
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNw
cAppbmRleCAxODFlZjlmMGIyOWNlNjA5OGIxOGJkNjQwM2UxZWNhYjE4ZTAzYjQ0Li5mM2RiNjIy
ZTY2NzgwMWU3MGY2NDg0NWNjMGY0OTA3NDVjNzBmOTI0IDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCisrKyBiL1dl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAK
QEAgLTUwMCw3ICs1MDAsNyBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRHZW9sb2Nh
dGlvblBlcm1pc3Npb24oYm9vbCBhbGxvdykKICAgICBzZXRHZW9sb2NhdGlvblBlcm1pc3Npb25D
b21tb24oYWxsb3cpOwogfQogCi12b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrU3Bl
ZWNoSW5wdXRSZXN1bHQoSlNTdHJpbmdSZWYgcmVzdWx0KQordm9pZCBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6c2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KEpTU3RyaW5nUmVmIHJlc3VsdCwgSlNTdHJp
bmdSZWYgbGFuZ3VhZ2UpCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3Igc3BlZWNoIGlu
cHV0IGxheW91dCB0ZXN0cy4KICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTM5NDg1LgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCmluZGV4IGM1ZDVhOTA2OTU5OWJh
NGJjZmMyYWNhMzExYzdhM2E3NjVhYjVlMWQuLjE1MGI2ZjljZDNhNWJjZjQ5MDEwNzcxOGRmZmY5
MzNkNWM5NGM0ZDEgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9M
YXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KQEAgLTM3MSw3ICszNzEsNyBAQCB2b2lk
IExheW91dFRlc3RDb250cm9sbGVyOjpzZXRHZW9sb2NhdGlvblBlcm1pc3Npb24oYm9vbCBhbGxv
dykKICAgICBbW1ttYWluRnJhbWUgd2ViVmlld10gVUlEZWxlZ2F0ZV0gZGlkU2V0TW9ja0dlb2xv
Y2F0aW9uUGVybWlzc2lvbl07CiB9CiAKLXZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1v
Y2tTcGVlY2hJbnB1dFJlc3VsdChKU1N0cmluZ1JlZiByZXN1bHQpCit2b2lkIExheW91dFRlc3RD
b250cm9sbGVyOjpzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoSlNTdHJpbmdSZWYgcmVzdWx0LCBK
U1N0cmluZ1JlZiBsYW5ndWFnZSkKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBzcGVl
Y2ggaW5wdXQgbGF5b3V0IHRlc3RzLgogICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9Mzk0ODUuCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcCBiL1dlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwCmluZGV4IGQzNmEwNzQ0ZTY4
NmQzM2FlNTYxYmNhMWVjNWMyOTQyN2I0ZThjMWIuLjIwNTZiNDBiZmQxYTYzODA0NGRlZGM4NGNj
MDViZWFiZDdiZTBjYjIgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0
L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwCkBAIC03NTksNyArNzU5LDcgQEAgdm9p
ZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oZG91Ymxl
IGxhdGl0dWRlLCBkb3VibGUgbG8KICAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0TW9j
a0dlb2xvY2F0aW9uUG9zaXRpb24obGF0aXR1ZGUsIGxvbmdpdHVkZSwgYWNjdXJhY3kpOwogfQog
Ci12b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoY29u
c3QgUVN0cmluZyYgcmVzdWx0KQordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja1Nw
ZWVjaElucHV0UmVzdWx0KGNvbnN0IFFTdHJpbmcmIHJlc3VsdCwgY29uc3QgUVN0cmluZyYgbGFu
Z3VhZ2UpCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3Igc3BlZWNoIGlucHV0IGxheW91
dCB0ZXN0cy4KICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTM5NDg1LgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5
b3V0VGVzdENvbnRyb2xsZXJRdC5oIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5
b3V0VGVzdENvbnRyb2xsZXJRdC5oCmluZGV4IDM2ODQ5NDZhNDA1NTA1NWFjMTRjNDFmZjIzMTVl
OTczMjFiNTlkZDkuLjEwNmM3M2JlMjAyM2IxMDdmYzUyYzczNjU0ZDE1YWZlZDRlODNlNTAgMTAw
NjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9s
bGVyUXQuaAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29u
dHJvbGxlclF0LmgKQEAgLTIxNSw3ICsyMTUsNyBAQCBwdWJsaWMgc2xvdHM6CiAgICAgYm9vbCBp
c0dlb2xvY2F0aW9uUGVybWlzc2lvblNldCgpIGNvbnN0IHsgcmV0dXJuIG1faXNHZW9sb2NhdGlv
blBlcm1pc3Npb25TZXQ7IH0KICAgICBib29sIGdlb2xvY2F0aW9uUGVybWlzc2lvbigpIGNvbnN0
IHsgcmV0dXJuIG1fZ2VvbG9jYXRpb25QZXJtaXNzaW9uOyB9CiAKLSAgICB2b2lkIHNldE1vY2tT
cGVlY2hJbnB1dFJlc3VsdChjb25zdCBRU3RyaW5nJiByZXN1bHQpOworICAgIHZvaWQgc2V0TW9j
a1NwZWVjaElucHV0UmVzdWx0KGNvbnN0IFFTdHJpbmcmIHJlc3VsdCwgY29uc3QgUVN0cmluZyYg
bGFuZ3VhZ2UpOwogCiAgICAgLy8gRW1wdHkgc3R1YiBtZXRob2QgdG8ga2VlcCBwYXJpdHkgd2l0
aCBvYmplY3QgbW9kZWwgZXhwb3NlZCBieSBnbG9iYWwgTGF5b3V0VGVzdENvbnRyb2xsZXIuCiAg
ICAgdm9pZCBhYm9ydE1vZGFsKCkge30KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAgYi9XZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCmluZGV4IDllOGVkMWU2
OTU3ZDdmN2NhNGZlYWQ5MWQ4N2I5YjU2ZmI0MjE0NTkuLmQ3YzQxZTBhNmJmNTdlZjRkMDk5MTVl
ODNhNDkyMTI1Y2RhNThjZDggMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcApAQCAtNDA1LDcgKzQwNSw3
IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbihi
b29sIGFsbG93KQogICAgIHNldEdlb2xvY2F0aW9uUGVybWlzc2lvbkNvbW1vbihhbGxvdyk7CiB9
CiAKLXZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdChK
U1N0cmluZ1JlZiByZXN1bHQpCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrU3Bl
ZWNoSW5wdXRSZXN1bHQoSlNTdHJpbmdSZWYgcmVzdWx0LCBKU1N0cmluZ1JlZiBsYW5ndWFnZSkK
IHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBzcGVlY2ggaW5wdXQgbGF5b3V0IHRlc3Rz
LgogICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk0
ODUuCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0
Q29udHJvbGxlcld4LmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRl
c3RDb250cm9sbGVyV3guY3BwCmluZGV4IGVlZmM1ODc4MWUwYTFlYWJjZDBmZDgxMzg5MzJjYzQz
YzRkNzg0N2YuLjMyNjE0YzExMzNkZGY4YWFkNzdlZmIwZDFkNGE2YjMwZTQwMTEwOGIgMTAwNjQ0
Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVy
V3guY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250
cm9sbGVyV3guY3BwCkBAIC0zMjAsNyArMzIwLDcgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxl
cjo6c2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKGJvb2wgYWxsb3cpCiAgICAgc2V0R2VvbG9jYXRp
b25QZXJtaXNzaW9uQ29tbW9uKGFsbG93KTsKIH0KIAotdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxl
cjo6c2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KEpTU3RyaW5nUmVmIHJlc3VsdCkKK3ZvaWQgTGF5
b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdChKU1N0cmluZ1JlZiBy
ZXN1bHQsIEpTU3RyaW5nUmVmIGxhbmd1YWdlKQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQg
Zm9yIHNwZWVjaCBpbnB1dCBsYXlvdXQgdGVzdHMuCiAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTQ4NS4KQEAgLTUyOCw0ICs1MjgsMyBAQCBKU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4gTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhZ2VTaXplQW5kTWFy
Z2luc0luUGl4ZWxzKGludCBwYQogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQKICAgICByZXR1cm4g
MDsKIH0KLQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72049</attachid>
            <date>2010-10-27 09:50:08 -0700</date>
            <delta_ts>2010-10-28 10:49:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47089-20101027175005.patch</filename>
            <type>text/plain</type>
            <size>47158</size>
            <attacher name="Leandro Graciá Gil">leandrogracia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiZTRiODM2N2IzM2Q0YjNjYmY1NjNiZGM2OWI5ZjAyNmQxYWM5ZmMxLi4zOTRjMTcw
NDI4YTEyMTExMmNjNTM5MmQ4MDkwZDBiMzJlMmRlYjIzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAK
KzIwMTAtMTAtMjcgIExlYW5kcm8gR3JhY2lhIEdpbCAgPGxlYW5kcm9ncmFjaWFAZ29vZ2xlLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBKZXJlbXkgT3Jsb3cuCisKKyAgICAgICAgQWRkZWQg
YSBsYXlvdXQgdGVzdCBmb3IgdGhlIGxhbmd1YWdlIHRhZyBpbiBzcGVlY2ggaW5wdXQuIFVwZGF0
ZWQKKyAgICAgICAgdGhlIHNwZWVjaCBidXR0b24gdGVzdHMgdG8gaW5jbHVkZSB0aGUgbmV3IGxh
bmd1YWdlIHBhcmFtZXRlciBpbiB0aGUKKyAgICAgICAgbW9jayByZXN1bHQuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzA4OQorCisgICAgICAgICog
ZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1sYW5ndWFnZS10YWctZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L3NwZWVjaC9pbnB1dC10ZXh0LWxhbmd1YWdlLXRhZy5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L3NwZWVjaC9pbnB1dC10ZXh0LXNwZWVjaGJ1dHRvbi5odG1sOgor
ICAgICAgICAqIGZhc3Qvc3BlZWNoL3NwZWVjaC1idXR0b24taWdub3JlLWdlbmVyYXRlZC1ldmVu
dHMuaHRtbDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50
eHQ6CisKIDIwMTAtMTAtMjcgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIENoZWNrIGluIG5ldyBXaW5kb3dzIHJlc3VsdHMgZm9yCkBAIC01MzEwLDYgKzUzMjUsMjQg
QEAKICAgICAgICAgKiBmYXN0L3NwZWVjaC9zcGVlY2gtYnV0dG9uLWlnbm9yZS1nZW5lcmF0ZWQt
ZXZlbnRzLmh0bWw6CiAgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlv
bnMudHh0OgogCisyMDEwLTEwLTIwICBMZWFuZHJvIEdyYWNpYSBHaWwgIDxsZWFuZHJvZ3JhY2lh
QGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSmVyZW15IE9ybG93LgorCisgICAg
ICAgIEFkZGVkIGEgbGF5b3V0IHRlc3QgZm9yIHRoZSBsYW5ndWFnZSB0YWcgaW4gc3BlZWNoIGlu
cHV0LiBVcGRhdGVkCisgICAgICAgIHRoZSBzcGVlY2ggYnV0dG9uIHRlc3RzIHRvIGluY2x1ZGUg
dGhlIG5ldyBsYW5ndWFnZSBwYXJhbWV0ZXIgaW4gdGhlCisgICAgICAgIG1vY2sgcmVzdWx0Lgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDcwODkKKwor
ICAgICAgICAqIGZhc3Qvc3BlZWNoL2lucHV0LXRleHQtbGFuZ3VhZ2UtdGFnLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1sYW5ndWFnZS10YWcu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1zcGVlY2hidXR0
b24uaHRtbDogQWRkZWQgYW4gZW1wdHkgbGFuZ3VhZ2UKKyAgICAgICAgICBwYXJhbWV0ZXIuCisg
ICAgICAgICogZmFzdC9zcGVlY2gvc3BlZWNoLWJ1dHRvbi1pZ25vcmUtZ2VuZXJhdGVkLWV2ZW50
cy5odG1sOiBBZGRlZCBhbgorICAgICAgICAgIGVtcHR5IGxhbmd1YWdlIHBhcmFtZXRlci4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6IGxhbmd1YWdl
IHRhZyB0ZXN0IGlzIGV4cGVjdGVkCisgICAgICAgICAgdG8gZmFpbCB1bnRpbCB0aGUgY2hyb21p
dW0tc2lkZSBwYXRjaCBoYXMgYmVlbiBhcHBsaWVkLgorCiAyMDEwLTEwLTIwICBNYXJ0aW4gUm9i
aW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnNraXAgc29tZSB0ZXN0
cyB0aGF0IGFyZSBub3cgcGFzc2luZy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc3Bl
ZWNoL2lucHV0LXRleHQtbGFuZ3VhZ2UtdGFnLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zh
c3Qvc3BlZWNoL2lucHV0LXRleHQtbGFuZ3VhZ2UtdGFnLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5hZWNiNDc1ZmRjNWQ5NDU2YjI3ZTYzZWU5NDM0YzQxNDc3YzM1NzM0Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1sYW5ndWFnZS10YWctZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKK1Rlc3RzIGZvciBsYW5ndWFnZSB0YWcgaW5oZXJp
dGFuY2UgYW5kIHZhbGlkYXRpb24gaW4gc3BlZWNoIGJ1dHRvbnMuCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworCitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzcGVlY2hJbnB1
dE5vbmUiKS52YWx1ZSBpcyAiZXJyb3I6IG5vIHJlc3VsdCBmb3VuZCBmb3IgbGFuZ3VhZ2UgJyci
CitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzcGVlY2hJbnB1dEVsZW1lbnQiKS52YWx1
ZSBpcyAiUGljdHVyZXMgb2YgdGhlIG1vb24iCitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJzcGVlY2hJbnB1dEluaGVyaXRlZCIpLnZhbHVlIGlzICLmnIjjga7lhpnnnJ8iCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKyAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL2lucHV0LXRleHQtbGFuZ3VhZ2UtdGFnLmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9pbnB1dC10ZXh0LWxhbmd1YWdlLXRhZy5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjMxNThkM2U3NmQxOGUxMWYxODBkMDdmZGExODYyNDlhNDhlMGQyYzcKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9pbnB1dC10ZXh0LWxhbmd1YWdlLXRh
Zy5odG1sCkBAIC0wLDAgKzEsNTYgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8v
RFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KK2Rlc2Ny
aXB0aW9uKCdUZXN0cyBmb3IgbGFuZ3VhZ2UgdGFnIGluaGVyaXRhbmNlIGFuZCB2YWxpZGF0aW9u
IGluIHNwZWVjaCBidXR0b25zLicpOworCisvLyBOb3RlOiB0ZXN0IGNhc2VzIGFyZSBzZXF1ZW50
aWFsIHRvIGVuc3VyZSB0aGF0IG5vIG5ldyByZWNvZ25pdGlvbiBzdGFydHMgd2hlbiBhbm90aGVy
IHJlY29nbml0aW9uIHJlY29yZGluZyBpcyBhY3RpdmUuCitmdW5jdGlvbiBvbkNoYW5nZU5vbmUo
KSB7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
c3BlZWNoSW5wdXROb25lIikudmFsdWUnLCAnZXJyb3I6IG5vIHJlc3VsdCBmb3VuZCBmb3IgbGFu
Z3VhZ2UgXCdcJycpOworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNwZWVjaEJ1dHRvbkNs
aWNrKCdzcGVlY2hJbnB1dEVsZW1lbnQnKTsgfSwgNTApOworfQorCitmdW5jdGlvbiBvbkNoYW5n
ZUVsZW1lbnQoKSB7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgic3BlZWNoSW5wdXRFbGVtZW50IikudmFsdWUnLCAnUGljdHVyZXMgb2YgdGhlIG1v
b24nKTsKKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzcGVlY2hCdXR0b25DbGljaygnc3Bl
ZWNoSW5wdXRJbmhlcml0ZWQnKTsgfSwgNTApOworfQorCitmdW5jdGlvbiBvbkNoYW5nZUluaGVy
aXRlZCgpIHsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2RvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJzcGVlY2hJbnB1dEluaGVyaXRlZCIpLnZhbHVlJywgJ+aciOOBruWGmeecnycpOworICAg
IGZpbmlzaEpTVGVzdCgpOworfQorCitmdW5jdGlvbiBzcGVlY2hCdXR0b25DbGljayhlbGVtZW50
SWQpIHsKKyAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJ
ZCk7CisgICAgdmFyIHggPSBlbGVtZW50Lm9mZnNldExlZnQgKyBlbGVtZW50Lm9mZnNldFdpZHRo
IC0gNDsKKyAgICB2YXIgeSA9IGVsZW1lbnQub2Zmc2V0VG9wICsgZWxlbWVudC5vZmZzZXRIZWln
aHQgLyAyOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlRG93bigpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKK30KKworZnVuY3Rp
b24gcnVuKCkgeworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIgJiYgd2luZG93
LmV2ZW50U2VuZGVyKSB7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldE1vY2tTcGVl
Y2hJbnB1dFJlc3VsdCgnUGljdHVyZXMgb2YgdGhlIG1vb24nLCAnZW4tR0InKTsKKyAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KCfmnIjjga7lhpnn
nJ8nLCAnamEnKTsKKyAgICAgICAgc3BlZWNoQnV0dG9uQ2xpY2soJ3NwZWVjaElucHV0Tm9uZScp
OworICAgIH0KK30KKword2luZG93Lm9ubG9hZCA9IHJ1bjsKK3dpbmRvdy5qc1Rlc3RJc0FzeW5j
ID0gdHJ1ZTsKK3dpbmRvdy5zdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8
aW5wdXQgaWQ9InNwZWVjaElucHV0Tm9uZSIgeC13ZWJraXQtc3BlZWNoIG9ud2Via2l0c3BlZWNo
Y2hhbmdlPSJvbkNoYW5nZU5vbmUoKSI+Cis8aW5wdXQgaWQ9InNwZWVjaElucHV0RWxlbWVudCIg
eC13ZWJraXQtc3BlZWNoIG9ud2Via2l0c3BlZWNoY2hhbmdlPSJvbkNoYW5nZUVsZW1lbnQoKSIg
bGFuZz0iZW4tR0IiPgorPGRpdiBsYW5nPSJqYSI+IDxpbnB1dCBpZD0ic3BlZWNoSW5wdXRJbmhl
cml0ZWQiIHgtd2Via2l0LXNwZWVjaCBvbndlYmtpdHNwZWVjaGNoYW5nZT0ib25DaGFuZ2VJbmhl
cml0ZWQoKSI+IDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1zcGVlY2hidXR0b24uaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3Qvc3BlZWNoL2lucHV0LXRleHQtc3BlZWNoYnV0dG9uLmh0bWwKaW5kZXggNmY1YmM0YjEy
MWZiNGY5ZDlkZGE2YzMzMWY4YjI2ZGMxY2Q0Mzk5NC4uY2VmNzcwNTZiMTdkMWNkNDUxYjQ5MGI3
YzFmMjQ2YmE2Yzg5NTBkYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvaW5w
dXQtdGV4dC1zcGVlY2hidXR0b24uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9p
bnB1dC10ZXh0LXNwZWVjaGJ1dHRvbi5odG1sCkBAIC0zMiw3ICszMiw3IEBAIGZ1bmN0aW9uIG9u
V2Via2l0U3BlZWNoQ2hhbmdlKCkgewogCiBmdW5jdGlvbiBydW4oKSB7CiAgICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlciAmJiB3aW5kb3cuZXZlbnRTZW5kZXIpIHsKLSAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KCdQaWN0dXJlcyBv
ZiB0aGUgbW9vbicpOworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRNb2NrU3BlZWNo
SW5wdXRSZXN1bHQoJ1BpY3R1cmVzIG9mIHRoZSBtb29uJywgJycpOwogCiAgICAgICAgIC8vIENs
aWNraW5nIHRoZSBzcGVlY2ggYnV0dG9uIHNob3VsZCBmaWxsIGluIG1vY2sgc3BlZWNoLXJlY29n
bml6ZWQgdGV4dC4KICAgICAgICAgdmFyIGlucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3NwZWVjaElucHV0Jyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9zcGVl
Y2gtYnV0dG9uLWlnbm9yZS1nZW5lcmF0ZWQtZXZlbnRzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L3NwZWVjaC9zcGVlY2gtYnV0dG9uLWlnbm9yZS1nZW5lcmF0ZWQtZXZlbnRzLmh0bWwKaW5kZXgg
YjliOGVjMzY2MDU1NzlmMmIxMjZkNmYxZGEzNTYwYzY3MmFkMmI3MS4uYzY4NDg2Mzc3MDUzMzk5
YjI5ZDA0ZmMyOTkwN2U1NWU4YWJmMDYwOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9z
cGVlY2gvc3BlZWNoLWJ1dHRvbi1pZ25vcmUtZ2VuZXJhdGVkLWV2ZW50cy5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3Qvc3BlZWNoL3NwZWVjaC1idXR0b24taWdub3JlLWdlbmVyYXRlZC1ldmVu
dHMuaHRtbApAQCAtNDksNyArNDksNyBAQCBmdW5jdGlvbiBzZXR1cERpc3BhdGNoRXZlbnRUZXN0
KCkgewogZnVuY3Rpb24gcnVuKCkgewogICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIgJiYgd2luZG93LmV2ZW50U2VuZGVyKSB7CiAgICAgICAgIC8vIFJ1bm5pbmcgaW4gRFJULCB0
ZXN0IHRoZSBldmVudFNlbmRlciBjYXNlLgotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5z
ZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoJ1BpY3R1cmVzIG9mIHRoZSBtb29uJyk7CisgICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdCgnUGljdHVyZXMg
b2YgdGhlIG1vb24nLCAnJyk7CiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzcGVl
Y2hJbnB1dCcpLm9ud2Via2l0c3BlZWNoY2hhbmdlID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzcGVlY2hJ
bnB1dCIpLnZhbHVlJywgJ1BpY3R1cmVzIG9mIHRoZSBtb29uJyk7CiAKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dCBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAppbmRleCA5ZDA3
OTIxNWM1NDI0ODMzYzQyYmRiNzVkNTg5NmNlNjM1YjYwMjUyLi5iYzJlMDMxM2UwMDZjYmI4OGM5
MDJkNWZlYTQxNzdmZjc5YTM2ZTY3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CkBAIC0zMjU0LDMgKzMyNTQsNiBAQCBCVUdX
SzQ4MTY0IDogcGx1Z2lucy9pbnZhbGlkLW1pbWUtd2l0aC12YWxpZC1leHRlbnNpb24tc2hvd3Mt
bWlzc2luZy1wbHVnaW4uaHRtbAogCiAvLyBDaHJvbWl1bS1tYWMtc3BlY2lmaWMgdGVzdCwgYW5k
IG9ubHkgcnVucyBpbiBEUlQuCiBCVUdXSzQ2ODY4IDogcGxhdGZvcm0vY2hyb21pdW0vZmFzdC90
ZXh0L2Nocm9taXVtLW1hYy1kdXBsaWNhdGUtaW1lLWNvbXBvc2l0aW9uLmh0bWwgPSBURVhUCisK
Ky8vIFRlbXBvcmFyaWx5IGRpc2FibGVkIGZvciBhIDQtc2lkZWQgcGF0Y2guIFdpbGwgYmUgZW5h
YmxlZCBhZ2FpbiBieSBCVUdXSzQ3NDIwLgorQlVHV0s0NzA4OSA6IGZhc3Qvc3BlZWNoL2lucHV0
LXRleHQtbGFuZ3VhZ2UtdGFnLmh0bWwgPSBGQUlMCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGY2NWRlNzQxYWMyZjIxNTk1ZmQ1NmRmODFi
OGIwOGZhZjI0NGVmYWIuLmFlNDMwODE4Y2RiOTkxMjY0NDgzMDQ1YTM1MzRmNTgwOTAyYTkyMDEg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzggQEAKKzIwMTAtMTAtMjcgIExlYW5kcm8gR3JhY2lhIEdpbCAgPGxlYW5kcm9n
cmFjaWFAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBKZXJlbXkgT3Jsb3cuCisK
KyAgICAgICAgUGF0Y2ggdGhlIGN1cnJlbnQgc3BlZWNoIGlucHV0IGltcGxlbWVudGF0aW9uIHRv
IHVzZSB0aGUgbmVhcmVzdAorICAgICAgICBsYW5ndWFnZSB0YWcuIFRoZSBsYW5ndWFnZSBpcyBu
b3cgcGFzc2VkIHRvIHRoZSBzdGFydFJlY29nbml0aW9uCisgICAgICAgIG1ldGhvZHMgc28gdGhh
dCBsYW5ndWFnZS1zcGVjaWZpYyByZWNvZ25pdGlvbiBjb3VsZCBiZSB1c2VkLiBBbHNvIGFkZGVk
CisgICAgICAgIGEgc2Vjb25kIHBhcmFtZXRlciB0byBzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQg
Zm9yIHRoZSBsYW5ndWFnZSB1c2VkIGluCisgICAgICAgIHNwZWVjaCByZWNvZ25pdGlvbi4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3MDg5CisKKyAg
ICAgICAgVGhpcyBpcyB0aGUgMm5kIG9mIGEgNC1zaWRlZCBwYXRjaCBpbiBDaHJvbWl1bSBhbmQg
V2ViS2l0LiBGb3IgbW9yZQorICAgICAgICBkZXRhaWxzIHNlZSBodHRwOi8vY29kZXJldmlldy5j
aHJvbWl1bS5vcmcvMzYxNTAwNS9zaG93IGFuZAorICAgICAgICBodHRwOi8vY29kZXJldmlldy5j
aHJvbWl1bS5vcmcvMzU5NTAxOC9zaG93LiBUaGUgbGFzdCBvZiB0aGUgNCBwYXRjaGVzCisgICAg
ICAgIGRlcGVuZHMgYWxzbyBvbiB0aGUgbGFuZ3VhZ2UgdGFnIHZhbGlkYXRpb24gcHJvdmlkZWQg
YnkgdGhpcyBwYXRjaDoKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQ4MjI1LgorCisgICAgICAgIFRlc3Q6IGZhc3Qvc3BlZWNoL2lucHV0LXRleHQtbGFu
Z3VhZ2UtdGFnLmh0bWwKKworICAgICAgICAqIHBhZ2UvU3BlZWNoSW5wdXQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U3BlZWNoSW5wdXQ6OnN0YXJ0UmVjb2duaXRpb24pOgorICAgICAgICAqIHBh
Z2UvU3BlZWNoSW5wdXQuaDoKKyAgICAgICAgKiBwYWdlL1NwZWVjaElucHV0Q2xpZW50Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbW9jay9TcGVlY2hJbnB1dENsaWVudE1vY2suY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U3BlZWNoSW5wdXRDbGllbnRNb2NrOjpzdGFydFJlY29nbml0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNwZWVjaElucHV0Q2xpZW50TW9jazo6c2V0UmVjb2duaXRpb25SZXN1
bHQpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoSW5wdXRDbGllbnRNb2NrOjp0aW1lckZpcmVk
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xpZW50TW9jay5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dENvbnRyb2xJbm5lckVsZW1lbnQ6OmF0dGFjaElubmVyRWxlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTZWFyY2hGaWVsZENhbmNlbEJ1dHRvbkVsZW1lbnQ6OmRldGFjaCk6
CisgICAgICAgIChXZWJDb3JlOjpTcGluQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxl
cik6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudDo6ZGVm
YXVsdEV2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dEZpZWxkU3BlZWNoQnV0
dG9uRWxlbWVudDo6ZGV0YWNoKToKKwogMjAxMC0xMC0yNyAgQWRhbSBSb2JlbiAgPGFyb2JlbkBh
cHBsZS5jb20+CiAKICAgICAgICAgT25seSBkZWNvbXByZXNzIHBpeGVsIGJ1ZmZlcnMgd2hlbiBu
ZWVkZWQgKGFuZCBmaXggYSBjcmFzaCBpbiB0aGUKQEAgLTQ5NDYsNiArNDk4MSw0MyBAQAogICAg
ICAgICAoV2ViQ29yZTo6SW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVu
dEhhbmRsZXIpOgogICAgICAgICAoV2ViQ29yZTo6SW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1l
bnQ6OmRldGFjaCk6CiAKKzIwMTAtMTAtMjAgIExlYW5kcm8gR3JhY2lhIEdpbCAgPGxlYW5kcm9n
cmFjaWFAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBKZXJlbXkgT3Jsb3cuCisK
KyAgICAgICAgUGF0Y2ggdGhlIGN1cnJlbnQgc3BlZWNoIGlucHV0IGltcGxlbWVudGF0aW9uIHRv
IHVzZSBhbmQgdmFsaWRhdGUgdGhlCisgICAgICAgIG5lYXJlc3QgbGFuZ3VhZ2UgdGFnLiBUaGUg
bGFuZ3VhZ2UgaXMgbm93IHBhc3NlZCB0byB0aGUgc3RhcnRSZWNvZ25pdGlvbgorICAgICAgICBt
ZXRob2RzIHNvIHRoYXQgbGFuZ3VhZ2Utc3BlY2lmaWMgcmVjb2duaXRpb24gY291bGQgYmUgdXNl
ZC4gQWxzbyBhZGRlZAorICAgICAgICBhIHNlY29uZCBwYXJhbWV0ZXIgdG8gc2V0TW9ja1NwZWVj
aElucHV0UmVzdWx0IGZvciB0aGUgbGFuZ3VhZ2UgdXNlZCBpbgorICAgICAgICBzcGVlY2ggcmVj
b2duaXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD00NzA4OQorCisgICAgICAgIFRoaXMgaXMgdGhlIDJuZCBvZiBhIDQtc2lkZWQgcGF0Y2ggaW4g
Q2hyb21pdW0gYW5kIFdlYktpdC4gRm9yIG1vcmUKKyAgICAgICAgZGV0YWlscyBzZWUgaHR0cDov
L2NvZGVyZXZpZXcuY2hyb21pdW0ub3JnLzM2MTUwMDUvc2hvdyBhbmQKKyAgICAgICAgaHR0cDov
L2NvZGVyZXZpZXcuY2hyb21pdW0ub3JnLzM1OTUwMTgvc2hvdy4KKworICAgICAgICBUZXN0OiBm
YXN0L3NwZWVjaC9pbnB1dC10ZXh0LWxhbmd1YWdlLXRhZy5odG1sCisKKyAgICAgICAgKiBkb20v
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojpjb21wdXRlSW5oZXJpdGVk
TGFuZ3VhZ2UpOiBpbmNsdWRlcyBhIGJyaWVmIGNoYXJhY3RlcgorICAgICAgICAgIHZhbGlkYXRp
b24gZm9yIHRoZSBCQ1AgNDcgbGFuZ3VhZ2UgdGFnLgorICAgICAgICAqIHBhZ2UvU3BlZWNoSW5w
dXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoSW5wdXQ6OnN0YXJ0UmVjb2duaXRpb24p
OgorICAgICAgICAqIHBhZ2UvU3BlZWNoSW5wdXQuaDoKKyAgICAgICAgKiBwYWdlL1NwZWVjaElu
cHV0Q2xpZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9TcGVlY2hJbnB1dENsaWVudE1v
Y2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoSW5wdXRDbGllbnRNb2NrOjpzdGFydFJl
Y29nbml0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaElucHV0Q2xpZW50TW9jazo6c2V0
UmVjb2duaXRpb25SZXN1bHQpOiByZXN1bHRzIGFyZSBub3cKKyAgICAgICAgICBzdG9yZWQgYnkg
bGFuZ3VhZ2UgdXNpbmcgYSBoYXNoIG1hcC4KKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaElucHV0
Q2xpZW50TW9jazo6dGltZXJGaXJlZCk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9TcGVlY2hJ
bnB1dENsaWVudE1vY2suaDoKKyAgICAgICAgKiByZW5kZXJpbmcvVGV4dENvbnRyb2xJbm5lckVs
ZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb250cm9sSW5uZXJFbGVtZW50Ojph
dHRhY2hJbm5lckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoRmllbGRDYW5jZWxC
dXR0b25FbGVtZW50OjpkZXRhY2gpOgorICAgICAgICAoV2ViQ29yZTo6U3BpbkJ1dHRvbkVsZW1l
bnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRGaWVsZFNw
ZWVjaEJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQ6OmRldGFjaCk6CisKIDIwMTAtMTAtMjAg
IERpcmsgU2NodWx6ZSAgPGtyaXRAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBO
aWtvbGFzIFppbW1lcm1hbm4uCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXQu
Y3BwIGIvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0LmNwcAppbmRleCBjNTMzYTgwODBkNTQzNzVk
NjNiYTYxNjUwNmE4MjIzZmE3NmI1OGUzLi42ZGUwYWYyOTAzMjg0NjU4MGQ2ODllMTExMWQxZmVj
NTI1MTY3NmQwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXQuY3BwCisrKyBi
L1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dC5jcHAKQEAgLTkzLDEwICs5MywxMCBAQCB2b2lkIFNw
ZWVjaElucHV0OjpzZXRSZWNvZ25pdGlvblJlc3VsdChpbnQgbGlzdGVuZXJJZCwgY29uc3QgU3Bl
ZWNoSW5wdXRSZXN1bHRBcgogICAgICAgICBtX2xpc3RlbmVycy5nZXQobGlzdGVuZXJJZCktPnNl
dFJlY29nbml0aW9uUmVzdWx0KGxpc3RlbmVySWQsIHJlc3VsdCk7CiB9CiAKLWJvb2wgU3BlZWNo
SW5wdXQ6OnN0YXJ0UmVjb2duaXRpb24oaW50IGxpc3RlbmVySWQsIGNvbnN0IEludFJlY3QmIGVs
ZW1lbnRSZWN0LCBjb25zdCBTdHJpbmcmIGdyYW1tYXIpCitib29sIFNwZWVjaElucHV0OjpzdGFy
dFJlY29nbml0aW9uKGludCBsaXN0ZW5lcklkLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlLCBjb25z
dCBJbnRSZWN0JiBlbGVtZW50UmVjdCwgY29uc3QgU3RyaW5nJiBncmFtbWFyKQogewogICAgIEFT
U0VSVChtX2xpc3RlbmVycy5jb250YWlucyhsaXN0ZW5lcklkKSk7Ci0gICAgcmV0dXJuIG1fY2xp
ZW50LT5zdGFydFJlY29nbml0aW9uKGxpc3RlbmVySWQsIGVsZW1lbnRSZWN0LCBncmFtbWFyKTsK
KyAgICByZXR1cm4gbV9jbGllbnQtPnN0YXJ0UmVjb2duaXRpb24obGlzdGVuZXJJZCwgbGFuZ3Vh
Z2UsIGVsZW1lbnRSZWN0LCBncmFtbWFyKTsKIH0KIAogdm9pZCBTcGVlY2hJbnB1dDo6c3RvcFJl
Y29yZGluZyhpbnQgbGlzdGVuZXJJZCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9TcGVlY2hJ
bnB1dC5oIGIvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0LmgKaW5kZXggMDhkOTVkZTA2NzdhNmFj
MTk2YWMzZTgwZjYzYjQ5MjQ2NWM0YjQ0Zi4uZDAzYTFjZWU4NzBiOTY0ZDM2YzE2OWUyOGE1N2Ex
NTZkMzQzYWZlNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0LmgKKysrIGIv
V2ViQ29yZS9wYWdlL1NwZWVjaElucHV0LmgKQEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgogICAg
IHZvaWQgdW5yZWdpc3Rlckxpc3RlbmVyKGludCk7CiAKICAgICAvLyBNZXRob2RzIGludm9rZWQg
YnkgdGhlIGlucHV0IGVsZW1lbnRzLgotICAgIGJvb2wgc3RhcnRSZWNvZ25pdGlvbihpbnQgbGlz
dGVuZXJJZCwgY29uc3QgSW50UmVjdCYgZWxlbWVudFJlY3QsIGNvbnN0IFN0cmluZyYgZ3JhbW1h
cik7CisgICAgYm9vbCBzdGFydFJlY29nbml0aW9uKGludCBsaXN0ZW5lcklkLCBjb25zdCBTdHJp
bmcmIGxhbmd1YWdlLCBjb25zdCBJbnRSZWN0JiBlbGVtZW50UmVjdCwgY29uc3QgU3RyaW5nJiBn
cmFtbWFyKTsKICAgICB2b2lkIHN0b3BSZWNvcmRpbmcoaW50KTsKICAgICB2b2lkIGNhbmNlbFJl
Y29nbml0aW9uKGludCk7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dENs
aWVudC5oIGIvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0Q2xpZW50LmgKaW5kZXggNDViMzA5YTdk
YTRlNDM2N2Y3ZWEzMzdjMTU4NzRkZGM2MDNlODQ0Yy4uYTlhM2UxMzY3YTc5ZDBhN2VlMjQ1OWU1
MmZhY2U5OTkxY2M3ZTMxZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0Q2xp
ZW50LmgKKysrIGIvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0Q2xpZW50LmgKQEAgLTUwLDcgKzUw
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRMaXN0ZW5lcihTcGVlY2hJbnB1dExp
c3RlbmVyKikgPSAwOwogCiAgICAgLy8gU3RhcnRzIHNwZWVjaCByZWNvZ25pdGlvbiBhbmQgYXVk
aW8gcmVjb3JkaW5nLgotICAgIHZpcnR1YWwgYm9vbCBzdGFydFJlY29nbml0aW9uKGludCByZXF1
ZXN0SWQsIGNvbnN0IEludFJlY3QmIGVsZW1lbnRSZWN0LCBjb25zdCBTdHJpbmcmIGdyYW1tYXIp
ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc3RhcnRSZWNvZ25pdGlvbihpbnQgcmVxdWVzdElkLCBj
b25zdCBTdHJpbmcmIGxhbmd1YWdlLCBjb25zdCBJbnRSZWN0JiBlbGVtZW50UmVjdCwgY29uc3Qg
U3RyaW5nJiBncmFtbWFyKSA9IDA7CiAKICAgICAvLyBTdG9wcyBhdWRpbyByZWNvcmRpbmcgYW5k
IHBlcmZvcm1zIHJlY29nbml0aW9uIHdpdGggdGhlIGF1ZGlvIHJlY29yZGVkIHVudGlsIG5vdwog
ICAgIC8vIChkb2VzIG5vdCBkaXNjYXJkIGF1ZGlvKS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9TcGVlY2hJbnB1dENsaWVudE1vY2suY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL1NwZWVjaElucHV0Q2xpZW50TW9jay5jcHAKaW5kZXggMGIzYzhhY2RmNzM4MzA1N2EyODhj
ZDJhYTY3MGNjY2IzNjNjOWZmNi4uZjlhZTRmZTY2OGEwNjlkNWViZTBmODliMzAzZTAyYTI4ZjI1
ZWIwYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xpZW50
TW9jay5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xpZW50TW9j
ay5jcHAKQEAgLTM1LDYgKzM1LDExIEBACiAKICNpbmNsdWRlICJTcGVlY2hJbnB1dExpc3RlbmVy
LmgiCiAKK25hbWVzcGFjZSB7CisgICAgLy8gSGFzaE1hcCBkb2Vzbid0IHN1cHBvcnQgZW1wdHkg
c3RyaW5ncyBhcyBrZXlzLCBzbyB0aGlzIHZhbHVlIChhbiBpbnZhbGlkIEJDUDQ3IHRhZykgaXMg
dXNlZCBmb3IgdGhvc2UgY2FzZXMuCisgICAgY29uc3QgU3RyaW5nIGVtcHR5TGFuZ3VhZ2UgPSAi
XyI7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU3BlZWNoSW5wdXRDbGllbnRNb2NrOjpT
cGVlY2hJbnB1dENsaWVudE1vY2soKQpAQCAtNTAsMTIgKzU1LDEzIEBAIHZvaWQgU3BlZWNoSW5w
dXRDbGllbnRNb2NrOjpzZXRMaXN0ZW5lcihTcGVlY2hJbnB1dExpc3RlbmVyKiBsaXN0ZW5lcikK
ICAgICBtX2xpc3RlbmVyID0gbGlzdGVuZXI7CiB9CiAKLWJvb2wgU3BlZWNoSW5wdXRDbGllbnRN
b2NrOjpzdGFydFJlY29nbml0aW9uKGludCByZXF1ZXN0SWQsIGNvbnN0IEludFJlY3QmIGVsZW1l
bnRSZWN0LCBjb25zdCBTdHJpbmcmIGdyYW1tYXIpCitib29sIFNwZWVjaElucHV0Q2xpZW50TW9j
azo6c3RhcnRSZWNvZ25pdGlvbihpbnQgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdl
LCBjb25zdCBJbnRSZWN0JiBlbGVtZW50UmVjdCwgY29uc3QgU3RyaW5nJiBncmFtbWFyKQogewog
ICAgIGlmIChtX3RpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBt
X3JlcXVlc3RJZCA9IHJlcXVlc3RJZDsKICAgICBtX3JlY29yZGluZyA9IHRydWU7CisgICAgbV9s
YW5ndWFnZSA9IGxhbmd1YWdlOwogICAgIG1fdGltZXIuc3RhcnRPbmVTaG90KDApOwogICAgIHJl
dHVybiB0cnVlOwogfQpAQCAtODAsOSArODYsMTIgQEAgdm9pZCBTcGVlY2hJbnB1dENsaWVudE1v
Y2s6OmNhbmNlbFJlY29nbml0aW9uKGludCByZXF1ZXN0SWQpCiAgICAgfQogfQogCi12b2lkIFNw
ZWVjaElucHV0Q2xpZW50TW9jazo6c2V0UmVjb2duaXRpb25SZXN1bHQoY29uc3QgU3RyaW5nJiBy
ZXN1bHQpCit2b2lkIFNwZWVjaElucHV0Q2xpZW50TW9jazo6c2V0UmVjb2duaXRpb25SZXN1bHQo
Y29uc3QgU3RyaW5nJiByZXN1bHQsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UpCiB7Ci0gICAgbV9y
ZWNvZ25pdGlvblJlc3VsdCA9IHJlc3VsdDsKKyAgICBpZiAobGFuZ3VhZ2UuaXNFbXB0eSgpKQor
ICAgICAgICBtX3JlY29nbml0aW9uUmVzdWx0LnNldChlbXB0eUxhbmd1YWdlLCByZXN1bHQpOwor
ICAgIGVsc2UKKyAgICAgICAgbV9yZWNvZ25pdGlvblJlc3VsdC5zZXQobGFuZ3VhZ2UsIHJlc3Vs
dCk7CiB9CiAKIHZvaWQgU3BlZWNoSW5wdXRDbGllbnRNb2NrOjp0aW1lckZpcmVkKFdlYkNvcmU6
OlRpbWVyPFNwZWVjaElucHV0Q2xpZW50TW9jaz4qKQpAQCAtOTMsNyArMTAyLDE5IEBAIHZvaWQg
U3BlZWNoSW5wdXRDbGllbnRNb2NrOjp0aW1lckZpcmVkKFdlYkNvcmU6OlRpbWVyPFNwZWVjaElu
cHV0Q2xpZW50TW9jaz4qKQogICAgICAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdCgwKTsKICAgICB9
IGVsc2UgewogICAgICAgICBTcGVlY2hJbnB1dFJlc3VsdEFycmF5IHJlc3VsdHM7Ci0gICAgICAg
IHJlc3VsdHMuYXBwZW5kKFNwZWVjaElucHV0UmVzdWx0OjpjcmVhdGUobV9yZWNvZ25pdGlvblJl
c3VsdCwgMS4wKSk7CisKKyAgICAgICAgLy8gRW1wdHkgbGFuZ3VhZ2Ugc3RyaW5ncyBjcmFzaCB0
aGUgSGFzaE1hcC4gVXNpbmcgYW4gaW52YWxpZCBsYW5ndWFnZSB2YWx1ZSBmb3IgdGhhdCBjYXNl
LgorICAgICAgICBTdHJpbmcgbGFuZ3VhZ2UgPSBtX2xhbmd1YWdlLmlzRW1wdHkoKSA/IFN0cmlu
ZyhlbXB0eUxhbmd1YWdlKSA6IG1fbGFuZ3VhZ2U7CisgICAgICAgIGlmICghbV9yZWNvZ25pdGlv
blJlc3VsdC5jb250YWlucyhsYW5ndWFnZSkpIHsKKyAgICAgICAgICAgIC8vIENhbid0IGF2b2lk
IHNldHRpbmcgYSByZXN1bHQgb24gZW1wdHkgb3IgaW52YWxpZCBsYW5ndWFnZSBzdHJpbmdzLgor
ICAgICAgICAgICAgLy8gVGhpcyB3b3VsZCBhdm9pZCBnZW5lcmF0aW5nIHRoZSBldmVudHMgdXNl
ZCB0byBjaGVjayB0aGUgcmVzdWx0cyBhbmQgdGhlIHRlc3Qgd291bGQgdGltZW91dC4KKyAgICAg
ICAgICAgIFN0cmluZyBlcnJvcigiZXJyb3I6IG5vIHJlc3VsdCBmb3VuZCBmb3IgbGFuZ3VhZ2Ug
JyIpOworICAgICAgICAgICAgZXJyb3IuYXBwZW5kKG1fbGFuZ3VhZ2UpOworICAgICAgICAgICAg
ZXJyb3IuYXBwZW5kKCInIik7CisgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChTcGVlY2hJbnB1
dFJlc3VsdDo6Y3JlYXRlKGVycm9yLCAxLjApKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAg
ICByZXN1bHRzLmFwcGVuZChTcGVlY2hJbnB1dFJlc3VsdDo6Y3JlYXRlKG1fcmVjb2duaXRpb25S
ZXN1bHQuZ2V0KGxhbmd1YWdlKSwgMS4wKSk7CisKICAgICAgICAgbV9saXN0ZW5lci0+c2V0UmVj
b2duaXRpb25SZXN1bHQobV9yZXF1ZXN0SWQsIHJlc3VsdHMpOwogICAgICAgICBtX2xpc3RlbmVy
LT5kaWRDb21wbGV0ZVJlY29nbml0aW9uKG1fcmVxdWVzdElkKTsKICAgICAgICAgbV9yZXF1ZXN0
SWQgPSAwOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xp
ZW50TW9jay5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xpZW50TW9jay5o
CmluZGV4IDc5MDBmMzZkZjZjZTQyZGU0ZWIwMzBmYjA2NjM1MjJlMTRlYzczMGMuLjQ5MWI5Yzhj
ZTNiY2Y4MzZjNjdmZTI1ODJjMjk2ODE4OTMzMDFjMmQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9TcGVlY2hJbnB1dENsaWVudE1vY2suaAorKysgYi9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svU3BlZWNoSW5wdXRDbGllbnRNb2NrLmgKQEAgLTM0LDYgKzM0LDggQEAKICNpbmNsdWRl
ICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIlNwZWVjaElucHV0Q2xpZW50LmgiCiAjaW5j
bHVkZSAiVGltZXIuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0hhc2guaD4KIAogI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCiAKQEAgLTQ2LDEx
ICs0OCwxMSBAQCBjbGFzcyBTcGVlY2hJbnB1dENsaWVudE1vY2sgOiBwdWJsaWMgU3BlZWNoSW5w
dXRDbGllbnQgewogcHVibGljOgogICAgIFNwZWVjaElucHV0Q2xpZW50TW9jaygpOwogCi0gICAg
dm9pZCBzZXRSZWNvZ25pdGlvblJlc3VsdChjb25zdCBTdHJpbmcmIHJlc3VsdCk7CisgICAgdm9p
ZCBzZXRSZWNvZ25pdGlvblJlc3VsdChjb25zdCBTdHJpbmcmIHJlc3VsdCwgY29uc3QgU3RyaW5n
JiBsYW5ndWFnZSk7CiAKICAgICAvLyBTcGVlY2hJbnB1dENsaWVudCBtZXRob2RzLgogICAgIHZv
aWQgc2V0TGlzdGVuZXIoU3BlZWNoSW5wdXRMaXN0ZW5lciopOwotICAgIGJvb2wgc3RhcnRSZWNv
Z25pdGlvbihpbnQgcmVxdWVzdElkLCBjb25zdCBJbnRSZWN0JiBlbGVtZW50UmVjdCwgY29uc3Qg
U3RyaW5nJiBncmFtbWFyKTsKKyAgICBib29sIHN0YXJ0UmVjb2duaXRpb24oaW50IHJlcXVlc3RJ
ZCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSwgY29uc3QgSW50UmVjdCYgZWxlbWVudFJlY3QsIGNv
bnN0IFN0cmluZyYgZ3JhbW1hcik7CiAgICAgdm9pZCBzdG9wUmVjb3JkaW5nKGludCk7CiAgICAg
dm9pZCBjYW5jZWxSZWNvZ25pdGlvbihpbnQpOwogCkBAIC02MSw3ICs2Myw5IEBAIHByaXZhdGU6
CiAgICAgVGltZXI8U3BlZWNoSW5wdXRDbGllbnRNb2NrPiBtX3RpbWVyOwogICAgIFNwZWVjaElu
cHV0TGlzdGVuZXIqIG1fbGlzdGVuZXI7CiAgICAgaW50IG1fcmVxdWVzdElkOwotICAgIFN0cmlu
ZyBtX3JlY29nbml0aW9uUmVzdWx0OworCisgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gbV9y
ZWNvZ25pdGlvblJlc3VsdDsKKyAgICBTdHJpbmcgbV9sYW5ndWFnZTsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRDb250cm9s
SW5uZXJFbGVtZW50cy5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Q29udHJvbElubmVyRWxl
bWVudHMuY3BwCmluZGV4IDkyNDgzOTU2YmZjOGIzY2M2YjZiZmQ4NTEyMTcwMmQwNDA4YzQ5Zjgu
LmQ0MjYwN2YxZjBiYzljNDE5OTJmYTIwYWVhMzAwY2VlNTA2M2Y4Y2EgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcmVuZGVyaW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKKysrIGIvV2ViQ29y
ZS9yZW5kZXJpbmcvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcApAQCAtMjEsOSArMjEsOSBA
QAogICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQogICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KICAqLwotIAorCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgiCiAKQEAgLTEwNywxOCArMTA3LDE4IEBAIHZv
aWQgVGV4dENvbnRyb2xJbm5lckVsZW1lbnQ6OmF0dGFjaElubmVyRWxlbWVudChOb2RlKiBwYXJl
bnQsIFBhc3NSZWZQdHI8UmVuZGVyCiAgICAgICAgIHNldFJlbmRlcmVyKHJlbmRlcmVyKTsKICAg
ICAgICAgcmVuZGVyZXItPnNldFN0eWxlKHN0eWxlKTsKICAgICB9Ci0gICAgCisKICAgICAvLyBT
ZXQgdGhlc2UgZXhwbGljaXRseSBzaW5jZSB0aGlzIG5vcm1hbGx5IGhhcHBlbnMgZHVyaW5nIGFu
IGF0dGFjaCgpCiAgICAgc2V0QXR0YWNoZWQoKTsKICAgICBzZXRJbkRvY3VtZW50KCk7Ci0gICAg
CisKICAgICAvLyBGb3IgZWxlbWVudHMgd2l0aG91dCBhIHNoYWRvdyBwYXJlbnQsIGFkZCB0aGUg
bm9kZSB0byB0aGUgRE9NIG5vcm1hbGx5LgogICAgIGlmICghbV9zaGFkb3dQYXJlbnQpIHsKICAg
ICAgICAgLy8gRklYTUU6IFRoaXMgY29kZSBzZWVtcyB2ZXJ5IHdyb25nLiAgV2h5IGFyZSB3ZSBt
YWdpY2FsbHkgYWRkaW5nIHx0aGlzfCB0byB0aGUgRE9NIGhlcmU/CiAgICAgICAgIC8vICAgICAg
ICBXZSBzaG91bGRuJ3QgYmUgY2FsbGluZyBwYXJzZXIgQVBJIG1ldGhvZHMgb3V0c2lkZSBvZiB0
aGUgcGFyc2VyIQogICAgICAgICBwYXJlbnQtPmRlcHJlY2F0ZWRQYXJzZXJBZGRDaGlsZCh0aGlz
KTsKICAgICB9Ci0gCisKICAgICAvLyBBZGQgdGhlIHJlbmRlcmVyIHRvIHRoZSByZW5kZXIgdHJl
ZQogICAgIGlmIChyZW5kZXJlcikKICAgICAgICAgcGFyZW50LT5yZW5kZXJlcigpLT5hZGRDaGls
ZChyZW5kZXJlcik7CkBAIC0yMDgsNyArMjA4LDcgQEAgdm9pZCBTZWFyY2hGaWVsZENhbmNlbEJ1
dHRvbkVsZW1lbnQ6OmRldGFjaCgpCiB7CiAgICAgaWYgKG1fY2FwdHVyaW5nKSB7CiAgICAgICAg
IGlmIChGcmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLT5mcmFtZSgpKQotICAgICAgICAgICAgZnJh
bWUtPmV2ZW50SGFuZGxlcigpLT5zZXRDYXB0dXJpbmdNb3VzZUV2ZW50c05vZGUoMCk7ICAgICAg
CisgICAgICAgICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPnNldENhcHR1cmluZ01vdXNlRXZl
bnRzTm9kZSgwKTsKICAgICB9CiAgICAgVGV4dENvbnRyb2xJbm5lckVsZW1lbnQ6OmRldGFjaCgp
OwogfQpAQCAtMjgxLDkgKzI4MSw5IEBAIHZvaWQgU3BpbkJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRF
dmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogICAgIGlmICghYm94KSB7CiAgICAgICAgIGlmICgh
ZXZlbnQtPmRlZmF1bHRIYW5kbGVkKCkpCiAgICAgICAgICAgICBIVE1MRGl2RWxlbWVudDo6ZGVm
YXVsdEV2ZW50SGFuZGxlcihldmVudCk7Ci0gICAgICAgIHJldHVybjsgICAgICAgIAorICAgICAg
ICByZXR1cm47CiAgICAgfQotICAgIAorCiAgICAgSFRNTElucHV0RWxlbWVudCogaW5wdXQgPSBz
dGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4oc2hhZG93QW5jZXN0b3JOb2RlKCkpOwogICAg
IGlmIChpbnB1dC0+ZGlzYWJsZWQoKSB8fCBpbnB1dC0+aXNSZWFkT25seUZvcm1Db250cm9sKCkp
IHsKICAgICAgICAgaWYgKCFldmVudC0+ZGVmYXVsdEhhbmRsZWQoKSkKQEAgLTQzMSw3ICs0MzEs
NyBAQCB2b2lkIElucHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5k
bGVyKEV2ZW50KiBldmVudCkKICAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCku
Y2xpY2tFdmVudCkgewogICAgICAgICBzd2l0Y2ggKG1fc3RhdGUpIHsKICAgICAgICAgY2FzZSBJ
ZGxlOgotICAgICAgICAgICAgaWYgKHNwZWVjaElucHV0KCktPnN0YXJ0UmVjb2duaXRpb24obV9s
aXN0ZW5lcklkLCBpbnB1dC0+cmVuZGVyZXIoKS0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKSwg
aW5wdXQtPmdldEF0dHJpYnV0ZSh3ZWJraXRncmFtbWFyQXR0cikpKQorICAgICAgICAgICAgaWYg
KHNwZWVjaElucHV0KCktPnN0YXJ0UmVjb2duaXRpb24obV9saXN0ZW5lcklkLCBpbnB1dC0+Y29t
cHV0ZUluaGVyaXRlZExhbmd1YWdlKCksIGlucHV0LT5yZW5kZXJlcigpLT5hYnNvbHV0ZUJvdW5k
aW5nQm94UmVjdCgpLCBpbnB1dC0+Z2V0QXR0cmlidXRlKHdlYmtpdGdyYW1tYXJBdHRyKSkpCiAg
ICAgICAgICAgICAgICAgc2V0U3RhdGUoUmVjb3JkaW5nKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIFJlY29yZGluZzoKQEAgLTQ4OSw3ICs0ODksNyBAQCB2b2lkIElucHV0Rmll
bGRTcGVlY2hCdXR0b25FbGVtZW50OjpkZXRhY2goKQogewogICAgIGlmIChtX2NhcHR1cmluZykg
ewogICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQoKS0+ZnJhbWUoKSkKLSAgICAg
ICAgICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+c2V0Q2FwdHVyaW5nTW91c2VFdmVudHNOb2Rl
KDApOyAgICAgIAorICAgICAgICAgICAgZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5zZXRDYXB0dXJp
bmdNb3VzZUV2ZW50c05vZGUoMCk7CiAgICAgfQogCiAgICAgaWYgKG1fc3RhdGUgIT0gSWRsZSkK
ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IDkwNTdlNjBhZWJkYjc1ZTZmZDM1NTUwMDk3MzBhYmEzYTJkMDRjYjYu
LmI2YmY5ZTdjNzI3M2UxN2FlZjJkZTU1YjQwOThiZjQxZjIxY2E1YmIgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDM1IEBACisyMDEwLTEwLTI3ICBMZWFuZHJvIEdyYWNpYSBHaWwgIDxsZWFuZHJv
Z3JhY2lhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSmVyZW15IE9ybG93Lgor
CisgICAgICAgIFBhdGNoIHRoZSBjdXJyZW50IHNwZWVjaCBpbnB1dCBpbXBsZW1lbnRhdGlvbiB0
byB1c2UgdGhlIG5lYXJlc3QKKyAgICAgICAgbGFuZ3VhZ2UgdGFnLiBUaGUgbGFuZ3VhZ2UgaXMg
bm93IHBhc3NlZCB0byB0aGUgc3RhcnRSZWNvZ25pdGlvbgorICAgICAgICBtZXRob2RzIHNvIHRo
YXQgbGFuZ3VhZ2Utc3BlY2lmaWMgcmVjb2duaXRpb24gY291bGQgYmUgdXNlZC4gQWxzbyBhZGRl
ZAorICAgICAgICBhIHNlY29uZCBwYXJhbWV0ZXIgdG8gc2V0TW9ja1NwZWVjaElucHV0UmVzdWx0
IGZvciB0aGUgbGFuZ3VhZ2UgdXNlZCBpbgorICAgICAgICBzcGVlY2ggcmVjb2duaXRpb24uCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzA4OQorCisg
ICAgICAgIFRoaXMgaXMgdGhlIDJuZCBvZiBhIDQtc2lkZWQgcGF0Y2ggaW4gQ2hyb21pdW0gYW5k
IFdlYktpdC4gRm9yIG1vcmUKKyAgICAgICAgZGV0YWlscyBzZWUgaHR0cDovL2NvZGVyZXZpZXcu
Y2hyb21pdW0ub3JnLzM2MTUwMDUvc2hvdyBhbmQKKyAgICAgICAgaHR0cDovL2NvZGVyZXZpZXcu
Y2hyb21pdW0ub3JnLzM1OTUwMTgvc2hvdy4gVGhlIGxhc3Qgb2YgdGhlIDQgcGF0Y2hlcworICAg
ICAgICBkZXBlbmRzIGFsc28gb24gdGhlIGxhbmd1YWdlIHRhZyB2YWxpZGF0aW9uIHByb3ZpZGVk
IGJ5IHRoaXMgcGF0Y2g6CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00ODIyNS4KKworICAgICAgICAqIHB1YmxpYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xs
ZXIuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyOjpzdGFydFJl
Y29nbml0aW9uKToKKyAgICAgICAgKiBwdWJsaWMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9j
ay5oOgorICAgICAgICAqIHNyYy9TcGVlY2hJbnB1dENsaWVudEltcGwuY3BwOgorICAgICAgICAo
V2ViS2l0OjpTcGVlY2hJbnB1dENsaWVudEltcGw6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6
OlNwZWVjaElucHV0Q2xpZW50SW1wbDo6c3RhcnRSZWNvZ25pdGlvbik6CisgICAgICAgICogc3Jj
L1NwZWVjaElucHV0Q2xpZW50SW1wbC5oOgorICAgICAgICAqIHNyYy9XZWJTcGVlY2hJbnB1dENv
bnRyb2xsZXJNb2NrSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaElucHV0Q29u
dHJvbGxlck1vY2tJbXBsOjpzZXRNb2NrUmVjb2duaXRpb25SZXN1bHQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6c3RhcnRSZWNvZ25pdGlvbik6
CisgICAgICAgICogc3JjL1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsLmg6CisgICAg
ICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6
OldlYlZpZXdJbXBsKToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuaDoKKwogMjAxMC0xMC0y
NiAgVmljdG9yaWEgS2lyc3QgIDx2cmtAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBEYXZpZCBMZXZpbi4KQEAgLTMzNiw3ICszNjgsNyBAQAogMjAxMC0xMC0yMiAgTGVhbmRybyBH
cmFjaWEgR2lsICA8bGVhbmRyb2dyYWNpYUBnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IEplcmVteSBPcmxvdy4KLSAKKwogICAgICAgICBQYXRjaCB0aGUgY3VycmVudCBzcGVlY2gg
aW5wdXQgaW1wbGVtZW50YXRpb24gdG8gdXNlIGFuZCB2YWxpZGF0ZSB0aGUKICAgICAgICAgbmVh
cmVzdCBsYW5ndWFnZSB0YWcuIFRoZSBsYW5ndWFnZSBpcyBub3cgcGFzc2VkIHRvIHRoZSBzdGFy
dFJlY29nbml0aW9uCiAgICAgICAgIG1ldGhvZHMgc28gdGhhdCBsYW5ndWFnZS1zcGVjaWZpYyBy
ZWNvZ25pdGlvbiBjb3VsZCBiZSB1c2VkLiBBbHNvIGFkZGVkCkBAIC00ODUsNiArNTE3LDM2IEBA
CiAgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbCk6CiAgICAgICAgICog
c3JjL1dlYlZpZXdJbXBsLmg6CiAKKzIwMTAtMTAtMjAgIExlYW5kcm8gR3JhY2lhIEdpbCAgPGxl
YW5kcm9ncmFjaWFAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBKZXJlbXkgT3Js
b3cuCisKKyAgICAgICAgUGF0Y2ggdGhlIGN1cnJlbnQgc3BlZWNoIGlucHV0IGltcGxlbWVudGF0
aW9uIHRvIHVzZSBhbmQgdmFsaWRhdGUgdGhlCisgICAgICAgIG5lYXJlc3QgbGFuZ3VhZ2UgdGFn
LiBUaGUgbGFuZ3VhZ2UgaXMgbm93IHBhc3NlZCB0byB0aGUgc3RhcnRSZWNvZ25pdGlvbgorICAg
ICAgICBtZXRob2RzIHNvIHRoYXQgbGFuZ3VhZ2Utc3BlY2lmaWMgcmVjb2duaXRpb24gY291bGQg
YmUgdXNlZC4gQWxzbyBhZGRlZAorICAgICAgICBhIHNlY29uZCBwYXJhbWV0ZXIgdG8gc2V0TW9j
a1NwZWVjaElucHV0UmVzdWx0IGZvciB0aGUgbGFuZ3VhZ2UgdXNlZCBpbgorICAgICAgICBzcGVl
Y2ggcmVjb2duaXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00NzA4OQorCisgICAgICAgIFRoaXMgaXMgdGhlIDJuZCBvZiBhIDQtc2lkZWQgcGF0
Y2ggaW4gQ2hyb21pdW0gYW5kIFdlYktpdC4gRm9yIG1vcmUKKyAgICAgICAgZGV0YWlscyBzZWUg
aHR0cDovL2NvZGVyZXZpZXcuY2hyb21pdW0ub3JnLzM2MTUwMDUvc2hvdyBhbmQKKyAgICAgICAg
aHR0cDovL2NvZGVyZXZpZXcuY2hyb21pdW0ub3JnLzM1OTUwMTgvc2hvdy4KKworICAgICAgICAq
IHB1YmxpYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIuaDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
U3BlZWNoSW5wdXRDb250cm9sbGVyOjpzdGFydFJlY29nbml0aW9uKToKKyAgICAgICAgKiBwdWJs
aWMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9jay5oOgorICAgICAgICAqIHNyYy9TcGVlY2hJ
bnB1dENsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hJbnB1dENsaWVudElt
cGw6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaElucHV0Q2xpZW50SW1wbDo6c3Rh
cnRSZWNvZ25pdGlvbik6CisgICAgICAgICogc3JjL1NwZWVjaElucHV0Q2xpZW50SW1wbC5oOgor
ICAgICAgICAqIHNyYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsOjpzZXRNb2NrUmVj
b2duaXRpb25SZXN1bHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hJbnB1dENvbnRyb2xs
ZXJNb2NrSW1wbDo6c3RhcnRSZWNvZ25pdGlvbik6CisgICAgICAgICogc3JjL1dlYlNwZWVjaElu
cHV0Q29udHJvbGxlck1vY2tJbXBsLmg6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKToKKyAgICAgICAgKiBz
cmMvV2ViVmlld0ltcGwuaDoKKwogMjAxMC0xMC0yMCAgRGlyayBTY2h1bHplICA8a3JpdEB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgQ2hyb21pdW0gd2luIGJ1aWxkIGZpeC4KZGlm
ZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVy
LmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaElucHV0Q29udHJvbGxlci5oCmlu
ZGV4IDYzMjUwY2RmYzFkYmIwYzhhN2UzZTk1OGQzNTZkMWM0NDc1YzRiN2YuLmNlNGI4YjNiMzAy
NjRlY2ZiMjIxZjA1MGM0ZDVhOWZhNWJmZmEzOTcgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyLmgKKysrIGIvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIuaApAQCAtMzUsNiArMzUsNyBAQAogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgV2ViU3RyaW5nOwogc3RydWN0IFdlYlJlY3Q7CiBj
bGFzcyBXZWJTdHJpbmc7CiAKQEAgLTQ0LDE0ICs0NSwxNCBAQCBwdWJsaWM6CiAgICAgLy8gU3Rh
cnRzIHNwZWVjaCByZWNvZ25pdGlvbi4gU3BlZWNoIHdpbGwgZ2V0IHJlY29yZGVkIHVudGlsIHRo
ZSBlbmRwb2ludGVyIGRldGVjdHMgc2lsZW5jZSwKICAgICAvLyBydW5zIHRvIHRoZSBsaW1pdCBv
ciBzdG9wUmVjb3JkaW5nIGlzIGNhbGxlZC4gUHJvZ3Jlc3MgaW5kaWNhdGlvbnMgYW5kIHRoZSBy
ZWNvZ25pemVkCiAgICAgLy8gdGV4dCBhcmUgcmV0dXJuZWQgdmlhIHRoZSBsaXN0ZW5lciBpbnRl
cmZhY2UuCi0gICAgdmlydHVhbCBib29sIHN0YXJ0UmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCwg
Y29uc3QgV2ViUmVjdCYgZWxlbWVudFJlY3QsIGNvbnN0IFdlYlN0cmluZyYgZ3JhbW1hcikKKyAg
ICB2aXJ0dWFsIGJvb2wgc3RhcnRSZWNvZ25pdGlvbihpbnQgcmVxdWVzdElkLCBjb25zdCBXZWJT
dHJpbmcmIGxhbmd1YWdlLCBjb25zdCBXZWJSZWN0JiBlbGVtZW50UmVjdCwgY29uc3QgV2ViU3Ry
aW5nJiBncmFtbWFyKQogICAgIHsKLSAgICAgICAgc3RhcnRSZWNvZ25pdGlvbihyZXF1ZXN0SWQs
IGVsZW1lbnRSZWN0KTsKKyAgICAgICAgc3RhcnRSZWNvZ25pdGlvbihyZXF1ZXN0SWQsIGxhbmd1
YWdlLCBlbGVtZW50UmVjdCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICAv
LyBGSVhNRTogUmVtb3ZlIHRoaXMgbWV0aG9kIG9uY2UgY2hyb21pdW0gaW1wbGVtZW50cyB0aGUg
YWJvdmUgbWV0aG9kLgotICAgIHZpcnR1YWwgYm9vbCBzdGFydFJlY29nbml0aW9uKGludCByZXF1
ZXN0SWQsIGNvbnN0IFdlYlJlY3QmKQorICAgIHZpcnR1YWwgYm9vbCBzdGFydFJlY29nbml0aW9u
KGludCByZXF1ZXN0SWQsIGNvbnN0IFdlYlN0cmluZyYgbGFuZ3VhZ2UsIGNvbnN0IFdlYlJlY3Qm
IGVsZW1lbnRSZWN0KQogICAgIHsKICAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2suaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9jay5oCmluZGV4IDlhMjYyMzVmZjZkNWRjY2Ji
ZTI0NzI2MmFlNDRhM2FjNzM5N2MzZjQuLmI0YzUwYTA1ZGNmNWExMmY4NDFiZjliNjc1NWNkMjg4
MTdmOGMwOGIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoSW5w
dXRDb250cm9sbGVyTW9jay5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNo
SW5wdXRDb250cm9sbGVyTW9jay5oCkBAIC00NCw2ICs0NCwxMCBAQCBwdWJsaWM6CiAgICAgICAg
IFdlYlNwZWVjaElucHV0TGlzdGVuZXIqIGxpc3RlbmVyKTsKICAgICB2aXJ0dWFsIH5XZWJTcGVl
Y2hJbnB1dENvbnRyb2xsZXJNb2NrKCkgeyB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgc2V0TW9ja1Jl
Y29nbml0aW9uUmVzdWx0KGNvbnN0IFdlYlN0cmluZyYgcmVzdWx0LCBjb25zdCBXZWJTdHJpbmcm
IGxhbmd1YWdlKSA9IDA7CisKKyAgICAvLyBGSVhNRTogdGhpcyBpcyBhIGZpeCBmb3IgYSB0d28t
c2lkZWQgcGF0Y2guIERlbGV0ZSBhcyBzb29uIGFzIHRoZSBjaHJvbWl1bSBzaWRlIGlzIHBhdGNo
ZWQuCisgICAgLy8gQ2hyb21pdW0gcGF0Y2ggbm90IHVwbG9hZGVkIHlldCwgYnV0IHdpbGwgZGVw
ZW5kIG9uIGh0dHA6Ly9jb2RlcmV2aWV3LmNocm9taXVtLm9yZy8zNjE1MDA1L3Nob3cgcGF0Y2gu
CiAgICAgdmlydHVhbCB2b2lkIHNldE1vY2tSZWNvZ25pdGlvblJlc3VsdChjb25zdCBXZWJTdHJp
bmcmIHJlc3VsdCkgPSAwOwogfTsKIApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9T
cGVlY2hJbnB1dENsaWVudEltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9TcGVlY2hJbnB1
dENsaWVudEltcGwuY3BwCmluZGV4IDY3MmRlNjM2OGIwMjhkOWJmZDgzNmRjMzU3MWM3ZmEyMGJm
OTkyMGUuLjI0MmExNzQwZDg2YjFiYWRjNjlhNTI4MmNiMmUwMGVmNWNjZDdkOWYgMTAwNjQ0Ci0t
LSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvU3BlZWNoSW5wdXRDbGllbnRJbXBsLmNwcAorKysgYi9X
ZWJLaXQvY2hyb21pdW0vc3JjL1NwZWVjaElucHV0Q2xpZW50SW1wbC5jcHAKQEAgLTMyLDE1ICsz
MiwyMSBAQAogI2luY2x1ZGUgIlNwZWVjaElucHV0Q2xpZW50SW1wbC5oIgogCiAjaW5jbHVkZSAi
UGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJTcGVlY2hJbnB1dExpc3RlbmVyLmgiCiAjaW5j
bHVkZSAiV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiV2ViU3RyaW5nLmgi
CiAjaW5jbHVkZSAiV2ViVmlld0NsaWVudC5oIgotI2luY2x1ZGUgInBhZ2UvU3BlZWNoSW5wdXRM
aXN0ZW5lci5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKICNpZiBFTkFCTEUoSU5Q
VVRfU1BFRUNIKQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorUGFzc093blB0cjxTcGVlY2hJbnB1
dENsaWVudEltcGw+IFNwZWVjaElucHV0Q2xpZW50SW1wbDo6Y3JlYXRlKFdlYlZpZXdDbGllbnQq
IGNsaWVudCkKK3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IFNwZWVjaElucHV0Q2xpZW50SW1w
bChjbGllbnQpKTsKK30KKwogU3BlZWNoSW5wdXRDbGllbnRJbXBsOjpTcGVlY2hJbnB1dENsaWVu
dEltcGwoV2ViVmlld0NsaWVudCogd2ViX3ZpZXdfY2xpZW50KQogICAgIDogbV9jb250cm9sbGVy
KHdlYl92aWV3X2NsaWVudCA/IHdlYl92aWV3X2NsaWVudC0+c3BlZWNoSW5wdXRDb250cm9sbGVy
KHRoaXMpIDogMCkKICAgICAsIG1fbGlzdGVuZXIoMCkKQEAgLTU2LDEwICs2MiwxMCBAQCB2b2lk
IFNwZWVjaElucHV0Q2xpZW50SW1wbDo6c2V0TGlzdGVuZXIoV2ViQ29yZTo6U3BlZWNoSW5wdXRM
aXN0ZW5lciogbGlzdGVuZXIpCiAgICAgbV9saXN0ZW5lciA9IGxpc3RlbmVyOwogfQogCi1ib29s
IFNwZWVjaElucHV0Q2xpZW50SW1wbDo6c3RhcnRSZWNvZ25pdGlvbihpbnQgcmVxdWVzdElkLCBj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JiBlbGVtZW50UmVjdCwgY29uc3QgV1RGOjpTdHJpbmcmIGdy
YW1tYXIpCitib29sIFNwZWVjaElucHV0Q2xpZW50SW1wbDo6c3RhcnRSZWNvZ25pdGlvbihpbnQg
cmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JiBlbGVtZW50UmVjdCwgY29uc3QgU3RyaW5nJiBncmFtbWFyKQogewogICAgIEFTU0VSVChtX2xp
c3RlbmVyKTsKLSAgICByZXR1cm4gbV9jb250cm9sbGVyLT5zdGFydFJlY29nbml0aW9uKHJlcXVl
c3RJZCwgZWxlbWVudFJlY3QsIGdyYW1tYXIpOworICAgIHJldHVybiBtX2NvbnRyb2xsZXItPnN0
YXJ0UmVjb2duaXRpb24ocmVxdWVzdElkLCBsYW5ndWFnZSwgZWxlbWVudFJlY3QsIGdyYW1tYXIp
OwogfQogCiB2b2lkIFNwZWVjaElucHV0Q2xpZW50SW1wbDo6c3RvcFJlY29yZGluZyhpbnQgcmVx
dWVzdElkKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9TcGVlY2hJbnB1dENsaWVu
dEltcGwuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvU3BlZWNoSW5wdXRDbGllbnRJbXBsLmgKaW5k
ZXggZDJkYjQ1MzIwYmRmZWZjODNjZDViYmE2ZWZhMzZiZDE3OTg1OGFiNS4uOWU1OTYxZjU1NzYw
YjkyODJmMzlhNDI2M2QxMzA2NzhkYWExYzk0OCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVt
L3NyYy9TcGVlY2hJbnB1dENsaWVudEltcGwuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1Nw
ZWVjaElucHV0Q2xpZW50SW1wbC5oCkBAIC0zMyw4ICszMywxMSBAQAogCiAjaWYgRU5BQkxFKElO
UFVUX1NQRUVDSCkKIAorI2luY2x1ZGUgIlNwZWVjaElucHV0Q2xpZW50LmgiCiAjaW5jbHVkZSAi
V2ViU3BlZWNoSW5wdXRMaXN0ZW5lci5oIgotI2luY2x1ZGUgInBhZ2UvU3BlZWNoSW5wdXRDbGll
bnQuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4K
KyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBTcGVlY2hJbnB1dExpc3RlbmVyOwpAQCAtNDksMTIgKzUyLDEyIEBAIGNsYXNzIFNwZWVjaElu
cHV0Q2xpZW50SW1wbAogICAgIDogcHVibGljIFdlYkNvcmU6OlNwZWVjaElucHV0Q2xpZW50LAog
ICAgICAgcHVibGljIFdlYlNwZWVjaElucHV0TGlzdGVuZXIgewogcHVibGljOgotICAgIFNwZWVj
aElucHV0Q2xpZW50SW1wbChXZWJWaWV3Q2xpZW50Kik7CisgICAgc3RhdGljIFBhc3NPd25QdHI8
U3BlZWNoSW5wdXRDbGllbnRJbXBsPiBjcmVhdGUoV2ViVmlld0NsaWVudCopOwogICAgIHZpcnR1
YWwgflNwZWVjaElucHV0Q2xpZW50SW1wbCgpOwogCiAgICAgLy8gU3BlZWNoSW5wdXRDbGllbnQg
bWV0aG9kcy4KICAgICB2b2lkIHNldExpc3RlbmVyKFdlYkNvcmU6OlNwZWVjaElucHV0TGlzdGVu
ZXIqKTsKLSAgICBib29sIHN0YXJ0UmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCwgY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYgZWxlbWVudFJlY3QsIGNvbnN0IFdURjo6U3RyaW5nJiBncmFtbWFyKTsK
KyAgICBib29sIHN0YXJ0UmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBs
YW5ndWFnZSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZWxlbWVudFJlY3QsIGNvbnN0IFN0cmlu
ZyYgZ3JhbW1hcik7CiAgICAgdm9pZCBzdG9wUmVjb3JkaW5nKGludCk7CiAgICAgdm9pZCBjYW5j
ZWxSZWNvZ25pdGlvbihpbnQpOwogCkBAIC02NCw2ICs2Nyw4IEBAIHB1YmxpYzoKICAgICB2b2lk
IGRpZENvbXBsZXRlUmVjb2duaXRpb24oaW50KTsKIAogcHJpdmF0ZToKKyAgICBTcGVlY2hJbnB1
dENsaWVudEltcGwoV2ViVmlld0NsaWVudCopOworCiAgICAgV2ViU3BlZWNoSW5wdXRDb250cm9s
bGVyKiBtX2NvbnRyb2xsZXI7IC8vIFRvIGNhbGwgaW50byB0aGUgZW1iZWRkZXIuCiAgICAgV2Vi
Q29yZTo6U3BlZWNoSW5wdXRMaXN0ZW5lciogbV9saXN0ZW5lcjsKIH07CmRpZmYgLS1naXQgYS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsLmNwcCBi
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGwuY3Bw
CmluZGV4IDk4Y2M2Y2ZiOTg3NGFiMDAyODdlMmJmMjhlZjBkNzVkM2Y4YmQwMGIuLjBhMTc2ZmQ1
ODI1MGUzYjQwY2U2OTBjZGEyNzg3MmExYTMxNTBlY2YgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGwuY3BwCisrKyBiL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGwuY3BwCkBAIC01
Nyw3ICs1NywxMiBAQCBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6fldlYlNwZWVj
aElucHV0Q29udHJvbGxlck1vY2tJbXBsKCkKIAogdm9pZCBXZWJTcGVlY2hJbnB1dENvbnRyb2xs
ZXJNb2NrSW1wbDo6c2V0TW9ja1JlY29nbml0aW9uUmVzdWx0KGNvbnN0IFdlYlN0cmluZyYgcmVz
dWx0KQogewotICAgIG1fd2ViY29yZU1vY2stPnNldFJlY29nbml0aW9uUmVzdWx0KHJlc3VsdCk7
CisgICAgbV93ZWJjb3JlTW9jay0+c2V0UmVjb2duaXRpb25SZXN1bHQocmVzdWx0LCBXZWJTdHJp
bmc6OmZyb21VVEY4KCIiKSk7Cit9CisKK3ZvaWQgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9j
a0ltcGw6OnNldE1vY2tSZWNvZ25pdGlvblJlc3VsdChjb25zdCBXZWJTdHJpbmcmIHJlc3VsdCwg
Y29uc3QgV2ViU3RyaW5nICZsYW5ndWFnZSkKK3sKKyAgICBtX3dlYmNvcmVNb2NrLT5zZXRSZWNv
Z25pdGlvblJlc3VsdChyZXN1bHQsIGxhbmd1YWdlKTsKIH0KIAogdm9pZCBXZWJTcGVlY2hJbnB1
dENvbnRyb2xsZXJNb2NrSW1wbDo6ZGlkQ29tcGxldGVSZWNvcmRpbmcoaW50IHJlcXVlc3RJZCkK
QEAgLTc1LDkgKzgwLDkgQEAgdm9pZCBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6
c2V0UmVjb2duaXRpb25SZXN1bHQoaW50IHJlcXVlc3RJZCwgY29uc3QKICAgICBtX2xpc3RlbmVy
LT5zZXRSZWNvZ25pdGlvblJlc3VsdChyZXF1ZXN0SWQsIHJlc3VsdCk7CiB9CiAKLWJvb2wgV2Vi
U3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OnN0YXJ0UmVjb2duaXRpb24oaW50IHJlcXVl
c3RJZCwgY29uc3QgV2ViUmVjdCYgZWxlbWVudFJlY3QsIGNvbnN0IFdlYlN0cmluZyYgZ3JhbW1h
cikKK2Jvb2wgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OnN0YXJ0UmVjb2duaXRp
b24oaW50IHJlcXVlc3RJZCwgY29uc3QgV2ViU3RyaW5nJiBsYW5ndWFnZSwgY29uc3QgV2ViUmVj
dCYgZWxlbWVudFJlY3QsIGNvbnN0IFdlYlN0cmluZyYgZ3JhbW1hcikKIHsKLSAgICByZXR1cm4g
bV93ZWJjb3JlTW9jay0+c3RhcnRSZWNvZ25pdGlvbihyZXF1ZXN0SWQsIGVsZW1lbnRSZWN0LCBn
cmFtbWFyKTsKKyAgICByZXR1cm4gbV93ZWJjb3JlTW9jay0+c3RhcnRSZWNvZ25pdGlvbihyZXF1
ZXN0SWQsIGxhbmd1YWdlLCBlbGVtZW50UmVjdCwgZ3JhbW1hcik7CiB9CiAKIHZvaWQgV2ViU3Bl
ZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OmNhbmNlbFJlY29nbml0aW9uKGludCByZXF1ZXN0
SWQpCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNwZWVjaElucHV0Q29udHJv
bGxlck1vY2tJbXBsLmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNwZWVjaElucHV0Q29udHJv
bGxlck1vY2tJbXBsLmgKaW5kZXggMTQ2NzkzYWM2NDc5ZWY2MGUxMDY3NmNhMzlkZWNhNDk5ZmNh
NzBmNi4uMDZhYjhjMjkzYzQ3NWJhMWE5OTVkNzUyNTUwYzA3MzY1Zjk4ZDMyYiAxMDA2NDQKLS0t
IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbC5o
CisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0lt
cGwuaApAQCAtNTcsMTEgKzU3LDE1IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFJlY29nbml0aW9u
UmVzdWx0KGludCByZXF1ZXN0SWQsIGNvbnN0IFdlYkNvcmU6OlNwZWVjaElucHV0UmVzdWx0QXJy
YXkmIHJlc3VsdCk7CiAKICAgICAvLyBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIgbWV0aG9kcy4K
LSAgICBib29sIHN0YXJ0UmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCwgY29uc3QgV2ViUmVjdCYg
ZWxlbWVudFJlY3QsIGNvbnN0IFdlYlN0cmluZyYgZ3JhbW1hcik7CisgICAgYm9vbCBzdGFydFJl
Y29nbml0aW9uKGludCByZXF1ZXN0SWQsIGNvbnN0IFdlYlN0cmluZyYgbGFuZ3VhZ2UsIGNvbnN0
IFdlYlJlY3QmIGVsZW1lbnRSZWN0LCBjb25zdCBXZWJTdHJpbmcmIGdyYW1tYXIpOwogICAgIHZv
aWQgY2FuY2VsUmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCk7CiAgICAgdm9pZCBzdG9wUmVjb3Jk
aW5nKGludCByZXF1ZXN0SWQpOwogCiAgICAgLy8gV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9j
ayBtZXRob2RzLgorICAgIHZvaWQgc2V0TW9ja1JlY29nbml0aW9uUmVzdWx0KGNvbnN0IFdlYlN0
cmluZyYgcmVzdWx0LCBjb25zdCBXZWJTdHJpbmcmIGxhbmd1YWdlKTsKKworICAgIC8vIEZJWE1F
OiB0aGlzIGlzIGEgZml4IGZvciBhIHR3by1zaWRlZCBwYXRjaC4gRGVsZXRlIGFzIHNvb24gYXMg
dGhlIGNocm9taXVtIHNpZGUgaXMgcGF0Y2hlZC4KKyAgICAvLyBDaHJvbWl1bSBwYXRjaCBub3Qg
dXBsb2FkZWQgeWV0LCBidXQgd2lsbCBkZXBlbmQgb24gaHR0cDovL2NvZGVyZXZpZXcuY2hyb21p
dW0ub3JnLzM2MTUwMDUvc2hvdyBwYXRjaC4KICAgICB2b2lkIHNldE1vY2tSZWNvZ25pdGlvblJl
c3VsdChjb25zdCBXZWJTdHJpbmcmIHJlc3VsdCk7CiAKIHByaXZhdGU6CkBAIC03Miw0ICs3Niwz
IEBAIHByaXZhdGU6CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIFdlYlNwZWVj
aElucHV0Q29udHJvbGxlck1vY2tJbXBsX2gKLQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNw
cAppbmRleCA5ZmFlZGFjZDAzNWUxNDc1ZDBiMjA3NjMyNzk5MTFiZmRmNDZmZjRjLi42NzgyYTIz
N2I2ZTAxNzk2ZmVhZThmY2MzMjA0MGZlM2ZjNDMzMDc2IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZp
ZXdJbXBsLmNwcApAQCAtODgsNiArODgsNyBAQAogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgi
CiAjaW5jbHVkZSAiU2VsZWN0aW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgi
CisjaW5jbHVkZSAiU3BlZWNoSW5wdXRDbGllbnRJbXBsLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIK
ICNpbmNsdWRlICJUeXBpbmdDb21tYW5kLmgiCiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0
b3IuaCIKQEAgLTI4Miw3ICsyODMsNyBAQCBXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwoV2ViVmll
d0NsaWVudCogY2xpZW50LCBXZWJEZXZUb29sc0FnZW50Q2xpZW50KiBkZXZUb29scwogICAgICwg
bV9jb21wb3NpdG9yQ3JlYXRpb25GYWlsZWQoZmFsc2UpCiAjZW5kaWYKICNpZiBFTkFCTEUoSU5Q
VVRfU1BFRUNIKQotICAgICwgbV9zcGVlY2hJbnB1dENsaWVudChjbGllbnQpCisgICAgLCBtX3Nw
ZWVjaElucHV0Q2xpZW50KFNwZWVjaElucHV0Q2xpZW50SW1wbDo6Y3JlYXRlKGNsaWVudCkpCiAj
ZW5kaWYKICAgICAsIG1fZGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eShuZXcgRGV2aWNlT3Jp
ZW50YXRpb25DbGllbnRQcm94eShjbGllbnQgPyBjbGllbnQtPmRldmljZU9yaWVudGF0aW9uQ2xp
ZW50KCkgOiAwKSkKIHsKQEAgLTMwNSw3ICszMDYsNyBAQCBXZWJWaWV3SW1wbDo6V2ViVmlld0lt
cGwoV2ViVmlld0NsaWVudCogY2xpZW50LCBXZWJEZXZUb29sc0FnZW50Q2xpZW50KiBkZXZUb29s
cwogICAgIHBhZ2VDbGllbnRzLmRyYWdDbGllbnQgPSAmbV9kcmFnQ2xpZW50SW1wbDsKICAgICBw
YWdlQ2xpZW50cy5pbnNwZWN0b3JDbGllbnQgPSAmbV9pbnNwZWN0b3JDbGllbnRJbXBsOwogI2lm
IEVOQUJMRShJTlBVVF9TUEVFQ0gpCi0gICAgcGFnZUNsaWVudHMuc3BlZWNoSW5wdXRDbGllbnQg
PSAmbV9zcGVlY2hJbnB1dENsaWVudDsKKyAgICBwYWdlQ2xpZW50cy5zcGVlY2hJbnB1dENsaWVu
dCA9IG1fc3BlZWNoSW5wdXRDbGllbnQuZ2V0KCk7CiAjZW5kaWYKICAgICBwYWdlQ2xpZW50cy5k
ZXZpY2VPcmllbnRhdGlvbkNsaWVudCA9IG1fZGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eS5n
ZXQoKTsKIApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oIGIv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCmluZGV4IGMzZmQzOWVlMTUxNzcxZWU3
ODEzMzgyMDg2MDNlNzVmZGYwNWUxZGIuLjAzODg3NzA3YTg3ZDQ5ZjNmMzA5ZmQzZGY4NzY3ODM0
MjNhNTBkYTEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAor
KysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKQEAgLTQ5LDcgKzQ5LDYgQEAK
ICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgi
CiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uUHJlc2VudGVySW1wbC5oIgotI2luY2x1ZGUgIlNwZWVj
aElucHV0Q2xpZW50SW1wbC5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgogCkBAIC03NCw2ICs3Myw3IEBAIGNsYXNzIEF1dG9GaWxsUG9wdXBN
ZW51Q2xpZW50OwogY2xhc3MgQ29udGV4dE1lbnVDbGllbnRJbXBsOwogY2xhc3MgRGV2aWNlT3Jp
ZW50YXRpb25DbGllbnRQcm94eTsKIGNsYXNzIERyYWdTY3JvbGxUaW1lcjsKK2NsYXNzIFNwZWVj
aElucHV0Q2xpZW50SW1wbDsKIGNsYXNzIFdlYkFjY2Vzc2liaWxpdHlPYmplY3Q7CiBjbGFzcyBX
ZWJEZXZUb29sc0FnZW50Q2xpZW50OwogY2xhc3MgV2ViRGV2VG9vbHNBZ2VudFByaXZhdGU7CkBA
IC01NDgsNyArNTQ4LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3QgV2ViSW5wdXRFdmVu
dCogbV9jdXJyZW50SW5wdXRFdmVudDsKIAogI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCi0gICAg
U3BlZWNoSW5wdXRDbGllbnRJbXBsIG1fc3BlZWNoSW5wdXRDbGllbnQ7CisgICAgT3duUHRyPFNw
ZWVjaElucHV0Q2xpZW50SW1wbD4gbV9zcGVlY2hJbnB1dENsaWVudDsKICNlbmRpZgogICAgIC8v
IElmIHdlIGF0dGVtcHQgdG8gZmV0Y2ggdGhlIG9uLXNjcmVlbiBHcmFwaGljc0NvbnRleHQzRCBi
ZWZvcmUKICAgICAvLyB0aGUgY29tcG9zaXRvciBoYXMgYmVlbiB0dXJuZWQgb24sIHdlIG5lZWQg
dG8gaW5zdGFudGlhdGUgaXQKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dl
YktpdFRvb2xzL0NoYW5nZUxvZwppbmRleCBkYTVlMmY0YjY3Y2U1ZjJjMDc4YzUzN2Q2Njk4ZTFj
ZTNjNzJiNTM2Li41MDljYzgzZjU2YTIwNTc0YzZmNDk3NzBkZWZkY2YxMmUzOTJiZmU1IDEwMDY0
NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjkgQEAKKzIwMTAtMTAtMjcgIExlYW5kcm8gR3JhY2lhIEdpbCAgPGxlYW5k
cm9ncmFjaWFAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBKZXJlbXkgT3Jsb3cu
CisKKyAgICAgICAgQWRkZWQgYSBzZWNvbmQgcGFyYW1ldGVyIHRvIHNldE1vY2tTcGVlY2hJbnB1
dFJlc3VsdCBmb3IKKyAgICAgICAgdGhlIGxhbmd1YWdlIHVzZWQgaW4gc3BlZWNoIGlucHV0Lgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDcwODkKKwor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKHNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdENhbGxiYWNrKToKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKExheW91dFRlc3RD
b250cm9sbGVyOjpzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQpOgorICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHA6CisgICAgICAgIChMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6c2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KToKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChMYXlv
dXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KToKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcDoKKyAgICAgICAgKExh
eW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQpOgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaDoKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwOgorICAgICAgICAo
TGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdCk6CisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHA6CisgICAgICAg
IChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KToKKyAgICAg
ICAgKExheW91dFRlc3RDb250cm9sbGVyOjpwYWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVscyk6CisK
IDIwMTAtMTAtMjcgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgogCiAgICAgICAgIENh
dGNoIGV4Y2VwdGlvbnMgd2hlbiBjaGVja2luZyBpZiB3ZSdyZSBpbnNpZGUgYSBnaXQgd29ya2lu
ZyBkaXJlY3RvcnkKQEAgLTE0NjEsNiArMTQ4NywyMiBAQAogICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHA6CiAgICAgICAgIChMYXlvdXRUZXN0
Q29udHJvbGxlcjo6c2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KToKIAorMjAxMC0xMC0yMCAgTGVh
bmRybyBHcmFjaWEgR2lsICA8bGVhbmRyb2dyYWNpYUBnb29nbGUuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IEplcmVteSBPcmxvdy4KKworICAgICAgICBBZGRlZCBhIHNlY29uZCBwYXJhbWV0
ZXIgdG8gc2V0TW9ja1NwZWVjaElucHV0UmVzdWx0IGZvcgorICAgICAgICB0aGUgbGFuZ3VhZ2Ug
dXNlZCBpbiBzcGVlY2ggaW5wdXQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00NzA4OQorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVz
dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoc2V0TW9ja1NwZWVjaElucHV0UmVzdWx0Q2FsbGJh
Y2spOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmg6Cisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tTcGVlY2hJbnB1dFJlc3Vs
dCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3Rr
LmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrU3BlZWNoSW5wdXRS
ZXN1bHQpOgorCiAyMDEwLTEwLTE5ICBBZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxlLmNvbT4KIAog
ICAgICAgICBUZWFjaCB1cGRhdGUtd2Via2l0LXN1cHBvcnQtbGlicyBhYm91dCB0aGUgbmV3IHZl
cnNpb25pbmcgb2YKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91
dFRlc3RDb250cm9sbGVyLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRl
c3RDb250cm9sbGVyLmNwcAppbmRleCA4MzY1NWJkZDY1MDYyZTk1MDJjNzMyZTgxM2IxNWRlMzFl
MjkyNmNiLi45NjE5Mzg5NzJkOGYyM2I4YzM4YjY0ODRkYjVhMzE5ZWRiNWY3ZGFjIDEwMDY0NAot
LS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAK
KysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3Bw
CkBAIC0xMDc4LDE0ICsxMDc4LDE3IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIHNldE1vY2tHZW9sb2Nh
dGlvbkVycm9yQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0CiAKIHN0YXRp
YyBKU1ZhbHVlUmVmIHNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdENhbGxiYWNrKEpTQ29udGV4dFJl
ZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwg
c2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFs
dWVSZWYqIGV4Y2VwdGlvbikKIHsKLSAgICBpZiAoYXJndW1lbnRDb3VudCA8IDEpCisgICAgaWYg
KGFyZ3VtZW50Q291bnQgPCAyKQogICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQo
Y29udGV4dCk7CiAKICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gcmVzdWx0KEFkb3B0LCBK
U1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKSk7CiAg
ICAgQVNTRVJUKCEqZXhjZXB0aW9uKTsKIAorICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBs
YW5ndWFnZShBZG9wdCwgSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBhcmd1bWVudHNbMV0s
IGV4Y2VwdGlvbikpOworICAgIEFTU0VSVCghKmV4Y2VwdGlvbik7CisKICAgICBMYXlvdXRUZXN0
Q29udHJvbGxlciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PExheW91dFRlc3RDb250cm9sbGVy
Kj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKLSAgICBjb250cm9sbGVyLT5zZXRN
b2NrU3BlZWNoSW5wdXRSZXN1bHQocmVzdWx0LmdldCgpKTsKKyAgICBjb250cm9sbGVyLT5zZXRN
b2NrU3BlZWNoSW5wdXRSZXN1bHQocmVzdWx0LmdldCgpLCBsYW5ndWFnZS5nZXQoKSk7CiAKICAg
ICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CmRpZmYgLS1naXQgYS9X
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oIGIvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAppbmRleCAyNzUxOGI3
MDgwODg2OGRlNGNhNzI2MTM0YzQ2MmE5ZTA5NzRmZWUwLi5iNjE4NjBiYzY0NjUyNWZjNzA3ZDE0
NjIwNzA0NjQwYjVkY2M4M2M0IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L0xheW91dFRlc3RDb250cm9sbGVyLmgKQEAgLTk0LDcgKzk0LDcgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0TW9ja0RldmljZU9yaWVudGF0aW9uKGJvb2wgY2FuUHJvdmlkZUFscGhhLCBkb3VibGUg
YWxwaGEsIGJvb2wgY2FuUHJvdmlkZUJldGEsIGRvdWJsZSBiZXRhLCBib29sIGNhblByb3ZpZGVH
YW1tYSwgZG91YmxlIGdhbW1hKTsKICAgICB2b2lkIHNldE1vY2tHZW9sb2NhdGlvbkVycm9yKGlu
dCBjb2RlLCBKU1N0cmluZ1JlZiBtZXNzYWdlKTsKICAgICB2b2lkIHNldE1vY2tHZW9sb2NhdGlv
blBvc2l0aW9uKGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFjY3Vy
YWN5KTsKLSAgICB2b2lkIHNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdChKU1N0cmluZ1JlZiByZXN1
bHQpOworICAgIHZvaWQgc2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KEpTU3RyaW5nUmVmIHJlc3Vs
dCwgSlNTdHJpbmdSZWYgbGFuZ3VhZ2UpOwogICAgIHZvaWQgc2V0UGVyc2lzdGVudFVzZXJTdHls
ZVNoZWV0TG9jYXRpb24oSlNTdHJpbmdSZWYgcGF0aCk7CiAgICAgdm9pZCBzZXRQbHVnaW5zRW5h
YmxlZChib29sIGZsYWcpOwogICAgIHZvaWQgc2V0UG9wdXBCbG9ja2luZ0VuYWJsZWQoYm9vbCBm
bGFnKTsKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xh
eW91dFRlc3RDb250cm9sbGVyLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAppbmRleCAxYTYxODdlYjRlZmQ2ZDU4ZTU3NTU1
OGNjMTgwOTgxNzBiNDY4NDdkLi5kNzEzYjA0NDA4NTlmZWQ5ZTk2ZjkyMjYxMDkyZWQ4ZGIwNWRl
ZmE5IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlv
dXRUZXN0Q29udHJvbGxlci5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCkBAIC0xNTM0LDEwICsxNTM0LDEwIEBAIHZv
aWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFib3J0TW9kYWwoY29uc3QgQ3BwQXJndW1lbnRMaXN0
JiBhcmd1bWVudHMsIENwcFZhcmlhCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2Nr
U3BlZWNoSW5wdXRSZXN1bHQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZh
cmlhbnQqIHJlc3VsdCkKIHsKICAgICByZXN1bHQtPnNldE51bGwoKTsKLSAgICBpZiAoYXJndW1l
bnRzLnNpemUoKSA8IDEgfHwgIWFyZ3VtZW50c1swXS5pc1N0cmluZygpKQorICAgIGlmIChhcmd1
bWVudHMuc2l6ZSgpIDwgMiB8fCAhYXJndW1lbnRzWzBdLmlzU3RyaW5nKCkgfHwgIWFyZ3VtZW50
c1sxXS5pc1N0cmluZygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3NwZWVjaElucHV0Q29u
dHJvbGxlck1vY2stPnNldE1vY2tSZWNvZ25pdGlvblJlc3VsdChjcHBWYXJpYW50VG9XZWJTdHJp
bmcoYXJndW1lbnRzWzBdKSk7CisgICAgbV9zcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrLT5zZXRN
b2NrUmVjb2duaXRpb25SZXN1bHQoY3BwVmFyaWFudFRvV2ViU3RyaW5nKGFyZ3VtZW50c1swXSks
IGNwcFZhcmlhbnRUb1dlYlN0cmluZyhhcmd1bWVudHNbMV0pKTsKIH0KIAogV2ViS2l0OjpXZWJT
cGVlY2hJbnB1dENvbnRyb2xsZXIqIExheW91dFRlc3RDb250cm9sbGVyOjpzcGVlY2hJbnB1dENv
bnRyb2xsZXIoV2ViS2l0OjpXZWJTcGVlY2hJbnB1dExpc3RlbmVyKiBsaXN0ZW5lcikKZGlmZiAt
LWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxl
ckd0ay5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRy
b2xsZXJHdGsuY3BwCmluZGV4IDA0ZDk3ZWJlMWMyN2FjYTU1MjRiMjkxNmJiNWY2YjA0MDJhNTJi
YzMuLjY4OGIzZjgzODQ1ZjRmYjU1OWFlYTYzMDU0ZmMwM2I0MzQ3N2IwZjUgMTAwNjQ0Ci0tLSBh
L1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5j
cHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9s
bGVyR3RrLmNwcApAQCAtNTAxLDcgKzUwMSw3IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbihib29sIGFsbG93KQogICAgIHNldEdlb2xvY2F0aW9u
UGVybWlzc2lvbkNvbW1vbihhbGxvdyk7CiB9CiAKLXZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdChKU1N0cmluZ1JlZiByZXN1bHQpCit2b2lkIExheW91
dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoSlNTdHJpbmdSZWYgcmVz
dWx0LCBKU1N0cmluZ1JlZiBsYW5ndWFnZSkKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZv
ciBzcGVlY2ggaW5wdXQgbGF5b3V0IHRlc3RzLgogICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk0ODUuCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0gYi9XZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KaW5kZXggYzVk
NWE5MDY5NTk5YmE0YmNmYzJhY2EzMTFjN2EzYTc2NWFiNWUxZC4uMTUwYjZmOWNkM2E1YmNmNDkw
MTA3NzE4ZGZmZjkzM2Q1Yzk0YzRkMSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCisrKyBiL1dlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQpAQCAtMzcxLDcgKzM3
MSw3IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEdlb2xvY2F0aW9uUGVybWlzc2lv
bihib29sIGFsbG93KQogICAgIFtbW21haW5GcmFtZSB3ZWJWaWV3XSBVSURlbGVnYXRlXSBkaWRT
ZXRNb2NrR2VvbG9jYXRpb25QZXJtaXNzaW9uXTsKIH0KIAotdm9pZCBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6c2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KEpTU3RyaW5nUmVmIHJlc3VsdCkKK3ZvaWQg
TGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdChKU1N0cmluZ1Jl
ZiByZXN1bHQsIEpTU3RyaW5nUmVmIGxhbmd1YWdlKQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1l
bnQgZm9yIHNwZWVjaCBpbnB1dCBsYXlvdXQgdGVzdHMuCiAgICAgLy8gU2VlIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTQ4NS4KZGlmZiAtLWdpdCBhL1dlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwIGIvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAKaW5kZXgg
YjJjMzgwN2QwNmZlNWE2YzhlYjMxMzRhYmQ4YmIwM2NiZmIxYjViYy4uZjk5ZWM0ZjcyZGI0M2Mz
OTY2YjA3MzgwMTMxZWY4M2Y5MmQwYWU0MSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAKKysrIGIvV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAKQEAgLTc2NSw3ICs3
NjUsNyBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3Np
dGlvbihkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsbwogICAgIER1bXBSZW5kZXJUcmVlU3VwcG9y
dFF0OjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihsYXRpdHVkZSwgbG9uZ2l0dWRlLCBhY2N1
cmFjeSk7CiB9CiAKLXZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tTcGVlY2hJbnB1
dFJlc3VsdChjb25zdCBRU3RyaW5nJiByZXN1bHQpCit2b2lkIExheW91dFRlc3RDb250cm9sbGVy
OjpzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoY29uc3QgUVN0cmluZyYgcmVzdWx0LCBjb25zdCBR
U3RyaW5nJiBsYW5ndWFnZSkKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBzcGVlY2gg
aW5wdXQgbGF5b3V0IHRlc3RzLgogICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9Mzk0ODUuCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmggYi9XZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmgKaW5kZXggNjhlYmUxZDg1OTkyYWU2NGY5
ZTA5ZTY0MmY5MTIwZTZjNDk2N2ZjOC4uMTFkNzJlNDVjZjRlYTMwNzU5Yzc2ZWU4NmIwMGViMDE2
Y2VjNDZhOSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0
VGVzdENvbnRyb2xsZXJRdC5oCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xh
eW91dFRlc3RDb250cm9sbGVyUXQuaApAQCAtMjE2LDcgKzIxNiw3IEBAIHB1YmxpYyBzbG90czoK
ICAgICBib29sIGlzR2VvbG9jYXRpb25QZXJtaXNzaW9uU2V0KCkgY29uc3QgeyByZXR1cm4gbV9p
c0dlb2xvY2F0aW9uUGVybWlzc2lvblNldDsgfQogICAgIGJvb2wgZ2VvbG9jYXRpb25QZXJtaXNz
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9nZW9sb2NhdGlvblBlcm1pc3Npb247IH0KIAotICAgIHZv
aWQgc2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KGNvbnN0IFFTdHJpbmcmIHJlc3VsdCk7CisgICAg
dm9pZCBzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoY29uc3QgUVN0cmluZyYgcmVzdWx0LCBjb25z
dCBRU3RyaW5nJiBsYW5ndWFnZSk7CiAKICAgICAvLyBFbXB0eSBzdHViIG1ldGhvZCB0byBrZWVw
IHBhcml0eSB3aXRoIG9iamVjdCBtb2RlbCBleHBvc2VkIGJ5IGdsb2JhbCBMYXlvdXRUZXN0Q29u
dHJvbGxlci4KICAgICB2b2lkIGFib3J0TW9kYWwoKSB7fQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcCBiL1dlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAKaW5k
ZXggOWU4ZWQxZTY5NTdkN2Y3Y2E0ZmVhZDkxZDg3YjliNTZmYjQyMTQ1OS4uZDdjNDFlMGE2YmY1
N2VmNGQwOTkxNWU4M2E0OTIxMjVjZGE1OGNkOCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAorKysgYi9XZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCkBAIC00
MDUsNyArNDA1LDcgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0R2VvbG9jYXRpb25Q
ZXJtaXNzaW9uKGJvb2wgYWxsb3cpCiAgICAgc2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uQ29tbW9u
KGFsbG93KTsKIH0KIAotdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja1NwZWVjaElu
cHV0UmVzdWx0KEpTU3RyaW5nUmVmIHJlc3VsdCkKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdChKU1N0cmluZ1JlZiByZXN1bHQsIEpTU3RyaW5nUmVm
IGxhbmd1YWdlKQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIHNwZWVjaCBpbnB1dCBs
YXlvdXQgdGVzdHMuCiAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0zOTQ4NS4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3d4
L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
d3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAKaW5kZXggZWVmYzU4NzgxZTBhMWVhYmNkMGZk
ODEzODkzMmNjNDNjNGQ3ODQ3Zi4uMzI2MTRjMTEzM2RkZjhhYWQ3N2VmYjBkMWQ0YTZiMzBlNDAx
MTA4YiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVz
dENvbnRyb2xsZXJXeC5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvTGF5
b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAKQEAgLTMyMCw3ICszMjAsNyBAQCB2b2lkIExheW91dFRl
c3RDb250cm9sbGVyOjpzZXRHZW9sb2NhdGlvblBlcm1pc3Npb24oYm9vbCBhbGxvdykKICAgICBz
ZXRHZW9sb2NhdGlvblBlcm1pc3Npb25Db21tb24oYWxsb3cpOwogfQogCi12b2lkIExheW91dFRl
c3RDb250cm9sbGVyOjpzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoSlNTdHJpbmdSZWYgcmVzdWx0
KQordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KEpT
U3RyaW5nUmVmIHJlc3VsdCwgSlNTdHJpbmdSZWYgbGFuZ3VhZ2UpCiB7CiAgICAgLy8gRklYTUU6
IEltcGxlbWVudCBmb3Igc3BlZWNoIGlucHV0IGxheW91dCB0ZXN0cy4KICAgICAvLyBTZWUgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NDg1LgpAQCAtNTI4LDQgKzUy
OCwzIEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGFn
ZVNpemVBbmRNYXJnaW5zSW5QaXhlbHMoaW50IHBhCiAgICAgLy8gRklYTUU6IEltcGxlbWVudAog
ICAgIHJldHVybiAwOwogfQotCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72208</attachid>
            <date>2010-10-28 10:50:08 -0700</date>
            <delta_ts>2010-10-29 04:48:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47089-20101028185005.patch</filename>
            <type>text/plain</type>
            <size>40662</size>
            <attacher name="Leandro Graciá Gil">leandrogracia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxYjNlMDI2ZmY4MzhhNjU3Yzc2Y2ZmMjQwNjdmM2Q0MGM5YjQzMGM4Li4zYTIzYWI1
MTU3ZDIyZGM4OGIxOGUwMjEzZTQ3NjEwYmYzNDhmNTE3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAK
KzIwMTAtMTAtMjggIExlYW5kcm8gR3JhY2lhIEdpbCAgPGxlYW5kcm9ncmFjaWFAZ29vZ2xlLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBKZXJlbXkgT3Jsb3cuCisKKyAgICAgICAgQWRkZWQg
YSBsYXlvdXQgdGVzdCBmb3IgdGhlIGxhbmd1YWdlIHRhZyBpbiBzcGVlY2ggaW5wdXQuIFVwZGF0
ZWQKKyAgICAgICAgdGhlIHNwZWVjaCBidXR0b24gdGVzdHMgdG8gaW5jbHVkZSB0aGUgbmV3IGxh
bmd1YWdlIHBhcmFtZXRlciBpbiB0aGUKKyAgICAgICAgbW9jayByZXN1bHQuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzA4OQorCisgICAgICAgICog
ZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1sYW5ndWFnZS10YWctZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L3NwZWVjaC9pbnB1dC10ZXh0LWxhbmd1YWdlLXRhZy5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L3NwZWVjaC9pbnB1dC10ZXh0LXNwZWVjaGJ1dHRvbi5odG1sOgor
ICAgICAgICAqIGZhc3Qvc3BlZWNoL3NwZWVjaC1idXR0b24taWdub3JlLWdlbmVyYXRlZC1ldmVu
dHMuaHRtbDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50
eHQ6CisKIDIwMTAtMTAtMjggIEFsZXhhbmRlciBQYXZsb3YgIDxhcGF2bG92QGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFuLgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1sYW5ndWFnZS10YWctZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1sYW5ndWFnZS10YWctZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmU2MDk2ZDA4Y2ZhZTZkODY4MTFjNmZkYTY3NDg4NDAyNGMwNDBh
YjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9pbnB1dC10ZXh0
LWxhbmd1YWdlLXRhZy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMiBAQAorVGVzdHMgZm9yIGxh
bmd1YWdlLXNwZWNpZmljIHJlc3VsdHMgYW5kIGxhbmd1YWdlIGluaGVyaXRhbmNlIGluIHNwZWVj
aCBidXR0b25zLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgic3BlZWNoSW5wdXROb25lIikudmFsdWUgaXMgImVycm9yOiBubyBy
ZXN1bHQgZm91bmQgZm9yIGxhbmd1YWdlICcnIgorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgic3BlZWNoSW5wdXRFbGVtZW50IikudmFsdWUgaXMgIlBpY3R1cmVzIG9mIHRoZSBtb29uIgor
UEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3BlZWNoSW5wdXRJbmhlcml0ZWQiKS52YWx1
ZSBpcyAi5pyI44Gu5YaZ55yfIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisgCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9pbnB1
dC10ZXh0LWxhbmd1YWdlLXRhZy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvaW5wdXQt
dGV4dC1sYW5ndWFnZS10YWcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNDUyNjYxZmIwODY3ZjI1Y2Y1Mjlh
NjRmMWVjNzlkNTJmYjY5ZTliCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9z
cGVlY2gvaW5wdXQtdGV4dC1sYW5ndWFnZS10YWcuaHRtbApAQCAtMCwwICsxLDU2IEBACis8IURP
Q1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFk
PgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlk
PSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCI+CitkZXNjcmlwdGlvbignVGVzdHMgZm9yIGxhbmd1YWdlLXNw
ZWNpZmljIHJlc3VsdHMgYW5kIGxhbmd1YWdlIGluaGVyaXRhbmNlIGluIHNwZWVjaCBidXR0b25z
LicpOworCisvLyBOb3RlOiB0ZXN0IGNhc2VzIGFyZSBzZXF1ZW50aWFsIHRvIGVuc3VyZSB0aGF0
IG5vIG5ldyByZWNvZ25pdGlvbiBzdGFydHMgd2hlbiBhbm90aGVyIHJlY29nbml0aW9uIHJlY29y
ZGluZyBpcyBhY3RpdmUuCitmdW5jdGlvbiBvbkNoYW5nZU5vbmUoKSB7CisgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCdkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3BlZWNoSW5wdXROb25lIiku
dmFsdWUnLCAnZXJyb3I6IG5vIHJlc3VsdCBmb3VuZCBmb3IgbGFuZ3VhZ2UgXCdcJycpOworICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNwZWVjaEJ1dHRvbkNsaWNrKCdzcGVlY2hJbnB1dEVs
ZW1lbnQnKTsgfSwgNTApOworfQorCitmdW5jdGlvbiBvbkNoYW5nZUVsZW1lbnQoKSB7CisgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3BlZWNoSW5w
dXRFbGVtZW50IikudmFsdWUnLCAnUGljdHVyZXMgb2YgdGhlIG1vb24nKTsKKyAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeyBzcGVlY2hCdXR0b25DbGljaygnc3BlZWNoSW5wdXRJbmhlcml0ZWQn
KTsgfSwgNTApOworfQorCitmdW5jdGlvbiBvbkNoYW5nZUluaGVyaXRlZCgpIHsKKyAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoJ2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzcGVlY2hJbnB1dElu
aGVyaXRlZCIpLnZhbHVlJywgJ+aciOOBruWGmeecnycpOworICAgIGZpbmlzaEpTVGVzdCgpOwor
fQorCitmdW5jdGlvbiBzcGVlY2hCdXR0b25DbGljayhlbGVtZW50SWQpIHsKKyAgICB2YXIgZWxl
bWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJZCk7CisgICAgdmFyIHggPSBl
bGVtZW50Lm9mZnNldExlZnQgKyBlbGVtZW50Lm9mZnNldFdpZHRoIC0gNDsKKyAgICB2YXIgeSA9
IGVsZW1lbnQub2Zmc2V0VG9wICsgZWxlbWVudC5vZmZzZXRIZWlnaHQgLyAyOworICAgIGV2ZW50
U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOwor
ICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKK30KKworZnVuY3Rpb24gcnVuKCkgeworICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIgJiYgd2luZG93LmV2ZW50U2VuZGVyKSB7Cisg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdCgnUGlj
dHVyZXMgb2YgdGhlIG1vb24nLCAnZW4tR0InKTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuc2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KCfmnIjjga7lhpnnnJ8nLCAnamEnKTsKKyAgICAg
ICAgc3BlZWNoQnV0dG9uQ2xpY2soJ3NwZWVjaElucHV0Tm9uZScpOworICAgIH0KK30KKword2lu
ZG93Lm9ubG9hZCA9IHJ1bjsKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK3dpbmRvdy5z
dWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8aW5wdXQgaWQ9InNwZWVjaElu
cHV0Tm9uZSIgeC13ZWJraXQtc3BlZWNoIG9ud2Via2l0c3BlZWNoY2hhbmdlPSJvbkNoYW5nZU5v
bmUoKSI+Cis8aW5wdXQgaWQ9InNwZWVjaElucHV0RWxlbWVudCIgeC13ZWJraXQtc3BlZWNoIG9u
d2Via2l0c3BlZWNoY2hhbmdlPSJvbkNoYW5nZUVsZW1lbnQoKSIgbGFuZz0iZW4tR0IiPgorPGRp
diBsYW5nPSJqYSI+IDxpbnB1dCBpZD0ic3BlZWNoSW5wdXRJbmhlcml0ZWQiIHgtd2Via2l0LXNw
ZWVjaCBvbndlYmtpdHNwZWVjaGNoYW5nZT0ib25DaGFuZ2VJbmhlcml0ZWQoKSI+IDwvZGl2Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvaW5w
dXQtdGV4dC1zcGVlY2hidXR0b24uaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL2lucHV0
LXRleHQtc3BlZWNoYnV0dG9uLmh0bWwKaW5kZXggNmY1YmM0YjEyMWZiNGY5ZDlkZGE2YzMzMWY4
YjI2ZGMxY2Q0Mzk5NC4uY2VmNzcwNTZiMTdkMWNkNDUxYjQ5MGI3YzFmMjQ2YmE2Yzg5NTBkYiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1zcGVlY2hidXR0
b24uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9pbnB1dC10ZXh0LXNwZWVjaGJ1
dHRvbi5odG1sCkBAIC0zMiw3ICszMiw3IEBAIGZ1bmN0aW9uIG9uV2Via2l0U3BlZWNoQ2hhbmdl
KCkgewogCiBmdW5jdGlvbiBydW4oKSB7CiAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlciAmJiB3aW5kb3cuZXZlbnRTZW5kZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuc2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KCdQaWN0dXJlcyBvZiB0aGUgbW9vbicpOworICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoJ1BpY3R1
cmVzIG9mIHRoZSBtb29uJywgJycpOwogCiAgICAgICAgIC8vIENsaWNraW5nIHRoZSBzcGVlY2gg
YnV0dG9uIHNob3VsZCBmaWxsIGluIG1vY2sgc3BlZWNoLXJlY29nbml6ZWQgdGV4dC4KICAgICAg
ICAgdmFyIGlucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NwZWVjaElucHV0Jyk7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9zcGVlY2gtYnV0dG9uLWlnbm9yZS1n
ZW5lcmF0ZWQtZXZlbnRzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9zcGVlY2gtYnV0
dG9uLWlnbm9yZS1nZW5lcmF0ZWQtZXZlbnRzLmh0bWwKaW5kZXggYjliOGVjMzY2MDU1NzlmMmIx
MjZkNmYxZGEzNTYwYzY3MmFkMmI3MS4uYzY4NDg2Mzc3MDUzMzk5YjI5ZDA0ZmMyOTkwN2U1NWU4
YWJmMDYwOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvc3BlZWNoLWJ1dHRv
bi1pZ25vcmUtZ2VuZXJhdGVkLWV2ZW50cy5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc3Bl
ZWNoL3NwZWVjaC1idXR0b24taWdub3JlLWdlbmVyYXRlZC1ldmVudHMuaHRtbApAQCAtNDksNyAr
NDksNyBAQCBmdW5jdGlvbiBzZXR1cERpc3BhdGNoRXZlbnRUZXN0KCkgewogZnVuY3Rpb24gcnVu
KCkgewogICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIgJiYgd2luZG93LmV2ZW50
U2VuZGVyKSB7CiAgICAgICAgIC8vIFJ1bm5pbmcgaW4gRFJULCB0ZXN0IHRoZSBldmVudFNlbmRl
ciBjYXNlLgotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRNb2NrU3BlZWNoSW5wdXRS
ZXN1bHQoJ1BpY3R1cmVzIG9mIHRoZSBtb29uJyk7CisgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdCgnUGljdHVyZXMgb2YgdGhlIG1vb24nLCAnJyk7
CiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzcGVlY2hJbnB1dCcpLm9ud2Via2l0
c3BlZWNoY2hhbmdlID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoJ2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzcGVlY2hJbnB1dCIpLnZhbHVlJywgJ1Bp
Y3R1cmVzIG9mIHRoZSBtb29uJyk7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAppbmRleCA2YzYwNGNlZmIxMjRmMzZiN2Y3ZDA5
ODBjNWM0YTY0MWYyNWI1NTZhLi44ZGYzZGVkOGI3YzhhMjg0YmViNTE2NjJhZWZlNjJkMzQyNmQ1
MjgwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVj
dGF0aW9ucy50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBl
Y3RhdGlvbnMudHh0CkBAIC0zMzYyLDMgKzMzNjIsNSBAQCBCVUdXSzQ4NTEzIDogaHR0cC90ZXN0
cy9uYXZpZ2F0aW9uL3RpbWVycmVkaXJlY3Qtc3ViZnJhbWVsb2FkLmh0bWwgPSBURVhUCiBCVUdX
SzQ4NTEzIDogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3dpbmRvdy1vcGVuLWFkZHMtaGlzdG9yeS1p
dGVtLmh0bWwgPSBURVhUCiBCVUdXSzQ4NTEzIDogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3dpbmRv
dy1vcGVuLWFkZHMtaGlzdG9yeS1pdGVtMi5odG1sID0gVEVYVAogCisvLyBUZW1wb3JhcmlseSBk
aXNhYmxlZCBmb3IgYSA0LXNpZGVkIHBhdGNoLiBXaWxsIGJlIGVuYWJsZWQgYWdhaW4gYnkgQlVH
V0s0NzQyMC4KK0JVR1dLNDcwODkgOiBmYXN0L3NwZWVjaC9pbnB1dC10ZXh0LWxhbmd1YWdlLXRh
Zy5odG1sID0gRkFJTApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA0MzAyMjNiYWU0ODlhMDJiYzFkM2I4MjM5NmM1YTkzNWE2ZGQ1NDBkLi5j
MThjNzEwYzEzZGQ0NjJkOWM0NzJhZDI0MDg4NzJkNTdiMDRhZDNlIDEwMDY0NAotLS0gYS9XZWJD
b3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisy
MDEwLTEwLTI4ICBMZWFuZHJvIEdyYWNpYSBHaWwgIDxsZWFuZHJvZ3JhY2lhQGdvb2dsZS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSmVyZW15IE9ybG93LgorCisgICAgICAgIFBhdGNoIHRo
ZSBjdXJyZW50IHNwZWVjaCBpbnB1dCBpbXBsZW1lbnRhdGlvbiB0byB1c2UgdGhlIG5lYXJlc3QK
KyAgICAgICAgbGFuZ3VhZ2UgdGFnLiBUaGUgbGFuZ3VhZ2UgaXMgbm93IHBhc3NlZCB0byB0aGUg
c3RhcnRSZWNvZ25pdGlvbgorICAgICAgICBtZXRob2RzIHNvIHRoYXQgbGFuZ3VhZ2Utc3BlY2lm
aWMgcmVjb2duaXRpb24gY291bGQgYmUgdXNlZC4gQWxzbyBhZGRlZAorICAgICAgICBhIHNlY29u
ZCBwYXJhbWV0ZXIgdG8gc2V0TW9ja1NwZWVjaElucHV0UmVzdWx0IGZvciB0aGUgbGFuZ3VhZ2Ug
dXNlZCBpbgorICAgICAgICBzcGVlY2ggcmVjb2duaXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzA4OQorCisgICAgICAgIFRoaXMgaXMgdGhl
IDJuZCBvZiBhIDQtc2lkZWQgcGF0Y2ggaW4gQ2hyb21pdW0gYW5kIFdlYktpdC4gRm9yIG1vcmUK
KyAgICAgICAgZGV0YWlscyBzZWUgaHR0cDovL2NvZGVyZXZpZXcuY2hyb21pdW0ub3JnLzM2MTUw
MDUvc2hvdywKKyAgICAgICAgaHR0cDovL2NvZGVyZXZpZXcuY2hyb21pdW0ub3JnLzM1OTUwMTgv
c2hvdyBhbmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTQ3NDIwLgorCisgICAgICAgIFRlc3Q6IGZhc3Qvc3BlZWNoL2lucHV0LXRleHQtbGFuZ3VhZ2Ut
dGFnLmh0bWwKKworICAgICAgICAqIHBhZ2UvU3BlZWNoSW5wdXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U3BlZWNoSW5wdXQ6OnN0YXJ0UmVjb2duaXRpb24pOgorICAgICAgICAqIHBhZ2UvU3Bl
ZWNoSW5wdXQuaDoKKyAgICAgICAgKiBwYWdlL1NwZWVjaElucHV0Q2xpZW50Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vbW9jay9TcGVlY2hJbnB1dENsaWVudE1vY2suY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U3BlZWNoSW5wdXRDbGllbnRNb2NrOjpzdGFydFJlY29nbml0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OlNwZWVjaElucHV0Q2xpZW50TW9jazo6c2V0UmVjb2duaXRpb25SZXN1bHQpOgor
ICAgICAgICAoV2ViQ29yZTo6U3BlZWNoSW5wdXRDbGllbnRNb2NrOjp0aW1lckZpcmVkKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xpZW50TW9jay5oOgorICAgICAgICAq
IHJlbmRlcmluZy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dENvbnRyb2xJbm5lckVsZW1lbnQ6OmF0dGFjaElubmVyRWxlbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpTZWFyY2hGaWVsZENhbmNlbEJ1dHRvbkVsZW1lbnQ6OmRldGFjaCk6CisgICAg
ICAgIChXZWJDb3JlOjpTcGluQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2
ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxl
bWVudDo6ZGV0YWNoKToKKwogMjAxMC0xMC0yOCAgQWxleGFuZGVyIFBhdmxvdiAgPGFwYXZsb3ZA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXQuY3BwIGIvV2ViQ29yZS9wYWdlL1NwZWVj
aElucHV0LmNwcAppbmRleCBjNTMzYTgwODBkNTQzNzVkNjNiYTYxNjUwNmE4MjIzZmE3NmI1OGUz
Li5mMzZlZDRkMTQ0Njg5YjUzMTRjM2ZiMWE5YjdiYmU5OWFhM2VhYzg2IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXQuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1
dC5jcHAKQEAgLTkzLDEwICs5MywxMCBAQCB2b2lkIFNwZWVjaElucHV0OjpzZXRSZWNvZ25pdGlv
blJlc3VsdChpbnQgbGlzdGVuZXJJZCwgY29uc3QgU3BlZWNoSW5wdXRSZXN1bHRBcgogICAgICAg
ICBtX2xpc3RlbmVycy5nZXQobGlzdGVuZXJJZCktPnNldFJlY29nbml0aW9uUmVzdWx0KGxpc3Rl
bmVySWQsIHJlc3VsdCk7CiB9CiAKLWJvb2wgU3BlZWNoSW5wdXQ6OnN0YXJ0UmVjb2duaXRpb24o
aW50IGxpc3RlbmVySWQsIGNvbnN0IEludFJlY3QmIGVsZW1lbnRSZWN0LCBjb25zdCBTdHJpbmcm
IGdyYW1tYXIpCitib29sIFNwZWVjaElucHV0OjpzdGFydFJlY29nbml0aW9uKGludCBsaXN0ZW5l
cklkLCBjb25zdCBJbnRSZWN0JiBlbGVtZW50UmVjdCwgY29uc3QgQXRvbWljU3RyaW5nJiBsYW5n
dWFnZSwgY29uc3QgU3RyaW5nJiBncmFtbWFyKQogewogICAgIEFTU0VSVChtX2xpc3RlbmVycy5j
b250YWlucyhsaXN0ZW5lcklkKSk7Ci0gICAgcmV0dXJuIG1fY2xpZW50LT5zdGFydFJlY29nbml0
aW9uKGxpc3RlbmVySWQsIGVsZW1lbnRSZWN0LCBncmFtbWFyKTsKKyAgICByZXR1cm4gbV9jbGll
bnQtPnN0YXJ0UmVjb2duaXRpb24obGlzdGVuZXJJZCwgZWxlbWVudFJlY3QsIGxhbmd1YWdlLCBn
cmFtbWFyKTsKIH0KIAogdm9pZCBTcGVlY2hJbnB1dDo6c3RvcFJlY29yZGluZyhpbnQgbGlzdGVu
ZXJJZCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dC5oIGIvV2ViQ29yZS9w
YWdlL1NwZWVjaElucHV0LmgKaW5kZXggMDhkOTVkZTA2NzdhNmFjMTk2YWMzZTgwZjYzYjQ5MjQ2
NWM0YjQ0Zi4uNDUzMmQ0OWE5ODFhN2RkNTk1YWQ5YWZmNDVhMmFiNjg2MmMzMmQ2NCAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0LmgKKysrIGIvV2ViQ29yZS9wYWdlL1NwZWVj
aElucHV0LmgKQEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgogICAgIHZvaWQgdW5yZWdpc3Rlckxp
c3RlbmVyKGludCk7CiAKICAgICAvLyBNZXRob2RzIGludm9rZWQgYnkgdGhlIGlucHV0IGVsZW1l
bnRzLgotICAgIGJvb2wgc3RhcnRSZWNvZ25pdGlvbihpbnQgbGlzdGVuZXJJZCwgY29uc3QgSW50
UmVjdCYgZWxlbWVudFJlY3QsIGNvbnN0IFN0cmluZyYgZ3JhbW1hcik7CisgICAgYm9vbCBzdGFy
dFJlY29nbml0aW9uKGludCBsaXN0ZW5lcklkLCBjb25zdCBJbnRSZWN0JiBlbGVtZW50UmVjdCwg
Y29uc3QgQXRvbWljU3RyaW5nJiBsYW5ndWFnZSwgY29uc3QgU3RyaW5nJiBncmFtbWFyKTsKICAg
ICB2b2lkIHN0b3BSZWNvcmRpbmcoaW50KTsKICAgICB2b2lkIGNhbmNlbFJlY29nbml0aW9uKGlu
dCk7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dENsaWVudC5oIGIvV2Vi
Q29yZS9wYWdlL1NwZWVjaElucHV0Q2xpZW50LmgKaW5kZXggNDViMzA5YTdkYTRlNDM2N2Y3ZWEz
MzdjMTU4NzRkZGM2MDNlODQ0Yy4uMmEyZTE2MGZiNzZiZWJlYjE0YTdiZjkyNDVlNWYxNGYwY2I3
N2Q3MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0Q2xpZW50LmgKKysrIGIv
V2ViQ29yZS9wYWdlL1NwZWVjaElucHV0Q2xpZW50LmgKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBzZXRMaXN0ZW5lcihTcGVlY2hJbnB1dExpc3RlbmVyKikgPSAw
OwogCiAgICAgLy8gU3RhcnRzIHNwZWVjaCByZWNvZ25pdGlvbiBhbmQgYXVkaW8gcmVjb3JkaW5n
LgotICAgIHZpcnR1YWwgYm9vbCBzdGFydFJlY29nbml0aW9uKGludCByZXF1ZXN0SWQsIGNvbnN0
IEludFJlY3QmIGVsZW1lbnRSZWN0LCBjb25zdCBTdHJpbmcmIGdyYW1tYXIpID0gMDsKKyAgICB2
aXJ0dWFsIGJvb2wgc3RhcnRSZWNvZ25pdGlvbihpbnQgcmVxdWVzdElkLCBjb25zdCBJbnRSZWN0
JiBlbGVtZW50UmVjdCwgY29uc3QgQXRvbWljU3RyaW5nJiBsYW5ndWFnZSwgY29uc3QgU3RyaW5n
JiBncmFtbWFyKSA9IDA7CiAKICAgICAvLyBTdG9wcyBhdWRpbyByZWNvcmRpbmcgYW5kIHBlcmZv
cm1zIHJlY29nbml0aW9uIHdpdGggdGhlIGF1ZGlvIHJlY29yZGVkIHVudGlsIG5vdwogICAgIC8v
IChkb2VzIG5vdCBkaXNjYXJkIGF1ZGlvKS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9TcGVlY2hJbnB1dENsaWVudE1vY2suY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Nw
ZWVjaElucHV0Q2xpZW50TW9jay5jcHAKaW5kZXggMGIzYzhhY2RmNzM4MzA1N2EyODhjZDJhYTY3
MGNjY2IzNjNjOWZmNi4uMzMxMjA5YzU5NjEwNjFhMDNjYWE2YzVkODc3YmYzZTczYmFiNTRjNiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xpZW50TW9jay5j
cHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xpZW50TW9jay5jcHAK
QEAgLTUwLDEyICs1MCwxMyBAQCB2b2lkIFNwZWVjaElucHV0Q2xpZW50TW9jazo6c2V0TGlzdGVu
ZXIoU3BlZWNoSW5wdXRMaXN0ZW5lciogbGlzdGVuZXIpCiAgICAgbV9saXN0ZW5lciA9IGxpc3Rl
bmVyOwogfQogCi1ib29sIFNwZWVjaElucHV0Q2xpZW50TW9jazo6c3RhcnRSZWNvZ25pdGlvbihp
bnQgcmVxdWVzdElkLCBjb25zdCBJbnRSZWN0JiBlbGVtZW50UmVjdCwgY29uc3QgU3RyaW5nJiBn
cmFtbWFyKQorYm9vbCBTcGVlY2hJbnB1dENsaWVudE1vY2s6OnN0YXJ0UmVjb2duaXRpb24oaW50
IHJlcXVlc3RJZCwgY29uc3QgSW50UmVjdCYgZWxlbWVudFJlY3QsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgbGFuZ3VhZ2UsIGNvbnN0IFN0cmluZyYgZ3JhbW1hcikKIHsKICAgICBpZiAobV90aW1lci5p
c0FjdGl2ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgbV9yZXF1ZXN0SWQgPSByZXF1
ZXN0SWQ7CiAgICAgbV9yZWNvcmRpbmcgPSB0cnVlOworICAgIG1fbGFuZ3VhZ2UgPSBsYW5ndWFn
ZTsKICAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdCgwKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAg
LTgwLDkgKzgxLDEyIEBAIHZvaWQgU3BlZWNoSW5wdXRDbGllbnRNb2NrOjpjYW5jZWxSZWNvZ25p
dGlvbihpbnQgcmVxdWVzdElkKQogICAgIH0KIH0KIAotdm9pZCBTcGVlY2hJbnB1dENsaWVudE1v
Y2s6OnNldFJlY29nbml0aW9uUmVzdWx0KGNvbnN0IFN0cmluZyYgcmVzdWx0KQordm9pZCBTcGVl
Y2hJbnB1dENsaWVudE1vY2s6OnNldFJlY29nbml0aW9uUmVzdWx0KGNvbnN0IFN0cmluZyYgcmVz
dWx0LCBjb25zdCBBdG9taWNTdHJpbmcmIGxhbmd1YWdlKQogewotICAgIG1fcmVjb2duaXRpb25S
ZXN1bHQgPSByZXN1bHQ7CisgICAgaWYgKGxhbmd1YWdlLmlzRW1wdHkoKSkKKyAgICAgICAgbV9y
ZXN1bHRGb3JFbXB0eUxhbmd1YWdlID0gcmVzdWx0OworICAgIGVsc2UKKyAgICAgICAgbV9yZWNv
Z25pdGlvblJlc3VsdC5zZXQobGFuZ3VhZ2UsIHJlc3VsdCk7CiB9CiAKIHZvaWQgU3BlZWNoSW5w
dXRDbGllbnRNb2NrOjp0aW1lckZpcmVkKFdlYkNvcmU6OlRpbWVyPFNwZWVjaElucHV0Q2xpZW50
TW9jaz4qKQpAQCAtOTMsNyArOTcsMzAgQEAgdm9pZCBTcGVlY2hJbnB1dENsaWVudE1vY2s6OnRp
bWVyRmlyZWQoV2ViQ29yZTo6VGltZXI8U3BlZWNoSW5wdXRDbGllbnRNb2NrPiopCiAgICAgICAg
IG1fdGltZXIuc3RhcnRPbmVTaG90KDApOwogICAgIH0gZWxzZSB7CiAgICAgICAgIFNwZWVjaElu
cHV0UmVzdWx0QXJyYXkgcmVzdWx0czsKLSAgICAgICAgcmVzdWx0cy5hcHBlbmQoU3BlZWNoSW5w
dXRSZXN1bHQ6OmNyZWF0ZShtX3JlY29nbml0aW9uUmVzdWx0LCAxLjApKTsKKyAgICAgICAgYm9v
bCBub1Jlc3VsdHNGb3VuZCA9IGZhbHNlOworCisgICAgICAgIC8vIEVtcHR5IGxhbmd1YWdlIGNh
c2UgbXVzdCBiZSBoYW5kbGVkIHNlcGFyYXRlbHkgdG8gYXZvaWQgcHJvYmxlbXMgd2l0aCBIYXNo
TWFwIGFuZCBlbXB0eSBrZXlzLgorICAgICAgICBpZiAobV9sYW5ndWFnZS5pc0VtcHR5KCkpIHsK
KyAgICAgICAgICAgIGlmICghbV9yZXN1bHRGb3JFbXB0eUxhbmd1YWdlLmlzTnVsbCgpKQorICAg
ICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKFNwZWVjaElucHV0UmVzdWx0OjpjcmVhdGUobV9y
ZXN1bHRGb3JFbXB0eUxhbmd1YWdlLCAxLjApKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICBub1Jlc3VsdHNGb3VuZCA9IHRydWU7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICBpZiAobV9yZWNvZ25pdGlvblJlc3VsdC5jb250YWlucyhtX2xhbmd1YWdlKSkKKyAgICAg
ICAgICAgICAgICByZXN1bHRzLmFwcGVuZChTcGVlY2hJbnB1dFJlc3VsdDo6Y3JlYXRlKG1fcmVj
b2duaXRpb25SZXN1bHQuZ2V0KG1fbGFuZ3VhZ2UpLCAxLjApKTsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICBub1Jlc3VsdHNGb3VuZCA9IHRydWU7CisgICAgICAgIH0KKworICAg
ICAgICBpZiAobm9SZXN1bHRzRm91bmQpIHsKKyAgICAgICAgICAgIC8vIENhbid0IGF2b2lkIHNl
dHRpbmcgYSByZXN1bHQgZXZlbiBpZiBubyByZXN1bHQgd2FzIHNldCBmb3IgdGhlIGdpdmVuIGxh
bmd1YWdlLgorICAgICAgICAgICAgLy8gVGhpcyB3b3VsZCBhdm9pZCBnZW5lcmF0aW5nIHRoZSBl
dmVudHMgdXNlZCB0byBjaGVjayB0aGUgcmVzdWx0cyBhbmQgdGhlIHRlc3Qgd291bGQgdGltZW91
dC4KKyAgICAgICAgICAgIFN0cmluZyBlcnJvcigiZXJyb3I6IG5vIHJlc3VsdCBmb3VuZCBmb3Ig
bGFuZ3VhZ2UgJyIpOworICAgICAgICAgICAgZXJyb3IuYXBwZW5kKG1fbGFuZ3VhZ2UpOworICAg
ICAgICAgICAgZXJyb3IuYXBwZW5kKCInIik7CisgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChT
cGVlY2hJbnB1dFJlc3VsdDo6Y3JlYXRlKGVycm9yLCAxLjApKTsKKyAgICAgICAgfQorCiAgICAg
ICAgIG1fbGlzdGVuZXItPnNldFJlY29nbml0aW9uUmVzdWx0KG1fcmVxdWVzdElkLCByZXN1bHRz
KTsKICAgICAgICAgbV9saXN0ZW5lci0+ZGlkQ29tcGxldGVSZWNvZ25pdGlvbihtX3JlcXVlc3RJ
ZCk7CiAgICAgICAgIG1fcmVxdWVzdElkID0gMDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9TcGVlY2hJbnB1dENsaWVudE1vY2suaCBiL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9T
cGVlY2hJbnB1dENsaWVudE1vY2suaAppbmRleCA3OTAwZjM2ZGY2Y2U0MmRlNGViMDMwZmIwNjYz
NTIyZTE0ZWM3MzBjLi4wZTNjNDU2NTY2MjdmODFkMDI0NjI2Y2RhNWE5YWExMjdjMzc4ZWFhIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL21vY2svU3BlZWNoSW5wdXRDbGllbnRNb2NrLmgK
KysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xpZW50TW9jay5oCkBAIC0z
NCw2ICszNCw4IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJTcGVl
Y2hJbnB1dENsaWVudC5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKICNpZiBFTkFCTEUoSU5Q
VVRfU1BFRUNIKQogCkBAIC00NiwxMSArNDgsMTEgQEAgY2xhc3MgU3BlZWNoSW5wdXRDbGllbnRN
b2NrIDogcHVibGljIFNwZWVjaElucHV0Q2xpZW50IHsKIHB1YmxpYzoKICAgICBTcGVlY2hJbnB1
dENsaWVudE1vY2soKTsKIAotICAgIHZvaWQgc2V0UmVjb2duaXRpb25SZXN1bHQoY29uc3QgU3Ry
aW5nJiByZXN1bHQpOworICAgIHZvaWQgc2V0UmVjb2duaXRpb25SZXN1bHQoY29uc3QgU3RyaW5n
JiByZXN1bHQsIGNvbnN0IEF0b21pY1N0cmluZyYgbGFuZ3VhZ2UpOwogCiAgICAgLy8gU3BlZWNo
SW5wdXRDbGllbnQgbWV0aG9kcy4KICAgICB2b2lkIHNldExpc3RlbmVyKFNwZWVjaElucHV0TGlz
dGVuZXIqKTsKLSAgICBib29sIHN0YXJ0UmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCwgY29uc3Qg
SW50UmVjdCYgZWxlbWVudFJlY3QsIGNvbnN0IFN0cmluZyYgZ3JhbW1hcik7CisgICAgYm9vbCBz
dGFydFJlY29nbml0aW9uKGludCByZXF1ZXN0SWQsIGNvbnN0IEludFJlY3QmIGVsZW1lbnRSZWN0
LCBjb25zdCBBdG9taWNTdHJpbmcmIGxhbmd1YWdlLCBjb25zdCBTdHJpbmcmIGdyYW1tYXIpOwog
ICAgIHZvaWQgc3RvcFJlY29yZGluZyhpbnQpOwogICAgIHZvaWQgY2FuY2VsUmVjb2duaXRpb24o
aW50KTsKIApAQCAtNjEsNyArNjMsMTAgQEAgcHJpdmF0ZToKICAgICBUaW1lcjxTcGVlY2hJbnB1
dENsaWVudE1vY2s+IG1fdGltZXI7CiAgICAgU3BlZWNoSW5wdXRMaXN0ZW5lciogbV9saXN0ZW5l
cjsKICAgICBpbnQgbV9yZXF1ZXN0SWQ7Ci0gICAgU3RyaW5nIG1fcmVjb2duaXRpb25SZXN1bHQ7
CisKKyAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBtX3JlY29nbml0aW9uUmVzdWx0OworICAg
IEF0b21pY1N0cmluZyBtX2xhbmd1YWdlOworICAgIFN0cmluZyBtX3Jlc3VsdEZvckVtcHR5TGFu
Z3VhZ2U7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3JlbmRlcmluZy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwIGIvV2ViQ29yZS9yZW5kZXJp
bmcvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAppbmRleCA5MjQ4Mzk1NmJmYzhiM2NjNmI2
YmZkODUxMjE3MDJkMDQwOGM0OWY4Li5mOTY0MWY0Y2Y2OGJhYzYxMDNmM2JjYTFkYTE4NGEwZTQz
YTU3YmRkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Q29udHJvbElubmVyRWxl
bWVudHMuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50
cy5jcHAKQEAgLTIxLDkgKzIxLDkgQEAKICAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KLSAKKwogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlRleHRDb250cm9sSW5uZXJFbGVtZW50cy5oIgogCkBA
IC0xMDcsMTggKzEwNywxOCBAQCB2b2lkIFRleHRDb250cm9sSW5uZXJFbGVtZW50OjphdHRhY2hJ
bm5lckVsZW1lbnQoTm9kZSogcGFyZW50LCBQYXNzUmVmUHRyPFJlbmRlcgogICAgICAgICBzZXRS
ZW5kZXJlcihyZW5kZXJlcik7CiAgICAgICAgIHJlbmRlcmVyLT5zZXRTdHlsZShzdHlsZSk7CiAg
ICAgfQotICAgIAorCiAgICAgLy8gU2V0IHRoZXNlIGV4cGxpY2l0bHkgc2luY2UgdGhpcyBub3Jt
YWxseSBoYXBwZW5zIGR1cmluZyBhbiBhdHRhY2goKQogICAgIHNldEF0dGFjaGVkKCk7CiAgICAg
c2V0SW5Eb2N1bWVudCgpOwotICAgIAorCiAgICAgLy8gRm9yIGVsZW1lbnRzIHdpdGhvdXQgYSBz
aGFkb3cgcGFyZW50LCBhZGQgdGhlIG5vZGUgdG8gdGhlIERPTSBub3JtYWxseS4KICAgICBpZiAo
IW1fc2hhZG93UGFyZW50KSB7CiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGNvZGUgc2VlbXMgdmVy
eSB3cm9uZy4gIFdoeSBhcmUgd2UgbWFnaWNhbGx5IGFkZGluZyB8dGhpc3wgdG8gdGhlIERPTSBo
ZXJlPwogICAgICAgICAvLyAgICAgICAgV2Ugc2hvdWxkbid0IGJlIGNhbGxpbmcgcGFyc2VyIEFQ
SSBtZXRob2RzIG91dHNpZGUgb2YgdGhlIHBhcnNlciEKICAgICAgICAgcGFyZW50LT5kZXByZWNh
dGVkUGFyc2VyQWRkQ2hpbGQodGhpcyk7CiAgICAgfQotIAorCiAgICAgLy8gQWRkIHRoZSByZW5k
ZXJlciB0byB0aGUgcmVuZGVyIHRyZWUKICAgICBpZiAocmVuZGVyZXIpCiAgICAgICAgIHBhcmVu
dC0+cmVuZGVyZXIoKS0+YWRkQ2hpbGQocmVuZGVyZXIpOwpAQCAtMjA4LDcgKzIwOCw3IEBAIHZv
aWQgU2VhcmNoRmllbGRDYW5jZWxCdXR0b25FbGVtZW50OjpkZXRhY2goKQogewogICAgIGlmICht
X2NhcHR1cmluZykgewogICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQoKS0+ZnJh
bWUoKSkKLSAgICAgICAgICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+c2V0Q2FwdHVyaW5nTW91
c2VFdmVudHNOb2RlKDApOyAgICAgIAorICAgICAgICAgICAgZnJhbWUtPmV2ZW50SGFuZGxlcigp
LT5zZXRDYXB0dXJpbmdNb3VzZUV2ZW50c05vZGUoMCk7CiAgICAgfQogICAgIFRleHRDb250cm9s
SW5uZXJFbGVtZW50OjpkZXRhY2goKTsKIH0KQEAgLTI4MSw5ICsyODEsOSBAQCB2b2lkIFNwaW5C
dXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKICAgICBpZiAo
IWJveCkgewogICAgICAgICBpZiAoIWV2ZW50LT5kZWZhdWx0SGFuZGxlZCgpKQogICAgICAgICAg
ICAgSFRNTERpdkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOwotICAgICAgICBy
ZXR1cm47ICAgICAgICAKKyAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKKwogICAgIEhUTUxJ
bnB1dEVsZW1lbnQqIGlucHV0ID0gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KHNoYWRv
d0FuY2VzdG9yTm9kZSgpKTsKICAgICBpZiAoaW5wdXQtPmRpc2FibGVkKCkgfHwgaW5wdXQtPmlz
UmVhZE9ubHlGb3JtQ29udHJvbCgpKSB7CiAgICAgICAgIGlmICghZXZlbnQtPmRlZmF1bHRIYW5k
bGVkKCkpCkBAIC00MzEsNyArNDMxLDcgQEAgdm9pZCBJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxl
bWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiAgICAgaWYgKGV2ZW50LT50
eXBlKCkgPT0gZXZlbnROYW1lcygpLmNsaWNrRXZlbnQpIHsKICAgICAgICAgc3dpdGNoIChtX3N0
YXRlKSB7CiAgICAgICAgIGNhc2UgSWRsZToKLSAgICAgICAgICAgIGlmIChzcGVlY2hJbnB1dCgp
LT5zdGFydFJlY29nbml0aW9uKG1fbGlzdGVuZXJJZCwgaW5wdXQtPnJlbmRlcmVyKCktPmFic29s
dXRlQm91bmRpbmdCb3hSZWN0KCksIGlucHV0LT5nZXRBdHRyaWJ1dGUod2Via2l0Z3JhbW1hckF0
dHIpKSkKKyAgICAgICAgICAgIGlmIChzcGVlY2hJbnB1dCgpLT5zdGFydFJlY29nbml0aW9uKG1f
bGlzdGVuZXJJZCwgaW5wdXQtPnJlbmRlcmVyKCktPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCks
IGlucHV0LT5jb21wdXRlSW5oZXJpdGVkTGFuZ3VhZ2UoKSwgaW5wdXQtPmdldEF0dHJpYnV0ZSh3
ZWJraXRncmFtbWFyQXR0cikpKQogICAgICAgICAgICAgICAgIHNldFN0YXRlKFJlY29yZGluZyk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBSZWNvcmRpbmc6CkBAIC00ODksNyAr
NDg5LDcgQEAgdm9pZCBJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudDo6ZGV0YWNoKCkKIHsK
ICAgICBpZiAobV9jYXB0dXJpbmcpIHsKICAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRvY3Vt
ZW50KCktPmZyYW1lKCkpCi0gICAgICAgICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPnNldENh
cHR1cmluZ01vdXNlRXZlbnRzTm9kZSgwKTsgICAgICAKKyAgICAgICAgICAgIGZyYW1lLT5ldmVu
dEhhbmRsZXIoKS0+c2V0Q2FwdHVyaW5nTW91c2VFdmVudHNOb2RlKDApOwogICAgIH0KIAogICAg
IGlmIChtX3N0YXRlICE9IElkbGUpCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBlYmE2ZDU0YzI5ZWIxYzNlN2Jh
NWZjODYxYTY2ZjkzZTIxNTEyMDgyLi5hN2I4MjI2YWM0MDNkNzVmNDAyMWYxYmQ0MDk4Yjc2ZWQ4
OWRkNTIxIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNCBAQAorMjAxMC0xMC0yOCAgTGVhbmRy
byBHcmFjaWEgR2lsICA8bGVhbmRyb2dyYWNpYUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IEplcmVteSBPcmxvdy4KKworICAgICAgICBQYXRjaCB0aGUgY3VycmVudCBzcGVlY2gg
aW5wdXQgaW1wbGVtZW50YXRpb24gdG8gdXNlIHRoZSBuZWFyZXN0CisgICAgICAgIGxhbmd1YWdl
IHRhZy4gVGhlIGxhbmd1YWdlIGlzIG5vdyBwYXNzZWQgdG8gdGhlIHN0YXJ0UmVjb2duaXRpb24K
KyAgICAgICAgbWV0aG9kcyBzbyB0aGF0IGxhbmd1YWdlLXNwZWNpZmljIHJlY29nbml0aW9uIGNv
dWxkIGJlIHVzZWQuIEFsc28gYWRkZWQKKyAgICAgICAgYSBzZWNvbmQgcGFyYW1ldGVyIHRvIHNl
dE1vY2tTcGVlY2hJbnB1dFJlc3VsdCBmb3IgdGhlIGxhbmd1YWdlIHVzZWQgaW4KKyAgICAgICAg
c3BlZWNoIHJlY29nbml0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDcwODkKKworICAgICAgICBUaGlzIGlzIHRoZSAybmQgb2YgYSA0LXNpZGVk
IHBhdGNoIGluIENocm9taXVtIGFuZCBXZWJLaXQuIEZvciBtb3JlCisgICAgICAgIGRldGFpbHMg
c2VlIGh0dHA6Ly9jb2RlcmV2aWV3LmNocm9taXVtLm9yZy8zNjE1MDA1L3Nob3csCisgICAgICAg
IGh0dHA6Ly9jb2RlcmV2aWV3LmNocm9taXVtLm9yZy8zNTk1MDE4L3Nob3cgYW5kCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzQyMC4KKworICAgICAg
ICAqIHB1YmxpYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIuaDoKKyAgICAgICAgKFdlYktpdDo6
V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyOjpzdGFydFJlY29nbml0aW9uKToKKyAgICAgICAgKiBw
dWJsaWMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9jay5oOgorICAgICAgICAqIHNyYy9TcGVl
Y2hJbnB1dENsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hJbnB1dENsaWVu
dEltcGw6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaElucHV0Q2xpZW50SW1wbDo6
c3RhcnRSZWNvZ25pdGlvbik6CisgICAgICAgICogc3JjL1NwZWVjaElucHV0Q2xpZW50SW1wbC5o
OgorICAgICAgICAqIHNyYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsOjpzZXRNb2Nr
UmVjb2duaXRpb25SZXN1bHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hJbnB1dENvbnRy
b2xsZXJNb2NrSW1wbDo6c3RhcnRSZWNvZ25pdGlvbik6CisgICAgICAgICogc3JjL1dlYlNwZWVj
aElucHV0Q29udHJvbGxlck1vY2tJbXBsLmg6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKToKKyAgICAgICAg
KiBzcmMvV2ViVmlld0ltcGwuaDoKKwogMjAxMC0xMC0yOCAgU2F0aXNoIFNhbXBhdGggIDxzYXRp
c2hAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFN0ZXZlIEJsb2NrLgpkaWZm
IC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIu
aCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyLmgKaW5k
ZXggYTgwZGFmZGU0ZDE2NDNlYjQ4Mjg2Njg5ZDM3YjZjNmZkZDBhZjNhYi4uNmVkNTQ2ZmZiMmNk
MmYxMTUxMjE0NTIwNDcyN2E1YjE0ZDJmOTdiYSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIuaAorKysgYi9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYlNwZWVjaElucHV0Q29udHJvbGxlci5oCkBAIC0zNSw2ICszNSw3IEBACiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBXZWJTdHJpbmc7CiBzdHJ1Y3QgV2ViUmVjdDsKIGNs
YXNzIFdlYlN0cmluZzsKIApAQCAtNDQsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgLy8gU3RhcnRz
IHNwZWVjaCByZWNvZ25pdGlvbi4gU3BlZWNoIHdpbGwgZ2V0IHJlY29yZGVkIHVudGlsIHRoZSBl
bmRwb2ludGVyIGRldGVjdHMgc2lsZW5jZSwKICAgICAvLyBydW5zIHRvIHRoZSBsaW1pdCBvciBz
dG9wUmVjb3JkaW5nIGlzIGNhbGxlZC4gUHJvZ3Jlc3MgaW5kaWNhdGlvbnMgYW5kIHRoZSByZWNv
Z25pemVkCiAgICAgLy8gdGV4dCBhcmUgcmV0dXJuZWQgdmlhIHRoZSBsaXN0ZW5lciBpbnRlcmZh
Y2UuCi0gICAgdmlydHVhbCBib29sIHN0YXJ0UmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCwgY29u
c3QgV2ViUmVjdCYgZWxlbWVudFJlY3QsIGNvbnN0IFdlYlN0cmluZyYgZ3JhbW1hcikKKyAgICB2
aXJ0dWFsIGJvb2wgc3RhcnRSZWNvZ25pdGlvbihpbnQgcmVxdWVzdElkLCBjb25zdCBXZWJSZWN0
JiBlbGVtZW50UmVjdCwgY29uc3QgV2ViU3RyaW5nJiBsYW5ndWFnZSwgY29uc3QgV2ViU3RyaW5n
JiBncmFtbWFyKQogICAgIHsKICAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2suaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9jay5oCmluZGV4IDlhMjYyMzVmZjZkNWRjY2JiZTI0
NzI2MmFlNDRhM2FjNzM5N2MzZjQuLmI0YzUwYTA1ZGNmNWExMmY4NDFiZjliNjc1NWNkMjg4MTdm
OGMwOGIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoSW5wdXRD
b250cm9sbGVyTW9jay5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoSW5w
dXRDb250cm9sbGVyTW9jay5oCkBAIC00NCw2ICs0NCwxMCBAQCBwdWJsaWM6CiAgICAgICAgIFdl
YlNwZWVjaElucHV0TGlzdGVuZXIqIGxpc3RlbmVyKTsKICAgICB2aXJ0dWFsIH5XZWJTcGVlY2hJ
bnB1dENvbnRyb2xsZXJNb2NrKCkgeyB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgc2V0TW9ja1JlY29n
bml0aW9uUmVzdWx0KGNvbnN0IFdlYlN0cmluZyYgcmVzdWx0LCBjb25zdCBXZWJTdHJpbmcmIGxh
bmd1YWdlKSA9IDA7CisKKyAgICAvLyBGSVhNRTogdGhpcyBpcyBhIGZpeCBmb3IgYSB0d28tc2lk
ZWQgcGF0Y2guIERlbGV0ZSBhcyBzb29uIGFzIHRoZSBjaHJvbWl1bSBzaWRlIGlzIHBhdGNoZWQu
CisgICAgLy8gQ2hyb21pdW0gcGF0Y2ggbm90IHVwbG9hZGVkIHlldCwgYnV0IHdpbGwgZGVwZW5k
IG9uIGh0dHA6Ly9jb2RlcmV2aWV3LmNocm9taXVtLm9yZy8zNjE1MDA1L3Nob3cgcGF0Y2guCiAg
ICAgdmlydHVhbCB2b2lkIHNldE1vY2tSZWNvZ25pdGlvblJlc3VsdChjb25zdCBXZWJTdHJpbmcm
IHJlc3VsdCkgPSAwOwogfTsKIApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9TcGVl
Y2hJbnB1dENsaWVudEltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9TcGVlY2hJbnB1dENs
aWVudEltcGwuY3BwCmluZGV4IDY3MmRlNjM2OGIwMjhkOWJmZDgzNmRjMzU3MWM3ZmEyMGJmOTky
MGUuLmI1ZWQzODRiOTE2NzllNzQ3NDNjNmMwMmRmYWQ2ZDdjYjMwMjhlM2UgMTAwNjQ0Ci0tLSBh
L1dlYktpdC9jaHJvbWl1bS9zcmMvU3BlZWNoSW5wdXRDbGllbnRJbXBsLmNwcAorKysgYi9XZWJL
aXQvY2hyb21pdW0vc3JjL1NwZWVjaElucHV0Q2xpZW50SW1wbC5jcHAKQEAgLTMyLDE1ICszMiwy
MSBAQAogI2luY2x1ZGUgIlNwZWVjaElucHV0Q2xpZW50SW1wbC5oIgogCiAjaW5jbHVkZSAiUGxh
dGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJTcGVlY2hJbnB1dExpc3RlbmVyLmgiCiAjaW5jbHVk
ZSAiV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCiAj
aW5jbHVkZSAiV2ViVmlld0NsaWVudC5oIgotI2luY2x1ZGUgInBhZ2UvU3BlZWNoSW5wdXRMaXN0
ZW5lci5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKICNpZiBFTkFCTEUoSU5QVVRf
U1BFRUNIKQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorUGFzc093blB0cjxTcGVlY2hJbnB1dENs
aWVudEltcGw+IFNwZWVjaElucHV0Q2xpZW50SW1wbDo6Y3JlYXRlKFdlYlZpZXdDbGllbnQqIGNs
aWVudCkKK3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IFNwZWVjaElucHV0Q2xpZW50SW1wbChj
bGllbnQpKTsKK30KKwogU3BlZWNoSW5wdXRDbGllbnRJbXBsOjpTcGVlY2hJbnB1dENsaWVudElt
cGwoV2ViVmlld0NsaWVudCogd2ViX3ZpZXdfY2xpZW50KQogICAgIDogbV9jb250cm9sbGVyKHdl
Yl92aWV3X2NsaWVudCA/IHdlYl92aWV3X2NsaWVudC0+c3BlZWNoSW5wdXRDb250cm9sbGVyKHRo
aXMpIDogMCkKICAgICAsIG1fbGlzdGVuZXIoMCkKQEAgLTU2LDEwICs2MiwxMCBAQCB2b2lkIFNw
ZWVjaElucHV0Q2xpZW50SW1wbDo6c2V0TGlzdGVuZXIoV2ViQ29yZTo6U3BlZWNoSW5wdXRMaXN0
ZW5lciogbGlzdGVuZXIpCiAgICAgbV9saXN0ZW5lciA9IGxpc3RlbmVyOwogfQogCi1ib29sIFNw
ZWVjaElucHV0Q2xpZW50SW1wbDo6c3RhcnRSZWNvZ25pdGlvbihpbnQgcmVxdWVzdElkLCBjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JiBlbGVtZW50UmVjdCwgY29uc3QgV1RGOjpTdHJpbmcmIGdyYW1t
YXIpCitib29sIFNwZWVjaElucHV0Q2xpZW50SW1wbDo6c3RhcnRSZWNvZ25pdGlvbihpbnQgcmVx
dWVzdElkLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBlbGVtZW50UmVjdCwgY29uc3QgQXRvbWlj
U3RyaW5nJiBsYW5ndWFnZSwgY29uc3QgU3RyaW5nJiBncmFtbWFyKQogewogICAgIEFTU0VSVCht
X2xpc3RlbmVyKTsKLSAgICByZXR1cm4gbV9jb250cm9sbGVyLT5zdGFydFJlY29nbml0aW9uKHJl
cXVlc3RJZCwgZWxlbWVudFJlY3QsIGdyYW1tYXIpOworICAgIHJldHVybiBtX2NvbnRyb2xsZXIt
PnN0YXJ0UmVjb2duaXRpb24ocmVxdWVzdElkLCBlbGVtZW50UmVjdCwgbGFuZ3VhZ2UsIGdyYW1t
YXIpOwogfQogCiB2b2lkIFNwZWVjaElucHV0Q2xpZW50SW1wbDo6c3RvcFJlY29yZGluZyhpbnQg
cmVxdWVzdElkKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9TcGVlY2hJbnB1dENs
aWVudEltcGwuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvU3BlZWNoSW5wdXRDbGllbnRJbXBsLmgK
aW5kZXggZDJkYjQ1MzIwYmRmZWZjODNjZDViYmE2ZWZhMzZiZDE3OTg1OGFiNS4uNTIwODAzYTZh
NzdjZDhiNTMzODExZTQ3MGQ5MDg4N2UxZDJlNTUxZCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9t
aXVtL3NyYy9TcGVlY2hJbnB1dENsaWVudEltcGwuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3Jj
L1NwZWVjaElucHV0Q2xpZW50SW1wbC5oCkBAIC0zMyw4ICszMywxMSBAQAogCiAjaWYgRU5BQkxF
KElOUFVUX1NQRUVDSCkKIAorI2luY2x1ZGUgIlNwZWVjaElucHV0Q2xpZW50LmgiCiAjaW5jbHVk
ZSAiV2ViU3BlZWNoSW5wdXRMaXN0ZW5lci5oIgotI2luY2x1ZGUgInBhZ2UvU3BlZWNoSW5wdXRD
bGllbnQuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIu
aD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBTcGVlY2hJbnB1dExpc3RlbmVyOwpAQCAtNDksMTIgKzUyLDEyIEBAIGNsYXNzIFNwZWVj
aElucHV0Q2xpZW50SW1wbAogICAgIDogcHVibGljIFdlYkNvcmU6OlNwZWVjaElucHV0Q2xpZW50
LAogICAgICAgcHVibGljIFdlYlNwZWVjaElucHV0TGlzdGVuZXIgewogcHVibGljOgotICAgIFNw
ZWVjaElucHV0Q2xpZW50SW1wbChXZWJWaWV3Q2xpZW50Kik7CisgICAgc3RhdGljIFBhc3NPd25Q
dHI8U3BlZWNoSW5wdXRDbGllbnRJbXBsPiBjcmVhdGUoV2ViVmlld0NsaWVudCopOwogICAgIHZp
cnR1YWwgflNwZWVjaElucHV0Q2xpZW50SW1wbCgpOwogCiAgICAgLy8gU3BlZWNoSW5wdXRDbGll
bnQgbWV0aG9kcy4KICAgICB2b2lkIHNldExpc3RlbmVyKFdlYkNvcmU6OlNwZWVjaElucHV0TGlz
dGVuZXIqKTsKLSAgICBib29sIHN0YXJ0UmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCwgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYgZWxlbWVudFJlY3QsIGNvbnN0IFdURjo6U3RyaW5nJiBncmFtbWFy
KTsKKyAgICBib29sIHN0YXJ0UmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCwgY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYgZWxlbWVudFJlY3QsIGNvbnN0IEF0b21pY1N0cmluZyYgbGFuZ3VhZ2UsIGNv
bnN0IFN0cmluZyYgZ3JhbW1hcik7CiAgICAgdm9pZCBzdG9wUmVjb3JkaW5nKGludCk7CiAgICAg
dm9pZCBjYW5jZWxSZWNvZ25pdGlvbihpbnQpOwogCkBAIC02NCw2ICs2Nyw4IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGRpZENvbXBsZXRlUmVjb2duaXRpb24oaW50KTsKIAogcHJpdmF0ZToKKyAgICBT
cGVlY2hJbnB1dENsaWVudEltcGwoV2ViVmlld0NsaWVudCopOworCiAgICAgV2ViU3BlZWNoSW5w
dXRDb250cm9sbGVyKiBtX2NvbnRyb2xsZXI7IC8vIFRvIGNhbGwgaW50byB0aGUgZW1iZWRkZXIu
CiAgICAgV2ViQ29yZTo6U3BlZWNoSW5wdXRMaXN0ZW5lciogbV9saXN0ZW5lcjsKIH07CmRpZmYg
LS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJ
bXBsLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9j
a0ltcGwuY3BwCmluZGV4IDk4Y2M2Y2ZiOTg3NGFiMDAyODdlMmJmMjhlZjBkNzVkM2Y4YmQwMGIu
LjNiNTYzMzhlNzA0ZGMwMjgzZTZhNzBiNzRlZTQ0MmZjMmFiYzE0ZDAgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGwuY3BwCisr
KyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGwu
Y3BwCkBAIC01Nyw3ICs1NywxMiBAQCBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6
fldlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsKCkKIAogdm9pZCBXZWJTcGVlY2hJbnB1
dENvbnRyb2xsZXJNb2NrSW1wbDo6c2V0TW9ja1JlY29nbml0aW9uUmVzdWx0KGNvbnN0IFdlYlN0
cmluZyYgcmVzdWx0KQogewotICAgIG1fd2ViY29yZU1vY2stPnNldFJlY29nbml0aW9uUmVzdWx0
KHJlc3VsdCk7CisgICAgbV93ZWJjb3JlTW9jay0+c2V0UmVjb2duaXRpb25SZXN1bHQocmVzdWx0
LCBXZWJTdHJpbmc6OmZyb21VVEY4KCIiKSk7Cit9CisKK3ZvaWQgV2ViU3BlZWNoSW5wdXRDb250
cm9sbGVyTW9ja0ltcGw6OnNldE1vY2tSZWNvZ25pdGlvblJlc3VsdChjb25zdCBXZWJTdHJpbmcm
IHJlc3VsdCwgY29uc3QgV2ViU3RyaW5nICZsYW5ndWFnZSkKK3sKKyAgICBtX3dlYmNvcmVNb2Nr
LT5zZXRSZWNvZ25pdGlvblJlc3VsdChyZXN1bHQsIGxhbmd1YWdlKTsKIH0KIAogdm9pZCBXZWJT
cGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6ZGlkQ29tcGxldGVSZWNvcmRpbmcoaW50IHJl
cXVlc3RJZCkKQEAgLTc1LDkgKzgwLDkgQEAgdm9pZCBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJN
b2NrSW1wbDo6c2V0UmVjb2duaXRpb25SZXN1bHQoaW50IHJlcXVlc3RJZCwgY29uc3QKICAgICBt
X2xpc3RlbmVyLT5zZXRSZWNvZ25pdGlvblJlc3VsdChyZXF1ZXN0SWQsIHJlc3VsdCk7CiB9CiAK
LWJvb2wgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OnN0YXJ0UmVjb2duaXRpb24o
aW50IHJlcXVlc3RJZCwgY29uc3QgV2ViUmVjdCYgZWxlbWVudFJlY3QsIGNvbnN0IFdlYlN0cmlu
ZyYgZ3JhbW1hcikKK2Jvb2wgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OnN0YXJ0
UmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCwgY29uc3QgV2ViUmVjdCYgZWxlbWVudFJlY3QsIGNv
bnN0IFdlYlN0cmluZyYgbGFuZ3VhZ2UsIGNvbnN0IFdlYlN0cmluZyYgZ3JhbW1hcikKIHsKLSAg
ICByZXR1cm4gbV93ZWJjb3JlTW9jay0+c3RhcnRSZWNvZ25pdGlvbihyZXF1ZXN0SWQsIGVsZW1l
bnRSZWN0LCBncmFtbWFyKTsKKyAgICByZXR1cm4gbV93ZWJjb3JlTW9jay0+c3RhcnRSZWNvZ25p
dGlvbihyZXF1ZXN0SWQsIGVsZW1lbnRSZWN0LCBsYW5ndWFnZSwgZ3JhbW1hcik7CiB9CiAKIHZv
aWQgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OmNhbmNlbFJlY29nbml0aW9uKGlu
dCByZXF1ZXN0SWQpCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNwZWVjaElu
cHV0Q29udHJvbGxlck1vY2tJbXBsLmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNwZWVjaElu
cHV0Q29udHJvbGxlck1vY2tJbXBsLmgKaW5kZXggMTQ2NzkzYWM2NDc5ZWY2MGUxMDY3NmNhMzlk
ZWNhNDk5ZmNhNzBmNi4uYzk4ZjkyYTJjMWFlOTEwM2U4ZmI5OTdkYjM5OTdhMjViMjQyZmVlZCAx
MDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJN
b2NrSW1wbC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3BlZWNoSW5wdXRDb250cm9s
bGVyTW9ja0ltcGwuaApAQCAtNTcsMTEgKzU3LDE1IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFJl
Y29nbml0aW9uUmVzdWx0KGludCByZXF1ZXN0SWQsIGNvbnN0IFdlYkNvcmU6OlNwZWVjaElucHV0
UmVzdWx0QXJyYXkmIHJlc3VsdCk7CiAKICAgICAvLyBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIg
bWV0aG9kcy4KLSAgICBib29sIHN0YXJ0UmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCwgY29uc3Qg
V2ViUmVjdCYgZWxlbWVudFJlY3QsIGNvbnN0IFdlYlN0cmluZyYgZ3JhbW1hcik7CisgICAgYm9v
bCBzdGFydFJlY29nbml0aW9uKGludCByZXF1ZXN0SWQsIGNvbnN0IFdlYlJlY3QmIGVsZW1lbnRS
ZWN0LCBjb25zdCBXZWJTdHJpbmcmIGxhbmd1YWdlLCBjb25zdCBXZWJTdHJpbmcmIGdyYW1tYXIp
OwogICAgIHZvaWQgY2FuY2VsUmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCk7CiAgICAgdm9pZCBz
dG9wUmVjb3JkaW5nKGludCByZXF1ZXN0SWQpOwogCiAgICAgLy8gV2ViU3BlZWNoSW5wdXRDb250
cm9sbGVyTW9jayBtZXRob2RzLgorICAgIHZvaWQgc2V0TW9ja1JlY29nbml0aW9uUmVzdWx0KGNv
bnN0IFdlYlN0cmluZyYgcmVzdWx0LCBjb25zdCBXZWJTdHJpbmcmIGxhbmd1YWdlKTsKKworICAg
IC8vIEZJWE1FOiB0aGlzIGlzIGEgZml4IGZvciBhIHR3by1zaWRlZCBwYXRjaC4gRGVsZXRlIGFz
IHNvb24gYXMgdGhlIGNocm9taXVtIHNpZGUgaXMgcGF0Y2hlZC4KKyAgICAvLyBDaHJvbWl1bSBw
YXRjaCBub3QgdXBsb2FkZWQgeWV0LCBidXQgd2lsbCBkZXBlbmQgb24gaHR0cDovL2NvZGVyZXZp
ZXcuY2hyb21pdW0ub3JnLzM2MTUwMDUvc2hvdyBwYXRjaC4KICAgICB2b2lkIHNldE1vY2tSZWNv
Z25pdGlvblJlc3VsdChjb25zdCBXZWJTdHJpbmcmIHJlc3VsdCk7CiAKIHByaXZhdGU6CkBAIC03
Miw0ICs3NiwzIEBAIHByaXZhdGU6CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8v
IFdlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsX2gKLQpkaWZmIC0tZ2l0IGEvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZp
ZXdJbXBsLmNwcAppbmRleCA5ZmFlZGFjZDAzNWUxNDc1ZDBiMjA3NjMyNzk5MTFiZmRmNDZmZjRj
Li42NzgyYTIzN2I2ZTAxNzk2ZmVhZThmY2MzMjA0MGZlM2ZjNDMzMDc2IDEwMDY0NAotLS0gYS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtODgsNiArODgsNyBAQAogI2luY2x1ZGUgIlNlY3VyaXR5
T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2VsZWN0aW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNl
dHRpbmdzLmgiCisjaW5jbHVkZSAiU3BlZWNoSW5wdXRDbGllbnRJbXBsLmgiCiAjaW5jbHVkZSAi
VGltZXIuaCIKICNpbmNsdWRlICJUeXBpbmdDb21tYW5kLmgiCiAjaW5jbHVkZSAiVXNlckdlc3R1
cmVJbmRpY2F0b3IuaCIKQEAgLTI4Miw3ICsyODMsNyBAQCBXZWJWaWV3SW1wbDo6V2ViVmlld0lt
cGwoV2ViVmlld0NsaWVudCogY2xpZW50LCBXZWJEZXZUb29sc0FnZW50Q2xpZW50KiBkZXZUb29s
cwogICAgICwgbV9jb21wb3NpdG9yQ3JlYXRpb25GYWlsZWQoZmFsc2UpCiAjZW5kaWYKICNpZiBF
TkFCTEUoSU5QVVRfU1BFRUNIKQotICAgICwgbV9zcGVlY2hJbnB1dENsaWVudChjbGllbnQpCisg
ICAgLCBtX3NwZWVjaElucHV0Q2xpZW50KFNwZWVjaElucHV0Q2xpZW50SW1wbDo6Y3JlYXRlKGNs
aWVudCkpCiAjZW5kaWYKICAgICAsIG1fZGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eShuZXcg
RGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eShjbGllbnQgPyBjbGllbnQtPmRldmljZU9yaWVu
dGF0aW9uQ2xpZW50KCkgOiAwKSkKIHsKQEAgLTMwNSw3ICszMDYsNyBAQCBXZWJWaWV3SW1wbDo6
V2ViVmlld0ltcGwoV2ViVmlld0NsaWVudCogY2xpZW50LCBXZWJEZXZUb29sc0FnZW50Q2xpZW50
KiBkZXZUb29scwogICAgIHBhZ2VDbGllbnRzLmRyYWdDbGllbnQgPSAmbV9kcmFnQ2xpZW50SW1w
bDsKICAgICBwYWdlQ2xpZW50cy5pbnNwZWN0b3JDbGllbnQgPSAmbV9pbnNwZWN0b3JDbGllbnRJ
bXBsOwogI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCi0gICAgcGFnZUNsaWVudHMuc3BlZWNoSW5w
dXRDbGllbnQgPSAmbV9zcGVlY2hJbnB1dENsaWVudDsKKyAgICBwYWdlQ2xpZW50cy5zcGVlY2hJ
bnB1dENsaWVudCA9IG1fc3BlZWNoSW5wdXRDbGllbnQuZ2V0KCk7CiAjZW5kaWYKICAgICBwYWdl
Q2xpZW50cy5kZXZpY2VPcmllbnRhdGlvbkNsaWVudCA9IG1fZGV2aWNlT3JpZW50YXRpb25DbGll
bnRQcm94eS5nZXQoKTsKIApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3
SW1wbC5oIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCmluZGV4IGMzZmQzOWVl
MTUxNzcxZWU3ODEzMzgyMDg2MDNlNzVmZGYwNWUxZGIuLjAzODg3NzA3YTg3ZDQ5ZjNmMzA5ZmQz
ZGY4NzY3ODM0MjNhNTBkYTEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmll
d0ltcGwuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKQEAgLTQ5LDcg
KzQ5LDYgQEAKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNo
cm9taXVtLmgiCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uUHJlc2VudGVySW1wbC5oIgotI2luY2x1
ZGUgIlNwZWVjaElucHV0Q2xpZW50SW1wbC5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCkBAIC03NCw2ICs3Myw3IEBAIGNsYXNzIEF1dG9G
aWxsUG9wdXBNZW51Q2xpZW50OwogY2xhc3MgQ29udGV4dE1lbnVDbGllbnRJbXBsOwogY2xhc3Mg
RGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eTsKIGNsYXNzIERyYWdTY3JvbGxUaW1lcjsKK2Ns
YXNzIFNwZWVjaElucHV0Q2xpZW50SW1wbDsKIGNsYXNzIFdlYkFjY2Vzc2liaWxpdHlPYmplY3Q7
CiBjbGFzcyBXZWJEZXZUb29sc0FnZW50Q2xpZW50OwogY2xhc3MgV2ViRGV2VG9vbHNBZ2VudFBy
aXZhdGU7CkBAIC01NDgsNyArNTQ4LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3QgV2Vi
SW5wdXRFdmVudCogbV9jdXJyZW50SW5wdXRFdmVudDsKIAogI2lmIEVOQUJMRShJTlBVVF9TUEVF
Q0gpCi0gICAgU3BlZWNoSW5wdXRDbGllbnRJbXBsIG1fc3BlZWNoSW5wdXRDbGllbnQ7CisgICAg
T3duUHRyPFNwZWVjaElucHV0Q2xpZW50SW1wbD4gbV9zcGVlY2hJbnB1dENsaWVudDsKICNlbmRp
ZgogICAgIC8vIElmIHdlIGF0dGVtcHQgdG8gZmV0Y2ggdGhlIG9uLXNjcmVlbiBHcmFwaGljc0Nv
bnRleHQzRCBiZWZvcmUKICAgICAvLyB0aGUgY29tcG9zaXRvciBoYXMgYmVlbiB0dXJuZWQgb24s
IHdlIG5lZWQgdG8gaW5zdGFudGlhdGUgaXQKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5n
ZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwppbmRleCBlYTY0MDA1YjkyNzY4Zjg4OGRhNzhi
MTMzMDE0YzE5YTAwZWQxYTdlLi4wZWEwY2Y5MmIxMGJmYTNkZjE3NjRhZmI2ODQxZmVlYzVhZDJm
ZDUxIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTAtMTAtMjggIExlYW5kcm8gR3JhY2lhIEdp
bCAgPGxlYW5kcm9ncmFjaWFAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBKZXJl
bXkgT3Jsb3cuCisKKyAgICAgICAgQWRkZWQgYSBzZWNvbmQgcGFyYW1ldGVyIHRvIHNldE1vY2tT
cGVlY2hJbnB1dFJlc3VsdCBmb3IKKyAgICAgICAgdGhlIGxhbmd1YWdlIHVzZWQgaW4gc3BlZWNo
IGlucHV0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDcwODkKKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgKHNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdENhbGxiYWNrKToKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKExh
eW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQpOgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHA6CisgICAgICAg
IChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KToKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW06CisgICAg
ICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KToKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcDoKKyAg
ICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQpOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaDoKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwOgor
ICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdCk6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHA6
CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja1NwZWVjaElucHV0UmVzdWx0
KToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpwYWdlU2l6ZUFuZE1hcmdpbnNJblBp
eGVscyk6CisKIDIwMTAtMTAtMjggIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIFNraXAgbnBuLWludmFsaWRhdGUtcmVjdC1pbnZhbGlkYXRlcy13aW5kb3cuaHRtbCBv
biBoZWFkbGVzcyBYUApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5
b3V0VGVzdENvbnRyb2xsZXIuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0
VGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IDgzNjU1YmRkNjUwNjJlOTUwMmM3MzJlODEzYjE1ZGUz
MWUyOTI2Y2IuLjk2MTkzODk3MmQ4ZjIzYjhjMzhiNjQ4NGRiNWEzMTllZGI1ZjdkYWMgMTAwNjQ0
Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNw
cAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5j
cHAKQEAgLTEwNzgsMTQgKzEwNzgsMTcgQEAgc3RhdGljIEpTVmFsdWVSZWYgc2V0TW9ja0dlb2xv
Y2F0aW9uRXJyb3JDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3QKIAogc3Rh
dGljIEpTVmFsdWVSZWYgc2V0TW9ja1NwZWVjaElucHV0UmVzdWx0Q2FsbGJhY2soSlNDb250ZXh0
UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0
LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNW
YWx1ZVJlZiogZXhjZXB0aW9uKQogewotICAgIGlmIChhcmd1bWVudENvdW50IDwgMSkKKyAgICBp
ZiAoYXJndW1lbnRDb3VudCA8IDIpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5l
ZChjb250ZXh0KTsKIAogICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiByZXN1bHQoQWRvcHQs
IEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgYXJndW1lbnRzWzBdLCBleGNlcHRpb24pKTsK
ICAgICBBU1NFUlQoISpleGNlcHRpb24pOwogCisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+
IGxhbmd1YWdlKEFkb3B0LCBKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIGFyZ3VtZW50c1sx
XSwgZXhjZXB0aW9uKSk7CisgICAgQVNTRVJUKCEqZXhjZXB0aW9uKTsKKwogICAgIExheW91dFRl
c3RDb250cm9sbGVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xs
ZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOwotICAgIGNvbnRyb2xsZXItPnNl
dE1vY2tTcGVlY2hJbnB1dFJlc3VsdChyZXN1bHQuZ2V0KCkpOworICAgIGNvbnRyb2xsZXItPnNl
dE1vY2tTcGVlY2hJbnB1dFJlc3VsdChyZXN1bHQuZ2V0KCksIGxhbmd1YWdlLmdldCgpKTsKIAog
ICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KZGlmZiAtLWdpdCBh
L1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmggYi9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCmluZGV4IDI3NTE4
YjcwODA4ODY4ZGU0Y2E3MjYxMzRjNDYyYTllMDk3NGZlZTAuLmI2MTg2MGJjNjQ2NTI1ZmM3MDdk
MTQ2MjA3MDQ2NDBiNWRjYzgzYzQgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaApAQCAtOTQsNyArOTQsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZXRNb2NrRGV2aWNlT3JpZW50YXRpb24oYm9vbCBjYW5Qcm92aWRlQWxwaGEsIGRvdWJs
ZSBhbHBoYSwgYm9vbCBjYW5Qcm92aWRlQmV0YSwgZG91YmxlIGJldGEsIGJvb2wgY2FuUHJvdmlk
ZUdhbW1hLCBkb3VibGUgZ2FtbWEpOwogICAgIHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9uRXJyb3Io
aW50IGNvZGUsIEpTU3RyaW5nUmVmIG1lc3NhZ2UpOwogICAgIHZvaWQgc2V0TW9ja0dlb2xvY2F0
aW9uUG9zaXRpb24oZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3VibGUgYWNj
dXJhY3kpOwotICAgIHZvaWQgc2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KEpTU3RyaW5nUmVmIHJl
c3VsdCk7CisgICAgdm9pZCBzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoSlNTdHJpbmdSZWYgcmVz
dWx0LCBKU1N0cmluZ1JlZiBsYW5ndWFnZSk7CiAgICAgdm9pZCBzZXRQZXJzaXN0ZW50VXNlclN0
eWxlU2hlZXRMb2NhdGlvbihKU1N0cmluZ1JlZiBwYXRoKTsKICAgICB2b2lkIHNldFBsdWdpbnNF
bmFibGVkKGJvb2wgZmxhZyk7CiAgICAgdm9pZCBzZXRQb3B1cEJsb2NraW5nRW5hYmxlZChib29s
IGZsYWcpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
TGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IDFhNjE4N2ViNGVmZDZkNThlNTc1
NTU4Y2MxODA5ODE3MGI0Njg0N2QuLmQ3MTNiMDQ0MDg1OWZlZDllOTZmOTIyNjEwOTJlZDhkYjA1
ZGVmYTkgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xh
eW91dFRlc3RDb250cm9sbGVyLmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKQEAgLTE1MzQsMTAgKzE1MzQsMTAgQEAg
dm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6YWJvcnRNb2RhbChjb25zdCBDcHBBcmd1bWVudExp
c3QmIGFyZ3VtZW50cywgQ3BwVmFyaWEKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1v
Y2tTcGVlY2hJbnB1dFJlc3VsdChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3Bw
VmFyaWFudCogcmVzdWx0KQogewogICAgIHJlc3VsdC0+c2V0TnVsbCgpOwotICAgIGlmIChhcmd1
bWVudHMuc2l6ZSgpIDwgMSB8fCAhYXJndW1lbnRzWzBdLmlzU3RyaW5nKCkpCisgICAgaWYgKGFy
Z3VtZW50cy5zaXplKCkgPCAyIHx8ICFhcmd1bWVudHNbMF0uaXNTdHJpbmcoKSB8fCAhYXJndW1l
bnRzWzFdLmlzU3RyaW5nKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fc3BlZWNoSW5wdXRD
b250cm9sbGVyTW9jay0+c2V0TW9ja1JlY29nbml0aW9uUmVzdWx0KGNwcFZhcmlhbnRUb1dlYlN0
cmluZyhhcmd1bWVudHNbMF0pKTsKKyAgICBtX3NwZWVjaElucHV0Q29udHJvbGxlck1vY2stPnNl
dE1vY2tSZWNvZ25pdGlvblJlc3VsdChjcHBWYXJpYW50VG9XZWJTdHJpbmcoYXJndW1lbnRzWzBd
KSwgY3BwVmFyaWFudFRvV2ViU3RyaW5nKGFyZ3VtZW50c1sxXSkpOwogfQogCiBXZWJLaXQ6Oldl
YlNwZWVjaElucHV0Q29udHJvbGxlciogTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNwZWVjaElucHV0
Q29udHJvbGxlcihXZWJLaXQ6OldlYlNwZWVjaElucHV0TGlzdGVuZXIqIGxpc3RlbmVyKQpkaWZm
IC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9s
bGVyR3RrLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29u
dHJvbGxlckd0ay5jcHAKaW5kZXggMDRkOTdlYmUxYzI3YWNhNTUyNGIyOTE2YmI1ZjZiMDQwMmE1
MmJjMy4uNjg4YjNmODM4NDVmNGZiNTU5YWVhNjMwNTRmYzAzYjQzNDc3YjBmNSAxMDA2NDQKLS0t
IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3Rr
LmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRy
b2xsZXJHdGsuY3BwCkBAIC01MDEsNyArNTAxLDcgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxl
cjo6c2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKGJvb2wgYWxsb3cpCiAgICAgc2V0R2VvbG9jYXRp
b25QZXJtaXNzaW9uQ29tbW9uKGFsbG93KTsKIH0KIAotdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxl
cjo6c2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KEpTU3RyaW5nUmVmIHJlc3VsdCkKK3ZvaWQgTGF5
b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdChKU1N0cmluZ1JlZiBy
ZXN1bHQsIEpTU3RyaW5nUmVmIGxhbmd1YWdlKQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQg
Zm9yIHNwZWVjaCBpbnB1dCBsYXlvdXQgdGVzdHMuCiAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTQ4NS4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbSBiL1dlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQppbmRleCBj
NWQ1YTkwNjk1OTliYTRiY2ZjMmFjYTMxMWM3YTNhNzY1YWI1ZTFkLi4xNTBiNmY5Y2QzYTViY2Y0
OTAxMDc3MThkZmZmOTMzZDVjOTRjNGQxIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KKysrIGIvV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCkBAIC0zNzEsNyAr
MzcxLDcgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0R2VvbG9jYXRpb25QZXJtaXNz
aW9uKGJvb2wgYWxsb3cpCiAgICAgW1tbbWFpbkZyYW1lIHdlYlZpZXddIFVJRGVsZWdhdGVdIGRp
ZFNldE1vY2tHZW9sb2NhdGlvblBlcm1pc3Npb25dOwogfQogCi12b2lkIExheW91dFRlc3RDb250
cm9sbGVyOjpzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoSlNTdHJpbmdSZWYgcmVzdWx0KQordm9p
ZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KEpTU3RyaW5n
UmVmIHJlc3VsdCwgSlNTdHJpbmdSZWYgbGFuZ3VhZ2UpCiB7CiAgICAgLy8gRklYTUU6IEltcGxl
bWVudCBmb3Igc3BlZWNoIGlucHV0IGxheW91dCB0ZXN0cy4KICAgICAvLyBTZWUgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NDg1LgpkaWZmIC0tZ2l0IGEvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAgYi9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcAppbmRl
eCBiMmMzODA3ZDA2ZmU1YTZjOGViMzEzNGFiZDhiYjAzY2JmYjFiNWJjLi5mOTllYzRmNzJkYjQz
YzM5NjZiMDczODAxMzFlZjgzZjkyZDBhZTQxIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcAorKysgYi9XZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcApAQCAtNzY1LDcg
Kzc2NSw3IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tHZW9sb2NhdGlvblBv
c2l0aW9uKGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvCiAgICAgRHVtcFJlbmRlclRyZWVTdXBw
b3J0UXQ6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKGxhdGl0dWRlLCBsb25naXR1ZGUsIGFj
Y3VyYWN5KTsKIH0KIAotdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja1NwZWVjaElu
cHV0UmVzdWx0KGNvbnN0IFFTdHJpbmcmIHJlc3VsdCkKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdChjb25zdCBRU3RyaW5nJiByZXN1bHQsIGNvbnN0
IFFTdHJpbmcmIGxhbmd1YWdlKQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIHNwZWVj
aCBpbnB1dCBsYXlvdXQgdGVzdHMuCiAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0zOTQ4NS4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaCBiL1dlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaAppbmRleCA2OGViZTFkODU5OTJhZTY0
ZjllMDllNjQyZjkxMjBlNmM0OTY3ZmM4Li4xMWQ3MmU0NWNmNGVhMzA3NTljNzZlZTg2YjAwZWIw
MTZjZWM0NmE5IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlv
dXRUZXN0Q29udHJvbGxlclF0LmgKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQv
TGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oCkBAIC0yMTYsNyArMjE2LDcgQEAgcHVibGljIHNsb3Rz
OgogICAgIGJvb2wgaXNHZW9sb2NhdGlvblBlcm1pc3Npb25TZXQoKSBjb25zdCB7IHJldHVybiBt
X2lzR2VvbG9jYXRpb25QZXJtaXNzaW9uU2V0OyB9CiAgICAgYm9vbCBnZW9sb2NhdGlvblBlcm1p
c3Npb24oKSBjb25zdCB7IHJldHVybiBtX2dlb2xvY2F0aW9uUGVybWlzc2lvbjsgfQogCi0gICAg
dm9pZCBzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoY29uc3QgUVN0cmluZyYgcmVzdWx0KTsKKyAg
ICB2b2lkIHNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdChjb25zdCBRU3RyaW5nJiByZXN1bHQsIGNv
bnN0IFFTdHJpbmcmIGxhbmd1YWdlKTsKIAogICAgIC8vIEVtcHR5IHN0dWIgbWV0aG9kIHRvIGtl
ZXAgcGFyaXR5IHdpdGggb2JqZWN0IG1vZGVsIGV4cG9zZWQgYnkgZ2xvYmFsIExheW91dFRlc3RD
b250cm9sbGVyLgogICAgIHZvaWQgYWJvcnRNb2RhbCgpIHt9CmRpZmYgLS1naXQgYS9XZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwIGIvV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcApp
bmRleCA5ZThlZDFlNjk1N2Q3ZjdjYTRmZWFkOTFkODdiOWI1NmZiNDIxNDU5Li5kN2M0MWUwYTZi
ZjU3ZWY0ZDA5OTE1ZTgzYTQ5MjEyNWNkYTU4Y2Q4IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCisrKyBiL1dlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAKQEAg
LTQwNSw3ICs0MDUsNyBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRHZW9sb2NhdGlv
blBlcm1pc3Npb24oYm9vbCBhbGxvdykKICAgICBzZXRHZW9sb2NhdGlvblBlcm1pc3Npb25Db21t
b24oYWxsb3cpOwogfQogCi12b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrU3BlZWNo
SW5wdXRSZXN1bHQoSlNTdHJpbmdSZWYgcmVzdWx0KQordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxl
cjo6c2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KEpTU3RyaW5nUmVmIHJlc3VsdCwgSlNTdHJpbmdS
ZWYgbGFuZ3VhZ2UpCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3Igc3BlZWNoIGlucHV0
IGxheW91dCB0ZXN0cy4KICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTM5NDg1LgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
d3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcAppbmRleCBlZWZjNTg3ODFlMGExZWFiY2Qw
ZmQ4MTM4OTMyY2M0M2M0ZDc4NDdmLi4zMjYxNGMxMTMzZGRmOGFhZDc3ZWZiMGQxZDRhNmIzMGU0
MDExMDhiIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRU
ZXN0Q29udHJvbGxlcld4LmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93eC9M
YXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcApAQCAtMzIwLDcgKzMyMCw3IEBAIHZvaWQgTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbihib29sIGFsbG93KQogICAg
IHNldEdlb2xvY2F0aW9uUGVybWlzc2lvbkNvbW1vbihhbGxvdyk7CiB9CiAKLXZvaWQgTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdChKU1N0cmluZ1JlZiByZXN1
bHQpCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQo
SlNTdHJpbmdSZWYgcmVzdWx0LCBKU1N0cmluZ1JlZiBsYW5ndWFnZSkKIHsKICAgICAvLyBGSVhN
RTogSW1wbGVtZW50IGZvciBzcGVlY2ggaW5wdXQgbGF5b3V0IHRlc3RzLgogICAgIC8vIFNlZSBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk0ODUuCkBAIC01MjgsNCAr
NTI4LDMgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IExheW91dFRlc3RDb250cm9sbGVyOjpw
YWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVscyhpbnQgcGEKICAgICAvLyBGSVhNRTogSW1wbGVtZW50
CiAgICAgcmV0dXJuIDA7CiB9Ci0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72316</attachid>
            <date>2010-10-29 04:49:04 -0700</date>
            <delta_ts>2010-10-29 05:00:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47089-20101029124902.patch</filename>
            <type>text/plain</type>
            <size>40623</size>
            <attacher name="Leandro Graciá Gil">leandrogracia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1YTg2YTc4ZDUwMTg1MDBhYjRhMThkZjEyMjFhMDI5MzYzOWI2ZTc2Li42MWU5NTkz
ODQyN2Q5M2I2Zjc2MDNjZWUwYTYxM2U3NGY5Mjc2NzY4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAK
KzIwMTAtMTAtMjkgIExlYW5kcm8gR3JhY2lhIEdpbCAgPGxlYW5kcm9ncmFjaWFAZ29vZ2xlLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBKZXJlbXkgT3Jsb3cuCisKKyAgICAgICAgQWRkZWQg
YSBsYXlvdXQgdGVzdCBmb3IgdGhlIGxhbmd1YWdlIHRhZyBpbiBzcGVlY2ggaW5wdXQuIFVwZGF0
ZWQKKyAgICAgICAgdGhlIHNwZWVjaCBidXR0b24gdGVzdHMgdG8gaW5jbHVkZSB0aGUgbmV3IGxh
bmd1YWdlIHBhcmFtZXRlciBpbiB0aGUKKyAgICAgICAgbW9jayByZXN1bHQuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzA4OQorCisgICAgICAgICog
ZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1sYW5ndWFnZS10YWctZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L3NwZWVjaC9pbnB1dC10ZXh0LWxhbmd1YWdlLXRhZy5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L3NwZWVjaC9pbnB1dC10ZXh0LXNwZWVjaGJ1dHRvbi5odG1sOgor
ICAgICAgICAqIGZhc3Qvc3BlZWNoL3NwZWVjaC1idXR0b24taWdub3JlLWdlbmVyYXRlZC1ldmVu
dHMuaHRtbDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50
eHQ6CisKIDIwMTAtMTAtMjkgIE5pa29sYXMgWmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5j
b20+CiAKICAgICAgICAgTm90IHJldmlld2VkLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9zcGVlY2gvaW5wdXQtdGV4dC1sYW5ndWFnZS10YWctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1sYW5ndWFnZS10YWctZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmU2MDk2ZDA4Y2ZhZTZkODY4MTFjNmZkYTY3NDg4NDAyNGMwNDBhYjcKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9pbnB1dC10ZXh0LWxhbmd1YWdlLXRh
Zy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMiBAQAorVGVzdHMgZm9yIGxhbmd1YWdlLXNwZWNp
ZmljIHJlc3VsdHMgYW5kIGxhbmd1YWdlIGluaGVyaXRhbmNlIGluIHNwZWVjaCBidXR0b25zLgor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgic3BlZWNoSW5wdXROb25lIikudmFsdWUgaXMgImVycm9yOiBubyByZXN1bHQgZm91bmQg
Zm9yIGxhbmd1YWdlICcnIgorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3BlZWNoSW5w
dXRFbGVtZW50IikudmFsdWUgaXMgIlBpY3R1cmVzIG9mIHRoZSBtb29uIgorUEFTUyBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgic3BlZWNoSW5wdXRJbmhlcml0ZWQiKS52YWx1ZSBpcyAi5pyI44Gu
5YaZ55yfIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisgCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9pbnB1dC10ZXh0LWxhbmd1
YWdlLXRhZy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1sYW5ndWFn
ZS10YWcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNDUyNjYxZmIwODY3ZjI1Y2Y1MjlhNjRmMWVjNzlkNTJm
YjY5ZTliCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvaW5wdXQt
dGV4dC1sYW5ndWFnZS10YWcuaHRtbApAQCAtMCwwICsxLDU2IEBACis8IURPQ1RZUEUgSFRNTCBQ
VUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hh
cnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlv
biI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2
YXNjcmlwdCI+CitkZXNjcmlwdGlvbignVGVzdHMgZm9yIGxhbmd1YWdlLXNwZWNpZmljIHJlc3Vs
dHMgYW5kIGxhbmd1YWdlIGluaGVyaXRhbmNlIGluIHNwZWVjaCBidXR0b25zLicpOworCisvLyBO
b3RlOiB0ZXN0IGNhc2VzIGFyZSBzZXF1ZW50aWFsIHRvIGVuc3VyZSB0aGF0IG5vIG5ldyByZWNv
Z25pdGlvbiBzdGFydHMgd2hlbiBhbm90aGVyIHJlY29nbml0aW9uIHJlY29yZGluZyBpcyBhY3Rp
dmUuCitmdW5jdGlvbiBvbkNoYW5nZU5vbmUoKSB7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCdkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3BlZWNoSW5wdXROb25lIikudmFsdWUnLCAnZXJy
b3I6IG5vIHJlc3VsdCBmb3VuZCBmb3IgbGFuZ3VhZ2UgXCdcJycpOworICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7IHNwZWVjaEJ1dHRvbkNsaWNrKCdzcGVlY2hJbnB1dEVsZW1lbnQnKTsgfSwg
NTApOworfQorCitmdW5jdGlvbiBvbkNoYW5nZUVsZW1lbnQoKSB7CisgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCdkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3BlZWNoSW5wdXRFbGVtZW50Iiku
dmFsdWUnLCAnUGljdHVyZXMgb2YgdGhlIG1vb24nKTsKKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9u
KCkgeyBzcGVlY2hCdXR0b25DbGljaygnc3BlZWNoSW5wdXRJbmhlcml0ZWQnKTsgfSwgNTApOwor
fQorCitmdW5jdGlvbiBvbkNoYW5nZUluaGVyaXRlZCgpIHsKKyAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoJ2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzcGVlY2hJbnB1dEluaGVyaXRlZCIpLnZh
bHVlJywgJ+aciOOBruWGmeecnycpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCitmdW5jdGlv
biBzcGVlY2hCdXR0b25DbGljayhlbGVtZW50SWQpIHsKKyAgICB2YXIgZWxlbWVudCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJZCk7CisgICAgdmFyIHggPSBlbGVtZW50Lm9mZnNl
dExlZnQgKyBlbGVtZW50Lm9mZnNldFdpZHRoIC0gNDsKKyAgICB2YXIgeSA9IGVsZW1lbnQub2Zm
c2V0VG9wICsgZWxlbWVudC5vZmZzZXRIZWlnaHQgLyAyOworICAgIGV2ZW50U2VuZGVyLm1vdXNl
TW92ZVRvKHgsIHkpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlVXAoKTsKK30KKworZnVuY3Rpb24gcnVuKCkgeworICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIgJiYgd2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdCgnUGljdHVyZXMgb2YgdGhl
IG1vb24nLCAnZW4tR0InKTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja1Nw
ZWVjaElucHV0UmVzdWx0KCfmnIjjga7lhpnnnJ8nLCAnamEnKTsKKyAgICAgICAgc3BlZWNoQnV0
dG9uQ2xpY2soJ3NwZWVjaElucHV0Tm9uZScpOworICAgIH0KK30KKword2luZG93Lm9ubG9hZCA9
IHJ1bjsKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK3dpbmRvdy5zdWNjZXNzZnVsbHlQ
YXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8aW5wdXQgaWQ9InNwZWVjaElucHV0Tm9uZSIgeC13
ZWJraXQtc3BlZWNoIG9ud2Via2l0c3BlZWNoY2hhbmdlPSJvbkNoYW5nZU5vbmUoKSI+Cis8aW5w
dXQgaWQ9InNwZWVjaElucHV0RWxlbWVudCIgeC13ZWJraXQtc3BlZWNoIG9ud2Via2l0c3BlZWNo
Y2hhbmdlPSJvbkNoYW5nZUVsZW1lbnQoKSIgbGFuZz0iZW4tR0IiPgorPGRpdiBsYW5nPSJqYSI+
IDxpbnB1dCBpZD0ic3BlZWNoSW5wdXRJbmhlcml0ZWQiIHgtd2Via2l0LXNwZWVjaCBvbndlYmtp
dHNwZWVjaGNoYW5nZT0ib25DaGFuZ2VJbmhlcml0ZWQoKSI+IDwvZGl2PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1zcGVl
Y2hidXR0b24uaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL2lucHV0LXRleHQtc3BlZWNo
YnV0dG9uLmh0bWwKaW5kZXggNmY1YmM0YjEyMWZiNGY5ZDlkZGE2YzMzMWY4YjI2ZGMxY2Q0Mzk5
NC4uY2VmNzcwNTZiMTdkMWNkNDUxYjQ5MGI3YzFmMjQ2YmE2Yzg5NTBkYiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1zcGVlY2hidXR0b24uaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9pbnB1dC10ZXh0LXNwZWVjaGJ1dHRvbi5odG1sCkBA
IC0zMiw3ICszMiw3IEBAIGZ1bmN0aW9uIG9uV2Via2l0U3BlZWNoQ2hhbmdlKCkgewogCiBmdW5j
dGlvbiBydW4oKSB7CiAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlciAmJiB3aW5k
b3cuZXZlbnRTZW5kZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja1Nw
ZWVjaElucHV0UmVzdWx0KCdQaWN0dXJlcyBvZiB0aGUgbW9vbicpOworICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5zZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoJ1BpY3R1cmVzIG9mIHRoZSBt
b29uJywgJycpOwogCiAgICAgICAgIC8vIENsaWNraW5nIHRoZSBzcGVlY2ggYnV0dG9uIHNob3Vs
ZCBmaWxsIGluIG1vY2sgc3BlZWNoLXJlY29nbml6ZWQgdGV4dC4KICAgICAgICAgdmFyIGlucHV0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NwZWVjaElucHV0Jyk7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9zcGVlY2gtYnV0dG9uLWlnbm9yZS1nZW5lcmF0ZWQtZXZl
bnRzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9zcGVlY2gtYnV0dG9uLWlnbm9yZS1n
ZW5lcmF0ZWQtZXZlbnRzLmh0bWwKaW5kZXggYjliOGVjMzY2MDU1NzlmMmIxMjZkNmYxZGEzNTYw
YzY3MmFkMmI3MS4uYzY4NDg2Mzc3MDUzMzk5YjI5ZDA0ZmMyOTkwN2U1NWU4YWJmMDYwOCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvc3BlZWNoLWJ1dHRvbi1pZ25vcmUtZ2Vu
ZXJhdGVkLWV2ZW50cy5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL3NwZWVjaC1i
dXR0b24taWdub3JlLWdlbmVyYXRlZC1ldmVudHMuaHRtbApAQCAtNDksNyArNDksNyBAQCBmdW5j
dGlvbiBzZXR1cERpc3BhdGNoRXZlbnRUZXN0KCkgewogZnVuY3Rpb24gcnVuKCkgewogICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIgJiYgd2luZG93LmV2ZW50U2VuZGVyKSB7CiAg
ICAgICAgIC8vIFJ1bm5pbmcgaW4gRFJULCB0ZXN0IHRoZSBldmVudFNlbmRlciBjYXNlLgotICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoJ1BpY3R1
cmVzIG9mIHRoZSBtb29uJyk7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldE1vY2tT
cGVlY2hJbnB1dFJlc3VsdCgnUGljdHVyZXMgb2YgdGhlIG1vb24nLCAnJyk7CiAgICAgICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdzcGVlY2hJbnB1dCcpLm9ud2Via2l0c3BlZWNoY2hhbmdl
ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2RvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJzcGVlY2hJbnB1dCIpLnZhbHVlJywgJ1BpY3R1cmVzIG9mIHRo
ZSBtb29uJyk7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rl
c3RfZXhwZWN0YXRpb25zLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3Rf
ZXhwZWN0YXRpb25zLnR4dAppbmRleCBjMjYyMTA4MDk4ZTZmYzYwOTY2MDc5YjIxMjVhMTUwYWEw
NDlmZjcxLi41YTNiNTA2ZDQwMjllMDFhYWE1YTdiMGFlZTVhMzhiZmRmODI2YTNlIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0
CkBAIC0zMjY4LDMgKzMyNjgsNiBAQCBCVUdXSzYxMTY0IExJTlVYIFdJTiA6IGZhc3QvYmxvY2tm
bG93L2JhY2tncm91bmQtdmVydGljYWwtcmwuaHRtbCA9IElNQUdFK1RFWFQKIAogLy8gTmV3IHRl
c3QgYWRkZWQgYnkgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvNzA4NDAuCiBCVUdX
SzYxMTg4IDogZmFzdC9yZXBhaW50L2lmcmFtZS1zY3JvbGwtcmVwYWludC5odG1sID0gSU1BR0Ur
VEVYVCBJTUFHRQorCisvLyBUZW1wb3JhcmlseSBkaXNhYmxlZCBmb3IgYSA0LXNpZGVkIHBhdGNo
LiBXaWxsIGJlIGVuYWJsZWQgYWdhaW4gYnkgQlVHV0s0NzQyMC4KK0JVR1dLNDcwODkgOiBmYXN0
L3NwZWVjaC9pbnB1dC10ZXh0LWxhbmd1YWdlLXRhZy5odG1sID0gRkFJTApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkOTAxMjJkNThmMmRl
MmI1M2RmNzIyMmI4ZWViZTc4NjJjZTQ2YTY0Li5kNDZkOWRjNmIyYTYzNWZkYjE1MGM4Mjg4NTc3
OGI1MzZlYzRjN2M4IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDEwLTEwLTI5ICBMZWFuZHJvIEdyYWNpYSBH
aWwgIDxsZWFuZHJvZ3JhY2lhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSmVy
ZW15IE9ybG93LgorCisgICAgICAgIFBhdGNoIHRoZSBjdXJyZW50IHNwZWVjaCBpbnB1dCBpbXBs
ZW1lbnRhdGlvbiB0byB1c2UgdGhlIG5lYXJlc3QKKyAgICAgICAgbGFuZ3VhZ2UgdGFnLiBUaGUg
bGFuZ3VhZ2UgaXMgbm93IHBhc3NlZCB0byB0aGUgc3RhcnRSZWNvZ25pdGlvbgorICAgICAgICBt
ZXRob2RzIHNvIHRoYXQgbGFuZ3VhZ2Utc3BlY2lmaWMgcmVjb2duaXRpb24gY291bGQgYmUgdXNl
ZC4gQWxzbyBhZGRlZAorICAgICAgICBhIHNlY29uZCBwYXJhbWV0ZXIgdG8gc2V0TW9ja1NwZWVj
aElucHV0UmVzdWx0IGZvciB0aGUgbGFuZ3VhZ2UgdXNlZCBpbgorICAgICAgICBzcGVlY2ggcmVj
b2duaXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD00NzA4OQorCisgICAgICAgIFRoaXMgaXMgdGhlIDJuZCBvZiBhIDQtc2lkZWQgcGF0Y2ggaW4g
Q2hyb21pdW0gYW5kIFdlYktpdC4gRm9yIG1vcmUKKyAgICAgICAgZGV0YWlscyBzZWUgaHR0cDov
L2NvZGVyZXZpZXcuY2hyb21pdW0ub3JnLzM2MTUwMDUvc2hvdywKKyAgICAgICAgaHR0cDovL2Nv
ZGVyZXZpZXcuY2hyb21pdW0ub3JnLzM1OTUwMTgvc2hvdyBhbmQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3NDIwLgorCisgICAgICAgIFRlc3Q6IGZh
c3Qvc3BlZWNoL2lucHV0LXRleHQtbGFuZ3VhZ2UtdGFnLmh0bWwKKworICAgICAgICAqIHBhZ2Uv
U3BlZWNoSW5wdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoSW5wdXQ6OnN0YXJ0UmVj
b2duaXRpb24pOgorICAgICAgICAqIHBhZ2UvU3BlZWNoSW5wdXQuaDoKKyAgICAgICAgKiBwYWdl
L1NwZWVjaElucHV0Q2xpZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9TcGVlY2hJbnB1
dENsaWVudE1vY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoSW5wdXRDbGllbnRNb2Nr
OjpzdGFydFJlY29nbml0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaElucHV0Q2xpZW50
TW9jazo6c2V0UmVjb2duaXRpb25SZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoSW5w
dXRDbGllbnRNb2NrOjp0aW1lckZpcmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL1NwZWVj
aElucHV0Q2xpZW50TW9jay5oOgorICAgICAgICAqIHJlbmRlcmluZy9UZXh0Q29udHJvbElubmVy
RWxlbWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENvbnRyb2xJbm5lckVsZW1lbnQ6
OmF0dGFjaElubmVyRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTZWFyY2hGaWVsZENhbmNl
bEJ1dHRvbkVsZW1lbnQ6OmRldGFjaCk6CisgICAgICAgIChXZWJDb3JlOjpTcGluQnV0dG9uRWxl
bWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dEZpZWxk
U3BlZWNoQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJD
b3JlOjpJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudDo6ZGV0YWNoKToKKwogMjAxMC0xMC0y
NyAgTmlrb2xhcyBaaW1tZXJtYW5uICA8bnppbW1lcm1hbm5AcmltLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBEaXJrIFNjaHVsemUuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvU3BlZWNo
SW5wdXQuY3BwIGIvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0LmNwcAppbmRleCBjNTMzYTgwODBk
NTQzNzVkNjNiYTYxNjUwNmE4MjIzZmE3NmI1OGUzLi5mMzZlZDRkMTQ0Njg5YjUzMTRjM2ZiMWE5
YjdiYmU5OWFhM2VhYzg2IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXQuY3Bw
CisrKyBiL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dC5jcHAKQEAgLTkzLDEwICs5MywxMCBAQCB2
b2lkIFNwZWVjaElucHV0OjpzZXRSZWNvZ25pdGlvblJlc3VsdChpbnQgbGlzdGVuZXJJZCwgY29u
c3QgU3BlZWNoSW5wdXRSZXN1bHRBcgogICAgICAgICBtX2xpc3RlbmVycy5nZXQobGlzdGVuZXJJ
ZCktPnNldFJlY29nbml0aW9uUmVzdWx0KGxpc3RlbmVySWQsIHJlc3VsdCk7CiB9CiAKLWJvb2wg
U3BlZWNoSW5wdXQ6OnN0YXJ0UmVjb2duaXRpb24oaW50IGxpc3RlbmVySWQsIGNvbnN0IEludFJl
Y3QmIGVsZW1lbnRSZWN0LCBjb25zdCBTdHJpbmcmIGdyYW1tYXIpCitib29sIFNwZWVjaElucHV0
OjpzdGFydFJlY29nbml0aW9uKGludCBsaXN0ZW5lcklkLCBjb25zdCBJbnRSZWN0JiBlbGVtZW50
UmVjdCwgY29uc3QgQXRvbWljU3RyaW5nJiBsYW5ndWFnZSwgY29uc3QgU3RyaW5nJiBncmFtbWFy
KQogewogICAgIEFTU0VSVChtX2xpc3RlbmVycy5jb250YWlucyhsaXN0ZW5lcklkKSk7Ci0gICAg
cmV0dXJuIG1fY2xpZW50LT5zdGFydFJlY29nbml0aW9uKGxpc3RlbmVySWQsIGVsZW1lbnRSZWN0
LCBncmFtbWFyKTsKKyAgICByZXR1cm4gbV9jbGllbnQtPnN0YXJ0UmVjb2duaXRpb24obGlzdGVu
ZXJJZCwgZWxlbWVudFJlY3QsIGxhbmd1YWdlLCBncmFtbWFyKTsKIH0KIAogdm9pZCBTcGVlY2hJ
bnB1dDo6c3RvcFJlY29yZGluZyhpbnQgbGlzdGVuZXJJZCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cGFnZS9TcGVlY2hJbnB1dC5oIGIvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0LmgKaW5kZXggMDhk
OTVkZTA2NzdhNmFjMTk2YWMzZTgwZjYzYjQ5MjQ2NWM0YjQ0Zi4uNDUzMmQ0OWE5ODFhN2RkNTk1
YWQ5YWZmNDVhMmFiNjg2MmMzMmQ2NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1NwZWVjaElu
cHV0LmgKKysrIGIvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0LmgKQEAgLTYxLDcgKzYxLDcgQEAg
cHVibGljOgogICAgIHZvaWQgdW5yZWdpc3Rlckxpc3RlbmVyKGludCk7CiAKICAgICAvLyBNZXRo
b2RzIGludm9rZWQgYnkgdGhlIGlucHV0IGVsZW1lbnRzLgotICAgIGJvb2wgc3RhcnRSZWNvZ25p
dGlvbihpbnQgbGlzdGVuZXJJZCwgY29uc3QgSW50UmVjdCYgZWxlbWVudFJlY3QsIGNvbnN0IFN0
cmluZyYgZ3JhbW1hcik7CisgICAgYm9vbCBzdGFydFJlY29nbml0aW9uKGludCBsaXN0ZW5lcklk
LCBjb25zdCBJbnRSZWN0JiBlbGVtZW50UmVjdCwgY29uc3QgQXRvbWljU3RyaW5nJiBsYW5ndWFn
ZSwgY29uc3QgU3RyaW5nJiBncmFtbWFyKTsKICAgICB2b2lkIHN0b3BSZWNvcmRpbmcoaW50KTsK
ICAgICB2b2lkIGNhbmNlbFJlY29nbml0aW9uKGludCk7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cGFnZS9TcGVlY2hJbnB1dENsaWVudC5oIGIvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0Q2xpZW50
LmgKaW5kZXggNDViMzA5YTdkYTRlNDM2N2Y3ZWEzMzdjMTU4NzRkZGM2MDNlODQ0Yy4uMmEyZTE2
MGZiNzZiZWJlYjE0YTdiZjkyNDVlNWYxNGYwY2I3N2Q3MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9w
YWdlL1NwZWVjaElucHV0Q2xpZW50LmgKKysrIGIvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0Q2xp
ZW50LmgKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRMaXN0
ZW5lcihTcGVlY2hJbnB1dExpc3RlbmVyKikgPSAwOwogCiAgICAgLy8gU3RhcnRzIHNwZWVjaCBy
ZWNvZ25pdGlvbiBhbmQgYXVkaW8gcmVjb3JkaW5nLgotICAgIHZpcnR1YWwgYm9vbCBzdGFydFJl
Y29nbml0aW9uKGludCByZXF1ZXN0SWQsIGNvbnN0IEludFJlY3QmIGVsZW1lbnRSZWN0LCBjb25z
dCBTdHJpbmcmIGdyYW1tYXIpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc3RhcnRSZWNvZ25pdGlv
bihpbnQgcmVxdWVzdElkLCBjb25zdCBJbnRSZWN0JiBlbGVtZW50UmVjdCwgY29uc3QgQXRvbWlj
U3RyaW5nJiBsYW5ndWFnZSwgY29uc3QgU3RyaW5nJiBncmFtbWFyKSA9IDA7CiAKICAgICAvLyBT
dG9wcyBhdWRpbyByZWNvcmRpbmcgYW5kIHBlcmZvcm1zIHJlY29nbml0aW9uIHdpdGggdGhlIGF1
ZGlvIHJlY29yZGVkIHVudGlsIG5vdwogICAgIC8vIChkb2VzIG5vdCBkaXNjYXJkIGF1ZGlvKS4K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TcGVlY2hJbnB1dENsaWVudE1vY2su
Y3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xpZW50TW9jay5jcHAKaW5k
ZXggMGIzYzhhY2RmNzM4MzA1N2EyODhjZDJhYTY3MGNjY2IzNjNjOWZmNi4uMzMxMjA5YzU5NjEw
NjFhMDNjYWE2YzVkODc3YmYzZTczYmFiNTRjNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL1NwZWVjaElucHV0Q2xpZW50TW9jay5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL1NwZWVjaElucHV0Q2xpZW50TW9jay5jcHAKQEAgLTUwLDEyICs1MCwxMyBAQCB2b2lkIFNw
ZWVjaElucHV0Q2xpZW50TW9jazo6c2V0TGlzdGVuZXIoU3BlZWNoSW5wdXRMaXN0ZW5lciogbGlz
dGVuZXIpCiAgICAgbV9saXN0ZW5lciA9IGxpc3RlbmVyOwogfQogCi1ib29sIFNwZWVjaElucHV0
Q2xpZW50TW9jazo6c3RhcnRSZWNvZ25pdGlvbihpbnQgcmVxdWVzdElkLCBjb25zdCBJbnRSZWN0
JiBlbGVtZW50UmVjdCwgY29uc3QgU3RyaW5nJiBncmFtbWFyKQorYm9vbCBTcGVlY2hJbnB1dENs
aWVudE1vY2s6OnN0YXJ0UmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCwgY29uc3QgSW50UmVjdCYg
ZWxlbWVudFJlY3QsIGNvbnN0IEF0b21pY1N0cmluZyYgbGFuZ3VhZ2UsIGNvbnN0IFN0cmluZyYg
Z3JhbW1hcikKIHsKICAgICBpZiAobV90aW1lci5pc0FjdGl2ZSgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgbV9yZXF1ZXN0SWQgPSByZXF1ZXN0SWQ7CiAgICAgbV9yZWNvcmRpbmcgPSB0
cnVlOworICAgIG1fbGFuZ3VhZ2UgPSBsYW5ndWFnZTsKICAgICBtX3RpbWVyLnN0YXJ0T25lU2hv
dCgwKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTgwLDkgKzgxLDEyIEBAIHZvaWQgU3BlZWNo
SW5wdXRDbGllbnRNb2NrOjpjYW5jZWxSZWNvZ25pdGlvbihpbnQgcmVxdWVzdElkKQogICAgIH0K
IH0KIAotdm9pZCBTcGVlY2hJbnB1dENsaWVudE1vY2s6OnNldFJlY29nbml0aW9uUmVzdWx0KGNv
bnN0IFN0cmluZyYgcmVzdWx0KQordm9pZCBTcGVlY2hJbnB1dENsaWVudE1vY2s6OnNldFJlY29n
bml0aW9uUmVzdWx0KGNvbnN0IFN0cmluZyYgcmVzdWx0LCBjb25zdCBBdG9taWNTdHJpbmcmIGxh
bmd1YWdlKQogewotICAgIG1fcmVjb2duaXRpb25SZXN1bHQgPSByZXN1bHQ7CisgICAgaWYgKGxh
bmd1YWdlLmlzRW1wdHkoKSkKKyAgICAgICAgbV9yZXN1bHRGb3JFbXB0eUxhbmd1YWdlID0gcmVz
dWx0OworICAgIGVsc2UKKyAgICAgICAgbV9yZWNvZ25pdGlvblJlc3VsdC5zZXQobGFuZ3VhZ2Us
IHJlc3VsdCk7CiB9CiAKIHZvaWQgU3BlZWNoSW5wdXRDbGllbnRNb2NrOjp0aW1lckZpcmVkKFdl
YkNvcmU6OlRpbWVyPFNwZWVjaElucHV0Q2xpZW50TW9jaz4qKQpAQCAtOTMsNyArOTcsMzAgQEAg
dm9pZCBTcGVlY2hJbnB1dENsaWVudE1vY2s6OnRpbWVyRmlyZWQoV2ViQ29yZTo6VGltZXI8U3Bl
ZWNoSW5wdXRDbGllbnRNb2NrPiopCiAgICAgICAgIG1fdGltZXIuc3RhcnRPbmVTaG90KDApOwog
ICAgIH0gZWxzZSB7CiAgICAgICAgIFNwZWVjaElucHV0UmVzdWx0QXJyYXkgcmVzdWx0czsKLSAg
ICAgICAgcmVzdWx0cy5hcHBlbmQoU3BlZWNoSW5wdXRSZXN1bHQ6OmNyZWF0ZShtX3JlY29nbml0
aW9uUmVzdWx0LCAxLjApKTsKKyAgICAgICAgYm9vbCBub1Jlc3VsdHNGb3VuZCA9IGZhbHNlOwor
CisgICAgICAgIC8vIEVtcHR5IGxhbmd1YWdlIGNhc2UgbXVzdCBiZSBoYW5kbGVkIHNlcGFyYXRl
bHkgdG8gYXZvaWQgcHJvYmxlbXMgd2l0aCBIYXNoTWFwIGFuZCBlbXB0eSBrZXlzLgorICAgICAg
ICBpZiAobV9sYW5ndWFnZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIGlmICghbV9yZXN1bHRG
b3JFbXB0eUxhbmd1YWdlLmlzTnVsbCgpKQorICAgICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5k
KFNwZWVjaElucHV0UmVzdWx0OjpjcmVhdGUobV9yZXN1bHRGb3JFbXB0eUxhbmd1YWdlLCAxLjAp
KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBub1Jlc3VsdHNGb3VuZCA9IHRy
dWU7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAobV9yZWNvZ25pdGlvblJlc3Vs
dC5jb250YWlucyhtX2xhbmd1YWdlKSkKKyAgICAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChT
cGVlY2hJbnB1dFJlc3VsdDo6Y3JlYXRlKG1fcmVjb2duaXRpb25SZXN1bHQuZ2V0KG1fbGFuZ3Vh
Z2UpLCAxLjApKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBub1Jlc3VsdHNG
b3VuZCA9IHRydWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAobm9SZXN1bHRzRm91bmQpIHsK
KyAgICAgICAgICAgIC8vIENhbid0IGF2b2lkIHNldHRpbmcgYSByZXN1bHQgZXZlbiBpZiBubyBy
ZXN1bHQgd2FzIHNldCBmb3IgdGhlIGdpdmVuIGxhbmd1YWdlLgorICAgICAgICAgICAgLy8gVGhp
cyB3b3VsZCBhdm9pZCBnZW5lcmF0aW5nIHRoZSBldmVudHMgdXNlZCB0byBjaGVjayB0aGUgcmVz
dWx0cyBhbmQgdGhlIHRlc3Qgd291bGQgdGltZW91dC4KKyAgICAgICAgICAgIFN0cmluZyBlcnJv
cigiZXJyb3I6IG5vIHJlc3VsdCBmb3VuZCBmb3IgbGFuZ3VhZ2UgJyIpOworICAgICAgICAgICAg
ZXJyb3IuYXBwZW5kKG1fbGFuZ3VhZ2UpOworICAgICAgICAgICAgZXJyb3IuYXBwZW5kKCInIik7
CisgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChTcGVlY2hJbnB1dFJlc3VsdDo6Y3JlYXRlKGVy
cm9yLCAxLjApKTsKKyAgICAgICAgfQorCiAgICAgICAgIG1fbGlzdGVuZXItPnNldFJlY29nbml0
aW9uUmVzdWx0KG1fcmVxdWVzdElkLCByZXN1bHRzKTsKICAgICAgICAgbV9saXN0ZW5lci0+ZGlk
Q29tcGxldGVSZWNvZ25pdGlvbihtX3JlcXVlc3RJZCk7CiAgICAgICAgIG1fcmVxdWVzdElkID0g
MDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TcGVlY2hJbnB1dENsaWVudE1v
Y2suaCBiL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TcGVlY2hJbnB1dENsaWVudE1vY2suaAppbmRl
eCA3OTAwZjM2ZGY2Y2U0MmRlNGViMDMwZmIwNjYzNTIyZTE0ZWM3MzBjLi4wZTNjNDU2NTY2Mjdm
ODFkMDI0NjI2Y2RhNWE5YWExMjdjMzc4ZWFhIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svU3BlZWNoSW5wdXRDbGllbnRNb2NrLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L1NwZWVjaElucHV0Q2xpZW50TW9jay5oCkBAIC0zNCw2ICszNCw4IEBACiAjaW5jbHVkZSAiUGxh
dGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJTcGVlY2hJbnB1dENsaWVudC5oIgogI2luY2x1ZGUg
IlRpbWVyLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdIYXNoLmg+CiAKICNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQogCkBAIC00NiwxMSArNDgs
MTEgQEAgY2xhc3MgU3BlZWNoSW5wdXRDbGllbnRNb2NrIDogcHVibGljIFNwZWVjaElucHV0Q2xp
ZW50IHsKIHB1YmxpYzoKICAgICBTcGVlY2hJbnB1dENsaWVudE1vY2soKTsKIAotICAgIHZvaWQg
c2V0UmVjb2duaXRpb25SZXN1bHQoY29uc3QgU3RyaW5nJiByZXN1bHQpOworICAgIHZvaWQgc2V0
UmVjb2duaXRpb25SZXN1bHQoY29uc3QgU3RyaW5nJiByZXN1bHQsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgbGFuZ3VhZ2UpOwogCiAgICAgLy8gU3BlZWNoSW5wdXRDbGllbnQgbWV0aG9kcy4KICAgICB2
b2lkIHNldExpc3RlbmVyKFNwZWVjaElucHV0TGlzdGVuZXIqKTsKLSAgICBib29sIHN0YXJ0UmVj
b2duaXRpb24oaW50IHJlcXVlc3RJZCwgY29uc3QgSW50UmVjdCYgZWxlbWVudFJlY3QsIGNvbnN0
IFN0cmluZyYgZ3JhbW1hcik7CisgICAgYm9vbCBzdGFydFJlY29nbml0aW9uKGludCByZXF1ZXN0
SWQsIGNvbnN0IEludFJlY3QmIGVsZW1lbnRSZWN0LCBjb25zdCBBdG9taWNTdHJpbmcmIGxhbmd1
YWdlLCBjb25zdCBTdHJpbmcmIGdyYW1tYXIpOwogICAgIHZvaWQgc3RvcFJlY29yZGluZyhpbnQp
OwogICAgIHZvaWQgY2FuY2VsUmVjb2duaXRpb24oaW50KTsKIApAQCAtNjEsNyArNjMsMTAgQEAg
cHJpdmF0ZToKICAgICBUaW1lcjxTcGVlY2hJbnB1dENsaWVudE1vY2s+IG1fdGltZXI7CiAgICAg
U3BlZWNoSW5wdXRMaXN0ZW5lciogbV9saXN0ZW5lcjsKICAgICBpbnQgbV9yZXF1ZXN0SWQ7Ci0g
ICAgU3RyaW5nIG1fcmVjb2duaXRpb25SZXN1bHQ7CisKKyAgICBIYXNoTWFwPFN0cmluZywgU3Ry
aW5nPiBtX3JlY29nbml0aW9uUmVzdWx0OworICAgIEF0b21pY1N0cmluZyBtX2xhbmd1YWdlOwor
ICAgIFN0cmluZyBtX3Jlc3VsdEZvckVtcHR5TGFuZ3VhZ2U7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Q29udHJvbElubmVy
RWxlbWVudHMuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRz
LmNwcAppbmRleCA5MjQ4Mzk1NmJmYzhiM2NjNmI2YmZkODUxMjE3MDJkMDQwOGM0OWY4Li5mOTY0
MWY0Y2Y2OGJhYzYxMDNmM2JjYTFkYTE4NGEwZTQzYTU3YmRkIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3JlbmRlcmluZy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCisrKyBiL1dlYkNvcmUvcmVu
ZGVyaW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKQEAgLTIxLDkgKzIxLDkgQEAKICAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKICAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KLSAKKwogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlRl
eHRDb250cm9sSW5uZXJFbGVtZW50cy5oIgogCkBAIC0xMDcsMTggKzEwNywxOCBAQCB2b2lkIFRl
eHRDb250cm9sSW5uZXJFbGVtZW50OjphdHRhY2hJbm5lckVsZW1lbnQoTm9kZSogcGFyZW50LCBQ
YXNzUmVmUHRyPFJlbmRlcgogICAgICAgICBzZXRSZW5kZXJlcihyZW5kZXJlcik7CiAgICAgICAg
IHJlbmRlcmVyLT5zZXRTdHlsZShzdHlsZSk7CiAgICAgfQotICAgIAorCiAgICAgLy8gU2V0IHRo
ZXNlIGV4cGxpY2l0bHkgc2luY2UgdGhpcyBub3JtYWxseSBoYXBwZW5zIGR1cmluZyBhbiBhdHRh
Y2goKQogICAgIHNldEF0dGFjaGVkKCk7CiAgICAgc2V0SW5Eb2N1bWVudCgpOwotICAgIAorCiAg
ICAgLy8gRm9yIGVsZW1lbnRzIHdpdGhvdXQgYSBzaGFkb3cgcGFyZW50LCBhZGQgdGhlIG5vZGUg
dG8gdGhlIERPTSBub3JtYWxseS4KICAgICBpZiAoIW1fc2hhZG93UGFyZW50KSB7CiAgICAgICAg
IC8vIEZJWE1FOiBUaGlzIGNvZGUgc2VlbXMgdmVyeSB3cm9uZy4gIFdoeSBhcmUgd2UgbWFnaWNh
bGx5IGFkZGluZyB8dGhpc3wgdG8gdGhlIERPTSBoZXJlPwogICAgICAgICAvLyAgICAgICAgV2Ug
c2hvdWxkbid0IGJlIGNhbGxpbmcgcGFyc2VyIEFQSSBtZXRob2RzIG91dHNpZGUgb2YgdGhlIHBh
cnNlciEKICAgICAgICAgcGFyZW50LT5kZXByZWNhdGVkUGFyc2VyQWRkQ2hpbGQodGhpcyk7CiAg
ICAgfQotIAorCiAgICAgLy8gQWRkIHRoZSByZW5kZXJlciB0byB0aGUgcmVuZGVyIHRyZWUKICAg
ICBpZiAocmVuZGVyZXIpCiAgICAgICAgIHBhcmVudC0+cmVuZGVyZXIoKS0+YWRkQ2hpbGQocmVu
ZGVyZXIpOwpAQCAtMjA4LDcgKzIwOCw3IEBAIHZvaWQgU2VhcmNoRmllbGRDYW5jZWxCdXR0b25F
bGVtZW50OjpkZXRhY2goKQogewogICAgIGlmIChtX2NhcHR1cmluZykgewogICAgICAgICBpZiAo
RnJhbWUqIGZyYW1lID0gZG9jdW1lbnQoKS0+ZnJhbWUoKSkKLSAgICAgICAgICAgIGZyYW1lLT5l
dmVudEhhbmRsZXIoKS0+c2V0Q2FwdHVyaW5nTW91c2VFdmVudHNOb2RlKDApOyAgICAgIAorICAg
ICAgICAgICAgZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5zZXRDYXB0dXJpbmdNb3VzZUV2ZW50c05v
ZGUoMCk7CiAgICAgfQogICAgIFRleHRDb250cm9sSW5uZXJFbGVtZW50OjpkZXRhY2goKTsKIH0K
QEAgLTI4MSw5ICsyODEsOSBAQCB2b2lkIFNwaW5CdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRI
YW5kbGVyKEV2ZW50KiBldmVudCkKICAgICBpZiAoIWJveCkgewogICAgICAgICBpZiAoIWV2ZW50
LT5kZWZhdWx0SGFuZGxlZCgpKQogICAgICAgICAgICAgSFRNTERpdkVsZW1lbnQ6OmRlZmF1bHRF
dmVudEhhbmRsZXIoZXZlbnQpOwotICAgICAgICByZXR1cm47ICAgICAgICAKKyAgICAgICAgcmV0
dXJuOwogICAgIH0KLSAgICAKKwogICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0ID0gc3RhdGlj
X2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KHNoYWRvd0FuY2VzdG9yTm9kZSgpKTsKICAgICBpZiAo
aW5wdXQtPmRpc2FibGVkKCkgfHwgaW5wdXQtPmlzUmVhZE9ubHlGb3JtQ29udHJvbCgpKSB7CiAg
ICAgICAgIGlmICghZXZlbnQtPmRlZmF1bHRIYW5kbGVkKCkpCkBAIC00MzEsNyArNDMxLDcgQEAg
dm9pZCBJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihF
dmVudCogZXZlbnQpCiAgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmNsaWNr
RXZlbnQpIHsKICAgICAgICAgc3dpdGNoIChtX3N0YXRlKSB7CiAgICAgICAgIGNhc2UgSWRsZToK
LSAgICAgICAgICAgIGlmIChzcGVlY2hJbnB1dCgpLT5zdGFydFJlY29nbml0aW9uKG1fbGlzdGVu
ZXJJZCwgaW5wdXQtPnJlbmRlcmVyKCktPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCksIGlucHV0
LT5nZXRBdHRyaWJ1dGUod2Via2l0Z3JhbW1hckF0dHIpKSkKKyAgICAgICAgICAgIGlmIChzcGVl
Y2hJbnB1dCgpLT5zdGFydFJlY29nbml0aW9uKG1fbGlzdGVuZXJJZCwgaW5wdXQtPnJlbmRlcmVy
KCktPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCksIGlucHV0LT5jb21wdXRlSW5oZXJpdGVkTGFu
Z3VhZ2UoKSwgaW5wdXQtPmdldEF0dHJpYnV0ZSh3ZWJraXRncmFtbWFyQXR0cikpKQogICAgICAg
ICAgICAgICAgIHNldFN0YXRlKFJlY29yZGluZyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBSZWNvcmRpbmc6CkBAIC00ODksNyArNDg5LDcgQEAgdm9pZCBJbnB1dEZpZWxkU3Bl
ZWNoQnV0dG9uRWxlbWVudDo6ZGV0YWNoKCkKIHsKICAgICBpZiAobV9jYXB0dXJpbmcpIHsKICAg
ICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCkpCi0gICAgICAgICAg
ICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPnNldENhcHR1cmluZ01vdXNlRXZlbnRzTm9kZSgwKTsg
ICAgICAKKyAgICAgICAgICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+c2V0Q2FwdHVyaW5nTW91
c2VFdmVudHNOb2RlKDApOwogICAgIH0KIAogICAgIGlmIChtX3N0YXRlICE9IElkbGUpCmRpZmYg
LS1naXQgYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZwppbmRleCA4Y2M5NjRmMmFjZDBjNWRjNDBhZTg0ZGQ2NDg2M2UyZDNkZDZiMWUyLi5lY2Rl
Y2FmZDY4ZDMyNWVjNTg2MDIyMGJjNDRmNmRhYTYzYzY4MWRiIDEwMDY0NAotLS0gYS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNCBAQAorMjAxMC0xMC0yOSAgTGVhbmRybyBHcmFjaWEgR2lsICA8bGVhbmRyb2dyYWNp
YUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEplcmVteSBPcmxvdy4KKworICAg
ICAgICBQYXRjaCB0aGUgY3VycmVudCBzcGVlY2ggaW5wdXQgaW1wbGVtZW50YXRpb24gdG8gdXNl
IHRoZSBuZWFyZXN0CisgICAgICAgIGxhbmd1YWdlIHRhZy4gVGhlIGxhbmd1YWdlIGlzIG5vdyBw
YXNzZWQgdG8gdGhlIHN0YXJ0UmVjb2duaXRpb24KKyAgICAgICAgbWV0aG9kcyBzbyB0aGF0IGxh
bmd1YWdlLXNwZWNpZmljIHJlY29nbml0aW9uIGNvdWxkIGJlIHVzZWQuIEFsc28gYWRkZWQKKyAg
ICAgICAgYSBzZWNvbmQgcGFyYW1ldGVyIHRvIHNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdCBmb3Ig
dGhlIGxhbmd1YWdlIHVzZWQgaW4KKyAgICAgICAgc3BlZWNoIHJlY29nbml0aW9uLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDcwODkKKworICAgICAg
ICBUaGlzIGlzIHRoZSAybmQgb2YgYSA0LXNpZGVkIHBhdGNoIGluIENocm9taXVtIGFuZCBXZWJL
aXQuIEZvciBtb3JlCisgICAgICAgIGRldGFpbHMgc2VlIGh0dHA6Ly9jb2RlcmV2aWV3LmNocm9t
aXVtLm9yZy8zNjE1MDA1L3Nob3csCisgICAgICAgIGh0dHA6Ly9jb2RlcmV2aWV3LmNocm9taXVt
Lm9yZy8zNTk1MDE4L3Nob3cgYW5kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00NzQyMC4KKworICAgICAgICAqIHB1YmxpYy9XZWJTcGVlY2hJbnB1dENv
bnRyb2xsZXIuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyOjpz
dGFydFJlY29nbml0aW9uKToKKyAgICAgICAgKiBwdWJsaWMvV2ViU3BlZWNoSW5wdXRDb250cm9s
bGVyTW9jay5oOgorICAgICAgICAqIHNyYy9TcGVlY2hJbnB1dENsaWVudEltcGwuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpTcGVlY2hJbnB1dENsaWVudEltcGw6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OlNwZWVjaElucHV0Q2xpZW50SW1wbDo6c3RhcnRSZWNvZ25pdGlvbik6CisgICAgICAg
ICogc3JjL1NwZWVjaElucHV0Q2xpZW50SW1wbC5oOgorICAgICAgICAqIHNyYy9XZWJTcGVlY2hJ
bnB1dENvbnRyb2xsZXJNb2NrSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaElu
cHV0Q29udHJvbGxlck1vY2tJbXBsOjpzZXRNb2NrUmVjb2duaXRpb25SZXN1bHQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6c3RhcnRSZWNvZ25p
dGlvbik6CisgICAgICAgICogc3JjL1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsLmg6
CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmll
d0ltcGw6OldlYlZpZXdJbXBsKToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuaDoKKwogMjAx
MC0xMC0yOCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IEVyaWMgU2VpZGVsLCBQZXRlciBLYXN0aW5nLCBhbmQgRGFyaW4gRmlzaGVyLgpkaWZm
IC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIu
aCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyLmgKaW5k
ZXggYTgwZGFmZGU0ZDE2NDNlYjQ4Mjg2Njg5ZDM3YjZjNmZkZDBhZjNhYi4uNmVkNTQ2ZmZiMmNk
MmYxMTUxMjE0NTIwNDcyN2E1YjE0ZDJmOTdiYSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIuaAorKysgYi9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYlNwZWVjaElucHV0Q29udHJvbGxlci5oCkBAIC0zNSw2ICszNSw3IEBACiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBXZWJTdHJpbmc7CiBzdHJ1Y3QgV2ViUmVjdDsKIGNs
YXNzIFdlYlN0cmluZzsKIApAQCAtNDQsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgLy8gU3RhcnRz
IHNwZWVjaCByZWNvZ25pdGlvbi4gU3BlZWNoIHdpbGwgZ2V0IHJlY29yZGVkIHVudGlsIHRoZSBl
bmRwb2ludGVyIGRldGVjdHMgc2lsZW5jZSwKICAgICAvLyBydW5zIHRvIHRoZSBsaW1pdCBvciBz
dG9wUmVjb3JkaW5nIGlzIGNhbGxlZC4gUHJvZ3Jlc3MgaW5kaWNhdGlvbnMgYW5kIHRoZSByZWNv
Z25pemVkCiAgICAgLy8gdGV4dCBhcmUgcmV0dXJuZWQgdmlhIHRoZSBsaXN0ZW5lciBpbnRlcmZh
Y2UuCi0gICAgdmlydHVhbCBib29sIHN0YXJ0UmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCwgY29u
c3QgV2ViUmVjdCYgZWxlbWVudFJlY3QsIGNvbnN0IFdlYlN0cmluZyYgZ3JhbW1hcikKKyAgICB2
aXJ0dWFsIGJvb2wgc3RhcnRSZWNvZ25pdGlvbihpbnQgcmVxdWVzdElkLCBjb25zdCBXZWJSZWN0
JiBlbGVtZW50UmVjdCwgY29uc3QgV2ViU3RyaW5nJiBsYW5ndWFnZSwgY29uc3QgV2ViU3RyaW5n
JiBncmFtbWFyKQogICAgIHsKICAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2suaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9jay5oCmluZGV4IDlhMjYyMzVmZjZkNWRjY2JiZTI0
NzI2MmFlNDRhM2FjNzM5N2MzZjQuLmI0YzUwYTA1ZGNmNWExMmY4NDFiZjliNjc1NWNkMjg4MTdm
OGMwOGIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoSW5wdXRD
b250cm9sbGVyTW9jay5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoSW5w
dXRDb250cm9sbGVyTW9jay5oCkBAIC00NCw2ICs0NCwxMCBAQCBwdWJsaWM6CiAgICAgICAgIFdl
YlNwZWVjaElucHV0TGlzdGVuZXIqIGxpc3RlbmVyKTsKICAgICB2aXJ0dWFsIH5XZWJTcGVlY2hJ
bnB1dENvbnRyb2xsZXJNb2NrKCkgeyB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgc2V0TW9ja1JlY29n
bml0aW9uUmVzdWx0KGNvbnN0IFdlYlN0cmluZyYgcmVzdWx0LCBjb25zdCBXZWJTdHJpbmcmIGxh
bmd1YWdlKSA9IDA7CisKKyAgICAvLyBGSVhNRTogdGhpcyBpcyBhIGZpeCBmb3IgYSB0d28tc2lk
ZWQgcGF0Y2guIERlbGV0ZSBhcyBzb29uIGFzIHRoZSBjaHJvbWl1bSBzaWRlIGlzIHBhdGNoZWQu
CisgICAgLy8gQ2hyb21pdW0gcGF0Y2ggbm90IHVwbG9hZGVkIHlldCwgYnV0IHdpbGwgZGVwZW5k
IG9uIGh0dHA6Ly9jb2RlcmV2aWV3LmNocm9taXVtLm9yZy8zNjE1MDA1L3Nob3cgcGF0Y2guCiAg
ICAgdmlydHVhbCB2b2lkIHNldE1vY2tSZWNvZ25pdGlvblJlc3VsdChjb25zdCBXZWJTdHJpbmcm
IHJlc3VsdCkgPSAwOwogfTsKIApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9TcGVl
Y2hJbnB1dENsaWVudEltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9TcGVlY2hJbnB1dENs
aWVudEltcGwuY3BwCmluZGV4IDY3MmRlNjM2OGIwMjhkOWJmZDgzNmRjMzU3MWM3ZmEyMGJmOTky
MGUuLmI1ZWQzODRiOTE2NzllNzQ3NDNjNmMwMmRmYWQ2ZDdjYjMwMjhlM2UgMTAwNjQ0Ci0tLSBh
L1dlYktpdC9jaHJvbWl1bS9zcmMvU3BlZWNoSW5wdXRDbGllbnRJbXBsLmNwcAorKysgYi9XZWJL
aXQvY2hyb21pdW0vc3JjL1NwZWVjaElucHV0Q2xpZW50SW1wbC5jcHAKQEAgLTMyLDE1ICszMiwy
MSBAQAogI2luY2x1ZGUgIlNwZWVjaElucHV0Q2xpZW50SW1wbC5oIgogCiAjaW5jbHVkZSAiUGxh
dGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJTcGVlY2hJbnB1dExpc3RlbmVyLmgiCiAjaW5jbHVk
ZSAiV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCiAj
aW5jbHVkZSAiV2ViVmlld0NsaWVudC5oIgotI2luY2x1ZGUgInBhZ2UvU3BlZWNoSW5wdXRMaXN0
ZW5lci5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKICNpZiBFTkFCTEUoSU5QVVRf
U1BFRUNIKQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorUGFzc093blB0cjxTcGVlY2hJbnB1dENs
aWVudEltcGw+IFNwZWVjaElucHV0Q2xpZW50SW1wbDo6Y3JlYXRlKFdlYlZpZXdDbGllbnQqIGNs
aWVudCkKK3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IFNwZWVjaElucHV0Q2xpZW50SW1wbChj
bGllbnQpKTsKK30KKwogU3BlZWNoSW5wdXRDbGllbnRJbXBsOjpTcGVlY2hJbnB1dENsaWVudElt
cGwoV2ViVmlld0NsaWVudCogd2ViX3ZpZXdfY2xpZW50KQogICAgIDogbV9jb250cm9sbGVyKHdl
Yl92aWV3X2NsaWVudCA/IHdlYl92aWV3X2NsaWVudC0+c3BlZWNoSW5wdXRDb250cm9sbGVyKHRo
aXMpIDogMCkKICAgICAsIG1fbGlzdGVuZXIoMCkKQEAgLTU2LDEwICs2MiwxMCBAQCB2b2lkIFNw
ZWVjaElucHV0Q2xpZW50SW1wbDo6c2V0TGlzdGVuZXIoV2ViQ29yZTo6U3BlZWNoSW5wdXRMaXN0
ZW5lciogbGlzdGVuZXIpCiAgICAgbV9saXN0ZW5lciA9IGxpc3RlbmVyOwogfQogCi1ib29sIFNw
ZWVjaElucHV0Q2xpZW50SW1wbDo6c3RhcnRSZWNvZ25pdGlvbihpbnQgcmVxdWVzdElkLCBjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JiBlbGVtZW50UmVjdCwgY29uc3QgV1RGOjpTdHJpbmcmIGdyYW1t
YXIpCitib29sIFNwZWVjaElucHV0Q2xpZW50SW1wbDo6c3RhcnRSZWNvZ25pdGlvbihpbnQgcmVx
dWVzdElkLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBlbGVtZW50UmVjdCwgY29uc3QgQXRvbWlj
U3RyaW5nJiBsYW5ndWFnZSwgY29uc3QgU3RyaW5nJiBncmFtbWFyKQogewogICAgIEFTU0VSVCht
X2xpc3RlbmVyKTsKLSAgICByZXR1cm4gbV9jb250cm9sbGVyLT5zdGFydFJlY29nbml0aW9uKHJl
cXVlc3RJZCwgZWxlbWVudFJlY3QsIGdyYW1tYXIpOworICAgIHJldHVybiBtX2NvbnRyb2xsZXIt
PnN0YXJ0UmVjb2duaXRpb24ocmVxdWVzdElkLCBlbGVtZW50UmVjdCwgbGFuZ3VhZ2UsIGdyYW1t
YXIpOwogfQogCiB2b2lkIFNwZWVjaElucHV0Q2xpZW50SW1wbDo6c3RvcFJlY29yZGluZyhpbnQg
cmVxdWVzdElkKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9TcGVlY2hJbnB1dENs
aWVudEltcGwuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvU3BlZWNoSW5wdXRDbGllbnRJbXBsLmgK
aW5kZXggZDJkYjQ1MzIwYmRmZWZjODNjZDViYmE2ZWZhMzZiZDE3OTg1OGFiNS4uNTIwODAzYTZh
NzdjZDhiNTMzODExZTQ3MGQ5MDg4N2UxZDJlNTUxZCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9t
aXVtL3NyYy9TcGVlY2hJbnB1dENsaWVudEltcGwuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3Jj
L1NwZWVjaElucHV0Q2xpZW50SW1wbC5oCkBAIC0zMyw4ICszMywxMSBAQAogCiAjaWYgRU5BQkxF
KElOUFVUX1NQRUVDSCkKIAorI2luY2x1ZGUgIlNwZWVjaElucHV0Q2xpZW50LmgiCiAjaW5jbHVk
ZSAiV2ViU3BlZWNoSW5wdXRMaXN0ZW5lci5oIgotI2luY2x1ZGUgInBhZ2UvU3BlZWNoSW5wdXRD
bGllbnQuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIu
aD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBTcGVlY2hJbnB1dExpc3RlbmVyOwpAQCAtNDksMTIgKzUyLDEyIEBAIGNsYXNzIFNwZWVj
aElucHV0Q2xpZW50SW1wbAogICAgIDogcHVibGljIFdlYkNvcmU6OlNwZWVjaElucHV0Q2xpZW50
LAogICAgICAgcHVibGljIFdlYlNwZWVjaElucHV0TGlzdGVuZXIgewogcHVibGljOgotICAgIFNw
ZWVjaElucHV0Q2xpZW50SW1wbChXZWJWaWV3Q2xpZW50Kik7CisgICAgc3RhdGljIFBhc3NPd25Q
dHI8U3BlZWNoSW5wdXRDbGllbnRJbXBsPiBjcmVhdGUoV2ViVmlld0NsaWVudCopOwogICAgIHZp
cnR1YWwgflNwZWVjaElucHV0Q2xpZW50SW1wbCgpOwogCiAgICAgLy8gU3BlZWNoSW5wdXRDbGll
bnQgbWV0aG9kcy4KICAgICB2b2lkIHNldExpc3RlbmVyKFdlYkNvcmU6OlNwZWVjaElucHV0TGlz
dGVuZXIqKTsKLSAgICBib29sIHN0YXJ0UmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCwgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYgZWxlbWVudFJlY3QsIGNvbnN0IFdURjo6U3RyaW5nJiBncmFtbWFy
KTsKKyAgICBib29sIHN0YXJ0UmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCwgY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYgZWxlbWVudFJlY3QsIGNvbnN0IEF0b21pY1N0cmluZyYgbGFuZ3VhZ2UsIGNv
bnN0IFN0cmluZyYgZ3JhbW1hcik7CiAgICAgdm9pZCBzdG9wUmVjb3JkaW5nKGludCk7CiAgICAg
dm9pZCBjYW5jZWxSZWNvZ25pdGlvbihpbnQpOwogCkBAIC02NCw2ICs2Nyw4IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGRpZENvbXBsZXRlUmVjb2duaXRpb24oaW50KTsKIAogcHJpdmF0ZToKKyAgICBT
cGVlY2hJbnB1dENsaWVudEltcGwoV2ViVmlld0NsaWVudCopOworCiAgICAgV2ViU3BlZWNoSW5w
dXRDb250cm9sbGVyKiBtX2NvbnRyb2xsZXI7IC8vIFRvIGNhbGwgaW50byB0aGUgZW1iZWRkZXIu
CiAgICAgV2ViQ29yZTo6U3BlZWNoSW5wdXRMaXN0ZW5lciogbV9saXN0ZW5lcjsKIH07CmRpZmYg
LS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJ
bXBsLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9j
a0ltcGwuY3BwCmluZGV4IDk4Y2M2Y2ZiOTg3NGFiMDAyODdlMmJmMjhlZjBkNzVkM2Y4YmQwMGIu
LjNiNTYzMzhlNzA0ZGMwMjgzZTZhNzBiNzRlZTQ0MmZjMmFiYzE0ZDAgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGwuY3BwCisr
KyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGwu
Y3BwCkBAIC01Nyw3ICs1NywxMiBAQCBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6
fldlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsKCkKIAogdm9pZCBXZWJTcGVlY2hJbnB1
dENvbnRyb2xsZXJNb2NrSW1wbDo6c2V0TW9ja1JlY29nbml0aW9uUmVzdWx0KGNvbnN0IFdlYlN0
cmluZyYgcmVzdWx0KQogewotICAgIG1fd2ViY29yZU1vY2stPnNldFJlY29nbml0aW9uUmVzdWx0
KHJlc3VsdCk7CisgICAgbV93ZWJjb3JlTW9jay0+c2V0UmVjb2duaXRpb25SZXN1bHQocmVzdWx0
LCBXZWJTdHJpbmc6OmZyb21VVEY4KCIiKSk7Cit9CisKK3ZvaWQgV2ViU3BlZWNoSW5wdXRDb250
cm9sbGVyTW9ja0ltcGw6OnNldE1vY2tSZWNvZ25pdGlvblJlc3VsdChjb25zdCBXZWJTdHJpbmcm
IHJlc3VsdCwgY29uc3QgV2ViU3RyaW5nICZsYW5ndWFnZSkKK3sKKyAgICBtX3dlYmNvcmVNb2Nr
LT5zZXRSZWNvZ25pdGlvblJlc3VsdChyZXN1bHQsIGxhbmd1YWdlKTsKIH0KIAogdm9pZCBXZWJT
cGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6ZGlkQ29tcGxldGVSZWNvcmRpbmcoaW50IHJl
cXVlc3RJZCkKQEAgLTc1LDkgKzgwLDkgQEAgdm9pZCBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJN
b2NrSW1wbDo6c2V0UmVjb2duaXRpb25SZXN1bHQoaW50IHJlcXVlc3RJZCwgY29uc3QKICAgICBt
X2xpc3RlbmVyLT5zZXRSZWNvZ25pdGlvblJlc3VsdChyZXF1ZXN0SWQsIHJlc3VsdCk7CiB9CiAK
LWJvb2wgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OnN0YXJ0UmVjb2duaXRpb24o
aW50IHJlcXVlc3RJZCwgY29uc3QgV2ViUmVjdCYgZWxlbWVudFJlY3QsIGNvbnN0IFdlYlN0cmlu
ZyYgZ3JhbW1hcikKK2Jvb2wgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OnN0YXJ0
UmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCwgY29uc3QgV2ViUmVjdCYgZWxlbWVudFJlY3QsIGNv
bnN0IFdlYlN0cmluZyYgbGFuZ3VhZ2UsIGNvbnN0IFdlYlN0cmluZyYgZ3JhbW1hcikKIHsKLSAg
ICByZXR1cm4gbV93ZWJjb3JlTW9jay0+c3RhcnRSZWNvZ25pdGlvbihyZXF1ZXN0SWQsIGVsZW1l
bnRSZWN0LCBncmFtbWFyKTsKKyAgICByZXR1cm4gbV93ZWJjb3JlTW9jay0+c3RhcnRSZWNvZ25p
dGlvbihyZXF1ZXN0SWQsIGVsZW1lbnRSZWN0LCBsYW5ndWFnZSwgZ3JhbW1hcik7CiB9CiAKIHZv
aWQgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OmNhbmNlbFJlY29nbml0aW9uKGlu
dCByZXF1ZXN0SWQpCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNwZWVjaElu
cHV0Q29udHJvbGxlck1vY2tJbXBsLmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNwZWVjaElu
cHV0Q29udHJvbGxlck1vY2tJbXBsLmgKaW5kZXggMTQ2NzkzYWM2NDc5ZWY2MGUxMDY3NmNhMzlk
ZWNhNDk5ZmNhNzBmNi4uYzk4ZjkyYTJjMWFlOTEwM2U4ZmI5OTdkYjM5OTdhMjViMjQyZmVlZCAx
MDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJN
b2NrSW1wbC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3BlZWNoSW5wdXRDb250cm9s
bGVyTW9ja0ltcGwuaApAQCAtNTcsMTEgKzU3LDE1IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFJl
Y29nbml0aW9uUmVzdWx0KGludCByZXF1ZXN0SWQsIGNvbnN0IFdlYkNvcmU6OlNwZWVjaElucHV0
UmVzdWx0QXJyYXkmIHJlc3VsdCk7CiAKICAgICAvLyBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIg
bWV0aG9kcy4KLSAgICBib29sIHN0YXJ0UmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCwgY29uc3Qg
V2ViUmVjdCYgZWxlbWVudFJlY3QsIGNvbnN0IFdlYlN0cmluZyYgZ3JhbW1hcik7CisgICAgYm9v
bCBzdGFydFJlY29nbml0aW9uKGludCByZXF1ZXN0SWQsIGNvbnN0IFdlYlJlY3QmIGVsZW1lbnRS
ZWN0LCBjb25zdCBXZWJTdHJpbmcmIGxhbmd1YWdlLCBjb25zdCBXZWJTdHJpbmcmIGdyYW1tYXIp
OwogICAgIHZvaWQgY2FuY2VsUmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCk7CiAgICAgdm9pZCBz
dG9wUmVjb3JkaW5nKGludCByZXF1ZXN0SWQpOwogCiAgICAgLy8gV2ViU3BlZWNoSW5wdXRDb250
cm9sbGVyTW9jayBtZXRob2RzLgorICAgIHZvaWQgc2V0TW9ja1JlY29nbml0aW9uUmVzdWx0KGNv
bnN0IFdlYlN0cmluZyYgcmVzdWx0LCBjb25zdCBXZWJTdHJpbmcmIGxhbmd1YWdlKTsKKworICAg
IC8vIEZJWE1FOiB0aGlzIGlzIGEgZml4IGZvciBhIHR3by1zaWRlZCBwYXRjaC4gRGVsZXRlIGFz
IHNvb24gYXMgdGhlIGNocm9taXVtIHNpZGUgaXMgcGF0Y2hlZC4KKyAgICAvLyBDaHJvbWl1bSBw
YXRjaCBub3QgdXBsb2FkZWQgeWV0LCBidXQgd2lsbCBkZXBlbmQgb24gaHR0cDovL2NvZGVyZXZp
ZXcuY2hyb21pdW0ub3JnLzM2MTUwMDUvc2hvdyBwYXRjaC4KICAgICB2b2lkIHNldE1vY2tSZWNv
Z25pdGlvblJlc3VsdChjb25zdCBXZWJTdHJpbmcmIHJlc3VsdCk7CiAKIHByaXZhdGU6CkBAIC03
Miw0ICs3NiwzIEBAIHByaXZhdGU6CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8v
IFdlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsX2gKLQpkaWZmIC0tZ2l0IGEvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZp
ZXdJbXBsLmNwcAppbmRleCA5ZmFlZGFjZDAzNWUxNDc1ZDBiMjA3NjMyNzk5MTFiZmRmNDZmZjRj
Li42NzgyYTIzN2I2ZTAxNzk2ZmVhZThmY2MzMjA0MGZlM2ZjNDMzMDc2IDEwMDY0NAotLS0gYS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtODgsNiArODgsNyBAQAogI2luY2x1ZGUgIlNlY3VyaXR5
T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2VsZWN0aW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNl
dHRpbmdzLmgiCisjaW5jbHVkZSAiU3BlZWNoSW5wdXRDbGllbnRJbXBsLmgiCiAjaW5jbHVkZSAi
VGltZXIuaCIKICNpbmNsdWRlICJUeXBpbmdDb21tYW5kLmgiCiAjaW5jbHVkZSAiVXNlckdlc3R1
cmVJbmRpY2F0b3IuaCIKQEAgLTI4Miw3ICsyODMsNyBAQCBXZWJWaWV3SW1wbDo6V2ViVmlld0lt
cGwoV2ViVmlld0NsaWVudCogY2xpZW50LCBXZWJEZXZUb29sc0FnZW50Q2xpZW50KiBkZXZUb29s
cwogICAgICwgbV9jb21wb3NpdG9yQ3JlYXRpb25GYWlsZWQoZmFsc2UpCiAjZW5kaWYKICNpZiBF
TkFCTEUoSU5QVVRfU1BFRUNIKQotICAgICwgbV9zcGVlY2hJbnB1dENsaWVudChjbGllbnQpCisg
ICAgLCBtX3NwZWVjaElucHV0Q2xpZW50KFNwZWVjaElucHV0Q2xpZW50SW1wbDo6Y3JlYXRlKGNs
aWVudCkpCiAjZW5kaWYKICAgICAsIG1fZGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eShuZXcg
RGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eShjbGllbnQgPyBjbGllbnQtPmRldmljZU9yaWVu
dGF0aW9uQ2xpZW50KCkgOiAwKSkKIHsKQEAgLTMwNSw3ICszMDYsNyBAQCBXZWJWaWV3SW1wbDo6
V2ViVmlld0ltcGwoV2ViVmlld0NsaWVudCogY2xpZW50LCBXZWJEZXZUb29sc0FnZW50Q2xpZW50
KiBkZXZUb29scwogICAgIHBhZ2VDbGllbnRzLmRyYWdDbGllbnQgPSAmbV9kcmFnQ2xpZW50SW1w
bDsKICAgICBwYWdlQ2xpZW50cy5pbnNwZWN0b3JDbGllbnQgPSAmbV9pbnNwZWN0b3JDbGllbnRJ
bXBsOwogI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCi0gICAgcGFnZUNsaWVudHMuc3BlZWNoSW5w
dXRDbGllbnQgPSAmbV9zcGVlY2hJbnB1dENsaWVudDsKKyAgICBwYWdlQ2xpZW50cy5zcGVlY2hJ
bnB1dENsaWVudCA9IG1fc3BlZWNoSW5wdXRDbGllbnQuZ2V0KCk7CiAjZW5kaWYKICAgICBwYWdl
Q2xpZW50cy5kZXZpY2VPcmllbnRhdGlvbkNsaWVudCA9IG1fZGV2aWNlT3JpZW50YXRpb25DbGll
bnRQcm94eS5nZXQoKTsKIApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3
SW1wbC5oIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCmluZGV4IGMzZmQzOWVl
MTUxNzcxZWU3ODEzMzgyMDg2MDNlNzVmZGYwNWUxZGIuLjAzODg3NzA3YTg3ZDQ5ZjNmMzA5ZmQz
ZGY4NzY3ODM0MjNhNTBkYTEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmll
d0ltcGwuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKQEAgLTQ5LDcg
KzQ5LDYgQEAKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNo
cm9taXVtLmgiCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uUHJlc2VudGVySW1wbC5oIgotI2luY2x1
ZGUgIlNwZWVjaElucHV0Q2xpZW50SW1wbC5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCkBAIC03NCw2ICs3Myw3IEBAIGNsYXNzIEF1dG9G
aWxsUG9wdXBNZW51Q2xpZW50OwogY2xhc3MgQ29udGV4dE1lbnVDbGllbnRJbXBsOwogY2xhc3Mg
RGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eTsKIGNsYXNzIERyYWdTY3JvbGxUaW1lcjsKK2Ns
YXNzIFNwZWVjaElucHV0Q2xpZW50SW1wbDsKIGNsYXNzIFdlYkFjY2Vzc2liaWxpdHlPYmplY3Q7
CiBjbGFzcyBXZWJEZXZUb29sc0FnZW50Q2xpZW50OwogY2xhc3MgV2ViRGV2VG9vbHNBZ2VudFBy
aXZhdGU7CkBAIC01NDgsNyArNTQ4LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3QgV2Vi
SW5wdXRFdmVudCogbV9jdXJyZW50SW5wdXRFdmVudDsKIAogI2lmIEVOQUJMRShJTlBVVF9TUEVF
Q0gpCi0gICAgU3BlZWNoSW5wdXRDbGllbnRJbXBsIG1fc3BlZWNoSW5wdXRDbGllbnQ7CisgICAg
T3duUHRyPFNwZWVjaElucHV0Q2xpZW50SW1wbD4gbV9zcGVlY2hJbnB1dENsaWVudDsKICNlbmRp
ZgogICAgIC8vIElmIHdlIGF0dGVtcHQgdG8gZmV0Y2ggdGhlIG9uLXNjcmVlbiBHcmFwaGljc0Nv
bnRleHQzRCBiZWZvcmUKICAgICAvLyB0aGUgY29tcG9zaXRvciBoYXMgYmVlbiB0dXJuZWQgb24s
IHdlIG5lZWQgdG8gaW5zdGFudGlhdGUgaXQKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5n
ZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwppbmRleCAwNjFhZjdhYzg5NWNkOGE4YjExNzk4
ZjNjMWIxZTkzZGYzNjE2NTYyLi43NTBhOGI1NmYyMzNmODViYTcwOGUyNjRmNGVhYjQwYjhkNTdi
OTc3IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTAtMTAtMjkgIExlYW5kcm8gR3JhY2lhIEdp
bCAgPGxlYW5kcm9ncmFjaWFAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBKZXJl
bXkgT3Jsb3cuCisKKyAgICAgICAgQWRkZWQgYSBzZWNvbmQgcGFyYW1ldGVyIHRvIHNldE1vY2tT
cGVlY2hJbnB1dFJlc3VsdCBmb3IKKyAgICAgICAgdGhlIGxhbmd1YWdlIHVzZWQgaW4gc3BlZWNo
IGlucHV0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDcwODkKKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgKHNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdENhbGxiYWNrKToKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKExh
eW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQpOgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHA6CisgICAgICAg
IChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KToKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW06CisgICAg
ICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KToKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcDoKKyAg
ICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQpOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaDoKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwOgor
ICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdCk6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHA6
CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja1NwZWVjaElucHV0UmVzdWx0
KToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpwYWdlU2l6ZUFuZE1hcmdpbnNJblBp
eGVscyk6CisKIDIwMTAtMTAtMjggIE9qYW4gVmFmYWkgIDxvamFuQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBUb255IENoYW5nLgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwIGIvV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IDgzNjU1YmRkNjUwNjJl
OTUwMmM3MzJlODEzYjE1ZGUzMWUyOTI2Y2IuLjk2MTkzODk3MmQ4ZjIzYjhjMzhiNjQ4NGRiNWEz
MTllZGI1ZjdkYWMgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91
dFRlc3RDb250cm9sbGVyLmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlv
dXRUZXN0Q29udHJvbGxlci5jcHAKQEAgLTEwNzgsMTQgKzEwNzgsMTcgQEAgc3RhdGljIEpTVmFs
dWVSZWYgc2V0TW9ja0dlb2xvY2F0aW9uRXJyb3JDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4
dCwgSlNPYmplY3QKIAogc3RhdGljIEpTVmFsdWVSZWYgc2V0TW9ja1NwZWVjaElucHV0UmVzdWx0
Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09i
amVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJl
ZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewotICAgIGlmIChhcmd1bWVu
dENvdW50IDwgMSkKKyAgICBpZiAoYXJndW1lbnRDb3VudCA8IDIpCiAgICAgICAgIHJldHVybiBK
U1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIAogICAgIEpTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiByZXN1bHQoQWRvcHQsIEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgYXJndW1lbnRz
WzBdLCBleGNlcHRpb24pKTsKICAgICBBU1NFUlQoISpleGNlcHRpb24pOwogCisgICAgSlNSZXRh
aW5QdHI8SlNTdHJpbmdSZWY+IGxhbmd1YWdlKEFkb3B0LCBKU1ZhbHVlVG9TdHJpbmdDb3B5KGNv
bnRleHQsIGFyZ3VtZW50c1sxXSwgZXhjZXB0aW9uKSk7CisgICAgQVNTRVJUKCEqZXhjZXB0aW9u
KTsKKwogICAgIExheW91dFRlc3RDb250cm9sbGVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8
TGF5b3V0VGVzdENvbnRyb2xsZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOwot
ICAgIGNvbnRyb2xsZXItPnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdChyZXN1bHQuZ2V0KCkpOwor
ICAgIGNvbnRyb2xsZXItPnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdChyZXN1bHQuZ2V0KCksIGxh
bmd1YWdlLmdldCgpKTsKIAogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0
KTsKIH0KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RD
b250cm9sbGVyLmggYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJv
bGxlci5oCmluZGV4IDI3NTE4YjcwODA4ODY4ZGU0Y2E3MjYxMzRjNDYyYTllMDk3NGZlZTAuLmI2
MTg2MGJjNjQ2NTI1ZmM3MDdkMTQ2MjA3MDQ2NDBiNWRjYzgzYzQgMTAwNjQ0Ci0tLSBhL1dlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKKysrIGIvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaApAQCAtOTQsNyArOTQs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRNb2NrRGV2aWNlT3JpZW50YXRpb24oYm9vbCBjYW5Q
cm92aWRlQWxwaGEsIGRvdWJsZSBhbHBoYSwgYm9vbCBjYW5Qcm92aWRlQmV0YSwgZG91YmxlIGJl
dGEsIGJvb2wgY2FuUHJvdmlkZUdhbW1hLCBkb3VibGUgZ2FtbWEpOwogICAgIHZvaWQgc2V0TW9j
a0dlb2xvY2F0aW9uRXJyb3IoaW50IGNvZGUsIEpTU3RyaW5nUmVmIG1lc3NhZ2UpOwogICAgIHZv
aWQgc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9u
Z2l0dWRlLCBkb3VibGUgYWNjdXJhY3kpOwotICAgIHZvaWQgc2V0TW9ja1NwZWVjaElucHV0UmVz
dWx0KEpTU3RyaW5nUmVmIHJlc3VsdCk7CisgICAgdm9pZCBzZXRNb2NrU3BlZWNoSW5wdXRSZXN1
bHQoSlNTdHJpbmdSZWYgcmVzdWx0LCBKU1N0cmluZ1JlZiBsYW5ndWFnZSk7CiAgICAgdm9pZCBz
ZXRQZXJzaXN0ZW50VXNlclN0eWxlU2hlZXRMb2NhdGlvbihKU1N0cmluZ1JlZiBwYXRoKTsKICAg
ICB2b2lkIHNldFBsdWdpbnNFbmFibGVkKGJvb2wgZmxhZyk7CiAgICAgdm9pZCBzZXRQb3B1cEJs
b2NraW5nRW5hYmxlZChib29sIGZsYWcpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwIGIvV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IDFh
NjE4N2ViNGVmZDZkNThlNTc1NTU4Y2MxODA5ODE3MGI0Njg0N2QuLmQ3MTNiMDQ0MDg1OWZlZDll
OTZmOTIyNjEwOTJlZDhkYjA1ZGVmYTkgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAorKysgYi9XZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKQEAgLTE1
MzQsMTAgKzE1MzQsMTAgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6YWJvcnRNb2RhbChj
b25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWEKIHZvaWQgTGF5b3V0VGVz
dENvbnRyb2xsZXI6OnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdChjb25zdCBDcHBBcmd1bWVudExp
c3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQogewogICAgIHJlc3VsdC0+c2V0TnVs
bCgpOwotICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpIDwgMSB8fCAhYXJndW1lbnRzWzBdLmlzU3Ry
aW5nKCkpCisgICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgPCAyIHx8ICFhcmd1bWVudHNbMF0uaXNT
dHJpbmcoKSB8fCAhYXJndW1lbnRzWzFdLmlzU3RyaW5nKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIG1fc3BlZWNoSW5wdXRDb250cm9sbGVyTW9jay0+c2V0TW9ja1JlY29nbml0aW9uUmVzdWx0
KGNwcFZhcmlhbnRUb1dlYlN0cmluZyhhcmd1bWVudHNbMF0pKTsKKyAgICBtX3NwZWVjaElucHV0
Q29udHJvbGxlck1vY2stPnNldE1vY2tSZWNvZ25pdGlvblJlc3VsdChjcHBWYXJpYW50VG9XZWJT
dHJpbmcoYXJndW1lbnRzWzBdKSwgY3BwVmFyaWFudFRvV2ViU3RyaW5nKGFyZ3VtZW50c1sxXSkp
OwogfQogCiBXZWJLaXQ6OldlYlNwZWVjaElucHV0Q29udHJvbGxlciogTGF5b3V0VGVzdENvbnRy
b2xsZXI6OnNwZWVjaElucHV0Q29udHJvbGxlcihXZWJLaXQ6OldlYlNwZWVjaElucHV0TGlzdGVu
ZXIqIGxpc3RlbmVyKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3Rr
L0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAKaW5kZXggMDRkOTdlYmUxYzI3YWNhNTUy
NGIyOTE2YmI1ZjZiMDQwMmE1MmJjMy4uNjg4YjNmODM4NDVmNGZiNTU5YWVhNjMwNTRmYzAzYjQz
NDc3YjBmNSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91
dFRlc3RDb250cm9sbGVyR3RrLmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9n
dGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCkBAIC01MDEsNyArNTAxLDcgQEAgdm9pZCBM
YXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKGJvb2wgYWxsb3cp
CiAgICAgc2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uQ29tbW9uKGFsbG93KTsKIH0KIAotdm9pZCBM
YXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KEpTU3RyaW5nUmVm
IHJlc3VsdCkKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tTcGVlY2hJbnB1dFJl
c3VsdChKU1N0cmluZ1JlZiByZXN1bHQsIEpTU3RyaW5nUmVmIGxhbmd1YWdlKQogewogICAgIC8v
IEZJWE1FOiBJbXBsZW1lbnQgZm9yIHNwZWVjaCBpbnB1dCBsYXlvdXQgdGVzdHMuCiAgICAgLy8g
U2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTQ4NS4KZGlmZiAt
LWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxl
ck1hYy5tbSBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJv
bGxlck1hYy5tbQppbmRleCBjNWQ1YTkwNjk1OTliYTRiY2ZjMmFjYTMxMWM3YTNhNzY1YWI1ZTFk
Li4xNTBiNmY5Y2QzYTViY2Y0OTAxMDc3MThkZmZmOTMzZDVjOTRjNGQxIDEwMDY0NAotLS0gYS9X
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0K
KysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVy
TWFjLm1tCkBAIC0zNzEsNyArMzcxLDcgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0
R2VvbG9jYXRpb25QZXJtaXNzaW9uKGJvb2wgYWxsb3cpCiAgICAgW1tbbWFpbkZyYW1lIHdlYlZp
ZXddIFVJRGVsZWdhdGVdIGRpZFNldE1vY2tHZW9sb2NhdGlvblBlcm1pc3Npb25dOwogfQogCi12
b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoSlNTdHJp
bmdSZWYgcmVzdWx0KQordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja1NwZWVjaElu
cHV0UmVzdWx0KEpTU3RyaW5nUmVmIHJlc3VsdCwgSlNTdHJpbmdSZWYgbGFuZ3VhZ2UpCiB7CiAg
ICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3Igc3BlZWNoIGlucHV0IGxheW91dCB0ZXN0cy4KICAg
ICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NDg1Lgpk
aWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRy
b2xsZXJRdC5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29u
dHJvbGxlclF0LmNwcAppbmRleCBiMmMzODA3ZDA2ZmU1YTZjOGViMzEzNGFiZDhiYjAzY2JmYjFi
NWJjLi5mOTllYzRmNzJkYjQzYzM5NjZiMDczODAxMzFlZjgzZjkyZDBhZTQxIDEwMDY0NAotLS0g
YS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNw
cAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxl
clF0LmNwcApAQCAtNzY1LDcgKzc2NSw3IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNl
dE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvCiAgICAg
RHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKGxhdGl0
dWRlLCBsb25naXR1ZGUsIGFjY3VyYWN5KTsKIH0KIAotdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxl
cjo6c2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KGNvbnN0IFFTdHJpbmcmIHJlc3VsdCkKK3ZvaWQg
TGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdChjb25zdCBRU3Ry
aW5nJiByZXN1bHQsIGNvbnN0IFFTdHJpbmcmIGxhbmd1YWdlKQogewogICAgIC8vIEZJWE1FOiBJ
bXBsZW1lbnQgZm9yIHNwZWVjaCBpbnB1dCBsYXlvdXQgdGVzdHMuCiAgICAgLy8gU2VlIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTQ4NS4KZGlmZiAtLWdpdCBhL1dl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaCBiL1dl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaAppbmRl
eCA2OGViZTFkODU5OTJhZTY0ZjllMDllNjQyZjkxMjBlNmM0OTY3ZmM4Li4xMWQ3MmU0NWNmNGVh
MzA3NTljNzZlZTg2YjAwZWIwMTZjZWM0NmE5IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmgKKysrIGIvV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oCkBAIC0yMTYsNyArMjE2
LDcgQEAgcHVibGljIHNsb3RzOgogICAgIGJvb2wgaXNHZW9sb2NhdGlvblBlcm1pc3Npb25TZXQo
KSBjb25zdCB7IHJldHVybiBtX2lzR2VvbG9jYXRpb25QZXJtaXNzaW9uU2V0OyB9CiAgICAgYm9v
bCBnZW9sb2NhdGlvblBlcm1pc3Npb24oKSBjb25zdCB7IHJldHVybiBtX2dlb2xvY2F0aW9uUGVy
bWlzc2lvbjsgfQogCi0gICAgdm9pZCBzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoY29uc3QgUVN0
cmluZyYgcmVzdWx0KTsKKyAgICB2b2lkIHNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdChjb25zdCBR
U3RyaW5nJiByZXN1bHQsIGNvbnN0IFFTdHJpbmcmIGxhbmd1YWdlKTsKIAogICAgIC8vIEVtcHR5
IHN0dWIgbWV0aG9kIHRvIGtlZXAgcGFyaXR5IHdpdGggb2JqZWN0IG1vZGVsIGV4cG9zZWQgYnkg
Z2xvYmFsIExheW91dFRlc3RDb250cm9sbGVyLgogICAgIHZvaWQgYWJvcnRNb2RhbCgpIHt9CmRp
ZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRy
b2xsZXJXaW4uY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RD
b250cm9sbGVyV2luLmNwcAppbmRleCA5ZThlZDFlNjk1N2Q3ZjdjYTRmZWFkOTFkODdiOWI1NmZi
NDIxNDU5Li5kN2M0MWUwYTZiZjU3ZWY0ZDA5OTE1ZTgzYTQ5MjEyNWNkYTU4Y2Q4IDEwMDY0NAot
LS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJX
aW4uY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29u
dHJvbGxlcldpbi5jcHAKQEAgLTQwNSw3ICs0MDUsNyBAQCB2b2lkIExheW91dFRlc3RDb250cm9s
bGVyOjpzZXRHZW9sb2NhdGlvblBlcm1pc3Npb24oYm9vbCBhbGxvdykKICAgICBzZXRHZW9sb2Nh
dGlvblBlcm1pc3Npb25Db21tb24oYWxsb3cpOwogfQogCi12b2lkIExheW91dFRlc3RDb250cm9s
bGVyOjpzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoSlNTdHJpbmdSZWYgcmVzdWx0KQordm9pZCBM
YXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KEpTU3RyaW5nUmVm
IHJlc3VsdCwgSlNTdHJpbmdSZWYgbGFuZ3VhZ2UpCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVu
dCBmb3Igc3BlZWNoIGlucHV0IGxheW91dCB0ZXN0cy4KICAgICAvLyBTZWUgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NDg1LgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAgYi9XZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcAppbmRleCBl
ZWZjNTg3ODFlMGExZWFiY2QwZmQ4MTM4OTMyY2M0M2M0ZDc4NDdmLi4zMjYxNGMxMTMzZGRmOGFh
ZDc3ZWZiMGQxZDRhNmIzMGU0MDExMDhiIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcAorKysgYi9XZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcApAQCAtMzIwLDcgKzMy
MCw3IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEdlb2xvY2F0aW9uUGVybWlzc2lv
bihib29sIGFsbG93KQogICAgIHNldEdlb2xvY2F0aW9uUGVybWlzc2lvbkNvbW1vbihhbGxvdyk7
CiB9CiAKLXZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tTcGVlY2hJbnB1dFJlc3Vs
dChKU1N0cmluZ1JlZiByZXN1bHQpCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2Nr
U3BlZWNoSW5wdXRSZXN1bHQoSlNTdHJpbmdSZWYgcmVzdWx0LCBKU1N0cmluZ1JlZiBsYW5ndWFn
ZSkKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBzcGVlY2ggaW5wdXQgbGF5b3V0IHRl
c3RzLgogICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
Mzk0ODUuCkBAIC01MjgsNCArNTI4LDMgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IExheW91
dFRlc3RDb250cm9sbGVyOjpwYWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVscyhpbnQgcGEKICAgICAv
LyBGSVhNRTogSW1wbGVtZW50CiAgICAgcmV0dXJuIDA7CiB9Ci0K
</data>

          </attachment>
      

    </bug>

</bugzilla>