<?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>215822</bug_id>
          
          <creation_ts>2020-08-25 12:53:24 -0700</creation_ts>
          <short_desc>Resource Load Statistics data summary does not report data which is held up in the web content process.</short_desc>
          <delta_ts>2020-08-26 18:53:17 -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>WebKit Misc.</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="Kate Cheney">katherine_cheney</reporter>
          <assigned_to name="Kate Cheney">katherine_cheney</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>japhet</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wilander</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1682757</commentid>
    <comment_count>0</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-08-25 12:53:24 -0700</bug_when>
    <thetext>ITP has a 5 second delay in sending website data to the network process, so a request for getResourceLoadStatisticsDataSummary() might miss new data. We should figure out a way to send any lingering data when the getResourceLoadStatisticsDataSummary() SPI is called.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682758</commentid>
    <comment_count>1</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-08-25 12:53:55 -0700</bug_when>
    <thetext>&lt;rdar://problem/66682044&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682762</commentid>
    <comment_count>2</comment_count>
      <attachid>407220</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-08-25 13:04:54 -0700</bug_when>
    <thetext>Created attachment 407220
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682828</commentid>
    <comment_count>3</comment_count>
      <attachid>407220</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2020-08-25 15:41:54 -0700</bug_when>
    <thetext>Comment on attachment 407220
Patch

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

Looks good.

