<?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>43477</bug_id>
          
          <creation_ts>2010-08-04 04:13:51 -0700</creation_ts>
          <short_desc>Add speech input controller mock in WebKit and a layout test.</short_desc>
          <delta_ts>2010-08-05 07:41:16 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Forms</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>39485</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Satish Sampath">satish</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>hans</cc>
    
    <cc>jorlow</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>259964</commentid>
    <comment_count>0</comment_count>
    <who name="Satish Sampath">satish</who>
    <bug_when>2010-08-04 04:13:51 -0700</bug_when>
    <thetext>Input elements in WebCore invoke speech recognition via the WebCore::SpeechInputClient interface. WebKit receives calls on this interface and proxies the requests to the embedder via WebKit::WebSpeechInputController.

https://bugs.webkit.org/show_bug.cgi?id=42603 added a mock class which implements WebCore::SpeechInputClient. In this patch we add WebKit::WebSpeechInputControllerMock which implements WebKit::WebSpeechInputController and proxies the mocking logic to the above WebCore mock class. The embedder (DRT in this case) instantiates this mock class and passes to WebKit as the speech input controller to use in tests.

Also added a layout test which uses the above mock to test the webcore and webkit speech input plumbing code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259967</commentid>
    <comment_count>1</comment_count>
      <attachid>63439</attachid>
    <who name="Satish Sampath">satish</who>
    <bug_when>2010-08-04 04:24:33 -0700</bug_when>
    <thetext>Created attachment 63439
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259972</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-04 04:46:58 -0700</bug_when>
    <thetext>Attachment 63439 did not build on chromium:
Build output: http://queues.webkit.org/results/3624485</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259973</commentid>
    <comment_count>3</comment_count>
      <attachid>63441</attachid>
    <who name="Satish Sampath">satish</who>
    <bug_when>2010-08-04 05:07:03 -0700</bug_when>
    <thetext>Created attachment 63441
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260004</commentid>
    <comment_count>4</comment_count>
      <attachid>63441</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-08-04 06:54:29 -0700</bug_when>
    <thetext>Comment on attachment 63441
Patch

WebKitTools/DumpRenderTree/chromium/WebViewHost.cpp:504
 +  WebKit::WebSpeechInputController* WebViewHost::speechInputController(WebKit::WebSpeechInputListener* listener)
No need for WEbKit::

WebKitTools/DumpRenderTree/chromium/LayoutTestController.h:46
 +  #include &quot;public/WebSpeechInputControllerMock.h&quot;
Are you sure you need to do the include in this file rather than forward declare?

WebKit/chromium/public/WebSpeechInputControllerMock.h:45
 +      virtual void setMockRecognitionResult(const WebString&amp; result) = 0;
Why make this abstract/virtual?

WebKitTools/DumpRenderTree/chromium/LayoutTestController.cpp:1381
 +      m_speechInputControllerMock-&gt;setMockRecognitionResult(cppVariantToWebString(arguments[0]));
Are you sure m_speechInputControllerMock will always be created in time?  I&apos;m not sure it will.

WebKit/chromium/src/WebSpeechInputControllerMockImpl.cpp:44
 +  class WebSpeechInputControllerMockImpl
no need to put on the same line

WebKit/chromium/src/WebSpeechInputControllerMockImpl.cpp:40
 +  #if ENABLE(INPUT_SPEECH)
move above the initial includes....actually delete the guards since it&apos;ll always be on for Chromium

WebKit/chromium/src/WebSpeechInputControllerMockImpl.cpp:64
 +      WebCore::SpeechInputClientMock m_webcoreMock;
Hmm....usually we use an OwnPtr, but I don&apos;t have a good reason why you&apos;d need to.

WebKit/chromium/src/WebSpeechInputControllerMockImpl.cpp:116
 +  #if ENABLE(INPUT_SPEECH)
Just assume INPUT_SPEECH is always on for Chromium

WebKit/chromium/src/WebSpeechInputControllerMockImpl.cpp:44
 +  class WebSpeechInputControllerMockImpl
I&apos;d slightly lean towards moving this impl stuff to a header file.  It just seems weird to have an Impl.cpp whose corresponding .h is of a different name and I don&apos;t know of any other similar examples.

WebKit/chromium/src/WebSpeechInputControllerMockImpl.cpp:113
 +  // Factory method.
I&apos;d put the factory more towards the top.


looks pretty good</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260017</commentid>
    <comment_count>5</comment_count>
      <attachid>63449</attachid>
    <who name="Satish Sampath">satish</who>
    <bug_when>2010-08-04 07:37:11 -0700</bug_when>
    <thetext>Created attachment 63449
Patch

Addressed Jeremy&apos;s comments, more detailed reply below</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260018</commentid>
    <comment_count>6</comment_count>
    <who name="Satish Sampath">satish</who>
    <bug_when>2010-08-04 07:37:40 -0700</bug_when>
    <thetext>(In reply to comment #4)

Addressed all comments, some replies below:

&gt; (From update of attachment 63441 [details])
&gt; WebKitTools/DumpRenderTree/chromium/LayoutTestController.h:46
&gt;  +  #include &quot;public/WebSpeechInputControllerMock.h&quot;
&gt; Are you sure you need to do the include in this file rather than forward declare?

Used forward declaration now, this required TestShell.cpp to also include the mock header file as it constructs the LayoutTestController object.

&gt; WebKit/chromium/public/WebSpeechInputControllerMock.h:45
&gt;  +      virtual void setMockRecognitionResult(const WebString&amp; result) = 0;
&gt; Why make this abstract/virtual?

since it is an interface and the implementation lives in chromium/src/WebSpeechInputControllerMockImpl.h

&gt; WebKitTools/DumpRenderTree/chromium/LayoutTestController.cpp:1381
&gt;  +      m_speechInputControllerMock-&gt;setMockRecognitionResult(cppVariantToWebString(arguments[0]));
&gt; Are you sure m_speechInputControllerMock will always be created in time?  I&apos;m not sure it will.

WebKit::WebViewImpl creates WebKit::SpeechInputClientImpl during construction, which calls the DRT WebViewClient for the speech input controller. The mock gets created in this call and returned to WebKit. So by the time the page loads, the mock is valid and available.

&gt; WebKit/chromium/src/WebSpeechInputControllerMockImpl.cpp:64
&gt;  +      WebCore::SpeechInputClientMock m_webcoreMock;
&gt; Hmm....usually we use an OwnPtr, but I don&apos;t have a good reason why you&apos;d need to.

Made to an OwnPtr now since the class declaration has been moved to impl.h.

&gt; WebKit/chromium/src/WebSpeechInputControllerMockImpl.cpp:44
&gt;  +  class WebSpeechInputControllerMockImpl
&gt; I&apos;d slightly lean towards moving this impl stuff to a header file.  It just seems weird to have an Impl.cpp whose corresponding .h is of a different name and I don&apos;t know of any other similar examples.

Moved class declaration to impl.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260019</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-04 07:39:11 -0700</bug_when>
    <thetext>Attachment 63449 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebKit/chromium/src/WebSpeechInputControllerMockImpl.h:36:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 23 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260020</commentid>
    <comment_count>8</comment_count>
      <attachid>63450</attachid>
    <who name="Satish Sampath">satish</who>
    <bug_when>2010-08-04 07:41:16 -0700</bug_when>
    <thetext>Created attachment 63450
Patch

Patch with style issues fixed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260067</commentid>
    <comment_count>9</comment_count>
      <attachid>63450</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-08-04 09:56:12 -0700</bug_when>
    <thetext>Comment on attachment 63450
Patch

WebKit/chromium/src/WebSpeechInputControllerMockImpl.cpp:69
 +      const WebCore::String&amp; result)
put on one line

