<?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>211583</bug_id>
          
          <creation_ts>2020-05-07 10:34:01 -0700</creation_ts>
          <short_desc>Handle remote audio capture IPC messages in a background thread</short_desc>
          <delta_ts>2020-05-08 05:43:22 -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>WebRTC</component>
          <version>WebKit Local 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="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>annulen</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hta</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1650190</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-05-07 10:34:01 -0700</bug_when>
    <thetext>Handle remote audio capture IPC messages in a background thread</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650203</commentid>
    <comment_count>1</comment_count>
      <attachid>398761</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-05-07 10:44:57 -0700</bug_when>
    <thetext>Created attachment 398761
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650331</commentid>
    <comment_count>2</comment_count>
      <attachid>398761</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2020-05-07 13:33:05 -0700</bug_when>
    <thetext>Comment on attachment 398761
Patch

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

&gt; Source/WebKit/ChangeLog:10
&gt; +        Move UserMediaCaptureManager::Source in its own file and rename it to RemoveRealtimeMediaSource.

s/RemoveRealtimeMediaSource/RemoteRealtimeMediaSource/

&gt; Source/WebKit/WebProcess/cocoa/AudioCaptureSampleManager.cpp:63
&gt; +    dispatchToThread([this, source = WTFMove(source)]() mutable {

Should we assert that this is called on the main thread?

&gt; Source/WebKit/WebProcess/cocoa/AudioCaptureSampleManager.cpp:74
&gt; +    dispatchToThread([this, identifier] {

Ditto

&gt; Source/WebKit/WebProcess/cocoa/AudioCaptureSampleManager.cpp:127
&gt; +    WebAudioBufferList audioData(source.description, numberOfFrames);

It would be more efficient to to have this in an instance variable, which gets reset when necessary

&gt; Source/WebKit/WebProcess/cocoa/RemoteRealtimeMediaSource.cpp:29
&gt; +#if PLATFORM(COCOA) &amp;&amp; ENABLE(MEDIA_STREAM)

We&apos;re going to have to split this into a base class and a Cocoa-specific derived class at some point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650382</commentid>
    <comment_count>3</comment_count>
      <attachid>398805</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-05-07 15:36:37 -0700</bug_when>
    <thetext>Created attachment 398805
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650393</commentid>
    <comment_count>4</comment_count>
      <attachid>398805</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2020-05-07 15:55:18 -0700</bug_when>
    <thetext>Comment on attachment 398805
Patch

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

r=me once the bots are happy.

&gt; Source/WebKit/WebProcess/cocoa/RemoteCaptureSampleManager.h:2
&gt; + * Copyright (C) 2017 Apple Inc. All rights reserved.

2020

&gt; Source/WebKit/WebProcess/cocoa/RemoteCaptureSampleManager.messages.in:1
&gt; +# Copyright (C) 2017 Apple Inc. All rights reserved.

2020</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650530</commentid>
    <comment_count>5</comment_count>
      <attachid>398844</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-05-08 02:29:04 -0700</bug_when>
    <thetext>Created attachment 398844
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650531</commentid>
    <comment_count>6</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-05-08 02:29:08 -0700</bug_when>
    <thetext>Need to land https://bugs.webkit.org/show_bug.cgi?id=211509 to fix iOS compilation errors first</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650533</commentid>
    <comment_count>7</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-05-08 02:32:35 -0700</bug_when>
    <thetext>Thanks for the review.

(In reply to Eric Carlson from comment #2)
&gt; Comment on attachment 398761 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=398761&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/ChangeLog:10
&gt; &gt; +        Move UserMediaCaptureManager::Source in its own file and rename it to RemoveRealtimeMediaSource.
&gt; 
&gt; s/RemoveRealtimeMediaSource/RemoteRealtimeMediaSource/

Done

&gt; &gt; Source/WebKit/WebProcess/cocoa/AudioCaptureSampleManager.cpp:63
&gt; &gt; +    dispatchToThread([this, source = WTFMove(source)]() mutable {
&gt; 
&gt; Should we assert that this is called on the main thread?

This is not strictly needed but does not hurt since that is the spirit of the model.
Added.

&gt; &gt; Source/WebKit/WebProcess/cocoa/AudioCaptureSampleManager.cpp:74
&gt; &gt; +    dispatchToThread([this, identifier] {
&gt; 
&gt; Ditto

Ditto.

&gt; &gt; Source/WebKit/WebProcess/cocoa/AudioCaptureSampleManager.cpp:127

I renamed AudioCaptureSampleManager to RemoteCaptureSampleManager since we will want to do the same thing for video content.

&gt; &gt; +    WebAudioBufferList audioData(source.description, numberOfFrames);
&gt; 
&gt; It would be more efficient to to have this in an instance variable, which
&gt; gets reset when necessary

Right! Added a FIXME.

&gt; &gt; Source/WebKit/WebProcess/cocoa/RemoteRealtimeMediaSource.cpp:29
&gt; &gt; +#if PLATFORM(COCOA) &amp;&amp; ENABLE(MEDIA_STREAM)
&gt; 
&gt; We&apos;re going to have to split this into a base class and a Cocoa-specific
&gt; derived class at some point.

Right, I think splitting the class helps, UserMediaCaptureManager should no longer be cocoa specific.

As of RemoteRealtimeMediaSource, we might be able to keep it platform agnostic but make its RemoteAudio subclass platform specific in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650565</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-05-08 05:42:07 -0700</bug_when>
    <thetext>Committed r261375: &lt;https://trac.webkit.org/changeset/261375&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 398844.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650566</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-05-08 05:43:22 -0700</bug_when>
    <thetext>&lt;rdar://problem/63018424&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398761</attachid>
            <date>2020-05-07 10:44:57 -0700</date>
            <delta_ts>2020-05-07 15:36:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211583-20200507194454.patch</filename>
            <type>text/plain</type>
            <size>70624</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxMjc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDAyZDdmZWVkZTFjYjU4
YjQ5OWMyMTI4MjdhMTFhZDMxNTBhZGNjNy4uOTdmZjFlZGViM2MxMmQ1NzJjYzFmMGI3Y2FmMWUw
MzU5MWE2NTdjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIwLTA1LTA3ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBIYW5kbGUgcmVtb3RlIGF1
ZGlvIGNhcHR1cmUgSVBDIG1lc3NhZ2VzIGluIGEgYmFja2dyb3VuZCB0aHJlYWQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTU4MworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2EuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYTo6cHVzaFNhbXBs
ZXMpOgorICAgICAgICBBZGQgYXNzZXJ0aW9uIHRvIGNoZWNrIHRoYXQgd2UgYXJlIG5vdCBydW5u
aW5nIG9uIHRoZSBtYWluIHRocmVhZC4KKwogMjAyMC0wNS0wNyAgWW91ZW5uIEZhYmxldCAgPHlv
dWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IHBvdGVudGlhbCB0aHJlYWRpbmcgaXNzdWUg
aW4gQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYTo6cmVuZGVyCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4
IGQ0MWExOTkyMWEyZjA0OWEyYmQ0YjFiYjM2M2M0ZjcyYjdlMzA2YTkuLmM0MTYxMzgxNjk5YmU3
ZWNiNDJkZGZkZTM5MWFmYTUyMDlkZmEyMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzMgQEAKKzIw
MjAtMDUtMDcgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIEhh
bmRsZSByZW1vdGUgYXVkaW8gY2FwdHVyZSBJUEMgbWVzc2FnZXMgaW4gYSBiYWNrZ3JvdW5kIHRo
cmVhZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEx
NTgzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
IGFuIElQQyBtZXNzYWdlIHJlY2VpdmVyIGRlZGljYXRlZCB0byBhdWRpbyBzYW1wbGUgSVBDIG1l
c3NhZ2VzLCB0aGVzZSBJUEMgbWVzc2FnZXMgYXJlIHRyZWF0ZWQgaW4gYSBiYWNrZ3JvdW5kIHRo
cmVhZC4KKyAgICAgICAgRm9yIHRoYXQgcHVycG9zZSwgaW50cm9kdWNlIEF1ZGlvQ2FwdHVyZVNh
bXBsZU1hbmFnZXIuCisgICAgICAgIE1vdmUgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OlNvdXJj
ZSBpbiBpdHMgb3duIGZpbGUgYW5kIHJlbmFtZSBpdCB0byBSZW1vdmVSZWFsdGltZU1lZGlhU291
cmNlLgorCisgICAgICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBE
ZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2Vz
LW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAg
ICAgICogUGxhdGZvcm1NYWMuY21ha2U6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5jcHA6
CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
V2ViUHJvY2Vzcy9jb2NvYS9BdWRpb0NhcHR1cmVTYW1wbGVNYW5hZ2VyLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJLaXQ6OkF1ZGlvQ2FwdHVyZVNhbXBsZU1hbmFnZXI6OkF1ZGlvQ2FwdHVyZVNh
bXBsZU1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpBdWRpb0NhcHR1cmVTYW1wbGVNYW5hZ2Vy
Ojp+QXVkaW9DYXB0dXJlU2FtcGxlTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OkF1ZGlvQ2Fw
dHVyZVNhbXBsZU1hbmFnZXI6OnNldENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpBdWRp
b0NhcHR1cmVTYW1wbGVNYW5hZ2VyOjphZGRTb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpBdWRp
b0NhcHR1cmVTYW1wbGVNYW5hZ2VyOjpyZW1vdmVTb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpB
dWRpb0NhcHR1cmVTYW1wbGVNYW5hZ2VyOjpkaXNwYXRjaFRvVGhyZWFkKToKKyAgICAgICAgKFdl
YktpdDo6QXVkaW9DYXB0dXJlU2FtcGxlTWFuYWdlcjo6c3RvcmFnZUNoYW5nZWQpOgorICAgICAg
ICAoV2ViS2l0OjpBdWRpb0NhcHR1cmVTYW1wbGVNYW5hZ2VyOjphdWRpb1NhbXBsZXNBdmFpbGFi
bGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvQXVkaW9DYXB0dXJlU2FtcGxlTWFuYWdl
ci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6QXVkaW9DYXB0dXJlU2FtcGxlTWFuYWdlcjo6
aGFzQ29ubmVjdGlvbiBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9BdWRpb0Nh
cHR1cmVTYW1wbGVNYW5hZ2VyLm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9j
ZXNzL2NvY29hL1JlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2UuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZTo6UmVtb3RlUmVhbHRpbWVNZWRpYVNv
dXJjZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2U6On5SZW1v
dGVSZWFsdGltZU1lZGlhU291cmNlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6d2hlblJlYWR5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6ZGlkRmFpbCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlYWx0aW1lTWVk
aWFTb3VyY2U6OnNldEFzUmVhZHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZWFsdGltZU1l
ZGlhU291cmNlOjpjbG9uZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlYWx0aW1lTWVkaWFT
b3VyY2U6OnNldENhcGFiaWxpdGllcyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlYWx0aW1l
TWVkaWFTb3VyY2U6OnNldFNldHRpbmdzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVhbHRp
bWVNZWRpYVNvdXJjZTo6cmVtb3RlQXVkaW9TYW1wbGVzQXZhaWxhYmxlKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZTo6cmVtb3RlVmlkZW9TYW1wbGVBdmFpbGFi
bGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZWFsdGltZU1lZGlhU291cmNlOjpjb25uZWN0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZTo6c3RhcnRQ
cm9kdWNpbmdEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6c3RvcFByb2R1Y2luZ0RhdGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZWFsdGltZU1l
ZGlhU291cmNlOjpzZXRTaG91bGRBcHBseVJvdGF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlUmVhbHRpbWVNZWRpYVNvdXJjZTo6Y2FwYWJpbGl0aWVzKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZTo6YXBwbHlDb25zdHJhaW50cyk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2U6OmFwcGx5Q29uc3RyYWludHNTdWNjZWVk
ZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZWFsdGltZU1lZGlhU291cmNlOjphcHBseUNv
bnN0cmFpbnRzRmFpbGVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVhbHRpbWVNZWRpYVNv
dXJjZTo6aGFzRW5kZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZWFsdGltZU1lZGlhU291
cmNlOjpzdG9wQmVpbmdPYnNlcnZlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlYWx0aW1l
TWVkaWFTb3VyY2U6OnJlcXVlc3RUb0VuZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9S
ZW1vdGVSZWFsdGltZU1lZGlhU291cmNlLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVSZWFsdGltZU1lZGlhU291cmNlOjppZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0dGluZ3MgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVSZWFsdGltZU1lZGlhU291cmNlOjpzZXRTaG91bGRDYXB0dXJlSW5HUFVQ
cm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZTo6c2hv
dWxkQ2FwdHVyZUluR1BVUHJvY2VzcyBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2Nv
YS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRp
YUNhcHR1cmVNYW5hZ2VyOjpjcmVhdGVDYXB0dXJlU291cmNlKToKKyAgICAgICAgKFdlYktpdDo6
VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OmNsb25lU291cmNlKToKKyAgICAgICAgKFdlYktpdDo6
VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OmNsb25lVmlkZW9Tb3VyY2UpOgorICAgICAgICAoV2Vi
S2l0OjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6QXVkaW9GYWN0b3J5OjpjcmVhdGVBdWRpb0Nh
cHR1cmVTb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6
QXVkaW9GYWN0b3J5OjpzZXRTaG91bGRDYXB0dXJlSW5HUFVQcm9jZXNzKToKKyAgICAgICAgKFdl
YktpdDo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OlZpZGVvRmFjdG9yeTo6Y3JlYXRlVmlkZW9D
YXB0dXJlU291cmNlKToKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6
OkRpc3BsYXlGYWN0b3J5OjpjcmVhdGVEaXNwbGF5Q2FwdHVyZVNvdXJjZSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIubWVzc2FnZXMuaW46CisKIDIw
MjAtMDUtMDcgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFJl
bW92ZSBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcjo6bXV0ZWQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlckNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hLmNwcAppbmRleCAwYjY2ODc1
YmRkOWY0NWU1MjE0ZTVjOTE2ZDc4MWVhMTE2MWJkMWQ5Li5iZWUzZWVkNTcyNDExMjA1MWEwNGY0
ZWI0MmExZDgwMWFkYzU1ZTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVyQ29jb2EuY3BwCkBAIC0xNDMsOSArMTQzLDkgQEAgQXVkaW9Db21wb25l
bnRJbnN0YW5jZSBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hOjpjcmVhdGVBdWRp
b1VuaXQoQ0FBdWQKICAgICByZXR1cm4gcmVtb3RlSU9Vbml0OwogfQogCi0vLyBNYXkgZ2V0IGNh
bGxlZCBvbiBhIGJhY2tncm91bmQgdGhyZWFkLgogdm9pZCBBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlckNvY29hOjpwdXNoU2FtcGxlcyhjb25zdCBNZWRpYVRpbWUmIHNhbXBsZVRpbWUsIGNv
bnN0IFBsYXRmb3JtQXVkaW9EYXRhJiBhdWRpb0RhdGEsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3Jp
cHRpb24mIGRlc2NyaXB0aW9uLCBzaXplX3Qgc2FtcGxlQ291bnQpCiB7CisgICAgQVNTRVJUKCFp
c01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKGRlc2NyaXB0aW9uLnBsYXRmb3JtRGVzY3JpcHRp
b24oKS50eXBlID09IFBsYXRmb3JtRGVzY3JpcHRpb246OkNBQXVkaW9TdHJlYW1CYXNpY1R5cGUp
OwogICAgIGlmICghbV9yZW1vdGVJT1VuaXQpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9X
ZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCBhZDk5ZDMzNTYyN2Rk
MWE3Mzc5YzI3OGZhYzg5YjdjZDFiMTQ5NjRiLi44MDZkMzdjY2VmMDIzNTRiYWYyOTBkMGQ3ZjE2
N2MxZjdjOWE1YzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlu
cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54
Y2ZpbGVsaXN0CkBAIC0xNjMsNiArMTYzLDcgQEAgJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1Zpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1Rf
RElSKS9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJ
UikvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQ
cm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9E
SVIpL1dlYlByb2Nlc3MvY29jb2EvQXVkaW9DYXB0dXJlU2FtcGxlTWFuYWdlci5tZXNzYWdlcy5p
bgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNh
cHR1cmVNYW5hZ2VyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL2NvY29h
L1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubWVzc2FnZXMuaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rl
cml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4IDdkNzBkYTRhMzNjNmMzYWQ0ZmIw
YTk2YWZlMTVkNTE1Y2ZjODBlYzguLmVmOWM1NGIwMWExNDY1NTMwMDUzYWJmY2Q2MDA0ODVjNzdk
NDMxZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0Lnhj
ZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxl
bGlzdApAQCAtMSw0ICsxLDYgQEAKICMgVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBieSB0aGUgZ2Vu
ZXJhdGUteGNmaWxlbGlzdHMgc2NyaXB0LgorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdDIvQXVkaW9DYXB0dXJlU2FtcGxlTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5j
cHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL0F1ZGlvQ2Fw
dHVyZVNhbXBsZU1hbmFnZXJNZXNzYWdlc1JlcGxpZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3JQcm94
eU1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJLaXQyL0F1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yUHJveHlNZXNzYWdlcy5oCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9BdWRpb1Nlc3Npb25S
b3V0aW5nQXJiaXRyYXRvclByb3h5TWVzc2FnZXNSZXBsaWVzLmgKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJj
ZXMubWFrZQppbmRleCBjOWQ2MzYzNTZkZWE2NWZlMWU1NTcxYzU4MWJmMjAxNzNlNDk0OGM5Li4y
YmVhNmIyMTU4YmQyYWUwZDY4NDQ3ZjViZDJhZWU2OGNjODI0YmZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVk
U291cmNlcy5tYWtlCkBAIC0xOTgsNiArMTk4LDcgQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAJ
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uIFwKIAlXZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uIFwKIAlXZWJQcm9jZXNzL1dlYlBy
b2Nlc3MgXAorCVdlYlByb2Nlc3MvY29jb2EvQXVkaW9DYXB0dXJlU2FtcGxlTWFuYWdlciBcCiAJ
V2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyIFwKIAlXZWJQcm9jZXNzL2Nv
Y29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyIFwKIAlXZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVs
bHNjcmVlbk1hbmFnZXIgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybU1hYy5j
bWFrZSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1NYWMuY21ha2UKaW5kZXggY2M2NmM5MjMzNzg3
ZGE1N2VkNmE4ZGY1M2Y4OWFhYmY3YTkyMWFlNS4uZTJjN2Y2NDUwMTU3MTVjM2I1NzIyYmQ5YjNj
ZmJmOGQxNGFhODE2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybU1hYy5jbWFr
ZQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtTWFjLmNtYWtlCkBAIC0yMDcsNiArMjA3LDcg
QEAgbGlzdChBUFBFTkQgV2ViS2l0X01FU1NBR0VTX0lOX0ZJTEVTCiAKICAgICBXZWJQcm9jZXNz
L0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5tZXNzYWdlcy5pbgogCisgICAgV2ViUHJv
Y2Vzcy9jb2NvYS9BdWRpb0NhcHR1cmVTYW1wbGVNYW5hZ2VyLm1lc3NhZ2VzLmluCiAgICAgV2Vi
UHJvY2Vzcy9jb2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1lc3NhZ2VzLmluCiAgICAgV2Vi
UHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5tZXNzYWdlcy5pbgogICAgIFdl
YlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tZXNzYWdlcy5pbgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzQ29jb2EudHh0CmluZGV4IDk1NjdhZTlkOGI3Zjg3OTBkZGRlYzhiZDYwN2I2NzdmYTQ0OWMy
MzUuLmEwNzlmMjZkODNhYTU1MWQ4ZWQ2YWZlMjRlOTBiYmE2OGRjN2VjYWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXNDb2NvYS50eHQKQEAgLTU1NCw3ICs1NTQsOSBAQCBXZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBh
eW1lbnRDb29yZGluYXRvci5jcHAKIAogV2ViUHJvY2Vzcy9BcHBsZVBheS9jb2NvYS9XZWJQYXlt
ZW50Q29vcmRpbmF0b3JDb2NvYS5tbQogCitXZWJQcm9jZXNzL2NvY29hL0F1ZGlvQ2FwdHVyZVNh
bXBsZU1hbmFnZXIuY3BwCiBXZWJQcm9jZXNzL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXIu
bW0KK1dlYlByb2Nlc3MvY29jb2EvUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAKIFdlYlBy
b2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3BwCiBXZWJQcm9jZXNzL2NvY29h
L1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KIFdlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0Nv
Y29hLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVk
aWFDYXB0dXJlTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwCmluZGV4IGIyMzQzZjRlODUxMmE2ODIy
M2QzOWZmNjBiODJjNDU1MmNmODIwZmYuLmQ0MjQxMGEwZDE0NDI2YjE2MjI2YzQ3MjViNjI2ZWJi
NWEyOGUzNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJN
ZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwCkBAIC0yOCw2ICsyOCw3IEBA
CiAKICNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAorI2luY2x1
ZGUgIkF1ZGlvQ2FwdHVyZVNhbXBsZU1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIkNvbm5l
Y3Rpb24uaCIKICNpbmNsdWRlICJTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZS5oIgogI2luY2x1ZGUg
IlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyTWVzc2FnZXMuaCIKQEAgLTEzOCw3ICsxMzksNyBAQCBw
cml2YXRlOgogICAgICAgICB1aW50NjRfdCBzdGFydEZyYW1lOwogICAgICAgICB1aW50NjRfdCBl
bmRGcmFtZTsKICAgICAgICAgbV9yaW5nQnVmZmVyLmdldEN1cnJlbnRGcmFtZUJvdW5kcyhzdGFy
dEZyYW1lLCBlbmRGcmFtZSk7Ci0gICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6
VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OkF1ZGlvU2FtcGxlc0F2YWlsYWJsZShtX2lkLCB0aW1l
LCBudW1iZXJPZkZyYW1lcywgc3RhcnRGcmFtZSwgZW5kRnJhbWUpLCAwKTsKKyAgICAgICAgbV9j
b25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpBdWRpb0NhcHR1cmVTYW1wbGVNYW5hZ2VyOjpBdWRp
b1NhbXBsZXNBdmFpbGFibGUobV9pZCwgdGltZSwgbnVtYmVyT2ZGcmFtZXMsIHN0YXJ0RnJhbWUs
IGVuZEZyYW1lKSwgMCk7CiAgICAgfQogCiAgICAgdm9pZCB2aWRlb1NhbXBsZUF2YWlsYWJsZShN
ZWRpYVNhbXBsZSYgc2FtcGxlKSBmaW5hbApAQCAtMTgxLDcgKzE4Miw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZTsKICAgICAgICAgaWYgKHN0b3JhZ2Up
CiAgICAgICAgICAgICBzdG9yYWdlLT5jcmVhdGVIYW5kbGUoaGFuZGxlLCBTaGFyZWRNZW1vcnk6
OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKLSAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3Nh
Z2VzOjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6U3RvcmFnZUNoYW5nZWQobV9pZCwgaGFuZGxl
LCBtX2Rlc2NyaXB0aW9uLCBtX251bWJlck9mRnJhbWVzKSwgMCk7CisgICAgICAgIG1fY29ubmVj
dGlvbi0+c2VuZChNZXNzYWdlczo6QXVkaW9DYXB0dXJlU2FtcGxlTWFuYWdlcjo6U3RvcmFnZUNo
YW5nZWQobV9pZCwgaGFuZGxlLCBtX2Rlc2NyaXB0aW9uLCBtX251bWJlck9mRnJhbWVzKSwgMCk7
CiAgICAgfQogCiAgICAgYm9vbCBwcmV2ZW50U291cmNlRnJvbVN0b3BwaW5nKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDcxN2U4ZGY1
NWQyNjYyYWNlY2FhYWFkODIzNzM0ZTg5YWE1ZTkyMzEuLjk4N2JkNGZmNzI3NWJiOTRjY2JlZGMx
ZGU4NzEzZjM1ZTI5YWI3OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMTQyLDYgKzE0Miw3IEBACiAJCTBGQ0I0RTZDMThCQkYyNkEw
MDBGQ0ZDOSAvKiBXS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQ0I0RTZBMThCQkYyNkEwMDBGQ0ZDOSAvKiBX
S0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaCAqLzsgfTsKIAkJMEZEQ0Q3RjcxRDQ3RTkyQTAwOUYw
OEJDIC8qIExvZ0luaXRpYWxpemF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRkRDRDdGNjFENDdFOTJBMDA5RjA4QkMgLyogTG9nSW5pdGlhbGl6
YXRpb24uaCAqLzsgfTsKIAkJMEZGMjRBMkQxODc5RTRCQzAwM0FCRjBDIC8qIFJlbW90ZUxheWVy
VHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGMjRBMkIxODc5RTRCQzAwM0FCRjBDIC8q
IFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9
OworCQkwRkYyNEEyRDE4NzlFNEJDMDAzQUJGMEQgLyogQXVkaW9DYXB0dXJlU2FtcGxlTWFuYWdl
ck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRkYyNEEyQjE4NzlFNEJDMDAzQUJGMEQgLyogQXVkaW9DYXB0dXJlU2FtcGxl
TWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTBGRjI0QTJFMTg3OUU0QkMwMDNB
QkYwQyAvKiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRjI0QTJDMTg3OUU0QkMw
MDNBQkYwQyAvKiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXMuaCAqLzsg
fTsKIAkJMEZGMjY0QTAxQTFGRjlDQzAwMUZFNzU5IC8qIFJlbW90ZUxheWVyVHJlZVNjcm9sbGlu
Z1BlcmZvcm1hbmNlRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY3MDdDNzkxQTFGRUVBMzAwREE3QTQ1IC8qIFJlbW90ZUxheWVyVHJlZVNjcm9s
bGluZ1BlcmZvcm1hbmNlRGF0YS5oICovOyB9OwogCQkwRkZFRDk4RTIzQTMyMDBBMDBFRUY0NTkg
LyogV0tXZWJWaWV3SU9TLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRkZFRDk4QzIzQTMyMDA0MDBFRUY0NTkgLyogV0tXZWJWaWV3SU9TLmggKi87IH07
CkBAIC0yMjU4LDYgKzIyNTksNyBAQAogCQkwRkNCNEU2QjE4QkJGMjZBMDAwRkNGQzkgLyogV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBuYW1lID0gV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOyBwYXRoID0gaW9zL1dLQ29udGVu
dFZpZXdJbnRlcmFjdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZEQ0Q3
RjYxRDQ3RTkyQTAwOUYwOEJDIC8qIExvZ0luaXRpYWxpemF0aW9uLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IExvZ0luaXRpYWxpemF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGRjI0QTJCMTg3OUU0QkMwMDNBQkYwQyAvKiBSZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlUmVj
ZWl2ZXIuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BS
T0RVQ1RTX0RJUjsgfTsKKwkJMEZGMjRBMkIxODc5RTRCQzAwM0FCRjBEIC8qIEF1ZGlvQ2FwdHVy
ZVNhbXBsZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gQXVkaW9DYXB0dXJlU2FtcGxlTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5j
cHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL0F1ZGlvQ2FwdHVyZVNhbXBsZU1hbmFn
ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9
OwogCQkwRkYyNEEyQzE4NzlFNEJDMDAzQUJGMEMgLyogUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWFQcm94eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFJlbW90
ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlcy5oOyBwYXRoID0gRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0Mi9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXMuaDsgc291
cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJMEZGMjRBMkYxODc5RTRGRTAwM0FC
RjBDIC8qIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkubWVzc2FnZXMuaW4gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEZGRUQ5OEMyM0EzMjAwNDAwRUVGNDU5IC8qIFdLV2ViVmlld0lP
Uy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXS1dlYlZpZXdJT1MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTM0MjksNiArMzQzMSwxMSBAQAogCQk0MTU3ODUzMDIxMjc2QjZGMDBERDM4MDAg
LyogY29weS13ZWJjb250ZW50LXJlc291cmNlcy10by1wcml2YXRlLWhlYWRlcnMuc2ggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5z
aDsgcGF0aCA9ICJjb3B5LXdlYmNvbnRlbnQtcmVzb3VyY2VzLXRvLXByaXZhdGUtaGVhZGVycy5z
aCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNTdFNEFGMjBFMkVDOTgwMEE2QzBE
NyAvKiBjb20uZ29vZ2xlLm8xZGJyb3dzZXJwbHVnaW4uc2IgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gY29tLmdvb2dsZS5vMWRicm93c2VycGx1Z2luLnNiOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0MTU4NjQ5QTIzQkUwOTI0MDBBMEE2MUUgLyogUlRDRW5jb2RlcklkZW50aWZpZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUlRDRW5jb2RlcklkZW50aWZpZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE2ODRDNEQyNDY0M0JGQTAwMUNFOEVE
IC8qIEF1ZGlvQ2FwdHVyZVNhbXBsZU1hbmFnZXIubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gQXVkaW9DYXB0dXJlU2FtcGxlTWFuYWdlci5tZXNzYWdlcy5pbjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE2ODRDNEUyNDY0M0M4MTAwMUNFOEVEIC8qIEF1ZGlvQ2Fw
dHVyZVNhbXBsZU1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXVk
aW9DYXB0dXJlU2FtcGxlTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0
MTY4NEM0RjI0NjQzRDNGMDAxQ0U4RUQgLyogQXVkaW9DYXB0dXJlU2FtcGxlTWFuYWdlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdWRpb0NhcHR1cmVTYW1wbGVN
YW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE2ODRDNTAyNDY0NTBG
RDAwMUNFOEVEIC8qIFJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2UuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNjg0QzUxMjQ2NDUwRkQwMDFDRThFRCAvKiBS
ZW1vdGVSZWFsdGltZU1lZGlhU291cmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDE2Q0Q3NDUyM0ZCMTc4QjAwNjYxRDk5IC8qIE1ETlNSZWdpc3RlcklkZW50aWZpZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTUROU1JlZ2lzdGVySWRlbnRpZmll
ci5oOyBwYXRoID0gTmV0d29yay93ZWJydGMvTUROU1JlZ2lzdGVySWRlbnRpZmllci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTZGODA4NjI0NUIzOTc0MDBCNjhGMDIgLyogTGli
V2ViUlRDTmV0d29yay5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBMaWJXZWJS
VENOZXR3b3JrLm1lc3NhZ2VzLmluOyBwYXRoID0gTmV0d29yay93ZWJydGMvTGliV2ViUlRDTmV0
d29yay5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE2RjgwODky
NDVDN0ZGNTAwQjY4RjAyIC8qIExpYldlYlJUQ05ldHdvcmsuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gTGliV2ViUlRDTmV0d29yay5jcHA7IHBhdGggPSBOZXR3b3Jr
L3dlYnJ0Yy9MaWJXZWJSVENOZXR3b3JrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTgzNjYsMTEgKzgzNzMsMTYgQEAKIAkJN0M2RTcwRjgxOEIyRDQ3RTAwRjI0RTJFIC8qIGNv
Y29hICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk0MTY4
NEM0RjI0NjQzRDNGMDAxQ0U4RUQgLyogQXVkaW9DYXB0dXJlU2FtcGxlTWFuYWdlci5jcHAgKi8s
CisJCQkJNDE2ODRDNEUyNDY0M0M4MTAwMUNFOEVEIC8qIEF1ZGlvQ2FwdHVyZVNhbXBsZU1hbmFn
ZXIuaCAqLywKKwkJCQk0MTY4NEM0RDI0NjQzQkZBMDAxQ0U4RUQgLyogQXVkaW9DYXB0dXJlU2Ft
cGxlTWFuYWdlci5tZXNzYWdlcy5pbiAqLywKIAkJCQlDRDQ1NzBDQjI0NDBGQjJBMDBBM0RDRUIg
LyogQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3IuY3BwICovLAogCQkJCUNENDU3MENBMjQ0
MEZCMkEwMEEzRENFQiAvKiBBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvci5oICovLAogCQkJ
CUNEQTI5QTE5MUNCREJGNDEwMDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyLmggKi8s
CiAJCQkJQ0RBMjlBMUMxQ0JEQkY1QjAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXIu
bWVzc2FnZXMuaW4gKi8sCiAJCQkJQ0RBMjlBMTgxQ0JEQkY0MTAwOTAxQ0NGIC8qIFBsYXliYWNr
U2Vzc2lvbk1hbmFnZXIubW0gKi8sCisJCQkJNDE2ODRDNTAyNDY0NTBGRDAwMUNFOEVEIC8qIFJl
bW90ZVJlYWx0aW1lTWVkaWFTb3VyY2UuY3BwICovLAorCQkJCTQxNjg0QzUxMjQ2NDUwRkQwMDFD
RThFRCAvKiBSZW1vdGVSZWFsdGltZU1lZGlhU291cmNlLmggKi8sCiAJCQkJQ0Q0OTFCMDUxRTcw
RDA1RjAwMDA5MDY2IC8qIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcCAqLywKIAkJCQlDRDQ5
MUIwNjFFNzBEMDVGMDAwMDkwNjYgLyogVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuaCAqLywKIAkJ
CQlDRDQ5MUIwQTFFNzMyRDEyMDAwMDkwNjYgLyogVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIubWVz
c2FnZXMuaW4gKi8sCkBAIC05OTYwLDYgKzk5NzIsNyBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKIAkJCQkyRDdERUJFMjIxMjY5RTRCMDBCOUY3M0MgLyogdW5pZmllZC1z
b3VyY2VzICovLAorCQkJCTBGRjI0QTJCMTg3OUU0QkMwMDNBQkYwRCAvKiBBdWRpb0NhcHR1cmVT
YW1wbGVNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQlDRDQ1NzBEMDI0NDEwMTRB
MDBBM0RDRUIgLyogQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3JQcm94eU1lc3NhZ2VSZWNl
aXZlci5jcHAgKi8sCiAJCQkJQ0Q0NTcwRDEyNDQxMDE0QjAwQTNEQ0VCIC8qIEF1ZGlvU2Vzc2lv
blJvdXRpbmdBcmJpdHJhdG9yUHJveHlNZXNzYWdlcy5oICovLAogCQkJCUNENDU3MEQyMjQ0MTAx
NEIwMEEzRENFQiAvKiBBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5TWVzc2FnZXNS
ZXBsaWVzLmggKi8sCkBAIC0xMjY3Miw2ICsxMjY4NSw3IEBACiAJCQkJMkQ5MkE3N0IyMTJCNkE3
MTAwRjQ5M0ZEIC8qIEFyZ3VtZW50Q29kZXJzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJERUIx
RDJFMjEyNzQ3MzYwMDkzMzkwNiAvKiBBcmd1bWVudENvZGVyc0NGLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTJEOTJBNzdDMjEyQjZBNzEwMEY0OTNGRCAvKiBBdHRhY2htZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTBGRjI0QTJEMTg3OUU0QkMwMDNBQkYwRCAvKiBBdWRpb0NhcHR1cmVTYW1w
bGVNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNENDU3MEQ0
MjQ0MTFEMEYwMEEzRENFQiAvKiBBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlDRDdDRjM2MTI0NDRDQ0E2MDAzQkM0RDUgLyogQXVkaW9TZXNzaW9u
Um91dGluZ0FyYml0cmF0b3JQcm94eUNvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0Q0NTcw
RDMyNDQxMTNCNTAwQTNEQ0VCIC8qIEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yUHJveHlN
ZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvY29jb2EvQXVkaW9DYXB0dXJlU2FtcGxlTWFuYWdlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvQXVkaW9DYXB0dXJlU2FtcGxlTWFuYWdlci5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOGMxYTgwNDU1NDVjNDk2YWYyZGJmMTQyMWRmY2YzOWRkN2YxZWU5OAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9BdWRpb0NhcHR1
cmVTYW1wbGVNYW5hZ2VyLmNwcApAQCAtMCwwICsxLDEzNyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBdWRpb0NhcHR1cmVTYW1wbGVNYW5hZ2VyLmgiCisK
KyNpbmNsdWRlICJBdWRpb0NhcHR1cmVTYW1wbGVNYW5hZ2VyTWVzc2FnZXMuaCIKKyNpbmNsdWRl
ICJTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvV2ViQXVkaW9C
dWZmZXJMaXN0Lmg+CisKKyNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKE1FRElBX1NUUkVB
TSkKKworbmFtZXNwYWNlIFdlYktpdCB7Cit1c2luZyBuYW1lc3BhY2UgUEFMOwordXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CisKK0F1ZGlvQ2FwdHVyZVNhbXBsZU1hbmFnZXI6OkF1ZGlvQ2FwdHVy
ZVNhbXBsZU1hbmFnZXIoKQorICAgIDogbV9xdWV1ZShXb3JrUXVldWU6OmNyZWF0ZSgiV2ViS2l0
V2ViUlRDQXVkaW9Nb2R1bGUiLCBXb3JrUXVldWU6OlR5cGU6OlNlcmlhbCwgV29ya1F1ZXVlOjpR
T1M6OlVzZXJJbnRlcmFjdGl2ZSkpCit7Cit9CisKK0F1ZGlvQ2FwdHVyZVNhbXBsZU1hbmFnZXI6
On5BdWRpb0NhcHR1cmVTYW1wbGVNYW5hZ2VyKCkKK3sKKyAgICBzZXRDb25uZWN0aW9uKG51bGxw
dHIpOworfQorCit2b2lkIEF1ZGlvQ2FwdHVyZVNhbXBsZU1hbmFnZXI6OnNldENvbm5lY3Rpb24o
UmVmUHRyPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uKQoreworICAgIGlmIChtX2Nvbm5l
Y3Rpb24pCisgICAgICAgIG1fY29ubmVjdGlvbi0+cmVtb3ZlVGhyZWFkTWVzc2FnZVJlY2VpdmVy
KE1lc3NhZ2VzOjpBdWRpb0NhcHR1cmVTYW1wbGVNYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCkpOworCisgICAgbV9jb25uZWN0aW9uID0gV1RGTW92ZShjb25uZWN0aW9uKTsKKworICAgIGlm
IChtX2Nvbm5lY3Rpb24pCisgICAgICAgIG1fY29ubmVjdGlvbi0+YWRkVGhyZWFkTWVzc2FnZVJl
Y2VpdmVyKE1lc3NhZ2VzOjpBdWRpb0NhcHR1cmVTYW1wbGVNYW5hZ2VyOjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCksIHRoaXMpOworfQorCisKK3ZvaWQgQXVkaW9DYXB0dXJlU2FtcGxlTWFuYWdlcjo6
YWRkU291cmNlKFJlZjxSZW1vdGVSZWFsdGltZU1lZGlhU291cmNlPiYmIHNvdXJjZSkKK3sKKyAg
ICBkaXNwYXRjaFRvVGhyZWFkKFt0aGlzLCBzb3VyY2UgPSBXVEZNb3ZlKHNvdXJjZSldKCkgbXV0
YWJsZSB7CisgICAgICAgIGF1dG8gaWRlbnRpZmllciA9IHNvdXJjZS0+aWRlbnRpZmllcigpOwor
CisgICAgICAgIEFTU0VSVCghbV9zb3VyY2VzLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKKyAgICAg
ICAgUmVtb3RlQXVkaW8gcmVtb3RlQXVkaW8geyBXVEZNb3ZlKHNvdXJjZSksIHsgfSwgbWFrZVVu
aXF1ZTxDQVJpbmdCdWZmZXI+KG1ha2VVbmlxdWVSZWY8U2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2U+
KG51bGxwdHIpKSB9OworICAgICAgICBtX3NvdXJjZXMuYWRkKGlkZW50aWZpZXIsIG1ha2VVbmlx
dWU8UmVtb3RlQXVkaW8+KFdURk1vdmUocmVtb3RlQXVkaW8pKSk7CisgICAgfSk7Cit9CisKK3Zv
aWQgQXVkaW9DYXB0dXJlU2FtcGxlTWFuYWdlcjo6cmVtb3ZlU291cmNlKFdlYkNvcmU6OlJlYWx0
aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAgZGlzcGF0Y2hUb1Ro
cmVhZChbdGhpcywgaWRlbnRpZmllcl0geworICAgICAgICBBU1NFUlQobV9zb3VyY2VzLmNvbnRh
aW5zKGlkZW50aWZpZXIpKTsKKyAgICAgICAgbV9zb3VyY2VzLnJlbW92ZShpZGVudGlmaWVyKTsK
KyAgICB9KTsKK30KKwordm9pZCBBdWRpb0NhcHR1cmVTYW1wbGVNYW5hZ2VyOjpkaXNwYXRjaFRv
VGhyZWFkKEZ1bmN0aW9uPHZvaWQoKT4mJiBjYWxsYmFjaykKK3sKKyAgICBtX3F1ZXVlLT5kaXNw
YXRjaChXVEZNb3ZlKGNhbGxiYWNrKSk7Cit9CisKK3ZvaWQgQXVkaW9DYXB0dXJlU2FtcGxlTWFu
YWdlcjo6c3RvcmFnZUNoYW5nZWQoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZp
ZXIgaWRlbnRpZmllciwgY29uc3QgU2hhcmVkTWVtb3J5OjpIYW5kbGUmIGhhbmRsZSwgY29uc3Qg
V2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgdWludDY0X3Qg
bnVtYmVyT2ZGcmFtZXMpCit7CisgICAgQVNTRVJUKCFXVEY6OmlzTWFpblJ1bkxvb3AoKSk7CisK
KyAgICBhdXRvIGl0ZXJhdG9yID0gbV9zb3VyY2VzLmZpbmQoaWRlbnRpZmllcik7CisgICAgaWYg
KGl0ZXJhdG9yID09IG1fc291cmNlcy5lbmQoKSkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJP
UihXZWJSVEMsICJVbmFibGUgdG8gZmluZCBzb3VyY2UgJWxsdSBmb3Igc3RvcmFnZUNoYW5nZWQi
LCBpZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGF1
dG8mIHNvdXJjZSA9ICppdGVyYXRvci0+dmFsdWU7CisgICAgc291cmNlLmRlc2NyaXB0aW9uID0g
ZGVzY3JpcHRpb247CisKKyAgICBSZWZQdHI8U2hhcmVkTWVtb3J5PiBtZW1vcnk7CisgICAgaWYg
KCFoYW5kbGUuaXNOdWxsKCkpIHsKKyAgICAgICAgbWVtb3J5ID0gU2hhcmVkTWVtb3J5OjptYXAo
aGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKKyAgICAgICAgUkVM
RUFTRV9MT0dfRVJST1JfSUYoIW1lbW9yeSwgV2ViUlRDLCAiVW5hYmxlIHRvIGNyZWF0ZSBzaGFy
ZWQgbWVtb3J5IGZvciBhdWRpbyBzb3VyY2UgJWxsdSIsIGlkZW50aWZpZXIudG9VSW50NjQoKSk7
CisgICAgfQorCisgICAgYXV0byYgc3RvcmFnZSA9IHN0YXRpY19jYXN0PFNoYXJlZFJpbmdCdWZm
ZXJTdG9yYWdlJj4oc291cmNlLnJpbmdCdWZmZXItPnN0b3JhZ2UoKSk7CisgICAgaWYgKCFtZW1v
cnkpIHsKKyAgICAgICAgc291cmNlLnJpbmdCdWZmZXItPmRlYWxsb2NhdGUoKTsKKyAgICAgICAg
c3RvcmFnZS5zZXRSZWFkT25seShmYWxzZSk7CisgICAgICAgIHN0b3JhZ2Uuc2V0U3RvcmFnZShu
dWxscHRyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHN0b3JhZ2Uuc2V0U3RvcmFn
ZShtZW1vcnkucmVsZWFzZU5vbk51bGwoKSk7CisgICAgc3RvcmFnZS5zZXRSZWFkT25seSh0cnVl
KTsKKyAgICBzb3VyY2UucmluZ0J1ZmZlci0+YWxsb2NhdGUoZGVzY3JpcHRpb24sIG51bWJlck9m
RnJhbWVzKTsKK30KKwordm9pZCBBdWRpb0NhcHR1cmVTYW1wbGVNYW5hZ2VyOjphdWRpb1NhbXBs
ZXNBdmFpbGFibGUoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIgaWRlbnRp
ZmllciwgTWVkaWFUaW1lIHRpbWUsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzLCB1aW50NjRfdCBz
dGFydEZyYW1lLCB1aW50NjRfdCBlbmRGcmFtZSkKK3sKKyAgICBBU1NFUlQoIVdURjo6aXNNYWlu
UnVuTG9vcCgpKTsKKworICAgIGF1dG8gaXRlcmF0b3IgPSBtX3NvdXJjZXMuZmluZChpZGVudGlm
aWVyKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9zb3VyY2VzLmVuZCgpKSB7CisgICAgICAgIFJF
TEVBU0VfTE9HX0VSUk9SKFdlYlJUQywgIlVuYWJsZSB0byBmaW5kIHNvdXJjZSAlbGx1IGZvciBh
dWRpb1NhbXBsZXNBdmFpbGFibGUiLCBpZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIGF1dG8mIHNvdXJjZSA9ICppdGVyYXRvci0+dmFsdWU7CisKKyAg
ICBXZWJBdWRpb0J1ZmZlckxpc3QgYXVkaW9EYXRhKHNvdXJjZS5kZXNjcmlwdGlvbiwgbnVtYmVy
T2ZGcmFtZXMpOworCisgICAgc291cmNlLnJpbmdCdWZmZXItPnNldEN1cnJlbnRGcmFtZUJvdW5k
cyhzdGFydEZyYW1lLCBlbmRGcmFtZSk7CisgICAgc291cmNlLnJpbmdCdWZmZXItPmZldGNoKGF1
ZGlvRGF0YS5saXN0KCksIG51bWJlck9mRnJhbWVzLCB0aW1lLnRpbWVWYWx1ZSgpKTsKKworICAg
IHNvdXJjZS5yZWFsdGltZU1lZGlhU291cmNlLT5yZW1vdGVBdWRpb1NhbXBsZXNBdmFpbGFibGUo
dGltZSwgYXVkaW9EYXRhLCBzb3VyY2UuZGVzY3JpcHRpb24sIG51bWJlck9mRnJhbWVzKTsKK30K
KworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2Nv
YS9BdWRpb0NhcHR1cmVTYW1wbGVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
Y29jb2EvQXVkaW9DYXB0dXJlU2FtcGxlTWFuYWdlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJiNjUwMGM2YTYz
NTRmZmViMDExZTg5MzUwZjYwNDY5MjAwODE2NTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvQXVkaW9DYXB0dXJlU2FtcGxlTWFuYWdlci5oCkBAIC0w
LDAgKzEsNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIFBMQVRGT1JNKENP
Q09BKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgor
I2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIlJlbW90ZVJlYWx0aW1lTWVk
aWFTb3VyY2UuaCIKKyNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L0NBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ0FSaW5nQnVm
ZmVyLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvV29ya1F1ZXVl
Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBBdWRpb0NhcHR1cmVTYW1wbGVNYW5h
Z2VyIDogcHVibGljIElQQzo6Q29ubmVjdGlvbjo6VGhyZWFkTWVzc2FnZVJlY2VpdmVyIHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBBdWRpb0NhcHR1cmVTYW1w
bGVNYW5hZ2VyKCk7CisgICAgfkF1ZGlvQ2FwdHVyZVNhbXBsZU1hbmFnZXIoKTsKKworICAgIHZv
aWQgYWRkU291cmNlKFJlZjxSZW1vdGVSZWFsdGltZU1lZGlhU291cmNlPiYmKTsKKyAgICB2b2lk
IHJlbW92ZVNvdXJjZShXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllcik7CisK
KyAgICBib29sIGhhc0Nvbm5lY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2Nvbm5lY3Rpb247IH0K
KyAgICB2b2lkIHNldENvbm5lY3Rpb24oUmVmUHRyPElQQzo6Q29ubmVjdGlvbj4mJik7CisKKyAg
ICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYp
OworCitwcml2YXRlOgorICAgIC8vIElQQzo6Q29ubmVjdGlvbjo6VGhyZWFkTWVzc2FnZVJlY2Vp
dmVyCisgICAgdm9pZCBkaXNwYXRjaFRvVGhyZWFkKEZ1bmN0aW9uPHZvaWQoKT4mJikgZmluYWw7
CisKKyAgICB2b2lkIHN0b3JhZ2VDaGFuZ2VkKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VJ
ZGVudGlmaWVyLCBjb25zdCBTaGFyZWRNZW1vcnk6OkhhbmRsZSYsIGNvbnN0IFdlYkNvcmU6OkNB
QXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKTsKKyAgICB2
b2lkIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRl
bnRpZmllciwgTWVkaWFUaW1lLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcywgdWludDY0X3Qgc3Rh
cnRGcmFtZSwgdWludDY0X3QgZW5kRnJhbWUpOworCisgICAgc3RydWN0IFJlbW90ZUF1ZGlvIHsK
KyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgcHVibGljOgorICAgICAgICBS
ZWY8UmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZT4gcmVhbHRpbWVNZWRpYVNvdXJjZTsKKyAgICAg
ICAgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uIGRlc2NyaXB0aW9uOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6Q0FSaW5nQnVmZmVyPiByaW5nQnVmZmVyOworICAg
IH07CisKKyAgICBSZWY8V29ya1F1ZXVlPiBtX3F1ZXVlOworICAgIFJlZlB0cjxJUEM6OkNvbm5l
Y3Rpb24+IG1fY29ubmVjdGlvbjsKKworICAgIC8vIGJhY2tncm91bmQgdGhyZWFkIG1lbWJlcgor
ICAgIEhhc2hNYXA8V2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIsIHN0ZDo6
dW5pcXVlX3B0cjxSZW1vdGVBdWRpbz4+IG1fc291cmNlczsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9j
b2NvYS9BdWRpb0NhcHR1cmVTYW1wbGVNYW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL2NvY29hL0F1ZGlvQ2FwdHVyZVNhbXBsZU1hbmFnZXIubWVzc2FnZXMuaW4K
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOTJiOGJjZDg4MjZkMjZhZmE1MDc1OWFmNzNmN2M4NTAyN2ZlMzdiMgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9BdWRpb0NhcHR1
cmVTYW1wbGVNYW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzEgQEAKKyMgQ29weXJpZ2h0
IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCitt
ZXNzYWdlcyAtPiBBdWRpb0NhcHR1cmVTYW1wbGVNYW5hZ2VyIE5vdFJlZkNvdW50ZWQgeworICAg
IFN0b3JhZ2VDaGFuZ2VkKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyIGlk
LCBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SGFuZGxlIHN0b3JhZ2VIYW5kbGUsIFdlYkNvcmU6OkNB
QXVkaW9TdHJlYW1EZXNjcmlwdGlvbiBkZXNjcmlwdGlvbiwgdWludDY0X3QgbnVtYmVyT2ZGcmFt
ZXMpCisgICAgQXVkaW9TYW1wbGVzQXZhaWxhYmxlKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3Vy
Y2VJZGVudGlmaWVyIGlkLCBNZWRpYVRpbWUgdGltZSwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMs
IHVpbnQ2NF90IHN0YXJ0RnJhbWUsIHVpbnQ2NF90IGVuZEZyYW1lKQorfQorCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVSZWFsdGltZU1l
ZGlhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVSZWFs
dGltZU1lZGlhU291cmNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZjI3YjU4NjA4YmE5MWZhZGU3Y2MyMjU2
NGIzOGE2M2ZjMzRjMmY5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL2NvY29hL1JlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCkBAIC0wLDAgKzEsMjM4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZVJlYWx0
aW1lTWVkaWFTb3VyY2UuaCIKKworI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoTUVESUFf
U1RSRUFNKQorCisjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJT
aGFyZWRSaW5nQnVmZmVyU3RvcmFnZS5oIgorI2luY2x1ZGUgIlVzZXJNZWRpYUNhcHR1cmVNYW5h
Z2VyLmgiCisjaW5jbHVkZSAiVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJNZXNzYWdlcy5oIgorI2lu
Y2x1ZGUgIlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUg
IldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlVHJhbnNmZXJTZXNzaW9uVlQu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL1JlbW90ZVZpZGVvU2FtcGxlLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9XZWJBdWRpb0J1ZmZlckxpc3QuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7Cit1c2luZyBu
YW1lc3BhY2UgUEFMOwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1JlbW90ZVJlYWx0aW1l
TWVkaWFTb3VyY2U6OlJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2UoUmVhbHRpbWVNZWRpYVNvdXJj
ZUlkZW50aWZpZXIgaWRlbnRpZmllciwgVHlwZSB0eXBlLCBDYXB0dXJlRGV2aWNlOjpEZXZpY2VU
eXBlIGRldmljZVR5cGUsIFN0cmluZyYmIG5hbWUsIFN0cmluZyYmIGhhc2hTYWx0LCBVc2VyTWVk
aWFDYXB0dXJlTWFuYWdlciYgbWFuYWdlcikKKyAgICA6IFJlYWx0aW1lTWVkaWFTb3VyY2UodHlw
ZSwgV1RGTW92ZShuYW1lKSwgU3RyaW5nOjpudW1iZXIoaWRlbnRpZmllci50b1VJbnQ2NCgpKSwg
V1RGTW92ZShoYXNoU2FsdCkpCisgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKKyAgICAs
IG1fbWFuYWdlcihtYW5hZ2VyKQorICAgICwgbV9kZXZpY2VUeXBlKGRldmljZVR5cGUpCit7Cisg
ICAgc3dpdGNoIChtX2RldmljZVR5cGUpIHsKKyAgICBjYXNlIENhcHR1cmVEZXZpY2U6OkRldmlj
ZVR5cGU6Ok1pY3JvcGhvbmU6CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICAgICAgUmVh
bHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xldG9uKCkuYXVkaW9DYXB0dXJlRmFjdG9yeSgp
LnNldEFjdGl2ZVNvdXJjZSgqdGhpcyk7CisjZW5kaWYKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpDYW1lcmE6CisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKKyAgICAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xldG9uKCkudmlk
ZW9DYXB0dXJlRmFjdG9yeSgpLnNldEFjdGl2ZVNvdXJjZSgqdGhpcyk7CisjZW5kaWYKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpTY3JlZW46Cisg
ICAgY2FzZSBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpXaW5kb3c6CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6VW5rbm93bjoKKyAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorfQorCitSZW1vdGVSZWFsdGltZU1lZGlhU291
cmNlOjp+UmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZSgpCit7CisgICAgc3dpdGNoIChtX2Rldmlj
ZVR5cGUpIHsKKyAgICBjYXNlIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6Ok1pY3JvcGhvbmU6
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZUNl
bnRlcjo6c2luZ2xldG9uKCkuYXVkaW9DYXB0dXJlRmFjdG9yeSgpLnVuc2V0QWN0aXZlU291cmNl
KCp0aGlzKTsKKyNlbmRpZgorICAgICAgICBicmVhazsKKyAgICBjYXNlIENhcHR1cmVEZXZpY2U6
OkRldmljZVR5cGU6OkNhbWVyYToKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgICAgICBS
ZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS52aWRlb0NhcHR1cmVGYWN0b3J5
KCkudW5zZXRBY3RpdmVTb3VyY2UoKnRoaXMpOworI2VuZGlmCisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6U2NyZWVuOgorICAgIGNhc2UgQ2FwdHVy
ZURldmljZTo6RGV2aWNlVHlwZTo6V2luZG93OgorICAgICAgICBicmVhazsKKyAgICBjYXNlIENh
cHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OlVua25vd246CisgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIH0KK30KKwordm9pZCBSZW1vdGVSZWFsdGltZU1lZGlhU291cmNlOjp3aGVu
UmVhZHkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcpPiYmIGNhbGxiYWNrKQoreworICAg
IGlmIChtX2lzUmVhZHkpCisgICAgICAgIHJldHVybiBjYWxsYmFjayhXVEZNb3ZlKG1fZXJyb3JN
ZXNzYWdlKSk7CisgICAgbV9jYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOworfQorCit2b2lk
IFJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2U6OmRpZEZhaWwoU3RyaW5nJiYgZXJyb3JNZXNzYWdl
KQoreworICAgIG1faXNSZWFkeSA9IHRydWU7CisgICAgbV9lcnJvck1lc3NhZ2UgPSBXVEZNb3Zl
KGVycm9yTWVzc2FnZSk7CisgICAgaWYgKG1fY2FsbGJhY2spCisgICAgICAgIG1fY2FsbGJhY2so
bV9lcnJvck1lc3NhZ2UpOworfQorCit2b2lkIFJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2U6OnNl
dEFzUmVhZHkoKQoreworICAgIG1faXNSZWFkeSA9IHRydWU7CisgICAgaWYgKG1fY2FsbGJhY2sp
CisgICAgICAgIG1fY2FsbGJhY2soeyB9KTsKK30KKworUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+
IFJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2U6OmNsb25lKCkKK3sKKyAgICByZXR1cm4gbV9tYW5h
Z2VyLmNsb25lU291cmNlKCp0aGlzKTsKK30KKwordm9pZCBSZW1vdGVSZWFsdGltZU1lZGlhU291
cmNlOjpzZXRDYXBhYmlsaXRpZXMoUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYmIGNh
cGFiaWxpdGllcykKK3sKKyAgICBtX2NhcGFiaWxpdGllcyA9IFdURk1vdmUoY2FwYWJpbGl0aWVz
KTsKK30KKwordm9pZCBSZW1vdGVSZWFsdGltZU1lZGlhU291cmNlOjpzZXRTZXR0aW5ncyhSZWFs
dGltZU1lZGlhU291cmNlU2V0dGluZ3MmJiBzZXR0aW5ncykKK3sKKyAgICBhdXRvIGNoYW5nZWQg
PSBtX3NldHRpbmdzLmRpZmZlcmVuY2Uoc2V0dGluZ3MpOworICAgIG1fc2V0dGluZ3MgPSBXVEZN
b3ZlKHNldHRpbmdzKTsKKyAgICBub3RpZnlTZXR0aW5nc0RpZENoYW5nZU9ic2VydmVycyhjaGFu
Z2VkKTsKK30KKwordm9pZCBSZW1vdGVSZWFsdGltZU1lZGlhU291cmNlOjpyZW1vdGVBdWRpb1Nh
bXBsZXNBdmFpbGFibGUoY29uc3QgV1RGOjpNZWRpYVRpbWUmIHRpbWUsIGNvbnN0IFBsYXRmb3Jt
QXVkaW9EYXRhJiBkYXRhLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlwdGlv
biwgc2l6ZV90IHNpemUpCit7CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisgICAgYXVk
aW9TYW1wbGVzQXZhaWxhYmxlKHRpbWUsIGRhdGEsIGRlc2NyaXB0aW9uLCBzaXplKTsKK30KKwor
dm9pZCBSZW1vdGVSZWFsdGltZU1lZGlhU291cmNlOjpyZW1vdGVWaWRlb1NhbXBsZUF2YWlsYWJs
ZShSZW1vdGVWaWRlb1NhbXBsZSYmIHJlbW90ZVNhbXBsZSkKK3sKKyAgICBBU1NFUlQodHlwZSgp
ID09IFR5cGU6OlZpZGVvKTsKKworICAgIHNldEludHJpbnNpY1NpemUocmVtb3RlU2FtcGxlLnNp
emUoKSk7CisKKyAgICBpZiAoIW1faW1hZ2VUcmFuc2ZlclNlc3Npb24gfHwgbV9pbWFnZVRyYW5z
ZmVyU2Vzc2lvbi0+cGl4ZWxGb3JtYXQoKSAhPSByZW1vdGVTYW1wbGUudmlkZW9Gb3JtYXQoKSkK
KyAgICAgICAgbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbiA9IEltYWdlVHJhbnNmZXJTZXNzaW9uVlQ6
OmNyZWF0ZShyZW1vdGVTYW1wbGUudmlkZW9Gb3JtYXQoKSk7CisKKyAgICBpZiAoIW1faW1hZ2VU
cmFuc2ZlclNlc3Npb24pIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIHNhbXBsZVJlZiA9IG1faW1hZ2VUcmFuc2ZlclNl
c3Npb24tPmNyZWF0ZU1lZGlhU2FtcGxlKHJlbW90ZVNhbXBsZSk7CisgICAgaWYgKCFzYW1wbGVS
ZWYpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBSZWFsdGltZU1lZGlhU291cmNlOjp2aWRlb1NhbXBsZUF2YWlsYWJsZSgqc2Ft
cGxlUmVmKTsKK30KKworSVBDOjpDb25uZWN0aW9uKiBSZW1vdGVSZWFsdGltZU1lZGlhU291cmNl
Ojpjb25uZWN0aW9uKCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykKKyAgICBpZiAobV9zaG91bGRDYXB0dXJlSW5HUFVQcm9jZXNzKQorICAg
ICAgICByZXR1cm4gJldlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25u
ZWN0aW9uKCkuY29ubmVjdGlvbigpOworI2VuZGlmCisgICAgcmV0dXJuIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCk7Cit9CisKK3ZvaWQgUmVtb3RlUmVh
bHRpbWVNZWRpYVNvdXJjZTo6c3RhcnRQcm9kdWNpbmdEYXRhKCkKK3sKKyAgICBjb25uZWN0aW9u
KCktPnNlbmQoTWVzc2FnZXM6OlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6OlN0YXJ0UHJv
ZHVjaW5nRGF0YSB7IG1faWRlbnRpZmllciB9LCAwKTsKK30KKwordm9pZCBSZW1vdGVSZWFsdGlt
ZU1lZGlhU291cmNlOjpzdG9wUHJvZHVjaW5nRGF0YSgpCit7CisgICAgY29ubmVjdGlvbigpLT5z
ZW5kKE1lc3NhZ2VzOjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5OjpTdG9wUHJvZHVjaW5n
RGF0YSB7IG1faWRlbnRpZmllciB9LCAwKTsKK30KKworYm9vbCBSZW1vdGVSZWFsdGltZU1lZGlh
U291cmNlOjpzZXRTaG91bGRBcHBseVJvdGF0aW9uKGJvb2wgc2hvdWxkQXBwbHlSb3RhdGlvbikK
K3sKKyAgICBjb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlVzZXJNZWRpYUNhcHR1cmVNYW5h
Z2VyUHJveHk6OlNldFNob3VsZEFwcGx5Um90YXRpb24geyBtX2lkZW50aWZpZXIsIHNob3VsZEFw
cGx5Um90YXRpb24gfSwgMCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2NvbnN0IFdlYkNvcmU6
OlJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmIFJlbW90ZVJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OmNhcGFiaWxpdGllcygpCit7CisgICAgcmV0dXJuIG1fY2FwYWJpbGl0aWVzOworfQorCit2
b2lkIFJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2U6OmFwcGx5Q29uc3RyYWludHMoY29uc3QgV2Vi
Q29yZTo6TWVkaWFDb25zdHJhaW50cyYgY29uc3RyYWludHMsIEFwcGx5Q29uc3RyYWludHNIYW5k
bGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgbV9wZW5kaW5nQXBwbHlDb25zdHJhaW50
c0NhbGxiYWNrcy5hcHBlbmQoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIC8vIEZJ
WE1FOiBVc2Ugc2VuZEFzeW5jV2l0aFJlcGx5LgorICAgIGNvbm5lY3Rpb24oKS0+c2VuZChNZXNz
YWdlczo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTo6QXBwbHlDb25zdHJhaW50cyB7IG1f
aWRlbnRpZmllciwgY29uc3RyYWludHMgfSwgMCk7Cit9CisKK3ZvaWQgUmVtb3RlUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6YXBwbHlDb25zdHJhaW50c1N1Y2NlZWRlZChjb25zdCBXZWJDb3JlOjpSZWFs
dGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdzKQoreworICAgIHNldFNldHRpbmdzKFdl
YkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyhzZXR0aW5ncykpOworCisgICAgYXV0
byBjYWxsYmFjayA9IG1fcGVuZGluZ0FwcGx5Q29uc3RyYWludHNDYWxsYmFja3MudGFrZUZpcnN0
KCk7CisgICAgY2FsbGJhY2soeyB9KTsKK30KKwordm9pZCBSZW1vdGVSZWFsdGltZU1lZGlhU291
cmNlOjphcHBseUNvbnN0cmFpbnRzRmFpbGVkKFN0cmluZyYmIGZhaWxlZENvbnN0cmFpbnQsIFN0
cmluZyYmIGVycm9yTWVzc2FnZSkKK3sKKyAgICBhdXRvIGNhbGxiYWNrID0gbV9wZW5kaW5nQXBw
bHlDb25zdHJhaW50c0NhbGxiYWNrcy50YWtlRmlyc3QoKTsKKyAgICBjYWxsYmFjayhBcHBseUNv
bnN0cmFpbnRzRXJyb3IgeyBXVEZNb3ZlKGZhaWxlZENvbnN0cmFpbnQpLCBXVEZNb3ZlKGVycm9y
TWVzc2FnZSkgfSk7Cit9CisKK3ZvaWQgUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZTo6aGFzRW5k
ZWQoKQoreworICAgIGNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6VXNlck1lZGlhQ2FwdHVy
ZU1hbmFnZXJQcm94eTo6RW5kIHsgbV9pZGVudGlmaWVyIH0sIDApOworICAgIG1fbWFuYWdlci5z
b3VyY2VFbmRlZChtX2lkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZVJlYWx0aW1lTWVkaWFT
b3VyY2U6OnN0b3BCZWluZ09ic2VydmVkKCkKK3sKKyAgICBjb25uZWN0aW9uKCktPnNlbmQoTWVz
c2FnZXM6OlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6OlJlcXVlc3RUb0VuZCB7IG1faWRl
bnRpZmllciB9LCAwKTsKK30KKwordm9pZCBSZW1vdGVSZWFsdGltZU1lZGlhU291cmNlOjpyZXF1
ZXN0VG9FbmQoT2JzZXJ2ZXImIG9ic2VydmVyKQoreworICAgIHN3aXRjaCAodHlwZSgpKSB7Cisg
ICAgY2FzZSBUeXBlOjpBdWRpbzoKKyAgICAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZTo6cmVxdWVz
dFRvRW5kKG9ic2VydmVyKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUeXBlOjpWaWRlbzoK
KyAgICAgICAgc3RvcEJlaW5nT2JzZXJ2ZWQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBU
eXBlOjpOb25lOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9Cit9CisKK30K
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVt
b3RlUmVhbHRpbWVNZWRpYVNvdXJjZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29h
L1JlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOTQ4MDdjYzZkZmM3NDQ1
YThiMjU3ZTk1NGY0NTc3NDY3ZWY5YjkxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2UuaApAQCAtMCwwICsx
LDEwOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgUExBVEZPUk0oQ09DT0Ep
ICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlIDxXZWJDb3JlL0NhcHR1cmVEZXZp
Y2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1JlYWx0aW1lTWVkaWFTb3VyY2UuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1JlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKK2NsYXNzIENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbjsKK2NsYXNzIEltYWdlVHJh
bnNmZXJTZXNzaW9uVlQ7CitjbGFzcyBSZW1vdGVWaWRlb1NhbXBsZTsKK30KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2NsYXNzIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOworCitjbGFzcyBSZW1v
dGVSZWFsdGltZU1lZGlhU291cmNlIDogcHVibGljIFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3Vy
Y2UgeworcHVibGljOgorICAgIFJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2UoV2ViQ29yZTo6UmVh
bHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIsIFR5cGUsIFdlYkNvcmU6OkNhcHR1cmVEZXZpY2U6
OkRldmljZVR5cGUsIFN0cmluZyYmIG5hbWUsIFN0cmluZyYmIGhhc2hTYWx0LCBVc2VyTWVkaWFD
YXB0dXJlTWFuYWdlciYpOworICAgIH5SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlKCk7CisKKyAg
ICB2b2lkIHdoZW5SZWFkeShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyk+JiYpIGZpbmFs
OworICAgIHZvaWQgZGlkRmFpbChTdHJpbmcmJiBlcnJvck1lc3NhZ2UpOworICAgIHZvaWQgc2V0
QXNSZWFkeSgpOworICAgIFJlZjxSZWFsdGltZU1lZGlhU291cmNlPiBjbG9uZSgpIGZpbmFsOwor
ICAgIFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBj
b25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKyAgICBjb25zdCBXZWJDb3JlOjpSZWFsdGlt
ZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdzKCkgY29uc3QgeyByZXR1cm4gbV9zZXR0aW5n
czsgfQorICAgIGNvbnN0IFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMm
IGNhcGFiaWxpdGllcygpIGZpbmFsOworICAgIHZvaWQgc2V0Q2FwYWJpbGl0aWVzKFdlYkNvcmU6
OlJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmJik7CisKKyAgICBjb25zdCBXZWJDb3Jl
OjpSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdzKCkgZmluYWwgeyByZXR1cm4g
bV9zZXR0aW5nczsgfQorICAgIHZvaWQgc2V0U2V0dGluZ3MoV2ViQ29yZTo6UmVhbHRpbWVNZWRp
YVNvdXJjZVNldHRpbmdzJiYpOworCisgICAgV2ViQ29yZTo6Q2FwdHVyZURldmljZTo6RGV2aWNl
VHlwZSBkZXZpY2VUeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9kZXZpY2VUeXBlOyB9CisK
KyAgICB2b2lkIHNldFNob3VsZENhcHR1cmVJbkdQVVByb2Nlc3MoYm9vbCB2YWx1ZSkgeyBtX3No
b3VsZENhcHR1cmVJbkdQVVByb2Nlc3MgPSB2YWx1ZTsgfQorICAgIGJvb2wgc2hvdWxkQ2FwdHVy
ZUluR1BVUHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkQ2FwdHVyZUluR1BVUHJvY2Vz
czsgfQorCisgICAgSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uKCk7CisKKyAgICB2b2lkIGhh
c0VuZGVkKCkgZmluYWw7CisKKyAgICB2b2lkIHJlbW90ZVZpZGVvU2FtcGxlQXZhaWxhYmxlKFdl
YkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYpOworICAgIHZvaWQgcmVtb3RlQXVkaW9TYW1wbGVz
QXZhaWxhYmxlKGNvbnN0IFdURjo6TWVkaWFUaW1lJiwgY29uc3QgV2ViQ29yZTo6UGxhdGZvcm1B
dWRpb0RhdGEmLCBjb25zdCBXZWJDb3JlOjpBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgc2l6ZV90
KTsKKworICAgIHZvaWQgYXBwbHlDb25zdHJhaW50c1N1Y2NlZWRlZChjb25zdCBXZWJDb3JlOjpS
ZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmKTsKKyAgICB2b2lkIGFwcGx5Q29uc3RyYWludHNG
YWlsZWQoU3RyaW5nJiYgZmFpbGVkQ29uc3RyYWludCwgU3RyaW5nJiYgZXJyb3JNZXNzYWdlKTsK
KworICAgIGZyaWVuZCBjbGFzcyBBdWRpb0NhcHR1cmVTYW1wbGVNYW5hZ2VyOworICAgIGZyaWVu
ZCBjbGFzcyBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjsKKworcHJpdmF0ZToKKyAgICAvLyBSZWFs
dGltZU1lZGlhU291cmNlCisgICAgdm9pZCBzdGFydFByb2R1Y2luZ0RhdGEoKSBmaW5hbDsKKyAg
ICB2b2lkIHN0b3BQcm9kdWNpbmdEYXRhKCkgZmluYWw7CisgICAgYm9vbCBpc0NhcHR1cmVTb3Vy
Y2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisgICAgdm9pZCBiZWdpbkNvbmZpZ3Vy
YXRpb24oKSBmaW5hbCB7IH0KKyAgICB2b2lkIGNvbW1pdENvbmZpZ3VyYXRpb24oKSBmaW5hbCB7
IH0KKyAgICBib29sIHNldFNob3VsZEFwcGx5Um90YXRpb24oYm9vbCAvKiBzaG91bGRBcHBseVJv
dGF0aW9uICovKSBmaW5hbDsKKyAgICB2b2lkIGFwcGx5Q29uc3RyYWludHMoY29uc3QgV2ViQ29y
ZTo6TWVkaWFDb25zdHJhaW50cyYsIEFwcGx5Q29uc3RyYWludHNIYW5kbGVyJiYpIGZpbmFsOwor
ICAgIHZvaWQgcmVxdWVzdFRvRW5kKE9ic2VydmVyJikgZmluYWw7CisgICAgdm9pZCBzdG9wQmVp
bmdPYnNlcnZlZCgpIGZpbmFsOworCisgICAgV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUlk
ZW50aWZpZXIgbV9pZGVudGlmaWVyOworICAgIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyJiBtX21h
bmFnZXI7CisgICAgV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyBtX2Nh
cGFiaWxpdGllczsKKyAgICBXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MgbV9z
ZXR0aW5nczsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJbWFnZVRyYW5zZmVyU2Vz
c2lvblZUPiBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uOworICAgIFdlYkNvcmU6OkNhcHR1cmVEZXZp
Y2U6OkRldmljZVR5cGUgbV9kZXZpY2VUeXBlIHsgV2ViQ29yZTo6Q2FwdHVyZURldmljZTo6RGV2
aWNlVHlwZTo6VW5rbm93biB9OworCisgICAgRGVxdWU8QXBwbHlDb25zdHJhaW50c0hhbmRsZXI+
IG1fcGVuZGluZ0FwcGx5Q29uc3RyYWludHNDYWxsYmFja3M7CisgICAgYm9vbCBtX3Nob3VsZENh
cHR1cmVJbkdQVVByb2Nlc3MgeyBmYWxzZSB9OworICAgIGJvb2wgbV9pc1JlYWR5IHsgZmFsc2Ug
fTsKKyAgICBTdHJpbmcgbV9lcnJvck1lc3NhZ2U7CisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChTdHJpbmcpPiBtX2NhbGxiYWNrOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRp
YUNhcHR1cmVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9Vc2Vy
TWVkaWFDYXB0dXJlTWFuYWdlci5jcHAKaW5kZXggNjM3ZWU5MTg2YTYxNjljNzJiNDNlNTcyODNk
ZjE1YTExZmE1YjRjNi4uZTcxNTQ4YTA0ZGNjNzIxMjg3OTQ3NzAyM2RkMmYzMjFmYjc0MjVjYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1
cmVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVXNlck1l
ZGlhQ2FwdHVyZU1hbmFnZXIuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAKICNpbmNsdWRlICJBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5oIgogI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0
aW9uLmgiCi0jaW5jbHVkZSAiU2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2UuaCIKKyNpbmNsdWRlICJS
ZW1vdGVSZWFsdGltZU1lZGlhU291cmNlLmgiCiAjaW5jbHVkZSAiVXNlck1lZGlhQ2FwdHVyZU1h
bmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHlN
ZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgpAQCAtMzgsMTIg
KzM4LDkgQEAKICNpbmNsdWRlICJXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5j
bHVkZSA8V2ViQ29yZS9DYXB0dXJlRGV2aWNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EZXByZWNh
dGVkR2xvYmFsU2V0dGluZ3MuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlVHJhbnNmZXJTZXNz
aW9uVlQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhQ29uc3RyYWludHMuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9SZW1v
dGVWaWRlb1NhbXBsZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvV2ViQXVkaW9CdWZmZXJMaXN0Lmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9XZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5oPgogI2lu
Y2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAKQEAgLTUxLDIyNSArNDgsNiBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBQQUw7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IAotY2xhc3MgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OlNvdXJjZSA6IHB1YmxpYyBSZWFsdGlt
ZU1lZGlhU291cmNlIHsKLXB1YmxpYzoKLSAgICBTb3VyY2UoU3RyaW5nJiYgc291cmNlSUQsIFR5
cGUgdHlwZSwgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZSBkZXZpY2VUeXBlLCBTdHJpbmcmJiBu
YW1lLCBTdHJpbmcmJiBoYXNoU2FsdCwgUmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIgaWQs
IFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyJiBtYW5hZ2VyKQotICAgICAgICA6IFJlYWx0aW1lTWVk
aWFTb3VyY2UodHlwZSwgV1RGTW92ZShuYW1lKSwgV1RGTW92ZShzb3VyY2VJRCksIFdURk1vdmUo
aGFzaFNhbHQpKQotICAgICAgICAsIG1faWQoaWQpCi0gICAgICAgICwgbV9tYW5hZ2VyKG1hbmFn
ZXIpCi0gICAgICAgICwgbV9kZXZpY2VUeXBlKGRldmljZVR5cGUpCi0gICAgewotICAgICAgICBz
d2l0Y2ggKG1fZGV2aWNlVHlwZSkgewotICAgICAgICBjYXNlIENhcHR1cmVEZXZpY2U6OkRldmlj
ZVR5cGU6Ok1pY3JvcGhvbmU6Ci0gICAgICAgICAgICBtX3JpbmdCdWZmZXIgPSBtYWtlVW5pcXVl
PENBUmluZ0J1ZmZlcj4obWFrZVVuaXF1ZVJlZjxTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZT4obnVs
bHB0cikpOwotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgICAgICAgICBSZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS5hdWRpb0NhcHR1cmVGYWN0b3J5KCkuc2V0QWN0
aXZlU291cmNlKCp0aGlzKTsKLSNlbmRpZgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6Q2FtZXJhOgotI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCi0gICAgICAgICAgICBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24o
KS52aWRlb0NhcHR1cmVGYWN0b3J5KCkuc2V0QWN0aXZlU291cmNlKCp0aGlzKTsKLSNlbmRpZgot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlw
ZTo6U2NyZWVuOgotICAgICAgICBjYXNlIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OldpbmRv
dzoKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENhcHR1cmVEZXZpY2U6OkRldmlj
ZVR5cGU6OlVua25vd246Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAg
ICAgfQotICAgIH0KLQotICAgIH5Tb3VyY2UoKQotICAgIHsKLSAgICAgICAgc3dpdGNoIChtX2Rl
dmljZVR5cGUpIHsKLSAgICAgICAgY2FzZSBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpNaWNy
b3Bob25lOgotICAgICAgICAgICAgc3RvcmFnZSgpLmludmFsaWRhdGUoKTsKLSNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQotICAgICAgICAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2lu
Z2xldG9uKCkuYXVkaW9DYXB0dXJlRmFjdG9yeSgpLnVuc2V0QWN0aXZlU291cmNlKCp0aGlzKTsK
LSNlbmRpZgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ2FwdHVyZURldmljZTo6
RGV2aWNlVHlwZTo6Q2FtZXJhOgotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgICAgICAg
ICBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS52aWRlb0NhcHR1cmVGYWN0
b3J5KCkudW5zZXRBY3RpdmVTb3VyY2UoKnRoaXMpOwotI2VuZGlmCi0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgY2FzZSBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpTY3JlZW46Ci0gICAg
ICAgIGNhc2UgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6V2luZG93OgotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGNhc2UgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6VW5rbm93bjoK
LSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICB9Ci0gICAgfQotCi0g
ICAgdm9pZCB3aGVuUmVhZHkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcpPiYmIGNhbGxi
YWNrKSBmaW5hbAotICAgIHsKLSAgICAgICAgaWYgKG1faXNSZWFkeSkKLSAgICAgICAgICAgIHJl
dHVybiBjYWxsYmFjayhXVEZNb3ZlKG1fZXJyb3JNZXNzYWdlKSk7Ci0gICAgICAgIG1fY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsKLSAgICB9Ci0KLSAgICB2b2lkIGRpZEZhaWwoU3RyaW5n
JiYgZXJyb3JNZXNzYWdlKQotICAgIHsKLSAgICAgICAgbV9pc1JlYWR5ID0gdHJ1ZTsKLSAgICAg
ICAgbV9lcnJvck1lc3NhZ2UgPSBXVEZNb3ZlKGVycm9yTWVzc2FnZSk7Ci0gICAgICAgIGlmICht
X2NhbGxiYWNrKQotICAgICAgICAgICAgbV9jYWxsYmFjayhtX2Vycm9yTWVzc2FnZSk7Ci0gICAg
fQotCi0gICAgdm9pZCBzZXRBc1JlYWR5KCkKLSAgICB7Ci0gICAgICAgIG1faXNSZWFkeSA9IHRy
dWU7Ci0gICAgICAgIGlmIChtX2NhbGxiYWNrKQotICAgICAgICAgICAgbV9jYWxsYmFjayh7IH0p
OwotICAgIH0KLQotICAgIFNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlJiBzdG9yYWdlKCkKLSAgICB7
Ci0gICAgICAgIEFTU0VSVCh0eXBlKCkgPT0gVHlwZTo6QXVkaW8pOwotICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8U2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2UmPihtX3JpbmdCdWZmZXItPnN0b3Jh
Z2UoKSk7Ci0gICAgfQotCi0gICAgUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+IGNsb25lKCkgZmlu
YWwKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX21hbmFnZXIuY2xvbmVTb3VyY2UoKnRoaXMpOwot
ICAgIH0KLQotICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyIHNvdXJjZUlEKCkgY29u
c3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2lkOwotICAgIH0KLQotICAgIGNvbnN0IFJlYWx0
aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgc2V0dGluZ3MoKSBjb25zdAotICAgIHsKLSAgICAgICAg
cmV0dXJuIG1fc2V0dGluZ3M7Ci0gICAgfQotCi0gICAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJj
ZUNhcGFiaWxpdGllcyYgY2FwYWJpbGl0aWVzKCkgZmluYWw7Ci0gICAgdm9pZCBzZXRDYXBhYmls
aXRpZXMoUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYmIGNhcGFiaWxpdGllcykKLSAg
ICB7Ci0gICAgICAgIG1fY2FwYWJpbGl0aWVzID0gV1RGTW92ZShjYXBhYmlsaXRpZXMpOwotICAg
IH0KLQotICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgc2V0dGluZ3MoKSBm
aW5hbCB7IHJldHVybiBtX3NldHRpbmdzOyB9Ci0gICAgdm9pZCBzZXRTZXR0aW5ncyhSZWFsdGlt
ZU1lZGlhU291cmNlU2V0dGluZ3MmJiBzZXR0aW5ncykKLSAgICB7Ci0gICAgICAgIGF1dG8gY2hh
bmdlZCA9IG1fc2V0dGluZ3MuZGlmZmVyZW5jZShzZXR0aW5ncyk7Ci0gICAgICAgIG1fc2V0dGlu
Z3MgPSBXVEZNb3ZlKHNldHRpbmdzKTsKLSAgICAgICAgbm90aWZ5U2V0dGluZ3NEaWRDaGFuZ2VP
YnNlcnZlcnMoY2hhbmdlZCk7Ci0gICAgfQotCi0gICAgY29uc3QgQ0FBdWRpb1N0cmVhbURlc2Ny
aXB0aW9uJiBkZXNjcmlwdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZGVzY3JpcHRpb247IH0KLSAg
ICB2b2lkIHNldFN0b3JhZ2UoY29uc3QgU2hhcmVkTWVtb3J5OjpIYW5kbGUmIGhhbmRsZSwgY29u
c3QgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgdWludDY0
X3QgbnVtYmVyT2ZGcmFtZXMpCi0gICAgewotICAgICAgICBBU1NFUlQodHlwZSgpID09IFR5cGU6
OkF1ZGlvKTsKLSAgICAgICAgbV9kZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uOwotCi0gICAgICAg
IGlmIChoYW5kbGUuaXNOdWxsKCkpIHsKLSAgICAgICAgICAgIG1fcmluZ0J1ZmZlci0+ZGVhbGxv
Y2F0ZSgpOwotICAgICAgICAgICAgc3RvcmFnZSgpLnNldFJlYWRPbmx5KGZhbHNlKTsKLSAgICAg
ICAgICAgIHN0b3JhZ2UoKS5zZXRTdG9yYWdlKG51bGxwdHIpOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9Ci0KLSAgICAgICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gbWVtb3J5ID0gU2hh
cmVkTWVtb3J5OjptYXAoaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5
KTsKLSAgICAgICAgc3RvcmFnZSgpLnNldFN0b3JhZ2UoV1RGTW92ZShtZW1vcnkpKTsKLSAgICAg
ICAgc3RvcmFnZSgpLnNldFJlYWRPbmx5KHRydWUpOwotCi0gICAgICAgIG1fcmluZ0J1ZmZlci0+
YWxsb2NhdGUoZGVzY3JpcHRpb24sIG51bWJlck9mRnJhbWVzKTsKLSAgICB9Ci0KLSAgICB2b2lk
IHNldFJpbmdCdWZmZXJGcmFtZUJvdW5kcyh1aW50NjRfdCBzdGFydEZyYW1lLCB1aW50NjRfdCBl
bmRGcmFtZSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCh0eXBlKCkgPT0gVHlwZTo6QXVkaW8pOwot
ICAgICAgICBtX3JpbmdCdWZmZXItPnNldEN1cnJlbnRGcmFtZUJvdW5kcyhzdGFydEZyYW1lLCBl
bmRGcmFtZSk7Ci0gICAgfQotCi0gICAgdm9pZCBhdWRpb1NhbXBsZXNBdmFpbGFibGUoTWVkaWFU
aW1lIHRpbWUsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKQotICAgIHsKLSAgICAgICAgQVNTRVJU
KHR5cGUoKSA9PSBUeXBlOjpBdWRpbyk7Ci0gICAgICAgIFdlYkF1ZGlvQnVmZmVyTGlzdCBhdWRp
b0RhdGEobV9kZXNjcmlwdGlvbiwgbnVtYmVyT2ZGcmFtZXMpOwotICAgICAgICBtX3JpbmdCdWZm
ZXItPmZldGNoKGF1ZGlvRGF0YS5saXN0KCksIG51bWJlck9mRnJhbWVzLCB0aW1lLnRpbWVWYWx1
ZSgpKTsKLQotICAgICAgICBSZWFsdGltZU1lZGlhU291cmNlOjphdWRpb1NhbXBsZXNBdmFpbGFi
bGUodGltZSwgYXVkaW9EYXRhLCBtX2Rlc2NyaXB0aW9uLCBudW1iZXJPZkZyYW1lcyk7Ci0gICAg
fQotCi0gICAgdm9pZCByZW1vdGVWaWRlb1NhbXBsZUF2YWlsYWJsZShSZW1vdGVWaWRlb1NhbXBs
ZSYmIHJlbW90ZVNhbXBsZSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCh0eXBlKCkgPT0gVHlwZTo6
VmlkZW8pOwotCi0gICAgICAgIHNldEludHJpbnNpY1NpemUocmVtb3RlU2FtcGxlLnNpemUoKSk7
Ci0KLSAgICAgICAgaWYgKCFtX2ltYWdlVHJhbnNmZXJTZXNzaW9uIHx8IG1faW1hZ2VUcmFuc2Zl
clNlc3Npb24tPnBpeGVsRm9ybWF0KCkgIT0gcmVtb3RlU2FtcGxlLnZpZGVvRm9ybWF0KCkpCi0g
ICAgICAgICAgICBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uID0gSW1hZ2VUcmFuc2ZlclNlc3Npb25W
VDo6Y3JlYXRlKHJlbW90ZVNhbXBsZS52aWRlb0Zvcm1hdCgpKTsKLQotICAgICAgICBpZiAoIW1f
aW1hZ2VUcmFuc2ZlclNlc3Npb24pIHsKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgYXV0byBzYW1wbGVS
ZWYgPSBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uLT5jcmVhdGVNZWRpYVNhbXBsZShyZW1vdGVTYW1w
bGUpOwotICAgICAgICBpZiAoIXNhbXBsZVJlZikgewotICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBSZWFs
dGltZU1lZGlhU291cmNlOjp2aWRlb1NhbXBsZUF2YWlsYWJsZSgqc2FtcGxlUmVmKTsKLSAgICB9
Ci0KLSAgICB2b2lkIGFwcGx5Q29uc3RyYWludHNTdWNjZWVkZWQoY29uc3QgV2ViQ29yZTo6UmVh
bHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBzZXR0aW5ncykKLSAgICB7Ci0gICAgICAgIHNldFNl
dHRpbmdzKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyhzZXR0aW5ncykpOwot
Ci0gICAgICAgIGF1dG8gY2FsbGJhY2sgPSBtX3BlbmRpbmdBcHBseUNvbnN0cmFpbnRzQ2FsbGJh
Y2tzLnRha2VGaXJzdCgpOwotICAgICAgICBjYWxsYmFjayh7IH0pOwotICAgIH0KLQotICAgIHZv
aWQgYXBwbHlDb25zdHJhaW50c0ZhaWxlZChTdHJpbmcmJiBmYWlsZWRDb25zdHJhaW50LCBTdHJp
bmcmJiBlcnJvck1lc3NhZ2UpCi0gICAgewotICAgICAgICBhdXRvIGNhbGxiYWNrID0gbV9wZW5k
aW5nQXBwbHlDb25zdHJhaW50c0NhbGxiYWNrcy50YWtlRmlyc3QoKTsKLSAgICAgICAgY2FsbGJh
Y2soQXBwbHlDb25zdHJhaW50c0Vycm9yIHsgV1RGTW92ZShmYWlsZWRDb25zdHJhaW50KSwgV1RG
TW92ZShlcnJvck1lc3NhZ2UpIH0pOwotICAgIH0KLQotICAgIENhcHR1cmVEZXZpY2U6OkRldmlj
ZVR5cGUgZGV2aWNlVHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGV2aWNlVHlwZTsgfQot
Ci0gICAgdm9pZCBzZXRTaG91bGRDYXB0dXJlSW5HUFVQcm9jZXNzKGJvb2wgdmFsdWUpIHsgbV9z
aG91bGRDYXB0dXJlSW5HUFVQcm9jZXNzID0gdmFsdWU7IH0KLSAgICBib29sIHNob3VsZENhcHR1
cmVJbkdQVVByb2Nlc3MoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZENhcHR1cmVJbkdQVVByb2Nl
c3M7IH0KLQotICAgIElQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbigpOwotCi0gICAgdm9pZCBo
YXNFbmRlZCgpIGZpbmFsOwotCi1wcml2YXRlOgotICAgIHZvaWQgc3RhcnRQcm9kdWNpbmdEYXRh
KCkgZmluYWw7Ci0gICAgdm9pZCBzdG9wUHJvZHVjaW5nRGF0YSgpIGZpbmFsOwotICAgIGJvb2wg
aXNDYXB0dXJlU291cmNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQotCi0gICAgLy8g
UmVhbHRpbWVNZWRpYVNvdXJjZQotICAgIHZvaWQgYmVnaW5Db25maWd1cmF0aW9uKCkgZmluYWwg
eyB9Ci0gICAgdm9pZCBjb21taXRDb25maWd1cmF0aW9uKCkgZmluYWwgeyB9Ci0gICAgYm9vbCBz
ZXRTaG91bGRBcHBseVJvdGF0aW9uKGJvb2wgLyogc2hvdWxkQXBwbHlSb3RhdGlvbiAqLykgZmlu
YWw7Ci0gICAgdm9pZCBhcHBseUNvbnN0cmFpbnRzKGNvbnN0IFdlYkNvcmU6Ok1lZGlhQ29uc3Ry
YWludHMmLCBBcHBseUNvbnN0cmFpbnRzSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIHJlcXVl
c3RUb0VuZChPYnNlcnZlciYpIGZpbmFsOwotICAgIHZvaWQgc3RvcEJlaW5nT2JzZXJ2ZWQoKSBm
aW5hbDsKLQotICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyIG1faWQ7Ci0gICAgVXNl
ck1lZGlhQ2FwdHVyZU1hbmFnZXImIG1fbWFuYWdlcjsKLSAgICBSZWFsdGltZU1lZGlhU291cmNl
Q2FwYWJpbGl0aWVzIG1fY2FwYWJpbGl0aWVzOwotICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0
aW5ncyBtX3NldHRpbmdzOwotCi0gICAgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uIG1fZGVzY3Jp
cHRpb247Ci0gICAgc3RkOjp1bmlxdWVfcHRyPENBUmluZ0J1ZmZlcj4gbV9yaW5nQnVmZmVyOwot
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlVHJhbnNmZXJTZXNzaW9uVlQ+IG1faW1hZ2VUcmFu
c2ZlclNlc3Npb247Ci0gICAgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZSBtX2RldmljZVR5cGUg
eyBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpVbmtub3duIH07Ci0KLSAgICBEZXF1ZTxBcHBs
eUNvbnN0cmFpbnRzSGFuZGxlcj4gbV9wZW5kaW5nQXBwbHlDb25zdHJhaW50c0NhbGxiYWNrczsK
LSAgICBib29sIG1fc2hvdWxkQ2FwdHVyZUluR1BVUHJvY2VzcyB7IGZhbHNlIH07Ci0gICAgYm9v
bCBtX2lzUmVhZHkgeyBmYWxzZSB9OwotICAgIFN0cmluZyBtX2Vycm9yTWVzc2FnZTsKLSAgICBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyk+IG1fY2FsbGJhY2s7Ci19OwotCiBVc2VyTWVk
aWFDYXB0dXJlTWFuYWdlcjo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIoV2ViUHJvY2VzcyYgcHJv
Y2VzcykKICAgICA6IG1fcHJvY2Vzcyhwcm9jZXNzKQogICAgICwgbV9hdWRpb0ZhY3RvcnkoKnRo
aXMpCkBAIC0zMTIsMjcgKzkwLDE4IEBAIHZvaWQgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OnNl
dHVwQ2FwdHVyZVByb2Nlc3Nlcyhib29sIHNob3VsZENhcHR1cmVBdWRpb0luVUlQCiAgICAgICAg
IFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLnNldERpc3BsYXlDYXB0dXJl
RmFjdG9yeShtX2Rpc3BsYXlGYWN0b3J5KTsKIH0KIAotV2ViQ29yZTo6Q2FwdHVyZVNvdXJjZU9y
RXJyb3IgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OmNyZWF0ZUNhcHR1cmVTb3VyY2UoY29uc3Qg
Q2FwdHVyZURldmljZSYgZGV2aWNlLCBTdHJpbmcmJiBoYXNoU2FsdCwgY29uc3QgV2ViQ29yZTo6
TWVkaWFDb25zdHJhaW50cyogY29uc3RyYWludHMsIGJvb2wgc2hvdWxkQ2FwdHVyZUluR1BVUHJv
Y2VzcykKK1dlYkNvcmU6OkNhcHR1cmVTb3VyY2VPckVycm9yIFVzZXJNZWRpYUNhcHR1cmVNYW5h
Z2VyOjpjcmVhdGVDYXB0dXJlU291cmNlKFJlZjxSZW1vdGVSZWFsdGltZU1lZGlhU291cmNlPiYm
IHNvdXJjZSwgY29uc3QgQ2FwdHVyZURldmljZSYgZGV2aWNlLCBjb25zdCBXZWJDb3JlOjpNZWRp
YUNvbnN0cmFpbnRzJiBjb25zdHJhaW50cykKIHsKLSAgICBpZiAoIWNvbnN0cmFpbnRzKQotICAg
ICAgICByZXR1cm4geyB9OwotCi0gICAgYXV0byBpZCA9IFJlYWx0aW1lTWVkaWFTb3VyY2VJZGVu
dGlmaWVyOjpnZW5lcmF0ZSgpOwotCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQotICAgIGF1dG8q
IGNvbm5lY3Rpb24gPSBzaG91bGRDYXB0dXJlSW5HUFVQcm9jZXNzID8gJm1fcHJvY2Vzcy5lbnN1
cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKSA6IG1fcHJvY2Vzcy5wYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpOworICAgIGF1dG8qIGNvbm5lY3Rpb24gPSBzb3VyY2UtPnNob3Vs
ZENhcHR1cmVJbkdQVVByb2Nlc3MoKSA/ICZtX3Byb2Nlc3MuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb24oKS5jb25uZWN0aW9uKCkgOiBtX3Byb2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KTsKICNlbHNlCi0gICAgQVNTRVJUKCFzaG91bGRDYXB0dXJlSW5HUFVQcm9jZXNzKTsKKyAgICBB
U1NFUlQoIXNvdXJjZS0+c2hvdWxkQ2FwdHVyZUluR1BVUHJvY2VzcygpKTsKICAgICBhdXRvKiBj
b25uZWN0aW9uID0gbV9wcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCk7CiAjZW5kaWYK
LSAgICAKLSAgICBhdXRvIHR5cGUgPSBkZXZpY2UudHlwZSgpID09IENhcHR1cmVEZXZpY2U6OkRl
dmljZVR5cGU6Ok1pY3JvcGhvbmUgPyBXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlOjpUeXBl
OjpBdWRpbyA6IFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlZpZGVvOwotICAg
IGF1dG8gc291cmNlID0gYWRvcHRSZWYoKm5ldyBTb3VyY2UoU3RyaW5nOjpudW1iZXIoaWQudG9V
SW50NjQoKSksIHR5cGUsIGRldmljZS50eXBlKCksIFN0cmluZyB7IH0sIFN0cmluZyB7IGhhc2hT
YWx0IH0sIGlkLCAqdGhpcykpOwotICAgIGlmIChzaG91bGRDYXB0dXJlSW5HUFVQcm9jZXNzKQot
ICAgICAgICBzb3VyY2UtPnNldFNob3VsZENhcHR1cmVJbkdQVVByb2Nlc3Moc2hvdWxkQ2FwdHVy
ZUluR1BVUHJvY2Vzcyk7Ci0gICAgbV9zb3VyY2VzLmFkZChpZCwgc291cmNlLmNvcHlSZWYoKSk7
Ci0KLSAgICBjb25uZWN0aW9uLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlVzZXJNZWRp
YUNhcHR1cmVNYW5hZ2VyUHJveHk6OkNyZWF0ZU1lZGlhU291cmNlRm9yQ2FwdHVyZURldmljZVdp
dGhDb25zdHJhaW50cyhpZCwgZGV2aWNlLCBoYXNoU2FsdCwgKmNvbnN0cmFpbnRzKSwgW3NvdXJj
ZSA9IHNvdXJjZS5jb3B5UmVmKCldKGJvb2wgc3VjY2VlZGVkLCBhdXRvJiYgZXJyb3JNZXNzYWdl
LCBhdXRvJiYgc2V0dGluZ3MsIGF1dG8mJiBjYXBhYmlsaXRpZXMpIHsKKworICAgIG1fc291cmNl
cy5hZGQoc291cmNlLT5pZGVudGlmaWVyKCksIHNvdXJjZS5jb3B5UmVmKCkpOworCisgICAgY29u
bmVjdGlvbi0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpVc2VyTWVkaWFDYXB0dXJlTWFu
YWdlclByb3h5OjpDcmVhdGVNZWRpYVNvdXJjZUZvckNhcHR1cmVEZXZpY2VXaXRoQ29uc3RyYWlu
dHMoc291cmNlLT5pZGVudGlmaWVyKCksIGRldmljZSwgc291cmNlLT5kZXZpY2VJREhhc2hTYWx0
KCksIGNvbnN0cmFpbnRzKSwgW3NvdXJjZSA9IHNvdXJjZS5jb3B5UmVmKCldKGJvb2wgc3VjY2Vl
ZGVkLCBhdXRvJiYgZXJyb3JNZXNzYWdlLCBhdXRvJiYgc2V0dGluZ3MsIGF1dG8mJiBjYXBhYmls
aXRpZXMpIHsKICAgICAgICAgaWYgKCFzdWNjZWVkZWQpIHsKICAgICAgICAgICAgIHNvdXJjZS0+
ZGlkRmFpbChXVEZNb3ZlKGVycm9yTWVzc2FnZSkpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAt
Mzc0LDc5ICsxNDMsMTcgQEAgdm9pZCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6c291cmNlU2V0
dGluZ3NDaGFuZ2VkKFJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWUKICAgICAgICAgc291cmNl
LT5zZXRTZXR0aW5ncyhSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3Moc2V0dGluZ3MpKTsKIH0K
IAotdm9pZCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6c3RvcmFnZUNoYW5nZWQoUmVhbHRpbWVN
ZWRpYVNvdXJjZUlkZW50aWZpZXIgaWQsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SGFuZGxlJiBoYW5k
bGUsIGNvbnN0IFdlYkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24s
IHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKQotewotICAgIGlmIChhdXRvIHNvdXJjZSA9IG1fc291
cmNlcy5nZXQoaWQpKQotICAgICAgICBzb3VyY2UtPnNldFN0b3JhZ2UoaGFuZGxlLCBkZXNjcmlw
dGlvbiwgbnVtYmVyT2ZGcmFtZXMpOwotfQotCi12b2lkIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2Vy
OjpyaW5nQnVmZmVyRnJhbWVCb3VuZHNDaGFuZ2VkKFJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlm
aWVyIGlkLCB1aW50NjRfdCBzdGFydEZyYW1lLCB1aW50NjRfdCBlbmRGcmFtZSkKLXsKLSAgICBp
ZiAoYXV0byBzb3VyY2UgPSBtX3NvdXJjZXMuZ2V0KGlkKSkKLSAgICAgICAgc291cmNlLT5zZXRS
aW5nQnVmZmVyRnJhbWVCb3VuZHMoc3RhcnRGcmFtZSwgZW5kRnJhbWUpOwotfQotCi12b2lkIFVz
ZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOjphdWRpb1NhbXBsZXNBdmFpbGFibGUoUmVhbHRpbWVNZWRp
YVNvdXJjZUlkZW50aWZpZXIgaWQsIE1lZGlhVGltZSB0aW1lLCB1aW50NjRfdCBudW1iZXJPZkZy
YW1lcywgdWludDY0X3Qgc3RhcnRGcmFtZSwgdWludDY0X3QgZW5kRnJhbWUpCi17Ci0gICAgaWYg
KGF1dG8gc291cmNlID0gbV9zb3VyY2VzLmdldChpZCkpIHsKLSAgICAgICAgc291cmNlLT5zZXRS
aW5nQnVmZmVyRnJhbWVCb3VuZHMoc3RhcnRGcmFtZSwgZW5kRnJhbWUpOwotICAgICAgICBzb3Vy
Y2UtPmF1ZGlvU2FtcGxlc0F2YWlsYWJsZSh0aW1lLCBudW1iZXJPZkZyYW1lcyk7Ci0gICAgfQot
fQotCiB2b2lkIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOjpyZW1vdGVWaWRlb1NhbXBsZUF2YWls
YWJsZShSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciBpZCwgUmVtb3RlVmlkZW9TYW1wbGUm
JiBzYW1wbGUpCiB7CiAgICAgaWYgKGF1dG8gc291cmNlID0gbV9zb3VyY2VzLmdldChpZCkpCiAg
ICAgICAgIHNvdXJjZS0+cmVtb3RlVmlkZW9TYW1wbGVBdmFpbGFibGUoV1RGTW92ZShzYW1wbGUp
KTsKIH0KIAotSVBDOjpDb25uZWN0aW9uKiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6U291cmNl
Ojpjb25uZWN0aW9uKCkKLXsKLSNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCi0gICAgaWYgKG1fc2hv
dWxkQ2FwdHVyZUluR1BVUHJvY2VzcykKLSAgICAgICAgcmV0dXJuICZtX21hbmFnZXIubV9wcm9j
ZXNzLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOwotI2VuZGlmCi0g
ICAgcmV0dXJuIG1fbWFuYWdlci5tX3Byb2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKTsK
LX0KLQotdm9pZCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6U291cmNlOjpzdGFydFByb2R1Y2lu
Z0RhdGEoKQotewotICAgIGNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6VXNlck1lZGlhQ2Fw
dHVyZU1hbmFnZXJQcm94eTo6U3RhcnRQcm9kdWNpbmdEYXRhKG1faWQpLCAwKTsKLX0KLQotdm9p
ZCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6U291cmNlOjpzdG9wUHJvZHVjaW5nRGF0YSgpCi17
Ci0gICAgY29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdl
clByb3h5OjpTdG9wUHJvZHVjaW5nRGF0YShtX2lkKSwgMCk7Ci19Ci0KLWJvb2wgVXNlck1lZGlh
Q2FwdHVyZU1hbmFnZXI6OlNvdXJjZTo6c2V0U2hvdWxkQXBwbHlSb3RhdGlvbihib29sIHNob3Vs
ZEFwcGx5Um90YXRpb24pCi17Ci0gICAgY29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpVc2Vy
TWVkaWFDYXB0dXJlTWFuYWdlclByb3h5OjpTZXRTaG91bGRBcHBseVJvdGF0aW9uKG1faWQsIHNo
b3VsZEFwcGx5Um90YXRpb24pLCAwKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotY29uc3QgV2Vi
Q29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYgVXNlck1lZGlhQ2FwdHVyZU1h
bmFnZXI6OlNvdXJjZTo6Y2FwYWJpbGl0aWVzKCkKLXsKLSAgICByZXR1cm4gbV9jYXBhYmlsaXRp
ZXM7Ci19Ci0KLXZvaWQgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OlNvdXJjZTo6YXBwbHlDb25z
dHJhaW50cyhjb25zdCBXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnRzJiBjb25zdHJhaW50cywgQXBw
bHlDb25zdHJhaW50c0hhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBtX3BlbmRp
bmdBcHBseUNvbnN0cmFpbnRzQ2FsbGJhY2tzLmFwcGVuZChXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7Ci0gICAgY29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpVc2VyTWVkaWFDYXB0dXJl
TWFuYWdlclByb3h5OjpBcHBseUNvbnN0cmFpbnRzKG1faWQsIGNvbnN0cmFpbnRzKSwgMCk7Ci19
Ci0KIHZvaWQgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OnNvdXJjZUVuZGVkKFJlYWx0aW1lTWVk
aWFTb3VyY2VJZGVudGlmaWVyIGlkKQogewogICAgIG1fc291cmNlcy5yZW1vdmUoaWQpOwogfQog
Ci12b2lkIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOjpTb3VyY2U6Omhhc0VuZGVkKCkKLXsKLSAg
ICBjb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJv
eHk6OkVuZCB7IG1faWQgfSwgMCk7Ci0gICAgbV9tYW5hZ2VyLnNvdXJjZUVuZGVkKG1faWQpOwot
fQotCiB2b2lkIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOjphcHBseUNvbnN0cmFpbnRzU3VjY2Vl
ZGVkKFJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyIGlkLCBjb25zdCBXZWJDb3JlOjpSZWFs
dGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdzKQogewogICAgIGlmIChhdXRvIHNvdXJj
ZSA9IG1fc291cmNlcy5nZXQoaWQpKQpAQCAtNDU5LDcgKzE2Niw3IEBAIHZvaWQgVXNlck1lZGlh
Q2FwdHVyZU1hbmFnZXI6OmFwcGx5Q29uc3RyYWludHNGYWlsZWQoUmVhbHRpbWVNZWRpYVNvdXJj
ZUlkZW50aWZpCiAgICAgICAgIHNvdXJjZS0+YXBwbHlDb25zdHJhaW50c0ZhaWxlZChXVEZNb3Zl
KGZhaWxlZENvbnN0cmFpbnQpLCBXVEZNb3ZlKG1lc3NhZ2UpKTsKIH0KIAotUmVmPFJlYWx0aW1l
TWVkaWFTb3VyY2U+IFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOjpjbG9uZVNvdXJjZShTb3VyY2Um
IHNvdXJjZSkKK1JlZjxSZWFsdGltZU1lZGlhU291cmNlPiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdl
cjo6Y2xvbmVTb3VyY2UoUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZSYgc291cmNlKQogewogICAg
IHN3aXRjaCAoc291cmNlLnR5cGUoKSkgewogICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZTo6
VHlwZTo6VmlkZW86CkBAIC00NzIsNDIgKzE3OSwyNiBAQCBSZWY8UmVhbHRpbWVNZWRpYVNvdXJj
ZT4gVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OmNsb25lU291cmNlKFNvdXJjZSYgc291cmNlKQog
ICAgIHJldHVybiBtYWtlUmVmKHNvdXJjZSk7CiB9CiAKLVJlZjxSZWFsdGltZU1lZGlhU291cmNl
PiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6Y2xvbmVWaWRlb1NvdXJjZShTb3VyY2UmIHNvdXJj
ZSkKK1JlZjxSZWFsdGltZU1lZGlhU291cmNlPiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6Y2xv
bmVWaWRlb1NvdXJjZShSZW1vdGVSZWFsdGltZU1lZGlhU291cmNlJiBzb3VyY2UpCiB7Ci0gICAg
YXV0byBpZCA9IFJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOwotICAg
IGlmICghc291cmNlLmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6VXNlck1lZGlhQ2FwdHVy
ZU1hbmFnZXJQcm94eTo6Q2xvbmUgeyBzb3VyY2Uuc291cmNlSUQoKSwgaWQgfSwgMCkpCisgICAg
YXV0byBpZGVudGlmaWVyID0gUmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXI6OmdlbmVyYXRl
KCk7CisgICAgaWYgKCFzb3VyY2UuY29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpVc2VyTWVk
aWFDYXB0dXJlTWFuYWdlclByb3h5OjpDbG9uZSB7IHNvdXJjZS5pZGVudGlmaWVyKCksIGlkZW50
aWZpZXIgfSwgMCkpCiAgICAgICAgIHJldHVybiBtYWtlUmVmKHNvdXJjZSk7CiAKICAgICBhdXRv
IHNldHRpbmdzID0gc291cmNlLnNldHRpbmdzKCk7Ci0gICAgYXV0byBjbG9uZVNvdXJjZSA9IGFk
b3B0UmVmKCpuZXcgU291cmNlKFN0cmluZzo6bnVtYmVyKGlkLnRvVUludDY0KCkpLCBzb3VyY2Uu
dHlwZSgpLCBzb3VyY2UuZGV2aWNlVHlwZSgpLCBTdHJpbmcgeyBzZXR0aW5ncy5sYWJlbCgpLnN0
cmluZygpIH0sIHNvdXJjZS5kZXZpY2VJREhhc2hTYWx0KCksIGlkLCAqdGhpcykpOworICAgIGF1
dG8gY2xvbmVTb3VyY2UgPSBhZG9wdFJlZigqbmV3IFJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2Uo
aWRlbnRpZmllciwgc291cmNlLnR5cGUoKSwgc291cmNlLmRldmljZVR5cGUoKSwgU3RyaW5nIHsg
c2V0dGluZ3MubGFiZWwoKS5zdHJpbmcoKSB9LCBzb3VyY2UuZGV2aWNlSURIYXNoU2FsdCgpLCAq
dGhpcykpOwogICAgIGlmIChzb3VyY2Uuc2hvdWxkQ2FwdHVyZUluR1BVUHJvY2VzcygpKQogICAg
ICAgICBjbG9uZVNvdXJjZS0+c2V0U2hvdWxkQ2FwdHVyZUluR1BVUHJvY2Vzcyh0cnVlKTsKICAg
ICBjbG9uZVNvdXJjZS0+c2V0U2V0dGluZ3MoV1RGTW92ZShzZXR0aW5ncykpOwotICAgIG1fc291
cmNlcy5hZGQoaWQsIGNsb25lU291cmNlLmNvcHlSZWYoKSk7CisgICAgbV9zb3VyY2VzLmFkZChp
ZGVudGlmaWVyLCBjbG9uZVNvdXJjZS5jb3B5UmVmKCkpOwogICAgIHJldHVybiBjbG9uZVNvdXJj
ZTsKIH0KIAotdm9pZCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6U291cmNlOjpzdG9wQmVpbmdP
YnNlcnZlZCgpCi17Ci0gICAgY29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpVc2VyTWVkaWFD
YXB0dXJlTWFuYWdlclByb3h5OjpSZXF1ZXN0VG9FbmQgeyBtX2lkIH0sIDApOwotfQotCi12b2lk
IFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOjpTb3VyY2U6OnJlcXVlc3RUb0VuZChPYnNlcnZlciYg
b2JzZXJ2ZXIpCi17Ci0gICAgc3dpdGNoICh0eXBlKCkpIHsKLSAgICBjYXNlIFR5cGU6OkF1ZGlv
OgotICAgICAgICBSZWFsdGltZU1lZGlhU291cmNlOjpyZXF1ZXN0VG9FbmQob2JzZXJ2ZXIpOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIFR5cGU6OlZpZGVvOgotICAgICAgICBzdG9wQmVpbmdP
YnNlcnZlZCgpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFR5cGU6Ok5vbmU6Ci0gICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLX0KLQogQ2FwdHVyZVNvdXJjZU9yRXJyb3Ig
VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OkF1ZGlvRmFjdG9yeTo6Y3JlYXRlQXVkaW9DYXB0dXJl
U291cmNlKGNvbnN0IENhcHR1cmVEZXZpY2UmIGRldmljZSwgU3RyaW5nJiYgaGFzaFNhbHQsIGNv
bnN0IE1lZGlhQ29uc3RyYWludHMqIGNvbnN0cmFpbnRzKQogeworICAgIGlmICghY29uc3RyYWlu
dHMpCisgICAgICAgIHJldHVybiB7IH07CisKICNpZiAhRU5BQkxFKEdQVV9QUk9DRVNTKQogICAg
IGlmIChtX3Nob3VsZENhcHR1cmVJbkdQVVByb2Nlc3MpCiAgICAgICAgIHJldHVybiBDYXB0dXJl
U291cmNlT3JFcnJvciB7ICJBdWRpbyBjYXB0dXJlIGluIEdQVVByb2Nlc3MgaXMgbm90IGltcGxl
bWVudGVkIl9zIH07CkBAIC01MTcsMTYgKzIwOCwzOCBAQCBDYXB0dXJlU291cmNlT3JFcnJvciBV
c2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6QXVkaW9GYWN0b3J5OjpjcmVhdGVBdWRpb0NhcHR1cmVT
bwogICAgIGlmIChtX3Nob3VsZENhcHR1cmVJbkdQVVByb2Nlc3MpCiAgICAgICAgIERlcHJlY2F0
ZWRHbG9iYWxTZXR0aW5nczo6c2V0U2hvdWxkTWFuYWdlQXVkaW9TZXNzaW9uQ2F0ZWdvcnkodHJ1
ZSk7CiAjZW5kaWYKLSAgICByZXR1cm4gbV9tYW5hZ2VyLmNyZWF0ZUNhcHR1cmVTb3VyY2UoZGV2
aWNlLCBXVEZNb3ZlKGhhc2hTYWx0KSwgY29uc3RyYWludHMsIG1fc2hvdWxkQ2FwdHVyZUluR1BV
UHJvY2Vzcyk7CisgICAgaWYgKCFtX2F1ZGlvQ2FwdHVyZVNhbXBsZU1hbmFnZXIuaGFzQ29ubmVj
dGlvbigpKQorICAgICAgICBtX2F1ZGlvQ2FwdHVyZVNhbXBsZU1hbmFnZXIuc2V0Q29ubmVjdGlv
bihtX3Nob3VsZENhcHR1cmVJbkdQVVByb2Nlc3MgPyAmV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
ZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkgOiBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpKTsKKworICAgIGF1dG8gaWRlbnRp
ZmllciA9IFJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOworICAgIGF1
dG8gc291cmNlID0gYWRvcHRSZWYoKm5ldyBSZW1vdGVSZWFsdGltZU1lZGlhU291cmNlKGlkZW50
aWZpZXIsIFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvLCBkZXZpY2Uu
dHlwZSgpLCBTdHJpbmcgeyB9LCBTdHJpbmcgeyBoYXNoU2FsdCB9LCBtX21hbmFnZXIpKTsKKyAg
ICBzb3VyY2UtPnNldFNob3VsZENhcHR1cmVJbkdQVVByb2Nlc3MobV9zaG91bGRDYXB0dXJlSW5H
UFVQcm9jZXNzKTsKKworICAgIG1fYXVkaW9DYXB0dXJlU2FtcGxlTWFuYWdlci5hZGRTb3VyY2Uo
c291cmNlLmNvcHlSZWYoKSk7CisgICAgcmV0dXJuIG1fbWFuYWdlci5jcmVhdGVDYXB0dXJlU291
cmNlKFdURk1vdmUoc291cmNlKSwgZGV2aWNlLCAqY29uc3RyYWludHMpOworfQorCit2b2lkIFVz
ZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOjpBdWRpb0ZhY3Rvcnk6OnNldFNob3VsZENhcHR1cmVJbkdQ
VVByb2Nlc3MoYm9vbCB2YWx1ZSkKK3sKKyAgICBtX3Nob3VsZENhcHR1cmVJbkdQVVByb2Nlc3Mg
PSB2YWx1ZTsKKyAgICBtX2F1ZGlvQ2FwdHVyZVNhbXBsZU1hbmFnZXIuc2V0Q29ubmVjdGlvbihu
dWxscHRyKTsKIH0KIAogQ2FwdHVyZVNvdXJjZU9yRXJyb3IgVXNlck1lZGlhQ2FwdHVyZU1hbmFn
ZXI6OlZpZGVvRmFjdG9yeTo6Y3JlYXRlVmlkZW9DYXB0dXJlU291cmNlKGNvbnN0IENhcHR1cmVE
ZXZpY2UmIGRldmljZSwgU3RyaW5nJiYgaGFzaFNhbHQsIGNvbnN0IE1lZGlhQ29uc3RyYWludHMq
IGNvbnN0cmFpbnRzKQogeworICAgIGlmICghY29uc3RyYWludHMpCisgICAgICAgIHJldHVybiB7
IH07CisKICNpZiAhRU5BQkxFKEdQVV9QUk9DRVNTKQogICAgIGlmIChtX3Nob3VsZENhcHR1cmVJ
bkdQVVByb2Nlc3MpCiAgICAgICAgIHJldHVybiBDYXB0dXJlU291cmNlT3JFcnJvciB7ICJWaWRl
byBjYXB0dXJlIGluIEdQVVByb2Nlc3MgaXMgbm90IGltcGxlbWVudGVkIl9zIH07CiAjZW5kaWYK
LSAgICByZXR1cm4gbV9tYW5hZ2VyLmNyZWF0ZUNhcHR1cmVTb3VyY2UoZGV2aWNlLCBXVEZNb3Zl
KGhhc2hTYWx0KSwgY29uc3RyYWludHMsIG1fc2hvdWxkQ2FwdHVyZUluR1BVUHJvY2Vzcyk7CisK
KyAgICBhdXRvIGlkZW50aWZpZXIgPSBSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllcjo6Z2Vu
ZXJhdGUoKTsKKyAgICBhdXRvIHNvdXJjZSA9IGFkb3B0UmVmKCpuZXcgUmVtb3RlUmVhbHRpbWVN
ZWRpYVNvdXJjZShpZGVudGlmaWVyLCBXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlOjpUeXBl
OjpWaWRlbywgZGV2aWNlLnR5cGUoKSwgU3RyaW5nIHsgfSwgV1RGTW92ZShoYXNoU2FsdCksIG1f
bWFuYWdlcikpOworICAgIHNvdXJjZS0+c2V0U2hvdWxkQ2FwdHVyZUluR1BVUHJvY2VzcyhtX3No
b3VsZENhcHR1cmVJbkdQVVByb2Nlc3MpOworCisgICAgcmV0dXJuIG1fbWFuYWdlci5jcmVhdGVD
YXB0dXJlU291cmNlKFdURk1vdmUoc291cmNlKSwgZGV2aWNlLCAqY29uc3RyYWludHMpOwogfQog
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTUzNiw2ICsyNDksMTYgQEAgdm9pZCBVc2Vy
TWVkaWFDYXB0dXJlTWFuYWdlcjo6VmlkZW9GYWN0b3J5OjpzZXRBY3RpdmVTb3VyY2UoUmVhbHRp
bWVNZWRpYVNvdXJjZSYKIH0KICNlbmRpZgogCitXZWJDb3JlOjpDYXB0dXJlU291cmNlT3JFcnJv
ciBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6RGlzcGxheUZhY3Rvcnk6OmNyZWF0ZURpc3BsYXlD
YXB0dXJlU291cmNlKGNvbnN0IFdlYkNvcmU6OkNhcHR1cmVEZXZpY2UmIGRldmljZSwgY29uc3Qg
V2ViQ29yZTo6TWVkaWFDb25zdHJhaW50cyogY29uc3RyYWludHMpCit7CisgICAgaWYgKCFjb25z
dHJhaW50cykKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGF1dG8gaWRlbnRpZmllciA9IFJl
YWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOworICAgIGF1dG8gc291cmNl
ID0gYWRvcHRSZWYoKm5ldyBSZW1vdGVSZWFsdGltZU1lZGlhU291cmNlKGlkZW50aWZpZXIsIFdl
YkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlZpZGVvLCBkZXZpY2UudHlwZSgpLCBT
dHJpbmcgeyB9LCBTdHJpbmcgeyB9LCBtX21hbmFnZXIpKTsKKyAgICByZXR1cm4gbV9tYW5hZ2Vy
LmNyZWF0ZUNhcHR1cmVTb3VyY2UoV1RGTW92ZShzb3VyY2UpLCBkZXZpY2UsICpjb25zdHJhaW50
cyk7Cit9CisKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oCmluZGV4IDNiYzUxZWFiOTFhNTRm
ZGY2MDE0ZTYwZjk2ZjQ4NzAzNTM2ZDZhNTMuLmVkNTlkMjE5OGNiYTc5Mzk3N2I0OWI4ZjQ3OGMx
NzhiMGIxNWE4ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9V
c2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9j
b2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBQ
TEFURk9STShDT0NPQSkgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAorI2luY2x1ZGUgIkF1ZGlv
Q2FwdHVyZVNhbXBsZU1hbmFnZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNp
bmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzU3VwcGxlbWVudC5o
IgpAQCAtNDMsNyArNDQsNyBAQCBjbGFzcyBSZW1vdGVWaWRlb1NhbXBsZTsKIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKLWNsYXNzIENyb3NzUHJvY2Vzc1JlYWx0aW1lQXVkaW9Tb3VyY2U7CitjbGFz
cyBSZW1vdGVSZWFsdGltZU1lZGlhU291cmNlOwogY2xhc3MgV2ViUHJvY2VzczsKIAogY2xhc3Mg
VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIgOiBwdWJsaWMgV2ViUHJvY2Vzc1N1cHBsZW1lbnQsIHB1
YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CkBAIC01NywxMiArNTgsMTUgQEAgcHVibGljOgog
ICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tR1BVUHJvY2VzcyhJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikgeyBkaWRSZWNlaXZlTWVzc2FnZShj
b25uZWN0aW9uLCBkZWNvZGVyKTsgfQogICAgIHZvaWQgc2V0dXBDYXB0dXJlUHJvY2Vzc2VzKGJv
b2wgc2hvdWxkQ2FwdHVyZUF1ZGlvSW5VSVByb2Nlc3MsIGJvb2wgc2hvdWxkQ2FwdHVyZUF1ZGlv
SW5HUFVQcm9jZXNzLCBib29sIHNob3VsZENhcHR1cmVWaWRlb0luVUlQcm9jZXNzLCBib29sIHNo
b3VsZENhcHR1cmVWaWRlb0luR1BVUHJvY2VzcywgYm9vbCBzaG91bGRDYXB0dXJlRGlzcGxheUlu
VUlQcm9jZXNzKTsKIAorICAgIHZvaWQgc291cmNlRW5kZWQoV2ViQ29yZTo6UmVhbHRpbWVNZWRp
YVNvdXJjZUlkZW50aWZpZXIpOworICAgIFJlZjxXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNl
PiBjbG9uZVNvdXJjZShSZW1vdGVSZWFsdGltZU1lZGlhU291cmNlJik7CisKIHByaXZhdGU6CiAg
ICAgLy8gV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZSBmYWN0b3JpZXMKICAgICBjbGFzcyBB
dWRpb0ZhY3RvcnkgOiBwdWJsaWMgV2ViQ29yZTo6QXVkaW9DYXB0dXJlRmFjdG9yeSB7CiAgICAg
cHVibGljOgogICAgICAgICBleHBsaWNpdCBBdWRpb0ZhY3RvcnkoVXNlck1lZGlhQ2FwdHVyZU1h
bmFnZXImIG1hbmFnZXIpIDogbV9tYW5hZ2VyKG1hbmFnZXIpIHsgfQotICAgICAgICB2b2lkIHNl
dFNob3VsZENhcHR1cmVJbkdQVVByb2Nlc3MoYm9vbCB2YWx1ZSkgeyBtX3Nob3VsZENhcHR1cmVJ
bkdQVVByb2Nlc3MgPSB2YWx1ZTsgfQorICAgICAgICB2b2lkIHNldFNob3VsZENhcHR1cmVJbkdQ
VVByb2Nlc3MoYm9vbCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICBXZWJDb3JlOjpDYXB0dXJl
U291cmNlT3JFcnJvciBjcmVhdGVBdWRpb0NhcHR1cmVTb3VyY2UoY29uc3QgV2ViQ29yZTo6Q2Fw
dHVyZURldmljZSYsIFN0cmluZyYmIGhhc2hTYWx0LCBjb25zdCBXZWJDb3JlOjpNZWRpYUNvbnN0
cmFpbnRzKikgZmluYWw7CkBAIC03MCw2ICs3NCw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgVXNl
ck1lZGlhQ2FwdHVyZU1hbmFnZXImIG1fbWFuYWdlcjsKICAgICAgICAgYm9vbCBtX3Nob3VsZENh
cHR1cmVJbkdQVVByb2Nlc3MgeyBmYWxzZSB9OworICAgICAgICBBdWRpb0NhcHR1cmVTYW1wbGVN
YW5hZ2VyIG1fYXVkaW9DYXB0dXJlU2FtcGxlTWFuYWdlcjsKICAgICB9OwogICAgIGNsYXNzIFZp
ZGVvRmFjdG9yeSA6IHB1YmxpYyBXZWJDb3JlOjpWaWRlb0NhcHR1cmVGYWN0b3J5IHsKICAgICBw
dWJsaWM6CkBAIC05MSwxMyArOTYsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgZXhwbGljaXQgRGlz
cGxheUZhY3RvcnkoVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXImIG1hbmFnZXIpIDogbV9tYW5hZ2Vy
KG1hbmFnZXIpIHsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgV2ViQ29yZTo6Q2FwdHVyZVNv
dXJjZU9yRXJyb3IgY3JlYXRlRGlzcGxheUNhcHR1cmVTb3VyY2UoY29uc3QgV2ViQ29yZTo6Q2Fw
dHVyZURldmljZSYgZGV2aWNlLCBjb25zdCBXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnRzKiBjb25z
dHJhaW50cykgZmluYWwgIHsgcmV0dXJuIG1fbWFuYWdlci5jcmVhdGVDYXB0dXJlU291cmNlKGRl
dmljZSwgeyB9LCBjb25zdHJhaW50cyk7IH0KKyAgICAgICAgV2ViQ29yZTo6Q2FwdHVyZVNvdXJj
ZU9yRXJyb3IgY3JlYXRlRGlzcGxheUNhcHR1cmVTb3VyY2UoY29uc3QgV2ViQ29yZTo6Q2FwdHVy
ZURldmljZSYsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludHMqKSBmaW5hbDsKICAgICAg
ICAgV2ViQ29yZTo6Q2FwdHVyZURldmljZU1hbmFnZXImIGRpc3BsYXlDYXB0dXJlRGV2aWNlTWFu
YWdlcigpIGZpbmFsIHsgcmV0dXJuIG1fbWFuYWdlci5tX25vT3BDYXB0dXJlRGV2aWNlTWFuYWdl
cjsgfQogCiAgICAgICAgIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyJiBtX21hbmFnZXI7CiAgICAg
fTsKIAotICAgIFdlYkNvcmU6OkNhcHR1cmVTb3VyY2VPckVycm9yIGNyZWF0ZUNhcHR1cmVTb3Vy
Y2UoY29uc3QgV2ViQ29yZTo6Q2FwdHVyZURldmljZSYsIFN0cmluZyYmLCBjb25zdCBXZWJDb3Jl
OjpNZWRpYUNvbnN0cmFpbnRzKiwgYm9vbCBzaG91bGRDYXB0dXJlSW5HUFVQcm9jZXNzID0gZmFs
c2UpOworICAgIFdlYkNvcmU6OkNhcHR1cmVTb3VyY2VPckVycm9yIGNyZWF0ZUNhcHR1cmVTb3Vy
Y2UoUmVmPFJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2U+JiYsIGNvbnN0IFdlYkNvcmU6OkNhcHR1
cmVEZXZpY2UmLCBjb25zdCBXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnRzJik7CiAKICAgICBjbGFz
cyBOb09wQ2FwdHVyZURldmljZU1hbmFnZXIgOiBwdWJsaWMgV2ViQ29yZTo6Q2FwdHVyZURldmlj
ZU1hbmFnZXIgewogICAgIHB1YmxpYzoKQEAgLTExOCwyMyArMTIzLDE1IEBAIHByaXZhdGU6CiAg
ICAgLy8gTWVzc2FnZXM6OlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyCiAgICAgdm9pZCBjYXB0dXJl
RmFpbGVkKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyKTsKICAgICB2b2lk
IHNvdXJjZVN0b3BwZWQoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIpOwot
ICAgIHZvaWQgc291cmNlRW5kZWQoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZp
ZXIpOwogICAgIHZvaWQgc291cmNlTXV0ZWRDaGFuZ2VkKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFT
b3VyY2VJZGVudGlmaWVyLCBib29sIG11dGVkKTsKICAgICB2b2lkIHNvdXJjZVNldHRpbmdzQ2hh
bmdlZChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciwgY29uc3QgV2ViQ29y
ZTo6UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJik7Ci0gICAgdm9pZCBzdG9yYWdlQ2hhbmdl
ZChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciwgY29uc3QgU2hhcmVkTWVt
b3J5OjpIYW5kbGUmLCBjb25zdCBXZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCB1
aW50NjRfdCBudW1iZXJPZkZyYW1lcyk7Ci0gICAgdm9pZCByaW5nQnVmZmVyRnJhbWVCb3VuZHND
aGFuZ2VkKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyLCB1aW50NjRfdCBz
dGFydEZyYW1lLCB1aW50NjRfdCBlbmRGcmFtZSk7Ci0gICAgdm9pZCBhdWRpb1NhbXBsZXNBdmFp
bGFibGUoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIsIE1lZGlhVGltZSwg
dWludDY0X3QgbnVtYmVyT2ZGcmFtZXMsIHVpbnQ2NF90IHN0YXJ0RnJhbWUsIHVpbnQ2NF90IGVu
ZEZyYW1lKTsKICAgICB2b2lkIHJlbW90ZVZpZGVvU2FtcGxlQXZhaWxhYmxlKFdlYkNvcmU6OlJl
YWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyLCBXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYm
KTsKICAgICB2b2lkIGFwcGx5Q29uc3RyYWludHNTdWNjZWVkZWQoV2ViQ29yZTo6UmVhbHRpbWVN
ZWRpYVNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VT
ZXR0aW5ncyYpOwogICAgIHZvaWQgYXBwbHlDb25zdHJhaW50c0ZhaWxlZChXZWJDb3JlOjpSZWFs
dGltZU1lZGlhU291cmNlSWRlbnRpZmllciwgU3RyaW5nJiYsIFN0cmluZyYmKTsKIAotICAgIGNs
YXNzIFNvdXJjZTsKLSAgICBmcmllbmQgY2xhc3MgU291cmNlOwotCi0gICAgUmVmPFdlYkNvcmU6
OlJlYWx0aW1lTWVkaWFTb3VyY2U+IGNsb25lU291cmNlKFNvdXJjZSYpOwotICAgIFJlZjxXZWJD
b3JlOjpSZWFsdGltZU1lZGlhU291cmNlPiBjbG9uZVZpZGVvU291cmNlKFNvdXJjZSYpOworICAg
IFJlZjxXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlPiBjbG9uZVZpZGVvU291cmNlKFJlbW90
ZVJlYWx0aW1lTWVkaWFTb3VyY2UmKTsKIAotICAgIEhhc2hNYXA8V2ViQ29yZTo6UmVhbHRpbWVN
ZWRpYVNvdXJjZUlkZW50aWZpZXIsIFJlZjxTb3VyY2U+PiBtX3NvdXJjZXM7CisgICAgSGFzaE1h
cDxXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciwgUmVmPFJlbW90ZVJlYWx0
aW1lTWVkaWFTb3VyY2U+PiBtX3NvdXJjZXM7CiAgICAgV2ViUHJvY2VzcyYgbV9wcm9jZXNzOwog
ICAgIE5vT3BDYXB0dXJlRGV2aWNlTWFuYWdlciBtX25vT3BDYXB0dXJlRGV2aWNlTWFuYWdlcjsK
ICAgICBBdWRpb0ZhY3RvcnkgbV9hdWRpb0ZhY3Rvcnk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIu
bWVzc2FnZXMuaW4KaW5kZXggMzAxMGVlZTkxZTlhYTQ3YmRhNTRkMTVjMGM4ZDU1YTJiN2RiYjA5
Ny4uMTA0NjZiYWZkNzc5NTEyZTFkMzI4NmQ1OTliNjU1MmQwNjEzZjMwYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFD
YXB0dXJlTWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtMjgsOCArMjgsNiBAQCBtZXNzYWdlcyAtPiBV
c2VyTWVkaWFDYXB0dXJlTWFuYWdlciBOb3RSZWZDb3VudGVkIHsKICAgICBTb3VyY2VTdG9wcGVk
KFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyIGlkKQogICAgIFNvdXJjZU11
dGVkQ2hhbmdlZChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciBpZCwgYm9v
bCBtdXRlZCkKICAgICBTb3VyY2VTZXR0aW5nc0NoYW5nZWQoV2ViQ29yZTo6UmVhbHRpbWVNZWRp
YVNvdXJjZUlkZW50aWZpZXIgaWQsIFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5n
cyBzZXR0aW5ncykKLSAgICBTdG9yYWdlQ2hhbmdlZChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291
cmNlSWRlbnRpZmllciBpZCwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OkhhbmRsZSBzdG9yYWdlSGFu
ZGxlLCBXZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24gZGVzY3JpcHRpb24sIHVpbnQ2
NF90IG51bWJlck9mRnJhbWVzKQotICAgIEF1ZGlvU2FtcGxlc0F2YWlsYWJsZShXZWJDb3JlOjpS
ZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciBpZCwgTWVkaWFUaW1lIHRpbWUsIHVpbnQ2NF90
IG51bWJlck9mRnJhbWVzLCB1aW50NjRfdCBzdGFydEZyYW1lLCB1aW50NjRfdCBlbmRGcmFtZSkK
ICAgICBBcHBseUNvbnN0cmFpbnRzU3VjY2VlZGVkKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3Vy
Y2VJZGVudGlmaWVyIGlkLCBXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3Mgc2V0
dGluZ3MpCiAgICAgQXBwbHlDb25zdHJhaW50c0ZhaWxlZChXZWJDb3JlOjpSZWFsdGltZU1lZGlh
U291cmNlSWRlbnRpZmllciBpZCwgU3RyaW5nIGZhaWxlZENvbnN0cmFpbnQsIFN0cmluZyBtZXNz
YWdlKQogICAgIFJlbW90ZVZpZGVvU2FtcGxlQXZhaWxhYmxlKFdlYkNvcmU6OlJlYWx0aW1lTWVk
aWFTb3VyY2VJZGVudGlmaWVyIGlkLCBXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSBzYW1wbGUp
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398805</attachid>
            <date>2020-05-07 15:36:37 -0700</date>
            <delta_ts>2020-05-08 02:28:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211583-20200508003634.patch</filename>
            <type>text/plain</type>
            <size>75276</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxMjc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDAyZDdmZWVkZTFjYjU4
YjQ5OWMyMTI4MjdhMTFhZDMxNTBhZGNjNy4uOTdmZjFlZGViM2MxMmQ1NzJjYzFmMGI3Y2FmMWUw
MzU5MWE2NTdjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIwLTA1LTA3ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBIYW5kbGUgcmVtb3RlIGF1
ZGlvIGNhcHR1cmUgSVBDIG1lc3NhZ2VzIGluIGEgYmFja2dyb3VuZCB0aHJlYWQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTU4MworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2EuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYTo6cHVzaFNhbXBs
ZXMpOgorICAgICAgICBBZGQgYXNzZXJ0aW9uIHRvIGNoZWNrIHRoYXQgd2UgYXJlIG5vdCBydW5u
aW5nIG9uIHRoZSBtYWluIHRocmVhZC4KKwogMjAyMC0wNS0wNyAgWW91ZW5uIEZhYmxldCAgPHlv
dWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IHBvdGVudGlhbCB0aHJlYWRpbmcgaXNzdWUg
aW4gQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYTo6cmVuZGVyCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4
IGQ0MWExOTkyMWEyZjA0OWEyYmQ0YjFiYjM2M2M0ZjcyYjdlMzA2YTkuLjhhMjU4Mjc3MDVmOWYy
YWRkYmYxOGJhYTA5MTJkNDE5NzM2MTM4OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzIgQEAKKzIw
MjAtMDUtMDcgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIEhh
bmRsZSByZW1vdGUgYXVkaW8gY2FwdHVyZSBJUEMgbWVzc2FnZXMgaW4gYSBiYWNrZ3JvdW5kIHRo
cmVhZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEx
NTgzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2Ug
aW50cm9kdWNlIFJlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyIHdoaWNoIGlzIHJlc3BvbnNpYmxl
IHRvIGdldCByZW1vdGUgY2FwdHVyZSBzYW1wbGUgSVBDIG1lc3NhZ2VzIGFuZCB0cmVhdCB0aGVt
IGZyb20gYSBiYWNrZ3JvdW5kIHRocmVhZC4KKyAgICAgICAgSXQgaXMgY3VycmVudGx5IHVzZWQg
dG8gaGFuZGxlIGF1ZGlvIGNhcHR1cmUgSVBDIG1lc3NhZ2VzLgorICAgICAgICBXZSBtb3ZlIFVz
ZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOjpTb3VyY2UgaW4gaXRzIG93biBmaWxlIGFuZCByZW5hbWUg
aXQgdG8gUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZS4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4
aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlz
dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdDoKKyAgICAgICAg
KiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIFBsYXRmb3JtTWFjLmNtYWtlOgorICAg
ICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VzZXJN
ZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVy
ZVNhbXBsZU1hbmFnZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ2FwdHVy
ZVNhbXBsZU1hbmFnZXI6OlJlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXI6On5SZW1vdGVDYXB0dXJlU2FtcGxlTWFu
YWdlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyOjpzZXRD
b25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXI6
OmFkZFNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2Vy
OjpyZW1vdmVTb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDYXB0dXJlU2FtcGxlTWFu
YWdlcjo6ZGlzcGF0Y2hUb1RocmVhZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNhcHR1cmVT
YW1wbGVNYW5hZ2VyOjpzdG9yYWdlQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNh
cHR1cmVTYW1wbGVNYW5hZ2VyOjphdWRpb1NhbXBsZXNBdmFpbGFibGUpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIuaDogQWRkZWQuCisgICAg
ICAgICogV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlci5tZXNzYWdl
cy5pbjogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVSZWFsdGltZU1l
ZGlhU291cmNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlYWx0aW1lTWVk
aWFTb3VyY2U6OlJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVSZWFsdGltZU1lZGlhU291cmNlOjp+UmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2U6OndoZW5SZWFkeSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2U6OmRpZEZhaWwpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVSZWFsdGltZU1lZGlhU291cmNlOjpzZXRBc1JlYWR5KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZTo6Y2xvbmUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVSZWFsdGltZU1lZGlhU291cmNlOjpzZXRDYXBhYmlsaXRpZXMpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZWFsdGltZU1lZGlhU291cmNlOjpzZXRTZXR0aW5ncyk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2U6OnJlbW90ZUF1ZGlv
U2FtcGxlc0F2YWlsYWJsZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlYWx0aW1lTWVkaWFT
b3VyY2U6OnJlbW90ZVZpZGVvU2FtcGxlQXZhaWxhYmxlKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlUmVhbHRpbWVNZWRpYVNvdXJjZTo6Y29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVJlYWx0aW1lTWVkaWFTb3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2U6OnN0b3BQcm9kdWNpbmdEYXRhKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0U2hvdWxkQXBwbHlS
b3RhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2U6OmNh
cGFiaWxpdGllcyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2U6
OmFwcGx5Q29uc3RyYWludHMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZWFsdGltZU1lZGlh
U291cmNlOjphcHBseUNvbnN0cmFpbnRzU3VjY2VlZGVkKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlUmVhbHRpbWVNZWRpYVNvdXJjZTo6YXBwbHlDb25zdHJhaW50c0ZhaWxlZCk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2U6Omhhc0VuZGVkKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZTo6c3RvcEJlaW5nT2JzZXJ2ZWQpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZWFsdGltZU1lZGlhU291cmNlOjpyZXF1ZXN0VG9FbmQp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZS5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZTo6aWRl
bnRpZmllciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OnNldHRpbmdzIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVhbHRpbWVNZWRp
YVNvdXJjZTo6c2V0U2hvdWxkQ2FwdHVyZUluR1BVUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2U6OnNob3VsZENhcHR1cmVJbkdQVVByb2Nlc3MgY29u
c3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6Y3JlYXRlQ2Fw
dHVyZVNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOjpj
bG9uZVNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOjpj
bG9uZVZpZGVvU291cmNlKToKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhQ2FwdHVyZU1hbmFn
ZXI6OkF1ZGlvRmFjdG9yeTo6Y3JlYXRlQXVkaW9DYXB0dXJlU291cmNlKToKKyAgICAgICAgKFdl
YktpdDo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OkF1ZGlvRmFjdG9yeTo6c2V0U2hvdWxkQ2Fw
dHVyZUluR1BVUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYUNhcHR1cmVNYW5h
Z2VyOjpWaWRlb0ZhY3Rvcnk6OmNyZWF0ZVZpZGVvQ2FwdHVyZVNvdXJjZSk6CisgICAgICAgIChX
ZWJLaXQ6OlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOjpEaXNwbGF5RmFjdG9yeTo6Y3JlYXRlRGlz
cGxheUNhcHR1cmVTb3VyY2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlh
Q2FwdHVyZU1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNh
cHR1cmVNYW5hZ2VyLm1lc3NhZ2VzLmluOgorCiAyMDIwLTA1LTA3ICBZb3Vlbm4gRmFibGV0ICA8
eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgQXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXI6Om11dGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXJDb2NvYS5jcHAKaW5kZXggMGI2Njg3NWJkZDlmNDVlNTIxNGU1YzkxNmQ3ODFlYTEx
NjFiZDFkOS4uYmVlM2VlZDU3MjQxMTIwNTFhMDRmNGViNDJhMWQ4MDFhZGM1NWUzMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVyQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hLmNwcApA
QCAtMTQzLDkgKzE0Myw5IEBAIEF1ZGlvQ29tcG9uZW50SW5zdGFuY2UgQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJDb2NvYTo6Y3JlYXRlQXVkaW9Vbml0KENBQXVkCiAgICAgcmV0dXJuIHJl
bW90ZUlPVW5pdDsKIH0KIAotLy8gTWF5IGdldCBjYWxsZWQgb24gYSBiYWNrZ3JvdW5kIHRocmVh
ZC4KIHZvaWQgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYTo6cHVzaFNhbXBsZXMo
Y29uc3QgTWVkaWFUaW1lJiBzYW1wbGVUaW1lLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYgYXVk
aW9EYXRhLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgc2l6ZV90
IHNhbXBsZUNvdW50KQogeworICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VS
VChkZXNjcmlwdGlvbi5wbGF0Zm9ybURlc2NyaXB0aW9uKCkudHlwZSA9PSBQbGF0Zm9ybURlc2Ny
aXB0aW9uOjpDQUF1ZGlvU3RyZWFtQmFzaWNUeXBlKTsKICAgICBpZiAoIW1fcmVtb3RlSU9Vbml0
KQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3Vy
Y2VzLWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0
LnhjZmlsZWxpc3QKaW5kZXggYWQ5OWQzMzU2MjdkZDFhNzM3OWMyNzhmYWM4OWI3Y2QxYjE0OTY0
Yi4uNmEyOTExMTQ1ZTYwYmMyYjdmY2VkMmNiNDBjYTczMWZhNTE3MTkxZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJj
ZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtMTYzLDcgKzE2Myw5
IEBAICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvV2ViUGFnZS9WaXNpdGVkTGlua1RhYmxlQ29u
dHJvbGxlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5t
ZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VB
cmVhTWFwLm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL2NvY29hL0F1ZGlv
Q2FwdHVyZVNhbXBsZU1hbmFnZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nl
c3MvY29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlci5tZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJ
UikvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlci5tZXNzYWdlcy5p
bgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdl
ci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL2NvbS5h
cHBsZS5XZWJQcm9jZXNzLnNiLmluCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRT
b3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1v
dXRwdXQueGNmaWxlbGlzdAppbmRleCA3ZDcwZGE0YTMzYzZjM2FkNGZiMGE5NmFmZTE1ZDUxNWNm
YzgwZWM4Li5iZDg5MzNlM2NlNjQyYWMxNTg4ZDU5OWQxNjlkYjBiODI1NWYxNjM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CisrKyBi
L1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKQEAgLTEsNCAr
MSw2IEBACiAjIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgYnkgdGhlIGdlbmVyYXRlLXhjZmlsZWxp
c3RzIHNjcmlwdC4KKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQy
L0F1ZGlvQ2FwdHVyZVNhbXBsZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9BdWRpb0NhcHR1cmVTYW1wbGVNYW5h
Z2VyTWVzc2FnZXNSZXBsaWVzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJLaXQyL0F1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yUHJveHlNZXNzYWdlUmVjZWl2
ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9BdWRp
b1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5TWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0
b3JQcm94eU1lc3NhZ2VzUmVwbGllcy5oCkBAIC0xNjksNiArMTcxLDggQEAgJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
UHJveHlNZXNzYWcKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQy
L1JlbW90ZUNETVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ0RNUHJveHlNZXNzYWdlcy5oCiAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDRE1Qcm94eU1lc3Nh
Z2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0
Mi9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNhcHR1cmVTYW1wbGVN
YW5hZ2VyTWVzc2FnZXNSZXBsaWVzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJLaXQyL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlUmVjZWl2
ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94
eU1lc3NhZ2VzUmVwbGllcy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggYzlkNjM2
MzU2ZGVhNjVmZTFlNTU3MWM1ODFiZjIwMTczZTQ5NDhjOS4uYTEyYjc4NjNjOTI1NzkyMzg2MWIz
MGY2YjAyNzA1MjBmMWQ2YWNiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291
cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMTk5
LDYgKzE5OSw3IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogCVdlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTV0NsaWVudENvbm5lY3Rpb24gXAogCVdlYlByb2Nlc3MvV2ViUHJvY2VzcyBcCiAJV2ViUHJv
Y2Vzcy9jb2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyIFwKKwlXZWJQcm9jZXNzL2NvY29hL1Jl
bW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyIFwKIAlXZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNh
cHR1cmVNYW5hZ2VyIFwKIAlXZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIg
XAogCVdlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyIFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtTWFjLmNtYWtlCmluZGV4IGNjNjZjOTIzMzc4N2RhNTdlZDZhOGRmNTNmODlhYWJmN2E5
MjFhZTUuLjQ4ZTE2MDEzZGNiM2ExM2RmZjBkNWJjZTc1ZjNhY2U1NDEwNDk0MmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybU1hYy5jbWFrZQpAQCAtMjA4LDYgKzIwOCw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdF9N
RVNTQUdFU19JTl9GSUxFUwogICAgIFdlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3Jk
aW5hdG9yLm1lc3NhZ2VzLmluCiAKICAgICBXZWJQcm9jZXNzL2NvY29hL1BsYXliYWNrU2Vzc2lv
bk1hbmFnZXIubWVzc2FnZXMuaW4KKyAgICBXZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVT
YW1wbGVNYW5hZ2VyLm1lc3NhZ2VzLmluCiAgICAgV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFD
YXB0dXJlTWFuYWdlci5tZXNzYWdlcy5pbgogICAgIFdlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxs
c2NyZWVuTWFuYWdlci5tZXNzYWdlcy5pbgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggOTU2
N2FlOWQ4YjdmODc5MGRkZGVjOGJkNjA3YjY3N2ZhNDQ5YzIzNS4uMTY4ZjFkYjEwNmQ1NGMyNTBk
NzA3NDVhNDJmYWI5NDBhMTliYWZkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2Vz
Q29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtNTU1LDYg
KzU1NSw4IEBAIFdlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmNwcAog
V2ViUHJvY2Vzcy9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JDb2NvYS5tbQog
CiBXZWJQcm9jZXNzL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXIubW0KK1dlYlByb2Nlc3Mv
Y29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIuY3BwCitXZWJQcm9jZXNzL2NvY29hL1Jl
bW90ZVJlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCiBXZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNh
cHR1cmVNYW5hZ2VyLmNwcAogV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
Lm1tCiBXZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdl
clByb3h5LmNwcAppbmRleCBiMjM0M2Y0ZTg1MTJhNjgyMjNkMzlmZjYwYjgyYzQ1NTJjZjgyMGZm
Li5lODkzY2QyYzA5MWVmZmNhNDcwNDdhNDhmODc0ZmJkNDZiYzkzMzE1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJl
TWFuYWdlclByb3h5LmNwcApAQCAtMjksNiArMjksNyBAQAogI2lmIFBMQVRGT1JNKENPQ09BKSAm
JiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1
ZGUgIlJlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJTaGFy
ZWRSaW5nQnVmZmVyU3RvcmFnZS5oIgogI2luY2x1ZGUgIlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2Vy
TWVzc2FnZXMuaCIKICNpbmNsdWRlICJVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5TWVzc2Fn
ZXMuaCIKQEAgLTEzOCw3ICsxMzksNyBAQCBwcml2YXRlOgogICAgICAgICB1aW50NjRfdCBzdGFy
dEZyYW1lOwogICAgICAgICB1aW50NjRfdCBlbmRGcmFtZTsKICAgICAgICAgbV9yaW5nQnVmZmVy
LmdldEN1cnJlbnRGcmFtZUJvdW5kcyhzdGFydEZyYW1lLCBlbmRGcmFtZSk7Ci0gICAgICAgIG1f
Y29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OkF1ZGlv
U2FtcGxlc0F2YWlsYWJsZShtX2lkLCB0aW1lLCBudW1iZXJPZkZyYW1lcywgc3RhcnRGcmFtZSwg
ZW5kRnJhbWUpLCAwKTsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1v
dGVDYXB0dXJlU2FtcGxlTWFuYWdlcjo6QXVkaW9TYW1wbGVzQXZhaWxhYmxlKG1faWQsIHRpbWUs
IG51bWJlck9mRnJhbWVzLCBzdGFydEZyYW1lLCBlbmRGcmFtZSksIDApOwogICAgIH0KIAogICAg
IHZvaWQgdmlkZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFTYW1wbGUmIHNhbXBsZSkgZmluYWwKQEAg
LTE4MSw3ICsxODIsNyBAQCBwcml2YXRlOgogICAgICAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBo
YW5kbGU7CiAgICAgICAgIGlmIChzdG9yYWdlKQogICAgICAgICAgICAgc3RvcmFnZS0+Y3JlYXRl
SGFuZGxlKGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7Ci0gICAg
ICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6
OlN0b3JhZ2VDaGFuZ2VkKG1faWQsIGhhbmRsZSwgbV9kZXNjcmlwdGlvbiwgbV9udW1iZXJPZkZy
YW1lcyksIDApOworICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZUNh
cHR1cmVTYW1wbGVNYW5hZ2VyOjpBdWRpb1N0b3JhZ2VDaGFuZ2VkKG1faWQsIGhhbmRsZSwgbV9k
ZXNjcmlwdGlvbiwgbV9udW1iZXJPZkZyYW1lcyksIDApOwogICAgIH0KIAogICAgIGJvb2wgcHJl
dmVudFNvdXJjZUZyb21TdG9wcGluZygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3MTdlOGRmNTVkMjY2MmFjZWNhYWFhZDgyMzczNGU4
OWFhNWU5MjMxLi45NzBjNmRmOWM1OGZlMDY5YmVlYjc1ZTY3ZWY0M2FkYWQ0MWI2ODdkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE0
Miw2ICsxNDIsNyBAQAogCQkwRkNCNEU2QzE4QkJGMjZBMDAwRkNGQzkgLyogV0tDb250ZW50Vmll
d0ludGVyYWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRkNCNEU2QTE4QkJGMjZBMDAwRkNGQzkgLyogV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
LmggKi87IH07CiAJCTBGRENEN0Y3MUQ0N0U5MkEwMDlGMDhCQyAvKiBMb2dJbml0aWFsaXphdGlv
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZEQ0Q3
RjYxRDQ3RTkyQTAwOUYwOEJDIC8qIExvZ0luaXRpYWxpemF0aW9uLmggKi87IH07CiAJCTBGRjI0
QTJEMTg3OUU0QkMwMDNBQkYwQyAvKiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVz
c2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGRjI0QTJCMTg3OUU0QkMwMDNBQkYwQyAvKiBSZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJMEZGMjRBMkQxODc5RTRCQzAw
M0FCRjBEIC8qIFJlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRjI0QTJCMTg3
OUU0QkMwMDNBQkYwRCAvKiBSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlck1lc3NhZ2VSZWNlaXZl
ci5jcHAgKi87IH07CiAJCTBGRjI0QTJFMTg3OUU0QkMwMDNBQkYwQyAvKiBSZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGRjI0QTJDMTg3OUU0QkMwMDNBQkYwQyAvKiBSZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXMuaCAqLzsgfTsKIAkJMEZGMjY0QTAxQTFGRjlD
QzAwMUZFNzU5IC8qIFJlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3MDdDNzkxQTFG
RUVBMzAwREE3QTQ1IC8qIFJlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YS5o
ICovOyB9OwogCQkwRkZFRDk4RTIzQTMyMDBBMDBFRUY0NTkgLyogV0tXZWJWaWV3SU9TLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkZFRDk4QzIzQTMy
MDA0MDBFRUY0NTkgLyogV0tXZWJWaWV3SU9TLmggKi87IH07CkBAIC0yMjU4LDYgKzIyNTksNyBA
QAogCQkwRkNCNEU2QjE4QkJGMjZBMDAwRkNGQzkgLyogV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tDb250ZW50Vmll
d0ludGVyYWN0aW9uLm1tOyBwYXRoID0gaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZEQ0Q3RjYxRDQ3RTkyQTAwOUYwOEJDIC8q
IExvZ0luaXRpYWxpemF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExv
Z0luaXRpYWxpemF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRjI0QTJC
MTg3OUU0QkMwMDNBQkYwQyAvKiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2Fn
ZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFJlbW90
ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBwYXRoID0gRGVy
aXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2Fn
ZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJMEZG
MjRBMkIxODc5RTRCQzAwM0FCRjBEIC8qIFJlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyTWVzc2Fn
ZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFJlbW90
ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcDsgcGF0aCA9IERlcml2ZWRT
b3VyY2VzL1dlYktpdDIvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIu
Y3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQkwRkYyNEEyQzE4NzlF
NEJDMDAzQUJGMEMgLyogUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFJlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhUHJveHlNZXNzYWdlcy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BS
T0RVQ1RTX0RJUjsgfTsKIAkJMEZGMjRBMkYxODc5RTRGRTAwM0FCRjBDIC8qIFJlbW90ZUxheWVy
VHJlZURyYXdpbmdBcmVhUHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWFQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEZGRUQ5OEMyM0EzMjAwNDAwRUVGNDU5IC8qIFdLV2ViVmlld0lPUy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXS1dlYlZpZXdJT1MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM0MjksNiAr
MzQzMSwxMSBAQAogCQk0MTU3ODUzMDIxMjc2QjZGMDBERDM4MDAgLyogY29weS13ZWJjb250ZW50
LXJlc291cmNlcy10by1wcml2YXRlLWhlYWRlcnMuc2ggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5zaDsgcGF0aCA9ICJjb3B5LXdl
YmNvbnRlbnQtcmVzb3VyY2VzLXRvLXByaXZhdGUtaGVhZGVycy5zaCI7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQxNTdFNEFGMjBFMkVDOTgwMEE2QzBENyAvKiBjb20uZ29vZ2xlLm8x
ZGJyb3dzZXJwbHVnaW4uc2IgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gY29tLmdvb2dsZS5vMWRi
cm93c2VycGx1Z2luLnNiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTU4NjQ5QTIz
QkUwOTI0MDBBMEE2MUUgLyogUlRDRW5jb2RlcklkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUlRDRW5jb2RlcklkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNDE2ODRDNEQyNDY0M0JGQTAwMUNFOEVEIC8qIFJlbW90ZUNhcHR1cmVT
YW1wbGVNYW5hZ2VyLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlbW90ZUNh
cHR1cmVTYW1wbGVNYW5hZ2VyLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0MTY4NEM0RTI0NjQzQzgxMDAxQ0U4RUQgLyogUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFn
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ2FwdHVyZVNhbXBs
ZU1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE2ODRDNEYyNDY0M0Qz
RjAwMUNFOEVEIC8qIFJlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE2ODRDNTAyNDY0NTBGRDAwMUNFOEVEIC8q
IFJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTQxNjg0QzUxMjQ2NDUwRkQwMDFDRThFRCAvKiBSZW1vdGVSZWFsdGlt
ZU1lZGlhU291cmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZVJl
YWx0aW1lTWVkaWFTb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE2Q0Q3
NDUyM0ZCMTc4QjAwNjYxRDk5IC8qIE1ETlNSZWdpc3RlcklkZW50aWZpZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTUROU1JlZ2lzdGVySWRlbnRpZmllci5oOyBwYXRoID0g
TmV0d29yay93ZWJydGMvTUROU1JlZ2lzdGVySWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MTZGODA4NjI0NUIzOTc0MDBCNjhGMDIgLyogTGliV2ViUlRDTmV0d29y
ay5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBMaWJXZWJSVENOZXR3b3JrLm1l
c3NhZ2VzLmluOyBwYXRoID0gTmV0d29yay93ZWJydGMvTGliV2ViUlRDTmV0d29yay5tZXNzYWdl
cy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE2RjgwODkyNDVDN0ZGNTAwQjY4
RjAyIC8qIExpYldlYlJUQ05ldHdvcmsuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gTGliV2ViUlRDTmV0d29yay5jcHA7IHBhdGggPSBOZXR3b3JrL3dlYnJ0Yy9MaWJX
ZWJSVENOZXR3b3JrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTgzNjYsMTEg
KzgzNzMsMTYgQEAKIAkJN0M2RTcwRjgxOEIyRDQ3RTAwRjI0RTJFIC8qIGNvY29hICovID0gewog
CQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk0MTY4NEM0RjI0NjQzRDNG
MDAxQ0U4RUQgLyogUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIuY3BwICovLAorCQkJCTQxNjg0
QzRFMjQ2NDNDODEwMDFDRThFRCAvKiBSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlci5oICovLAor
CQkJCTQxNjg0QzREMjQ2NDNCRkEwMDFDRThFRCAvKiBSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdl
ci5tZXNzYWdlcy5pbiAqLywKIAkJCQlDRDQ1NzBDQjI0NDBGQjJBMDBBM0RDRUIgLyogQXVkaW9T
ZXNzaW9uUm91dGluZ0FyYml0cmF0b3IuY3BwICovLAogCQkJCUNENDU3MENBMjQ0MEZCMkEwMEEz
RENFQiAvKiBBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvci5oICovLAogCQkJCUNEQTI5QTE5
MUNCREJGNDEwMDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyLmggKi8sCiAJCQkJQ0RB
MjlBMUMxQ0JEQkY1QjAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXIubWVzc2FnZXMu
aW4gKi8sCiAJCQkJQ0RBMjlBMTgxQ0JEQkY0MTAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vzc2lvbk1h
bmFnZXIubW0gKi8sCisJCQkJNDE2ODRDNTAyNDY0NTBGRDAwMUNFOEVEIC8qIFJlbW90ZVJlYWx0
aW1lTWVkaWFTb3VyY2UuY3BwICovLAorCQkJCTQxNjg0QzUxMjQ2NDUwRkQwMDFDRThFRCAvKiBS
ZW1vdGVSZWFsdGltZU1lZGlhU291cmNlLmggKi8sCiAJCQkJQ0Q0OTFCMDUxRTcwRDA1RjAwMDA5
MDY2IC8qIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcCAqLywKIAkJCQlDRDQ5MUIwNjFFNzBE
MDVGMDAwMDkwNjYgLyogVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuaCAqLywKIAkJCQlDRDQ5MUIw
QTFFNzMyRDEyMDAwMDkwNjYgLyogVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIubWVzc2FnZXMuaW4g
Ki8sCkBAIC05OTYwLDYgKzk5NzIsNyBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKIAkJCQkyRDdERUJFMjIxMjY5RTRCMDBCOUY3M0MgLyogdW5pZmllZC1zb3VyY2VzICov
LAorCQkJCTBGRjI0QTJCMTg3OUU0QkMwMDNBQkYwRCAvKiBSZW1vdGVDYXB0dXJlU2FtcGxlTWFu
YWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJQ0Q0NTcwRDAyNDQxMDE0QTAwQTNEQ0VC
IC8qIEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3Bw
ICovLAogCQkJCUNENDU3MEQxMjQ0MTAxNEIwMEEzRENFQiAvKiBBdWRpb1Nlc3Npb25Sb3V0aW5n
QXJiaXRyYXRvclByb3h5TWVzc2FnZXMuaCAqLywKIAkJCQlDRDQ1NzBEMjI0NDEwMTRCMDBBM0RD
RUIgLyogQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3JQcm94eU1lc3NhZ2VzUmVwbGllcy5o
ICovLApAQCAtMTI2NzIsNiArMTI2ODUsNyBAQAogCQkJCTJEOTJBNzdCMjEyQjZBNzEwMEY0OTNG
RCAvKiBBcmd1bWVudENvZGVycy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyREVCMUQyRTIxMjc0
NzM2MDA5MzM5MDYgLyogQXJndW1lbnRDb2RlcnNDRi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQky
RDkyQTc3QzIxMkI2QTcxMDBGNDkzRkQgLyogQXR0YWNobWVudC5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQkwRkYyNEEyRDE4NzlFNEJDMDAzQUJGMEQgLyogUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFn
ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0Q0NTcwRDQyNDQxMUQw
RjAwQTNEQ0VCIC8qIEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUNEN0NGMzYxMjQ0NENDQTYwMDNCQzRENSAvKiBBdWRpb1Nlc3Npb25Sb3V0aW5n
QXJiaXRyYXRvclByb3h5Q29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQlDRDQ1NzBEMzI0NDEx
M0I1MDBBM0RDRUIgLyogQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3JQcm94eU1lc3NhZ2VS
ZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9jb2NvYS9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmNiYzNkZDU5YzNmZTcwMDk0MmM0NjE1OWQzMzgxM2RiNGYxZDNmYjQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNh
bXBsZU1hbmFnZXIuY3BwCkBAIC0wLDAgKzEsMTU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLmgiCisKKyNp
bmNsdWRlICJSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlck1lc3NhZ2VzLmgiCisjaW5jbHVkZSAi
U2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2UuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1dlYkF1ZGlvQnVm
ZmVyTGlzdC5oPgorCisjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShNRURJQV9TVFJFQU0p
CisKK25hbWVzcGFjZSBXZWJLaXQgewordXNpbmcgbmFtZXNwYWNlIFBBTDsKK3VzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOworCitSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlcjo6UmVtb3RlQ2FwdHVy
ZVNhbXBsZU1hbmFnZXIoKQorICAgIDogbV9xdWV1ZShXb3JrUXVldWU6OmNyZWF0ZSgiUmVtb3Rl
Q2FwdHVyZVNhbXBsZU1hbmFnZXIiLCBXb3JrUXVldWU6OlR5cGU6OlNlcmlhbCwgV29ya1F1ZXVl
OjpRT1M6OlVzZXJJbnRlcmFjdGl2ZSkpCit7Cit9CisKK1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5h
Z2VyOjp+UmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIoKQoreworICAgIHNldENvbm5lY3Rpb24o
bnVsbHB0cik7Cit9CisKK3ZvaWQgUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXI6OnNldENvbm5l
Y3Rpb24oSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uKQoreworICAgIGlmIChtX2Nvbm5lY3Rp
b24gPT0gY29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fY29ubmVjdGlv
bikKKyAgICAgICAgbV9jb25uZWN0aW9uLT5yZW1vdmVUaHJlYWRNZXNzYWdlUmVjZWl2ZXIoTWVz
c2FnZXM6OlJlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkp
OworCisgICAgbV9jb25uZWN0aW9uID0gV1RGTW92ZShjb25uZWN0aW9uKTsKKworICAgIGlmICht
X2Nvbm5lY3Rpb24pCisgICAgICAgIG1fY29ubmVjdGlvbi0+YWRkVGhyZWFkTWVzc2FnZVJlY2Vp
dmVyKE1lc3NhZ2VzOjpSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVy
TmFtZSgpLCB0aGlzKTsKK30KKwordm9pZCBSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlcjo6YWRk
U291cmNlKFJlZjxSZW1vdGVSZWFsdGltZU1lZGlhU291cmNlPiYmIHNvdXJjZSkKK3sKKyAgICBB
U1NFUlQoV1RGOjppc01haW5SdW5Mb29wKCkpOworICAgIHNldENvbm5lY3Rpb24oc291cmNlLT5j
b25uZWN0aW9uKCkpOworCisgICAgZGlzcGF0Y2hUb1RocmVhZChbdGhpcywgc291cmNlID0gV1RG
TW92ZShzb3VyY2UpXSgpIG11dGFibGUgeworICAgICAgICBhdXRvIGlkZW50aWZpZXIgPSBzb3Vy
Y2UtPmlkZW50aWZpZXIoKTsKKworICAgICAgICBBU1NFUlQoIW1fc291cmNlcy5jb250YWlucyhp
ZGVudGlmaWVyKSk7CisgICAgICAgIG1fc291cmNlcy5hZGQoaWRlbnRpZmllciwgbWFrZVVuaXF1
ZTxSZW1vdGVBdWRpbz4oV1RGTW92ZShzb3VyY2UpKSk7CisgICAgfSk7Cit9CisKK3ZvaWQgUmVt
b3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXI6OnJlbW92ZVNvdXJjZShXZWJDb3JlOjpSZWFsdGltZU1l
ZGlhU291cmNlSWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAgIEFTU0VSVChXVEY6OmlzTWFp
blJ1bkxvb3AoKSk7CisgICAgZGlzcGF0Y2hUb1RocmVhZChbdGhpcywgaWRlbnRpZmllcl0gewor
ICAgICAgICBBU1NFUlQobV9zb3VyY2VzLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKKyAgICAgICAg
bV9zb3VyY2VzLnJlbW92ZShpZGVudGlmaWVyKTsKKyAgICB9KTsKK30KKwordm9pZCBSZW1vdGVD
YXB0dXJlU2FtcGxlTWFuYWdlcjo6ZGlzcGF0Y2hUb1RocmVhZChGdW5jdGlvbjx2b2lkKCk+JiYg
Y2FsbGJhY2spCit7CisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goV1RGTW92ZShjYWxsYmFjaykpOwor
fQorCit2b2lkIFJlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyOjphdWRpb1N0b3JhZ2VDaGFuZ2Vk
KFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0
IFNoYXJlZE1lbW9yeTo6SGFuZGxlJiBoYW5kbGUsIGNvbnN0IFdlYkNvcmU6OkNBQXVkaW9TdHJl
YW1EZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKQorewor
ICAgIEFTU0VSVCghV1RGOjppc01haW5SdW5Mb29wKCkpOworCisgICAgYXV0byBpdGVyYXRvciA9
IG1fc291cmNlcy5maW5kKGlkZW50aWZpZXIpOworICAgIGlmIChpdGVyYXRvciA9PSBtX3NvdXJj
ZXMuZW5kKCkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoV2ViUlRDLCAiVW5hYmxlIHRv
IGZpbmQgc291cmNlICVsbHUgZm9yIHN0b3JhZ2VDaGFuZ2VkIiwgaWRlbnRpZmllci50b1VJbnQ2
NCgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpdGVyYXRvci0+dmFsdWUtPnNldFN0
b3JhZ2UoaGFuZGxlLCBkZXNjcmlwdGlvbiwgbnVtYmVyT2ZGcmFtZXMpOworfQorCit2b2lkIFJl
bW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyOjphdWRpb1NhbXBsZXNBdmFpbGFibGUoV2ViQ29yZTo6
UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIgaWRlbnRpZmllciwgTWVkaWFUaW1lIHRpbWUs
IHVpbnQ2NF90IG51bWJlck9mRnJhbWVzLCB1aW50NjRfdCBzdGFydEZyYW1lLCB1aW50NjRfdCBl
bmRGcmFtZSkKK3sKKyAgICBBU1NFUlQoIVdURjo6aXNNYWluUnVuTG9vcCgpKTsKKworICAgIGF1
dG8gaXRlcmF0b3IgPSBtX3NvdXJjZXMuZmluZChpZGVudGlmaWVyKTsKKyAgICBpZiAoaXRlcmF0
b3IgPT0gbV9zb3VyY2VzLmVuZCgpKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFdlYlJU
QywgIlVuYWJsZSB0byBmaW5kIHNvdXJjZSAlbGx1IGZvciBhdWRpb1NhbXBsZXNBdmFpbGFibGUi
LCBpZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGl0
ZXJhdG9yLT52YWx1ZS0+YXVkaW9TYW1wbGVzQXZhaWxhYmxlKHRpbWUsIG51bWJlck9mRnJhbWVz
LCBzdGFydEZyYW1lLCBlbmRGcmFtZSk7Cit9CisKK1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2Vy
OjpSZW1vdGVBdWRpbzo6UmVtb3RlQXVkaW8oUmVmPFJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2U+
JiYgc291cmNlKQorICAgIDogbV9zb3VyY2UoV1RGTW92ZShzb3VyY2UpKQorICAgICwgbV9yaW5n
QnVmZmVyKG1ha2VVbmlxdWU8Q0FSaW5nQnVmZmVyPihtYWtlVW5pcXVlUmVmPFNoYXJlZFJpbmdC
dWZmZXJTdG9yYWdlPihudWxscHRyKSkpCit7Cit9CisKK3ZvaWQgUmVtb3RlQ2FwdHVyZVNhbXBs
ZU1hbmFnZXI6OlJlbW90ZUF1ZGlvOjpzZXRTdG9yYWdlKGNvbnN0IFNoYXJlZE1lbW9yeTo6SGFu
ZGxlJiBoYW5kbGUsIGNvbnN0IFdlYkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZGVz
Y3JpcHRpb24sIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKQoreworICAgIG1fZGVzY3JpcHRpb24g
PSBkZXNjcmlwdGlvbjsKKworICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IG1lbW9yeTsKKyAgICBp
ZiAoIWhhbmRsZS5pc051bGwoKSkgeworICAgICAgICBtZW1vcnkgPSBTaGFyZWRNZW1vcnk6Om1h
cChoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOworICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUl9JRighbWVtb3J5LCBXZWJSVEMsICJVbmFibGUgdG8gY3JlYXRlIHNo
YXJlZCBtZW1vcnkgZm9yIGF1ZGlvIHNvdXJjZSAlbGx1IiwgbV9zb3VyY2UtPmlkZW50aWZpZXIo
KS50b1VJbnQ2NCgpKTsKKyAgICB9CisKKyAgICBhdXRvJiBzdG9yYWdlID0gc3RhdGljX2Nhc3Q8
U2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2UmPihtX3JpbmdCdWZmZXItPnN0b3JhZ2UoKSk7CisgICAg
aWYgKCFtZW1vcnkpIHsKKyAgICAgICAgbV9yaW5nQnVmZmVyLT5kZWFsbG9jYXRlKCk7CisgICAg
ICAgIHN0b3JhZ2Uuc2V0UmVhZE9ubHkoZmFsc2UpOworICAgICAgICBzdG9yYWdlLnNldFN0b3Jh
Z2UobnVsbHB0cik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzdG9yYWdlLnNldFN0
b3JhZ2UobWVtb3J5LnJlbGVhc2VOb25OdWxsKCkpOworICAgIHN0b3JhZ2Uuc2V0UmVhZE9ubHko
dHJ1ZSk7CisgICAgbV9yaW5nQnVmZmVyLT5hbGxvY2F0ZShkZXNjcmlwdGlvbiwgbnVtYmVyT2ZG
cmFtZXMpOworfQorCit2b2lkIFJlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyOjpSZW1vdGVBdWRp
bzo6YXVkaW9TYW1wbGVzQXZhaWxhYmxlKE1lZGlhVGltZSB0aW1lLCB1aW50NjRfdCBudW1iZXJP
ZkZyYW1lcywgdWludDY0X3Qgc3RhcnRGcmFtZSwgdWludDY0X3QgZW5kRnJhbWUpCit7CisgICAg
Ly8gRklYTUU6IFdlIHNob3VsZCBhbGxvY2F0ZSB0aGlzIGJ1ZmZlciBvbmNlIGFuZCByZXNpemUg
aXQgYXMgbmVlZGVkLgorICAgIFdlYkF1ZGlvQnVmZmVyTGlzdCBhdWRpb0RhdGEobV9kZXNjcmlw
dGlvbiwgbnVtYmVyT2ZGcmFtZXMpOworCisgICAgbV9yaW5nQnVmZmVyLT5zZXRDdXJyZW50RnJh
bWVCb3VuZHMoc3RhcnRGcmFtZSwgZW5kRnJhbWUpOworICAgIG1fcmluZ0J1ZmZlci0+ZmV0Y2go
YXVkaW9EYXRhLmxpc3QoKSwgbnVtYmVyT2ZGcmFtZXMsIHRpbWUudGltZVZhbHVlKCkpOworCisg
ICAgbV9zb3VyY2UtPnJlbW90ZUF1ZGlvU2FtcGxlc0F2YWlsYWJsZSh0aW1lLCBhdWRpb0RhdGEs
IG1fZGVzY3JpcHRpb24sIG51bWJlck9mRnJhbWVzKTsKK30KKworfQorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVDYXB0dXJlU2FtcGxl
TWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVT
YW1wbGVNYW5hZ2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGQ5MDBkYjA4ZmJkNDhkODRjZjk2ZGQ2OGYzNGEy
MDYwMWYwOGUyZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9j
b2NvYS9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlci5oCkBAIC0wLDAgKzEsODUgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIk1lc3NhZ2VS
ZWNlaXZlci5oIgorI2luY2x1ZGUgIlJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2UuaCIKKyNpbmNs
dWRlICJTaGFyZWRNZW1vcnkuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NBQXVkaW9TdHJlYW1EZXNj
cmlwdGlvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ0FSaW5nQnVmZmVyLmg+CisjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitjbGFzcyBSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlciA6IHB1YmxpYyBJUEM6
OkNvbm5lY3Rpb246OlRocmVhZE1lc3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CitwdWJsaWM6CisgICAgUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIoKTsKKyAg
ICB+UmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIoKTsKKworICAgIHZvaWQgYWRkU291cmNlKFJl
ZjxSZW1vdGVSZWFsdGltZU1lZGlhU291cmNlPiYmKTsKKyAgICB2b2lkIHJlbW92ZVNvdXJjZShX
ZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllcik7CisKKyAgICB2b2lkIGRpZFJl
Y2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOworCitwcml2YXRl
OgorICAgIC8vIElQQzo6Q29ubmVjdGlvbjo6VGhyZWFkTWVzc2FnZVJlY2VpdmVyCisgICAgdm9p
ZCBkaXNwYXRjaFRvVGhyZWFkKEZ1bmN0aW9uPHZvaWQoKT4mJikgZmluYWw7CisKKyAgICAvLyBN
ZXNzYWdlcworICAgIHZvaWQgYXVkaW9TdG9yYWdlQ2hhbmdlZChXZWJDb3JlOjpSZWFsdGltZU1l
ZGlhU291cmNlSWRlbnRpZmllciwgY29uc3QgU2hhcmVkTWVtb3J5OjpIYW5kbGUmLCBjb25zdCBX
ZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCB1aW50NjRfdCBudW1iZXJPZkZyYW1l
cyk7CisgICAgdm9pZCBhdWRpb1NhbXBsZXNBdmFpbGFibGUoV2ViQ29yZTo6UmVhbHRpbWVNZWRp
YVNvdXJjZUlkZW50aWZpZXIsIE1lZGlhVGltZSwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMsIHVp
bnQ2NF90IHN0YXJ0RnJhbWUsIHVpbnQ2NF90IGVuZEZyYW1lKTsKKworICAgIHZvaWQgc2V0Q29u
bmVjdGlvbihJUEM6OkNvbm5lY3Rpb24qKTsKKworICAgIGNsYXNzIFJlbW90ZUF1ZGlvIHsKKyAg
ICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgcHVibGljOgorICAgICAgICBleHBs
aWNpdCBSZW1vdGVBdWRpbyhSZWY8UmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZT4mJik7CisKKyAg
ICAgICAgdm9pZCBzZXRTdG9yYWdlKGNvbnN0IFNoYXJlZE1lbW9yeTo6SGFuZGxlJiwgY29uc3Qg
V2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgdWludDY0X3QgbnVtYmVyT2ZGcmFt
ZXMpOworICAgICAgICB2b2lkIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShNZWRpYVRpbWUsIHVpbnQ2
NF90IG51bWJlck9mRnJhbWVzLCB1aW50NjRfdCBzdGFydEZyYW1lLCB1aW50NjRfdCBlbmRGcmFt
ZSk7CisKKyAgICBwcml2YXRlOgorICAgICAgICBSZWY8UmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJj
ZT4gbV9zb3VyY2U7CisgICAgICAgIFdlYkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiBt
X2Rlc2NyaXB0aW9uOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6Q0FSaW5nQnVm
ZmVyPiBtX3JpbmdCdWZmZXI7CisgICAgfTsKKworICAgIFJlZjxXb3JrUXVldWU+IG1fcXVldWU7
CisgICAgUmVmUHRyPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOworCisgICAgLy8gYmFj
a2dyb3VuZCB0aHJlYWQgbWVtYmVyCisgICAgSGFzaE1hcDxXZWJDb3JlOjpSZWFsdGltZU1lZGlh
U291cmNlSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUF1ZGlvPj4gbV9zb3VyY2Vz
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVT
YW1wbGVNYW5hZ2VyLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMwNTg4YjY1YmFhZjY3NjA1ZmQ3
OWNmNGNlNzliNTkzNmEwYmYyZDgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIubWVzc2FnZXMuaW4KQEAg
LTAsMCArMSwzMSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
IyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2lm
IEVOQUJMRShNRURJQV9TVFJFQU0pCisKK21lc3NhZ2VzIC0+IFJlbW90ZUNhcHR1cmVTYW1wbGVN
YW5hZ2VyIE5vdFJlZkNvdW50ZWQgeworICAgIEF1ZGlvU3RvcmFnZUNoYW5nZWQoV2ViQ29yZTo6
UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIgaWQsIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpI
YW5kbGUgc3RvcmFnZUhhbmRsZSwgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uIGRl
c2NyaXB0aW9uLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcykKKyAgICBBdWRpb1NhbXBsZXNBdmFp
bGFibGUoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIgaWQsIE1lZGlhVGlt
ZSB0aW1lLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcywgdWludDY0X3Qgc3RhcnRGcmFtZSwgdWlu
dDY0X3QgZW5kRnJhbWUpCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL2NvY29hL1JlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2UuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmE3ZjA0MDBlNTJiMWM2NTIyMGExNjdlZWFkYTUwZWVlZmYyNjk1NzIKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVtb3RlUmVhbHRpbWVN
ZWRpYVNvdXJjZS5jcHAKQEAgLTAsMCArMSwzMDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZS5oIgorCisjaWYg
UExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJHUFVQ
cm9jZXNzQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIlNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlLmgi
CisjaW5jbHVkZSAiVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuaCIKKyNpbmNsdWRlICJVc2VyTWVk
aWFDYXB0dXJlTWFuYWdlck1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiVXNlck1lZGlhQ2FwdHVyZU1h
bmFnZXJQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUg
PFdlYkNvcmUvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTWVk
aWFDb25zdHJhaW50cy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVhbHRpbWVNZWRpYVNvdXJjZUNl
bnRlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVtb3RlVmlkZW9TYW1wbGUuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1dlYkF1ZGlvQnVmZmVyTGlzdC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK3Vz
aW5nIG5hbWVzcGFjZSBQQUw7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworUmVmPFJlYWx0
aW1lTWVkaWFTb3VyY2U+IFJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2U6OmNyZWF0ZShjb25zdCBX
ZWJDb3JlOjpDYXB0dXJlRGV2aWNlJiBkZXZpY2UsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhQ29uc3Ry
YWludHMmIGNvbnN0cmFpbnRzLCBTdHJpbmcmJiBuYW1lLCBTdHJpbmcmJiBoYXNoU2FsdCwgVXNl
ck1lZGlhQ2FwdHVyZU1hbmFnZXImIG1hbmFnZXIsIGJvb2wgc2hvdWxkQ2FwdHVyZUluR1BVUHJv
Y2VzcykKK3sKKyAgICBhdXRvIHNvdXJjZSA9IGFkb3B0UmVmKCpuZXcgUmVtb3RlUmVhbHRpbWVN
ZWRpYVNvdXJjZShSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSwgZGV2
aWNlLnR5cGUoKSwgV1RGTW92ZShuYW1lKSwgV1RGTW92ZShoYXNoU2FsdCksIG1hbmFnZXIsIHNo
b3VsZENhcHR1cmVJbkdQVVByb2Nlc3MpKTsKKyAgICBtYW5hZ2VyLmFkZFNvdXJjZShzb3VyY2Uu
Y29weVJlZigpKTsKKyAgICBzb3VyY2UtPmNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5
KE1lc3NhZ2VzOjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5OjpDcmVhdGVNZWRpYVNvdXJj
ZUZvckNhcHR1cmVEZXZpY2VXaXRoQ29uc3RyYWludHMoc291cmNlLT5pZGVudGlmaWVyKCksIGRl
dmljZSwgc291cmNlLT5kZXZpY2VJREhhc2hTYWx0KCksIGNvbnN0cmFpbnRzKSwgW3NvdXJjZSA9
IHNvdXJjZS5jb3B5UmVmKCldKGJvb2wgc3VjY2VlZGVkLCBhdXRvJiYgZXJyb3JNZXNzYWdlLCBh
dXRvJiYgc2V0dGluZ3MsIGF1dG8mJiBjYXBhYmlsaXRpZXMpIHsKKyAgICAgICAgaWYgKCFzdWNj
ZWVkZWQpIHsKKyAgICAgICAgICAgIHNvdXJjZS0+ZGlkRmFpbChXVEZNb3ZlKGVycm9yTWVzc2Fn
ZSkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIHNvdXJjZS0+c2V0
TmFtZShTdHJpbmcgeyBzZXR0aW5ncy5sYWJlbCgpLnN0cmluZygpIH0pOworICAgICAgICBzb3Vy
Y2UtPnNldFNldHRpbmdzKFdURk1vdmUoc2V0dGluZ3MpKTsKKyAgICAgICAgc291cmNlLT5zZXRD
YXBhYmlsaXRpZXMoV1RGTW92ZShjYXBhYmlsaXRpZXMpKTsKKyAgICAgICAgc291cmNlLT5zZXRB
c1JlYWR5KCk7CisgICAgfSk7CisgICAgcmV0dXJuIHNvdXJjZTsKK30KKworc3RhdGljIGlubGlu
ZSBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlIHNvdXJjZVR5cGVGcm9tRGV2aWNlVHlwZShDYXB0
dXJlRGV2aWNlOjpEZXZpY2VUeXBlIGRldmljZVR5cGUpCit7CisgICAgc3dpdGNoIChkZXZpY2VU
eXBlKSB7CisgICAgY2FzZSBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpNaWNyb3Bob25lOgor
ICAgICAgICByZXR1cm4gUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6QXVkaW87CisgICAgY2Fz
ZSBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpDYW1lcmE6CisgICAgY2FzZSBDYXB0dXJlRGV2
aWNlOjpEZXZpY2VUeXBlOjpTY3JlZW46CisgICAgY2FzZSBDYXB0dXJlRGV2aWNlOjpEZXZpY2VU
eXBlOjpXaW5kb3c6CisgICAgICAgIHJldHVybiBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpW
aWRlbzsKKyAgICBjYXNlIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OlVua25vd246CisgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKyAgICByZXR1cm4gUmVhbHRpbWVNZWRp
YVNvdXJjZTo6VHlwZTo6Tm9uZTsKK30KKworUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZTo6UmVt
b3RlUmVhbHRpbWVNZWRpYVNvdXJjZShSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciBpZGVu
dGlmaWVyLCBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlIGRldmljZVR5cGUsIFN0cmluZyYmIG5h
bWUsIFN0cmluZyYmIGhhc2hTYWx0LCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlciYgbWFuYWdlciwg
Ym9vbCBzaG91bGRDYXB0dXJlSW5HUFVQcm9jZXNzKQorICAgIDogUmVhbHRpbWVNZWRpYVNvdXJj
ZShzb3VyY2VUeXBlRnJvbURldmljZVR5cGUoZGV2aWNlVHlwZSksIFdURk1vdmUobmFtZSksIFN0
cmluZzo6bnVtYmVyKGlkZW50aWZpZXIudG9VSW50NjQoKSksIFdURk1vdmUoaGFzaFNhbHQpKQor
ICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCisgICAgLCBtX21hbmFnZXIobWFuYWdlcikK
KyAgICAsIG1fZGV2aWNlVHlwZShkZXZpY2VUeXBlKQorICAgICwgbV9zaG91bGRDYXB0dXJlSW5H
UFVQcm9jZXNzKHNob3VsZENhcHR1cmVJbkdQVVByb2Nlc3MpCit7CisgICAgc3dpdGNoIChtX2Rl
dmljZVR5cGUpIHsKKyAgICBjYXNlIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6Ok1pY3JvcGhv
bmU6CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICAgICAgUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlcjo6c2luZ2xldG9uKCkuYXVkaW9DYXB0dXJlRmFjdG9yeSgpLnNldEFjdGl2ZVNvdXJj
ZSgqdGhpcyk7CisjZW5kaWYKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDYXB0dXJlRGV2aWNl
OjpEZXZpY2VUeXBlOjpDYW1lcmE6CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICAgICAg
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xldG9uKCkudmlkZW9DYXB0dXJlRmFjdG9y
eSgpLnNldEFjdGl2ZVNvdXJjZSgqdGhpcyk7CisjZW5kaWYKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpTY3JlZW46CisgICAgY2FzZSBDYXB0dXJl
RGV2aWNlOjpEZXZpY2VUeXBlOjpXaW5kb3c6CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ2Fw
dHVyZURldmljZTo6RGV2aWNlVHlwZTo6VW5rbm93bjoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgfQorfQorCitSZW1vdGVSZWFsdGltZU1lZGlhU291cmNlOjp+UmVtb3RlUmVh
bHRpbWVNZWRpYVNvdXJjZSgpCit7CisgICAgc3dpdGNoIChtX2RldmljZVR5cGUpIHsKKyAgICBj
YXNlIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6Ok1pY3JvcGhvbmU6CisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKKyAgICAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xldG9u
KCkuYXVkaW9DYXB0dXJlRmFjdG9yeSgpLnVuc2V0QWN0aXZlU291cmNlKCp0aGlzKTsKKyNlbmRp
ZgorICAgICAgICBicmVhazsKKyAgICBjYXNlIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OkNh
bWVyYToKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgICAgICBSZWFsdGltZU1lZGlhU291
cmNlQ2VudGVyOjpzaW5nbGV0b24oKS52aWRlb0NhcHR1cmVGYWN0b3J5KCkudW5zZXRBY3RpdmVT
b3VyY2UoKnRoaXMpOworI2VuZGlmCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ2FwdHVyZURl
dmljZTo6RGV2aWNlVHlwZTo6U2NyZWVuOgorICAgIGNhc2UgQ2FwdHVyZURldmljZTo6RGV2aWNl
VHlwZTo6V2luZG93OgorICAgICAgICBicmVhazsKKyAgICBjYXNlIENhcHR1cmVEZXZpY2U6OkRl
dmljZVR5cGU6OlVua25vd246CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0K
K30KKwordm9pZCBSZW1vdGVSZWFsdGltZU1lZGlhU291cmNlOjp3aGVuUmVhZHkoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChTdHJpbmcpPiYmIGNhbGxiYWNrKQoreworICAgIGlmIChtX2lzUmVhZHkp
CisgICAgICAgIHJldHVybiBjYWxsYmFjayhXVEZNb3ZlKG1fZXJyb3JNZXNzYWdlKSk7CisgICAg
bV9jYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOworfQorCit2b2lkIFJlbW90ZVJlYWx0aW1l
TWVkaWFTb3VyY2U6OmRpZEZhaWwoU3RyaW5nJiYgZXJyb3JNZXNzYWdlKQoreworICAgIG1faXNS
ZWFkeSA9IHRydWU7CisgICAgbV9lcnJvck1lc3NhZ2UgPSBXVEZNb3ZlKGVycm9yTWVzc2FnZSk7
CisgICAgaWYgKG1fY2FsbGJhY2spCisgICAgICAgIG1fY2FsbGJhY2sobV9lcnJvck1lc3NhZ2Up
OworfQorCit2b2lkIFJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldEFzUmVhZHkoKQorewor
ICAgIG1faXNSZWFkeSA9IHRydWU7CisgICAgaWYgKG1fY2FsbGJhY2spCisgICAgICAgIG1fY2Fs
bGJhY2soeyB9KTsKK30KKworUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+IFJlbW90ZVJlYWx0aW1l
TWVkaWFTb3VyY2U6OmNsb25lKCkKK3sKKyAgICBzd2l0Y2ggKHR5cGUoKSkgeworICAgIGNhc2Ug
UmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6VmlkZW86CisgICAgICAgIHJldHVybiBjbG9uZVZp
ZGVvU291cmNlKCk7CisgICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbzoK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpOb25l
OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgcmV0dXJuICp0aGlz
OworfQorCitSZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4gUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6Y2xvbmVWaWRlb1NvdXJjZSgpCit7CisgICAgYXV0byBpZGVudGlmaWVyID0gUmVhbHRpbWVN
ZWRpYVNvdXJjZUlkZW50aWZpZXI6OmdlbmVyYXRlKCk7CisgICAgaWYgKCFjb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6OlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6OkNsb25lIHsgbV9p
ZGVudGlmaWVyLCBpZGVudGlmaWVyIH0sIDApKQorICAgICAgICByZXR1cm4gKnRoaXM7CisKKyAg
ICBhdXRvIGNsb25lU291cmNlID0gYWRvcHRSZWYoKm5ldyBSZW1vdGVSZWFsdGltZU1lZGlhU291
cmNlKGlkZW50aWZpZXIsIGRldmljZVR5cGUoKSwgU3RyaW5nIHsgbV9zZXR0aW5ncy5sYWJlbCgp
LnN0cmluZygpIH0sIGRldmljZUlESGFzaFNhbHQoKSwgbV9tYW5hZ2VyLCBtX3Nob3VsZENhcHR1
cmVJbkdQVVByb2Nlc3MpKTsKKyAgICBjbG9uZVNvdXJjZS0+c2V0U2V0dGluZ3MoUmVhbHRpbWVN
ZWRpYVNvdXJjZVNldHRpbmdzIHsgbV9zZXR0aW5ncyB9KTsKKyAgICBtX21hbmFnZXIuYWRkU291
cmNlKGNsb25lU291cmNlLmNvcHlSZWYoKSk7CisgICAgcmV0dXJuIGNsb25lU291cmNlOworfQor
Cit2b2lkIFJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldENhcGFiaWxpdGllcyhSZWFsdGlt
ZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiYgY2FwYWJpbGl0aWVzKQoreworICAgIG1fY2FwYWJp
bGl0aWVzID0gV1RGTW92ZShjYXBhYmlsaXRpZXMpOworfQorCit2b2lkIFJlbW90ZVJlYWx0aW1l
TWVkaWFTb3VyY2U6OnNldFNldHRpbmdzKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYmIHNl
dHRpbmdzKQoreworICAgIGF1dG8gY2hhbmdlZCA9IG1fc2V0dGluZ3MuZGlmZmVyZW5jZShzZXR0
aW5ncyk7CisgICAgbV9zZXR0aW5ncyA9IFdURk1vdmUoc2V0dGluZ3MpOworICAgIG5vdGlmeVNl
dHRpbmdzRGlkQ2hhbmdlT2JzZXJ2ZXJzKGNoYW5nZWQpOworfQorCit2b2lkIFJlbW90ZVJlYWx0
aW1lTWVkaWFTb3VyY2U6OnJlbW90ZUF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBXVEY6Ok1l
ZGlhVGltZSYgdGltZSwgY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmIGRhdGEsIGNvbnN0IEF1ZGlv
U3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCBzaXplX3Qgc2l6ZSkKK3sKKyAgICBBU1NF
UlQoIWlzTWFpblRocmVhZCgpKTsKKyAgICBhdWRpb1NhbXBsZXNBdmFpbGFibGUodGltZSwgZGF0
YSwgZGVzY3JpcHRpb24sIHNpemUpOworfQorCit2b2lkIFJlbW90ZVJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OnJlbW90ZVZpZGVvU2FtcGxlQXZhaWxhYmxlKFJlbW90ZVZpZGVvU2FtcGxlJiYgcmVtb3Rl
U2FtcGxlKQoreworICAgIEFTU0VSVCh0eXBlKCkgPT0gVHlwZTo6VmlkZW8pOworCisgICAgc2V0
SW50cmluc2ljU2l6ZShyZW1vdGVTYW1wbGUuc2l6ZSgpKTsKKworICAgIGlmICghbV9pbWFnZVRy
YW5zZmVyU2Vzc2lvbiB8fCBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uLT5waXhlbEZvcm1hdCgpICE9
IHJlbW90ZVNhbXBsZS52aWRlb0Zvcm1hdCgpKQorICAgICAgICBtX2ltYWdlVHJhbnNmZXJTZXNz
aW9uID0gSW1hZ2VUcmFuc2ZlclNlc3Npb25WVDo6Y3JlYXRlKHJlbW90ZVNhbXBsZS52aWRlb0Zv
cm1hdCgpKTsKKworICAgIGlmICghbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbikgeworICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8g
c2FtcGxlUmVmID0gbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbi0+Y3JlYXRlTWVkaWFTYW1wbGUocmVt
b3RlU2FtcGxlKTsKKyAgICBpZiAoIXNhbXBsZVJlZikgeworICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKCpzYW1wbGVSZWYpOworfQorCitJUEM6OkNvbm5lY3Rp
b24qIFJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2U6OmNvbm5lY3Rpb24oKQoreworICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorICAgIGlmIChtX3No
b3VsZENhcHR1cmVJbkdQVVByb2Nlc3MpCisgICAgICAgIHJldHVybiAmV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCk7CisjZW5k
aWYKKyAgICByZXR1cm4gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKTsKK30KKwordm9pZCBSZW1vdGVSZWFsdGltZU1lZGlhU291cmNlOjpzdGFydFByb2R1
Y2luZ0RhdGEoKQoreworICAgIGNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6VXNlck1lZGlh
Q2FwdHVyZU1hbmFnZXJQcm94eTo6U3RhcnRQcm9kdWNpbmdEYXRhIHsgbV9pZGVudGlmaWVyIH0s
IDApOworfQorCit2b2lkIFJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2U6OnN0b3BQcm9kdWNpbmdE
YXRhKCkKK3sKKyAgICBjb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlVzZXJNZWRpYUNhcHR1
cmVNYW5hZ2VyUHJveHk6OlN0b3BQcm9kdWNpbmdEYXRhIHsgbV9pZGVudGlmaWVyIH0sIDApOwor
fQorCitib29sIFJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldFNob3VsZEFwcGx5Um90YXRp
b24oYm9vbCBzaG91bGRBcHBseVJvdGF0aW9uKQoreworICAgIGNvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTo6U2V0U2hvdWxkQXBwbHlSb3Rh
dGlvbiB7IG1faWRlbnRpZmllciwgc2hvdWxkQXBwbHlSb3RhdGlvbiB9LCAwKTsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworY29uc3QgV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxp
dGllcyYgUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZTo6Y2FwYWJpbGl0aWVzKCkKK3sKKyAgICBy
ZXR1cm4gbV9jYXBhYmlsaXRpZXM7Cit9CisKK3ZvaWQgUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6YXBwbHlDb25zdHJhaW50cyhjb25zdCBXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnRzJiBjb25z
dHJhaW50cywgQXBwbHlDb25zdHJhaW50c0hhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKK3sK
KyAgICBtX3BlbmRpbmdBcHBseUNvbnN0cmFpbnRzQ2FsbGJhY2tzLmFwcGVuZChXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CisgICAgLy8gRklYTUU6IFVzZSBzZW5kQXN5bmNXaXRoUmVwbHku
CisgICAgY29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdl
clByb3h5OjpBcHBseUNvbnN0cmFpbnRzIHsgbV9pZGVudGlmaWVyLCBjb25zdHJhaW50cyB9LCAw
KTsKK30KKwordm9pZCBSZW1vdGVSZWFsdGltZU1lZGlhU291cmNlOjphcHBseUNvbnN0cmFpbnRz
U3VjY2VlZGVkKGNvbnN0IFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgc2V0
dGluZ3MpCit7CisgICAgc2V0U2V0dGluZ3MoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZVNl
dHRpbmdzKHNldHRpbmdzKSk7CisKKyAgICBhdXRvIGNhbGxiYWNrID0gbV9wZW5kaW5nQXBwbHlD
b25zdHJhaW50c0NhbGxiYWNrcy50YWtlRmlyc3QoKTsKKyAgICBjYWxsYmFjayh7IH0pOworfQor
Cit2b2lkIFJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2U6OmFwcGx5Q29uc3RyYWludHNGYWlsZWQo
U3RyaW5nJiYgZmFpbGVkQ29uc3RyYWludCwgU3RyaW5nJiYgZXJyb3JNZXNzYWdlKQoreworICAg
IGF1dG8gY2FsbGJhY2sgPSBtX3BlbmRpbmdBcHBseUNvbnN0cmFpbnRzQ2FsbGJhY2tzLnRha2VG
aXJzdCgpOworICAgIGNhbGxiYWNrKEFwcGx5Q29uc3RyYWludHNFcnJvciB7IFdURk1vdmUoZmFp
bGVkQ29uc3RyYWludCksIFdURk1vdmUoZXJyb3JNZXNzYWdlKSB9KTsKK30KKwordm9pZCBSZW1v
dGVSZWFsdGltZU1lZGlhU291cmNlOjpoYXNFbmRlZCgpCit7CisgICAgY29ubmVjdGlvbigpLT5z
ZW5kKE1lc3NhZ2VzOjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5OjpFbmQgeyBtX2lkZW50
aWZpZXIgfSwgMCk7CisgICAgbV9tYW5hZ2VyLnJlbW92ZVNvdXJjZShtX2lkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2U6OmNhcHR1cmVTdG9wcGVkKCkKK3sK
KyAgICBzdG9wKCk7CisgICAgaGFzRW5kZWQoKTsKK30KKwordm9pZCBSZW1vdGVSZWFsdGltZU1l
ZGlhU291cmNlOjpjYXB0dXJlRmFpbGVkKCkKK3sKKyAgICBSZWFsdGltZU1lZGlhU291cmNlOjpj
YXB0dXJlRmFpbGVkKCk7CisgICAgaGFzRW5kZWQoKTsKK30KKwordm9pZCBSZW1vdGVSZWFsdGlt
ZU1lZGlhU291cmNlOjpzdG9wQmVpbmdPYnNlcnZlZCgpCit7CisgICAgY29ubmVjdGlvbigpLT5z
ZW5kKE1lc3NhZ2VzOjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5OjpSZXF1ZXN0VG9FbmQg
eyBtX2lkZW50aWZpZXIgfSwgMCk7Cit9CisKK3ZvaWQgUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6cmVxdWVzdFRvRW5kKE9ic2VydmVyJiBvYnNlcnZlcikKK3sKKyAgICBzd2l0Y2ggKHR5cGUo
KSkgeworICAgIGNhc2UgVHlwZTo6QXVkaW86CisgICAgICAgIFJlYWx0aW1lTWVkaWFTb3VyY2U6
OnJlcXVlc3RUb0VuZChvYnNlcnZlcik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVHlwZTo6
VmlkZW86CisgICAgICAgIHN0b3BCZWluZ09ic2VydmVkKCk7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgVHlwZTo6Tm9uZToKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQor
fQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2Nv
Y29hL1JlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9jb2NvYS9SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzc1NDA4YzM5
MDI0NTExZDJmYmE1MzY3ZWQ1OGQxNzU3ZGFhMTU4NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlLmgKQEAg
LTAsMCArMSwxMDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIFBMQVRGT1JN
KENPQ09BKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSA8V2ViQ29yZS9DYXB0
dXJlRGV2aWNlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZWFsdGltZU1lZGlhU291cmNlLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9SZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllci5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CitjbGFzcyBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb247CitjbGFzcyBJ
bWFnZVRyYW5zZmVyU2Vzc2lvblZUOworc3RydWN0IE1lZGlhQ29uc3RyYWludHM7CitjbGFzcyBS
ZW1vdGVWaWRlb1NhbXBsZTsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFVzZXJN
ZWRpYUNhcHR1cmVNYW5hZ2VyOworCitjbGFzcyBSZW1vdGVSZWFsdGltZU1lZGlhU291cmNlIDog
cHVibGljIFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2UgeworcHVibGljOgorICAgIHN0YXRp
YyBSZWY8V2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZT4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6
OkNhcHR1cmVEZXZpY2UmLCBjb25zdCBXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnRzJiwgU3RyaW5n
JiYgbmFtZSwgU3RyaW5nJiYgaGFzaFNhbHQsIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyJiwgYm9v
bCBzaG91bGRDYXB0dXJlSW5HUFVQcm9jZXNzID0gZmFsc2UpOworICAgIH5SZW1vdGVSZWFsdGlt
ZU1lZGlhU291cmNlKCk7CisKKyAgICBXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRlbnRp
ZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisgICAgSVBD
OjpDb25uZWN0aW9uKiBjb25uZWN0aW9uKCk7CisKKyAgICB2b2lkIHNldFNldHRpbmdzKFdlYkNv
cmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYmKTsKKworICAgIHZvaWQgYXBwbHlDb25z
dHJhaW50c1N1Y2NlZWRlZChjb25zdCBXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlU2V0dGlu
Z3MmKTsKKyAgICB2b2lkIGFwcGx5Q29uc3RyYWludHNGYWlsZWQoU3RyaW5nJiYgZmFpbGVkQ29u
c3RyYWludCwgU3RyaW5nJiYgZXJyb3JNZXNzYWdlKTsKKworICAgIHZvaWQgY2FwdHVyZVN0b3Bw
ZWQoKTsKKyAgICB2b2lkIGNhcHR1cmVGYWlsZWQoKSBmaW5hbDsKKworICAgIHZvaWQgcmVtb3Rl
VmlkZW9TYW1wbGVBdmFpbGFibGUoV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUmJik7CisgICAg
dm9pZCByZW1vdGVBdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgV1RGOjpNZWRpYVRpbWUmLCBj
b25zdCBXZWJDb3JlOjpQbGF0Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IFdlYkNvcmU6OkF1ZGlvU3Ry
ZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpOworCitwcml2YXRlOgorICAgIFJlbW90ZVJlYWx0aW1l
TWVkaWFTb3VyY2UoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIsIFdlYkNv
cmU6OkNhcHR1cmVEZXZpY2U6OkRldmljZVR5cGUsIFN0cmluZyYmIG5hbWUsIFN0cmluZyYmIGhh
c2hTYWx0LCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlciYsIGJvb2wgc2hvdWxkQ2FwdHVyZUluR1BV
UHJvY2Vzcyk7CisKKyAgICAvLyBSZWFsdGltZU1lZGlhU291cmNlCisgICAgdm9pZCBzdGFydFBy
b2R1Y2luZ0RhdGEoKSBmaW5hbDsKKyAgICB2b2lkIHN0b3BQcm9kdWNpbmdEYXRhKCkgZmluYWw7
CisgICAgYm9vbCBpc0NhcHR1cmVTb3VyY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9
CisgICAgdm9pZCBiZWdpbkNvbmZpZ3VyYXRpb24oKSBmaW5hbCB7IH0KKyAgICB2b2lkIGNvbW1p
dENvbmZpZ3VyYXRpb24oKSBmaW5hbCB7IH0KKyAgICBib29sIHNldFNob3VsZEFwcGx5Um90YXRp
b24oYm9vbCAvKiBzaG91bGRBcHBseVJvdGF0aW9uICovKSBmaW5hbDsKKyAgICB2b2lkIGFwcGx5
Q29uc3RyYWludHMoY29uc3QgV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50cyYsIEFwcGx5Q29uc3Ry
YWludHNIYW5kbGVyJiYpIGZpbmFsOworICAgIHZvaWQgcmVxdWVzdFRvRW5kKE9ic2VydmVyJikg
ZmluYWw7CisgICAgdm9pZCBzdG9wQmVpbmdPYnNlcnZlZCgpIGZpbmFsOworICAgIHZvaWQgaGFz
RW5kZWQoKSBmaW5hbDsKKyAgICBjb25zdCBXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlU2V0
dGluZ3MmIHNldHRpbmdzKCkgZmluYWwgeyByZXR1cm4gbV9zZXR0aW5nczsgfQorICAgIGNvbnN0
IFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmIGNhcGFiaWxpdGllcygp
IGZpbmFsOworICAgIHZvaWQgd2hlblJlYWR5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5n
KT4mJikgZmluYWw7CisgICAgV2ViQ29yZTo6Q2FwdHVyZURldmljZTo6RGV2aWNlVHlwZSBkZXZp
Y2VUeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9kZXZpY2VUeXBlOyB9CisgICAgUmVmPFJl
YWx0aW1lTWVkaWFTb3VyY2U+IGNsb25lKCkgZmluYWw7CisKKyAgICB2b2lkIGRpZEZhaWwoU3Ry
aW5nJiYgZXJyb3JNZXNzYWdlKTsKKyAgICB2b2lkIHNldEFzUmVhZHkoKTsKKyAgICB2b2lkIHNl
dENhcGFiaWxpdGllcyhXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiYp
OworICAgIFJlZjxSZWFsdGltZU1lZGlhU291cmNlPiBjbG9uZVZpZGVvU291cmNlKCk7CisKKyAg
ICBXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciBtX2lkZW50aWZpZXI7Cisg
ICAgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXImIG1fbWFuYWdlcjsKKyAgICBXZWJDb3JlOjpSZWFs
dGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzIG1fY2FwYWJpbGl0aWVzOworICAgIFdlYkNvcmU6
OlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyBtX3NldHRpbmdzOworCisgICAgc3RkOjp1bmlx
dWVfcHRyPFdlYkNvcmU6OkltYWdlVHJhbnNmZXJTZXNzaW9uVlQ+IG1faW1hZ2VUcmFuc2ZlclNl
c3Npb247CisgICAgV2ViQ29yZTo6Q2FwdHVyZURldmljZTo6RGV2aWNlVHlwZSBtX2RldmljZVR5
cGUgeyBXZWJDb3JlOjpDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpVbmtub3duIH07CisKKyAg
ICBEZXF1ZTxBcHBseUNvbnN0cmFpbnRzSGFuZGxlcj4gbV9wZW5kaW5nQXBwbHlDb25zdHJhaW50
c0NhbGxiYWNrczsKKyAgICBib29sIG1fc2hvdWxkQ2FwdHVyZUluR1BVUHJvY2VzcyB7IGZhbHNl
IH07CisgICAgYm9vbCBtX2lzUmVhZHkgeyBmYWxzZSB9OworICAgIFN0cmluZyBtX2Vycm9yTWVz
c2FnZTsKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyk+IG1fY2FsbGJhY2s7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcApp
bmRleCA2MzdlZTkxODZhNjE2OWM3MmI0M2U1NzI4M2RmMTVhMTFmYTViNGM2Li4wODNmODI5YWY3
NWFlOTlmNmMyOGNkNjcwYjkwYTY2Nzc4OWYzN2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHAKQEAg
LTMwLDI0NiArMzAsMTkgQEAKIAogI2luY2x1ZGUgIkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVyLmgiCiAjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKLSNpbmNsdWRlICJTaGFy
ZWRSaW5nQnVmZmVyU3RvcmFnZS5oIgorI2luY2x1ZGUgIlJlbW90ZVJlYWx0aW1lTWVkaWFTb3Vy
Y2UuaCIKICNpbmNsdWRlICJVc2VyTWVkaWFDYXB0dXJlTWFuYWdlck1lc3NhZ2VzLmgiCi0jaW5j
bHVkZSAiVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAi
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgotI2luY2x1
ZGUgIldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0Nh
cHR1cmVEZXZpY2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RlcHJlY2F0ZWRHbG9iYWxTZXR0aW5n
cy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5oPgotI2luY2x1
ZGUgPFdlYkNvcmUvTWVkaWFDb25zdHJhaW50cy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTW9ja1Jl
YWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1JlbW90ZVZpZGVvU2FtcGxlLmg+
Ci0jaW5jbHVkZSA8V2ViQ29yZS9XZWJBdWRpb0J1ZmZlckxpc3QuaD4KLSNpbmNsdWRlIDxXZWJD
b3JlL1dlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLmg+CiAjaW5jbHVkZSA8d3RmL0Fzc2Vy
dGlvbnMuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgUEFMOwogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLWNsYXNzIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOjpT
b3VyY2UgOiBwdWJsaWMgUmVhbHRpbWVNZWRpYVNvdXJjZSB7Ci1wdWJsaWM6Ci0gICAgU291cmNl
KFN0cmluZyYmIHNvdXJjZUlELCBUeXBlIHR5cGUsIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGUg
ZGV2aWNlVHlwZSwgU3RyaW5nJiYgbmFtZSwgU3RyaW5nJiYgaGFzaFNhbHQsIFJlYWx0aW1lTWVk
aWFTb3VyY2VJZGVudGlmaWVyIGlkLCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlciYgbWFuYWdlcikK
LSAgICAgICAgOiBSZWFsdGltZU1lZGlhU291cmNlKHR5cGUsIFdURk1vdmUobmFtZSksIFdURk1v
dmUoc291cmNlSUQpLCBXVEZNb3ZlKGhhc2hTYWx0KSkKLSAgICAgICAgLCBtX2lkKGlkKQotICAg
ICAgICAsIG1fbWFuYWdlcihtYW5hZ2VyKQotICAgICAgICAsIG1fZGV2aWNlVHlwZShkZXZpY2VU
eXBlKQotICAgIHsKLSAgICAgICAgc3dpdGNoIChtX2RldmljZVR5cGUpIHsKLSAgICAgICAgY2Fz
ZSBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpNaWNyb3Bob25lOgotICAgICAgICAgICAgbV9y
aW5nQnVmZmVyID0gbWFrZVVuaXF1ZTxDQVJpbmdCdWZmZXI+KG1ha2VVbmlxdWVSZWY8U2hhcmVk
UmluZ0J1ZmZlclN0b3JhZ2U+KG51bGxwdHIpKTsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQot
ICAgICAgICAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xldG9uKCkuYXVkaW9D
YXB0dXJlRmFjdG9yeSgpLnNldEFjdGl2ZVNvdXJjZSgqdGhpcyk7Ci0jZW5kaWYKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OkNhbWVy
YToKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgICAgICAgICAgUmVhbHRpbWVNZWRpYVNv
dXJjZUNlbnRlcjo6c2luZ2xldG9uKCkudmlkZW9DYXB0dXJlRmFjdG9yeSgpLnNldEFjdGl2ZVNv
dXJjZSgqdGhpcyk7Ci0jZW5kaWYKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENh
cHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OlNjcmVlbjoKLSAgICAgICAgY2FzZSBDYXB0dXJlRGV2
aWNlOjpEZXZpY2VUeXBlOjpXaW5kb3c6Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2Fz
ZSBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpVbmtub3duOgotICAgICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB+U291cmNlKCkKLSAgICB7
Ci0gICAgICAgIHN3aXRjaCAobV9kZXZpY2VUeXBlKSB7Ci0gICAgICAgIGNhc2UgQ2FwdHVyZURl
dmljZTo6RGV2aWNlVHlwZTo6TWljcm9waG9uZToKLSAgICAgICAgICAgIHN0b3JhZ2UoKS5pbnZh
bGlkYXRlKCk7Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICAgICAgICAgIFJlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLmF1ZGlvQ2FwdHVyZUZhY3RvcnkoKS51bnNl
dEFjdGl2ZVNvdXJjZSgqdGhpcyk7Ci0jZW5kaWYKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OkNhbWVyYToKLSNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQotICAgICAgICAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xl
dG9uKCkudmlkZW9DYXB0dXJlRmFjdG9yeSgpLnVuc2V0QWN0aXZlU291cmNlKCp0aGlzKTsKLSNl
bmRpZgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ2FwdHVyZURldmljZTo6RGV2
aWNlVHlwZTo6U2NyZWVuOgotICAgICAgICBjYXNlIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6
OldpbmRvdzoKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENhcHR1cmVEZXZpY2U6
OkRldmljZVR5cGU6OlVua25vd246Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICAgICAgfQotICAgIH0KLQotICAgIHZvaWQgd2hlblJlYWR5KENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoU3RyaW5nKT4mJiBjYWxsYmFjaykgZmluYWwKLSAgICB7Ci0gICAgICAgIGlmIChtX2lz
UmVhZHkpCi0gICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soV1RGTW92ZShtX2Vycm9yTWVzc2Fn
ZSkpOwotICAgICAgICBtX2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7Ci0gICAgfQotCi0g
ICAgdm9pZCBkaWRGYWlsKFN0cmluZyYmIGVycm9yTWVzc2FnZSkKLSAgICB7Ci0gICAgICAgIG1f
aXNSZWFkeSA9IHRydWU7Ci0gICAgICAgIG1fZXJyb3JNZXNzYWdlID0gV1RGTW92ZShlcnJvck1l
c3NhZ2UpOwotICAgICAgICBpZiAobV9jYWxsYmFjaykKLSAgICAgICAgICAgIG1fY2FsbGJhY2so
bV9lcnJvck1lc3NhZ2UpOwotICAgIH0KLQotICAgIHZvaWQgc2V0QXNSZWFkeSgpCi0gICAgewot
ICAgICAgICBtX2lzUmVhZHkgPSB0cnVlOwotICAgICAgICBpZiAobV9jYWxsYmFjaykKLSAgICAg
ICAgICAgIG1fY2FsbGJhY2soeyB9KTsKLSAgICB9Ci0KLSAgICBTaGFyZWRSaW5nQnVmZmVyU3Rv
cmFnZSYgc3RvcmFnZSgpCi0gICAgewotICAgICAgICBBU1NFUlQodHlwZSgpID09IFR5cGU6OkF1
ZGlvKTsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFNoYXJlZFJpbmdCdWZmZXJTdG9yYWdl
Jj4obV9yaW5nQnVmZmVyLT5zdG9yYWdlKCkpOwotICAgIH0KLQotICAgIFJlZjxSZWFsdGltZU1l
ZGlhU291cmNlPiBjbG9uZSgpIGZpbmFsCi0gICAgewotICAgICAgICByZXR1cm4gbV9tYW5hZ2Vy
LmNsb25lU291cmNlKCp0aGlzKTsKLSAgICB9Ci0KLSAgICBSZWFsdGltZU1lZGlhU291cmNlSWRl
bnRpZmllciBzb3VyY2VJRCgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9pZDsKLSAg
ICB9Ci0KLSAgICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdzKCkg
Y29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3NldHRpbmdzOwotICAgIH0KLQotICAgIGNv
bnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmIGNhcGFiaWxpdGllcygpIGZpbmFs
OwotICAgIHZvaWQgc2V0Q2FwYWJpbGl0aWVzKFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRp
ZXMmJiBjYXBhYmlsaXRpZXMpCi0gICAgewotICAgICAgICBtX2NhcGFiaWxpdGllcyA9IFdURk1v
dmUoY2FwYWJpbGl0aWVzKTsKLSAgICB9Ci0KLSAgICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNl
U2V0dGluZ3MmIHNldHRpbmdzKCkgZmluYWwgeyByZXR1cm4gbV9zZXR0aW5nczsgfQotICAgIHZv
aWQgc2V0U2V0dGluZ3MoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiYgc2V0dGluZ3MpCi0g
ICAgewotICAgICAgICBhdXRvIGNoYW5nZWQgPSBtX3NldHRpbmdzLmRpZmZlcmVuY2Uoc2V0dGlu
Z3MpOwotICAgICAgICBtX3NldHRpbmdzID0gV1RGTW92ZShzZXR0aW5ncyk7Ci0gICAgICAgIG5v
dGlmeVNldHRpbmdzRGlkQ2hhbmdlT2JzZXJ2ZXJzKGNoYW5nZWQpOwotICAgIH0KLQotICAgIGNv
bnN0IENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24oKSBjb25zdCB7IHJldHVy
biBtX2Rlc2NyaXB0aW9uOyB9Ci0gICAgdm9pZCBzZXRTdG9yYWdlKGNvbnN0IFNoYXJlZE1lbW9y
eTo6SGFuZGxlJiBoYW5kbGUsIGNvbnN0IFdlYkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlv
biYgZGVzY3JpcHRpb24sIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKQotICAgIHsKLSAgICAgICAg
QVNTRVJUKHR5cGUoKSA9PSBUeXBlOjpBdWRpbyk7Ci0gICAgICAgIG1fZGVzY3JpcHRpb24gPSBk
ZXNjcmlwdGlvbjsKLQotICAgICAgICBpZiAoaGFuZGxlLmlzTnVsbCgpKSB7Ci0gICAgICAgICAg
ICBtX3JpbmdCdWZmZXItPmRlYWxsb2NhdGUoKTsKLSAgICAgICAgICAgIHN0b3JhZ2UoKS5zZXRS
ZWFkT25seShmYWxzZSk7Ci0gICAgICAgICAgICBzdG9yYWdlKCkuc2V0U3RvcmFnZShudWxscHRy
KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIFJlZlB0cjxTaGFy
ZWRNZW1vcnk+IG1lbW9yeSA9IFNoYXJlZE1lbW9yeTo6bWFwKGhhbmRsZSwgU2hhcmVkTWVtb3J5
OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7Ci0gICAgICAgIHN0b3JhZ2UoKS5zZXRTdG9yYWdlKFdU
Rk1vdmUobWVtb3J5KSk7Ci0gICAgICAgIHN0b3JhZ2UoKS5zZXRSZWFkT25seSh0cnVlKTsKLQot
ICAgICAgICBtX3JpbmdCdWZmZXItPmFsbG9jYXRlKGRlc2NyaXB0aW9uLCBudW1iZXJPZkZyYW1l
cyk7Ci0gICAgfQotCi0gICAgdm9pZCBzZXRSaW5nQnVmZmVyRnJhbWVCb3VuZHModWludDY0X3Qg
c3RhcnRGcmFtZSwgdWludDY0X3QgZW5kRnJhbWUpCi0gICAgewotICAgICAgICBBU1NFUlQodHlw
ZSgpID09IFR5cGU6OkF1ZGlvKTsKLSAgICAgICAgbV9yaW5nQnVmZmVyLT5zZXRDdXJyZW50RnJh
bWVCb3VuZHMoc3RhcnRGcmFtZSwgZW5kRnJhbWUpOwotICAgIH0KLQotICAgIHZvaWQgYXVkaW9T
YW1wbGVzQXZhaWxhYmxlKE1lZGlhVGltZSB0aW1lLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcykK
LSAgICB7Ci0gICAgICAgIEFTU0VSVCh0eXBlKCkgPT0gVHlwZTo6QXVkaW8pOwotICAgICAgICBX
ZWJBdWRpb0J1ZmZlckxpc3QgYXVkaW9EYXRhKG1fZGVzY3JpcHRpb24sIG51bWJlck9mRnJhbWVz
KTsKLSAgICAgICAgbV9yaW5nQnVmZmVyLT5mZXRjaChhdWRpb0RhdGEubGlzdCgpLCBudW1iZXJP
ZkZyYW1lcywgdGltZS50aW1lVmFsdWUoKSk7Ci0KLSAgICAgICAgUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6YXVkaW9TYW1wbGVzQXZhaWxhYmxlKHRpbWUsIGF1ZGlvRGF0YSwgbV9kZXNjcmlwdGlvbiwg
bnVtYmVyT2ZGcmFtZXMpOwotICAgIH0KLQotICAgIHZvaWQgcmVtb3RlVmlkZW9TYW1wbGVBdmFp
bGFibGUoUmVtb3RlVmlkZW9TYW1wbGUmJiByZW1vdGVTYW1wbGUpCi0gICAgewotICAgICAgICBB
U1NFUlQodHlwZSgpID09IFR5cGU6OlZpZGVvKTsKLQotICAgICAgICBzZXRJbnRyaW5zaWNTaXpl
KHJlbW90ZVNhbXBsZS5zaXplKCkpOwotCi0gICAgICAgIGlmICghbV9pbWFnZVRyYW5zZmVyU2Vz
c2lvbiB8fCBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uLT5waXhlbEZvcm1hdCgpICE9IHJlbW90ZVNh
bXBsZS52aWRlb0Zvcm1hdCgpKQotICAgICAgICAgICAgbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbiA9
IEltYWdlVHJhbnNmZXJTZXNzaW9uVlQ6OmNyZWF0ZShyZW1vdGVTYW1wbGUudmlkZW9Gb3JtYXQo
KSk7Ci0KLSAgICAgICAgaWYgKCFtX2ltYWdlVHJhbnNmZXJTZXNzaW9uKSB7Ci0gICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQot
Ci0gICAgICAgIGF1dG8gc2FtcGxlUmVmID0gbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbi0+Y3JlYXRl
TWVkaWFTYW1wbGUocmVtb3RlU2FtcGxlKTsKLSAgICAgICAgaWYgKCFzYW1wbGVSZWYpIHsKLSAg
ICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9Ci0KLSAgICAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZTo6dmlkZW9TYW1wbGVBdmFpbGFi
bGUoKnNhbXBsZVJlZik7Ci0gICAgfQotCi0gICAgdm9pZCBhcHBseUNvbnN0cmFpbnRzU3VjY2Vl
ZGVkKGNvbnN0IFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgc2V0dGluZ3Mp
Ci0gICAgewotICAgICAgICBzZXRTZXR0aW5ncyhXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNl
U2V0dGluZ3Moc2V0dGluZ3MpKTsKLQotICAgICAgICBhdXRvIGNhbGxiYWNrID0gbV9wZW5kaW5n
QXBwbHlDb25zdHJhaW50c0NhbGxiYWNrcy50YWtlRmlyc3QoKTsKLSAgICAgICAgY2FsbGJhY2so
eyB9KTsKLSAgICB9Ci0KLSAgICB2b2lkIGFwcGx5Q29uc3RyYWludHNGYWlsZWQoU3RyaW5nJiYg
ZmFpbGVkQ29uc3RyYWludCwgU3RyaW5nJiYgZXJyb3JNZXNzYWdlKQotICAgIHsKLSAgICAgICAg
YXV0byBjYWxsYmFjayA9IG1fcGVuZGluZ0FwcGx5Q29uc3RyYWludHNDYWxsYmFja3MudGFrZUZp
cnN0KCk7Ci0gICAgICAgIGNhbGxiYWNrKEFwcGx5Q29uc3RyYWludHNFcnJvciB7IFdURk1vdmUo
ZmFpbGVkQ29uc3RyYWludCksIFdURk1vdmUoZXJyb3JNZXNzYWdlKSB9KTsKLSAgICB9Ci0KLSAg
ICBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlIGRldmljZVR5cGUoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBtX2RldmljZVR5cGU7IH0KLQotICAgIHZvaWQgc2V0U2hvdWxkQ2FwdHVyZUluR1BVUHJv
Y2Vzcyhib29sIHZhbHVlKSB7IG1fc2hvdWxkQ2FwdHVyZUluR1BVUHJvY2VzcyA9IHZhbHVlOyB9
Ci0gICAgYm9vbCBzaG91bGRDYXB0dXJlSW5HUFVQcm9jZXNzKCkgY29uc3QgeyByZXR1cm4gbV9z
aG91bGRDYXB0dXJlSW5HUFVQcm9jZXNzOyB9Ci0KLSAgICBJUEM6OkNvbm5lY3Rpb24qIGNvbm5l
Y3Rpb24oKTsKLQotICAgIHZvaWQgaGFzRW5kZWQoKSBmaW5hbDsKLQotcHJpdmF0ZToKLSAgICB2
b2lkIHN0YXJ0UHJvZHVjaW5nRGF0YSgpIGZpbmFsOwotICAgIHZvaWQgc3RvcFByb2R1Y2luZ0Rh
dGEoKSBmaW5hbDsKLSAgICBib29sIGlzQ2FwdHVyZVNvdXJjZSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIHRydWU7IH0KLQotICAgIC8vIFJlYWx0aW1lTWVkaWFTb3VyY2UKLSAgICB2b2lkIGJlZ2lu
Q29uZmlndXJhdGlvbigpIGZpbmFsIHsgfQotICAgIHZvaWQgY29tbWl0Q29uZmlndXJhdGlvbigp
IGZpbmFsIHsgfQotICAgIGJvb2wgc2V0U2hvdWxkQXBwbHlSb3RhdGlvbihib29sIC8qIHNob3Vs
ZEFwcGx5Um90YXRpb24gKi8pIGZpbmFsOwotICAgIHZvaWQgYXBwbHlDb25zdHJhaW50cyhjb25z
dCBXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnRzJiwgQXBwbHlDb25zdHJhaW50c0hhbmRsZXImJikg
ZmluYWw7Ci0gICAgdm9pZCByZXF1ZXN0VG9FbmQoT2JzZXJ2ZXImKSBmaW5hbDsKLSAgICB2b2lk
IHN0b3BCZWluZ09ic2VydmVkKCkgZmluYWw7Ci0KLSAgICBSZWFsdGltZU1lZGlhU291cmNlSWRl
bnRpZmllciBtX2lkOwotICAgIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyJiBtX21hbmFnZXI7Ci0g
ICAgUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyBtX2NhcGFiaWxpdGllczsKLSAgICBS
ZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MgbV9zZXR0aW5nczsKLQotICAgIENBQXVkaW9TdHJl
YW1EZXNjcmlwdGlvbiBtX2Rlc2NyaXB0aW9uOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxDQVJpbmdC
dWZmZXI+IG1fcmluZ0J1ZmZlcjsKLQotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZVRyYW5zZmVy
U2Vzc2lvblZUPiBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uOwotICAgIENhcHR1cmVEZXZpY2U6OkRl
dmljZVR5cGUgbV9kZXZpY2VUeXBlIHsgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6VW5rbm93
biB9OwotCi0gICAgRGVxdWU8QXBwbHlDb25zdHJhaW50c0hhbmRsZXI+IG1fcGVuZGluZ0FwcGx5
Q29uc3RyYWludHNDYWxsYmFja3M7Ci0gICAgYm9vbCBtX3Nob3VsZENhcHR1cmVJbkdQVVByb2Nl
c3MgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9pc1JlYWR5IHsgZmFsc2UgfTsKLSAgICBTdHJpbmcg
bV9lcnJvck1lc3NhZ2U7Ci0gICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcpPiBtX2Nh
bGxiYWNrOwotfTsKLQogVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OlVzZXJNZWRpYUNhcHR1cmVN
YW5hZ2VyKFdlYlByb2Nlc3MmIHByb2Nlc3MpCiAgICAgOiBtX3Byb2Nlc3MocHJvY2VzcykKICAg
ICAsIG1fYXVkaW9GYWN0b3J5KCp0aGlzKQpAQCAtMzAyLDcgKzc1LDcgQEAgdm9pZCBVc2VyTWVk
aWFDYXB0dXJlTWFuYWdlcjo6c2V0dXBDYXB0dXJlUHJvY2Vzc2VzKGJvb2wgc2hvdWxkQ2FwdHVy
ZUF1ZGlvSW5VSVAKICAgICBtX3ZpZGVvRmFjdG9yeS5zZXRTaG91bGRDYXB0dXJlSW5HUFVQcm9j
ZXNzKHNob3VsZENhcHR1cmVWaWRlb0luR1BVUHJvY2Vzcyk7CiAKICAgICBpZiAoc2hvdWxkQ2Fw
dHVyZUF1ZGlvSW5HUFVQcm9jZXNzKQotICAgICAgICBXZWJDb3JlOjpBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlcjo6c2V0Q3JlYXRvcihXZWJLaXQ6OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVyOjpjcmVhdGUpOworICAgICAgICBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcjo6
c2V0Q3JlYXRvcihXZWJLaXQ6OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyOjpjcmVhdGUp
OwogCiAgICAgaWYgKHNob3VsZENhcHR1cmVBdWRpb0luVUlQcm9jZXNzIHx8IHNob3VsZENhcHR1
cmVBdWRpb0luR1BVUHJvY2VzcykKICAgICAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6
c2luZ2xldG9uKCkuc2V0QXVkaW9DYXB0dXJlRmFjdG9yeShtX2F1ZGlvRmFjdG9yeSk7CkBAIC0z
MTIsNTQgKzg1LDMxIEBAIHZvaWQgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OnNldHVwQ2FwdHVy
ZVByb2Nlc3Nlcyhib29sIHNob3VsZENhcHR1cmVBdWRpb0luVUlQCiAgICAgICAgIFJlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLnNldERpc3BsYXlDYXB0dXJlRmFjdG9yeSht
X2Rpc3BsYXlGYWN0b3J5KTsKIH0KIAotV2ViQ29yZTo6Q2FwdHVyZVNvdXJjZU9yRXJyb3IgVXNl
ck1lZGlhQ2FwdHVyZU1hbmFnZXI6OmNyZWF0ZUNhcHR1cmVTb3VyY2UoY29uc3QgQ2FwdHVyZURl
dmljZSYgZGV2aWNlLCBTdHJpbmcmJiBoYXNoU2FsdCwgY29uc3QgV2ViQ29yZTo6TWVkaWFDb25z
dHJhaW50cyogY29uc3RyYWludHMsIGJvb2wgc2hvdWxkQ2FwdHVyZUluR1BVUHJvY2VzcykKK3Zv
aWQgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OmFkZFNvdXJjZShSZWY8UmVtb3RlUmVhbHRpbWVN
ZWRpYVNvdXJjZT4mJiBzb3VyY2UpCiB7Ci0gICAgaWYgKCFjb25zdHJhaW50cykKLSAgICAgICAg
cmV0dXJuIHsgfTsKKyAgICBpZiAoc291cmNlLT50eXBlKCkgPT0gUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6VHlwZTo6QXVkaW8pCisgICAgICAgIG1fcmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIuYWRk
U291cmNlKHNvdXJjZS5jb3B5UmVmKCkpOwogCi0gICAgYXV0byBpZCA9IFJlYWx0aW1lTWVkaWFT
b3VyY2VJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOworICAgIGF1dG8gaWRlbnRpZmllciA9IHNvdXJj
ZS0+aWRlbnRpZmllcigpOworICAgIEFTU0VSVCghbV9zb3VyY2VzLmNvbnRhaW5zKGlkZW50aWZp
ZXIpKTsKKyAgICBtX3NvdXJjZXMuYWRkKGlkZW50aWZpZXIsIFdURk1vdmUoc291cmNlKSk7Cit9
CiAKLSNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCi0gICAgYXV0byogY29ubmVjdGlvbiA9IHNob3Vs
ZENhcHR1cmVJbkdQVVByb2Nlc3MgPyAmbV9wcm9jZXNzLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0
aW9uKCkuY29ubmVjdGlvbigpIDogbV9wcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCk7
Ci0jZWxzZQotICAgIEFTU0VSVCghc2hvdWxkQ2FwdHVyZUluR1BVUHJvY2Vzcyk7Ci0gICAgYXV0
byogY29ubmVjdGlvbiA9IG1fcHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpOwotI2Vu
ZGlmCi0gICAgCi0gICAgYXV0byB0eXBlID0gZGV2aWNlLnR5cGUoKSA9PSBDYXB0dXJlRGV2aWNl
OjpEZXZpY2VUeXBlOjpNaWNyb3Bob25lID8gV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6
VHlwZTo6QXVkaW8gOiBXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpWaWRlbzsK
LSAgICBhdXRvIHNvdXJjZSA9IGFkb3B0UmVmKCpuZXcgU291cmNlKFN0cmluZzo6bnVtYmVyKGlk
LnRvVUludDY0KCkpLCB0eXBlLCBkZXZpY2UudHlwZSgpLCBTdHJpbmcgeyB9LCBTdHJpbmcgeyBo
YXNoU2FsdCB9LCBpZCwgKnRoaXMpKTsKLSAgICBpZiAoc2hvdWxkQ2FwdHVyZUluR1BVUHJvY2Vz
cykKLSAgICAgICAgc291cmNlLT5zZXRTaG91bGRDYXB0dXJlSW5HUFVQcm9jZXNzKHNob3VsZENh
cHR1cmVJbkdQVVByb2Nlc3MpOwotICAgIG1fc291cmNlcy5hZGQoaWQsIHNvdXJjZS5jb3B5UmVm
KCkpOwotCi0gICAgY29ubmVjdGlvbi0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpVc2Vy
TWVkaWFDYXB0dXJlTWFuYWdlclByb3h5OjpDcmVhdGVNZWRpYVNvdXJjZUZvckNhcHR1cmVEZXZp
Y2VXaXRoQ29uc3RyYWludHMoaWQsIGRldmljZSwgaGFzaFNhbHQsICpjb25zdHJhaW50cyksIFtz
b3VyY2UgPSBzb3VyY2UuY29weVJlZigpXShib29sIHN1Y2NlZWRlZCwgYXV0byYmIGVycm9yTWVz
c2FnZSwgYXV0byYmIHNldHRpbmdzLCBhdXRvJiYgY2FwYWJpbGl0aWVzKSB7Ci0gICAgICAgIGlm
ICghc3VjY2VlZGVkKSB7Ci0gICAgICAgICAgICBzb3VyY2UtPmRpZEZhaWwoV1RGTW92ZShlcnJv
ck1lc3NhZ2UpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBzb3Vy
Y2UtPnNldE5hbWUoU3RyaW5nIHsgc2V0dGluZ3MubGFiZWwoKS5zdHJpbmcoKSB9KTsKLSAgICAg
ICAgc291cmNlLT5zZXRTZXR0aW5ncyhXVEZNb3ZlKHNldHRpbmdzKSk7Ci0gICAgICAgIHNvdXJj
ZS0+c2V0Q2FwYWJpbGl0aWVzKFdURk1vdmUoY2FwYWJpbGl0aWVzKSk7Ci0gICAgICAgIHNvdXJj
ZS0+c2V0QXNSZWFkeSgpOwotICAgIH0pOwotCi0gICAgcmV0dXJuIFdlYkNvcmU6OkNhcHR1cmVT
b3VyY2VPckVycm9yKFdURk1vdmUoc291cmNlKSk7Cit2b2lkIFVzZXJNZWRpYUNhcHR1cmVNYW5h
Z2VyOjpyZW1vdmVTb3VyY2UoUmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIgaWQpCit7Cisg
ICAgbV9zb3VyY2VzLnJlbW92ZShpZCk7CiB9CiAKIHZvaWQgVXNlck1lZGlhQ2FwdHVyZU1hbmFn
ZXI6OnNvdXJjZVN0b3BwZWQoUmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIgaWQpCiB7Ci0g
ICAgaWYgKGF1dG8gc291cmNlID0gbV9zb3VyY2VzLmdldChpZCkpIHsKLSAgICAgICAgc291cmNl
LT5zdG9wKCk7Ci0gICAgICAgIHNvdXJjZS0+aGFzRW5kZWQoKTsKLSAgICB9CisgICAgaWYgKGF1
dG8gc291cmNlID0gbV9zb3VyY2VzLmdldChpZCkpCisgICAgICAgIHNvdXJjZS0+Y2FwdHVyZVN0
b3BwZWQoKTsKIH0KIAogdm9pZCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6Y2FwdHVyZUZhaWxl
ZChSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciBpZCkKIHsKLSAgICBpZiAoYXV0byBzb3Vy
Y2UgPSBtX3NvdXJjZXMuZ2V0KGlkKSkgeworICAgIGlmIChhdXRvIHNvdXJjZSA9IG1fc291cmNl
cy5nZXQoaWQpKQogICAgICAgICBzb3VyY2UtPmNhcHR1cmVGYWlsZWQoKTsKLSAgICAgICAgc291
cmNlLT5oYXNFbmRlZCgpOwotICAgIH0KIH0KIAogdm9pZCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdl
cjo6c291cmNlTXV0ZWRDaGFuZ2VkKFJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyIGlkLCBi
b29sIG11dGVkKQpAQCAtMzc0LDgwICsxMjQsMTMgQEAgdm9pZCBVc2VyTWVkaWFDYXB0dXJlTWFu
YWdlcjo6c291cmNlU2V0dGluZ3NDaGFuZ2VkKFJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWUK
ICAgICAgICAgc291cmNlLT5zZXRTZXR0aW5ncyhSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3Mo
c2V0dGluZ3MpKTsKIH0KIAotdm9pZCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6c3RvcmFnZUNo
YW5nZWQoUmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIgaWQsIGNvbnN0IFNoYXJlZE1lbW9y
eTo6SGFuZGxlJiBoYW5kbGUsIGNvbnN0IFdlYkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlv
biYgZGVzY3JpcHRpb24sIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKQotewotICAgIGlmIChhdXRv
IHNvdXJjZSA9IG1fc291cmNlcy5nZXQoaWQpKQotICAgICAgICBzb3VyY2UtPnNldFN0b3JhZ2Uo
aGFuZGxlLCBkZXNjcmlwdGlvbiwgbnVtYmVyT2ZGcmFtZXMpOwotfQotCi12b2lkIFVzZXJNZWRp
YUNhcHR1cmVNYW5hZ2VyOjpyaW5nQnVmZmVyRnJhbWVCb3VuZHNDaGFuZ2VkKFJlYWx0aW1lTWVk
aWFTb3VyY2VJZGVudGlmaWVyIGlkLCB1aW50NjRfdCBzdGFydEZyYW1lLCB1aW50NjRfdCBlbmRG
cmFtZSkKLXsKLSAgICBpZiAoYXV0byBzb3VyY2UgPSBtX3NvdXJjZXMuZ2V0KGlkKSkKLSAgICAg
ICAgc291cmNlLT5zZXRSaW5nQnVmZmVyRnJhbWVCb3VuZHMoc3RhcnRGcmFtZSwgZW5kRnJhbWUp
OwotfQotCi12b2lkIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOjphdWRpb1NhbXBsZXNBdmFpbGFi
bGUoUmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIgaWQsIE1lZGlhVGltZSB0aW1lLCB1aW50
NjRfdCBudW1iZXJPZkZyYW1lcywgdWludDY0X3Qgc3RhcnRGcmFtZSwgdWludDY0X3QgZW5kRnJh
bWUpCi17Ci0gICAgaWYgKGF1dG8gc291cmNlID0gbV9zb3VyY2VzLmdldChpZCkpIHsKLSAgICAg
ICAgc291cmNlLT5zZXRSaW5nQnVmZmVyRnJhbWVCb3VuZHMoc3RhcnRGcmFtZSwgZW5kRnJhbWUp
OwotICAgICAgICBzb3VyY2UtPmF1ZGlvU2FtcGxlc0F2YWlsYWJsZSh0aW1lLCBudW1iZXJPZkZy
YW1lcyk7Ci0gICAgfQotfQotCiB2b2lkIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOjpyZW1vdGVW
aWRlb1NhbXBsZUF2YWlsYWJsZShSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciBpZCwgUmVt
b3RlVmlkZW9TYW1wbGUmJiBzYW1wbGUpCiB7CiAgICAgaWYgKGF1dG8gc291cmNlID0gbV9zb3Vy
Y2VzLmdldChpZCkpCiAgICAgICAgIHNvdXJjZS0+cmVtb3RlVmlkZW9TYW1wbGVBdmFpbGFibGUo
V1RGTW92ZShzYW1wbGUpKTsKIH0KIAotSVBDOjpDb25uZWN0aW9uKiBVc2VyTWVkaWFDYXB0dXJl
TWFuYWdlcjo6U291cmNlOjpjb25uZWN0aW9uKCkKLXsKLSNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
Ci0gICAgaWYgKG1fc2hvdWxkQ2FwdHVyZUluR1BVUHJvY2VzcykKLSAgICAgICAgcmV0dXJuICZt
X21hbmFnZXIubV9wcm9jZXNzLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlv
bigpOwotI2VuZGlmCi0gICAgcmV0dXJuIG1fbWFuYWdlci5tX3Byb2Nlc3MucGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKTsKLX0KLQotdm9pZCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6U291cmNl
OjpzdGFydFByb2R1Y2luZ0RhdGEoKQotewotICAgIGNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdl
czo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTo6U3RhcnRQcm9kdWNpbmdEYXRhKG1faWQp
LCAwKTsKLX0KLQotdm9pZCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6U291cmNlOjpzdG9wUHJv
ZHVjaW5nRGF0YSgpCi17Ci0gICAgY29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpVc2VyTWVk
aWFDYXB0dXJlTWFuYWdlclByb3h5OjpTdG9wUHJvZHVjaW5nRGF0YShtX2lkKSwgMCk7Ci19Ci0K
LWJvb2wgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OlNvdXJjZTo6c2V0U2hvdWxkQXBwbHlSb3Rh
dGlvbihib29sIHNob3VsZEFwcGx5Um90YXRpb24pCi17Ci0gICAgY29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5OjpTZXRTaG91bGRBcHBseVJv
dGF0aW9uKG1faWQsIHNob3VsZEFwcGx5Um90YXRpb24pLCAwKTsKLSAgICByZXR1cm4gdHJ1ZTsK
LX0KLQotY29uc3QgV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYgVXNl
ck1lZGlhQ2FwdHVyZU1hbmFnZXI6OlNvdXJjZTo6Y2FwYWJpbGl0aWVzKCkKLXsKLSAgICByZXR1
cm4gbV9jYXBhYmlsaXRpZXM7Ci19Ci0KLXZvaWQgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OlNv
dXJjZTo6YXBwbHlDb25zdHJhaW50cyhjb25zdCBXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnRzJiBj
b25zdHJhaW50cywgQXBwbHlDb25zdHJhaW50c0hhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikK
LXsKLSAgICBtX3BlbmRpbmdBcHBseUNvbnN0cmFpbnRzQ2FsbGJhY2tzLmFwcGVuZChXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgY29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpV
c2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5OjpBcHBseUNvbnN0cmFpbnRzKG1faWQsIGNvbnN0
cmFpbnRzKSwgMCk7Ci19Ci0KLXZvaWQgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OnNvdXJjZUVu
ZGVkKFJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyIGlkKQotewotICAgIG1fc291cmNlcy5y
ZW1vdmUoaWQpOwotfQotCi12b2lkIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOjpTb3VyY2U6Omhh
c0VuZGVkKCkKLXsKLSAgICBjb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlVzZXJNZWRpYUNh
cHR1cmVNYW5hZ2VyUHJveHk6OkVuZCB7IG1faWQgfSwgMCk7Ci0gICAgbV9tYW5hZ2VyLnNvdXJj
ZUVuZGVkKG1faWQpOwotfQotCi12b2lkIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOjphcHBseUNv
bnN0cmFpbnRzU3VjY2VlZGVkKFJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyIGlkLCBjb25z
dCBXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdzKQordm9pZCBV
c2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6YXBwbHlDb25zdHJhaW50c1N1Y2NlZWRlZChSZWFsdGlt
ZU1lZGlhU291cmNlSWRlbnRpZmllciBpZCwgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRp
bmdzJiBzZXR0aW5ncykKIHsKICAgICBpZiAoYXV0byBzb3VyY2UgPSBtX3NvdXJjZXMuZ2V0KGlk
KSkKICAgICAgICAgc291cmNlLT5hcHBseUNvbnN0cmFpbnRzU3VjY2VlZGVkKHNldHRpbmdzKTsK
QEAgLTQ1OSw3NCArMTQyLDQxIEBAIHZvaWQgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OmFwcGx5
Q29uc3RyYWludHNGYWlsZWQoUmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpCiAgICAgICAgIHNv
dXJjZS0+YXBwbHlDb25zdHJhaW50c0ZhaWxlZChXVEZNb3ZlKGZhaWxlZENvbnN0cmFpbnQpLCBX
VEZNb3ZlKG1lc3NhZ2UpKTsKIH0KIAotUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+IFVzZXJNZWRp
YUNhcHR1cmVNYW5hZ2VyOjpjbG9uZVNvdXJjZShTb3VyY2UmIHNvdXJjZSkKLXsKLSAgICBzd2l0
Y2ggKHNvdXJjZS50eXBlKCkpIHsKLSAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6
OlZpZGVvOgotICAgICAgICByZXR1cm4gY2xvbmVWaWRlb1NvdXJjZShzb3VyY2UpOwotICAgIGNh
c2UgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6QXVkaW86Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6Tm9uZToKLSAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgfQotICAgIHJldHVybiBtYWtlUmVmKHNvdXJjZSk7Ci19Ci0KLVJl
ZjxSZWFsdGltZU1lZGlhU291cmNlPiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6Y2xvbmVWaWRl
b1NvdXJjZShTb3VyY2UmIHNvdXJjZSkKLXsKLSAgICBhdXRvIGlkID0gUmVhbHRpbWVNZWRpYVNv
dXJjZUlkZW50aWZpZXI6OmdlbmVyYXRlKCk7Ci0gICAgaWYgKCFzb3VyY2UuY29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5OjpDbG9uZSB7IHNv
dXJjZS5zb3VyY2VJRCgpLCBpZCB9LCAwKSkKLSAgICAgICAgcmV0dXJuIG1ha2VSZWYoc291cmNl
KTsKLQotICAgIGF1dG8gc2V0dGluZ3MgPSBzb3VyY2Uuc2V0dGluZ3MoKTsKLSAgICBhdXRvIGNs
b25lU291cmNlID0gYWRvcHRSZWYoKm5ldyBTb3VyY2UoU3RyaW5nOjpudW1iZXIoaWQudG9VSW50
NjQoKSksIHNvdXJjZS50eXBlKCksIHNvdXJjZS5kZXZpY2VUeXBlKCksIFN0cmluZyB7IHNldHRp
bmdzLmxhYmVsKCkuc3RyaW5nKCkgfSwgc291cmNlLmRldmljZUlESGFzaFNhbHQoKSwgaWQsICp0
aGlzKSk7Ci0gICAgaWYgKHNvdXJjZS5zaG91bGRDYXB0dXJlSW5HUFVQcm9jZXNzKCkpCi0gICAg
ICAgIGNsb25lU291cmNlLT5zZXRTaG91bGRDYXB0dXJlSW5HUFVQcm9jZXNzKHRydWUpOwotICAg
IGNsb25lU291cmNlLT5zZXRTZXR0aW5ncyhXVEZNb3ZlKHNldHRpbmdzKSk7Ci0gICAgbV9zb3Vy
Y2VzLmFkZChpZCwgY2xvbmVTb3VyY2UuY29weVJlZigpKTsKLSAgICByZXR1cm4gY2xvbmVTb3Vy
Y2U7Ci19Ci0KLXZvaWQgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OlNvdXJjZTo6c3RvcEJlaW5n
T2JzZXJ2ZWQoKQotewotICAgIGNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6VXNlck1lZGlh
Q2FwdHVyZU1hbmFnZXJQcm94eTo6UmVxdWVzdFRvRW5kIHsgbV9pZCB9LCAwKTsKLX0KLQotdm9p
ZCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6U291cmNlOjpyZXF1ZXN0VG9FbmQoT2JzZXJ2ZXIm
IG9ic2VydmVyKQotewotICAgIHN3aXRjaCAodHlwZSgpKSB7Ci0gICAgY2FzZSBUeXBlOjpBdWRp
bzoKLSAgICAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZTo6cmVxdWVzdFRvRW5kKG9ic2VydmVyKTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUeXBlOjpWaWRlbzoKLSAgICAgICAgc3RvcEJlaW5n
T2JzZXJ2ZWQoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUeXBlOjpOb25lOgotICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9Ci19Ci0KIENhcHR1cmVTb3VyY2VPckVycm9y
IFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOjpBdWRpb0ZhY3Rvcnk6OmNyZWF0ZUF1ZGlvQ2FwdHVy
ZVNvdXJjZShjb25zdCBDYXB0dXJlRGV2aWNlJiBkZXZpY2UsIFN0cmluZyYmIGhhc2hTYWx0LCBj
b25zdCBNZWRpYUNvbnN0cmFpbnRzKiBjb25zdHJhaW50cykKIHsKKyAgICBpZiAoIWNvbnN0cmFp
bnRzKQorICAgICAgICByZXR1cm4geyB9OworCiAjaWYgIUVOQUJMRShHUFVfUFJPQ0VTUykKICAg
ICBpZiAobV9zaG91bGRDYXB0dXJlSW5HUFVQcm9jZXNzKQogICAgICAgICByZXR1cm4gQ2FwdHVy
ZVNvdXJjZU9yRXJyb3IgeyAiQXVkaW8gY2FwdHVyZSBpbiBHUFVQcm9jZXNzIGlzIG5vdCBpbXBs
ZW1lbnRlZCJfcyB9OwogI2VuZGlmCisKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSB8fCBFTkFC
TEUoUk9VVElOR19BUkJJVFJBVElPTikKLSAgICAvLyBGSVhNRTogUmVtb3ZlIGRpc2FibGluZyBv
ZiB0aGUgYXVkaW8gc2Vzc2lvbiBjYXRlZ29yeSBtYW5hZ2VtZWVudCBvbmNlIHdlIG1vdmUgYWxs
IG1lZGlhIHBsYXlpbmcgdG8gR1BVUHJvY2Vzcy4KKyAgICAvLyBGSVhNRTogUmVtb3ZlIGRpc2Fi
bGluZyBvZiB0aGUgYXVkaW8gc2Vzc2lvbiBjYXRlZ29yeSBtYW5hZ2VtZW50IG9uY2Ugd2UgbW92
ZSBhbGwgbWVkaWEgcGxheWluZyB0byBHUFVQcm9jZXNzLgogICAgIGlmIChtX3Nob3VsZENhcHR1
cmVJbkdQVVByb2Nlc3MpCiAgICAgICAgIERlcHJlY2F0ZWRHbG9iYWxTZXR0aW5nczo6c2V0U2hv
dWxkTWFuYWdlQXVkaW9TZXNzaW9uQ2F0ZWdvcnkodHJ1ZSk7CiAjZW5kaWYKLSAgICByZXR1cm4g
bV9tYW5hZ2VyLmNyZWF0ZUNhcHR1cmVTb3VyY2UoZGV2aWNlLCBXVEZNb3ZlKGhhc2hTYWx0KSwg
Y29uc3RyYWludHMsIG1fc2hvdWxkQ2FwdHVyZUluR1BVUHJvY2Vzcyk7CisKKyAgICByZXR1cm4g
UmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZTo6Y3JlYXRlKGRldmljZSwgKmNvbnN0cmFpbnRzLCB7
IH0sIFdURk1vdmUoaGFzaFNhbHQpLCBtX21hbmFnZXIpOworfQorCit2b2lkIFVzZXJNZWRpYUNh
cHR1cmVNYW5hZ2VyOjpBdWRpb0ZhY3Rvcnk6OnNldFNob3VsZENhcHR1cmVJbkdQVVByb2Nlc3Mo
Ym9vbCB2YWx1ZSkKK3sKKyAgICBtX3Nob3VsZENhcHR1cmVJbkdQVVByb2Nlc3MgPSB2YWx1ZTsK
IH0KIAogQ2FwdHVyZVNvdXJjZU9yRXJyb3IgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OlZpZGVv
RmFjdG9yeTo6Y3JlYXRlVmlkZW9DYXB0dXJlU291cmNlKGNvbnN0IENhcHR1cmVEZXZpY2UmIGRl
dmljZSwgU3RyaW5nJiYgaGFzaFNhbHQsIGNvbnN0IE1lZGlhQ29uc3RyYWludHMqIGNvbnN0cmFp
bnRzKQogeworICAgIGlmICghY29uc3RyYWludHMpCisgICAgICAgIHJldHVybiB7IH07CisKICNp
ZiAhRU5BQkxFKEdQVV9QUk9DRVNTKQogICAgIGlmIChtX3Nob3VsZENhcHR1cmVJbkdQVVByb2Nl
c3MpCiAgICAgICAgIHJldHVybiBDYXB0dXJlU291cmNlT3JFcnJvciB7ICJWaWRlbyBjYXB0dXJl
IGluIEdQVVByb2Nlc3MgaXMgbm90IGltcGxlbWVudGVkIl9zIH07CiAjZW5kaWYKLSAgICByZXR1
cm4gbV9tYW5hZ2VyLmNyZWF0ZUNhcHR1cmVTb3VyY2UoZGV2aWNlLCBXVEZNb3ZlKGhhc2hTYWx0
KSwgY29uc3RyYWludHMsIG1fc2hvdWxkQ2FwdHVyZUluR1BVUHJvY2Vzcyk7CisKKyAgICByZXR1
cm4gUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZTo6Y3JlYXRlKGRldmljZSwgKmNvbnN0cmFpbnRz
LCB7IH0sIFdURk1vdmUoaGFzaFNhbHQpLCBtX21hbmFnZXIpOwogfQogCiAjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKQEAgLTUzNiw2ICsxODYsMTQgQEAgdm9pZCBVc2VyTWVkaWFDYXB0dXJlTWFu
YWdlcjo6VmlkZW9GYWN0b3J5OjpzZXRBY3RpdmVTb3VyY2UoUmVhbHRpbWVNZWRpYVNvdXJjZSYK
IH0KICNlbmRpZgogCitDYXB0dXJlU291cmNlT3JFcnJvciBVc2VyTWVkaWFDYXB0dXJlTWFuYWdl
cjo6RGlzcGxheUZhY3Rvcnk6OmNyZWF0ZURpc3BsYXlDYXB0dXJlU291cmNlKGNvbnN0IENhcHR1
cmVEZXZpY2UmIGRldmljZSwgY29uc3QgTWVkaWFDb25zdHJhaW50cyogY29uc3RyYWludHMpCit7
CisgICAgaWYgKCFjb25zdHJhaW50cykKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIHJldHVy
biBSZW1vdGVSZWFsdGltZU1lZGlhU291cmNlOjpjcmVhdGUoZGV2aWNlLCAqY29uc3RyYWludHMs
IHsgfSwgeyB9LCBtX21hbmFnZXIpOworfQorCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuaApp
bmRleCAzYmM1MWVhYjkxYTU0ZmRmNjAxNGU2MGY5NmY0ODcwMzUzNmQ2YTUzLi42ZWQwYTBmOTgy
YTU3M2Q5NWNmZmM0MTc0NjQwZDE1NjI1ODExMWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuaApAQCAtMjcs
NyArMjcsNyBAQAogCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShNRURJQV9TVFJFQU0p
CiAKLSNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVDYXB0dXJl
U2FtcGxlTWFuYWdlci5oIgogI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgogI2luY2x1ZGUgIldl
YlByb2Nlc3NTdXBwbGVtZW50LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DYXB0dXJlRGV2aWNlTWFu
YWdlci5oPgpAQCAtNDMsNyArNDMsNyBAQCBjbGFzcyBSZW1vdGVWaWRlb1NhbXBsZTsKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIENyb3NzUHJvY2Vzc1JlYWx0aW1lQXVkaW9Tb3VyY2U7
CitjbGFzcyBSZW1vdGVSZWFsdGltZU1lZGlhU291cmNlOwogY2xhc3MgV2ViUHJvY2VzczsKIAog
Y2xhc3MgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIgOiBwdWJsaWMgV2ViUHJvY2Vzc1N1cHBsZW1l
bnQsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CkBAIC01NywxMiArNTcsMTUgQEAgcHVi
bGljOgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tR1BVUHJvY2VzcyhJUEM6OkNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikgeyBkaWRSZWNlaXZlTWVz
c2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsgfQogICAgIHZvaWQgc2V0dXBDYXB0dXJlUHJvY2Vz
c2VzKGJvb2wgc2hvdWxkQ2FwdHVyZUF1ZGlvSW5VSVByb2Nlc3MsIGJvb2wgc2hvdWxkQ2FwdHVy
ZUF1ZGlvSW5HUFVQcm9jZXNzLCBib29sIHNob3VsZENhcHR1cmVWaWRlb0luVUlQcm9jZXNzLCBi
b29sIHNob3VsZENhcHR1cmVWaWRlb0luR1BVUHJvY2VzcywgYm9vbCBzaG91bGRDYXB0dXJlRGlz
cGxheUluVUlQcm9jZXNzKTsKIAorICAgIHZvaWQgYWRkU291cmNlKFJlZjxSZW1vdGVSZWFsdGlt
ZU1lZGlhU291cmNlPiYmKTsKKyAgICB2b2lkIHJlbW92ZVNvdXJjZShXZWJDb3JlOjpSZWFsdGlt
ZU1lZGlhU291cmNlSWRlbnRpZmllcik7CisKIHByaXZhdGU6CiAgICAgLy8gV2ViQ29yZTo6UmVh
bHRpbWVNZWRpYVNvdXJjZSBmYWN0b3JpZXMKICAgICBjbGFzcyBBdWRpb0ZhY3RvcnkgOiBwdWJs
aWMgV2ViQ29yZTo6QXVkaW9DYXB0dXJlRmFjdG9yeSB7CiAgICAgcHVibGljOgogICAgICAgICBl
eHBsaWNpdCBBdWRpb0ZhY3RvcnkoVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXImIG1hbmFnZXIpIDog
bV9tYW5hZ2VyKG1hbmFnZXIpIHsgfQotICAgICAgICB2b2lkIHNldFNob3VsZENhcHR1cmVJbkdQ
VVByb2Nlc3MoYm9vbCB2YWx1ZSkgeyBtX3Nob3VsZENhcHR1cmVJbkdQVVByb2Nlc3MgPSB2YWx1
ZTsgfQorICAgICAgICB2b2lkIHNldFNob3VsZENhcHR1cmVJbkdQVVByb2Nlc3MoYm9vbCk7CiAK
ICAgICBwcml2YXRlOgogICAgICAgICBXZWJDb3JlOjpDYXB0dXJlU291cmNlT3JFcnJvciBjcmVh
dGVBdWRpb0NhcHR1cmVTb3VyY2UoY29uc3QgV2ViQ29yZTo6Q2FwdHVyZURldmljZSYsIFN0cmlu
ZyYmIGhhc2hTYWx0LCBjb25zdCBXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnRzKikgZmluYWw7CkBA
IC05MSwxNCArOTQsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgZXhwbGljaXQgRGlzcGxheUZhY3Rv
cnkoVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXImIG1hbmFnZXIpIDogbV9tYW5hZ2VyKG1hbmFnZXIp
IHsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgV2ViQ29yZTo6Q2FwdHVyZVNvdXJjZU9yRXJy
b3IgY3JlYXRlRGlzcGxheUNhcHR1cmVTb3VyY2UoY29uc3QgV2ViQ29yZTo6Q2FwdHVyZURldmlj
ZSYgZGV2aWNlLCBjb25zdCBXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnRzKiBjb25zdHJhaW50cykg
ZmluYWwgIHsgcmV0dXJuIG1fbWFuYWdlci5jcmVhdGVDYXB0dXJlU291cmNlKGRldmljZSwgeyB9
LCBjb25zdHJhaW50cyk7IH0KKyAgICAgICAgV2ViQ29yZTo6Q2FwdHVyZVNvdXJjZU9yRXJyb3Ig
Y3JlYXRlRGlzcGxheUNhcHR1cmVTb3VyY2UoY29uc3QgV2ViQ29yZTo6Q2FwdHVyZURldmljZSYs
IGNvbnN0IFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludHMqKSBmaW5hbDsKICAgICAgICAgV2ViQ29y
ZTo6Q2FwdHVyZURldmljZU1hbmFnZXImIGRpc3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdlcigpIGZp
bmFsIHsgcmV0dXJuIG1fbWFuYWdlci5tX25vT3BDYXB0dXJlRGV2aWNlTWFuYWdlcjsgfQogCiAg
ICAgICAgIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyJiBtX21hbmFnZXI7CiAgICAgfTsKIAotICAg
IFdlYkNvcmU6OkNhcHR1cmVTb3VyY2VPckVycm9yIGNyZWF0ZUNhcHR1cmVTb3VyY2UoY29uc3Qg
V2ViQ29yZTo6Q2FwdHVyZURldmljZSYsIFN0cmluZyYmLCBjb25zdCBXZWJDb3JlOjpNZWRpYUNv
bnN0cmFpbnRzKiwgYm9vbCBzaG91bGRDYXB0dXJlSW5HUFVQcm9jZXNzID0gZmFsc2UpOwotCiAg
ICAgY2xhc3MgTm9PcENhcHR1cmVEZXZpY2VNYW5hZ2VyIDogcHVibGljIFdlYkNvcmU6OkNhcHR1
cmVEZXZpY2VNYW5hZ2VyIHsKICAgICBwdWJsaWM6CiAgICAgICAgIE5vT3BDYXB0dXJlRGV2aWNl
TWFuYWdlcigpID0gZGVmYXVsdDsKQEAgLTExOCwyOCArMTE5LDIyIEBAIHByaXZhdGU6CiAgICAg
Ly8gTWVzc2FnZXM6OlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyCiAgICAgdm9pZCBjYXB0dXJlRmFp
bGVkKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyKTsKICAgICB2b2lkIHNv
dXJjZVN0b3BwZWQoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIpOwotICAg
IHZvaWQgc291cmNlRW5kZWQoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIp
OworICAgIHZvaWQgc291cmNlRW5kZWQoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50
aWZpZXIgaWRlbnRpZmllcikgeyByZW1vdmVTb3VyY2UoaWRlbnRpZmllcik7IH0KICAgICB2b2lk
IHNvdXJjZU11dGVkQ2hhbmdlZChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmll
ciwgYm9vbCBtdXRlZCk7CiAgICAgdm9pZCBzb3VyY2VTZXR0aW5nc0NoYW5nZWQoV2ViQ29yZTo6
UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlYWx0aW1lTWVk
aWFTb3VyY2VTZXR0aW5ncyYpOwotICAgIHZvaWQgc3RvcmFnZUNoYW5nZWQoV2ViQ29yZTo6UmVh
bHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SGFuZGxlJiwg
Y29uc3QgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgdWludDY0X3QgbnVtYmVy
T2ZGcmFtZXMpOwotICAgIHZvaWQgcmluZ0J1ZmZlckZyYW1lQm91bmRzQ2hhbmdlZChXZWJDb3Jl
OjpSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciwgdWludDY0X3Qgc3RhcnRGcmFtZSwgdWlu
dDY0X3QgZW5kRnJhbWUpOwotICAgIHZvaWQgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKFdlYkNvcmU6
OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyLCBNZWRpYVRpbWUsIHVpbnQ2NF90IG51bWJl
ck9mRnJhbWVzLCB1aW50NjRfdCBzdGFydEZyYW1lLCB1aW50NjRfdCBlbmRGcmFtZSk7CiAgICAg
dm9pZCByZW1vdGVWaWRlb1NhbXBsZUF2YWlsYWJsZShXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291
cmNlSWRlbnRpZmllciwgV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUmJik7CiAgICAgdm9pZCBh
cHBseUNvbnN0cmFpbnRzU3VjY2VlZGVkKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVu
dGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmKTsKICAg
ICB2b2lkIGFwcGx5Q29uc3RyYWludHNGYWlsZWQoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJj
ZUlkZW50aWZpZXIsIFN0cmluZyYmLCBTdHJpbmcmJik7CiAKLSAgICBjbGFzcyBTb3VyY2U7Ci0g
ICAgZnJpZW5kIGNsYXNzIFNvdXJjZTsKLQotICAgIFJlZjxXZWJDb3JlOjpSZWFsdGltZU1lZGlh
U291cmNlPiBjbG9uZVNvdXJjZShTb3VyY2UmKTsKLSAgICBSZWY8V2ViQ29yZTo6UmVhbHRpbWVN
ZWRpYVNvdXJjZT4gY2xvbmVWaWRlb1NvdXJjZShTb3VyY2UmKTsKKyAgICBSZWY8V2ViQ29yZTo6
UmVhbHRpbWVNZWRpYVNvdXJjZT4gY2xvbmVWaWRlb1NvdXJjZShSZW1vdGVSZWFsdGltZU1lZGlh
U291cmNlJik7CiAKLSAgICBIYXNoTWFwPFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVu
dGlmaWVyLCBSZWY8U291cmNlPj4gbV9zb3VyY2VzOworICAgIEhhc2hNYXA8V2ViQ29yZTo6UmVh
bHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIsIFJlZjxSZW1vdGVSZWFsdGltZU1lZGlhU291cmNl
Pj4gbV9zb3VyY2VzOwogICAgIFdlYlByb2Nlc3MmIG1fcHJvY2VzczsKICAgICBOb09wQ2FwdHVy
ZURldmljZU1hbmFnZXIgbV9ub09wQ2FwdHVyZURldmljZU1hbmFnZXI7CiAgICAgQXVkaW9GYWN0
b3J5IG1fYXVkaW9GYWN0b3J5OwogICAgIFZpZGVvRmFjdG9yeSBtX3ZpZGVvRmFjdG9yeTsKICAg
ICBEaXNwbGF5RmFjdG9yeSBtX2Rpc3BsYXlGYWN0b3J5OworICAgIFJlbW90ZUNhcHR1cmVTYW1w
bGVNYW5hZ2VyIG1fcmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXI7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9V
c2VyTWVkaWFDYXB0dXJlTWFuYWdlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5tZXNzYWdlcy5pbgppbmRleCAzMDEw
ZWVlOTFlOWFhNDdiZGE1NGQxNWMwYzhkNTVhMmI3ZGJiMDk3Li4xMDQ2NmJhZmQ3Nzk1MTJlMWQz
Mjg2ZDU5OWI2NTUyZDA2MTNmMzBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLm1lc3NhZ2Vz
LmluCkBAIC0yOCw4ICsyOCw2IEBAIG1lc3NhZ2VzIC0+IFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2Vy
IE5vdFJlZkNvdW50ZWQgewogICAgIFNvdXJjZVN0b3BwZWQoV2ViQ29yZTo6UmVhbHRpbWVNZWRp
YVNvdXJjZUlkZW50aWZpZXIgaWQpCiAgICAgU291cmNlTXV0ZWRDaGFuZ2VkKFdlYkNvcmU6OlJl
YWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyIGlkLCBib29sIG11dGVkKQogICAgIFNvdXJjZVNl
dHRpbmdzQ2hhbmdlZChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciBpZCwg
V2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzIHNldHRpbmdzKQotICAgIFN0b3Jh
Z2VDaGFuZ2VkKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyIGlkLCBXZWJL
aXQ6OlNoYXJlZE1lbW9yeTo6SGFuZGxlIHN0b3JhZ2VIYW5kbGUsIFdlYkNvcmU6OkNBQXVkaW9T
dHJlYW1EZXNjcmlwdGlvbiBkZXNjcmlwdGlvbiwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMpCi0g
ICAgQXVkaW9TYW1wbGVzQXZhaWxhYmxlKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVu
dGlmaWVyIGlkLCBNZWRpYVRpbWUgdGltZSwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMsIHVpbnQ2
NF90IHN0YXJ0RnJhbWUsIHVpbnQ2NF90IGVuZEZyYW1lKQogICAgIEFwcGx5Q29uc3RyYWludHNT
dWNjZWVkZWQoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIgaWQsIFdlYkNv
cmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyBzZXR0aW5ncykKICAgICBBcHBseUNvbnN0
cmFpbnRzRmFpbGVkKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyIGlkLCBT
dHJpbmcgZmFpbGVkQ29uc3RyYWludCwgU3RyaW5nIG1lc3NhZ2UpCiAgICAgUmVtb3RlVmlkZW9T
YW1wbGVBdmFpbGFibGUoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIgaWQs
IFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlIHNhbXBsZSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398844</attachid>
            <date>2020-05-08 02:29:04 -0700</date>
            <delta_ts>2020-05-08 05:42:08 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-211583-20200508112902.patch</filename>
            <type>text/plain</type>
            <size>75266</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxMzcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmVlZjgyYWQwODUyY2Ez
ZTdkMzAwM2MyMmU0ZGJkMDUwMmQxNDRhMS4uMWI0NWM5NTQ1MDc1MjRhZjA3MTI1ODhiYWI5MGU4
NmE3ZTU4NGFjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIwLTA1LTA4ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBIYW5kbGUgcmVtb3RlIGF1
ZGlvIGNhcHR1cmUgSVBDIG1lc3NhZ2VzIGluIGEgYmFja2dyb3VuZCB0aHJlYWQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTU4MworCisgICAgICAg
IFJldmlld2VkIGJ5IEVyaWMgQ2FybHNvbi4KKworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2E6OnB1c2hTYW1wbGVz
KToKKyAgICAgICAgQWRkIGFzc2VydGlvbiB0byBjaGVjayB0aGF0IHdlIGFyZSBub3QgcnVubmlu
ZyBvbiB0aGUgbWFpbiB0aHJlYWQuCisKIDIwMjAtMDUtMDcgIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgogCiAgICAgICAgIFZpZGVvIGNhcHR1cmUgZG9lcyBub3QgZ2V0IHVubXV0
ZWQgaW4gY2FzZSBvZiB0YWIgc3dpdGNoIG9uIGlPUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAzN2RjZGE4NDY5OGM4
Yjc2N2VlMjlmNTUwZDQ5YmUzM2I4MGNiNzk4Li5kOTg4ODQwMWY3NjI4YmMzYmEzNGZhN2YzMmUz
YjllOTAxMDhjZjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDIwLTA1LTA4ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBIYW5kbGUgcmVtb3RlIGF1
ZGlvIGNhcHR1cmUgSVBDIG1lc3NhZ2VzIGluIGEgYmFja2dyb3VuZCB0aHJlYWQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTU4MworCisgICAgICAg
IFJldmlld2VkIGJ5IEVyaWMgQ2FybHNvbi4KKworICAgICAgICBXZSBpbnRyb2R1Y2UgUmVtb3Rl
Q2FwdHVyZVNhbXBsZU1hbmFnZXIgd2hpY2ggaXMgcmVzcG9uc2libGUgdG8gZ2V0IHJlbW90ZSBj
YXB0dXJlIHNhbXBsZSBJUEMgbWVzc2FnZXMgYW5kIHRyZWF0IHRoZW0gZnJvbSBhIGJhY2tncm91
bmQgdGhyZWFkLgorICAgICAgICBJdCBpcyBjdXJyZW50bHkgdXNlZCB0byBoYW5kbGUgYXVkaW8g
Y2FwdHVyZSBJUEMgbWVzc2FnZXMuCisgICAgICAgIFdlIG1vdmUgVXNlck1lZGlhQ2FwdHVyZU1h
bmFnZXI6OlNvdXJjZSBpbiBpdHMgb3duIGZpbGUgYW5kIHJlbmFtZSBpdCB0byBSZW1vdGVSZWFs
dGltZU1lZGlhU291cmNlLgorCisgICAgICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisK
KyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERl
cml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2Vz
Lm1ha2U6CisgICAgICAgICogUGxhdGZvcm1NYWMuY21ha2U6CisgICAgICAgICogU291cmNlc0Nv
Y29hLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFn
ZXJQcm94eS5jcHA6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlci5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlcjo6
UmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDYXB0
dXJlU2FtcGxlTWFuYWdlcjo6flJlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXI6OnNldENvbm5lY3Rpb24pOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlcjo6YWRkU291cmNlKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXI6OnJlbW92ZVNvdXJjZSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyOjpkaXNwYXRjaFRv
VGhyZWFkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXI6OnN0
b3JhZ2VDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFn
ZXI6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9S
ZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNz
L2NvY29hL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAg
ICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1JlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2UuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZTo6UmVtb3Rl
UmVhbHRpbWVNZWRpYVNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlYWx0aW1lTWVk
aWFTb3VyY2U6On5SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZTo6d2hlblJlYWR5KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZTo6ZGlkRmFpbCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldEFzUmVhZHkpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVSZWFsdGltZU1lZGlhU291cmNlOjpjbG9uZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZVJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldENhcGFiaWxpdGllcyk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldFNldHRpbmdzKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZTo6cmVtb3RlQXVkaW9TYW1wbGVzQXZhaWxhYmxl
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZTo6cmVtb3RlVmlk
ZW9TYW1wbGVBdmFpbGFibGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZWFsdGltZU1lZGlh
U291cmNlOjpjb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVhbHRpbWVNZWRp
YVNvdXJjZTo6c3RhcnRQcm9kdWNpbmdEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVh
bHRpbWVNZWRpYVNvdXJjZTo6c3RvcFByb2R1Y2luZ0RhdGEpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVSZWFsdGltZU1lZGlhU291cmNlOjpzZXRTaG91bGRBcHBseVJvdGF0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZTo6Y2FwYWJpbGl0aWVzKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZTo6YXBwbHlDb25zdHJhaW50
cyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2U6OmFwcGx5Q29u
c3RyYWludHNTdWNjZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZWFsdGltZU1lZGlh
U291cmNlOjphcHBseUNvbnN0cmFpbnRzRmFpbGVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
UmVhbHRpbWVNZWRpYVNvdXJjZTo6aGFzRW5kZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVS
ZWFsdGltZU1lZGlhU291cmNlOjpzdG9wQmVpbmdPYnNlcnZlZCk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2U6OnJlcXVlc3RUb0VuZCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9jb2NvYS9SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVSZWFsdGltZU1lZGlhU291cmNlOjppZGVudGlmaWVyIGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0dGluZ3MgY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZWFsdGltZU1lZGlhU291cmNlOjpzZXRTaG91
bGRDYXB0dXJlSW5HUFVQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6c2hvdWxkQ2FwdHVyZUluR1BVUHJvY2VzcyBjb25zdCk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOjpjcmVhdGVDYXB0dXJlU291cmNlKToKKyAg
ICAgICAgKFdlYktpdDo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OmNsb25lU291cmNlKToKKyAg
ICAgICAgKFdlYktpdDo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OmNsb25lVmlkZW9Tb3VyY2Up
OgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6QXVkaW9GYWN0b3J5
OjpjcmVhdGVBdWRpb0NhcHR1cmVTb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFD
YXB0dXJlTWFuYWdlcjo6QXVkaW9GYWN0b3J5OjpzZXRTaG91bGRDYXB0dXJlSW5HUFVQcm9jZXNz
KToKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OlZpZGVvRmFjdG9y
eTo6Y3JlYXRlVmlkZW9DYXB0dXJlU291cmNlKToKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlh
Q2FwdHVyZU1hbmFnZXI6OkRpc3BsYXlGYWN0b3J5OjpjcmVhdGVEaXNwbGF5Q2FwdHVyZVNvdXJj
ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIubWVz
c2FnZXMuaW46CisKIDIwMjAtMDUtMDggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIEZpeCBHVEs0IGJ1aWxkIGFmdGVyIHIy
NjEzNzAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNv
Y29hLmNwcAppbmRleCAwYjY2ODc1YmRkOWY0NWU1MjE0ZTVjOTE2ZDc4MWVhMTE2MWJkMWQ5Li5i
ZWUzZWVkNTcyNDExMjA1MWEwNGY0ZWI0MmExZDgwMWFkYzU1ZTMyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXJDb2NvYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2EuY3BwCkBAIC0xNDMsOSAr
MTQzLDkgQEAgQXVkaW9Db21wb25lbnRJbnN0YW5jZSBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlckNvY29hOjpjcmVhdGVBdWRpb1VuaXQoQ0FBdWQKICAgICByZXR1cm4gcmVtb3RlSU9Vbml0
OwogfQogCi0vLyBNYXkgZ2V0IGNhbGxlZCBvbiBhIGJhY2tncm91bmQgdGhyZWFkLgogdm9pZCBB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hOjpwdXNoU2FtcGxlcyhjb25zdCBNZWRp
YVRpbWUmIHNhbXBsZVRpbWUsIGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiBhdWRpb0RhdGEsIGNv
bnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCBzaXplX3Qgc2FtcGxlQ291
bnQpCiB7CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKGRlc2NyaXB0
aW9uLnBsYXRmb3JtRGVzY3JpcHRpb24oKS50eXBlID09IFBsYXRmb3JtRGVzY3JpcHRpb246OkNB
QXVkaW9TdHJlYW1CYXNpY1R5cGUpOwogICAgIGlmICghbV9yZW1vdGVJT1VuaXQpCiAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQu
eGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlz
dAppbmRleCBhZDk5ZDMzNTYyN2RkMWE3Mzc5YzI3OGZhYzg5YjdjZDFiMTQ5NjRiLi42YTI5MTEx
NDVlNjBiYzJiN2ZjZWQyY2I0MGNhNzMxZmE1MTcxOTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9E
ZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC0xNjMsNyArMTYzLDkgQEAgJChQUk9K
RUNUX0RJUikvV2ViUHJvY2Vzcy9XZWJQYWdlL1Zpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyLm1l
c3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmlu
CiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAubWVz
c2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvY29jb2EvQXVkaW9DYXB0dXJlU2Ft
cGxlTWFuYWdlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9jb2NvYS9Q
bGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9XZWJQcm9j
ZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLm1lc3NhZ2VzLmluCiAkKFBST0pF
Q1RfRElSKS9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLm1lc3NhZ2Vz
LmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvY29tLmFwcGxlLldlYlBy
b2Nlc3Muc2IuaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0
cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2Zp
bGVsaXN0CmluZGV4IDdkNzBkYTRhMzNjNmMzYWQ0ZmIwYTk2YWZlMTVkNTE1Y2ZjODBlYzguLmJk
ODkzM2UzY2U2NDJhYzE1ODhkNTk5ZDE2OWRiMGI4MjU1ZjE2MzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dl
YktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtMSw0ICsxLDYgQEAKICMg
VGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBieSB0aGUgZ2VuZXJhdGUteGNmaWxlbGlzdHMgc2NyaXB0
LgorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvQXVkaW9DYXB0
dXJlU2FtcGxlTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL0F1ZGlvQ2FwdHVyZVNhbXBsZU1hbmFnZXJNZXNzYWdl
c1JlcGxpZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIv
QXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3JQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKICQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL0F1ZGlvU2Vzc2lvblJv
dXRpbmdBcmJpdHJhdG9yUHJveHlNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViS2l0Mi9BdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5TWVz
c2FnZXNSZXBsaWVzLmgKQEAgLTE2OSw2ICsxNzEsOCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eU1lc3Nh
ZwogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ0RN
UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0Mi9SZW1vdGVDRE1Qcm94eU1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNETVByb3h5TWVzc2FnZXNSZXBsaWVz
LmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNh
cHR1cmVTYW1wbGVNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXJNZXNz
YWdlc1JlcGxpZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktp
dDIvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKICQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXNS
ZXBsaWVzLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZSBi
L1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCBjOWQ2MzYzNTZkZWE2NWZl
MWU1NTcxYzU4MWJmMjAxNzNlNDk0OGM5Li5hMTJiNzg2M2M5MjU3OTIzODYxYjMwZjZiMDI3MDUy
MGYxZDZhY2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UK
KysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0xOTksNiArMTk5LDcg
QEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAJV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50
Q29ubmVjdGlvbiBcCiAJV2ViUHJvY2Vzcy9XZWJQcm9jZXNzIFwKIAlXZWJQcm9jZXNzL2NvY29h
L1BsYXliYWNrU2Vzc2lvbk1hbmFnZXIgXAorCVdlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVy
ZVNhbXBsZU1hbmFnZXIgXAogCVdlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFn
ZXIgXAogCVdlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlciBcCiAJV2ViUHJv
Y2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIgXApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1NYWMu
Y21ha2UKaW5kZXggY2M2NmM5MjMzNzg3ZGE1N2VkNmE4ZGY1M2Y4OWFhYmY3YTkyMWFlNS4uNDhl
MTYwMTNkY2IzYTEzZGZmMGQ1YmNlNzVmM2FjZTU0MTA0OTQyYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtTWFj
LmNtYWtlCkBAIC0yMDgsNiArMjA4LDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0X01FU1NBR0VTX0lO
X0ZJTEVTCiAgICAgV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IubWVz
c2FnZXMuaW4KIAogICAgIFdlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlci5t
ZXNzYWdlcy5pbgorICAgIFdlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFn
ZXIubWVzc2FnZXMuaW4KICAgICBXZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5h
Z2VyLm1lc3NhZ2VzLmluCiAgICAgV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyLm1lc3NhZ2VzLmluCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29h
LnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRleCA5NTY3YWU5ZDhiN2Y4
NzkwZGRkZWM4YmQ2MDdiNjc3ZmE0NDljMjM1Li4xNjhmMWRiMTA2ZDU0YzI1MGQ3MDc0NWE0MmZh
Yjk0MGExOWJhZmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQK
KysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC01NTUsNiArNTU1LDggQEAg
V2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuY3BwCiBXZWJQcm9jZXNz
L0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvckNvY29hLm1tCiAKIFdlYlByb2Nl
c3MvY29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlci5tbQorV2ViUHJvY2Vzcy9jb2NvYS9SZW1v
dGVDYXB0dXJlU2FtcGxlTWFuYWdlci5jcHAKK1dlYlByb2Nlc3MvY29jb2EvUmVtb3RlUmVhbHRp
bWVNZWRpYVNvdXJjZS5jcHAKIFdlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFn
ZXIuY3BwCiBXZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KIFdlYlBy
b2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3Bw
CmluZGV4IGIyMzQzZjRlODUxMmE2ODIyM2QzOWZmNjBiODJjNDU1MmNmODIwZmYuLmU4OTNjZDJj
MDkxZWZmY2E0NzA0N2E0OGY4NzRmYmQ0NmJjOTMzMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJv
eHkuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShN
RURJQV9TVFJFQU0pCiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiUmVtb3Rl
Q2FwdHVyZVNhbXBsZU1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlNoYXJlZFJpbmdCdWZm
ZXJTdG9yYWdlLmgiCiAjaW5jbHVkZSAiVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJNZXNzYWdlcy5o
IgogI2luY2x1ZGUgIlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgpAQCAt
MTM4LDcgKzEzOSw3IEBAIHByaXZhdGU6CiAgICAgICAgIHVpbnQ2NF90IHN0YXJ0RnJhbWU7CiAg
ICAgICAgIHVpbnQ2NF90IGVuZEZyYW1lOwogICAgICAgICBtX3JpbmdCdWZmZXIuZ2V0Q3VycmVu
dEZyYW1lQm91bmRzKHN0YXJ0RnJhbWUsIGVuZEZyYW1lKTsKLSAgICAgICAgbV9jb25uZWN0aW9u
LT5zZW5kKE1lc3NhZ2VzOjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6QXVkaW9TYW1wbGVzQXZh
aWxhYmxlKG1faWQsIHRpbWUsIG51bWJlck9mRnJhbWVzLCBzdGFydEZyYW1lLCBlbmRGcmFtZSks
IDApOworICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZUNhcHR1cmVT
YW1wbGVNYW5hZ2VyOjpBdWRpb1NhbXBsZXNBdmFpbGFibGUobV9pZCwgdGltZSwgbnVtYmVyT2ZG
cmFtZXMsIHN0YXJ0RnJhbWUsIGVuZEZyYW1lKSwgMCk7CiAgICAgfQogCiAgICAgdm9pZCB2aWRl
b1NhbXBsZUF2YWlsYWJsZShNZWRpYVNhbXBsZSYgc2FtcGxlKSBmaW5hbApAQCAtMTgxLDcgKzE4
Miw3IEBAIHByaXZhdGU6CiAgICAgICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZTsKICAg
ICAgICAgaWYgKHN0b3JhZ2UpCiAgICAgICAgICAgICBzdG9yYWdlLT5jcmVhdGVIYW5kbGUoaGFu
ZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKLSAgICAgICAgbV9jb25u
ZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6U3RvcmFnZUNo
YW5nZWQobV9pZCwgaGFuZGxlLCBtX2Rlc2NyaXB0aW9uLCBtX251bWJlck9mRnJhbWVzKSwgMCk7
CisgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlQ2FwdHVyZVNhbXBs
ZU1hbmFnZXI6OkF1ZGlvU3RvcmFnZUNoYW5nZWQobV9pZCwgaGFuZGxlLCBtX2Rlc2NyaXB0aW9u
LCBtX251bWJlck9mRnJhbWVzKSwgMCk7CiAgICAgfQogCiAgICAgYm9vbCBwcmV2ZW50U291cmNl
RnJvbVN0b3BwaW5nKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IDcxN2U4ZGY1NWQyNjYyYWNlY2FhYWFkODIzNzM0ZTg5YWE1ZTkyMzEu
Ljk3MGM2ZGY5YzU4ZmUwNjliZWViNzVlNjdlZjQzYWRhZDQxYjY4N2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTQyLDYgKzE0Miw3
IEBACiAJCTBGQ0I0RTZDMThCQkYyNkEwMDBGQ0ZDOSAvKiBXS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQ0I0
RTZBMThCQkYyNkEwMDBGQ0ZDOSAvKiBXS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaCAqLzsgfTsK
IAkJMEZEQ0Q3RjcxRDQ3RTkyQTAwOUYwOEJDIC8qIExvZ0luaXRpYWxpemF0aW9uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkRDRDdGNjFENDdFOTJB
MDA5RjA4QkMgLyogTG9nSW5pdGlhbGl6YXRpb24uaCAqLzsgfTsKIAkJMEZGMjRBMkQxODc5RTRC
QzAwM0FCRjBDIC8qIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlUmVjZWl2
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZG
MjRBMkIxODc5RTRCQzAwM0FCRjBDIC8qIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlN
ZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OworCQkwRkYyNEEyRDE4NzlFNEJDMDAzQUJGMEQgLyog
UmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGMjRBMkIxODc5RTRCQzAwM0FC
RjBEIC8qIFJlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsg
fTsKIAkJMEZGMjRBMkUxODc5RTRCQzAwM0FCRjBDIC8qIFJlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEZGMjRBMkMxODc5RTRCQzAwM0FCRjBDIC8qIFJlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhUHJveHlNZXNzYWdlcy5oICovOyB9OwogCQkwRkYyNjRBMDFBMUZGOUNDMDAxRkU3NTkg
LyogUmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjcwN0M3OTFBMUZFRUEzMDBEQTdB
NDUgLyogUmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhLmggKi87IH07CiAJ
CTBGRkVEOThFMjNBMzIwMEEwMEVFRjQ1OSAvKiBXS1dlYlZpZXdJT1MuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRkVEOThDMjNBMzIwMDQwMEVFRjQ1
OSAvKiBXS1dlYlZpZXdJT1MuaCAqLzsgfTsKQEAgLTIyNTgsNiArMjI1OSw3IEBACiAJCTBGQ0I0
RTZCMThCQkYyNkEwMDBGQ0ZDOSAvKiBXS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24ubW07IHBhdGggPSBpb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRkRDRDdGNjFENDdFOTJBMDA5RjA4QkMgLyogTG9nSW5pdGlh
bGl6YXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTG9nSW5pdGlhbGl6
YXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZGMjRBMkIxODc5RTRCQzAw
M0FCRjBDIC8qIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlUmVjZWl2ZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNl
cy9XZWJLaXQyL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlUmVjZWl2ZXIu
Y3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQkwRkYyNEEyQjE4NzlF
NEJDMDAzQUJGMEQgLyogUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUmVtb3RlQ2FwdHVyZVNh
bXBsZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0Mi9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJj
ZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTBGRjI0QTJDMTg3OUU0QkMwMDNBQkYw
QyAvKiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1l
c3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhUHJveHlNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElS
OyB9OwogCQkwRkYyNEEyRjE4NzlFNEZFMDAzQUJGMEMgLyogUmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWFQcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVBy
b3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkZFRDk4QzIz
QTMyMDA0MDBFRUY0NTkgLyogV0tXZWJWaWV3SU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLV2ViVmll
d0lPUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzQyOSw2ICszNDMxLDExIEBA
CiAJCTQxNTc4NTMwMjEyNzZCNkYwMEREMzgwMCAvKiBjb3B5LXdlYmNvbnRlbnQtcmVzb3VyY2Vz
LXRvLXByaXZhdGUtaGVhZGVycy5zaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnNoOyBwYXRoID0gImNvcHktd2ViY29udGVudC1y
ZXNvdXJjZXMtdG8tcHJpdmF0ZS1oZWFkZXJzLnNoIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDE1N0U0QUYyMEUyRUM5ODAwQTZDMEQ3IC8qIGNvbS5nb29nbGUubzFkYnJvd3NlcnBs
dWdpbi5zYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBjb20uZ29vZ2xlLm8xZGJyb3dzZXJwbHVn
aW4uc2I7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNTg2NDlBMjNCRTA5MjQwMEEw
QTYxRSAvKiBSVENFbmNvZGVySWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSVENFbmNvZGVySWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0MTY4NEM0RDI0NjQzQkZBMDAxQ0U4RUQgLyogUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFn
ZXIubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVtb3RlQ2FwdHVyZVNhbXBs
ZU1hbmFnZXIubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNjg0
QzRFMjQ2NDNDODEwMDFDRThFRCAvKiBSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTY4NEM0RjI0NjQzRDNGMDAxQ0U4RUQg
LyogUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk0MTY4NEM1MDI0NjQ1MEZEMDAxQ0U4RUQgLyogUmVtb3RlUmVh
bHRpbWVNZWRpYVNvdXJjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBSZW1vdGVSZWFsdGltZU1lZGlhU291cmNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNDE2ODRDNTEyNDY0NTBGRDAwMUNFOEVEIC8qIFJlbW90ZVJlYWx0aW1lTWVkaWFTb3Vy
Y2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlUmVhbHRpbWVNZWRp
YVNvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTZDRDc0NTIzRkIxNzhC
MDA2NjFEOTkgLyogTUROU1JlZ2lzdGVySWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBNRE5TUmVnaXN0ZXJJZGVudGlmaWVyLmg7IHBhdGggPSBOZXR3b3JrL3dl
YnJ0Yy9NRE5TUmVnaXN0ZXJJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQxNkY4MDg2MjQ1QjM5NzQwMEI2OEYwMiAvKiBMaWJXZWJSVENOZXR3b3JrLm1lc3NhZ2Vz
LmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IExpYldlYlJUQ05ldHdvcmsubWVzc2FnZXMuaW47
IHBhdGggPSBOZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENOZXR3b3JrLm1lc3NhZ2VzLmluOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTZGODA4OTI0NUM3RkY1MDBCNjhGMDIgLyogTGli
V2ViUlRDTmV0d29yay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBM
aWJXZWJSVENOZXR3b3JrLmNwcDsgcGF0aCA9IE5ldHdvcmsvd2VicnRjL0xpYldlYlJUQ05ldHdv
cmsuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODM2NiwxMSArODM3MywxNiBA
QAogCQk3QzZFNzBGODE4QjJENDdFMDBGMjRFMkUgLyogY29jb2EgKi8gPSB7CiAJCQlpc2EgPSBQ
QlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTQxNjg0QzRGMjQ2NDNEM0YwMDFDRThFRCAv
KiBSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlci5jcHAgKi8sCisJCQkJNDE2ODRDNEUyNDY0M0M4
MTAwMUNFOEVEIC8qIFJlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLmggKi8sCisJCQkJNDE2ODRD
NEQyNDY0M0JGQTAwMUNFOEVEIC8qIFJlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLm1lc3NhZ2Vz
LmluICovLAogCQkJCUNENDU3MENCMjQ0MEZCMkEwMEEzRENFQiAvKiBBdWRpb1Nlc3Npb25Sb3V0
aW5nQXJiaXRyYXRvci5jcHAgKi8sCiAJCQkJQ0Q0NTcwQ0EyNDQwRkIyQTAwQTNEQ0VCIC8qIEF1
ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yLmggKi8sCiAJCQkJQ0RBMjlBMTkxQ0JEQkY0MTAw
OTAxQ0NGIC8qIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXIuaCAqLywKIAkJCQlDREEyOUExQzFDQkRC
RjVCMDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uTWFuYWdlci5tZXNzYWdlcy5pbiAqLywKIAkJ
CQlDREEyOUExODFDQkRCRjQxMDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uTWFuYWdlci5tbSAq
LywKKwkJCQk0MTY4NEM1MDI0NjQ1MEZEMDAxQ0U4RUQgLyogUmVtb3RlUmVhbHRpbWVNZWRpYVNv
dXJjZS5jcHAgKi8sCisJCQkJNDE2ODRDNTEyNDY0NTBGRDAwMUNFOEVEIC8qIFJlbW90ZVJlYWx0
aW1lTWVkaWFTb3VyY2UuaCAqLywKIAkJCQlDRDQ5MUIwNTFFNzBEMDVGMDAwMDkwNjYgLyogVXNl
ck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3BwICovLAogCQkJCUNENDkxQjA2MUU3MEQwNUYwMDAwOTA2
NiAvKiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oICovLAogCQkJCUNENDkxQjBBMUU3MzJEMTIw
MDAwOTA2NiAvKiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5tZXNzYWdlcy5pbiAqLywKQEAgLTk5
NjAsNiArOTk3Miw3IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJ
CTJEN0RFQkUyMjEyNjlFNEIwMEI5RjczQyAvKiB1bmlmaWVkLXNvdXJjZXMgKi8sCisJCQkJMEZG
MjRBMkIxODc5RTRCQzAwM0FCRjBEIC8qIFJlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyTWVzc2Fn
ZVJlY2VpdmVyLmNwcCAqLywKIAkJCQlDRDQ1NzBEMDI0NDEwMTRBMDBBM0RDRUIgLyogQXVkaW9T
ZXNzaW9uUm91dGluZ0FyYml0cmF0b3JQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJ
Q0Q0NTcwRDEyNDQxMDE0QjAwQTNEQ0VCIC8qIEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9y
UHJveHlNZXNzYWdlcy5oICovLAogCQkJCUNENDU3MEQyMjQ0MTAxNEIwMEEzRENFQiAvKiBBdWRp
b1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5TWVzc2FnZXNSZXBsaWVzLmggKi8sCkBAIC0x
MjY3Miw2ICsxMjY4NSw3IEBACiAJCQkJMkQ5MkE3N0IyMTJCNkE3MTAwRjQ5M0ZEIC8qIEFyZ3Vt
ZW50Q29kZXJzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJERUIxRDJFMjEyNzQ3MzYwMDkzMzkw
NiAvKiBBcmd1bWVudENvZGVyc0NGLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTJBNzdDMjEy
QjZBNzEwMEY0OTNGRCAvKiBBdHRhY2htZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGRjI0
QTJEMTg3OUU0QkMwMDNBQkYwRCAvKiBSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlck1lc3NhZ2VS
ZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDQ1NzBENDI0NDExRDBGMDBBM0RDRUIg
LyogQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
Q0Q3Q0YzNjEyNDQ0Q0NBNjAwM0JDNEQ1IC8qIEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9y
UHJveHlDb2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNENDU3MEQzMjQ0MTEzQjUwMEEzRENF
QiAvKiBBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5TWVzc2FnZVJlY2VpdmVyLmNw
cCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2Nv
Y29hL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9jb2NvYS9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlci5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2Jj
M2RkNTljM2ZlNzAwOTQyYzQ2MTU5ZDMzODEzZGI0ZjFkM2ZiNAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdl
ci5jcHAKQEAgLTAsMCArMSwxNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIuaCIKKworI2luY2x1ZGUgIlJl
bW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJTaGFyZWRSaW5n
QnVmZmVyU3RvcmFnZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvV2ViQXVkaW9CdWZmZXJMaXN0Lmg+
CisKKyNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworbmFtZXNw
YWNlIFdlYktpdCB7Cit1c2luZyBuYW1lc3BhY2UgUEFMOwordXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CisKK1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyOjpSZW1vdGVDYXB0dXJlU2FtcGxlTWFu
YWdlcigpCisgICAgOiBtX3F1ZXVlKFdvcmtRdWV1ZTo6Y3JlYXRlKCJSZW1vdGVDYXB0dXJlU2Ft
cGxlTWFuYWdlciIsIFdvcmtRdWV1ZTo6VHlwZTo6U2VyaWFsLCBXb3JrUXVldWU6OlFPUzo6VXNl
ckludGVyYWN0aXZlKSkKK3sKK30KKworUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXI6On5SZW1v
dGVDYXB0dXJlU2FtcGxlTWFuYWdlcigpCit7CisgICAgc2V0Q29ubmVjdGlvbihudWxscHRyKTsK
K30KKwordm9pZCBSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlcjo6c2V0Q29ubmVjdGlvbihJUEM6
OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24pCit7CisgICAgaWYgKG1fY29ubmVjdGlvbiA9PSBjb25u
ZWN0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9jb25uZWN0aW9uKQorICAgICAg
ICBtX2Nvbm5lY3Rpb24tPnJlbW92ZVRocmVhZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVt
b3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7CisKKyAgICBt
X2Nvbm5lY3Rpb24gPSBXVEZNb3ZlKGNvbm5lY3Rpb24pOworCisgICAgaWYgKG1fY29ubmVjdGlv
bikKKyAgICAgICAgbV9jb25uZWN0aW9uLT5hZGRUaHJlYWRNZXNzYWdlUmVjZWl2ZXIoTWVzc2Fn
ZXM6OlJlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIHRo
aXMpOworfQorCit2b2lkIFJlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyOjphZGRTb3VyY2UoUmVm
PFJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2U+JiYgc291cmNlKQoreworICAgIEFTU0VSVChXVEY6
OmlzTWFpblJ1bkxvb3AoKSk7CisgICAgc2V0Q29ubmVjdGlvbihzb3VyY2UtPmNvbm5lY3Rpb24o
KSk7CisKKyAgICBkaXNwYXRjaFRvVGhyZWFkKFt0aGlzLCBzb3VyY2UgPSBXVEZNb3ZlKHNvdXJj
ZSldKCkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8gaWRlbnRpZmllciA9IHNvdXJjZS0+aWRlbnRp
ZmllcigpOworCisgICAgICAgIEFTU0VSVCghbV9zb3VyY2VzLmNvbnRhaW5zKGlkZW50aWZpZXIp
KTsKKyAgICAgICAgbV9zb3VyY2VzLmFkZChpZGVudGlmaWVyLCBtYWtlVW5pcXVlPFJlbW90ZUF1
ZGlvPihXVEZNb3ZlKHNvdXJjZSkpKTsKKyAgICB9KTsKK30KKwordm9pZCBSZW1vdGVDYXB0dXJl
U2FtcGxlTWFuYWdlcjo6cmVtb3ZlU291cmNlKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VJ
ZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAgQVNTRVJUKFdURjo6aXNNYWluUnVuTG9vcCgp
KTsKKyAgICBkaXNwYXRjaFRvVGhyZWFkKFt0aGlzLCBpZGVudGlmaWVyXSB7CisgICAgICAgIEFT
U0VSVChtX3NvdXJjZXMuY29udGFpbnMoaWRlbnRpZmllcikpOworICAgICAgICBtX3NvdXJjZXMu
cmVtb3ZlKGlkZW50aWZpZXIpOworICAgIH0pOworfQorCit2b2lkIFJlbW90ZUNhcHR1cmVTYW1w
bGVNYW5hZ2VyOjpkaXNwYXRjaFRvVGhyZWFkKEZ1bmN0aW9uPHZvaWQoKT4mJiBjYWxsYmFjaykK
K3sKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChXVEZNb3ZlKGNhbGxiYWNrKSk7Cit9CisKK3ZvaWQg
UmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXI6OmF1ZGlvU3RvcmFnZUNoYW5nZWQoV2ViQ29yZTo6
UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU2hhcmVkTWVt
b3J5OjpIYW5kbGUmIGhhbmRsZSwgY29uc3QgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0
aW9uJiBkZXNjcmlwdGlvbiwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMpCit7CisgICAgQVNTRVJU
KCFXVEY6OmlzTWFpblJ1bkxvb3AoKSk7CisKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV9zb3VyY2Vz
LmZpbmQoaWRlbnRpZmllcik7CisgICAgaWYgKGl0ZXJhdG9yID09IG1fc291cmNlcy5lbmQoKSkg
eworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihXZWJSVEMsICJVbmFibGUgdG8gZmluZCBzb3Vy
Y2UgJWxsdSBmb3Igc3RvcmFnZUNoYW5nZWQiLCBpZGVudGlmaWVyLnRvVUludDY0KCkpOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIGl0ZXJhdG9yLT52YWx1ZS0+c2V0U3RvcmFnZShoYW5k
bGUsIGRlc2NyaXB0aW9uLCBudW1iZXJPZkZyYW1lcyk7Cit9CisKK3ZvaWQgUmVtb3RlQ2FwdHVy
ZVNhbXBsZU1hbmFnZXI6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZShXZWJDb3JlOjpSZWFsdGltZU1l
ZGlhU291cmNlSWRlbnRpZmllciBpZGVudGlmaWVyLCBNZWRpYVRpbWUgdGltZSwgdWludDY0X3Qg
bnVtYmVyT2ZGcmFtZXMsIHVpbnQ2NF90IHN0YXJ0RnJhbWUsIHVpbnQ2NF90IGVuZEZyYW1lKQor
eworICAgIEFTU0VSVCghV1RGOjppc01haW5SdW5Mb29wKCkpOworCisgICAgYXV0byBpdGVyYXRv
ciA9IG1fc291cmNlcy5maW5kKGlkZW50aWZpZXIpOworICAgIGlmIChpdGVyYXRvciA9PSBtX3Nv
dXJjZXMuZW5kKCkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoV2ViUlRDLCAiVW5hYmxl
IHRvIGZpbmQgc291cmNlICVsbHUgZm9yIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZSIsIGlkZW50aWZp
ZXIudG9VSW50NjQoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaXRlcmF0b3ItPnZh
bHVlLT5hdWRpb1NhbXBsZXNBdmFpbGFibGUodGltZSwgbnVtYmVyT2ZGcmFtZXMsIHN0YXJ0RnJh
bWUsIGVuZEZyYW1lKTsKK30KKworUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXI6OlJlbW90ZUF1
ZGlvOjpSZW1vdGVBdWRpbyhSZWY8UmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZT4mJiBzb3VyY2Up
CisgICAgOiBtX3NvdXJjZShXVEZNb3ZlKHNvdXJjZSkpCisgICAgLCBtX3JpbmdCdWZmZXIobWFr
ZVVuaXF1ZTxDQVJpbmdCdWZmZXI+KG1ha2VVbmlxdWVSZWY8U2hhcmVkUmluZ0J1ZmZlclN0b3Jh
Z2U+KG51bGxwdHIpKSkKK3sKK30KKwordm9pZCBSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlcjo6
UmVtb3RlQXVkaW86OnNldFN0b3JhZ2UoY29uc3QgU2hhcmVkTWVtb3J5OjpIYW5kbGUmIGhhbmRs
ZSwgY29uc3QgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwg
dWludDY0X3QgbnVtYmVyT2ZGcmFtZXMpCit7CisgICAgbV9kZXNjcmlwdGlvbiA9IGRlc2NyaXB0
aW9uOworCisgICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gbWVtb3J5OworICAgIGlmICghaGFuZGxl
LmlzTnVsbCgpKSB7CisgICAgICAgIG1lbW9yeSA9IFNoYXJlZE1lbW9yeTo6bWFwKGhhbmRsZSwg
U2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CisgICAgICAgIFJFTEVBU0VfTE9H
X0VSUk9SX0lGKCFtZW1vcnksIFdlYlJUQywgIlVuYWJsZSB0byBjcmVhdGUgc2hhcmVkIG1lbW9y
eSBmb3IgYXVkaW8gc291cmNlICVsbHUiLCBtX3NvdXJjZS0+aWRlbnRpZmllcigpLnRvVUludDY0
KCkpOworICAgIH0KKworICAgIGF1dG8mIHN0b3JhZ2UgPSBzdGF0aWNfY2FzdDxTaGFyZWRSaW5n
QnVmZmVyU3RvcmFnZSY+KG1fcmluZ0J1ZmZlci0+c3RvcmFnZSgpKTsKKyAgICBpZiAoIW1lbW9y
eSkgeworICAgICAgICBtX3JpbmdCdWZmZXItPmRlYWxsb2NhdGUoKTsKKyAgICAgICAgc3RvcmFn
ZS5zZXRSZWFkT25seShmYWxzZSk7CisgICAgICAgIHN0b3JhZ2Uuc2V0U3RvcmFnZShudWxscHRy
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHN0b3JhZ2Uuc2V0U3RvcmFnZShtZW1v
cnkucmVsZWFzZU5vbk51bGwoKSk7CisgICAgc3RvcmFnZS5zZXRSZWFkT25seSh0cnVlKTsKKyAg
ICBtX3JpbmdCdWZmZXItPmFsbG9jYXRlKGRlc2NyaXB0aW9uLCBudW1iZXJPZkZyYW1lcyk7Cit9
CisKK3ZvaWQgUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXI6OlJlbW90ZUF1ZGlvOjphdWRpb1Nh
bXBsZXNBdmFpbGFibGUoTWVkaWFUaW1lIHRpbWUsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzLCB1
aW50NjRfdCBzdGFydEZyYW1lLCB1aW50NjRfdCBlbmRGcmFtZSkKK3sKKyAgICAvLyBGSVhNRTog
V2Ugc2hvdWxkIGFsbG9jYXRlIHRoaXMgYnVmZmVyIG9uY2UgYW5kIHJlc2l6ZSBpdCBhcyBuZWVk
ZWQuCisgICAgV2ViQXVkaW9CdWZmZXJMaXN0IGF1ZGlvRGF0YShtX2Rlc2NyaXB0aW9uLCBudW1i
ZXJPZkZyYW1lcyk7CisKKyAgICBtX3JpbmdCdWZmZXItPnNldEN1cnJlbnRGcmFtZUJvdW5kcyhz
dGFydEZyYW1lLCBlbmRGcmFtZSk7CisgICAgbV9yaW5nQnVmZmVyLT5mZXRjaChhdWRpb0RhdGEu
bGlzdCgpLCBudW1iZXJPZkZyYW1lcywgdGltZS50aW1lVmFsdWUoKSk7CisKKyAgICBtX3NvdXJj
ZS0+cmVtb3RlQXVkaW9TYW1wbGVzQXZhaWxhYmxlKHRpbWUsIGF1ZGlvRGF0YSwgbV9kZXNjcmlw
dGlvbiwgbnVtYmVyT2ZGcmFtZXMpOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFn
ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42NWJhNTY0MmE4NmIyNjg0Njc1MzdhOGM5N2RiOTllOGY3YzkyMmUw
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90
ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLmgKQEAgLTAsMCArMSw4NSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShNRURJQV9TVFJFQU0p
CisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgi
CisjaW5jbHVkZSAiUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZS5oIgorI2luY2x1ZGUgIlNoYXJl
ZE1lbW9yeS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9DQVJpbmdCdWZmZXIuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgorI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K2NsYXNzIFJlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyIDogcHVibGljIElQQzo6Q29ubmVjdGlv
bjo6VGhyZWFkTWVzc2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
K3B1YmxpYzoKKyAgICBSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlcigpOworICAgIH5SZW1vdGVD
YXB0dXJlU2FtcGxlTWFuYWdlcigpOworCisgICAgdm9pZCBhZGRTb3VyY2UoUmVmPFJlbW90ZVJl
YWx0aW1lTWVkaWFTb3VyY2U+JiYpOworICAgIHZvaWQgcmVtb3ZlU291cmNlKFdlYkNvcmU6OlJl
YWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyKTsKKworICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CisKK3ByaXZhdGU6CisgICAgLy8g
SVBDOjpDb25uZWN0aW9uOjpUaHJlYWRNZXNzYWdlUmVjZWl2ZXIKKyAgICB2b2lkIGRpc3BhdGNo
VG9UaHJlYWQoRnVuY3Rpb248dm9pZCgpPiYmKSBmaW5hbDsKKworICAgIC8vIE1lc3NhZ2VzCisg
ICAgdm9pZCBhdWRpb1N0b3JhZ2VDaGFuZ2VkKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VJ
ZGVudGlmaWVyLCBjb25zdCBTaGFyZWRNZW1vcnk6OkhhbmRsZSYsIGNvbnN0IFdlYkNvcmU6OkNB
QXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKTsKKyAgICB2
b2lkIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRl
bnRpZmllciwgTWVkaWFUaW1lLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcywgdWludDY0X3Qgc3Rh
cnRGcmFtZSwgdWludDY0X3QgZW5kRnJhbWUpOworCisgICAgdm9pZCBzZXRDb25uZWN0aW9uKElQ
Qzo6Q29ubmVjdGlvbiopOworCisgICAgY2xhc3MgUmVtb3RlQXVkaW8geworICAgICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBwdWJsaWM6CisgICAgICAgIGV4cGxpY2l0IFJlbW90
ZUF1ZGlvKFJlZjxSZW1vdGVSZWFsdGltZU1lZGlhU291cmNlPiYmKTsKKworICAgICAgICB2b2lk
IHNldFN0b3JhZ2UoY29uc3QgU2hhcmVkTWVtb3J5OjpIYW5kbGUmLCBjb25zdCBXZWJDb3JlOjpD
QUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcyk7CisgICAg
ICAgIHZvaWQgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKE1lZGlhVGltZSwgdWludDY0X3QgbnVtYmVy
T2ZGcmFtZXMsIHVpbnQ2NF90IHN0YXJ0RnJhbWUsIHVpbnQ2NF90IGVuZEZyYW1lKTsKKworICAg
IHByaXZhdGU6CisgICAgICAgIFJlZjxSZW1vdGVSZWFsdGltZU1lZGlhU291cmNlPiBtX3NvdXJj
ZTsKKyAgICAgICAgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uIG1fZGVzY3JpcHRp
b247CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpDQVJpbmdCdWZmZXI+IG1fcmlu
Z0J1ZmZlcjsKKyAgICB9OworCisgICAgUmVmPFdvcmtRdWV1ZT4gbV9xdWV1ZTsKKyAgICBSZWZQ
dHI8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CisKKyAgICAvLyBiYWNrZ3JvdW5kIHRo
cmVhZCBtZW1iZXIKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVu
dGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQXVkaW8+PiBtX3NvdXJjZXM7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFn
ZXIubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjVhOThkNDU2YzI0N2MxODVlNzZmNDgzNGE5OTdm
OGJkZDhhMGU3YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9j
b2NvYS9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDMx
IEBACisjIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWYgRU5BQkxFKE1F
RElBX1NUUkVBTSkKKworbWVzc2FnZXMgLT4gUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIgTm90
UmVmQ291bnRlZCB7CisgICAgQXVkaW9TdG9yYWdlQ2hhbmdlZChXZWJDb3JlOjpSZWFsdGltZU1l
ZGlhU291cmNlSWRlbnRpZmllciBpZCwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OkhhbmRsZSBzdG9y
YWdlSGFuZGxlLCBXZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24gZGVzY3JpcHRpb24s
IHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKQorICAgIEF1ZGlvU2FtcGxlc0F2YWlsYWJsZShXZWJD
b3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciBpZCwgTWVkaWFUaW1lIHRpbWUsIHVp
bnQ2NF90IG51bWJlck9mRnJhbWVzLCB1aW50NjRfdCBzdGFydEZyYW1lLCB1aW50NjRfdCBlbmRG
cmFtZSkKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
Y29jb2EvUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvY29jb2EvUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTdm
MDQwMGU1MmIxYzY1MjIwYTE2N2VlYWRhNTBlZWVmZjI2OTU3MgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVSZWFsdGltZU1lZGlhU291cmNl
LmNwcApAQCAtMCwwICsxLDMwNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJSZW1vdGVSZWFsdGltZU1lZGlhU291cmNlLmgiCisKKyNpZiBQTEFURk9STShD
T0NPQSkgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25u
ZWN0aW9uLmgiCisjaW5jbHVkZSAiU2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2UuaCIKKyNpbmNsdWRl
ICJVc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oIgorI2luY2x1ZGUgIlVzZXJNZWRpYUNhcHR1cmVN
YW5hZ2VyTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5
TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9J
bWFnZVRyYW5zZmVyU2Vzc2lvblZULmg+CisjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYUNvbnN0cmFp
bnRzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9SZW1vdGVWaWRlb1NhbXBsZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
V2ViQXVkaW9CdWZmZXJMaXN0Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewordXNpbmcgbmFtZXNw
YWNlIFBBTDsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitSZWY8UmVhbHRpbWVNZWRpYVNv
dXJjZT4gUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZTo6Y3JlYXRlKGNvbnN0IFdlYkNvcmU6OkNh
cHR1cmVEZXZpY2UmIGRldmljZSwgY29uc3QgV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50cyYgY29u
c3RyYWludHMsIFN0cmluZyYmIG5hbWUsIFN0cmluZyYmIGhhc2hTYWx0LCBVc2VyTWVkaWFDYXB0
dXJlTWFuYWdlciYgbWFuYWdlciwgYm9vbCBzaG91bGRDYXB0dXJlSW5HUFVQcm9jZXNzKQorewor
ICAgIGF1dG8gc291cmNlID0gYWRvcHRSZWYoKm5ldyBSZW1vdGVSZWFsdGltZU1lZGlhU291cmNl
KFJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyOjpnZW5lcmF0ZSgpLCBkZXZpY2UudHlwZSgp
LCBXVEZNb3ZlKG5hbWUpLCBXVEZNb3ZlKGhhc2hTYWx0KSwgbWFuYWdlciwgc2hvdWxkQ2FwdHVy
ZUluR1BVUHJvY2VzcykpOworICAgIG1hbmFnZXIuYWRkU291cmNlKHNvdXJjZS5jb3B5UmVmKCkp
OworICAgIHNvdXJjZS0+Y29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6
OlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6OkNyZWF0ZU1lZGlhU291cmNlRm9yQ2FwdHVy
ZURldmljZVdpdGhDb25zdHJhaW50cyhzb3VyY2UtPmlkZW50aWZpZXIoKSwgZGV2aWNlLCBzb3Vy
Y2UtPmRldmljZUlESGFzaFNhbHQoKSwgY29uc3RyYWludHMpLCBbc291cmNlID0gc291cmNlLmNv
cHlSZWYoKV0oYm9vbCBzdWNjZWVkZWQsIGF1dG8mJiBlcnJvck1lc3NhZ2UsIGF1dG8mJiBzZXR0
aW5ncywgYXV0byYmIGNhcGFiaWxpdGllcykgeworICAgICAgICBpZiAoIXN1Y2NlZWRlZCkgewor
ICAgICAgICAgICAgc291cmNlLT5kaWRGYWlsKFdURk1vdmUoZXJyb3JNZXNzYWdlKSk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgc291cmNlLT5zZXROYW1lKFN0cmlu
ZyB7IHNldHRpbmdzLmxhYmVsKCkuc3RyaW5nKCkgfSk7CisgICAgICAgIHNvdXJjZS0+c2V0U2V0
dGluZ3MoV1RGTW92ZShzZXR0aW5ncykpOworICAgICAgICBzb3VyY2UtPnNldENhcGFiaWxpdGll
cyhXVEZNb3ZlKGNhcGFiaWxpdGllcykpOworICAgICAgICBzb3VyY2UtPnNldEFzUmVhZHkoKTsK
KyAgICB9KTsKKyAgICByZXR1cm4gc291cmNlOworfQorCitzdGF0aWMgaW5saW5lIFJlYWx0aW1l
TWVkaWFTb3VyY2U6OlR5cGUgc291cmNlVHlwZUZyb21EZXZpY2VUeXBlKENhcHR1cmVEZXZpY2U6
OkRldmljZVR5cGUgZGV2aWNlVHlwZSkKK3sKKyAgICBzd2l0Y2ggKGRldmljZVR5cGUpIHsKKyAg
ICBjYXNlIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6Ok1pY3JvcGhvbmU6CisgICAgICAgIHJl
dHVybiBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbzsKKyAgICBjYXNlIENhcHR1cmVE
ZXZpY2U6OkRldmljZVR5cGU6OkNhbWVyYToKKyAgICBjYXNlIENhcHR1cmVEZXZpY2U6OkRldmlj
ZVR5cGU6OlNjcmVlbjoKKyAgICBjYXNlIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OldpbmRv
dzoKKyAgICAgICAgcmV0dXJuIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlZpZGVvOworICAg
IGNhc2UgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6VW5rbm93bjoKKyAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgfQorICAgIHJldHVybiBSZWFsdGltZU1lZGlhU291cmNlOjpU
eXBlOjpOb25lOworfQorCitSZW1vdGVSZWFsdGltZU1lZGlhU291cmNlOjpSZW1vdGVSZWFsdGlt
ZU1lZGlhU291cmNlKFJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyIGlkZW50aWZpZXIsIENh
cHR1cmVEZXZpY2U6OkRldmljZVR5cGUgZGV2aWNlVHlwZSwgU3RyaW5nJiYgbmFtZSwgU3RyaW5n
JiYgaGFzaFNhbHQsIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyJiBtYW5hZ2VyLCBib29sIHNob3Vs
ZENhcHR1cmVJbkdQVVByb2Nlc3MpCisgICAgOiBSZWFsdGltZU1lZGlhU291cmNlKHNvdXJjZVR5
cGVGcm9tRGV2aWNlVHlwZShkZXZpY2VUeXBlKSwgV1RGTW92ZShuYW1lKSwgU3RyaW5nOjpudW1i
ZXIoaWRlbnRpZmllci50b1VJbnQ2NCgpKSwgV1RGTW92ZShoYXNoU2FsdCkpCisgICAgLCBtX2lk
ZW50aWZpZXIoaWRlbnRpZmllcikKKyAgICAsIG1fbWFuYWdlcihtYW5hZ2VyKQorICAgICwgbV9k
ZXZpY2VUeXBlKGRldmljZVR5cGUpCisgICAgLCBtX3Nob3VsZENhcHR1cmVJbkdQVVByb2Nlc3Mo
c2hvdWxkQ2FwdHVyZUluR1BVUHJvY2VzcykKK3sKKyAgICBzd2l0Y2ggKG1fZGV2aWNlVHlwZSkg
eworICAgIGNhc2UgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6TWljcm9waG9uZToKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQorICAgICAgICBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpz
aW5nbGV0b24oKS5hdWRpb0NhcHR1cmVGYWN0b3J5KCkuc2V0QWN0aXZlU291cmNlKCp0aGlzKTsK
KyNlbmRpZgorICAgICAgICBicmVhazsKKyAgICBjYXNlIENhcHR1cmVEZXZpY2U6OkRldmljZVR5
cGU6OkNhbWVyYToKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgICAgICBSZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS52aWRlb0NhcHR1cmVGYWN0b3J5KCkuc2V0QWN0
aXZlU291cmNlKCp0aGlzKTsKKyNlbmRpZgorICAgICAgICBicmVhazsKKyAgICBjYXNlIENhcHR1
cmVEZXZpY2U6OkRldmljZVR5cGU6OlNjcmVlbjoKKyAgICBjYXNlIENhcHR1cmVEZXZpY2U6OkRl
dmljZVR5cGU6OldpbmRvdzoKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDYXB0dXJlRGV2aWNl
OjpEZXZpY2VUeXBlOjpVbmtub3duOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICB9Cit9CisKK1JlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2U6On5SZW1vdGVSZWFsdGltZU1lZGlh
U291cmNlKCkKK3sKKyAgICBzd2l0Y2ggKG1fZGV2aWNlVHlwZSkgeworICAgIGNhc2UgQ2FwdHVy
ZURldmljZTo6RGV2aWNlVHlwZTo6TWljcm9waG9uZToKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQorICAgICAgICBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS5hdWRpb0Nh
cHR1cmVGYWN0b3J5KCkudW5zZXRBY3RpdmVTb3VyY2UoKnRoaXMpOworI2VuZGlmCisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6Q2FtZXJhOgorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6
OnNpbmdsZXRvbigpLnZpZGVvQ2FwdHVyZUZhY3RvcnkoKS51bnNldEFjdGl2ZVNvdXJjZSgqdGhp
cyk7CisjZW5kaWYKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDYXB0dXJlRGV2aWNlOjpEZXZp
Y2VUeXBlOjpTY3JlZW46CisgICAgY2FzZSBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpXaW5k
b3c6CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6
VW5rbm93bjoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorfQorCit2b2lk
IFJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2U6OndoZW5SZWFkeShDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFN0cmluZyk+JiYgY2FsbGJhY2spCit7CisgICAgaWYgKG1faXNSZWFkeSkKKyAgICAgICAg
cmV0dXJuIGNhbGxiYWNrKFdURk1vdmUobV9lcnJvck1lc3NhZ2UpKTsKKyAgICBtX2NhbGxiYWNr
ID0gV1RGTW92ZShjYWxsYmFjayk7Cit9CisKK3ZvaWQgUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6ZGlkRmFpbChTdHJpbmcmJiBlcnJvck1lc3NhZ2UpCit7CisgICAgbV9pc1JlYWR5ID0gdHJ1
ZTsKKyAgICBtX2Vycm9yTWVzc2FnZSA9IFdURk1vdmUoZXJyb3JNZXNzYWdlKTsKKyAgICBpZiAo
bV9jYWxsYmFjaykKKyAgICAgICAgbV9jYWxsYmFjayhtX2Vycm9yTWVzc2FnZSk7Cit9CisKK3Zv
aWQgUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0QXNSZWFkeSgpCit7CisgICAgbV9pc1Jl
YWR5ID0gdHJ1ZTsKKyAgICBpZiAobV9jYWxsYmFjaykKKyAgICAgICAgbV9jYWxsYmFjayh7IH0p
OworfQorCitSZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4gUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6Y2xvbmUoKQoreworICAgIHN3aXRjaCAodHlwZSgpKSB7CisgICAgY2FzZSBSZWFsdGltZU1l
ZGlhU291cmNlOjpUeXBlOjpWaWRlbzoKKyAgICAgICAgcmV0dXJuIGNsb25lVmlkZW9Tb3VyY2Uo
KTsKKyAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvOgorICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6Ok5vbmU6CisgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK1Jl
ZjxSZWFsdGltZU1lZGlhU291cmNlPiBSZW1vdGVSZWFsdGltZU1lZGlhU291cmNlOjpjbG9uZVZp
ZGVvU291cmNlKCkKK3sKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBSZWFsdGltZU1lZGlhU291cmNl
SWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKKyAgICBpZiAoIWNvbm5lY3Rpb24oKS0+c2VuZChNZXNz
YWdlczo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTo6Q2xvbmUgeyBtX2lkZW50aWZpZXIs
IGlkZW50aWZpZXIgfSwgMCkpCisgICAgICAgIHJldHVybiAqdGhpczsKKworICAgIGF1dG8gY2xv
bmVTb3VyY2UgPSBhZG9wdFJlZigqbmV3IFJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2UoaWRlbnRp
ZmllciwgZGV2aWNlVHlwZSgpLCBTdHJpbmcgeyBtX3NldHRpbmdzLmxhYmVsKCkuc3RyaW5nKCkg
fSwgZGV2aWNlSURIYXNoU2FsdCgpLCBtX21hbmFnZXIsIG1fc2hvdWxkQ2FwdHVyZUluR1BVUHJv
Y2VzcykpOworICAgIGNsb25lU291cmNlLT5zZXRTZXR0aW5ncyhSZWFsdGltZU1lZGlhU291cmNl
U2V0dGluZ3MgeyBtX3NldHRpbmdzIH0pOworICAgIG1fbWFuYWdlci5hZGRTb3VyY2UoY2xvbmVT
b3VyY2UuY29weVJlZigpKTsKKyAgICByZXR1cm4gY2xvbmVTb3VyY2U7Cit9CisKK3ZvaWQgUmVt
b3RlUmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0Q2FwYWJpbGl0aWVzKFJlYWx0aW1lTWVkaWFTb3Vy
Y2VDYXBhYmlsaXRpZXMmJiBjYXBhYmlsaXRpZXMpCit7CisgICAgbV9jYXBhYmlsaXRpZXMgPSBX
VEZNb3ZlKGNhcGFiaWxpdGllcyk7Cit9CisKK3ZvaWQgUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6c2V0U2V0dGluZ3MoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiYgc2V0dGluZ3MpCit7
CisgICAgYXV0byBjaGFuZ2VkID0gbV9zZXR0aW5ncy5kaWZmZXJlbmNlKHNldHRpbmdzKTsKKyAg
ICBtX3NldHRpbmdzID0gV1RGTW92ZShzZXR0aW5ncyk7CisgICAgbm90aWZ5U2V0dGluZ3NEaWRD
aGFuZ2VPYnNlcnZlcnMoY2hhbmdlZCk7Cit9CisKK3ZvaWQgUmVtb3RlUmVhbHRpbWVNZWRpYVNv
dXJjZTo6cmVtb3RlQXVkaW9TYW1wbGVzQXZhaWxhYmxlKGNvbnN0IFdURjo6TWVkaWFUaW1lJiB0
aW1lLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYgZGF0YSwgY29uc3QgQXVkaW9TdHJlYW1EZXNj
cmlwdGlvbiYgZGVzY3JpcHRpb24sIHNpemVfdCBzaXplKQoreworICAgIEFTU0VSVCghaXNNYWlu
VGhyZWFkKCkpOworICAgIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZSh0aW1lLCBkYXRhLCBkZXNjcmlw
dGlvbiwgc2l6ZSk7Cit9CisKK3ZvaWQgUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZTo6cmVtb3Rl
VmlkZW9TYW1wbGVBdmFpbGFibGUoUmVtb3RlVmlkZW9TYW1wbGUmJiByZW1vdGVTYW1wbGUpCit7
CisgICAgQVNTRVJUKHR5cGUoKSA9PSBUeXBlOjpWaWRlbyk7CisKKyAgICBzZXRJbnRyaW5zaWNT
aXplKHJlbW90ZVNhbXBsZS5zaXplKCkpOworCisgICAgaWYgKCFtX2ltYWdlVHJhbnNmZXJTZXNz
aW9uIHx8IG1faW1hZ2VUcmFuc2ZlclNlc3Npb24tPnBpeGVsRm9ybWF0KCkgIT0gcmVtb3RlU2Ft
cGxlLnZpZGVvRm9ybWF0KCkpCisgICAgICAgIG1faW1hZ2VUcmFuc2ZlclNlc3Npb24gPSBJbWFn
ZVRyYW5zZmVyU2Vzc2lvblZUOjpjcmVhdGUocmVtb3RlU2FtcGxlLnZpZGVvRm9ybWF0KCkpOwor
CisgICAgaWYgKCFtX2ltYWdlVHJhbnNmZXJTZXNzaW9uKSB7CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBzYW1wbGVSZWYg
PSBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uLT5jcmVhdGVNZWRpYVNhbXBsZShyZW1vdGVTYW1wbGUp
OworICAgIGlmICghc2FtcGxlUmVmKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgUmVhbHRpbWVNZWRpYVNvdXJjZTo6dmlkZW9T
YW1wbGVBdmFpbGFibGUoKnNhbXBsZVJlZik7Cit9CisKK0lQQzo6Q29ubmVjdGlvbiogUmVtb3Rl
UmVhbHRpbWVNZWRpYVNvdXJjZTo6Y29ubmVjdGlvbigpCit7CisgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisgICAgaWYgKG1fc2hvdWxkQ2FwdHVy
ZUluR1BVUHJvY2VzcykKKyAgICAgICAgcmV0dXJuICZXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5l
bnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKTsKKyNlbmRpZgorICAgIHJl
dHVybiBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpOwor
fQorCit2b2lkIFJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSgp
Cit7CisgICAgY29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpVc2VyTWVkaWFDYXB0dXJlTWFu
YWdlclByb3h5OjpTdGFydFByb2R1Y2luZ0RhdGEgeyBtX2lkZW50aWZpZXIgfSwgMCk7Cit9CisK
K3ZvaWQgUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZTo6c3RvcFByb2R1Y2luZ0RhdGEoKQorewor
ICAgIGNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQ
cm94eTo6U3RvcFByb2R1Y2luZ0RhdGEgeyBtX2lkZW50aWZpZXIgfSwgMCk7Cit9CisKK2Jvb2wg
UmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0U2hvdWxkQXBwbHlSb3RhdGlvbihib29sIHNo
b3VsZEFwcGx5Um90YXRpb24pCit7CisgICAgY29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpV
c2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5OjpTZXRTaG91bGRBcHBseVJvdGF0aW9uIHsgbV9p
ZGVudGlmaWVyLCBzaG91bGRBcHBseVJvdGF0aW9uIH0sIDApOworICAgIHJldHVybiB0cnVlOwor
fQorCitjb25zdCBXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBSZW1v
dGVSZWFsdGltZU1lZGlhU291cmNlOjpjYXBhYmlsaXRpZXMoKQoreworICAgIHJldHVybiBtX2Nh
cGFiaWxpdGllczsKK30KKwordm9pZCBSZW1vdGVSZWFsdGltZU1lZGlhU291cmNlOjphcHBseUNv
bnN0cmFpbnRzKGNvbnN0IFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludHMmIGNvbnN0cmFpbnRzLCBB
cHBseUNvbnN0cmFpbnRzSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIG1fcGVu
ZGluZ0FwcGx5Q29uc3RyYWludHNDYWxsYmFja3MuYXBwZW5kKFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKKyAgICAvLyBGSVhNRTogVXNlIHNlbmRBc3luY1dpdGhSZXBseS4KKyAgICBjb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6OkFw
cGx5Q29uc3RyYWludHMgeyBtX2lkZW50aWZpZXIsIGNvbnN0cmFpbnRzIH0sIDApOworfQorCit2
b2lkIFJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2U6OmFwcGx5Q29uc3RyYWludHNTdWNjZWVkZWQo
Y29uc3QgV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBzZXR0aW5ncykKK3sK
KyAgICBzZXRTZXR0aW5ncyhXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3Moc2V0
dGluZ3MpKTsKKworICAgIGF1dG8gY2FsbGJhY2sgPSBtX3BlbmRpbmdBcHBseUNvbnN0cmFpbnRz
Q2FsbGJhY2tzLnRha2VGaXJzdCgpOworICAgIGNhbGxiYWNrKHsgfSk7Cit9CisKK3ZvaWQgUmVt
b3RlUmVhbHRpbWVNZWRpYVNvdXJjZTo6YXBwbHlDb25zdHJhaW50c0ZhaWxlZChTdHJpbmcmJiBm
YWlsZWRDb25zdHJhaW50LCBTdHJpbmcmJiBlcnJvck1lc3NhZ2UpCit7CisgICAgYXV0byBjYWxs
YmFjayA9IG1fcGVuZGluZ0FwcGx5Q29uc3RyYWludHNDYWxsYmFja3MudGFrZUZpcnN0KCk7Cisg
ICAgY2FsbGJhY2soQXBwbHlDb25zdHJhaW50c0Vycm9yIHsgV1RGTW92ZShmYWlsZWRDb25zdHJh
aW50KSwgV1RGTW92ZShlcnJvck1lc3NhZ2UpIH0pOworfQorCit2b2lkIFJlbW90ZVJlYWx0aW1l
TWVkaWFTb3VyY2U6Omhhc0VuZGVkKCkKK3sKKyAgICBjb25uZWN0aW9uKCktPnNlbmQoTWVzc2Fn
ZXM6OlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6OkVuZCB7IG1faWRlbnRpZmllciB9LCAw
KTsKKyAgICBtX21hbmFnZXIucmVtb3ZlU291cmNlKG1faWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
UmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZTo6Y2FwdHVyZVN0b3BwZWQoKQoreworICAgIHN0b3Ao
KTsKKyAgICBoYXNFbmRlZCgpOworfQorCit2b2lkIFJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2U6
OmNhcHR1cmVGYWlsZWQoKQoreworICAgIFJlYWx0aW1lTWVkaWFTb3VyY2U6OmNhcHR1cmVGYWls
ZWQoKTsKKyAgICBoYXNFbmRlZCgpOworfQorCit2b2lkIFJlbW90ZVJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OnN0b3BCZWluZ09ic2VydmVkKCkKK3sKKyAgICBjb25uZWN0aW9uKCktPnNlbmQoTWVzc2Fn
ZXM6OlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6OlJlcXVlc3RUb0VuZCB7IG1faWRlbnRp
ZmllciB9LCAwKTsKK30KKwordm9pZCBSZW1vdGVSZWFsdGltZU1lZGlhU291cmNlOjpyZXF1ZXN0
VG9FbmQoT2JzZXJ2ZXImIG9ic2VydmVyKQoreworICAgIHN3aXRjaCAodHlwZSgpKSB7CisgICAg
Y2FzZSBUeXBlOjpBdWRpbzoKKyAgICAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZTo6cmVxdWVzdFRv
RW5kKG9ic2VydmVyKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUeXBlOjpWaWRlbzoKKyAg
ICAgICAgc3RvcEJlaW5nT2JzZXJ2ZWQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUeXBl
OjpOb25lOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9Cit9CisKK30KKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVtb3Rl
UmVhbHRpbWVNZWRpYVNvdXJjZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1Jl
bW90ZVJlYWx0aW1lTWVkaWFTb3VyY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNzU0MDhjMzkwMjQ1MTFkMmZi
YTUzNjdlZDU4ZDE3NTdkYWExNTg2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL2NvY29hL1JlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2UuaApAQCAtMCwwICsxLDEw
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgUExBVEZPUk0oQ09DT0EpICYm
IEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlIDxXZWJDb3JlL0NhcHR1cmVEZXZpY2Uu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL1JlYWx0aW1lTWVkaWFTb3VyY2UuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL1JlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKK2NsYXNzIENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbjsKK2NsYXNzIEltYWdlVHJhbnNm
ZXJTZXNzaW9uVlQ7CitzdHJ1Y3QgTWVkaWFDb25zdHJhaW50czsKK2NsYXNzIFJlbW90ZVZpZGVv
U2FtcGxlOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgVXNlck1lZGlhQ2FwdHVy
ZU1hbmFnZXI7CisKK2NsYXNzIFJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2UgOiBwdWJsaWMgV2Vi
Q29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxXZWJD
b3JlOjpSZWFsdGltZU1lZGlhU291cmNlPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6Q2FwdHVyZURl
dmljZSYsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludHMmLCBTdHJpbmcmJiBuYW1lLCBT
dHJpbmcmJiBoYXNoU2FsdCwgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXImLCBib29sIHNob3VsZENh
cHR1cmVJbkdQVVByb2Nlc3MgPSBmYWxzZSk7CisgICAgflJlbW90ZVJlYWx0aW1lTWVkaWFTb3Vy
Y2UoKTsKKworICAgIFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyIGlkZW50
aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKyAgICBJUEM6OkNvbm5lY3Rp
b24qIGNvbm5lY3Rpb24oKTsKKworICAgIHZvaWQgc2V0U2V0dGluZ3MoV2ViQ29yZTo6UmVhbHRp
bWVNZWRpYVNvdXJjZVNldHRpbmdzJiYpOworCisgICAgdm9pZCBhcHBseUNvbnN0cmFpbnRzU3Vj
Y2VlZGVkKGNvbnN0IFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYpOworICAg
IHZvaWQgYXBwbHlDb25zdHJhaW50c0ZhaWxlZChTdHJpbmcmJiBmYWlsZWRDb25zdHJhaW50LCBT
dHJpbmcmJiBlcnJvck1lc3NhZ2UpOworCisgICAgdm9pZCBjYXB0dXJlU3RvcHBlZCgpOworICAg
IHZvaWQgY2FwdHVyZUZhaWxlZCgpIGZpbmFsOworCisgICAgdm9pZCByZW1vdGVWaWRlb1NhbXBs
ZUF2YWlsYWJsZShXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYmKTsKKyAgICB2b2lkIHJlbW90
ZUF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBXVEY6Ok1lZGlhVGltZSYsIGNvbnN0IFdlYkNv
cmU6OlBsYXRmb3JtQXVkaW9EYXRhJiwgY29uc3QgV2ViQ29yZTo6QXVkaW9TdHJlYW1EZXNjcmlw
dGlvbiYsIHNpemVfdCk7CisKK3ByaXZhdGU6CisgICAgUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJj
ZShXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciwgV2ViQ29yZTo6Q2FwdHVy
ZURldmljZTo6RGV2aWNlVHlwZSwgU3RyaW5nJiYgbmFtZSwgU3RyaW5nJiYgaGFzaFNhbHQsIFVz
ZXJNZWRpYUNhcHR1cmVNYW5hZ2VyJiwgYm9vbCBzaG91bGRDYXB0dXJlSW5HUFVQcm9jZXNzKTsK
KworICAgIC8vIFJlYWx0aW1lTWVkaWFTb3VyY2UKKyAgICB2b2lkIHN0YXJ0UHJvZHVjaW5nRGF0
YSgpIGZpbmFsOworICAgIHZvaWQgc3RvcFByb2R1Y2luZ0RhdGEoKSBmaW5hbDsKKyAgICBib29s
IGlzQ2FwdHVyZVNvdXJjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2b2lk
IGJlZ2luQ29uZmlndXJhdGlvbigpIGZpbmFsIHsgfQorICAgIHZvaWQgY29tbWl0Q29uZmlndXJh
dGlvbigpIGZpbmFsIHsgfQorICAgIGJvb2wgc2V0U2hvdWxkQXBwbHlSb3RhdGlvbihib29sIC8q
IHNob3VsZEFwcGx5Um90YXRpb24gKi8pIGZpbmFsOworICAgIHZvaWQgYXBwbHlDb25zdHJhaW50
cyhjb25zdCBXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnRzJiwgQXBwbHlDb25zdHJhaW50c0hhbmRs
ZXImJikgZmluYWw7CisgICAgdm9pZCByZXF1ZXN0VG9FbmQoT2JzZXJ2ZXImKSBmaW5hbDsKKyAg
ICB2b2lkIHN0b3BCZWluZ09ic2VydmVkKCkgZmluYWw7CisgICAgdm9pZCBoYXNFbmRlZCgpIGZp
bmFsOworICAgIGNvbnN0IFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgc2V0
dGluZ3MoKSBmaW5hbCB7IHJldHVybiBtX3NldHRpbmdzOyB9CisgICAgY29uc3QgV2ViQ29yZTo6
UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYgY2FwYWJpbGl0aWVzKCkgZmluYWw7Cisg
ICAgdm9pZCB3aGVuUmVhZHkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcpPiYmKSBmaW5h
bDsKKyAgICBXZWJDb3JlOjpDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlIGRldmljZVR5cGUoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX2RldmljZVR5cGU7IH0KKyAgICBSZWY8UmVhbHRpbWVNZWRp
YVNvdXJjZT4gY2xvbmUoKSBmaW5hbDsKKworICAgIHZvaWQgZGlkRmFpbChTdHJpbmcmJiBlcnJv
ck1lc3NhZ2UpOworICAgIHZvaWQgc2V0QXNSZWFkeSgpOworICAgIHZvaWQgc2V0Q2FwYWJpbGl0
aWVzKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmJik7CisgICAgUmVm
PFJlYWx0aW1lTWVkaWFTb3VyY2U+IGNsb25lVmlkZW9Tb3VyY2UoKTsKKworICAgIFdlYkNvcmU6
OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKKyAgICBVc2VyTWVk
aWFDYXB0dXJlTWFuYWdlciYgbV9tYW5hZ2VyOworICAgIFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFT
b3VyY2VDYXBhYmlsaXRpZXMgbV9jYXBhYmlsaXRpZXM7CisgICAgV2ViQ29yZTo6UmVhbHRpbWVN
ZWRpYVNvdXJjZVNldHRpbmdzIG1fc2V0dGluZ3M7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
Q29yZTo6SW1hZ2VUcmFuc2ZlclNlc3Npb25WVD4gbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbjsKKyAg
ICBXZWJDb3JlOjpDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlIG1fZGV2aWNlVHlwZSB7IFdlYkNv
cmU6OkNhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OlVua25vd24gfTsKKworICAgIERlcXVlPEFw
cGx5Q29uc3RyYWludHNIYW5kbGVyPiBtX3BlbmRpbmdBcHBseUNvbnN0cmFpbnRzQ2FsbGJhY2tz
OworICAgIGJvb2wgbV9zaG91bGRDYXB0dXJlSW5HUFVQcm9jZXNzIHsgZmFsc2UgfTsKKyAgICBi
b29sIG1faXNSZWFkeSB7IGZhbHNlIH07CisgICAgU3RyaW5nIG1fZXJyb3JNZXNzYWdlOworICAg
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nKT4gbV9jYWxsYmFjazsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3BwCmluZGV4IDYzN2Vl
OTE4NmE2MTY5YzcyYjQzZTU3MjgzZGYxNWExMWZhNWI0YzYuLjA4M2Y4MjlhZjc1YWU5OWY2YzI4
Y2Q2NzBiOTBhNjY3Nzg5ZjM3ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcApAQCAtMzAsMjQ2ICsz
MCwxOSBAQAogCiAjaW5jbHVkZSAiQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuaCIKICNp
bmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5oIgotI2luY2x1ZGUgIlNoYXJlZFJpbmdCdWZm
ZXJTdG9yYWdlLmgiCisjaW5jbHVkZSAiUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZS5oIgogI2lu
Y2x1ZGUgIlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyTWVzc2FnZXMuaCIKLSNpbmNsdWRlICJVc2Vy
TWVkaWFDYXB0dXJlTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJn
dW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCi0jaW5jbHVkZSAiV2ViUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvQ2FwdHVyZURldmlj
ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzLmg+Ci0jaW5j
bHVkZSA8V2ViQ29yZS9JbWFnZVRyYW5zZmVyU2Vzc2lvblZULmg+Ci0jaW5jbHVkZSA8V2ViQ29y
ZS9NZWRpYUNvbnN0cmFpbnRzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Nb2NrUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVhbHRpbWVNZWRpYVNvdXJjZUNl
bnRlci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUmVtb3RlVmlkZW9TYW1wbGUuaD4KLSNpbmNsdWRl
IDxXZWJDb3JlL1dlYkF1ZGlvQnVmZmVyTGlzdC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvV2ViQXVk
aW9Tb3VyY2VQcm92aWRlckFWRk9iakMuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBQQUw7CiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIAotY2xhc3MgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OlNvdXJjZSA6IHB1
YmxpYyBSZWFsdGltZU1lZGlhU291cmNlIHsKLXB1YmxpYzoKLSAgICBTb3VyY2UoU3RyaW5nJiYg
c291cmNlSUQsIFR5cGUgdHlwZSwgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZSBkZXZpY2VUeXBl
LCBTdHJpbmcmJiBuYW1lLCBTdHJpbmcmJiBoYXNoU2FsdCwgUmVhbHRpbWVNZWRpYVNvdXJjZUlk
ZW50aWZpZXIgaWQsIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyJiBtYW5hZ2VyKQotICAgICAgICA6
IFJlYWx0aW1lTWVkaWFTb3VyY2UodHlwZSwgV1RGTW92ZShuYW1lKSwgV1RGTW92ZShzb3VyY2VJ
RCksIFdURk1vdmUoaGFzaFNhbHQpKQotICAgICAgICAsIG1faWQoaWQpCi0gICAgICAgICwgbV9t
YW5hZ2VyKG1hbmFnZXIpCi0gICAgICAgICwgbV9kZXZpY2VUeXBlKGRldmljZVR5cGUpCi0gICAg
ewotICAgICAgICBzd2l0Y2ggKG1fZGV2aWNlVHlwZSkgewotICAgICAgICBjYXNlIENhcHR1cmVE
ZXZpY2U6OkRldmljZVR5cGU6Ok1pY3JvcGhvbmU6Ci0gICAgICAgICAgICBtX3JpbmdCdWZmZXIg
PSBtYWtlVW5pcXVlPENBUmluZ0J1ZmZlcj4obWFrZVVuaXF1ZVJlZjxTaGFyZWRSaW5nQnVmZmVy
U3RvcmFnZT4obnVsbHB0cikpOwotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgICAgICAg
ICBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS5hdWRpb0NhcHR1cmVGYWN0
b3J5KCkuc2V0QWN0aXZlU291cmNlKCp0aGlzKTsKLSNlbmRpZgotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6Q2FtZXJhOgotI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCi0gICAgICAgICAgICBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
OjpzaW5nbGV0b24oKS52aWRlb0NhcHR1cmVGYWN0b3J5KCkuc2V0QWN0aXZlU291cmNlKCp0aGlz
KTsKLSNlbmRpZgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ2FwdHVyZURldmlj
ZTo6RGV2aWNlVHlwZTo6U2NyZWVuOgotICAgICAgICBjYXNlIENhcHR1cmVEZXZpY2U6OkRldmlj
ZVR5cGU6OldpbmRvdzoKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENhcHR1cmVE
ZXZpY2U6OkRldmljZVR5cGU6OlVua25vd246Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIH5Tb3VyY2UoKQotICAgIHsKLSAgICAgICAg
c3dpdGNoIChtX2RldmljZVR5cGUpIHsKLSAgICAgICAgY2FzZSBDYXB0dXJlRGV2aWNlOjpEZXZp
Y2VUeXBlOjpNaWNyb3Bob25lOgotICAgICAgICAgICAgc3RvcmFnZSgpLmludmFsaWRhdGUoKTsK
LSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgICAgICAgICAgUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlcjo6c2luZ2xldG9uKCkuYXVkaW9DYXB0dXJlRmFjdG9yeSgpLnVuc2V0QWN0aXZlU291
cmNlKCp0aGlzKTsKLSNlbmRpZgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ2Fw
dHVyZURldmljZTo6RGV2aWNlVHlwZTo6Q2FtZXJhOgotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
Ci0gICAgICAgICAgICBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS52aWRl
b0NhcHR1cmVGYWN0b3J5KCkudW5zZXRBY3RpdmVTb3VyY2UoKnRoaXMpOwotI2VuZGlmCi0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpT
Y3JlZW46Ci0gICAgICAgIGNhc2UgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6V2luZG93Ogot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlw
ZTo6VW5rbm93bjoKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICB9
Ci0gICAgfQotCi0gICAgdm9pZCB3aGVuUmVhZHkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJp
bmcpPiYmIGNhbGxiYWNrKSBmaW5hbAotICAgIHsKLSAgICAgICAgaWYgKG1faXNSZWFkeSkKLSAg
ICAgICAgICAgIHJldHVybiBjYWxsYmFjayhXVEZNb3ZlKG1fZXJyb3JNZXNzYWdlKSk7Ci0gICAg
ICAgIG1fY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsKLSAgICB9Ci0KLSAgICB2b2lkIGRp
ZEZhaWwoU3RyaW5nJiYgZXJyb3JNZXNzYWdlKQotICAgIHsKLSAgICAgICAgbV9pc1JlYWR5ID0g
dHJ1ZTsKLSAgICAgICAgbV9lcnJvck1lc3NhZ2UgPSBXVEZNb3ZlKGVycm9yTWVzc2FnZSk7Ci0g
ICAgICAgIGlmIChtX2NhbGxiYWNrKQotICAgICAgICAgICAgbV9jYWxsYmFjayhtX2Vycm9yTWVz
c2FnZSk7Ci0gICAgfQotCi0gICAgdm9pZCBzZXRBc1JlYWR5KCkKLSAgICB7Ci0gICAgICAgIG1f
aXNSZWFkeSA9IHRydWU7Ci0gICAgICAgIGlmIChtX2NhbGxiYWNrKQotICAgICAgICAgICAgbV9j
YWxsYmFjayh7IH0pOwotICAgIH0KLQotICAgIFNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlJiBzdG9y
YWdlKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCh0eXBlKCkgPT0gVHlwZTo6QXVkaW8pOwotICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2UmPihtX3JpbmdC
dWZmZXItPnN0b3JhZ2UoKSk7Ci0gICAgfQotCi0gICAgUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+
IGNsb25lKCkgZmluYWwKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX21hbmFnZXIuY2xvbmVTb3Vy
Y2UoKnRoaXMpOwotICAgIH0KLQotICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyIHNv
dXJjZUlEKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2lkOwotICAgIH0KLQotICAg
IGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgc2V0dGluZ3MoKSBjb25zdAotICAg
IHsKLSAgICAgICAgcmV0dXJuIG1fc2V0dGluZ3M7Ci0gICAgfQotCi0gICAgY29uc3QgUmVhbHRp
bWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYgY2FwYWJpbGl0aWVzKCkgZmluYWw7Ci0gICAgdm9p
ZCBzZXRDYXBhYmlsaXRpZXMoUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYmIGNhcGFi
aWxpdGllcykKLSAgICB7Ci0gICAgICAgIG1fY2FwYWJpbGl0aWVzID0gV1RGTW92ZShjYXBhYmls
aXRpZXMpOwotICAgIH0KLQotICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYg
c2V0dGluZ3MoKSBmaW5hbCB7IHJldHVybiBtX3NldHRpbmdzOyB9Ci0gICAgdm9pZCBzZXRTZXR0
aW5ncyhSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmJiBzZXR0aW5ncykKLSAgICB7Ci0gICAg
ICAgIGF1dG8gY2hhbmdlZCA9IG1fc2V0dGluZ3MuZGlmZmVyZW5jZShzZXR0aW5ncyk7Ci0gICAg
ICAgIG1fc2V0dGluZ3MgPSBXVEZNb3ZlKHNldHRpbmdzKTsKLSAgICAgICAgbm90aWZ5U2V0dGlu
Z3NEaWRDaGFuZ2VPYnNlcnZlcnMoY2hhbmdlZCk7Ci0gICAgfQotCi0gICAgY29uc3QgQ0FBdWRp
b1N0cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZGVzY3Jp
cHRpb247IH0KLSAgICB2b2lkIHNldFN0b3JhZ2UoY29uc3QgU2hhcmVkTWVtb3J5OjpIYW5kbGUm
IGhhbmRsZSwgY29uc3QgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlw
dGlvbiwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMpCi0gICAgewotICAgICAgICBBU1NFUlQodHlw
ZSgpID09IFR5cGU6OkF1ZGlvKTsKLSAgICAgICAgbV9kZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9u
OwotCi0gICAgICAgIGlmIChoYW5kbGUuaXNOdWxsKCkpIHsKLSAgICAgICAgICAgIG1fcmluZ0J1
ZmZlci0+ZGVhbGxvY2F0ZSgpOwotICAgICAgICAgICAgc3RvcmFnZSgpLnNldFJlYWRPbmx5KGZh
bHNlKTsKLSAgICAgICAgICAgIHN0b3JhZ2UoKS5zZXRTdG9yYWdlKG51bGxwdHIpOwotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4g
bWVtb3J5ID0gU2hhcmVkTWVtb3J5OjptYXAoaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rp
b246OlJlYWRPbmx5KTsKLSAgICAgICAgc3RvcmFnZSgpLnNldFN0b3JhZ2UoV1RGTW92ZShtZW1v
cnkpKTsKLSAgICAgICAgc3RvcmFnZSgpLnNldFJlYWRPbmx5KHRydWUpOwotCi0gICAgICAgIG1f
cmluZ0J1ZmZlci0+YWxsb2NhdGUoZGVzY3JpcHRpb24sIG51bWJlck9mRnJhbWVzKTsKLSAgICB9
Ci0KLSAgICB2b2lkIHNldFJpbmdCdWZmZXJGcmFtZUJvdW5kcyh1aW50NjRfdCBzdGFydEZyYW1l
LCB1aW50NjRfdCBlbmRGcmFtZSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCh0eXBlKCkgPT0gVHlw
ZTo6QXVkaW8pOwotICAgICAgICBtX3JpbmdCdWZmZXItPnNldEN1cnJlbnRGcmFtZUJvdW5kcyhz
dGFydEZyYW1lLCBlbmRGcmFtZSk7Ci0gICAgfQotCi0gICAgdm9pZCBhdWRpb1NhbXBsZXNBdmFp
bGFibGUoTWVkaWFUaW1lIHRpbWUsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKQotICAgIHsKLSAg
ICAgICAgQVNTRVJUKHR5cGUoKSA9PSBUeXBlOjpBdWRpbyk7Ci0gICAgICAgIFdlYkF1ZGlvQnVm
ZmVyTGlzdCBhdWRpb0RhdGEobV9kZXNjcmlwdGlvbiwgbnVtYmVyT2ZGcmFtZXMpOwotICAgICAg
ICBtX3JpbmdCdWZmZXItPmZldGNoKGF1ZGlvRGF0YS5saXN0KCksIG51bWJlck9mRnJhbWVzLCB0
aW1lLnRpbWVWYWx1ZSgpKTsKLQotICAgICAgICBSZWFsdGltZU1lZGlhU291cmNlOjphdWRpb1Nh
bXBsZXNBdmFpbGFibGUodGltZSwgYXVkaW9EYXRhLCBtX2Rlc2NyaXB0aW9uLCBudW1iZXJPZkZy
YW1lcyk7Ci0gICAgfQotCi0gICAgdm9pZCByZW1vdGVWaWRlb1NhbXBsZUF2YWlsYWJsZShSZW1v
dGVWaWRlb1NhbXBsZSYmIHJlbW90ZVNhbXBsZSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCh0eXBl
KCkgPT0gVHlwZTo6VmlkZW8pOwotCi0gICAgICAgIHNldEludHJpbnNpY1NpemUocmVtb3RlU2Ft
cGxlLnNpemUoKSk7Ci0KLSAgICAgICAgaWYgKCFtX2ltYWdlVHJhbnNmZXJTZXNzaW9uIHx8IG1f
aW1hZ2VUcmFuc2ZlclNlc3Npb24tPnBpeGVsRm9ybWF0KCkgIT0gcmVtb3RlU2FtcGxlLnZpZGVv
Rm9ybWF0KCkpCi0gICAgICAgICAgICBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uID0gSW1hZ2VUcmFu
c2ZlclNlc3Npb25WVDo6Y3JlYXRlKHJlbW90ZVNhbXBsZS52aWRlb0Zvcm1hdCgpKTsKLQotICAg
ICAgICBpZiAoIW1faW1hZ2VUcmFuc2ZlclNlc3Npb24pIHsKLSAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAg
YXV0byBzYW1wbGVSZWYgPSBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uLT5jcmVhdGVNZWRpYVNhbXBs
ZShyZW1vdGVTYW1wbGUpOwotICAgICAgICBpZiAoIXNhbXBsZVJlZikgewotICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQot
ICAgICAgICBSZWFsdGltZU1lZGlhU291cmNlOjp2aWRlb1NhbXBsZUF2YWlsYWJsZSgqc2FtcGxl
UmVmKTsKLSAgICB9Ci0KLSAgICB2b2lkIGFwcGx5Q29uc3RyYWludHNTdWNjZWVkZWQoY29uc3Qg
V2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBzZXR0aW5ncykKLSAgICB7Ci0g
ICAgICAgIHNldFNldHRpbmdzKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyhz
ZXR0aW5ncykpOwotCi0gICAgICAgIGF1dG8gY2FsbGJhY2sgPSBtX3BlbmRpbmdBcHBseUNvbnN0
cmFpbnRzQ2FsbGJhY2tzLnRha2VGaXJzdCgpOwotICAgICAgICBjYWxsYmFjayh7IH0pOwotICAg
IH0KLQotICAgIHZvaWQgYXBwbHlDb25zdHJhaW50c0ZhaWxlZChTdHJpbmcmJiBmYWlsZWRDb25z
dHJhaW50LCBTdHJpbmcmJiBlcnJvck1lc3NhZ2UpCi0gICAgewotICAgICAgICBhdXRvIGNhbGxi
YWNrID0gbV9wZW5kaW5nQXBwbHlDb25zdHJhaW50c0NhbGxiYWNrcy50YWtlRmlyc3QoKTsKLSAg
ICAgICAgY2FsbGJhY2soQXBwbHlDb25zdHJhaW50c0Vycm9yIHsgV1RGTW92ZShmYWlsZWRDb25z
dHJhaW50KSwgV1RGTW92ZShlcnJvck1lc3NhZ2UpIH0pOwotICAgIH0KLQotICAgIENhcHR1cmVE
ZXZpY2U6OkRldmljZVR5cGUgZGV2aWNlVHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGV2
aWNlVHlwZTsgfQotCi0gICAgdm9pZCBzZXRTaG91bGRDYXB0dXJlSW5HUFVQcm9jZXNzKGJvb2wg
dmFsdWUpIHsgbV9zaG91bGRDYXB0dXJlSW5HUFVQcm9jZXNzID0gdmFsdWU7IH0KLSAgICBib29s
IHNob3VsZENhcHR1cmVJbkdQVVByb2Nlc3MoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZENhcHR1
cmVJbkdQVVByb2Nlc3M7IH0KLQotICAgIElQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbigpOwot
Ci0gICAgdm9pZCBoYXNFbmRlZCgpIGZpbmFsOwotCi1wcml2YXRlOgotICAgIHZvaWQgc3RhcnRQ
cm9kdWNpbmdEYXRhKCkgZmluYWw7Ci0gICAgdm9pZCBzdG9wUHJvZHVjaW5nRGF0YSgpIGZpbmFs
OwotICAgIGJvb2wgaXNDYXB0dXJlU291cmNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsg
fQotCi0gICAgLy8gUmVhbHRpbWVNZWRpYVNvdXJjZQotICAgIHZvaWQgYmVnaW5Db25maWd1cmF0
aW9uKCkgZmluYWwgeyB9Ci0gICAgdm9pZCBjb21taXRDb25maWd1cmF0aW9uKCkgZmluYWwgeyB9
Ci0gICAgYm9vbCBzZXRTaG91bGRBcHBseVJvdGF0aW9uKGJvb2wgLyogc2hvdWxkQXBwbHlSb3Rh
dGlvbiAqLykgZmluYWw7Ci0gICAgdm9pZCBhcHBseUNvbnN0cmFpbnRzKGNvbnN0IFdlYkNvcmU6
Ok1lZGlhQ29uc3RyYWludHMmLCBBcHBseUNvbnN0cmFpbnRzSGFuZGxlciYmKSBmaW5hbDsKLSAg
ICB2b2lkIHJlcXVlc3RUb0VuZChPYnNlcnZlciYpIGZpbmFsOwotICAgIHZvaWQgc3RvcEJlaW5n
T2JzZXJ2ZWQoKSBmaW5hbDsKLQotICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyIG1f
aWQ7Ci0gICAgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXImIG1fbWFuYWdlcjsKLSAgICBSZWFsdGlt
ZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzIG1fY2FwYWJpbGl0aWVzOwotICAgIFJlYWx0aW1lTWVk
aWFTb3VyY2VTZXR0aW5ncyBtX3NldHRpbmdzOwotCi0gICAgQ0FBdWRpb1N0cmVhbURlc2NyaXB0
aW9uIG1fZGVzY3JpcHRpb247Ci0gICAgc3RkOjp1bmlxdWVfcHRyPENBUmluZ0J1ZmZlcj4gbV9y
aW5nQnVmZmVyOwotCi0gICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlVHJhbnNmZXJTZXNzaW9uVlQ+
IG1faW1hZ2VUcmFuc2ZlclNlc3Npb247Ci0gICAgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZSBt
X2RldmljZVR5cGUgeyBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpVbmtub3duIH07Ci0KLSAg
ICBEZXF1ZTxBcHBseUNvbnN0cmFpbnRzSGFuZGxlcj4gbV9wZW5kaW5nQXBwbHlDb25zdHJhaW50
c0NhbGxiYWNrczsKLSAgICBib29sIG1fc2hvdWxkQ2FwdHVyZUluR1BVUHJvY2VzcyB7IGZhbHNl
IH07Ci0gICAgYm9vbCBtX2lzUmVhZHkgeyBmYWxzZSB9OwotICAgIFN0cmluZyBtX2Vycm9yTWVz
c2FnZTsKLSAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyk+IG1fY2FsbGJhY2s7Ci19
OwotCiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIoV2Vi
UHJvY2VzcyYgcHJvY2VzcykKICAgICA6IG1fcHJvY2Vzcyhwcm9jZXNzKQogICAgICwgbV9hdWRp
b0ZhY3RvcnkoKnRoaXMpCkBAIC0zMDIsNyArNzUsNyBAQCB2b2lkIFVzZXJNZWRpYUNhcHR1cmVN
YW5hZ2VyOjpzZXR1cENhcHR1cmVQcm9jZXNzZXMoYm9vbCBzaG91bGRDYXB0dXJlQXVkaW9JblVJ
UAogICAgIG1fdmlkZW9GYWN0b3J5LnNldFNob3VsZENhcHR1cmVJbkdQVVByb2Nlc3Moc2hvdWxk
Q2FwdHVyZVZpZGVvSW5HUFVQcm9jZXNzKTsKIAogICAgIGlmIChzaG91bGRDYXB0dXJlQXVkaW9J
bkdQVVByb2Nlc3MpCi0gICAgICAgIFdlYkNvcmU6OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVyOjpzZXRDcmVhdG9yKFdlYktpdDo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXI6OmNy
ZWF0ZSk7CisgICAgICAgIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyOjpzZXRDcmVhdG9y
KFdlYktpdDo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXI6OmNyZWF0ZSk7CiAKICAgICBp
ZiAoc2hvdWxkQ2FwdHVyZUF1ZGlvSW5VSVByb2Nlc3MgfHwgc2hvdWxkQ2FwdHVyZUF1ZGlvSW5H
UFVQcm9jZXNzKQogICAgICAgICBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24o
KS5zZXRBdWRpb0NhcHR1cmVGYWN0b3J5KG1fYXVkaW9GYWN0b3J5KTsKQEAgLTMxMiw1NCArODUs
MzEgQEAgdm9pZCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6c2V0dXBDYXB0dXJlUHJvY2Vzc2Vz
KGJvb2wgc2hvdWxkQ2FwdHVyZUF1ZGlvSW5VSVAKICAgICAgICAgUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlcjo6c2luZ2xldG9uKCkuc2V0RGlzcGxheUNhcHR1cmVGYWN0b3J5KG1fZGlzcGxheUZh
Y3RvcnkpOwogfQogCi1XZWJDb3JlOjpDYXB0dXJlU291cmNlT3JFcnJvciBVc2VyTWVkaWFDYXB0
dXJlTWFuYWdlcjo6Y3JlYXRlQ2FwdHVyZVNvdXJjZShjb25zdCBDYXB0dXJlRGV2aWNlJiBkZXZp
Y2UsIFN0cmluZyYmIGhhc2hTYWx0LCBjb25zdCBXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnRzKiBj
b25zdHJhaW50cywgYm9vbCBzaG91bGRDYXB0dXJlSW5HUFVQcm9jZXNzKQordm9pZCBVc2VyTWVk
aWFDYXB0dXJlTWFuYWdlcjo6YWRkU291cmNlKFJlZjxSZW1vdGVSZWFsdGltZU1lZGlhU291cmNl
PiYmIHNvdXJjZSkKIHsKLSAgICBpZiAoIWNvbnN0cmFpbnRzKQotICAgICAgICByZXR1cm4geyB9
OworICAgIGlmIChzb3VyY2UtPnR5cGUoKSA9PSBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpB
dWRpbykKKyAgICAgICAgbV9yZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlci5hZGRTb3VyY2Uoc291
cmNlLmNvcHlSZWYoKSk7CiAKLSAgICBhdXRvIGlkID0gUmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50
aWZpZXI6OmdlbmVyYXRlKCk7CisgICAgYXV0byBpZGVudGlmaWVyID0gc291cmNlLT5pZGVudGlm
aWVyKCk7CisgICAgQVNTRVJUKCFtX3NvdXJjZXMuY29udGFpbnMoaWRlbnRpZmllcikpOworICAg
IG1fc291cmNlcy5hZGQoaWRlbnRpZmllciwgV1RGTW92ZShzb3VyY2UpKTsKK30KIAotI2lmIEVO
QUJMRShHUFVfUFJPQ0VTUykKLSAgICBhdXRvKiBjb25uZWN0aW9uID0gc2hvdWxkQ2FwdHVyZUlu
R1BVUHJvY2VzcyA/ICZtX3Byb2Nlc3MuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25u
ZWN0aW9uKCkgOiBtX3Byb2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKTsKLSNlbHNlCi0g
ICAgQVNTRVJUKCFzaG91bGRDYXB0dXJlSW5HUFVQcm9jZXNzKTsKLSAgICBhdXRvKiBjb25uZWN0
aW9uID0gbV9wcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCk7Ci0jZW5kaWYKLSAgICAK
LSAgICBhdXRvIHR5cGUgPSBkZXZpY2UudHlwZSgpID09IENhcHR1cmVEZXZpY2U6OkRldmljZVR5
cGU6Ok1pY3JvcGhvbmUgPyBXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRp
byA6IFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlZpZGVvOwotICAgIGF1dG8g
c291cmNlID0gYWRvcHRSZWYoKm5ldyBTb3VyY2UoU3RyaW5nOjpudW1iZXIoaWQudG9VSW50NjQo
KSksIHR5cGUsIGRldmljZS50eXBlKCksIFN0cmluZyB7IH0sIFN0cmluZyB7IGhhc2hTYWx0IH0s
IGlkLCAqdGhpcykpOwotICAgIGlmIChzaG91bGRDYXB0dXJlSW5HUFVQcm9jZXNzKQotICAgICAg
ICBzb3VyY2UtPnNldFNob3VsZENhcHR1cmVJbkdQVVByb2Nlc3Moc2hvdWxkQ2FwdHVyZUluR1BV
UHJvY2Vzcyk7Ci0gICAgbV9zb3VyY2VzLmFkZChpZCwgc291cmNlLmNvcHlSZWYoKSk7Ci0KLSAg
ICBjb25uZWN0aW9uLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlVzZXJNZWRpYUNhcHR1
cmVNYW5hZ2VyUHJveHk6OkNyZWF0ZU1lZGlhU291cmNlRm9yQ2FwdHVyZURldmljZVdpdGhDb25z
dHJhaW50cyhpZCwgZGV2aWNlLCBoYXNoU2FsdCwgKmNvbnN0cmFpbnRzKSwgW3NvdXJjZSA9IHNv
dXJjZS5jb3B5UmVmKCldKGJvb2wgc3VjY2VlZGVkLCBhdXRvJiYgZXJyb3JNZXNzYWdlLCBhdXRv
JiYgc2V0dGluZ3MsIGF1dG8mJiBjYXBhYmlsaXRpZXMpIHsKLSAgICAgICAgaWYgKCFzdWNjZWVk
ZWQpIHsKLSAgICAgICAgICAgIHNvdXJjZS0+ZGlkRmFpbChXVEZNb3ZlKGVycm9yTWVzc2FnZSkp
OwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIHNvdXJjZS0+c2V0TmFt
ZShTdHJpbmcgeyBzZXR0aW5ncy5sYWJlbCgpLnN0cmluZygpIH0pOwotICAgICAgICBzb3VyY2Ut
PnNldFNldHRpbmdzKFdURk1vdmUoc2V0dGluZ3MpKTsKLSAgICAgICAgc291cmNlLT5zZXRDYXBh
YmlsaXRpZXMoV1RGTW92ZShjYXBhYmlsaXRpZXMpKTsKLSAgICAgICAgc291cmNlLT5zZXRBc1Jl
YWR5KCk7Ci0gICAgfSk7Ci0KLSAgICByZXR1cm4gV2ViQ29yZTo6Q2FwdHVyZVNvdXJjZU9yRXJy
b3IoV1RGTW92ZShzb3VyY2UpKTsKK3ZvaWQgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OnJlbW92
ZVNvdXJjZShSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciBpZCkKK3sKKyAgICBtX3NvdXJj
ZXMucmVtb3ZlKGlkKTsKIH0KIAogdm9pZCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6c291cmNl
U3RvcHBlZChSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciBpZCkKIHsKLSAgICBpZiAoYXV0
byBzb3VyY2UgPSBtX3NvdXJjZXMuZ2V0KGlkKSkgewotICAgICAgICBzb3VyY2UtPnN0b3AoKTsK
LSAgICAgICAgc291cmNlLT5oYXNFbmRlZCgpOwotICAgIH0KKyAgICBpZiAoYXV0byBzb3VyY2Ug
PSBtX3NvdXJjZXMuZ2V0KGlkKSkKKyAgICAgICAgc291cmNlLT5jYXB0dXJlU3RvcHBlZCgpOwog
fQogCiB2b2lkIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOjpjYXB0dXJlRmFpbGVkKFJlYWx0aW1l
TWVkaWFTb3VyY2VJZGVudGlmaWVyIGlkKQogewotICAgIGlmIChhdXRvIHNvdXJjZSA9IG1fc291
cmNlcy5nZXQoaWQpKSB7CisgICAgaWYgKGF1dG8gc291cmNlID0gbV9zb3VyY2VzLmdldChpZCkp
CiAgICAgICAgIHNvdXJjZS0+Y2FwdHVyZUZhaWxlZCgpOwotICAgICAgICBzb3VyY2UtPmhhc0Vu
ZGVkKCk7Ci0gICAgfQogfQogCiB2b2lkIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOjpzb3VyY2VN
dXRlZENoYW5nZWQoUmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIgaWQsIGJvb2wgbXV0ZWQp
CkBAIC0zNzQsODAgKzEyNCwxMyBAQCB2b2lkIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOjpzb3Vy
Y2VTZXR0aW5nc0NoYW5nZWQoUmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZQogICAgICAgICBz
b3VyY2UtPnNldFNldHRpbmdzKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyhzZXR0aW5ncykp
OwogfQogCi12b2lkIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOjpzdG9yYWdlQ2hhbmdlZChSZWFs
dGltZU1lZGlhU291cmNlSWRlbnRpZmllciBpZCwgY29uc3QgU2hhcmVkTWVtb3J5OjpIYW5kbGUm
IGhhbmRsZSwgY29uc3QgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlw
dGlvbiwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMpCi17Ci0gICAgaWYgKGF1dG8gc291cmNlID0g
bV9zb3VyY2VzLmdldChpZCkpCi0gICAgICAgIHNvdXJjZS0+c2V0U3RvcmFnZShoYW5kbGUsIGRl
c2NyaXB0aW9uLCBudW1iZXJPZkZyYW1lcyk7Ci19Ci0KLXZvaWQgVXNlck1lZGlhQ2FwdHVyZU1h
bmFnZXI6OnJpbmdCdWZmZXJGcmFtZUJvdW5kc0NoYW5nZWQoUmVhbHRpbWVNZWRpYVNvdXJjZUlk
ZW50aWZpZXIgaWQsIHVpbnQ2NF90IHN0YXJ0RnJhbWUsIHVpbnQ2NF90IGVuZEZyYW1lKQotewot
ICAgIGlmIChhdXRvIHNvdXJjZSA9IG1fc291cmNlcy5nZXQoaWQpKQotICAgICAgICBzb3VyY2Ut
PnNldFJpbmdCdWZmZXJGcmFtZUJvdW5kcyhzdGFydEZyYW1lLCBlbmRGcmFtZSk7Ci19Ci0KLXZv
aWQgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZShSZWFsdGlt
ZU1lZGlhU291cmNlSWRlbnRpZmllciBpZCwgTWVkaWFUaW1lIHRpbWUsIHVpbnQ2NF90IG51bWJl
ck9mRnJhbWVzLCB1aW50NjRfdCBzdGFydEZyYW1lLCB1aW50NjRfdCBlbmRGcmFtZSkKLXsKLSAg
ICBpZiAoYXV0byBzb3VyY2UgPSBtX3NvdXJjZXMuZ2V0KGlkKSkgewotICAgICAgICBzb3VyY2Ut
PnNldFJpbmdCdWZmZXJGcmFtZUJvdW5kcyhzdGFydEZyYW1lLCBlbmRGcmFtZSk7Ci0gICAgICAg
IHNvdXJjZS0+YXVkaW9TYW1wbGVzQXZhaWxhYmxlKHRpbWUsIG51bWJlck9mRnJhbWVzKTsKLSAg
ICB9Ci19Ci0KIHZvaWQgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OnJlbW90ZVZpZGVvU2FtcGxl
QXZhaWxhYmxlKFJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyIGlkLCBSZW1vdGVWaWRlb1Nh
bXBsZSYmIHNhbXBsZSkKIHsKICAgICBpZiAoYXV0byBzb3VyY2UgPSBtX3NvdXJjZXMuZ2V0KGlk
KSkKICAgICAgICAgc291cmNlLT5yZW1vdGVWaWRlb1NhbXBsZUF2YWlsYWJsZShXVEZNb3ZlKHNh
bXBsZSkpOwogfQogCi1JUEM6OkNvbm5lY3Rpb24qIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOjpT
b3VyY2U6OmNvbm5lY3Rpb24oKQotewotI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKLSAgICBpZiAo
bV9zaG91bGRDYXB0dXJlSW5HUFVQcm9jZXNzKQotICAgICAgICByZXR1cm4gJm1fbWFuYWdlci5t
X3Byb2Nlc3MuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCk7Ci0jZW5k
aWYKLSAgICByZXR1cm4gbV9tYW5hZ2VyLm1fcHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlv
bigpOwotfQotCi12b2lkIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOjpTb3VyY2U6OnN0YXJ0UHJv
ZHVjaW5nRGF0YSgpCi17Ci0gICAgY29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpVc2VyTWVk
aWFDYXB0dXJlTWFuYWdlclByb3h5OjpTdGFydFByb2R1Y2luZ0RhdGEobV9pZCksIDApOwotfQot
Ci12b2lkIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOjpTb3VyY2U6OnN0b3BQcm9kdWNpbmdEYXRh
KCkKLXsKLSAgICBjb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlVzZXJNZWRpYUNhcHR1cmVN
YW5hZ2VyUHJveHk6OlN0b3BQcm9kdWNpbmdEYXRhKG1faWQpLCAwKTsKLX0KLQotYm9vbCBVc2Vy
TWVkaWFDYXB0dXJlTWFuYWdlcjo6U291cmNlOjpzZXRTaG91bGRBcHBseVJvdGF0aW9uKGJvb2wg
c2hvdWxkQXBwbHlSb3RhdGlvbikKLXsKLSAgICBjb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
OlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6OlNldFNob3VsZEFwcGx5Um90YXRpb24obV9p
ZCwgc2hvdWxkQXBwbHlSb3RhdGlvbiksIDApOwotICAgIHJldHVybiB0cnVlOwotfQotCi1jb25z
dCBXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBVc2VyTWVkaWFDYXB0
dXJlTWFuYWdlcjo6U291cmNlOjpjYXBhYmlsaXRpZXMoKQotewotICAgIHJldHVybiBtX2NhcGFi
aWxpdGllczsKLX0KLQotdm9pZCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6U291cmNlOjphcHBs
eUNvbnN0cmFpbnRzKGNvbnN0IFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludHMmIGNvbnN0cmFpbnRz
LCBBcHBseUNvbnN0cmFpbnRzSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIG1f
cGVuZGluZ0FwcGx5Q29uc3RyYWludHNDYWxsYmFja3MuYXBwZW5kKFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKLSAgICBjb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlVzZXJNZWRpYUNh
cHR1cmVNYW5hZ2VyUHJveHk6OkFwcGx5Q29uc3RyYWludHMobV9pZCwgY29uc3RyYWludHMpLCAw
KTsKLX0KLQotdm9pZCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6c291cmNlRW5kZWQoUmVhbHRp
bWVNZWRpYVNvdXJjZUlkZW50aWZpZXIgaWQpCi17Ci0gICAgbV9zb3VyY2VzLnJlbW92ZShpZCk7
Ci19Ci0KLXZvaWQgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OlNvdXJjZTo6aGFzRW5kZWQoKQot
ewotICAgIGNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6VXNlck1lZGlhQ2FwdHVyZU1hbmFn
ZXJQcm94eTo6RW5kIHsgbV9pZCB9LCAwKTsKLSAgICBtX21hbmFnZXIuc291cmNlRW5kZWQobV9p
ZCk7Ci19Ci0KLXZvaWQgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OmFwcGx5Q29uc3RyYWludHNT
dWNjZWVkZWQoUmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIgaWQsIGNvbnN0IFdlYkNvcmU6
OlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgc2V0dGluZ3MpCit2b2lkIFVzZXJNZWRpYUNh
cHR1cmVNYW5hZ2VyOjphcHBseUNvbnN0cmFpbnRzU3VjY2VlZGVkKFJlYWx0aW1lTWVkaWFTb3Vy
Y2VJZGVudGlmaWVyIGlkLCBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRp
bmdzKQogewogICAgIGlmIChhdXRvIHNvdXJjZSA9IG1fc291cmNlcy5nZXQoaWQpKQogICAgICAg
ICBzb3VyY2UtPmFwcGx5Q29uc3RyYWludHNTdWNjZWVkZWQoc2V0dGluZ3MpOwpAQCAtNDU5LDc0
ICsxNDIsNDEgQEAgdm9pZCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6YXBwbHlDb25zdHJhaW50
c0ZhaWxlZChSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmkKICAgICAgICAgc291cmNlLT5hcHBs
eUNvbnN0cmFpbnRzRmFpbGVkKFdURk1vdmUoZmFpbGVkQ29uc3RyYWludCksIFdURk1vdmUobWVz
c2FnZSkpOwogfQogCi1SZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4gVXNlck1lZGlhQ2FwdHVyZU1h
bmFnZXI6OmNsb25lU291cmNlKFNvdXJjZSYgc291cmNlKQotewotICAgIHN3aXRjaCAoc291cmNl
LnR5cGUoKSkgewotICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6VmlkZW86Ci0g
ICAgICAgIHJldHVybiBjbG9uZVZpZGVvU291cmNlKHNvdXJjZSk7Ci0gICAgY2FzZSBSZWFsdGlt
ZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbzoKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBSZWFs
dGltZU1lZGlhU291cmNlOjpUeXBlOjpOb25lOgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICB9Ci0gICAgcmV0dXJuIG1ha2VSZWYoc291cmNlKTsKLX0KLQotUmVmPFJlYWx0aW1l
TWVkaWFTb3VyY2U+IFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOjpjbG9uZVZpZGVvU291cmNlKFNv
dXJjZSYgc291cmNlKQotewotICAgIGF1dG8gaWQgPSBSZWFsdGltZU1lZGlhU291cmNlSWRlbnRp
Zmllcjo6Z2VuZXJhdGUoKTsKLSAgICBpZiAoIXNvdXJjZS5jb25uZWN0aW9uKCktPnNlbmQoTWVz
c2FnZXM6OlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6OkNsb25lIHsgc291cmNlLnNvdXJj
ZUlEKCksIGlkIH0sIDApKQotICAgICAgICByZXR1cm4gbWFrZVJlZihzb3VyY2UpOwotCi0gICAg
YXV0byBzZXR0aW5ncyA9IHNvdXJjZS5zZXR0aW5ncygpOwotICAgIGF1dG8gY2xvbmVTb3VyY2Ug
PSBhZG9wdFJlZigqbmV3IFNvdXJjZShTdHJpbmc6Om51bWJlcihpZC50b1VJbnQ2NCgpKSwgc291
cmNlLnR5cGUoKSwgc291cmNlLmRldmljZVR5cGUoKSwgU3RyaW5nIHsgc2V0dGluZ3MubGFiZWwo
KS5zdHJpbmcoKSB9LCBzb3VyY2UuZGV2aWNlSURIYXNoU2FsdCgpLCBpZCwgKnRoaXMpKTsKLSAg
ICBpZiAoc291cmNlLnNob3VsZENhcHR1cmVJbkdQVVByb2Nlc3MoKSkKLSAgICAgICAgY2xvbmVT
b3VyY2UtPnNldFNob3VsZENhcHR1cmVJbkdQVVByb2Nlc3ModHJ1ZSk7Ci0gICAgY2xvbmVTb3Vy
Y2UtPnNldFNldHRpbmdzKFdURk1vdmUoc2V0dGluZ3MpKTsKLSAgICBtX3NvdXJjZXMuYWRkKGlk
LCBjbG9uZVNvdXJjZS5jb3B5UmVmKCkpOwotICAgIHJldHVybiBjbG9uZVNvdXJjZTsKLX0KLQot
dm9pZCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6U291cmNlOjpzdG9wQmVpbmdPYnNlcnZlZCgp
Ci17Ci0gICAgY29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpVc2VyTWVkaWFDYXB0dXJlTWFu
YWdlclByb3h5OjpSZXF1ZXN0VG9FbmQgeyBtX2lkIH0sIDApOwotfQotCi12b2lkIFVzZXJNZWRp
YUNhcHR1cmVNYW5hZ2VyOjpTb3VyY2U6OnJlcXVlc3RUb0VuZChPYnNlcnZlciYgb2JzZXJ2ZXIp
Ci17Ci0gICAgc3dpdGNoICh0eXBlKCkpIHsKLSAgICBjYXNlIFR5cGU6OkF1ZGlvOgotICAgICAg
ICBSZWFsdGltZU1lZGlhU291cmNlOjpyZXF1ZXN0VG9FbmQob2JzZXJ2ZXIpOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIFR5cGU6OlZpZGVvOgotICAgICAgICBzdG9wQmVpbmdPYnNlcnZlZCgp
OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFR5cGU6Ok5vbmU6Ci0gICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgIH0KLX0KLQogQ2FwdHVyZVNvdXJjZU9yRXJyb3IgVXNlck1lZGlh
Q2FwdHVyZU1hbmFnZXI6OkF1ZGlvRmFjdG9yeTo6Y3JlYXRlQXVkaW9DYXB0dXJlU291cmNlKGNv
bnN0IENhcHR1cmVEZXZpY2UmIGRldmljZSwgU3RyaW5nJiYgaGFzaFNhbHQsIGNvbnN0IE1lZGlh
Q29uc3RyYWludHMqIGNvbnN0cmFpbnRzKQogeworICAgIGlmICghY29uc3RyYWludHMpCisgICAg
ICAgIHJldHVybiB7IH07CisKICNpZiAhRU5BQkxFKEdQVV9QUk9DRVNTKQogICAgIGlmIChtX3No
b3VsZENhcHR1cmVJbkdQVVByb2Nlc3MpCiAgICAgICAgIHJldHVybiBDYXB0dXJlU291cmNlT3JF
cnJvciB7ICJBdWRpbyBjYXB0dXJlIGluIEdQVVByb2Nlc3MgaXMgbm90IGltcGxlbWVudGVkIl9z
IH07CiAjZW5kaWYKKwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IEVOQUJMRShST1VUSU5H
X0FSQklUUkFUSU9OKQotICAgIC8vIEZJWE1FOiBSZW1vdmUgZGlzYWJsaW5nIG9mIHRoZSBhdWRp
byBzZXNzaW9uIGNhdGVnb3J5IG1hbmFnZW1lZW50IG9uY2Ugd2UgbW92ZSBhbGwgbWVkaWEgcGxh
eWluZyB0byBHUFVQcm9jZXNzLgorICAgIC8vIEZJWE1FOiBSZW1vdmUgZGlzYWJsaW5nIG9mIHRo
ZSBhdWRpbyBzZXNzaW9uIGNhdGVnb3J5IG1hbmFnZW1lbnQgb25jZSB3ZSBtb3ZlIGFsbCBtZWRp
YSBwbGF5aW5nIHRvIEdQVVByb2Nlc3MuCiAgICAgaWYgKG1fc2hvdWxkQ2FwdHVyZUluR1BVUHJv
Y2VzcykKICAgICAgICAgRGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzOjpzZXRTaG91bGRNYW5hZ2VB
dWRpb1Nlc3Npb25DYXRlZ29yeSh0cnVlKTsKICNlbmRpZgotICAgIHJldHVybiBtX21hbmFnZXIu
Y3JlYXRlQ2FwdHVyZVNvdXJjZShkZXZpY2UsIFdURk1vdmUoaGFzaFNhbHQpLCBjb25zdHJhaW50
cywgbV9zaG91bGRDYXB0dXJlSW5HUFVQcm9jZXNzKTsKKworICAgIHJldHVybiBSZW1vdGVSZWFs
dGltZU1lZGlhU291cmNlOjpjcmVhdGUoZGV2aWNlLCAqY29uc3RyYWludHMsIHsgfSwgV1RGTW92
ZShoYXNoU2FsdCksIG1fbWFuYWdlcik7Cit9CisKK3ZvaWQgVXNlck1lZGlhQ2FwdHVyZU1hbmFn
ZXI6OkF1ZGlvRmFjdG9yeTo6c2V0U2hvdWxkQ2FwdHVyZUluR1BVUHJvY2Vzcyhib29sIHZhbHVl
KQoreworICAgIG1fc2hvdWxkQ2FwdHVyZUluR1BVUHJvY2VzcyA9IHZhbHVlOwogfQogCiBDYXB0
dXJlU291cmNlT3JFcnJvciBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6VmlkZW9GYWN0b3J5Ojpj
cmVhdGVWaWRlb0NhcHR1cmVTb3VyY2UoY29uc3QgQ2FwdHVyZURldmljZSYgZGV2aWNlLCBTdHJp
bmcmJiBoYXNoU2FsdCwgY29uc3QgTWVkaWFDb25zdHJhaW50cyogY29uc3RyYWludHMpCiB7Cisg
ICAgaWYgKCFjb25zdHJhaW50cykKKyAgICAgICAgcmV0dXJuIHsgfTsKKwogI2lmICFFTkFCTEUo
R1BVX1BST0NFU1MpCiAgICAgaWYgKG1fc2hvdWxkQ2FwdHVyZUluR1BVUHJvY2VzcykKICAgICAg
ICAgcmV0dXJuIENhcHR1cmVTb3VyY2VPckVycm9yIHsgIlZpZGVvIGNhcHR1cmUgaW4gR1BVUHJv
Y2VzcyBpcyBub3QgaW1wbGVtZW50ZWQiX3MgfTsKICNlbmRpZgotICAgIHJldHVybiBtX21hbmFn
ZXIuY3JlYXRlQ2FwdHVyZVNvdXJjZShkZXZpY2UsIFdURk1vdmUoaGFzaFNhbHQpLCBjb25zdHJh
aW50cywgbV9zaG91bGRDYXB0dXJlSW5HUFVQcm9jZXNzKTsKKworICAgIHJldHVybiBSZW1vdGVS
ZWFsdGltZU1lZGlhU291cmNlOjpjcmVhdGUoZGV2aWNlLCAqY29uc3RyYWludHMsIHsgfSwgV1RG
TW92ZShoYXNoU2FsdCksIG1fbWFuYWdlcik7CiB9CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQpAQCAtNTM2LDYgKzE4NiwxNCBAQCB2b2lkIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOjpWaWRl
b0ZhY3Rvcnk6OnNldEFjdGl2ZVNvdXJjZShSZWFsdGltZU1lZGlhU291cmNlJgogfQogI2VuZGlm
CiAKK0NhcHR1cmVTb3VyY2VPckVycm9yIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOjpEaXNwbGF5
RmFjdG9yeTo6Y3JlYXRlRGlzcGxheUNhcHR1cmVTb3VyY2UoY29uc3QgQ2FwdHVyZURldmljZSYg
ZGV2aWNlLCBjb25zdCBNZWRpYUNvbnN0cmFpbnRzKiBjb25zdHJhaW50cykKK3sKKyAgICBpZiAo
IWNvbnN0cmFpbnRzKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgcmV0dXJuIFJlbW90ZVJl
YWx0aW1lTWVkaWFTb3VyY2U6OmNyZWF0ZShkZXZpY2UsICpjb25zdHJhaW50cywgeyB9LCB7IH0s
IG1fbWFuYWdlcik7Cit9CisKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oCmluZGV4IDNiYzUx
ZWFiOTFhNTRmZGY2MDE0ZTYwZjk2ZjQ4NzAzNTM2ZDZhNTMuLjZlZDBhMGY5ODJhNTczZDk1Y2Zm
YzQxNzQ2NDBkMTU2MjU4MTExZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oCkBAIC0yNyw3ICsyNyw3IEBA
CiAKICNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAotI2luY2x1
ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIlJlbW90ZUNhcHR1cmVTYW1wbGVNYW5h
Z2VyLmgiCiAjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1N1
cHBsZW1lbnQuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmg+CkBA
IC00Myw3ICs0Myw3IEBAIGNsYXNzIFJlbW90ZVZpZGVvU2FtcGxlOwogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAotY2xhc3MgQ3Jvc3NQcm9jZXNzUmVhbHRpbWVBdWRpb1NvdXJjZTsKK2NsYXNzIFJl
bW90ZVJlYWx0aW1lTWVkaWFTb3VyY2U7CiBjbGFzcyBXZWJQcm9jZXNzOwogCiBjbGFzcyBVc2Vy
TWVkaWFDYXB0dXJlTWFuYWdlciA6IHB1YmxpYyBXZWJQcm9jZXNzU3VwcGxlbWVudCwgcHVibGlj
IElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKQEAgLTU3LDEyICs1NywxNSBAQCBwdWJsaWM6CiAgICAg
dm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21HUFVQcm9jZXNzKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKSB7IGRpZFJlY2VpdmVNZXNzYWdlKGNvbm5l
Y3Rpb24sIGRlY29kZXIpOyB9CiAgICAgdm9pZCBzZXR1cENhcHR1cmVQcm9jZXNzZXMoYm9vbCBz
aG91bGRDYXB0dXJlQXVkaW9JblVJUHJvY2VzcywgYm9vbCBzaG91bGRDYXB0dXJlQXVkaW9JbkdQ
VVByb2Nlc3MsIGJvb2wgc2hvdWxkQ2FwdHVyZVZpZGVvSW5VSVByb2Nlc3MsIGJvb2wgc2hvdWxk
Q2FwdHVyZVZpZGVvSW5HUFVQcm9jZXNzLCBib29sIHNob3VsZENhcHR1cmVEaXNwbGF5SW5VSVBy
b2Nlc3MpOwogCisgICAgdm9pZCBhZGRTb3VyY2UoUmVmPFJlbW90ZVJlYWx0aW1lTWVkaWFTb3Vy
Y2U+JiYpOworICAgIHZvaWQgcmVtb3ZlU291cmNlKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3Vy
Y2VJZGVudGlmaWVyKTsKKwogcHJpdmF0ZToKICAgICAvLyBXZWJDb3JlOjpSZWFsdGltZU1lZGlh
U291cmNlIGZhY3RvcmllcwogICAgIGNsYXNzIEF1ZGlvRmFjdG9yeSA6IHB1YmxpYyBXZWJDb3Jl
OjpBdWRpb0NhcHR1cmVGYWN0b3J5IHsKICAgICBwdWJsaWM6CiAgICAgICAgIGV4cGxpY2l0IEF1
ZGlvRmFjdG9yeShVc2VyTWVkaWFDYXB0dXJlTWFuYWdlciYgbWFuYWdlcikgOiBtX21hbmFnZXIo
bWFuYWdlcikgeyB9Ci0gICAgICAgIHZvaWQgc2V0U2hvdWxkQ2FwdHVyZUluR1BVUHJvY2Vzcyhi
b29sIHZhbHVlKSB7IG1fc2hvdWxkQ2FwdHVyZUluR1BVUHJvY2VzcyA9IHZhbHVlOyB9CisgICAg
ICAgIHZvaWQgc2V0U2hvdWxkQ2FwdHVyZUluR1BVUHJvY2Vzcyhib29sKTsKIAogICAgIHByaXZh
dGU6CiAgICAgICAgIFdlYkNvcmU6OkNhcHR1cmVTb3VyY2VPckVycm9yIGNyZWF0ZUF1ZGlvQ2Fw
dHVyZVNvdXJjZShjb25zdCBXZWJDb3JlOjpDYXB0dXJlRGV2aWNlJiwgU3RyaW5nJiYgaGFzaFNh
bHQsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludHMqKSBmaW5hbDsKQEAgLTkxLDE0ICs5
NCwxMiBAQCBwcml2YXRlOgogICAgICAgICBleHBsaWNpdCBEaXNwbGF5RmFjdG9yeShVc2VyTWVk
aWFDYXB0dXJlTWFuYWdlciYgbWFuYWdlcikgOiBtX21hbmFnZXIobWFuYWdlcikgeyB9CiAKICAg
ICBwcml2YXRlOgotICAgICAgICBXZWJDb3JlOjpDYXB0dXJlU291cmNlT3JFcnJvciBjcmVhdGVE
aXNwbGF5Q2FwdHVyZVNvdXJjZShjb25zdCBXZWJDb3JlOjpDYXB0dXJlRGV2aWNlJiBkZXZpY2Us
IGNvbnN0IFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludHMqIGNvbnN0cmFpbnRzKSBmaW5hbCAgeyBy
ZXR1cm4gbV9tYW5hZ2VyLmNyZWF0ZUNhcHR1cmVTb3VyY2UoZGV2aWNlLCB7IH0sIGNvbnN0cmFp
bnRzKTsgfQorICAgICAgICBXZWJDb3JlOjpDYXB0dXJlU291cmNlT3JFcnJvciBjcmVhdGVEaXNw
bGF5Q2FwdHVyZVNvdXJjZShjb25zdCBXZWJDb3JlOjpDYXB0dXJlRGV2aWNlJiwgY29uc3QgV2Vi
Q29yZTo6TWVkaWFDb25zdHJhaW50cyopIGZpbmFsOwogICAgICAgICBXZWJDb3JlOjpDYXB0dXJl
RGV2aWNlTWFuYWdlciYgZGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyKCkgZmluYWwgeyByZXR1
cm4gbV9tYW5hZ2VyLm1fbm9PcENhcHR1cmVEZXZpY2VNYW5hZ2VyOyB9CiAKICAgICAgICAgVXNl
ck1lZGlhQ2FwdHVyZU1hbmFnZXImIG1fbWFuYWdlcjsKICAgICB9OwogCi0gICAgV2ViQ29yZTo6
Q2FwdHVyZVNvdXJjZU9yRXJyb3IgY3JlYXRlQ2FwdHVyZVNvdXJjZShjb25zdCBXZWJDb3JlOjpD
YXB0dXJlRGV2aWNlJiwgU3RyaW5nJiYsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludHMq
LCBib29sIHNob3VsZENhcHR1cmVJbkdQVVByb2Nlc3MgPSBmYWxzZSk7Ci0KICAgICBjbGFzcyBO
b09wQ2FwdHVyZURldmljZU1hbmFnZXIgOiBwdWJsaWMgV2ViQ29yZTo6Q2FwdHVyZURldmljZU1h
bmFnZXIgewogICAgIHB1YmxpYzoKICAgICAgICAgTm9PcENhcHR1cmVEZXZpY2VNYW5hZ2VyKCkg
PSBkZWZhdWx0OwpAQCAtMTE4LDI4ICsxMTksMjIgQEAgcHJpdmF0ZToKICAgICAvLyBNZXNzYWdl
czo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIKICAgICB2b2lkIGNhcHR1cmVGYWlsZWQoV2ViQ29y
ZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIpOwogICAgIHZvaWQgc291cmNlU3RvcHBl
ZChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllcik7Ci0gICAgdm9pZCBzb3Vy
Y2VFbmRlZChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllcik7CisgICAgdm9p
ZCBzb3VyY2VFbmRlZChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciBpZGVu
dGlmaWVyKSB7IHJlbW92ZVNvdXJjZShpZGVudGlmaWVyKTsgfQogICAgIHZvaWQgc291cmNlTXV0
ZWRDaGFuZ2VkKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyLCBib29sIG11
dGVkKTsKICAgICB2b2lkIHNvdXJjZVNldHRpbmdzQ2hhbmdlZChXZWJDb3JlOjpSZWFsdGltZU1l
ZGlhU291cmNlSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZVNl
dHRpbmdzJik7Ci0gICAgdm9pZCBzdG9yYWdlQ2hhbmdlZChXZWJDb3JlOjpSZWFsdGltZU1lZGlh
U291cmNlSWRlbnRpZmllciwgY29uc3QgU2hhcmVkTWVtb3J5OjpIYW5kbGUmLCBjb25zdCBXZWJD
b3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcyk7
Ci0gICAgdm9pZCByaW5nQnVmZmVyRnJhbWVCb3VuZHNDaGFuZ2VkKFdlYkNvcmU6OlJlYWx0aW1l
TWVkaWFTb3VyY2VJZGVudGlmaWVyLCB1aW50NjRfdCBzdGFydEZyYW1lLCB1aW50NjRfdCBlbmRG
cmFtZSk7Ci0gICAgdm9pZCBhdWRpb1NhbXBsZXNBdmFpbGFibGUoV2ViQ29yZTo6UmVhbHRpbWVN
ZWRpYVNvdXJjZUlkZW50aWZpZXIsIE1lZGlhVGltZSwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMs
IHVpbnQ2NF90IHN0YXJ0RnJhbWUsIHVpbnQ2NF90IGVuZEZyYW1lKTsKICAgICB2b2lkIHJlbW90
ZVZpZGVvU2FtcGxlQXZhaWxhYmxlKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlm
aWVyLCBXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYmKTsKICAgICB2b2lkIGFwcGx5Q29uc3Ry
YWludHNTdWNjZWVkZWQoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIsIGNv
bnN0IFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYpOwogICAgIHZvaWQgYXBw
bHlDb25zdHJhaW50c0ZhaWxlZChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmll
ciwgU3RyaW5nJiYsIFN0cmluZyYmKTsKIAotICAgIGNsYXNzIFNvdXJjZTsKLSAgICBmcmllbmQg
Y2xhc3MgU291cmNlOwotCi0gICAgUmVmPFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U+IGNs
b25lU291cmNlKFNvdXJjZSYpOwotICAgIFJlZjxXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNl
PiBjbG9uZVZpZGVvU291cmNlKFNvdXJjZSYpOworICAgIFJlZjxXZWJDb3JlOjpSZWFsdGltZU1l
ZGlhU291cmNlPiBjbG9uZVZpZGVvU291cmNlKFJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2UmKTsK
IAotICAgIEhhc2hNYXA8V2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIsIFJl
ZjxTb3VyY2U+PiBtX3NvdXJjZXM7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpSZWFsdGltZU1lZGlh
U291cmNlSWRlbnRpZmllciwgUmVmPFJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2U+PiBtX3NvdXJj
ZXM7CiAgICAgV2ViUHJvY2VzcyYgbV9wcm9jZXNzOwogICAgIE5vT3BDYXB0dXJlRGV2aWNlTWFu
YWdlciBtX25vT3BDYXB0dXJlRGV2aWNlTWFuYWdlcjsKICAgICBBdWRpb0ZhY3RvcnkgbV9hdWRp
b0ZhY3Rvcnk7CiAgICAgVmlkZW9GYWN0b3J5IG1fdmlkZW9GYWN0b3J5OwogICAgIERpc3BsYXlG
YWN0b3J5IG1fZGlzcGxheUZhY3Rvcnk7CisgICAgUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIg
bV9yZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNh
cHR1cmVNYW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29h
L1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLm1lc3NhZ2VzLmluCmluZGV4IDMwMTBlZWU5MWU5YWE0
N2JkYTU0ZDE1YzBjOGQ1NWEyYjdkYmIwOTcuLjEwNDY2YmFmZDc3OTUxMmUxZDMyODZkNTk5YjY1
NTJkMDYxM2YzMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9V
c2VyTWVkaWFDYXB0dXJlTWFuYWdlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIubWVzc2FnZXMuaW4KQEAgLTI4
LDggKzI4LDYgQEAgbWVzc2FnZXMgLT4gVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIgTm90UmVmQ291
bnRlZCB7CiAgICAgU291cmNlU3RvcHBlZChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRl
bnRpZmllciBpZCkKICAgICBTb3VyY2VNdXRlZENoYW5nZWQoV2ViQ29yZTo6UmVhbHRpbWVNZWRp
YVNvdXJjZUlkZW50aWZpZXIgaWQsIGJvb2wgbXV0ZWQpCiAgICAgU291cmNlU2V0dGluZ3NDaGFu
Z2VkKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyIGlkLCBXZWJDb3JlOjpS
ZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3Mgc2V0dGluZ3MpCi0gICAgU3RvcmFnZUNoYW5nZWQo
V2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIgaWQsIFdlYktpdDo6U2hhcmVk
TWVtb3J5OjpIYW5kbGUgc3RvcmFnZUhhbmRsZSwgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2Ny
aXB0aW9uIGRlc2NyaXB0aW9uLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcykKLSAgICBBdWRpb1Nh
bXBsZXNBdmFpbGFibGUoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIgaWQs
IE1lZGlhVGltZSB0aW1lLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcywgdWludDY0X3Qgc3RhcnRG
cmFtZSwgdWludDY0X3QgZW5kRnJhbWUpCiAgICAgQXBwbHlDb25zdHJhaW50c1N1Y2NlZWRlZChX
ZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciBpZCwgV2ViQ29yZTo6UmVhbHRp
bWVNZWRpYVNvdXJjZVNldHRpbmdzIHNldHRpbmdzKQogICAgIEFwcGx5Q29uc3RyYWludHNGYWls
ZWQoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIgaWQsIFN0cmluZyBmYWls
ZWRDb25zdHJhaW50LCBTdHJpbmcgbWVzc2FnZSkKICAgICBSZW1vdGVWaWRlb1NhbXBsZUF2YWls
YWJsZShXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciBpZCwgV2ViQ29yZTo6
UmVtb3RlVmlkZW9TYW1wbGUgc2FtcGxlKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>