<?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>171633</bug_id>
          
          <creation_ts>2017-05-03 16:38:51 -0700</creation_ts>
          <short_desc>Add support for reading and writing settings from UIProcess audio capture</short_desc>
          <delta_ts>2017-05-08 16:32:01 -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>Media</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jonlee</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1304368</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-05-03 16:38:51 -0700</bug_when>
    <thetext>Currently we are not able to do so, which limits the usefulness of getSettings() and applyConstraints for audio tracks.
See radar 31878098 also.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1304407</commentid>
    <comment_count>1</comment_count>
      <attachid>308991</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-05-03 17:13:55 -0700</bug_when>
    <thetext>Created attachment 308991
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1304427</commentid>
    <comment_count>2</comment_count>
      <attachid>308991</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-05-03 17:38:29 -0700</bug_when>
    <thetext>Comment on attachment 308991
Patch

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

&gt; Source/WebCore/platform/mediastream/mac/CoreAudioCaptureSource.cpp:306
&gt;  

Nit: extra blank

&gt; Source/WebKit2/UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:147
&gt; +        settings = source-&gt;settings();

Why is this necessary?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1304518</commentid>
    <comment_count>3</comment_count>
      <attachid>309018</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-05-03 22:33:56 -0700</bug_when>
    <thetext>Created attachment 309018
Rebasing patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1304519</commentid>
    <comment_count>4</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-05-03 22:34:59 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #3)
&gt; Created attachment 309018 [details]
&gt; Rebasing patch

Plus some minor clean-up to CoreAudioCaptureSource.
Let&apos;s see whether it compiles and passes tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1305337</commentid>
    <comment_count>5</comment_count>
      <attachid>309216</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-05-05 14:54:25 -0700</bug_when>
    <thetext>Created attachment 309216
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1305533</commentid>
    <comment_count>6</comment_count>
      <attachid>309272</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-05-05 23:25:15 -0700</bug_when>
    <thetext>Created attachment 309272
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1305724</commentid>
    <comment_count>7</comment_count>
      <attachid>309324</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-05-07 11:28:38 -0700</bug_when>
    <thetext>Created attachment 309324
Fixing start/stop and using last client</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1305790</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-05-07 19:21:43 -0700</bug_when>
    <thetext>&lt;rdar://problem/32041545&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1306077</commentid>
    <comment_count>9</comment_count>
      <attachid>309419</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-05-08 15:05:54 -0700</bug_when>
    <thetext>Created attachment 309419
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1306144</commentid>
    <comment_count>10</comment_count>
      <attachid>309419</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-05-08 16:31:59 -0700</bug_when>
    <thetext>Comment on attachment 309419
Patch

Clearing flags on attachment: 309419

Committed r216463: &lt;http://trac.webkit.org/changeset/216463&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1306145</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-05-08 16:32:01 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>308991</attachid>
            <date>2017-05-03 17:13:55 -0700</date>
            <delta_ts>2017-05-03 22:33:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171633-20170503171354.patch</filename>
            <type>text/plain</type>
            <size>35083</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2MTE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTI3ZDA1YmU2OWJkNWJh
MjVjNTI1ZDI2YjU0NjI4NmExZWUwMTc5ZS4uYTVkOWVhZGFjZWYxNzViOTVmNDhiMGMwMjcwOTky
N2E1N2JhNmU2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDE3LTA1LTAzICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3Ig
cmVhZGluZyBhbmQgd3JpdGluZyBzZXR0aW5ncyBmcm9tIFVJUHJvY2VzcyBhdWRpbyBjYXB0dXJl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzE2MzMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVk
IGJ5IG1hbnVhbCB0ZXN0aW5nIGFuZCBleGlzdGluZyB0ZXN0IHNldHMuCisKKyAgICAgICAgTW92
aW5nIHN1Y2Nlc3MvZmFpbHVyZSBjYWxsYmFja3MgZm9yIGFwcGx5Q29uc3RyYWludHMuCisgICAg
ICAgIE1ha2luZyBtYWluIFJlYWx0aW1lTWVkaWFTb3VyY2U6OmFwcGx5Q29uc3RyYWludHMgdmly
dHVhbCBzbyB0aGF0IFdlYlByb2Nlc3Mgc291cmNlIHByb3hpZXMgY2FuIGltcGxlbWVudCBpdCBi
eQorICAgICAgICBkb2luZyBhbiBJUEMgY2FsbCBkaXJlY3RseS4gRG9pbmcgc28gZm9yIFVJUHJv
Y2VzcyBDb3JlQXVkaW9DYXB0dXJlU291cmNlLgorCisgICAgICAgIEFkZGluZyBzdXBwb3J0IGZv
ciB2b2x1bWUgdG8gQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZSBieSBhcHBseWluZyBnYWluIHBvc3Qt
Y2FwdHVyaW5nLgorICAgICAgICBBZGRpbmcgc3VwcG9ydCBmb3IgdG9nZ2xpbmcgZWNobyBjYW5j
ZWxsYXRpb24gaW4gQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS4KKyAgICAgICAgQWRkaW5nIHN1cHBv
cnQgdG8gY2hhbmdlIGVjaG8gY2FuY2VsbGF0aW9uIGFuZCBzYW1wbGUgcmF0ZSBieSBzY2hlZHVs
aW5nIGEgcmVjb25maWd1cmF0aW9uIG9mIHRoZSBhdWRpbyB1bml0LgorICAgICAgICBUbyBkbyBz
bywgd2Ugc3RvcCBwcm9kdWNpbmcgZGF0YSwgZGVsZXRlIHRoZSBhdWRpbyB1bml0IGFuZCByZXN0
YXJ0IHByb2R1Y2luZyBkYXRhLgorICAgICAgICBSZW1vdmluZyBDb3JlQXVkaW9DYXB0dXJlU291
cmNlOjpzdXBwb3J0ZWRDb25zdHJhaW50cyBhcyBpdCBpcyByZWR1bmRhbnQgd2l0aAorICAgICAg
ICBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OnN1cHBvcnRlZENvbnN0cmFpbnRzLgorCisg
ICAgICAgIFNldHRpbmcgc2FtcGxlIHJhdGUgb25seSB0byB0aGUgZm9sbG93aW5nIHZhbHVlczog
ODAwMCwgMTYwMDAsIDMyMDAwLCA0NDEwMCwgNDgwMDAuCisKKyAgICAgICAgKiBNb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFT
dHJlYW1UcmFjazo6YXBwbHlDb25zdHJhaW50cyk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFTdHJlYW1UcmFja1ByaXZhdGU6OmFwcGx5Q29uc3RyYWludHMpOgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmg6CisgICAgICAgICogcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZWFsdGltZU1lZGlhU291cmNlOjphcHBseUNvbnN0cmFpbnRzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmg6CisgICAgICAgICogcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmg6CisgICAgICAg
IChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OnN1cHBvcnRlZENvbnN0cmFp
bnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVy
ZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb3JlQXVkaW9DYXB0dXJlU291cmNlOjp+
Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDb3JlQXVkaW9DYXB0
dXJlU291cmNlOjpwcm9jZXNzTWljcm9waG9uZVNhbXBsZXMpOgorICAgICAgICAoV2ViQ29yZTo6
Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6Y2xlYW51cEF1ZGlvVW5pdCk6CisgICAgICAgIChXZWJD
b3JlOjpDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpjcmVhdGVBdWRpb1VuaXQpOgorICAgICAgICAo
V2ViQ29yZTo6Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6Y29uZmlndXJlQXVkaW9Vbml0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpjYXBhYmlsaXRp
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6c2V0dGluZ3Mp
OgorICAgICAgICAoV2ViQ29yZTo6Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6YXBwbHlTYW1wbGVS
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OmFwcGx5RWNo
b0NhbmNlbGxhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDb3JlQXVkaW9DYXB0dXJlU291cmNl
OjpzY2hlZHVsZVJlY29uZmlndXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDb3JlQXVkaW9D
YXB0dXJlU291cmNlOjpjbGVhbnVwQXVkaW9Vbml0cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpzZXR1cEF1ZGlvVW5pdHMpOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlU291cmNl
Lmg6CisKIDIwMTctMDUtMDMgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAg
ICAgICAgIFJlbmFtZSBTdHlsZUludmFsaWRhdGlvbkFuYWx5c2lzIHRvIFN0eWxlOjpJbnZhbGlk
YXRvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCmluZGV4IDE2OTYwMWQwNDYzNDRiZWU4MzRkM2ZjNTViODQ3NDMzYTI4NTNl
YTIuLjI2NmJhOTU0YzEwMDA1YWIyMzJiYjNiMGVlZDE1ZThlNGZkNTg5MzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyOSBAQAorMjAxNy0wNS0wMyAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBs
ZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHJlYWRpbmcgYW5kIHdyaXRpbmcgc2V0
dGluZ3MgZnJvbSBVSVByb2Nlc3MgYXVkaW8gY2FwdHVyZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcxNjMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2Fw
dHVyZU1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYUNhcHR1cmVN
YW5hZ2VyUHJveHk6OmNyZWF0ZU1lZGlhU291cmNlRm9yQ2FwdHVyZURldmljZVdpdGhDb25zdHJh
aW50cyk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6OmFw
cGx5Q29uc3RyYWludHMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0
dXJlTWFuYWdlclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNh
cHR1cmVNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2Nv
YS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRp
YUNhcHR1cmVNYW5hZ2VyOjpTb3VyY2U6OnNldFNldHRpbmdzKToKKyAgICAgICAgKFdlYktpdDo6
VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OlNvdXJjZTo6YXBwbHlDb25zdHJhaW50c1N1Y2NlZWRl
ZCk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOjpTb3VyY2U6OmFw
cGx5Q29uc3RyYWludHNGYWlsZWQpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFDYXB0dXJl
TWFuYWdlcjo6Y3JlYXRlQ2FwdHVyZVNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRp
YUNhcHR1cmVNYW5hZ2VyOjpzb3VyY2VTZXR0aW5nc0NoYW5nZWQpOgorICAgICAgICAoV2ViS2l0
OjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6YXBwbHlDb25zdHJhaW50cyk6CisgICAgICAgIChX
ZWJLaXQ6OlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOjphcHBseUNvbnN0cmFpbnRzU3VjY2VlZGVk
KToKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OmFwcGx5Q29uc3Ry
YWludHNGYWlsZWQpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6
U291cmNlOjpzZXRNdXRlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYUNh
cHR1cmVNYW5hZ2VyOjpTb3VyY2U6OnNldEVuYWJsZWQpOiBEZWxldGVkLgorICAgICAgICAqIFdl
YlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLm1lc3NhZ2VzLmluOgorCiAyMDE3
LTA1LTAzICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAg
ICAgICBbR1RLXSBBZGQgR1RLKyBpbXBsZW1lbnRhdGlvbiBvZiBXZWJBdXRvbWF0aW9uU2Vzc2lv
bgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbVRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW1UcmFjay5jcHAKaW5kZXggYzBlZmVhMWFkNGU5ZGUwNGNhZjE2YzExZDAyMmRjZjkyNjc3
YmNhMC4uNjY0MWZmOTdmMzYzMDlkMTQxZTUyYTBmMWFjNWExMmMwZWViYmFlNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJh
Y2suY3BwCkBAIC0yNjQsNyArMjY0LDcgQEAgdm9pZCBNZWRpYVN0cmVhbVRyYWNrOjphcHBseUNv
bnN0cmFpbnRzKGNvbnN0IHN0ZDo6b3B0aW9uYWw8TWVkaWFUcmFja0NvbnN0cmFpbnQKICAgICAg
ICAgd2Vha1RoaXMtPm1fcHJvbWlzZS0+cmVzb2x2ZSgpOwogICAgICAgICB3ZWFrVGhpcy0+bV9j
b25zdHJhaW50cyA9IGNvbnN0cmFpbnRzLnZhbHVlX29yKE1lZGlhVHJhY2tDb25zdHJhaW50cyB7
IH0pOwogICAgIH07Ci0gICAgbV9wcml2YXRlLT5hcHBseUNvbnN0cmFpbnRzKGNyZWF0ZU1lZGlh
Q29uc3RyYWludHNJbXBsKGNvbnN0cmFpbnRzKSwgc3VjY2Vzc0hhbmRsZXIsIGZhaWx1cmVIYW5k
bGVyKTsKKyAgICBtX3ByaXZhdGUtPmFwcGx5Q29uc3RyYWludHMoY3JlYXRlTWVkaWFDb25zdHJh
aW50c0ltcGwoY29uc3RyYWludHMpLCBXVEZNb3ZlKHN1Y2Nlc3NIYW5kbGVyKSwgV1RGTW92ZShm
YWlsdXJlSGFuZGxlcikpOwogfQogCiB2b2lkIE1lZGlhU3RyZWFtVHJhY2s6OmFkZE9ic2VydmVy
KE9ic2VydmVyJiBvYnNlcnZlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmNwcAppbmRleCA5
ZmZkMDQ0M2IyYzIzMzViZGJjNmZiNjUxY2FmZTVlNDRiZWIwMzQzLi5mNWI0ZTI5ZTlmYmU2MjZh
NTg1NjZmOWIwODFlNWY2M2E4Y2FjZTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuY3Bw
CkBAIC0xNDEsOSArMTQxLDkgQEAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGll
cyYgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OmNhcGFiaWxpdGllcygpIGMKICAgICByZXR1cm4g
bV9zb3VyY2UtPmNhcGFiaWxpdGllcygpOwogfQogCi12b2lkIE1lZGlhU3RyZWFtVHJhY2tQcml2
YXRlOjphcHBseUNvbnN0cmFpbnRzKGNvbnN0IE1lZGlhQ29uc3RyYWludHMmIGNvbnN0cmFpbnRz
LCBSZWFsdGltZU1lZGlhU291cmNlOjpTdWNjZXNzSGFuZGxlciBzdWNjZXNzSGFuZGxlciwgUmVh
bHRpbWVNZWRpYVNvdXJjZTo6RmFpbHVyZUhhbmRsZXIgZmFpbHVyZUhhbmRsZXIpCit2b2lkIE1l
ZGlhU3RyZWFtVHJhY2tQcml2YXRlOjphcHBseUNvbnN0cmFpbnRzKGNvbnN0IE1lZGlhQ29uc3Ry
YWludHMmIGNvbnN0cmFpbnRzLCBSZWFsdGltZU1lZGlhU291cmNlOjpTdWNjZXNzSGFuZGxlciYm
IHN1Y2Nlc3NIYW5kbGVyLCBSZWFsdGltZU1lZGlhU291cmNlOjpGYWlsdXJlSGFuZGxlciYmIGZh
aWx1cmVIYW5kbGVyKQogewotICAgIG1fc291cmNlLT5hcHBseUNvbnN0cmFpbnRzKGNvbnN0cmFp
bnRzLCBzdWNjZXNzSGFuZGxlciwgZmFpbHVyZUhhbmRsZXIpOworICAgIG1fc291cmNlLT5hcHBs
eUNvbnN0cmFpbnRzKGNvbnN0cmFpbnRzLCBXVEZNb3ZlKHN1Y2Nlc3NIYW5kbGVyKSwgV1RGTW92
ZShmYWlsdXJlSGFuZGxlcikpOwogfQogCiBBdWRpb1NvdXJjZVByb3ZpZGVyKiBNZWRpYVN0cmVh
bVRyYWNrUHJpdmF0ZTo6YXVkaW9Tb3VyY2VQcm92aWRlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1ByaXZh
dGUuaAppbmRleCA0ZDc4M2UwMjU0N2ZmY2U3NTU4MWJjNTg2Yzg1ZjUyNmU4MzJlNTcwLi41ZTIw
NDZhZDVhNGNlZWE4OGRmNWQzZGFiMjQ5ZmUzYTJkNjZjODIxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQ
cml2YXRlLmgKQEAgLTg5LDcgKzg5LDcgQEAgcHVibGljOgogICAgIGNvbnN0IFJlYWx0aW1lTWVk
aWFTb3VyY2VTZXR0aW5ncyYgc2V0dGluZ3MoKSBjb25zdDsKICAgICBjb25zdCBSZWFsdGltZU1l
ZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBjYXBhYmlsaXRpZXMoKSBjb25zdDsKIAotICAgIHZvaWQg
YXBwbHlDb25zdHJhaW50cyhjb25zdCBNZWRpYUNvbnN0cmFpbnRzJiwgUmVhbHRpbWVNZWRpYVNv
dXJjZTo6U3VjY2Vzc0hhbmRsZXIsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OkZhaWx1cmVIYW5kbGVy
KTsKKyAgICB2b2lkIGFwcGx5Q29uc3RyYWludHMoY29uc3QgTWVkaWFDb25zdHJhaW50cyYsIFJl
YWx0aW1lTWVkaWFTb3VyY2U6OlN1Y2Nlc3NIYW5kbGVyJiYsIFJlYWx0aW1lTWVkaWFTb3VyY2U6
OkZhaWx1cmVIYW5kbGVyJiYpOwogCiAgICAgQXVkaW9Tb3VyY2VQcm92aWRlciogYXVkaW9Tb3Vy
Y2VQcm92aWRlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCmluZGV4IDE5MWRhZWUyZDExNjgw
ZDQxM2VmN2YwNDRiZmE4ZTVlMDI3MmRlNTguLjRiNGU0NjQ3MmFmZmE5NDdlYTgyOGVhNDVkNmQw
YmIwM2UwNDY1MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCkBAIC03NTEsNyArNzUxLDcgQEAg
c3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiBSZWFsdGltZU1lZGlhU291
cmNlOjphcHBseUNvbnN0cmFpbnRzKGMKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi12
b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OmFwcGx5Q29uc3RyYWludHMoY29uc3QgTWVkaWFDb25z
dHJhaW50cyYgY29uc3RyYWludHMsIFN1Y2Nlc3NIYW5kbGVyIHN1Y2Nlc3NIYW5kbGVyLCBGYWls
dXJlSGFuZGxlciBmYWlsdXJlSGFuZGxlcikKK3ZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6YXBw
bHlDb25zdHJhaW50cyhjb25zdCBNZWRpYUNvbnN0cmFpbnRzJiBjb25zdHJhaW50cywgU3VjY2Vz
c0hhbmRsZXImJiBzdWNjZXNzSGFuZGxlciwgRmFpbHVyZUhhbmRsZXImJiBmYWlsdXJlSGFuZGxl
cikKIHsKICAgICBhdXRvIHJlc3VsdCA9IGFwcGx5Q29uc3RyYWludHMoY29uc3RyYWludHMpOwog
ICAgIGlmICghcmVzdWx0ICYmIHN1Y2Nlc3NIYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5oCmluZGV4
IDJhZjYxMWZhZjk0ZjlmODI0ZTEzYmMwNjM0YWZmYTc5Y2U3M2RmMTAuLmNkZWEzZTUyNzVjM2Uy
ZmY1ZjE4ZTM5YzZmMmI1NTBlZTVhYTlhZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmgKQEAgLTEyMyw3
ICsxMjMsNyBAQCBwdWJsaWM6CiAKICAgICB1c2luZyBTdWNjZXNzSGFuZGxlciA9IHN0ZDo6ZnVu
Y3Rpb248dm9pZCgpPjsKICAgICB1c2luZyBGYWlsdXJlSGFuZGxlciA9IHN0ZDo6ZnVuY3Rpb248
dm9pZChjb25zdCBTdHJpbmcmIGJhZENvbnN0cmFpbnQsIGNvbnN0IFN0cmluZyYgZXJyb3JTdHJp
bmcpPjsKLSAgICB2b2lkIGFwcGx5Q29uc3RyYWludHMoY29uc3QgTWVkaWFDb25zdHJhaW50cyYs
IFN1Y2Nlc3NIYW5kbGVyLCBGYWlsdXJlSGFuZGxlcik7CisgICAgdmlydHVhbCB2b2lkIGFwcGx5
Q29uc3RyYWludHMoY29uc3QgTWVkaWFDb25zdHJhaW50cyYsIFN1Y2Nlc3NIYW5kbGVyJiYsIEZh
aWx1cmVIYW5kbGVyJiYpOwogICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPFN0cmluZywgU3Ry
aW5nPj4gYXBwbHlDb25zdHJhaW50cyhjb25zdCBNZWRpYUNvbnN0cmFpbnRzJik7CiAKICAgICB2
aXJ0dWFsIGJvb2wgc3VwcG9ydHNDb25zdHJhaW50cyhjb25zdCBNZWRpYUNvbnN0cmFpbnRzJiwg
U3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9SZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5oCmluZGV4IGUxZmQxNmY4
NmMyNzZkMTI2NTRiNTljYzI0OWUwOWZjYzAyNmJhNTAuLjc1ZTBjOWE5MTUzZGNhNjkyNzg5YWI5
MTE2Y2RjMjJiNWEzMzlhN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5oCkBA
IC05Myw2ICs5Myw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGdyb3VwSWQo
KSBjb25zdCB7IHJldHVybiBtX2dyb3VwSWQ7IH0KICAgICB2b2lkIHNldEdyb3VwSWQoY29uc3Qg
QXRvbWljU3RyaW5nJiBncm91cElkKSB7IG1fZ3JvdXBJZCA9IGdyb3VwSWQ7IH0KIAorICAgIGNv
bnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyYgc3VwcG9ydGVkQ29u
c3RyYWludHMoKSBjb25zdCB7IHJldHVybiBtX3N1cHBvcnRlZENvbnN0cmFpbnRzOyB9CiAgICAg
dm9pZCBzZXRTdXBwb3J0ZWRDb25zdHJhaW50cyhjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU3Vw
cG9ydGVkQ29uc3RyYWludHMmIHN1cHBvcnRlZENvbnN0cmFpbnRzKSB7IG1fc3VwcG9ydGVkQ29u
c3RyYWludHMgPSBzdXBwb3J0ZWRDb25zdHJhaW50czsgfQogCiAgICAgdGVtcGxhdGU8Y2xhc3Mg
RW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0Nh
cHR1cmVTb3VyY2UuY3BwCmluZGV4IDliOGI1MGU0M2VhYjg0NTBlNjVhNjFhODY3OGY5ZWViMWM2
YzEyMzEuLjhjYWQ5MGMxZGJlYTA0ZTVjZjVmMjliOWQ3MzM1ODU2YTViNjU2ODkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0
dXJlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5jcHAKQEAgLTExMCw3ICsxMTAsNyBAQCBDb3JlQXVk
aW9DYXB0dXJlU291cmNlOjpDb3JlQXVkaW9DYXB0dXJlU291cmNlKGNvbnN0IFN0cmluZyYgZGV2
aWNlSUQsIGNvbnN0IFN0cgogQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6fkNvcmVBdWRpb0NhcHR1
cmVTb3VyY2UoKQogewogICAgIHN1c3BlbmQoKTsKLSAgICBjbGVhbnVwQXVkaW9Vbml0cygpOwor
ICAgIGNsZWFudXBBdWRpb1VuaXQoKTsKIAogICAgIG1fYWN0aXZlU291cmNlcy5jbGVhcigpOwog
ICAgIG1fcGVuZGluZ1NvdXJjZXMuY2xlYXIoKTsKQEAgLTMwNCw2ICszMDQsMTAgQEAgT1NTdGF0
dXMgQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6cHJvY2Vzc01pY3JvcGhvbmVTYW1wbGVzKEF1ZGlv
VW5pdFJlbmRlckFjdGlvbkYKICAgICBtX21pY3JvcGhvbmVTYW1wbGVCdWZmZXItPnNldFRpbWVz
KGFkanVzdGVkSG9zdFRpbWUsIHNhbXBsZVRpbWUpOwogCiAKKyAgICBhdXRvIHZvbHVtZSA9IHRo
aXMtPnZvbHVtZSgpOworICAgIGlmICh2b2x1bWUgIT0gMS4wKQorICAgICAgICBtX21pY3JvcGhv
bmVTYW1wbGVCdWZmZXItPmFwcGx5R2Fpbih2b2x1bWUpOworCiAgICAgYXVkaW9TYW1wbGVzQXZh
aWxhYmxlKE1lZGlhVGltZShzYW1wbGVUaW1lLCBtX21pY3JvcGhvbmVQcm9jRm9ybWF0LnNhbXBs
ZVJhdGUoKSksIG1fbWljcm9waG9uZVNhbXBsZUJ1ZmZlci0+YnVmZmVyTGlzdCgpLCBtX21pY3Jv
cGhvbmVQcm9jRm9ybWF0LCBpbk51bWJlckZyYW1lcyk7CiAKICAgICByZXR1cm4gbm9FcnI7CkBA
IC0zMTcsMTMgKzMyMSwxMyBAQCBPU1N0YXR1cyBDb3JlQXVkaW9DYXB0dXJlU291cmNlOjptaWNy
b3Bob25lQ2FsbGJhY2sodm9pZCAqaW5SZWZDb24sIEF1ZGlvVW5pdFJlbgogICAgIHJldHVybiBk
YXRhU291cmNlLT5wcm9jZXNzTWljcm9waG9uZVNhbXBsZXMoKmlvQWN0aW9uRmxhZ3MsICppblRp
bWVTdGFtcCwgaW5CdXNOdW1iZXIsIGluTnVtYmVyRnJhbWVzLCBpb0RhdGEpOwogfQogCi12b2lk
IENvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OmNsZWFudXBBdWRpb1VuaXRzKCkKK3ZvaWQgQ29yZUF1
ZGlvQ2FwdHVyZVNvdXJjZTo6Y2xlYW51cEF1ZGlvVW5pdCgpCiB7CiAgICAgaWYgKG1faW9Vbml0
SW5pdGlhbGl6ZWQpIHsKICAgICAgICAgQVNTRVJUKG1faW9Vbml0KTsKICAgICAgICAgYXV0byBl
cnIgPSBBdWRpb1VuaXRVbmluaXRpYWxpemUobV9pb1VuaXQpOwogICAgICAgICBpZiAoZXJyKQot
ICAgICAgICAgICAgTE9HKE1lZGlhLCAiQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6Y2xlYW51cEF1
ZGlvVW5pdHMoJXApIEF1ZGlvVW5pdFVuaW5pdGlhbGl6ZSBmYWlsZWQgd2l0aCBlcnJvciAlZCAo
JS40cykiLCB0aGlzLCAoaW50KWVyciwgKGNoYXIqKSZlcnIpOworICAgICAgICAgICAgTE9HKE1l
ZGlhLCAiQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6Y2xlYW51cEF1ZGlvVW5pdCglcCkgQXVkaW9V
bml0VW5pbml0aWFsaXplIGZhaWxlZCB3aXRoIGVycm9yICVkICglLjRzKSIsIHRoaXMsIChpbnQp
ZXJyLCAoY2hhciopJmVycik7CiAgICAgICAgIG1faW9Vbml0SW5pdGlhbGl6ZWQgPSBmYWxzZTsK
ICAgICB9CiAKQEAgLTM1MSw3ICszNTUsNyBAQCBPU1N0YXR1cyBDb3JlQXVkaW9DYXB0dXJlU291
cmNlOjpkZWZhdWx0SW5wdXREZXZpY2UodWludDMyX3QqIGRldmljZUlEKQogICAgIHJldHVybiBl
cnI7CiB9CiAKLU9TU3RhdHVzIENvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OnNldHVwQXVkaW9Vbml0
cygpCitPU1N0YXR1cyBDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpjcmVhdGVBdWRpb1VuaXQoKQog
ewogICAgIGlmIChtX2lvVW5pdCkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0zNjAsNyArMzY0LDcg
QEAgT1NTdGF0dXMgQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6c2V0dXBBdWRpb1VuaXRzKCkKICAg
ICBBdWRpb0NvbXBvbmVudCBpb0NvbXBvbmVudCA9IEF1ZGlvQ29tcG9uZW50RmluZE5leHQobnVs
bHB0ciwgJmlvVW5pdERlc2NyaXB0aW9uKTsKICAgICBBU1NFUlQoaW9Db21wb25lbnQpOwogICAg
IGlmICghaW9Db21wb25lbnQpIHsKLSAgICAgICAgTE9HKE1lZGlhLCAiQ29yZUF1ZGlvQ2FwdHVy
ZVNvdXJjZTo6c2V0dXBBdWRpb1VuaXRzKCVwKSB1bmFibGUgdG8gZmluZCB2cGlvIHVuaXQgY29t
cG9uZW50IiwgdGhpcyk7CisgICAgICAgIExPRyhNZWRpYSwgIkNvcmVBdWRpb0NhcHR1cmVTb3Vy
Y2U6OmNyZWF0ZUF1ZGlvVW5pdCglcCkgdW5hYmxlIHRvIGZpbmQgdnBpbyB1bml0IGNvbXBvbmVu
dCIsIHRoaXMpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCkBAIC0zNzAsMjggKzM3NCw0
MSBAQCBPU1N0YXR1cyBDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpzZXR1cEF1ZGlvVW5pdHMoKQog
ICAgIGlmIChuYW1lKSB7CiAgICAgICAgIG1faW9Vbml0TmFtZSA9IG5hbWU7CiAgICAgICAgIENG
UmVsZWFzZShuYW1lKTsKLSAgICAgICAgTE9HKE1lZGlhLCAiQ29yZUF1ZGlvQ2FwdHVyZVNvdXJj
ZTo6c2V0dXBBdWRpb1VuaXRzKCVwKSBjcmVhdGVkIFwiJXNcIiBjb21wb25lbnQiLCB0aGlzLCBt
X2lvVW5pdE5hbWUudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIExPRyhNZWRpYSwgIkNvcmVBdWRp
b0NhcHR1cmVTb3VyY2U6OmNyZWF0ZUF1ZGlvVW5pdCglcCkgY3JlYXRlZCBcIiVzXCIgY29tcG9u
ZW50IiwgdGhpcywgbV9pb1VuaXROYW1lLnV0ZjgoKS5kYXRhKCkpOwogICAgIH0KICNlbmRpZgog
CiAgICAgYXV0byBlcnIgPSBBdWRpb0NvbXBvbmVudEluc3RhbmNlTmV3KGlvQ29tcG9uZW50LCAm
bV9pb1VuaXQpOwogICAgIGlmIChlcnIpIHsKLSAgICAgICAgTE9HKE1lZGlhLCAiQ29yZUF1ZGlv
Q2FwdHVyZVNvdXJjZTo6c2V0dXBBdWRpb1VuaXRzKCVwKSB1bmFibGUgdG8gb3BlbiB2cGlvIHVu
aXQsIGVycm9yICVkICglLjRzKSIsIHRoaXMsIChpbnQpZXJyLCAoY2hhciopJmVycik7CisgICAg
ICAgIExPRyhNZWRpYSwgIkNvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OmNyZWF0ZUF1ZGlvVW5pdCgl
cCkgdW5hYmxlIHRvIG9wZW4gdnBpbyB1bml0LCBlcnJvciAlZCAoJS40cykiLCB0aGlzLCAoaW50
KWVyciwgKGNoYXIqKSZlcnIpOwogICAgICAgICByZXR1cm4gZXJyOwogICAgIH0KKyAgICByZXR1
cm4gY29uZmlndXJlQXVkaW9Vbml0KCk7Cit9CiAKLSAgICB1aW50MzJfdCBwYXJhbSA9IGVjaG9D
YW5jZWxsYXRpb24oKTsKLSAgICBlcnIgPSBBdWRpb1VuaXRTZXRQcm9wZXJ0eShtX2lvVW5pdCwg
a0FVVm9pY2VJT1Byb3BlcnR5X1ZvaWNlUHJvY2Vzc2luZ0VuYWJsZUFHQywga0F1ZGlvVW5pdFNj
b3BlX0dsb2JhbCwgaW5wdXRCdXMsICZwYXJhbSwgc2l6ZW9mKHBhcmFtKSk7Ci0gICAgaWYgKGVy
cikgewotICAgICAgICBMT0coTWVkaWEsICJDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpzZXR1cEF1
ZGlvVW5pdHMoJXApIHVuYWJsZSB0byBzZXQgdnBpbyB1bml0IGVjaG8gY2FuY2VsbGF0aW9uLCBl
cnJvciAlZCAoJS40cykiLCB0aGlzLCAoaW50KWVyciwgKGNoYXIqKSZlcnIpOwotICAgICAgICBy
ZXR1cm4gZXJyOworT1NTdGF0dXMgQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6Y29uZmlndXJlQXVk
aW9Vbml0KCkKK3sKKyAgICBPU1N0YXR1cyBlcnIgPSAwOworICAgIGlmICghZWNob0NhbmNlbGxh
dGlvbigpKSB7CisgICAgICAgIHVpbnQzMl90IHBhcmFtID0gMDsKKyAgICAgICAgZXJyID0gQXVk
aW9Vbml0U2V0UHJvcGVydHkobV9pb1VuaXQsIGtBVVZvaWNlSU9Qcm9wZXJ0eV9Wb2ljZVByb2Nl
c3NpbmdFbmFibGVBR0MsIGtBdWRpb1VuaXRTY29wZV9HbG9iYWwsIGlucHV0QnVzLCAmcGFyYW0s
IHNpemVvZihwYXJhbSkpOworICAgICAgICBpZiAoZXJyKSB7CisgICAgICAgICAgICBMT0coTWVk
aWEsICJDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpjb25maWd1cmVBdWRpb1VuaXQoJXApIHVuYWJs
ZSB0byBzZXQgdnBpbyBhdXRvbWF0aWMgZ2FpbiBjb250cm9sLCBlcnJvciAlZCAoJS40cykiLCB0
aGlzLCAoaW50KWVyciwgKGNoYXIqKSZlcnIpOworICAgICAgICAgICAgcmV0dXJuIGVycjsKKyAg
ICAgICAgfQorICAgICAgICBwYXJhbSA9IDE7CisgICAgICAgIGVyciA9IEF1ZGlvVW5pdFNldFBy
b3BlcnR5KG1faW9Vbml0LCBrQVVWb2ljZUlPUHJvcGVydHlfQnlwYXNzVm9pY2VQcm9jZXNzaW5n
LCBrQXVkaW9Vbml0U2NvcGVfR2xvYmFsLCBpbnB1dEJ1cywgJnBhcmFtLCBzaXplb2YocGFyYW0p
KTsKKyAgICAgICAgaWYgKGVycikgeworICAgICAgICAgICAgTE9HKE1lZGlhLCAiQ29yZUF1ZGlv
Q2FwdHVyZVNvdXJjZTo6Y29uZmlndXJlQXVkaW9Vbml0KCVwKSB1bmFibGUgdG8gc2V0IHZwaW8g
dW5pdCBlY2hvIGNhbmNlbGxhdGlvbiwgZXJyb3IgJWQgKCUuNHMpIiwgdGhpcywgKGludCllcnIs
IChjaGFyKikmZXJyKTsKKyAgICAgICAgICAgIHJldHVybiBlcnI7CisgICAgICAgIH0KICAgICB9
CiAKICNpZiBQTEFURk9STShJT1MpCiAgICAgcGFyYW0gPSAxOwogICAgIGVyciA9IEF1ZGlvVW5p
dFNldFByb3BlcnR5KG1faW9Vbml0LCBrQXVkaW9PdXRwdXRVbml0UHJvcGVydHlfRW5hYmxlSU8s
IGtBdWRpb1VuaXRTY29wZV9JbnB1dCwgaW5wdXRCdXMsICZwYXJhbSwgc2l6ZW9mKHBhcmFtKSk7
CiAgICAgaWYgKGVycikgewotICAgICAgICBMT0coTWVkaWEsICJDb3JlQXVkaW9DYXB0dXJlU291
cmNlOjpzZXR1cEF1ZGlvVW5pdHMoJXApIHVuYWJsZSB0byBlbmFibGUgdnBpbyB1bml0IGlucHV0
LCBlcnJvciAlZCAoJS40cykiLCB0aGlzLCAoaW50KWVyciwgKGNoYXIqKSZlcnIpOworICAgICAg
ICBMT0coTWVkaWEsICJDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpjb25maWd1cmVBdWRpb1VuaXQo
JXApIHVuYWJsZSB0byBlbmFibGUgdnBpbyB1bml0IGlucHV0LCBlcnJvciAlZCAoJS40cykiLCB0
aGlzLCAoaW50KWVyciwgKGNoYXIqKSZlcnIpOwogICAgICAgICByZXR1cm4gZXJyOwogICAgIH0K
ICNlbHNlCkBAIC00MDMsNyArNDIwLDcgQEAgT1NTdGF0dXMgQ29yZUF1ZGlvQ2FwdHVyZVNvdXJj
ZTo6c2V0dXBBdWRpb1VuaXRzKCkKIAogICAgIGVyciA9IEF1ZGlvVW5pdFNldFByb3BlcnR5KG1f
aW9Vbml0LCBrQXVkaW9PdXRwdXRVbml0UHJvcGVydHlfQ3VycmVudERldmljZSwga0F1ZGlvVW5p
dFNjb3BlX0dsb2JhbCwgaW5wdXRCdXMsICZtX2NhcHR1cmVEZXZpY2VJRCwgc2l6ZW9mKG1fY2Fw
dHVyZURldmljZUlEKSk7CiAgICAgaWYgKGVycikgewotICAgICAgICBMT0coTWVkaWEsICJDb3Jl
QXVkaW9DYXB0dXJlU291cmNlOjpzZXR1cEF1ZGlvVW5pdHMoJXApIHVuYWJsZSB0byBzZXQgdnBp
byB1bml0IGNhcHR1cmUgZGV2aWNlIElELCBlcnJvciAlZCAoJS40cykiLCB0aGlzLCAoaW50KWVy
ciwgKGNoYXIqKSZlcnIpOworICAgICAgICBMT0coTWVkaWEsICJDb3JlQXVkaW9DYXB0dXJlU291
cmNlOjpjb25maWd1cmVBdWRpb1VuaXQoJXApIHVuYWJsZSB0byBzZXQgdnBpbyB1bml0IGNhcHR1
cmUgZGV2aWNlIElELCBlcnJvciAlZCAoJS40cykiLCB0aGlzLCAoaW50KWVyciwgKGNoYXIqKSZl
cnIpOwogICAgICAgICByZXR1cm4gZXJyOwogICAgIH0KICNlbmRpZgpAQCAtNDE0LDcgKzQzMSw3
IEBAIE9TU3RhdHVzIENvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OnNldHVwQXVkaW9Vbml0cygpCiAK
ICAgICBlcnIgPSBBdWRpb1VuaXRJbml0aWFsaXplKG1faW9Vbml0KTsKICAgICBpZiAoZXJyKSB7
Ci0gICAgICAgIExPRyhNZWRpYSwgIkNvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OnNldHVwQXVkaW9V
bml0cyglcCkgQXVkaW9Vbml0SW5pdGlhbGl6ZSgpIGZhaWxlZCwgZXJyb3IgJWQgKCUuNHMpIiwg
dGhpcywgKGludCllcnIsIChjaGFyKikmZXJyKTsKKyAgICAgICAgTE9HKE1lZGlhLCAiQ29yZUF1
ZGlvQ2FwdHVyZVNvdXJjZTo6Y29uZmlndXJlQXVkaW9Vbml0KCVwKSBBdWRpb1VuaXRJbml0aWFs
aXplKCkgZmFpbGVkLCBlcnJvciAlZCAoJS40cykiLCB0aGlzLCAoaW50KWVyciwgKGNoYXIqKSZl
cnIpOwogICAgICAgICByZXR1cm4gZXJyOwogICAgIH0KICAgICBtX2lvVW5pdEluaXRpYWxpemVk
ID0gdHJ1ZTsKQEAgLTQzNSw5ICs0NTIsOSBAQCB2b2lkIENvcmVBdWRpb0NhcHR1cmVTb3VyY2U6
OnN0YXJ0UHJvZHVjaW5nRGF0YSgpCiAKICAgICBPU1N0YXR1cyBlcnI7CiAgICAgaWYgKCFtX2lv
VW5pdCkgewotICAgICAgICBlcnIgPSBzZXR1cEF1ZGlvVW5pdHMoKTsKKyAgICAgICAgZXJyID0g
Y3JlYXRlQXVkaW9Vbml0KCk7CiAgICAgICAgIGlmIChlcnIpIHsKLSAgICAgICAgICAgIGNsZWFu
dXBBdWRpb1VuaXRzKCk7CisgICAgICAgICAgICBjbGVhbnVwQXVkaW9Vbml0KCk7CiAgICAgICAg
ICAgICBBU1NFUlQoIW1faW9Vbml0KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpA
QCAtNTE5LDE1ICs1MzYsMTEgQEAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGll
cyYgQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6Y2FwYWJpbGl0aWVzKCkgY28KICAgICBpZiAobV9j
YXBhYmlsaXRpZXMpCiAgICAgICAgIHJldHVybiAqbV9jYXBhYmlsaXRpZXM7CiAKLSAgICBtX3N1
cHBvcnRlZENvbnN0cmFpbnRzLnNldFN1cHBvcnRzRGV2aWNlSWQodHJ1ZSk7Ci0gICAgbV9zdXBw
b3J0ZWRDb25zdHJhaW50cy5zZXRTdXBwb3J0c0VjaG9DYW5jZWxsYXRpb24odHJ1ZSk7Ci0gICAg
bV9zdXBwb3J0ZWRDb25zdHJhaW50cy5zZXRTdXBwb3J0c1ZvbHVtZSh0cnVlKTsKLQotICAgIC8v
IEZJWE1FOiBmaW5pc2ggdGhpcy4KLSAgICBtX2NhcGFiaWxpdGllcyA9IHN0ZDo6bWFrZV91bmlx
dWU8UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcz4obV9zdXBwb3J0ZWRDb25zdHJhaW50
cyk7CisgICAgbV9jYXBhYmlsaXRpZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlYWx0aW1lTWVkaWFT
b3VyY2VDYXBhYmlsaXRpZXM+KHNldHRpbmdzKCkuc3VwcG9ydGVkQ29uc3RyYWludHMoKSk7CiAg
ICAgbV9jYXBhYmlsaXRpZXMtPnNldERldmljZUlkKGlkKCkpOwogICAgIG1fY2FwYWJpbGl0aWVz
LT5zZXRFY2hvQ2FuY2VsbGF0aW9uKFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM6OkVj
aG9DYW5jZWxsYXRpb246OlJlYWRXcml0ZSk7CiAgICAgbV9jYXBhYmlsaXRpZXMtPnNldFZvbHVt
ZShDYXBhYmlsaXR5VmFsdWVPclJhbmdlKDAuMCwgMS4wKSk7CisgICAgbV9jYXBhYmlsaXRpZXMt
PnNldFNhbXBsZVJhdGUoQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSg4MDAwLCA5NjAwMCkpOwogCiAg
ICAgcmV0dXJuICptX2NhcGFiaWxpdGllczsKIH0KQEAgLTU0MSw4ICs1NTQsMTQgQEAgY29uc3Qg
UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpzZXR0
aW5ncygpIGNvbnN0CiAgICAgICAgIHNldHRpbmdzLnNldERldmljZUlkKGlkKCkpOwogICAgICAg
ICBzZXR0aW5ncy5zZXRFY2hvQ2FuY2VsbGF0aW9uKGVjaG9DYW5jZWxsYXRpb24oKSk7CiAKLSAg
ICAgICAgbV9jdXJyZW50U2V0dGluZ3MgPSBXVEZNb3ZlKHNldHRpbmdzKTsKKyAgICAgICAgUmVh
bHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzIHN1cHBvcnRlZENvbnN0cmFpbnRz
OworICAgICAgICBzdXBwb3J0ZWRDb25zdHJhaW50cy5zZXRTdXBwb3J0c0RldmljZUlkKHRydWUp
OworICAgICAgICBzdXBwb3J0ZWRDb25zdHJhaW50cy5zZXRTdXBwb3J0c0VjaG9DYW5jZWxsYXRp
b24odHJ1ZSk7CisgICAgICAgIHN1cHBvcnRlZENvbnN0cmFpbnRzLnNldFN1cHBvcnRzVm9sdW1l
KHRydWUpOworICAgICAgICBzdXBwb3J0ZWRDb25zdHJhaW50cy5zZXRTdXBwb3J0c1NhbXBsZVJh
dGUodHJ1ZSk7CisgICAgICAgIHNldHRpbmdzLnNldFN1cHBvcnRlZENvbnN0cmFpbnRzKHN1cHBv
cnRlZENvbnN0cmFpbnRzKTsKIAorICAgICAgICBtX2N1cnJlbnRTZXR0aW5ncyA9IFdURk1vdmUo
c2V0dGluZ3MpOwogICAgIH0KICAgICByZXR1cm4gbV9jdXJyZW50U2V0dGluZ3MudmFsdWUoKTsK
IH0KQEAgLTU1Myw2ICs1NzIsNDUgQEAgdm9pZCBDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpzZXR0
aW5nc0RpZENoYW5nZSgpCiAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0dGluZ3NEaWRDaGFu
Z2UoKTsKIH0KIAorYm9vbCBDb3JlQXVkaW9DYXB0dXJlU291cmNlOjphcHBseVNhbXBsZVJhdGUo
aW50IHNhbXBsZVJhdGUpCit7CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBiZSBhYmxlIHRvIGRl
c2NyaWJlIHNhbXBsZSByYXRlIGFzIGEgZGlzY3JlZXQgcmFuZ2UgY29uc3RyYWludCBzbyB0aGF0
IHdlIG9ubHkgZW50ZXIgaGVyZSB3aXRoIHZhbHVlcyB0aGF0IGNhbiBiZSBhcHBsaWVkLgorICAg
IHN3aXRjaCAoc2FtcGxlUmF0ZSkgeworICAgIGNhc2UgODAwMDoKKyAgICBjYXNlIDE2MDAwOgor
ICAgIGNhc2UgMzIwMDA6CisgICAgY2FzZSA0NDEwMDoKKyAgICBjYXNlIDQ4MDAwOgorICAgIGNh
c2UgOTYwMDA6CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisgICAgc2NoZWR1bGVSZWNvbmZpZ3VyYXRpb24oKTsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworYm9vbCBDb3JlQXVkaW9DYXB0dXJlU291cmNlOjphcHBseUVjaG9DYW5jZWxs
YXRpb24oYm9vbCkKK3sKKyAgICBzY2hlZHVsZVJlY29uZmlndXJhdGlvbigpOworICAgIHJldHVy
biB0cnVlOworfQorCit2b2lkIENvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OnNjaGVkdWxlUmVjb25m
aWd1cmF0aW9uKCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGlmICghaXNQ
cm9kdWNpbmdEYXRhKCkpCisgICAgICAgIHJldHVybjsKKworICAgIHNjaGVkdWxlRGVmZXJyZWRU
YXNrKFt0aGlzXSB7CisgICAgICAgIGlmICghaXNQcm9kdWNpbmdEYXRhKCkpCisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIHN0b3BQcm9kdWNpbmdEYXRhKCk7CisgICAgICAgIGNsZWFudXBB
dWRpb1VuaXQoKTsKKyAgICAgICAgc3RhcnRQcm9kdWNpbmdEYXRhKCk7CisgICAgfSk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29y
ZUF1ZGlvQ2FwdHVyZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2UuaAppbmRleCAxM2Y0MTZjZTEyMDUyMzc5NmQ2
Y2EyNTI0NzA0MmI5YmMyMjk2Y2UyLi5kMDhiMjliZTFiNjRiNDUwNGEyZTE5YWEwZmE5ZWQ4NDdj
Yzg5ODMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlU291cmNlLmgKQEAgLTUwLDcgKzUwLDcg
QEAgY2xhc3MgQXVkaW9TYW1wbGVCdWZmZXJMaXN0OwogY2xhc3MgQXVkaW9TYW1wbGVEYXRhU291
cmNlOwogY2xhc3MgQ2FwdHVyZURldmljZUluZm87CiAKLWNsYXNzIENvcmVBdWRpb0NhcHR1cmVT
b3VyY2UgOiBwdWJsaWMgUmVhbHRpbWVNZWRpYVNvdXJjZSB7CitjbGFzcyBDb3JlQXVkaW9DYXB0
dXJlU291cmNlIGZpbmFsIDogcHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2UgewogcHVibGljOgog
CiAgICAgc3RhdGljIENhcHR1cmVTb3VyY2VPckVycm9yIGNyZWF0ZShjb25zdCBTdHJpbmcmIGRl
dmljZUlELCBjb25zdCBNZWRpYUNvbnN0cmFpbnRzKik7CkBAIC03OSwxNiArNzksMTkgQEAgcHJp
dmF0ZToKICAgICBPU1N0YXR1cyBzdXNwZW5kKCk7CiAgICAgT1NTdGF0dXMgcmVzdW1lKCk7CiAK
LSAgICBib29sIGFwcGx5Vm9sdW1lKGRvdWJsZSkgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQot
ICAgIGJvb2wgYXBwbHlTYW1wbGVSYXRlKGludCkgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQot
ICAgIGJvb2wgYXBwbHlFY2hvQ2FuY2VsbGF0aW9uKGJvb2wpIG92ZXJyaWRlIHsgcmV0dXJuIHRy
dWU7IH0KKyAgICBib29sIGFwcGx5Vm9sdW1lKGRvdWJsZSkgZmluYWwgeyByZXR1cm4gdHJ1ZTsg
fQorICAgIGJvb2wgYXBwbHlTYW1wbGVSYXRlKGludCkgZmluYWw7CisgICAgYm9vbCBhcHBseUVj
aG9DYW5jZWxsYXRpb24oYm9vbCkgZmluYWw7CiAKICAgICBjb25zdCBSZWFsdGltZU1lZGlhU291
cmNlQ2FwYWJpbGl0aWVzJiBjYXBhYmlsaXRpZXMoKSBjb25zdCBmaW5hbDsKICAgICBjb25zdCBS
ZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdzKCkgY29uc3QgZmluYWw7CiAgICAg
dm9pZCBzZXR0aW5nc0RpZENoYW5nZSgpIGZpbmFsOwogCi0gICAgT1NTdGF0dXMgc2V0dXBBdWRp
b1VuaXRzKCk7Ci0gICAgdm9pZCBjbGVhbnVwQXVkaW9Vbml0cygpOworICAgIHZvaWQgc2NoZWR1
bGVSZWNvbmZpZ3VyYXRpb24oKTsKKworICAgIE9TU3RhdHVzIGNyZWF0ZUF1ZGlvVW5pdCgpOwor
ICAgIE9TU3RhdHVzIGNvbmZpZ3VyZUF1ZGlvVW5pdCgpOworICAgIHZvaWQgY2xlYW51cEF1ZGlv
VW5pdCgpOwogICAgIE9TU3RhdHVzIGNvbmZpZ3VyZVNwZWFrZXJQcm9jKCk7CiAgICAgT1NTdGF0
dXMgY29uZmlndXJlTWljcm9waG9uZVByb2MoKTsKICAgICBPU1N0YXR1cyBkZWZhdWx0T3V0cHV0
RGV2aWNlKHVpbnQzMl90Kik7CkBAIC0xMjksNyArMTMyLDYgQEAgcHJpdmF0ZToKICAgICBMb2Nr
IG1faW50ZXJuYWxTdGF0ZUxvY2s7CiAKICAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxSZWFs
dGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzPiBtX2NhcGFiaWxpdGllczsKLSAgICBtdXRhYmxl
IFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyBtX3N1cHBvcnRlZENvbnN0
cmFpbnRzOwogICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxSZWFsdGltZU1lZGlhU291cmNlU2V0
dGluZ3M+IG1fY3VycmVudFNldHRpbmdzOwogCiAjaWYgIUxPR19ESVNBQkxFRApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2Vy
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1
cmVNYW5hZ2VyUHJveHkuY3BwCmluZGV4IDljM2RlNzdlMjVmY2U4ZjA2NTI5ZDJiNjA0ZTUxNWI3
NjNlMjhiNTMuLmI3YzhhZThjZGI4MDM0ZTNmMTMzZjVhMTIwNzBhY2ViYzUyZmVjOTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFu
YWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvVXNlck1l
ZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5jcHAKQEAgLTEyNSw3ICsxMjUsNyBAQCBVc2VyTWVkaWFD
YXB0dXJlTWFuYWdlclByb3h5Ojp+VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eSgpCiAgICAg
bV9wcm9jZXNzLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6VXNlck1lZGlhQ2FwdHVy
ZU1hbmFnZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKIH0KIAotdm9pZCBVc2VyTWVk
aWFDYXB0dXJlTWFuYWdlclByb3h5OjpjcmVhdGVNZWRpYVNvdXJjZUZvckNhcHR1cmVEZXZpY2VX
aXRoQ29uc3RyYWludHModWludDY0X3QgaWQsIGNvbnN0IFN0cmluZyYgZGV2aWNlSUQsIFdlYkNv
cmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUgdHlwZSwgY29uc3QgTWVkaWFDb25zdHJhaW50
c0RhdGEmIGNvbnN0cmFpbnRzRGF0YSwgYm9vbCYgc3VjY2VlZGVkLCBTdHJpbmcmIGludmFsaWRD
b25zdHJhaW50cykKK3ZvaWQgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTo6Y3JlYXRlTWVk
aWFTb3VyY2VGb3JDYXB0dXJlRGV2aWNlV2l0aENvbnN0cmFpbnRzKHVpbnQ2NF90IGlkLCBjb25z
dCBTdHJpbmcmIGRldmljZUlELCBXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlIHR5
cGUsIGNvbnN0IE1lZGlhQ29uc3RyYWludHNEYXRhJiBjb25zdHJhaW50c0RhdGEsIGJvb2wmIHN1
Y2NlZWRlZCwgU3RyaW5nJiBpbnZhbGlkQ29uc3RyYWludHMsIFdlYkNvcmU6OlJlYWx0aW1lTWVk
aWFTb3VyY2VTZXR0aW5ncyYgc2V0dGluZ3MpCiB7CiAgICAgQ2FwdHVyZVNvdXJjZU9yRXJyb3Ig
c291cmNlT3JFcnJvcjsKICAgICBhdXRvIGNvbnN0cmFpbnRzID0gTWVkaWFDb25zdHJhaW50c0lt
cGw6OmNyZWF0ZShNZWRpYUNvbnN0cmFpbnRzRGF0YShjb25zdHJhaW50c0RhdGEpKTsKQEAgLTE0
Miw5ICsxNDIsMTEgQEAgdm9pZCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5OjpjcmVhdGVN
ZWRpYVNvdXJjZUZvckNhcHR1cmVEZXZpY2VXaXRoQ29uc3RyYWkKICAgICB9CiAKICAgICBzdWNj
ZWVkZWQgPSAhIXNvdXJjZU9yRXJyb3I7Ci0gICAgaWYgKHNvdXJjZU9yRXJyb3IpCi0gICAgICAg
IG1fcHJveGllcy5zZXQoaWQsIHN0ZDo6bWFrZV91bmlxdWU8U291cmNlUHJveHk+KGlkLCAqdGhp
cywgc291cmNlT3JFcnJvci5zb3VyY2UoKSkpOwotICAgIGVsc2UKKyAgICBpZiAoc291cmNlT3JF
cnJvcikgeworICAgICAgICBhdXRvIHNvdXJjZSA9IHNvdXJjZU9yRXJyb3Iuc291cmNlKCk7Cisg
ICAgICAgIHNldHRpbmdzID0gc291cmNlLT5zZXR0aW5ncygpOworICAgICAgICBtX3Byb3hpZXMu
c2V0KGlkLCBzdGQ6Om1ha2VfdW5pcXVlPFNvdXJjZVByb3h5PihpZCwgKnRoaXMsIFdURk1vdmUo
c291cmNlKSkpOworICAgIH0gZWxzZQogICAgICAgICBpbnZhbGlkQ29uc3RyYWludHMgPSBXVEZN
b3ZlKHNvdXJjZU9yRXJyb3IuZXJyb3JNZXNzYWdlKTsKIH0KIApAQCAtMTgzLDYgKzE4NSwyMSBA
QCB2b2lkIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6OnNldEVuYWJsZWQodWludDY0X3Qg
aWQsIGJvb2wgZW5hYmxlZCkKICAgICAgICAgaXRlci0+dmFsdWUtPnNvdXJjZSgpLnNldEVuYWJs
ZWQoZW5hYmxlZCk7CiB9CiAKK3ZvaWQgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTo6YXBw
bHlDb25zdHJhaW50cyh1aW50NjRfdCBpZCwgY29uc3QgV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50
c0RhdGEmIGNvbnN0cmFpbnRzRGF0YSkKK3sKKyAgICBhdXRvIGNvbnN0cmFpbnRzID0gTWVkaWFD
b25zdHJhaW50c0ltcGw6OmNyZWF0ZShNZWRpYUNvbnN0cmFpbnRzRGF0YShjb25zdHJhaW50c0Rh
dGEpKTsKKyAgICBhdXRvIGl0ZXIgPSBtX3Byb3hpZXMuZmluZChpZCk7CisgICAgaWYgKGl0ZXIg
PT0gbV9wcm94aWVzLmVuZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvJiBzb3VyY2Ug
PSBpdGVyLT52YWx1ZS0+c291cmNlKCk7CisgICAgYXV0byByZXN1bHQgPSBzb3VyY2UuYXBwbHlD
b25zdHJhaW50cyhjb25zdHJhaW50cyk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIG1fcHJv
Y2Vzcy5zZW5kKE1lc3NhZ2VzOjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6QXBwbHlDb25zdHJh
aW50c1N1Y2NlZWRlZChpZCwgc291cmNlLnNldHRpbmdzKCkpLCAwKTsKKyAgICBlbHNlCisgICAg
ICAgIG1fcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6QXBw
bHlDb25zdHJhaW50c0ZhaWxlZChpZCwgcmVzdWx0LnZhbHVlKCkuZmlyc3QsIHJlc3VsdC52YWx1
ZSgpLnNlY29uZCksIDApOworfQorCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5
LmgKaW5kZXggNDEzOWRiMjRkNDc1MjA5ZWMzZTdjZDNjYmY3YmQ4MzRhMjc4Y2JjZS4uMmE1MWQ3
YzI1YmI1Y2JlNzA2Njg1NDZmOGU2NDYwMGQ4ZTliNWZiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQ
cm94eS5oCkBAIC00OSwxMiArNDksMTMgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwogICAgIHZvaWQg
ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0
ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JikgZmluYWw7CiAKLSAgICB2b2lkIGNyZWF0ZU1l
ZGlhU291cmNlRm9yQ2FwdHVyZURldmljZVdpdGhDb25zdHJhaW50cyh1aW50NjRfdCBpZCwgY29u
c3QgU3RyaW5nJiBkZXZpY2VJRCwgV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSwg
Y29uc3QgV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50c0RhdGEmLCBib29sJiBzdWNjZWVkZWQsIFN0
cmluZyYgaW52YWxpZENvbnN0cmFpbnRzKTsKKyAgICB2b2lkIGNyZWF0ZU1lZGlhU291cmNlRm9y
Q2FwdHVyZURldmljZVdpdGhDb25zdHJhaW50cyh1aW50NjRfdCBpZCwgY29uc3QgU3RyaW5nJiBk
ZXZpY2VJRCwgV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSwgY29uc3QgV2ViQ29y
ZTo6TWVkaWFDb25zdHJhaW50c0RhdGEmLCBib29sJiBzdWNjZWVkZWQsIFN0cmluZyYgaW52YWxp
ZENvbnN0cmFpbnRzLCBXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmKTsKICAg
ICB2b2lkIHN0YXJ0UHJvZHVjaW5nRGF0YSh1aW50NjRfdCk7CiAgICAgdm9pZCBzdG9wUHJvZHVj
aW5nRGF0YSh1aW50NjRfdCk7CiAgICAgdm9pZCBjYXBhYmlsaXRpZXModWludDY0X3QsIFdlYkNv
cmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmKTsKICAgICB2b2lkIHNldE11dGVk
KHVpbnQ2NF90LCBib29sKTsKICAgICB2b2lkIHNldEVuYWJsZWQodWludDY0X3QsIGJvb2wpOwor
ICAgIHZvaWQgYXBwbHlDb25zdHJhaW50cyh1aW50NjRfdCwgY29uc3QgV2ViQ29yZTo6TWVkaWFD
b25zdHJhaW50c0RhdGEmKTsKIAogICAgIGNsYXNzIFNvdXJjZVByb3h5OwogICAgIGZyaWVuZCBj
bGFzcyBTb3VyY2VQcm94eTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9D
b2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkubWVzc2Fn
ZXMuaW4KaW5kZXggMWZjMDkzZTViMzA5NmY1MTBkZGU4ZmY0YWNlNjRmZDE0MDEzYjdhYS4uYTNj
ODE0ZmViOWMwODJlMzA1NTRmYzM1OWI5NTZhOGZlZmUwZGFiYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNh
cHR1cmVNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KQEAgLTIyLDEwICsyMiwxMSBAQAogIyBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIG1lc3NhZ2VzIC0+IFVzZXJNZWRpYUNhcHR1
cmVNYW5hZ2VyUHJveHkgewotICAgIENyZWF0ZU1lZGlhU291cmNlRm9yQ2FwdHVyZURldmljZVdp
dGhDb25zdHJhaW50cyh1aW50NjRfdCBpZCwgU3RyaW5nIGRldmljZUlELCBXZWJDb3JlOjpSZWFs
dGltZU1lZGlhU291cmNlOjpUeXBlIHR5cGUsIHN0cnVjdCBXZWJDb3JlOjpNZWRpYUNvbnN0cmFp
bnRzRGF0YSBjb25zdHJhaW50cykgLT4gKGJvb2wgc3VjY2VzcywgU3RyaW5nIGludmFsaWRDb25z
dHJhaW50cykKKyAgICBDcmVhdGVNZWRpYVNvdXJjZUZvckNhcHR1cmVEZXZpY2VXaXRoQ29uc3Ry
YWludHModWludDY0X3QgaWQsIFN0cmluZyBkZXZpY2VJRCwgV2ViQ29yZTo6UmVhbHRpbWVNZWRp
YVNvdXJjZTo6VHlwZSB0eXBlLCBzdHJ1Y3QgV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50c0RhdGEg
Y29uc3RyYWludHMpIC0+IChib29sIHN1Y2Nlc3MsIFN0cmluZyBpbnZhbGlkQ29uc3RyYWludHMs
IFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyBzZXR0aW5ncykKICAgICBTdGFy
dFByb2R1Y2luZ0RhdGEodWludDY0X3QgaWQpCiAgICAgU3RvcFByb2R1Y2luZ0RhdGEodWludDY0
X3QgaWQpCiAgICAgQ2FwYWJpbGl0aWVzKHVpbnQ2NF90IGlkKSAtPiAoV2ViQ29yZTo6UmVhbHRp
bWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyBjYXBhYmlsaXRpZXMpCiAgICAgU2V0TXV0ZWQodWlu
dDY0X3QgaWQsIGJvb2wgbXV0ZWQpCiAgICAgU2V0RW5hYmxlZCh1aW50NjRfdCBpZCwgYm9vbCBl
bmFibGVkKQorICAgIEFwcGx5Q29uc3RyYWludHModWludDY0X3QgaWQsIHN0cnVjdCBXZWJDb3Jl
OjpNZWRpYUNvbnN0cmFpbnRzRGF0YSBjb25zdHJhaW50cykKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5j
cHAKaW5kZXggNGQ0ZjAyNjJmZDliMTE4M2I4MDQzOTA5NGU1ZjMxNGNmMDZlNTQ1YS4uYTlkNTdm
NTk1ODU0NGViNDQzYmI2MmVhZDlhOWJkODc0MTQwNDViYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5j
cHAKQEAgLTczLDkgKzczLDkgQEAgcHVibGljOgogICAgIH0KIAogICAgIGNvbnN0IFJlYWx0aW1l
TWVkaWFTb3VyY2VTZXR0aW5ncyYgc2V0dGluZ3MoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Nl
dHRpbmdzOyB9Ci0gICAgdm9pZCBzZXRTZXR0aW5ncyhjb25zdCBSZWFsdGltZU1lZGlhU291cmNl
U2V0dGluZ3MmIHNldHRpbmdzKQorICAgIHZvaWQgc2V0U2V0dGluZ3MoUmVhbHRpbWVNZWRpYVNv
dXJjZVNldHRpbmdzJiYgc2V0dGluZ3MpCiAgICAgewotICAgICAgICBtX3NldHRpbmdzID0gc2V0
dGluZ3M7CisgICAgICAgIG1fc2V0dGluZ3MgPSBXVEZNb3ZlKHNldHRpbmdzKTsKICAgICAgICAg
c2V0dGluZ3NEaWRDaGFuZ2UoKTsKICAgICB9CiAKQEAgLTExNCw3ICsxMTQsMjAgQEAgcHVibGlj
OgogICAgICAgICAgICAgb2JzZXJ2ZXItPmF1ZGlvU2FtcGxlc0F2YWlsYWJsZSh0aW1lLCBhdWRp
b0RhdGEsIG1fZGVzY3JpcHRpb24sIG51bWJlck9mRnJhbWVzKTsKICAgICB9CiAKLSAgICB2aXJ0
dWFsIHZvaWQgc2V0TXV0ZWQoYm9vbCBtdXRlZCkKKyAgICB2b2lkIGFwcGx5Q29uc3RyYWludHNT
dWNjZWVkZWQoY29uc3QgV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBzZXR0
aW5ncykKKyAgICB7CisgICAgICAgIGF1dG8gY2FsbGJhY2tzID0gbV9wZW5kaW5nQXBwbHlDb25z
dHJhaW50c0NhbGxiYWNrcy50YWtlRmlyc3QoKTsKKyAgICAgICAgc2V0U2V0dGluZ3MoV2ViQ29y
ZTo6UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzKHNldHRpbmdzKSk7CisgICAgICAgIGNhbGxi
YWNrcy5zdWNjZXNzSGFuZGxlcigpOworICAgIH0KKworICAgIHZvaWQgYXBwbHlDb25zdHJhaW50
c0ZhaWxlZChjb25zdCBTdHJpbmcmIGZhaWxlZENvbnN0cmFpbnQsIGNvbnN0IFN0cmluZyYgZXJy
b3JNZXNzYWdlKQorICAgIHsKKyAgICAgICAgYXV0byBjYWxsYmFja3MgPSBtX3BlbmRpbmdBcHBs
eUNvbnN0cmFpbnRzQ2FsbGJhY2tzLnRha2VGaXJzdCgpOworICAgICAgICBjYWxsYmFja3MuZmFp
bHVyZUhhbmRsZXIoZmFpbGVkQ29uc3RyYWludCwgZXJyb3JNZXNzYWdlKTsKKyAgICB9CisKKyAg
ICB2b2lkIHNldE11dGVkKGJvb2wgbXV0ZWQpIGZpbmFsCiAgICAgewogICAgICAgICBpZiAobV9t
dXRlZCA9PSBtdXRlZCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTEyMyw3ICsxMzYsNyBAQCBw
dWJsaWM6CiAgICAgICAgIG1fbWFuYWdlci5zZXRNdXRlZChtX2lkLCBtX211dGVkKTsKICAgICB9
CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0RW5hYmxlZChib29sIGVuYWJsZWQpCisgICAgdm9pZCBz
ZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkgZmluYWwKICAgICB7CiAgICAgICAgIGlmIChtX2VuYWJs
ZWQgPT0gZW5hYmxlZCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTEzMiw2ICsxNDUsNyBAQCBw
dWJsaWM6CiAgICAgICAgIG1fbWFuYWdlci5zZXRFbmFibGVkKG1faWQsIG1fZW5hYmxlZCk7CiAg
ICAgfQogCitwcml2YXRlOgogICAgIHZvaWQgc3RhcnRQcm9kdWNpbmdEYXRhKCkgZmluYWwgeyBt
X21hbmFnZXIuc3RhcnRQcm9kdWNpbmdEYXRhKG1faWQpOyB9CiAgICAgdm9pZCBzdG9wUHJvZHVj
aW5nRGF0YSgpIGZpbmFsIHsgbV9tYW5hZ2VyLnN0b3BQcm9kdWNpbmdEYXRhKG1faWQpOyB9CiAg
ICAgYm9vbCBpc0NhcHR1cmVTb3VyY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CkBA
IC0xNDUsMTEgKzE1OSwxNSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX2F1ZGlvU291cmNl
UHJvdmlkZXIuZ2V0KCk7CiAgICAgfQogCi1wcml2YXRlOgogICAgIC8vIFJlYWx0aW1lTWVkaWFT
b3VyY2UKICAgICB2b2lkIGJlZ2luQ29uZmlndXJhdGlvbigpIGZpbmFsIHsgfQogICAgIHZvaWQg
Y29tbWl0Q29uZmlndXJhdGlvbigpIGZpbmFsIHsgfQogCisgICAgdm9pZCBhcHBseUNvbnN0cmFp
bnRzKGNvbnN0IFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludHMmIGNvbnN0cmFpbnRzLCBTdWNjZXNz
SGFuZGxlciYmIHN1Y2Nlc3NIYW5kbGVyLCBGYWlsdXJlSGFuZGxlciYmIGZhaWx1cmVIYW5kbGVy
KSBmaW5hbCB7CisgICAgICAgIG1fbWFuYWdlci5hcHBseUNvbnN0cmFpbnRzKG1faWQsIGNvbnN0
cmFpbnRzKTsKKyAgICAgICAgbV9wZW5kaW5nQXBwbHlDb25zdHJhaW50c0NhbGxiYWNrcy5hcHBl
bmQoeyBXVEZNb3ZlKHN1Y2Nlc3NIYW5kbGVyKSwgV1RGTW92ZShmYWlsdXJlSGFuZGxlcil9KTsK
KyAgICB9CisKICAgICB1aW50NjRfdCBtX2lkOwogICAgIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2Vy
JiBtX21hbmFnZXI7CiAgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPFJlYWx0aW1lTWVkaWFTb3Vy
Y2VDYXBhYmlsaXRpZXM+IG1fY2FwYWJpbGl0aWVzOwpAQCAtMTU3LDYgKzE3NSwxMiBAQCBwcml2
YXRlOgogICAgIENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiBtX2Rlc2NyaXB0aW9uOwogICAgIENB
UmluZ0J1ZmZlciBtX3JpbmdCdWZmZXI7CiAgICAgUmVmUHRyPFdlYkF1ZGlvU291cmNlUHJvdmlk
ZXJBVkZPYmpDPiBtX2F1ZGlvU291cmNlUHJvdmlkZXI7CisKKyAgICBzdHJ1Y3QgQXBwbHlDb25z
dHJhaW50c0NhbGxiYWNrIHsKKyAgICAgICAgU3VjY2Vzc0hhbmRsZXIgc3VjY2Vzc0hhbmRsZXI7
CisgICAgICAgIEZhaWx1cmVIYW5kbGVyIGZhaWx1cmVIYW5kbGVyOworICAgIH07CisgICAgRGVx
dWU8QXBwbHlDb25zdHJhaW50c0NhbGxiYWNrPiBtX3BlbmRpbmdBcHBseUNvbnN0cmFpbnRzQ2Fs
bGJhY2tzOwogfTsKIAogVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OlVzZXJNZWRpYUNhcHR1cmVN
YW5hZ2VyKFdlYlByb2Nlc3MqIHByb2Nlc3MpCkBAIC0xOTQsMTEgKzIxOCwxMyBAQCBXZWJDb3Jl
OjpDYXB0dXJlU291cmNlT3JFcnJvciBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6Y3JlYXRlQ2Fw
dHVyZVNvdXJjZShjb25zdAogICAgIGNvbnN0cmFpbnRzRGF0YS5pc1ZhbGlkID0gY29uc3RyYWlu
dHMtPmlzVmFsaWQoKTsKICAgICBib29sIHN1Y2NlZWRlZDsKIAorICAgIFJlYWx0aW1lTWVkaWFT
b3VyY2VTZXR0aW5ncyBzZXR0aW5nczsKICAgICBTdHJpbmcgZXJyb3JNZXNzYWdlOwotICAgIGlm
ICghbV9wcm9jZXNzLnNlbmRTeW5jKE1lc3NhZ2VzOjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclBy
b3h5OjpDcmVhdGVNZWRpYVNvdXJjZUZvckNhcHR1cmVEZXZpY2VXaXRoQ29uc3RyYWludHMoaWQs
IGRldmljZUlELCBzb3VyY2VUeXBlLCBjb25zdHJhaW50c0RhdGEpLCBNZXNzYWdlczo6VXNlck1l
ZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTo6Q3JlYXRlTWVkaWFTb3VyY2VGb3JDYXB0dXJlRGV2aWNl
V2l0aENvbnN0cmFpbnRzOjpSZXBseShzdWNjZWVkZWQsIGVycm9yTWVzc2FnZSksIDApKQorICAg
IGlmICghbV9wcm9jZXNzLnNlbmRTeW5jKE1lc3NhZ2VzOjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdl
clByb3h5OjpDcmVhdGVNZWRpYVNvdXJjZUZvckNhcHR1cmVEZXZpY2VXaXRoQ29uc3RyYWludHMo
aWQsIGRldmljZUlELCBzb3VyY2VUeXBlLCBjb25zdHJhaW50c0RhdGEpLCBNZXNzYWdlczo6VXNl
ck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTo6Q3JlYXRlTWVkaWFTb3VyY2VGb3JDYXB0dXJlRGV2
aWNlV2l0aENvbnN0cmFpbnRzOjpSZXBseShzdWNjZWVkZWQsIGVycm9yTWVzc2FnZSwgc2V0dGlu
Z3MpLCAwKSkKICAgICAgICAgcmV0dXJuIFdURk1vdmUoZXJyb3JNZXNzYWdlKTsKIAogICAgIGF1
dG8gc291cmNlID0gYWRvcHRSZWYoKm5ldyBTb3VyY2UoU3RyaW5nOjpudW1iZXIoaWQpLCBzb3Vy
Y2VUeXBlLCBlbXB0eVN0cmluZygpLCBpZCwgKnRoaXMpKTsKKyAgICBzb3VyY2UtPnNldFNldHRp
bmdzKFdURk1vdmUoc2V0dGluZ3MpKTsKICAgICBtX3NvdXJjZXMuc2V0KGlkLCBzb3VyY2UuY29w
eVJlZigpKTsKICAgICByZXR1cm4gV2ViQ29yZTo6Q2FwdHVyZVNvdXJjZU9yRXJyb3IoV1RGTW92
ZShzb3VyY2UpKTsKIH0KQEAgLTIyNCw3ICsyNTAsNyBAQCB2b2lkIFVzZXJNZWRpYUNhcHR1cmVN
YW5hZ2VyOjpzb3VyY2VFbmFibGVkQ2hhbmdlZCh1aW50NjRfdCBpZCwgYm9vbCBlbmFibGVkKQog
dm9pZCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6c291cmNlU2V0dGluZ3NDaGFuZ2VkKHVpbnQ2
NF90IGlkLCBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdzKQogewog
ICAgIEFTU0VSVChtX3NvdXJjZXMuY29udGFpbnMoaWQpKTsKLSAgICBtX3NvdXJjZXMuZ2V0KGlk
KS0+c2V0U2V0dGluZ3Moc2V0dGluZ3MpOworICAgIG1fc291cmNlcy5nZXQoaWQpLT5zZXRTZXR0
aW5ncyhSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3Moc2V0dGluZ3MpKTsKIH0KIAogdm9pZCBV
c2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6c3RvcmFnZUNoYW5nZWQodWludDY0X3QgaWQsIGNvbnN0
IFNoYXJlZE1lbW9yeTo6SGFuZGxlJiBoYW5kbGUsIGNvbnN0IFdlYkNvcmU6OkNBQXVkaW9TdHJl
YW1EZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKQpAQCAt
Mjc0LDYgKzMwMCwzMCBAQCB2b2lkIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOjpzZXRFbmFibGVk
KHVpbnQ2NF90IGlkLCBib29sIGVuYWJsZWQpCiAgICAgbV9wcm9jZXNzLnNlbmQoTWVzc2FnZXM6
OlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6OlNldEVuYWJsZWQoaWQsIGVuYWJsZWQpLCAw
KTsKIH0KIAordm9pZCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6YXBwbHlDb25zdHJhaW50cyh1
aW50NjRfdCBpZCwgY29uc3QgV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50cyYgY29uc3RyYWludHMp
Cit7CisgICAgTWVkaWFDb25zdHJhaW50c0RhdGEgY29uc3RyYWludHNEYXRhOworICAgIGNvbnN0
cmFpbnRzRGF0YS5tYW5kYXRvcnlDb25zdHJhaW50cyA9IGNvbnN0cmFpbnRzLm1hbmRhdG9yeUNv
bnN0cmFpbnRzKCk7CisgICAgY29uc3RyYWludHNEYXRhLmFkdmFuY2VkQ29uc3RyYWludHMgPSBj
b25zdHJhaW50cy5hZHZhbmNlZENvbnN0cmFpbnRzKCk7CisgICAgY29uc3RyYWludHNEYXRhLmlz
VmFsaWQgPSBjb25zdHJhaW50cy5pc1ZhbGlkKCk7CisKKyAgICBtX3Byb2Nlc3Muc2VuZChNZXNz
YWdlczo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTo6QXBwbHlDb25zdHJhaW50cyhpZCwg
Y29uc3RyYWludHNEYXRhKSwgMCk7Cit9CisKK3ZvaWQgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6
OmFwcGx5Q29uc3RyYWludHNTdWNjZWVkZWQodWludDY0X3QgaWQsIGNvbnN0IFdlYkNvcmU6OlJl
YWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgc2V0dGluZ3MpCit7CisgICAgQVNTRVJUKG1fc291
cmNlcy5jb250YWlucyhpZCkpOworICAgIGF1dG8mIHNvdXJjZSA9ICptX3NvdXJjZXMuZ2V0KGlk
KTsKKyAgICBzb3VyY2UuYXBwbHlDb25zdHJhaW50c1N1Y2NlZWRlZChzZXR0aW5ncyk7Cit9CisK
K3ZvaWQgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OmFwcGx5Q29uc3RyYWludHNGYWlsZWQodWlu
dDY0X3QgaWQsIGNvbnN0IFN0cmluZyYgZmFpbGVkQ29uc3RyYWludCwgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlKQoreworICAgIEFTU0VSVChtX3NvdXJjZXMuY29udGFpbnMoaWQpKTsKKyAgICBhdXRv
JiBzb3VyY2UgPSAqbV9zb3VyY2VzLmdldChpZCk7CisgICAgc291cmNlLmFwcGx5Q29uc3RyYWlu
dHNGYWlsZWQoZmFpbGVkQ29uc3RyYWludCwgbWVzc2FnZSk7Cit9CisKIH0KIAogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1
cmVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNh
cHR1cmVNYW5hZ2VyLmgKaW5kZXggYThhOTNhYmRlZTVlOGVkYzZkMDIxOThiNTEwNjk0OWM1ZTQ4
OWI2Ny4uYzkwZjZkZWM5NGY2Yjc5MjUyMzVhNDMzN2UyYjJkY2UzNzA5ZTRkMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVy
ZU1hbmFnZXIuaApAQCAtNzUsNiArNzUsOSBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OlJlYWx0
aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmJiBjYXBhYmlsaXRpZXModWludDY0X3QpOwogICAg
IHZvaWQgc2V0TXV0ZWQodWludDY0X3QsIGJvb2wpOwogICAgIHZvaWQgc2V0RW5hYmxlZCh1aW50
NjRfdCwgYm9vbCk7CisgICAgdm9pZCBhcHBseUNvbnN0cmFpbnRzKHVpbnQ2NF90LCBjb25zdCBX
ZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnRzJik7CisgICAgdm9pZCBhcHBseUNvbnN0cmFpbnRzU3Vj
Y2VlZGVkKHVpbnQ2NF90LCBjb25zdCBXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlU2V0dGlu
Z3MmKTsKKyAgICB2b2lkIGFwcGx5Q29uc3RyYWludHNGYWlsZWQodWludDY0X3QsIGNvbnN0IFN0
cmluZyYsIGNvbnN0IFN0cmluZyYpOwogCiAgICAgY2xhc3MgU291cmNlOwogICAgIGZyaWVuZCBj
bGFzcyBTb3VyY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29h
L1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5tZXNzYWdlcy5pbgppbmRleCBl
ZWMwNTY1YzY4NjRhNDZiMDBlOWY4ZmI5MTBjMThjODllOWU0YTEzLi4xZmMxZjAyOTJkNTVlODUy
ZTA1M2Q1MmI3MzA3NTRmYzQ0YjQxYmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIubWVz
c2FnZXMuaW4KQEAgLTI4LDQgKzI4LDYgQEAgbWVzc2FnZXMgLT4gVXNlck1lZGlhQ2FwdHVyZU1h
bmFnZXIgewogICAgIFNvdXJjZVNldHRpbmdzQ2hhbmdlZCh1aW50NjRfdCBpZCwgV2ViQ29yZTo6
UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzIHNldHRpbmdzKQogICAgIFN0b3JhZ2VDaGFuZ2Vk
KHVpbnQ2NF90IGlkLCBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SGFuZGxlIHN0b3JhZ2VIYW5kbGUs
IFdlYkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiBkZXNjcmlwdGlvbiwgdWludDY0X3Qg
bnVtYmVyT2ZGcmFtZXMpCiAgICAgQXVkaW9TYW1wbGVzQXZhaWxhYmxlKHVpbnQ2NF90IGlkLCBN
ZWRpYVRpbWUgdGltZSwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMsIHVpbnQ2NF90IHN0YXJ0RnJh
bWUsIHVpbnQ2NF90IGVuZEZyYW1lKQorICAgIEFwcGx5Q29uc3RyYWludHNTdWNjZWVkZWQodWlu
dDY0X3QgaWQsIFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyBzZXR0aW5ncykK
KyAgICBBcHBseUNvbnN0cmFpbnRzRmFpbGVkKHVpbnQ2NF90IGlkLCBTdHJpbmcgZmFpbGVkQ29u
c3RyYWludCwgU3RyaW5nIG1lc3NhZ2UpCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309018</attachid>
            <date>2017-05-03 22:33:56 -0700</date>
            <delta_ts>2017-05-05 14:54:23 -0700</delta_ts>
            <desc>Rebasing patch</desc>
            <filename>bug-171633-20170503223355.patch</filename>
            <type>text/plain</type>
            <size>38092</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2MTcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTk4OTAxOWJjZDY2MTMz
NWYyYzgwMTlmODQ4ZjlkNWIyM2ZjYmVkMC4uYTYzNTc3ZDAwMzM2OGFiNjA1NmZlODAzZDNjNDI0
N2U4YzkzOGQzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDE3LTA1LTAzICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3Ig
cmVhZGluZyBhbmQgd3JpdGluZyBzZXR0aW5ncyBmcm9tIFVJUHJvY2VzcyBhdWRpbyBjYXB0dXJl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzE2MzMK
KworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgQ292ZXJlZCBi
eSBtYW51YWwgdGVzdGluZyBhbmQgZXhpc3RpbmcgdGVzdCBzZXRzLgorCisgICAgICAgIE1vdmlu
ZyBzdWNjZXNzL2ZhaWx1cmUgY2FsbGJhY2tzIGZvciBhcHBseUNvbnN0cmFpbnRzLgorICAgICAg
ICBNYWtpbmcgbWFpbiBSZWFsdGltZU1lZGlhU291cmNlOjphcHBseUNvbnN0cmFpbnRzIHZpcnR1
YWwgc28gdGhhdCBXZWJQcm9jZXNzIHNvdXJjZSBwcm94aWVzIGNhbiBpbXBsZW1lbnQgaXQgYnkK
KyAgICAgICAgZG9pbmcgYW4gSVBDIGNhbGwgZGlyZWN0bHkuIERvaW5nIHNvIGZvciBVSVByb2Nl
c3MgQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS4KKworICAgICAgICBBZGRpbmcgc3VwcG9ydCBmb3Ig
dm9sdW1lIHRvIENvcmVBdWRpb0NhcHR1cmVTb3VyY2UgYnkgYXBwbHlpbmcgZ2FpbiBwb3N0LWNh
cHR1cmluZy4KKyAgICAgICAgQWRkaW5nIHN1cHBvcnQgZm9yIHRvZ2dsaW5nIGVjaG8gY2FuY2Vs
bGF0aW9uIGluIENvcmVBdWRpb0NhcHR1cmVTb3VyY2UuCisgICAgICAgIEFkZGluZyBzdXBwb3J0
IHRvIGNoYW5nZSBlY2hvIGNhbmNlbGxhdGlvbiBhbmQgc2FtcGxlIHJhdGUgYnkgc2NoZWR1bGlu
ZyBhIHJlY29uZmlndXJhdGlvbiBvZiB0aGUgYXVkaW8gdW5pdC4KKyAgICAgICAgVG8gZG8gc28s
IHdlIHN0b3AgcHJvZHVjaW5nIGRhdGEsIGRlbGV0ZSB0aGUgYXVkaW8gdW5pdCBhbmQgcmVzdGFy
dCBwcm9kdWNpbmcgZGF0YS4KKyAgICAgICAgUmVtb3ZpbmcgQ29yZUF1ZGlvQ2FwdHVyZVNvdXJj
ZTo6c3VwcG9ydGVkQ29uc3RyYWludHMgYXMgaXQgaXMgcmVkdW5kYW50IHdpdGgKKyAgICAgICAg
UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpzdXBwb3J0ZWRDb25zdHJhaW50cy4KKworICAg
ICAgICBTZXR0aW5nIHNhbXBsZSByYXRlIG9ubHkgdG8gdGhlIGZvbGxvd2luZyB2YWx1ZXM6IDgw
MDAsIDE2MDAwLCAzMjAwMCwgNDQxMDAsIDQ4MDAwLgorCisgICAgICAgICogTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3Ry
ZWFtVHJhY2s6OmFwcGx5Q29uc3RyYWludHMpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U3RyZWFtVHJhY2tQcml2YXRlOjphcHBseUNvbnN0cmFpbnRzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5oOgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6YXBwbHlDb25zdHJhaW50cyk6CisgICAgICAgICogcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5oOgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5oOgorICAgICAgICAo
V2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpzdXBwb3J0ZWRDb25zdHJhaW50
cyk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVT
b3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6fkNv
cmVBdWRpb0NhcHR1cmVTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q29yZUF1ZGlvQ2FwdHVy
ZVNvdXJjZTo6cHJvY2Vzc01pY3JvcGhvbmVTYW1wbGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
cmVBdWRpb0NhcHR1cmVTb3VyY2U6OmNsZWFudXBBdWRpb1VuaXQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6Y3JlYXRlQXVkaW9Vbml0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OmNvbmZpZ3VyZUF1ZGlvVW5pdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpzdGFydFByb2R1Y2luZ0RhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6Y2FwYWJpbGl0aWVz
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OnNldHRpbmdzKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OmFwcGx5U2FtcGxlUmF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb3JlQXVkaW9DYXB0dXJlU291cmNlOjphcHBseUVjaG9D
YW5jZWxsYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6
c2NoZWR1bGVSZWNvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q29yZUF1ZGlvQ2Fw
dHVyZVNvdXJjZTo6Y2xlYW51cEF1ZGlvVW5pdHMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6c2V0dXBBdWRpb1VuaXRzKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5o
OgorCiAyMDE3LTA1LTAzICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgog
CiAgICAgICAgIFtNZWRpYVN0cmVhbV0gQWxsb3cgaG9zdCBhcHBsaWNhdGlvbiB0byBlbmFibGUv
ZGlzYWJsZSBtZWRpYSBjYXB0dXJlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZjM4Mjk2NmZkOTJiMjU2MzJkN2Uw
OTg4YWEwNWE4MzA3ZWUyMmVkMC4uNmU0MzdlYWVlZGQ4ZWM3ZTNhM2QyZjBmOGNiZGU0MjY1N2Ez
ZWE2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE3LTA1LTAzICBZb3Vlbm4gRmFi
bGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgcmVhZGlu
ZyBhbmQgd3JpdGluZyBzZXR0aW5ncyBmcm9tIFVJUHJvY2VzcyBhdWRpbyBjYXB0dXJlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzE2MzMKKworICAg
ICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29j
b2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlVz
ZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6OmNyZWF0ZU1lZGlhU291cmNlRm9yQ2FwdHVyZURl
dmljZVdpdGhDb25zdHJhaW50cyk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYUNhcHR1cmVN
YW5hZ2VyUHJveHk6OmFwcGx5Q29uc3RyYWludHMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2Nv
YS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0Nv
Y29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICog
V2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOjpTb3VyY2U6OnNldFNldHRpbmdzKToKKyAg
ICAgICAgKFdlYktpdDo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OlNvdXJjZTo6YXBwbHlDb25z
dHJhaW50c1N1Y2NlZWRlZCk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYUNhcHR1cmVNYW5h
Z2VyOjpTb3VyY2U6OmFwcGx5Q29uc3RyYWludHNGYWlsZWQpOgorICAgICAgICAoV2ViS2l0OjpV
c2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6Y3JlYXRlQ2FwdHVyZVNvdXJjZSk6CisgICAgICAgIChX
ZWJLaXQ6OlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOjpzb3VyY2VTZXR0aW5nc0NoYW5nZWQpOgor
ICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6YXBwbHlDb25zdHJhaW50
cyk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOjphcHBseUNvbnN0
cmFpbnRzU3VjY2VlZGVkKToKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhQ2FwdHVyZU1hbmFn
ZXI6OmFwcGx5Q29uc3RyYWludHNGYWlsZWQpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFD
YXB0dXJlTWFuYWdlcjo6U291cmNlOjpzZXRNdXRlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOjpTb3VyY2U6OnNldEVuYWJsZWQpOiBEZWxldGVk
LgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLm1lc3Nh
Z2VzLmluOgorCiAyMDE3LTA1LTAzICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUu
Y29tPgogCiAgICAgICAgIFtNZWRpYVN0cmVhbV0gQWxsb3cgaG9zdCBhcHBsaWNhdGlvbiB0byBl
bmFibGUvZGlzYWJsZSBtZWRpYSBjYXB0dXJlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcAppbmRleCA2YTZiYTUxNWFl
N2VjNDg0MzNiNDE0M2Q3ZWJmYTk5MjNhMjJlYzRkLi5lNTU0YmM0YzY2Mzg0MDExNTFjNTBlNjc1
YWRlMzMzNTI0YjQ2N2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAKQEAgLTI2OSw3ICsyNjksNyBAQCB2b2lk
IE1lZGlhU3RyZWFtVHJhY2s6OmFwcGx5Q29uc3RyYWludHMoY29uc3Qgc3RkOjpvcHRpb25hbDxN
ZWRpYVRyYWNrQ29uc3RyYWludAogICAgICAgICB3ZWFrVGhpcy0+bV9wcm9taXNlLT5yZXNvbHZl
KCk7CiAgICAgICAgIHdlYWtUaGlzLT5tX2NvbnN0cmFpbnRzID0gY29uc3RyYWludHMudmFsdWVf
b3IoTWVkaWFUcmFja0NvbnN0cmFpbnRzIHsgfSk7CiAgICAgfTsKLSAgICBtX3ByaXZhdGUtPmFw
cGx5Q29uc3RyYWludHMoY3JlYXRlTWVkaWFDb25zdHJhaW50c0ltcGwoY29uc3RyYWludHMpLCBz
dWNjZXNzSGFuZGxlciwgZmFpbHVyZUhhbmRsZXIpOworICAgIG1fcHJpdmF0ZS0+YXBwbHlDb25z
dHJhaW50cyhjcmVhdGVNZWRpYUNvbnN0cmFpbnRzSW1wbChjb25zdHJhaW50cyksIFdURk1vdmUo
c3VjY2Vzc0hhbmRsZXIpLCBXVEZNb3ZlKGZhaWx1cmVIYW5kbGVyKSk7CiB9CiAKIHZvaWQgTWVk
aWFTdHJlYW1UcmFjazo6YWRkT2JzZXJ2ZXIoT2JzZXJ2ZXImIG9ic2VydmVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1By
aXZhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW1UcmFja1ByaXZhdGUuY3BwCmluZGV4IDlmZmQwNDQzYjJjMjMzNWJkYmM2ZmI2NTFjYWZlNWU0
NGJlYjAzNDMuLmY1YjRlMjllOWZiZTYyNmE1ODU2NmY5YjA4MWU1ZjYzYThjYWNlNGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJh
Y2tQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5jcHAKQEAgLTE0MSw5ICsxNDEsOSBAQCBjb25zdCBSZWFs
dGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6Y2Fw
YWJpbGl0aWVzKCkgYwogICAgIHJldHVybiBtX3NvdXJjZS0+Y2FwYWJpbGl0aWVzKCk7CiB9CiAK
LXZvaWQgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OmFwcGx5Q29uc3RyYWludHMoY29uc3QgTWVk
aWFDb25zdHJhaW50cyYgY29uc3RyYWludHMsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlN1Y2Nlc3NI
YW5kbGVyIHN1Y2Nlc3NIYW5kbGVyLCBSZWFsdGltZU1lZGlhU291cmNlOjpGYWlsdXJlSGFuZGxl
ciBmYWlsdXJlSGFuZGxlcikKK3ZvaWQgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OmFwcGx5Q29u
c3RyYWludHMoY29uc3QgTWVkaWFDb25zdHJhaW50cyYgY29uc3RyYWludHMsIFJlYWx0aW1lTWVk
aWFTb3VyY2U6OlN1Y2Nlc3NIYW5kbGVyJiYgc3VjY2Vzc0hhbmRsZXIsIFJlYWx0aW1lTWVkaWFT
b3VyY2U6OkZhaWx1cmVIYW5kbGVyJiYgZmFpbHVyZUhhbmRsZXIpCiB7Ci0gICAgbV9zb3VyY2Ut
PmFwcGx5Q29uc3RyYWludHMoY29uc3RyYWludHMsIHN1Y2Nlc3NIYW5kbGVyLCBmYWlsdXJlSGFu
ZGxlcik7CisgICAgbV9zb3VyY2UtPmFwcGx5Q29uc3RyYWludHMoY29uc3RyYWludHMsIFdURk1v
dmUoc3VjY2Vzc0hhbmRsZXIpLCBXVEZNb3ZlKGZhaWx1cmVIYW5kbGVyKSk7CiB9CiAKIEF1ZGlv
U291cmNlUHJvdmlkZXIqIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjphdWRpb1NvdXJjZVByb3Zp
ZGVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtVHJhY2tQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5oCmluZGV4IDRkNzgzZTAyNTQ3ZmZjZTc1NTgx
YmM1ODZjODVmNTI2ZTgzMmU1NzAuLjVlMjA0NmFkNWE0Y2VlYTg4ZGY1ZDNkYWIyNDlmZTNhMmQ2
NmM4MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtVHJhY2tQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuaApAQCAtODksNyArODksNyBAQCBwdWJs
aWM6CiAgICAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBzZXR0aW5ncygpIGNv
bnN0OwogICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmIGNhcGFiaWxp
dGllcygpIGNvbnN0OwogCi0gICAgdm9pZCBhcHBseUNvbnN0cmFpbnRzKGNvbnN0IE1lZGlhQ29u
c3RyYWludHMmLCBSZWFsdGltZU1lZGlhU291cmNlOjpTdWNjZXNzSGFuZGxlciwgUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6RmFpbHVyZUhhbmRsZXIpOworICAgIHZvaWQgYXBwbHlDb25zdHJhaW50cyhj
b25zdCBNZWRpYUNvbnN0cmFpbnRzJiwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6U3VjY2Vzc0hhbmRs
ZXImJiwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6RmFpbHVyZUhhbmRsZXImJik7CiAKICAgICBBdWRp
b1NvdXJjZVByb3ZpZGVyKiBhdWRpb1NvdXJjZVByb3ZpZGVyKCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJj
ZS5jcHAKaW5kZXggMTkxZGFlZTJkMTE2ODBkNDEzZWY3ZjA0NGJmYThlNWUwMjcyZGU1OC4uNGI0
ZTQ2NDcyYWZmYTk0N2VhODI4ZWE0NWQ2ZDBiYjAzZTA0NjUwMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJj
ZS5jcHAKQEAgLTc1MSw3ICs3NTEsNyBAQCBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxTdHJpbmcs
IFN0cmluZz4+IFJlYWx0aW1lTWVkaWFTb3VyY2U6OmFwcGx5Q29uc3RyYWludHMoYwogICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLXZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6YXBwbHlD
b25zdHJhaW50cyhjb25zdCBNZWRpYUNvbnN0cmFpbnRzJiBjb25zdHJhaW50cywgU3VjY2Vzc0hh
bmRsZXIgc3VjY2Vzc0hhbmRsZXIsIEZhaWx1cmVIYW5kbGVyIGZhaWx1cmVIYW5kbGVyKQordm9p
ZCBSZWFsdGltZU1lZGlhU291cmNlOjphcHBseUNvbnN0cmFpbnRzKGNvbnN0IE1lZGlhQ29uc3Ry
YWludHMmIGNvbnN0cmFpbnRzLCBTdWNjZXNzSGFuZGxlciYmIHN1Y2Nlc3NIYW5kbGVyLCBGYWls
dXJlSGFuZGxlciYmIGZhaWx1cmVIYW5kbGVyKQogewogICAgIGF1dG8gcmVzdWx0ID0gYXBwbHlD
b25zdHJhaW50cyhjb25zdHJhaW50cyk7CiAgICAgaWYgKCFyZXN1bHQgJiYgc3VjY2Vzc0hhbmRs
ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFs
dGltZU1lZGlhU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
ZWFsdGltZU1lZGlhU291cmNlLmgKaW5kZXggMmFmNjExZmFmOTRmOWY4MjRlMTNiYzA2MzRhZmZh
NzljZTczZGYxMC4uY2RlYTNlNTI3NWMzZTJmZjVmMThlMzljNmYyYjU1MGVlNWFhOWFkOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRp
YVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0
aW1lTWVkaWFTb3VyY2UuaApAQCAtMTIzLDcgKzEyMyw3IEBAIHB1YmxpYzoKIAogICAgIHVzaW5n
IFN1Y2Nlc3NIYW5kbGVyID0gc3RkOjpmdW5jdGlvbjx2b2lkKCk+OwogICAgIHVzaW5nIEZhaWx1
cmVIYW5kbGVyID0gc3RkOjpmdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYgYmFkQ29uc3RyYWlu
dCwgY29uc3QgU3RyaW5nJiBlcnJvclN0cmluZyk+OwotICAgIHZvaWQgYXBwbHlDb25zdHJhaW50
cyhjb25zdCBNZWRpYUNvbnN0cmFpbnRzJiwgU3VjY2Vzc0hhbmRsZXIsIEZhaWx1cmVIYW5kbGVy
KTsKKyAgICB2aXJ0dWFsIHZvaWQgYXBwbHlDb25zdHJhaW50cyhjb25zdCBNZWRpYUNvbnN0cmFp
bnRzJiwgU3VjY2Vzc0hhbmRsZXImJiwgRmFpbHVyZUhhbmRsZXImJik7CiAgICAgc3RkOjpvcHRp
b25hbDxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiBhcHBseUNvbnN0cmFpbnRzKGNvbnN0IE1l
ZGlhQ29uc3RyYWludHMmKTsKIAogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0NvbnN0cmFpbnRz
KGNvbnN0IE1lZGlhQ29uc3RyYWludHMmLCBTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJj
ZVNldHRpbmdzLmgKaW5kZXggZTFmZDE2Zjg2YzI3NmQxMjY1NGI1OWNjMjQ5ZTA5ZmNjMDI2YmE1
MC4uNzVlMGM5YTkxNTNkY2E2OTI3ODlhYjkxMTZjZGMyMmI1YTMzOWE3ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZVNl
dHRpbmdzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRp
bWVNZWRpYVNvdXJjZVNldHRpbmdzLmgKQEAgLTkzLDYgKzkzLDcgQEAgcHVibGljOgogICAgIGNv
bnN0IEF0b21pY1N0cmluZyYgZ3JvdXBJZCgpIGNvbnN0IHsgcmV0dXJuIG1fZ3JvdXBJZDsgfQog
ICAgIHZvaWQgc2V0R3JvdXBJZChjb25zdCBBdG9taWNTdHJpbmcmIGdyb3VwSWQpIHsgbV9ncm91
cElkID0gZ3JvdXBJZDsgfQogCisgICAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRl
ZENvbnN0cmFpbnRzJiBzdXBwb3J0ZWRDb25zdHJhaW50cygpIGNvbnN0IHsgcmV0dXJuIG1fc3Vw
cG9ydGVkQ29uc3RyYWludHM7IH0KICAgICB2b2lkIHNldFN1cHBvcnRlZENvbnN0cmFpbnRzKGNv
bnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyYgc3VwcG9ydGVkQ29u
c3RyYWludHMpIHsgbV9zdXBwb3J0ZWRDb25zdHJhaW50cyA9IHN1cHBvcnRlZENvbnN0cmFpbnRz
OyB9CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikg
Y29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5jcHAKaW5kZXggMzU0MmViMzA0
ZjUxZGI0MWVjOTc4MDBiMjM4NDJmNDU2ZTQ1NDBjMi4uMjkyYzY4ZDBkNzVjZjc3ZWE5NjQ1OTkx
ODZjMDcxNWQ4OTIzMmZiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlU291cmNlLmNwcApA
QCAtNzIsOCArNzIsMTAgQEAgcHVibGljOgogCiAgICAgT1NTdGF0dXMgc3VzcGVuZCgpOwogCi0g
ICAgT1NTdGF0dXMgc2V0dXBBdWRpb1VuaXRzKCk7Ci0gICAgdm9pZCBjbGVhbnVwQXVkaW9Vbml0
cygpOworICAgIHZvaWQgc2NoZWR1bGVSZWNvbmZpZ3VyYXRpb24oKTsKKworICAgIE9TU3RhdHVz
IHNldHVwQXVkaW9Vbml0KCk7CisgICAgdm9pZCBjbGVhbnVwQXVkaW9Vbml0KCk7CiAKICAgICB2
b2lkIGFkZEVjaG9DYW5jZWxsYXRpb25Tb3VyY2UoQXVkaW9TYW1wbGVEYXRhU291cmNlJik7CiAg
ICAgdm9pZCByZW1vdmVFY2hvQ2FuY2VsbGF0aW9uU291cmNlKEF1ZGlvU2FtcGxlRGF0YVNvdXJj
ZSYpOwpAQCAtOTQsNyArOTYsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBPU1N0YXR1cyBzcGVh
a2VyQ2FsbGJhY2sodm9pZCosIEF1ZGlvVW5pdFJlbmRlckFjdGlvbkZsYWdzKiwgY29uc3QgQXVk
aW9UaW1lU3RhbXAqLCBVSW50MzIsIFVJbnQzMiwgQXVkaW9CdWZmZXJMaXN0Kik7CiAgICAgT1NT
dGF0dXMgcHJvdmlkZVNwZWFrZXJEYXRhKEF1ZGlvVW5pdFJlbmRlckFjdGlvbkZsYWdzJiwgY29u
c3QgQXVkaW9UaW1lU3RhbXAmLCBVSW50MzIsIFVJbnQzMiwgQXVkaW9CdWZmZXJMaXN0Kik7CiAK
LSAgICBWZWN0b3I8Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZSo+IG1fY2xpZW50czsKKyAgICBWZWN0
b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxDb3JlQXVkaW9DYXB0dXJlU291cmNlPj4gbV9jbGll
bnRzOwogCiAgICAgQXVkaW9Vbml0IG1faW9Vbml0IHsgbnVsbHB0ciB9OwogCkBAIC0xMjUsNyAr
MTI3LDYgQEAgcHJpdmF0ZToKICAgICBpbnQzMl90IG1fcHJvZHVjaW5nQ291bnQgeyAwIH07CiAK
ICAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0
aWVzPiBtX2NhcGFiaWxpdGllczsKLSAgICBtdXRhYmxlIFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBw
b3J0ZWRDb25zdHJhaW50cyBtX3N1cHBvcnRlZENvbnN0cmFpbnRzOwogICAgIG11dGFibGUgc3Rk
OjpvcHRpb25hbDxSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M+IG1fY3VycmVudFNldHRpbmdz
OwogCiAjaWYgIUxPR19ESVNBQkxFRApAQCAtMTQ1LDEyICsxNDYsMTQgQEAgQ29yZUF1ZGlvU2hh
cmVkVW5pdCYgQ29yZUF1ZGlvU2hhcmVkVW5pdDo6c2luZ2xldG9uKCkKIAogdm9pZCBDb3JlQXVk
aW9TaGFyZWRVbml0OjphZGRDbGllbnQoQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZSYgY2xpZW50KQog
ewotICAgIG1fY2xpZW50cy5hcHBlbmQoJmNsaWVudCk7CisgICAgbV9jbGllbnRzLmFwcGVuZChj
bGllbnQpOwogfQogCiB2b2lkIENvcmVBdWRpb1NoYXJlZFVuaXQ6OnJlbW92ZUNsaWVudChDb3Jl
QXVkaW9DYXB0dXJlU291cmNlJiBjbGllbnQpCiB7Ci0gICAgbV9jbGllbnRzLnJlbW92ZUFsbCgm
Y2xpZW50KTsKKyAgICBtX2NsaWVudHMucmVtb3ZlQWxsTWF0Y2hpbmcoWyZdKGNvbnN0IGF1dG8m
IGl0ZW0pIHsKKyAgICAgICAgcmV0dXJuICZjbGllbnQgPT0gJml0ZW0uZ2V0KCk7CisgICAgfSk7
CiB9CiAKIHZvaWQgQ29yZUF1ZGlvU2hhcmVkVW5pdDo6YWRkRWNob0NhbmNlbGxhdGlvblNvdXJj
ZShBdWRpb1NhbXBsZURhdGFTb3VyY2UmIHNvdXJjZSkKQEAgLTE3NSw3ICsxNzgsNyBAQCBzaXpl
X3QgQ29yZUF1ZGlvU2hhcmVkVW5pdDo6cHJlZmVycmVkSU9CdWZmZXJTaXplKCkKICAgICByZXR1
cm4gQXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCkuYnVmZmVyU2l6ZSgpOwogfQogCi1PU1N0
YXR1cyBDb3JlQXVkaW9TaGFyZWRVbml0OjpzZXR1cEF1ZGlvVW5pdHMoKQorT1NTdGF0dXMgQ29y
ZUF1ZGlvU2hhcmVkVW5pdDo6c2V0dXBBdWRpb1VuaXQoKQogewogICAgIGlmIChtX2lvVW5pdCkK
ICAgICAgICAgcmV0dXJuIDA7CkBAIC0xOTAsNyArMTkzLDcgQEAgT1NTdGF0dXMgQ29yZUF1ZGlv
U2hhcmVkVW5pdDo6c2V0dXBBdWRpb1VuaXRzKCkKICAgICBBdWRpb0NvbXBvbmVudCBpb0NvbXBv
bmVudCA9IEF1ZGlvQ29tcG9uZW50RmluZE5leHQobnVsbHB0ciwgJmlvVW5pdERlc2NyaXB0aW9u
KTsKICAgICBBU1NFUlQoaW9Db21wb25lbnQpOwogICAgIGlmICghaW9Db21wb25lbnQpIHsKLSAg
ICAgICAgTE9HKE1lZGlhLCAiQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6c2V0dXBBdWRpb1VuaXRz
KCVwKSB1bmFibGUgdG8gZmluZCB2cGlvIHVuaXQgY29tcG9uZW50IiwgdGhpcyk7CisgICAgICAg
IExPRyhNZWRpYSwgIkNvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OnNldHVwQXVkaW9Vbml0KCVwKSB1
bmFibGUgdG8gZmluZCB2cGlvIHVuaXQgY29tcG9uZW50IiwgdGhpcyk7CiAgICAgICAgIHJldHVy
biAtMTsKICAgICB9CiAKQEAgLTIwMCwyOCArMjAzLDM1IEBAIE9TU3RhdHVzIENvcmVBdWRpb1No
YXJlZFVuaXQ6OnNldHVwQXVkaW9Vbml0cygpCiAgICAgaWYgKG5hbWUpIHsKICAgICAgICAgbV9p
b1VuaXROYW1lID0gbmFtZTsKICAgICAgICAgQ0ZSZWxlYXNlKG5hbWUpOwotICAgICAgICBMT0co
TWVkaWEsICJDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpzZXR1cEF1ZGlvVW5pdHMoJXApIGNyZWF0
ZWQgXCIlc1wiIGNvbXBvbmVudCIsIHRoaXMsIG1faW9Vbml0TmFtZS51dGY4KCkuZGF0YSgpKTsK
KyAgICAgICAgTE9HKE1lZGlhLCAiQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6c2V0dXBBdWRpb1Vu
aXQoJXApIGNyZWF0ZWQgXCIlc1wiIGNvbXBvbmVudCIsIHRoaXMsIG1faW9Vbml0TmFtZS51dGY4
KCkuZGF0YSgpKTsKICAgICB9CiAjZW5kaWYKIAogICAgIGF1dG8gZXJyID0gQXVkaW9Db21wb25l
bnRJbnN0YW5jZU5ldyhpb0NvbXBvbmVudCwgJm1faW9Vbml0KTsKICAgICBpZiAoZXJyKSB7Ci0g
ICAgICAgIExPRyhNZWRpYSwgIkNvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OnNldHVwQXVkaW9Vbml0
cyglcCkgdW5hYmxlIHRvIG9wZW4gdnBpbyB1bml0LCBlcnJvciAlZCAoJS40cykiLCB0aGlzLCAo
aW50KWVyciwgKGNoYXIqKSZlcnIpOworICAgICAgICBMT0coTWVkaWEsICJDb3JlQXVkaW9DYXB0
dXJlU291cmNlOjpzZXR1cEF1ZGlvVW5pdCglcCkgdW5hYmxlIHRvIG9wZW4gdnBpbyB1bml0LCBl
cnJvciAlZCAoJS40cykiLCB0aGlzLCAoaW50KWVyciwgKGNoYXIqKSZlcnIpOwogICAgICAgICBy
ZXR1cm4gZXJyOwogICAgIH0KIAotICAgIHVpbnQzMl90IHBhcmFtID0gbV9jbGllbnRzLmZpcnN0
KCktPmVjaG9DYW5jZWxsYXRpb24oKTsKLSAgICBlcnIgPSBBdWRpb1VuaXRTZXRQcm9wZXJ0eSht
X2lvVW5pdCwga0FVVm9pY2VJT1Byb3BlcnR5X1ZvaWNlUHJvY2Vzc2luZ0VuYWJsZUFHQywga0F1
ZGlvVW5pdFNjb3BlX0dsb2JhbCwgaW5wdXRCdXMsICZwYXJhbSwgc2l6ZW9mKHBhcmFtKSk7Ci0g
ICAgaWYgKGVycikgewotICAgICAgICBMT0coTWVkaWEsICJDb3JlQXVkaW9DYXB0dXJlU291cmNl
OjpzZXR1cEF1ZGlvVW5pdHMoJXApIHVuYWJsZSB0byBzZXQgdnBpbyB1bml0IGVjaG8gY2FuY2Vs
bGF0aW9uLCBlcnJvciAlZCAoJS40cykiLCB0aGlzLCAoaW50KWVyciwgKGNoYXIqKSZlcnIpOwot
ICAgICAgICByZXR1cm4gZXJyOwotICAgIH0KKyAgICBpZiAoIW1fY2xpZW50cy5maXJzdCgpLmVj
aG9DYW5jZWxsYXRpb24oKSkgeworICAgICAgICB1aW50MzJfdCBwYXJhbSA9IDA7CisgICAgICAg
IGVyciA9IEF1ZGlvVW5pdFNldFByb3BlcnR5KG1faW9Vbml0LCBrQVVWb2ljZUlPUHJvcGVydHlf
Vm9pY2VQcm9jZXNzaW5nRW5hYmxlQUdDLCBrQXVkaW9Vbml0U2NvcGVfR2xvYmFsLCBpbnB1dEJ1
cywgJnBhcmFtLCBzaXplb2YocGFyYW0pKTsKKyAgICAgICAgaWYgKGVycikgeworICAgICAgICAg
ICAgTE9HKE1lZGlhLCAiQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6c2V0dXBBdWRpb1VuaXQoJXAp
IHVuYWJsZSB0byBzZXQgdnBpbyBhdXRvbWF0aWMgZ2FpbiBjb250cm9sLCBlcnJvciAlZCAoJS40
cykiLCB0aGlzLCAoaW50KWVyciwgKGNoYXIqKSZlcnIpOworICAgICAgICAgICAgcmV0dXJuIGVy
cjsKKyAgICAgICAgfQorICAgICAgICBwYXJhbSA9IDE7CisgICAgICAgIGVyciA9IEF1ZGlvVW5p
dFNldFByb3BlcnR5KG1faW9Vbml0LCBrQVVWb2ljZUlPUHJvcGVydHlfQnlwYXNzVm9pY2VQcm9j
ZXNzaW5nLCBrQXVkaW9Vbml0U2NvcGVfR2xvYmFsLCBpbnB1dEJ1cywgJnBhcmFtLCBzaXplb2Yo
cGFyYW0pKTsKKyAgICAgICAgaWYgKGVycikgeworICAgICAgICAgICAgTE9HKE1lZGlhLCAiQ29y
ZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6c2V0dXBBdWRpb1VuaXQoJXApIHVuYWJsZSB0byBzZXQgdnBp
byB1bml0IGVjaG8gY2FuY2VsbGF0aW9uLCBlcnJvciAlZCAoJS40cykiLCB0aGlzLCAoaW50KWVy
ciwgKGNoYXIqKSZlcnIpOworICAgICAgICAgICAgcmV0dXJuIGVycjsKKyAgICAgICAgfQogCiAj
aWYgUExBVEZPUk0oSU9TKQogICAgIHBhcmFtID0gMTsKICAgICBlcnIgPSBBdWRpb1VuaXRTZXRQ
cm9wZXJ0eShtX2lvVW5pdCwga0F1ZGlvT3V0cHV0VW5pdFByb3BlcnR5X0VuYWJsZUlPLCBrQXVk
aW9Vbml0U2NvcGVfSW5wdXQsIGlucHV0QnVzLCAmcGFyYW0sIHNpemVvZihwYXJhbSkpOwogICAg
IGlmIChlcnIpIHsKLSAgICAgICAgTE9HKE1lZGlhLCAiQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6
c2V0dXBBdWRpb1VuaXRzKCVwKSB1bmFibGUgdG8gZW5hYmxlIHZwaW8gdW5pdCBpbnB1dCwgZXJy
b3IgJWQgKCUuNHMpIiwgdGhpcywgKGludCllcnIsIChjaGFyKikmZXJyKTsKKyAgICAgICAgTE9H
KE1lZGlhLCAiQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6c2V0dXBBdWRpb1VuaXQoJXApIHVuYWJs
ZSB0byBlbmFibGUgdnBpbyB1bml0IGlucHV0LCBlcnJvciAlZCAoJS40cykiLCB0aGlzLCAoaW50
KWVyciwgKGNoYXIqKSZlcnIpOwogICAgICAgICByZXR1cm4gZXJyOwogICAgIH0KICNlbHNlCkBA
IC0yMzMsNyArMjQzLDcgQEAgT1NTdGF0dXMgQ29yZUF1ZGlvU2hhcmVkVW5pdDo6c2V0dXBBdWRp
b1VuaXRzKCkKIAogICAgIGVyciA9IEF1ZGlvVW5pdFNldFByb3BlcnR5KG1faW9Vbml0LCBrQXVk
aW9PdXRwdXRVbml0UHJvcGVydHlfQ3VycmVudERldmljZSwga0F1ZGlvVW5pdFNjb3BlX0dsb2Jh
bCwgaW5wdXRCdXMsICZtX2NhcHR1cmVEZXZpY2VJRCwgc2l6ZW9mKG1fY2FwdHVyZURldmljZUlE
KSk7CiAgICAgaWYgKGVycikgewotICAgICAgICBMT0coTWVkaWEsICJDb3JlQXVkaW9DYXB0dXJl
U291cmNlOjpzZXR1cEF1ZGlvVW5pdHMoJXApIHVuYWJsZSB0byBzZXQgdnBpbyB1bml0IGNhcHR1
cmUgZGV2aWNlIElELCBlcnJvciAlZCAoJS40cykiLCB0aGlzLCAoaW50KWVyciwgKGNoYXIqKSZl
cnIpOworICAgICAgICBMT0coTWVkaWEsICJDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpzZXR1cEF1
ZGlvVW5pdCglcCkgdW5hYmxlIHRvIHNldCB2cGlvIHVuaXQgY2FwdHVyZSBkZXZpY2UgSUQsIGVy
cm9yICVkICglLjRzKSIsIHRoaXMsIChpbnQpZXJyLCAoY2hhciopJmVycik7CiAgICAgICAgIHJl
dHVybiBlcnI7CiAgICAgfQogI2VuZGlmCkBAIC0yNDQsNyArMjU0LDcgQEAgT1NTdGF0dXMgQ29y
ZUF1ZGlvU2hhcmVkVW5pdDo6c2V0dXBBdWRpb1VuaXRzKCkKIAogICAgIGVyciA9IEF1ZGlvVW5p
dEluaXRpYWxpemUobV9pb1VuaXQpOwogICAgIGlmIChlcnIpIHsKLSAgICAgICAgTE9HKE1lZGlh
LCAiQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6c2V0dXBBdWRpb1VuaXRzKCVwKSBBdWRpb1VuaXRJ
bml0aWFsaXplKCkgZmFpbGVkLCBlcnJvciAlZCAoJS40cykiLCB0aGlzLCAoaW50KWVyciwgKGNo
YXIqKSZlcnIpOworICAgICAgICBMT0coTWVkaWEsICJDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpz
ZXR1cEF1ZGlvVW5pdCglcCkgQXVkaW9Vbml0SW5pdGlhbGl6ZSgpIGZhaWxlZCwgZXJyb3IgJWQg
KCUuNHMpIiwgdGhpcywgKGludCllcnIsIChjaGFyKikmZXJyKTsKICAgICAgICAgcmV0dXJuIGVy
cjsKICAgICB9CiAgICAgbV9pb1VuaXRJbml0aWFsaXplZCA9IHRydWU7CkBAIC0yNzQsNyArMjg0
LDcgQEAgT1NTdGF0dXMgQ29yZUF1ZGlvU2hhcmVkVW5pdDo6Y29uZmlndXJlTWljcm9waG9uZVBy
b2MoKQogICAgICAgICByZXR1cm4gZXJyOwogICAgIH0KIAotICAgIG1pY3JvcGhvbmVQcm9jRm9y
bWF0Lm1TYW1wbGVSYXRlID0gbV9jbGllbnRzLmZpcnN0KCktPnNhbXBsZVJhdGUoKTsKKyAgICBt
aWNyb3Bob25lUHJvY0Zvcm1hdC5tU2FtcGxlUmF0ZSA9IG1fY2xpZW50cy5maXJzdCgpLnNhbXBs
ZVJhdGUoKTsKICAgICBlcnIgPSBBdWRpb1VuaXRTZXRQcm9wZXJ0eShtX2lvVW5pdCwga0F1ZGlv
VW5pdFByb3BlcnR5X1N0cmVhbUZvcm1hdCwga0F1ZGlvVW5pdFNjb3BlX091dHB1dCwgaW5wdXRC
dXMsICZtaWNyb3Bob25lUHJvY0Zvcm1hdCwgc2l6ZSk7CiAgICAgaWYgKGVycikgewogICAgICAg
ICBMT0coTWVkaWEsICJDb3JlQXVkaW9TaGFyZWRVbml0Ojpjb25maWd1cmVNaWNyb3Bob25lUHJv
YyglcCkgdW5hYmxlIHRvIHNldCBvdXRwdXQgc3RyZWFtIGZvcm1hdCwgZXJyb3IgJWQgKCUuNHMp
IiwgdGhpcywgKGludCllcnIsIChjaGFyKikmZXJyKTsKQEAgLTMwNSw3ICszMTUsNyBAQCBPU1N0
YXR1cyBDb3JlQXVkaW9TaGFyZWRVbml0Ojpjb25maWd1cmVTcGVha2VyUHJvYygpCiAgICAgICAg
IHJldHVybiBlcnI7CiAgICAgfQogCi0gICAgc3BlYWtlclByb2NGb3JtYXQubVNhbXBsZVJhdGUg
PSBtX2NsaWVudHMuZmlyc3QoKS0+c2FtcGxlUmF0ZSgpOworICAgIHNwZWFrZXJQcm9jRm9ybWF0
Lm1TYW1wbGVSYXRlID0gbV9jbGllbnRzLmZpcnN0KCkuc2FtcGxlUmF0ZSgpOwogICAgIGVyciA9
IEF1ZGlvVW5pdFNldFByb3BlcnR5KG1faW9Vbml0LCBrQXVkaW9Vbml0UHJvcGVydHlfU3RyZWFt
Rm9ybWF0LCBrQXVkaW9Vbml0U2NvcGVfSW5wdXQsIG91dHB1dEJ1cywgJnNwZWFrZXJQcm9jRm9y
bWF0LCBzaXplKTsKICAgICBpZiAoZXJyKSB7CiAgICAgICAgIExPRyhNZWRpYSwgIkNvcmVBdWRp
b1NoYXJlZFVuaXQ6OmNvbmZpZ3VyZVNwZWFrZXJQcm9jKCVwKSB1bmFibGUgdG8gZ2V0IGlucHV0
IHN0cmVhbSBmb3JtYXQsIGVycm9yICVkICglLjRzKSIsIHRoaXMsIChpbnQpZXJyLCAoY2hhciop
JmVycik7CkBAIC00MTEsMTEgKzQyMSwxNCBAQCBPU1N0YXR1cyBDb3JlQXVkaW9TaGFyZWRVbml0
Ojpwcm9jZXNzTWljcm9waG9uZVNhbXBsZXMoQXVkaW9Vbml0UmVuZGVyQWN0aW9uRmxhZwogICAg
IG1fbGF0ZXN0TWljVGltZVN0YW1wID0gc2FtcGxlVGltZTsKICAgICBtX21pY3JvcGhvbmVTYW1w
bGVCdWZmZXItPnNldFRpbWVzKGFkanVzdGVkSG9zdFRpbWUsIHNhbXBsZVRpbWUpOwogCi0gICAg
Zm9yIChhdXRvKiBjbGllbnQgOiBtX2NsaWVudHMpIHsKLSAgICAgICAgaWYgKGNsaWVudC0+aXNQ
cm9kdWNpbmdEYXRhKCkpCi0gICAgICAgICAgICBjbGllbnQtPmF1ZGlvU2FtcGxlc0F2YWlsYWJs
ZShNZWRpYVRpbWUoc2FtcGxlVGltZSwgbV9taWNyb3Bob25lUHJvY0Zvcm1hdC5zYW1wbGVSYXRl
KCkpLCBtX21pY3JvcGhvbmVTYW1wbGVCdWZmZXItPmJ1ZmZlckxpc3QoKSwgbV9taWNyb3Bob25l
UHJvY0Zvcm1hdCwgaW5OdW1iZXJGcmFtZXMpOwotICAgIH0KKyAgICBhdXRvIHZvbHVtZSA9IHRo
aXMtPnZvbHVtZSgpOworICAgIGlmICh2b2x1bWUgIT0gMS4wKQorICAgICAgICBtX21pY3JvcGhv
bmVTYW1wbGVCdWZmZXItPmFwcGx5R2Fpbih2b2x1bWUpOwogCisgICAgZm9yIChDb3JlQXVkaW9D
YXB0dXJlU291cmNlJiBjbGllbnQgOiBtX2NsaWVudHMpIHsKKyAgICAgICAgaWYgKGNsaWVudC5p
c1Byb2R1Y2luZ0RhdGEoKSkKKyAgICAgICAgICAgIGNsaWVudC5hdWRpb1NhbXBsZXNBdmFpbGFi
bGUoTWVkaWFUaW1lKHNhbXBsZVRpbWUsIG1fbWljcm9waG9uZVByb2NGb3JtYXQuc2FtcGxlUmF0
ZSgpKSwgbV9taWNyb3Bob25lU2FtcGxlQnVmZmVyLT5idWZmZXJMaXN0KCksIG1fbWljcm9waG9u
ZVByb2NGb3JtYXQsIGluTnVtYmVyRnJhbWVzKTsKKyAgICB9CiAgICAgcmV0dXJuIG5vRXJyOwog
fQogCkBAIC00MjcsMTQgKzQ0MCwxNCBAQCBPU1N0YXR1cyBDb3JlQXVkaW9TaGFyZWRVbml0Ojpt
aWNyb3Bob25lQ2FsbGJhY2sodm9pZCAqaW5SZWZDb24sIEF1ZGlvVW5pdFJlbmRlcgogICAgIHJl
dHVybiBkYXRhU291cmNlLT5wcm9jZXNzTWljcm9waG9uZVNhbXBsZXMoKmlvQWN0aW9uRmxhZ3Ms
ICppblRpbWVTdGFtcCwgaW5CdXNOdW1iZXIsIGluTnVtYmVyRnJhbWVzLCBpb0RhdGEpOwogfQog
Ci12b2lkIENvcmVBdWRpb1NoYXJlZFVuaXQ6OmNsZWFudXBBdWRpb1VuaXRzKCkKK3ZvaWQgQ29y
ZUF1ZGlvU2hhcmVkVW5pdDo6Y2xlYW51cEF1ZGlvVW5pdCgpCiB7CiAgICAgQVNTRVJUKG1fY2xp
ZW50cy5pc0VtcHR5KCkpOwogICAgIGlmIChtX2lvVW5pdEluaXRpYWxpemVkKSB7CiAgICAgICAg
IEFTU0VSVChtX2lvVW5pdCk7CiAgICAgICAgIGF1dG8gZXJyID0gQXVkaW9Vbml0VW5pbml0aWFs
aXplKG1faW9Vbml0KTsKICAgICAgICAgaWYgKGVycikKLSAgICAgICAgICAgIExPRyhNZWRpYSwg
IkNvcmVBdWRpb1NoYXJlZFVuaXQ6OmNsZWFudXBBdWRpb1VuaXRzKCVwKSBBdWRpb1VuaXRVbmlu
aXRpYWxpemUgZmFpbGVkIHdpdGggZXJyb3IgJWQgKCUuNHMpIiwgdGhpcywgKGludCllcnIsIChj
aGFyKikmZXJyKTsKKyAgICAgICAgICAgIExPRyhNZWRpYSwgIkNvcmVBdWRpb1NoYXJlZFVuaXQ6
OmNsZWFudXBBdWRpb1VuaXQoJXApIEF1ZGlvVW5pdFVuaW5pdGlhbGl6ZSBmYWlsZWQgd2l0aCBl
cnJvciAlZCAoJS40cykiLCB0aGlzLCAoaW50KWVyciwgKGNoYXIqKSZlcnIpOwogICAgICAgICBt
X2lvVW5pdEluaXRpYWxpemVkID0gZmFsc2U7CiAgICAgfQogCkBAIC00NjIsOSArNDc1LDkgQEAg
dm9pZCBDb3JlQXVkaW9TaGFyZWRVbml0OjpzdGFydFByb2R1Y2luZ0RhdGEoKQogCiAgICAgT1NT
dGF0dXMgZXJyOwogICAgIGlmICghbV9pb1VuaXQpIHsKLSAgICAgICAgZXJyID0gc2V0dXBBdWRp
b1VuaXRzKCk7CisgICAgICAgIGVyciA9IGNyZWF0ZUF1ZGlvVW5pdCgpOwogICAgICAgICBpZiAo
ZXJyKSB7Ci0gICAgICAgICAgICBjbGVhbnVwQXVkaW9Vbml0cygpOworICAgICAgICAgICAgY2xl
YW51cEF1ZGlvVW5pdCgpOwogICAgICAgICAgICAgQVNTRVJUKCFtX2lvVW5pdCk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTUzNyw3ICs1NTAsNyBAQCBPU1N0YXR1cyBDb3Jl
QXVkaW9TaGFyZWRVbml0OjpkZWZhdWx0SW5wdXREZXZpY2UodWludDMyX3QqIGRldmljZUlEKQog
ICAgIGF1dG8gZXJyID0gQXVkaW9Vbml0R2V0UHJvcGVydHkobV9pb1VuaXQsIGtBdWRpb091dHB1
dFVuaXRQcm9wZXJ0eV9DdXJyZW50RGV2aWNlLCBrQXVkaW9Vbml0U2NvcGVfR2xvYmFsLCBpbnB1
dEJ1cywgZGV2aWNlSUQsICZwcm9wZXJ0eVNpemUpOwogICAgIGlmIChlcnIpCiAgICAgICAgIExP
RyhNZWRpYSwgIkNvcmVBdWRpb1NoYXJlZFVuaXQ6OmRlZmF1bHRJbnB1dERldmljZSglcCkgdW5h
YmxlIHRvIGdldCBkZWZhdWx0IGlucHV0IGRldmljZSBJRCwgZXJyb3IgJWQgKCUuNHMpIiwgdGhp
cywgKGludCllcnIsIChjaGFyKikmZXJyKTsKLSAgICAKKwogICAgIHJldHVybiBlcnI7CiB9CiAK
QEAgLTYzMiwxNSArNjQ1LDExIEBAIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRp
ZXMmIENvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OmNhcGFiaWxpdGllcygpIGNvCiAgICAgaWYgKG1f
Y2FwYWJpbGl0aWVzKQogICAgICAgICByZXR1cm4gKm1fY2FwYWJpbGl0aWVzOwogCi0gICAgbV9z
dXBwb3J0ZWRDb25zdHJhaW50cy5zZXRTdXBwb3J0c0RldmljZUlkKHRydWUpOwotICAgIG1fc3Vw
cG9ydGVkQ29uc3RyYWludHMuc2V0U3VwcG9ydHNFY2hvQ2FuY2VsbGF0aW9uKHRydWUpOwotICAg
IG1fc3VwcG9ydGVkQ29uc3RyYWludHMuc2V0U3VwcG9ydHNWb2x1bWUodHJ1ZSk7Ci0KLSAgICAv
LyBGSVhNRTogZmluaXNoIHRoaXMuCi0gICAgbV9jYXBhYmlsaXRpZXMgPSBzdGQ6Om1ha2VfdW5p
cXVlPFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM+KG1fc3VwcG9ydGVkQ29uc3RyYWlu
dHMpOworICAgIG1fY2FwYWJpbGl0aWVzID0gc3RkOjptYWtlX3VuaXF1ZTxSZWFsdGltZU1lZGlh
U291cmNlQ2FwYWJpbGl0aWVzPihzZXR0aW5ncygpLnN1cHBvcnRlZENvbnN0cmFpbnRzKCkpOwog
ICAgIG1fY2FwYWJpbGl0aWVzLT5zZXREZXZpY2VJZChpZCgpKTsKICAgICBtX2NhcGFiaWxpdGll
cy0+c2V0RWNob0NhbmNlbGxhdGlvbihSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzOjpF
Y2hvQ2FuY2VsbGF0aW9uOjpSZWFkV3JpdGUpOwogICAgIG1fY2FwYWJpbGl0aWVzLT5zZXRWb2x1
bWUoQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSgwLjAsIDEuMCkpOworICAgIG1fY2FwYWJpbGl0aWVz
LT5zZXRTYW1wbGVSYXRlKENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UoODAwMCwgOTYwMDApKTsKIAog
ICAgIHJldHVybiAqbV9jYXBhYmlsaXRpZXM7CiB9CkBAIC02NTQsOCArNjYzLDE0IEBAIGNvbnN0
IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6c2V0
dGluZ3MoKSBjb25zdAogICAgICAgICBzZXR0aW5ncy5zZXREZXZpY2VJZChpZCgpKTsKICAgICAg
ICAgc2V0dGluZ3Muc2V0RWNob0NhbmNlbGxhdGlvbihlY2hvQ2FuY2VsbGF0aW9uKCkpOwogCi0g
ICAgICAgIG1fY3VycmVudFNldHRpbmdzID0gV1RGTW92ZShzZXR0aW5ncyk7CisgICAgICAgIFJl
YWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyBzdXBwb3J0ZWRDb25zdHJhaW50
czsKKyAgICAgICAgc3VwcG9ydGVkQ29uc3RyYWludHMuc2V0U3VwcG9ydHNEZXZpY2VJZCh0cnVl
KTsKKyAgICAgICAgc3VwcG9ydGVkQ29uc3RyYWludHMuc2V0U3VwcG9ydHNFY2hvQ2FuY2VsbGF0
aW9uKHRydWUpOworICAgICAgICBzdXBwb3J0ZWRDb25zdHJhaW50cy5zZXRTdXBwb3J0c1ZvbHVt
ZSh0cnVlKTsKKyAgICAgICAgc3VwcG9ydGVkQ29uc3RyYWludHMuc2V0U3VwcG9ydHNTYW1wbGVS
YXRlKHRydWUpOworICAgICAgICBzZXR0aW5ncy5zZXRTdXBwb3J0ZWRDb25zdHJhaW50cyhzdXBw
b3J0ZWRDb25zdHJhaW50cyk7CiAKKyAgICAgICAgbV9jdXJyZW50U2V0dGluZ3MgPSBXVEZNb3Zl
KHNldHRpbmdzKTsKICAgICB9CiAgICAgcmV0dXJuIG1fY3VycmVudFNldHRpbmdzLnZhbHVlKCk7
CiB9CkBAIC02NzcsNiArNjkyLDQ1IEBAIEF1ZGlvU291cmNlUHJvdmlkZXIqIENvcmVBdWRpb0Nh
cHR1cmVTb3VyY2U6OmF1ZGlvU291cmNlUHJvdmlkZXIoKQogICAgIHJldHVybiBtX2F1ZGlvU291
cmNlUHJvdmlkZXIuZ2V0KCk7CiB9CiAKK2Jvb2wgQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6YXBw
bHlTYW1wbGVSYXRlKGludCBzYW1wbGVSYXRlKQoreworICAgIC8vIEZJWE1FOiBXZSBzaG91bGQg
YmUgYWJsZSB0byBkZXNjcmliZSBzYW1wbGUgcmF0ZSBhcyBhIGRpc2NyZWV0IHJhbmdlIGNvbnN0
cmFpbnQgc28gdGhhdCB3ZSBvbmx5IGVudGVyIGhlcmUgd2l0aCB2YWx1ZXMgdGhhdCBjYW4gYmUg
YXBwbGllZC4KKyAgICBzd2l0Y2ggKHNhbXBsZVJhdGUpIHsKKyAgICBjYXNlIDgwMDA6CisgICAg
Y2FzZSAxNjAwMDoKKyAgICBjYXNlIDMyMDAwOgorICAgIGNhc2UgNDQxMDA6CisgICAgY2FzZSA0
ODAwMDoKKyAgICBjYXNlIDk2MDAwOgorICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHNjaGVkdWxlUmVjb25maWd1cmF0aW9uKCk7
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6YXBw
bHlFY2hvQ2FuY2VsbGF0aW9uKGJvb2wpCit7CisgICAgc2NoZWR1bGVSZWNvbmZpZ3VyYXRpb24o
KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpz
Y2hlZHVsZVJlY29uZmlndXJhdGlvbigpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
KyAgICBpZiAoIWlzUHJvZHVjaW5nRGF0YSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBzY2hl
ZHVsZURlZmVycmVkVGFzayhbdGhpc10geworICAgICAgICBpZiAoIWlzUHJvZHVjaW5nRGF0YSgp
KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBzdG9wUHJvZHVjaW5nRGF0YSgpOworICAg
ICAgICBjbGVhbnVwQXVkaW9Vbml0KCk7CisgICAgICAgIHN0YXJ0UHJvZHVjaW5nRGF0YSgpOwor
ICAgIH0pOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUo
TUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlU291cmNlLmgKaW5kZXggYTQwN2I1
MGM3MjAwZTIwMjg2NzM4ZDc1NjMxY2Q3M2I1MzY2MTc2Ny4uMmVkZjJiOWExNTBmMDdkMGE4Mjdj
YzdhZTcyMzk2ZjQ0MWM2MDEyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5oCkBA
IC01MSw3ICs1MSw3IEBAIGNsYXNzIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTsKIGNsYXNzIENhcHR1
cmVEZXZpY2VJbmZvOwogY2xhc3MgV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM7CiAKLWNs
YXNzIENvcmVBdWRpb0NhcHR1cmVTb3VyY2UgOiBwdWJsaWMgUmVhbHRpbWVNZWRpYVNvdXJjZSB7
CitjbGFzcyBDb3JlQXVkaW9DYXB0dXJlU291cmNlIGZpbmFsIDogcHVibGljIFJlYWx0aW1lTWVk
aWFTb3VyY2UgewogcHVibGljOgogCiAgICAgc3RhdGljIENhcHR1cmVTb3VyY2VPckVycm9yIGNy
ZWF0ZShjb25zdCBTdHJpbmcmIGRldmljZUlELCBjb25zdCBNZWRpYUNvbnN0cmFpbnRzKik7CkBA
IC03OSw5ICs3OSw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdG9wUHJvZHVjaW5nRGF0YSgpIGZp
bmFsOwogICAgIGJvb2wgaXNQcm9kdWNpbmdEYXRhKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9p
c1Byb2R1Y2luZ0RhdGE7IH0KIAotICAgIGJvb2wgYXBwbHlWb2x1bWUoZG91YmxlKSBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgYm9vbCBhcHBseVNhbXBsZVJhdGUoaW50KSBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgYm9vbCBhcHBseUVjaG9DYW5jZWxsYXRpb24oYm9vbCkg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgYXBwbHlWb2x1bWUoZG91YmxlKSBm
aW5hbCB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBhcHBseVNhbXBsZVJhdGUoaW50KSBmaW5h
bDsKKyAgICBib29sIGFwcGx5RWNob0NhbmNlbGxhdGlvbihib29sKSBmaW5hbDsKIAogICAgIGNv
bnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmIGNhcGFiaWxpdGllcygpIGNvbnN0
IGZpbmFsOwogICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgc2V0dGluZ3Mo
KSBjb25zdCBmaW5hbDsKQEAgLTk0LDcgKzk0LDYgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNT
dXNwZW5kZWQgeyBmYWxzZSB9OwogCiAgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8UmVhbHRp
bWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcz4gbV9jYXBhYmlsaXRpZXM7Ci0gICAgbXV0YWJsZSBS
ZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMgbV9zdXBwb3J0ZWRDb25zdHJh
aW50czsKICAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRp
bmdzPiBtX2N1cnJlbnRTZXR0aW5nczsKIAogICAgIFJlZlB0cjxXZWJBdWRpb1NvdXJjZVByb3Zp
ZGVyQVZGT2JqQz4gbV9hdWRpb1NvdXJjZVByb3ZpZGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJv
eHkuY3BwCmluZGV4IDljM2RlNzdlMjVmY2U4ZjA2NTI5ZDJiNjA0ZTUxNWI3NjNlMjhiNTMuLmI3
YzhhZThjZGI4MDM0ZTNmMTMzZjVhMTIwNzBhY2ViYzUyZmVjOTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1h
bmFnZXJQcm94eS5jcHAKQEAgLTEyNSw3ICsxMjUsNyBAQCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdl
clByb3h5Ojp+VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eSgpCiAgICAgbV9wcm9jZXNzLnJl
bW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94
eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKIH0KIAotdm9pZCBVc2VyTWVkaWFDYXB0dXJlTWFu
YWdlclByb3h5OjpjcmVhdGVNZWRpYVNvdXJjZUZvckNhcHR1cmVEZXZpY2VXaXRoQ29uc3RyYWlu
dHModWludDY0X3QgaWQsIGNvbnN0IFN0cmluZyYgZGV2aWNlSUQsIFdlYkNvcmU6OlJlYWx0aW1l
TWVkaWFTb3VyY2U6OlR5cGUgdHlwZSwgY29uc3QgTWVkaWFDb25zdHJhaW50c0RhdGEmIGNvbnN0
cmFpbnRzRGF0YSwgYm9vbCYgc3VjY2VlZGVkLCBTdHJpbmcmIGludmFsaWRDb25zdHJhaW50cykK
K3ZvaWQgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTo6Y3JlYXRlTWVkaWFTb3VyY2VGb3JD
YXB0dXJlRGV2aWNlV2l0aENvbnN0cmFpbnRzKHVpbnQ2NF90IGlkLCBjb25zdCBTdHJpbmcmIGRl
dmljZUlELCBXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlIHR5cGUsIGNvbnN0IE1l
ZGlhQ29uc3RyYWludHNEYXRhJiBjb25zdHJhaW50c0RhdGEsIGJvb2wmIHN1Y2NlZWRlZCwgU3Ry
aW5nJiBpbnZhbGlkQ29uc3RyYWludHMsIFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0
aW5ncyYgc2V0dGluZ3MpCiB7CiAgICAgQ2FwdHVyZVNvdXJjZU9yRXJyb3Igc291cmNlT3JFcnJv
cjsKICAgICBhdXRvIGNvbnN0cmFpbnRzID0gTWVkaWFDb25zdHJhaW50c0ltcGw6OmNyZWF0ZShN
ZWRpYUNvbnN0cmFpbnRzRGF0YShjb25zdHJhaW50c0RhdGEpKTsKQEAgLTE0Miw5ICsxNDIsMTEg
QEAgdm9pZCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5OjpjcmVhdGVNZWRpYVNvdXJjZUZv
ckNhcHR1cmVEZXZpY2VXaXRoQ29uc3RyYWkKICAgICB9CiAKICAgICBzdWNjZWVkZWQgPSAhIXNv
dXJjZU9yRXJyb3I7Ci0gICAgaWYgKHNvdXJjZU9yRXJyb3IpCi0gICAgICAgIG1fcHJveGllcy5z
ZXQoaWQsIHN0ZDo6bWFrZV91bmlxdWU8U291cmNlUHJveHk+KGlkLCAqdGhpcywgc291cmNlT3JF
cnJvci5zb3VyY2UoKSkpOwotICAgIGVsc2UKKyAgICBpZiAoc291cmNlT3JFcnJvcikgeworICAg
ICAgICBhdXRvIHNvdXJjZSA9IHNvdXJjZU9yRXJyb3Iuc291cmNlKCk7CisgICAgICAgIHNldHRp
bmdzID0gc291cmNlLT5zZXR0aW5ncygpOworICAgICAgICBtX3Byb3hpZXMuc2V0KGlkLCBzdGQ6
Om1ha2VfdW5pcXVlPFNvdXJjZVByb3h5PihpZCwgKnRoaXMsIFdURk1vdmUoc291cmNlKSkpOwor
ICAgIH0gZWxzZQogICAgICAgICBpbnZhbGlkQ29uc3RyYWludHMgPSBXVEZNb3ZlKHNvdXJjZU9y
RXJyb3IuZXJyb3JNZXNzYWdlKTsKIH0KIApAQCAtMTgzLDYgKzE4NSwyMSBAQCB2b2lkIFVzZXJN
ZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6OnNldEVuYWJsZWQodWludDY0X3QgaWQsIGJvb2wgZW5h
YmxlZCkKICAgICAgICAgaXRlci0+dmFsdWUtPnNvdXJjZSgpLnNldEVuYWJsZWQoZW5hYmxlZCk7
CiB9CiAKK3ZvaWQgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTo6YXBwbHlDb25zdHJhaW50
cyh1aW50NjRfdCBpZCwgY29uc3QgV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50c0RhdGEmIGNvbnN0
cmFpbnRzRGF0YSkKK3sKKyAgICBhdXRvIGNvbnN0cmFpbnRzID0gTWVkaWFDb25zdHJhaW50c0lt
cGw6OmNyZWF0ZShNZWRpYUNvbnN0cmFpbnRzRGF0YShjb25zdHJhaW50c0RhdGEpKTsKKyAgICBh
dXRvIGl0ZXIgPSBtX3Byb3hpZXMuZmluZChpZCk7CisgICAgaWYgKGl0ZXIgPT0gbV9wcm94aWVz
LmVuZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvJiBzb3VyY2UgPSBpdGVyLT52YWx1
ZS0+c291cmNlKCk7CisgICAgYXV0byByZXN1bHQgPSBzb3VyY2UuYXBwbHlDb25zdHJhaW50cyhj
b25zdHJhaW50cyk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIG1fcHJvY2Vzcy5zZW5kKE1l
c3NhZ2VzOjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6QXBwbHlDb25zdHJhaW50c1N1Y2NlZWRl
ZChpZCwgc291cmNlLnNldHRpbmdzKCkpLCAwKTsKKyAgICBlbHNlCisgICAgICAgIG1fcHJvY2Vz
cy5zZW5kKE1lc3NhZ2VzOjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6QXBwbHlDb25zdHJhaW50
c0ZhaWxlZChpZCwgcmVzdWx0LnZhbHVlKCkuZmlyc3QsIHJlc3VsdC52YWx1ZSgpLnNlY29uZCks
IDApOworfQorCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmgKaW5kZXggNDEz
OWRiMjRkNDc1MjA5ZWMzZTdjZDNjYmY3YmQ4MzRhMjc4Y2JjZS4uMmE1MWQ3YzI1YmI1Y2JlNzA2
Njg1NDZmOGU2NDYwMGQ4ZTliNWZiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5oCkBAIC00
OSwxMiArNDksMTMgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVN5
bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0
cjxJUEM6OkVuY29kZXI+JikgZmluYWw7CiAKLSAgICB2b2lkIGNyZWF0ZU1lZGlhU291cmNlRm9y
Q2FwdHVyZURldmljZVdpdGhDb25zdHJhaW50cyh1aW50NjRfdCBpZCwgY29uc3QgU3RyaW5nJiBk
ZXZpY2VJRCwgV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSwgY29uc3QgV2ViQ29y
ZTo6TWVkaWFDb25zdHJhaW50c0RhdGEmLCBib29sJiBzdWNjZWVkZWQsIFN0cmluZyYgaW52YWxp
ZENvbnN0cmFpbnRzKTsKKyAgICB2b2lkIGNyZWF0ZU1lZGlhU291cmNlRm9yQ2FwdHVyZURldmlj
ZVdpdGhDb25zdHJhaW50cyh1aW50NjRfdCBpZCwgY29uc3QgU3RyaW5nJiBkZXZpY2VJRCwgV2Vi
Q29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSwgY29uc3QgV2ViQ29yZTo6TWVkaWFDb25z
dHJhaW50c0RhdGEmLCBib29sJiBzdWNjZWVkZWQsIFN0cmluZyYgaW52YWxpZENvbnN0cmFpbnRz
LCBXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmKTsKICAgICB2b2lkIHN0YXJ0
UHJvZHVjaW5nRGF0YSh1aW50NjRfdCk7CiAgICAgdm9pZCBzdG9wUHJvZHVjaW5nRGF0YSh1aW50
NjRfdCk7CiAgICAgdm9pZCBjYXBhYmlsaXRpZXModWludDY0X3QsIFdlYkNvcmU6OlJlYWx0aW1l
TWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmKTsKICAgICB2b2lkIHNldE11dGVkKHVpbnQ2NF90LCBi
b29sKTsKICAgICB2b2lkIHNldEVuYWJsZWQodWludDY0X3QsIGJvb2wpOworICAgIHZvaWQgYXBw
bHlDb25zdHJhaW50cyh1aW50NjRfdCwgY29uc3QgV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50c0Rh
dGEmKTsKIAogICAgIGNsYXNzIFNvdXJjZVByb3h5OwogICAgIGZyaWVuZCBjbGFzcyBTb3VyY2VQ
cm94eTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVk
aWFDYXB0dXJlTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KaW5kZXgg
MWZjMDkzZTViMzA5NmY1MTBkZGU4ZmY0YWNlNjRmZDE0MDEzYjdhYS4uYTNjODE0ZmViOWMwODJl
MzA1NTRmYzM1OWI5NTZhOGZlZmUwZGFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2Vy
UHJveHkubWVzc2FnZXMuaW4KQEAgLTIyLDEwICsyMiwxMSBAQAogIyBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAKIG1lc3NhZ2VzIC0+IFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJv
eHkgewotICAgIENyZWF0ZU1lZGlhU291cmNlRm9yQ2FwdHVyZURldmljZVdpdGhDb25zdHJhaW50
cyh1aW50NjRfdCBpZCwgU3RyaW5nIGRldmljZUlELCBXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291
cmNlOjpUeXBlIHR5cGUsIHN0cnVjdCBXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnRzRGF0YSBjb25z
dHJhaW50cykgLT4gKGJvb2wgc3VjY2VzcywgU3RyaW5nIGludmFsaWRDb25zdHJhaW50cykKKyAg
ICBDcmVhdGVNZWRpYVNvdXJjZUZvckNhcHR1cmVEZXZpY2VXaXRoQ29uc3RyYWludHModWludDY0
X3QgaWQsIFN0cmluZyBkZXZpY2VJRCwgV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlw
ZSB0eXBlLCBzdHJ1Y3QgV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50c0RhdGEgY29uc3RyYWludHMp
IC0+IChib29sIHN1Y2Nlc3MsIFN0cmluZyBpbnZhbGlkQ29uc3RyYWludHMsIFdlYkNvcmU6OlJl
YWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyBzZXR0aW5ncykKICAgICBTdGFydFByb2R1Y2luZ0Rh
dGEodWludDY0X3QgaWQpCiAgICAgU3RvcFByb2R1Y2luZ0RhdGEodWludDY0X3QgaWQpCiAgICAg
Q2FwYWJpbGl0aWVzKHVpbnQ2NF90IGlkKSAtPiAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJj
ZUNhcGFiaWxpdGllcyBjYXBhYmlsaXRpZXMpCiAgICAgU2V0TXV0ZWQodWludDY0X3QgaWQsIGJv
b2wgbXV0ZWQpCiAgICAgU2V0RW5hYmxlZCh1aW50NjRfdCBpZCwgYm9vbCBlbmFibGVkKQorICAg
IEFwcGx5Q29uc3RyYWludHModWludDY0X3QgaWQsIHN0cnVjdCBXZWJDb3JlOjpNZWRpYUNvbnN0
cmFpbnRzRGF0YSBjb25zdHJhaW50cykKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHAKaW5kZXggNGQ0
ZjAyNjJmZDliMTE4M2I4MDQzOTA5NGU1ZjMxNGNmMDZlNTQ1YS4uYTlkNTdmNTk1ODU0NGViNDQz
YmI2MmVhZDlhOWJkODc0MTQwNDViYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHAKQEAgLTczLDkg
KzczLDkgQEAgcHVibGljOgogICAgIH0KIAogICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VT
ZXR0aW5ncyYgc2V0dGluZ3MoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3NldHRpbmdzOyB9Ci0g
ICAgdm9pZCBzZXRTZXR0aW5ncyhjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNl
dHRpbmdzKQorICAgIHZvaWQgc2V0U2V0dGluZ3MoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdz
JiYgc2V0dGluZ3MpCiAgICAgewotICAgICAgICBtX3NldHRpbmdzID0gc2V0dGluZ3M7CisgICAg
ICAgIG1fc2V0dGluZ3MgPSBXVEZNb3ZlKHNldHRpbmdzKTsKICAgICAgICAgc2V0dGluZ3NEaWRD
aGFuZ2UoKTsKICAgICB9CiAKQEAgLTExNCw3ICsxMTQsMjAgQEAgcHVibGljOgogICAgICAgICAg
ICAgb2JzZXJ2ZXItPmF1ZGlvU2FtcGxlc0F2YWlsYWJsZSh0aW1lLCBhdWRpb0RhdGEsIG1fZGVz
Y3JpcHRpb24sIG51bWJlck9mRnJhbWVzKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0
TXV0ZWQoYm9vbCBtdXRlZCkKKyAgICB2b2lkIGFwcGx5Q29uc3RyYWludHNTdWNjZWVkZWQoY29u
c3QgV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBzZXR0aW5ncykKKyAgICB7
CisgICAgICAgIGF1dG8gY2FsbGJhY2tzID0gbV9wZW5kaW5nQXBwbHlDb25zdHJhaW50c0NhbGxi
YWNrcy50YWtlRmlyc3QoKTsKKyAgICAgICAgc2V0U2V0dGluZ3MoV2ViQ29yZTo6UmVhbHRpbWVN
ZWRpYVNvdXJjZVNldHRpbmdzKHNldHRpbmdzKSk7CisgICAgICAgIGNhbGxiYWNrcy5zdWNjZXNz
SGFuZGxlcigpOworICAgIH0KKworICAgIHZvaWQgYXBwbHlDb25zdHJhaW50c0ZhaWxlZChjb25z
dCBTdHJpbmcmIGZhaWxlZENvbnN0cmFpbnQsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQor
ICAgIHsKKyAgICAgICAgYXV0byBjYWxsYmFja3MgPSBtX3BlbmRpbmdBcHBseUNvbnN0cmFpbnRz
Q2FsbGJhY2tzLnRha2VGaXJzdCgpOworICAgICAgICBjYWxsYmFja3MuZmFpbHVyZUhhbmRsZXIo
ZmFpbGVkQ29uc3RyYWludCwgZXJyb3JNZXNzYWdlKTsKKyAgICB9CisKKyAgICB2b2lkIHNldE11
dGVkKGJvb2wgbXV0ZWQpIGZpbmFsCiAgICAgewogICAgICAgICBpZiAobV9tdXRlZCA9PSBtdXRl
ZCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTEyMyw3ICsxMzYsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIG1fbWFuYWdlci5zZXRNdXRlZChtX2lkLCBtX211dGVkKTsKICAgICB9CiAKLSAgICB2aXJ0
dWFsIHZvaWQgc2V0RW5hYmxlZChib29sIGVuYWJsZWQpCisgICAgdm9pZCBzZXRFbmFibGVkKGJv
b2wgZW5hYmxlZCkgZmluYWwKICAgICB7CiAgICAgICAgIGlmIChtX2VuYWJsZWQgPT0gZW5hYmxl
ZCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTEzMiw2ICsxNDUsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIG1fbWFuYWdlci5zZXRFbmFibGVkKG1faWQsIG1fZW5hYmxlZCk7CiAgICAgfQogCitwcml2
YXRlOgogICAgIHZvaWQgc3RhcnRQcm9kdWNpbmdEYXRhKCkgZmluYWwgeyBtX21hbmFnZXIuc3Rh
cnRQcm9kdWNpbmdEYXRhKG1faWQpOyB9CiAgICAgdm9pZCBzdG9wUHJvZHVjaW5nRGF0YSgpIGZp
bmFsIHsgbV9tYW5hZ2VyLnN0b3BQcm9kdWNpbmdEYXRhKG1faWQpOyB9CiAgICAgYm9vbCBpc0Nh
cHR1cmVTb3VyY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CkBAIC0xNDUsMTEgKzE1
OSwxNSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX2F1ZGlvU291cmNlUHJvdmlkZXIuZ2V0
KCk7CiAgICAgfQogCi1wcml2YXRlOgogICAgIC8vIFJlYWx0aW1lTWVkaWFTb3VyY2UKICAgICB2
b2lkIGJlZ2luQ29uZmlndXJhdGlvbigpIGZpbmFsIHsgfQogICAgIHZvaWQgY29tbWl0Q29uZmln
dXJhdGlvbigpIGZpbmFsIHsgfQogCisgICAgdm9pZCBhcHBseUNvbnN0cmFpbnRzKGNvbnN0IFdl
YkNvcmU6Ok1lZGlhQ29uc3RyYWludHMmIGNvbnN0cmFpbnRzLCBTdWNjZXNzSGFuZGxlciYmIHN1
Y2Nlc3NIYW5kbGVyLCBGYWlsdXJlSGFuZGxlciYmIGZhaWx1cmVIYW5kbGVyKSBmaW5hbCB7Cisg
ICAgICAgIG1fbWFuYWdlci5hcHBseUNvbnN0cmFpbnRzKG1faWQsIGNvbnN0cmFpbnRzKTsKKyAg
ICAgICAgbV9wZW5kaW5nQXBwbHlDb25zdHJhaW50c0NhbGxiYWNrcy5hcHBlbmQoeyBXVEZNb3Zl
KHN1Y2Nlc3NIYW5kbGVyKSwgV1RGTW92ZShmYWlsdXJlSGFuZGxlcil9KTsKKyAgICB9CisKICAg
ICB1aW50NjRfdCBtX2lkOwogICAgIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyJiBtX21hbmFnZXI7
CiAgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRp
ZXM+IG1fY2FwYWJpbGl0aWVzOwpAQCAtMTU3LDYgKzE3NSwxMiBAQCBwcml2YXRlOgogICAgIENB
QXVkaW9TdHJlYW1EZXNjcmlwdGlvbiBtX2Rlc2NyaXB0aW9uOwogICAgIENBUmluZ0J1ZmZlciBt
X3JpbmdCdWZmZXI7CiAgICAgUmVmUHRyPFdlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDPiBt
X2F1ZGlvU291cmNlUHJvdmlkZXI7CisKKyAgICBzdHJ1Y3QgQXBwbHlDb25zdHJhaW50c0NhbGxi
YWNrIHsKKyAgICAgICAgU3VjY2Vzc0hhbmRsZXIgc3VjY2Vzc0hhbmRsZXI7CisgICAgICAgIEZh
aWx1cmVIYW5kbGVyIGZhaWx1cmVIYW5kbGVyOworICAgIH07CisgICAgRGVxdWU8QXBwbHlDb25z
dHJhaW50c0NhbGxiYWNrPiBtX3BlbmRpbmdBcHBseUNvbnN0cmFpbnRzQ2FsbGJhY2tzOwogfTsK
IAogVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyKFdlYlBy
b2Nlc3MqIHByb2Nlc3MpCkBAIC0xOTQsMTEgKzIxOCwxMyBAQCBXZWJDb3JlOjpDYXB0dXJlU291
cmNlT3JFcnJvciBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6Y3JlYXRlQ2FwdHVyZVNvdXJjZShj
b25zdAogICAgIGNvbnN0cmFpbnRzRGF0YS5pc1ZhbGlkID0gY29uc3RyYWludHMtPmlzVmFsaWQo
KTsKICAgICBib29sIHN1Y2NlZWRlZDsKIAorICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5n
cyBzZXR0aW5nczsKICAgICBTdHJpbmcgZXJyb3JNZXNzYWdlOwotICAgIGlmICghbV9wcm9jZXNz
LnNlbmRTeW5jKE1lc3NhZ2VzOjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5OjpDcmVhdGVN
ZWRpYVNvdXJjZUZvckNhcHR1cmVEZXZpY2VXaXRoQ29uc3RyYWludHMoaWQsIGRldmljZUlELCBz
b3VyY2VUeXBlLCBjb25zdHJhaW50c0RhdGEpLCBNZXNzYWdlczo6VXNlck1lZGlhQ2FwdHVyZU1h
bmFnZXJQcm94eTo6Q3JlYXRlTWVkaWFTb3VyY2VGb3JDYXB0dXJlRGV2aWNlV2l0aENvbnN0cmFp
bnRzOjpSZXBseShzdWNjZWVkZWQsIGVycm9yTWVzc2FnZSksIDApKQorICAgIGlmICghbV9wcm9j
ZXNzLnNlbmRTeW5jKE1lc3NhZ2VzOjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5OjpDcmVh
dGVNZWRpYVNvdXJjZUZvckNhcHR1cmVEZXZpY2VXaXRoQ29uc3RyYWludHMoaWQsIGRldmljZUlE
LCBzb3VyY2VUeXBlLCBjb25zdHJhaW50c0RhdGEpLCBNZXNzYWdlczo6VXNlck1lZGlhQ2FwdHVy
ZU1hbmFnZXJQcm94eTo6Q3JlYXRlTWVkaWFTb3VyY2VGb3JDYXB0dXJlRGV2aWNlV2l0aENvbnN0
cmFpbnRzOjpSZXBseShzdWNjZWVkZWQsIGVycm9yTWVzc2FnZSwgc2V0dGluZ3MpLCAwKSkKICAg
ICAgICAgcmV0dXJuIFdURk1vdmUoZXJyb3JNZXNzYWdlKTsKIAogICAgIGF1dG8gc291cmNlID0g
YWRvcHRSZWYoKm5ldyBTb3VyY2UoU3RyaW5nOjpudW1iZXIoaWQpLCBzb3VyY2VUeXBlLCBlbXB0
eVN0cmluZygpLCBpZCwgKnRoaXMpKTsKKyAgICBzb3VyY2UtPnNldFNldHRpbmdzKFdURk1vdmUo
c2V0dGluZ3MpKTsKICAgICBtX3NvdXJjZXMuc2V0KGlkLCBzb3VyY2UuY29weVJlZigpKTsKICAg
ICByZXR1cm4gV2ViQ29yZTo6Q2FwdHVyZVNvdXJjZU9yRXJyb3IoV1RGTW92ZShzb3VyY2UpKTsK
IH0KQEAgLTIyNCw3ICsyNTAsNyBAQCB2b2lkIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOjpzb3Vy
Y2VFbmFibGVkQ2hhbmdlZCh1aW50NjRfdCBpZCwgYm9vbCBlbmFibGVkKQogdm9pZCBVc2VyTWVk
aWFDYXB0dXJlTWFuYWdlcjo6c291cmNlU2V0dGluZ3NDaGFuZ2VkKHVpbnQ2NF90IGlkLCBjb25z
dCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdzKQogewogICAgIEFTU0VSVCht
X3NvdXJjZXMuY29udGFpbnMoaWQpKTsKLSAgICBtX3NvdXJjZXMuZ2V0KGlkKS0+c2V0U2V0dGlu
Z3Moc2V0dGluZ3MpOworICAgIG1fc291cmNlcy5nZXQoaWQpLT5zZXRTZXR0aW5ncyhSZWFsdGlt
ZU1lZGlhU291cmNlU2V0dGluZ3Moc2V0dGluZ3MpKTsKIH0KIAogdm9pZCBVc2VyTWVkaWFDYXB0
dXJlTWFuYWdlcjo6c3RvcmFnZUNoYW5nZWQodWludDY0X3QgaWQsIGNvbnN0IFNoYXJlZE1lbW9y
eTo6SGFuZGxlJiBoYW5kbGUsIGNvbnN0IFdlYkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlv
biYgZGVzY3JpcHRpb24sIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKQpAQCAtMjc0LDYgKzMwMCwz
MCBAQCB2b2lkIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOjpzZXRFbmFibGVkKHVpbnQ2NF90IGlk
LCBib29sIGVuYWJsZWQpCiAgICAgbV9wcm9jZXNzLnNlbmQoTWVzc2FnZXM6OlVzZXJNZWRpYUNh
cHR1cmVNYW5hZ2VyUHJveHk6OlNldEVuYWJsZWQoaWQsIGVuYWJsZWQpLCAwKTsKIH0KIAordm9p
ZCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6YXBwbHlDb25zdHJhaW50cyh1aW50NjRfdCBpZCwg
Y29uc3QgV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50cyYgY29uc3RyYWludHMpCit7CisgICAgTWVk
aWFDb25zdHJhaW50c0RhdGEgY29uc3RyYWludHNEYXRhOworICAgIGNvbnN0cmFpbnRzRGF0YS5t
YW5kYXRvcnlDb25zdHJhaW50cyA9IGNvbnN0cmFpbnRzLm1hbmRhdG9yeUNvbnN0cmFpbnRzKCk7
CisgICAgY29uc3RyYWludHNEYXRhLmFkdmFuY2VkQ29uc3RyYWludHMgPSBjb25zdHJhaW50cy5h
ZHZhbmNlZENvbnN0cmFpbnRzKCk7CisgICAgY29uc3RyYWludHNEYXRhLmlzVmFsaWQgPSBjb25z
dHJhaW50cy5pc1ZhbGlkKCk7CisKKyAgICBtX3Byb2Nlc3Muc2VuZChNZXNzYWdlczo6VXNlck1l
ZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTo6QXBwbHlDb25zdHJhaW50cyhpZCwgY29uc3RyYWludHNE
YXRhKSwgMCk7Cit9CisKK3ZvaWQgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OmFwcGx5Q29uc3Ry
YWludHNTdWNjZWVkZWQodWludDY0X3QgaWQsIGNvbnN0IFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFT
b3VyY2VTZXR0aW5ncyYgc2V0dGluZ3MpCit7CisgICAgQVNTRVJUKG1fc291cmNlcy5jb250YWlu
cyhpZCkpOworICAgIGF1dG8mIHNvdXJjZSA9ICptX3NvdXJjZXMuZ2V0KGlkKTsKKyAgICBzb3Vy
Y2UuYXBwbHlDb25zdHJhaW50c1N1Y2NlZWRlZChzZXR0aW5ncyk7Cit9CisKK3ZvaWQgVXNlck1l
ZGlhQ2FwdHVyZU1hbmFnZXI6OmFwcGx5Q29uc3RyYWludHNGYWlsZWQodWludDY0X3QgaWQsIGNv
bnN0IFN0cmluZyYgZmFpbGVkQ29uc3RyYWludCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQorewor
ICAgIEFTU0VSVChtX3NvdXJjZXMuY29udGFpbnMoaWQpKTsKKyAgICBhdXRvJiBzb3VyY2UgPSAq
bV9zb3VyY2VzLmdldChpZCk7CisgICAgc291cmNlLmFwcGx5Q29uc3RyYWludHNGYWlsZWQoZmFp
bGVkQ29uc3RyYWludCwgbWVzc2FnZSk7Cit9CisKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2Vy
LmgKaW5kZXggYThhOTNhYmRlZTVlOGVkYzZkMDIxOThiNTEwNjk0OWM1ZTQ4OWI2Ny4uYzkwZjZk
ZWM5NGY2Yjc5MjUyMzVhNDMzN2UyYjJkY2UzNzA5ZTRkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuaApA
QCAtNzUsNiArNzUsOSBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3Vy
Y2VDYXBhYmlsaXRpZXMmJiBjYXBhYmlsaXRpZXModWludDY0X3QpOwogICAgIHZvaWQgc2V0TXV0
ZWQodWludDY0X3QsIGJvb2wpOwogICAgIHZvaWQgc2V0RW5hYmxlZCh1aW50NjRfdCwgYm9vbCk7
CisgICAgdm9pZCBhcHBseUNvbnN0cmFpbnRzKHVpbnQ2NF90LCBjb25zdCBXZWJDb3JlOjpNZWRp
YUNvbnN0cmFpbnRzJik7CisgICAgdm9pZCBhcHBseUNvbnN0cmFpbnRzU3VjY2VlZGVkKHVpbnQ2
NF90LCBjb25zdCBXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmKTsKKyAgICB2
b2lkIGFwcGx5Q29uc3RyYWludHNGYWlsZWQodWludDY0X3QsIGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYpOwogCiAgICAgY2xhc3MgU291cmNlOwogICAgIGZyaWVuZCBjbGFzcyBTb3VyY2U7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNh
cHR1cmVNYW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2Nv
YS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5tZXNzYWdlcy5pbgppbmRleCBlZWMwNTY1YzY4NjRh
NDZiMDBlOWY4ZmI5MTBjMThjODllOWU0YTEzLi4xZmMxZjAyOTJkNTVlODUyZTA1M2Q1MmI3MzA3
NTRmYzQ0YjQxYmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29h
L1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIubWVzc2FnZXMuaW4KQEAg
LTI4LDQgKzI4LDYgQEAgbWVzc2FnZXMgLT4gVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIgewogICAg
IFNvdXJjZVNldHRpbmdzQ2hhbmdlZCh1aW50NjRfdCBpZCwgV2ViQ29yZTo6UmVhbHRpbWVNZWRp
YVNvdXJjZVNldHRpbmdzIHNldHRpbmdzKQogICAgIFN0b3JhZ2VDaGFuZ2VkKHVpbnQ2NF90IGlk
LCBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SGFuZGxlIHN0b3JhZ2VIYW5kbGUsIFdlYkNvcmU6OkNB
QXVkaW9TdHJlYW1EZXNjcmlwdGlvbiBkZXNjcmlwdGlvbiwgdWludDY0X3QgbnVtYmVyT2ZGcmFt
ZXMpCiAgICAgQXVkaW9TYW1wbGVzQXZhaWxhYmxlKHVpbnQ2NF90IGlkLCBNZWRpYVRpbWUgdGlt
ZSwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMsIHVpbnQ2NF90IHN0YXJ0RnJhbWUsIHVpbnQ2NF90
IGVuZEZyYW1lKQorICAgIEFwcGx5Q29uc3RyYWludHNTdWNjZWVkZWQodWludDY0X3QgaWQsIFdl
YkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyBzZXR0aW5ncykKKyAgICBBcHBseUNv
bnN0cmFpbnRzRmFpbGVkKHVpbnQ2NF90IGlkLCBTdHJpbmcgZmFpbGVkQ29uc3RyYWludCwgU3Ry
aW5nIG1lc3NhZ2UpCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309216</attachid>
            <date>2017-05-05 14:54:25 -0700</date>
            <delta_ts>2017-05-05 23:25:13 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-171633-20170505145424.patch</filename>
            <type>text/plain</type>
            <size>38370</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2Mjc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTNlNDIzYThiY2Q4OWQx
MDY4MzBhZGI5ZjExNTgzYTEwMzZkNTc5Yy4uNGZhMmRkZWVjMTMzZmZlMWVkOTZjYjkyYTZiMDg4
OWQ2MGZkMGViYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDE3LTA1LTA0ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3Ig
cmVhZGluZyBhbmQgd3JpdGluZyBzZXR0aW5ncyBmcm9tIFVJUHJvY2VzcyBhdWRpbyBjYXB0dXJl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzE2MzMK
KworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgQ292ZXJlZCBi
eSBtYW51YWwgdGVzdGluZyBhbmQgZXhpc3RpbmcgdGVzdCBzZXRzLgorCisgICAgICAgIE1vdmlu
ZyBzdWNjZXNzL2ZhaWx1cmUgY2FsbGJhY2tzIGZvciBhcHBseUNvbnN0cmFpbnRzLgorICAgICAg
ICBNYWtpbmcgbWFpbiBSZWFsdGltZU1lZGlhU291cmNlOjphcHBseUNvbnN0cmFpbnRzIHZpcnR1
YWwgc28gdGhhdCBXZWJQcm9jZXNzIHNvdXJjZSBwcm94aWVzIGNhbiBpbXBsZW1lbnQgaXQgYnkK
KyAgICAgICAgZG9pbmcgYW4gSVBDIGNhbGwgZGlyZWN0bHkuIERvaW5nIHNvIGZvciBVSVByb2Nl
c3MgQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS4KKworICAgICAgICBBZGRpbmcgc3VwcG9ydCBmb3Ig
dm9sdW1lIHRvIENvcmVBdWRpb0NhcHR1cmVTb3VyY2UgYnkgYXBwbHlpbmcgZ2FpbiBwb3N0LWNh
cHR1cmluZy4KKyAgICAgICAgQWRkaW5nIHN1cHBvcnQgZm9yIHRvZ2dsaW5nIGVjaG8gY2FuY2Vs
bGF0aW9uIGluIENvcmVBdWRpb0NhcHR1cmVTb3VyY2UuCisgICAgICAgIEFkZGluZyBzdXBwb3J0
IHRvIGNoYW5nZSBlY2hvIGNhbmNlbGxhdGlvbiBhbmQgc2FtcGxlIHJhdGUgYnkgc2NoZWR1bGlu
ZyBhIHJlY29uZmlndXJhdGlvbiBvZiB0aGUgYXVkaW8gdW5pdC4KKyAgICAgICAgVG8gZG8gc28s
IHdlIHN0b3AgcHJvZHVjaW5nIGRhdGEsIGRlbGV0ZSB0aGUgYXVkaW8gdW5pdCBhbmQgcmVzdGFy
dCBwcm9kdWNpbmcgZGF0YS4KKyAgICAgICAgUmVtb3ZpbmcgQ29yZUF1ZGlvQ2FwdHVyZVNvdXJj
ZTo6c3VwcG9ydGVkQ29uc3RyYWludHMgYXMgaXQgaXMgcmVkdW5kYW50IHdpdGgKKyAgICAgICAg
UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpzdXBwb3J0ZWRDb25zdHJhaW50cy4KKworICAg
ICAgICBTZXR0aW5nIHNhbXBsZSByYXRlIG9ubHkgdG8gdGhlIGZvbGxvd2luZyB2YWx1ZXM6IDgw
MDAsIDE2MDAwLCAzMjAwMCwgNDQxMDAsIDQ4MDAwLgorCisgICAgICAgICogTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3Ry
ZWFtVHJhY2s6OmFwcGx5Q29uc3RyYWludHMpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U3RyZWFtVHJhY2tQcml2YXRlOjphcHBseUNvbnN0cmFpbnRzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5oOgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6YXBwbHlDb25zdHJhaW50cyk6CisgICAgICAgICogcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5oOgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5oOgorICAgICAgICAo
V2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpzdXBwb3J0ZWRDb25zdHJhaW50
cyk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVT
b3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6fkNv
cmVBdWRpb0NhcHR1cmVTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q29yZUF1ZGlvQ2FwdHVy
ZVNvdXJjZTo6cHJvY2Vzc01pY3JvcGhvbmVTYW1wbGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
cmVBdWRpb0NhcHR1cmVTb3VyY2U6OmNsZWFudXBBdWRpb1VuaXQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6Y3JlYXRlQXVkaW9Vbml0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OmNvbmZpZ3VyZUF1ZGlvVW5pdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpzdGFydFByb2R1Y2luZ0RhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6Y2FwYWJpbGl0aWVz
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OnNldHRpbmdzKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OmFwcGx5U2FtcGxlUmF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb3JlQXVkaW9DYXB0dXJlU291cmNlOjphcHBseUVjaG9D
YW5jZWxsYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6
c2NoZWR1bGVSZWNvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q29yZUF1ZGlvQ2Fw
dHVyZVNvdXJjZTo6Y2xlYW51cEF1ZGlvVW5pdHMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6c2V0dXBBdWRpb1VuaXRzKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5o
OgorCiAyMDE3LTA1LTA1ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5j
b20+CiAKICAgICAgICAgQ3Jhc2ggaW4gSW1hZ2VGcmFtZUNhY2hlOjpkZWNvZGVkU2l6ZUNoYW5n
ZWQoKSBhZnRlciBpbWFnZSBsb2FkIGNhbmNlbGxhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDA0ZTk1OGRm
MWY2NjQ0ODkzZTM5ZGNkNTgwM2QxMGQxMDk2M2VhMWQuLjExYWRhOWQyM2FiNWZiNDU1NGZmMDNk
OTU4Njc3ZTY1MjU0N2ZiYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAxNy0wNS0w
NCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBv
cnQgZm9yIHJlYWRpbmcgYW5kIHdyaXRpbmcgc2V0dGluZ3MgZnJvbSBVSVByb2Nlc3MgYXVkaW8g
Y2FwdHVyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTcxNjMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAgICog
VUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5OjpjcmVhdGVNZWRpYVNvdXJj
ZUZvckNhcHR1cmVEZXZpY2VXaXRoQ29uc3RyYWludHMpOgorICAgICAgICAoV2ViS2l0OjpVc2Vy
TWVkaWFDYXB0dXJlTWFuYWdlclByb3h5OjphcHBseUNvbnN0cmFpbnRzKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmlu
OgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6U291cmNlOjpzZXRT
ZXR0aW5ncyk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOjpTb3Vy
Y2U6OmFwcGx5Q29uc3RyYWludHNTdWNjZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVk
aWFDYXB0dXJlTWFuYWdlcjo6U291cmNlOjphcHBseUNvbnN0cmFpbnRzRmFpbGVkKToKKyAgICAg
ICAgKFdlYktpdDo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OmNyZWF0ZUNhcHR1cmVTb3VyY2Up
OgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6c291cmNlU2V0dGlu
Z3NDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OmFw
cGx5Q29uc3RyYWludHMpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdl
cjo6YXBwbHlDb25zdHJhaW50c1N1Y2NlZWRlZCk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRp
YUNhcHR1cmVNYW5hZ2VyOjphcHBseUNvbnN0cmFpbnRzRmFpbGVkKToKKyAgICAgICAgKFdlYktp
dDo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OlNvdXJjZTo6c2V0TXV0ZWQpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6U291cmNlOjpzZXRFbmFi
bGVkKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1
cmVNYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJl
TWFuYWdlci5tZXNzYWdlcy5pbjoKKwogMjAxNy0wNS0wNSAgSm9obiBXaWxhbmRlciAgPHdpbGFu
ZGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXNvdXJjZSBMb2FkIFN0YXRpc3RpY3M6IERvbid0
IGNvdmVyIGluLW1lbW9yeSBhbmQgZGlzayBjYWNoZXMgZHVyaW5nIHdlYnNpdGUgZGF0YSByZW1v
dmFsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
U3RyZWFtVHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbVRyYWNrLmNwcAppbmRleCA2YTZiYTUxNWFlN2VjNDg0MzNiNDE0M2Q3ZWJmYTk5MjNh
MjJlYzRkLi5lNTU0YmM0YzY2Mzg0MDExNTFjNTBlNjc1YWRlMzMzNTI0YjQ2N2NiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2su
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1U
cmFjay5jcHAKQEAgLTI2OSw3ICsyNjksNyBAQCB2b2lkIE1lZGlhU3RyZWFtVHJhY2s6OmFwcGx5
Q29uc3RyYWludHMoY29uc3Qgc3RkOjpvcHRpb25hbDxNZWRpYVRyYWNrQ29uc3RyYWludAogICAg
ICAgICB3ZWFrVGhpcy0+bV9wcm9taXNlLT5yZXNvbHZlKCk7CiAgICAgICAgIHdlYWtUaGlzLT5t
X2NvbnN0cmFpbnRzID0gY29uc3RyYWludHMudmFsdWVfb3IoTWVkaWFUcmFja0NvbnN0cmFpbnRz
IHsgfSk7CiAgICAgfTsKLSAgICBtX3ByaXZhdGUtPmFwcGx5Q29uc3RyYWludHMoY3JlYXRlTWVk
aWFDb25zdHJhaW50c0ltcGwoY29uc3RyYWludHMpLCBzdWNjZXNzSGFuZGxlciwgZmFpbHVyZUhh
bmRsZXIpOworICAgIG1fcHJpdmF0ZS0+YXBwbHlDb25zdHJhaW50cyhjcmVhdGVNZWRpYUNvbnN0
cmFpbnRzSW1wbChjb25zdHJhaW50cyksIFdURk1vdmUoc3VjY2Vzc0hhbmRsZXIpLCBXVEZNb3Zl
KGZhaWx1cmVIYW5kbGVyKSk7CiB9CiAKIHZvaWQgTWVkaWFTdHJlYW1UcmFjazo6YWRkT2JzZXJ2
ZXIoT2JzZXJ2ZXImIG9ic2VydmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuY3BwCmluZGV4
IDlmZmQwNDQzYjJjMjMzNWJkYmM2ZmI2NTFjYWZlNWU0NGJlYjAzNDMuLmY1YjRlMjllOWZiZTYy
NmE1ODU2NmY5YjA4MWU1ZjYzYThjYWNlNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5j
cHAKQEAgLTE0MSw5ICsxNDEsOSBAQCBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0
aWVzJiBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6Y2FwYWJpbGl0aWVzKCkgYwogICAgIHJldHVy
biBtX3NvdXJjZS0+Y2FwYWJpbGl0aWVzKCk7CiB9CiAKLXZvaWQgTWVkaWFTdHJlYW1UcmFja1By
aXZhdGU6OmFwcGx5Q29uc3RyYWludHMoY29uc3QgTWVkaWFDb25zdHJhaW50cyYgY29uc3RyYWlu
dHMsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlN1Y2Nlc3NIYW5kbGVyIHN1Y2Nlc3NIYW5kbGVyLCBS
ZWFsdGltZU1lZGlhU291cmNlOjpGYWlsdXJlSGFuZGxlciBmYWlsdXJlSGFuZGxlcikKK3ZvaWQg
TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OmFwcGx5Q29uc3RyYWludHMoY29uc3QgTWVkaWFDb25z
dHJhaW50cyYgY29uc3RyYWludHMsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlN1Y2Nlc3NIYW5kbGVy
JiYgc3VjY2Vzc0hhbmRsZXIsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OkZhaWx1cmVIYW5kbGVyJiYg
ZmFpbHVyZUhhbmRsZXIpCiB7Ci0gICAgbV9zb3VyY2UtPmFwcGx5Q29uc3RyYWludHMoY29uc3Ry
YWludHMsIHN1Y2Nlc3NIYW5kbGVyLCBmYWlsdXJlSGFuZGxlcik7CisgICAgbV9zb3VyY2UtPmFw
cGx5Q29uc3RyYWludHMoY29uc3RyYWludHMsIFdURk1vdmUoc3VjY2Vzc0hhbmRsZXIpLCBXVEZN
b3ZlKGZhaWx1cmVIYW5kbGVyKSk7CiB9CiAKIEF1ZGlvU291cmNlUHJvdmlkZXIqIE1lZGlhU3Ry
ZWFtVHJhY2tQcml2YXRlOjphdWRpb1NvdXJjZVByb3ZpZGVyKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrUHJp
dmF0ZS5oCmluZGV4IDRkNzgzZTAyNTQ3ZmZjZTc1NTgxYmM1ODZjODVmNTI2ZTgzMmU1NzAuLjVl
MjA0NmFkNWE0Y2VlYTg4ZGY1ZDNkYWIyNDlmZTNhMmQ2NmM4MjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFj
a1ByaXZhdGUuaApAQCAtODksNyArODksNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgUmVhbHRpbWVN
ZWRpYVNvdXJjZVNldHRpbmdzJiBzZXR0aW5ncygpIGNvbnN0OwogICAgIGNvbnN0IFJlYWx0aW1l
TWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmIGNhcGFiaWxpdGllcygpIGNvbnN0OwogCi0gICAgdm9p
ZCBhcHBseUNvbnN0cmFpbnRzKGNvbnN0IE1lZGlhQ29uc3RyYWludHMmLCBSZWFsdGltZU1lZGlh
U291cmNlOjpTdWNjZXNzSGFuZGxlciwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6RmFpbHVyZUhhbmRs
ZXIpOworICAgIHZvaWQgYXBwbHlDb25zdHJhaW50cyhjb25zdCBNZWRpYUNvbnN0cmFpbnRzJiwg
UmVhbHRpbWVNZWRpYVNvdXJjZTo6U3VjY2Vzc0hhbmRsZXImJiwgUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6RmFpbHVyZUhhbmRsZXImJik7CiAKICAgICBBdWRpb1NvdXJjZVByb3ZpZGVyKiBhdWRpb1Nv
dXJjZVByb3ZpZGVyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAKaW5kZXggMTkxZGFlZTJkMTE2
ODBkNDEzZWY3ZjA0NGJmYThlNWUwMjcyZGU1OC4uNGI0ZTQ2NDcyYWZmYTk0N2VhODI4ZWE0NWQ2
ZDBiYjAzZTA0NjUwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAKQEAgLTc1MSw3ICs3NTEsNyBA
QCBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+IFJlYWx0aW1lTWVkaWFT
b3VyY2U6OmFwcGx5Q29uc3RyYWludHMoYwogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAK
LXZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6YXBwbHlDb25zdHJhaW50cyhjb25zdCBNZWRpYUNv
bnN0cmFpbnRzJiBjb25zdHJhaW50cywgU3VjY2Vzc0hhbmRsZXIgc3VjY2Vzc0hhbmRsZXIsIEZh
aWx1cmVIYW5kbGVyIGZhaWx1cmVIYW5kbGVyKQordm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjph
cHBseUNvbnN0cmFpbnRzKGNvbnN0IE1lZGlhQ29uc3RyYWludHMmIGNvbnN0cmFpbnRzLCBTdWNj
ZXNzSGFuZGxlciYmIHN1Y2Nlc3NIYW5kbGVyLCBGYWlsdXJlSGFuZGxlciYmIGZhaWx1cmVIYW5k
bGVyKQogewogICAgIGF1dG8gcmVzdWx0ID0gYXBwbHlDb25zdHJhaW50cyhjb25zdHJhaW50cyk7
CiAgICAgaWYgKCFyZXN1bHQgJiYgc3VjY2Vzc0hhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmgKaW5k
ZXggMmFmNjExZmFmOTRmOWY4MjRlMTNiYzA2MzRhZmZhNzljZTczZGYxMC4uY2RlYTNlNTI3NWMz
ZTJmZjVmMThlMzljNmYyYjU1MGVlNWFhOWFkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuaApAQCAtMTIz
LDcgKzEyMyw3IEBAIHB1YmxpYzoKIAogICAgIHVzaW5nIFN1Y2Nlc3NIYW5kbGVyID0gc3RkOjpm
dW5jdGlvbjx2b2lkKCk+OwogICAgIHVzaW5nIEZhaWx1cmVIYW5kbGVyID0gc3RkOjpmdW5jdGlv
bjx2b2lkKGNvbnN0IFN0cmluZyYgYmFkQ29uc3RyYWludCwgY29uc3QgU3RyaW5nJiBlcnJvclN0
cmluZyk+OwotICAgIHZvaWQgYXBwbHlDb25zdHJhaW50cyhjb25zdCBNZWRpYUNvbnN0cmFpbnRz
JiwgU3VjY2Vzc0hhbmRsZXIsIEZhaWx1cmVIYW5kbGVyKTsKKyAgICB2aXJ0dWFsIHZvaWQgYXBw
bHlDb25zdHJhaW50cyhjb25zdCBNZWRpYUNvbnN0cmFpbnRzJiwgU3VjY2Vzc0hhbmRsZXImJiwg
RmFpbHVyZUhhbmRsZXImJik7CiAgICAgc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8U3RyaW5nLCBT
dHJpbmc+PiBhcHBseUNvbnN0cmFpbnRzKGNvbnN0IE1lZGlhQ29uc3RyYWludHMmKTsKIAogICAg
IHZpcnR1YWwgYm9vbCBzdXBwb3J0c0NvbnN0cmFpbnRzKGNvbnN0IE1lZGlhQ29uc3RyYWludHMm
LCBTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmgKaW5kZXggZTFmZDE2
Zjg2YzI3NmQxMjY1NGI1OWNjMjQ5ZTA5ZmNjMDI2YmE1MC4uNzVlMGM5YTkxNTNkY2E2OTI3ODlh
YjkxMTZjZGMyMmI1YTMzOWE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmgK
QEAgLTkzLDYgKzkzLDcgQEAgcHVibGljOgogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZ3JvdXBJ
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fZ3JvdXBJZDsgfQogICAgIHZvaWQgc2V0R3JvdXBJZChjb25z
dCBBdG9taWNTdHJpbmcmIGdyb3VwSWQpIHsgbV9ncm91cElkID0gZ3JvdXBJZDsgfQogCisgICAg
Y29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzJiBzdXBwb3J0ZWRD
b25zdHJhaW50cygpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcG9ydGVkQ29uc3RyYWludHM7IH0KICAg
ICB2b2lkIHNldFN1cHBvcnRlZENvbnN0cmFpbnRzKGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VT
dXBwb3J0ZWRDb25zdHJhaW50cyYgc3VwcG9ydGVkQ29uc3RyYWludHMpIHsgbV9zdXBwb3J0ZWRD
b25zdHJhaW50cyA9IHN1cHBvcnRlZENvbnN0cmFpbnRzOyB9CiAKICAgICB0ZW1wbGF0ZTxjbGFz
cyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJj
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlv
Q2FwdHVyZVNvdXJjZS5jcHAKaW5kZXggMzU0MmViMzA0ZjUxZGI0MWVjOTc4MDBiMjM4NDJmNDU2
ZTQ1NDBjMi4uZmU1N2RiMjMzNjdiNTdjNTZiOWUxNTc3ZTYyMzQwMDJjZjMzYzA3ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0Nh
cHR1cmVTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9Db3JlQXVkaW9DYXB0dXJlU291cmNlLmNwcApAQCAtNzIsOCArNzIsOCBAQCBwdWJsaWM6
CiAKICAgICBPU1N0YXR1cyBzdXNwZW5kKCk7CiAKLSAgICBPU1N0YXR1cyBzZXR1cEF1ZGlvVW5p
dHMoKTsKLSAgICB2b2lkIGNsZWFudXBBdWRpb1VuaXRzKCk7CisgICAgT1NTdGF0dXMgc2V0dXBB
dWRpb1VuaXQoKTsKKyAgICB2b2lkIGNsZWFudXBBdWRpb1VuaXQoKTsKIAogICAgIHZvaWQgYWRk
RWNob0NhbmNlbGxhdGlvblNvdXJjZShBdWRpb1NhbXBsZURhdGFTb3VyY2UmKTsKICAgICB2b2lk
IHJlbW92ZUVjaG9DYW5jZWxsYXRpb25Tb3VyY2UoQXVkaW9TYW1wbGVEYXRhU291cmNlJik7CkBA
IC05NCw3ICs5NCw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIE9TU3RhdHVzIHNwZWFrZXJDYWxs
YmFjayh2b2lkKiwgQXVkaW9Vbml0UmVuZGVyQWN0aW9uRmxhZ3MqLCBjb25zdCBBdWRpb1RpbWVT
dGFtcCosIFVJbnQzMiwgVUludDMyLCBBdWRpb0J1ZmZlckxpc3QqKTsKICAgICBPU1N0YXR1cyBw
cm92aWRlU3BlYWtlckRhdGEoQXVkaW9Vbml0UmVuZGVyQWN0aW9uRmxhZ3MmLCBjb25zdCBBdWRp
b1RpbWVTdGFtcCYsIFVJbnQzMiwgVUludDMyLCBBdWRpb0J1ZmZlckxpc3QqKTsKIAotICAgIFZl
Y3RvcjxDb3JlQXVkaW9DYXB0dXJlU291cmNlKj4gbV9jbGllbnRzOworICAgIFZlY3RvcjxzdGQ6
OnJlZmVyZW5jZV93cmFwcGVyPENvcmVBdWRpb0NhcHR1cmVTb3VyY2U+PiBtX2NsaWVudHM7CiAK
ICAgICBBdWRpb1VuaXQgbV9pb1VuaXQgeyBudWxscHRyIH07CiAKQEAgLTEyNSw3ICsxMjUsNiBA
QCBwcml2YXRlOgogICAgIGludDMyX3QgbV9wcm9kdWNpbmdDb3VudCB7IDAgfTsKIAogICAgIG11
dGFibGUgc3RkOjp1bmlxdWVfcHRyPFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM+IG1f
Y2FwYWJpbGl0aWVzOwotICAgIG11dGFibGUgUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENv
bnN0cmFpbnRzIG1fc3VwcG9ydGVkQ29uc3RyYWludHM7CiAgICAgbXV0YWJsZSBzdGQ6Om9wdGlv
bmFsPFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncz4gbV9jdXJyZW50U2V0dGluZ3M7CiAKICNp
ZiAhTE9HX0RJU0FCTEVECkBAIC0xNDUsMTIgKzE0NCwxNCBAQCBDb3JlQXVkaW9TaGFyZWRVbml0
JiBDb3JlQXVkaW9TaGFyZWRVbml0OjpzaW5nbGV0b24oKQogCiB2b2lkIENvcmVBdWRpb1NoYXJl
ZFVuaXQ6OmFkZENsaWVudChDb3JlQXVkaW9DYXB0dXJlU291cmNlJiBjbGllbnQpCiB7Ci0gICAg
bV9jbGllbnRzLmFwcGVuZCgmY2xpZW50KTsKKyAgICBtX2NsaWVudHMuYXBwZW5kKGNsaWVudCk7
CiB9CiAKIHZvaWQgQ29yZUF1ZGlvU2hhcmVkVW5pdDo6cmVtb3ZlQ2xpZW50KENvcmVBdWRpb0Nh
cHR1cmVTb3VyY2UmIGNsaWVudCkKIHsKLSAgICBtX2NsaWVudHMucmVtb3ZlQWxsKCZjbGllbnQp
OworICAgIG1fY2xpZW50cy5yZW1vdmVBbGxNYXRjaGluZyhbJl0oY29uc3QgYXV0byYgaXRlbSkg
eworICAgICAgICByZXR1cm4gJmNsaWVudCA9PSAmaXRlbS5nZXQoKTsKKyAgICB9KTsKIH0KIAog
dm9pZCBDb3JlQXVkaW9TaGFyZWRVbml0OjphZGRFY2hvQ2FuY2VsbGF0aW9uU291cmNlKEF1ZGlv
U2FtcGxlRGF0YVNvdXJjZSYgc291cmNlKQpAQCAtMTc1LDcgKzE3Niw3IEBAIHNpemVfdCBDb3Jl
QXVkaW9TaGFyZWRVbml0OjpwcmVmZXJyZWRJT0J1ZmZlclNpemUoKQogICAgIHJldHVybiBBdWRp
b1Nlc3Npb246OnNoYXJlZFNlc3Npb24oKS5idWZmZXJTaXplKCk7CiB9CiAKLU9TU3RhdHVzIENv
cmVBdWRpb1NoYXJlZFVuaXQ6OnNldHVwQXVkaW9Vbml0cygpCitPU1N0YXR1cyBDb3JlQXVkaW9T
aGFyZWRVbml0OjpzZXR1cEF1ZGlvVW5pdCgpCiB7CiAgICAgaWYgKG1faW9Vbml0KQogICAgICAg
ICByZXR1cm4gMDsKQEAgLTE5MCw3ICsxOTEsNyBAQCBPU1N0YXR1cyBDb3JlQXVkaW9TaGFyZWRV
bml0OjpzZXR1cEF1ZGlvVW5pdHMoKQogICAgIEF1ZGlvQ29tcG9uZW50IGlvQ29tcG9uZW50ID0g
QXVkaW9Db21wb25lbnRGaW5kTmV4dChudWxscHRyLCAmaW9Vbml0RGVzY3JpcHRpb24pOwogICAg
IEFTU0VSVChpb0NvbXBvbmVudCk7CiAgICAgaWYgKCFpb0NvbXBvbmVudCkgewotICAgICAgICBM
T0coTWVkaWEsICJDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpzZXR1cEF1ZGlvVW5pdHMoJXApIHVu
YWJsZSB0byBmaW5kIHZwaW8gdW5pdCBjb21wb25lbnQiLCB0aGlzKTsKKyAgICAgICAgTE9HKE1l
ZGlhLCAiQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6c2V0dXBBdWRpb1VuaXQoJXApIHVuYWJsZSB0
byBmaW5kIHZwaW8gdW5pdCBjb21wb25lbnQiLCB0aGlzKTsKICAgICAgICAgcmV0dXJuIC0xOwog
ICAgIH0KIApAQCAtMjAwLDI4ICsyMDEsMzUgQEAgT1NTdGF0dXMgQ29yZUF1ZGlvU2hhcmVkVW5p
dDo6c2V0dXBBdWRpb1VuaXRzKCkKICAgICBpZiAobmFtZSkgewogICAgICAgICBtX2lvVW5pdE5h
bWUgPSBuYW1lOwogICAgICAgICBDRlJlbGVhc2UobmFtZSk7Ci0gICAgICAgIExPRyhNZWRpYSwg
IkNvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OnNldHVwQXVkaW9Vbml0cyglcCkgY3JlYXRlZCBcIiVz
XCIgY29tcG9uZW50IiwgdGhpcywgbV9pb1VuaXROYW1lLnV0ZjgoKS5kYXRhKCkpOworICAgICAg
ICBMT0coTWVkaWEsICJDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpzZXR1cEF1ZGlvVW5pdCglcCkg
Y3JlYXRlZCBcIiVzXCIgY29tcG9uZW50IiwgdGhpcywgbV9pb1VuaXROYW1lLnV0ZjgoKS5kYXRh
KCkpOwogICAgIH0KICNlbmRpZgogCiAgICAgYXV0byBlcnIgPSBBdWRpb0NvbXBvbmVudEluc3Rh
bmNlTmV3KGlvQ29tcG9uZW50LCAmbV9pb1VuaXQpOwogICAgIGlmIChlcnIpIHsKLSAgICAgICAg
TE9HKE1lZGlhLCAiQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6c2V0dXBBdWRpb1VuaXRzKCVwKSB1
bmFibGUgdG8gb3BlbiB2cGlvIHVuaXQsIGVycm9yICVkICglLjRzKSIsIHRoaXMsIChpbnQpZXJy
LCAoY2hhciopJmVycik7CisgICAgICAgIExPRyhNZWRpYSwgIkNvcmVBdWRpb0NhcHR1cmVTb3Vy
Y2U6OnNldHVwQXVkaW9Vbml0KCVwKSB1bmFibGUgdG8gb3BlbiB2cGlvIHVuaXQsIGVycm9yICVk
ICglLjRzKSIsIHRoaXMsIChpbnQpZXJyLCAoY2hhciopJmVycik7CiAgICAgICAgIHJldHVybiBl
cnI7CiAgICAgfQogCi0gICAgdWludDMyX3QgcGFyYW0gPSBtX2NsaWVudHMuZmlyc3QoKS0+ZWNo
b0NhbmNlbGxhdGlvbigpOwotICAgIGVyciA9IEF1ZGlvVW5pdFNldFByb3BlcnR5KG1faW9Vbml0
LCBrQVVWb2ljZUlPUHJvcGVydHlfVm9pY2VQcm9jZXNzaW5nRW5hYmxlQUdDLCBrQXVkaW9Vbml0
U2NvcGVfR2xvYmFsLCBpbnB1dEJ1cywgJnBhcmFtLCBzaXplb2YocGFyYW0pKTsKLSAgICBpZiAo
ZXJyKSB7Ci0gICAgICAgIExPRyhNZWRpYSwgIkNvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OnNldHVw
QXVkaW9Vbml0cyglcCkgdW5hYmxlIHRvIHNldCB2cGlvIHVuaXQgZWNobyBjYW5jZWxsYXRpb24s
IGVycm9yICVkICglLjRzKSIsIHRoaXMsIChpbnQpZXJyLCAoY2hhciopJmVycik7Ci0gICAgICAg
IHJldHVybiBlcnI7CisgICAgaWYgKCFtX2NsaWVudHMuZmlyc3QoKS5nZXQoKS5lY2hvQ2FuY2Vs
bGF0aW9uKCkpIHsKKyAgICAgICAgdWludDMyX3QgcGFyYW0gPSAwOworICAgICAgICBlcnIgPSBB
dWRpb1VuaXRTZXRQcm9wZXJ0eShtX2lvVW5pdCwga0FVVm9pY2VJT1Byb3BlcnR5X1ZvaWNlUHJv
Y2Vzc2luZ0VuYWJsZUFHQywga0F1ZGlvVW5pdFNjb3BlX0dsb2JhbCwgaW5wdXRCdXMsICZwYXJh
bSwgc2l6ZW9mKHBhcmFtKSk7CisgICAgICAgIGlmIChlcnIpIHsKKyAgICAgICAgICAgIExPRyhN
ZWRpYSwgIkNvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OnNldHVwQXVkaW9Vbml0KCVwKSB1bmFibGUg
dG8gc2V0IHZwaW8gYXV0b21hdGljIGdhaW4gY29udHJvbCwgZXJyb3IgJWQgKCUuNHMpIiwgdGhp
cywgKGludCllcnIsIChjaGFyKikmZXJyKTsKKyAgICAgICAgICAgIHJldHVybiBlcnI7CisgICAg
ICAgIH0KKyAgICAgICAgcGFyYW0gPSAxOworICAgICAgICBlcnIgPSBBdWRpb1VuaXRTZXRQcm9w
ZXJ0eShtX2lvVW5pdCwga0FVVm9pY2VJT1Byb3BlcnR5X0J5cGFzc1ZvaWNlUHJvY2Vzc2luZywg
a0F1ZGlvVW5pdFNjb3BlX0dsb2JhbCwgaW5wdXRCdXMsICZwYXJhbSwgc2l6ZW9mKHBhcmFtKSk7
CisgICAgICAgIGlmIChlcnIpIHsKKyAgICAgICAgICAgIExPRyhNZWRpYSwgIkNvcmVBdWRpb0Nh
cHR1cmVTb3VyY2U6OnNldHVwQXVkaW9Vbml0KCVwKSB1bmFibGUgdG8gc2V0IHZwaW8gdW5pdCBl
Y2hvIGNhbmNlbGxhdGlvbiwgZXJyb3IgJWQgKCUuNHMpIiwgdGhpcywgKGludCllcnIsIChjaGFy
KikmZXJyKTsKKyAgICAgICAgICAgIHJldHVybiBlcnI7CisgICAgICAgIH0KICAgICB9Ci0KICNp
ZiBQTEFURk9STShJT1MpCiAgICAgcGFyYW0gPSAxOwogICAgIGVyciA9IEF1ZGlvVW5pdFNldFBy
b3BlcnR5KG1faW9Vbml0LCBrQXVkaW9PdXRwdXRVbml0UHJvcGVydHlfRW5hYmxlSU8sIGtBdWRp
b1VuaXRTY29wZV9JbnB1dCwgaW5wdXRCdXMsICZwYXJhbSwgc2l6ZW9mKHBhcmFtKSk7CiAgICAg
aWYgKGVycikgewotICAgICAgICBMT0coTWVkaWEsICJDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpz
ZXR1cEF1ZGlvVW5pdHMoJXApIHVuYWJsZSB0byBlbmFibGUgdnBpbyB1bml0IGlucHV0LCBlcnJv
ciAlZCAoJS40cykiLCB0aGlzLCAoaW50KWVyciwgKGNoYXIqKSZlcnIpOworICAgICAgICBMT0co
TWVkaWEsICJDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpzZXR1cEF1ZGlvVW5pdCglcCkgdW5hYmxl
IHRvIGVuYWJsZSB2cGlvIHVuaXQgaW5wdXQsIGVycm9yICVkICglLjRzKSIsIHRoaXMsIChpbnQp
ZXJyLCAoY2hhciopJmVycik7CiAgICAgICAgIHJldHVybiBlcnI7CiAgICAgfQogI2Vsc2UKQEAg
LTIzMyw3ICsyNDEsNyBAQCBPU1N0YXR1cyBDb3JlQXVkaW9TaGFyZWRVbml0OjpzZXR1cEF1ZGlv
VW5pdHMoKQogCiAgICAgZXJyID0gQXVkaW9Vbml0U2V0UHJvcGVydHkobV9pb1VuaXQsIGtBdWRp
b091dHB1dFVuaXRQcm9wZXJ0eV9DdXJyZW50RGV2aWNlLCBrQXVkaW9Vbml0U2NvcGVfR2xvYmFs
LCBpbnB1dEJ1cywgJm1fY2FwdHVyZURldmljZUlELCBzaXplb2YobV9jYXB0dXJlRGV2aWNlSUQp
KTsKICAgICBpZiAoZXJyKSB7Ci0gICAgICAgIExPRyhNZWRpYSwgIkNvcmVBdWRpb0NhcHR1cmVT
b3VyY2U6OnNldHVwQXVkaW9Vbml0cyglcCkgdW5hYmxlIHRvIHNldCB2cGlvIHVuaXQgY2FwdHVy
ZSBkZXZpY2UgSUQsIGVycm9yICVkICglLjRzKSIsIHRoaXMsIChpbnQpZXJyLCAoY2hhciopJmVy
cik7CisgICAgICAgIExPRyhNZWRpYSwgIkNvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OnNldHVwQXVk
aW9Vbml0KCVwKSB1bmFibGUgdG8gc2V0IHZwaW8gdW5pdCBjYXB0dXJlIGRldmljZSBJRCwgZXJy
b3IgJWQgKCUuNHMpIiwgdGhpcywgKGludCllcnIsIChjaGFyKikmZXJyKTsKICAgICAgICAgcmV0
dXJuIGVycjsKICAgICB9CiAjZW5kaWYKQEAgLTI0NCw3ICsyNTIsNyBAQCBPU1N0YXR1cyBDb3Jl
QXVkaW9TaGFyZWRVbml0OjpzZXR1cEF1ZGlvVW5pdHMoKQogCiAgICAgZXJyID0gQXVkaW9Vbml0
SW5pdGlhbGl6ZShtX2lvVW5pdCk7CiAgICAgaWYgKGVycikgewotICAgICAgICBMT0coTWVkaWEs
ICJDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpzZXR1cEF1ZGlvVW5pdHMoJXApIEF1ZGlvVW5pdElu
aXRpYWxpemUoKSBmYWlsZWQsIGVycm9yICVkICglLjRzKSIsIHRoaXMsIChpbnQpZXJyLCAoY2hh
ciopJmVycik7CisgICAgICAgIExPRyhNZWRpYSwgIkNvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OnNl
dHVwQXVkaW9Vbml0KCVwKSBBdWRpb1VuaXRJbml0aWFsaXplKCkgZmFpbGVkLCBlcnJvciAlZCAo
JS40cykiLCB0aGlzLCAoaW50KWVyciwgKGNoYXIqKSZlcnIpOwogICAgICAgICByZXR1cm4gZXJy
OwogICAgIH0KICAgICBtX2lvVW5pdEluaXRpYWxpemVkID0gdHJ1ZTsKQEAgLTI3NCw3ICsyODIs
NyBAQCBPU1N0YXR1cyBDb3JlQXVkaW9TaGFyZWRVbml0Ojpjb25maWd1cmVNaWNyb3Bob25lUHJv
YygpCiAgICAgICAgIHJldHVybiBlcnI7CiAgICAgfQogCi0gICAgbWljcm9waG9uZVByb2NGb3Jt
YXQubVNhbXBsZVJhdGUgPSBtX2NsaWVudHMuZmlyc3QoKS0+c2FtcGxlUmF0ZSgpOworICAgIG1p
Y3JvcGhvbmVQcm9jRm9ybWF0Lm1TYW1wbGVSYXRlID0gbV9jbGllbnRzLmZpcnN0KCkuZ2V0KCku
c2FtcGxlUmF0ZSgpOwogICAgIGVyciA9IEF1ZGlvVW5pdFNldFByb3BlcnR5KG1faW9Vbml0LCBr
QXVkaW9Vbml0UHJvcGVydHlfU3RyZWFtRm9ybWF0LCBrQXVkaW9Vbml0U2NvcGVfT3V0cHV0LCBp
bnB1dEJ1cywgJm1pY3JvcGhvbmVQcm9jRm9ybWF0LCBzaXplKTsKICAgICBpZiAoZXJyKSB7CiAg
ICAgICAgIExPRyhNZWRpYSwgIkNvcmVBdWRpb1NoYXJlZFVuaXQ6OmNvbmZpZ3VyZU1pY3JvcGhv
bmVQcm9jKCVwKSB1bmFibGUgdG8gc2V0IG91dHB1dCBzdHJlYW0gZm9ybWF0LCBlcnJvciAlZCAo
JS40cykiLCB0aGlzLCAoaW50KWVyciwgKGNoYXIqKSZlcnIpOwpAQCAtMzA1LDcgKzMxMyw3IEBA
IE9TU3RhdHVzIENvcmVBdWRpb1NoYXJlZFVuaXQ6OmNvbmZpZ3VyZVNwZWFrZXJQcm9jKCkKICAg
ICAgICAgcmV0dXJuIGVycjsKICAgICB9CiAKLSAgICBzcGVha2VyUHJvY0Zvcm1hdC5tU2FtcGxl
UmF0ZSA9IG1fY2xpZW50cy5maXJzdCgpLT5zYW1wbGVSYXRlKCk7CisgICAgc3BlYWtlclByb2NG
b3JtYXQubVNhbXBsZVJhdGUgPSBtX2NsaWVudHMuZmlyc3QoKS5nZXQoKS5zYW1wbGVSYXRlKCk7
CiAgICAgZXJyID0gQXVkaW9Vbml0U2V0UHJvcGVydHkobV9pb1VuaXQsIGtBdWRpb1VuaXRQcm9w
ZXJ0eV9TdHJlYW1Gb3JtYXQsIGtBdWRpb1VuaXRTY29wZV9JbnB1dCwgb3V0cHV0QnVzLCAmc3Bl
YWtlclByb2NGb3JtYXQsIHNpemUpOwogICAgIGlmIChlcnIpIHsKICAgICAgICAgTE9HKE1lZGlh
LCAiQ29yZUF1ZGlvU2hhcmVkVW5pdDo6Y29uZmlndXJlU3BlYWtlclByb2MoJXApIHVuYWJsZSB0
byBnZXQgaW5wdXQgc3RyZWFtIGZvcm1hdCwgZXJyb3IgJWQgKCUuNHMpIiwgdGhpcywgKGludCll
cnIsIChjaGFyKikmZXJyKTsKQEAgLTQxMSwxMSArNDE5LDE0IEBAIE9TU3RhdHVzIENvcmVBdWRp
b1NoYXJlZFVuaXQ6OnByb2Nlc3NNaWNyb3Bob25lU2FtcGxlcyhBdWRpb1VuaXRSZW5kZXJBY3Rp
b25GbGFnCiAgICAgbV9sYXRlc3RNaWNUaW1lU3RhbXAgPSBzYW1wbGVUaW1lOwogICAgIG1fbWlj
cm9waG9uZVNhbXBsZUJ1ZmZlci0+c2V0VGltZXMoYWRqdXN0ZWRIb3N0VGltZSwgc2FtcGxlVGlt
ZSk7CiAKLSAgICBmb3IgKGF1dG8qIGNsaWVudCA6IG1fY2xpZW50cykgewotICAgICAgICBpZiAo
Y2xpZW50LT5pc1Byb2R1Y2luZ0RhdGEoKSkKLSAgICAgICAgICAgIGNsaWVudC0+YXVkaW9TYW1w
bGVzQXZhaWxhYmxlKE1lZGlhVGltZShzYW1wbGVUaW1lLCBtX21pY3JvcGhvbmVQcm9jRm9ybWF0
LnNhbXBsZVJhdGUoKSksIG1fbWljcm9waG9uZVNhbXBsZUJ1ZmZlci0+YnVmZmVyTGlzdCgpLCBt
X21pY3JvcGhvbmVQcm9jRm9ybWF0LCBpbk51bWJlckZyYW1lcyk7Ci0gICAgfQorICAgIGF1dG8g
dm9sdW1lID0gbV9jbGllbnRzLmZpcnN0KCkuZ2V0KCkudm9sdW1lKCk7CisgICAgaWYgKHZvbHVt
ZSAhPSAxLjApCisgICAgICAgIG1fbWljcm9waG9uZVNhbXBsZUJ1ZmZlci0+YXBwbHlHYWluKHZv
bHVtZSk7CiAKKyAgICBmb3IgKENvcmVBdWRpb0NhcHR1cmVTb3VyY2UmIGNsaWVudCA6IG1fY2xp
ZW50cykgeworICAgICAgICBpZiAoY2xpZW50LmlzUHJvZHVjaW5nRGF0YSgpKQorICAgICAgICAg
ICAgY2xpZW50LmF1ZGlvU2FtcGxlc0F2YWlsYWJsZShNZWRpYVRpbWUoc2FtcGxlVGltZSwgbV9t
aWNyb3Bob25lUHJvY0Zvcm1hdC5zYW1wbGVSYXRlKCkpLCBtX21pY3JvcGhvbmVTYW1wbGVCdWZm
ZXItPmJ1ZmZlckxpc3QoKSwgbV9taWNyb3Bob25lUHJvY0Zvcm1hdCwgaW5OdW1iZXJGcmFtZXMp
OworICAgIH0KICAgICByZXR1cm4gbm9FcnI7CiB9CiAKQEAgLTQyNywxNCArNDM4LDE0IEBAIE9T
U3RhdHVzIENvcmVBdWRpb1NoYXJlZFVuaXQ6Om1pY3JvcGhvbmVDYWxsYmFjayh2b2lkICppblJl
ZkNvbiwgQXVkaW9Vbml0UmVuZGVyCiAgICAgcmV0dXJuIGRhdGFTb3VyY2UtPnByb2Nlc3NNaWNy
b3Bob25lU2FtcGxlcygqaW9BY3Rpb25GbGFncywgKmluVGltZVN0YW1wLCBpbkJ1c051bWJlciwg
aW5OdW1iZXJGcmFtZXMsIGlvRGF0YSk7CiB9CiAKLXZvaWQgQ29yZUF1ZGlvU2hhcmVkVW5pdDo6
Y2xlYW51cEF1ZGlvVW5pdHMoKQordm9pZCBDb3JlQXVkaW9TaGFyZWRVbml0OjpjbGVhbnVwQXVk
aW9Vbml0KCkKIHsKICAgICBBU1NFUlQobV9jbGllbnRzLmlzRW1wdHkoKSk7CiAgICAgaWYgKG1f
aW9Vbml0SW5pdGlhbGl6ZWQpIHsKICAgICAgICAgQVNTRVJUKG1faW9Vbml0KTsKICAgICAgICAg
YXV0byBlcnIgPSBBdWRpb1VuaXRVbmluaXRpYWxpemUobV9pb1VuaXQpOwogICAgICAgICBpZiAo
ZXJyKQotICAgICAgICAgICAgTE9HKE1lZGlhLCAiQ29yZUF1ZGlvU2hhcmVkVW5pdDo6Y2xlYW51
cEF1ZGlvVW5pdHMoJXApIEF1ZGlvVW5pdFVuaW5pdGlhbGl6ZSBmYWlsZWQgd2l0aCBlcnJvciAl
ZCAoJS40cykiLCB0aGlzLCAoaW50KWVyciwgKGNoYXIqKSZlcnIpOworICAgICAgICAgICAgTE9H
KE1lZGlhLCAiQ29yZUF1ZGlvU2hhcmVkVW5pdDo6Y2xlYW51cEF1ZGlvVW5pdCglcCkgQXVkaW9V
bml0VW5pbml0aWFsaXplIGZhaWxlZCB3aXRoIGVycm9yICVkICglLjRzKSIsIHRoaXMsIChpbnQp
ZXJyLCAoY2hhciopJmVycik7CiAgICAgICAgIG1faW9Vbml0SW5pdGlhbGl6ZWQgPSBmYWxzZTsK
ICAgICB9CiAKQEAgLTQ2Miw5ICs0NzMsOSBAQCB2b2lkIENvcmVBdWRpb1NoYXJlZFVuaXQ6OnN0
YXJ0UHJvZHVjaW5nRGF0YSgpCiAKICAgICBPU1N0YXR1cyBlcnI7CiAgICAgaWYgKCFtX2lvVW5p
dCkgewotICAgICAgICBlcnIgPSBzZXR1cEF1ZGlvVW5pdHMoKTsKKyAgICAgICAgZXJyID0gc2V0
dXBBdWRpb1VuaXQoKTsKICAgICAgICAgaWYgKGVycikgewotICAgICAgICAgICAgY2xlYW51cEF1
ZGlvVW5pdHMoKTsKKyAgICAgICAgICAgIGNsZWFudXBBdWRpb1VuaXQoKTsKICAgICAgICAgICAg
IEFTU0VSVCghbV9pb1VuaXQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC01
MzcsNyArNTQ4LDcgQEAgT1NTdGF0dXMgQ29yZUF1ZGlvU2hhcmVkVW5pdDo6ZGVmYXVsdElucHV0
RGV2aWNlKHVpbnQzMl90KiBkZXZpY2VJRCkKICAgICBhdXRvIGVyciA9IEF1ZGlvVW5pdEdldFBy
b3BlcnR5KG1faW9Vbml0LCBrQXVkaW9PdXRwdXRVbml0UHJvcGVydHlfQ3VycmVudERldmljZSwg
a0F1ZGlvVW5pdFNjb3BlX0dsb2JhbCwgaW5wdXRCdXMsIGRldmljZUlELCAmcHJvcGVydHlTaXpl
KTsKICAgICBpZiAoZXJyKQogICAgICAgICBMT0coTWVkaWEsICJDb3JlQXVkaW9TaGFyZWRVbml0
OjpkZWZhdWx0SW5wdXREZXZpY2UoJXApIHVuYWJsZSB0byBnZXQgZGVmYXVsdCBpbnB1dCBkZXZp
Y2UgSUQsIGVycm9yICVkICglLjRzKSIsIHRoaXMsIChpbnQpZXJyLCAoY2hhciopJmVycik7Ci0g
ICAgCisKICAgICByZXR1cm4gZXJyOwogfQogCkBAIC02MzIsMTUgKzY0MywxMSBAQCBjb25zdCBS
ZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpj
YXBhYmlsaXRpZXMoKSBjbwogICAgIGlmIChtX2NhcGFiaWxpdGllcykKICAgICAgICAgcmV0dXJu
ICptX2NhcGFiaWxpdGllczsKIAotICAgIG1fc3VwcG9ydGVkQ29uc3RyYWludHMuc2V0U3VwcG9y
dHNEZXZpY2VJZCh0cnVlKTsKLSAgICBtX3N1cHBvcnRlZENvbnN0cmFpbnRzLnNldFN1cHBvcnRz
RWNob0NhbmNlbGxhdGlvbih0cnVlKTsKLSAgICBtX3N1cHBvcnRlZENvbnN0cmFpbnRzLnNldFN1
cHBvcnRzVm9sdW1lKHRydWUpOwotCi0gICAgLy8gRklYTUU6IGZpbmlzaCB0aGlzLgotICAgIG1f
Y2FwYWJpbGl0aWVzID0gc3RkOjptYWtlX3VuaXF1ZTxSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJp
bGl0aWVzPihtX3N1cHBvcnRlZENvbnN0cmFpbnRzKTsKKyAgICBtX2NhcGFiaWxpdGllcyA9IHN0
ZDo6bWFrZV91bmlxdWU8UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcz4oc2V0dGluZ3Mo
KS5zdXBwb3J0ZWRDb25zdHJhaW50cygpKTsKICAgICBtX2NhcGFiaWxpdGllcy0+c2V0RGV2aWNl
SWQoaWQoKSk7CiAgICAgbV9jYXBhYmlsaXRpZXMtPnNldEVjaG9DYW5jZWxsYXRpb24oUmVhbHRp
bWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllczo6RWNob0NhbmNlbGxhdGlvbjo6UmVhZFdyaXRlKTsK
ICAgICBtX2NhcGFiaWxpdGllcy0+c2V0Vm9sdW1lKENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UoMC4w
LCAxLjApKTsKKyAgICBtX2NhcGFiaWxpdGllcy0+c2V0U2FtcGxlUmF0ZShDYXBhYmlsaXR5VmFs
dWVPclJhbmdlKDgwMDAsIDk2MDAwKSk7CiAKICAgICByZXR1cm4gKm1fY2FwYWJpbGl0aWVzOwog
fQpAQCAtNjU0LDggKzY2MSwxNCBAQCBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3Mm
IENvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OnNldHRpbmdzKCkgY29uc3QKICAgICAgICAgc2V0dGlu
Z3Muc2V0RGV2aWNlSWQoaWQoKSk7CiAgICAgICAgIHNldHRpbmdzLnNldEVjaG9DYW5jZWxsYXRp
b24oZWNob0NhbmNlbGxhdGlvbigpKTsKIAotICAgICAgICBtX2N1cnJlbnRTZXR0aW5ncyA9IFdU
Rk1vdmUoc2V0dGluZ3MpOworICAgICAgICBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29u
c3RyYWludHMgc3VwcG9ydGVkQ29uc3RyYWludHM7CisgICAgICAgIHN1cHBvcnRlZENvbnN0cmFp
bnRzLnNldFN1cHBvcnRzRGV2aWNlSWQodHJ1ZSk7CisgICAgICAgIHN1cHBvcnRlZENvbnN0cmFp
bnRzLnNldFN1cHBvcnRzRWNob0NhbmNlbGxhdGlvbih0cnVlKTsKKyAgICAgICAgc3VwcG9ydGVk
Q29uc3RyYWludHMuc2V0U3VwcG9ydHNWb2x1bWUodHJ1ZSk7CisgICAgICAgIHN1cHBvcnRlZENv
bnN0cmFpbnRzLnNldFN1cHBvcnRzU2FtcGxlUmF0ZSh0cnVlKTsKKyAgICAgICAgc2V0dGluZ3Mu
c2V0U3VwcG9ydGVkQ29uc3RyYWludHMoc3VwcG9ydGVkQ29uc3RyYWludHMpOwogCisgICAgICAg
IG1fY3VycmVudFNldHRpbmdzID0gV1RGTW92ZShzZXR0aW5ncyk7CiAgICAgfQogICAgIHJldHVy
biBtX2N1cnJlbnRTZXR0aW5ncy52YWx1ZSgpOwogfQpAQCAtNjc3LDYgKzY5MCw0NiBAQCBBdWRp
b1NvdXJjZVByb3ZpZGVyKiBDb3JlQXVkaW9DYXB0dXJlU291cmNlOjphdWRpb1NvdXJjZVByb3Zp
ZGVyKCkKICAgICByZXR1cm4gbV9hdWRpb1NvdXJjZVByb3ZpZGVyLmdldCgpOwogfQogCitib29s
IENvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OmFwcGx5U2FtcGxlUmF0ZShpbnQgc2FtcGxlUmF0ZSkK
K3sKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIGFibGUgdG8gZGVzY3JpYmUgc2FtcGxlIHJh
dGUgYXMgYSBkaXNjcmVldCByYW5nZSBjb25zdHJhaW50IHNvIHRoYXQgd2Ugb25seSBlbnRlciBo
ZXJlIHdpdGggdmFsdWVzIHRoYXQgY2FuIGJlIGFwcGxpZWQuCisgICAgc3dpdGNoIChzYW1wbGVS
YXRlKSB7CisgICAgY2FzZSA4MDAwOgorICAgIGNhc2UgMTYwMDA6CisgICAgY2FzZSAzMjAwMDoK
KyAgICBjYXNlIDQ0MTAwOgorICAgIGNhc2UgNDgwMDA6CisgICAgY2FzZSA5NjAwMDoKKyAgICAg
ICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAg
ICBzY2hlZHVsZVJlY29uZmlndXJhdGlvbigpOworICAgIHJldHVybiB0cnVlOworfQorCitib29s
IENvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OmFwcGx5RWNob0NhbmNlbGxhdGlvbihib29sKQorewor
ICAgIHNjaGVkdWxlUmVjb25maWd1cmF0aW9uKCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3Zv
aWQgQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6c2NoZWR1bGVSZWNvbmZpZ3VyYXRpb24oKQorewor
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKCFpc1Byb2R1Y2luZ0RhdGEoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgc2NoZWR1bGVEZWZlcnJlZFRhc2soW3RoaXNdIHsKKyAg
ICAgICAgaWYgKCFpc1Byb2R1Y2luZ0RhdGEoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgYXV0byYgdW5pdCA9IENvcmVBdWRpb1NoYXJlZFVuaXQ6OnNpbmdsZXRvbigpOworICAgICAg
ICB1bml0LnN0b3BQcm9kdWNpbmdEYXRhKCk7CisgICAgICAgIHVuaXQuY2xlYW51cEF1ZGlvVW5p
dCgpOworICAgICAgICB1bml0LnN0YXJ0UHJvZHVjaW5nRGF0YSgpOworICAgIH0pOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVB
dWRpb0NhcHR1cmVTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9Db3JlQXVkaW9DYXB0dXJlU291cmNlLmgKaW5kZXggYTQwN2I1MGM3MjAwZTIwMjg2NzM4
ZDc1NjMxY2Q3M2I1MzY2MTc2Ny4uMDVlYjdkNDM2NDJhMDgwYTFjNjRlYzI1ZDIyNmIxMTQyMDBm
MDQyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L0NvcmVBdWRpb0NhcHR1cmVTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5oCkBAIC01MSw3ICs1MSw3IEBA
IGNsYXNzIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTsKIGNsYXNzIENhcHR1cmVEZXZpY2VJbmZvOwog
Y2xhc3MgV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM7CiAKLWNsYXNzIENvcmVBdWRpb0Nh
cHR1cmVTb3VyY2UgOiBwdWJsaWMgUmVhbHRpbWVNZWRpYVNvdXJjZSB7CitjbGFzcyBDb3JlQXVk
aW9DYXB0dXJlU291cmNlIGZpbmFsIDogcHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2UgewogcHVi
bGljOgogCiAgICAgc3RhdGljIENhcHR1cmVTb3VyY2VPckVycm9yIGNyZWF0ZShjb25zdCBTdHJp
bmcmIGRldmljZUlELCBjb25zdCBNZWRpYUNvbnN0cmFpbnRzKik7CkBAIC03NCwxNCArNzQsMTYg
QEAgcHJpdmF0ZToKIAogICAgIGZyaWVuZCBjbGFzcyBDb3JlQXVkaW9TaGFyZWRVbml0OwogCisg
ICAgdm9pZCBzY2hlZHVsZVJlY29uZmlndXJhdGlvbigpOworCiAgICAgYm9vbCBpc0NhcHR1cmVT
b3VyY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAgICAgdm9pZCBzdGFydFByb2R1
Y2luZ0RhdGEoKSBmaW5hbDsKICAgICB2b2lkIHN0b3BQcm9kdWNpbmdEYXRhKCkgZmluYWw7CiAg
ICAgYm9vbCBpc1Byb2R1Y2luZ0RhdGEoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzUHJvZHVj
aW5nRGF0YTsgfQogCi0gICAgYm9vbCBhcHBseVZvbHVtZShkb3VibGUpIG92ZXJyaWRlIHsgcmV0
dXJuIHRydWU7IH0KLSAgICBib29sIGFwcGx5U2FtcGxlUmF0ZShpbnQpIG92ZXJyaWRlIHsgcmV0
dXJuIHRydWU7IH0KLSAgICBib29sIGFwcGx5RWNob0NhbmNlbGxhdGlvbihib29sKSBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBhcHBseVZvbHVtZShkb3VibGUpIGZpbmFsIHsg
cmV0dXJuIHRydWU7IH0KKyAgICBib29sIGFwcGx5U2FtcGxlUmF0ZShpbnQpIGZpbmFsOworICAg
IGJvb2wgYXBwbHlFY2hvQ2FuY2VsbGF0aW9uKGJvb2wpIGZpbmFsOwogCiAgICAgY29uc3QgUmVh
bHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYgY2FwYWJpbGl0aWVzKCkgY29uc3QgZmluYWw7
CiAgICAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBzZXR0aW5ncygpIGNvbnN0
IGZpbmFsOwpAQCAtOTQsNyArOTYsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc1N1c3BlbmRl
ZCB7IGZhbHNlIH07CiAKICAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxSZWFsdGltZU1lZGlh
U291cmNlQ2FwYWJpbGl0aWVzPiBtX2NhcGFiaWxpdGllczsKLSAgICBtdXRhYmxlIFJlYWx0aW1l
TWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyBtX3N1cHBvcnRlZENvbnN0cmFpbnRzOwog
ICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M+IG1f
Y3VycmVudFNldHRpbmdzOwogCiAgICAgUmVmUHRyPFdlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZP
YmpDPiBtX2F1ZGlvU291cmNlUHJvdmlkZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5jcHAK
aW5kZXggOWMzZGU3N2UyNWZjZThmMDY1MjlkMmI2MDRlNTE1Yjc2M2UyOGI1My4uYjdjOGFlOGNk
YjgwMzRlM2YxMzNmNWExMjA3MGFjZWJjNTJmZWM5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclBy
b3h5LmNwcApAQCAtMTI1LDcgKzEyNSw3IEBAIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6
On5Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5KCkKICAgICBtX3Byb2Nlc3MucmVtb3ZlTWVz
c2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5OjptZXNz
YWdlUmVjZWl2ZXJOYW1lKCkpOwogfQogCi12b2lkIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJv
eHk6OmNyZWF0ZU1lZGlhU291cmNlRm9yQ2FwdHVyZURldmljZVdpdGhDb25zdHJhaW50cyh1aW50
NjRfdCBpZCwgY29uc3QgU3RyaW5nJiBkZXZpY2VJRCwgV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNv
dXJjZTo6VHlwZSB0eXBlLCBjb25zdCBNZWRpYUNvbnN0cmFpbnRzRGF0YSYgY29uc3RyYWludHNE
YXRhLCBib29sJiBzdWNjZWVkZWQsIFN0cmluZyYgaW52YWxpZENvbnN0cmFpbnRzKQordm9pZCBV
c2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5OjpjcmVhdGVNZWRpYVNvdXJjZUZvckNhcHR1cmVE
ZXZpY2VXaXRoQ29uc3RyYWludHModWludDY0X3QgaWQsIGNvbnN0IFN0cmluZyYgZGV2aWNlSUQs
IFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUgdHlwZSwgY29uc3QgTWVkaWFDb25z
dHJhaW50c0RhdGEmIGNvbnN0cmFpbnRzRGF0YSwgYm9vbCYgc3VjY2VlZGVkLCBTdHJpbmcmIGlu
dmFsaWRDb25zdHJhaW50cywgV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBz
ZXR0aW5ncykKIHsKICAgICBDYXB0dXJlU291cmNlT3JFcnJvciBzb3VyY2VPckVycm9yOwogICAg
IGF1dG8gY29uc3RyYWludHMgPSBNZWRpYUNvbnN0cmFpbnRzSW1wbDo6Y3JlYXRlKE1lZGlhQ29u
c3RyYWludHNEYXRhKGNvbnN0cmFpbnRzRGF0YSkpOwpAQCAtMTQyLDkgKzE0MiwxMSBAQCB2b2lk
IFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6OmNyZWF0ZU1lZGlhU291cmNlRm9yQ2FwdHVy
ZURldmljZVdpdGhDb25zdHJhaQogICAgIH0KIAogICAgIHN1Y2NlZWRlZCA9ICEhc291cmNlT3JF
cnJvcjsKLSAgICBpZiAoc291cmNlT3JFcnJvcikKLSAgICAgICAgbV9wcm94aWVzLnNldChpZCwg
c3RkOjptYWtlX3VuaXF1ZTxTb3VyY2VQcm94eT4oaWQsICp0aGlzLCBzb3VyY2VPckVycm9yLnNv
dXJjZSgpKSk7Ci0gICAgZWxzZQorICAgIGlmIChzb3VyY2VPckVycm9yKSB7CisgICAgICAgIGF1
dG8gc291cmNlID0gc291cmNlT3JFcnJvci5zb3VyY2UoKTsKKyAgICAgICAgc2V0dGluZ3MgPSBz
b3VyY2UtPnNldHRpbmdzKCk7CisgICAgICAgIG1fcHJveGllcy5zZXQoaWQsIHN0ZDo6bWFrZV91
bmlxdWU8U291cmNlUHJveHk+KGlkLCAqdGhpcywgV1RGTW92ZShzb3VyY2UpKSk7CisgICAgfSBl
bHNlCiAgICAgICAgIGludmFsaWRDb25zdHJhaW50cyA9IFdURk1vdmUoc291cmNlT3JFcnJvci5l
cnJvck1lc3NhZ2UpOwogfQogCkBAIC0xODMsNiArMTg1LDIxIEBAIHZvaWQgVXNlck1lZGlhQ2Fw
dHVyZU1hbmFnZXJQcm94eTo6c2V0RW5hYmxlZCh1aW50NjRfdCBpZCwgYm9vbCBlbmFibGVkKQog
ICAgICAgICBpdGVyLT52YWx1ZS0+c291cmNlKCkuc2V0RW5hYmxlZChlbmFibGVkKTsKIH0KIAor
dm9pZCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5OjphcHBseUNvbnN0cmFpbnRzKHVpbnQ2
NF90IGlkLCBjb25zdCBXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnRzRGF0YSYgY29uc3RyYWludHNE
YXRhKQoreworICAgIGF1dG8gY29uc3RyYWludHMgPSBNZWRpYUNvbnN0cmFpbnRzSW1wbDo6Y3Jl
YXRlKE1lZGlhQ29uc3RyYWludHNEYXRhKGNvbnN0cmFpbnRzRGF0YSkpOworICAgIGF1dG8gaXRl
ciA9IG1fcHJveGllcy5maW5kKGlkKTsKKyAgICBpZiAoaXRlciA9PSBtX3Byb3hpZXMuZW5kKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8mIHNvdXJjZSA9IGl0ZXItPnZhbHVlLT5zb3Vy
Y2UoKTsKKyAgICBhdXRvIHJlc3VsdCA9IHNvdXJjZS5hcHBseUNvbnN0cmFpbnRzKGNvbnN0cmFp
bnRzKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgbV9wcm9jZXNzLnNlbmQoTWVzc2FnZXM6
OlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOjpBcHBseUNvbnN0cmFpbnRzU3VjY2VlZGVkKGlkLCBz
b3VyY2Uuc2V0dGluZ3MoKSksIDApOworICAgIGVsc2UKKyAgICAgICAgbV9wcm9jZXNzLnNlbmQo
TWVzc2FnZXM6OlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOjpBcHBseUNvbnN0cmFpbnRzRmFpbGVk
KGlkLCByZXN1bHQudmFsdWUoKS5maXJzdCwgcmVzdWx0LnZhbHVlKCkuc2Vjb25kKSwgMCk7Cit9
CisKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29j
b2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuaAppbmRleCA0MTM5ZGIyNGQ0
NzUyMDllYzNlN2NkM2NiZjdiZDgzNGEyNzhjYmNlLi4yYTUxZDdjMjViYjVjYmU3MDY2ODU0NmY4
ZTY0NjAwZDhlOWI1ZmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29j
b2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmgKQEAgLTQ5LDEyICs0
OSwxMyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6
RW5jb2Rlcj4mKSBmaW5hbDsKIAotICAgIHZvaWQgY3JlYXRlTWVkaWFTb3VyY2VGb3JDYXB0dXJl
RGV2aWNlV2l0aENvbnN0cmFpbnRzKHVpbnQ2NF90IGlkLCBjb25zdCBTdHJpbmcmIGRldmljZUlE
LCBXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlLCBjb25zdCBXZWJDb3JlOjpNZWRp
YUNvbnN0cmFpbnRzRGF0YSYsIGJvb2wmIHN1Y2NlZWRlZCwgU3RyaW5nJiBpbnZhbGlkQ29uc3Ry
YWludHMpOworICAgIHZvaWQgY3JlYXRlTWVkaWFTb3VyY2VGb3JDYXB0dXJlRGV2aWNlV2l0aENv
bnN0cmFpbnRzKHVpbnQ2NF90IGlkLCBjb25zdCBTdHJpbmcmIGRldmljZUlELCBXZWJDb3JlOjpS
ZWFsdGltZU1lZGlhU291cmNlOjpUeXBlLCBjb25zdCBXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnRz
RGF0YSYsIGJvb2wmIHN1Y2NlZWRlZCwgU3RyaW5nJiBpbnZhbGlkQ29uc3RyYWludHMsIFdlYkNv
cmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYpOwogICAgIHZvaWQgc3RhcnRQcm9kdWNp
bmdEYXRhKHVpbnQ2NF90KTsKICAgICB2b2lkIHN0b3BQcm9kdWNpbmdEYXRhKHVpbnQ2NF90KTsK
ICAgICB2b2lkIGNhcGFiaWxpdGllcyh1aW50NjRfdCwgV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNv
dXJjZUNhcGFiaWxpdGllcyYpOwogICAgIHZvaWQgc2V0TXV0ZWQodWludDY0X3QsIGJvb2wpOwog
ICAgIHZvaWQgc2V0RW5hYmxlZCh1aW50NjRfdCwgYm9vbCk7CisgICAgdm9pZCBhcHBseUNvbnN0
cmFpbnRzKHVpbnQ2NF90LCBjb25zdCBXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnRzRGF0YSYpOwog
CiAgICAgY2xhc3MgU291cmNlUHJveHk7CiAgICAgZnJpZW5kIGNsYXNzIFNvdXJjZVByb3h5Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1
cmVNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29j
b2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgppbmRleCAxZmMwOTNl
NWIzMDk2ZjUxMGRkZThmZjRhY2U2NGZkMTQwMTNiN2FhLi5hM2M4MTRmZWI5YzA4MmUzMDU1NGZj
MzU5Yjk1NmE4ZmVmZTBkYWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Q29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5t
ZXNzYWdlcy5pbgpAQCAtMjIsMTAgKzIyLDExIEBACiAjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KIAogbWVzc2FnZXMgLT4gVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eSB7Ci0g
ICAgQ3JlYXRlTWVkaWFTb3VyY2VGb3JDYXB0dXJlRGV2aWNlV2l0aENvbnN0cmFpbnRzKHVpbnQ2
NF90IGlkLCBTdHJpbmcgZGV2aWNlSUQsIFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5
cGUgdHlwZSwgc3RydWN0IFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludHNEYXRhIGNvbnN0cmFpbnRz
KSAtPiAoYm9vbCBzdWNjZXNzLCBTdHJpbmcgaW52YWxpZENvbnN0cmFpbnRzKQorICAgIENyZWF0
ZU1lZGlhU291cmNlRm9yQ2FwdHVyZURldmljZVdpdGhDb25zdHJhaW50cyh1aW50NjRfdCBpZCwg
U3RyaW5nIGRldmljZUlELCBXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlIHR5cGUs
IHN0cnVjdCBXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnRzRGF0YSBjb25zdHJhaW50cykgLT4gKGJv
b2wgc3VjY2VzcywgU3RyaW5nIGludmFsaWRDb25zdHJhaW50cywgV2ViQ29yZTo6UmVhbHRpbWVN
ZWRpYVNvdXJjZVNldHRpbmdzIHNldHRpbmdzKQogICAgIFN0YXJ0UHJvZHVjaW5nRGF0YSh1aW50
NjRfdCBpZCkKICAgICBTdG9wUHJvZHVjaW5nRGF0YSh1aW50NjRfdCBpZCkKICAgICBDYXBhYmls
aXRpZXModWludDY0X3QgaWQpIC0+IChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJp
bGl0aWVzIGNhcGFiaWxpdGllcykKICAgICBTZXRNdXRlZCh1aW50NjRfdCBpZCwgYm9vbCBtdXRl
ZCkKICAgICBTZXRFbmFibGVkKHVpbnQ2NF90IGlkLCBib29sIGVuYWJsZWQpCisgICAgQXBwbHlD
b25zdHJhaW50cyh1aW50NjRfdCBpZCwgc3RydWN0IFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludHNE
YXRhIGNvbnN0cmFpbnRzKQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcAppbmRleCA0ZDRmMDI2MmZk
OWIxMTgzYjgwNDM5MDk0ZTVmMzE0Y2YwNmU1NDVhLi5hOWQ1N2Y1OTU4NTQ0ZWI0NDNiYjYyZWFk
OWE5YmQ4NzQxNDA0NWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2Nv
Y29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcApAQCAtNzMsOSArNzMsOSBA
QCBwdWJsaWM6CiAgICAgfQogCiAgICAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdz
JiBzZXR0aW5ncygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc2V0dGluZ3M7IH0KLSAgICB2b2lk
IHNldFNldHRpbmdzKGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgc2V0dGluZ3Mp
CisgICAgdm9pZCBzZXRTZXR0aW5ncyhSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmJiBzZXR0
aW5ncykKICAgICB7Ci0gICAgICAgIG1fc2V0dGluZ3MgPSBzZXR0aW5nczsKKyAgICAgICAgbV9z
ZXR0aW5ncyA9IFdURk1vdmUoc2V0dGluZ3MpOwogICAgICAgICBzZXR0aW5nc0RpZENoYW5nZSgp
OwogICAgIH0KIApAQCAtMTE0LDcgKzExNCwyMCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBvYnNl
cnZlci0+YXVkaW9TYW1wbGVzQXZhaWxhYmxlKHRpbWUsIGF1ZGlvRGF0YSwgbV9kZXNjcmlwdGlv
biwgbnVtYmVyT2ZGcmFtZXMpOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBzZXRNdXRlZChi
b29sIG11dGVkKQorICAgIHZvaWQgYXBwbHlDb25zdHJhaW50c1N1Y2NlZWRlZChjb25zdCBXZWJD
b3JlOjpSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdzKQorICAgIHsKKyAgICAg
ICAgYXV0byBjYWxsYmFja3MgPSBtX3BlbmRpbmdBcHBseUNvbnN0cmFpbnRzQ2FsbGJhY2tzLnRh
a2VGaXJzdCgpOworICAgICAgICBzZXRTZXR0aW5ncyhXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291
cmNlU2V0dGluZ3Moc2V0dGluZ3MpKTsKKyAgICAgICAgY2FsbGJhY2tzLnN1Y2Nlc3NIYW5kbGVy
KCk7CisgICAgfQorCisgICAgdm9pZCBhcHBseUNvbnN0cmFpbnRzRmFpbGVkKGNvbnN0IFN0cmlu
ZyYgZmFpbGVkQ29uc3RyYWludCwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCisgICAgewor
ICAgICAgICBhdXRvIGNhbGxiYWNrcyA9IG1fcGVuZGluZ0FwcGx5Q29uc3RyYWludHNDYWxsYmFj
a3MudGFrZUZpcnN0KCk7CisgICAgICAgIGNhbGxiYWNrcy5mYWlsdXJlSGFuZGxlcihmYWlsZWRD
b25zdHJhaW50LCBlcnJvck1lc3NhZ2UpOworICAgIH0KKworICAgIHZvaWQgc2V0TXV0ZWQoYm9v
bCBtdXRlZCkgZmluYWwKICAgICB7CiAgICAgICAgIGlmIChtX211dGVkID09IG11dGVkKQogICAg
ICAgICAgICAgcmV0dXJuOwpAQCAtMTIzLDcgKzEzNiw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9t
YW5hZ2VyLnNldE11dGVkKG1faWQsIG1fbXV0ZWQpOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9p
ZCBzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkKKyAgICB2b2lkIHNldEVuYWJsZWQoYm9vbCBlbmFi
bGVkKSBmaW5hbAogICAgIHsKICAgICAgICAgaWYgKG1fZW5hYmxlZCA9PSBlbmFibGVkKQogICAg
ICAgICAgICAgcmV0dXJuOwpAQCAtMTMyLDYgKzE0NSw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9t
YW5hZ2VyLnNldEVuYWJsZWQobV9pZCwgbV9lbmFibGVkKTsKICAgICB9CiAKK3ByaXZhdGU6CiAg
ICAgdm9pZCBzdGFydFByb2R1Y2luZ0RhdGEoKSBmaW5hbCB7IG1fbWFuYWdlci5zdGFydFByb2R1
Y2luZ0RhdGEobV9pZCk7IH0KICAgICB2b2lkIHN0b3BQcm9kdWNpbmdEYXRhKCkgZmluYWwgeyBt
X21hbmFnZXIuc3RvcFByb2R1Y2luZ0RhdGEobV9pZCk7IH0KICAgICBib29sIGlzQ2FwdHVyZVNv
dXJjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KQEAgLTE0NSwxMSArMTU5LDE1IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fYXVkaW9Tb3VyY2VQcm92aWRlci5nZXQoKTsKICAg
ICB9CiAKLXByaXZhdGU6CiAgICAgLy8gUmVhbHRpbWVNZWRpYVNvdXJjZQogICAgIHZvaWQgYmVn
aW5Db25maWd1cmF0aW9uKCkgZmluYWwgeyB9CiAgICAgdm9pZCBjb21taXRDb25maWd1cmF0aW9u
KCkgZmluYWwgeyB9CiAKKyAgICB2b2lkIGFwcGx5Q29uc3RyYWludHMoY29uc3QgV2ViQ29yZTo6
TWVkaWFDb25zdHJhaW50cyYgY29uc3RyYWludHMsIFN1Y2Nlc3NIYW5kbGVyJiYgc3VjY2Vzc0hh
bmRsZXIsIEZhaWx1cmVIYW5kbGVyJiYgZmFpbHVyZUhhbmRsZXIpIGZpbmFsIHsKKyAgICAgICAg
bV9tYW5hZ2VyLmFwcGx5Q29uc3RyYWludHMobV9pZCwgY29uc3RyYWludHMpOworICAgICAgICBt
X3BlbmRpbmdBcHBseUNvbnN0cmFpbnRzQ2FsbGJhY2tzLmFwcGVuZCh7IFdURk1vdmUoc3VjY2Vz
c0hhbmRsZXIpLCBXVEZNb3ZlKGZhaWx1cmVIYW5kbGVyKX0pOworICAgIH0KKwogICAgIHVpbnQ2
NF90IG1faWQ7CiAgICAgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXImIG1fbWFuYWdlcjsKICAgICBt
dXRhYmxlIHN0ZDo6b3B0aW9uYWw8UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcz4gbV9j
YXBhYmlsaXRpZXM7CkBAIC0xNTcsNiArMTc1LDEyIEBAIHByaXZhdGU6CiAgICAgQ0FBdWRpb1N0
cmVhbURlc2NyaXB0aW9uIG1fZGVzY3JpcHRpb247CiAgICAgQ0FSaW5nQnVmZmVyIG1fcmluZ0J1
ZmZlcjsKICAgICBSZWZQdHI8V2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM+IG1fYXVkaW9T
b3VyY2VQcm92aWRlcjsKKworICAgIHN0cnVjdCBBcHBseUNvbnN0cmFpbnRzQ2FsbGJhY2sgewor
ICAgICAgICBTdWNjZXNzSGFuZGxlciBzdWNjZXNzSGFuZGxlcjsKKyAgICAgICAgRmFpbHVyZUhh
bmRsZXIgZmFpbHVyZUhhbmRsZXI7CisgICAgfTsKKyAgICBEZXF1ZTxBcHBseUNvbnN0cmFpbnRz
Q2FsbGJhY2s+IG1fcGVuZGluZ0FwcGx5Q29uc3RyYWludHNDYWxsYmFja3M7CiB9OwogCiBVc2Vy
TWVkaWFDYXB0dXJlTWFuYWdlcjo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIoV2ViUHJvY2Vzcyog
cHJvY2VzcykKQEAgLTE5NCwxMSArMjE4LDEzIEBAIFdlYkNvcmU6OkNhcHR1cmVTb3VyY2VPckVy
cm9yIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOjpjcmVhdGVDYXB0dXJlU291cmNlKGNvbnN0CiAg
ICAgY29uc3RyYWludHNEYXRhLmlzVmFsaWQgPSBjb25zdHJhaW50cy0+aXNWYWxpZCgpOwogICAg
IGJvb2wgc3VjY2VlZGVkOwogCisgICAgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzIHNldHRp
bmdzOwogICAgIFN0cmluZyBlcnJvck1lc3NhZ2U7Ci0gICAgaWYgKCFtX3Byb2Nlc3Muc2VuZFN5
bmMoTWVzc2FnZXM6OlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6OkNyZWF0ZU1lZGlhU291
cmNlRm9yQ2FwdHVyZURldmljZVdpdGhDb25zdHJhaW50cyhpZCwgZGV2aWNlSUQsIHNvdXJjZVR5
cGUsIGNvbnN0cmFpbnRzRGF0YSksIE1lc3NhZ2VzOjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclBy
b3h5OjpDcmVhdGVNZWRpYVNvdXJjZUZvckNhcHR1cmVEZXZpY2VXaXRoQ29uc3RyYWludHM6OlJl
cGx5KHN1Y2NlZWRlZCwgZXJyb3JNZXNzYWdlKSwgMCkpCisgICAgaWYgKCFtX3Byb2Nlc3Muc2Vu
ZFN5bmMoTWVzc2FnZXM6OlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6OkNyZWF0ZU1lZGlh
U291cmNlRm9yQ2FwdHVyZURldmljZVdpdGhDb25zdHJhaW50cyhpZCwgZGV2aWNlSUQsIHNvdXJj
ZVR5cGUsIGNvbnN0cmFpbnRzRGF0YSksIE1lc3NhZ2VzOjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdl
clByb3h5OjpDcmVhdGVNZWRpYVNvdXJjZUZvckNhcHR1cmVEZXZpY2VXaXRoQ29uc3RyYWludHM6
OlJlcGx5KHN1Y2NlZWRlZCwgZXJyb3JNZXNzYWdlLCBzZXR0aW5ncyksIDApKQogICAgICAgICBy
ZXR1cm4gV1RGTW92ZShlcnJvck1lc3NhZ2UpOwogCiAgICAgYXV0byBzb3VyY2UgPSBhZG9wdFJl
ZigqbmV3IFNvdXJjZShTdHJpbmc6Om51bWJlcihpZCksIHNvdXJjZVR5cGUsIGVtcHR5U3RyaW5n
KCksIGlkLCAqdGhpcykpOworICAgIHNvdXJjZS0+c2V0U2V0dGluZ3MoV1RGTW92ZShzZXR0aW5n
cykpOwogICAgIG1fc291cmNlcy5zZXQoaWQsIHNvdXJjZS5jb3B5UmVmKCkpOwogICAgIHJldHVy
biBXZWJDb3JlOjpDYXB0dXJlU291cmNlT3JFcnJvcihXVEZNb3ZlKHNvdXJjZSkpOwogfQpAQCAt
MjI0LDcgKzI1MCw3IEBAIHZvaWQgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OnNvdXJjZUVuYWJs
ZWRDaGFuZ2VkKHVpbnQ2NF90IGlkLCBib29sIGVuYWJsZWQpCiB2b2lkIFVzZXJNZWRpYUNhcHR1
cmVNYW5hZ2VyOjpzb3VyY2VTZXR0aW5nc0NoYW5nZWQodWludDY0X3QgaWQsIGNvbnN0IFJlYWx0
aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgc2V0dGluZ3MpCiB7CiAgICAgQVNTRVJUKG1fc291cmNl
cy5jb250YWlucyhpZCkpOwotICAgIG1fc291cmNlcy5nZXQoaWQpLT5zZXRTZXR0aW5ncyhzZXR0
aW5ncyk7CisgICAgbV9zb3VyY2VzLmdldChpZCktPnNldFNldHRpbmdzKFJlYWx0aW1lTWVkaWFT
b3VyY2VTZXR0aW5ncyhzZXR0aW5ncykpOwogfQogCiB2b2lkIFVzZXJNZWRpYUNhcHR1cmVNYW5h
Z2VyOjpzdG9yYWdlQ2hhbmdlZCh1aW50NjRfdCBpZCwgY29uc3QgU2hhcmVkTWVtb3J5OjpIYW5k
bGUmIGhhbmRsZSwgY29uc3QgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBkZXNj
cmlwdGlvbiwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMpCkBAIC0yNzQsNiArMzAwLDMwIEBAIHZv
aWQgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OnNldEVuYWJsZWQodWludDY0X3QgaWQsIGJvb2wg
ZW5hYmxlZCkKICAgICBtX3Byb2Nlc3Muc2VuZChNZXNzYWdlczo6VXNlck1lZGlhQ2FwdHVyZU1h
bmFnZXJQcm94eTo6U2V0RW5hYmxlZChpZCwgZW5hYmxlZCksIDApOwogfQogCit2b2lkIFVzZXJN
ZWRpYUNhcHR1cmVNYW5hZ2VyOjphcHBseUNvbnN0cmFpbnRzKHVpbnQ2NF90IGlkLCBjb25zdCBX
ZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnRzJiBjb25zdHJhaW50cykKK3sKKyAgICBNZWRpYUNvbnN0
cmFpbnRzRGF0YSBjb25zdHJhaW50c0RhdGE7CisgICAgY29uc3RyYWludHNEYXRhLm1hbmRhdG9y
eUNvbnN0cmFpbnRzID0gY29uc3RyYWludHMubWFuZGF0b3J5Q29uc3RyYWludHMoKTsKKyAgICBj
b25zdHJhaW50c0RhdGEuYWR2YW5jZWRDb25zdHJhaW50cyA9IGNvbnN0cmFpbnRzLmFkdmFuY2Vk
Q29uc3RyYWludHMoKTsKKyAgICBjb25zdHJhaW50c0RhdGEuaXNWYWxpZCA9IGNvbnN0cmFpbnRz
LmlzVmFsaWQoKTsKKworICAgIG1fcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpVc2VyTWVkaWFDYXB0
dXJlTWFuYWdlclByb3h5OjpBcHBseUNvbnN0cmFpbnRzKGlkLCBjb25zdHJhaW50c0RhdGEpLCAw
KTsKK30KKwordm9pZCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6YXBwbHlDb25zdHJhaW50c1N1
Y2NlZWRlZCh1aW50NjRfdCBpZCwgY29uc3QgV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZVNl
dHRpbmdzJiBzZXR0aW5ncykKK3sKKyAgICBBU1NFUlQobV9zb3VyY2VzLmNvbnRhaW5zKGlkKSk7
CisgICAgYXV0byYgc291cmNlID0gKm1fc291cmNlcy5nZXQoaWQpOworICAgIHNvdXJjZS5hcHBs
eUNvbnN0cmFpbnRzU3VjY2VlZGVkKHNldHRpbmdzKTsKK30KKwordm9pZCBVc2VyTWVkaWFDYXB0
dXJlTWFuYWdlcjo6YXBwbHlDb25zdHJhaW50c0ZhaWxlZCh1aW50NjRfdCBpZCwgY29uc3QgU3Ry
aW5nJiBmYWlsZWRDb25zdHJhaW50LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgQVNT
RVJUKG1fc291cmNlcy5jb250YWlucyhpZCkpOworICAgIGF1dG8mIHNvdXJjZSA9ICptX3NvdXJj
ZXMuZ2V0KGlkKTsKKyAgICBzb3VyY2UuYXBwbHlDb25zdHJhaW50c0ZhaWxlZChmYWlsZWRDb25z
dHJhaW50LCBtZXNzYWdlKTsKK30KKwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuaAppbmRl
eCBhOGE5M2FiZGVlNWU4ZWRjNmQwMjE5OGI1MTA2OTQ5YzVlNDg5YjY3Li5jOTBmNmRlYzk0ZjZi
NzkyNTIzNWE0MzM3ZTJiMmRjZTM3MDllNGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oCkBAIC03NSw2
ICs3NSw5IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFi
aWxpdGllcyYmIGNhcGFiaWxpdGllcyh1aW50NjRfdCk7CiAgICAgdm9pZCBzZXRNdXRlZCh1aW50
NjRfdCwgYm9vbCk7CiAgICAgdm9pZCBzZXRFbmFibGVkKHVpbnQ2NF90LCBib29sKTsKKyAgICB2
b2lkIGFwcGx5Q29uc3RyYWludHModWludDY0X3QsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhQ29uc3Ry
YWludHMmKTsKKyAgICB2b2lkIGFwcGx5Q29uc3RyYWludHNTdWNjZWVkZWQodWludDY0X3QsIGNv
bnN0IFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYpOworICAgIHZvaWQgYXBw
bHlDb25zdHJhaW50c0ZhaWxlZCh1aW50NjRfdCwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5n
Jik7CiAKICAgICBjbGFzcyBTb3VyY2U7CiAgICAgZnJpZW5kIGNsYXNzIFNvdXJjZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1h
bmFnZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1VzZXJN
ZWRpYUNhcHR1cmVNYW5hZ2VyLm1lc3NhZ2VzLmluCmluZGV4IGVlYzA1NjVjNjg2NGE0NmIwMGU5
ZjhmYjkxMGMxOGM4OWU5ZTRhMTMuLjFmYzFmMDI5MmQ1NWU4NTJlMDUzZDUyYjczMDc1NGZjNDRi
NDFiZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvVXNlck1l
ZGlhQ2FwdHVyZU1hbmFnZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtMjgsNCAr
MjgsNiBAQCBtZXNzYWdlcyAtPiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlciB7CiAgICAgU291cmNl
U2V0dGluZ3NDaGFuZ2VkKHVpbnQ2NF90IGlkLCBXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNl
U2V0dGluZ3Mgc2V0dGluZ3MpCiAgICAgU3RvcmFnZUNoYW5nZWQodWludDY0X3QgaWQsIFdlYktp
dDo6U2hhcmVkTWVtb3J5OjpIYW5kbGUgc3RvcmFnZUhhbmRsZSwgV2ViQ29yZTo6Q0FBdWRpb1N0
cmVhbURlc2NyaXB0aW9uIGRlc2NyaXB0aW9uLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcykKICAg
ICBBdWRpb1NhbXBsZXNBdmFpbGFibGUodWludDY0X3QgaWQsIE1lZGlhVGltZSB0aW1lLCB1aW50
NjRfdCBudW1iZXJPZkZyYW1lcywgdWludDY0X3Qgc3RhcnRGcmFtZSwgdWludDY0X3QgZW5kRnJh
bWUpCisgICAgQXBwbHlDb25zdHJhaW50c1N1Y2NlZWRlZCh1aW50NjRfdCBpZCwgV2ViQ29yZTo6
UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzIHNldHRpbmdzKQorICAgIEFwcGx5Q29uc3RyYWlu
dHNGYWlsZWQodWludDY0X3QgaWQsIFN0cmluZyBmYWlsZWRDb25zdHJhaW50LCBTdHJpbmcgbWVz
c2FnZSkKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309272</attachid>
            <date>2017-05-05 23:25:15 -0700</date>
            <delta_ts>2017-05-07 11:28:37 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-171633-20170505232514.patch</filename>
            <type>text/plain</type>
            <size>38759</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2MzA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWRkYTc1NGJmNmZlYWY4
OGU1MTVmYTk2NTMyYmFjMzAwMTBiYWM5Ni4uZmUzODg3ZTVmZDdkN2I2YWE4Y2I3YjM5ODdiODc0
Y2Y5MmJhYTFkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDE3LTA1LTA1ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3Ig
cmVhZGluZyBhbmQgd3JpdGluZyBzZXR0aW5ncyBmcm9tIFVJUHJvY2VzcyBhdWRpbyBjYXB0dXJl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzE2MzMK
KworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgQ292ZXJlZCBi
eSBtYW51YWwgdGVzdGluZyBhbmQgZXhpc3RpbmcgdGVzdCBzZXRzLgorCisgICAgICAgIE1vdmlu
ZyBzdWNjZXNzL2ZhaWx1cmUgY2FsbGJhY2tzIGZvciBhcHBseUNvbnN0cmFpbnRzLgorICAgICAg
ICBNYWtpbmcgbWFpbiBSZWFsdGltZU1lZGlhU291cmNlOjphcHBseUNvbnN0cmFpbnRzIHZpcnR1
YWwgc28gdGhhdCBXZWJQcm9jZXNzIHNvdXJjZSBwcm94aWVzIGNhbiBpbXBsZW1lbnQgaXQgYnkK
KyAgICAgICAgZG9pbmcgYW4gSVBDIGNhbGwgZGlyZWN0bHkuIERvaW5nIHNvIGZvciBVSVByb2Nl
c3MgQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS4KKworICAgICAgICBBZGRpbmcgc3VwcG9ydCBmb3Ig
dm9sdW1lIHRvIENvcmVBdWRpb0NhcHR1cmVTb3VyY2UgYnkgYXBwbHlpbmcgZ2FpbiBwb3N0LWNh
cHR1cmluZy4KKyAgICAgICAgQWRkaW5nIHN1cHBvcnQgZm9yIHRvZ2dsaW5nIGVjaG8gY2FuY2Vs
bGF0aW9uIGluIENvcmVBdWRpb0NhcHR1cmVTb3VyY2UuCisgICAgICAgIEFkZGluZyBzdXBwb3J0
IHRvIGNoYW5nZSBlY2hvIGNhbmNlbGxhdGlvbiBhbmQgc2FtcGxlIHJhdGUgYnkgc2NoZWR1bGlu
ZyBhIHJlY29uZmlndXJhdGlvbiBvZiB0aGUgYXVkaW8gdW5pdC4KKyAgICAgICAgVG8gZG8gc28s
IHdlIHN0b3AgcHJvZHVjaW5nIGRhdGEsIGRlbGV0ZSB0aGUgYXVkaW8gdW5pdCBhbmQgcmVzdGFy
dCBwcm9kdWNpbmcgZGF0YS4KKyAgICAgICAgUmVtb3ZpbmcgQ29yZUF1ZGlvQ2FwdHVyZVNvdXJj
ZTo6c3VwcG9ydGVkQ29uc3RyYWludHMgYXMgaXQgaXMgcmVkdW5kYW50IHdpdGgKKyAgICAgICAg
UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpzdXBwb3J0ZWRDb25zdHJhaW50cy4KKworICAg
ICAgICBTZXR0aW5nIHNhbXBsZSByYXRlIG9ubHkgdG8gdGhlIGZvbGxvd2luZyB2YWx1ZXM6IDgw
MDAsIDE2MDAwLCAzMjAwMCwgNDQxMDAsIDQ4MDAwLgorCisgICAgICAgICogTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3Ry
ZWFtVHJhY2s6OmFwcGx5Q29uc3RyYWludHMpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U3RyZWFtVHJhY2tQcml2YXRlOjphcHBseUNvbnN0cmFpbnRzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5oOgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6YXBwbHlDb25zdHJhaW50cyk6CisgICAgICAgICogcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5oOgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5oOgorICAgICAgICAo
V2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpzdXBwb3J0ZWRDb25zdHJhaW50
cyk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVT
b3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6fkNv
cmVBdWRpb0NhcHR1cmVTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q29yZUF1ZGlvQ2FwdHVy
ZVNvdXJjZTo6cHJvY2Vzc01pY3JvcGhvbmVTYW1wbGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
cmVBdWRpb0NhcHR1cmVTb3VyY2U6OmNsZWFudXBBdWRpb1VuaXQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6Y3JlYXRlQXVkaW9Vbml0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OmNvbmZpZ3VyZUF1ZGlvVW5pdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpzdGFydFByb2R1Y2luZ0RhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6Y2FwYWJpbGl0aWVz
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OnNldHRpbmdzKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OmFwcGx5U2FtcGxlUmF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb3JlQXVkaW9DYXB0dXJlU291cmNlOjphcHBseUVjaG9D
YW5jZWxsYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6
c2NoZWR1bGVSZWNvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q29yZUF1ZGlvQ2Fw
dHVyZVNvdXJjZTo6Y2xlYW51cEF1ZGlvVW5pdHMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6c2V0dXBBdWRpb1VuaXRzKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5o
OgorCiAyMDE3LTA1LTA1ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5j
b20+CiAKICAgICAgICAgQ3Jhc2ggaW4gSW1hZ2VGcmFtZUNhY2hlOjpkZWNvZGVkU2l6ZUNoYW5n
ZWQoKSBhZnRlciBpbWFnZSBsb2FkIGNhbmNlbGxhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDgxZjFhYWFl
OWNmNDAxYmQ4ZTAyODI5NWI3YzMxYmFmMjgwMzY1ZjkuLmMxNGE2N2YyY2VmODE2N2I0MjVlYzVm
MTQ2MTY3Y2VjZDZhNzNjZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAxNy0wNS0w
NSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBv
cnQgZm9yIHJlYWRpbmcgYW5kIHdyaXRpbmcgc2V0dGluZ3MgZnJvbSBVSVByb2Nlc3MgYXVkaW8g
Y2FwdHVyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTcxNjMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAgICog
VUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5OjpjcmVhdGVNZWRpYVNvdXJj
ZUZvckNhcHR1cmVEZXZpY2VXaXRoQ29uc3RyYWludHMpOgorICAgICAgICAoV2ViS2l0OjpVc2Vy
TWVkaWFDYXB0dXJlTWFuYWdlclByb3h5OjphcHBseUNvbnN0cmFpbnRzKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmlu
OgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6U291cmNlOjpzZXRT
ZXR0aW5ncyk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOjpTb3Vy
Y2U6OmFwcGx5Q29uc3RyYWludHNTdWNjZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVk
aWFDYXB0dXJlTWFuYWdlcjo6U291cmNlOjphcHBseUNvbnN0cmFpbnRzRmFpbGVkKToKKyAgICAg
ICAgKFdlYktpdDo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OmNyZWF0ZUNhcHR1cmVTb3VyY2Up
OgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6c291cmNlU2V0dGlu
Z3NDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OmFw
cGx5Q29uc3RyYWludHMpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdl
cjo6YXBwbHlDb25zdHJhaW50c1N1Y2NlZWRlZCk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRp
YUNhcHR1cmVNYW5hZ2VyOjphcHBseUNvbnN0cmFpbnRzRmFpbGVkKToKKyAgICAgICAgKFdlYktp
dDo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OlNvdXJjZTo6c2V0TXV0ZWQpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6U291cmNlOjpzZXRFbmFi
bGVkKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1
cmVNYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJl
TWFuYWdlci5tZXNzYWdlcy5pbjoKKwogMjAxNy0wNS0wNSAgVGltb3RoeSBIb3J0b24gIDx0aW1v
dGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgW01hY10gQWRqdXN0IGN1cnNvciBwb3Np
dGlvbiBmb3IgZHJhZ2dlZCBsaW5rIChhbmQgc3RvcCBpdCBmcm9tIG1vdmluZyBiYXNlZCBvbiBo
b3cgZmFzdCB5b3UgYXJlIGRyYWdnaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAKaW5kZXggNmE2YmE1MTVhZTdl
YzQ4NDMzYjQxNDNkN2ViZmE5OTIzYTIyZWM0ZC4uZTU1NGJjNGM2NjM4NDAxMTUxYzUwZTY3NWFk
ZTMzMzUyNGI0NjdjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwCkBAIC0yNjksNyArMjY5LDcgQEAgdm9pZCBN
ZWRpYVN0cmVhbVRyYWNrOjphcHBseUNvbnN0cmFpbnRzKGNvbnN0IHN0ZDo6b3B0aW9uYWw8TWVk
aWFUcmFja0NvbnN0cmFpbnQKICAgICAgICAgd2Vha1RoaXMtPm1fcHJvbWlzZS0+cmVzb2x2ZSgp
OwogICAgICAgICB3ZWFrVGhpcy0+bV9jb25zdHJhaW50cyA9IGNvbnN0cmFpbnRzLnZhbHVlX29y
KE1lZGlhVHJhY2tDb25zdHJhaW50cyB7IH0pOwogICAgIH07Ci0gICAgbV9wcml2YXRlLT5hcHBs
eUNvbnN0cmFpbnRzKGNyZWF0ZU1lZGlhQ29uc3RyYWludHNJbXBsKGNvbnN0cmFpbnRzKSwgc3Vj
Y2Vzc0hhbmRsZXIsIGZhaWx1cmVIYW5kbGVyKTsKKyAgICBtX3ByaXZhdGUtPmFwcGx5Q29uc3Ry
YWludHMoY3JlYXRlTWVkaWFDb25zdHJhaW50c0ltcGwoY29uc3RyYWludHMpLCBXVEZNb3ZlKHN1
Y2Nlc3NIYW5kbGVyKSwgV1RGTW92ZShmYWlsdXJlSGFuZGxlcikpOwogfQogCiB2b2lkIE1lZGlh
U3RyZWFtVHJhY2s6OmFkZE9ic2VydmVyKE9ic2VydmVyJiBvYnNlcnZlcikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2
YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
VHJhY2tQcml2YXRlLmNwcAppbmRleCA5ZmZkMDQ0M2IyYzIzMzViZGJjNmZiNjUxY2FmZTVlNDRi
ZWIwMzQzLi5mNWI0ZTI5ZTlmYmU2MjZhNTg1NjZmOWIwODFlNWY2M2E4Y2FjZTRlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNr
UHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1UcmFja1ByaXZhdGUuY3BwCkBAIC0xNDEsOSArMTQxLDkgQEAgY29uc3QgUmVhbHRp
bWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OmNhcGFi
aWxpdGllcygpIGMKICAgICByZXR1cm4gbV9zb3VyY2UtPmNhcGFiaWxpdGllcygpOwogfQogCi12
b2lkIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjphcHBseUNvbnN0cmFpbnRzKGNvbnN0IE1lZGlh
Q29uc3RyYWludHMmIGNvbnN0cmFpbnRzLCBSZWFsdGltZU1lZGlhU291cmNlOjpTdWNjZXNzSGFu
ZGxlciBzdWNjZXNzSGFuZGxlciwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6RmFpbHVyZUhhbmRsZXIg
ZmFpbHVyZUhhbmRsZXIpCit2b2lkIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjphcHBseUNvbnN0
cmFpbnRzKGNvbnN0IE1lZGlhQ29uc3RyYWludHMmIGNvbnN0cmFpbnRzLCBSZWFsdGltZU1lZGlh
U291cmNlOjpTdWNjZXNzSGFuZGxlciYmIHN1Y2Nlc3NIYW5kbGVyLCBSZWFsdGltZU1lZGlhU291
cmNlOjpGYWlsdXJlSGFuZGxlciYmIGZhaWx1cmVIYW5kbGVyKQogewotICAgIG1fc291cmNlLT5h
cHBseUNvbnN0cmFpbnRzKGNvbnN0cmFpbnRzLCBzdWNjZXNzSGFuZGxlciwgZmFpbHVyZUhhbmRs
ZXIpOworICAgIG1fc291cmNlLT5hcHBseUNvbnN0cmFpbnRzKGNvbnN0cmFpbnRzLCBXVEZNb3Zl
KHN1Y2Nlc3NIYW5kbGVyKSwgV1RGTW92ZShmYWlsdXJlSGFuZGxlcikpOwogfQogCiBBdWRpb1Nv
dXJjZVByb3ZpZGVyKiBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6YXVkaW9Tb3VyY2VQcm92aWRl
cigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbVRyYWNrUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuaAppbmRleCA0ZDc4M2UwMjU0N2ZmY2U3NTU4MWJj
NTg2Yzg1ZjUyNmU4MzJlNTcwLi41ZTIwNDZhZDVhNGNlZWE4OGRmNWQzZGFiMjQ5ZmUzYTJkNjZj
ODIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbVRyYWNrUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmgKQEAgLTg5LDcgKzg5LDcgQEAgcHVibGlj
OgogICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgc2V0dGluZ3MoKSBjb25z
dDsKICAgICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBjYXBhYmlsaXRp
ZXMoKSBjb25zdDsKIAotICAgIHZvaWQgYXBwbHlDb25zdHJhaW50cyhjb25zdCBNZWRpYUNvbnN0
cmFpbnRzJiwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6U3VjY2Vzc0hhbmRsZXIsIFJlYWx0aW1lTWVk
aWFTb3VyY2U6OkZhaWx1cmVIYW5kbGVyKTsKKyAgICB2b2lkIGFwcGx5Q29uc3RyYWludHMoY29u
c3QgTWVkaWFDb25zdHJhaW50cyYsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlN1Y2Nlc3NIYW5kbGVy
JiYsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OkZhaWx1cmVIYW5kbGVyJiYpOwogCiAgICAgQXVkaW9T
b3VyY2VQcm92aWRlciogYXVkaW9Tb3VyY2VQcm92aWRlcigpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2Uu
Y3BwCmluZGV4IDE5MWRhZWUyZDExNjgwZDQxM2VmN2YwNDRiZmE4ZTVlMDI3MmRlNTguLjRiNGU0
NjQ3MmFmZmE5NDdlYTgyOGVhNDVkNmQwYmIwM2UwNDY1MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2Uu
Y3BwCkBAIC03NTEsNyArNzUxLDcgQEAgc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8U3RyaW5nLCBT
dHJpbmc+PiBSZWFsdGltZU1lZGlhU291cmNlOjphcHBseUNvbnN0cmFpbnRzKGMKICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogfQogCi12b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OmFwcGx5Q29u
c3RyYWludHMoY29uc3QgTWVkaWFDb25zdHJhaW50cyYgY29uc3RyYWludHMsIFN1Y2Nlc3NIYW5k
bGVyIHN1Y2Nlc3NIYW5kbGVyLCBGYWlsdXJlSGFuZGxlciBmYWlsdXJlSGFuZGxlcikKK3ZvaWQg
UmVhbHRpbWVNZWRpYVNvdXJjZTo6YXBwbHlDb25zdHJhaW50cyhjb25zdCBNZWRpYUNvbnN0cmFp
bnRzJiBjb25zdHJhaW50cywgU3VjY2Vzc0hhbmRsZXImJiBzdWNjZXNzSGFuZGxlciwgRmFpbHVy
ZUhhbmRsZXImJiBmYWlsdXJlSGFuZGxlcikKIHsKICAgICBhdXRvIHJlc3VsdCA9IGFwcGx5Q29u
c3RyYWludHMoY29uc3RyYWludHMpOwogICAgIGlmICghcmVzdWx0ICYmIHN1Y2Nlc3NIYW5kbGVy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRp
bWVNZWRpYVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVh
bHRpbWVNZWRpYVNvdXJjZS5oCmluZGV4IDJhZjYxMWZhZjk0ZjlmODI0ZTEzYmMwNjM0YWZmYTc5
Y2U3M2RmMTAuLmNkZWEzZTUyNzVjM2UyZmY1ZjE4ZTM5YzZmMmI1NTBlZTVhYTlhZDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFT
b3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGlt
ZU1lZGlhU291cmNlLmgKQEAgLTEyMyw3ICsxMjMsNyBAQCBwdWJsaWM6CiAKICAgICB1c2luZyBT
dWNjZXNzSGFuZGxlciA9IHN0ZDo6ZnVuY3Rpb248dm9pZCgpPjsKICAgICB1c2luZyBGYWlsdXJl
SGFuZGxlciA9IHN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmIGJhZENvbnN0cmFpbnQs
IGNvbnN0IFN0cmluZyYgZXJyb3JTdHJpbmcpPjsKLSAgICB2b2lkIGFwcGx5Q29uc3RyYWludHMo
Y29uc3QgTWVkaWFDb25zdHJhaW50cyYsIFN1Y2Nlc3NIYW5kbGVyLCBGYWlsdXJlSGFuZGxlcik7
CisgICAgdmlydHVhbCB2b2lkIGFwcGx5Q29uc3RyYWludHMoY29uc3QgTWVkaWFDb25zdHJhaW50
cyYsIFN1Y2Nlc3NIYW5kbGVyJiYsIEZhaWx1cmVIYW5kbGVyJiYpOwogICAgIHN0ZDo6b3B0aW9u
YWw8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4gYXBwbHlDb25zdHJhaW50cyhjb25zdCBNZWRp
YUNvbnN0cmFpbnRzJik7CiAKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNDb25zdHJhaW50cyhj
b25zdCBNZWRpYUNvbnN0cmFpbnRzJiwgU3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VT
ZXR0aW5ncy5oCmluZGV4IGUxZmQxNmY4NmMyNzZkMTI2NTRiNTljYzI0OWUwOWZjYzAyNmJhNTAu
Ljc1ZTBjOWE5MTUzZGNhNjkyNzg5YWI5MTE2Y2RjMjJiNWEzMzlhN2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VTZXR0
aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1l
TWVkaWFTb3VyY2VTZXR0aW5ncy5oCkBAIC05Myw2ICs5Myw3IEBAIHB1YmxpYzoKICAgICBjb25z
dCBBdG9taWNTdHJpbmcmIGdyb3VwSWQoKSBjb25zdCB7IHJldHVybiBtX2dyb3VwSWQ7IH0KICAg
ICB2b2lkIHNldEdyb3VwSWQoY29uc3QgQXRvbWljU3RyaW5nJiBncm91cElkKSB7IG1fZ3JvdXBJ
ZCA9IGdyb3VwSWQ7IH0KIAorICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRD
b25zdHJhaW50cyYgc3VwcG9ydGVkQ29uc3RyYWludHMoKSBjb25zdCB7IHJldHVybiBtX3N1cHBv
cnRlZENvbnN0cmFpbnRzOyB9CiAgICAgdm9pZCBzZXRTdXBwb3J0ZWRDb25zdHJhaW50cyhjb25z
dCBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMmIHN1cHBvcnRlZENvbnN0
cmFpbnRzKSB7IG1fc3VwcG9ydGVkQ29uc3RyYWludHMgPSBzdXBwb3J0ZWRDb25zdHJhaW50czsg
fQogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L0NvcmVBdWRpb0NhcHR1cmVTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2UuY3BwCmluZGV4IDM1NDJlYjMwNGY1
MWRiNDFlYzk3ODAwYjIzODQyZjQ1NmU0NTQwYzIuLmIxZTQ1NWIyZDhjOWYzZDgzYWZiMGQ5ODRk
YTdjZWJiZGJiOWVjMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5jcHAKQEAg
LTcyLDggKzcyLDggQEAgcHVibGljOgogCiAgICAgT1NTdGF0dXMgc3VzcGVuZCgpOwogCi0gICAg
T1NTdGF0dXMgc2V0dXBBdWRpb1VuaXRzKCk7Ci0gICAgdm9pZCBjbGVhbnVwQXVkaW9Vbml0cygp
OworICAgIE9TU3RhdHVzIHNldHVwQXVkaW9Vbml0KCk7CisgICAgdm9pZCBjbGVhbnVwQXVkaW9V
bml0KCk7CiAKICAgICB2b2lkIGFkZEVjaG9DYW5jZWxsYXRpb25Tb3VyY2UoQXVkaW9TYW1wbGVE
YXRhU291cmNlJik7CiAgICAgdm9pZCByZW1vdmVFY2hvQ2FuY2VsbGF0aW9uU291cmNlKEF1ZGlv
U2FtcGxlRGF0YVNvdXJjZSYpOwpAQCAtODIsNiArODIsOCBAQCBwdWJsaWM6CiAKICAgICBjb25z
dCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIG1pY3JvcGhvbmVGb3JtYXQoKSBjb25zdCB7IHJl
dHVybiBtX21pY3JvcGhvbmVQcm9jRm9ybWF0OyB9CiAKKyAgICBib29sIGhhc0F1ZGlvVW5pdCgp
IGNvbnN0IHsgcmV0dXJuIG1faW9Vbml0OyB9CisKIHByaXZhdGU6CiAgICAgT1NTdGF0dXMgY29u
ZmlndXJlU3BlYWtlclByb2MoKTsKICAgICBPU1N0YXR1cyBjb25maWd1cmVNaWNyb3Bob25lUHJv
YygpOwpAQCAtOTQsNyArOTYsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBPU1N0YXR1cyBzcGVh
a2VyQ2FsbGJhY2sodm9pZCosIEF1ZGlvVW5pdFJlbmRlckFjdGlvbkZsYWdzKiwgY29uc3QgQXVk
aW9UaW1lU3RhbXAqLCBVSW50MzIsIFVJbnQzMiwgQXVkaW9CdWZmZXJMaXN0Kik7CiAgICAgT1NT
dGF0dXMgcHJvdmlkZVNwZWFrZXJEYXRhKEF1ZGlvVW5pdFJlbmRlckFjdGlvbkZsYWdzJiwgY29u
c3QgQXVkaW9UaW1lU3RhbXAmLCBVSW50MzIsIFVJbnQzMiwgQXVkaW9CdWZmZXJMaXN0Kik7CiAK
LSAgICBWZWN0b3I8Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZSo+IG1fY2xpZW50czsKKyAgICBWZWN0
b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxDb3JlQXVkaW9DYXB0dXJlU291cmNlPj4gbV9jbGll
bnRzOwogCiAgICAgQXVkaW9Vbml0IG1faW9Vbml0IHsgbnVsbHB0ciB9OwogCkBAIC0xMjUsNyAr
MTI3LDYgQEAgcHJpdmF0ZToKICAgICBpbnQzMl90IG1fcHJvZHVjaW5nQ291bnQgeyAwIH07CiAK
ICAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0
aWVzPiBtX2NhcGFiaWxpdGllczsKLSAgICBtdXRhYmxlIFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBw
b3J0ZWRDb25zdHJhaW50cyBtX3N1cHBvcnRlZENvbnN0cmFpbnRzOwogICAgIG11dGFibGUgc3Rk
OjpvcHRpb25hbDxSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M+IG1fY3VycmVudFNldHRpbmdz
OwogCiAjaWYgIUxPR19ESVNBQkxFRApAQCAtMTQ1LDEyICsxNDYsMTQgQEAgQ29yZUF1ZGlvU2hh
cmVkVW5pdCYgQ29yZUF1ZGlvU2hhcmVkVW5pdDo6c2luZ2xldG9uKCkKIAogdm9pZCBDb3JlQXVk
aW9TaGFyZWRVbml0OjphZGRDbGllbnQoQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZSYgY2xpZW50KQog
ewotICAgIG1fY2xpZW50cy5hcHBlbmQoJmNsaWVudCk7CisgICAgbV9jbGllbnRzLmFwcGVuZChj
bGllbnQpOwogfQogCiB2b2lkIENvcmVBdWRpb1NoYXJlZFVuaXQ6OnJlbW92ZUNsaWVudChDb3Jl
QXVkaW9DYXB0dXJlU291cmNlJiBjbGllbnQpCiB7Ci0gICAgbV9jbGllbnRzLnJlbW92ZUFsbCgm
Y2xpZW50KTsKKyAgICBtX2NsaWVudHMucmVtb3ZlQWxsTWF0Y2hpbmcoWyZdKGNvbnN0IGF1dG8m
IGl0ZW0pIHsKKyAgICAgICAgcmV0dXJuICZjbGllbnQgPT0gJml0ZW0uZ2V0KCk7CisgICAgfSk7
CiB9CiAKIHZvaWQgQ29yZUF1ZGlvU2hhcmVkVW5pdDo6YWRkRWNob0NhbmNlbGxhdGlvblNvdXJj
ZShBdWRpb1NhbXBsZURhdGFTb3VyY2UmIHNvdXJjZSkKQEAgLTE3NSw3ICsxNzgsNyBAQCBzaXpl
X3QgQ29yZUF1ZGlvU2hhcmVkVW5pdDo6cHJlZmVycmVkSU9CdWZmZXJTaXplKCkKICAgICByZXR1
cm4gQXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCkuYnVmZmVyU2l6ZSgpOwogfQogCi1PU1N0
YXR1cyBDb3JlQXVkaW9TaGFyZWRVbml0OjpzZXR1cEF1ZGlvVW5pdHMoKQorT1NTdGF0dXMgQ29y
ZUF1ZGlvU2hhcmVkVW5pdDo6c2V0dXBBdWRpb1VuaXQoKQogewogICAgIGlmIChtX2lvVW5pdCkK
ICAgICAgICAgcmV0dXJuIDA7CkBAIC0xOTAsNyArMTkzLDcgQEAgT1NTdGF0dXMgQ29yZUF1ZGlv
U2hhcmVkVW5pdDo6c2V0dXBBdWRpb1VuaXRzKCkKICAgICBBdWRpb0NvbXBvbmVudCBpb0NvbXBv
bmVudCA9IEF1ZGlvQ29tcG9uZW50RmluZE5leHQobnVsbHB0ciwgJmlvVW5pdERlc2NyaXB0aW9u
KTsKICAgICBBU1NFUlQoaW9Db21wb25lbnQpOwogICAgIGlmICghaW9Db21wb25lbnQpIHsKLSAg
ICAgICAgTE9HKE1lZGlhLCAiQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6c2V0dXBBdWRpb1VuaXRz
KCVwKSB1bmFibGUgdG8gZmluZCB2cGlvIHVuaXQgY29tcG9uZW50IiwgdGhpcyk7CisgICAgICAg
IExPRyhNZWRpYSwgIkNvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OnNldHVwQXVkaW9Vbml0KCVwKSB1
bmFibGUgdG8gZmluZCB2cGlvIHVuaXQgY29tcG9uZW50IiwgdGhpcyk7CiAgICAgICAgIHJldHVy
biAtMTsKICAgICB9CiAKQEAgLTIwMCwyOCArMjAzLDM1IEBAIE9TU3RhdHVzIENvcmVBdWRpb1No
YXJlZFVuaXQ6OnNldHVwQXVkaW9Vbml0cygpCiAgICAgaWYgKG5hbWUpIHsKICAgICAgICAgbV9p
b1VuaXROYW1lID0gbmFtZTsKICAgICAgICAgQ0ZSZWxlYXNlKG5hbWUpOwotICAgICAgICBMT0co
TWVkaWEsICJDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpzZXR1cEF1ZGlvVW5pdHMoJXApIGNyZWF0
ZWQgXCIlc1wiIGNvbXBvbmVudCIsIHRoaXMsIG1faW9Vbml0TmFtZS51dGY4KCkuZGF0YSgpKTsK
KyAgICAgICAgTE9HKE1lZGlhLCAiQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6c2V0dXBBdWRpb1Vu
aXQoJXApIGNyZWF0ZWQgXCIlc1wiIGNvbXBvbmVudCIsIHRoaXMsIG1faW9Vbml0TmFtZS51dGY4
KCkuZGF0YSgpKTsKICAgICB9CiAjZW5kaWYKIAogICAgIGF1dG8gZXJyID0gQXVkaW9Db21wb25l
bnRJbnN0YW5jZU5ldyhpb0NvbXBvbmVudCwgJm1faW9Vbml0KTsKICAgICBpZiAoZXJyKSB7Ci0g
ICAgICAgIExPRyhNZWRpYSwgIkNvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OnNldHVwQXVkaW9Vbml0
cyglcCkgdW5hYmxlIHRvIG9wZW4gdnBpbyB1bml0LCBlcnJvciAlZCAoJS40cykiLCB0aGlzLCAo
aW50KWVyciwgKGNoYXIqKSZlcnIpOworICAgICAgICBMT0coTWVkaWEsICJDb3JlQXVkaW9DYXB0
dXJlU291cmNlOjpzZXR1cEF1ZGlvVW5pdCglcCkgdW5hYmxlIHRvIG9wZW4gdnBpbyB1bml0LCBl
cnJvciAlZCAoJS40cykiLCB0aGlzLCAoaW50KWVyciwgKGNoYXIqKSZlcnIpOwogICAgICAgICBy
ZXR1cm4gZXJyOwogICAgIH0KIAotICAgIHVpbnQzMl90IHBhcmFtID0gbV9jbGllbnRzLmZpcnN0
KCktPmVjaG9DYW5jZWxsYXRpb24oKTsKLSAgICBlcnIgPSBBdWRpb1VuaXRTZXRQcm9wZXJ0eSht
X2lvVW5pdCwga0FVVm9pY2VJT1Byb3BlcnR5X1ZvaWNlUHJvY2Vzc2luZ0VuYWJsZUFHQywga0F1
ZGlvVW5pdFNjb3BlX0dsb2JhbCwgaW5wdXRCdXMsICZwYXJhbSwgc2l6ZW9mKHBhcmFtKSk7Ci0g
ICAgaWYgKGVycikgewotICAgICAgICBMT0coTWVkaWEsICJDb3JlQXVkaW9DYXB0dXJlU291cmNl
OjpzZXR1cEF1ZGlvVW5pdHMoJXApIHVuYWJsZSB0byBzZXQgdnBpbyB1bml0IGVjaG8gY2FuY2Vs
bGF0aW9uLCBlcnJvciAlZCAoJS40cykiLCB0aGlzLCAoaW50KWVyciwgKGNoYXIqKSZlcnIpOwot
ICAgICAgICByZXR1cm4gZXJyOworICAgIHVpbnQzMl90IHBhcmFtID0gMDsKKyAgICBpZiAoIW1f
Y2xpZW50cy5sYXN0KCkuZ2V0KCkuZWNob0NhbmNlbGxhdGlvbigpKSB7CisgICAgICAgIGVyciA9
IEF1ZGlvVW5pdFNldFByb3BlcnR5KG1faW9Vbml0LCBrQVVWb2ljZUlPUHJvcGVydHlfVm9pY2VQ
cm9jZXNzaW5nRW5hYmxlQUdDLCBrQXVkaW9Vbml0U2NvcGVfR2xvYmFsLCBpbnB1dEJ1cywgJnBh
cmFtLCBzaXplb2YocGFyYW0pKTsKKyAgICAgICAgaWYgKGVycikgeworICAgICAgICAgICAgTE9H
KE1lZGlhLCAiQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6c2V0dXBBdWRpb1VuaXQoJXApIHVuYWJs
ZSB0byBzZXQgdnBpbyBhdXRvbWF0aWMgZ2FpbiBjb250cm9sLCBlcnJvciAlZCAoJS40cykiLCB0
aGlzLCAoaW50KWVyciwgKGNoYXIqKSZlcnIpOworICAgICAgICAgICAgcmV0dXJuIGVycjsKKyAg
ICAgICAgfQorICAgICAgICBwYXJhbSA9IDE7CisgICAgICAgIGVyciA9IEF1ZGlvVW5pdFNldFBy
b3BlcnR5KG1faW9Vbml0LCBrQVVWb2ljZUlPUHJvcGVydHlfQnlwYXNzVm9pY2VQcm9jZXNzaW5n
LCBrQXVkaW9Vbml0U2NvcGVfR2xvYmFsLCBpbnB1dEJ1cywgJnBhcmFtLCBzaXplb2YocGFyYW0p
KTsKKyAgICAgICAgaWYgKGVycikgeworICAgICAgICAgICAgTE9HKE1lZGlhLCAiQ29yZUF1ZGlv
Q2FwdHVyZVNvdXJjZTo6c2V0dXBBdWRpb1VuaXQoJXApIHVuYWJsZSB0byBzZXQgdnBpbyB1bml0
IGVjaG8gY2FuY2VsbGF0aW9uLCBlcnJvciAlZCAoJS40cykiLCB0aGlzLCAoaW50KWVyciwgKGNo
YXIqKSZlcnIpOworICAgICAgICAgICAgcmV0dXJuIGVycjsKKyAgICAgICAgfQogICAgIH0KLQog
I2lmIFBMQVRGT1JNKElPUykKICAgICBwYXJhbSA9IDE7CiAgICAgZXJyID0gQXVkaW9Vbml0U2V0
UHJvcGVydHkobV9pb1VuaXQsIGtBdWRpb091dHB1dFVuaXRQcm9wZXJ0eV9FbmFibGVJTywga0F1
ZGlvVW5pdFNjb3BlX0lucHV0LCBpbnB1dEJ1cywgJnBhcmFtLCBzaXplb2YocGFyYW0pKTsKICAg
ICBpZiAoZXJyKSB7Ci0gICAgICAgIExPRyhNZWRpYSwgIkNvcmVBdWRpb0NhcHR1cmVTb3VyY2U6
OnNldHVwQXVkaW9Vbml0cyglcCkgdW5hYmxlIHRvIGVuYWJsZSB2cGlvIHVuaXQgaW5wdXQsIGVy
cm9yICVkICglLjRzKSIsIHRoaXMsIChpbnQpZXJyLCAoY2hhciopJmVycik7CisgICAgICAgIExP
RyhNZWRpYSwgIkNvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OnNldHVwQXVkaW9Vbml0KCVwKSB1bmFi
bGUgdG8gZW5hYmxlIHZwaW8gdW5pdCBpbnB1dCwgZXJyb3IgJWQgKCUuNHMpIiwgdGhpcywgKGlu
dCllcnIsIChjaGFyKikmZXJyKTsKICAgICAgICAgcmV0dXJuIGVycjsKICAgICB9CiAjZWxzZQpA
QCAtMjMzLDcgKzI0Myw3IEBAIE9TU3RhdHVzIENvcmVBdWRpb1NoYXJlZFVuaXQ6OnNldHVwQXVk
aW9Vbml0cygpCiAKICAgICBlcnIgPSBBdWRpb1VuaXRTZXRQcm9wZXJ0eShtX2lvVW5pdCwga0F1
ZGlvT3V0cHV0VW5pdFByb3BlcnR5X0N1cnJlbnREZXZpY2UsIGtBdWRpb1VuaXRTY29wZV9HbG9i
YWwsIGlucHV0QnVzLCAmbV9jYXB0dXJlRGV2aWNlSUQsIHNpemVvZihtX2NhcHR1cmVEZXZpY2VJ
RCkpOwogICAgIGlmIChlcnIpIHsKLSAgICAgICAgTE9HKE1lZGlhLCAiQ29yZUF1ZGlvQ2FwdHVy
ZVNvdXJjZTo6c2V0dXBBdWRpb1VuaXRzKCVwKSB1bmFibGUgdG8gc2V0IHZwaW8gdW5pdCBjYXB0
dXJlIGRldmljZSBJRCwgZXJyb3IgJWQgKCUuNHMpIiwgdGhpcywgKGludCllcnIsIChjaGFyKikm
ZXJyKTsKKyAgICAgICAgTE9HKE1lZGlhLCAiQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6c2V0dXBB
dWRpb1VuaXQoJXApIHVuYWJsZSB0byBzZXQgdnBpbyB1bml0IGNhcHR1cmUgZGV2aWNlIElELCBl
cnJvciAlZCAoJS40cykiLCB0aGlzLCAoaW50KWVyciwgKGNoYXIqKSZlcnIpOwogICAgICAgICBy
ZXR1cm4gZXJyOwogICAgIH0KICNlbmRpZgpAQCAtMjQ0LDcgKzI1NCw3IEBAIE9TU3RhdHVzIENv
cmVBdWRpb1NoYXJlZFVuaXQ6OnNldHVwQXVkaW9Vbml0cygpCiAKICAgICBlcnIgPSBBdWRpb1Vu
aXRJbml0aWFsaXplKG1faW9Vbml0KTsKICAgICBpZiAoZXJyKSB7Ci0gICAgICAgIExPRyhNZWRp
YSwgIkNvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OnNldHVwQXVkaW9Vbml0cyglcCkgQXVkaW9Vbml0
SW5pdGlhbGl6ZSgpIGZhaWxlZCwgZXJyb3IgJWQgKCUuNHMpIiwgdGhpcywgKGludCllcnIsIChj
aGFyKikmZXJyKTsKKyAgICAgICAgTE9HKE1lZGlhLCAiQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6
c2V0dXBBdWRpb1VuaXQoJXApIEF1ZGlvVW5pdEluaXRpYWxpemUoKSBmYWlsZWQsIGVycm9yICVk
ICglLjRzKSIsIHRoaXMsIChpbnQpZXJyLCAoY2hhciopJmVycik7CiAgICAgICAgIHJldHVybiBl
cnI7CiAgICAgfQogICAgIG1faW9Vbml0SW5pdGlhbGl6ZWQgPSB0cnVlOwpAQCAtMjc0LDcgKzI4
NCw3IEBAIE9TU3RhdHVzIENvcmVBdWRpb1NoYXJlZFVuaXQ6OmNvbmZpZ3VyZU1pY3JvcGhvbmVQ
cm9jKCkKICAgICAgICAgcmV0dXJuIGVycjsKICAgICB9CiAKLSAgICBtaWNyb3Bob25lUHJvY0Zv
cm1hdC5tU2FtcGxlUmF0ZSA9IG1fY2xpZW50cy5maXJzdCgpLT5zYW1wbGVSYXRlKCk7CisgICAg
bWljcm9waG9uZVByb2NGb3JtYXQubVNhbXBsZVJhdGUgPSBtX2NsaWVudHMuZmlyc3QoKS5nZXQo
KS5zYW1wbGVSYXRlKCk7CiAgICAgZXJyID0gQXVkaW9Vbml0U2V0UHJvcGVydHkobV9pb1VuaXQs
IGtBdWRpb1VuaXRQcm9wZXJ0eV9TdHJlYW1Gb3JtYXQsIGtBdWRpb1VuaXRTY29wZV9PdXRwdXQs
IGlucHV0QnVzLCAmbWljcm9waG9uZVByb2NGb3JtYXQsIHNpemUpOwogICAgIGlmIChlcnIpIHsK
ICAgICAgICAgTE9HKE1lZGlhLCAiQ29yZUF1ZGlvU2hhcmVkVW5pdDo6Y29uZmlndXJlTWljcm9w
aG9uZVByb2MoJXApIHVuYWJsZSB0byBzZXQgb3V0cHV0IHN0cmVhbSBmb3JtYXQsIGVycm9yICVk
ICglLjRzKSIsIHRoaXMsIChpbnQpZXJyLCAoY2hhciopJmVycik7CkBAIC0zMDUsNyArMzE1LDcg
QEAgT1NTdGF0dXMgQ29yZUF1ZGlvU2hhcmVkVW5pdDo6Y29uZmlndXJlU3BlYWtlclByb2MoKQog
ICAgICAgICByZXR1cm4gZXJyOwogICAgIH0KIAotICAgIHNwZWFrZXJQcm9jRm9ybWF0Lm1TYW1w
bGVSYXRlID0gbV9jbGllbnRzLmZpcnN0KCktPnNhbXBsZVJhdGUoKTsKKyAgICBzcGVha2VyUHJv
Y0Zvcm1hdC5tU2FtcGxlUmF0ZSA9IG1fY2xpZW50cy5maXJzdCgpLmdldCgpLnNhbXBsZVJhdGUo
KTsKICAgICBlcnIgPSBBdWRpb1VuaXRTZXRQcm9wZXJ0eShtX2lvVW5pdCwga0F1ZGlvVW5pdFBy
b3BlcnR5X1N0cmVhbUZvcm1hdCwga0F1ZGlvVW5pdFNjb3BlX0lucHV0LCBvdXRwdXRCdXMsICZz
cGVha2VyUHJvY0Zvcm1hdCwgc2l6ZSk7CiAgICAgaWYgKGVycikgewogICAgICAgICBMT0coTWVk
aWEsICJDb3JlQXVkaW9TaGFyZWRVbml0Ojpjb25maWd1cmVTcGVha2VyUHJvYyglcCkgdW5hYmxl
IHRvIGdldCBpbnB1dCBzdHJlYW0gZm9ybWF0LCBlcnJvciAlZCAoJS40cykiLCB0aGlzLCAoaW50
KWVyciwgKGNoYXIqKSZlcnIpOwpAQCAtNDExLDExICs0MjEsMTQgQEAgT1NTdGF0dXMgQ29yZUF1
ZGlvU2hhcmVkVW5pdDo6cHJvY2Vzc01pY3JvcGhvbmVTYW1wbGVzKEF1ZGlvVW5pdFJlbmRlckFj
dGlvbkZsYWcKICAgICBtX2xhdGVzdE1pY1RpbWVTdGFtcCA9IHNhbXBsZVRpbWU7CiAgICAgbV9t
aWNyb3Bob25lU2FtcGxlQnVmZmVyLT5zZXRUaW1lcyhhZGp1c3RlZEhvc3RUaW1lLCBzYW1wbGVU
aW1lKTsKIAotICAgIGZvciAoYXV0byogY2xpZW50IDogbV9jbGllbnRzKSB7Ci0gICAgICAgIGlm
IChjbGllbnQtPmlzUHJvZHVjaW5nRGF0YSgpKQotICAgICAgICAgICAgY2xpZW50LT5hdWRpb1Nh
bXBsZXNBdmFpbGFibGUoTWVkaWFUaW1lKHNhbXBsZVRpbWUsIG1fbWljcm9waG9uZVByb2NGb3Jt
YXQuc2FtcGxlUmF0ZSgpKSwgbV9taWNyb3Bob25lU2FtcGxlQnVmZmVyLT5idWZmZXJMaXN0KCks
IG1fbWljcm9waG9uZVByb2NGb3JtYXQsIGluTnVtYmVyRnJhbWVzKTsKLSAgICB9CisgICAgYXV0
byB2b2x1bWUgPSBtX2NsaWVudHMuZmlyc3QoKS5nZXQoKS52b2x1bWUoKTsKKyAgICBpZiAodm9s
dW1lICE9IDEuMCkKKyAgICAgICAgbV9taWNyb3Bob25lU2FtcGxlQnVmZmVyLT5hcHBseUdhaW4o
dm9sdW1lKTsKIAorICAgIGZvciAoQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZSYgY2xpZW50IDogbV9j
bGllbnRzKSB7CisgICAgICAgIGlmIChjbGllbnQuaXNQcm9kdWNpbmdEYXRhKCkpCisgICAgICAg
ICAgICBjbGllbnQuYXVkaW9TYW1wbGVzQXZhaWxhYmxlKE1lZGlhVGltZShzYW1wbGVUaW1lLCBt
X21pY3JvcGhvbmVQcm9jRm9ybWF0LnNhbXBsZVJhdGUoKSksIG1fbWljcm9waG9uZVNhbXBsZUJ1
ZmZlci0+YnVmZmVyTGlzdCgpLCBtX21pY3JvcGhvbmVQcm9jRm9ybWF0LCBpbk51bWJlckZyYW1l
cyk7CisgICAgfQogICAgIHJldHVybiBub0VycjsKIH0KIApAQCAtNDI3LDE0ICs0NDAsMTMgQEAg
T1NTdGF0dXMgQ29yZUF1ZGlvU2hhcmVkVW5pdDo6bWljcm9waG9uZUNhbGxiYWNrKHZvaWQgKmlu
UmVmQ29uLCBBdWRpb1VuaXRSZW5kZXIKICAgICByZXR1cm4gZGF0YVNvdXJjZS0+cHJvY2Vzc01p
Y3JvcGhvbmVTYW1wbGVzKCppb0FjdGlvbkZsYWdzLCAqaW5UaW1lU3RhbXAsIGluQnVzTnVtYmVy
LCBpbk51bWJlckZyYW1lcywgaW9EYXRhKTsKIH0KIAotdm9pZCBDb3JlQXVkaW9TaGFyZWRVbml0
OjpjbGVhbnVwQXVkaW9Vbml0cygpCit2b2lkIENvcmVBdWRpb1NoYXJlZFVuaXQ6OmNsZWFudXBB
dWRpb1VuaXQoKQogewotICAgIEFTU0VSVChtX2NsaWVudHMuaXNFbXB0eSgpKTsKICAgICBpZiAo
bV9pb1VuaXRJbml0aWFsaXplZCkgewogICAgICAgICBBU1NFUlQobV9pb1VuaXQpOwogICAgICAg
ICBhdXRvIGVyciA9IEF1ZGlvVW5pdFVuaW5pdGlhbGl6ZShtX2lvVW5pdCk7CiAgICAgICAgIGlm
IChlcnIpCi0gICAgICAgICAgICBMT0coTWVkaWEsICJDb3JlQXVkaW9TaGFyZWRVbml0OjpjbGVh
bnVwQXVkaW9Vbml0cyglcCkgQXVkaW9Vbml0VW5pbml0aWFsaXplIGZhaWxlZCB3aXRoIGVycm9y
ICVkICglLjRzKSIsIHRoaXMsIChpbnQpZXJyLCAoY2hhciopJmVycik7CisgICAgICAgICAgICBM
T0coTWVkaWEsICJDb3JlQXVkaW9TaGFyZWRVbml0OjpjbGVhbnVwQXVkaW9Vbml0KCVwKSBBdWRp
b1VuaXRVbmluaXRpYWxpemUgZmFpbGVkIHdpdGggZXJyb3IgJWQgKCUuNHMpIiwgdGhpcywgKGlu
dCllcnIsIChjaGFyKikmZXJyKTsKICAgICAgICAgbV9pb1VuaXRJbml0aWFsaXplZCA9IGZhbHNl
OwogICAgIH0KIApAQCAtNDYyLDkgKzQ3NCw5IEBAIHZvaWQgQ29yZUF1ZGlvU2hhcmVkVW5pdDo6
c3RhcnRQcm9kdWNpbmdEYXRhKCkKIAogICAgIE9TU3RhdHVzIGVycjsKICAgICBpZiAoIW1faW9V
bml0KSB7Ci0gICAgICAgIGVyciA9IHNldHVwQXVkaW9Vbml0cygpOworICAgICAgICBlcnIgPSBz
ZXR1cEF1ZGlvVW5pdCgpOwogICAgICAgICBpZiAoZXJyKSB7Ci0gICAgICAgICAgICBjbGVhbnVw
QXVkaW9Vbml0cygpOworICAgICAgICAgICAgY2xlYW51cEF1ZGlvVW5pdCgpOwogICAgICAgICAg
ICAgQVNTRVJUKCFtX2lvVW5pdCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAg
LTUzNyw3ICs1NDksNyBAQCBPU1N0YXR1cyBDb3JlQXVkaW9TaGFyZWRVbml0OjpkZWZhdWx0SW5w
dXREZXZpY2UodWludDMyX3QqIGRldmljZUlEKQogICAgIGF1dG8gZXJyID0gQXVkaW9Vbml0R2V0
UHJvcGVydHkobV9pb1VuaXQsIGtBdWRpb091dHB1dFVuaXRQcm9wZXJ0eV9DdXJyZW50RGV2aWNl
LCBrQXVkaW9Vbml0U2NvcGVfR2xvYmFsLCBpbnB1dEJ1cywgZGV2aWNlSUQsICZwcm9wZXJ0eVNp
emUpOwogICAgIGlmIChlcnIpCiAgICAgICAgIExPRyhNZWRpYSwgIkNvcmVBdWRpb1NoYXJlZFVu
aXQ6OmRlZmF1bHRJbnB1dERldmljZSglcCkgdW5hYmxlIHRvIGdldCBkZWZhdWx0IGlucHV0IGRl
dmljZSBJRCwgZXJyb3IgJWQgKCUuNHMpIiwgdGhpcywgKGludCllcnIsIChjaGFyKikmZXJyKTsK
LSAgICAKKwogICAgIHJldHVybiBlcnI7CiB9CiAKQEAgLTYzMiwxNSArNjQ0LDExIEBAIGNvbnN0
IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmIENvcmVBdWRpb0NhcHR1cmVTb3VyY2U6
OmNhcGFiaWxpdGllcygpIGNvCiAgICAgaWYgKG1fY2FwYWJpbGl0aWVzKQogICAgICAgICByZXR1
cm4gKm1fY2FwYWJpbGl0aWVzOwogCi0gICAgbV9zdXBwb3J0ZWRDb25zdHJhaW50cy5zZXRTdXBw
b3J0c0RldmljZUlkKHRydWUpOwotICAgIG1fc3VwcG9ydGVkQ29uc3RyYWludHMuc2V0U3VwcG9y
dHNFY2hvQ2FuY2VsbGF0aW9uKHRydWUpOwotICAgIG1fc3VwcG9ydGVkQ29uc3RyYWludHMuc2V0
U3VwcG9ydHNWb2x1bWUodHJ1ZSk7Ci0KLSAgICAvLyBGSVhNRTogZmluaXNoIHRoaXMuCi0gICAg
bV9jYXBhYmlsaXRpZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBh
YmlsaXRpZXM+KG1fc3VwcG9ydGVkQ29uc3RyYWludHMpOworICAgIG1fY2FwYWJpbGl0aWVzID0g
c3RkOjptYWtlX3VuaXF1ZTxSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzPihzZXR0aW5n
cygpLnN1cHBvcnRlZENvbnN0cmFpbnRzKCkpOwogICAgIG1fY2FwYWJpbGl0aWVzLT5zZXREZXZp
Y2VJZChpZCgpKTsKICAgICBtX2NhcGFiaWxpdGllcy0+c2V0RWNob0NhbmNlbGxhdGlvbihSZWFs
dGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzOjpFY2hvQ2FuY2VsbGF0aW9uOjpSZWFkV3JpdGUp
OwogICAgIG1fY2FwYWJpbGl0aWVzLT5zZXRWb2x1bWUoQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSgw
LjAsIDEuMCkpOworICAgIG1fY2FwYWJpbGl0aWVzLT5zZXRTYW1wbGVSYXRlKENhcGFiaWxpdHlW
YWx1ZU9yUmFuZ2UoODAwMCwgOTYwMDApKTsKIAogICAgIHJldHVybiAqbV9jYXBhYmlsaXRpZXM7
CiB9CkBAIC02NTQsOCArNjYyLDE0IEBAIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5n
cyYgQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6c2V0dGluZ3MoKSBjb25zdAogICAgICAgICBzZXR0
aW5ncy5zZXREZXZpY2VJZChpZCgpKTsKICAgICAgICAgc2V0dGluZ3Muc2V0RWNob0NhbmNlbGxh
dGlvbihlY2hvQ2FuY2VsbGF0aW9uKCkpOwogCi0gICAgICAgIG1fY3VycmVudFNldHRpbmdzID0g
V1RGTW92ZShzZXR0aW5ncyk7CisgICAgICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRD
b25zdHJhaW50cyBzdXBwb3J0ZWRDb25zdHJhaW50czsKKyAgICAgICAgc3VwcG9ydGVkQ29uc3Ry
YWludHMuc2V0U3VwcG9ydHNEZXZpY2VJZCh0cnVlKTsKKyAgICAgICAgc3VwcG9ydGVkQ29uc3Ry
YWludHMuc2V0U3VwcG9ydHNFY2hvQ2FuY2VsbGF0aW9uKHRydWUpOworICAgICAgICBzdXBwb3J0
ZWRDb25zdHJhaW50cy5zZXRTdXBwb3J0c1ZvbHVtZSh0cnVlKTsKKyAgICAgICAgc3VwcG9ydGVk
Q29uc3RyYWludHMuc2V0U3VwcG9ydHNTYW1wbGVSYXRlKHRydWUpOworICAgICAgICBzZXR0aW5n
cy5zZXRTdXBwb3J0ZWRDb25zdHJhaW50cyhzdXBwb3J0ZWRDb25zdHJhaW50cyk7CiAKKyAgICAg
ICAgbV9jdXJyZW50U2V0dGluZ3MgPSBXVEZNb3ZlKHNldHRpbmdzKTsKICAgICB9CiAgICAgcmV0
dXJuIG1fY3VycmVudFNldHRpbmdzLnZhbHVlKCk7CiB9CkBAIC02NzcsNiArNjkxLDQ4IEBAIEF1
ZGlvU291cmNlUHJvdmlkZXIqIENvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OmF1ZGlvU291cmNlUHJv
dmlkZXIoKQogICAgIHJldHVybiBtX2F1ZGlvU291cmNlUHJvdmlkZXIuZ2V0KCk7CiB9CiAKK2Jv
b2wgQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6YXBwbHlTYW1wbGVSYXRlKGludCBzYW1wbGVSYXRl
KQoreworICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYmUgYWJsZSB0byBkZXNjcmliZSBzYW1wbGUg
cmF0ZSBhcyBhIGRpc2NyZWV0IHJhbmdlIGNvbnN0cmFpbnQgc28gdGhhdCB3ZSBvbmx5IGVudGVy
IGhlcmUgd2l0aCB2YWx1ZXMgdGhhdCBjYW4gYmUgYXBwbGllZC4KKyAgICBzd2l0Y2ggKHNhbXBs
ZVJhdGUpIHsKKyAgICBjYXNlIDgwMDA6CisgICAgY2FzZSAxNjAwMDoKKyAgICBjYXNlIDMyMDAw
OgorICAgIGNhc2UgNDQxMDA6CisgICAgY2FzZSA0ODAwMDoKKyAgICBjYXNlIDk2MDAwOgorICAg
ICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
ICAgIHNjaGVkdWxlUmVjb25maWd1cmF0aW9uKCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jv
b2wgQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6YXBwbHlFY2hvQ2FuY2VsbGF0aW9uKGJvb2wpCit7
CisgICAgc2NoZWR1bGVSZWNvbmZpZ3VyYXRpb24oKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
dm9pZCBDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpzY2hlZHVsZVJlY29uZmlndXJhdGlvbigpCit7
CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBhdXRvJiB1bml0ID0gQ29yZUF1ZGlv
U2hhcmVkVW5pdDo6c2luZ2xldG9uKCk7CisgICAgaWYgKCF1bml0Lmhhc0F1ZGlvVW5pdCgpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBzY2hlZHVsZURlZmVycmVkVGFzayhbdGhpcywgJnVuaXRd
IHsKKyAgICAgICAgYm9vbCBzaG91bGRSZXN0YXJ0ID0gaXNQcm9kdWNpbmdEYXRhKCk7CisgICAg
ICAgIGlmIChzaG91bGRSZXN0YXJ0KQorICAgICAgICAgICAgdW5pdC5zdG9wUHJvZHVjaW5nRGF0
YSgpOworICAgICAgICBpZiAodW5pdC5oYXNBdWRpb1VuaXQoKSkKKyAgICAgICAgICAgIHVuaXQu
Y2xlYW51cEF1ZGlvVW5pdCgpOworICAgICAgICBpZiAoc2hvdWxkUmVzdGFydCkKKyAgICAgICAg
ICAgIHVuaXQuc3RhcnRQcm9kdWNpbmdEYXRhKCk7CisgICAgfSk7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVy
ZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVB
dWRpb0NhcHR1cmVTb3VyY2UuaAppbmRleCBhNDA3YjUwYzcyMDBlMjAyODY3MzhkNzU2MzFjZDcz
YjUzNjYxNzY3Li4wNWViN2Q0MzY0MmEwODBhMWM2NGVjMjVkMjI2YjExNDIwMGYwNDI5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlv
Q2FwdHVyZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9Db3JlQXVkaW9DYXB0dXJlU291cmNlLmgKQEAgLTUxLDcgKzUxLDcgQEAgY2xhc3MgQXVk
aW9TYW1wbGVEYXRhU291cmNlOwogY2xhc3MgQ2FwdHVyZURldmljZUluZm87CiBjbGFzcyBXZWJB
dWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQzsKIAotY2xhc3MgQ29yZUF1ZGlvQ2FwdHVyZVNvdXJj
ZSA6IHB1YmxpYyBSZWFsdGltZU1lZGlhU291cmNlIHsKK2NsYXNzIENvcmVBdWRpb0NhcHR1cmVT
b3VyY2UgZmluYWwgOiBwdWJsaWMgUmVhbHRpbWVNZWRpYVNvdXJjZSB7CiBwdWJsaWM6CiAKICAg
ICBzdGF0aWMgQ2FwdHVyZVNvdXJjZU9yRXJyb3IgY3JlYXRlKGNvbnN0IFN0cmluZyYgZGV2aWNl
SUQsIGNvbnN0IE1lZGlhQ29uc3RyYWludHMqKTsKQEAgLTc0LDE0ICs3NCwxNiBAQCBwcml2YXRl
OgogCiAgICAgZnJpZW5kIGNsYXNzIENvcmVBdWRpb1NoYXJlZFVuaXQ7CiAKKyAgICB2b2lkIHNj
aGVkdWxlUmVjb25maWd1cmF0aW9uKCk7CisKICAgICBib29sIGlzQ2FwdHVyZVNvdXJjZSgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KICAgICB2b2lkIHN0YXJ0UHJvZHVjaW5nRGF0YSgp
IGZpbmFsOwogICAgIHZvaWQgc3RvcFByb2R1Y2luZ0RhdGEoKSBmaW5hbDsKICAgICBib29sIGlz
UHJvZHVjaW5nRGF0YSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNQcm9kdWNpbmdEYXRhOyB9
CiAKLSAgICBib29sIGFwcGx5Vm9sdW1lKGRvdWJsZSkgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsg
fQotICAgIGJvb2wgYXBwbHlTYW1wbGVSYXRlKGludCkgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsg
fQotICAgIGJvb2wgYXBwbHlFY2hvQ2FuY2VsbGF0aW9uKGJvb2wpIG92ZXJyaWRlIHsgcmV0dXJu
IHRydWU7IH0KKyAgICBib29sIGFwcGx5Vm9sdW1lKGRvdWJsZSkgZmluYWwgeyByZXR1cm4gdHJ1
ZTsgfQorICAgIGJvb2wgYXBwbHlTYW1wbGVSYXRlKGludCkgZmluYWw7CisgICAgYm9vbCBhcHBs
eUVjaG9DYW5jZWxsYXRpb24oYm9vbCkgZmluYWw7CiAKICAgICBjb25zdCBSZWFsdGltZU1lZGlh
U291cmNlQ2FwYWJpbGl0aWVzJiBjYXBhYmlsaXRpZXMoKSBjb25zdCBmaW5hbDsKICAgICBjb25z
dCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdzKCkgY29uc3QgZmluYWw7CkBA
IC05NCw3ICs5Niw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzU3VzcGVuZGVkIHsgZmFsc2Ug
fTsKIAogICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBh
YmlsaXRpZXM+IG1fY2FwYWJpbGl0aWVzOwotICAgIG11dGFibGUgUmVhbHRpbWVNZWRpYVNvdXJj
ZVN1cHBvcnRlZENvbnN0cmFpbnRzIG1fc3VwcG9ydGVkQ29uc3RyYWludHM7CiAgICAgbXV0YWJs
ZSBzdGQ6Om9wdGlvbmFsPFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncz4gbV9jdXJyZW50U2V0
dGluZ3M7CiAKICAgICBSZWZQdHI8V2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM+IG1fYXVk
aW9Tb3VyY2VQcm92aWRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9D
b2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmNwcAppbmRleCA5YzNk
ZTc3ZTI1ZmNlOGYwNjUyOWQyYjYwNGU1MTViNzYzZTI4YjUzLi5iN2M4YWU4Y2RiODAzNGUzZjEz
M2Y1YTEyMDcwYWNlYmM1MmZlYzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwCkBA
IC0xMjUsNyArMTI1LDcgQEAgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTo6flVzZXJNZWRp
YUNhcHR1cmVNYW5hZ2VyUHJveHkoKQogICAgIG1fcHJvY2Vzcy5yZW1vdmVNZXNzYWdlUmVjZWl2
ZXIoTWVzc2FnZXM6OlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSk7CiB9CiAKLXZvaWQgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTo6Y3JlYXRl
TWVkaWFTb3VyY2VGb3JDYXB0dXJlRGV2aWNlV2l0aENvbnN0cmFpbnRzKHVpbnQ2NF90IGlkLCBj
b25zdCBTdHJpbmcmIGRldmljZUlELCBXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlOjpUeXBl
IHR5cGUsIGNvbnN0IE1lZGlhQ29uc3RyYWludHNEYXRhJiBjb25zdHJhaW50c0RhdGEsIGJvb2wm
IHN1Y2NlZWRlZCwgU3RyaW5nJiBpbnZhbGlkQ29uc3RyYWludHMpCit2b2lkIFVzZXJNZWRpYUNh
cHR1cmVNYW5hZ2VyUHJveHk6OmNyZWF0ZU1lZGlhU291cmNlRm9yQ2FwdHVyZURldmljZVdpdGhD
b25zdHJhaW50cyh1aW50NjRfdCBpZCwgY29uc3QgU3RyaW5nJiBkZXZpY2VJRCwgV2ViQ29yZTo6
UmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSB0eXBlLCBjb25zdCBNZWRpYUNvbnN0cmFpbnRzRGF0
YSYgY29uc3RyYWludHNEYXRhLCBib29sJiBzdWNjZWVkZWQsIFN0cmluZyYgaW52YWxpZENvbnN0
cmFpbnRzLCBXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdzKQog
ewogICAgIENhcHR1cmVTb3VyY2VPckVycm9yIHNvdXJjZU9yRXJyb3I7CiAgICAgYXV0byBjb25z
dHJhaW50cyA9IE1lZGlhQ29uc3RyYWludHNJbXBsOjpjcmVhdGUoTWVkaWFDb25zdHJhaW50c0Rh
dGEoY29uc3RyYWludHNEYXRhKSk7CkBAIC0xNDIsOSArMTQyLDExIEBAIHZvaWQgVXNlck1lZGlh
Q2FwdHVyZU1hbmFnZXJQcm94eTo6Y3JlYXRlTWVkaWFTb3VyY2VGb3JDYXB0dXJlRGV2aWNlV2l0
aENvbnN0cmFpCiAgICAgfQogCiAgICAgc3VjY2VlZGVkID0gISFzb3VyY2VPckVycm9yOwotICAg
IGlmIChzb3VyY2VPckVycm9yKQotICAgICAgICBtX3Byb3hpZXMuc2V0KGlkLCBzdGQ6Om1ha2Vf
dW5pcXVlPFNvdXJjZVByb3h5PihpZCwgKnRoaXMsIHNvdXJjZU9yRXJyb3Iuc291cmNlKCkpKTsK
LSAgICBlbHNlCisgICAgaWYgKHNvdXJjZU9yRXJyb3IpIHsKKyAgICAgICAgYXV0byBzb3VyY2Ug
PSBzb3VyY2VPckVycm9yLnNvdXJjZSgpOworICAgICAgICBzZXR0aW5ncyA9IHNvdXJjZS0+c2V0
dGluZ3MoKTsKKyAgICAgICAgbV9wcm94aWVzLnNldChpZCwgc3RkOjptYWtlX3VuaXF1ZTxTb3Vy
Y2VQcm94eT4oaWQsICp0aGlzLCBXVEZNb3ZlKHNvdXJjZSkpKTsKKyAgICB9IGVsc2UKICAgICAg
ICAgaW52YWxpZENvbnN0cmFpbnRzID0gV1RGTW92ZShzb3VyY2VPckVycm9yLmVycm9yTWVzc2Fn
ZSk7CiB9CiAKQEAgLTE4Myw2ICsxODUsMjEgQEAgdm9pZCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdl
clByb3h5OjpzZXRFbmFibGVkKHVpbnQ2NF90IGlkLCBib29sIGVuYWJsZWQpCiAgICAgICAgIGl0
ZXItPnZhbHVlLT5zb3VyY2UoKS5zZXRFbmFibGVkKGVuYWJsZWQpOwogfQogCit2b2lkIFVzZXJN
ZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6OmFwcGx5Q29uc3RyYWludHModWludDY0X3QgaWQsIGNv
bnN0IFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludHNEYXRhJiBjb25zdHJhaW50c0RhdGEpCit7Cisg
ICAgYXV0byBjb25zdHJhaW50cyA9IE1lZGlhQ29uc3RyYWludHNJbXBsOjpjcmVhdGUoTWVkaWFD
b25zdHJhaW50c0RhdGEoY29uc3RyYWludHNEYXRhKSk7CisgICAgYXV0byBpdGVyID0gbV9wcm94
aWVzLmZpbmQoaWQpOworICAgIGlmIChpdGVyID09IG1fcHJveGllcy5lbmQoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgYXV0byYgc291cmNlID0gaXRlci0+dmFsdWUtPnNvdXJjZSgpOworICAg
IGF1dG8gcmVzdWx0ID0gc291cmNlLmFwcGx5Q29uc3RyYWludHMoY29uc3RyYWludHMpOworICAg
IGlmICghcmVzdWx0KQorICAgICAgICBtX3Byb2Nlc3Muc2VuZChNZXNzYWdlczo6VXNlck1lZGlh
Q2FwdHVyZU1hbmFnZXI6OkFwcGx5Q29uc3RyYWludHNTdWNjZWVkZWQoaWQsIHNvdXJjZS5zZXR0
aW5ncygpKSwgMCk7CisgICAgZWxzZQorICAgICAgICBtX3Byb2Nlc3Muc2VuZChNZXNzYWdlczo6
VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OkFwcGx5Q29uc3RyYWludHNGYWlsZWQoaWQsIHJlc3Vs
dC52YWx1ZSgpLmZpcnN0LCByZXN1bHQudmFsdWUoKS5zZWNvbmQpLCAwKTsKK30KKwogfQogCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVk
aWFDYXB0dXJlTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2Ev
VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5oCmluZGV4IDQxMzlkYjI0ZDQ3NTIwOWVjM2U3
Y2QzY2JmN2JkODM0YTI3OGNiY2UuLjJhNTFkN2MyNWJiNWNiZTcwNjY4NTQ2ZjhlNjQ2MDBkOGU5
YjVmYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVk
aWFDYXB0dXJlTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nv
Y29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuaApAQCAtNDksMTIgKzQ5LDEzIEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
OkRlY29kZXImKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYp
IGZpbmFsOwogCi0gICAgdm9pZCBjcmVhdGVNZWRpYVNvdXJjZUZvckNhcHR1cmVEZXZpY2VXaXRo
Q29uc3RyYWludHModWludDY0X3QgaWQsIGNvbnN0IFN0cmluZyYgZGV2aWNlSUQsIFdlYkNvcmU6
OlJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWlu
dHNEYXRhJiwgYm9vbCYgc3VjY2VlZGVkLCBTdHJpbmcmIGludmFsaWRDb25zdHJhaW50cyk7Cisg
ICAgdm9pZCBjcmVhdGVNZWRpYVNvdXJjZUZvckNhcHR1cmVEZXZpY2VXaXRoQ29uc3RyYWludHMo
dWludDY0X3QgaWQsIGNvbnN0IFN0cmluZyYgZGV2aWNlSUQsIFdlYkNvcmU6OlJlYWx0aW1lTWVk
aWFTb3VyY2U6OlR5cGUsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludHNEYXRhJiwgYm9v
bCYgc3VjY2VlZGVkLCBTdHJpbmcmIGludmFsaWRDb25zdHJhaW50cywgV2ViQ29yZTo6UmVhbHRp
bWVNZWRpYVNvdXJjZVNldHRpbmdzJik7CiAgICAgdm9pZCBzdGFydFByb2R1Y2luZ0RhdGEodWlu
dDY0X3QpOwogICAgIHZvaWQgc3RvcFByb2R1Y2luZ0RhdGEodWludDY0X3QpOwogICAgIHZvaWQg
Y2FwYWJpbGl0aWVzKHVpbnQ2NF90LCBXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJp
bGl0aWVzJik7CiAgICAgdm9pZCBzZXRNdXRlZCh1aW50NjRfdCwgYm9vbCk7CiAgICAgdm9pZCBz
ZXRFbmFibGVkKHVpbnQ2NF90LCBib29sKTsKKyAgICB2b2lkIGFwcGx5Q29uc3RyYWludHModWlu
dDY0X3QsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludHNEYXRhJik7CiAKICAgICBjbGFz
cyBTb3VyY2VQcm94eTsKICAgICBmcmllbmQgY2xhc3MgU291cmNlUHJveHk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQ
cm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVk
aWFDYXB0dXJlTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDFmYzA5M2U1YjMwOTZmNTEw
ZGRlOGZmNGFjZTY0ZmQxNDAxM2I3YWEuLmEzYzgxNGZlYjljMDgyZTMwNTU0ZmMzNTliOTU2YThm
ZWZlMGRhYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9Vc2Vy
TWVkaWFDYXB0dXJlTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmlu
CkBAIC0yMiwxMCArMjIsMTEgQEAKICMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
CiBtZXNzYWdlcyAtPiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5IHsKLSAgICBDcmVhdGVN
ZWRpYVNvdXJjZUZvckNhcHR1cmVEZXZpY2VXaXRoQ29uc3RyYWludHModWludDY0X3QgaWQsIFN0
cmluZyBkZXZpY2VJRCwgV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSB0eXBlLCBz
dHJ1Y3QgV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50c0RhdGEgY29uc3RyYWludHMpIC0+IChib29s
IHN1Y2Nlc3MsIFN0cmluZyBpbnZhbGlkQ29uc3RyYWludHMpCisgICAgQ3JlYXRlTWVkaWFTb3Vy
Y2VGb3JDYXB0dXJlRGV2aWNlV2l0aENvbnN0cmFpbnRzKHVpbnQ2NF90IGlkLCBTdHJpbmcgZGV2
aWNlSUQsIFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUgdHlwZSwgc3RydWN0IFdl
YkNvcmU6Ok1lZGlhQ29uc3RyYWludHNEYXRhIGNvbnN0cmFpbnRzKSAtPiAoYm9vbCBzdWNjZXNz
LCBTdHJpbmcgaW52YWxpZENvbnN0cmFpbnRzLCBXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNl
U2V0dGluZ3Mgc2V0dGluZ3MpCiAgICAgU3RhcnRQcm9kdWNpbmdEYXRhKHVpbnQ2NF90IGlkKQog
ICAgIFN0b3BQcm9kdWNpbmdEYXRhKHVpbnQ2NF90IGlkKQogICAgIENhcGFiaWxpdGllcyh1aW50
NjRfdCBpZCkgLT4gKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMgY2Fw
YWJpbGl0aWVzKQogICAgIFNldE11dGVkKHVpbnQ2NF90IGlkLCBib29sIG11dGVkKQogICAgIFNl
dEVuYWJsZWQodWludDY0X3QgaWQsIGJvb2wgZW5hYmxlZCkKKyAgICBBcHBseUNvbnN0cmFpbnRz
KHVpbnQ2NF90IGlkLCBzdHJ1Y3QgV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50c0RhdGEgY29uc3Ry
YWludHMpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1Vz
ZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29j
b2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3BwCmluZGV4IDRkNGYwMjYyZmQ5YjExODNiODA0
MzkwOTRlNWYzMTRjZjA2ZTU0NWEuLmE5ZDU3ZjU5NTg1NDRlYjQ0M2JiNjJlYWQ5YTliZDg3NDE0
MDQ1YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvVXNlck1l
ZGlhQ2FwdHVyZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29j
b2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3BwCkBAIC03Myw5ICs3Myw5IEBAIHB1YmxpYzoK
ICAgICB9CiAKICAgICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdz
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zZXR0aW5nczsgfQotICAgIHZvaWQgc2V0U2V0dGlu
Z3MoY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBzZXR0aW5ncykKKyAgICB2b2lk
IHNldFNldHRpbmdzKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYmIHNldHRpbmdzKQogICAg
IHsKLSAgICAgICAgbV9zZXR0aW5ncyA9IHNldHRpbmdzOworICAgICAgICBtX3NldHRpbmdzID0g
V1RGTW92ZShzZXR0aW5ncyk7CiAgICAgICAgIHNldHRpbmdzRGlkQ2hhbmdlKCk7CiAgICAgfQog
CkBAIC0xMTQsNyArMTE0LDIwIEBAIHB1YmxpYzoKICAgICAgICAgICAgIG9ic2VydmVyLT5hdWRp
b1NhbXBsZXNBdmFpbGFibGUodGltZSwgYXVkaW9EYXRhLCBtX2Rlc2NyaXB0aW9uLCBudW1iZXJP
ZkZyYW1lcyk7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIHNldE11dGVkKGJvb2wgbXV0ZWQp
CisgICAgdm9pZCBhcHBseUNvbnN0cmFpbnRzU3VjY2VlZGVkKGNvbnN0IFdlYkNvcmU6OlJlYWx0
aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgc2V0dGluZ3MpCisgICAgeworICAgICAgICBhdXRvIGNh
bGxiYWNrcyA9IG1fcGVuZGluZ0FwcGx5Q29uc3RyYWludHNDYWxsYmFja3MudGFrZUZpcnN0KCk7
CisgICAgICAgIHNldFNldHRpbmdzKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5n
cyhzZXR0aW5ncykpOworICAgICAgICBjYWxsYmFja3Muc3VjY2Vzc0hhbmRsZXIoKTsKKyAgICB9
CisKKyAgICB2b2lkIGFwcGx5Q29uc3RyYWludHNGYWlsZWQoY29uc3QgU3RyaW5nJiBmYWlsZWRD
b25zdHJhaW50LCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKKyAgICB7CisgICAgICAgIGF1
dG8gY2FsbGJhY2tzID0gbV9wZW5kaW5nQXBwbHlDb25zdHJhaW50c0NhbGxiYWNrcy50YWtlRmly
c3QoKTsKKyAgICAgICAgY2FsbGJhY2tzLmZhaWx1cmVIYW5kbGVyKGZhaWxlZENvbnN0cmFpbnQs
IGVycm9yTWVzc2FnZSk7CisgICAgfQorCisgICAgdm9pZCBzZXRNdXRlZChib29sIG11dGVkKSBm
aW5hbAogICAgIHsKICAgICAgICAgaWYgKG1fbXV0ZWQgPT0gbXV0ZWQpCiAgICAgICAgICAgICBy
ZXR1cm47CkBAIC0xMjMsNyArMTM2LDcgQEAgcHVibGljOgogICAgICAgICBtX21hbmFnZXIuc2V0
TXV0ZWQobV9pZCwgbV9tdXRlZCk7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIHNldEVuYWJs
ZWQoYm9vbCBlbmFibGVkKQorICAgIHZvaWQgc2V0RW5hYmxlZChib29sIGVuYWJsZWQpIGZpbmFs
CiAgICAgewogICAgICAgICBpZiAobV9lbmFibGVkID09IGVuYWJsZWQpCiAgICAgICAgICAgICBy
ZXR1cm47CkBAIC0xMzIsNiArMTQ1LDcgQEAgcHVibGljOgogICAgICAgICBtX21hbmFnZXIuc2V0
RW5hYmxlZChtX2lkLCBtX2VuYWJsZWQpOwogICAgIH0KIAorcHJpdmF0ZToKICAgICB2b2lkIHN0
YXJ0UHJvZHVjaW5nRGF0YSgpIGZpbmFsIHsgbV9tYW5hZ2VyLnN0YXJ0UHJvZHVjaW5nRGF0YSht
X2lkKTsgfQogICAgIHZvaWQgc3RvcFByb2R1Y2luZ0RhdGEoKSBmaW5hbCB7IG1fbWFuYWdlci5z
dG9wUHJvZHVjaW5nRGF0YShtX2lkKTsgfQogICAgIGJvb2wgaXNDYXB0dXJlU291cmNlKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQpAQCAtMTQ1LDExICsxNTksMTUgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gbV9hdWRpb1NvdXJjZVByb3ZpZGVyLmdldCgpOwogICAgIH0KIAotcHJp
dmF0ZToKICAgICAvLyBSZWFsdGltZU1lZGlhU291cmNlCiAgICAgdm9pZCBiZWdpbkNvbmZpZ3Vy
YXRpb24oKSBmaW5hbCB7IH0KICAgICB2b2lkIGNvbW1pdENvbmZpZ3VyYXRpb24oKSBmaW5hbCB7
IH0KIAorICAgIHZvaWQgYXBwbHlDb25zdHJhaW50cyhjb25zdCBXZWJDb3JlOjpNZWRpYUNvbnN0
cmFpbnRzJiBjb25zdHJhaW50cywgU3VjY2Vzc0hhbmRsZXImJiBzdWNjZXNzSGFuZGxlciwgRmFp
bHVyZUhhbmRsZXImJiBmYWlsdXJlSGFuZGxlcikgZmluYWwgeworICAgICAgICBtX21hbmFnZXIu
YXBwbHlDb25zdHJhaW50cyhtX2lkLCBjb25zdHJhaW50cyk7CisgICAgICAgIG1fcGVuZGluZ0Fw
cGx5Q29uc3RyYWludHNDYWxsYmFja3MuYXBwZW5kKHsgV1RGTW92ZShzdWNjZXNzSGFuZGxlciks
IFdURk1vdmUoZmFpbHVyZUhhbmRsZXIpfSk7CisgICAgfQorCiAgICAgdWludDY0X3QgbV9pZDsK
ICAgICBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlciYgbV9tYW5hZ2VyOwogICAgIG11dGFibGUgc3Rk
OjpvcHRpb25hbDxSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzPiBtX2NhcGFiaWxpdGll
czsKQEAgLTE1Nyw2ICsxNzUsMTIgQEAgcHJpdmF0ZToKICAgICBDQUF1ZGlvU3RyZWFtRGVzY3Jp
cHRpb24gbV9kZXNjcmlwdGlvbjsKICAgICBDQVJpbmdCdWZmZXIgbV9yaW5nQnVmZmVyOwogICAg
IFJlZlB0cjxXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQz4gbV9hdWRpb1NvdXJjZVByb3Zp
ZGVyOworCisgICAgc3RydWN0IEFwcGx5Q29uc3RyYWludHNDYWxsYmFjayB7CisgICAgICAgIFN1
Y2Nlc3NIYW5kbGVyIHN1Y2Nlc3NIYW5kbGVyOworICAgICAgICBGYWlsdXJlSGFuZGxlciBmYWls
dXJlSGFuZGxlcjsKKyAgICB9OworICAgIERlcXVlPEFwcGx5Q29uc3RyYWludHNDYWxsYmFjaz4g
bV9wZW5kaW5nQXBwbHlDb25zdHJhaW50c0NhbGxiYWNrczsKIH07CiAKIFVzZXJNZWRpYUNhcHR1
cmVNYW5hZ2VyOjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcihXZWJQcm9jZXNzKiBwcm9jZXNzKQpA
QCAtMTk0LDExICsyMTgsMTMgQEAgV2ViQ29yZTo6Q2FwdHVyZVNvdXJjZU9yRXJyb3IgVXNlck1l
ZGlhQ2FwdHVyZU1hbmFnZXI6OmNyZWF0ZUNhcHR1cmVTb3VyY2UoY29uc3QKICAgICBjb25zdHJh
aW50c0RhdGEuaXNWYWxpZCA9IGNvbnN0cmFpbnRzLT5pc1ZhbGlkKCk7CiAgICAgYm9vbCBzdWNj
ZWVkZWQ7CiAKKyAgICBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3Mgc2V0dGluZ3M7CiAgICAg
U3RyaW5nIGVycm9yTWVzc2FnZTsKLSAgICBpZiAoIW1fcHJvY2Vzcy5zZW5kU3luYyhNZXNzYWdl
czo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTo6Q3JlYXRlTWVkaWFTb3VyY2VGb3JDYXB0
dXJlRGV2aWNlV2l0aENvbnN0cmFpbnRzKGlkLCBkZXZpY2VJRCwgc291cmNlVHlwZSwgY29uc3Ry
YWludHNEYXRhKSwgTWVzc2FnZXM6OlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6OkNyZWF0
ZU1lZGlhU291cmNlRm9yQ2FwdHVyZURldmljZVdpdGhDb25zdHJhaW50czo6UmVwbHkoc3VjY2Vl
ZGVkLCBlcnJvck1lc3NhZ2UpLCAwKSkKKyAgICBpZiAoIW1fcHJvY2Vzcy5zZW5kU3luYyhNZXNz
YWdlczo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTo6Q3JlYXRlTWVkaWFTb3VyY2VGb3JD
YXB0dXJlRGV2aWNlV2l0aENvbnN0cmFpbnRzKGlkLCBkZXZpY2VJRCwgc291cmNlVHlwZSwgY29u
c3RyYWludHNEYXRhKSwgTWVzc2FnZXM6OlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6OkNy
ZWF0ZU1lZGlhU291cmNlRm9yQ2FwdHVyZURldmljZVdpdGhDb25zdHJhaW50czo6UmVwbHkoc3Vj
Y2VlZGVkLCBlcnJvck1lc3NhZ2UsIHNldHRpbmdzKSwgMCkpCiAgICAgICAgIHJldHVybiBXVEZN
b3ZlKGVycm9yTWVzc2FnZSk7CiAKICAgICBhdXRvIHNvdXJjZSA9IGFkb3B0UmVmKCpuZXcgU291
cmNlKFN0cmluZzo6bnVtYmVyKGlkKSwgc291cmNlVHlwZSwgZW1wdHlTdHJpbmcoKSwgaWQsICp0
aGlzKSk7CisgICAgc291cmNlLT5zZXRTZXR0aW5ncyhXVEZNb3ZlKHNldHRpbmdzKSk7CiAgICAg
bV9zb3VyY2VzLnNldChpZCwgc291cmNlLmNvcHlSZWYoKSk7CiAgICAgcmV0dXJuIFdlYkNvcmU6
OkNhcHR1cmVTb3VyY2VPckVycm9yKFdURk1vdmUoc291cmNlKSk7CiB9CkBAIC0yMjQsNyArMjUw
LDcgQEAgdm9pZCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6c291cmNlRW5hYmxlZENoYW5nZWQo
dWludDY0X3QgaWQsIGJvb2wgZW5hYmxlZCkKIHZvaWQgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6
OnNvdXJjZVNldHRpbmdzQ2hhbmdlZCh1aW50NjRfdCBpZCwgY29uc3QgUmVhbHRpbWVNZWRpYVNv
dXJjZVNldHRpbmdzJiBzZXR0aW5ncykKIHsKICAgICBBU1NFUlQobV9zb3VyY2VzLmNvbnRhaW5z
KGlkKSk7Ci0gICAgbV9zb3VyY2VzLmdldChpZCktPnNldFNldHRpbmdzKHNldHRpbmdzKTsKKyAg
ICBtX3NvdXJjZXMuZ2V0KGlkKS0+c2V0U2V0dGluZ3MoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRp
bmdzKHNldHRpbmdzKSk7CiB9CiAKIHZvaWQgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OnN0b3Jh
Z2VDaGFuZ2VkKHVpbnQ2NF90IGlkLCBjb25zdCBTaGFyZWRNZW1vcnk6OkhhbmRsZSYgaGFuZGxl
LCBjb25zdCBXZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCB1
aW50NjRfdCBudW1iZXJPZkZyYW1lcykKQEAgLTI3NCw2ICszMDAsMzAgQEAgdm9pZCBVc2VyTWVk
aWFDYXB0dXJlTWFuYWdlcjo6c2V0RW5hYmxlZCh1aW50NjRfdCBpZCwgYm9vbCBlbmFibGVkKQog
ICAgIG1fcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5
OjpTZXRFbmFibGVkKGlkLCBlbmFibGVkKSwgMCk7CiB9CiAKK3ZvaWQgVXNlck1lZGlhQ2FwdHVy
ZU1hbmFnZXI6OmFwcGx5Q29uc3RyYWludHModWludDY0X3QgaWQsIGNvbnN0IFdlYkNvcmU6Ok1l
ZGlhQ29uc3RyYWludHMmIGNvbnN0cmFpbnRzKQoreworICAgIE1lZGlhQ29uc3RyYWludHNEYXRh
IGNvbnN0cmFpbnRzRGF0YTsKKyAgICBjb25zdHJhaW50c0RhdGEubWFuZGF0b3J5Q29uc3RyYWlu
dHMgPSBjb25zdHJhaW50cy5tYW5kYXRvcnlDb25zdHJhaW50cygpOworICAgIGNvbnN0cmFpbnRz
RGF0YS5hZHZhbmNlZENvbnN0cmFpbnRzID0gY29uc3RyYWludHMuYWR2YW5jZWRDb25zdHJhaW50
cygpOworICAgIGNvbnN0cmFpbnRzRGF0YS5pc1ZhbGlkID0gY29uc3RyYWludHMuaXNWYWxpZCgp
OworCisgICAgbV9wcm9jZXNzLnNlbmQoTWVzc2FnZXM6OlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2Vy
UHJveHk6OkFwcGx5Q29uc3RyYWludHMoaWQsIGNvbnN0cmFpbnRzRGF0YSksIDApOworfQorCit2
b2lkIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOjphcHBseUNvbnN0cmFpbnRzU3VjY2VlZGVkKHVp
bnQ2NF90IGlkLCBjb25zdCBXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNl
dHRpbmdzKQoreworICAgIEFTU0VSVChtX3NvdXJjZXMuY29udGFpbnMoaWQpKTsKKyAgICBhdXRv
JiBzb3VyY2UgPSAqbV9zb3VyY2VzLmdldChpZCk7CisgICAgc291cmNlLmFwcGx5Q29uc3RyYWlu
dHNTdWNjZWVkZWQoc2V0dGluZ3MpOworfQorCit2b2lkIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2Vy
OjphcHBseUNvbnN0cmFpbnRzRmFpbGVkKHVpbnQ2NF90IGlkLCBjb25zdCBTdHJpbmcmIGZhaWxl
ZENvbnN0cmFpbnQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBBU1NFUlQobV9zb3Vy
Y2VzLmNvbnRhaW5zKGlkKSk7CisgICAgYXV0byYgc291cmNlID0gKm1fc291cmNlcy5nZXQoaWQp
OworICAgIHNvdXJjZS5hcHBseUNvbnN0cmFpbnRzRmFpbGVkKGZhaWxlZENvbnN0cmFpbnQsIG1l
c3NhZ2UpOworfQorCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oCmluZGV4IGE4YTkzYWJk
ZWU1ZThlZGM2ZDAyMTk4YjUxMDY5NDljNWU0ODliNjcuLmM5MGY2ZGVjOTRmNmI3OTI1MjM1YTQz
MzdlMmIyZGNlMzcwOWU0ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
Y29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmgKQEAgLTc1LDYgKzc1LDkgQEAg
cHJpdmF0ZToKICAgICBXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiYg
Y2FwYWJpbGl0aWVzKHVpbnQ2NF90KTsKICAgICB2b2lkIHNldE11dGVkKHVpbnQ2NF90LCBib29s
KTsKICAgICB2b2lkIHNldEVuYWJsZWQodWludDY0X3QsIGJvb2wpOworICAgIHZvaWQgYXBwbHlD
b25zdHJhaW50cyh1aW50NjRfdCwgY29uc3QgV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50cyYpOwor
ICAgIHZvaWQgYXBwbHlDb25zdHJhaW50c1N1Y2NlZWRlZCh1aW50NjRfdCwgY29uc3QgV2ViQ29y
ZTo6UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJik7CisgICAgdm9pZCBhcHBseUNvbnN0cmFp
bnRzRmFpbGVkKHVpbnQ2NF90LCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKIAogICAg
IGNsYXNzIFNvdXJjZTsKICAgICBmcmllbmQgY2xhc3MgU291cmNlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVy
ZU1hbmFnZXIubWVzc2FnZXMuaW4KaW5kZXggZWVjMDU2NWM2ODY0YTQ2YjAwZTlmOGZiOTEwYzE4
Yzg5ZTllNGExMy4uMWZjMWYwMjkyZDU1ZTg1MmUwNTNkNTJiNzMwNzU0ZmM0NGI0MWJkZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJl
TWFuYWdlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29h
L1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC0yOCw0ICsyOCw2IEBAIG1l
c3NhZ2VzIC0+IFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyIHsKICAgICBTb3VyY2VTZXR0aW5nc0No
YW5nZWQodWludDY0X3QgaWQsIFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyBz
ZXR0aW5ncykKICAgICBTdG9yYWdlQ2hhbmdlZCh1aW50NjRfdCBpZCwgV2ViS2l0OjpTaGFyZWRN
ZW1vcnk6OkhhbmRsZSBzdG9yYWdlSGFuZGxlLCBXZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3Jp
cHRpb24gZGVzY3JpcHRpb24sIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKQogICAgIEF1ZGlvU2Ft
cGxlc0F2YWlsYWJsZSh1aW50NjRfdCBpZCwgTWVkaWFUaW1lIHRpbWUsIHVpbnQ2NF90IG51bWJl
ck9mRnJhbWVzLCB1aW50NjRfdCBzdGFydEZyYW1lLCB1aW50NjRfdCBlbmRGcmFtZSkKKyAgICBB
cHBseUNvbnN0cmFpbnRzU3VjY2VlZGVkKHVpbnQ2NF90IGlkLCBXZWJDb3JlOjpSZWFsdGltZU1l
ZGlhU291cmNlU2V0dGluZ3Mgc2V0dGluZ3MpCisgICAgQXBwbHlDb25zdHJhaW50c0ZhaWxlZCh1
aW50NjRfdCBpZCwgU3RyaW5nIGZhaWxlZENvbnN0cmFpbnQsIFN0cmluZyBtZXNzYWdlKQogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309324</attachid>
            <date>2017-05-07 11:28:38 -0700</date>
            <delta_ts>2017-05-08 15:05:53 -0700</delta_ts>
            <desc>Fixing start/stop and using last client</desc>
            <filename>bug-171633-20170507112840.patch</filename>
            <type>text/plain</type>
            <size>40571</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2MzA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWRkYTc1NGJmNmZlYWY4
OGU1MTVmYTk2NTMyYmFjMzAwMTBiYWM5Ni4uZmUzODg3ZTVmZDdkN2I2YWE4Y2I3YjM5ODdiODc0
Y2Y5MmJhYTFkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDE3LTA1LTA1ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3Ig
cmVhZGluZyBhbmQgd3JpdGluZyBzZXR0aW5ncyBmcm9tIFVJUHJvY2VzcyBhdWRpbyBjYXB0dXJl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzE2MzMK
KworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgQ292ZXJlZCBi
eSBtYW51YWwgdGVzdGluZyBhbmQgZXhpc3RpbmcgdGVzdCBzZXRzLgorCisgICAgICAgIE1vdmlu
ZyBzdWNjZXNzL2ZhaWx1cmUgY2FsbGJhY2tzIGZvciBhcHBseUNvbnN0cmFpbnRzLgorICAgICAg
ICBNYWtpbmcgbWFpbiBSZWFsdGltZU1lZGlhU291cmNlOjphcHBseUNvbnN0cmFpbnRzIHZpcnR1
YWwgc28gdGhhdCBXZWJQcm9jZXNzIHNvdXJjZSBwcm94aWVzIGNhbiBpbXBsZW1lbnQgaXQgYnkK
KyAgICAgICAgZG9pbmcgYW4gSVBDIGNhbGwgZGlyZWN0bHkuIERvaW5nIHNvIGZvciBVSVByb2Nl
c3MgQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS4KKworICAgICAgICBBZGRpbmcgc3VwcG9ydCBmb3Ig
dm9sdW1lIHRvIENvcmVBdWRpb0NhcHR1cmVTb3VyY2UgYnkgYXBwbHlpbmcgZ2FpbiBwb3N0LWNh
cHR1cmluZy4KKyAgICAgICAgQWRkaW5nIHN1cHBvcnQgZm9yIHRvZ2dsaW5nIGVjaG8gY2FuY2Vs
bGF0aW9uIGluIENvcmVBdWRpb0NhcHR1cmVTb3VyY2UuCisgICAgICAgIEFkZGluZyBzdXBwb3J0
IHRvIGNoYW5nZSBlY2hvIGNhbmNlbGxhdGlvbiBhbmQgc2FtcGxlIHJhdGUgYnkgc2NoZWR1bGlu
ZyBhIHJlY29uZmlndXJhdGlvbiBvZiB0aGUgYXVkaW8gdW5pdC4KKyAgICAgICAgVG8gZG8gc28s
IHdlIHN0b3AgcHJvZHVjaW5nIGRhdGEsIGRlbGV0ZSB0aGUgYXVkaW8gdW5pdCBhbmQgcmVzdGFy
dCBwcm9kdWNpbmcgZGF0YS4KKyAgICAgICAgUmVtb3ZpbmcgQ29yZUF1ZGlvQ2FwdHVyZVNvdXJj
ZTo6c3VwcG9ydGVkQ29uc3RyYWludHMgYXMgaXQgaXMgcmVkdW5kYW50IHdpdGgKKyAgICAgICAg
UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpzdXBwb3J0ZWRDb25zdHJhaW50cy4KKworICAg
ICAgICBTZXR0aW5nIHNhbXBsZSByYXRlIG9ubHkgdG8gdGhlIGZvbGxvd2luZyB2YWx1ZXM6IDgw
MDAsIDE2MDAwLCAzMjAwMCwgNDQxMDAsIDQ4MDAwLgorCisgICAgICAgICogTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3Ry
ZWFtVHJhY2s6OmFwcGx5Q29uc3RyYWludHMpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U3RyZWFtVHJhY2tQcml2YXRlOjphcHBseUNvbnN0cmFpbnRzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5oOgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6YXBwbHlDb25zdHJhaW50cyk6CisgICAgICAgICogcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5oOgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5oOgorICAgICAgICAo
V2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpzdXBwb3J0ZWRDb25zdHJhaW50
cyk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVT
b3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6fkNv
cmVBdWRpb0NhcHR1cmVTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q29yZUF1ZGlvQ2FwdHVy
ZVNvdXJjZTo6cHJvY2Vzc01pY3JvcGhvbmVTYW1wbGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
cmVBdWRpb0NhcHR1cmVTb3VyY2U6OmNsZWFudXBBdWRpb1VuaXQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6Y3JlYXRlQXVkaW9Vbml0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OmNvbmZpZ3VyZUF1ZGlvVW5pdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpzdGFydFByb2R1Y2luZ0RhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6Y2FwYWJpbGl0aWVz
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OnNldHRpbmdzKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OmFwcGx5U2FtcGxlUmF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb3JlQXVkaW9DYXB0dXJlU291cmNlOjphcHBseUVjaG9D
YW5jZWxsYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6
c2NoZWR1bGVSZWNvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q29yZUF1ZGlvQ2Fw
dHVyZVNvdXJjZTo6Y2xlYW51cEF1ZGlvVW5pdHMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6c2V0dXBBdWRpb1VuaXRzKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5o
OgorCiAyMDE3LTA1LTA1ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5j
b20+CiAKICAgICAgICAgQ3Jhc2ggaW4gSW1hZ2VGcmFtZUNhY2hlOjpkZWNvZGVkU2l6ZUNoYW5n
ZWQoKSBhZnRlciBpbWFnZSBsb2FkIGNhbmNlbGxhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDgxZjFhYWFl
OWNmNDAxYmQ4ZTAyODI5NWI3YzMxYmFmMjgwMzY1ZjkuLmMxNGE2N2YyY2VmODE2N2I0MjVlYzVm
MTQ2MTY3Y2VjZDZhNzNjZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAxNy0wNS0w
NSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBv
cnQgZm9yIHJlYWRpbmcgYW5kIHdyaXRpbmcgc2V0dGluZ3MgZnJvbSBVSVByb2Nlc3MgYXVkaW8g
Y2FwdHVyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTcxNjMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAgICog
VUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5OjpjcmVhdGVNZWRpYVNvdXJj
ZUZvckNhcHR1cmVEZXZpY2VXaXRoQ29uc3RyYWludHMpOgorICAgICAgICAoV2ViS2l0OjpVc2Vy
TWVkaWFDYXB0dXJlTWFuYWdlclByb3h5OjphcHBseUNvbnN0cmFpbnRzKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmlu
OgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6U291cmNlOjpzZXRT
ZXR0aW5ncyk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOjpTb3Vy
Y2U6OmFwcGx5Q29uc3RyYWludHNTdWNjZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVk
aWFDYXB0dXJlTWFuYWdlcjo6U291cmNlOjphcHBseUNvbnN0cmFpbnRzRmFpbGVkKToKKyAgICAg
ICAgKFdlYktpdDo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OmNyZWF0ZUNhcHR1cmVTb3VyY2Up
OgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6c291cmNlU2V0dGlu
Z3NDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OmFw
cGx5Q29uc3RyYWludHMpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdl
cjo6YXBwbHlDb25zdHJhaW50c1N1Y2NlZWRlZCk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRp
YUNhcHR1cmVNYW5hZ2VyOjphcHBseUNvbnN0cmFpbnRzRmFpbGVkKToKKyAgICAgICAgKFdlYktp
dDo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OlNvdXJjZTo6c2V0TXV0ZWQpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6U291cmNlOjpzZXRFbmFi
bGVkKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1
cmVNYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJl
TWFuYWdlci5tZXNzYWdlcy5pbjoKKwogMjAxNy0wNS0wNSAgVGltb3RoeSBIb3J0b24gIDx0aW1v
dGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgW01hY10gQWRqdXN0IGN1cnNvciBwb3Np
dGlvbiBmb3IgZHJhZ2dlZCBsaW5rIChhbmQgc3RvcCBpdCBmcm9tIG1vdmluZyBiYXNlZCBvbiBo
b3cgZmFzdCB5b3UgYXJlIGRyYWdnaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAKaW5kZXggNmE2YmE1MTVhZTdl
YzQ4NDMzYjQxNDNkN2ViZmE5OTIzYTIyZWM0ZC4uZTU1NGJjNGM2NjM4NDAxMTUxYzUwZTY3NWFk
ZTMzMzUyNGI0NjdjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwCkBAIC0yNjksNyArMjY5LDcgQEAgdm9pZCBN
ZWRpYVN0cmVhbVRyYWNrOjphcHBseUNvbnN0cmFpbnRzKGNvbnN0IHN0ZDo6b3B0aW9uYWw8TWVk
aWFUcmFja0NvbnN0cmFpbnQKICAgICAgICAgd2Vha1RoaXMtPm1fcHJvbWlzZS0+cmVzb2x2ZSgp
OwogICAgICAgICB3ZWFrVGhpcy0+bV9jb25zdHJhaW50cyA9IGNvbnN0cmFpbnRzLnZhbHVlX29y
KE1lZGlhVHJhY2tDb25zdHJhaW50cyB7IH0pOwogICAgIH07Ci0gICAgbV9wcml2YXRlLT5hcHBs
eUNvbnN0cmFpbnRzKGNyZWF0ZU1lZGlhQ29uc3RyYWludHNJbXBsKGNvbnN0cmFpbnRzKSwgc3Vj
Y2Vzc0hhbmRsZXIsIGZhaWx1cmVIYW5kbGVyKTsKKyAgICBtX3ByaXZhdGUtPmFwcGx5Q29uc3Ry
YWludHMoY3JlYXRlTWVkaWFDb25zdHJhaW50c0ltcGwoY29uc3RyYWludHMpLCBXVEZNb3ZlKHN1
Y2Nlc3NIYW5kbGVyKSwgV1RGTW92ZShmYWlsdXJlSGFuZGxlcikpOwogfQogCiB2b2lkIE1lZGlh
U3RyZWFtVHJhY2s6OmFkZE9ic2VydmVyKE9ic2VydmVyJiBvYnNlcnZlcikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2
YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
VHJhY2tQcml2YXRlLmNwcAppbmRleCA5ZmZkMDQ0M2IyYzIzMzViZGJjNmZiNjUxY2FmZTVlNDRi
ZWIwMzQzLi5mNWI0ZTI5ZTlmYmU2MjZhNTg1NjZmOWIwODFlNWY2M2E4Y2FjZTRlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNr
UHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1UcmFja1ByaXZhdGUuY3BwCkBAIC0xNDEsOSArMTQxLDkgQEAgY29uc3QgUmVhbHRp
bWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OmNhcGFi
aWxpdGllcygpIGMKICAgICByZXR1cm4gbV9zb3VyY2UtPmNhcGFiaWxpdGllcygpOwogfQogCi12
b2lkIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjphcHBseUNvbnN0cmFpbnRzKGNvbnN0IE1lZGlh
Q29uc3RyYWludHMmIGNvbnN0cmFpbnRzLCBSZWFsdGltZU1lZGlhU291cmNlOjpTdWNjZXNzSGFu
ZGxlciBzdWNjZXNzSGFuZGxlciwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6RmFpbHVyZUhhbmRsZXIg
ZmFpbHVyZUhhbmRsZXIpCit2b2lkIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjphcHBseUNvbnN0
cmFpbnRzKGNvbnN0IE1lZGlhQ29uc3RyYWludHMmIGNvbnN0cmFpbnRzLCBSZWFsdGltZU1lZGlh
U291cmNlOjpTdWNjZXNzSGFuZGxlciYmIHN1Y2Nlc3NIYW5kbGVyLCBSZWFsdGltZU1lZGlhU291
cmNlOjpGYWlsdXJlSGFuZGxlciYmIGZhaWx1cmVIYW5kbGVyKQogewotICAgIG1fc291cmNlLT5h
cHBseUNvbnN0cmFpbnRzKGNvbnN0cmFpbnRzLCBzdWNjZXNzSGFuZGxlciwgZmFpbHVyZUhhbmRs
ZXIpOworICAgIG1fc291cmNlLT5hcHBseUNvbnN0cmFpbnRzKGNvbnN0cmFpbnRzLCBXVEZNb3Zl
KHN1Y2Nlc3NIYW5kbGVyKSwgV1RGTW92ZShmYWlsdXJlSGFuZGxlcikpOwogfQogCiBBdWRpb1Nv
dXJjZVByb3ZpZGVyKiBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6YXVkaW9Tb3VyY2VQcm92aWRl
cigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbVRyYWNrUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuaAppbmRleCA0ZDc4M2UwMjU0N2ZmY2U3NTU4MWJj
NTg2Yzg1ZjUyNmU4MzJlNTcwLi41ZTIwNDZhZDVhNGNlZWE4OGRmNWQzZGFiMjQ5ZmUzYTJkNjZj
ODIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbVRyYWNrUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmgKQEAgLTg5LDcgKzg5LDcgQEAgcHVibGlj
OgogICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgc2V0dGluZ3MoKSBjb25z
dDsKICAgICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBjYXBhYmlsaXRp
ZXMoKSBjb25zdDsKIAotICAgIHZvaWQgYXBwbHlDb25zdHJhaW50cyhjb25zdCBNZWRpYUNvbnN0
cmFpbnRzJiwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6U3VjY2Vzc0hhbmRsZXIsIFJlYWx0aW1lTWVk
aWFTb3VyY2U6OkZhaWx1cmVIYW5kbGVyKTsKKyAgICB2b2lkIGFwcGx5Q29uc3RyYWludHMoY29u
c3QgTWVkaWFDb25zdHJhaW50cyYsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlN1Y2Nlc3NIYW5kbGVy
JiYsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OkZhaWx1cmVIYW5kbGVyJiYpOwogCiAgICAgQXVkaW9T
b3VyY2VQcm92aWRlciogYXVkaW9Tb3VyY2VQcm92aWRlcigpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2Uu
Y3BwCmluZGV4IDE5MWRhZWUyZDExNjgwZDQxM2VmN2YwNDRiZmE4ZTVlMDI3MmRlNTguLjRiNGU0
NjQ3MmFmZmE5NDdlYTgyOGVhNDVkNmQwYmIwM2UwNDY1MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2Uu
Y3BwCkBAIC03NTEsNyArNzUxLDcgQEAgc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8U3RyaW5nLCBT
dHJpbmc+PiBSZWFsdGltZU1lZGlhU291cmNlOjphcHBseUNvbnN0cmFpbnRzKGMKICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogfQogCi12b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OmFwcGx5Q29u
c3RyYWludHMoY29uc3QgTWVkaWFDb25zdHJhaW50cyYgY29uc3RyYWludHMsIFN1Y2Nlc3NIYW5k
bGVyIHN1Y2Nlc3NIYW5kbGVyLCBGYWlsdXJlSGFuZGxlciBmYWlsdXJlSGFuZGxlcikKK3ZvaWQg
UmVhbHRpbWVNZWRpYVNvdXJjZTo6YXBwbHlDb25zdHJhaW50cyhjb25zdCBNZWRpYUNvbnN0cmFp
bnRzJiBjb25zdHJhaW50cywgU3VjY2Vzc0hhbmRsZXImJiBzdWNjZXNzSGFuZGxlciwgRmFpbHVy
ZUhhbmRsZXImJiBmYWlsdXJlSGFuZGxlcikKIHsKICAgICBhdXRvIHJlc3VsdCA9IGFwcGx5Q29u
c3RyYWludHMoY29uc3RyYWludHMpOwogICAgIGlmICghcmVzdWx0ICYmIHN1Y2Nlc3NIYW5kbGVy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRp
bWVNZWRpYVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVh
bHRpbWVNZWRpYVNvdXJjZS5oCmluZGV4IDJhZjYxMWZhZjk0ZjlmODI0ZTEzYmMwNjM0YWZmYTc5
Y2U3M2RmMTAuLmNkZWEzZTUyNzVjM2UyZmY1ZjE4ZTM5YzZmMmI1NTBlZTVhYTlhZDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFT
b3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGlt
ZU1lZGlhU291cmNlLmgKQEAgLTEyMyw3ICsxMjMsNyBAQCBwdWJsaWM6CiAKICAgICB1c2luZyBT
dWNjZXNzSGFuZGxlciA9IHN0ZDo6ZnVuY3Rpb248dm9pZCgpPjsKICAgICB1c2luZyBGYWlsdXJl
SGFuZGxlciA9IHN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmIGJhZENvbnN0cmFpbnQs
IGNvbnN0IFN0cmluZyYgZXJyb3JTdHJpbmcpPjsKLSAgICB2b2lkIGFwcGx5Q29uc3RyYWludHMo
Y29uc3QgTWVkaWFDb25zdHJhaW50cyYsIFN1Y2Nlc3NIYW5kbGVyLCBGYWlsdXJlSGFuZGxlcik7
CisgICAgdmlydHVhbCB2b2lkIGFwcGx5Q29uc3RyYWludHMoY29uc3QgTWVkaWFDb25zdHJhaW50
cyYsIFN1Y2Nlc3NIYW5kbGVyJiYsIEZhaWx1cmVIYW5kbGVyJiYpOwogICAgIHN0ZDo6b3B0aW9u
YWw8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4gYXBwbHlDb25zdHJhaW50cyhjb25zdCBNZWRp
YUNvbnN0cmFpbnRzJik7CiAKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNDb25zdHJhaW50cyhj
b25zdCBNZWRpYUNvbnN0cmFpbnRzJiwgU3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VT
ZXR0aW5ncy5oCmluZGV4IGUxZmQxNmY4NmMyNzZkMTI2NTRiNTljYzI0OWUwOWZjYzAyNmJhNTAu
Ljc1ZTBjOWE5MTUzZGNhNjkyNzg5YWI5MTE2Y2RjMjJiNWEzMzlhN2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VTZXR0
aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1l
TWVkaWFTb3VyY2VTZXR0aW5ncy5oCkBAIC05Myw2ICs5Myw3IEBAIHB1YmxpYzoKICAgICBjb25z
dCBBdG9taWNTdHJpbmcmIGdyb3VwSWQoKSBjb25zdCB7IHJldHVybiBtX2dyb3VwSWQ7IH0KICAg
ICB2b2lkIHNldEdyb3VwSWQoY29uc3QgQXRvbWljU3RyaW5nJiBncm91cElkKSB7IG1fZ3JvdXBJ
ZCA9IGdyb3VwSWQ7IH0KIAorICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRD
b25zdHJhaW50cyYgc3VwcG9ydGVkQ29uc3RyYWludHMoKSBjb25zdCB7IHJldHVybiBtX3N1cHBv
cnRlZENvbnN0cmFpbnRzOyB9CiAgICAgdm9pZCBzZXRTdXBwb3J0ZWRDb25zdHJhaW50cyhjb25z
dCBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMmIHN1cHBvcnRlZENvbnN0
cmFpbnRzKSB7IG1fc3VwcG9ydGVkQ29uc3RyYWludHMgPSBzdXBwb3J0ZWRDb25zdHJhaW50czsg
fQogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L0NvcmVBdWRpb0NhcHR1cmVTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2UuY3BwCmluZGV4IDM1NDJlYjMwNGY1
MWRiNDFlYzk3ODAwYjIzODQyZjQ1NmU0NTQwYzIuLjgzYzBkMzUxMTRhYWZkYmE5ZjI3ZTBkMTNi
ZjQ0ZTc0ZjdmYTczNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5jcHAKQEAg
LTcyLDggKzcyLDkgQEAgcHVibGljOgogCiAgICAgT1NTdGF0dXMgc3VzcGVuZCgpOwogCi0gICAg
T1NTdGF0dXMgc2V0dXBBdWRpb1VuaXRzKCk7Ci0gICAgdm9pZCBjbGVhbnVwQXVkaW9Vbml0cygp
OworICAgIE9TU3RhdHVzIHNldHVwQXVkaW9Vbml0KCk7CisgICAgdm9pZCBjbGVhbnVwQXVkaW9V
bml0KCk7CisgICAgT1NTdGF0dXMgcmVjb25maWd1cmVBdWRpb1VuaXQoKTsKIAogICAgIHZvaWQg
YWRkRWNob0NhbmNlbGxhdGlvblNvdXJjZShBdWRpb1NhbXBsZURhdGFTb3VyY2UmKTsKICAgICB2
b2lkIHJlbW92ZUVjaG9DYW5jZWxsYXRpb25Tb3VyY2UoQXVkaW9TYW1wbGVEYXRhU291cmNlJik7
CkBAIC04Miw2ICs4Myw4IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IENBQXVkaW9TdHJlYW1EZXNj
cmlwdGlvbiYgbWljcm9waG9uZUZvcm1hdCgpIGNvbnN0IHsgcmV0dXJuIG1fbWljcm9waG9uZVBy
b2NGb3JtYXQ7IH0KIAorICAgIGJvb2wgaGFzQXVkaW9Vbml0KCkgY29uc3QgeyByZXR1cm4gbV9p
b1VuaXQ7IH0KKwogcHJpdmF0ZToKICAgICBPU1N0YXR1cyBjb25maWd1cmVTcGVha2VyUHJvYygp
OwogICAgIE9TU3RhdHVzIGNvbmZpZ3VyZU1pY3JvcGhvbmVQcm9jKCk7CkBAIC05NCw3ICs5Nyw3
IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIE9TU3RhdHVzIHNwZWFrZXJDYWxsYmFjayh2b2lkKiwg
QXVkaW9Vbml0UmVuZGVyQWN0aW9uRmxhZ3MqLCBjb25zdCBBdWRpb1RpbWVTdGFtcCosIFVJbnQz
MiwgVUludDMyLCBBdWRpb0J1ZmZlckxpc3QqKTsKICAgICBPU1N0YXR1cyBwcm92aWRlU3BlYWtl
ckRhdGEoQXVkaW9Vbml0UmVuZGVyQWN0aW9uRmxhZ3MmLCBjb25zdCBBdWRpb1RpbWVTdGFtcCYs
IFVJbnQzMiwgVUludDMyLCBBdWRpb0J1ZmZlckxpc3QqKTsKIAotICAgIFZlY3RvcjxDb3JlQXVk
aW9DYXB0dXJlU291cmNlKj4gbV9jbGllbnRzOworICAgIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93
cmFwcGVyPENvcmVBdWRpb0NhcHR1cmVTb3VyY2U+PiBtX2NsaWVudHM7CiAKICAgICBBdWRpb1Vu
aXQgbV9pb1VuaXQgeyBudWxscHRyIH07CiAKQEAgLTEyNSw3ICsxMjgsNiBAQCBwcml2YXRlOgog
ICAgIGludDMyX3QgbV9wcm9kdWNpbmdDb3VudCB7IDAgfTsKIAogICAgIG11dGFibGUgc3RkOjp1
bmlxdWVfcHRyPFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM+IG1fY2FwYWJpbGl0aWVz
OwotICAgIG11dGFibGUgUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzIG1f
c3VwcG9ydGVkQ29uc3RyYWludHM7CiAgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPFJlYWx0aW1l
TWVkaWFTb3VyY2VTZXR0aW5ncz4gbV9jdXJyZW50U2V0dGluZ3M7CiAKICNpZiAhTE9HX0RJU0FC
TEVECkBAIC0xNDUsMTIgKzE0NywxNCBAQCBDb3JlQXVkaW9TaGFyZWRVbml0JiBDb3JlQXVkaW9T
aGFyZWRVbml0OjpzaW5nbGV0b24oKQogCiB2b2lkIENvcmVBdWRpb1NoYXJlZFVuaXQ6OmFkZENs
aWVudChDb3JlQXVkaW9DYXB0dXJlU291cmNlJiBjbGllbnQpCiB7Ci0gICAgbV9jbGllbnRzLmFw
cGVuZCgmY2xpZW50KTsKKyAgICBtX2NsaWVudHMuYXBwZW5kKGNsaWVudCk7CiB9CiAKIHZvaWQg
Q29yZUF1ZGlvU2hhcmVkVW5pdDo6cmVtb3ZlQ2xpZW50KENvcmVBdWRpb0NhcHR1cmVTb3VyY2Um
IGNsaWVudCkKIHsKLSAgICBtX2NsaWVudHMucmVtb3ZlQWxsKCZjbGllbnQpOworICAgIG1fY2xp
ZW50cy5yZW1vdmVBbGxNYXRjaGluZyhbJl0oY29uc3QgYXV0byYgaXRlbSkgeworICAgICAgICBy
ZXR1cm4gJmNsaWVudCA9PSAmaXRlbS5nZXQoKTsKKyAgICB9KTsKIH0KIAogdm9pZCBDb3JlQXVk
aW9TaGFyZWRVbml0OjphZGRFY2hvQ2FuY2VsbGF0aW9uU291cmNlKEF1ZGlvU2FtcGxlRGF0YVNv
dXJjZSYgc291cmNlKQpAQCAtMTc1LDcgKzE3OSw3IEBAIHNpemVfdCBDb3JlQXVkaW9TaGFyZWRV
bml0OjpwcmVmZXJyZWRJT0J1ZmZlclNpemUoKQogICAgIHJldHVybiBBdWRpb1Nlc3Npb246OnNo
YXJlZFNlc3Npb24oKS5idWZmZXJTaXplKCk7CiB9CiAKLU9TU3RhdHVzIENvcmVBdWRpb1NoYXJl
ZFVuaXQ6OnNldHVwQXVkaW9Vbml0cygpCitPU1N0YXR1cyBDb3JlQXVkaW9TaGFyZWRVbml0Ojpz
ZXR1cEF1ZGlvVW5pdCgpCiB7CiAgICAgaWYgKG1faW9Vbml0KQogICAgICAgICByZXR1cm4gMDsK
QEAgLTE5MCw3ICsxOTQsNyBAQCBPU1N0YXR1cyBDb3JlQXVkaW9TaGFyZWRVbml0OjpzZXR1cEF1
ZGlvVW5pdHMoKQogICAgIEF1ZGlvQ29tcG9uZW50IGlvQ29tcG9uZW50ID0gQXVkaW9Db21wb25l
bnRGaW5kTmV4dChudWxscHRyLCAmaW9Vbml0RGVzY3JpcHRpb24pOwogICAgIEFTU0VSVChpb0Nv
bXBvbmVudCk7CiAgICAgaWYgKCFpb0NvbXBvbmVudCkgewotICAgICAgICBMT0coTWVkaWEsICJD
b3JlQXVkaW9DYXB0dXJlU291cmNlOjpzZXR1cEF1ZGlvVW5pdHMoJXApIHVuYWJsZSB0byBmaW5k
IHZwaW8gdW5pdCBjb21wb25lbnQiLCB0aGlzKTsKKyAgICAgICAgTE9HKE1lZGlhLCAiQ29yZUF1
ZGlvQ2FwdHVyZVNvdXJjZTo6c2V0dXBBdWRpb1VuaXQoJXApIHVuYWJsZSB0byBmaW5kIHZwaW8g
dW5pdCBjb21wb25lbnQiLCB0aGlzKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIApAQCAt
MjAwLDI4ICsyMDQsMzUgQEAgT1NTdGF0dXMgQ29yZUF1ZGlvU2hhcmVkVW5pdDo6c2V0dXBBdWRp
b1VuaXRzKCkKICAgICBpZiAobmFtZSkgewogICAgICAgICBtX2lvVW5pdE5hbWUgPSBuYW1lOwog
ICAgICAgICBDRlJlbGVhc2UobmFtZSk7Ci0gICAgICAgIExPRyhNZWRpYSwgIkNvcmVBdWRpb0Nh
cHR1cmVTb3VyY2U6OnNldHVwQXVkaW9Vbml0cyglcCkgY3JlYXRlZCBcIiVzXCIgY29tcG9uZW50
IiwgdGhpcywgbV9pb1VuaXROYW1lLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBMT0coTWVkaWEs
ICJDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpzZXR1cEF1ZGlvVW5pdCglcCkgY3JlYXRlZCBcIiVz
XCIgY29tcG9uZW50IiwgdGhpcywgbV9pb1VuaXROYW1lLnV0ZjgoKS5kYXRhKCkpOwogICAgIH0K
ICNlbmRpZgogCiAgICAgYXV0byBlcnIgPSBBdWRpb0NvbXBvbmVudEluc3RhbmNlTmV3KGlvQ29t
cG9uZW50LCAmbV9pb1VuaXQpOwogICAgIGlmIChlcnIpIHsKLSAgICAgICAgTE9HKE1lZGlhLCAi
Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6c2V0dXBBdWRpb1VuaXRzKCVwKSB1bmFibGUgdG8gb3Bl
biB2cGlvIHVuaXQsIGVycm9yICVkICglLjRzKSIsIHRoaXMsIChpbnQpZXJyLCAoY2hhciopJmVy
cik7CisgICAgICAgIExPRyhNZWRpYSwgIkNvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OnNldHVwQXVk
aW9Vbml0KCVwKSB1bmFibGUgdG8gb3BlbiB2cGlvIHVuaXQsIGVycm9yICVkICglLjRzKSIsIHRo
aXMsIChpbnQpZXJyLCAoY2hhciopJmVycik7CiAgICAgICAgIHJldHVybiBlcnI7CiAgICAgfQog
Ci0gICAgdWludDMyX3QgcGFyYW0gPSBtX2NsaWVudHMuZmlyc3QoKS0+ZWNob0NhbmNlbGxhdGlv
bigpOwotICAgIGVyciA9IEF1ZGlvVW5pdFNldFByb3BlcnR5KG1faW9Vbml0LCBrQVVWb2ljZUlP
UHJvcGVydHlfVm9pY2VQcm9jZXNzaW5nRW5hYmxlQUdDLCBrQXVkaW9Vbml0U2NvcGVfR2xvYmFs
LCBpbnB1dEJ1cywgJnBhcmFtLCBzaXplb2YocGFyYW0pKTsKLSAgICBpZiAoZXJyKSB7Ci0gICAg
ICAgIExPRyhNZWRpYSwgIkNvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OnNldHVwQXVkaW9Vbml0cygl
cCkgdW5hYmxlIHRvIHNldCB2cGlvIHVuaXQgZWNobyBjYW5jZWxsYXRpb24sIGVycm9yICVkICgl
LjRzKSIsIHRoaXMsIChpbnQpZXJyLCAoY2hhciopJmVycik7Ci0gICAgICAgIHJldHVybiBlcnI7
CisgICAgdWludDMyX3QgcGFyYW0gPSAwOworICAgIGlmICghbV9jbGllbnRzLmxhc3QoKS5nZXQo
KS5lY2hvQ2FuY2VsbGF0aW9uKCkpIHsKKyAgICAgICAgZXJyID0gQXVkaW9Vbml0U2V0UHJvcGVy
dHkobV9pb1VuaXQsIGtBVVZvaWNlSU9Qcm9wZXJ0eV9Wb2ljZVByb2Nlc3NpbmdFbmFibGVBR0Ms
IGtBdWRpb1VuaXRTY29wZV9HbG9iYWwsIGlucHV0QnVzLCAmcGFyYW0sIHNpemVvZihwYXJhbSkp
OworICAgICAgICBpZiAoZXJyKSB7CisgICAgICAgICAgICBMT0coTWVkaWEsICJDb3JlQXVkaW9D
YXB0dXJlU291cmNlOjpzZXR1cEF1ZGlvVW5pdCglcCkgdW5hYmxlIHRvIHNldCB2cGlvIGF1dG9t
YXRpYyBnYWluIGNvbnRyb2wsIGVycm9yICVkICglLjRzKSIsIHRoaXMsIChpbnQpZXJyLCAoY2hh
ciopJmVycik7CisgICAgICAgICAgICByZXR1cm4gZXJyOworICAgICAgICB9CisgICAgICAgIHBh
cmFtID0gMTsKKyAgICAgICAgZXJyID0gQXVkaW9Vbml0U2V0UHJvcGVydHkobV9pb1VuaXQsIGtB
VVZvaWNlSU9Qcm9wZXJ0eV9CeXBhc3NWb2ljZVByb2Nlc3NpbmcsIGtBdWRpb1VuaXRTY29wZV9H
bG9iYWwsIGlucHV0QnVzLCAmcGFyYW0sIHNpemVvZihwYXJhbSkpOworICAgICAgICBpZiAoZXJy
KSB7CisgICAgICAgICAgICBMT0coTWVkaWEsICJDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpzZXR1
cEF1ZGlvVW5pdCglcCkgdW5hYmxlIHRvIHNldCB2cGlvIHVuaXQgZWNobyBjYW5jZWxsYXRpb24s
IGVycm9yICVkICglLjRzKSIsIHRoaXMsIChpbnQpZXJyLCAoY2hhciopJmVycik7CisgICAgICAg
ICAgICByZXR1cm4gZXJyOworICAgICAgICB9CiAgICAgfQotCiAjaWYgUExBVEZPUk0oSU9TKQog
ICAgIHBhcmFtID0gMTsKICAgICBlcnIgPSBBdWRpb1VuaXRTZXRQcm9wZXJ0eShtX2lvVW5pdCwg
a0F1ZGlvT3V0cHV0VW5pdFByb3BlcnR5X0VuYWJsZUlPLCBrQXVkaW9Vbml0U2NvcGVfSW5wdXQs
IGlucHV0QnVzLCAmcGFyYW0sIHNpemVvZihwYXJhbSkpOwogICAgIGlmIChlcnIpIHsKLSAgICAg
ICAgTE9HKE1lZGlhLCAiQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6c2V0dXBBdWRpb1VuaXRzKCVw
KSB1bmFibGUgdG8gZW5hYmxlIHZwaW8gdW5pdCBpbnB1dCwgZXJyb3IgJWQgKCUuNHMpIiwgdGhp
cywgKGludCllcnIsIChjaGFyKikmZXJyKTsKKyAgICAgICAgTE9HKE1lZGlhLCAiQ29yZUF1ZGlv
Q2FwdHVyZVNvdXJjZTo6c2V0dXBBdWRpb1VuaXQoJXApIHVuYWJsZSB0byBlbmFibGUgdnBpbyB1
bml0IGlucHV0LCBlcnJvciAlZCAoJS40cykiLCB0aGlzLCAoaW50KWVyciwgKGNoYXIqKSZlcnIp
OwogICAgICAgICByZXR1cm4gZXJyOwogICAgIH0KICNlbHNlCkBAIC0yMzMsNyArMjQ0LDcgQEAg
T1NTdGF0dXMgQ29yZUF1ZGlvU2hhcmVkVW5pdDo6c2V0dXBBdWRpb1VuaXRzKCkKIAogICAgIGVy
ciA9IEF1ZGlvVW5pdFNldFByb3BlcnR5KG1faW9Vbml0LCBrQXVkaW9PdXRwdXRVbml0UHJvcGVy
dHlfQ3VycmVudERldmljZSwga0F1ZGlvVW5pdFNjb3BlX0dsb2JhbCwgaW5wdXRCdXMsICZtX2Nh
cHR1cmVEZXZpY2VJRCwgc2l6ZW9mKG1fY2FwdHVyZURldmljZUlEKSk7CiAgICAgaWYgKGVycikg
ewotICAgICAgICBMT0coTWVkaWEsICJDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpzZXR1cEF1ZGlv
VW5pdHMoJXApIHVuYWJsZSB0byBzZXQgdnBpbyB1bml0IGNhcHR1cmUgZGV2aWNlIElELCBlcnJv
ciAlZCAoJS40cykiLCB0aGlzLCAoaW50KWVyciwgKGNoYXIqKSZlcnIpOworICAgICAgICBMT0co
TWVkaWEsICJDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpzZXR1cEF1ZGlvVW5pdCglcCkgdW5hYmxl
IHRvIHNldCB2cGlvIHVuaXQgY2FwdHVyZSBkZXZpY2UgSUQsIGVycm9yICVkICglLjRzKSIsIHRo
aXMsIChpbnQpZXJyLCAoY2hhciopJmVycik7CiAgICAgICAgIHJldHVybiBlcnI7CiAgICAgfQog
I2VuZGlmCkBAIC0yNDIsMTcgKzI1MywxNyBAQCBPU1N0YXR1cyBDb3JlQXVkaW9TaGFyZWRVbml0
OjpzZXR1cEF1ZGlvVW5pdHMoKQogICAgIGlmIChlcnIpCiAgICAgICAgIHJldHVybiBlcnI7CiAK
KyAgICBlcnIgPSBjb25maWd1cmVTcGVha2VyUHJvYygpOworICAgIGlmIChlcnIpCisgICAgICAg
IHJldHVybiBlcnI7CisKICAgICBlcnIgPSBBdWRpb1VuaXRJbml0aWFsaXplKG1faW9Vbml0KTsK
ICAgICBpZiAoZXJyKSB7Ci0gICAgICAgIExPRyhNZWRpYSwgIkNvcmVBdWRpb0NhcHR1cmVTb3Vy
Y2U6OnNldHVwQXVkaW9Vbml0cyglcCkgQXVkaW9Vbml0SW5pdGlhbGl6ZSgpIGZhaWxlZCwgZXJy
b3IgJWQgKCUuNHMpIiwgdGhpcywgKGludCllcnIsIChjaGFyKikmZXJyKTsKKyAgICAgICAgTE9H
KE1lZGlhLCAiQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6c2V0dXBBdWRpb1VuaXQoJXApIEF1ZGlv
VW5pdEluaXRpYWxpemUoKSBmYWlsZWQsIGVycm9yICVkICglLjRzKSIsIHRoaXMsIChpbnQpZXJy
LCAoY2hhciopJmVycik7CiAgICAgICAgIHJldHVybiBlcnI7CiAgICAgfQogICAgIG1faW9Vbml0
SW5pdGlhbGl6ZWQgPSB0cnVlOwogCi0gICAgZXJyID0gY29uZmlndXJlU3BlYWtlclByb2MoKTsK
LSAgICBpZiAoZXJyKQotICAgICAgICByZXR1cm4gZXJyOwotCiAgICAgcmV0dXJuIGVycjsKIH0K
IApAQCAtMjc0LDcgKzI4NSw3IEBAIE9TU3RhdHVzIENvcmVBdWRpb1NoYXJlZFVuaXQ6OmNvbmZp
Z3VyZU1pY3JvcGhvbmVQcm9jKCkKICAgICAgICAgcmV0dXJuIGVycjsKICAgICB9CiAKLSAgICBt
aWNyb3Bob25lUHJvY0Zvcm1hdC5tU2FtcGxlUmF0ZSA9IG1fY2xpZW50cy5maXJzdCgpLT5zYW1w
bGVSYXRlKCk7CisgICAgbWljcm9waG9uZVByb2NGb3JtYXQubVNhbXBsZVJhdGUgPSBtX2NsaWVu
dHMubGFzdCgpLmdldCgpLnNhbXBsZVJhdGUoKTsKICAgICBlcnIgPSBBdWRpb1VuaXRTZXRQcm9w
ZXJ0eShtX2lvVW5pdCwga0F1ZGlvVW5pdFByb3BlcnR5X1N0cmVhbUZvcm1hdCwga0F1ZGlvVW5p
dFNjb3BlX091dHB1dCwgaW5wdXRCdXMsICZtaWNyb3Bob25lUHJvY0Zvcm1hdCwgc2l6ZSk7CiAg
ICAgaWYgKGVycikgewogICAgICAgICBMT0coTWVkaWEsICJDb3JlQXVkaW9TaGFyZWRVbml0Ojpj
b25maWd1cmVNaWNyb3Bob25lUHJvYyglcCkgdW5hYmxlIHRvIHNldCBvdXRwdXQgc3RyZWFtIGZv
cm1hdCwgZXJyb3IgJWQgKCUuNHMpIiwgdGhpcywgKGludCllcnIsIChjaGFyKikmZXJyKTsKQEAg
LTMwNSw3ICszMTYsNyBAQCBPU1N0YXR1cyBDb3JlQXVkaW9TaGFyZWRVbml0Ojpjb25maWd1cmVT
cGVha2VyUHJvYygpCiAgICAgICAgIHJldHVybiBlcnI7CiAgICAgfQogCi0gICAgc3BlYWtlclBy
b2NGb3JtYXQubVNhbXBsZVJhdGUgPSBtX2NsaWVudHMuZmlyc3QoKS0+c2FtcGxlUmF0ZSgpOwor
ICAgIHNwZWFrZXJQcm9jRm9ybWF0Lm1TYW1wbGVSYXRlID0gbV9jbGllbnRzLmxhc3QoKS5nZXQo
KS5zYW1wbGVSYXRlKCk7CiAgICAgZXJyID0gQXVkaW9Vbml0U2V0UHJvcGVydHkobV9pb1VuaXQs
IGtBdWRpb1VuaXRQcm9wZXJ0eV9TdHJlYW1Gb3JtYXQsIGtBdWRpb1VuaXRTY29wZV9JbnB1dCwg
b3V0cHV0QnVzLCAmc3BlYWtlclByb2NGb3JtYXQsIHNpemUpOwogICAgIGlmIChlcnIpIHsKICAg
ICAgICAgTE9HKE1lZGlhLCAiQ29yZUF1ZGlvU2hhcmVkVW5pdDo6Y29uZmlndXJlU3BlYWtlclBy
b2MoJXApIHVuYWJsZSB0byBnZXQgaW5wdXQgc3RyZWFtIGZvcm1hdCwgZXJyb3IgJWQgKCUuNHMp
IiwgdGhpcywgKGludCllcnIsIChjaGFyKikmZXJyKTsKQEAgLTQxMSwxMSArNDIyLDE0IEBAIE9T
U3RhdHVzIENvcmVBdWRpb1NoYXJlZFVuaXQ6OnByb2Nlc3NNaWNyb3Bob25lU2FtcGxlcyhBdWRp
b1VuaXRSZW5kZXJBY3Rpb25GbGFnCiAgICAgbV9sYXRlc3RNaWNUaW1lU3RhbXAgPSBzYW1wbGVU
aW1lOwogICAgIG1fbWljcm9waG9uZVNhbXBsZUJ1ZmZlci0+c2V0VGltZXMoYWRqdXN0ZWRIb3N0
VGltZSwgc2FtcGxlVGltZSk7CiAKLSAgICBmb3IgKGF1dG8qIGNsaWVudCA6IG1fY2xpZW50cykg
ewotICAgICAgICBpZiAoY2xpZW50LT5pc1Byb2R1Y2luZ0RhdGEoKSkKLSAgICAgICAgICAgIGNs
aWVudC0+YXVkaW9TYW1wbGVzQXZhaWxhYmxlKE1lZGlhVGltZShzYW1wbGVUaW1lLCBtX21pY3Jv
cGhvbmVQcm9jRm9ybWF0LnNhbXBsZVJhdGUoKSksIG1fbWljcm9waG9uZVNhbXBsZUJ1ZmZlci0+
YnVmZmVyTGlzdCgpLCBtX21pY3JvcGhvbmVQcm9jRm9ybWF0LCBpbk51bWJlckZyYW1lcyk7Ci0g
ICAgfQorICAgIGF1dG8gdm9sdW1lID0gbV9jbGllbnRzLmxhc3QoKS5nZXQoKS52b2x1bWUoKTsK
KyAgICBpZiAodm9sdW1lICE9IDEuMCkKKyAgICAgICAgbV9taWNyb3Bob25lU2FtcGxlQnVmZmVy
LT5hcHBseUdhaW4odm9sdW1lKTsKIAorICAgIGZvciAoQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZSYg
Y2xpZW50IDogbV9jbGllbnRzKSB7CisgICAgICAgIGlmIChjbGllbnQuaXNQcm9kdWNpbmdEYXRh
KCkpCisgICAgICAgICAgICBjbGllbnQuYXVkaW9TYW1wbGVzQXZhaWxhYmxlKE1lZGlhVGltZShz
YW1wbGVUaW1lLCBtX21pY3JvcGhvbmVQcm9jRm9ybWF0LnNhbXBsZVJhdGUoKSksIG1fbWljcm9w
aG9uZVNhbXBsZUJ1ZmZlci0+YnVmZmVyTGlzdCgpLCBtX21pY3JvcGhvbmVQcm9jRm9ybWF0LCBp
bk51bWJlckZyYW1lcyk7CisgICAgfQogICAgIHJldHVybiBub0VycjsKIH0KIApAQCAtNDI3LDE0
ICs0NDEsMTMgQEAgT1NTdGF0dXMgQ29yZUF1ZGlvU2hhcmVkVW5pdDo6bWljcm9waG9uZUNhbGxi
YWNrKHZvaWQgKmluUmVmQ29uLCBBdWRpb1VuaXRSZW5kZXIKICAgICByZXR1cm4gZGF0YVNvdXJj
ZS0+cHJvY2Vzc01pY3JvcGhvbmVTYW1wbGVzKCppb0FjdGlvbkZsYWdzLCAqaW5UaW1lU3RhbXAs
IGluQnVzTnVtYmVyLCBpbk51bWJlckZyYW1lcywgaW9EYXRhKTsKIH0KIAotdm9pZCBDb3JlQXVk
aW9TaGFyZWRVbml0OjpjbGVhbnVwQXVkaW9Vbml0cygpCit2b2lkIENvcmVBdWRpb1NoYXJlZFVu
aXQ6OmNsZWFudXBBdWRpb1VuaXQoKQogewotICAgIEFTU0VSVChtX2NsaWVudHMuaXNFbXB0eSgp
KTsKICAgICBpZiAobV9pb1VuaXRJbml0aWFsaXplZCkgewogICAgICAgICBBU1NFUlQobV9pb1Vu
aXQpOwogICAgICAgICBhdXRvIGVyciA9IEF1ZGlvVW5pdFVuaW5pdGlhbGl6ZShtX2lvVW5pdCk7
CiAgICAgICAgIGlmIChlcnIpCi0gICAgICAgICAgICBMT0coTWVkaWEsICJDb3JlQXVkaW9TaGFy
ZWRVbml0OjpjbGVhbnVwQXVkaW9Vbml0cyglcCkgQXVkaW9Vbml0VW5pbml0aWFsaXplIGZhaWxl
ZCB3aXRoIGVycm9yICVkICglLjRzKSIsIHRoaXMsIChpbnQpZXJyLCAoY2hhciopJmVycik7Cisg
ICAgICAgICAgICBMT0coTWVkaWEsICJDb3JlQXVkaW9TaGFyZWRVbml0OjpjbGVhbnVwQXVkaW9V
bml0KCVwKSBBdWRpb1VuaXRVbmluaXRpYWxpemUgZmFpbGVkIHdpdGggZXJyb3IgJWQgKCUuNHMp
IiwgdGhpcywgKGludCllcnIsIChjaGFyKikmZXJyKTsKICAgICAgICAgbV9pb1VuaXRJbml0aWFs
aXplZCA9IGZhbHNlOwogICAgIH0KIApAQCAtNDUwLDYgKzQ2MywzNSBAQCB2b2lkIENvcmVBdWRp
b1NoYXJlZFVuaXQ6OmNsZWFudXBBdWRpb1VuaXRzKCkKICNlbmRpZgogfQogCitPU1N0YXR1cyBD
b3JlQXVkaW9TaGFyZWRVbml0OjpyZWNvbmZpZ3VyZUF1ZGlvVW5pdCgpCit7CisgICAgT1NTdGF0
dXMgZXJyOworICAgIGlmICghaGFzQXVkaW9Vbml0KCkpCisgICAgICAgIHJldHVybiAwOworCisg
ICAgaWYgKG1faW9Vbml0U3RhcnRlZCkgeworICAgICAgICBlcnIgPSBBdWRpb091dHB1dFVuaXRT
dG9wKG1faW9Vbml0KTsKKyAgICAgICAgaWYgKGVycikgeworICAgICAgICAgICAgTE9HKE1lZGlh
LCAiQ29yZUF1ZGlvU2hhcmVkVW5pdDo6cmVjb25maWd1cmVBdWRpb1VuaXQoJXApIEF1ZGlvT3V0
cHV0VW5pdFN0b3AgZmFpbGVkIHdpdGggZXJyb3IgJWQgKCUuNHMpIiwgdGhpcywgKGludCllcnIs
IChjaGFyKikmZXJyKTsKKyAgICAgICAgICAgIHJldHVybiBlcnI7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBjbGVhbnVwQXVkaW9Vbml0KCk7CisgICAgZXJyID0gc2V0dXBBdWRpb1VuaXQoKTsK
KyAgICBpZiAoZXJyKQorICAgICAgICByZXR1cm4gZXJyOworCisgICAgaWYgKG1faW9Vbml0U3Rh
cnRlZCkgeworICAgICAgICBlcnIgPSBBdWRpb091dHB1dFVuaXRTdGFydChtX2lvVW5pdCk7Cisg
ICAgICAgIGlmIChlcnIpIHsKKyAgICAgICAgICAgIExPRyhNZWRpYSwgIkNvcmVBdWRpb1NoYXJl
ZFVuaXQ6OnJlY29uZmlndXJlQXVkaW9Vbml0KCVwKSBBdWRpb091dHB1dFVuaXRTdGFydCBmYWls
ZWQgd2l0aCBlcnJvciAlZCAoJS40cykiLCB0aGlzLCAoaW50KWVyciwgKGNoYXIqKSZlcnIpOwor
ICAgICAgICAgICAgcmV0dXJuIGVycjsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gZXJy
OworfQorCiB2b2lkIENvcmVBdWRpb1NoYXJlZFVuaXQ6OnN0YXJ0UHJvZHVjaW5nRGF0YSgpCiB7
CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKQEAgLTQ2Miw5ICs1MDQsOSBAQCB2b2lkIENv
cmVBdWRpb1NoYXJlZFVuaXQ6OnN0YXJ0UHJvZHVjaW5nRGF0YSgpCiAKICAgICBPU1N0YXR1cyBl
cnI7CiAgICAgaWYgKCFtX2lvVW5pdCkgewotICAgICAgICBlcnIgPSBzZXR1cEF1ZGlvVW5pdHMo
KTsKKyAgICAgICAgZXJyID0gc2V0dXBBdWRpb1VuaXQoKTsKICAgICAgICAgaWYgKGVycikgewot
ICAgICAgICAgICAgY2xlYW51cEF1ZGlvVW5pdHMoKTsKKyAgICAgICAgICAgIGNsZWFudXBBdWRp
b1VuaXQoKTsKICAgICAgICAgICAgIEFTU0VSVCghbV9pb1VuaXQpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CkBAIC01MzcsNyArNTc5LDcgQEAgT1NTdGF0dXMgQ29yZUF1ZGlvU2hh
cmVkVW5pdDo6ZGVmYXVsdElucHV0RGV2aWNlKHVpbnQzMl90KiBkZXZpY2VJRCkKICAgICBhdXRv
IGVyciA9IEF1ZGlvVW5pdEdldFByb3BlcnR5KG1faW9Vbml0LCBrQXVkaW9PdXRwdXRVbml0UHJv
cGVydHlfQ3VycmVudERldmljZSwga0F1ZGlvVW5pdFNjb3BlX0dsb2JhbCwgaW5wdXRCdXMsIGRl
dmljZUlELCAmcHJvcGVydHlTaXplKTsKICAgICBpZiAoZXJyKQogICAgICAgICBMT0coTWVkaWEs
ICJDb3JlQXVkaW9TaGFyZWRVbml0OjpkZWZhdWx0SW5wdXREZXZpY2UoJXApIHVuYWJsZSB0byBn
ZXQgZGVmYXVsdCBpbnB1dCBkZXZpY2UgSUQsIGVycm9yICVkICglLjRzKSIsIHRoaXMsIChpbnQp
ZXJyLCAoY2hhciopJmVycik7Ci0gICAgCisKICAgICByZXR1cm4gZXJyOwogfQogCkBAIC02MDUs
NiArNjQ3LDkgQEAgdm9pZCBDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpyZW1vdmVFY2hvQ2FuY2Vs
bGF0aW9uU291cmNlKEF1ZGlvU2FtcGxlRGF0YVNvdXJjZSYKIAogdm9pZCBDb3JlQXVkaW9DYXB0
dXJlU291cmNlOjpzdGFydFByb2R1Y2luZ0RhdGEoKQogeworICAgIGlmIChtX2lzUHJvZHVjaW5n
RGF0YSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgQ29yZUF1ZGlvU2hhcmVkVW5pdDo6c2luZ2xl
dG9uKCkuc3RhcnRQcm9kdWNpbmdEYXRhKCk7CiAgICAgbV9pc1Byb2R1Y2luZ0RhdGEgPSBDb3Jl
QXVkaW9TaGFyZWRVbml0OjpzaW5nbGV0b24oKS5pc1Byb2R1Y2luZ0RhdGEoKTsKIApAQCAtNjE5
LDYgKzY2NCw5IEBAIHZvaWQgQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6c3RhcnRQcm9kdWNpbmdE
YXRhKCkKIAogdm9pZCBDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpzdG9wUHJvZHVjaW5nRGF0YSgp
CiB7CisgICAgaWYgKCFtX2lzUHJvZHVjaW5nRGF0YSkKKyAgICAgICAgcmV0dXJuOworCiAgICAg
Q29yZUF1ZGlvU2hhcmVkVW5pdDo6c2luZ2xldG9uKCkuc3RvcFByb2R1Y2luZ0RhdGEoKTsKICAg
ICBtX2lzUHJvZHVjaW5nRGF0YSA9IGZhbHNlOwogICAgIG1fbXV0ZWQgPSBmYWxzZTsKQEAgLTYz
MiwxNSArNjgwLDExIEBAIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmIENv
cmVBdWRpb0NhcHR1cmVTb3VyY2U6OmNhcGFiaWxpdGllcygpIGNvCiAgICAgaWYgKG1fY2FwYWJp
bGl0aWVzKQogICAgICAgICByZXR1cm4gKm1fY2FwYWJpbGl0aWVzOwogCi0gICAgbV9zdXBwb3J0
ZWRDb25zdHJhaW50cy5zZXRTdXBwb3J0c0RldmljZUlkKHRydWUpOwotICAgIG1fc3VwcG9ydGVk
Q29uc3RyYWludHMuc2V0U3VwcG9ydHNFY2hvQ2FuY2VsbGF0aW9uKHRydWUpOwotICAgIG1fc3Vw
cG9ydGVkQ29uc3RyYWludHMuc2V0U3VwcG9ydHNWb2x1bWUodHJ1ZSk7Ci0KLSAgICAvLyBGSVhN
RTogZmluaXNoIHRoaXMuCi0gICAgbV9jYXBhYmlsaXRpZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFJl
YWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM+KG1fc3VwcG9ydGVkQ29uc3RyYWludHMpOwor
ICAgIG1fY2FwYWJpbGl0aWVzID0gc3RkOjptYWtlX3VuaXF1ZTxSZWFsdGltZU1lZGlhU291cmNl
Q2FwYWJpbGl0aWVzPihzZXR0aW5ncygpLnN1cHBvcnRlZENvbnN0cmFpbnRzKCkpOwogICAgIG1f
Y2FwYWJpbGl0aWVzLT5zZXREZXZpY2VJZChpZCgpKTsKICAgICBtX2NhcGFiaWxpdGllcy0+c2V0
RWNob0NhbmNlbGxhdGlvbihSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzOjpFY2hvQ2Fu
Y2VsbGF0aW9uOjpSZWFkV3JpdGUpOwogICAgIG1fY2FwYWJpbGl0aWVzLT5zZXRWb2x1bWUoQ2Fw
YWJpbGl0eVZhbHVlT3JSYW5nZSgwLjAsIDEuMCkpOworICAgIG1fY2FwYWJpbGl0aWVzLT5zZXRT
YW1wbGVSYXRlKENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UoODAwMCwgOTYwMDApKTsKIAogICAgIHJl
dHVybiAqbV9jYXBhYmlsaXRpZXM7CiB9CkBAIC02NTQsOCArNjk4LDE0IEBAIGNvbnN0IFJlYWx0
aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6c2V0dGluZ3Mo
KSBjb25zdAogICAgICAgICBzZXR0aW5ncy5zZXREZXZpY2VJZChpZCgpKTsKICAgICAgICAgc2V0
dGluZ3Muc2V0RWNob0NhbmNlbGxhdGlvbihlY2hvQ2FuY2VsbGF0aW9uKCkpOwogCi0gICAgICAg
IG1fY3VycmVudFNldHRpbmdzID0gV1RGTW92ZShzZXR0aW5ncyk7CisgICAgICAgIFJlYWx0aW1l
TWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyBzdXBwb3J0ZWRDb25zdHJhaW50czsKKyAg
ICAgICAgc3VwcG9ydGVkQ29uc3RyYWludHMuc2V0U3VwcG9ydHNEZXZpY2VJZCh0cnVlKTsKKyAg
ICAgICAgc3VwcG9ydGVkQ29uc3RyYWludHMuc2V0U3VwcG9ydHNFY2hvQ2FuY2VsbGF0aW9uKHRy
dWUpOworICAgICAgICBzdXBwb3J0ZWRDb25zdHJhaW50cy5zZXRTdXBwb3J0c1ZvbHVtZSh0cnVl
KTsKKyAgICAgICAgc3VwcG9ydGVkQ29uc3RyYWludHMuc2V0U3VwcG9ydHNTYW1wbGVSYXRlKHRy
dWUpOworICAgICAgICBzZXR0aW5ncy5zZXRTdXBwb3J0ZWRDb25zdHJhaW50cyhzdXBwb3J0ZWRD
b25zdHJhaW50cyk7CiAKKyAgICAgICAgbV9jdXJyZW50U2V0dGluZ3MgPSBXVEZNb3ZlKHNldHRp
bmdzKTsKICAgICB9CiAgICAgcmV0dXJuIG1fY3VycmVudFNldHRpbmdzLnZhbHVlKCk7CiB9CkBA
IC02NzcsNiArNzI3LDQ0IEBAIEF1ZGlvU291cmNlUHJvdmlkZXIqIENvcmVBdWRpb0NhcHR1cmVT
b3VyY2U6OmF1ZGlvU291cmNlUHJvdmlkZXIoKQogICAgIHJldHVybiBtX2F1ZGlvU291cmNlUHJv
dmlkZXIuZ2V0KCk7CiB9CiAKK2Jvb2wgQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6YXBwbHlTYW1w
bGVSYXRlKGludCBzYW1wbGVSYXRlKQoreworICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYmUgYWJs
ZSB0byBkZXNjcmliZSBzYW1wbGUgcmF0ZSBhcyBhIGRpc2NyZWV0IHJhbmdlIGNvbnN0cmFpbnQg
c28gdGhhdCB3ZSBvbmx5IGVudGVyIGhlcmUgd2l0aCB2YWx1ZXMgdGhhdCBjYW4gYmUgYXBwbGll
ZC4KKyAgICBzd2l0Y2ggKHNhbXBsZVJhdGUpIHsKKyAgICBjYXNlIDgwMDA6CisgICAgY2FzZSAx
NjAwMDoKKyAgICBjYXNlIDMyMDAwOgorICAgIGNhc2UgNDQxMDA6CisgICAgY2FzZSA0ODAwMDoK
KyAgICBjYXNlIDk2MDAwOgorICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHNjaGVkdWxlUmVjb25maWd1cmF0aW9uKCk7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6YXBwbHlFY2hv
Q2FuY2VsbGF0aW9uKGJvb2wpCit7CisgICAgc2NoZWR1bGVSZWNvbmZpZ3VyYXRpb24oKTsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpzY2hlZHVs
ZVJlY29uZmlndXJhdGlvbigpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBh
dXRvJiB1bml0ID0gQ29yZUF1ZGlvU2hhcmVkVW5pdDo6c2luZ2xldG9uKCk7CisgICAgaWYgKCF1
bml0Lmhhc0F1ZGlvVW5pdCgpIHx8IG1fcmVjb25maWd1cmF0aW9uT25nb2luZykKKyAgICAgICAg
cmV0dXJuOworCisgICAgbV9yZWNvbmZpZ3VyYXRpb25PbmdvaW5nID0gdHJ1ZTsKKyAgICBzY2hl
ZHVsZURlZmVycmVkVGFzayhbdGhpcywgJnVuaXRdIHsKKyAgICAgICAgdW5pdC5yZWNvbmZpZ3Vy
ZUF1ZGlvVW5pdCgpOworICAgICAgICBtX3JlY29uZmlndXJhdGlvbk9uZ29pbmcgPSBmYWxzZTsK
KyAgICB9KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxF
KE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5oCmluZGV4IGE0MDdi
NTBjNzIwMGUyMDI4NjczOGQ3NTYzMWNkNzNiNTM2NjE3NjcuLmEzODU2YWNkMWY3ODFlNGM0MWEx
NTYwNzI3OWM1MDMzNjlhYWFmZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlU291cmNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2UuaApA
QCAtNTEsNyArNTEsNyBAQCBjbGFzcyBBdWRpb1NhbXBsZURhdGFTb3VyY2U7CiBjbGFzcyBDYXB0
dXJlRGV2aWNlSW5mbzsKIGNsYXNzIFdlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDOwogCi1j
bGFzcyBDb3JlQXVkaW9DYXB0dXJlU291cmNlIDogcHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2Ug
eworY2xhc3MgQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZSBmaW5hbCA6IHB1YmxpYyBSZWFsdGltZU1l
ZGlhU291cmNlIHsKIHB1YmxpYzoKIAogICAgIHN0YXRpYyBDYXB0dXJlU291cmNlT3JFcnJvciBj
cmVhdGUoY29uc3QgU3RyaW5nJiBkZXZpY2VJRCwgY29uc3QgTWVkaWFDb25zdHJhaW50cyopOwpA
QCAtNzQsMTQgKzc0LDE2IEBAIHByaXZhdGU6CiAKICAgICBmcmllbmQgY2xhc3MgQ29yZUF1ZGlv
U2hhcmVkVW5pdDsKIAorICAgIHZvaWQgc2NoZWR1bGVSZWNvbmZpZ3VyYXRpb24oKTsKKwogICAg
IGJvb2wgaXNDYXB0dXJlU291cmNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogICAg
IHZvaWQgc3RhcnRQcm9kdWNpbmdEYXRhKCkgZmluYWw7CiAgICAgdm9pZCBzdG9wUHJvZHVjaW5n
RGF0YSgpIGZpbmFsOwogICAgIGJvb2wgaXNQcm9kdWNpbmdEYXRhKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9pc1Byb2R1Y2luZ0RhdGE7IH0KIAotICAgIGJvb2wgYXBwbHlWb2x1bWUoZG91Ymxl
KSBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgYm9vbCBhcHBseVNhbXBsZVJhdGUoaW50
KSBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgYm9vbCBhcHBseUVjaG9DYW5jZWxsYXRp
b24oYm9vbCkgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgYXBwbHlWb2x1bWUo
ZG91YmxlKSBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBhcHBseVNhbXBsZVJhdGUo
aW50KSBmaW5hbDsKKyAgICBib29sIGFwcGx5RWNob0NhbmNlbGxhdGlvbihib29sKSBmaW5hbDsK
IAogICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmIGNhcGFiaWxpdGll
cygpIGNvbnN0IGZpbmFsOwogICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYg
c2V0dGluZ3MoKSBjb25zdCBmaW5hbDsKQEAgLTk0LDEwICs5NiwxMCBAQCBwcml2YXRlOgogICAg
IGJvb2wgbV9pc1N1c3BlbmRlZCB7IGZhbHNlIH07CiAKICAgICBtdXRhYmxlIHN0ZDo6dW5pcXVl
X3B0cjxSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzPiBtX2NhcGFiaWxpdGllczsKLSAg
ICBtdXRhYmxlIFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyBtX3N1cHBv
cnRlZENvbnN0cmFpbnRzOwogICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxSZWFsdGltZU1lZGlh
U291cmNlU2V0dGluZ3M+IG1fY3VycmVudFNldHRpbmdzOwogCiAgICAgUmVmUHRyPFdlYkF1ZGlv
U291cmNlUHJvdmlkZXJBVkZPYmpDPiBtX2F1ZGlvU291cmNlUHJvdmlkZXI7CisgICAgYm9vbCBt
X3JlY29uZmlndXJhdGlvbk9uZ29pbmcgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1VzZXJN
ZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nv
Y29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwCmluZGV4IDljM2RlNzdlMjVmY2U4
ZjA2NTI5ZDJiNjA0ZTUxNWI3NjNlMjhiNTMuLmI3YzhhZThjZGI4MDM0ZTNmMTMzZjVhMTIwNzBh
Y2ViYzUyZmVjOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9V
c2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5jcHAKQEAgLTEyNSw3ICsx
MjUsNyBAQCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5Ojp+VXNlck1lZGlhQ2FwdHVyZU1h
bmFnZXJQcm94eSgpCiAgICAgbV9wcm9jZXNzLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdl
czo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsK
IH0KIAotdm9pZCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5OjpjcmVhdGVNZWRpYVNvdXJj
ZUZvckNhcHR1cmVEZXZpY2VXaXRoQ29uc3RyYWludHModWludDY0X3QgaWQsIGNvbnN0IFN0cmlu
ZyYgZGV2aWNlSUQsIFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUgdHlwZSwgY29u
c3QgTWVkaWFDb25zdHJhaW50c0RhdGEmIGNvbnN0cmFpbnRzRGF0YSwgYm9vbCYgc3VjY2VlZGVk
LCBTdHJpbmcmIGludmFsaWRDb25zdHJhaW50cykKK3ZvaWQgVXNlck1lZGlhQ2FwdHVyZU1hbmFn
ZXJQcm94eTo6Y3JlYXRlTWVkaWFTb3VyY2VGb3JDYXB0dXJlRGV2aWNlV2l0aENvbnN0cmFpbnRz
KHVpbnQ2NF90IGlkLCBjb25zdCBTdHJpbmcmIGRldmljZUlELCBXZWJDb3JlOjpSZWFsdGltZU1l
ZGlhU291cmNlOjpUeXBlIHR5cGUsIGNvbnN0IE1lZGlhQ29uc3RyYWludHNEYXRhJiBjb25zdHJh
aW50c0RhdGEsIGJvb2wmIHN1Y2NlZWRlZCwgU3RyaW5nJiBpbnZhbGlkQ29uc3RyYWludHMsIFdl
YkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgc2V0dGluZ3MpCiB7CiAgICAgQ2Fw
dHVyZVNvdXJjZU9yRXJyb3Igc291cmNlT3JFcnJvcjsKICAgICBhdXRvIGNvbnN0cmFpbnRzID0g
TWVkaWFDb25zdHJhaW50c0ltcGw6OmNyZWF0ZShNZWRpYUNvbnN0cmFpbnRzRGF0YShjb25zdHJh
aW50c0RhdGEpKTsKQEAgLTE0Miw5ICsxNDIsMTEgQEAgdm9pZCBVc2VyTWVkaWFDYXB0dXJlTWFu
YWdlclByb3h5OjpjcmVhdGVNZWRpYVNvdXJjZUZvckNhcHR1cmVEZXZpY2VXaXRoQ29uc3RyYWkK
ICAgICB9CiAKICAgICBzdWNjZWVkZWQgPSAhIXNvdXJjZU9yRXJyb3I7Ci0gICAgaWYgKHNvdXJj
ZU9yRXJyb3IpCi0gICAgICAgIG1fcHJveGllcy5zZXQoaWQsIHN0ZDo6bWFrZV91bmlxdWU8U291
cmNlUHJveHk+KGlkLCAqdGhpcywgc291cmNlT3JFcnJvci5zb3VyY2UoKSkpOwotICAgIGVsc2UK
KyAgICBpZiAoc291cmNlT3JFcnJvcikgeworICAgICAgICBhdXRvIHNvdXJjZSA9IHNvdXJjZU9y
RXJyb3Iuc291cmNlKCk7CisgICAgICAgIHNldHRpbmdzID0gc291cmNlLT5zZXR0aW5ncygpOwor
ICAgICAgICBtX3Byb3hpZXMuc2V0KGlkLCBzdGQ6Om1ha2VfdW5pcXVlPFNvdXJjZVByb3h5Pihp
ZCwgKnRoaXMsIFdURk1vdmUoc291cmNlKSkpOworICAgIH0gZWxzZQogICAgICAgICBpbnZhbGlk
Q29uc3RyYWludHMgPSBXVEZNb3ZlKHNvdXJjZU9yRXJyb3IuZXJyb3JNZXNzYWdlKTsKIH0KIApA
QCAtMTgzLDYgKzE4NSwyMSBAQCB2b2lkIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6OnNl
dEVuYWJsZWQodWludDY0X3QgaWQsIGJvb2wgZW5hYmxlZCkKICAgICAgICAgaXRlci0+dmFsdWUt
PnNvdXJjZSgpLnNldEVuYWJsZWQoZW5hYmxlZCk7CiB9CiAKK3ZvaWQgVXNlck1lZGlhQ2FwdHVy
ZU1hbmFnZXJQcm94eTo6YXBwbHlDb25zdHJhaW50cyh1aW50NjRfdCBpZCwgY29uc3QgV2ViQ29y
ZTo6TWVkaWFDb25zdHJhaW50c0RhdGEmIGNvbnN0cmFpbnRzRGF0YSkKK3sKKyAgICBhdXRvIGNv
bnN0cmFpbnRzID0gTWVkaWFDb25zdHJhaW50c0ltcGw6OmNyZWF0ZShNZWRpYUNvbnN0cmFpbnRz
RGF0YShjb25zdHJhaW50c0RhdGEpKTsKKyAgICBhdXRvIGl0ZXIgPSBtX3Byb3hpZXMuZmluZChp
ZCk7CisgICAgaWYgKGl0ZXIgPT0gbV9wcm94aWVzLmVuZCgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBhdXRvJiBzb3VyY2UgPSBpdGVyLT52YWx1ZS0+c291cmNlKCk7CisgICAgYXV0byByZXN1
bHQgPSBzb3VyY2UuYXBwbHlDb25zdHJhaW50cyhjb25zdHJhaW50cyk7CisgICAgaWYgKCFyZXN1
bHQpCisgICAgICAgIG1fcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpVc2VyTWVkaWFDYXB0dXJlTWFu
YWdlcjo6QXBwbHlDb25zdHJhaW50c1N1Y2NlZWRlZChpZCwgc291cmNlLnNldHRpbmdzKCkpLCAw
KTsKKyAgICBlbHNlCisgICAgICAgIG1fcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpVc2VyTWVkaWFD
YXB0dXJlTWFuYWdlcjo6QXBwbHlDb25zdHJhaW50c0ZhaWxlZChpZCwgcmVzdWx0LnZhbHVlKCku
Zmlyc3QsIHJlc3VsdC52YWx1ZSgpLnNlY29uZCksIDApOworfQorCiB9CiAKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVN
YW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFD
YXB0dXJlTWFuYWdlclByb3h5LmgKaW5kZXggNDEzOWRiMjRkNDc1MjA5ZWMzZTdjZDNjYmY3YmQ4
MzRhMjc4Y2JjZS4uMmE1MWQ3YzI1YmI1Y2JlNzA2Njg1NDZmOGU2NDYwMGQ4ZTliNWZiMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVN
YW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvVXNlck1l
ZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5oCkBAIC00OSwxMiArNDksMTMgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYp
IGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JikgZmluYWw7CiAK
LSAgICB2b2lkIGNyZWF0ZU1lZGlhU291cmNlRm9yQ2FwdHVyZURldmljZVdpdGhDb25zdHJhaW50
cyh1aW50NjRfdCBpZCwgY29uc3QgU3RyaW5nJiBkZXZpY2VJRCwgV2ViQ29yZTo6UmVhbHRpbWVN
ZWRpYVNvdXJjZTo6VHlwZSwgY29uc3QgV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50c0RhdGEmLCBi
b29sJiBzdWNjZWVkZWQsIFN0cmluZyYgaW52YWxpZENvbnN0cmFpbnRzKTsKKyAgICB2b2lkIGNy
ZWF0ZU1lZGlhU291cmNlRm9yQ2FwdHVyZURldmljZVdpdGhDb25zdHJhaW50cyh1aW50NjRfdCBp
ZCwgY29uc3QgU3RyaW5nJiBkZXZpY2VJRCwgV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6
VHlwZSwgY29uc3QgV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50c0RhdGEmLCBib29sJiBzdWNjZWVk
ZWQsIFN0cmluZyYgaW52YWxpZENvbnN0cmFpbnRzLCBXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291
cmNlU2V0dGluZ3MmKTsKICAgICB2b2lkIHN0YXJ0UHJvZHVjaW5nRGF0YSh1aW50NjRfdCk7CiAg
ICAgdm9pZCBzdG9wUHJvZHVjaW5nRGF0YSh1aW50NjRfdCk7CiAgICAgdm9pZCBjYXBhYmlsaXRp
ZXModWludDY0X3QsIFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmKTsK
ICAgICB2b2lkIHNldE11dGVkKHVpbnQ2NF90LCBib29sKTsKICAgICB2b2lkIHNldEVuYWJsZWQo
dWludDY0X3QsIGJvb2wpOworICAgIHZvaWQgYXBwbHlDb25zdHJhaW50cyh1aW50NjRfdCwgY29u
c3QgV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50c0RhdGEmKTsKIAogICAgIGNsYXNzIFNvdXJjZVBy
b3h5OwogICAgIGZyaWVuZCBjbGFzcyBTb3VyY2VQcm94eTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5Lm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVN
YW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KaW5kZXggMWZjMDkzZTViMzA5NmY1MTBkZGU4ZmY0YWNl
NjRmZDE0MDEzYjdhYS4uYTNjODE0ZmViOWMwODJlMzA1NTRmYzM1OWI5NTZhOGZlZmUwZGFiYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1
cmVNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KQEAgLTIyLDEw
ICsyMiwxMSBAQAogIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIG1lc3NhZ2Vz
IC0+IFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkgewotICAgIENyZWF0ZU1lZGlhU291cmNl
Rm9yQ2FwdHVyZURldmljZVdpdGhDb25zdHJhaW50cyh1aW50NjRfdCBpZCwgU3RyaW5nIGRldmlj
ZUlELCBXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlIHR5cGUsIHN0cnVjdCBXZWJD
b3JlOjpNZWRpYUNvbnN0cmFpbnRzRGF0YSBjb25zdHJhaW50cykgLT4gKGJvb2wgc3VjY2Vzcywg
U3RyaW5nIGludmFsaWRDb25zdHJhaW50cykKKyAgICBDcmVhdGVNZWRpYVNvdXJjZUZvckNhcHR1
cmVEZXZpY2VXaXRoQ29uc3RyYWludHModWludDY0X3QgaWQsIFN0cmluZyBkZXZpY2VJRCwgV2Vi
Q29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSB0eXBlLCBzdHJ1Y3QgV2ViQ29yZTo6TWVk
aWFDb25zdHJhaW50c0RhdGEgY29uc3RyYWludHMpIC0+IChib29sIHN1Y2Nlc3MsIFN0cmluZyBp
bnZhbGlkQ29uc3RyYWludHMsIFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyBz
ZXR0aW5ncykKICAgICBTdGFydFByb2R1Y2luZ0RhdGEodWludDY0X3QgaWQpCiAgICAgU3RvcFBy
b2R1Y2luZ0RhdGEodWludDY0X3QgaWQpCiAgICAgQ2FwYWJpbGl0aWVzKHVpbnQ2NF90IGlkKSAt
PiAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyBjYXBhYmlsaXRpZXMp
CiAgICAgU2V0TXV0ZWQodWludDY0X3QgaWQsIGJvb2wgbXV0ZWQpCiAgICAgU2V0RW5hYmxlZCh1
aW50NjRfdCBpZCwgYm9vbCBlbmFibGVkKQorICAgIEFwcGx5Q29uc3RyYWludHModWludDY0X3Qg
aWQsIHN0cnVjdCBXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnRzRGF0YSBjb25zdHJhaW50cykKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2Fw
dHVyZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVk
aWFDYXB0dXJlTWFuYWdlci5jcHAKaW5kZXggMTI0ZDA1ZDhmYjBmYTNlOGZiYTc3MzdmYjg3OTll
ZWM0ZjViZGYxOS4uYWEyZWE1NmM1N2RiZDgzYzY4YjIyNDliZWY4NDEzNzA5MjYxZWYzMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJl
TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVk
aWFDYXB0dXJlTWFuYWdlci5jcHAKQEAgLTc1LDkgKzc1LDkgQEAgcHVibGljOgogICAgIH0KIAog
ICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgc2V0dGluZ3MoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX3NldHRpbmdzOyB9Ci0gICAgdm9pZCBzZXRTZXR0aW5ncyhjb25zdCBS
ZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdzKQorICAgIHZvaWQgc2V0U2V0dGlu
Z3MoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiYgc2V0dGluZ3MpCiAgICAgewotICAgICAg
ICBtX3NldHRpbmdzID0gc2V0dGluZ3M7CisgICAgICAgIG1fc2V0dGluZ3MgPSBXVEZNb3ZlKHNl
dHRpbmdzKTsKICAgICAgICAgc2V0dGluZ3NEaWRDaGFuZ2UoKTsKICAgICB9CiAKQEAgLTExNiw3
ICsxMTYsMjAgQEAgcHVibGljOgogICAgICAgICAgICAgb2JzZXJ2ZXItPmF1ZGlvU2FtcGxlc0F2
YWlsYWJsZSh0aW1lLCBhdWRpb0RhdGEsIG1fZGVzY3JpcHRpb24sIG51bWJlck9mRnJhbWVzKTsK
ICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0TXV0ZWQoYm9vbCBtdXRlZCkKKyAgICB2b2lk
IGFwcGx5Q29uc3RyYWludHNTdWNjZWVkZWQoY29uc3QgV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNv
dXJjZVNldHRpbmdzJiBzZXR0aW5ncykKKyAgICB7CisgICAgICAgIGF1dG8gY2FsbGJhY2tzID0g
bV9wZW5kaW5nQXBwbHlDb25zdHJhaW50c0NhbGxiYWNrcy50YWtlRmlyc3QoKTsKKyAgICAgICAg
c2V0U2V0dGluZ3MoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzKHNldHRpbmdz
KSk7CisgICAgICAgIGNhbGxiYWNrcy5zdWNjZXNzSGFuZGxlcigpOworICAgIH0KKworICAgIHZv
aWQgYXBwbHlDb25zdHJhaW50c0ZhaWxlZChjb25zdCBTdHJpbmcmIGZhaWxlZENvbnN0cmFpbnQs
IGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQorICAgIHsKKyAgICAgICAgYXV0byBjYWxsYmFj
a3MgPSBtX3BlbmRpbmdBcHBseUNvbnN0cmFpbnRzQ2FsbGJhY2tzLnRha2VGaXJzdCgpOworICAg
ICAgICBjYWxsYmFja3MuZmFpbHVyZUhhbmRsZXIoZmFpbGVkQ29uc3RyYWludCwgZXJyb3JNZXNz
YWdlKTsKKyAgICB9CisKKyAgICB2b2lkIHNldE11dGVkKGJvb2wgbXV0ZWQpIGZpbmFsCiAgICAg
ewogICAgICAgICBpZiAobV9tdXRlZCA9PSBtdXRlZCkKICAgICAgICAgICAgIHJldHVybjsKQEAg
LTEyNSw3ICsxMzgsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fbWFuYWdlci5zZXRNdXRlZChtX2lk
LCBtX211dGVkKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0RW5hYmxlZChib29sIGVu
YWJsZWQpCisgICAgdm9pZCBzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkgZmluYWwKICAgICB7CiAg
ICAgICAgIGlmIChtX2VuYWJsZWQgPT0gZW5hYmxlZCkKICAgICAgICAgICAgIHJldHVybjsKQEAg
LTEzNCw2ICsxNDcsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fbWFuYWdlci5zZXRFbmFibGVkKG1f
aWQsIG1fZW5hYmxlZCk7CiAgICAgfQogCitwcml2YXRlOgogICAgIHZvaWQgc3RhcnRQcm9kdWNp
bmdEYXRhKCkgZmluYWwgeyBtX21hbmFnZXIuc3RhcnRQcm9kdWNpbmdEYXRhKG1faWQpOyB9CiAg
ICAgdm9pZCBzdG9wUHJvZHVjaW5nRGF0YSgpIGZpbmFsIHsgbV9tYW5hZ2VyLnN0b3BQcm9kdWNp
bmdEYXRhKG1faWQpOyB9CiAgICAgYm9vbCBpc0NhcHR1cmVTb3VyY2UoKSBjb25zdCBmaW5hbCB7
IHJldHVybiB0cnVlOyB9CkBAIC0xNDcsMTEgKzE2MSwxNSBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBtX2F1ZGlvU291cmNlUHJvdmlkZXIuZ2V0KCk7CiAgICAgfQogCi1wcml2YXRlOgogICAg
IC8vIFJlYWx0aW1lTWVkaWFTb3VyY2UKICAgICB2b2lkIGJlZ2luQ29uZmlndXJhdGlvbigpIGZp
bmFsIHsgfQogICAgIHZvaWQgY29tbWl0Q29uZmlndXJhdGlvbigpIGZpbmFsIHsgfQogCisgICAg
dm9pZCBhcHBseUNvbnN0cmFpbnRzKGNvbnN0IFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludHMmIGNv
bnN0cmFpbnRzLCBTdWNjZXNzSGFuZGxlciYmIHN1Y2Nlc3NIYW5kbGVyLCBGYWlsdXJlSGFuZGxl
ciYmIGZhaWx1cmVIYW5kbGVyKSBmaW5hbCB7CisgICAgICAgIG1fbWFuYWdlci5hcHBseUNvbnN0
cmFpbnRzKG1faWQsIGNvbnN0cmFpbnRzKTsKKyAgICAgICAgbV9wZW5kaW5nQXBwbHlDb25zdHJh
aW50c0NhbGxiYWNrcy5hcHBlbmQoeyBXVEZNb3ZlKHN1Y2Nlc3NIYW5kbGVyKSwgV1RGTW92ZShm
YWlsdXJlSGFuZGxlcil9KTsKKyAgICB9CisKICAgICB1aW50NjRfdCBtX2lkOwogICAgIFVzZXJN
ZWRpYUNhcHR1cmVNYW5hZ2VyJiBtX21hbmFnZXI7CiAgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFs
PFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM+IG1fY2FwYWJpbGl0aWVzOwpAQCAtMTU5
LDYgKzE3NywxMiBAQCBwcml2YXRlOgogICAgIENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiBtX2Rl
c2NyaXB0aW9uOwogICAgIENBUmluZ0J1ZmZlciBtX3JpbmdCdWZmZXI7CiAgICAgUmVmUHRyPFdl
YkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDPiBtX2F1ZGlvU291cmNlUHJvdmlkZXI7CisKKyAg
ICBzdHJ1Y3QgQXBwbHlDb25zdHJhaW50c0NhbGxiYWNrIHsKKyAgICAgICAgU3VjY2Vzc0hhbmRs
ZXIgc3VjY2Vzc0hhbmRsZXI7CisgICAgICAgIEZhaWx1cmVIYW5kbGVyIGZhaWx1cmVIYW5kbGVy
OworICAgIH07CisgICAgRGVxdWU8QXBwbHlDb25zdHJhaW50c0NhbGxiYWNrPiBtX3BlbmRpbmdB
cHBseUNvbnN0cmFpbnRzQ2FsbGJhY2tzOwogfTsKIAogVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6
OlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyKFdlYlByb2Nlc3MqIHByb2Nlc3MpCkBAIC0xOTYsMTEg
KzIyMCwxMyBAQCBXZWJDb3JlOjpDYXB0dXJlU291cmNlT3JFcnJvciBVc2VyTWVkaWFDYXB0dXJl
TWFuYWdlcjo6Y3JlYXRlQ2FwdHVyZVNvdXJjZShjb25zdAogICAgIGNvbnN0cmFpbnRzRGF0YS5p
c1ZhbGlkID0gY29uc3RyYWludHMtPmlzVmFsaWQoKTsKICAgICBib29sIHN1Y2NlZWRlZDsKIAor
ICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyBzZXR0aW5nczsKICAgICBTdHJpbmcgZXJy
b3JNZXNzYWdlOwotICAgIGlmICghbV9wcm9jZXNzLnNlbmRTeW5jKE1lc3NhZ2VzOjpVc2VyTWVk
aWFDYXB0dXJlTWFuYWdlclByb3h5OjpDcmVhdGVNZWRpYVNvdXJjZUZvckNhcHR1cmVEZXZpY2VX
aXRoQ29uc3RyYWludHMoaWQsIGRldmljZUlELCBzb3VyY2VUeXBlLCBjb25zdHJhaW50c0RhdGEp
LCBNZXNzYWdlczo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTo6Q3JlYXRlTWVkaWFTb3Vy
Y2VGb3JDYXB0dXJlRGV2aWNlV2l0aENvbnN0cmFpbnRzOjpSZXBseShzdWNjZWVkZWQsIGVycm9y
TWVzc2FnZSksIDApKQorICAgIGlmICghbV9wcm9jZXNzLnNlbmRTeW5jKE1lc3NhZ2VzOjpVc2Vy
TWVkaWFDYXB0dXJlTWFuYWdlclByb3h5OjpDcmVhdGVNZWRpYVNvdXJjZUZvckNhcHR1cmVEZXZp
Y2VXaXRoQ29uc3RyYWludHMoaWQsIGRldmljZUlELCBzb3VyY2VUeXBlLCBjb25zdHJhaW50c0Rh
dGEpLCBNZXNzYWdlczo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTo6Q3JlYXRlTWVkaWFT
b3VyY2VGb3JDYXB0dXJlRGV2aWNlV2l0aENvbnN0cmFpbnRzOjpSZXBseShzdWNjZWVkZWQsIGVy
cm9yTWVzc2FnZSwgc2V0dGluZ3MpLCAwKSkKICAgICAgICAgcmV0dXJuIFdURk1vdmUoZXJyb3JN
ZXNzYWdlKTsKIAogICAgIGF1dG8gc291cmNlID0gYWRvcHRSZWYoKm5ldyBTb3VyY2UoU3RyaW5n
OjpudW1iZXIoaWQpLCBzb3VyY2VUeXBlLCBlbXB0eVN0cmluZygpLCBpZCwgKnRoaXMpKTsKKyAg
ICBzb3VyY2UtPnNldFNldHRpbmdzKFdURk1vdmUoc2V0dGluZ3MpKTsKICAgICBtX3NvdXJjZXMu
c2V0KGlkLCBzb3VyY2UuY29weVJlZigpKTsKICAgICByZXR1cm4gV2ViQ29yZTo6Q2FwdHVyZVNv
dXJjZU9yRXJyb3IoV1RGTW92ZShzb3VyY2UpKTsKIH0KQEAgLTIyNiw3ICsyNTIsNyBAQCB2b2lk
IFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOjpzb3VyY2VFbmFibGVkQ2hhbmdlZCh1aW50NjRfdCBp
ZCwgYm9vbCBlbmFibGVkKQogdm9pZCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6c291cmNlU2V0
dGluZ3NDaGFuZ2VkKHVpbnQ2NF90IGlkLCBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGlu
Z3MmIHNldHRpbmdzKQogewogICAgIEFTU0VSVChtX3NvdXJjZXMuY29udGFpbnMoaWQpKTsKLSAg
ICBtX3NvdXJjZXMuZ2V0KGlkKS0+c2V0U2V0dGluZ3Moc2V0dGluZ3MpOworICAgIG1fc291cmNl
cy5nZXQoaWQpLT5zZXRTZXR0aW5ncyhSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3Moc2V0dGlu
Z3MpKTsKIH0KIAogdm9pZCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6c3RvcmFnZUNoYW5nZWQo
dWludDY0X3QgaWQsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SGFuZGxlJiBoYW5kbGUsIGNvbnN0IFdl
YkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIHVpbnQ2NF90IG51
bWJlck9mRnJhbWVzKQpAQCAtMjc2LDYgKzMwMiwzMCBAQCB2b2lkIFVzZXJNZWRpYUNhcHR1cmVN
YW5hZ2VyOjpzZXRFbmFibGVkKHVpbnQ2NF90IGlkLCBib29sIGVuYWJsZWQpCiAgICAgbV9wcm9j
ZXNzLnNlbmQoTWVzc2FnZXM6OlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6OlNldEVuYWJs
ZWQoaWQsIGVuYWJsZWQpLCAwKTsKIH0KIAordm9pZCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6
YXBwbHlDb25zdHJhaW50cyh1aW50NjRfdCBpZCwgY29uc3QgV2ViQ29yZTo6TWVkaWFDb25zdHJh
aW50cyYgY29uc3RyYWludHMpCit7CisgICAgTWVkaWFDb25zdHJhaW50c0RhdGEgY29uc3RyYWlu
dHNEYXRhOworICAgIGNvbnN0cmFpbnRzRGF0YS5tYW5kYXRvcnlDb25zdHJhaW50cyA9IGNvbnN0
cmFpbnRzLm1hbmRhdG9yeUNvbnN0cmFpbnRzKCk7CisgICAgY29uc3RyYWludHNEYXRhLmFkdmFu
Y2VkQ29uc3RyYWludHMgPSBjb25zdHJhaW50cy5hZHZhbmNlZENvbnN0cmFpbnRzKCk7CisgICAg
Y29uc3RyYWludHNEYXRhLmlzVmFsaWQgPSBjb25zdHJhaW50cy5pc1ZhbGlkKCk7CisKKyAgICBt
X3Byb2Nlc3Muc2VuZChNZXNzYWdlczo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTo6QXBw
bHlDb25zdHJhaW50cyhpZCwgY29uc3RyYWludHNEYXRhKSwgMCk7Cit9CisKK3ZvaWQgVXNlck1l
ZGlhQ2FwdHVyZU1hbmFnZXI6OmFwcGx5Q29uc3RyYWludHNTdWNjZWVkZWQodWludDY0X3QgaWQs
IGNvbnN0IFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgc2V0dGluZ3MpCit7
CisgICAgQVNTRVJUKG1fc291cmNlcy5jb250YWlucyhpZCkpOworICAgIGF1dG8mIHNvdXJjZSA9
ICptX3NvdXJjZXMuZ2V0KGlkKTsKKyAgICBzb3VyY2UuYXBwbHlDb25zdHJhaW50c1N1Y2NlZWRl
ZChzZXR0aW5ncyk7Cit9CisKK3ZvaWQgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OmFwcGx5Q29u
c3RyYWludHNGYWlsZWQodWludDY0X3QgaWQsIGNvbnN0IFN0cmluZyYgZmFpbGVkQ29uc3RyYWlu
dCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQoreworICAgIEFTU0VSVChtX3NvdXJjZXMuY29udGFp
bnMoaWQpKTsKKyAgICBhdXRvJiBzb3VyY2UgPSAqbV9zb3VyY2VzLmdldChpZCk7CisgICAgc291
cmNlLmFwcGx5Q29uc3RyYWludHNGYWlsZWQoZmFpbGVkQ29uc3RyYWludCwgbWVzc2FnZSk7Cit9
CisKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2Nv
Y29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmgKaW5kZXggMDE3NjU1N2UzZmE2ZmUxZWQy
OGU4YTQ3YmY3MmI4N2RiNmQwOTkzNS4uZDMxOGVjN2E1NGNjNDk5OGRmNjNkMmExOGJmOWY0YmIy
NWJjNzZkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9Vc2Vy
TWVkaWFDYXB0dXJlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29j
b2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuaApAQCAtNzUsNiArNzUsOSBAQCBwcml2YXRlOgog
ICAgIFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMgY2FwYWJpbGl0aWVz
KHVpbnQ2NF90KTsKICAgICB2b2lkIHNldE11dGVkKHVpbnQ2NF90LCBib29sKTsKICAgICB2b2lk
IHNldEVuYWJsZWQodWludDY0X3QsIGJvb2wpOworICAgIHZvaWQgYXBwbHlDb25zdHJhaW50cyh1
aW50NjRfdCwgY29uc3QgV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50cyYpOworICAgIHZvaWQgYXBw
bHlDb25zdHJhaW50c1N1Y2NlZWRlZCh1aW50NjRfdCwgY29uc3QgV2ViQ29yZTo6UmVhbHRpbWVN
ZWRpYVNvdXJjZVNldHRpbmdzJik7CisgICAgdm9pZCBhcHBseUNvbnN0cmFpbnRzRmFpbGVkKHVp
bnQ2NF90LCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKIAogICAgIGNsYXNzIFNvdXJj
ZTsKICAgICBmcmllbmQgY2xhc3MgU291cmNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIubWVz
c2FnZXMuaW4KaW5kZXggZWVjMDU2NWM2ODY0YTQ2YjAwZTlmOGZiOTEwYzE4Yzg5ZTllNGExMy4u
MWZjMWYwMjkyZDU1ZTg1MmUwNTNkNTJiNzMwNzU0ZmM0NGI0MWJkZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNh
cHR1cmVNYW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC0yOCw0ICsyOCw2IEBAIG1lc3NhZ2VzIC0+IFVz
ZXJNZWRpYUNhcHR1cmVNYW5hZ2VyIHsKICAgICBTb3VyY2VTZXR0aW5nc0NoYW5nZWQodWludDY0
X3QgaWQsIFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyBzZXR0aW5ncykKICAg
ICBTdG9yYWdlQ2hhbmdlZCh1aW50NjRfdCBpZCwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OkhhbmRs
ZSBzdG9yYWdlSGFuZGxlLCBXZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24gZGVzY3Jp
cHRpb24sIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKQogICAgIEF1ZGlvU2FtcGxlc0F2YWlsYWJs
ZSh1aW50NjRfdCBpZCwgTWVkaWFUaW1lIHRpbWUsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzLCB1
aW50NjRfdCBzdGFydEZyYW1lLCB1aW50NjRfdCBlbmRGcmFtZSkKKyAgICBBcHBseUNvbnN0cmFp
bnRzU3VjY2VlZGVkKHVpbnQ2NF90IGlkLCBXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlU2V0
dGluZ3Mgc2V0dGluZ3MpCisgICAgQXBwbHlDb25zdHJhaW50c0ZhaWxlZCh1aW50NjRfdCBpZCwg
U3RyaW5nIGZhaWxlZENvbnN0cmFpbnQsIFN0cmluZyBtZXNzYWdlKQogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309419</attachid>
            <date>2017-05-08 15:05:54 -0700</date>
            <delta_ts>2017-05-08 16:31:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171633-20170508150553.patch</filename>
            <type>text/plain</type>
            <size>38010</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2Mzc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDk1ZDVhZmRkMDU5YTZk
ODU3ZWI3NmVkOGM4MjdlZDM0OWYyN2U1NS4uMWRkODFkZjcyYTZmZTZlYTg5NjQ4ZGVhY2Y4Nzdk
ZmM5MzZkMjQ4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDUzIEBACiAyMDE3LTA1LTA4ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAorICAgICAgICBBZGQgc3VwcG9ydCBmb3Ig
cmVhZGluZyBhbmQgd3JpdGluZyBzZXR0aW5ncyBmcm9tIFVJUHJvY2VzcyBhdWRpbyBjYXB0dXJl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzE2MzMK
KworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgQ292ZXJlZCBi
eSBtYW51YWwgdGVzdGluZyBhbmQgZXhpc3RpbmcgdGVzdCBzZXRzLgorCisgICAgICAgIE1vdmlu
ZyBzdWNjZXNzL2ZhaWx1cmUgY2FsbGJhY2tzIGZvciBhcHBseUNvbnN0cmFpbnRzLgorICAgICAg
ICBNYWtpbmcgbWFpbiBSZWFsdGltZU1lZGlhU291cmNlOjphcHBseUNvbnN0cmFpbnRzIHZpcnR1
YWwgc28gdGhhdCBXZWJQcm9jZXNzIHNvdXJjZSBwcm94aWVzIGNhbiBpbXBsZW1lbnQgaXQgYnkK
KyAgICAgICAgZG9pbmcgYW4gSVBDIGNhbGwgZGlyZWN0bHkuIERvaW5nIHNvIGZvciBVSVByb2Nl
c3MgQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS4KKworICAgICAgICBBZGRpbmcgc3VwcG9ydCBmb3Ig
dm9sdW1lIHRvIENvcmVBdWRpb0NhcHR1cmVTb3VyY2UgYnkgYXBwbHlpbmcgZ2FpbiBwb3N0LWNh
cHR1cmluZy4KKyAgICAgICAgQWRkaW5nIHN1cHBvcnQgZm9yIHRvZ2dsaW5nIGVjaG8gY2FuY2Vs
bGF0aW9uIGluIENvcmVBdWRpb0NhcHR1cmVTb3VyY2UuCisgICAgICAgIEFkZGluZyBzdXBwb3J0
IHRvIGNoYW5nZSBlY2hvIGNhbmNlbGxhdGlvbiBhbmQgc2FtcGxlIHJhdGUgYnkgc2NoZWR1bGlu
ZyBhIHJlY29uZmlndXJhdGlvbiBvZiB0aGUgYXVkaW8gdW5pdC4KKyAgICAgICAgVG8gZG8gc28s
IHdlIHN0b3AgcHJvZHVjaW5nIGRhdGEsIGRlbGV0ZSB0aGUgYXVkaW8gdW5pdCBhbmQgcmVzdGFy
dCBwcm9kdWNpbmcgZGF0YS4KKyAgICAgICAgUmVtb3ZpbmcgQ29yZUF1ZGlvQ2FwdHVyZVNvdXJj
ZTo6c3VwcG9ydGVkQ29uc3RyYWludHMgYXMgaXQgaXMgcmVkdW5kYW50IHdpdGgKKyAgICAgICAg
UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpzdXBwb3J0ZWRDb25zdHJhaW50cy4KKworICAg
ICAgICBTZXR0aW5nIHNhbXBsZSByYXRlIG9ubHkgdG8gdGhlIGZvbGxvd2luZyB2YWx1ZXM6IDgw
MDAsIDE2MDAwLCAzMjAwMCwgNDQxMDAsIDQ4MDAwLgorCisgICAgICAgICogTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3Ry
ZWFtVHJhY2s6OmFwcGx5Q29uc3RyYWludHMpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U3RyZWFtVHJhY2tQcml2YXRlOjphcHBseUNvbnN0cmFpbnRzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5oOgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6YXBwbHlDb25zdHJhaW50cyk6CisgICAgICAgICogcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5oOgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5oOgorICAgICAgICAo
V2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpzdXBwb3J0ZWRDb25zdHJhaW50
cyk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVT
b3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6fkNv
cmVBdWRpb0NhcHR1cmVTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q29yZUF1ZGlvQ2FwdHVy
ZVNvdXJjZTo6cHJvY2Vzc01pY3JvcGhvbmVTYW1wbGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
cmVBdWRpb0NhcHR1cmVTb3VyY2U6OmNsZWFudXBBdWRpb1VuaXQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6Y3JlYXRlQXVkaW9Vbml0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OmNvbmZpZ3VyZUF1ZGlvVW5pdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpzdGFydFByb2R1Y2luZ0RhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6Y2FwYWJpbGl0aWVz
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OnNldHRpbmdzKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OmFwcGx5U2FtcGxlUmF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb3JlQXVkaW9DYXB0dXJlU291cmNlOjphcHBseUVjaG9D
YW5jZWxsYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6
c2NoZWR1bGVSZWNvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q29yZUF1ZGlvQ2Fw
dHVyZVNvdXJjZTo6Y2xlYW51cEF1ZGlvVW5pdHMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6c2V0dXBBdWRpb1VuaXRzKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5o
OgorCisyMDE3LTA1LTA4ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKwogICAg
ICAgICBDb3JlQXVkaW9TaGFyZWRVbml0IHNob3VsZCBvd24gaXRzIGNvbmZpZ3VyYXRpb24gcGFy
YW1ldGVycwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTcxODEyCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwppbmRleCBjZjlkZmI1MDQ5Zjg3OWEwNTY5YjUxYTdmNTkwNTMxMDcw
YmQ0OTE3Li45YmU3NWMwNGY1MmYyYWZmNDdhYmI0NWExY2EwOGU5NzM5NTg1NWE5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCkBAIC0xLDUgKzEsMzEgQEAKIDIwMTctMDUtMDggIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5A
YXBwbGUuY29tPgogCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciByZWFkaW5nIGFuZCB3cml0aW5n
IHNldHRpbmdzIGZyb20gVUlQcm9jZXNzIGF1ZGlvIGNhcHR1cmUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MTYzMworCisgICAgICAgIFJldmlld2Vk
IGJ5IEVyaWMgQ2FybHNvbi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFD
YXB0dXJlTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhQ2FwdHVy
ZU1hbmFnZXJQcm94eTo6Y3JlYXRlTWVkaWFTb3VyY2VGb3JDYXB0dXJlRGV2aWNlV2l0aENvbnN0
cmFpbnRzKToKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTo6
YXBwbHlDb25zdHJhaW50cyk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNh
cHR1cmVNYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlh
Q2FwdHVyZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL2Nv
Y29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6VXNlck1l
ZGlhQ2FwdHVyZU1hbmFnZXI6OlNvdXJjZTo6c2V0U2V0dGluZ3MpOgorICAgICAgICAoV2ViS2l0
OjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6U291cmNlOjphcHBseUNvbnN0cmFpbnRzU3VjY2Vl
ZGVkKToKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OlNvdXJjZTo6
YXBwbHlDb25zdHJhaW50c0ZhaWxlZCk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYUNhcHR1
cmVNYW5hZ2VyOjpjcmVhdGVDYXB0dXJlU291cmNlKToKKyAgICAgICAgKFdlYktpdDo6VXNlck1l
ZGlhQ2FwdHVyZU1hbmFnZXI6OnNvdXJjZVNldHRpbmdzQ2hhbmdlZCk6CisgICAgICAgIChXZWJL
aXQ6OlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOjphcHBseUNvbnN0cmFpbnRzKToKKyAgICAgICAg
KFdlYktpdDo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OmFwcGx5Q29uc3RyYWludHNTdWNjZWVk
ZWQpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6YXBwbHlDb25z
dHJhaW50c0ZhaWxlZCk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2Vy
OjpTb3VyY2U6OnNldE11dGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlh
Q2FwdHVyZU1hbmFnZXI6OlNvdXJjZTo6c2V0RW5hYmxlZCk6IERlbGV0ZWQuCisgICAgICAgICog
V2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIubWVzc2FnZXMuaW46CisKKzIw
MTctMDUtMDggIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCiAgICAgICAgIEZv
bGxvdy11cCB0byBidWcgMTcxNzEwOiB1c2UgbW9yZSByZWZlcmVuY2VzIGFuZCByZWplY3QgaWYg
ZWl0aGVyIGF1ZGlvIG9yIHZpZGVvIHNvdXJjZSBjcmVhdGlvbiBpcyBmYWlsaW5nCiAgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzE4MjQKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNr
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFj
ay5jcHAKaW5kZXggNmE2YmE1MTVhZTdlYzQ4NDMzYjQxNDNkN2ViZmE5OTIzYTIyZWM0ZC4uZTU1
NGJjNGM2NjM4NDAxMTUxYzUwZTY3NWFkZTMzMzUyNGI0NjdjYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwCkBA
IC0yNjksNyArMjY5LDcgQEAgdm9pZCBNZWRpYVN0cmVhbVRyYWNrOjphcHBseUNvbnN0cmFpbnRz
KGNvbnN0IHN0ZDo6b3B0aW9uYWw8TWVkaWFUcmFja0NvbnN0cmFpbnQKICAgICAgICAgd2Vha1Ro
aXMtPm1fcHJvbWlzZS0+cmVzb2x2ZSgpOwogICAgICAgICB3ZWFrVGhpcy0+bV9jb25zdHJhaW50
cyA9IGNvbnN0cmFpbnRzLnZhbHVlX29yKE1lZGlhVHJhY2tDb25zdHJhaW50cyB7IH0pOwogICAg
IH07Ci0gICAgbV9wcml2YXRlLT5hcHBseUNvbnN0cmFpbnRzKGNyZWF0ZU1lZGlhQ29uc3RyYWlu
dHNJbXBsKGNvbnN0cmFpbnRzKSwgc3VjY2Vzc0hhbmRsZXIsIGZhaWx1cmVIYW5kbGVyKTsKKyAg
ICBtX3ByaXZhdGUtPmFwcGx5Q29uc3RyYWludHMoY3JlYXRlTWVkaWFDb25zdHJhaW50c0ltcGwo
Y29uc3RyYWludHMpLCBXVEZNb3ZlKHN1Y2Nlc3NIYW5kbGVyKSwgV1RGTW92ZShmYWlsdXJlSGFu
ZGxlcikpOwogfQogCiB2b2lkIE1lZGlhU3RyZWFtVHJhY2s6OmFkZE9ic2VydmVyKE9ic2VydmVy
JiBvYnNlcnZlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmNwcAppbmRleCA5ZmZkMDQ0M2Iy
YzIzMzViZGJjNmZiNjUxY2FmZTVlNDRiZWIwMzQzLi5mNWI0ZTI5ZTlmYmU2MjZhNTg1NjZmOWIw
ODFlNWY2M2E4Y2FjZTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuY3BwCkBAIC0xNDEs
OSArMTQxLDkgQEAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYgTWVkaWFT
dHJlYW1UcmFja1ByaXZhdGU6OmNhcGFiaWxpdGllcygpIGMKICAgICByZXR1cm4gbV9zb3VyY2Ut
PmNhcGFiaWxpdGllcygpOwogfQogCi12b2lkIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjphcHBs
eUNvbnN0cmFpbnRzKGNvbnN0IE1lZGlhQ29uc3RyYWludHMmIGNvbnN0cmFpbnRzLCBSZWFsdGlt
ZU1lZGlhU291cmNlOjpTdWNjZXNzSGFuZGxlciBzdWNjZXNzSGFuZGxlciwgUmVhbHRpbWVNZWRp
YVNvdXJjZTo6RmFpbHVyZUhhbmRsZXIgZmFpbHVyZUhhbmRsZXIpCit2b2lkIE1lZGlhU3RyZWFt
VHJhY2tQcml2YXRlOjphcHBseUNvbnN0cmFpbnRzKGNvbnN0IE1lZGlhQ29uc3RyYWludHMmIGNv
bnN0cmFpbnRzLCBSZWFsdGltZU1lZGlhU291cmNlOjpTdWNjZXNzSGFuZGxlciYmIHN1Y2Nlc3NI
YW5kbGVyLCBSZWFsdGltZU1lZGlhU291cmNlOjpGYWlsdXJlSGFuZGxlciYmIGZhaWx1cmVIYW5k
bGVyKQogewotICAgIG1fc291cmNlLT5hcHBseUNvbnN0cmFpbnRzKGNvbnN0cmFpbnRzLCBzdWNj
ZXNzSGFuZGxlciwgZmFpbHVyZUhhbmRsZXIpOworICAgIG1fc291cmNlLT5hcHBseUNvbnN0cmFp
bnRzKGNvbnN0cmFpbnRzLCBXVEZNb3ZlKHN1Y2Nlc3NIYW5kbGVyKSwgV1RGTW92ZShmYWlsdXJl
SGFuZGxlcikpOwogfQogCiBBdWRpb1NvdXJjZVByb3ZpZGVyKiBNZWRpYVN0cmVhbVRyYWNrUHJp
dmF0ZTo6YXVkaW9Tb3VyY2VQcm92aWRlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuaAppbmRl
eCA0ZDc4M2UwMjU0N2ZmY2U3NTU4MWJjNTg2Yzg1ZjUyNmU4MzJlNTcwLi41ZTIwNDZhZDVhNGNl
ZWE4OGRmNWQzZGFiMjQ5ZmUzYTJkNjZjODIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmgK
QEAgLTg5LDcgKzg5LDcgQEAgcHVibGljOgogICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VT
ZXR0aW5ncyYgc2V0dGluZ3MoKSBjb25zdDsKICAgICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNl
Q2FwYWJpbGl0aWVzJiBjYXBhYmlsaXRpZXMoKSBjb25zdDsKIAotICAgIHZvaWQgYXBwbHlDb25z
dHJhaW50cyhjb25zdCBNZWRpYUNvbnN0cmFpbnRzJiwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6U3Vj
Y2Vzc0hhbmRsZXIsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OkZhaWx1cmVIYW5kbGVyKTsKKyAgICB2
b2lkIGFwcGx5Q29uc3RyYWludHMoY29uc3QgTWVkaWFDb25zdHJhaW50cyYsIFJlYWx0aW1lTWVk
aWFTb3VyY2U6OlN1Y2Nlc3NIYW5kbGVyJiYsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OkZhaWx1cmVI
YW5kbGVyJiYpOwogCiAgICAgQXVkaW9Tb3VyY2VQcm92aWRlciogYXVkaW9Tb3VyY2VQcm92aWRl
cigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
ZWFsdGltZU1lZGlhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCmluZGV4IDE5MWRhZWUyZDExNjgwZDQxM2VmN2Yw
NDRiZmE4ZTVlMDI3MmRlNTguLjRiNGU0NjQ3MmFmZmE5NDdlYTgyOGVhNDVkNmQwYmIwM2UwNDY1
MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0
aW1lTWVkaWFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCkBAIC03NTEsNyArNzUxLDcgQEAgc3RkOjpvcHRp
b25hbDxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiBSZWFsdGltZU1lZGlhU291cmNlOjphcHBs
eUNvbnN0cmFpbnRzKGMKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi12b2lkIFJlYWx0
aW1lTWVkaWFTb3VyY2U6OmFwcGx5Q29uc3RyYWludHMoY29uc3QgTWVkaWFDb25zdHJhaW50cyYg
Y29uc3RyYWludHMsIFN1Y2Nlc3NIYW5kbGVyIHN1Y2Nlc3NIYW5kbGVyLCBGYWlsdXJlSGFuZGxl
ciBmYWlsdXJlSGFuZGxlcikKK3ZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6YXBwbHlDb25zdHJh
aW50cyhjb25zdCBNZWRpYUNvbnN0cmFpbnRzJiBjb25zdHJhaW50cywgU3VjY2Vzc0hhbmRsZXIm
JiBzdWNjZXNzSGFuZGxlciwgRmFpbHVyZUhhbmRsZXImJiBmYWlsdXJlSGFuZGxlcikKIHsKICAg
ICBhdXRvIHJlc3VsdCA9IGFwcGx5Q29uc3RyYWludHMoY29uc3RyYWludHMpOwogICAgIGlmICgh
cmVzdWx0ICYmIHN1Y2Nlc3NIYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5oCmluZGV4IGVmNWQzNjJm
ZjUwMzhhMDgyMTdlNWMyMzYyMTcxZTE4ZjkzNDg3ZTcuLjliMDAwNmIyMGI2YmZmZWIyY2QwMzAy
ODQ1Y2IxYzQyOTIzM2FmYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmgKQEAgLTE0Miw3ICsxNDIsNyBA
QCBwdWJsaWM6CiAKICAgICB1c2luZyBTdWNjZXNzSGFuZGxlciA9IHN0ZDo6ZnVuY3Rpb248dm9p
ZCgpPjsKICAgICB1c2luZyBGYWlsdXJlSGFuZGxlciA9IHN0ZDo6ZnVuY3Rpb248dm9pZChjb25z
dCBTdHJpbmcmIGJhZENvbnN0cmFpbnQsIGNvbnN0IFN0cmluZyYgZXJyb3JTdHJpbmcpPjsKLSAg
ICB2b2lkIGFwcGx5Q29uc3RyYWludHMoY29uc3QgTWVkaWFDb25zdHJhaW50cyYsIFN1Y2Nlc3NI
YW5kbGVyLCBGYWlsdXJlSGFuZGxlcik7CisgICAgdmlydHVhbCB2b2lkIGFwcGx5Q29uc3RyYWlu
dHMoY29uc3QgTWVkaWFDb25zdHJhaW50cyYsIFN1Y2Nlc3NIYW5kbGVyJiYsIEZhaWx1cmVIYW5k
bGVyJiYpOwogICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4gYXBw
bHlDb25zdHJhaW50cyhjb25zdCBNZWRpYUNvbnN0cmFpbnRzJik7CiAKICAgICB2aXJ0dWFsIGJv
b2wgc3VwcG9ydHNDb25zdHJhaW50cyhjb25zdCBNZWRpYUNvbnN0cmFpbnRzJiwgU3RyaW5nJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGlt
ZU1lZGlhU291cmNlU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5oCmluZGV4IGUxZmQxNmY4NmMyNzZkMTI2
NTRiNTljYzI0OWUwOWZjYzAyNmJhNTAuLjc1ZTBjOWE5MTUzZGNhNjkyNzg5YWI5MTE2Y2RjMjJi
NWEzMzlhN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L1JlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5oCkBAIC05Myw2ICs5
Myw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGdyb3VwSWQoKSBjb25zdCB7
IHJldHVybiBtX2dyb3VwSWQ7IH0KICAgICB2b2lkIHNldEdyb3VwSWQoY29uc3QgQXRvbWljU3Ry
aW5nJiBncm91cElkKSB7IG1fZ3JvdXBJZCA9IGdyb3VwSWQ7IH0KIAorICAgIGNvbnN0IFJlYWx0
aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyYgc3VwcG9ydGVkQ29uc3RyYWludHMo
KSBjb25zdCB7IHJldHVybiBtX3N1cHBvcnRlZENvbnN0cmFpbnRzOyB9CiAgICAgdm9pZCBzZXRT
dXBwb3J0ZWRDb25zdHJhaW50cyhjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29u
c3RyYWludHMmIHN1cHBvcnRlZENvbnN0cmFpbnRzKSB7IG1fc3VwcG9ydGVkQ29uc3RyYWludHMg
PSBzdXBwb3J0ZWRDb25zdHJhaW50czsgfQogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4g
dm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVTb3Vy
Y2UuY3BwCmluZGV4IDBlYzM5MTA1Mjc0MzAwMDYxMzljNGFjODgwMzE3ZmViZTZkOWFmOGIuLjkx
YTM4OGQ3NGE2NDRjOGU3MTRmMmEwNDdiMjA4ODMxOGY2Nzc3ZjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlU291cmNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1
ZGlvQ2FwdHVyZVNvdXJjZS5jcHAKQEAgLTgzLDggKzgzLDkgQEAgcHVibGljOgogCiAgICAgT1NT
dGF0dXMgc3VzcGVuZCgpOwogCi0gICAgT1NTdGF0dXMgc2V0dXBBdWRpb1VuaXRzKCk7Ci0gICAg
dm9pZCBjbGVhbnVwQXVkaW9Vbml0cygpOworICAgIE9TU3RhdHVzIHNldHVwQXVkaW9Vbml0KCk7
CisgICAgdm9pZCBjbGVhbnVwQXVkaW9Vbml0KCk7CisgICAgT1NTdGF0dXMgcmVjb25maWd1cmVB
dWRpb1VuaXQoKTsKIAogICAgIHZvaWQgYWRkRWNob0NhbmNlbGxhdGlvblNvdXJjZShBdWRpb1Nh
bXBsZURhdGFTb3VyY2UmKTsKICAgICB2b2lkIHJlbW92ZUVjaG9DYW5jZWxsYXRpb25Tb3VyY2Uo
QXVkaW9TYW1wbGVEYXRhU291cmNlJik7CkBAIC0xMDEsNiArMTAyLDggQEAgcHVibGljOgogICAg
IHZvaWQgc2V0U2FtcGxlUmF0ZShpbnQgc2FtcGxlUmF0ZSkgeyBtX3NhbXBsZVJhdGUgPSBzYW1w
bGVSYXRlOyB9CiAgICAgdm9pZCBzZXRFbmFibGVFY2hvQ2FuY2VsbGF0aW9uKGJvb2wgZW5hYmxl
RWNob0NhbmNlbGxhdGlvbikgeyBtX2VuYWJsZUVjaG9DYW5jZWxsYXRpb24gPSBlbmFibGVFY2hv
Q2FuY2VsbGF0aW9uOyB9CiAKKyAgICBib29sIGhhc0F1ZGlvVW5pdCgpIGNvbnN0IHsgcmV0dXJu
IG1faW9Vbml0OyB9CisKIHByaXZhdGU6CiAgICAgT1NTdGF0dXMgY29uZmlndXJlU3BlYWtlclBy
b2MoKTsKICAgICBPU1N0YXR1cyBjb25maWd1cmVNaWNyb3Bob25lUHJvYygpOwpAQCAtMTEzLDcg
KzExNiw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIE9TU3RhdHVzIHNwZWFrZXJDYWxsYmFjayh2
b2lkKiwgQXVkaW9Vbml0UmVuZGVyQWN0aW9uRmxhZ3MqLCBjb25zdCBBdWRpb1RpbWVTdGFtcCos
IFVJbnQzMiwgVUludDMyLCBBdWRpb0J1ZmZlckxpc3QqKTsKICAgICBPU1N0YXR1cyBwcm92aWRl
U3BlYWtlckRhdGEoQXVkaW9Vbml0UmVuZGVyQWN0aW9uRmxhZ3MmLCBjb25zdCBBdWRpb1RpbWVT
dGFtcCYsIFVJbnQzMiwgVUludDMyLCBBdWRpb0J1ZmZlckxpc3QqKTsKIAotICAgIFZlY3RvcjxD
b3JlQXVkaW9DYXB0dXJlU291cmNlKj4gbV9jbGllbnRzOworICAgIFZlY3RvcjxzdGQ6OnJlZmVy
ZW5jZV93cmFwcGVyPENvcmVBdWRpb0NhcHR1cmVTb3VyY2U+PiBtX2NsaWVudHM7CiAKICAgICBB
dWRpb1VuaXQgbV9pb1VuaXQgeyBudWxscHRyIH07CiAKQEAgLTE0NCw3ICsxNDcsNiBAQCBwcml2
YXRlOgogICAgIGludDMyX3QgbV9wcm9kdWNpbmdDb3VudCB7IDAgfTsKIAogICAgIG11dGFibGUg
c3RkOjp1bmlxdWVfcHRyPFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM+IG1fY2FwYWJp
bGl0aWVzOwotICAgIG11dGFibGUgUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFp
bnRzIG1fc3VwcG9ydGVkQ29uc3RyYWludHM7CiAgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPFJl
YWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncz4gbV9jdXJyZW50U2V0dGluZ3M7CiAKICNpZiAhTE9H
X0RJU0FCTEVECkBAIC0xNzMsMTIgKzE3NSwxNCBAQCBDb3JlQXVkaW9TaGFyZWRVbml0OjpDb3Jl
QXVkaW9TaGFyZWRVbml0KCkKIAogdm9pZCBDb3JlQXVkaW9TaGFyZWRVbml0OjphZGRDbGllbnQo
Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZSYgY2xpZW50KQogewotICAgIG1fY2xpZW50cy5hcHBlbmQo
JmNsaWVudCk7CisgICAgbV9jbGllbnRzLmFwcGVuZChjbGllbnQpOwogfQogCiB2b2lkIENvcmVB
dWRpb1NoYXJlZFVuaXQ6OnJlbW92ZUNsaWVudChDb3JlQXVkaW9DYXB0dXJlU291cmNlJiBjbGll
bnQpCiB7Ci0gICAgbV9jbGllbnRzLnJlbW92ZUFsbCgmY2xpZW50KTsKKyAgICBtX2NsaWVudHMu
cmVtb3ZlQWxsTWF0Y2hpbmcoWyZdKGNvbnN0IGF1dG8mIGl0ZW0pIHsKKyAgICAgICAgcmV0dXJu
ICZjbGllbnQgPT0gJml0ZW0uZ2V0KCk7CisgICAgfSk7CiB9CiAKIHZvaWQgQ29yZUF1ZGlvU2hh
cmVkVW5pdDo6YWRkRWNob0NhbmNlbGxhdGlvblNvdXJjZShBdWRpb1NhbXBsZURhdGFTb3VyY2Um
IHNvdXJjZSkKQEAgLTIwMyw3ICsyMDcsNyBAQCBzaXplX3QgQ29yZUF1ZGlvU2hhcmVkVW5pdDo6
cHJlZmVycmVkSU9CdWZmZXJTaXplKCkKICAgICByZXR1cm4gQXVkaW9TZXNzaW9uOjpzaGFyZWRT
ZXNzaW9uKCkuYnVmZmVyU2l6ZSgpOwogfQogCi1PU1N0YXR1cyBDb3JlQXVkaW9TaGFyZWRVbml0
OjpzZXR1cEF1ZGlvVW5pdHMoKQorT1NTdGF0dXMgQ29yZUF1ZGlvU2hhcmVkVW5pdDo6c2V0dXBB
dWRpb1VuaXQoKQogewogICAgIGlmIChtX2lvVW5pdCkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0y
MTgsNyArMjIyLDcgQEAgT1NTdGF0dXMgQ29yZUF1ZGlvU2hhcmVkVW5pdDo6c2V0dXBBdWRpb1Vu
aXRzKCkKICAgICBBdWRpb0NvbXBvbmVudCBpb0NvbXBvbmVudCA9IEF1ZGlvQ29tcG9uZW50Rmlu
ZE5leHQobnVsbHB0ciwgJmlvVW5pdERlc2NyaXB0aW9uKTsKICAgICBBU1NFUlQoaW9Db21wb25l
bnQpOwogICAgIGlmICghaW9Db21wb25lbnQpIHsKLSAgICAgICAgTE9HKE1lZGlhLCAiQ29yZUF1
ZGlvQ2FwdHVyZVNvdXJjZTo6c2V0dXBBdWRpb1VuaXRzKCVwKSB1bmFibGUgdG8gZmluZCB2cGlv
IHVuaXQgY29tcG9uZW50IiwgdGhpcyk7CisgICAgICAgIExPRyhNZWRpYSwgIkNvcmVBdWRpb0Nh
cHR1cmVTb3VyY2U6OnNldHVwQXVkaW9Vbml0KCVwKSB1bmFibGUgdG8gZmluZCB2cGlvIHVuaXQg
Y29tcG9uZW50IiwgdGhpcyk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKQEAgLTIyOCwx
MyArMjMyLDEzIEBAIE9TU3RhdHVzIENvcmVBdWRpb1NoYXJlZFVuaXQ6OnNldHVwQXVkaW9Vbml0
cygpCiAgICAgaWYgKG5hbWUpIHsKICAgICAgICAgbV9pb1VuaXROYW1lID0gbmFtZTsKICAgICAg
ICAgQ0ZSZWxlYXNlKG5hbWUpOwotICAgICAgICBMT0coTWVkaWEsICJDb3JlQXVkaW9DYXB0dXJl
U291cmNlOjpzZXR1cEF1ZGlvVW5pdHMoJXApIGNyZWF0ZWQgXCIlc1wiIGNvbXBvbmVudCIsIHRo
aXMsIG1faW9Vbml0TmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgTE9HKE1lZGlhLCAiQ29y
ZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6c2V0dXBBdWRpb1VuaXQoJXApIGNyZWF0ZWQgXCIlc1wiIGNv
bXBvbmVudCIsIHRoaXMsIG1faW9Vbml0TmFtZS51dGY4KCkuZGF0YSgpKTsKICAgICB9CiAjZW5k
aWYKIAogICAgIGF1dG8gZXJyID0gQXVkaW9Db21wb25lbnRJbnN0YW5jZU5ldyhpb0NvbXBvbmVu
dCwgJm1faW9Vbml0KTsKICAgICBpZiAoZXJyKSB7Ci0gICAgICAgIExPRyhNZWRpYSwgIkNvcmVB
dWRpb0NhcHR1cmVTb3VyY2U6OnNldHVwQXVkaW9Vbml0cyglcCkgdW5hYmxlIHRvIG9wZW4gdnBp
byB1bml0LCBlcnJvciAlZCAoJS40cykiLCB0aGlzLCAoaW50KWVyciwgKGNoYXIqKSZlcnIpOwor
ICAgICAgICBMT0coTWVkaWEsICJDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpzZXR1cEF1ZGlvVW5p
dCglcCkgdW5hYmxlIHRvIG9wZW4gdnBpbyB1bml0LCBlcnJvciAlZCAoJS40cykiLCB0aGlzLCAo
aW50KWVyciwgKGNoYXIqKSZlcnIpOwogICAgICAgICByZXR1cm4gZXJyOwogICAgIH0KIApAQCAt
MjQyLDEzICsyNDYsMTMgQEAgT1NTdGF0dXMgQ29yZUF1ZGlvU2hhcmVkVW5pdDo6c2V0dXBBdWRp
b1VuaXRzKCkKICAgICAgICAgdWludDMyX3QgcGFyYW0gPSAwOwogICAgICAgICBlcnIgPSBBdWRp
b1VuaXRTZXRQcm9wZXJ0eShtX2lvVW5pdCwga0FVVm9pY2VJT1Byb3BlcnR5X1ZvaWNlUHJvY2Vz
c2luZ0VuYWJsZUFHQywga0F1ZGlvVW5pdFNjb3BlX0dsb2JhbCwgaW5wdXRCdXMsICZwYXJhbSwg
c2l6ZW9mKHBhcmFtKSk7CiAgICAgICAgIGlmIChlcnIpIHsKLSAgICAgICAgICAgIExPRyhNZWRp
YSwgIkNvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OnNldHVwQXVkaW9Vbml0cyglcCkgdW5hYmxlIHRv
IHNldCB2cGlvIGF1dG9tYXRpYyBnYWluIGNvbnRyb2wsIGVycm9yICVkICglLjRzKSIsIHRoaXMs
IChpbnQpZXJyLCAoY2hhciopJmVycik7CisgICAgICAgICAgICBMT0coTWVkaWEsICJDb3JlQXVk
aW9DYXB0dXJlU291cmNlOjpzZXR1cEF1ZGlvVW5pdCglcCkgdW5hYmxlIHRvIHNldCB2cGlvIGF1
dG9tYXRpYyBnYWluIGNvbnRyb2wsIGVycm9yICVkICglLjRzKSIsIHRoaXMsIChpbnQpZXJyLCAo
Y2hhciopJmVycik7CiAgICAgICAgICAgICByZXR1cm4gZXJyOwogICAgICAgICB9CiAgICAgICAg
IHBhcmFtID0gMTsKICAgICAgICAgZXJyID0gQXVkaW9Vbml0U2V0UHJvcGVydHkobV9pb1VuaXQs
IGtBVVZvaWNlSU9Qcm9wZXJ0eV9CeXBhc3NWb2ljZVByb2Nlc3NpbmcsIGtBdWRpb1VuaXRTY29w
ZV9HbG9iYWwsIGlucHV0QnVzLCAmcGFyYW0sIHNpemVvZihwYXJhbSkpOwogICAgICAgICBpZiAo
ZXJyKSB7Ci0gICAgICAgICAgICBMT0coTWVkaWEsICJDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpz
ZXR1cEF1ZGlvVW5pdHMoJXApIHVuYWJsZSB0byBzZXQgdnBpbyB1bml0IGVjaG8gY2FuY2VsbGF0
aW9uLCBlcnJvciAlZCAoJS40cykiLCB0aGlzLCAoaW50KWVyciwgKGNoYXIqKSZlcnIpOworICAg
ICAgICAgICAgTE9HKE1lZGlhLCAiQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6c2V0dXBBdWRpb1Vu
aXQoJXApIHVuYWJsZSB0byBzZXQgdnBpbyB1bml0IGVjaG8gY2FuY2VsbGF0aW9uLCBlcnJvciAl
ZCAoJS40cykiLCB0aGlzLCAoaW50KWVyciwgKGNoYXIqKSZlcnIpOwogICAgICAgICAgICAgcmV0
dXJuIGVycjsKICAgICAgICAgfQogICAgIH0KQEAgLTI1Nyw3ICsyNjEsNyBAQCBPU1N0YXR1cyBD
b3JlQXVkaW9TaGFyZWRVbml0OjpzZXR1cEF1ZGlvVW5pdHMoKQogICAgIHVpbnQzMl90IHBhcmFt
ID0gMTsKICAgICBlcnIgPSBBdWRpb1VuaXRTZXRQcm9wZXJ0eShtX2lvVW5pdCwga0F1ZGlvT3V0
cHV0VW5pdFByb3BlcnR5X0VuYWJsZUlPLCBrQXVkaW9Vbml0U2NvcGVfSW5wdXQsIGlucHV0QnVz
LCAmcGFyYW0sIHNpemVvZihwYXJhbSkpOwogICAgIGlmIChlcnIpIHsKLSAgICAgICAgTE9HKE1l
ZGlhLCAiQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6c2V0dXBBdWRpb1VuaXRzKCVwKSB1bmFibGUg
dG8gZW5hYmxlIHZwaW8gdW5pdCBpbnB1dCwgZXJyb3IgJWQgKCUuNHMpIiwgdGhpcywgKGludCll
cnIsIChjaGFyKikmZXJyKTsKKyAgICAgICAgTE9HKE1lZGlhLCAiQ29yZUF1ZGlvQ2FwdHVyZVNv
dXJjZTo6c2V0dXBBdWRpb1VuaXQoJXApIHVuYWJsZSB0byBlbmFibGUgdnBpbyB1bml0IGlucHV0
LCBlcnJvciAlZCAoJS40cykiLCB0aGlzLCAoaW50KWVyciwgKGNoYXIqKSZlcnIpOwogICAgICAg
ICByZXR1cm4gZXJyOwogICAgIH0KICNlbHNlCkBAIC0yNjksNyArMjczLDcgQEAgT1NTdGF0dXMg
Q29yZUF1ZGlvU2hhcmVkVW5pdDo6c2V0dXBBdWRpb1VuaXRzKCkKIAogICAgIGVyciA9IEF1ZGlv
VW5pdFNldFByb3BlcnR5KG1faW9Vbml0LCBrQXVkaW9PdXRwdXRVbml0UHJvcGVydHlfQ3VycmVu
dERldmljZSwga0F1ZGlvVW5pdFNjb3BlX0dsb2JhbCwgaW5wdXRCdXMsICZtX2NhcHR1cmVEZXZp
Y2VJRCwgc2l6ZW9mKG1fY2FwdHVyZURldmljZUlEKSk7CiAgICAgaWYgKGVycikgewotICAgICAg
ICBMT0coTWVkaWEsICJDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpzZXR1cEF1ZGlvVW5pdHMoJXAp
IHVuYWJsZSB0byBzZXQgdnBpbyB1bml0IGNhcHR1cmUgZGV2aWNlIElELCBlcnJvciAlZCAoJS40
cykiLCB0aGlzLCAoaW50KWVyciwgKGNoYXIqKSZlcnIpOworICAgICAgICBMT0coTWVkaWEsICJD
b3JlQXVkaW9DYXB0dXJlU291cmNlOjpzZXR1cEF1ZGlvVW5pdCglcCkgdW5hYmxlIHRvIHNldCB2
cGlvIHVuaXQgY2FwdHVyZSBkZXZpY2UgSUQsIGVycm9yICVkICglLjRzKSIsIHRoaXMsIChpbnQp
ZXJyLCAoY2hhciopJmVycik7CiAgICAgICAgIHJldHVybiBlcnI7CiAgICAgfQogI2VuZGlmCkBA
IC0yNzgsMTcgKzI4MiwxNyBAQCBPU1N0YXR1cyBDb3JlQXVkaW9TaGFyZWRVbml0OjpzZXR1cEF1
ZGlvVW5pdHMoKQogICAgIGlmIChlcnIpCiAgICAgICAgIHJldHVybiBlcnI7CiAKKyAgICBlcnIg
PSBjb25maWd1cmVTcGVha2VyUHJvYygpOworICAgIGlmIChlcnIpCisgICAgICAgIHJldHVybiBl
cnI7CisKICAgICBlcnIgPSBBdWRpb1VuaXRJbml0aWFsaXplKG1faW9Vbml0KTsKICAgICBpZiAo
ZXJyKSB7Ci0gICAgICAgIExPRyhNZWRpYSwgIkNvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OnNldHVw
QXVkaW9Vbml0cyglcCkgQXVkaW9Vbml0SW5pdGlhbGl6ZSgpIGZhaWxlZCwgZXJyb3IgJWQgKCUu
NHMpIiwgdGhpcywgKGludCllcnIsIChjaGFyKikmZXJyKTsKKyAgICAgICAgTE9HKE1lZGlhLCAi
Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6c2V0dXBBdWRpb1VuaXQoJXApIEF1ZGlvVW5pdEluaXRp
YWxpemUoKSBmYWlsZWQsIGVycm9yICVkICglLjRzKSIsIHRoaXMsIChpbnQpZXJyLCAoY2hhciop
JmVycik7CiAgICAgICAgIHJldHVybiBlcnI7CiAgICAgfQogICAgIG1faW9Vbml0SW5pdGlhbGl6
ZWQgPSB0cnVlOwogCi0gICAgZXJyID0gY29uZmlndXJlU3BlYWtlclByb2MoKTsKLSAgICBpZiAo
ZXJyKQotICAgICAgICByZXR1cm4gZXJyOwotCiAgICAgcmV0dXJuIGVycjsKIH0KIApAQCAtNDUw
LDExICs0NTQsMTAgQEAgT1NTdGF0dXMgQ29yZUF1ZGlvU2hhcmVkVW5pdDo6cHJvY2Vzc01pY3Jv
cGhvbmVTYW1wbGVzKEF1ZGlvVW5pdFJlbmRlckFjdGlvbkZsYWcKICAgICBpZiAobV92b2x1bWUg
IT0gMS4wKQogICAgICAgICBtX21pY3JvcGhvbmVTYW1wbGVCdWZmZXItPmFwcGx5R2FpbihtX3Zv
bHVtZSk7CiAKLSAgICBmb3IgKGF1dG8qIGNsaWVudCA6IG1fY2xpZW50cykgewotICAgICAgICBp
ZiAoY2xpZW50LT5pc1Byb2R1Y2luZ0RhdGEoKSkKLSAgICAgICAgICAgIGNsaWVudC0+YXVkaW9T
YW1wbGVzQXZhaWxhYmxlKE1lZGlhVGltZShzYW1wbGVUaW1lLCBtX21pY3JvcGhvbmVQcm9jRm9y
bWF0LnNhbXBsZVJhdGUoKSksIG1fbWljcm9waG9uZVNhbXBsZUJ1ZmZlci0+YnVmZmVyTGlzdCgp
LCBtX21pY3JvcGhvbmVQcm9jRm9ybWF0LCBpbk51bWJlckZyYW1lcyk7CisgICAgZm9yIChDb3Jl
QXVkaW9DYXB0dXJlU291cmNlJiBjbGllbnQgOiBtX2NsaWVudHMpIHsKKyAgICAgICAgaWYgKGNs
aWVudC5pc1Byb2R1Y2luZ0RhdGEoKSkKKyAgICAgICAgICAgIGNsaWVudC5hdWRpb1NhbXBsZXNB
dmFpbGFibGUoTWVkaWFUaW1lKHNhbXBsZVRpbWUsIG1fbWljcm9waG9uZVByb2NGb3JtYXQuc2Ft
cGxlUmF0ZSgpKSwgbV9taWNyb3Bob25lU2FtcGxlQnVmZmVyLT5idWZmZXJMaXN0KCksIG1fbWlj
cm9waG9uZVByb2NGb3JtYXQsIGluTnVtYmVyRnJhbWVzKTsKICAgICB9Ci0KICAgICByZXR1cm4g
bm9FcnI7CiB9CiAKQEAgLTQ2NiwxNCArNDY5LDEzIEBAIE9TU3RhdHVzIENvcmVBdWRpb1NoYXJl
ZFVuaXQ6Om1pY3JvcGhvbmVDYWxsYmFjayh2b2lkICppblJlZkNvbiwgQXVkaW9Vbml0UmVuZGVy
CiAgICAgcmV0dXJuIGRhdGFTb3VyY2UtPnByb2Nlc3NNaWNyb3Bob25lU2FtcGxlcygqaW9BY3Rp
b25GbGFncywgKmluVGltZVN0YW1wLCBpbkJ1c051bWJlciwgaW5OdW1iZXJGcmFtZXMsIGlvRGF0
YSk7CiB9CiAKLXZvaWQgQ29yZUF1ZGlvU2hhcmVkVW5pdDo6Y2xlYW51cEF1ZGlvVW5pdHMoKQor
dm9pZCBDb3JlQXVkaW9TaGFyZWRVbml0OjpjbGVhbnVwQXVkaW9Vbml0KCkKIHsKLSAgICBBU1NF
UlQobV9jbGllbnRzLmlzRW1wdHkoKSk7CiAgICAgaWYgKG1faW9Vbml0SW5pdGlhbGl6ZWQpIHsK
ICAgICAgICAgQVNTRVJUKG1faW9Vbml0KTsKICAgICAgICAgYXV0byBlcnIgPSBBdWRpb1VuaXRV
bmluaXRpYWxpemUobV9pb1VuaXQpOwogICAgICAgICBpZiAoZXJyKQotICAgICAgICAgICAgTE9H
KE1lZGlhLCAiQ29yZUF1ZGlvU2hhcmVkVW5pdDo6Y2xlYW51cEF1ZGlvVW5pdHMoJXApIEF1ZGlv
VW5pdFVuaW5pdGlhbGl6ZSBmYWlsZWQgd2l0aCBlcnJvciAlZCAoJS40cykiLCB0aGlzLCAoaW50
KWVyciwgKGNoYXIqKSZlcnIpOworICAgICAgICAgICAgTE9HKE1lZGlhLCAiQ29yZUF1ZGlvU2hh
cmVkVW5pdDo6Y2xlYW51cEF1ZGlvVW5pdCglcCkgQXVkaW9Vbml0VW5pbml0aWFsaXplIGZhaWxl
ZCB3aXRoIGVycm9yICVkICglLjRzKSIsIHRoaXMsIChpbnQpZXJyLCAoY2hhciopJmVycik7CiAg
ICAgICAgIG1faW9Vbml0SW5pdGlhbGl6ZWQgPSBmYWxzZTsKICAgICB9CiAKQEAgLTQ4OSw2ICs0
OTEsMzUgQEAgdm9pZCBDb3JlQXVkaW9TaGFyZWRVbml0OjpjbGVhbnVwQXVkaW9Vbml0cygpCiAj
ZW5kaWYKIH0KIAorT1NTdGF0dXMgQ29yZUF1ZGlvU2hhcmVkVW5pdDo6cmVjb25maWd1cmVBdWRp
b1VuaXQoKQoreworICAgIE9TU3RhdHVzIGVycjsKKyAgICBpZiAoIWhhc0F1ZGlvVW5pdCgpKQor
ICAgICAgICByZXR1cm4gMDsKKworICAgIGlmIChtX2lvVW5pdFN0YXJ0ZWQpIHsKKyAgICAgICAg
ZXJyID0gQXVkaW9PdXRwdXRVbml0U3RvcChtX2lvVW5pdCk7CisgICAgICAgIGlmIChlcnIpIHsK
KyAgICAgICAgICAgIExPRyhNZWRpYSwgIkNvcmVBdWRpb1NoYXJlZFVuaXQ6OnJlY29uZmlndXJl
QXVkaW9Vbml0KCVwKSBBdWRpb091dHB1dFVuaXRTdG9wIGZhaWxlZCB3aXRoIGVycm9yICVkICgl
LjRzKSIsIHRoaXMsIChpbnQpZXJyLCAoY2hhciopJmVycik7CisgICAgICAgICAgICByZXR1cm4g
ZXJyOworICAgICAgICB9CisgICAgfQorCisgICAgY2xlYW51cEF1ZGlvVW5pdCgpOworICAgIGVy
ciA9IHNldHVwQXVkaW9Vbml0KCk7CisgICAgaWYgKGVycikKKyAgICAgICAgcmV0dXJuIGVycjsK
KworICAgIGlmIChtX2lvVW5pdFN0YXJ0ZWQpIHsKKyAgICAgICAgZXJyID0gQXVkaW9PdXRwdXRV
bml0U3RhcnQobV9pb1VuaXQpOworICAgICAgICBpZiAoZXJyKSB7CisgICAgICAgICAgICBMT0co
TWVkaWEsICJDb3JlQXVkaW9TaGFyZWRVbml0OjpyZWNvbmZpZ3VyZUF1ZGlvVW5pdCglcCkgQXVk
aW9PdXRwdXRVbml0U3RhcnQgZmFpbGVkIHdpdGggZXJyb3IgJWQgKCUuNHMpIiwgdGhpcywgKGlu
dCllcnIsIChjaGFyKikmZXJyKTsKKyAgICAgICAgICAgIHJldHVybiBlcnI7CisgICAgICAgIH0K
KyAgICB9CisgICAgcmV0dXJuIGVycjsKK30KKwogdm9pZCBDb3JlQXVkaW9TaGFyZWRVbml0Ojpz
dGFydFByb2R1Y2luZ0RhdGEoKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CkBAIC01
MDEsOSArNTMyLDkgQEAgdm9pZCBDb3JlQXVkaW9TaGFyZWRVbml0OjpzdGFydFByb2R1Y2luZ0Rh
dGEoKQogCiAgICAgT1NTdGF0dXMgZXJyOwogICAgIGlmICghbV9pb1VuaXQpIHsKLSAgICAgICAg
ZXJyID0gc2V0dXBBdWRpb1VuaXRzKCk7CisgICAgICAgIGVyciA9IHNldHVwQXVkaW9Vbml0KCk7
CiAgICAgICAgIGlmIChlcnIpIHsKLSAgICAgICAgICAgIGNsZWFudXBBdWRpb1VuaXRzKCk7Cisg
ICAgICAgICAgICBjbGVhbnVwQXVkaW9Vbml0KCk7CiAgICAgICAgICAgICBBU1NFUlQoIW1faW9V
bml0KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtNjgzLDIwICs3MTQsMTUg
QEAgdm9pZCBDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpzdG9wUHJvZHVjaW5nRGF0YSgpCiAKIGNv
bnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmIENvcmVBdWRpb0NhcHR1cmVTb3Vy
Y2U6OmNhcGFiaWxpdGllcygpIGNvbnN0CiB7Ci0gICAgaWYgKG1fY2FwYWJpbGl0aWVzKQotICAg
ICAgICByZXR1cm4gKm1fY2FwYWJpbGl0aWVzOwotCi0gICAgbV9zdXBwb3J0ZWRDb25zdHJhaW50
cy5zZXRTdXBwb3J0c0RldmljZUlkKHRydWUpOwotICAgIG1fc3VwcG9ydGVkQ29uc3RyYWludHMu
c2V0U3VwcG9ydHNFY2hvQ2FuY2VsbGF0aW9uKHRydWUpOwotICAgIG1fc3VwcG9ydGVkQ29uc3Ry
YWludHMuc2V0U3VwcG9ydHNWb2x1bWUodHJ1ZSk7Ci0KLSAgICAvLyBGSVhNRTogZmluaXNoIHRo
aXMuCi0gICAgbV9jYXBhYmlsaXRpZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlYWx0aW1lTWVkaWFT
b3VyY2VDYXBhYmlsaXRpZXM+KG1fc3VwcG9ydGVkQ29uc3RyYWludHMpOwotICAgIG1fY2FwYWJp
bGl0aWVzLT5zZXREZXZpY2VJZChpZCgpKTsKLSAgICBtX2NhcGFiaWxpdGllcy0+c2V0RWNob0Nh
bmNlbGxhdGlvbihSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzOjpFY2hvQ2FuY2VsbGF0
aW9uOjpSZWFkV3JpdGUpOwotICAgIG1fY2FwYWJpbGl0aWVzLT5zZXRWb2x1bWUoQ2FwYWJpbGl0
eVZhbHVlT3JSYW5nZSgwLjAsIDEuMCkpOwotCi0gICAgcmV0dXJuICptX2NhcGFiaWxpdGllczsK
KyAgICBpZiAoIW1fY2FwYWJpbGl0aWVzKSB7CisgICAgICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VD
YXBhYmlsaXRpZXMgY2FwYWJpbGl0aWVzKHNldHRpbmdzKCkuc3VwcG9ydGVkQ29uc3RyYWludHMo
KSk7CisgICAgICAgIGNhcGFiaWxpdGllcy5zZXREZXZpY2VJZChpZCgpKTsKKyAgICAgICAgY2Fw
YWJpbGl0aWVzLnNldEVjaG9DYW5jZWxsYXRpb24oUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxp
dGllczo6RWNob0NhbmNlbGxhdGlvbjo6UmVhZFdyaXRlKTsKKyAgICAgICAgY2FwYWJpbGl0aWVz
LnNldFZvbHVtZShDYXBhYmlsaXR5VmFsdWVPclJhbmdlKDAuMCwgMS4wKSk7CisgICAgICAgIGNh
cGFiaWxpdGllcy5zZXRTYW1wbGVSYXRlKENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UoODAwMCwgOTYw
MDApKTsKKyAgICAgICAgbV9jYXBhYmlsaXRpZXMgPSBXVEZNb3ZlKGNhcGFiaWxpdGllcyk7Cisg
ICAgfQorICAgIHJldHVybiBtX2NhcGFiaWxpdGllcy52YWx1ZSgpOwogfQogCiBjb25zdCBSZWFs
dGltZU1lZGlhU291cmNlU2V0dGluZ3MmIENvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OnNldHRpbmdz
KCkgY29uc3QKQEAgLTcwOCw4ICs3MzQsMTQgQEAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNl
dHRpbmdzJiBDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpzZXR0aW5ncygpIGNvbnN0CiAgICAgICAg
IHNldHRpbmdzLnNldERldmljZUlkKGlkKCkpOwogICAgICAgICBzZXR0aW5ncy5zZXRFY2hvQ2Fu
Y2VsbGF0aW9uKGVjaG9DYW5jZWxsYXRpb24oKSk7CiAKLSAgICAgICAgbV9jdXJyZW50U2V0dGlu
Z3MgPSBXVEZNb3ZlKHNldHRpbmdzKTsKKyAgICAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBv
cnRlZENvbnN0cmFpbnRzIHN1cHBvcnRlZENvbnN0cmFpbnRzOworICAgICAgICBzdXBwb3J0ZWRD
b25zdHJhaW50cy5zZXRTdXBwb3J0c0RldmljZUlkKHRydWUpOworICAgICAgICBzdXBwb3J0ZWRD
b25zdHJhaW50cy5zZXRTdXBwb3J0c0VjaG9DYW5jZWxsYXRpb24odHJ1ZSk7CisgICAgICAgIHN1
cHBvcnRlZENvbnN0cmFpbnRzLnNldFN1cHBvcnRzVm9sdW1lKHRydWUpOworICAgICAgICBzdXBw
b3J0ZWRDb25zdHJhaW50cy5zZXRTdXBwb3J0c1NhbXBsZVJhdGUodHJ1ZSk7CisgICAgICAgIHNl
dHRpbmdzLnNldFN1cHBvcnRlZENvbnN0cmFpbnRzKHN1cHBvcnRlZENvbnN0cmFpbnRzKTsKIAor
ICAgICAgICBtX2N1cnJlbnRTZXR0aW5ncyA9IFdURk1vdmUoc2V0dGluZ3MpOwogICAgIH0KICAg
ICByZXR1cm4gbV9jdXJyZW50U2V0dGluZ3MudmFsdWUoKTsKIH0KQEAgLTc0OCw3ICs3ODAsNyBA
QCBib29sIENvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OmFwcGx5U2FtcGxlUmF0ZShpbnQgc2FtcGxl
UmF0ZSkKIAogICAgIENvcmVBdWRpb1NoYXJlZFVuaXQ6OnNpbmdsZXRvbigpLnNldFNhbXBsZVJh
dGUoc2FtcGxlUmF0ZSk7CiAKLSAgICAvLyBGSVhNRTogZG8gcmVjb25maWd1cmF0aW9uIGlmIGF1
ZGlvIHVuaXQgaXMgc3RhcnRlZC4KKyAgICBzY2hlZHVsZVJlY29uZmlndXJhdGlvbigpOwogICAg
IHJldHVybiB0cnVlOwogfQogCkBAIC03NTYsMTAgKzc4OCwyNCBAQCBib29sIENvcmVBdWRpb0Nh
cHR1cmVTb3VyY2U6OmFwcGx5RWNob0NhbmNlbGxhdGlvbihib29sIGVuYWJsZUVjaG9DYW5jZWxs
YXRpb24pCiB7CiAgICAgQ29yZUF1ZGlvU2hhcmVkVW5pdDo6c2luZ2xldG9uKCkuc2V0RW5hYmxl
RWNob0NhbmNlbGxhdGlvbihlbmFibGVFY2hvQ2FuY2VsbGF0aW9uKTsKIAotICAgIC8vIEZJWE1F
OiBkbyByZWNvbmZpZ3VyYXRpb24gaWYgYXVkaW8gdW5pdCBpcyBzdGFydGVkLgorICAgIHNjaGVk
dWxlUmVjb25maWd1cmF0aW9uKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQgQ29yZUF1
ZGlvQ2FwdHVyZVNvdXJjZTo6c2NoZWR1bGVSZWNvbmZpZ3VyYXRpb24oKQoreworICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CisgICAgYXV0byYgdW5pdCA9IENvcmVBdWRpb1NoYXJlZFVuaXQ6
OnNpbmdsZXRvbigpOworICAgIGlmICghdW5pdC5oYXNBdWRpb1VuaXQoKSB8fCBtX3JlY29uZmln
dXJhdGlvbk9uZ29pbmcpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcmVjb25maWd1cmF0aW9u
T25nb2luZyA9IHRydWU7CisgICAgc2NoZWR1bGVEZWZlcnJlZFRhc2soW3RoaXMsICZ1bml0XSB7
CisgICAgICAgIHVuaXQucmVjb25maWd1cmVBdWRpb1VuaXQoKTsKKyAgICAgICAgbV9yZWNvbmZp
Z3VyYXRpb25PbmdvaW5nID0gZmFsc2U7CisgICAgfSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJj
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0Nh
cHR1cmVTb3VyY2UuaAppbmRleCBlMzdmNzkxNTJiYjBlNGYxMWUyNzMwY2FjMTA3MGY3MmNjZDY4
YzUxLi44MWRmZDc2YzFhYWVjYTIzZWRmMmQ4OTlmNTljMmNkNzdhN2E1NTYzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVy
ZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9D
b3JlQXVkaW9DYXB0dXJlU291cmNlLmgKQEAgLTc1LDYgKzc1LDggQEAgcHJpdmF0ZToKICAgICBm
cmllbmQgY2xhc3MgQ29yZUF1ZGlvU2hhcmVkVW5pdDsKICAgICBmcmllbmQgY2xhc3MgQ29yZUF1
ZGlvQ2FwdHVyZVNvdXJjZUZhY3Rvcnk7CiAKKyAgICB2b2lkIHNjaGVkdWxlUmVjb25maWd1cmF0
aW9uKCk7CisKICAgICBib29sIGlzQ2FwdHVyZVNvdXJjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IHRydWU7IH0KICAgICB2b2lkIHN0YXJ0UHJvZHVjaW5nRGF0YSgpIGZpbmFsOwogICAgIHZvaWQg
c3RvcFByb2R1Y2luZ0RhdGEoKSBmaW5hbDsKQEAgLTk0LDExICs5NiwxMSBAQCBwcml2YXRlOgog
ICAgIGJvb2wgbV9pc1Byb2R1Y2luZ0RhdGEgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc1N1c3Bl
bmRlZCB7IGZhbHNlIH07CiAKLSAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxSZWFsdGltZU1l
ZGlhU291cmNlQ2FwYWJpbGl0aWVzPiBtX2NhcGFiaWxpdGllczsKLSAgICBtdXRhYmxlIFJlYWx0
aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyBtX3N1cHBvcnRlZENvbnN0cmFpbnRz
OworICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0
aWVzPiBtX2NhcGFiaWxpdGllczsKICAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8UmVhbHRpbWVN
ZWRpYVNvdXJjZVNldHRpbmdzPiBtX2N1cnJlbnRTZXR0aW5nczsKIAogICAgIFJlZlB0cjxXZWJB
dWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQz4gbV9hdWRpb1NvdXJjZVByb3ZpZGVyOworICAgIGJv
b2wgbV9yZWNvbmZpZ3VyYXRpb25PbmdvaW5nIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9V
c2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmNwcAppbmRleCA2NzQzMTlhY2Zm
NWQxYjAzM2MwNzQzZGE3MGRiZTg5ZGY3ZjdmZGNiLi42Y2RiYTFmNzU5M2IwZTRlMmE1NzkxNTgz
MDA1NWY3NzAxZDkzYTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29j
b2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwCkBAIC0xMjUs
NyArMTI1LDcgQEAgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTo6flVzZXJNZWRpYUNhcHR1
cmVNYW5hZ2VyUHJveHkoKQogICAgIG1fcHJvY2Vzcy5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVz
c2FnZXM6OlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSk7CiB9CiAKLXZvaWQgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTo6Y3JlYXRlTWVkaWFT
b3VyY2VGb3JDYXB0dXJlRGV2aWNlV2l0aENvbnN0cmFpbnRzKHVpbnQ2NF90IGlkLCBjb25zdCBT
dHJpbmcmIGRldmljZUlELCBXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlIHR5cGUs
IGNvbnN0IE1lZGlhQ29uc3RyYWludHNEYXRhJiBjb25zdHJhaW50c0RhdGEsIGJvb2wmIHN1Y2Nl
ZWRlZCwgU3RyaW5nJiBpbnZhbGlkQ29uc3RyYWludHMpCit2b2lkIFVzZXJNZWRpYUNhcHR1cmVN
YW5hZ2VyUHJveHk6OmNyZWF0ZU1lZGlhU291cmNlRm9yQ2FwdHVyZURldmljZVdpdGhDb25zdHJh
aW50cyh1aW50NjRfdCBpZCwgY29uc3QgU3RyaW5nJiBkZXZpY2VJRCwgV2ViQ29yZTo6UmVhbHRp
bWVNZWRpYVNvdXJjZTo6VHlwZSB0eXBlLCBjb25zdCBNZWRpYUNvbnN0cmFpbnRzRGF0YSYgY29u
c3RyYWludHNEYXRhLCBib29sJiBzdWNjZWVkZWQsIFN0cmluZyYgaW52YWxpZENvbnN0cmFpbnRz
LCBXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdzKQogewogICAg
IENhcHR1cmVTb3VyY2VPckVycm9yIHNvdXJjZU9yRXJyb3I7CiAgICAgYXV0byBjb25zdHJhaW50
cyA9IE1lZGlhQ29uc3RyYWludHNJbXBsOjpjcmVhdGUoTWVkaWFDb25zdHJhaW50c0RhdGEoY29u
c3RyYWludHNEYXRhKSk7CkBAIC0xNDIsOSArMTQyLDExIEBAIHZvaWQgVXNlck1lZGlhQ2FwdHVy
ZU1hbmFnZXJQcm94eTo6Y3JlYXRlTWVkaWFTb3VyY2VGb3JDYXB0dXJlRGV2aWNlV2l0aENvbnN0
cmFpCiAgICAgfQogCiAgICAgc3VjY2VlZGVkID0gISFzb3VyY2VPckVycm9yOwotICAgIGlmIChz
b3VyY2VPckVycm9yKQotICAgICAgICBtX3Byb3hpZXMuc2V0KGlkLCBzdGQ6Om1ha2VfdW5pcXVl
PFNvdXJjZVByb3h5PihpZCwgKnRoaXMsIHNvdXJjZU9yRXJyb3Iuc291cmNlKCkpKTsKLSAgICBl
bHNlCisgICAgaWYgKHNvdXJjZU9yRXJyb3IpIHsKKyAgICAgICAgYXV0byBzb3VyY2UgPSBzb3Vy
Y2VPckVycm9yLnNvdXJjZSgpOworICAgICAgICBzZXR0aW5ncyA9IHNvdXJjZS0+c2V0dGluZ3Mo
KTsKKyAgICAgICAgbV9wcm94aWVzLnNldChpZCwgc3RkOjptYWtlX3VuaXF1ZTxTb3VyY2VQcm94
eT4oaWQsICp0aGlzLCBXVEZNb3ZlKHNvdXJjZSkpKTsKKyAgICB9IGVsc2UKICAgICAgICAgaW52
YWxpZENvbnN0cmFpbnRzID0gV1RGTW92ZShzb3VyY2VPckVycm9yLmVycm9yTWVzc2FnZSk7CiB9
CiAKQEAgLTE4Myw2ICsxODUsMjEgQEAgdm9pZCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5
OjpzZXRFbmFibGVkKHVpbnQ2NF90IGlkLCBib29sIGVuYWJsZWQpCiAgICAgICAgIGl0ZXItPnZh
bHVlLT5zb3VyY2UoKS5zZXRFbmFibGVkKGVuYWJsZWQpOwogfQogCit2b2lkIFVzZXJNZWRpYUNh
cHR1cmVNYW5hZ2VyUHJveHk6OmFwcGx5Q29uc3RyYWludHModWludDY0X3QgaWQsIGNvbnN0IFdl
YkNvcmU6Ok1lZGlhQ29uc3RyYWludHNEYXRhJiBjb25zdHJhaW50c0RhdGEpCit7CisgICAgYXV0
byBjb25zdHJhaW50cyA9IE1lZGlhQ29uc3RyYWludHNJbXBsOjpjcmVhdGUoTWVkaWFDb25zdHJh
aW50c0RhdGEoY29uc3RyYWludHNEYXRhKSk7CisgICAgYXV0byBpdGVyID0gbV9wcm94aWVzLmZp
bmQoaWQpOworICAgIGlmIChpdGVyID09IG1fcHJveGllcy5lbmQoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgYXV0byYgc291cmNlID0gaXRlci0+dmFsdWUtPnNvdXJjZSgpOworICAgIGF1dG8g
cmVzdWx0ID0gc291cmNlLmFwcGx5Q29uc3RyYWludHMoY29uc3RyYWludHMpOworICAgIGlmICgh
cmVzdWx0KQorICAgICAgICBtX3Byb2Nlc3Muc2VuZChNZXNzYWdlczo6VXNlck1lZGlhQ2FwdHVy
ZU1hbmFnZXI6OkFwcGx5Q29uc3RyYWludHNTdWNjZWVkZWQoaWQsIHNvdXJjZS5zZXR0aW5ncygp
KSwgMCk7CisgICAgZWxzZQorICAgICAgICBtX3Byb2Nlc3Muc2VuZChNZXNzYWdlczo6VXNlck1l
ZGlhQ2FwdHVyZU1hbmFnZXI6OkFwcGx5Q29uc3RyYWludHNGYWlsZWQoaWQsIHJlc3VsdC52YWx1
ZSgpLmZpcnN0LCByZXN1bHQudmFsdWUoKS5zZWNvbmQpLCAwKTsKK30KKwogfQogCiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0
dXJlTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvVXNlck1l
ZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5oCmluZGV4IDQxMzlkYjI0ZDQ3NTIwOWVjM2U3Y2QzY2Jm
N2JkODM0YTI3OGNiY2UuLjJhNTFkN2MyNWJiNWNiZTcwNjY4NTQ2ZjhlNjQ2MDBkOGU5YjVmYjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0
dXJlTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1Vz
ZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuaApAQCAtNDksMTIgKzQ5LDEzIEBAIHByaXZhdGU6
CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29k
ZXImKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFs
OwogCi0gICAgdm9pZCBjcmVhdGVNZWRpYVNvdXJjZUZvckNhcHR1cmVEZXZpY2VXaXRoQ29uc3Ry
YWludHModWludDY0X3QgaWQsIGNvbnN0IFN0cmluZyYgZGV2aWNlSUQsIFdlYkNvcmU6OlJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGUsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludHNEYXRh
JiwgYm9vbCYgc3VjY2VlZGVkLCBTdHJpbmcmIGludmFsaWRDb25zdHJhaW50cyk7CisgICAgdm9p
ZCBjcmVhdGVNZWRpYVNvdXJjZUZvckNhcHR1cmVEZXZpY2VXaXRoQ29uc3RyYWludHModWludDY0
X3QgaWQsIGNvbnN0IFN0cmluZyYgZGV2aWNlSUQsIFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OlR5cGUsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludHNEYXRhJiwgYm9vbCYgc3Vj
Y2VlZGVkLCBTdHJpbmcmIGludmFsaWRDb25zdHJhaW50cywgV2ViQ29yZTo6UmVhbHRpbWVNZWRp
YVNvdXJjZVNldHRpbmdzJik7CiAgICAgdm9pZCBzdGFydFByb2R1Y2luZ0RhdGEodWludDY0X3Qp
OwogICAgIHZvaWQgc3RvcFByb2R1Y2luZ0RhdGEodWludDY0X3QpOwogICAgIHZvaWQgY2FwYWJp
bGl0aWVzKHVpbnQ2NF90LCBXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVz
Jik7CiAgICAgdm9pZCBzZXRNdXRlZCh1aW50NjRfdCwgYm9vbCk7CiAgICAgdm9pZCBzZXRFbmFi
bGVkKHVpbnQ2NF90LCBib29sKTsKKyAgICB2b2lkIGFwcGx5Q29uc3RyYWludHModWludDY0X3Qs
IGNvbnN0IFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludHNEYXRhJik7CiAKICAgICBjbGFzcyBTb3Vy
Y2VQcm94eTsKICAgICBmcmllbmQgY2xhc3MgU291cmNlUHJveHk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0
dXJlTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDFmYzA5M2U1YjMwOTZmNTEwZGRlOGZm
NGFjZTY0ZmQxNDAxM2I3YWEuLmEzYzgxNGZlYjljMDgyZTMwNTU0ZmMzNTliOTU2YThmZWZlMGRh
YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFD
YXB0dXJlTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCkBAIC0y
MiwxMCArMjIsMTEgQEAKICMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBtZXNz
YWdlcyAtPiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5IHsKLSAgICBDcmVhdGVNZWRpYVNv
dXJjZUZvckNhcHR1cmVEZXZpY2VXaXRoQ29uc3RyYWludHModWludDY0X3QgaWQsIFN0cmluZyBk
ZXZpY2VJRCwgV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSB0eXBlLCBzdHJ1Y3Qg
V2ViQ29yZTo6TWVkaWFDb25zdHJhaW50c0RhdGEgY29uc3RyYWludHMpIC0+IChib29sIHN1Y2Nl
c3MsIFN0cmluZyBpbnZhbGlkQ29uc3RyYWludHMpCisgICAgQ3JlYXRlTWVkaWFTb3VyY2VGb3JD
YXB0dXJlRGV2aWNlV2l0aENvbnN0cmFpbnRzKHVpbnQ2NF90IGlkLCBTdHJpbmcgZGV2aWNlSUQs
IFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUgdHlwZSwgc3RydWN0IFdlYkNvcmU6
Ok1lZGlhQ29uc3RyYWludHNEYXRhIGNvbnN0cmFpbnRzKSAtPiAoYm9vbCBzdWNjZXNzLCBTdHJp
bmcgaW52YWxpZENvbnN0cmFpbnRzLCBXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlU2V0dGlu
Z3Mgc2V0dGluZ3MpCiAgICAgU3RhcnRQcm9kdWNpbmdEYXRhKHVpbnQ2NF90IGlkKQogICAgIFN0
b3BQcm9kdWNpbmdEYXRhKHVpbnQ2NF90IGlkKQogICAgIENhcGFiaWxpdGllcyh1aW50NjRfdCBp
ZCkgLT4gKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMgY2FwYWJpbGl0
aWVzKQogICAgIFNldE11dGVkKHVpbnQ2NF90IGlkLCBib29sIG11dGVkKQogICAgIFNldEVuYWJs
ZWQodWludDY0X3QgaWQsIGJvb2wgZW5hYmxlZCkKKyAgICBBcHBseUNvbnN0cmFpbnRzKHVpbnQ2
NF90IGlkLCBzdHJ1Y3QgV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50c0RhdGEgY29uc3RyYWludHMp
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRp
YUNhcHR1cmVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvVXNl
ck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3BwCmluZGV4IGU3YjEwODBiM2E1YzZiMjE4MzAzNmM3MDkw
Y2RjMjJjOWYxZDVlYmYuLmE5MzczN2U5MGY5ZjVjMmM4Y2M1ZDlkYWQ5N2NiNDJlZmM1ZjAwNWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2Fw
dHVyZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvVXNl
ck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3BwCkBAIC03Myw5ICs3Myw5IEBAIHB1YmxpYzoKICAgICB9
CiAKICAgICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdzKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9zZXR0aW5nczsgfQotICAgIHZvaWQgc2V0U2V0dGluZ3MoY29u
c3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBzZXR0aW5ncykKKyAgICB2b2lkIHNldFNl
dHRpbmdzKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYmIHNldHRpbmdzKQogICAgIHsKLSAg
ICAgICAgbV9zZXR0aW5ncyA9IHNldHRpbmdzOworICAgICAgICBtX3NldHRpbmdzID0gV1RGTW92
ZShzZXR0aW5ncyk7CiAgICAgICAgIHNldHRpbmdzRGlkQ2hhbmdlKCk7CiAgICAgfQogCkBAIC0x
MTQsNyArMTE0LDIwIEBAIHB1YmxpYzoKICAgICAgICAgICAgIG9ic2VydmVyLT5hdWRpb1NhbXBs
ZXNBdmFpbGFibGUodGltZSwgYXVkaW9EYXRhLCBtX2Rlc2NyaXB0aW9uLCBudW1iZXJPZkZyYW1l
cyk7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIHNldE11dGVkKGJvb2wgbXV0ZWQpCisgICAg
dm9pZCBhcHBseUNvbnN0cmFpbnRzU3VjY2VlZGVkKGNvbnN0IFdlYkNvcmU6OlJlYWx0aW1lTWVk
aWFTb3VyY2VTZXR0aW5ncyYgc2V0dGluZ3MpCisgICAgeworICAgICAgICBhdXRvIGNhbGxiYWNr
cyA9IG1fcGVuZGluZ0FwcGx5Q29uc3RyYWludHNDYWxsYmFja3MudGFrZUZpcnN0KCk7CisgICAg
ICAgIHNldFNldHRpbmdzKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyhzZXR0
aW5ncykpOworICAgICAgICBjYWxsYmFja3Muc3VjY2Vzc0hhbmRsZXIoKTsKKyAgICB9CisKKyAg
ICB2b2lkIGFwcGx5Q29uc3RyYWludHNGYWlsZWQoY29uc3QgU3RyaW5nJiBmYWlsZWRDb25zdHJh
aW50LCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKKyAgICB7CisgICAgICAgIGF1dG8gY2Fs
bGJhY2tzID0gbV9wZW5kaW5nQXBwbHlDb25zdHJhaW50c0NhbGxiYWNrcy50YWtlRmlyc3QoKTsK
KyAgICAgICAgY2FsbGJhY2tzLmZhaWx1cmVIYW5kbGVyKGZhaWxlZENvbnN0cmFpbnQsIGVycm9y
TWVzc2FnZSk7CisgICAgfQorCisgICAgdm9pZCBzZXRNdXRlZChib29sIG11dGVkKSBmaW5hbAog
ICAgIHsKICAgICAgICAgaWYgKG1fbXV0ZWQgPT0gbXV0ZWQpCiAgICAgICAgICAgICByZXR1cm47
CkBAIC0xMjMsNyArMTM2LDcgQEAgcHVibGljOgogICAgICAgICBtX21hbmFnZXIuc2V0TXV0ZWQo
bV9pZCwgbV9tdXRlZCk7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIHNldEVuYWJsZWQoYm9v
bCBlbmFibGVkKQorICAgIHZvaWQgc2V0RW5hYmxlZChib29sIGVuYWJsZWQpIGZpbmFsCiAgICAg
ewogICAgICAgICBpZiAobV9lbmFibGVkID09IGVuYWJsZWQpCiAgICAgICAgICAgICByZXR1cm47
CkBAIC0xMzIsNiArMTQ1LDcgQEAgcHVibGljOgogICAgICAgICBtX21hbmFnZXIuc2V0RW5hYmxl
ZChtX2lkLCBtX2VuYWJsZWQpOwogICAgIH0KIAorcHJpdmF0ZToKICAgICB2b2lkIHN0YXJ0UHJv
ZHVjaW5nRGF0YSgpIGZpbmFsIHsgbV9tYW5hZ2VyLnN0YXJ0UHJvZHVjaW5nRGF0YShtX2lkKTsg
fQogICAgIHZvaWQgc3RvcFByb2R1Y2luZ0RhdGEoKSBmaW5hbCB7IG1fbWFuYWdlci5zdG9wUHJv
ZHVjaW5nRGF0YShtX2lkKTsgfQogICAgIGJvb2wgaXNDYXB0dXJlU291cmNlKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gdHJ1ZTsgfQpAQCAtMTQ1LDExICsxNTksMTUgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gbV9hdWRpb1NvdXJjZVByb3ZpZGVyLmdldCgpOwogICAgIH0KIAotcHJpdmF0ZToK
ICAgICAvLyBSZWFsdGltZU1lZGlhU291cmNlCiAgICAgdm9pZCBiZWdpbkNvbmZpZ3VyYXRpb24o
KSBmaW5hbCB7IH0KICAgICB2b2lkIGNvbW1pdENvbmZpZ3VyYXRpb24oKSBmaW5hbCB7IH0KIAor
ICAgIHZvaWQgYXBwbHlDb25zdHJhaW50cyhjb25zdCBXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnRz
JiBjb25zdHJhaW50cywgU3VjY2Vzc0hhbmRsZXImJiBzdWNjZXNzSGFuZGxlciwgRmFpbHVyZUhh
bmRsZXImJiBmYWlsdXJlSGFuZGxlcikgZmluYWwgeworICAgICAgICBtX21hbmFnZXIuYXBwbHlD
b25zdHJhaW50cyhtX2lkLCBjb25zdHJhaW50cyk7CisgICAgICAgIG1fcGVuZGluZ0FwcGx5Q29u
c3RyYWludHNDYWxsYmFja3MuYXBwZW5kKHsgV1RGTW92ZShzdWNjZXNzSGFuZGxlciksIFdURk1v
dmUoZmFpbHVyZUhhbmRsZXIpfSk7CisgICAgfQorCiAgICAgdWludDY0X3QgbV9pZDsKICAgICBV
c2VyTWVkaWFDYXB0dXJlTWFuYWdlciYgbV9tYW5hZ2VyOwogICAgIG11dGFibGUgc3RkOjpvcHRp
b25hbDxSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzPiBtX2NhcGFiaWxpdGllczsKQEAg
LTE1Nyw2ICsxNzUsMTIgQEAgcHJpdmF0ZToKICAgICBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24g
bV9kZXNjcmlwdGlvbjsKICAgICBDQVJpbmdCdWZmZXIgbV9yaW5nQnVmZmVyOwogICAgIFJlZlB0
cjxXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQz4gbV9hdWRpb1NvdXJjZVByb3ZpZGVyOwor
CisgICAgc3RydWN0IEFwcGx5Q29uc3RyYWludHNDYWxsYmFjayB7CisgICAgICAgIFN1Y2Nlc3NI
YW5kbGVyIHN1Y2Nlc3NIYW5kbGVyOworICAgICAgICBGYWlsdXJlSGFuZGxlciBmYWlsdXJlSGFu
ZGxlcjsKKyAgICB9OworICAgIERlcXVlPEFwcGx5Q29uc3RyYWludHNDYWxsYmFjaz4gbV9wZW5k
aW5nQXBwbHlDb25zdHJhaW50c0NhbGxiYWNrczsKIH07CiAKIFVzZXJNZWRpYUNhcHR1cmVNYW5h
Z2VyOjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcihXZWJQcm9jZXNzKiBwcm9jZXNzKQpAQCAtMTk0
LDExICsyMTgsMTMgQEAgV2ViQ29yZTo6Q2FwdHVyZVNvdXJjZU9yRXJyb3IgVXNlck1lZGlhQ2Fw
dHVyZU1hbmFnZXI6OmNyZWF0ZUNhcHR1cmVTb3VyY2UoY29uc3QKICAgICBjb25zdHJhaW50c0Rh
dGEuaXNWYWxpZCA9IGNvbnN0cmFpbnRzLT5pc1ZhbGlkKCk7CiAgICAgYm9vbCBzdWNjZWVkZWQ7
CiAKKyAgICBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3Mgc2V0dGluZ3M7CiAgICAgU3RyaW5n
IGVycm9yTWVzc2FnZTsKLSAgICBpZiAoIW1fcHJvY2Vzcy5zZW5kU3luYyhNZXNzYWdlczo6VXNl
ck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTo6Q3JlYXRlTWVkaWFTb3VyY2VGb3JDYXB0dXJlRGV2
aWNlV2l0aENvbnN0cmFpbnRzKGlkLCBkZXZpY2VJRCwgc291cmNlVHlwZSwgY29uc3RyYWludHNE
YXRhKSwgTWVzc2FnZXM6OlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6OkNyZWF0ZU1lZGlh
U291cmNlRm9yQ2FwdHVyZURldmljZVdpdGhDb25zdHJhaW50czo6UmVwbHkoc3VjY2VlZGVkLCBl
cnJvck1lc3NhZ2UpLCAwKSkKKyAgICBpZiAoIW1fcHJvY2Vzcy5zZW5kU3luYyhNZXNzYWdlczo6
VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTo6Q3JlYXRlTWVkaWFTb3VyY2VGb3JDYXB0dXJl
RGV2aWNlV2l0aENvbnN0cmFpbnRzKGlkLCBkZXZpY2VJRCwgc291cmNlVHlwZSwgY29uc3RyYWlu
dHNEYXRhKSwgTWVzc2FnZXM6OlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6OkNyZWF0ZU1l
ZGlhU291cmNlRm9yQ2FwdHVyZURldmljZVdpdGhDb25zdHJhaW50czo6UmVwbHkoc3VjY2VlZGVk
LCBlcnJvck1lc3NhZ2UsIHNldHRpbmdzKSwgMCkpCiAgICAgICAgIHJldHVybiBXVEZNb3ZlKGVy
cm9yTWVzc2FnZSk7CiAKICAgICBhdXRvIHNvdXJjZSA9IGFkb3B0UmVmKCpuZXcgU291cmNlKFN0
cmluZzo6bnVtYmVyKGlkKSwgc291cmNlVHlwZSwgZW1wdHlTdHJpbmcoKSwgaWQsICp0aGlzKSk7
CisgICAgc291cmNlLT5zZXRTZXR0aW5ncyhXVEZNb3ZlKHNldHRpbmdzKSk7CiAgICAgbV9zb3Vy
Y2VzLnNldChpZCwgc291cmNlLmNvcHlSZWYoKSk7CiAgICAgcmV0dXJuIFdlYkNvcmU6OkNhcHR1
cmVTb3VyY2VPckVycm9yKFdURk1vdmUoc291cmNlKSk7CiB9CkBAIC0yMjQsNyArMjUwLDcgQEAg
dm9pZCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6c291cmNlRW5hYmxlZENoYW5nZWQodWludDY0
X3QgaWQsIGJvb2wgZW5hYmxlZCkKIHZvaWQgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OnNvdXJj
ZVNldHRpbmdzQ2hhbmdlZCh1aW50NjRfdCBpZCwgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNl
dHRpbmdzJiBzZXR0aW5ncykKIHsKICAgICBBU1NFUlQobV9zb3VyY2VzLmNvbnRhaW5zKGlkKSk7
Ci0gICAgbV9zb3VyY2VzLmdldChpZCktPnNldFNldHRpbmdzKHNldHRpbmdzKTsKKyAgICBtX3Nv
dXJjZXMuZ2V0KGlkKS0+c2V0U2V0dGluZ3MoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzKHNl
dHRpbmdzKSk7CiB9CiAKIHZvaWQgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OnN0b3JhZ2VDaGFu
Z2VkKHVpbnQ2NF90IGlkLCBjb25zdCBTaGFyZWRNZW1vcnk6OkhhbmRsZSYgaGFuZGxlLCBjb25z
dCBXZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCB1aW50NjRf
dCBudW1iZXJPZkZyYW1lcykKQEAgLTI3NCw2ICszMDAsMzAgQEAgdm9pZCBVc2VyTWVkaWFDYXB0
dXJlTWFuYWdlcjo6c2V0RW5hYmxlZCh1aW50NjRfdCBpZCwgYm9vbCBlbmFibGVkKQogICAgIG1f
cHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5OjpTZXRF
bmFibGVkKGlkLCBlbmFibGVkKSwgMCk7CiB9CiAKK3ZvaWQgVXNlck1lZGlhQ2FwdHVyZU1hbmFn
ZXI6OmFwcGx5Q29uc3RyYWludHModWludDY0X3QgaWQsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhQ29u
c3RyYWludHMmIGNvbnN0cmFpbnRzKQoreworICAgIE1lZGlhQ29uc3RyYWludHNEYXRhIGNvbnN0
cmFpbnRzRGF0YTsKKyAgICBjb25zdHJhaW50c0RhdGEubWFuZGF0b3J5Q29uc3RyYWludHMgPSBj
b25zdHJhaW50cy5tYW5kYXRvcnlDb25zdHJhaW50cygpOworICAgIGNvbnN0cmFpbnRzRGF0YS5h
ZHZhbmNlZENvbnN0cmFpbnRzID0gY29uc3RyYWludHMuYWR2YW5jZWRDb25zdHJhaW50cygpOwor
ICAgIGNvbnN0cmFpbnRzRGF0YS5pc1ZhbGlkID0gY29uc3RyYWludHMuaXNWYWxpZCgpOworCisg
ICAgbV9wcm9jZXNzLnNlbmQoTWVzc2FnZXM6OlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6
OkFwcGx5Q29uc3RyYWludHMoaWQsIGNvbnN0cmFpbnRzRGF0YSksIDApOworfQorCit2b2lkIFVz
ZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOjphcHBseUNvbnN0cmFpbnRzU3VjY2VlZGVkKHVpbnQ2NF90
IGlkLCBjb25zdCBXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdz
KQoreworICAgIEFTU0VSVChtX3NvdXJjZXMuY29udGFpbnMoaWQpKTsKKyAgICBhdXRvJiBzb3Vy
Y2UgPSAqbV9zb3VyY2VzLmdldChpZCk7CisgICAgc291cmNlLmFwcGx5Q29uc3RyYWludHNTdWNj
ZWVkZWQoc2V0dGluZ3MpOworfQorCit2b2lkIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOjphcHBs
eUNvbnN0cmFpbnRzRmFpbGVkKHVpbnQ2NF90IGlkLCBjb25zdCBTdHJpbmcmIGZhaWxlZENvbnN0
cmFpbnQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBBU1NFUlQobV9zb3VyY2VzLmNv
bnRhaW5zKGlkKSk7CisgICAgYXV0byYgc291cmNlID0gKm1fc291cmNlcy5nZXQoaWQpOworICAg
IHNvdXJjZS5hcHBseUNvbnN0cmFpbnRzRmFpbGVkKGZhaWxlZENvbnN0cmFpbnQsIG1lc3NhZ2Up
OworfQorCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oCmluZGV4IDAxNzY1NTdlM2ZhNmZl
MWVkMjhlOGE0N2JmNzJiODdkYjZkMDk5MzUuLmQzMThlYzdhNTRjYzQ5OThkZjYzZDJhMThiZjlm
NGJiMjViYzc2ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2Ev
VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmgKQEAgLTc1LDYgKzc1LDkgQEAgcHJpdmF0
ZToKICAgICBXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzIGNhcGFiaWxp
dGllcyh1aW50NjRfdCk7CiAgICAgdm9pZCBzZXRNdXRlZCh1aW50NjRfdCwgYm9vbCk7CiAgICAg
dm9pZCBzZXRFbmFibGVkKHVpbnQ2NF90LCBib29sKTsKKyAgICB2b2lkIGFwcGx5Q29uc3RyYWlu
dHModWludDY0X3QsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludHMmKTsKKyAgICB2b2lk
IGFwcGx5Q29uc3RyYWludHNTdWNjZWVkZWQodWludDY0X3QsIGNvbnN0IFdlYkNvcmU6OlJlYWx0
aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYpOworICAgIHZvaWQgYXBwbHlDb25zdHJhaW50c0ZhaWxl
ZCh1aW50NjRfdCwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7CiAKICAgICBjbGFzcyBT
b3VyY2U7CiAgICAgZnJpZW5kIGNsYXNzIFNvdXJjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2Vy
Lm1lc3NhZ2VzLmluCmluZGV4IGVlYzA1NjVjNjg2NGE0NmIwMGU5ZjhmYjkxMGMxOGM4OWU5ZTRh
MTMuLjFmYzFmMDI5MmQ1NWU4NTJlMDUzZDUyYjczMDc1NGZjNDRiNDFiZGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIu
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVk
aWFDYXB0dXJlTWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtMjgsNCArMjgsNiBAQCBtZXNzYWdlcyAt
PiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlciB7CiAgICAgU291cmNlU2V0dGluZ3NDaGFuZ2VkKHVp
bnQ2NF90IGlkLCBXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3Mgc2V0dGluZ3Mp
CiAgICAgU3RvcmFnZUNoYW5nZWQodWludDY0X3QgaWQsIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpI
YW5kbGUgc3RvcmFnZUhhbmRsZSwgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uIGRl
c2NyaXB0aW9uLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcykKICAgICBBdWRpb1NhbXBsZXNBdmFp
bGFibGUodWludDY0X3QgaWQsIE1lZGlhVGltZSB0aW1lLCB1aW50NjRfdCBudW1iZXJPZkZyYW1l
cywgdWludDY0X3Qgc3RhcnRGcmFtZSwgdWludDY0X3QgZW5kRnJhbWUpCisgICAgQXBwbHlDb25z
dHJhaW50c1N1Y2NlZWRlZCh1aW50NjRfdCBpZCwgV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJj
ZVNldHRpbmdzIHNldHRpbmdzKQorICAgIEFwcGx5Q29uc3RyYWludHNGYWlsZWQodWludDY0X3Qg
aWQsIFN0cmluZyBmYWlsZWRDb25zdHJhaW50LCBTdHJpbmcgbWVzc2FnZSkKIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>