<?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>98003</bug_id>
          
          <creation_ts>2012-10-01 01:58:18 -0700</creation_ts>
          <short_desc>Add data passing to the GetStats interface of RTCPeerConnection</short_desc>
          <delta_ts>2012-10-09 04:48:31 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>56459</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Harald Alvestrand">hta</reporter>
          <assigned_to name="Harald Alvestrand">hta</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>donggwan.kim</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>tommyw</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>731491</commentid>
    <comment_count>0</comment_count>
    <who name="Harald Alvestrand">hta</who>
    <bug_when>2012-10-01 01:58:18 -0700</bug_when>
    <thetext>Bug 95193 added data types and control flow, but did not add a platform interface for adding statistics.
This patch will add functions for adding statistics to the data structure; these will be accessible only from the platform side, not from the Javascript side.

Please assign to hta@google.com</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732422</commentid>
    <comment_count>1</comment_count>
      <attachid>166641</attachid>
    <who name="Harald Alvestrand">hta</who>
    <bug_when>2012-10-02 01:39:43 -0700</bug_when>
    <thetext>Created attachment 166641
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732423</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-02 01:42:21 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732431</commentid>
    <comment_count>3</comment_count>
      <attachid>166641</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-10-02 01:57:15 -0700</bug_when>
    <thetext>Comment on attachment 166641
Patch

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

&gt; Source/Platform/chromium/public/WebRTCStatsRequest.h:41
&gt;  

Since the stats feature introduces a lot of classes it would be great if you described how to use it here, with an example or two.

&gt; Source/Platform/chromium/public/WebRTCStatsResponse.h:56
&gt; +    WEBKIT_EXPORT void addStatistic(int report, bool isLocal, int element, WebString name, WebString value);

int -&gt; size_t

&gt; Source/WebCore/Modules/mediastream/RTCStatsElement.h:41
&gt;  private:

I like an empty line before private:

&gt; Source/WebCore/platform/chromium/support/WebRTCStatsResponse.cpp:62
&gt; +int WebRTCStatsResponse::addElement(int report, bool isLocal, long timestamp)

missing empty line</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732436</commentid>
    <comment_count>4</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-10-02 02:01:32 -0700</bug_when>
    <thetext>For the reviewer:

This patch introduces a different pattern in WebCore/platform instead of the Descriptor pattern, with an abstract base class in WebCore/platform.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732573</commentid>
    <comment_count>5</comment_count>
      <attachid>166676</attachid>
    <who name="Harald Alvestrand">hta</who>
    <bug_when>2012-10-02 05:25:24 -0700</bug_when>
    <thetext>Created attachment 166676
Review comments addressed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732702</commentid>
    <comment_count>6</comment_count>
      <attachid>166676</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-02 09:16:21 -0700</bug_when>
    <thetext>Comment on attachment 166676
Review comments addressed

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

&gt; Source/Platform/chromium/public/WebRTCStatsRequest.h:59
&gt; +//   size_t element_index = response.addElement(report_index, true, now_in_ms());

This sample code should probably be in WebKit style, so report_index -&gt; reportIndex etc

&gt; Source/Platform/chromium/public/WebRTCStatsRequest.h:85
&gt; +    WEBKIT_EXPORT WebRTCStatsResponse response() const;

In the example, code, you called this function createResponse, which seems like a better name because it actually creates a new response object for you instead of just providing an accessor for an existing response.

&gt; Source/WebCore/Modules/mediastream/RTCStatsReport.cpp:42
&gt; +

Looks like you&apos;ve got an extra blank line here.

&gt; Source/WebCore/Modules/mediastream/RTCStatsReport.cpp:43
&gt; +int RTCStatsReport::addElement(bool isLocal, long timestamp)

Should this return a size_t?

&gt; Source/WebCore/Modules/mediastream/RTCStatsRequestImpl.cpp:57
&gt; +PassRefPtr&lt;RTCStatsResponseBase&gt; RTCStatsRequestImpl::createResponse()
&gt; +{
&gt; +    return RTCStatsResponse::create();
&gt; +}

If there&apos;s no connection between the request and the response, why do we need this create method?  I guess the reason is that we want to instantiate RTCStatsResponse rather than RTCStatsResponseBase.

&gt; Source/WebCore/Modules/mediastream/RTCStatsRequestImpl.cpp:63
&gt; +    m_successCallback-&gt;handleEvent(static_cast&lt;RTCStatsResponse*&gt;(response.get()));

I see, this static cast is here because of the factory pattern.

&gt; Source/WebCore/Modules/mediastream/RTCStatsResponse.cpp:42
&gt; +int RTCStatsResponse::addReport()

Same question re: size_t here.

&gt; Source/WebCore/Modules/mediastream/RTCStatsResponse.h:49
&gt; +    virtual int addReport();
&gt; +    virtual int addElement(size_t report, bool isLocal, long timestamp);
&gt; +    virtual void addStatistic(size_t report, bool isLocal, size_t element, String name, String value);

Should we add the OVERRIDE keyword to these functions?

&gt; Tools/DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.cpp:219
&gt; +        int repidx = response.addReport();

repidx -&gt; please use complete words in variable names.  Perhaps reportIndex ?

&gt; Tools/DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.cpp:220
&gt; +        int elementidx = response.addElement(repidx, true, 12345);

elementidx -&gt; elementIndex.  It seems likely these variables should be of type size_t because they&apos;re indexes into a Vector.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>733355</commentid>
    <comment_count>7</comment_count>
      <attachid>166676</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-02 22:01:55 -0700</bug_when>
    <thetext>Comment on attachment 166676
Review comments addressed

This seems fine modulo the nits above.  I probably would have continued to use the descriptor pattern that we&apos;re using elsewhere in mediastream because it avoids the virtual function calls and the static_casts, but this way works too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>733406</commentid>
    <comment_count>8</comment_count>
      <attachid>166820</attachid>
    <who name="Harald Alvestrand">hta</who>
    <bug_when>2012-10-03 00:34:48 -0700</bug_when>
    <thetext>Created attachment 166820
Adam Barth review comments addressed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>733408</commentid>
    <comment_count>9</comment_count>
      <attachid>166820</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-03 00:36:51 -0700</bug_when>
    <thetext>Comment on attachment 166820
Adam Barth review comments addressed

Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>733409</commentid>
    <comment_count>10</comment_count>
      <attachid>166820</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-03 00:38:02 -0700</bug_when>
    <thetext>Comment on attachment 166820
Adam Barth review comments addressed

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

&gt; Source/Platform/ChangeLog:6
&gt; +        Reviewed by NOBODY (OOPS!).

A reviewer needs to set the Review flag so that the bot knows whose name to fill in here.  Alternatively, you can fill it in yourself if you&apos;ve already gotten an r+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>733419</commentid>
    <comment_count>11</comment_count>
      <attachid>166820</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-03 01:01:15 -0700</bug_when>
    <thetext>Comment on attachment 166820
Adam Barth review comments addressed

Clearing flags on attachment: 166820

Committed r130260: &lt;http://trac.webkit.org/changeset/130260&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>737668</commentid>
    <comment_count>12</comment_count>
    <who name="Harald Alvestrand">hta</who>
    <bug_when>2012-10-09 04:48:31 -0700</bug_when>
    <thetext>The bot seems to not have closed this bug, but the patch is commmitted.
Marking as resolved/fixed.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166641</attachid>
            <date>2012-10-02 01:39:43 -0700</date>
            <delta_ts>2012-10-02 05:25:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98003-20121002103855.patch</filename>
            <type>text/plain</type>
            <size>31989</size>
            <attacher name="Harald Alvestrand">hta</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwMDA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAyMGYwMWEyNjc2MGQ2
