<?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>224295</bug_id>
          
          <creation_ts>2021-04-07 11:11:54 -0700</creation_ts>
          <short_desc>Rename and make the TerminationException a singleton.</short_desc>
          <delta_ts>2021-04-07 17:31:16 -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>JavaScriptCore</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="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>calvaris</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mkwst</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1747979</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-04-07 11:11:54 -0700</bug_when>
    <thetext>We previously call it the TerminatedExecutionException, which is a mouthful but adds no meaningful information.

We can make it a singleton because the TerminationException is just a VM internal mechanism for implementing the termination of the current execution stack.  It should never be exposed to user JS code, and therefore, there is no value in making it a JS object.  Making it a singleton simplifies the code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748015</commentid>
    <comment_count>1</comment_count>
      <attachid>425424</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-04-07 12:24:04 -0700</bug_when>
    <thetext>Created attachment 425424
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748032</commentid>
    <comment_count>2</comment_count>
      <attachid>425429</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-04-07 12:52:40 -0700</bug_when>
    <thetext>Created attachment 425429
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748093</commentid>
    <comment_count>3</comment_count>
      <attachid>425429</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2021-04-07 15:12:16 -0700</bug_when>
    <thetext>Comment on attachment 425429
proposed patch.

r=me the iOS-wk2 failures seem unrelated but maybe worth waiting for confirmation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748159</commentid>
    <comment_count>4</comment_count>
      <attachid>425429</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-04-07 17:05:44 -0700</bug_when>
    <thetext>Comment on attachment 425429
proposed patch.

Thanks for the review.  Landing now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748168</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-04-07 17:30:21 -0700</bug_when>
    <thetext>Committed r275648: &lt;https://commits.webkit.org/r275648&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 425429.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748169</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-04-07 17:31:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/76373832&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425424</attachid>
            <date>2021-04-07 12:24:04 -0700</date>
            <delta_ts>2021-04-07 12:52:40 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-224295.patch</filename>
            <type>text/plain</type>
            <size>47301</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjc1NjE2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDczIEBA
