<?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>237704</bug_id>
          
          <creation_ts>2022-03-10 04:14:26 -0800</creation_ts>
          <short_desc>Share more code between RemoteRealtimeAudioSource and RemoteRealtimeVideoSource</short_desc>
          <delta_ts>2022-03-28 09:25:26 -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 Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>237316</dependson>
          <blocked>238449</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>hta</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</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>1850025</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-03-10 04:14:26 -0800</bug_when>
    <thetext>Share more code between RemoteRealtimeAudioSource and RemoteRealtimeVideoSource</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1850027</commentid>
    <comment_count>1</comment_count>
      <attachid>454333</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-03-10 04:26:33 -0800</bug_when>
    <thetext>Created attachment 454333
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852242</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-03-17 05:15:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/90424679&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855553</commentid>
    <comment_count>3</comment_count>
      <attachid>455904</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-03-28 05:25:48 -0700</bug_when>
    <thetext>Created attachment 455904
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855585</commentid>
    <comment_count>4</comment_count>
      <attachid>455904</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2022-03-28 06:54:45 -0700</bug_when>
    <thetext>Comment on attachment 455904
Patch

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        The remove video source is now correctly exposing whether it is camera, screen...

s/remove/remote/

&gt; Source/WebKit/WebProcess/cocoa/RemoteRealtimeMediaSource.cpp:81
&gt; +        fprintf(stderr, &quot;RemoteRealtimeMediaSource::createRemoteMediaSource %p %d \n&quot;, this, (int) settings.width());

Don&apos;t forget to remove this

&gt; Source/WebKit/WebProcess/cocoa/RemoteRealtimeMediaSource.cpp:107
&gt; +    fprintf(stderr, &quot;RemoteRealtimeMediaSource::setSettings1 %p %d \n&quot;, this, (int) m_settings.width());

Ditto

&gt; Source/WebKit/WebProcess/cocoa/RemoteRealtimeMediaSource.cpp:110
&gt; +    fprintf(stderr, &quot;RemoteRealtimeMediaSource::setSettings2 %p %d \n&quot;, this, (int) m_settings.width());

Ditto

&gt; Source/WebKit/WebProcess/cocoa/RemoteRealtimeMediaSource.cpp:120
&gt; +void RemoteRealtimeMediaSource::hasEnded()

We should change this name, `hasEnded` sounds like it is a getter. Maybe `didEnd` would be better?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855598</commentid>
    <comment_count>5</comment_count>
      <attachid>455916</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-03-28 07:21:11 -0700</bug_when>
    <thetext>Created attachment 455916
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855631</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-03-28 09:25:22 -0700</bug_when>
    <thetext>Committed r291967 (248932@main): &lt;https://commits.webkit.org/248932@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 455916.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454333</attachid>
            <date>2022-03-10 04:26:33 -0800</date>
            <delta_ts>2022-03-28 05:25:43 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-237704-20220310132631.patch</filename>
            <type>text/plain</type>
            <size>36707</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxMDkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGRhMTQ3MzE2MjVjNzllNDg3
