<?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>213291</bug_id>
          
          <creation_ts>2020-06-17 07:09:49 -0700</creation_ts>
          <short_desc>Add support for fetching registrable domains with resource load statistics</short_desc>
          <delta_ts>2020-06-19 00:50:21 -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="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>achristensen</cc>
    
    <cc>aperez</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wilander</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1663459</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-06-17 07:09:49 -0700</bug_when>
    <thetext>WebsiteDataStore::fetchData() doesn&apos;t return anything for resource load statistics because NetworkProcess::fetchWebsiteData() doesn&apos;t handle WebsiteDataType::ResourceLoadStatistics</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1663462</commentid>
    <comment_count>1</comment_count>
      <attachid>402105</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-06-17 07:19:15 -0700</bug_when>
    <thetext>Created attachment 402105
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1663581</commentid>
    <comment_count>2</comment_count>
      <attachid>402105</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-06-17 10:42:02 -0700</bug_when>
    <thetext>Comment on attachment 402105
Patch

Just as a general comment, we&apos;ve struggled with the term website data here because ITP data isn&apos;t website data, i.e. it isn&apos;t data that the website creates but that WebKit creates *about* websites. That is in part why this has not been folded into the reporting structure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1663820</commentid>
    <comment_count>3</comment_count>
      <attachid>402105</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2020-06-18 00:46:09 -0700</bug_when>
    <thetext>Comment on attachment 402105
Patch

Patch looks reasonable, but the API tests are failing. Could you take
check that up, please?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1663822</commentid>
    <comment_count>4</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-06-18 01:00:52 -0700</bug_when>
    <thetext>(In reply to John Wilander from comment #2)
&gt; Comment on attachment 402105 [details]
&gt; Patch
&gt; 
&gt; Just as a general comment, we&apos;ve struggled with the term website data here
&gt; because ITP data isn&apos;t website data, i.e. it isn&apos;t data that the website
&gt; creates but that WebKit creates *about* websites. That is in part why this
&gt; has not been folded into the reporting structure.

I see. I still think it makes sense to allow the user to remove the resource load stats, like other (website) data and caches. In epiphany we always query the data  before showing the option to remove it. In the case of itp data we don&apos;t know if there&apos;s data to remove. That&apos;s how I noticed this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1663823</commentid>
    <comment_count>5</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-06-18 01:04:09 -0700</bug_when>
    <thetext>(In reply to Adrian Perez from comment #3)
&gt; Comment on attachment 402105 [details]
&gt; Patch
&gt; 
&gt; Patch looks reasonable, but the API tests are failing. Could you take
&gt; check that up, please?

I&apos;ll check, tests pass for me locally. It might be flaky.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1663825</commentid>
    <comment_count>6</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-06-18 01:08:50 -0700</bug_when>
    <thetext>The API test failure could also be because of bug #213290, if there are registrations in the default location in the system, I&apos;ll run EWS again after landing that patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1663826</commentid>
    <comment_count>7</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2020-06-18 01:13:28 -0700</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #6)
&gt; The API test failure could also be because of bug #213290, if there are
&gt; registrations in the default location in the system, I&apos;ll run EWS again
&gt; after landing that patch.

I suppose it would make sense to reset to a known state (in this case:
remove all) at the beginning of the API tests, before doing checks :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1663828</commentid>
    <comment_count>8</comment_count>
      <attachid>402105</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2020-06-18 01:15:56 -0700</bug_when>
    <thetext>Comment on attachment 402105
Patch

r=me, but let&apos;s please make sure the tests pass before landing :]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1663830</commentid>
    <comment_count>9</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-06-18 01:21:01 -0700</bug_when>
    <thetext>(In reply to Adrian Perez from comment #8)
&gt; Comment on attachment 402105 [details]
&gt; Patch
&gt; 
&gt; r=me, but let&apos;s please make sure the tests pass before landing :]

Sure, I&apos;ll also wait for WebKit2 owners to confirm they are ok with this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1663832</commentid>
    <comment_count>10</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2020-06-18 01:22:23 -0700</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #9)
&gt; (In reply to Adrian Perez from comment #8)
&gt; &gt; Comment on attachment 402105 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; r=me, but let&apos;s please make sure the tests pass before landing :]
&gt; 
&gt; Sure, I&apos;ll also wait for WebKit2 owners to confirm they are ok with this
&gt; change.

Perfect, thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1663839</commentid>
    <comment_count>11</comment_count>
      <attachid>402105</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-06-18 02:16:52 -0700</bug_when>
    <thetext>Comment on attachment 402105
Patch

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

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h:147
&gt; +    Vector&lt;RegistrableDomain&gt; allDomains() const override;

final?

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.h:116
&gt; +    Vector&lt;RegistrableDomain&gt; allDomains() const override;

final?

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

Hopping to another thread, this requires isolatedCopying domains.

&gt; Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:1378
&gt; +    });

Can we write it with a ternary, something like:
auto domains = m_statisticsStore ? m_statisticsStore-&gt;allDomains() : { };
postTaskReply([domains = crossThreadCopy(WTFMove(domains)), completionHandler = WTFMove(completionHandler)]() mutable {
    completionHandler(WTFMove(domains));
});