WebKit/chromium/src/WebSpeechInputControllerMockImpl.cpp:52
 +  void WebSpeechInputControllerMockImpl::setMockRecognitionResult(
ditto

WebKit/chromium/src/WebSpeechInputControllerMockImpl.cpp:39
 +  // Factory method.
comment not needed

WebKit/chromium/public/WebSpeechInputControllerMock.h:43
 +      static WebSpeechInputControllerMock* create(WebSpeechInputListener* listener);
Add virtual destructor.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260109</commentid>
    <comment_count>10</comment_count>
      <attachid>63469</attachid>
    <who name="Satish Sampath">satish</who>
    <bug_when>2010-08-04 11:11:08 -0700</bug_when>
    <thetext>Created attachment 63469
Patch

Addressed Jeremy&apos;s comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260517</commentid>
    <comment_count>11</comment_count>
      <attachid>63469</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-08-05 04:20:49 -0700</bug_when>
    <thetext>Comment on attachment 63469
Patch

rubber stamp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260606</commentid>
    <comment_count>12</comment_count>
      <attachid>63469</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-08-05 07:41:06 -0700</bug_when>
    <thetext>Comment on attachment 63469
Patch

Clearing flags on attachment: 63469

Committed r64749: &lt;http://trac.webkit.org/changeset/64749&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260607</commentid>
    <comment_count>13</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-08-05 07:41:16 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63439</attachid>
            <date>2010-08-04 04:24:33 -0700</date>
            <delta_ts>2010-08-04 05:06:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43477-20100804122431.patch</filename>
            <type>text/plain</type>
            <size>28345</size>
            <attacher name="Satish Sampath">satish</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyNzk3NGZkYTU1NWNiNTU1ZGIzMDliMzE2MDdlZjU3Y2ZjMmY3YTE3Li40MjYyOTU0
NTcwNjc1YzkxYWViZGY0MjI1OWE3N2I5NTU3MTdkMDE1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTAtMDgtMDQgIFNhdGlzaCBTYW1wYXRoICA8c2F0aXNoQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc3BlZWNoIGlu
cHV0IGNvbnRyb2xsZXIgbW9jayBpbiBXZWJLaXQgYW5kIGEgbGF5b3V0IHRlc3QuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MzQ3NworCisgICAgICAg
ICogZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1zcGVlY2hidXR0b24tZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L3NwZWVjaC9pbnB1dC10ZXh0LXNwZWVjaGJ1dHRvbi5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L3NwZWVjaC9zY3JpcHQtdGVzdHMvaW5wdXQtdGV4dC1zcGVl
Y2hidXR0b24uanM6IEFkZGVkLgorICAgICAgICAob25DaGFuZ2UpOgorICAgICAgICAocnVuKToK
KwogMjAxMC0wOC0wMyAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9zcGVlY2gvaW5wdXQtdGV4dC1zcGVlY2hidXR0b24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1zcGVlY2hidXR0b24tZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjcxNTQ1MmNmZjkzZDBkYTQxNTU3Zjg0ODJjMDcxMWNlZjkwZmY0NzIKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9pbnB1dC10ZXh0LXNwZWVjaGJ1dHRv
bi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw5IEBACitUZXN0cyBmb3Igc3BlZWNoIGJ1dHRvbiBj
bGljayB3aXRoIDxpbnB1dCB0eXBlPSJ0ZXh0IiBzcGVlY2g+Lg0KKw0KK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4NCisNCisNCitQQVNTIGlucHV0LnZhbHVlIGlzICJQaWN0dXJlcyBvZiB0aGUg
bW9vbiINCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlDQorDQorVEVTVCBDT01QTEVU
RQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3Qvc3BlZWNoL2lucHV0LXRleHQtc3BlZWNoYnV0dG9uLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L3NwZWVjaC9pbnB1dC10ZXh0LXNwZWVjaGJ1dHRvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUxZWYwMGI5
M2Q3OWMxNjM2NjZlMDlmYjFkOWE1N2EwNmFmYTNkNzYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L3NwZWVjaC9pbnB1dC10ZXh0LXNwZWVjaGJ1dHRvbi5odG1sCkBAIC0wLDAg
KzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4K
KzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2pzL3Jlc291
cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0
aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQt
dGVzdHMvaW5wdXQtdGV4dC1zcGVlY2hidXR0b24uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvc2NyaXB0LXRlc3RzL2lu
cHV0LXRleHQtc3BlZWNoYnV0dG9uLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvc2NyaXB0
LXRlc3RzL2lucHV0LXRleHQtc3BlZWNoYnV0dG9uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM2NTEyYmM5NDhi
ZGM4ZjY3MmFiYjYwMjI1NjRhYWRkYzFlYWVhZDMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L3NwZWVjaC9zY3JpcHQtdGVzdHMvaW5wdXQtdGV4dC1zcGVlY2hidXR0b24uanMK
QEAgLTAsMCArMSwzMCBAQAorZGVzY3JpcHRpb24oJ1Rlc3RzIGZvciBzcGVlY2ggYnV0dG9uIGNs
aWNrIHdpdGggJmx0O2lucHV0IHR5cGU9InRleHQiIHNwZWVjaD4uJyk7CisKK2Z1bmN0aW9uIG9u
Q2hhbmdlKCkgeworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInNwZWVjaElucHV0IikudmFsdWUnLCAnUGljdHVyZXMgb2YgdGhlIG1vb24nKTsKKyAg
ICBmaW5pc2hKU1Rlc3QoKTsKK30KKworZnVuY3Rpb24gcnVuKCkgeworICB2YXIgaW5wdXQgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpOworICBpbnB1dC5pZCA9ICdzcGVlY2hJbnB1
dCc7CisgIGlucHV0LnNwZWVjaCA9ICdzcGVlY2gnOworICBpbnB1dC5hZGRFdmVudExpc3RlbmVy
KCdjaGFuZ2UnLCBvbkNoYW5nZSwgZmFsc2UpOworICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxk
KGlucHV0KTsKKworICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KCdQaWN0dXJlcyBvZiB0
aGUgbW9vbicpOworCisgIC8vIENsaWNraW5nIHRoZSBzcGVlY2ggYnV0dG9uIHNob3VsZCBmaWxs
IGluIG1vY2sgc3BlZWNoLXJlY29nbml6ZWQgdGV4dC4KKyAgaWYgKHdpbmRvdy5ldmVudFNlbmRl
cikgeworICAgICAgdmFyIHggPSBpbnB1dC5vZmZzZXRMZWZ0ICsgaW5wdXQub2Zmc2V0V2lkdGgg
LSA0OworICAgICAgdmFyIHkgPSBpbnB1dC5vZmZzZXRUb3AgKyBpbnB1dC5vZmZzZXRIZWlnaHQg
LyAyOworICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgICBldmVudFNl
bmRlci5tb3VzZURvd24oKTsKKyAgICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgfQorfQor
Cit3aW5kb3cub25sb2FkID0gcnVuOword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOword2lu
ZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBiYmRmMDM1NzNi
Nzg5NzJhMTgzNWZlMDhiYzA2YzMwNmIwNDNjZTUzLi5jZjIwYThmOWZiOTAyYzBlMzdiNmYxZDg2
ODE2MzFlYmYzYzc1MDY2IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisr
KyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxMC0wOC0w
NCAgU2F0aXNoIFNhbXBhdGggIDxzYXRpc2hAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzcGVlY2ggaW5wdXQgY29udHJv
bGxlciBtb2NrIGluIFdlYktpdCBhbmQgYSBsYXlvdXQgdGVzdC4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQzNDc3CisKKyAgICAgICAgKiBXZWJLaXQu
Z3lwOgorICAgICAgICAqIHB1YmxpYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrLmg6IEFk
ZGVkIFdlYktpdCBzcGVlY2ggaW5wdXQgY29udHJvbGxlciBtb2NrIGludGVyZmFjZS4KKyAgICAg
ICAgKiBzcmMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGwuY3BwOiBBZGRlZCBpbXBs
ZW1lbnRhdGlvbiBvZiB0aGUgYWJvdmUgbW9jay4KKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNo
SW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OldlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBs
KToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OnNl
dE1vY2tSZWNvZ25pdGlvblJlc3VsdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaElucHV0
Q29udHJvbGxlck1vY2tJbXBsOjpkaWRDb21wbGV0ZVJlY29yZGluZyk6CisgICAgICAgIChXZWJL
aXQ6OldlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsOjpkaWRDb21wbGV0ZVJlY29nbml0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6
OnNldFJlY29nbml0aW9uUmVzdWx0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoSW5wdXRD
b250cm9sbGVyTW9ja0ltcGw6OnN0YXJ0UmVjb2duaXRpb24pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6Y2FuY2VsUmVjb2duaXRpb24pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6c3RvcFJlY29y
ZGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2s6OmNy
ZWF0ZSk6CisKIDIwMTAtMDgtMDMgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBGaXNoZXIuCmRpZmYgLS1naXQgYS9XZWJL
aXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4
IDlkYTg1Y2Q3Y2EzOGM1MDcyNzgxMzE1ODA3ZWMzOTVjZGI1YmQyNDQuLjI2ODJhNjllZWM0OTMx
ZWNiYWYxMGE5ZTZlZjUwZWM4MDNjMDM2OTUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9X
ZWJLaXQuZ3lwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC0yNDAsNiArMjQw
LDcgQEAKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlNvY2tldFN0cmVhbUhhbmRsZS5oJywK
ICAgICAgICAgICAgICAgICAncHVibGljL1dlYlNvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oJywK
ICAgICAgICAgICAgICAgICAncHVibGljL1dlYlNwZWVjaElucHV0Q29udHJvbGxlci5oJywKKyAg
ICAgICAgICAgICAgICAncHVibGljL1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2suaCcsCiAg
ICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJTcGVlY2hJbnB1dExpc3RlbmVyLmgnLAogICAgICAg
ICAgICAgICAgICdwdWJsaWMvV2ViU3RvcmFnZUFyZWEuaCcsCiAgICAgICAgICAgICAgICAgJ3B1
YmxpYy9XZWJTdG9yYWdlRXZlbnREaXNwYXRjaGVyLmgnLApAQCAtNDYzLDYgKzQ2NCw3IEBACiAg
ICAgICAgICAgICAgICAgJ3NyYy9XZWJTZXR0aW5nc0ltcGwuaCcsCiAgICAgICAgICAgICAgICAg
J3NyYy9XZWJTaGFyZWRXb3JrZXJJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJT
aGFyZWRXb3JrZXJJbXBsLmgnLAorICAgICAgICAgICAgICAgICdzcmMvV2ViU3BlZWNoSW5wdXRD
b250cm9sbGVyTW9ja0ltcGwuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlN0b3JhZ2VB
cmVhSW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViU3RvcmFnZUFyZWFJbXBsLmgn
LAogICAgICAgICAgICAgICAgICdzcmMvV2ViU3RvcmFnZUV2ZW50RGlzcGF0Y2hlckltcGwuY3Bw
JywKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoSW5wdXRDb250
cm9sbGVyTW9jay5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hJbnB1dENvbnRy
b2xsZXJNb2NrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODdhNDY0ZmZjNTUyY2ZjNjdjMDY2YzhjYmI2NzhlYmVl
Mjk2MWJkZgotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3Bl
ZWNoSW5wdXRDb250cm9sbGVyTW9jay5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlNwZWVj
aElucHV0Q29udHJvbGxlck1vY2tfaAorI2RlZmluZSBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJN
b2NrX2gKKworI2luY2x1ZGUgIldlYlNwZWVjaElucHV0Q29udHJvbGxlci5oIgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworY2xhc3MgV2ViU3RyaW5nOworY2xhc3MgV2ViU3BlZWNoSW5wdXRMaXN0
ZW5lcjsKKworY2xhc3MgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9jayA6IHB1YmxpYyBXZWJT
cGVlY2hJbnB1dENvbnRyb2xsZXIgeworcHVibGljOgorICAgIHN0YXRpYyBXZWJTcGVlY2hJbnB1
dENvbnRyb2xsZXJNb2NrKiBjcmVhdGUoV2ViU3BlZWNoSW5wdXRMaXN0ZW5lciogbGlzdGVuZXIp
OworCisgICAgdmlydHVhbCB2b2lkIHNldE1vY2tSZWNvZ25pdGlvblJlc3VsdChjb25zdCBXZWJT
dHJpbmcmIHJlc3VsdCkgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xs
ZXJNb2NrSW1wbC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNwZWVjaElucHV0Q29udHJv
bGxlck1vY2tJbXBsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jOTFkMTFlYjY4NmE5NTg0Nzk4YTljN2IzNWFl
MjBkMDRlYjcwYjY5Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJT
cGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbC5jcHAKQEAgLTAsMCArMSwxMjMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlz
dHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9jay5oIgor
CisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJTcGVlY2hJbnB1dENsaWVu
dE1vY2suaCIKKyNpbmNsdWRlICJTcGVlY2hJbnB1dExpc3RlbmVyLmgiCisjaW5jbHVkZSAiV2Vi
U3BlZWNoSW5wdXRMaXN0ZW5lci5oIgorI2luY2x1ZGUgIldlYlN0cmluZy5oIgorCisjaWYgRU5B
QkxFKElOUFVUX1NQRUVDSCkKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlNwZWVj
aElucHV0Q29udHJvbGxlck1vY2tJbXBsCisgICAgOiBwdWJsaWMgV2ViQ29yZTo6U3BlZWNoSW5w
dXRMaXN0ZW5lciwKKyAgICAgIHB1YmxpYyBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrIHsK
K3B1YmxpYzoKKyAgICBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbChXZWJTcGVlY2hJ
bnB1dExpc3RlbmVyKik7CisKKyAgICAvLyBXZWJDb3JlOjpTcGVlY2hJbnB1dExpc3RlbmVyIG1l
dGhvZHMuCisgICAgdm9pZCBkaWRDb21wbGV0ZVJlY29yZGluZygpOworICAgIHZvaWQgZGlkQ29t
cGxldGVSZWNvZ25pdGlvbigpOworICAgIHZvaWQgc2V0UmVjb2duaXRpb25SZXN1bHQoY29uc3Qg
V2ViQ29yZTo6U3RyaW5nJiByZXN1bHQpOworCisgICAgLy8gV2ViU3BlZWNoSW5wdXRDb250cm9s
bGVyIG1ldGhvZHMuCisgICAgYm9vbCBzdGFydFJlY29nbml0aW9uKCk7CisgICAgdm9pZCBjYW5j
ZWxSZWNvZ25pdGlvbigpOworICAgIHZvaWQgc3RvcFJlY29yZGluZygpOworCisgICAgLy8gV2Vi
U3BlZWNoSW5wdXRDb250cm9sbGVyTW9jayBtZXRob2RzLgorICAgIHZvaWQgc2V0TW9ja1JlY29n
bml0aW9uUmVzdWx0KGNvbnN0IFdlYlN0cmluZyYgcmVzdWx0KTsKKworcHJpdmF0ZToKKyAgICBX
ZWJDb3JlOjpTcGVlY2hJbnB1dENsaWVudE1vY2sgbV93ZWJjb3JlTW9jazsKKyAgICBXZWJTcGVl
Y2hJbnB1dExpc3RlbmVyKiBtX2xpc3RlbmVyOworfTsKKworV2ViU3BlZWNoSW5wdXRDb250cm9s
bGVyTW9ja0ltcGw6OldlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsKAorICAgIFdlYlNw
ZWVjaElucHV0TGlzdGVuZXIqIGxpc3RlbmVyKQorICAgIDogbV9saXN0ZW5lcihsaXN0ZW5lcikK
K3sKK30KKwordm9pZCBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6c2V0TW9ja1Jl
Y29nbml0aW9uUmVzdWx0KAorICAgIGNvbnN0IFdlYlN0cmluZyYgcmVzdWx0KQoreworICAgIG1f
d2ViY29yZU1vY2suc2V0UmVjb2duaXRpb25SZXN1bHQocmVzdWx0KTsKK30KKwordm9pZCBXZWJT
cGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6ZGlkQ29tcGxldGVSZWNvcmRpbmcoKQorewor
ICAgIG1fbGlzdGVuZXItPmRpZENvbXBsZXRlUmVjb3JkaW5nKCk7Cit9CisKK3ZvaWQgV2ViU3Bl
ZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OmRpZENvbXBsZXRlUmVjb2duaXRpb24oKQorewor
ICAgIG1fbGlzdGVuZXItPmRpZENvbXBsZXRlUmVjb2duaXRpb24oKTsKK30KKwordm9pZCBXZWJT
cGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6c2V0UmVjb2duaXRpb25SZXN1bHQoCisgICAg
Y29uc3QgV2ViQ29yZTo6U3RyaW5nJiByZXN1bHQpCit7CisgICAgbV9saXN0ZW5lci0+c2V0UmVj
b2duaXRpb25SZXN1bHQocmVzdWx0KTsKK30KKworYm9vbCBXZWJTcGVlY2hJbnB1dENvbnRyb2xs
ZXJNb2NrSW1wbDo6c3RhcnRSZWNvZ25pdGlvbigpCit7CisgICAgcmV0dXJuIG1fd2ViY29yZU1v
Y2suc3RhcnRSZWNvZ25pdGlvbih0aGlzKTsKK30KKwordm9pZCBXZWJTcGVlY2hJbnB1dENvbnRy
b2xsZXJNb2NrSW1wbDo6Y2FuY2VsUmVjb2duaXRpb24oKQoreworICAgIG1fd2ViY29yZU1vY2su
Y2FuY2VsUmVjb2duaXRpb24oKTsKK30KKwordm9pZCBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJN
b2NrSW1wbDo6c3RvcFJlY29yZGluZygpCit7CisgICAgbV93ZWJjb3JlTW9jay5zdG9wUmVjb3Jk
aW5nKCk7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5QVVRfU1BFRUNIKQorCisvLyBGYWN0b3J5
IG1ldGhvZC4KK1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2sqIFdlYlNwZWVjaElucHV0Q29u
dHJvbGxlck1vY2s6OmNyZWF0ZShXZWJTcGVlY2hJbnB1dExpc3RlbmVyKiBsaXN0ZW5lcikKK3sK
KyNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQorICAgIHJldHVybiBuZXcgV2ViU3BlZWNoSW5wdXRD
b250cm9sbGVyTW9ja0ltcGwobGlzdGVuZXIpOworI2Vsc2UKKyAgICByZXR1cm4gMDsKKyNlbmRp
ZgorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0No
YW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwppbmRleCAyYzA1YWM1ZTczNzNiNmQ0YTgy
MGUyNjc4Y2ZiYjE0OTE1MDZjNTY5Li4zOTgwYzM2YWI2Y2ZkNTNkZjI4ZTJiM2Q0N2M5ZDI2MjQ3
NWQ4MDNiIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9v
bHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTAtMDgtMDQgIFNhdGlzaCBTYW1wYXRo
ICA8c2F0aXNoQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgc3BlZWNoIGlucHV0IGNvbnRyb2xsZXIgbW9jayBpbiBXZWJL
aXQgYW5kIGEgbGF5b3V0IHRlc3QuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00MzQ3NworCisgICAgICAgIEFkZGVkIExheW91dFRlc3RDb250cm9sbGVy
OjpzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHRDYWxsYmFjayBtZXRob2QuCisKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChzZXRNb2Nr
U3BlZWNoSW5wdXRSZXN1bHRDYWxsYmFjayk6IFdyYXBwZXIgaW52b2tpbmcgdGhlIG1lbWJlciBm
dW5jdGlvbi4KKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzdGF0aWNGdW5jdGlvbnMp
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmg6CisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OkxheW91dFRlc3RDb250cm9sbGVyKToKKyAg
ICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQpOiBT
ZXRzIHRoZSBtb2NrIHJlc3VsdC4KKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzcGVl
Y2hJbnB1dENvbnRyb2xsZXIpOiBDcmVhdGVzIHRoZSBtb2NrIGNvbnRyb2xsZXIuCisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaDoKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHA6CisgICAgICAgIChX
ZWJWaWV3SG9zdDo6c3BlZWNoSW5wdXRDb250cm9sbGVyKTogQ3JlYXRlcyB0aGUgbW9jayBjb250
cm9sbGVyLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0Lmg6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNw
cDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrU3BlZWNoSW5wdXRSZXN1
bHQpOiBkdW1teSBtZXRob2QuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRl
c3RDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1v
Y2tTcGVlY2hJbnB1dFJlc3VsdCk6IGR1bW15IG1ldGhvZC4KKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcDoKKyAgICAgICAgKExheW91dFRlc3RD
b250cm9sbGVyOjpzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQpOiBkdW1teSBtZXRob2QuCisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oOgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHA6IGR1bW15
IG1ldGhvZC4KKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrU3BlZWNoSW5w
dXRSZXN1bHQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9s
bGVyV3guY3BwOiBkdW1teSBtZXRob2QuCisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6
c2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KToKKwogMjAxMC0wOC0wMyAgS2VudCBUYW11cmEgIDx0
a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292
LgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRy
b2xsZXIuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xs
ZXIuY3BwCmluZGV4IDNkOTFlMGMzZGI4YmZhYjA2ZWRlYjk4ZWRmMDNmOTAzMDc3ZWQxZTAuLmJj
YjY3NmUzNjc5NDNmYmFkNTc4Mzk3NjBkNGE4NWZiM2IzMDI5NDMgMTAwNjQ0Ci0tLSBhL1dlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAorKysgYi9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKQEAgLTEwNTAs
NiArMTA1MCwyMCBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBzZXRNb2NrR2VvbG9jYXRpb25FcnJvckNh
bGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdAogICAgIHJldHVybiBKU1ZhbHVl
TWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KIAorc3RhdGljIEpTVmFsdWVSZWYgc2V0TW9ja1Nw
ZWVjaElucHV0UmVzdWx0Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVm
IGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwg
Y29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQorewor
ICAgIGlmIChhcmd1bWVudENvdW50IDwgMSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5k
ZWZpbmVkKGNvbnRleHQpOworCisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHJlc3VsdChB
ZG9wdCwgSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBhcmd1bWVudHNbMF0sIGV4Y2VwdGlv
bikpOworICAgIEFTU0VSVCghKmV4Y2VwdGlvbik7CisKKyAgICBMYXlvdXRUZXN0Q29udHJvbGxl
ciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PExheW91dFRlc3RDb250cm9sbGVyKj4oSlNPYmpl
Y3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKKyAgICBjb250cm9sbGVyLT5zZXRNb2NrU3BlZWNo
SW5wdXRSZXN1bHQocmVzdWx0LmdldCgpKTsKKworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVm
aW5lZChjb250ZXh0KTsKK30KKwogc3RhdGljIEpTVmFsdWVSZWYgc2V0TmV3V2luZG93c0NvcHlC
YWNrRm9yd2FyZExpc3RDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYg
ZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBj
b25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAg
ICAgLy8gSGFzIG1hYyBpbXBsZW1lbnRhdGlvbgpAQCAtMTg4Miw2ICsxODk2LDcgQEAgSlNTdGF0
aWNGdW5jdGlvbiogTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN0YXRpY0Z1bmN0aW9ucygpCiAgICAg
ICAgIHsgInNldE1vY2tEZXZpY2VPcmllbnRhdGlvbiIsIHNldE1vY2tEZXZpY2VPcmllbnRhdGlv
bkNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRy
aWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldE1vY2tHZW9sb2NhdGlvbkVycm9yIiwg
c2V0TW9ja0dlb2xvY2F0aW9uRXJyb3JDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFk
T25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRN
b2NrR2VvbG9jYXRpb25Qb3NpdGlvbiIsIHNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uQ2FsbGJh
Y2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURv
bnREZWxldGUgfSwKKyAgICAgICAgeyAic2V0TW9ja1NwZWVjaElucHV0UmVzdWx0Iiwgc2V0TW9j
a1NwZWVjaElucHV0UmVzdWx0Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkg
fCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0TmV3V2lu
ZG93c0NvcHlCYWNrRm9yd2FyZExpc3QiLCBzZXROZXdXaW5kb3dzQ29weUJhY2tGb3J3YXJkTGlz
dENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRy
aWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldFBPU0lYTG9jYWxlIiwgc2V0UE9TSVhM
b2NhbGVDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5
QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRQZXJzaXN0ZW50VXNlclN0eWxl
U2hlZXRMb2NhdGlvbiIsIHNldFBlcnNpc3RlbnRVc2VyU3R5bGVTaGVldExvY2F0aW9uQ2FsbGJh
Y2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURv
bnREZWxldGUgfSwKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91
dFRlc3RDb250cm9sbGVyLmggYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0
Q29udHJvbGxlci5oCmluZGV4IDlkMTVmNGM2NjZhNmNlZGQ0M2ZlMmQyZjAwODI4ZmEwMWRlNGE4
YmEuLjU4MmFjZTVlZDNmNGVlODEwOTc0OTM3MjJkYjVlNDNmYjU3YzcwMWIgMTAwNjQ0Ci0tLSBh
L1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKKysrIGIv
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaApAQCAtOTMs
NiArOTMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRNb2NrRGV2aWNlT3JpZW50YXRpb24oYm9v
bCBjYW5Qcm92aWRlQWxwaGEsIGRvdWJsZSBhbHBoYSwgYm9vbCBjYW5Qcm92aWRlQmV0YSwgZG91
YmxlIGJldGEsIGJvb2wgY2FuUHJvdmlkZUdhbW1hLCBkb3VibGUgZ2FtbWEpOwogICAgIHZvaWQg
c2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IoaW50IGNvZGUsIEpTU3RyaW5nUmVmIG1lc3NhZ2UpOwog
ICAgIHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oZG91YmxlIGxhdGl0dWRlLCBkb3Vi
bGUgbG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJhY3kpOworICAgIHZvaWQgc2V0TW9ja1NwZWVjaElu
cHV0UmVzdWx0KEpTU3RyaW5nUmVmIHJlc3VsdCk7CiAgICAgdm9pZCBzZXRQZXJzaXN0ZW50VXNl
clN0eWxlU2hlZXRMb2NhdGlvbihKU1N0cmluZ1JlZiBwYXRoKTsKICAgICB2b2lkIHNldFBsdWdp
bnNFbmFibGVkKGJvb2wgZmxhZyk7CiAgICAgdm9pZCBzZXRQb3B1cEJsb2NraW5nRW5hYmxlZChi
b29sIGZsYWcpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IGRkMDc2YWViYjk5MmIwMGE4
YzhkNGE4ZGQ0MDU0OTliZWRiZGI2ZWYuLmFjNzY1MTY5ZDAwMzVjNzU1ZmRiYzlmODQyZTkxYzdl
MGMyMWYzNjcgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L0xheW91dFRlc3RDb250cm9sbGVyLmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAKICNp
bmNsdWRlICJwdWJsaWMvV2ViU2VjdXJpdHlQb2xpY3kuaCIKICNpbmNsdWRlICJwdWJsaWMvV2Vi
U2V0dGluZ3MuaCIKICNpbmNsdWRlICJwdWJsaWMvV2ViU2l6ZS5oIgorI2luY2x1ZGUgInB1Ymxp
Yy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrLmgiCiAjaW5jbHVkZSAicHVibGljL1dlYlVS
TC5oIgogI2luY2x1ZGUgInB1YmxpYy9XZWJWaWV3LmgiCiAjaW5jbHVkZSAid2Via2l0L3N1cHBv
cnQvd2Via2l0X3N1cHBvcnQuaCIKQEAgLTE3NCw2ICsxNzUsNyBAQCBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6TGF5b3V0VGVzdENvbnRyb2xsZXIoVGVzdFNoZWxsKiBzaGVsbCkKICAgICBiaW5kTWV0
aG9kKCJzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbiIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6
c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24pOwogICAgIGJpbmRNZXRob2QoInNldE1vY2tHZW9s
b2NhdGlvbkVycm9yIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrR2VvbG9jYXRpb25F
cnJvcik7CiAgICAgYmluZE1ldGhvZCgiYWJvcnRNb2RhbCIsICZMYXlvdXRUZXN0Q29udHJvbGxl
cjo6YWJvcnRNb2RhbCk7CisgICAgYmluZE1ldGhvZCgic2V0TW9ja1NwZWVjaElucHV0UmVzdWx0
IiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQpOwogCiAg
ICAgLy8gVGhlIGZhbGxiYWNrIG1ldGhvZCBpcyBjYWxsZWQgd2hlbiBhbiB1bmtub3duIG1ldGhv
ZCBpcyBpbnZva2VkLgogICAgIGJpbmRGYWxsYmFja01ldGhvZCgmTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OmZhbGxiYWNrTWV0aG9kKTsKQEAgLTEzNjksMyArMTM3MSwxOSBAQCB2b2lkIExheW91dFRl
c3RDb250cm9sbGVyOjphYm9ydE1vZGFsKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRz
LCBDcHBWYXJpYQogewogICAgIHJlc3VsdC0+c2V0TnVsbCgpOwogfQorCit2b2lkIExheW91dFRl
c3RDb250cm9sbGVyOjpzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoY29uc3QgQ3BwQXJndW1lbnRM
aXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKK3sKKyAgICByZXN1bHQtPnNldE51
bGwoKTsKKyAgICBpZiAoYXJndW1lbnRzLnNpemUoKSA8IDEgfHwgIWFyZ3VtZW50c1swXS5pc1N0
cmluZygpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3NwZWVjaElucHV0Q29udHJvbGxlck1v
Y2stPnNldE1vY2tSZWNvZ25pdGlvblJlc3VsdChjcHBWYXJpYW50VG9XZWJTdHJpbmcoYXJndW1l
bnRzWzBdKSk7Cit9CisKK1dlYktpdDo6V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyKiBMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6c3BlZWNoSW5wdXRDb250cm9sbGVyKFdlYktpdDo6V2ViU3BlZWNoSW5w
dXRMaXN0ZW5lciogbGlzdGVuZXIpCit7CisgICAgaWYgKCFtX3NwZWVjaElucHV0Q29udHJvbGxl
ck1vY2suZ2V0KCkpCisgICAgICAgIG1fc3BlZWNoSW5wdXRDb250cm9sbGVyTW9jay5zZXQoV2Vi
U3BlZWNoSW5wdXRDb250cm9sbGVyTW9jazo6Y3JlYXRlKGxpc3RlbmVyKSk7CisgICAgcmV0dXJu
IG1fc3BlZWNoSW5wdXRDb250cm9sbGVyTW9jay5nZXQoKTsKK30KZGlmZiAtLWdpdCBhL1dlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmggYi9X
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5o
CmluZGV4IDA5NmQxZGYwMTBlNGU0YzdkYTA1NWZiYTMwZDdjMTI5MjI1OTU4NGMuLjM4ZjZhMmJi
YjFkNzQ4NDI2NTYxYTVhODg5OTI0YmMwOWQxYWIxN2MgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmgKKysrIGIvV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaApA
QCAtNDksNiArNDksMTIgQEAKIAogY2xhc3MgVGVzdFNoZWxsOwogCituYW1lc3BhY2UgV2ViS2l0
IHsKK2NsYXNzIFdlYlNwZWVjaElucHV0Q29udHJvbGxlcjsKK2NsYXNzIFdlYlNwZWVjaElucHV0
Q29udHJvbGxlck1vY2s7CitjbGFzcyBXZWJTcGVlY2hJbnB1dExpc3RlbmVyOworfQorCiBjbGFz
cyBMYXlvdXRUZXN0Q29udHJvbGxlciA6IHB1YmxpYyBDcHBCb3VuZENsYXNzIHsKIHB1YmxpYzoK
ICAgICAvLyBCdWlsZHMgdGhlIHByb3BlcnR5IGFuZCBtZXRob2QgbGlzdHMgbmVlZGVkIHRvIGJp
bmQgdGhpcyBjbGFzcyB0byBhIEpTCkBAIC0yOTgsMTAgKzMwNCwxNCBAQCBwdWJsaWM6CiAgICAg
Ly8gRW1wdHkgc3R1YiBtZXRob2QgdG8ga2VlcCBwYXJpdHkgd2l0aCBvYmplY3QgbW9kZWwgZXhw
b3NlZCBieSBnbG9iYWwgTGF5b3V0VGVzdENvbnRyb2xsZXIuCiAgICAgdm9pZCBhYm9ydE1vZGFs
KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKIAorICAgIC8vIFNwZWVjaCBp
bnB1dCByZWxhdGVkIGZ1bmN0aW9ucy4KKyAgICB2b2lkIHNldE1vY2tTcGVlY2hJbnB1dFJlc3Vs
dChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CisKIHB1YmxpYzoKICAgICAv
LyBUaGUgZm9sbG93aW5nIG1ldGhvZHMgYXJlIG5vdCBleHBvc2VkIHRvIEphdmFTY3JpcHQuCiAg
ICAgdm9pZCBzZXRXb3JrUXVldWVGcm96ZW4oYm9vbCBmcm96ZW4pIHsgbV93b3JrUXVldWUuc2V0
RnJvemVuKGZyb3plbik7IH0KIAorICAgIFdlYktpdDo6V2ViU3BlZWNoSW5wdXRDb250cm9sbGVy
KiBzcGVlY2hJbnB1dENvbnRyb2xsZXIoV2ViS2l0OjpXZWJTcGVlY2hJbnB1dExpc3RlbmVyKik7
CiAgICAgYm9vbCBzaG91bGREdW1wQXNUZXh0KCkgeyByZXR1cm4gbV9kdW1wQXNUZXh0OyB9CiAg
ICAgYm9vbCBzaG91bGREdW1wRWRpdGluZ0NhbGxiYWNrcygpIHsgcmV0dXJuIG1fZHVtcEVkaXRp
bmdDYWxsYmFja3M7IH0KICAgICBib29sIHNob3VsZER1bXBGcmFtZUxvYWRDYWxsYmFja3MoKSB7
IHJldHVybiBtX2R1bXBGcmFtZUxvYWRDYWxsYmFja3M7IH0KQEAgLTQ3Miw2ICs0ODIsOCBAQCBw
cml2YXRlOgogICAgIENwcFZhcmlhbnQgbV93ZWJIaXN0b3J5SXRlbUNvdW50OwogCiAgICAgV2Vi
S2l0OjpXZWJVUkwgbV91c2VyU3R5bGVTaGVldExvY2F0aW9uOworCisgICAgT3duUHRyPFdlYktp
dDo6V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9jaz4gbV9zcGVlY2hJbnB1dENvbnRyb2xsZXJN
b2NrOwogfTsKIAogI2VuZGlmIC8vIExheW91dFRlc3RDb250cm9sbGVyX2gKZGlmZiAtLWdpdCBh
L1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcCBiL1dl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcAppbmRleCBl
ZDM3YTMxZTI5OWQ3NzI5NjE4ZmY0N2VjNTc0ZDBhODZjMTBkNzEyLi41MGJjMzFkOGJlY2Y0ZmUy
N2RiNzViYjZiMzcwODM2ODU0ZTRmZWRiIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCkBAIC01MDEsNiArNTAxLDExIEBAIFdl
YktpdDo6V2ViR2VvbG9jYXRpb25TZXJ2aWNlKiBXZWJWaWV3SG9zdDo6Z2VvbG9jYXRpb25TZXJ2
aWNlKCkKICAgICByZXR1cm4gbV9nZW9sb2NhdGlvblNlcnZpY2VNb2NrLmdldCgpOwogfQogCitX
ZWJLaXQ6OldlYlNwZWVjaElucHV0Q29udHJvbGxlciogV2ViVmlld0hvc3Q6OnNwZWVjaElucHV0
Q29udHJvbGxlcihXZWJLaXQ6OldlYlNwZWVjaElucHV0TGlzdGVuZXIqIGxpc3RlbmVyKQorewor
ICAgIHJldHVybiBtX3NoZWxsLT5sYXlvdXRUZXN0Q29udHJvbGxlcigpLT5zcGVlY2hJbnB1dENv
bnRyb2xsZXIobGlzdGVuZXIpOworfQorCiAvLyBXZWJXaWRnZXRDbGllbnQgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogdm9pZCBX
ZWJWaWV3SG9zdDo6ZGlkSW52YWxpZGF0ZVJlY3QoY29uc3QgV2ViUmVjdCYgcmVjdCkKZGlmZiAt
LWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0Lmgg
Yi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oCmluZGV4
IDFlNTFiZTcxNGRiMDA5MjU0Nzc0Nzc0NjQyZGMwYWZlNTExYzJlNGUuLmMxNzVlNjFjNjU1NDk2
NzYwYzcyMDYzNDFkMWI1MTRhNDljNDZhYjUgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaApAQCAtNDYsNiArNDYsOCBAQCBjbGFzcyBU
ZXN0U2hlbGw7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYkZyYW1lOwogY2xhc3MgV2Vi
R2VvbG9jYXRpb25TZXJ2aWNlTW9jazsKK2NsYXNzIFdlYlNwZWVjaElucHV0Q29udHJvbGxlcjsK
K2NsYXNzIFdlYlNwZWVjaElucHV0TGlzdGVuZXI7CiBjbGFzcyBXZWJVUkw7CiBzdHJ1Y3QgV2Vi
UmVjdDsKIHN0cnVjdCBXZWJVUkxFcnJvcjsKQEAgLTEyNiw2ICsxMjgsNyBAQCBjbGFzcyBXZWJW
aWV3SG9zdCA6IHB1YmxpYyBXZWJLaXQ6OldlYlZpZXdDbGllbnQsIHB1YmxpYyBXZWJLaXQ6Oldl
YkZyYW1lQ2xpZW50LAogICAgIHZpcnR1YWwgdm9pZCBmb2N1c0FjY2Vzc2liaWxpdHlPYmplY3Qo
Y29uc3QgV2ViS2l0OjpXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0Jik7CiAgICAgdmlydHVhbCBXZWJL
aXQ6OldlYk5vdGlmaWNhdGlvblByZXNlbnRlciogbm90aWZpY2F0aW9uUHJlc2VudGVyKCk7CiAg
ICAgdmlydHVhbCBXZWJLaXQ6OldlYkdlb2xvY2F0aW9uU2VydmljZSogZ2VvbG9jYXRpb25TZXJ2
aWNlKCk7CisgICAgdmlydHVhbCBXZWJLaXQ6OldlYlNwZWVjaElucHV0Q29udHJvbGxlciogc3Bl
ZWNoSW5wdXRDb250cm9sbGVyKFdlYktpdDo6V2ViU3BlZWNoSW5wdXRMaXN0ZW5lciopOwogCiAg
ICAgLy8gV2ViS2l0OjpXZWJXaWRnZXRDbGllbnQKICAgICB2aXJ0dWFsIHZvaWQgZGlkSW52YWxp
ZGF0ZVJlY3QoY29uc3QgV2ViS2l0OjpXZWJSZWN0Jik7CmRpZmYgLS1naXQgYS9XZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwIGIvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcAppbmRl
eCAyOWE5NmYxODY5ODExOWViMDIwNDI5OGYxNmQ3NWVlZDQ0ZGJkY2I0Li4zZTFiMzExODg0YzQz
ODhhYjkwNmRmNGYzNTRmMjk3MzY5NTZhNDE1IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCisrKyBiL1dlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAKQEAgLTQ2
Miw2ICs0NjIsMTIgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja0dlb2xvY2F0
aW9uRXJyb3IoaW50IGNvZGUsIEpTU3RyaW5nUmVmIG1lc3NhZ2UKICAgICAvLyBTZWUgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4MjY0LgogfQogCit2b2lkIExheW91
dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoSlNTdHJpbmdSZWYgcmVz
dWx0KQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIHNwZWVjaCBpbnB1dCBsYXlvdXQg
dGVzdHMuCisgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0zOTQ4NS4KK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0SWNvbkRhdGFiYXNl
RW5hYmxlZChib29sIGZsYWcpCiB7CiAgICAgLy8gRklYTUU6IGltcGxlbWVudApkaWZmIC0tZ2l0
IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFj
Lm1tIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVy
TWFjLm1tCmluZGV4IDVlZGY4MTExNGI4MDAwY2EwNjYwNzFiZTBkODA2NDFmODNmYmRmNDkuLjdi
NzdiYTU1N2RjM2QyNmRmMDNjMTNmODk5YTEwNWNlM2Q4YTBlMDkgMTAwNjQ0Ci0tLSBhL1dlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQorKysg
Yi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMu
bW0KQEAgLTM1NSw2ICszNTUsMTIgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9j
a0dlb2xvY2F0aW9uRXJyb3IoaW50IGNvZGUsIEpTU3RyaW5nUmVmIG1lc3NhZ2UKICAgICBbW01v
Y2tHZW9sb2NhdGlvblByb3ZpZGVyIHNoYXJlZF0gc2V0RXJyb3I6ZXJyb3JdOwogfQogCit2b2lk
IExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoSlNTdHJpbmdS
ZWYgcmVzdWx0KQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIHNwZWVjaCBpbnB1dCBs
YXlvdXQgdGVzdHMuCisgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0zOTQ4NS4KK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0SWNvbkRh
dGFiYXNlRW5hYmxlZChib29sIGljb25EYXRhYmFzZUVuYWJsZWQpCiB7CiAgICAgLy8gRklYTUU6
IFdvcmthcm91bmQgPHJkYXI6Ly9wcm9ibGVtLzY0ODAxMDg+CmRpZmYgLS1naXQgYS9XZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcCBiL1dlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwCmluZGV4
IDE5YzQxNDI4MjdkNjczMmMzODlmZTI2Mjk3NTdkNmI2ZDM2ODE3OTQuLmU2ODJmZDAxZGUyZTI0
MzhmYzc1OTNkZjE3ZGU3YTdlYmQ0MDcwYmYgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwCisrKyBiL1dlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwCkBAIC03MTUsNiAr
NzE1LDEyIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tHZW9sb2NhdGlvblBv
c2l0aW9uKGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvCiAgICAgRHVtcFJlbmRlclRyZWVTdXBw
b3J0UXQ6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKGxhdGl0dWRlLCBsb25naXR1ZGUsIGFj
Y3VyYWN5KTsKIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja1NwZWVjaElu
cHV0UmVzdWx0KGNvbnN0IFFTdHJpbmcmIHJlc3VsdCkKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVt
ZW50IGZvciBzcGVlY2ggaW5wdXQgbGF5b3V0IHRlc3RzLgorICAgIC8vIFNlZSBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk0ODUuCit9CisKIHZvaWQgTGF5b3V0VGVz
dENvbnRyb2xsZXI6OmV2YWx1YXRlU2NyaXB0SW5Jc29sYXRlZFdvcmxkKGludCB3b3JsZElELCBj
b25zdCBRU3RyaW5nJiBzY3JpcHQpCiB7CiAgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmV2
YWx1YXRlU2NyaXB0SW5Jc29sYXRlZFdvcmxkKG1fZHJ0LT53ZWJQYWdlKCktPm1haW5GcmFtZSgp
LCB3b3JsZElELCBzY3JpcHQpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oCmluZGV4IDI0YzBkNGI0YzNlN2FhMzc0ODU2
ZTVjZWEzYTE4NWZlNTAyZGFmNmIuLmY5OTg2YjFiMjAzMGJiM2MzN2Y0YWRmY2Q3YTg4MjRkOWEx
ZjE1YWEgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRl
c3RDb250cm9sbGVyUXQuaAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlv
dXRUZXN0Q29udHJvbGxlclF0LmgKQEAgLTIwOCw2ICsyMDgsOCBAQCBwdWJsaWMgc2xvdHM6CiAg
ICAgYm9vbCBpc0dlb2xvY2F0aW9uUGVybWlzc2lvblNldCgpIGNvbnN0IHsgcmV0dXJuIG1faXNH
ZW9sb2NhdGlvblBlcm1pc3Npb25TZXQ7IH0KICAgICBib29sIGdlb2xvY2F0aW9uUGVybWlzc2lv
bigpIGNvbnN0IHsgcmV0dXJuIG1fZ2VvbG9jYXRpb25QZXJtaXNzaW9uOyB9CiAKKyAgICB2b2lk
IHNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdChjb25zdCBRU3RyaW5nJiByZXN1bHQpOworCiAgICAg
Ly8gRW1wdHkgc3R1YiBtZXRob2QgdG8ga2VlcCBwYXJpdHkgd2l0aCBvYmplY3QgbW9kZWwgZXhw
b3NlZCBieSBnbG9iYWwgTGF5b3V0VGVzdENvbnRyb2xsZXIuCiAgICAgdm9pZCBhYm9ydE1vZGFs
KCkge30KIApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91
dFRlc3RDb250cm9sbGVyV2luLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9M
YXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAKaW5kZXggMTc1NWRkZmNiMTYwMmFmZDJhMWY0NmYz
MzQ3M2MyZjBhYzc0NjgyMy4uNGIxMDE5YTA0NWE2ZTU1YjMwZjNlZDc3YWQ0YmM1YzY5Y2VjODk0
OSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RD
b250cm9sbGVyV2luLmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5
b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCkBAIC0zOTMsNiArMzkzLDEyIEBAIHZvaWQgTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnNldE1vY2tHZW9sb2NhdGlvbkVycm9yKGludCBjb2RlLCBKU1N0cmlu
Z1JlZiBtZXNzYWdlCiAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yODI2NC4KIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja1Nw
ZWVjaElucHV0UmVzdWx0KEpTU3RyaW5nUmVmIHJlc3VsdCkKK3sKKyAgICAvLyBGSVhNRTogSW1w
bGVtZW50IGZvciBzcGVlY2ggaW5wdXQgbGF5b3V0IHRlc3RzLgorICAgIC8vIFNlZSBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk0ODUuCit9CisKIHZvaWQgTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnNldEljb25EYXRhYmFzZUVuYWJsZWQoYm9vbCBpY29uRGF0YWJhc2VF
bmFibGVkKQogewogICAgIC8vIFNlZSBhbHNvIDxyZGFyOi8vcHJvYmxlbS82NDgwMTA4PgpkaWZm
IC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xs
ZXJXeC5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJv
bGxlcld4LmNwcAppbmRleCBjODQ0OTQyYjk2MGQzOTM5MWJlMDBjY2Q0N2EzNzI2OGI2ZTdmNTNm
Li5lODNkYjdiNDZmZjZiZGE3ZjJmNTkyYzgyNzNmZWMyNzUwNWJmMGU3IDEwMDY0NAotLS0gYS9X
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcAor
KysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4
LmNwcApAQCAtMjk5LDYgKzI5OSwxMiBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRN
b2NrR2VvbG9jYXRpb25FcnJvcihpbnQgY29kZSwgSlNTdHJpbmdSZWYgbWVzc2FnZQogICAgIC8v
IFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjgyNjQuCiB9CiAK
K3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdChKU1N0
cmluZ1JlZiByZXN1bHQpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3Igc3BlZWNoIGlu
cHV0IGxheW91dCB0ZXN0cy4KKyAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTM5NDg1LgorfQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRJ
Y29uRGF0YWJhc2VFbmFibGVkKGJvb2wgaWNvbkRhdGFiYXNlRW5hYmxlZCkKIHsKICAgICAvLyBG
SVhNRTogaW1wbGVtZW50Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63441</attachid>
            <date>2010-08-04 05:07:03 -0700</date>
            <delta_ts>2010-08-04 07:37:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43477-20100804130701.patch</filename>
            <type>text/plain</type>
            <size>28266</size>
            <attacher name="Satish Sampath">satish</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyNzk3NGZkYTU1NWNiNTU1ZGIzMDliMzE2MDdlZjU3Y2ZjMmY3YTE3Li40MjYyOTU0
NTcwNjc1YzkxYWViZGY0MjI1OWE3N2I5NTU3MTdkMDE1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTAtMDgtMDQgIFNhdGlzaCBTYW1wYXRoICA8c2F0aXNoQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc3BlZWNoIGlu
cHV0IGNvbnRyb2xsZXIgbW9jayBpbiBXZWJLaXQgYW5kIGEgbGF5b3V0IHRlc3QuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MzQ3NworCisgICAgICAg
ICogZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1zcGVlY2hidXR0b24tZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L3NwZWVjaC9pbnB1dC10ZXh0LXNwZWVjaGJ1dHRvbi5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L3NwZWVjaC9zY3JpcHQtdGVzdHMvaW5wdXQtdGV4dC1zcGVl
Y2hidXR0b24uanM6IEFkZGVkLgorICAgICAgICAob25DaGFuZ2UpOgorICAgICAgICAocnVuKToK
KwogMjAxMC0wOC0wMyAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9zcGVlY2gvaW5wdXQtdGV4dC1zcGVlY2hidXR0b24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1zcGVlY2hidXR0b24tZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjcxNTQ1MmNmZjkzZDBkYTQxNTU3Zjg0ODJjMDcxMWNlZjkwZmY0NzIKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9pbnB1dC10ZXh0LXNwZWVjaGJ1dHRv
bi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw5IEBACitUZXN0cyBmb3Igc3BlZWNoIGJ1dHRvbiBj
bGljayB3aXRoIDxpbnB1dCB0eXBlPSJ0ZXh0IiBzcGVlY2g+Lg0KKw0KK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4NCisNCisNCitQQVNTIGlucHV0LnZhbHVlIGlzICJQaWN0dXJlcyBvZiB0aGUg
bW9vbiINCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlDQorDQorVEVTVCBDT01QTEVU
RQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3Qvc3BlZWNoL2lucHV0LXRleHQtc3BlZWNoYnV0dG9uLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L3NwZWVjaC9pbnB1dC10ZXh0LXNwZWVjaGJ1dHRvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUxZWYwMGI5
M2Q3OWMxNjM2NjZlMDlmYjFkOWE1N2EwNmFmYTNkNzYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L3NwZWVjaC9pbnB1dC10ZXh0LXNwZWVjaGJ1dHRvbi5odG1sCkBAIC0wLDAg
KzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4K
KzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2pzL3Jlc291
cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0
aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQt
dGVzdHMvaW5wdXQtdGV4dC1zcGVlY2hidXR0b24uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvc2NyaXB0LXRlc3RzL2lu
cHV0LXRleHQtc3BlZWNoYnV0dG9uLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvc2NyaXB0
LXRlc3RzL2lucHV0LXRleHQtc3BlZWNoYnV0dG9uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM2NTEyYmM5NDhi
ZGM4ZjY3MmFiYjYwMjI1NjRhYWRkYzFlYWVhZDMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L3NwZWVjaC9zY3JpcHQtdGVzdHMvaW5wdXQtdGV4dC1zcGVlY2hidXR0b24uanMK
QEAgLTAsMCArMSwzMCBAQAorZGVzY3JpcHRpb24oJ1Rlc3RzIGZvciBzcGVlY2ggYnV0dG9uIGNs
aWNrIHdpdGggJmx0O2lucHV0IHR5cGU9InRleHQiIHNwZWVjaD4uJyk7CisKK2Z1bmN0aW9uIG9u
Q2hhbmdlKCkgeworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInNwZWVjaElucHV0IikudmFsdWUnLCAnUGljdHVyZXMgb2YgdGhlIG1vb24nKTsKKyAg
ICBmaW5pc2hKU1Rlc3QoKTsKK30KKworZnVuY3Rpb24gcnVuKCkgeworICB2YXIgaW5wdXQgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpOworICBpbnB1dC5pZCA9ICdzcGVlY2hJbnB1
dCc7CisgIGlucHV0LnNwZWVjaCA9ICdzcGVlY2gnOworICBpbnB1dC5hZGRFdmVudExpc3RlbmVy
KCdjaGFuZ2UnLCBvbkNoYW5nZSwgZmFsc2UpOworICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxk
KGlucHV0KTsKKworICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KCdQaWN0dXJlcyBvZiB0
aGUgbW9vbicpOworCisgIC8vIENsaWNraW5nIHRoZSBzcGVlY2ggYnV0dG9uIHNob3VsZCBmaWxs
IGluIG1vY2sgc3BlZWNoLXJlY29nbml6ZWQgdGV4dC4KKyAgaWYgKHdpbmRvdy5ldmVudFNlbmRl
cikgeworICAgICAgdmFyIHggPSBpbnB1dC5vZmZzZXRMZWZ0ICsgaW5wdXQub2Zmc2V0V2lkdGgg
LSA0OworICAgICAgdmFyIHkgPSBpbnB1dC5vZmZzZXRUb3AgKyBpbnB1dC5vZmZzZXRIZWlnaHQg
LyAyOworICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgICBldmVudFNl
bmRlci5tb3VzZURvd24oKTsKKyAgICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgfQorfQor
Cit3aW5kb3cub25sb2FkID0gcnVuOword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOword2lu
ZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBiYmRmMDM1NzNi
Nzg5NzJhMTgzNWZlMDhiYzA2YzMwNmIwNDNjZTUzLi5jZjIwYThmOWZiOTAyYzBlMzdiNmYxZDg2
ODE2MzFlYmYzYzc1MDY2IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisr
KyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxMC0wOC0w
NCAgU2F0aXNoIFNhbXBhdGggIDxzYXRpc2hAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzcGVlY2ggaW5wdXQgY29udHJv
bGxlciBtb2NrIGluIFdlYktpdCBhbmQgYSBsYXlvdXQgdGVzdC4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQzNDc3CisKKyAgICAgICAgKiBXZWJLaXQu
Z3lwOgorICAgICAgICAqIHB1YmxpYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrLmg6IEFk
ZGVkIFdlYktpdCBzcGVlY2ggaW5wdXQgY29udHJvbGxlciBtb2NrIGludGVyZmFjZS4KKyAgICAg
ICAgKiBzcmMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGwuY3BwOiBBZGRlZCBpbXBs
ZW1lbnRhdGlvbiBvZiB0aGUgYWJvdmUgbW9jay4KKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNo
SW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OldlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBs
KToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OnNl
dE1vY2tSZWNvZ25pdGlvblJlc3VsdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaElucHV0
Q29udHJvbGxlck1vY2tJbXBsOjpkaWRDb21wbGV0ZVJlY29yZGluZyk6CisgICAgICAgIChXZWJL
aXQ6OldlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsOjpkaWRDb21wbGV0ZVJlY29nbml0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6
OnNldFJlY29nbml0aW9uUmVzdWx0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoSW5wdXRD
b250cm9sbGVyTW9ja0ltcGw6OnN0YXJ0UmVjb2duaXRpb24pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6Y2FuY2VsUmVjb2duaXRpb24pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6c3RvcFJlY29y
ZGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2s6OmNy
ZWF0ZSk6CisKIDIwMTAtMDgtMDMgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBGaXNoZXIuCmRpZmYgLS1naXQgYS9XZWJL
aXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4
IDlkYTg1Y2Q3Y2EzOGM1MDcyNzgxMzE1ODA3ZWMzOTVjZGI1YmQyNDQuLjI2ODJhNjllZWM0OTMx
ZWNiYWYxMGE5ZTZlZjUwZWM4MDNjMDM2OTUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9X
ZWJLaXQuZ3lwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC0yNDAsNiArMjQw
LDcgQEAKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlNvY2tldFN0cmVhbUhhbmRsZS5oJywK
ICAgICAgICAgICAgICAgICAncHVibGljL1dlYlNvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oJywK
ICAgICAgICAgICAgICAgICAncHVibGljL1dlYlNwZWVjaElucHV0Q29udHJvbGxlci5oJywKKyAg
ICAgICAgICAgICAgICAncHVibGljL1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2suaCcsCiAg
ICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJTcGVlY2hJbnB1dExpc3RlbmVyLmgnLAogICAgICAg
ICAgICAgICAgICdwdWJsaWMvV2ViU3RvcmFnZUFyZWEuaCcsCiAgICAgICAgICAgICAgICAgJ3B1
YmxpYy9XZWJTdG9yYWdlRXZlbnREaXNwYXRjaGVyLmgnLApAQCAtNDYzLDYgKzQ2NCw3IEBACiAg
ICAgICAgICAgICAgICAgJ3NyYy9XZWJTZXR0aW5nc0ltcGwuaCcsCiAgICAgICAgICAgICAgICAg
J3NyYy9XZWJTaGFyZWRXb3JrZXJJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJT
aGFyZWRXb3JrZXJJbXBsLmgnLAorICAgICAgICAgICAgICAgICdzcmMvV2ViU3BlZWNoSW5wdXRD
b250cm9sbGVyTW9ja0ltcGwuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlN0b3JhZ2VB
cmVhSW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViU3RvcmFnZUFyZWFJbXBsLmgn
LAogICAgICAgICAgICAgICAgICdzcmMvV2ViU3RvcmFnZUV2ZW50RGlzcGF0Y2hlckltcGwuY3Bw
JywKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoSW5wdXRDb250
cm9sbGVyTW9jay5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hJbnB1dENvbnRy
b2xsZXJNb2NrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODdhNDY0ZmZjNTUyY2ZjNjdjMDY2YzhjYmI2NzhlYmVl
Mjk2MWJkZgotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3Bl
ZWNoSW5wdXRDb250cm9sbGVyTW9jay5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlNwZWVj
aElucHV0Q29udHJvbGxlck1vY2tfaAorI2RlZmluZSBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJN
b2NrX2gKKworI2luY2x1ZGUgIldlYlNwZWVjaElucHV0Q29udHJvbGxlci5oIgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworY2xhc3MgV2ViU3RyaW5nOworY2xhc3MgV2ViU3BlZWNoSW5wdXRMaXN0
ZW5lcjsKKworY2xhc3MgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9jayA6IHB1YmxpYyBXZWJT
cGVlY2hJbnB1dENvbnRyb2xsZXIgeworcHVibGljOgorICAgIHN0YXRpYyBXZWJTcGVlY2hJbnB1
dENvbnRyb2xsZXJNb2NrKiBjcmVhdGUoV2ViU3BlZWNoSW5wdXRMaXN0ZW5lciogbGlzdGVuZXIp
OworCisgICAgdmlydHVhbCB2b2lkIHNldE1vY2tSZWNvZ25pdGlvblJlc3VsdChjb25zdCBXZWJT
dHJpbmcmIHJlc3VsdCkgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xs
ZXJNb2NrSW1wbC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNwZWVjaElucHV0Q29udHJv
bGxlck1vY2tJbXBsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jOTFkMTFlYjY4NmE5NTg0Nzk4YTljN2IzNWFl
MjBkMDRlYjcwYjY5Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJT
cGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbC5jcHAKQEAgLTAsMCArMSwxMjMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlz
dHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9jay5oIgor
CisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJTcGVlY2hJbnB1dENsaWVu
dE1vY2suaCIKKyNpbmNsdWRlICJTcGVlY2hJbnB1dExpc3RlbmVyLmgiCisjaW5jbHVkZSAiV2Vi
U3BlZWNoSW5wdXRMaXN0ZW5lci5oIgorI2luY2x1ZGUgIldlYlN0cmluZy5oIgorCisjaWYgRU5B
QkxFKElOUFVUX1NQRUVDSCkKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlNwZWVj
aElucHV0Q29udHJvbGxlck1vY2tJbXBsCisgICAgOiBwdWJsaWMgV2ViQ29yZTo6U3BlZWNoSW5w
dXRMaXN0ZW5lciwKKyAgICAgIHB1YmxpYyBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrIHsK
K3B1YmxpYzoKKyAgICBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbChXZWJTcGVlY2hJ
bnB1dExpc3RlbmVyKik7CisKKyAgICAvLyBXZWJDb3JlOjpTcGVlY2hJbnB1dExpc3RlbmVyIG1l
dGhvZHMuCisgICAgdm9pZCBkaWRDb21wbGV0ZVJlY29yZGluZygpOworICAgIHZvaWQgZGlkQ29t
cGxldGVSZWNvZ25pdGlvbigpOworICAgIHZvaWQgc2V0UmVjb2duaXRpb25SZXN1bHQoY29uc3Qg
V2ViQ29yZTo6U3RyaW5nJiByZXN1bHQpOworCisgICAgLy8gV2ViU3BlZWNoSW5wdXRDb250cm9s
bGVyIG1ldGhvZHMuCisgICAgYm9vbCBzdGFydFJlY29nbml0aW9uKCk7CisgICAgdm9pZCBjYW5j
ZWxSZWNvZ25pdGlvbigpOworICAgIHZvaWQgc3RvcFJlY29yZGluZygpOworCisgICAgLy8gV2Vi
U3BlZWNoSW5wdXRDb250cm9sbGVyTW9jayBtZXRob2RzLgorICAgIHZvaWQgc2V0TW9ja1JlY29n
bml0aW9uUmVzdWx0KGNvbnN0IFdlYlN0cmluZyYgcmVzdWx0KTsKKworcHJpdmF0ZToKKyAgICBX
ZWJDb3JlOjpTcGVlY2hJbnB1dENsaWVudE1vY2sgbV93ZWJjb3JlTW9jazsKKyAgICBXZWJTcGVl
Y2hJbnB1dExpc3RlbmVyKiBtX2xpc3RlbmVyOworfTsKKworV2ViU3BlZWNoSW5wdXRDb250cm9s
bGVyTW9ja0ltcGw6OldlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsKAorICAgIFdlYlNw
ZWVjaElucHV0TGlzdGVuZXIqIGxpc3RlbmVyKQorICAgIDogbV9saXN0ZW5lcihsaXN0ZW5lcikK
K3sKK30KKwordm9pZCBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6c2V0TW9ja1Jl
Y29nbml0aW9uUmVzdWx0KAorICAgIGNvbnN0IFdlYlN0cmluZyYgcmVzdWx0KQoreworICAgIG1f
d2ViY29yZU1vY2suc2V0UmVjb2duaXRpb25SZXN1bHQocmVzdWx0KTsKK30KKwordm9pZCBXZWJT
cGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6ZGlkQ29tcGxldGVSZWNvcmRpbmcoKQorewor
ICAgIG1fbGlzdGVuZXItPmRpZENvbXBsZXRlUmVjb3JkaW5nKCk7Cit9CisKK3ZvaWQgV2ViU3Bl
ZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OmRpZENvbXBsZXRlUmVjb2duaXRpb24oKQorewor
ICAgIG1fbGlzdGVuZXItPmRpZENvbXBsZXRlUmVjb2duaXRpb24oKTsKK30KKwordm9pZCBXZWJT
cGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6c2V0UmVjb2duaXRpb25SZXN1bHQoCisgICAg
Y29uc3QgV2ViQ29yZTo6U3RyaW5nJiByZXN1bHQpCit7CisgICAgbV9saXN0ZW5lci0+c2V0UmVj
b2duaXRpb25SZXN1bHQocmVzdWx0KTsKK30KKworYm9vbCBXZWJTcGVlY2hJbnB1dENvbnRyb2xs
ZXJNb2NrSW1wbDo6c3RhcnRSZWNvZ25pdGlvbigpCit7CisgICAgcmV0dXJuIG1fd2ViY29yZU1v
Y2suc3RhcnRSZWNvZ25pdGlvbih0aGlzKTsKK30KKwordm9pZCBXZWJTcGVlY2hJbnB1dENvbnRy
b2xsZXJNb2NrSW1wbDo6Y2FuY2VsUmVjb2duaXRpb24oKQoreworICAgIG1fd2ViY29yZU1vY2su
Y2FuY2VsUmVjb2duaXRpb24oKTsKK30KKwordm9pZCBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJN
b2NrSW1wbDo6c3RvcFJlY29yZGluZygpCit7CisgICAgbV93ZWJjb3JlTW9jay5zdG9wUmVjb3Jk
aW5nKCk7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5QVVRfU1BFRUNIKQorCisvLyBGYWN0b3J5
IG1ldGhvZC4KK1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2sqIFdlYlNwZWVjaElucHV0Q29u
dHJvbGxlck1vY2s6OmNyZWF0ZShXZWJTcGVlY2hJbnB1dExpc3RlbmVyKiBsaXN0ZW5lcikKK3sK
KyNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQorICAgIHJldHVybiBuZXcgV2ViU3BlZWNoSW5wdXRD
b250cm9sbGVyTW9ja0ltcGwobGlzdGVuZXIpOworI2Vsc2UKKyAgICByZXR1cm4gMDsKKyNlbmRp
ZgorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0No
YW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwppbmRleCAyYzA1YWM1ZTczNzNiNmQ0YTgy
MGUyNjc4Y2ZiYjE0OTE1MDZjNTY5Li4zOTgwYzM2YWI2Y2ZkNTNkZjI4ZTJiM2Q0N2M5ZDI2MjQ3
NWQ4MDNiIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9v
bHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTAtMDgtMDQgIFNhdGlzaCBTYW1wYXRo
ICA8c2F0aXNoQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgc3BlZWNoIGlucHV0IGNvbnRyb2xsZXIgbW9jayBpbiBXZWJL
aXQgYW5kIGEgbGF5b3V0IHRlc3QuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00MzQ3NworCisgICAgICAgIEFkZGVkIExheW91dFRlc3RDb250cm9sbGVy
OjpzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHRDYWxsYmFjayBtZXRob2QuCisKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChzZXRNb2Nr
U3BlZWNoSW5wdXRSZXN1bHRDYWxsYmFjayk6IFdyYXBwZXIgaW52b2tpbmcgdGhlIG1lbWJlciBm
dW5jdGlvbi4KKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzdGF0aWNGdW5jdGlvbnMp
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmg6CisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OkxheW91dFRlc3RDb250cm9sbGVyKToKKyAg
ICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQpOiBT
ZXRzIHRoZSBtb2NrIHJlc3VsdC4KKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzcGVl
Y2hJbnB1dENvbnRyb2xsZXIpOiBDcmVhdGVzIHRoZSBtb2NrIGNvbnRyb2xsZXIuCisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaDoKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHA6CisgICAgICAgIChX
ZWJWaWV3SG9zdDo6c3BlZWNoSW5wdXRDb250cm9sbGVyKTogQ3JlYXRlcyB0aGUgbW9jayBjb250
cm9sbGVyLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0Lmg6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNw
cDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrU3BlZWNoSW5wdXRSZXN1
bHQpOiBkdW1teSBtZXRob2QuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRl
c3RDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1v
Y2tTcGVlY2hJbnB1dFJlc3VsdCk6IGR1bW15IG1ldGhvZC4KKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcDoKKyAgICAgICAgKExheW91dFRlc3RD
b250cm9sbGVyOjpzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQpOiBkdW1teSBtZXRob2QuCisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oOgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHA6IGR1bW15
IG1ldGhvZC4KKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrU3BlZWNoSW5w
dXRSZXN1bHQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9s
bGVyV3guY3BwOiBkdW1teSBtZXRob2QuCisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6
c2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KToKKwogMjAxMC0wOC0wMyAgS2VudCBUYW11cmEgIDx0
a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292
LgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRy
b2xsZXIuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xs
ZXIuY3BwCmluZGV4IDNkOTFlMGMzZGI4YmZhYjA2ZWRlYjk4ZWRmMDNmOTAzMDc3ZWQxZTAuLmJj
YjY3NmUzNjc5NDNmYmFkNTc4Mzk3NjBkNGE4NWZiM2IzMDI5NDMgMTAwNjQ0Ci0tLSBhL1dlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAorKysgYi9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKQEAgLTEwNTAs
NiArMTA1MCwyMCBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBzZXRNb2NrR2VvbG9jYXRpb25FcnJvckNh
bGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdAogICAgIHJldHVybiBKU1ZhbHVl
TWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KIAorc3RhdGljIEpTVmFsdWVSZWYgc2V0TW9ja1Nw
ZWVjaElucHV0UmVzdWx0Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVm
IGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwg
Y29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQorewor
ICAgIGlmIChhcmd1bWVudENvdW50IDwgMSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5k
ZWZpbmVkKGNvbnRleHQpOworCisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHJlc3VsdChB
ZG9wdCwgSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBhcmd1bWVudHNbMF0sIGV4Y2VwdGlv
bikpOworICAgIEFTU0VSVCghKmV4Y2VwdGlvbik7CisKKyAgICBMYXlvdXRUZXN0Q29udHJvbGxl
ciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PExheW91dFRlc3RDb250cm9sbGVyKj4oSlNPYmpl
Y3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKKyAgICBjb250cm9sbGVyLT5zZXRNb2NrU3BlZWNo
SW5wdXRSZXN1bHQocmVzdWx0LmdldCgpKTsKKworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVm
aW5lZChjb250ZXh0KTsKK30KKwogc3RhdGljIEpTVmFsdWVSZWYgc2V0TmV3V2luZG93c0NvcHlC
YWNrRm9yd2FyZExpc3RDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYg
ZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBj
b25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAg
ICAgLy8gSGFzIG1hYyBpbXBsZW1lbnRhdGlvbgpAQCAtMTg4Miw2ICsxODk2LDcgQEAgSlNTdGF0
aWNGdW5jdGlvbiogTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN0YXRpY0Z1bmN0aW9ucygpCiAgICAg
ICAgIHsgInNldE1vY2tEZXZpY2VPcmllbnRhdGlvbiIsIHNldE1vY2tEZXZpY2VPcmllbnRhdGlv
bkNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRy
aWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldE1vY2tHZW9sb2NhdGlvbkVycm9yIiwg
c2V0TW9ja0dlb2xvY2F0aW9uRXJyb3JDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFk
T25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRN
b2NrR2VvbG9jYXRpb25Qb3NpdGlvbiIsIHNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uQ2FsbGJh
Y2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURv
bnREZWxldGUgfSwKKyAgICAgICAgeyAic2V0TW9ja1NwZWVjaElucHV0UmVzdWx0Iiwgc2V0TW9j
a1NwZWVjaElucHV0UmVzdWx0Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkg
fCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0TmV3V2lu
ZG93c0NvcHlCYWNrRm9yd2FyZExpc3QiLCBzZXROZXdXaW5kb3dzQ29weUJhY2tGb3J3YXJkTGlz
dENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRy
aWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldFBPU0lYTG9jYWxlIiwgc2V0UE9TSVhM
b2NhbGVDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5
QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRQZXJzaXN0ZW50VXNlclN0eWxl
U2hlZXRMb2NhdGlvbiIsIHNldFBlcnNpc3RlbnRVc2VyU3R5bGVTaGVldExvY2F0aW9uQ2FsbGJh
Y2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURv
bnREZWxldGUgfSwKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91
dFRlc3RDb250cm9sbGVyLmggYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0
Q29udHJvbGxlci5oCmluZGV4IDlkMTVmNGM2NjZhNmNlZGQ0M2ZlMmQyZjAwODI4ZmEwMWRlNGE4
YmEuLjU4MmFjZTVlZDNmNGVlODEwOTc0OTM3MjJkYjVlNDNmYjU3YzcwMWIgMTAwNjQ0Ci0tLSBh
L1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKKysrIGIv
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaApAQCAtOTMs
NiArOTMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRNb2NrRGV2aWNlT3JpZW50YXRpb24oYm9v
bCBjYW5Qcm92aWRlQWxwaGEsIGRvdWJsZSBhbHBoYSwgYm9vbCBjYW5Qcm92aWRlQmV0YSwgZG91
YmxlIGJldGEsIGJvb2wgY2FuUHJvdmlkZUdhbW1hLCBkb3VibGUgZ2FtbWEpOwogICAgIHZvaWQg
c2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IoaW50IGNvZGUsIEpTU3RyaW5nUmVmIG1lc3NhZ2UpOwog
ICAgIHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oZG91YmxlIGxhdGl0dWRlLCBkb3Vi
bGUgbG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJhY3kpOworICAgIHZvaWQgc2V0TW9ja1NwZWVjaElu
cHV0UmVzdWx0KEpTU3RyaW5nUmVmIHJlc3VsdCk7CiAgICAgdm9pZCBzZXRQZXJzaXN0ZW50VXNl
clN0eWxlU2hlZXRMb2NhdGlvbihKU1N0cmluZ1JlZiBwYXRoKTsKICAgICB2b2lkIHNldFBsdWdp
bnNFbmFibGVkKGJvb2wgZmxhZyk7CiAgICAgdm9pZCBzZXRQb3B1cEJsb2NraW5nRW5hYmxlZChi
b29sIGZsYWcpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IGRkMDc2YWViYjk5MmIwMGE4
YzhkNGE4ZGQ0MDU0OTliZWRiZGI2ZWYuLmFjNzY1MTY5ZDAwMzVjNzU1ZmRiYzlmODQyZTkxYzdl
MGMyMWYzNjcgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L0xheW91dFRlc3RDb250cm9sbGVyLmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAKICNp
bmNsdWRlICJwdWJsaWMvV2ViU2VjdXJpdHlQb2xpY3kuaCIKICNpbmNsdWRlICJwdWJsaWMvV2Vi
U2V0dGluZ3MuaCIKICNpbmNsdWRlICJwdWJsaWMvV2ViU2l6ZS5oIgorI2luY2x1ZGUgInB1Ymxp
Yy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrLmgiCiAjaW5jbHVkZSAicHVibGljL1dlYlVS
TC5oIgogI2luY2x1ZGUgInB1YmxpYy9XZWJWaWV3LmgiCiAjaW5jbHVkZSAid2Via2l0L3N1cHBv
cnQvd2Via2l0X3N1cHBvcnQuaCIKQEAgLTE3NCw2ICsxNzUsNyBAQCBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6TGF5b3V0VGVzdENvbnRyb2xsZXIoVGVzdFNoZWxsKiBzaGVsbCkKICAgICBiaW5kTWV0
aG9kKCJzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbiIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6
c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24pOwogICAgIGJpbmRNZXRob2QoInNldE1vY2tHZW9s
b2NhdGlvbkVycm9yIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrR2VvbG9jYXRpb25F
cnJvcik7CiAgICAgYmluZE1ldGhvZCgiYWJvcnRNb2RhbCIsICZMYXlvdXRUZXN0Q29udHJvbGxl
cjo6YWJvcnRNb2RhbCk7CisgICAgYmluZE1ldGhvZCgic2V0TW9ja1NwZWVjaElucHV0UmVzdWx0
IiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQpOwogCiAg
ICAgLy8gVGhlIGZhbGxiYWNrIG1ldGhvZCBpcyBjYWxsZWQgd2hlbiBhbiB1bmtub3duIG1ldGhv
ZCBpcyBpbnZva2VkLgogICAgIGJpbmRGYWxsYmFja01ldGhvZCgmTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OmZhbGxiYWNrTWV0aG9kKTsKQEAgLTEzNjksMyArMTM3MSwxOSBAQCB2b2lkIExheW91dFRl
c3RDb250cm9sbGVyOjphYm9ydE1vZGFsKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRz
LCBDcHBWYXJpYQogewogICAgIHJlc3VsdC0+c2V0TnVsbCgpOwogfQorCit2b2lkIExheW91dFRl
c3RDb250cm9sbGVyOjpzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoY29uc3QgQ3BwQXJndW1lbnRM
aXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKK3sKKyAgICByZXN1bHQtPnNldE51
bGwoKTsKKyAgICBpZiAoYXJndW1lbnRzLnNpemUoKSA8IDEgfHwgIWFyZ3VtZW50c1swXS5pc1N0
cmluZygpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3NwZWVjaElucHV0Q29udHJvbGxlck1v
Y2stPnNldE1vY2tSZWNvZ25pdGlvblJlc3VsdChjcHBWYXJpYW50VG9XZWJTdHJpbmcoYXJndW1l
bnRzWzBdKSk7Cit9CisKK1dlYktpdDo6V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyKiBMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6c3BlZWNoSW5wdXRDb250cm9sbGVyKFdlYktpdDo6V2ViU3BlZWNoSW5w
dXRMaXN0ZW5lciogbGlzdGVuZXIpCit7CisgICAgaWYgKCFtX3NwZWVjaElucHV0Q29udHJvbGxl
ck1vY2suZ2V0KCkpCisgICAgICAgIG1fc3BlZWNoSW5wdXRDb250cm9sbGVyTW9jay5zZXQoV2Vi
U3BlZWNoSW5wdXRDb250cm9sbGVyTW9jazo6Y3JlYXRlKGxpc3RlbmVyKSk7CisgICAgcmV0dXJu
IG1fc3BlZWNoSW5wdXRDb250cm9sbGVyTW9jay5nZXQoKTsKK30KZGlmZiAtLWdpdCBhL1dlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmggYi9X
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5o
CmluZGV4IDA5NmQxZGYwMTBlNGU0YzdkYTA1NWZiYTMwZDdjMTI5MjI1OTU4NGMuLjlkZDRiMjk3
ZjE1NGIzNTZjZDY0NGZjYTdiZDBkNDI5MTBmODVhMmEgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmgKKysrIGIvV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaApA
QCAtNDMsNiArNDMsNyBAQAogCiAjaW5jbHVkZSAiQ3BwQm91bmRDbGFzcy5oIgogI2luY2x1ZGUg
ImJhc2UvdGltZXIuaCIgLy8gRklYTUU6IFJlbW92ZSB0aGlzLgorI2luY2x1ZGUgInB1YmxpYy9X
ZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrLmgiCiAjaW5jbHVkZSAicHVibGljL1dlYlN0cmlu
Zy5oIgogI2luY2x1ZGUgInB1YmxpYy9XZWJVUkwuaCIKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4K
QEAgLTI5OCwxMCArMjk5LDE0IEBAIHB1YmxpYzoKICAgICAvLyBFbXB0eSBzdHViIG1ldGhvZCB0
byBrZWVwIHBhcml0eSB3aXRoIG9iamVjdCBtb2RlbCBleHBvc2VkIGJ5IGdsb2JhbCBMYXlvdXRU
ZXN0Q29udHJvbGxlci4KICAgICB2b2lkIGFib3J0TW9kYWwoY29uc3QgQ3BwQXJndW1lbnRMaXN0
JiwgQ3BwVmFyaWFudCopOwogCisgICAgLy8gU3BlZWNoIGlucHV0IHJlbGF0ZWQgZnVuY3Rpb25z
LgorICAgIHZvaWQgc2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KGNvbnN0IENwcEFyZ3VtZW50TGlz
dCYsIENwcFZhcmlhbnQqKTsKKwogcHVibGljOgogICAgIC8vIFRoZSBmb2xsb3dpbmcgbWV0aG9k
cyBhcmUgbm90IGV4cG9zZWQgdG8gSmF2YVNjcmlwdC4KICAgICB2b2lkIHNldFdvcmtRdWV1ZUZy
b3plbihib29sIGZyb3plbikgeyBtX3dvcmtRdWV1ZS5zZXRGcm96ZW4oZnJvemVuKTsgfQogCisg
ICAgV2ViS2l0OjpXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIqIHNwZWVjaElucHV0Q29udHJvbGxl
cihXZWJLaXQ6OldlYlNwZWVjaElucHV0TGlzdGVuZXIqKTsKICAgICBib29sIHNob3VsZER1bXBB
c1RleHQoKSB7IHJldHVybiBtX2R1bXBBc1RleHQ7IH0KICAgICBib29sIHNob3VsZER1bXBFZGl0
aW5nQ2FsbGJhY2tzKCkgeyByZXR1cm4gbV9kdW1wRWRpdGluZ0NhbGxiYWNrczsgfQogICAgIGJv
b2wgc2hvdWxkRHVtcEZyYW1lTG9hZENhbGxiYWNrcygpIHsgcmV0dXJuIG1fZHVtcEZyYW1lTG9h
ZENhbGxiYWNrczsgfQpAQCAtNDcyLDYgKzQ3Nyw4IEBAIHByaXZhdGU6CiAgICAgQ3BwVmFyaWFu
dCBtX3dlYkhpc3RvcnlJdGVtQ291bnQ7CiAKICAgICBXZWJLaXQ6OldlYlVSTCBtX3VzZXJTdHls
ZVNoZWV0TG9jYXRpb247CisKKyAgICBPd25QdHI8V2ViS2l0OjpXZWJTcGVlY2hJbnB1dENvbnRy
b2xsZXJNb2NrPiBtX3NwZWVjaElucHV0Q29udHJvbGxlck1vY2s7CiB9OwogCiAjZW5kaWYgLy8g
TGF5b3V0VGVzdENvbnRyb2xsZXJfaApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCmluZGV4IGVkMzdhMzFlMjk5ZDc3Mjk2MThmZjQ3
ZWM1NzRkMGE4NmMxMGQ3MTIuLjUwYmMzMWQ4YmVjZjRmZTI3ZGI3NWJiNmIzNzA4MzY4NTRlNGZl
ZGIgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZp
ZXdIb3N0LmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJW
aWV3SG9zdC5jcHAKQEAgLTUwMSw2ICs1MDEsMTEgQEAgV2ViS2l0OjpXZWJHZW9sb2NhdGlvblNl
cnZpY2UqIFdlYlZpZXdIb3N0OjpnZW9sb2NhdGlvblNlcnZpY2UoKQogICAgIHJldHVybiBtX2dl
b2xvY2F0aW9uU2VydmljZU1vY2suZ2V0KCk7CiB9CiAKK1dlYktpdDo6V2ViU3BlZWNoSW5wdXRD
b250cm9sbGVyKiBXZWJWaWV3SG9zdDo6c3BlZWNoSW5wdXRDb250cm9sbGVyKFdlYktpdDo6V2Vi
U3BlZWNoSW5wdXRMaXN0ZW5lciogbGlzdGVuZXIpCit7CisgICAgcmV0dXJuIG1fc2hlbGwtPmxh
eW91dFRlc3RDb250cm9sbGVyKCktPnNwZWVjaElucHV0Q29udHJvbGxlcihsaXN0ZW5lcik7Cit9
CisKIC8vIFdlYldpZGdldENsaWVudCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiB2b2lkIFdlYlZpZXdIb3N0OjpkaWRJbnZhbGlk
YXRlUmVjdChjb25zdCBXZWJSZWN0JiByZWN0KQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaCBiL1dlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgKaW5kZXggMWU1MWJlNzE0ZGIwMDkyNTQ3NzQ3
NzQ2NDJkYzBhZmU1MTFjMmU0ZS4uYzE3NWU2MWM2NTU0OTY3NjBjNzIwNjM0MWQxYjUxNGE0OWM0
NmFiNSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2Vi
Vmlld0hvc3QuaAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJW
aWV3SG9zdC5oCkBAIC00Niw2ICs0Niw4IEBAIGNsYXNzIFRlc3RTaGVsbDsKIG5hbWVzcGFjZSBX
ZWJLaXQgewogY2xhc3MgV2ViRnJhbWU7CiBjbGFzcyBXZWJHZW9sb2NhdGlvblNlcnZpY2VNb2Nr
OworY2xhc3MgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyOworY2xhc3MgV2ViU3BlZWNoSW5wdXRM
aXN0ZW5lcjsKIGNsYXNzIFdlYlVSTDsKIHN0cnVjdCBXZWJSZWN0Owogc3RydWN0IFdlYlVSTEVy
cm9yOwpAQCAtMTI2LDYgKzEyOCw3IEBAIGNsYXNzIFdlYlZpZXdIb3N0IDogcHVibGljIFdlYktp
dDo6V2ViVmlld0NsaWVudCwgcHVibGljIFdlYktpdDo6V2ViRnJhbWVDbGllbnQsCiAgICAgdmly
dHVhbCB2b2lkIGZvY3VzQWNjZXNzaWJpbGl0eU9iamVjdChjb25zdCBXZWJLaXQ6OldlYkFjY2Vz
c2liaWxpdHlPYmplY3QmKTsKICAgICB2aXJ0dWFsIFdlYktpdDo6V2ViTm90aWZpY2F0aW9uUHJl
c2VudGVyKiBub3RpZmljYXRpb25QcmVzZW50ZXIoKTsKICAgICB2aXJ0dWFsIFdlYktpdDo6V2Vi
R2VvbG9jYXRpb25TZXJ2aWNlKiBnZW9sb2NhdGlvblNlcnZpY2UoKTsKKyAgICB2aXJ0dWFsIFdl
YktpdDo6V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyKiBzcGVlY2hJbnB1dENvbnRyb2xsZXIoV2Vi
S2l0OjpXZWJTcGVlY2hJbnB1dExpc3RlbmVyKik7CiAKICAgICAvLyBXZWJLaXQ6OldlYldpZGdl
dENsaWVudAogICAgIHZpcnR1YWwgdm9pZCBkaWRJbnZhbGlkYXRlUmVjdChjb25zdCBXZWJLaXQ6
OldlYlJlY3QmKTsKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9M
YXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9n
dGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCmluZGV4IDI5YTk2ZjE4Njk4MTE5ZWIwMjA0
Mjk4ZjE2ZDc1ZWVkNDRkYmRjYjQuLjNlMWIzMTE4ODRjNDM4OGFiOTA2ZGY0ZjM1NGYyOTczNjk1
NmE0MTUgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRU
ZXN0Q29udHJvbGxlckd0ay5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3Rr
L0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcApAQCAtNDYyLDYgKzQ2MiwxMiBAQCB2b2lkIExh
eW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrR2VvbG9jYXRpb25FcnJvcihpbnQgY29kZSwgSlNT
dHJpbmdSZWYgbWVzc2FnZQogICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjgyNjQuCiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1v
Y2tTcGVlY2hJbnB1dFJlc3VsdChKU1N0cmluZ1JlZiByZXN1bHQpCit7CisgICAgLy8gRklYTUU6
IEltcGxlbWVudCBmb3Igc3BlZWNoIGlucHV0IGxheW91dCB0ZXN0cy4KKyAgICAvLyBTZWUgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NDg1LgorfQorCiB2b2lkIExh
eW91dFRlc3RDb250cm9sbGVyOjpzZXRJY29uRGF0YWJhc2VFbmFibGVkKGJvb2wgZmxhZykKIHsK
ICAgICAvLyBGSVhNRTogaW1wbGVtZW50CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0gYi9XZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KaW5kZXggNWVkZjgxMTE0
YjgwMDBjYTA2NjA3MWJlMGQ4MDY0MWY4M2ZiZGY0OS4uN2I3N2JhNTU3ZGMzZDI2ZGYwM2MxM2Y4
OTlhMTA1Y2UzZDhhMGUwOSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQpAQCAtMzU1LDYgKzM1NSwxMiBA
QCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrR2VvbG9jYXRpb25FcnJvcihpbnQg
Y29kZSwgSlNTdHJpbmdSZWYgbWVzc2FnZQogICAgIFtbTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIg
c2hhcmVkXSBzZXRFcnJvcjplcnJvcl07CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdChKU1N0cmluZ1JlZiByZXN1bHQpCit7CisgICAgLy8g
RklYTUU6IEltcGxlbWVudCBmb3Igc3BlZWNoIGlucHV0IGxheW91dCB0ZXN0cy4KKyAgICAvLyBT
ZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NDg1LgorfQorCiB2
b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRJY29uRGF0YWJhc2VFbmFibGVkKGJvb2wgaWNv
bkRhdGFiYXNlRW5hYmxlZCkKIHsKICAgICAvLyBGSVhNRTogV29ya2Fyb3VuZCA8cmRhcjovL3By
b2JsZW0vNjQ4MDEwOD4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0
L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
cXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAKaW5kZXggMTljNDE0MjgyN2Q2NzMyYzM4OWZl
MjYyOTc1N2Q2YjZkMzY4MTc5NC4uZTY4MmZkMDFkZTJlMjQzOGZjNzU5M2RmMTdkZTdhN2ViZDQw
NzBiZiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVz
dENvbnRyb2xsZXJRdC5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5
b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAKQEAgLTcxNSw2ICs3MTUsMTIgQEAgdm9pZCBMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oZG91YmxlIGxhdGl0dWRl
LCBkb3VibGUgbG8KICAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0TW9ja0dlb2xvY2F0
aW9uUG9zaXRpb24obGF0aXR1ZGUsIGxvbmdpdHVkZSwgYWNjdXJhY3kpOwogfQogCit2b2lkIExh
eW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoY29uc3QgUVN0cmlu
ZyYgcmVzdWx0KQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIHNwZWVjaCBpbnB1dCBs
YXlvdXQgdGVzdHMuCisgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0zOTQ4NS4KK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6ZXZhbHVhdGVT
Y3JpcHRJbklzb2xhdGVkV29ybGQoaW50IHdvcmxkSUQsIGNvbnN0IFFTdHJpbmcmIHNjcmlwdCkK
IHsKICAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6ZXZhbHVhdGVTY3JpcHRJbklzb2xhdGVk
V29ybGQobV9kcnQtPndlYlBhZ2UoKS0+bWFpbkZyYW1lKCksIHdvcmxkSUQsIHNjcmlwdCk7CmRp
ZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJv
bGxlclF0LmggYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJv
bGxlclF0LmgKaW5kZXggMjRjMGQ0YjRjM2U3YWEzNzQ4NTZlNWNlYTNhMTg1ZmU1MDJkYWY2Yi4u
Zjk5ODZiMWIyMDMwYmIzYzM3ZjRhZGZjZDdhODgyNGQ5YTFmMTVhYSAxMDA2NDQKLS0tIGEvV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oCisrKyBi
L1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaApA
QCAtMjA4LDYgKzIwOCw4IEBAIHB1YmxpYyBzbG90czoKICAgICBib29sIGlzR2VvbG9jYXRpb25Q
ZXJtaXNzaW9uU2V0KCkgY29uc3QgeyByZXR1cm4gbV9pc0dlb2xvY2F0aW9uUGVybWlzc2lvblNl
dDsgfQogICAgIGJvb2wgZ2VvbG9jYXRpb25QZXJtaXNzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9n
ZW9sb2NhdGlvblBlcm1pc3Npb247IH0KIAorICAgIHZvaWQgc2V0TW9ja1NwZWVjaElucHV0UmVz
dWx0KGNvbnN0IFFTdHJpbmcmIHJlc3VsdCk7CisKICAgICAvLyBFbXB0eSBzdHViIG1ldGhvZCB0
byBrZWVwIHBhcml0eSB3aXRoIG9iamVjdCBtb2RlbCBleHBvc2VkIGJ5IGdsb2JhbCBMYXlvdXRU
ZXN0Q29udHJvbGxlci4KICAgICB2b2lkIGFib3J0TW9kYWwoKSB7fQogCmRpZmYgLS1naXQgYS9X
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3Bw
IGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2lu
LmNwcAppbmRleCAxNzU1ZGRmY2IxNjAyYWZkMmExZjQ2ZjMzNDczYzJmMGFjNzQ2ODIzLi40YjEw
MTlhMDQ1YTZlNTViMzBmM2VkNzdhZDRiYzVjNjljZWM4OTQ5IDEwMDY0NAotLS0gYS9XZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCisrKyBi
L1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5j
cHAKQEAgLTM5Myw2ICszOTMsMTIgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9j
a0dlb2xvY2F0aW9uRXJyb3IoaW50IGNvZGUsIEpTU3RyaW5nUmVmIG1lc3NhZ2UKICAgICAvLyBT
ZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4MjY0LgogfQogCit2
b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoSlNTdHJp
bmdSZWYgcmVzdWx0KQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIHNwZWVjaCBpbnB1
dCBsYXlvdXQgdGVzdHMuCisgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zOTQ4NS4KK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0SWNv
bkRhdGFiYXNlRW5hYmxlZChib29sIGljb25EYXRhYmFzZUVuYWJsZWQpCiB7CiAgICAgLy8gU2Vl
IGFsc28gPHJkYXI6Ly9wcm9ibGVtLzY0ODAxMDg+CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcCBiL1dlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwCmluZGV4IGM4NDQ5
NDJiOTYwZDM5MzkxYmUwMGNjZDQ3YTM3MjY4YjZlN2Y1M2YuLmU4M2RiN2I0NmZmNmJkYTdmMmY1
OTJjODI3M2ZlYzI3NTA1YmYwZTcgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwCkBAIC0yOTksNiArMjk5LDEy
IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tHZW9sb2NhdGlvbkVycm9yKGlu
dCBjb2RlLCBKU1N0cmluZ1JlZiBtZXNzYWdlCiAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODI2NC4KIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6c2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KEpTU3RyaW5nUmVmIHJlc3VsdCkKK3sKKyAg
ICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBzcGVlY2ggaW5wdXQgbGF5b3V0IHRlc3RzLgorICAg
IC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk0ODUuCit9
CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEljb25EYXRhYmFzZUVuYWJsZWQoYm9v
bCBpY29uRGF0YWJhc2VFbmFibGVkKQogewogICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63449</attachid>
            <date>2010-08-04 07:37:11 -0700</date>
            <delta_ts>2010-08-04 07:41:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43477-20100804153708.patch</filename>
            <type>text/plain</type>
            <size>31178</size>
            <attacher name="Satish Sampath">satish</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyNzk3NGZkYTU1NWNiNTU1ZGIzMDliMzE2MDdlZjU3Y2ZjMmY3YTE3Li40MjYyOTU0
NTcwNjc1YzkxYWViZGY0MjI1OWE3N2I5NTU3MTdkMDE1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTAtMDgtMDQgIFNhdGlzaCBTYW1wYXRoICA8c2F0aXNoQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc3BlZWNoIGlu
cHV0IGNvbnRyb2xsZXIgbW9jayBpbiBXZWJLaXQgYW5kIGEgbGF5b3V0IHRlc3QuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MzQ3NworCisgICAgICAg
ICogZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1zcGVlY2hidXR0b24tZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L3NwZWVjaC9pbnB1dC10ZXh0LXNwZWVjaGJ1dHRvbi5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L3NwZWVjaC9zY3JpcHQtdGVzdHMvaW5wdXQtdGV4dC1zcGVl
Y2hidXR0b24uanM6IEFkZGVkLgorICAgICAgICAob25DaGFuZ2UpOgorICAgICAgICAocnVuKToK
KwogMjAxMC0wOC0wMyAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9zcGVlY2gvaW5wdXQtdGV4dC1zcGVlY2hidXR0b24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1zcGVlY2hidXR0b24tZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjcxNTQ1MmNmZjkzZDBkYTQxNTU3Zjg0ODJjMDcxMWNlZjkwZmY0NzIKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9pbnB1dC10ZXh0LXNwZWVjaGJ1dHRv
bi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw5IEBACitUZXN0cyBmb3Igc3BlZWNoIGJ1dHRvbiBj
bGljayB3aXRoIDxpbnB1dCB0eXBlPSJ0ZXh0IiBzcGVlY2g+Lg0KKw0KK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4NCisNCisNCitQQVNTIGlucHV0LnZhbHVlIGlzICJQaWN0dXJlcyBvZiB0aGUg
bW9vbiINCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlDQorDQorVEVTVCBDT01QTEVU
RQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3Qvc3BlZWNoL2lucHV0LXRleHQtc3BlZWNoYnV0dG9uLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L3NwZWVjaC9pbnB1dC10ZXh0LXNwZWVjaGJ1dHRvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUxZWYwMGI5
M2Q3OWMxNjM2NjZlMDlmYjFkOWE1N2EwNmFmYTNkNzYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L3NwZWVjaC9pbnB1dC10ZXh0LXNwZWVjaGJ1dHRvbi5odG1sCkBAIC0wLDAg
KzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4K
KzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2pzL3Jlc291
cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0
aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQt
dGVzdHMvaW5wdXQtdGV4dC1zcGVlY2hidXR0b24uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvc2NyaXB0LXRlc3RzL2lu
cHV0LXRleHQtc3BlZWNoYnV0dG9uLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvc2NyaXB0
LXRlc3RzL2lucHV0LXRleHQtc3BlZWNoYnV0dG9uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM2NTEyYmM5NDhi
ZGM4ZjY3MmFiYjYwMjI1NjRhYWRkYzFlYWVhZDMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L3NwZWVjaC9zY3JpcHQtdGVzdHMvaW5wdXQtdGV4dC1zcGVlY2hidXR0b24uanMK
QEAgLTAsMCArMSwzMCBAQAorZGVzY3JpcHRpb24oJ1Rlc3RzIGZvciBzcGVlY2ggYnV0dG9uIGNs
aWNrIHdpdGggJmx0O2lucHV0IHR5cGU9InRleHQiIHNwZWVjaD4uJyk7CisKK2Z1bmN0aW9uIG9u
Q2hhbmdlKCkgeworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInNwZWVjaElucHV0IikudmFsdWUnLCAnUGljdHVyZXMgb2YgdGhlIG1vb24nKTsKKyAg
ICBmaW5pc2hKU1Rlc3QoKTsKK30KKworZnVuY3Rpb24gcnVuKCkgeworICB2YXIgaW5wdXQgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpOworICBpbnB1dC5pZCA9ICdzcGVlY2hJbnB1
dCc7CisgIGlucHV0LnNwZWVjaCA9ICdzcGVlY2gnOworICBpbnB1dC5hZGRFdmVudExpc3RlbmVy
KCdjaGFuZ2UnLCBvbkNoYW5nZSwgZmFsc2UpOworICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxk
KGlucHV0KTsKKworICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KCdQaWN0dXJlcyBvZiB0
aGUgbW9vbicpOworCisgIC8vIENsaWNraW5nIHRoZSBzcGVlY2ggYnV0dG9uIHNob3VsZCBmaWxs
IGluIG1vY2sgc3BlZWNoLXJlY29nbml6ZWQgdGV4dC4KKyAgaWYgKHdpbmRvdy5ldmVudFNlbmRl
cikgeworICAgICAgdmFyIHggPSBpbnB1dC5vZmZzZXRMZWZ0ICsgaW5wdXQub2Zmc2V0V2lkdGgg
LSA0OworICAgICAgdmFyIHkgPSBpbnB1dC5vZmZzZXRUb3AgKyBpbnB1dC5vZmZzZXRIZWlnaHQg
LyAyOworICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgICBldmVudFNl
bmRlci5tb3VzZURvd24oKTsKKyAgICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgfQorfQor
Cit3aW5kb3cub25sb2FkID0gcnVuOword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOword2lu
ZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBiYmRmMDM1NzNi
Nzg5NzJhMTgzNWZlMDhiYzA2YzMwNmIwNDNjZTUzLi5jZjIwYThmOWZiOTAyYzBlMzdiNmYxZDg2
ODE2MzFlYmYzYzc1MDY2IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisr
KyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxMC0wOC0w
NCAgU2F0aXNoIFNhbXBhdGggIDxzYXRpc2hAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzcGVlY2ggaW5wdXQgY29udHJv
bGxlciBtb2NrIGluIFdlYktpdCBhbmQgYSBsYXlvdXQgdGVzdC4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQzNDc3CisKKyAgICAgICAgKiBXZWJLaXQu
Z3lwOgorICAgICAgICAqIHB1YmxpYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrLmg6IEFk
ZGVkIFdlYktpdCBzcGVlY2ggaW5wdXQgY29udHJvbGxlciBtb2NrIGludGVyZmFjZS4KKyAgICAg
ICAgKiBzcmMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGwuY3BwOiBBZGRlZCBpbXBs
ZW1lbnRhdGlvbiBvZiB0aGUgYWJvdmUgbW9jay4KKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNo
SW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OldlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBs
KToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OnNl
dE1vY2tSZWNvZ25pdGlvblJlc3VsdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaElucHV0
Q29udHJvbGxlck1vY2tJbXBsOjpkaWRDb21wbGV0ZVJlY29yZGluZyk6CisgICAgICAgIChXZWJL
aXQ6OldlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsOjpkaWRDb21wbGV0ZVJlY29nbml0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6
OnNldFJlY29nbml0aW9uUmVzdWx0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoSW5wdXRD
b250cm9sbGVyTW9ja0ltcGw6OnN0YXJ0UmVjb2duaXRpb24pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6Y2FuY2VsUmVjb2duaXRpb24pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6c3RvcFJlY29y
ZGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2s6OmNy
ZWF0ZSk6CisKIDIwMTAtMDgtMDMgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBGaXNoZXIuCmRpZmYgLS1naXQgYS9XZWJL
aXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4
IDlkYTg1Y2Q3Y2EzOGM1MDcyNzgxMzE1ODA3ZWMzOTVjZGI1YmQyNDQuLmQ2YWYzZmZkZDk2MDE1
ZTE0N2NlMzIzOWE3NWRkZTdkN2IyOTYzYTQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9X
ZWJLaXQuZ3lwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC0yNDAsNiArMjQw
LDcgQEAKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlNvY2tldFN0cmVhbUhhbmRsZS5oJywK
ICAgICAgICAgICAgICAgICAncHVibGljL1dlYlNvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oJywK
ICAgICAgICAgICAgICAgICAncHVibGljL1dlYlNwZWVjaElucHV0Q29udHJvbGxlci5oJywKKyAg
ICAgICAgICAgICAgICAncHVibGljL1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2suaCcsCiAg
ICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJTcGVlY2hJbnB1dExpc3RlbmVyLmgnLAogICAgICAg
ICAgICAgICAgICdwdWJsaWMvV2ViU3RvcmFnZUFyZWEuaCcsCiAgICAgICAgICAgICAgICAgJ3B1
YmxpYy9XZWJTdG9yYWdlRXZlbnREaXNwYXRjaGVyLmgnLApAQCAtNDYzLDYgKzQ2NCw4IEBACiAg
ICAgICAgICAgICAgICAgJ3NyYy9XZWJTZXR0aW5nc0ltcGwuaCcsCiAgICAgICAgICAgICAgICAg
J3NyYy9XZWJTaGFyZWRXb3JrZXJJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJT
aGFyZWRXb3JrZXJJbXBsLmgnLAorICAgICAgICAgICAgICAgICdzcmMvV2ViU3BlZWNoSW5wdXRD
b250cm9sbGVyTW9ja0ltcGwuY3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYlNwZWVjaElu
cHV0Q29udHJvbGxlck1vY2tJbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViU3RvcmFn
ZUFyZWFJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJTdG9yYWdlQXJlYUltcGwu
aCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJTdG9yYWdlRXZlbnREaXNwYXRjaGVySW1wbC5j
cHAnLApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hJbnB1dENv
bnRyb2xsZXJNb2NrLmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaElucHV0Q29u
dHJvbGxlck1vY2suaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44N2E0NjRmZmM1NTJjZmM2N2MwNjZjOGNiYjY3OGVi
ZWUyOTYxYmRmCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJT
cGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrLmgKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRp
b24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViU3Bl
ZWNoSW5wdXRDb250cm9sbGVyTW9ja19oCisjZGVmaW5lIFdlYlNwZWVjaElucHV0Q29udHJvbGxl
ck1vY2tfaAorCisjaW5jbHVkZSAiV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyLmgiCisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJTdHJpbmc7CitjbGFzcyBXZWJTcGVlY2hJbnB1dExp
c3RlbmVyOworCitjbGFzcyBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrIDogcHVibGljIFdl
YlNwZWVjaElucHV0Q29udHJvbGxlciB7CitwdWJsaWM6CisgICAgc3RhdGljIFdlYlNwZWVjaElu
cHV0Q29udHJvbGxlck1vY2sqIGNyZWF0ZShXZWJTcGVlY2hJbnB1dExpc3RlbmVyKiBsaXN0ZW5l
cik7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0TW9ja1JlY29nbml0aW9uUmVzdWx0KGNvbnN0IFdl
YlN0cmluZyYgcmVzdWx0KSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNwZWVjaElucHV0Q29udHJv
bGxlck1vY2tJbXBsLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3BlZWNoSW5wdXRDb250
cm9sbGVyTW9ja0ltcGwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUwNThhZmU3ZWZlYmIyYzBlMzkzMTY0YjMw
YjEzYzYzMTZmOGE3MzgKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsLmNwcApAQCAtMCwwICsxLDg5IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRp
c3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBs
LmgiCisKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgIlNwZWVjaElucHV0
Q2xpZW50TW9jay5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8gRmFjdG9yeSBtZXRob2Qu
CitXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrKiBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJN
b2NrOjpjcmVhdGUoV2ViU3BlZWNoSW5wdXRMaXN0ZW5lciogbGlzdGVuZXIpCit7CisgICAgcmV0
dXJuIG5ldyBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbChsaXN0ZW5lcik7Cit9CisK
K1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsOjpXZWJTcGVlY2hJbnB1dENvbnRyb2xs
ZXJNb2NrSW1wbCgKKyAgICBXZWJTcGVlY2hJbnB1dExpc3RlbmVyKiBsaXN0ZW5lcikKKyAgICA6
IG1fd2ViY29yZU1vY2sobmV3IFdlYkNvcmU6OlNwZWVjaElucHV0Q2xpZW50TW9jaygpKQorICAg
ICwgbV9saXN0ZW5lcihsaXN0ZW5lcikKK3sKK30KKwordm9pZCBXZWJTcGVlY2hJbnB1dENvbnRy
b2xsZXJNb2NrSW1wbDo6c2V0TW9ja1JlY29nbml0aW9uUmVzdWx0KAorICAgIGNvbnN0IFdlYlN0
cmluZyYgcmVzdWx0KQoreworICAgIG1fd2ViY29yZU1vY2stPnNldFJlY29nbml0aW9uUmVzdWx0
KHJlc3VsdCk7Cit9CisKK3ZvaWQgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OmRp
ZENvbXBsZXRlUmVjb3JkaW5nKCkKK3sKKyAgICBtX2xpc3RlbmVyLT5kaWRDb21wbGV0ZVJlY29y
ZGluZygpOworfQorCit2b2lkIFdlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsOjpkaWRD
b21wbGV0ZVJlY29nbml0aW9uKCkKK3sKKyAgICBtX2xpc3RlbmVyLT5kaWRDb21wbGV0ZVJlY29n
bml0aW9uKCk7Cit9CisKK3ZvaWQgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OnNl
dFJlY29nbml0aW9uUmVzdWx0KAorICAgIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgcmVzdWx0KQor
eworICAgIG1fbGlzdGVuZXItPnNldFJlY29nbml0aW9uUmVzdWx0KHJlc3VsdCk7Cit9CisKK2Jv
b2wgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OnN0YXJ0UmVjb2duaXRpb24oKQor
eworICAgIHJldHVybiBtX3dlYmNvcmVNb2NrLT5zdGFydFJlY29nbml0aW9uKHRoaXMpOworfQor
Cit2b2lkIFdlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsOjpjYW5jZWxSZWNvZ25pdGlv
bigpCit7CisgICAgbV93ZWJjb3JlTW9jay0+Y2FuY2VsUmVjb2duaXRpb24oKTsKK30KKwordm9p
ZCBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6c3RvcFJlY29yZGluZygpCit7Cisg
ICAgbV93ZWJjb3JlTW9jay0+c3RvcFJlY29yZGluZygpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3BlZWNoSW5wdXRDb250
cm9sbGVyTW9ja0ltcGwuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3BlZWNoSW5wdXRDb250
cm9sbGVyTW9ja0ltcGwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYjg5ZmY4ZGFkYTk2MGFhMDRmZjJmODBlYjQz
ZGE2ZDNiNzcxOWZmCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJT
cGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbC5oCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJp
YnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdl
YlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsX2gKKyNkZWZpbmUgV2ViU3BlZWNoSW5wdXRD
b250cm9sbGVyTW9ja0ltcGxfaAorCisjaW5jbHVkZSAiV2ViU3BlZWNoSW5wdXRDb250cm9sbGVy
TW9jay5oIgorCisjaW5jbHVkZSAiU3BlZWNoSW5wdXRMaXN0ZW5lci5oIgorI2luY2x1ZGUgIldl
YlNwZWVjaElucHV0TGlzdGVuZXIuaCIKKyNpbmNsdWRlICJXZWJTdHJpbmcuaCIKKyNpbmNsdWRl
IDx3dGYvT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFNwZWVjaElucHV0
Q2xpZW50TW9jazsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlNwZWVjaElu
cHV0Q29udHJvbGxlck1vY2tJbXBsIDogcHVibGljIFdlYkNvcmU6OlNwZWVjaElucHV0TGlzdGVu
ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgcHVibGljIFdlYlNw
ZWVjaElucHV0Q29udHJvbGxlck1vY2sgeworcHVibGljOgorICAgIFdlYlNwZWVjaElucHV0Q29u
dHJvbGxlck1vY2tJbXBsKFdlYlNwZWVjaElucHV0TGlzdGVuZXIqKTsKKworICAgIC8vIFdlYkNv
cmU6OlNwZWVjaElucHV0TGlzdGVuZXIgbWV0aG9kcy4KKyAgICB2b2lkIGRpZENvbXBsZXRlUmVj
b3JkaW5nKCk7CisgICAgdm9pZCBkaWRDb21wbGV0ZVJlY29nbml0aW9uKCk7CisgICAgdm9pZCBz
ZXRSZWNvZ25pdGlvblJlc3VsdChjb25zdCBXZWJDb3JlOjpTdHJpbmcmIHJlc3VsdCk7CisKKyAg
ICAvLyBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIgbWV0aG9kcy4KKyAgICBib29sIHN0YXJ0UmVj
b2duaXRpb24oKTsKKyAgICB2b2lkIGNhbmNlbFJlY29nbml0aW9uKCk7CisgICAgdm9pZCBzdG9w
UmVjb3JkaW5nKCk7CisKKyAgICAvLyBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrIG1ldGhv
ZHMuCisgICAgdm9pZCBzZXRNb2NrUmVjb2duaXRpb25SZXN1bHQoY29uc3QgV2ViU3RyaW5nJiBy
ZXN1bHQpOworCitwcml2YXRlOgorICAgIE93blB0cjxXZWJDb3JlOjpTcGVlY2hJbnB1dENsaWVu
dE1vY2s+IG1fd2ViY29yZU1vY2s7CisgICAgV2ViU3BlZWNoSW5wdXRMaXN0ZW5lciogbV9saXN0
ZW5lcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViU3BlZWNo
SW5wdXRDb250cm9sbGVyTW9ja0ltcGxfaAorCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9DaGFu
Z2VMb2cgYi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKaW5kZXggMmMwNWFjNWU3MzczYjZkNGE4MjBl
MjY3OGNmYmIxNDkxNTA2YzU2OS4uMzk4MGMzNmFiNmNmZDUzZGYyOGUyYjNkNDdjOWQyNjI0NzVk
ODAzYiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1dlYktpdFRvb2xz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEwLTA4LTA0ICBTYXRpc2ggU2FtcGF0aCAg
PHNhdGlzaEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIHNwZWVjaCBpbnB1dCBjb250cm9sbGVyIG1vY2sgaW4gV2ViS2l0
IGFuZCBhIGxheW91dCB0ZXN0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDM0NzcKKworICAgICAgICBBZGRlZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
c2V0TW9ja1NwZWVjaElucHV0UmVzdWx0Q2FsbGJhY2sgbWV0aG9kLgorCisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoc2V0TW9ja1Nw
ZWVjaElucHV0UmVzdWx0Q2FsbGJhY2spOiBXcmFwcGVyIGludm9raW5nIHRoZSBtZW1iZXIgZnVu
Y3Rpb24uCisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhdGljRnVuY3Rpb25zKToK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpMYXlvdXRUZXN0Q29udHJvbGxlcik6CisgICAg
ICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KTogU2V0
cyB0aGUgbW9jayByZXN1bHQuCisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3BlZWNo
SW5wdXRDb250cm9sbGVyKTogQ3JlYXRlcyB0aGUgbW9jayBjb250cm9sbGVyLgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmg6CisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwOgorICAgICAgICAoV2Vi
Vmlld0hvc3Q6OnNwZWVjaElucHV0Q29udHJvbGxlcik6IENyZWF0ZXMgdGhlIG1vY2sgY29udHJv
bGxlci4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHA6
CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja1NwZWVjaElucHV0UmVzdWx0
KTogZHVtbXkgbWV0aG9kLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0
Q29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2Nr
U3BlZWNoSW5wdXRSZXN1bHQpOiBkdW1teSBtZXRob2QuCisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6c2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KTogZHVtbXkgbWV0aG9kLgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaDoKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwOiBkdW1teSBt
ZXRob2QuCisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja1NwZWVjaElucHV0
UmVzdWx0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxl
cld4LmNwcDogZHVtbXkgbWV0aG9kLgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNl
dE1vY2tTcGVlY2hJbnB1dFJlc3VsdCk6CisKIDIwMTAtMDgtMDMgIEtlbnQgVGFtdXJhICA8dGtl
bnRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4K
ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9s
bGVyLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVy
LmNwcAppbmRleCAzZDkxZTBjM2RiOGJmYWIwNmVkZWI5OGVkZjAzZjkwMzA3N2VkMWUwLi5iY2I2
NzZlMzY3OTQzZmJhZDU3ODM5NzYwZDRhODVmYjNiMzAyOTQzIDEwMDY0NAotLS0gYS9XZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKKysrIGIvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCkBAIC0xMDUwLDYg
KzEwNTAsMjAgQEAgc3RhdGljIEpTVmFsdWVSZWYgc2V0TW9ja0dlb2xvY2F0aW9uRXJyb3JDYWxs
YmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3QKICAgICByZXR1cm4gSlNWYWx1ZU1h
a2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIHNldE1vY2tTcGVl
Y2hJbnB1dFJlc3VsdENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBm
dW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNv
bnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAg
ICBpZiAoYXJndW1lbnRDb3VudCA8IDEpCisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVm
aW5lZChjb250ZXh0KTsKKworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiByZXN1bHQoQWRv
cHQsIEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgYXJndW1lbnRzWzBdLCBleGNlcHRpb24p
KTsKKyAgICBBU1NFUlQoISpleGNlcHRpb24pOworCisgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIq
IGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0
R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgY29udHJvbGxlci0+c2V0TW9ja1NwZWVjaElu
cHV0UmVzdWx0KHJlc3VsdC5nZXQoKSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmlu
ZWQoY29udGV4dCk7Cit9CisKIHN0YXRpYyBKU1ZhbHVlUmVmIHNldE5ld1dpbmRvd3NDb3B5QmFj
a0ZvcndhcmRMaXN0Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1
bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29u
c3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAg
IC8vIEhhcyBtYWMgaW1wbGVtZW50YXRpb24KQEAgLTE4ODIsNiArMTg5Niw3IEBAIEpTU3RhdGlj
RnVuY3Rpb24qIExheW91dFRlc3RDb250cm9sbGVyOjpzdGF0aWNGdW5jdGlvbnMoKQogICAgICAg
ICB7ICJzZXRNb2NrRGV2aWNlT3JpZW50YXRpb24iLCBzZXRNb2NrRGV2aWNlT3JpZW50YXRpb25D
YWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmli
dXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRNb2NrR2VvbG9jYXRpb25FcnJvciIsIHNl
dE1vY2tHZW9sb2NhdGlvbkVycm9yQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9u
bHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0TW9j
a0dlb2xvY2F0aW9uUG9zaXRpb24iLCBzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbkNhbGxiYWNr
LCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250
RGVsZXRlIH0sCisgICAgICAgIHsgInNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdCIsIHNldE1vY2tT
cGVlY2hJbnB1dFJlc3VsdENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwg
a0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldE5ld1dpbmRv
d3NDb3B5QmFja0ZvcndhcmRMaXN0Iiwgc2V0TmV3V2luZG93c0NvcHlCYWNrRm9yd2FyZExpc3RD
YWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmli
dXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRQT1NJWExvY2FsZSIsIHNldFBPU0lYTG9j
YWxlQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0UGVyc2lzdGVudFVzZXJTdHlsZVNo
ZWV0TG9jYXRpb24iLCBzZXRQZXJzaXN0ZW50VXNlclN0eWxlU2hlZXRMb2NhdGlvbkNhbGxiYWNr
LCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250
RGVsZXRlIH0sCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRU
ZXN0Q29udHJvbGxlci5oIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENv
bnRyb2xsZXIuaAppbmRleCA5ZDE1ZjRjNjY2YTZjZWRkNDNmZTJkMmYwMDgyOGZhMDFkZTRhOGJh
Li41ODJhY2U1ZWQzZjRlZTgxMDk3NDkzNzIyZGI1ZTQzZmI1N2M3MDFiIDEwMDY0NAotLS0gYS9X
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCisrKyBiL1dl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKQEAgLTkzLDYg
KzkzLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0TW9ja0RldmljZU9yaWVudGF0aW9uKGJvb2wg
Y2FuUHJvdmlkZUFscGhhLCBkb3VibGUgYWxwaGEsIGJvb2wgY2FuUHJvdmlkZUJldGEsIGRvdWJs
ZSBiZXRhLCBib29sIGNhblByb3ZpZGVHYW1tYSwgZG91YmxlIGdhbW1hKTsKICAgICB2b2lkIHNl
dE1vY2tHZW9sb2NhdGlvbkVycm9yKGludCBjb2RlLCBKU1N0cmluZ1JlZiBtZXNzYWdlKTsKICAg
ICB2b2lkIHNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKGRvdWJsZSBsYXRpdHVkZSwgZG91Ymxl
IGxvbmdpdHVkZSwgZG91YmxlIGFjY3VyYWN5KTsKKyAgICB2b2lkIHNldE1vY2tTcGVlY2hJbnB1
dFJlc3VsdChKU1N0cmluZ1JlZiByZXN1bHQpOwogICAgIHZvaWQgc2V0UGVyc2lzdGVudFVzZXJT
dHlsZVNoZWV0TG9jYXRpb24oSlNTdHJpbmdSZWYgcGF0aCk7CiAgICAgdm9pZCBzZXRQbHVnaW5z
RW5hYmxlZChib29sIGZsYWcpOwogICAgIHZvaWQgc2V0UG9wdXBCbG9ja2luZ0VuYWJsZWQoYm9v
bCBmbGFnKTsKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L0xheW91dFRlc3RDb250cm9sbGVyLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAppbmRleCBkZDA3NmFlYmI5OTJiMDBhOGM4
ZDRhOGRkNDA1NDk5YmVkYmRiNmVmLi5hYzc2NTE2OWQwMDM1Yzc1NWZkYmM5Zjg0MmU5MWM3ZTBj
MjFmMzY3IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9M
YXlvdXRUZXN0Q29udHJvbGxlci5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5j
bHVkZSAicHVibGljL1dlYlNlY3VyaXR5UG9saWN5LmgiCiAjaW5jbHVkZSAicHVibGljL1dlYlNl
dHRpbmdzLmgiCiAjaW5jbHVkZSAicHVibGljL1dlYlNpemUuaCIKKyNpbmNsdWRlICJwdWJsaWMv
V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9jay5oIgogI2luY2x1ZGUgInB1YmxpYy9XZWJVUkwu
aCIKICNpbmNsdWRlICJwdWJsaWMvV2ViVmlldy5oIgogI2luY2x1ZGUgIndlYmtpdC9zdXBwb3J0
L3dlYmtpdF9zdXBwb3J0LmgiCkBAIC0xNzQsNiArMTc1LDcgQEAgTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OkxheW91dFRlc3RDb250cm9sbGVyKFRlc3RTaGVsbCogc2hlbGwpCiAgICAgYmluZE1ldGhv
ZCgic2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24iLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNl
dE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKTsKICAgICBiaW5kTWV0aG9kKCJzZXRNb2NrR2VvbG9j
YXRpb25FcnJvciIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja0dlb2xvY2F0aW9uRXJy
b3IpOwogICAgIGJpbmRNZXRob2QoImFib3J0TW9kYWwiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6
OmFib3J0TW9kYWwpOworICAgIGJpbmRNZXRob2QoInNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdCIs
ICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KTsKIAogICAg
IC8vIFRoZSBmYWxsYmFjayBtZXRob2QgaXMgY2FsbGVkIHdoZW4gYW4gdW5rbm93biBtZXRob2Qg
aXMgaW52b2tlZC4KICAgICBiaW5kRmFsbGJhY2tNZXRob2QoJkxheW91dFRlc3RDb250cm9sbGVy
OjpmYWxsYmFja01ldGhvZCk7CkBAIC0xMzY5LDMgKzEzNzEsMTkgQEAgdm9pZCBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6YWJvcnRNb2RhbChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywg
Q3BwVmFyaWEKIHsKICAgICByZXN1bHQtPnNldE51bGwoKTsKIH0KKwordm9pZCBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6c2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KGNvbnN0IENwcEFyZ3VtZW50TGlz
dCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgcmVzdWx0LT5zZXROdWxs
KCk7CisgICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgPCAxIHx8ICFhcmd1bWVudHNbMF0uaXNTdHJp
bmcoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9zcGVlY2hJbnB1dENvbnRyb2xsZXJNb2Nr
LT5zZXRNb2NrUmVjb2duaXRpb25SZXN1bHQoY3BwVmFyaWFudFRvV2ViU3RyaW5nKGFyZ3VtZW50
c1swXSkpOworfQorCitXZWJLaXQ6OldlYlNwZWVjaElucHV0Q29udHJvbGxlciogTGF5b3V0VGVz
dENvbnRyb2xsZXI6OnNwZWVjaElucHV0Q29udHJvbGxlcihXZWJLaXQ6OldlYlNwZWVjaElucHV0
TGlzdGVuZXIqIGxpc3RlbmVyKQoreworICAgIGlmICghbV9zcGVlY2hJbnB1dENvbnRyb2xsZXJN
b2NrLmdldCgpKQorICAgICAgICBtX3NwZWVjaElucHV0Q29udHJvbGxlck1vY2suc2V0KFdlYlNw
ZWVjaElucHV0Q29udHJvbGxlck1vY2s6OmNyZWF0ZShsaXN0ZW5lcikpOworICAgIHJldHVybiBt
X3NwZWVjaElucHV0Q29udHJvbGxlck1vY2suZ2V0KCk7Cit9CmRpZmYgLS1naXQgYS9XZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oIGIvV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaApp
bmRleCAwOTZkMWRmMDEwZTRlNGM3ZGEwNTVmYmEzMGQ3YzEyOTIyNTk1ODRjLi5mYjkxNTQ0ZjQ2
NGRhMWUxODUxZThkODAxYjEyMGQxYWQyNTBiNTlkIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCisrKyBiL1dlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmgKQEAg
LTQ2LDYgKzQ2LDEzIEBACiAjaW5jbHVkZSAicHVibGljL1dlYlN0cmluZy5oIgogI2luY2x1ZGUg
InB1YmxpYy9XZWJVUkwuaCIKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KKyNpbmNsdWRlIDx3dGYv
T3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViU3BlZWNoSW5wdXRDb250
cm9sbGVyOworY2xhc3MgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9jazsKK2NsYXNzIFdlYlNw
ZWVjaElucHV0TGlzdGVuZXI7Cit9CiAKIGNsYXNzIFRlc3RTaGVsbDsKIApAQCAtMjk4LDEwICsz
MDUsMTQgQEAgcHVibGljOgogICAgIC8vIEVtcHR5IHN0dWIgbWV0aG9kIHRvIGtlZXAgcGFyaXR5
IHdpdGggb2JqZWN0IG1vZGVsIGV4cG9zZWQgYnkgZ2xvYmFsIExheW91dFRlc3RDb250cm9sbGVy
LgogICAgIHZvaWQgYWJvcnRNb2RhbChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50
Kik7CiAKKyAgICAvLyBTcGVlY2ggaW5wdXQgcmVsYXRlZCBmdW5jdGlvbnMuCisgICAgdm9pZCBz
ZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFu
dCopOworCiBwdWJsaWM6CiAgICAgLy8gVGhlIGZvbGxvd2luZyBtZXRob2RzIGFyZSBub3QgZXhw
b3NlZCB0byBKYXZhU2NyaXB0LgogICAgIHZvaWQgc2V0V29ya1F1ZXVlRnJvemVuKGJvb2wgZnJv
emVuKSB7IG1fd29ya1F1ZXVlLnNldEZyb3plbihmcm96ZW4pOyB9CiAKKyAgICBXZWJLaXQ6Oldl
YlNwZWVjaElucHV0Q29udHJvbGxlciogc3BlZWNoSW5wdXRDb250cm9sbGVyKFdlYktpdDo6V2Vi
U3BlZWNoSW5wdXRMaXN0ZW5lciopOwogICAgIGJvb2wgc2hvdWxkRHVtcEFzVGV4dCgpIHsgcmV0
dXJuIG1fZHVtcEFzVGV4dDsgfQogICAgIGJvb2wgc2hvdWxkRHVtcEVkaXRpbmdDYWxsYmFja3Mo
KSB7IHJldHVybiBtX2R1bXBFZGl0aW5nQ2FsbGJhY2tzOyB9CiAgICAgYm9vbCBzaG91bGREdW1w
RnJhbWVMb2FkQ2FsbGJhY2tzKCkgeyByZXR1cm4gbV9kdW1wRnJhbWVMb2FkQ2FsbGJhY2tzOyB9
CkBAIC00NzIsNiArNDgzLDggQEAgcHJpdmF0ZToKICAgICBDcHBWYXJpYW50IG1fd2ViSGlzdG9y
eUl0ZW1Db3VudDsKIAogICAgIFdlYktpdDo6V2ViVVJMIG1fdXNlclN0eWxlU2hlZXRMb2NhdGlv
bjsKKworICAgIE93blB0cjxXZWJLaXQ6OldlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2s+IG1f
c3BlZWNoSW5wdXRDb250cm9sbGVyTW9jazsKIH07CiAKICNlbmRpZiAvLyBMYXlvdXRUZXN0Q29u
dHJvbGxlcl9oCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0U2hlbGwuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFNoZWxsLmNwcAppbmRleCAxYjUyNjk5MWQyOWQ3NmJhMDg1MjVmZWVjYzYwYTljNTM2OWQ3OGYx
Li4zZWU3MDNlMjg5NTQzMmIwNTc3YmUwMGZmMmU4MmQ5NzUwY2EwNzY2IDEwMDY0NAotLS0gYS9X
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuY3BwCisrKyBiL1dl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5jcHAKQEAgLTQ2LDYg
KzQ2LDcgQEAKICNpbmNsdWRlICJwdWJsaWMvV2ViU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1
ZGUgInB1YmxpYy9XZWJTZXR0aW5ncy5oIgogI2luY2x1ZGUgInB1YmxpYy9XZWJTaXplLmgiCisj
aW5jbHVkZSAicHVibGljL1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2suaCIKICNpbmNsdWRl
ICJwdWJsaWMvV2ViU3RyaW5nLmgiCiAjaW5jbHVkZSAicHVibGljL1dlYlVSTFJlcXVlc3QuaCIK
ICNpbmNsdWRlICJwdWJsaWMvV2ViVVJMUmVzcG9uc2UuaCIKZGlmZiAtLWdpdCBhL1dlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcCBiL1dlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcAppbmRleCBlZDM3YTMxZTI5
OWQ3NzI5NjE4ZmY0N2VjNTc0ZDBhODZjMTBkNzEyLi4yYmFiNmUzYWNkNzRiNmFjODlkMmVlYWE5
OWFlOTNjMDljM2JkZjg0IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCkBAIC01MDEsNiArNTAxLDExIEBAIFdlYktpdDo6V2Vi
R2VvbG9jYXRpb25TZXJ2aWNlKiBXZWJWaWV3SG9zdDo6Z2VvbG9jYXRpb25TZXJ2aWNlKCkKICAg
ICByZXR1cm4gbV9nZW9sb2NhdGlvblNlcnZpY2VNb2NrLmdldCgpOwogfQogCitXZWJTcGVlY2hJ
bnB1dENvbnRyb2xsZXIqIFdlYlZpZXdIb3N0OjpzcGVlY2hJbnB1dENvbnRyb2xsZXIoV2ViS2l0
OjpXZWJTcGVlY2hJbnB1dExpc3RlbmVyKiBsaXN0ZW5lcikKK3sKKyAgICByZXR1cm4gbV9zaGVs
bC0+bGF5b3V0VGVzdENvbnRyb2xsZXIoKS0+c3BlZWNoSW5wdXRDb250cm9sbGVyKGxpc3RlbmVy
KTsKK30KKwogLy8gV2ViV2lkZ2V0Q2xpZW50IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIHZvaWQgV2ViVmlld0hvc3Q6OmRpZElu
dmFsaWRhdGVSZWN0KGNvbnN0IFdlYlJlY3QmIHJlY3QpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oIGIvV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaAppbmRleCAxZTUxYmU3MTRkYjAwOTI1
NDc3NDc3NDY0MmRjMGFmZTUxMWMyZTRlLi5jMTc1ZTYxYzY1NTQ5Njc2MGM3MjA2MzQxZDFiNTE0
YTQ5YzQ2YWI1IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9XZWJWaWV3SG9zdC5oCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1dlYlZpZXdIb3N0LmgKQEAgLTQ2LDYgKzQ2LDggQEAgY2xhc3MgVGVzdFNoZWxsOwogbmFtZXNw
YWNlIFdlYktpdCB7CiBjbGFzcyBXZWJGcmFtZTsKIGNsYXNzIFdlYkdlb2xvY2F0aW9uU2Vydmlj
ZU1vY2s7CitjbGFzcyBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXI7CitjbGFzcyBXZWJTcGVlY2hJ
bnB1dExpc3RlbmVyOwogY2xhc3MgV2ViVVJMOwogc3RydWN0IFdlYlJlY3Q7CiBzdHJ1Y3QgV2Vi
VVJMRXJyb3I7CkBAIC0xMjYsNiArMTI4LDcgQEAgY2xhc3MgV2ViVmlld0hvc3QgOiBwdWJsaWMg
V2ViS2l0OjpXZWJWaWV3Q2xpZW50LCBwdWJsaWMgV2ViS2l0OjpXZWJGcmFtZUNsaWVudCwKICAg
ICB2aXJ0dWFsIHZvaWQgZm9jdXNBY2Nlc3NpYmlsaXR5T2JqZWN0KGNvbnN0IFdlYktpdDo6V2Vi
QWNjZXNzaWJpbGl0eU9iamVjdCYpOwogICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJOb3RpZmljYXRp
b25QcmVzZW50ZXIqIG5vdGlmaWNhdGlvblByZXNlbnRlcigpOwogICAgIHZpcnR1YWwgV2ViS2l0
OjpXZWJHZW9sb2NhdGlvblNlcnZpY2UqIGdlb2xvY2F0aW9uU2VydmljZSgpOworICAgIHZpcnR1
YWwgV2ViS2l0OjpXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIqIHNwZWVjaElucHV0Q29udHJvbGxl
cihXZWJLaXQ6OldlYlNwZWVjaElucHV0TGlzdGVuZXIqKTsKIAogICAgIC8vIFdlYktpdDo6V2Vi
V2lkZ2V0Q2xpZW50CiAgICAgdmlydHVhbCB2b2lkIGRpZEludmFsaWRhdGVSZWN0KGNvbnN0IFdl
YktpdDo6V2ViUmVjdCYpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
Z3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAKaW5kZXggMjlhOTZmMTg2OTgxMTll
YjAyMDQyOThmMTZkNzVlZWQ0NGRiZGNiNC4uM2UxYjMxMTg4NGM0Mzg4YWI5MDZkZjRmMzU0ZjI5
NzM2OTU2YTQxNSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xh
eW91dFRlc3RDb250cm9sbGVyR3RrLmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCkBAIC00NjIsNiArNDYyLDEyIEBAIHZv
aWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tHZW9sb2NhdGlvbkVycm9yKGludCBjb2Rl
LCBKU1N0cmluZ1JlZiBtZXNzYWdlCiAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yODI2NC4KIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
c2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KEpTU3RyaW5nUmVmIHJlc3VsdCkKK3sKKyAgICAvLyBG
SVhNRTogSW1wbGVtZW50IGZvciBzcGVlY2ggaW5wdXQgbGF5b3V0IHRlc3RzLgorICAgIC8vIFNl
ZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk0ODUuCit9CisKIHZv
aWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEljb25EYXRhYmFzZUVuYWJsZWQoYm9vbCBmbGFn
KQogewogICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbSBiL1dlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQppbmRleCA1ZWRm
ODExMTRiODAwMGNhMDY2MDcxYmUwZDgwNjQxZjgzZmJkZjQ5Li43Yjc3YmE1NTdkYzNkMjZkZjAz
YzEzZjg5OWExMDVjZTNkOGEwZTA5IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KKysrIGIvV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCkBAIC0zNTUsNiArMzU1
LDEyIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tHZW9sb2NhdGlvbkVycm9y
KGludCBjb2RlLCBKU1N0cmluZ1JlZiBtZXNzYWdlCiAgICAgW1tNb2NrR2VvbG9jYXRpb25Qcm92
aWRlciBzaGFyZWRdIHNldEVycm9yOmVycm9yXTsKIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6c2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KEpTU3RyaW5nUmVmIHJlc3VsdCkKK3sKKyAg
ICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBzcGVlY2ggaW5wdXQgbGF5b3V0IHRlc3RzLgorICAg
IC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk0ODUuCit9
CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEljb25EYXRhYmFzZUVuYWJsZWQoYm9v
bCBpY29uRGF0YWJhc2VFbmFibGVkKQogewogICAgIC8vIEZJWE1FOiBXb3JrYXJvdW5kIDxyZGFy
Oi8vcHJvYmxlbS82NDgwMTA4PgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcAppbmRleCAxOWM0MTQyODI3ZDY3MzJj
Mzg5ZmUyNjI5NzU3ZDZiNmQzNjgxNzk0Li5lNjgyZmQwMWRlMmUyNDM4ZmM3NTkzZGYxN2RlN2E3
ZWJkNDA3MGJmIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlv
dXRUZXN0Q29udHJvbGxlclF0LmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9x
dC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcApAQCAtNzE1LDYgKzcxNSwxMiBAQCB2b2lkIExh
eW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihkb3VibGUgbGF0
aXR1ZGUsIGRvdWJsZSBsbwogICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRNb2NrR2Vv
bG9jYXRpb25Qb3NpdGlvbihsYXRpdHVkZSwgbG9uZ2l0dWRlLCBhY2N1cmFjeSk7CiB9CiAKK3Zv
aWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdChjb25zdCBR
U3RyaW5nJiByZXN1bHQpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3Igc3BlZWNoIGlu
cHV0IGxheW91dCB0ZXN0cy4KKyAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTM5NDg1LgorfQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpldmFs
dWF0ZVNjcmlwdEluSXNvbGF0ZWRXb3JsZChpbnQgd29ybGRJRCwgY29uc3QgUVN0cmluZyYgc2Ny
aXB0KQogewogICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpldmFsdWF0ZVNjcmlwdEluSXNv
bGF0ZWRXb3JsZChtX2RydC0+d2ViUGFnZSgpLT5tYWluRnJhbWUoKSwgd29ybGRJRCwgc2NyaXB0
KTsKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RD
b250cm9sbGVyUXQuaCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RD
b250cm9sbGVyUXQuaAppbmRleCAyNGMwZDRiNGMzZTdhYTM3NDg1NmU1Y2VhM2ExODVmZTUwMmRh
ZjZiLi5mOTk4NmIxYjIwMzBiYjNjMzdmNGFkZmNkN2E4ODI0ZDlhMWYxNWFhIDEwMDY0NAotLS0g
YS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmgK
KysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJR
dC5oCkBAIC0yMDgsNiArMjA4LDggQEAgcHVibGljIHNsb3RzOgogICAgIGJvb2wgaXNHZW9sb2Nh
dGlvblBlcm1pc3Npb25TZXQoKSBjb25zdCB7IHJldHVybiBtX2lzR2VvbG9jYXRpb25QZXJtaXNz
aW9uU2V0OyB9CiAgICAgYm9vbCBnZW9sb2NhdGlvblBlcm1pc3Npb24oKSBjb25zdCB7IHJldHVy
biBtX2dlb2xvY2F0aW9uUGVybWlzc2lvbjsgfQogCisgICAgdm9pZCBzZXRNb2NrU3BlZWNoSW5w
dXRSZXN1bHQoY29uc3QgUVN0cmluZyYgcmVzdWx0KTsKKwogICAgIC8vIEVtcHR5IHN0dWIgbWV0
aG9kIHRvIGtlZXAgcGFyaXR5IHdpdGggb2JqZWN0IG1vZGVsIGV4cG9zZWQgYnkgZ2xvYmFsIExh
eW91dFRlc3RDb250cm9sbGVyLgogICAgIHZvaWQgYWJvcnRNb2RhbCgpIHt9CiAKZGlmZiAtLWdp
dCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldp
bi5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xs
ZXJXaW4uY3BwCmluZGV4IDE3NTVkZGZjYjE2MDJhZmQyYTFmNDZmMzM0NzNjMmYwYWM3NDY4MjMu
LjRiMTAxOWEwNDVhNmU1NWIzMGYzZWQ3N2FkNGJjNWM2OWNlYzg5NDkgMTAwNjQ0Ci0tLSBhL1dl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAK
KysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVy
V2luLmNwcApAQCAtMzkzLDYgKzM5MywxMiBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpz
ZXRNb2NrR2VvbG9jYXRpb25FcnJvcihpbnQgY29kZSwgSlNTdHJpbmdSZWYgbWVzc2FnZQogICAg
IC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjgyNjQuCiB9
CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdChK
U1N0cmluZ1JlZiByZXN1bHQpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3Igc3BlZWNo
IGlucHV0IGxheW91dCB0ZXN0cy4KKyAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTM5NDg1LgorfQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpz
ZXRJY29uRGF0YWJhc2VFbmFibGVkKGJvb2wgaWNvbkRhdGFiYXNlRW5hYmxlZCkKIHsKICAgICAv
LyBTZWUgYWxzbyA8cmRhcjovL3Byb2JsZW0vNjQ4MDEwOD4KZGlmZiAtLWdpdCBhL1dlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwIGIvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAKaW5kZXgg
Yzg0NDk0MmI5NjBkMzkzOTFiZTAwY2NkNDdhMzcyNjhiNmU3ZjUzZi4uZTgzZGI3YjQ2ZmY2YmRh
N2YyZjU5MmM4MjczZmVjMjc1MDViZjBlNyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAKKysrIGIvV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAKQEAgLTI5OSw2ICsy
OTksMTIgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja0dlb2xvY2F0aW9uRXJy
b3IoaW50IGNvZGUsIEpTU3RyaW5nUmVmIG1lc3NhZ2UKICAgICAvLyBTZWUgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4MjY0LgogfQogCit2b2lkIExheW91dFRlc3RD
b250cm9sbGVyOjpzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoSlNTdHJpbmdSZWYgcmVzdWx0KQor
eworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIHNwZWVjaCBpbnB1dCBsYXlvdXQgdGVzdHMu
CisgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTQ4
NS4KK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0SWNvbkRhdGFiYXNlRW5hYmxl
ZChib29sIGljb25EYXRhYmFzZUVuYWJsZWQpCiB7CiAgICAgLy8gRklYTUU6IGltcGxlbWVudAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63450</attachid>
            <date>2010-08-04 07:41:16 -0700</date>
            <delta_ts>2010-08-04 11:11:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43477-20100804154113.patch</filename>
            <type>text/plain</type>
            <size>31176</size>
            <attacher name="Satish Sampath">satish</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyNzk3NGZkYTU1NWNiNTU1ZGIzMDliMzE2MDdlZjU3Y2ZjMmY3YTE3Li40MjYyOTU0
NTcwNjc1YzkxYWViZGY0MjI1OWE3N2I5NTU3MTdkMDE1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTAtMDgtMDQgIFNhdGlzaCBTYW1wYXRoICA8c2F0aXNoQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc3BlZWNoIGlu
cHV0IGNvbnRyb2xsZXIgbW9jayBpbiBXZWJLaXQgYW5kIGEgbGF5b3V0IHRlc3QuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MzQ3NworCisgICAgICAg
ICogZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1zcGVlY2hidXR0b24tZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L3NwZWVjaC9pbnB1dC10ZXh0LXNwZWVjaGJ1dHRvbi5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L3NwZWVjaC9zY3JpcHQtdGVzdHMvaW5wdXQtdGV4dC1zcGVl
Y2hidXR0b24uanM6IEFkZGVkLgorICAgICAgICAob25DaGFuZ2UpOgorICAgICAgICAocnVuKToK
KwogMjAxMC0wOC0wMyAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9zcGVlY2gvaW5wdXQtdGV4dC1zcGVlY2hidXR0b24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1zcGVlY2hidXR0b24tZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjcxNTQ1MmNmZjkzZDBkYTQxNTU3Zjg0ODJjMDcxMWNlZjkwZmY0NzIKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9pbnB1dC10ZXh0LXNwZWVjaGJ1dHRv
bi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw5IEBACitUZXN0cyBmb3Igc3BlZWNoIGJ1dHRvbiBj
bGljayB3aXRoIDxpbnB1dCB0eXBlPSJ0ZXh0IiBzcGVlY2g+Lg0KKw0KK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4NCisNCisNCitQQVNTIGlucHV0LnZhbHVlIGlzICJQaWN0dXJlcyBvZiB0aGUg
bW9vbiINCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlDQorDQorVEVTVCBDT01QTEVU
RQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3Qvc3BlZWNoL2lucHV0LXRleHQtc3BlZWNoYnV0dG9uLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L3NwZWVjaC9pbnB1dC10ZXh0LXNwZWVjaGJ1dHRvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUxZWYwMGI5
M2Q3OWMxNjM2NjZlMDlmYjFkOWE1N2EwNmFmYTNkNzYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L3NwZWVjaC9pbnB1dC10ZXh0LXNwZWVjaGJ1dHRvbi5odG1sCkBAIC0wLDAg
KzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4K
KzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2pzL3Jlc291
cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0
aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQt
dGVzdHMvaW5wdXQtdGV4dC1zcGVlY2hidXR0b24uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvc2NyaXB0LXRlc3RzL2lu
cHV0LXRleHQtc3BlZWNoYnV0dG9uLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvc2NyaXB0
LXRlc3RzL2lucHV0LXRleHQtc3BlZWNoYnV0dG9uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM2NTEyYmM5NDhi
ZGM4ZjY3MmFiYjYwMjI1NjRhYWRkYzFlYWVhZDMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L3NwZWVjaC9zY3JpcHQtdGVzdHMvaW5wdXQtdGV4dC1zcGVlY2hidXR0b24uanMK
QEAgLTAsMCArMSwzMCBAQAorZGVzY3JpcHRpb24oJ1Rlc3RzIGZvciBzcGVlY2ggYnV0dG9uIGNs
aWNrIHdpdGggJmx0O2lucHV0IHR5cGU9InRleHQiIHNwZWVjaD4uJyk7CisKK2Z1bmN0aW9uIG9u
Q2hhbmdlKCkgeworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInNwZWVjaElucHV0IikudmFsdWUnLCAnUGljdHVyZXMgb2YgdGhlIG1vb24nKTsKKyAg
ICBmaW5pc2hKU1Rlc3QoKTsKK30KKworZnVuY3Rpb24gcnVuKCkgeworICB2YXIgaW5wdXQgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpOworICBpbnB1dC5pZCA9ICdzcGVlY2hJbnB1
dCc7CisgIGlucHV0LnNwZWVjaCA9ICdzcGVlY2gnOworICBpbnB1dC5hZGRFdmVudExpc3RlbmVy
KCdjaGFuZ2UnLCBvbkNoYW5nZSwgZmFsc2UpOworICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxk
KGlucHV0KTsKKworICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KCdQaWN0dXJlcyBvZiB0
aGUgbW9vbicpOworCisgIC8vIENsaWNraW5nIHRoZSBzcGVlY2ggYnV0dG9uIHNob3VsZCBmaWxs
IGluIG1vY2sgc3BlZWNoLXJlY29nbml6ZWQgdGV4dC4KKyAgaWYgKHdpbmRvdy5ldmVudFNlbmRl
cikgeworICAgICAgdmFyIHggPSBpbnB1dC5vZmZzZXRMZWZ0ICsgaW5wdXQub2Zmc2V0V2lkdGgg
LSA0OworICAgICAgdmFyIHkgPSBpbnB1dC5vZmZzZXRUb3AgKyBpbnB1dC5vZmZzZXRIZWlnaHQg
LyAyOworICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgICBldmVudFNl
bmRlci5tb3VzZURvd24oKTsKKyAgICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgfQorfQor
Cit3aW5kb3cub25sb2FkID0gcnVuOword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOword2lu
ZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBiYmRmMDM1NzNi
Nzg5NzJhMTgzNWZlMDhiYzA2YzMwNmIwNDNjZTUzLi5jZjIwYThmOWZiOTAyYzBlMzdiNmYxZDg2
ODE2MzFlYmYzYzc1MDY2IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisr
KyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxMC0wOC0w
NCAgU2F0aXNoIFNhbXBhdGggIDxzYXRpc2hAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzcGVlY2ggaW5wdXQgY29udHJv
bGxlciBtb2NrIGluIFdlYktpdCBhbmQgYSBsYXlvdXQgdGVzdC4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQzNDc3CisKKyAgICAgICAgKiBXZWJLaXQu
Z3lwOgorICAgICAgICAqIHB1YmxpYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrLmg6IEFk
ZGVkIFdlYktpdCBzcGVlY2ggaW5wdXQgY29udHJvbGxlciBtb2NrIGludGVyZmFjZS4KKyAgICAg
ICAgKiBzcmMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGwuY3BwOiBBZGRlZCBpbXBs
ZW1lbnRhdGlvbiBvZiB0aGUgYWJvdmUgbW9jay4KKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNo
SW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OldlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBs
KToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OnNl
dE1vY2tSZWNvZ25pdGlvblJlc3VsdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaElucHV0
Q29udHJvbGxlck1vY2tJbXBsOjpkaWRDb21wbGV0ZVJlY29yZGluZyk6CisgICAgICAgIChXZWJL
aXQ6OldlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsOjpkaWRDb21wbGV0ZVJlY29nbml0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6
OnNldFJlY29nbml0aW9uUmVzdWx0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoSW5wdXRD
b250cm9sbGVyTW9ja0ltcGw6OnN0YXJ0UmVjb2duaXRpb24pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6Y2FuY2VsUmVjb2duaXRpb24pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6c3RvcFJlY29y
ZGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2s6OmNy
ZWF0ZSk6CisKIDIwMTAtMDgtMDMgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBGaXNoZXIuCmRpZmYgLS1naXQgYS9XZWJL
aXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4
IDlkYTg1Y2Q3Y2EzOGM1MDcyNzgxMzE1ODA3ZWMzOTVjZGI1YmQyNDQuLmQ2YWYzZmZkZDk2MDE1
ZTE0N2NlMzIzOWE3NWRkZTdkN2IyOTYzYTQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9X
ZWJLaXQuZ3lwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC0yNDAsNiArMjQw
LDcgQEAKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlNvY2tldFN0cmVhbUhhbmRsZS5oJywK
ICAgICAgICAgICAgICAgICAncHVibGljL1dlYlNvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oJywK
ICAgICAgICAgICAgICAgICAncHVibGljL1dlYlNwZWVjaElucHV0Q29udHJvbGxlci5oJywKKyAg
ICAgICAgICAgICAgICAncHVibGljL1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2suaCcsCiAg
ICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJTcGVlY2hJbnB1dExpc3RlbmVyLmgnLAogICAgICAg
ICAgICAgICAgICdwdWJsaWMvV2ViU3RvcmFnZUFyZWEuaCcsCiAgICAgICAgICAgICAgICAgJ3B1
YmxpYy9XZWJTdG9yYWdlRXZlbnREaXNwYXRjaGVyLmgnLApAQCAtNDYzLDYgKzQ2NCw4IEBACiAg
ICAgICAgICAgICAgICAgJ3NyYy9XZWJTZXR0aW5nc0ltcGwuaCcsCiAgICAgICAgICAgICAgICAg
J3NyYy9XZWJTaGFyZWRXb3JrZXJJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJT
aGFyZWRXb3JrZXJJbXBsLmgnLAorICAgICAgICAgICAgICAgICdzcmMvV2ViU3BlZWNoSW5wdXRD
b250cm9sbGVyTW9ja0ltcGwuY3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYlNwZWVjaElu
cHV0Q29udHJvbGxlck1vY2tJbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViU3RvcmFn
ZUFyZWFJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJTdG9yYWdlQXJlYUltcGwu
aCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJTdG9yYWdlRXZlbnREaXNwYXRjaGVySW1wbC5j
cHAnLApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hJbnB1dENv
bnRyb2xsZXJNb2NrLmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaElucHV0Q29u
dHJvbGxlck1vY2suaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44N2E0NjRmZmM1NTJjZmM2N2MwNjZjOGNiYjY3OGVi
ZWUyOTYxYmRmCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJT
cGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrLmgKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRp
b24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViU3Bl
ZWNoSW5wdXRDb250cm9sbGVyTW9ja19oCisjZGVmaW5lIFdlYlNwZWVjaElucHV0Q29udHJvbGxl
ck1vY2tfaAorCisjaW5jbHVkZSAiV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyLmgiCisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJTdHJpbmc7CitjbGFzcyBXZWJTcGVlY2hJbnB1dExp
c3RlbmVyOworCitjbGFzcyBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrIDogcHVibGljIFdl
YlNwZWVjaElucHV0Q29udHJvbGxlciB7CitwdWJsaWM6CisgICAgc3RhdGljIFdlYlNwZWVjaElu
cHV0Q29udHJvbGxlck1vY2sqIGNyZWF0ZShXZWJTcGVlY2hJbnB1dExpc3RlbmVyKiBsaXN0ZW5l
cik7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0TW9ja1JlY29nbml0aW9uUmVzdWx0KGNvbnN0IFdl
YlN0cmluZyYgcmVzdWx0KSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNwZWVjaElucHV0Q29udHJv
bGxlck1vY2tJbXBsLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3BlZWNoSW5wdXRDb250
cm9sbGVyTW9ja0ltcGwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUwNThhZmU3ZWZlYmIyYzBlMzkzMTY0YjMw
YjEzYzYzMTZmOGE3MzgKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsLmNwcApAQCAtMCwwICsxLDg5IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRp
c3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBs
LmgiCisKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgIlNwZWVjaElucHV0
Q2xpZW50TW9jay5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8gRmFjdG9yeSBtZXRob2Qu
CitXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrKiBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJN
b2NrOjpjcmVhdGUoV2ViU3BlZWNoSW5wdXRMaXN0ZW5lciogbGlzdGVuZXIpCit7CisgICAgcmV0
dXJuIG5ldyBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbChsaXN0ZW5lcik7Cit9CisK
K1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsOjpXZWJTcGVlY2hJbnB1dENvbnRyb2xs
ZXJNb2NrSW1wbCgKKyAgICBXZWJTcGVlY2hJbnB1dExpc3RlbmVyKiBsaXN0ZW5lcikKKyAgICA6
IG1fd2ViY29yZU1vY2sobmV3IFdlYkNvcmU6OlNwZWVjaElucHV0Q2xpZW50TW9jaygpKQorICAg
ICwgbV9saXN0ZW5lcihsaXN0ZW5lcikKK3sKK30KKwordm9pZCBXZWJTcGVlY2hJbnB1dENvbnRy
b2xsZXJNb2NrSW1wbDo6c2V0TW9ja1JlY29nbml0aW9uUmVzdWx0KAorICAgIGNvbnN0IFdlYlN0
cmluZyYgcmVzdWx0KQoreworICAgIG1fd2ViY29yZU1vY2stPnNldFJlY29nbml0aW9uUmVzdWx0
KHJlc3VsdCk7Cit9CisKK3ZvaWQgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OmRp
ZENvbXBsZXRlUmVjb3JkaW5nKCkKK3sKKyAgICBtX2xpc3RlbmVyLT5kaWRDb21wbGV0ZVJlY29y
ZGluZygpOworfQorCit2b2lkIFdlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsOjpkaWRD
b21wbGV0ZVJlY29nbml0aW9uKCkKK3sKKyAgICBtX2xpc3RlbmVyLT5kaWRDb21wbGV0ZVJlY29n
bml0aW9uKCk7Cit9CisKK3ZvaWQgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OnNl
dFJlY29nbml0aW9uUmVzdWx0KAorICAgIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgcmVzdWx0KQor
eworICAgIG1fbGlzdGVuZXItPnNldFJlY29nbml0aW9uUmVzdWx0KHJlc3VsdCk7Cit9CisKK2Jv
b2wgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OnN0YXJ0UmVjb2duaXRpb24oKQor
eworICAgIHJldHVybiBtX3dlYmNvcmVNb2NrLT5zdGFydFJlY29nbml0aW9uKHRoaXMpOworfQor
Cit2b2lkIFdlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsOjpjYW5jZWxSZWNvZ25pdGlv
bigpCit7CisgICAgbV93ZWJjb3JlTW9jay0+Y2FuY2VsUmVjb2duaXRpb24oKTsKK30KKwordm9p
ZCBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6c3RvcFJlY29yZGluZygpCit7Cisg
ICAgbV93ZWJjb3JlTW9jay0+c3RvcFJlY29yZGluZygpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3BlZWNoSW5wdXRDb250
cm9sbGVyTW9ja0ltcGwuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3BlZWNoSW5wdXRDb250
cm9sbGVyTW9ja0ltcGwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZWY1MTA5NWExZDM5NzQyODdjZmViMzJmYjAz
ZDE5ZWU5ZDk3MWY4Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJT
cGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbC5oCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJp
YnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdl
YlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsX2gKKyNkZWZpbmUgV2ViU3BlZWNoSW5wdXRD
b250cm9sbGVyTW9ja0ltcGxfaAorCisjaW5jbHVkZSAiU3BlZWNoSW5wdXRMaXN0ZW5lci5oIgor
I2luY2x1ZGUgIldlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2suaCIKKyNpbmNsdWRlICJXZWJT
cGVlY2hJbnB1dExpc3RlbmVyLmgiCisjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCisjaW5jbHVkZSA8
d3RmL093blB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBTcGVlY2hJbnB1dENs
aWVudE1vY2s7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJTcGVlY2hJbnB1
dENvbnRyb2xsZXJNb2NrSW1wbCA6IHB1YmxpYyBXZWJDb3JlOjpTcGVlY2hJbnB1dExpc3RlbmVy
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIHB1YmxpYyBXZWJTcGVl
Y2hJbnB1dENvbnRyb2xsZXJNb2NrIHsKK3B1YmxpYzoKKyAgICBXZWJTcGVlY2hJbnB1dENvbnRy
b2xsZXJNb2NrSW1wbChXZWJTcGVlY2hJbnB1dExpc3RlbmVyKik7CisKKyAgICAvLyBXZWJDb3Jl
OjpTcGVlY2hJbnB1dExpc3RlbmVyIG1ldGhvZHMuCisgICAgdm9pZCBkaWRDb21wbGV0ZVJlY29y
ZGluZygpOworICAgIHZvaWQgZGlkQ29tcGxldGVSZWNvZ25pdGlvbigpOworICAgIHZvaWQgc2V0
UmVjb2duaXRpb25SZXN1bHQoY29uc3QgV2ViQ29yZTo6U3RyaW5nJiByZXN1bHQpOworCisgICAg
Ly8gV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyIG1ldGhvZHMuCisgICAgYm9vbCBzdGFydFJlY29n
bml0aW9uKCk7CisgICAgdm9pZCBjYW5jZWxSZWNvZ25pdGlvbigpOworICAgIHZvaWQgc3RvcFJl
Y29yZGluZygpOworCisgICAgLy8gV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9jayBtZXRob2Rz
LgorICAgIHZvaWQgc2V0TW9ja1JlY29nbml0aW9uUmVzdWx0KGNvbnN0IFdlYlN0cmluZyYgcmVz
dWx0KTsKKworcHJpdmF0ZToKKyAgICBPd25QdHI8V2ViQ29yZTo6U3BlZWNoSW5wdXRDbGllbnRN
b2NrPiBtX3dlYmNvcmVNb2NrOworICAgIFdlYlNwZWVjaElucHV0TGlzdGVuZXIqIG1fbGlzdGVu
ZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYlNwZWVjaElu
cHV0Q29udHJvbGxlck1vY2tJbXBsX2gKKwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvQ2hhbmdl
TG9nIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDJjMDVhYzVlNzM3M2I2ZDRhODIwZTI2
NzhjZmJiMTQ5MTUwNmM1NjkuLjM5ODBjMzZhYjZjZmQ1M2RmMjhlMmIzZDQ3YzlkMjYyNDc1ZDgw
M2IgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZworKysgYi9XZWJLaXRUb29scy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAxMC0wOC0wNCAgU2F0aXNoIFNhbXBhdGggIDxz
YXRpc2hAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZCBzcGVlY2ggaW5wdXQgY29udHJvbGxlciBtb2NrIGluIFdlYktpdCBh
bmQgYSBsYXlvdXQgdGVzdC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQzNDc3CisKKyAgICAgICAgQWRkZWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNl
dE1vY2tTcGVlY2hJbnB1dFJlc3VsdENhbGxiYWNrIG1ldGhvZC4KKworICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKHNldE1vY2tTcGVl
Y2hJbnB1dFJlc3VsdENhbGxiYWNrKTogV3JhcHBlciBpbnZva2luZyB0aGUgbWVtYmVyIGZ1bmN0
aW9uLgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN0YXRpY0Z1bmN0aW9ucyk6Cisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6CisgICAg
ICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6TGF5b3V0VGVzdENvbnRyb2xsZXIpOgorICAgICAg
ICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdCk6IFNldHMg
dGhlIG1vY2sgcmVzdWx0LgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNwZWVjaElu
cHV0Q29udHJvbGxlcik6IENyZWF0ZXMgdGhlIG1vY2sgY29udHJvbGxlci4KKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcDoKKyAgICAgICAgKFdlYlZp
ZXdIb3N0OjpzcGVlY2hJbnB1dENvbnRyb2xsZXIpOiBDcmVhdGVzIHRoZSBtb2NrIGNvbnRyb2xs
ZXIuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaDoKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwOgor
ICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdCk6
IGR1bW15IG1ldGhvZC4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENv
bnRyb2xsZXJNYWMubW06CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja1Nw
ZWVjaElucHV0UmVzdWx0KTogZHVtbXkgbWV0aG9kLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRy
b2xsZXI6OnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdCk6IGR1bW15IG1ldGhvZC4KKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0Lmg6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcDogZHVtbXkgbWV0
aG9kLgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tTcGVlY2hJbnB1dFJl
c3VsdCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJX
eC5jcHA6IGR1bW15IG1ldGhvZC4KKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRN
b2NrU3BlZWNoSW5wdXRSZXN1bHQpOgorCiAyMDEwLTA4LTAzICBLZW50IFRhbXVyYSAgPHRrZW50
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCmRp
ZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxl
ci5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5j
cHAKaW5kZXggM2Q5MWUwYzNkYjhiZmFiMDZlZGViOThlZGYwM2Y5MDMwNzdlZDFlMC4uYmNiNjc2
ZTM2Nzk0M2ZiYWQ1NzgzOTc2MGQ0YTg1ZmIzYjMwMjk0MyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1dlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcApAQCAtMTA1MCw2ICsx
MDUwLDIwIEBAIHN0YXRpYyBKU1ZhbHVlUmVmIHNldE1vY2tHZW9sb2NhdGlvbkVycm9yQ2FsbGJh
Y2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0CiAgICAgcmV0dXJuIEpTVmFsdWVNYWtl
VW5kZWZpbmVkKGNvbnRleHQpOwogfQogCitzdGF0aWMgSlNWYWx1ZVJlZiBzZXRNb2NrU3BlZWNo
SW5wdXRSZXN1bHRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVu
Y3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25z
dCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAg
aWYgKGFyZ3VtZW50Q291bnQgPCAxKQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmlu
ZWQoY29udGV4dCk7CisKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gcmVzdWx0KEFkb3B0
LCBKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKSk7
CisgICAgQVNTRVJUKCEqZXhjZXB0aW9uKTsKKworICAgIExheW91dFRlc3RDb250cm9sbGVyKiBj
b250cm9sbGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xsZXIqPihKU09iamVjdEdl
dFByaXZhdGUodGhpc09iamVjdCkpOworICAgIGNvbnRyb2xsZXItPnNldE1vY2tTcGVlY2hJbnB1
dFJlc3VsdChyZXN1bHQuZ2V0KCkpOworCisgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVk
KGNvbnRleHQpOworfQorCiBzdGF0aWMgSlNWYWx1ZVJlZiBzZXROZXdXaW5kb3dzQ29weUJhY2tG
b3J3YXJkTGlzdENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5j
dGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0
IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAgICAv
LyBIYXMgbWFjIGltcGxlbWVudGF0aW9uCkBAIC0xODgyLDYgKzE4OTYsNyBAQCBKU1N0YXRpY0Z1
bmN0aW9uKiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhdGljRnVuY3Rpb25zKCkKICAgICAgICAg
eyAic2V0TW9ja0RldmljZU9yaWVudGF0aW9uIiwgc2V0TW9ja0RldmljZU9yaWVudGF0aW9uQ2Fs
bGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IiLCBzZXRN
b2NrR2VvbG9jYXRpb25FcnJvckNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5
IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldE1vY2tH
ZW9sb2NhdGlvblBvc2l0aW9uIiwgc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25DYWxsYmFjaywg
a0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERl
bGV0ZSB9LAorICAgICAgICB7ICJzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQiLCBzZXRNb2NrU3Bl
ZWNoSW5wdXRSZXN1bHRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtK
U1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXROZXdXaW5kb3dz
Q29weUJhY2tGb3J3YXJkTGlzdCIsIHNldE5ld1dpbmRvd3NDb3B5QmFja0ZvcndhcmRMaXN0Q2Fs
bGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0UE9TSVhMb2NhbGUiLCBzZXRQT1NJWExvY2Fs
ZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRy
aWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldFBlcnNpc3RlbnRVc2VyU3R5bGVTaGVl
dExvY2F0aW9uIiwgc2V0UGVyc2lzdGVudFVzZXJTdHlsZVNoZWV0TG9jYXRpb25DYWxsYmFjaywg
a0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERl
bGV0ZSB9LApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVz
dENvbnRyb2xsZXIuaCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250
cm9sbGVyLmgKaW5kZXggOWQxNWY0YzY2NmE2Y2VkZDQzZmUyZDJmMDA4MjhmYTAxZGU0YThiYS4u
NTgyYWNlNWVkM2Y0ZWU4MTA5NzQ5MzcyMmRiNWU0M2ZiNTdjNzAxYiAxMDA2NDQKLS0tIGEvV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAorKysgYi9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCkBAIC05Myw2ICs5
Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE1vY2tEZXZpY2VPcmllbnRhdGlvbihib29sIGNh
blByb3ZpZGVBbHBoYSwgZG91YmxlIGFscGhhLCBib29sIGNhblByb3ZpZGVCZXRhLCBkb3VibGUg
YmV0YSwgYm9vbCBjYW5Qcm92aWRlR2FtbWEsIGRvdWJsZSBnYW1tYSk7CiAgICAgdm9pZCBzZXRN
b2NrR2VvbG9jYXRpb25FcnJvcihpbnQgY29kZSwgSlNTdHJpbmdSZWYgbWVzc2FnZSk7CiAgICAg
dm9pZCBzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBs
b25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSk7CisgICAgdm9pZCBzZXRNb2NrU3BlZWNoSW5wdXRS
ZXN1bHQoSlNTdHJpbmdSZWYgcmVzdWx0KTsKICAgICB2b2lkIHNldFBlcnNpc3RlbnRVc2VyU3R5
bGVTaGVldExvY2F0aW9uKEpTU3RyaW5nUmVmIHBhdGgpOwogICAgIHZvaWQgc2V0UGx1Z2luc0Vu
YWJsZWQoYm9vbCBmbGFnKTsKICAgICB2b2lkIHNldFBvcHVwQmxvY2tpbmdFbmFibGVkKGJvb2wg
ZmxhZyk7CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9M
YXlvdXRUZXN0Q29udHJvbGxlci5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKaW5kZXggZGQwNzZhZWJiOTkyYjAwYThjOGQ0
YThkZDQwNTQ5OWJlZGJkYjZlZi4uYWM3NjUxNjlkMDAzNWM3NTVmZGJjOWY4NDJlOTFjN2UwYzIx
ZjM2NyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5
b3V0VGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcApAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1
ZGUgInB1YmxpYy9XZWJTZWN1cml0eVBvbGljeS5oIgogI2luY2x1ZGUgInB1YmxpYy9XZWJTZXR0
aW5ncy5oIgogI2luY2x1ZGUgInB1YmxpYy9XZWJTaXplLmgiCisjaW5jbHVkZSAicHVibGljL1dl
YlNwZWVjaElucHV0Q29udHJvbGxlck1vY2suaCIKICNpbmNsdWRlICJwdWJsaWMvV2ViVVJMLmgi
CiAjaW5jbHVkZSAicHVibGljL1dlYlZpZXcuaCIKICNpbmNsdWRlICJ3ZWJraXQvc3VwcG9ydC93
ZWJraXRfc3VwcG9ydC5oIgpAQCAtMTc0LDYgKzE3NSw3IEBAIExheW91dFRlc3RDb250cm9sbGVy
OjpMYXlvdXRUZXN0Q29udHJvbGxlcihUZXN0U2hlbGwqIHNoZWxsKQogICAgIGJpbmRNZXRob2Qo
InNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpzZXRN
b2NrR2VvbG9jYXRpb25Qb3NpdGlvbik7CiAgICAgYmluZE1ldGhvZCgic2V0TW9ja0dlb2xvY2F0
aW9uRXJyb3IiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tHZW9sb2NhdGlvbkVycm9y
KTsKICAgICBiaW5kTWV0aG9kKCJhYm9ydE1vZGFsIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjph
Ym9ydE1vZGFsKTsKKyAgICBiaW5kTWV0aG9kKCJzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQiLCAm
TGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdCk7CiAKICAgICAv
LyBUaGUgZmFsbGJhY2sgbWV0aG9kIGlzIGNhbGxlZCB3aGVuIGFuIHVua25vd24gbWV0aG9kIGlz
IGludm9rZWQuCiAgICAgYmluZEZhbGxiYWNrTWV0aG9kKCZMYXlvdXRUZXN0Q29udHJvbGxlcjo6
ZmFsbGJhY2tNZXRob2QpOwpAQCAtMTM2OSwzICsxMzcxLDE5IEBAIHZvaWQgTGF5b3V0VGVzdENv
bnRyb2xsZXI6OmFib3J0TW9kYWwoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENw
cFZhcmlhCiB7CiAgICAgcmVzdWx0LT5zZXROdWxsKCk7CiB9CisKK3ZvaWQgTGF5b3V0VGVzdENv
bnRyb2xsZXI6OnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdChjb25zdCBDcHBBcmd1bWVudExpc3Qm
IGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAgIHJlc3VsdC0+c2V0TnVsbCgp
OworICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpIDwgMSB8fCAhYXJndW1lbnRzWzBdLmlzU3RyaW5n
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fc3BlZWNoSW5wdXRDb250cm9sbGVyTW9jay0+
c2V0TW9ja1JlY29nbml0aW9uUmVzdWx0KGNwcFZhcmlhbnRUb1dlYlN0cmluZyhhcmd1bWVudHNb
MF0pKTsKK30KKworV2ViS2l0OjpXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIqIExheW91dFRlc3RD
b250cm9sbGVyOjpzcGVlY2hJbnB1dENvbnRyb2xsZXIoV2ViS2l0OjpXZWJTcGVlY2hJbnB1dExp
c3RlbmVyKiBsaXN0ZW5lcikKK3sKKyAgICBpZiAoIW1fc3BlZWNoSW5wdXRDb250cm9sbGVyTW9j
ay5nZXQoKSkKKyAgICAgICAgbV9zcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrLnNldChXZWJTcGVl
Y2hJbnB1dENvbnRyb2xsZXJNb2NrOjpjcmVhdGUobGlzdGVuZXIpKTsKKyAgICByZXR1cm4gbV9z
cGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrLmdldCgpOworfQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaCBiL1dlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmgKaW5k
ZXggMDk2ZDFkZjAxMGU0ZTRjN2RhMDU1ZmJhMzBkN2MxMjkyMjU5NTg0Yy4uZmI5MTU0NGY0NjRk
YTFlMTg1MWU4ZDgwMWIxMjBkMWFkMjUwYjU5ZCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaAorKysgYi9XZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCkBAIC00
Niw2ICs0NiwxMyBAQAogI2luY2x1ZGUgInB1YmxpYy9XZWJTdHJpbmcuaCIKICNpbmNsdWRlICJw
dWJsaWMvV2ViVVJMLmgiCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CisjaW5jbHVkZSA8d3RmL093
blB0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYlNwZWVjaElucHV0Q29udHJv
bGxlcjsKK2NsYXNzIFdlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2s7CitjbGFzcyBXZWJTcGVl
Y2hJbnB1dExpc3RlbmVyOworfQogCiBjbGFzcyBUZXN0U2hlbGw7CiAKQEAgLTI5OCwxMCArMzA1
LDE0IEBAIHB1YmxpYzoKICAgICAvLyBFbXB0eSBzdHViIG1ldGhvZCB0byBrZWVwIHBhcml0eSB3
aXRoIG9iamVjdCBtb2RlbCBleHBvc2VkIGJ5IGdsb2JhbCBMYXlvdXRUZXN0Q29udHJvbGxlci4K
ICAgICB2b2lkIGFib3J0TW9kYWwoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCop
OwogCisgICAgLy8gU3BlZWNoIGlucHV0IHJlbGF0ZWQgZnVuY3Rpb25zLgorICAgIHZvaWQgc2V0
TW9ja1NwZWVjaElucHV0UmVzdWx0KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQq
KTsKKwogcHVibGljOgogICAgIC8vIFRoZSBmb2xsb3dpbmcgbWV0aG9kcyBhcmUgbm90IGV4cG9z
ZWQgdG8gSmF2YVNjcmlwdC4KICAgICB2b2lkIHNldFdvcmtRdWV1ZUZyb3plbihib29sIGZyb3pl
bikgeyBtX3dvcmtRdWV1ZS5zZXRGcm96ZW4oZnJvemVuKTsgfQogCisgICAgV2ViS2l0OjpXZWJT
cGVlY2hJbnB1dENvbnRyb2xsZXIqIHNwZWVjaElucHV0Q29udHJvbGxlcihXZWJLaXQ6OldlYlNw
ZWVjaElucHV0TGlzdGVuZXIqKTsKICAgICBib29sIHNob3VsZER1bXBBc1RleHQoKSB7IHJldHVy
biBtX2R1bXBBc1RleHQ7IH0KICAgICBib29sIHNob3VsZER1bXBFZGl0aW5nQ2FsbGJhY2tzKCkg
eyByZXR1cm4gbV9kdW1wRWRpdGluZ0NhbGxiYWNrczsgfQogICAgIGJvb2wgc2hvdWxkRHVtcEZy
YW1lTG9hZENhbGxiYWNrcygpIHsgcmV0dXJuIG1fZHVtcEZyYW1lTG9hZENhbGxiYWNrczsgfQpA
QCAtNDcyLDYgKzQ4Myw4IEBAIHByaXZhdGU6CiAgICAgQ3BwVmFyaWFudCBtX3dlYkhpc3RvcnlJ
dGVtQ291bnQ7CiAKICAgICBXZWJLaXQ6OldlYlVSTCBtX3VzZXJTdHlsZVNoZWV0TG9jYXRpb247
CisKKyAgICBPd25QdHI8V2ViS2l0OjpXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrPiBtX3Nw
ZWVjaElucHV0Q29udHJvbGxlck1vY2s7CiB9OwogCiAjZW5kaWYgLy8gTGF5b3V0VGVzdENvbnRy
b2xsZXJfaApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
VGVzdFNoZWxsLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RT
aGVsbC5jcHAKaW5kZXggMWI1MjY5OTFkMjlkNzZiYTA4NTI1ZmVlY2M2MGE5YzUzNjlkNzhmMS4u
M2VlNzAzZTI4OTU0MzJiMDU3N2JlMDBmZjJlODJkOTc1MGNhMDc2NiAxMDA2NDQKLS0tIGEvV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmNwcAorKysgYi9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuY3BwCkBAIC00Niw2ICs0
Niw3IEBACiAjaW5jbHVkZSAicHVibGljL1dlYlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRl
ICJwdWJsaWMvV2ViU2V0dGluZ3MuaCIKICNpbmNsdWRlICJwdWJsaWMvV2ViU2l6ZS5oIgorI2lu
Y2x1ZGUgInB1YmxpYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrLmgiCiAjaW5jbHVkZSAi
cHVibGljL1dlYlN0cmluZy5oIgogI2luY2x1ZGUgInB1YmxpYy9XZWJVUkxSZXF1ZXN0LmgiCiAj
aW5jbHVkZSAicHVibGljL1dlYlVSTFJlc3BvbnNlLmgiCmRpZmYgLS1naXQgYS9XZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAgYi9XZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKaW5kZXggZWQzN2EzMWUyOTlk
NzcyOTYxOGZmNDdlYzU3NGQwYTg2YzEwZDcxMi4uMmJhYjZlM2FjZDc0YjZhYzg5ZDJlZWFhOTlh
ZTkzYzA5YzNiZGY4NCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vV2ViVmlld0hvc3QuY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1dlYlZpZXdIb3N0LmNwcApAQCAtNTAxLDYgKzUwMSwxMSBAQCBXZWJLaXQ6OldlYkdl
b2xvY2F0aW9uU2VydmljZSogV2ViVmlld0hvc3Q6Omdlb2xvY2F0aW9uU2VydmljZSgpCiAgICAg
cmV0dXJuIG1fZ2VvbG9jYXRpb25TZXJ2aWNlTW9jay5nZXQoKTsKIH0KIAorV2ViU3BlZWNoSW5w
dXRDb250cm9sbGVyKiBXZWJWaWV3SG9zdDo6c3BlZWNoSW5wdXRDb250cm9sbGVyKFdlYktpdDo6
V2ViU3BlZWNoSW5wdXRMaXN0ZW5lciogbGlzdGVuZXIpCit7CisgICAgcmV0dXJuIG1fc2hlbGwt
PmxheW91dFRlc3RDb250cm9sbGVyKCktPnNwZWVjaElucHV0Q29udHJvbGxlcihsaXN0ZW5lcik7
Cit9CisKIC8vIFdlYldpZGdldENsaWVudCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiB2b2lkIFdlYlZpZXdIb3N0OjpkaWRJbnZh
bGlkYXRlUmVjdChjb25zdCBXZWJSZWN0JiByZWN0KQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaCBiL1dlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgKaW5kZXggMWU1MWJlNzE0ZGIwMDkyNTQ3
NzQ3NzQ2NDJkYzBhZmU1MTFjMmU0ZS4uYzE3NWU2MWM2NTU0OTY3NjBjNzIwNjM0MWQxYjUxNGE0
OWM0NmFiNSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
V2ViVmlld0hvc3QuaAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9X
ZWJWaWV3SG9zdC5oCkBAIC00Niw2ICs0Niw4IEBAIGNsYXNzIFRlc3RTaGVsbDsKIG5hbWVzcGFj
ZSBXZWJLaXQgewogY2xhc3MgV2ViRnJhbWU7CiBjbGFzcyBXZWJHZW9sb2NhdGlvblNlcnZpY2VN
b2NrOworY2xhc3MgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyOworY2xhc3MgV2ViU3BlZWNoSW5w
dXRMaXN0ZW5lcjsKIGNsYXNzIFdlYlVSTDsKIHN0cnVjdCBXZWJSZWN0Owogc3RydWN0IFdlYlVS
TEVycm9yOwpAQCAtMTI2LDYgKzEyOCw3IEBAIGNsYXNzIFdlYlZpZXdIb3N0IDogcHVibGljIFdl
YktpdDo6V2ViVmlld0NsaWVudCwgcHVibGljIFdlYktpdDo6V2ViRnJhbWVDbGllbnQsCiAgICAg
dmlydHVhbCB2b2lkIGZvY3VzQWNjZXNzaWJpbGl0eU9iamVjdChjb25zdCBXZWJLaXQ6OldlYkFj
Y2Vzc2liaWxpdHlPYmplY3QmKTsKICAgICB2aXJ0dWFsIFdlYktpdDo6V2ViTm90aWZpY2F0aW9u
UHJlc2VudGVyKiBub3RpZmljYXRpb25QcmVzZW50ZXIoKTsKICAgICB2aXJ0dWFsIFdlYktpdDo6
V2ViR2VvbG9jYXRpb25TZXJ2aWNlKiBnZW9sb2NhdGlvblNlcnZpY2UoKTsKKyAgICB2aXJ0dWFs
IFdlYktpdDo6V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyKiBzcGVlY2hJbnB1dENvbnRyb2xsZXIo
V2ViS2l0OjpXZWJTcGVlY2hJbnB1dExpc3RlbmVyKik7CiAKICAgICAvLyBXZWJLaXQ6OldlYldp
ZGdldENsaWVudAogICAgIHZpcnR1YWwgdm9pZCBkaWRJbnZhbGlkYXRlUmVjdChjb25zdCBXZWJL
aXQ6OldlYlJlY3QmKTsKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0
ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCmluZGV4IDI5YTk2ZjE4Njk4MTE5ZWIw
MjA0Mjk4ZjE2ZDc1ZWVkNDRkYmRjYjQuLjNlMWIzMTE4ODRjNDM4OGFiOTA2ZGY0ZjM1NGYyOTcz
Njk1NmE0MTUgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlv
dXRUZXN0Q29udHJvbGxlckd0ay5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
Z3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcApAQCAtNDYyLDYgKzQ2MiwxMiBAQCB2b2lk
IExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrR2VvbG9jYXRpb25FcnJvcihpbnQgY29kZSwg
SlNTdHJpbmdSZWYgbWVzc2FnZQogICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjgyNjQuCiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNl
dE1vY2tTcGVlY2hJbnB1dFJlc3VsdChKU1N0cmluZ1JlZiByZXN1bHQpCit7CisgICAgLy8gRklY
TUU6IEltcGxlbWVudCBmb3Igc3BlZWNoIGlucHV0IGxheW91dCB0ZXN0cy4KKyAgICAvLyBTZWUg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NDg1LgorfQorCiB2b2lk
IExheW91dFRlc3RDb250cm9sbGVyOjpzZXRJY29uRGF0YWJhc2VFbmFibGVkKGJvb2wgZmxhZykK
IHsKICAgICAvLyBGSVhNRTogaW1wbGVtZW50CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0gYi9XZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KaW5kZXggNWVkZjgx
MTE0YjgwMDBjYTA2NjA3MWJlMGQ4MDY0MWY4M2ZiZGY0OS4uN2I3N2JhNTU3ZGMzZDI2ZGYwM2Mx
M2Y4OTlhMTA1Y2UzZDhhMGUwOSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCisrKyBiL1dlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQpAQCAtMzU1LDYgKzM1NSwx
MiBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrR2VvbG9jYXRpb25FcnJvcihp
bnQgY29kZSwgSlNTdHJpbmdSZWYgbWVzc2FnZQogICAgIFtbTW9ja0dlb2xvY2F0aW9uUHJvdmlk
ZXIgc2hhcmVkXSBzZXRFcnJvcjplcnJvcl07CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdChKU1N0cmluZ1JlZiByZXN1bHQpCit7CisgICAg
Ly8gRklYTUU6IEltcGxlbWVudCBmb3Igc3BlZWNoIGlucHV0IGxheW91dCB0ZXN0cy4KKyAgICAv
LyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NDg1LgorfQor
CiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRJY29uRGF0YWJhc2VFbmFibGVkKGJvb2wg
aWNvbkRhdGFiYXNlRW5hYmxlZCkKIHsKICAgICAvLyBGSVhNRTogV29ya2Fyb3VuZCA8cmRhcjov
L3Byb2JsZW0vNjQ4MDEwOD4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAKaW5kZXggMTljNDE0MjgyN2Q2NzMyYzM4
OWZlMjYyOTc1N2Q2YjZkMzY4MTc5NC4uZTY4MmZkMDFkZTJlMjQzOGZjNzU5M2RmMTdkZTdhN2Vi
ZDQwNzBiZiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0
VGVzdENvbnRyb2xsZXJRdC5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQv
TGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAKQEAgLTcxNSw2ICs3MTUsMTIgQEAgdm9pZCBMYXlv
dXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oZG91YmxlIGxhdGl0
dWRlLCBkb3VibGUgbG8KICAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0TW9ja0dlb2xv
Y2F0aW9uUG9zaXRpb24obGF0aXR1ZGUsIGxvbmdpdHVkZSwgYWNjdXJhY3kpOwogfQogCit2b2lk
IExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoY29uc3QgUVN0
cmluZyYgcmVzdWx0KQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIHNwZWVjaCBpbnB1
dCBsYXlvdXQgdGVzdHMuCisgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zOTQ4NS4KK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6ZXZhbHVh
dGVTY3JpcHRJbklzb2xhdGVkV29ybGQoaW50IHdvcmxkSUQsIGNvbnN0IFFTdHJpbmcmIHNjcmlw
dCkKIHsKICAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6ZXZhbHVhdGVTY3JpcHRJbklzb2xh
dGVkV29ybGQobV9kcnQtPndlYlBhZ2UoKS0+bWFpbkZyYW1lKCksIHdvcmxkSUQsIHNjcmlwdCk7
CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29u
dHJvbGxlclF0LmggYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29u
dHJvbGxlclF0LmgKaW5kZXggMjRjMGQ0YjRjM2U3YWEzNzQ4NTZlNWNlYTNhMTg1ZmU1MDJkYWY2
Yi4uZjk5ODZiMWIyMDMwYmIzYzM3ZjRhZGZjZDdhODgyNGQ5YTFmMTVhYSAxMDA2NDQKLS0tIGEv
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oCisr
KyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQu
aApAQCAtMjA4LDYgKzIwOCw4IEBAIHB1YmxpYyBzbG90czoKICAgICBib29sIGlzR2VvbG9jYXRp
b25QZXJtaXNzaW9uU2V0KCkgY29uc3QgeyByZXR1cm4gbV9pc0dlb2xvY2F0aW9uUGVybWlzc2lv
blNldDsgfQogICAgIGJvb2wgZ2VvbG9jYXRpb25QZXJtaXNzaW9uKCkgY29uc3QgeyByZXR1cm4g
bV9nZW9sb2NhdGlvblBlcm1pc3Npb247IH0KIAorICAgIHZvaWQgc2V0TW9ja1NwZWVjaElucHV0
UmVzdWx0KGNvbnN0IFFTdHJpbmcmIHJlc3VsdCk7CisKICAgICAvLyBFbXB0eSBzdHViIG1ldGhv
ZCB0byBrZWVwIHBhcml0eSB3aXRoIG9iamVjdCBtb2RlbCBleHBvc2VkIGJ5IGdsb2JhbCBMYXlv
dXRUZXN0Q29udHJvbGxlci4KICAgICB2b2lkIGFib3J0TW9kYWwoKSB7fQogCmRpZmYgLS1naXQg
YS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4u
Y3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVy
V2luLmNwcAppbmRleCAxNzU1ZGRmY2IxNjAyYWZkMmExZjQ2ZjMzNDczYzJmMGFjNzQ2ODIzLi40
YjEwMTlhMDQ1YTZlNTViMzBmM2VkNzdhZDRiYzVjNjljZWM4OTQ5IDEwMDY0NAotLS0gYS9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCisr
KyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldp
bi5jcHAKQEAgLTM5Myw2ICszOTMsMTIgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0
TW9ja0dlb2xvY2F0aW9uRXJyb3IoaW50IGNvZGUsIEpTU3RyaW5nUmVmIG1lc3NhZ2UKICAgICAv
LyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4MjY0LgogfQog
Cit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoSlNT
dHJpbmdSZWYgcmVzdWx0KQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIHNwZWVjaCBp
bnB1dCBsYXlvdXQgdGVzdHMuCisgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zOTQ4NS4KK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0
SWNvbkRhdGFiYXNlRW5hYmxlZChib29sIGljb25EYXRhYmFzZUVuYWJsZWQpCiB7CiAgICAgLy8g
U2VlIGFsc28gPHJkYXI6Ly9wcm9ibGVtLzY0ODAxMDg+CmRpZmYgLS1naXQgYS9XZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcCBiL1dlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwCmluZGV4IGM4
NDQ5NDJiOTYwZDM5MzkxYmUwMGNjZDQ3YTM3MjY4YjZlN2Y1M2YuLmU4M2RiN2I0NmZmNmJkYTdm
MmY1OTJjODI3M2ZlYzI3NTA1YmYwZTcgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwCkBAIC0yOTksNiArMjk5
LDEyIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tHZW9sb2NhdGlvbkVycm9y
KGludCBjb2RlLCBKU1N0cmluZ1JlZiBtZXNzYWdlCiAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODI2NC4KIH0KIAordm9pZCBMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6c2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KEpTU3RyaW5nUmVmIHJlc3VsdCkKK3sK
KyAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBzcGVlY2ggaW5wdXQgbGF5b3V0IHRlc3RzLgor
ICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk0ODUu
Cit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEljb25EYXRhYmFzZUVuYWJsZWQo
Ym9vbCBpY29uRGF0YWJhc2VFbmFibGVkKQogewogICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63469</attachid>
            <date>2010-08-04 11:11:08 -0700</date>
            <delta_ts>2010-08-05 07:41:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43477-20100804191106.patch</filename>
            <type>text/plain</type>
            <size>31101</size>
            <attacher name="Satish Sampath">satish</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxNGJmOTI2MmVlNjUzOGI5YTE0ZTZkMzRiMjBlZjBkZGMzOGQyYTUxLi5jNWY0OTlm
OGUyMGMzNTY5NDhmYWE0ZWI2NzAzYmI3YWQzNTliOTczIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTAtMDgtMDQgIFNhdGlzaCBTYW1wYXRoICA8c2F0aXNoQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc3BlZWNoIGlu
cHV0IGNvbnRyb2xsZXIgbW9jayBpbiBXZWJLaXQgYW5kIGEgbGF5b3V0IHRlc3QuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MzQ3NworCisgICAgICAg
ICogZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1zcGVlY2hidXR0b24tZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L3NwZWVjaC9pbnB1dC10ZXh0LXNwZWVjaGJ1dHRvbi5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L3NwZWVjaC9zY3JpcHQtdGVzdHMvaW5wdXQtdGV4dC1zcGVl
Y2hidXR0b24uanM6IEFkZGVkLgorICAgICAgICAob25DaGFuZ2UpOgorICAgICAgICAocnVuKToK
KwogMjAxMC0wOC0wNCAgQWJoaXNoZWsgQXJ5YSAgPGluZmVybm9AY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQuIFFUIGV4cGVjdGF0aW9uIGZpeC4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3Qvc3BlZWNoL2lucHV0LXRleHQtc3BlZWNoYnV0dG9uLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL2lucHV0LXRleHQtc3BlZWNoYnV0dG9uLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi43MTU0NTJjZmY5M2QwZGE0MTU1N2Y4NDgyYzA3MTFjZWY5MGZmNDcy
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1z
cGVlY2hidXR0b24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOSBAQAorVGVzdHMgZm9yIHNwZWVj
aCBidXR0b24gY2xpY2sgd2l0aCA8aW5wdXQgdHlwZT0idGV4dCIgc3BlZWNoPi4NCisNCitPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuDQorDQorDQorUEFTUyBpbnB1dC52YWx1ZSBpcyAiUGljdHVy
ZXMgb2YgdGhlIG1vb24iDQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQ0KKw0KK1RF
U1QgQ09NUExFVEUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L3NwZWVjaC9pbnB1dC10ZXh0LXNwZWVjaGJ1dHRvbi5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1zcGVlY2hidXR0b24uaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li41MWVmMDBiOTNkNzljMTYzNjY2ZTA5ZmIxZDlhNTdhMDZhZmEzZDc2Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvaW5wdXQtdGV4dC1zcGVlY2hidXR0b24uaHRt
bApAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBI
VE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlk
PSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNy
Yz0ic2NyaXB0LXRlc3RzL2lucHV0LXRleHQtc3BlZWNoYnV0dG9uLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL3Njcmlw
dC10ZXN0cy9pbnB1dC10ZXh0LXNwZWVjaGJ1dHRvbi5qcyBiL0xheW91dFRlc3RzL2Zhc3Qvc3Bl
ZWNoL3NjcmlwdC10ZXN0cy9pbnB1dC10ZXh0LXNwZWVjaGJ1dHRvbi5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5j
NjUxMmJjOTQ4YmRjOGY2NzJhYmI2MDIyNTY0YWFkZGMxZWFlYWQzCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvc2NyaXB0LXRlc3RzL2lucHV0LXRleHQtc3BlZWNo
YnV0dG9uLmpzCkBAIC0wLDAgKzEsMzAgQEAKK2Rlc2NyaXB0aW9uKCdUZXN0cyBmb3Igc3BlZWNo
IGJ1dHRvbiBjbGljayB3aXRoICZsdDtpbnB1dCB0eXBlPSJ0ZXh0IiBzcGVlY2g+LicpOworCitm
dW5jdGlvbiBvbkNoYW5nZSgpIHsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2RvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJzcGVlY2hJbnB1dCIpLnZhbHVlJywgJ1BpY3R1cmVzIG9mIHRoZSBt
b29uJyk7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK2Z1bmN0aW9uIHJ1bigpIHsKKyAgdmFy
IGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTsKKyAgaW5wdXQuaWQgPSAn
c3BlZWNoSW5wdXQnOworICBpbnB1dC5zcGVlY2ggPSAnc3BlZWNoJzsKKyAgaW5wdXQuYWRkRXZl
bnRMaXN0ZW5lcignY2hhbmdlJywgb25DaGFuZ2UsIGZhbHNlKTsKKyAgZG9jdW1lbnQuYm9keS5h
cHBlbmRDaGlsZChpbnB1dCk7CisKKyAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
KyAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdCgnUGlj
dHVyZXMgb2YgdGhlIG1vb24nKTsKKworICAvLyBDbGlja2luZyB0aGUgc3BlZWNoIGJ1dHRvbiBz
aG91bGQgZmlsbCBpbiBtb2NrIHNwZWVjaC1yZWNvZ25pemVkIHRleHQuCisgIGlmICh3aW5kb3cu
ZXZlbnRTZW5kZXIpIHsKKyAgICAgIHZhciB4ID0gaW5wdXQub2Zmc2V0TGVmdCArIGlucHV0Lm9m
ZnNldFdpZHRoIC0gNDsKKyAgICAgIHZhciB5ID0gaW5wdXQub2Zmc2V0VG9wICsgaW5wdXQub2Zm
c2V0SGVpZ2h0IC8gMjsKKyAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAg
ICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7
CisgIH0KK30KKword2luZG93Lm9ubG9hZCA9IHJ1bjsKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0g
dHJ1ZTsKK3dpbmRvdy5zdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXgg
ZDE5ZjkwMjU1YjA0NGMwNDkwZmUxZjUwYTAwYjJlYmJjZjVlNTg4YS4uMDE1ZDk1Y2RjOGFkMDZm
OTM2MGFjNWJkODhlODFjM2QyZmU0OTg3ZiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZworKysgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAK
KzIwMTAtMDgtMDQgIFNhdGlzaCBTYW1wYXRoICA8c2F0aXNoQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc3BlZWNoIGlu
cHV0IGNvbnRyb2xsZXIgbW9jayBpbiBXZWJLaXQgYW5kIGEgbGF5b3V0IHRlc3QuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MzQ3NworCisgICAgICAg
ICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBwdWJsaWMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVy
TW9jay5oOiBBZGRlZCBXZWJLaXQgc3BlZWNoIGlucHV0IGNvbnRyb2xsZXIgbW9jayBpbnRlcmZh
Y2UuCisgICAgICAgICogc3JjL1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsLmNwcDog
QWRkZWQgaW1wbGVtZW50YXRpb24gb2YgdGhlIGFib3ZlIG1vY2suCisgICAgICAgIChXZWJLaXQ6
OldlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsOjpXZWJTcGVlY2hJbnB1dENvbnRyb2xs
ZXJNb2NrSW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaElucHV0Q29udHJvbGxlck1v
Y2tJbXBsOjpzZXRNb2NrUmVjb2duaXRpb25SZXN1bHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJT
cGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6ZGlkQ29tcGxldGVSZWNvcmRpbmcpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6ZGlkQ29tcGxl
dGVSZWNvZ25pdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaElucHV0Q29udHJvbGxl
ck1vY2tJbXBsOjpzZXRSZWNvZ25pdGlvblJlc3VsdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNw
ZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsOjpzdGFydFJlY29nbml0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OmNhbmNlbFJlY29nbml0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6
OnN0b3BSZWNvcmRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hJbnB1dENvbnRyb2xs
ZXJNb2NrOjpjcmVhdGUpOgorCiAyMDEwLTA4LTAyICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAZ29v
Z2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCmRpZmYgLS1n
aXQgYS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQu
Z3lwCmluZGV4IDlkYTg1Y2Q3Y2EzOGM1MDcyNzgxMzE1ODA3ZWMzOTVjZGI1YmQyNDQuLmQ2YWYz
ZmZkZDk2MDE1ZTE0N2NlMzIzOWE3NWRkZTdkN2IyOTYzYTQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9j
aHJvbWl1bS9XZWJLaXQuZ3lwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC0y
NDAsNiArMjQwLDcgQEAKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlNvY2tldFN0cmVhbUhh
bmRsZS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlNvY2tldFN0cmVhbUhhbmRsZUNs
aWVudC5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlNwZWVjaElucHV0Q29udHJvbGxl
ci5oJywKKyAgICAgICAgICAgICAgICAncHVibGljL1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1v
Y2suaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJTcGVlY2hJbnB1dExpc3RlbmVyLmgn
LAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViU3RvcmFnZUFyZWEuaCcsCiAgICAgICAgICAg
ICAgICAgJ3B1YmxpYy9XZWJTdG9yYWdlRXZlbnREaXNwYXRjaGVyLmgnLApAQCAtNDYzLDYgKzQ2
NCw4IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJTZXR0aW5nc0ltcGwuaCcsCiAgICAgICAg
ICAgICAgICAgJ3NyYy9XZWJTaGFyZWRXb3JrZXJJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAg
J3NyYy9XZWJTaGFyZWRXb3JrZXJJbXBsLmgnLAorICAgICAgICAgICAgICAgICdzcmMvV2ViU3Bl
ZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGwuY3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL1dl
YlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMv
V2ViU3RvcmFnZUFyZWFJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJTdG9yYWdl
QXJlYUltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJTdG9yYWdlRXZlbnREaXNwYXRj
aGVySW1wbC5jcHAnLApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTcGVl
Y2hJbnB1dENvbnRyb2xsZXJNb2NrLmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNwZWVj
aElucHV0Q29udHJvbGxlck1vY2suaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YzA1OGU5NTNiZDRjZTFhYjhlOGE4
MGMzMzdhYTYwYzkwOTUyYTM3Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrLmgKQEAgLTAsMCArMSw1MSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBk
aXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja19oCisjZGVmaW5lIFdlYlNwZWVjaElucHV0
Q29udHJvbGxlck1vY2tfaAorCisjaW5jbHVkZSAiV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyLmgi
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJTdHJpbmc7CitjbGFzcyBXZWJTcGVl
Y2hJbnB1dExpc3RlbmVyOworCitjbGFzcyBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrIDog
cHVibGljIFdlYlNwZWVjaElucHV0Q29udHJvbGxlciB7CitwdWJsaWM6CisgICAgc3RhdGljIFdl
YlNwZWVjaElucHV0Q29udHJvbGxlck1vY2sqIGNyZWF0ZShXZWJTcGVlY2hJbnB1dExpc3RlbmVy
KiBsaXN0ZW5lcik7CisgICAgdmlydHVhbCB+V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9jaygp
IHsgfQorCisgICAgdmlydHVhbCB2b2lkIHNldE1vY2tSZWNvZ25pdGlvblJlc3VsdChjb25zdCBX
ZWJTdHJpbmcmIHJlc3VsdCkgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTcGVlY2hJbnB1dENvbnRy
b2xsZXJNb2NrSW1wbC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNwZWVjaElucHV0Q29u
dHJvbGxlck1vY2tJbXBsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNzgyMDIzYzc1NmQ0YWIwMDY4ZTM4ODgw
OWQwNzMxNWM3YzdjYmRmCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbC5jcHAKQEAgLTAsMCArMSw4NiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBk
aXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1w
bC5oIgorCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJTcGVlY2hJbnB1
dENsaWVudE1vY2suaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYlNwZWVjaElucHV0Q29u
dHJvbGxlck1vY2sqIFdlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2s6OmNyZWF0ZShXZWJTcGVl
Y2hJbnB1dExpc3RlbmVyKiBsaXN0ZW5lcikKK3sKKyAgICByZXR1cm4gbmV3IFdlYlNwZWVjaElu
cHV0Q29udHJvbGxlck1vY2tJbXBsKGxpc3RlbmVyKTsKK30KKworV2ViU3BlZWNoSW5wdXRDb250
cm9sbGVyTW9ja0ltcGw6OldlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsKAorICAgIFdl
YlNwZWVjaElucHV0TGlzdGVuZXIqIGxpc3RlbmVyKQorICAgIDogbV93ZWJjb3JlTW9jayhuZXcg
V2ViQ29yZTo6U3BlZWNoSW5wdXRDbGllbnRNb2NrKCkpCisgICAgLCBtX2xpc3RlbmVyKGxpc3Rl
bmVyKQoreworfQorCit2b2lkIFdlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsOjpzZXRN
b2NrUmVjb2duaXRpb25SZXN1bHQoY29uc3QgV2ViU3RyaW5nJiByZXN1bHQpCit7CisgICAgbV93
ZWJjb3JlTW9jay0+c2V0UmVjb2duaXRpb25SZXN1bHQocmVzdWx0KTsKK30KKwordm9pZCBXZWJT
cGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6ZGlkQ29tcGxldGVSZWNvcmRpbmcoKQorewor
ICAgIG1fbGlzdGVuZXItPmRpZENvbXBsZXRlUmVjb3JkaW5nKCk7Cit9CisKK3ZvaWQgV2ViU3Bl
ZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OmRpZENvbXBsZXRlUmVjb2duaXRpb24oKQorewor
ICAgIG1fbGlzdGVuZXItPmRpZENvbXBsZXRlUmVjb2duaXRpb24oKTsKK30KKwordm9pZCBXZWJT
cGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6c2V0UmVjb2duaXRpb25SZXN1bHQoY29uc3Qg
V2ViQ29yZTo6U3RyaW5nJiByZXN1bHQpCit7CisgICAgbV9saXN0ZW5lci0+c2V0UmVjb2duaXRp
b25SZXN1bHQocmVzdWx0KTsKK30KKworYm9vbCBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2Nr
SW1wbDo6c3RhcnRSZWNvZ25pdGlvbigpCit7CisgICAgcmV0dXJuIG1fd2ViY29yZU1vY2stPnN0
YXJ0UmVjb2duaXRpb24odGhpcyk7Cit9CisKK3ZvaWQgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVy
TW9ja0ltcGw6OmNhbmNlbFJlY29nbml0aW9uKCkKK3sKKyAgICBtX3dlYmNvcmVNb2NrLT5jYW5j
ZWxSZWNvZ25pdGlvbigpOworfQorCit2b2lkIFdlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJ
bXBsOjpzdG9wUmVjb3JkaW5nKCkKK3sKKyAgICBtX3dlYmNvcmVNb2NrLT5zdG9wUmVjb3JkaW5n
KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbC5oIGIvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVl
ZjUxMDk1YTFkMzk3NDI4N2NmZWIzMmZiMDNkMTllZTlkOTcxZjgKLS0tIC9kZXYvbnVsbAorKysg
Yi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsLmgK
QEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
ICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGxf
aAorI2RlZmluZSBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbF9oCisKKyNpbmNsdWRl
ICJTcGVlY2hJbnB1dExpc3RlbmVyLmgiCisjaW5jbHVkZSAiV2ViU3BlZWNoSW5wdXRDb250cm9s
bGVyTW9jay5oIgorI2luY2x1ZGUgIldlYlNwZWVjaElucHV0TGlzdGVuZXIuaCIKKyNpbmNsdWRl
ICJXZWJTdHJpbmcuaCIKKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKK2NsYXNzIFNwZWVjaElucHV0Q2xpZW50TW9jazsKK30KKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK2NsYXNzIFdlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsIDogcHVibGljIFdl
YkNvcmU6OlNwZWVjaElucHV0TGlzdGVuZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICwgcHVibGljIFdlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2sgeworcHVibGlj
OgorICAgIFdlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsKFdlYlNwZWVjaElucHV0TGlz
dGVuZXIqKTsKKworICAgIC8vIFdlYkNvcmU6OlNwZWVjaElucHV0TGlzdGVuZXIgbWV0aG9kcy4K
KyAgICB2b2lkIGRpZENvbXBsZXRlUmVjb3JkaW5nKCk7CisgICAgdm9pZCBkaWRDb21wbGV0ZVJl
Y29nbml0aW9uKCk7CisgICAgdm9pZCBzZXRSZWNvZ25pdGlvblJlc3VsdChjb25zdCBXZWJDb3Jl
OjpTdHJpbmcmIHJlc3VsdCk7CisKKyAgICAvLyBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIgbWV0
aG9kcy4KKyAgICBib29sIHN0YXJ0UmVjb2duaXRpb24oKTsKKyAgICB2b2lkIGNhbmNlbFJlY29n
bml0aW9uKCk7CisgICAgdm9pZCBzdG9wUmVjb3JkaW5nKCk7CisKKyAgICAvLyBXZWJTcGVlY2hJ
bnB1dENvbnRyb2xsZXJNb2NrIG1ldGhvZHMuCisgICAgdm9pZCBzZXRNb2NrUmVjb2duaXRpb25S
ZXN1bHQoY29uc3QgV2ViU3RyaW5nJiByZXN1bHQpOworCitwcml2YXRlOgorICAgIE93blB0cjxX
ZWJDb3JlOjpTcGVlY2hJbnB1dENsaWVudE1vY2s+IG1fd2ViY29yZU1vY2s7CisgICAgV2ViU3Bl
ZWNoSW5wdXRMaXN0ZW5lciogbV9saXN0ZW5lcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorCisjZW5kaWYgLy8gV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGxfaAorCmRpZmYg
LS1naXQgYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cgYi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKaW5k
ZXggYzlkNzE0ZTBjNWY4NTM4YWIxNDM2MGU1Y2RiNjM2NTBlMTQyODNkNi4uNGRlZWQ5MGZiNzM0
MjBhMmUxMmU5NTQ5N2I3NTIxY2NkNDllZGZiMyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvQ2hh
bmdlTG9nCisrKyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEw
LTA4LTA0ICBTYXRpc2ggU2FtcGF0aCAgPHNhdGlzaEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHNwZWVjaCBpbnB1dCBj
b250cm9sbGVyIG1vY2sgaW4gV2ViS2l0IGFuZCBhIGxheW91dCB0ZXN0LgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM0NzcKKworICAgICAgICBBZGRl
ZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja1NwZWVjaElucHV0UmVzdWx0Q2FsbGJhY2sg
bWV0aG9kLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAoc2V0TW9ja1NwZWVjaElucHV0UmVzdWx0Q2FsbGJhY2spOiBXcmFwcGVy
IGludm9raW5nIHRoZSBtZW1iZXIgZnVuY3Rpb24uCisgICAgICAgIChMYXlvdXRUZXN0Q29udHJv
bGxlcjo6c3RhdGljRnVuY3Rpb25zKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRU
ZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91
dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpMYXlv
dXRUZXN0Q29udHJvbGxlcik6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9j
a1NwZWVjaElucHV0UmVzdWx0KTogU2V0cyB0aGUgbW9jayByZXN1bHQuCisgICAgICAgIChMYXlv
dXRUZXN0Q29udHJvbGxlcjo6c3BlZWNoSW5wdXRDb250cm9sbGVyKTogQ3JlYXRlcyB0aGUgbW9j
ayBjb250cm9sbGVyLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRl
c3RDb250cm9sbGVyLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmll
d0hvc3QuY3BwOgorICAgICAgICAoV2ViVmlld0hvc3Q6OnNwZWVjaElucHV0Q29udHJvbGxlcik6
IENyZWF0ZXMgdGhlIG1vY2sgY29udHJvbGxlci4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9XZWJWaWV3SG9zdC5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2d0ay9MYXlv
dXRUZXN0Q29udHJvbGxlckd0ay5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6
c2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KTogZHVtbXkgbWV0aG9kLgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKExheW91
dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQpOiBkdW1teSBtZXRob2Qu
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHA6
CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja1NwZWVjaElucHV0UmVzdWx0
KTogZHVtbXkgbWV0aG9kLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RD
b250cm9sbGVyUXQuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENv
bnRyb2xsZXJXaW4uY3BwOiBkdW1teSBtZXRob2QuCisgICAgICAgIChMYXlvdXRUZXN0Q29udHJv
bGxlcjo6c2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcDogZHVtbXkgbWV0aG9kLgorICAgICAgICAo
TGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdCk6CisKIDIwMTAt
MDgtMDQgIEFhcm9uIEJvb2RtYW4gIDxhYUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgRXJpYyBTZWlkZWwuCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9M
YXlvdXRUZXN0Q29udHJvbGxlci5jcHAKaW5kZXggMjdlNGM5MDRmY2M3YjMyZTgwMTkzNWFlNzM3
ZGQ2MWI4YTI4YWEwNi4uNTJiNTM5Y2IwMWJjNTY2YjM4YjY5NTg4M2Q3NTVlYWQzNzUzNjQ0YyAx
MDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xs
ZXIuY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9s
bGVyLmNwcApAQCAtMTA1MCw2ICsxMDUwLDIwIEBAIHN0YXRpYyBKU1ZhbHVlUmVmIHNldE1vY2tH
ZW9sb2NhdGlvbkVycm9yQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0CiAg
ICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogfQogCitzdGF0aWMgSlNW
YWx1ZVJlZiBzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29u
dGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVf
dCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVm
KiBleGNlcHRpb24pCit7CisgICAgaWYgKGFyZ3VtZW50Q291bnQgPCAxKQorICAgICAgICByZXR1
cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CisKKyAgICBKU1JldGFpblB0cjxKU1N0
cmluZ1JlZj4gcmVzdWx0KEFkb3B0LCBKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIGFyZ3Vt
ZW50c1swXSwgZXhjZXB0aW9uKSk7CisgICAgQVNTRVJUKCEqZXhjZXB0aW9uKTsKKworICAgIExh
eW91dFRlc3RDb250cm9sbGVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0VGVzdENv
bnRyb2xsZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOworICAgIGNvbnRyb2xs
ZXItPnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdChyZXN1bHQuZ2V0KCkpOworCisgICAgcmV0dXJu
IEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworfQorCiBzdGF0aWMgSlNWYWx1ZVJlZiBz
ZXROZXdXaW5kb3dzQ29weUJhY2tGb3J3YXJkTGlzdENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250
ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90
IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYq
IGV4Y2VwdGlvbikKIHsKICAgICAvLyBIYXMgbWFjIGltcGxlbWVudGF0aW9uCkBAIC0xODgyLDYg
KzE4OTYsNyBAQCBKU1N0YXRpY0Z1bmN0aW9uKiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhdGlj
RnVuY3Rpb25zKCkKICAgICAgICAgeyAic2V0TW9ja0RldmljZU9yaWVudGF0aW9uIiwgc2V0TW9j
a0RldmljZU9yaWVudGF0aW9uQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkg
fCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0TW9ja0dl
b2xvY2F0aW9uRXJyb3IiLCBzZXRNb2NrR2VvbG9jYXRpb25FcnJvckNhbGxiYWNrLCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0s
CiAgICAgICAgIHsgInNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uIiwgc2V0TW9ja0dlb2xvY2F0
aW9uUG9zaXRpb25DYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1By
b3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJzZXRNb2NrU3BlZWNoSW5w
dXRSZXN1bHQiLCBzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHRDYWxsYmFjaywga0pTUHJvcGVydHlB
dHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAg
ICAgICB7ICJzZXROZXdXaW5kb3dzQ29weUJhY2tGb3J3YXJkTGlzdCIsIHNldE5ld1dpbmRvd3ND
b3B5QmFja0ZvcndhcmRMaXN0Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkg
fCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0UE9TSVhM
b2NhbGUiLCBzZXRQT1NJWExvY2FsZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRP
bmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldFBl
cnNpc3RlbnRVc2VyU3R5bGVTaGVldExvY2F0aW9uIiwgc2V0UGVyc2lzdGVudFVzZXJTdHlsZVNo
ZWV0TG9jYXRpb25DYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1By
b3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaCBiL1dlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKaW5kZXggODExZDBjYmJkZjhjZGIxMjdhNGNm
NWE5MmJkODljZWZjMWM3ZmM5Mi4uZjc2ODcwYmE0YTYwNzI2NTBlMjEzM2QxY2NmNDM0ODc5ZTNl
ZmI3MSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENv
bnRyb2xsZXIuaAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29u
dHJvbGxlci5oCkBAIC05Myw2ICs5Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE1vY2tEZXZp
Y2VPcmllbnRhdGlvbihib29sIGNhblByb3ZpZGVBbHBoYSwgZG91YmxlIGFscGhhLCBib29sIGNh
blByb3ZpZGVCZXRhLCBkb3VibGUgYmV0YSwgYm9vbCBjYW5Qcm92aWRlR2FtbWEsIGRvdWJsZSBn
YW1tYSk7CiAgICAgdm9pZCBzZXRNb2NrR2VvbG9jYXRpb25FcnJvcihpbnQgY29kZSwgSlNTdHJp
bmdSZWYgbWVzc2FnZSk7CiAgICAgdm9pZCBzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihkb3Vi
bGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSk7CisgICAgdm9p
ZCBzZXRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoSlNTdHJpbmdSZWYgcmVzdWx0KTsKICAgICB2b2lk
IHNldFBlcnNpc3RlbnRVc2VyU3R5bGVTaGVldExvY2F0aW9uKEpTU3RyaW5nUmVmIHBhdGgpOwog
ICAgIHZvaWQgc2V0UGx1Z2luc0VuYWJsZWQoYm9vbCBmbGFnKTsKICAgICB2b2lkIHNldFBvcHVw
QmxvY2tpbmdFbmFibGVkKGJvb2wgZmxhZyk7CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAgYi9XZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKaW5kZXgg
ZGQwNzZhZWJiOTkyYjAwYThjOGQ0YThkZDQwNTQ5OWJlZGJkYjZlZi4uYWM3NjUxNjlkMDAzNWM3
NTVmZGJjOWY4NDJlOTFjN2UwYzIxZjM2NyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1dlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcApAQCAt
NDcsNiArNDcsNyBAQAogI2luY2x1ZGUgInB1YmxpYy9XZWJTZWN1cml0eVBvbGljeS5oIgogI2lu
Y2x1ZGUgInB1YmxpYy9XZWJTZXR0aW5ncy5oIgogI2luY2x1ZGUgInB1YmxpYy9XZWJTaXplLmgi
CisjaW5jbHVkZSAicHVibGljL1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2suaCIKICNpbmNs
dWRlICJwdWJsaWMvV2ViVVJMLmgiCiAjaW5jbHVkZSAicHVibGljL1dlYlZpZXcuaCIKICNpbmNs
dWRlICJ3ZWJraXQvc3VwcG9ydC93ZWJraXRfc3VwcG9ydC5oIgpAQCAtMTc0LDYgKzE3NSw3IEBA
IExheW91dFRlc3RDb250cm9sbGVyOjpMYXlvdXRUZXN0Q29udHJvbGxlcihUZXN0U2hlbGwqIHNo
ZWxsKQogICAgIGJpbmRNZXRob2QoInNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uIiwgJkxheW91
dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbik7CiAgICAgYmluZE1l
dGhvZCgic2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNl
dE1vY2tHZW9sb2NhdGlvbkVycm9yKTsKICAgICBiaW5kTWV0aG9kKCJhYm9ydE1vZGFsIiwgJkxh
eW91dFRlc3RDb250cm9sbGVyOjphYm9ydE1vZGFsKTsKKyAgICBiaW5kTWV0aG9kKCJzZXRNb2Nr
U3BlZWNoSW5wdXRSZXN1bHQiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tTcGVlY2hJ
bnB1dFJlc3VsdCk7CiAKICAgICAvLyBUaGUgZmFsbGJhY2sgbWV0aG9kIGlzIGNhbGxlZCB3aGVu
IGFuIHVua25vd24gbWV0aG9kIGlzIGludm9rZWQuCiAgICAgYmluZEZhbGxiYWNrTWV0aG9kKCZM
YXlvdXRUZXN0Q29udHJvbGxlcjo6ZmFsbGJhY2tNZXRob2QpOwpAQCAtMTM2OSwzICsxMzcxLDE5
IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFib3J0TW9kYWwoY29uc3QgQ3BwQXJndW1l
bnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhCiB7CiAgICAgcmVzdWx0LT5zZXROdWxsKCk7CiB9
CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdChj
b25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQorewor
ICAgIHJlc3VsdC0+c2V0TnVsbCgpOworICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpIDwgMSB8fCAh
YXJndW1lbnRzWzBdLmlzU3RyaW5nKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fc3BlZWNo
SW5wdXRDb250cm9sbGVyTW9jay0+c2V0TW9ja1JlY29nbml0aW9uUmVzdWx0KGNwcFZhcmlhbnRU
b1dlYlN0cmluZyhhcmd1bWVudHNbMF0pKTsKK30KKworV2ViS2l0OjpXZWJTcGVlY2hJbnB1dENv
bnRyb2xsZXIqIExheW91dFRlc3RDb250cm9sbGVyOjpzcGVlY2hJbnB1dENvbnRyb2xsZXIoV2Vi
S2l0OjpXZWJTcGVlY2hJbnB1dExpc3RlbmVyKiBsaXN0ZW5lcikKK3sKKyAgICBpZiAoIW1fc3Bl
ZWNoSW5wdXRDb250cm9sbGVyTW9jay5nZXQoKSkKKyAgICAgICAgbV9zcGVlY2hJbnB1dENvbnRy
b2xsZXJNb2NrLnNldChXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrOjpjcmVhdGUobGlzdGVu
ZXIpKTsKKyAgICByZXR1cm4gbV9zcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrLmdldCgpOworfQpk
aWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVz
dENvbnRyb2xsZXIuaCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91
dFRlc3RDb250cm9sbGVyLmgKaW5kZXggMDk2ZDFkZjAxMGU0ZTRjN2RhMDU1ZmJhMzBkN2MxMjky
MjU5NTg0Yy4uZmI5MTU0NGY0NjRkYTFlMTg1MWU4ZDgwMWIxMjBkMWFkMjUwYjU5ZCAxMDA2NDQK
LS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRy
b2xsZXIuaAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRU
ZXN0Q29udHJvbGxlci5oCkBAIC00Niw2ICs0NiwxMyBAQAogI2luY2x1ZGUgInB1YmxpYy9XZWJT
dHJpbmcuaCIKICNpbmNsdWRlICJwdWJsaWMvV2ViVVJMLmgiCiAjaW5jbHVkZSA8d3RmL0RlcXVl
Lmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNz
IFdlYlNwZWVjaElucHV0Q29udHJvbGxlcjsKK2NsYXNzIFdlYlNwZWVjaElucHV0Q29udHJvbGxl
ck1vY2s7CitjbGFzcyBXZWJTcGVlY2hJbnB1dExpc3RlbmVyOworfQogCiBjbGFzcyBUZXN0U2hl
bGw7CiAKQEAgLTI5OCwxMCArMzA1LDE0IEBAIHB1YmxpYzoKICAgICAvLyBFbXB0eSBzdHViIG1l
dGhvZCB0byBrZWVwIHBhcml0eSB3aXRoIG9iamVjdCBtb2RlbCBleHBvc2VkIGJ5IGdsb2JhbCBM
YXlvdXRUZXN0Q29udHJvbGxlci4KICAgICB2b2lkIGFib3J0TW9kYWwoY29uc3QgQ3BwQXJndW1l
bnRMaXN0JiwgQ3BwVmFyaWFudCopOwogCisgICAgLy8gU3BlZWNoIGlucHV0IHJlbGF0ZWQgZnVu
Y3Rpb25zLgorICAgIHZvaWQgc2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KGNvbnN0IENwcEFyZ3Vt
ZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKwogcHVibGljOgogICAgIC8vIFRoZSBmb2xsb3dpbmcg
bWV0aG9kcyBhcmUgbm90IGV4cG9zZWQgdG8gSmF2YVNjcmlwdC4KICAgICB2b2lkIHNldFdvcmtR
dWV1ZUZyb3plbihib29sIGZyb3plbikgeyBtX3dvcmtRdWV1ZS5zZXRGcm96ZW4oZnJvemVuKTsg
fQogCisgICAgV2ViS2l0OjpXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIqIHNwZWVjaElucHV0Q29u
dHJvbGxlcihXZWJLaXQ6OldlYlNwZWVjaElucHV0TGlzdGVuZXIqKTsKICAgICBib29sIHNob3Vs
ZER1bXBBc1RleHQoKSB7IHJldHVybiBtX2R1bXBBc1RleHQ7IH0KICAgICBib29sIHNob3VsZER1
bXBFZGl0aW5nQ2FsbGJhY2tzKCkgeyByZXR1cm4gbV9kdW1wRWRpdGluZ0NhbGxiYWNrczsgfQog
ICAgIGJvb2wgc2hvdWxkRHVtcEZyYW1lTG9hZENhbGxiYWNrcygpIHsgcmV0dXJuIG1fZHVtcEZy
YW1lTG9hZENhbGxiYWNrczsgfQpAQCAtNDcyLDYgKzQ4Myw4IEBAIHByaXZhdGU6CiAgICAgQ3Bw
VmFyaWFudCBtX3dlYkhpc3RvcnlJdGVtQ291bnQ7CiAKICAgICBXZWJLaXQ6OldlYlVSTCBtX3Vz
ZXJTdHlsZVNoZWV0TG9jYXRpb247CisKKyAgICBPd25QdHI8V2ViS2l0OjpXZWJTcGVlY2hJbnB1
dENvbnRyb2xsZXJNb2NrPiBtX3NwZWVjaElucHV0Q29udHJvbGxlck1vY2s7CiB9OwogCiAjZW5k
aWYgLy8gTGF5b3V0VGVzdENvbnRyb2xsZXJfaApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5jcHAKaW5kZXggMWI1MjY5OTFkMjlkNzZiYTA4NTI1
ZmVlY2M2MGE5YzUzNjlkNzhmMS4uM2VlNzAzZTI4OTU0MzJiMDU3N2JlMDBmZjJlODJkOTc1MGNh
MDc2NiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFNoZWxsLmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0
U2hlbGwuY3BwCkBAIC00Niw2ICs0Niw3IEBACiAjaW5jbHVkZSAicHVibGljL1dlYlNjcmlwdENv
bnRyb2xsZXIuaCIKICNpbmNsdWRlICJwdWJsaWMvV2ViU2V0dGluZ3MuaCIKICNpbmNsdWRlICJw
dWJsaWMvV2ViU2l6ZS5oIgorI2luY2x1ZGUgInB1YmxpYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xs
ZXJNb2NrLmgiCiAjaW5jbHVkZSAicHVibGljL1dlYlN0cmluZy5oIgogI2luY2x1ZGUgInB1Ymxp
Yy9XZWJVUkxSZXF1ZXN0LmgiCiAjaW5jbHVkZSAicHVibGljL1dlYlVSTFJlc3BvbnNlLmgiCmRp
ZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9z
dC5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5j
cHAKaW5kZXggZWQzN2EzMWUyOTlkNzcyOTYxOGZmNDdlYzU3NGQwYTg2YzEwZDcxMi4uMmJhYjZl
M2FjZDc0YjZhYzg5ZDJlZWFhOTlhZTkzYzA5YzNiZGY4NCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCisrKyBiL1dlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcApAQCAtNTAxLDYgKzUw
MSwxMSBAQCBXZWJLaXQ6OldlYkdlb2xvY2F0aW9uU2VydmljZSogV2ViVmlld0hvc3Q6Omdlb2xv
Y2F0aW9uU2VydmljZSgpCiAgICAgcmV0dXJuIG1fZ2VvbG9jYXRpb25TZXJ2aWNlTW9jay5nZXQo
KTsKIH0KIAorV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyKiBXZWJWaWV3SG9zdDo6c3BlZWNoSW5w
dXRDb250cm9sbGVyKFdlYktpdDo6V2ViU3BlZWNoSW5wdXRMaXN0ZW5lciogbGlzdGVuZXIpCit7
CisgICAgcmV0dXJuIG1fc2hlbGwtPmxheW91dFRlc3RDb250cm9sbGVyKCktPnNwZWVjaElucHV0
Q29udHJvbGxlcihsaXN0ZW5lcik7Cit9CisKIC8vIFdlYldpZGdldENsaWVudCAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiB2b2lk
IFdlYlZpZXdIb3N0OjpkaWRJbnZhbGlkYXRlUmVjdChjb25zdCBXZWJSZWN0JiByZWN0KQpkaWZm
IC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3Qu
aCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgKaW5k
ZXggMWU1MWJlNzE0ZGIwMDkyNTQ3NzQ3NzQ2NDJkYzBhZmU1MTFjMmU0ZS4uYzE3NWU2MWM2NTU0
OTY3NjBjNzIwNjM0MWQxYjUxNGE0OWM0NmFiNSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaAorKysgYi9XZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oCkBAIC00Niw2ICs0Niw4IEBAIGNsYXNz
IFRlc3RTaGVsbDsKIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViRnJhbWU7CiBjbGFzcyBX
ZWJHZW9sb2NhdGlvblNlcnZpY2VNb2NrOworY2xhc3MgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVy
OworY2xhc3MgV2ViU3BlZWNoSW5wdXRMaXN0ZW5lcjsKIGNsYXNzIFdlYlVSTDsKIHN0cnVjdCBX
ZWJSZWN0Owogc3RydWN0IFdlYlVSTEVycm9yOwpAQCAtMTI2LDYgKzEyOCw3IEBAIGNsYXNzIFdl
YlZpZXdIb3N0IDogcHVibGljIFdlYktpdDo6V2ViVmlld0NsaWVudCwgcHVibGljIFdlYktpdDo6
V2ViRnJhbWVDbGllbnQsCiAgICAgdmlydHVhbCB2b2lkIGZvY3VzQWNjZXNzaWJpbGl0eU9iamVj
dChjb25zdCBXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlPYmplY3QmKTsKICAgICB2aXJ0dWFsIFdl
YktpdDo6V2ViTm90aWZpY2F0aW9uUHJlc2VudGVyKiBub3RpZmljYXRpb25QcmVzZW50ZXIoKTsK
ICAgICB2aXJ0dWFsIFdlYktpdDo6V2ViR2VvbG9jYXRpb25TZXJ2aWNlKiBnZW9sb2NhdGlvblNl
cnZpY2UoKTsKKyAgICB2aXJ0dWFsIFdlYktpdDo6V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyKiBz
cGVlY2hJbnB1dENvbnRyb2xsZXIoV2ViS2l0OjpXZWJTcGVlY2hJbnB1dExpc3RlbmVyKik7CiAK
ICAgICAvLyBXZWJLaXQ6OldlYldpZGdldENsaWVudAogICAgIHZpcnR1YWwgdm9pZCBkaWRJbnZh
bGlkYXRlUmVjdChjb25zdCBXZWJLaXQ6OldlYlJlY3QmKTsKZGlmZiAtLWdpdCBhL1dlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAgYi9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCmlu
ZGV4IDIyN2UxY2MyMTFmNDRiZTVhZTc4ZjhlYjU1ZjNkZWZiZDI3YjdhMDkuLmIwYzFjYmExZWQ2
YmZlYmRlYjYyZmY4Njk3NTUzNGViZjNiY2YyZmQgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAKKysrIGIvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcApAQCAt
NDY4LDYgKzQ2OCwxMiBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRHZW9sb2NhdGlv
blBlcm1pc3Npb24oYm9vbCBhbGxvdykKICAgICBzZXRHZW9sb2NhdGlvblBlcm1pc3Npb25Db21t
b24oYWxsb3cpOwogfQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrU3BlZWNo
SW5wdXRSZXN1bHQoSlNTdHJpbmdSZWYgcmVzdWx0KQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1l
bnQgZm9yIHNwZWVjaCBpbnB1dCBsYXlvdXQgdGVzdHMuCisgICAgLy8gU2VlIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTQ4NS4KK30KKwogdm9pZCBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6c2V0SWNvbkRhdGFiYXNlRW5hYmxlZChib29sIGZsYWcpCiB7CiAgICAgLy8g
RklYTUU6IGltcGxlbWVudApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCmluZGV4IDY2YWRhOTE2MDE1MTllNmQz
MDdmMjZhMjlmNjdkZGY1YmZkYjllYTYuLmMwZWI3MjJmMTkzNzlkOWE4ZmY0Yzg5YTNiNjljYWJh
ZjVlODY0ZjUgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlv
dXRUZXN0Q29udHJvbGxlck1hYy5tbQorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KQEAgLTM2Miw2ICszNjIsMTIgQEAgdm9pZCBM
YXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKGJvb2wgYWxsb3cp
CiAgICAgW1tbbWFpbkZyYW1lIHdlYlZpZXddIFVJRGVsZWdhdGVdIGRpZFNldE1vY2tHZW9sb2Nh
dGlvblBlcm1pc3Npb25dOwogfQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2Nr
U3BlZWNoSW5wdXRSZXN1bHQoSlNTdHJpbmdSZWYgcmVzdWx0KQoreworICAgIC8vIEZJWE1FOiBJ
bXBsZW1lbnQgZm9yIHNwZWVjaCBpbnB1dCBsYXlvdXQgdGVzdHMuCisgICAgLy8gU2VlIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTQ4NS4KK30KKwogdm9pZCBMYXlv
dXRUZXN0Q29udHJvbGxlcjo6c2V0SWNvbkRhdGFiYXNlRW5hYmxlZChib29sIGljb25EYXRhYmFz
ZUVuYWJsZWQpCiB7CiAgICAgLy8gRklYTUU6IFdvcmthcm91bmQgPHJkYXI6Ly9wcm9ibGVtLzY0
ODAxMDg+CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRU
ZXN0Q29udHJvbGxlclF0LmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91
dFRlc3RDb250cm9sbGVyUXQuY3BwCmluZGV4IDE5YzQxNDI4MjdkNjczMmMzODlmZTI2Mjk3NTdk
NmI2ZDM2ODE3OTQuLmU2ODJmZDAxZGUyZTI0MzhmYzc1OTNkZjE3ZGU3YTdlYmQ0MDcwYmYgMTAw
NjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9s
bGVyUXQuY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RD
b250cm9sbGVyUXQuY3BwCkBAIC03MTUsNiArNzE1LDEyIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRy
b2xsZXI6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKGRvdWJsZSBsYXRpdHVkZSwgZG91Ymxl
IGxvCiAgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0
aW9uKGxhdGl0dWRlLCBsb25naXR1ZGUsIGFjY3VyYWN5KTsKIH0KIAordm9pZCBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6c2V0TW9ja1NwZWVjaElucHV0UmVzdWx0KGNvbnN0IFFTdHJpbmcmIHJlc3Vs
dCkKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBzcGVlY2ggaW5wdXQgbGF5b3V0IHRl
c3RzLgorICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
Mzk0ODUuCit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmV2YWx1YXRlU2NyaXB0SW5J
c29sYXRlZFdvcmxkKGludCB3b3JsZElELCBjb25zdCBRU3RyaW5nJiBzY3JpcHQpCiB7CiAgICAg
RHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmV2YWx1YXRlU2NyaXB0SW5Jc29sYXRlZFdvcmxkKG1f
ZHJ0LT53ZWJQYWdlKCktPm1haW5GcmFtZSgpLCB3b3JsZElELCBzY3JpcHQpOwpkaWZmIC0tZ2l0
IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5o
IGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5o
CmluZGV4IDI0YzBkNGI0YzNlN2FhMzc0ODU2ZTVjZWEzYTE4NWZlNTAyZGFmNmIuLmY5OTg2YjFi
MjAzMGJiM2MzN2Y0YWRmY2Q3YTg4MjRkOWExZjE1YWEgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaAorKysgYi9XZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmgKQEAgLTIwOCw2
ICsyMDgsOCBAQCBwdWJsaWMgc2xvdHM6CiAgICAgYm9vbCBpc0dlb2xvY2F0aW9uUGVybWlzc2lv
blNldCgpIGNvbnN0IHsgcmV0dXJuIG1faXNHZW9sb2NhdGlvblBlcm1pc3Npb25TZXQ7IH0KICAg
ICBib29sIGdlb2xvY2F0aW9uUGVybWlzc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fZ2VvbG9jYXRp
b25QZXJtaXNzaW9uOyB9CiAKKyAgICB2b2lkIHNldE1vY2tTcGVlY2hJbnB1dFJlc3VsdChjb25z
dCBRU3RyaW5nJiByZXN1bHQpOworCiAgICAgLy8gRW1wdHkgc3R1YiBtZXRob2QgdG8ga2VlcCBw
YXJpdHkgd2l0aCBvYmplY3QgbW9kZWwgZXhwb3NlZCBieSBnbG9iYWwgTGF5b3V0VGVzdENvbnRy
b2xsZXIuCiAgICAgdm9pZCBhYm9ydE1vZGFsKCkge30KIApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcCBiL1dlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAKaW5k
ZXggYWRlMDlhN2M3NDllZGZiMzVhNzI4M2IwNzdjZGZiNzcwZmM5YjNhMS4uMzFiYzZjZWQ5YTZj
OTI5NDg4ODlmOGNmMGY5YzFmNjAxMmM2NGE4YyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAorKysgYi9XZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCkBAIC0z
OTksNiArMzk5LDEyIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEdlb2xvY2F0aW9u
UGVybWlzc2lvbihib29sIGFsbG93KQogICAgIHNldEdlb2xvY2F0aW9uUGVybWlzc2lvbkNvbW1v
bihhbGxvdyk7CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tTcGVlY2hJ
bnB1dFJlc3VsdChKU1N0cmluZ1JlZiByZXN1bHQpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVu
dCBmb3Igc3BlZWNoIGlucHV0IGxheW91dCB0ZXN0cy4KKyAgICAvLyBTZWUgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NDg1LgorfQorCiB2b2lkIExheW91dFRlc3RD
b250cm9sbGVyOjpzZXRJY29uRGF0YWJhc2VFbmFibGVkKGJvb2wgaWNvbkRhdGFiYXNlRW5hYmxl
ZCkKIHsKICAgICAvLyBTZWUgYWxzbyA8cmRhcjovL3Byb2JsZW0vNjQ4MDEwOD4KZGlmZiAtLWdp
dCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3gu
Y3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJX
eC5jcHAKaW5kZXggZjk2OWYzNjM1MzM3MDQ5N2ViOGEzMGEyNDRmMDgxN2EwOGUyNjRiNy4uN2M4
MGZmMjVjMzgzMzhmZmY1MGUzZTAzZDBlY2U5MjFjNWRiNjJkMiAxMDA2NDQKLS0tIGEvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAKKysrIGIv
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAK
QEAgLTMwNSw2ICszMDUsMTIgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0R2VvbG9j
YXRpb25QZXJtaXNzaW9uKGJvb2wgYWxsb3cpCiAgICAgc2V0R2VvbG9jYXRpb25QZXJtaXNzaW9u
Q29tbW9uKGFsbG93KTsKIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja1Nw
ZWVjaElucHV0UmVzdWx0KEpTU3RyaW5nUmVmIHJlc3VsdCkKK3sKKyAgICAvLyBGSVhNRTogSW1w
bGVtZW50IGZvciBzcGVlY2ggaW5wdXQgbGF5b3V0IHRlc3RzLgorICAgIC8vIFNlZSBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk0ODUuCit9CisKIHZvaWQgTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnNldEljb25EYXRhYmFzZUVuYWJsZWQoYm9vbCBpY29uRGF0YWJhc2VF
bmFibGVkKQogewogICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQK
</data>

          </attachment>
      

    </bug>

</bugzilla>