CisyMDIxLTA0LTA3ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZW5hbWUgYW5kIG1ha2UgdGhlIFRlcm1pbmF0aW9uRXhjZXB0aW9uIGEgc2luZ2xldG9uLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0Mjk1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgcHJldmlvdXNs
eSBjYWxsIGl0IHRoZSBUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uLCB3aGljaCBpcyBhIG1v
dXRoZnVsIGJ1dAorICAgICAgICBhZGRzIG5vIG1lYW5pbmdmdWwgaW5mb3JtYXRpb24uICBJdCdz
IG5vdyByZW5hbWVkIHRvIFRlcm1pbmF0aW9uRXhjZXB0aW9uLgorCisgICAgICAgIFdlIGNhbiBt
YWtlIGl0IGEgc2luZ2xldG9uIGJlY2F1c2UgdGhlIFRlcm1pbmF0aW9uRXhjZXB0aW9uIGlzIGp1
c3QgYSBWTSBpbnRlcm5hbAorICAgICAgICBtZWNoYW5pc20gZm9yIGltcGxlbWVudGluZyB0aGUg
dGVybWluYXRpb24gb2YgdGhlIGN1cnJlbnQgZXhlY3V0aW9uIHN0YWNrLiAgSXQKKyAgICAgICAg
c2hvdWxkIG5ldmVyIGJlIGV4cG9zZWQgdG8gdXNlciBKUyBjb2RlLCBhbmQgdGhlcmVmb3JlLCB0
aGVyZSBpcyBubyB2YWx1ZSBpbgorICAgICAgICBtYWtpbmcgaXQgYSBKUyBvYmplY3QuICBNYWtp
bmcgaXQgYSBzaW5nbGV0b24gc2ltcGxpZmllcyB0aGUgY29kZS4KKworICAgICAgICBBIFRlcm1p
bmF0aW9uRXhjZXB0aW9uIGlzIG5vdyBpbXBsZW1lbnRlZCBhcyBhbiBFeGNlcHRpb24gY2VsbCB3
aGljaCBob2xkcyBhCisgICAgICAgIFN5bWJvbCB3aXRoIHRoZSBuYW1lICJUZXJtaW5hdGlvbkVy
cm9yIi4gIFRoZSBUZXJtaW5hdGlvbkV4Y2VwdGlvbiBpcyBvbmx5IGNyZWF0ZWQKKyAgICAgICAg
aWYgbmVlZGVkIGUuZy4gaWYgdGhlIEpTQyB3YXRjaGRvZyBpcyBjcmVhdGVkLCBvciBpZiB0aGUg
Vk0gaXMgZm9yIGEgV29ya2VyIHRocmVhZAorICAgICAgICB3aGljaCBuZWVkcyB0byBiZSBhYmxl
IHRvIGhhbmRsZSB0ZXJtaW5hdGlvbiByZXF1ZXN0cy4KKworICAgICAgICBXZSdsbCBhbHNvIHN0
b3Agbm90aWZ5aW5nIHRoZSBkZWJ1Z2dlciB3aGVuIHdlIHRocm93IHRoZSBUZXJtaW5hdGlvbkV4
Y2VwdGlvbi4KKyAgICAgICAgVGhpcyBpcyBiZWNhdXNlIHRoZSBUZXJtaW5hdGlvbkV4Y2VwdGlv
biBpcyBub3QgbGlrZSBvcmRpbmFyeSBleGNlcHRpb25zIHRoYXQKKyAgICAgICAgc2hvdWxkIGJl
IHJlcG9ydGVkIHRvIHRoZSBkZWJ1Z2dlci4gVGhlIGZhY3QgdGhhdCB0aGUgVGVybWluYXRpb25F
eGNlcHRpb24gdXNlcworICAgICAgICB0aGUgZXhjZXB0aW9uIGhhbmRsaW5nIG1lY2hhbmlzbSBp
cyBqdXN0IGEgVk0gaW50ZXJuYWwgaW1wbGVtZW50YXRpb24gZGV0YWlsLgorICAgICAgICBJdCBp
cyBub3QgbWVhbmluZ2Z1bCB0byByZXBvcnQgaXQgdG8gdGhlIGRlYnVnZ2VyIGFzIGFuIGV4Y2Vw
dGlvbi4KKworICAgICAgICAqIEFQSS9KU0NvbnRleHQubW06CisgICAgICAgICgtW0pTQ29udGV4
dCBldmFsdWF0ZUpTU2NyaXB0Ol0pOgorICAgICAgICAqIEFQSS90ZXN0cy9FeGVjdXRpb25UaW1l
TGltaXRUZXN0LmNwcDoKKyAgICAgICAgKHRlc3RFeGVjdXRpb25UaW1lTGltaXQpOgorICAgICAg
ICAqIGJpbmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHA6CisgICAgICAgIChEZXByZWNhdGVk
OjpTY3JpcHRGdW5jdGlvbkNhbGw6OmNhbGwpOgorICAgICAgICAqIGhlYXAvSGVhcC5jcHA6Cisg
ICAgICAgIChKU0M6OkhlYXA6OmFkZENvcmVDb25zdHJhaW50cyk6CisgICAgICAgICogaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkluamVj
dGVkU2NyaXB0TWFuYWdlcjo6aW5qZWN0ZWRTY3JpcHRGb3IpOgorICAgICAgICAqIGluc3BlY3Rv
ci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoSW5zcGVj
dG9yOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OnJlcG9ydEFQSUV4Y2VwdGlv
bik6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlND
OjpJbnRlcnByZXRlcjo6dW53aW5kKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6Om5vdGlm
eURlYnVnZ2VyT2ZFeGNlcHRpb25Ub0JlVGhyb3duKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0
aW9ucy5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSklUX09QRVJBVElPTik6CisgICAg
ICAgICoganNjLmNwcDoKKyAgICAgICAgKGNoZWNrRXhjZXB0aW9uKToKKyAgICAgICAgKiBsbGlu
dC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BB
VEhfREVDTCk6CisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcDoKKyAgICAg
ICAgKEpTQzo6VGVybWluYXRlZEV4ZWN1dGlvbkVycm9yOjpkZWZhdWx0VmFsdWUpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpjcmVhdGVUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6aXNUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6dGhyb3dUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKTog
RGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaDoKKyAgICAgICAg
KCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAoSlND
OjpKU09iamVjdDo6Z2V0IGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0pTUHJvbWlzZS5jcHA6
CisgICAgICAgIChKU0M6OkpTUHJvbWlzZTo6cmVqZWN0V2l0aENhdWdodEV4Y2VwdGlvbik6Cisg
ICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAg
IChKU0M6OlZNOjplbnN1cmVXYXRjaGRvZyk6CisgICAgICAgIChKU0M6OlZNOjplbnN1cmVUZXJt
aW5hdGlvbkV4Y2VwdGlvbik6CisgICAgICAgIChKU0M6OlZNOjp0aHJvd1Rlcm1pbmF0aW9uRXhj
ZXB0aW9uKToKKyAgICAgICAgKEpTQzo6Vk06OnRocm93RXhjZXB0aW9uKToKKyAgICAgICAgKiBy
dW50aW1lL1ZNLmg6CisgICAgICAgIChKU0M6OlZNOjp0ZXJtaW5hdGlvbkV4Y2VwdGlvbiBjb25z
dCk6CisgICAgICAgIChKU0M6OlZNOjppc1Rlcm1pbmF0aW9uRXhjZXB0aW9uIGNvbnN0KToKKyAg
ICAgICAgKiBydW50aW1lL1ZNVHJhcHMuY3BwOgorICAgICAgICAoSlNDOjpWTVRyYXBzOjpoYW5k
bGVUcmFwcyk6CisKIDIwMjEtMDQtMDcgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgog
CiAgICAgICAgIEZpeCBhIHR5cG8gaW4gSklUVW5jb3VnaHRFeGNlcHRpb25BZnRlckNhbGwuCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvanNjLmNwcAkocmV2aXNpb24gMjc1NjExKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2pzYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5NDAsNyArMjk0MCwyMSBAQCBz
dGF0aWMgdm9pZCBjaGVja0V4Y2VwdGlvbihHbG9iYWxPYmplY3QqCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogCi0gICAgaWYgKG9wdGlvbnMubV90cmVhdFdhdGNoZG9nRXhj
ZXB0aW9uQXNTdWNjZXNzICYmIHZhbHVlLmluaGVyaXRzPFRlcm1pbmF0ZWRFeGVjdXRpb25FcnJv
cj4odm0pKSB7CisgICAgYXV0byBpc1Rlcm1pbmF0aW9uRXhjZXB0aW9uID0gWyZdIChKU1ZhbHVl
IHZhbHVlKSB7CisgICAgICAgIGlmICghdmFsdWUuaXNDZWxsKCkpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICAgICAgSlNDZWxsKiB2YWx1ZUNlbGwgPSB2YWx1ZS5hc0NlbGwoKTsK
KyAgICAgICAgdm0uZW5zdXJlVGVybWluYXRpb25FeGNlcHRpb24oKTsKKyAgICAgICAgRXhjZXB0
aW9uKiB0ZXJtaW5hdGlvbkV4Y2VwdGlvbiA9IHZtLnRlcm1pbmF0aW9uRXhjZXB0aW9uKCk7Cisg
ICAgICAgIEV4Y2VwdGlvbiogZXhjZXB0aW9uID0ganNEeW5hbWljQ2FzdDxFeGNlcHRpb24qPih2
bSwgdmFsdWVDZWxsKTsKKyAgICAgICAgaWYgKGV4Y2VwdGlvbikKKyAgICAgICAgICAgIHJldHVy
biB2bS5pc1Rlcm1pbmF0aW9uRXhjZXB0aW9uKGV4Y2VwdGlvbik7CisgICAgICAgIEpTQ2VsbCog
dGVybWluYXRpb25FcnJvciA9IHRlcm1pbmF0aW9uRXhjZXB0aW9uLT52YWx1ZSgpLmFzQ2VsbCgp
OworICAgICAgICByZXR1cm4gdmFsdWVDZWxsID09IHRlcm1pbmF0aW9uRXJyb3I7CisgICAgfTsK
KworICAgIGlmIChvcHRpb25zLm1fdHJlYXRXYXRjaGRvZ0V4Y2VwdGlvbkFzU3VjY2VzcyAmJiBp
c1Rlcm1pbmF0aW9uRXhjZXB0aW9uKHZhbHVlKSkgewogICAgICAgICBBU1NFUlQoaGFzRXhjZXB0
aW9uKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNDb250ZXh0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDb250ZXh0Lm1tCShyZXZpc2lvbiAyNzU2MTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTQ29udGV4dC5tbQkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE0MCw3ICsxNDAsNyBAQCAt
IChKU1ZhbHVlICopZXZhbHVhdGVKU1NjcmlwdDooSlNTY3JpcHQgCiAgICAgaWYgKHNjb3BlLmV4
Y2VwdGlvbigpKSB7CiAgICAgICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uVmFsdWUgPSB0b1JlZihh
cGlHbG9iYWxPYmplY3QsIHNjb3BlLmV4Y2VwdGlvbigpLT52YWx1ZSgpKTsKICAgICAgICAgc2Nv
cGUuY2xlYXJFeGNlcHRpb24oKTsKLSAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBub3QgY2xl
YXJFeGNlcHRpb24gaWYgaXQgaXMgVGVybWluYXRlZEV4ZWN1dGlvbkVycm9yLgorICAgICAgICAv
LyBGSVhNRTogV2Ugc2hvdWxkIG5vdCBjbGVhckV4Y2VwdGlvbiBpZiBpdCBpcyB0aGUgVGVybWlu
YXRpb25FeGNlcHRpb24uCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjA4MjEKICAgICAgICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aE5ld1By
b21pc2VSZWplY3RlZFdpdGhSZWFzb246W0pTVmFsdWUgdmFsdWVXaXRoSlNWYWx1ZVJlZjpleGNl
cHRpb25WYWx1ZSBpbkNvbnRleHQ6c2VsZl0gaW5Db250ZXh0OnNlbGZdOwogICAgIH0KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvRXhlY3V0aW9uVGltZUxpbWl0VGVzdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9FeGVjdXRp
b25UaW1lTGltaXRUZXN0LmNwcAkocmV2aXNpb24gMjc1NjExKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS90ZXN0cy9FeGVjdXRpb25UaW1lTGltaXRUZXN0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTE3OSw3ICsxNzksNyBAQCBpbnQgdGVzdEV4ZWN1dGlvblRpbWVMaW1pdCgpCiAgICAg
ICAgICAgICB9CiAKICAgICAgICAgICAgIGlmICghZXhjZXB0aW9uKSB7Ci0gICAgICAgICAgICAg
ICAgcHJpbnRmKCJGQUlMOiAlcyBUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uIHdhcyBub3Qg
dGhyb3duLlxuIiwgdGllck9wdGlvbnMudGllcik7CisgICAgICAgICAgICAgICAgcHJpbnRmKCJG
QUlMOiAlcyBUZXJtaW5hdGlvbkV4Y2VwdGlvbiB3YXMgbm90IHRocm93bi5cbiIsIHRpZXJPcHRp
b25zLnRpZXIpOwogICAgICAgICAgICAgICAgIGV4aXQoMSk7CiAgICAgICAgICAgICB9CiAKQEAg
LTIyNSw3ICsyMjUsNyBAQCBpbnQgdGVzdEV4ZWN1dGlvblRpbWVMaW1pdCgpCiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmICghZXhjZXB0aW9uKSB7Ci0gICAgICAg
ICAgICAgICAgcHJpbnRmKCJGQUlMOiAlcyBUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uIHdh
cyBub3QgdGhyb3duLlxuIiwgdGllck9wdGlvbnMudGllcik7CisgICAgICAgICAgICAgICAgcHJp
bnRmKCJGQUlMOiAlcyBUZXJtaW5hdGlvbkV4Y2VwdGlvbiB3YXMgbm90IHRocm93bi5cbiIsIHRp
ZXJPcHRpb25zLnRpZXIpOwogICAgICAgICAgICAgICAgIGZhaWxlZCA9IHRydWU7CiAgICAgICAg
ICAgICB9CiAKQEAgLTI2OCwxNCArMjY4LDE0IEBAIGludCB0ZXN0RXhlY3V0aW9uVGltZUxpbWl0
KCkKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKCFleGNlcHRp
b24pIHsKLSAgICAgICAgICAgICAgICBwcmludGYoIkZBSUw6ICVzIFRlcm1pbmF0ZWRFeGVjdXRp
b25FeGNlcHRpb24gd2FzIG5vdCB0aHJvd24uXG4iLCB0aWVyT3B0aW9ucy50aWVyKTsKKyAgICAg
ICAgICAgICAgICBwcmludGYoIkZBSUw6ICVzIFRlcm1pbmF0aW9uRXhjZXB0aW9uIHdhcyBub3Qg
dGhyb3duLlxuIiwgdGllck9wdGlvbnMudGllcik7CiAgICAgICAgICAgICAgICAgZmFpbGVkID0g
dHJ1ZTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgdGVzdFJlc2V0QWZ0ZXJUaW1lb3V0
KGZhaWxlZCk7CiAgICAgICAgIH0KIAotICAgICAgICAvKiBUZXN0IHRoZSBzY3JpcHQgdGltZW91
dCdzIFRlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24gc2hvdWxkIE5PVCBiZSBjYXRjaGFibGU6
ICovCisgICAgICAgIC8qIFRlc3QgdGhlIHNjcmlwdCB0aW1lb3V0J3MgVGVybWluYXRpb25FeGNl
cHRpb24gc2hvdWxkIE5PVCBiZSBjYXRjaGFibGU6ICovCiAgICAgICAgIHRpbWVMaW1pdCA9IDEw
MF9tcyArIHRpZXJBZGp1c3RtZW50OwogICAgICAgICBKU0NvbnRleHRHcm91cFNldEV4ZWN1dGlv
blRpbWVMaW1pdChjb250ZXh0R3JvdXAsIHRpbWVMaW1pdC5zZWNvbmRzKCksIHNob3VsZFRlcm1p
bmF0ZUNhbGxiYWNrLCBudWxscHRyKTsKICAgICAgICAgewpAQCAtMzEzLDkgKzMxMyw5IEBAIGlu
dCB0ZXN0RXhlY3V0aW9uVGltZUxpbWl0KCkKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAog
ICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICBwcmludGYoIlBBU1M6
ICVzIFRlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24gd2FzIG5vdCBjYXRjaGFibGUgYXMgZXhw
ZWN0ZWQuXG4iLCB0aWVyT3B0aW9ucy50aWVyKTsKKyAgICAgICAgICAgICAgICBwcmludGYoIlBB
U1M6ICVzIFRlcm1pbmF0aW9uRXhjZXB0aW9uIHdhcyBub3QgY2F0Y2hhYmxlIGFzIGV4cGVjdGVk
LlxuIiwgdGllck9wdGlvbnMudGllcik7CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAg
ICAgICBwcmludGYoIkZBSUw6ICVzIFRlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24gd2FzIGNh
dWdodC5cbiIsIHRpZXJPcHRpb25zLnRpZXIpOworICAgICAgICAgICAgICAgIHByaW50ZigiRkFJ
TDogJXMgVGVybWluYXRpb25FeGNlcHRpb24gd2FzIGNhdWdodC5cbiIsIHRpZXJPcHRpb25zLnRp
ZXIpOwogICAgICAgICAgICAgICAgIGZhaWxlZCA9IHRydWU7CiAgICAgICAgICAgICB9CiAKQEAg
LTM2MCw3ICszNjAsNyBAQCBpbnQgdGVzdEV4ZWN1dGlvblRpbWVMaW1pdCgpCiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmICghZXhjZXB0aW9uKSB7Ci0gICAgICAg
ICAgICAgICAgcHJpbnRmKCJGQUlMOiAlcyBUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uIHdh
cyBub3QgdGhyb3duLlxuIiwgdGllck9wdGlvbnMudGllcik7CisgICAgICAgICAgICAgICAgcHJp
bnRmKCJGQUlMOiAlcyBUZXJtaW5hdGlvbkV4Y2VwdGlvbiB3YXMgbm90IHRocm93bi5cbiIsIHRp
ZXJPcHRpb25zLnRpZXIpOwogICAgICAgICAgICAgICAgIGZhaWxlZCA9IHRydWU7CiAgICAgICAg
ICAgICB9CiAKQEAgLTQwNSw3ICs0MDUsNyBAQCBpbnQgdGVzdEV4ZWN1dGlvblRpbWVMaW1pdCgp
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChleGNlcHRpb24p
IHsKLSAgICAgICAgICAgICAgICBwcmludGYoIkZBSUw6ICVzIFVuZXhwZWN0ZWQgVGVybWluYXRl
ZEV4ZWN1dGlvbkV4Y2VwdGlvbiB0aHJvd24uXG4iLCB0aWVyT3B0aW9ucy50aWVyKTsKKyAgICAg
ICAgICAgICAgICBwcmludGYoIkZBSUw6ICVzIFVuZXhwZWN0ZWQgVGVybWluYXRpb25FeGNlcHRp
b24gdGhyb3duLlxuIiwgdGllck9wdGlvbnMudGllcik7CiAgICAgICAgICAgICAgICAgZmFpbGVk
ID0gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNDU0LDcgKzQ1NCw3IEBAIGlu
dCB0ZXN0RXhlY3V0aW9uVGltZUxpbWl0KCkKICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJG
QUlMOiAlcyBzY3JpcHQgdGltZW91dCBjYWxsYmFjayB3YXMgbm90IGNhbGxlZCBhZnRlciB0aW1l
b3V0IGV4dGVuc2lvbi5cbiIsIHRpZXJPcHRpb25zLnRpZXIpOwogICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgICAgIGlmICghZXhjZXB0aW9uKQotICAgICAgICAgICAgICAgICAgICBwcmlu
dGYoIkZBSUw6ICVzIFRlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24gd2FzIG5vdCB0aHJvd24g
ZHVyaW5nIHRpbWVvdXQgZXh0ZW5zaW9uIHRlc3QuXG4iLCB0aWVyT3B0aW9ucy50aWVyKTsKKyAg
ICAgICAgICAgICAgICAgICAgcHJpbnRmKCJGQUlMOiAlcyBUZXJtaW5hdGlvbkV4Y2VwdGlvbiB3
YXMgbm90IHRocm93biBkdXJpbmcgdGltZW91dCBleHRlbnNpb24gdGVzdC5cbiIsIHRpZXJPcHRp
b25zLnRpZXIpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGZhaWxlZCA9IHRy
dWU7CiAgICAgICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3Mv
U2NyaXB0RnVuY3Rpb25DYWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYmluZGluZ3MvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcAkocmV2aXNpb24gMjc1NjExKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEz
LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAy
MDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBA
IC0xMjcsNyArMTI3LDcgQEAgRXhwZWN0ZWQ8SlNWYWx1ZSwgTmFrZWRQdHI8RXhjZXB0aW9uPj4g
UwogCiAgICAgaWYgKGV4Y2VwdGlvbikgewogICAgICAgICAvLyBEbyBub3QgdHJlYXQgYSB0ZXJt
aW5hdGVkIGV4ZWN1dGlvbiBleGNlcHRpb24gYXMgaGF2aW5nIGFuIGV4Y2VwdGlvbi4gSnVzdCB0
cmVhdCBpdCBhcyBhbiBlbXB0eSByZXN1bHQuCi0gICAgICAgIGlmICghaXNUZXJtaW5hdGVkRXhl
Y3V0aW9uRXhjZXB0aW9uKHZtLCBleGNlcHRpb24pKQorICAgICAgICBpZiAoIXZtLmlzVGVybWlu
YXRpb25FeGNlcHRpb24oZXhjZXB0aW9uKSkKICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBl
Y3RlZChleGNlcHRpb24pOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCShyZXZpc2lvbiAyNzU2MTEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgxNyw2ICsyODE3
LDEyIEBAIHZvaWQgSGVhcDo6YWRkQ29yZUNvbnN0cmFpbnRzKCkKICAgICAgICAgICAgICAgICBT
ZXRSb290TWFya1JlYXNvblNjb3BlIHJvb3RTY29wZSh2aXNpdG9yLCBSb290TWFya1JlYXNvbjo6
Vk1FeGNlcHRpb25zKTsKICAgICAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVk
KG1fdm0uZXhjZXB0aW9uKCkpOwogICAgICAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJy
aWVyZWQobV92bS5sYXN0RXhjZXB0aW9uKCkpOworCisgICAgICAgICAgICAgICAgLy8gV2UncmUg
Z29pbmcgdG8gbV90ZXJtaW5hdGlvbkV4Y2VwdGlvbiBkaXJlY3RseSBpbnN0ZWFkIG9mIGdvaW5n
IHRocm91Z2gKKyAgICAgICAgICAgICAgICAvLyB0aGUgZXhjZXB0aW9uKCkgZ2V0dGVyIGJlY2F1
c2Ugd2Ugd2FudCB0byBhc3NlcnQgaW4gdGhlIGdldHRlciB0aGF0IHRoZQorICAgICAgICAgICAg
ICAgIC8vIFRlcm1pbmF0aW9uRXhjZXB0aW9uIGhhcyBiZWVuIHJlaWZpZWQuIEhlcmUsIHdlIGRv
bid0IGNhcmUgaWYgaXQgaXMKKyAgICAgICAgICAgICAgICAvLyByZWlmaWVkIG9yIG5vdC4KKyAg
ICAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkKG1fdm0ubV90ZXJtaW5hdGlv
bkV4Y2VwdGlvbik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0pKSwKICAgICAgICAgQ29uc3Ry
YWludFZvbGF0aWxpdHk6OkdyZXllZEJ5RXhlY3V0aW9uKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5j
cHAJKHJldmlzaW9uIDI3NTYxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggTWF0dCBMaWxlayA8d2Via2l0QG1hdHRs
aWxlay5jb20+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCkBAIC0xODgsNyArMTg4LDcgQEAgSW5qZWN0ZWRTY3JpcHQgSW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyOjppbgogICAgICAgICBhdXRvJiBlcnJvciA9IGNyZWF0ZVJlc3VsdC5lcnJv
cigpOwogICAgICAgICBBU1NFUlQoZXJyb3IpOwogCi0gICAgICAgIGlmIChpc1Rlcm1pbmF0ZWRF
eGVjdXRpb25FeGNlcHRpb24oZ2xvYmFsT2JqZWN0LT52bSgpLCBlcnJvcikpCisgICAgICAgIGlm
IChnbG9iYWxPYmplY3QtPnZtKCkuaXNUZXJtaW5hdGlvbkV4Y2VwdGlvbihlcnJvcikpCiAgICAg
ICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQoKTsKIAogICAgICAgICB1bnNpZ25lZCBsaW5l
ID0gMDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmpl
Y3RJbnNwZWN0b3JDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5jcHAJKHJl
dmlzaW9uIDI3NTYxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9i
YWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNzIs
NyArMTcyLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6Ogogdm9p
ZCBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OnJlcG9ydEFQSUV4Y2VwdGlvbihK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFeGNlcHRpb24qIGV4Y2VwdGlvbikKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgaWYgKGlzVGVybWluYXRlZEV4ZWN1
dGlvbkV4Y2VwdGlvbih2bSwgZXhjZXB0aW9uKSkKKyAgICBpZiAodm0uaXNUZXJtaW5hdGlvbkV4
Y2VwdGlvbihleGNlcHRpb24pKQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDI3NTYxMSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4IENh
bWVyb24gWndhcmljaCA8Y3d6d2FyaWNoQHV3YXRlcmxvby5jYT4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
QEAgLTYwNyw3ICs2MDcsNyBAQCBORVZFUl9JTkxJTkUgSGFuZGxlckluZm8qIEludGVycHJldGVy
Ojp1CiAKICAgICAvLyBDYWxjdWxhdGUgYW4gZXhjZXB0aW9uIGhhbmRsZXIgdlBDLCB1bndpbmRp
bmcgY2FsbCBmcmFtZXMgYXMgbmVjZXNzYXJ5LgogICAgIEhhbmRsZXJJbmZvKiBoYW5kbGVyID0g
bnVsbHB0cjsKLSAgICBVbndpbmRGdW5jdG9yIGZ1bmN0b3Iodm0sIGNhbGxGcmFtZSwgaXNUZXJt
aW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKHZtLCBleGNlcHRpb24pLCBjb2RlQmxvY2ssIGhhbmRs
ZXIpOworICAgIFVud2luZEZ1bmN0b3IgZnVuY3Rvcih2bSwgY2FsbEZyYW1lLCB2bS5pc1Rlcm1p
bmF0aW9uRXhjZXB0aW9uKGV4Y2VwdGlvbiksIGNvZGVCbG9jaywgaGFuZGxlcik7CiAgICAgU3Rh
Y2tWaXNpdG9yOjp2aXNpdDxTdGFja1Zpc2l0b3I6OlRlcm1pbmF0ZUlmVG9wRW50cnlGcmFtZUlz
RW1wdHk+KGNhbGxGcmFtZSwgdm0sIGZ1bmN0b3IpOwogICAgIGlmICh2bS5oYXNDaGVja3BvaW50
T1NSU2lkZVN0YXRlKCkpCiAgICAgICAgIHZtLnBvcEFsbENoZWNrcG9pbnRPU1JTaWRlU3RhdGVV
bnRpbChjYWxsRnJhbWUpOwpAQCAtNjIwLDYgKzYyMCw4IEBAIE5FVkVSX0lOTElORSBIYW5kbGVy
SW5mbyogSW50ZXJwcmV0ZXI6OnUKIAogdm9pZCBJbnRlcnByZXRlcjo6bm90aWZ5RGVidWdnZXJP
ZkV4Y2VwdGlvblRvQmVUaHJvd24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgRXhjZXB0aW9uKiBleGNlcHRpb24pCiB7CisgICAgQVNT
RVJUKCF2bS5pc1Rlcm1pbmF0aW9uRXhjZXB0aW9uKGV4Y2VwdGlvbikpOworCiAgICAgRGVidWdn
ZXIqIGRlYnVnZ2VyID0gZ2xvYmFsT2JqZWN0LT5kZWJ1Z2dlcigpOwogICAgIGlmIChkZWJ1Z2dl
ciAmJiBkZWJ1Z2dlci0+bmVlZHNFeGNlcHRpb25DYWxsYmFja3MoKSAmJiAhZXhjZXB0aW9uLT5k
aWROb3RpZnlJbnNwZWN0b3JPZlRocm93KCkpIHsKICAgICAgICAgLy8gVGhpcyBjb2RlIGFzc3Vt
ZXMgdGhhdCBpZiB0aGUgZGVidWdnZXIgaXMgZW5hYmxlZCB0aGVuIHRoZXJlIGlzIG5vIGlubGlu
aW5nLgpAQCAtNjI3LDE3ICs2MjksMTEgQEAgdm9pZCBJbnRlcnByZXRlcjo6bm90aWZ5RGVidWdn
ZXJPZkV4Y2VwdAogICAgICAgICAvLyBmcmFtZXMuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjE3NTQKIAotICAgICAgICBib29sIGhhc0NhdGNo
SGFuZGxlcjsKLSAgICAgICAgYm9vbCBpc1Rlcm1pbmF0aW9uID0gaXNUZXJtaW5hdGVkRXhlY3V0
aW9uRXhjZXB0aW9uKHZtLCBleGNlcHRpb24pOwotICAgICAgICBpZiAoaXNUZXJtaW5hdGlvbikK
LSAgICAgICAgICAgIGhhc0NhdGNoSGFuZGxlciA9IGZhbHNlOwotICAgICAgICBlbHNlIHsKLSAg
ICAgICAgICAgIEdldENhdGNoSGFuZGxlckZ1bmN0b3IgZnVuY3RvcjsKLSAgICAgICAgICAgIFN0
YWNrVmlzaXRvcjo6dmlzaXQoY2FsbEZyYW1lLCB2bSwgZnVuY3Rvcik7Ci0gICAgICAgICAgICBI
YW5kbGVySW5mbyogaGFuZGxlciA9IGZ1bmN0b3IuaGFuZGxlcigpOwotICAgICAgICAgICAgQVNT
RVJUKCFoYW5kbGVyIHx8IGhhbmRsZXItPmlzQ2F0Y2hIYW5kbGVyKCkpOwotICAgICAgICAgICAg
aGFzQ2F0Y2hIYW5kbGVyID0gISFoYW5kbGVyOwotICAgICAgICB9CisgICAgICAgIEdldENhdGNo
SGFuZGxlckZ1bmN0b3IgZnVuY3RvcjsKKyAgICAgICAgU3RhY2tWaXNpdG9yOjp2aXNpdChjYWxs
RnJhbWUsIHZtLCBmdW5jdG9yKTsKKyAgICAgICAgSGFuZGxlckluZm8qIGhhbmRsZXIgPSBmdW5j
dG9yLmhhbmRsZXIoKTsKKyAgICAgICAgQVNTRVJUKCFoYW5kbGVyIHx8IGhhbmRsZXItPmlzQ2F0
Y2hIYW5kbGVyKCkpOworICAgICAgICBib29sIGhhc0NhdGNoSGFuZGxlciA9ICEhaGFuZGxlcjsK
IAogICAgICAgICBkZWJ1Z2dlci0+ZXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBl
eGNlcHRpb24tPnZhbHVlKCksIGhhc0NhdGNoSGFuZGxlcik7CiAgICAgfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAyNzU2MTEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNTE5LDcgKzM1MTksNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uQ2hlY2tJCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgIFJFTEVBU0VfQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkpOwogCi0gICAgaWYgKGlzVGVy
bWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbih2bSwgc2NvcGUuZXhjZXB0aW9uKCkpKSB7CisgICAg
aWYgKHZtLmlzVGVybWluYXRpb25FeGNlcHRpb24oc2NvcGUuZXhjZXB0aW9uKCkpKSB7CiAgICAg
ICAgIGdlbmVyaWNVbndpbmQodm0sIGNhbGxGcmFtZSk7CiAgICAgICAgIHJldHVybiAxOwogICAg
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhz
LmNwcAkocmV2aXNpb24gMjc1NjExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50U2xvd1BhdGhzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIxODgsNyArMjE4OCw3IEBAIExM
SU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jaGVja19pZl8KICAgICBVTlVTRURfUEFSQU0o
Z2xvYmFsT2JqZWN0KTsKICAgICBSRUxFQVNFX0FTU0VSVCghIXRocm93U2NvcGUuZXhjZXB0aW9u
KCkpOwogCi0gICAgaWYgKGlzVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbih2bSwgdGhyb3dT
Y29wZS5leGNlcHRpb24oKSkpCisgICAgaWYgKHZtLmlzVGVybWluYXRpb25FeGNlcHRpb24odGhy
b3dTY29wZS5leGNlcHRpb24oKSkpCiAgICAgICAgIExMSU5UX1JFVFVSTl9UV08ocGMsIGJpdHdp
c2VfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PigxKSkpOwogICAgIExMSU5UX1JF
VFVSTl9UV08ocGMsIG51bGxwdHIpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAJKHJldmlzaW9uIDI3NTYxMSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOSwzMCArMzksNiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotU1RBVElD
X0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKFRlcm1pbmF0ZWRFeGVjdXRpb25FcnJv
cik7Ci0KLWNvbnN0IENsYXNzSW5mbyBUZXJtaW5hdGVkRXhlY3V0aW9uRXJyb3I6OnNfaW5mbyA9
IHsgIlRlcm1pbmF0ZWRFeGVjdXRpb25FcnJvciIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51
bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoVGVybWluYXRlZEV4ZWN1dGlvbkVycm9yKSB9Owot
Ci1KU1ZhbHVlIFRlcm1pbmF0ZWRFeGVjdXRpb25FcnJvcjo6ZGVmYXVsdFZhbHVlKGNvbnN0IEpT
T2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJlZmVycmVkUHJpbWl0aXZl
VHlwZSBoaW50KQotewotICAgIGlmIChoaW50ID09IFByZWZlclN0cmluZykKLSAgICAgICAgcmV0
dXJuIGpzTm9udHJpdmlhbFN0cmluZyhnbG9iYWxPYmplY3QtPnZtKCksIFN0cmluZygiSmF2YVNj
cmlwdCBleGVjdXRpb24gdGVybWluYXRlZC4iX3MpKTsKLSAgICByZXR1cm4gSlNWYWx1ZShQTmFO
KTsKLX0KLQotSlNPYmplY3QqIGNyZWF0ZVRlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oVk0q
IHZtKQotewotICAgIHJldHVybiBUZXJtaW5hdGVkRXhlY3V0aW9uRXJyb3I6OmNyZWF0ZSgqdm0p
OwotfQotCi1ib29sIGlzVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihWTSYgdm0sIEV4Y2Vw
dGlvbiogZXhjZXB0aW9uKQotewotICAgIGlmICghZXhjZXB0aW9uLT52YWx1ZSgpLmlzT2JqZWN0
KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBleGNlcHRpb24tPnZhbHVl
KCkuaW5oZXJpdHM8VGVybWluYXRlZEV4ZWN1dGlvbkVycm9yPih2bSk7Ci19Ci0KIEpTT2JqZWN0
KiBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
IHsKICAgICBhdXRvKiBlcnJvciA9IGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiTWF4
aW11bSBjYWxsIHN0YWNrIHNpemUgZXhjZWVkZWQuIl9zKTsKQEAgLTM4NSwxMSArMzYxLDQgQEAg
RXhjZXB0aW9uKiB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihKU0dsbwogICAgIHJldHVybiB0aHJv
d0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVTdGFja092ZXJmbG93RXJyb3Io
Z2xvYmFsT2JqZWN0KSk7CiB9CiAKLUV4Y2VwdGlvbiogdGhyb3dUZXJtaW5hdGVkRXhlY3V0aW9u
RXhjZXB0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRocm93U2NvcGUmIHNjb3Bl
KQotewotICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKLSAgICBFcnJvckhhbmRsaW5n
U2NvcGUgZXJyb3JTY29wZSh2bSk7Ci0gICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKGdsb2JhbE9i
amVjdCwgc2NvcGUsIGNyZWF0ZVRlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oJnZtKSk7Ci19
Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXhjZXB0aW9uSGVscGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaAkocmV2aXNpb24gMjc1NjExKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMzksOCArMzksNiBAQCB0eXBlZGVmIEpTT2JqZWN0KiAoKkVycm9yRmFjdG9yeSkoSlNH
bG9iCiAKIFN0cmluZyBkZWZhdWx0U291cmNlQXBwZW5kZXIoY29uc3QgU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJiwgUnVudGltZVR5cGUsIEVycm9ySW5zdGFuY2U6OlNvdXJjZVRleHRXaGVyZUVycm9y
T2NjdXJyZWQpOwogCi1KU09iamVjdCogY3JlYXRlVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlv
bihWTSopOwotSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNl
cHRpb24oVk0mLCBFeGNlcHRpb24qKTsKIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiBjcmVh
dGVFcnJvcihKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUsIGNvbnN0IFN0cmluZyYsIEVycm9ySW5z
dGFuY2U6OlNvdXJjZUFwcGVuZGVyKTsKIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiBjcmVh
dGVTdGFja092ZXJmbG93RXJyb3IoSlNHbG9iYWxPYmplY3QqKTsKIEpTT2JqZWN0KiBjcmVhdGVV
bmRlZmluZWRWYXJpYWJsZUVycm9yKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgSWRlbnRpZmllciYp
OwpAQCAtNjEsNDMgKzU5LDUgQEAgU3RyaW5nIGVycm9yRGVzY3JpcHRpb25Gb3JWYWx1ZShKU0ds
b2JhbAogSlNfRVhQT1JUX1BSSVZBVEUgRXhjZXB0aW9uKiB0aHJvd091dE9mTWVtb3J5RXJyb3Io
SlNHbG9iYWxPYmplY3QqLCBUaHJvd1Njb3BlJik7CiBKU19FWFBPUlRfUFJJVkFURSBFeGNlcHRp
b24qIHRocm93T3V0T2ZNZW1vcnlFcnJvcihKU0dsb2JhbE9iamVjdCosIFRocm93U2NvcGUmLCBj
b25zdCBTdHJpbmcmKTsKIEpTX0VYUE9SVF9QUklWQVRFIEV4Y2VwdGlvbiogdGhyb3dTdGFja092
ZXJmbG93RXJyb3IoSlNHbG9iYWxPYmplY3QqLCBUaHJvd1Njb3BlJik7Ci1KU19FWFBPUlRfUFJJ
VkFURSBFeGNlcHRpb24qIHRocm93VGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihKU0dsb2Jh
bE9iamVjdCosIFRocm93U2NvcGUmKTsKLQotCi1jbGFzcyBUZXJtaW5hdGVkRXhlY3V0aW9uRXJy
b3IgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7Ci1wdWJsaWM6Ci0gICAgdXNpbmcg
QmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBT
dHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgU3RydWN0dXJlSXNJbW1vcnRh
bDsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KLSAg
ICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKLSAgICB7Ci0gICAgICAg
IFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFRlcm1pbmF0ZWRFeGVjdXRpb25F
cnJvciwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKLSAgICB9
Ci0KLSAgICBzdGF0aWMgVGVybWluYXRlZEV4ZWN1dGlvbkVycm9yKiBjcmVhdGUoVk0mIHZtKQot
ICAgIHsKLSAgICAgICAgVGVybWluYXRlZEV4ZWN1dGlvbkVycm9yKiBlcnJvciA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPFRlcm1pbmF0ZWRFeGVjdXRpb25FcnJvcj4odm0uaGVhcCkpIFRl
cm1pbmF0ZWRFeGVjdXRpb25FcnJvcih2bSk7Ci0gICAgICAgIGVycm9yLT5maW5pc2hDcmVhdGlv
bih2bSk7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9Ci0KLSAgICBzdGF0aWMgU3RydWN0
dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlIHByb3RvdHlwZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0
cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKLSAgICB9Ci0KLSAgICBERUNMQVJFX0VYUE9SVF9JTkZP
OwotCi1wcml2YXRlOgotICAgIGV4cGxpY2l0IFRlcm1pbmF0ZWRFeGVjdXRpb25FcnJvcihWTSYg
dm0pCi0gICAgICAgIDogSlNOb25GaW5hbE9iamVjdCh2bSwgdm0udGVybWluYXRlZEV4ZWN1dGlv
bkVycm9yU3RydWN0dXJlLmdldCgpKQotICAgIHsKLSAgICB9Ci0KLSAgICBzdGF0aWMgSlNWYWx1
ZSBkZWZhdWx0VmFsdWUoY29uc3QgSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByZWZlcnJl
ZFByaW1pdGl2ZVR5cGUpOwotCi19OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkocmV2aXNpb24gMjc1NjExKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkod29ya2luZyBjb3B5KQpA
QCAtNzMsNyArNzMsNiBAQCBjbGFzcyBUaHJvd1Njb3BlOwogc3RydWN0IEhhc2hUYWJsZTsKIHN0
cnVjdCBIYXNoVGFibGVWYWx1ZTsKIAotSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc1Rlcm1pbmF0
ZWRFeGVjdXRpb25FeGNlcHRpb24oVk0mLCBFeGNlcHRpb24qKTsKIEpTX0VYUE9SVF9QUklWQVRF
IEV4Y2VwdGlvbiogdGhyb3dUeXBlRXJyb3IoSlNHbG9iYWxPYmplY3QqLCBUaHJvd1Njb3BlJiwg
Y29uc3QgU3RyaW5nJik7CiBleHRlcm4gSlNfRVhQT1JUX1BSSVZBVEUgY29uc3QgQVNDSUlMaXRl
cmFsIE5vbkV4dGVuc2libGVPYmplY3RQcm9wZXJ0eURlZmluZUVycm9yOwogZXh0ZXJuIEpTX0VY
UE9SVF9QUklWQVRFIGNvbnN0IEFTQ0lJTGl0ZXJhbCBSZWFkb25seVByb3BlcnR5V3JpdGVFcnJv
cjsKQEAgLTE0OTcsNyArMTQ5Niw3IEBAIGlubGluZSBKU1ZhbHVlIEpTT2JqZWN0OjpnZXQoSlNH
bG9iYWxPYmoKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzLCBQcm9wZXJ0eVNsb3Q6OkludGVy
bmFsTWV0aG9kVHlwZTo6R2V0KTsKICAgICBib29sIGhhc1Byb3BlcnR5ID0gY29uc3RfY2FzdDxK
U09iamVjdCo+KHRoaXMpLT5nZXRQcm9wZXJ0eVNsb3QoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIHNsb3QpOwogCi0gICAgRVhDRVBUSU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0aW9uKCkgfHwg
aXNUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKHZtLCBzY29wZS5leGNlcHRpb24oKSkgfHwg
IWhhc1Byb3BlcnR5KTsKKyAgICBFWENFUFRJT05fQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSB8
fCB2bS5pc1Rlcm1pbmF0aW9uRXhjZXB0aW9uKHNjb3BlLmV4Y2VwdGlvbigpKSB8fCAhaGFzUHJv
cGVydHkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGpzVW5kZWZpbmVkKCkpOwog
CiAgICAgaWYgKGhhc1Byb3BlcnR5KQpAQCAtMTUxMyw3ICsxNTEyLDcgQEAgaW5saW5lIEpTVmFs
dWUgSlNPYmplY3Q6OmdldChKU0dsb2JhbE9iagogICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXMs
IFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXQpOwogICAgIGJvb2wgaGFzUHJv
cGVydHkgPSBjb25zdF9jYXN0PEpTT2JqZWN0Kj4odGhpcyktPmdldFByb3BlcnR5U2xvdChnbG9i
YWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAKLSAgICBFWENFUFRJT05fQVNTRVJUKCFz
Y29wZS5leGNlcHRpb24oKSB8fCBpc1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24odm0sIHNj
b3BlLmV4Y2VwdGlvbigpKSB8fCAhaGFzUHJvcGVydHkpOworICAgIEVYQ0VQVElPTl9BU1NFUlQo
IXNjb3BlLmV4Y2VwdGlvbigpIHx8IHZtLmlzVGVybWluYXRpb25FeGNlcHRpb24oc2NvcGUuZXhj
ZXB0aW9uKCkpIHx8ICFoYXNQcm9wZXJ0eSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwganNVbmRlZmluZWQoKSk7CiAKICAgICBpZiAoaGFzUHJvcGVydHkpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZS5jcHAJKHJldmlzaW9uIDI3NTYxMSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTIyOCw3ICsyMjgsNyBAQCBKU1Byb21pc2UqIEpTUHJvbWlzZTo6cmVqZWN0V2l0
aENhdWdodEV4CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEV4Y2VwdGlv
biogZXhjZXB0aW9uID0gc2NvcGUuZXhjZXB0aW9uKCk7CiAgICAgQVNTRVJUKGV4Y2VwdGlvbik7
Ci0gICAgaWYgKFVOTElLRUxZKGlzVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbih2bSwgZXhj
ZXB0aW9uKSkpIHsKKyAgICBpZiAoVU5MSUtFTFkodm0uaXNUZXJtaW5hdGlvbkV4Y2VwdGlvbihl
eGNlcHRpb24pKSkgewogICAgICAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgICAgIHJldHVybiB0
aGlzOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAJKHJldmlz
aW9uIDI3NTYxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDMyLDcgKzQzMiw2IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFw
VHlwZSBoZWFwVHlwZSwKICAgICBzbWFsbFN0cmluZ3MuaW5pdGlhbGl6ZUNvbW1vblN0cmluZ3Mo
KnRoaXMpOwogCiAgICAgcHJvcGVydHlOYW1lcyA9IG5ldyBDb21tb25JZGVudGlmaWVycygqdGhp
cyk7Ci0gICAgdGVybWluYXRlZEV4ZWN1dGlvbkVycm9yU3RydWN0dXJlLnNldCgqdGhpcywgVGVy
bWluYXRlZEV4ZWN1dGlvbkVycm9yOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIG51bGxwdHIsIGpz
TnVsbCgpKSk7CiAgICAgcHJvcGVydHlOYW1lRW51bWVyYXRvclN0cnVjdHVyZS5zZXQoKnRoaXMs
IEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCBudWxscHRy
LCBqc051bGwoKSkpOwogICAgIGdldHRlclNldHRlclN0cnVjdHVyZS5zZXQoKnRoaXMsIEdldHRl
clNldHRlcjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCBudWxscHRyLCBqc051bGwoKSkpOwogICAg
IGN1c3RvbUdldHRlclNldHRlclN0cnVjdHVyZS5zZXQoKnRoaXMsIEN1c3RvbUdldHRlclNldHRl
cjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCBudWxscHRyLCBqc051bGwoKSkpOwpAQCAtNzQxLDgg
Kzc0MCwxMCBAQCBWTSomIFZNOjpzaGFyZWRJbnN0YW5jZUludGVybmFsKCkKIAogV2F0Y2hkb2cm
IFZNOjplbnN1cmVXYXRjaGRvZygpCiB7Ci0gICAgaWYgKCFtX3dhdGNoZG9nKQorICAgIGlmICgh
bV93YXRjaGRvZykgewogICAgICAgICBtX3dhdGNoZG9nID0gYWRvcHRSZWYobmV3IFdhdGNoZG9n
KHRoaXMpKTsKKyAgICAgICAgZW5zdXJlVGVybWluYXRpb25FeGNlcHRpb24oKTsKKyAgICB9CiAg
ICAgcmV0dXJuICptX3dhdGNoZG9nOwogfQogCkBAIC03NjIsNiArNzYzLDE3IEBAIFNhbXBsaW5n
UHJvZmlsZXImIFZNOjplbnN1cmVTYW1wbGluZ1Byb2YKIH0KICNlbmRpZiAvLyBFTkFCTEUoU0FN
UExJTkdfUFJPRklMRVIpCiAKK3N0YXRpYyBTeW1ib2xJbXBsOjpTdGF0aWNTeW1ib2xJbXBsIHRl
cm1pbmF0aW9uRXJyb3JTeW1ib2wgeyAiVGVybWluYXRpb25FcnJvciIsIFN5bWJvbEltcGw6OnNf
ZmxhZ0lzUHJpdmF0ZSB9OworCitFeGNlcHRpb24qIFZNOjplbnN1cmVUZXJtaW5hdGlvbkV4Y2Vw
dGlvbigpCit7CisgICAgaWYgKCFtX3Rlcm1pbmF0aW9uRXhjZXB0aW9uKSB7CisgICAgICAgIFN5
bWJvbCogdGVybWluYXRpb25FcnJvciA9IFN5bWJvbDo6Y3JlYXRlKCp0aGlzLCB0ZXJtaW5hdGlv
bkVycm9yU3ltYm9sKTsKKyAgICAgICAgbV90ZXJtaW5hdGlvbkV4Y2VwdGlvbiA9IEV4Y2VwdGlv
bjo6Y3JlYXRlKCp0aGlzLCB0ZXJtaW5hdGlvbkVycm9yLCBFeGNlcHRpb246OkRvTm90Q2FwdHVy
ZVN0YWNrKTsKKyAgICB9CisgICAgcmV0dXJuIG1fdGVybWluYXRpb25FeGNlcHRpb247Cit9CisK
ICNpZiBFTkFCTEUoSklUKQogc3RhdGljIFRodW5rR2VuZXJhdG9yIHRodW5rR2VuZXJhdG9yRm9y
SW50cmluc2ljKEludHJpbnNpYyBpbnRyaW5zaWMpCiB7CkBAIC05NDYsOCArOTU4LDI1IEBAIHZv
aWQgVk06OmNsZWFyU291cmNlUHJvdmlkZXJDYWNoZXMoKQogICAgIHNvdXJjZVByb3ZpZGVyQ2Fj
aGVNYXAuY2xlYXIoKTsKIH0KIAotRXhjZXB0aW9uKiBWTTo6dGhyb3dFeGNlcHRpb24oSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRXhjZXB0aW9uKiBleGNlcHRpb24pCit2b2lkIFZNOjp0
aHJvd1Rlcm1pbmF0aW9uRXhjZXB0aW9uKCkKIHsKKyAgICBzZXRFeGNlcHRpb24odGVybWluYXRp
b25FeGNlcHRpb24oKSk7Cit9CisKK0V4Y2VwdGlvbiogVk06OnRocm93RXhjZXB0aW9uKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEV4Y2VwdGlvbiogZXhjZXB0aW9uVG9UaHJvdykKK3sK
KyAgICAvLyBUaGUgVGVybWluYXRpb25FeGNlcHRpb24gaXMgbm90IGxpa2Ugb3JkaW5hcnkgZXhj
ZXB0aW9ucyB0aGF0IHNob3VsZCBiZQorICAgIC8vIHJlcG9ydGVkIHRvIHRoZSBkZWJ1Z2dlci4g
VGhlIGZhY3QgdGhhdCB0aGUgVGVybWluYXRpb25FeGNlcHRpb24gdXNlcyB0aGUKKyAgICAvLyBl
eGNlcHRpb24gaGFuZGxpbmcgbWVjaGFuaXNtIGlzIGp1c3QgYSBWTSBpbnRlcm5hbCBpbXBsZW1l
bnRhdGlvbiBkZXRhaWwuCisgICAgLy8gSXQgaXMgbm90IG1lYW5pbmdmdWwgdG8gcmVwb3J0IGl0
IHRvIHRoZSBkZWJ1Z2dlciBhcyBhbiBleGNlcHRpb24uCisgICAgaWYgKGlzVGVybWluYXRpb25F
eGNlcHRpb24oZXhjZXB0aW9uVG9UaHJvdykpIHsKKyAgICAgICAgLy8gTm90ZTogd2UgY2FuIG9u
bHkgZ2V0IGhlcmUgaXMgd2UncmUganVzdCByZS10aHJvd2luZyB0aGUgVGVybWluYXRpb25FeGNl
cHRpb24KKyAgICAgICAgLy8gZnJvbSBDKysgZnVuY3Rpb25zIHRvIHByb3BhZ2F0ZSBpdC4gSWYg
d2UncmUgdGhyb3dpbmcgaXQgZm9yIHRoZSBmaXJzdAorICAgICAgICAvLyB0aW1lLCB3ZSB3b3Vs
ZCBoYXZlIGdvbmUgdGhyb3VnaCBWTTo6dGhyb3dUZXJtaW5hdGlvbkV4Y2VwdGlvbigpLgorICAg
ICAgICBzZXRFeGNlcHRpb24oZXhjZXB0aW9uVG9UaHJvdyk7CisgICAgICAgIHJldHVybiBleGNl
cHRpb25Ub1Rocm93OworICAgIH0KKwogICAgIENhbGxGcmFtZSogdGhyb3dPcmlnaW5GcmFtZSA9
IHRvcEpTQ2FsbEZyYW1lKCk7CiAgICAgaWYgKCF0aHJvd09yaWdpbkZyYW1lKQogICAgICAgICB0
aHJvd09yaWdpbkZyYW1lID0gZ2xvYmFsT2JqZWN0LT5kZXByZWNhdGVkQ2FsbEZyYW1lRm9yRGVi
dWdnZXIoKTsKQEAgLTk1OCwxNSArOTg3LDE1IEBAIEV4Y2VwdGlvbiogVk06OnRocm93RXhjZXB0
aW9uKEpTR2xvYmFsT2IKICAgICAgICAgQ1JBU0goKTsKICAgICB9CiAKLSAgICBpbnRlcnByZXRl
ci0+bm90aWZ5RGVidWdnZXJPZkV4Y2VwdGlvblRvQmVUaHJvd24oKnRoaXMsIGdsb2JhbE9iamVj
dCwgdGhyb3dPcmlnaW5GcmFtZSwgZXhjZXB0aW9uKTsKKyAgICBpbnRlcnByZXRlci0+bm90aWZ5
RGVidWdnZXJPZkV4Y2VwdGlvblRvQmVUaHJvd24oKnRoaXMsIGdsb2JhbE9iamVjdCwgdGhyb3dP
cmlnaW5GcmFtZSwgZXhjZXB0aW9uVG9UaHJvdyk7CiAKLSAgICBzZXRFeGNlcHRpb24oZXhjZXB0
aW9uKTsKKyAgICBzZXRFeGNlcHRpb24oZXhjZXB0aW9uVG9UaHJvdyk7CiAKICNpZiBFTkFCTEUo
RVhDRVBUSU9OX1NDT1BFX1ZFUklGSUNBVElPTikKICAgICBtX25hdGl2ZVN0YWNrVHJhY2VPZkxh
c3RUaHJvdyA9IFN0YWNrVHJhY2U6OmNhcHR1cmVTdGFja1RyYWNlKE9wdGlvbnM6OnVuZXhwZWN0
ZWRFeGNlcHRpb25TdGFja1RyYWNlTGltaXQoKSk7CiAgICAgbV90aHJvd2luZ1RocmVhZCA9ICZU
aHJlYWQ6OmN1cnJlbnQoKTsKICNlbmRpZgotICAgIHJldHVybiBleGNlcHRpb247CisgICAgcmV0
dXJuIGV4Y2VwdGlvblRvVGhyb3c7CiB9CiAKIEV4Y2VwdGlvbiogVk06OnRocm93RXhjZXB0aW9u
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdGhyb3duVmFsdWUpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHJldmlzaW9uIDI3NTYxMSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzOCw2ICsz
MzgsMjAgQEAgcHVibGljOgogICAgIFdlYWtSYW5kb20mIHJhbmRvbSgpIHsgcmV0dXJuIG1fcmFu
ZG9tOyB9CiAgICAgSW50ZWdyaXR5OjpSYW5kb20mIGludGVncml0eVJhbmRvbSgpIHsgcmV0dXJu
IG1faW50ZWdyaXR5UmFuZG9tOyB9CiAKKyAgICBKU19FWFBPUlRfUFJJVkFURSBFeGNlcHRpb24q
IGVuc3VyZVRlcm1pbmF0aW9uRXhjZXB0aW9uKCk7CisgICAgRXhjZXB0aW9uKiB0ZXJtaW5hdGlv
bkV4Y2VwdGlvbigpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQobV90ZXJtaW5hdGlvbkV4
Y2VwdGlvbik7CisgICAgICAgIHJldHVybiBtX3Rlcm1pbmF0aW9uRXhjZXB0aW9uOworICAgIH0K
KyAgICBib29sIGlzVGVybWluYXRpb25FeGNlcHRpb24oRXhjZXB0aW9uKiBleGNlcHRpb24pIGNv
bnN0CisgICAgeworICAgICAgICBBU1NFUlQoZXhjZXB0aW9uKTsKKyAgICAgICAgcmV0dXJuIGV4
Y2VwdGlvbiA9PSBtX3Rlcm1pbmF0aW9uRXhjZXB0aW9uOworICAgIH0KKworICAgIHZvaWQgdGhy
b3dUZXJtaW5hdGlvbkV4Y2VwdGlvbigpOworCiBwcml2YXRlOgogICAgIHVuc2lnbmVkIG5leHRJ
RCgpOwogCkBAIC02NjQsNyArNjc4LDYgQEAgcHVibGljOgogI2VuZGlmCiAgICAgU3Ryb25nPFN0
cnVjdHVyZT4gc3RydWN0dXJlU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHN0cnVj
dHVyZVJhcmVEYXRhU3RydWN0dXJlOwotICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHRlcm1pbmF0ZWRF
eGVjdXRpb25FcnJvclN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBzdHJpbmdTdHJ1
Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gcHJvcGVydHlOYW1lRW51bWVyYXRvclN0cnVj
dHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBnZXR0ZXJTZXR0ZXJTdHJ1Y3R1cmU7CkBAIC0x
MDc4LDYgKzEwOTEsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBuZWVkVHJhcEhhbmRsaW5nKFZNVHJh
cHM6Ok1hc2sgbWFzaykgeyByZXR1cm4gbV90cmFwcy5uZWVkVHJhcEhhbmRsaW5nKG1hc2spOyB9
CiAgICAgdm9pZCogbmVlZFRyYXBIYW5kbGluZ0FkZHJlc3MoKSB7IHJldHVybiBtX3RyYXBzLm5l
ZWRUcmFwSGFuZGxpbmdBZGRyZXNzKCk7IH0KIAorICAgIC8vIFRoZXNlIG1heSBiZSBjYWxsZWQg
Y29uY3VycmVudGx5IGZyb20gYW5vdGhlciB0aHJlYWQuCiAgICAgdm9pZCBub3RpZnlOZWVkRGVi
dWdnZXJCcmVhaygpIHsgbV90cmFwcy5maXJlVHJhcChWTVRyYXBzOjpOZWVkRGVidWdnZXJCcmVh
ayk7IH0KICAgICB2b2lkIG5vdGlmeU5lZWRTaGVsbFRpbWVvdXRDaGVjaygpIHsgbV90cmFwcy5m
aXJlVHJhcChWTVRyYXBzOjpOZWVkU2hlbGxUaW1lb3V0Q2hlY2spOyB9CiAgICAgdm9pZCBub3Rp
ZnlOZWVkVGVybWluYXRpb24oKSB7IG1fdHJhcHMuZmlyZVRyYXAoVk1UcmFwczo6TmVlZFRlcm1p
bmF0aW9uKTsgfQpAQCAtMTE4Niw2ICsxMjAwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkKiBtX2xh
c3RTdGFja1RvcCB7IG51bGxwdHIgfTsKIAogICAgIEV4Y2VwdGlvbiogbV9leGNlcHRpb24geyBu
dWxscHRyIH07CisgICAgRXhjZXB0aW9uKiBtX3Rlcm1pbmF0aW9uRXhjZXB0aW9uIHsgbnVsbHB0
ciB9OwogICAgIEV4Y2VwdGlvbiogbV9sYXN0RXhjZXB0aW9uIHsgbnVsbHB0ciB9OwogI2lmIEVO
QUJMRShFWENFUFRJT05fU0NPUEVfVkVSSUZJQ0FUSU9OKQogICAgIEV4Y2VwdGlvblNjb3BlKiBt
X3RvcEV4Y2VwdGlvblNjb3BlIHsgbnVsbHB0ciB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk1UcmFwcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk1UcmFwcy5jcHAJKHJldmlzaW9uIDI3NTYxMSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNVHJhcHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgwLDcg
KzM4MCw3IEBAIHZvaWQgVk1UcmFwczo6aGFuZGxlVHJhcHMoSlNHbG9iYWxPYmplY3QKICAgICAg
ICAgICAgIEZBTExUSFJPVUdIOwogCiAgICAgICAgIGNhc2UgTmVlZFRlcm1pbmF0aW9uOgotICAg
ICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlVGVybWlu
YXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbigmdm0pKTsKKyAgICAgICAgICAgIHZtLnRocm93VGVybWlu
YXRpb25FeGNlcHRpb24oKTsKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBkZWZhdWx0
OgpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjc1NjExKQorKysgU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzggQEAKKzIwMjEtMDQtMDcgIE1hcmsg
TGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIFJlbmFtZSBhbmQgbWFrZSB0aGUg
VGVybWluYXRpb25FeGNlcHRpb24gYSBzaW5nbGV0b24uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQyOTUKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbiB0aGUgV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29u
dHJvbGxlciBjb25zdHJ1Y3Rvciwgd2UgZW5zdXJlIHRoZSBUZXJtaW5hdGlvbkV4Y2VwdGlvbgor
ICAgICAgICBiZWNhdXNlIHdvcmtlcnMgbmVlZCB0byBzdXBwb3J0IHRlcm1pbmF0aW9uIHJlcXVl
c3RzLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01FeGNlcHRpb25IYW5kbGluZy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpyZXBvcnRFeGNlcHRpb24pOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTik6CisgICAgICAgIChXZWJDb3JlOjpoYW5kbGVSZXNwb25zZU9uU3RyZWFt
aW5nQWN0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RE9NUHJvbWlzZTo6d2hlblByb21pc2VJc1NldHRsZWQpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZURlZmVycmVkLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRlZmVycmVkUHJvbWlzZTo6cmVqZWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2
ZW50TGlzdGVuZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNFdmVudExpc3RlbmVyOjpoYW5k
bGVFdmVudCk6CisgICAgICAgICogYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW0uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6aW52b2tlUmVhZGFibGVTdHJlYW1GdW5jdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpSZWFkYWJsZVN0cmVhbTo6bG9jayk6CisgICAgICAgIChXZWJDb3JlOjpjaGVja1Jl
YWRhYmxlU3RyZWFtKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbURlZmF1
bHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omludm9rZVJlYWRhYmxlU3RyZWFt
RGVmYXVsdENvbnRyb2xsZXJGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZVN0
cmVhbURlZmF1bHRDb250cm9sbGVyOjplcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJs
ZVN0cmVhbURlZmF1bHRDb250cm9sbGVyOjplbnF1ZXVlKToKKyAgICAgICAgKiB3b3JrZXJzL1dv
cmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29y
a2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6V29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJv
bGxlcik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVy
OjpldmFsdWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250
cm9sbGVyOjpsaW5rQW5kRXZhbHVhdGVNb2R1bGUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
T3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6bG9hZEFuZEV2YWx1YXRlTW9kdWxlKToKKwogMjAy
MS0wNC0wNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIERyb3Ag
dW5uZWNlc3NhcnkgTkRFQlVHIGNoZWNrcyBpbiBTZXJ2aWNlV29ya2VyQ29udGFpbmVyCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUV4Y2VwdGlvbkhh
bmRsaW5nLmNwcAkocmV2aXNpb24gMjc1NjExKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01FeGNlcHRpb25IYW5kbGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2
IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAxIEhhcnJpIFBvcnRlbiAocG9ydGVu
QGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA0LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwNC0yMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqICBDb3B5cmlnaHQgKEMpIDIwMDcgU2FtdWVsIFdlaW5pZyA8
c2FtQHdlYmtpdC5vcmc+CiAgKiAgQ29weXJpZ2h0IChDKSAyMDEzIE1pY2hhZWwgUHJ1ZXR0IDxt
aWNoYWVsQDY4ay5vcmc+CiAgKgpAQCAtOTQsNyArOTQsNyBAQCB2b2lkIHJlcG9ydEV4Y2VwdGlv
bihKU0dsb2JhbE9iamVjdCogbGV4CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NP
UEUodm0pOwogCiAgICAgUkVMRUFTRV9BU1NFUlQodm0uY3VycmVudFRocmVhZElzSG9sZGluZ0FQ
SUxvY2soKSk7Ci0gICAgaWYgKGlzVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbih2bSwgZXhj
ZXB0aW9uKSkKKyAgICBpZiAodm0uaXNUZXJtaW5hdGlvbkV4Y2VwdGlvbihleGNlcHRpb24pKQog
ICAgICAgICByZXR1cm47CiAKICAgICBFcnJvckhhbmRsaW5nU2NvcGUgZXJyb3JTY29wZShsZXhp
Y2FsR2xvYmFsT2JqZWN0LT52bSgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NR2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAJKHJldmlzaW9uIDI3NTYxMSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTQxLDcgKzE0MSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihtYWtlRE9NRXhj
ZXB0aW8KICAgICAgICAgY29kZSA9IEFib3J0RXJyb3I7CiAgICAgYXV0byB2YWx1ZSA9IGNyZWF0
ZURPTUV4Y2VwdGlvbihnbG9iYWxPYmplY3QsIGNvZGUsIG1lc3NhZ2UpOwogCi0gICAgRVhDRVBU
SU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0aW9uKCkgfHwgaXNUZXJtaW5hdGVkRXhlY3V0aW9uRXhj
ZXB0aW9uKHZtLCBzY29wZS5leGNlcHRpb24oKSkpOworICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNj
b3BlLmV4Y2VwdGlvbigpIHx8IHZtLmlzVGVybWluYXRpb25FeGNlcHRpb24oc2NvcGUuZXhjZXB0
aW9uKCkpKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodmFsdWUpOwogfQpAQCAtNDEw
LDcgKzQxMCw3IEBAIHN0YXRpYyBKU0M6OkpTUHJvbWlzZSogaGFuZGxlUmVzcG9uc2VPblMKICAg
ICAgICAgICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAg
ICAgICAgICAgICAgYXV0byBlcnJvciA9IGNyZWF0ZURPTUV4Y2VwdGlvbigqZ2xvYmFsT2JqZWN0
LCBXVEZNb3ZlKGV4Y2VwdGlvbikpOwogICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShzY29w
ZS5leGNlcHRpb24oKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGlzVGVybWluYXRl
ZEV4ZWN1dGlvbkV4Y2VwdGlvbih2bSwgc2NvcGUuZXhjZXB0aW9uKCkpKTsKKyAgICAgICAgICAg
ICAgICAgICAgQVNTRVJUKHZtLmlzVGVybWluYXRpb25FeGNlcHRpb24oc2NvcGUuZXhjZXB0aW9u
KCkpKTsKICAgICAgICAgICAgICAgICAgICAgY29tcGlsZXItPmNhbmNlbCgpOwogICAgICAgICAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuY3BwCShyZXZpc2lvbiAyNzU2MTEpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTU3LDcgKzU3LDcgQEAgYXV0byBET01Qcm9taXNlOjp3aGVuUHJvbWlzZUlzU2V0dGxlZChKUwog
ICAgIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJpdmF0ZU5hbWUgPSB2bS5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS50aGVuUHJpdmF0ZU5hbWUoKTsKICAgICBhdXRvIHRoZW5GdW5jdGlv
biA9IHByb21pc2UtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJpdmF0ZU5hbWUpOwogCi0g
ICAgRVhDRVBUSU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0aW9uKCkgfHwgaXNUZXJtaW5hdGVkRXhl
Y3V0aW9uRXhjZXB0aW9uKGxleGljYWxHbG9iYWxPYmplY3Qudm0oKSwgc2NvcGUuZXhjZXB0aW9u
KCkpKTsKKyAgICBFWENFUFRJT05fQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSB8fCB2bS5pc1Rl
cm1pbmF0aW9uRXhjZXB0aW9uKHNjb3BlLmV4Y2VwdGlvbigpKSk7CiAgICAgaWYgKHNjb3BlLmV4
Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSXNDYWxsYmFja1JlZ2lzdGVyZWQ6Ok5vOwogCkBA
IC03MSw3ICs3MSw3IEBAIGF1dG8gRE9NUHJvbWlzZTo6d2hlblByb21pc2VJc1NldHRsZWQoSlMK
ICAgICBBU1NFUlQoY2FsbERhdGEudHlwZSAhPSBKU0M6OkNhbGxEYXRhOjpUeXBlOjpOb25lKTsK
ICAgICBjYWxsKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGVuRnVuY3Rpb24sIGNhbGxEYXRhLCBw
cm9taXNlLCBhcmd1bWVudHMpOwogCi0gICAgRVhDRVBUSU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0
aW9uKCkgfHwgaXNUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKGxleGljYWxHbG9iYWxPYmpl
Y3Qudm0oKSwgc2NvcGUuZXhjZXB0aW9uKCkpKTsKKyAgICBFWENFUFRJT05fQVNTRVJUKCFzY29w
ZS5leGNlcHRpb24oKSB8fCB2bS5pc1Rlcm1pbmF0aW9uRXhjZXB0aW9uKHNjb3BlLmV4Y2VwdGlv
bigpKSk7CiAgICAgcmV0dXJuIHNjb3BlLmV4Y2VwdGlvbigpID8gSXNDYWxsYmFja1JlZ2lzdGVy
ZWQ6Ok5vIDogSXNDYWxsYmFja1JlZ2lzdGVyZWQ6OlllczsKIH0KIApJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlRGVmZXJyZWQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZURlZmVycmVkLmNwcAkocmV2
aXNpb24gMjc1NjExKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNl
RGVmZXJyZWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTI5LDcgKzEyOSw4IEBAIHZvaWQgRGVm
ZXJyZWRQcm9taXNlOjpyZWplY3QoRXhjZXB0aW9uIGUKICAgICBBU1NFUlQoZGVmZXJyZWQoKSk7
CiAgICAgQVNTRVJUKG1fZ2xvYmFsT2JqZWN0KTsKICAgICBhdXRvJiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0ID0gKm1fZ2xvYmFsT2JqZWN0OwotICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcigmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CisgICAgSlNDOjpWTSYgdm0gPSBsZXhpY2FsR2xvYmFsT2JqZWN0
LnZtKCk7CisgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKIAogICAgIGlmIChleGNl
cHRpb24uY29kZSgpID09IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IpIHsKICAgICAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUobGV4aWNhbEdsb2JhbE9iamVjdC52bSgpKTsKQEAg
LTE0MywxMCArMTQ0LDEwIEBAIHZvaWQgRGVmZXJyZWRQcm9taXNlOjpyZWplY3QoRXhjZXB0aW9u
IGUKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKGxleGljYWxHbG9iYWxPYmplY3Qudm0oKSk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGF1dG8gZXJyb3IgPSBjcmVhdGVET01FeGNlcHRp
b24obGV4aWNhbEdsb2JhbE9iamVjdCwgV1RGTW92ZShleGNlcHRpb24pKTsKICAgICBpZiAoVU5M
SUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpKSB7Ci0gICAgICAgIEFTU0VSVChpc1Rlcm1pbmF0ZWRF
eGVjdXRpb25FeGNlcHRpb24obGV4aWNhbEdsb2JhbE9iamVjdC52bSgpLCBzY29wZS5leGNlcHRp
b24oKSkpOworICAgICAgICBBU1NFUlQodm0uaXNUZXJtaW5hdGlvbkV4Y2VwdGlvbihzY29wZS5l
eGNlcHRpb24oKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xNjIsMTAgKzE2Mywx
MSBAQCB2b2lkIERlZmVycmVkUHJvbWlzZTo6cmVqZWN0KEV4Y2VwdGlvbkNvCiAgICAgQVNTRVJU
KGRlZmVycmVkKCkpOwogICAgIEFTU0VSVChtX2dsb2JhbE9iamVjdCk7CiAgICAgYXV0byYgbGV4
aWNhbEdsb2JhbE9iamVjdCA9ICptX2dsb2JhbE9iamVjdDsKLSAgICBKU0M6OkpTTG9ja0hvbGRl
ciBsb2NrZXIoJmxleGljYWxHbG9iYWxPYmplY3QpOworICAgIEpTQzo6Vk0mIHZtID0gbGV4aWNh
bEdsb2JhbE9iamVjdC52bSgpOworICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcih2bSk7CiAK
ICAgICBpZiAoZWMgPT0gRXhpc3RpbmdFeGNlcHRpb25FcnJvcikgewotICAgICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRShsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCkpOworICAg
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CiAKICAgICAgICAgRVhD
RVBUSU9OX0FTU0VSVChzY29wZS5leGNlcHRpb24oKSk7CiAKQEAgLTE3NiwxMCArMTc4LDEwIEBA
IHZvaWQgRGVmZXJyZWRQcm9taXNlOjpyZWplY3QoRXhjZXB0aW9uQ28KICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGxleGljYWxH
bG9iYWxPYmplY3Qudm0oKSk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgIGF1dG8gZXJyb3IgPSBjcmVhdGVET01FeGNlcHRpb24oJmxleGljYWxHbG9iYWxP
YmplY3QsIGVjLCBtZXNzYWdlKTsKICAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkp
KSB7Ci0gICAgICAgIEFTU0VSVChpc1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24obGV4aWNh
bEdsb2JhbE9iamVjdC52bSgpLCBzY29wZS5leGNlcHRpb24oKSkpOworICAgICAgICBBU1NFUlQo
dm0uaXNUZXJtaW5hdGlvbkV4Y2VwdGlvbihzY29wZS5leGNlcHRpb24oKSkpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50
TGlzdGVuZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RXZlbnRMaXN0ZW5lci5jcHAJKHJldmlzaW9uIDI3NTYxMSkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5Myw3ICsx
OTMsNyBAQCB2b2lkIEpTRXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQoU2NyaXB0CiAgICAgYXV0
byBoYW5kbGVFeGNlcHRpb25JZk5lZWRlZCA9IFsmXSAoKSAtPiBib29sIHsKICAgICAgICAgaWYg
KGlzPFdvcmtlckdsb2JhbFNjb3BlPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KSkgewogICAgICAg
ICAgICAgYXV0byYgc2NyaXB0Q29udHJvbGxlciA9ICpkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29w
ZT4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkuc2NyaXB0KCk7Ci0gICAgICAgICAgICBib29sIHRl
cm1pbmF0b3JDYXVzZWRFeGNlcHRpb24gPSAoc2NvcGUuZXhjZXB0aW9uKCkgJiYgaXNUZXJtaW5h
dGVkRXhlY3V0aW9uRXhjZXB0aW9uKHZtLCBzY29wZS5leGNlcHRpb24oKSkpOworICAgICAgICAg
ICAgYm9vbCB0ZXJtaW5hdG9yQ2F1c2VkRXhjZXB0aW9uID0gKHNjb3BlLmV4Y2VwdGlvbigpICYm
IHZtLmlzVGVybWluYXRpb25FeGNlcHRpb24oc2NvcGUuZXhjZXB0aW9uKCkpKTsKICAgICAgICAg
ICAgIGlmICh0ZXJtaW5hdG9yQ2F1c2VkRXhjZXB0aW9uIHx8IHNjcmlwdENvbnRyb2xsZXIuaXNU
ZXJtaW5hdGluZ0V4ZWN1dGlvbigpKQogICAgICAgICAgICAgICAgIHNjcmlwdENvbnRyb2xsZXIu
Zm9yYmlkRXhlY3V0aW9uKCk7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1JlYWRhYmxlU3RyZWFtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbS5jcHAJKHJldmlzaW9uIDI3NTYxMSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTY3LDEyICs2NywxMiBAQCBzdGF0aWMgaW5saW5lIE9wdGlvbmFsPEpTQzo6SlNWYWx1ZT4g
aW52CiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayh2bSk7CiAKICAgICBhdXRvIGZ1bmN0aW9u
ID0gbGV4aWNhbEdsb2JhbE9iamVjdC5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIGlkZW50aWZp
ZXIpOwotICAgIEFTU0VSVChmdW5jdGlvbi5pc0NhbGxhYmxlKGxleGljYWxHbG9iYWxPYmplY3Qu
dm0oKSkpOworICAgIEFTU0VSVChmdW5jdGlvbi5pc0NhbGxhYmxlKHZtKSk7CiAKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CiAgICAgYXV0byBjYWxsRGF0YSA9IEpT
Qzo6Z2V0Q2FsbERhdGEodm0sIGZ1bmN0aW9uKTsKICAgICBhdXRvIHJlc3VsdCA9IGNhbGwoJmxl
eGljYWxHbG9iYWxPYmplY3QsIGZ1bmN0aW9uLCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBhcmd1bWVu
dHMpOwotICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigpIHx8IGlzVGVybWlu
YXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCksIHNjb3BlLmV4
Y2VwdGlvbigpKSk7CisgICAgRVhDRVBUSU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0aW9uKCkgfHwg
dm0uaXNUZXJtaW5hdGlvbkV4Y2VwdGlvbihzY29wZS5leGNlcHRpb24oKSkpOwogICAgIGlmIChz
Y29wZS5leGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICByZXR1cm4gcmVzdWx0
OwpAQCAtMTMxLDcgKzEzMSw3IEBAIHZvaWQgUmVhZGFibGVTdHJlYW06OmxvY2soKQogICAgIEFT
U0VSVCghYXJncy5oYXNPdmVyZmxvd2VkKCkpOwogCiAgICAgSlNDOjpjb25zdHJ1Y3QoJmxleGlj
YWxHbG9iYWxPYmplY3QsIGNvbnN0cnVjdG9yLCBjb25zdHJ1Y3REYXRhLCBhcmdzKTsKLSAgICBF
WENFUFRJT05fQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSB8fCBpc1Rlcm1pbmF0ZWRFeGVjdXRp
b25FeGNlcHRpb24obGV4aWNhbEdsb2JhbE9iamVjdC52bSgpLCBzY29wZS5leGNlcHRpb24oKSkp
OworICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigpIHx8IHZtLmlzVGVybWlu
YXRpb25FeGNlcHRpb24oc2NvcGUuZXhjZXB0aW9uKCkpKTsKIH0KIAogc3RhdGljIGlubGluZSBi
b29sIGNoZWNrUmVhZGFibGVTdHJlYW0oSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwg
SlNSZWFkYWJsZVN0cmVhbSogcmVhZGFibGVTdHJlYW0sIEpTQzo6SlNWYWx1ZSBmdW5jdGlvbikK
QEAgLTE0OSw3ICsxNDksNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgY2hlY2tSZWFkYWJsZVN0cmVh
bShKCiAgICAgQVNTRVJUKGNhbGxEYXRhLnR5cGUgIT0gSlNDOjpDYWxsRGF0YTo6VHlwZTo6Tm9u
ZSk7CiAKICAgICBhdXRvIHJlc3VsdCA9IGNhbGwoJmxleGljYWxHbG9iYWxPYmplY3QsIGZ1bmN0
aW9uLCBjYWxsRGF0YSwgSlNDOjpqc1VuZGVmaW5lZCgpLCBhcmd1bWVudHMpOwotICAgIEVYQ0VQ
VElPTl9BU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigpIHx8IGlzVGVybWluYXRlZEV4ZWN1dGlvbkV4
Y2VwdGlvbihsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCksIHNjb3BlLmV4Y2VwdGlvbigpKSk7Cisg
ICAgRVhDRVBUSU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0aW9uKCkgfHwgdm0uaXNUZXJtaW5hdGlv
bkV4Y2VwdGlvbihzY29wZS5leGNlcHRpb24oKSkpOwogCiAgICAgcmV0dXJuIHJlc3VsdC5pc1Ry
dWUoKSB8fCBzY29wZS5leGNlcHRpb24oKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xs
ZXIuY3BwCShyZXZpc2lvbiAyNzU2MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9S
ZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2
ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQ2Fub24gSW5jLgotICogQ29weXJp
Z2h0IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkLCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTAsNyArNTAsNyBAQCBzdGF0aWMgYm9v
bCBpbnZva2VSZWFkYWJsZVN0cmVhbURlZmF1bHRDCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
Q0FUQ0hfU0NPUEUodm0pOwogICAgIGF1dG8gY2FsbERhdGEgPSBKU0M6OmdldENhbGxEYXRhKHZt
LCBmdW5jdGlvbik7CiAgICAgY2FsbCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgZnVuY3Rpb24sIGNh
bGxEYXRhLCBKU0M6OmpzVW5kZWZpbmVkKCksIGFyZ3VtZW50cyk7Ci0gICAgRVhDRVBUSU9OX0FT
U0VSVCghc2NvcGUuZXhjZXB0aW9uKCkgfHwgaXNUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9u
KGxleGljYWxHbG9iYWxPYmplY3Qudm0oKSwgc2NvcGUuZXhjZXB0aW9uKCkpKTsKKyAgICBFWENF
UFRJT05fQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSB8fCB2bS5pc1Rlcm1pbmF0aW9uRXhjZXB0
aW9uKHNjb3BlLmV4Y2VwdGlvbigpKSk7CiAgICAgcmV0dXJuICFzY29wZS5leGNlcHRpb24oKTsK
IH0KIApAQCAtNzUsNyArNzUsNyBAQCB2b2lkIFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xs
ZXI6OmVyCiAgICAgYXV0byB2YWx1ZSA9IGNyZWF0ZURPTUV4Y2VwdGlvbigmbGV4aWNhbEdsb2Jh
bE9iamVjdCwgZXhjZXB0aW9uLmNvZGUoKSwgZXhjZXB0aW9uLm1lc3NhZ2UoKSk7CiAKICAgICBp
ZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpKSB7Ci0gICAgICAgIEFTU0VSVChpc1Rlcm1p
bmF0ZWRFeGVjdXRpb25FeGNlcHRpb24obGV4aWNhbEdsb2JhbE9iamVjdC52bSgpLCBzY29wZS5l
eGNlcHRpb24oKSkpOworICAgICAgICBBU1NFUlQodm0uaXNUZXJtaW5hdGlvbkV4Y2VwdGlvbihz
Y29wZS5leGNlcHRpb24oKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC04Myw3ICs4
Myw3IEBAIHZvaWQgUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlcjo6ZXIKICAgICBhcmd1
bWVudHMuYXBwZW5kKCZqc0NvbnRyb2xsZXIoKSk7CiAgICAgYXJndW1lbnRzLmFwcGVuZCh2YWx1
ZSk7CiAKLSAgICBhdXRvKiBjbGllbnREYXRhID0gc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEq
PihsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCkuY2xpZW50RGF0YSk7CisgICAgYXV0byogY2xpZW50
RGF0YSA9IHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7CiAgICAg
YXV0byYgcHJpdmF0ZU5hbWUgPSBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkucmVhZGFi
bGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucygpLnJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xs
ZXJFcnJvclByaXZhdGVOYW1lKCk7CiAKICAgICBpbnZva2VSZWFkYWJsZVN0cmVhbURlZmF1bHRD
b250cm9sbGVyRnVuY3Rpb24oZ2xvYmFsT2JqZWN0KCksIHByaXZhdGVOYW1lLCBhcmd1bWVudHMp
OwpAQCAtMTIxLDcgKzEyMSw3IEBAIGJvb2wgUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxl
cjo6ZW4KICAgICBhdXRvIHZhbHVlID0gdG9KUygmbGV4aWNhbEdsb2JhbE9iamVjdCwgJmxleGlj
YWxHbG9iYWxPYmplY3QsIGNodW5rLmdldCgpKTsKIAogICAgIGlmIChVTkxJS0VMWShzY29wZS5l
eGNlcHRpb24oKSkpIHsKLSAgICAgICAgQVNTRVJUKGlzVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2Vw
dGlvbihsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCksIHNjb3BlLmV4Y2VwdGlvbigpKSk7CisgICAg
ICAgIEFTU0VSVCh2bS5pc1Rlcm1pbmF0aW9uRXhjZXB0aW9uKHNjb3BlLmV4Y2VwdGlvbigpKSk7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNw
cAkocmV2aXNpb24gMjc1NjExKQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldv
cmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAyMCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAyMSBBcHBsZSBJbmMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgR29vZ2xlIEluYy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTY3LDYgKzY3LDExIEBAIFdvcmtl
ck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI6Oldvcmtlck8KICAgICAsIG1fZ2xvYmFsU2NvcGVX
cmFwcGVyKCptX3ZtKQogewogICAgIG1fdm0tPmhlYXAuYWNxdWlyZUFjY2VzcygpOyAvLyBJdCdz
IG5vdCBjbGVhciB0aGF0IHdlIGhhdmUgZ29vZCBkaXNjaXBsaW5lIGZvciBoZWFwIGFjY2Vzcywg
c28gdHVybiBpdCBvbiBwZXJtYW5lbnRseS4KKyAgICB7CisgICAgICAgIEpTTG9ja0hvbGRlciBs
b2NrKG1fdm0uZ2V0KCkpOworICAgICAgICBtX3ZtLT5lbnN1cmVUZXJtaW5hdGlvbkV4Y2VwdGlv
bigpOworICAgIH0KKwogICAgIEpTVk1DbGllbnREYXRhOjppbml0Tm9ybWFsV29ybGQobV92bS5n
ZXQoKSwgdHlwZSk7CiB9CiAKQEAgLTIxOCw3ICsyMjMsNyBAQCB2b2lkIFdvcmtlck9yV29ya2xl
dFNjcmlwdENvbnRyb2xsZXI6OmV2CiAKICAgICBKU0V4ZWNTdGF0ZTo6cHJvZmlsZWRFdmFsdWF0
ZSgmZ2xvYmFsT2JqZWN0LCBKU0M6OlByb2ZpbGluZ1JlYXNvbjo6T3RoZXIsIHNvdXJjZUNvZGUu
anNTb3VyY2VDb2RlKCksIG1fZ2xvYmFsU2NvcGVXcmFwcGVyLT5nbG9iYWxUaGlzKCksIHJldHVy
bmVkRXhjZXB0aW9uKTsKIAotICAgIGlmICgocmV0dXJuZWRFeGNlcHRpb24gJiYgaXNUZXJtaW5h
dGVkRXhlY3V0aW9uRXhjZXB0aW9uKHZtLCByZXR1cm5lZEV4Y2VwdGlvbikpIHx8IGlzVGVybWlu
YXRpbmdFeGVjdXRpb24oKSkgeworICAgIGlmICgocmV0dXJuZWRFeGNlcHRpb24gJiYgdm0uaXNU
ZXJtaW5hdGlvbkV4Y2VwdGlvbihyZXR1cm5lZEV4Y2VwdGlvbikpIHx8IGlzVGVybWluYXRpbmdF
eGVjdXRpb24oKSkgewogICAgICAgICBmb3JiaWRFeGVjdXRpb24oKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KQEAgLTM1MSw3ICszNTYsNyBAQCB2b2lkIFdvcmtlck9yV29ya2xldFNjcmlwdENv
bnRyb2xsZXI6OmxpCiAKICAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gcmV0dXJuZWRFeGNl
cHRpb247CiAgICAgSlNFeGVjU3RhdGU6OmxpbmtBbmRFdmFsdWF0ZU1vZHVsZShnbG9iYWxPYmpl
Y3QsIElkZW50aWZpZXI6OmZyb21VaWQodm0sIHNjcmlwdEZldGNoZXIubW9kdWxlS2V5KCkpLCBq
c1VuZGVmaW5lZCgpLCByZXR1cm5lZEV4Y2VwdGlvbik7Ci0gICAgaWYgKChyZXR1cm5lZEV4Y2Vw
dGlvbiAmJiBpc1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24odm0sIHJldHVybmVkRXhjZXB0
aW9uKSkgfHwgaXNUZXJtaW5hdGluZ0V4ZWN1dGlvbigpKSB7CisgICAgaWYgKChyZXR1cm5lZEV4
Y2VwdGlvbiAmJiB2bS5pc1Rlcm1pbmF0aW9uRXhjZXB0aW9uKHJldHVybmVkRXhjZXB0aW9uKSkg
fHwgaXNUZXJtaW5hdGluZ0V4ZWN1dGlvbigpKSB7CiAgICAgICAgIGZvcmJpZEV4ZWN1dGlvbigp
OwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNDA5LDcgKzQxNCw3IEBAIHZvaWQgV29ya2Vy
T3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6bG8KIAogICAgICAgICAgICAgTmFrZWRQdHI8SlND
OjpFeGNlcHRpb24+IHJldHVybmVkRXhjZXB0aW9uOwogICAgICAgICAgICAgSlNFeGVjU3RhdGU6
OmxpbmtBbmRFdmFsdWF0ZU1vZHVsZSgqZ2xvYmFsT2JqZWN0LCBtb2R1bGVLZXksIGpzVW5kZWZp
bmVkKCksIHJldHVybmVkRXhjZXB0aW9uKTsKLSAgICAgICAgICAgIGlmICgocmV0dXJuZWRFeGNl
cHRpb24gJiYgaXNUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKHZtLCByZXR1cm5lZEV4Y2Vw
dGlvbikpIHx8IGNvbnRleHQtPnNjcmlwdCgpLT5pc1Rlcm1pbmF0aW5nRXhlY3V0aW9uKCkpIHsK
KyAgICAgICAgICAgIGlmICgocmV0dXJuZWRFeGNlcHRpb24gJiYgdm0uaXNUZXJtaW5hdGlvbkV4
Y2VwdGlvbihyZXR1cm5lZEV4Y2VwdGlvbikpIHx8IGNvbnRleHQtPnNjcmlwdCgpLT5pc1Rlcm1p
bmF0aW5nRXhlY3V0aW9uKCkpIHsKICAgICAgICAgICAgICAgICBpZiAoY29udGV4dC0+c2NyaXB0
KCkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnNjcmlwdCgpLT5mb3JiaWRFeGVjdXRp
b24oKTsKICAgICAgICAgICAgICAgICB0YXNrLT5ydW4oV1RGOjpudWxsb3B0KTsK
</data>
<flag name="commit-queue"
          id="445387"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425429</attachid>
            <date>2021-04-07 12:52:40 -0700</date>
            <delta_ts>2021-04-07 17:30:23 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-224295.patch</filename>
            <type>text/plain</type>
            <size>47371</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjc1NjE2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDczIEBA
CisyMDIxLTA0LTA3ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZW5hbWUgYW5kIG1ha2UgdGhlIFRlcm1pbmF0aW9uRXhjZXB0aW9uIGEgc2luZ2xldG9uLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0Mjk1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgcHJldmlvdXNs
eSBjYWxsIGl0IHRoZSBUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uLCB3aGljaCBpcyBhIG1v
dXRoZnVsIGJ1dAorICAgICAgICBhZGRzIG5vIG1lYW5pbmdmdWwgaW5mb3JtYXRpb24uICBJdCdz
IG5vdyByZW5hbWVkIHRvIFRlcm1pbmF0aW9uRXhjZXB0aW9uLgorCisgICAgICAgIFdlIGNhbiBt
YWtlIGl0IGEgc2luZ2xldG9uIGJlY2F1c2UgdGhlIFRlcm1pbmF0aW9uRXhjZXB0aW9uIGlzIGp1
c3QgYSBWTSBpbnRlcm5hbAorICAgICAgICBtZWNoYW5pc20gZm9yIGltcGxlbWVudGluZyB0aGUg
dGVybWluYXRpb24gb2YgdGhlIGN1cnJlbnQgZXhlY3V0aW9uIHN0YWNrLiAgSXQKKyAgICAgICAg
c2hvdWxkIG5ldmVyIGJlIGV4cG9zZWQgdG8gdXNlciBKUyBjb2RlLCBhbmQgdGhlcmVmb3JlLCB0
aGVyZSBpcyBubyB2YWx1ZSBpbgorICAgICAgICBtYWtpbmcgaXQgYSBKUyBvYmplY3QuICBNYWtp
bmcgaXQgYSBzaW5nbGV0b24gc2ltcGxpZmllcyB0aGUgY29kZS4KKworICAgICAgICBBIFRlcm1p
bmF0aW9uRXhjZXB0aW9uIGlzIG5vdyBpbXBsZW1lbnRlZCBhcyBhbiBFeGNlcHRpb24gY2VsbCB3
aGljaCBob2xkcyBhCisgICAgICAgIFN5bWJvbCB3aXRoIHRoZSBuYW1lICJUZXJtaW5hdGlvbkVy
cm9yIi4gIFRoZSBUZXJtaW5hdGlvbkV4Y2VwdGlvbiBpcyBvbmx5IGNyZWF0ZWQKKyAgICAgICAg
aWYgbmVlZGVkIGUuZy4gaWYgdGhlIEpTQyB3YXRjaGRvZyBpcyBjcmVhdGVkLCBvciBpZiB0aGUg
Vk0gaXMgZm9yIGEgV29ya2VyIHRocmVhZAorICAgICAgICB3aGljaCBuZWVkcyB0byBiZSBhYmxl
IHRvIGhhbmRsZSB0ZXJtaW5hdGlvbiByZXF1ZXN0cy4KKworICAgICAgICBXZSdsbCBhbHNvIHN0
b3Agbm90aWZ5aW5nIHRoZSBkZWJ1Z2dlciB3aGVuIHdlIHRocm93IHRoZSBUZXJtaW5hdGlvbkV4
Y2VwdGlvbi4KKyAgICAgICAgVGhpcyBpcyBiZWNhdXNlIHRoZSBUZXJtaW5hdGlvbkV4Y2VwdGlv
biBpcyBub3QgbGlrZSBvcmRpbmFyeSBleGNlcHRpb25zIHRoYXQKKyAgICAgICAgc2hvdWxkIGJl
IHJlcG9ydGVkIHRvIHRoZSBkZWJ1Z2dlci4gVGhlIGZhY3QgdGhhdCB0aGUgVGVybWluYXRpb25F
eGNlcHRpb24gdXNlcworICAgICAgICB0aGUgZXhjZXB0aW9uIGhhbmRsaW5nIG1lY2hhbmlzbSBp
cyBqdXN0IGEgVk0gaW50ZXJuYWwgaW1wbGVtZW50YXRpb24gZGV0YWlsLgorICAgICAgICBJdCBp
cyBub3QgbWVhbmluZ2Z1bCB0byByZXBvcnQgaXQgdG8gdGhlIGRlYnVnZ2VyIGFzIGFuIGV4Y2Vw
dGlvbi4KKworICAgICAgICAqIEFQSS9KU0NvbnRleHQubW06CisgICAgICAgICgtW0pTQ29udGV4
dCBldmFsdWF0ZUpTU2NyaXB0Ol0pOgorICAgICAgICAqIEFQSS90ZXN0cy9FeGVjdXRpb25UaW1l
TGltaXRUZXN0LmNwcDoKKyAgICAgICAgKHRlc3RFeGVjdXRpb25UaW1lTGltaXQpOgorICAgICAg
ICAqIGJpbmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHA6CisgICAgICAgIChEZXByZWNhdGVk
OjpTY3JpcHRGdW5jdGlvbkNhbGw6OmNhbGwpOgorICAgICAgICAqIGhlYXAvSGVhcC5jcHA6Cisg
ICAgICAgIChKU0M6OkhlYXA6OmFkZENvcmVDb25zdHJhaW50cyk6CisgICAgICAgICogaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkluamVj
dGVkU2NyaXB0TWFuYWdlcjo6aW5qZWN0ZWRTY3JpcHRGb3IpOgorICAgICAgICAqIGluc3BlY3Rv
ci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoSW5zcGVj
dG9yOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OnJlcG9ydEFQSUV4Y2VwdGlv
bik6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlND
OjpJbnRlcnByZXRlcjo6dW53aW5kKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6Om5vdGlm
eURlYnVnZ2VyT2ZFeGNlcHRpb25Ub0JlVGhyb3duKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0
aW9ucy5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSklUX09QRVJBVElPTik6CisgICAg
ICAgICoganNjLmNwcDoKKyAgICAgICAgKGNoZWNrRXhjZXB0aW9uKToKKyAgICAgICAgKiBsbGlu
dC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BB
VEhfREVDTCk6CisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcDoKKyAgICAg
ICAgKEpTQzo6VGVybWluYXRlZEV4ZWN1dGlvbkVycm9yOjpkZWZhdWx0VmFsdWUpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpjcmVhdGVUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6aXNUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6dGhyb3dUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKTog
RGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaDoKKyAgICAgICAg
KCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAoSlND
OjpKU09iamVjdDo6Z2V0IGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0pTUHJvbWlzZS5jcHA6
CisgICAgICAgIChKU0M6OkpTUHJvbWlzZTo6cmVqZWN0V2l0aENhdWdodEV4Y2VwdGlvbik6Cisg
ICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAg
IChKU0M6OlZNOjplbnN1cmVXYXRjaGRvZyk6CisgICAgICAgIChKU0M6OlZNOjplbnN1cmVUZXJt
aW5hdGlvbkV4Y2VwdGlvbik6CisgICAgICAgIChKU0M6OlZNOjp0aHJvd1Rlcm1pbmF0aW9uRXhj
ZXB0aW9uKToKKyAgICAgICAgKEpTQzo6Vk06OnRocm93RXhjZXB0aW9uKToKKyAgICAgICAgKiBy
dW50aW1lL1ZNLmg6CisgICAgICAgIChKU0M6OlZNOjp0ZXJtaW5hdGlvbkV4Y2VwdGlvbiBjb25z
dCk6CisgICAgICAgIChKU0M6OlZNOjppc1Rlcm1pbmF0aW9uRXhjZXB0aW9uIGNvbnN0KToKKyAg
ICAgICAgKiBydW50aW1lL1ZNVHJhcHMuY3BwOgorICAgICAgICAoSlNDOjpWTVRyYXBzOjpoYW5k
bGVUcmFwcyk6CisKIDIwMjEtMDQtMDcgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgog
CiAgICAgICAgIEZpeCBhIHR5cG8gaW4gSklUVW5jb3VnaHRFeGNlcHRpb25BZnRlckNhbGwuCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvanNjLmNwcAkocmV2aXNpb24gMjc1NjExKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2pzYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5NDAsNyArMjk0MCwyMSBAQCBz
dGF0aWMgdm9pZCBjaGVja0V4Y2VwdGlvbihHbG9iYWxPYmplY3QqCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogCi0gICAgaWYgKG9wdGlvbnMubV90cmVhdFdhdGNoZG9nRXhj
ZXB0aW9uQXNTdWNjZXNzICYmIHZhbHVlLmluaGVyaXRzPFRlcm1pbmF0ZWRFeGVjdXRpb25FcnJv
cj4odm0pKSB7CisgICAgYXV0byBpc1Rlcm1pbmF0aW9uRXhjZXB0aW9uID0gWyZdIChKU1ZhbHVl
IHZhbHVlKSB7CisgICAgICAgIGlmICghdmFsdWUuaXNDZWxsKCkpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICAgICAgSlNDZWxsKiB2YWx1ZUNlbGwgPSB2YWx1ZS5hc0NlbGwoKTsK
KyAgICAgICAgdm0uZW5zdXJlVGVybWluYXRpb25FeGNlcHRpb24oKTsKKyAgICAgICAgRXhjZXB0
aW9uKiB0ZXJtaW5hdGlvbkV4Y2VwdGlvbiA9IHZtLnRlcm1pbmF0aW9uRXhjZXB0aW9uKCk7Cisg
ICAgICAgIEV4Y2VwdGlvbiogZXhjZXB0aW9uID0ganNEeW5hbWljQ2FzdDxFeGNlcHRpb24qPih2
bSwgdmFsdWVDZWxsKTsKKyAgICAgICAgaWYgKGV4Y2VwdGlvbikKKyAgICAgICAgICAgIHJldHVy
biB2bS5pc1Rlcm1pbmF0aW9uRXhjZXB0aW9uKGV4Y2VwdGlvbik7CisgICAgICAgIEpTQ2VsbCog
dGVybWluYXRpb25FcnJvciA9IHRlcm1pbmF0aW9uRXhjZXB0aW9uLT52YWx1ZSgpLmFzQ2VsbCgp
OworICAgICAgICByZXR1cm4gdmFsdWVDZWxsID09IHRlcm1pbmF0aW9uRXJyb3I7CisgICAgfTsK
KworICAgIGlmIChvcHRpb25zLm1fdHJlYXRXYXRjaGRvZ0V4Y2VwdGlvbkFzU3VjY2VzcyAmJiBp
c1Rlcm1pbmF0aW9uRXhjZXB0aW9uKHZhbHVlKSkgewogICAgICAgICBBU1NFUlQoaGFzRXhjZXB0
aW9uKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNDb250ZXh0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDb250ZXh0Lm1tCShyZXZpc2lvbiAyNzU2MTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTQ29udGV4dC5tbQkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE0MCw3ICsxNDAsNyBAQCAt
IChKU1ZhbHVlICopZXZhbHVhdGVKU1NjcmlwdDooSlNTY3JpcHQgCiAgICAgaWYgKHNjb3BlLmV4
Y2VwdGlvbigpKSB7CiAgICAgICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uVmFsdWUgPSB0b1JlZihh
cGlHbG9iYWxPYmplY3QsIHNjb3BlLmV4Y2VwdGlvbigpLT52YWx1ZSgpKTsKICAgICAgICAgc2Nv
cGUuY2xlYXJFeGNlcHRpb24oKTsKLSAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBub3QgY2xl
YXJFeGNlcHRpb24gaWYgaXQgaXMgVGVybWluYXRlZEV4ZWN1dGlvbkVycm9yLgorICAgICAgICAv
LyBGSVhNRTogV2Ugc2hvdWxkIG5vdCBjbGVhckV4Y2VwdGlvbiBpZiBpdCBpcyB0aGUgVGVybWlu
YXRpb25FeGNlcHRpb24uCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjA4MjEKICAgICAgICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aE5ld1By
b21pc2VSZWplY3RlZFdpdGhSZWFzb246W0pTVmFsdWUgdmFsdWVXaXRoSlNWYWx1ZVJlZjpleGNl
cHRpb25WYWx1ZSBpbkNvbnRleHQ6c2VsZl0gaW5Db250ZXh0OnNlbGZdOwogICAgIH0KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvRXhlY3V0aW9uVGltZUxpbWl0VGVzdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9FeGVjdXRp
b25UaW1lTGltaXRUZXN0LmNwcAkocmV2aXNpb24gMjc1NjExKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS90ZXN0cy9FeGVjdXRpb25UaW1lTGltaXRUZXN0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTE3OSw3ICsxNzksNyBAQCBpbnQgdGVzdEV4ZWN1dGlvblRpbWVMaW1pdCgpCiAgICAg
ICAgICAgICB9CiAKICAgICAgICAgICAgIGlmICghZXhjZXB0aW9uKSB7Ci0gICAgICAgICAgICAg
ICAgcHJpbnRmKCJGQUlMOiAlcyBUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uIHdhcyBub3Qg
dGhyb3duLlxuIiwgdGllck9wdGlvbnMudGllcik7CisgICAgICAgICAgICAgICAgcHJpbnRmKCJG
QUlMOiAlcyBUZXJtaW5hdGlvbkV4Y2VwdGlvbiB3YXMgbm90IHRocm93bi5cbiIsIHRpZXJPcHRp
b25zLnRpZXIpOwogICAgICAgICAgICAgICAgIGV4aXQoMSk7CiAgICAgICAgICAgICB9CiAKQEAg
LTIyNSw3ICsyMjUsNyBAQCBpbnQgdGVzdEV4ZWN1dGlvblRpbWVMaW1pdCgpCiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmICghZXhjZXB0aW9uKSB7Ci0gICAgICAg
ICAgICAgICAgcHJpbnRmKCJGQUlMOiAlcyBUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uIHdh
cyBub3QgdGhyb3duLlxuIiwgdGllck9wdGlvbnMudGllcik7CisgICAgICAgICAgICAgICAgcHJp
bnRmKCJGQUlMOiAlcyBUZXJtaW5hdGlvbkV4Y2VwdGlvbiB3YXMgbm90IHRocm93bi5cbiIsIHRp
ZXJPcHRpb25zLnRpZXIpOwogICAgICAgICAgICAgICAgIGZhaWxlZCA9IHRydWU7CiAgICAgICAg
ICAgICB9CiAKQEAgLTI2OCwxNCArMjY4LDE0IEBAIGludCB0ZXN0RXhlY3V0aW9uVGltZUxpbWl0
KCkKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKCFleGNlcHRp
b24pIHsKLSAgICAgICAgICAgICAgICBwcmludGYoIkZBSUw6ICVzIFRlcm1pbmF0ZWRFeGVjdXRp
b25FeGNlcHRpb24gd2FzIG5vdCB0aHJvd24uXG4iLCB0aWVyT3B0aW9ucy50aWVyKTsKKyAgICAg
ICAgICAgICAgICBwcmludGYoIkZBSUw6ICVzIFRlcm1pbmF0aW9uRXhjZXB0aW9uIHdhcyBub3Qg
dGhyb3duLlxuIiwgdGllck9wdGlvbnMudGllcik7CiAgICAgICAgICAgICAgICAgZmFpbGVkID0g
dHJ1ZTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgdGVzdFJlc2V0QWZ0ZXJUaW1lb3V0
KGZhaWxlZCk7CiAgICAgICAgIH0KIAotICAgICAgICAvKiBUZXN0IHRoZSBzY3JpcHQgdGltZW91
dCdzIFRlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24gc2hvdWxkIE5PVCBiZSBjYXRjaGFibGU6
ICovCisgICAgICAgIC8qIFRlc3QgdGhlIHNjcmlwdCB0aW1lb3V0J3MgVGVybWluYXRpb25FeGNl
cHRpb24gc2hvdWxkIE5PVCBiZSBjYXRjaGFibGU6ICovCiAgICAgICAgIHRpbWVMaW1pdCA9IDEw
MF9tcyArIHRpZXJBZGp1c3RtZW50OwogICAgICAgICBKU0NvbnRleHRHcm91cFNldEV4ZWN1dGlv
blRpbWVMaW1pdChjb250ZXh0R3JvdXAsIHRpbWVMaW1pdC5zZWNvbmRzKCksIHNob3VsZFRlcm1p
bmF0ZUNhbGxiYWNrLCBudWxscHRyKTsKICAgICAgICAgewpAQCAtMzEzLDkgKzMxMyw5IEBAIGlu
dCB0ZXN0RXhlY3V0aW9uVGltZUxpbWl0KCkKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAog
ICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICBwcmludGYoIlBBU1M6
ICVzIFRlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24gd2FzIG5vdCBjYXRjaGFibGUgYXMgZXhw
ZWN0ZWQuXG4iLCB0aWVyT3B0aW9ucy50aWVyKTsKKyAgICAgICAgICAgICAgICBwcmludGYoIlBB
U1M6ICVzIFRlcm1pbmF0aW9uRXhjZXB0aW9uIHdhcyBub3QgY2F0Y2hhYmxlIGFzIGV4cGVjdGVk
LlxuIiwgdGllck9wdGlvbnMudGllcik7CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAg
ICAgICBwcmludGYoIkZBSUw6ICVzIFRlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24gd2FzIGNh
dWdodC5cbiIsIHRpZXJPcHRpb25zLnRpZXIpOworICAgICAgICAgICAgICAgIHByaW50ZigiRkFJ
TDogJXMgVGVybWluYXRpb25FeGNlcHRpb24gd2FzIGNhdWdodC5cbiIsIHRpZXJPcHRpb25zLnRp
ZXIpOwogICAgICAgICAgICAgICAgIGZhaWxlZCA9IHRydWU7CiAgICAgICAgICAgICB9CiAKQEAg
LTM2MCw3ICszNjAsNyBAQCBpbnQgdGVzdEV4ZWN1dGlvblRpbWVMaW1pdCgpCiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmICghZXhjZXB0aW9uKSB7Ci0gICAgICAg
ICAgICAgICAgcHJpbnRmKCJGQUlMOiAlcyBUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uIHdh
cyBub3QgdGhyb3duLlxuIiwgdGllck9wdGlvbnMudGllcik7CisgICAgICAgICAgICAgICAgcHJp
bnRmKCJGQUlMOiAlcyBUZXJtaW5hdGlvbkV4Y2VwdGlvbiB3YXMgbm90IHRocm93bi5cbiIsIHRp
ZXJPcHRpb25zLnRpZXIpOwogICAgICAgICAgICAgICAgIGZhaWxlZCA9IHRydWU7CiAgICAgICAg
ICAgICB9CiAKQEAgLTQwNSw3ICs0MDUsNyBAQCBpbnQgdGVzdEV4ZWN1dGlvblRpbWVMaW1pdCgp
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChleGNlcHRpb24p
IHsKLSAgICAgICAgICAgICAgICBwcmludGYoIkZBSUw6ICVzIFVuZXhwZWN0ZWQgVGVybWluYXRl
ZEV4ZWN1dGlvbkV4Y2VwdGlvbiB0aHJvd24uXG4iLCB0aWVyT3B0aW9ucy50aWVyKTsKKyAgICAg
ICAgICAgICAgICBwcmludGYoIkZBSUw6ICVzIFVuZXhwZWN0ZWQgVGVybWluYXRpb25FeGNlcHRp
b24gdGhyb3duLlxuIiwgdGllck9wdGlvbnMudGllcik7CiAgICAgICAgICAgICAgICAgZmFpbGVk
ID0gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNDU0LDcgKzQ1NCw3IEBAIGlu
dCB0ZXN0RXhlY3V0aW9uVGltZUxpbWl0KCkKICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJG
QUlMOiAlcyBzY3JpcHQgdGltZW91dCBjYWxsYmFjayB3YXMgbm90IGNhbGxlZCBhZnRlciB0aW1l
b3V0IGV4dGVuc2lvbi5cbiIsIHRpZXJPcHRpb25zLnRpZXIpOwogICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgICAgIGlmICghZXhjZXB0aW9uKQotICAgICAgICAgICAgICAgICAgICBwcmlu
dGYoIkZBSUw6ICVzIFRlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24gd2FzIG5vdCB0aHJvd24g
ZHVyaW5nIHRpbWVvdXQgZXh0ZW5zaW9uIHRlc3QuXG4iLCB0aWVyT3B0aW9ucy50aWVyKTsKKyAg
ICAgICAgICAgICAgICAgICAgcHJpbnRmKCJGQUlMOiAlcyBUZXJtaW5hdGlvbkV4Y2VwdGlvbiB3
YXMgbm90IHRocm93biBkdXJpbmcgdGltZW91dCBleHRlbnNpb24gdGVzdC5cbiIsIHRpZXJPcHRp
b25zLnRpZXIpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGZhaWxlZCA9IHRy
dWU7CiAgICAgICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3Mv
U2NyaXB0RnVuY3Rpb25DYWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYmluZGluZ3MvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcAkocmV2aXNpb24gMjc1NjExKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEz
LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAy
MDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBA
IC0xMjcsNyArMTI3LDcgQEAgRXhwZWN0ZWQ8SlNWYWx1ZSwgTmFrZWRQdHI8RXhjZXB0aW9uPj4g
UwogCiAgICAgaWYgKGV4Y2VwdGlvbikgewogICAgICAgICAvLyBEbyBub3QgdHJlYXQgYSB0ZXJt
aW5hdGVkIGV4ZWN1dGlvbiBleGNlcHRpb24gYXMgaGF2aW5nIGFuIGV4Y2VwdGlvbi4gSnVzdCB0
cmVhdCBpdCBhcyBhbiBlbXB0eSByZXN1bHQuCi0gICAgICAgIGlmICghaXNUZXJtaW5hdGVkRXhl
Y3V0aW9uRXhjZXB0aW9uKHZtLCBleGNlcHRpb24pKQorICAgICAgICBpZiAoIXZtLmlzVGVybWlu
YXRpb25FeGNlcHRpb24oZXhjZXB0aW9uKSkKICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBl
Y3RlZChleGNlcHRpb24pOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCShyZXZpc2lvbiAyNzU2MTEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgxNyw2ICsyODE3
LDEyIEBAIHZvaWQgSGVhcDo6YWRkQ29yZUNvbnN0cmFpbnRzKCkKICAgICAgICAgICAgICAgICBT
ZXRSb290TWFya1JlYXNvblNjb3BlIHJvb3RTY29wZSh2aXNpdG9yLCBSb290TWFya1JlYXNvbjo6
Vk1FeGNlcHRpb25zKTsKICAgICAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVk
KG1fdm0uZXhjZXB0aW9uKCkpOwogICAgICAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJy
aWVyZWQobV92bS5sYXN0RXhjZXB0aW9uKCkpOworCisgICAgICAgICAgICAgICAgLy8gV2UncmUg
Z29pbmcgdG8gbV90ZXJtaW5hdGlvbkV4Y2VwdGlvbiBkaXJlY3RseSBpbnN0ZWFkIG9mIGdvaW5n
IHRocm91Z2gKKyAgICAgICAgICAgICAgICAvLyB0aGUgZXhjZXB0aW9uKCkgZ2V0dGVyIGJlY2F1
c2Ugd2Ugd2FudCB0byBhc3NlcnQgaW4gdGhlIGdldHRlciB0aGF0IHRoZQorICAgICAgICAgICAg
ICAgIC8vIFRlcm1pbmF0aW9uRXhjZXB0aW9uIGhhcyBiZWVuIHJlaWZpZWQuIEhlcmUsIHdlIGRv
bid0IGNhcmUgaWYgaXQgaXMKKyAgICAgICAgICAgICAgICAvLyByZWlmaWVkIG9yIG5vdC4KKyAg
ICAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkKG1fdm0ubV90ZXJtaW5hdGlv
bkV4Y2VwdGlvbik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0pKSwKICAgICAgICAgQ29uc3Ry
YWludFZvbGF0aWxpdHk6OkdyZXllZEJ5RXhlY3V0aW9uKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5j
cHAJKHJldmlzaW9uIDI3NTYxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggTWF0dCBMaWxlayA8d2Via2l0QG1hdHRs
aWxlay5jb20+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCkBAIC0xODgsNyArMTg4LDcgQEAgSW5qZWN0ZWRTY3JpcHQgSW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyOjppbgogICAgICAgICBhdXRvJiBlcnJvciA9IGNyZWF0ZVJlc3VsdC5lcnJv
cigpOwogICAgICAgICBBU1NFUlQoZXJyb3IpOwogCi0gICAgICAgIGlmIChpc1Rlcm1pbmF0ZWRF
eGVjdXRpb25FeGNlcHRpb24oZ2xvYmFsT2JqZWN0LT52bSgpLCBlcnJvcikpCisgICAgICAgIGlm
IChnbG9iYWxPYmplY3QtPnZtKCkuaXNUZXJtaW5hdGlvbkV4Y2VwdGlvbihlcnJvcikpCiAgICAg
ICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQoKTsKIAogICAgICAgICB1bnNpZ25lZCBsaW5l
ID0gMDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmpl
Y3RJbnNwZWN0b3JDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5jcHAJKHJl
dmlzaW9uIDI3NTYxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9i
YWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNzIs
NyArMTcyLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6Ogogdm9p
ZCBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OnJlcG9ydEFQSUV4Y2VwdGlvbihK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFeGNlcHRpb24qIGV4Y2VwdGlvbikKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgaWYgKGlzVGVybWluYXRlZEV4ZWN1
dGlvbkV4Y2VwdGlvbih2bSwgZXhjZXB0aW9uKSkKKyAgICBpZiAodm0uaXNUZXJtaW5hdGlvbkV4
Y2VwdGlvbihleGNlcHRpb24pKQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDI3NTYxMSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4IENh
bWVyb24gWndhcmljaCA8Y3d6d2FyaWNoQHV3YXRlcmxvby5jYT4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
QEAgLTYwNyw3ICs2MDcsNyBAQCBORVZFUl9JTkxJTkUgSGFuZGxlckluZm8qIEludGVycHJldGVy
Ojp1CiAKICAgICAvLyBDYWxjdWxhdGUgYW4gZXhjZXB0aW9uIGhhbmRsZXIgdlBDLCB1bndpbmRp
bmcgY2FsbCBmcmFtZXMgYXMgbmVjZXNzYXJ5LgogICAgIEhhbmRsZXJJbmZvKiBoYW5kbGVyID0g
bnVsbHB0cjsKLSAgICBVbndpbmRGdW5jdG9yIGZ1bmN0b3Iodm0sIGNhbGxGcmFtZSwgaXNUZXJt
aW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKHZtLCBleGNlcHRpb24pLCBjb2RlQmxvY2ssIGhhbmRs
ZXIpOworICAgIFVud2luZEZ1bmN0b3IgZnVuY3Rvcih2bSwgY2FsbEZyYW1lLCB2bS5pc1Rlcm1p
bmF0aW9uRXhjZXB0aW9uKGV4Y2VwdGlvbiksIGNvZGVCbG9jaywgaGFuZGxlcik7CiAgICAgU3Rh
Y2tWaXNpdG9yOjp2aXNpdDxTdGFja1Zpc2l0b3I6OlRlcm1pbmF0ZUlmVG9wRW50cnlGcmFtZUlz
RW1wdHk+KGNhbGxGcmFtZSwgdm0sIGZ1bmN0b3IpOwogICAgIGlmICh2bS5oYXNDaGVja3BvaW50
T1NSU2lkZVN0YXRlKCkpCiAgICAgICAgIHZtLnBvcEFsbENoZWNrcG9pbnRPU1JTaWRlU3RhdGVV
bnRpbChjYWxsRnJhbWUpOwpAQCAtNjIwLDYgKzYyMCw4IEBAIE5FVkVSX0lOTElORSBIYW5kbGVy
SW5mbyogSW50ZXJwcmV0ZXI6OnUKIAogdm9pZCBJbnRlcnByZXRlcjo6bm90aWZ5RGVidWdnZXJP
ZkV4Y2VwdGlvblRvQmVUaHJvd24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgRXhjZXB0aW9uKiBleGNlcHRpb24pCiB7CisgICAgQVNT
RVJUKCF2bS5pc1Rlcm1pbmF0aW9uRXhjZXB0aW9uKGV4Y2VwdGlvbikpOworCiAgICAgRGVidWdn
ZXIqIGRlYnVnZ2VyID0gZ2xvYmFsT2JqZWN0LT5kZWJ1Z2dlcigpOwogICAgIGlmIChkZWJ1Z2dl
ciAmJiBkZWJ1Z2dlci0+bmVlZHNFeGNlcHRpb25DYWxsYmFja3MoKSAmJiAhZXhjZXB0aW9uLT5k
aWROb3RpZnlJbnNwZWN0b3JPZlRocm93KCkpIHsKICAgICAgICAgLy8gVGhpcyBjb2RlIGFzc3Vt
ZXMgdGhhdCBpZiB0aGUgZGVidWdnZXIgaXMgZW5hYmxlZCB0aGVuIHRoZXJlIGlzIG5vIGlubGlu
aW5nLgpAQCAtNjI3LDE3ICs2MjksMTEgQEAgdm9pZCBJbnRlcnByZXRlcjo6bm90aWZ5RGVidWdn
ZXJPZkV4Y2VwdAogICAgICAgICAvLyBmcmFtZXMuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjE3NTQKIAotICAgICAgICBib29sIGhhc0NhdGNo
SGFuZGxlcjsKLSAgICAgICAgYm9vbCBpc1Rlcm1pbmF0aW9uID0gaXNUZXJtaW5hdGVkRXhlY3V0
aW9uRXhjZXB0aW9uKHZtLCBleGNlcHRpb24pOwotICAgICAgICBpZiAoaXNUZXJtaW5hdGlvbikK
LSAgICAgICAgICAgIGhhc0NhdGNoSGFuZGxlciA9IGZhbHNlOwotICAgICAgICBlbHNlIHsKLSAg
ICAgICAgICAgIEdldENhdGNoSGFuZGxlckZ1bmN0b3IgZnVuY3RvcjsKLSAgICAgICAgICAgIFN0
YWNrVmlzaXRvcjo6dmlzaXQoY2FsbEZyYW1lLCB2bSwgZnVuY3Rvcik7Ci0gICAgICAgICAgICBI
YW5kbGVySW5mbyogaGFuZGxlciA9IGZ1bmN0b3IuaGFuZGxlcigpOwotICAgICAgICAgICAgQVNT
RVJUKCFoYW5kbGVyIHx8IGhhbmRsZXItPmlzQ2F0Y2hIYW5kbGVyKCkpOwotICAgICAgICAgICAg
aGFzQ2F0Y2hIYW5kbGVyID0gISFoYW5kbGVyOwotICAgICAgICB9CisgICAgICAgIEdldENhdGNo
SGFuZGxlckZ1bmN0b3IgZnVuY3RvcjsKKyAgICAgICAgU3RhY2tWaXNpdG9yOjp2aXNpdChjYWxs
RnJhbWUsIHZtLCBmdW5jdG9yKTsKKyAgICAgICAgSGFuZGxlckluZm8qIGhhbmRsZXIgPSBmdW5j
dG9yLmhhbmRsZXIoKTsKKyAgICAgICAgQVNTRVJUKCFoYW5kbGVyIHx8IGhhbmRsZXItPmlzQ2F0
Y2hIYW5kbGVyKCkpOworICAgICAgICBib29sIGhhc0NhdGNoSGFuZGxlciA9ICEhaGFuZGxlcjsK
IAogICAgICAgICBkZWJ1Z2dlci0+ZXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBl
eGNlcHRpb24tPnZhbHVlKCksIGhhc0NhdGNoSGFuZGxlcik7CiAgICAgfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAyNzU2MTEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNTE5LDcgKzM1MTksNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uQ2hlY2tJCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgIFJFTEVBU0VfQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkpOwogCi0gICAgaWYgKGlzVGVy
bWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbih2bSwgc2NvcGUuZXhjZXB0aW9uKCkpKSB7CisgICAg
aWYgKHZtLmlzVGVybWluYXRpb25FeGNlcHRpb24oc2NvcGUuZXhjZXB0aW9uKCkpKSB7CiAgICAg
ICAgIGdlbmVyaWNVbndpbmQodm0sIGNhbGxGcmFtZSk7CiAgICAgICAgIHJldHVybiAxOwogICAg
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhz
LmNwcAkocmV2aXNpb24gMjc1NjExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50U2xvd1BhdGhzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIxODgsNyArMjE4OCw3IEBAIExM
SU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jaGVja19pZl8KICAgICBVTlVTRURfUEFSQU0o
Z2xvYmFsT2JqZWN0KTsKICAgICBSRUxFQVNFX0FTU0VSVCghIXRocm93U2NvcGUuZXhjZXB0aW9u
KCkpOwogCi0gICAgaWYgKGlzVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbih2bSwgdGhyb3dT
Y29wZS5leGNlcHRpb24oKSkpCisgICAgaWYgKHZtLmlzVGVybWluYXRpb25FeGNlcHRpb24odGhy
b3dTY29wZS5leGNlcHRpb24oKSkpCiAgICAgICAgIExMSU5UX1JFVFVSTl9UV08ocGMsIGJpdHdp
c2VfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PigxKSkpOwogICAgIExMSU5UX1JF
VFVSTl9UV08ocGMsIG51bGxwdHIpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAJKHJldmlzaW9uIDI3NTYxMSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOSwzMCArMzksNiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotU1RBVElD
X0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKFRlcm1pbmF0ZWRFeGVjdXRpb25FcnJv
cik7Ci0KLWNvbnN0IENsYXNzSW5mbyBUZXJtaW5hdGVkRXhlY3V0aW9uRXJyb3I6OnNfaW5mbyA9
IHsgIlRlcm1pbmF0ZWRFeGVjdXRpb25FcnJvciIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51
bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoVGVybWluYXRlZEV4ZWN1dGlvbkVycm9yKSB9Owot
Ci1KU1ZhbHVlIFRlcm1pbmF0ZWRFeGVjdXRpb25FcnJvcjo6ZGVmYXVsdFZhbHVlKGNvbnN0IEpT
T2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJlZmVycmVkUHJpbWl0aXZl
VHlwZSBoaW50KQotewotICAgIGlmIChoaW50ID09IFByZWZlclN0cmluZykKLSAgICAgICAgcmV0
dXJuIGpzTm9udHJpdmlhbFN0cmluZyhnbG9iYWxPYmplY3QtPnZtKCksIFN0cmluZygiSmF2YVNj
cmlwdCBleGVjdXRpb24gdGVybWluYXRlZC4iX3MpKTsKLSAgICByZXR1cm4gSlNWYWx1ZShQTmFO
KTsKLX0KLQotSlNPYmplY3QqIGNyZWF0ZVRlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oVk0q
IHZtKQotewotICAgIHJldHVybiBUZXJtaW5hdGVkRXhlY3V0aW9uRXJyb3I6OmNyZWF0ZSgqdm0p
OwotfQotCi1ib29sIGlzVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihWTSYgdm0sIEV4Y2Vw
dGlvbiogZXhjZXB0aW9uKQotewotICAgIGlmICghZXhjZXB0aW9uLT52YWx1ZSgpLmlzT2JqZWN0
KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBleGNlcHRpb24tPnZhbHVl
KCkuaW5oZXJpdHM8VGVybWluYXRlZEV4ZWN1dGlvbkVycm9yPih2bSk7Ci19Ci0KIEpTT2JqZWN0
KiBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
IHsKICAgICBhdXRvKiBlcnJvciA9IGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiTWF4
aW11bSBjYWxsIHN0YWNrIHNpemUgZXhjZWVkZWQuIl9zKTsKQEAgLTM4NSwxMSArMzYxLDQgQEAg
RXhjZXB0aW9uKiB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihKU0dsbwogICAgIHJldHVybiB0aHJv
d0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVTdGFja092ZXJmbG93RXJyb3Io
Z2xvYmFsT2JqZWN0KSk7CiB9CiAKLUV4Y2VwdGlvbiogdGhyb3dUZXJtaW5hdGVkRXhlY3V0aW9u
RXhjZXB0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRocm93U2NvcGUmIHNjb3Bl
KQotewotICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKLSAgICBFcnJvckhhbmRsaW5n
U2NvcGUgZXJyb3JTY29wZSh2bSk7Ci0gICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKGdsb2JhbE9i
amVjdCwgc2NvcGUsIGNyZWF0ZVRlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oJnZtKSk7Ci19
Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXhjZXB0aW9uSGVscGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaAkocmV2aXNpb24gMjc1NjExKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMzksOCArMzksNiBAQCB0eXBlZGVmIEpTT2JqZWN0KiAoKkVycm9yRmFjdG9yeSkoSlNH
bG9iCiAKIFN0cmluZyBkZWZhdWx0U291cmNlQXBwZW5kZXIoY29uc3QgU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJiwgUnVudGltZVR5cGUsIEVycm9ySW5zdGFuY2U6OlNvdXJjZVRleHRXaGVyZUVycm9y
T2NjdXJyZWQpOwogCi1KU09iamVjdCogY3JlYXRlVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlv
bihWTSopOwotSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNl
cHRpb24oVk0mLCBFeGNlcHRpb24qKTsKIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiBjcmVh
dGVFcnJvcihKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUsIGNvbnN0IFN0cmluZyYsIEVycm9ySW5z
dGFuY2U6OlNvdXJjZUFwcGVuZGVyKTsKIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiBjcmVh
dGVTdGFja092ZXJmbG93RXJyb3IoSlNHbG9iYWxPYmplY3QqKTsKIEpTT2JqZWN0KiBjcmVhdGVV
bmRlZmluZWRWYXJpYWJsZUVycm9yKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgSWRlbnRpZmllciYp
OwpAQCAtNjEsNDMgKzU5LDUgQEAgU3RyaW5nIGVycm9yRGVzY3JpcHRpb25Gb3JWYWx1ZShKU0ds
b2JhbAogSlNfRVhQT1JUX1BSSVZBVEUgRXhjZXB0aW9uKiB0aHJvd091dE9mTWVtb3J5RXJyb3Io
SlNHbG9iYWxPYmplY3QqLCBUaHJvd1Njb3BlJik7CiBKU19FWFBPUlRfUFJJVkFURSBFeGNlcHRp
b24qIHRocm93T3V0T2ZNZW1vcnlFcnJvcihKU0dsb2JhbE9iamVjdCosIFRocm93U2NvcGUmLCBj
b25zdCBTdHJpbmcmKTsKIEpTX0VYUE9SVF9QUklWQVRFIEV4Y2VwdGlvbiogdGhyb3dTdGFja092
ZXJmbG93RXJyb3IoSlNHbG9iYWxPYmplY3QqLCBUaHJvd1Njb3BlJik7Ci1KU19FWFBPUlRfUFJJ
VkFURSBFeGNlcHRpb24qIHRocm93VGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihKU0dsb2Jh
bE9iamVjdCosIFRocm93U2NvcGUmKTsKLQotCi1jbGFzcyBUZXJtaW5hdGVkRXhlY3V0aW9uRXJy
b3IgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7Ci1wdWJsaWM6Ci0gICAgdXNpbmcg
QmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBT
dHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgU3RydWN0dXJlSXNJbW1vcnRh
bDsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KLSAg
ICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKLSAgICB7Ci0gICAgICAg
IFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFRlcm1pbmF0ZWRFeGVjdXRpb25F
cnJvciwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKLSAgICB9
Ci0KLSAgICBzdGF0aWMgVGVybWluYXRlZEV4ZWN1dGlvbkVycm9yKiBjcmVhdGUoVk0mIHZtKQot
ICAgIHsKLSAgICAgICAgVGVybWluYXRlZEV4ZWN1dGlvbkVycm9yKiBlcnJvciA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPFRlcm1pbmF0ZWRFeGVjdXRpb25FcnJvcj4odm0uaGVhcCkpIFRl
cm1pbmF0ZWRFeGVjdXRpb25FcnJvcih2bSk7Ci0gICAgICAgIGVycm9yLT5maW5pc2hDcmVhdGlv
bih2bSk7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9Ci0KLSAgICBzdGF0aWMgU3RydWN0
dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlIHByb3RvdHlwZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0
cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKLSAgICB9Ci0KLSAgICBERUNMQVJFX0VYUE9SVF9JTkZP
OwotCi1wcml2YXRlOgotICAgIGV4cGxpY2l0IFRlcm1pbmF0ZWRFeGVjdXRpb25FcnJvcihWTSYg
dm0pCi0gICAgICAgIDogSlNOb25GaW5hbE9iamVjdCh2bSwgdm0udGVybWluYXRlZEV4ZWN1dGlv
bkVycm9yU3RydWN0dXJlLmdldCgpKQotICAgIHsKLSAgICB9Ci0KLSAgICBzdGF0aWMgSlNWYWx1
ZSBkZWZhdWx0VmFsdWUoY29uc3QgSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByZWZlcnJl
ZFByaW1pdGl2ZVR5cGUpOwotCi19OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkocmV2aXNpb24gMjc1NjExKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkod29ya2luZyBjb3B5KQpA
QCAtNzMsNyArNzMsNiBAQCBjbGFzcyBUaHJvd1Njb3BlOwogc3RydWN0IEhhc2hUYWJsZTsKIHN0
cnVjdCBIYXNoVGFibGVWYWx1ZTsKIAotSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc1Rlcm1pbmF0
ZWRFeGVjdXRpb25FeGNlcHRpb24oVk0mLCBFeGNlcHRpb24qKTsKIEpTX0VYUE9SVF9QUklWQVRF
IEV4Y2VwdGlvbiogdGhyb3dUeXBlRXJyb3IoSlNHbG9iYWxPYmplY3QqLCBUaHJvd1Njb3BlJiwg
Y29uc3QgU3RyaW5nJik7CiBleHRlcm4gSlNfRVhQT1JUX1BSSVZBVEUgY29uc3QgQVNDSUlMaXRl
cmFsIE5vbkV4dGVuc2libGVPYmplY3RQcm9wZXJ0eURlZmluZUVycm9yOwogZXh0ZXJuIEpTX0VY
UE9SVF9QUklWQVRFIGNvbnN0IEFTQ0lJTGl0ZXJhbCBSZWFkb25seVByb3BlcnR5V3JpdGVFcnJv
cjsKQEAgLTE0OTcsNyArMTQ5Niw3IEBAIGlubGluZSBKU1ZhbHVlIEpTT2JqZWN0OjpnZXQoSlNH
bG9iYWxPYmoKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzLCBQcm9wZXJ0eVNsb3Q6OkludGVy
bmFsTWV0aG9kVHlwZTo6R2V0KTsKICAgICBib29sIGhhc1Byb3BlcnR5ID0gY29uc3RfY2FzdDxK
U09iamVjdCo+KHRoaXMpLT5nZXRQcm9wZXJ0eVNsb3QoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIHNsb3QpOwogCi0gICAgRVhDRVBUSU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0aW9uKCkgfHwg
aXNUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKHZtLCBzY29wZS5leGNlcHRpb24oKSkgfHwg
IWhhc1Byb3BlcnR5KTsKKyAgICBFWENFUFRJT05fQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSB8
fCB2bS5pc1Rlcm1pbmF0aW9uRXhjZXB0aW9uKHNjb3BlLmV4Y2VwdGlvbigpKSB8fCAhaGFzUHJv
cGVydHkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGpzVW5kZWZpbmVkKCkpOwog
CiAgICAgaWYgKGhhc1Byb3BlcnR5KQpAQCAtMTUxMyw3ICsxNTEyLDcgQEAgaW5saW5lIEpTVmFs
dWUgSlNPYmplY3Q6OmdldChKU0dsb2JhbE9iagogICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXMs
IFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXQpOwogICAgIGJvb2wgaGFzUHJv
cGVydHkgPSBjb25zdF9jYXN0PEpTT2JqZWN0Kj4odGhpcyktPmdldFByb3BlcnR5U2xvdChnbG9i
YWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAKLSAgICBFWENFUFRJT05fQVNTRVJUKCFz
Y29wZS5leGNlcHRpb24oKSB8fCBpc1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24odm0sIHNj
b3BlLmV4Y2VwdGlvbigpKSB8fCAhaGFzUHJvcGVydHkpOworICAgIEVYQ0VQVElPTl9BU1NFUlQo
IXNjb3BlLmV4Y2VwdGlvbigpIHx8IHZtLmlzVGVybWluYXRpb25FeGNlcHRpb24oc2NvcGUuZXhj
ZXB0aW9uKCkpIHx8ICFoYXNQcm9wZXJ0eSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwganNVbmRlZmluZWQoKSk7CiAKICAgICBpZiAoaGFzUHJvcGVydHkpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZS5jcHAJKHJldmlzaW9uIDI3NTYxMSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTIyOCw3ICsyMjgsNyBAQCBKU1Byb21pc2UqIEpTUHJvbWlzZTo6cmVqZWN0V2l0
aENhdWdodEV4CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEV4Y2VwdGlv
biogZXhjZXB0aW9uID0gc2NvcGUuZXhjZXB0aW9uKCk7CiAgICAgQVNTRVJUKGV4Y2VwdGlvbik7
Ci0gICAgaWYgKFVOTElLRUxZKGlzVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbih2bSwgZXhj
ZXB0aW9uKSkpIHsKKyAgICBpZiAoVU5MSUtFTFkodm0uaXNUZXJtaW5hdGlvbkV4Y2VwdGlvbihl
eGNlcHRpb24pKSkgewogICAgICAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgICAgIHJldHVybiB0
aGlzOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAJKHJldmlz
aW9uIDI3NTYxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDMyLDcgKzQzMiw2IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFw
VHlwZSBoZWFwVHlwZSwKICAgICBzbWFsbFN0cmluZ3MuaW5pdGlhbGl6ZUNvbW1vblN0cmluZ3Mo
KnRoaXMpOwogCiAgICAgcHJvcGVydHlOYW1lcyA9IG5ldyBDb21tb25JZGVudGlmaWVycygqdGhp
cyk7Ci0gICAgdGVybWluYXRlZEV4ZWN1dGlvbkVycm9yU3RydWN0dXJlLnNldCgqdGhpcywgVGVy
bWluYXRlZEV4ZWN1dGlvbkVycm9yOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIG51bGxwdHIsIGpz
TnVsbCgpKSk7CiAgICAgcHJvcGVydHlOYW1lRW51bWVyYXRvclN0cnVjdHVyZS5zZXQoKnRoaXMs
IEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCBudWxscHRy
LCBqc051bGwoKSkpOwogICAgIGdldHRlclNldHRlclN0cnVjdHVyZS5zZXQoKnRoaXMsIEdldHRl
clNldHRlcjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCBudWxscHRyLCBqc051bGwoKSkpOwogICAg
IGN1c3RvbUdldHRlclNldHRlclN0cnVjdHVyZS5zZXQoKnRoaXMsIEN1c3RvbUdldHRlclNldHRl
cjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCBudWxscHRyLCBqc051bGwoKSkpOwpAQCAtNzQxLDgg
Kzc0MCwxMCBAQCBWTSomIFZNOjpzaGFyZWRJbnN0YW5jZUludGVybmFsKCkKIAogV2F0Y2hkb2cm
IFZNOjplbnN1cmVXYXRjaGRvZygpCiB7Ci0gICAgaWYgKCFtX3dhdGNoZG9nKQorICAgIGlmICgh
bV93YXRjaGRvZykgewogICAgICAgICBtX3dhdGNoZG9nID0gYWRvcHRSZWYobmV3IFdhdGNoZG9n
KHRoaXMpKTsKKyAgICAgICAgZW5zdXJlVGVybWluYXRpb25FeGNlcHRpb24oKTsKKyAgICB9CiAg
ICAgcmV0dXJuICptX3dhdGNoZG9nOwogfQogCkBAIC03NjIsNiArNzYzLDE3IEBAIFNhbXBsaW5n
UHJvZmlsZXImIFZNOjplbnN1cmVTYW1wbGluZ1Byb2YKIH0KICNlbmRpZiAvLyBFTkFCTEUoU0FN
UExJTkdfUFJPRklMRVIpCiAKK3N0YXRpYyBTeW1ib2xJbXBsOjpTdGF0aWNTeW1ib2xJbXBsIHRl
cm1pbmF0aW9uRXJyb3JTeW1ib2wgeyAiVGVybWluYXRpb25FcnJvciIsIFN5bWJvbEltcGw6OnNf
ZmxhZ0lzUHJpdmF0ZSB9OworCitFeGNlcHRpb24qIFZNOjplbnN1cmVUZXJtaW5hdGlvbkV4Y2Vw
dGlvbigpCit7CisgICAgaWYgKCFtX3Rlcm1pbmF0aW9uRXhjZXB0aW9uKSB7CisgICAgICAgIFN5
bWJvbCogdGVybWluYXRpb25FcnJvciA9IFN5bWJvbDo6Y3JlYXRlKCp0aGlzLCB0ZXJtaW5hdGlv
bkVycm9yU3ltYm9sKTsKKyAgICAgICAgbV90ZXJtaW5hdGlvbkV4Y2VwdGlvbiA9IEV4Y2VwdGlv
bjo6Y3JlYXRlKCp0aGlzLCB0ZXJtaW5hdGlvbkVycm9yLCBFeGNlcHRpb246OkRvTm90Q2FwdHVy
ZVN0YWNrKTsKKyAgICB9CisgICAgcmV0dXJuIG1fdGVybWluYXRpb25FeGNlcHRpb247Cit9CisK
ICNpZiBFTkFCTEUoSklUKQogc3RhdGljIFRodW5rR2VuZXJhdG9yIHRodW5rR2VuZXJhdG9yRm9y
SW50cmluc2ljKEludHJpbnNpYyBpbnRyaW5zaWMpCiB7CkBAIC05NDYsOCArOTU4LDI1IEBAIHZv
aWQgVk06OmNsZWFyU291cmNlUHJvdmlkZXJDYWNoZXMoKQogICAgIHNvdXJjZVByb3ZpZGVyQ2Fj
aGVNYXAuY2xlYXIoKTsKIH0KIAotRXhjZXB0aW9uKiBWTTo6dGhyb3dFeGNlcHRpb24oSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRXhjZXB0aW9uKiBleGNlcHRpb24pCit2b2lkIFZNOjp0
aHJvd1Rlcm1pbmF0aW9uRXhjZXB0aW9uKCkKIHsKKyAgICBzZXRFeGNlcHRpb24odGVybWluYXRp
b25FeGNlcHRpb24oKSk7Cit9CisKK0V4Y2VwdGlvbiogVk06OnRocm93RXhjZXB0aW9uKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEV4Y2VwdGlvbiogZXhjZXB0aW9uVG9UaHJvdykKK3sK
KyAgICAvLyBUaGUgVGVybWluYXRpb25FeGNlcHRpb24gaXMgbm90IGxpa2Ugb3JkaW5hcnkgZXhj
ZXB0aW9ucyB0aGF0IHNob3VsZCBiZQorICAgIC8vIHJlcG9ydGVkIHRvIHRoZSBkZWJ1Z2dlci4g
VGhlIGZhY3QgdGhhdCB0aGUgVGVybWluYXRpb25FeGNlcHRpb24gdXNlcyB0aGUKKyAgICAvLyBl
eGNlcHRpb24gaGFuZGxpbmcgbWVjaGFuaXNtIGlzIGp1c3QgYSBWTSBpbnRlcm5hbCBpbXBsZW1l
bnRhdGlvbiBkZXRhaWwuCisgICAgLy8gSXQgaXMgbm90IG1lYW5pbmdmdWwgdG8gcmVwb3J0IGl0
IHRvIHRoZSBkZWJ1Z2dlciBhcyBhbiBleGNlcHRpb24uCisgICAgaWYgKGlzVGVybWluYXRpb25F
eGNlcHRpb24oZXhjZXB0aW9uVG9UaHJvdykpIHsKKyAgICAgICAgLy8gTm90ZTogd2UgY2FuIG9u
bHkgZ2V0IGhlcmUgaXMgd2UncmUganVzdCByZS10aHJvd2luZyB0aGUgVGVybWluYXRpb25FeGNl
cHRpb24KKyAgICAgICAgLy8gZnJvbSBDKysgZnVuY3Rpb25zIHRvIHByb3BhZ2F0ZSBpdC4gSWYg
d2UncmUgdGhyb3dpbmcgaXQgZm9yIHRoZSBmaXJzdAorICAgICAgICAvLyB0aW1lLCB3ZSB3b3Vs
ZCBoYXZlIGdvbmUgdGhyb3VnaCBWTTo6dGhyb3dUZXJtaW5hdGlvbkV4Y2VwdGlvbigpLgorICAg
ICAgICBzZXRFeGNlcHRpb24oZXhjZXB0aW9uVG9UaHJvdyk7CisgICAgICAgIHJldHVybiBleGNl
cHRpb25Ub1Rocm93OworICAgIH0KKwogICAgIENhbGxGcmFtZSogdGhyb3dPcmlnaW5GcmFtZSA9
IHRvcEpTQ2FsbEZyYW1lKCk7CiAgICAgaWYgKCF0aHJvd09yaWdpbkZyYW1lKQogICAgICAgICB0
aHJvd09yaWdpbkZyYW1lID0gZ2xvYmFsT2JqZWN0LT5kZXByZWNhdGVkQ2FsbEZyYW1lRm9yRGVi
dWdnZXIoKTsKQEAgLTk1OCwxNSArOTg3LDE1IEBAIEV4Y2VwdGlvbiogVk06OnRocm93RXhjZXB0
aW9uKEpTR2xvYmFsT2IKICAgICAgICAgQ1JBU0goKTsKICAgICB9CiAKLSAgICBpbnRlcnByZXRl
ci0+bm90aWZ5RGVidWdnZXJPZkV4Y2VwdGlvblRvQmVUaHJvd24oKnRoaXMsIGdsb2JhbE9iamVj
dCwgdGhyb3dPcmlnaW5GcmFtZSwgZXhjZXB0aW9uKTsKKyAgICBpbnRlcnByZXRlci0+bm90aWZ5
RGVidWdnZXJPZkV4Y2VwdGlvblRvQmVUaHJvd24oKnRoaXMsIGdsb2JhbE9iamVjdCwgdGhyb3dP
cmlnaW5GcmFtZSwgZXhjZXB0aW9uVG9UaHJvdyk7CiAKLSAgICBzZXRFeGNlcHRpb24oZXhjZXB0
aW9uKTsKKyAgICBzZXRFeGNlcHRpb24oZXhjZXB0aW9uVG9UaHJvdyk7CiAKICNpZiBFTkFCTEUo
RVhDRVBUSU9OX1NDT1BFX1ZFUklGSUNBVElPTikKICAgICBtX25hdGl2ZVN0YWNrVHJhY2VPZkxh
c3RUaHJvdyA9IFN0YWNrVHJhY2U6OmNhcHR1cmVTdGFja1RyYWNlKE9wdGlvbnM6OnVuZXhwZWN0
ZWRFeGNlcHRpb25TdGFja1RyYWNlTGltaXQoKSk7CiAgICAgbV90aHJvd2luZ1RocmVhZCA9ICZU
aHJlYWQ6OmN1cnJlbnQoKTsKICNlbmRpZgotICAgIHJldHVybiBleGNlcHRpb247CisgICAgcmV0
dXJuIGV4Y2VwdGlvblRvVGhyb3c7CiB9CiAKIEV4Y2VwdGlvbiogVk06OnRocm93RXhjZXB0aW9u
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdGhyb3duVmFsdWUpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHJldmlzaW9uIDI3NTYxMSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzOCw2ICsz
MzgsMjAgQEAgcHVibGljOgogICAgIFdlYWtSYW5kb20mIHJhbmRvbSgpIHsgcmV0dXJuIG1fcmFu
ZG9tOyB9CiAgICAgSW50ZWdyaXR5OjpSYW5kb20mIGludGVncml0eVJhbmRvbSgpIHsgcmV0dXJu
IG1faW50ZWdyaXR5UmFuZG9tOyB9CiAKKyAgICBKU19FWFBPUlRfUFJJVkFURSBFeGNlcHRpb24q
IGVuc3VyZVRlcm1pbmF0aW9uRXhjZXB0aW9uKCk7CisgICAgRXhjZXB0aW9uKiB0ZXJtaW5hdGlv
bkV4Y2VwdGlvbigpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQobV90ZXJtaW5hdGlvbkV4
Y2VwdGlvbik7CisgICAgICAgIHJldHVybiBtX3Rlcm1pbmF0aW9uRXhjZXB0aW9uOworICAgIH0K
KyAgICBib29sIGlzVGVybWluYXRpb25FeGNlcHRpb24oRXhjZXB0aW9uKiBleGNlcHRpb24pIGNv
bnN0CisgICAgeworICAgICAgICBBU1NFUlQoZXhjZXB0aW9uKTsKKyAgICAgICAgcmV0dXJuIGV4
Y2VwdGlvbiA9PSBtX3Rlcm1pbmF0aW9uRXhjZXB0aW9uOworICAgIH0KKworICAgIHZvaWQgdGhy
b3dUZXJtaW5hdGlvbkV4Y2VwdGlvbigpOworCiBwcml2YXRlOgogICAgIHVuc2lnbmVkIG5leHRJ
RCgpOwogCkBAIC02NjQsNyArNjc4LDYgQEAgcHVibGljOgogI2VuZGlmCiAgICAgU3Ryb25nPFN0
cnVjdHVyZT4gc3RydWN0dXJlU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHN0cnVj
dHVyZVJhcmVEYXRhU3RydWN0dXJlOwotICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHRlcm1pbmF0ZWRF
eGVjdXRpb25FcnJvclN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBzdHJpbmdTdHJ1
Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gcHJvcGVydHlOYW1lRW51bWVyYXRvclN0cnVj
dHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBnZXR0ZXJTZXR0ZXJTdHJ1Y3R1cmU7CkBAIC0x
MDc4LDYgKzEwOTEsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBuZWVkVHJhcEhhbmRsaW5nKFZNVHJh
cHM6Ok1hc2sgbWFzaykgeyByZXR1cm4gbV90cmFwcy5uZWVkVHJhcEhhbmRsaW5nKG1hc2spOyB9
CiAgICAgdm9pZCogbmVlZFRyYXBIYW5kbGluZ0FkZHJlc3MoKSB7IHJldHVybiBtX3RyYXBzLm5l
ZWRUcmFwSGFuZGxpbmdBZGRyZXNzKCk7IH0KIAorICAgIC8vIFRoZXNlIG1heSBiZSBjYWxsZWQg
Y29uY3VycmVudGx5IGZyb20gYW5vdGhlciB0aHJlYWQuCiAgICAgdm9pZCBub3RpZnlOZWVkRGVi
dWdnZXJCcmVhaygpIHsgbV90cmFwcy5maXJlVHJhcChWTVRyYXBzOjpOZWVkRGVidWdnZXJCcmVh
ayk7IH0KICAgICB2b2lkIG5vdGlmeU5lZWRTaGVsbFRpbWVvdXRDaGVjaygpIHsgbV90cmFwcy5m
aXJlVHJhcChWTVRyYXBzOjpOZWVkU2hlbGxUaW1lb3V0Q2hlY2spOyB9CiAgICAgdm9pZCBub3Rp
ZnlOZWVkVGVybWluYXRpb24oKSB7IG1fdHJhcHMuZmlyZVRyYXAoVk1UcmFwczo6TmVlZFRlcm1p
bmF0aW9uKTsgfQpAQCAtMTE4Niw2ICsxMjAwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkKiBtX2xh
c3RTdGFja1RvcCB7IG51bGxwdHIgfTsKIAogICAgIEV4Y2VwdGlvbiogbV9leGNlcHRpb24geyBu
dWxscHRyIH07CisgICAgRXhjZXB0aW9uKiBtX3Rlcm1pbmF0aW9uRXhjZXB0aW9uIHsgbnVsbHB0
ciB9OwogICAgIEV4Y2VwdGlvbiogbV9sYXN0RXhjZXB0aW9uIHsgbnVsbHB0ciB9OwogI2lmIEVO
QUJMRShFWENFUFRJT05fU0NPUEVfVkVSSUZJQ0FUSU9OKQogICAgIEV4Y2VwdGlvblNjb3BlKiBt
X3RvcEV4Y2VwdGlvblNjb3BlIHsgbnVsbHB0ciB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk1UcmFwcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk1UcmFwcy5jcHAJKHJldmlzaW9uIDI3NTYxMSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNVHJhcHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgwLDgg
KzM4MCw3IEBAIHZvaWQgVk1UcmFwczo6aGFuZGxlVHJhcHMoSlNHbG9iYWxPYmplY3QKICAgICAg
ICAgICAgIEZBTExUSFJPVUdIOwogCiAgICAgICAgIGNhc2UgTmVlZFRlcm1pbmF0aW9uOgotICAg
ICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlVGVybWlu
YXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbigmdm0pKTsKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgdm0udGhyb3dUZXJtaW5hdGlvbkV4Y2Vw
dGlvbigpKTsKIAogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NTYxMSkKKysrIFNvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBACisyMDIx
LTA0LTA3ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUg
YW5kIG1ha2UgdGhlIFRlcm1pbmF0aW9uRXhjZXB0aW9uIGEgc2luZ2xldG9uLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0Mjk1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gdGhlIFdvcmtlck9yV29y
a2xldFNjcmlwdENvbnRyb2xsZXIgY29uc3RydWN0b3IsIHdlIGVuc3VyZSB0aGUgVGVybWluYXRp
b25FeGNlcHRpb24KKyAgICAgICAgYmVjYXVzZSB3b3JrZXJzIG5lZWQgdG8gc3VwcG9ydCB0ZXJt
aW5hdGlvbiByZXF1ZXN0cy4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NRXhjZXB0aW9u
SGFuZGxpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVwb3J0RXhjZXB0aW9uKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAoV2ViQ29yZTo6aGFuZGxlUmVz
cG9uc2VPblN0cmVhbWluZ0FjdGlvbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Qcm9t
aXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVByb21pc2U6OndoZW5Qcm9taXNlSXNTZXR0
bGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVByb21pc2VEZWZlcnJlZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEZWZlcnJlZFByb21pc2U6OnJlamVjdCk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRXZlbnRM
aXN0ZW5lcjo6aGFuZGxlRXZlbnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1JlYWRhYmxlU3Ry
ZWFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omludm9rZVJlYWRhYmxlU3RyZWFtRnVuY3Rpb24p
OgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVTdHJlYW06OmxvY2spOgorICAgICAgICAoV2Vi
Q29yZTo6Y2hlY2tSZWFkYWJsZVN0cmVhbSk6CisgICAgICAgICogYmluZGluZ3MvanMvUmVhZGFi
bGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbnZva2VS
ZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6UmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlcjo6ZXJyb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlcjo6ZW5xdWV1ZSk6CisgICAgICAg
ICogd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Oldvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI6Oldvcmtlck9yV29ya2xl
dFNjcmlwdENvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyT3JXb3JrbGV0U2Ny
aXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyT3JXb3Jr
bGV0U2NyaXB0Q29udHJvbGxlcjo6bGlua0FuZEV2YWx1YXRlTW9kdWxlKToKKyAgICAgICAgKFdl
YkNvcmU6Oldvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmxvYWRBbmRFdmFsdWF0ZU1v
ZHVsZSk6CisKIDIwMjEtMDQtMDcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAog
ICAgICAgICBEcm9wIHVubmVjZXNzYXJ5IE5ERUJVRyBjaGVja3MgaW4gU2VydmljZVdvcmtlckNv
bnRhaW5lcgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01FeGNlcHRpb25I
YW5kbGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01FeGNlcHRpb25IYW5kbGluZy5jcHAJKHJldmlzaW9uIDI3NTYxMSkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NRXhjZXB0aW9uSGFuZGxpbmcuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMSBIYXJyaSBQ
b3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwNC0yMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAgQ29weXJpZ2h0IChDKSAyMDA3IFNh
bXVlbCBXZWluaWcgPHNhbUB3ZWJraXQub3JnPgogICogIENvcHlyaWdodCAoQykgMjAxMyBNaWNo
YWVsIFBydWV0dCA8bWljaGFlbEA2OGsub3JnPgogICoKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBy
ZXBvcnRFeGNlcHRpb24oSlNHbG9iYWxPYmplY3QqIGxleAogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX0NBVENIX1NDT1BFKHZtKTsKIAogICAgIFJFTEVBU0VfQVNTRVJUKHZtLmN1cnJlbnRUaHJl
YWRJc0hvbGRpbmdBUElMb2NrKCkpOwotICAgIGlmIChpc1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNl
cHRpb24odm0sIGV4Y2VwdGlvbikpCisgICAgaWYgKHZtLmlzVGVybWluYXRpb25FeGNlcHRpb24o
ZXhjZXB0aW9uKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgRXJyb3JIYW5kbGluZ1Njb3BlIGVy
cm9yU2NvcGUobGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCShyZXZpc2lvbiAyNzU2
MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE0MSw3ICsxNDEsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04obWFrZURPTUV4Y2VwdGlvCiAgICAgICAgIGNvZGUgPSBBYm9ydEVycm9yOwogICAgIGF1dG8g
dmFsdWUgPSBjcmVhdGVET01FeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBjb2RlLCBtZXNzYWdlKTsK
IAotICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigpIHx8IGlzVGVybWluYXRl
ZEV4ZWN1dGlvbkV4Y2VwdGlvbih2bSwgc2NvcGUuZXhjZXB0aW9uKCkpKTsKKyAgICBFWENFUFRJ
T05fQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSB8fCB2bS5pc1Rlcm1pbmF0aW9uRXhjZXB0aW9u
KHNjb3BlLmV4Y2VwdGlvbigpKSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVl
KTsKIH0KQEAgLTQxMCw3ICs0MTAsNyBAQCBzdGF0aWMgSlNDOjpKU1Byb21pc2UqIGhhbmRsZVJl
c3BvbnNlT25TCiAgICAgICAgICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgICAgICAgICAgICAgIGF1dG8gZXJyb3IgPSBjcmVhdGVET01FeGNlcHRpb24o
Kmdsb2JhbE9iamVjdCwgV1RGTW92ZShleGNlcHRpb24pKTsKICAgICAgICAgICAgICAgICBpZiAo
VU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpKSB7Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VS
VChpc1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24odm0sIHNjb3BlLmV4Y2VwdGlvbigpKSk7
CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVCh2bS5pc1Rlcm1pbmF0aW9uRXhjZXB0aW9uKHNj
b3BlLmV4Y2VwdGlvbigpKSk7CiAgICAgICAgICAgICAgICAgICAgIGNvbXBpbGVyLT5jYW5jZWwo
KTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmNwcAkocmV2aXNpb24g
Mjc1NjExKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC01Nyw3ICs1Nyw3IEBAIGF1dG8gRE9NUHJvbWlzZTo6d2hlblByb21pc2VJ
c1NldHRsZWQoSlMKICAgICBjb25zdCBKU0M6OklkZW50aWZpZXImIHByaXZhdGVOYW1lID0gdm0u
cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkudGhlblByaXZhdGVOYW1lKCk7CiAgICAgYXV0
byB0aGVuRnVuY3Rpb24gPSBwcm9taXNlLT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIHByaXZh
dGVOYW1lKTsKIAotICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigpIHx8IGlz
VGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCksIHNj
b3BlLmV4Y2VwdGlvbigpKSk7CisgICAgRVhDRVBUSU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0aW9u
KCkgfHwgdm0uaXNUZXJtaW5hdGlvbkV4Y2VwdGlvbihzY29wZS5leGNlcHRpb24oKSkpOwogICAg
IGlmIChzY29wZS5leGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIElzQ2FsbGJhY2tSZWdpc3Rl
cmVkOjpObzsKIApAQCAtNzEsNyArNzEsNyBAQCBhdXRvIERPTVByb21pc2U6OndoZW5Qcm9taXNl
SXNTZXR0bGVkKEpTCiAgICAgQVNTRVJUKGNhbGxEYXRhLnR5cGUgIT0gSlNDOjpDYWxsRGF0YTo6
VHlwZTo6Tm9uZSk7CiAgICAgY2FsbCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhlbkZ1bmN0aW9u
LCBjYWxsRGF0YSwgcHJvbWlzZSwgYXJndW1lbnRzKTsKIAotICAgIEVYQ0VQVElPTl9BU1NFUlQo
IXNjb3BlLmV4Y2VwdGlvbigpIHx8IGlzVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihsZXhp
Y2FsR2xvYmFsT2JqZWN0LnZtKCksIHNjb3BlLmV4Y2VwdGlvbigpKSk7CisgICAgRVhDRVBUSU9O
X0FTU0VSVCghc2NvcGUuZXhjZXB0aW9uKCkgfHwgdm0uaXNUZXJtaW5hdGlvbkV4Y2VwdGlvbihz
Y29wZS5leGNlcHRpb24oKSkpOwogICAgIHJldHVybiBzY29wZS5leGNlcHRpb24oKSA/IElzQ2Fs
bGJhY2tSZWdpc3RlcmVkOjpObyA6IElzQ2FsbGJhY2tSZWdpc3RlcmVkOjpZZXM7CiB9CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZURlZmVycmVkLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2VEZWZl
cnJlZC5jcHAJKHJldmlzaW9uIDI3NTYxMSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NUHJvbWlzZURlZmVycmVkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEyOSw3ICsxMjks
OCBAQCB2b2lkIERlZmVycmVkUHJvbWlzZTo6cmVqZWN0KEV4Y2VwdGlvbiBlCiAgICAgQVNTRVJU
KGRlZmVycmVkKCkpOwogICAgIEFTU0VSVChtX2dsb2JhbE9iamVjdCk7CiAgICAgYXV0byYgbGV4
aWNhbEdsb2JhbE9iamVjdCA9ICptX2dsb2JhbE9iamVjdDsKLSAgICBKU0M6OkpTTG9ja0hvbGRl
ciBsb2NrZXIoJmxleGljYWxHbG9iYWxPYmplY3QpOworICAgIEpTQzo6Vk0mIHZtID0gbGV4aWNh
bEdsb2JhbE9iamVjdC52bSgpOworICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcih2bSk7CiAK
ICAgICBpZiAoZXhjZXB0aW9uLmNvZGUoKSA9PSBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yKSB7CiAg
ICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKGxleGljYWxHbG9iYWxPYmpl
Y3Qudm0oKSk7CkBAIC0xNDMsMTAgKzE0NCwxMCBAQCB2b2lkIERlZmVycmVkUHJvbWlzZTo6cmVq
ZWN0KEV4Y2VwdGlvbiBlCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRShsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCkpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBhdXRvIGVycm9yID0gY3Jl
YXRlRE9NRXhjZXB0aW9uKGxleGljYWxHbG9iYWxPYmplY3QsIFdURk1vdmUoZXhjZXB0aW9uKSk7
CiAgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkgewotICAgICAgICBBU1NFUlQo
aXNUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKGxleGljYWxHbG9iYWxPYmplY3Qudm0oKSwg
c2NvcGUuZXhjZXB0aW9uKCkpKTsKKyAgICAgICAgQVNTRVJUKHZtLmlzVGVybWluYXRpb25FeGNl
cHRpb24oc2NvcGUuZXhjZXB0aW9uKCkpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAt
MTYyLDEwICsxNjMsMTEgQEAgdm9pZCBEZWZlcnJlZFByb21pc2U6OnJlamVjdChFeGNlcHRpb25D
bwogICAgIEFTU0VSVChkZWZlcnJlZCgpKTsKICAgICBBU1NFUlQobV9nbG9iYWxPYmplY3QpOwog
ICAgIGF1dG8mIGxleGljYWxHbG9iYWxPYmplY3QgPSAqbV9nbG9iYWxPYmplY3Q7Ci0gICAgSlND
OjpKU0xvY2tIb2xkZXIgbG9ja2VyKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBKU0M6OlZN
JiB2bSA9IGxleGljYWxHbG9iYWxPYmplY3Qudm0oKTsKKyAgICBKU0M6OkpTTG9ja0hvbGRlciBs
b2NrZXIodm0pOwogCiAgICAgaWYgKGVjID09IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IpIHsKLSAg
ICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUobGV4aWNhbEdsb2JhbE9iamVj
dC52bSgpKTsKKyAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwog
CiAgICAgICAgIEVYQ0VQVElPTl9BU1NFUlQoc2NvcGUuZXhjZXB0aW9uKCkpOwogCkBAIC0xNzYs
MTAgKzE3OCwxMCBAQCB2b2lkIERlZmVycmVkUHJvbWlzZTo6cmVqZWN0KEV4Y2VwdGlvbkNvCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRShsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCkpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgICBhdXRvIGVycm9yID0gY3JlYXRlRE9NRXhjZXB0aW9uKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBlYywgbWVzc2FnZSk7CiAgICAgaWYgKFVOTElLRUxZKHNjb3Bl
LmV4Y2VwdGlvbigpKSkgewotICAgICAgICBBU1NFUlQoaXNUZXJtaW5hdGVkRXhlY3V0aW9uRXhj
ZXB0aW9uKGxleGljYWxHbG9iYWxPYmplY3Qudm0oKSwgc2NvcGUuZXhjZXB0aW9uKCkpKTsKKyAg
ICAgICAgQVNTRVJUKHZtLmlzVGVybWluYXRpb25FeGNlcHRpb24oc2NvcGUuZXhjZXB0aW9uKCkp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNFdmVudExpc3RlbmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCShyZXZpc2lvbiAyNzU2MTEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xOTMsNyArMTkzLDcgQEAgdm9pZCBKU0V2ZW50TGlzdGVuZXI6OmhhbmRsZUV2ZW50KFNj
cmlwdAogICAgIGF1dG8gaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQgPSBbJl0gKCkgLT4gYm9vbCB7
CiAgICAgICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4oc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCkpIHsKICAgICAgICAgICAgIGF1dG8mIHNjcmlwdENvbnRyb2xsZXIgPSAqZG93bmNhc3Q8V29y
a2VyR2xvYmFsU2NvcGU+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLnNjcmlwdCgpOwotICAgICAg
ICAgICAgYm9vbCB0ZXJtaW5hdG9yQ2F1c2VkRXhjZXB0aW9uID0gKHNjb3BlLmV4Y2VwdGlvbigp
ICYmIGlzVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbih2bSwgc2NvcGUuZXhjZXB0aW9uKCkp
KTsKKyAgICAgICAgICAgIGJvb2wgdGVybWluYXRvckNhdXNlZEV4Y2VwdGlvbiA9IChzY29wZS5l
eGNlcHRpb24oKSAmJiB2bS5pc1Rlcm1pbmF0aW9uRXhjZXB0aW9uKHNjb3BlLmV4Y2VwdGlvbigp
KSk7CiAgICAgICAgICAgICBpZiAodGVybWluYXRvckNhdXNlZEV4Y2VwdGlvbiB8fCBzY3JpcHRD
b250cm9sbGVyLmlzVGVybWluYXRpbmdFeGVjdXRpb24oKSkKICAgICAgICAgICAgICAgICBzY3Jp
cHRDb250cm9sbGVyLmZvcmJpZEV4ZWN1dGlvbigpOwogICAgICAgICB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW0uY3BwCShyZXZpc2lvbiAyNzU2
MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3LTIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3
LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC02NywxMiArNjcsMTIgQEAgc3RhdGljIGlubGluZSBPcHRpb25hbDxK
U0M6OkpTVmFsdWU+IGludgogICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2sodm0pOwogCiAgICAg
YXV0byBmdW5jdGlvbiA9IGxleGljYWxHbG9iYWxPYmplY3QuZ2V0KCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBpZGVudGlmaWVyKTsKLSAgICBBU1NFUlQoZnVuY3Rpb24uaXNDYWxsYWJsZShsZXhpY2Fs
R2xvYmFsT2JqZWN0LnZtKCkpKTsKKyAgICBBU1NFUlQoZnVuY3Rpb24uaXNDYWxsYWJsZSh2bSkp
OwogCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwogICAgIGF1dG8g
Y2FsbERhdGEgPSBKU0M6OmdldENhbGxEYXRhKHZtLCBmdW5jdGlvbik7CiAgICAgYXV0byByZXN1
bHQgPSBjYWxsKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBmdW5jdGlvbiwgY2FsbERhdGEsIHRoaXNW
YWx1ZSwgYXJndW1lbnRzKTsKLSAgICBFWENFUFRJT05fQVNTRVJUKCFzY29wZS5leGNlcHRpb24o
KSB8fCBpc1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24obGV4aWNhbEdsb2JhbE9iamVjdC52
bSgpLCBzY29wZS5leGNlcHRpb24oKSkpOworICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNjb3BlLmV4
Y2VwdGlvbigpIHx8IHZtLmlzVGVybWluYXRpb25FeGNlcHRpb24oc2NvcGUuZXhjZXB0aW9uKCkp
KTsKICAgICBpZiAoc2NvcGUuZXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiB7IH07CiAgICAg
cmV0dXJuIHJlc3VsdDsKQEAgLTEzMSw3ICsxMzEsNyBAQCB2b2lkIFJlYWRhYmxlU3RyZWFtOjps
b2NrKCkKICAgICBBU1NFUlQoIWFyZ3MuaGFzT3ZlcmZsb3dlZCgpKTsKIAogICAgIEpTQzo6Y29u
c3RydWN0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBjb25zdHJ1Y3RvciwgY29uc3RydWN0RGF0YSwg
YXJncyk7Ci0gICAgRVhDRVBUSU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0aW9uKCkgfHwgaXNUZXJt
aW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKGxleGljYWxHbG9iYWxPYmplY3Qudm0oKSwgc2NvcGUu
ZXhjZXB0aW9uKCkpKTsKKyAgICBFWENFUFRJT05fQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSB8
fCB2bS5pc1Rlcm1pbmF0aW9uRXhjZXB0aW9uKHNjb3BlLmV4Y2VwdGlvbigpKSk7CiB9CiAKIHN0
YXRpYyBpbmxpbmUgYm9vbCBjaGVja1JlYWRhYmxlU3RyZWFtKEpTRE9NR2xvYmFsT2JqZWN0JiBn
bG9iYWxPYmplY3QsIEpTUmVhZGFibGVTdHJlYW0qIHJlYWRhYmxlU3RyZWFtLCBKU0M6OkpTVmFs
dWUgZnVuY3Rpb24pCkBAIC0xNDksNyArMTQ5LDcgQEAgc3RhdGljIGlubGluZSBib29sIGNoZWNr
UmVhZGFibGVTdHJlYW0oSgogICAgIEFTU0VSVChjYWxsRGF0YS50eXBlICE9IEpTQzo6Q2FsbERh
dGE6OlR5cGU6Ok5vbmUpOwogCiAgICAgYXV0byByZXN1bHQgPSBjYWxsKCZsZXhpY2FsR2xvYmFs
T2JqZWN0LCBmdW5jdGlvbiwgY2FsbERhdGEsIEpTQzo6anNVbmRlZmluZWQoKSwgYXJndW1lbnRz
KTsKLSAgICBFWENFUFRJT05fQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSB8fCBpc1Rlcm1pbmF0
ZWRFeGVjdXRpb25FeGNlcHRpb24obGV4aWNhbEdsb2JhbE9iamVjdC52bSgpLCBzY29wZS5leGNl
cHRpb24oKSkpOworICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigpIHx8IHZt
LmlzVGVybWluYXRpb25FeGNlcHRpb24oc2NvcGUuZXhjZXB0aW9uKCkpKTsKIAogICAgIHJldHVy
biByZXN1bHQuaXNUcnVlKCkgfHwgc2NvcGUuZXhjZXB0aW9uKCk7CiB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbURl
ZmF1bHRDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjc1NjExKQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE2IENhbm9uIElu
Yy4KLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCwgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTUwLDcgKzUwLDcg
QEAgc3RhdGljIGJvb2wgaW52b2tlUmVhZGFibGVTdHJlYW1EZWZhdWx0QwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKICAgICBhdXRvIGNhbGxEYXRhID0gSlNDOjpn
ZXRDYWxsRGF0YSh2bSwgZnVuY3Rpb24pOwogICAgIGNhbGwoJmxleGljYWxHbG9iYWxPYmplY3Qs
IGZ1bmN0aW9uLCBjYWxsRGF0YSwgSlNDOjpqc1VuZGVmaW5lZCgpLCBhcmd1bWVudHMpOwotICAg
IEVYQ0VQVElPTl9BU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigpIHx8IGlzVGVybWluYXRlZEV4ZWN1
dGlvbkV4Y2VwdGlvbihsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCksIHNjb3BlLmV4Y2VwdGlvbigp
KSk7CisgICAgRVhDRVBUSU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0aW9uKCkgfHwgdm0uaXNUZXJt
aW5hdGlvbkV4Y2VwdGlvbihzY29wZS5leGNlcHRpb24oKSkpOwogICAgIHJldHVybiAhc2NvcGUu
ZXhjZXB0aW9uKCk7CiB9CiAKQEAgLTc1LDcgKzc1LDcgQEAgdm9pZCBSZWFkYWJsZVN0cmVhbURl
ZmF1bHRDb250cm9sbGVyOjplcgogICAgIGF1dG8gdmFsdWUgPSBjcmVhdGVET01FeGNlcHRpb24o
JmxleGljYWxHbG9iYWxPYmplY3QsIGV4Y2VwdGlvbi5jb2RlKCksIGV4Y2VwdGlvbi5tZXNzYWdl
KCkpOwogCiAgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkgewotICAgICAgICBB
U1NFUlQoaXNUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKGxleGljYWxHbG9iYWxPYmplY3Qu
dm0oKSwgc2NvcGUuZXhjZXB0aW9uKCkpKTsKKyAgICAgICAgQVNTRVJUKHZtLmlzVGVybWluYXRp
b25FeGNlcHRpb24oc2NvcGUuZXhjZXB0aW9uKCkpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IApAQCAtODMsNyArODMsNyBAQCB2b2lkIFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXI6
OmVyCiAgICAgYXJndW1lbnRzLmFwcGVuZCgmanNDb250cm9sbGVyKCkpOwogICAgIGFyZ3VtZW50
cy5hcHBlbmQodmFsdWUpOwogCi0gICAgYXV0byogY2xpZW50RGF0YSA9IHN0YXRpY19jYXN0PEpT
Vk1DbGllbnREYXRhKj4obGV4aWNhbEdsb2JhbE9iamVjdC52bSgpLmNsaWVudERhdGEpOworICAg
IGF1dG8qIGNsaWVudERhdGEgPSBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVu
dERhdGEpOwogICAgIGF1dG8mIHByaXZhdGVOYW1lID0gY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0
aW9ucygpLnJlYWRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMoKS5yZWFkYWJsZVN0cmVhbURl
ZmF1bHRDb250cm9sbGVyRXJyb3JQcml2YXRlTmFtZSgpOwogCiAgICAgaW52b2tlUmVhZGFibGVT
dHJlYW1EZWZhdWx0Q29udHJvbGxlckZ1bmN0aW9uKGdsb2JhbE9iamVjdCgpLCBwcml2YXRlTmFt
ZSwgYXJndW1lbnRzKTsKQEAgLTEyMSw3ICsxMjEsNyBAQCBib29sIFJlYWRhYmxlU3RyZWFtRGVm
YXVsdENvbnRyb2xsZXI6OmVuCiAgICAgYXV0byB2YWx1ZSA9IHRvSlMoJmxleGljYWxHbG9iYWxP
YmplY3QsICZsZXhpY2FsR2xvYmFsT2JqZWN0LCBjaHVuay5nZXQoKSk7CiAKICAgICBpZiAoVU5M
SUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpKSB7Ci0gICAgICAgIEFTU0VSVChpc1Rlcm1pbmF0ZWRF
eGVjdXRpb25FeGNlcHRpb24obGV4aWNhbEdsb2JhbE9iamVjdC52bSgpLCBzY29wZS5leGNlcHRp
b24oKSkpOworICAgICAgICBBU1NFUlQodm0uaXNUZXJtaW5hdGlvbkV4Y2VwdGlvbihzY29wZS5l
eGNlcHRpb24oKSkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0U2NyaXB0
Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDI3NTYxMSkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMjAgQXBwbGUgSW5jLiBB
bGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMjEgQXBwbGUgSW5j
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEdvb2ds
ZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC02Nyw2ICs2
NywxMSBAQCBXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpXb3JrZXJPCiAgICAgLCBt
X2dsb2JhbFNjb3BlV3JhcHBlcigqbV92bSkKIHsKICAgICBtX3ZtLT5oZWFwLmFjcXVpcmVBY2Nl
c3MoKTsgLy8gSXQncyBub3QgY2xlYXIgdGhhdCB3ZSBoYXZlIGdvb2QgZGlzY2lwbGluZSBmb3Ig
aGVhcCBhY2Nlc3MsIHNvIHR1cm4gaXQgb24gcGVybWFuZW50bHkuCisgICAgeworICAgICAgICBK
U0xvY2tIb2xkZXIgbG9jayhtX3ZtLmdldCgpKTsKKyAgICAgICAgbV92bS0+ZW5zdXJlVGVybWlu
YXRpb25FeGNlcHRpb24oKTsKKyAgICB9CisKICAgICBKU1ZNQ2xpZW50RGF0YTo6aW5pdE5vcm1h
bFdvcmxkKG1fdm0uZ2V0KCksIHR5cGUpOwogfQogCkBAIC0yMTgsNyArMjIzLDcgQEAgdm9pZCBX
b3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpldgogCiAgICAgSlNFeGVjU3RhdGU6OnBy
b2ZpbGVkRXZhbHVhdGUoJmdsb2JhbE9iamVjdCwgSlNDOjpQcm9maWxpbmdSZWFzb246Ok90aGVy
LCBzb3VyY2VDb2RlLmpzU291cmNlQ29kZSgpLCBtX2dsb2JhbFNjb3BlV3JhcHBlci0+Z2xvYmFs
VGhpcygpLCByZXR1cm5lZEV4Y2VwdGlvbik7CiAKLSAgICBpZiAoKHJldHVybmVkRXhjZXB0aW9u
ICYmIGlzVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbih2bSwgcmV0dXJuZWRFeGNlcHRpb24p
KSB8fCBpc1Rlcm1pbmF0aW5nRXhlY3V0aW9uKCkpIHsKKyAgICBpZiAoKHJldHVybmVkRXhjZXB0
aW9uICYmIHZtLmlzVGVybWluYXRpb25FeGNlcHRpb24ocmV0dXJuZWRFeGNlcHRpb24pKSB8fCBp
c1Rlcm1pbmF0aW5nRXhlY3V0aW9uKCkpIHsKICAgICAgICAgZm9yYmlkRXhlY3V0aW9uKCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CkBAIC0zNTEsNyArMzU2LDcgQEAgdm9pZCBXb3JrZXJPcldv
cmtsZXRTY3JpcHRDb250cm9sbGVyOjpsaQogCiAgICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+
IHJldHVybmVkRXhjZXB0aW9uOwogICAgIEpTRXhlY1N0YXRlOjpsaW5rQW5kRXZhbHVhdGVNb2R1
bGUoZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBzY3JpcHRGZXRjaGVyLm1v
ZHVsZUtleSgpKSwganNVbmRlZmluZWQoKSwgcmV0dXJuZWRFeGNlcHRpb24pOwotICAgIGlmICgo
cmV0dXJuZWRFeGNlcHRpb24gJiYgaXNUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKHZtLCBy
ZXR1cm5lZEV4Y2VwdGlvbikpIHx8IGlzVGVybWluYXRpbmdFeGVjdXRpb24oKSkgeworICAgIGlm
ICgocmV0dXJuZWRFeGNlcHRpb24gJiYgdm0uaXNUZXJtaW5hdGlvbkV4Y2VwdGlvbihyZXR1cm5l
ZEV4Y2VwdGlvbikpIHx8IGlzVGVybWluYXRpbmdFeGVjdXRpb24oKSkgewogICAgICAgICBmb3Ji
aWRFeGVjdXRpb24oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTQwOSw3ICs0MTQsNyBA
QCB2b2lkIFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmxvCiAKICAgICAgICAgICAg
IE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiByZXR1cm5lZEV4Y2VwdGlvbjsKICAgICAgICAgICAg
IEpTRXhlY1N0YXRlOjpsaW5rQW5kRXZhbHVhdGVNb2R1bGUoKmdsb2JhbE9iamVjdCwgbW9kdWxl
S2V5LCBqc1VuZGVmaW5lZCgpLCByZXR1cm5lZEV4Y2VwdGlvbik7Ci0gICAgICAgICAgICBpZiAo
KHJldHVybmVkRXhjZXB0aW9uICYmIGlzVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbih2bSwg
cmV0dXJuZWRFeGNlcHRpb24pKSB8fCBjb250ZXh0LT5zY3JpcHQoKS0+aXNUZXJtaW5hdGluZ0V4
ZWN1dGlvbigpKSB7CisgICAgICAgICAgICBpZiAoKHJldHVybmVkRXhjZXB0aW9uICYmIHZtLmlz
VGVybWluYXRpb25FeGNlcHRpb24ocmV0dXJuZWRFeGNlcHRpb24pKSB8fCBjb250ZXh0LT5zY3Jp
cHQoKS0+aXNUZXJtaW5hdGluZ0V4ZWN1dGlvbigpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGNv
bnRleHQtPnNjcmlwdCgpKQogICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5zY3JpcHQoKS0+
Zm9yYmlkRXhlY3V0aW9uKCk7CiAgICAgICAgICAgICAgICAgdGFzay0+cnVuKFdURjo6bnVsbG9w
dCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>