&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:1586
&gt; +                resourceLoadStatistics-&gt;registrableDomains([callbackAggregator = callbackAggregator.copyRef()](Vector&lt;RegistrableDomain&gt;&amp;&amp; domains) mutable {

s/Vector&lt;RegistrableDomain&gt;/auto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1663840</commentid>
    <comment_count>12</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-06-18 02:18:33 -0700</bug_when>
    <thetext>LGTM though I&apos;d like to understand John comment more.

(In reply to John Wilander from comment #2)
&gt; Comment on attachment 402105 [details]
&gt; Patch
&gt; 
&gt; Just as a general comment, we&apos;ve struggled with the term website data here
&gt; because ITP data isn&apos;t website data, i.e. it isn&apos;t data that the website
&gt; creates but that WebKit creates *about* websites. That is in part why this
&gt; has not been folded into the reporting structure.

It seems good to have a way to retrieve that information.
I guess your suggestion might be that the UI might be different and maybe the API should be different from other website data?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1663852</commentid>
    <comment_count>13</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-06-18 05:58:42 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #11)
&gt; Comment on attachment 402105 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=402105&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h:147
&gt; &gt; +    Vector&lt;RegistrableDomain&gt; allDomains() const override;
&gt; 
&gt; final?
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.h:116
&gt; &gt; +    Vector&lt;RegistrableDomain&gt; allDomains() const override;
&gt; 
&gt; final?
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:1375
&gt; &gt; +        postTaskReply([domains = WTFMove(domains), completionHandler = WTFMove(completionHandler)]() mutable {
&gt; 
&gt; Hopping to another thread, this requires isolatedCopying domains.

Also when moving?

&gt; &gt; Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:1378
&gt; &gt; +    });
&gt; 
&gt; Can we write it with a ternary, something like:
&gt; auto domains = m_statisticsStore ? m_statisticsStore-&gt;allDomains() : { };
&gt; postTaskReply([domains = crossThreadCopy(WTFMove(domains)),
&gt; completionHandler = WTFMove(completionHandler)]() mutable {
&gt;     completionHandler(WTFMove(domains));
&gt; });

Yes, I started with something like this but then I decided to follow what other similar methods in the file were doing.

&gt; &gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:1586
&gt; &gt; +                resourceLoadStatistics-&gt;registrableDomains([callbackAggregator = callbackAggregator.copyRef()](Vector&lt;RegistrableDomain&gt;&amp;&amp; domains) mutable {
&gt; 
&gt; s/Vector&lt;RegistrableDomain&gt;/auto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1663854</commentid>
    <comment_count>14</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-06-18 06:07:52 -0700</bug_when>
    <thetext>&gt; &gt; &gt; Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:1375
&gt; &gt; &gt; +        postTaskReply([domains = WTFMove(domains), completionHandler = WTFMove(completionHandler)]() mutable {
&gt; &gt; 
&gt; &gt; Hopping to another thread, this requires isolatedCopying domains.
&gt; 
&gt; Also when moving?

Yes, moving will only prevent refing when capturing.
It is safe to hop to another thread with a String which counter is 1. But otherwise, like in the in memory case, the strings may be derefed in both threads.
There is no guarantee that this will be the case in your code (especially for in memory stores).
Also isolatedCopy tries to optimise the case of Strings that are moved and which counter is 1, see String String::isolatedCopy() &amp;&amp;.

We could try to optimise the case of a Vector&lt;T&gt;&amp;&amp; so as to reuse the allocated vector and call isolatedCopy() &amp;&amp; on each item as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1663860</commentid>
    <comment_count>15</comment_count>
      <attachid>402202</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-06-18 06:24:25 -0700</bug_when>
    <thetext>Created attachment 402202
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1663869</commentid>
    <comment_count>16</comment_count>
      <attachid>402206</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-06-18 07:28:53 -0700</bug_when>
    <thetext>Created attachment 402206
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1664295</commentid>
    <comment_count>17</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-06-19 00:49:31 -0700</bug_when>
    <thetext>Committed r263258: &lt;https://trac.webkit.org/changeset/263258&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1664296</commentid>
    <comment_count>18</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-06-19 00:50:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/64522896&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>402105</attachid>
            <date>2020-06-17 07:19:15 -0700</date>
            <delta_ts>2020-06-18 06:24:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-fetch-itp.diff</filename>
            <type>text/plain</type>
            <size>20842</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggY2U5YjllNWZhYWMyLi42NDZjOGYxZjNjOTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzkgQEAKKzIwMjAtMDYtMTcgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2Fs
aWEuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBmZXRjaGluZyByZWdpc3RyYWJsZSBk
b21haW5zIHdpdGggcmVzb3VyY2UgbG9hZCBzdGF0aXN0aWNzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMyOTEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJzaXRlRGF0YVN0b3JlOjpmZXRjaERhdGEo
KSBkb2Vzbid0IHJldHVybiBhbnl0aGluZyBmb3IgcmVzb3VyY2UgbG9hZCBzdGF0aXN0aWNzIGJl
Y2F1c2UKKyAgICAgICAgTmV0d29ya1Byb2Nlc3M6OmZldGNoV2Vic2l0ZURhdGEoKSBkb2Vzbid0
IGhhbmRsZSBXZWJzaXRlRGF0YVR5cGU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3MuCisKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6OmFsbERvbWFpbnMgY29uc3QpOiBRdWVyeSBhbGwgcmVnaXN0cmFibGUgZG9t
YWlucyBmcm9tIGRhdGFiYXNlLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6YWxs
RG9tYWlucyBjb25zdCk6IFJldHVybiBhbGwgcmVnaXN0cmFibGUgZG9tYWlucyBpbiBtZW1vcnkg
bWFwLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01lbW9yeVN0b3JlLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmll
ci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVnaXN0cmFibGVEb21h
aW5zKTogR2V0IHRoZSBsaXN0IG9mIHJlZ2lzdHJhYmxlIGRvbWFpbnMuCisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpmZXRjaFdlYnNpdGVEYXRhKTogSGFuZGxlIFdlYnNpdGVE
YXRhVHlwZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcy4KKyAgICAgICAgKiBTaGFyZWQvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGEuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YTo6ZW5j
b2RlIGNvbnN0KTogRW5jb2RlIHJlZ2lzdHJhYmxlRG9tYWluc1dpdGhSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzLgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YTo6ZGVjb2RlKTogRGVjb2RlIHJl
Z2lzdHJhYmxlRG9tYWluc1dpdGhSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLgorICAgICAgICAqIFNo
YXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Qy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3Jl
UmVtb3ZlSVRQRGF0YUZvckRvbWFpbik6IFVzZSBXZWJzaXRlRGF0YVJlY29yZDo6YWRkUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1JlZ2lzdHJhYmxlRG9tYWluKCkKKyAgICAgICAgaW5zdGVhZCBvZiB0
aGUgZGlzcGxheSBuYW1lLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVJlY29yZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhUmVjb3JkOjphZGRS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzUmVnaXN0cmFibGVEb21haW4pOiBBZGQgdGhlIGdpdmVuIHJl
Z2lzdHJhYmxlIGRvbWFpbiB0byB0aGUgbGlzdC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFSZWNvcmQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OmZldGNoRGF0YUFuZEFwcGx5KTogSGFuZGxlIHJlZ2lzdHJhYmxlIGRvbWFpbnMgd2l0aCBy
ZXNvdXJjZSBsb2FkIHN0YXRpc3RpY3MuCisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OnJlbW92ZURhdGEpOiBVc2UgcmVzb3VyY2VMb2FkU3RhdGlzdGljc1JlZ2lzdHJhYmxlRG9t
YWlucyBpbnN0ZWFkIG9mIHRoZSBkaXNwbGF5IG5hbWUuCisKIDIwMjAtMDYtMTcgIENhcmxvcyBH
YXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdW1dQRV0g
QWRkIEFQSSB0byBjb25maWd1cmUgYW5kIGhhbmRsZSBzZXJ2aWNlIHdvcmtlciByZWdpc3RyYXRp
b25zIHRvIFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKaW5kZXggNDM0ZGM5ZmM1NjExLi4w
YmNhOWI3MmZmMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlLmNwcApAQCAtMjI2MSw2ICsyMjYxLDIwIEBAIHZvaWQgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlbW92ZURhdGFGb3JEb21haW4oY29uc3QgUmVn
aXN0cmFibGVECiAgICAgfQogfQogCitWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+IFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjphbGxEb21haW5zKCkgY29uc3QKK3sKKyAgICBB
U1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIGF1dG8gc2NvcGVkU3RhdGVtZW50ID0g
dGhpcy0+c2NvcGVkU3RhdGVtZW50KG1fZ2V0QWxsRG9tYWluc1N0YXRlbWVudCwgZ2V0QWxsRG9t
YWluc1F1ZXJ5LCAiYWxsRG9tYWlucyJfcyk7CisgICAgaWYgKCFzY29wZWRTdGF0ZW1lbnQpCisg
ICAgICAgIHJldHVybiB7IH07CisKKyAgICBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+IGRvbWFp
bnM7CisgICAgd2hpbGUgKHNjb3BlZFN0YXRlbWVudC0+c3RlcCgpID09IFNRTElURV9ST1cpCisg
ICAgICAgIGRvbWFpbnMuYXBwZW5kKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVG
cm9tUmVnaXN0cmFibGVEb21haW5TdHJpbmcoc2NvcGVkU3RhdGVtZW50LT5nZXRDb2x1bW5UZXh0
KDApKSk7CisgICAgcmV0dXJuIGRvbWFpbnM7Cit9CisKIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6OmNsZWFyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmgKaW5kZXgg
MGY5ZjBjMmUzOGVmLi41ZjQwMzhhNGZmYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oCkBAIC0xNDQsNiArMTQ0LDcgQEAgcHVibGlj
OgogICAgIGJvb2wgaXNOZXdSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VGaWxlKCkgY29u
c3QgeyByZXR1cm4gbV9pc05ld1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZUZpbGU7IH0K
ICAgICB2b2lkIHNldElzTmV3UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlRmlsZShib29s
IGlzTmV3UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlRmlsZSkgeyBtX2lzTmV3UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlRmlsZSA9IGlzTmV3UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlRmlsZTsgfQogICAgIHZvaWQgcmVtb3ZlRGF0YUZvckRvbWFpbihjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYpIG92ZXJyaWRlOworICAgIFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4g
YWxsRG9tYWlucygpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgZG9tYWluSURFeGlzdHNJbkRh
dGFiYXNlKGludCk7CiAgICAgT3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+IGNoZWNrRm9yTWlzc2lu
Z1RhYmxlc0luU2NoZW1hKCk7CiAgICAgdm9pZCBpbnNlcnRFeHBpcmVkU3RhdGlzdGljRm9yVGVz
dGluZyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIGJvb2wgaGFzVXNlckludGVyYWN0aW9uLCBi
b29sIGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWwsIGJvb2wgaXNQcmV2YWxl
bnQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01l
bW9yeVN0b3JlLmNwcAppbmRleCBjMzE1N2ExOWI4NjEuLjIyMWUzNjNhYTFlMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAKQEAgLTEw
NzAsNiArMTA3MCwxMyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6
cmVtb3ZlRGF0YUZvckRvbWFpbihjb25zdCBSZWdpc3RyYWJsZURvbQogICAgIH0KIH0KIAorVmVj
dG9yPFJlZ2lzdHJhYmxlRG9tYWluPiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6
OmFsbERvbWFpbnMoKSBjb25zdAoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwor
CisgICAgcmV0dXJuIGNvcHlUb1ZlY3RvcihtX3Jlc291cmNlU3RhdGlzdGljc01hcC5rZXlzKCkp
OworfQorCiB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6c2V0UHJldmFs
ZW50UmVzb3VyY2UoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbikKIHsKICAgICBBU1NF
UlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWVtb3J5U3RvcmUuaAppbmRleCA5ZjA5OTBhZTcyY2EuLjgxYjUzOGU0OThhOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaApAQCAt
MTEzLDYgKzExMyw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0TGFzdFNlZW4oY29uc3QgUmVn
aXN0cmFibGVEb21haW4mLCBTZWNvbmRzKSBvdmVycmlkZTsKICAgICB2b2lkIHJlbW92ZURhdGFG
b3JEb21haW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mKSBvdmVycmlkZTsKKyAgICBWZWN0b3I8
UmVnaXN0cmFibGVEb21haW4+IGFsbERvbWFpbnMoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lk
IGluc2VydEV4cGlyZWRTdGF0aXN0aWNGb3JUZXN0aW5nKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiwgYm9vbCBoYXNVc2VySW50ZXJhY3Rpb24sIGJvb2wgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29r
aWVEYXRhUmVtb3ZhbCwgYm9vbCBpc1ByZXZhbGVudCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKaW5kZXggMDFjNzY1ZmE5OWYw
Li5kNTQ5ZmMxYTM3NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmgKQEAgLTE5Miw3ICsxOTIsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldExhc3RT
ZWVuKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBwcmltYXJ5RG9tYWluLCBTZWNvbmRzKSA9IDA7
CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRGF0YUZvckRvbWFpbihjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYpID0gMDsKLSAgICAKKworICAgIHZpcnR1YWwgVmVjdG9yPFJlZ2lzdHJhYmxlRG9t
YWluPiBhbGxEb21haW5zKCkgY29uc3QgPSAwOworCiAgICAgdm9pZCBkaWRDcmVhdGVOZXR3b3Jr
UHJvY2VzcygpOwogCiAgICAgY29uc3QgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlJiBz
dG9yZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKaW5kZXggZGE2N2MwZjdlZjVkLi5mMmQyZDU3YzZl
ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9X
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3Bw
CkBAIC0xMzYxLDYgKzEzNjEsMjMgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OnJlbW92ZURhdGFGb3JEb21haW4oUmVnaXN0cmFibGVEb21haW4gZG9tYWkKICAgICB9KTsK
IH0KIAordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlZ2lzdHJhYmxlRG9t
YWlucyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4mJik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsK
KyAgICBwb3N0VGFzayhbdGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCFtX3N0YXRpc3RpY3NTdG9yZSkg
eworICAgICAgICAgICAgcG9zdFRhc2tSZXBseShbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcih7IH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKyAgICAgICAgYXV0byBkb21haW5zID0gbV9zdGF0aXN0aWNzU3RvcmUtPmFsbERv
bWFpbnMoKTsKKyAgICAgICAgcG9zdFRhc2tSZXBseShbZG9tYWlucyA9IFdURk1vdmUoZG9tYWlu
cyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0
YWJsZSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGRvbWFpbnMpKTsK
KyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpkZWxldGVBbmRSZXN0cmljdFdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5z
KE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgUmVnaXN0cmFibGVEb21haW5z
VG9EZWxldGVPclJlc3RyaWN0V2Vic2l0ZURhdGFGb3ImJiBkb21haW5zVG9EZWxldGVBbmRSZXN0
cmljdFdlYnNpdGVEYXRhRm9yLCBib29sIHNob3VsZE5vdGlmeVBhZ2UsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IDM4OTdkNTFhYTk4MS4uNjUy
MzgwMWE1YzU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5oCkBAIC0yMTksNiArMjE5LDcgQEAgc3RydWN0IFRoaXJkUGFydHlEYXRhIHsKICAgICB2b2lk
IGNsZWFyVXNlckludGVyYWN0aW9uKGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHJlbW92ZURhdGFGb3JEb21haW4oY29uc3QgUmVn
aXN0cmFibGVEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBk
ZWxldGVBbmRSZXN0cmljdFdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKE9wdGlvblNl
dDxXZWJzaXRlRGF0YVR5cGU+LCBSZWdpc3RyYWJsZURvbWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RX
ZWJzaXRlRGF0YUZvciYmLCBib29sIHNob3VsZE5vdGlmeVBhZ2UsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mKT4mJik7CisgICAgdm9pZCBy
ZWdpc3RyYWJsZURvbWFpbnMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8UmVnaXN0cmFi
bGVEb21haW4+JiYpPiYmKTsKICAgICB2b2lkIHJlZ2lzdHJhYmxlRG9tYWluc1dpdGhXZWJzaXRl
RGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgYm9vbCBzaG91bGROb3RpZnlQYWdlLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiYpPiYmKTsK
ICAgICBTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCBncmFudFN0b3JhZ2VBY2Nlc3NJblN0b3JhZ2VT
ZXNzaW9uKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBPcHRp
b25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwg
U3RvcmFnZUFjY2Vzc1Njb3BlKTsKICAgICB2b2lkIGhhc0hhZFVzZXJJbnRlcmFjdGlvbihjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRl
eCBlNjEzNWM2MmMxY2MuLmI0YTYwNTlmOGE4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTE1NzgsNiArMTU3OCwxOSBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzOjpmZXRjaFdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgT3B0aW9uU2V0PFdlYnNpdAogICAgICAgICB9CiAgICAgfQogI2VuZGlmCisKKyNpZiBFTkFC
TEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNv
bnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcykpIHsKKyAgICAg
ICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAg
ICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291
cmNlTG9hZFN0YXRpc3RpY3MoKSkgeworICAgICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRp
c3RpY3MtPnJlZ2lzdHJhYmxlRG9tYWlucyhbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tB
Z2dyZWdhdG9yLmNvcHlSZWYoKV0oVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYmIGRvbWFpbnMp
IG11dGFibGUgeworICAgICAgICAgICAgICAgICAgICB3aGlsZSAoIWRvbWFpbnMuaXNFbXB0eSgp
KQorICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX3dlYnNpdGVE
YXRhLnJlZ2lzdHJhYmxlRG9tYWluc1dpdGhSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmFkZChkb21h
aW5zLnRha2VMYXN0KCkpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgfQorI2VuZGlmCiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdl
YnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRh
VHlwZT4gd2Vic2l0ZURhdGFUeXBlcywgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwgQ2FsbGJhY2tJ
RCBjYWxsYmFja0lEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGEuY3BwCmluZGV4IGJhYjllNjc3MWU4MS4uYjZjOTE4NDA5ZjAxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEuY3BwCkBAIC0yOCw2
ICsyOCw3IEBACiAKICNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYnNp
dGVEYXRhVHlwZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0hhc2guaD4KIApAQCAtNjcsNiArNjgsOSBAQCB2b2lkIFdlYnNpdGVEYXRhOjplbmNv
ZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgaG9zdE5hbWVz
V2l0aFBsdWdpbkRhdGE7CiAjZW5kaWYKICAgICBlbmNvZGVyIDw8IGhvc3ROYW1lc1dpdGhIU1RT
Q2FjaGU7CisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICBlbmNvZGVy
IDw8IHJlZ2lzdHJhYmxlRG9tYWluc1dpdGhSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOworI2VuZGlm
CiB9CiAKIGJvb2wgV2Vic2l0ZURhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFdl
YnNpdGVEYXRhJiByZXN1bHQpCkBAIC04MSw2ICs4NSwxMCBAQCBib29sIFdlYnNpdGVEYXRhOjpk
ZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBXZWJzaXRlRGF0YSYgcmVzdWx0KQogI2VuZGlm
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuaG9zdE5hbWVzV2l0aEhTVFNDYWNoZSkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNU
SUNTKQorICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnJlZ2lzdHJhYmxlRG9tYWluc1dp
dGhSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlm
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YS5oCmluZGV4IGYxNzk0NDgzODhjMC4uODI3MDc0MTM3MGMwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhLmgKQEAgLTI1
LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJh
YmxlRG9tYWluLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KICNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CkBAIC01OSw2
ICs2MCw5IEBAIHN0cnVjdCBXZWJzaXRlRGF0YSB7CiAgICAgSGFzaFNldDxTdHJpbmc+IGhvc3RO
YW1lc1dpdGhQbHVnaW5EYXRhOwogI2VuZGlmCiAgICAgSGFzaFNldDxTdHJpbmc+IGhvc3ROYW1l
c1dpdGhIU1RTQ2FjaGU7CisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAg
ICBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiByZWdpc3RyYWJsZURvbWFpbnNX
aXRoUmVzb3VyY2VMb2FkU3RhdGlzdGljczsKKyNlbmRpZgogCiAgICAgdm9pZCBlbmNvZGUoSVBD
OjpFbmNvZGVyJikgY29uc3Q7CiAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRl
Y29kZShJUEM6OkRlY29kZXImLCBXZWJzaXRlRGF0YSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKaW5kZXggYmU1
MDMwNzk3NDAyLi41MmYxOWYwNGQwZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcApAQCAtNzIsNyArNzIsNyBA
QCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUlUUERhdGFGb3JEb21haW4oV0tXZWJzaXRl
RGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZgogewogICAgIFdlYktpdDo6V2Vic2l0ZURhdGFSZWNv
cmQgZGF0YVJlY29yZDsKICAgICBkYXRhUmVjb3JkLnR5cGVzLmFkZChXZWJLaXQ6OldlYnNpdGVE
YXRhVHlwZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcyk7Ci0gICAgZGF0YVJlY29yZC5kaXNwbGF5
TmFtZSA9IFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKTsKKyAgICBkYXRhUmVjb3JkLmFk
ZFJlc291cmNlTG9hZFN0YXRpc3RpY3NSZWdpc3RyYWJsZURvbWFpbihXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3QoV2ViS2l0Ojp0b0ltcGwoaG9zdCkt
PnN0cmluZygpKSk7CiAgICAgVmVjdG9yPFdlYktpdDo6V2Vic2l0ZURhdGFSZWNvcmQ+IGRhdGFS
ZWNvcmRzID0geyBXVEZNb3ZlKGRhdGFSZWNvcmQpIH07CiAKICAgICBPcHRpb25TZXQ8V2ViS2l0
OjpXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcyA9IFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFSZWNvcmQuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFSZWNvcmQuY3BwCmluZGV4IDUzM2RjOTljZjFh
MS4uNTA2YWI2M2ViMDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFSZWNvcmQuY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAK
ICNpbmNsdWRlIDxXZWJDb3JlL0xvY2FsaXplZFN0cmluZ3MuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1B1YmxpY1N1ZmZpeC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAKICNpZiBQTEFURk9STShDT0NP
QSkKQEAgLTExNCw2ICsxMTMsMTQgQEAgdm9pZCBXZWJzaXRlRGF0YVJlY29yZDo6YWRkQWx0ZXJu
YXRpdmVTZXJ2aWNlc0hvc3RuYW1lKGNvbnN0IFN0cmluZyYgaG9zdE5hbWUpCiAjZW5kaWYKIH0K
IAorI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCit2b2lkIFdlYnNpdGVEYXRh
UmVjb3JkOjphZGRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUmVnaXN0cmFibGVEb21haW4oY29uc3Qg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIGRvbWFpbikKK3sKKyAgICB0eXBlcy5hZGQoV2Vi
c2l0ZURhdGFUeXBlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKTsKKyAgICByZXNvdXJjZUxvYWRT
dGF0aXN0aWNzUmVnaXN0cmFibGVEb21haW5zLmFkZChkb21haW4pOworfQorI2VuZGlmCisKIHN0
YXRpYyBpbmxpbmUgYm9vbCBob3N0SXNJbkRvbWFpbihTdHJpbmdWaWV3IGhvc3QsIFN0cmluZ1Zp
ZXcgZG9tYWluKQogewogICAgIGlmICghaG9zdC5lbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKGRv
bWFpbikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVJlY29yZC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFSZWNvcmQuaAppbmRleCBlOGZkZGQ5MWY4MmEuLjRhMGZjMGM1ZDVjMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFS
ZWNvcmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVJlY29yZC5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUg
IldlYnNpdGVEYXRhVHlwZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4u
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvU2VjdXJpdHlPcmlnaW5IYXNoLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAg
LTM2LDcgKzM3LDYgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewotY2xhc3MgUmVnaXN0cmFibGVEb21haW47CiBjbGFzcyBTZWN1cml0eU9y
aWdpbjsKIH0KIApAQCAtNTUsNiArNTUsOSBAQCBzdHJ1Y3QgV2Vic2l0ZURhdGFSZWNvcmQgewog
I2VuZGlmCiAgICAgdm9pZCBhZGRIU1RTQ2FjaGVIb3N0bmFtZShjb25zdCBTdHJpbmcmIGhvc3RO
YW1lKTsKICAgICB2b2lkIGFkZEFsdGVybmF0aXZlU2VydmljZXNIb3N0bmFtZShjb25zdCBTdHJp
bmcmIGhvc3ROYW1lKTsKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAg
IHZvaWQgYWRkUmVzb3VyY2VMb2FkU3RhdGlzdGljc1JlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJik7CisjZW5kaWYKIAogICAgIFN0cmluZyBkaXNwbGF5
TmFtZTsKICAgICBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB0eXBlczsKQEAgLTcyLDYgKzc1
LDkgQEAgc3RydWN0IFdlYnNpdGVEYXRhUmVjb3JkIHsKICNlbmRpZgogICAgIEhhc2hTZXQ8U3Ry
aW5nPiBIU1RTQ2FjaGVIb3N0TmFtZXM7CiAgICAgSGFzaFNldDxTdHJpbmc+IGFsdGVybmF0aXZl
U2VydmljZXNIb3N0TmFtZXM7CisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykK
KyAgICBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzUmVnaXN0cmFibGVEb21haW5zOworI2VuZGlmCiAKICAgICBib29sIG1hdGNoZXMoY29u
c3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mKSBjb25zdDsKICAgICBTdHJpbmcgdG9wUHJp
dmF0ZWx5Q29udHJvbGxlZERvbWFpbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCA1MmM5Zjk0MDJj
M2EuLjQ3NDRmNGYxZGM5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTM2Niw2ICszNjYsMjAgQEAg
dm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpmZXRjaERhdGFBbmRBcHBseShPcHRpb25TZXQ8V2Vic2l0
ZURhdGFUeXBlPiBkYXRhVHlwZXMsIE8KICAgICAgICAgICAgICAgICByZWNvcmQuYWRkSFNUU0Nh
Y2hlSG9zdG5hbWUoaG9zdE5hbWUpOwogICAgICAgICAgICAgfQogCisjaWYgRU5BQkxFKFJFU09V
UkNFX0xPQURfU1RBVElTVElDUykKKyAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgZG9tYWlu
IDogd2Vic2l0ZURhdGEucmVnaXN0cmFibGVEb21haW5zV2l0aFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MpIHsKKyAgICAgICAgICAgICAgICBhdXRvIGRpc3BsYXlOYW1lID0gV2Vic2l0ZURhdGFSZWNv
cmQ6OmRpc3BsYXlOYW1lRm9ySG9zdE5hbWUoZG9tYWluLnN0cmluZygpKTsKKyAgICAgICAgICAg
ICAgICBpZiAoIWRpc3BsYXlOYW1lKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKwor
ICAgICAgICAgICAgICAgIGF1dG8mIHJlY29yZCA9IG1fd2Vic2l0ZURhdGFSZWNvcmRzLmFkZChk
aXNwbGF5TmFtZSwgV2Vic2l0ZURhdGFSZWNvcmQgeyB9KS5pdGVyYXRvci0+dmFsdWU7CisgICAg
ICAgICAgICAgICAgaWYgKCFyZWNvcmQuZGlzcGxheU5hbWUpCisgICAgICAgICAgICAgICAgICAg
IHJlY29yZC5kaXNwbGF5TmFtZSA9IFdURk1vdmUoZGlzcGxheU5hbWUpOworCisgICAgICAgICAg
ICAgICAgcmVjb3JkLmFkZFJlc291cmNlTG9hZFN0YXRpc3RpY3NSZWdpc3RyYWJsZURvbWFpbihk
b21haW4pOworICAgICAgICAgICAgfQorI2VuZGlmCisKICAgICAgICAgICAgIGNhbGxJZk5lZWRl
ZCgpOwogICAgICAgICB9CiAKQEAgLTk5Niw3ICsxMDEwLDggQEAgdm9pZCBXZWJzaXRlRGF0YVN0
b3JlOjpyZW1vdmVEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgY29u
c3QgVmUKICAgICAgICAgICAgICAgICAgICAgY29va2llSG9zdE5hbWVzLmFwcGVuZChob3N0TmFt
ZSk7CiAgICAgICAgICAgICAgICAgZm9yIChhdXRvJiBob3N0TmFtZSA6IGRhdGFSZWNvcmQuSFNU
U0NhY2hlSG9zdE5hbWVzKQogICAgICAgICAgICAgICAgICAgICBIU1RTQ2FjaGVIb3N0TmFtZXMu
YXBwZW5kKGhvc3ROYW1lKTsKLSAgICAgICAgICAgICAgICByZWdpc3RyYWJsZURvbWFpbnMuYXBw
ZW5kKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tSG9zdChk
YXRhUmVjb3JkLmRpc3BsYXlOYW1lKSk7CisgICAgICAgICAgICAgICAgZm9yIChhdXRvJiByZWdp
c3RyYWJsZURvbWFpbiA6IGRhdGFSZWNvcmQucmVzb3VyY2VMb2FkU3RhdGlzdGljc1JlZ2lzdHJh
YmxlRG9tYWlucykKKyAgICAgICAgICAgICAgICAgICAgcmVnaXN0cmFibGVEb21haW5zLmFwcGVu
ZChyZWdpc3RyYWJsZURvbWFpbik7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGNhbGxi
YWNrQWdncmVnYXRvci0+YWRkUGVuZGluZ0NhbGxiYWNrKCk7CmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMDVkOWQ5MzVlYzQ2Li5jY2E3NDdjYWVh
MjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNSBAQAorMjAyMC0wNi0xNyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lh
QGlnYWxpYS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGZldGNoaW5nIHJlZ2lzdHJh
YmxlIGRvbWFpbnMgd2l0aCByZXNvdXJjZSBsb2FkIHN0YXRpc3RpY3MKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzI5MQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBHTGliIElUUCB1bml0IHRl
c3QgdG8gY2hlY2sgYWxzbyBmZXRjaCBhbmQgcmVtb3ZlLgorCisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJzaXRlRGF0YS5jcHA6CisgICAgICAgICh0ZXN0
V2Vic2l0ZURhdGFJVFApOgorCiAyMDIwLTA2LTE3ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNn
YXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXVtXUEVdIEFkZCBBUEkgdG8gY29uZmln
dXJlIGFuZCBoYW5kbGUgc2VydmljZSB3b3JrZXIgcmVnaXN0cmF0aW9ucyB0byBXZWJLaXRXZWJz
aXRlRGF0YU1hbmFnZXIKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0R0xpYi9UZXN0V2Vic2l0ZURhdGEuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRHTGliL1Rlc3RXZWJzaXRlRGF0YS5jcHAKaW5kZXggNmI3YmNkOWRiYzczLi5lOWJjYzM1
OGUzMDAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9U
ZXN0V2Vic2l0ZURhdGEuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
R0xpYi9UZXN0V2Vic2l0ZURhdGEuY3BwCkBAIC02ODIsMTAgKzY4MiwyNCBAQCBzdGF0aWMgdm9p
ZCB0ZXN0V2Vic2l0ZURhdGFJVFAoV2Vic2l0ZURhdGFUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVy
KQogICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwogCiAgICAgdGVzdC0+d2FpdFVu
dGlsRmlsZUNoYW5nZWQoaXRwTG9nRmlsZS5nZXQoKSwgR19GSUxFX01PTklUT1JfRVZFTlRfQ1JF
QVRFRCk7Ci0KICAgICBnX2Fzc2VydF90cnVlKGdfZmlsZV90ZXN0KGl0cERpcmVjdG9yeSwgR19G
SUxFX1RFU1RfSVNfRElSKSk7CiAgICAgZ19hc3NlcnRfdHJ1ZShnX2ZpbGVfdGVzdChpdHBMb2dG
aWxlLmdldCgpLCBHX0ZJTEVfVEVTVF9JU19SRUdVTEFSKSk7CiAKKyAgICBHTGlzdCogZGF0YUxp
c3QgPSB0ZXN0LT5mZXRjaChXRUJLSVRfV0VCU0lURV9EQVRBX0lUUCk7CisgICAgZ19hc3NlcnRf
bm9ubnVsbChkYXRhTGlzdCk7CisgICAgZ19hc3NlcnRfY21wdWludChnX2xpc3RfbGVuZ3RoKGRh
dGFMaXN0KSwgPT0sIDEpOworICAgIGF1dG8qIGRhdGEgPSBzdGF0aWNfY2FzdDxXZWJLaXRXZWJz
aXRlRGF0YSo+KGRhdGFMaXN0LT5kYXRhKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGRhdGEpOwor
ICAgIFdlYktpdFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4gPSB3ZWJraXRfc2VjdXJpdHlfb3JpZ2lu
X25ld19mb3JfdXJpKGtTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi8iKS5kYXRhKCkpOworICAgIGdf
YXNzZXJ0X2NtcHN0cih3ZWJraXRfd2Vic2l0ZV9kYXRhX2dldF9uYW1lKGRhdGEpLCA9PSwgd2Vi
a2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfaG9zdChvcmlnaW4pKTsKKyAgICB3ZWJraXRfc2VjdXJp
dHlfb3JpZ2luX3VucmVmKG9yaWdpbik7CisKKyAgICAvLyBSZW1vdmUgdGhlIHJlZ2lzdHJhdGlv
bi4KKyAgICBHTGlzdCByZW1vdmVMaXN0ID0geyBkYXRhLCBudWxscHRyLCBudWxscHRyIH07Cisg
ICAgdGVzdC0+cmVtb3ZlKFdFQktJVF9XRUJTSVRFX0RBVEFfSVRQLCAmcmVtb3ZlTGlzdCk7Cisg
ICAgZGF0YUxpc3QgPSB0ZXN0LT5mZXRjaChXRUJLSVRfV0VCU0lURV9EQVRBX0lUUCk7CisgICAg
Z19hc3NlcnRfbnVsbChkYXRhTGlzdCk7CisKICAgICAvLyBDbGVhciBhbGwuCiAgICAgc3RhdGlj
IGNvbnN0IFdlYktpdFdlYnNpdGVEYXRhVHlwZXMgY2FjaGVBbmRJVFAgPSBzdGF0aWNfY2FzdDxX
ZWJLaXRXZWJzaXRlRGF0YVR5cGVzPihXRUJLSVRfV0VCU0lURV9EQVRBX0lUUCB8IFdFQktJVF9X
RUJTSVRFX0RBVEFfTUVNT1JZX0NBQ0hFIHwgV0VCS0lUX1dFQlNJVEVfREFUQV9ESVNLX0NBQ0hF
KTsKICAgICB0ZXN0LT5jbGVhcihjYWNoZUFuZElUUCwgMCk7Cg==
</data>
<flag name="review"
          id="417534"
          type_id="1"
          status="+"
          setter="aperez"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>402202</attachid>
            <date>2020-06-18 06:24:25 -0700</date>
            <delta_ts>2020-06-18 07:28:53 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>wk2-fetch-itp-data.diff</filename>
            <type>text/plain</type>
            <size>20703</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggY2U5YjllNWZhYWMyLi4wZDk1ZjRmMjdhZjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzkgQEAKKzIwMjAtMDYtMTcgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2Fs
aWEuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBmZXRjaGluZyByZWdpc3RyYWJsZSBk
b21haW5zIHdpdGggcmVzb3VyY2UgbG9hZCBzdGF0aXN0aWNzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMyOTEKKworICAgICAgICBSZXZpZXdlZCBi
eSBBZHJpYW4gUGVyZXogZGUgQ2FzdHJvIGFuZCBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgIFdl
YnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0YSgpIGRvZXNuJ3QgcmV0dXJuIGFueXRoaW5nIGZvciBy
ZXNvdXJjZSBsb2FkIHN0YXRpc3RpY3MgYmVjYXVzZQorICAgICAgICBOZXR3b3JrUHJvY2Vzczo6
ZmV0Y2hXZWJzaXRlRGF0YSgpIGRvZXNuJ3QgaGFuZGxlIFdlYnNpdGVEYXRhVHlwZTo6UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0
OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6YWxsRG9tYWlucyBjb25zdCk6
IFF1ZXJ5IGFsbCByZWdpc3RyYWJsZSBkb21haW5zIGZyb20gZGF0YWJhc2UuCisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01lbW9yeVN0b3JlOjphbGxEb21haW5zIGNvbnN0KTogUmV0dXJuIGFsbCByZWdp
c3RyYWJsZSBkb21haW5zIGluIG1lbW9yeSBtYXAuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5o
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjpyZWdpc3RyYWJsZURvbWFpbnMpOiBHZXQgdGhlIGxpc3Qgb2YgcmVnaXN0cmFi
bGUgZG9tYWlucy4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmZldGNoV2Vi
c2l0ZURhdGEpOiBIYW5kbGUgV2Vic2l0ZURhdGFUeXBlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
LgorICAgICAgICAqIFNoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYnNpdGVEYXRhOjplbmNvZGUgY29uc3QpOiBFbmNvZGUgcmVnaXN0cmFibGVE
b21haW5zV2l0aFJlc291cmNlTG9hZFN0YXRpc3RpY3MuCisgICAgICAgIChXZWJLaXQ6OldlYnNp
dGVEYXRhOjpkZWNvZGUpOiBEZWNvZGUgcmVnaXN0cmFibGVEb21haW5zV2l0aFJlc291cmNlTG9h
ZFN0YXRpc3RpY3MuCisgICAgICAgICogU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhLmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHA6Cisg
ICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVJVFBEYXRhRm9yRG9tYWluKTogVXNlIFdl
YnNpdGVEYXRhUmVjb3JkOjphZGRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUmVnaXN0cmFibGVEb21h
aW4oKQorICAgICAgICBpbnN0ZWFkIG9mIHRoZSBkaXNwbGF5IG5hbWUuCisgICAgICAgICogVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhUmVjb3JkLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2Vic2l0ZURhdGFSZWNvcmQ6OmFkZFJlc291cmNlTG9hZFN0YXRpc3RpY3NSZWdpc3RyYWJs
ZURvbWFpbik6IEFkZCB0aGUgZ2l2ZW4gcmVnaXN0cmFibGUgZG9tYWluIHRvIHRoZSBsaXN0Lgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhQW5kQXBwbHkpOiBIYW5kbGUg
cmVnaXN0cmFibGUgZG9tYWlucyB3aXRoIHJlc291cmNlIGxvYWQgc3RhdGlzdGljcy4KKyAgICAg
ICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cmVtb3ZlRGF0YSk6IFVzZSByZXNvdXJjZUxv
YWRTdGF0aXN0aWNzUmVnaXN0cmFibGVEb21haW5zIGluc3RlYWQgb2YgdGhlIGRpc3BsYXkgbmFt
ZS4KKwogMjAyMC0wNi0xNyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5j
b20+CiAKICAgICAgICAgW0dUS11bV1BFXSBBZGQgQVBJIHRvIGNvbmZpZ3VyZSBhbmQgaGFuZGxl
IHNlcnZpY2Ugd29ya2VyIHJlZ2lzdHJhdGlvbnMgdG8gV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2Vy
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
LmNwcAppbmRleCA0MzRkYzlmYzU2MTEuLjBiY2E5YjcyZmYyNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCkBAIC0yMjYxLDYg
KzIyNjEsMjAgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVt
b3ZlRGF0YUZvckRvbWFpbihjb25zdCBSZWdpc3RyYWJsZUQKICAgICB9CiB9CiAKK1ZlY3RvcjxS
ZWdpc3RyYWJsZURvbWFpbj4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmFs
bERvbWFpbnMoKSBjb25zdAoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworCisg
ICAgYXV0byBzY29wZWRTdGF0ZW1lbnQgPSB0aGlzLT5zY29wZWRTdGF0ZW1lbnQobV9nZXRBbGxE
b21haW5zU3RhdGVtZW50LCBnZXRBbGxEb21haW5zUXVlcnksICJhbGxEb21haW5zIl9zKTsKKyAg
ICBpZiAoIXNjb3BlZFN0YXRlbWVudCkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIFZlY3Rv
cjxSZWdpc3RyYWJsZURvbWFpbj4gZG9tYWluczsKKyAgICB3aGlsZSAoc2NvcGVkU3RhdGVtZW50
LT5zdGVwKCkgPT0gU1FMSVRFX1JPVykKKyAgICAgICAgZG9tYWlucy5hcHBlbmQoUmVnaXN0cmFi
bGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmluZyhzY29w
ZWRTdGF0ZW1lbnQtPmdldENvbHVtblRleHQoMCkpKTsKKyAgICByZXR1cm4gZG9tYWluczsKK30K
Kwogdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXIoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVCgh
UnVuTG9vcDo6aXNNYWluKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmUuaAppbmRleCAwZjlmMGMyZTM4ZWYuLjExNjBhYWUzYjkzYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmgK
QEAgLTE0NCw2ICsxNDQsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc05ld1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZUZpbGUoKSBjb25zdCB7IHJldHVybiBtX2lzTmV3UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlRmlsZTsgfQogICAgIHZvaWQgc2V0SXNOZXdSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VGaWxlKGJvb2wgaXNOZXdSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VGaWxlKSB7IG1faXNOZXdSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VGaWxlID0g
aXNOZXdSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VGaWxlOyB9CiAgICAgdm9pZCByZW1v
dmVEYXRhRm9yRG9tYWluKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJikgb3ZlcnJpZGU7CisgICAg
VmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiBhbGxEb21haW5zKCkgY29uc3QgZmluYWw7CiAgICAg
Ym9vbCBkb21haW5JREV4aXN0c0luRGF0YWJhc2UoaW50KTsKICAgICBPcHRpb25hbDxWZWN0b3I8
U3RyaW5nPj4gY2hlY2tGb3JNaXNzaW5nVGFibGVzSW5TY2hlbWEoKTsKICAgICB2b2lkIGluc2Vy
dEV4cGlyZWRTdGF0aXN0aWNGb3JUZXN0aW5nKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgYm9v
bCBoYXNVc2VySW50ZXJhY3Rpb24sIGJvb2wgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRh
UmVtb3ZhbCwgYm9vbCBpc1ByZXZhbGVudCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01l
bW9yeVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwCmluZGV4IGMzMTU3YTE5Yjg2MS4u
MjIxZTM2M2FhMWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01lbW9yeVN0b3JlLmNwcApAQCAtMTA3MCw2ICsxMDcwLDEzIEBAIHZvaWQgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01lbW9yeVN0b3JlOjpyZW1vdmVEYXRhRm9yRG9tYWluKGNvbnN0IFJlZ2lzdHJh
YmxlRG9tCiAgICAgfQogfQogCitWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+IFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6YWxsRG9tYWlucygpIGNvbnN0Cit7CisgICAgQVNTRVJU
KCFSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICByZXR1cm4gY29weVRvVmVjdG9yKG1fcmVzb3Vy
Y2VTdGF0aXN0aWNzTWFwLmtleXMoKSk7Cit9CisKIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01lbW9yeVN0b3JlOjpzZXRQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgZG9tYWluKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NNZW1vcnlTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oCmluZGV4IDlmMDk5MGFl
NzJjYS4uMWNlYTBiZTJhODBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NNZW1vcnlTdG9yZS5oCkBAIC0xMTMsNiArMTEzLDcgQEAgcHVibGljOgogCiAgICAgdm9p
ZCBzZXRMYXN0U2Vlbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIFNlY29uZHMpIG92ZXJyaWRl
OwogICAgIHZvaWQgcmVtb3ZlRGF0YUZvckRvbWFpbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYp
IG92ZXJyaWRlOworICAgIFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4gYWxsRG9tYWlucygpIGNv
bnN0IGZpbmFsOwogICAgIHZvaWQgaW5zZXJ0RXhwaXJlZFN0YXRpc3RpY0ZvclRlc3RpbmcoY29u
c3QgUmVnaXN0cmFibGVEb21haW4mLCBib29sIGhhc1VzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc1Nj
aGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsLCBib29sIGlzUHJldmFsZW50KSBvdmVy
cmlkZTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUu
aAppbmRleCAwMWM3NjVmYTk5ZjAuLmQ1NDlmYzFhMzc1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuaApAQCAtMTkyLDcgKzE5Miw5IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgc2V0TGFzdFNlZW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHByaW1hcnlE
b21haW4sIFNlY29uZHMpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVEYXRhRm9yRG9t
YWluKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJikgPSAwOwotICAgIAorCisgICAgdmlydHVhbCBW
ZWN0b3I8UmVnaXN0cmFibGVEb21haW4+IGFsbERvbWFpbnMoKSBjb25zdCA9IDA7CisKICAgICB2
b2lkIGRpZENyZWF0ZU5ldHdvcmtQcm9jZXNzKCk7CiAKICAgICBjb25zdCBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUmIHN0b3JlKCkgY29uc3QgeyByZXR1cm4gbV9zdG9yZTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCBkYTY3
YzBmN2VmNWQuLmIyMTY5MWVmNTU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5jcHAKQEAgLTEzNjEsNiArMTM2MSwxNyBAQCB2b2lkIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVtb3ZlRGF0YUZvckRvbWFpbihSZWdpc3RyYWJsZURv
bWFpbiBkb21haQogICAgIH0pOwogfQogCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6cmVnaXN0cmFibGVEb21haW5zKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFJl
Z2lzdHJhYmxlRG9tYWluPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBBU1NFUlQo
UnVuTG9vcDo6aXNNYWluKCkpOworICAgIHBvc3RUYXNrKFt0aGlzLCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICBhdXRv
IGRvbWFpbnMgPSBtX3N0YXRpc3RpY3NTdG9yZSA/IG1fc3RhdGlzdGljc1N0b3JlLT5hbGxEb21h
aW5zKCkgOiBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+KCk7CisgICAgICAgIHBvc3RUYXNrUmVw
bHkoW2RvbWFpbnMgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShkb21haW5zKSksIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGRvbWFpbnMpKTsKKyAgICAgICAgfSk7
CisgICAgfSk7Cit9CisKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpkZWxl
dGVBbmRSZXN0cmljdFdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKE9wdGlvblNldDxX
ZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgUmVnaXN0cmFibGVEb21haW5zVG9EZWxldGVPclJl
c3RyaWN0V2Vic2l0ZURhdGFGb3ImJiBkb21haW5zVG9EZWxldGVBbmRSZXN0cmljdFdlYnNpdGVE
YXRhRm9yLCBib29sIHNob3VsZE5vdGlmeVBhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
ICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IDM4OTdkNTFhYTk4MS4uNjUyMzgwMWE1YzU4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCkBAIC0yMTks
NiArMjE5LDcgQEAgc3RydWN0IFRoaXJkUGFydHlEYXRhIHsKICAgICB2b2lkIGNsZWFyVXNlcklu
dGVyYWN0aW9uKGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKICAgICB2b2lkIHJlbW92ZURhdGFGb3JEb21haW4oY29uc3QgUmVnaXN0cmFibGVEb21h
aW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBkZWxldGVBbmRSZXN0
cmljdFdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKE9wdGlvblNldDxXZWJzaXRlRGF0
YVR5cGU+LCBSZWdpc3RyYWJsZURvbWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZv
ciYmLCBib29sIHNob3VsZE5vdGlmeVBhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
SGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mKT4mJik7CisgICAgdm9pZCByZWdpc3RyYWJsZURv
bWFpbnMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+JiYp
PiYmKTsKICAgICB2b2lkIHJlZ2lzdHJhYmxlRG9tYWluc1dpdGhXZWJzaXRlRGF0YShPcHRpb25T
ZXQ8V2Vic2l0ZURhdGFUeXBlPiwgYm9vbCBzaG91bGROb3RpZnlQYWdlLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiYpPiYmKTsKICAgICBTdG9yYWdl
QWNjZXNzV2FzR3JhbnRlZCBncmFudFN0b3JhZ2VBY2Nlc3NJblN0b3JhZ2VTZXNzaW9uKGNvbnN0
IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBPcHRpb25hbDxXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXI+LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgU3RvcmFnZUFjY2Vz
c1Njb3BlKTsKICAgICB2b2lkIGhhc0hhZFVzZXJJbnRlcmFjdGlvbihjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCBlNjEzNWM2MmMx
Y2MuLmI1OThlOTVlMmQ0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTE1NzgsNiArMTU3OCwxOSBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpmZXRjaFdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0
PFdlYnNpdAogICAgICAgICB9CiAgICAgfQogI2VuZGlmCisKKyNpZiBFTkFCTEUoUkVTT1VSQ0Vf
TE9BRF9TVEFUSVNUSUNTKQorICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNp
dGVEYXRhVHlwZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcykpIHsKKyAgICAgICAgaWYgKGF1dG8q
IHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgICAgICBpZiAo
YXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRp
c3RpY3MoKSkgeworICAgICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnJlZ2lz
dHJhYmxlRG9tYWlucyhbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNv
cHlSZWYoKV0oYXV0byYmIGRvbWFpbnMpIG11dGFibGUgeworICAgICAgICAgICAgICAgICAgICB3
aGlsZSAoIWRvbWFpbnMuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJh
Y2tBZ2dyZWdhdG9yLT5tX3dlYnNpdGVEYXRhLnJlZ2lzdHJhYmxlRG9tYWluc1dpdGhSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzLmFkZChkb21haW5zLnRha2VMYXN0KCkpOworICAgICAgICAgICAgICAg
IH0pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorI2VuZGlmCiB9CiAKIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBlcywgV2FsbFRpbWUg
bW9kaWZpZWRTaW5jZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEuY3BwIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEuY3BwCmluZGV4IGJhYjllNjc3MWU4MS4u
YjZjOTE4NDA5ZjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGEuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJBcmd1bWVudENv
ZGVycy5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhVHlwZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUv
UmVnaXN0cmFibGVEb21haW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0
YS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIApAQCAtNjcsNiArNjgsOSBA
QCB2b2lkIFdlYnNpdGVEYXRhOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAog
ICAgIGVuY29kZXIgPDwgaG9zdE5hbWVzV2l0aFBsdWdpbkRhdGE7CiAjZW5kaWYKICAgICBlbmNv
ZGVyIDw8IGhvc3ROYW1lc1dpdGhIU1RTQ2FjaGU7CisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURf
U1RBVElTVElDUykKKyAgICBlbmNvZGVyIDw8IHJlZ2lzdHJhYmxlRG9tYWluc1dpdGhSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzOworI2VuZGlmCiB9CiAKIGJvb2wgV2Vic2l0ZURhdGE6OmRlY29kZShJ
UEM6OkRlY29kZXImIGRlY29kZXIsIFdlYnNpdGVEYXRhJiByZXN1bHQpCkBAIC04MSw2ICs4NSwx
MCBAQCBib29sIFdlYnNpdGVEYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBXZWJz
aXRlRGF0YSYgcmVzdWx0KQogI2VuZGlmCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQu
aG9zdE5hbWVzV2l0aEhTVFNDYWNoZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyNpZiBFTkFC
TEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVz
dWx0LnJlZ2lzdHJhYmxlRG9tYWluc1dpdGhSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhLmggYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YS5oCmluZGV4IGYxNzk0NDgz
ODhjMC4uODI3MDc0MTM3MGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNp
bmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9T
ZWN1cml0eU9yaWdpbkRhdGEuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUg
PHd0Zi9IYXNoU2V0Lmg+CkBAIC01OSw2ICs2MCw5IEBAIHN0cnVjdCBXZWJzaXRlRGF0YSB7CiAg
ICAgSGFzaFNldDxTdHJpbmc+IGhvc3ROYW1lc1dpdGhQbHVnaW5EYXRhOwogI2VuZGlmCiAgICAg
SGFzaFNldDxTdHJpbmc+IGhvc3ROYW1lc1dpdGhIU1RTQ2FjaGU7CisjaWYgRU5BQkxFKFJFU09V
UkNFX0xPQURfU1RBVElTVElDUykKKyAgICBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluPiByZWdpc3RyYWJsZURvbWFpbnNXaXRoUmVzb3VyY2VMb2FkU3RhdGlzdGljczsKKyNlbmRp
ZgogCiAgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7CiAgICAgc3RhdGljIFdB
Uk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShJUEM6OkRlY29kZXImLCBXZWJzaXRlRGF0YSYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0
YVN0b3JlUmVmLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURh
dGFTdG9yZVJlZi5jcHAKaW5kZXggYmU1MDMwNzk3NDAyLi41MmYxOWYwNGQwZDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmLmNwcApAQCAtNzIsNyArNzIsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUlU
UERhdGFGb3JEb21haW4oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZgogewogICAg
IFdlYktpdDo6V2Vic2l0ZURhdGFSZWNvcmQgZGF0YVJlY29yZDsKICAgICBkYXRhUmVjb3JkLnR5
cGVzLmFkZChXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcyk7
Ci0gICAgZGF0YVJlY29yZC5kaXNwbGF5TmFtZSA9IFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJp
bmcoKTsKKyAgICBkYXRhUmVjb3JkLmFkZFJlc291cmNlTG9hZFN0YXRpc3RpY3NSZWdpc3RyYWJs
ZURvbWFpbihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbUhv
c3QoV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSk7CiAgICAgVmVjdG9yPFdlYktpdDo6
V2Vic2l0ZURhdGFSZWNvcmQ+IGRhdGFSZWNvcmRzID0geyBXVEZNb3ZlKGRhdGFSZWNvcmQpIH07
CiAKICAgICBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcyA9IFdl
YktpdDo6V2Vic2l0ZURhdGFUeXBlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFSZWNvcmQu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFSZWNv
cmQuY3BwCmluZGV4IDUzM2RjOTljZjFhMS4uNTA2YWI2M2ViMDJlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFSZWNvcmQu
Y3BwCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpbmNsdWRlIDxXZWJDb3JlL0xvY2FsaXplZFN0cmlu
Z3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1B1YmxpY1N1ZmZpeC5oPgotI2luY2x1ZGUgPFdlYkNv
cmUvUmVnaXN0cmFibGVEb21haW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2lu
Lmg+CiAKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTExNCw2ICsxMTMsMTQgQEAgdm9pZCBXZWJz
aXRlRGF0YVJlY29yZDo6YWRkQWx0ZXJuYXRpdmVTZXJ2aWNlc0hvc3RuYW1lKGNvbnN0IFN0cmlu
ZyYgaG9zdE5hbWUpCiAjZW5kaWYKIH0KIAorI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJ
U1RJQ1MpCit2b2lkIFdlYnNpdGVEYXRhUmVjb3JkOjphZGRSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
UmVnaXN0cmFibGVEb21haW4oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIGRvbWFp
bikKK3sKKyAgICB0eXBlcy5hZGQoV2Vic2l0ZURhdGFUeXBlOjpSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzKTsKKyAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzUmVnaXN0cmFibGVEb21haW5zLmFkZChk
b21haW4pOworfQorI2VuZGlmCisKIHN0YXRpYyBpbmxpbmUgYm9vbCBob3N0SXNJbkRvbWFpbihT
dHJpbmdWaWV3IGhvc3QsIFN0cmluZ1ZpZXcgZG9tYWluKQogewogICAgIGlmICghaG9zdC5lbmRz
V2l0aElnbm9yaW5nQVNDSUlDYXNlKGRvbWFpbikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFSZWNvcmQuaAppbmRleCBlOGZkZGQ5
MWY4MmEuLjRhMGZjMGM1ZDVjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFSZWNvcmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5oCkBAIC0yNiw2ICsyNiw3IEBACiAj
cHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIldlYnNpdGVEYXRhVHlwZS5oIgorI2luY2x1ZGUgPFdl
YkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3Jp
Z2luRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5IYXNoLmg+CiAjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTM2LDcgKzM3LDYgQEAKICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgUmVnaXN0cmFibGVE
b21haW47CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIH0KIApAQCAtNTUsNiArNTUsOSBAQCBzdHJ1
Y3QgV2Vic2l0ZURhdGFSZWNvcmQgewogI2VuZGlmCiAgICAgdm9pZCBhZGRIU1RTQ2FjaGVIb3N0
bmFtZShjb25zdCBTdHJpbmcmIGhvc3ROYW1lKTsKICAgICB2b2lkIGFkZEFsdGVybmF0aXZlU2Vy
dmljZXNIb3N0bmFtZShjb25zdCBTdHJpbmcmIGhvc3ROYW1lKTsKKyNpZiBFTkFCTEUoUkVTT1VS
Q0VfTE9BRF9TVEFUSVNUSUNTKQorICAgIHZvaWQgYWRkUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Jl
Z2lzdHJhYmxlRG9tYWluKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJik7CisjZW5k
aWYKIAogICAgIFN0cmluZyBkaXNwbGF5TmFtZTsKICAgICBPcHRpb25TZXQ8V2Vic2l0ZURhdGFU
eXBlPiB0eXBlczsKQEAgLTcyLDYgKzc1LDkgQEAgc3RydWN0IFdlYnNpdGVEYXRhUmVjb3JkIHsK
ICNlbmRpZgogICAgIEhhc2hTZXQ8U3RyaW5nPiBIU1RTQ2FjaGVIb3N0TmFtZXM7CiAgICAgSGFz
aFNldDxTdHJpbmc+IGFsdGVybmF0aXZlU2VydmljZXNIb3N0TmFtZXM7CisjaWYgRU5BQkxFKFJF
U09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluPiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzUmVnaXN0cmFibGVEb21haW5zOworI2VuZGlm
CiAKICAgICBib29sIG1hdGNoZXMoY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mKSBj
b25zdDsKICAgICBTdHJpbmcgdG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbigpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlLmNwcAppbmRleCA1MmM5Zjk0MDJjM2EuLjQ3NDRmNGYxZGM5ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5j
cHAKQEAgLTM2Niw2ICszNjYsMjAgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpmZXRjaERhdGFB
bmRBcHBseShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIE8KICAgICAgICAg
ICAgICAgICByZWNvcmQuYWRkSFNUU0NhY2hlSG9zdG5hbWUoaG9zdE5hbWUpOwogICAgICAgICAg
ICAgfQogCisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICAgICAgICAg
IGZvciAoY29uc3QgYXV0byYgZG9tYWluIDogd2Vic2l0ZURhdGEucmVnaXN0cmFibGVEb21haW5z
V2l0aFJlc291cmNlTG9hZFN0YXRpc3RpY3MpIHsKKyAgICAgICAgICAgICAgICBhdXRvIGRpc3Bs
YXlOYW1lID0gV2Vic2l0ZURhdGFSZWNvcmQ6OmRpc3BsYXlOYW1lRm9ySG9zdE5hbWUoZG9tYWlu
LnN0cmluZygpKTsKKyAgICAgICAgICAgICAgICBpZiAoIWRpc3BsYXlOYW1lKQorICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgICAgIGF1dG8mIHJlY29yZCA9IG1f
d2Vic2l0ZURhdGFSZWNvcmRzLmFkZChkaXNwbGF5TmFtZSwgV2Vic2l0ZURhdGFSZWNvcmQgeyB9
KS5pdGVyYXRvci0+dmFsdWU7CisgICAgICAgICAgICAgICAgaWYgKCFyZWNvcmQuZGlzcGxheU5h
bWUpCisgICAgICAgICAgICAgICAgICAgIHJlY29yZC5kaXNwbGF5TmFtZSA9IFdURk1vdmUoZGlz
cGxheU5hbWUpOworCisgICAgICAgICAgICAgICAgcmVjb3JkLmFkZFJlc291cmNlTG9hZFN0YXRp
c3RpY3NSZWdpc3RyYWJsZURvbWFpbihkb21haW4pOworICAgICAgICAgICAgfQorI2VuZGlmCisK
ICAgICAgICAgICAgIGNhbGxJZk5lZWRlZCgpOwogICAgICAgICB9CiAKQEAgLTk5Niw3ICsxMDEw
LDggQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVEYXRhKE9wdGlvblNldDxXZWJzaXRl
RGF0YVR5cGU+IGRhdGFUeXBlcywgY29uc3QgVmUKICAgICAgICAgICAgICAgICAgICAgY29va2ll
SG9zdE5hbWVzLmFwcGVuZChob3N0TmFtZSk7CiAgICAgICAgICAgICAgICAgZm9yIChhdXRvJiBo
b3N0TmFtZSA6IGRhdGFSZWNvcmQuSFNUU0NhY2hlSG9zdE5hbWVzKQogICAgICAgICAgICAgICAg
ICAgICBIU1RTQ2FjaGVIb3N0TmFtZXMuYXBwZW5kKGhvc3ROYW1lKTsKLSAgICAgICAgICAgICAg
ICByZWdpc3RyYWJsZURvbWFpbnMuYXBwZW5kKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOjp1
bmNoZWNrZWRDcmVhdGVGcm9tSG9zdChkYXRhUmVjb3JkLmRpc3BsYXlOYW1lKSk7CisgICAgICAg
ICAgICAgICAgZm9yIChhdXRvJiByZWdpc3RyYWJsZURvbWFpbiA6IGRhdGFSZWNvcmQucmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1JlZ2lzdHJhYmxlRG9tYWlucykKKyAgICAgICAgICAgICAgICAgICAg
cmVnaXN0cmFibGVEb21haW5zLmFwcGVuZChyZWdpc3RyYWJsZURvbWFpbik7CiAgICAgICAgICAg
ICB9CiAKICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+YWRkUGVuZGluZ0NhbGxiYWNr
KCk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXgg
MDVkOWQ5MzVlYzQ2Li5iNDI3NTMzY2FjYWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMC0wNi0xNyAgQ2FybG9z
IEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBv
cnQgZm9yIGZldGNoaW5nIHJlZ2lzdHJhYmxlIGRvbWFpbnMgd2l0aCByZXNvdXJjZSBsb2FkIHN0
YXRpc3RpY3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxMzI5MQorCisgICAgICAgIFJldmlld2VkIGJ5IEFkcmlhbiBQZXJleiBkZSBDYXN0cm8uCisK
KyAgICAgICAgVXBkYXRlIEdMaWIgSVRQIHVuaXQgdGVzdCB0byBjaGVjayBhbHNvIGZldGNoIGFu
ZCByZW1vdmUuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVz
dFdlYnNpdGVEYXRhLmNwcDoKKyAgICAgICAgKHRlc3RXZWJzaXRlRGF0YUlUUCk6CisKIDIwMjAt
MDYtMTcgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFtHVEtdW1dQRV0gQWRkIEFQSSB0byBjb25maWd1cmUgYW5kIGhhbmRsZSBzZXJ2aWNlIHdv
cmtlciByZWdpc3RyYXRpb25zIHRvIFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlcgpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJzaXRlRGF0YS5j
cHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYnNpdGVEYXRh
LmNwcAppbmRleCA2YjdiY2Q5ZGJjNzMuLmU5YmNjMzU4ZTMwMCAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJzaXRlRGF0YS5jcHAKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJzaXRlRGF0YS5jcHAK
QEAgLTY4MiwxMCArNjgyLDI0IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJzaXRlRGF0YUlUUChXZWJz
aXRlRGF0YVRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgdGVzdC0+d2FpdFVudGlsTG9h
ZEZpbmlzaGVkKCk7CiAKICAgICB0ZXN0LT53YWl0VW50aWxGaWxlQ2hhbmdlZChpdHBMb2dGaWxl
LmdldCgpLCBHX0ZJTEVfTU9OSVRPUl9FVkVOVF9DUkVBVEVEKTsKLQogICAgIGdfYXNzZXJ0X3Ry
dWUoZ19maWxlX3Rlc3QoaXRwRGlyZWN0b3J5LCBHX0ZJTEVfVEVTVF9JU19ESVIpKTsKICAgICBn
X2Fzc2VydF90cnVlKGdfZmlsZV90ZXN0KGl0cExvZ0ZpbGUuZ2V0KCksIEdfRklMRV9URVNUX0lT
X1JFR1VMQVIpKTsKIAorICAgIEdMaXN0KiBkYXRhTGlzdCA9IHRlc3QtPmZldGNoKFdFQktJVF9X
RUJTSVRFX0RBVEFfSVRQKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGRhdGFMaXN0KTsKKyAgICBn
X2Fzc2VydF9jbXB1aW50KGdfbGlzdF9sZW5ndGgoZGF0YUxpc3QpLCA9PSwgMSk7CisgICAgYXV0
byogZGF0YSA9IHN0YXRpY19jYXN0PFdlYktpdFdlYnNpdGVEYXRhKj4oZGF0YUxpc3QtPmRhdGEp
OworICAgIGdfYXNzZXJ0X25vbm51bGwoZGF0YSk7CisgICAgV2ViS2l0U2VjdXJpdHlPcmlnaW4q
IG9yaWdpbiA9IHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fbmV3X2Zvcl91cmkoa1NlcnZlci0+Z2V0
VVJJRm9yUGF0aCgiLyIpLmRhdGEoKSk7CisgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF93ZWJz
aXRlX2RhdGFfZ2V0X25hbWUoZGF0YSksID09LCB3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2dldF9o
b3N0KG9yaWdpbikpOworICAgIHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fdW5yZWYob3JpZ2luKTsK
KworICAgIC8vIFJlbW92ZSB0aGUgcmVnaXN0cmF0aW9uLgorICAgIEdMaXN0IHJlbW92ZUxpc3Qg
PSB7IGRhdGEsIG51bGxwdHIsIG51bGxwdHIgfTsKKyAgICB0ZXN0LT5yZW1vdmUoV0VCS0lUX1dF
QlNJVEVfREFUQV9JVFAsICZyZW1vdmVMaXN0KTsKKyAgICBkYXRhTGlzdCA9IHRlc3QtPmZldGNo
KFdFQktJVF9XRUJTSVRFX0RBVEFfSVRQKTsKKyAgICBnX2Fzc2VydF9udWxsKGRhdGFMaXN0KTsK
KwogICAgIC8vIENsZWFyIGFsbC4KICAgICBzdGF0aWMgY29uc3QgV2ViS2l0V2Vic2l0ZURhdGFU
eXBlcyBjYWNoZUFuZElUUCA9IHN0YXRpY19jYXN0PFdlYktpdFdlYnNpdGVEYXRhVHlwZXM+KFdF
QktJVF9XRUJTSVRFX0RBVEFfSVRQIHwgV0VCS0lUX1dFQlNJVEVfREFUQV9NRU1PUllfQ0FDSEUg
fCBXRUJLSVRfV0VCU0lURV9EQVRBX0RJU0tfQ0FDSEUpOwogICAgIHRlc3QtPmNsZWFyKGNhY2hl
QW5kSVRQLCAwKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>402206</attachid>
            <date>2020-06-18 07:28:53 -0700</date>
            <delta_ts>2020-06-18 07:28:53 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>wk2-fetch-itp-data.diff</filename>
            <type>text/plain</type>
            <size>21358</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggZGQ0MWJjOTkzNjdhLi5iOTRmYjM5M2E1M2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzkgQEAKKzIwMjAtMDYtMTcgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2Fs
aWEuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBmZXRjaGluZyByZWdpc3RyYWJsZSBk
b21haW5zIHdpdGggcmVzb3VyY2UgbG9hZCBzdGF0aXN0aWNzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMyOTEKKworICAgICAgICBSZXZpZXdlZCBi
eSBBZHJpYW4gUGVyZXogZGUgQ2FzdHJvIGFuZCBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgIFdl
YnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0YSgpIGRvZXNuJ3QgcmV0dXJuIGFueXRoaW5nIGZvciBy
ZXNvdXJjZSBsb2FkIHN0YXRpc3RpY3MgYmVjYXVzZQorICAgICAgICBOZXR3b3JrUHJvY2Vzczo6
ZmV0Y2hXZWJzaXRlRGF0YSgpIGRvZXNuJ3QgaGFuZGxlIFdlYnNpdGVEYXRhVHlwZTo6UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0
OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6YWxsRG9tYWlucyBjb25zdCk6
IFF1ZXJ5IGFsbCByZWdpc3RyYWJsZSBkb21haW5zIGZyb20gZGF0YWJhc2UuCisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01lbW9yeVN0b3JlOjphbGxEb21haW5zIGNvbnN0KTogUmV0dXJuIGFsbCByZWdp
c3RyYWJsZSBkb21haW5zIGluIG1lbW9yeSBtYXAuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5o
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjpyZWdpc3RyYWJsZURvbWFpbnMpOiBHZXQgdGhlIGxpc3Qgb2YgcmVnaXN0cmFi
bGUgZG9tYWlucy4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmZldGNoV2Vi
c2l0ZURhdGEpOiBIYW5kbGUgV2Vic2l0ZURhdGFUeXBlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
LgorICAgICAgICAqIFNoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYnNpdGVEYXRhOjplbmNvZGUgY29uc3QpOiBFbmNvZGUgcmVnaXN0cmFibGVE
b21haW5zV2l0aFJlc291cmNlTG9hZFN0YXRpc3RpY3MuCisgICAgICAgIChXZWJLaXQ6OldlYnNp
dGVEYXRhOjpkZWNvZGUpOiBEZWNvZGUgcmVnaXN0cmFibGVEb21haW5zV2l0aFJlc291cmNlTG9h
ZFN0YXRpc3RpY3MuCisgICAgICAgICogU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhLmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHA6Cisg
ICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVJVFBEYXRhRm9yRG9tYWluKTogVXNlIFdl
YnNpdGVEYXRhUmVjb3JkOjphZGRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUmVnaXN0cmFibGVEb21h
aW4oKQorICAgICAgICBpbnN0ZWFkIG9mIHRoZSBkaXNwbGF5IG5hbWUuCisgICAgICAgICogVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhUmVjb3JkLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2Vic2l0ZURhdGFSZWNvcmQ6OmFkZFJlc291cmNlTG9hZFN0YXRpc3RpY3NSZWdpc3RyYWJs
ZURvbWFpbik6IEFkZCB0aGUgZ2l2ZW4gcmVnaXN0cmFibGUgZG9tYWluIHRvIHRoZSBsaXN0Lgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhQW5kQXBwbHkpOiBIYW5kbGUg
cmVnaXN0cmFibGUgZG9tYWlucyB3aXRoIHJlc291cmNlIGxvYWQgc3RhdGlzdGljcy4KKyAgICAg
ICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cmVtb3ZlRGF0YSk6IFVzZSByZXNvdXJjZUxv
YWRTdGF0aXN0aWNzUmVnaXN0cmFibGVEb21haW5zIGluc3RlYWQgb2YgdGhlIGRpc3BsYXkgbmFt
ZS4KKwogMjAyMC0wNi0xOCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5j
b20+CiAKICAgICAgICAgW0dUS11bV1BFXSBBZGQgQVBJIHRvIGNvbmZpZ3VyZSBhbmQgaGFuZGxl
IERPTSBjYWNoZSB0byBXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZp
ZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCmluZGV4IDQzNGRjOWZj
NTYxMS4uMGJjYTliNzJmZjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKQEAgLTIyNjEsNiArMjI2MSwyMCBAQCB2b2lkIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZW1vdmVEYXRhRm9yRG9tYWluKGNv
bnN0IFJlZ2lzdHJhYmxlRAogICAgIH0KIH0KIAorVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6YWxsRG9tYWlucygpIGNvbnN0Cit7
CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBhdXRvIHNjb3BlZFN0YXRl
bWVudCA9IHRoaXMtPnNjb3BlZFN0YXRlbWVudChtX2dldEFsbERvbWFpbnNTdGF0ZW1lbnQsIGdl
dEFsbERvbWFpbnNRdWVyeSwgImFsbERvbWFpbnMiX3MpOworICAgIGlmICghc2NvcGVkU3RhdGVt
ZW50KQorICAgICAgICByZXR1cm4geyB9OworCisgICAgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWlu
PiBkb21haW5zOworICAgIHdoaWxlIChzY29wZWRTdGF0ZW1lbnQtPnN0ZXAoKSA9PSBTUUxJVEVf
Uk9XKQorICAgICAgICBkb21haW5zLmFwcGVuZChSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2Vk
Q3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKHNjb3BlZFN0YXRlbWVudC0+Z2V0Q29s
dW1uVGV4dCgwKSkpOworICAgIHJldHVybiBkb21haW5zOworfQorCiB2b2lkIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjbGVhcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5o
CmluZGV4IDBmOWYwYzJlMzhlZi4uMTE2MGFhZTNiOTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaApAQCAtMTQ0LDYgKzE0NCw3IEBA
IHB1YmxpYzoKICAgICBib29sIGlzTmV3UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlRmls
ZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNOZXdSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VG
aWxlOyB9CiAgICAgdm9pZCBzZXRJc05ld1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZUZp
bGUoYm9vbCBpc05ld1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZUZpbGUpIHsgbV9pc05l
d1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZUZpbGUgPSBpc05ld1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZUZpbGU7IH0KICAgICB2b2lkIHJlbW92ZURhdGFGb3JEb21haW4oY29u
c3QgUmVnaXN0cmFibGVEb21haW4mKSBvdmVycmlkZTsKKyAgICBWZWN0b3I8UmVnaXN0cmFibGVE
b21haW4+IGFsbERvbWFpbnMoKSBjb25zdCBmaW5hbDsKICAgICBib29sIGRvbWFpbklERXhpc3Rz
SW5EYXRhYmFzZShpbnQpOwogICAgIE9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBjaGVja0Zvck1p
c3NpbmdUYWJsZXNJblNjaGVtYSgpOwogICAgIHZvaWQgaW5zZXJ0RXhwaXJlZFN0YXRpc3RpY0Zv
clRlc3RpbmcoY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBib29sIGhhc1VzZXJJbnRlcmFjdGlv
biwgYm9vbCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsLCBib29sIGlzUHJl
dmFsZW50KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNZW1vcnlTdG9yZS5jcHAKaW5kZXggYzMxNTdhMTliODYxLi4yMjFlMzYzYWExZTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwCkBA
IC0xMDcwLDYgKzEwNzAsMTMgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3Rv
cmU6OnJlbW92ZURhdGFGb3JEb21haW4oY29uc3QgUmVnaXN0cmFibGVEb20KICAgICB9CiB9CiAK
K1ZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0
b3JlOjphbGxEb21haW5zKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigp
KTsKKworICAgIHJldHVybiBjb3B5VG9WZWN0b3IobV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAua2V5
cygpKTsKK30KKwogdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OnNldFBy
ZXZhbGVudFJlc291cmNlKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4pCiB7CiAgICAg
QVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3Jl
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01lbW9yeVN0b3JlLmgKaW5kZXggOWYwOTkwYWU3MmNhLi4xY2VhMGJlMmE4MGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmgK
QEAgLTExMyw2ICsxMTMsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldExhc3RTZWVuKGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiwgU2Vjb25kcykgb3ZlcnJpZGU7CiAgICAgdm9pZCByZW1vdmVE
YXRhRm9yRG9tYWluKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJikgb3ZlcnJpZGU7CisgICAgVmVj
dG9yPFJlZ2lzdHJhYmxlRG9tYWluPiBhbGxEb21haW5zKCkgY29uc3QgZmluYWw7CiAgICAgdm9p
ZCBpbnNlcnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyhjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYsIGJvb2wgaGFzVXNlckludGVyYWN0aW9uLCBib29sIGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29v
a2llRGF0YVJlbW92YWwsIGJvb2wgaXNQcmV2YWxlbnQpIG92ZXJyaWRlOwogCiBwcml2YXRlOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IDAxYzc2NWZhOTlm
MC4uZDU0OWZjMWEzNzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5oCkBAIC0xOTIsNyArMTkyLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRMYXN0
U2Vlbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcHJpbWFyeURvbWFpbiwgU2Vjb25kcykgPSAw
OwogCiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZURhdGFGb3JEb21haW4oY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mKSA9IDA7Ci0gICAgCisKKyAgICB2aXJ0dWFsIFZlY3RvcjxSZWdpc3RyYWJsZURv
bWFpbj4gYWxsRG9tYWlucygpIGNvbnN0ID0gMDsKKwogICAgIHZvaWQgZGlkQ3JlYXRlTmV0d29y
a1Byb2Nlc3MoKTsKIAogICAgIGNvbnN0IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSYg
c3RvcmUoKSBjb25zdCB7IHJldHVybiBtX3N0b3JlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4IGRhNjdjMGY3ZWY1ZC4uYjIxNjkxZWY1
NTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNw
cApAQCAtMTM2MSw2ICsxMzYxLDE3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpyZW1vdmVEYXRhRm9yRG9tYWluKFJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpCiAgICAgfSk7
CiB9CiAKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZWdpc3RyYWJsZURv
bWFpbnMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+JiYp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7
CisgICAgcG9zdFRhc2soW3RoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8gZG9tYWlucyA9IG1fc3RhdGlz
dGljc1N0b3JlID8gbV9zdGF0aXN0aWNzU3RvcmUtPmFsbERvbWFpbnMoKSA6IFZlY3RvcjxSZWdp
c3RyYWJsZURvbWFpbj4oKTsKKyAgICAgICAgcG9zdFRhc2tSZXBseShbZG9tYWlucyA9IGNyb3Nz
VGhyZWFkQ29weShXVEZNb3ZlKGRvbWFpbnMpKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKFdURk1vdmUoZG9tYWlucykpOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKwogdm9p
ZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmRlbGV0ZUFuZFJlc3RyaWN0V2Vic2l0
ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0
YVR5cGVzLCBSZWdpc3RyYWJsZURvbWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZv
ciYmIGRvbWFpbnNUb0RlbGV0ZUFuZFJlc3RyaWN0V2Vic2l0ZURhdGFGb3IsIGJvb2wgc2hvdWxk
Tm90aWZ5UGFnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNoU2V0PFJlZ2lzdHJh
YmxlRG9tYWluPiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChSdW5Mb29w
Ojppc01haW4oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmgKaW5kZXggMzg5N2Q1MWFhOTgxLi42NTIzODAxYTVjNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKQEAgLTIxOSw2ICsyMTksNyBAQCBzdHJ1Y3Qg
VGhpcmRQYXJ0eURhdGEgewogICAgIHZvaWQgY2xlYXJVc2VySW50ZXJhY3Rpb24oY29uc3QgVG9w
RnJhbWVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgcmVt
b3ZlRGF0YUZvckRvbWFpbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGRlbGV0ZUFuZFJlc3RyaWN0V2Vic2l0ZURhdGFGb3JS
ZWdpc3RyYWJsZURvbWFpbnMoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIFJlZ2lzdHJhYmxl
RG9tYWluc1RvRGVsZXRlT3JSZXN0cmljdFdlYnNpdGVEYXRhRm9yJiYsIGJvb2wgc2hvdWxkTm90
aWZ5UGFnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxl
RG9tYWluPiYpPiYmKTsKKyAgICB2b2lkIHJlZ2lzdHJhYmxlRG9tYWlucyhDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4mJik+JiYpOwogICAgIHZvaWQgcmVn
aXN0cmFibGVEb21haW5zV2l0aFdlYnNpdGVEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+
LCBib29sIHNob3VsZE5vdGlmeVBhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSGFzaFNldDxS
ZWdpc3RyYWJsZURvbWFpbj4mJik+JiYpOwogICAgIFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIGdy
YW50U3RvcmFnZUFjY2Vzc0luU3RvcmFnZVNlc3Npb24oY29uc3QgU3ViRnJhbWVEb21haW4mLCBj
b25zdCBUb3BGcmFtZURvbWFpbiYsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4s
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBTdG9yYWdlQWNjZXNzU2NvcGUpOwogICAgIHZvaWQg
aGFzSGFkVXNlckludGVyYWN0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IGU2MTM1YzYyYzFjYy4uYjU5OGU5NWUyZDQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApA
QCAtMTU3OCw2ICsxNTc4LDE5IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmZldGNoV2Vic2l0ZURh
dGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0CiAgICAgICAgIH0K
ICAgICB9CiAjZW5kaWYKKworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisg
ICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzKSkgeworICAgICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtT
ZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRT
dGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKSB7CisgICAgICAg
ICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+cmVnaXN0cmFibGVEb21haW5zKFtjYWxs
YmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXShhdXRvJiYgZG9t
YWlucykgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgICAgIHdoaWxlICghZG9tYWlucy5pc0Vt
cHR5KCkpCisgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fd2Vi
c2l0ZURhdGEucmVnaXN0cmFibGVEb21haW5zV2l0aFJlc291cmNlTG9hZFN0YXRpc3RpY3MuYWRk
KGRvbWFpbnMudGFrZUxhc3QoKSk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVs
ZXRlV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0
ZURhdGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzLCBXYWxsVGltZSBtb2RpZmllZFNpbmNlLCBDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YS5jcHAKaW5kZXggYmFiOWU2NzcxZTgxLi5iNmM5MTg0MDlmMDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YS5jcHAKQEAg
LTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAi
V2Vic2l0ZURhdGFUeXBlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nSGFzaC5oPgogCkBAIC02Nyw2ICs2OCw5IEBAIHZvaWQgV2Vic2l0ZURhdGE6
OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBob3N0
TmFtZXNXaXRoUGx1Z2luRGF0YTsKICNlbmRpZgogICAgIGVuY29kZXIgPDwgaG9zdE5hbWVzV2l0
aEhTVFNDYWNoZTsKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAgIGVu
Y29kZXIgPDwgcmVnaXN0cmFibGVEb21haW5zV2l0aFJlc291cmNlTG9hZFN0YXRpc3RpY3M7Cisj
ZW5kaWYKIH0KIAogYm9vbCBXZWJzaXRlRGF0YTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2Rl
ciwgV2Vic2l0ZURhdGEmIHJlc3VsdCkKQEAgLTgxLDYgKzg1LDEwIEBAIGJvb2wgV2Vic2l0ZURh
dGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFdlYnNpdGVEYXRhJiByZXN1bHQpCiAj
ZW5kaWYKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5ob3N0TmFtZXNXaXRoSFNUU0Nh
Y2hlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NU
QVRJU1RJQ1MpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQucmVnaXN0cmFibGVEb21h
aW5zV2l0aFJlc291cmNlTG9hZFN0YXRpc3RpY3MpKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisj
ZW5kaWYKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhLmgKaW5kZXggZjE3OTQ0ODM4OGMwLi44MjcwNzQxMzcwYzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEuaApA
QCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgPFdlYkNvcmUvUmVn
aXN0cmFibGVEb21haW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5o
PgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KQEAg
LTU5LDYgKzYwLDkgQEAgc3RydWN0IFdlYnNpdGVEYXRhIHsKICAgICBIYXNoU2V0PFN0cmluZz4g
aG9zdE5hbWVzV2l0aFBsdWdpbkRhdGE7CiAjZW5kaWYKICAgICBIYXNoU2V0PFN0cmluZz4gaG9z
dE5hbWVzV2l0aEhTVFNDYWNoZTsKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNT
KQorICAgIEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IHJlZ2lzdHJhYmxlRG9t
YWluc1dpdGhSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOworI2VuZGlmCiAKICAgICB2b2lkIGVuY29k
ZShJUEM6OkVuY29kZXImKSBjb25zdDsKICAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJv
b2wgZGVjb2RlKElQQzo6RGVjb2RlciYsIFdlYnNpdGVEYXRhJik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcAppbmRl
eCBiZTUwMzA3OTc0MDIuLjUyZjE5ZjA0ZDBkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCkBAIC03Miw3ICs3
Miw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlUmVtb3ZlSVRQRGF0YUZvckRvbWFpbihXS1dl
YnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmCiB7CiAgICAgV2ViS2l0OjpXZWJzaXRlRGF0
YVJlY29yZCBkYXRhUmVjb3JkOwogICAgIGRhdGFSZWNvcmQudHlwZXMuYWRkKFdlYktpdDo6V2Vi
c2l0ZURhdGFUeXBlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKTsKLSAgICBkYXRhUmVjb3JkLmRp
c3BsYXlOYW1lID0gV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpOworICAgIGRhdGFSZWNv
cmQuYWRkUmVzb3VyY2VMb2FkU3RhdGlzdGljc1JlZ2lzdHJhYmxlRG9tYWluKFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tSG9zdChXZWJLaXQ6OnRvSW1wbCho
b3N0KS0+c3RyaW5nKCkpKTsKICAgICBWZWN0b3I8V2ViS2l0OjpXZWJzaXRlRGF0YVJlY29yZD4g
ZGF0YVJlY29yZHMgPSB7IFdURk1vdmUoZGF0YVJlY29yZCkgfTsKIAogICAgIE9wdGlvblNldDxX
ZWJLaXQ6OldlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzID0gV2ViS2l0OjpXZWJzaXRlRGF0YVR5
cGU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5jcHAKaW5kZXggNTMzZGM5
OWNmMWExLi41MDZhYjYzZWIwMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhUmVjb3JkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5jcHAKQEAgLTI4LDcgKzI4LDYg
QEAKIAogI2luY2x1ZGUgPFdlYkNvcmUvTG9jYWxpemVkU3RyaW5ncy5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUHVibGljU3VmZml4Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFp
bi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KIAogI2lmIFBMQVRGT1JN
KENPQ09BKQpAQCAtMTE0LDYgKzExMywxNCBAQCB2b2lkIFdlYnNpdGVEYXRhUmVjb3JkOjphZGRB
bHRlcm5hdGl2ZVNlcnZpY2VzSG9zdG5hbWUoY29uc3QgU3RyaW5nJiBob3N0TmFtZSkKICNlbmRp
ZgogfQogCisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKK3ZvaWQgV2Vic2l0
ZURhdGFSZWNvcmQ6OmFkZFJlc291cmNlTG9hZFN0YXRpc3RpY3NSZWdpc3RyYWJsZURvbWFpbihj
b25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluKQoreworICAgIHR5cGVzLmFk
ZChXZWJzaXRlRGF0YVR5cGU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3MpOworICAgIHJlc291cmNl
TG9hZFN0YXRpc3RpY3NSZWdpc3RyYWJsZURvbWFpbnMuYWRkKGRvbWFpbik7Cit9CisjZW5kaWYK
Kwogc3RhdGljIGlubGluZSBib29sIGhvc3RJc0luRG9tYWluKFN0cmluZ1ZpZXcgaG9zdCwgU3Ry
aW5nVmlldyBkb21haW4pCiB7CiAgICAgaWYgKCFob3N0LmVuZHNXaXRoSWdub3JpbmdBU0NJSUNh
c2UoZG9tYWluKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhUmVjb3JkLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVJlY29yZC5oCmluZGV4IGU4ZmRkZDkxZjgyYS4uNGEwZmMwYzVkNWMw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVJlY29yZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhUmVjb3JkLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5j
bHVkZSAiV2Vic2l0ZURhdGFUeXBlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURv
bWFpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkhhc2guaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgpAQCAtMzYsNyArMzcsNiBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBSZWdpc3RyYWJsZURvbWFpbjsKIGNsYXNzIFNlY3Vy
aXR5T3JpZ2luOwogfQogCkBAIC01NSw2ICs1NSw5IEBAIHN0cnVjdCBXZWJzaXRlRGF0YVJlY29y
ZCB7CiAjZW5kaWYKICAgICB2b2lkIGFkZEhTVFNDYWNoZUhvc3RuYW1lKGNvbnN0IFN0cmluZyYg
aG9zdE5hbWUpOwogICAgIHZvaWQgYWRkQWx0ZXJuYXRpdmVTZXJ2aWNlc0hvc3RuYW1lKGNvbnN0
IFN0cmluZyYgaG9zdE5hbWUpOworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1Mp
CisgICAgdm9pZCBhZGRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUmVnaXN0cmFibGVEb21haW4oY29u
c3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mKTsKKyNlbmRpZgogCiAgICAgU3RyaW5nIGRp
c3BsYXlOYW1lOwogICAgIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHR5cGVzOwpAQCAtNzIs
NiArNzUsOSBAQCBzdHJ1Y3QgV2Vic2l0ZURhdGFSZWNvcmQgewogI2VuZGlmCiAgICAgSGFzaFNl
dDxTdHJpbmc+IEhTVFNDYWNoZUhvc3ROYW1lczsKICAgICBIYXNoU2V0PFN0cmluZz4gYWx0ZXJu
YXRpdmVTZXJ2aWNlc0hvc3ROYW1lczsKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNU
SUNTKQorICAgIEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IHJlc291cmNlTG9h
ZFN0YXRpc3RpY3NSZWdpc3RyYWJsZURvbWFpbnM7CisjZW5kaWYKIAogICAgIGJvb2wgbWF0Y2hl
cyhjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYpIGNvbnN0OwogICAgIFN0cmluZyB0
b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCmluZGV4IDUyYzlm
OTQwMmMzYS4uNDc0NGY0ZjFkYzllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtMzY2LDYgKzM2Niwy
MCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0YUFuZEFwcGx5KE9wdGlvblNldDxX
ZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgTwogICAgICAgICAgICAgICAgIHJlY29yZC5hZGRI
U1RTQ2FjaGVIb3N0bmFtZShob3N0TmFtZSk7CiAgICAgICAgICAgICB9CiAKKyNpZiBFTkFCTEUo
UkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBk
b21haW4gOiB3ZWJzaXRlRGF0YS5yZWdpc3RyYWJsZURvbWFpbnNXaXRoUmVzb3VyY2VMb2FkU3Rh
dGlzdGljcykgeworICAgICAgICAgICAgICAgIGF1dG8gZGlzcGxheU5hbWUgPSBXZWJzaXRlRGF0
YVJlY29yZDo6ZGlzcGxheU5hbWVGb3JIb3N0TmFtZShkb21haW4uc3RyaW5nKCkpOworICAgICAg
ICAgICAgICAgIGlmICghZGlzcGxheU5hbWUpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworCisgICAgICAgICAgICAgICAgYXV0byYgcmVjb3JkID0gbV93ZWJzaXRlRGF0YVJlY29yZHMu
YWRkKGRpc3BsYXlOYW1lLCBXZWJzaXRlRGF0YVJlY29yZCB7IH0pLml0ZXJhdG9yLT52YWx1ZTsK
KyAgICAgICAgICAgICAgICBpZiAoIXJlY29yZC5kaXNwbGF5TmFtZSkKKyAgICAgICAgICAgICAg
ICAgICAgcmVjb3JkLmRpc3BsYXlOYW1lID0gV1RGTW92ZShkaXNwbGF5TmFtZSk7CisKKyAgICAg
ICAgICAgICAgICByZWNvcmQuYWRkUmVzb3VyY2VMb2FkU3RhdGlzdGljc1JlZ2lzdHJhYmxlRG9t
YWluKGRvbWFpbik7CisgICAgICAgICAgICB9CisjZW5kaWYKKwogICAgICAgICAgICAgY2FsbElm
TmVlZGVkKCk7CiAgICAgICAgIH0KIApAQCAtOTk2LDcgKzEwMTAsOCBAQCB2b2lkIFdlYnNpdGVE
YXRhU3RvcmU6OnJlbW92ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVz
LCBjb25zdCBWZQogICAgICAgICAgICAgICAgICAgICBjb29raWVIb3N0TmFtZXMuYXBwZW5kKGhv
c3ROYW1lKTsKICAgICAgICAgICAgICAgICBmb3IgKGF1dG8mIGhvc3ROYW1lIDogZGF0YVJlY29y
ZC5IU1RTQ2FjaGVIb3N0TmFtZXMpCiAgICAgICAgICAgICAgICAgICAgIEhTVFNDYWNoZUhvc3RO
YW1lcy5hcHBlbmQoaG9zdE5hbWUpOwotICAgICAgICAgICAgICAgIHJlZ2lzdHJhYmxlRG9tYWlu
cy5hcHBlbmQoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21I
b3N0KGRhdGFSZWNvcmQuZGlzcGxheU5hbWUpKTsKKyAgICAgICAgICAgICAgICBmb3IgKGF1dG8m
IHJlZ2lzdHJhYmxlRG9tYWluIDogZGF0YVJlY29yZC5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUmVn
aXN0cmFibGVEb21haW5zKQorICAgICAgICAgICAgICAgICAgICByZWdpc3RyYWJsZURvbWFpbnMu
YXBwZW5kKHJlZ2lzdHJhYmxlRG9tYWluKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAg
Y2FsbGJhY2tBZ2dyZWdhdG9yLT5hZGRQZW5kaW5nQ2FsbGJhY2soKTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBjMjMwOGM5YTBlMWMuLjBkNjc4
MzhkNTE5MCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE1IEBACisyMDIwLTA2LTE3ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNn
YXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgZmV0Y2hpbmcgcmVn
aXN0cmFibGUgZG9tYWlucyB3aXRoIHJlc291cmNlIGxvYWQgc3RhdGlzdGljcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzMjkxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgQWRyaWFuIFBlcmV6IGRlIENhc3Ryby4KKworICAgICAgICBVcGRhdGUgR0xp
YiBJVFAgdW5pdCB0ZXN0IHRvIGNoZWNrIGFsc28gZmV0Y2ggYW5kIHJlbW92ZS4KKworICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2Vic2l0ZURhdGEuY3BwOgor
ICAgICAgICAodGVzdFdlYnNpdGVEYXRhSVRQKToKKwogMjAyMC0wNi0xOCAgQ2FybG9zIEdhcmNp
YSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS11bV1BFXSBBZGQg
QVBJIHRvIGNvbmZpZ3VyZSBhbmQgaGFuZGxlIERPTSBjYWNoZSB0byBXZWJLaXRXZWJzaXRlRGF0
YU1hbmFnZXIKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xp
Yi9UZXN0V2Vic2l0ZURhdGEuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
TGliL1Rlc3RXZWJzaXRlRGF0YS5jcHAKaW5kZXggZWY2MjBmNGExMTUxLi5kYzRiMTdjZjg2MzEg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2Vi
c2l0ZURhdGEuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9U
ZXN0V2Vic2l0ZURhdGEuY3BwCkBAIC02ODAsNyArNjgwLDcgQEAgc3RhdGljIHZvaWQgdGVzdFdl
YnNpdGVEYXRhSVRQKFdlYnNpdGVEYXRhVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBn
X3JtZGlyKGl0cERpcmVjdG9yeSk7CiAKICAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfd2Vic2l0
ZV9kYXRhX21hbmFnZXJfZ2V0X2l0cF9lbmFibGVkKHRlc3QtPm1fbWFuYWdlcikpOwotICAgIHRl
c3QtPmxvYWRVUkkoa1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiLyIpLmRhdGEoKSk7CisgICAgdGVz
dC0+bG9hZFVSSShrU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvZW1wdHkiKS5kYXRhKCkpOwogICAg
IHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwogCiAgICAgd2Via2l0X3dlYnNpdGVfZGF0
YV9tYW5hZ2VyX3NldF9pdHBfZW5hYmxlZCh0ZXN0LT5tX21hbmFnZXIsIFRSVUUpOwpAQCAtNjg4
LDE0ICs2ODgsMjggQEAgc3RhdGljIHZvaWQgdGVzdFdlYnNpdGVEYXRhSVRQKFdlYnNpdGVEYXRh
VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBnX2Fzc2VydF9mYWxzZShnX2ZpbGVfdGVz
dChpdHBEaXJlY3RvcnksIEdfRklMRV9URVNUX0lTX0RJUikpOwogICAgIGdfYXNzZXJ0X2ZhbHNl
KGdfZmlsZV90ZXN0KGl0cExvZ0ZpbGUuZ2V0KCksIEdfRklMRV9URVNUX0lTX1JFR1VMQVIpKTsK
IAotICAgIHRlc3QtPmxvYWRVUkkoa1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiLyIpLmRhdGEoKSk7
CisgICAgdGVzdC0+bG9hZFVSSShrU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvZW1wdHkiKS5kYXRh
KCkpOwogICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwogCiAgICAgdGVzdC0+d2Fp
dFVudGlsRmlsZUNoYW5nZWQoaXRwTG9nRmlsZS5nZXQoKSwgR19GSUxFX01PTklUT1JfRVZFTlRf
Q1JFQVRFRCk7Ci0KICAgICBnX2Fzc2VydF90cnVlKGdfZmlsZV90ZXN0KGl0cERpcmVjdG9yeSwg
R19GSUxFX1RFU1RfSVNfRElSKSk7CiAgICAgZ19hc3NlcnRfdHJ1ZShnX2ZpbGVfdGVzdChpdHBM
b2dGaWxlLmdldCgpLCBHX0ZJTEVfVEVTVF9JU19SRUdVTEFSKSk7CiAKKyAgICBHTGlzdCogZGF0
YUxpc3QgPSB0ZXN0LT5mZXRjaChXRUJLSVRfV0VCU0lURV9EQVRBX0lUUCk7CisgICAgZ19hc3Nl
cnRfbm9ubnVsbChkYXRhTGlzdCk7CisgICAgZ19hc3NlcnRfY21wdWludChnX2xpc3RfbGVuZ3Ro
KGRhdGFMaXN0KSwgPT0sIDEpOworICAgIGF1dG8qIGRhdGEgPSBzdGF0aWNfY2FzdDxXZWJLaXRX
ZWJzaXRlRGF0YSo+KGRhdGFMaXN0LT5kYXRhKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGRhdGEp
OworICAgIFdlYktpdFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4gPSB3ZWJraXRfc2VjdXJpdHlfb3Jp
Z2luX25ld19mb3JfdXJpKGtTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi8iKS5kYXRhKCkpOworICAg
IGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfd2Vic2l0ZV9kYXRhX2dldF9uYW1lKGRhdGEpLCA9PSwg
d2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfaG9zdChvcmlnaW4pKTsKKyAgICB3ZWJraXRfc2Vj
dXJpdHlfb3JpZ2luX3VucmVmKG9yaWdpbik7CisKKyAgICAvLyBSZW1vdmUgdGhlIHJlZ2lzdHJh
dGlvbi4KKyAgICBHTGlzdCByZW1vdmVMaXN0ID0geyBkYXRhLCBudWxscHRyLCBudWxscHRyIH07
CisgICAgdGVzdC0+cmVtb3ZlKFdFQktJVF9XRUJTSVRFX0RBVEFfSVRQLCAmcmVtb3ZlTGlzdCk7
CisgICAgZGF0YUxpc3QgPSB0ZXN0LT5mZXRjaChXRUJLSVRfV0VCU0lURV9EQVRBX0lUUCk7Cisg
ICAgZ19hc3NlcnRfbnVsbChkYXRhTGlzdCk7CisKICAgICAvLyBDbGVhciBhbGwuCiAgICAgc3Rh
dGljIGNvbnN0IFdlYktpdFdlYnNpdGVEYXRhVHlwZXMgY2FjaGVBbmRJVFAgPSBzdGF0aWNfY2Fz
dDxXZWJLaXRXZWJzaXRlRGF0YVR5cGVzPihXRUJLSVRfV0VCU0lURV9EQVRBX0lUUCB8IFdFQktJ
VF9XRUJTSVRFX0RBVEFfTUVNT1JZX0NBQ0hFIHwgV0VCS0lUX1dFQlNJVEVfREFUQV9ESVNLX0NB
Q0hFKTsKICAgICB0ZXN0LT5jbGVhcihjYWNoZUFuZElUUCwgMCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>