NzY0YjY0OTBiNDJmMTg4NjU1NGY0NjU1NzE3Li5hNTg0YmVhZGFjNzFjNDQxNWVkZTNhZDM0YTcz
NzY2NTViZjUxNGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxMi0xMC0wMiAg
SGFyYWxkIEFsdmVzdHJhbmQgIDxodGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBBZGQgZGF0YSBw
YXNzaW5nIHRvIHRoZSBHZXRTdGF0cyBpbnRlcmZhY2Ugb2YgUlRDUGVlckNvbm5lY3Rpb24KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MDAzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBQbGF0Zm9ybS5n
eXBpOgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJSVENTdGF0c1JlcXVlc3QuaDoKKyAg
ICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJSVENTdGF0c1JlcXVlc3QpOgorICAgICAgICAq
IGNocm9taXVtL3B1YmxpYy9XZWJSVENTdGF0c1Jlc3BvbnNlLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViUlRDU3RhdHNSZXNwb25z
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJUQ1N0YXRzUmVzcG9uc2U6OldlYlJUQ1N0YXRzUmVz
cG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJSVENTdGF0c1Jlc3BvbnNlOjp+V2ViUlRDU3Rh
dHNSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJUQ1N0YXRzUmVzcG9uc2U6Om9wZXJh
dG9yPSk6CisKIDIwMTItMDktMjggIEhhcmFsZCBUdmVpdCBBbHZlc3RyYW5kICA8aGFyYWxkQGFs
dmVzdHJhbmQubm8+CiAKICAgICAgICAgSW1wbGVtZW50IHRoZSBHZXRTdGF0cyBpbnRlcmZhY2Ug
b24gUGVlckNvbm5lY3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0NDgxMzYyYzRlZjkxMTA1MzY3Njg1NmE2
MDU5NTlhYzljYTExYTk3Li4xYTE1YmQwODU5MTlkYzI3ZjQ0ZWI5ZjEzZDliMDkwZDE1MzZhMGU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjMgQEAKKzIwMTItMTAtMDIgIEhhcmFsZCBBbHZlc3Ry
YW5kICA8aHRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgQWRkIGRhdGEgcGFzc2luZyB0byB0aGUg
R2V0U3RhdHMgaW50ZXJmYWNlIG9mIFJUQ1BlZXJDb25uZWN0aW9uCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODAwMworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGFuIFJUQ1N0YXRzUmVzcG9uc2VC
YXNlIGludGVyZmFjZSB0byBwbGF0Zm9ybSwgYW5kIGxldCB0aGUKKyAgICAgICAgUlRDU3RhdHNS
ZXF1ZXN0SW1wbCBjbGFzcyBwcm9kdWNlIGFuIGltcGxlbWVudGF0aW9uIG9mIGl0IHRoYXQncyBy
ZXR1cm5lZAorICAgICAgICB0byBXZWJDb3JlLgorCisgICAgICAgIFRlc3RlZCBieSBleHRlbnNp
b24gb2YgdGhlIFJUQ1BlZXJDb25uZWN0aW9uLXN0YXRzLmh0bWwgdGVzdC4KKworICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDU3RhdHNFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJUQ1N0YXRzRWxlbWVudDo6YWRkU3RhdGlzdGljKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDU3RhdHNFbGVtZW50Lmg6CisgICAgICAg
IChSVENTdGF0c0VsZW1lbnQpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDU3Rh
dHNSZXBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpSVENT
dGF0c1JlcG9ydDo6YWRkRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpSVENTdGF0c1JlcG9y
dDo6YWRkU3RhdGlzdGljKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1N0YXRz
UmVwb3J0Lmg6CisgICAgICAgIChSVENTdGF0c1JlcG9ydCk6CisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENTdGF0c1JlcXVlc3RJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJU
Q1N0YXRzUmVxdWVzdEltcGw6OmNyZWF0ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6UlRDU3RhdHNSZXF1ZXN0SW1wbDo6cmVxdWVzdFN1Y2NlZWRlZCk6
CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENTdGF0c1JlcXVlc3RJbXBsLmg6Cisg
ICAgICAgIChSVENTdGF0c1JlcXVlc3RJbXBsKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ1N0YXRzUmVzcG9uc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDU3RhdHNSZXNw
b25zZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1N0YXRzUmVzcG9uc2U6OmFkZFJl
cG9ydCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1N0YXRzUmVz
cG9uc2U6OmFkZEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6UlRDU3RhdHNSZXNwb25zZTo6
YWRkU3RhdGlzdGljKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1N0YXRzUmVz
cG9uc2UuaDoKKyAgICAgICAgKFJUQ1N0YXRzUmVzcG9uc2UpOgorICAgICAgICAqIFdlYkNvcmUu
Z3lwaToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlJUQ1N0YXRzUmVx
dWVzdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJUQ1N0YXRzUmVxdWVzdDo6cmVzcG9uc2Up
OgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUlRDU3RhdHNSZXF1ZXN0
OjpyZXF1ZXN0U3VjY2VlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0
L1dlYlJUQ1N0YXRzUmVzcG9uc2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlJUQ1N0YXRzUmVzcG9uc2U6OldlYlJUQ1N0YXRzUmVzcG9uc2UpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJSVENTdGF0c1Jlc3BvbnNlOjphc3NpZ24pOgorICAgICAgICAo
V2ViS2l0OjpXZWJSVENTdGF0c1Jlc3BvbnNlOjpyZXNldCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlJUQ1N0YXRzUmVzcG9uc2U6Om9wZXJhdG9yIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpSVENT
dGF0c1Jlc3BvbnNlQmFzZT4pOgorICAgICAgICAoV2ViS2l0OjpXZWJSVENTdGF0c1Jlc3BvbnNl
OjphZGRSZXBvcnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJSVENTdGF0c1Jlc3BvbnNlOjphZGRF
bGVtZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUlRDU3RhdHNSZXNwb25zZTo6YWRkU3RhdGlz
dGljKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENTdGF0c1JlcXVlc3QuaDoK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUlRDU3RhdHNSZXF1ZXN0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENTdGF0c1Jlc3BvbnNlQmFzZS5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUlRDU3RhdHNSZXNwb25zZUJhc2UpOgorICAgICAg
ICAoV2ViQ29yZTo6UlRDU3RhdHNSZXNwb25zZUJhc2U6On5SVENTdGF0c1Jlc3BvbnNlQmFzZSk6
CisKIDIwMTItMTAtMDEgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29t
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMzAwMDQuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lwaSBiL1NvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9y
bS5neXBpCmluZGV4IGE2YzI0NTcxYTY3MDY2NDkxMDNiMGUyNGI0Mzg4YTA3ODQwYzhiOTcuLjY5
ZGU5MzczNGUyN2VjYTU4MjEwNGFmYTEyYzUxNWJjOTZiODcxNzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBpCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5n
eXBpCkBAIC0xMTIsNiArMTEyLDggQEAKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2Vi
UlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50LmgnLAogICAgICAgICAgICAgJ2Nocm9taXVt
L3B1YmxpYy9XZWJSVENTZXNzaW9uRGVzY3JpcHRpb24uaCcsCiAgICAgICAgICAgICAnY2hyb21p
dW0vcHVibGljL1dlYlJUQ1Nlc3Npb25EZXNjcmlwdGlvblJlcXVlc3QuaCcsCisgICAgICAgICAg
ICAnY2hyb21pdW0vcHVibGljL1dlYlJUQ1N0YXRzUmVxdWVzdC5oJywKKyAgICAgICAgICAgICdj
aHJvbWl1bS9wdWJsaWMvV2ViUlRDU3RhdHNSZXNwb25zZS5oJywKICAgICAgICAgICAgICdjaHJv
bWl1bS9wdWJsaWMvV2ViUlRDVm9pZFJlcXVlc3QuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0v
cHVibGljL1dlYlJlY3QuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlJlZmVy
cmVyUG9saWN5LmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1Ymxp
Yy9XZWJSVENTdGF0c1JlcXVlc3QuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMv
V2ViUlRDU3RhdHNSZXF1ZXN0LmgKaW5kZXggNGQ2OGMxMTUzNmZhNmE1OGI4ZjU5OGRmMzgzYzBl
ZmIxMjQ2YjlmMC4uNDMwNjkwOTE2MGYzN2M3OWFmMTQ3YWIyMWMzZDVhNDhkODMxYWZlNyAxMDA2
NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJSVENTdGF0c1JlcXVl
c3QuaAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlJUQ1N0YXRzUmVx
dWVzdC5oCkBAIC00MSw2ICs0MSw4IEBAIGNsYXNzIFJUQ1N0YXRzUmVxdWVzdDsKIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKK2NsYXNzIFdlYlJUQ1N0YXRzUmVzcG9uc2U7CisKIGNsYXNzIFdlYlJU
Q1N0YXRzUmVxdWVzdCB7CiBwdWJsaWM6CiAgICAgV2ViUlRDU3RhdHNSZXF1ZXN0KCkgeyB9CkBA
IC01Nyw3ICs1OSw5IEBAIHB1YmxpYzoKIAogICAgIFdFQktJVF9FWFBPUlQgdm9pZCByZXNldCgp
OwogCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHJlcXVlc3RTdWNjZWVkZWQoKSBjb25zdDsKKyAg
ICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVxdWVzdFN1Y2NlZWRlZChjb25zdCBXZWJSVENTdGF0c1Jl
c3BvbnNlJikgY29uc3Q7CisKKyAgICBXRUJLSVRfRVhQT1JUIFdlYlJUQ1N0YXRzUmVzcG9uc2Ug
cmVzcG9uc2UoKSBjb25zdDsKIAogI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgogICAgIFdlYlJU
Q1N0YXRzUmVxdWVzdChjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6UlRDU3RhdHNSZXF1
ZXN0PiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJS
VENTdGF0c1Jlc3BvbnNlLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlJU
Q1N0YXRzUmVzcG9uc2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNjU1MzllNTYxZjM5YTAzNjVjY2QxZTExYjBi
MGU1MmI0ODY3MzM1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVt
L3B1YmxpYy9XZWJSVENTdGF0c1Jlc3BvbnNlLmgKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBXZWJSVENTdGF0c1Jlc3BvbnNlX2gKKyNkZWZpbmUgV2ViUlRDU3RhdHNS
ZXNwb25zZV9oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJQcml2YXRl
UHRyLmgiCisjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2Ns
YXNzIFJUQ1N0YXRzUmVzcG9uc2VCYXNlOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xh
c3MgV2ViUlRDU3RhdHNSZXNwb25zZSB7CitwdWJsaWM6CisgICAgV2ViUlRDU3RhdHNSZXNwb25z
ZSgpIHsgfQorICAgIFdlYlJUQ1N0YXRzUmVzcG9uc2UoY29uc3QgV2ViUlRDU3RhdHNSZXNwb25z
ZSYgb3RoZXIpIHsgYXNzaWduKG90aGVyKTsgfQorICAgIH5XZWJSVENTdGF0c1Jlc3BvbnNlKCkg
eyByZXNldCgpOyB9CisKKyAgICBXZWJSVENTdGF0c1Jlc3BvbnNlJiBvcGVyYXRvcj0oY29uc3Qg
V2ViUlRDU3RhdHNSZXNwb25zZSYgb3RoZXIpCisgICAgeworICAgICAgICBhc3NpZ24ob3RoZXIp
OworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgV0VCS0lUX0VYUE9SVCB2b2lk
IGFzc2lnbihjb25zdCBXZWJSVENTdGF0c1Jlc3BvbnNlJik7CisKKyAgICBXRUJLSVRfRVhQT1JU
IHZvaWQgcmVzZXQoKTsKKworICAgIFdFQktJVF9FWFBPUlQgaW50IGFkZFJlcG9ydCgpOworICAg
IFdFQktJVF9FWFBPUlQgaW50IGFkZEVsZW1lbnQoaW50IHJlcG9ydCwgYm9vbCBpc0xvY2FsLCBs
b25nIHRpbWVzdGFtcCk7CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFkZFN0YXRpc3RpYyhpbnQg
cmVwb3J0LCBib29sIGlzTG9jYWwsIGludCBlbGVtZW50LCBXZWJTdHJpbmcgbmFtZSwgV2ViU3Ry
aW5nIHZhbHVlKTsKKworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorICAgIFdlYlJUQ1N0YXRz
UmVzcG9uc2UoY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OlJUQ1N0YXRzUmVzcG9uc2VC
YXNlPiYpOworCisgICAgb3BlcmF0b3IgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OlJUQ1N0YXRz
UmVzcG9uc2VCYXNlPigpIGNvbnN0OworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgV2ViUHJpdmF0
ZVB0cjxXZWJDb3JlOjpSVENTdGF0c1Jlc3BvbnNlQmFzZT4gbV9wcml2YXRlOworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJSVENTdGF0c1Jlc3BvbnNlX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDU3RhdHNFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDU3RhdHNFbGVt
ZW50LmNwcAppbmRleCBlNzhjYzBiNTc0ZjQ0YjhhNWQ1ZjJiOTNjMDUwOGY0NTVjMTFjNTdlLi40
YTMzMzFmZWVlYWJhMzg4MzYwNTIxOGI3NTI0YmVhOWI4ZmU3MDVjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1N0YXRzRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENTdGF0c0VsZW1lbnQuY3BwCkBA
IC00Nyw2ICs0NywxMSBAQCBTdHJpbmcgUlRDU3RhdHNFbGVtZW50OjpzdGF0KGNvbnN0IFN0cmlu
ZyYgbmFtZSkgY29uc3QKICAgICByZXR1cm4gbV9zdGF0cy5nZXQobmFtZSk7CiB9CiAKK3ZvaWQg
UlRDU3RhdHNFbGVtZW50OjphZGRTdGF0aXN0aWMoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBT
dHJpbmcmIHZhbHVlKQoreworICAgIG1fc3RhdHMuYWRkKG5hbWUsIHZhbHVlKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDU3RhdHNFbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1N0YXRzRWxlbWVu
dC5oCmluZGV4IDA5ZWJlZDJkNTlmN2E4YTI0OTRmZDE5ZWY1YjgyMGE1ZjAxYWZjMDQuLjJiZTEx
ZDk4YTU0ZTFmZTFhMzhlZGQ2ZWFkMmU1MGIxNTFmYzAwNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDU3RhdHNFbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENTdGF0c0VsZW1lbnQuaApAQCAtMzcsNyAr
MzcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8UlRDU3RhdHNFbGVtZW50PiBj
cmVhdGUobG9uZyB0aW1lc3RhbXApOwogICAgIGxvbmcgdGltZXN0YW1wKCkgY29uc3QgeyByZXR1
cm4gbV90aW1lc3RhbXA7IH0KICAgICBTdHJpbmcgc3RhdChjb25zdCBTdHJpbmcmIG5hbWUpIGNv
bnN0OwotCisgICAgdm9pZCBhZGRTdGF0aXN0aWMoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBT
dHJpbmcmIHZhbHVlKTsKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgUlRDU3RhdHNFbGVtZW50KGxv
bmcgdGltZXN0YW1wKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENTdGF0c1JlcG9ydC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1N0YXRzUmVwb3J0LmNwcAppbmRleCBkOTgyZGQ3ODMzMmIxMmNhMjJjNWM0NTUy
NjBkOTAzOGNmYzYxNDE4Li45ZTkwNDlhOTFhN2M1MzEwZDlhZTk5OTg1NDhhZDM0ZTc5YTM2Njdm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1N0YXRz
UmVwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1N0
YXRzUmVwb3J0LmNwcApAQCAtMzksNiArMzksMjggQEAgUlRDU3RhdHNSZXBvcnQ6OlJUQ1N0YXRz
UmVwb3J0KCkKIHsKIH0KIAorCitpbnQgUlRDU3RhdHNSZXBvcnQ6OmFkZEVsZW1lbnQoYm9vbCBp
c0xvY2FsLCBsb25nIHRpbWVzdGFtcCkKK3sKKyAgICBpZiAoaXNMb2NhbCkgeworICAgICAgICBt
X2xvY2FsLmFwcGVuZChSVENTdGF0c0VsZW1lbnQ6OmNyZWF0ZSh0aW1lc3RhbXApKTsKKyAgICAg
ICAgcmV0dXJuIG1fbG9jYWwuc2l6ZSgpIC0gMTsKKyAgICB9CisgICAgbV9yZW1vdGUuYXBwZW5k
KFJUQ1N0YXRzRWxlbWVudDo6Y3JlYXRlKHRpbWVzdGFtcCkpOworICAgIHJldHVybiBtX3JlbW90
ZS5zaXplKCkgLSAxOworfQorCit2b2lkIFJUQ1N0YXRzUmVwb3J0OjphZGRTdGF0aXN0aWMoYm9v
bCBpc0xvY2FsLCBzaXplX3QgZWxlbWVudCwgU3RyaW5nIG5hbWUsIFN0cmluZyB2YWx1ZSkKK3sK
KyAgICBpZiAoaXNMb2NhbCkgeworICAgICAgICBBU1NFUlQoZWxlbWVudCA+PSAwICYmIGVsZW1l
bnQgPCBtX2xvY2FsLnNpemUoKSk7CisgICAgICAgIG1fbG9jYWxbZWxlbWVudF0tPmFkZFN0YXRp
c3RpYyhuYW1lLCB2YWx1ZSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgQVNTRVJUKGVsZW1lbnQg
Pj0gMCAmJiBlbGVtZW50IDwgbV9yZW1vdGUuc2l6ZSgpKTsKKyAgICAgICAgbV9yZW1vdGVbZWxl
bWVudF0tPmFkZFN0YXRpc3RpYyhuYW1lLCB2YWx1ZSk7CisgICAgfQorfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENTdGF0c1JlcG9ydC5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENTdGF0c1JlcG9ydC5oCmluZGV4
IGNiMmNmMDM5Zjg5YzdhNmJlOTI1YThmN2MzZmUzMDllZDhiNGI3MDIuLmQ3OWE5MmI0M2UzNTJi
OTEyZjFmYjMyYTVlNTMzMDQ0MDdkY2QxY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDU3RhdHNSZXBvcnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ1N0YXRzUmVwb3J0LmgKQEAgLTQwLDYgKzQwLDkgQEAgcHVi
bGljOgogICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8UlRDU3RhdHNFbGVtZW50PiA+JiBsb2NhbCgp
IGNvbnN0IHsgcmV0dXJuIG1fbG9jYWw7IH0KICAgICBjb25zdCBWZWN0b3I8UmVmUHRyPFJUQ1N0
YXRzRWxlbWVudD4gPiYgcmVtb3RlKCkgY29uc3QgeyByZXR1cm4gbV9yZW1vdGU7IH0KIAorICAg
IGludCBhZGRFbGVtZW50KGJvb2wgaXNMb2NhbCwgbG9uZyB0aW1lc3RhbXApOworICAgIHZvaWQg
YWRkU3RhdGlzdGljKGJvb2wgaXNMb2NhbCwgc2l6ZV90IGVsZW1lbnQsIFN0cmluZyBuYW1lLCBT
dHJpbmcgdmFsdWUpOworCiBwcml2YXRlOgogICAgIFJUQ1N0YXRzUmVwb3J0KCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDU3RhdHNSZXF1ZXN0
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1N0YXRzUmVx
dWVzdEltcGwuY3BwCmluZGV4IGFmZGI5N2Y2OGJiZWFlZmYwMDNmY2VjMWUxNDU3Njk1MTFlZWI2
OGYuLjAxZWNlYWQyZjRkNDU3YTRiMGY1YWY2ZjhjMTA5YmVkMDU4MGJiYWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDU3RhdHNSZXF1ZXN0SW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENTdGF0c1JlcXVl
c3RJbXBsLmNwcApAQCAtNTEsMTMgKzUxLDE2IEBAIFJUQ1N0YXRzUmVxdWVzdEltcGw6On5SVENT
dGF0c1JlcXVlc3RJbXBsKCkKIHsKIH0KIAotdm9pZCBSVENTdGF0c1JlcXVlc3RJbXBsOjpyZXF1
ZXN0U3VjY2VlZGVkKCkKK1Bhc3NSZWZQdHI8UlRDU3RhdHNSZXNwb25zZUJhc2U+IFJUQ1N0YXRz
UmVxdWVzdEltcGw6OmNyZWF0ZVJlc3BvbnNlKCkKK3sKKyAgICByZXR1cm4gUlRDU3RhdHNSZXNw
b25zZTo6Y3JlYXRlKCk7Cit9CisKK3ZvaWQgUlRDU3RhdHNSZXF1ZXN0SW1wbDo6cmVxdWVzdFN1
Y2NlZWRlZChQYXNzUmVmUHRyPFJUQ1N0YXRzUmVzcG9uc2VCYXNlPiByZXNwb25zZSkKIHsKICAg
ICBpZiAoIW1fc3VjY2Vzc0NhbGxiYWNrKQogICAgICAgICByZXR1cm47Ci0gICAgLy8gRklYTUU6
IEZpbGwgaW4gY29udGVudCBvZiBzdGF0cyBwYXJhbWV0ZXIuCi0gICAgUmVmUHRyPFJUQ1N0YXRz
UmVzcG9uc2U+IHN0YXRzID0gUlRDU3RhdHNSZXNwb25zZTo6Y3JlYXRlKCk7Ci0gICAgbV9zdWNj
ZXNzQ2FsbGJhY2stPmhhbmRsZUV2ZW50KHN0YXRzLmdldCgpKTsKKyAgICBtX3N1Y2Nlc3NDYWxs
YmFjay0+aGFuZGxlRXZlbnQoc3RhdGljX2Nhc3Q8UlRDU3RhdHNSZXNwb25zZSo+KHJlc3BvbnNl
LmdldCgpKSk7CiAgICAgY2xlYXIoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENTdGF0c1JlcXVlc3RJbXBsLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1N0YXRzUmVxdWVzdEltcGwuaAppbmRleCA0NzY2M2E3
ZjFiMTRjNWEwNzFhMDJiOTM1MzI3NGUzYmU3YWMxYmE1Li5iZGExNTVlYWJmMjVlYTAwNTdmN2Mz
ZTYxYTgwMWMwMWMyN2MwNzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1N0YXRzUmVxdWVzdEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ1N0YXRzUmVxdWVzdEltcGwuaApAQCAtMjksNiArMjksNyBAQAog
CiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiUlRDU3RhdHNSZXF1ZXN0
LmgiCisjaW5jbHVkZSAiUlRDU3RhdHNSZXNwb25zZS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KQEAgLTQyLDcgKzQzLDggQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFJUQ1N0YXRzUmVxdWVzdEltcGw+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
UGFzc1JlZlB0cjxSVENTdGF0c0NhbGxiYWNrPik7CiAgICAgdmlydHVhbCB+UlRDU3RhdHNSZXF1
ZXN0SW1wbCgpOwogCi0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RTdWNjZWVkZWQoKTsKKyAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8UlRDU3RhdHNSZXNwb25zZUJhc2U+IGNyZWF0ZVJlc3BvbnNlKCk7
CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RTdWNjZWVkZWQoUGFzc1JlZlB0cjxSVENTdGF0c1Jl
c3BvbnNlQmFzZT4pOwogCiAgICAgLy8gQWN0aXZlRE9NT2JqZWN0CiAgICAgdmlydHVhbCB2b2lk
IHN0b3AoKSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDU3RhdHNSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1N0YXRzUmVzcG9uc2UuY3BwCmluZGV4IGZmNzhmMTEwMDQzMWQ3YmYxOWQw
ZGY0OGM5NGE5MDFkZThhYjM3MDYuLmUwNWRiMmNjOTEyNjhlYTMxOGIxM2NjYWY0ZTQ0OWQ5ZjQw
NjE0NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
U3RhdHNSZXNwb25zZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENTdGF0c1Jlc3BvbnNlLmNwcApAQCAtMzMsMTMgKzMzLDMwIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIFBhc3NSZWZQdHI8UlRDU3RhdHNSZXNwb25zZT4gUlRDU3RhdHNSZXNwb25zZTo6Y3Jl
YXRlKCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJUQ1N0YXRzUmVzcG9uc2UoKSk7Ci0g
ICAgLy8gRklYTUU6IFBhc3MgYW4gUlRDU3RhdHNSZXF1ZXN0IGFyZ3VtZW50IGFuZCBwb3B1bGF0
ZSBmcm9tIGl0LgogfQogCiBSVENTdGF0c1Jlc3BvbnNlOjpSVENTdGF0c1Jlc3BvbnNlKCkKIHsK
IH0KIAoraW50IFJUQ1N0YXRzUmVzcG9uc2U6OmFkZFJlcG9ydCgpCit7CisgICAgbV9yZXN1bHQu
YXBwZW5kKFJUQ1N0YXRzUmVwb3J0OjpjcmVhdGUoKSk7CisgICAgcmV0dXJuIG1fcmVzdWx0LnNp
emUoKSAtIDE7Cit9CisKK2ludCBSVENTdGF0c1Jlc3BvbnNlOjphZGRFbGVtZW50KHNpemVfdCBy
ZXBvcnQsIGJvb2wgaXNMb2NhbCwgbG9uZyB0aW1lc3RhbXApCit7CisgICAgQVNTRVJUKHJlcG9y
dCA+PSAwICYmIHJlcG9ydCA8IG1fcmVzdWx0LnNpemUoKSk7CisgICAgcmV0dXJuIG1fcmVzdWx0
W3JlcG9ydF0tPmFkZEVsZW1lbnQoaXNMb2NhbCwgdGltZXN0YW1wKTsKK30KKwordm9pZCBSVENT
dGF0c1Jlc3BvbnNlOjphZGRTdGF0aXN0aWMoc2l6ZV90IHJlcG9ydCwgYm9vbCBpc0xvY2FsLCBz
aXplX3QgZWxlbWVudCwgU3RyaW5nIG5hbWUsIFN0cmluZyB2YWx1ZSkKK3sKKyAgICBBU1NFUlQo
cmVwb3J0ID49IDAgJiYgcmVwb3J0IDwgbV9yZXN1bHQuc2l6ZSgpKTsKKyAgICByZXR1cm4gbV9y
ZXN1bHRbcmVwb3J0XS0+YWRkU3RhdGlzdGljKGlzTG9jYWwsIGVsZW1lbnQsIG5hbWUsIHZhbHVl
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElB
X1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDU3RhdHNSZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENTdGF0c1Jlc3BvbnNlLmgKaW5kZXggYzJlY2M5MGVkNGE2ZDhhNmU4YjRhOTBjMGJjYjFiOTdl
NzE3NTE4Ny4uZWU4NTY5Y2VkMzdhZWRkNzVkYjk4MDVmMGIwODdjYTQ5ZWNmYWE2ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENTdGF0c1Jlc3BvbnNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENTdGF0c1Jlc3Bv
bnNlLmgKQEAgLTM0LDE1ICszNCwyMCBAQAogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5j
bHVkZSAiTWVkaWFTdHJlYW1UcmFjay5oIgogI2luY2x1ZGUgIlJUQ1N0YXRzUmVwb3J0LmgiCisj
aW5jbHVkZSAiUlRDU3RhdHNSZXNwb25zZUJhc2UuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jbGFzcyBSVENTdGF0c1Jlc3BvbnNlIDogcHVibGljIFJlZkNvdW50ZWQ8UlRDU3RhdHNSZXNw
b25zZT4geworY2xhc3MgUlRDU3RhdHNSZXNwb25zZSA6IHB1YmxpYyBSVENTdGF0c1Jlc3BvbnNl
QmFzZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8UlRDU3RhdHNSZXNwb25zZT4g
Y3JlYXRlKCk7CiAKICAgICBjb25zdCBWZWN0b3I8UmVmUHRyPFJUQ1N0YXRzUmVwb3J0PiA+JiBy
ZXN1bHQoKSBjb25zdCB7IHJldHVybiBtX3Jlc3VsdDsgfTsKIAorICAgIHZpcnR1YWwgaW50IGFk
ZFJlcG9ydCgpOworICAgIHZpcnR1YWwgaW50IGFkZEVsZW1lbnQoc2l6ZV90IHJlcG9ydCwgYm9v
bCBpc0xvY2FsLCBsb25nIHRpbWVzdGFtcCk7CisgICAgdmlydHVhbCB2b2lkIGFkZFN0YXRpc3Rp
YyhzaXplX3QgcmVwb3J0LCBib29sIGlzTG9jYWwsIHNpemVfdCBlbGVtZW50LCBTdHJpbmcgbmFt
ZSwgU3RyaW5nIHZhbHVlKTsKKwogcHJpdmF0ZToKICAgICBSVENTdGF0c1Jlc3BvbnNlKCk7CiAg
ICAgVmVjdG9yPFJlZlB0cjxSVENTdGF0c1JlcG9ydD4gPiBtX3Jlc3VsdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQppbmRleCAzYmU0ZTZhODNiZjIwOTczZGRlNTk1ZDI2ZjJlNDdlYjRiNzA0MTk0Li5iMjcwMDk1
M2Q0Njc5NzcxNjMwNDAxMzQ0MGJmNTIxMWU4YjUzZjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC04
MzcxLDYgKzgzNzEsNyBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQv
V2ViUlRDU2Vzc2lvbkRlc2NyaXB0aW9uLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hy
b21pdW0vc3VwcG9ydC9XZWJSVENTZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0LmNwcCcsCiAgICAg
ICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJSVENTdGF0c1JlcXVlc3QuY3Bw
JywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlJUQ1N0YXRzUmVz
cG9uc2UuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlJU
Q1ZvaWRSZXF1ZXN0LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9y
dC9XZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5TmF0aXZlLmNwcCcsCiAgICAgICAgICAgICAncGxh
dGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5TmF0aXZlLmgn
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9X
ZWJSVENTdGF0c1JlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0v
c3VwcG9ydC9XZWJSVENTdGF0c1JlcXVlc3QuY3BwCmluZGV4IGRmNjVhZTY3MmEwYmYxNjVjM2My
YzRhZDY0NDQ4ZDM4ZjQ1YzA1Y2MuLjA4MTEzZjBmZGFmNGUyMTRkYjcyMmE1ZDQzOWFmNGVmNTRh
ZGYzOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBv
cnQvV2ViUlRDU3RhdHNSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9zdXBwb3J0L1dlYlJUQ1N0YXRzUmVxdWVzdC5jcHAKQEAgLTMzLDggKzMzLDEwIEBA
CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAogI2luY2x1ZGUgPHB1YmxpYy9XZWJSVENTdGF0
c1JlcXVlc3QuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViUlRDU3RhdHNSZXNwb25zZS5oPgogCiAj
aW5jbHVkZSAiUlRDU3RhdHNSZXF1ZXN0LmgiCisjaW5jbHVkZSAiUlRDU3RhdHNSZXNwb25zZS5o
IgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwpAQCAtNTYsOSArNTgsMTQgQEAgdm9pZCBXZWJSVENTdGF0c1JlcXVlc3Q6OnJlc2V0KCkKICAg
ICBtX3ByaXZhdGUucmVzZXQoKTsKIH0KIAotdm9pZCBXZWJSVENTdGF0c1JlcXVlc3Q6OnJlcXVl
c3RTdWNjZWVkZWQoKSBjb25zdAorV2ViUlRDU3RhdHNSZXNwb25zZSBXZWJSVENTdGF0c1JlcXVl
c3Q6OnJlc3BvbnNlKCkgY29uc3QKIHsKLSAgICBtX3ByaXZhdGUtPnJlcXVlc3RTdWNjZWVkZWQo
KTsKKyAgICByZXR1cm4gV2ViUlRDU3RhdHNSZXNwb25zZShtX3ByaXZhdGUtPmNyZWF0ZVJlc3Bv
bnNlKCkpOworfQorCit2b2lkIFdlYlJUQ1N0YXRzUmVxdWVzdDo6cmVxdWVzdFN1Y2NlZWRlZChj
b25zdCBXZWJSVENTdGF0c1Jlc3BvbnNlJiByZXNwb25zZSkgY29uc3QKK3sKKyAgICBtX3ByaXZh
dGUtPnJlcXVlc3RTdWNjZWVkZWQocmVzcG9uc2UpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQv
V2ViUlRDU3RhdHNSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1
bS9zdXBwb3J0L1dlYlJUQ1N0YXRzUmVzcG9uc2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYwNWJjMWFmMTQ4
MmYwZjg2NWE5ODQ5NzY4OTQ4YTgyMDg4ZjlmZmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlJUQ1N0YXRzUmVzcG9uc2UuY3Bw
CkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKwor
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlIDxwdWJsaWMvV2ViUlRDU3RhdHNS
ZXNwb25zZS5oPgorCisjaW5jbHVkZSAiUlRDU3RhdHNSZXNwb25zZUJhc2UuaCIKKyNpbmNsdWRl
IDx3dGYvUGFzc093blB0ci5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK1dlYlJUQ1N0YXRzUmVzcG9uc2U6OldlYlJUQ1N0YXRzUmVzcG9uc2Uo
Y29uc3QgUGFzc1JlZlB0cjxSVENTdGF0c1Jlc3BvbnNlQmFzZT4mIHJlcXVlc3QpCisgICAgOiBt
X3ByaXZhdGUocmVxdWVzdCkKK3sKK30KKwordm9pZCBXZWJSVENTdGF0c1Jlc3BvbnNlOjphc3Np
Z24oY29uc3QgV2ViUlRDU3RhdHNSZXNwb25zZSYgb3RoZXIpCit7CisgICAgbV9wcml2YXRlID0g
b3RoZXIubV9wcml2YXRlOworfQorCit2b2lkIFdlYlJUQ1N0YXRzUmVzcG9uc2U6OnJlc2V0KCkK
K3sKKyAgICBtX3ByaXZhdGUucmVzZXQoKTsKK30KKworV2ViUlRDU3RhdHNSZXNwb25zZTo6b3Bl
cmF0b3IgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OlJUQ1N0YXRzUmVzcG9uc2VCYXNlPigpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS5nZXQoKTsKK30KKworaW50IFdlYlJUQ1N0YXRz
UmVzcG9uc2U6OmFkZFJlcG9ydCgpCit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+YWRkUmVwb3J0
KCk7Cit9CitpbnQgV2ViUlRDU3RhdHNSZXNwb25zZTo6YWRkRWxlbWVudChpbnQgcmVwb3J0LCBi
b29sIGlzTG9jYWwsIGxvbmcgdGltZXN0YW1wKQoreworICAgIHJldHVybiBtX3ByaXZhdGUtPmFk
ZEVsZW1lbnQocmVwb3J0LCBpc0xvY2FsLCB0aW1lc3RhbXApOworfQorCit2b2lkIFdlYlJUQ1N0
YXRzUmVzcG9uc2U6OmFkZFN0YXRpc3RpYyhpbnQgcmVwb3J0LCBib29sIGlzTG9jYWwsIGludCBl
bGVtZW50LCBXZWJTdHJpbmcgbmFtZSwgV2ViU3RyaW5nIHZhbHVlKQoreworICAgIG1fcHJpdmF0
ZS0+YWRkU3RhdGlzdGljKHJlcG9ydCwgaXNMb2NhbCwgZWxlbWVudCwgbmFtZSwgdmFsdWUpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJF
QU0pCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JU
Q1N0YXRzUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRD
U3RhdHNSZXF1ZXN0LmgKaW5kZXggNmVjZTc2NDBlYTc2NThjNzQzMzg2ZWQ1NGQ0ZmNhNGM1ZDkx
YzE4Yy4uMjJjMTliODdmN2M3NWNhMjcyOWJiZTFmZDdmMjFmYTFjMTQ3Yzk3MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDU3RhdHNSZXF1ZXN0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDU3RhdHNSZXF1ZXN0
LmgKQEAgLTM5LDExICszOSwxNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFJU
Q1N0YXRzUmVzcG9uc2VCYXNlOworCiBjbGFzcyBSVENTdGF0c1JlcXVlc3QgOiBwdWJsaWMgUmVm
Q291bnRlZDxSVENTdGF0c1JlcXVlc3Q+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5SVENTdGF0
c1JlcXVlc3QoKSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0U3VjY2VlZGVkKCkgPSAw
OworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxSVENTdGF0c1Jlc3BvbnNlQmFzZT4gY3JlYXRlUmVz
cG9uc2UoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RTdWNjZWVkZWQoUGFzc1JlZlB0
cjxSVENTdGF0c1Jlc3BvbnNlQmFzZT4pID0gMDsKIAogcHJvdGVjdGVkOgogICAgIFJUQ1N0YXRz
UmVxdWVzdCgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vUlRDU3RhdHNSZXNwb25zZUJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL1JUQ1N0YXRzUmVzcG9uc2VCYXNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmUwY2Y1MmI4NWNl
MjZiNmRlMjZkZWQ5ZTM0NGFmYjRiYTQzZjU4MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ1N0YXRzUmVzcG9uc2VCYXNlLmgKQEAgLTAs
MCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBSVENTdGF0c1Jlc3BvbnNlQmFzZV9o
CisjZGVmaW5lIFJUQ1N0YXRzUmVzcG9uc2VCYXNlX2gKKworI2lmIEVOQUJMRShNRURJQV9TVFJF
QU0pCisKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgUlRDU3RhdHNSZXNwb25zZUJhc2UgOiBwdWJsaWMgUmVmQ291bnRlZDxS
VENTdGF0c1Jlc3BvbnNlQmFzZT4geworcHVibGljOgorICAgIHZpcnR1YWwgflJUQ1N0YXRzUmVz
cG9uc2VCYXNlKCkgeyB9CisKKyAgICB2aXJ0dWFsIGludCBhZGRSZXBvcnQoKSA9IDA7CisgICAg
dmlydHVhbCBpbnQgYWRkRWxlbWVudChzaXplX3QgcmVwb3J0LCBib29sIGlzTG9jYWwsIGxvbmcg
dGltZXN0YW1wKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFkZFN0YXRpc3RpYyhzaXplX3QgcmVw
b3J0LCBib29sIGlzTG9jYWwsIHNpemVfdCBlbGVtZW50LCBTdHJpbmcgbmFtZSwgU3RyaW5nIHZh
bHVlKSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFC
TEUoTUVESUFfU1RSRUFNKQorCisjZW5kaWYgLy8gUlRDU3RhdHNSZXNwb25zZUJhc2VfaApkaWZm
IC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGMzZDZiYjcw
MDg0ZGM0OWExNDk4YzkxNWNjNGExZmY2Mjk1ZGY3NTAuLmY0MGQwNWFlODc1Y2NjMTZkNjFkMTkw
YThjMTJjNmY1N2FhMTA0NzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29s
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMi0xMC0wMiAgSGFyYWxkIEFsdmVzdHJh
bmQgIDxodGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBBZGQgZGF0YSBwYXNzaW5nIHRvIHRoZSBH
ZXRTdGF0cyBpbnRlcmZhY2Ugb2YgUlRDUGVlckNvbm5lY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MDAzCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9N
b2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmNwcDoKKyAgICAgICAgKFJUQ1N0YXRzUmVx
dWVzdFN1Y2NlZWRlZFRhc2s6OlJUQ1N0YXRzUmVxdWVzdFN1Y2NlZWRlZFRhc2spOgorICAgICAg
ICAoTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcjo6TW9ja1dlYlJUQ1BlZXJDb25uZWN0
aW9uSGFuZGxlcik6CisgICAgICAgIChNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyOjph
ZGRTdHJlYW0pOgorICAgICAgICAoTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcjo6cmVt
b3ZlU3RyZWFtKToKKyAgICAgICAgKE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI6Omdl
dFN0YXRzKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViUlRDUGVl
ckNvbm5lY3Rpb25IYW5kbGVyLmg6CisgICAgICAgIChNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25I
YW5kbGVyKToKKwogMjAxMi0wOS0zMCAgVGFpanUgVHN1aWtpICA8dHppa0BjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgVW5yZXZpZXdlZC4gQWRkaW5nIG15c2VsZiBhcyBhIGNvbW1pdHRlci4KZGlm
ZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJSVENQZWVyQ29u
bmVjdGlvbkhhbmRsZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dl
YlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5jcHAKaW5kZXggYTcwMmM4YjNiNTZhZGQ1ODc3MTFh
Y2ZjNzg2NTIyZjE3MTNlZjllMC4uNjI2YzM0MjQxMjlkMmI5N2ZiNWU1ZjhhZTBkYjM2ZDNmMWZk
MjNmYyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlJU
Q1BlZXJDb25uZWN0aW9uSGFuZGxlci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5jcHAKQEAgLTM5LDYgKzM5LDcg
QEAKICNpbmNsdWRlIDxwdWJsaWMvV2ViUlRDU2Vzc2lvbkRlc2NyaXB0aW9uLmg+CiAjaW5jbHVk
ZSA8cHVibGljL1dlYlJUQ1Nlc3Npb25EZXNjcmlwdGlvblJlcXVlc3QuaD4KICNpbmNsdWRlIDxw
dWJsaWMvV2ViUlRDU3RhdHNSZXF1ZXN0Lmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlJUQ1N0YXRz
UmVzcG9uc2UuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViUlRDVm9pZFJlcXVlc3QuaD4KICNpbmNs
dWRlIDxwdWJsaWMvV2ViU3RyaW5nLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlZlY3Rvci5oPgpA
QCAtODMsMTkgKzg0LDIxIEBAIHByaXZhdGU6CiAKIGNsYXNzIFJUQ1N0YXRzUmVxdWVzdFN1Y2Nl
ZWRlZFRhc2sgOiBwdWJsaWMgTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5k
bGVyPiB7CiBwdWJsaWM6Ci0gICAgUlRDU3RhdHNSZXF1ZXN0U3VjY2VlZGVkVGFzayhNb2NrV2Vi
UlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyKiBvYmplY3QsIGNvbnN0IFdlYktpdDo6V2ViUlRDU3Rh
dHNSZXF1ZXN0JiByZXF1ZXN0KQorICAgIFJUQ1N0YXRzUmVxdWVzdFN1Y2NlZWRlZFRhc2soTW9j
a1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlciogb2JqZWN0LCBjb25zdCBXZWJLaXQ6OldlYlJU
Q1N0YXRzUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViS2l0OjpXZWJSVENTdGF0c1Jlc3BvbnNl
JiByZXNwb25zZSkKICAgICAgICAgOiBNZXRob2RUYXNrPE1vY2tXZWJSVENQZWVyQ29ubmVjdGlv
bkhhbmRsZXI+KG9iamVjdCkKICAgICAgICAgLCBtX3JlcXVlc3QocmVxdWVzdCkKKyAgICAgICAg
LCBtX3Jlc3BvbnNlKHJlc3BvbnNlKQogICAgIHsKICAgICB9CiAKICAgICB2aXJ0dWFsIHZvaWQg
cnVuSWZWYWxpZCgpIE9WRVJSSURFCiAgICAgewotICAgICAgICBtX3JlcXVlc3QucmVxdWVzdFN1
Y2NlZWRlZCgpOworICAgICAgICBtX3JlcXVlc3QucmVxdWVzdFN1Y2NlZWRlZChtX3Jlc3BvbnNl
KTsKICAgICB9CiAKIHByaXZhdGU6CiAgICAgV2ViS2l0OjpXZWJSVENTdGF0c1JlcXVlc3QgbV9y
ZXF1ZXN0OworICAgIFdlYktpdDo6V2ViUlRDU3RhdHNSZXNwb25zZSBtX3Jlc3BvbnNlOwogfTsK
IAogY2xhc3MgUlRDVm9pZFJlcXVlc3RUYXNrIDogcHVibGljIE1ldGhvZFRhc2s8TW9ja1dlYlJU
Q1BlZXJDb25uZWN0aW9uSGFuZGxlcj4gewpAQCAtMTI0LDYgKzEyNyw3IEBAIHByaXZhdGU6CiAK
IE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI6Ok1vY2tXZWJSVENQZWVyQ29ubmVjdGlv
bkhhbmRsZXIoV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50KiBjbGllbnQpCiAgICAg
OiBtX2NsaWVudChjbGllbnQpCisgICAgLCBtX3N0cmVhbUNvdW50KDApCiB7CiB9CiAKQEAgLTE5
NSw2ICsxOTksNyBAQCBib29sIE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI6OmFkZElD
RUNhbmRpZGF0ZShjb25zdCBXZWJSVENJQ0VDYW5kaWRhdGUmCiAKIGJvb2wgTW9ja1dlYlJUQ1Bl
ZXJDb25uZWN0aW9uSGFuZGxlcjo6YWRkU3RyZWFtKGNvbnN0IFdlYk1lZGlhU3RyZWFtRGVzY3Jp
cHRvciYgc3RyZWFtLCBjb25zdCBXZWJNZWRpYUNvbnN0cmFpbnRzJikKIHsKKyAgICBtX3N0cmVh
bUNvdW50ICs9IDE7CiAgICAgbV9jbGllbnQtPmRpZEFkZFJlbW90ZVN0cmVhbShzdHJlYW0pOwog
ICAgIG1fY2xpZW50LT5uZWdvdGlhdGlvbk5lZWRlZCgpOwogICAgIHJldHVybiB0cnVlOwpAQCAt
MjAyLDE2ICsyMDcsMjUgQEAgYm9vbCBNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyOjph
ZGRTdHJlYW0oY29uc3QgV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yJgogCiB2b2lkIE1vY2tXZWJS
VENQZWVyQ29ubmVjdGlvbkhhbmRsZXI6OnJlbW92ZVN0cmVhbShjb25zdCBXZWJNZWRpYVN0cmVh
bURlc2NyaXB0b3ImIHN0cmVhbSkKIHsKKyAgICBtX3N0cmVhbUNvdW50IC09IDE7CiAgICAgbV9j
bGllbnQtPmRpZFJlbW92ZVJlbW90ZVN0cmVhbShzdHJlYW0pOwogICAgIG1fY2xpZW50LT5uZWdv
dGlhdGlvbk5lZWRlZCgpOwogfQogCiB2b2lkIE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRs
ZXI6OmdldFN0YXRzKGNvbnN0IFdlYlJUQ1N0YXRzUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICBw
b3N0VGFzayhuZXcgUlRDU3RhdHNSZXF1ZXN0U3VjY2VlZGVkVGFzayh0aGlzLCByZXF1ZXN0KSk7
CisgICAgV2ViUlRDU3RhdHNSZXNwb25zZSByZXNwb25zZSA9IHJlcXVlc3QucmVzcG9uc2UoKTsK
KyAgICBmb3IgKGludCBpID0gMDsgaSA8IG1fc3RyZWFtQ291bnQ7ICsraSkgeworICAgICAgICBp
bnQgcmVwaWR4ID0gcmVzcG9uc2UuYWRkUmVwb3J0KCk7CisgICAgICAgIGludCBlbGVtZW50aWR4
ID0gcmVzcG9uc2UuYWRkRWxlbWVudChyZXBpZHgsIHRydWUsIDEyMzQ1KTsKKyAgICAgICAgcmVz
cG9uc2UuYWRkU3RhdGlzdGljKHJlcGlkeCwgdHJ1ZSwgZWxlbWVudGlkeCwgInR5cGUiLCAiYXVk
aW8iKTsKKyAgICAgICAgcmVwaWR4ID0gcmVzcG9uc2UuYWRkUmVwb3J0KCk7CisgICAgICAgIGVs
ZW1lbnRpZHggPSByZXNwb25zZS5hZGRFbGVtZW50KHJlcGlkeCwgdHJ1ZSwgMTIzNDUpOworICAg
ICAgICByZXNwb25zZS5hZGRTdGF0aXN0aWMocmVwaWR4LCB0cnVlLCBlbGVtZW50aWR4LCAidHlw
ZSIsICJ2aWRlbyIpOworICAgIH0KKyAgICBwb3N0VGFzayhuZXcgUlRDU3RhdHNSZXF1ZXN0U3Vj
Y2VlZGVkVGFzayh0aGlzLCByZXF1ZXN0LCByZXNwb25zZSkpOwogfQogCi0KIHZvaWQgTW9ja1dl
YlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcjo6c3RvcCgpCiB7CiB9CmRpZmYgLS1naXQgYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVy
LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViUlRDUGVlckNvbm5lY3Rp
b25IYW5kbGVyLmgKaW5kZXggOGFhMzM2ZTE0ZjljMzBiZTAxYjBlZWM0NWQ5ZTE3MWUyMGY3ZDE0
NS4uNDNkMDg3ZTM1Y2FjNmYzMzAwNzAzM2EyNjY2Y2Q2ODMxNWUxZGE2MiAxMDA2NDQKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFu
ZGxlci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJSVENQZWVy
Q29ubmVjdGlvbkhhbmRsZXIuaApAQCAtNzIsNiArNzIsNyBAQCBwcml2YXRlOgogICAgIFRhc2tM
aXN0IG1fdGFza0xpc3Q7CiAgICAgV2ViS2l0OjpXZWJSVENTZXNzaW9uRGVzY3JpcHRpb24gbV9s
b2NhbERlc2NyaXB0aW9uOwogICAgIFdlYktpdDo6V2ViUlRDU2Vzc2lvbkRlc2NyaXB0aW9uIG1f
cmVtb3RlRGVzY3JpcHRpb247CisgICAgaW50IG1fc3RyZWFtQ291bnQ7CiB9OwogCiAjZW5kaWYg
Ly8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBlYTc4MzNjNWY4MTZhYWE1ZTRlNTBjZjNm
N2RlOGIzZTIwMWFjNGM2Li4zZDUwYWQxNGViNjc0NTgwMTk5YWI2NTEyOTEyNWJiZTE5ZWMwMzNk
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMTAtMDIgIEhhcmFsZCBBbHZlc3RyYW5kICA8
aHRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgQWRkIGRhdGEgcGFzc2luZyB0byB0aGUgR2V0U3Rh
dHMgaW50ZXJmYWNlIG9mIFJUQ1BlZXJDb25uZWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODAwMworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVj
dGlvbi1zdGF0cy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9SVENQ
ZWVyQ29ubmVjdGlvbi1zdGF0cy5odG1sOgorCiAyMDEyLTEwLTAxICBTaGVyaWZmIEJvdCAgPHdl
YmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5n
IG91dCByMTMwMDA0LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9S
VENQZWVyQ29ubmVjdGlvbi1zdGF0cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L21l
ZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLXN0YXRzLWV4cGVjdGVkLnR4dAppbmRleCBmZmUz
MzZlOGEyM2FmNDJhOWMwZWViM2VmMTk0NTczNDhlY2UwOWVmLi45OWNkOGY5ZjExZjcwYmYxYmQx
OGFhZjY2ZGExMjNiNmI4YjQ3YzhjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlh
c3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLXN0YXRzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLXN0YXRzLWV4cGVjdGVkLnR4
dApAQCAtNCwxMCArNCwxNyBAQCBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURQogCiAKIFBBU1MgcGMg
PSBuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24obnVsbCkgZGlkIG5vdCB0aHJvdyBleGNlcHRp
b24uCi1QQVNTIHBjLmdldFN0YXRzKHN0YXRzSGFuZGxlcikgZGlkIG5vdCB0aHJvdyBleGNlcHRp
b24uCi1QQVNTIHN0YXRzSGFuZGxlciB3YXMgY2FsbGVkCitQQVNTIHBjLmdldFN0YXRzKHN0YXRz
SGFuZGxlcjEpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBzdGF0c0hhbmRsZXIxIHdh
cyBjYWxsZWQKIFBBU1Mgc3RhdHVzIGlzIG5vbi1udWxsLgogUEFTUyByZXN1bHQubGVuZ3RoIGlz
IDAKK1BBU1MgZ2V0VXNlck1lZGlhKHthdWRpbzp0cnVlLCB2aWRlbzp0cnVlfSwgZ290U3RyZWFt
KSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgR290IGEgc3RyZWFtLgorUEFTUyBwYy5n
ZXRTdGF0cyhzdGF0c0hhbmRsZXIyKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1Mgc3Rh
dHNIYW5kbGVyMiB3YXMgY2FsbGVkCitQQVNTIHJlc3VsdC5sZW5ndGggaXMgPj0gMgorUEFTUyBs
b2NhbC5sZW5ndGggaXMgMQorUEFTUyBsb2NhbFswXS5zdGF0KCJ0eXBlIikgaXMgImF1ZGlvIgog
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLXN0YXRz
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLXN0
YXRzLmh0bWwKaW5kZXggOTY3NWNhMzkzYzIwYzYzN2NjYzYyZDlhY2VlMDE2NDYzZWEzNzE5MS4u
NTk4NWI3YWVmZGM4MDg2MTYwMmU5ZDE3M2ZlMjg4MDk3ZjQxYzkzNyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1zdGF0cy5odG1sCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24tc3RhdHMu
aHRtbApAQCAtOCwxOCArOCw1MyBAQAogZGVzY3JpcHRpb24oIlRlc3RzIHRoZSBSVENQZWVyQ29u
bmVjdGlvbiBzdGF0cyBpbnRlcmZhY2UuIik7CiAKIHZhciBwYyA9IG51bGw7Cit2YXIgcmVzdWx0
OwordmFyIGxvY2FsOwogCi1mdW5jdGlvbiBzdGF0c0hhbmRsZXIoc3RhdHVzKQorZnVuY3Rpb24g
Z2V0VXNlck1lZGlhKGRpY3Rpb25hcnksIGNhbGxiYWNrKSB7CisgICAgdHJ5IHsKKyAgICAgICAg
bmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYShkaWN0aW9uYXJ5LCBjYWxsYmFjaywgZXJyb3Ip
OworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgnd2Via2l0R2V0VXNlck1l
ZGlhIHRocmV3IGV4Y2VwdGlvbiA6JyArIGUpOworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAg
ICB9Cit9CisKK2Z1bmN0aW9uIGVycm9yKCkgeworICAgIHRlc3RGYWlsZWQoJ1N0cmVhbSBnZW5l
cmF0aW9uIGZhaWxlZC4nKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworZnVuY3Rpb24gc3Rh
dHNIYW5kbGVyMShzdGF0dXMpCiB7Ci0gICAgdGVzdFBhc3NlZCgic3RhdHNIYW5kbGVyIHdhcyBj
YWxsZWQiKTsKKyAgICB0ZXN0UGFzc2VkKCJzdGF0c0hhbmRsZXIxIHdhcyBjYWxsZWQiKTsKICAg
ICBzaG91bGRCZU5vbk51bGwoJ3N0YXR1cycpOwogICAgIHJlc3VsdCA9IHN0YXR1cy5yZXN1bHQo
KTsKICAgICBzaG91bGRCZSgncmVzdWx0Lmxlbmd0aCcsICcwJyk7CisgICAgc2hvdWxkTm90VGhy
b3coJ2dldFVzZXJNZWRpYSh7YXVkaW86dHJ1ZSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbSknKTsK
K30KKworZnVuY3Rpb24gZ290U3RyZWFtKHMpIHsKKyAgICB0ZXN0UGFzc2VkKCdHb3QgYSBzdHJl
YW0uJyk7CisgICAgc3RyZWFtID0gczsKKworICAgIHBjLmFkZFN0cmVhbShzdHJlYW0pOworICAg
IHNob3VsZE5vdFRocm93KCdwYy5nZXRTdGF0cyhzdGF0c0hhbmRsZXIyKScpOworfQorCitmdW5j
dGlvbiBzdGF0c0hhbmRsZXIyKHN0YXR1cykKK3sKKyAgICB0ZXN0UGFzc2VkKCJzdGF0c0hhbmRs
ZXIyIHdhcyBjYWxsZWQiKTsKKyAgICByZXN1bHQgPSBzdGF0dXMucmVzdWx0KCk7CisgICAgc2hv
dWxkQmVHcmVhdGVyVGhhbk9yRXF1YWwoJ3Jlc3VsdC5sZW5ndGgnLCAnMicpOworICAgIGxvY2Fs
ID0gcmVzdWx0WzBdLmxvY2FsKCk7CisgICAgc2hvdWxkQmUoJ2xvY2FsLmxlbmd0aCcsICcxJyk7
CisgICAgc2hvdWxkQmUoJ2xvY2FsWzBdLnN0YXQoInR5cGUiKScsICciYXVkaW8iJyk7CiAgICAg
ZmluaXNoSlNUZXN0KCk7CiB9CiAKIHNob3VsZE5vdFRocm93KCdwYyA9IG5ldyB3ZWJraXRSVENQ
ZWVyQ29ubmVjdGlvbihudWxsKScpOwotc2hvdWxkTm90VGhyb3coJ3BjLmdldFN0YXRzKHN0YXRz
SGFuZGxlciknKTsKK3Nob3VsZE5vdFRocm93KCdwYy5nZXRTdGF0cyhzdGF0c0hhbmRsZXIxKScp
OwogCiB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CiB3aW5kb3cuc3VjY2Vzc2Z1bGx5UGFy
c2VkID0gdHJ1ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166676</attachid>
            <date>2012-10-02 05:25:24 -0700</date>
            <delta_ts>2012-10-02 22:01:54 -0700</delta_ts>
            <desc>Review comments addressed</desc>
            <filename>bug-98003-20121002142436.patch</filename>
            <type>text/plain</type>
            <size>33028</size>
            <attacher name="Harald Alvestrand">hta</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwMDA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAyMGYwMWEyNjc2MGQ2
NzY0YjY0OTBiNDJmMTg4NjU1NGY0NjU1NzE3Li5hNTg0YmVhZGFjNzFjNDQxNWVkZTNhZDM0YTcz
NzY2NTViZjUxNGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxMi0xMC0wMiAg
SGFyYWxkIEFsdmVzdHJhbmQgIDxodGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBBZGQgZGF0YSBw
YXNzaW5nIHRvIHRoZSBHZXRTdGF0cyBpbnRlcmZhY2Ugb2YgUlRDUGVlckNvbm5lY3Rpb24KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MDAzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBQbGF0Zm9ybS5n
eXBpOgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJSVENTdGF0c1JlcXVlc3QuaDoKKyAg
ICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJSVENTdGF0c1JlcXVlc3QpOgorICAgICAgICAq
IGNocm9taXVtL3B1YmxpYy9XZWJSVENTdGF0c1Jlc3BvbnNlLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViUlRDU3RhdHNSZXNwb25z
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJUQ1N0YXRzUmVzcG9uc2U6OldlYlJUQ1N0YXRzUmVz
cG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJSVENTdGF0c1Jlc3BvbnNlOjp+V2ViUlRDU3Rh
dHNSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJUQ1N0YXRzUmVzcG9uc2U6Om9wZXJh
dG9yPSk6CisKIDIwMTItMDktMjggIEhhcmFsZCBUdmVpdCBBbHZlc3RyYW5kICA8aGFyYWxkQGFs
dmVzdHJhbmQubm8+CiAKICAgICAgICAgSW1wbGVtZW50IHRoZSBHZXRTdGF0cyBpbnRlcmZhY2Ug
b24gUGVlckNvbm5lY3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0NDgxMzYyYzRlZjkxMTA1MzY3Njg1NmE2
MDU5NTlhYzljYTExYTk3Li4xYTE1YmQwODU5MTlkYzI3ZjQ0ZWI5ZjEzZDliMDkwZDE1MzZhMGU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjMgQEAKKzIwMTItMTAtMDIgIEhhcmFsZCBBbHZlc3Ry
YW5kICA8aHRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgQWRkIGRhdGEgcGFzc2luZyB0byB0aGUg
R2V0U3RhdHMgaW50ZXJmYWNlIG9mIFJUQ1BlZXJDb25uZWN0aW9uCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODAwMworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGFuIFJUQ1N0YXRzUmVzcG9uc2VC
YXNlIGludGVyZmFjZSB0byBwbGF0Zm9ybSwgYW5kIGxldCB0aGUKKyAgICAgICAgUlRDU3RhdHNS
ZXF1ZXN0SW1wbCBjbGFzcyBwcm9kdWNlIGFuIGltcGxlbWVudGF0aW9uIG9mIGl0IHRoYXQncyBy
ZXR1cm5lZAorICAgICAgICB0byBXZWJDb3JlLgorCisgICAgICAgIFRlc3RlZCBieSBleHRlbnNp
b24gb2YgdGhlIFJUQ1BlZXJDb25uZWN0aW9uLXN0YXRzLmh0bWwgdGVzdC4KKworICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDU3RhdHNFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJUQ1N0YXRzRWxlbWVudDo6YWRkU3RhdGlzdGljKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDU3RhdHNFbGVtZW50Lmg6CisgICAgICAg
IChSVENTdGF0c0VsZW1lbnQpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDU3Rh
dHNSZXBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpSVENT
dGF0c1JlcG9ydDo6YWRkRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpSVENTdGF0c1JlcG9y
dDo6YWRkU3RhdGlzdGljKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1N0YXRz
UmVwb3J0Lmg6CisgICAgICAgIChSVENTdGF0c1JlcG9ydCk6CisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENTdGF0c1JlcXVlc3RJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJU
Q1N0YXRzUmVxdWVzdEltcGw6OmNyZWF0ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6UlRDU3RhdHNSZXF1ZXN0SW1wbDo6cmVxdWVzdFN1Y2NlZWRlZCk6
CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENTdGF0c1JlcXVlc3RJbXBsLmg6Cisg
ICAgICAgIChSVENTdGF0c1JlcXVlc3RJbXBsKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ1N0YXRzUmVzcG9uc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDU3RhdHNSZXNw
b25zZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1N0YXRzUmVzcG9uc2U6OmFkZFJl
cG9ydCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1N0YXRzUmVz
cG9uc2U6OmFkZEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6UlRDU3RhdHNSZXNwb25zZTo6
YWRkU3RhdGlzdGljKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1N0YXRzUmVz
cG9uc2UuaDoKKyAgICAgICAgKFJUQ1N0YXRzUmVzcG9uc2UpOgorICAgICAgICAqIFdlYkNvcmUu
Z3lwaToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlJUQ1N0YXRzUmVx
dWVzdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJUQ1N0YXRzUmVxdWVzdDo6cmVzcG9uc2Up
OgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUlRDU3RhdHNSZXF1ZXN0
OjpyZXF1ZXN0U3VjY2VlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0
L1dlYlJUQ1N0YXRzUmVzcG9uc2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlJUQ1N0YXRzUmVzcG9uc2U6OldlYlJUQ1N0YXRzUmVzcG9uc2UpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJSVENTdGF0c1Jlc3BvbnNlOjphc3NpZ24pOgorICAgICAgICAo
V2ViS2l0OjpXZWJSVENTdGF0c1Jlc3BvbnNlOjpyZXNldCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlJUQ1N0YXRzUmVzcG9uc2U6Om9wZXJhdG9yIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpSVENT
dGF0c1Jlc3BvbnNlQmFzZT4pOgorICAgICAgICAoV2ViS2l0OjpXZWJSVENTdGF0c1Jlc3BvbnNl
OjphZGRSZXBvcnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJSVENTdGF0c1Jlc3BvbnNlOjphZGRF
bGVtZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUlRDU3RhdHNSZXNwb25zZTo6YWRkU3RhdGlz
dGljKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENTdGF0c1JlcXVlc3QuaDoK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUlRDU3RhdHNSZXF1ZXN0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENTdGF0c1Jlc3BvbnNlQmFzZS5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUlRDU3RhdHNSZXNwb25zZUJhc2UpOgorICAgICAg
ICAoV2ViQ29yZTo6UlRDU3RhdHNSZXNwb25zZUJhc2U6On5SVENTdGF0c1Jlc3BvbnNlQmFzZSk6
CisKIDIwMTItMTAtMDEgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29t
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMzAwMDQuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lwaSBiL1NvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9y
bS5neXBpCmluZGV4IGE2YzI0NTcxYTY3MDY2NDkxMDNiMGUyNGI0Mzg4YTA3ODQwYzhiOTcuLjY5
ZGU5MzczNGUyN2VjYTU4MjEwNGFmYTEyYzUxNWJjOTZiODcxNzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBpCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5n
eXBpCkBAIC0xMTIsNiArMTEyLDggQEAKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2Vi
UlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50LmgnLAogICAgICAgICAgICAgJ2Nocm9taXVt
L3B1YmxpYy9XZWJSVENTZXNzaW9uRGVzY3JpcHRpb24uaCcsCiAgICAgICAgICAgICAnY2hyb21p
dW0vcHVibGljL1dlYlJUQ1Nlc3Npb25EZXNjcmlwdGlvblJlcXVlc3QuaCcsCisgICAgICAgICAg
ICAnY2hyb21pdW0vcHVibGljL1dlYlJUQ1N0YXRzUmVxdWVzdC5oJywKKyAgICAgICAgICAgICdj
aHJvbWl1bS9wdWJsaWMvV2ViUlRDU3RhdHNSZXNwb25zZS5oJywKICAgICAgICAgICAgICdjaHJv
bWl1bS9wdWJsaWMvV2ViUlRDVm9pZFJlcXVlc3QuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0v
cHVibGljL1dlYlJlY3QuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlJlZmVy
cmVyUG9saWN5LmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1Ymxp
Yy9XZWJSVENTdGF0c1JlcXVlc3QuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMv
V2ViUlRDU3RhdHNSZXF1ZXN0LmgKaW5kZXggNGQ2OGMxMTUzNmZhNmE1OGI4ZjU5OGRmMzgzYzBl
ZmIxMjQ2YjlmMC4uZjlhZDIwNDcyNWFkZDUyZDAxN2QyZTg4YzFmMmM4Zjc2MTBiZjdlOCAxMDA2
NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJSVENTdGF0c1JlcXVl
c3QuaAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlJUQ1N0YXRzUmVx
dWVzdC5oCkBAIC00MSw2ICs0MSwyOSBAQCBjbGFzcyBSVENTdGF0c1JlcXVlc3Q7CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCitjbGFzcyBXZWJSVENTdGF0c1Jlc3BvbnNlOworCisvLyBUaGUgV2Vi
UlRDU3RhdHNSZXF1ZXN0IGNsYXNzIHJlcHJlc2VudHMgYSBKYXZhU2NyaXB0IGNhbGwgb24KKy8v
IFJUQ1BlZXJDb25uZWN0aW9uLmdldFN0YXRzKCkuIFRoZSB1c2VyIG9mIHRoaXMgQVBJIHdpbGwg
dXNlCisvLyB0aGUgY2FsbHMgb24gdGhpcyBjbGFzcyBhbmQgV2ViUlRDU3RhdHNSZXNwb25zZSB0
byBmaWxsIGluIHRoZQorLy8gZGF0YSB0aGF0IHdpbGwgYmUgcmV0dXJuZWQgdmlhIGEgY2FsbGJh
Y2sgdG8gdGhlIHVzZXIgaW4gYW4KKy8vIFJUQ1N0YXRzUmVzcG9uc2Ugc3RydWN0dXJlLgorLy8K
Ky8vIFRoZSB0eXBpY2FsIHVzYWdlIHBhdHRlcm4gaXM6CisvLyBXZWJSVENTdGF0c1JlcXVlc3Qg
cmVxdWVzdCA9IDxmcm9tIHNvbWV3aGVyZT4KKy8vIFdlYlJUQ1N0YXRzUmVzcG9uc2UgcmVzcG9u
c2UgPSByZXF1ZXN0LmNyZWF0ZVJlc3BvbnNlKCk7CisvLworLy8gRm9yIGVhY2ggaXRlbSBvbiB3
aGljaCBzdGF0aXN0aWNzIGFyZSBnb2luZyB0byBiZSByZXBvcnRlZDoKKy8vICAgc2l6ZV90IHJl
cG9ydF9pbmRleCA9IHJlc3BvbnNlLmFkZFJlcG9ydCgpOworLy8gICBBZGQgbG9jYWwgaW5mb3Jt
YXRpb246CisvLyAgIHNpemVfdCBlbGVtZW50X2luZGV4ID0gcmVzcG9uc2UuYWRkRWxlbWVudChy
ZXBvcnRfaW5kZXgsIHRydWUsIG5vd19pbl9tcygpKTsKKy8vICAgRm9yIGVhY2ggc3RhdGlzdGlj
IGJlaW5nIHJlcG9ydGVkIG9uOgorLy8gICAgIHJlc3BvbnNlLmFkZFN0YXRpc3RpYyhyZXBvcnRf
aW5kZXgsIHRydWUsIGVsZW1lbnRfaW5kZXgsCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJuYW1lIG9mIHN0YXRpc3RpYyIsICJzdGF0aXN0aWMgdmFsdWUiKTsgCisvLyAgIFJlbW90ZSBp
bmZvcm1hdGlvbiAodHlwaWNhbGx5IFJUQ1AtZGVyaXZlZCkgaXMgYWRkZWQgaW4gdGhlIHNhbWUg
d2F5LgorLy8gV2hlbiBmaW5pc2hlZCBhZGRpbmcgaW5mb3JtYXRpb246CisvLyByZXF1ZXN0LnJl
cXVlc3RTdWNjZWVkZWQocmVzcG9uc2UpOworCiBjbGFzcyBXZWJSVENTdGF0c1JlcXVlc3Qgewog
cHVibGljOgogICAgIFdlYlJUQ1N0YXRzUmVxdWVzdCgpIHsgfQpAQCAtNTcsNyArODAsOSBAQCBw
dWJsaWM6CiAKICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVzZXQoKTsKIAotICAgIFdFQktJVF9F
WFBPUlQgdm9pZCByZXF1ZXN0U3VjY2VlZGVkKCkgY29uc3Q7CisgICAgV0VCS0lUX0VYUE9SVCB2
b2lkIHJlcXVlc3RTdWNjZWVkZWQoY29uc3QgV2ViUlRDU3RhdHNSZXNwb25zZSYpIGNvbnN0Owor
CisgICAgV0VCS0lUX0VYUE9SVCBXZWJSVENTdGF0c1Jlc3BvbnNlIHJlc3BvbnNlKCkgY29uc3Q7
CiAKICNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KICAgICBXZWJSVENTdGF0c1JlcXVlc3QoY29u
c3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OlJUQ1N0YXRzUmVxdWVzdD4mKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViUlRDU3RhdHNSZXNwb25zZS5o
IGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJSVENTdGF0c1Jlc3BvbnNlLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZGEyNWUxYzg2N2IxOWRhZGI2Yjc4ZmVjYTFjYjdmYjE5OGFjZWMzOAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViUlRDU3Rh
dHNSZXNwb25zZS5oCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2Vi
UlRDU3RhdHNSZXNwb25zZV9oCisjZGVmaW5lIFdlYlJUQ1N0YXRzUmVzcG9uc2VfaAorCisjaW5j
bHVkZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2ViUHJpdmF0ZVB0ci5oIgorI2luY2x1ZGUg
IldlYlN0cmluZy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBSVENTdGF0c1Jlc3Bv
bnNlQmFzZTsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlJUQ1N0YXRzUmVz
cG9uc2UgeworcHVibGljOgorICAgIFdlYlJUQ1N0YXRzUmVzcG9uc2UoKSB7IH0KKyAgICBXZWJS
VENTdGF0c1Jlc3BvbnNlKGNvbnN0IFdlYlJUQ1N0YXRzUmVzcG9uc2UmIG90aGVyKSB7IGFzc2ln
bihvdGhlcik7IH0KKyAgICB+V2ViUlRDU3RhdHNSZXNwb25zZSgpIHsgcmVzZXQoKTsgfQorCisg
ICAgV2ViUlRDU3RhdHNSZXNwb25zZSYgb3BlcmF0b3I9KGNvbnN0IFdlYlJUQ1N0YXRzUmVzcG9u
c2UmIG90aGVyKQorICAgIHsKKyAgICAgICAgYXNzaWduKG90aGVyKTsKKyAgICAgICAgcmV0dXJu
ICp0aGlzOworICAgIH0KKworICAgIFdFQktJVF9FWFBPUlQgdm9pZCBhc3NpZ24oY29uc3QgV2Vi
UlRDU3RhdHNSZXNwb25zZSYpOworCisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHJlc2V0KCk7CisK
KyAgICBXRUJLSVRfRVhQT1JUIHNpemVfdCBhZGRSZXBvcnQoKTsKKyAgICBXRUJLSVRfRVhQT1JU
IHNpemVfdCBhZGRFbGVtZW50KHNpemVfdCByZXBvcnQsIGJvb2wgaXNMb2NhbCwgbG9uZyB0aW1l
c3RhbXApOworICAgIFdFQktJVF9FWFBPUlQgdm9pZCBhZGRTdGF0aXN0aWMoc2l6ZV90IHJlcG9y
dCwgYm9vbCBpc0xvY2FsLCBzaXplX3QgZWxlbWVudCwgV2ViU3RyaW5nIG5hbWUsIFdlYlN0cmlu
ZyB2YWx1ZSk7CisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICBXZWJSVENTdGF0c1Jl
c3BvbnNlKGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpSVENTdGF0c1Jlc3BvbnNlQmFz
ZT4mKTsKKworICAgIG9wZXJhdG9yIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpSVENTdGF0c1Jl
c3BvbnNlQmFzZT4oKSBjb25zdDsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIFdlYlByaXZhdGVQ
dHI8V2ViQ29yZTo6UlRDU3RhdHNSZXNwb25zZUJhc2U+IG1fcHJpdmF0ZTsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViUlRDU3RhdHNSZXNwb25zZV9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1N0YXRzRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1N0YXRzRWxlbWVu
dC5jcHAKaW5kZXggZTc4Y2MwYjU3NGY0NGI4YTVkNWYyYjkzYzA1MDhmNDU1YzExYzU3ZS4uNGEz
MzMxZmVlZWFiYTM4ODM2MDUyMThiNzUyNGJlYTliOGZlNzA1YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENTdGF0c0VsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDU3RhdHNFbGVtZW50LmNwcApAQCAt
NDcsNiArNDcsMTEgQEAgU3RyaW5nIFJUQ1N0YXRzRWxlbWVudDo6c3RhdChjb25zdCBTdHJpbmcm
IG5hbWUpIGNvbnN0CiAgICAgcmV0dXJuIG1fc3RhdHMuZ2V0KG5hbWUpOwogfQogCit2b2lkIFJU
Q1N0YXRzRWxlbWVudDo6YWRkU3RhdGlzdGljKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3Ry
aW5nJiB2YWx1ZSkKK3sKKyAgICBtX3N0YXRzLmFkZChuYW1lLCB2YWx1ZSk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1N0YXRzRWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENTdGF0c0VsZW1lbnQu
aAppbmRleCAwOWViZWQyZDU5ZjdhOGEyNDk0ZmQxOWVmNWI4MjBhNWYwMWFmYzA0Li43ZjhkMWJk
M2QzNzg4Yjk0MjU0MTA4OGViZjlkZWE3Y2UwOGI5NDUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1N0YXRzRWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDU3RhdHNFbGVtZW50LmgKQEAgLTM3LDYgKzM3
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJUQ1N0YXRzRWxlbWVudD4gY3Jl
YXRlKGxvbmcgdGltZXN0YW1wKTsKICAgICBsb25nIHRpbWVzdGFtcCgpIGNvbnN0IHsgcmV0dXJu
IG1fdGltZXN0YW1wOyB9CiAgICAgU3RyaW5nIHN0YXQoY29uc3QgU3RyaW5nJiBuYW1lKSBjb25z
dDsKKyAgICB2b2lkIGFkZFN0YXRpc3RpYyhjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmlu
ZyYgdmFsdWUpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFJUQ1N0YXRzRWxlbWVudChsb25n
IHRpbWVzdGFtcCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ1N0YXRzUmVwb3J0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDU3RhdHNSZXBvcnQuY3BwCmluZGV4IGQ5ODJkZDc4MzMyYjEyY2EyMmM1YzQ1NTI2MGQ5
MDM4Y2ZjNjE0MTguLjllOTA0OWE5MWE3YzUzMTBkOWFlOTk5ODU0OGFkMzRlNzlhMzY2N2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDU3RhdHNSZXBv
cnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDU3RhdHNS
ZXBvcnQuY3BwCkBAIC0zOSw2ICszOSwyOCBAQCBSVENTdGF0c1JlcG9ydDo6UlRDU3RhdHNSZXBv
cnQoKQogewogfQogCisKK2ludCBSVENTdGF0c1JlcG9ydDo6YWRkRWxlbWVudChib29sIGlzTG9j
YWwsIGxvbmcgdGltZXN0YW1wKQoreworICAgIGlmIChpc0xvY2FsKSB7CisgICAgICAgIG1fbG9j
YWwuYXBwZW5kKFJUQ1N0YXRzRWxlbWVudDo6Y3JlYXRlKHRpbWVzdGFtcCkpOworICAgICAgICBy
ZXR1cm4gbV9sb2NhbC5zaXplKCkgLSAxOworICAgIH0KKyAgICBtX3JlbW90ZS5hcHBlbmQoUlRD
U3RhdHNFbGVtZW50OjpjcmVhdGUodGltZXN0YW1wKSk7CisgICAgcmV0dXJuIG1fcmVtb3RlLnNp
emUoKSAtIDE7Cit9CisKK3ZvaWQgUlRDU3RhdHNSZXBvcnQ6OmFkZFN0YXRpc3RpYyhib29sIGlz
TG9jYWwsIHNpemVfdCBlbGVtZW50LCBTdHJpbmcgbmFtZSwgU3RyaW5nIHZhbHVlKQoreworICAg
IGlmIChpc0xvY2FsKSB7CisgICAgICAgIEFTU0VSVChlbGVtZW50ID49IDAgJiYgZWxlbWVudCA8
IG1fbG9jYWwuc2l6ZSgpKTsKKyAgICAgICAgbV9sb2NhbFtlbGVtZW50XS0+YWRkU3RhdGlzdGlj
KG5hbWUsIHZhbHVlKTsKKyAgICB9IGVsc2UgeworICAgICAgICBBU1NFUlQoZWxlbWVudCA+PSAw
ICYmIGVsZW1lbnQgPCBtX3JlbW90ZS5zaXplKCkpOworICAgICAgICBtX3JlbW90ZVtlbGVtZW50
XS0+YWRkU3RhdGlzdGljKG5hbWUsIHZhbHVlKTsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1N0YXRzUmVwb3J0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1N0YXRzUmVwb3J0LmgKaW5kZXggY2Iy
Y2YwMzlmODljN2E2YmU5MjVhOGY3YzNmZTMwOWVkOGI0YjcwMi4uZDc5YTkyYjQzZTM1MmI5MTJm
MWZiMzJhNWU1MzMwNDQwN2RjZDFjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENTdGF0c1JlcG9ydC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDU3RhdHNSZXBvcnQuaApAQCAtNDAsNiArNDAsOSBAQCBwdWJsaWM6
CiAgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxSVENTdGF0c0VsZW1lbnQ+ID4mIGxvY2FsKCkgY29u
c3QgeyByZXR1cm4gbV9sb2NhbDsgfQogICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8UlRDU3RhdHNF
bGVtZW50PiA+JiByZW1vdGUoKSBjb25zdCB7IHJldHVybiBtX3JlbW90ZTsgfQogCisgICAgaW50
IGFkZEVsZW1lbnQoYm9vbCBpc0xvY2FsLCBsb25nIHRpbWVzdGFtcCk7CisgICAgdm9pZCBhZGRT
dGF0aXN0aWMoYm9vbCBpc0xvY2FsLCBzaXplX3QgZWxlbWVudCwgU3RyaW5nIG5hbWUsIFN0cmlu
ZyB2YWx1ZSk7CisKIHByaXZhdGU6CiAgICAgUlRDU3RhdHNSZXBvcnQoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENTdGF0c1JlcXVlc3RJbXBs
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDU3RhdHNSZXF1ZXN0
SW1wbC5jcHAKaW5kZXggYWZkYjk3ZjY4YmJlYWVmZjAwM2ZjZWMxZTE0NTc2OTUxMWVlYjY4Zi4u
MDFlY2VhZDJmNGQ0NTdhNGIwZjVhZjZmOGMxMDliZWQwNTgwYmJhZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENTdGF0c1JlcXVlc3RJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1N0YXRzUmVxdWVzdElt
cGwuY3BwCkBAIC01MSwxMyArNTEsMTYgQEAgUlRDU3RhdHNSZXF1ZXN0SW1wbDo6flJUQ1N0YXRz
UmVxdWVzdEltcGwoKQogewogfQogCi12b2lkIFJUQ1N0YXRzUmVxdWVzdEltcGw6OnJlcXVlc3RT
dWNjZWVkZWQoKQorUGFzc1JlZlB0cjxSVENTdGF0c1Jlc3BvbnNlQmFzZT4gUlRDU3RhdHNSZXF1
ZXN0SW1wbDo6Y3JlYXRlUmVzcG9uc2UoKQoreworICAgIHJldHVybiBSVENTdGF0c1Jlc3BvbnNl
OjpjcmVhdGUoKTsKK30KKwordm9pZCBSVENTdGF0c1JlcXVlc3RJbXBsOjpyZXF1ZXN0U3VjY2Vl
ZGVkKFBhc3NSZWZQdHI8UlRDU3RhdHNSZXNwb25zZUJhc2U+IHJlc3BvbnNlKQogewogICAgIGlm
ICghbV9zdWNjZXNzQ2FsbGJhY2spCiAgICAgICAgIHJldHVybjsKLSAgICAvLyBGSVhNRTogRmls
bCBpbiBjb250ZW50IG9mIHN0YXRzIHBhcmFtZXRlci4KLSAgICBSZWZQdHI8UlRDU3RhdHNSZXNw
b25zZT4gc3RhdHMgPSBSVENTdGF0c1Jlc3BvbnNlOjpjcmVhdGUoKTsKLSAgICBtX3N1Y2Nlc3ND
YWxsYmFjay0+aGFuZGxlRXZlbnQoc3RhdHMuZ2V0KCkpOworICAgIG1fc3VjY2Vzc0NhbGxiYWNr
LT5oYW5kbGVFdmVudChzdGF0aWNfY2FzdDxSVENTdGF0c1Jlc3BvbnNlKj4ocmVzcG9uc2UuZ2V0
KCkpKTsKICAgICBjbGVhcigpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ1N0YXRzUmVxdWVzdEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDU3RhdHNSZXF1ZXN0SW1wbC5oCmluZGV4IDQ3NjYzYTdmMWIx
NGM1YTA3MWEwMmI5MzUzMjc0ZTNiZTdhYzFiYTUuLmJkYTE1NWVhYmYyNWVhMDA1N2Y3YzNlNjFh
ODAxYzAxYzI3YzA3NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDU3RhdHNSZXF1ZXN0SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDU3RhdHNSZXF1ZXN0SW1wbC5oCkBAIC0yOSw2ICsyOSw3IEBACiAKICNp
bmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKICNpbmNsdWRlICJSVENTdGF0c1JlcXVlc3QuaCIK
KyNpbmNsdWRlICJSVENTdGF0c1Jlc3BvbnNlLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgpAQCAtNDIsNyArNDMsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8
UlRDU3RhdHNSZXF1ZXN0SW1wbD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNz
UmVmUHRyPFJUQ1N0YXRzQ2FsbGJhY2s+KTsKICAgICB2aXJ0dWFsIH5SVENTdGF0c1JlcXVlc3RJ
bXBsKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFN1Y2NlZWRlZCgpOworICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxSVENTdGF0c1Jlc3BvbnNlQmFzZT4gY3JlYXRlUmVzcG9uc2UoKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFN1Y2NlZWRlZChQYXNzUmVmUHRyPFJUQ1N0YXRzUmVzcG9u
c2VCYXNlPik7CiAKICAgICAvLyBBY3RpdmVET01PYmplY3QKICAgICB2aXJ0dWFsIHZvaWQgc3Rv
cCgpIE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENTdGF0c1Jlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDU3RhdHNSZXNwb25zZS5jcHAKaW5kZXggZmY3OGYxMTAwNDMxZDdiZjE5ZDBkZjQ4
Yzk0YTkwMWRlOGFiMzcwNi4uZTA1ZGIyY2M5MTI2OGVhMzE4YjEzY2NhZjRlNDQ5ZDlmNDA2MTQ2
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENTdGF0
c1Jlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q1N0YXRzUmVzcG9uc2UuY3BwCkBAIC0zMywxMyArMzMsMzAgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogUGFzc1JlZlB0cjxSVENTdGF0c1Jlc3BvbnNlPiBSVENTdGF0c1Jlc3BvbnNlOjpjcmVhdGUo
KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgUlRDU3RhdHNSZXNwb25zZSgpKTsKLSAgICAv
LyBGSVhNRTogUGFzcyBhbiBSVENTdGF0c1JlcXVlc3QgYXJndW1lbnQgYW5kIHBvcHVsYXRlIGZy
b20gaXQuCiB9CiAKIFJUQ1N0YXRzUmVzcG9uc2U6OlJUQ1N0YXRzUmVzcG9uc2UoKQogewogfQog
CitpbnQgUlRDU3RhdHNSZXNwb25zZTo6YWRkUmVwb3J0KCkKK3sKKyAgICBtX3Jlc3VsdC5hcHBl
bmQoUlRDU3RhdHNSZXBvcnQ6OmNyZWF0ZSgpKTsKKyAgICByZXR1cm4gbV9yZXN1bHQuc2l6ZSgp
IC0gMTsKK30KKworaW50IFJUQ1N0YXRzUmVzcG9uc2U6OmFkZEVsZW1lbnQoc2l6ZV90IHJlcG9y
dCwgYm9vbCBpc0xvY2FsLCBsb25nIHRpbWVzdGFtcCkKK3sKKyAgICBBU1NFUlQocmVwb3J0ID49
IDAgJiYgcmVwb3J0IDwgbV9yZXN1bHQuc2l6ZSgpKTsKKyAgICByZXR1cm4gbV9yZXN1bHRbcmVw
b3J0XS0+YWRkRWxlbWVudChpc0xvY2FsLCB0aW1lc3RhbXApOworfQorCit2b2lkIFJUQ1N0YXRz
UmVzcG9uc2U6OmFkZFN0YXRpc3RpYyhzaXplX3QgcmVwb3J0LCBib29sIGlzTG9jYWwsIHNpemVf
dCBlbGVtZW50LCBTdHJpbmcgbmFtZSwgU3RyaW5nIHZhbHVlKQoreworICAgIEFTU0VSVChyZXBv
cnQgPj0gMCAmJiByZXBvcnQgPCBtX3Jlc3VsdC5zaXplKCkpOworICAgIHJldHVybiBtX3Jlc3Vs
dFtyZXBvcnRdLT5hZGRTdGF0aXN0aWMoaXNMb2NhbCwgZWxlbWVudCwgbmFtZSwgdmFsdWUpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RS
RUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENT
dGF0c1Jlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1N0
YXRzUmVzcG9uc2UuaAppbmRleCBjMmVjYzkwZWQ0YTZkOGE2ZThiNGE5MGMwYmNiMWI5N2U3MTc1
MTg3Li5lZTg1NjljZWQzN2FlZGQ3NWRiOTgwNWYwYjA4N2NhNDllY2ZhYTZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1N0YXRzUmVzcG9uc2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1N0YXRzUmVzcG9uc2Uu
aApAQCAtMzQsMTUgKzM0LDIwIEBACiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRl
ICJNZWRpYVN0cmVhbVRyYWNrLmgiCiAjaW5jbHVkZSAiUlRDU3RhdHNSZXBvcnQuaCIKKyNpbmNs
dWRlICJSVENTdGF0c1Jlc3BvbnNlQmFzZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNs
YXNzIFJUQ1N0YXRzUmVzcG9uc2UgOiBwdWJsaWMgUmVmQ291bnRlZDxSVENTdGF0c1Jlc3BvbnNl
PiB7CitjbGFzcyBSVENTdGF0c1Jlc3BvbnNlIDogcHVibGljIFJUQ1N0YXRzUmVzcG9uc2VCYXNl
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxSVENTdGF0c1Jlc3BvbnNlPiBjcmVh
dGUoKTsKIAogICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8UlRDU3RhdHNSZXBvcnQ+ID4mIHJlc3Vs
dCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzdWx0OyB9OwogCisgICAgdmlydHVhbCBpbnQgYWRkUmVw
b3J0KCk7CisgICAgdmlydHVhbCBpbnQgYWRkRWxlbWVudChzaXplX3QgcmVwb3J0LCBib29sIGlz
TG9jYWwsIGxvbmcgdGltZXN0YW1wKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkU3RhdGlzdGljKHNp
emVfdCByZXBvcnQsIGJvb2wgaXNMb2NhbCwgc2l6ZV90IGVsZW1lbnQsIFN0cmluZyBuYW1lLCBT
dHJpbmcgdmFsdWUpOworCiBwcml2YXRlOgogICAgIFJUQ1N0YXRzUmVzcG9uc2UoKTsKICAgICBW
ZWN0b3I8UmVmUHRyPFJUQ1N0YXRzUmVwb3J0PiA+IG1fcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmlu
ZGV4IDNiZTRlNmE4M2JmMjA5NzNkZGU1OTVkMjZmMmU0N2ViNGI3MDQxOTQuLmIyNzAwOTUzZDQ2
Nzk3NzE2MzA0MDEzNDQwYmY1MjExZThiNTNmMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTgzNzEs
NiArODM3MSw3IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJS
VENTZXNzaW9uRGVzY3JpcHRpb24uY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1
bS9zdXBwb3J0L1dlYlJUQ1Nlc3Npb25EZXNjcmlwdGlvblJlcXVlc3QuY3BwJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlJUQ1N0YXRzUmVxdWVzdC5jcHAnLAor
ICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViUlRDU3RhdHNSZXNwb25z
ZS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViUlRDVm9p
ZFJlcXVlc3QuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dl
YlNjcm9sbGJhclRoZW1lR2VvbWV0cnlOYXRpdmUuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9y
bS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNjcm9sbGJhclRoZW1lR2VvbWV0cnlOYXRpdmUuaCcsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlJU
Q1N0YXRzUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBw
b3J0L1dlYlJUQ1N0YXRzUmVxdWVzdC5jcHAKaW5kZXggZGY2NWFlNjcyYTBiZjE2NWMzYzJjNGFk
NjQ0NDhkMzhmNDVjMDVjYy4uMDgxMTNmMGZkYWY0ZTIxNGRiNzIyYTVkNDM5YWY0ZWY1NGFkZjM5
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9X
ZWJSVENTdGF0c1JlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL3N1cHBvcnQvV2ViUlRDU3RhdHNSZXF1ZXN0LmNwcApAQCAtMzMsOCArMzMsMTAgQEAKICNp
ZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCiAjaW5jbHVkZSA8cHVibGljL1dlYlJUQ1N0YXRzUmVx
dWVzdC5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJSVENTdGF0c1Jlc3BvbnNlLmg+CiAKICNpbmNs
dWRlICJSVENTdGF0c1JlcXVlc3QuaCIKKyNpbmNsdWRlICJSVENTdGF0c1Jlc3BvbnNlLmgiCiAj
aW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBA
IC01Niw5ICs1OCwxNCBAQCB2b2lkIFdlYlJUQ1N0YXRzUmVxdWVzdDo6cmVzZXQoKQogICAgIG1f
cHJpdmF0ZS5yZXNldCgpOwogfQogCi12b2lkIFdlYlJUQ1N0YXRzUmVxdWVzdDo6cmVxdWVzdFN1
Y2NlZWRlZCgpIGNvbnN0CitXZWJSVENTdGF0c1Jlc3BvbnNlIFdlYlJUQ1N0YXRzUmVxdWVzdDo6
cmVzcG9uc2UoKSBjb25zdAogewotICAgIG1fcHJpdmF0ZS0+cmVxdWVzdFN1Y2NlZWRlZCgpOwor
ICAgIHJldHVybiBXZWJSVENTdGF0c1Jlc3BvbnNlKG1fcHJpdmF0ZS0+Y3JlYXRlUmVzcG9uc2Uo
KSk7Cit9CisKK3ZvaWQgV2ViUlRDU3RhdHNSZXF1ZXN0OjpyZXF1ZXN0U3VjY2VlZGVkKGNvbnN0
IFdlYlJUQ1N0YXRzUmVzcG9uc2UmIHJlc3BvbnNlKSBjb25zdAoreworICAgIG1fcHJpdmF0ZS0+
cmVxdWVzdFN1Y2NlZWRlZChyZXNwb25zZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJS
VENTdGF0c1Jlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1
cHBvcnQvV2ViUlRDU3RhdHNSZXNwb25zZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDlkN2UxMDBhYmYwNjEy
ZTZiMzY1NjkzNTQ3YWI1YmRmNGU1NGIyNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViUlRDU3RhdHNSZXNwb25zZS5jcHAKQEAg
LTAsMCArMSw3NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYg
RU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgPHB1YmxpYy9XZWJSVENTdGF0c1Jlc3Bv
bnNlLmg+CisKKyNpbmNsdWRlICJSVENTdGF0c1Jlc3BvbnNlQmFzZS5oIgorI2luY2x1ZGUgPHd0
Zi9QYXNzT3duUHRyLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworV2ViUlRDU3RhdHNSZXNwb25zZTo6V2ViUlRDU3RhdHNSZXNwb25zZShjb25z
dCBQYXNzUmVmUHRyPFJUQ1N0YXRzUmVzcG9uc2VCYXNlPiYgcmVxdWVzdCkKKyAgICA6IG1fcHJp
dmF0ZShyZXF1ZXN0KQoreworfQorCit2b2lkIFdlYlJUQ1N0YXRzUmVzcG9uc2U6OmFzc2lnbihj
b25zdCBXZWJSVENTdGF0c1Jlc3BvbnNlJiBvdGhlcikKK3sKKyAgICBtX3ByaXZhdGUgPSBvdGhl
ci5tX3ByaXZhdGU7Cit9CisKK3ZvaWQgV2ViUlRDU3RhdHNSZXNwb25zZTo6cmVzZXQoKQorewor
ICAgIG1fcHJpdmF0ZS5yZXNldCgpOworfQorCitXZWJSVENTdGF0c1Jlc3BvbnNlOjpvcGVyYXRv
ciBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6UlRDU3RhdHNSZXNwb25zZUJhc2U+KCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9wcml2YXRlLmdldCgpOworfQorCitzaXplX3QgV2ViUlRDU3RhdHNS
ZXNwb25zZTo6YWRkUmVwb3J0KCkKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5hZGRSZXBvcnQo
KTsKK30KKworc2l6ZV90IFdlYlJUQ1N0YXRzUmVzcG9uc2U6OmFkZEVsZW1lbnQoc2l6ZV90IHJl
cG9ydCwgYm9vbCBpc0xvY2FsLCBsb25nIHRpbWVzdGFtcCkKK3sKKyAgICByZXR1cm4gbV9wcml2
YXRlLT5hZGRFbGVtZW50KHJlcG9ydCwgaXNMb2NhbCwgdGltZXN0YW1wKTsKK30KKwordm9pZCBX
ZWJSVENTdGF0c1Jlc3BvbnNlOjphZGRTdGF0aXN0aWMoc2l6ZV90IHJlcG9ydCwgYm9vbCBpc0xv
Y2FsLCBzaXplX3QgZWxlbWVudCwgV2ViU3RyaW5nIG5hbWUsIFdlYlN0cmluZyB2YWx1ZSkKK3sK
KyAgICBtX3ByaXZhdGUtPmFkZFN0YXRpc3RpYyhyZXBvcnQsIGlzTG9jYWwsIGVsZW1lbnQsIG5h
bWUsIHZhbHVlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFC
TEUoTUVESUFfU1RSRUFNKQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9SVENTdGF0c1JlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL1JUQ1N0YXRzUmVxdWVzdC5oCmluZGV4IDZlY2U3NjQwZWE3NjU4Yzc0MzM4NmVk
NTRkNGZjYTRjNWQ5MWMxOGMuLjIyYzE5Yjg3ZjdjNzVjYTI3MjliYmUxZmQ3ZjIxZmExYzE0N2M5
NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ1N0
YXRzUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JU
Q1N0YXRzUmVxdWVzdC5oCkBAIC0zOSwxMSArMzksMTQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCitjbGFzcyBSVENTdGF0c1Jlc3BvbnNlQmFzZTsKKwogY2xhc3MgUlRDU3RhdHNSZXF1ZXN0
IDogcHVibGljIFJlZkNvdW50ZWQ8UlRDU3RhdHNSZXF1ZXN0PiB7CiBwdWJsaWM6CiAgICAgdmly
dHVhbCB+UlRDU3RhdHNSZXF1ZXN0KCkgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFN1
Y2NlZWRlZCgpID0gMDsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8UlRDU3RhdHNSZXNwb25zZUJh
c2U+IGNyZWF0ZVJlc3BvbnNlKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0U3VjY2Vl
ZGVkKFBhc3NSZWZQdHI8UlRDU3RhdHNSZXNwb25zZUJhc2U+KSA9IDA7CiAKIHByb3RlY3RlZDoK
ICAgICBSVENTdGF0c1JlcXVlc3QoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL1JUQ1N0YXRzUmVzcG9uc2VCYXNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENTdGF0c1Jlc3BvbnNlQmFzZS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlMGNmNTJiODVjZTI2YjZkZTI2ZGVkOWUzNDRhZmI0YmE0M2Y1ODIKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENTdGF0c1Jlc3BvbnNl
QmFzZS5oCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUlRDU3RhdHNS
ZXNwb25zZUJhc2VfaAorI2RlZmluZSBSVENTdGF0c1Jlc3BvbnNlQmFzZV9oCisKKyNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFJUQ1N0YXRzUmVzcG9uc2VCYXNlIDogcHVibGlj
IFJlZkNvdW50ZWQ8UlRDU3RhdHNSZXNwb25zZUJhc2U+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFs
IH5SVENTdGF0c1Jlc3BvbnNlQmFzZSgpIHsgfQorCisgICAgdmlydHVhbCBpbnQgYWRkUmVwb3J0
KCkgPSAwOworICAgIHZpcnR1YWwgaW50IGFkZEVsZW1lbnQoc2l6ZV90IHJlcG9ydCwgYm9vbCBp
c0xvY2FsLCBsb25nIHRpbWVzdGFtcCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhZGRTdGF0aXN0
aWMoc2l6ZV90IHJlcG9ydCwgYm9vbCBpc0xvY2FsLCBzaXplX3QgZWxlbWVudCwgU3RyaW5nIG5h
bWUsIFN0cmluZyB2YWx1ZSkgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2VuZGlmIC8vIFJUQ1N0YXRzUmVzcG9u
c2VCYXNlX2gKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCBjM2Q2YmI3MDA4NGRjNDlhMTQ5OGM5MTVjYzRhMWZmNjI5NWRmNzUwLi5mNDBkMDVhZTg3
NWNjYzE2ZDYxZDE5MGE4YzEyYzZmNTdhYTEwNDc3IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VM
b2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTItMTAtMDIgIEhh
cmFsZCBBbHZlc3RyYW5kICA8aHRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgQWRkIGRhdGEgcGFz
c2luZyB0byB0aGUgR2V0U3RhdHMgaW50ZXJmYWNlIG9mIFJUQ1BlZXJDb25uZWN0aW9uCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODAwMworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5jcHA6CisgICAgICAg
IChSVENTdGF0c1JlcXVlc3RTdWNjZWVkZWRUYXNrOjpSVENTdGF0c1JlcXVlc3RTdWNjZWVkZWRU
YXNrKToKKyAgICAgICAgKE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI6Ok1vY2tXZWJS
VENQZWVyQ29ubmVjdGlvbkhhbmRsZXIpOgorICAgICAgICAoTW9ja1dlYlJUQ1BlZXJDb25uZWN0
aW9uSGFuZGxlcjo6YWRkU3RyZWFtKToKKyAgICAgICAgKE1vY2tXZWJSVENQZWVyQ29ubmVjdGlv
bkhhbmRsZXI6OnJlbW92ZVN0cmVhbSk6CisgICAgICAgIChNb2NrV2ViUlRDUGVlckNvbm5lY3Rp
b25IYW5kbGVyOjpnZXRTdGF0cyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5oOgorICAgICAgICAoTW9ja1dlYlJUQ1Bl
ZXJDb25uZWN0aW9uSGFuZGxlcik6CisKIDIwMTItMDktMzAgIFRhaWp1IFRzdWlraSAgPHR6aWtA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIEFkZGluZyBteXNlbGYgYXMgYSBj
b21taXR0ZXIuCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2Nr
V2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL01vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuY3BwCmluZGV4IGE3MDJjOGIz
YjU2YWRkNTg3NzExYWNmYzc4NjUyMmYxNzEzZWY5ZTAuLjYyNmMzNDI0MTI5ZDJiOTdmYjVlNWY4
YWUwZGIzNmQzZjFmZDIzZmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL01vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuY3BwCkBA
IC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSA8cHVibGljL1dlYlJUQ1Nlc3Npb25EZXNjcmlwdGlv
bi5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJSVENTZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0Lmg+
CiAjaW5jbHVkZSA8cHVibGljL1dlYlJUQ1N0YXRzUmVxdWVzdC5oPgorI2luY2x1ZGUgPHB1Ymxp
Yy9XZWJSVENTdGF0c1Jlc3BvbnNlLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlJUQ1ZvaWRSZXF1
ZXN0Lmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlN0cmluZy5oPgogI2luY2x1ZGUgPHB1YmxpYy9X
ZWJWZWN0b3IuaD4KQEAgLTgzLDE5ICs4NCwyMSBAQCBwcml2YXRlOgogCiBjbGFzcyBSVENTdGF0
c1JlcXVlc3RTdWNjZWVkZWRUYXNrIDogcHVibGljIE1ldGhvZFRhc2s8TW9ja1dlYlJUQ1BlZXJD
b25uZWN0aW9uSGFuZGxlcj4gewogcHVibGljOgotICAgIFJUQ1N0YXRzUmVxdWVzdFN1Y2NlZWRl
ZFRhc2soTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlciogb2JqZWN0LCBjb25zdCBXZWJL
aXQ6OldlYlJUQ1N0YXRzUmVxdWVzdCYgcmVxdWVzdCkKKyAgICBSVENTdGF0c1JlcXVlc3RTdWNj
ZWVkZWRUYXNrKE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIqIG9iamVjdCwgY29uc3Qg
V2ViS2l0OjpXZWJSVENTdGF0c1JlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYktpdDo6V2ViUlRD
U3RhdHNSZXNwb25zZSYgcmVzcG9uc2UpCiAgICAgICAgIDogTWV0aG9kVGFzazxNb2NrV2ViUlRD
UGVlckNvbm5lY3Rpb25IYW5kbGVyPihvYmplY3QpCiAgICAgICAgICwgbV9yZXF1ZXN0KHJlcXVl
c3QpCisgICAgICAgICwgbV9yZXNwb25zZShyZXNwb25zZSkKICAgICB7CiAgICAgfQogCiAgICAg
dmlydHVhbCB2b2lkIHJ1bklmVmFsaWQoKSBPVkVSUklERQogICAgIHsKLSAgICAgICAgbV9yZXF1
ZXN0LnJlcXVlc3RTdWNjZWVkZWQoKTsKKyAgICAgICAgbV9yZXF1ZXN0LnJlcXVlc3RTdWNjZWVk
ZWQobV9yZXNwb25zZSk7CiAgICAgfQogCiBwcml2YXRlOgogICAgIFdlYktpdDo6V2ViUlRDU3Rh
dHNSZXF1ZXN0IG1fcmVxdWVzdDsKKyAgICBXZWJLaXQ6OldlYlJUQ1N0YXRzUmVzcG9uc2UgbV9y
ZXNwb25zZTsKIH07CiAKIGNsYXNzIFJUQ1ZvaWRSZXF1ZXN0VGFzayA6IHB1YmxpYyBNZXRob2RU
YXNrPE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI+IHsKQEAgLTEyNCw2ICsxMjcsNyBA
QCBwcml2YXRlOgogCiBNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyOjpNb2NrV2ViUlRD
UGVlckNvbm5lY3Rpb25IYW5kbGVyKFdlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudCog
Y2xpZW50KQogICAgIDogbV9jbGllbnQoY2xpZW50KQorICAgICwgbV9zdHJlYW1Db3VudCgwKQog
ewogfQogCkBAIC0xOTUsNiArMTk5LDcgQEAgYm9vbCBNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25I
YW5kbGVyOjphZGRJQ0VDYW5kaWRhdGUoY29uc3QgV2ViUlRDSUNFQ2FuZGlkYXRlJgogCiBib29s
IE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI6OmFkZFN0cmVhbShjb25zdCBXZWJNZWRp
YVN0cmVhbURlc2NyaXB0b3ImIHN0cmVhbSwgY29uc3QgV2ViTWVkaWFDb25zdHJhaW50cyYpCiB7
CisgICAgbV9zdHJlYW1Db3VudCArPSAxOwogICAgIG1fY2xpZW50LT5kaWRBZGRSZW1vdGVTdHJl
YW0oc3RyZWFtKTsKICAgICBtX2NsaWVudC0+bmVnb3RpYXRpb25OZWVkZWQoKTsKICAgICByZXR1
cm4gdHJ1ZTsKQEAgLTIwMiwxNiArMjA3LDI1IEBAIGJvb2wgTW9ja1dlYlJUQ1BlZXJDb25uZWN0
aW9uSGFuZGxlcjo6YWRkU3RyZWFtKGNvbnN0IFdlYk1lZGlhU3RyZWFtRGVzY3JpcHRvciYKIAog
dm9pZCBNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyOjpyZW1vdmVTdHJlYW0oY29uc3Qg
V2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yJiBzdHJlYW0pCiB7CisgICAgbV9zdHJlYW1Db3VudCAt
PSAxOwogICAgIG1fY2xpZW50LT5kaWRSZW1vdmVSZW1vdGVTdHJlYW0oc3RyZWFtKTsKICAgICBt
X2NsaWVudC0+bmVnb3RpYXRpb25OZWVkZWQoKTsKIH0KIAogdm9pZCBNb2NrV2ViUlRDUGVlckNv
bm5lY3Rpb25IYW5kbGVyOjpnZXRTdGF0cyhjb25zdCBXZWJSVENTdGF0c1JlcXVlc3QmIHJlcXVl
c3QpCiB7Ci0gICAgcG9zdFRhc2sobmV3IFJUQ1N0YXRzUmVxdWVzdFN1Y2NlZWRlZFRhc2sodGhp
cywgcmVxdWVzdCkpOworICAgIFdlYlJUQ1N0YXRzUmVzcG9uc2UgcmVzcG9uc2UgPSByZXF1ZXN0
LnJlc3BvbnNlKCk7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX3N0cmVhbUNvdW50OyArK2kp
IHsKKyAgICAgICAgaW50IHJlcGlkeCA9IHJlc3BvbnNlLmFkZFJlcG9ydCgpOworICAgICAgICBp
bnQgZWxlbWVudGlkeCA9IHJlc3BvbnNlLmFkZEVsZW1lbnQocmVwaWR4LCB0cnVlLCAxMjM0NSk7
CisgICAgICAgIHJlc3BvbnNlLmFkZFN0YXRpc3RpYyhyZXBpZHgsIHRydWUsIGVsZW1lbnRpZHgs
ICJ0eXBlIiwgImF1ZGlvIik7CisgICAgICAgIHJlcGlkeCA9IHJlc3BvbnNlLmFkZFJlcG9ydCgp
OworICAgICAgICBlbGVtZW50aWR4ID0gcmVzcG9uc2UuYWRkRWxlbWVudChyZXBpZHgsIHRydWUs
IDEyMzQ1KTsKKyAgICAgICAgcmVzcG9uc2UuYWRkU3RhdGlzdGljKHJlcGlkeCwgdHJ1ZSwgZWxl
bWVudGlkeCwgInR5cGUiLCAidmlkZW8iKTsKKyAgICB9CisgICAgcG9zdFRhc2sobmV3IFJUQ1N0
YXRzUmVxdWVzdFN1Y2NlZWRlZFRhc2sodGhpcywgcmVxdWVzdCwgcmVzcG9uc2UpKTsKIH0KIAot
CiB2b2lkIE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI6OnN0b3AoKQogewogfQpkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlJUQ1BlZXJDb25u
ZWN0aW9uSGFuZGxlci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlJU
Q1BlZXJDb25uZWN0aW9uSGFuZGxlci5oCmluZGV4IDhhYTMzNmUxNGY5YzMwYmUwMWIwZWVjNDVk
OWUxNzFlMjBmN2QxNDUuLjQzZDA4N2UzNWNhYzZmMzMwMDcwMzNhMjY2NmNkNjgzMTVlMWRhNjIg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJSVENQZWVy
Q29ubmVjdGlvbkhhbmRsZXIuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9N
b2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmgKQEAgLTcyLDYgKzcyLDcgQEAgcHJpdmF0
ZToKICAgICBUYXNrTGlzdCBtX3Rhc2tMaXN0OwogICAgIFdlYktpdDo6V2ViUlRDU2Vzc2lvbkRl
c2NyaXB0aW9uIG1fbG9jYWxEZXNjcmlwdGlvbjsKICAgICBXZWJLaXQ6OldlYlJUQ1Nlc3Npb25E
ZXNjcmlwdGlvbiBtX3JlbW90ZURlc2NyaXB0aW9uOworICAgIGludCBtX3N0cmVhbUNvdW50Owog
fTsKIAogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZWE3ODMzYzVmODE2
YWFhNWU0ZTUwY2YzZjdkZThiM2UyMDFhYzRjNi4uM2Q1MGFkMTRlYjY3NDU4MDE5OWFiNjUxMjkx
MjViYmUxOWVjMDMzZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEyLTEwLTAyICBIYXJhbGQg
QWx2ZXN0cmFuZCAgPGh0YUBnb29nbGUuY29tPgorCisgICAgICAgIEFkZCBkYXRhIHBhc3Npbmcg
dG8gdGhlIEdldFN0YXRzIGludGVyZmFjZSBvZiBSVENQZWVyQ29ubmVjdGlvbgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTgwMDMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0v
UlRDUGVlckNvbm5lY3Rpb24tc3RhdHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvbWVk
aWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24tc3RhdHMuaHRtbDoKKwogMjAxMi0xMC0wMSAgU2hl
cmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCwgcm9sbGluZyBvdXQgcjEzMDAwNC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
bWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24tc3RhdHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1zdGF0cy1leHBlY3RlZC50
eHQKaW5kZXggZmZlMzM2ZThhMjNhZjQyYTljMGVlYjNlZjE5NDU3MzQ4ZWNlMDllZi4uOTljZDhm
OWYxMWY3MGJmMWJkMThhYWY2NmRhMTIzYjZiOGI0N2M4YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1zdGF0cy1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1zdGF0
cy1leHBlY3RlZC50eHQKQEAgLTQsMTAgKzQsMTcgQEAgT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUK
IAogCiBQQVNTIHBjID0gbmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKG51bGwpIGRpZCBub3Qg
dGhyb3cgZXhjZXB0aW9uLgotUEFTUyBwYy5nZXRTdGF0cyhzdGF0c0hhbmRsZXIpIGRpZCBub3Qg
dGhyb3cgZXhjZXB0aW9uLgotUEFTUyBzdGF0c0hhbmRsZXIgd2FzIGNhbGxlZAorUEFTUyBwYy5n
ZXRTdGF0cyhzdGF0c0hhbmRsZXIxKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1Mgc3Rh
dHNIYW5kbGVyMSB3YXMgY2FsbGVkCiBQQVNTIHN0YXR1cyBpcyBub24tbnVsbC4KIFBBU1MgcmVz
dWx0Lmxlbmd0aCBpcyAwCitQQVNTIGdldFVzZXJNZWRpYSh7YXVkaW86dHJ1ZSwgdmlkZW86dHJ1
ZX0sIGdvdFN0cmVhbSkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIEdvdCBhIHN0cmVh
bS4KK1BBU1MgcGMuZ2V0U3RhdHMoc3RhdHNIYW5kbGVyMikgZGlkIG5vdCB0aHJvdyBleGNlcHRp
b24uCitQQVNTIHN0YXRzSGFuZGxlcjIgd2FzIGNhbGxlZAorUEFTUyByZXN1bHQubGVuZ3RoIGlz
ID49IDIKK1BBU1MgbG9jYWwubGVuZ3RoIGlzIDEKK1BBU1MgbG9jYWxbMF0uc3RhdCgidHlwZSIp
IGlzICJhdWRpbyIKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01Q
TEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29u
bmVjdGlvbi1zdGF0cy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVy
Q29ubmVjdGlvbi1zdGF0cy5odG1sCmluZGV4IDk2NzVjYTM5M2MyMGM2MzdjY2M2MmQ5YWNlZTAx
NjQ2M2VhMzcxOTEuLjU5ODViN2FlZmRjODA4NjE2MDJlOWQxNzNmZTI4ODA5N2Y0MWM5MzcgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24t
c3RhdHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25u
ZWN0aW9uLXN0YXRzLmh0bWwKQEAgLTgsMTggKzgsNTMgQEAKIGRlc2NyaXB0aW9uKCJUZXN0cyB0
aGUgUlRDUGVlckNvbm5lY3Rpb24gc3RhdHMgaW50ZXJmYWNlLiIpOwogCiB2YXIgcGMgPSBudWxs
OwordmFyIHJlc3VsdDsKK3ZhciBsb2NhbDsKIAotZnVuY3Rpb24gc3RhdHNIYW5kbGVyKHN0YXR1
cykKK2Z1bmN0aW9uIGdldFVzZXJNZWRpYShkaWN0aW9uYXJ5LCBjYWxsYmFjaykgeworICAgIHRy
eSB7CisgICAgICAgIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoZGljdGlvbmFyeSwgY2Fs
bGJhY2ssIGVycm9yKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIHRlc3RGYWlsZWQoJ3dl
YmtpdEdldFVzZXJNZWRpYSB0aHJldyBleGNlcHRpb24gOicgKyBlKTsKKyAgICAgICAgZmluaXNo
SlNUZXN0KCk7CisgICAgfQorfQorCitmdW5jdGlvbiBlcnJvcigpIHsKKyAgICB0ZXN0RmFpbGVk
KCdTdHJlYW0gZ2VuZXJhdGlvbiBmYWlsZWQuJyk7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisK
K2Z1bmN0aW9uIHN0YXRzSGFuZGxlcjEoc3RhdHVzKQogewotICAgIHRlc3RQYXNzZWQoInN0YXRz
SGFuZGxlciB3YXMgY2FsbGVkIik7CisgICAgdGVzdFBhc3NlZCgic3RhdHNIYW5kbGVyMSB3YXMg
Y2FsbGVkIik7CiAgICAgc2hvdWxkQmVOb25OdWxsKCdzdGF0dXMnKTsKICAgICByZXN1bHQgPSBz
dGF0dXMucmVzdWx0KCk7CiAgICAgc2hvdWxkQmUoJ3Jlc3VsdC5sZW5ndGgnLCAnMCcpOworICAg
IHNob3VsZE5vdFRocm93KCdnZXRVc2VyTWVkaWEoe2F1ZGlvOnRydWUsIHZpZGVvOnRydWV9LCBn
b3RTdHJlYW0pJyk7Cit9CisKK2Z1bmN0aW9uIGdvdFN0cmVhbShzKSB7CisgICAgdGVzdFBhc3Nl
ZCgnR290IGEgc3RyZWFtLicpOworICAgIHN0cmVhbSA9IHM7CisKKyAgICBwYy5hZGRTdHJlYW0o
c3RyZWFtKTsKKyAgICBzaG91bGROb3RUaHJvdygncGMuZ2V0U3RhdHMoc3RhdHNIYW5kbGVyMikn
KTsKK30KKworZnVuY3Rpb24gc3RhdHNIYW5kbGVyMihzdGF0dXMpCit7CisgICAgdGVzdFBhc3Nl
ZCgic3RhdHNIYW5kbGVyMiB3YXMgY2FsbGVkIik7CisgICAgcmVzdWx0ID0gc3RhdHVzLnJlc3Vs
dCgpOworICAgIHNob3VsZEJlR3JlYXRlclRoYW5PckVxdWFsKCdyZXN1bHQubGVuZ3RoJywgJzIn
KTsKKyAgICBsb2NhbCA9IHJlc3VsdFswXS5sb2NhbCgpOworICAgIHNob3VsZEJlKCdsb2NhbC5s
ZW5ndGgnLCAnMScpOworICAgIHNob3VsZEJlKCdsb2NhbFswXS5zdGF0KCJ0eXBlIiknLCAnImF1
ZGlvIicpOwogICAgIGZpbmlzaEpTVGVzdCgpOwogfQogCiBzaG91bGROb3RUaHJvdygncGMgPSBu
ZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24obnVsbCknKTsKLXNob3VsZE5vdFRocm93KCdwYy5n
ZXRTdGF0cyhzdGF0c0hhbmRsZXIpJyk7CitzaG91bGROb3RUaHJvdygncGMuZ2V0U3RhdHMoc3Rh
dHNIYW5kbGVyMSknKTsKIAogd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwogd2luZG93LnN1
Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cg==
</data>
<flag name="review"
          id="179089"
          type_id="1"
          status="+"
          setter="abarth"
    />
    <flag name="commit-queue"
          id="179090"
          type_id="3"
          status="-"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166820</attachid>
            <date>2012-10-03 00:34:48 -0700</date>
            <delta_ts>2012-10-03 01:01:15 -0700</delta_ts>
            <desc>Adam Barth review comments addressed</desc>
            <filename>bug-98003-20121003093359.patch</filename>
            <type>text/plain</type>
            <size>33132</size>
            <attacher name="Harald Alvestrand">hta</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwMDA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAyMGYwMWEyNjc2MGQ2
NzY0YjY0OTBiNDJmMTg4NjU1NGY0NjU1NzE3Li5hNTg0YmVhZGFjNzFjNDQxNWVkZTNhZDM0YTcz
NzY2NTViZjUxNGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxMi0xMC0wMiAg
SGFyYWxkIEFsdmVzdHJhbmQgIDxodGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBBZGQgZGF0YSBw
YXNzaW5nIHRvIHRoZSBHZXRTdGF0cyBpbnRlcmZhY2Ugb2YgUlRDUGVlckNvbm5lY3Rpb24KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MDAzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBQbGF0Zm9ybS5n
eXBpOgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJSVENTdGF0c1JlcXVlc3QuaDoKKyAg
ICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJSVENTdGF0c1JlcXVlc3QpOgorICAgICAgICAq
IGNocm9taXVtL3B1YmxpYy9XZWJSVENTdGF0c1Jlc3BvbnNlLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViUlRDU3RhdHNSZXNwb25z
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJUQ1N0YXRzUmVzcG9uc2U6OldlYlJUQ1N0YXRzUmVz
cG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJSVENTdGF0c1Jlc3BvbnNlOjp+V2ViUlRDU3Rh
dHNSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJUQ1N0YXRzUmVzcG9uc2U6Om9wZXJh
dG9yPSk6CisKIDIwMTItMDktMjggIEhhcmFsZCBUdmVpdCBBbHZlc3RyYW5kICA8aGFyYWxkQGFs
dmVzdHJhbmQubm8+CiAKICAgICAgICAgSW1wbGVtZW50IHRoZSBHZXRTdGF0cyBpbnRlcmZhY2Ug
b24gUGVlckNvbm5lY3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0NDgxMzYyYzRlZjkxMTA1MzY3Njg1NmE2
MDU5NTlhYzljYTExYTk3Li4xYTE1YmQwODU5MTlkYzI3ZjQ0ZWI5ZjEzZDliMDkwZDE1MzZhMGU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjMgQEAKKzIwMTItMTAtMDIgIEhhcmFsZCBBbHZlc3Ry
YW5kICA8aHRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgQWRkIGRhdGEgcGFzc2luZyB0byB0aGUg
R2V0U3RhdHMgaW50ZXJmYWNlIG9mIFJUQ1BlZXJDb25uZWN0aW9uCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODAwMworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGFuIFJUQ1N0YXRzUmVzcG9uc2VC
YXNlIGludGVyZmFjZSB0byBwbGF0Zm9ybSwgYW5kIGxldCB0aGUKKyAgICAgICAgUlRDU3RhdHNS
ZXF1ZXN0SW1wbCBjbGFzcyBwcm9kdWNlIGFuIGltcGxlbWVudGF0aW9uIG9mIGl0IHRoYXQncyBy
ZXR1cm5lZAorICAgICAgICB0byBXZWJDb3JlLgorCisgICAgICAgIFRlc3RlZCBieSBleHRlbnNp
b24gb2YgdGhlIFJUQ1BlZXJDb25uZWN0aW9uLXN0YXRzLmh0bWwgdGVzdC4KKworICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDU3RhdHNFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJUQ1N0YXRzRWxlbWVudDo6YWRkU3RhdGlzdGljKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDU3RhdHNFbGVtZW50Lmg6CisgICAgICAg
IChSVENTdGF0c0VsZW1lbnQpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDU3Rh
dHNSZXBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpSVENT
dGF0c1JlcG9ydDo6YWRkRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpSVENTdGF0c1JlcG9y
dDo6YWRkU3RhdGlzdGljKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1N0YXRz
UmVwb3J0Lmg6CisgICAgICAgIChSVENTdGF0c1JlcG9ydCk6CisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENTdGF0c1JlcXVlc3RJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJU
Q1N0YXRzUmVxdWVzdEltcGw6OmNyZWF0ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6UlRDU3RhdHNSZXF1ZXN0SW1wbDo6cmVxdWVzdFN1Y2NlZWRlZCk6
CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENTdGF0c1JlcXVlc3RJbXBsLmg6Cisg
ICAgICAgIChSVENTdGF0c1JlcXVlc3RJbXBsKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ1N0YXRzUmVzcG9uc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDU3RhdHNSZXNw
b25zZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1N0YXRzUmVzcG9uc2U6OmFkZFJl
cG9ydCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1N0YXRzUmVz
cG9uc2U6OmFkZEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6UlRDU3RhdHNSZXNwb25zZTo6
YWRkU3RhdGlzdGljKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1N0YXRzUmVz
cG9uc2UuaDoKKyAgICAgICAgKFJUQ1N0YXRzUmVzcG9uc2UpOgorICAgICAgICAqIFdlYkNvcmUu
Z3lwaToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlJUQ1N0YXRzUmVx
dWVzdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJUQ1N0YXRzUmVxdWVzdDo6cmVzcG9uc2Up
OgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUlRDU3RhdHNSZXF1ZXN0
OjpyZXF1ZXN0U3VjY2VlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0
L1dlYlJUQ1N0YXRzUmVzcG9uc2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlJUQ1N0YXRzUmVzcG9uc2U6OldlYlJUQ1N0YXRzUmVzcG9uc2UpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJSVENTdGF0c1Jlc3BvbnNlOjphc3NpZ24pOgorICAgICAgICAo
V2ViS2l0OjpXZWJSVENTdGF0c1Jlc3BvbnNlOjpyZXNldCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlJUQ1N0YXRzUmVzcG9uc2U6Om9wZXJhdG9yIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpSVENT
dGF0c1Jlc3BvbnNlQmFzZT4pOgorICAgICAgICAoV2ViS2l0OjpXZWJSVENTdGF0c1Jlc3BvbnNl
OjphZGRSZXBvcnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJSVENTdGF0c1Jlc3BvbnNlOjphZGRF
bGVtZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUlRDU3RhdHNSZXNwb25zZTo6YWRkU3RhdGlz
dGljKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENTdGF0c1JlcXVlc3QuaDoK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUlRDU3RhdHNSZXF1ZXN0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENTdGF0c1Jlc3BvbnNlQmFzZS5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUlRDU3RhdHNSZXNwb25zZUJhc2UpOgorICAgICAg
ICAoV2ViQ29yZTo6UlRDU3RhdHNSZXNwb25zZUJhc2U6On5SVENTdGF0c1Jlc3BvbnNlQmFzZSk6
CisKIDIwMTItMTAtMDEgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29t
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMzAwMDQuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lwaSBiL1NvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9y
bS5neXBpCmluZGV4IGE2YzI0NTcxYTY3MDY2NDkxMDNiMGUyNGI0Mzg4YTA3ODQwYzhiOTcuLjY5
ZGU5MzczNGUyN2VjYTU4MjEwNGFmYTEyYzUxNWJjOTZiODcxNzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBpCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5n
eXBpCkBAIC0xMTIsNiArMTEyLDggQEAKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2Vi
UlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50LmgnLAogICAgICAgICAgICAgJ2Nocm9taXVt
L3B1YmxpYy9XZWJSVENTZXNzaW9uRGVzY3JpcHRpb24uaCcsCiAgICAgICAgICAgICAnY2hyb21p
dW0vcHVibGljL1dlYlJUQ1Nlc3Npb25EZXNjcmlwdGlvblJlcXVlc3QuaCcsCisgICAgICAgICAg
ICAnY2hyb21pdW0vcHVibGljL1dlYlJUQ1N0YXRzUmVxdWVzdC5oJywKKyAgICAgICAgICAgICdj
aHJvbWl1bS9wdWJsaWMvV2ViUlRDU3RhdHNSZXNwb25zZS5oJywKICAgICAgICAgICAgICdjaHJv
bWl1bS9wdWJsaWMvV2ViUlRDVm9pZFJlcXVlc3QuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0v
cHVibGljL1dlYlJlY3QuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlJlZmVy
cmVyUG9saWN5LmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1Ymxp
Yy9XZWJSVENTdGF0c1JlcXVlc3QuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMv
V2ViUlRDU3RhdHNSZXF1ZXN0LmgKaW5kZXggNGQ2OGMxMTUzNmZhNmE1OGI4ZjU5OGRmMzgzYzBl
ZmIxMjQ2YjlmMC4uZTY3YmQxZjg3NzlmY2MwYzgyODY2NzBhOGQyM2UzZWYyNDA3MjcwOCAxMDA2
NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJSVENTdGF0c1JlcXVl
c3QuaAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlJUQ1N0YXRzUmVx
dWVzdC5oCkBAIC00MSw2ICs0MSwyOSBAQCBjbGFzcyBSVENTdGF0c1JlcXVlc3Q7CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCitjbGFzcyBXZWJSVENTdGF0c1Jlc3BvbnNlOworCisvLyBUaGUgV2Vi
UlRDU3RhdHNSZXF1ZXN0IGNsYXNzIHJlcHJlc2VudHMgYSBKYXZhU2NyaXB0IGNhbGwgb24KKy8v
IFJUQ1BlZXJDb25uZWN0aW9uLmdldFN0YXRzKCkuIFRoZSB1c2VyIG9mIHRoaXMgQVBJIHdpbGwg
dXNlCisvLyB0aGUgY2FsbHMgb24gdGhpcyBjbGFzcyBhbmQgV2ViUlRDU3RhdHNSZXNwb25zZSB0
byBmaWxsIGluIHRoZQorLy8gZGF0YSB0aGF0IHdpbGwgYmUgcmV0dXJuZWQgdmlhIGEgY2FsbGJh
Y2sgdG8gdGhlIHVzZXIgaW4gYW4KKy8vIFJUQ1N0YXRzUmVzcG9uc2Ugc3RydWN0dXJlLgorLy8K
Ky8vIFRoZSB0eXBpY2FsIHVzYWdlIHBhdHRlcm4gaXM6CisvLyBXZWJSVENTdGF0c1JlcXVlc3Qg
cmVxdWVzdCA9IDxmcm9tIHNvbWV3aGVyZT4KKy8vIFdlYlJUQ1N0YXRzUmVzcG9uc2UgcmVzcG9u
c2UgPSByZXF1ZXN0LmNyZWF0ZVJlc3BvbnNlKCk7CisvLworLy8gRm9yIGVhY2ggaXRlbSBvbiB3
aGljaCBzdGF0aXN0aWNzIGFyZSBnb2luZyB0byBiZSByZXBvcnRlZDoKKy8vICAgc2l6ZV90IHJl
cG9ydEluZGV4ID0gcmVzcG9uc2UuYWRkUmVwb3J0KCk7CisvLyAgIEFkZCBsb2NhbCBpbmZvcm1h
dGlvbjoKKy8vICAgc2l6ZV90IGVsZW1lbnRJbmRleCA9IHJlc3BvbnNlLmFkZEVsZW1lbnQocmVw
b3J0SW5kZXgsIHRydWUsIGRhdGVOb3coKSk7CisvLyAgIEZvciBlYWNoIHN0YXRpc3RpYyBiZWlu
ZyByZXBvcnRlZCBvbjoKKy8vICAgICByZXNwb25zZS5hZGRTdGF0aXN0aWMocmVwb3J0SW5kZXgs
IHRydWUsIGVsZW1lbnRJbmRleCwKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUg
b2Ygc3RhdGlzdGljIiwgInN0YXRpc3RpYyB2YWx1ZSIpOyAKKy8vICAgUmVtb3RlIGluZm9ybWF0
aW9uICh0eXBpY2FsbHkgUlRDUC1kZXJpdmVkKSBpcyBhZGRlZCBpbiB0aGUgc2FtZSB3YXkuCisv
LyBXaGVuIGZpbmlzaGVkIGFkZGluZyBpbmZvcm1hdGlvbjoKKy8vIHJlcXVlc3QucmVxdWVzdFN1
Y2NlZWRlZChyZXNwb25zZSk7CisKIGNsYXNzIFdlYlJUQ1N0YXRzUmVxdWVzdCB7CiBwdWJsaWM6
CiAgICAgV2ViUlRDU3RhdHNSZXF1ZXN0KCkgeyB9CkBAIC01Nyw3ICs4MCw5IEBAIHB1YmxpYzoK
IAogICAgIFdFQktJVF9FWFBPUlQgdm9pZCByZXNldCgpOwogCi0gICAgV0VCS0lUX0VYUE9SVCB2
b2lkIHJlcXVlc3RTdWNjZWVkZWQoKSBjb25zdDsKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVx
dWVzdFN1Y2NlZWRlZChjb25zdCBXZWJSVENTdGF0c1Jlc3BvbnNlJikgY29uc3Q7CisKKyAgICBX
RUJLSVRfRVhQT1JUIFdlYlJUQ1N0YXRzUmVzcG9uc2UgY3JlYXRlUmVzcG9uc2UoKSBjb25zdDsK
IAogI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgogICAgIFdlYlJUQ1N0YXRzUmVxdWVzdChjb25z
dCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6UlRDU3RhdHNSZXF1ZXN0PiYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJSVENTdGF0c1Jlc3BvbnNlLmgg
Yi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlJUQ1N0YXRzUmVzcG9uc2UuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5kYTI1ZTFjODY3YjE5ZGFkYjZiNzhmZWNhMWNiN2ZiMTk4YWNlYzM4Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJSVENTdGF0
c1Jlc3BvbnNlLmgKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJS
VENTdGF0c1Jlc3BvbnNlX2gKKyNkZWZpbmUgV2ViUlRDU3RhdHNSZXNwb25zZV9oCisKKyNpbmNs
dWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJQcml2YXRlUHRyLmgiCisjaW5jbHVkZSAi
V2ViU3RyaW5nLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFJUQ1N0YXRzUmVzcG9u
c2VCYXNlOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUlRDU3RhdHNSZXNw
b25zZSB7CitwdWJsaWM6CisgICAgV2ViUlRDU3RhdHNSZXNwb25zZSgpIHsgfQorICAgIFdlYlJU
Q1N0YXRzUmVzcG9uc2UoY29uc3QgV2ViUlRDU3RhdHNSZXNwb25zZSYgb3RoZXIpIHsgYXNzaWdu
KG90aGVyKTsgfQorICAgIH5XZWJSVENTdGF0c1Jlc3BvbnNlKCkgeyByZXNldCgpOyB9CisKKyAg
ICBXZWJSVENTdGF0c1Jlc3BvbnNlJiBvcGVyYXRvcj0oY29uc3QgV2ViUlRDU3RhdHNSZXNwb25z
ZSYgb3RoZXIpCisgICAgeworICAgICAgICBhc3NpZ24ob3RoZXIpOworICAgICAgICByZXR1cm4g
KnRoaXM7CisgICAgfQorCisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFzc2lnbihjb25zdCBXZWJS
VENTdGF0c1Jlc3BvbnNlJik7CisKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVzZXQoKTsKKwor
ICAgIFdFQktJVF9FWFBPUlQgc2l6ZV90IGFkZFJlcG9ydCgpOworICAgIFdFQktJVF9FWFBPUlQg
c2l6ZV90IGFkZEVsZW1lbnQoc2l6ZV90IHJlcG9ydCwgYm9vbCBpc0xvY2FsLCBsb25nIHRpbWVz
dGFtcCk7CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFkZFN0YXRpc3RpYyhzaXplX3QgcmVwb3J0
LCBib29sIGlzTG9jYWwsIHNpemVfdCBlbGVtZW50LCBXZWJTdHJpbmcgbmFtZSwgV2ViU3RyaW5n
IHZhbHVlKTsKKworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorICAgIFdlYlJUQ1N0YXRzUmVz
cG9uc2UoY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OlJUQ1N0YXRzUmVzcG9uc2VCYXNl
PiYpOworCisgICAgb3BlcmF0b3IgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OlJUQ1N0YXRzUmVz
cG9uc2VCYXNlPigpIGNvbnN0OworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgV2ViUHJpdmF0ZVB0
cjxXZWJDb3JlOjpSVENTdGF0c1Jlc3BvbnNlQmFzZT4gbV9wcml2YXRlOworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJSVENTdGF0c1Jlc3BvbnNlX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDU3RhdHNFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDU3RhdHNFbGVtZW50
LmNwcAppbmRleCBlNzhjYzBiNTc0ZjQ0YjhhNWQ1ZjJiOTNjMDUwOGY0NTVjMTFjNTdlLi40YTMz
MzFmZWVlYWJhMzg4MzYwNTIxOGI3NTI0YmVhOWI4ZmU3MDVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1N0YXRzRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENTdGF0c0VsZW1lbnQuY3BwCkBAIC00
Nyw2ICs0NywxMSBAQCBTdHJpbmcgUlRDU3RhdHNFbGVtZW50OjpzdGF0KGNvbnN0IFN0cmluZyYg
bmFtZSkgY29uc3QKICAgICByZXR1cm4gbV9zdGF0cy5nZXQobmFtZSk7CiB9CiAKK3ZvaWQgUlRD
U3RhdHNFbGVtZW50OjphZGRTdGF0aXN0aWMoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJp
bmcmIHZhbHVlKQoreworICAgIG1fc3RhdHMuYWRkKG5hbWUsIHZhbHVlKTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDU3RhdHNFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1N0YXRzRWxlbWVudC5o
CmluZGV4IDA5ZWJlZDJkNTlmN2E4YTI0OTRmZDE5ZWY1YjgyMGE1ZjAxYWZjMDQuLjdmOGQxYmQz
ZDM3ODhiOTQyNTQxMDg4ZWJmOWRlYTdjZTA4Yjk0NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDU3RhdHNFbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENTdGF0c0VsZW1lbnQuaApAQCAtMzcsNiArMzcs
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8UlRDU3RhdHNFbGVtZW50PiBjcmVh
dGUobG9uZyB0aW1lc3RhbXApOwogICAgIGxvbmcgdGltZXN0YW1wKCkgY29uc3QgeyByZXR1cm4g
bV90aW1lc3RhbXA7IH0KICAgICBTdHJpbmcgc3RhdChjb25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0
OworICAgIHZvaWQgYWRkU3RhdGlzdGljKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5n
JiB2YWx1ZSk7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgUlRDU3RhdHNFbGVtZW50KGxvbmcg
dGltZXN0YW1wKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDU3RhdHNSZXBvcnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENTdGF0c1JlcG9ydC5jcHAKaW5kZXggZDk4MmRkNzgzMzJiMTJjYTIyYzVjNDU1MjYwZDkw
MzhjZmM2MTQxOC4uNWU5NTA5NTg2YjhlY2U5ZDdhOTJkM2U1YTE5NTJkYmZkOWZjYzFmMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENTdGF0c1JlcG9y
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENTdGF0c1Jl
cG9ydC5jcHAKQEAgLTM5LDYgKzM5LDI3IEBAIFJUQ1N0YXRzUmVwb3J0OjpSVENTdGF0c1JlcG9y
dCgpCiB7CiB9CiAKK3NpemVfdCBSVENTdGF0c1JlcG9ydDo6YWRkRWxlbWVudChib29sIGlzTG9j
YWwsIGxvbmcgdGltZXN0YW1wKQoreworICAgIGlmIChpc0xvY2FsKSB7CisgICAgICAgIG1fbG9j
YWwuYXBwZW5kKFJUQ1N0YXRzRWxlbWVudDo6Y3JlYXRlKHRpbWVzdGFtcCkpOworICAgICAgICBy
ZXR1cm4gbV9sb2NhbC5zaXplKCkgLSAxOworICAgIH0KKyAgICBtX3JlbW90ZS5hcHBlbmQoUlRD
U3RhdHNFbGVtZW50OjpjcmVhdGUodGltZXN0YW1wKSk7CisgICAgcmV0dXJuIG1fcmVtb3RlLnNp
emUoKSAtIDE7Cit9CisKK3ZvaWQgUlRDU3RhdHNSZXBvcnQ6OmFkZFN0YXRpc3RpYyhib29sIGlz
TG9jYWwsIHNpemVfdCBlbGVtZW50LCBTdHJpbmcgbmFtZSwgU3RyaW5nIHZhbHVlKQoreworICAg
IGlmIChpc0xvY2FsKSB7CisgICAgICAgIEFTU0VSVChlbGVtZW50ID49IDAgJiYgZWxlbWVudCA8
IG1fbG9jYWwuc2l6ZSgpKTsKKyAgICAgICAgbV9sb2NhbFtlbGVtZW50XS0+YWRkU3RhdGlzdGlj
KG5hbWUsIHZhbHVlKTsKKyAgICB9IGVsc2UgeworICAgICAgICBBU1NFUlQoZWxlbWVudCA+PSAw
ICYmIGVsZW1lbnQgPCBtX3JlbW90ZS5zaXplKCkpOworICAgICAgICBtX3JlbW90ZVtlbGVtZW50
XS0+YWRkU3RhdGlzdGljKG5hbWUsIHZhbHVlKTsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1N0YXRzUmVwb3J0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1N0YXRzUmVwb3J0LmgKaW5kZXggY2Iy
Y2YwMzlmODljN2E2YmU5MjVhOGY3YzNmZTMwOWVkOGI0YjcwMi4uZWY3ZGNhY2E1N2Q4ZDEyOTc4
ZmEzOTkyNTg2MDJjOGRhMmUzNWVmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENTdGF0c1JlcG9ydC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDU3RhdHNSZXBvcnQuaApAQCAtNDAsNiArNDAsOSBAQCBwdWJsaWM6
CiAgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxSVENTdGF0c0VsZW1lbnQ+ID4mIGxvY2FsKCkgY29u
c3QgeyByZXR1cm4gbV9sb2NhbDsgfQogICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8UlRDU3RhdHNF
bGVtZW50PiA+JiByZW1vdGUoKSBjb25zdCB7IHJldHVybiBtX3JlbW90ZTsgfQogCisgICAgc2l6
ZV90IGFkZEVsZW1lbnQoYm9vbCBpc0xvY2FsLCBsb25nIHRpbWVzdGFtcCk7CisgICAgdm9pZCBh
ZGRTdGF0aXN0aWMoYm9vbCBpc0xvY2FsLCBzaXplX3QgZWxlbWVudCwgU3RyaW5nIG5hbWUsIFN0
cmluZyB2YWx1ZSk7CisKIHByaXZhdGU6CiAgICAgUlRDU3RhdHNSZXBvcnQoKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENTdGF0c1JlcXVlc3RJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDU3RhdHNSZXF1
ZXN0SW1wbC5jcHAKaW5kZXggYWZkYjk3ZjY4YmJlYWVmZjAwM2ZjZWMxZTE0NTc2OTUxMWVlYjY4
Zi4uMDFlY2VhZDJmNGQ0NTdhNGIwZjVhZjZmOGMxMDliZWQwNTgwYmJhZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENTdGF0c1JlcXVlc3RJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1N0YXRzUmVxdWVz
dEltcGwuY3BwCkBAIC01MSwxMyArNTEsMTYgQEAgUlRDU3RhdHNSZXF1ZXN0SW1wbDo6flJUQ1N0
YXRzUmVxdWVzdEltcGwoKQogewogfQogCi12b2lkIFJUQ1N0YXRzUmVxdWVzdEltcGw6OnJlcXVl
c3RTdWNjZWVkZWQoKQorUGFzc1JlZlB0cjxSVENTdGF0c1Jlc3BvbnNlQmFzZT4gUlRDU3RhdHNS
ZXF1ZXN0SW1wbDo6Y3JlYXRlUmVzcG9uc2UoKQoreworICAgIHJldHVybiBSVENTdGF0c1Jlc3Bv
bnNlOjpjcmVhdGUoKTsKK30KKwordm9pZCBSVENTdGF0c1JlcXVlc3RJbXBsOjpyZXF1ZXN0U3Vj
Y2VlZGVkKFBhc3NSZWZQdHI8UlRDU3RhdHNSZXNwb25zZUJhc2U+IHJlc3BvbnNlKQogewogICAg
IGlmICghbV9zdWNjZXNzQ2FsbGJhY2spCiAgICAgICAgIHJldHVybjsKLSAgICAvLyBGSVhNRTog
RmlsbCBpbiBjb250ZW50IG9mIHN0YXRzIHBhcmFtZXRlci4KLSAgICBSZWZQdHI8UlRDU3RhdHNS
ZXNwb25zZT4gc3RhdHMgPSBSVENTdGF0c1Jlc3BvbnNlOjpjcmVhdGUoKTsKLSAgICBtX3N1Y2Nl
c3NDYWxsYmFjay0+aGFuZGxlRXZlbnQoc3RhdHMuZ2V0KCkpOworICAgIG1fc3VjY2Vzc0NhbGxi
YWNrLT5oYW5kbGVFdmVudChzdGF0aWNfY2FzdDxSVENTdGF0c1Jlc3BvbnNlKj4ocmVzcG9uc2Uu
Z2V0KCkpKTsKICAgICBjbGVhcigpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ1N0YXRzUmVxdWVzdEltcGwuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDU3RhdHNSZXF1ZXN0SW1wbC5oCmluZGV4IDQ3NjYzYTdm
MWIxNGM1YTA3MWEwMmI5MzUzMjc0ZTNiZTdhYzFiYTUuLmJkYTE1NWVhYmYyNWVhMDA1N2Y3YzNl
NjFhODAxYzAxYzI3YzA3NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDU3RhdHNSZXF1ZXN0SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDU3RhdHNSZXF1ZXN0SW1wbC5oCkBAIC0yOSw2ICsyOSw3IEBACiAK
ICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKICNpbmNsdWRlICJSVENTdGF0c1JlcXVlc3Qu
aCIKKyNpbmNsdWRlICJSVENTdGF0c1Jlc3BvbnNlLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgpAQCAtNDIsNyArNDMsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8UlRDU3RhdHNSZXF1ZXN0SW1wbD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQ
YXNzUmVmUHRyPFJUQ1N0YXRzQ2FsbGJhY2s+KTsKICAgICB2aXJ0dWFsIH5SVENTdGF0c1JlcXVl
c3RJbXBsKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFN1Y2NlZWRlZCgpOworICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxSVENTdGF0c1Jlc3BvbnNlQmFzZT4gY3JlYXRlUmVzcG9uc2UoKTsK
KyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFN1Y2NlZWRlZChQYXNzUmVmUHRyPFJUQ1N0YXRzUmVz
cG9uc2VCYXNlPik7CiAKICAgICAvLyBBY3RpdmVET01PYmplY3QKICAgICB2aXJ0dWFsIHZvaWQg
c3RvcCgpIE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENTdGF0c1Jlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDU3RhdHNSZXNwb25zZS5jcHAKaW5kZXggZmY3OGYxMTAwNDMxZDdiZjE5ZDBk
ZjQ4Yzk0YTkwMWRlOGFiMzcwNi4uMmFjYWZhM2Q1ZTQ4NjgwMzljMDhhNTlkZjgzMTdkYTJlMmI5
YWEyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENT
dGF0c1Jlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ1N0YXRzUmVzcG9uc2UuY3BwCkBAIC0zMywxMyArMzMsMzAgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogUGFzc1JlZlB0cjxSVENTdGF0c1Jlc3BvbnNlPiBSVENTdGF0c1Jlc3BvbnNlOjpjcmVh
dGUoKQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgUlRDU3RhdHNSZXNwb25zZSgpKTsKLSAg
ICAvLyBGSVhNRTogUGFzcyBhbiBSVENTdGF0c1JlcXVlc3QgYXJndW1lbnQgYW5kIHBvcHVsYXRl
IGZyb20gaXQuCiB9CiAKIFJUQ1N0YXRzUmVzcG9uc2U6OlJUQ1N0YXRzUmVzcG9uc2UoKQogewog
fQogCitzaXplX3QgUlRDU3RhdHNSZXNwb25zZTo6YWRkUmVwb3J0KCkKK3sKKyAgICBtX3Jlc3Vs
dC5hcHBlbmQoUlRDU3RhdHNSZXBvcnQ6OmNyZWF0ZSgpKTsKKyAgICByZXR1cm4gbV9yZXN1bHQu
c2l6ZSgpIC0gMTsKK30KKworc2l6ZV90IFJUQ1N0YXRzUmVzcG9uc2U6OmFkZEVsZW1lbnQoc2l6
ZV90IHJlcG9ydCwgYm9vbCBpc0xvY2FsLCBsb25nIHRpbWVzdGFtcCkKK3sKKyAgICBBU1NFUlQo
cmVwb3J0ID49IDAgJiYgcmVwb3J0IDwgbV9yZXN1bHQuc2l6ZSgpKTsKKyAgICByZXR1cm4gbV9y
ZXN1bHRbcmVwb3J0XS0+YWRkRWxlbWVudChpc0xvY2FsLCB0aW1lc3RhbXApOworfQorCit2b2lk
IFJUQ1N0YXRzUmVzcG9uc2U6OmFkZFN0YXRpc3RpYyhzaXplX3QgcmVwb3J0LCBib29sIGlzTG9j
YWwsIHNpemVfdCBlbGVtZW50LCBTdHJpbmcgbmFtZSwgU3RyaW5nIHZhbHVlKQoreworICAgIEFT
U0VSVChyZXBvcnQgPj0gMCAmJiByZXBvcnQgPCBtX3Jlc3VsdC5zaXplKCkpOworICAgIHJldHVy
biBtX3Jlc3VsdFtyZXBvcnRdLT5hZGRTdGF0aXN0aWMoaXNMb2NhbCwgZWxlbWVudCwgbmFtZSwg
dmFsdWUpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUo
TUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENTdGF0c1Jlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ1N0YXRzUmVzcG9uc2UuaAppbmRleCBjMmVjYzkwZWQ0YTZkOGE2ZThiNGE5MGMwYmNi
MWI5N2U3MTc1MTg3Li4zZmE4MDQ3MzhmNTY0NTAzYjI2MWVmMWNmMjM3YmVjNjg0MjNlZDQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1N0YXRzUmVz
cG9uc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1N0YXRz
UmVzcG9uc2UuaApAQCAtMzQsMTUgKzM0LDIwIEBACiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIK
ICNpbmNsdWRlICJNZWRpYVN0cmVhbVRyYWNrLmgiCiAjaW5jbHVkZSAiUlRDU3RhdHNSZXBvcnQu
aCIKKyNpbmNsdWRlICJSVENTdGF0c1Jlc3BvbnNlQmFzZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWNsYXNzIFJUQ1N0YXRzUmVzcG9uc2UgOiBwdWJsaWMgUmVmQ291bnRlZDxSVENTdGF0
c1Jlc3BvbnNlPiB7CitjbGFzcyBSVENTdGF0c1Jlc3BvbnNlIDogcHVibGljIFJUQ1N0YXRzUmVz
cG9uc2VCYXNlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxSVENTdGF0c1Jlc3Bv
bnNlPiBjcmVhdGUoKTsKIAogICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8UlRDU3RhdHNSZXBvcnQ+
ID4mIHJlc3VsdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzdWx0OyB9OwogCisgICAgdmlydHVhbCBz
aXplX3QgYWRkUmVwb3J0KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBzaXplX3QgYWRkRWxlbWVu
dChzaXplX3QgcmVwb3J0LCBib29sIGlzTG9jYWwsIGxvbmcgdGltZXN0YW1wKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgYWRkU3RhdGlzdGljKHNpemVfdCByZXBvcnQsIGJvb2wgaXNMb2Nh
bCwgc2l6ZV90IGVsZW1lbnQsIFN0cmluZyBuYW1lLCBTdHJpbmcgdmFsdWUpIE9WRVJSSURFOwor
CiBwcml2YXRlOgogICAgIFJUQ1N0YXRzUmVzcG9uc2UoKTsKICAgICBWZWN0b3I8UmVmUHRyPFJU
Q1N0YXRzUmVwb3J0PiA+IG1fcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDNiZTRlNmE4M2Jm
MjA5NzNkZGU1OTVkMjZmMmU0N2ViNGI3MDQxOTQuLmIyNzAwOTUzZDQ2Nzk3NzE2MzA0MDEzNDQw
YmY1MjExZThiNTNmMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTgzNzEsNiArODM3MSw3IEBACiAg
ICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJSVENTZXNzaW9uRGVzY3Jp
cHRpb24uY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlJU
Q1Nlc3Npb25EZXNjcmlwdGlvblJlcXVlc3QuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9j
aHJvbWl1bS9zdXBwb3J0L1dlYlJUQ1N0YXRzUmVxdWVzdC5jcHAnLAorICAgICAgICAgICAgJ3Bs
YXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViUlRDU3RhdHNSZXNwb25zZS5jcHAnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViUlRDVm9pZFJlcXVlc3QuY3BwJywK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNjcm9sbGJhclRoZW1l
R2VvbWV0cnlOYXRpdmUuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBw
b3J0L1dlYlNjcm9sbGJhclRoZW1lR2VvbWV0cnlOYXRpdmUuaCcsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlJUQ1N0YXRzUmVxdWVzdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlJUQ1N0YXRz
UmVxdWVzdC5jcHAKaW5kZXggZGY2NWFlNjcyYTBiZjE2NWMzYzJjNGFkNjQ0NDhkMzhmNDVjMDVj
Yy4uM2FjNGMyZjI4ZmMwOGY2ZGYwZGNlMDhlZGMxNWMyMjVmZjJhYzA0MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJSVENTdGF0c1JlcXVl
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2Vi
UlRDU3RhdHNSZXF1ZXN0LmNwcApAQCAtMzMsOCArMzMsMTAgQEAKICNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQogCiAjaW5jbHVkZSA8cHVibGljL1dlYlJUQ1N0YXRzUmVxdWVzdC5oPgorI2luY2x1
ZGUgPHB1YmxpYy9XZWJSVENTdGF0c1Jlc3BvbnNlLmg+CiAKICNpbmNsdWRlICJSVENTdGF0c1Jl
cXVlc3QuaCIKKyNpbmNsdWRlICJSVENTdGF0c1Jlc3BvbnNlLmgiCiAjaW5jbHVkZSA8d3RmL1Bh
c3NPd25QdHIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC01Niw5ICs1OCwxNCBA
QCB2b2lkIFdlYlJUQ1N0YXRzUmVxdWVzdDo6cmVzZXQoKQogICAgIG1fcHJpdmF0ZS5yZXNldCgp
OwogfQogCi12b2lkIFdlYlJUQ1N0YXRzUmVxdWVzdDo6cmVxdWVzdFN1Y2NlZWRlZCgpIGNvbnN0
CitXZWJSVENTdGF0c1Jlc3BvbnNlIFdlYlJUQ1N0YXRzUmVxdWVzdDo6Y3JlYXRlUmVzcG9uc2Uo
KSBjb25zdAogewotICAgIG1fcHJpdmF0ZS0+cmVxdWVzdFN1Y2NlZWRlZCgpOworICAgIHJldHVy
biBXZWJSVENTdGF0c1Jlc3BvbnNlKG1fcHJpdmF0ZS0+Y3JlYXRlUmVzcG9uc2UoKSk7Cit9CisK
K3ZvaWQgV2ViUlRDU3RhdHNSZXF1ZXN0OjpyZXF1ZXN0U3VjY2VlZGVkKGNvbnN0IFdlYlJUQ1N0
YXRzUmVzcG9uc2UmIHJlc3BvbnNlKSBjb25zdAoreworICAgIG1fcHJpdmF0ZS0+cmVxdWVzdFN1
Y2NlZWRlZChyZXNwb25zZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJSVENTdGF0c1Jl
c3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2Vi
UlRDU3RhdHNSZXNwb25zZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDlkN2UxMDBhYmYwNjEyZTZiMzY1Njkz
NTQ3YWI1YmRmNGU1NGIyNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViUlRDU3RhdHNSZXNwb25zZS5jcHAKQEAgLTAsMCArMSw3
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKE1F
RElBX1NUUkVBTSkKKworI2luY2x1ZGUgPHB1YmxpYy9XZWJSVENTdGF0c1Jlc3BvbnNlLmg+CisK
KyNpbmNsdWRlICJSVENTdGF0c1Jlc3BvbnNlQmFzZS5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzT3du
UHRyLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsK
KworV2ViUlRDU3RhdHNSZXNwb25zZTo6V2ViUlRDU3RhdHNSZXNwb25zZShjb25zdCBQYXNzUmVm
UHRyPFJUQ1N0YXRzUmVzcG9uc2VCYXNlPiYgcmVxdWVzdCkKKyAgICA6IG1fcHJpdmF0ZShyZXF1
ZXN0KQoreworfQorCit2b2lkIFdlYlJUQ1N0YXRzUmVzcG9uc2U6OmFzc2lnbihjb25zdCBXZWJS
VENTdGF0c1Jlc3BvbnNlJiBvdGhlcikKK3sKKyAgICBtX3ByaXZhdGUgPSBvdGhlci5tX3ByaXZh
dGU7Cit9CisKK3ZvaWQgV2ViUlRDU3RhdHNSZXNwb25zZTo6cmVzZXQoKQoreworICAgIG1fcHJp
dmF0ZS5yZXNldCgpOworfQorCitXZWJSVENTdGF0c1Jlc3BvbnNlOjpvcGVyYXRvciBXVEY6OlBh
c3NSZWZQdHI8V2ViQ29yZTo6UlRDU3RhdHNSZXNwb25zZUJhc2U+KCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9wcml2YXRlLmdldCgpOworfQorCitzaXplX3QgV2ViUlRDU3RhdHNSZXNwb25zZTo6
YWRkUmVwb3J0KCkKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5hZGRSZXBvcnQoKTsKK30KKwor
c2l6ZV90IFdlYlJUQ1N0YXRzUmVzcG9uc2U6OmFkZEVsZW1lbnQoc2l6ZV90IHJlcG9ydCwgYm9v
bCBpc0xvY2FsLCBsb25nIHRpbWVzdGFtcCkKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5hZGRF
bGVtZW50KHJlcG9ydCwgaXNMb2NhbCwgdGltZXN0YW1wKTsKK30KKwordm9pZCBXZWJSVENTdGF0
c1Jlc3BvbnNlOjphZGRTdGF0aXN0aWMoc2l6ZV90IHJlcG9ydCwgYm9vbCBpc0xvY2FsLCBzaXpl
X3QgZWxlbWVudCwgV2ViU3RyaW5nIG5hbWUsIFdlYlN0cmluZyB2YWx1ZSkKK3sKKyAgICBtX3By
aXZhdGUtPmFkZFN0YXRpc3RpYyhyZXBvcnQsIGlzTG9jYWwsIGVsZW1lbnQsIG5hbWUsIHZhbHVl
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFf
U1RSRUFNKQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9SVENTdGF0c1JlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L1JUQ1N0YXRzUmVxdWVzdC5oCmluZGV4IDZlY2U3NjQwZWE3NjU4Yzc0MzM4NmVkNTRkNGZjYTRj
NWQ5MWMxOGMuLjIyYzE5Yjg3ZjdjNzVjYTI3MjliYmUxZmQ3ZjIxZmExYzE0N2M5NzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ1N0YXRzUmVxdWVz
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ1N0YXRzUmVx
dWVzdC5oCkBAIC0zOSwxMSArMzksMTQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFz
cyBSVENTdGF0c1Jlc3BvbnNlQmFzZTsKKwogY2xhc3MgUlRDU3RhdHNSZXF1ZXN0IDogcHVibGlj
IFJlZkNvdW50ZWQ8UlRDU3RhdHNSZXF1ZXN0PiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+UlRD
U3RhdHNSZXF1ZXN0KCkgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFN1Y2NlZWRlZCgp
ID0gMDsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8UlRDU3RhdHNSZXNwb25zZUJhc2U+IGNyZWF0
ZVJlc3BvbnNlKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0U3VjY2VlZGVkKFBhc3NS
ZWZQdHI8UlRDU3RhdHNSZXNwb25zZUJhc2U+KSA9IDA7CiAKIHByb3RlY3RlZDoKICAgICBSVENT
dGF0c1JlcXVlc3QoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL1JUQ1N0YXRzUmVzcG9uc2VCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9SVENTdGF0c1Jlc3BvbnNlQmFzZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU1NDdjNWNj
MzcxMmY2NjNjNmMwMDEzNDljOWZmY2ZiZWE1OTJjOTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENTdGF0c1Jlc3BvbnNlQmFzZS5oCkBA
IC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUlRDU3RhdHNSZXNwb25zZUJh
c2VfaAorI2RlZmluZSBSVENTdGF0c1Jlc3BvbnNlQmFzZV9oCisKKyNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQorCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIFJUQ1N0YXRzUmVzcG9uc2VCYXNlIDogcHVibGljIFJlZkNvdW50
ZWQ8UlRDU3RhdHNSZXNwb25zZUJhc2U+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5SVENTdGF0
c1Jlc3BvbnNlQmFzZSgpIHsgfQorCisgICAgdmlydHVhbCBzaXplX3QgYWRkUmVwb3J0KCkgPSAw
OworICAgIHZpcnR1YWwgc2l6ZV90IGFkZEVsZW1lbnQoc2l6ZV90IHJlcG9ydCwgYm9vbCBpc0xv
Y2FsLCBsb25nIHRpbWVzdGFtcCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhZGRTdGF0aXN0aWMo
c2l6ZV90IHJlcG9ydCwgYm9vbCBpc0xvY2FsLCBzaXplX3QgZWxlbWVudCwgU3RyaW5nIG5hbWUs
IFN0cmluZyB2YWx1ZSkgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2VuZGlmIC8vIFJUQ1N0YXRzUmVzcG9uc2VC
YXNlX2gKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRl
eCBjM2Q2YmI3MDA4NGRjNDlhMTQ5OGM5MTVjYzRhMWZmNjI5NWRmNzUwLi5mNDBkMDVhZTg3NWNj
YzE2ZDYxZDE5MGE4YzEyYzZmNTdhYTEwNDc3IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cK
KysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTItMTAtMDIgIEhhcmFs
ZCBBbHZlc3RyYW5kICA8aHRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgQWRkIGRhdGEgcGFzc2lu
ZyB0byB0aGUgR2V0U3RhdHMgaW50ZXJmYWNlIG9mIFJUQ1BlZXJDb25uZWN0aW9uCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODAwMworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5jcHA6CisgICAgICAgIChS
VENTdGF0c1JlcXVlc3RTdWNjZWVkZWRUYXNrOjpSVENTdGF0c1JlcXVlc3RTdWNjZWVkZWRUYXNr
KToKKyAgICAgICAgKE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI6Ok1vY2tXZWJSVENQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXIpOgorICAgICAgICAoTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9u
SGFuZGxlcjo6YWRkU3RyZWFtKToKKyAgICAgICAgKE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhh
bmRsZXI6OnJlbW92ZVN0cmVhbSk6CisgICAgICAgIChNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25I
YW5kbGVyOjpnZXRTdGF0cyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9j
a1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5oOgorICAgICAgICAoTW9ja1dlYlJUQ1BlZXJD
b25uZWN0aW9uSGFuZGxlcik6CisKIDIwMTItMDktMzAgIFRhaWp1IFRzdWlraSAgPHR6aWtAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIEFkZGluZyBteXNlbGYgYXMgYSBjb21t
aXR0ZXIuCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2Vi
UlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL01vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuY3BwCmluZGV4IGE3MDJjOGIzYjU2
YWRkNTg3NzExYWNmYzc4NjUyMmYxNzEzZWY5ZTAuLjNhZGQwOWFjODU3ZTJkMjgwMWYzYWQ2NTY3
MGM4YTlkNThlZGFhNWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L01vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL01vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuY3BwCkBAIC0z
OSw2ICszOSw3IEBACiAjaW5jbHVkZSA8cHVibGljL1dlYlJUQ1Nlc3Npb25EZXNjcmlwdGlvbi5o
PgogI2luY2x1ZGUgPHB1YmxpYy9XZWJSVENTZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0Lmg+CiAj
aW5jbHVkZSA8cHVibGljL1dlYlJUQ1N0YXRzUmVxdWVzdC5oPgorI2luY2x1ZGUgPHB1YmxpYy9X
ZWJSVENTdGF0c1Jlc3BvbnNlLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlJUQ1ZvaWRSZXF1ZXN0
Lmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlN0cmluZy5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJW
ZWN0b3IuaD4KQEAgLTgzLDE5ICs4NCwyMSBAQCBwcml2YXRlOgogCiBjbGFzcyBSVENTdGF0c1Jl
cXVlc3RTdWNjZWVkZWRUYXNrIDogcHVibGljIE1ldGhvZFRhc2s8TW9ja1dlYlJUQ1BlZXJDb25u
ZWN0aW9uSGFuZGxlcj4gewogcHVibGljOgotICAgIFJUQ1N0YXRzUmVxdWVzdFN1Y2NlZWRlZFRh
c2soTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlciogb2JqZWN0LCBjb25zdCBXZWJLaXQ6
OldlYlJUQ1N0YXRzUmVxdWVzdCYgcmVxdWVzdCkKKyAgICBSVENTdGF0c1JlcXVlc3RTdWNjZWVk
ZWRUYXNrKE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIqIG9iamVjdCwgY29uc3QgV2Vi
S2l0OjpXZWJSVENTdGF0c1JlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYktpdDo6V2ViUlRDU3Rh
dHNSZXNwb25zZSYgcmVzcG9uc2UpCiAgICAgICAgIDogTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVl
ckNvbm5lY3Rpb25IYW5kbGVyPihvYmplY3QpCiAgICAgICAgICwgbV9yZXF1ZXN0KHJlcXVlc3Qp
CisgICAgICAgICwgbV9yZXNwb25zZShyZXNwb25zZSkKICAgICB7CiAgICAgfQogCiAgICAgdmly
dHVhbCB2b2lkIHJ1bklmVmFsaWQoKSBPVkVSUklERQogICAgIHsKLSAgICAgICAgbV9yZXF1ZXN0
LnJlcXVlc3RTdWNjZWVkZWQoKTsKKyAgICAgICAgbV9yZXF1ZXN0LnJlcXVlc3RTdWNjZWVkZWQo
bV9yZXNwb25zZSk7CiAgICAgfQogCiBwcml2YXRlOgogICAgIFdlYktpdDo6V2ViUlRDU3RhdHNS
ZXF1ZXN0IG1fcmVxdWVzdDsKKyAgICBXZWJLaXQ6OldlYlJUQ1N0YXRzUmVzcG9uc2UgbV9yZXNw
b25zZTsKIH07CiAKIGNsYXNzIFJUQ1ZvaWRSZXF1ZXN0VGFzayA6IHB1YmxpYyBNZXRob2RUYXNr
PE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI+IHsKQEAgLTEyNCw2ICsxMjcsNyBAQCBw
cml2YXRlOgogCiBNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyOjpNb2NrV2ViUlRDUGVl
ckNvbm5lY3Rpb25IYW5kbGVyKFdlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudCogY2xp
ZW50KQogICAgIDogbV9jbGllbnQoY2xpZW50KQorICAgICwgbV9zdHJlYW1Db3VudCgwKQogewog
fQogCkBAIC0xOTUsNiArMTk5LDcgQEAgYm9vbCBNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5k
bGVyOjphZGRJQ0VDYW5kaWRhdGUoY29uc3QgV2ViUlRDSUNFQ2FuZGlkYXRlJgogCiBib29sIE1v
Y2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI6OmFkZFN0cmVhbShjb25zdCBXZWJNZWRpYVN0
cmVhbURlc2NyaXB0b3ImIHN0cmVhbSwgY29uc3QgV2ViTWVkaWFDb25zdHJhaW50cyYpCiB7Cisg
ICAgbV9zdHJlYW1Db3VudCArPSAxOwogICAgIG1fY2xpZW50LT5kaWRBZGRSZW1vdGVTdHJlYW0o
c3RyZWFtKTsKICAgICBtX2NsaWVudC0+bmVnb3RpYXRpb25OZWVkZWQoKTsKICAgICByZXR1cm4g
dHJ1ZTsKQEAgLTIwMiwxNiArMjA3LDI1IEBAIGJvb2wgTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9u
SGFuZGxlcjo6YWRkU3RyZWFtKGNvbnN0IFdlYk1lZGlhU3RyZWFtRGVzY3JpcHRvciYKIAogdm9p
ZCBNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyOjpyZW1vdmVTdHJlYW0oY29uc3QgV2Vi
TWVkaWFTdHJlYW1EZXNjcmlwdG9yJiBzdHJlYW0pCiB7CisgICAgbV9zdHJlYW1Db3VudCAtPSAx
OwogICAgIG1fY2xpZW50LT5kaWRSZW1vdmVSZW1vdGVTdHJlYW0oc3RyZWFtKTsKICAgICBtX2Ns
aWVudC0+bmVnb3RpYXRpb25OZWVkZWQoKTsKIH0KIAogdm9pZCBNb2NrV2ViUlRDUGVlckNvbm5l
Y3Rpb25IYW5kbGVyOjpnZXRTdGF0cyhjb25zdCBXZWJSVENTdGF0c1JlcXVlc3QmIHJlcXVlc3Qp
CiB7Ci0gICAgcG9zdFRhc2sobmV3IFJUQ1N0YXRzUmVxdWVzdFN1Y2NlZWRlZFRhc2sodGhpcywg
cmVxdWVzdCkpOworICAgIFdlYlJUQ1N0YXRzUmVzcG9uc2UgcmVzcG9uc2UgPSByZXF1ZXN0LmNy
ZWF0ZVJlc3BvbnNlKCk7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX3N0cmVhbUNvdW50OyAr
K2kpIHsKKyAgICAgICAgc2l6ZV90IHJlcG9ydEluZGV4ID0gcmVzcG9uc2UuYWRkUmVwb3J0KCk7
CisgICAgICAgIHNpemVfdCBlbGVtZW50SW5kZXggPSByZXNwb25zZS5hZGRFbGVtZW50KHJlcG9y
dEluZGV4LCB0cnVlLCAxMjM0NSk7CisgICAgICAgIHJlc3BvbnNlLmFkZFN0YXRpc3RpYyhyZXBv
cnRJbmRleCwgdHJ1ZSwgZWxlbWVudEluZGV4LCAidHlwZSIsICJhdWRpbyIpOworICAgICAgICBy
ZXBvcnRJbmRleCA9IHJlc3BvbnNlLmFkZFJlcG9ydCgpOworICAgICAgICBlbGVtZW50SW5kZXgg
PSByZXNwb25zZS5hZGRFbGVtZW50KHJlcG9ydEluZGV4LCB0cnVlLCAxMjM0NSk7CisgICAgICAg
IHJlc3BvbnNlLmFkZFN0YXRpc3RpYyhyZXBvcnRJbmRleCwgdHJ1ZSwgZWxlbWVudEluZGV4LCAi
dHlwZSIsICJ2aWRlbyIpOworICAgIH0KKyAgICBwb3N0VGFzayhuZXcgUlRDU3RhdHNSZXF1ZXN0
U3VjY2VlZGVkVGFzayh0aGlzLCByZXF1ZXN0LCByZXNwb25zZSkpOwogfQogCi0KIHZvaWQgTW9j
a1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcjo6c3RvcCgpCiB7CiB9CmRpZmYgLS1naXQgYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5k
bGVyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViUlRDUGVlckNvbm5l
Y3Rpb25IYW5kbGVyLmgKaW5kZXggOGFhMzM2ZTE0ZjljMzBiZTAxYjBlZWM0NWQ5ZTE3MWUyMGY3
ZDE0NS4uNDNkMDg3ZTM1Y2FjNmYzMzAwNzAzM2EyNjY2Y2Q2ODMxNWUxZGE2MiAxMDA2NDQKLS0t
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9u
SGFuZGxlci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJSVENQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXIuaApAQCAtNzIsNiArNzIsNyBAQCBwcml2YXRlOgogICAgIFRh
c2tMaXN0IG1fdGFza0xpc3Q7CiAgICAgV2ViS2l0OjpXZWJSVENTZXNzaW9uRGVzY3JpcHRpb24g
bV9sb2NhbERlc2NyaXB0aW9uOwogICAgIFdlYktpdDo6V2ViUlRDU2Vzc2lvbkRlc2NyaXB0aW9u
IG1fcmVtb3RlRGVzY3JpcHRpb247CisgICAgaW50IG1fc3RyZWFtQ291bnQ7CiB9OwogCiAjZW5k
aWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBlYTc4MzNjNWY4MTZhYWE1ZTRlNTBj
ZjNmN2RlOGIzZTIwMWFjNGM2Li4zZDUwYWQxNGViNjc0NTgwMTk5YWI2NTEyOTEyNWJiZTE5ZWMw
MzNkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMTAtMDIgIEhhcmFsZCBBbHZlc3RyYW5k
ICA8aHRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgQWRkIGRhdGEgcGFzc2luZyB0byB0aGUgR2V0
U3RhdHMgaW50ZXJmYWNlIG9mIFJUQ1BlZXJDb25uZWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODAwMworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29u
bmVjdGlvbi1zdGF0cy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9S
VENQZWVyQ29ubmVjdGlvbi1zdGF0cy5odG1sOgorCiAyMDEyLTEwLTAxICBTaGVyaWZmIEJvdCAg
PHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xs
aW5nIG91dCByMTMwMDA0LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVh
bS9SVENQZWVyQ29ubmVjdGlvbi1zdGF0cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0
L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLXN0YXRzLWV4cGVjdGVkLnR4dAppbmRleCBm
ZmUzMzZlOGEyM2FmNDJhOWMwZWViM2VmMTk0NTczNDhlY2UwOWVmLi45OWNkOGY5ZjExZjcwYmYx
YmQxOGFhZjY2ZGExMjNiNmI4YjQ3YzhjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L21l
ZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLXN0YXRzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLXN0YXRzLWV4cGVjdGVk
LnR4dApAQCAtNCwxMCArNCwxNyBAQCBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURQogCiAKIFBBU1Mg
cGMgPSBuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24obnVsbCkgZGlkIG5vdCB0aHJvdyBleGNl
cHRpb24uCi1QQVNTIHBjLmdldFN0YXRzKHN0YXRzSGFuZGxlcikgZGlkIG5vdCB0aHJvdyBleGNl
cHRpb24uCi1QQVNTIHN0YXRzSGFuZGxlciB3YXMgY2FsbGVkCitQQVNTIHBjLmdldFN0YXRzKHN0
YXRzSGFuZGxlcjEpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBzdGF0c0hhbmRsZXIx
IHdhcyBjYWxsZWQKIFBBU1Mgc3RhdHVzIGlzIG5vbi1udWxsLgogUEFTUyByZXN1bHQubGVuZ3Ro
IGlzIDAKK1BBU1MgZ2V0VXNlck1lZGlhKHthdWRpbzp0cnVlLCB2aWRlbzp0cnVlfSwgZ290U3Ry
ZWFtKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgR290IGEgc3RyZWFtLgorUEFTUyBw
Yy5nZXRTdGF0cyhzdGF0c0hhbmRsZXIyKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1Mg
c3RhdHNIYW5kbGVyMiB3YXMgY2FsbGVkCitQQVNTIHJlc3VsdC5sZW5ndGggaXMgPj0gMgorUEFT
UyBsb2NhbC5sZW5ndGggaXMgMQorUEFTUyBsb2NhbFswXS5zdGF0KCJ0eXBlIikgaXMgImF1ZGlv
IgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLXN0
YXRzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9u
LXN0YXRzLmh0bWwKaW5kZXggOTY3NWNhMzkzYzIwYzYzN2NjYzYyZDlhY2VlMDE2NDYzZWEzNzE5
MS4uNTk4NWI3YWVmZGM4MDg2MTYwMmU5ZDE3M2ZlMjg4MDk3ZjQxYzkzNyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1zdGF0cy5odG1s
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24tc3Rh
dHMuaHRtbApAQCAtOCwxOCArOCw1MyBAQAogZGVzY3JpcHRpb24oIlRlc3RzIHRoZSBSVENQZWVy
Q29ubmVjdGlvbiBzdGF0cyBpbnRlcmZhY2UuIik7CiAKIHZhciBwYyA9IG51bGw7Cit2YXIgcmVz
dWx0OwordmFyIGxvY2FsOwogCi1mdW5jdGlvbiBzdGF0c0hhbmRsZXIoc3RhdHVzKQorZnVuY3Rp
b24gZ2V0VXNlck1lZGlhKGRpY3Rpb25hcnksIGNhbGxiYWNrKSB7CisgICAgdHJ5IHsKKyAgICAg
ICAgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYShkaWN0aW9uYXJ5LCBjYWxsYmFjaywgZXJy
b3IpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgnd2Via2l0R2V0VXNl
ck1lZGlhIHRocmV3IGV4Y2VwdGlvbiA6JyArIGUpOworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
KyAgICB9Cit9CisKK2Z1bmN0aW9uIGVycm9yKCkgeworICAgIHRlc3RGYWlsZWQoJ1N0cmVhbSBn
ZW5lcmF0aW9uIGZhaWxlZC4nKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworZnVuY3Rpb24g
c3RhdHNIYW5kbGVyMShzdGF0dXMpCiB7Ci0gICAgdGVzdFBhc3NlZCgic3RhdHNIYW5kbGVyIHdh
cyBjYWxsZWQiKTsKKyAgICB0ZXN0UGFzc2VkKCJzdGF0c0hhbmRsZXIxIHdhcyBjYWxsZWQiKTsK
ICAgICBzaG91bGRCZU5vbk51bGwoJ3N0YXR1cycpOwogICAgIHJlc3VsdCA9IHN0YXR1cy5yZXN1
bHQoKTsKICAgICBzaG91bGRCZSgncmVzdWx0Lmxlbmd0aCcsICcwJyk7CisgICAgc2hvdWxkTm90
VGhyb3coJ2dldFVzZXJNZWRpYSh7YXVkaW86dHJ1ZSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbSkn
KTsKK30KKworZnVuY3Rpb24gZ290U3RyZWFtKHMpIHsKKyAgICB0ZXN0UGFzc2VkKCdHb3QgYSBz
dHJlYW0uJyk7CisgICAgc3RyZWFtID0gczsKKworICAgIHBjLmFkZFN0cmVhbShzdHJlYW0pOwor
ICAgIHNob3VsZE5vdFRocm93KCdwYy5nZXRTdGF0cyhzdGF0c0hhbmRsZXIyKScpOworfQorCitm
dW5jdGlvbiBzdGF0c0hhbmRsZXIyKHN0YXR1cykKK3sKKyAgICB0ZXN0UGFzc2VkKCJzdGF0c0hh
bmRsZXIyIHdhcyBjYWxsZWQiKTsKKyAgICByZXN1bHQgPSBzdGF0dXMucmVzdWx0KCk7CisgICAg
c2hvdWxkQmVHcmVhdGVyVGhhbk9yRXF1YWwoJ3Jlc3VsdC5sZW5ndGgnLCAnMicpOworICAgIGxv
Y2FsID0gcmVzdWx0WzBdLmxvY2FsKCk7CisgICAgc2hvdWxkQmUoJ2xvY2FsLmxlbmd0aCcsICcx
Jyk7CisgICAgc2hvdWxkQmUoJ2xvY2FsWzBdLnN0YXQoInR5cGUiKScsICciYXVkaW8iJyk7CiAg
ICAgZmluaXNoSlNUZXN0KCk7CiB9CiAKIHNob3VsZE5vdFRocm93KCdwYyA9IG5ldyB3ZWJraXRS
VENQZWVyQ29ubmVjdGlvbihudWxsKScpOwotc2hvdWxkTm90VGhyb3coJ3BjLmdldFN0YXRzKHN0
YXRzSGFuZGxlciknKTsKK3Nob3VsZE5vdFRocm93KCdwYy5nZXRTdGF0cyhzdGF0c0hhbmRsZXIx
KScpOwogCiB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CiB3aW5kb3cuc3VjY2Vzc2Z1bGx5
UGFyc2VkID0gdHJ1ZTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>