&gt; Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:1447
&gt; +    postTask([this, completionHandler = WTFMove(completionHandler)]() mutable {

A very important fix! :-)

&gt; Source/WebKit/WebProcess/WebProcess.cpp:1914
&gt; +    completionHandler();

Does this completionHandler need to be synchronized with the &apos;updateCentralStatisticsStore&apos;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682835</commentid>
    <comment_count>4</comment_count>
      <attachid>407220</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-08-25 16:04:52 -0700</bug_when>
    <thetext>Comment on attachment 407220
Patch

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

&gt;&gt; Source/WebKit/WebProcess/WebProcess.cpp:1914
&gt;&gt; +    completionHandler();
&gt; 
&gt; Does this completionHandler need to be synchronized with the &apos;updateCentralStatisticsStore&apos;?

Yes it does, I will post another patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1683090</commentid>
    <comment_count>5</comment_count>
      <attachid>407326</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-08-26 13:05:35 -0700</bug_when>
    <thetext>Created attachment 407326
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1683137</commentid>
    <comment_count>6</comment_count>
      <attachid>407326</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2020-08-26 14:31:27 -0700</bug_when>
    <thetext>Comment on attachment 407326
Patch

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

&gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:1563
&gt; +        processPool-&gt;sendResourceLoadStatisticsDataImmediately([this, processPool, callbackAggregator] {

@Chris: Should we be makeRef&apos;ing this so that we ensure the object is valid when the completion handler fires? Or passing a weak ptr so we can bail out if the process is shut down before all process answer the message send?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1683144</commentid>
    <comment_count>7</comment_count>
      <attachid>407326</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-08-26 14:45:09 -0700</bug_when>
    <thetext>Comment on attachment 407326
Patch

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

&gt; Source/WebCore/loader/ResourceLoadObserver.h:63
&gt; +    virtual void updateCentralStatisticsStoreWithReply(CompletionHandler&lt;void()&gt;&amp;&amp; completionHandler) { completionHandler(); }

Why aren&apos;t you updating the existing one? Seems overkill to have several functions for this..

&gt; Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:365
&gt; +            postTaskReply([completionHandler = WTFMove(completionHandler)]() mutable {

I think the following would work:
postTaskReply(WTFMove(completionHandler));

&gt; Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:373
&gt; +        postTaskReply([completionHandler = WTFMove(completionHandler)]() mutable {

ditto.

&gt;&gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:1563
&gt;&gt; +        processPool-&gt;sendResourceLoadStatisticsDataImmediately([this, processPool, callbackAggregator] {
&gt; 
&gt; @Chris: Should we be makeRef&apos;ing this so that we ensure the object is valid when the completion handler fires? Or passing a weak ptr so we can bail out if the process is shut down before all process answer the message send?

Since this is asynchronous, it is indeed not safe to capture |this| like this. You definitely need to either protect this or use a weak ptr as Brent suggested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1683145</commentid>
    <comment_count>8</comment_count>
      <attachid>407326</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-08-26 14:45:14 -0700</bug_when>
    <thetext>Comment on attachment 407326
Patch

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

&gt; Source/WebCore/loader/ResourceLoadObserver.h:63
&gt; +    virtual void updateCentralStatisticsStoreWithReply(CompletionHandler&lt;void()&gt;&amp;&amp; completionHandler) { completionHandler(); }

Why aren&apos;t you updating the existing one? Seems overkill to have several functions for this..

&gt; Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:365
&gt; +            postTaskReply([completionHandler = WTFMove(completionHandler)]() mutable {

I think the following would work:
postTaskReply(WTFMove(completionHandler));

&gt; Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:373
&gt; +        postTaskReply([completionHandler = WTFMove(completionHandler)]() mutable {

ditto.

&gt;&gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:1563
&gt;&gt; +        processPool-&gt;sendResourceLoadStatisticsDataImmediately([this, processPool, callbackAggregator] {
&gt; 
&gt; @Chris: Should we be makeRef&apos;ing this so that we ensure the object is valid when the completion handler fires? Or passing a weak ptr so we can bail out if the process is shut down before all process answer the message send?

Since this is asynchronous, it is indeed not safe to capture |this| like this. You definitely need to either protect this or use a weak ptr as Brent suggested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1683150</commentid>
    <comment_count>9</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-08-26 14:49:03 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #8)
&gt; Comment on attachment 407326 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=407326&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/loader/ResourceLoadObserver.h:63
&gt; &gt; +    virtual void updateCentralStatisticsStoreWithReply(CompletionHandler&lt;void()&gt;&amp;&amp; completionHandler) { completionHandler(); }
&gt; 
&gt; Why aren&apos;t you updating the existing one? Seems overkill to have several
&gt; functions for this..

Can a timer take functions with arguments? That is why I made another, this one is used in WebResourceLoadObserver.cpp:

m_notificationTimer(*this, &amp;WebResourceLoadObserver::updateCentralStatisticsStore)


&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:365
&gt; &gt; +            postTaskReply([completionHandler = WTFMove(completionHandler)]() mutable {
&gt; 
&gt; I think the following would work:
&gt; postTaskReply(WTFMove(completionHandler));
&gt; 

Will fix.

&gt; &gt; Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:373
&gt; &gt; +        postTaskReply([completionHandler = WTFMove(completionHandler)]() mutable {
&gt; 
&gt; ditto.

Will fix.

&gt; 
&gt; &gt;&gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:1563
&gt; &gt;&gt; +        processPool-&gt;sendResourceLoadStatisticsDataImmediately([this, processPool, callbackAggregator] {
&gt; &gt; 
&gt; &gt; @Chris: Should we be makeRef&apos;ing this so that we ensure the object is valid when the completion handler fires? Or passing a weak ptr so we can bail out if the process is shut down before all process answer the message send?
&gt; 
&gt; Since this is asynchronous, it is indeed not safe to capture |this| like
&gt; this. You definitely need to either protect this or use a weak ptr as Brent
&gt; suggested.

Ok, will change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1683153</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-08-26 14:51:57 -0700</bug_when>
    <thetext>(In reply to katherine_cheney from comment #9)
&gt; (In reply to Chris Dumez from comment #8)
&gt; &gt; Comment on attachment 407326 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=407326&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/loader/ResourceLoadObserver.h:63
&gt; &gt; &gt; +    virtual void updateCentralStatisticsStoreWithReply(CompletionHandler&lt;void()&gt;&amp;&amp; completionHandler) { completionHandler(); }
&gt; &gt; 
&gt; &gt; Why aren&apos;t you updating the existing one? Seems overkill to have several
&gt; &gt; functions for this..
&gt; 
&gt; Can a timer take functions with arguments? That is why I made another, this
&gt; one is used in WebResourceLoadObserver.cpp:
&gt; 
&gt; m_notificationTimer(*this,
&gt; &amp;WebResourceLoadObserver::updateCentralStatisticsStore)

If you look at the Timer constructor, you can see it can take in a lambda so I would imagine this would work:
m_notificationTimer([this] { updateCentralStatisticsStore([] { }); });</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1683158</commentid>
    <comment_count>11</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-08-26 14:59:31 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #10)
&gt; (In reply to katherine_cheney from comment #9)
&gt; &gt; (In reply to Chris Dumez from comment #8)
&gt; &gt; &gt; Comment on attachment 407326 [details]
&gt; &gt; &gt; Patch
&gt; &gt; &gt; 
&gt; &gt; &gt; View in context:
&gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=407326&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebCore/loader/ResourceLoadObserver.h:63
&gt; &gt; &gt; &gt; +    virtual void updateCentralStatisticsStoreWithReply(CompletionHandler&lt;void()&gt;&amp;&amp; completionHandler) { completionHandler(); }
&gt; &gt; &gt; 
&gt; &gt; &gt; Why aren&apos;t you updating the existing one? Seems overkill to have several
&gt; &gt; &gt; functions for this..
&gt; &gt; 
&gt; &gt; Can a timer take functions with arguments? That is why I made another, this
&gt; &gt; one is used in WebResourceLoadObserver.cpp:
&gt; &gt; 
&gt; &gt; m_notificationTimer(*this,
&gt; &gt; &amp;WebResourceLoadObserver::updateCentralStatisticsStore)
&gt; 
&gt; If you look at the Timer constructor, you can see it can take in a lambda so
&gt; I would imagine this would work:
&gt; m_notificationTimer([this] { updateCentralStatisticsStore([] { }); });

!! genius !! I will change it to be the same function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1683165</commentid>
    <comment_count>12</comment_count>
      <attachid>407343</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-08-26 15:17:30 -0700</bug_when>
    <thetext>Created attachment 407343
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1683249</commentid>
    <comment_count>13</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-08-26 18:52:38 -0700</bug_when>
    <thetext>Committed r266214: &lt;https://trac.webkit.org/changeset/266214&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 407343.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1683250</commentid>
    <comment_count>14</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-08-26 18:53:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/67843691&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407220</attachid>
            <date>2020-08-25 13:04:54 -0700</date>
            <delta_ts>2020-08-26 13:05:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215822-20200825130453.patch</filename>
            <type>text/plain</type>
            <size>8214</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2MDgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGI2MDUxYzQxNzQzNDM5ODVi
MmUzYjE0ZTRlNTBjZDZlZWU2NWI4N2UuLjhkZmEyOWJlMjhjOGZiZThmM2QxYjVjODNmOTFmYzcy
YWI2MGMzN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMjAtMDgtMjUgIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVzb3VyY2UgTG9h
ZCBTdGF0aXN0aWNzIGRhdGEgc3VtbWFyeSBkb2VzIG5vdCByZXBvcnQgZGF0YSB3aGljaCBpcyBo
ZWxkIHVwIGluIHRoZSB3ZWIgY29udGVudCBwcm9jZXNzLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1ODIyCisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS82NjY4MjA0ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBObyBuZXcgdGVzdHMsIHRoaXMgZml4ZXMgYSB0aW1pbmcgYnVnIHRoYXQgaXMgZmxha3kg
dG8gcmVwcm9kdWNlLCBzbyBJCisgICAgICAgIHdhcyB1bmFibGUgdG8gd3JpdGUgYSB0ZXN0IGNh
c2UuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6YWdncmVnYXRlZFRoaXJkUGFydHlEYXRhKToKKyAgICAgICAgRGVsZXRl
IGV4dHJhIHNwYWNlLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNlbmRSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YUltbWVkaWF0ZWx5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmdldFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhU3VtbWFyeSk6CisgICAgICAgIERvbid0IGFzayB0aGUgbmV0d29yayBwcm9jZXNz
IGZvciBkYXRhIHVudGlsIGFueSBsaW5nZXJpbmcgZGF0YQorICAgICAgICBpbiB0aGUgd2ViIGNv
bnRlbnQgcHJvY2VzcyBoYXMgYmVlbiBzZW50IGZpcnN0LgorCisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6c2VuZFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhSW1tZWRpYXRlbHkpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5p
bjoKKwogMjAyMC0wOC0yNCAgQWRpdHlhIEtlZXJ0aGkgIDxha2VlcnRoaUBhcHBsZS5jb20+CiAK
ICAgICAgICAgW21hY09TXSBTaG93IHBpY2tlciBmb3IgZGF0ZSBhbmQgZGF0ZXRpbWUtbG9jYWwg
aW5wdXQgdHlwZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5jcHAKaW5kZXggZjM0MTIwYzFjMzI3ZGNmYzUzNjllYjhlNDNlMmFhM2RlNDEyMjUzYS4uNzY2
YjExOGViZTkwZjIyZmExMTcyOGZmZTRhMjdlZjc1NmY1YWFmMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKQEAgLTE0NDQsNyArMTQ0NCw3IEBA
IHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjphZ2dyZWdhdGVkVGhpcmRQYXJ0
eURhdGEoQ29tcGxldGlvbkhhbmRsZXI8CiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigp
KTsKIAotICAgIHBvc3RUYXNrKFt0aGlzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgIHsKKyAgICBwb3N0VGFzayhbdGhpcywgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAg
ICAgICAgaWYgKCFtX3N0YXRpc3RpY3NTdG9yZSkgewogICAgICAgICAgICAgcG9zdFRhc2tSZXBs
eShbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRh
YmxlIHsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IDc0YTM1Nzc4NjZkY2YzMDRi
MjU3NTU1MjliZDQ5ZmFjYmMxZTAzNzEuLjk4NGQyZmU5NjllOTY4M2IyYjdmMDExZWZhOGVhMzli
ZDZmNDZhNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAK
QEAgLTI0MDAsNiArMjQwMCwxNCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZWVkUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0ZvclRlc3RpbmcoY29uc3QgUmVnaXN0cmFibGVEb21haQogICAgIGZvciAo
YXV0byYgcHJvY2VzcyA6IHByb2Nlc3NlcygpKQogICAgICAgICBwcm9jZXNzLT5zZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlNlZWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
Rm9yVGVzdGluZyhmaXJzdFBhcnR5RG9tYWluLCB0aGlyZFBhcnR5RG9tYWluLCBzaG91bGRTY2hl
ZHVsZU5vdGlmaWNhdGlvbiksIFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CiB9CisKK3ZvaWQg
V2ViUHJvY2Vzc1Bvb2w6OnNlbmRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YUltbWVkaWF0ZWx5
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBh
dXRvIGNhbGxiYWNrQWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKworICAgIGZvciAoYXV0byYgcHJvY2VzcyA6IHByb2Nl
c3NlcygpKQorICAgICAgICBwcm9jZXNzLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Oldl
YlByb2Nlc3M6OlNlbmRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YUltbWVkaWF0ZWx5KCksIFtj
YWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7Cit9CiAjZW5kaWYKIAogV2ViUHJvY2Vzc1dpdGhBdWRp
YmxlTWVkaWFUb2tlbiBXZWJQcm9jZXNzUG9vbDo6d2ViUHJvY2Vzc1dpdGhBdWRpYmxlTWVkaWFU
b2tlbigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRl
eCAxZjQ2Y2U0ZDYzN2U3NDZkOTRjNmU4YWU5NjUzYmFkMGNhNzk4MjdlLi5hZjFmMDdmMmYyMWZi
YzI4Nzk0OTRhMjdhMzk0M2FiYzgzYjJkNzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmgKQEAgLTUxNiw2ICs1MTYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRD
b21taXRDcm9zc1NpdGVMb2FkV2l0aERhdGFUcmFuc2ZlcihQQUw6OlNlc3Npb25JRCwgY29uc3Qg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIGZyb21Eb21haW4sIGNvbnN0IFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluJiB0b0RvbWFpbiwgT3B0aW9uU2V0PFdlYkNvcmU6OkNyb3NzU2l0ZU5h
dmlnYXRpb25EYXRhVHJhbnNmZXI6OkZsYWc+LCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJD
b3JlOjpQYWdlSWRlbnRpZmllcik7CiAgICAgdm9pZCBzZXREb21haW5zV2l0aFVzZXJJbnRlcmFj
dGlvbihIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYmKTsKICAgICB2b2lkIHNl
ZWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRm9yVGVzdGluZyhjb25zdCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4mIHRoaXJkUGFydHlEb21haW4sIGJvb2wgc2hvdWxkU2NoZWR1bGVOb3RpZmljYXRpb24s
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBzZW5kUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFJbW1lZGlhdGVseShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwog
I2VuZGlmCiAKICNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5j
cHAKaW5kZXggNDg4ODcyM2UwYmRhNTc4MzhjMjg4NzlkY2NmMjdlMWUzYjQxNGYyMi4uNDc0YjA1
ZTExZDdkNTRiOWVkYWVjYjU5ZDZmYmRkOWNjOWEwNzZlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAg
LTE1NjAsOCArMTU2MCwxMCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmdldFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhU3VtbWFyeShDb21wbGV0aW9uSGFuZGxlcjx2bwogICAgIFJlZlB0cjxD
YWxsYmFja0FnZ3JlZ2F0b3I+IGNhbGxiYWNrQWdncmVnYXRvciA9IGFkb3B0UmVmKG5ldyBDYWxs
YmFja0FnZ3JlZ2F0b3IoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpKTsKIAogICAgIGZvciAo
YXV0byYgcHJvY2Vzc1Bvb2wgOiBlbnN1cmVQcm9jZXNzUG9vbHMoKSkgewotICAgICAgICBwcm9j
ZXNzUG9vbC0+ZW5zdXJlTmV0d29ya1Byb2Nlc3ModGhpcykuZ2V0UmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFTdW1tYXJ5KG1fc2Vzc2lvbklELCBbY2FsbGJhY2tBZ2dyZWdhdG9yLCBwcm9jZXNz
UG9vbF0oVmVjdG9yPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0eURh
dGE+JiYgZGF0YSkgewotICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5hZGRSZXN1bHQo
V1RGTW92ZShkYXRhKSk7CisgICAgICAgIHByb2Nlc3NQb29sLT5zZW5kUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFJbW1lZGlhdGVseShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCBwcm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdhdG9yXSB7CisgICAgICAgICAgICBwcm9j
ZXNzUG9vbC0+ZW5zdXJlTmV0d29ya1Byb2Nlc3ModGhpcykuZ2V0UmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFTdW1tYXJ5KG1fc2Vzc2lvbklELCBbY2FsbGJhY2tBZ2dyZWdhdG9yLCBwcm9jZXNz
UG9vbF0oVmVjdG9yPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0eURh
dGE+JiYgZGF0YSkgeworICAgICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+YWRkUmVz
dWx0KFdURk1vdmUoZGF0YSkpOworICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwogICAgIH0K
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCA2NzA4ZjlkMGE1
Y2U3M2JmY2EwYTlkZDA3N2I5M2Y3MzgzZjRkOTFlLi43ZmE2OGUwZWYzODgxYjZiN2EwZTc5NDY1
YmI0ZjlhZTQ3ZTYyM2M0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3Bw
CkBAIC0xOTA3LDYgKzE5MDcsMTIgQEAgdm9pZCBXZWJQcm9jZXNzOjpzZXREb21haW5zV2l0aFVz
ZXJJbnRlcmFjdGlvbihIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWkKIHsKICAgICBS
ZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkuc2V0RG9tYWluc1dpdGhVc2VySW50ZXJhY3Rp
b24oV1RGTW92ZShkb21haW5zKSk7CiB9CisKK3ZvaWQgV2ViUHJvY2Vzczo6c2VuZFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhSW1tZWRpYXRlbHkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQo
KS51cGRhdGVDZW50cmFsU3RhdGlzdGljc1N0b3JlKCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIo
KTsKK30KICNlbmRpZgogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggZTA1ZmExYjJlOTc1MWViZDM0ODk2N2RjOWQ2OWI1YWQ5
ZTFhMmRkNy4uM2Y4Zjc0YTBlZmM2MzJhOTM0MjRkYzQ3MDMzYTg4M2NkNGZjZWEwOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC00NzUsNiArNDc1LDcgQEAgcHJpdmF0
ZToKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIHZvaWQgc2V0VGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZShXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tp
bmdNb2RlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0RG9tYWlu
c1dpdGhVc2VySW50ZXJhY3Rpb24oSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4m
Jik7CisgICAgdm9pZCBzZW5kUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFJbW1lZGlhdGVseShD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogI2VuZGlmCiAKICAgICB2b2lkIHBsYXRmb3Jt
SW5pdGlhbGl6ZVByb2Nlc3MoY29uc3QgQXV4aWxpYXJ5UHJvY2Vzc0luaXRpYWxpemF0aW9uUGFy
YW1ldGVycyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNz
YWdlcy5pbgppbmRleCA4OTM1OTg5NTBjZjYyOTZkMGRjNGZiN2EzMjk2YjcyODE3YzBlMjE5Li45
NDE3NzUyZDZhODE4ZjViNDhmYjkwOTljN2FlZmNmZWZhNjZkMGM2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMTU5LDYgKzE1OSw3
IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgTm90UmVmQ291bnRlZCB7
CiAgICAgU2VlZFJlc291cmNlTG9hZFN0YXRpc3RpY3NGb3JUZXN0aW5nKFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluIGZpcnN0UGFydHlEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
IHRoaXJkUGFydHlEb21haW4sIGJvb2wgc2hvdWxkU2NoZWR1bGVOb3RpZmljYXRpb24pIC0+ICgp
IEFzeW5jCiAgICAgU2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZShlbnVtOnVpbnQ4X3Qg
V2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSBibG9ja2luZ01vZGUpIC0+ICgp
IEFzeW5jCiAgICAgU2V0RG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb24oSGFzaFNldDxXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbj4gZG9tYWlucykKKyAgICBTZW5kUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFJbW1lZGlhdGVseSgpIC0+ICgpIEFzeW5jCiAjZW5kaWYKIAogI2lmIFBMQVRGT1JN
KElPUykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407326</attachid>
            <date>2020-08-26 13:05:35 -0700</date>
            <delta_ts>2020-08-26 15:17:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215822-20200826130534.patch</filename>
            <type>text/plain</type>
            <size>21322</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2MDgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDlhMmY2MmRlOGM3YmJi
NGQyNDA3MTdkY2RiOGRlMTIyNWExMmI5OS4uYTJiZTY3MTU2ODI5ODkyYjU1MjA0YTA1ZWY1NmZh
ZmVjNWQxYTQ1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIwLTA4LTI2ICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNl
IExvYWQgU3RhdGlzdGljcyBkYXRhIHN1bW1hcnkgZG9lcyBub3QgcmVwb3J0IGRhdGEgd2hpY2gg
aXMgaGVsZCB1cCBpbiB0aGUgd2ViIGNvbnRlbnQgcHJvY2Vzcy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTgyMgorICAgICAgICA8cmRhcjovL3By
b2JsZW0vNjY2ODIwNDQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjp1cGRhdGVDZW50cmFsU3RhdGlzdGljc1N0b3JlV2l0
aFJlcGx5KToKKwogMjAyMC0wOC0yNCAgRW1pbGlvIENvYm9zIMOBbHZhcmV6ICA8ZW1pbGlvQGNy
aXNhbC5pbz4KIAogICAgICAgICBTdXBwb3J0IHF1b3RlczphdXRvIGFuZCBmaXggcXVvdGVzIHNl
cmlhbGl6YXRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGI2MDUxYzQxNzQzNDM5ODViMmUzYjE0ZTRlNTBjZDZl
ZWU2NWI4N2UuLmM0NDk2MWZhZGFlNjczNGRmMWQyYzA1YWY2N2QzYjE3NTc3YWY4MWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsNTQgQEAKKzIwMjAtMDgtMjYgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5l
X2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVzb3VyY2UgTG9hZCBTdGF0aXN0aWNzIGRh
dGEgc3VtbWFyeSBkb2VzIG5vdCByZXBvcnQgZGF0YSB3aGljaCBpcyBoZWxkIHVwIGluIHRoZSB3
ZWIgY29udGVudCBwcm9jZXNzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjE1ODIyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82NjY4MjA0ND4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVz
dHMsIHRoaXMgZml4ZXMgYSB0aW1pbmcgYnVnIHRoYXQgaXMgZmxha3kgdG8gcmVwcm9kdWNlLCBz
byBJCisgICAgICAgIHdhcyB1bmFibGUgdG8gd3JpdGUgYSB0ZXN0IGNhc2UuIE5vbi1yZWdyZXNz
ZWQgYmVoYXZpb3IgaXMgY29uZmlybWVkCisgICAgICAgIHdpdGggZXhpc3RpbmcgQVBJIHRlc3Rp
bmcuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQpOgorICAgICAgICBN
b3N0IG9mIHRoZSB0aW1lLCB0aGUgY29tcGxldGlvbiBoYW5kbGVyIHdpbGwgYmUgYW4gZW1wdHkg
ZnVuY3Rpb24sCisgICAgICAgIGJ1dCB3ZSBzaG91bGQgaGFuZGxlIGl0IGluIHRoZSBuZXR3b3Jr
IHByb2Nlc3Mgc28gd2UgZml4IHRoZQorICAgICAgICBjYXNlIHdoZXJlIHdlIHdhaXQgdG8gc2Vu
ZCB0aGUgZnVsbCBkYXRhIHN1bW1hcnkgdW50aWwgdGhlIHVwZGF0ZSBoYXMKKyAgICAgICAgZmlu
aXNoZWQuCisKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjphZ2dyZWdhdGVkVGhpcmRQYXJ0eURhdGEpOgorICAgICAgICBEZWxldGUgZXh0cmEgc3BhY2Uu
CisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmlu
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQb29sOjpzZW5kUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFJbW1lZGlh
dGVseSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpnZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YVN1bW1h
cnkpOgorICAgICAgICBEb24ndCBhc2sgdGhlIG5ldHdvcmsgcHJvY2VzcyBmb3IgZGF0YSB1bnRp
bCBhbnkgbGluZ2VyaW5nIGRhdGEKKyAgICAgICAgaW4gdGhlIHdlYiBjb250ZW50IHByb2Nlc3Mg
aGFzIGJlZW4gc2VudCBmaXJzdC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNv
dXJjZUxvYWRPYnNlcnZlcjo6dXBkYXRlQ2VudHJhbFN0YXRpc3RpY3NTdG9yZSk6CisgICAgICAg
IFNlbmQgYW4gZW1wdHkgY29tcGxldGlvbiBoYW5kbGVyIGhlcmUgYmVjYXVzZSB3ZSBkb24ndCBj
YXJlIGFib3V0IHRoZQorICAgICAgICB0aW1pbmcuCisKKyAgICAgICAgKFdlYktpdDo6V2ViUmVz
b3VyY2VMb2FkT2JzZXJ2ZXI6OnVwZGF0ZUNlbnRyYWxTdGF0aXN0aWNzU3RvcmVXaXRoUmVwbHkp
OgorICAgICAgICBOZXcgZnVuY3Rpb24gdG8gY2FsbCBhIGNvbXBsZXRpb24gaGFuZGxlciB3aGVu
IHRoZSBzdGF0aXN0aWNzIGhhdmUKKyAgICAgICAgZmluaXNoZWQgdXBkYXRpbmcgaW4gdGhlIG5l
dHdvcmsgcHJvY2Vzcy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
UmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpzZW5kUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFJbW1lZGlhdGVseSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorCisKIDIwMjAt
MDgtMjQgIEFkaXR5YSBLZWVydGhpICA8YWtlZXJ0aGlAYXBwbGUuY29tPgogCiAgICAgICAgIFtt
YWNPU10gU2hvdyBwaWNrZXIgZm9yIGRhdGUgYW5kIGRhdGV0aW1lLWxvY2FsIGlucHV0IHR5cGVz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5oCmluZGV4IDY3
ZmJmZmMyZDIwYWIyZmQ4YmE1NmE4ZGZhNGQ0YWU3OGE5NWViMjAuLjRmNWM2MDkyZjdhNDlmOGNh
ZmZhYTJjOTcyZjBmYWM5ZjcxOWNkOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRPYnNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRPYnNlcnZlci5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2lu
Y2x1ZGUgIlJlc291cmNlTG9hZFN0YXRpc3RpY3MuaCIKKyNpbmNsdWRlIDx3dGYvQ29tcGxldGlv
bkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC01OSw2ICs2MCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgU3RyaW5nIHN0YXRp
c3RpY3NGb3JVUkwoY29uc3QgVVJMJikgeyByZXR1cm4geyB9OyB9CiAgICAgdmlydHVhbCB2b2lk
IHVwZGF0ZUNlbnRyYWxTdGF0aXN0aWNzU3RvcmUoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlQ2VudHJhbFN0YXRpc3RpY3NTdG9yZVdpdGhSZXBseShDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoKTsgfQogICAgIHZp
cnR1YWwgdm9pZCBjbGVhclN0YXRlKCkgeyB9CiAgICAgCiAgICAgdmlydHVhbCBib29sIGhhc1N0
YXRpc3RpY3MoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCBmMzQxMjBjMWMzMjdkY2ZjNTM2OWVi
OGU0M2UyYWEzZGU0MTIyNTNhLi4zMWQxMjU4N2JmMTc5MmZmOGQ3M2IyODk1Y2NlNjEwMDI2YTcz
YTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNw
cApAQCAtMzUzLDIwICszNTMsMjYgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OnN0YXRpc3RpY3NEYXRhYmFzZUhhc0FsbFRhYmxlcyhDb21wbGV0aW9uSGEKICAgICB9KTsK
IH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlc291cmNlTG9hZFN0
YXRpc3RpY3NVcGRhdGVkKFZlY3RvcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiYmIHN0YXRpc3Rp
Y3MpCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1VwZGF0ZWQoVmVjdG9yPFJlc291cmNlTG9hZFN0YXRpc3RpY3M+JiYgc3RhdGlzdGlj
cywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICAvLyBJdCBpcyBzYWZlIHRvIG1vdmUg
dGhlIG9yaWdpbnMgdG8gdGhlIGJhY2tncm91bmQgcXVldWUgd2l0aG91dCBpc29sYXRlZCBjb3B5
IGhlcmUgYmVjYXVzZSB0aGlzIGlzIGFuIHItdmFsdWUKICAgICAvLyBjb21pbmcgZnJvbSBJUEMu
IFJlc291cmNlTG9hZFN0YXRpc3RpY3Mgb25seSBjb250YWlucyBzdHJpbmdzIHdoaWNoIGFyZSBz
YWZlIHRvIG1vdmUgdG8gb3RoZXIgdGhyZWFkcyBhcyBsb25nCiAgICAgLy8gYXMgbm9ib2R5IG9u
IHRoaXMgdGhyZWFkIGhvbGRzIGEgcmVmZXJlbmNlIHRvIHRob3NlIHN0cmluZ3MuCi0gICAgcG9z
dFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc3RhdGlzdGljcyA9
IFdURk1vdmUoc3RhdGlzdGljcyldKCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmICghbV9zdGF0aXN0
aWNzU3RvcmUpCi0gICAgICAgICAgICByZXR1cm47CisgICAgcG9zdFRhc2soW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc3RhdGlzdGljcyA9IFdURk1vdmUoc3RhdGlzdGlj
cyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0
YWJsZSB7CisgICAgICAgIGlmICghbV9zdGF0aXN0aWNzU3RvcmUpIHsKKyAgICAgICAgICAgIHBv
c3RUYXNrUmVwbHkoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildKCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQogCiAgICAg
ICAgIEFTU0VSVChzdXNwZW5kZWRTdGF0ZSAhPSBTdGF0ZTo6U3VzcGVuZGVkKTsKICAgICAgICAg
bV9zdGF0aXN0aWNzU3RvcmUtPm1lcmdlU3RhdGlzdGljcyhXVEZNb3ZlKHN0YXRpc3RpY3MpKTsK
LQorICAgICAgICBwb3N0VGFza1JlcGx5KFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoKTsKKyAgICAgICAgfSk7CiAgICAgICAgIC8vIFdlIGNhbiBjYW5jZWwgYW55IHBlbmRpbmcg
cmVxdWVzdCB0byBwcm9jZXNzIHN0YXRpc3RpY3Mgc2luY2Ugd2UncmUgZG9pbmcgaXQgc3luY2hy
b25vdXNseSBiZWxvdy4KICAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUtPmNhbmNlbFBlbmRpbmdT
dGF0aXN0aWNzUHJvY2Vzc2luZ1JlcXVlc3QoKTsKIApAQCAtMTQ0NCw3ICsxNDUwLDcgQEAgdm9p
ZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmFnZ3JlZ2F0ZWRUaGlyZFBhcnR5RGF0
YShDb21wbGV0aW9uSGFuZGxlcjwKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwog
Ci0gICAgcG9zdFRhc2soW3RoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildKCkgbXV0YWJsZSAgeworICAgIHBvc3RUYXNrKFt0aGlzLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAg
ICBpZiAoIW1fc3RhdGlzdGljc1N0b3JlKSB7CiAgICAgICAgICAgICBwb3N0VGFza1JlcGx5KFtj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUg
ewogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKaW5kZXggMTNiODJlMTIyOTY5ZjAxNTky
OGQ3YTY2ZDU3NDJiNmM0Y2EwM2M2YS4uNGE5NDRiMTk0OWE3NjNlM2JlNDU5OTE3MjFiMWMyMzQ2
NDgyMTkyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUu
aApAQCAtMjkyLDcgKzI5Miw3IEBAIHN0cnVjdCBUaGlyZFBhcnR5RGF0YSB7CiAgICAgdm9pZCBz
ZW5kRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25z
dCBTdHJpbmcmIGRlc2NyaXB0aW9uLCB1bnNpZ25lZCB2YWx1ZSwgdW5zaWduZWQgc2lnRGlnaXRz
LCBXZWJDb3JlOjpTaG91bGRTYW1wbGUpIGNvbnN0OwogICAgIHZvaWQgbm90aWZ5UGFnZVN0YXRp
c3RpY3NUZWxlbWV0cnlGaW5pc2hlZCh1bnNpZ25lZCBudW1iZXJPZlByZXZhbGVudFJlc291cmNl
cywgdW5zaWduZWQgbnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9u
LCB1bnNpZ25lZCBudW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhvdXRVc2VySW50ZXJhY3Rp
b24sIHVuc2lnbmVkIHRvcFByZXZhbGVudFJlc291cmNlV2l0aFVzZXJJbnRlcmFjdGlvbkRheXNT
aW5jZVVzZXJJbnRlcmFjdGlvbiwgdW5zaWduZWQgbWVkaWFuRGF5c1NpbmNlVXNlckludGVyYWN0
aW9uUHJldmFsZW50UmVzb3VyY2VXaXRoVXNlckludGVyYWN0aW9uLCB1bnNpZ25lZCB0b3AzTnVt
YmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVUksIHVuc2lnbmVkIHRvcDNNZWRpYW5TdWJGcmFt
ZVdpdGhvdXRVSSwgdW5zaWduZWQgdG9wM01lZGlhblN1YlJlc291cmNlV2l0aG91dFVJLCB1bnNp
Z25lZCB0b3AzTWVkaWFuVW5pcXVlUmVkaXJlY3RzV2l0aG91dFVJLCB1bnNpZ25lZCB0b3AzTWVk
aWFuRGF0YVJlY29yZHNSZW1vdmVkV2l0aG91dFVJKSBjb25zdDsKIAotICAgIHZvaWQgcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQoVmVjdG9yPFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRp
c3RpY3M+JiYpOworICAgIHZvaWQgcmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQoVmVjdG9y
PFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M+JiYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CiAgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKERvbWFp
bkluTmVlZE9mU3RvcmFnZUFjY2VzcyYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBvcGVuZXJJ
RCwgT3BlbmVyRG9tYWluJiYpOwogICAgIHZvaWQgYWdncmVnYXRlZFRoaXJkUGFydHlEYXRhKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6VGhpcmRQYXJ0eURhdGE+JiYpPiYmKTsKICAgICBzdGF0aWMgdm9pZCBzdXNwZW5kKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4
IGI3ZGRiNzU0ZjMwMDZjZjRhNWJkY2M2ZjlkYjE0NDU2MWE0ODU4MzcuLmFjY2VkNmFiY2Y4YjYx
NjMyMGY4NDY3YjQ1ODAyMzNjZDI4OThiZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3Bw
CkBAIC04NzAsMTQgKzg3MCwxOSBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Ojpsb2dVc2VySW50ZXJhY3Rpb24oY29uc3QgUmVnaXN0cmFibGVEb21haW4mCiAgICAgfQogfQog
Ci12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZXNvdXJjZUxvYWRTdGF0aXN0
aWNzVXBkYXRlZChWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mJiBzdGF0aXN0aWNzKQor
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1VwZGF0ZWQoVmVjdG9yPFJlc291cmNlTG9hZFN0YXRpc3RpY3M+JiYgc3RhdGlzdGljcywgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChh
dXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKCkpIHsKLSAgICAgICAg
aWYgKG5ldHdvcmtTZXNzaW9uLT5zZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpKQorICAgICAgICBp
ZiAobmV0d29ya1Nlc3Npb24tPnNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCkpIHsKKyAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGlm
IChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNl
TG9hZFN0YXRpc3RpY3MoKSkKLSAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnJl
c291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFdURk1vdmUoc3RhdGlzdGljcykpOworICAgICAg
ICB9CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nl
c3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkgeworICAgICAgICAgICAgcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy0+cmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQoV1RGTW92ZShzdGF0
aXN0aWNzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CiAgICAgfQorICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKIHZvaWQg
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Omhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
dG9wRnJhbWVEb21haW4sIEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBw
YWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggZWNhODkyMTZlNGNiOGY5N2E4YTg4YmEyOTc5
MTMzYTk5YmMwMzkzNi4uYmNkNjE1ZjA5ODhjYWU5NjA1ZDc4NmNhODhhMTgzNjAwMzgyMjdjNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtMjY2LDcgKzI2Niw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBjbGVhclBhZ2VTcGVjaWZpY0RhdGFGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKIAogICAgIHZvaWQgbG9nVXNlckludGVyYWN0aW9uKGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJik7Ci0gICAgdm9pZCByZXNvdXJjZUxvYWRTdGF0aXN0aWNz
VXBkYXRlZChWZWN0b3I8V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mJik7CisgICAg
dm9pZCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChWZWN0b3I8V2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcz4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2
b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9t
YWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
dG9wRnJhbWVEb21haW4sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NT
Y29wZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXF1ZXN0U3RvcmFnZUFjY2Vz
c1Jlc3VsdCk+JiYpOwogICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2Vzcywg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgb3BlbmVyUGFnZUlELCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiYmIG9wZW5lckRvbWFpbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5t
ZXNzYWdlcy5pbgppbmRleCA1ODI2NzdkOGU2MzZkODc5MTJlZjdiNTFlNzNhYjBhNmIwNTg1YjEx
Li4wNTc1MGJiNTM5ZTRlMTZiOTdjMzZmZTM2OTVlZjE3NGJjZTIwOTZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTY1LDcgKzY1LDcgQEAgbWVzc2Fn
ZXMgLT4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAg
IFJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKTsKICAgICBDbGVhclBhZ2VTcGVj
aWZpY0RhdGFGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
IHBhZ2VJRCk7CiAgICAgTG9nVXNlckludGVyYWN0aW9uKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluIGRvbWFpbikKLSAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChWZWN0b3I8V2Vi
Q29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4gc3RhdGlzdGljcykKKyAgICBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzVXBkYXRlZChWZWN0b3I8V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGlj
cz4gc3RhdGlzdGljcykgLT4gKCkgQXN5bmMKICAgICBIYXNTdG9yYWdlQWNjZXNzKFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluIHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiB0b3BGcmFtZURvbWFpbiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkgLT4gKGJvb2wgaGFzU3RvcmFnZUFjY2Vzcykg
QXN5bmMKICAgICBSZXF1ZXN0U3RvcmFnZUFjY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biBzdWJGcmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9wRnJhbWVEb21h
aW4sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciB3ZWJQYWdlSUQsIFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJv
eHlJRCwgZW51bTpib29sIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NTY29wZSBzY29wZSkgLT4gKHN0
cnVjdCBXZWJDb3JlOjpSZXF1ZXN0U3RvcmFnZUFjY2Vzc1Jlc3VsdCByZXN1bHQpIEFzeW5jCiAg
ICAgUmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
IG9wZW5lclBhZ2VJRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gb3BlbmVyRG9tYWluKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IDc0YTM1Nzc4
NjZkY2YzMDRiMjU3NTU1MjliZDQ5ZmFjYmMxZTAzNzEuLjk4NGQyZmU5NjllOTY4M2IyYjdmMDEx
ZWZhOGVhMzliZDZmNDZhNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5jcHAKQEAgLTI0MDAsNiArMjQwMCwxNCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZWVk
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZvclRlc3RpbmcoY29uc3QgUmVnaXN0cmFibGVEb21haQog
ICAgIGZvciAoYXV0byYgcHJvY2VzcyA6IHByb2Nlc3NlcygpKQogICAgICAgICBwcm9jZXNzLT5z
ZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlNlZWRSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRm9yVGVzdGluZyhmaXJzdFBhcnR5RG9tYWluLCB0aGlyZFBhcnR5RG9tYWluLCBz
aG91bGRTY2hlZHVsZU5vdGlmaWNhdGlvbiksIFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CiB9
CisKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNlbmRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YUlt
bWVkaWF0ZWx5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3sKKyAgICBhdXRvIGNhbGxiYWNrQWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3Jl
YXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKworICAgIGZvciAoYXV0byYgcHJvY2Vz
cyA6IHByb2Nlc3NlcygpKQorICAgICAgICBwcm9jZXNzLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVz
c2FnZXM6OldlYlByb2Nlc3M6OlNlbmRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YUltbWVkaWF0
ZWx5KCksIFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7Cit9CiAjZW5kaWYKIAogV2ViUHJvY2Vz
c1dpdGhBdWRpYmxlTWVkaWFUb2tlbiBXZWJQcm9jZXNzUG9vbDo6d2ViUHJvY2Vzc1dpdGhBdWRp
YmxlTWVkaWFUb2tlbigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuaAppbmRleCAxZjQ2Y2U0ZDYzN2U3NDZkOTRjNmU4YWU5NjUzYmFkMGNhNzk4MjdlLi5hZjFm
MDdmMmYyMWZiYzI4Nzk0OTRhMjdhMzk0M2FiYzgzYjJkNzNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTUxNiw2ICs1MTYsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBkaWRDb21taXRDcm9zc1NpdGVMb2FkV2l0aERhdGFUcmFuc2ZlcihQQUw6OlNlc3Npb25J
RCwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIGZyb21Eb21haW4sIGNvbnN0IFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiB0b0RvbWFpbiwgT3B0aW9uU2V0PFdlYkNvcmU6OkNy
b3NzU2l0ZU5hdmlnYXRpb25EYXRhVHJhbnNmZXI6OkZsYWc+LCBXZWJQYWdlUHJveHlJZGVudGlm
aWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAgICAgdm9pZCBzZXREb21haW5zV2l0aFVz
ZXJJbnRlcmFjdGlvbihIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYmKTsKICAg
ICB2b2lkIHNlZWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRm9yVGVzdGluZyhjb25zdCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbiwgY29uc3QgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4mIHRoaXJkUGFydHlEb21haW4sIGJvb2wgc2hvdWxkU2NoZWR1bGVOb3Rp
ZmljYXRpb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBzZW5kUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFJbW1lZGlhdGVseShDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZS5jcHAKaW5kZXggNDg4ODcyM2UwYmRhNTc4MzhjMjg4NzlkY2NmMjdlMWUzYjQxNGYy
Mi4uOTlhNDBlZDYwZDkzYjg0ZGYwZWRhZGIwZDhkMzg0OGRjODJiOGM2OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZS5jcHAKQEAgLTE1NjAsOCArMTU2MCwxMCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmdldFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhU3VtbWFyeShDb21wbGV0aW9uSGFuZGxlcjx2bwogICAg
IFJlZlB0cjxDYWxsYmFja0FnZ3JlZ2F0b3I+IGNhbGxiYWNrQWdncmVnYXRvciA9IGFkb3B0UmVm
KG5ldyBDYWxsYmFja0FnZ3JlZ2F0b3IoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpKTsKIAog
ICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBlbnN1cmVQcm9jZXNzUG9vbHMoKSkgewotICAg
ICAgICBwcm9jZXNzUG9vbC0+ZW5zdXJlTmV0d29ya1Byb2Nlc3ModGhpcykuZ2V0UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFTdW1tYXJ5KG1fc2Vzc2lvbklELCBbY2FsbGJhY2tBZ2dyZWdhdG9y
LCBwcm9jZXNzUG9vbF0oVmVjdG9yPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhp
cmRQYXJ0eURhdGE+JiYgZGF0YSkgewotICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5h
ZGRSZXN1bHQoV1RGTW92ZShkYXRhKSk7CisgICAgICAgIHByb2Nlc3NQb29sLT5zZW5kUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFJbW1lZGlhdGVseShbdGhpcywgcHJvY2Vzc1Bvb2wsIGNhbGxi
YWNrQWdncmVnYXRvcl0geworICAgICAgICAgICAgcHJvY2Vzc1Bvb2wtPmVuc3VyZU5ldHdvcmtQ
cm9jZXNzKHRoaXMpLmdldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhU3VtbWFyeShtX3Nlc3Np
b25JRCwgW2NhbGxiYWNrQWdncmVnYXRvciwgcHJvY2Vzc1Bvb2xdKFZlY3RvcjxXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhPiYmIGRhdGEpIHsKKyAgICAgICAg
ICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPmFkZFJlc3VsdChXVEZNb3ZlKGRhdGEpKTsKKyAg
ICAgICAgICAgIH0pOwogICAgICAgICB9KTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNl
TG9hZE9ic2VydmVyLmNwcAppbmRleCBlMjNjNzkxNzJhNTg5YjdlNjg3ZTcwYTg2MGI0ODVlYmVl
NGZjNGRjLi5mN2RjMDE3YzY0OTc1NjVlYzVmMWQyNDU0MjgyMWVkZjU2NDFmMmNjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VM
b2FkT2JzZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAKQEAgLTExMiw5ICsxMTIsMTYgQEAgdm9p
ZCBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2NoZWR1bGVOb3RpZmljYXRpb25JZk5lZWRlZCgp
CiB2b2lkIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjp1cGRhdGVDZW50cmFsU3RhdGlzdGljc1N0
b3JlKCkKIHsKICAgICBtX25vdGlmaWNhdGlvblRpbWVyLnN0b3AoKTsKLSAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9u
KCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlc291cmNl
TG9hZFN0YXRpc3RpY3NVcGRhdGVkKHRha2VTdGF0aXN0aWNzKCkpLCAwKTsKKyAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0
aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQodGFrZVN0YXRpc3RpY3MoKSks
IFtdIHsgfSk7CiB9CiAKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnVwZGF0ZUNlbnRy
YWxTdGF0aXN0aWNzU3RvcmVXaXRoUmVwbHkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQoreworICAgIG1fbm90aWZpY2F0aW9uVGltZXIuc3RvcCgpOworICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigp
LmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZCh0YWtlU3RhdGlz
dGljcygpKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCisKIFN0cmluZyBXZWJS
ZXNvdXJjZUxvYWRPYnNlcnZlcjo6c3RhdGlzdGljc0ZvclVSTChjb25zdCBVUkwmIHVybCkKIHsK
ICAgICBhdXRvIGl0ZXIgPSBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5maW5kKFJlZ2lzdHJhYmxl
RG9tYWluIHsgdXJsIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZE9ic2VydmVyLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaAppbmRleCAx
ODZmYWExM2Y2ODQyNGQwMjNmZmU3NGJhOTU3NDgwM2YyM2Q3YzgzLi5iOTMxMDBmNzUyYWFlMTAy
MzYxM2Q4MGE4M2M2YmYxZWM0N2Y1NmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2
ZXIuaApAQCAtNTgsNiArNTgsNyBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgc3RhdGlzdGljc0Zv
clVSTChjb25zdCBVUkwmKSBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZUNlbnRyYWxTdGF0aXN0aWNz
U3RvcmUoKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUNlbnRyYWxTdGF0aXN0aWNzU3RvcmVXaXRo
UmVwbHkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBmaW5hbDsKICAgICB2b2lkIGNsZWFy
U3RhdGUoKSBmaW5hbDsKICAgICAKICAgICBib29sIGhhc1N0YXRpc3RpY3MoKSBjb25zdCBmaW5h
bCB7IHJldHVybiAhbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuaXNFbXB0eSgpOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggNjcwOGY5ZDBhNWNlNzNiZmNhMGE5
ZGQwNzdiOTNmNzM4M2Y0ZDkxZS4uY2E3YjM0NDM5ZWUyYWY1NzczY2Y0YTUzNGVlOWIxMmQxODI2
NjFkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMTkwNyw2
ICsxOTA3LDExIEBAIHZvaWQgV2ViUHJvY2Vzczo6c2V0RG9tYWluc1dpdGhVc2VySW50ZXJhY3Rp
b24oSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpCiB7CiAgICAgUmVzb3VyY2VMb2Fk
T2JzZXJ2ZXI6OnNoYXJlZCgpLnNldERvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uKFdURk1vdmUo
ZG9tYWlucykpOwogfQorCit2b2lkIFdlYlByb2Nlc3M6OnNlbmRSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YUltbWVkaWF0ZWx5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3sKKyAgICBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkudXBkYXRlQ2Vu
dHJhbFN0YXRpc3RpY3NTdG9yZVdpdGhSZXBseShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
Cit9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5oCmluZGV4IGUwNWZhMWIyZTk3NTFlYmQzNDg5NjdkYzlkNjliNWFkOWUx
YTJkZDcuLjNmOGY3NGEwZWZjNjMyYTkzNDI0ZGM0NzAzM2E4ODNjZDRmY2VhMDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtNDc1LDYgKzQ3NSw3IEBAIHByaXZhdGU6
CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICB2b2lkIHNldFRoaXJk
UGFydHlDb29raWVCbG9ja2luZ01vZGUoV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
TW9kZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldERvbWFpbnNX
aXRoVXNlckludGVyYWN0aW9uKEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiYp
OworICAgIHZvaWQgc2VuZFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhSW1tZWRpYXRlbHkoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICNlbmRpZgogCiAgICAgdm9pZCBwbGF0Zm9ybUlu
aXRpYWxpemVQcm9jZXNzKGNvbnN0IEF1eGlsaWFyeVByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFt
ZXRlcnMmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2Fn
ZXMuaW4KaW5kZXggODkzNTk4OTUwY2Y2Mjk2ZDBkYzRmYjdhMzI5NmI3MjgxN2MwZTIxOS4uOTQx
Nzc1MmQ2YTgxOGY1YjQ4ZmI5MDk5YzdhZWZjZmVmYTY2ZDBjNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTE1OSw2ICsxNTksNyBA
QCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIE5vdFJlZkNvdW50ZWQgewog
ICAgIFNlZWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRm9yVGVzdGluZyhXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiBmaXJzdFBhcnR5RG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0
aGlyZFBhcnR5RG9tYWluLCBib29sIHNob3VsZFNjaGVkdWxlTm90aWZpY2F0aW9uKSAtPiAoKSBB
c3luYwogICAgIFNldFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoZW51bTp1aW50OF90IFdl
YkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgYmxvY2tpbmdNb2RlKSAtPiAoKSBB
c3luYwogICAgIFNldERvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uKEhhc2hTZXQ8V2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnMpCisgICAgU2VuZFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhSW1tZWRpYXRlbHkoKSAtPiAoKSBBc3luYwogI2VuZGlmCiAKICNpZiBQTEFURk9STShJ
T1MpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407343</attachid>
            <date>2020-08-26 15:17:30 -0700</date>
            <delta_ts>2020-08-26 18:52:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215822-20200826151729.patch</filename>
            <type>text/plain</type>
            <size>24344</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2MDgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDlhMmY2MmRlOGM3YmJi
NGQyNDA3MTdkY2RiOGRlMTIyNWExMmI5OS4uZGRjNDVkNWE1ZDA0M2RkZDZkZDk4Zjg3OTYwZGIz
YzkyY2U3YjY5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIwLTA4LTI2ICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNl
IExvYWQgU3RhdGlzdGljcyBkYXRhIHN1bW1hcnkgZG9lcyBub3QgcmVwb3J0IGRhdGEgd2hpY2gg
aXMgaGVsZCB1cCBpbiB0aGUgd2ViIGNvbnRlbnQgcHJvY2Vzcy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTgyMgorICAgICAgICA8cmRhcjovL3By
b2JsZW0vNjY2ODIwNDQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgU2VuZCBlbXB0eSBsYW1iZGEgd2hlbiBjYWxsaW5nIHVwZGF0ZUNlbnRyYWxTdGF0
aXN0aWNzU3RvcmUoKSBiZWNhdXNlCisgICAgICAgIGluIHRoZXNlIGNhc2VzIHdlIGRvbid0IGNh
cmUgYWJvdXQgdGltaW5nLgorCisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6dXBkYXRlQ2VudHJh
bFN0YXRpc3RpY3NTdG9yZSk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NV2luZG93OjpjbG9zZSk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5h
bHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpub3RpZnlSZXNvdXJjZUxvYWRP
YnNlcnZlcik6CisKIDIwMjAtMDgtMjQgIEVtaWxpbyBDb2JvcyDDgWx2YXJleiAgPGVtaWxpb0Bj
cmlzYWwuaW8+CiAKICAgICAgICAgU3VwcG9ydCBxdW90ZXM6YXV0byBhbmQgZml4IHF1b3RlcyBz
ZXJpYWxpemF0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBiNjA1MWM0MTc0MzQzOTg1YjJlM2IxNGU0ZTUwY2Q2
ZWVlNjViODdlLi4xNWI3MjM4MTJjMWJlMzc2NjkzZDRkZTdkNjI1MzJmMjYzZjE5ZWM3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDIwLTA4LTI2ICBLYXRlIENoZW5leSAgPGthdGhlcmlu
ZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlIExvYWQgU3RhdGlzdGljcyBk
YXRhIHN1bW1hcnkgZG9lcyBub3QgcmVwb3J0IGRhdGEgd2hpY2ggaXMgaGVsZCB1cCBpbiB0aGUg
d2ViIGNvbnRlbnQgcHJvY2Vzcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxNTgyMgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjY2ODIwNDQ+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzLCB0aGlzIGZpeGVzIGEgdGltaW5nIGJ1ZyB0aGF0IGlzIGZsYWt5IHRvIHJlcHJvZHVjZSwg
c28gSQorICAgICAgICB3YXMgdW5hYmxlIHRvIHdyaXRlIGEgdGVzdCBjYXNlLiBOb24tcmVncmVz
c2VkIGJlaGF2aW9yIGlzIGNvbmZpcm1lZAorICAgICAgICB3aXRoIGV4aXN0aW5nIEFQSSB0ZXN0
aW5nLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKToKKyAgICAgICAg
TW9zdCBvZiB0aGUgdGltZSwgdGhlIGNvbXBsZXRpb24gaGFuZGxlciB3aWxsIGJlIGFuIGVtcHR5
IGZ1bmN0aW9uLAorICAgICAgICBidXQgd2Ugc2hvdWxkIGhhbmRsZSBpdCBpbiB0aGUgbmV0d29y
ayBwcm9jZXNzIHNvIHdlIGZpeCB0aGUKKyAgICAgICAgY2FzZSB3aGVyZSB3ZSB3YWl0IHRvIHNl
bmQgdGhlIGZ1bGwgZGF0YSBzdW1tYXJ5IHVudGlsIHRoZSB1cGRhdGUgaGFzCisgICAgICAgIGZp
bmlzaGVkLgorCisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6YWdncmVnYXRlZFRoaXJkUGFydHlEYXRhKToKKyAgICAgICAgRGVsZXRlIGV4dHJhIHNwYWNl
LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZCk6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5p
bjoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUG9vbDo6c2VuZFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhSW1tZWRp
YXRlbHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6Z2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFTdW1t
YXJ5KToKKyAgICAgICAgRG9uJ3QgYXNrIHRoZSBuZXR3b3JrIHByb2Nlc3MgZm9yIGRhdGEgdW50
aWwgYW55IGxpbmdlcmluZyBkYXRhCisgICAgICAgIGluIHRoZSB3ZWIgY29udGVudCBwcm9jZXNz
IGhhcyBiZWVuIHNlbnQgZmlyc3QuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9jL1dLQnVuZGxlLmNwcDoKKyAgICAgICAgKFdLQnVuZGxlUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc05vdGlmeU9ic2VydmVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYlJlc291cmNlTG9hZE9ic2VydmVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVz
b3VyY2VMb2FkT2JzZXJ2ZXI6OldlYlJlc291cmNlTG9hZE9ic2VydmVyKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6On5XZWJSZXNvdXJjZUxvYWRPYnNlcnZlcik6
CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZE9ic2VydmVyOjp1cGRhdGVDZW50cmFs
U3RhdGlzdGljc1N0b3JlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlJlc291cmNlTG9hZE9ic2VydmVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6Zmx1c2hSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6c2VuZFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhSW1tZWRpYXRlbHkpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKwogMjAy
MC0wOC0yNCAgQWRpdHlhIEtlZXJ0aGkgIDxha2VlcnRoaUBhcHBsZS5jb20+CiAKICAgICAgICAg
W21hY09TXSBTaG93IHBpY2tlciBmb3IgZGF0ZSBhbmQgZGF0ZXRpbWUtbG9jYWwgaW5wdXQgdHlw
ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZl
ci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmgKaW5kZXgg
NjdmYmZmYzJkMjBhYjJmZDhiYTU2YThkZmE0ZDRhZTc4YTk1ZWIyMC4uM2U5YzBmODRmMjVjZmQx
YWIwMDliZTdjMmFjZTIwMGU0YTU3OTdlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jl
c291cmNlTG9hZE9ic2VydmVyLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAj
aW5jbHVkZSAiUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oIgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0
aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTU4LDcgKzU5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBsb2dTdWJy
ZXNvdXJjZUxvYWRpbmdGb3JUZXN0aW5nKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiAvKiBmaXJz
dFBhcnR5RG9tYWluICovLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgLyogdGhpcmRQYXJ0eURv
bWFpbiAqLywgYm9vbCAvKiBzaG91bGRTY2hlZHVsZU5vdGlmaWNhdGlvbiAqLykgeyB9CiAKICAg
ICB2aXJ0dWFsIFN0cmluZyBzdGF0aXN0aWNzRm9yVVJMKGNvbnN0IFVSTCYpIHsgcmV0dXJuIHsg
fTsgfQotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDZW50cmFsU3RhdGlzdGljc1N0b3JlKCkgeyB9
CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNlbnRyYWxTdGF0aXN0aWNzU3RvcmUoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVy
KCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJTdGF0ZSgpIHsgfQogICAgIAogICAgIHZpcnR1
YWwgYm9vbCBoYXNTdGF0aXN0aWNzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmNwcAppbmRleCBiZTNmZWQwNWZmYjA1NDRiODY3NzQ5OTlhZWVjNTQxYzBm
ZDkxNmU5Li41N2RlZjMwZTBkNWY3N2JmYTZiNzg5ZDVmZWJkNDY2M2Q1MTgzOWVjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC0xMDQ4LDcgKzEwNDgsNyBAQCB2b2lkIERPTVdpbmRv
dzo6Y2xvc2UoKQogICAgIGlmICghZnJhbWUtPmxvYWRlcigpLnNob3VsZENsb3NlKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS51cGRhdGVD
ZW50cmFsU3RhdGlzdGljc1N0b3JlKCk7CisgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJl
ZCgpLnVwZGF0ZUNlbnRyYWxTdGF0aXN0aWNzU3RvcmUoW10geyB9KTsKIAogICAgIHBhZ2UtPnNl
dElzQ2xvc2luZygpOwogICAgIHBhZ2UtPmNocm9tZSgpLmNsb3NlV2luZG93U29vbigpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDkwYzlkOThhY2ZhMWEyMWE3ZjRiNDRk
ZDEyOGQ5OGIwMTIzZDQ4YzIuLjhhZGU0ODc3MzM5MzBiMmIyYWIwMzY2MWZmNTgxMWUxYjcyY2Fm
ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTU2MjUsNyArNTYyNSw3
IEBAIHNpemVfdCBJbnRlcm5hbHM6OnBsdWdpbkNvdW50KCkKIAogdm9pZCBJbnRlcm5hbHM6Om5v
dGlmeVJlc291cmNlTG9hZE9ic2VydmVyKCkKIHsKLSAgICBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6
c2hhcmVkKCkudXBkYXRlQ2VudHJhbFN0YXRpc3RpY3NTdG9yZSgpOworICAgIFJlc291cmNlTG9h
ZE9ic2VydmVyOjpzaGFyZWQoKS51cGRhdGVDZW50cmFsU3RhdGlzdGljc1N0b3JlKFtdIHsgfSk7
CiB9CiAKIHVuc2lnbmVkIEludGVybmFsczo6cHJpbWFyeVNjcmVlbkRpc3BsYXlJRCgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4IGYzNDEy
MGMxYzMyN2RjZmM1MzY5ZWI4ZTQzZTJhYTNkZTQxMjI1M2EuLmUwMzgyNDg4YjY5NjQ3ZTk5MTBl
MTY3YjJlZDRmNDE1MjE0OWJjMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuY3BwCkBAIC0zNTMsMjAgKzM1MywyMiBAQCB2b2lkIFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6c3RhdGlzdGljc0RhdGFiYXNlSGFzQWxsVGFibGVzKENvbXBs
ZXRpb25IYQogICAgIH0pOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQoVmVjdG9yPFJlc291cmNlTG9hZFN0YXRp
c3RpY3M+JiYgc3RhdGlzdGljcykKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlz
dGljcz4mJiBzdGF0aXN0aWNzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIC8vIEl0
IGlzIHNhZmUgdG8gbW92ZSB0aGUgb3JpZ2lucyB0byB0aGUgYmFja2dyb3VuZCBxdWV1ZSB3aXRo
b3V0IGlzb2xhdGVkIGNvcHkgaGVyZSBiZWNhdXNlIHRoaXMgaXMgYW4gci12YWx1ZQogICAgIC8v
IGNvbWluZyBmcm9tIElQQy4gUmVzb3VyY2VMb2FkU3RhdGlzdGljcyBvbmx5IGNvbnRhaW5zIHN0
cmluZ3Mgd2hpY2ggYXJlIHNhZmUgdG8gbW92ZSB0byBvdGhlciB0aHJlYWRzIGFzIGxvbmcKICAg
ICAvLyBhcyBub2JvZHkgb24gdGhpcyB0aHJlYWQgaG9sZHMgYSByZWZlcmVuY2UgdG8gdGhvc2Ug
c3RyaW5ncy4KLSAgICBwb3N0VGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCBzdGF0aXN0aWNzID0gV1RGTW92ZShzdGF0aXN0aWNzKV0oKSBtdXRhYmxlIHsKLSAgICAg
ICAgaWYgKCFtX3N0YXRpc3RpY3NTdG9yZSkKKyAgICBwb3N0VGFzayhbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzdGF0aXN0aWNzID0gV1RGTW92ZShzdGF0aXN0aWNzKSwg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxl
IHsKKyAgICAgICAgaWYgKCFtX3N0YXRpc3RpY3NTdG9yZSkgeworICAgICAgICAgICAgcG9zdFRh
c2tSZXBseShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KIAogICAgICAgICBBU1NFUlQoc3VzcGVuZGVkU3RhdGUgIT0gU3RhdGU6OlN1
c3BlbmRlZCk7CiAgICAgICAgIG1fc3RhdGlzdGljc1N0b3JlLT5tZXJnZVN0YXRpc3RpY3MoV1RG
TW92ZShzdGF0aXN0aWNzKSk7Ci0KKyAgICAgICAgcG9zdFRhc2tSZXBseShXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIC8vIFdlIGNhbiBjYW5jZWwgYW55IHBlbmRpbmcgcmVx
dWVzdCB0byBwcm9jZXNzIHN0YXRpc3RpY3Mgc2luY2Ugd2UncmUgZG9pbmcgaXQgc3luY2hyb25v
dXNseSBiZWxvdy4KICAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUtPmNhbmNlbFBlbmRpbmdTdGF0
aXN0aWNzUHJvY2Vzc2luZ1JlcXVlc3QoKTsKIApAQCAtMTQ0NCw3ICsxNDQ2LDcgQEAgdm9pZCBX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmFnZ3JlZ2F0ZWRUaGlyZFBhcnR5RGF0YShD
b21wbGV0aW9uSGFuZGxlcjwKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCi0g
ICAgcG9zdFRhc2soW3RoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildKCkgbXV0YWJsZSAgeworICAgIHBvc3RUYXNrKFt0aGlzLCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICBp
ZiAoIW1fc3RhdGlzdGljc1N0b3JlKSB7CiAgICAgICAgICAgICBwb3N0VGFza1JlcGx5KFtjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewog
ICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKaW5kZXggMTNiODJlMTIyOTY5ZjAxNTkyOGQ3
YTY2ZDU3NDJiNmM0Y2EwM2M2YS4uNGE5NDRiMTk0OWE3NjNlM2JlNDU5OTE3MjFiMWMyMzQ2NDgy
MTkyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaApA
QCAtMjkyLDcgKzI5Miw3IEBAIHN0cnVjdCBUaGlyZFBhcnR5RGF0YSB7CiAgICAgdm9pZCBzZW5k
RGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBT
dHJpbmcmIGRlc2NyaXB0aW9uLCB1bnNpZ25lZCB2YWx1ZSwgdW5zaWduZWQgc2lnRGlnaXRzLCBX
ZWJDb3JlOjpTaG91bGRTYW1wbGUpIGNvbnN0OwogICAgIHZvaWQgbm90aWZ5UGFnZVN0YXRpc3Rp
Y3NUZWxlbWV0cnlGaW5pc2hlZCh1bnNpZ25lZCBudW1iZXJPZlByZXZhbGVudFJlc291cmNlcywg
dW5zaWduZWQgbnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9uLCB1
bnNpZ25lZCBudW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24s
IHVuc2lnbmVkIHRvcFByZXZhbGVudFJlc291cmNlV2l0aFVzZXJJbnRlcmFjdGlvbkRheXNTaW5j
ZVVzZXJJbnRlcmFjdGlvbiwgdW5zaWduZWQgbWVkaWFuRGF5c1NpbmNlVXNlckludGVyYWN0aW9u
UHJldmFsZW50UmVzb3VyY2VXaXRoVXNlckludGVyYWN0aW9uLCB1bnNpZ25lZCB0b3AzTnVtYmVy
T2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVUksIHVuc2lnbmVkIHRvcDNNZWRpYW5TdWJGcmFtZVdp
dGhvdXRVSSwgdW5zaWduZWQgdG9wM01lZGlhblN1YlJlc291cmNlV2l0aG91dFVJLCB1bnNpZ25l
ZCB0b3AzTWVkaWFuVW5pcXVlUmVkaXJlY3RzV2l0aG91dFVJLCB1bnNpZ25lZCB0b3AzTWVkaWFu
RGF0YVJlY29yZHNSZW1vdmVkV2l0aG91dFVJKSBjb25zdDsKIAotICAgIHZvaWQgcmVzb3VyY2VM
b2FkU3RhdGlzdGljc1VwZGF0ZWQoVmVjdG9yPFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3M+JiYpOworICAgIHZvaWQgcmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQoVmVjdG9yPFdl
YkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M+JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CiAgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKERvbWFpbklu
TmVlZE9mU3RvcmFnZUFjY2VzcyYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBvcGVuZXJJRCwg
T3BlbmVyRG9tYWluJiYpOwogICAgIHZvaWQgYWdncmVnYXRlZFRoaXJkUGFydHlEYXRhKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
VGhpcmRQYXJ0eURhdGE+JiYpPiYmKTsKICAgICBzdGF0aWMgdm9pZCBzdXNwZW5kKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IGI3
ZGRiNzU0ZjMwMDZjZjRhNWJkY2M2ZjlkYjE0NDU2MWE0ODU4MzcuLmFjY2VkNmFiY2Y4YjYxNjMy
MGY4NDY3YjQ1ODAyMzNjZDI4OThiZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBA
IC04NzAsMTQgKzg3MCwxOSBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjps
b2dVc2VySW50ZXJhY3Rpb24oY29uc3QgUmVnaXN0cmFibGVEb21haW4mCiAgICAgfQogfQogCi12
b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNz
VXBkYXRlZChWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mJiBzdGF0aXN0aWNzKQordm9p
ZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc1Vw
ZGF0ZWQoVmVjdG9yPFJlc291cmNlTG9hZFN0YXRpc3RpY3M+JiYgc3RhdGlzdGljcywgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChhdXRv
KiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKCkpIHsKLSAgICAgICAgaWYg
KG5ldHdvcmtTZXNzaW9uLT5zZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpKQorICAgICAgICBpZiAo
bmV0d29ya1Nlc3Npb24tPnNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCkpIHsKKyAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGlmIChh
dXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9h
ZFN0YXRpc3RpY3MoKSkKLSAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnJlc291
cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFdURk1vdmUoc3RhdGlzdGljcykpOworICAgICAgICB9
CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Np
b24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkgeworICAgICAgICAgICAgcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy0+cmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQoV1RGTW92ZShzdGF0aXN0
aWNzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CiAgICAgfQorICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKIHZvaWQgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Omhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9w
RnJhbWVEb21haW4sIEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdl
SUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggZWNhODkyMTZlNGNiOGY5N2E4YTg4YmEyOTc5MTMz
YTk5YmMwMzkzNi4uYmNkNjE1ZjA5ODhjYWU5NjA1ZDc4NmNhODhhMTgzNjAwMzgyMjdjNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtMjY2LDcgKzI2Niw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBjbGVhclBhZ2VTcGVjaWZpY0RhdGFGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyKTsKIAogICAgIHZvaWQgbG9nVXNlckludGVyYWN0aW9uKGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJik7Ci0gICAgdm9pZCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBk
YXRlZChWZWN0b3I8V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mJik7CisgICAgdm9p
ZCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChWZWN0b3I8V2ViQ29yZTo6UmVzb3VyY2VM
b2FkU3RhdGlzdGljcz4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lk
IGhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWlu
LCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYpOwogICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9w
RnJhbWVEb21haW4sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NTY29w
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXF1ZXN0U3RvcmFnZUFjY2Vzc1Jl
c3VsdCk+JiYpOwogICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIgb3BlbmVyUGFnZUlELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiYmIG9wZW5lckRvbWFpbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNz
YWdlcy5pbgppbmRleCA1ODI2NzdkOGU2MzZkODc5MTJlZjdiNTFlNzNhYjBhNmIwNTg1YjExLi4w
NTc1MGJiNTM5ZTRlMTZiOTdjMzZmZTM2OTVlZjE3NGJjZTIwOTZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTY1LDcgKzY1LDcgQEAgbWVzc2FnZXMg
LT4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFJl
bW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJ
RCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKTsKICAgICBDbGVhclBhZ2VTcGVjaWZp
Y0RhdGFGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBh
Z2VJRCk7CiAgICAgTG9nVXNlckludGVyYWN0aW9uKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
IGRvbWFpbikKLSAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChWZWN0b3I8V2ViQ29y
ZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4gc3RhdGlzdGljcykKKyAgICBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzVXBkYXRlZChWZWN0b3I8V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4g
c3RhdGlzdGljcykgLT4gKCkgQXN5bmMKICAgICBIYXNTdG9yYWdlQWNjZXNzKFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluIHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biB0b3BGcmFtZURvbWFpbiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkgLT4gKGJvb2wgaGFzU3RvcmFnZUFjY2VzcykgQXN5
bmMKICAgICBSZXF1ZXN0U3RvcmFnZUFjY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBz
dWJGcmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9wRnJhbWVEb21haW4s
IFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciB3ZWJQYWdlSUQsIFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJ
RCwgZW51bTpib29sIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NTY29wZSBzY29wZSkgLT4gKHN0cnVj
dCBXZWJDb3JlOjpSZXF1ZXN0U3RvcmFnZUFjY2Vzc1Jlc3VsdCByZXN1bHQpIEFzeW5jCiAgICAg
UmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG9w
ZW5lclBhZ2VJRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gb3BlbmVyRG9tYWluKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IDc0YTM1Nzc4NjZk
Y2YzMDRiMjU3NTU1MjliZDQ5ZmFjYmMxZTAzNzEuLjk4NGQyZmU5NjllOTY4M2IyYjdmMDExZWZh
OGVhMzliZDZmNDZhNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5jcHAKQEAgLTI0MDAsNiArMjQwMCwxNCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZWVkUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0ZvclRlc3RpbmcoY29uc3QgUmVnaXN0cmFibGVEb21haQogICAg
IGZvciAoYXV0byYgcHJvY2VzcyA6IHByb2Nlc3NlcygpKQogICAgICAgICBwcm9jZXNzLT5zZW5k
V2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlNlZWRSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRm9yVGVzdGluZyhmaXJzdFBhcnR5RG9tYWluLCB0aGlyZFBhcnR5RG9tYWluLCBzaG91
bGRTY2hlZHVsZU5vdGlmaWNhdGlvbiksIFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CiB9CisK
K3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNlbmRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YUltbWVk
aWF0ZWx5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sK
KyAgICBhdXRvIGNhbGxiYWNrQWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRl
KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKworICAgIGZvciAoYXV0byYgcHJvY2VzcyA6
IHByb2Nlc3NlcygpKQorICAgICAgICBwcm9jZXNzLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6OldlYlByb2Nlc3M6OlNlbmRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YUltbWVkaWF0ZWx5
KCksIFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7Cit9CiAjZW5kaWYKIAogV2ViUHJvY2Vzc1dp
dGhBdWRpYmxlTWVkaWFUb2tlbiBXZWJQcm9jZXNzUG9vbDo6d2ViUHJvY2Vzc1dpdGhBdWRpYmxl
TWVkaWFUb2tlbigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
aAppbmRleCAxZjQ2Y2U0ZDYzN2U3NDZkOTRjNmU4YWU5NjUzYmFkMGNhNzk4MjdlLi5hZjFmMDdm
MmYyMWZiYzI4Nzk0OTRhMjdhMzk0M2FiYzgzYjJkNzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTUxNiw2ICs1MTYsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBkaWRDb21taXRDcm9zc1NpdGVMb2FkV2l0aERhdGFUcmFuc2ZlcihQQUw6OlNlc3Npb25JRCwg
Y29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIGZyb21Eb21haW4sIGNvbnN0IFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluJiB0b0RvbWFpbiwgT3B0aW9uU2V0PFdlYkNvcmU6OkNyb3Nz
U2l0ZU5hdmlnYXRpb25EYXRhVHJhbnNmZXI6OkZsYWc+LCBXZWJQYWdlUHJveHlJZGVudGlmaWVy
LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAgICAgdm9pZCBzZXREb21haW5zV2l0aFVzZXJJ
bnRlcmFjdGlvbihIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYmKTsKICAgICB2
b2lkIHNlZWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRm9yVGVzdGluZyhjb25zdCBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4mIHRoaXJkUGFydHlEb21haW4sIGJvb2wgc2hvdWxkU2NoZWR1bGVOb3RpZmlj
YXRpb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBzZW5kUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFJbW1lZGlhdGVseShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZS5jcHAKaW5kZXggNDg4ODcyM2UwYmRhNTc4MzhjMjg4NzlkY2NmMjdlMWUzYjQxNGYyMi4u
NDc0YjA1ZTExZDdkNTRiOWVkYWVjYjU5ZDZmYmRkOWNjOWEwNzZlNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5j
cHAKQEAgLTE1NjAsOCArMTU2MCwxMCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmdldFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhU3VtbWFyeShDb21wbGV0aW9uSGFuZGxlcjx2bwogICAgIFJl
ZlB0cjxDYWxsYmFja0FnZ3JlZ2F0b3I+IGNhbGxiYWNrQWdncmVnYXRvciA9IGFkb3B0UmVmKG5l
dyBDYWxsYmFja0FnZ3JlZ2F0b3IoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpKTsKIAogICAg
IGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBlbnN1cmVQcm9jZXNzUG9vbHMoKSkgewotICAgICAg
ICBwcm9jZXNzUG9vbC0+ZW5zdXJlTmV0d29ya1Byb2Nlc3ModGhpcykuZ2V0UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFTdW1tYXJ5KG1fc2Vzc2lvbklELCBbY2FsbGJhY2tBZ2dyZWdhdG9yLCBw
cm9jZXNzUG9vbF0oVmVjdG9yPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQ
YXJ0eURhdGE+JiYgZGF0YSkgewotICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5hZGRS
ZXN1bHQoV1RGTW92ZShkYXRhKSk7CisgICAgICAgIHByb2Nlc3NQb29sLT5zZW5kUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFJbW1lZGlhdGVseShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCBwcm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdhdG9yXSB7CisgICAgICAgICAg
ICBwcm9jZXNzUG9vbC0+ZW5zdXJlTmV0d29ya1Byb2Nlc3ModGhpcykuZ2V0UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFTdW1tYXJ5KG1fc2Vzc2lvbklELCBbY2FsbGJhY2tBZ2dyZWdhdG9yLCBw
cm9jZXNzUG9vbF0oVmVjdG9yPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQ
YXJ0eURhdGE+JiYgZGF0YSkgeworICAgICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+
YWRkUmVzdWx0KFdURk1vdmUoZGF0YSkpOworICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwog
ICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3BwCmluZGV4IDU5ZDY0ZDVhOTkyOTYwYzQxYWNjY2Zm
YWYwZGU3ZDI5YjI1YjA5OTEuLmJiNjZiOTYwZWJmMWM4M2MyMzY3M2UyNGRkYTZjZTExNzllNThj
NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNwcApAQCAtMzA0LDcgKzMwNCw3IEBAIGJvb2wgV0tCdW5k
bGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTm90aWZ5T2JzZXJ2ZXIoV0tCdW5kbGVSZWYpCiAgICAg
aWYgKCFXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkuaGFzU3RhdGlzdGlj
cygpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBXZWJDb3JlOjpSZXNvdXJjZUxvYWRP
YnNlcnZlcjo6c2hhcmVkKCkudXBkYXRlQ2VudHJhbFN0YXRpc3RpY3NTdG9yZSgpOworICAgIFdl
YkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS51cGRhdGVDZW50cmFsU3RhdGlz
dGljc1N0b3JlKFtdIHsgfSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRPYnNl
cnZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVz
b3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCmluZGV4IGUyM2M3OTE3MmE1ODliN2U2ODdlNzBhODYwYjQ4
NWViZWU0ZmM0ZGMuLjQ3NzI3YzMwNGZlZDViMGVhYWQwMjMyYjJkN2U0YjliNWMzMDUxNzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZXNv
dXJjZUxvYWRPYnNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZE9ic2VydmVyLmNwcApAQCAtNjMsMTQgKzYzLDE0IEBA
IHN0YXRpYyBib29sIGlzM3h4UmVkaXJlY3QoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UpCiAKIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcihS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpJc0VwaGVtZXJhbCBpc0VwaGVtZXJhbCkKICAgICA6IG1f
aXNFcGhlbWVyYWwoaXNFcGhlbWVyYWwpCi0gICAgLCBtX25vdGlmaWNhdGlvblRpbWVyKCp0aGlz
LCAmV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnVwZGF0ZUNlbnRyYWxTdGF0aXN0aWNzU3RvcmUp
CisgICAgLCBtX25vdGlmaWNhdGlvblRpbWVyKFt0aGlzXSB7IHVwZGF0ZUNlbnRyYWxTdGF0aXN0
aWNzU3RvcmUoW10geyB9KTsgfSkKIHsKIH0KIAogV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6On5X
ZWJSZXNvdXJjZUxvYWRPYnNlcnZlcigpCiB7CiAgICAgaWYgKGhhc1N0YXRpc3RpY3MoKSkKLSAg
ICAgICAgdXBkYXRlQ2VudHJhbFN0YXRpc3RpY3NTdG9yZSgpOworICAgICAgICB1cGRhdGVDZW50
cmFsU3RhdGlzdGljc1N0b3JlKFtdIHsgfSk7CiB9CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXI6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoY29uc3QgUmVnaXN0cmFibGVE
b21haW4mIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgV2ViUGFnZSYgb3BlbmVyUGFnZSwg
RG9jdW1lbnQmIG9wZW5lckRvY3VtZW50KQpAQCAtMTA5LDEyICsxMDksMTMgQEAgdm9pZCBXZWJS
ZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2NoZWR1bGVOb3RpZmljYXRpb25JZk5lZWRlZCgpCiAgICAg
ICAgIG1fbm90aWZpY2F0aW9uVGltZXIuc3RhcnRPbmVTaG90KG1pbmltdW1Ob3RpZmljYXRpb25J
bnRlcnZhbCk7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnVwZGF0ZUNlbnRy
YWxTdGF0aXN0aWNzU3RvcmUoKQordm9pZCBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6dXBkYXRl
Q2VudHJhbFN0YXRpc3RpY3NTdG9yZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7CiAgICAgbV9ub3RpZmljYXRpb25UaW1lci5zdG9wKCk7Ci0gICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29u
bmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZCh0YWtlU3RhdGlzdGljcygpKSwgMCk7CisgICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCku
Y29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKHRha2VTdGF0aXN0
aWNzKCkpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKKwogU3RyaW5nIFdlYlJl
c291cmNlTG9hZE9ic2VydmVyOjpzdGF0aXN0aWNzRm9yVVJMKGNvbnN0IFVSTCYgdXJsKQogewog
ICAgIGF1dG8gaXRlciA9IG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLmZpbmQoUmVnaXN0cmFibGVE
b21haW4geyB1cmwgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5oCmluZGV4IDE4
NmZhYTEzZjY4NDI0ZDAyM2ZmZTc0YmE5NTc0ODAzZjIzZDdjODMuLmRjYzFiYWIzOWNkNDgzYjM4
NWExZWNmMGU0OGI1M2IyZGU3YTBmYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRPYnNlcnZl
ci5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgU3RyaW5nIHN0YXRp
c3RpY3NGb3JVUkwoY29uc3QgVVJMJikgZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVDZW50cmFsU3Rh
dGlzdGljc1N0b3JlKCkgZmluYWw7CisgICAgdm9pZCB1cGRhdGVDZW50cmFsU3RhdGlzdGljc1N0
b3JlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgZmluYWw7CiAgICAgdm9pZCBjbGVhclN0
YXRlKCkgZmluYWw7CiAgICAgCiAgICAgYm9vbCBoYXNTdGF0aXN0aWNzKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gIW1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLmlzRW1wdHkoKTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDY3MDhmOWQwYTVjZTczYmZjYTBhOWRk
MDc3YjkzZjczODNmNGQ5MWUuLjQ0NjYxNzA3ZDJiZmVlODRmNzM5ZmU1YzcyODIxYmRkYTEyNzIw
NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTE1OTUsNyAr
MTU5NSw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6Zmx1c2hSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkK
IHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIGlmIChhdXRvKiBv
YnNlcnZlciA9IFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWRJZkV4aXN0cygpKQotICAgICAg
ICBvYnNlcnZlci0+dXBkYXRlQ2VudHJhbFN0YXRpc3RpY3NTdG9yZSgpOworICAgICAgICBvYnNl
cnZlci0+dXBkYXRlQ2VudHJhbFN0YXRpc3RpY3NTdG9yZShbXSB7IH0pOwogI2VuZGlmCiB9CiAK
QEAgLTE5MDcsNiArMTkwNywxMSBAQCB2b2lkIFdlYlByb2Nlc3M6OnNldERvbWFpbnNXaXRoVXNl
ckludGVyYWN0aW9uKEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haQogewogICAgIFJl
c291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5zZXREb21haW5zV2l0aFVzZXJJbnRlcmFjdGlv
bihXVEZNb3ZlKGRvbWFpbnMpKTsKIH0KKwordm9pZCBXZWJQcm9jZXNzOjpzZW5kUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFJbW1lZGlhdGVseShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgp
LnVwZGF0ZUNlbnRyYWxTdGF0aXN0aWNzU3RvcmUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OworfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuaAppbmRleCBlMDVmYTFiMmU5NzUxZWJkMzQ4OTY3ZGM5ZDY5YjVhZDll
MWEyZGQ3Li4zZjhmNzRhMGVmYzYzMmE5MzQyNGRjNDcwMzNhODgzY2Q0ZmNlYTA4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTQ3NSw2ICs0NzUsNyBAQCBwcml2YXRl
OgogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgdm9pZCBzZXRUaGly
ZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2lu
Z01vZGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXREb21haW5z
V2l0aFVzZXJJbnRlcmFjdGlvbihIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYm
KTsKKyAgICB2b2lkIHNlbmRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YUltbWVkaWF0ZWx5KENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAjZW5kaWYKIAogICAgIHZvaWQgcGxhdGZvcm1J
bml0aWFsaXplUHJvY2Vzcyhjb25zdCBBdXhpbGlhcnlQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJh
bWV0ZXJzJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3Nh
Z2VzLmluCmluZGV4IDg5MzU5ODk1MGNmNjI5NmQwZGM0ZmI3YTMyOTZiNzI4MTdjMGUyMTkuLjk0
MTc3NTJkNmE4MThmNWI0OGZiOTA5OWM3YWVmY2ZlZmE2NmQwYzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0xNTksNiArMTU5LDcg
QEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciBOb3RSZWZDb3VudGVkIHsK
ICAgICBTZWVkUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZvclRlc3RpbmcoV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4gZmlyc3RQYXJ0eURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4g
dGhpcmRQYXJ0eURvbWFpbiwgYm9vbCBzaG91bGRTY2hlZHVsZU5vdGlmaWNhdGlvbikgLT4gKCkg
QXN5bmMKICAgICBTZXRUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKGVudW06dWludDhfdCBX
ZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIGJsb2NraW5nTW9kZSkgLT4gKCkg
QXN5bmMKICAgICBTZXREb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbihIYXNoU2V0PFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5zKQorICAgIFNlbmRSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YUltbWVkaWF0ZWx5KCkgLT4gKCkgQXN5bmMKICNlbmRpZgogCiAjaWYgUExBVEZPUk0o
SU9TKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>