<?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>183989</bug_id>
          
          <creation_ts>2018-03-24 19:16:32 -0700</creation_ts>
          <short_desc>Move online state detection from the WebProcess to the NetworkProcess</short_desc>
          <delta_ts>2018-03-27 14:02:32 -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>WebKit2</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>aestes</cc>
    
    <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>japhet</cc>
    
    <cc>joepeck</cc>
    
    <cc>rniwa</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1409149</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-03-24 19:16:32 -0700</bug_when>
    <thetext>Move online state detection from the WebProcess to the NetworkProcess. This avoid executing the same (expensive) code in EACH web process whenever a network interface&apos;s state changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409150</commentid>
    <comment_count>1</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-03-24 19:16:44 -0700</bug_when>
    <thetext>&lt;rdar://problem/37093299&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409151</commentid>
    <comment_count>2</comment_count>
      <attachid>336488</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-03-24 19:21:57 -0700</bug_when>
    <thetext>Created attachment 336488
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409152</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-03-24 19:24:21 -0700</bug_when>
    <thetext>Attachment 336488 did not pass style-queue:


ERROR: Source/WebCore/workers/service/context/ServiceWorkerThread.cpp:75:  Missing spaces around :  [whitespace/init] [4]
Total errors found: 1 in 21 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409185</commentid>
    <comment_count>4</comment_count>
      <attachid>336488</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2018-03-25 10:55:19 -0700</bug_when>
    <thetext>Comment on attachment 336488
Patch

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

&gt; Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp:561
&gt; +    for (auto&amp; listener : m_onlineStateChangeListeners)
&gt; +        listener(isOnLine);

Can the listener modify m_onlineStateChangeListeners? Even if not, what guarantees that this will not become a problem in the future?

&gt; Source/WebKit/WebProcess/Network/WebLoaderStrategy.h:101
&gt; +    bool m_isOnLine { true };

That&apos;s optimistic :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409186</commentid>
    <comment_count>5</comment_count>
      <attachid>336488</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-03-25 11:21:59 -0700</bug_when>
    <thetext>Comment on attachment 336488
Patch

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

&gt;&gt; Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp:561
&gt;&gt; +        listener(isOnLine);
&gt; 
&gt; Can the listener modify m_onlineStateChangeListeners? Even if not, what guarantees that this will not become a problem in the future?

not An issue right now but I will make a copy for future proofing.

&gt;&gt; Source/WebKit/WebProcess/Network/WebLoaderStrategy.h:101
&gt;&gt; +    bool m_isOnLine { true };
&gt; 
&gt; That&apos;s optimistic :)

I think this matches the spec which says to return false only if we know we do not have network access.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409203</commentid>
    <comment_count>6</comment_count>
      <attachid>336499</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-03-25 13:04:13 -0700</bug_when>
    <thetext>Created attachment 336499
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409204</commentid>
    <comment_count>7</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-03-25 13:06:57 -0700</bug_when>
    <thetext>Attachment 336499 did not pass style-queue:


ERROR: Source/WebCore/workers/service/context/ServiceWorkerThread.cpp:75:  Missing spaces around :  [whitespace/init] [4]
Total errors found: 1 in 21 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409565</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-03-27 09:35:36 -0700</bug_when>
    <thetext>ping review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409612</commentid>
    <comment_count>9</comment_count>
      <attachid>336499</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-03-27 11:59:34 -0700</bug_when>
    <thetext>Comment on attachment 336499
Patch

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

&gt; Source/WebCore/loader/LoaderStrategy.h:79
&gt; +    virtual void addOnlineStateChangeListener(WTF::Function&lt;void(bool)&gt;&amp;&amp;) = 0;

I think we no longer need the WTF prefix.

&gt; Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp:257
&gt; +        return;

Connection::sendMessage is already checking whether valid or not.
We do not gain much except not encoding isOnline.
In some other places we are not checking this and still call send.
Maybe we should do the same?

&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:130
&gt; +    });

Although ok, it seems somehow strange that we are never removing the listener.
Ideally, we would add the listener/remove the listener whenever NetworkProcess has a WebProcess connection.

&gt; Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp:548
&gt; +void WebLoaderStrategy::addOnlineStateChangeListener(WTF::Function&lt;void(bool)&gt;&amp;&amp; listener)

WTF:: here and below?

&gt; Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp:551
&gt; +    m_onlineStateChangeListeners.append(WTFMove(listener));

It seems we will only call WebLoaderStrategy::addOnlineStateChangeListener once.
Maybe m_onlineStateChangeListeners should not be a Vector.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409615</commentid>
    <comment_count>10</comment_count>
      <attachid>336499</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-03-27 12:02:37 -0700</bug_when>
    <thetext>Comment on attachment 336499
Patch

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

&gt;&gt; Source/WebCore/loader/LoaderStrategy.h:79
&gt;&gt; +    virtual void addOnlineStateChangeListener(WTF::Function&lt;void(bool)&gt;&amp;&amp;) = 0;
&gt; 
&gt; I think we no longer need the WTF prefix.

ok

&gt;&gt; Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp:257
&gt;&gt; +        return;
&gt; 
&gt; Connection::sendMessage is already checking whether valid or not.
&gt; We do not gain much except not encoding isOnline.
&gt; In some other places we are not checking this and still call send.
&gt; Maybe we should do the same?

ok

&gt;&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:130
&gt;&gt; +    });
&gt; 
&gt; Although ok, it seems somehow strange that we are never removing the listener.
&gt; Ideally, we would add the listener/remove the listener whenever NetworkProcess has a WebProcess connection.

NetworkStateNotifier does not even have an API to remove listeners. Listeners are expected to be permanent at the moment.

&gt;&gt; Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp:548
&gt;&gt; +void WebLoaderStrategy::addOnlineStateChangeListener(WTF::Function&lt;void(bool)&gt;&amp;&amp; listener)
&gt; 
&gt; WTF:: here and below?

ok

&gt;&gt; Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp:551
&gt;&gt; +    m_onlineStateChangeListeners.append(WTFMove(listener));
&gt; 
&gt; It seems we will only call WebLoaderStrategy::addOnlineStateChangeListener once.
&gt; Maybe m_onlineStateChangeListeners should not be a Vector.

This is inaccurate, it is called twice, once for pages and once for workers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409617</commentid>
    <comment_count>11</comment_count>
      <attachid>336606</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-03-27 12:06:57 -0700</bug_when>
    <thetext>Created attachment 336606
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409620</commentid>
    <comment_count>12</comment_count>
      <attachid>336499</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-03-27 12:08:13 -0700</bug_when>
    <thetext>Comment on attachment 336499
Patch

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

&gt;&gt;&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:130
&gt;&gt;&gt; +    });
&gt;&gt; 
&gt;&gt; Although ok, it seems somehow strange that we are never removing the listener.
&gt;&gt; Ideally, we would add the listener/remove the listener whenever NetworkProcess has a WebProcess connection.
&gt; 
&gt; NetworkStateNotifier does not even have an API to remove listeners. Listeners are expected to be permanent at the moment.

I guess we could add an API to NetworkStateNotifier to remove listeners but I am not sure it is worth the code / complexity since having a NetworkProcess and no WebProcess is rare.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409622</commentid>
    <comment_count>13</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-03-27 12:09:22 -0700</bug_when>
    <thetext>Attachment 336606 did not pass style-queue:


ERROR: Source/WebCore/workers/service/context/ServiceWorkerThread.cpp:75:  Missing spaces around :  [whitespace/init] [4]
Total errors found: 1 in 21 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409647</commentid>
    <comment_count>14</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-03-27 13:10:57 -0700</bug_when>
    <thetext>&gt; &gt;&gt; Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp:551
&gt; &gt;&gt; +    m_onlineStateChangeListeners.append(WTFMove(listener));
&gt; &gt; 
&gt; &gt; It seems we will only call WebLoaderStrategy::addOnlineStateChangeListener once.
&gt; &gt; Maybe m_onlineStateChangeListeners should not be a Vector.
&gt; 
&gt; This is inaccurate, it is called twice, once for pages and once for workers.

OK but it could be easily reduced to only one listener.
It feels like we are propagating NetworkStateNotifier multi listener-API although that does not seem necessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409650</commentid>
    <comment_count>15</comment_count>
      <attachid>336606</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-03-27 13:13:34 -0700</bug_when>
    <thetext>Comment on attachment 336606
Patch

r = me.
I would try to look at simplifying the loader strategy API.
Maybe we could just have something like loaderStrategy-&gt;startListeningToOnlineChange().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409667</commentid>
    <comment_count>16</comment_count>
      <attachid>336606</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-03-27 14:02:30 -0700</bug_when>
    <thetext>Comment on attachment 336606
Patch

Clearing flags on attachment: 336606

Committed r230007: &lt;https://trac.webkit.org/changeset/230007&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409668</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-03-27 14:02:32 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336488</attachid>
            <date>2018-03-24 19:21:57 -0700</date>
            <delta_ts>2018-03-25 13:04:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183989-20180324192156.patch</filename>
            <type>text/plain</type>
            <size>25004</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5OTU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTFmOWViYzlmNWQ0ZWE1
ZWU1YzNmZDhiYWU1ODhkMzNmZDAwMjgxMC4uZDFkNGYxYTkxOTZhMmUzNjRkNzQxOGY4YWYwYjJj
NmM3NDY4YWE2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE4LTAzLTI0ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBvbmxpbmUgc3RhdGUg
ZGV0ZWN0aW9uIGZyb20gdGhlIFdlYlByb2Nlc3MgdG8gdGhlIE5ldHdvcmtQcm9jZXNzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODM5ODkKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzM3MDkzMjk5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgb25saW5lIHN0YXRlIGRldGVjdGlvbiBmcm9tIHRo
ZSBXZWJQcm9jZXNzIHRvIHRoZSBOZXR3b3JrUHJvY2Vzcy4gVGhpcyBhdm9pZCBleGVjdXRpbmcg
dGhlIHNhbWUgKGV4cGVuc2l2ZSkgY29kZSBpbgorICAgICAgICBFQUNIIHdlYiBwcm9jZXNzIHdo
ZW5ldmVyIGEgbmV0d29yayBpbnRlcmZhY2UncyBzdGF0ZSBjaGFuZ2VzLiBOb3csIHRoZSBOZXR3
b3JrIFByb2Nlc3MgbW9uaXRvcnMgbmV0d29yayBpbnRlcmZhY2VzCisgICAgICAgIGFuZCBkZXRl
cm1pbmVzIHRoZSBvbmxpbmUgc3RhdGUgd2hlbmV2ZXIgYW4gaW50ZXJmYWNlJ3Mgc3RhdGUgY2hh
bmdlcy4gSWYgdGhlIG9uTGluZSBzdGF0ZSBjaGFuZ2VzLCBpdCBub3RpZmllcyBhbGwKKyAgICAg
ICAgaXRzIGNvbm5lY3RlZCBXZWJQcm9jZXNzZXMgdmlhIElQQy4KKworICAgICAgICAqIGluc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6bmV0d29ya1N0YXRlQ2hh
bmdlZCk6CisgICAgICAgICogbG9hZGVyL0xvYWRlclN0cmF0ZWd5Lmg6CisgICAgICAgICogcGFn
ZS9OYXZpZ2F0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yOjpvbkxpbmUgY29u
c3QpOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9OZXR3b3JrU3RhdGVOb3RpZmllci5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Oldvcmtlcjo6V29ya2VyKToKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlcjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtl
clRocmVhZDo6U2VydmljZVdvcmtlclRocmVhZCk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6U2VydmljZVdvcmtlclRocmVhZFByb3h5KToKKwog
MjAxOC0wMy0yNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVz
ZSBTZWN1cml0eU9yaWdpbkRhdGEgbW9yZSBjb25zaXN0ZW50bHkgaW4gU2VydmljZSBXb3JrZXIg
Y29kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCA1NTgxNzJkODMyNjcxYTVjNGI0OTA0NTFkMjk1YmQzNTAwZTUxNzJm
Li42YWMwN2E3ZmQ2MWU3MzA3OTdjMmNmYjA2Yjc4ZTU4ZGU4ZjdkZTRhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDMyIEBACisyMDE4LTAzLTI0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CisKKyAgICAgICAgTW92ZSBvbmxpbmUgc3RhdGUgZGV0ZWN0aW9uIGZyb20gdGhlIFdlYlByb2Nl
c3MgdG8gdGhlIE5ldHdvcmtQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xODM5ODkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM3MDkzMjk5
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUg
b25saW5lIHN0YXRlIGRldGVjdGlvbiBmcm9tIHRoZSBXZWJQcm9jZXNzIHRvIHRoZSBOZXR3b3Jr
UHJvY2Vzcy4gVGhpcyBhdm9pZCBleGVjdXRpbmcgdGhlIHNhbWUgKGV4cGVuc2l2ZSkgY29kZSBp
bgorICAgICAgICBFQUNIIHdlYiBwcm9jZXNzIHdoZW5ldmVyIGEgbmV0d29yayBpbnRlcmZhY2Un
cyBzdGF0ZSBjaGFuZ2VzLiBOb3csIHRoZSBOZXR3b3JrIFByb2Nlc3MgbW9uaXRvcnMgbmV0d29y
ayBpbnRlcmZhY2VzCisgICAgICAgIGFuZCBkZXRlcm1pbmVzIHRoZSBvbmxpbmUgc3RhdGUgd2hl
bmV2ZXIgYW4gaW50ZXJmYWNlJ3Mgc3RhdGUgY2hhbmdlcy4gSWYgdGhlIG9uTGluZSBzdGF0ZSBj
aGFuZ2VzLCBpdCBub3RpZmllcyBhbGwKKyAgICAgICAgaXRzIGNvbm5lY3RlZCBXZWJQcm9jZXNz
ZXMgdmlhIElQQy4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OnNldE9uTGluZVN0YXRlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6Ok5ldHdv
cmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNyZWF0ZU5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uOjpzZXRPbkxpbmVTdGF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW46CisgICAgICAgICog
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViTG9hZGVyU3RyYXRlZ3k6OmlzT25MaW5lIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViTG9hZGVyU3RyYXRlZ3k6OmFkZE9ubGluZVN0YXRlQ2hhbmdlTGlzdGVuZXIpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6c2V0T25MaW5lU3RhdGUpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oOgorCiAyMDE4LTAzLTI0ICBU
aW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIElnbm9yZSBz
YW5kYm94X2luaXRfd2l0aF9wYXJhbWV0ZXJzIGRlcHJlY2F0aW9uIHdhcm5pbmdzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
Q2hhbmdlTG9nCmluZGV4IDdmMmFlOTVlMWVjNTQ2NmVjM2EzZWVlYjFkM2UzY2JjNGFjZGIxMjku
LjdjZjE3NGEwNzIyY2Y5MGI3MmYwOWIwNjIzMzdiYmE5OWI5NzlhOTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTgtMDMtMjQgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIG9ubGluZSBzdGF0ZSBkZXRlY3Rpb24gZnJvbSB0
aGUgV2ViUHJvY2VzcyB0byB0aGUgTmV0d29ya1Byb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mzk4OQorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vMzcwOTMyOTk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgTm8gY2hhbmdlIG9uIFdlYktpdDEgZXhjZXB0IHRoYXQgV2ViUmVzb3VyY2VMb2FkU2No
ZWR1bGVyIG5lZWRzIHRvIG92ZXJyaWRlCisgICAgICAgIDIgbmV3IHZpcnR1YWwgZnVuY3Rpb25z
IHdoaWNoIGZvcndhcmQgdGhlIGNhbGxzIHRvIHRoZSBOZXR3b3JrU3RhdGVOb3RpZmllci4KKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHA6Cisg
ICAgICAgIChXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OmlzT25MaW5lIGNvbnN0KToKKyAgICAg
ICAgKFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6YWRkT25saW5lU3RhdGVDaGFuZ2VMaXN0ZW5l
cik6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmg6
CisKIDIwMTgtMDMtMjQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAg
ICBVc2UgU2VjdXJpdHlPcmlnaW5EYXRhIG1vcmUgY29uc2lzdGVudGx5IGluIFNlcnZpY2UgV29y
a2VyIGNvZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcAppbmRleCA2MjM2YmFm
MDQ5NjRjNjJkNjUzMDJlNWRmZDIyZjE3YWEzOTZmODhkLi44ZmFlN2RkN2Y0MmFhNmJmNmVjMTdj
Njc0NjZkZTQxYWQ5OTBjZWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3Bw
CkBAIC0zMiw4ICszMiw5IEBACiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJJ
bnNwZWN0b3JQYWdlQWdlbnQuaCIKICNpbmNsdWRlICJJbnN0cnVtZW50aW5nQWdlbnRzLmgiCisj
aW5jbHVkZSAiTG9hZGVyU3RyYXRlZ3kuaCIKICNpbmNsdWRlICJNYWluRnJhbWUuaCIKLSNpbmNs
dWRlICJOZXR3b3JrU3RhdGVOb3RpZmllci5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2ll
cy5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtODIsNyArODMsNyBAQCB2b2lkIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVB
Z2VudDo6dXBkYXRlQXBwbGljYXRpb25DYWNoZVN0YXR1cyhGcmFtZSogZnJhbWUpCiAKIHZvaWQg
SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpuZXR3b3JrU3RhdGVDaGFuZ2VkKCkKIHsK
LSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+bmV0d29ya1N0YXRlVXBkYXRlZChOZXR3b3JrU3Rh
dGVOb3RpZmllcjo6c2luZ2xldG9uKCkub25MaW5lKCkpOworICAgIG1fZnJvbnRlbmREaXNwYXRj
aGVyLT5uZXR3b3JrU3RhdGVVcGRhdGVkKHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJTdHJh
dGVneSgpLT5pc09uTGluZSgpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hl
QWdlbnQ6OmdldEZyYW1lc1dpdGhNYW5pZmVzdHMoRXJyb3JTdHJpbmcmLCBSZWZQdHI8SlNPTjo6
QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcHBsaWNhdGlvbkNhY2hlOjpGcmFtZVdpdGhN
YW5pZmVzdD4+JiByZXN1bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9h
ZGVyU3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkZXJTdHJhdGVneS5oCmlu
ZGV4IGI5MjAwYThkOTg1NGM5ZDVkZDJlM2RlNWU2NjQ0MDlhN2I0MWRkODMuLmFmYjI5YzcwMmMy
OTA1OTQ5MzlmZDM4YzU0OGFlMGQwMjdkYmRlMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Mb2FkZXJTdHJhdGVneS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2Fk
ZXJTdHJhdGVneS5oCkBAIC03NSw2ICs3NSw5IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9p
ZCBzZXRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3NFbmFibGVkKGJvb2wpID0gMDsKIAor
ICAgIHZpcnR1YWwgYm9vbCBpc09uTGluZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
YWRkT25saW5lU3RhdGVDaGFuZ2VMaXN0ZW5lcihXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYp
ID0gMDsKKwogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgfkxvYWRlclN0cmF0ZWd5KCk7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3BwCmluZGV4IDhkOTA5MDMzN2QzODVmZWE3NDMxNmMyZTk2
M2YxMzUwYWE5Y2I1ODEuLjMwZTQwZWNhNjFlMTE1M2IxYTFhNDVmZTBmNGI5NzA5MTVlYmQ1Y2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAKQEAgLTMxLDggKzMxLDkgQEAKICNpbmNsdWRl
ICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVk
ZSAiR2VvbG9jYXRpb24uaCIKLSNpbmNsdWRlICJOZXR3b3JrU3RhdGVOb3RpZmllci5oIgorI2lu
Y2x1ZGUgIkxvYWRlclN0cmF0ZWd5LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlBs
YXRmb3JtU3RyYXRlZ2llcy5oIgogI2luY2x1ZGUgIlBsdWdpbkRhdGEuaCIKICNpbmNsdWRlICJT
Y3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKQEAgLTkxLDcg
KzkyLDcgQEAgU3RyaW5nIE5hdmlnYXRvcjo6dXNlckFnZW50KCkgY29uc3QKIAogYm9vbCBOYXZp
Z2F0b3I6Om9uTGluZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIE5ldHdvcmtTdGF0ZU5vdGlmaWVy
OjpzaW5nbGV0b24oKS5vbkxpbmUoKTsKKyAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCkt
PmxvYWRlclN0cmF0ZWd5KCktPmlzT25MaW5lKCk7CiB9CiAKIERPTVBsdWdpbkFycmF5JiBOYXZp
Z2F0b3I6OnBsdWdpbnMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggOTU1ODE0NjRhM2RkM2ExZjQy
MGU4NWE1YTU2Yzk0OThlZGI1MmZiMS4uOTc3Mzc0ZTQ0YmEzNDQ3NDgzOWQxZTFmZGE0YWNjZDRl
ZDIyOTgyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC02MSwxMiArNjEsMTIgQEAKICNpbmNsdWRl
ICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmgiCiAjaW5jbHVkZSAiTGliV2ViUlRDUHJvdmlkZXIuaCIKKyNpbmNsdWRlICJMb2FkZXJT
dHJhdGVneS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJMb3dQb3dlck1vZGVO
b3RpZmllci5oIgogI2luY2x1ZGUgIk1haW5GcmFtZS5oIgogI2luY2x1ZGUgIk1lZGlhQ2FuU3Rh
cnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIk5hdmlnYXRvci5oIgotI2luY2x1ZGUgIk5ldHdvcmtT
dGF0ZU5vdGlmaWVyLmgiCiAjaW5jbHVkZSAiUGFnZUNhY2hlLmgiCiAjaW5jbHVkZSAiUGFnZUNv
bmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJQYWdlQ29uc29sZUNsaWVudC5oIgpAQCAtNzYsNiAr
NzYsNyBAQAogI2luY2x1ZGUgIlBlcmZvcm1hbmNlTG9nZ2luZ0NsaWVudC5oIgogI2luY2x1ZGUg
IlBlcmZvcm1hbmNlTW9uaXRvci5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFu
YWdlci5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgogI2luY2x1ZGUgIlBsdWdJ
bkNsaWVudC5oIgogI2luY2x1ZGUgIlBsdWdpbkRhdGEuaCIKICNpbmNsdWRlICJQbHVnaW5JbmZv
UHJvdmlkZXIuaCIKQEAgLTI0Myw3ICsyNDQsNyBAQCBQYWdlOjpQYWdlKFBhZ2VDb25maWd1cmF0
aW9uJiYgcGFnZUNvbmZpZ3VyYXRpb24pCiAKICAgICBzdGF0aWMgYm9vbCBhZGRlZExpc3RlbmVy
OwogICAgIGlmICghYWRkZWRMaXN0ZW5lcikgewotICAgICAgICBOZXR3b3JrU3RhdGVOb3RpZmll
cjo6c2luZ2xldG9uKCkuYWRkTGlzdGVuZXIoJm5ldHdvcmtTdGF0ZUNoYW5nZWQpOworICAgICAg
ICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+YWRkT25saW5lU3RhdGVD
aGFuZ2VMaXN0ZW5lcigmbmV0d29ya1N0YXRlQ2hhbmdlZCk7CiAgICAgICAgIGFkZGVkTGlzdGVu
ZXIgPSB0cnVlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9OZXR3b3JrU3RhdGVOb3RpZmllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9OZXR3b3JrU3RhdGVOb3RpZmllci5oCmluZGV4IGY5ODk5MWRmYzg0YzNjODQxMzc4
MjBlMTM0MTQyMGU1NWZkODBlYjMuLjFhOWQ1ZDZjYjE4MWIzOTJlYzA3ODJhZTI0ZjgwMzdkZDBk
Mjg5M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29y
a1N0YXRlTm90aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05l
dHdvcmtTdGF0ZU5vdGlmaWVyLmgKQEAgLTQ3LDEwICs0NywxMCBAQCBjbGFzcyBOZXR3b3JrU3Rh
dGVOb3RpZmllciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTmV0d29ya1N0YXRlTm90aWZp
ZXIpOwogCiBwdWJsaWM6Ci0gICAgc3RhdGljIE5ldHdvcmtTdGF0ZU5vdGlmaWVyJiBzaW5nbGV0
b24oKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgTmV0d29ya1N0YXRlTm90aWZpZXImIHNp
bmdsZXRvbigpOwogCi0gICAgYm9vbCBvbkxpbmUoKTsKLSAgICB2b2lkIGFkZExpc3RlbmVyKFdU
Rjo6RnVuY3Rpb248dm9pZChib29sIGlzT25MaW5lKT4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQg
Ym9vbCBvbkxpbmUoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZExpc3RlbmVyKFdURjo6
RnVuY3Rpb248dm9pZChib29sIGlzT25MaW5lKT4mJik7CiAKIHByaXZhdGU6CiAgICAgZnJpZW5k
IE5ldmVyRGVzdHJveWVkPE5ldHdvcmtTdGF0ZU5vdGlmaWVyPjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyLmNwcAppbmRleCBkZjFhYzAxZjQ5MDg5NzIyZGIyNGNmY2JmOGM1MDczNzMzZjVjMTgwLi40
OWQ4MzIwNjhiYzg4NzM4YTcwY2QxNTU2NzMwZGNkZjBkZTYwOWFmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXIuY3BwCkBAIC0zMSw3ICszMSw4IEBACiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNs
dWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgi
Ci0jaW5jbHVkZSAiTmV0d29ya1N0YXRlTm90aWZpZXIuaCIKKyNpbmNsdWRlICJMb2FkZXJTdHJh
dGVneS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgogI2luY2x1ZGUgIlJlc291
cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIldv
cmtlckdsb2JhbFNjb3BlUHJveHkuaCIKQEAgLTY0LDcgKzY1LDcgQEAgaW5saW5lIFdvcmtlcjo6
V29ya2VyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEpTQzo6UnVudGltZUZsYWdz
IHJ1bnRpbWUKIHsKICAgICBzdGF0aWMgYm9vbCBhZGRlZExpc3RlbmVyOwogICAgIGlmICghYWRk
ZWRMaXN0ZW5lcikgewotICAgICAgICBOZXR3b3JrU3RhdGVOb3RpZmllcjo6c2luZ2xldG9uKCku
YWRkTGlzdGVuZXIoJm5ldHdvcmtTdGF0ZUNoYW5nZWQpOworICAgICAgICBwbGF0Zm9ybVN0cmF0
ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+YWRkT25saW5lU3RhdGVDaGFuZ2VMaXN0ZW5lcigm
bmV0d29ya1N0YXRlQ2hhbmdlZCk7CiAgICAgICAgIGFkZGVkTGlzdGVuZXIgPSB0cnVlOwogICAg
IH0KIApAQCAtMTc2LDcgKzE3Nyw3IEBAIHZvaWQgV29ya2VyOjpub3RpZnlGaW5pc2hlZCgpCiAg
ICAgaWYgKG1fc2NyaXB0TG9hZGVyLT5mYWlsZWQoKSB8fCAhc2Vzc2lvbklELmlzVmFsaWQoKSkK
ICAgICAgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lcnJvckV2
ZW50LCBmYWxzZSwgdHJ1ZSkpOwogICAgIGVsc2UgewotICAgICAgICBib29sIGlzT25saW5lID0g
TmV0d29ya1N0YXRlTm90aWZpZXI6OnNpbmdsZXRvbigpLm9uTGluZSgpOworICAgICAgICBib29s
IGlzT25saW5lID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0cmF0ZWd5KCktPmlzT25M
aW5lKCk7CiAgICAgICAgIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVy
cyYgY29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzID0gbV9jb250ZW50U2VjdXJp
dHlQb2xpY3lSZXNwb25zZUhlYWRlcnMgPyBtX2NvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNl
SGVhZGVycy52YWx1ZSgpIDogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5jb250ZW50U2VjdXJp
dHlQb2xpY3koKS0+cmVzcG9uc2VIZWFkZXJzKCk7CiAgICAgICAgIG1fY29udGV4dFByb3h5LnN0
YXJ0V29ya2VyR2xvYmFsU2NvcGUobV9zY3JpcHRMb2FkZXItPnVybCgpLCBzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCktPnVzZXJBZ2VudChtX3NjcmlwdExvYWRlci0+dXJsKCkpLCBpc09ubGluZSwg
bV9zY3JpcHRMb2FkZXItPnNjcmlwdCgpLCBjb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhl
YWRlcnMsIG1fc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5LCBtX3dv
cmtlckNyZWF0aW9uVGltZSwgbV9ydW50aW1lRmxhZ3MsIHNlc3Npb25JRCk7CiAgICAgICAgIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2NyaXB0SW1wb3J0ZWQoKnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSwgbV9zY3JpcHRMb2FkZXItPmlkZW50aWZpZXIoKSwgbV9zY3JpcHRMb2FkZXItPnNj
cmlwdCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250
ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKaW5kZXggYWI2YTI0ZTY5NDljN2Ni
MzIzYWRiZDM4ZGVlZGU1M2YyNjBiZWY1ZS4uZDE3NjQ5Y2Q1M2FiMTE4NTkxYjkwYmJlMzFhMWE4
Y2VkODgxMTJmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKQEAgLTMzLDcgKzMzLDgg
QEAKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRXh0ZW5kYWJsZU1lc3NhZ2VF
dmVudC5oIgogI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgotI2luY2x1ZGUgIk5ldHdvcmtTdGF0
ZU5vdGlmaWVyLmgiCisjaW5jbHVkZSAiTG9hZGVyU3RyYXRlZ3kuaCIKKyNpbmNsdWRlICJQbGF0
Zm9ybVN0cmF0ZWdpZXMuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUg
IlNlcnZpY2VXb3JrZXJGZXRjaC5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZS5oIgpAQCAtNzEsNyArNzIsNyBAQCBwcml2YXRlOgogLy8gRklYTUU6IFVzZSB2YWxpZCBydW50
aW1lIGZsYWdzCiAKIFNlcnZpY2VXb3JrZXJUaHJlYWQ6OlNlcnZpY2VXb3JrZXJUaHJlYWQoY29u
c3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhJiBkYXRhLCBQQUw6OlNlc3Npb25JRCwgU3RyaW5n
JiYgdXNlckFnZW50LCBXb3JrZXJMb2FkZXJQcm94eSYgbG9hZGVyUHJveHksIFdvcmtlckRlYnVn
Z2VyUHJveHkmIGRlYnVnZ2VyUHJveHksIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5KiBp
ZGJDb25uZWN0aW9uUHJveHksIFNvY2tldFByb3ZpZGVyKiBzb2NrZXRQcm92aWRlcikKLSAgICA6
IFdvcmtlclRocmVhZChkYXRhLnNjcmlwdFVSTCwgInNlcnZpY2V3b3JrZXI6IiArIEluc3BlY3Rv
cjo6SWRlbnRpZmllcnNGYWN0b3J5OjpjcmVhdGVJZGVudGlmaWVyKCksIFdURk1vdmUodXNlckFn
ZW50KSwgTmV0d29ya1N0YXRlTm90aWZpZXI6OnNpbmdsZXRvbigpLm9uTGluZSgpLCBkYXRhLnNj
cmlwdCwgbG9hZGVyUHJveHksIGRlYnVnZ2VyUHJveHksIER1bW15U2VydmljZVdvcmtlclRocmVh
ZFByb3h5OjpzaGFyZWQoKSwgV29ya2VyVGhyZWFkU3RhcnRNb2RlOjpOb3JtYWwsIGRhdGEuY29u
dGVudFNlY3VyaXR5UG9saWN5LCBmYWxzZSwgZGF0YS5yZWdpc3RyYXRpb24ua2V5LnRvcE9yaWdp
bigpLnNlY3VyaXR5T3JpZ2luKCkuZ2V0KCksIE1vbm90b25pY1RpbWU6Om5vdygpLCBpZGJDb25u
ZWN0aW9uUHJveHksIHNvY2tldFByb3ZpZGVyLCBKU0M6OlJ1bnRpbWVGbGFnczo6Y3JlYXRlQWxs
RW5hYmxlZCgpLCBkYXRhLnNlc3Npb25JRCkKKyAgICA6IFdvcmtlclRocmVhZChkYXRhLnNjcmlw
dFVSTCwgInNlcnZpY2V3b3JrZXI6IiArIEluc3BlY3Rvcjo6SWRlbnRpZmllcnNGYWN0b3J5Ojpj
cmVhdGVJZGVudGlmaWVyKCksIFdURk1vdmUodXNlckFnZW50KSwgcGxhdGZvcm1TdHJhdGVnaWVz
KCktPmxvYWRlclN0cmF0ZWd5KCktPmlzT25MaW5lKCksIGRhdGEuc2NyaXB0LCBsb2FkZXJQcm94
eSwgZGVidWdnZXJQcm94eSwgRHVtbXlTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OnNoYXJlZCgp
LCBXb3JrZXJUaHJlYWRTdGFydE1vZGU6Ok5vcm1hbCwgZGF0YS5jb250ZW50U2VjdXJpdHlQb2xp
Y3ksIGZhbHNlLCBkYXRhLnJlZ2lzdHJhdGlvbi5rZXkudG9wT3JpZ2luKCkuc2VjdXJpdHlPcmln
aW4oKS5nZXQoKSwgTW9ub3RvbmljVGltZTo6bm93KCksIGlkYkNvbm5lY3Rpb25Qcm94eSwgc29j
a2V0UHJvdmlkZXIsIEpTQzo6UnVudGltZUZsYWdzOjpjcmVhdGVBbGxFbmFibGVkKCksIGRhdGEu
c2Vzc2lvbklEKQogICAgICwgbV9kYXRhKGRhdGEuaXNvbGF0ZWRDb3B5KCkpCiAgICAgLCBtX3dv
cmtlck9iamVjdFByb3h5KER1bW15U2VydmljZVdvcmtlclRocmVhZFByb3h5OjpzaGFyZWQoKSkK
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1Nl
cnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwCmluZGV4IDI4NDE5MzBkODg0
NDI5MDg0ZDIzOTRjNzc5NTVmYTJlMTU1YzMwOTUuLmI0MzcyY2UyNTUzZGMwMzNiOGFmNDdiZDEw
YThiNDBkY2Q5Mzc4OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcApA
QCAtMzAsNyArMzAsOSBAQAogCiAjaW5jbHVkZSAiQ2FjaGVTdG9yYWdlUHJvdmlkZXIuaCIKICNp
bmNsdWRlICJGcmFtZUxvYWRlci5oIgorI2luY2x1ZGUgIkxvYWRlclN0cmF0ZWd5LmgiCiAjaW5j
bHVkZSAiTWFpbkZyYW1lLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCiAjaW5j
bHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8
d3RmL01haW5UaHJlYWQuaD4KQEAgLTk1LDcgKzk3LDcgQEAgU2VydmljZVdvcmtlclRocmVhZFBy
b3h5OjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkoUGFnZUNvbmZpZ3VyYXRpb24mJiBwYWdlQ29u
ZmkKIHsKICAgICBzdGF0aWMgYm9vbCBhZGRlZExpc3RlbmVyOwogICAgIGlmICghYWRkZWRMaXN0
ZW5lcikgewotICAgICAgICBOZXR3b3JrU3RhdGVOb3RpZmllcjo6c2luZ2xldG9uKCkuYWRkTGlz
dGVuZXIoJm5ldHdvcmtTdGF0ZUNoYW5nZWQpOworICAgICAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMo
KS0+bG9hZGVyU3RyYXRlZ3koKS0+YWRkT25saW5lU3RhdGVDaGFuZ2VMaXN0ZW5lcigmbmV0d29y
a1N0YXRlQ2hhbmdlZCk7CiAgICAgICAgIGFkZGVkTGlzdGVuZXIgPSB0cnVlOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCBmYjY4ZTU5NmMxMzZmYmNkYjEyNDk0NDZh
NmU2YzM1NTU2ZDIxYWYxLi41ZjZmMWM2ZDMyODdiNjc0NTRkMDE0ZjEwYjQxM2Q5OGQwYmE0ZWRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtMjUxLDYgKzI1MSwxNCBAQCB2b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRGaW5pc2hQaW5nTG9hZCh1aW50NjRf
dCBwaW5nTG9hZElkZW50aWZpZQogICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6TmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEaWRGaW5pc2hQaW5nTG9hZChwaW5nTG9hZElkZW50aWZp
ZXIsIGVycm9yLCByZXNwb25zZSksIDApOwogfQogCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpzZXRPbkxpbmVTdGF0ZShib29sIGlzT25MaW5lKQoreworICAgIGlmICghbV9j
b25uZWN0aW9uLT5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY29ubmVjdGlv
bi0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpTZXRPbkxpbmVTdGF0
ZShpc09uTGluZSksIDApOworfQorCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpyZW1vdmVMb2FkSWRlbnRpZmllcihSZXNvdXJjZUxvYWRJZGVudGlmaWVyIGlkZW50aWZpZXIp
CiB7CiAgICAgUmVmUHRyPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4gbG9hZGVyID0gbV9uZXR3b3Jr
UmVzb3VyY2VMb2FkZXJzLmdldChpZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApp
bmRleCBhYTBkOWM0OWNhOTY4Y2Y2ODVlZTk2MTU0NjNjODU2NTgwMDMwODQyLi4xNmI0OGFiODI0
ZmQzMjIxYTkxYTg1YzkwZDBjZmY3MDMwMDAwZDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5o
CkBAIC02Niw2ICs2Niw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGlkQ2xlYW51cFJlc291cmNl
TG9hZGVyKE5ldHdvcmtSZXNvdXJjZUxvYWRlciYpOwogICAgIHZvaWQgZGlkRmluaXNoUGluZ0xv
YWQodWludDY0X3QgcGluZ0xvYWRJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOworICAgIHZvaWQgc2V0T25M
aW5lU3RhdGUoYm9vbCk7CiAKICAgICBib29sIGNhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmlj
c0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2NhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmlj
c0VuYWJsZWQ7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmNwcAppbmRleCA1ZjYyYWZjNjY0ZmI1NGZkODYxMWQ1ODg5YzI2YWJlNmI5NjQ4YmYy
Li41YmJjYzU2NjFiMDViNjIxODEwOTJiZmVmZWExMDAyM2FhMTA5NDEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtNjIsNiArNjIs
NyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0xvZ0luaXRpYWxpemF0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NSU1F
VHlwZVJlZ2lzdHJ5Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrU3RhdGVOb3RpZmllci5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9QbGF0Zm9ybUNvb2tpZUphci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VS
ZXF1ZXN0Lmg+CkBAIC0xMjEsNiArMTIyLDExIEBAIE5ldHdvcmtQcm9jZXNzOjpOZXR3b3JrUHJv
Y2VzcygpCiAjaWYgRU5BQkxFKExFR0FDWV9DVVNUT01fUFJPVE9DT0xfTUFOQUdFUikKICAgICBh
ZGRTdXBwbGVtZW50PExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcj4oKTsKICNlbmRpZgorCisg
ICAgTmV0d29ya1N0YXRlTm90aWZpZXI6OnNpbmdsZXRvbigpLmFkZExpc3RlbmVyKFt0aGlzXShi
b29sIGlzT25MaW5lKSB7CisgICAgICAgIGZvciAoYXV0byYgd2ViUHJvY2Vzc0Nvbm5lY3Rpb24g
OiBtX3dlYlByb2Nlc3NDb25uZWN0aW9ucykKKyAgICAgICAgICAgIHdlYlByb2Nlc3NDb25uZWN0
aW9uLT5zZXRPbkxpbmVTdGF0ZShpc09uTGluZSk7CisgICAgfSk7CiB9CiAKIE5ldHdvcmtQcm9j
ZXNzOjp+TmV0d29ya1Byb2Nlc3MoKQpAQCAtMzA2LDYgKzMxMiw5IEBAIHZvaWQgTmV0d29ya1By
b2Nlc3M6OmNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkKICNlbHNlCiAgICAg
bm90SW1wbGVtZW50ZWQoKTsKICNlbmRpZgorCisgICAgaWYgKCFtX3dlYlByb2Nlc3NDb25uZWN0
aW9ucy5pc0VtcHR5KCkpCisgICAgICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmxhc3QoKS0+
c2V0T25MaW5lU3RhdGUoTmV0d29ya1N0YXRlTm90aWZpZXI6OnNpbmdsZXRvbigpLm9uTGluZSgp
KTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2xlYXJDYWNoZWRDcmVkZW50aWFscygpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCBjMDUxNzY5ZjRhOGZlZDMwMjVkYTcxNjYxMzMx
MTMyYTg3ZGI1Y2M1Li43OTJmZDA0ZDAyYjdiMjc3OTlmODYxNmU2MWE1MTMwMzJkNzg2ZTU4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTE0Niw2ICsxNDYsMTEgQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZEZpbmlzaFByZWNvbm5lY3Rpb24odWludDY0X3QgcHJl
Y29ubmVjdGlvbklkZW4KICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJMb2FkZXJTdHJh
dGVneSgpLmRpZEZpbmlzaFByZWNvbm5lY3Rpb24ocHJlY29ubmVjdGlvbklkZW50aWZpZXIsIFdU
Rk1vdmUoZXJyb3IpKTsKIH0KIAordm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OnNldE9u
TGluZVN0YXRlKGJvb2wgaXNPbkxpbmUpCit7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
d2ViTG9hZGVyU3RyYXRlZ3koKS5zZXRPbkxpbmVTdGF0ZShpc09uTGluZSk7Cit9CisKICNpZiBF
TkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQogdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246
OmRpZENhY2hlUmVzb3VyY2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBT
aGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlJiBoYW5kbGUsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKaW5kZXggZjJmM2YyMmJkYjQ2YTI1YTQyNmYwNzcz
MGI0YzczODIwNjRiODY2Ny4uZTg3MmE4MWMxOTQ4MWNmZGQyZjU0ZDRmYjQ0M2E2NjViYjQ2YTMx
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKQEAgLTc1LDYgKzc1LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGRpZFdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKHVpbnQ2NF90IHJlcXVlc3RJZGVu
dGlmaWVyLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzKTsKICAgICB2b2lkIGRpZEZp
bmlzaFBpbmdMb2FkKHVpbnQ2NF90IHBpbmdMb2FkSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYpOwogICAgIHZvaWQgZGlkRmlu
aXNoUHJlY29ubmVjdGlvbih1aW50NjRfdCBwcmVjb25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciYmKTsKKyAgICB2b2lkIHNldE9uTGluZVN0YXRlKGJvb2wgaXNPbkxp
bmUpOwogCiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKICAgICAvLyBNZXNzYWdlIGhh
bmRsZXJzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IDg2
YzJkMTM0OTkyMjkzOTc0Y2FiODg2MTBjMzk3MzY4Mjg1ZDRkZTIuLjNlYzhhMWIwMWE3OGRkMjlh
MmExZDgzMjM0NWQxMzQ1NmI3ZTVmYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24u
bWVzc2FnZXMuaW4KQEAgLTI5LDQgKzI5LDUgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uIExlZ2FjeVJlY2VpdmVyIHsKICAgICBEaWRXcml0ZUJsb2JzVG9UZW1wb3JhcnlG
aWxlcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgVmVjdG9yPFN0cmluZz4gZmlsZW5hbWVz
KQogICAgIERpZEZpbmlzaFBpbmdMb2FkKHVpbnQ2NF90IHBpbmdMb2FkSWRlbnRpZmllciwgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciBlcnJvciwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNw
b25zZSkKICAgICBEaWRGaW5pc2hQcmVjb25uZWN0aW9uKHVpbnQ2NF90IHByZWNvbm5lY3Rpb25J
ZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yKQorICAgIFNldE9uTGluZVN0
YXRlKGJvb2wgaXNPbkxpbmUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCmluZGV4IDE0NWZhYjEwMDc4ZWM3ZTU5
OGQ5MGQzYTUwNmMwMmM4OGRiMTExMTUuLjMyNDE3ZDBmNmNiNWE5Nzc3OWIxM2VhYzIzZTllZjA3
ZGJhM2IwMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YkxvYWRlclN0cmF0ZWd5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKQEAgLTU0MCw2ICs1NDAsMjcgQEAgdm9pZCBXZWJMb2Fk
ZXJTdHJhdGVneTo6c3RvcmVEZXJpdmVkRGF0YVRvQ2FjaGUoY29uc3QgU0hBMTo6RGlnZXN0JiBi
b2R5SGFzaCwgY28KICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OlN0b3JlRGVyaXZlZERhdGFUb0NhY2hlKGtleSwgZGF0YVJlZmVy
ZW5jZSksIDApOwogfQogCitib29sIFdlYkxvYWRlclN0cmF0ZWd5Ojppc09uTGluZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1faXNPbkxpbmU7Cit9CisKK3ZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6
OmFkZE9ubGluZVN0YXRlQ2hhbmdlTGlzdGVuZXIoV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wpPiYm
IGxpc3RlbmVyKQoreworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbigpOworICAgIG1fb25saW5lU3RhdGVDaGFuZ2VMaXN0ZW5lcnMuYXBw
ZW5kKFdURk1vdmUobGlzdGVuZXIpKTsKK30KKwordm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c2V0
T25MaW5lU3RhdGUoYm9vbCBpc09uTGluZSkKK3sKKyAgICBpZiAobV9pc09uTGluZSA9PSBpc09u
TGluZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9pc09uTGluZSA9IGlzT25MaW5lOworICAg
IGZvciAoYXV0byYgbGlzdGVuZXIgOiBtX29ubGluZVN0YXRlQ2hhbmdlTGlzdGVuZXJzKQorICAg
ICAgICBsaXN0ZW5lcihpc09uTGluZSk7Cit9CisKIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnNl
dENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljc0VuYWJsZWQoYm9vbCBlbmFibGVkKQogewog
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6U2V0Q2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzRW5hYmxlZChlbmFibGVkKSwg
MCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2Fk
ZXJTdHJhdGVneS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVy
U3RyYXRlZ3kuaAppbmRleCA0OTIxOTY1YTZkMzc4M2ZjMzI0Zjk5ZTcwZGNkNTk3NTdlZmVjMDIy
Li41ZjFhMjJhNGUzZTQwNTMzZDQyNDgwYzJlNGY0NzA5OGJkNTFmZDc5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmgKQEAg
LTc5LDYgKzc5LDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2NoZWR1bGVMb2FkRnJvbU5ldHdv
cmtQcm9jZXNzKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyJiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiwgY29uc3QgV2ViUmVzb3VyY2VMb2FkZXI6OlRyYWNraW5nUGFyYW1ldGVycyYs
IFBBTDo6U2Vzc2lvbklELCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVk
aXJlY3QsIFNlY29uZHMgbWF4aW11bUJ1ZmZlcmluZ1RpbWUpOwogCisgICAgYm9vbCBpc09uTGlu
ZSgpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgYWRkT25saW5lU3RhdGVDaGFuZ2VMaXN0ZW5lcihX
VEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYpIGZpbmFsOworICAgIHZvaWQgc2V0T25MaW5lU3Rh
dGUoYm9vbCk7CisKIHByaXZhdGU6CiAgICAgdm9pZCBzY2hlZHVsZUxvYWQoV2ViQ29yZTo6UmVz
b3VyY2VMb2FkZXImLCBXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZSosIGJvb2wgc2hvdWxkQ2xlYXJS
ZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCk7CiAgICAgdm9pZCBzY2hlZHVsZUludGVybmFs
bHlGYWlsZWRMb2FkKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyJik7CkBAIC05Myw2ICs5Nyw4IEBA
IHByaXZhdGU6CiAgICAgSGFzaE1hcDx1bnNpZ25lZCBsb25nLCBXZWJVUkxTY2hlbWVUYXNrUHJv
eHkqPiBtX3VybFNjaGVtZVRhc2tzOwogICAgIEhhc2hNYXA8dW5zaWduZWQgbG9uZywgUGluZ0xv
YWRDb21wbGV0aW9uSGFuZGxlcj4gbV9waW5nTG9hZENvbXBsZXRpb25IYW5kbGVyczsKICAgICBI
YXNoTWFwPHVuc2lnbmVkIGxvbmcsIFByZWNvbm5lY3RDb21wbGV0aW9uSGFuZGxlcj4gbV9wcmVj
b25uZWN0Q29tcGxldGlvbkhhbmRsZXJzOworICAgIFZlY3RvcjxXVEY6OkZ1bmN0aW9uPHZvaWQo
Ym9vbCk+PiBtX29ubGluZVN0YXRlQ2hhbmdlTGlzdGVuZXJzOworICAgIGJvb2wgbV9pc09uTGlu
ZSB7IHRydWUgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIu
Y3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRT
Y2hlZHVsZXIuY3BwCmluZGV4IDhmMzlmNTQ1ZmQ4NmRlOWY1MWY5ZThlMzJmM2FmM2ZiNjRiY2Vl
ZmMuLjFkZjdjMzQ0ODgwNjIzZDA5NjkxZGY2NDVjY2U1ODVhYjk3MTViYzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291
cmNlTG9hZFNjaGVkdWxlci5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlIDxXZWJDb3Jl
L0ZyYW1lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL05l
dHdvcmtTdGF0ZU5vdGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QaW5nSGFuZGxlLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVN0cmF0ZWdpZXMuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1Jlc291cmNlUmVxdWVzdC5oPgpAQCAtMzY3LDYgKzM2OCwxNiBAQCB2b2lkIFdlYlJlc291cmNl
TG9hZFNjaGVkdWxlcjo6c3RhcnRQaW5nTG9hZChGcmFtZSYgZnJhbWUsIFJlc291cmNlUmVxdWVz
dCYgcmVxdQogICAgIG5ldyBQaW5nSGFuZGxlKGZyYW1lLmxvYWRlcigpLm5ldHdvcmtpbmdDb250
ZXh0KCksIHJlcXVlc3QsIG9wdGlvbnMuY3JlZGVudGlhbHMgIT0gRmV0Y2hPcHRpb25zOjpDcmVk
ZW50aWFsczo6T21pdCwgb3B0aW9ucy5yZWRpcmVjdCA9PSBGZXRjaE9wdGlvbnM6OlJlZGlyZWN0
OjpGb2xsb3csIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAorYm9vbCBXZWJSZXNv
dXJjZUxvYWRTY2hlZHVsZXI6OmlzT25MaW5lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gTmV0d29y
a1N0YXRlTm90aWZpZXI6OnNpbmdsZXRvbigpLm9uTGluZSgpOworfQorCit2b2lkIFdlYlJlc291
cmNlTG9hZFNjaGVkdWxlcjo6YWRkT25saW5lU3RhdGVDaGFuZ2VMaXN0ZW5lcihXVEY6OkZ1bmN0
aW9uPHZvaWQoYm9vbCk+JiYgbGlzdGVuZXIpCit7CisgICAgTmV0d29ya1N0YXRlTm90aWZpZXI6
OnNpbmdsZXRvbigpLmFkZExpc3RlbmVyKFdURk1vdmUobGlzdGVuZXIpKTsKK30KKwogdm9pZCBX
ZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnByZWNvbm5lY3RUbyhGcmFtZUxvYWRlciYsIGNvbnN0
IFVSTCYsIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBQcmVjb25uZWN0Q29tcGxldGlvbkhhbmRs
ZXImJikKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBv
cnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNv
cmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oCmluZGV4IGFlOTBkMTVmMjllNDcw
MTllNjQxMDZlYzlkMjcwYjM1NTE4YmU4MjQuLmY1YzFkOGIwNGU3ZjBkNjY4NzczYTJmMDcyYWEz
MzExYmM1OTdjMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBv
cnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9X
ZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaApAQCAtNzIsNiArNzIsOSBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIHNjaGVkdWxlUGx1Z2luU3RyZWFtTG9hZChXZWJDb3JlOjpG
cmFtZSYsIFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyQ2xpZW50JiwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFdlYkNv
cmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyPiYmKT4mJik7CiAKKyAgICBib29sIGlzT25M
aW5lKCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBhZGRPbmxpbmVTdGF0ZUNoYW5nZUxpc3RlbmVy
KFdURjo6RnVuY3Rpb248dm9pZChib29sKT4mJikgZmluYWw7CisKIHByb3RlY3RlZDoKICAgICB2
aXJ0dWFsIH5XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIoKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336499</attachid>
            <date>2018-03-25 13:04:13 -0700</date>
            <delta_ts>2018-03-27 12:06:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183989-20180325130412.patch</filename>
            <type>text/plain</type>
            <size>25065</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5OTU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTFmOWViYzlmNWQ0ZWE1
ZWU1YzNmZDhiYWU1ODhkMzNmZDAwMjgxMC4uZDFkNGYxYTkxOTZhMmUzNjRkNzQxOGY4YWYwYjJj
NmM3NDY4YWE2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE4LTAzLTI0ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBvbmxpbmUgc3RhdGUg
ZGV0ZWN0aW9uIGZyb20gdGhlIFdlYlByb2Nlc3MgdG8gdGhlIE5ldHdvcmtQcm9jZXNzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODM5ODkKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzM3MDkzMjk5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgb25saW5lIHN0YXRlIGRldGVjdGlvbiBmcm9tIHRo
ZSBXZWJQcm9jZXNzIHRvIHRoZSBOZXR3b3JrUHJvY2Vzcy4gVGhpcyBhdm9pZCBleGVjdXRpbmcg
dGhlIHNhbWUgKGV4cGVuc2l2ZSkgY29kZSBpbgorICAgICAgICBFQUNIIHdlYiBwcm9jZXNzIHdo
ZW5ldmVyIGEgbmV0d29yayBpbnRlcmZhY2UncyBzdGF0ZSBjaGFuZ2VzLiBOb3csIHRoZSBOZXR3
b3JrIFByb2Nlc3MgbW9uaXRvcnMgbmV0d29yayBpbnRlcmZhY2VzCisgICAgICAgIGFuZCBkZXRl
cm1pbmVzIHRoZSBvbmxpbmUgc3RhdGUgd2hlbmV2ZXIgYW4gaW50ZXJmYWNlJ3Mgc3RhdGUgY2hh
bmdlcy4gSWYgdGhlIG9uTGluZSBzdGF0ZSBjaGFuZ2VzLCBpdCBub3RpZmllcyBhbGwKKyAgICAg
ICAgaXRzIGNvbm5lY3RlZCBXZWJQcm9jZXNzZXMgdmlhIElQQy4KKworICAgICAgICAqIGluc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6bmV0d29ya1N0YXRlQ2hh
bmdlZCk6CisgICAgICAgICogbG9hZGVyL0xvYWRlclN0cmF0ZWd5Lmg6CisgICAgICAgICogcGFn
ZS9OYXZpZ2F0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yOjpvbkxpbmUgY29u
c3QpOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9OZXR3b3JrU3RhdGVOb3RpZmllci5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Oldvcmtlcjo6V29ya2VyKToKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlcjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtl
clRocmVhZDo6U2VydmljZVdvcmtlclRocmVhZCk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6U2VydmljZVdvcmtlclRocmVhZFByb3h5KToKKwog
MjAxOC0wMy0yNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVz
ZSBTZWN1cml0eU9yaWdpbkRhdGEgbW9yZSBjb25zaXN0ZW50bHkgaW4gU2VydmljZSBXb3JrZXIg
Y29kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCA1NTgxNzJkODMyNjcxYTVjNGI0OTA0NTFkMjk1YmQzNTAwZTUxNzJm
Li42YWMwN2E3ZmQ2MWU3MzA3OTdjMmNmYjA2Yjc4ZTU4ZGU4ZjdkZTRhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDMyIEBACisyMDE4LTAzLTI0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CisKKyAgICAgICAgTW92ZSBvbmxpbmUgc3RhdGUgZGV0ZWN0aW9uIGZyb20gdGhlIFdlYlByb2Nl
c3MgdG8gdGhlIE5ldHdvcmtQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xODM5ODkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM3MDkzMjk5
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUg
b25saW5lIHN0YXRlIGRldGVjdGlvbiBmcm9tIHRoZSBXZWJQcm9jZXNzIHRvIHRoZSBOZXR3b3Jr
UHJvY2Vzcy4gVGhpcyBhdm9pZCBleGVjdXRpbmcgdGhlIHNhbWUgKGV4cGVuc2l2ZSkgY29kZSBp
bgorICAgICAgICBFQUNIIHdlYiBwcm9jZXNzIHdoZW5ldmVyIGEgbmV0d29yayBpbnRlcmZhY2Un
cyBzdGF0ZSBjaGFuZ2VzLiBOb3csIHRoZSBOZXR3b3JrIFByb2Nlc3MgbW9uaXRvcnMgbmV0d29y
ayBpbnRlcmZhY2VzCisgICAgICAgIGFuZCBkZXRlcm1pbmVzIHRoZSBvbmxpbmUgc3RhdGUgd2hl
bmV2ZXIgYW4gaW50ZXJmYWNlJ3Mgc3RhdGUgY2hhbmdlcy4gSWYgdGhlIG9uTGluZSBzdGF0ZSBj
aGFuZ2VzLCBpdCBub3RpZmllcyBhbGwKKyAgICAgICAgaXRzIGNvbm5lY3RlZCBXZWJQcm9jZXNz
ZXMgdmlhIElQQy4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OnNldE9uTGluZVN0YXRlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6Ok5ldHdv
cmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNyZWF0ZU5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uOjpzZXRPbkxpbmVTdGF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW46CisgICAgICAgICog
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViTG9hZGVyU3RyYXRlZ3k6OmlzT25MaW5lIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViTG9hZGVyU3RyYXRlZ3k6OmFkZE9ubGluZVN0YXRlQ2hhbmdlTGlzdGVuZXIpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6c2V0T25MaW5lU3RhdGUpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oOgorCiAyMDE4LTAzLTI0ICBU
aW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIElnbm9yZSBz
YW5kYm94X2luaXRfd2l0aF9wYXJhbWV0ZXJzIGRlcHJlY2F0aW9uIHdhcm5pbmdzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
Q2hhbmdlTG9nCmluZGV4IDdmMmFlOTVlMWVjNTQ2NmVjM2EzZWVlYjFkM2UzY2JjNGFjZGIxMjku
LjdjZjE3NGEwNzIyY2Y5MGI3MmYwOWIwNjIzMzdiYmE5OWI5NzlhOTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTgtMDMtMjQgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIG9ubGluZSBzdGF0ZSBkZXRlY3Rpb24gZnJvbSB0
aGUgV2ViUHJvY2VzcyB0byB0aGUgTmV0d29ya1Byb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mzk4OQorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vMzcwOTMyOTk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgTm8gY2hhbmdlIG9uIFdlYktpdDEgZXhjZXB0IHRoYXQgV2ViUmVzb3VyY2VMb2FkU2No
ZWR1bGVyIG5lZWRzIHRvIG92ZXJyaWRlCisgICAgICAgIDIgbmV3IHZpcnR1YWwgZnVuY3Rpb25z
IHdoaWNoIGZvcndhcmQgdGhlIGNhbGxzIHRvIHRoZSBOZXR3b3JrU3RhdGVOb3RpZmllci4KKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHA6Cisg
ICAgICAgIChXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OmlzT25MaW5lIGNvbnN0KToKKyAgICAg
ICAgKFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6YWRkT25saW5lU3RhdGVDaGFuZ2VMaXN0ZW5l
cik6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmg6
CisKIDIwMTgtMDMtMjQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAg
ICBVc2UgU2VjdXJpdHlPcmlnaW5EYXRhIG1vcmUgY29uc2lzdGVudGx5IGluIFNlcnZpY2UgV29y
a2VyIGNvZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcAppbmRleCA2MjM2YmFm
MDQ5NjRjNjJkNjUzMDJlNWRmZDIyZjE3YWEzOTZmODhkLi44ZmFlN2RkN2Y0MmFhNmJmNmVjMTdj
Njc0NjZkZTQxYWQ5OTBjZWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3Bw
CkBAIC0zMiw4ICszMiw5IEBACiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJJ
bnNwZWN0b3JQYWdlQWdlbnQuaCIKICNpbmNsdWRlICJJbnN0cnVtZW50aW5nQWdlbnRzLmgiCisj
aW5jbHVkZSAiTG9hZGVyU3RyYXRlZ3kuaCIKICNpbmNsdWRlICJNYWluRnJhbWUuaCIKLSNpbmNs
dWRlICJOZXR3b3JrU3RhdGVOb3RpZmllci5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2ll
cy5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtODIsNyArODMsNyBAQCB2b2lkIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVB
Z2VudDo6dXBkYXRlQXBwbGljYXRpb25DYWNoZVN0YXR1cyhGcmFtZSogZnJhbWUpCiAKIHZvaWQg
SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpuZXR3b3JrU3RhdGVDaGFuZ2VkKCkKIHsK
LSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+bmV0d29ya1N0YXRlVXBkYXRlZChOZXR3b3JrU3Rh
dGVOb3RpZmllcjo6c2luZ2xldG9uKCkub25MaW5lKCkpOworICAgIG1fZnJvbnRlbmREaXNwYXRj
aGVyLT5uZXR3b3JrU3RhdGVVcGRhdGVkKHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJTdHJh
dGVneSgpLT5pc09uTGluZSgpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hl
QWdlbnQ6OmdldEZyYW1lc1dpdGhNYW5pZmVzdHMoRXJyb3JTdHJpbmcmLCBSZWZQdHI8SlNPTjo6
QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcHBsaWNhdGlvbkNhY2hlOjpGcmFtZVdpdGhN
YW5pZmVzdD4+JiByZXN1bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9h
ZGVyU3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkZXJTdHJhdGVneS5oCmlu
ZGV4IGI5MjAwYThkOTg1NGM5ZDVkZDJlM2RlNWU2NjQ0MDlhN2I0MWRkODMuLmFmYjI5YzcwMmMy
OTA1OTQ5MzlmZDM4YzU0OGFlMGQwMjdkYmRlMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Mb2FkZXJTdHJhdGVneS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2Fk
ZXJTdHJhdGVneS5oCkBAIC03NSw2ICs3NSw5IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9p
ZCBzZXRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3NFbmFibGVkKGJvb2wpID0gMDsKIAor
ICAgIHZpcnR1YWwgYm9vbCBpc09uTGluZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
YWRkT25saW5lU3RhdGVDaGFuZ2VMaXN0ZW5lcihXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYp
ID0gMDsKKwogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgfkxvYWRlclN0cmF0ZWd5KCk7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3BwCmluZGV4IDhkOTA5MDMzN2QzODVmZWE3NDMxNmMyZTk2
M2YxMzUwYWE5Y2I1ODEuLjMwZTQwZWNhNjFlMTE1M2IxYTFhNDVmZTBmNGI5NzA5MTVlYmQ1Y2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAKQEAgLTMxLDggKzMxLDkgQEAKICNpbmNsdWRl
ICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVk
ZSAiR2VvbG9jYXRpb24uaCIKLSNpbmNsdWRlICJOZXR3b3JrU3RhdGVOb3RpZmllci5oIgorI2lu
Y2x1ZGUgIkxvYWRlclN0cmF0ZWd5LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlBs
YXRmb3JtU3RyYXRlZ2llcy5oIgogI2luY2x1ZGUgIlBsdWdpbkRhdGEuaCIKICNpbmNsdWRlICJT
Y3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKQEAgLTkxLDcg
KzkyLDcgQEAgU3RyaW5nIE5hdmlnYXRvcjo6dXNlckFnZW50KCkgY29uc3QKIAogYm9vbCBOYXZp
Z2F0b3I6Om9uTGluZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIE5ldHdvcmtTdGF0ZU5vdGlmaWVy
OjpzaW5nbGV0b24oKS5vbkxpbmUoKTsKKyAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCkt
PmxvYWRlclN0cmF0ZWd5KCktPmlzT25MaW5lKCk7CiB9CiAKIERPTVBsdWdpbkFycmF5JiBOYXZp
Z2F0b3I6OnBsdWdpbnMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggOTU1ODE0NjRhM2RkM2ExZjQy
MGU4NWE1YTU2Yzk0OThlZGI1MmZiMS4uOTc3Mzc0ZTQ0YmEzNDQ3NDgzOWQxZTFmZGE0YWNjZDRl
ZDIyOTgyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC02MSwxMiArNjEsMTIgQEAKICNpbmNsdWRl
ICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmgiCiAjaW5jbHVkZSAiTGliV2ViUlRDUHJvdmlkZXIuaCIKKyNpbmNsdWRlICJMb2FkZXJT
dHJhdGVneS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJMb3dQb3dlck1vZGVO
b3RpZmllci5oIgogI2luY2x1ZGUgIk1haW5GcmFtZS5oIgogI2luY2x1ZGUgIk1lZGlhQ2FuU3Rh
cnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIk5hdmlnYXRvci5oIgotI2luY2x1ZGUgIk5ldHdvcmtT
dGF0ZU5vdGlmaWVyLmgiCiAjaW5jbHVkZSAiUGFnZUNhY2hlLmgiCiAjaW5jbHVkZSAiUGFnZUNv
bmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJQYWdlQ29uc29sZUNsaWVudC5oIgpAQCAtNzYsNiAr
NzYsNyBAQAogI2luY2x1ZGUgIlBlcmZvcm1hbmNlTG9nZ2luZ0NsaWVudC5oIgogI2luY2x1ZGUg
IlBlcmZvcm1hbmNlTW9uaXRvci5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFu
YWdlci5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgogI2luY2x1ZGUgIlBsdWdJ
bkNsaWVudC5oIgogI2luY2x1ZGUgIlBsdWdpbkRhdGEuaCIKICNpbmNsdWRlICJQbHVnaW5JbmZv
UHJvdmlkZXIuaCIKQEAgLTI0Myw3ICsyNDQsNyBAQCBQYWdlOjpQYWdlKFBhZ2VDb25maWd1cmF0
aW9uJiYgcGFnZUNvbmZpZ3VyYXRpb24pCiAKICAgICBzdGF0aWMgYm9vbCBhZGRlZExpc3RlbmVy
OwogICAgIGlmICghYWRkZWRMaXN0ZW5lcikgewotICAgICAgICBOZXR3b3JrU3RhdGVOb3RpZmll
cjo6c2luZ2xldG9uKCkuYWRkTGlzdGVuZXIoJm5ldHdvcmtTdGF0ZUNoYW5nZWQpOworICAgICAg
ICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+YWRkT25saW5lU3RhdGVD
aGFuZ2VMaXN0ZW5lcigmbmV0d29ya1N0YXRlQ2hhbmdlZCk7CiAgICAgICAgIGFkZGVkTGlzdGVu
ZXIgPSB0cnVlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9OZXR3b3JrU3RhdGVOb3RpZmllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9OZXR3b3JrU3RhdGVOb3RpZmllci5oCmluZGV4IGY5ODk5MWRmYzg0YzNjODQxMzc4
MjBlMTM0MTQyMGU1NWZkODBlYjMuLjFhOWQ1ZDZjYjE4MWIzOTJlYzA3ODJhZTI0ZjgwMzdkZDBk
Mjg5M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29y
a1N0YXRlTm90aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05l
dHdvcmtTdGF0ZU5vdGlmaWVyLmgKQEAgLTQ3LDEwICs0NywxMCBAQCBjbGFzcyBOZXR3b3JrU3Rh
dGVOb3RpZmllciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTmV0d29ya1N0YXRlTm90aWZp
ZXIpOwogCiBwdWJsaWM6Ci0gICAgc3RhdGljIE5ldHdvcmtTdGF0ZU5vdGlmaWVyJiBzaW5nbGV0
b24oKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgTmV0d29ya1N0YXRlTm90aWZpZXImIHNp
bmdsZXRvbigpOwogCi0gICAgYm9vbCBvbkxpbmUoKTsKLSAgICB2b2lkIGFkZExpc3RlbmVyKFdU
Rjo6RnVuY3Rpb248dm9pZChib29sIGlzT25MaW5lKT4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQg
Ym9vbCBvbkxpbmUoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZExpc3RlbmVyKFdURjo6
RnVuY3Rpb248dm9pZChib29sIGlzT25MaW5lKT4mJik7CiAKIHByaXZhdGU6CiAgICAgZnJpZW5k
IE5ldmVyRGVzdHJveWVkPE5ldHdvcmtTdGF0ZU5vdGlmaWVyPjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyLmNwcAppbmRleCBkZjFhYzAxZjQ5MDg5NzIyZGIyNGNmY2JmOGM1MDczNzMzZjVjMTgwLi40
OWQ4MzIwNjhiYzg4NzM4YTcwY2QxNTU2NzMwZGNkZjBkZTYwOWFmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXIuY3BwCkBAIC0zMSw3ICszMSw4IEBACiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNs
dWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgi
Ci0jaW5jbHVkZSAiTmV0d29ya1N0YXRlTm90aWZpZXIuaCIKKyNpbmNsdWRlICJMb2FkZXJTdHJh
dGVneS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgogI2luY2x1ZGUgIlJlc291
cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIldv
cmtlckdsb2JhbFNjb3BlUHJveHkuaCIKQEAgLTY0LDcgKzY1LDcgQEAgaW5saW5lIFdvcmtlcjo6
V29ya2VyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEpTQzo6UnVudGltZUZsYWdz
IHJ1bnRpbWUKIHsKICAgICBzdGF0aWMgYm9vbCBhZGRlZExpc3RlbmVyOwogICAgIGlmICghYWRk
ZWRMaXN0ZW5lcikgewotICAgICAgICBOZXR3b3JrU3RhdGVOb3RpZmllcjo6c2luZ2xldG9uKCku
YWRkTGlzdGVuZXIoJm5ldHdvcmtTdGF0ZUNoYW5nZWQpOworICAgICAgICBwbGF0Zm9ybVN0cmF0
ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+YWRkT25saW5lU3RhdGVDaGFuZ2VMaXN0ZW5lcigm
bmV0d29ya1N0YXRlQ2hhbmdlZCk7CiAgICAgICAgIGFkZGVkTGlzdGVuZXIgPSB0cnVlOwogICAg
IH0KIApAQCAtMTc2LDcgKzE3Nyw3IEBAIHZvaWQgV29ya2VyOjpub3RpZnlGaW5pc2hlZCgpCiAg
ICAgaWYgKG1fc2NyaXB0TG9hZGVyLT5mYWlsZWQoKSB8fCAhc2Vzc2lvbklELmlzVmFsaWQoKSkK
ICAgICAgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lcnJvckV2
ZW50LCBmYWxzZSwgdHJ1ZSkpOwogICAgIGVsc2UgewotICAgICAgICBib29sIGlzT25saW5lID0g
TmV0d29ya1N0YXRlTm90aWZpZXI6OnNpbmdsZXRvbigpLm9uTGluZSgpOworICAgICAgICBib29s
IGlzT25saW5lID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0cmF0ZWd5KCktPmlzT25M
aW5lKCk7CiAgICAgICAgIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVy
cyYgY29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzID0gbV9jb250ZW50U2VjdXJp
dHlQb2xpY3lSZXNwb25zZUhlYWRlcnMgPyBtX2NvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNl
SGVhZGVycy52YWx1ZSgpIDogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5jb250ZW50U2VjdXJp
dHlQb2xpY3koKS0+cmVzcG9uc2VIZWFkZXJzKCk7CiAgICAgICAgIG1fY29udGV4dFByb3h5LnN0
YXJ0V29ya2VyR2xvYmFsU2NvcGUobV9zY3JpcHRMb2FkZXItPnVybCgpLCBzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCktPnVzZXJBZ2VudChtX3NjcmlwdExvYWRlci0+dXJsKCkpLCBpc09ubGluZSwg
bV9zY3JpcHRMb2FkZXItPnNjcmlwdCgpLCBjb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhl
YWRlcnMsIG1fc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5LCBtX3dv
cmtlckNyZWF0aW9uVGltZSwgbV9ydW50aW1lRmxhZ3MsIHNlc3Npb25JRCk7CiAgICAgICAgIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2NyaXB0SW1wb3J0ZWQoKnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSwgbV9zY3JpcHRMb2FkZXItPmlkZW50aWZpZXIoKSwgbV9zY3JpcHRMb2FkZXItPnNj
cmlwdCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250
ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKaW5kZXggYWI2YTI0ZTY5NDljN2Ni
MzIzYWRiZDM4ZGVlZGU1M2YyNjBiZWY1ZS4uZDE3NjQ5Y2Q1M2FiMTE4NTkxYjkwYmJlMzFhMWE4
Y2VkODgxMTJmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKQEAgLTMzLDcgKzMzLDgg
QEAKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRXh0ZW5kYWJsZU1lc3NhZ2VF
dmVudC5oIgogI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgotI2luY2x1ZGUgIk5ldHdvcmtTdGF0
ZU5vdGlmaWVyLmgiCisjaW5jbHVkZSAiTG9hZGVyU3RyYXRlZ3kuaCIKKyNpbmNsdWRlICJQbGF0
Zm9ybVN0cmF0ZWdpZXMuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUg
IlNlcnZpY2VXb3JrZXJGZXRjaC5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZS5oIgpAQCAtNzEsNyArNzIsNyBAQCBwcml2YXRlOgogLy8gRklYTUU6IFVzZSB2YWxpZCBydW50
aW1lIGZsYWdzCiAKIFNlcnZpY2VXb3JrZXJUaHJlYWQ6OlNlcnZpY2VXb3JrZXJUaHJlYWQoY29u
c3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhJiBkYXRhLCBQQUw6OlNlc3Npb25JRCwgU3RyaW5n
JiYgdXNlckFnZW50LCBXb3JrZXJMb2FkZXJQcm94eSYgbG9hZGVyUHJveHksIFdvcmtlckRlYnVn
Z2VyUHJveHkmIGRlYnVnZ2VyUHJveHksIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5KiBp
ZGJDb25uZWN0aW9uUHJveHksIFNvY2tldFByb3ZpZGVyKiBzb2NrZXRQcm92aWRlcikKLSAgICA6
IFdvcmtlclRocmVhZChkYXRhLnNjcmlwdFVSTCwgInNlcnZpY2V3b3JrZXI6IiArIEluc3BlY3Rv
cjo6SWRlbnRpZmllcnNGYWN0b3J5OjpjcmVhdGVJZGVudGlmaWVyKCksIFdURk1vdmUodXNlckFn
ZW50KSwgTmV0d29ya1N0YXRlTm90aWZpZXI6OnNpbmdsZXRvbigpLm9uTGluZSgpLCBkYXRhLnNj
cmlwdCwgbG9hZGVyUHJveHksIGRlYnVnZ2VyUHJveHksIER1bW15U2VydmljZVdvcmtlclRocmVh
ZFByb3h5OjpzaGFyZWQoKSwgV29ya2VyVGhyZWFkU3RhcnRNb2RlOjpOb3JtYWwsIGRhdGEuY29u
dGVudFNlY3VyaXR5UG9saWN5LCBmYWxzZSwgZGF0YS5yZWdpc3RyYXRpb24ua2V5LnRvcE9yaWdp
bigpLnNlY3VyaXR5T3JpZ2luKCkuZ2V0KCksIE1vbm90b25pY1RpbWU6Om5vdygpLCBpZGJDb25u
ZWN0aW9uUHJveHksIHNvY2tldFByb3ZpZGVyLCBKU0M6OlJ1bnRpbWVGbGFnczo6Y3JlYXRlQWxs
RW5hYmxlZCgpLCBkYXRhLnNlc3Npb25JRCkKKyAgICA6IFdvcmtlclRocmVhZChkYXRhLnNjcmlw
dFVSTCwgInNlcnZpY2V3b3JrZXI6IiArIEluc3BlY3Rvcjo6SWRlbnRpZmllcnNGYWN0b3J5Ojpj
cmVhdGVJZGVudGlmaWVyKCksIFdURk1vdmUodXNlckFnZW50KSwgcGxhdGZvcm1TdHJhdGVnaWVz
KCktPmxvYWRlclN0cmF0ZWd5KCktPmlzT25MaW5lKCksIGRhdGEuc2NyaXB0LCBsb2FkZXJQcm94
eSwgZGVidWdnZXJQcm94eSwgRHVtbXlTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OnNoYXJlZCgp
LCBXb3JrZXJUaHJlYWRTdGFydE1vZGU6Ok5vcm1hbCwgZGF0YS5jb250ZW50U2VjdXJpdHlQb2xp
Y3ksIGZhbHNlLCBkYXRhLnJlZ2lzdHJhdGlvbi5rZXkudG9wT3JpZ2luKCkuc2VjdXJpdHlPcmln
aW4oKS5nZXQoKSwgTW9ub3RvbmljVGltZTo6bm93KCksIGlkYkNvbm5lY3Rpb25Qcm94eSwgc29j
a2V0UHJvdmlkZXIsIEpTQzo6UnVudGltZUZsYWdzOjpjcmVhdGVBbGxFbmFibGVkKCksIGRhdGEu
c2Vzc2lvbklEKQogICAgICwgbV9kYXRhKGRhdGEuaXNvbGF0ZWRDb3B5KCkpCiAgICAgLCBtX3dv
cmtlck9iamVjdFByb3h5KER1bW15U2VydmljZVdvcmtlclRocmVhZFByb3h5OjpzaGFyZWQoKSkK
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1Nl
cnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwCmluZGV4IDI4NDE5MzBkODg0
NDI5MDg0ZDIzOTRjNzc5NTVmYTJlMTU1YzMwOTUuLmI0MzcyY2UyNTUzZGMwMzNiOGFmNDdiZDEw
YThiNDBkY2Q5Mzc4OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcApA
QCAtMzAsNyArMzAsOSBAQAogCiAjaW5jbHVkZSAiQ2FjaGVTdG9yYWdlUHJvdmlkZXIuaCIKICNp
bmNsdWRlICJGcmFtZUxvYWRlci5oIgorI2luY2x1ZGUgIkxvYWRlclN0cmF0ZWd5LmgiCiAjaW5j
bHVkZSAiTWFpbkZyYW1lLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCiAjaW5j
bHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8
d3RmL01haW5UaHJlYWQuaD4KQEAgLTk1LDcgKzk3LDcgQEAgU2VydmljZVdvcmtlclRocmVhZFBy
b3h5OjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkoUGFnZUNvbmZpZ3VyYXRpb24mJiBwYWdlQ29u
ZmkKIHsKICAgICBzdGF0aWMgYm9vbCBhZGRlZExpc3RlbmVyOwogICAgIGlmICghYWRkZWRMaXN0
ZW5lcikgewotICAgICAgICBOZXR3b3JrU3RhdGVOb3RpZmllcjo6c2luZ2xldG9uKCkuYWRkTGlz
dGVuZXIoJm5ldHdvcmtTdGF0ZUNoYW5nZWQpOworICAgICAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMo
KS0+bG9hZGVyU3RyYXRlZ3koKS0+YWRkT25saW5lU3RhdGVDaGFuZ2VMaXN0ZW5lcigmbmV0d29y
a1N0YXRlQ2hhbmdlZCk7CiAgICAgICAgIGFkZGVkTGlzdGVuZXIgPSB0cnVlOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCBmYjY4ZTU5NmMxMzZmYmNkYjEyNDk0NDZh
NmU2YzM1NTU2ZDIxYWYxLi41ZjZmMWM2ZDMyODdiNjc0NTRkMDE0ZjEwYjQxM2Q5OGQwYmE0ZWRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtMjUxLDYgKzI1MSwxNCBAQCB2b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRGaW5pc2hQaW5nTG9hZCh1aW50NjRf
dCBwaW5nTG9hZElkZW50aWZpZQogICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6TmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEaWRGaW5pc2hQaW5nTG9hZChwaW5nTG9hZElkZW50aWZp
ZXIsIGVycm9yLCByZXNwb25zZSksIDApOwogfQogCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpzZXRPbkxpbmVTdGF0ZShib29sIGlzT25MaW5lKQoreworICAgIGlmICghbV9j
b25uZWN0aW9uLT5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY29ubmVjdGlv
bi0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpTZXRPbkxpbmVTdGF0
ZShpc09uTGluZSksIDApOworfQorCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpyZW1vdmVMb2FkSWRlbnRpZmllcihSZXNvdXJjZUxvYWRJZGVudGlmaWVyIGlkZW50aWZpZXIp
CiB7CiAgICAgUmVmUHRyPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4gbG9hZGVyID0gbV9uZXR3b3Jr
UmVzb3VyY2VMb2FkZXJzLmdldChpZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApp
bmRleCBhYTBkOWM0OWNhOTY4Y2Y2ODVlZTk2MTU0NjNjODU2NTgwMDMwODQyLi4xNmI0OGFiODI0
ZmQzMjIxYTkxYTg1YzkwZDBjZmY3MDMwMDAwZDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5o
CkBAIC02Niw2ICs2Niw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGlkQ2xlYW51cFJlc291cmNl
TG9hZGVyKE5ldHdvcmtSZXNvdXJjZUxvYWRlciYpOwogICAgIHZvaWQgZGlkRmluaXNoUGluZ0xv
YWQodWludDY0X3QgcGluZ0xvYWRJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOworICAgIHZvaWQgc2V0T25M
aW5lU3RhdGUoYm9vbCk7CiAKICAgICBib29sIGNhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmlj
c0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2NhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmlj
c0VuYWJsZWQ7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmNwcAppbmRleCA1ZjYyYWZjNjY0ZmI1NGZkODYxMWQ1ODg5YzI2YWJlNmI5NjQ4YmYy
Li41MjgwMzI0YTdlMzRmNDc3M2Y2ZDUyOTJkYzU4ZmJjOGQwZTIxM2RhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtNjIsNiArNjIs
NyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0xvZ0luaXRpYWxpemF0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NSU1F
VHlwZVJlZ2lzdHJ5Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrU3RhdGVOb3RpZmllci5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9QbGF0Zm9ybUNvb2tpZUphci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VS
ZXF1ZXN0Lmg+CkBAIC0xMjEsNiArMTIyLDEyIEBAIE5ldHdvcmtQcm9jZXNzOjpOZXR3b3JrUHJv
Y2VzcygpCiAjaWYgRU5BQkxFKExFR0FDWV9DVVNUT01fUFJPVE9DT0xfTUFOQUdFUikKICAgICBh
ZGRTdXBwbGVtZW50PExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcj4oKTsKICNlbmRpZgorCisg
ICAgTmV0d29ya1N0YXRlTm90aWZpZXI6OnNpbmdsZXRvbigpLmFkZExpc3RlbmVyKFt0aGlzXShi
b29sIGlzT25MaW5lKSB7CisgICAgICAgIGF1dG8gd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zID0gbV93
ZWJQcm9jZXNzQ29ubmVjdGlvbnM7CisgICAgICAgIGZvciAoYXV0byYgd2ViUHJvY2Vzc0Nvbm5l
Y3Rpb24gOiB3ZWJQcm9jZXNzQ29ubmVjdGlvbnMpCisgICAgICAgICAgICB3ZWJQcm9jZXNzQ29u
bmVjdGlvbi0+c2V0T25MaW5lU3RhdGUoaXNPbkxpbmUpOworICAgIH0pOwogfQogCiBOZXR3b3Jr
UHJvY2Vzczo6fk5ldHdvcmtQcm9jZXNzKCkKQEAgLTMwNiw2ICszMTMsOSBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzOjpjcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcygpCiAjZWxzZQog
ICAgIG5vdEltcGxlbWVudGVkKCk7CiAjZW5kaWYKKworICAgIGlmICghbV93ZWJQcm9jZXNzQ29u
bmVjdGlvbnMuaXNFbXB0eSgpKQorICAgICAgICBtX3dlYlByb2Nlc3NDb25uZWN0aW9ucy5sYXN0
KCktPnNldE9uTGluZVN0YXRlKE5ldHdvcmtTdGF0ZU5vdGlmaWVyOjpzaW5nbGV0b24oKS5vbkxp
bmUoKSk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNsZWFyQ2FjaGVkQ3JlZGVudGlhbHMo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggYzA1MTc2OWY0YThmZWQzMDI1ZGE3MTY2
MTMzMTEzMmE4N2RiNWNjNS4uNzkyZmQwNGQwMmI3YjI3Nzk5Zjg2MTZlNjFhNTEzMDMyZDc4NmU1
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC0xNDYsNiArMTQ2LDExIEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRGaW5pc2hQcmVjb25uZWN0aW9uKHVpbnQ2NF90
IHByZWNvbm5lY3Rpb25JZGVuCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViTG9hZGVy
U3RyYXRlZ3koKS5kaWRGaW5pc2hQcmVjb25uZWN0aW9uKHByZWNvbm5lY3Rpb25JZGVudGlmaWVy
LCBXVEZNb3ZlKGVycm9yKSk7CiB9CiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpz
ZXRPbkxpbmVTdGF0ZShib29sIGlzT25MaW5lKQoreworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLndlYkxvYWRlclN0cmF0ZWd5KCkuc2V0T25MaW5lU3RhdGUoaXNPbkxpbmUpOworfQorCiAj
aWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKIHZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uOjpkaWRDYWNoZVJlc291cmNlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29u
c3QgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSYgaGFuZGxlLCBQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCmluZGV4IGYyZjNmMjJiZGI0NmEyNWE0MjZm
MDc3MzBiNGM3MzgyMDY0Yjg2NjcuLmU4NzJhODFjMTk0ODFjZmRkMmY1NGQ0ZmI0NDNhNjY1YmI0
NmEzMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCkBAIC03NSw2ICs3NSw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBkaWRXcml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyh1aW50NjRfdCByZXF1ZXN0
SWRlbnRpZmllciwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcyk7CiAgICAgdm9pZCBk
aWRGaW5pc2hQaW5nTG9hZCh1aW50NjRfdCBwaW5nTG9hZElkZW50aWZpZXIsIFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmKTsKICAgICB2b2lkIGRp
ZEZpbmlzaFByZWNvbm5lY3Rpb24odWludDY0X3QgcHJlY29ubmVjdGlvbklkZW50aWZpZXIsIFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImJik7CisgICAgdm9pZCBzZXRPbkxpbmVTdGF0ZShib29sIGlz
T25MaW5lKTsKIAogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCiAgICAgLy8gTWVzc2Fn
ZSBoYW5kbGVycy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgppbmRl
eCA4NmMyZDEzNDk5MjI5Mzk3NGNhYjg4NjEwYzM5NzM2ODI4NWQ0ZGUyLi4zZWM4YTFiMDFhNzhk
ZDI5YTJhMWQ4MzIzNDVkMTM0NTZiN2U1ZmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uLm1lc3NhZ2VzLmluCkBAIC0yOSw0ICsyOSw1IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbiBMZWdhY3lSZWNlaXZlciB7CiAgICAgRGlkV3JpdGVCbG9ic1RvVGVtcG9y
YXJ5RmlsZXModWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFZlY3RvcjxTdHJpbmc+IGZpbGVu
YW1lcykKICAgICBEaWRGaW5pc2hQaW5nTG9hZCh1aW50NjRfdCBwaW5nTG9hZElkZW50aWZpZXIs
IFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Ug
cmVzcG9uc2UpCiAgICAgRGlkRmluaXNoUHJlY29ubmVjdGlvbih1aW50NjRfdCBwcmVjb25uZWN0
aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvcikKKyAgICBTZXRPbkxp
bmVTdGF0ZShib29sIGlzT25MaW5lKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAppbmRleCAxNDVmYWIxMDA3OGVj
N2U1OThkOTBkM2E1MDZjMDJjODhkYjExMTE1Li4zMjQxN2QwZjZjYjVhOTc3NzliMTNlYWMyM2U5
ZWYwN2RiYTNiMDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCkBAIC01NDAsNiArNTQwLDI3IEBAIHZvaWQgV2Vi
TG9hZGVyU3RyYXRlZ3k6OnN0b3JlRGVyaXZlZERhdGFUb0NhY2hlKGNvbnN0IFNIQTE6OkRpZ2Vz
dCYgYm9keUhhc2gsIGNvCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTdG9yZURlcml2ZWREYXRhVG9DYWNoZShrZXksIGRhdGFS
ZWZlcmVuY2UpLCAwKTsKIH0KIAorYm9vbCBXZWJMb2FkZXJTdHJhdGVneTo6aXNPbkxpbmUoKSBj
b25zdAoreworICAgIHJldHVybiBtX2lzT25MaW5lOworfQorCit2b2lkIFdlYkxvYWRlclN0cmF0
ZWd5OjphZGRPbmxpbmVTdGF0ZUNoYW5nZUxpc3RlbmVyKFdURjo6RnVuY3Rpb248dm9pZChib29s
KT4mJiBsaXN0ZW5lcikKK3sKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKKyAgICBtX29ubGluZVN0YXRlQ2hhbmdlTGlzdGVuZXJz
LmFwcGVuZChXVEZNb3ZlKGxpc3RlbmVyKSk7Cit9CisKK3ZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6
OnNldE9uTGluZVN0YXRlKGJvb2wgaXNPbkxpbmUpCit7CisgICAgaWYgKG1faXNPbkxpbmUgPT0g
aXNPbkxpbmUpCisgICAgICAgIHJldHVybjsKKworICAgIG1faXNPbkxpbmUgPSBpc09uTGluZTsK
KyAgICBmb3IgKGF1dG8mIGxpc3RlbmVyIDogbV9vbmxpbmVTdGF0ZUNoYW5nZUxpc3RlbmVycykK
KyAgICAgICAgbGlzdGVuZXIoaXNPbkxpbmUpOworfQorCiB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5
OjpzZXRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3NFbmFibGVkKGJvb2wgZW5hYmxlZCkK
IHsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OlNldENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljc0VuYWJsZWQoZW5hYmxl
ZCksIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
TG9hZGVyU3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxv
YWRlclN0cmF0ZWd5LmgKaW5kZXggNDkyMTk2NWE2ZDM3ODNmYzMyNGY5OWU3MGRjZDU5NzU3ZWZl
YzAyMi4uNWYxYTIyYTRlM2U0MDUzM2Q0MjQ4MGMyZTRmNDcwOThiZDUxZmQ3OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5o
CkBAIC03OSw2ICs3OSwxMCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNjaGVkdWxlTG9hZEZyb21O
ZXR3b3JrUHJvY2VzcyhXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciYsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYlJlc291cmNlTG9hZGVyOjpUcmFja2luZ1BhcmFtZXRl
cnMmLCBQQUw6OlNlc3Npb25JRCwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRU
UFJlZGlyZWN0LCBTZWNvbmRzIG1heGltdW1CdWZmZXJpbmdUaW1lKTsKIAorICAgIGJvb2wgaXNP
bkxpbmUoKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIGFkZE9ubGluZVN0YXRlQ2hhbmdlTGlzdGVu
ZXIoV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKKyAgICB2b2lkIHNldE9uTGlu
ZVN0YXRlKGJvb2wpOworCiBwcml2YXRlOgogICAgIHZvaWQgc2NoZWR1bGVMb2FkKFdlYkNvcmU6
OlJlc291cmNlTG9hZGVyJiwgV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2UqLCBib29sIHNob3VsZENs
ZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QpOwogICAgIHZvaWQgc2NoZWR1bGVJbnRl
cm5hbGx5RmFpbGVkTG9hZChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciYpOwpAQCAtOTMsNiArOTcs
OCBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8dW5zaWduZWQgbG9uZywgV2ViVVJMU2NoZW1lVGFz
a1Byb3h5Kj4gbV91cmxTY2hlbWVUYXNrczsKICAgICBIYXNoTWFwPHVuc2lnbmVkIGxvbmcsIFBp
bmdMb2FkQ29tcGxldGlvbkhhbmRsZXI+IG1fcGluZ0xvYWRDb21wbGV0aW9uSGFuZGxlcnM7CiAg
ICAgSGFzaE1hcDx1bnNpZ25lZCBsb25nLCBQcmVjb25uZWN0Q29tcGxldGlvbkhhbmRsZXI+IG1f
cHJlY29ubmVjdENvbXBsZXRpb25IYW5kbGVyczsKKyAgICBWZWN0b3I8V1RGOjpGdW5jdGlvbjx2
b2lkKGJvb2wpPj4gbV9vbmxpbmVTdGF0ZUNoYW5nZUxpc3RlbmVyczsKKyAgICBib29sIG1faXNP
bkxpbmUgeyB0cnVlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1
bGVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VM
b2FkU2NoZWR1bGVyLmNwcAppbmRleCA4ZjM5ZjU0NWZkODZkZTlmNTFmOWU4ZTMyZjNhZjNmYjY0
YmNlZWZjLi4xZGY3YzM0NDg4MDYyM2QwOTY5MWRmNjQ1Y2NlNTg1YWI5NzE1YmM3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNj
aGVkdWxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJS
ZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSA8V2Vi
Q29yZS9GcmFtZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXIuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9OZXR3b3JrU3RhdGVOb3RpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGluZ0hhbmRsZS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1TdHJhdGVnaWVzLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KQEAgLTM2Nyw2ICszNjgsMTYgQEAgdm9pZCBXZWJSZXNv
dXJjZUxvYWRTY2hlZHVsZXI6OnN0YXJ0UGluZ0xvYWQoRnJhbWUmIGZyYW1lLCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXUKICAgICBuZXcgUGluZ0hhbmRsZShmcmFtZS5sb2FkZXIoKS5uZXR3b3JraW5n
Q29udGV4dCgpLCByZXF1ZXN0LCBvcHRpb25zLmNyZWRlbnRpYWxzICE9IEZldGNoT3B0aW9uczo6
Q3JlZGVudGlhbHM6Ok9taXQsIG9wdGlvbnMucmVkaXJlY3QgPT0gRmV0Y2hPcHRpb25zOjpSZWRp
cmVjdDo6Rm9sbG93LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKK2Jvb2wgV2Vi
UmVzb3VyY2VMb2FkU2NoZWR1bGVyOjppc09uTGluZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE5l
dHdvcmtTdGF0ZU5vdGlmaWVyOjpzaW5nbGV0b24oKS5vbkxpbmUoKTsKK30KKwordm9pZCBXZWJS
ZXNvdXJjZUxvYWRTY2hlZHVsZXI6OmFkZE9ubGluZVN0YXRlQ2hhbmdlTGlzdGVuZXIoV1RGOjpG
dW5jdGlvbjx2b2lkKGJvb2wpPiYmIGxpc3RlbmVyKQoreworICAgIE5ldHdvcmtTdGF0ZU5vdGlm
aWVyOjpzaW5nbGV0b24oKS5hZGRMaXN0ZW5lcihXVEZNb3ZlKGxpc3RlbmVyKSk7Cit9CisKIHZv
aWQgV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpwcmVjb25uZWN0VG8oRnJhbWVMb2FkZXImLCBj
b25zdCBVUkwmLCBTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgUHJlY29ubmVjdENvbXBsZXRpb25I
YW5kbGVyJiYpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVT
dXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9X
ZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaAppbmRleCBhZTkwZDE1ZjI5
ZTQ3MDE5ZTY0MTA2ZWM5ZDI3MGIzNTUxOGJlODI0Li5mNWMxZDhiMDRlN2YwZDY2ODc3M2EyZjA3
MmFhMzMxMWJjNTk3YzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVT
dXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgKQEAgLTcyLDYgKzcy
LDkgQEAgcHVibGljOgogCiAgICAgdm9pZCBzY2hlZHVsZVBsdWdpblN0cmVhbUxvYWQoV2ViQ29y
ZTo6RnJhbWUmLCBXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlckNsaWVudCYsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxX
ZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcj4mJik+JiYpOwogCisgICAgYm9vbCBp
c09uTGluZSgpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgYWRkT25saW5lU3RhdGVDaGFuZ2VMaXN0
ZW5lcihXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYpIGZpbmFsOworCiBwcm90ZWN0ZWQ6CiAg
ICAgdmlydHVhbCB+V2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyKCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336606</attachid>
            <date>2018-03-27 12:06:57 -0700</date>
            <delta_ts>2018-03-27 14:02:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183989-20180327120657.patch</filename>
            <type>text/plain</type>
            <size>25003</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5OTk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzJiMDJiZWQ2YTAzYWNm