YWJkZGY4M2UwNjM3ZWM1YjY1Y2Q1ZDMuLjFlOTI1ZWQyYjVhNmU4M2Q2MmM3OTE3ODBlZWQ2NWJl
NDkxOTY2YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMjItMDMtMTAgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIFNoYXJlIG1vcmUgY29kZSBiZXR3
ZWVuIFJlbW90ZVJlYWx0aW1lQXVkaW9Tb3VyY2UgYW5kIFJlbW90ZVJlYWx0aW1lVmlkZW9Tb3Vy
Y2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzcw
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZmFj
dG9yaW5nLgorCisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1Jl
bW90ZVJlYWx0aW1lQXVkaW9Tb3VyY2UuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2Ev
UmVtb3RlUmVhbHRpbWVBdWRpb1NvdXJjZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2Ev
UmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVSZWFsdGltZUF1ZGlvU291cmNlLmNwcC4KKyAgICAgICAg
KiBXZWJQcm9jZXNzL2NvY29hL1JlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2UuaDogQ29waWVkIGZy
b20gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZVJlYWx0aW1lQXVkaW9Tb3Vy
Y2UuaC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1JlbW90ZVJlYWx0aW1lTWVkaWFTb3Vy
Y2VQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvUmVtb3RlUmVhbHRpbWVWaWRl
b1NvdXJjZS5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVSZWFsdGltZVZp
ZGVvU291cmNlLmg6CisKIDIwMjItMDMtMTAgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUu
Y29tPgogCiAgICAgICAgIERvIGNhcHR1cmUgdmlkZW8gZnJhbWUgZG93bnNhbXBsaW5nIGluIEdQ
VVByb2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dCBiL1Nv
dXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRleCBiMDhkMWZkZGFjMGE1OTNjYWQ1NDVh
OGNhNTM2MTI5ZmEyMmE5ZGVmLi5iMzRjNTBkZGU3NGJiZTQ5MDQ5Mjk3NjAyM2E4N2Q3ODc5MDBk
YzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291
cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC02MTgsNiArNjE4LDcgQEAgV2ViUHJvY2Vz
cy9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JDb2NvYS5tbQogV2ViUHJvY2Vz
cy9jb2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tCiBXZWJQcm9jZXNzL2NvY29hL1JlbW90
ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLmNwcAogV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVSZWFsdGlt
ZUF1ZGlvU291cmNlLmNwcAorV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVSZWFsdGltZU1lZGlhU291
cmNlLmNwcAogV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlUHJveHku
Y3BwCiBXZWJQcm9jZXNzL2NvY29hL1JlbW90ZVJlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCiBXZWJQ
cm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMDdkMDdkNTI4NTczMjc0
YzY3YjgzMTZlN2NiMDQ2MDFlZjFiNGM4NC4uZmVkZDRlZDlmYmVhOTg1ZTFjNDA0NGUwMmVlMmJl
OTYzNmNiODBhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC00MTA0LDYgKzQxMDQsOCBAQAogCQk0MTFCODlFNTI3QjVENTgzMDBGOUVC
RDMgLyogUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eVByb2Nlc3Nvci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5UHJvY2Vzc29yLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMUI4OUU2MjdCNUQ1ODQwMEY5RUJEMyAvKiBSZW1v
dGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5UHJvY2Vzc29yLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHlQcm9jZXNzb3IuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0MTFCODlGNTI3QjZCNEM3MDBGOUVCRDMgLyogUmVtb3Rl
VmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVWaWRlb0Zy
YW1lT2JqZWN0SGVhcFByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMjgy
N0E1MjdEQTBEN0IwMDVBRERFMiAvKiBSZW1vdGVSZWFsdGltZU1lZGlhU291cmNlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2UuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk0MTI4MjdBNjI3REEwRDdGMDA1QURERTIgLyogUmVtb3RlUmVh
bHRpbWVNZWRpYVNvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVSZWFsdGltZU1lZGlhU291
cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMjg3RDRCMjI1QzA1QzQwMDlB
M0UyNiAvKiBXZWJTb2NrZXRUYXNrQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBXZWJTb2NrZXRUYXNrQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQxMjg3RDRDMjI1QzA1QzUwMDlBM0UyNiAvKiBXZWJTb2NrZXRUYXNrQ29jb2Eu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU29ja2V0VGFza0NvY29hLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMjg3RDREMjI1QzE2MUYwMDlBM0UyNiAv
KiBXZWJTb2NrZXRUYXNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNv
Y2tldFRhc2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwNDUyLDYgKzEwNDU0
LDggQEAKIAkJCQk0MTY4NEM0RDI0NjQzQkZBMDAxQ0U4RUQgLyogUmVtb3RlQ2FwdHVyZVNhbXBs
ZU1hbmFnZXIubWVzc2FnZXMuaW4gKi8sCiAJCQkJNDFFNjdBOEQyNUQyQ0ZEMDAwN0IwQTRDIC8q
IFJlbW90ZVJlYWx0aW1lQXVkaW9Tb3VyY2UuY3BwICovLAogCQkJCTQxRTY3QThDMjVEMkNGRDAw
MDdCMEE0QyAvKiBSZW1vdGVSZWFsdGltZUF1ZGlvU291cmNlLmggKi8sCisJCQkJNDEyODI3QTUy
N0RBMEQ3QjAwNUFEREUyIC8qIFJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2UuY3BwICovLAorCQkJ
CTQxMjgyN0E2MjdEQTBEN0YwMDVBRERFMiAvKiBSZW1vdGVSZWFsdGltZU1lZGlhU291cmNlLmgg
Ki8sCiAJCQkJNDE2MDA4QjIyNURBODk1QjAwRTg5MkZFIC8qIFJlbW90ZVJlYWx0aW1lTWVkaWFT
b3VyY2VQcm94eS5jcHAgKi8sCiAJCQkJNDE2MDA4QjEyNURBODZCOTAwRTg5MkZFIC8qIFJlbW90
ZVJlYWx0aW1lTWVkaWFTb3VyY2VQcm94eS5oICovLAogCQkJCTQxOEZDQkUzMjcxMDQ5REIwMEY5
NkVDQSAvKiBSZW1vdGVSZWFsdGltZVZpZGVvU291cmNlLmNwcCAqLywKQEAgLTEzNjczLDcgKzEz
Njc3LDYgQEAKIAkJCQk1NzQyQTMwODI1MzU4QTA0MDBCN0JBMTQgLyogV2ViQXV0aG5Qcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NzJFQkJDMjI1MzZBNjBB
MDAwNTUyQjMgLyogV2ViQXV0aG5Qcm9jZXNzTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTU3MkVCQkM5MjUzNkFGRDUwMDA1NTJCMyAvKiBXZWJBdXRoblByb2Nlc3NQcm94eS5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJNTcyRUJCRDAyNTM2QkIxMTAwMDU1MkIzIC8qIFdlYkF1dGhuUHJvY2Vz
c1Byb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUY0MkQ2MzQxMjJBMEVGREYwMEQy
RkIzQSAvKiBXZWJBdXRvY29ycmVjdGlvbkRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5MEQz
OUY1MjQzQkU2NDgwMDE5OTM4OCAvKiBXZWJBdXRvbWF0aW9uRE9NV2luZG93T2JzZXJ2ZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTk5NTVBNkVDMUM3OTgwQzIwMEVCNkE5MyAvKiBXZWJBdXRvbWF0
aW9uU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvY29jb2EvUmVtb3RlUmVhbHRpbWVBdWRpb1NvdXJjZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvY29jb2EvUmVtb3RlUmVhbHRpbWVBdWRpb1NvdXJjZS5jcHAKaW5kZXgg
YmNhODM0N2VlODcxM2MzYjJiZTEzN2FlNjQ0ODU0OTY3YTY0MWFiOC4uYmNmMTA0N2Q2NDExYzE3
NDBhMzY5MDBiNDk4MjFkYWQ2Y2M4NDc4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL2NvY29hL1JlbW90ZVJlYWx0aW1lQXVkaW9Tb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVSZWFsdGltZUF1ZGlvU291cmNlLmNwcApAQCAt
MjksMTYgKzI5LDggQEAKICNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKE1FRElBX1NUUkVB
TSkKIAogI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uLmgiCi0jaW5jbHVkZSAiU2hhcmVk
UmluZ0J1ZmZlclN0b3JhZ2UuaCIKICNpbmNsdWRlICJVc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5o
IgotI2luY2x1ZGUgIlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyTWVzc2FnZXMuaCIKLSNpbmNsdWRl
ICJVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKLSNpbmNsdWRlICJXZWJD
b3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCi0jaW5jbHVkZSA8
V2ViQ29yZS9NZWRpYUNvbnN0cmFpbnRzLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9SZWFsdGltZU1l
ZGlhU291cmNlLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9XZWJBdWRpb0J1ZmZlckxpc3QuaD4KIAogbmFtZXNwYWNl
IFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTUzLDU1ICs0NSwxNCBAQCBS
ZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4gUmVtb3RlUmVhbHRpbWVBdWRpb1NvdXJjZTo6Y3JlYXRl
KGNvbnN0IENhcHR1cmVEZXZpY2UmCiB9CiAKIFJlbW90ZVJlYWx0aW1lQXVkaW9Tb3VyY2U6OlJl
bW90ZVJlYWx0aW1lQXVkaW9Tb3VyY2UoUmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIgaWRl
bnRpZmllciwgY29uc3QgQ2FwdHVyZURldmljZSYgZGV2aWNlLCBjb25zdCBNZWRpYUNvbnN0cmFp
bnRzKiBjb25zdHJhaW50cywgU3RyaW5nJiYgbmFtZSwgU3RyaW5nJiYgaGFzaFNhbHQsIFVzZXJN
ZWRpYUNhcHR1cmVNYW5hZ2VyJiBtYW5hZ2VyLCBib29sIHNob3VsZENhcHR1cmVJbkdQVVByb2Nl
c3MsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJZGVudGlmaWVyKQotICAgIDogUmVhbHRpbWVNZWRpYVNv
dXJjZShSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbywgV1RGTW92ZShuYW1lKSwgU3Ry
aW5nIHsgZGV2aWNlLnBlcnNpc3RlbnRJZCgpIH0sIFdURk1vdmUoaGFzaFNhbHQpLCBwYWdlSWRl
bnRpZmllcikKLSAgICAsIG1fcHJveHkoaWRlbnRpZmllciwgZGV2aWNlLCBzaG91bGRDYXB0dXJl
SW5HUFVQcm9jZXNzLCBjb25zdHJhaW50cykKLSAgICAsIG1fbWFuYWdlcihtYW5hZ2VyKQorICAg
IDogUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZShpZGVudGlmaWVyLCBkZXZpY2UsIGNvbnN0cmFp
bnRzLCBXVEZNb3ZlKG5hbWUpLCBXVEZNb3ZlKGhhc2hTYWx0KSwgbWFuYWdlciwgc2hvdWxkQ2Fw
dHVyZUluR1BVUHJvY2VzcywgcGFnZUlkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKGRldmljZS50
eXBlKCkgPT0gQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6TWljcm9waG9uZSk7CiB9CiAKLXZv
aWQgUmVtb3RlUmVhbHRpbWVBdWRpb1NvdXJjZTo6Y3JlYXRlUmVtb3RlTWVkaWFTb3VyY2UoKQot
ewotICAgIG1fcHJveHkuY3JlYXRlUmVtb3RlTWVkaWFTb3VyY2UoZGV2aWNlSURIYXNoU2FsdCgp
LCBwYWdlSWRlbnRpZmllcigpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1d
KGJvb2wgc3VjY2VlZGVkLCBhdXRvJiYgZXJyb3JNZXNzYWdlLCBhdXRvJiYgc2V0dGluZ3MsIGF1
dG8mJiBjYXBhYmlsaXRpZXMsIGF1dG8mJiwgYXV0bywgYXV0bykgewotICAgICAgICBpZiAoIXN1
Y2NlZWRlZCkgewotICAgICAgICAgICAgbV9wcm94eS5kaWRGYWlsKFdURk1vdmUoZXJyb3JNZXNz
YWdlKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBzZXRTZXR0
aW5ncyhXVEZNb3ZlKHNldHRpbmdzKSk7Ci0gICAgICAgIHNldENhcGFiaWxpdGllcyhXVEZNb3Zl
KGNhcGFiaWxpdGllcykpOwotICAgICAgICBzZXROYW1lKFN0cmluZyB7IG1fc2V0dGluZ3MubGFi
ZWwoKS5zdHJpbmcoKSB9KTsKLQotICAgICAgICBtX3Byb3h5LnNldEFzUmVhZHkoKTsKLSAgICAg
ICAgaWYgKG1fcHJveHkuc2hvdWxkQ2FwdHVyZUluR1BVUHJvY2VzcygpKQotICAgICAgICAgICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5hZGRD
bGllbnQoKnRoaXMpOwotICAgIH0pOwotfQotCiBSZW1vdGVSZWFsdGltZUF1ZGlvU291cmNlOjp+
UmVtb3RlUmVhbHRpbWVBdWRpb1NvdXJjZSgpCiB7Ci0gICAgaWYgKG1fcHJveHkuc2hvdWxkQ2Fw
dHVyZUluR1BVUHJvY2VzcygpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0gV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkuZXhpc3RpbmdHUFVQcm9jZXNzQ29ubmVjdGlvbigpKQotICAg
ICAgICAgICAgY29ubmVjdGlvbi0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsKLSAgICB9Ci19Ci0KLXZv
aWQgUmVtb3RlUmVhbHRpbWVBdWRpb1NvdXJjZTo6c2V0Q2FwYWJpbGl0aWVzKFJlYWx0aW1lTWVk
aWFTb3VyY2VDYXBhYmlsaXRpZXMmJiBjYXBhYmlsaXRpZXMpCi17Ci0gICAgbV9jYXBhYmlsaXRp
ZXMgPSBXVEZNb3ZlKGNhcGFiaWxpdGllcyk7Ci19Ci0KLXZvaWQgUmVtb3RlUmVhbHRpbWVBdWRp
b1NvdXJjZTo6c2V0U2V0dGluZ3MoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiYgc2V0dGlu
Z3MpCi17Ci0gICAgYXV0byBjaGFuZ2VkID0gbV9zZXR0aW5ncy5kaWZmZXJlbmNlKHNldHRpbmdz
KTsKLSAgICBtX3NldHRpbmdzID0gV1RGTW92ZShzZXR0aW5ncyk7Ci0gICAgbm90aWZ5U2V0dGlu
Z3NEaWRDaGFuZ2VPYnNlcnZlcnMoY2hhbmdlZCk7Ci19Ci0KLXZvaWQgUmVtb3RlUmVhbHRpbWVB
dWRpb1NvdXJjZTo6YXBwbHlDb25zdHJhaW50c1N1Y2NlZWRlZChXZWJDb3JlOjpSZWFsdGltZU1l
ZGlhU291cmNlU2V0dGluZ3MmJiBzZXR0aW5ncykKLXsKLSAgICBzZXRTZXR0aW5ncyhXVEZNb3Zl
KHNldHRpbmdzKSk7Ci0gICAgbV9wcm94eS5hcHBseUNvbnN0cmFpbnRzU3VjY2VlZGVkKCk7Cisg
ICAgcmVtb3ZlQXNDbGllbnQoKTsKIH0KIAogdm9pZCBSZW1vdGVSZWFsdGltZUF1ZGlvU291cmNl
OjpyZW1vdGVBdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgTWVkaWFUaW1lJiB0aW1lLCBjb25z
dCBQbGF0Zm9ybUF1ZGlvRGF0YSYgZGF0YSwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYg
ZGVzY3JpcHRpb24sIHNpemVfdCBzaXplKQpAQCAtMTEwLDUyICs2MSw2IEBAIHZvaWQgUmVtb3Rl
UmVhbHRpbWVBdWRpb1NvdXJjZTo6cmVtb3RlQXVkaW9TYW1wbGVzQXZhaWxhYmxlKGNvbnN0IE1l
ZGlhVGltZSYgdGltCiAgICAgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKHRpbWUsIGRhdGEsIGRlc2Ny
aXB0aW9uLCBzaXplKTsKIH0KIAotdm9pZCBSZW1vdGVSZWFsdGltZUF1ZGlvU291cmNlOjpoYXNF
bmRlZCgpCi17Ci0gICAgaWYgKG1fcHJveHkuaXNFbmRlZCgpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBtX3Byb3h5LmVuZCgpOwotICAgIG1fbWFuYWdlci5yZW1vdmVTb3VyY2UoaWRlbnRpZmll
cigpKTsKLSAgICBtX21hbmFnZXIucmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIoKS5yZW1vdmVT
b3VyY2UoaWRlbnRpZmllcigpKTsKLX0KLQotdm9pZCBSZW1vdGVSZWFsdGltZUF1ZGlvU291cmNl
OjpjYXB0dXJlU3RvcHBlZChib29sIGRpZEZhaWwpCi17Ci0gICAgaWYgKGRpZEZhaWwpCi0gICAg
ICAgIGNhcHR1cmVGYWlsZWQoKTsKLSAgICBlbHNlCi0gICAgICAgIGVuZCgpOwotICAgIGhhc0Vu
ZGVkKCk7Ci19Ci0KLXZvaWQgUmVtb3RlUmVhbHRpbWVBdWRpb1NvdXJjZTo6YXBwbHlDb25zdHJh
aW50cyhjb25zdCBNZWRpYUNvbnN0cmFpbnRzJiBjb25zdHJhaW50cywgQXBwbHlDb25zdHJhaW50
c0hhbmRsZXImJiBjYWxsYmFjaykKLXsKLSAgICBtX2NvbnN0cmFpbnRzID0gY29uc3RyYWludHM7
Ci0gICAgbV9wcm94eS5hcHBseUNvbnN0cmFpbnRzKGNvbnN0cmFpbnRzLCBXVEZNb3ZlKGNhbGxi
YWNrKSk7Ci19Ci0KLSNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCi12b2lkIFJlbW90ZVJlYWx0aW1l
QXVkaW9Tb3VyY2U6OmdwdVByb2Nlc3NDb25uZWN0aW9uRGlkQ2xvc2UoR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb24mKQotewotICAgIEFTU0VSVChtX3Byb3h5LnNob3VsZENhcHR1cmVJbkdQVVByb2Nlc3Mo
KSk7Ci0gICAgaWYgKGlzRW5kZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9tYW5hZ2Vy
LnJlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyKCkuZGlkVXBkYXRlU291cmNlQ29ubmVjdGlvbihj
b25uZWN0aW9uKCkpOwotICAgIG1fcHJveHkucmVzZXRSZWFkeSgpOwotICAgIGNyZWF0ZVJlbW90
ZU1lZGlhU291cmNlKCk7Ci0KLSAgICBtX3Byb3h5LmZhaWxBcHBseUNvbnN0cmFpbnRDYWxsYmFj
a3MoIkdQVSBQcm9jZXNzIHRlcm1pbmF0ZWQiX3MpOwotICAgIGlmIChtX2NvbnN0cmFpbnRzKQot
ICAgICAgICBtX3Byb3h5LmFwcGx5Q29uc3RyYWludHMoKm1fY29uc3RyYWludHMsIFtdKGF1dG8p
IHsgfSk7Ci0KLSAgICBpZiAoaXNQcm9kdWNpbmdEYXRhKCkpCi0gICAgICAgIHN0YXJ0UHJvZHVj
aW5nRGF0YSgpOwotCi19Ci0jZW5kaWYKLQogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVSZWFsdGltZUF1ZGlvU291cmNlLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVtb3RlUmVhbHRpbWVBdWRpb1NvdXJjZS5o
CmluZGV4IDVjYzAxZjEzYjBmYTM4YmU5YzFlODA2ZmY2ZmFjYTVkZmU4MmRhNmYuLmE4NzM1M2Fk
MTYzNjZiMDM1MGI5MjQ0ZjkzOWYwYTI4ZGJiNjdjZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVSZWFsdGltZUF1ZGlvU291cmNlLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZVJlYWx0aW1lQXVkaW9Tb3VyY2UuaApA
QCAtMjcsODYgKzI3LDIxIEBACiAKICNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKIAotI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uLmgiCi0jaW5jbHVkZSAi
UmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZVByb3h5LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9DYXB0
dXJlRGV2aWNlLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9SZWFsdGltZU1lZGlhU291cmNlSWRlbnRp
Zmllci5oPgotI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgotCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNz
IENvbm5lY3Rpb247Ci19Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIENBQXVkaW9TdHJl
YW1EZXNjcmlwdGlvbjsKLWNsYXNzIEltYWdlVHJhbnNmZXJTZXNzaW9uVlQ7Ci1zdHJ1Y3QgTWVk
aWFDb25zdHJhaW50czsKLX0KKyNpbmNsdWRlICJSZW1vdGVSZWFsdGltZU1lZGlhU291cmNlLmgi
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjsK
LQotY2xhc3MgUmVtb3RlUmVhbHRpbWVBdWRpb1NvdXJjZSBmaW5hbCA6IHB1YmxpYyBXZWJDb3Jl
OjpSZWFsdGltZU1lZGlhU291cmNlCi0jaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQotICAgICwgcHVi
bGljIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpDbGllbnQKLSNlbmRpZgoteworY2xhc3MgUmVtb3Rl
UmVhbHRpbWVBdWRpb1NvdXJjZSBmaW5hbCA6IHB1YmxpYyBSZW1vdGVSZWFsdGltZU1lZGlhU291
cmNlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3Vy
Y2U+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpDYXB0dXJlRGV2aWNlJiwgY29uc3QgV2ViQ29yZTo6
TWVkaWFDb25zdHJhaW50cyosIFN0cmluZyYmIG5hbWUsIFN0cmluZyYmIGhhc2hTYWx0LCBVc2Vy
TWVkaWFDYXB0dXJlTWFuYWdlciYsIGJvb2wgc2hvdWxkQ2FwdHVyZUluR1BVUHJvY2VzcywgV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIpOwogICAgIH5SZW1vdGVSZWFsdGltZUF1ZGlvU291cmNlKCk7
CiAKLSAgICBXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciBpZGVudGlmaWVy
KCkgY29uc3QgeyByZXR1cm4gbV9wcm94eS5pZGVudGlmaWVyKCk7IH0KLSAgICBJUEM6OkNvbm5l
Y3Rpb24qIGNvbm5lY3Rpb24oKSB7IHJldHVybiBtX3Byb3h5LmNvbm5lY3Rpb24oKTsgfQotCi0g
ICAgdm9pZCBzZXRTZXR0aW5ncyhXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3Mm
Jik7Ci0KLSAgICB2b2lkIGFwcGx5Q29uc3RyYWludHNTdWNjZWVkZWQoV2ViQ29yZTo6UmVhbHRp
bWVNZWRpYVNvdXJjZVNldHRpbmdzJiYpOwotICAgIHZvaWQgYXBwbHlDb25zdHJhaW50c0ZhaWxl
ZChTdHJpbmcmJiBmYWlsZWRDb25zdHJhaW50LCBTdHJpbmcmJiBlcnJvck1lc3NhZ2UpIHsgbV9w
cm94eS5hcHBseUNvbnN0cmFpbnRzRmFpbGVkKFdURk1vdmUoZmFpbGVkQ29uc3RyYWludCksIFdU
Rk1vdmUoZXJyb3JNZXNzYWdlKSk7IH0KLQotICAgIHZvaWQgY2FwdHVyZVN0b3BwZWQoYm9vbCBk
aWRGYWlsKTsKLQogICAgIHZvaWQgcmVtb3RlQXVkaW9TYW1wbGVzQXZhaWxhYmxlKGNvbnN0IE1l
ZGlhVGltZSYsIGNvbnN0IFdlYkNvcmU6OlBsYXRmb3JtQXVkaW9EYXRhJiwgY29uc3QgV2ViQ29y
ZTo6QXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHNpemVfdCk7Ci0gICAgdm9pZCBzb3VyY2VNdXRl
ZENoYW5nZWQoYm9vbCB2YWx1ZSwgYm9vbCBpbnRlcnJ1cHRlZCk7CiAKIHByaXZhdGU6CiAgICAg
UmVtb3RlUmVhbHRpbWVBdWRpb1NvdXJjZShXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRl
bnRpZmllciwgY29uc3QgV2ViQ29yZTo6Q2FwdHVyZURldmljZSYsIGNvbnN0IFdlYkNvcmU6Ok1l
ZGlhQ29uc3RyYWludHMqLCBTdHJpbmcmJiBuYW1lLCBTdHJpbmcmJiBoYXNoU2FsdCwgVXNlck1l
ZGlhQ2FwdHVyZU1hbmFnZXImLCBib29sIHNob3VsZENhcHR1cmVJbkdQVVByb2Nlc3MsIFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyKTsKLQotICAgIC8vIFJlYWx0aW1lTWVkaWFTb3VyY2UKLSAgICB2
b2lkIHN0YXJ0UHJvZHVjaW5nRGF0YSgpIGZpbmFsIHsgbV9wcm94eS5zdGFydFByb2R1Y2luZ0Rh
dGEoKTsgfQotICAgIHZvaWQgc3RvcFByb2R1Y2luZ0RhdGEoKSBmaW5hbCB7IG1fcHJveHkuc3Rv
cFByb2R1Y2luZ0RhdGEoKTsgfQotICAgIGJvb2wgaXNDYXB0dXJlU291cmNlKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZvaWQgYmVnaW5Db25maWd1cmF0aW9uKCkgZmluYWwg
eyB9Ci0gICAgdm9pZCBjb21taXRDb25maWd1cmF0aW9uKCkgZmluYWwgeyB9Ci0gICAgdm9pZCBh
cHBseUNvbnN0cmFpbnRzKGNvbnN0IFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludHMmLCBBcHBseUNv
bnN0cmFpbnRzSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGhhc0VuZGVkKCkgZmluYWw7Ci0g
ICAgY29uc3QgV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBzZXR0aW5ncygp
IGZpbmFsIHsgcmV0dXJuIG1fc2V0dGluZ3M7IH0KLSAgICBjb25zdCBXZWJDb3JlOjpSZWFsdGlt
ZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBjYXBhYmlsaXRpZXMoKSBmaW5hbCB7IHJldHVybiBt
X2NhcGFiaWxpdGllczsgfQotICAgIHZvaWQgd2hlblJlYWR5KENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoU3RyaW5nKT4mJiBjYWxsYmFjaykgZmluYWwgeyBtX3Byb3h5LndoZW5SZWFkeShXVEZNb3Zl
KGNhbGxiYWNrKSk7IH0KLSAgICBXZWJDb3JlOjpDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlIGRl
dmljZVR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3h5LmRldmljZVR5cGUoKTsgfQot
ICAgIGJvb2wgaW50ZXJydXB0ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3h5LmludGVy
cnVwdGVkKCk7IH0KLQotI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKLSAgICAvLyBHUFVQcm9jZXNz
Q29ubmVjdGlvbjo6Q2xpZW50Ci0gICAgdm9pZCBncHVQcm9jZXNzQ29ubmVjdGlvbkRpZENsb3Nl
KEdQVVByb2Nlc3NDb25uZWN0aW9uJikgZmluYWw7Ci0jZW5kaWYKLQotICAgIHZvaWQgY3JlYXRl
UmVtb3RlTWVkaWFTb3VyY2UoKTsKLSAgICB2b2lkIHNldENhcGFiaWxpdGllcyhXZWJDb3JlOjpS
ZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiYpOwotCi0gICAgUmVtb3RlUmVhbHRpbWVN
ZWRpYVNvdXJjZVByb3h5IG1fcHJveHk7Ci0gICAgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXImIG1f
bWFuYWdlcjsKLSAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludHM+IG1f
Y29uc3RyYWludHM7Ci0gICAgV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGll
cyBtX2NhcGFiaWxpdGllczsKLSAgICBXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlU2V0dGlu
Z3MgbV9zZXR0aW5nczsKIH07CiAKLWlubGluZSB2b2lkIFJlbW90ZVJlYWx0aW1lQXVkaW9Tb3Vy
Y2U6OnNvdXJjZU11dGVkQ2hhbmdlZChib29sIG11dGVkLCBib29sIGludGVycnVwdGVkKQotewot
ICAgIG1fcHJveHkuc2V0SW50ZXJydXB0ZWQoaW50ZXJydXB0ZWQpOwotICAgIG5vdGlmeU11dGVk
Q2hhbmdlKG11dGVkKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZVJlYWx0aW1lTWVk
aWFTb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZVJlYWx0
aW1lTWVkaWFTb3VyY2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4MzQ4YzA0OTljMzVjMzRjYWU3ZGM3MzE2
NDI3MGQwYWM5YzcyNmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvY29jb2EvUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAKQEAgLTAsMCArMSwxNjUgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlUmVhbHRp
bWVNZWRpYVNvdXJjZS5oIgorCisjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShNRURJQV9T
VFJFQU0pCisKKyNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIlVz
ZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1
ZGUgPFdlYkNvcmUvTWVkaWFDb25zdHJhaW50cy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitzdGF0aWMgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlw
ZSB0b1NvdXJjZVR5cGUoQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZSB0eXBlKQoreworICAgIHN3
aXRjaCAodHlwZSkgeworICAgIGNhc2UgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6TWljcm9w
aG9uZToKKyAgICAgICAgcmV0dXJuIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvOwor
ICAgIGNhc2UgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6Q2FtZXJhOgorICAgICAgICByZXR1
cm4gUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6VmlkZW87CisgICAgY2FzZSBDYXB0dXJlRGV2
aWNlOjpEZXZpY2VUeXBlOjpTY3JlZW46CisgICAgICAgIHJldHVybiBSZWFsdGltZU1lZGlhU291
cmNlOjpUeXBlOjpTY3JlZW47CisgICAgY2FzZSBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpX
aW5kb3c6CisgICAgICAgIHJldHVybiBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpXaW5kb3c7
CisgICAgY2FzZSBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpTeXN0ZW1BdWRpbzoKKyAgICAg
ICAgcmV0dXJuIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlN5c3RlbUF1ZGlvOworICAgIGNh
c2UgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6VW5rbm93bjoKKyAgICBjYXNlIENhcHR1cmVE
ZXZpY2U6OkRldmljZVR5cGU6OlNwZWFrZXI6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICByZXR1cm4gUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6QXVkaW87CisgICAg
fQorfQorCitSZW1vdGVSZWFsdGltZU1lZGlhU291cmNlOjpSZW1vdGVSZWFsdGltZU1lZGlhU291
cmNlKFJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IENhcHR1
cmVEZXZpY2UmIGRldmljZSwgY29uc3QgTWVkaWFDb25zdHJhaW50cyogY29uc3RyYWludHMsIFN0
cmluZyYmIG5hbWUsIFN0cmluZyYmIGhhc2hTYWx0LCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlciYg
bWFuYWdlciwgYm9vbCBzaG91bGRDYXB0dXJlSW5HUFVQcm9jZXNzLCBQYWdlSWRlbnRpZmllciBw
YWdlSWRlbnRpZmllcikKKyAgICA6IFJlYWx0aW1lTWVkaWFTb3VyY2UodG9Tb3VyY2VUeXBlKGRl
dmljZS50eXBlKCkpLCBXVEZNb3ZlKG5hbWUpLCBTdHJpbmcgeyBkZXZpY2UucGVyc2lzdGVudElk
KCkgfSwgV1RGTW92ZShoYXNoU2FsdCksIHBhZ2VJZGVudGlmaWVyKQorICAgICwgbV9wcm94eShp
ZGVudGlmaWVyLCBkZXZpY2UsIHNob3VsZENhcHR1cmVJbkdQVVByb2Nlc3MsIGNvbnN0cmFpbnRz
KQorICAgICwgbV9tYW5hZ2VyKG1hbmFnZXIpCit7Cit9CisKK1JlbW90ZVJlYWx0aW1lTWVkaWFT
b3VyY2U6OlJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2UoUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJj
ZVByb3h5JiYgcHJveHksIFN0cmluZyYmIG5hbWUsIFN0cmluZyYmIGhhc2hTYWx0LCBVc2VyTWVk
aWFDYXB0dXJlTWFuYWdlciYgbWFuYWdlcikKKyAgICA6IFJlYWx0aW1lTWVkaWFTb3VyY2UodG9T
b3VyY2VUeXBlKHByb3h5LmRldmljZSgpLnR5cGUoKSksIFdURk1vdmUobmFtZSksIFN0cmluZyB7
IHByb3h5LmRldmljZSgpLnBlcnNpc3RlbnRJZCgpIH0sIFdURk1vdmUoaGFzaFNhbHQpLCBwcm94
eS5wYWdlSWRlbnRpZmllcigpKQorICAgICwgbV9wcm94eShXVEZNb3ZlKHByb3h5KSkKKyAgICAs
IG1fbWFuYWdlcihtYW5hZ2VyKQoreworfQorCit2b2lkIFJlbW90ZVJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OmNyZWF0ZVJlbW90ZU1lZGlhU291cmNlKCkKK3sKKyAgICBtX3Byb3h5LmNyZWF0ZVJlbW90
ZU1lZGlhU291cmNlKGRldmljZUlESGFzaFNhbHQoKSwgcGFnZUlkZW50aWZpZXIoKSwgW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XShib29sIHN1Y2NlZWRlZCwgYXV0byYmIGVy
cm9yTWVzc2FnZSwgYXV0byYmIHNldHRpbmdzLCBhdXRvJiYgY2FwYWJpbGl0aWVzLCBhdXRvJiYs
IGF1dG8sIGF1dG8pIHsKKyAgICAgICAgaWYgKCFzdWNjZWVkZWQpIHsKKyAgICAgICAgICAgIG1f
cHJveHkuZGlkRmFpbChXVEZNb3ZlKGVycm9yTWVzc2FnZSkpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisKKyAgICAgICAgc2V0U2V0dGluZ3MoV1RGTW92ZShzZXR0aW5ncykpOwor
ICAgICAgICBzZXRDYXBhYmlsaXRpZXMoV1RGTW92ZShjYXBhYmlsaXRpZXMpKTsKKyAgICAgICAg
c2V0TmFtZShTdHJpbmcgeyBtX3NldHRpbmdzLmxhYmVsKCkuc3RyaW5nKCkgfSk7CisKKyAgICAg
ICAgbV9wcm94eS5zZXRBc1JlYWR5KCk7CisgICAgICAgIGlmIChtX3Byb3h5LnNob3VsZENhcHR1
cmVJbkdQVVByb2Nlc3MoKSkKKyAgICAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVu
c3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuYWRkQ2xpZW50KCp0aGlzKTsKKyAgICB9LCBtX3By
b3h5LnNob3VsZENhcHR1cmVJbkdQVVByb2Nlc3MoKSAmJiBtX21hbmFnZXIuc2hvdWxkVXNlR1BV
UHJvY2Vzc1JlbW90ZUZyYW1lcygpKTsKK30KKwordm9pZCBSZW1vdGVSZWFsdGltZU1lZGlhU291
cmNlOjpyZW1vdmVBc0NsaWVudCgpCit7CisgICAgaWYgKG1fcHJveHkuc2hvdWxkQ2FwdHVyZUlu
R1BVUHJvY2VzcygpKSB7CisgICAgICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0gV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkuZXhpc3RpbmdHUFVQcm9jZXNzQ29ubmVjdGlvbigpKQorICAgICAgICAg
ICAgY29ubmVjdGlvbi0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsKKyAgICB9Cit9CisKK3ZvaWQgUmVt
b3RlUmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0Q2FwYWJpbGl0aWVzKFJlYWx0aW1lTWVkaWFTb3Vy
Y2VDYXBhYmlsaXRpZXMmJiBjYXBhYmlsaXRpZXMpCit7CisgICAgbV9jYXBhYmlsaXRpZXMgPSBX
VEZNb3ZlKGNhcGFiaWxpdGllcyk7Cit9CisKK3ZvaWQgUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6c2V0U2V0dGluZ3MoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiYgc2V0dGluZ3MpCit7
CisgICAgYXV0byBjaGFuZ2VkID0gbV9zZXR0aW5ncy5kaWZmZXJlbmNlKHNldHRpbmdzKTsKKyAg
ICBtX3NldHRpbmdzID0gV1RGTW92ZShzZXR0aW5ncyk7CisgICAgbm90aWZ5U2V0dGluZ3NEaWRD
aGFuZ2VPYnNlcnZlcnMoY2hhbmdlZCk7Cit9CisKK3ZvaWQgUmVtb3RlUmVhbHRpbWVNZWRpYVNv
dXJjZTo6YXBwbHlDb25zdHJhaW50c1N1Y2NlZWRlZChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291
cmNlU2V0dGluZ3MmJiBzZXR0aW5ncykKK3sKKyAgICBzZXRTZXR0aW5ncyhXVEZNb3ZlKHNldHRp
bmdzKSk7CisgICAgbV9wcm94eS5hcHBseUNvbnN0cmFpbnRzU3VjY2VlZGVkKCk7Cit9CisKK3Zv
aWQgUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZTo6aGFzRW5kZWQoKQoreworICAgIGlmIChtX3By
b3h5LmlzRW5kZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9wcm94eS5lbmQoKTsKKyAg
ICBtX21hbmFnZXIucmVtb3ZlU291cmNlKGlkZW50aWZpZXIoKSk7CisgICAgbV9tYW5hZ2VyLnJl
bW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyKCkucmVtb3ZlU291cmNlKGlkZW50aWZpZXIoKSk7Cit9
CisKK3ZvaWQgUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZTo6Y2FwdHVyZVN0b3BwZWQoYm9vbCBk
aWRGYWlsKQoreworICAgIGlmIChkaWRGYWlsKQorICAgICAgICBjYXB0dXJlRmFpbGVkKCk7Cisg
ICAgZWxzZQorICAgICAgICBlbmQoKTsKKyAgICBoYXNFbmRlZCgpOworfQorCit2b2lkIFJlbW90
ZVJlYWx0aW1lTWVkaWFTb3VyY2U6OmFwcGx5Q29uc3RyYWludHMoY29uc3QgTWVkaWFDb25zdHJh
aW50cyYgY29uc3RyYWludHMsIEFwcGx5Q29uc3RyYWludHNIYW5kbGVyJiYgY2FsbGJhY2spCit7
CisgICAgbV9jb25zdHJhaW50cyA9IGNvbnN0cmFpbnRzOworICAgIG1fcHJveHkuYXBwbHlDb25z
dHJhaW50cyhjb25zdHJhaW50cywgV1RGTW92ZShjYWxsYmFjaykpOworfQorCisjaWYgRU5BQkxF
KEdQVV9QUk9DRVNTKQordm9pZCBSZW1vdGVSZWFsdGltZU1lZGlhU291cmNlOjpncHVQcm9jZXNz
Q29ubmVjdGlvbkRpZENsb3NlKEdQVVByb2Nlc3NDb25uZWN0aW9uJikKK3sKKyAgICBBU1NFUlQo
bV9wcm94eS5zaG91bGRDYXB0dXJlSW5HUFVQcm9jZXNzKCkpOworICAgIGlmIChpc0VuZGVkKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIG1fbWFuYWdlci5yZW1vdGVDYXB0dXJlU2FtcGxlTWFu
YWdlcigpLmRpZFVwZGF0ZVNvdXJjZUNvbm5lY3Rpb24oY29ubmVjdGlvbigpKTsKKyAgICBtX3By
b3h5LnJlc2V0UmVhZHkoKTsKKyAgICBjcmVhdGVSZW1vdGVNZWRpYVNvdXJjZSgpOworCisgICAg
bV9wcm94eS5mYWlsQXBwbHlDb25zdHJhaW50Q2FsbGJhY2tzKCJHUFUgUHJvY2VzcyB0ZXJtaW5h
dGVkIl9zKTsKKyAgICBpZiAobV9jb25zdHJhaW50cykKKyAgICAgICAgbV9wcm94eS5hcHBseUNv
bnN0cmFpbnRzKCptX2NvbnN0cmFpbnRzLCBbXShhdXRvKSB7IH0pOworCisgICAgaWYgKGlzUHJv
ZHVjaW5nRGF0YSgpKQorICAgICAgICBzdGFydFByb2R1Y2luZ0RhdGEoKTsKKworfQorI2VuZGlm
CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29j
b2EvUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L2NvY29hL1JlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZjVkMzIyZTMx
NzYxZTkyNzAyZTc1Mzk0MzgwOTEzMzZlOGE4YWQ2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2UuaApAQCAt
MCwwICsxLDEwMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgUExBVEZPUk0o
Q09DT0EpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJHUFVQcm9jZXNzQ29u
bmVjdGlvbi5oIgorI2luY2x1ZGUgIlJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VQcm94eS5oIgor
I2luY2x1ZGUgPFdlYkNvcmUvUmVhbHRpbWVNZWRpYVNvdXJjZS5oPgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworY2xhc3MgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI7CisKK2NsYXNzIFJlbW90ZVJl
YWx0aW1lTWVkaWFTb3VyY2UgOiBwdWJsaWMgV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZQor
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKyAgICAsIHB1YmxpYyBHUFVQcm9jZXNzQ29ubmVjdGlv
bjo6Q2xpZW50CisjZW5kaWYKK3sKK3B1YmxpYzoKKyAgICBSZW1vdGVSZWFsdGltZU1lZGlhU291
cmNlKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyLCBjb25zdCBXZWJDb3Jl
OjpDYXB0dXJlRGV2aWNlJiwgY29uc3QgV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50cyosIFN0cmlu
ZyYmIG5hbWUsIFN0cmluZyYmIGhhc2hTYWx0LCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlciYsIGJv
b2wgc2hvdWxkQ2FwdHVyZUluR1BVUHJvY2VzcywgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwor
ICAgIFJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2UoUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZVBy
b3h5JiYsIFN0cmluZyYmIG5hbWUsIFN0cmluZyYmIGhhc2hTYWx0LCBVc2VyTWVkaWFDYXB0dXJl
TWFuYWdlciYpOworCisgICAgV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIg
aWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fcHJveHkuaWRlbnRpZmllcigpOyB9CisgICAg
SVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uKCkgeyByZXR1cm4gbV9wcm94eS5jb25uZWN0aW9u
KCk7IH0KKworICAgIHZvaWQgc2V0U2V0dGluZ3MoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJj
ZVNldHRpbmdzJiYpOworCisgICAgdm9pZCBhcHBseUNvbnN0cmFpbnRzU3VjY2VlZGVkKFdlYkNv
cmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYmKTsKKyAgICB2b2lkIGFwcGx5Q29uc3Ry
YWludHNGYWlsZWQoU3RyaW5nJiYgZmFpbGVkQ29uc3RyYWludCwgU3RyaW5nJiYgZXJyb3JNZXNz
YWdlKSB7IG1fcHJveHkuYXBwbHlDb25zdHJhaW50c0ZhaWxlZChXVEZNb3ZlKGZhaWxlZENvbnN0
cmFpbnQpLCBXVEZNb3ZlKGVycm9yTWVzc2FnZSkpOyB9CisKKyAgICB2b2lkIGNhcHR1cmVTdG9w
cGVkKGJvb2wgZGlkRmFpbCk7CisgICAgdm9pZCBzb3VyY2VNdXRlZENoYW5nZWQoYm9vbCB2YWx1
ZSwgYm9vbCBpbnRlcnJ1cHRlZCk7CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGNyZWF0ZVJlbW90
ZU1lZGlhU291cmNlKCk7CisgICAgdm9pZCByZW1vdmVBc0NsaWVudCgpOworCisgICAgUmVtb3Rl
UmVhbHRpbWVNZWRpYVNvdXJjZVByb3h5JiBwcm94eSgpIHsgcmV0dXJuIG1fcHJveHk7IH0KKyAg
ICBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlciYgbWFuYWdlcigpIHsgcmV0dXJuIG1fbWFuYWdlcjsg
fQorCisgICAgdm9pZCBzZXRDYXBhYmlsaXRpZXMoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJj
ZUNhcGFiaWxpdGllcyYmKTsKKworICAgIGNvbnN0IFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3Vy
Y2VTZXR0aW5ncyYgc2V0dGluZ3MoKSBmaW5hbCB7IHJldHVybiBtX3NldHRpbmdzOyB9CisgICAg
Y29uc3QgV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYgY2FwYWJpbGl0
aWVzKCkgZmluYWwgeyByZXR1cm4gbV9jYXBhYmlsaXRpZXM7IH0KKworcHJpdmF0ZToKKyAgICAv
LyBSZWFsdGltZU1lZGlhU291cmNlCisgICAgdm9pZCBzdGFydFByb2R1Y2luZ0RhdGEoKSBmaW5h
bCB7IG1fcHJveHkuc3RhcnRQcm9kdWNpbmdEYXRhKCk7IH0KKyAgICB2b2lkIHN0b3BQcm9kdWNp
bmdEYXRhKCkgZmluYWwgeyBtX3Byb3h5LnN0b3BQcm9kdWNpbmdEYXRhKCk7IH0KKyAgICBib29s
IGlzQ2FwdHVyZVNvdXJjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2b2lk
IGFwcGx5Q29uc3RyYWludHMoY29uc3QgV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50cyYsIEFwcGx5
Q29uc3RyYWludHNIYW5kbGVyJiYpIGZpbmFsOworICAgIHZvaWQgaGFzRW5kZWQoKSBmaW5hbDsK
KyAgICB2b2lkIHdoZW5SZWFkeShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyk+JiYgY2Fs
bGJhY2spIGZpbmFsIHsgbV9wcm94eS53aGVuUmVhZHkoV1RGTW92ZShjYWxsYmFjaykpOyB9Cisg
ICAgV2ViQ29yZTo6Q2FwdHVyZURldmljZTo6RGV2aWNlVHlwZSBkZXZpY2VUeXBlKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9wcm94eS5kZXZpY2VUeXBlKCk7IH0KKyAgICBib29sIGludGVycnVw
dGVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wcm94eS5pbnRlcnJ1cHRlZCgpOyB9CisKKyNp
ZiBFTkFCTEUoR1BVX1BST0NFU1MpCisgICAgLy8gR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OkNsaWVu
dAorICAgIHZvaWQgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb25EaWRDbG9zZShHUFVQcm9jZXNzQ29ubmVj
dGlvbiYpIGZpbmFsOworI2VuZGlmCisKKyAgICBSZW1vdGVSZWFsdGltZU1lZGlhU291cmNlUHJv
eHkgbV9wcm94eTsKKyAgICBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlciYgbV9tYW5hZ2VyOworICAg
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6TWVkaWFDb25zdHJhaW50cz4gbV9jb25zdHJhaW50czsK
KyAgICBXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzIG1fY2FwYWJpbGl0
aWVzOworICAgIFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyBtX3NldHRpbmdz
OworfTsKKworaW5saW5lIHZvaWQgUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZTo6c291cmNlTXV0
ZWRDaGFuZ2VkKGJvb2wgbXV0ZWQsIGJvb2wgaW50ZXJydXB0ZWQpCit7CisgICAgbV9wcm94eS5z
ZXRJbnRlcnJ1cHRlZChpbnRlcnJ1cHRlZCk7CisgICAgbm90aWZ5TXV0ZWRDaGFuZ2UobXV0ZWQp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZVByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVtb3RlUmVhbHRpbWVNZWRpYVNv
dXJjZVByb3h5LmgKaW5kZXggYzQ0YzRiZTU4NzdhYzJhMTI1ZGM4NWI1MDJjZDdiM2U5YzEyOWNi
ZC4uZjRhOGUzY2NkNDJhZGZkNTk2MTU4NTUxNGJmNDNiYWY2MTkyNGZkNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVSZWFsdGlt
ZU1lZGlhU291cmNlUHJveHkuaApAQCAtNTIsNiArNTIsNyBAQCBwdWJsaWM6CiAKICAgICBJUEM6
OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24oKTsKICAgICBXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291
cmNlSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9
CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlkZW50aWZpZXIoKSBjb25zdCB7IHJl
dHVybiBtX3BhZ2VJZGVudGlmaWVyOyB9CiAgICAgV2ViQ29yZTo6Q2FwdHVyZURldmljZTo6RGV2
aWNlVHlwZSBkZXZpY2VUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9kZXZpY2UudHlwZSgpOyB9CiAg
ICAgY29uc3QgV2ViQ29yZTo6Q2FwdHVyZURldmljZSYgZGV2aWNlKCkgY29uc3QgeyByZXR1cm4g
bV9kZXZpY2U7IH0KICAgICBib29sIHNob3VsZENhcHR1cmVJbkdQVVByb2Nlc3MoKSBjb25zdCB7
IHJldHVybiBtX3Nob3VsZENhcHR1cmVJbkdQVVByb2Nlc3M7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVSZWFsdGltZVZpZGVvU291cmNlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVSZWFsdGltZVZpZGVvU291cmNl
LmNwcAppbmRleCA4ODkzMGMyZWNjYTg2NmYwMTU2ZTJjZGRkNjE3ZWIyYTVhNDgzMzA2Li4zYzQ3
YWJiZDBkOTZjNWU1YzZjODg5ZTkyNjQ4MzE2YjJhOGE0NTU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVtb3RlUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZVJlYWx0aW1lVmlkZW9Tb3Vy
Y2UuY3BwCkBAIC0yOSwxMSArMjksNiBAQAogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUo
TUVESUFfU1RSRUFNKQogCiAjaW5jbHVkZSAiVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuaCIKLSNp
bmNsdWRlICJVc2VyTWVkaWFDYXB0dXJlTWFuYWdlck1lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiVXNl
ck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmgiCi0jaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgotI2luY2x1ZGUgPFdlYkNv
cmUvTWVkaWFDb25zdHJhaW50cy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwpAQCAtNDgsNTkgKzQzLDIzIEBAIFJlZjxSZWFsdGltZU1lZGlhU291cmNl
PiBSZW1vdGVSZWFsdGltZVZpZGVvU291cmNlOjpjcmVhdGUoY29uc3QgQ2FwdHVyZURldmljZSYK
IH0KIAogUmVtb3RlUmVhbHRpbWVWaWRlb1NvdXJjZTo6UmVtb3RlUmVhbHRpbWVWaWRlb1NvdXJj
ZShSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBDYXB0dXJl
RGV2aWNlJiBkZXZpY2UsIGNvbnN0IE1lZGlhQ29uc3RyYWludHMqIGNvbnN0cmFpbnRzLCBTdHJp
bmcmJiBoYXNoU2FsdCwgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXImIG1hbmFnZXIsIGJvb2wgc2hv
dWxkQ2FwdHVyZUluR1BVUHJvY2VzcywgUGFnZUlkZW50aWZpZXIgcGFnZUlkZW50aWZpZXIpCi0g
ICAgOiBSZWFsdGltZU1lZGlhU291cmNlKFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlZpZGVv
LCBTdHJpbmcgeyBkZXZpY2UubGFiZWwoKSB9LCBTdHJpbmcgeyBkZXZpY2UucGVyc2lzdGVudElk
KCkgfSwgV1RGTW92ZShoYXNoU2FsdCksIHBhZ2VJZGVudGlmaWVyKQotICAgICwgbV9wcm94eShp
ZGVudGlmaWVyLCBkZXZpY2UsIHNob3VsZENhcHR1cmVJbkdQVVByb2Nlc3MsIGNvbnN0cmFpbnRz
KQotICAgICwgbV9tYW5hZ2VyKG1hbmFnZXIpCisgICAgOiBSZW1vdGVSZWFsdGltZU1lZGlhU291
cmNlKGlkZW50aWZpZXIsIGRldmljZSwgY29uc3RyYWludHMsIFN0cmluZyB7IGRldmljZS5sYWJl
bCgpIH0sIFdURk1vdmUoaGFzaFNhbHQpLCBtYW5hZ2VyLCBzaG91bGRDYXB0dXJlSW5HUFVQcm9j
ZXNzLCBwYWdlSWRlbnRpZmllcikKIHsKIH0KIAotUmVtb3RlUmVhbHRpbWVWaWRlb1NvdXJjZTo6
UmVtb3RlUmVhbHRpbWVWaWRlb1NvdXJjZShSZW1vdGVSZWFsdGltZU1lZGlhU291cmNlUHJveHkm
JiBwcm94eSwgU3RyaW5nJiYgaGFzaFNhbHQsIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyJiBtYW5h
Z2VyLCBQYWdlSWRlbnRpZmllciBwYWdlSWRlbnRpZmllcikKLSAgICA6IFJlYWx0aW1lTWVkaWFT
b3VyY2UoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6VmlkZW8sIFN0cmluZyB7IHByb3h5LmRl
dmljZSgpLmxhYmVsKCkgfSwgU3RyaW5nIHsgcHJveHkuZGV2aWNlKCkucGVyc2lzdGVudElkKCkg
fSwgV1RGTW92ZShoYXNoU2FsdCksIHBhZ2VJZGVudGlmaWVyKQotICAgICwgbV9wcm94eShXVEZN
b3ZlKHByb3h5KSkKLSAgICAsIG1fbWFuYWdlcihtYW5hZ2VyKQorUmVtb3RlUmVhbHRpbWVWaWRl
b1NvdXJjZTo6UmVtb3RlUmVhbHRpbWVWaWRlb1NvdXJjZShSZW1vdGVSZWFsdGltZU1lZGlhU291
cmNlUHJveHkmJiBwcm94eSwgU3RyaW5nJiYgbmFtZSwgU3RyaW5nJiYgaGFzaFNhbHQsIFVzZXJN
ZWRpYUNhcHR1cmVNYW5hZ2VyJiBtYW5hZ2VyKQorICAgIDogUmVtb3RlUmVhbHRpbWVNZWRpYVNv
dXJjZShXVEZNb3ZlKHByb3h5KSwgV1RGTW92ZShuYW1lKSwgV1RGTW92ZShoYXNoU2FsdCksIG1h
bmFnZXIpCiB7CiB9CiAKLXZvaWQgUmVtb3RlUmVhbHRpbWVWaWRlb1NvdXJjZTo6Y3JlYXRlUmVt
b3RlTWVkaWFTb3VyY2UoKQotewotICAgIG1fcHJveHkuY3JlYXRlUmVtb3RlTWVkaWFTb3VyY2Uo
ZGV2aWNlSURIYXNoU2FsdCgpLCBwYWdlSWRlbnRpZmllcigpLCBbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IFJlZiB7ICp0aGlzIH1dKGJvb2wgc3VjY2VlZGVkLCBhdXRvJiYgZXJyb3JNZXNzYWdlLCBh
dXRvJiYgc2V0dGluZ3MsIGF1dG8mJiBjYXBhYmlsaXRpZXMsIGF1dG8mJiwgYXV0bywgYXV0bykg
ewotICAgICAgICBpZiAoIXN1Y2NlZWRlZCkgewotICAgICAgICAgICAgbV9wcm94eS5kaWRGYWls
KFdURk1vdmUoZXJyb3JNZXNzYWdlKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0K
LQotICAgICAgICBzZXRTZXR0aW5ncyhXVEZNb3ZlKHNldHRpbmdzKSk7Ci0gICAgICAgIHNldENh
cGFiaWxpdGllcyhXVEZNb3ZlKGNhcGFiaWxpdGllcykpOwotCi0gICAgICAgIG1fcHJveHkuc2V0
QXNSZWFkeSgpOwotICAgICAgICBpZiAobV9wcm94eS5zaG91bGRDYXB0dXJlSW5HUFVQcm9jZXNz
KCkpCi0gICAgICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNz
Q29ubmVjdGlvbigpLmFkZENsaWVudCgqdGhpcyk7Ci0gICAgfSwgbV9wcm94eS5zaG91bGRDYXB0
dXJlSW5HUFVQcm9jZXNzKCkgJiYgbV9tYW5hZ2VyLnNob3VsZFVzZUdQVVByb2Nlc3NSZW1vdGVG
cmFtZXMoKSk7Ci19Ci0KIFJlbW90ZVJlYWx0aW1lVmlkZW9Tb3VyY2U6On5SZW1vdGVSZWFsdGlt
ZVZpZGVvU291cmNlKCkKIHsKLSAgICBpZiAobV9wcm94eS5zaG91bGRDYXB0dXJlSW5HUFVQcm9j
ZXNzKCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5leGlzdGluZ0dQVVByb2Nlc3NDb25uZWN0aW9uKCkpCi0gICAgICAgICAgICBjb25u
ZWN0aW9uLT5yZW1vdmVDbGllbnQoKnRoaXMpOwotICAgIH0KKyAgICByZW1vdmVBc0NsaWVudCgp
OwogfQogCiB2b2lkIFJlbW90ZVJlYWx0aW1lVmlkZW9Tb3VyY2U6OmVuZFByb2R1Y2luZ0RhdGEo
KQogewotICAgIG1fcHJveHkuZW5kUHJvZHVjaW5nRGF0YSgpOwotfQotCi12b2lkIFJlbW90ZVJl
YWx0aW1lVmlkZW9Tb3VyY2U6OnNldENhcGFiaWxpdGllcyhSZWFsdGltZU1lZGlhU291cmNlQ2Fw
YWJpbGl0aWVzJiYgY2FwYWJpbGl0aWVzKQotewotICAgIG1fY2FwYWJpbGl0aWVzID0gV1RGTW92
ZShjYXBhYmlsaXRpZXMpOwotfQotCi12b2lkIFJlbW90ZVJlYWx0aW1lVmlkZW9Tb3VyY2U6OnNl
dFNldHRpbmdzKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYmIHNldHRpbmdzKQotewotICAg
IGF1dG8gY2hhbmdlZCA9IG1fc2V0dGluZ3MuZGlmZmVyZW5jZShzZXR0aW5ncyk7Ci0gICAgbV9z
ZXR0aW5ncyA9IFdURk1vdmUoc2V0dGluZ3MpOwotICAgIG5vdGlmeVNldHRpbmdzRGlkQ2hhbmdl
T2JzZXJ2ZXJzKGNoYW5nZWQpOworICAgIHByb3h5KCkuZW5kUHJvZHVjaW5nRGF0YSgpOwogfQog
CiBib29sIFJlbW90ZVJlYWx0aW1lVmlkZW9Tb3VyY2U6OnNldFNob3VsZEFwcGx5Um90YXRpb24o
Ym9vbCBzaG91bGRBcHBseVJvdGF0aW9uKQpAQCAtMTA5LDc1ICs2OCwyMyBAQCBib29sIFJlbW90
ZVJlYWx0aW1lVmlkZW9Tb3VyY2U6OnNldFNob3VsZEFwcGx5Um90YXRpb24oYm9vbCBzaG91bGRB
cHBseVJvdGF0aW9uKQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFJlbW90ZVJlYWx0aW1l
VmlkZW9Tb3VyY2U6OmFwcGx5Q29uc3RyYWludHNTdWNjZWVkZWQoV2ViQ29yZTo6UmVhbHRpbWVN
ZWRpYVNvdXJjZVNldHRpbmdzJiYgc2V0dGluZ3MpCi17Ci0gICAgc2V0U2V0dGluZ3MoV1RGTW92
ZShzZXR0aW5ncykpOwotICAgIG1fcHJveHkuYXBwbHlDb25zdHJhaW50c1N1Y2NlZWRlZCgpOwot
fQotCi12b2lkIFJlbW90ZVJlYWx0aW1lVmlkZW9Tb3VyY2U6Omhhc0VuZGVkKCkKLXsKLSAgICBp
ZiAobV9wcm94eS5pc0VuZGVkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fcHJveHkuZW5k
KCk7Ci0gICAgbV9tYW5hZ2VyLnJlbW92ZVNvdXJjZShpZGVudGlmaWVyKCkpOwotICAgIG1fbWFu
YWdlci5yZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlcigpLnJlbW92ZVNvdXJjZShpZGVudGlmaWVy
KCkpOwotfQotCiBSZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4gUmVtb3RlUmVhbHRpbWVWaWRlb1Nv
dXJjZTo6Y2xvbmUoKQogewotICAgIGlmIChpc0VuZGVkKCkgfHwgbV9wcm94eS5pc0VuZGVkKCkp
CisgICAgaWYgKGlzRW5kZWQoKSB8fCBwcm94eSgpLmlzRW5kZWQoKSkKICAgICAgICAgcmV0dXJu
ICp0aGlzOwogCi0gICAgYXV0byBzb3VyY2UgPSBhZG9wdFJlZigqbmV3IFJlbW90ZVJlYWx0aW1l
VmlkZW9Tb3VyY2UobV9wcm94eS5jbG9uZSgpLCBkZXZpY2VJREhhc2hTYWx0KCksIG1fbWFuYWdl
ciwgcGFnZUlkZW50aWZpZXIoKSkpOworICAgIGF1dG8gc291cmNlID0gYWRvcHRSZWYoKm5ldyBS
ZW1vdGVSZWFsdGltZVZpZGVvU291cmNlKHByb3h5KCkuY2xvbmUoKSwgU3RyaW5nIHsgbmFtZSgp
IH0sIGRldmljZUlESGFzaFNhbHQoKSwgbWFuYWdlcigpKSk7CiAKICAgICBzb3VyY2UtPnNldFNl
dHRpbmdzKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyB7IHNldHRpbmdzKCkgfSk7CiAgICAg
c291cmNlLT5zZXRDYXBhYmlsaXRpZXMoUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyB7
IGNhcGFiaWxpdGllcygpIH0pOwogCi0gICAgbV9tYW5hZ2VyLmFkZFNvdXJjZShzb3VyY2UuY29w
eVJlZigpKTsKLSAgICBtX21hbmFnZXIucmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIoKS5hZGRT
b3VyY2Uoc291cmNlLmNvcHlSZWYoKSk7Ci0KLSAgICBtX3Byb3h5LmNyZWF0ZVJlbW90ZUNsb25l
U291cmNlKHNvdXJjZS0+aWRlbnRpZmllcigpKTsKKyAgICBtYW5hZ2VyKCkuYWRkU291cmNlKHNv
dXJjZS5jb3B5UmVmKCkpOworICAgIG1hbmFnZXIoKS5yZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdl
cigpLmFkZFNvdXJjZShzb3VyY2UuY29weVJlZigpKTsKKyAgICBwcm94eSgpLmNyZWF0ZVJlbW90
ZUNsb25lU291cmNlKHNvdXJjZS0+aWRlbnRpZmllcigpKTsKIAogICAgIHJldHVybiBzb3VyY2U7
CiB9CiAKLXZvaWQgUmVtb3RlUmVhbHRpbWVWaWRlb1NvdXJjZTo6Y2FwdHVyZVN0b3BwZWQoYm9v
bCBkaWRGYWlsKQotewotICAgIGlmIChkaWRGYWlsKQotICAgICAgICBjYXB0dXJlRmFpbGVkKCk7
Ci0gICAgZWxzZQotICAgICAgICBlbmQoKTsKLSAgICBoYXNFbmRlZCgpOwotfQotCi12b2lkIFJl
bW90ZVJlYWx0aW1lVmlkZW9Tb3VyY2U6OmFwcGx5Q29uc3RyYWludHMoY29uc3QgTWVkaWFDb25z
dHJhaW50cyYgY29uc3RyYWludHMsIEFwcGx5Q29uc3RyYWludHNIYW5kbGVyJiYgY2FsbGJhY2sp
Ci17Ci0gICAgbV9jb25zdHJhaW50cyA9IGNvbnN0cmFpbnRzOwotICAgIG1fcHJveHkuYXBwbHlD
b25zdHJhaW50cyhjb25zdHJhaW50cywgV1RGTW92ZShjYWxsYmFjaykpOwotfQotCi0jaWYgRU5B
QkxFKEdQVV9QUk9DRVNTKQotdm9pZCBSZW1vdGVSZWFsdGltZVZpZGVvU291cmNlOjpncHVQcm9j
ZXNzQ29ubmVjdGlvbkRpZENsb3NlKEdQVVByb2Nlc3NDb25uZWN0aW9uJikKLXsKLSAgICBBU1NF
UlQobV9wcm94eS5zaG91bGRDYXB0dXJlSW5HUFVQcm9jZXNzKCkpOwotICAgIGlmIChpc0VuZGVk
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fbWFuYWdlci5yZW1vdGVDYXB0dXJlU2FtcGxl
TWFuYWdlcigpLmRpZFVwZGF0ZVNvdXJjZUNvbm5lY3Rpb24oY29ubmVjdGlvbigpKTsKLSAgICBt
X3Byb3h5LnJlc2V0UmVhZHkoKTsKLSAgICBjcmVhdGVSZW1vdGVNZWRpYVNvdXJjZSgpOwotCi0g
ICAgbV9wcm94eS5mYWlsQXBwbHlDb25zdHJhaW50Q2FsbGJhY2tzKCJHUFUgUHJvY2VzcyB0ZXJt
aW5hdGVkIl9zKTsKLSAgICBpZiAobV9jb25zdHJhaW50cykKLSAgICAgICAgbV9wcm94eS5hcHBs
eUNvbnN0cmFpbnRzKCptX2NvbnN0cmFpbnRzLCBbXShhdXRvKSB7IH0pOwotCi0gICAgaWYgKGlz
UHJvZHVjaW5nRGF0YSgpKQotICAgICAgICBzdGFydFByb2R1Y2luZ0RhdGEoKTsKLX0KLSNlbmRp
ZgotCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2Nv
Y29hL1JlbW90ZVJlYWx0aW1lVmlkZW9Tb3VyY2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9jb2NvYS9SZW1vdGVSZWFsdGltZVZpZGVvU291cmNlLmgKaW5kZXggYTYzZjVmY2M2M2I1NWIy
ZGM2OTZhMTZmNWJmODY1ODVkYTI3YTA1Ni4uZWM0YWIyZWYzNmNjOTc1M2IxYWY4NjVlOWViNGU0
NGZkZmM5MzM0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1Jl
bW90ZVJlYWx0aW1lVmlkZW9Tb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
Y29jb2EvUmVtb3RlUmVhbHRpbWVWaWRlb1NvdXJjZS5oCkBAIC0yNyw4NCArMjcsMjcgQEAKIAog
I2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCi0jaW5jbHVkZSAi
R1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKLSNpbmNsdWRlICJSZW1vdGVSZWFsdGltZU1lZGlhU291
cmNlUHJveHkuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0NhcHR1cmVEZXZpY2UuaD4KLSNpbmNsdWRl
IDxXZWJDb3JlL1JlYWx0aW1lTWVkaWFTb3VyY2UuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1JlYWx0
aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyLmg+CisjaW5jbHVkZSAiUmVtb3RlUmVhbHRpbWVNZWRp
YVNvdXJjZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvVmlkZW9GcmFtZS5oPgogCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci1zdHJ1Y3QgTWVkaWFDb25zdHJhaW50czsKLX0KLQogbmFtZXNwYWNlIFdlYktp
dCB7CiAKLWNsYXNzIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOwotCi1jbGFzcyBSZW1vdGVSZWFs
dGltZVZpZGVvU291cmNlIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3Vy
Y2UKLSNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCi0gICAgLCBwdWJsaWMgR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb246OkNsaWVudAotI2VuZGlmCi17CitjbGFzcyBSZW1vdGVSZWFsdGltZVZpZGVvU291cmNl
IGZpbmFsIDogcHVibGljIFJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2UgewogcHVibGljOgogICAg
IHN0YXRpYyBSZWY8V2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZT4gY3JlYXRlKGNvbnN0IFdl
YkNvcmU6OkNhcHR1cmVEZXZpY2UmLCBjb25zdCBXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnRzKiwg
U3RyaW5nJiYgaGFzaFNhbHQsIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyJiwgYm9vbCBzaG91bGRD
YXB0dXJlSW5HUFVQcm9jZXNzLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAgICAgflJlbW90
ZVJlYWx0aW1lVmlkZW9Tb3VyY2UoKTsKIAotICAgIFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3Vy
Y2VJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3Byb3h5LmlkZW50aWZp
ZXIoKTsgfQotICAgIElQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbigpIHsgcmV0dXJuIG1fcHJv
eHkuY29ubmVjdGlvbigpOyB9Ci0KLSAgICB2b2lkIHNldFNldHRpbmdzKFdlYkNvcmU6OlJlYWx0
aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYmKTsKLQotICAgIHZvaWQgY2FwdHVyZVN0b3BwZWQoYm9v
bCBkaWRGYWlsKTsKLQogICAgIHZvaWQgdmlkZW9GcmFtZUF2YWlsYWJsZShXZWJDb3JlOjpWaWRl
b0ZyYW1lJiBmcmFtZSwgV2ViQ29yZTo6SW50U2l6ZSwgV2ViQ29yZTo6VmlkZW9TYW1wbGVNZXRh
ZGF0YSBtZXRhZGF0YSkgeyB2aWRlb1NhbXBsZUF2YWlsYWJsZShmcmFtZSwgbWV0YWRhdGEpOyB9
Ci0gICAgdm9pZCBzb3VyY2VNdXRlZENoYW5nZWQoYm9vbCB2YWx1ZSwgYm9vbCBpbnRlcnJ1cHRl
ZCk7Ci0KLSAgICB2b2lkIGFwcGx5Q29uc3RyYWludHNTdWNjZWVkZWQoV2ViQ29yZTo6UmVhbHRp
bWVNZWRpYVNvdXJjZVNldHRpbmdzJiYpOwotICAgIHZvaWQgYXBwbHlDb25zdHJhaW50c0ZhaWxl
ZChTdHJpbmcmJiBmYWlsZWRDb25zdHJhaW50LCBTdHJpbmcmJiBlcnJvck1lc3NhZ2UpIHsgbV9w
cm94eS5hcHBseUNvbnN0cmFpbnRzRmFpbGVkKFdURk1vdmUoZmFpbGVkQ29uc3RyYWludCksIFdU
Rk1vdmUoZXJyb3JNZXNzYWdlKSk7IH0KIAogcHJpdmF0ZToKICAgICBSZW1vdGVSZWFsdGltZVZp
ZGVvU291cmNlKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyLCBjb25zdCBX
ZWJDb3JlOjpDYXB0dXJlRGV2aWNlJiwgY29uc3QgV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50cyos
IFN0cmluZyYmIGhhc2hTYWx0LCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlciYsIGJvb2wgc2hvdWxk
Q2FwdHVyZUluR1BVUHJvY2VzcywgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwotICAgIFJlbW90
ZVJlYWx0aW1lVmlkZW9Tb3VyY2UoUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZVByb3h5JiYsIFN0
cmluZyYmIGhhc2hTYWx0LCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlciYsIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyKTsKKyAgICBSZW1vdGVSZWFsdGltZVZpZGVvU291cmNlKFJlbW90ZVJlYWx0aW1l
TWVkaWFTb3VyY2VQcm94eSYmLCBTdHJpbmcmJiBuYW1lLCBTdHJpbmcmJiBoYXNoU2FsdCwgVXNl
ck1lZGlhQ2FwdHVyZU1hbmFnZXImKTsKIAotICAgIC8vIFJlYWx0aW1lTWVkaWFTb3VyY2UKLSAg
ICB2b2lkIHN0YXJ0UHJvZHVjaW5nRGF0YSgpIGZpbmFsIHsgbV9wcm94eS5zdGFydFByb2R1Y2lu
Z0RhdGEoKTsgfQotICAgIHZvaWQgc3RvcFByb2R1Y2luZ0RhdGEoKSBmaW5hbCB7IG1fcHJveHku
c3RvcFByb2R1Y2luZ0RhdGEoKTsgfQotICAgIGJvb2wgaXNDYXB0dXJlU291cmNlKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZvaWQgYmVnaW5Db25maWd1cmF0aW9uKCkgZmlu
YWwgeyB9Ci0gICAgdm9pZCBjb21taXRDb25maWd1cmF0aW9uKCkgZmluYWwgeyB9Ci0gICAgdm9p
ZCBhcHBseUNvbnN0cmFpbnRzKGNvbnN0IFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludHMmLCBBcHBs
eUNvbnN0cmFpbnRzSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGhhc0VuZGVkKCkgZmluYWw7
Ci0gICAgY29uc3QgV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBzZXR0aW5n
cygpIGZpbmFsIHsgcmV0dXJuIG1fc2V0dGluZ3M7IH0KLSAgICBjb25zdCBXZWJDb3JlOjpSZWFs
dGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBjYXBhYmlsaXRpZXMoKSBmaW5hbCB7IHJldHVy
biBtX2NhcGFiaWxpdGllczsgfQotICAgIHZvaWQgd2hlblJlYWR5KENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoU3RyaW5nKT4mJiBjYWxsYmFjaykgZmluYWwgeyBtX3Byb3h5LndoZW5SZWFkeShXVEZN
b3ZlKGNhbGxiYWNrKSk7IH0KLSAgICBXZWJDb3JlOjpDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBl
IGRldmljZVR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3h5LmRldmljZVR5cGUoKTsg
fQogICAgIFJlZjxSZWFsdGltZU1lZGlhU291cmNlPiBjbG9uZSgpIGZpbmFsOwogICAgIHZvaWQg
ZW5kUHJvZHVjaW5nRGF0YSgpIGZpbmFsOwogICAgIGJvb2wgc2V0U2hvdWxkQXBwbHlSb3RhdGlv
bihib29sKSBmaW5hbDsKLQotI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKLSAgICAvLyBHUFVQcm9j
ZXNzQ29ubmVjdGlvbjo6Q2xpZW50Ci0gICAgdm9pZCBncHVQcm9jZXNzQ29ubmVjdGlvbkRpZENs
b3NlKEdQVVByb2Nlc3NDb25uZWN0aW9uJikgZmluYWw7Ci0jZW5kaWYKLQotICAgIHZvaWQgY3Jl
YXRlUmVtb3RlTWVkaWFTb3VyY2UoKTsKLSAgICB2b2lkIHNldENhcGFiaWxpdGllcyhXZWJDb3Jl
OjpSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiYpOwotCi0gICAgUmVtb3RlUmVhbHRp
bWVNZWRpYVNvdXJjZVByb3h5IG1fcHJveHk7Ci0gICAgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIm
IG1fbWFuYWdlcjsKLSAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludHM+
IG1fY29uc3RyYWludHM7Ci0gICAgV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxp
dGllcyBtX2NhcGFiaWxpdGllczsKLSAgICBXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlU2V0
dGluZ3MgbV9zZXR0aW5nczsKIH07CiAKLWlubGluZSB2b2lkIFJlbW90ZVJlYWx0aW1lVmlkZW9T
b3VyY2U6OnNvdXJjZU11dGVkQ2hhbmdlZChib29sIG11dGVkLCBib29sIGludGVycnVwdGVkKQot
ewotICAgIG1fcHJveHkuc2V0SW50ZXJydXB0ZWQoaW50ZXJydXB0ZWQpOwotICAgIG5vdGlmeU11
dGVkQ2hhbmdlKG11dGVkKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455904</attachid>
            <date>2022-03-28 05:25:48 -0700</date>
            <delta_ts>2022-03-28 07:21:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237704-20220328142545.patch</filename>
            <type>text/plain</type>
            <size>42189</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxOTU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjQwMzc1ZjUxNDA3ZDI1
