<?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>215312</bug_id>
          
          <creation_ts>2020-08-09 02:06:57 -0700</creation_ts>
          <short_desc>REGRESSION(r263195): Revert all related GC Bitmap changes because some of perf is not fully recovered</short_desc>
          <delta_ts>2020-08-09 04:50:19 -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>New Bugs</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>
          
          <blocked>213071</blocked>
    
    <blocked>213345</blocked>
    
    <blocked>215285</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1678956</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-08-09 02:06:57 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/263195 broke the build:
Revert all related GC Bitmap changes because some of perf is not fully recovered

This is an automatic bug report generated by webkitbot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1678960</commentid>
    <comment_count>1</comment_count>
      <attachid>406265</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-08-09 02:07:08 -0700</bug_when>
    <thetext>Created attachment 406265
REVERT of r263195

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the revert will be successful.  This process takes approximately 15 minutes.

If you would like to land the revert faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1678961</commentid>
    <comment_count>2</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-08-09 02:14:12 -0700</bug_when>
    <thetext>It is still possible that performance plot fluctuation is showing this not fully recovered, but anyway, reverting is just fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1678968</commentid>
    <comment_count>3</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-08-09 04:49:16 -0700</bug_when>
    <thetext>Committed r265416: &lt;https://trac.webkit.org/changeset/265416&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 406265.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1678971</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-08-09 04:50:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/66745699&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406265</attachid>
            <date>2020-08-09 02:07:08 -0700</date>
            <delta_ts>2020-08-09 04:49:17 -0700</delta_ts>
            <desc>REVERT of r263195</desc>
            <filename>bug-215312-20200809090707.patch</filename>
            <type>text/plain</type>
            <size>55703</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1NDE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