ZTNhNjFjNGQzOTk5MTA0MGRhOWFmYTczNy4uZjE0MjZhYjc1MWZjMWEyYmQ3ZjY3ZjMyNGJhZWFj
OWE0MmI3MTBhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE4LTAzLTI3ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBvbmxpbmUgc3RhdGUg
ZGV0ZWN0aW9uIGZyb20gdGhlIFdlYlByb2Nlc3MgdG8gdGhlIE5ldHdvcmtQcm9jZXNzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODM5ODkKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzM3MDkzMjk5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgb25saW5lIHN0YXRlIGRldGVjdGlvbiBmcm9tIHRo
ZSBXZWJQcm9jZXNzIHRvIHRoZSBOZXR3b3JrUHJvY2Vzcy4gVGhpcyBhdm9pZCBleGVjdXRpbmcg
dGhlIHNhbWUgKGV4cGVuc2l2ZSkgY29kZSBpbgorICAgICAgICBFQUNIIHdlYiBwcm9jZXNzIHdo
ZW5ldmVyIGEgbmV0d29yayBpbnRlcmZhY2UncyBzdGF0ZSBjaGFuZ2VzLiBOb3csIHRoZSBOZXR3
b3JrIFByb2Nlc3MgbW9uaXRvcnMgbmV0d29yayBpbnRlcmZhY2VzCisgICAgICAgIGFuZCBkZXRl
cm1pbmVzIHRoZSBvbmxpbmUgc3RhdGUgd2hlbmV2ZXIgYW4gaW50ZXJmYWNlJ3Mgc3RhdGUgY2hh
bmdlcy4gSWYgdGhlIG9uTGluZSBzdGF0ZSBjaGFuZ2VzLCBpdCBub3RpZmllcyBhbGwKKyAgICAg
ICAgaXRzIGNvbm5lY3RlZCBXZWJQcm9jZXNzZXMgdmlhIElQQy4KKworICAgICAgICAqIGluc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6bmV0d29ya1N0YXRlQ2hh
bmdlZCk6CisgICAgICAgICogbG9hZGVyL0xvYWRlclN0cmF0ZWd5Lmg6CisgICAgICAgICogcGFn
ZS9OYXZpZ2F0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yOjpvbkxpbmUgY29u
c3QpOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9OZXR3b3JrU3RhdGVOb3RpZmllci5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Oldvcmtlcjo6V29ya2VyKToKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlcjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtl
clRocmVhZDo6U2VydmljZVdvcmtlclRocmVhZCk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6U2VydmljZVdvcmtlclRocmVhZFByb3h5KToKKwog
MjAxOC0wMy0yNyAgVGhpYmF1bHQgU2F1bmllciAgPHRzYXVuaWVyQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgW0dTdHJlYW1lcl0gRW5oYW5jZSBkZWJ1Z2dpbmcgaW4gdGhlIEJhc2VQbGF5ZXIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKaW5kZXggODYwMGM1YjRiNjM2ZWI5NDcyZWIyMjY0MTMyOGIyMzE0ZDUxNGUyYy4uNmExYWY2
ZjBhNzcwMTdjODdhZmMyZjhmNTg4NDMxYTcyY2UzMDFmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwz
MiBAQAorMjAxOC0wMy0yNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAg
ICAgIE1vdmUgb25saW5lIHN0YXRlIGRldGVjdGlvbiBmcm9tIHRoZSBXZWJQcm9jZXNzIHRvIHRo
ZSBOZXR3b3JrUHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTgzOTg5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNzA5MzI5OT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIG9ubGluZSBz
dGF0ZSBkZXRlY3Rpb24gZnJvbSB0aGUgV2ViUHJvY2VzcyB0byB0aGUgTmV0d29ya1Byb2Nlc3Mu
IFRoaXMgYXZvaWQgZXhlY3V0aW5nIHRoZSBzYW1lIChleHBlbnNpdmUpIGNvZGUgaW4KKyAgICAg
ICAgRUFDSCB3ZWIgcHJvY2VzcyB3aGVuZXZlciBhIG5ldHdvcmsgaW50ZXJmYWNlJ3Mgc3RhdGUg
Y2hhbmdlcy4gTm93LCB0aGUgTmV0d29yayBQcm9jZXNzIG1vbml0b3JzIG5ldHdvcmsgaW50ZXJm
YWNlcworICAgICAgICBhbmQgZGV0ZXJtaW5lcyB0aGUgb25saW5lIHN0YXRlIHdoZW5ldmVyIGFu
IGludGVyZmFjZSdzIHN0YXRlIGNoYW5nZXMuIElmIHRoZSBvbkxpbmUgc3RhdGUgY2hhbmdlcywg
aXQgbm90aWZpZXMgYWxsCisgICAgICAgIGl0cyBjb25uZWN0ZWQgV2ViUHJvY2Vzc2VzIHZpYSBJ
UEMuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpzZXRPbkxpbmVTdGF0ZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpOZXR3b3JrUHJvY2Vz
cyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpjcmVhdGVOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbjo6c2V0T25MaW5lU3RhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nl
c3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkxv
YWRlclN0cmF0ZWd5Ojppc09uTGluZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkxvYWRl
clN0cmF0ZWd5OjphZGRPbmxpbmVTdGF0ZUNoYW5nZUxpc3RlbmVyKToKKyAgICAgICAgKFdlYktp
dDo6V2ViTG9hZGVyU3RyYXRlZ3k6OnNldE9uTGluZVN0YXRlKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaDoKKwogMjAxOC0wMy0yNyAgQnJpYW4gQnVy
ZyAgPGJidXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgQXV0b21hdGlvbjogc3VwcG9ydCBl
bnRlci9leGl0IGZ1bGxzY3JlZW4gYW5kIGhpZGUvcmVzdG9yZSB3aW5kb3cgb3BlcmF0aW9ucwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L0NoYW5nZUxvZwppbmRleCA1ZTkzYTBhMTg1YTU3ODljNmYzYjFmNTExZTNhMWM2MjFi
YWU0NTU2Li5hYjhlOTVhNGY5YTFhNGM5MGZlNTIzNGVhNzQ1YTAzZTI5MzNiY2Q1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE4LTAzLTI3ICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBvbmxpbmUgc3RhdGUgZGV0ZWN0aW9u
IGZyb20gdGhlIFdlYlByb2Nlc3MgdG8gdGhlIE5ldHdvcmtQcm9jZXNzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODM5ODkKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzM3MDkzMjk5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE5vIGNoYW5nZSBvbiBXZWJLaXQxIGV4Y2VwdCB0aGF0IFdlYlJlc291cmNl
TG9hZFNjaGVkdWxlciBuZWVkcyB0byBvdmVycmlkZQorICAgICAgICAyIG5ldyB2aXJ0dWFsIGZ1
bmN0aW9ucyB3aGljaCBmb3J3YXJkIHRoZSBjYWxscyB0byB0aGUgTmV0d29ya1N0YXRlTm90aWZp
ZXIuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIu
Y3BwOgorICAgICAgICAoV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjppc09uTGluZSBjb25zdCk6
CisgICAgICAgIChXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OmFkZE9ubGluZVN0YXRlQ2hhbmdl
TGlzdGVuZXIpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVk
dWxlci5oOgorCiAyMDE4LTAzLTI2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAK
ICAgICAgICAgVXNlIFNlY3VyaXR5T3JpZ2luRGF0YSBtb3JlIGNvbnNpc3RlbnRseSBpbiBTZXJ2
aWNlIFdvcmtlciBjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAKaW5kZXgg
NjIzNmJhZjA0OTY0YzYyZDY1MzAyZTVkZmQyMmYxN2FhMzk2Zjg4ZC4uOGZhZTdkZDdmNDJhYTZi
ZjZlYzE3YzY3NDY2ZGU0MWFkOTkwY2VjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFn
ZW50LmNwcApAQCAtMzIsOCArMzIsOSBAQAogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5j
bHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50
cy5oIgorI2luY2x1ZGUgIkxvYWRlclN0cmF0ZWd5LmgiCiAjaW5jbHVkZSAiTWFpbkZyYW1lLmgi
Ci0jaW5jbHVkZSAiTmV0d29ya1N0YXRlTm90aWZpZXIuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0
cmF0ZWdpZXMuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTgyLDcgKzgzLDcgQEAgdm9pZCBJbnNwZWN0b3JBcHBsaWNhdGlv
bkNhY2hlQWdlbnQ6OnVwZGF0ZUFwcGxpY2F0aW9uQ2FjaGVTdGF0dXMoRnJhbWUqIGZyYW1lKQog
CiB2b2lkIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6bmV0d29ya1N0YXRlQ2hhbmdl
ZCgpCiB7Ci0gICAgbV9mcm9udGVuZERpc3BhdGNoZXItPm5ldHdvcmtTdGF0ZVVwZGF0ZWQoTmV0
d29ya1N0YXRlTm90aWZpZXI6OnNpbmdsZXRvbigpLm9uTGluZSgpKTsKKyAgICBtX2Zyb250ZW5k
RGlzcGF0Y2hlci0+bmV0d29ya1N0YXRlVXBkYXRlZChwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9h
ZGVyU3RyYXRlZ3koKS0+aXNPbkxpbmUoKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQXBwbGljYXRp
b25DYWNoZUFnZW50OjpnZXRGcmFtZXNXaXRoTWFuaWZlc3RzKEVycm9yU3RyaW5nJiwgUmVmUHRy
PEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXBwbGljYXRpb25DYWNoZTo6RnJh
bWVXaXRoTWFuaWZlc3Q+PiYgcmVzdWx0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0xvYWRlclN0cmF0ZWd5LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRl
Z3kuaAppbmRleCBiOTIwMGE4ZDk4NTRjOWQ1ZGQyZTNkZTVlNjY0NDA5YTdiNDFkZDgzLi5hZmIy
OWM3MDJjMjkwNTk0OTM5ZmQzOGM1NDhhZTBkMDI3ZGJkZTE2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvTG9hZGVyU3RyYXRlZ3kuaApAQCAtNzUsNiArNzUsOSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0
dWFsIHZvaWQgc2V0Q2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzRW5hYmxlZChib29sKSA9
IDA7CiAKKyAgICB2aXJ0dWFsIGJvb2wgaXNPbkxpbmUoKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGFkZE9ubGluZVN0YXRlQ2hhbmdlTGlzdGVuZXIoV1RGOjpGdW5jdGlvbjx2b2lkKGJv
b2wpPiYmKSA9IDA7CisKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5Mb2FkZXJTdHJhdGVneSgp
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcAppbmRleCA4ZDkwOTAzMzdkMzg1ZmVhNzQz
MTZjMmU5NjNmMTM1MGFhOWNiNTgxLi4zMGU0MGVjYTYxZTExNTNiMWExYTQ1ZmUwZjRiOTcwOTE1
ZWJkNWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3BwCkBAIC0zMSw4ICszMSw5IEBACiAj
aW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgog
I2luY2x1ZGUgIkdlb2xvY2F0aW9uLmgiCi0jaW5jbHVkZSAiTmV0d29ya1N0YXRlTm90aWZpZXIu
aCIKKyNpbmNsdWRlICJMb2FkZXJTdHJhdGVneS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNs
dWRlICJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKICNpbmNsdWRlICJQbHVnaW5EYXRhLmgiCiAjaW5j
bHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCkBA
IC05MSw3ICs5Miw3IEBAIFN0cmluZyBOYXZpZ2F0b3I6OnVzZXJBZ2VudCgpIGNvbnN0CiAKIGJv
b2wgTmF2aWdhdG9yOjpvbkxpbmUoKSBjb25zdAogewotICAgIHJldHVybiBOZXR3b3JrU3RhdGVO
b3RpZmllcjo6c2luZ2xldG9uKCkub25MaW5lKCk7CisgICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRl
Z2llcygpLT5sb2FkZXJTdHJhdGVneSgpLT5pc09uTGluZSgpOwogfQogCiBET01QbHVnaW5BcnJh
eSYgTmF2aWdhdG9yOjpwbHVnaW5zKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDk1NTgxNDY0YTNk
ZDNhMWY0MjBlODVhNWE1NmM5NDk4ZWRiNTJmYjEuLjk3NzM3NGU0NGJhMzQ0NzQ4MzlkMWUxZmRh
NGFjY2Q0ZWQyMjk4MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtNjEsMTIgKzYxLDEyIEBACiAj
aW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIkxpYldlYlJUQ1Byb3ZpZGVyLmgiCisjaW5jbHVkZSAi
TG9hZGVyU3RyYXRlZ3kuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTG93UG93
ZXJNb2RlTm90aWZpZXIuaCIKICNpbmNsdWRlICJNYWluRnJhbWUuaCIKICNpbmNsdWRlICJNZWRp
YUNhblN0YXJ0TGlzdGVuZXIuaCIKICNpbmNsdWRlICJOYXZpZ2F0b3IuaCIKLSNpbmNsdWRlICJO
ZXR3b3JrU3RhdGVOb3RpZmllci5oIgogI2luY2x1ZGUgIlBhZ2VDYWNoZS5oIgogI2luY2x1ZGUg
IlBhZ2VDb25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiUGFnZUNvbnNvbGVDbGllbnQuaCIKQEAg
LTc2LDYgKzc2LDcgQEAKICNpbmNsdWRlICJQZXJmb3JtYW5jZUxvZ2dpbmdDbGllbnQuaCIKICNp
bmNsdWRlICJQZXJmb3JtYW5jZU1vbml0b3IuaCIKICNpbmNsdWRlICJQbGF0Zm9ybU1lZGlhU2Vz
c2lvbk1hbmFnZXIuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKICNpbmNsdWRl
ICJQbHVnSW5DbGllbnQuaCIKICNpbmNsdWRlICJQbHVnaW5EYXRhLmgiCiAjaW5jbHVkZSAiUGx1
Z2luSW5mb1Byb3ZpZGVyLmgiCkBAIC0yNDMsNyArMjQ0LDcgQEAgUGFnZTo6UGFnZShQYWdlQ29u
ZmlndXJhdGlvbiYmIHBhZ2VDb25maWd1cmF0aW9uKQogCiAgICAgc3RhdGljIGJvb2wgYWRkZWRM
aXN0ZW5lcjsKICAgICBpZiAoIWFkZGVkTGlzdGVuZXIpIHsKLSAgICAgICAgTmV0d29ya1N0YXRl
Tm90aWZpZXI6OnNpbmdsZXRvbigpLmFkZExpc3RlbmVyKCZuZXR3b3JrU3RhdGVDaGFuZ2VkKTsK
KyAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0cmF0ZWd5KCktPmFkZE9ubGlu
ZVN0YXRlQ2hhbmdlTGlzdGVuZXIoJm5ldHdvcmtTdGF0ZUNoYW5nZWQpOwogICAgICAgICBhZGRl
ZExpc3RlbmVyID0gdHJ1ZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuaAppbmRleCBmOTg5OTFkZmM4NGMz
Yzg0MTM3ODIwZTEzNDE0MjBlNTVmZDgwZWIzLi4xYTlkNWQ2Y2IxODFiMzkyZWMwNzgyYWUyNGY4
MDM3ZGQwZDI4OTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L05ldHdvcmtTdGF0ZU5vdGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9OZXR3b3JrU3RhdGVOb3RpZmllci5oCkBAIC00NywxMCArNDcsMTAgQEAgY2xhc3MgTmV0
d29ya1N0YXRlTm90aWZpZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE5ldHdvcmtTdGF0
ZU5vdGlmaWVyKTsKIAogcHVibGljOgotICAgIHN0YXRpYyBOZXR3b3JrU3RhdGVOb3RpZmllciYg
c2luZ2xldG9uKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIE5ldHdvcmtTdGF0ZU5vdGlm
aWVyJiBzaW5nbGV0b24oKTsKIAotICAgIGJvb2wgb25MaW5lKCk7Ci0gICAgdm9pZCBhZGRMaXN0
ZW5lcihXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCBpc09uTGluZSk+JiYpOworICAgIFdFQkNPUkVf
RVhQT1JUIGJvb2wgb25MaW5lKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRMaXN0ZW5l
cihXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCBpc09uTGluZSk+JiYpOwogCiBwcml2YXRlOgogICAg
IGZyaWVuZCBOZXZlckRlc3Ryb3llZDxOZXR3b3JrU3RhdGVOb3RpZmllcj47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlci5jcHAKaW5kZXggZGYxYWMwMWY0OTA4OTcyMmRiMjRjZmNiZjhjNTA3MzczM2Y1
YzE4MC4uNDlkODMyMDY4YmM4ODczOGE3MGNkMTU1NjczMGRjZGYwZGU2MDlhZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyLmNwcApAQCAtMzEsNyArMzEsOCBAQAogI2luY2x1ZGUgIkV2ZW50Lmgi
CiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRh
dGlvbi5oIgotI2luY2x1ZGUgIk5ldHdvcmtTdGF0ZU5vdGlmaWVyLmgiCisjaW5jbHVkZSAiTG9h
ZGVyU3RyYXRlZ3kuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKICNpbmNsdWRl
ICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNs
dWRlICJXb3JrZXJHbG9iYWxTY29wZVByb3h5LmgiCkBAIC02NCw3ICs2NSw3IEBAIGlubGluZSBX
b3JrZXI6OldvcmtlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBKU0M6OlJ1bnRp
bWVGbGFncyBydW50aW1lCiB7CiAgICAgc3RhdGljIGJvb2wgYWRkZWRMaXN0ZW5lcjsKICAgICBp
ZiAoIWFkZGVkTGlzdGVuZXIpIHsKLSAgICAgICAgTmV0d29ya1N0YXRlTm90aWZpZXI6OnNpbmds
ZXRvbigpLmFkZExpc3RlbmVyKCZuZXR3b3JrU3RhdGVDaGFuZ2VkKTsKKyAgICAgICAgcGxhdGZv
cm1TdHJhdGVnaWVzKCktPmxvYWRlclN0cmF0ZWd5KCktPmFkZE9ubGluZVN0YXRlQ2hhbmdlTGlz
dGVuZXIoJm5ldHdvcmtTdGF0ZUNoYW5nZWQpOwogICAgICAgICBhZGRlZExpc3RlbmVyID0gdHJ1
ZTsKICAgICB9CiAKQEAgLTE3Niw3ICsxNzcsNyBAQCB2b2lkIFdvcmtlcjo6bm90aWZ5RmluaXNo
ZWQoKQogICAgIGlmIChtX3NjcmlwdExvYWRlci0+ZmFpbGVkKCkgfHwgIXNlc3Npb25JRC5pc1Zh
bGlkKCkpCiAgICAgICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCku
ZXJyb3JFdmVudCwgZmFsc2UsIHRydWUpKTsKICAgICBlbHNlIHsKLSAgICAgICAgYm9vbCBpc09u
bGluZSA9IE5ldHdvcmtTdGF0ZU5vdGlmaWVyOjpzaW5nbGV0b24oKS5vbkxpbmUoKTsKKyAgICAg
ICAgYm9vbCBpc09ubGluZSA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJTdHJhdGVneSgp
LT5pc09uTGluZSgpOwogICAgICAgICBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25z
ZUhlYWRlcnMmIGNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyA9IG1fY29udGVu
dFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzID8gbV9jb250ZW50U2VjdXJpdHlQb2xpY3lS
ZXNwb25zZUhlYWRlcnMudmFsdWUoKSA6IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+Y29udGVu
dFNlY3VyaXR5UG9saWN5KCktPnJlc3BvbnNlSGVhZGVycygpOwogICAgICAgICBtX2NvbnRleHRQ
cm94eS5zdGFydFdvcmtlckdsb2JhbFNjb3BlKG1fc2NyaXB0TG9hZGVyLT51cmwoKSwgc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLT51c2VyQWdlbnQobV9zY3JpcHRMb2FkZXItPnVybCgpKSwgaXNP
bmxpbmUsIG1fc2NyaXB0TG9hZGVyLT5zY3JpcHQoKSwgY29udGVudFNlY3VyaXR5UG9saWN5UmVz
cG9uc2VIZWFkZXJzLCBtX3Nob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGlj
eSwgbV93b3JrZXJDcmVhdGlvblRpbWUsIG1fcnVudGltZUZsYWdzLCBzZXNzaW9uSUQpOwogICAg
ICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNjcmlwdEltcG9ydGVkKCpzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCksIG1fc2NyaXB0TG9hZGVyLT5pZGVudGlmaWVyKCksIG1fc2NyaXB0TG9h
ZGVyLT5zY3JpcHQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCmluZGV4IGFiNmEyNGU2
OTQ5YzdjYjMyM2FkYmQzOGRlZWRlNTNmMjYwYmVmNWUuLmQxNzY0OWNkNTNhYjExODU5MWI5MGJi
ZTMxYTFhOGNlZDg4MTEyZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCkBAIC0zMyw3
ICszMyw4IEBACiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkV4dGVuZGFibGVN
ZXNzYWdlRXZlbnQuaCIKICNpbmNsdWRlICJKU0RPTVByb21pc2UuaCIKLSNpbmNsdWRlICJOZXR3
b3JrU3RhdGVOb3RpZmllci5oIgorI2luY2x1ZGUgIkxvYWRlclN0cmF0ZWd5LmgiCisjaW5jbHVk
ZSAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNp
bmNsdWRlICJTZXJ2aWNlV29ya2VyRmV0Y2guaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGUuaCIKQEAgLTcxLDcgKzcyLDcgQEAgcHJpdmF0ZToKIC8vIEZJWE1FOiBVc2UgdmFs
aWQgcnVudGltZSBmbGFncwogCiBTZXJ2aWNlV29ya2VyVGhyZWFkOjpTZXJ2aWNlV29ya2VyVGhy
ZWFkKGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYgZGF0YSwgUEFMOjpTZXNzaW9uSUQs
IFN0cmluZyYmIHVzZXJBZ2VudCwgV29ya2VyTG9hZGVyUHJveHkmIGxvYWRlclByb3h5LCBXb3Jr
ZXJEZWJ1Z2dlclByb3h5JiBkZWJ1Z2dlclByb3h5LCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Q
cm94eSogaWRiQ29ubmVjdGlvblByb3h5LCBTb2NrZXRQcm92aWRlciogc29ja2V0UHJvdmlkZXIp
Ci0gICAgOiBXb3JrZXJUaHJlYWQoZGF0YS5zY3JpcHRVUkwsICJzZXJ2aWNld29ya2VyOiIgKyBJ
bnNwZWN0b3I6OklkZW50aWZpZXJzRmFjdG9yeTo6Y3JlYXRlSWRlbnRpZmllcigpLCBXVEZNb3Zl
KHVzZXJBZ2VudCksIE5ldHdvcmtTdGF0ZU5vdGlmaWVyOjpzaW5nbGV0b24oKS5vbkxpbmUoKSwg
ZGF0YS5zY3JpcHQsIGxvYWRlclByb3h5LCBkZWJ1Z2dlclByb3h5LCBEdW1teVNlcnZpY2VXb3Jr
ZXJUaHJlYWRQcm94eTo6c2hhcmVkKCksIFdvcmtlclRocmVhZFN0YXJ0TW9kZTo6Tm9ybWFsLCBk
YXRhLmNvbnRlbnRTZWN1cml0eVBvbGljeSwgZmFsc2UsIGRhdGEucmVnaXN0cmF0aW9uLmtleS50
b3BPcmlnaW4oKS5zZWN1cml0eU9yaWdpbigpLmdldCgpLCBNb25vdG9uaWNUaW1lOjpub3coKSwg
aWRiQ29ubmVjdGlvblByb3h5LCBzb2NrZXRQcm92aWRlciwgSlNDOjpSdW50aW1lRmxhZ3M6OmNy
ZWF0ZUFsbEVuYWJsZWQoKSwgZGF0YS5zZXNzaW9uSUQpCisgICAgOiBXb3JrZXJUaHJlYWQoZGF0
YS5zY3JpcHRVUkwsICJzZXJ2aWNld29ya2VyOiIgKyBJbnNwZWN0b3I6OklkZW50aWZpZXJzRmFj
dG9yeTo6Y3JlYXRlSWRlbnRpZmllcigpLCBXVEZNb3ZlKHVzZXJBZ2VudCksIHBsYXRmb3JtU3Ry
YXRlZ2llcygpLT5sb2FkZXJTdHJhdGVneSgpLT5pc09uTGluZSgpLCBkYXRhLnNjcmlwdCwgbG9h
ZGVyUHJveHksIGRlYnVnZ2VyUHJveHksIER1bW15U2VydmljZVdvcmtlclRocmVhZFByb3h5Ojpz
aGFyZWQoKSwgV29ya2VyVGhyZWFkU3RhcnRNb2RlOjpOb3JtYWwsIGRhdGEuY29udGVudFNlY3Vy
aXR5UG9saWN5LCBmYWxzZSwgZGF0YS5yZWdpc3RyYXRpb24ua2V5LnRvcE9yaWdpbigpLnNlY3Vy
aXR5T3JpZ2luKCkuZ2V0KCksIE1vbm90b25pY1RpbWU6Om5vdygpLCBpZGJDb25uZWN0aW9uUHJv
eHksIHNvY2tldFByb3ZpZGVyLCBKU0M6OlJ1bnRpbWVGbGFnczo6Y3JlYXRlQWxsRW5hYmxlZCgp
LCBkYXRhLnNlc3Npb25JRCkKICAgICAsIG1fZGF0YShkYXRhLmlzb2xhdGVkQ29weSgpKQogICAg
ICwgbV93b3JrZXJPYmplY3RQcm94eShEdW1teVNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6c2hh
cmVkKCkpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29u
dGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcAppbmRleCAyODQx
OTMwZDg4NDQyOTA4NGQyMzk0Yzc3OTU1ZmEyZTE1NWMzMDk1Li5iNDM3MmNlMjU1M2RjMDMzYjhh
ZjQ3YmQxMGE4YjQwZGNkOTM3ODk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94
eS5jcHAKQEAgLTMwLDcgKzMwLDkgQEAKIAogI2luY2x1ZGUgIkNhY2hlU3RvcmFnZVByb3ZpZGVy
LmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKKyNpbmNsdWRlICJMb2FkZXJTdHJhdGVneS5o
IgogI2luY2x1ZGUgIk1haW5GcmFtZS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5o
IgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2lu
Y2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CkBAIC05NSw3ICs5Nyw3IEBAIFNlcnZpY2VXb3JrZXJU
aHJlYWRQcm94eTo6U2VydmljZVdvcmtlclRocmVhZFByb3h5KFBhZ2VDb25maWd1cmF0aW9uJiYg
cGFnZUNvbmZpCiB7CiAgICAgc3RhdGljIGJvb2wgYWRkZWRMaXN0ZW5lcjsKICAgICBpZiAoIWFk
ZGVkTGlzdGVuZXIpIHsKLSAgICAgICAgTmV0d29ya1N0YXRlTm90aWZpZXI6OnNpbmdsZXRvbigp
LmFkZExpc3RlbmVyKCZuZXR3b3JrU3RhdGVDaGFuZ2VkKTsKKyAgICAgICAgcGxhdGZvcm1TdHJh
dGVnaWVzKCktPmxvYWRlclN0cmF0ZWd5KCktPmFkZE9ubGluZVN0YXRlQ2hhbmdlTGlzdGVuZXIo
Jm5ldHdvcmtTdGF0ZUNoYW5nZWQpOwogICAgICAgICBhZGRlZExpc3RlbmVyID0gdHJ1ZTsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggZmI2OGU1OTZjMTM2ZmJjZGIx
MjQ5NDQ2YTZlNmMzNTU1NmQyMWFmMS4uZTUzNmY2MzVkOTJlNzgxZTQxODUwNDNiYzg1MDA2YWE1
MzIxNzAxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTI1MSw2ICsyNTEsMTEg
QEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkRmluaXNoUGluZ0xvYWQo
dWludDY0X3QgcGluZ0xvYWRJZGVudGlmaWUKICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2Fn
ZXM6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGlkRmluaXNoUGluZ0xvYWQocGluZ0xvYWRJ
ZGVudGlmaWVyLCBlcnJvciwgcmVzcG9uc2UpLCAwKTsKIH0KIAordm9pZCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6c2V0T25MaW5lU3RhdGUoYm9vbCBpc09uTGluZSkKK3sKKyAgICBt
X2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6U2V0
T25MaW5lU3RhdGUoaXNPbkxpbmUpLCAwKTsKK30KKwogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6cmVtb3ZlTG9hZElkZW50aWZpZXIoUmVzb3VyY2VMb2FkSWRlbnRpZmllciBp
ZGVudGlmaWVyKQogewogICAgIFJlZlB0cjxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+IGxvYWRlciA9
IG1fbmV0d29ya1Jlc291cmNlTG9hZGVycy5nZXQoaWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmgKaW5kZXggYWEwZDljNDljYTk2OGNmNjg1ZWU5NjE1NDYzYzg1NjU4MDAzMDg0Mi4u
MTZiNDhhYjgyNGZkMzIyMWE5MWE4NWM5MGQwY2ZmNzAzMDAwMGQ2MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaApAQCAtNjYsNiArNjYsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGRpZENsZWFu
dXBSZXNvdXJjZUxvYWRlcihOZXR3b3JrUmVzb3VyY2VMb2FkZXImKTsKICAgICB2b2lkIGRpZEZp
bmlzaFBpbmdMb2FkKHVpbnQ2NF90IHBpbmdMb2FkSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKKyAgICB2
b2lkIHNldE9uTGluZVN0YXRlKGJvb2wpOwogCiAgICAgYm9vbCBjYXB0dXJlRXh0cmFOZXR3b3Jr
TG9hZE1ldHJpY3NFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9jYXB0dXJlRXh0cmFOZXR3b3Jr
TG9hZE1ldHJpY3NFbmFibGVkOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggMDI1YmRiYjdmNzUwZmEwYjE4ZTE5ZGEwMmZmN2Fl
YjE0YWE0YmRkNS4uZjFhOTljMjcyZWUxMzI4Y2Q3NDhiN2E0YTQ4ZDI5NDM2NjA4ZDYyOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAg
LTYyLDYgKzYyLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0RpYWdub3N0aWNMb2dnaW5nQ2xpZW50
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Mb2dJbml0aWFsaXphdGlvbi5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvTUlNRVR5cGVSZWdpc3RyeS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya1N0YXRl
Tm90aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1Db29raWVKYXIuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1Jlc291cmNlUmVxdWVzdC5oPgpAQCAtMTIyLDYgKzEyMywxMiBAQCBOZXR3b3JrUHJvY2Vzczo6
TmV0d29ya1Byb2Nlc3MoKQogI2lmIEVOQUJMRShMRUdBQ1lfQ1VTVE9NX1BST1RPQ09MX01BTkFH
RVIpCiAgICAgYWRkU3VwcGxlbWVudDxMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXI+KCk7CiAj
ZW5kaWYKKworICAgIE5ldHdvcmtTdGF0ZU5vdGlmaWVyOjpzaW5nbGV0b24oKS5hZGRMaXN0ZW5l
cihbdGhpc10oYm9vbCBpc09uTGluZSkgeworICAgICAgICBhdXRvIHdlYlByb2Nlc3NDb25uZWN0
aW9ucyA9IG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zOworICAgICAgICBmb3IgKGF1dG8mIHdlYlBy
b2Nlc3NDb25uZWN0aW9uIDogd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zKQorICAgICAgICAgICAgd2Vi
UHJvY2Vzc0Nvbm5lY3Rpb24tPnNldE9uTGluZVN0YXRlKGlzT25MaW5lKTsKKyAgICB9KTsKIH0K
IAogTmV0d29ya1Byb2Nlc3M6On5OZXR3b3JrUHJvY2VzcygpCkBAIC0zMDksNiArMzE2LDkgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzczo6Y3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mo
KQogI2Vsc2UKICAgICBub3RJbXBsZW1lbnRlZCgpOwogI2VuZGlmCisKKyAgICBpZiAoIW1fd2Vi
UHJvY2Vzc0Nvbm5lY3Rpb25zLmlzRW1wdHkoKSkKKyAgICAgICAgbV93ZWJQcm9jZXNzQ29ubmVj
dGlvbnMubGFzdCgpLT5zZXRPbkxpbmVTdGF0ZShOZXR3b3JrU3RhdGVOb3RpZmllcjo6c2luZ2xl
dG9uKCkub25MaW5lKCkpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjbGVhckNhY2hlZENy
ZWRlbnRpYWxzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IGMwNTE3NjlmNGE4ZmVk
MzAyNWRhNzE2NjEzMzExMzJhODdkYjVjYzUuLjc5MmZkMDRkMDJiN2IyNzc5OWY4NjE2ZTYxYTUx
MzAzMmQ3ODZlNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtMTQ2LDYgKzE0Niwx
MSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkRmluaXNoUHJlY29ubmVjdGlv
bih1aW50NjRfdCBwcmVjb25uZWN0aW9uSWRlbgogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LndlYkxvYWRlclN0cmF0ZWd5KCkuZGlkRmluaXNoUHJlY29ubmVjdGlvbihwcmVjb25uZWN0aW9u
SWRlbnRpZmllciwgV1RGTW92ZShlcnJvcikpOwogfQogCit2b2lkIE5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbjo6c2V0T25MaW5lU3RhdGUoYm9vbCBpc09uTGluZSkKK3sKKyAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS53ZWJMb2FkZXJTdHJhdGVneSgpLnNldE9uTGluZVN0YXRlKGlzT25MaW5l
KTsKK30KKwogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCiB2b2lkIE5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbjo6ZGlkQ2FjaGVSZXNvdXJjZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIGNvbnN0IFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUmIGhhbmRsZSwgUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklEKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaAppbmRleCBmMmYzZjIyYmRi
NDZhMjVhNDI2ZjA3NzMwYjRjNzM4MjA2NGI4NjY3Li5lODcyYTgxYzE5NDgxY2ZkZDJmNTRkNGZi
NDQzYTY2NWJiNDZhMzExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaApAQCAtNzUsNiArNzUsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgZGlkV3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXModWludDY0
X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMpOwog
ICAgIHZvaWQgZGlkRmluaXNoUGluZ0xvYWQodWludDY0X3QgcGluZ0xvYWRJZGVudGlmaWVyLCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJik7CiAg
ICAgdm9pZCBkaWRGaW5pc2hQcmVjb25uZWN0aW9uKHVpbnQ2NF90IHByZWNvbm5lY3Rpb25JZGVu
dGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYpOworICAgIHZvaWQgc2V0T25MaW5lU3Rh
dGUoYm9vbCBpc09uTGluZSk7CiAKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQogICAg
IC8vIE1lc3NhZ2UgaGFuZGxlcnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2Fn
ZXMuaW4KaW5kZXggODZjMmQxMzQ5OTIyOTM5NzRjYWI4ODYxMGMzOTczNjgyODVkNGRlMi4uM2Vj
OGExYjAxYTc4ZGQyOWEyYTFkODMyMzQ1ZDEzNDU2YjdlNWZjMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMjksNCArMjksNSBAQCBtZXNzYWdlcyAtPiBO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24gTGVnYWN5UmVjZWl2ZXIgewogICAgIERpZFdyaXRlQmxv
YnNUb1RlbXBvcmFyeUZpbGVzKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBWZWN0b3I8U3Ry
aW5nPiBmaWxlbmFtZXMpCiAgICAgRGlkRmluaXNoUGluZ0xvYWQodWludDY0X3QgcGluZ0xvYWRJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlIHJlc3BvbnNlKQogICAgIERpZEZpbmlzaFByZWNvbm5lY3Rpb24odWludDY0X3Qg
cHJlY29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IpCisg
ICAgU2V0T25MaW5lU3RhdGUoYm9vbCBpc09uTGluZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKaW5kZXggMTQ1
ZmFiMTAwNzhlYzdlNTk4ZDkwZDNhNTA2YzAyYzg4ZGIxMTExNS4uYjE0YTU4MDMyNmEwMmQ2ZDE4
NDFhNmQ4OGE0ZjgyY2IzMTk0NjMyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcApAQCAtNTQwLDYgKzU0MCwyNyBA
QCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzdG9yZURlcml2ZWREYXRhVG9DYWNoZShjb25zdCBT
SEExOjpEaWdlc3QmIGJvZHlIYXNoLCBjbwogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVu
c3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6U3RvcmVEZXJpdmVkRGF0YVRvQ2FjaGUo
a2V5LCBkYXRhUmVmZXJlbmNlKSwgMCk7CiB9CiAKK2Jvb2wgV2ViTG9hZGVyU3RyYXRlZ3k6Omlz
T25MaW5lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pc09uTGluZTsKK30KKwordm9pZCBXZWJM
b2FkZXJTdHJhdGVneTo6YWRkT25saW5lU3RhdGVDaGFuZ2VMaXN0ZW5lcihGdW5jdGlvbjx2b2lk
KGJvb2wpPiYmIGxpc3RlbmVyKQoreworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3Vy
ZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpOworICAgIG1fb25saW5lU3RhdGVDaGFuZ2VMaXN0
ZW5lcnMuYXBwZW5kKFdURk1vdmUobGlzdGVuZXIpKTsKK30KKwordm9pZCBXZWJMb2FkZXJTdHJh
dGVneTo6c2V0T25MaW5lU3RhdGUoYm9vbCBpc09uTGluZSkKK3sKKyAgICBpZiAobV9pc09uTGlu
ZSA9PSBpc09uTGluZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9pc09uTGluZSA9IGlzT25M
aW5lOworICAgIGZvciAoYXV0byYgbGlzdGVuZXIgOiBtX29ubGluZVN0YXRlQ2hhbmdlTGlzdGVu
ZXJzKQorICAgICAgICBsaXN0ZW5lcihpc09uTGluZSk7Cit9CisKIHZvaWQgV2ViTG9hZGVyU3Ry
YXRlZ3k6OnNldENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljc0VuYWJsZWQoYm9vbCBlbmFi
bGVkKQogewogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6U2V0Q2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzRW5hYmxlZChl
bmFibGVkKSwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJMb2FkZXJTdHJhdGVneS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViTG9hZGVyU3RyYXRlZ3kuaAppbmRleCA0OTIxOTY1YTZkMzc4M2ZjMzI0Zjk5ZTcwZGNkNTk3
NTdlZmVjMDIyLi5hYzgyMWQ5NDI5MzFlNzBkZGIyNjA2ZWZkZWFiYmRhNTUwNzg5NTAwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVn
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0
ZWd5LmgKQEAgLTc5LDYgKzc5LDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2NoZWR1bGVMb2Fk
RnJvbU5ldHdvcmtQcm9jZXNzKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyJiwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViUmVzb3VyY2VMb2FkZXI6OlRyYWNraW5nUGFy
YW1ldGVycyYsIFBBTDo6U2Vzc2lvbklELCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBT
VG9IVFRQUmVkaXJlY3QsIFNlY29uZHMgbWF4aW11bUJ1ZmZlcmluZ1RpbWUpOwogCisgICAgYm9v
bCBpc09uTGluZSgpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgYWRkT25saW5lU3RhdGVDaGFuZ2VM
aXN0ZW5lcihGdW5jdGlvbjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKKyAgICB2b2lkIHNldE9uTGlu
ZVN0YXRlKGJvb2wpOworCiBwcml2YXRlOgogICAgIHZvaWQgc2NoZWR1bGVMb2FkKFdlYkNvcmU6
OlJlc291cmNlTG9hZGVyJiwgV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2UqLCBib29sIHNob3VsZENs
ZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QpOwogICAgIHZvaWQgc2NoZWR1bGVJbnRl
cm5hbGx5RmFpbGVkTG9hZChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciYpOwpAQCAtOTMsNiArOTcs
OCBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8dW5zaWduZWQgbG9uZywgV2ViVVJMU2NoZW1lVGFz
a1Byb3h5Kj4gbV91cmxTY2hlbWVUYXNrczsKICAgICBIYXNoTWFwPHVuc2lnbmVkIGxvbmcsIFBp
bmdMb2FkQ29tcGxldGlvbkhhbmRsZXI+IG1fcGluZ0xvYWRDb21wbGV0aW9uSGFuZGxlcnM7CiAg
ICAgSGFzaE1hcDx1bnNpZ25lZCBsb25nLCBQcmVjb25uZWN0Q29tcGxldGlvbkhhbmRsZXI+IG1f
cHJlY29ubmVjdENvbXBsZXRpb25IYW5kbGVyczsKKyAgICBWZWN0b3I8RnVuY3Rpb248dm9pZChi
b29sKT4+IG1fb25saW5lU3RhdGVDaGFuZ2VMaXN0ZW5lcnM7CisgICAgYm9vbCBtX2lzT25MaW5l
IHsgdHJ1ZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNj
aGVkdWxlci5jcHAKaW5kZXggOGYzOWY1NDVmZDg2ZGU5ZjUxZjllOGUzMmYzYWYzZmI2NGJjZWVm
Yy4uMWRmN2MzNDQ4ODA2MjNkMDk2OTFkZjY0NWNjZTU4NWFiOTcxNWJjNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3Vy
Y2VMb2FkU2NoZWR1bGVyLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUv
RnJhbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVyLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTmV0
d29ya1N0YXRlTm90aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BpbmdIYW5kbGUuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtU3RyYXRlZ2llcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
UmVzb3VyY2VSZXF1ZXN0Lmg+CkBAIC0zNjcsNiArMzY4LDE2IEBAIHZvaWQgV2ViUmVzb3VyY2VM
b2FkU2NoZWR1bGVyOjpzdGFydFBpbmdMb2FkKEZyYW1lJiBmcmFtZSwgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1CiAgICAgbmV3IFBpbmdIYW5kbGUoZnJhbWUubG9hZGVyKCkubmV0d29ya2luZ0NvbnRl
eHQoKSwgcmVxdWVzdCwgb3B0aW9ucy5jcmVkZW50aWFscyAhPSBGZXRjaE9wdGlvbnM6OkNyZWRl
bnRpYWxzOjpPbWl0LCBvcHRpb25zLnJlZGlyZWN0ID09IEZldGNoT3B0aW9uczo6UmVkaXJlY3Q6
OkZvbGxvdywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCitib29sIFdlYlJlc291
cmNlTG9hZFNjaGVkdWxlcjo6aXNPbkxpbmUoKSBjb25zdAoreworICAgIHJldHVybiBOZXR3b3Jr
U3RhdGVOb3RpZmllcjo6c2luZ2xldG9uKCkub25MaW5lKCk7Cit9CisKK3ZvaWQgV2ViUmVzb3Vy
Y2VMb2FkU2NoZWR1bGVyOjphZGRPbmxpbmVTdGF0ZUNoYW5nZUxpc3RlbmVyKFdURjo6RnVuY3Rp
b248dm9pZChib29sKT4mJiBsaXN0ZW5lcikKK3sKKyAgICBOZXR3b3JrU3RhdGVOb3RpZmllcjo6
c2luZ2xldG9uKCkuYWRkTGlzdGVuZXIoV1RGTW92ZShsaXN0ZW5lcikpOworfQorCiB2b2lkIFdl
YlJlc291cmNlTG9hZFNjaGVkdWxlcjo6cHJlY29ubmVjdFRvKEZyYW1lTG9hZGVyJiwgY29uc3Qg
VVJMJiwgU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFByZWNvbm5lY3RDb21wbGV0aW9uSGFuZGxl
ciYmKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9y
dC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29y
ZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgKaW5kZXggYWU5MGQxNWYyOWU0NzAx
OWU2NDEwNmVjOWQyNzBiMzU1MThiZTgyNC4uZjVjMWQ4YjA0ZTdmMGQ2Njg3NzNhMmYwNzJhYTMz
MTFiYzU5N2MwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9y
dC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dl
YkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oCkBAIC03Miw2ICs3Miw5IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgc2NoZWR1bGVQbHVnaW5TdHJlYW1Mb2FkKFdlYkNvcmU6OkZy
YW1lJiwgV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXJDbGllbnQmLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8V2ViQ29y
ZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+JiYpPiYmKTsKIAorICAgIGJvb2wgaXNPbkxp
bmUoKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIGFkZE9ubGluZVN0YXRlQ2hhbmdlTGlzdGVuZXIo
V1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKKwogcHJvdGVjdGVkOgogICAgIHZp
cnR1YWwgfldlYlJlc291cmNlTG9hZFNjaGVkdWxlcigpOwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>