NWVjN2FiYmExZWM5MzMyMzBkODg0YjUyZC4uN2ZkZmE4NGFlMjA3ODRjNWRjNjU3Y2IxOGE0Y2Rl
YzM1NzIwOWM0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIyLTAzLTI4ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBTaGFyZSBtb3JlIGNvZGUg
YmV0d2VlbiBSZW1vdGVSZWFsdGltZUF1ZGlvU291cmNlIGFuZCBSZW1vdGVSZWFsdGltZVZpZGVv
U291cmNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
Mzc3MDQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzkwNDI0Njc5PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSByZW1vdmUgdmlkZW8gc291cmNl
IGlzIG5vdyBjb3JyZWN0bHkgZXhwb3Npbmcgd2hldGhlciBpdCBpcyBjYW1lcmEsIHNjcmVlbi4u
LgorICAgICAgICBUaGlzIHdhcyBub3Qgd2VsbCBoYW5kbGVkIGJlZm9yZSBpbiBzb21lIHBsYWNl
cywgd2UgcmVwbGFjZSB0eXBlID09IFZpZGVvIGJ5IGhhc1ZpZGVvIHRvIGhhbmRsZSBhbGwgdmlk
ZW8gdHlwZXMgYXBwcm9wcmlhdGVseS4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRl
c3RzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tOgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0ZS5jcHA6CisKIDIwMjItMDMtMjggIFlvdWVu
biBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVudCBTZXJ2aWNl
V29ya2VyIFdpbmRvd0NsaWVudC5hbmNlc3Rvck9yaWdpbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZWI2NWFjN2U4
MjdmNzczY2ViNTJjMWM4ZTFkYjJhNDZjNzZhOGU2OC4uMWU0NjFkZTk5MDM4ODczMTZiMDRmZTQw
MzVlOGFiNzVhZWQ3YjVmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAyMi0wMy0yOCAg
WW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgU2hhcmUgbW9yZSBj
b2RlIGJldHdlZW4gUmVtb3RlUmVhbHRpbWVBdWRpb1NvdXJjZSBhbmQgUmVtb3RlUmVhbHRpbWVW
aWRlb1NvdXJjZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjM3NzA0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS85MDQyNDY3OT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnRyb2R1Y2UgUmVtb3RlUmVh
bHRpbWVNZWRpYVNvdXJjZSBhcyBhIGNvbW1vbiBjbGFzcyBmb3IgUmVtb3RlUmVhbHRpbWVBdWRp
b1NvdXJjZSBhbmQgUmVtb3RlUmVhbHRpbWVWaWRlb1NvdXJjZS4KKworICAgICAgICAqIFNvdXJj
ZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVSZWFsdGltZUF1ZGlvU291cmNlLmNw
cDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1JlbW90ZVJlYWx0aW1lQXVkaW9Tb3VyY2Uu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1JlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2Uu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1JlbW90ZVJlYWx0aW1lTWVk
aWFTb3VyY2UuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVSZWFs
dGltZU1lZGlhU291cmNlUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1JlbW90
ZVJlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvUmVt
b3RlUmVhbHRpbWVWaWRlb1NvdXJjZS5oOgorCiAyMDIyLTAzLTI2ICBZdXN1a2UgU3V6dWtpICA8
eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIHN0YXRpY19hc3NlcnQgaW5zdGVhZCBv
ZiBDT01QSUxFX0FTU0VSVApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCmluZGV4IGU0NjQ2ZDZi
M2RjNTg2NzkxYjViZmIxZDNkYWNhMTQ1YzFkZDJhODEuLjQ2ODg3Njk1MjYxNzE2MmRkMjE1MGI0
MjI0MjMxYzdkNTNhMmYzNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZG
T2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KQEAgLTgyMiwx
NSArODIyLDIxIEBAIGVudW0gY2xhc3MgVHJhY2tTdGF0ZSB7CiAgICAgQ29uZmlndXJlCiB9Owog
CitlbnVtIGNsYXNzIFRyYWNrS2luZCB7CisgICAgQXVkaW8sCisgICAgVmlkZW8KK307CisKIHRl
bXBsYXRlIDx0eXBlbmFtZSBSZWZUPgotdm9pZCB1cGRhdGVUcmFja3NPZlR5cGUoSGFzaE1hcDxT
dHJpbmcsIFJlZlQ+JiB0cmFja01hcCwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSB0cmFja1R5
cGUsIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlVmVjdG9yJiBjdXJyZW50VHJhY2tzLCBSZWZUICgq
aXRlbUZhY3RvcnkpKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJiksIGNvbnN0IEZ1bmN0aW9uPHZv
aWQoc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9wb2ludGVyPHR5
cGVuYW1lIFJlZlQ6OlB0clRyYWl0czo6U3RvcmFnZVR5cGU+Ojp0eXBlPiwgaW50LCBUcmFja1N0
YXRlKT4mIGNvbmZpZ3VyZVRyYWNrKQordm9pZCB1cGRhdGVUcmFja3NPZktpbmQoSGFzaE1hcDxT
dHJpbmcsIFJlZlQ+JiB0cmFja01hcCwgVHJhY2tLaW5kIHRyYWNrS2luZCwgTWVkaWFTdHJlYW1U
cmFja1ByaXZhdGVWZWN0b3ImIGN1cnJlbnRUcmFja3MsIFJlZlQgKCppdGVtRmFjdG9yeSkoTWVk
aWFTdHJlYW1UcmFja1ByaXZhdGUmKSwgY29uc3QgRnVuY3Rpb248dm9pZChzdGQ6OnJlZmVyZW5j
ZV93cmFwcGVyPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3BvaW50ZXI8dHlwZW5hbWUgUmVmVDo6UHRy
VHJhaXRzOjpTdG9yYWdlVHlwZT46OnR5cGU+LCBpbnQsIFRyYWNrU3RhdGUpPiYgY29uZmlndXJl
VHJhY2spCiB7CiAgICAgVmVjdG9yPFJlZlQ+IHJlbW92ZWRUcmFja3M7CiAgICAgVmVjdG9yPFJl
ZlQ+IGFkZGVkVHJhY2tzOwogICAgIFZlY3RvcjxSZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+
PiBhZGRlZFByaXZhdGVUcmFja3M7CiAKKyAgICBib29sIHdhbnRzVmlkZW8gPSB0cmFja0tpbmQg
PT0gVHJhY2tLaW5kOjpWaWRlbzsKICAgICBmb3IgKGNvbnN0IGF1dG8mIHRyYWNrIDogY3VycmVu
dFRyYWNrcykgewotICAgICAgICBpZiAodHJhY2stPnR5cGUoKSAhPSB0cmFja1R5cGUpCisgICAg
ICAgIGlmICh3YW50c1ZpZGVvICE9IHRyYWNrLT5oYXNWaWRlbygpKQogICAgICAgICAgICAgY29u
dGludWU7CiAKICAgICAgICAgaWYgKCF0cmFja01hcC5jb250YWlucyh0cmFjay0+aWQoKSkpCkBA
IC05NDEsNyArOTQ3LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akM6OnVwZGF0ZVRyYWNrcygpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH07
Ci0gICAgdXBkYXRlVHJhY2tzT2ZUeXBlKG1fYXVkaW9UcmFja01hcCwgUmVhbHRpbWVNZWRpYVNv
dXJjZTo6VHlwZTo6QXVkaW8sIGN1cnJlbnRUcmFja3MsICZBdWRpb1RyYWNrUHJpdmF0ZU1lZGlh
U3RyZWFtOjpjcmVhdGUsIFdURk1vdmUoc2V0QXVkaW9UcmFja1N0YXRlKSk7CisgICAgdXBkYXRl
VHJhY2tzT2ZLaW5kKG1fYXVkaW9UcmFja01hcCwgVHJhY2tLaW5kOjpBdWRpbywgY3VycmVudFRy
YWNrcywgJkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW06OmNyZWF0ZSwgV1RGTW92ZShzZXRB
dWRpb1RyYWNrU3RhdGUpKTsKIAogICAgIGlmICghbV9wbGF5ZXItPmlzVmlkZW9QbGF5ZXIoKSkK
ICAgICAgICAgcmV0dXJuOwpAQCAtOTY2LDcgKzk3Miw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp1cGRhdGVUcmFja3MoKQogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICB9OwotICAgIHVwZGF0ZVRyYWNrc09mVHlwZShtX3ZpZGVvVHJhY2tN
YXAsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlZpZGVvLCBjdXJyZW50VHJhY2tzLCAmVmlk
ZW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbTo6Y3JlYXRlLCBXVEZNb3ZlKHNldFZpZGVvVHJhY2tT
dGF0ZSkpOworICAgIHVwZGF0ZVRyYWNrc09mS2luZChtX3ZpZGVvVHJhY2tNYXAsIFRyYWNrS2lu
ZDo6VmlkZW8sIGN1cnJlbnRUcmFja3MsICZWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtOjpj
cmVhdGUsIFdURk1vdmUoc2V0VmlkZW9UcmFja1N0YXRlKSk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0
cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
Qzo6c2Vla2FibGUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0ZS5jcHAKaW5kZXggMmNkZTQwMTZiY2Fk
YjUwMTc3OWZkZGViNzEzODhkMTUzMWM4OWFlMS4uYWY0MGY2ZDNiNTQ4ODJlMjk2ODI3ZTUzMmFi
ZTQ4YWVjNDFkZTQzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVByaXZhdGUuY3BwCkBAIC0yMDgsNyArMjA4LDcgQEAg
Ym9vbCBNZWRpYVN0cmVhbVByaXZhdGU6OmlzUHJvZHVjaW5nRGF0YSgpIGNvbnN0CiBib29sIE1l
ZGlhU3RyZWFtUHJpdmF0ZTo6aGFzVmlkZW8oKSBjb25zdAogewogICAgIGZvciAoYXV0byYgdHJh
Y2sgOiBtX3RyYWNrU2V0LnZhbHVlcygpKSB7Ci0gICAgICAgIGlmICh0cmFjay0+dHlwZSgpID09
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlZpZGVvICYmIHRyYWNrLT5pc0FjdGl2ZSgpKQor
ICAgICAgICBpZiAodHJhY2stPmhhc1ZpZGVvKCkgJiYgdHJhY2stPmlzQWN0aXZlKCkpCiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjE3LDcg
KzIxNyw3IEBAIGJvb2wgTWVkaWFTdHJlYW1Qcml2YXRlOjpoYXNWaWRlbygpIGNvbnN0CiBib29s
IE1lZGlhU3RyZWFtUHJpdmF0ZTo6aGFzQXVkaW8oKSBjb25zdAogewogICAgIGZvciAoYXV0byYg
dHJhY2sgOiBtX3RyYWNrU2V0LnZhbHVlcygpKSB7Ci0gICAgICAgIGlmICh0cmFjay0+dHlwZSgp
ID09IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvICYmIHRyYWNrLT5pc0FjdGl2ZSgp
KQorICAgICAgICBpZiAodHJhY2stPmhhc0F1ZGlvKCkgJiYgdHJhY2stPmlzQWN0aXZlKCkpCiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjM1
LDcgKzIzNSw2IEBAIGJvb2wgTWVkaWFTdHJlYW1Qcml2YXRlOjptdXRlZCgpIGNvbnN0CiBGbG9h
dFNpemUgTWVkaWFTdHJlYW1Qcml2YXRlOjppbnRyaW5zaWNTaXplKCkgY29uc3QKIHsKICAgICBG
bG9hdFNpemUgc2l6ZTsKLQogICAgIGlmIChtX2FjdGl2ZVZpZGVvVHJhY2spIHsKICAgICAgICAg
Y29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBzZXR0aW5nID0gbV9hY3RpdmVWaWRl
b1RyYWNrLT5zZXR0aW5ncygpOwogICAgICAgICBzaXplLnNldFdpZHRoKHNldHRpbmcud2lkdGgo
KSk7CkBAIC0yNDksNyArMjQ4LDcgQEAgdm9pZCBNZWRpYVN0cmVhbVByaXZhdGU6OnVwZGF0ZUFj
dGl2ZVZpZGVvVHJhY2soKQogewogICAgIG1fYWN0aXZlVmlkZW9UcmFjayA9IG51bGxwdHI7CiAg
ICAgZm9yIChhdXRvJiB0cmFjayA6IG1fdHJhY2tTZXQudmFsdWVzKCkpIHsKLSAgICAgICAgaWYg
KCF0cmFjay0+ZW5kZWQoKSAmJiB0cmFjay0+dHlwZSgpID09IFJlYWx0aW1lTWVkaWFTb3VyY2U6
OlR5cGU6OlZpZGVvKSB7CisgICAgICAgIGlmICghdHJhY2stPmVuZGVkKCkgJiYgdHJhY2stPmhh
c1ZpZGVvKCkpIHsKICAgICAgICAgICAgIG1fYWN0aXZlVmlkZW9UcmFjayA9IHRyYWNrLmdldCgp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRl
eCBiMDhkMWZkZGFjMGE1OTNjYWQ1NDVhOGNhNTM2MTI5ZmEyMmE5ZGVmLi5iMzRjNTBkZGU3NGJi
ZTQ5MDQ5Mjk3NjAyM2E4N2Q3ODc5MDBkYzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC02
MTgsNiArNjE4LDcgQEAgV2ViUHJvY2Vzcy9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRp
bmF0b3JDb2NvYS5tbQogV2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1t
CiBXZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLmNwcAogV2ViUHJv
Y2Vzcy9jb2NvYS9SZW1vdGVSZWFsdGltZUF1ZGlvU291cmNlLmNwcAorV2ViUHJvY2Vzcy9jb2Nv
YS9SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlLmNwcAogV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVS
ZWFsdGltZU1lZGlhU291cmNlUHJveHkuY3BwCiBXZWJQcm9jZXNzL2NvY29hL1JlbW90ZVJlYWx0
aW1lVmlkZW9Tb3VyY2UuY3BwCiBXZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5h
Z2VyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggMjczYzNjMjQwZTE5MjhkOTExM2FkOGJiMTVjMTlkYzRhMTU5MDdiZC4uMTQ5Mjc0
ZGZmNmIwODNjNzllYjI0YzVjMTc5MzEyOTUwOWEzMGEzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00NDEyLDYgKzQ0MTIsOCBAQAog
CQk0MTFCODlFNTI3QjVENTgzMDBGOUVCRDMgLyogUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQ
cm94eVByb2Nlc3Nvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVh
cFByb3h5UHJvY2Vzc29yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMUI4OUU2
MjdCNUQ1ODQwMEY5RUJEMyAvKiBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5UHJvY2Vz
c29yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJv
eHlQcm9jZXNzb3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTFCODlGNTI3
QjZCNEM3MDBGOUVCRDMgLyogUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTQxMjgyN0E1MjdEQTBEN0IwMDVBRERFMiAvKiBSZW1vdGVSZWFs
dGltZU1lZGlhU291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZVJlYWx0aW1lTWVk
aWFTb3VyY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTI4MjdBNjI3REEw
RDdGMDA1QURERTIgLyogUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZW1vdGVSZWFsdGltZU1lZGlhU291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQxMjg3RDRCMjI1QzA1QzQwMDlBM0UyNiAvKiBXZWJTb2NrZXRUYXNrQ29jb2EubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJTb2NrZXRUYXNrQ29jb2Eu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMjg3RDRDMjI1QzA1QzUwMDlBM0Uy
NiAvKiBXZWJTb2NrZXRUYXNrQ29jb2EuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViU29ja2V0VGFza0NvY29hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQx
Mjg3RDREMjI1QzE2MUYwMDlBM0UyNiAvKiBXZWJTb2NrZXRUYXNrLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNvY2tldFRhc2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTExMDU1LDYgKzExMDU3LDggQEAKIAkJCQk0MTY4NEM0RDI0NjQzQkZBMDAxQ0U4
RUQgLyogUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIubWVzc2FnZXMuaW4gKi8sCiAJCQkJNDFF
NjdBOEQyNUQyQ0ZEMDAwN0IwQTRDIC8qIFJlbW90ZVJlYWx0aW1lQXVkaW9Tb3VyY2UuY3BwICov
LAogCQkJCTQxRTY3QThDMjVEMkNGRDAwMDdCMEE0QyAvKiBSZW1vdGVSZWFsdGltZUF1ZGlvU291
cmNlLmggKi8sCisJCQkJNDEyODI3QTUyN0RBMEQ3QjAwNUFEREUyIC8qIFJlbW90ZVJlYWx0aW1l
TWVkaWFTb3VyY2UuY3BwICovLAorCQkJCTQxMjgyN0E2MjdEQTBEN0YwMDVBRERFMiAvKiBSZW1v
dGVSZWFsdGltZU1lZGlhU291cmNlLmggKi8sCiAJCQkJNDE2MDA4QjIyNURBODk1QjAwRTg5MkZF
IC8qIFJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VQcm94eS5jcHAgKi8sCiAJCQkJNDE2MDA4QjEy
NURBODZCOTAwRTg5MkZFIC8qIFJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VQcm94eS5oICovLAog
CQkJCTQxOEZDQkUzMjcxMDQ5REIwMEY5NkVDQSAvKiBSZW1vdGVSZWFsdGltZVZpZGVvU291cmNl
LmNwcCAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1v
dGVSZWFsdGltZUF1ZGlvU291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2Nv
YS9SZW1vdGVSZWFsdGltZUF1ZGlvU291cmNlLmNwcAppbmRleCBiY2E4MzQ3ZWU4NzEzYzNiMmJl
MTM3YWU2NDQ4NTQ5NjdhNjQxYWI4Li5iY2YxMDQ3ZDY0MTFjMTc0MGEzNjkwMGI0OTgyMWRhZDZj
Yzg0NzgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVtb3Rl
UmVhbHRpbWVBdWRpb1NvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2Nv
Y29hL1JlbW90ZVJlYWx0aW1lQXVkaW9Tb3VyY2UuY3BwCkBAIC0yOSwxNiArMjksOCBAQAogI2lm
IFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCiAjaW5jbHVkZSAiR1BV
UHJvY2Vzc0Nvbm5lY3Rpb24uaCIKLSNpbmNsdWRlICJTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZS5o
IgogI2luY2x1ZGUgIlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmgiCi0jaW5jbHVkZSAiVXNlck1l
ZGlhQ2FwdHVyZU1hbmFnZXJNZXNzYWdlcy5oIgotI2luY2x1ZGUgIlVzZXJNZWRpYUNhcHR1cmVN
YW5hZ2VyUHJveHlNZXNzYWdlcy5oIgotI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5o
IgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL01lZGlhQ29uc3Ry
YWludHMuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1JlYWx0aW1lTWVkaWFTb3VyY2UuaD4KLSNpbmNs
dWRlIDxXZWJDb3JlL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaD4KLSNpbmNsdWRlIDxXZWJD
b3JlL1dlYkF1ZGlvQnVmZmVyTGlzdC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwpAQCAtNTMsNTUgKzQ1LDE0IEBAIFJlZjxSZWFsdGltZU1lZGlhU291
cmNlPiBSZW1vdGVSZWFsdGltZUF1ZGlvU291cmNlOjpjcmVhdGUoY29uc3QgQ2FwdHVyZURldmlj
ZSYKIH0KIAogUmVtb3RlUmVhbHRpbWVBdWRpb1NvdXJjZTo6UmVtb3RlUmVhbHRpbWVBdWRpb1Nv
dXJjZShSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBDYXB0
dXJlRGV2aWNlJiBkZXZpY2UsIGNvbnN0IE1lZGlhQ29uc3RyYWludHMqIGNvbnN0cmFpbnRzLCBT
dHJpbmcmJiBuYW1lLCBTdHJpbmcmJiBoYXNoU2FsdCwgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIm
IG1hbmFnZXIsIGJvb2wgc2hvdWxkQ2FwdHVyZUluR1BVUHJvY2VzcywgUGFnZUlkZW50aWZpZXIg
cGFnZUlkZW50aWZpZXIpCi0gICAgOiBSZWFsdGltZU1lZGlhU291cmNlKFJlYWx0aW1lTWVkaWFT
b3VyY2U6OlR5cGU6OkF1ZGlvLCBXVEZNb3ZlKG5hbWUpLCBTdHJpbmcgeyBkZXZpY2UucGVyc2lz
dGVudElkKCkgfSwgV1RGTW92ZShoYXNoU2FsdCksIHBhZ2VJZGVudGlmaWVyKQotICAgICwgbV9w
cm94eShpZGVudGlmaWVyLCBkZXZpY2UsIHNob3VsZENhcHR1cmVJbkdQVVByb2Nlc3MsIGNvbnN0
cmFpbnRzKQotICAgICwgbV9tYW5hZ2VyKG1hbmFnZXIpCisgICAgOiBSZW1vdGVSZWFsdGltZU1l
ZGlhU291cmNlKGlkZW50aWZpZXIsIGRldmljZSwgY29uc3RyYWludHMsIFdURk1vdmUobmFtZSks
IFdURk1vdmUoaGFzaFNhbHQpLCBtYW5hZ2VyLCBzaG91bGRDYXB0dXJlSW5HUFVQcm9jZXNzLCBw
YWdlSWRlbnRpZmllcikKIHsKICAgICBBU1NFUlQoZGV2aWNlLnR5cGUoKSA9PSBDYXB0dXJlRGV2
aWNlOjpEZXZpY2VUeXBlOjpNaWNyb3Bob25lKTsKIH0KIAotdm9pZCBSZW1vdGVSZWFsdGltZUF1
ZGlvU291cmNlOjpjcmVhdGVSZW1vdGVNZWRpYVNvdXJjZSgpCi17Ci0gICAgbV9wcm94eS5jcmVh
dGVSZW1vdGVNZWRpYVNvdXJjZShkZXZpY2VJREhhc2hTYWx0KCksIHBhZ2VJZGVudGlmaWVyKCks
IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0oYm9vbCBzdWNjZWVkZWQsIGF1
dG8mJiBlcnJvck1lc3NhZ2UsIGF1dG8mJiBzZXR0aW5ncywgYXV0byYmIGNhcGFiaWxpdGllcywg
YXV0byYmLCBhdXRvLCBhdXRvKSB7Ci0gICAgICAgIGlmICghc3VjY2VlZGVkKSB7Ci0gICAgICAg
ICAgICBtX3Byb3h5LmRpZEZhaWwoV1RGTW92ZShlcnJvck1lc3NhZ2UpKTsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIHNldFNldHRpbmdzKFdURk1vdmUoc2V0dGlu
Z3MpKTsKLSAgICAgICAgc2V0Q2FwYWJpbGl0aWVzKFdURk1vdmUoY2FwYWJpbGl0aWVzKSk7Ci0g
ICAgICAgIHNldE5hbWUoU3RyaW5nIHsgbV9zZXR0aW5ncy5sYWJlbCgpLnN0cmluZygpIH0pOwot
Ci0gICAgICAgIG1fcHJveHkuc2V0QXNSZWFkeSgpOwotICAgICAgICBpZiAobV9wcm94eS5zaG91
bGRDYXB0dXJlSW5HUFVQcm9jZXNzKCkpCi0gICAgICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLmFkZENsaWVudCgqdGhpcyk7Ci0gICAg
fSk7Ci19Ci0KIFJlbW90ZVJlYWx0aW1lQXVkaW9Tb3VyY2U6On5SZW1vdGVSZWFsdGltZUF1ZGlv
U291cmNlKCkKIHsKLSAgICBpZiAobV9wcm94eS5zaG91bGRDYXB0dXJlSW5HUFVQcm9jZXNzKCkp
IHsKLSAgICAgICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5leGlzdGluZ0dQVVByb2Nlc3NDb25uZWN0aW9uKCkpCi0gICAgICAgICAgICBjb25uZWN0aW9u
LT5yZW1vdmVDbGllbnQoKnRoaXMpOwotICAgIH0KLX0KLQotdm9pZCBSZW1vdGVSZWFsdGltZUF1
ZGlvU291cmNlOjpzZXRDYXBhYmlsaXRpZXMoUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGll
cyYmIGNhcGFiaWxpdGllcykKLXsKLSAgICBtX2NhcGFiaWxpdGllcyA9IFdURk1vdmUoY2FwYWJp
bGl0aWVzKTsKLX0KLQotdm9pZCBSZW1vdGVSZWFsdGltZUF1ZGlvU291cmNlOjpzZXRTZXR0aW5n
cyhSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmJiBzZXR0aW5ncykKLXsKLSAgICBhdXRvIGNo
YW5nZWQgPSBtX3NldHRpbmdzLmRpZmZlcmVuY2Uoc2V0dGluZ3MpOwotICAgIG1fc2V0dGluZ3Mg
PSBXVEZNb3ZlKHNldHRpbmdzKTsKLSAgICBub3RpZnlTZXR0aW5nc0RpZENoYW5nZU9ic2VydmVy
cyhjaGFuZ2VkKTsKLX0KLQotdm9pZCBSZW1vdGVSZWFsdGltZUF1ZGlvU291cmNlOjphcHBseUNv
bnN0cmFpbnRzU3VjY2VlZGVkKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYm
IHNldHRpbmdzKQotewotICAgIHNldFNldHRpbmdzKFdURk1vdmUoc2V0dGluZ3MpKTsKLSAgICBt
X3Byb3h5LmFwcGx5Q29uc3RyYWludHNTdWNjZWVkZWQoKTsKKyAgICByZW1vdmVBc0NsaWVudCgp
OwogfQogCiB2b2lkIFJlbW90ZVJlYWx0aW1lQXVkaW9Tb3VyY2U6OnJlbW90ZUF1ZGlvU2FtcGxl
c0F2YWlsYWJsZShjb25zdCBNZWRpYVRpbWUmIHRpbWUsIGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRh
JiBkYXRhLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgc2l6ZV90
IHNpemUpCkBAIC0xMTAsNTIgKzYxLDYgQEAgdm9pZCBSZW1vdGVSZWFsdGltZUF1ZGlvU291cmNl
OjpyZW1vdGVBdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgTWVkaWFUaW1lJiB0aW0KICAgICBh
dWRpb1NhbXBsZXNBdmFpbGFibGUodGltZSwgZGF0YSwgZGVzY3JpcHRpb24sIHNpemUpOwogfQog
Ci12b2lkIFJlbW90ZVJlYWx0aW1lQXVkaW9Tb3VyY2U6Omhhc0VuZGVkKCkKLXsKLSAgICBpZiAo
bV9wcm94eS5pc0VuZGVkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fcHJveHkuZW5kKCk7
Ci0gICAgbV9tYW5hZ2VyLnJlbW92ZVNvdXJjZShpZGVudGlmaWVyKCkpOwotICAgIG1fbWFuYWdl
ci5yZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlcigpLnJlbW92ZVNvdXJjZShpZGVudGlmaWVyKCkp
OwotfQotCi12b2lkIFJlbW90ZVJlYWx0aW1lQXVkaW9Tb3VyY2U6OmNhcHR1cmVTdG9wcGVkKGJv
b2wgZGlkRmFpbCkKLXsKLSAgICBpZiAoZGlkRmFpbCkKLSAgICAgICAgY2FwdHVyZUZhaWxlZCgp
OwotICAgIGVsc2UKLSAgICAgICAgZW5kKCk7Ci0gICAgaGFzRW5kZWQoKTsKLX0KLQotdm9pZCBS
ZW1vdGVSZWFsdGltZUF1ZGlvU291cmNlOjphcHBseUNvbnN0cmFpbnRzKGNvbnN0IE1lZGlhQ29u
c3RyYWludHMmIGNvbnN0cmFpbnRzLCBBcHBseUNvbnN0cmFpbnRzSGFuZGxlciYmIGNhbGxiYWNr
KQotewotICAgIG1fY29uc3RyYWludHMgPSBjb25zdHJhaW50czsKLSAgICBtX3Byb3h5LmFwcGx5
Q29uc3RyYWludHMoY29uc3RyYWludHMsIFdURk1vdmUoY2FsbGJhY2spKTsKLX0KLQotI2lmIEVO
QUJMRShHUFVfUFJPQ0VTUykKLXZvaWQgUmVtb3RlUmVhbHRpbWVBdWRpb1NvdXJjZTo6Z3B1UHJv
Y2Vzc0Nvbm5lY3Rpb25EaWRDbG9zZShHUFVQcm9jZXNzQ29ubmVjdGlvbiYpCi17Ci0gICAgQVNT
RVJUKG1fcHJveHkuc2hvdWxkQ2FwdHVyZUluR1BVUHJvY2VzcygpKTsKLSAgICBpZiAoaXNFbmRl
ZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX21hbmFnZXIucmVtb3RlQ2FwdHVyZVNhbXBs
ZU1hbmFnZXIoKS5kaWRVcGRhdGVTb3VyY2VDb25uZWN0aW9uKGNvbm5lY3Rpb24oKSk7Ci0gICAg
bV9wcm94eS5yZXNldFJlYWR5KCk7Ci0gICAgY3JlYXRlUmVtb3RlTWVkaWFTb3VyY2UoKTsKLQot
ICAgIG1fcHJveHkuZmFpbEFwcGx5Q29uc3RyYWludENhbGxiYWNrcygiR1BVIFByb2Nlc3MgdGVy
bWluYXRlZCJfcyk7Ci0gICAgaWYgKG1fY29uc3RyYWludHMpCi0gICAgICAgIG1fcHJveHkuYXBw
bHlDb25zdHJhaW50cygqbV9jb25zdHJhaW50cywgW10oYXV0bykgeyB9KTsKLQotICAgIGlmIChp
c1Byb2R1Y2luZ0RhdGEoKSkKLSAgICAgICAgc3RhcnRQcm9kdWNpbmdEYXRhKCk7Ci0KLX0KLSNl
bmRpZgotCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L2NvY29hL1JlbW90ZVJlYWx0aW1lQXVkaW9Tb3VyY2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9jb2NvYS9SZW1vdGVSZWFsdGltZUF1ZGlvU291cmNlLmgKaW5kZXggNWNjMDFmMTNiMGZh
MzhiZTljMWU4MDZmZjZmYWNhNWRmZTgyZGE2Zi4uYTg3MzUzYWQxNjM2NmIwMzUwYjkyNDRmOTM5
ZjBhMjhkYmI2N2NlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29h
L1JlbW90ZVJlYWx0aW1lQXVkaW9Tb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvY29jb2EvUmVtb3RlUmVhbHRpbWVBdWRpb1NvdXJjZS5oCkBAIC0yNyw4NiArMjcsMjEgQEAK
IAogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCi0jaW5jbHVk
ZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKLSNpbmNsdWRlICJSZW1vdGVSZWFsdGltZU1lZGlh
U291cmNlUHJveHkuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0NhcHR1cmVEZXZpY2UuaD4KLSNpbmNs
dWRlIDxXZWJDb3JlL1JlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyLmg+Ci0jaW5jbHVkZSA8
d3RmL0RlcXVlLmg+Ci0KLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgQ29ubmVjdGlvbjsKLX0KLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uOwotY2xh
c3MgSW1hZ2VUcmFuc2ZlclNlc3Npb25WVDsKLXN0cnVjdCBNZWRpYUNvbnN0cmFpbnRzOwotfQor
I2luY2x1ZGUgIlJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2UuaCIKIAogbmFtZXNwYWNlIFdlYktp
dCB7CiAKLWNsYXNzIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOwotCi1jbGFzcyBSZW1vdGVSZWFs
dGltZUF1ZGlvU291cmNlIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3Vy
Y2UKLSNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCi0gICAgLCBwdWJsaWMgR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb246OkNsaWVudAotI2VuZGlmCi17CitjbGFzcyBSZW1vdGVSZWFsdGltZUF1ZGlvU291cmNl
IGZpbmFsIDogcHVibGljIFJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2UgewogcHVibGljOgogICAg
IHN0YXRpYyBSZWY8V2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZT4gY3JlYXRlKGNvbnN0IFdl
YkNvcmU6OkNhcHR1cmVEZXZpY2UmLCBjb25zdCBXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnRzKiwg
U3RyaW5nJiYgbmFtZSwgU3RyaW5nJiYgaGFzaFNhbHQsIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2Vy
JiwgYm9vbCBzaG91bGRDYXB0dXJlSW5HUFVQcm9jZXNzLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmll
cik7CiAgICAgflJlbW90ZVJlYWx0aW1lQXVkaW9Tb3VyY2UoKTsKIAotICAgIFdlYkNvcmU6OlJl
YWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBt
X3Byb3h5LmlkZW50aWZpZXIoKTsgfQotICAgIElQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbigp
IHsgcmV0dXJuIG1fcHJveHkuY29ubmVjdGlvbigpOyB9Ci0KLSAgICB2b2lkIHNldFNldHRpbmdz
KFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYmKTsKLQotICAgIHZvaWQgYXBw
bHlDb25zdHJhaW50c1N1Y2NlZWRlZChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlU2V0dGlu
Z3MmJik7Ci0gICAgdm9pZCBhcHBseUNvbnN0cmFpbnRzRmFpbGVkKFN0cmluZyYmIGZhaWxlZENv
bnN0cmFpbnQsIFN0cmluZyYmIGVycm9yTWVzc2FnZSkgeyBtX3Byb3h5LmFwcGx5Q29uc3RyYWlu
dHNGYWlsZWQoV1RGTW92ZShmYWlsZWRDb25zdHJhaW50KSwgV1RGTW92ZShlcnJvck1lc3NhZ2Up
KTsgfQotCi0gICAgdm9pZCBjYXB0dXJlU3RvcHBlZChib29sIGRpZEZhaWwpOwotCiAgICAgdm9p
ZCByZW1vdGVBdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgV2Vi
Q29yZTo6UGxhdGZvcm1BdWRpb0RhdGEmLCBjb25zdCBXZWJDb3JlOjpBdWRpb1N0cmVhbURlc2Ny
aXB0aW9uJiwgc2l6ZV90KTsKLSAgICB2b2lkIHNvdXJjZU11dGVkQ2hhbmdlZChib29sIHZhbHVl
LCBib29sIGludGVycnVwdGVkKTsKIAogcHJpdmF0ZToKICAgICBSZW1vdGVSZWFsdGltZUF1ZGlv
U291cmNlKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyLCBjb25zdCBXZWJD
b3JlOjpDYXB0dXJlRGV2aWNlJiwgY29uc3QgV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50cyosIFN0
cmluZyYmIG5hbWUsIFN0cmluZyYmIGhhc2hTYWx0LCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlciYs
IGJvb2wgc2hvdWxkQ2FwdHVyZUluR1BVUHJvY2VzcywgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIp
OwotCi0gICAgLy8gUmVhbHRpbWVNZWRpYVNvdXJjZQotICAgIHZvaWQgc3RhcnRQcm9kdWNpbmdE
YXRhKCkgZmluYWwgeyBtX3Byb3h5LnN0YXJ0UHJvZHVjaW5nRGF0YSgpOyB9Ci0gICAgdm9pZCBz
dG9wUHJvZHVjaW5nRGF0YSgpIGZpbmFsIHsgbV9wcm94eS5zdG9wUHJvZHVjaW5nRGF0YSgpOyB9
Ci0gICAgYm9vbCBpc0NhcHR1cmVTb3VyY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9
Ci0gICAgdm9pZCBiZWdpbkNvbmZpZ3VyYXRpb24oKSBmaW5hbCB7IH0KLSAgICB2b2lkIGNvbW1p
dENvbmZpZ3VyYXRpb24oKSBmaW5hbCB7IH0KLSAgICB2b2lkIGFwcGx5Q29uc3RyYWludHMoY29u
c3QgV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50cyYsIEFwcGx5Q29uc3RyYWludHNIYW5kbGVyJiYp
IGZpbmFsOwotICAgIHZvaWQgaGFzRW5kZWQoKSBmaW5hbDsKLSAgICBjb25zdCBXZWJDb3JlOjpS
ZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdzKCkgZmluYWwgeyByZXR1cm4gbV9z
ZXR0aW5nczsgfQotICAgIGNvbnN0IFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmls
aXRpZXMmIGNhcGFiaWxpdGllcygpIGZpbmFsIHsgcmV0dXJuIG1fY2FwYWJpbGl0aWVzOyB9Ci0g
ICAgdm9pZCB3aGVuUmVhZHkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcpPiYmIGNhbGxi
YWNrKSBmaW5hbCB7IG1fcHJveHkud2hlblJlYWR5KFdURk1vdmUoY2FsbGJhY2spKTsgfQotICAg
IFdlYkNvcmU6OkNhcHR1cmVEZXZpY2U6OkRldmljZVR5cGUgZGV2aWNlVHlwZSgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG1fcHJveHkuZGV2aWNlVHlwZSgpOyB9Ci0gICAgYm9vbCBpbnRlcnJ1cHRl
ZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJveHkuaW50ZXJydXB0ZWQoKTsgfQotCi0jaWYg
RU5BQkxFKEdQVV9QUk9DRVNTKQotICAgIC8vIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpDbGllbnQK
LSAgICB2b2lkIGdwdVByb2Nlc3NDb25uZWN0aW9uRGlkQ2xvc2UoR1BVUHJvY2Vzc0Nvbm5lY3Rp
b24mKSBmaW5hbDsKLSNlbmRpZgotCi0gICAgdm9pZCBjcmVhdGVSZW1vdGVNZWRpYVNvdXJjZSgp
OwotICAgIHZvaWQgc2V0Q2FwYWJpbGl0aWVzKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VD
YXBhYmlsaXRpZXMmJik7Ci0KLSAgICBSZW1vdGVSZWFsdGltZU1lZGlhU291cmNlUHJveHkgbV9w
cm94eTsKLSAgICBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlciYgbV9tYW5hZ2VyOwotICAgIHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6TWVkaWFDb25zdHJhaW50cz4gbV9jb25zdHJhaW50czsKLSAgICBX
ZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzIG1fY2FwYWJpbGl0aWVzOwot
ICAgIFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyBtX3NldHRpbmdzOwogfTsK
IAotaW5saW5lIHZvaWQgUmVtb3RlUmVhbHRpbWVBdWRpb1NvdXJjZTo6c291cmNlTXV0ZWRDaGFu
Z2VkKGJvb2wgbXV0ZWQsIGJvb2wgaW50ZXJydXB0ZWQpCi17Ci0gICAgbV9wcm94eS5zZXRJbnRl
cnJ1cHRlZChpbnRlcnJ1cHRlZCk7Ci0gICAgbm90aWZ5TXV0ZWRDaGFuZ2UobXV0ZWQpOwotfQot
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvY29jb2EvUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMTA1NGI2ZDI0NTU2YzkyODFiODZmODZlYzkxYTk0YTg1NmZkZDc2MAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVSZWFs
dGltZU1lZGlhU291cmNlLmNwcApAQCAtMCwwICsxLDE2OCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVSZWFsdGltZU1lZGlhU291cmNlLmgiCisK
KyNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUg
IkdQVVByb2Nlc3NDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiVXNlck1lZGlhQ2FwdHVyZU1hbmFn
ZXIuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYUNv
bnN0cmFpbnRzLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewordXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CisKK3N0YXRpYyBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlIHRvU291cmNlVHlwZShDYXB0
dXJlRGV2aWNlOjpEZXZpY2VUeXBlIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAg
Y2FzZSBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpNaWNyb3Bob25lOgorICAgICAgICByZXR1
cm4gUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6QXVkaW87CisgICAgY2FzZSBDYXB0dXJlRGV2
aWNlOjpEZXZpY2VUeXBlOjpDYW1lcmE6CisgICAgICAgIHJldHVybiBSZWFsdGltZU1lZGlhU291
cmNlOjpUeXBlOjpWaWRlbzsKKyAgICBjYXNlIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OlNj
cmVlbjoKKyAgICAgICAgcmV0dXJuIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlNjcmVlbjsK
KyAgICBjYXNlIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OldpbmRvdzoKKyAgICAgICAgcmV0
dXJuIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OldpbmRvdzsKKyAgICBjYXNlIENhcHR1cmVE
ZXZpY2U6OkRldmljZVR5cGU6OlN5c3RlbUF1ZGlvOgorICAgICAgICByZXR1cm4gUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6VHlwZTo6U3lzdGVtQXVkaW87CisgICAgY2FzZSBDYXB0dXJlRGV2aWNlOjpE
ZXZpY2VUeXBlOjpVbmtub3duOgorICAgIGNhc2UgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6
U3BlYWtlcjoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBS
ZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbzsKKyAgICB9Cit9CisKK1JlbW90ZVJlYWx0
aW1lTWVkaWFTb3VyY2U6OlJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2UoUmVhbHRpbWVNZWRpYVNv
dXJjZUlkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgQ2FwdHVyZURldmljZSYgZGV2aWNlLCBj
b25zdCBNZWRpYUNvbnN0cmFpbnRzKiBjb25zdHJhaW50cywgU3RyaW5nJiYgbmFtZSwgU3RyaW5n
JiYgaGFzaFNhbHQsIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyJiBtYW5hZ2VyLCBib29sIHNob3Vs
ZENhcHR1cmVJbkdQVVByb2Nlc3MsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJZGVudGlmaWVyKQorICAg
IDogUmVhbHRpbWVNZWRpYVNvdXJjZSh0b1NvdXJjZVR5cGUoZGV2aWNlLnR5cGUoKSksIFdURk1v
dmUobmFtZSksIFN0cmluZyB7IGRldmljZS5wZXJzaXN0ZW50SWQoKSB9LCBXVEZNb3ZlKGhhc2hT
YWx0KSwgcGFnZUlkZW50aWZpZXIpCisgICAgLCBtX3Byb3h5KGlkZW50aWZpZXIsIGRldmljZSwg
c2hvdWxkQ2FwdHVyZUluR1BVUHJvY2VzcywgY29uc3RyYWludHMpCisgICAgLCBtX21hbmFnZXIo
bWFuYWdlcikKK3sKK30KKworUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZTo6UmVtb3RlUmVhbHRp
bWVNZWRpYVNvdXJjZShSZW1vdGVSZWFsdGltZU1lZGlhU291cmNlUHJveHkmJiBwcm94eSwgU3Ry
aW5nJiYgbmFtZSwgU3RyaW5nJiYgaGFzaFNhbHQsIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyJiBt
YW5hZ2VyKQorICAgIDogUmVhbHRpbWVNZWRpYVNvdXJjZSh0b1NvdXJjZVR5cGUocHJveHkuZGV2
aWNlKCkudHlwZSgpKSwgV1RGTW92ZShuYW1lKSwgU3RyaW5nIHsgcHJveHkuZGV2aWNlKCkucGVy
c2lzdGVudElkKCkgfSwgV1RGTW92ZShoYXNoU2FsdCksIHByb3h5LnBhZ2VJZGVudGlmaWVyKCkp
CisgICAgLCBtX3Byb3h5KFdURk1vdmUocHJveHkpKQorICAgICwgbV9tYW5hZ2VyKG1hbmFnZXIp
Cit7Cit9CisKK3ZvaWQgUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZTo6Y3JlYXRlUmVtb3RlTWVk
aWFTb3VyY2UoKQoreworICAgIG1fcHJveHkuY3JlYXRlUmVtb3RlTWVkaWFTb3VyY2UoZGV2aWNl
SURIYXNoU2FsdCgpLCBwYWdlSWRlbnRpZmllcigpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJl
ZiB7ICp0aGlzIH1dKGJvb2wgc3VjY2VlZGVkLCBhdXRvJiYgZXJyb3JNZXNzYWdlLCBhdXRvJiYg
c2V0dGluZ3MsIGF1dG8mJiBjYXBhYmlsaXRpZXMsIGF1dG8mJiwgYXV0bywgYXV0bykgeworICAg
ICAgICBpZiAoIXN1Y2NlZWRlZCkgeworICAgICAgICAgICAgbV9wcm94eS5kaWRGYWlsKFdURk1v
dmUoZXJyb3JNZXNzYWdlKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAg
ICAgICBmcHJpbnRmKHN0ZGVyciwgIlJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2U6OmNyZWF0ZVJl
bW90ZU1lZGlhU291cmNlICVwICVkIFxuIiwgdGhpcywgKGludCkgc2V0dGluZ3Mud2lkdGgoKSk7
CisgICAgICAgIHNldFNldHRpbmdzKFdURk1vdmUoc2V0dGluZ3MpKTsKKyAgICAgICAgc2V0Q2Fw
YWJpbGl0aWVzKFdURk1vdmUoY2FwYWJpbGl0aWVzKSk7CisgICAgICAgIHNldE5hbWUoU3RyaW5n
IHsgbV9zZXR0aW5ncy5sYWJlbCgpLnN0cmluZygpIH0pOworCisgICAgICAgIG1fcHJveHkuc2V0
QXNSZWFkeSgpOworICAgICAgICBpZiAobV9wcm94eS5zaG91bGRDYXB0dXJlSW5HUFVQcm9jZXNz
KCkpCisgICAgICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNz
Q29ubmVjdGlvbigpLmFkZENsaWVudCgqdGhpcyk7CisgICAgfSwgbV9wcm94eS5zaG91bGRDYXB0
dXJlSW5HUFVQcm9jZXNzKCkgJiYgbV9tYW5hZ2VyLnNob3VsZFVzZUdQVVByb2Nlc3NSZW1vdGVG
cmFtZXMoKSk7Cit9CisKK3ZvaWQgUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZTo6cmVtb3ZlQXND
bGllbnQoKQoreworICAgIGlmIChtX3Byb3h5LnNob3VsZENhcHR1cmVJbkdQVVByb2Nlc3MoKSkg
eworICAgICAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LmV4aXN0aW5nR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKSkKKyAgICAgICAgICAgIGNvbm5lY3Rpb24t
PnJlbW92ZUNsaWVudCgqdGhpcyk7CisgICAgfQorfQorCit2b2lkIFJlbW90ZVJlYWx0aW1lTWVk
aWFTb3VyY2U6OnNldENhcGFiaWxpdGllcyhSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVz
JiYgY2FwYWJpbGl0aWVzKQoreworICAgIG1fY2FwYWJpbGl0aWVzID0gV1RGTW92ZShjYXBhYmls
aXRpZXMpOworfQorCit2b2lkIFJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldFNldHRpbmdz
KFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYmIHNldHRpbmdzKQoreworICAgIGZwcmludGYo
c3RkZXJyLCAiUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0U2V0dGluZ3MxICVwICVkIFxu
IiwgdGhpcywgKGludCkgbV9zZXR0aW5ncy53aWR0aCgpKTsKKyAgICBhdXRvIGNoYW5nZWQgPSBt
X3NldHRpbmdzLmRpZmZlcmVuY2Uoc2V0dGluZ3MpOworICAgIG1fc2V0dGluZ3MgPSBXVEZNb3Zl
KHNldHRpbmdzKTsKKyAgICBmcHJpbnRmKHN0ZGVyciwgIlJlbW90ZVJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OnNldFNldHRpbmdzMiAlcCAlZCBcbiIsIHRoaXMsIChpbnQpIG1fc2V0dGluZ3Mud2lkdGgo
KSk7CisgICAgbm90aWZ5U2V0dGluZ3NEaWRDaGFuZ2VPYnNlcnZlcnMoY2hhbmdlZCk7Cit9CisK
K3ZvaWQgUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZTo6YXBwbHlDb25zdHJhaW50c1N1Y2NlZWRl
ZChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmJiBzZXR0aW5ncykKK3sKKyAg
ICBzZXRTZXR0aW5ncyhXVEZNb3ZlKHNldHRpbmdzKSk7CisgICAgbV9wcm94eS5hcHBseUNvbnN0
cmFpbnRzU3VjY2VlZGVkKCk7Cit9CisKK3ZvaWQgUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZTo6
aGFzRW5kZWQoKQoreworICAgIGlmIChtX3Byb3h5LmlzRW5kZWQoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgbV9wcm94eS5lbmQoKTsKKyAgICBtX21hbmFnZXIucmVtb3ZlU291cmNlKGlkZW50
aWZpZXIoKSk7CisgICAgbV9tYW5hZ2VyLnJlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyKCkucmVt
b3ZlU291cmNlKGlkZW50aWZpZXIoKSk7Cit9CisKK3ZvaWQgUmVtb3RlUmVhbHRpbWVNZWRpYVNv
dXJjZTo6Y2FwdHVyZVN0b3BwZWQoYm9vbCBkaWRGYWlsKQoreworICAgIGlmIChkaWRGYWlsKQor
ICAgICAgICBjYXB0dXJlRmFpbGVkKCk7CisgICAgZWxzZQorICAgICAgICBlbmQoKTsKKyAgICBo
YXNFbmRlZCgpOworfQorCit2b2lkIFJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2U6OmFwcGx5Q29u
c3RyYWludHMoY29uc3QgTWVkaWFDb25zdHJhaW50cyYgY29uc3RyYWludHMsIEFwcGx5Q29uc3Ry
YWludHNIYW5kbGVyJiYgY2FsbGJhY2spCit7CisgICAgbV9jb25zdHJhaW50cyA9IGNvbnN0cmFp
bnRzOworICAgIG1fcHJveHkuYXBwbHlDb25zdHJhaW50cyhjb25zdHJhaW50cywgV1RGTW92ZShj
YWxsYmFjaykpOworfQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQordm9pZCBSZW1vdGVSZWFs
dGltZU1lZGlhU291cmNlOjpncHVQcm9jZXNzQ29ubmVjdGlvbkRpZENsb3NlKEdQVVByb2Nlc3ND
b25uZWN0aW9uJikKK3sKKyAgICBBU1NFUlQobV9wcm94eS5zaG91bGRDYXB0dXJlSW5HUFVQcm9j
ZXNzKCkpOworICAgIGlmIChpc0VuZGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fbWFu
YWdlci5yZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlcigpLmRpZFVwZGF0ZVNvdXJjZUNvbm5lY3Rp
b24oY29ubmVjdGlvbigpKTsKKyAgICBtX3Byb3h5LnJlc2V0UmVhZHkoKTsKKyAgICBjcmVhdGVS
ZW1vdGVNZWRpYVNvdXJjZSgpOworCisgICAgbV9wcm94eS5mYWlsQXBwbHlDb25zdHJhaW50Q2Fs
bGJhY2tzKCJHUFUgUHJvY2VzcyB0ZXJtaW5hdGVkIl9zKTsKKyAgICBpZiAobV9jb25zdHJhaW50
cykKKyAgICAgICAgbV9wcm94eS5hcHBseUNvbnN0cmFpbnRzKCptX2NvbnN0cmFpbnRzLCBbXShh
dXRvKSB7IH0pOworCisgICAgaWYgKGlzUHJvZHVjaW5nRGF0YSgpKQorICAgICAgICBzdGFydFBy
b2R1Y2luZ0RhdGEoKTsKKworfQorI2VuZGlmCisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZS5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZVJlYWx0aW1lTWVkaWFTb3Vy
Y2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi43ZjVkMzIyZTMxNzYxZTkyNzAyZTc1Mzk0MzgwOTEzMzZlOGE4YWQ2
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90
ZVJlYWx0aW1lTWVkaWFTb3VyY2UuaApAQCAtMCwwICsxLDEwMSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShNRURJQV9TVFJFQU0p
CisKKyNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIlJlbW90ZVJl
YWx0aW1lTWVkaWFTb3VyY2VQcm94eS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUmVhbHRpbWVNZWRp
YVNvdXJjZS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgVXNlck1lZGlhQ2FwdHVy
ZU1hbmFnZXI7CisKK2NsYXNzIFJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2UgOiBwdWJsaWMgV2Vi
Q29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZQorI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKyAgICAs
IHB1YmxpYyBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6Q2xpZW50CisjZW5kaWYKK3sKK3B1YmxpYzoK
KyAgICBSZW1vdGVSZWFsdGltZU1lZGlhU291cmNlKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3Vy
Y2VJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpDYXB0dXJlRGV2aWNlJiwgY29uc3QgV2ViQ29y
ZTo6TWVkaWFDb25zdHJhaW50cyosIFN0cmluZyYmIG5hbWUsIFN0cmluZyYmIGhhc2hTYWx0LCBV
c2VyTWVkaWFDYXB0dXJlTWFuYWdlciYsIGJvb2wgc2hvdWxkQ2FwdHVyZUluR1BVUHJvY2Vzcywg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOworICAgIFJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2Uo
UmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZVByb3h5JiYsIFN0cmluZyYmIG5hbWUsIFN0cmluZyYm
IGhhc2hTYWx0LCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlciYpOworCisgICAgV2ViQ29yZTo6UmVh
bHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1f
cHJveHkuaWRlbnRpZmllcigpOyB9CisgICAgSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uKCkg
eyByZXR1cm4gbV9wcm94eS5jb25uZWN0aW9uKCk7IH0KKworICAgIHZvaWQgc2V0U2V0dGluZ3Mo
V2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiYpOworCisgICAgdm9pZCBhcHBs
eUNvbnN0cmFpbnRzU3VjY2VlZGVkKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5n
cyYmKTsKKyAgICB2b2lkIGFwcGx5Q29uc3RyYWludHNGYWlsZWQoU3RyaW5nJiYgZmFpbGVkQ29u
c3RyYWludCwgU3RyaW5nJiYgZXJyb3JNZXNzYWdlKSB7IG1fcHJveHkuYXBwbHlDb25zdHJhaW50
c0ZhaWxlZChXVEZNb3ZlKGZhaWxlZENvbnN0cmFpbnQpLCBXVEZNb3ZlKGVycm9yTWVzc2FnZSkp
OyB9CisKKyAgICB2b2lkIGNhcHR1cmVTdG9wcGVkKGJvb2wgZGlkRmFpbCk7CisgICAgdm9pZCBz
b3VyY2VNdXRlZENoYW5nZWQoYm9vbCB2YWx1ZSwgYm9vbCBpbnRlcnJ1cHRlZCk7CisKK3Byb3Rl
Y3RlZDoKKyAgICB2b2lkIGNyZWF0ZVJlbW90ZU1lZGlhU291cmNlKCk7CisgICAgdm9pZCByZW1v
dmVBc0NsaWVudCgpOworCisgICAgUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZVByb3h5JiBwcm94
eSgpIHsgcmV0dXJuIG1fcHJveHk7IH0KKyAgICBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlciYgbWFu
YWdlcigpIHsgcmV0dXJuIG1fbWFuYWdlcjsgfQorCisgICAgdm9pZCBzZXRDYXBhYmlsaXRpZXMo
V2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYmKTsKKworICAgIGNvbnN0
IFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgc2V0dGluZ3MoKSBmaW5hbCB7
IHJldHVybiBtX3NldHRpbmdzOyB9CisgICAgY29uc3QgV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNv
dXJjZUNhcGFiaWxpdGllcyYgY2FwYWJpbGl0aWVzKCkgZmluYWwgeyByZXR1cm4gbV9jYXBhYmls
aXRpZXM7IH0KKworcHJpdmF0ZToKKyAgICAvLyBSZWFsdGltZU1lZGlhU291cmNlCisgICAgdm9p
ZCBzdGFydFByb2R1Y2luZ0RhdGEoKSBmaW5hbCB7IG1fcHJveHkuc3RhcnRQcm9kdWNpbmdEYXRh
KCk7IH0KKyAgICB2b2lkIHN0b3BQcm9kdWNpbmdEYXRhKCkgZmluYWwgeyBtX3Byb3h5LnN0b3BQ
cm9kdWNpbmdEYXRhKCk7IH0KKyAgICBib29sIGlzQ2FwdHVyZVNvdXJjZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2b2lkIGFwcGx5Q29uc3RyYWludHMoY29uc3QgV2ViQ29y
ZTo6TWVkaWFDb25zdHJhaW50cyYsIEFwcGx5Q29uc3RyYWludHNIYW5kbGVyJiYpIGZpbmFsOwor
ICAgIHZvaWQgaGFzRW5kZWQoKSBmaW5hbDsKKyAgICB2b2lkIHdoZW5SZWFkeShDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFN0cmluZyk+JiYgY2FsbGJhY2spIGZpbmFsIHsgbV9wcm94eS53aGVuUmVh
ZHkoV1RGTW92ZShjYWxsYmFjaykpOyB9CisgICAgV2ViQ29yZTo6Q2FwdHVyZURldmljZTo6RGV2
aWNlVHlwZSBkZXZpY2VUeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wcm94eS5kZXZpY2VU
eXBlKCk7IH0KKyAgICBib29sIGludGVycnVwdGVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9w
cm94eS5pbnRlcnJ1cHRlZCgpOyB9CisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisgICAgLy8g
R1BVUHJvY2Vzc0Nvbm5lY3Rpb246OkNsaWVudAorICAgIHZvaWQgZ3B1UHJvY2Vzc0Nvbm5lY3Rp
b25EaWRDbG9zZShHUFVQcm9jZXNzQ29ubmVjdGlvbiYpIGZpbmFsOworI2VuZGlmCisKKyAgICBS
ZW1vdGVSZWFsdGltZU1lZGlhU291cmNlUHJveHkgbV9wcm94eTsKKyAgICBVc2VyTWVkaWFDYXB0
dXJlTWFuYWdlciYgbV9tYW5hZ2VyOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6TWVkaWFD
b25zdHJhaW50cz4gbV9jb25zdHJhaW50czsKKyAgICBXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291
cmNlQ2FwYWJpbGl0aWVzIG1fY2FwYWJpbGl0aWVzOworICAgIFdlYkNvcmU6OlJlYWx0aW1lTWVk
aWFTb3VyY2VTZXR0aW5ncyBtX3NldHRpbmdzOworfTsKKworaW5saW5lIHZvaWQgUmVtb3RlUmVh
bHRpbWVNZWRpYVNvdXJjZTo6c291cmNlTXV0ZWRDaGFuZ2VkKGJvb2wgbXV0ZWQsIGJvb2wgaW50
ZXJydXB0ZWQpCit7CisgICAgbV9wcm94eS5zZXRJbnRlcnJ1cHRlZChpbnRlcnJ1cHRlZCk7Cisg
ICAgbm90aWZ5TXV0ZWRDaGFuZ2UobXV0ZWQpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVt
b3RlUmVhbHRpbWVNZWRpYVNvdXJjZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
Y29jb2EvUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZVByb3h5LmgKaW5kZXggYzQ0YzRiZTU4Nzdh
YzJhMTI1ZGM4NWI1MDJjZDdiM2U5YzEyOWNiZC4uZjRhOGUzY2NkNDJhZGZkNTk2MTU4NTUxNGJm
NDNiYWY2MTkyNGZkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29h
L1JlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9jb2NvYS9SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlUHJveHkuaApAQCAtNTIsNiAr
NTIsNyBAQCBwdWJsaWM6CiAKICAgICBJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24oKTsKICAg
ICBXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29u
c3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIg
cGFnZUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJZGVudGlmaWVyOyB9CiAgICAg
V2ViQ29yZTo6Q2FwdHVyZURldmljZTo6RGV2aWNlVHlwZSBkZXZpY2VUeXBlKCkgY29uc3QgeyBy
ZXR1cm4gbV9kZXZpY2UudHlwZSgpOyB9CiAgICAgY29uc3QgV2ViQ29yZTo6Q2FwdHVyZURldmlj
ZSYgZGV2aWNlKCkgY29uc3QgeyByZXR1cm4gbV9kZXZpY2U7IH0KICAgICBib29sIHNob3VsZENh
cHR1cmVJbkdQVVByb2Nlc3MoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZENhcHR1cmVJbkdQVVBy
b2Nlc3M7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1v
dGVSZWFsdGltZVZpZGVvU291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2Nv
YS9SZW1vdGVSZWFsdGltZVZpZGVvU291cmNlLmNwcAppbmRleCA4ODkzMGMyZWNjYTg2NmYwMTU2
ZTJjZGRkNjE3ZWIyYTVhNDgzMzA2Li5jMjBhNTZjNDhhMTE4Yzg5MjNiY2E0ZmIxZjdhNjc0Nzc4
Yjc3OWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVtb3Rl
UmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2Nv
Y29hL1JlbW90ZVJlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCkBAIC0yOSwxMSArMjksNiBAQAogI2lm
IFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCiAjaW5jbHVkZSAiVXNl
ck1lZGlhQ2FwdHVyZU1hbmFnZXIuaCIKLSNpbmNsdWRlICJVc2VyTWVkaWFDYXB0dXJlTWFuYWdl
ck1lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eU1lc3Nh
Z2VzLmgiCi0jaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCi0jaW5jbHVkZSAiV2Vi
UHJvY2Vzcy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFDb25zdHJhaW50cy5oPgogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtNDgsNTkgKzQzLDIz
IEBAIFJlZjxSZWFsdGltZU1lZGlhU291cmNlPiBSZW1vdGVSZWFsdGltZVZpZGVvU291cmNlOjpj
cmVhdGUoY29uc3QgQ2FwdHVyZURldmljZSYKIH0KIAogUmVtb3RlUmVhbHRpbWVWaWRlb1NvdXJj
ZTo6UmVtb3RlUmVhbHRpbWVWaWRlb1NvdXJjZShSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmll
ciBpZGVudGlmaWVyLCBjb25zdCBDYXB0dXJlRGV2aWNlJiBkZXZpY2UsIGNvbnN0IE1lZGlhQ29u
c3RyYWludHMqIGNvbnN0cmFpbnRzLCBTdHJpbmcmJiBoYXNoU2FsdCwgVXNlck1lZGlhQ2FwdHVy
ZU1hbmFnZXImIG1hbmFnZXIsIGJvb2wgc2hvdWxkQ2FwdHVyZUluR1BVUHJvY2VzcywgUGFnZUlk
ZW50aWZpZXIgcGFnZUlkZW50aWZpZXIpCi0gICAgOiBSZWFsdGltZU1lZGlhU291cmNlKFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlZpZGVvLCBTdHJpbmcgeyBkZXZpY2UubGFiZWwoKSB9LCBT
dHJpbmcgeyBkZXZpY2UucGVyc2lzdGVudElkKCkgfSwgV1RGTW92ZShoYXNoU2FsdCksIHBhZ2VJ
ZGVudGlmaWVyKQotICAgICwgbV9wcm94eShpZGVudGlmaWVyLCBkZXZpY2UsIHNob3VsZENhcHR1
cmVJbkdQVVByb2Nlc3MsIGNvbnN0cmFpbnRzKQotICAgICwgbV9tYW5hZ2VyKG1hbmFnZXIpCisg
ICAgOiBSZW1vdGVSZWFsdGltZU1lZGlhU291cmNlKGlkZW50aWZpZXIsIGRldmljZSwgY29uc3Ry
YWludHMsIFN0cmluZyB7IGRldmljZS5sYWJlbCgpIH0sIFdURk1vdmUoaGFzaFNhbHQpLCBtYW5h
Z2VyLCBzaG91bGRDYXB0dXJlSW5HUFVQcm9jZXNzLCBwYWdlSWRlbnRpZmllcikKIHsKIH0KIAot
UmVtb3RlUmVhbHRpbWVWaWRlb1NvdXJjZTo6UmVtb3RlUmVhbHRpbWVWaWRlb1NvdXJjZShSZW1v
dGVSZWFsdGltZU1lZGlhU291cmNlUHJveHkmJiBwcm94eSwgU3RyaW5nJiYgaGFzaFNhbHQsIFVz
ZXJNZWRpYUNhcHR1cmVNYW5hZ2VyJiBtYW5hZ2VyLCBQYWdlSWRlbnRpZmllciBwYWdlSWRlbnRp
ZmllcikKLSAgICA6IFJlYWx0aW1lTWVkaWFTb3VyY2UoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlw
ZTo6VmlkZW8sIFN0cmluZyB7IHByb3h5LmRldmljZSgpLmxhYmVsKCkgfSwgU3RyaW5nIHsgcHJv
eHkuZGV2aWNlKCkucGVyc2lzdGVudElkKCkgfSwgV1RGTW92ZShoYXNoU2FsdCksIHBhZ2VJZGVu
dGlmaWVyKQotICAgICwgbV9wcm94eShXVEZNb3ZlKHByb3h5KSkKLSAgICAsIG1fbWFuYWdlciht
YW5hZ2VyKQorUmVtb3RlUmVhbHRpbWVWaWRlb1NvdXJjZTo6UmVtb3RlUmVhbHRpbWVWaWRlb1Nv
dXJjZShSZW1vdGVSZWFsdGltZU1lZGlhU291cmNlUHJveHkmJiBwcm94eSwgU3RyaW5nJiYgbmFt
ZSwgU3RyaW5nJiYgaGFzaFNhbHQsIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyJiBtYW5hZ2VyKQor
ICAgIDogUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZShXVEZNb3ZlKHByb3h5KSwgV1RGTW92ZShu
YW1lKSwgV1RGTW92ZShoYXNoU2FsdCksIG1hbmFnZXIpCiB7CiB9CiAKLXZvaWQgUmVtb3RlUmVh
bHRpbWVWaWRlb1NvdXJjZTo6Y3JlYXRlUmVtb3RlTWVkaWFTb3VyY2UoKQotewotICAgIG1fcHJv
eHkuY3JlYXRlUmVtb3RlTWVkaWFTb3VyY2UoZGV2aWNlSURIYXNoU2FsdCgpLCBwYWdlSWRlbnRp
ZmllcigpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dKGJvb2wgc3VjY2Vl
ZGVkLCBhdXRvJiYgZXJyb3JNZXNzYWdlLCBhdXRvJiYgc2V0dGluZ3MsIGF1dG8mJiBjYXBhYmls
aXRpZXMsIGF1dG8mJiwgYXV0bywgYXV0bykgewotICAgICAgICBpZiAoIXN1Y2NlZWRlZCkgewot
ICAgICAgICAgICAgbV9wcm94eS5kaWRGYWlsKFdURk1vdmUoZXJyb3JNZXNzYWdlKSk7Ci0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBzZXRTZXR0aW5ncyhXVEZNb3Zl
KHNldHRpbmdzKSk7Ci0gICAgICAgIHNldENhcGFiaWxpdGllcyhXVEZNb3ZlKGNhcGFiaWxpdGll
cykpOwotCi0gICAgICAgIG1fcHJveHkuc2V0QXNSZWFkeSgpOwotICAgICAgICBpZiAobV9wcm94
eS5zaG91bGRDYXB0dXJlSW5HUFVQcm9jZXNzKCkpCi0gICAgICAgICAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLmFkZENsaWVudCgqdGhpcyk7
Ci0gICAgfSwgbV9wcm94eS5zaG91bGRDYXB0dXJlSW5HUFVQcm9jZXNzKCkgJiYgbV9tYW5hZ2Vy
LnNob3VsZFVzZUdQVVByb2Nlc3NSZW1vdGVGcmFtZXMoKSk7Ci19Ci0KIFJlbW90ZVJlYWx0aW1l
VmlkZW9Tb3VyY2U6On5SZW1vdGVSZWFsdGltZVZpZGVvU291cmNlKCkKIHsKLSAgICBpZiAobV9w
cm94eS5zaG91bGRDYXB0dXJlSW5HUFVQcm9jZXNzKCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIGNv
bm5lY3Rpb24gPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5leGlzdGluZ0dQVVByb2Nlc3NDb25u
ZWN0aW9uKCkpCi0gICAgICAgICAgICBjb25uZWN0aW9uLT5yZW1vdmVDbGllbnQoKnRoaXMpOwot
ICAgIH0KKyAgICByZW1vdmVBc0NsaWVudCgpOwogfQogCiB2b2lkIFJlbW90ZVJlYWx0aW1lVmlk
ZW9Tb3VyY2U6OmVuZFByb2R1Y2luZ0RhdGEoKQogewotICAgIG1fcHJveHkuZW5kUHJvZHVjaW5n
RGF0YSgpOwotfQotCi12b2lkIFJlbW90ZVJlYWx0aW1lVmlkZW9Tb3VyY2U6OnNldENhcGFiaWxp
dGllcyhSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiYgY2FwYWJpbGl0aWVzKQotewot
ICAgIG1fY2FwYWJpbGl0aWVzID0gV1RGTW92ZShjYXBhYmlsaXRpZXMpOwotfQotCi12b2lkIFJl
bW90ZVJlYWx0aW1lVmlkZW9Tb3VyY2U6OnNldFNldHRpbmdzKFJlYWx0aW1lTWVkaWFTb3VyY2VT
ZXR0aW5ncyYmIHNldHRpbmdzKQotewotICAgIGF1dG8gY2hhbmdlZCA9IG1fc2V0dGluZ3MuZGlm
ZmVyZW5jZShzZXR0aW5ncyk7Ci0gICAgbV9zZXR0aW5ncyA9IFdURk1vdmUoc2V0dGluZ3MpOwot
ICAgIG5vdGlmeVNldHRpbmdzRGlkQ2hhbmdlT2JzZXJ2ZXJzKGNoYW5nZWQpOworICAgIHByb3h5
KCkuZW5kUHJvZHVjaW5nRGF0YSgpOwogfQogCiBib29sIFJlbW90ZVJlYWx0aW1lVmlkZW9Tb3Vy
Y2U6OnNldFNob3VsZEFwcGx5Um90YXRpb24oYm9vbCBzaG91bGRBcHBseVJvdGF0aW9uKQpAQCAt
MTA5LDc1ICs2OCwyOSBAQCBib29sIFJlbW90ZVJlYWx0aW1lVmlkZW9Tb3VyY2U6OnNldFNob3Vs
ZEFwcGx5Um90YXRpb24oYm9vbCBzaG91bGRBcHBseVJvdGF0aW9uKQogICAgIHJldHVybiB0cnVl
OwogfQogCi12b2lkIFJlbW90ZVJlYWx0aW1lVmlkZW9Tb3VyY2U6OmFwcGx5Q29uc3RyYWludHNT
dWNjZWVkZWQoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiYgc2V0dGluZ3Mp
Ci17Ci0gICAgc2V0U2V0dGluZ3MoV1RGTW92ZShzZXR0aW5ncykpOwotICAgIG1fcHJveHkuYXBw
bHlDb25zdHJhaW50c1N1Y2NlZWRlZCgpOwotfQotCi12b2lkIFJlbW90ZVJlYWx0aW1lVmlkZW9T
b3VyY2U6Omhhc0VuZGVkKCkKLXsKLSAgICBpZiAobV9wcm94eS5pc0VuZGVkKCkpCi0gICAgICAg
IHJldHVybjsKLQotICAgIG1fcHJveHkuZW5kKCk7Ci0gICAgbV9tYW5hZ2VyLnJlbW92ZVNvdXJj
ZShpZGVudGlmaWVyKCkpOwotICAgIG1fbWFuYWdlci5yZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdl
cigpLnJlbW92ZVNvdXJjZShpZGVudGlmaWVyKCkpOwotfQotCiBSZWY8UmVhbHRpbWVNZWRpYVNv
dXJjZT4gUmVtb3RlUmVhbHRpbWVWaWRlb1NvdXJjZTo6Y2xvbmUoKQogewotICAgIGlmIChpc0Vu
ZGVkKCkgfHwgbV9wcm94eS5pc0VuZGVkKCkpCisgICAgaWYgKGlzRW5kZWQoKSB8fCBwcm94eSgp
LmlzRW5kZWQoKSkKICAgICAgICAgcmV0dXJuICp0aGlzOwogCi0gICAgYXV0byBzb3VyY2UgPSBh
ZG9wdFJlZigqbmV3IFJlbW90ZVJlYWx0aW1lVmlkZW9Tb3VyY2UobV9wcm94eS5jbG9uZSgpLCBk
ZXZpY2VJREhhc2hTYWx0KCksIG1fbWFuYWdlciwgcGFnZUlkZW50aWZpZXIoKSkpOworICAgIGF1
dG8gc291cmNlID0gYWRvcHRSZWYoKm5ldyBSZW1vdGVSZWFsdGltZVZpZGVvU291cmNlKHByb3h5
KCkuY2xvbmUoKSwgU3RyaW5nIHsgbmFtZSgpIH0sIGRldmljZUlESGFzaFNhbHQoKSwgbWFuYWdl
cigpKSk7CiAKICAgICBzb3VyY2UtPnNldFNldHRpbmdzKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0
aW5ncyB7IHNldHRpbmdzKCkgfSk7CiAgICAgc291cmNlLT5zZXRDYXBhYmlsaXRpZXMoUmVhbHRp
bWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyB7IGNhcGFiaWxpdGllcygpIH0pOwogCi0gICAgbV9t
YW5hZ2VyLmFkZFNvdXJjZShzb3VyY2UuY29weVJlZigpKTsKLSAgICBtX21hbmFnZXIucmVtb3Rl
Q2FwdHVyZVNhbXBsZU1hbmFnZXIoKS5hZGRTb3VyY2Uoc291cmNlLmNvcHlSZWYoKSk7Ci0KLSAg
ICBtX3Byb3h5LmNyZWF0ZVJlbW90ZUNsb25lU291cmNlKHNvdXJjZS0+aWRlbnRpZmllcigpKTsK
KyAgICBtYW5hZ2VyKCkuYWRkU291cmNlKHNvdXJjZS5jb3B5UmVmKCkpOworICAgIG1hbmFnZXIo
KS5yZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlcigpLmFkZFNvdXJjZShzb3VyY2UuY29weVJlZigp
KTsKKyAgICBwcm94eSgpLmNyZWF0ZVJlbW90ZUNsb25lU291cmNlKHNvdXJjZS0+aWRlbnRpZmll
cigpKTsKIAogICAgIHJldHVybiBzb3VyY2U7CiB9CiAKLXZvaWQgUmVtb3RlUmVhbHRpbWVWaWRl
b1NvdXJjZTo6Y2FwdHVyZVN0b3BwZWQoYm9vbCBkaWRGYWlsKQordm9pZCBSZW1vdGVSZWFsdGlt
ZVZpZGVvU291cmNlOjpyZW1vdGVWaWRlb0ZyYW1lQXZhaWxhYmxlKFZpZGVvRnJhbWUmIGZyYW1l
LCBWaWRlb0ZyYW1lVGltZU1ldGFkYXRhIG1ldGFkYXRhKQogewotICAgIGlmIChkaWRGYWlsKQot
ICAgICAgICBjYXB0dXJlRmFpbGVkKCk7Ci0gICAgZWxzZQotICAgICAgICBlbmQoKTsKLSAgICBo
YXNFbmRlZCgpOworICAgIHNldEludHJpbnNpY1NpemUoZXhwYW5kZWRJbnRTaXplKGZyYW1lLnBy
ZXNlbnRhdGlvblNpemUoKSkpOworICAgIHZpZGVvRnJhbWVBdmFpbGFibGUoZnJhbWUsIG1ldGFk
YXRhKTsKIH0KIAotdm9pZCBSZW1vdGVSZWFsdGltZVZpZGVvU291cmNlOjphcHBseUNvbnN0cmFp
bnRzKGNvbnN0IE1lZGlhQ29uc3RyYWludHMmIGNvbnN0cmFpbnRzLCBBcHBseUNvbnN0cmFpbnRz
SGFuZGxlciYmIGNhbGxiYWNrKQotewotICAgIG1fY29uc3RyYWludHMgPSBjb25zdHJhaW50czsK
LSAgICBtX3Byb3h5LmFwcGx5Q29uc3RyYWludHMoY29uc3RyYWludHMsIFdURk1vdmUoY2FsbGJh
Y2spKTsKLX0KLQotI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKLXZvaWQgUmVtb3RlUmVhbHRpbWVW
aWRlb1NvdXJjZTo6Z3B1UHJvY2Vzc0Nvbm5lY3Rpb25EaWRDbG9zZShHUFVQcm9jZXNzQ29ubmVj
dGlvbiYpCi17Ci0gICAgQVNTRVJUKG1fcHJveHkuc2hvdWxkQ2FwdHVyZUluR1BVUHJvY2Vzcygp
KTsKLSAgICBpZiAoaXNFbmRlZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX21hbmFnZXIu
cmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIoKS5kaWRVcGRhdGVTb3VyY2VDb25uZWN0aW9uKGNv
bm5lY3Rpb24oKSk7Ci0gICAgbV9wcm94eS5yZXNldFJlYWR5KCk7Ci0gICAgY3JlYXRlUmVtb3Rl
TWVkaWFTb3VyY2UoKTsKLQotICAgIG1fcHJveHkuZmFpbEFwcGx5Q29uc3RyYWludENhbGxiYWNr
cygiR1BVIFByb2Nlc3MgdGVybWluYXRlZCJfcyk7Ci0gICAgaWYgKG1fY29uc3RyYWludHMpCi0g
ICAgICAgIG1fcHJveHkuYXBwbHlDb25zdHJhaW50cygqbV9jb25zdHJhaW50cywgW10oYXV0bykg
eyB9KTsKLQotICAgIGlmIChpc1Byb2R1Y2luZ0RhdGEoKSkKLSAgICAgICAgc3RhcnRQcm9kdWNp
bmdEYXRhKCk7Ci19Ci0jZW5kaWYKLQogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVSZWFsdGltZVZpZGVvU291cmNlLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVtb3RlUmVhbHRpbWVWaWRlb1NvdXJjZS5oCmlu
ZGV4IGQxYjg1OTk1ZjM5ZDZhODRjZDQxYjc0MDdlODQ2MjMzOWYwNTg3NjAuLjY2M2I1NTkyZTQz
MDY1ZWYzNGFkMWNlMjA4MzJkYmI2OTQxNDZmYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVSZWFsdGltZVZpZGVvU291cmNlLmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZVJlYWx0aW1lVmlkZW9Tb3VyY2UuaApAQCAt
MjcsMTAgKzI3LDkgQEAKIAogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoTUVESUFfU1RS
RUFNKQogCi0jaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJSZW1v
dGVSZWFsdGltZU1lZGlhU291cmNlLmgiCiAjaW5jbHVkZSAiUmVtb3RlUmVhbHRpbWVNZWRpYVNv
dXJjZVByb3h5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DYXB0dXJlRGV2aWNlLmg+Ci0jaW5jbHVk
ZSA8V2ViQ29yZS9SZWFsdGltZU1lZGlhU291cmNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWFs
dGltZU1lZGlhU291cmNlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVmlkZW9GcmFt
ZS5oPgogCkBAIC00Miw2OSArNDEsMjIgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFVz
ZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOwogCi1jbGFzcyBSZW1vdGVSZWFsdGltZVZpZGVvU291cmNl
IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2UKLSNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpCi0gICAgLCBwdWJsaWMgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OkNsaWVudAot
I2VuZGlmCi17CitjbGFzcyBSZW1vdGVSZWFsdGltZVZpZGVvU291cmNlIGZpbmFsIDogcHVibGlj
IFJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2UgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8V2Vi
Q29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZT4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkNhcHR1cmVE
ZXZpY2UmLCBjb25zdCBXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnRzKiwgU3RyaW5nJiYgaGFzaFNh
bHQsIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyJiwgYm9vbCBzaG91bGRDYXB0dXJlSW5HUFVQcm9j
ZXNzLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAgICAgflJlbW90ZVJlYWx0aW1lVmlkZW9T
b3VyY2UoKTsKIAotICAgIFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyIGlk
ZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3Byb3h5LmlkZW50aWZpZXIoKTsgfQotICAgIElQ
Qzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbigpIHsgcmV0dXJuIG1fcHJveHkuY29ubmVjdGlvbigp
OyB9Ci0KLSAgICB2b2lkIHNldFNldHRpbmdzKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VT
ZXR0aW5ncyYmKTsKLQotICAgIHZvaWQgY2FwdHVyZVN0b3BwZWQoYm9vbCBkaWRGYWlsKTsKLQot
ICAgIHZvaWQgcmVtb3RlVmlkZW9GcmFtZUF2YWlsYWJsZShXZWJDb3JlOjpWaWRlb0ZyYW1lJiBm
cmFtZSwgV2ViQ29yZTo6VmlkZW9GcmFtZVRpbWVNZXRhZGF0YSBtZXRhZGF0YSkgeyB2aWRlb0Zy
YW1lQXZhaWxhYmxlKGZyYW1lLCBtZXRhZGF0YSk7IH0KLSAgICB2b2lkIHNvdXJjZU11dGVkQ2hh
bmdlZChib29sIHZhbHVlLCBib29sIGludGVycnVwdGVkKTsKLQotICAgIHZvaWQgYXBwbHlDb25z
dHJhaW50c1N1Y2NlZWRlZChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmJik7
Ci0gICAgdm9pZCBhcHBseUNvbnN0cmFpbnRzRmFpbGVkKFN0cmluZyYmIGZhaWxlZENvbnN0cmFp
bnQsIFN0cmluZyYmIGVycm9yTWVzc2FnZSkgeyBtX3Byb3h5LmFwcGx5Q29uc3RyYWludHNGYWls
ZWQoV1RGTW92ZShmYWlsZWRDb25zdHJhaW50KSwgV1RGTW92ZShlcnJvck1lc3NhZ2UpKTsgfQor
ICAgIHZvaWQgcmVtb3RlVmlkZW9GcmFtZUF2YWlsYWJsZShXZWJDb3JlOjpWaWRlb0ZyYW1lJiwg
V2ViQ29yZTo6VmlkZW9GcmFtZVRpbWVNZXRhZGF0YSk7CiAKIHByaXZhdGU6CiAgICAgUmVtb3Rl
UmVhbHRpbWVWaWRlb1NvdXJjZShXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmll
ciwgY29uc3QgV2ViQ29yZTo6Q2FwdHVyZURldmljZSYsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhQ29u
c3RyYWludHMqLCBTdHJpbmcmJiBoYXNoU2FsdCwgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXImLCBi
b29sIHNob3VsZENhcHR1cmVJbkdQVVByb2Nlc3MsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsK
LSAgICBSZW1vdGVSZWFsdGltZVZpZGVvU291cmNlKFJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VQ
cm94eSYmLCBTdHJpbmcmJiBoYXNoU2FsdCwgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXImLCBXZWJD
b3JlOjpQYWdlSWRlbnRpZmllcik7CisgICAgUmVtb3RlUmVhbHRpbWVWaWRlb1NvdXJjZShSZW1v
dGVSZWFsdGltZU1lZGlhU291cmNlUHJveHkmJiwgU3RyaW5nJiYgbmFtZSwgU3RyaW5nJiYgaGFz
aFNhbHQsIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyJik7CiAKLSAgICAvLyBSZWFsdGltZU1lZGlh
U291cmNlCi0gICAgdm9pZCBzdGFydFByb2R1Y2luZ0RhdGEoKSBmaW5hbCB7IG1fcHJveHkuc3Rh
cnRQcm9kdWNpbmdEYXRhKCk7IH0KLSAgICB2b2lkIHN0b3BQcm9kdWNpbmdEYXRhKCkgZmluYWwg
eyBtX3Byb3h5LnN0b3BQcm9kdWNpbmdEYXRhKCk7IH0KLSAgICBib29sIGlzQ2FwdHVyZVNvdXJj
ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2b2lkIGJlZ2luQ29uZmlndXJh
dGlvbigpIGZpbmFsIHsgfQotICAgIHZvaWQgY29tbWl0Q29uZmlndXJhdGlvbigpIGZpbmFsIHsg
fQotICAgIHZvaWQgYXBwbHlDb25zdHJhaW50cyhjb25zdCBXZWJDb3JlOjpNZWRpYUNvbnN0cmFp
bnRzJiwgQXBwbHlDb25zdHJhaW50c0hhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBoYXNFbmRl
ZCgpIGZpbmFsOwotICAgIGNvbnN0IFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5n
cyYgc2V0dGluZ3MoKSBmaW5hbCB7IHJldHVybiBtX3NldHRpbmdzOyB9Ci0gICAgY29uc3QgV2Vi
Q29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYgY2FwYWJpbGl0aWVzKCkgZmlu
YWwgeyByZXR1cm4gbV9jYXBhYmlsaXRpZXM7IH0KLSAgICB2b2lkIHdoZW5SZWFkeShDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFN0cmluZyk+JiYgY2FsbGJhY2spIGZpbmFsIHsgbV9wcm94eS53aGVu
UmVhZHkoV1RGTW92ZShjYWxsYmFjaykpOyB9Ci0gICAgV2ViQ29yZTo6Q2FwdHVyZURldmljZTo6
RGV2aWNlVHlwZSBkZXZpY2VUeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wcm94eS5kZXZp
Y2VUeXBlKCk7IH0KICAgICBSZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4gY2xvbmUoKSBmaW5hbDsK
ICAgICB2b2lkIGVuZFByb2R1Y2luZ0RhdGEoKSBmaW5hbDsKICAgICBib29sIHNldFNob3VsZEFw
cGx5Um90YXRpb24oYm9vbCkgZmluYWw7Ci0KLSNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCi0gICAg
Ly8gR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OkNsaWVudAotICAgIHZvaWQgZ3B1UHJvY2Vzc0Nvbm5l
Y3Rpb25EaWRDbG9zZShHUFVQcm9jZXNzQ29ubmVjdGlvbiYpIGZpbmFsOwotI2VuZGlmCi0KLSAg
ICB2b2lkIGNyZWF0ZVJlbW90ZU1lZGlhU291cmNlKCk7Ci0gICAgdm9pZCBzZXRDYXBhYmlsaXRp
ZXMoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYmKTsKLQotICAgIFJl
bW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VQcm94eSBtX3Byb3h5OwotICAgIFVzZXJNZWRpYUNhcHR1
cmVNYW5hZ2VyJiBtX21hbmFnZXI7Ci0gICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpNZWRpYUNv
bnN0cmFpbnRzPiBtX2NvbnN0cmFpbnRzOwotICAgIFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3Vy
Y2VDYXBhYmlsaXRpZXMgbV9jYXBhYmlsaXRpZXM7Ci0gICAgV2ViQ29yZTo6UmVhbHRpbWVNZWRp
YVNvdXJjZVNldHRpbmdzIG1fc2V0dGluZ3M7CiB9OwogCi1pbmxpbmUgdm9pZCBSZW1vdGVSZWFs
dGltZVZpZGVvU291cmNlOjpzb3VyY2VNdXRlZENoYW5nZWQoYm9vbCBtdXRlZCwgYm9vbCBpbnRl
cnJ1cHRlZCkKLXsKLSAgICBtX3Byb3h5LnNldEludGVycnVwdGVkKGludGVycnVwdGVkKTsKLSAg
ICBub3RpZnlNdXRlZENoYW5nZShtdXRlZCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYktpdAog
CiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455916</attachid>
            <date>2022-03-28 07:21:11 -0700</date>
            <delta_ts>2022-03-28 09:25:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237704-20220328162108.patch</filename>
            <type>text/plain</type>
            <size>43031</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxOTU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjQwMzc1ZjUxNDA3ZDI1