NDAwOTVkYTUzN2U0YTRjM2Q3NTMyMmIzYjE1MmYwNDQyN2Q4MjZjLi42YzljNTFhOWE3ZjZhMDVl
OWIyOWEwNzY3NjA1MzBiNDAwNmRhZWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNiBAQAorMjAyMC0wOC0wOSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNjMxOTUsIHIyNjMyNTIs
IGFuZCByMjY1Mzk0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE1MzEyCisKKyAgICAgICAgUmV2ZXJ0IGFsbCByZWxhdGVkIEdDIEJpdG1hcCBjaGFu
Z2VzIGJlY2F1c2Ugc29tZSBvZiBwZXJmIGlzCisgICAgICAgIG5vdCBmdWxseSByZWNvdmVyZWQK
KworICAgICAgICBSZXZlcnRlZCBjaGFuZ2VzZXRzOgorCisgICAgICAgICJSZXBsYWNlIEpTQzo6
RnJlZUxpc3QgbGlua2VkIGxpc3Qgd2l0aCBhIEJpdG1hcC4iCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMwNzEKKyAgICAgICAgaHR0cHM6Ly90cmFj
LndlYmtpdC5vcmcvY2hhbmdlc2V0LzI2MzE5NQorCisgICAgICAgICJVbmlmeSBCaXRtYXAgbWF0
aCBsb29wcyBpbgorICAgICAgICBNYXJrZWRCbG9jazo6SGFuZGxlOjpzcGVjaWFsaXplZFN3ZWVw
KCkuIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEz
MzQ1CisgICAgICAgIGh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yNjMyNTIKKwor
ICAgICAgICAiW0pTQ10gRGlzYWJsZSBFTkFCTEVfQklUTUFQX0ZSRUVMSVNUIgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1Mjg1CisgICAgICAgIGh0
dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yNjUzOTQKKwogMjAyMC0wOC0wOCAgWXVz
dWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIFNwZWN1bGF0
ZSBjaGlsZHJlbiBmaXJzdCBpbiBERkcgTmV3QXJyYXkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggY2NkODVmNzZhYWM2YzBkZDhi
Yjk0ZjFjMWY4ZWNjOTM4ZjA1MmZmNS4uOTFmY2I3Yjc2Yzc4NWRjNTIxNDY2Yzk2MjczZTA3Y2Uz
YzdkY2E4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dU
Ri9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAyMC0wOC0wOSAgQ29tbWl0IFF1ZXVlICA8
Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5n
IHIyNjMxOTUsIHIyNjMyNTIsIGFuZCByMjY1Mzk0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1MzEyCisKKyAgICAgICAgUmV2ZXJ0IGFsbCByZWxh
dGVkIEdDIEJpdG1hcCBjaGFuZ2VzIGJlY2F1c2Ugc29tZSBvZiBwZXJmIGlzCisgICAgICAgIG5v
dCBmdWxseSByZWNvdmVyZWQKKworICAgICAgICBSZXZlcnRlZCBjaGFuZ2VzZXRzOgorCisgICAg
ICAgICJSZXBsYWNlIEpTQzo6RnJlZUxpc3QgbGlua2VkIGxpc3Qgd2l0aCBhIEJpdG1hcC4iCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMwNzEKKyAg
ICAgICAgaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzI2MzE5NQorCisgICAgICAg
ICJVbmlmeSBCaXRtYXAgbWF0aCBsb29wcyBpbgorICAgICAgICBNYXJrZWRCbG9jazo6SGFuZGxl
OjpzcGVjaWFsaXplZFN3ZWVwKCkuIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjEzMzQ1CisgICAgICAgIGh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2No
YW5nZXNldC8yNjMyNTIKKworICAgICAgICAiW0pTQ10gRGlzYWJsZSBFTkFCTEVfQklUTUFQX0ZS
RUVMSVNUIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE1Mjg1CisgICAgICAgIGh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yNjUzOTQK
KwogMjAyMC0wOC0wOCAgSm9vbmdodW4gUGFyayAgPGpoNzE4LnBhcmtAc2Ftc3VuZy5jb20+CiAK
ICAgICAgICAgW1dURl0gUmVtb3ZlIHRoZSBidWlsZCB3YXJuaW5nIHNpbmNlIHIyNjUzNDQuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggMGVm
NDVjMDU4MzQ5NjlkNDNmMzQ0YTU0ODRmODU1MzJlMjJmMTNhZi4uZTc4OTJhYzZjMjBlOTY3NThi
NDMzM2RkNmY1M2M1NWRmYmUyY2FhMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMTG93ZXJERkdUb0IzLmNwcApAQCAtMTUyMDQsMTQgKzE1MjA0LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycysrOwogICAgICAgICBl
bHNlCiAgICAgICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXJXaXRoQ2xvYmJl
cihhbGxvY2F0b3IpOwotI2lmIEVOQUJMRShCSVRNQVBfRlJFRUxJU1QpCi0gICAgICAgIGNvbnN0
ZXhwciB1bnNpZ25lZCBzY3JhdGNoUmVnaXN0ZXJzTmVlZGVkID0gMzsKLSAgICAgICAgY29uc3Rl
eHByIHVuc2lnbmVkIGFsbG9jYXRvclNjcmF0Y2ggPSAzOwotI2Vsc2UKLSAgICAgICAgY29uc3Rl
eHByIHVuc2lnbmVkIHNjcmF0Y2hSZWdpc3RlcnNOZWVkZWQgPSAxOwotICAgICAgICBjb25zdGV4
cHIgdW5zaWduZWQgYWxsb2NhdG9yU2NyYXRjaCA9IDE7Ci0jZW5kaWYKLSAgICAgICAgcGF0Y2hw
b2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzICs9IHNjcmF0Y2hSZWdpc3RlcnNOZWVkZWQ7Cisg
ICAgICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycysrOwogICAgICAgICBwYXRj
aHBvaW50LT5yZXN1bHRDb25zdHJhaW50cyA9IHsgVmFsdWVSZXA6OlNvbWVFYXJseVJlZ2lzdGVy
IH07CiAgICAgICAgIAogICAgICAgICBtX291dC5hcHBlbmRTdWNjZXNzb3IodXN1YWxseShjb250
aW51YXRpb24pKTsKQEAgLTE1MjI0LDcgKzE1MjE3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgICAgICBHUFJSZWcgYWxsb2NhdG9yR1BSOwogICAgICAgICAgICAg
ICAgIGlmIChhY3R1YWxBbGxvY2F0b3IuaXNDb25zdGFudCgpKQotICAgICAgICAgICAgICAgICAg
ICBhbGxvY2F0b3JHUFIgPSBwYXJhbXMuZ3BTY3JhdGNoKGFsbG9jYXRvclNjcmF0Y2gpOworICAg
ICAgICAgICAgICAgICAgICBhbGxvY2F0b3JHUFIgPSBwYXJhbXMuZ3BTY3JhdGNoKDEpOwogICAg
ICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgYWxsb2NhdG9yR1BSID0gcGFy
YW1zWzFdLmdwcigpOwogICAgICAgICAgICAgICAgIApAQCAtMTUyMzYsMTEgKzE1MjI5LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICAvLyBhbGwgb2YgdGhlIGNvbXBpbGVyIHRpZXJzLgog
ICAgICAgICAgICAgICAgIGppdC5lbWl0QWxsb2NhdGVXaXRoTm9uTnVsbEFsbG9jYXRvcigKICAg
ICAgICAgICAgICAgICAgICAgcGFyYW1zWzBdLmdwcigpLCBhY3R1YWxBbGxvY2F0b3IsIGFsbG9j
YXRvckdQUiwgcGFyYW1zLmdwU2NyYXRjaCgwKSwKLSAgICAgICAgICAgICAgICAgICAganVtcFRv
U2xvd1BhdGgKLSNpZiBFTkFCTEUoQklUTUFQX0ZSRUVMSVNUKQotICAgICAgICAgICAgICAgICAg
ICAsIHBhcmFtcy5ncFNjcmF0Y2goMSksIHBhcmFtcy5ncFNjcmF0Y2goMikKLSNlbmRpZgotICAg
ICAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgICAgICAgICBqdW1wVG9TbG93UGF0aCk7
CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGp1
bXBUb1N1Y2Nlc3M7CiAgICAgICAgICAgICAgICAgaWYgKCFwYXJhbXMuZmFsbHNUaHJvdWdoVG9T
dWNjZXNzb3IoMCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9GcmVl
TGlzdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9GcmVlTGlzdC5jcHAKaW5kZXgg
NWQyMTczNzBlNGY4YzY2ODE5NDYwMjlmNWQxNWZkYTVmMTNiZjhlZi4uODBjNTg3MmQwNjBhOTVi
M2EzMWVhMDgyMDg0MzBhNTRiMWFlNTk0YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvRnJlZUxpc3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Zy
ZWVMaXN0LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYt
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTM5LDQ4ICszOSwxMyBAQCBGcmVlTGlzdDo6fkZyZWVMaXN0KCkKIAog
dm9pZCBGcmVlTGlzdDo6Y2xlYXIoKQogewotI2lmIEVOQUJMRShCSVRNQVBfRlJFRUxJU1QpCi0g
ICAgbV9jdXJyZW50Um93Qml0bWFwID0gMDsKLSAgICBtX2N1cnJlbnRSb3dJbmRleCA9IDA7Ci0j
ZWxzZQogICAgIG1fc2NyYW1ibGVkSGVhZCA9IDA7CiAgICAgbV9zZWNyZXQgPSAwOwotI2VuZGlm
CiAgICAgbV9wYXlsb2FkRW5kID0gbnVsbHB0cjsKICAgICBtX3JlbWFpbmluZyA9IDA7CiAgICAg
bV9vcmlnaW5hbFNpemUgPSAwOwogfQogCi0jaWYgRU5BQkxFKEJJVE1BUF9GUkVFTElTVCkKLQot
dm9pZCBGcmVlTGlzdDo6aW5pdGlhbGl6ZUF0b21zQml0bWFwKE1hcmtlZEJsb2NrOjpIYW5kbGUq
IGJsb2NrLCBBdG9tc0JpdG1hcCYgZnJlZUF0b21zLCB1bnNpZ25lZCBieXRlcykKLXsKLSNpZiBB
U1NFUlRfRU5BQkxFRAotICAgIG1fbWFya2VkQmxvY2sgPSBibG9jazsKLSNlbmRpZgotICAgIEFT
U0VSVF9VTlVTRUQoZnJlZUF0b21zLCAmZnJlZUF0b21zID09ICZtX2JpdG1hcCk7Ci0gICAgLy8g
bV9iaXRtYXAgaGFzIGFscmVhZHkgYmVlbiBmaWxsZWQgaW4gYnkgTWFya2VkQmxvY2s6OkhhbmRs
ZTo6c3BlY2lhbGl6ZWRTd2VlcCgpLgotCi0gICAgbV9jdXJyZW50Um93Qml0bWFwID0gMDsKLSAg
ICBzaXplX3Qgcm93SW5kZXggPSBBdG9tc0JpdG1hcDo6bnVtYmVyT2ZXb3JkczsKLSAgICB3aGls
ZSAocm93SW5kZXgtLSkgewotICAgICAgICBhdXRvIHJvd0JpdG1hcCA9IG1fYml0bWFwLndvcmRB
dChyb3dJbmRleCk7Ci0gICAgICAgIGlmIChyb3dCaXRtYXApIHsKLSAgICAgICAgICAgIG1fY3Vy
cmVudFJvd0JpdG1hcCA9IHJvd0JpdG1hcDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9
Ci0gICAgfQotICAgIEFTU0VSVChtX2N1cnJlbnRSb3dCaXRtYXAgfHwgbV9iaXRtYXAuaXNFbXB0
eSgpKTsKLSAgICBtX2N1cnJlbnRSb3dJbmRleCA9IG1fY3VycmVudFJvd0JpdG1hcCA/IHJvd0lu
ZGV4IDogMDsKLQotICAgIHNpemVfdCBmaXJzdEF0b21JblJvdyA9IG1fY3VycmVudFJvd0luZGV4
ICogYXRvbXNQZXJSb3c7Ci0gICAgbV9jdXJyZW50TWFya2VkQmxvY2tSb3dBZGRyZXNzID0gYml0
d2lzZV9jYXN0PEF0b20qPihibG9jay0+YXRvbUF0KGZpcnN0QXRvbUluUm93KSk7Ci0gICAgbV9v
cmlnaW5hbFNpemUgPSBieXRlczsKLX0KLQotI2Vsc2UKLS8vIExpbmtlZCBMaXN0IGltcGxlbWVu
dGF0aW9uLgotCiB2b2lkIEZyZWVMaXN0Ojppbml0aWFsaXplTGlzdChGcmVlQ2VsbCogaGVhZCwg
dWludHB0cl90IHNlY3JldCwgdW5zaWduZWQgYnl0ZXMpCiB7CiAgICAgLy8gSXQncyAqc2xpZ2h0
bHkqIG1vcmUgb3B0aW1hbCB0byB1c2UgYSBzY3JhbWJsZWQgaGVhZC4gSXQgc2F2ZXMgYSByZWdp
c3RlciBvbiB0aGUgZmFzdCBwYXRoLgpAQCAtOTEsMjMgKzU2LDE2IEBAIHZvaWQgRnJlZUxpc3Q6
OmluaXRpYWxpemVMaXN0KEZyZWVDZWxsKiBoZWFkLCB1aW50cHRyX3Qgc2VjcmV0LCB1bnNpZ25l
ZCBieXRlcykKICAgICBtX29yaWdpbmFsU2l6ZSA9IGJ5dGVzOwogfQogCi0jZW5kaWYgLy8gRU5B
QkxFKEJJVE1BUF9GUkVFTElTVCkKLQogdm9pZCBGcmVlTGlzdDo6aW5pdGlhbGl6ZUJ1bXAoY2hh
ciogcGF5bG9hZEVuZCwgdW5zaWduZWQgcmVtYWluaW5nKQogewotI2lmIEVOQUJMRShCSVRNQVBf
RlJFRUxJU1QpCi0gICAgbV9jdXJyZW50Um93Qml0bWFwID0gMDsKLSAgICBtX2N1cnJlbnRSb3dJ
bmRleCA9IDA7Ci0jZWxzZQogICAgIG1fc2NyYW1ibGVkSGVhZCA9IDA7CiAgICAgbV9zZWNyZXQg
PSAwOwotI2VuZGlmCiAgICAgbV9wYXlsb2FkRW5kID0gcGF5bG9hZEVuZDsKICAgICBtX3JlbWFp
bmluZyA9IHJlbWFpbmluZzsKICAgICBtX29yaWdpbmFsU2l6ZSA9IHJlbWFpbmluZzsKIH0KIAot
Ym9vbCBGcmVlTGlzdDo6Y29udGFpbnMoSGVhcENlbGwqIHRhcmdldCwgTWFya2VkQmxvY2s6Okhh
bmRsZSogY3VycmVudEJsb2NrKSBjb25zdAorYm9vbCBGcmVlTGlzdDo6Y29udGFpbnMoSGVhcENl
bGwqIHRhcmdldCkgY29uc3QKIHsKICAgICBpZiAobV9yZW1haW5pbmcpIHsKICAgICAgICAgY29u
c3Qgdm9pZCogc3RhcnQgPSAobV9wYXlsb2FkRW5kIC0gbV9yZW1haW5pbmcpOwpAQCAtMTE1LDUx
ICs3MywxOSBAQCBib29sIEZyZWVMaXN0Ojpjb250YWlucyhIZWFwQ2VsbCogdGFyZ2V0LCBNYXJr
ZWRCbG9jazo6SGFuZGxlKiBjdXJyZW50QmxvY2spIGNvbgogICAgICAgICByZXR1cm4gKHN0YXJ0
IDw9IHRhcmdldCkgJiYgKHRhcmdldCA8IGVuZCk7CiAgICAgfQogCi0jaWYgRU5BQkxFKEJJVE1B
UF9GUkVFTElTVCkKLSAgICBpZiAoYml0bWFwSXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICAvLyBjdXJyZW50QmxvY2sgbWF5IGJlIG51bGwgaWYgdGhlIGFsbG9jYXRvciBo
YXMgYmVlbiByZXNldCAoYW5kIHRoZXJlZm9yZSwKLSAgICAvLyB0aGUgRnJlZUxpc3QgY2xlYXJl
ZC4gSGVuY2UsIHdlIHNob3VsZCBvbmx5IGNoZWNrIHRoaXMgYXNzZXJ0aW9uIGFmdGVyCi0gICAg
Ly8gd2UgY2hlY2sgaWYgdGhlIEZyZWVMaXN0IGJpdG1hcCBpcyBlbXB0eSBhYm92ZS4KLSAgICBB
U1NFUlQobV9tYXJrZWRCbG9jayA9PSBjdXJyZW50QmxvY2spOwotICAgIGlmICghY3VycmVudEJs
b2NrLT5jb250YWlucyh0YXJnZXQpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICB1bnNp
Z25lZCBhdG9tTnVtYmVyID0gY3VycmVudEJsb2NrLT5ibG9jaygpLmF0b21OdW1iZXIodGFyZ2V0
KTsKLSAgICB1bnNpZ25lZCByb3dJbmRleCA9IGF0b21OdW1iZXIgLyBhdG9tc1BlclJvdzsKLSAg
ICBpZiAocm93SW5kZXggPiBtX2N1cnJlbnRSb3dJbmRleCkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIGlmIChyb3dJbmRleCA9PSBtX2N1cnJlbnRSb3dJbmRleCkgewotICAgICAgICBjb25z
dGV4cHIgQXRvbXNCaXRtYXA6OldvcmQgb25lID0gMTsKLSAgICAgICAgdW5zaWduZWQgZmlyc3RB
dG9tSW5Sb3cgPSByb3dJbmRleCAqIGF0b21zUGVyUm93OwotICAgICAgICB1bnNpZ25lZCBhdG9t
SW5kZXhJblJvdyA9IGF0b21OdW1iZXIgLSBmaXJzdEF0b21JblJvdzsKLSAgICAgICAgcmV0dXJu
IG1fY3VycmVudFJvd0JpdG1hcCAmIChvbmUgPDwgYXRvbUluZGV4SW5Sb3cpOwotICAgIH0KLSAg
ICByZXR1cm4gbV9iaXRtYXAuZ2V0KGF0b21OdW1iZXIpOwotCi0jZWxzZQotICAgIFVOVVNFRF9Q
QVJBTShjdXJyZW50QmxvY2spOwogICAgIEZyZWVDZWxsKiBjYW5kaWRhdGUgPSBoZWFkKCk7CiAg
ICAgd2hpbGUgKGNhbmRpZGF0ZSkgewogICAgICAgICBpZiAoYml0d2lzZV9jYXN0PEhlYXBDZWxs
Kj4oY2FuZGlkYXRlKSA9PSB0YXJnZXQpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgY2FuZGlkYXRlID0gY2FuZGlkYXRlLT5uZXh0KG1fc2VjcmV0KTsKICAgICB9CisKICAgICBy
ZXR1cm4gZmFsc2U7Ci0jZW5kaWYKIH0KIAogdm9pZCBGcmVlTGlzdDo6ZHVtcChQcmludFN0cmVh
bSYgb3V0KSBjb25zdAogewotI2lmIEVOQUJMRShCSVRNQVBfRlJFRUxJU1QpCi0gICAgaWYgKG1f
cmVtYWluaW5nKQotICAgICAgICBvdXQucHJpbnQoIntwYXlsb2FkRW5kID0gIiwgUmF3UG9pbnRl
cihtX3BheWxvYWRFbmQpLCAiLCByZW1haW5pbmcgPSAiLCBtX3JlbWFpbmluZywgIiwgb3JpZ2lu
YWxTaXplID0gIiwgbV9vcmlnaW5hbFNpemUsICJ9Iik7Ci0gICAgZWxzZQotICAgICAgICBvdXQu
cHJpbnQoIntjdXJyZW50Um93Qml0bWFwID0gIiwgbV9jdXJyZW50Um93Qml0bWFwLCAiLCBjdXJy
ZW50Um93SW5kZXggPSAiLCBtX2N1cnJlbnRSb3dJbmRleCwgIiwgb3JpZ2luYWxTaXplID0gIiwg
bV9vcmlnaW5hbFNpemUsICJ9Iik7Ci0jZWxzZQogICAgIG91dC5wcmludCgie2hlYWQgPSAiLCBS
YXdQb2ludGVyKGhlYWQoKSksICIsIHNlY3JldCA9ICIsIG1fc2VjcmV0LCAiLCBwYXlsb2FkRW5k
ID0gIiwgUmF3UG9pbnRlcihtX3BheWxvYWRFbmQpLCAiLCByZW1haW5pbmcgPSAiLCBtX3JlbWFp
bmluZywgIiwgb3JpZ2luYWxTaXplID0gIiwgbV9vcmlnaW5hbFNpemUsICJ9Iik7Ci0jZW5kaWYK
IH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9GcmVlTGlzdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRnJlZUxpc3Qu
aAppbmRleCA3ODg1NzcwYWNkNmVlMGI1OTMxYTc4YTA4YWUxMGFjNmJhZDEzNjcyLi45ZDZkZDRh
ZmIxM2E5MDJhODVjNmFmN2I0Y2I5ODFjOTczYTJkYTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9GcmVlTGlzdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0ZyZWVMaXN0LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2
LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yNSwyNSArMjUsMTMgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNp
bmNsdWRlICJNYXJrZWRCbG9jay5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgotI2luY2x1ZGUgPHd0Zi9TdGRJbnRFeHRyYXMuaD4K
IAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEhlYXBDZWxsOwogCi0vLyBDdXJyZW50bHkgaXQg
aXMgZGlzYWJsZWQgYmVjYXVzZSBvZiBTcGVlZG9tZXRlcjIgcmVncmVzc2lvbi4KLS8vIEZJWE1F
OiBXZSBzaG91bGQgYXR0ZW1wdCB0byBlbmFibGUgaXQgYWdhaW4gb3IgcmVtb3ZlIHRoZSBjb2Rl
LgotLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTI4NAotI2lm
IENQVShYODZfNjQpCi0jZGVmaW5lIEVOQUJMRV9CSVRNQVBfRlJFRUxJU1QgMAotI2Vsc2UKLSNk
ZWZpbmUgRU5BQkxFX0JJVE1BUF9GUkVFTElTVCAwCi0jZW5kaWYKLQotI2lmICFFTkFCTEUoQklU
TUFQX0ZSRUVMSVNUKQogc3RydWN0IEZyZWVDZWxsIHsKICAgICBzdGF0aWMgdWludHB0cl90IHNj
cmFtYmxlKEZyZWVDZWxsKiBjZWxsLCB1aW50cHRyX3Qgc2VjcmV0KQogICAgIHsKQEAgLTcwLDcg
KzU4LDYgQEAgc3RydWN0IEZyZWVDZWxsIHsKICAgICB1aW50NjRfdCBwcmVzZXJ2ZWRCaXRzRm9y
Q3Jhc2hBbmFseXNpczsKICAgICB1aW50cHRyX3Qgc2NyYW1ibGVkTmV4dDsKIH07Ci0jZW5kaWYK
IAogY2xhc3MgRnJlZUxpc3QgewogcHVibGljOgpAQCAtNzksNjEgKzY2LDI3IEBAIHB1YmxpYzoK
ICAgICAKICAgICB2b2lkIGNsZWFyKCk7CiAgICAgCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9p
ZCBpbml0aWFsaXplTGlzdChGcmVlQ2VsbCogaGVhZCwgdWludHB0cl90IHNlY3JldCwgdW5zaWdu
ZWQgYnl0ZXMpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgaW5pdGlhbGl6ZUJ1bXAoY2hh
ciogcGF5bG9hZEVuZCwgdW5zaWduZWQgcmVtYWluaW5nKTsKICAgICAKKyAgICBib29sIGFsbG9j
YXRpb25XaWxsRmFpbCgpIGNvbnN0IHsgcmV0dXJuICFoZWFkKCkgJiYgIW1fcmVtYWluaW5nOyB9
CiAgICAgYm9vbCBhbGxvY2F0aW9uV2lsbFN1Y2NlZWQoKSBjb25zdCB7IHJldHVybiAhYWxsb2Nh
dGlvbldpbGxGYWlsKCk7IH0KICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgogICAg
IEhlYXBDZWxsKiBhbGxvY2F0ZShjb25zdCBGdW5jJiBzbG93UGF0aCk7CiAgICAgCi0gICAgYm9v
bCBjb250YWlucyhIZWFwQ2VsbCosIE1hcmtlZEJsb2NrOjpIYW5kbGUqIGN1cnJlbnRCbG9jaykg
Y29uc3Q7CisgICAgYm9vbCBjb250YWlucyhIZWFwQ2VsbCopIGNvbnN0OwogICAgIAogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEZ1bmM+CiAgICAgdm9pZCBmb3JFYWNoKGNvbnN0IEZ1bmMmKSBjb25z
dDsKICAgICAKICAgICB1bnNpZ25lZCBvcmlnaW5hbFNpemUoKSBjb25zdCB7IHJldHVybiBtX29y
aWdpbmFsU2l6ZTsgfQogCi0jaWYgRU5BQkxFKEJJVE1BUF9GUkVFTElTVCkKLSAgICB1c2luZyBB
dG9tID0gTWFya2VkQmxvY2s6OkF0b207Ci0gICAgdXNpbmcgQXRvbXNCaXRtYXAgPSBNYXJrZWRC
bG9jazo6QXRvbXNCaXRtYXA7Ci0KLSAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBhdG9tc1Bl
clJvdyA9IEF0b21zQml0bWFwOjpiaXRzSW5Xb3JkOwotICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6
ZV90IGF0b21zUm93Qnl0ZXMgPSBhdG9tc1BlclJvdyAqIHNpemVvZihBdG9tKTsKLSAgICBzdGF0
aWMgY29uc3RleHByIHVuc2lnbmVkIGF0b21TaXplU2hpZnQgPSBXVEY6OmxvZzJDb25zdGV4cHIo
c2l6ZW9mKEF0b20pKTsKLSAgICBzdGF0aWNfYXNzZXJ0KChzdGF0aWNfY2FzdDxzaXplX3Q+KDEp
IDw8IGF0b21TaXplU2hpZnQpID09IHNpemVvZihBdG9tKSk7Ci0KLSAgICBKU19FWFBPUlRfUFJJ
VkFURSB2b2lkIGluaXRpYWxpemVBdG9tc0JpdG1hcChNYXJrZWRCbG9jazo6SGFuZGxlKiwgQXRv
bXNCaXRtYXAmIGZyZWVBdG9tcywgdW5zaWduZWQgYnl0ZXMpOwotCi0gICAgYm9vbCBiaXRtYXBJ
c0VtcHR5KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIC8vIFJlbWVtYmVyLCB3ZSBkb24ndCBhY3R1
YWxseSBjbGVhciB0aGUgYml0cyBpbiBtX2JpdG1hcCBhcyB3ZSBhbGxvY2F0ZQotICAgICAgICAv
LyB0aGUgYXRvbXMuIEluc3RlYWQsIG1fY3VycmVudFJvd0JpdG1hcCBhbmQgbV9jdXJyZW50Um93
SW5kZXggdGVsbHMgdXMKLSAgICAgICAgLy8gaWYgdGhlcmUgYXJlIGF0b21zIHN0aWxsIGF2YWls
YWJsZSBmb3IgYWxsb2NhdGlvbi4gU2VlIGNvbW1lbnQgYmxvYiBiZWxvdwotICAgICAgICAvLyBh
dCB0aGUgZGVjbGFyYXRpb24gb2YgbV9jdXJyZW50Um93SW5kZXggZm9yIG1vcmUgZGV0YWlscy4K
LSAgICAgICAgcmV0dXJuICFtX2N1cnJlbnRSb3dCaXRtYXAgJiYgIW1fY3VycmVudFJvd0luZGV4
OwotICAgIH0KLSAgICBib29sIGFsbG9jYXRpb25XaWxsRmFpbCgpIGNvbnN0IHsgcmV0dXJuIGJp
dG1hcElzRW1wdHkoKSAmJiAhbV9yZW1haW5pbmc7IH0KLQotICAgIHN0YXRpYyBwdHJkaWZmX3Qg
b2Zmc2V0T2ZDdXJyZW50Um93Qml0bWFwKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEZyZWVM
aXN0LCBtX2N1cnJlbnRSb3dCaXRtYXApOyB9Ci0KLSAgICAvLyBXZSdyZSBkZWxpYmVyYXRlbHkg
cmV0dXJuaW5nIHRoZSBhZGRyZXNzIG9mIDEgd29yZCBiZWZvcmUgbV9iaXRtYXAgc28gdGhhdAot
ICAgIC8vIHdlIGNhbiBzY2hlZHVsZSBpbnN0cnVjdGlvbnMgYmV0dGVyIGkuZS4gdG8gZG8gYSBs
b2FkIGJlZm9yZSBkZWNyZW1lbnRpbmcgdGhlCi0gICAgLy8gcm93IGluZGV4LgotICAgIHN0YXRp
YyBwdHJkaWZmX3Qgb2Zmc2V0T2ZCaXRtYXBSb3dzTWludXNPbmUoKSB7IHJldHVybiBPQkpFQ1Rf
T0ZGU0VUT0YoRnJlZUxpc3QsIG1fYml0bWFwKSAtIHNpemVvZihBdG9tc0JpdG1hcDo6V29yZCk7
IH0KLQotICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZDdXJyZW50Um93SW5kZXgoKSB7IHJl
dHVybiBPQkpFQ1RfT0ZGU0VUT0YoRnJlZUxpc3QsIG1fY3VycmVudFJvd0luZGV4KTsgfQotICAg
IHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZDdXJyZW50TWFya2VkQmxvY2tSb3dBZGRyZXNzKCkg
eyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEZyZWVMaXN0LCBtX2N1cnJlbnRNYXJrZWRCbG9ja1Jv
d0FkZHJlc3MpOyB9Ci0jZWxzZQotICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgaW5pdGlhbGl6
ZUxpc3QoRnJlZUNlbGwqIGhlYWQsIHVpbnRwdHJfdCBzZWNyZXQsIHVuc2lnbmVkIGJ5dGVzKTsK
LQotICAgIGJvb2wgYWxsb2NhdGlvbldpbGxGYWlsKCkgY29uc3QgeyByZXR1cm4gIWhlYWQoKSAm
JiAhbV9yZW1haW5pbmc7IH0KLQogICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZTY3JhbWJs
ZWRIZWFkKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEZyZWVMaXN0LCBtX3NjcmFtYmxlZEhl
YWQpOyB9CiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlNlY3JldCgpIHsgcmV0dXJuIE9C
SkVDVF9PRkZTRVRPRihGcmVlTGlzdCwgbV9zZWNyZXQpOyB9Ci0jZW5kaWYKLQogICAgIHN0YXRp
YyBwdHJkaWZmX3Qgb2Zmc2V0T2ZQYXlsb2FkRW5kKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9G
KEZyZWVMaXN0LCBtX3BheWxvYWRFbmQpOyB9CiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRP
ZlJlbWFpbmluZygpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihGcmVlTGlzdCwgbV9yZW1haW5p
bmcpOyB9CisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZk9yaWdpbmFsU2l6ZSgpIHsgcmV0
dXJuIE9CSkVDVF9PRkZTRVRPRihGcmVlTGlzdCwgbV9vcmlnaW5hbFNpemUpOyB9CiAgICAgc3Rh
dGljIHB0cmRpZmZfdCBvZmZzZXRPZkNlbGxTaXplKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9G
KEZyZWVMaXN0LCBtX2NlbGxTaXplKTsgfQogICAgIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZv
aWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwpAQCAtMTQxLDc0ICs5NCwxNCBAQCBwdWJsaWM6
CiAgICAgdW5zaWduZWQgY2VsbFNpemUoKSBjb25zdCB7IHJldHVybiBtX2NlbGxTaXplOyB9CiAg
ICAgCiBwcml2YXRlOgotCi0jaWYgRU5BQkxFKEJJVE1BUF9GUkVFTElTVCkKLSAgICBBdG9tc0Jp
dG1hcCYgYXRvbXNCaXRtYXAoKSB7IHJldHVybiBtX2JpdG1hcDsgfQotICAgIEF0b21zQml0bWFw
OjpXb3JkKiBiaXRtYXBSb3dzTWludXNPbmUoKSBjb25zdAotICAgIHsKLSAgICAgICAgLy8gU2Vl
IGNvbW1lbnQgYWJvdXQgb2Zmc2V0T2ZCaXRtYXBSb3dzTWludXNPbmUoKS4KLSAgICAgICAgcmV0
dXJuIGJpdHdpc2VfY2FzdDxBdG9tc0JpdG1hcDo6V29yZCo+KCZtX2JpdG1hcCkgLSAxOwotICAg
IH0KLQotICAgIC8vIFRoaXMgYWxsb2NhdGlvbiBhbGdvcml0aG0gdGhpbmtzIG9mIHRoZSBNYXJr
ZWRCbG9jayBhcyBjb25zaXN0aW5nIG9mIHJvd3MKLSAgICAvLyBvZiBhdG9tcywgd2hlcmUgdGhl
IG51bWJlciBvZiBhdG9tcyBpbiBhIHJvdyBlcXVhbHMgdGhlIG51bWJlciBvZiBiaXRzIGluCi0g
ICAgLy8gYSBBdG9tc0JpdG1hcDo6V29yZC4gT24gNjQtYml0IENQVXMsIHRoaXMgd291bGQgYmUg
NjQuCi0gICAgLy8KLSAgICAvLyBXZSB3aWxsIHN0YXJ0IGFsbG9jYXRpbmcgZnJvbSB0aGUgbGFz
dCAoaGlnaGVzdCBudW1iZXJlZCkgcm93IGRvd24gdG8gdGhlCi0gICAgLy8gZmlyc3QgKHJvdyAw
KS4gQXMgd2UgYWxsb2NhdGUsIHdlIHdpbGwgb25seSB1cGRhdGUgbV9jdXJyZW50Um93SW5kZXgg
YW5kCi0gICAgLy8gbV9jdXJyZW50Um93Qml0bWFwLiBtX2JpdG1hcCB3aWxsIG5vdCBiZSB1cGRh
dGVkLiBUaGlzIGlzIHNvIGluIG9kZXIgdG8KLSAgICAvLyByZWR1Y2UgdGhlIG51bWJlciBvZiBp
bnN0cnVjdGlvbnMgZXhlY3V0ZWQgZHVyaW5nIGFuIGFsbG9jYXRpb24uCi0gICAgLy8KLSAgICAv
LyBXaGVuIG1fY3VycmVudFJvd0luZGV4IHBvaW50cyB0byBOLCB0aGUgQXRvbXNCaXRtYXA6Oldv
cmQgZm9yIHJvdyBOIGluCi0gICAgLy8gbV9iaXRtYXAgd2lsbCBoYXZlIGJlZW4gY29waWVkIGlu
dG8gbV9jdXJyZW50Um93Qml0bWFwLiBUaGlzIGlzIHRoZSByb3cKLSAgICAvLyB0aGF0IHdlIHdp
bGwgYmUgYWxsb2NhdGluZyBmcm9tIHVudGlsIHRoZSByb3cgaXMgZXhoYXVzdGVkLgotICAgIC8v
Ci0gICAgLy8gVGhpcyBpcyBob3cgd2Uga25vdyB3aGV0aGVyIGFuIGF0b20gaXMgYXZhaWxhYmxl
IGZvciBhbGxvY2F0aW9uIG9yIG5vdDoKLSAgICAvLyAxLiBBdG9tcyBpbiBhbnkgcm93cyBhYm92
ZSBtX2N1cnJlbnRSb3dJbmRleCBhcmUgZ3VhcmFudGVlZCB0byBiZQotICAgIC8vICAgIGFsbG9j
YXRlZCBhbHJlYWR5IChiZWNhdXNlIHdlIGFsbG9jYXRlIGRvd253YXJkcyksIGFuZCBoZW5jZSwg
YXJlIG5vdAotICAgIC8vICAgIGF2YWlsYWJsZS4KLSAgICAvLyAyLiBGb3Igcm93IG1fY3VycmVu
dFJvd0luZGV4LCBtX2N1cnJlbnRSb3dCaXRtYXAgaXMgdGhlIHNvdXJjZSBvZiB0cnV0aAotICAg
IC8vICAgIG9uIHdoaWNoIGF0b21zIGluIHRoZSByb3cgYXJlIGF2YWlsYWJsZSBmb3IgYWxsb2Nh
dGlvbi4KLSAgICAvLyAzLiBGb3Igcm93cyBiZWxvdyBtX2N1cnJlbnRSb3dJbmRleCwgbV9iaXRt
YXAgaXMgdGhlIHNvdXJjZSBvZiB0cnV0aCBvbgotICAgIC8vICAgIHdoaWNoIGF0b21zIGFyZSBh
dmFpbGFibGUgZm9yIGFsbG9jYXRpb24uCi0gICAgLy8KLSAgICAvLyBXaGVuIG1fY3VycmVudFJv
d0luZGV4IHJlYWNoZXMgMCwgdGhlIGluZm8gaW4gbV9iaXRtYXAgaXMgY29tcGxldGVseQotICAg
IC8vIG9ic29sZXRlZCwgYW5kIG1fY3VycmVudFJvd0JpdG1hcCBob2xkcyB0aGUgYXZhaWxhYmls
aXR5IGluZm8gZm9yIHJvdyAwLgotICAgIC8vIFdoZW4gYm90aCBtX2N1cnJlbnRSb3dJbmRleCBh
bmQgbV9jdXJyZW50Um93Qml0bWFwIGFyZSAwLCB0aGVuIHdlIGhhdmUKLSAgICAvLyBjb21wbGV0
ZWx5IGV4aGF1c3RlZCB0aGUgYmxvY2sgYW5kIG5vIG1vcmUgYXRvbXMgYXJlIGF2YWlsYWJsZSBm
b3IKLSAgICAvLyBhbGxvY2F0aW9uLgotCi0gICAgQXRvbXNCaXRtYXA6OldvcmQgbV9jdXJyZW50
Um93Qml0bWFwIHsgMCB9OwotICAgIHVuc2lnbmVkIG1fY3VycmVudFJvd0luZGV4IHsgMCB9Owot
ICAgIHVuc2lnbmVkIG1fb3JpZ2luYWxTaXplIHsgMCB9OwotCi0jZWxzZQogICAgIEZyZWVDZWxs
KiBoZWFkKCkgY29uc3QgeyByZXR1cm4gRnJlZUNlbGw6OmRlc2NyYW1ibGUobV9zY3JhbWJsZWRI
ZWFkLCBtX3NlY3JldCk7IH0KLQorICAgIAogICAgIHVpbnRwdHJfdCBtX3NjcmFtYmxlZEhlYWQg
eyAwIH07CiAgICAgdWludHB0cl90IG1fc2VjcmV0IHsgMCB9OwotI2VuZGlmCi0KLSAgICB1bmlv
biB7Ci0gICAgICAgIGNoYXIqIG1fcGF5bG9hZEVuZCB7IG51bGxwdHIgfTsKLSNpZiBFTkFCTEUo
QklUTUFQX0ZSRUVMSVNUKQotICAgICAgICBBdG9tKiBtX2N1cnJlbnRNYXJrZWRCbG9ja1Jvd0Fk
ZHJlc3M7Ci0jZW5kaWYKLSAgICB9OworICAgIGNoYXIqIG1fcGF5bG9hZEVuZCB7IG51bGxwdHIg
fTsKICAgICB1bnNpZ25lZCBtX3JlbWFpbmluZyB7IDAgfTsKLSAgICB1bnNpZ25lZCBtX2NlbGxT
aXplIHsgMCB9OwotCi0jaWYgRU5BQkxFKEJJVE1BUF9GUkVFTElTVCkKLSAgICBBdG9tc0JpdG1h
cCBtX2JpdG1hcDsKLSNlbHNlCiAgICAgdW5zaWduZWQgbV9vcmlnaW5hbFNpemUgeyAwIH07Ci0j
ZW5kaWYKLQotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgTWFya2VkQmxvY2s6OkhhbmRsZSogbV9t
YXJrZWRCbG9jayB7IG51bGxwdHIgfTsKLSNlbmRpZgotCi0gICAgZnJpZW5kIGNsYXNzIE1hcmtl
ZEJsb2NrOworICAgIHVuc2lnbmVkIG1fY2VsbFNpemUgeyAwIH07CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0ZyZWVMaXN0
SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRnJlZUxpc3RJbmxpbmVzLmgK
aW5kZXggMzk1ZWJhNzllMDU1NmRiMTJmMDIzODk1NzQ2YmNkZDdhZmRlMjlkMC4uODQ2MTRmOGZk
YzNkN2Y3ODg4NzU5NGRiYjdkYjM3NTM4ZmIwOTgzMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvRnJlZUxpc3RJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvRnJlZUxpc3RJbmxpbmVzLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE3LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsNyArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAK
ICNpbmNsdWRlICJGcmVlTGlzdC5oIgotI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisjaW5j
bHVkZSAiTWFya2VkQmxvY2suaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTQwLDQ2ICs0MCwx
MyBAQCBBTFdBWVNfSU5MSU5FIEhlYXBDZWxsKiBGcmVlTGlzdDo6YWxsb2NhdGUoY29uc3QgRnVu
YyYgc2xvd1BhdGgpCiAgICAgICAgIG1fcmVtYWluaW5nID0gcmVtYWluaW5nOwogICAgICAgICBy
ZXR1cm4gYml0d2lzZV9jYXN0PEhlYXBDZWxsKj4obV9wYXlsb2FkRW5kIC0gcmVtYWluaW5nIC0g
Y2VsbFNpemUpOwogICAgIH0KLQotI2lmIEVOQUJMRShCSVRNQVBfRlJFRUxJU1QpCi0gICAgQXRv
bXNCaXRtYXA6OldvcmQgcm93Qml0bWFwID0gbV9jdXJyZW50Um93Qml0bWFwOwotICAgIGRvIHsK
LSAgICAgICAgaWYgKHJvd0JpdG1hcCkgewotICAgICAgICAgICAgY29uc3RleHByIEF0b21zQml0
bWFwOjpXb3JkIG9uZSA9IDE7Ci0gICAgICAgICAgICB1bnNpZ25lZCBhdG9tSW5kZXhJblJvdyA9
IGN0eihyb3dCaXRtYXApOwotICAgICAgICAgICAgYXV0byogY2VsbCA9IGJpdHdpc2VfY2FzdDxI
ZWFwQ2VsbCo+KCZtX2N1cnJlbnRNYXJrZWRCbG9ja1Jvd0FkZHJlc3NbYXRvbUluZGV4SW5Sb3dd
KTsKLSAgICAgICAgICAgIHJvd0JpdG1hcCAmPSB+KG9uZSA8PCBhdG9tSW5kZXhJblJvdyk7Ci0g
ICAgICAgICAgICBtX2N1cnJlbnRSb3dCaXRtYXAgPSByb3dCaXRtYXA7Ci0gICAgICAgICAgICBy
ZXR1cm4gY2VsbDsKLSAgICAgICAgfQotCi0gICAgICAgIHVuc2lnbmVkIHJvd0luZGV4ID0gbV9j
dXJyZW50Um93SW5kZXg7Ci0gICAgICAgIGF1dG8qIHJvd0FkZHJlc3MgPSBtX2N1cnJlbnRNYXJr
ZWRCbG9ja1Jvd0FkZHJlc3M7Ci0gICAgICAgIHdoaWxlIChyb3dJbmRleCkgewotICAgICAgICAg
ICAgLy8gV2UgbG9hZCBiZWZvcmUgZGVjcmVtZW50aW5nIHJvd0luZGV4IGJlY2F1c2UgYml0bWFw
Um93c01pbnVzT25lKCkgcG9pbnRzCi0gICAgICAgICAgICAvLyB0byAxIHdvcmQgYmVmb3JlIG1f
Yml0bWFwLiBTZWUgY29tbWVudHMgYWJvdXQgb2Zmc2V0T2ZCaXRtYXBSb3dzTWludXNPbmUoKQot
ICAgICAgICAgICAgLy8gZm9yIHdoeSB3ZSBkbyB0aGlzLgotICAgICAgICAgICAgcm93Qml0bWFw
ID0gYml0bWFwUm93c01pbnVzT25lKClbcm93SW5kZXgtLV07Ci0gICAgICAgICAgICByb3dBZGRy
ZXNzIC09IGF0b21zUGVyUm93OwotICAgICAgICAgICAgaWYgKHJvd0JpdG1hcCkKLSAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBtX2N1cnJlbnRNYXJrZWRCbG9ja1Jv
d0FkZHJlc3MgPSByb3dBZGRyZXNzOwotICAgICAgICBtX2N1cnJlbnRSb3dJbmRleCA9IHJvd0lu
ZGV4OwotICAgIH0gd2hpbGUgKHJvd0JpdG1hcCk7Ci0KLSAgICBtX2N1cnJlbnRSb3dCaXRtYXAg
PSByb3dCaXRtYXA7Ci0gICAgQVNTRVJUKGJpdG1hcElzRW1wdHkoKSk7Ci0gICAgcmV0dXJuIHNs
b3dQYXRoKCk7Ci0KLSNlbHNlIC8vICFFTkFCTEUoQklUTUFQX0ZSRUVMSVNUKQorICAgIAogICAg
IEZyZWVDZWxsKiByZXN1bHQgPSBoZWFkKCk7CiAgICAgaWYgKFVOTElLRUxZKCFyZXN1bHQpKQog
ICAgICAgICByZXR1cm4gc2xvd1BhdGgoKTsKICAgICAKICAgICBtX3NjcmFtYmxlZEhlYWQgPSBy
ZXN1bHQtPnNjcmFtYmxlZE5leHQ7CiAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxIZWFwQ2VsbCo+
KHJlc3VsdCk7Ci0jZW5kaWYgLy8gIUVOQUJMRShCSVRNQVBfRlJFRUxJU1QpCiB9CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIEZ1bmM+CkBAIC04OSwzMyArNTYsNiBAQCB2b2lkIEZyZWVMaXN0Ojpmb3JF
YWNoKGNvbnN0IEZ1bmMmIGZ1bmMpIGNvbnN0CiAgICAgICAgIGZvciAodW5zaWduZWQgcmVtYWlu
aW5nID0gbV9yZW1haW5pbmc7IHJlbWFpbmluZzsgcmVtYWluaW5nIC09IG1fY2VsbFNpemUpCiAg
ICAgICAgICAgICBmdW5jKGJpdHdpc2VfY2FzdDxIZWFwQ2VsbCo+KG1fcGF5bG9hZEVuZCAtIHJl
bWFpbmluZykpOwogICAgIH0gZWxzZSB7Ci0jaWYgRU5BQkxFKEJJVE1BUF9GUkVFTElTVCkKLSAg
ICAgICAgaWYgKGJpdG1hcElzRW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAg
ICBBdG9tc0JpdG1hcDo6V29yZCByb3dCaXRtYXAgPSBtX2N1cnJlbnRSb3dCaXRtYXA7Ci0gICAg
ICAgIHVuc2lnbmVkIHJvd0luZGV4ID0gbV9jdXJyZW50Um93SW5kZXg7Ci0gICAgICAgIEF0b20q
IGN1cnJlbnRNYXJrZWRCbG9ja1Jvd0FkZHJlc3MgPSBtX2N1cnJlbnRNYXJrZWRCbG9ja1Jvd0Fk
ZHJlc3M7Ci0gICAgICAgIGRvIHsKLSAgICAgICAgICAgIHdoaWxlIChyb3dCaXRtYXApIHsKLSAg
ICAgICAgICAgICAgICBjb25zdGV4cHIgQXRvbXNCaXRtYXA6OldvcmQgb25lID0gMTsKLSAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBhdG9tSW5kZXhJblJvdyA9IGN0eihyb3dCaXRtYXApOwotICAg
ICAgICAgICAgICAgIGF1dG8qIGNlbGwgPSBiaXR3aXNlX2Nhc3Q8SGVhcENlbGwqPigmY3VycmVu
dE1hcmtlZEJsb2NrUm93QWRkcmVzc1thdG9tSW5kZXhJblJvd10pOwotICAgICAgICAgICAgICAg
IHJvd0JpdG1hcCAmPSB+KG9uZSA8PCBhdG9tSW5kZXhJblJvdyk7Ci0gICAgICAgICAgICAgICAg
ZnVuYyhjZWxsKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgd2hpbGUgKHJvd0luZGV4
KSB7Ci0gICAgICAgICAgICAgICAgLy8gV2UgbG9hZCBiZWZvcmUgZGVjcmVtZW50aW5nIHJvd0lu
ZGV4IGJlY2F1c2UgYml0bWFwUm93c01pbnVzT25lKCkgcG9pbnRzCi0gICAgICAgICAgICAgICAg
Ly8gdG8gMSB3b3JkIGJlZm9yZSBtX2JpdG1hcC4gU2VlIGNvbW1lbnRzIGFib3V0IG9mZnNldE9m
Qml0bWFwUm93c01pbnVzT25lKCkKLSAgICAgICAgICAgICAgICAvLyBmb3Igd2h5IHdlIGRvIHRo
aXMuCi0gICAgICAgICAgICAgICAgcm93Qml0bWFwID0gYml0bWFwUm93c01pbnVzT25lKClbcm93
SW5kZXgtLV07Ci0gICAgICAgICAgICAgICAgY3VycmVudE1hcmtlZEJsb2NrUm93QWRkcmVzcyAt
PSBhdG9tc1BlclJvdzsKLSAgICAgICAgICAgICAgICBpZiAocm93Qml0bWFwKQotICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSB3aGlsZSAocm93Qml0
bWFwKTsKLSNlbHNlCiAgICAgICAgIGZvciAoRnJlZUNlbGwqIGNlbGwgPSBoZWFkKCk7IGNlbGw7
KSB7CiAgICAgICAgICAgICAvLyBXZSBjYW4gdXNlIHRoaXMgdG8gb3ZlcndyaXRlIGZyZWUgb2Jq
ZWN0cyBiZWZvcmUgZGVzdHJveWluZyB0aGUgZnJlZSBsaXN0LiBTbywgd2UgbmVlZAogICAgICAg
ICAgICAgLy8gdG8gZ2V0IG5leHQgYmVmb3JlIHByb2NlZWRpbmcgZnVydGhlci4KQEAgLTEyMyw4
ICs2Myw4IEBAIHZvaWQgRnJlZUxpc3Q6OmZvckVhY2goY29uc3QgRnVuYyYgZnVuYykgY29uc3QK
ICAgICAgICAgICAgIGZ1bmMoYml0d2lzZV9jYXN0PEhlYXBDZWxsKj4oY2VsbCkpOwogICAgICAg
ICAgICAgY2VsbCA9IG5leHQ7CiAgICAgICAgIH0KLSNlbmRpZgogICAgIH0KIH0KIAogfSAvLyBu
YW1lc3BhY2UgSlNDCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0xv
Y2FsQWxsb2NhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0xvY2FsQWxsb2Nh
dG9yLmNwcAppbmRleCAyYjVlNTU0N2ExOTk5ZWU4OGExNjA4ZGVmZGUzMGNlZWUxNzhkY2U4Li5l
OWQyMmFlY2Q1OWI5MWU2NjIwZTA4YzkzODhmN2E3MDRhYmI5NGNiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Mb2NhbEFsbG9jYXRvci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTG9jYWxBbGxvY2F0b3IuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxOC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjcyLDcgKzI3Miw3IEBA
IGJvb2wgTG9jYWxBbGxvY2F0b3I6OmlzRnJlZUxpc3RlZENlbGwoY29uc3Qgdm9pZCogdGFyZ2V0
KSBjb25zdAogICAgIC8vIGlmIHdlIGtub3cgdGhhdCB0aGUgYmxvY2sgb3duaW5nIHRoZSBvYmpl
Y3QgaXMgZnJlZS1saXN0ZWQsIHRoZW4gaXQncyBpbXBvc3NpYmxlIGZvciBhbnkKICAgICAvLyBv
YmplY3RzIHRvIGJlIGluIHRoZSBkZWFkLWJ1dC1ub3QtZGVzdHJ1Y3RlZCBzdGF0ZS4KICAgICAv
LyBGSVhNRTogR2V0IHJpZCBvZiB0aGlzIGFib21pbmF0aW9uLiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgxNjU1Ci0gICAgcmV0dXJuIG1fZnJlZUxpc3QuY29udGFp
bnMoYml0d2lzZV9jYXN0PEhlYXBDZWxsKj4odGFyZ2V0KSwgbV9jdXJyZW50QmxvY2spOworICAg
IHJldHVybiBtX2ZyZWVMaXN0LmNvbnRhaW5zKGJpdHdpc2VfY2FzdDxIZWFwQ2VsbCo+KHRhcmdl
dCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9N
YXJrZWRCbG9jay5oCmluZGV4IGJhZjljZWM4NTkyMTI0YzNiOWYzNmM0M2FiNTVhMDg1OTUxYmMx
OGEuLmM5ZDkxYWJkMWEzZTM5MmQ2NWY1NDE2MjBmNTE1ODY5MmU3NDdlODAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiAg
Q29weXJpZ2h0IChDKSAxOTk5LTIwMDAgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKICAq
ICBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKLSAqICBDb3B5
cmlnaHQgKEMpIDIwMDMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAg
Q29weXJpZ2h0IChDKSAyMDAzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExl
c3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtODQsOCArODQsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
X2Fzc2VydCghKE1hcmtlZEJsb2NrOjphdG9tU2l6ZSAmIChNYXJrZWRCbG9jazo6YXRvbVNpemUg
LSAxKSksICJNYXJrZWRCbG9jazo6YXRvbVNpemUgbXVzdCBiZSBhIHBvd2VyIG9mIHR3by4iKTsK
ICAgICBzdGF0aWNfYXNzZXJ0KCEoTWFya2VkQmxvY2s6OmJsb2NrU2l6ZSAmIChNYXJrZWRCbG9j
azo6YmxvY2tTaXplIC0gMSkpLCAiTWFya2VkQmxvY2s6OmJsb2NrU2l6ZSBtdXN0IGJlIGEgcG93
ZXIgb2YgdHdvLiIpOwogICAgIAotICAgIHVzaW5nIEF0b21zQml0bWFwID0gQml0bWFwPGF0b21z
UGVyQmxvY2s+OwotCiAgICAgc3RydWN0IFZvaWRGdW5jdG9yIHsKICAgICAgICAgdHlwZWRlZiB2
b2lkIFJldHVyblR5cGU7CiAgICAgICAgIHZvaWQgcmV0dXJuVmFsdWUoKSB7IH0KQEAgLTIwNSw3
ICsyMDMsNiBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgICAgICB2b2lkKiBzdGFydCgpIGNvbnN0
IHsgcmV0dXJuICZtX2Jsb2NrLT5hdG9tcygpWzBdOyB9CiAgICAgICAgIHZvaWQqIGVuZCgpIGNv
bnN0IHsgcmV0dXJuICZtX2Jsb2NrLT5hdG9tcygpW21fZW5kQXRvbV07IH0KLSAgICAgICAgdm9p
ZCogYXRvbUF0KHNpemVfdCBpKSBjb25zdCB7IHJldHVybiAmbV9ibG9jay0+YXRvbXMoKVtpXTsg
fQogICAgICAgICBib29sIGNvbnRhaW5zKHZvaWQqIHApIGNvbnN0IHsgcmV0dXJuIHN0YXJ0KCkg
PD0gcCAmJiBwIDwgZW5kKCk7IH0KIAogICAgICAgICB2b2lkIGR1bXBTdGF0ZShQcmludFN0cmVh
bSYpOwpAQCAtMjk3LDggKzI5NCw4IEBAIHB1YmxpYzoKICAgICAgICAgSGVhcFZlcnNpb24gbV9t
YXJraW5nVmVyc2lvbjsKICAgICAgICAgSGVhcFZlcnNpb24gbV9uZXdseUFsbG9jYXRlZFZlcnNp
b247CiAKLSAgICAgICAgQXRvbXNCaXRtYXAgbV9tYXJrczsKLSAgICAgICAgQXRvbXNCaXRtYXAg
bV9uZXdseUFsbG9jYXRlZDsKKyAgICAgICAgQml0bWFwPGF0b21zUGVyQmxvY2s+IG1fbWFya3M7
CisgICAgICAgIEJpdG1hcDxhdG9tc1BlckJsb2NrPiBtX25ld2x5QWxsb2NhdGVkOwogICAgIH07
CiAgICAgCiBwcml2YXRlOiAgICAKQEAgLTMzOSw3ICszMzYsNyBAQCBwdWJsaWM6CiAgICAgYm9v
bCBpc05ld2x5QWxsb2NhdGVkKGNvbnN0IHZvaWQqKTsKICAgICB2b2lkIHNldE5ld2x5QWxsb2Nh
dGVkKGNvbnN0IHZvaWQqKTsKICAgICB2b2lkIGNsZWFyTmV3bHlBbGxvY2F0ZWQoY29uc3Qgdm9p
ZCopOwotICAgIGNvbnN0IEF0b21zQml0bWFwJiBuZXdseUFsbG9jYXRlZCgpIGNvbnN0OworICAg
IGNvbnN0IEJpdG1hcDxhdG9tc1BlckJsb2NrPiYgbmV3bHlBbGxvY2F0ZWQoKSBjb25zdDsKICAg
ICAKICAgICBIZWFwVmVyc2lvbiBuZXdseUFsbG9jYXRlZFZlcnNpb24oKSBjb25zdCB7IHJldHVy
biBmb290ZXIoKS5tX25ld2x5QWxsb2NhdGVkVmVyc2lvbjsgfQogICAgIApAQCAtMzc3LDcgKzM3
NCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzTWFya2VkUmF3KGNvbnN0IHZvaWQqIHApOwogICAg
IEhlYXBWZXJzaW9uIG1hcmtpbmdWZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gZm9vdGVyKCkubV9t
YXJraW5nVmVyc2lvbjsgfQogICAgIAotICAgIGNvbnN0IEF0b21zQml0bWFwJiBtYXJrcygpIGNv
bnN0OworICAgIGNvbnN0IEJpdG1hcDxhdG9tc1BlckJsb2NrPiYgbWFya3MoKSBjb25zdDsKICAg
ICAKICAgICBDb3VudGluZ0xvY2smIGxvY2soKSB7IHJldHVybiBmb290ZXIoKS5tX2xvY2s7IH0K
ICAgICAKQEAgLTQwMiw4ICszOTksNiBAQCBwcml2YXRlOgogICAgIAogICAgIGlubGluZSBib29s
IG1hcmtzQ29udmV5TGl2ZW5lc3NEdXJpbmdNYXJraW5nKEhlYXBWZXJzaW9uIG1hcmtpbmdWZXJz
aW9uKTsKICAgICBpbmxpbmUgYm9vbCBtYXJrc0NvbnZleUxpdmVuZXNzRHVyaW5nTWFya2luZyhI
ZWFwVmVyc2lvbiBteU1hcmtpbmdWZXJzaW9uLCBIZWFwVmVyc2lvbiBtYXJraW5nVmVyc2lvbik7
Ci0KLSAgICBmcmllbmQgY2xhc3MgRnJlZUxpc3Q7CiB9OwogCiBpbmxpbmUgTWFya2VkQmxvY2s6
OkZvb3RlciYgTWFya2VkQmxvY2s6OmZvb3RlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9NYXJrZWRCbG9ja0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL01hcmtlZEJsb2NrSW5saW5lcy5oCmluZGV4IGIzZjNlMjVhM2I3NjBjZjI3YTQ4NDg5
MzIxYTQxMzUwMmFlMjk1NmUuLmI5YWFlNWE2OTJjZjg3NmEwNmE4NjY5ZGNiNmE5N2RjMjU2Y2Mw
ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrSW5s
aW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrSW5saW5l
cy5oCkBAIC0yNjQsMTEgKzI2NCw2IEBAIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3BlY2lh
bGl6ZWRTd2VlcChGcmVlTGlzdCogZnJlZUxpc3QsIE1hcmtlZEJsb2NrOjpIYW5kCiAgICAgCiAg
ICAgbV9kaXJlY3RvcnktPnNldElzRGVzdHJ1Y3RpYmxlKE5vTG9ja2luZ05lY2Vzc2FyeSwgdGhp
cywgZmFsc2UpOwogICAgIAotICAgIGNoYXIqIHN0YXJ0T2ZMYXN0Q2VsbCA9IHN0YXRpY19jYXN0
PGNoYXIqPihjZWxsQWxpZ24oYmxvY2suYXRvbXMoKSArIG1fZW5kQXRvbSAtIDEpKTsKLSAgICBj
aGFyKiBwYXlsb2FkRW5kID0gc3RhcnRPZkxhc3RDZWxsICsgY2VsbFNpemU7Ci0gICAgUkVMRUFT
RV9BU1NFUlQocGF5bG9hZEVuZCAtIE1hcmtlZEJsb2NrOjpibG9ja1NpemUgPD0gYml0d2lzZV9j
YXN0PGNoYXIqPigmYmxvY2spKTsKLSAgICBjaGFyKiBwYXlsb2FkQmVnaW4gPSBiaXR3aXNlX2Nh
c3Q8Y2hhcio+KGJsb2NrLmF0b21zKCkpOwotCiAgICAgaWYgKE9wdGlvbnM6OnVzZUJ1bXBBbGxv
Y2F0b3IoKQogICAgICAgICAmJiBlbXB0eU1vZGUgPT0gSXNFbXB0eQogICAgICAgICAmJiBuZXds
eUFsbG9jYXRlZE1vZGUgPT0gRG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZCkgewpAQCAtMjg1LDYg
KzI4MCwxMSBAQCB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OnNwZWNpYWxpemVkU3dlZXAoRnJl
ZUxpc3QqIGZyZWVMaXN0LCBNYXJrZWRCbG9jazo6SGFuZAogICAgICAgICAgICAgICAgIH0pOwog
ICAgICAgICB9CiAgICAgICAgIAorICAgICAgICBjaGFyKiBzdGFydE9mTGFzdENlbGwgPSBzdGF0
aWNfY2FzdDxjaGFyKj4oY2VsbEFsaWduKGJsb2NrLmF0b21zKCkgKyBtX2VuZEF0b20gLSAxKSk7
CisgICAgICAgIGNoYXIqIHBheWxvYWRFbmQgPSBzdGFydE9mTGFzdENlbGwgKyBjZWxsU2l6ZTsK
KyAgICAgICAgUkVMRUFTRV9BU1NFUlQocGF5bG9hZEVuZCAtIE1hcmtlZEJsb2NrOjpibG9ja1Np
emUgPD0gYml0d2lzZV9jYXN0PGNoYXIqPigmYmxvY2spKTsKKyAgICAgICAgY2hhciogcGF5bG9h
ZEJlZ2luID0gYml0d2lzZV9jYXN0PGNoYXIqPihibG9jay5hdG9tcygpKTsKKyAgICAgICAgCiAg
ICAgICAgIGlmIChzd2VlcE1vZGUgPT0gU3dlZXBUb0ZyZWVMaXN0KQogICAgICAgICAgICAgc2V0
SXNGcmVlTGlzdGVkKCk7CiAgICAgICAgIGlmIChzcGFjZSgpLT5pc01hcmtpbmcoKSkKQEAgLTMw
Myw5NiArMzAzLDYgQEAgdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzcGVjaWFsaXplZFN3ZWVw
KEZyZWVMaXN0KiBmcmVlTGlzdCwgTWFya2VkQmxvY2s6OkhhbmQKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotI2lmIEVOQUJMRShCSVRNQVBfRlJFRUxJU1QpCi0gICAgLy8gVGhlIGNvZGUgYmVs
b3cgaXMgYW4gb3B0aW1pemVkIHZlcnNpb24gb2YgdGhlIGZvbGxvd2luZyBieSBtZXJnaW5nIHRo
ZQotICAgIC8vIHZhcmlvdXMgbG9vcHMgb3ZlciB0aGUgYml0bWFwcy4KLSAgICAvLwotICAgIC8v
ICAgIEF0b21zQml0bWFwIGNlbGxMb2NhdGlvbnM7Ci0gICAgLy8gICAgY2VsbExvY2F0aW9ucy5z
ZXRFYWNoTnRoQml0KG1fYXRvbXNQZXJDZWxsLCAwLCBtX2VuZEF0b20pOwotICAgIC8vCi0gICAg
Ly8gICAgaWYgKGVtcHR5TW9kZSA9PSBOb3RFbXB0eSkgewotICAgIC8vICAgICAgICBpZiAobWFy
a3NNb2RlID09IE1hcmtzTm90U3RhbGUpIHsKLSAgICAvLyAgICAgICAgICAgIGZyZWVBdG9tcyA9
IGZvb3Rlci5tX21hcmtzOwotICAgIC8vICAgICAgICAgICAgaWYgKG5ld2x5QWxsb2NhdGVkTW9k
ZSA9PSBIYXNOZXdseUFsbG9jYXRlZCkKLSAgICAvLyAgICAgICAgICAgICAgICBmcmVlQXRvbXMg
fD0gZm9vdGVyLm1fbmV3bHlBbGxvY2F0ZWQ7Ci0gICAgLy8gICAgICAgIH0gZWxzZSBpZiAobmV3
bHlBbGxvY2F0ZWRNb2RlID09IEhhc05ld2x5QWxsb2NhdGVkKQotICAgIC8vICAgICAgICAgICAg
ZnJlZUF0b21zID0gZm9vdGVyLm1fbmV3bHlBbGxvY2F0ZWQ7Ci0gICAgLy8gICAgICAgIC8vIEF0
IHRoaXMgcG9pbnQsIGEgc2V0IGJpdCBpbiBmcmVlQXRvbXMgcmVwcmVzZW50cyBsaXZlIGNlbGxz
LgotICAgIC8vICAgICAgICBpc0VtcHR5ID0gZnJlZUF0b21zLmlzRW1wdHkoKTsKLSAgICAvLwot
ICAgIC8vICAgICAgICAvLyBJbnZlcnQgdGhlIGJpdHMgYXQgZWFjaCBjZWxsIGxvY2F0aW9uIHNv
IHRoYXQgdGhlIG9uZXMgZm9yIGxpdmUgY2VsbHMKLSAgICAvLyAgICAgICAgLy8gYXJlIGNsZWFy
ZWQsIGFuZCB0aGUgb25lcyBmb3IgZGVhZCBjZWxscyBhcmUgc2V0LgotICAgIC8vICAgICAgICBm
cmVlQXRvbXMgXj0gY2VsbExvY2F0aW9uczsKLSAgICAvLyAgICB9IGVsc2UKLSAgICAvLyAgICAg
ICAgZnJlZUF0b21zID0gY2VsbExvY2F0aW9uczsgLy8gYWxsIGNlbGxzIGFyZSBmcmVlLgotCi0g
ICAgQXRvbXNCaXRtYXAgbG9jYWxGcmVlQXRvbXM7Ci0gICAgQXRvbXNCaXRtYXAmIGZyZWVBdG9t
cyA9IGZyZWVMaXN0ID8gZnJlZUxpc3QtPmF0b21zQml0bWFwKCkgOiBsb2NhbEZyZWVBdG9tczsK
LQotICAgIEF0b21zQml0bWFwOjpXb3JkKiBmcmVlID0gZnJlZUF0b21zLndvcmRzKCk7Ci0gICAg
QXRvbXNCaXRtYXA6OldvcmQqIG1hcmtzID0gZm9vdGVyLm1fbWFya3Mud29yZHMoKTsKLSAgICBB
dG9tc0JpdG1hcDo6V29yZCogbmV3bHlBbGxvY2F0ZWQgPSBmb290ZXIubV9uZXdseUFsbG9jYXRl
ZC53b3JkcygpOwotCi0gICAgdW5zaWduZWQgcm91bmRlZFVwRW5kQXRvbXMgPSByb3VuZFVwVG9N
dWx0aXBsZU9mPEF0b21zQml0bWFwOjpiaXRzSW5Xb3JkPihtX2VuZEF0b20pOwotICAgIHVuc2ln
bmVkIGVuZFdvcmRJbmRleCA9IHJvdW5kZWRVcEVuZEF0b21zIC8gQXRvbXNCaXRtYXA6OmJpdHNJ
bldvcmQ7Ci0gICAgQVNTRVJUKG1fZW5kQXRvbSA8PSBlbmRXb3JkSW5kZXggKiBBdG9tc0JpdG1h
cDo6Yml0c0luV29yZCk7Ci0KLSAgICBpZiAoZnJlZUxpc3QpCi0gICAgICAgIGZyZWVBdG9tcy5j
bGVhckFsbCgpOwotICAgIGZyZWVBdG9tcy5zZXRFYWNoTnRoQml0KG1fYXRvbXNQZXJDZWxsLCAw
LCBtX2VuZEF0b20pOwotCi0gICAgaWYgKGVtcHR5TW9kZSA9PSBOb3RFbXB0eSkgewotICAgICAg
ICBpZiAobWFya3NNb2RlID09IE1hcmtzTm90U3RhbGUgJiYgbmV3bHlBbGxvY2F0ZWRNb2RlID09
IEhhc05ld2x5QWxsb2NhdGVkKSB7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgZW5kV29yZEluZGV4OyArK2kpCi0gICAgICAgICAgICAgICAgZnJlZVtpXSBePSBtYXJrc1tp
XSB8IG5ld2x5QWxsb2NhdGVkW2ldOwotCi0gICAgICAgIH0gZWxzZSBpZiAobWFya3NNb2RlID09
IE1hcmtzTm90U3RhbGUpIHsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBl
bmRXb3JkSW5kZXg7ICsraSkKLSAgICAgICAgICAgICAgICBmcmVlW2ldIF49IG1hcmtzW2ldOwot
Ci0gICAgICAgIH0gZWxzZSBpZiAobmV3bHlBbGxvY2F0ZWRNb2RlID09IEhhc05ld2x5QWxsb2Nh
dGVkKSB7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZW5kV29yZEluZGV4
OyArK2kpCi0gICAgICAgICAgICAgICAgZnJlZVtpXSBePSBuZXdseUFsbG9jYXRlZFtpXTsKLSAg
ICAgICAgfQotICAgIH0KLQotICAgIC8vIEF0IHRoaXMgcG9pbnQsIGEgc2V0IGJpdCBpbiBmcmVl
QXRvbXMgcmVwcmVzZW50cyBhIGRlYWQgY2VsbC4KLQotICAgIC8vIFdlIG9ubHkgd2FudCB0byBk
aXNjYXJkIHRoZSBuZXdseUFsbG9jYXRlZCBiaXRzIGlmIHdlJ3JlIGNyZWF0aW5nIGEgRnJlZUxp
c3QsCi0gICAgLy8gb3RoZXJ3aXNlIHdlIHdvdWxkIGxvc2UgaW5mb3JtYXRpb24gb24gd2hhdCdz
IGN1cnJlbnRseSBhbGl2ZS4KLSAgICBpZiAoc3dlZXBNb2RlID09IFN3ZWVwVG9GcmVlTGlzdCAm
JiBuZXdseUFsbG9jYXRlZE1vZGUgPT0gSGFzTmV3bHlBbGxvY2F0ZWQpCi0gICAgICAgIGZvb3Rl
ci5tX25ld2x5QWxsb2NhdGVkVmVyc2lvbiA9IE1hcmtlZFNwYWNlOjpudWxsVmVyc2lvbjsKLQot
ICAgIGlmIChzcGFjZSgpLT5pc01hcmtpbmcoKSkKLSAgICAgICAgZm9vdGVyLm1fbG9jay51bmxv
Y2soKTsKLQotICAgIC8vIEhhbmRsZSBkZWFkIGNlbGxzLgotICAgIHVuc2lnbmVkIGRlYWRDZWxs
Q291bnQgPSAwOwotICAgIGZyZWVBdG9tcy5mb3JFYWNoU2V0Qml0KFsmXSAoc2l6ZV90IGkpIHsK
LSAgICAgICAgSGVhcENlbGwqIGNlbGwgPSByZWludGVycHJldF9jYXN0X3B0cjxIZWFwQ2VsbCo+
KGF0b21BdChpKSk7Ci0KLSAgICAgICAgaWYgKGRlc3RydWN0aW9uTW9kZSAhPSBCbG9ja0hhc05v
RGVzdHJ1Y3RvcnMpCi0gICAgICAgICAgICBkZXN0cm95KGNlbGwpOwotCi0gICAgICAgIGlmIChz
d2VlcE1vZGUgPT0gU3dlZXBUb0ZyZWVMaXN0KSB7Ci0gICAgICAgICAgICBpZiAoc2NyaWJibGVN
b2RlID09IFNjcmliYmxlKQotICAgICAgICAgICAgICAgIHNjcmliYmxlKGNlbGwsIGNlbGxTaXpl
KTsKLSAgICAgICAgfQotICAgICAgICArK2RlYWRDZWxsQ291bnQ7Ci0gICAgfSk7Ci0KLSAgICB1
bnNpZ25lZCBudW1iZXJPZkNlbGxzSW5CbG9jayA9IChwYXlsb2FkRW5kIC0gcGF5bG9hZEJlZ2lu
KSAvIGNlbGxTaXplOwotICAgIGJvb2wgaXNFbXB0eSA9IChkZWFkQ2VsbENvdW50ID09IG51bWJl
ck9mQ2VsbHNJbkJsb2NrKTsKLSAgICBpZiAoc3dlZXBNb2RlID09IFN3ZWVwVG9GcmVlTGlzdCkg
ewotICAgICAgICBmcmVlTGlzdC0+aW5pdGlhbGl6ZUF0b21zQml0bWFwKHRoaXMsIGZyZWVBdG9t
cywgZGVhZENlbGxDb3VudCAqIGNlbGxTaXplKTsKLSAgICAgICAgc2V0SXNGcmVlTGlzdGVkKCk7
Ci0gICAgfSBlbHNlIGlmIChpc0VtcHR5KQotICAgICAgICBtX2RpcmVjdG9yeS0+c2V0SXNFbXB0
eShOb0xvY2tpbmdOZWNlc3NhcnksIHRoaXMsIHRydWUpOwotICAgIGlmIChmYWxzZSkKLSAgICAg
ICAgZGF0YUxvZygiU2xvd2x5IHN3ZXB0IGJsb2NrICIsIFJhd1BvaW50ZXIoJmJsb2NrKSwgIiB3
aXRoIGNlbGwgc2l6ZSAiLCBjZWxsU2l6ZSwgIiBhbmQgYXR0cmlidXRlcyAiLCBtX2F0dHJpYnV0
ZXMsICI6ICIsIHBvaW50ZXJEdW1wKGZyZWVMaXN0KSwgIlxuIik7Ci0KLSNlbHNlIC8vIG5vdCBF
TkFCTEUoQklUTUFQX0ZSRUVMSVNUKQotCiAgICAgLy8gVGhpcyBwcm9kdWNlcyBhIGZyZWUgbGlz
dCB0aGF0IGlzIG9yZGVyZWQgaW4gcmV2ZXJzZSB0aHJvdWdoIHRoZSBibG9jay4KICAgICAvLyBU
aGlzIGlzIGZpbmUsIHNpbmNlIHRoZSBhbGxvY2F0aW9uIGNvZGUgbWFrZXMgbm8gYXNzdW1wdGlv
bnMgYWJvdXQgdGhlCiAgICAgLy8gb3JkZXIgb2YgdGhlIGZyZWUgbGlzdC4KQEAgLTQ1MSw3ICsz
NjEsNiBAQCB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OnNwZWNpYWxpemVkU3dlZXAoRnJlZUxp
c3QqIGZyZWVMaXN0LCBNYXJrZWRCbG9jazo6SGFuZAogICAgICAgICBtX2RpcmVjdG9yeS0+c2V0
SXNFbXB0eShOb0xvY2tpbmdOZWNlc3NhcnksIHRoaXMsIHRydWUpOwogICAgIGlmIChmYWxzZSkK
ICAgICAgICAgZGF0YUxvZygiU2xvd2x5IHN3ZXB0IGJsb2NrICIsIFJhd1BvaW50ZXIoJmJsb2Nr
KSwgIiB3aXRoIGNlbGwgc2l6ZSAiLCBjZWxsU2l6ZSwgIiBhbmQgYXR0cmlidXRlcyAiLCBtX2F0
dHJpYnV0ZXMsICI6ICIsIHBvaW50ZXJEdW1wKGZyZWVMaXN0KSwgIlxuIik7Ci0jZW5kaWYgLy8g
RU5BQkxFKEJJVE1BUF9GUkVFTElTVCkKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgRGVzdHJveUZ1
bmM+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVy
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAKaW5k
ZXggNmJlYmViZGFmYzNlN2NkOWUyYjI1MzM5ZDc3MDhlNjc4ZmZkZDgyNi4uYjFlMGM3MzVmMjNi
NjkzYjkwODNlNjkyYzIxMjBmNGM5NzBkMDNjMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcApAQCAtNTIxLDcgKzUyMSw3IEBAIHZvaWQgQXNzZW1i
bHlIZWxwZXJzOjplbWl0UmFuZG9tVGh1bmsoVk0mIHZtLCBHUFJSZWcgc2NyYXRjaDAsIEdQUlJl
ZyBzY3JhdGNoMSwKIH0KICNlbmRpZgogCi12b2lkIEFzc2VtYmx5SGVscGVyczo6ZW1pdEFsbG9j
YXRlV2l0aE5vbk51bGxBbGxvY2F0b3IoR1BSUmVnIHJlc3VsdEdQUiwgY29uc3QgSklUQWxsb2Nh
dG9yJiBhbGxvY2F0b3IsIEdQUlJlZyBhbGxvY2F0b3JHUFIsIEdQUlJlZyBzY3JhdGNoR1BSLCBK
dW1wTGlzdCYgc2xvd1BhdGgsIE9wdGlvbmFsPEdQUlJlZz4gb3B0aW9uYWxTY3JhdGNoR1BSMiwg
T3B0aW9uYWw8R1BSUmVnPiBvcHRpb25hbFNjcmF0Y2hHUFIzKQordm9pZCBBc3NlbWJseUhlbHBl
cnM6OmVtaXRBbGxvY2F0ZVdpdGhOb25OdWxsQWxsb2NhdG9yKEdQUlJlZyByZXN1bHRHUFIsIGNv
bnN0IEpJVEFsbG9jYXRvciYgYWxsb2NhdG9yLCBHUFJSZWcgYWxsb2NhdG9yR1BSLCBHUFJSZWcg
c2NyYXRjaEdQUiwgSnVtcExpc3QmIHNsb3dQYXRoKQogewogICAgIGlmIChPcHRpb25zOjpmb3Jj
ZUdDU2xvd1BhdGhzKCkpIHsKICAgICAgICAgc2xvd1BhdGguYXBwZW5kKGp1bXAoKSk7CkBAIC01
MzQsNyArNTM0LDcgQEAgdm9pZCBBc3NlbWJseUhlbHBlcnM6OmVtaXRBbGxvY2F0ZVdpdGhOb25O
dWxsQWxsb2NhdG9yKEdQUlJlZyByZXN1bHRHUFIsIGNvbnN0IEoKICAgICAvLyAtIFdlICpjYW4q
IHVzZSBSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzIG9uIEFSTS4KIAogICAgIEp1
bXAgcG9wUGF0aDsKLSAgICBKdW1wTGlzdCBkb25lOworICAgIEp1bXAgZG9uZTsKICAgICAKICAg
ICBpZiAoYWxsb2NhdG9yLmlzQ29uc3RhbnQoKSkKICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRy
KGFsbG9jYXRvci5hbGxvY2F0b3IoKS5sb2NhbEFsbG9jYXRvcigpKSwgYWxsb2NhdG9yR1BSKTsK
QEAgLTU1MiwxMjQgKzU1MiwxMCBAQCB2b2lkIEFzc2VtYmx5SGVscGVyczo6ZW1pdEFsbG9jYXRl
V2l0aE5vbk51bGxBbGxvY2F0b3IoR1BSUmVnIHJlc3VsdEdQUiwgY29uc3QgSgogICAgIEFkZHJl
c3MgcGF5bG9hZEVuZEFkZHIgPSBBZGRyZXNzKGFsbG9jYXRvckdQUiwgTG9jYWxBbGxvY2F0b3I6
Om9mZnNldE9mRnJlZUxpc3QoKSArIEZyZWVMaXN0OjpvZmZzZXRPZlBheWxvYWRFbmQoKSk7CiAg
ICAgYWRkUHRyKHBheWxvYWRFbmRBZGRyLCByZXN1bHRHUFIpOwogCi0gICAgZG9uZS5hcHBlbmQo
anVtcCgpKTsKKyAgICBkb25lID0ganVtcCgpOwogICAgICAgICAKLSNpZiBFTkFCTEUoQklUTUFQ
X0ZSRUVMSVNUKQotICAgIEFTU0VSVChyZXN1bHRHUFIgIT0gc2NyYXRjaEdQUik7Ci0KLSAgICBh
dXRvIHJvd0luZGV4R1BSID0gcmVzdWx0R1BSOwotICAgIGF1dG8gcm93Qml0bWFwR1BSID0gc2Ny
YXRjaEdQUjsKLQotICAgIEdQUlJlZyBzY3JhdGNoR1BSMiA9IG9wdGlvbmFsU2NyYXRjaEdQUjIg
PyBvcHRpb25hbFNjcmF0Y2hHUFIyLnZhbHVlKCkgOiBzY3JhdGNoUmVnaXN0ZXIoKTsKLSAgICBB
U1NFUlQoc2NyYXRjaEdQUjIgIT0gcmVzdWx0R1BSKTsKLSAgICBBU1NFUlQoc2NyYXRjaEdQUjIg
IT0gc2NyYXRjaEdQUik7Ci0KLSAgICBhdXRvIHJvd0FkZHJlc3NHUFIgPSBzY3JhdGNoR1BSMjsK
LSAgICBhdXRvIGNsZWFyQml0NjRTY3JhdGNoR1BSID0gc2NyYXRjaEdQUjI7Ci0KLSAgICBib29s
IGNhblByZWxvYWRSb3dBZGRyZXNzR1BSID0gZmFsc2U7Ci0gICAgaWYgKG9wdGlvbmFsU2NyYXRj
aEdQUjMpIHsKLSAgICAgICAgY2xlYXJCaXQ2NFNjcmF0Y2hHUFIgPSBvcHRpb25hbFNjcmF0Y2hH
UFIzLnZhbHVlKCk7Ci0gICAgICAgIGNhblByZWxvYWRSb3dBZGRyZXNzR1BSID0gdHJ1ZTsKLSAg
ICB9IGVsc2UgaWYgKGlzWDg2XzY0KCkpIHsKLSAgICAgICAgLy8geDg2XzY0J3MgY2xlYXJCaXQ2
NCgpIGRvZXMgYWN0dWFsbHkgbmVlZCB0byB1c2UgY2xlYXJCaXQ2NFNjcmF0Y2hHUFIuCi0gICAg
ICAgIC8vIFNvLCB3ZSBjYW4gcHJlbG9hZCB0aGUgcm93IGFkZHJlc3MgaW50byBpdC4KLSAgICAg
ICAgY2xlYXJCaXQ2NFNjcmF0Y2hHUFIgPSBJbnZhbGlkR1BSUmVnOwotICAgICAgICBjYW5QcmVs
b2FkUm93QWRkcmVzc0dQUiA9IHRydWU7Ci0jaWYgQ1BVKEFSTTY0KQotICAgIH0gZWxzZSBpZiAo
aXNBUk02NCgpKSB7Ci0gICAgICAgIC8vIEFSTTY0J3MgZmFzdCBwYXRoIGRvZXMgYWN0dWFsbHkg
bmVlZCB0byB1c2UgdGhlIG1lbW9yeVRlbXBSZWdpc3Rlci4KLSAgICAgICAgLy8gU28sIHdlIGNh
biB1c2UgdGhhdCBmb3IgdGhlIGNsZWFyQml0NjRTY3JhdGNoR1BSIGFuZCBhbGxvdyB0aGUKLSAg
ICAgICAgLy8gcm93IGFkZHJlc3MgdG8gYmUgcHJlbG9hZGVkIGluIHNjcmF0Y2hHUFIyLgotICAg
ICAgICBjbGVhckJpdDY0U2NyYXRjaEdQUiA9IGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklE
QW5kSW52YWxpZGF0ZSgpOwotICAgICAgICBjYW5QcmVsb2FkUm93QWRkcmVzc0dQUiA9IHRydWU7
Ci0jZW5kaWYKLSAgICB9Ci0gICAgQVNTRVJUKGNsZWFyQml0NjRTY3JhdGNoR1BSICE9IHJlc3Vs
dEdQUik7Ci0gICAgQVNTRVJUKGNsZWFyQml0NjRTY3JhdGNoR1BSICE9IHNjcmF0Y2hHUFIpOwot
ICAgIGlmIChjYW5QcmVsb2FkUm93QWRkcmVzc0dQUikKLSAgICAgICAgQVNTRVJUKGNsZWFyQml0
NjRTY3JhdGNoR1BSICE9IHNjcmF0Y2hHUFIyKTsKLQotICAgIC8vIFRoZSBjb2RlIGJlbG93IGZv
ciByb3dCaXRtYXBHUFIgcmVsaWVzIG9uIHRoaXMuCi0gICAgc3RhdGljX2Fzc2VydChzaXplb2Yo
RnJlZUxpc3Q6OkF0b21zQml0bWFwOjpXb3JkKSA9PSBzaXplb2YodWludDY0X3QpKTsKLQotICAg
IC8vIENoZWNrIGZvciBtaWRkbGUgcGF0aDogaGF2ZSBhbm90aGVyIHJvdyB0byB2aXNpdD8KLSAg
ICBMYWJlbCBjaGVja0Zvck1vcmVSb3dzID0gbGFiZWwoKTsKLQotICAgIGxvYWQzMihBZGRyZXNz
KGFsbG9jYXRvckdQUiwgTG9jYWxBbGxvY2F0b3I6Om9mZnNldE9mRnJlZUxpc3QoKSArIEZyZWVM
aXN0OjpvZmZzZXRPZkN1cnJlbnRSb3dJbmRleCgpKSwgcm93SW5kZXhHUFIpOwotCi0gICAgaWYg
KCFjYW5QcmVsb2FkUm93QWRkcmVzc0dQUikKLSAgICAgICAgbG9hZFB0cihBZGRyZXNzKGFsbG9j
YXRvckdQUiwgTG9jYWxBbGxvY2F0b3I6Om9mZnNldE9mRnJlZUxpc3QoKSArIEZyZWVMaXN0Ojpv
ZmZzZXRPZkN1cnJlbnRNYXJrZWRCbG9ja1Jvd0FkZHJlc3MoKSksIHJvd0FkZHJlc3NHUFIpOwot
Ci0gICAgc2xvd1BhdGguYXBwZW5kKGJyYW5jaFRlc3RQdHIoWmVybywgcm93SW5kZXhHUFIpKTsK
LQotICAgIC8vIE1pZGRsZSBwYXRoOiB0aGVyZSBpcyBhbm90aGVyIHJvdyBsZWZ0IHRvIHZpc2l0
LgotICAgIEp1bXAgZm91bmROb25FbXB0eVJvdzsKLSAgICBMYWJlbCBjaGVja05leHRSb3cgPSBs
YWJlbCgpOwotICAgIHsKLSAgICAgICAgLy8gTG9hZCB0aGUgbmV4dCByb3cgYml0bWFwIGFuZCBw
b2ludCBtX2N1cnJlbnRNYXJrZWRCbG9ja1Jvd0FkZHJlc3MgdG8gdGhlIG5leHQgcm93LgotCi0g
ICAgICAgIC8vIE5vdGU6IG9mZnNldE9mQml0bWFwUm93c01pbnVzT25lKCkgcG9pbnRzIHRvIDEg
d29yZCBiZWZvcmUgbV9iaXRtYXAuIFdlIGRvIHRoaXMKLSAgICAgICAgLy8gZGVsaWJlcmF0ZWx5
IGJlY2F1c2UgaXQgYWxsb3dzIHVzIHRvIHNjaGVkdWxlIGluc3RydWN0aW9ucyBiZXR0ZXIgYW5k
Ci0gICAgICAgIC8vIGRvIHRoaXMgbG9hZCBiZWZvcmUgdGhlIGRlY3JlbWVudCBiZWxvdy4KLSAg
ICAgICAgbG9hZDY0KEJhc2VJbmRleChhbGxvY2F0b3JHUFIsIHJvd0luZGV4R1BSLCBUaW1lc0Vp
Z2h0LCBMb2NhbEFsbG9jYXRvcjo6b2Zmc2V0T2ZGcmVlTGlzdCgpICsgRnJlZUxpc3Q6Om9mZnNl
dE9mQml0bWFwUm93c01pbnVzT25lKCkpLCByb3dCaXRtYXBHUFIpOwotCi0gICAgICAgIHN1YjY0
KFRydXN0ZWRJbW0zMigxKSwgcm93SW5kZXhHUFIpOwotICAgICAgICBzdWJQdHIoVHJ1c3RlZElt
bTMyKEZyZWVMaXN0OjphdG9tc1Jvd0J5dGVzKSwgcm93QWRkcmVzc0dQUik7Ci0KLSAgICAgICAg
Zm91bmROb25FbXB0eVJvdyA9IGJyYW5jaFRlc3Q2NChOb25aZXJvLCByb3dCaXRtYXBHUFIpOwot
ICAgICAgICBicmFuY2hUZXN0UHRyKE5vblplcm8sIHJvd0luZGV4R1BSKS5saW5rVG8oY2hlY2tO
ZXh0Um93LCB0aGlzKTsKLSAgICB9Ci0KLSAgICAvLyBTbG93IHBhdGg6IG5vIG1vcmUgcm93cy4K
LSAgICAvLyBCb3RoIHJvd0luZGV4R1BSIGFuZCByb3dCaXRtYXBHUFIgc2hvdWxkIGJlIG51bGwg
aGVyZS4KLSAgICBzdG9yZTMyKHJvd0luZGV4R1BSLCBBZGRyZXNzKGFsbG9jYXRvckdQUiwgTG9j
YWxBbGxvY2F0b3I6Om9mZnNldE9mRnJlZUxpc3QoKSArIEZyZWVMaXN0OjpvZmZzZXRPZkN1cnJl
bnRSb3dJbmRleCgpKSk7Ci0gICAgc3RvcmU2NChyb3dCaXRtYXBHUFIsIEFkZHJlc3MoYWxsb2Nh
dG9yR1BSLCBMb2NhbEFsbG9jYXRvcjo6b2Zmc2V0T2ZGcmVlTGlzdCgpICsgRnJlZUxpc3Q6Om9m
ZnNldE9mQ3VycmVudFJvd0JpdG1hcCgpKSk7Ci0gICAgc2xvd1BhdGguYXBwZW5kKGp1bXAoKSk7
Ci0KLSAgICAvLyBUcmFuc2l0aW9uIGZyb20gbWlkZGxlIHBhdGggYmFjayB0byBmYXN0IHBhdGgg
dG8gYWxsb2NhdGUuCi0gICAgZm91bmROb25FbXB0eVJvdy5saW5rKHRoaXMpOwotICAgIHN0b3Jl
UHRyKHJvd0FkZHJlc3NHUFIsIEFkZHJlc3MoYWxsb2NhdG9yR1BSLCBMb2NhbEFsbG9jYXRvcjo6
b2Zmc2V0T2ZGcmVlTGlzdCgpICsgRnJlZUxpc3Q6Om9mZnNldE9mQ3VycmVudE1hcmtlZEJsb2Nr
Um93QWRkcmVzcygpKSk7Ci0gICAgc3RvcmUzMihyb3dJbmRleEdQUiwgQWRkcmVzcyhhbGxvY2F0
b3JHUFIsIExvY2FsQWxsb2NhdG9yOjpvZmZzZXRPZkZyZWVMaXN0KCkgKyBGcmVlTGlzdDo6b2Zm
c2V0T2ZDdXJyZW50Um93SW5kZXgoKSkpOwotCi0gICAgSnVtcCBhbGxvY2F0ZUZyb21DdXJyZW50
Um93ID0ganVtcCgpOwotCiAgICAgcG9wUGF0aC5saW5rKHRoaXMpOwotCi0gICAgLy8gQ2hlY2sg
Zm9yIGZhc3QgcGF0aDogaGF2ZSBhdmFpbGFibGUgYml0IGluIG1fY3VycmVudFJvd0JpdG1hcD8K
LSAgICBsb2FkNjQoQWRkcmVzcyhhbGxvY2F0b3JHUFIsIExvY2FsQWxsb2NhdG9yOjpvZmZzZXRP
ZkZyZWVMaXN0KCkgKyBGcmVlTGlzdDo6b2Zmc2V0T2ZDdXJyZW50Um93Qml0bWFwKCkpLCByb3dC
aXRtYXBHUFIpOwotCi0gICAgaWYgKGNhblByZWxvYWRSb3dBZGRyZXNzR1BSKSB7Ci0gICAgICAg
IC8vIFByZWxvYWQgdGhlIHJvdyBhZGRyZXNzIG5lZWRlZCBvbiB0aGUgZmFzdCBhbmQgbWlkZGxl
IHBhdGguCi0gICAgICAgIGxvYWRQdHIoQWRkcmVzcyhhbGxvY2F0b3JHUFIsIExvY2FsQWxsb2Nh
dG9yOjpvZmZzZXRPZkZyZWVMaXN0KCkgKyBGcmVlTGlzdDo6b2Zmc2V0T2ZDdXJyZW50TWFya2Vk
QmxvY2tSb3dBZGRyZXNzKCkpLCByb3dBZGRyZXNzR1BSKTsKLSAgICB9Ci0KLSAgICBicmFuY2hU
ZXN0NjQoWmVybywgcm93Qml0bWFwR1BSKS5saW5rVG8oY2hlY2tGb3JNb3JlUm93cywgdGhpcyk7
Ci0KLSAgICAvLyBGYXN0IHBhdGg6IHdlIGhhdmUgYSBiaXQgdG8gdXNlLgotICAgIGFsbG9jYXRl
RnJvbUN1cnJlbnRSb3cubGluayh0aGlzKTsKLSAgICB7Ci0gICAgICAgIC8vIFJlbW92ZSB0aGlz
IGJpdCBmcm9tIG1fY3VycmVudFJvd0JpdG1hcC4KLSAgICAgICAgYXV0byBhdG9tSW5kZXhJblJv
d0dQUiA9IHJlc3VsdEdQUjsKLSAgICAgICAgY291bnRUcmFpbGluZ1plcm9zNjRXaXRob3V0TnVs
bENoZWNrKHJvd0JpdG1hcEdQUiwgYXRvbUluZGV4SW5Sb3dHUFIpOwotICAgICAgICBjbGVhckJp
dDY0KGF0b21JbmRleEluUm93R1BSLCByb3dCaXRtYXBHUFIsIGNsZWFyQml0NjRTY3JhdGNoR1BS
KTsKLQotICAgICAgICBpZiAoIWNhblByZWxvYWRSb3dBZGRyZXNzR1BSKQotICAgICAgICAgICAg
bG9hZFB0cihBZGRyZXNzKGFsbG9jYXRvckdQUiwgTG9jYWxBbGxvY2F0b3I6Om9mZnNldE9mRnJl
ZUxpc3QoKSArIEZyZWVMaXN0OjpvZmZzZXRPZkN1cnJlbnRNYXJrZWRCbG9ja1Jvd0FkZHJlc3Mo
KSksIHJvd0FkZHJlc3NHUFIpOwotCi0gICAgICAgIHN0b3JlNjQocm93Qml0bWFwR1BSLCBBZGRy
ZXNzKGFsbG9jYXRvckdQUiwgTG9jYWxBbGxvY2F0b3I6Om9mZnNldE9mRnJlZUxpc3QoKSArIEZy
ZWVMaXN0OjpvZmZzZXRPZkN1cnJlbnRSb3dCaXRtYXAoKSkpOwotCi0gICAgICAgIC8vIENvbXB1
dGUgYXRvbSBhZGRyZXNzIG9mIHRoaXMgYml0LgotICAgICAgICBBU1NFUlQocmVzdWx0R1BSID09
IGF0b21JbmRleEluUm93R1BSKTsKLSAgICAgICAgc2hpZnRBbmRBZGQocm93QWRkcmVzc0dQUiwg
cmVzdWx0R1BSLCBGcmVlTGlzdDo6YXRvbVNpemVTaGlmdCwgcmVzdWx0R1BSKTsKLSAgICB9Ci0K
LSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKG9wdGlvbmFsU2NyYXRjaEdQUjIpOwotICAgIFVOVVNF
RF9QQVJBTShvcHRpb25hbFNjcmF0Y2hHUFIzKTsKLQotICAgIHBvcFBhdGgubGluayh0aGlzKTsK
LQorICAgICAgICAKICAgICBsb2FkUHRyKEFkZHJlc3MoYWxsb2NhdG9yR1BSLCBMb2NhbEFsbG9j
YXRvcjo6b2Zmc2V0T2ZGcmVlTGlzdCgpICsgRnJlZUxpc3Q6Om9mZnNldE9mU2NyYW1ibGVkSGVh
ZCgpKSwgcmVzdWx0R1BSKTsKICAgICB4b3JQdHIoQWRkcmVzcyhhbGxvY2F0b3JHUFIsIExvY2Fs
QWxsb2NhdG9yOjpvZmZzZXRPZkZyZWVMaXN0KCkgKyBGcmVlTGlzdDo6b2Zmc2V0T2ZTZWNyZXQo
KSksIHJlc3VsdEdQUik7CiAgICAgc2xvd1BhdGguYXBwZW5kKGJyYW5jaFRlc3RQdHIoWmVybywg
cmVzdWx0R1BSKSk7CkBAIC02NzgsOCArNTY0LDcgQEAgdm9pZCBBc3NlbWJseUhlbHBlcnM6OmVt
aXRBbGxvY2F0ZVdpdGhOb25OdWxsQWxsb2NhdG9yKEdQUlJlZyByZXN1bHRHUFIsIGNvbnN0IEoK
ICAgICAvLyBpdCdzIHN0aWxsIG9uIHRoZSBHQydzIGZyZWUgbGlzdC4KICAgICBsb2FkUHRyKEFk
ZHJlc3MocmVzdWx0R1BSLCBGcmVlQ2VsbDo6b2Zmc2V0T2ZTY3JhbWJsZWROZXh0KCkpLCBzY3Jh
dGNoR1BSKTsKICAgICBzdG9yZVB0cihzY3JhdGNoR1BSLCBBZGRyZXNzKGFsbG9jYXRvckdQUiwg
TG9jYWxBbGxvY2F0b3I6Om9mZnNldE9mRnJlZUxpc3QoKSArIEZyZWVMaXN0OjpvZmZzZXRPZlNj
cmFtYmxlZEhlYWQoKSkpOwotI2VuZGlmCi0KKyAgICAgICAgCiAgICAgZG9uZS5saW5rKHRoaXMp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVs
cGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAppbmRl
eCA5NzczZWQ3MTkxOThjMjZiOGEyMDk1N2Y5NTI0MzliYWUxOGQwODU3Li43NWU2NGIzN2Q2YWU0
Y2ZkOGNjMWZiNzJkOTgzMGQ4ZTEyYzkzNzIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvQXNzZW1ibHlIZWxwZXJzLmgKQEAgLTQ0LDcgKzQ0LDYgQEAKICNpbmNsdWRlICJUYWdSZWdp
c3RlcnNNb2RlLmgiCiAjaW5jbHVkZSAiVHlwZW9mVHlwZS5oIgogI2luY2x1ZGUgIlZNLmgiCi0j
aW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC0xOTUzLDgg
KzE5NTIsOCBAQCBwdWJsaWM6CiAgICAgLy8gdGhhdCBhbGxvY2F0b3IgaXMgbm9uLW51bGw7IGFs
bG9jYXRvciBjYW4gYmUgbnVsbCBhcyBhIHNpZ25hbCB0aGF0IHdlIGRvbid0IGtub3cgd2hhdCB0
aGUKICAgICAvLyB2YWx1ZSBvZiBhbGxvY2F0b3JHUFIgaXMuIEFkZGl0aW9uYWxseSwgaWYgdGhl
IGFsbG9jYXRvciBpcyBub3QgbnVsbCwgdGhlbiB0aGVyZSBpcyBubyBuZWVkCiAgICAgLy8gdG8g
cG9wdWxhdGUgYWxsb2NhdG9yR1BSIC0gdGhpcyBjb2RlIHdpbGwgaWdub3JlIHRoZSBjb250ZW50
cyBvZiBhbGxvY2F0b3JHUFIuCi0gICAgdm9pZCBlbWl0QWxsb2NhdGVXaXRoTm9uTnVsbEFsbG9j
YXRvcihHUFJSZWcgcmVzdWx0R1BSLCBjb25zdCBKSVRBbGxvY2F0b3ImLCBHUFJSZWcgYWxsb2Nh
dG9yR1BSLCBHUFJSZWcgc2NyYXRjaEdQUiwgSnVtcExpc3QmIHNsb3dQYXRoLCBPcHRpb25hbDxH
UFJSZWc+IHNjcmF0Y2hHUFIyID0geyB9LCBPcHRpb25hbDxHUFJSZWc+IHNjcmF0Y2hHUFIzID0g
eyB9KTsKLQorICAgIHZvaWQgZW1pdEFsbG9jYXRlV2l0aE5vbk51bGxBbGxvY2F0b3IoR1BSUmVn
IHJlc3VsdEdQUiwgY29uc3QgSklUQWxsb2NhdG9yJiBhbGxvY2F0b3IsIEdQUlJlZyBhbGxvY2F0
b3JHUFIsIEdQUlJlZyBzY3JhdGNoR1BSLCBKdW1wTGlzdCYgc2xvd1BhdGgpOworICAgIAogICAg
IHZvaWQgZW1pdEFsbG9jYXRlKEdQUlJlZyByZXN1bHRHUFIsIGNvbnN0IEpJVEFsbG9jYXRvciYg
YWxsb2NhdG9yLCBHUFJSZWcgYWxsb2NhdG9yR1BSLCBHUFJSZWcgc2NyYXRjaEdQUiwgSnVtcExp
c3QmIHNsb3dQYXRoKTsKICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJ1Y3R1cmVUeXBl
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQml0bWFwLmggYi9Tb3VyY2UvV1RGL3d0Zi9C
aXRtYXAuaAppbmRleCBmOTc5ZWNlZWNhYzI1MTYxZjMwODZlMDFmMWU0OWRhOGI1ZDNhOTVhLi4x
YTNhNjc3Y2U4OGU5OWU3Y2UyYmI3OTUxOGYxYTM2YTdlNDc3M2FhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9CaXRtYXAuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9CaXRtYXAuaApAQCAtMTMw
LDE0ICsxMzAsMTAgQEAgcHVibGljOgogCiAgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0OwogCi0g
ICAgLy8gTG93IGxldmVsIGludGVyZmFjZS4KLSAgICB1c2luZyBXb3JkID0gV29yZFR5cGU7Ci0g
ICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBiaXRzSW5Xb3JkID0gY291bnRPZkJpdHM8V29y
ZFR5cGU+OwotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbnVtYmVyT2ZXb3JkcyA9IChi
aXRtYXBTaXplICsgYml0c0luV29yZCAtIDEpIC8gYml0c0luV29yZDsKLSAgICBXb3JkVHlwZSB3
b3JkQXQoc2l6ZV90IHdvcmRJbmRleCkgY29uc3QgeyByZXR1cm4gYml0c1t3b3JkSW5kZXhdOyB9
Ci0gICAgV29yZCogd29yZHMoKSB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8V29yZCo+KCZiaXRzKTsg
fQotCiBwcml2YXRlOgorICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgd29yZFNpemUgPSBz
aXplb2YoV29yZFR5cGUpICogODsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHdvcmRz
ID0gKGJpdG1hcFNpemUgKyB3b3JkU2l6ZSAtIDEpIC8gd29yZFNpemU7CisKICAgICAvLyB0aGUg
bGl0ZXJhbCAnMScgaXMgb2YgdHlwZSBzaWduZWQgaW50LiAgV2Ugd2FudCB0byB1c2UgYW4gdW5z
aWduZWQKICAgICAvLyB2ZXJzaW9uIG9mIHRoZSBjb3JyZWN0IHNpemUgd2hlbiBkb2luZyB0aGUg
Y2FsY3VsYXRpb25zIGJlY2F1c2UgaWYKICAgICAvLyBXb3JkVHlwZSBpcyBsYXJnZXIgdGhhbiBp
bnQsICcxIDw8IDMxJyB3aWxsIGZpcnN0IGJlIHNpZ24gZXh0ZW5kZWQKQEAgLTE0NSw3ICsxNDEs
NyBAQCBwcml2YXRlOgogICAgIC8vIGEgNjQgYml0IHVuc2lnbmVkIGludCB3b3VsZCBnaXZlIDB4
ZmZmZjgwMDAKICAgICBzdGF0aWMgY29uc3RleHByIFdvcmRUeXBlIG9uZSA9IDE7CiAKLSAgICBz
dGQ6OmFycmF5PFdvcmRUeXBlLCBudW1iZXJPZldvcmRzPiBiaXRzOworICAgIHN0ZDo6YXJyYXk8
V29yZFR5cGUsIHdvcmRzPiBiaXRzOwogfTsKIAogdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUs
IHR5cGVuYW1lIFdvcmRUeXBlPgpAQCAtMTU3LDEzICsxNTMsMTMgQEAgY29uc3RleHByIEJpdG1h
cDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OkJpdG1hcCgpCiB0ZW1wbGF0ZTxzaXplX3QgYml0bWFw
U2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+CiBpbmxpbmUgYm9vbCBCaXRtYXA8Yml0bWFwU2l6ZSwg
V29yZFR5cGU+OjpnZXQoc2l6ZV90IG4sIERlcGVuZGVuY3kgZGVwZW5kZW5jeSkgY29uc3QKIHsK
LSAgICByZXR1cm4gISEoZGVwZW5kZW5jeS5jb25zdW1lKHRoaXMpLT5iaXRzW24gLyBiaXRzSW5X
b3JkXSAmIChvbmUgPDwgKG4gJSBiaXRzSW5Xb3JkKSkpOworICAgIHJldHVybiAhIShkZXBlbmRl
bmN5LmNvbnN1bWUodGhpcyktPmJpdHNbbiAvIHdvcmRTaXplXSAmIChvbmUgPDwgKG4gJSB3b3Jk
U2l6ZSkpKTsKIH0KIAogdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRU
eXBlPgogaW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6c2V0KHNpemVf
dCBuKQogewotICAgIGJpdHNbbiAvIGJpdHNJbldvcmRdIHw9IChvbmUgPDwgKG4gJSBiaXRzSW5X
b3JkKSk7CisgICAgYml0c1tuIC8gd29yZFNpemVdIHw9IChvbmUgPDwgKG4gJSB3b3JkU2l6ZSkp
OwogfQogCiB0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+CkBA
IC0xNzgsOCArMTc0LDggQEAgaW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBl
Pjo6c2V0KHNpemVfdCBuLCBib29sIHZhbHVlKQogdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUs
IHR5cGVuYW1lIFdvcmRUeXBlPgogaW5saW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRU
eXBlPjo6dGVzdEFuZFNldChzaXplX3QgbikKIHsKLSAgICBXb3JkVHlwZSBtYXNrID0gb25lIDw8
IChuICUgYml0c0luV29yZCk7Ci0gICAgc2l6ZV90IGluZGV4ID0gbiAvIGJpdHNJbldvcmQ7Cisg
ICAgV29yZFR5cGUgbWFzayA9IG9uZSA8PCAobiAlIHdvcmRTaXplKTsKKyAgICBzaXplX3QgaW5k
ZXggPSBuIC8gd29yZFNpemU7CiAgICAgYm9vbCByZXN1bHQgPSBiaXRzW2luZGV4XSAmIG1hc2s7
CiAgICAgYml0c1tpbmRleF0gfD0gbWFzazsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMTg4LDgg
KzE4NCw4IEBAIGlubGluZSBib29sIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OnRlc3RB
bmRTZXQoc2l6ZV90IG4pCiB0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29y
ZFR5cGU+CiBpbmxpbmUgYm9vbCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+Ojp0ZXN0QW5k
Q2xlYXIoc2l6ZV90IG4pCiB7Ci0gICAgV29yZFR5cGUgbWFzayA9IG9uZSA8PCAobiAlIGJpdHNJ
bldvcmQpOwotICAgIHNpemVfdCBpbmRleCA9IG4gLyBiaXRzSW5Xb3JkOworICAgIFdvcmRUeXBl
IG1hc2sgPSBvbmUgPDwgKG4gJSB3b3JkU2l6ZSk7CisgICAgc2l6ZV90IGluZGV4ID0gbiAvIHdv
cmRTaXplOwogICAgIGJvb2wgcmVzdWx0ID0gYml0c1tpbmRleF0gJiBtYXNrOwogICAgIGJpdHNb
aW5kZXhdICY9IH5tYXNrOwogICAgIHJldHVybiByZXN1bHQ7CkBAIC0xOTgsOCArMTk0LDggQEAg
aW5saW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6dGVzdEFuZENsZWFyKHNp
emVfdCBuKQogdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgog
QUxXQVlTX0lOTElORSBib29sIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmNvbmN1cnJl
bnRUZXN0QW5kU2V0KHNpemVfdCBuLCBEZXBlbmRlbmN5IGRlcGVuZGVuY3kpCiB7Ci0gICAgV29y
ZFR5cGUgbWFzayA9IG9uZSA8PCAobiAlIGJpdHNJbldvcmQpOwotICAgIHNpemVfdCBpbmRleCA9
IG4gLyBiaXRzSW5Xb3JkOworICAgIFdvcmRUeXBlIG1hc2sgPSBvbmUgPDwgKG4gJSB3b3JkU2l6
ZSk7CisgICAgc2l6ZV90IGluZGV4ID0gbiAvIHdvcmRTaXplOwogICAgIFdvcmRUeXBlKiBkYXRh
ID0gZGVwZW5kZW5jeS5jb25zdW1lKGJpdHMuZGF0YSgpKSArIGluZGV4OwogICAgIHJldHVybiAh
Yml0d2lzZV9jYXN0PEF0b21pYzxXb3JkVHlwZT4qPihkYXRhKS0+dHJhbnNhY3Rpb25SZWxheGVk
KAogICAgICAgICBbJl0gKFdvcmRUeXBlJiB2YWx1ZSkgLT4gYm9vbCB7CkBAIC0yMTQsOCArMjEw
LDggQEAgQUxXQVlTX0lOTElORSBib29sIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmNv
bmN1cnJlbnRUZXN0QW5kU2V0KHNpemVfdCBuLAogdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUs
IHR5cGVuYW1lIFdvcmRUeXBlPgogQUxXQVlTX0lOTElORSBib29sIEJpdG1hcDxiaXRtYXBTaXpl
LCBXb3JkVHlwZT46OmNvbmN1cnJlbnRUZXN0QW5kQ2xlYXIoc2l6ZV90IG4sIERlcGVuZGVuY3kg
ZGVwZW5kZW5jeSkKIHsKLSAgICBXb3JkVHlwZSBtYXNrID0gb25lIDw8IChuICUgYml0c0luV29y
ZCk7Ci0gICAgc2l6ZV90IGluZGV4ID0gbiAvIGJpdHNJbldvcmQ7CisgICAgV29yZFR5cGUgbWFz
ayA9IG9uZSA8PCAobiAlIHdvcmRTaXplKTsKKyAgICBzaXplX3QgaW5kZXggPSBuIC8gd29yZFNp
emU7CiAgICAgV29yZFR5cGUqIGRhdGEgPSBkZXBlbmRlbmN5LmNvbnN1bWUoYml0cy5kYXRhKCkp
ICsgaW5kZXg7CiAgICAgcmV0dXJuICFiaXR3aXNlX2Nhc3Q8QXRvbWljPFdvcmRUeXBlPio+KGRh
dGEpLT50cmFuc2FjdGlvblJlbGF4ZWQoCiAgICAgICAgIFsmXSAoV29yZFR5cGUmIHZhbHVlKSAt
PiBib29sIHsKQEAgLTIzMCw3ICsyMjYsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgQml0bWFwPGJp
dG1hcFNpemUsIFdvcmRUeXBlPjo6Y29uY3VycmVudFRlc3RBbmRDbGVhcihzaXplX3QgbgogdGVt
cGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgogaW5saW5lIHZvaWQg
Qml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6Y2xlYXIoc2l6ZV90IG4pCiB7Ci0gICAgYml0
c1tuIC8gYml0c0luV29yZF0gJj0gfihvbmUgPDwgKG4gJSBiaXRzSW5Xb3JkKSk7CisgICAgYml0
c1tuIC8gd29yZFNpemVdICY9IH4ob25lIDw8IChuICUgd29yZFNpemUpKTsKIH0KIAogdGVtcGxh
dGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgpAQCAtMjQyLDIwICsyMzgs
MjAgQEAgaW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6Y2xlYXJBbGwo
KQogdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgogaW5saW5l
IHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6aW52ZXJ0KCkKIHsKLSAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG51bWJlck9mV29yZHM7ICsraSkKKyAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHdvcmRzOyArK2kpCiAgICAgICAgIGJpdHNbaV0gPSB+Yml0c1tpXTsKLSAgICBp
ZiBjb25zdGV4cHIgKCEhKGJpdG1hcFNpemUgJSBiaXRzSW5Xb3JkKSkgewotICAgICAgICBjb25z
dGV4cHIgc2l6ZV90IHJlbWFpbmluZ0JpdHMgPSBiaXRtYXBTaXplICUgYml0c0luV29yZDsKKyAg
ICBpZiBjb25zdGV4cHIgKCEhKGJpdG1hcFNpemUgJSB3b3JkU2l6ZSkpIHsKKyAgICAgICAgY29u
c3RleHByIHNpemVfdCByZW1haW5pbmdCaXRzID0gYml0bWFwU2l6ZSAlIHdvcmRTaXplOwogICAg
ICAgICBjb25zdGV4cHIgV29yZFR5cGUgbWFzayA9IChzdGF0aWNfY2FzdDxXb3JkVHlwZT4oMSkg
PDwgcmVtYWluaW5nQml0cykgLSAxOwotICAgICAgICBiaXRzW251bWJlck9mV29yZHMgLSAxXSAm
PSBtYXNrOworICAgICAgICBiaXRzW3dvcmRzIC0gMV0gJj0gbWFzazsKICAgICB9CiB9CiAKIHRl
bXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KIGlubGluZSBzaXpl
X3QgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6bmV4dFBvc3NpYmx5VW5zZXQoc2l6ZV90
IHN0YXJ0KSBjb25zdAogewotICAgIGlmICghfmJpdHNbc3RhcnQgLyBiaXRzSW5Xb3JkXSkKLSAg
ICAgICAgcmV0dXJuICgoc3RhcnQgLyBiaXRzSW5Xb3JkKSArIDEpICogYml0c0luV29yZDsKKyAg
ICBpZiAoIX5iaXRzW3N0YXJ0IC8gd29yZFNpemVdKQorICAgICAgICByZXR1cm4gKChzdGFydCAv
IHdvcmRTaXplKSArIDEpICogd29yZFNpemU7CiAgICAgcmV0dXJuIHN0YXJ0ICsgMTsKIH0KIApA
QCAtMjg2LDExICsyODIsMTEgQEAgdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1l
IFdvcmRUeXBlPgogaW5saW5lIHNpemVfdCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+Ojpj
b3VudChzaXplX3Qgc3RhcnQpIGNvbnN0CiB7CiAgICAgc2l6ZV90IHJlc3VsdCA9IDA7Ci0gICAg
Zm9yICggOyAoc3RhcnQgJSBiaXRzSW5Xb3JkKTsgKytzdGFydCkgeworICAgIGZvciAoIDsgKHN0
YXJ0ICUgd29yZFNpemUpOyArK3N0YXJ0KSB7CiAgICAgICAgIGlmIChnZXQoc3RhcnQpKQogICAg
ICAgICAgICAgKytyZXN1bHQ7CiAgICAgfQotICAgIGZvciAoc2l6ZV90IGkgPSBzdGFydCAvIGJp
dHNJbldvcmQ7IGkgPCBudW1iZXJPZldvcmRzOyArK2kpCisgICAgZm9yIChzaXplX3QgaSA9IHN0
YXJ0IC8gd29yZFNpemU7IGkgPCB3b3JkczsgKytpKQogICAgICAgICByZXN1bHQgKz0gV1RGOjpi
aXRDb3VudChiaXRzW2ldKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtMjk4LDIxICsyOTQs
MjAgQEAgaW5saW5lIHNpemVfdCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+Ojpjb3VudChz
aXplX3Qgc3RhcnQpIGNvbnN0CiB0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUg
V29yZFR5cGU+CiBpbmxpbmUgYm9vbCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+Ojppc0Vt
cHR5KCkgY29uc3QKIHsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bWJlck9mV29yZHM7
ICsraSkgeworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd29yZHM7ICsraSkKICAgICAgICAg
aWYgKGJpdHNbaV0pCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQogICAgIHJldHVy
biB0cnVlOwogfQogCiB0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5
cGU+CiBpbmxpbmUgYm9vbCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+Ojppc0Z1bGwoKSBj
b25zdAogewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtYmVyT2ZXb3JkczsgKytpKSB7
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3b3JkczsgKytpKQogICAgICAgICBpZiAofmJp
dHNbaV0pIHsKLSAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAoISEoYml0bWFwU2l6ZSAlIGJpdHNJ
bldvcmQpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGkgPT0gbnVtYmVyT2ZXb3JkcyAtIDEpIHsK
LSAgICAgICAgICAgICAgICAgICAgY29uc3RleHByIHNpemVfdCByZW1haW5pbmdCaXRzID0gYml0
bWFwU2l6ZSAlIGJpdHNJbldvcmQ7CisgICAgICAgICAgICBpZiBjb25zdGV4cHIgKCEhKGJpdG1h
cFNpemUgJSB3b3JkU2l6ZSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoaSA9PSB3b3JkcyAtIDEp
IHsKKyAgICAgICAgICAgICAgICAgICAgY29uc3RleHByIHNpemVfdCByZW1haW5pbmdCaXRzID0g
Yml0bWFwU2l6ZSAlIHdvcmRTaXplOwogICAgICAgICAgICAgICAgICAgICBjb25zdGV4cHIgV29y
ZFR5cGUgbWFzayA9IChzdGF0aWNfY2FzdDxXb3JkVHlwZT4oMSkgPDwgcmVtYWluaW5nQml0cykg
LSAxOwogICAgICAgICAgICAgICAgICAgICBpZiAoKGJpdHNbaV0gJiBtYXNrKSA9PSBtYXNrKQog
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0zMjAsMzUgKzMxNSwzNCBA
QCBpbmxpbmUgYm9vbCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+Ojppc0Z1bGwoKSBjb25z
dAogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9Ci0g
ICAgfQogICAgIHJldHVybiB0cnVlOwogfQogCiB0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwg
dHlwZW5hbWUgV29yZFR5cGU+CiBpbmxpbmUgdm9pZCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5
cGU+OjptZXJnZShjb25zdCBCaXRtYXAmIG90aGVyKQogewotICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbnVtYmVyT2ZXb3JkczsgKytpKQorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd29y
ZHM7ICsraSkKICAgICAgICAgYml0c1tpXSB8PSBvdGhlci5iaXRzW2ldOwogfQogCiB0ZW1wbGF0
ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+CiBpbmxpbmUgdm9pZCBCaXRt
YXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpmaWx0ZXIoY29uc3QgQml0bWFwJiBvdGhlcikKIHsK
LSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bWJlck9mV29yZHM7ICsraSkKKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHdvcmRzOyArK2kpCiAgICAgICAgIGJpdHNbaV0gJj0gb3RoZXIu
Yml0c1tpXTsKIH0KIAogdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRU
eXBlPgogaW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6ZXhjbHVkZShj
b25zdCBCaXRtYXAmIG90aGVyKQogewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtYmVy
T2ZXb3JkczsgKytpKQorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd29yZHM7ICsraSkKICAg
ICAgICAgYml0c1tpXSAmPSB+b3RoZXIuYml0c1tpXTsKIH0KIAogdGVtcGxhdGU8c2l6ZV90IGJp
dG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgogaW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNp
emUsIFdvcmRUeXBlPjo6Y29uY3VycmVudEZpbHRlcihjb25zdCBCaXRtYXAmIG90aGVyKQogewot
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtYmVyT2ZXb3JkczsgKytpKSB7CisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCB3b3JkczsgKytpKSB7CiAgICAgICAgIGZvciAoOzspIHsKICAg
ICAgICAgICAgIFdvcmRUeXBlIG90aGVyQml0cyA9IG90aGVyLmJpdHNbaV07CiAgICAgICAgICAg
ICBpZiAoIW90aGVyQml0cykgewpAQCAtMzY4LDcgKzM2Miw3IEBAIGlubGluZSB2b2lkIEJpdG1h
cDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmNvbmN1cnJlbnRGaWx0ZXIoY29uc3QgQml0bWFwJiBv
dGhlcikKIHRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KIGlu
bGluZSBib29sIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OnN1YnN1bWVzKGNvbnN0IEJp
dG1hcCYgb3RoZXIpIGNvbnN0CiB7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1iZXJP
ZldvcmRzOyArK2kpIHsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdvcmRzOyArK2kpIHsK
ICAgICAgICAgV29yZFR5cGUgbXlCaXRzID0gYml0c1tpXTsKICAgICAgICAgV29yZFR5cGUgb3Ro
ZXJCaXRzID0gb3RoZXIuYml0c1tpXTsKICAgICAgICAgaWYgKChteUJpdHMgfCBvdGhlckJpdHMp
ICE9IG15Qml0cykKQEAgLTM4MSwxNiArMzc1LDE2IEBAIHRlbXBsYXRlPHNpemVfdCBiaXRtYXBT
aXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CiBpbmxpbmUg
dm9pZCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+Ojpmb3JFYWNoU2V0Qml0KGNvbnN0IEZ1
bmMmIGZ1bmMpIGNvbnN0CiB7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1iZXJPZldv
cmRzOyArK2kpIHsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdvcmRzOyArK2kpIHsKICAg
ICAgICAgV29yZFR5cGUgd29yZCA9IGJpdHNbaV07Ci0gICAgICAgIHNpemVfdCBiYXNlID0gaSAq
IGJpdHNJbldvcmQ7Ci0gICAgICAgIHNpemVfdCBqID0gMDsKLSAgICAgICAgZm9yICg7IHdvcmQ7
ICsraikgeworICAgICAgICBpZiAoIXdvcmQpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgc2l6ZV90IGJhc2UgPSBpICogd29yZFNpemU7CisgICAgICAgIGZvciAoc2l6ZV90IGogPSAw
OyBqIDwgd29yZFNpemU7ICsraikgewogICAgICAgICAgICAgaWYgKHdvcmQgJiAxKQogICAgICAg
ICAgICAgICAgIGZ1bmMoYmFzZSArIGopOwogICAgICAgICAgICAgd29yZCA+Pj0gMTsKICAgICAg
ICAgfQotICAgICAgICBBU1NFUlQoaiA8PSBiaXRzSW5Xb3JkKTsKICAgICB9CiB9CiAKQEAgLTM5
OCwxNSArMzkyLDE1IEBAIHRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3Jk
VHlwZT4KIGlubGluZSBzaXplX3QgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6ZmluZEJp
dChzaXplX3Qgc3RhcnRJbmRleCwgYm9vbCB2YWx1ZSkgY29uc3QKIHsKICAgICBXb3JkVHlwZSBz
a2lwVmFsdWUgPSAtKHN0YXRpY19jYXN0PFdvcmRUeXBlPih2YWx1ZSkgXiAxKTsKLSAgICBzaXpl
X3Qgd29yZEluZGV4ID0gc3RhcnRJbmRleCAvIGJpdHNJbldvcmQ7Ci0gICAgc2l6ZV90IHN0YXJ0
SW5kZXhJbldvcmQgPSBzdGFydEluZGV4IC0gd29yZEluZGV4ICogYml0c0luV29yZDsKKyAgICBz
aXplX3Qgd29yZEluZGV4ID0gc3RhcnRJbmRleCAvIHdvcmRTaXplOworICAgIHNpemVfdCBzdGFy
dEluZGV4SW5Xb3JkID0gc3RhcnRJbmRleCAtIHdvcmRJbmRleCAqIHdvcmRTaXplOwogICAgIAot
ICAgIHdoaWxlICh3b3JkSW5kZXggPCBudW1iZXJPZldvcmRzKSB7CisgICAgd2hpbGUgKHdvcmRJ
bmRleCA8IHdvcmRzKSB7CiAgICAgICAgIFdvcmRUeXBlIHdvcmQgPSBiaXRzW3dvcmRJbmRleF07
CiAgICAgICAgIGlmICh3b3JkICE9IHNraXBWYWx1ZSkgewogICAgICAgICAgICAgc2l6ZV90IGlu
ZGV4ID0gc3RhcnRJbmRleEluV29yZDsKLSAgICAgICAgICAgIGlmIChmaW5kQml0SW5Xb3JkKHdv
cmQsIGluZGV4LCBiaXRzSW5Xb3JkLCB2YWx1ZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHdv
cmRJbmRleCAqIGJpdHNJbldvcmQgKyBpbmRleDsKKyAgICAgICAgICAgIGlmIChmaW5kQml0SW5X
b3JkKHdvcmQsIGluZGV4LCB3b3JkU2l6ZSwgdmFsdWUpKQorICAgICAgICAgICAgICAgIHJldHVy
biB3b3JkSW5kZXggKiB3b3JkU2l6ZSArIGluZGV4OwogICAgICAgICB9CiAgICAgICAgIAogICAg
ICAgICB3b3JkSW5kZXgrKzsKQEAgLTQxOSw3ICs0MTMsNyBAQCBpbmxpbmUgc2l6ZV90IEJpdG1h
cDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmZpbmRCaXQoc2l6ZV90IHN0YXJ0SW5kZXgsIGJvb2wg
dmFsdQogdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgogaW5s
aW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6bWVyZ2VBbmRDbGVhcihCaXRt
YXAmIG90aGVyKQogewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtYmVyT2ZXb3Jkczsg
KytpKSB7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3b3JkczsgKytpKSB7CiAgICAgICAg
IGJpdHNbaV0gfD0gb3RoZXIuYml0c1tpXTsKICAgICAgICAgb3RoZXIuYml0c1tpXSA9IDA7CiAg
ICAgfQpAQCAtNDI4LDcgKzQyMiw3IEBAIGlubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBX
b3JkVHlwZT46Om1lcmdlQW5kQ2xlYXIoQml0bWFwJiBvdGhlcikKIHRlbXBsYXRlPHNpemVfdCBi
aXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KIGlubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBT
aXplLCBXb3JkVHlwZT46OnNldEFuZENsZWFyKEJpdG1hcCYgb3RoZXIpCiB7Ci0gICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBudW1iZXJPZldvcmRzOyArK2kpIHsKKyAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHdvcmRzOyArK2kpIHsKICAgICAgICAgYml0c1tpXSA9IG90aGVyLmJpdHNbaV07
CiAgICAgICAgIG90aGVyLmJpdHNbaV0gPSAwOwogICAgIH0KQEAgLTQ0MCwzNSArNDM0LDM1IEBA
IGlubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OnNldEVhY2hOdGhCaXQo
c2l6ZV90IG4sIHNpemVfdCBzdGFydCwKICAgICBBU1NFUlQoc3RhcnQgPD0gZW5kKTsKICAgICBB
U1NFUlQoZW5kIDw9IGJpdG1hcFNpemUpOwogCi0gICAgc2l6ZV90IHdvcmRJbmRleCA9IHN0YXJ0
IC8gYml0c0luV29yZDsKLSAgICBzaXplX3QgZW5kV29yZEluZGV4ID0gZW5kIC8gYml0c0luV29y
ZDsKLSAgICBzaXplX3QgaW5kZXggPSBzdGFydCAtIHdvcmRJbmRleCAqIGJpdHNJbldvcmQ7Cisg
ICAgc2l6ZV90IHdvcmRJbmRleCA9IHN0YXJ0IC8gd29yZFNpemU7CisgICAgc2l6ZV90IGVuZFdv
cmRJbmRleCA9IGVuZCAvIHdvcmRTaXplOworICAgIHNpemVfdCBpbmRleCA9IHN0YXJ0IC0gd29y
ZEluZGV4ICogd29yZFNpemU7CiAgICAgd2hpbGUgKHdvcmRJbmRleCA8IGVuZFdvcmRJbmRleCkg
ewotICAgICAgICB3aGlsZSAoaW5kZXggPCBiaXRzSW5Xb3JkKSB7CisgICAgICAgIHdoaWxlIChp
bmRleCA8IHdvcmRTaXplKSB7CiAgICAgICAgICAgICBiaXRzW3dvcmRJbmRleF0gfD0gKG9uZSA8
PCBpbmRleCk7CiAgICAgICAgICAgICBpbmRleCArPSBuOwogICAgICAgICB9Ci0gICAgICAgIGlu
ZGV4IC09IGJpdHNJbldvcmQ7CisgICAgICAgIGluZGV4IC09IHdvcmRTaXplOwogICAgICAgICB3
b3JkSW5kZXgrKzsKICAgICB9CiAKLSAgICBzaXplX3QgZW5kSW5kZXggPSBlbmQgLSBlbmRXb3Jk
SW5kZXggKiBiaXRzSW5Xb3JkOworICAgIHNpemVfdCBlbmRJbmRleCA9IGVuZCAtIGVuZFdvcmRJ
bmRleCAqIHdvcmRTaXplOwogICAgIHdoaWxlIChpbmRleCA8IGVuZEluZGV4KSB7CiAgICAgICAg
IGJpdHNbd29yZEluZGV4XSB8PSAob25lIDw8IGluZGV4KTsKICAgICAgICAgaW5kZXggKz0gbjsK
ICAgICB9CiAKLSAgICBpZiBjb25zdGV4cHIgKCEhKGJpdG1hcFNpemUgJSBiaXRzSW5Xb3JkKSkg
ewotICAgICAgICBjb25zdGV4cHIgc2l6ZV90IHJlbWFpbmluZ0JpdHMgPSBiaXRtYXBTaXplICUg
Yml0c0luV29yZDsKKyAgICBpZiBjb25zdGV4cHIgKCEhKGJpdG1hcFNpemUgJSB3b3JkU2l6ZSkp
IHsKKyAgICAgICAgY29uc3RleHByIHNpemVfdCByZW1haW5pbmdCaXRzID0gYml0bWFwU2l6ZSAl
IHdvcmRTaXplOwogICAgICAgICBjb25zdGV4cHIgV29yZFR5cGUgbWFzayA9IChzdGF0aWNfY2Fz
dDxXb3JkVHlwZT4oMSkgPDwgcmVtYWluaW5nQml0cykgLSAxOwotICAgICAgICBiaXRzW251bWJl
ck9mV29yZHMgLSAxXSAmPSBtYXNrOworICAgICAgICBiaXRzW3dvcmRzIC0gMV0gJj0gbWFzazsK
ICAgICB9CiB9CiAKIHRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlw
ZT4KIGlubGluZSBib29sIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46Om9wZXJhdG9yPT0o
Y29uc3QgQml0bWFwJiBvdGhlcikgY29uc3QKIHsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG51bWJlck9mV29yZHM7ICsraSkgeworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd29yZHM7
ICsraSkgewogICAgICAgICBpZiAoYml0c1tpXSAhPSBvdGhlci5iaXRzW2ldKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTQ4NCwyMSArNDc4LDIxIEBAIGlubGluZSBib29s
IEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46Om9wZXJhdG9yIT0oY29uc3QgQml0bWFwJiBv
dGhlcikgY29uc3QKIHRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlw
ZT4KIGlubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46Om9wZXJhdG9yfD0o
Y29uc3QgQml0bWFwJiBvdGhlcikKIHsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bWJl
ck9mV29yZHM7ICsraSkKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdvcmRzOyArK2kpCiAg
ICAgICAgIGJpdHNbaV0gfD0gb3RoZXIuYml0c1tpXTsKIH0KIAogdGVtcGxhdGU8c2l6ZV90IGJp
dG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgogaW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNp
emUsIFdvcmRUeXBlPjo6b3BlcmF0b3ImPShjb25zdCBCaXRtYXAmIG90aGVyKQogewotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtYmVyT2ZXb3JkczsgKytpKQorICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgd29yZHM7ICsraSkKICAgICAgICAgYml0c1tpXSAmPSBvdGhlci5iaXRzW2ld
OwogfQogCiB0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+CiBp
bmxpbmUgdm9pZCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpvcGVyYXRvcl49KGNvbnN0
IEJpdG1hcCYgb3RoZXIpCiB7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1iZXJPZldv
cmRzOyArK2kpCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3b3JkczsgKytpKQogICAgICAg
ICBiaXRzW2ldIF49IG90aGVyLmJpdHNbaV07CiB9CiAKQEAgLTUwNiw3ICs1MDAsNyBAQCB0ZW1w
bGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+CiBpbmxpbmUgdW5zaWdu
ZWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6aGFzaCgpIGNvbnN0CiB7CiAgICAgdW5z
aWduZWQgcmVzdWx0ID0gMDsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bWJlck9mV29y
ZHM7ICsraSkKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdvcmRzOyArK2kpCiAgICAgICAg
IHJlc3VsdCBePSBJbnRIYXNoPFdvcmRUeXBlPjo6aGFzaChiaXRzW2ldKTsKICAgICByZXR1cm4g
cmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTWF0aEV4dHJhcy5oIGIvU291
cmNlL1dURi93dGYvTWF0aEV4dHJhcy5oCmluZGV4IDMxNzI4MGQ2ODFhNjA4NmE5MGNmZDBhYTVi
ZDJhNmVmZTAxMDRlNmYuLjc5Mzk0NjYxZmNiMjM2YTA3ZTJmMzAwZTI1YWE4YjJhOWE4NDllZGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL01hdGhFeHRyYXMuaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9NYXRoRXh0cmFzLmgKQEAgLTU5Myw3ICs1OTMsNyBAQCB2b2lkIHNodWZmbGVWZWN0b3Io
VmVjdG9yVHlwZSYgdmVjdG9yLCBjb25zdCBSYW5kb21GdW5jJiByYW5kb21GdW5jKQogdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CiBjb25zdGV4cHIgdW5zaWduZWQgY2x6Q29uc3RleHByKFQgdmFsdWUp
CiB7Ci0gICAgY29uc3RleHByIHVuc2lnbmVkIGJpdFNpemUgPSBjb3VudE9mQml0czxUPjsKKyAg
ICBjb25zdGV4cHIgdW5zaWduZWQgYml0U2l6ZSA9IHNpemVvZihUKSAqIENIQVJfQklUOwogCiAg
ICAgdXNpbmcgVVQgPSB0eXBlbmFtZSBzdGQ6Om1ha2VfdW5zaWduZWQ8VD46OnR5cGU7CiAgICAg
VVQgdVZhbHVlID0gdmFsdWU7CkBAIC02MTAsMTMgKzYxMCwxMyBAQCBjb25zdGV4cHIgdW5zaWdu
ZWQgY2x6Q29uc3RleHByKFQgdmFsdWUpCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogaW5saW5lIHVu
c2lnbmVkIGNseihUIHZhbHVlKQogewotICAgIGNvbnN0ZXhwciB1bnNpZ25lZCBiaXRTaXplID0g
Y291bnRPZkJpdHM8VD47CisgICAgY29uc3RleHByIHVuc2lnbmVkIGJpdFNpemUgPSBzaXplb2Yo
VCkgKiBDSEFSX0JJVDsKIAogICAgIHVzaW5nIFVUID0gdHlwZW5hbWUgc3RkOjptYWtlX3Vuc2ln
bmVkPFQ+Ojp0eXBlOwogICAgIFVUIHVWYWx1ZSA9IHZhbHVlOwogCiAjaWYgQ09NUElMRVIoR0ND
X0NPTVBBVElCTEUpCi0gICAgY29uc3RleHByIHVuc2lnbmVkIGJpdFNpemU2NCA9IGNvdW50T2ZC
aXRzPHVpbnQ2NF90PjsKKyAgICBjb25zdGV4cHIgdW5zaWduZWQgYml0U2l6ZTY0ID0gc2l6ZW9m
KHVpbnQ2NF90KSAqIENIQVJfQklUOwogICAgIGlmICh1VmFsdWUpCiAgICAgICAgIHJldHVybiBf
X2J1aWx0aW5fY2x6bGwodVZhbHVlKSAtIChiaXRTaXplNjQgLSBiaXRTaXplKTsKICAgICByZXR1
cm4gYml0U2l6ZTsKQEAgLTYzOCw3ICs2MzgsNyBAQCBpbmxpbmUgdW5zaWduZWQgY2x6KFQgdmFs
dWUpCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIGNvbnN0ZXhwciB1bnNpZ25lZCBjdHpDb25zdGV4
cHIoVCB2YWx1ZSkKIHsKLSAgICBjb25zdGV4cHIgdW5zaWduZWQgYml0U2l6ZSA9IGNvdW50T2ZC
aXRzPFQ+OworICAgIGNvbnN0ZXhwciB1bnNpZ25lZCBiaXRTaXplID0gc2l6ZW9mKFQpICogQ0hB
Ul9CSVQ7CiAKICAgICB1c2luZyBVVCA9IHR5cGVuYW1lIHN0ZDo6bWFrZV91bnNpZ25lZDxUPjo6
dHlwZTsKICAgICBVVCB1VmFsdWUgPSB2YWx1ZTsKQEAgLTY1Nyw3ICs2NTcsNyBAQCBjb25zdGV4
cHIgdW5zaWduZWQgY3R6Q29uc3RleHByKFQgdmFsdWUpCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgog
aW5saW5lIHVuc2lnbmVkIGN0eihUIHZhbHVlKQogewotICAgIGNvbnN0ZXhwciB1bnNpZ25lZCBi
aXRTaXplID0gY291bnRPZkJpdHM8VD47CisgICAgY29uc3RleHByIHVuc2lnbmVkIGJpdFNpemUg
PSBzaXplb2YoVCkgKiBDSEFSX0JJVDsKIAogICAgIHVzaW5nIFVUID0gdHlwZW5hbWUgc3RkOjpt
YWtlX3Vuc2lnbmVkPFQ+Ojp0eXBlOwogICAgIFVUIHVWYWx1ZSA9IHZhbHVlOwpAQCAtNjk1LDcg
KzY5NSw3IEBAIGNvbnN0ZXhwciB1bnNpZ25lZCBnZXRMU0JTZXRDb25zdGV4cHIoVCB0KQogdGVt
cGxhdGU8dHlwZW5hbWUgVD4KIGlubGluZSB1bnNpZ25lZCBnZXRNU0JTZXQoVCB0KQogewotICAg
IGNvbnN0ZXhwciB1bnNpZ25lZCBiaXRTaXplID0gY291bnRPZkJpdHM8VD47CisgICAgY29uc3Rl
eHByIHVuc2lnbmVkIGJpdFNpemUgPSBzaXplb2YoVCkgKiBDSEFSX0JJVDsKICAgICBBU1NFUlQo
dCk7CiAgICAgcmV0dXJuIGJpdFNpemUgLSAxIC0gY2x6KHQpOwogfQpAQCAtNzAzLDE0ICs3MDMs
MTEgQEAgaW5saW5lIHVuc2lnbmVkIGdldE1TQlNldChUIHQpCiB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PgogY29uc3RleHByIHVuc2lnbmVkIGdldE1TQlNldENvbnN0ZXhwcihUIHQpCiB7Ci0gICAgY29u
c3RleHByIHVuc2lnbmVkIGJpdFNpemUgPSBjb3VudE9mQml0czxUPjsKKyAgICBjb25zdGV4cHIg
dW5zaWduZWQgYml0U2l6ZSA9IHNpemVvZihUKSAqIENIQVJfQklUOwogICAgIEFTU0VSVF9VTkRF
Ul9DT05TVEVYUFJfQ09OVEVYVCh0KTsKICAgICByZXR1cm4gYml0U2l6ZSAtIDEgLSBjbHpDb25z
dGV4cHIodCk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHVuc2lnbmVkIGxvZzIoVCB2YWx1
ZSkgeyByZXR1cm4gZ2V0TVNCU2V0KHZhbHVlKTsgfQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gY29u
c3RleHByIHVuc2lnbmVkIGxvZzJDb25zdGV4cHIoVCB2YWx1ZSkgeyByZXR1cm4gZ2V0TVNCU2V0
Q29uc3RleHByKHZhbHVlKTsgfQotCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogdXNpbmcgV1RGOjpz
aHVmZmxlVmVjdG9yOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>