NWVjN2FiYmExZWM5MzMyMzBkODg0YjUyZC4uMzliNjdhZmEyMWQyNGZmMDUyMjc2YjZjNDhmNmYz
YjgwMmUzOWI2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIyLTAzLTI4ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBTaGFyZSBtb3JlIGNvZGUg
YmV0d2VlbiBSZW1vdGVSZWFsdGltZUF1ZGlvU291cmNlIGFuZCBSZW1vdGVSZWFsdGltZVZpZGVv
U291cmNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
Mzc3MDQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzkwNDI0Njc5PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSByZW1vdGUgdmlkZW8gc291cmNl
IGlzIG5vdyBjb3JyZWN0bHkgZXhwb3Npbmcgd2hldGhlciBpdCBpcyBjYW1lcmEsIHNjcmVlbi4u
LgorICAgICAgICBUaGlzIHdhcyBub3Qgd2VsbCBoYW5kbGVkIGJlZm9yZSBpbiBzb21lIHBsYWNl
cywgd2UgcmVwbGFjZSB0eXBlID09IFZpZGVvIGJ5IGhhc1ZpZGVvIHRvIGhhbmRsZSBhbGwgdmlk
ZW8gdHlwZXMgYXBwcm9wcmlhdGVseS4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRl
c3RzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tOgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0ZS5jcHA6CisKIDIwMjItMDMtMjggIFlvdWVu
biBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVudCBTZXJ2aWNl
V29ya2VyIFdpbmRvd0NsaWVudC5hbmNlc3Rvck9yaWdpbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMDM5MzUyNDBh
OWM5NDUyY2U0ZWYwNjc0NjVhZGU2YzdjNmJkY2NiNC4uNTdjZWNjMmY4MjAwM2Y5NTQ2MzU4Zjcy
OWI4ZmZhYjE5OTA3ZjIwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAyMi0wMy0yOCAg
WW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgU2hhcmUgbW9yZSBj
b2RlIGJldHdlZW4gUmVtb3RlUmVhbHRpbWVBdWRpb1NvdXJjZSBhbmQgUmVtb3RlUmVhbHRpbWVW
aWRlb1NvdXJjZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjM3NzA0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS85MDQyNDY3OT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnRyb2R1Y2UgUmVtb3RlUmVh
bHRpbWVNZWRpYVNvdXJjZSBhcyBhIGNvbW1vbiBjbGFzcyBmb3IgUmVtb3RlUmVhbHRpbWVBdWRp
b1NvdXJjZSBhbmQgUmVtb3RlUmVhbHRpbWVWaWRlb1NvdXJjZS4KKworICAgICAgICAqIFNvdXJj
ZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVSZWFsdGltZUF1ZGlvU291cmNlLmNw
cDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1JlbW90ZVJlYWx0aW1lQXVkaW9Tb3VyY2Uu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1JlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2Uu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1JlbW90ZVJlYWx0aW1lTWVk
aWFTb3VyY2UuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVSZWFs
dGltZU1lZGlhU291cmNlUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1JlbW90
ZVJlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvUmVt
b3RlUmVhbHRpbWVWaWRlb1NvdXJjZS5oOgorCiAyMDIyLTAzLTI4ICBZb3Vlbm4gRmFibGV0ICA8
eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgU2VydmljZVdvcmtlciBXaW5k
b3dDbGllbnQuYW5jZXN0b3JPcmlnaW5zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0
cmVhbUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KaW5kZXgg
ZTQ2NDZkNmIzZGM1ODY3OTFiNWJmYjFkM2RhY2ExNDVjMWRkMmE4MS4uNDY4ODc2OTUyNjE3MTYy
ZGQyMTUwYjQyMjQyMzFjN2Q1M2EyZjM2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
dHJlYW1BVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQpA
QCAtODIyLDE1ICs4MjIsMjEgQEAgZW51bSBjbGFzcyBUcmFja1N0YXRlIHsKICAgICBDb25maWd1
cmUKIH07CiAKK2VudW0gY2xhc3MgVHJhY2tLaW5kIHsKKyAgICBBdWRpbywKKyAgICBWaWRlbwor
fTsKKwogdGVtcGxhdGUgPHR5cGVuYW1lIFJlZlQ+Ci12b2lkIHVwZGF0ZVRyYWNrc09mVHlwZShI
YXNoTWFwPFN0cmluZywgUmVmVD4mIHRyYWNrTWFwLCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBl
IHRyYWNrVHlwZSwgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGVWZWN0b3ImIGN1cnJlbnRUcmFja3Ms
IFJlZlQgKCppdGVtRmFjdG9yeSkoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKSwgY29uc3QgRnVu
Y3Rpb248dm9pZChzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3Bv
aW50ZXI8dHlwZW5hbWUgUmVmVDo6UHRyVHJhaXRzOjpTdG9yYWdlVHlwZT46OnR5cGU+LCBpbnQs
IFRyYWNrU3RhdGUpPiYgY29uZmlndXJlVHJhY2spCit2b2lkIHVwZGF0ZVRyYWNrc09mS2luZChI
YXNoTWFwPFN0cmluZywgUmVmVD4mIHRyYWNrTWFwLCBUcmFja0tpbmQgdHJhY2tLaW5kLCBNZWRp
YVN0cmVhbVRyYWNrUHJpdmF0ZVZlY3RvciYgY3VycmVudFRyYWNrcywgUmVmVCAoKml0ZW1GYWN0
b3J5KShNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYpLCBjb25zdCBGdW5jdGlvbjx2b2lkKHN0ZDo6
cmVmZXJlbmNlX3dyYXBwZXI8dHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjx0eXBlbmFtZSBS
ZWZUOjpQdHJUcmFpdHM6OlN0b3JhZ2VUeXBlPjo6dHlwZT4sIGludCwgVHJhY2tTdGF0ZSk+JiBj
b25maWd1cmVUcmFjaykKIHsKICAgICBWZWN0b3I8UmVmVD4gcmVtb3ZlZFRyYWNrczsKICAgICBW
ZWN0b3I8UmVmVD4gYWRkZWRUcmFja3M7CiAgICAgVmVjdG9yPFJlZjxNZWRpYVN0cmVhbVRyYWNr
UHJpdmF0ZT4+IGFkZGVkUHJpdmF0ZVRyYWNrczsKIAorICAgIGJvb2wgd2FudHNWaWRlbyA9IHRy
YWNrS2luZCA9PSBUcmFja0tpbmQ6OlZpZGVvOwogICAgIGZvciAoY29uc3QgYXV0byYgdHJhY2sg
OiBjdXJyZW50VHJhY2tzKSB7Ci0gICAgICAgIGlmICh0cmFjay0+dHlwZSgpICE9IHRyYWNrVHlw
ZSkKKyAgICAgICAgaWYgKHdhbnRzVmlkZW8gIT0gdHJhY2stPmhhc1ZpZGVvKCkpCiAgICAgICAg
ICAgICBjb250aW51ZTsKIAogICAgICAgICBpZiAoIXRyYWNrTWFwLmNvbnRhaW5zKHRyYWNrLT5p
ZCgpKSkKQEAgLTk0MSw3ICs5NDcsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3Ry
ZWFtQVZGT2JqQzo6dXBkYXRlVHJhY2tzKCkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgfTsKLSAgICB1cGRhdGVUcmFja3NPZlR5cGUobV9hdWRpb1RyYWNrTWFwLCBSZWFsdGlt
ZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbywgY3VycmVudFRyYWNrcywgJkF1ZGlvVHJhY2tQcml2
YXRlTWVkaWFTdHJlYW06OmNyZWF0ZSwgV1RGTW92ZShzZXRBdWRpb1RyYWNrU3RhdGUpKTsKKyAg
ICB1cGRhdGVUcmFja3NPZktpbmQobV9hdWRpb1RyYWNrTWFwLCBUcmFja0tpbmQ6OkF1ZGlvLCBj
dXJyZW50VHJhY2tzLCAmQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbTo6Y3JlYXRlLCBXVEZN
b3ZlKHNldEF1ZGlvVHJhY2tTdGF0ZSkpOwogCiAgICAgaWYgKCFtX3BsYXllci0+aXNWaWRlb1Bs
YXllcigpKQogICAgICAgICByZXR1cm47CkBAIC05NjYsNyArOTcyLDcgQEAgdm9pZCBNZWRpYVBs
YXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnVwZGF0ZVRyYWNrcygpCiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgIH07Ci0gICAgdXBkYXRlVHJhY2tzT2ZUeXBlKG1fdmlk
ZW9UcmFja01hcCwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6VmlkZW8sIGN1cnJlbnRUcmFj
a3MsICZWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtOjpjcmVhdGUsIFdURk1vdmUoc2V0Vmlk
ZW9UcmFja1N0YXRlKSk7CisgICAgdXBkYXRlVHJhY2tzT2ZLaW5kKG1fdmlkZW9UcmFja01hcCwg
VHJhY2tLaW5kOjpWaWRlbywgY3VycmVudFRyYWNrcywgJlZpZGVvVHJhY2tQcml2YXRlTWVkaWFT
dHJlYW06OmNyZWF0ZSwgV1RGTW92ZShzZXRWaWRlb1RyYWNrU3RhdGUpKTsKIH0KIAogc3RkOjp1
bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJl
YW1BVkZPYmpDOjpzZWVrYWJsZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVByaXZhdGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRlLmNwcAppbmRleCAyY2Rl
NDAxNmJjYWRiNTAxNzc5ZmRkZWI3MTM4OGQxNTMxYzg5YWUxLi5hZjQwZjZkM2I1NDg4MmUyOTY4
MjdlNTMyYWJlNDhhZWM0MWRlNDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVByaXZhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0ZS5jcHAKQEAgLTIwOCw3ICsy
MDgsNyBAQCBib29sIE1lZGlhU3RyZWFtUHJpdmF0ZTo6aXNQcm9kdWNpbmdEYXRhKCkgY29uc3QK
IGJvb2wgTWVkaWFTdHJlYW1Qcml2YXRlOjpoYXNWaWRlbygpIGNvbnN0CiB7CiAgICAgZm9yIChh
dXRvJiB0cmFjayA6IG1fdHJhY2tTZXQudmFsdWVzKCkpIHsKLSAgICAgICAgaWYgKHRyYWNrLT50
eXBlKCkgPT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6VmlkZW8gJiYgdHJhY2stPmlzQWN0
aXZlKCkpCisgICAgICAgIGlmICh0cmFjay0+aGFzVmlkZW8oKSAmJiB0cmFjay0+aXNBY3RpdmUo
KSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CkBA
IC0yMTcsNyArMjE3LDcgQEAgYm9vbCBNZWRpYVN0cmVhbVByaXZhdGU6Omhhc1ZpZGVvKCkgY29u
c3QKIGJvb2wgTWVkaWFTdHJlYW1Qcml2YXRlOjpoYXNBdWRpbygpIGNvbnN0CiB7CiAgICAgZm9y
IChhdXRvJiB0cmFjayA6IG1fdHJhY2tTZXQudmFsdWVzKCkpIHsKLSAgICAgICAgaWYgKHRyYWNr
LT50eXBlKCkgPT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6QXVkaW8gJiYgdHJhY2stPmlz
QWN0aXZlKCkpCisgICAgICAgIGlmICh0cmFjay0+aGFzQXVkaW8oKSAmJiB0cmFjay0+aXNBY3Rp
dmUoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7
CkBAIC0yMzUsNyArMjM1LDYgQEAgYm9vbCBNZWRpYVN0cmVhbVByaXZhdGU6Om11dGVkKCkgY29u
c3QKIEZsb2F0U2l6ZSBNZWRpYVN0cmVhbVByaXZhdGU6OmludHJpbnNpY1NpemUoKSBjb25zdAog
ewogICAgIEZsb2F0U2l6ZSBzaXplOwotCiAgICAgaWYgKG1fYWN0aXZlVmlkZW9UcmFjaykgewog
ICAgICAgICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmcgPSBtX2Fj
dGl2ZVZpZGVvVHJhY2stPnNldHRpbmdzKCk7CiAgICAgICAgIHNpemUuc2V0V2lkdGgoc2V0dGlu
Zy53aWR0aCgpKTsKQEAgLTI0OSw3ICsyNDgsNyBAQCB2b2lkIE1lZGlhU3RyZWFtUHJpdmF0ZTo6
dXBkYXRlQWN0aXZlVmlkZW9UcmFjaygpCiB7CiAgICAgbV9hY3RpdmVWaWRlb1RyYWNrID0gbnVs
bHB0cjsKICAgICBmb3IgKGF1dG8mIHRyYWNrIDogbV90cmFja1NldC52YWx1ZXMoKSkgewotICAg
ICAgICBpZiAoIXRyYWNrLT5lbmRlZCgpICYmIHRyYWNrLT50eXBlKCkgPT0gUmVhbHRpbWVNZWRp
YVNvdXJjZTo6VHlwZTo6VmlkZW8pIHsKKyAgICAgICAgaWYgKCF0cmFjay0+ZW5kZWQoKSAmJiB0
cmFjay0+aGFzVmlkZW8oKSkgewogICAgICAgICAgICAgbV9hY3RpdmVWaWRlb1RyYWNrID0gdHJh
Y2suZ2V0KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNl
LmNwcAppbmRleCA2ZmEzYjFlMDFkNDg4OTRjNWE1NDc1N2Y1ZDEwNjdkZmVlNGE1MTE3Li41OTRj
ZGUxYTEzOTY2Y2RlNjA4ZWYxZjZjZTZjYjA0OTA4OGI2NmFiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNl
LmNwcApAQCAtMjgwLDcgKzI4MCw3IEBAIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6ZW5kKE9i
c2VydmVyKiBjYWxsaW5nT2JzZXJ2ZXIpCiAKICAgICBlbmRQcm9kdWNpbmdEYXRhKCk7CiAgICAg
bV9pc0VuZGVkID0gdHJ1ZTsKLSAgICBoYXNFbmRlZCgpOworICAgIGRpZEVuZCgpOwogCiAgICAg
Zm9yRWFjaE9ic2VydmVyKFsmY2FsbGluZ09ic2VydmVyXShhdXRvJiBvYnNlcnZlcikgewogICAg
ICAgICBpZiAoJm9ic2VydmVyICE9IGNhbGxpbmdPYnNlcnZlcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuaApp
bmRleCAxYTg5OThkZTNiNzllYzQwNmM5NmFkMGEzZjQ5MzYzMmU3NzgzOGE2Li45ODZlMTQ0NmE4
ODQ4NWQyZjg5NTk0NTZlMjNmNjlkYWU1NjMxYmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5oCkBAIC0y
NjcsNyArMjY3LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBzdG9wQmVpbmdPYnNl
cnZlZCgpIHsgc3RvcCgpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgaGFzRW5kZWQoKSB7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkRW5kKCkgeyB9CiAKICAgICB2b2lkIHVwZGF0ZUhhc1N0YXJ0ZWRQ
cm9kdWNpbmdEYXRhKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29h
LnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRleCBiMDhkMWZkZGFjMGE1
OTNjYWQ1NDVhOGNhNTM2MTI5ZmEyMmE5ZGVmLi5iMzRjNTBkZGU3NGJiZTQ5MDQ5Mjk3NjAyM2E4
N2Q3ODc5MDBkYzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQK
KysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC02MTgsNiArNjE4LDcgQEAg
V2ViUHJvY2Vzcy9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JDb2NvYS5tbQog
V2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tCiBXZWJQcm9jZXNzL2Nv
Y29hL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLmNwcAogV2ViUHJvY2Vzcy9jb2NvYS9SZW1v
dGVSZWFsdGltZUF1ZGlvU291cmNlLmNwcAorV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVSZWFsdGlt
ZU1lZGlhU291cmNlLmNwcAogV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVSZWFsdGltZU1lZGlhU291
cmNlUHJveHkuY3BwCiBXZWJQcm9jZXNzL2NvY29hL1JlbW90ZVJlYWx0aW1lVmlkZW9Tb3VyY2Uu
Y3BwCiBXZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMjczYzNj
MjQwZTE5MjhkOTExM2FkOGJiMTVjMTlkYzRhMTU5MDdiZC4uMTQ5Mjc0ZGZmNmIwODNjNzllYjI0
YzVjMTc5MzEyOTUwOWEzMGEzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC00NDEyLDYgKzQ0MTIsOCBAQAogCQk0MTFCODlFNTI3QjVE
NTgzMDBGOUVCRDMgLyogUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eVByb2Nlc3Nvci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5UHJvY2Vzc29y
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMUI4OUU2MjdCNUQ1ODQwMEY5RUJE
MyAvKiBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5UHJvY2Vzc29yLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHlQcm9jZXNzb3IuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTFCODlGNTI3QjZCNEM3MDBGOUVCRDMg
LyogUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1v
dGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTQxMjgyN0E1MjdEQTBEN0IwMDVBRERFMiAvKiBSZW1vdGVSZWFsdGltZU1lZGlhU291cmNl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2UuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTI4MjdBNjI3REEwRDdGMDA1QURERTIgLyog
UmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVSZWFsdGlt
ZU1lZGlhU291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMjg3RDRCMjI1
QzA1QzQwMDlBM0UyNiAvKiBXZWJTb2NrZXRUYXNrQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJTb2NrZXRUYXNrQ29jb2EubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQxMjg3RDRDMjI1QzA1QzUwMDlBM0UyNiAvKiBXZWJTb2NrZXRU
YXNrQ29jb2EuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU29ja2V0VGFz
a0NvY29hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMjg3RDREMjI1QzE2MUYw
MDlBM0UyNiAvKiBXZWJTb2NrZXRUYXNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYlNvY2tldFRhc2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTExMDU1
LDYgKzExMDU3LDggQEAKIAkJCQk0MTY4NEM0RDI0NjQzQkZBMDAxQ0U4RUQgLyogUmVtb3RlQ2Fw
dHVyZVNhbXBsZU1hbmFnZXIubWVzc2FnZXMuaW4gKi8sCiAJCQkJNDFFNjdBOEQyNUQyQ0ZEMDAw
N0IwQTRDIC8qIFJlbW90ZVJlYWx0aW1lQXVkaW9Tb3VyY2UuY3BwICovLAogCQkJCTQxRTY3QThD
MjVEMkNGRDAwMDdCMEE0QyAvKiBSZW1vdGVSZWFsdGltZUF1ZGlvU291cmNlLmggKi8sCisJCQkJ
NDEyODI3QTUyN0RBMEQ3QjAwNUFEREUyIC8qIFJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2UuY3Bw
ICovLAorCQkJCTQxMjgyN0E2MjdEQTBEN0YwMDVBRERFMiAvKiBSZW1vdGVSZWFsdGltZU1lZGlh
U291cmNlLmggKi8sCiAJCQkJNDE2MDA4QjIyNURBODk1QjAwRTg5MkZFIC8qIFJlbW90ZVJlYWx0
aW1lTWVkaWFTb3VyY2VQcm94eS5jcHAgKi8sCiAJCQkJNDE2MDA4QjEyNURBODZCOTAwRTg5MkZF
IC8qIFJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VQcm94eS5oICovLAogCQkJCTQxOEZDQkUzMjcx
MDQ5REIwMEY5NkVDQSAvKiBSZW1vdGVSZWFsdGltZVZpZGVvU291cmNlLmNwcCAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVSZWFsdGltZUF1ZGlv
U291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVSZWFsdGlt
ZUF1ZGlvU291cmNlLmNwcAppbmRleCBiY2E4MzQ3ZWU4NzEzYzNiMmJlMTM3YWU2NDQ4NTQ5Njdh
NjQxYWI4Li5iY2YxMDQ3ZDY0MTFjMTc0MGEzNjkwMGI0OTgyMWRhZDZjYzg0NzgzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVtb3RlUmVhbHRpbWVBdWRpb1Nv
dXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZVJlYWx0
aW1lQXVkaW9Tb3VyY2UuY3BwCkBAIC0yOSwxNiArMjksOCBAQAogI2lmIFBMQVRGT1JNKENPQ09B
KSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCiAjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rp
b24uaCIKLSNpbmNsdWRlICJTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZS5oIgogI2luY2x1ZGUgIlVz
ZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmgiCi0jaW5jbHVkZSAiVXNlck1lZGlhQ2FwdHVyZU1hbmFn
ZXJNZXNzYWdlcy5oIgotI2luY2x1ZGUgIlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHlNZXNz
YWdlcy5oIgotI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldl
YlByb2Nlc3MuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL01lZGlhQ29uc3RyYWludHMuaD4KLSNpbmNs
dWRlIDxXZWJDb3JlL1JlYWx0aW1lTWVkaWFTb3VyY2UuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1Jl
YWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1dlYkF1ZGlvQnVm
ZmVyTGlzdC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwpAQCAtNTMsNTUgKzQ1LDE0IEBAIFJlZjxSZWFsdGltZU1lZGlhU291cmNlPiBSZW1vdGVSZWFs
dGltZUF1ZGlvU291cmNlOjpjcmVhdGUoY29uc3QgQ2FwdHVyZURldmljZSYKIH0KIAogUmVtb3Rl
UmVhbHRpbWVBdWRpb1NvdXJjZTo6UmVtb3RlUmVhbHRpbWVBdWRpb1NvdXJjZShSZWFsdGltZU1l
ZGlhU291cmNlSWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBDYXB0dXJlRGV2aWNlJiBkZXZp
Y2UsIGNvbnN0IE1lZGlhQ29uc3RyYWludHMqIGNvbnN0cmFpbnRzLCBTdHJpbmcmJiBuYW1lLCBT
dHJpbmcmJiBoYXNoU2FsdCwgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXImIG1hbmFnZXIsIGJvb2wg
c2hvdWxkQ2FwdHVyZUluR1BVUHJvY2VzcywgUGFnZUlkZW50aWZpZXIgcGFnZUlkZW50aWZpZXIp
Ci0gICAgOiBSZWFsdGltZU1lZGlhU291cmNlKFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1
ZGlvLCBXVEZNb3ZlKG5hbWUpLCBTdHJpbmcgeyBkZXZpY2UucGVyc2lzdGVudElkKCkgfSwgV1RG
TW92ZShoYXNoU2FsdCksIHBhZ2VJZGVudGlmaWVyKQotICAgICwgbV9wcm94eShpZGVudGlmaWVy
LCBkZXZpY2UsIHNob3VsZENhcHR1cmVJbkdQVVByb2Nlc3MsIGNvbnN0cmFpbnRzKQotICAgICwg
bV9tYW5hZ2VyKG1hbmFnZXIpCisgICAgOiBSZW1vdGVSZWFsdGltZU1lZGlhU291cmNlKGlkZW50
aWZpZXIsIGRldmljZSwgY29uc3RyYWludHMsIFdURk1vdmUobmFtZSksIFdURk1vdmUoaGFzaFNh
bHQpLCBtYW5hZ2VyLCBzaG91bGRDYXB0dXJlSW5HUFVQcm9jZXNzLCBwYWdlSWRlbnRpZmllcikK
IHsKICAgICBBU1NFUlQoZGV2aWNlLnR5cGUoKSA9PSBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBl
OjpNaWNyb3Bob25lKTsKIH0KIAotdm9pZCBSZW1vdGVSZWFsdGltZUF1ZGlvU291cmNlOjpjcmVh
dGVSZW1vdGVNZWRpYVNvdXJjZSgpCi17Ci0gICAgbV9wcm94eS5jcmVhdGVSZW1vdGVNZWRpYVNv
dXJjZShkZXZpY2VJREhhc2hTYWx0KCksIHBhZ2VJZGVudGlmaWVyKCksIFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0oYm9vbCBzdWNjZWVkZWQsIGF1dG8mJiBlcnJvck1lc3Nh
Z2UsIGF1dG8mJiBzZXR0aW5ncywgYXV0byYmIGNhcGFiaWxpdGllcywgYXV0byYmLCBhdXRvLCBh
dXRvKSB7Ci0gICAgICAgIGlmICghc3VjY2VlZGVkKSB7Ci0gICAgICAgICAgICBtX3Byb3h5LmRp
ZEZhaWwoV1RGTW92ZShlcnJvck1lc3NhZ2UpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgfQotCi0gICAgICAgIHNldFNldHRpbmdzKFdURk1vdmUoc2V0dGluZ3MpKTsKLSAgICAgICAg
c2V0Q2FwYWJpbGl0aWVzKFdURk1vdmUoY2FwYWJpbGl0aWVzKSk7Ci0gICAgICAgIHNldE5hbWUo
U3RyaW5nIHsgbV9zZXR0aW5ncy5sYWJlbCgpLnN0cmluZygpIH0pOwotCi0gICAgICAgIG1fcHJv
eHkuc2V0QXNSZWFkeSgpOwotICAgICAgICBpZiAobV9wcm94eS5zaG91bGRDYXB0dXJlSW5HUFVQ
cm9jZXNzKCkpCi0gICAgICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQ
cm9jZXNzQ29ubmVjdGlvbigpLmFkZENsaWVudCgqdGhpcyk7Ci0gICAgfSk7Ci19Ci0KIFJlbW90
ZVJlYWx0aW1lQXVkaW9Tb3VyY2U6On5SZW1vdGVSZWFsdGltZUF1ZGlvU291cmNlKCkKIHsKLSAg
ICBpZiAobV9wcm94eS5zaG91bGRDYXB0dXJlSW5HUFVQcm9jZXNzKCkpIHsKLSAgICAgICAgaWYg
KGF1dG8qIGNvbm5lY3Rpb24gPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5leGlzdGluZ0dQVVBy
b2Nlc3NDb25uZWN0aW9uKCkpCi0gICAgICAgICAgICBjb25uZWN0aW9uLT5yZW1vdmVDbGllbnQo
KnRoaXMpOwotICAgIH0KLX0KLQotdm9pZCBSZW1vdGVSZWFsdGltZUF1ZGlvU291cmNlOjpzZXRD
YXBhYmlsaXRpZXMoUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYmIGNhcGFiaWxpdGll
cykKLXsKLSAgICBtX2NhcGFiaWxpdGllcyA9IFdURk1vdmUoY2FwYWJpbGl0aWVzKTsKLX0KLQot
dm9pZCBSZW1vdGVSZWFsdGltZUF1ZGlvU291cmNlOjpzZXRTZXR0aW5ncyhSZWFsdGltZU1lZGlh
U291cmNlU2V0dGluZ3MmJiBzZXR0aW5ncykKLXsKLSAgICBhdXRvIGNoYW5nZWQgPSBtX3NldHRp
bmdzLmRpZmZlcmVuY2Uoc2V0dGluZ3MpOwotICAgIG1fc2V0dGluZ3MgPSBXVEZNb3ZlKHNldHRp
bmdzKTsKLSAgICBub3RpZnlTZXR0aW5nc0RpZENoYW5nZU9ic2VydmVycyhjaGFuZ2VkKTsKLX0K
LQotdm9pZCBSZW1vdGVSZWFsdGltZUF1ZGlvU291cmNlOjphcHBseUNvbnN0cmFpbnRzU3VjY2Vl
ZGVkKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYmIHNldHRpbmdzKQotewot
ICAgIHNldFNldHRpbmdzKFdURk1vdmUoc2V0dGluZ3MpKTsKLSAgICBtX3Byb3h5LmFwcGx5Q29u
c3RyYWludHNTdWNjZWVkZWQoKTsKKyAgICByZW1vdmVBc0NsaWVudCgpOwogfQogCiB2b2lkIFJl
bW90ZVJlYWx0aW1lQXVkaW9Tb3VyY2U6OnJlbW90ZUF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25z
dCBNZWRpYVRpbWUmIHRpbWUsIGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiBkYXRhLCBjb25zdCBB
dWRpb1N0cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgc2l6ZV90IHNpemUpCkBAIC0xMTAs
NTIgKzYxLDYgQEAgdm9pZCBSZW1vdGVSZWFsdGltZUF1ZGlvU291cmNlOjpyZW1vdGVBdWRpb1Nh
bXBsZXNBdmFpbGFibGUoY29uc3QgTWVkaWFUaW1lJiB0aW0KICAgICBhdWRpb1NhbXBsZXNBdmFp
bGFibGUodGltZSwgZGF0YSwgZGVzY3JpcHRpb24sIHNpemUpOwogfQogCi12b2lkIFJlbW90ZVJl
YWx0aW1lQXVkaW9Tb3VyY2U6Omhhc0VuZGVkKCkKLXsKLSAgICBpZiAobV9wcm94eS5pc0VuZGVk
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fcHJveHkuZW5kKCk7Ci0gICAgbV9tYW5hZ2Vy
LnJlbW92ZVNvdXJjZShpZGVudGlmaWVyKCkpOwotICAgIG1fbWFuYWdlci5yZW1vdGVDYXB0dXJl
U2FtcGxlTWFuYWdlcigpLnJlbW92ZVNvdXJjZShpZGVudGlmaWVyKCkpOwotfQotCi12b2lkIFJl
bW90ZVJlYWx0aW1lQXVkaW9Tb3VyY2U6OmNhcHR1cmVTdG9wcGVkKGJvb2wgZGlkRmFpbCkKLXsK
LSAgICBpZiAoZGlkRmFpbCkKLSAgICAgICAgY2FwdHVyZUZhaWxlZCgpOwotICAgIGVsc2UKLSAg
ICAgICAgZW5kKCk7Ci0gICAgaGFzRW5kZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVSZWFsdGltZUF1
ZGlvU291cmNlOjphcHBseUNvbnN0cmFpbnRzKGNvbnN0IE1lZGlhQ29uc3RyYWludHMmIGNvbnN0
cmFpbnRzLCBBcHBseUNvbnN0cmFpbnRzSGFuZGxlciYmIGNhbGxiYWNrKQotewotICAgIG1fY29u
c3RyYWludHMgPSBjb25zdHJhaW50czsKLSAgICBtX3Byb3h5LmFwcGx5Q29uc3RyYWludHMoY29u
c3RyYWludHMsIFdURk1vdmUoY2FsbGJhY2spKTsKLX0KLQotI2lmIEVOQUJMRShHUFVfUFJPQ0VT
UykKLXZvaWQgUmVtb3RlUmVhbHRpbWVBdWRpb1NvdXJjZTo6Z3B1UHJvY2Vzc0Nvbm5lY3Rpb25E
aWRDbG9zZShHUFVQcm9jZXNzQ29ubmVjdGlvbiYpCi17Ci0gICAgQVNTRVJUKG1fcHJveHkuc2hv
dWxkQ2FwdHVyZUluR1BVUHJvY2VzcygpKTsKLSAgICBpZiAoaXNFbmRlZCgpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBtX21hbmFnZXIucmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIoKS5kaWRV
cGRhdGVTb3VyY2VDb25uZWN0aW9uKGNvbm5lY3Rpb24oKSk7Ci0gICAgbV9wcm94eS5yZXNldFJl
YWR5KCk7Ci0gICAgY3JlYXRlUmVtb3RlTWVkaWFTb3VyY2UoKTsKLQotICAgIG1fcHJveHkuZmFp
bEFwcGx5Q29uc3RyYWludENhbGxiYWNrcygiR1BVIFByb2Nlc3MgdGVybWluYXRlZCJfcyk7Ci0g
ICAgaWYgKG1fY29uc3RyYWludHMpCi0gICAgICAgIG1fcHJveHkuYXBwbHlDb25zdHJhaW50cygq
bV9jb25zdHJhaW50cywgW10oYXV0bykgeyB9KTsKLQotICAgIGlmIChpc1Byb2R1Y2luZ0RhdGEo
KSkKLSAgICAgICAgc3RhcnRQcm9kdWNpbmdEYXRhKCk7Ci0KLX0KLSNlbmRpZgotCiB9CiAKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZVJl
YWx0aW1lQXVkaW9Tb3VyY2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1v
dGVSZWFsdGltZUF1ZGlvU291cmNlLmgKaW5kZXggNWNjMDFmMTNiMGZhMzhiZTljMWU4MDZmZjZm
YWNhNWRmZTgyZGE2Zi4uYTg3MzUzYWQxNjM2NmIwMzUwYjkyNDRmOTM5ZjBhMjhkYmI2N2NlNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZVJlYWx0aW1l
QXVkaW9Tb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVtb3Rl
UmVhbHRpbWVBdWRpb1NvdXJjZS5oCkBAIC0yNyw4NiArMjcsMjEgQEAKIAogI2lmIFBMQVRGT1JN
KENPQ09BKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCi0jaW5jbHVkZSAiR1BVUHJvY2Vzc0Nv
bm5lY3Rpb24uaCIKLSNpbmNsdWRlICJSZW1vdGVSZWFsdGltZU1lZGlhU291cmNlUHJveHkuaCIK
LSNpbmNsdWRlIDxXZWJDb3JlL0NhcHR1cmVEZXZpY2UuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1Jl
YWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyLmg+Ci0jaW5jbHVkZSA8d3RmL0RlcXVlLmg+Ci0K
LW5hbWVzcGFjZSBJUEMgewotY2xhc3MgQ29ubmVjdGlvbjsKLX0KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotY2xhc3MgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uOwotY2xhc3MgSW1hZ2VUcmFuc2Zl
clNlc3Npb25WVDsKLXN0cnVjdCBNZWRpYUNvbnN0cmFpbnRzOwotfQorI2luY2x1ZGUgIlJlbW90
ZVJlYWx0aW1lTWVkaWFTb3VyY2UuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIFVz
ZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOwotCi1jbGFzcyBSZW1vdGVSZWFsdGltZUF1ZGlvU291cmNl
IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2UKLSNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpCi0gICAgLCBwdWJsaWMgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OkNsaWVudAot
I2VuZGlmCi17CitjbGFzcyBSZW1vdGVSZWFsdGltZUF1ZGlvU291cmNlIGZpbmFsIDogcHVibGlj
IFJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2UgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8V2Vi
Q29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZT4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkNhcHR1cmVE
ZXZpY2UmLCBjb25zdCBXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnRzKiwgU3RyaW5nJiYgbmFtZSwg
U3RyaW5nJiYgaGFzaFNhbHQsIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyJiwgYm9vbCBzaG91bGRD
YXB0dXJlSW5HUFVQcm9jZXNzLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAgICAgflJlbW90
ZVJlYWx0aW1lQXVkaW9Tb3VyY2UoKTsKIAotICAgIFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3Vy
Y2VJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3Byb3h5LmlkZW50aWZp
ZXIoKTsgfQotICAgIElQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbigpIHsgcmV0dXJuIG1fcHJv
eHkuY29ubmVjdGlvbigpOyB9Ci0KLSAgICB2b2lkIHNldFNldHRpbmdzKFdlYkNvcmU6OlJlYWx0
aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYmKTsKLQotICAgIHZvaWQgYXBwbHlDb25zdHJhaW50c1N1
Y2NlZWRlZChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmJik7Ci0gICAgdm9p
ZCBhcHBseUNvbnN0cmFpbnRzRmFpbGVkKFN0cmluZyYmIGZhaWxlZENvbnN0cmFpbnQsIFN0cmlu
ZyYmIGVycm9yTWVzc2FnZSkgeyBtX3Byb3h5LmFwcGx5Q29uc3RyYWludHNGYWlsZWQoV1RGTW92
ZShmYWlsZWRDb25zdHJhaW50KSwgV1RGTW92ZShlcnJvck1lc3NhZ2UpKTsgfQotCi0gICAgdm9p
ZCBjYXB0dXJlU3RvcHBlZChib29sIGRpZEZhaWwpOwotCiAgICAgdm9pZCByZW1vdGVBdWRpb1Nh
bXBsZXNBdmFpbGFibGUoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgV2ViQ29yZTo6UGxhdGZvcm1B
dWRpb0RhdGEmLCBjb25zdCBXZWJDb3JlOjpBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgc2l6ZV90
KTsKLSAgICB2b2lkIHNvdXJjZU11dGVkQ2hhbmdlZChib29sIHZhbHVlLCBib29sIGludGVycnVw
dGVkKTsKIAogcHJpdmF0ZToKICAgICBSZW1vdGVSZWFsdGltZUF1ZGlvU291cmNlKFdlYkNvcmU6
OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpDYXB0dXJlRGV2
aWNlJiwgY29uc3QgV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50cyosIFN0cmluZyYmIG5hbWUsIFN0
cmluZyYmIGhhc2hTYWx0LCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlciYsIGJvb2wgc2hvdWxkQ2Fw
dHVyZUluR1BVUHJvY2VzcywgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwotCi0gICAgLy8gUmVh
bHRpbWVNZWRpYVNvdXJjZQotICAgIHZvaWQgc3RhcnRQcm9kdWNpbmdEYXRhKCkgZmluYWwgeyBt
X3Byb3h5LnN0YXJ0UHJvZHVjaW5nRGF0YSgpOyB9Ci0gICAgdm9pZCBzdG9wUHJvZHVjaW5nRGF0
YSgpIGZpbmFsIHsgbV9wcm94eS5zdG9wUHJvZHVjaW5nRGF0YSgpOyB9Ci0gICAgYm9vbCBpc0Nh
cHR1cmVTb3VyY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9Ci0gICAgdm9pZCBiZWdp
bkNvbmZpZ3VyYXRpb24oKSBmaW5hbCB7IH0KLSAgICB2b2lkIGNvbW1pdENvbmZpZ3VyYXRpb24o
KSBmaW5hbCB7IH0KLSAgICB2b2lkIGFwcGx5Q29uc3RyYWludHMoY29uc3QgV2ViQ29yZTo6TWVk
aWFDb25zdHJhaW50cyYsIEFwcGx5Q29uc3RyYWludHNIYW5kbGVyJiYpIGZpbmFsOwotICAgIHZv
aWQgaGFzRW5kZWQoKSBmaW5hbDsKLSAgICBjb25zdCBXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291
cmNlU2V0dGluZ3MmIHNldHRpbmdzKCkgZmluYWwgeyByZXR1cm4gbV9zZXR0aW5nczsgfQotICAg
IGNvbnN0IFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmIGNhcGFiaWxp
dGllcygpIGZpbmFsIHsgcmV0dXJuIG1fY2FwYWJpbGl0aWVzOyB9Ci0gICAgdm9pZCB3aGVuUmVh
ZHkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcpPiYmIGNhbGxiYWNrKSBmaW5hbCB7IG1f
cHJveHkud2hlblJlYWR5KFdURk1vdmUoY2FsbGJhY2spKTsgfQotICAgIFdlYkNvcmU6OkNhcHR1
cmVEZXZpY2U6OkRldmljZVR5cGUgZGV2aWNlVHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
cHJveHkuZGV2aWNlVHlwZSgpOyB9Ci0gICAgYm9vbCBpbnRlcnJ1cHRlZCgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG1fcHJveHkuaW50ZXJydXB0ZWQoKTsgfQotCi0jaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKQotICAgIC8vIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpDbGllbnQKLSAgICB2b2lkIGdwdVBy
b2Nlc3NDb25uZWN0aW9uRGlkQ2xvc2UoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mKSBmaW5hbDsKLSNl
bmRpZgotCi0gICAgdm9pZCBjcmVhdGVSZW1vdGVNZWRpYVNvdXJjZSgpOwotICAgIHZvaWQgc2V0
Q2FwYWJpbGl0aWVzKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmJik7
Ci0KLSAgICBSZW1vdGVSZWFsdGltZU1lZGlhU291cmNlUHJveHkgbV9wcm94eTsKLSAgICBVc2Vy
TWVkaWFDYXB0dXJlTWFuYWdlciYgbV9tYW5hZ2VyOwotICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6TWVkaWFDb25zdHJhaW50cz4gbV9jb25zdHJhaW50czsKLSAgICBXZWJDb3JlOjpSZWFsdGlt
ZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzIG1fY2FwYWJpbGl0aWVzOwotICAgIFdlYkNvcmU6OlJl
YWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyBtX3NldHRpbmdzOwogfTsKIAotaW5saW5lIHZvaWQg
UmVtb3RlUmVhbHRpbWVBdWRpb1NvdXJjZTo6c291cmNlTXV0ZWRDaGFuZ2VkKGJvb2wgbXV0ZWQs
IGJvb2wgaW50ZXJydXB0ZWQpCi17Ci0gICAgbV9wcm94eS5zZXRJbnRlcnJ1cHRlZChpbnRlcnJ1
cHRlZCk7Ci0gICAgbm90aWZ5TXV0ZWRDaGFuZ2UobXV0ZWQpOwotfQotCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
Y29jb2EvUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvY29jb2EvUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDk3
NWFmMDU5YTMxMTEzZTgwNGE5MGViNGMwMTY1OTU5NjQ3ZDQ2ZQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVSZWFsdGltZU1lZGlhU291cmNl
LmNwcApAQCAtMCwwICsxLDE2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJ
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
ZWN0aW9uLmgiCisjaW5jbHVkZSAiVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuaCIKKyNpbmNsdWRl
ICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYUNvbnN0cmFpbnRzLmg+CisK
K25hbWVzcGFjZSBXZWJLaXQgewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK3N0YXRpYyBS
ZWFsdGltZU1lZGlhU291cmNlOjpUeXBlIHRvU291cmNlVHlwZShDYXB0dXJlRGV2aWNlOjpEZXZp
Y2VUeXBlIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBDYXB0dXJlRGV2
aWNlOjpEZXZpY2VUeXBlOjpNaWNyb3Bob25lOgorICAgICAgICByZXR1cm4gUmVhbHRpbWVNZWRp
YVNvdXJjZTo6VHlwZTo6QXVkaW87CisgICAgY2FzZSBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBl
OjpDYW1lcmE6CisgICAgICAgIHJldHVybiBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpWaWRl
bzsKKyAgICBjYXNlIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OlNjcmVlbjoKKyAgICAgICAg
cmV0dXJuIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlNjcmVlbjsKKyAgICBjYXNlIENhcHR1
cmVEZXZpY2U6OkRldmljZVR5cGU6OldpbmRvdzoKKyAgICAgICAgcmV0dXJuIFJlYWx0aW1lTWVk
aWFTb3VyY2U6OlR5cGU6OldpbmRvdzsKKyAgICBjYXNlIENhcHR1cmVEZXZpY2U6OkRldmljZVR5
cGU6OlN5c3RlbUF1ZGlvOgorICAgICAgICByZXR1cm4gUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlw
ZTo6U3lzdGVtQXVkaW87CisgICAgY2FzZSBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpVbmtu
b3duOgorICAgIGNhc2UgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6U3BlYWtlcjoKKyAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBSZWFsdGltZU1lZGlhU291
cmNlOjpUeXBlOjpBdWRpbzsKKyAgICB9Cit9CisKK1JlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2U6
OlJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2UoUmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIg
aWRlbnRpZmllciwgY29uc3QgQ2FwdHVyZURldmljZSYgZGV2aWNlLCBjb25zdCBNZWRpYUNvbnN0
cmFpbnRzKiBjb25zdHJhaW50cywgU3RyaW5nJiYgbmFtZSwgU3RyaW5nJiYgaGFzaFNhbHQsIFVz
ZXJNZWRpYUNhcHR1cmVNYW5hZ2VyJiBtYW5hZ2VyLCBib29sIHNob3VsZENhcHR1cmVJbkdQVVBy
b2Nlc3MsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJZGVudGlmaWVyKQorICAgIDogUmVhbHRpbWVNZWRp
YVNvdXJjZSh0b1NvdXJjZVR5cGUoZGV2aWNlLnR5cGUoKSksIFdURk1vdmUobmFtZSksIFN0cmlu
ZyB7IGRldmljZS5wZXJzaXN0ZW50SWQoKSB9LCBXVEZNb3ZlKGhhc2hTYWx0KSwgcGFnZUlkZW50
aWZpZXIpCisgICAgLCBtX3Byb3h5KGlkZW50aWZpZXIsIGRldmljZSwgc2hvdWxkQ2FwdHVyZUlu
R1BVUHJvY2VzcywgY29uc3RyYWludHMpCisgICAgLCBtX21hbmFnZXIobWFuYWdlcikKK3sKK30K
KworUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZTo6UmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZShS
ZW1vdGVSZWFsdGltZU1lZGlhU291cmNlUHJveHkmJiBwcm94eSwgU3RyaW5nJiYgbmFtZSwgU3Ry
aW5nJiYgaGFzaFNhbHQsIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyJiBtYW5hZ2VyKQorICAgIDog
UmVhbHRpbWVNZWRpYVNvdXJjZSh0b1NvdXJjZVR5cGUocHJveHkuZGV2aWNlKCkudHlwZSgpKSwg
V1RGTW92ZShuYW1lKSwgU3RyaW5nIHsgcHJveHkuZGV2aWNlKCkucGVyc2lzdGVudElkKCkgfSwg
V1RGTW92ZShoYXNoU2FsdCksIHByb3h5LnBhZ2VJZGVudGlmaWVyKCkpCisgICAgLCBtX3Byb3h5
KFdURk1vdmUocHJveHkpKQorICAgICwgbV9tYW5hZ2VyKG1hbmFnZXIpCit7Cit9CisKK3ZvaWQg
UmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZTo6Y3JlYXRlUmVtb3RlTWVkaWFTb3VyY2UoKQorewor
ICAgIG1fcHJveHkuY3JlYXRlUmVtb3RlTWVkaWFTb3VyY2UoZGV2aWNlSURIYXNoU2FsdCgpLCBw
YWdlSWRlbnRpZmllcigpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dKGJv
b2wgc3VjY2VlZGVkLCBhdXRvJiYgZXJyb3JNZXNzYWdlLCBhdXRvJiYgc2V0dGluZ3MsIGF1dG8m
JiBjYXBhYmlsaXRpZXMsIGF1dG8mJiwgYXV0bywgYXV0bykgeworICAgICAgICBpZiAoIXN1Y2Nl
ZWRlZCkgeworICAgICAgICAgICAgbV9wcm94eS5kaWRGYWlsKFdURk1vdmUoZXJyb3JNZXNzYWdl
KSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBzZXRTZXR0aW5n
cyhXVEZNb3ZlKHNldHRpbmdzKSk7CisgICAgICAgIHNldENhcGFiaWxpdGllcyhXVEZNb3ZlKGNh
cGFiaWxpdGllcykpOworICAgICAgICBzZXROYW1lKFN0cmluZyB7IG1fc2V0dGluZ3MubGFiZWwo
KS5zdHJpbmcoKSB9KTsKKworICAgICAgICBtX3Byb3h5LnNldEFzUmVhZHkoKTsKKyAgICAgICAg
aWYgKG1fcHJveHkuc2hvdWxkQ2FwdHVyZUluR1BVUHJvY2VzcygpKQorICAgICAgICAgICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5hZGRDbGll
bnQoKnRoaXMpOworICAgIH0sIG1fcHJveHkuc2hvdWxkQ2FwdHVyZUluR1BVUHJvY2VzcygpICYm
IG1fbWFuYWdlci5zaG91bGRVc2VHUFVQcm9jZXNzUmVtb3RlRnJhbWVzKCkpOworfQorCit2b2lk
IFJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2U6OnJlbW92ZUFzQ2xpZW50KCkKK3sKKyAgICBpZiAo
bV9wcm94eS5zaG91bGRDYXB0dXJlSW5HUFVQcm9jZXNzKCkpIHsKKyAgICAgICAgaWYgKGF1dG8q
IGNvbm5lY3Rpb24gPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5leGlzdGluZ0dQVVByb2Nlc3ND
b25uZWN0aW9uKCkpCisgICAgICAgICAgICBjb25uZWN0aW9uLT5yZW1vdmVDbGllbnQoKnRoaXMp
OworICAgIH0KK30KKwordm9pZCBSZW1vdGVSZWFsdGltZU1lZGlhU291cmNlOjpzZXRDYXBhYmls
aXRpZXMoUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYmIGNhcGFiaWxpdGllcykKK3sK
KyAgICBtX2NhcGFiaWxpdGllcyA9IFdURk1vdmUoY2FwYWJpbGl0aWVzKTsKK30KKwordm9pZCBS
ZW1vdGVSZWFsdGltZU1lZGlhU291cmNlOjpzZXRTZXR0aW5ncyhSZWFsdGltZU1lZGlhU291cmNl
U2V0dGluZ3MmJiBzZXR0aW5ncykKK3sKKyAgICBhdXRvIGNoYW5nZWQgPSBtX3NldHRpbmdzLmRp
ZmZlcmVuY2Uoc2V0dGluZ3MpOworICAgIG1fc2V0dGluZ3MgPSBXVEZNb3ZlKHNldHRpbmdzKTsK
KyAgICBub3RpZnlTZXR0aW5nc0RpZENoYW5nZU9ic2VydmVycyhjaGFuZ2VkKTsKK30KKwordm9p
ZCBSZW1vdGVSZWFsdGltZU1lZGlhU291cmNlOjphcHBseUNvbnN0cmFpbnRzU3VjY2VlZGVkKFdl
YkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYmIHNldHRpbmdzKQoreworICAgIHNl
dFNldHRpbmdzKFdURk1vdmUoc2V0dGluZ3MpKTsKKyAgICBtX3Byb3h5LmFwcGx5Q29uc3RyYWlu
dHNTdWNjZWVkZWQoKTsKK30KKwordm9pZCBSZW1vdGVSZWFsdGltZU1lZGlhU291cmNlOjpkaWRF
bmQoKQoreworICAgIGlmIChtX3Byb3h5LmlzRW5kZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgbV9wcm94eS5lbmQoKTsKKyAgICBtX21hbmFnZXIucmVtb3ZlU291cmNlKGlkZW50aWZpZXIo
KSk7CisgICAgbV9tYW5hZ2VyLnJlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyKCkucmVtb3ZlU291
cmNlKGlkZW50aWZpZXIoKSk7Cit9CisKK3ZvaWQgUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZTo6
Y2FwdHVyZVN0b3BwZWQoYm9vbCBkaWRGYWlsKQoreworICAgIGlmIChkaWRGYWlsKSB7CisgICAg
ICAgIGNhcHR1cmVGYWlsZWQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBlbmQoKTsK
K30KKwordm9pZCBSZW1vdGVSZWFsdGltZU1lZGlhU291cmNlOjphcHBseUNvbnN0cmFpbnRzKGNv
bnN0IE1lZGlhQ29uc3RyYWludHMmIGNvbnN0cmFpbnRzLCBBcHBseUNvbnN0cmFpbnRzSGFuZGxl
ciYmIGNhbGxiYWNrKQoreworICAgIG1fY29uc3RyYWludHMgPSBjb25zdHJhaW50czsKKyAgICBt
X3Byb3h5LmFwcGx5Q29uc3RyYWludHMoY29uc3RyYWludHMsIFdURk1vdmUoY2FsbGJhY2spKTsK
K30KKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKK3ZvaWQgUmVtb3RlUmVhbHRpbWVNZWRpYVNv
dXJjZTo6Z3B1UHJvY2Vzc0Nvbm5lY3Rpb25EaWRDbG9zZShHUFVQcm9jZXNzQ29ubmVjdGlvbiYp
Cit7CisgICAgQVNTRVJUKG1fcHJveHkuc2hvdWxkQ2FwdHVyZUluR1BVUHJvY2VzcygpKTsKKyAg
ICBpZiAoaXNFbmRlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX21hbmFnZXIucmVtb3Rl
Q2FwdHVyZVNhbXBsZU1hbmFnZXIoKS5kaWRVcGRhdGVTb3VyY2VDb25uZWN0aW9uKGNvbm5lY3Rp
b24oKSk7CisgICAgbV9wcm94eS5yZXNldFJlYWR5KCk7CisgICAgY3JlYXRlUmVtb3RlTWVkaWFT
b3VyY2UoKTsKKworICAgIG1fcHJveHkuZmFpbEFwcGx5Q29uc3RyYWludENhbGxiYWNrcygiR1BV
IFByb2Nlc3MgdGVybWluYXRlZCJfcyk7CisgICAgaWYgKG1fY29uc3RyYWludHMpCisgICAgICAg
IG1fcHJveHkuYXBwbHlDb25zdHJhaW50cygqbV9jb25zdHJhaW50cywgW10oYXV0bykgeyB9KTsK
KworICAgIGlmIChpc1Byb2R1Y2luZ0RhdGEoKSkKKyAgICAgICAgc3RhcnRQcm9kdWNpbmdEYXRh
KCk7CisKK30KKyNlbmRpZgorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2UuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMjJkMjU3Y2VlOWU1NzU3YTEzMmM2NDUyNDdhYTk5OGE3ZmYxZTQxNAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVSZWFsdGltZU1l
ZGlhU291cmNlLmgKQEAgLTAsMCArMSwxMDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVk
ZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJSZW1vdGVSZWFsdGltZU1lZGlh
U291cmNlUHJveHkuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1JlYWx0aW1lTWVkaWFTb3VyY2UuaD4K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOwor
CitjbGFzcyBSZW1vdGVSZWFsdGltZU1lZGlhU291cmNlIDogcHVibGljIFdlYkNvcmU6OlJlYWx0
aW1lTWVkaWFTb3VyY2UKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisgICAgLCBwdWJsaWMgR1BV
UHJvY2Vzc0Nvbm5lY3Rpb246OkNsaWVudAorI2VuZGlmCit7CitwdWJsaWM6CisgICAgUmVtb3Rl
UmVhbHRpbWVNZWRpYVNvdXJjZShXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmll
ciwgY29uc3QgV2ViQ29yZTo6Q2FwdHVyZURldmljZSYsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhQ29u
c3RyYWludHMqLCBTdHJpbmcmJiBuYW1lLCBTdHJpbmcmJiBoYXNoU2FsdCwgVXNlck1lZGlhQ2Fw
dHVyZU1hbmFnZXImLCBib29sIHNob3VsZENhcHR1cmVJbkdQVVByb2Nlc3MsIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyKTsKKyAgICBSZW1vdGVSZWFsdGltZU1lZGlhU291cmNlKFJlbW90ZVJlYWx0
aW1lTWVkaWFTb3VyY2VQcm94eSYmLCBTdHJpbmcmJiBuYW1lLCBTdHJpbmcmJiBoYXNoU2FsdCwg
VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXImKTsKKworICAgIFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFT
b3VyY2VJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3Byb3h5LmlkZW50
aWZpZXIoKTsgfQorICAgIElQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbigpIHsgcmV0dXJuIG1f
cHJveHkuY29ubmVjdGlvbigpOyB9CisKKyAgICB2b2lkIHNldFNldHRpbmdzKFdlYkNvcmU6OlJl
YWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYmKTsKKworICAgIHZvaWQgYXBwbHlDb25zdHJhaW50
c1N1Y2NlZWRlZChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmJik7CisgICAg
dm9pZCBhcHBseUNvbnN0cmFpbnRzRmFpbGVkKFN0cmluZyYmIGZhaWxlZENvbnN0cmFpbnQsIFN0
cmluZyYmIGVycm9yTWVzc2FnZSkgeyBtX3Byb3h5LmFwcGx5Q29uc3RyYWludHNGYWlsZWQoV1RG
TW92ZShmYWlsZWRDb25zdHJhaW50KSwgV1RGTW92ZShlcnJvck1lc3NhZ2UpKTsgfQorCisgICAg
dm9pZCBjYXB0dXJlU3RvcHBlZChib29sIGRpZEZhaWwpOworICAgIHZvaWQgc291cmNlTXV0ZWRD
aGFuZ2VkKGJvb2wgdmFsdWUsIGJvb2wgaW50ZXJydXB0ZWQpOworCitwcm90ZWN0ZWQ6CisgICAg
dm9pZCBjcmVhdGVSZW1vdGVNZWRpYVNvdXJjZSgpOworICAgIHZvaWQgcmVtb3ZlQXNDbGllbnQo
KTsKKworICAgIFJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VQcm94eSYgcHJveHkoKSB7IHJldHVy
biBtX3Byb3h5OyB9CisgICAgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXImIG1hbmFnZXIoKSB7IHJl
dHVybiBtX21hbmFnZXI7IH0KKworICAgIHZvaWQgc2V0Q2FwYWJpbGl0aWVzKFdlYkNvcmU6OlJl
YWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmJik7CisKKyAgICBjb25zdCBXZWJDb3JlOjpS
ZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdzKCkgZmluYWwgeyByZXR1cm4gbV9z
ZXR0aW5nczsgfQorICAgIGNvbnN0IFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmls
aXRpZXMmIGNhcGFiaWxpdGllcygpIGZpbmFsIHsgcmV0dXJuIG1fY2FwYWJpbGl0aWVzOyB9CisK
K3ByaXZhdGU6CisgICAgLy8gUmVhbHRpbWVNZWRpYVNvdXJjZQorICAgIHZvaWQgc3RhcnRQcm9k
dWNpbmdEYXRhKCkgZmluYWwgeyBtX3Byb3h5LnN0YXJ0UHJvZHVjaW5nRGF0YSgpOyB9CisgICAg
dm9pZCBzdG9wUHJvZHVjaW5nRGF0YSgpIGZpbmFsIHsgbV9wcm94eS5zdG9wUHJvZHVjaW5nRGF0
YSgpOyB9CisgICAgYm9vbCBpc0NhcHR1cmVTb3VyY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0
cnVlOyB9CisgICAgdm9pZCBhcHBseUNvbnN0cmFpbnRzKGNvbnN0IFdlYkNvcmU6Ok1lZGlhQ29u
c3RyYWludHMmLCBBcHBseUNvbnN0cmFpbnRzSGFuZGxlciYmKSBmaW5hbDsKKyAgICB2b2lkIGRp
ZEVuZCgpIGZpbmFsOworICAgIHZvaWQgd2hlblJlYWR5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
U3RyaW5nKT4mJiBjYWxsYmFjaykgZmluYWwgeyBtX3Byb3h5LndoZW5SZWFkeShXVEZNb3ZlKGNh
bGxiYWNrKSk7IH0KKyAgICBXZWJDb3JlOjpDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlIGRldmlj
ZVR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3h5LmRldmljZVR5cGUoKTsgfQorICAg
IGJvb2wgaW50ZXJydXB0ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3h5LmludGVycnVw
dGVkKCk7IH0KKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKyAgICAvLyBHUFVQcm9jZXNzQ29u
bmVjdGlvbjo6Q2xpZW50CisgICAgdm9pZCBncHVQcm9jZXNzQ29ubmVjdGlvbkRpZENsb3NlKEdQ
VVByb2Nlc3NDb25uZWN0aW9uJikgZmluYWw7CisjZW5kaWYKKworICAgIFJlbW90ZVJlYWx0aW1l
TWVkaWFTb3VyY2VQcm94eSBtX3Byb3h5OworICAgIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyJiBt
X21hbmFnZXI7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnRzPiBt
X2NvbnN0cmFpbnRzOworICAgIFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRp
ZXMgbV9jYXBhYmlsaXRpZXM7CisgICAgV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRp
bmdzIG1fc2V0dGluZ3M7Cit9OworCitpbmxpbmUgdm9pZCBSZW1vdGVSZWFsdGltZU1lZGlhU291
cmNlOjpzb3VyY2VNdXRlZENoYW5nZWQoYm9vbCBtdXRlZCwgYm9vbCBpbnRlcnJ1cHRlZCkKK3sK
KyAgICBtX3Byb3h5LnNldEludGVycnVwdGVkKGludGVycnVwdGVkKTsKKyAgICBub3RpZnlNdXRl
ZENoYW5nZShtdXRlZCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVSZWFsdGltZU1l
ZGlhU291cmNlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVS
ZWFsdGltZU1lZGlhU291cmNlUHJveHkuaAppbmRleCBjNDRjNGJlNTg3N2FjMmExMjVkYzg1YjUw
MmNkN2IzZTljMTI5Y2JkLi5mNGE4ZTNjY2Q0MmFkZmQ1OTYxNTg1NTE0YmY0M2JhZjYxOTI0ZmQ3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVtb3RlUmVhbHRp
bWVNZWRpYVNvdXJjZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29h
L1JlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VQcm94eS5oCkBAIC01Miw2ICs1Miw3IEBAIHB1Ymxp
YzoKIAogICAgIElQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbigpOwogICAgIFdlYkNvcmU6OlJl
YWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBt
X2lkZW50aWZpZXI7IH0KKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSWRlbnRpZmll
cigpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlkZW50aWZpZXI7IH0KICAgICBXZWJDb3JlOjpDYXB0
dXJlRGV2aWNlOjpEZXZpY2VUeXBlIGRldmljZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX2Rldmlj
ZS50eXBlKCk7IH0KICAgICBjb25zdCBXZWJDb3JlOjpDYXB0dXJlRGV2aWNlJiBkZXZpY2UoKSBj
b25zdCB7IHJldHVybiBtX2RldmljZTsgfQogICAgIGJvb2wgc2hvdWxkQ2FwdHVyZUluR1BVUHJv
Y2VzcygpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkQ2FwdHVyZUluR1BVUHJvY2VzczsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZVJlYWx0aW1lVmlk
ZW9Tb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZVJlYWx0
aW1lVmlkZW9Tb3VyY2UuY3BwCmluZGV4IDg4OTMwYzJlY2NhODY2ZjAxNTZlMmNkZGQ2MTdlYjJh
NWE0ODMzMDYuLmMyMGE1NmM0OGExMThjODkyM2JjYTRmYjFmN2E2NzQ3NzhiNzc5ZDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVSZWFsdGltZVZpZGVv
U291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVtb3RlUmVh
bHRpbWVWaWRlb1NvdXJjZS5jcHAKQEAgLTI5LDExICsyOSw2IEBACiAjaWYgUExBVEZPUk0oQ09D
T0EpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKICNpbmNsdWRlICJVc2VyTWVkaWFDYXB0dXJl
TWFuYWdlci5oIgotI2luY2x1ZGUgIlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyTWVzc2FnZXMuaCIK
LSNpbmNsdWRlICJVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKLSNpbmNs
dWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKLSNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCi0j
aW5jbHVkZSA8V2ViQ29yZS9NZWRpYUNvbnN0cmFpbnRzLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC00OCw1OSArNDMsMjMgQEAgUmVmPFJlYWx0
aW1lTWVkaWFTb3VyY2U+IFJlbW90ZVJlYWx0aW1lVmlkZW9Tb3VyY2U6OmNyZWF0ZShjb25zdCBD
YXB0dXJlRGV2aWNlJgogfQogCiBSZW1vdGVSZWFsdGltZVZpZGVvU291cmNlOjpSZW1vdGVSZWFs
dGltZVZpZGVvU291cmNlKFJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyIGlkZW50aWZpZXIs
IGNvbnN0IENhcHR1cmVEZXZpY2UmIGRldmljZSwgY29uc3QgTWVkaWFDb25zdHJhaW50cyogY29u
c3RyYWludHMsIFN0cmluZyYmIGhhc2hTYWx0LCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlciYgbWFu
YWdlciwgYm9vbCBzaG91bGRDYXB0dXJlSW5HUFVQcm9jZXNzLCBQYWdlSWRlbnRpZmllciBwYWdl
SWRlbnRpZmllcikKLSAgICA6IFJlYWx0aW1lTWVkaWFTb3VyY2UoUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6VHlwZTo6VmlkZW8sIFN0cmluZyB7IGRldmljZS5sYWJlbCgpIH0sIFN0cmluZyB7IGRldmlj
ZS5wZXJzaXN0ZW50SWQoKSB9LCBXVEZNb3ZlKGhhc2hTYWx0KSwgcGFnZUlkZW50aWZpZXIpCi0g
ICAgLCBtX3Byb3h5KGlkZW50aWZpZXIsIGRldmljZSwgc2hvdWxkQ2FwdHVyZUluR1BVUHJvY2Vz
cywgY29uc3RyYWludHMpCi0gICAgLCBtX21hbmFnZXIobWFuYWdlcikKKyAgICA6IFJlbW90ZVJl
YWx0aW1lTWVkaWFTb3VyY2UoaWRlbnRpZmllciwgZGV2aWNlLCBjb25zdHJhaW50cywgU3RyaW5n
IHsgZGV2aWNlLmxhYmVsKCkgfSwgV1RGTW92ZShoYXNoU2FsdCksIG1hbmFnZXIsIHNob3VsZENh
cHR1cmVJbkdQVVByb2Nlc3MsIHBhZ2VJZGVudGlmaWVyKQogewogfQogCi1SZW1vdGVSZWFsdGlt
ZVZpZGVvU291cmNlOjpSZW1vdGVSZWFsdGltZVZpZGVvU291cmNlKFJlbW90ZVJlYWx0aW1lTWVk
aWFTb3VyY2VQcm94eSYmIHByb3h5LCBTdHJpbmcmJiBoYXNoU2FsdCwgVXNlck1lZGlhQ2FwdHVy
ZU1hbmFnZXImIG1hbmFnZXIsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJZGVudGlmaWVyKQotICAgIDog
UmVhbHRpbWVNZWRpYVNvdXJjZShSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpWaWRlbywgU3Ry
aW5nIHsgcHJveHkuZGV2aWNlKCkubGFiZWwoKSB9LCBTdHJpbmcgeyBwcm94eS5kZXZpY2UoKS5w
ZXJzaXN0ZW50SWQoKSB9LCBXVEZNb3ZlKGhhc2hTYWx0KSwgcGFnZUlkZW50aWZpZXIpCi0gICAg
LCBtX3Byb3h5KFdURk1vdmUocHJveHkpKQotICAgICwgbV9tYW5hZ2VyKG1hbmFnZXIpCitSZW1v
dGVSZWFsdGltZVZpZGVvU291cmNlOjpSZW1vdGVSZWFsdGltZVZpZGVvU291cmNlKFJlbW90ZVJl
YWx0aW1lTWVkaWFTb3VyY2VQcm94eSYmIHByb3h5LCBTdHJpbmcmJiBuYW1lLCBTdHJpbmcmJiBo
YXNoU2FsdCwgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXImIG1hbmFnZXIpCisgICAgOiBSZW1vdGVS
ZWFsdGltZU1lZGlhU291cmNlKFdURk1vdmUocHJveHkpLCBXVEZNb3ZlKG5hbWUpLCBXVEZNb3Zl
KGhhc2hTYWx0KSwgbWFuYWdlcikKIHsKIH0KIAotdm9pZCBSZW1vdGVSZWFsdGltZVZpZGVvU291
cmNlOjpjcmVhdGVSZW1vdGVNZWRpYVNvdXJjZSgpCi17Ci0gICAgbV9wcm94eS5jcmVhdGVSZW1v
dGVNZWRpYVNvdXJjZShkZXZpY2VJREhhc2hTYWx0KCksIHBhZ2VJZGVudGlmaWVyKCksIFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0oYm9vbCBzdWNjZWVkZWQsIGF1dG8mJiBl
cnJvck1lc3NhZ2UsIGF1dG8mJiBzZXR0aW5ncywgYXV0byYmIGNhcGFiaWxpdGllcywgYXV0byYm
LCBhdXRvLCBhdXRvKSB7Ci0gICAgICAgIGlmICghc3VjY2VlZGVkKSB7Ci0gICAgICAgICAgICBt
X3Byb3h5LmRpZEZhaWwoV1RGTW92ZShlcnJvck1lc3NhZ2UpKTsKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgfQotCi0gICAgICAgIHNldFNldHRpbmdzKFdURk1vdmUoc2V0dGluZ3MpKTsK
LSAgICAgICAgc2V0Q2FwYWJpbGl0aWVzKFdURk1vdmUoY2FwYWJpbGl0aWVzKSk7Ci0KLSAgICAg
ICAgbV9wcm94eS5zZXRBc1JlYWR5KCk7Ci0gICAgICAgIGlmIChtX3Byb3h5LnNob3VsZENhcHR1
cmVJbkdQVVByb2Nlc3MoKSkKLSAgICAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVu
c3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuYWRkQ2xpZW50KCp0aGlzKTsKLSAgICB9LCBtX3By
b3h5LnNob3VsZENhcHR1cmVJbkdQVVByb2Nlc3MoKSAmJiBtX21hbmFnZXIuc2hvdWxkVXNlR1BV
UHJvY2Vzc1JlbW90ZUZyYW1lcygpKTsKLX0KLQogUmVtb3RlUmVhbHRpbWVWaWRlb1NvdXJjZTo6
flJlbW90ZVJlYWx0aW1lVmlkZW9Tb3VyY2UoKQogewotICAgIGlmIChtX3Byb3h5LnNob3VsZENh
cHR1cmVJbkdQVVByb2Nlc3MoKSkgewotICAgICAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9IFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLmV4aXN0aW5nR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKSkKLSAg
ICAgICAgICAgIGNvbm5lY3Rpb24tPnJlbW92ZUNsaWVudCgqdGhpcyk7Ci0gICAgfQorICAgIHJl
bW92ZUFzQ2xpZW50KCk7CiB9CiAKIHZvaWQgUmVtb3RlUmVhbHRpbWVWaWRlb1NvdXJjZTo6ZW5k
UHJvZHVjaW5nRGF0YSgpCiB7Ci0gICAgbV9wcm94eS5lbmRQcm9kdWNpbmdEYXRhKCk7Ci19Ci0K
LXZvaWQgUmVtb3RlUmVhbHRpbWVWaWRlb1NvdXJjZTo6c2V0Q2FwYWJpbGl0aWVzKFJlYWx0aW1l
TWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmJiBjYXBhYmlsaXRpZXMpCi17Ci0gICAgbV9jYXBhYmls
aXRpZXMgPSBXVEZNb3ZlKGNhcGFiaWxpdGllcyk7Ci19Ci0KLXZvaWQgUmVtb3RlUmVhbHRpbWVW
aWRlb1NvdXJjZTo6c2V0U2V0dGluZ3MoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiYgc2V0
dGluZ3MpCi17Ci0gICAgYXV0byBjaGFuZ2VkID0gbV9zZXR0aW5ncy5kaWZmZXJlbmNlKHNldHRp
bmdzKTsKLSAgICBtX3NldHRpbmdzID0gV1RGTW92ZShzZXR0aW5ncyk7Ci0gICAgbm90aWZ5U2V0
dGluZ3NEaWRDaGFuZ2VPYnNlcnZlcnMoY2hhbmdlZCk7CisgICAgcHJveHkoKS5lbmRQcm9kdWNp
bmdEYXRhKCk7CiB9CiAKIGJvb2wgUmVtb3RlUmVhbHRpbWVWaWRlb1NvdXJjZTo6c2V0U2hvdWxk
QXBwbHlSb3RhdGlvbihib29sIHNob3VsZEFwcGx5Um90YXRpb24pCkBAIC0xMDksNzUgKzY4LDI5
IEBAIGJvb2wgUmVtb3RlUmVhbHRpbWVWaWRlb1NvdXJjZTo6c2V0U2hvdWxkQXBwbHlSb3RhdGlv
bihib29sIHNob3VsZEFwcGx5Um90YXRpb24pCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQg
UmVtb3RlUmVhbHRpbWVWaWRlb1NvdXJjZTo6YXBwbHlDb25zdHJhaW50c1N1Y2NlZWRlZChXZWJD
b3JlOjpSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmJiBzZXR0aW5ncykKLXsKLSAgICBzZXRT
ZXR0aW5ncyhXVEZNb3ZlKHNldHRpbmdzKSk7Ci0gICAgbV9wcm94eS5hcHBseUNvbnN0cmFpbnRz
U3VjY2VlZGVkKCk7Ci19Ci0KLXZvaWQgUmVtb3RlUmVhbHRpbWVWaWRlb1NvdXJjZTo6aGFzRW5k
ZWQoKQotewotICAgIGlmIChtX3Byb3h5LmlzRW5kZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgbV9wcm94eS5lbmQoKTsKLSAgICBtX21hbmFnZXIucmVtb3ZlU291cmNlKGlkZW50aWZpZXIo
KSk7Ci0gICAgbV9tYW5hZ2VyLnJlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyKCkucmVtb3ZlU291
cmNlKGlkZW50aWZpZXIoKSk7Ci19Ci0KIFJlZjxSZWFsdGltZU1lZGlhU291cmNlPiBSZW1vdGVS
ZWFsdGltZVZpZGVvU291cmNlOjpjbG9uZSgpCiB7Ci0gICAgaWYgKGlzRW5kZWQoKSB8fCBtX3By
b3h5LmlzRW5kZWQoKSkKKyAgICBpZiAoaXNFbmRlZCgpIHx8IHByb3h5KCkuaXNFbmRlZCgpKQog
ICAgICAgICByZXR1cm4gKnRoaXM7CiAKLSAgICBhdXRvIHNvdXJjZSA9IGFkb3B0UmVmKCpuZXcg
UmVtb3RlUmVhbHRpbWVWaWRlb1NvdXJjZShtX3Byb3h5LmNsb25lKCksIGRldmljZUlESGFzaFNh
bHQoKSwgbV9tYW5hZ2VyLCBwYWdlSWRlbnRpZmllcigpKSk7CisgICAgYXV0byBzb3VyY2UgPSBh
ZG9wdFJlZigqbmV3IFJlbW90ZVJlYWx0aW1lVmlkZW9Tb3VyY2UocHJveHkoKS5jbG9uZSgpLCBT
dHJpbmcgeyBuYW1lKCkgfSwgZGV2aWNlSURIYXNoU2FsdCgpLCBtYW5hZ2VyKCkpKTsKIAogICAg
IHNvdXJjZS0+c2V0U2V0dGluZ3MoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzIHsgc2V0dGlu
Z3MoKSB9KTsKICAgICBzb3VyY2UtPnNldENhcGFiaWxpdGllcyhSZWFsdGltZU1lZGlhU291cmNl
Q2FwYWJpbGl0aWVzIHsgY2FwYWJpbGl0aWVzKCkgfSk7CiAKLSAgICBtX21hbmFnZXIuYWRkU291
cmNlKHNvdXJjZS5jb3B5UmVmKCkpOwotICAgIG1fbWFuYWdlci5yZW1vdGVDYXB0dXJlU2FtcGxl
TWFuYWdlcigpLmFkZFNvdXJjZShzb3VyY2UuY29weVJlZigpKTsKLQotICAgIG1fcHJveHkuY3Jl
YXRlUmVtb3RlQ2xvbmVTb3VyY2Uoc291cmNlLT5pZGVudGlmaWVyKCkpOworICAgIG1hbmFnZXIo
KS5hZGRTb3VyY2Uoc291cmNlLmNvcHlSZWYoKSk7CisgICAgbWFuYWdlcigpLnJlbW90ZUNhcHR1
cmVTYW1wbGVNYW5hZ2VyKCkuYWRkU291cmNlKHNvdXJjZS5jb3B5UmVmKCkpOworICAgIHByb3h5
KCkuY3JlYXRlUmVtb3RlQ2xvbmVTb3VyY2Uoc291cmNlLT5pZGVudGlmaWVyKCkpOwogCiAgICAg
cmV0dXJuIHNvdXJjZTsKIH0KIAotdm9pZCBSZW1vdGVSZWFsdGltZVZpZGVvU291cmNlOjpjYXB0
dXJlU3RvcHBlZChib29sIGRpZEZhaWwpCit2b2lkIFJlbW90ZVJlYWx0aW1lVmlkZW9Tb3VyY2U6
OnJlbW90ZVZpZGVvRnJhbWVBdmFpbGFibGUoVmlkZW9GcmFtZSYgZnJhbWUsIFZpZGVvRnJhbWVU
aW1lTWV0YWRhdGEgbWV0YWRhdGEpCiB7Ci0gICAgaWYgKGRpZEZhaWwpCi0gICAgICAgIGNhcHR1
cmVGYWlsZWQoKTsKLSAgICBlbHNlCi0gICAgICAgIGVuZCgpOwotICAgIGhhc0VuZGVkKCk7Cisg
ICAgc2V0SW50cmluc2ljU2l6ZShleHBhbmRlZEludFNpemUoZnJhbWUucHJlc2VudGF0aW9uU2l6
ZSgpKSk7CisgICAgdmlkZW9GcmFtZUF2YWlsYWJsZShmcmFtZSwgbWV0YWRhdGEpOwogfQogCi12
b2lkIFJlbW90ZVJlYWx0aW1lVmlkZW9Tb3VyY2U6OmFwcGx5Q29uc3RyYWludHMoY29uc3QgTWVk
aWFDb25zdHJhaW50cyYgY29uc3RyYWludHMsIEFwcGx5Q29uc3RyYWludHNIYW5kbGVyJiYgY2Fs
bGJhY2spCi17Ci0gICAgbV9jb25zdHJhaW50cyA9IGNvbnN0cmFpbnRzOwotICAgIG1fcHJveHku
YXBwbHlDb25zdHJhaW50cyhjb25zdHJhaW50cywgV1RGTW92ZShjYWxsYmFjaykpOwotfQotCi0j
aWYgRU5BQkxFKEdQVV9QUk9DRVNTKQotdm9pZCBSZW1vdGVSZWFsdGltZVZpZGVvU291cmNlOjpn
cHVQcm9jZXNzQ29ubmVjdGlvbkRpZENsb3NlKEdQVVByb2Nlc3NDb25uZWN0aW9uJikKLXsKLSAg
ICBBU1NFUlQobV9wcm94eS5zaG91bGRDYXB0dXJlSW5HUFVQcm9jZXNzKCkpOwotICAgIGlmIChp
c0VuZGVkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fbWFuYWdlci5yZW1vdGVDYXB0dXJl
U2FtcGxlTWFuYWdlcigpLmRpZFVwZGF0ZVNvdXJjZUNvbm5lY3Rpb24oY29ubmVjdGlvbigpKTsK
LSAgICBtX3Byb3h5LnJlc2V0UmVhZHkoKTsKLSAgICBjcmVhdGVSZW1vdGVNZWRpYVNvdXJjZSgp
OwotCi0gICAgbV9wcm94eS5mYWlsQXBwbHlDb25zdHJhaW50Q2FsbGJhY2tzKCJHUFUgUHJvY2Vz
cyB0ZXJtaW5hdGVkIl9zKTsKLSAgICBpZiAobV9jb25zdHJhaW50cykKLSAgICAgICAgbV9wcm94
eS5hcHBseUNvbnN0cmFpbnRzKCptX2NvbnN0cmFpbnRzLCBbXShhdXRvKSB7IH0pOwotCi0gICAg
aWYgKGlzUHJvZHVjaW5nRGF0YSgpKQotICAgICAgICBzdGFydFByb2R1Y2luZ0RhdGEoKTsKLX0K
LSNlbmRpZgotCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL2NvY29hL1JlbW90ZVJlYWx0aW1lVmlkZW9Tb3VyY2UuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9jb2NvYS9SZW1vdGVSZWFsdGltZVZpZGVvU291cmNlLmgKaW5kZXggZDFiODU5OTVm
MzlkNmE4NGNkNDFiNzQwN2U4NDYyMzM5ZjA1ODc2MC4uNjYzYjU1OTJlNDMwNjVlZjM0YWQxY2Uy
MDgzMmRiYjY5NDE0NmZhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2Nv
Y29hL1JlbW90ZVJlYWx0aW1lVmlkZW9Tb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvY29jb2EvUmVtb3RlUmVhbHRpbWVWaWRlb1NvdXJjZS5oCkBAIC0yNywxMCArMjcsOSBA
QAogCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKLSNpbmNs
dWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIlJlbW90ZVJlYWx0aW1lTWVk
aWFTb3VyY2UuaCIKICNpbmNsdWRlICJSZW1vdGVSZWFsdGltZU1lZGlhU291cmNlUHJveHkuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL0NhcHR1cmVEZXZpY2UuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1Jl
YWx0aW1lTWVkaWFTb3VyY2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlYWx0aW1lTWVkaWFTb3Vy
Y2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9WaWRlb0ZyYW1lLmg+CiAKQEAgLTQy
LDY5ICs0MSwyMiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgVXNlck1lZGlhQ2FwdHVy
ZU1hbmFnZXI7CiAKLWNsYXNzIFJlbW90ZVJlYWx0aW1lVmlkZW9Tb3VyY2UgZmluYWwgOiBwdWJs
aWMgV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZQotI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykK
LSAgICAsIHB1YmxpYyBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6Q2xpZW50Ci0jZW5kaWYKLXsKK2Ns
YXNzIFJlbW90ZVJlYWx0aW1lVmlkZW9Tb3VyY2UgZmluYWwgOiBwdWJsaWMgUmVtb3RlUmVhbHRp
bWVNZWRpYVNvdXJjZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxXZWJDb3JlOjpSZWFsdGlt
ZU1lZGlhU291cmNlPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6Q2FwdHVyZURldmljZSYsIGNvbnN0
IFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludHMqLCBTdHJpbmcmJiBoYXNoU2FsdCwgVXNlck1lZGlh
Q2FwdHVyZU1hbmFnZXImLCBib29sIHNob3VsZENhcHR1cmVJbkdQVVByb2Nlc3MsIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyKTsKICAgICB+UmVtb3RlUmVhbHRpbWVWaWRlb1NvdXJjZSgpOwogCi0g
ICAgV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNv
bnN0IHsgcmV0dXJuIG1fcHJveHkuaWRlbnRpZmllcigpOyB9Ci0gICAgSVBDOjpDb25uZWN0aW9u
KiBjb25uZWN0aW9uKCkgeyByZXR1cm4gbV9wcm94eS5jb25uZWN0aW9uKCk7IH0KLQotICAgIHZv
aWQgc2V0U2V0dGluZ3MoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiYpOwot
Ci0gICAgdm9pZCBjYXB0dXJlU3RvcHBlZChib29sIGRpZEZhaWwpOwotCi0gICAgdm9pZCByZW1v
dGVWaWRlb0ZyYW1lQXZhaWxhYmxlKFdlYkNvcmU6OlZpZGVvRnJhbWUmIGZyYW1lLCBXZWJDb3Jl
OjpWaWRlb0ZyYW1lVGltZU1ldGFkYXRhIG1ldGFkYXRhKSB7IHZpZGVvRnJhbWVBdmFpbGFibGUo
ZnJhbWUsIG1ldGFkYXRhKTsgfQotICAgIHZvaWQgc291cmNlTXV0ZWRDaGFuZ2VkKGJvb2wgdmFs
dWUsIGJvb2wgaW50ZXJydXB0ZWQpOwotCi0gICAgdm9pZCBhcHBseUNvbnN0cmFpbnRzU3VjY2Vl
ZGVkKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYmKTsKLSAgICB2b2lkIGFw
cGx5Q29uc3RyYWludHNGYWlsZWQoU3RyaW5nJiYgZmFpbGVkQ29uc3RyYWludCwgU3RyaW5nJiYg
ZXJyb3JNZXNzYWdlKSB7IG1fcHJveHkuYXBwbHlDb25zdHJhaW50c0ZhaWxlZChXVEZNb3ZlKGZh
aWxlZENvbnN0cmFpbnQpLCBXVEZNb3ZlKGVycm9yTWVzc2FnZSkpOyB9CisgICAgdm9pZCByZW1v
dGVWaWRlb0ZyYW1lQXZhaWxhYmxlKFdlYkNvcmU6OlZpZGVvRnJhbWUmLCBXZWJDb3JlOjpWaWRl
b0ZyYW1lVGltZU1ldGFkYXRhKTsKIAogcHJpdmF0ZToKICAgICBSZW1vdGVSZWFsdGltZVZpZGVv
U291cmNlKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyLCBjb25zdCBXZWJD
b3JlOjpDYXB0dXJlRGV2aWNlJiwgY29uc3QgV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50cyosIFN0
cmluZyYmIGhhc2hTYWx0LCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlciYsIGJvb2wgc2hvdWxkQ2Fw
dHVyZUluR1BVUHJvY2VzcywgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwotICAgIFJlbW90ZVJl
YWx0aW1lVmlkZW9Tb3VyY2UoUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZVByb3h5JiYsIFN0cmlu
ZyYmIGhhc2hTYWx0LCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlciYsIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyKTsKKyAgICBSZW1vdGVSZWFsdGltZVZpZGVvU291cmNlKFJlbW90ZVJlYWx0aW1lTWVk
aWFTb3VyY2VQcm94eSYmLCBTdHJpbmcmJiBuYW1lLCBTdHJpbmcmJiBoYXNoU2FsdCwgVXNlck1l
ZGlhQ2FwdHVyZU1hbmFnZXImKTsKIAotICAgIC8vIFJlYWx0aW1lTWVkaWFTb3VyY2UKLSAgICB2
b2lkIHN0YXJ0UHJvZHVjaW5nRGF0YSgpIGZpbmFsIHsgbV9wcm94eS5zdGFydFByb2R1Y2luZ0Rh
dGEoKTsgfQotICAgIHZvaWQgc3RvcFByb2R1Y2luZ0RhdGEoKSBmaW5hbCB7IG1fcHJveHkuc3Rv
cFByb2R1Y2luZ0RhdGEoKTsgfQotICAgIGJvb2wgaXNDYXB0dXJlU291cmNlKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZvaWQgYmVnaW5Db25maWd1cmF0aW9uKCkgZmluYWwg
eyB9Ci0gICAgdm9pZCBjb21taXRDb25maWd1cmF0aW9uKCkgZmluYWwgeyB9Ci0gICAgdm9pZCBh
cHBseUNvbnN0cmFpbnRzKGNvbnN0IFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludHMmLCBBcHBseUNv
bnN0cmFpbnRzSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGhhc0VuZGVkKCkgZmluYWw7Ci0g
ICAgY29uc3QgV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBzZXR0aW5ncygp
IGZpbmFsIHsgcmV0dXJuIG1fc2V0dGluZ3M7IH0KLSAgICBjb25zdCBXZWJDb3JlOjpSZWFsdGlt
ZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBjYXBhYmlsaXRpZXMoKSBmaW5hbCB7IHJldHVybiBt
X2NhcGFiaWxpdGllczsgfQotICAgIHZvaWQgd2hlblJlYWR5KENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoU3RyaW5nKT4mJiBjYWxsYmFjaykgZmluYWwgeyBtX3Byb3h5LndoZW5SZWFkeShXVEZNb3Zl
KGNhbGxiYWNrKSk7IH0KLSAgICBXZWJDb3JlOjpDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlIGRl
dmljZVR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3h5LmRldmljZVR5cGUoKTsgfQog
ICAgIFJlZjxSZWFsdGltZU1lZGlhU291cmNlPiBjbG9uZSgpIGZpbmFsOwogICAgIHZvaWQgZW5k
UHJvZHVjaW5nRGF0YSgpIGZpbmFsOwogICAgIGJvb2wgc2V0U2hvdWxkQXBwbHlSb3RhdGlvbihi
b29sKSBmaW5hbDsKLQotI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKLSAgICAvLyBHUFVQcm9jZXNz
Q29ubmVjdGlvbjo6Q2xpZW50Ci0gICAgdm9pZCBncHVQcm9jZXNzQ29ubmVjdGlvbkRpZENsb3Nl
KEdQVVByb2Nlc3NDb25uZWN0aW9uJikgZmluYWw7Ci0jZW5kaWYKLQotICAgIHZvaWQgY3JlYXRl
UmVtb3RlTWVkaWFTb3VyY2UoKTsKLSAgICB2b2lkIHNldENhcGFiaWxpdGllcyhXZWJDb3JlOjpS
ZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiYpOwotCi0gICAgUmVtb3RlUmVhbHRpbWVN
ZWRpYVNvdXJjZVByb3h5IG1fcHJveHk7Ci0gICAgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXImIG1f
bWFuYWdlcjsKLSAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludHM+IG1f
Y29uc3RyYWludHM7Ci0gICAgV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGll
cyBtX2NhcGFiaWxpdGllczsKLSAgICBXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlU2V0dGlu
Z3MgbV9zZXR0aW5nczsKIH07CiAKLWlubGluZSB2b2lkIFJlbW90ZVJlYWx0aW1lVmlkZW9Tb3Vy
Y2U6OnNvdXJjZU11dGVkQ2hhbmdlZChib29sIG11dGVkLCBib29sIGludGVycnVwdGVkKQotewot
ICAgIG1fcHJveHkuc2V0SW50ZXJydXB0ZWQoaW50ZXJydXB0ZWQpOwotICAgIG5vdGlmeU11dGVk
Q2hhbmdlKG11dGVkKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>