<?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>201702</bug_id>
          
          <creation_ts>2019-09-11 15:41:37 -0700</creation_ts>
          <short_desc>[JSC] SamplingProfiler should recognize RegExp execution</short_desc>
          <delta_ts>2021-07-19 10:29:13 -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="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>annulen</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1570024</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-09-11 15:41:37 -0700</bug_when>
    <thetext>Simply to investigate what RegExp is taking long time in several JetStream2 benchmarks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570027</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-09-11 15:42:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/55279830&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570539</commentid>
    <comment_count>2</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-09-13 02:43:57 -0700</bug_when>
    <thetext>After looking into the current SamplingProfiler and RegExp code, I think maybe, we should take a very simple way that is previously done in the previous patch because,

1. Yarr RegExp JIT code is not following JS calling-convention right now. And if we want to do that, we need to execute Yarr RegExp through LLInt vmEntry, it is not desirable.
2. RegExp JIT code must be a leaf of execution in terms of SamplingProfiler. So, just recording in VM is enough.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570546</commentid>
    <comment_count>3</comment_count>
      <attachid>378721</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-09-13 03:45:55 -0700</bug_when>
    <thetext>Created attachment 378721
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777407</commentid>
    <comment_count>4</comment_count>
      <attachid>433646</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-07-15 18:51:27 -0700</bug_when>
    <thetext>Created attachment 433646
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777417</commentid>
    <comment_count>5</comment_count>
      <attachid>433646</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-07-15 20:01:41 -0700</bug_when>
    <thetext>Comment on attachment 433646
Patch

Nice. r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777425</commentid>
    <comment_count>6</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-07-15 21:10:59 -0700</bug_when>
    <thetext>Committed r279976 (239719@main): &lt;https://commits.webkit.org/239719@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777689</commentid>
    <comment_count>7</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-07-16 18:20:42 -0700</bug_when>
    <thetext>*** Bug 190336 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777895</commentid>
    <comment_count>8</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2021-07-19 10:29:13 -0700</bug_when>
    <thetext>Whoa! Awesome</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378721</attachid>
            <date>2019-09-13 03:45:55 -0700</date>
            <delta_ts>2021-07-15 18:51:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201702-20190913034555.patch</filename>
            <type>text/plain</type>
            <size>59858</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5ODMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
ZTUyYzNjYzdjZTA4YTRkNjQ5MTJkNzI1NDRjMDg2YTMzNmQxNGIyLi5iZjU3MGJlOWFjMTBjYzY3
N2IyNGU2NWUwZmIxNmI5NzdlZGRiYWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MiBAQAorMjAxOS0wOS0xMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFNhbXBsaW5nUHJvZmlsZXIgc2hvdWxkIHJlY29nbml6ZSBKSVQt
YWNjZWxlcmF0ZWQgUmVnRXhwIGV4ZWN1dGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxNzAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFw
OjphZGRDb3JlQ29uc3RyYWludHMpOgorICAgICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnMuaDoK
KyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjplbWl0U2F2ZUNhbGxlZVNhdmVzRm9yKToK
KyAgICAgICAgKiBydW50aW1lL0pTVHlwZS5jcHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJu
YWwpOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlLmg6CisgICAgICAgICogcnVudGltZS9SZWdF
eHAuY3BwOgorICAgICAgICAoSlNDOjpSZWdFeHA6Om1hdGNoKToKKyAgICAgICAgKEpTQzo6UmVn
RXhwOjptYXRjaENvbmN1cnJlbnRseSk6CisgICAgICAgIChKU0M6OlJlZ0V4cDo6dG9Tb3VyY2VT
dHJpbmcgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwLmg6CisgICAgICAgICogcnVu
dGltZS9SZWdFeHBJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OlBhdHRlcm5Db250ZXh0QnVmZmVy
SG9sZGVyOjpzaXplKToKKyAgICAgICAgKEpTQzo6UmVnRXhwOjptYXRjaElubGluZSk6CisgICAg
ICAgICogcnVudGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuaDoKKyAgICAgICAgKEpTQzo6Y3JlYXRl
UmVnRXhwTWF0Y2hlc0FycmF5KToKKyAgICAgICAgKiBydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIu
Y3BwOgorICAgICAgICAoSlNDOjpTYW1wbGluZ1Byb2ZpbGVyOjpTYW1wbGluZ1Byb2ZpbGVyKToK
KyAgICAgICAgKEpTQzo6U2FtcGxpbmdQcm9maWxlcjo6dGltZXJMb29wKToKKyAgICAgICAgKEpT
Qzo6U2FtcGxpbmdQcm9maWxlcjo6dGFrZVNhbXBsZSk6CisgICAgICAgIChKU0M6OlNhbXBsaW5n
UHJvZmlsZXI6OnByb2Nlc3NVbnZlcmlmaWVkU3RhY2tUcmFjZXMpOgorICAgICAgICAoSlNDOjpT
YW1wbGluZ1Byb2ZpbGVyOjpTdGFja0ZyYW1lOjpuYW1lRnJvbUNhbGxlZSk6CisgICAgICAgIChK
U0M6OlNhbXBsaW5nUHJvZmlsZXI6OlN0YWNrRnJhbWU6OmRpc3BsYXlOYW1lKToKKyAgICAgICAg
KEpTQzo6U2FtcGxpbmdQcm9maWxlcjo6U3RhY2tGcmFtZTo6ZGlzcGxheU5hbWVGb3JKU09OVGVz
dHMpOgorICAgICAgICAoSlNDOjpTYW1wbGluZ1Byb2ZpbGVyOjpTdGFja0ZyYW1lOjpmdW5jdGlv
blN0YXJ0TGluZSk6CisgICAgICAgIChKU0M6OlNhbXBsaW5nUHJvZmlsZXI6OlN0YWNrRnJhbWU6
OmZ1bmN0aW9uU3RhcnRDb2x1bW4pOgorICAgICAgICAoSlNDOjpTYW1wbGluZ1Byb2ZpbGVyOjpT
dGFja0ZyYW1lOjpzb3VyY2VJRCk6CisgICAgICAgIChKU0M6OlNhbXBsaW5nUHJvZmlsZXI6OlN0
YWNrRnJhbWU6OnVybCk6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAo
SlNDOjpTYW1wbGluZ1Byb2ZpbGVyOjp+U2FtcGxpbmdQcm9maWxlcik6IERlbGV0ZWQuCisgICAg
ICAgICogcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmg6CisgICAgICAgICogcnVudGltZS9WTS5j
cHA6CisgICAgICAgIChKU0M6OlZNOjphY3F1aXJlUmVnRXhwUGF0dGVybkNvbnRleEJ1ZmZlcik6
CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAqIHlhcnIvWWFyci5oOgorICAgICAg
ICAqIHlhcnIvWWFyckpJVC5jcHA6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJHZW5lcmF0b3I6
OmluaXRQYXJlbkNvbnRleHRGcmVlTGlzdCk6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJHZW5l
cmF0b3I6OmFsaWduQ2FsbEZyYW1lU2l6ZUluQnl0ZXMpOgorICAgICAgICAoSlNDOjpZYXJyOjpZ
YXJyR2VuZXJhdG9yOjpnZW5lcmF0ZUZhaWxSZXR1cm4pOgorICAgICAgICAoSlNDOjpZYXJyOjpZ
YXJyR2VuZXJhdG9yOjpnZW5lcmF0ZUpJVEZhaWxSZXR1cm4pOgorICAgICAgICAoSlNDOjpZYXJy
OjpZYXJyR2VuZXJhdG9yOjpnZW5lcmF0ZSk6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJHZW5l
cmF0b3I6OmJhY2t0cmFjayk6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJHZW5lcmF0b3I6OnVz
ZWRDYWxsZWVTYXZlUmVnaXN0ZXJzKToKKyAgICAgICAgKEpTQzo6WWFycjo6WWFyckdlbmVyYXRv
cjo6Z2VuZXJhdGVFbnRlcik6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJHZW5lcmF0b3I6Omdl
bmVyYXRlUmV0dXJuKToKKyAgICAgICAgKEpTQzo6WWFycjo6WWFyckdlbmVyYXRvcjo6Y29tcGls
ZSk6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJHZW5lcmF0b3I6OmluaXRDYWxsRnJhbWUpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyR2VuZXJhdG9yOjpyZW1vdmVDYWxsRnJh
bWUpOiBEZWxldGVkLgorICAgICAgICAqIHlhcnIvWWFyckpJVC5oOgorICAgICAgICAoSlNDOjpZ
YXJyOjpZYXJyQ29kZUJsb2NrOjpleGVjdXRlKToKKwogMjAxOS0wOS0xMyAgWXVzdWtlIFN1enVr
aSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIFg4NlJlZ2lzdGVycy5oIGNh
bGxlZS1zYXZlIHJlZ2lzdGVyIGRlZmluaXRpb24gaXMgd3JvbmcKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcC5jcHAKaW5kZXggNWYyNGRlNzY5MDkxNzNjZGFlNWY2MDJkNzU5ZTU1NjJmMDVkMGFm
Yi4uZGZjMWUwNzY0ZTQyMWUzZGFhYTgwNGQ3ZjkwY2YxZWRkZjIxODJhNyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcC5jcHAKQEAgLTI3NTEsNiArMjc1MSw3IEBAIHZvaWQgSGVhcDo6YWRk
Q29yZUNvbnN0cmFpbnRzKCkKICAgICAgICAgICAgICAgICBTZXRSb290TWFya1JlYXNvblNjb3Bl
IHJvb3RTY29wZShzbG90VmlzaXRvciwgU2xvdFZpc2l0b3I6OlJvb3RNYXJrUmVhc29uOjpWTUV4
Y2VwdGlvbnMpOwogICAgICAgICAgICAgICAgIHNsb3RWaXNpdG9yLmFwcGVuZFVuYmFycmllcmVk
KG1fdm0uZXhjZXB0aW9uKCkpOwogICAgICAgICAgICAgICAgIHNsb3RWaXNpdG9yLmFwcGVuZFVu
YmFycmllcmVkKG1fdm0ubGFzdEV4Y2VwdGlvbigpKTsKKyAgICAgICAgICAgICAgICBzbG90Vmlz
aXRvci5hcHBlbmRVbmJhcnJpZXJlZChtX3ZtLT5leGVjdXRpbmdSZWdFeHBKSVQpOwogICAgICAg
ICAgICAgfQogICAgICAgICB9LAogICAgICAgICBDb25zdHJhaW50Vm9sYXRpbGl0eTo6R3JleWVk
QnlFeGVjdXRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3Nl
bWJseUhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJz
LmgKaW5kZXggMjE0YjQxOGY4YTAzN2M0ZDMyODg5MDhhNmViNzkwZWI5OTBkNWJiNS4uNTE4NTc1
MGJiMzg1YjA5NTZmM2U0MjY0MTA3MDFkZWQzY2IwYTc5ZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCkBAIC0yNjksNyArMjY5LDcgQEAgY2xhc3MgQXNz
ZW1ibHlIZWxwZXJzIDogcHVibGljIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAgIFJlZ2lz
dGVyQXRPZmZzZXQgZW50cnkgPSBjYWxsZWVTYXZlcy0+YXQoaSk7CiAgICAgICAgICAgICBpZiAo
ZG9udFNhdmVSZWdpc3RlcnMuZ2V0KGVudHJ5LnJlZygpKSkKICAgICAgICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgICAgIHN0b3JlUHRyKGVudHJ5LnJlZygpLmdwcigpLCBBZGRyZXNzKGZy
YW1lUG9pbnRlclJlZ2lzdGVyLCBlbnRyeS5vZmZzZXQoKSkpOworICAgICAgICAgICAgc3RvcmVQ
dHIoZW50cnkucmVnKCkuZ3ByKCksIGFkZHJlc3NGb3IoZW50cnkpKTsKICAgICAgICAgfQogICAg
IH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlw
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuY3BwCmluZGV4IDg0
OWIzNzkxODhlZmNlNTcwOTIzZjVhMWE1YTRmNzFiYzlkOTk0NzYuLmU0ZTJkOTcyZWQ1YTRlNTE1
YTI3ZDFkMjhiZTAxNTg3NjU5ZTM0ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTVHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNUeXBlLmNwcApAQCAtNTcsNiArNTcsNyBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJl
YW0mIG91dCwgSlNDOjpKU1R5cGUgdHlwZSkKICAgICBDQVNFKFVubGlua2VkRXZhbENvZGVCbG9j
a1R5cGUpCiAgICAgQ0FTRShVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrVHlwZSkKICAgICBDQVNF
KENvZGVCbG9ja1R5cGUpCisgICAgQ0FTRShSZWdFeHBDZWxsVHlwZSkKICAgICBDQVNFKEpTRml4
ZWRBcnJheVR5cGUpCiAgICAgQ0FTRShKU0ltbXV0YWJsZUJ1dHRlcmZseVR5cGUpCiAgICAgQ0FT
RShKU1NvdXJjZUNvZGVUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaApp
bmRleCA4ZDM1YWM3Nzk4MzczOWIxYTNmZTVkNTBhNmY5MWI5MDEyOWZmNzdkLi5mNjJkZjdkYjI3
MzI3MDIwZGM1ZTEyMjZkNzIyYjdhOWM0MjRiMTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1R5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1R5cGUuaApAQCAtNDgsNiArNDgsNyBAQCBlbnVtIEpTVHlwZSA6IHVpbnQ4X3Qgewog
ICAgICAgICAKICAgICBDb2RlQmxvY2tUeXBlLAogCisgICAgUmVnRXhwQ2VsbFR5cGUsIC8vIFRo
aXMgaXMgZGlmZmVyZW50IGZyb20gUmVnRXhwT2JqZWN0VHlwZS4KICAgICBKU0ZpeGVkQXJyYXlU
eXBlLAogICAgIEpTSW1tdXRhYmxlQnV0dGVyZmx5VHlwZSwKICAgICBKU1NvdXJjZUNvZGVUeXBl
LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAKaW5kZXggNzBlNTkzZDUz
ZWJkZDgxZDhjMDgxM2EyOTc3MGU5NDBjZTA0MTEzZi4uNDQwZTllNWY2OGM5M2U4Y2UyN2NlNjk1
ZjllNjZlM2UzNThkZTc2MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAu
Y3BwCkBAIC0yOTEsNyArMjkxLDcgQEAgdm9pZCBSZWdFeHA6OmNvbXBpbGUoVk0qIHZtLCBZYXJy
OjpZYXJyQ2hhclNpemUgY2hhclNpemUpCiAKIGludCBSZWdFeHA6Om1hdGNoKFZNJiB2bSwgY29u
c3QgU3RyaW5nJiBzLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgVmVjdG9yPGludD4mIG92ZWN0b3Ip
CiB7Ci0gICAgcmV0dXJuIG1hdGNoSW5saW5lKHZtLCBzLCBzdGFydE9mZnNldCwgb3ZlY3Rvcik7
CisgICAgcmV0dXJuIG1hdGNoSW5saW5lKHZtLCBFeGVjdXRpb25Db250ZXh0OjpKUywgcywgc3Rh
cnRPZmZzZXQsIG92ZWN0b3IpOwogfQogCiBib29sIFJlZ0V4cDo6bWF0Y2hDb25jdXJyZW50bHko
CkBAIC0zMDIsNyArMzAyLDcgQEAgYm9vbCBSZWdFeHA6Om1hdGNoQ29uY3VycmVudGx5KAogICAg
IGlmICghaGFzQ29kZUZvcihzLmlzOEJpdCgpID8gWWFycjo6Q2hhcjggOiBZYXJyOjpDaGFyMTYp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBwb3NpdGlvbiA9IG1hdGNoKHZtLCBzLCBz
dGFydE9mZnNldCwgb3ZlY3Rvcik7CisgICAgcG9zaXRpb24gPSBtYXRjaElubGluZSh2bSwgRXhl
Y3V0aW9uQ29udGV4dDo6Tm9uSlMsIHMsIHN0YXJ0T2Zmc2V0LCBvdmVjdG9yKTsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIApAQCAtMzUzLDcgKzM1Myw3IEBAIHZvaWQgUmVnRXhwOjpjb21waWxlTWF0
Y2hPbmx5KFZNKiB2bSwgWWFycjo6WWFyckNoYXJTaXplIGNoYXJTaXplKQogCiBNYXRjaFJlc3Vs
dCBSZWdFeHA6Om1hdGNoKFZNJiB2bSwgY29uc3QgU3RyaW5nJiBzLCB1bnNpZ25lZCBzdGFydE9m
ZnNldCkKIHsKLSAgICByZXR1cm4gbWF0Y2hJbmxpbmUodm0sIHMsIHN0YXJ0T2Zmc2V0KTsKKyAg
ICByZXR1cm4gbWF0Y2hJbmxpbmUodm0sIEV4ZWN1dGlvbkNvbnRleHQ6OkpTLCBzLCBzdGFydE9m
ZnNldCk7CiB9CiAKIGJvb2wgUmVnRXhwOjptYXRjaENvbmN1cnJlbnRseShWTSYgdm0sIGNvbnN0
IFN0cmluZyYgcywgdW5zaWduZWQgc3RhcnRPZmZzZXQsIE1hdGNoUmVzdWx0JiByZXN1bHQpCkBA
IC0zNjMsNyArMzYzLDcgQEAgYm9vbCBSZWdFeHA6Om1hdGNoQ29uY3VycmVudGx5KFZNJiB2bSwg
Y29uc3QgU3RyaW5nJiBzLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgTWEKICAgICBpZiAoIWhhc01h
dGNoT25seUNvZGVGb3Iocy5pczhCaXQoKSA/IFlhcnI6OkNoYXI4IDogWWFycjo6Q2hhcjE2KSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmVzdWx0ID0gbWF0Y2godm0sIHMsIHN0YXJ0
T2Zmc2V0KTsKKyAgICByZXN1bHQgPSBtYXRjaElubGluZSh2bSwgRXhlY3V0aW9uQ29udGV4dDo6
Tm9uSlMsIHMsIHN0YXJ0T2Zmc2V0KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzgxLDYg
KzM4MSwyNiBAQCB2b2lkIFJlZ0V4cDo6ZGVsZXRlQ29kZSgpCiAgICAgbV9yZWdFeHBCeXRlY29k
ZSA9IG51bGxwdHI7CiB9CiAKK1N0cmluZyBSZWdFeHA6OnRvU291cmNlU3RyaW5nKCkgY29uc3QK
K3sKKyAgICBjaGFyIHBvc3RmaXhbN10gPSB7ICcvJywgMCwgMCwgMCwgMCwgMCwgMCB9OworICAg
IGludCBpbmRleCA9IDE7CisgICAgaWYgKGdsb2JhbCgpKQorICAgICAgICBwb3N0Zml4W2luZGV4
KytdID0gJ2cnOworICAgIGlmIChpZ25vcmVDYXNlKCkpCisgICAgICAgIHBvc3RmaXhbaW5kZXgr
K10gPSAnaSc7CisgICAgaWYgKG11bHRpbGluZSgpKQorICAgICAgICBwb3N0Zml4W2luZGV4XSA9
ICdtJzsKKyAgICBpZiAoZG90QWxsKCkpCisgICAgICAgIHBvc3RmaXhbaW5kZXgrK10gPSAncyc7
CisgICAgaWYgKHVuaWNvZGUoKSkKKyAgICAgICAgcG9zdGZpeFtpbmRleCsrXSA9ICd1JzsKKyAg
ICBpZiAoc3RpY2t5KCkpCisgICAgICAgIHBvc3RmaXhbaW5kZXgrK10gPSAneSc7CisKKyAgICBy
ZXR1cm4gbWFrZVN0cmluZygiLyIsIHBhdHRlcm4oKSwgcG9zdGZpeCk7Cit9CisKICNpZiBFTkFC
TEUoWUFSUl9KSVRfREVCVUcpCiB2b2lkIFJlZ0V4cDo6bWF0Y2hDb21wYXJlV2l0aEludGVycHJl
dGVyKGNvbnN0IFN0cmluZyYgcywgaW50IHN0YXJ0T2Zmc2V0LCBpbnQqIG9mZnNldFZlY3Rvciwg
aW50IGppdFJlc3VsdCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZ0V4cC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgKaW5k
ZXggZThkYTg1MjZlN2M3ZTgxZmJlYTc1Yzg4OTg4MTYxYjlhZjg5MTcxMy4uNjhiNmVlZmUyZjU1
MjAyZDNkNDEzODgwMjgyYTM4YzAwYTAxYmY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwLmgKQEAgLTgwLDkgKzgwLDEwIEBAIGNsYXNzIFJlZ0V4cCBmaW5hbCA6IHB1Ymxp
YyBKU0NlbGwgewogICAgIGJvb2wgbWF0Y2hDb25jdXJyZW50bHkoVk0mLCBjb25zdCBTdHJpbmcm
LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgTWF0Y2hSZXN1bHQmKTsKIAogICAgIC8vIENhbGwgdGhl
c2UgdmVyc2lvbnMgb2YgdGhlIG1hdGNoIGZ1bmN0aW9ucyBpZiB5b3UncmUgZGVzcGVyYXRlIGZv
ciBwZXJmb3JtYW5jZS4KKyAgICBlbnVtIGNsYXNzIEV4ZWN1dGlvbkNvbnRleHQgeyBKUywgTm9u
SlMgfTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWZWN0b3JUeXBlPgotICAgIGludCBtYXRjaElu
bGluZShWTSYsIGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCBWZWN0b3JUeXBl
JiBvdmVjdG9yKTsKLSAgICBNYXRjaFJlc3VsdCBtYXRjaElubGluZShWTSYsIGNvbnN0IFN0cmlu
ZyYsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KTsKKyAgICBpbnQgbWF0Y2hJbmxpbmUoVk0mLCBFeGVj
dXRpb25Db250ZXh0LCBjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgVmVjdG9y
VHlwZSYgb3ZlY3Rvcik7CisgICAgTWF0Y2hSZXN1bHQgbWF0Y2hJbmxpbmUoVk0mLCBFeGVjdXRp
b25Db250ZXh0LCBjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCBzdGFydE9mZnNldCk7CiAgICAgCiAg
ICAgdW5zaWduZWQgbnVtU3VicGF0dGVybnMoKSBjb25zdCB7IHJldHVybiBtX251bVN1YnBhdHRl
cm5zOyB9CiAKQEAgLTEyNSwxMyArMTI2LDE1IEBAIGNsYXNzIFJlZ0V4cCBmaW5hbCA6IHB1Ymxp
YyBKU0NlbGwgewogCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAg
ewotICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJv
dG90eXBlLCBUeXBlSW5mbyhDZWxsVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAg
ICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBl
LCBUeXBlSW5mbyhSZWdFeHBDZWxsVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogICAg
IH0KIAogICAgIERFQ0xBUkVfSU5GTzsKIAogICAgIFJlZ0V4cEtleSBrZXkoKSB7IHJldHVybiBS
ZWdFeHBLZXkobV9mbGFncywgbV9wYXR0ZXJuU3RyaW5nKTsgfQogCisgICAgU3RyaW5nIHRvU291
cmNlU3RyaW5nKCkgY29uc3Q7CisKIHByb3RlY3RlZDoKICAgICB2b2lkIGZpbmlzaENyZWF0aW9u
KFZNJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cElubGluZXMu
aAppbmRleCA2OTY5YjQ2ZjczODIwMWZhYWU4YzhkNWZiZTVjNzIwMzM3YmIyYjk1Li45NzRkYmQx
MjY0Yzk5NzlkNmFiYzVlOTk1ZDk3OTY1YmFkYjU1M2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwSW5saW5lcy5oCkBAIC0xMTEsNyArMTExLDcgQEAgY2xhc3Mg
UGF0dGVybkNvbnRleHRCdWZmZXJIb2xkZXIgewogICAgIH0KIAogICAgIHZvaWQqIGJ1ZmZlcigp
IHsgcmV0dXJuIG1fYnVmZmVyOyB9Ci0gICAgdW5zaWduZWQgc2l6ZSgpIHsgcmV0dXJuIGJ1ZmZl
cigpID8gVk06OnBhdHRlcm5Db250ZXh0QnVmZmVyU2l6ZSA6IDA7IH0KKyAgICB1bnNpZ25lZCBz
aXplKCkgeyByZXR1cm4gYnVmZmVyKCkgPyBZYXJyOjpwYXR0ZXJuQ29udGV4dEJ1ZmZlclNpemUg
OiAwOyB9CiAKIHByaXZhdGU6CiAgICAgVk0mIG1fdm07CkBAIC0xMzAsNyArMTMwLDcgQEAgQUxX
QVlTX0lOTElORSB2b2lkIFJlZ0V4cDo6Y29tcGlsZUlmTmVjZXNzYXJ5KFZNJiB2bSwgWWFycjo6
WWFyckNoYXJTaXplIGNoYXJTaXoKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVmVjdG9yVHlwZT4K
LUFMV0FZU19JTkxJTkUgaW50IFJlZ0V4cDo6bWF0Y2hJbmxpbmUoVk0mIHZtLCBjb25zdCBTdHJp
bmcmIHMsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCBWZWN0b3JUeXBlJiBvdmVjdG9yKQorQUxXQVlT
X0lOTElORSBpbnQgUmVnRXhwOjptYXRjaElubGluZShWTSYgdm0sIEV4ZWN1dGlvbkNvbnRleHQg
Y29udGV4dCwgY29uc3QgU3RyaW5nJiBzLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgVmVjdG9yVHlw
ZSYgb3ZlY3RvcikKIHsKICNpZiBFTkFCTEUoUkVHRVhQX1RSQUNJTkcpCiAgICAgbV9ydE1hdGNo
Q2FsbENvdW50Kys7CkBAIC0xNjMsOSArMTYzLDkgQEAgQUxXQVlTX0lOTElORSBpbnQgUmVnRXhw
OjptYXRjaElubGluZShWTSYgdm0sIGNvbnN0IFN0cmluZyYgcywgdW5zaWduZWQgc3RhcnRPZmYK
ICAgICAgICAgICAgIFBhdHRlcm5Db250ZXh0QnVmZmVySG9sZGVyIHBhdHRlcm5Db250ZXh0QnVm
ZmVySG9sZGVyKHZtLCBtX3JlZ0V4cEpJVENvZGUtPnVzZXNQYXR0ZXJuQ29udGV4dEJ1ZmZlcigp
KTsKIAogICAgICAgICAgICAgaWYgKHMuaXM4Qml0KCkpCi0gICAgICAgICAgICAgICAgcmVzdWx0
ID0gbV9yZWdFeHBKSVRDb2RlLT5leGVjdXRlKHMuY2hhcmFjdGVyczgoKSwgc3RhcnRPZmZzZXQs
IHMubGVuZ3RoKCksIG9mZnNldFZlY3RvciwgcGF0dGVybkNvbnRleHRCdWZmZXJIb2xkZXIuYnVm
ZmVyKCksIHBhdHRlcm5Db250ZXh0QnVmZmVySG9sZGVyLnNpemUoKSkuc3RhcnQ7CisgICAgICAg
ICAgICAgICAgcmVzdWx0ID0gbV9yZWdFeHBKSVRDb2RlLT5leGVjdXRlKHRoaXMsIHMuY2hhcmFj
dGVyczgoKSwgc3RhcnRPZmZzZXQsIHMubGVuZ3RoKCksIG9mZnNldFZlY3RvciwgcGF0dGVybkNv
bnRleHRCdWZmZXJIb2xkZXIuYnVmZmVyKCkpLnN0YXJ0OwogICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgIHJlc3VsdCA9IG1fcmVnRXhwSklUQ29kZS0+ZXhlY3V0ZShzLmNoYXJhY3Rl
cnMxNigpLCBzdGFydE9mZnNldCwgcy5sZW5ndGgoKSwgb2Zmc2V0VmVjdG9yLCBwYXR0ZXJuQ29u
dGV4dEJ1ZmZlckhvbGRlci5idWZmZXIoKSwgcGF0dGVybkNvbnRleHRCdWZmZXJIb2xkZXIuc2l6
ZSgpKS5zdGFydDsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBtX3JlZ0V4cEpJVENvZGUtPmV4
ZWN1dGUodGhpcywgcy5jaGFyYWN0ZXJzMTYoKSwgc3RhcnRPZmZzZXQsIHMubGVuZ3RoKCksIG9m
ZnNldFZlY3RvciwgcGF0dGVybkNvbnRleHRCdWZmZXJIb2xkZXIuYnVmZmVyKCkpLnN0YXJ0Owog
ICAgICAgICB9CiAKICAgICAgICAgaWYgKHJlc3VsdCA9PSBZYXJyOjpKU1JlZ0V4cEpJVENvZGVG
YWlsdXJlKSB7CkBAIC0yNTgsNyArMjU4LDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIFJlZ0V4cDo6
Y29tcGlsZUlmTmVjZXNzYXJ5TWF0Y2hPbmx5KFZNJiB2bSwgWWFycjo6WWFyckNoYXJTaXoKICAg
ICBjb21waWxlTWF0Y2hPbmx5KCZ2bSwgY2hhclNpemUpOwogfQogCi1BTFdBWVNfSU5MSU5FIE1h
dGNoUmVzdWx0IFJlZ0V4cDo6bWF0Y2hJbmxpbmUoVk0mIHZtLCBjb25zdCBTdHJpbmcmIHMsIHVu
c2lnbmVkIHN0YXJ0T2Zmc2V0KQorQUxXQVlTX0lOTElORSBNYXRjaFJlc3VsdCBSZWdFeHA6Om1h
dGNoSW5saW5lKFZNJiB2bSwgRXhlY3V0aW9uQ29udGV4dCBjb250ZXh0LCBjb25zdCBTdHJpbmcm
IHMsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KQogewogI2lmIEVOQUJMRShSRUdFWFBfVFJBQ0lORykK
ICAgICBtX3J0TWF0Y2hPbmx5Q2FsbENvdW50Kys7CkBAIC0yODcsOSArMjg3LDkgQEAgQUxXQVlT
X0lOTElORSBNYXRjaFJlc3VsdCBSZWdFeHA6Om1hdGNoSW5saW5lKFZNJiB2bSwgY29uc3QgU3Ry
aW5nJiBzLCB1bnNpZ25lZAogICAgICAgICAgICAgQVNTRVJUKG1fcmVnRXhwSklUQ29kZSk7CiAg
ICAgICAgICAgICBQYXR0ZXJuQ29udGV4dEJ1ZmZlckhvbGRlciBwYXR0ZXJuQ29udGV4dEJ1ZmZl
ckhvbGRlcih2bSwgbV9yZWdFeHBKSVRDb2RlLT51c2VzUGF0dGVybkNvbnRleHRCdWZmZXIoKSk7
CiAgICAgICAgICAgICBpZiAocy5pczhCaXQoKSkKLSAgICAgICAgICAgICAgICByZXN1bHQgPSBt
X3JlZ0V4cEpJVENvZGUtPmV4ZWN1dGUocy5jaGFyYWN0ZXJzOCgpLCBzdGFydE9mZnNldCwgcy5s
ZW5ndGgoKSwgcGF0dGVybkNvbnRleHRCdWZmZXJIb2xkZXIuYnVmZmVyKCksIHBhdHRlcm5Db250
ZXh0QnVmZmVySG9sZGVyLnNpemUoKSk7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gbV9yZWdF
eHBKSVRDb2RlLT5leGVjdXRlKHRoaXMsIHMuY2hhcmFjdGVyczgoKSwgc3RhcnRPZmZzZXQsIHMu
bGVuZ3RoKCksIHBhdHRlcm5Db250ZXh0QnVmZmVySG9sZGVyLmJ1ZmZlcigpKTsKICAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXN1bHQgPSBtX3JlZ0V4cEpJVENvZGUtPmV4ZWN1
dGUocy5jaGFyYWN0ZXJzMTYoKSwgc3RhcnRPZmZzZXQsIHMubGVuZ3RoKCksIHBhdHRlcm5Db250
ZXh0QnVmZmVySG9sZGVyLmJ1ZmZlcigpLCBwYXR0ZXJuQ29udGV4dEJ1ZmZlckhvbGRlci5zaXpl
KCkpOworICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1fcmVnRXhwSklUQ29kZS0+ZXhlY3V0ZSh0
aGlzLCBzLmNoYXJhY3RlcnMxNigpLCBzdGFydE9mZnNldCwgcy5sZW5ndGgoKSwgcGF0dGVybkNv
bnRleHRCdWZmZXJIb2xkZXIuYnVmZmVyKCkpOwogICAgICAgICB9CiAKICNpZiBFTkFCTEUoUkVH
RVhQX1RSQUNJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9S
ZWdFeHBNYXRjaGVzQXJyYXkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cE1hdGNoZXNBcnJheS5oCmluZGV4IGUwOTEzZDVjZDRiOWMyM2I2MTllYWYwNzY0YmUxOTY0Yjhj
MGE1NmIuLjNlZGVjODAwMzIyMWFiZWViODhlMjkxN2VkZGY2Mzk0ODAyZGQ1OTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5oCkBA
IC02Niw3ICs2Niw3IEBAIEFMV0FZU19JTkxJTkUgSlNBcnJheSogY3JlYXRlUmVnRXhwTWF0Y2hl
c0FycmF5KAogICAgICAgICBSRUxFQVNFX0FTU0VSVCh2bS5oZWFwLmV4cGVjdERvZXNHQygpKTsK
IAogICAgIFZlY3RvcjxpbnQsIDMyPiBzdWJwYXR0ZXJuUmVzdWx0czsKLSAgICBpbnQgcG9zaXRp
b24gPSByZWdFeHAtPm1hdGNoSW5saW5lKHZtLCBpbnB1dFZhbHVlLCBzdGFydE9mZnNldCwgc3Vi
cGF0dGVyblJlc3VsdHMpOworICAgIGludCBwb3NpdGlvbiA9IHJlZ0V4cC0+bWF0Y2hJbmxpbmUo
dm0sIFJlZ0V4cDo6RXhlY3V0aW9uQ29udGV4dDo6SlMsIGlucHV0VmFsdWUsIHN0YXJ0T2Zmc2V0
LCBzdWJwYXR0ZXJuUmVzdWx0cyk7CiAgICAgaWYgKHBvc2l0aW9uID09IC0xKSB7CiAgICAgICAg
IHJlc3VsdCA9IE1hdGNoUmVzdWx0OjpmYWlsZWQoKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2Zp
bGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIu
Y3BwCmluZGV4IDNkMTA2N2MzN2RiNzdiYmI4MjBjMDViNTBmODgzMzk1ODBiNzQwYWEuLjEzZTA5
NjE1MjFlYTMxNmMxYmZmY2JjYWI1YTVhYjU1ZjdjYmVmNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwCkBAIC0yOTIsMTAgKzI5
Miw3IEBAIGNsYXNzIENGcmFtZVdhbGtlciA6IHB1YmxpYyBGcmFtZVdhbGtlciB7CiB9OwogCiBT
YW1wbGluZ1Byb2ZpbGVyOjpTYW1wbGluZ1Byb2ZpbGVyKFZNJiB2bSwgUmVmUHRyPFN0b3B3YXRj
aD4mJiBzdG9wd2F0Y2gpCi0gICAgOiBtX2lzUGF1c2VkKGZhbHNlKQotICAgICwgbV9pc1NodXRE
b3duKGZhbHNlKQotICAgICwgbV92bSh2bSkKLSAgICAsIG1fd2Vha1JhbmRvbSgpCisgICAgOiBt
X3ZtKHZtKQogICAgICwgbV9zdG9wd2F0Y2goV1RGTW92ZShzdG9wd2F0Y2gpKQogICAgICwgbV90
aW1pbmdJbnRlcnZhbChTZWNvbmRzOjpmcm9tTWljcm9zZWNvbmRzKE9wdGlvbnM6OnNhbXBsZUlu
dGVydmFsKCkpKQogewpAQCAtMzA3LDEwICszMDQsNiBAQCBTYW1wbGluZ1Byb2ZpbGVyOjpTYW1w
bGluZ1Byb2ZpbGVyKFZNJiB2bSwgUmVmUHRyPFN0b3B3YXRjaD4mJiBzdG9wd2F0Y2gpCiAgICAg
bV9jdXJyZW50RnJhbWVzLmdyb3coMjU2KTsKIH0KIAotU2FtcGxpbmdQcm9maWxlcjo6flNhbXBs
aW5nUHJvZmlsZXIoKQotewotfQotCiB2b2lkIFNhbXBsaW5nUHJvZmlsZXI6OmNyZWF0ZVRocmVh
ZElmTmVjZXNzYXJ5KGNvbnN0IEFic3RyYWN0TG9ja2VyJikKIHsKICAgICBBU1NFUlQobV9sb2Nr
LmlzTG9ja2VkKCkpOwpAQCAtMzM0LDcgKzMyNyw3IEBAIHZvaWQgU2FtcGxpbmdQcm9maWxlcjo6
dGltZXJMb29wKCkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgICAgIGlmICgh
bV9pc1BhdXNlZCAmJiBtX2pzY0V4ZWN1dGlvblRocmVhZCkKLSAgICAgICAgICAgICAgICB0YWtl
U2FtcGxlKGxvY2tlciwgc3RhY2tUcmFjZVByb2Nlc3NpbmdUaW1lKTsKKyAgICAgICAgICAgICAg
ICBzdGFja1RyYWNlUHJvY2Vzc2luZ1RpbWUgPSB0YWtlU2FtcGxlKGxvY2tlcik7CiAKICAgICAg
ICAgICAgIG1fbGFzdFRpbWUgPSBtX3N0b3B3YXRjaC0+ZWxhcHNlZFRpbWUoKTsKICAgICAgICAg
fQpAQCAtMzQ5LDcgKzM0Miw3IEBAIHZvaWQgU2FtcGxpbmdQcm9maWxlcjo6dGltZXJMb29wKCkK
ICAgICB9CiB9CiAKLXZvaWQgU2FtcGxpbmdQcm9maWxlcjo6dGFrZVNhbXBsZShjb25zdCBBYnN0
cmFjdExvY2tlciYsIFNlY29uZHMmIHN0YWNrVHJhY2VQcm9jZXNzaW5nVGltZSkKK1NlY29uZHMg
U2FtcGxpbmdQcm9maWxlcjo6dGFrZVNhbXBsZShjb25zdCBBYnN0cmFjdExvY2tlciYpCiB7CiAg
ICAgQVNTRVJUKG1fbG9jay5pc0xvY2tlZCgpKTsKICAgICBpZiAobV92bS5lbnRyeVNjb3BlKSB7
CkBAIC0zNzIsNiArMzY1LDcgQEAgdm9pZCBTYW1wbGluZ1Byb2ZpbGVyOjp0YWtlU2FtcGxlKGNv
bnN0IEFic3RyYWN0TG9ja2VyJiwgU2Vjb25kcyYgc3RhY2tUcmFjZVByb2MKICAgICAgICAgICAg
IEV4ZWNTdGF0ZSogY2FsbEZyYW1lOwogICAgICAgICAgICAgdm9pZCogbWFjaGluZVBDOwogICAg
ICAgICAgICAgYm9vbCB0b3BGcmFtZUlzTExJbnQgPSBmYWxzZTsKKyAgICAgICAgICAgIFJlZ0V4
cCogcmVnRXhwID0gbnVsbHB0cjsKICAgICAgICAgICAgIHZvaWQqIGxsaW50UEM7CiAgICAgICAg
ICAgICB7CiAgICAgICAgICAgICAgICAgUGxhdGZvcm1SZWdpc3RlcnMgcmVnaXN0ZXJzOwpAQCAt
Mzg5LDExICszODMsOSBAQCB2b2lkIFNhbXBsaW5nUHJvZmlsZXI6OnRha2VTYW1wbGUoY29uc3Qg
QWJzdHJhY3RMb2NrZXImLCBTZWNvbmRzJiBzdGFja1RyYWNlUHJvYwogICAgICAgICAgICAgLy8g
RklYTUU6IExldHMgaGF2ZSBhIHdheSBvZiBkZXRlY3Rpbmcgd2hlbiB3ZSdyZSBwYXJzaW5nIGNv
ZGUuCiAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTUyNzYxCiAgICAgICAgICAgICBpZiAoRXhlY3V0YWJsZUFsbG9jYXRvcjo6c2luZ2xldG9u
KCkuaXNWYWxpZEV4ZWN1dGFibGVNZW1vcnkoZXhlY3V0YWJsZUFsbG9jYXRvckxvY2tlciwgbWFj
aGluZVBDKSkgewotICAgICAgICAgICAgICAgIGlmIChtX3ZtLmlzRXhlY3V0aW5nSW5SZWdFeHBK
SVQpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFdlJ3JlIGV4ZWN1dGluZyBhIHJl
Z2V4cC4gTGV0cyBnYXRoZXIgbW9yZSBpbnRlcnN0aW5nIGRhdGEuCi0gICAgICAgICAgICAgICAg
ICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTI3MjkKKyAg
ICAgICAgICAgICAgICByZWdFeHAgPSBtX3ZtLmV4ZWN1dGluZ1JlZ0V4cEpJVDsKKyAgICAgICAg
ICAgICAgICBpZiAocmVnRXhwKQogICAgICAgICAgICAgICAgICAgICBjYWxsRnJhbWUgPSBtX3Zt
LnRvcENhbGxGcmFtZTsgLy8gV2UgbmVlZCB0byBkbyB0aGlzIG9yIGVsc2Ugd2UnZCBmYWlsIG91
ciBiYWNrdHJhY2UgdmFsaWRhdGlvbiBiL2MgdGhpcyBpc24ndCBhIEpTIGZyYW1lLgotICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZSBpZiAoTExJbnQ6OmlzTExJbnRQQyhtYWNo
aW5lUEMpKSB7CiAgICAgICAgICAgICAgICAgdG9wRnJhbWVJc0xMSW50ID0gdHJ1ZTsKICAgICAg
ICAgICAgICAgICAvLyBXZSdyZSBva2F5IHRvIHRha2UgYSBub3JtYWwgc3RhY2sgdHJhY2Ugd2hl
biB0aGUgUEMKQEAgLTQzNCwxNiArNDI2LDE2IEBAIHZvaWQgU2FtcGxpbmdQcm9maWxlcjo6dGFr
ZVNhbXBsZShjb25zdCBBYnN0cmFjdExvY2tlciYsIFNlY29uZHMmIHN0YWNrVHJhY2VQcm9jCiAg
ICAgICAgICAgICAgICAgICAgIHN0YWNrVHJhY2UudW5jaGVja2VkQXBwZW5kKGZyYW1lKTsKICAg
ICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBtX3VucHJvY2Vzc2VkU3RhY2tUcmFj
ZXMuYXBwZW5kKFVucHJvY2Vzc2VkU3RhY2tUcmFjZSB7IG5vd1RpbWUsIG1hY2hpbmVQQywgdG9w
RnJhbWVJc0xMSW50LCBsbGludFBDLCBXVEZNb3ZlKHN0YWNrVHJhY2UpIH0pOworICAgICAgICAg
ICAgICAgIG1fdW5wcm9jZXNzZWRTdGFja1RyYWNlcy5hcHBlbmQoVW5wcm9jZXNzZWRTdGFja1Ry
YWNlIHsgbm93VGltZSwgbWFjaGluZVBDLCB0b3BGcmFtZUlzTExJbnQsIGxsaW50UEMsIHJlZ0V4
cCwgV1RGTW92ZShzdGFja1RyYWNlKSB9KTsKIAogICAgICAgICAgICAgICAgIGlmIChkaWRSdW5P
dXRPZlZlY3RvclNwYWNlKQogICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRGcmFtZXMuZ3Jv
dyhtX2N1cnJlbnRGcmFtZXMuc2l6ZSgpICogMS4yNSk7CiAgICAgICAgICAgICB9CiAKLSAgICAg
ICAgICAgIGF1dG8gZW5kVGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpOwotICAgICAgICAgICAg
c3RhY2tUcmFjZVByb2Nlc3NpbmdUaW1lID0gZW5kVGltZSAtIHN0YXJ0VGltZTsKKyAgICAgICAg
ICAgIHJldHVybiBNb25vdG9uaWNUaW1lOjpub3coKSAtIHN0YXJ0VGltZTsKICAgICAgICAgfQog
ICAgIH0KKyAgICByZXR1cm4gMF9zOwogfQogCiBzdGF0aWMgQUxXQVlTX0lOTElORSB1bnNpZ25l
ZCB0cnlHZXRCeXRlY29kZUluZGV4KHVuc2lnbmVkIGxsaW50UEMsIENvZGVCbG9jayogY29kZUJs
b2NrLCBib29sJiBpc1ZhbGlkKQpAQCAtNTMxLDI5ICs1MjMsMzMgQEAgdm9pZCBTYW1wbGluZ1By
b2ZpbGVyOjpwcm9jZXNzVW52ZXJpZmllZFN0YWNrVHJhY2VzKCkKICAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgSlNDZWxsKiBjYWxsZWVDZWxsID0gY2FsbGVlLmFzQ2VsbCgpOwotICAgICAg
ICAgICAgYXV0byBzZXRGYWxsYmFja0ZyYW1lVHlwZSA9IFsmXSB7CisgICAgICAgICAgICBhdXRv
IGZhbGxiYWNrRnJhbWVUeXBlID0gWyZdIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoIWFscmVh
ZHlIYXNFeGVjdXRhYmxlKTsKLSAgICAgICAgICAgICAgICBGcmFtZVR5cGUgcmVzdWx0ID0gRnJh
bWVUeXBlOjpVbmtub3duOwogICAgICAgICAgICAgICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAg
ICAgICAgICAgICAgIENhbGxUeXBlIGNhbGxUeXBlOwogICAgICAgICAgICAgICAgIGNhbGxUeXBl
ID0gZ2V0Q2FsbERhdGEobV92bSwgY2FsbGVlQ2VsbCwgY2FsbERhdGEpOwogICAgICAgICAgICAg
ICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZTo6SG9zdCkKLSAgICAgICAgICAgICAgICAgICAg
cmVzdWx0ID0gRnJhbWVUeXBlOjpIb3N0OwotCi0gICAgICAgICAgICAgICAgc3RhY2tGcmFtZS5m
cmFtZVR5cGUgPSByZXN1bHQ7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBGcmFtZVR5cGU6
Okhvc3Q7CisgICAgICAgICAgICAgICAgcmV0dXJuIEZyYW1lVHlwZTo6VW5rbm93bjsKICAgICAg
ICAgICAgIH07CiAKLSAgICAgICAgICAgIGF1dG8gYWRkQ2FsbGVlID0gWyZdIChKU09iamVjdCog
Y2FsbGVlKSB7CisgICAgICAgICAgICBhdXRvIGFkZENhbGxlZSA9IFsmXSAoSlNDZWxsKiBjYWxs
ZWUpIHsKICAgICAgICAgICAgICAgICBzdGFja0ZyYW1lLmNhbGxlZSA9IGNhbGxlZTsKICAgICAg
ICAgICAgICAgICBtX2xpdmVDZWxsUG9pbnRlcnMuYWRkKGNhbGxlZSk7CiAgICAgICAgICAgICB9
OwogCisgICAgICAgICAgICBpZiAoY2FsbGVlQ2VsbC0+dHlwZSgpID09IFJlZ0V4cENlbGxUeXBl
KSB7CisgICAgICAgICAgICAgICAgYWRkQ2FsbGVlKGNhbGxlZUNlbGwpOworICAgICAgICAgICAg
ICAgIHN0YWNrRnJhbWUuZnJhbWVUeXBlID0gRnJhbWVUeXBlOjpSZWdFeHA7CisgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBpZiAoY2FsbGVlQ2Vs
bC0+dHlwZSgpICE9IEpTRnVuY3Rpb25UeXBlKSB7CiAgICAgICAgICAgICAgICAgaWYgKEpTT2Jq
ZWN0KiBvYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTT2JqZWN0Kj4oY2FsbGVlQ2VsbC0+dm0oKSwg
Y2FsbGVlQ2VsbCkpCiAgICAgICAgICAgICAgICAgICAgIGFkZENhbGxlZShvYmplY3QpOwogCiAg
ICAgICAgICAgICAgICAgaWYgKCFhbHJlYWR5SGFzRXhlY3V0YWJsZSkKLSAgICAgICAgICAgICAg
ICAgICAgc2V0RmFsbGJhY2tGcmFtZVR5cGUoKTsKKyAgICAgICAgICAgICAgICAgICAgc3RhY2tG
cmFtZS5mcmFtZVR5cGUgPSBmYWxsYmFja0ZyYW1lVHlwZSgpOwogCiAgICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICAgfQpAQCAtNTY1LDcgKzU2MSw3IEBAIHZvaWQgU2FtcGxpbmdQ
cm9maWxlcjo6cHJvY2Vzc1VudmVyaWZpZWRTdGFja1RyYWNlcygpCiAKICAgICAgICAgICAgIEV4
ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlID0ganNDYXN0PEpTRnVuY3Rpb24qPihjYWxsZWVDZWxs
KS0+ZXhlY3V0YWJsZSgpOwogICAgICAgICAgICAgaWYgKCFleGVjdXRhYmxlKSB7Ci0gICAgICAg
ICAgICAgICAgc2V0RmFsbGJhY2tGcmFtZVR5cGUoKTsKKyAgICAgICAgICAgICAgICBzdGFja0Zy
YW1lLmZyYW1lVHlwZSA9IGZhbGxiYWNrRnJhbWVUeXBlKCk7CiAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAgICAgfQogCkBAIC02MDUsNDEgKzYwMSw0OSBAQCB2b2lkIFNhbXBsaW5n
UHJvZmlsZXI6OnByb2Nlc3NVbnZlcmlmaWVkU3RhY2tUcmFjZXMoKQogICAgICAgICAvLyBQcmVw
ZW5kIHRoZSB0b3AtbW9zdCBpbmxpbmVkIGZyYW1lIGlmIG5lZWRlZCBhbmQgZ2F0aGVyCiAgICAg
ICAgIC8vIGxvY2F0aW9uIGluZm9ybWF0aW9uIGFib3V0IHdoZXJlIHRoZSB0b3AgZnJhbWUgaXMg
ZXhlY3V0aW5nLgogICAgICAgICBzaXplX3Qgc3RhcnRJbmRleCA9IDA7Ci0gICAgICAgIGlmICh1
bnByb2Nlc3NlZFN0YWNrVHJhY2UuZnJhbWVzLnNpemUoKSAmJiAhIXVucHJvY2Vzc2VkU3RhY2tU
cmFjZS5mcmFtZXNbMF0udmVyaWZpZWRDb2RlQmxvY2spIHsKLSAgICAgICAgICAgIENvZGVCbG9j
ayogdG9wQ29kZUJsb2NrID0gdW5wcm9jZXNzZWRTdGFja1RyYWNlLmZyYW1lc1swXS52ZXJpZmll
ZENvZGVCbG9jazsKLSAgICAgICAgICAgIGlmICh1bnByb2Nlc3NlZFN0YWNrVHJhY2UudG9wRnJh
bWVJc0xMSW50KSB7Ci0gICAgICAgICAgICAgICAgLy8gV2UgcmV1c2UgTExJbnQgQ29kZUJsb2Nr
cyBmb3IgdGhlIGJhc2VsaW5lIEpJVCwgc28gd2UgbmVlZCB0byBjaGVjayBmb3IgYm90aCBqaXQg
dHlwZXMuCi0gICAgICAgICAgICAgICAgLy8gVGhpcyBtaWdodCBhbHNvIGJlIGZhbHNlIGZvciB2
YXJpb3VzIHJlYXNvbnMgKGtub3duIGFuZCB1bmtub3duKSwgZXZlbiB0aG91Z2gKLSAgICAgICAg
ICAgICAgICAvLyBpdCdzIHN1cGVyIHVubGlrZWx5LiBPbmUgcmVhc29uIHRoYXQgdGhpcyBjYW4g
YmUgZmFsc2UgaXMgd2hlbiB3ZSB0aHJvdyBmcm9tIGEgREZHIGZyYW1lLAotICAgICAgICAgICAg
ICAgIC8vIGFuZCB3ZSBlbmQgdXAgaGF2aW5nIHRvIHVud2luZCBwYXN0IGFuIEVudHJ5RnJhbWUs
IHdlIHdpbGwgZW5kIHVwIGV4ZWN1dGluZwotICAgICAgICAgICAgICAgIC8vIGluc2lkZSB0aGUg
TExJbnQncyBoYW5kbGVVbmNhdWdodEV4Y2VwdGlvbi4gU28gd2UganVzdCBwcm90ZWN0IGFnYWlu
c3QgdGhpcwotICAgICAgICAgICAgICAgIC8vIGJ5IGlnbm9yaW5nIGl0LgotICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXggPSAwOwotICAgICAgICAgICAgICAgIGlmICh0b3BD
b2RlQmxvY2stPmppdFR5cGUoKSA9PSBKSVRUeXBlOjpJbnRlcnByZXRlclRodW5rIHx8IHRvcENv
ZGVCbG9jay0+aml0VHlwZSgpID09IEpJVFR5cGU6OkJhc2VsaW5lSklUKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGJvb2wgaXNWYWxpZFBDOwotICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBi
aXRzOworICAgICAgICBpZiAoIXVucHJvY2Vzc2VkU3RhY2tUcmFjZS5mcmFtZXMuaXNFbXB0eSgp
KSB7CisgICAgICAgICAgICBhdXRvJiB0b3BGcmFtZSA9IHVucHJvY2Vzc2VkU3RhY2tUcmFjZS5m
cmFtZXNbMF07CisgICAgICAgICAgICBpZiAoISF0b3BGcmFtZS52ZXJpZmllZENvZGVCbG9jaykg
eworICAgICAgICAgICAgICAgIENvZGVCbG9jayogdG9wQ29kZUJsb2NrID0gdG9wRnJhbWUudmVy
aWZpZWRDb2RlQmxvY2s7CisgICAgICAgICAgICAgICAgaWYgKHVucHJvY2Vzc2VkU3RhY2tUcmFj
ZS50b3BGcmFtZUlzTExJbnQpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gV2UgcmV1c2UgTExJ
bnQgQ29kZUJsb2NrcyBmb3IgdGhlIGJhc2VsaW5lIEpJVCwgc28gd2UgbmVlZCB0byBjaGVjayBm
b3IgYm90aCBqaXQgdHlwZXMuCisgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgbWlnaHQgYWxz
byBiZSBmYWxzZSBmb3IgdmFyaW91cyByZWFzb25zIChrbm93biBhbmQgdW5rbm93biksIGV2ZW4g
dGhvdWdoCisgICAgICAgICAgICAgICAgICAgIC8vIGl0J3Mgc3VwZXIgdW5saWtlbHkuIE9uZSBy
ZWFzb24gdGhhdCB0aGlzIGNhbiBiZSBmYWxzZSBpcyB3aGVuIHdlIHRocm93IGZyb20gYSBERkcg
ZnJhbWUsCisgICAgICAgICAgICAgICAgICAgIC8vIGFuZCB3ZSBlbmQgdXAgaGF2aW5nIHRvIHVu
d2luZCBwYXN0IGFuIEVudHJ5RnJhbWUsIHdlIHdpbGwgZW5kIHVwIGV4ZWN1dGluZworICAgICAg
ICAgICAgICAgICAgICAvLyBpbnNpZGUgdGhlIExMSW50J3MgaGFuZGxlVW5jYXVnaHRFeGNlcHRp
b24uIFNvIHdlIGp1c3QgcHJvdGVjdCBhZ2FpbnN0IHRoaXMKKyAgICAgICAgICAgICAgICAgICAg
Ly8gYnkgaWdub3JpbmcgaXQuCisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2Rl
SW5kZXggPSAwOworICAgICAgICAgICAgICAgICAgICBpZiAodG9wQ29kZUJsb2NrLT5qaXRUeXBl
KCkgPT0gSklUVHlwZTo6SW50ZXJwcmV0ZXJUaHVuayB8fCB0b3BDb2RlQmxvY2stPmppdFR5cGUo
KSA9PSBKSVRUeXBlOjpCYXNlbGluZUpJVCkgeworICAgICAgICAgICAgICAgICAgICAgICAgYm9v
bCBpc1ZhbGlkUEM7CisgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBiaXRzOwogI2lm
IFVTRShKU1ZBTFVFNjQpCi0gICAgICAgICAgICAgICAgICAgIGJpdHMgPSBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4odW5wcm9jZXNzZWRTdGFja1RyYWNlLmxs
aW50UEMpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJpdHMgPSBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4odW5wcm9jZXNzZWRTdGFja1RyYWNlLmxsaW50
UEMpKTsKICNlbHNlCi0gICAgICAgICAgICAgICAgICAgIGJpdHMgPSBiaXR3aXNlX2Nhc3Q8dW5z
aWduZWQ+KHVucHJvY2Vzc2VkU3RhY2tUcmFjZS5sbGludFBDKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGJpdHMgPSBiaXR3aXNlX2Nhc3Q8dW5zaWduZWQ+KHVucHJvY2Vzc2VkU3RhY2tUcmFj
ZS5sbGludFBDKTsKICNlbmRpZgotICAgICAgICAgICAgICAgICAgICBieXRlY29kZUluZGV4ID0g
dHJ5R2V0Qnl0ZWNvZGVJbmRleChiaXRzLCB0b3BDb2RlQmxvY2ssIGlzVmFsaWRQQyk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBieXRlY29kZUluZGV4ID0gdHJ5R2V0Qnl0ZWNvZGVJbmRleChi
aXRzLCB0b3BDb2RlQmxvY2ssIGlzVmFsaWRQQyk7CiAKLSAgICAgICAgICAgICAgICAgICAgVU5V
U0VEX1BBUkFNKGlzVmFsaWRQQyk7IC8vIEZJWE1FOiBkbyBzb21ldGhpbmcgd2l0aCB0aGlzIGlu
Zm8gZm9yIHRoZSB3ZWIgaW5zcGVjdG9yOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTUzNDU1CisgICAgICAgICAgICAgICAgICAgICAgICBVTlVTRURfUEFSQU0oaXNW
YWxpZFBDKTsgLy8gRklYTUU6IGRvIHNvbWV0aGluZyB3aXRoIHRoaXMgaW5mbyBmb3IgdGhlIHdl
YiBpbnNwZWN0b3I6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTM0
NTUKIAotICAgICAgICAgICAgICAgICAgICBhcHBlbmRDb2RlQmxvY2sodG9wQ29kZUJsb2NrLCBi
eXRlY29kZUluZGV4KTsKLSAgICAgICAgICAgICAgICAgICAgc3RvcmVDYWxsZWVJbnRvTGFzdEZy
YW1lKHVucHJvY2Vzc2VkU3RhY2tUcmFjZS5mcmFtZXNbMF0pOwotICAgICAgICAgICAgICAgICAg
ICBzdGFydEluZGV4ID0gMTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kQ29kZUJsb2NrKHRvcENvZGVCbG9jaywg
Ynl0ZWNvZGVJbmRleCk7CisgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZUNhbGxlZUludG9M
YXN0RnJhbWUodW5wcm9jZXNzZWRTdGFja1RyYWNlLmZyYW1lc1swXSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBzdGFydEluZGV4ID0gMTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIH0gZWxzZSB7CiAjaWYgRU5BQkxFKEpJVCkKLSAgICAgICAgICAgICAgICBpZiAo
T3B0aW9uYWw8Q29kZU9yaWdpbj4gY29kZU9yaWdpbiA9IHRvcENvZGVCbG9jay0+ZmluZFBDKHVu
cHJvY2Vzc2VkU3RhY2tUcmFjZS50b3BQQykpIHsKLSAgICAgICAgICAgICAgICAgICAgYXBwZW5k
Q29kZU9yaWdpbih0b3BDb2RlQmxvY2ssICpjb2RlT3JpZ2luKTsKLSAgICAgICAgICAgICAgICAg
ICAgc3RvcmVDYWxsZWVJbnRvTGFzdEZyYW1lKHVucHJvY2Vzc2VkU3RhY2tUcmFjZS5mcmFtZXNb
MF0pOwotICAgICAgICAgICAgICAgICAgICBzdGFydEluZGV4ID0gMTsKLSAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChPcHRpb25hbDxDb2RlT3JpZ2luPiBjb2RlT3Jp
Z2luID0gdG9wQ29kZUJsb2NrLT5maW5kUEModW5wcm9jZXNzZWRTdGFja1RyYWNlLnRvcFBDKSkg
eworICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kQ29kZU9yaWdpbih0b3BDb2RlQmxvY2ss
ICpjb2RlT3JpZ2luKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlQ2FsbGVlSW50b0xh
c3RGcmFtZSh1bnByb2Nlc3NlZFN0YWNrVHJhY2UuZnJhbWVzWzBdKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHN0YXJ0SW5kZXggPSAxOworICAgICAgICAgICAgICAgICAgICB9CiAjZW5kaWYK
LSAgICAgICAgICAgICAgICBVTlVTRURfUEFSQU0oYXBwZW5kQ29kZU9yaWdpbik7CisgICAgICAg
ICAgICAgICAgICAgIFVOVVNFRF9QQVJBTShhcHBlbmRDb2RlT3JpZ2luKTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9IGVsc2UgaWYgKHVucHJvY2Vzc2VkU3RhY2tUcmFjZS5yZWdF
eHApIHsKKyAgICAgICAgICAgICAgICBhcHBlbmRFbXB0eUZyYW1lKCk7CisgICAgICAgICAgICAg
ICAgc3RhY2tUcmFjZS5mcmFtZXMubGFzdCgpLnJlZ0V4cCA9IHVucHJvY2Vzc2VkU3RhY2tUcmFj
ZS5yZWdFeHA7CisgICAgICAgICAgICAgICAgc3RhY2tUcmFjZS5mcmFtZXMubGFzdCgpLmZyYW1l
VHlwZSA9IEZyYW1lVHlwZTo6UmVnRXhwOworICAgICAgICAgICAgICAgIG1fbGl2ZUNlbGxQb2lu
dGVycy5hZGQodW5wcm9jZXNzZWRTdGFja1RyYWNlLnJlZ0V4cCk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KIApAQCAtNzUxLDE1ICs3NTUsMjIgQEAgdm9pZCBTYW1wbGluZ1Byb2ZpbGVyOjpj
bGVhckRhdGEoY29uc3QgQWJzdHJhY3RMb2NrZXImKQogCiBTdHJpbmcgU2FtcGxpbmdQcm9maWxl
cjo6U3RhY2tGcmFtZTo6bmFtZUZyb21DYWxsZWUoVk0mIHZtKQogewotICAgIGlmICghY2FsbGVl
KQorICAgIGlmICghY2FsbGVlKSB7CisgICAgICAgIGlmIChyZWdFeHApCisgICAgICAgICAgICBy
ZXR1cm4gcmVnRXhwLT50b1NvdXJjZVN0cmluZygpOworICAgICAgICByZXR1cm4gU3RyaW5nKCk7
CisgICAgfQorCisgICAgSlNPYmplY3QqIGNhbGxlZU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNP
YmplY3QqPih2bSwgY2FsbGVlKTsKKyAgICBpZiAoIWNhbGxlZU9iamVjdCkKICAgICAgICAgcmV0
dXJuIFN0cmluZygpOwogCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0p
OwotICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGNhbGxlZS0+Z2xvYmFsT2JqZWN0KHZtKS0+Z2xvYmFs
RXhlYygpOworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGNhbGxlZU9iamVjdC0+Z2xvYmFsT2JqZWN0
KHZtKS0+Z2xvYmFsRXhlYygpOwogICAgIGF1dG8gZ2V0UHJvcGVydHlJZlB1cmVPcGVyYXRpb24g
PSBbJl0gKGNvbnN0IElkZW50aWZpZXImIGlkZW50KSAtPiBTdHJpbmcgewotICAgICAgICBQcm9w
ZXJ0eVNsb3Qgc2xvdChjYWxsZWUsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpW
TUlucXVpcnkpOworICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChjYWxsZWVPYmplY3QsIFByb3Bl
cnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOwogICAgICAgICBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lKGlkZW50KTsKLSAgICAgICAgYm9vbCBoYXNQcm9wZXJ0eSA9IGNh
bGxlZS0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgICAg
IGJvb2wgaGFzUHJvcGVydHkgPSBjYWxsZWVPYmplY3QtPmdldFByb3BlcnR5U2xvdChleGVjLCBw
cm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgICAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOwog
ICAgICAgICBpZiAoaGFzUHJvcGVydHkpIHsKICAgICAgICAgICAgIGlmIChzbG90LmlzVmFsdWUo
KSkgewpAQCAtODA5LDYgKzgyMCw5IEBAIFN0cmluZyBTYW1wbGluZ1Byb2ZpbGVyOjpTdGFja0Zy
YW1lOjpkaXNwbGF5TmFtZShWTSYgdm0pCiAjZW5kaWYKICAgICAgICAgcmV0dXJuICIod2FzbSki
X3M7CiAKKyAgICBjYXNlIEZyYW1lVHlwZTo6UmVnRXhwOgorICAgICAgICByZXR1cm4ganNDYXN0
PFJlZ0V4cCo+KGNhbGxlZSktPnRvU291cmNlU3RyaW5nKCk7CisKICAgICBjYXNlIEZyYW1lVHlw
ZTo6RXhlY3V0YWJsZToKICAgICAgICAgaWYgKGV4ZWN1dGFibGUtPmlzSG9zdEZ1bmN0aW9uKCkp
CiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TmF0aXZlRXhlY3V0YWJsZSo+KGV4ZWN1
dGFibGUpLT5uYW1lKCk7CkBAIC04NTEsNiArODY1LDkgQEAgU3RyaW5nIFNhbXBsaW5nUHJvZmls
ZXI6OlN0YWNrRnJhbWU6OmRpc3BsYXlOYW1lRm9ySlNPTlRlc3RzKFZNJiB2bSkKICAgICAgICAg
cmV0dXJuICIod2FzbSkiX3M7CiAgICAgfQogCisgICAgY2FzZSBGcmFtZVR5cGU6OlJlZ0V4cDoK
KyAgICAgICAgcmV0dXJuIGpzQ2FzdDxSZWdFeHAqPihjYWxsZWUpLT50b1NvdXJjZVN0cmluZygp
OworCiAgICAgY2FzZSBGcmFtZVR5cGU6OkV4ZWN1dGFibGU6CiAgICAgICAgIGlmIChleGVjdXRh
YmxlLT5pc0hvc3RGdW5jdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE5h
dGl2ZUV4ZWN1dGFibGUqPihleGVjdXRhYmxlKS0+bmFtZSgpOwpAQCAtODgyLDYgKzg5OSw3IEBA
IGludCBTYW1wbGluZ1Byb2ZpbGVyOjpTdGFja0ZyYW1lOjpmdW5jdGlvblN0YXJ0TGluZSgpCiAg
ICAgY2FzZSBGcmFtZVR5cGU6Okhvc3Q6CiAgICAgY2FzZSBGcmFtZVR5cGU6OkM6CiAgICAgY2Fz
ZSBGcmFtZVR5cGU6Oldhc206CisgICAgY2FzZSBGcmFtZVR5cGU6OlJlZ0V4cDoKICAgICAgICAg
cmV0dXJuIC0xOwogCiAgICAgY2FzZSBGcmFtZVR5cGU6OkV4ZWN1dGFibGU6CkBAIC05MDAsNiAr
OTE4LDcgQEAgdW5zaWduZWQgU2FtcGxpbmdQcm9maWxlcjo6U3RhY2tGcmFtZTo6ZnVuY3Rpb25T
dGFydENvbHVtbigpCiAgICAgY2FzZSBGcmFtZVR5cGU6Okhvc3Q6CiAgICAgY2FzZSBGcmFtZVR5
cGU6OkM6CiAgICAgY2FzZSBGcmFtZVR5cGU6Oldhc206CisgICAgY2FzZSBGcmFtZVR5cGU6OlJl
Z0V4cDoKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgo
KTsKIAogICAgIGNhc2UgRnJhbWVUeXBlOjpFeGVjdXRhYmxlOgpAQCAtOTE5LDYgKzkzOCw3IEBA
IGludHB0cl90IFNhbXBsaW5nUHJvZmlsZXI6OlN0YWNrRnJhbWU6OnNvdXJjZUlEKCkKICAgICBj
YXNlIEZyYW1lVHlwZTo6SG9zdDoKICAgICBjYXNlIEZyYW1lVHlwZTo6QzoKICAgICBjYXNlIEZy
YW1lVHlwZTo6V2FzbToKKyAgICBjYXNlIEZyYW1lVHlwZTo6UmVnRXhwOgogICAgICAgICByZXR1
cm4gLTE7CiAKICAgICBjYXNlIEZyYW1lVHlwZTo6RXhlY3V0YWJsZToKQEAgLTkzOCw2ICs5NTgs
NyBAQCBTdHJpbmcgU2FtcGxpbmdQcm9maWxlcjo6U3RhY2tGcmFtZTo6dXJsKCkKICAgICBjYXNl
IEZyYW1lVHlwZTo6SG9zdDoKICAgICBjYXNlIEZyYW1lVHlwZTo6QzoKICAgICBjYXNlIEZyYW1l
VHlwZTo6V2FzbToKKyAgICBjYXNlIEZyYW1lVHlwZTo6UmVnRXhwOgogICAgICAgICByZXR1cm4g
ZW1wdHlTdHJpbmcoKTsKICAgICBjYXNlIEZyYW1lVHlwZTo6RXhlY3V0YWJsZToKICAgICAgICAg
aWYgKGV4ZWN1dGFibGUtPmlzSG9zdEZ1bmN0aW9uKCkpCkBAIC0xMTk3LDYgKzEyMTgsOSBAQCB2
b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgU2FtcGxpbmdQcm9maWxlcjo6RnJh
bWVUeXBlIGZyYW1lVHlwZSkKICAgICBjYXNlIFNhbXBsaW5nUHJvZmlsZXI6OkZyYW1lVHlwZTo6
SG9zdDoKICAgICAgICAgb3V0LnByaW50KCJIb3N0Iik7CiAgICAgICAgIGJyZWFrOworICAgIGNh
c2UgU2FtcGxpbmdQcm9maWxlcjo6RnJhbWVUeXBlOjpSZWdFeHA6CisgICAgICAgIG91dC5wcmlu
dCgiUmVnRXhwIik7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU2FtcGxpbmdQcm9maWxlcjo6
RnJhbWVUeXBlOjpDOgogICAgIGNhc2UgU2FtcGxpbmdQcm9maWxlcjo6RnJhbWVUeXBlOjpVbmtu
b3duOgogICAgICAgICBvdXQucHJpbnQoIlVua25vd24iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuaAppbmRleCA2OTI4MDAyODJjNzc1NWFi
OTY3MDM4MmIyOWE5YjBhM2NkNjdlZmRjLi41MjQzNGMzMTQ2NmI0M2EyYzBlZmYyYjAzMDM5OTE4
ODBiZWU2MTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1w
bGluZ1Byb2ZpbGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxp
bmdQcm9maWxlci5oCkBAIC00MSw2ICs0MSw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitjbGFz
cyBSZWdFeHA7CiBjbGFzcyBWTTsKIGNsYXNzIEV4ZWN1dGFibGVCYXNlOwogCkBAIC03NCw2ICs3
NSw3IEBAIGNsYXNzIFNhbXBsaW5nUHJvZmlsZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8U2FtcGxpbmdQcm9maWxlcj4gewogICAgIGVudW0gY2xhc3MgRnJhbWVUeXBlIHsgCiAgICAg
ICAgIEV4ZWN1dGFibGUsCiAgICAgICAgIFdhc20sCisgICAgICAgIFJlZ0V4cCwKICAgICAgICAg
SG9zdCwKICAgICAgICAgQywKICAgICAgICAgVW5rbm93biwKQEAgLTkyLDYgKzk0LDcgQEAgY2xh
c3MgU2FtcGxpbmdQcm9maWxlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTYW1wbGlu
Z1Byb2ZpbGVyPiB7CiAgICAgICAgIGNvbnN0IHZvaWQqIGNDb2RlUEMgeyBudWxscHRyIH07CiAg
ICAgICAgIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlIHsgbnVsbHB0ciB9OwogICAgICAgICBK
U09iamVjdCogY2FsbGVlIHsgbnVsbHB0ciB9OworICAgICAgICBSZWdFeHAqIHJlZ0V4cCB7IG51
bGxwdHIgfTsKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgIE9wdGlvbmFsPFdhc206
OkluZGV4T3JOYW1lPiB3YXNtSW5kZXhPck5hbWU7CiAjZW5kaWYKQEAgLTE1Miw2ICsxNTUsNyBA
QCBjbGFzcyBTYW1wbGluZ1Byb2ZpbGVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNh
bXBsaW5nUHJvZmlsZXI+IHsKICAgICAgICAgdm9pZCogdG9wUEM7CiAgICAgICAgIGJvb2wgdG9w
RnJhbWVJc0xMSW50OwogICAgICAgICB2b2lkKiBsbGludFBDOworICAgICAgICBSZWdFeHAqIHJl
Z0V4cDsKICAgICAgICAgVmVjdG9yPFVucHJvY2Vzc2VkU3RhY2tGcmFtZT4gZnJhbWVzOwogICAg
IH07CiAKQEAgLTE2Nyw3ICsxNzEsNyBAQCBjbGFzcyBTYW1wbGluZ1Byb2ZpbGVyIDogcHVibGlj
IFRocmVhZFNhZmVSZWZDb3VudGVkPFNhbXBsaW5nUHJvZmlsZXI+IHsKICAgICB9OwogCiAgICAg
U2FtcGxpbmdQcm9maWxlcihWTSYsIFJlZlB0cjxTdG9wd2F0Y2g+JiYpOwotICAgIH5TYW1wbGlu
Z1Byb2ZpbGVyKCk7CisgICAgflNhbXBsaW5nUHJvZmlsZXIoKSA9IGRlZmF1bHQ7CiAgICAgdm9p
ZCBub3RpY2VKU0xvY2tBY3F1aXNpdGlvbigpOwogICAgIHZvaWQgbm90aWNlVk1FbnRyeSgpOwog
ICAgIHZvaWQgc2h1dGRvd24oKTsKQEAgLTIwMCwxMSArMjA0LDExIEBAIGNsYXNzIFNhbXBsaW5n
UHJvZmlsZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2FtcGxpbmdQcm9maWxlcj4g
ewogcHJpdmF0ZToKICAgICB2b2lkIGNyZWF0ZVRocmVhZElmTmVjZXNzYXJ5KGNvbnN0IEFic3Ry
YWN0TG9ja2VyJik7CiAgICAgdm9pZCB0aW1lckxvb3AoKTsKLSAgICB2b2lkIHRha2VTYW1wbGUo
Y29uc3QgQWJzdHJhY3RMb2NrZXImLCBTZWNvbmRzJiBzdGFja1RyYWNlUHJvY2Vzc2luZ1RpbWUp
OworICAgIFNlY29uZHMgdGFrZVNhbXBsZShjb25zdCBBYnN0cmFjdExvY2tlciYpOwogCiAgICAg
TG9jayBtX2xvY2s7Ci0gICAgYm9vbCBtX2lzUGF1c2VkOwotICAgIGJvb2wgbV9pc1NodXREb3du
OworICAgIGJvb2wgbV9pc1BhdXNlZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzU2h1dERvd24g
eyBmYWxzZSB9OwogICAgIGJvb2wgbV9uZWVkc1JlcG9ydEF0RXhpdCB7IGZhbHNlIH07CiAgICAg
Vk0mIG1fdm07CiAgICAgV2Vha1JhbmRvbSBtX3dlYWtSYW5kb207CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5jcHAKaW5kZXggMDEzNjRlZGVjNWNhNjE1ZjhlMzkwZDkwOTkwOGI0MzYwZDFm
M2I5OS4uNDZmODk1NGExZTJmNDQ0MGQ2MmJmMzZiY2QwYTRiNzFmNDhiMzkyOSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtOTQ2LDEwICs5NDYsMTEgQEAgdm9pZCBsb2dT
YW5pdGl6ZVN0YWNrKFZNJiB2bSkKICNpZiBFTkFCTEUoWUFSUl9KSVRfQUxMX1BBUkVOU19FWFBS
RVNTSU9OUykKIGNoYXIqIFZNOjphY3F1aXJlUmVnRXhwUGF0dGVybkNvbnRleEJ1ZmZlcigpCiB7
CisgICAgLy8gVGhpcyBmdW5jdGlvbiBtdXN0IHN1Y2NlZWQuCiAgICAgbV9yZWdFeHBQYXR0ZXJu
Q29udGV4dExvY2subG9jaygpOwogICAgIEFTU0VSVChtX3JlZ0V4cFBhdHRlcm5Db250ZXh0TG9j
ay5pc0xvY2tlZCgpKTsKICAgICBpZiAoIW1fcmVnRXhwUGF0dGVybkNvbnRleEJ1ZmZlcikKLSAg
ICAgICAgbV9yZWdFeHBQYXR0ZXJuQ29udGV4QnVmZmVyID0gbWFrZVVuaXF1ZUFycmF5PGNoYXI+
KFZNOjpwYXR0ZXJuQ29udGV4dEJ1ZmZlclNpemUpOworICAgICAgICBtX3JlZ0V4cFBhdHRlcm5D
b250ZXhCdWZmZXIgPSBtYWtlVW5pcXVlQXJyYXk8Y2hhcj4oWWFycjo6cGF0dGVybkNvbnRleHRC
dWZmZXJTaXplKTsKICAgICByZXR1cm4gbV9yZWdFeHBQYXR0ZXJuQ29udGV4QnVmZmVyLmdldCgp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCBiMTUyYmU1ZDZkZWNmYWU1
ODVjMmUwM2U4NzRlZGNhYjllMDMzZmFjLi44ZGYzMmM1OTlhZTJkNGRhMGMzYmM0MjZhOWVlYjJi
ZjRlZDQyMzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTc4Myw3ICs3ODMs
NyBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4sIHB1YmxpYyBE
b3VibHlMaW5rZWRMaXN0Tm9kZTxWTT4gewogICAgIGNvbnN0IEluc3RydWN0aW9uKiB0YXJnZXRJ
bnRlcnByZXRlclBDRm9yVGhyb3c7CiAgICAgdWludDMyX3Qgb3NyRXhpdEluZGV4OwogICAgIHZv
aWQqIG9zckV4aXRKdW1wRGVzdGluYXRpb247Ci0gICAgYm9vbCBpc0V4ZWN1dGluZ0luUmVnRXhw
SklUIHsgZmFsc2UgfTsKKyAgICBSZWdFeHAqIGV4ZWN1dGluZ1JlZ0V4cEpJVCB7IG51bGxwdHIg
fTsKIAogICAgIC8vIFRoZSB0aHJlYWRpbmcgcHJvdG9jb2wgaGVyZSBpcyBhcyBmb2xsb3dzOgog
ICAgIC8vIC0gWW91IGNhbiBjYWxsIHNjcmF0Y2hCdWZmZXJGb3JTaXplIGZyb20gYW55IHRocmVh
ZC4KQEAgLTgyMCwxMyArODIwLDEwIEBAIGNsYXNzIFZNIDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPFZNPiwgcHVibGljIERvdWJseUxpbmtlZExpc3ROb2RlPFZNPiB7CiAgICAgQ29uY3Vy
cmVudEpTTG9jayBtX3JlZ0V4cEFsbG9jYXRvckxvY2s7CiAKICNpZiBFTkFCTEUoWUFSUl9KSVRf
QUxMX1BBUkVOU19FWFBSRVNTSU9OUykKLSAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBwYXR0
ZXJuQ29udGV4dEJ1ZmZlclNpemUgPSA4MTkyOyAvLyBTcGFjZSBhbGxvY2F0ZWQgdG8gc2F2ZSBu
ZXN0ZWQgcGFyZW50aGVzaXMgY29udGV4dAogICAgIFVuaXF1ZUFycmF5PGNoYXI+IG1fcmVnRXhw
UGF0dGVybkNvbnRleEJ1ZmZlcjsKICAgICBMb2NrIG1fcmVnRXhwUGF0dGVybkNvbnRleHRMb2Nr
OwogICAgIGNoYXIqIGFjcXVpcmVSZWdFeHBQYXR0ZXJuQ29udGV4QnVmZmVyKCk7CiAgICAgdm9p
ZCByZWxlYXNlUmVnRXhwUGF0dGVybkNvbnRleEJ1ZmZlcigpOwotI2Vsc2UKLSAgICBzdGF0aWMg
Y29uc3RleHByIHNpemVfdCBwYXR0ZXJuQ29udGV4dEJ1ZmZlclNpemUgPSAwOyAvLyBTcGFjZSBh
bGxvY2F0ZWQgdG8gc2F2ZSBuZXN0ZWQgcGFyZW50aGVzaXMgY29udGV4dAogI2VuZGlmCiAKICAg
ICBSZWY8Q29tcGFjdFZhcmlhYmxlTWFwPiBtX2NvbXBhY3RWYXJpYWJsZU1hcDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS95YXJyL1lhcnIuaAppbmRleCBjY2Y3OGY5ODgwMDA5NjNlZDM3NmEyMjRhY2U4YjRhYjVk
MWQ3ZDMwLi5iYzU3OGRjNTFkZGRkNmQwMTg3MjBmMzc1NTlmYzJjMWIwMmUxYmZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3lhcnIvWWFyci5oCkBAIC00MiwxMiArNDIsMTggQEAgbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBZYXJyIHsKICNkZWZpbmUgWWFyclN0YWNrU3BhY2VGb3JCYWNrVHJhY2tJbmZv
UGFyZW50aGVzZXMgNAogI2RlZmluZSBZYXJyU3RhY2tTcGFjZUZvckRvdFN0YXJFbmNsb3N1cmUg
MQogCi1zdGF0aWMgY29uc3QgdW5zaWduZWQgcXVhbnRpZnlJbmZpbml0ZSA9IFVJTlRfTUFYOwot
c3RhdGljIGNvbnN0IHVuc2lnbmVkIG9mZnNldE5vTWF0Y2ggPSBzdGQ6Om51bWVyaWNfbGltaXRz
PHVuc2lnbmVkPjo6bWF4KCk7CitzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHF1YW50aWZ5SW5m
aW5pdGUgPSBVSU5UX01BWDsKK3N0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgb2Zmc2V0Tm9NYXRj
aCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKTsKIAogLy8gVGhlIGJlbG93
IGxpbWl0IHJlc3RyaWN0cyB0aGUgbnVtYmVyIG9mICJyZWN1cnNpdmUiIG1hdGNoIGNhbGxzIGlu
IG9yZGVyIHRvCiAvLyBhdm9pZCBzcGVuZGluZyBleHBvbmVudGlhbCB0aW1lIG9uIGNvbXBsZXgg
cmVndWxhciBleHByZXNzaW9ucy4KLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXRjaExpbWl0ID0g
MTAwMDAwMDsKK3N0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbWF0Y2hMaW1pdCA9IDEwMDAwMDA7
CisKKyNpZiBFTkFCTEUoWUFSUl9KSVRfQUxMX1BBUkVOU19FWFBSRVNTSU9OUykKK3N0YXRpYyBj
b25zdGV4cHIgc2l6ZV90IHBhdHRlcm5Db250ZXh0QnVmZmVyU2l6ZSA9IDgxOTI7IC8vIFNwYWNl
IGFsbG9jYXRlZCB0byBzYXZlIG5lc3RlZCBwYXJlbnRoZXNpcyBjb250ZXh0CisjZWxzZQorc3Rh
dGljIGNvbnN0ZXhwciBzaXplX3QgcGF0dGVybkNvbnRleHRCdWZmZXJTaXplID0gMDsKKyNlbmRp
ZgogCiBlbnVtIEpTUmVnRXhwUmVzdWx0IHsKICAgICBKU1JlZ0V4cE1hdGNoID0gMSwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAKaW5kZXggODRkOTQwY2E4MGYzMDY2Njc4NjQ0
NGJiOTY2ODM2MTQ1OTUzMGNhNC4uMTkxZDk3OGNjZjcxMGRhMDQzMjkxZjE2MTZmMjRhMTliMjQw
NTQ2ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAKQEAgLTI2LDIwICsy
NiwyMSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIllhcnJKSVQuaCIKIAotI2lu
Y2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CisjaW5jbHVkZSAiQ0NhbGxIZWxwZXJzLmgiCiAjaW5j
bHVkZSAiTGlua0J1ZmZlci5oIgogI2luY2x1ZGUgIk9wdGlvbnMuaCIKICNpbmNsdWRlICJWTS5o
IgogI2luY2x1ZGUgIllhcnIuaCIKICNpbmNsdWRlICJZYXJyQ2Fub25pY2FsaXplLmgiCiAjaW5j
bHVkZSAiWWFyckRpc2Fzc2VtYmxlci5oIgorI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CiAK
ICNpZiBFTkFCTEUoWUFSUl9KSVQpCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgWWFyciB7
CiAKIHRlbXBsYXRlPFlhcnJKSVRDb21waWxlTW9kZSBjb21waWxlTW9kZT4KLWNsYXNzIFlhcnJH
ZW5lcmF0b3IgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewor
Y2xhc3MgWWFyckdlbmVyYXRvciA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBDQ2FsbEhl
bHBlcnMgewogCiAjaWYgQ1BVKEFSTV9USFVNQjIpCiAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVy
SUQgaW5wdXQgPSBBUk1SZWdpc3RlcnM6OnIwOwpAQCAtNTEsOSArNTIsNiBAQCBjbGFzcyBZYXJy
R2VuZXJhdG9yIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsK
ICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCByZWdUMSA9IEFSTVJlZ2lzdGVyczo6cjU7CiAg
ICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgaW5pdGlhbFN0YXJ0ID0gQVJNUmVnaXN0ZXJzOjpy
ODsKIAotICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJldHVyblJlZ2lzdGVyID0gQVJNUmVn
aXN0ZXJzOjpyMDsKLSAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCByZXR1cm5SZWdpc3RlcjIg
PSBBUk1SZWdpc3RlcnM6OnIxOwotCiAjZGVmaW5lIEhBVkVfSU5JVElBTF9TVEFSVF9SRUcKICNl
bGlmIENQVShBUk02NCkKICAgICAvLyBBcmd1bWVudCByZWdpc3RlcnMKQEAgLTYyLDcgKzYwLDgg
QEAgY2xhc3MgWWFyckdlbmVyYXRvciA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNy
b0Fzc2VtYmxlciB7CiAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgbGVuZ3RoID0gQVJNNjRS
ZWdpc3RlcnM6OngyOwogICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIG91dHB1dCA9IEFSTTY0
UmVnaXN0ZXJzOjp4MzsKICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBmcmVlbGlzdFJlZ2lz
dGVyID0gQVJNNjRSZWdpc3RlcnM6Ong0OwotICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIGZy
ZWVsaXN0U2l6ZVJlZ2lzdGVyID0gQVJNNjRSZWdpc3RlcnM6Ong1OworICAgIHN0YXRpYyBjb25z
dCBSZWdpc3RlcklEIGNhbGxlZVJlZ2lzdGVyID0gQVJNNjRSZWdpc3RlcnM6Ong1OworICAgIHN0
YXRpYyBjb25zdCBSZWdpc3RlcklEIGZyZWVsaXN0U2l6ZVJlZ2lzdGVyID0gQVJNNjRSZWdpc3Rl
cnM6Ong1OyAvLyBPbmx5IHVzZWQgZHVyaW5nIGluaXRpYWxpemF0aW9uLiBUaGlzIGlzIHRoZSBz
YW1lIHRvIGNhbGxlZVJlZ2lzdGVyLgogCiAgICAgLy8gU2NyYXRjaCByZWdpc3RlcnMKICAgICBz
dGF0aWMgY29uc3QgUmVnaXN0ZXJJRCByZWdUMCA9IEFSTTY0UmVnaXN0ZXJzOjp4NjsKQEAgLTc2
LDkgKzc1LDYgQEAgY2xhc3MgWWFyckdlbmVyYXRvciA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJp
dmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgdHJhaWxp
bmdTdXJyb2dhdGVUYWcgPSBBUk02NFJlZ2lzdGVyczo6eDE0OwogICAgIHN0YXRpYyBjb25zdCBS
ZWdpc3RlcklEIGVuZE9mU3RyaW5nQWRkcmVzcyA9IEFSTTY0UmVnaXN0ZXJzOjp4MTU7CiAKLSAg
ICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCByZXR1cm5SZWdpc3RlciA9IEFSTTY0UmVnaXN0ZXJz
Ojp4MDsKLSAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCByZXR1cm5SZWdpc3RlcjIgPSBBUk02
NFJlZ2lzdGVyczo6eDE7Ci0KICAgICBjb25zdCBUcnVzdGVkSW1tMzIgc3Vycm9nYXRlVGFnTWFz
ayA9IFRydXN0ZWRJbW0zMigweGZmZmZmYzAwKTsKICNkZWZpbmUgSEFWRV9JTklUSUFMX1NUQVJU
X1JFRwogI2RlZmluZSBKSVRfVU5JQ09ERV9FWFBSRVNTSU9OUwpAQCAtOTIsOSArODgsNiBAQCBj
bGFzcyBZYXJyR2VuZXJhdG9yIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNz
ZW1ibGVyIHsKICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCByZWdUMSA9IE1JUFNSZWdpc3Rl
cnM6OnQ1OwogICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIGluaXRpYWxTdGFydCA9IE1JUFNS
ZWdpc3RlcnM6OnQ2OwogCi0gICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgcmV0dXJuUmVnaXN0
ZXIgPSBNSVBTUmVnaXN0ZXJzOjp2MDsKLSAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCByZXR1
cm5SZWdpc3RlcjIgPSBNSVBTUmVnaXN0ZXJzOjp2MTsKLQogI2RlZmluZSBIQVZFX0lOSVRJQUxf
U1RBUlRfUkVHCiAjZWxpZiBDUFUoWDg2KQogICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIGlu
cHV0ID0gWDg2UmVnaXN0ZXJzOjplYXg7CkBAIC0xMDQsOSArOTcsNiBAQCBjbGFzcyBZYXJyR2Vu
ZXJhdG9yIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKIAog
ICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJlZ1QwID0gWDg2UmVnaXN0ZXJzOjplYng7CiAg
ICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgcmVnVDEgPSBYODZSZWdpc3RlcnM6OmVzaTsKLQot
ICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJldHVyblJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJz
OjplYXg7Ci0gICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgcmV0dXJuUmVnaXN0ZXIyID0gWDg2
UmVnaXN0ZXJzOjplZHg7CiAjZWxpZiBDUFUoWDg2XzY0KQogI2lmICFPUyhXSU5ET1dTKQogICAg
IC8vIEFyZ3VtZW50IHJlZ2lzdGVycwpAQCAtMTE1LDcgKzEwNSw4IEBAIGNsYXNzIFlhcnJHZW5l
cmF0b3IgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAg
IHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIGxlbmd0aCA9IFg4NlJlZ2lzdGVyczo6ZWR4OwogICAg
IHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIG91dHB1dCA9IFg4NlJlZ2lzdGVyczo6ZWN4OwogICAg
IHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIGZyZWVsaXN0UmVnaXN0ZXIgPSBYODZSZWdpc3RlcnM6
OnI4OwotICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIGZyZWVsaXN0U2l6ZVJlZ2lzdGVyID0g
WDg2UmVnaXN0ZXJzOjpyOTsgLy8gT25seSB1c2VkIGR1cmluZyBpbml0aWFsaXphdGlvbi4KKyAg
ICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBjYWxsZWVSZWdpc3RlciA9IFg4NlJlZ2lzdGVyczo6
cjk7CisgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgZnJlZWxpc3RTaXplUmVnaXN0ZXIgPSBY
ODZSZWdpc3RlcnM6OnI5OyAvLyBPbmx5IHVzZWQgZHVyaW5nIGluaXRpYWxpemF0aW9uLiBUaGlz
IGlzIHRoZSBzYW1lIHRvIGNhbGxlZVJlZ2lzdGVyLgogI2Vsc2UKICAgICAvLyBJZiB0aGUgcmV0
dXJuIHZhbHVlIGRvZXNuJ3QgZml0IGluIDY0Yml0cywgaXRzIGRlc3RpbmF0aW9uIGlzIHBvaW50
ZWQgYnkgcmN4IGFuZCB0aGUgcGFyYW1ldGVycyBhcmUgc2hpZnRlZC4KICAgICAvLyBodHRwOi8v
bXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvNzU3Mnp0ejQuYXNweApAQCAtMTQ2LDkg
KzEzNyw2IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZh
dGUgTWFjcm9Bc3NlbWJsZXIgewogICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIGxlYWRpbmdT
dXJyb2dhdGVUYWcgPSBYODZSZWdpc3RlcnM6OnIxNDsKICAgICBzdGF0aWMgY29uc3QgUmVnaXN0
ZXJJRCBlbmRPZlN0cmluZ0FkZHJlc3MgPSBYODZSZWdpc3RlcnM6OnIxNTsKIAotICAgIHN0YXRp
YyBjb25zdCBSZWdpc3RlcklEIHJldHVyblJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjplYXg7Ci0g
ICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgcmV0dXJuUmVnaXN0ZXIyID0gWDg2UmVnaXN0ZXJz
OjplZHg7Ci0KICAgICBjb25zdCBUcnVzdGVkSW1tMzIgc3VwcGxlbWVudGFyeVBsYW5lc0Jhc2Ug
PSBUcnVzdGVkSW1tMzIoMHgxMDAwMCk7CiAgICAgY29uc3QgVHJ1c3RlZEltbTMyIHRyYWlsaW5n
U3Vycm9nYXRlVGFnID0gVHJ1c3RlZEltbTMyKDB4ZGMwMCk7CiAgICAgY29uc3QgVHJ1c3RlZElt
bTMyIHN1cnJvZ2F0ZVRhZ01hc2sgPSBUcnVzdGVkSW1tMzIoMHhmZmZmZmMwMCk7CkBAIC0yMjgs
NyArMjE2LDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJp
dmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAKICAgICAgICAgcGFyZW5Db250ZXh0U2l6ZSA9IFdURjo6
cm91bmRVcFRvTXVsdGlwbGVPZjxzaXplb2YodWludHB0cl90KT4ocGFyZW5Db250ZXh0U2l6ZSk7
CiAKLSAgICAgICAgaWYgKHBhcmVuQ29udGV4dFNpemUgPiBWTTo6cGF0dGVybkNvbnRleHRCdWZm
ZXJTaXplKSB7CisgICAgICAgIGlmIChwYXJlbkNvbnRleHRTaXplID4gWWFycjo6cGF0dGVybkNv
bnRleHRCdWZmZXJTaXplKSB7CiAgICAgICAgICAgICBtX2ZhaWx1cmVSZWFzb24gPSBKSVRGYWls
dXJlUmVhc29uOjpQYXJlbnRoZXNpc05lc3RlZFRvb0RlZXA7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KQEAgLTIzNiw3ICsyMjQsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIDogcHVi
bGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgSnVtcCBl
bXB0eUZyZWVMaXN0ID0gYnJhbmNoVGVzdFB0cihaZXJvLCBmcmVlbGlzdFJlZ2lzdGVyKTsKICAg
ICAgICAgbW92ZShmcmVlbGlzdFJlZ2lzdGVyLCBwYXJlbkNvbnRleHRQb2ludGVyKTsKICAgICAg
ICAgYWRkUHRyKFRydXN0ZWRJbW0zMihwYXJlbkNvbnRleHRTaXplKSwgZnJlZWxpc3RSZWdpc3Rl
ciwgbmV4dFBhcmVuQ29udGV4dFBvaW50ZXIpOwotICAgICAgICBhZGRQdHIoZnJlZWxpc3RSZWdp
c3RlciwgZnJlZWxpc3RTaXplUmVnaXN0ZXIpOworICAgICAgICBhZGRQdHIoVHJ1c3RlZEltbTMy
KHBhdHRlcm5Db250ZXh0QnVmZmVyU2l6ZSksIGZyZWVsaXN0UmVnaXN0ZXIsIGZyZWVsaXN0U2l6
ZVJlZ2lzdGVyKTsKICAgICAgICAgc3ViUHRyKFRydXN0ZWRJbW0zMihwYXJlbkNvbnRleHRTaXpl
KSwgZnJlZWxpc3RTaXplUmVnaXN0ZXIpOwogCiAgICAgICAgIExhYmVsIGxvb3BUb3AodGhpcyk7
CkBAIC02NTMsNDYgKzY0MSwxMSBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIDogcHVibGljIFlhcnJK
SVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgY2FsbEZyYW1lU2l6ZSA9
IChjYWxsRnJhbWVTaXplICsgMHgzZikgJiB+MHgzZjsKICAgICAgICAgcmV0dXJuIGNhbGxGcmFt
ZVNpemU7CiAgICAgfQotICAgIHZvaWQgaW5pdENhbGxGcmFtZSgpCi0gICAgewotICAgICAgICB1
bnNpZ25lZCBjYWxsRnJhbWVTaXplSW5CeXRlcyA9IGFsaWduQ2FsbEZyYW1lU2l6ZUluQnl0ZXMo
bV9wYXR0ZXJuLm1fYm9keS0+bV9jYWxsRnJhbWVTaXplKTsKLSAgICAgICAgaWYgKGNhbGxGcmFt
ZVNpemVJbkJ5dGVzKSB7Ci0jaWYgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTTY0KQotICAgICAgICAg
ICAgaWYgKE9wdGlvbnM6Onplcm9TdGFja0ZyYW1lKCkpIHsKLSAgICAgICAgICAgICAgICAvLyBX
ZSBuZWVkIHRvIHN0YXJ0IGZyb20gdGhlIHN0YWNrIHBvaW50ZXIsIGJlY2F1c2Ugd2UgY291bGQg
aGF2ZSBzcGlsbGVkIGNhbGxlZSBzYXZlcwotICAgICAgICAgICAgICAgIG1vdmUoc3RhY2tQb2lu
dGVyUmVnaXN0ZXIsIHJlZ1QwKTsKLSAgICAgICAgICAgICAgICBzdWJQdHIoSW1tMzIoY2FsbEZy
YW1lU2l6ZUluQnl0ZXMpLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7Ci0gICAgICAgICAgICAgICAg
aWYgKGNhbGxGcmFtZVNpemVJbkJ5dGVzIDw9IDEyOCkgewotICAgICAgICAgICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIG9mZnNldCA9IDA7IG9mZnNldCA8IGNhbGxGcmFtZVNpemVJbkJ5dGVzOyBv
ZmZzZXQgKz0gc2l6ZW9mKGludHB0cl90KSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0b3Jl
UHRyKFRydXN0ZWRJbW0zMigwKSwgQWRkcmVzcyhyZWdUMCwgLTggLSBvZmZzZXQpKTsKLSAgICAg
ICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBMYWJlbCB6ZXJvTG9vcCA9
IGxhYmVsKCk7Ci0gICAgICAgICAgICAgICAgICAgIHN1YlB0cihUcnVzdGVkSW1tMzIoc2l6ZW9m
KGludHB0cl90KSAqIDIpLCByZWdUMCk7Ci0jaWYgQ1BVKEFSTTY0KQotICAgICAgICAgICAgICAg
ICAgICBzdG9yZVBhaXI2NChBUk02NFJlZ2lzdGVyczo6enIsIEFSTTY0UmVnaXN0ZXJzOjp6ciwg
cmVnVDApOwotI2Vsc2UKLSAgICAgICAgICAgICAgICAgICAgc3RvcmVQdHIoVHJ1c3RlZEltbTMy
KDApLCBBZGRyZXNzKHJlZ1QwKSk7Ci0gICAgICAgICAgICAgICAgICAgIHN0b3JlUHRyKFRydXN0
ZWRJbW0zMigwKSwgQWRkcmVzcyhyZWdUMCwgc2l6ZW9mKGludHB0cl90KSkpOwotI2VuZGlmCi0g
ICAgICAgICAgICAgICAgICAgIGJyYW5jaFB0cihOb3RFcXVhbCwgcmVnVDAsIHN0YWNrUG9pbnRl
clJlZ2lzdGVyKS5saW5rVG8oemVyb0xvb3AsIHRoaXMpOwotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIH0gZWxzZQotI2VuZGlmCi0gICAgICAgICAgICAgICAgc3ViUHRyKEltbTMyKGNh
bGxGcmFtZVNpemVJbkJ5dGVzKSwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOwotCi0gICAgICAgIH0K
LSAgICB9Ci0gICAgdm9pZCByZW1vdmVDYWxsRnJhbWUoKQotICAgIHsKLSAgICAgICAgdW5zaWdu
ZWQgY2FsbEZyYW1lU2l6ZUluQnl0ZXMgPSBhbGlnbkNhbGxGcmFtZVNpemVJbkJ5dGVzKG1fcGF0
dGVybi5tX2JvZHktPm1fY2FsbEZyYW1lU2l6ZSk7Ci0gICAgICAgIGlmIChjYWxsRnJhbWVTaXpl
SW5CeXRlcykKLSAgICAgICAgICAgIGFkZFB0cihJbW0zMihjYWxsRnJhbWVTaXplSW5CeXRlcyks
IHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKLSAgICB9CiAKICAgICB2b2lkIGdlbmVyYXRlRmFpbFJl
dHVybigpCiAgICAgewotICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoKHZvaWQqKVdURjo6bm90
Rm91bmQpLCByZXR1cm5SZWdpc3Rlcik7Ci0gICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKDApLCBy
ZXR1cm5SZWdpc3RlcjIpOworICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoKHZvaWQqKVdURjo6
bm90Rm91bmQpLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CisgICAgICAgIG1vdmUoVHJ1c3Rl
ZEltbTMyKDApLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUjIpOwogICAgICAgICBnZW5lcmF0ZVJl
dHVybigpOwogICAgIH0KIApAQCAtNzA0LDE4ICs2NTcsMTcgQEAgY2xhc3MgWWFyckdlbmVyYXRv
ciA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAg
IEp1bXBMaXN0IGZpbmlzaEV4aXRpbmc7CiAgICAgICAgIGlmICghbV9hYm9ydEV4ZWN1dGlvbi5l
bXB0eSgpKSB7CiAgICAgICAgICAgICBtX2Fib3J0RXhlY3V0aW9uLmxpbmsodGhpcyk7Ci0gICAg
ICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoKHZvaWQqKXN0YXRpY19jYXN0PHNpemVfdD4oLTIp
KSwgcmV0dXJuUmVnaXN0ZXIpOworICAgICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKCh2b2lk
KilzdGF0aWNfY2FzdDxzaXplX3Q+KC0yKSksIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKICAg
ICAgICAgICAgIGZpbmlzaEV4aXRpbmcuYXBwZW5kKGp1bXAoKSk7CiAgICAgICAgIH0KIAogICAg
ICAgICBpZiAoIW1faGl0TWF0Y2hMaW1pdC5lbXB0eSgpKSB7CiAgICAgICAgICAgICBtX2hpdE1h
dGNoTGltaXQubGluayh0aGlzKTsKLSAgICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cigodm9p
ZCopc3RhdGljX2Nhc3Q8c2l6ZV90PigtMSkpLCByZXR1cm5SZWdpc3Rlcik7CisgICAgICAgICAg
ICBtb3ZlKFRydXN0ZWRJbW1QdHIoKHZvaWQqKXN0YXRpY19jYXN0PHNpemVfdD4oLTEpKSwgR1BS
SW5mbzo6cmV0dXJuVmFsdWVHUFIpOwogICAgICAgICB9CiAKICAgICAgICAgZmluaXNoRXhpdGlu
Zy5saW5rKHRoaXMpOwotICAgICAgICByZW1vdmVDYWxsRnJhbWUoKTsKLSAgICAgICAgbW92ZShU
cnVzdGVkSW1tMzIoMCksIHJldHVyblJlZ2lzdGVyMik7CisgICAgICAgIG1vdmUoVHJ1c3RlZElt
bTMyKDApLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUjIpOwogICAgICAgICBnZW5lcmF0ZVJldHVy
bigpOwogICAgIH0KIApAQCAtMjI5NSwyNCArMjI0NywyMSBAQCBjbGFzcyBZYXJyR2VuZXJhdG9y
IDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKIAogICAgICAg
ICAgICAgICAgIC8vIElmIHdlIGdldCBoZXJlLCB0aGUgcHJpb3IgYWx0ZXJuYXRpdmUgbWF0Y2hl
ZCAtIHJldHVybiBzdWNjZXNzLgogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIC8v
IEFkanVzdCB0aGUgc3RhY2sgcG9pbnRlciB0byByZW1vdmUgdGhlIHBhdHRlcm4ncyBmcmFtZS4K
LSAgICAgICAgICAgICAgICByZW1vdmVDYWxsRnJhbWUoKTsKLQogICAgICAgICAgICAgICAgIC8v
IExvYWQgYXBwcm9wcmlhdGUgdmFsdWVzIGludG8gdGhlIHJldHVybiByZWdpc3RlciBhbmQgdGhl
IGZpcnN0IG91dHB1dAogICAgICAgICAgICAgICAgIC8vIHNsb3QsIGFuZCByZXR1cm4uIEluIHRo
ZSBjYXNlIG9mIHBhdHRlcm4gd2l0aCBhIGZpeGVkIHNpemUsIHdlIHdpbGwKICAgICAgICAgICAg
ICAgICAvLyBub3QgaGF2ZSB5ZXQgc2V0IHRoZSB2YWx1ZSBpbiB0aGUgZmlyc3QgCi0gICAgICAg
ICAgICAgICAgQVNTRVJUKGluZGV4ICE9IHJldHVyblJlZ2lzdGVyKTsKKyAgICAgICAgICAgICAg
ICBBU1NFUlQoaW5kZXggIT0gR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOwogICAgICAgICAgICAg
ICAgIGlmIChtX3BhdHRlcm4ubV9ib2R5LT5tX2hhc0ZpeGVkU2l6ZSkgewotICAgICAgICAgICAg
ICAgICAgICBtb3ZlKGluZGV4LCByZXR1cm5SZWdpc3Rlcik7CisgICAgICAgICAgICAgICAgICAg
IG1vdmUoaW5kZXgsIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKICAgICAgICAgICAgICAgICAg
ICAgaWYgKHByaW9yQWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUpCi0gICAgICAgICAgICAgICAg
ICAgICAgICBzdWIzMihJbW0zMihwcmlvckFsdGVybmF0aXZlLT5tX21pbmltdW1TaXplKSwgcmV0
dXJuUmVnaXN0ZXIpOworICAgICAgICAgICAgICAgICAgICAgICAgc3ViMzIoSW1tMzIocHJpb3JB
bHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZSksIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKICAg
ICAgICAgICAgICAgICAgICAgaWYgKGNvbXBpbGVNb2RlID09IEluY2x1ZGVTdWJwYXR0ZXJucykK
LSAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlMzIocmV0dXJuUmVnaXN0ZXIsIG91dHB1dCk7
CisgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZTMyKEdQUkluZm86OnJldHVyblZhbHVlR1BS
LCBvdXRwdXQpOwogICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICBn
ZXRNYXRjaFN0YXJ0KHJldHVyblJlZ2lzdGVyKTsKKyAgICAgICAgICAgICAgICAgICAgZ2V0TWF0
Y2hTdGFydChHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CiAgICAgICAgICAgICAgICAgaWYgKGNv
bXBpbGVNb2RlID09IEluY2x1ZGVTdWJwYXR0ZXJucykKICAgICAgICAgICAgICAgICAgICAgc3Rv
cmUzMihpbmRleCwgQWRkcmVzcyhvdXRwdXQsIDQpKTsKLSAgICAgICAgICAgICAgICBtb3ZlKGlu
ZGV4LCByZXR1cm5SZWdpc3RlcjIpOworICAgICAgICAgICAgICAgIG1vdmUoaW5kZXgsIEdQUklu
Zm86OnJldHVyblZhbHVlR1BSMik7CiAKICAgICAgICAgICAgICAgICBnZW5lcmF0ZVJldHVybigp
OwogCkBAIC0yNzM3LDggKzI2ODYsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIDogcHVibGljIFlh
cnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAgIH0KIAogICAg
ICAgICAgICAgY2FzZSBPcE1hdGNoRmFpbGVkOgotICAgICAgICAgICAgICAgIHJlbW92ZUNhbGxG
cmFtZSgpOwotICAgICAgICAgICAgICAgIGdlbmVyYXRlRmFpbFJldHVybigpOworICAgICAgICAg
ICAgICAgIGp1bXAoKS5saW5rVG8obV9mYWlsUmV0dXJuTGFiZWwsIHRoaXMpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogCkBAIC0yOTkwLDggKzI5MzgsNyBAQCBjbGFz
cyBZYXJyR2VuZXJhdG9yIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1i
bGVyIHsKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBsYXN0U3RpY2t5QWx0
ZXJuYXRpdmVGYWlsdXJlcy5saW5rKHRoaXMpOwotICAgICAgICAgICAgICAgIHJlbW92ZUNhbGxG
cmFtZSgpOwotICAgICAgICAgICAgICAgIGdlbmVyYXRlRmFpbFJldHVybigpOworICAgICAgICAg
ICAgICAgIGp1bXAoKS5saW5rVG8obV9mYWlsUmV0dXJuTGFiZWwsIHRoaXMpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBPcEJvZHlBbHRl
cm5hdGl2ZUVuZDogewpAQCAtMzcxMSwxMzQgKzM2NTgsMTI3IEBAIGNsYXNzIFlhcnJHZW5lcmF0
b3IgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogI2VuZGlm
CiAgICAgfQogCi0gICAgdm9pZCBnZW5lcmF0ZUVudGVyKCkKKyAgICBSZWdpc3RlclNldCB1c2Vk
Q2FsbGVlU2F2ZVJlZ2lzdGVycygpCiAgICAgeworICAgICAgICBSZWdpc3RlclNldCByZWdpc3Rl
clNldDsKICNpZiBDUFUoWDg2XzY0KQotICAgICAgICBwdXNoKFg4NlJlZ2lzdGVyczo6ZWJwKTsK
LSAgICAgICAgbW92ZShzdGFja1BvaW50ZXJSZWdpc3RlciwgWDg2UmVnaXN0ZXJzOjplYnApOwot
Ci0gICAgICAgIGlmIChtX3BhdHRlcm4ubV9zYXZlSW5pdGlhbFN0YXJ0VmFsdWUpCi0gICAgICAg
ICAgICBwdXNoKFg4NlJlZ2lzdGVyczo6ZWJ4KTsKLQogI2lmIE9TKFdJTkRPV1MpCi0gICAgICAg
IHB1c2goWDg2UmVnaXN0ZXJzOjplZGkpOworICAgICAgICByZWdpc3RlclNldC5hZGQoWDg2UmVn
aXN0ZXJzOjplZGkpOwogI2VuZGlmCiAjaWYgRU5BQkxFKFlBUlJfSklUX0FMTF9QQVJFTlNfRVhQ
UkVTU0lPTlMpCiAgICAgICAgIGlmIChtX2NvbnRhaW5zTmVzdGVkU3VicGF0dGVybnMpIHsKICNp
ZiBPUyhXSU5ET1dTKQotICAgICAgICAgICAgcHVzaChYODZSZWdpc3RlcnM6OmVzaSk7CisgICAg
ICAgICAgICByZWdpc3RlclNldC5hZGQoWDg2UmVnaXN0ZXJzOjplc2kpOwogI2VuZGlmCi0gICAg
ICAgICAgICBwdXNoKFg4NlJlZ2lzdGVyczo6cjEyKTsKKyAgICAgICAgICAgIHJlZ2lzdGVyU2V0
LmFkZChYODZSZWdpc3RlcnM6OnIxMik7CiAgICAgICAgIH0KICNlbmRpZgotCiAgICAgICAgIGlm
IChtX2RlY29kZVN1cnJvZ2F0ZVBhaXJzKSB7Ci0gICAgICAgICAgICBwdXNoKFg4NlJlZ2lzdGVy
czo6cjEzKTsKLSAgICAgICAgICAgIHB1c2goWDg2UmVnaXN0ZXJzOjpyMTQpOwotICAgICAgICAg
ICAgcHVzaChYODZSZWdpc3RlcnM6OnIxNSk7CisgICAgICAgICAgICByZWdpc3RlclNldC5hZGQo
WDg2UmVnaXN0ZXJzOjpyMTMpOworICAgICAgICAgICAgcmVnaXN0ZXJTZXQuYWRkKFg4NlJlZ2lz
dGVyczo6cjE0KTsKKyAgICAgICAgICAgIHJlZ2lzdGVyU2V0LmFkZChYODZSZWdpc3RlcnM6OnIx
NSk7CisgICAgICAgIH0KKyNpZiBPUyhXSU5ET1dTKQorICAgICAgICAvLyByY3ggaXMgdGhlIHBv
aW50ZXIgdG8gdGhlIGFsbG9jYXRlZCBzcGFjZSBmb3IgcmVzdWx0IGluIHg2NCBXaW5kb3dzLgor
ICAgICAgICByZWdpc3RlclNldC5hZGQoWDg2UmVnaXN0ZXJzOjplY3gpOworI2VuZGlmCisjZWxp
ZiBDUFUoWDg2KQorICAgICAgICAvLyBUT0RPOiBkbyB3ZSBuZWVkIHNwaWxsIHJlZ2lzdGVycyB0
byBmaWxsIHRoZSBvdXRwdXQgcG9pbnRlciBpZiB0aGVyZSBhcmUgbm8gc3ViIGNhcHR1cmVzPwor
ICAgICAgICByZWdpc3RlclNldC5hZGQoWDg2UmVnaXN0ZXJzOjplYngpOworICAgICAgICByZWdp
c3RlclNldC5hZGQoWDg2UmVnaXN0ZXJzOjplZGkpOworICAgICAgICByZWdpc3RlclNldC5hZGQo
WDg2UmVnaXN0ZXJzOjplc2kpOworI2VsaWYgQ1BVKEFSTTY0KQorICAgICAgICAvLyBEbyBub3Ro
aW5nLgorI2VsaWYgQ1BVKEFSTV9USFVNQjIpCisgICAgICAgIHJlZ2lzdGVyU2V0LmFkZChBUk1S
ZWdpc3RlcnM6OnI0KTsKKyAgICAgICAgcmVnaXN0ZXJTZXQuYWRkKEFSTVJlZ2lzdGVyczo6cjUp
OworICAgICAgICByZWdpc3RlclNldC5hZGQoQVJNUmVnaXN0ZXJzOjpyNik7CisgICAgICAgIHJl
Z2lzdGVyU2V0LmFkZChBUk1SZWdpc3RlcnM6OnI4KTsKKyNlbGlmIENQVShNSVBTKQorICAgICAg
ICAvLyBEbyBub3RoaW5nLgorI2VuZGlmCisgICAgICAgIHJldHVybiByZWdpc3RlclNldDsKKyAg
ICB9CiAKLSAgICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKDB4ZDgwMCksIGxlYWRpbmdTdXJy
b2dhdGVUYWcpOworICAgIHZvaWQgZ2VuZXJhdGVFbnRlcigpCisgICAgeworICAgICAgICBlbWl0
RnVuY3Rpb25Qcm9sb2d1ZSgpOworICAgICAgICBtX3VzZWRDYWxsZWVTYXZlUmVnaXN0ZXJzID0g
UmVnaXN0ZXJBdE9mZnNldExpc3QodXNlZENhbGxlZVNhdmVSZWdpc3RlcnMoKSwgUmVnaXN0ZXJB
dE9mZnNldExpc3Q6OkZyYW1lUG9pbnRlckJhc2VkKTsKKyAgICAgICAgdW5zaWduZWQgY2FsbEZy
YW1lU2l6ZUluQnl0ZXMgPSBhbGlnbkNhbGxGcmFtZVNpemVJbkJ5dGVzKG1fcGF0dGVybi5tX2Jv
ZHktPm1fY2FsbEZyYW1lU2l6ZSk7CisgICAgICAgIG1fZnJhbWVTaXplID0gV1RGOjpyb3VuZFVw
VG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50Qnl0ZXMoKSwgbV91c2VkQ2FsbGVlU2F2ZVJlZ2lz
dGVycy5zaXplKCkgKiBzaXplb2YoQ1BVUmVnaXN0ZXIpICsgY2FsbEZyYW1lU2l6ZUluQnl0ZXMp
OworICAgICAgICBpZiAobV9mcmFtZVNpemUpIHsKKyAgICAgICAgICAgIHN1YlB0cihNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbTMyKG1fZnJhbWVTaXplKSwgc3RhY2tQb2ludGVyUmVnaXN0ZXIp
OworI2lmIENQVShBUk02NCkgfHwgQ1BVKFg2NCkKKyAgICAgICAgICAgIGlmIChPcHRpb25zOjp6
ZXJvU3RhY2tGcmFtZSgpKSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKCFSZWdpc3RlclNldDo6
Y2FsbGVlU2F2ZVJlZ2lzdGVycygpLmNvbnRhaW5zKHJlZ1QwKSk7CisgICAgICAgICAgICAgICAg
Ly8gV2UgbmVlZCB0byBzdGFydCBmcm9tIHRoZSBzdGFjayBwb2ludGVyLCBiZWNhdXNlIHdlIGNv
dWxkIGhhdmUgc3BpbGxlZCBjYWxsZWUgc2F2ZXMKKyAgICAgICAgICAgICAgICBtb3ZlKGNhbGxG
cmFtZVBvaW50ZXIsIHJlZ1QwKTsKKyAgICAgICAgICAgICAgICBpZiAobV9mcmFtZVNpemUgPD0g
MTI4KSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgb2Zmc2V0ID0gMDsgb2Zm
c2V0IDwgbV9mcmFtZVNpemU7IG9mZnNldCArPSBzaXplb2YoaW50cHRyX3QpKQorICAgICAgICAg
ICAgICAgICAgICAgICAgc3RvcmVQdHIoVHJ1c3RlZEltbTMyKDApLCBBZGRyZXNzKHJlZ1QwLCAt
OCAtIG9mZnNldCkpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
ICAgIExhYmVsIHplcm9Mb29wID0gbGFiZWwoKTsKKyAgICAgICAgICAgICAgICAgICAgc3ViUHRy
KFRydXN0ZWRJbW0zMihzaXplb2YoaW50cHRyX3QpICogMiksIHJlZ1QwKTsKKyNpZiBDUFUoQVJN
NjQpCisgICAgICAgICAgICAgICAgICAgIHN0b3JlUGFpcjY0KEFSTTY0UmVnaXN0ZXJzOjp6ciwg
QVJNNjRSZWdpc3RlcnM6OnpyLCByZWdUMCk7CisjZWxzZQorICAgICAgICAgICAgICAgICAgICBz
dG9yZVB0cihUcnVzdGVkSW1tMzIoMCksIEFkZHJlc3MocmVnVDApKTsKKyAgICAgICAgICAgICAg
ICAgICAgc3RvcmVQdHIoVHJ1c3RlZEltbTMyKDApLCBBZGRyZXNzKHJlZ1QwLCBzaXplb2YoaW50
cHRyX3QpKSk7CisjZW5kaWYKKyAgICAgICAgICAgICAgICAgICAgYnJhbmNoUHRyKE5vdEVxdWFs
LCByZWdUMCwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpLmxpbmtUbyh6ZXJvTG9vcCwgdGhpcyk7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorI2VuZGlmCiAgICAgICAgIH0KLSAgICAg
ICAgLy8gVGhlIEFCSSBkb2Vzbid0IGd1YXJhbnRlZSB0aGUgdXBwZXIgYml0cyBhcmUgemVybyBv
biB1bnNpZ25lZCBhcmd1bWVudHMsIHNvIGNsZWFyIHRoZW0gb3Vyc2VsdmVzLgotICAgICAgICB6
ZXJvRXh0ZW5kMzJUb1B0cihpbmRleCwgaW5kZXgpOwotICAgICAgICB6ZXJvRXh0ZW5kMzJUb1B0
cihsZW5ndGgsIGxlbmd0aCk7CisgICAgICAgIGVtaXRTYXZlKG1fdXNlZENhbGxlZVNhdmVSZWdp
c3RlcnMpOworCisjaWYgQ1BVKFg4Nl82NCkKKyAgICAgICAgaWYgKG1fZGVjb2RlU3Vycm9nYXRl
UGFpcnMpCisgICAgICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMigweGQ4MDApLCBsZWFkaW5nU3Vy
cm9nYXRlVGFnKTsKICNpZiBPUyhXSU5ET1dTKQogICAgICAgICBpZiAoY29tcGlsZU1vZGUgPT0g
SW5jbHVkZVN1YnBhdHRlcm5zKQogICAgICAgICAgICAgbG9hZFB0cihBZGRyZXNzKFg4NlJlZ2lz
dGVyczo6ZWJwLCA2ICogc2l6ZW9mKHZvaWQqKSksIG91dHB1dCk7Ci0gICAgICAgIC8vIHJjeCBp
cyB0aGUgcG9pbnRlciB0byB0aGUgYWxsb2NhdGVkIHNwYWNlIGZvciByZXN1bHQgaW4geDY0IFdp
bmRvd3MuCi0gICAgICAgIHB1c2goWDg2UmVnaXN0ZXJzOjplY3gpOwogI2VuZGlmCiAjZWxpZiBD
UFUoWDg2KQotICAgICAgICBwdXNoKFg4NlJlZ2lzdGVyczo6ZWJwKTsKLSAgICAgICAgbW92ZShz
dGFja1BvaW50ZXJSZWdpc3RlciwgWDg2UmVnaXN0ZXJzOjplYnApOwotICAgICAgICAvLyBUT0RP
OiBkbyB3ZSBuZWVkIHNwaWxsIHJlZ2lzdGVycyB0byBmaWxsIHRoZSBvdXRwdXQgcG9pbnRlciBp
ZiB0aGVyZSBhcmUgbm8gc3ViIGNhcHR1cmVzPwotICAgICAgICBwdXNoKFg4NlJlZ2lzdGVyczo6
ZWJ4KTsKLSAgICAgICAgcHVzaChYODZSZWdpc3RlcnM6OmVkaSk7Ci0gICAgICAgIHB1c2goWDg2
UmVnaXN0ZXJzOjplc2kpOwogICAgICAgICAvLyBsb2FkIG91dHB1dCBpbnRvIGVkaSAoMiA9IHNh
dmVkIGVicCArIHJldHVybiBhZGRyZXNzKS4KLSAgICAjaWYgQ09NUElMRVIoTVNWQykKKyNpZiBP
UyhXSU5ET1dTKQogICAgICAgICBsb2FkUHRyKEFkZHJlc3MoWDg2UmVnaXN0ZXJzOjplYnAsIDIg
KiBzaXplb2Yodm9pZCopKSwgaW5wdXQpOwogICAgICAgICBsb2FkUHRyKEFkZHJlc3MoWDg2UmVn
aXN0ZXJzOjplYnAsIDMgKiBzaXplb2Yodm9pZCopKSwgaW5kZXgpOwogICAgICAgICBsb2FkUHRy
KEFkZHJlc3MoWDg2UmVnaXN0ZXJzOjplYnAsIDQgKiBzaXplb2Yodm9pZCopKSwgbGVuZ3RoKTsK
ICAgICAgICAgaWYgKGNvbXBpbGVNb2RlID09IEluY2x1ZGVTdWJwYXR0ZXJucykKICAgICAgICAg
ICAgIGxvYWRQdHIoQWRkcmVzcyhYODZSZWdpc3RlcnM6OmVicCwgNSAqIHNpemVvZih2b2lkKikp
LCBvdXRwdXQpOwotICAgICNlbHNlCisjZWxzZQogICAgICAgICBpZiAoY29tcGlsZU1vZGUgPT0g
SW5jbHVkZVN1YnBhdHRlcm5zKQogICAgICAgICAgICAgbG9hZFB0cihBZGRyZXNzKFg4NlJlZ2lz
dGVyczo6ZWJwLCAyICogc2l6ZW9mKHZvaWQqKSksIG91dHB1dCk7Ci0gICAgI2VuZGlmCisjZW5k
aWYKICNlbGlmIENQVShBUk02NCkKLSAgICAgICAgdGFnUmV0dXJuQWRkcmVzcygpOwogICAgICAg
ICBpZiAobV9kZWNvZGVTdXJyb2dhdGVQYWlycykgewotICAgICAgICAgICAgcHVzaFBhaXIoZnJh
bWVQb2ludGVyUmVnaXN0ZXIsIGxpbmtSZWdpc3Rlcik7CiAgICAgICAgICAgICBtb3ZlKFRydXN0
ZWRJbW0zMigweDEwMDAwKSwgc3VwcGxlbWVudGFyeVBsYW5lc0Jhc2UpOwogICAgICAgICAgICAg
bW92ZShUcnVzdGVkSW1tMzIoMHhkODAwKSwgbGVhZGluZ1N1cnJvZ2F0ZVRhZyk7CiAgICAgICAg
ICAgICBtb3ZlKFRydXN0ZWRJbW0zMigweGRjMDApLCB0cmFpbGluZ1N1cnJvZ2F0ZVRhZyk7CiAg
ICAgICAgIH0KLQotICAgICAgICAvLyBUaGUgQUJJIGRvZXNuJ3QgZ3VhcmFudGVlIHRoZSB1cHBl
ciBiaXRzIGFyZSB6ZXJvIG9uIHVuc2lnbmVkIGFyZ3VtZW50cywgc28gY2xlYXIgdGhlbSBvdXJz
ZWx2ZXMuCi0gICAgICAgIHplcm9FeHRlbmQzMlRvUHRyKGluZGV4LCBpbmRleCk7Ci0gICAgICAg
IHplcm9FeHRlbmQzMlRvUHRyKGxlbmd0aCwgbGVuZ3RoKTsKICNlbGlmIENQVShBUk1fVEhVTUIy
KQotICAgICAgICBwdXNoKEFSTVJlZ2lzdGVyczo6cjQpOwotICAgICAgICBwdXNoKEFSTVJlZ2lz
dGVyczo6cjUpOwotICAgICAgICBwdXNoKEFSTVJlZ2lzdGVyczo6cjYpOwotICAgICAgICBwdXNo
KEFSTVJlZ2lzdGVyczo6cjgpOworICAgICAgICAvLyBEbyBub3RoaW5nLgogI2VsaWYgQ1BVKE1J
UFMpCiAgICAgICAgIC8vIERvIG5vdGhpbmcuCiAjZW5kaWYKLQogICAgICAgICBzdG9yZTgoVHJ1
c3RlZEltbTMyKDEpLCAmbV92bS0+aXNFeGVjdXRpbmdJblJlZ0V4cEpJVCk7CiAgICAgfQogCiAg
ICAgdm9pZCBnZW5lcmF0ZVJldHVybigpCiAgICAgewogICAgICAgICBzdG9yZTgoVHJ1c3RlZElt
bTMyKDApLCAmbV92bS0+aXNFeGVjdXRpbmdJblJlZ0V4cEpJVCk7Ci0KLSNpZiBDUFUoWDg2XzY0
KQotI2lmIE9TKFdJTkRPV1MpCisjaWYgQ1BVKFg4Nl82NCkgJiYgT1MoV0lORE9XUykKICAgICAg
ICAgLy8gU3RvcmUgdGhlIHJldHVybiB2YWx1ZSBpbiB0aGUgYWxsb2NhdGVkIHNwYWNlIHBvaW50
ZWQgYnkgcmN4LgotICAgICAgICBwb3AoWDg2UmVnaXN0ZXJzOjplY3gpOwotICAgICAgICBzdG9y
ZTY0KHJldHVyblJlZ2lzdGVyLCBBZGRyZXNzKFg4NlJlZ2lzdGVyczo6ZWN4KSk7Ci0gICAgICAg
IHN0b3JlNjQocmV0dXJuUmVnaXN0ZXIyLCBBZGRyZXNzKFg4NlJlZ2lzdGVyczo6ZWN4LCBzaXpl
b2Yodm9pZCopKSk7Ci0gICAgICAgIG1vdmUoWDg2UmVnaXN0ZXJzOjplY3gsIHJldHVyblJlZ2lz
dGVyKTsKLSNlbmRpZgotICAgICAgICBpZiAobV9kZWNvZGVTdXJyb2dhdGVQYWlycykgewotICAg
ICAgICAgICAgcG9wKFg4NlJlZ2lzdGVyczo6cjE1KTsKLSAgICAgICAgICAgIHBvcChYODZSZWdp
c3RlcnM6OnIxNCk7Ci0gICAgICAgICAgICBwb3AoWDg2UmVnaXN0ZXJzOjpyMTMpOwotICAgICAg
ICB9Ci0KLSNpZiBFTkFCTEUoWUFSUl9KSVRfQUxMX1BBUkVOU19FWFBSRVNTSU9OUykKLSAgICAg
ICAgaWYgKG1fY29udGFpbnNOZXN0ZWRTdWJwYXR0ZXJucykgewotICAgICAgICAgICAgcG9wKFg4
NlJlZ2lzdGVyczo6cjEyKTsKLSNpZiBPUyhXSU5ET1dTKQotICAgICAgICAgICAgcG9wKFg4NlJl
Z2lzdGVyczo6ZXNpKTsKLSNlbmRpZgotICAgICAgICB9Ci0jZW5kaWYKLSNpZiBPUyhXSU5ET1dT
KQotICAgICAgICBwb3AoWDg2UmVnaXN0ZXJzOjplZGkpOwotI2VuZGlmCi0KLSAgICAgICAgaWYg
KG1fcGF0dGVybi5tX3NhdmVJbml0aWFsU3RhcnRWYWx1ZSkKLSAgICAgICAgICAgIHBvcChYODZS
ZWdpc3RlcnM6OmVieCk7Ci0gICAgICAgIHBvcChYODZSZWdpc3RlcnM6OmVicCk7Ci0jZWxpZiBD
UFUoWDg2KQotICAgICAgICBwb3AoWDg2UmVnaXN0ZXJzOjplc2kpOwotICAgICAgICBwb3AoWDg2
UmVnaXN0ZXJzOjplZGkpOwotICAgICAgICBwb3AoWDg2UmVnaXN0ZXJzOjplYngpOwotICAgICAg
ICBwb3AoWDg2UmVnaXN0ZXJzOjplYnApOwotI2VsaWYgQ1BVKEFSTTY0KQotICAgICAgICBpZiAo
bV9kZWNvZGVTdXJyb2dhdGVQYWlycykKLSAgICAgICAgICAgIHBvcFBhaXIoZnJhbWVQb2ludGVy
UmVnaXN0ZXIsIGxpbmtSZWdpc3Rlcik7Ci0jZWxpZiBDUFUoQVJNX1RIVU1CMikKLSAgICAgICAg
cG9wKEFSTVJlZ2lzdGVyczo6cjgpOwotICAgICAgICBwb3AoQVJNUmVnaXN0ZXJzOjpyNik7Ci0g
ICAgICAgIHBvcChBUk1SZWdpc3RlcnM6OnI1KTsKLSAgICAgICAgcG9wKEFSTVJlZ2lzdGVyczo6
cjQpOwotI2VsaWYgQ1BVKE1JUFMpCi0gICAgICAgIC8vIERvIG5vdGhpbmcKKyAgICAgICAgc3Rv
cmU2NChHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgQWRkcmVzcyhYODZSZWdpc3RlcnM6OmVjeCkp
OworICAgICAgICBzdG9yZTY0KEdQUkluZm86OnJldHVyblZhbHVlR1BSMiwgQWRkcmVzcyhYODZS
ZWdpc3RlcnM6OmVjeCwgc2l6ZW9mKHZvaWQqKSkpOworICAgICAgICBtb3ZlKFg4NlJlZ2lzdGVy
czo6ZWN4LCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CiAjZW5kaWYKKyAgICAgICAgaWYgKG1f
ZnJhbWVTaXplKSB7CisgICAgICAgICAgICBlbWl0UmVzdG9yZShtX3VzZWRDYWxsZWVTYXZlUmVn
aXN0ZXJzKTsKKyAgICAgICAgICAgIGVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7CisgICAgICAgIH0g
ZWxzZQorICAgICAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWVXaXRoRW1wdHlGcmFtZSgpOwog
ICAgICAgICByZXQoKTsKICAgICB9CiAKQEAgLTM5MDMsNiArMzg0Myw3IEBAIGNsYXNzIFlhcnJH
ZW5lcmF0b3IgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewog
ICAgICAgICBnZW5lcmF0ZUVudGVyKCk7CiAKICAgICAgICAgSnVtcCBoYXNJbnB1dCA9IGNoZWNr
SW5wdXQoKTsKKyAgICAgICAgbV9mYWlsUmV0dXJuTGFiZWwgPSBsYWJlbCgpOwogICAgICAgICBn
ZW5lcmF0ZUZhaWxSZXR1cm4oKTsKICAgICAgICAgaGFzSW5wdXQubGluayh0aGlzKTsKIApAQCAt
MzkyNCw4ICszODY1LDYgQEAgY2xhc3MgWWFyckdlbmVyYXRvciA6IHB1YmxpYyBZYXJySklUSW5m
bywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgIGlmICghbV9wYXR0ZXJuLm1fYm9k
eS0+bV9oYXNGaXhlZFNpemUpCiAgICAgICAgICAgICBzZXRNYXRjaFN0YXJ0KGluZGV4KTsKIAot
ICAgICAgICBpbml0Q2FsbEZyYW1lKCk7Ci0KICNpZiBFTkFCTEUoWUFSUl9KSVRfQUxMX1BBUkVO
U19FWFBSRVNTSU9OUykKICAgICAgICAgaWYgKG1fY29udGFpbnNOZXN0ZWRTdWJwYXR0ZXJucykg
ewogICAgICAgICAgICAgaW5pdFBhcmVuQ29udGV4dEZyZWVMaXN0KCk7CkBAIC00MjA3LDYgKzQx
NDYsMTAgQEAgY2xhc3MgWWFyckdlbmVyYXRvciA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0
ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgLy8gVXNlZCB0byBkZXRlY3QgcmVndWxhciBleHByZXNz
aW9uIGNvbnN0cnVjdHMgdGhhdCBhcmUgbm90IGN1cnJlbnRseQogICAgIC8vIHN1cHBvcnRlZCBp
biB0aGUgSklUOyBmYWxsIGJhY2sgdG8gdGhlIGludGVycHJldGVyIHdoZW4gdGhpcyBpcyBkZXRl
Y3RlZC4KICAgICBPcHRpb25hbDxKSVRGYWlsdXJlUmVhc29uPiBtX2ZhaWx1cmVSZWFzb247Cisg
ICAgTGFiZWwgbV9mYWlsUmV0dXJuTGFiZWw7CisKKyAgICB1bnNpZ25lZCBtX2ZyYW1lU2l6ZSB7
IDAgfTsKKyAgICBSZWdpc3RlckF0T2Zmc2V0TGlzdCBtX3VzZWRDYWxsZWVTYXZlUmVnaXN0ZXJz
OwogCiAgICAgYm9vbCBtX2RlY29kZVN1cnJvZ2F0ZVBhaXJzOwogICAgIGJvb2wgbV91bmljb2Rl
SWdub3JlQ2FzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJK
SVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuaAppbmRleCA2YmU4MTRi
MzdjMGJhZDM2ODEwODU2N2M3ZjkwMzcwMDdlMTAxYTJiLi4xMmNmNThhYWQ5ZmViY2QyNmQ2MDUy
MDkyZWFlMWVlMmNmMTcyZWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFy
ci9ZYXJySklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5oCkBA
IC00Miw2ICs0Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBWTTsKIGNsYXNzIEV4ZWN1
dGFibGVQb29sOworY2xhc3MgUmVnRXhwOwogCiBuYW1lc3BhY2UgWWFyciB7CiAKQEAgLTYxLDEw
ICs2MiwxMCBAQCBjbGFzcyBZYXJyQ29kZUJsb2NrIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShZYXJyQ29kZUJsb2NrKTsKIAogICAgIC8vIFRlY2huaWNhbGx5IGZyZWVQYXJlbkNvbnRleHQg
YW5kIHBhcmVuQ29udGV4dFNpemUgYXJlIG9ubHkgdXNlZCBpZiBFTkFCTEUoWUFSUl9KSVRfQUxM
X1BBUkVOU19FWFBSRVNTSU9OUykgaXMgc2V0LiBGb3J0dW5hdGVseSwgYWxsIHRoZSBjYWxsaW5n
IGNvbnZlbnRpb25zIHdlIHN1cHBvcnQgaGF2ZSBjYWxsZXIgc2F2ZSBhcmd1bWVudCByZWdpc3Rl
cnMuCi0gICAgdXNpbmcgWWFyckpJVENvZGU4ID0gRW5jb2RlZE1hdGNoUmVzdWx0ICgqKShjb25z
dCBMQ2hhciogaW5wdXQsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgsIGludCogb3V0
cHV0LCB2b2lkKiBmcmVlUGFyZW5Db250ZXh0LCB1bnNpZ25lZCBwYXJlbkNvbnRleHRTaXplKSBZ
QVJSX0NBTEw7Ci0gICAgdXNpbmcgWWFyckpJVENvZGUxNiA9IEVuY29kZWRNYXRjaFJlc3VsdCAo
KikoY29uc3QgVUNoYXIqIGlucHV0LCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCBp
bnQqIG91dHB1dCwgdm9pZCogZnJlZVBhcmVuQ29udGV4dCwgdW5zaWduZWQgcGFyZW5Db250ZXh0
U2l6ZSkgWUFSUl9DQUxMOwotICAgIHVzaW5nIFlhcnJKSVRDb2RlTWF0Y2hPbmx5OCA9IEVuY29k
ZWRNYXRjaFJlc3VsdCAoKikoY29uc3QgTENoYXIqIGlucHV0LCB1bnNpZ25lZCBzdGFydCwgdW5z
aWduZWQgbGVuZ3RoLCB2b2lkKiwgdm9pZCogZnJlZVBhcmVuQ29udGV4dCwgdW5zaWduZWQgcGFy
ZW5Db250ZXh0U2l6ZSkgWUFSUl9DQUxMOwotICAgIHVzaW5nIFlhcnJKSVRDb2RlTWF0Y2hPbmx5
MTYgPSBFbmNvZGVkTWF0Y2hSZXN1bHQgKCopKGNvbnN0IFVDaGFyKiBpbnB1dCwgdW5zaWduZWQg
c3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgdm9pZCosIHZvaWQqIGZyZWVQYXJlbkNvbnRleHQsIHVu
c2lnbmVkIHBhcmVuQ29udGV4dFNpemUpIFlBUlJfQ0FMTDsKKyAgICB1c2luZyBZYXJySklUQ29k
ZTggPSBFbmNvZGVkTWF0Y2hSZXN1bHQgKCopKGNvbnN0IExDaGFyKiBpbnB1dCwgVUNQVVJlZ2lz
dGVyIHN0YXJ0LCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoLCBpbnQqIG91dHB1dCwgdm9pZCogZnJlZVBh
cmVuQ29udGV4dCwgUmVnRXhwKikgWUFSUl9DQUxMOworICAgIHVzaW5nIFlhcnJKSVRDb2RlMTYg
PSBFbmNvZGVkTWF0Y2hSZXN1bHQgKCopKGNvbnN0IFVDaGFyKiBpbnB1dCwgVUNQVVJlZ2lzdGVy
IHN0YXJ0LCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoLCBpbnQqIG91dHB1dCwgdm9pZCogZnJlZVBhcmVu
Q29udGV4dCwgUmVnRXhwKikgWUFSUl9DQUxMOworICAgIHVzaW5nIFlhcnJKSVRDb2RlTWF0Y2hP
bmx5OCA9IEVuY29kZWRNYXRjaFJlc3VsdCAoKikoY29uc3QgTENoYXIqIGlucHV0LCBVQ1BVUmVn
aXN0ZXIgc3RhcnQsIFVDUFVSZWdpc3RlciBsZW5ndGgsIHZvaWQqLCB2b2lkKiBmcmVlUGFyZW5D
b250ZXh0LCBSZWdFeHAqKSBZQVJSX0NBTEw7CisgICAgdXNpbmcgWWFyckpJVENvZGVNYXRjaE9u
bHkxNiA9IEVuY29kZWRNYXRjaFJlc3VsdCAoKikoY29uc3QgVUNoYXIqIGlucHV0LCBVQ1BVUmVn
aXN0ZXIgc3RhcnQsIFVDUFVSZWdpc3RlciBsZW5ndGgsIHZvaWQqLCB2b2lkKiBmcmVlUGFyZW5D
b250ZXh0LCBSZWdFeHAqKSBZQVJSX0NBTEw7CiAKIHB1YmxpYzoKICAgICBZYXJyQ29kZUJsb2Nr
KCkgPSBkZWZhdWx0OwpAQCAtODcsMjggKzg4LDI4IEBAIGNsYXNzIFlhcnJDb2RlQmxvY2sgewog
ICAgIHZvaWQgc2V0VXNlc1BhdHRlcm5Db250ZXh0QnVmZmVyKCkgeyBtX3VzZXNQYXR0ZXJuQ29u
dGV4dEJ1ZmZlciA9IHRydWU7IH0KICNlbmRpZgogCi0gICAgTWF0Y2hSZXN1bHQgZXhlY3V0ZShj
b25zdCBMQ2hhciogaW5wdXQsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgsIGludCog
b3V0cHV0LCB2b2lkKiBmcmVlUGFyZW5Db250ZXh0LCB1bnNpZ25lZCBwYXJlbkNvbnRleHRTaXpl
KQorICAgIE1hdGNoUmVzdWx0IGV4ZWN1dGUoUmVnRXhwKiBudWxsT3JDYWxsZWUsIGNvbnN0IExD
aGFyKiBpbnB1dCwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgaW50KiBvdXRwdXQs
IHZvaWQqIGZyZWVQYXJlbkNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoaGFzOEJpdENv
ZGUoKSk7Ci0gICAgICAgIHJldHVybiBNYXRjaFJlc3VsdCh1bnRhZ0NGdW5jdGlvblB0cjxZYXJy
SklUQ29kZTgsIFlhcnI4Qml0UHRyVGFnPihtX3JlZjguY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNz
KCkpKGlucHV0LCBzdGFydCwgbGVuZ3RoLCBvdXRwdXQsIGZyZWVQYXJlbkNvbnRleHQsIHBhcmVu
Q29udGV4dFNpemUpKTsKKyAgICAgICAgcmV0dXJuIE1hdGNoUmVzdWx0KHVudGFnQ0Z1bmN0aW9u
UHRyPFlhcnJKSVRDb2RlOCwgWWFycjhCaXRQdHJUYWc+KG1fcmVmOC5jb2RlKCkuZXhlY3V0YWJs
ZUFkZHJlc3MoKSkoaW5wdXQsIHN0YXJ0LCBsZW5ndGgsIG91dHB1dCwgZnJlZVBhcmVuQ29udGV4
dCwgbnVsbE9yQ2FsbGVlKSk7CiAgICAgfQogCi0gICAgTWF0Y2hSZXN1bHQgZXhlY3V0ZShjb25z
dCBVQ2hhciogaW5wdXQsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgsIGludCogb3V0
cHV0LCB2b2lkKiBmcmVlUGFyZW5Db250ZXh0LCB1bnNpZ25lZCBwYXJlbkNvbnRleHRTaXplKQor
ICAgIE1hdGNoUmVzdWx0IGV4ZWN1dGUoUmVnRXhwKiBudWxsT3JDYWxsZWUsIGNvbnN0IFVDaGFy
KiBpbnB1dCwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgaW50KiBvdXRwdXQsIHZv
aWQqIGZyZWVQYXJlbkNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoaGFzMTZCaXRDb2Rl
KCkpOwotICAgICAgICByZXR1cm4gTWF0Y2hSZXN1bHQodW50YWdDRnVuY3Rpb25QdHI8WWFyckpJ
VENvZGUxNiwgWWFycjE2Qml0UHRyVGFnPihtX3JlZjE2LmNvZGUoKS5leGVjdXRhYmxlQWRkcmVz
cygpKShpbnB1dCwgc3RhcnQsIGxlbmd0aCwgb3V0cHV0LCBmcmVlUGFyZW5Db250ZXh0LCBwYXJl
bkNvbnRleHRTaXplKSk7CisgICAgICAgIHJldHVybiBNYXRjaFJlc3VsdCh1bnRhZ0NGdW5jdGlv
blB0cjxZYXJySklUQ29kZTE2LCBZYXJyMTZCaXRQdHJUYWc+KG1fcmVmMTYuY29kZSgpLmV4ZWN1
dGFibGVBZGRyZXNzKCkpKGlucHV0LCBzdGFydCwgbGVuZ3RoLCBvdXRwdXQsIGZyZWVQYXJlbkNv
bnRleHQsIG51bGxPckNhbGxlZSkpOwogICAgIH0KIAotICAgIE1hdGNoUmVzdWx0IGV4ZWN1dGUo
Y29uc3QgTENoYXIqIGlucHV0LCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCB2b2lk
KiBmcmVlUGFyZW5Db250ZXh0LCB1bnNpZ25lZCBwYXJlbkNvbnRleHRTaXplKQorICAgIE1hdGNo
UmVzdWx0IGV4ZWN1dGUoUmVnRXhwKiBudWxsT3JDYWxsZWUsIGNvbnN0IExDaGFyKiBpbnB1dCwg
dW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgdm9pZCogZnJlZVBhcmVuQ29udGV4dCkK
ICAgICB7CiAgICAgICAgIEFTU0VSVChoYXM4Qml0Q29kZU1hdGNoT25seSgpKTsKLSAgICAgICAg
cmV0dXJuIE1hdGNoUmVzdWx0KHVudGFnQ0Z1bmN0aW9uUHRyPFlhcnJKSVRDb2RlTWF0Y2hPbmx5
OCwgWWFyck1hdGNoT25seThCaXRQdHJUYWc+KG1fbWF0Y2hPbmx5OC5jb2RlKCkuZXhlY3V0YWJs
ZUFkZHJlc3MoKSkoaW5wdXQsIHN0YXJ0LCBsZW5ndGgsIDAsIGZyZWVQYXJlbkNvbnRleHQsIHBh
cmVuQ29udGV4dFNpemUpKTsKKyAgICAgICAgcmV0dXJuIE1hdGNoUmVzdWx0KHVudGFnQ0Z1bmN0
aW9uUHRyPFlhcnJKSVRDb2RlTWF0Y2hPbmx5OCwgWWFyck1hdGNoT25seThCaXRQdHJUYWc+KG1f
bWF0Y2hPbmx5OC5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkoaW5wdXQsIHN0YXJ0LCBsZW5n
dGgsIDAsIGZyZWVQYXJlbkNvbnRleHQsIG51bGxPckNhbGxlZSkpOwogICAgIH0KIAotICAgIE1h
dGNoUmVzdWx0IGV4ZWN1dGUoY29uc3QgVUNoYXIqIGlucHV0LCB1bnNpZ25lZCBzdGFydCwgdW5z
aWduZWQgbGVuZ3RoLCB2b2lkKiBmcmVlUGFyZW5Db250ZXh0LCB1bnNpZ25lZCBwYXJlbkNvbnRl
eHRTaXplKQorICAgIE1hdGNoUmVzdWx0IGV4ZWN1dGUoUmVnRXhwKiBudWxsT3JDYWxsZWUsIGNv
bnN0IFVDaGFyKiBpbnB1dCwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgdm9pZCog
ZnJlZVBhcmVuQ29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChoYXMxNkJpdENvZGVNYXRj
aE9ubHkoKSk7Ci0gICAgICAgIHJldHVybiBNYXRjaFJlc3VsdCh1bnRhZ0NGdW5jdGlvblB0cjxZ
YXJySklUQ29kZU1hdGNoT25seTE2LCBZYXJyTWF0Y2hPbmx5MTZCaXRQdHJUYWc+KG1fbWF0Y2hP
bmx5MTYuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKGlucHV0LCBzdGFydCwgbGVuZ3RoLCAw
LCBmcmVlUGFyZW5Db250ZXh0LCBwYXJlbkNvbnRleHRTaXplKSk7CisgICAgICAgIHJldHVybiBN
YXRjaFJlc3VsdCh1bnRhZ0NGdW5jdGlvblB0cjxZYXJySklUQ29kZU1hdGNoT25seTE2LCBZYXJy
TWF0Y2hPbmx5MTZCaXRQdHJUYWc+KG1fbWF0Y2hPbmx5MTYuY29kZSgpLmV4ZWN1dGFibGVBZGRy
ZXNzKCkpKGlucHV0LCBzdGFydCwgbGVuZ3RoLCAwLCBmcmVlUGFyZW5Db250ZXh0LCBudWxsT3JD
YWxsZWUpKTsKICAgICB9CiAKICNpZiBFTkFCTEUoUkVHRVhQX1RSQUNJTkcpCmRpZmYgLS1naXQg
YS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGZhZjkxNmU3NzQx
NDEzNTFiMjhhNmEzYzU0MjhhODVkZjRhODEwZGUuLjI5NjI2MzJhYjZiM2NjZDkwNzg5MTA1MmZm
NzUzYTk4ZWU5NDFjMzMgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTktMDktMTMgIFl1c3VrZSBTdXp1a2kg
IDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBTYW1wbGluZ1Byb2ZpbGVyIHNo
b3VsZCByZWNvZ25pemUgSklULWFjY2VsZXJhdGVkIFJlZ0V4cCBleGVjdXRpb24KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTcwMgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNzL3NhbXBsaW5n
LXByb2ZpbGVyLXJlZ2V4cC5qczogQWRkZWQuCisgICAgICAgIChwbGF0Zm9ybVN1cHBvcnRzU2Ft
cGxpbmdQcm9maWxlci50ZXN0KToKKyAgICAgICAgKHBsYXRmb3JtU3VwcG9ydHNTYW1wbGluZ1By
b2ZpbGVyLmJheik6CisgICAgICAgIChwbGF0Zm9ybVN1cHBvcnRzU2FtcGxpbmdQcm9maWxlcik6
CisKIDIwMTktMDktMTIgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAg
IEhhcmRlbiBKU0MgYWdhaW5zdCB0aGUgYWJ1c2Ugb2YgcnVudGltZSBvcHRpb25zLgpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy9zdHJlc3Mvc2FtcGxpbmctcHJvZmlsZXItcmVnZXhwLmpzIGIvSlNUZXN0
cy9zdHJlc3Mvc2FtcGxpbmctcHJvZmlsZXItcmVnZXhwLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlhMzk4N2Mx
NjQ1ODBhNzYxNWVhMGMzODI5MTc2MmRmNDQxMjIxYmQKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rl
c3RzL3N0cmVzcy9zYW1wbGluZy1wcm9maWxlci1yZWdleHAuanMKQEAgLTAsMCArMSwxOCBAQAor
aWYgKHBsYXRmb3JtU3VwcG9ydHNTYW1wbGluZ1Byb2ZpbGVyKCkpIHsKKyAgICBsb2FkKCIuL3Nh
bXBsaW5nLXByb2ZpbGVyL3NhbXBsaW5nUHJvZmlsZXIuanMiKTsKKworICAgIGZ1bmN0aW9uIHRl
c3QocmVnZXhwLCBzdHJpbmcpCisgICAgeworICAgICAgICByZXR1cm4gc3RyaW5nLm1hdGNoKHJl
Z2V4cCk7CisgICAgfQorICAgIG5vSW5saW5lKHRlc3QpOworCisgICAgZnVuY3Rpb24gYmF6KCkg
eworICAgICAgICB2YXIgdGV4dCA9IGBMb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2Vj
dGV0dXIgYWRpcGlzY2luZyBlbGl0LCBzZWQgZG8gZWl1c21vZCB0ZW1wb3IgaW5jaWRpZHVudCB1
dCBsYWJvcmUgZXQgZG9sb3JlIG1hZ25hIGFsaXF1YS4gVXQgZW5pbSBhZCBtaW5pbSB2ZW5pYW0s
IHF1aXMgbm9zdHJ1ZCBleGVyY2l0YXRpb24gdWxsYW1jbyBsYWJvcmlzIG5pc2kgdXQgYWxpcXVp
cCBleCBlYSBjb21tb2RvIGNvbnNlcXVhdC4gRHVpcyBhdXRlIGlydXJlIGRvbG9yIGluIHJlcHJl
aGVuZGVyaXQgaW4gdm9sdXB0YXRlIHZlbGl0IGVzc2UgY2lsbHVtIGRvbG9yZSBldSBmdWdpYXQg
bnVsbGEgcGFyaWF0dXIuIEV4Y2VwdGV1ciBzaW50IG9jY2FlY2F0IGN1cGlkYXRhdCBub24gcHJv
aWRlbnQsIHN1bnQgaW4gY3VscGEgcXVpIG9mZmljaWEgZGVzZXJ1bnQgbW9sbGl0IGFuaW0gaWQg
ZXN0IGxhYm9ydW0uYDsKKyAgICAgICAgdmFyIHJlZ2V4cCA9IC8uKi9naTsKKyAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCAxZTU7ICsraSkKKyAgICAgICAgICAgIHRlc3QocmVnZXhwLCB0ZXh0
KTsKKyAgICB9CisKKyAgICBydW5UZXN0KGJheiwgWyIvLiovZ2kiLCAiIiwgInRlc3QiLCAiYmF6
Il0pOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433646</attachid>
            <date>2021-07-15 18:51:27 -0700</date>
            <delta_ts>2021-07-15 20:01:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201702-20210715185126.patch</filename>
            <type>text/plain</type>
            <size>50182</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5OTYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
MTQ1NTcyYWY3YTcwZDE3ZTFkZDhkN2ZjNzE3OGFiNGQzZDdjMTllLi4zZTI0YjgxMWI3NmY5ZTE1
N2NmNTFiOTFmMjI1YjA2YzJkY2UzZmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzggQEAKKzIwMjEtMDctMTUgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBTYW1wbGluZ1Byb2ZpbGVyIHNob3VsZCByZWNvZ25pemUgUmVn
RXhwIGV4ZWN1dGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjAxNzAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhpcyBwYXRjaCBleHRlbmRzIFNhbXBsaW5nUHJvZmlsZXIgdG8gcmVjb2duaXplIFJl
Z0V4cCBleGVjdXRpb24uIFdlIHJlY29yZAorICAgICAgICBleGVjdXRpbmcgUmVnRXhwIGluIFZN
IHZpYSBNYXRjaGluZ0NvbnRleHRIb2xkZXIgc28gdGhhdCBTYW1wbGluZ1Byb2ZpbGVyIGNhbiBk
ZXRlY3QgaXQuCisgICAgICAgIFdlIHVzZSBNYXRjaGluZ0NvbnRleHRIb2xkZXIgZXZlbiBpZiB0
aGUgUmVnRXhwIGlzIGludGVycHJldGVyIG1vZGUgc28gdGhhdCB3ZSBjYW4gc3RpbGwKKyAgICAg
ICAgY2F0Y2ggbm9uLUpJVCBSZWdFeHAgaW4gU2FtcGxpbmdQcm9maWxlci4KKworICAgICAgICBU
aGUgZXhhbXBsZSBvdXRwdXQgaXMgdGhlIGZvbGxvd2luZy4KKworICAgICAgICAgICAgU2FtcGxp
bmcgcmF0ZTogMTAwMC4wMDAwMDAgbWljcm9zZWNvbmRzLiBUb3RhbCBzYW1wbGVzOiAxODMwCisg
ICAgICAgICAgICBUb3AgZnVuY3Rpb25zIGFzIDxudW1TYW1wbGVzICAnZnVuY3Rpb25OYW1lI2hh
c2g6c291cmNlSUQnPgorICAgICAgICAgICAgICAgNDY2ICAgICdFeGVjIzxuaWw+OjQnCisgICAg
ICAgICAgICAgICAyMjUgICAgJy8oXnxbXlxcXSlcIlxcXC9RbmdyXCgoLT9bMC05XSspXClcXFwv
XCIvZyM8bmlsPjotMScKKyAgICAgICAgICAgICAgIDE3MyAgICAncnVuQmxvY2sxIzxuaWw+OjQn
CisgICAgICAgICAgICAgICAgODggICAgJy9OUV9WUS9nIzxuaWw+Oi0xJworICAgICAgICAgICAg
ICAgIDgzICAgICcvZDIvZyM8bmlsPjotMScKKyAgICAgICAgICAgICAgICA3OCAgICAnL2QxL2cj
PG5pbD46LTEnCisgICAgICAgICAgICAgICAgNzAgICAgJy9ccz87XHM/LyM8bmlsPjotMScKKyAg
ICAgICAgICAgICAgICA2OCAgICAncmVwbGFjZSM8bmlsPjozJworICAgICAgICAgICAgICAgIDUw
ICAgICcvKCgoXHcrKTpcL1wvKShbXlwvOl0qKSg6KFxkKykpPyk/KFteIz9dKikoXD8oW14jXSop
KT8oIyguKikpPy8jPG5pbD46LTEnCisgICAgICAgICAgICAgICAgNDkgICAgJ3J1bkJsb2NrMCM8
bmlsPjo0JworICAgICAgICAgICAgICAgIDQ2ICAgICcjPG5pbD46LTEnCisgICAgICAgICAgICAg
ICAgMjQgICAgJy9eXHMqfFxzKiQvZyM8bmlsPjotMScKKworCisgICAgICAgICAgICBTYW1wbGlu
ZyByYXRlOiAxMDAwLjAwMDAwMCBtaWNyb3NlY29uZHMuIFRvdGFsIHNhbXBsZXM6IDE4MzAKKwor
ICAgICAgICAgICAgVGllciBicmVha2Rvd246CisgICAgICAgICAgICAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgTExJbnQ6ICAgICAgICAgICAgICAgICAg
ICAxMyAgKDAuNzEwMzgzJSkKKyAgICAgICAgICAgIEJhc2VsaW5lOiAgICAgICAgICAgICAgICAg
NTQgICgyLjk1MDgyMCUpCisgICAgICAgICAgICBERkc6ICAgICAgICAgICAgICAgICAgICAgMTg3
ICAoMTAuMjE4NTc5JSkKKyAgICAgICAgICAgIEZUTDogICAgICAgICAgICAgICAgICAgICA2MTIg
ICgzMy40NDI2MjMlKQorICAgICAgICAgICAganMgYnVpbHRpbjogICAgICAgICAgICAgICA3MyAg
KDMuOTg5MDcxJSkKKyAgICAgICAgICAgIFdhc206ICAgICAgICAgICAgICAgICAgICAgIDAgICgw
LjAwMDAwMCUpCisgICAgICAgICAgICBIb3N0OiAgICAgICAgICAgICAgICAgICAgICAwICAoMC4w
MDAwMDAlKQorICAgICAgICAgICAgUmVnRXhwOiAgICAgICAgICAgICAgICAgIDkwNyAgKDQ5LjU2
Mjg0MiUpCisgICAgICAgICAgICBDL0MrKzogICAgICAgICAgICAgICAgICAgICAwICAoMC4wMDAw
MDAlKQorICAgICAgICAgICAgVW5rbm93biBFeGVjdXRhYmxlOiAgICAgICA1NyAgKDMuMTE0NzU0
JSkKKworCisgICAgICAgICAgICBIb3R0ZXN0IGJ5dGVjb2RlcyBhcyA8bnVtU2FtcGxlcyAgICdm
dW5jdGlvbk5hbWUjaGFzaDpKSVRUeXBlOmJ5dGVjb2RlSW5kZXgnPgorICAgICAgICAgICAgICAg
Mzc4ICAgICdFeGVjIzxuaWw+OkZUTDpiYyMyNycKKyAgICAgICAgICAgICAgIDIyNSAgICAnLyhe
fFteXFxdKVwiXFxcL1FuZ3JcKCgtP1swLTldKylcKVxcXC9cIi9nIzxuaWw+OlJlZ0V4cDo8bmls
PicKKyAgICAgICAgICAgICAgICA4OCAgICAnL05RX1ZRL2cjPG5pbD46UmVnRXhwOjxuaWw+Jwor
ICAgICAgICAgICAgICAgIDgzICAgICcvZDIvZyM8bmlsPjpSZWdFeHA6PG5pbD4nCisgICAgICAg
ICAgICAgICAgNzggICAgJy9kMS9nIzxuaWw+OlJlZ0V4cDo8bmlsPicKKyAgICAgICAgICAgICAg
ICA3MCAgICAnL1xzPztccz8vIzxuaWw+OlJlZ0V4cDo8bmlsPicKKyAgICAgICAgICAgICAgICA2
MiAgICAncmVwbGFjZSM8bmlsPjpGVEw6YmMjNjMnCisgICAgICAgICAgICAgICAgNTMgICAgJ0V4
ZWMjPG5pbD46REZHOmJjIzI3JworICAgICAgICAgICAgICAgIDUwICAgICcvKCgoXHcrKTpcL1wv
KShbXlwvOl0qKSg6KFxkKykpPyk/KFteIz9dKikoXD8oW14jXSopKT8oIyguKikpPy8jPG5pbD46
UmVnRXhwOjxuaWw+JworICAgICAgICAgICAgICAgIDQ2ICAgICcjPG5pbD46Tm9uZTo8bmlsPicK
KyAgICAgICAgICAgICAgICA0MiAgICAncnVuQmxvY2sxIzxuaWw+OkZUTDpiYyMxNzk1JworICAg
ICAgICAgICAgICAgIDI5ICAgICdydW5CbG9jazEjPG5pbD46RlRMOmJjIzE4NDknCisgICAgICAg
ICAgICAgICAgMjkgICAgJ3J1bkJsb2NrMSM8bmlsPjpGVEw6YmMjMTc0MScKKyAgICAgICAgICAg
ICAgICAyNCAgICAnL15ccyp8XHMqJC9nIzxuaWw+OlJlZ0V4cDo8bmlsPicKKyAgICAgICAgICAg
ICAgICAxNyAgICAncnVuQmxvY2sxIzxuaWw+OkRGRzpiYyMxNzQxJworICAgICAgICAgICAgICAg
IDE3ICAgICdydW5CbG9jazEjPG5pbD46REZHOmJjIzE3OTUnCisgICAgICAgICAgICAgICAgMTYg
ICAgJy9cYlx3K1xiL2cjPG5pbD46UmVnRXhwOjxuaWw+JworICAgICAgICAgICAgICAgIDE0ICAg
ICcvVE5RUD0oW147XSopL2kjPG5pbD46UmVnRXhwOjxuaWw+JworICAgICAgICAgICAgICAgIDEz
ICAgICcvJVx3PyQvIzxuaWw+OlJlZ0V4cDo8bmlsPicKKyAgICAgICAgICAgICAgICAxMiAgICAn
L15iYS8jPG5pbD46UmVnRXhwOjxuaWw+JworICAgICAgICAgICAgICAgIDExICAgICcvXlxzKihc
UyooXHMrXFMrKSopXHMqJC8jPG5pbD46UmVnRXhwOjxuaWw+JworICAgICAgICAgICAgICAgIDEw
ICAgICdydW5CbG9jazAjPG5pbD46RlRMOmJjIzQwMCcKKyAgICAgICAgICAgICAgICAxMCAgICAn
cnVuQmxvY2sxIzxuaWw+OkRGRzpiYyMxODQ5JworICAgICAgICAgICAgICAgIDEwICAgICdFeGVj
IzxuaWw+OkRGRzpiYyMxNicKKyAgICAgICAgICAgICAgICAgOSAgICAnLyg/OlpGVlIuKFxkK1wu
XGQrKSl8KD86KD86U3ZlcnNia3xUZW5hQ25lbnF2ZmJ8VnByanJuZnJ5KS4oXGQrXC5cZCspKXwo
PzpCY3Jlbi4oXGQrXC5cZCspKXwoPzpOY2N5ckpyb1h2Zy4oXGQrKD86XC5cZCspPykpLyM8bmls
PjpSZWdFeHA6PG5pbD4nCisgICAgICAgICAgICAgICAgIDggICAgJy8jI3l2MTgjIy9naSM8bmls
PjpSZWdFeHA6PG5pbD4nCisgICAgICAgICAgICAgICAgIDggICAgJy8oW2EtekEtWl18XHMpKy8j
PG5pbD46UmVnRXhwOjxuaWw+JworICAgICAgICAgICAgICAgICA3ICAgICcvSnJvWHZnXC8oXFMr
KS8jPG5pbD46UmVnRXhwOjxuaWw+JworICAgICAgICAgICAgICAgICA3ICAgICdydW5CbG9jazAj
PG5pbD46RlRMOmJjIzI2NzEnCisgICAgICAgICAgICAgICAgIDcgICAgJy9eKFsjLl0/KSgoPzpb
XHdcdTAxMjgtXHVmZmZmKl8tXXxcXC4pKikvIzxuaWw+OlJlZ0V4cDo8bmlsPicKKyAgICAgICAg
ICAgICAgICAgNiAgICAnLyMjb2UjIy9naSM8bmlsPjpSZWdFeHA6PG5pbD4nCisgICAgICAgICAg
ICAgICAgIDYgICAgJ3J1bkJsb2NrMSM8bmlsPjpGVEw6YmMjMTI0JworICAgICAgICAgICAgICAg
ICA2ICAgICcvWyssIF0vIzxuaWw+OlJlZ0V4cDo8bmlsPicKKyAgICAgICAgICAgICAgICAgNiAg
ICAncnVuQmxvY2sxIzxuaWw+OkZUTDpiYyMxOTAzJworICAgICAgICAgICAgICAgICA2ICAgICdy
ZXBsYWNlIzxuaWw+OkRGRzpiYyM2MycKKyAgICAgICAgICAgICAgICAgNSAgICAncnVuQmxvY2sw
IzxuaWw+OkZUTDpiYyMzMzc4JworICAgICAgICAgICAgICAgICA1ICAgICcvJy9nIzxuaWw+OlJl
Z0V4cDo8bmlsPicKKyAgICAgICAgICAgICAgICAgNSAgICAnLyMjeXYyMCMjL2dpIzxuaWw+OlJl
Z0V4cDo8bmlsPicKKyAgICAgICAgICAgICAgICAgNCAgICAnL1w/W1x3XFddKihzZXZyYXF2cXxw
dW5hYXJ5dnF8dGViaGN2cSk9KFteXCZcPyNdKikvaSM8bmlsPjpSZWdFeHA6PG5pbD4nCisgICAg
ICAgICAgICAgICAgIDQgICAgJ2xvYWQjPG5pbD46Tm9uZTo8bmlsPicKKworICAgICAgICAqIENN
YWtlTGlzdHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogcnVudGltZS9SZWdFeHAuY3BwOgorICAgICAgICAoSlNDOjpS
ZWdFeHA6Om1hdGNoQ29tcGFyZVdpdGhJbnRlcnByZXRlcik6CisgICAgICAgIChKU0M6OlJlZ0V4
cDo6ZHVtcFRvU3RyZWFtKToKKyAgICAgICAgKEpTQzo6YXBwZW5kTGluZVRlcm1pbmF0b3JFc2Nh
cGU8TENoYXI+KToKKyAgICAgICAgKEpTQzo6YXBwZW5kTGluZVRlcm1pbmF0b3JFc2NhcGU8VUNo
YXI+KToKKyAgICAgICAgKEpTQzo6ZXNjYXBlUGF0dGVybik6CisgICAgICAgIChKU0M6OlJlZ0V4
cDo6ZXNjYXBlZFBhdHRlcm4gY29uc3QpOiBNb3ZlZCBmcm9tIFJlZ0V4cFByb3RvdHlwZS5jcHAg
dG8gaW1wbGVtZW50IFJlZ0V4cDo6dG9Tb3VyY2VTdHJpbmcgYW5kIFJlZ0V4cDo6ZXNjYXBlZFBh
dHRlcm4uCisgICAgICAgIChKU0M6OlJlZ0V4cDo6dG9Tb3VyY2VTdHJpbmcgY29uc3QpOgorICAg
ICAgICAoSlNDOjpyZWdleHBUb1NvdXJjZVN0cmluZyk6IERlbGV0ZWQuCisgICAgICAgICogcnVu
dGltZS9SZWdFeHAuaDoKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cElubGluZXMuaDoKKyAgICAg
ICAgKEpTQzo6UmVnRXhwOjptYXRjaElubGluZSk6CisgICAgICAgICogcnVudGltZS9SZWdFeHBQ
cm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgor
ICAgICAgICAoSlNDOjphcHBlbmRMaW5lVGVybWluYXRvckVzY2FwZTxMQ2hhcj4pOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjphcHBlbmRMaW5lVGVybWluYXRvckVzY2FwZTxVQ2hhcj4pOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpyZWdFeHBQcm90b0dldHRlclNvdXJjZUludGVybmFsKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwOgorICAgICAgICAo
SlNDOjpTYW1wbGluZ1Byb2ZpbGVyOjp0YWtlU2FtcGxlKToKKyAgICAgICAgKEpTQzo6U2FtcGxp
bmdQcm9maWxlcjo6cHJvY2Vzc1VudmVyaWZpZWRTdGFja1RyYWNlcyk6CisgICAgICAgIChKU0M6
OlNhbXBsaW5nUHJvZmlsZXI6OlN0YWNrRnJhbWU6Om5hbWVGcm9tQ2FsbGVlKToKKyAgICAgICAg
KEpTQzo6U2FtcGxpbmdQcm9maWxlcjo6U3RhY2tGcmFtZTo6ZGlzcGxheU5hbWUpOgorICAgICAg
ICAoSlNDOjpTYW1wbGluZ1Byb2ZpbGVyOjpTdGFja0ZyYW1lOjpkaXNwbGF5TmFtZUZvckpTT05U
ZXN0cyk6CisgICAgICAgIChKU0M6OlNhbXBsaW5nUHJvZmlsZXI6OlN0YWNrRnJhbWU6OmZ1bmN0
aW9uU3RhcnRMaW5lKToKKyAgICAgICAgKEpTQzo6U2FtcGxpbmdQcm9maWxlcjo6U3RhY2tGcmFt
ZTo6ZnVuY3Rpb25TdGFydENvbHVtbik6CisgICAgICAgIChKU0M6OlNhbXBsaW5nUHJvZmlsZXI6
OlN0YWNrRnJhbWU6OnNvdXJjZUlEKToKKyAgICAgICAgKEpTQzo6U2FtcGxpbmdQcm9maWxlcjo6
U3RhY2tGcmFtZTo6dXJsKToKKyAgICAgICAgKEpTQzo6U2FtcGxpbmdQcm9maWxlcjo6cmVwb3J0
VG9wQnl0ZWNvZGVzKToKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICog
cnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmg6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAg
ICAgICAqIHlhcnIvWWFyckpJVC5jcHA6CisgICAgICAgIChKU0M6OllhcnI6Ok1hdGNoaW5nQ29u
dGV4dEhvbGRlcjo6TWF0Y2hpbmdDb250ZXh0SG9sZGVyKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6WWFycjo6TWF0Y2hpbmdDb250ZXh0SG9sZGVyOjp+TWF0Y2hpbmdDb250ZXh0SG9sZGVyKTog
RGVsZXRlZC4KKyAgICAgICAgKiB5YXJyL1lhcnJKSVQuaDoKKyAgICAgICAgKEpTQzo6WWFycjo6
TWF0Y2hpbmdDb250ZXh0SG9sZGVyOjpvZmZzZXRPZlN0YWNrTGltaXQpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpZYXJyOjpNYXRjaGluZ0NvbnRleHRIb2xkZXI6Om9mZnNldE9mUGF0dGVybkNv
bnRleHRCdWZmZXIpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpZYXJyOjpNYXRjaGluZ0NvbnRl
eHRIb2xkZXI6Om9mZnNldE9mUGF0dGVybkNvbnRleHRCdWZmZXJTaXplKTogRGVsZXRlZC4KKyAg
ICAgICAgKiB5YXJyL1lhcnJNYXRjaGluZ0NvbnRleHRIb2xkZXIuaDogQWRkZWQuCisgICAgICAg
IChKU0M6OllhcnI6Ok1hdGNoaW5nQ29udGV4dEhvbGRlcjo6b2Zmc2V0T2ZTdGFja0xpbWl0KToK
KyAgICAgICAgKEpTQzo6WWFycjo6TWF0Y2hpbmdDb250ZXh0SG9sZGVyOjpvZmZzZXRPZlBhdHRl
cm5Db250ZXh0QnVmZmVyKToKKyAgICAgICAgKEpTQzo6WWFycjo6TWF0Y2hpbmdDb250ZXh0SG9s
ZGVyOjpvZmZzZXRPZlBhdHRlcm5Db250ZXh0QnVmZmVyU2l6ZSk6CisgICAgICAgIChKU0M6Ollh
cnI6Ok1hdGNoaW5nQ29udGV4dEhvbGRlcjo6TWF0Y2hpbmdDb250ZXh0SG9sZGVyKToKKyAgICAg
ICAgKEpTQzo6WWFycjo6TWF0Y2hpbmdDb250ZXh0SG9sZGVyOjp+TWF0Y2hpbmdDb250ZXh0SG9s
ZGVyKToKKwogMjAyMS0wNy0xNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgog
CiAgICAgICAgIFtKU0NdIEhhcmRlbiBkZWZhdWx0VGltZVpvbmUgcmV0cmlldmFsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggODczNzkyODgxNzM1YjNmODFjZWIyZmFlNmZj
ZWU0Njk2NzgxYjQ0Zi4uOTg3N2UwYzc1YzBlMmMxYTdjNmZhMGVmMjAwMzNmMjUwMjg5ZWExMCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTE2MCw2ICsxMTYwLDcgQEAg
c2V0KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICB5YXJyL1lh
cnJGbGFncy5oCiAgICAgeWFyci9ZYXJySW50ZXJwcmV0ZXIuaAogICAgIHlhcnIvWWFyckpJVC5o
CisgICAgeWFyci9ZYXJyTWF0Y2hpbmdDb250ZXh0SG9sZGVyLmgKICAgICB5YXJyL1lhcnJQYXJz
ZXIuaAogICAgIHlhcnIvWWFyclBhdHRlcm4uaAogICAgIHlhcnIvWWFyclVuaWNvZGVQcm9wZXJ0
aWVzLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYjBjYTFjYjU1MDc5OGYyNzlh
NTk0NzQ4M2M4OWQ0NGUzMWY5NTQ4MC4uMGQxY2IzMjZiZTcwNWQ3MzM5MWQxNWVmNDdlNzRhOTk0
ZmMxODk4YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE5MjksNiArMTkyOSw3
IEBACiAJCUUzRDM1MTVGMjQxQjg5RDcwMDhEQzE2RSAvKiBNYXJrZWRKU1ZhbHVlUmVmQXJyYXku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDM1MTVE
MjQxQjg5Q0UwMDhEQzE2RSAvKiBNYXJrZWRKU1ZhbHVlUmVmQXJyYXkuaCAqLzsgfTsKIAkJRTNE
ODc3NzQxRTY1QzBBMDAwQkU5NDVBIC8qIEJ5dGVjb2RlRHVtcGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0Q4Nzc3MjFFNjVDMDg5MDBCRTk0NUEg
LyogQnl0ZWNvZGVEdW1wZXIuaCAqLzsgfTsKIAkJRTNFRTEzNzYyMUZCRDQzNTAwRDgzQzRCIC8q
IEVycm9yVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTNFRTEzNzQyMUZCRDQzNDAwRDgzQzRCIC8qIEVycm9yVHlwZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzRjBGQzk1MjZBMTFCNEEwMDk5
RkZBMCAvKiBZYXJyTWF0Y2hpbmdDb250ZXh0SG9sZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0YwRkM5NDI2QTExQjRBMDA5OUZGQTAgLyogWWFy
ck1hdGNoaW5nQ29udGV4dEhvbGRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUUzRjIxOTM3MjRDNzg4MkYwMDNBRTQ1MyAvKiBJbnRsU2VnbWVu
dEl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFM0YyMTkzMTI0Qzc4ODI5MDAzQUU0NTMgLyogSW50bFNlZ21lbnRJdGVyYXRvci5oICovOyB9
OwogCQlFM0YyMTkzODI0Qzc4ODMxMDAzQUU0NTMgLyogSW50bFNlZ21lbnRJdGVyYXRvclByb3Rv
dHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNG
MjE5MkYyNEM3ODgyOTAwM0FFNDUzIC8qIEludGxTZWdtZW50SXRlcmF0b3JQcm90b3R5cGUuaCAq
LzsgfTsKIAkJRTNGMjE5MzkyNEM3ODgzNDAwM0FFNDUzIC8qIEludGxTZWdtZW50cy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNGMjE5MzMyNEM3ODgy
QTAwM0FFNDUzIC8qIEludGxTZWdtZW50cy5oICovOyB9OwpAQCAtNTIzMCw2ICs1MjMxLDcgQEAK
IAkJRTNFOUY4RDUyNUQ3NTgyRjAwRjlGODRCIC8qIHByb2Nlc3MtZW50aXRsZW1lbnRzLnNoICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC5zY3JpcHQuc2g7IHBhdGggPSAicHJvY2Vzcy1lbnRpdGxlbWVudHMuc2gi
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0VFMTM3NDIxRkJENDM0MDBEODNDNEIg
LyogRXJyb3JUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVycm9yVHlw
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0VFMTM3NTIxRkJENDM0MDBEODND
NEIgLyogRXJyb3JUeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEVycm9yVHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzRjBGQzk0MjZB
MTFCNEEwMDk5RkZBMCAvKiBZYXJyTWF0Y2hpbmdDb250ZXh0SG9sZGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFlhcnJNYXRjaGluZ0NvbnRleHRIb2xkZXIuaDsgcGF0aCA9
IHlhcnIvWWFyck1hdGNoaW5nQ29udGV4dEhvbGRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFM0YyMTkyRjI0Qzc4ODI5MDAzQUU0NTMgLyogSW50bFNlZ21lbnRJdGVyYXRvclBy
b3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzRjIxOTMwMjRDNzg4MjkwMDNBRTQ1MyAv
KiBJbnRsU2VnbWVudEl0ZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludGxTZWdtZW50
SXRlcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0YyMTkzMTI0Qzc4
ODI5MDAzQUU0NTMgLyogSW50bFNlZ21lbnRJdGVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRs
U2VnbWVudEl0ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04MDgxLDYg
KzgwODMsNyBAQAogCQkJCTg2NzA0QjdFMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJySW50ZXJwcmV0
ZXIuaCAqLywKIAkJCQk4NjcwNEI3RjEyREJBMzM3MDBBOUZFN0IgLyogWWFyckpJVC5jcHAgKi8s
CiAJCQkJODY3MDRCODAxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJKSVQuaCAqLywKKwkJCQlFM0Yw
RkM5NDI2QTExQjRBMDA5OUZGQTAgLyogWWFyck1hdGNoaW5nQ29udGV4dEhvbGRlci5oICovLAog
CQkJCTg2NzA0QjgxMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGFyc2VyLmggKi8sCiAJCQkJODY3
MDRCODIxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmNwcCAqLywKIAkJCQk4NjcwNEI4
MzEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uaCAqLywKQEAgLTEwODQzLDYgKzEwODQ2
LDcgQEAKIAkJCQlBM0ZGOUJDNzIyMzQ3NDkxMDBCMUE5QUIgLyogWWFyckZsYWdzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk4NjcwNEI4NTEyREJBMzM3MDBBOUZFN0IgLyogWWFyckludGVycHJldGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjcwNEI4NzEyREJBMzM3MDBBOUZFN0IgLyogWWFyckpJ
VC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTNGMEZDOTUyNkExMUI0QTAwOTlGRkEwIC8qIFlhcnJN
YXRjaGluZ0NvbnRleHRIb2xkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2NzA0Qjg4MTJEQkEz
MzcwMEE5RkU3QiAvKiBZYXJyUGFyc2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjcwNEI4QTEy
REJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uaCBpbiBIZWFkZXJzICovLAogCQkJCTg2NzA0
QjQzMTJEQjhBODEwMEE5RkU3QiAvKiBZYXJyU3ludGF4Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcAppbmRleCA4YzM4MmQ0MzY5
OWRhNTI4MWYyM2UwZWVlMzE1ZWI1Mjg1ZTMwZTdhLi5jMTVlNGYzNjgyOGE5ZjkxZjM5YjcyM2Mz
Yjg0NDA3YjQyODM1NjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5j
cHAKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAxLCAyMDA0
IEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChjKSAyMDA3LTIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoYykgMjAw
Ny0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICBDb3B5cmlnaHQgKEMp
IDIwMDkgVG9yY2ggTW9iaWxlLCBJbmMuCiAgKiAgQ29weXJpZ2h0IChDKSAyMDEwIFBldGVyIFZh
cmdhIChwdmFyZ2FAaW5mLnUtc3plZ2VkLmh1KSwgVW5pdmVyc2l0eSBvZiBTemVnZWQKICAqCkBA
IC0yMyw2ICsyMyw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUmVnRXhwLmgi
CiAKKyNpbmNsdWRlICJMZXhlci5oIgogI2luY2x1ZGUgIlJlZ0V4cENhY2hlLmgiCiAjaW5jbHVk
ZSAiUmVnRXhwSW5saW5lcy5oIgogI2luY2x1ZGUgIllhcnJKSVQuaCIKQEAgLTM5Miw3ICszOTMs
NyBAQCB2b2lkIFJlZ0V4cDo6bWF0Y2hDb21wYXJlV2l0aEludGVycHJldGVyKGNvbnN0IFN0cmlu
ZyYgcywgaW50IHN0YXJ0T2Zmc2V0LCBpbnQqCiAgICAgICAgICAgICBkaWZmZXJlbmNlcysrOwog
CiAgICAgaWYgKGRpZmZlcmVuY2VzKSB7Ci0gICAgICAgIGRhdGFMb2dGKCJSZWdFeHAgRGlzY3Jl
cGVuY3kgZm9yIC8lcy9cbiAgICBzdHJpbmcgaW5wdXQgIiwgcGF0dGVybigpLnV0ZjgoKS5kYXRh
KCkpOworICAgICAgICBkYXRhTG9nKCJSZWdFeHAgRGlzY3JlcGVuY3kgZm9yICIsIHRvU291cmNl
U3RyaW5nKCksICJcbiAgICBzdHJpbmcgaW5wdXQgIik7CiAgICAgICAgIHVuc2lnbmVkIHNlZ21l
bnRMZW4gPSBzLmxlbmd0aCgpIC0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0YXJ0T2Zmc2V0KTsK
IAogICAgICAgICBkYXRhTG9nRigoc2VnbWVudExlbiA8IDE1MCkgPyAiXCIlc1wiXG4iIDogIlwi
JTE0OHMuLi5cIlxuIiwgcy51dGY4KCkuZGF0YSgpICsgc3RhcnRPZmZzZXQpOwpAQCAtNDY4LDE0
ICs0NjksMTI3IEBAIHZvaWQgUmVnRXhwOjptYXRjaENvbXBhcmVXaXRoSW50ZXJwcmV0ZXIoY29u
c3QgU3RyaW5nJiBzLCBpbnQgc3RhcnRPZmZzZXQsIGludCoKICAgICB9CiAjZW5kaWYKIAotc3Rh
dGljIENTdHJpbmcgcmVnZXhwVG9Tb3VyY2VTdHJpbmcoY29uc3QgUmVnRXhwKiByZWdFeHApCit2
b2lkIFJlZ0V4cDo6ZHVtcFRvU3RyZWFtKGNvbnN0IEpTQ2VsbCogY2VsbCwgUHJpbnRTdHJlYW0m
IG91dCkKIHsKLSAgICByZXR1cm4gdG9DU3RyaW5nKCIvIiwgcmVnRXhwLT5wYXR0ZXJuKCkuaW1w
bCgpLCAiLyIsIFlhcnI6OmZsYWdzU3RyaW5nKHJlZ0V4cC0+ZmxhZ3MoKSkuZGF0YSgpKTsKKyAg
ICBvdXQucHJpbnQoanNDYXN0PGNvbnN0IFJlZ0V4cCo+KGNlbGwpLT50b1NvdXJjZVN0cmluZygp
KTsKIH0KIAotdm9pZCBSZWdFeHA6OmR1bXBUb1N0cmVhbShjb25zdCBKU0NlbGwqIGNlbGwsIFBy
aW50U3RyZWFtJiBvdXQpCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK3N0YXRp
YyBpbmxpbmUgdm9pZCBhcHBlbmRMaW5lVGVybWluYXRvckVzY2FwZShTdHJpbmdCdWlsZGVyJiwg
Q2hhcmFjdGVyVHlwZSk7CisKK3RlbXBsYXRlIDw+CitpbmxpbmUgdm9pZCBhcHBlbmRMaW5lVGVy
bWluYXRvckVzY2FwZTxMQ2hhcj4oU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgTENoYXIgbGluZVRl
cm1pbmF0b3IpCit7CisgICAgaWYgKGxpbmVUZXJtaW5hdG9yID09ICdcbicpCisgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKCduJyk7CisgICAgZWxzZQorICAgICAgICBidWlsZGVyLmFwcGVuZCgncicp
OworfQorCit0ZW1wbGF0ZSA8PgoraW5saW5lIHZvaWQgYXBwZW5kTGluZVRlcm1pbmF0b3JFc2Nh
cGU8VUNoYXI+KFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIFVDaGFyIGxpbmVUZXJtaW5hdG9yKQor
eworICAgIGlmIChsaW5lVGVybWluYXRvciA9PSAnXG4nKQorICAgICAgICBidWlsZGVyLmFwcGVu
ZCgnbicpOworICAgIGVsc2UgaWYgKGxpbmVUZXJtaW5hdG9yID09ICdccicpCisgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKCdyJyk7CisgICAgZWxzZSBpZiAobGluZVRlcm1pbmF0b3IgPT0gMHgyMDI4
KQorICAgICAgICBidWlsZGVyLmFwcGVuZCgidTIwMjgiKTsKKyAgICBlbHNlCisgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKCJ1MjAyOSIpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFjdGVy
VHlwZT4KK3N0YXRpYyBpbmxpbmUgU3RyaW5nIGVzY2FwZVBhdHRlcm4oY29uc3QgU3RyaW5nJiBw
YXR0ZXJuLCBjb25zdCBDaGFyYWN0ZXJUeXBlKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgp
Cit7CisgICAgYm9vbCBwcmV2aW91c0NoYXJhY3Rlcldhc0JhY2tzbGFzaCA9IGZhbHNlOworICAg
IGJvb2wgaW5CcmFja2V0cyA9IGZhbHNlOworICAgIGJvb2wgc2hvdWxkRXNjYXBlID0gZmFsc2U7
CisKKyAgICAvLyAxNS4xMC42LjQgc3BlY2lmaWVzIHRoYXQgUmVnRXhwLnByb3RvdHlwZS50b1N0
cmluZyBtdXN0IHJldHVybiAnLycgKyBzb3VyY2UgKyAnLycsCisgICAgLy8gYW5kIGFsc28gc3Rh
dGVzIHRoYXQgdGhlIHJlc3VsdCBtdXN0IGJlIGEgdmFsaWQgUmVndWxhckV4cHJlc3Npb25MaXRl
cmFsLiAnLy8nIGlzCisgICAgLy8gbm90IGEgdmFsaWQgUmVndWxhckV4cHJlc3Npb25MaXRlcmFs
IChzaW5jZSBpdCBpcyBhIHNpbmdsZSBsaW5lIGNvbW1lbnQpLCBhbmQgaGVuY2UKKyAgICAvLyBz
b3VyY2UgY2Fubm90IGV2ZXIgdmFsaWRseSBiZSAiIi4gSWYgdGhlIHNvdXJjZSBpcyBlbXB0eSwg
cmV0dXJuIGEgZGlmZmVyZW50IFBhdHRlcm4KKyAgICAvLyB0aGF0IHdvdWxkIG1hdGNoIHRoZSBz
YW1lIHRoaW5nLgorICAgIGlmICghbGVuZ3RoKQorICAgICAgICByZXR1cm4gIig/OikiX3M7CisK
KyAgICAvLyBlYXJseSByZXR1cm4gZm9yIHN0cmluZ3MgdGhhdCBkb24ndCBjb250YWluIGEgZm9y
d2FyZHMgc2xhc2ggYW5kIExpbmVUZXJtaW5hdG9yCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgIENoYXJhY3RlclR5cGUgY2ggPSBjaGFyYWN0ZXJz
W2ldOworICAgICAgICBpZiAoIXByZXZpb3VzQ2hhcmFjdGVyV2FzQmFja3NsYXNoKSB7CisgICAg
ICAgICAgICBpZiAoaW5CcmFja2V0cykgeworICAgICAgICAgICAgICAgIGlmIChjaCA9PSAnXScp
CisgICAgICAgICAgICAgICAgICAgIGluQnJhY2tldHMgPSBmYWxzZTsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKGNoID09ICcvJykgeworICAgICAgICAgICAgICAg
ICAgICBzaG91bGRFc2NhcGUgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGNoID09ICdbJykKKyAgICAgICAg
ICAgICAgICAgICAgaW5CcmFja2V0cyA9IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KworICAgICAgICBpZiAoTGV4ZXI8Q2hhcmFjdGVyVHlwZT46OmlzTGluZVRlcm1pbmF0b3IoY2gp
KSB7CisgICAgICAgICAgICBzaG91bGRFc2NhcGUgPSB0cnVlOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKworICAgICAgICBpZiAocHJldmlvdXNDaGFyYWN0ZXJXYXNCYWNrc2xhc2gp
CisgICAgICAgICAgICBwcmV2aW91c0NoYXJhY3Rlcldhc0JhY2tzbGFzaCA9IGZhbHNlOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBwcmV2aW91c0NoYXJhY3Rlcldhc0JhY2tzbGFzaCA9IGNo
ID09ICdcXCc7CisgICAgfQorCisgICAgaWYgKCFzaG91bGRFc2NhcGUpCisgICAgICAgIHJldHVy
biBwYXR0ZXJuOworCisgICAgcHJldmlvdXNDaGFyYWN0ZXJXYXNCYWNrc2xhc2ggPSBmYWxzZTsK
KyAgICBpbkJyYWNrZXRzID0gZmFsc2U7CisgICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7CisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgIENoYXJhY3Rl
clR5cGUgY2ggPSBjaGFyYWN0ZXJzW2ldOworICAgICAgICBpZiAoIXByZXZpb3VzQ2hhcmFjdGVy
V2FzQmFja3NsYXNoKSB7CisgICAgICAgICAgICBpZiAoaW5CcmFja2V0cykgeworICAgICAgICAg
ICAgICAgIGlmIChjaCA9PSAnXScpCisgICAgICAgICAgICAgICAgICAgIGluQnJhY2tldHMgPSBm
YWxzZTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKGNoID09ICcv
JykKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnXFwnKTsKKyAgICAgICAgICAg
ICAgICBlbHNlIGlmIChjaCA9PSAnWycpCisgICAgICAgICAgICAgICAgICAgIGluQnJhY2tldHMg
PSB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gZXNjYXBlIExp
bmVUZXJtaW5hdG9yCisgICAgICAgIGlmIChMZXhlcjxDaGFyYWN0ZXJUeXBlPjo6aXNMaW5lVGVy
bWluYXRvcihjaCkpIHsKKyAgICAgICAgICAgIGlmICghcHJldmlvdXNDaGFyYWN0ZXJXYXNCYWNr
c2xhc2gpCisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnXFwnKTsKKworICAgICAgICAg
ICAgYXBwZW5kTGluZVRlcm1pbmF0b3JFc2NhcGU8Q2hhcmFjdGVyVHlwZT4ocmVzdWx0LCBjaCk7
CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChjaCk7CisKKyAgICAg
ICAgaWYgKHByZXZpb3VzQ2hhcmFjdGVyV2FzQmFja3NsYXNoKQorICAgICAgICAgICAgcHJldmlv
dXNDaGFyYWN0ZXJXYXNCYWNrc2xhc2ggPSBmYWxzZTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgcHJldmlvdXNDaGFyYWN0ZXJXYXNCYWNrc2xhc2ggPSBjaCA9PSAnXFwnOworICAgIH0KKwor
ICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKK30KKworU3RyaW5nIFJlZ0V4cDo6ZXNjYXBl
ZFBhdHRlcm4oKSBjb25zdAoreworICAgIGlmIChtX3BhdHRlcm5TdHJpbmcuaXM4Qml0KCkpCisg
ICAgICAgIHJldHVybiBlc2NhcGVQYXR0ZXJuKG1fcGF0dGVyblN0cmluZywgbV9wYXR0ZXJuU3Ry
aW5nLmNoYXJhY3RlcnM4KCksIG1fcGF0dGVyblN0cmluZy5sZW5ndGgoKSk7CisgICAgcmV0dXJu
IGVzY2FwZVBhdHRlcm4obV9wYXR0ZXJuU3RyaW5nLCBtX3BhdHRlcm5TdHJpbmcuY2hhcmFjdGVy
czE2KCksIG1fcGF0dGVyblN0cmluZy5sZW5ndGgoKSk7Cit9CisKK1N0cmluZyBSZWdFeHA6OnRv
U291cmNlU3RyaW5nKCkgY29uc3QKIHsKLSAgICBvdXQucHJpbnQocmVnZXhwVG9Tb3VyY2VTdHJp
bmcoanNDYXN0PGNvbnN0IFJlZ0V4cCo+KGNlbGwpKSk7CisgICAgcmV0dXJuIG1ha2VTdHJpbmco
Jy8nLCBlc2NhcGVkUGF0dGVybigpLCAnLycsIFlhcnI6OmZsYWdzU3RyaW5nKGZsYWdzKCkpLmRh
dGEoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHAuaAppbmRleCA0ZTM3ZDlmZjdmNmY5MDkzMGVmZjdkMzdhMWUxMWMxNzA5YWM0Yzgy
Li5mZjg2ZmM2YTBlMWNkOWVhOWI0NTBkMGVlNWU0YzNhNGZiY2Y3ZWMzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHAuaApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJp
Z2h0IChDKSAxOTk5LTIwMDAgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5
cmlnaHQgKEMpIDIwMDctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAg
Q29weXJpZ2h0IChDKSAyMDA3LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICogIENvcHlyaWdodCAoQykgMjAwOSBUb3JjaCBNb2JpbGUsIEluYy4KICAqCiAgKiAgVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpA
QCAtMTM3LDYgKzEzNywxMCBAQCBjbGFzcyBSZWdFeHAgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsK
IAogICAgIFJlZ0V4cEtleSBrZXkoKSB7IHJldHVybiBSZWdFeHBLZXkobV9mbGFncywgbV9wYXR0
ZXJuU3RyaW5nKTsgfQogCisgICAgU3RyaW5nIGVzY2FwZWRQYXR0ZXJuKCkgY29uc3Q7CisKKyAg
ICBTdHJpbmcgdG9Tb3VyY2VTdHJpbmcoKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBmcmllbmQg
Y2xhc3MgUmVnRXhwQ2FjaGU7CiAgICAgUmVnRXhwKFZNJiwgY29uc3QgU3RyaW5nJiwgT3B0aW9u
U2V0PFlhcnI6OkZsYWdzPik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9SZWdFeHBJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHBJbmxpbmVzLmgKaW5kZXggMzI2ZTdhZWNkZDBkYmY2ZWZmNzZmMmQxNTEzZGYxY2ExNjA0OTA0
My4uNmQ0NGJhOWEwYTY1ZTU2ZTJjMTliOTQwMDhlMmNiODlmNDAwYzg3MCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwSW5saW5lcy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cElubGluZXMuaApAQCAtMjcsNiArMjcsNyBA
QAogI2luY2x1ZGUgIllhcnIuaCIKICNpbmNsdWRlICJZYXJySW50ZXJwcmV0ZXIuaCIKICNpbmNs
dWRlICJZYXJySklULmgiCisjaW5jbHVkZSAiWWFyck1hdGNoaW5nQ29udGV4dEhvbGRlci5oIgog
CiAjZGVmaW5lIFJFR0VYUF9GVU5DX1RFU1RfREFUQV9HRU4gMAogCkBAIC0xMzEsNyArMTMyLDcg
QEAgQUxXQVlTX0lOTElORSBpbnQgUmVnRXhwOjptYXRjaElubGluZShKU0dsb2JhbE9iamVjdCog
bnVsbE9yR2xvYmFsT2JqZWN0LCBWTSYgdm0KICAgICBpZiAobV9zdGF0ZSA9PSBKSVRDb2RlKSB7
CiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChtX3JlZ0V4cEpJVENvZGUpOwotICAgICAg
ICAgICAgWWFycjo6TWF0Y2hpbmdDb250ZXh0SG9sZGVyIHJlZ0V4cENvbnRleHQodm0sIG1fcmVn
RXhwSklUQ29kZS5nZXQoKSwgbWF0Y2hGcm9tKTsKKyAgICAgICAgICAgIFlhcnI6Ok1hdGNoaW5n
Q29udGV4dEhvbGRlciByZWdFeHBDb250ZXh0KHZtLCBtX3JlZ0V4cEpJVENvZGUuZ2V0KCksIHRo
aXMsIG1hdGNoRnJvbSk7CiAKICAgICAgICAgICAgIGlmIChzLmlzOEJpdCgpKQogICAgICAgICAg
ICAgICAgIHJlc3VsdCA9IG1fcmVnRXhwSklUQ29kZS0+ZXhlY3V0ZShzLmNoYXJhY3RlcnM4KCks
IHN0YXJ0T2Zmc2V0LCBzLmxlbmd0aCgpLCBvZmZzZXRWZWN0b3IsIHJlZ0V4cENvbnRleHQpLnN0
YXJ0OwpAQCAtMTQ0LDcgKzE0NSwxMCBAQCBBTFdBWVNfSU5MSU5FIGludCBSZWdFeHA6Om1hdGNo
SW5saW5lKEpTR2xvYmFsT2JqZWN0KiBudWxsT3JHbG9iYWxPYmplY3QsIFZNJiB2bQogICAgICAg
ICAgICAgYnl0ZUNvZGVDb21waWxlSWZOZWNlc3NhcnkoJnZtKTsKICAgICAgICAgICAgIGlmICht
X3N0YXRlID09IFBhcnNlRXJyb3IpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3Io
KTsKLSAgICAgICAgICAgIHJlc3VsdCA9IFlhcnI6OmludGVycHJldChtX3JlZ0V4cEJ5dGVjb2Rl
LmdldCgpLCBzLCBzdGFydE9mZnNldCwgcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCo+KG9mZnNl
dFZlY3RvcikpOworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIFlhcnI6Ok1hdGNoaW5n
Q29udGV4dEhvbGRlciByZWdFeHBDb250ZXh0KHZtLCBudWxscHRyLCB0aGlzLCBtYXRjaEZyb20p
OworICAgICAgICAgICAgICAgIHJlc3VsdCA9IFlhcnI6OmludGVycHJldChtX3JlZ0V4cEJ5dGVj
b2RlLmdldCgpLCBzLCBzdGFydE9mZnNldCwgcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCo+KG9m
ZnNldFZlY3RvcikpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAKICNpZiBFTkFCTEUoWUFS
Ul9KSVRfREVCVUcpCkBAIC0xNTcsNyArMTYxLDEwIEBAIEFMV0FZU19JTkxJTkUgaW50IFJlZ0V4
cDo6bWF0Y2hJbmxpbmUoSlNHbG9iYWxPYmplY3QqIG51bGxPckdsb2JhbE9iamVjdCwgVk0mIHZt
CiAjZW5kaWYKICAgICB9IGVsc2UKICNlbmRpZgorICAgIHsKKyAgICAgICAgWWFycjo6TWF0Y2hp
bmdDb250ZXh0SG9sZGVyIHJlZ0V4cENvbnRleHQodm0sIG51bGxwdHIsIHRoaXMsIG1hdGNoRnJv
bSk7CiAgICAgICAgIHJlc3VsdCA9IFlhcnI6OmludGVycHJldChtX3JlZ0V4cEJ5dGVjb2RlLmdl
dCgpLCBzLCBzdGFydE9mZnNldCwgcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCo+KG9mZnNldFZl
Y3RvcikpOworICAgIH0KIAogICAgIC8vIEZJWE1FOiBUaGUgWUFSUiBlbmdpbmUgc2hvdWxkIGhh
bmRsZSB1bnNpZ25lZCBvciBzaXplX3QgbGVuZ3RoIG1hdGNoZXMuCiAgICAgLy8gVGhlIFlBUlIg
SW50ZXJwcmV0ZXIgaXMgInVuc2lnbmVkIiBjbGVhbiwgd2hpbGUgdGhlIFlBUlIgSklUIGhhc24n
dCBiZWVuIGFkZHJlc3NlZC4KQEAgLTI1NSwxMiArMjYyLDExIEBAIEFMV0FZU19JTkxJTkUgTWF0
Y2hSZXN1bHQgUmVnRXhwOjptYXRjaElubGluZShKU0dsb2JhbE9iamVjdCogbnVsbE9yR2xvYmFs
T2JqZWN0CiAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCk7CiAKICNpZiBFTkFCTEUoWUFSUl9K
SVQpCi0gICAgTWF0Y2hSZXN1bHQgcmVzdWx0OwotCiAgICAgaWYgKG1fc3RhdGUgPT0gSklUQ29k
ZSkgeworICAgICAgICBNYXRjaFJlc3VsdCByZXN1bHQ7CiAgICAgICAgIHsKICAgICAgICAgICAg
IEFTU0VSVChtX3JlZ0V4cEpJVENvZGUpOwotICAgICAgICAgICAgWWFycjo6TWF0Y2hpbmdDb250
ZXh0SG9sZGVyIHJlZ0V4cENvbnRleHQodm0sIG1fcmVnRXhwSklUQ29kZS5nZXQoKSwgbWF0Y2hG
cm9tKTsKKyAgICAgICAgICAgIFlhcnI6Ok1hdGNoaW5nQ29udGV4dEhvbGRlciByZWdFeHBDb250
ZXh0KHZtLCBtX3JlZ0V4cEpJVENvZGUuZ2V0KCksIHRoaXMsIG1hdGNoRnJvbSk7CiAKICAgICAg
ICAgICAgIGlmIChzLmlzOEJpdCgpKQogICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1fcmVnRXhw
SklUQ29kZS0+ZXhlY3V0ZShzLmNoYXJhY3RlcnM4KCksIHN0YXJ0T2Zmc2V0LCBzLmxlbmd0aCgp
LCByZWdFeHBDb250ZXh0KTsKQEAgLTI4NCwxOSArMjkwLDIzIEBAIEFMV0FZU19JTkxJTkUgTWF0
Y2hSZXN1bHQgUmVnRXhwOjptYXRjaElubGluZShKU0dsb2JhbE9iamVjdCogbnVsbE9yR2xvYmFs
T2JqZWN0CiAKICAgICBpbnQgb2Zmc2V0VmVjdG9yU2l6ZSA9IChtX251bVN1YnBhdHRlcm5zICsg
MSkgKiAyOwogICAgIGludCogb2Zmc2V0VmVjdG9yOworICAgIGludCByZXN1bHQ7CiAgICAgVmVj
dG9yPGludCwgMzI+IG5vblJldHVybmVkT3ZlY3RvcjsKICAgICBub25SZXR1cm5lZE92ZWN0b3Iu
Z3JvdyhvZmZzZXRWZWN0b3JTaXplKTsKICAgICBvZmZzZXRWZWN0b3IgPSBub25SZXR1cm5lZE92
ZWN0b3IuZGF0YSgpOwotICAgIGludCByID0gWWFycjo6aW50ZXJwcmV0KG1fcmVnRXhwQnl0ZWNv
ZGUuZ2V0KCksIHMsIHN0YXJ0T2Zmc2V0LCByZWludGVycHJldF9jYXN0PHVuc2lnbmVkKj4ob2Zm
c2V0VmVjdG9yKSk7CisgICAgeworICAgICAgICBZYXJyOjpNYXRjaGluZ0NvbnRleHRIb2xkZXIg
cmVnRXhwQ29udGV4dCh2bSwgbnVsbHB0ciwgdGhpcywgbWF0Y2hGcm9tKTsKKyAgICAgICAgcmVz
dWx0ID0gWWFycjo6aW50ZXJwcmV0KG1fcmVnRXhwQnl0ZWNvZGUuZ2V0KCksIHMsIHN0YXJ0T2Zm
c2V0LCByZWludGVycHJldF9jYXN0PHVuc2lnbmVkKj4ob2Zmc2V0VmVjdG9yKSk7CisgICAgfQog
I2lmIFJFR0VYUF9GVU5DX1RFU1RfREFUQV9HRU4KICAgICBSZWdFeHBGdW5jdGlvbmFsVGVzdENv
bGxlY3Rvcjo6Z2V0KCktPm91dHB1dE9uZVRlc3QodGhpcywgcywgc3RhcnRPZmZzZXQsIG9mZnNl
dFZlY3RvciwgcmVzdWx0KTsKICNlbmRpZgogCi0gICAgaWYgKHIgPj0gMCkgeworICAgIGlmIChy
ZXN1bHQgPj0gMCkgewogI2lmIEVOQUJMRShSRUdFWFBfVFJBQ0lORykKICAgICAgICAgbV9ydE1h
dGNoT25seUZvdW5kQ291bnQrKzsKICNlbmRpZgotICAgICAgICByZXR1cm4gTWF0Y2hSZXN1bHQo
ciwgcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCo+KG9mZnNldFZlY3RvcilbMV0pOworICAgICAg
ICByZXR1cm4gTWF0Y2hSZXN1bHQocmVzdWx0LCByZWludGVycHJldF9jYXN0PHVuc2lnbmVkKj4o
b2Zmc2V0VmVjdG9yKVsxXSk7CiAgICAgfQogCiAgICAgcmV0dXJuIE1hdGNoUmVzdWx0OjpmYWls
ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFBy
b3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5
cGUuY3BwCmluZGV4IGViZjVmMDZjN2RjN2JkNTA3MGNlYzYyZGE0OGM1M2Y5NzZlZGI4Y2QuLjZj
OTlkMjNhY2I5NWUxYTBmYjI5YzFkODVjZjhlYjY4ZjY3Y2I1NmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcApAQCAtMSw2ICsxLDYg
QEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDAgSGFycmkgUG9ydGVuIChwb3J0ZW5A
a2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMCBBcHBsZSBJbmMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMjEgQXBwbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMjcsNyArMjcsNiBAQAog
I2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2lu
Y2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgotI2luY2x1ZGUgIkxleGVyLmgiCiAjaW5jbHVkZSAi
UmVnRXhwT2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVnRXhwT2JqZWN0SW5saW5lcy5oIgogI2luY2x1
ZGUgIlN0cmluZ1JlY3Vyc2lvbkNoZWNrZXIuaCIKQEAgLTMzOSwxMTMgKzMzOCw2IEBAIEpTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTihyZWdFeHBQcm90b0dldHRlckZsYWdzLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKHZt
LCBmbGFncy5kYXRhKCkpKTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+
Ci1zdGF0aWMgaW5saW5lIHZvaWQgYXBwZW5kTGluZVRlcm1pbmF0b3JFc2NhcGUoU3RyaW5nQnVp
bGRlciYsIENoYXJhY3RlclR5cGUpOwotCi10ZW1wbGF0ZSA8PgotaW5saW5lIHZvaWQgYXBwZW5k
TGluZVRlcm1pbmF0b3JFc2NhcGU8TENoYXI+KFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIExDaGFy
IGxpbmVUZXJtaW5hdG9yKQotewotICAgIGlmIChsaW5lVGVybWluYXRvciA9PSAnXG4nKQotICAg
ICAgICBidWlsZGVyLmFwcGVuZCgnbicpOwotICAgIGVsc2UKLSAgICAgICAgYnVpbGRlci5hcHBl
bmQoJ3InKTsKLX0KLQotdGVtcGxhdGUgPD4KLWlubGluZSB2b2lkIGFwcGVuZExpbmVUZXJtaW5h
dG9yRXNjYXBlPFVDaGFyPihTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBVQ2hhciBsaW5lVGVybWlu
YXRvcikKLXsKLSAgICBpZiAobGluZVRlcm1pbmF0b3IgPT0gJ1xuJykKLSAgICAgICAgYnVpbGRl
ci5hcHBlbmQoJ24nKTsKLSAgICBlbHNlIGlmIChsaW5lVGVybWluYXRvciA9PSAnXHInKQotICAg
ICAgICBidWlsZGVyLmFwcGVuZCgncicpOwotICAgIGVsc2UgaWYgKGxpbmVUZXJtaW5hdG9yID09
IDB4MjAyOCkKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoInUyMDI4Iik7Ci0gICAgZWxzZQotICAg
ICAgICBidWlsZGVyLmFwcGVuZCgidTIwMjkiKTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIENo
YXJhY3RlclR5cGU+Ci1zdGF0aWMgaW5saW5lIEpTVmFsdWUgcmVnRXhwUHJvdG9HZXR0ZXJTb3Vy
Y2VJbnRlcm5hbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTdHJpbmcmIHBh
dHRlcm4sIGNvbnN0IENoYXJhY3RlclR5cGUqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkK
LXsKLSAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgYm9vbCBwcmV2aW91c0No
YXJhY3Rlcldhc0JhY2tzbGFzaCA9IGZhbHNlOwotICAgIGJvb2wgaW5CcmFja2V0cyA9IGZhbHNl
OwotICAgIGJvb2wgc2hvdWxkRXNjYXBlID0gZmFsc2U7Ci0KLSAgICAvLyAxNS4xMC42LjQgc3Bl
Y2lmaWVzIHRoYXQgUmVnRXhwLnByb3RvdHlwZS50b1N0cmluZyBtdXN0IHJldHVybiAnLycgKyBz
b3VyY2UgKyAnLycsCi0gICAgLy8gYW5kIGFsc28gc3RhdGVzIHRoYXQgdGhlIHJlc3VsdCBtdXN0
IGJlIGEgdmFsaWQgUmVndWxhckV4cHJlc3Npb25MaXRlcmFsLiAnLy8nIGlzCi0gICAgLy8gbm90
IGEgdmFsaWQgUmVndWxhckV4cHJlc3Npb25MaXRlcmFsIChzaW5jZSBpdCBpcyBhIHNpbmdsZSBs
aW5lIGNvbW1lbnQpLCBhbmQgaGVuY2UKLSAgICAvLyBzb3VyY2UgY2Fubm90IGV2ZXIgdmFsaWRs
eSBiZSAiIi4gSWYgdGhlIHNvdXJjZSBpcyBlbXB0eSwgcmV0dXJuIGEgZGlmZmVyZW50IFBhdHRl
cm4KLSAgICAvLyB0aGF0IHdvdWxkIG1hdGNoIHRoZSBzYW1lIHRoaW5nLgotICAgIGlmICghbGVu
Z3RoKQotICAgICAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKHZtLCAiKD86KSJfcyk7Ci0K
LSAgICAvLyBlYXJseSByZXR1cm4gZm9yIHN0cmluZ3MgdGhhdCBkb24ndCBjb250YWluIGEgZm9y
d2FyZHMgc2xhc2ggYW5kIExpbmVUZXJtaW5hdG9yCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgIENoYXJhY3RlclR5cGUgY2ggPSBjaGFyYWN0ZXJz
W2ldOwotICAgICAgICBpZiAoIXByZXZpb3VzQ2hhcmFjdGVyV2FzQmFja3NsYXNoKSB7Ci0gICAg
ICAgICAgICBpZiAoaW5CcmFja2V0cykgewotICAgICAgICAgICAgICAgIGlmIChjaCA9PSAnXScp
Ci0gICAgICAgICAgICAgICAgICAgIGluQnJhY2tldHMgPSBmYWxzZTsKLSAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKGNoID09ICcvJykgewotICAgICAgICAgICAgICAg
ICAgICBzaG91bGRFc2NhcGUgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKGNoID09ICdbJykKLSAgICAgICAg
ICAgICAgICAgICAgaW5CcmFja2V0cyA9IHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LQotICAgICAgICBpZiAoTGV4ZXI8Q2hhcmFjdGVyVHlwZT46OmlzTGluZVRlcm1pbmF0b3IoY2gp
KSB7Ci0gICAgICAgICAgICBzaG91bGRFc2NhcGUgPSB0cnVlOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAocHJldmlvdXNDaGFyYWN0ZXJXYXNCYWNrc2xhc2gp
Ci0gICAgICAgICAgICBwcmV2aW91c0NoYXJhY3Rlcldhc0JhY2tzbGFzaCA9IGZhbHNlOwotICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBwcmV2aW91c0NoYXJhY3Rlcldhc0JhY2tzbGFzaCA9IGNo
ID09ICdcXCc7Ci0gICAgfQotCi0gICAgaWYgKCFzaG91bGRFc2NhcGUpCi0gICAgICAgIHJldHVy
biBqc1N0cmluZyh2bSwgcGF0dGVybik7Ci0KLSAgICBwcmV2aW91c0NoYXJhY3Rlcldhc0JhY2tz
bGFzaCA9IGZhbHNlOwotICAgIGluQnJhY2tldHMgPSBmYWxzZTsKLSAgICBTdHJpbmdCdWlsZGVy
IHJlc3VsdDsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAg
ICAgICAgQ2hhcmFjdGVyVHlwZSBjaCA9IGNoYXJhY3RlcnNbaV07Ci0gICAgICAgIGlmICghcHJl
dmlvdXNDaGFyYWN0ZXJXYXNCYWNrc2xhc2gpIHsKLSAgICAgICAgICAgIGlmIChpbkJyYWNrZXRz
KSB7Ci0gICAgICAgICAgICAgICAgaWYgKGNoID09ICddJykKLSAgICAgICAgICAgICAgICAgICAg
aW5CcmFja2V0cyA9IGZhbHNlOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAg
ICBpZiAoY2ggPT0gJy8nKQotICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCdcXCcp
OwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNoID09ICdbJykKLSAgICAgICAgICAgICAgICAg
ICAgaW5CcmFja2V0cyA9IHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAg
ICAvLyBlc2NhcGUgTGluZVRlcm1pbmF0b3IKLSAgICAgICAgaWYgKExleGVyPENoYXJhY3RlclR5
cGU+Ojppc0xpbmVUZXJtaW5hdG9yKGNoKSkgewotICAgICAgICAgICAgaWYgKCFwcmV2aW91c0No
YXJhY3Rlcldhc0JhY2tzbGFzaCkKLSAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCdcXCcp
OwotCi0gICAgICAgICAgICBhcHBlbmRMaW5lVGVybWluYXRvckVzY2FwZTxDaGFyYWN0ZXJUeXBl
PihyZXN1bHQsIGNoKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5k
KGNoKTsKLQotICAgICAgICBpZiAocHJldmlvdXNDaGFyYWN0ZXJXYXNCYWNrc2xhc2gpCi0gICAg
ICAgICAgICBwcmV2aW91c0NoYXJhY3Rlcldhc0JhY2tzbGFzaCA9IGZhbHNlOwotICAgICAgICBl
bHNlCi0gICAgICAgICAgICBwcmV2aW91c0NoYXJhY3Rlcldhc0JhY2tzbGFzaCA9IGNoID09ICdc
XCc7Ci0gICAgfQotCi0gICAgcmV0dXJuIGpzU3RyaW5nKHZtLCByZXN1bHQudG9TdHJpbmcoKSk7
Ci19Ci0KIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihyZWdFeHBQcm90b0dldHRlclNvdXJjZSwg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKIHsK
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CkBAIC00NTksMTAgKzM1MSw3IEBAIEpT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTihyZWdFeHBQcm90b0dldHRlclNvdXJjZSwgKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJUaGUgUmVnRXhwLnByb3RvdHlwZS5zb3VyY2UgZ2V0dGVyIGNh
biBvbmx5IGJlIGNhbGxlZCBvbiBhIFJlZ0V4cCBvYmplY3QiX3MpOwogICAgIH0KIAotICAgIFN0
cmluZyBwYXR0ZXJuID0gcmVnZXhwLT5yZWdFeHAoKS0+cGF0dGVybigpOwotICAgIGlmIChwYXR0
ZXJuLmlzOEJpdCgpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlZ0V4cFByb3Rv
R2V0dGVyU291cmNlSW50ZXJuYWwoZ2xvYmFsT2JqZWN0LCBwYXR0ZXJuLCBwYXR0ZXJuLmNoYXJh
Y3RlcnM4KCksIHBhdHRlcm4ubGVuZ3RoKCkpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHJlZ0V4cFByb3RvR2V0dGVyU291cmNlSW50ZXJuYWwoZ2xvYmFsT2JqZWN0LCBwYXR0ZXJuLCBw
YXR0ZXJuLmNoYXJhY3RlcnMxNigpLCBwYXR0ZXJuLmxlbmd0aCgpKSk7CisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1N0cmluZyh2bSwgcmVnZXhwLT5yZWdFeHAoKS0+ZXNjYXBlZFBhdHRl
cm4oKSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04ocmVnRXhwUHJvdG9GdW5jU2Vh
cmNoRmFzdCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5n
UHJvZmlsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9m
aWxlci5jcHAKaW5kZXggNzNkYjYxYzRkZmI5M2U0YjQ1YjdiZjI3Y2FjMzk0MmI3NjI2NzM2Ni4u
YjI3ZThlM2Q2NGRlODZmMzVjYjQ2NzU4NTc0NmNlZmMzOWE5NWJhMiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHAKQEAgLTM2Niw2
ICszNjYsNyBAQCB2b2lkIFNhbXBsaW5nUHJvZmlsZXI6OnRha2VTYW1wbGUoU2Vjb25kcyYgc3Rh
Y2tUcmFjZVByb2Nlc3NpbmdUaW1lKQogICAgICAgICAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWU7
CiAgICAgICAgICAgICB2b2lkKiBtYWNoaW5lUEM7CiAgICAgICAgICAgICBib29sIHRvcEZyYW1l
SXNMTEludCA9IGZhbHNlOworICAgICAgICAgICAgUmVnRXhwKiByZWdFeHAgPSBudWxscHRyOwog
ICAgICAgICAgICAgdm9pZCogbGxpbnRQQzsKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg
ICBQbGF0Zm9ybVJlZ2lzdGVycyByZWdpc3RlcnM7CkBAIC0zODUsMTYgKzM4NiwxNiBAQCB2b2lk
IFNhbXBsaW5nUHJvZmlsZXI6OnRha2VTYW1wbGUoU2Vjb25kcyYgc3RhY2tUcmFjZVByb2Nlc3Np
bmdUaW1lKQogICAgICAgICAgICAgLy8gRklYTUU6IExldHMgaGF2ZSBhIHdheSBvZiBkZXRlY3Rp
bmcgd2hlbiB3ZSdyZSBwYXJzaW5nIGNvZGUuCiAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUyNzYxCiAgICAgICAgICAgICBpZiAoRXhlY3V0
YWJsZUFsbG9jYXRvcjo6c2luZ2xldG9uKCkuaXNWYWxpZEV4ZWN1dGFibGVNZW1vcnkoZXhlY3V0
YWJsZUFsbG9jYXRvckxvY2tlciwgbWFjaGluZVBDKSkgewotICAgICAgICAgICAgICAgIGlmICht
X3ZtLmlzRXhlY3V0aW5nSW5SZWdFeHBKSVQpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gRklY
TUU6IFdlJ3JlIGV4ZWN1dGluZyBhIHJlZ2V4cC4gTGV0cyBnYXRoZXIgbW9yZSBpbnRlcnN0aW5n
IGRhdGEuCi0gICAgICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNTI3MjkKKyAgICAgICAgICAgICAgICByZWdFeHAgPSBtX3ZtLm1fZXhl
Y3V0aW5nUmVnRXhwOworICAgICAgICAgICAgICAgIGlmIChyZWdFeHApCiAgICAgICAgICAgICAg
ICAgICAgIGNhbGxGcmFtZSA9IG1fdm0udG9wQ2FsbEZyYW1lOyAvLyBXZSBuZWVkIHRvIGRvIHRo
aXMgb3IgZWxzZSB3ZSdkIGZhaWwgb3VyIGJhY2t0cmFjZSB2YWxpZGF0aW9uIGIvYyB0aGlzIGlz
bid0IGEgSlMgZnJhbWUuCi0gICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIGlm
IChMTEludDo6aXNMTEludFBDKG1hY2hpbmVQQykpIHsKICAgICAgICAgICAgICAgICB0b3BGcmFt
ZUlzTExJbnQgPSB0cnVlOwogICAgICAgICAgICAgICAgIC8vIFdlJ3JlIG9rYXkgdG8gdGFrZSBh
IG5vcm1hbCBzdGFjayB0cmFjZSB3aGVuIHRoZSBQQwogICAgICAgICAgICAgICAgIC8vIGlzIGlu
IExMSW50IGNvZGUuCiAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIFJl
Z0V4cCBldmFsdWF0aW9uIGlzIGxlYWYuIFNvIGlmIFJlZ0V4cCBldmFsdWF0aW9uIGV4aXN0cywg
d2UgY2FuIHNheSBpdCBpcyBSZWdFeHAgZXZhbHVhdGlvbiBpcyB0aGUgdG9wIHVzZXItdmlzaWJs
ZSBmcmFtZS4KKyAgICAgICAgICAgICAgICByZWdFeHAgPSBtX3ZtLm1fZXhlY3V0aW5nUmVnRXhw
OwogICAgICAgICAgICAgICAgIC8vIFdlIHJlc29ydCB0byB0b3BDYWxsRnJhbWUgdG8gc2VlIGlm
IHdlIGNhbiBnZXQgYW55dGhpbmcKICAgICAgICAgICAgICAgICAvLyB1c2VmdWwuIFdlIHVzdWFs
bHkgZ2V0IGhlcmUgd2hlbiB3ZSdyZSBleGVjdXRpbmcgQyBjb2RlLgogICAgICAgICAgICAgICAg
IGNhbGxGcmFtZSA9IG1fdm0udG9wQ2FsbEZyYW1lOwpAQCAtNDM0LDcgKzQzNSw3IEBAIHZvaWQg
U2FtcGxpbmdQcm9maWxlcjo6dGFrZVNhbXBsZShTZWNvbmRzJiBzdGFja1RyYWNlUHJvY2Vzc2lu
Z1RpbWUpCiAgICAgICAgICAgICAgICAgICAgIHN0YWNrVHJhY2UudW5jaGVja2VkQXBwZW5kKGZy
YW1lKTsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBtX3VucHJvY2Vzc2Vk
U3RhY2tUcmFjZXMuYXBwZW5kKFVucHJvY2Vzc2VkU3RhY2tUcmFjZSB7IG5vd1RpbWUsIG1hY2hp
bmVQQywgdG9wRnJhbWVJc0xMSW50LCBsbGludFBDLCBXVEZNb3ZlKHN0YWNrVHJhY2UpIH0pOwor
ICAgICAgICAgICAgICAgIG1fdW5wcm9jZXNzZWRTdGFja1RyYWNlcy5hcHBlbmQoVW5wcm9jZXNz
ZWRTdGFja1RyYWNlIHsgbm93VGltZSwgbWFjaGluZVBDLCB0b3BGcmFtZUlzTExJbnQsIGxsaW50
UEMsIHJlZ0V4cCwgV1RGTW92ZShzdGFja1RyYWNlKSB9KTsKIAogICAgICAgICAgICAgICAgIGlm
IChkaWRSdW5PdXRPZlZlY3RvclNwYWNlKQogICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRG
cmFtZXMuZ3JvdyhtX2N1cnJlbnRGcmFtZXMuc2l6ZSgpICogMS4yNSk7CkBAIC01OTIsNyArNTkz
LDE0IEBAIHZvaWQgU2FtcGxpbmdQcm9maWxlcjo6cHJvY2Vzc1VudmVyaWZpZWRTdGFja1RyYWNl
cygpCiAgICAgICAgIC8vIFByZXBlbmQgdGhlIHRvcC1tb3N0IGlubGluZWQgZnJhbWUgaWYgbmVl
ZGVkIGFuZCBnYXRoZXIKICAgICAgICAgLy8gbG9jYXRpb24gaW5mb3JtYXRpb24gYWJvdXQgd2hl
cmUgdGhlIHRvcCBmcmFtZSBpcyBleGVjdXRpbmcuCiAgICAgICAgIHNpemVfdCBzdGFydEluZGV4
ID0gMDsKLSAgICAgICAgaWYgKHVucHJvY2Vzc2VkU3RhY2tUcmFjZS5mcmFtZXMuc2l6ZSgpICYm
ICEhdW5wcm9jZXNzZWRTdGFja1RyYWNlLmZyYW1lc1swXS52ZXJpZmllZENvZGVCbG9jaykgewor
ICAgICAgICBpZiAodW5wcm9jZXNzZWRTdGFja1RyYWNlLnJlZ0V4cCkgeworICAgICAgICAgICAg
Ly8gSWYgdGhlIHN0YWNrLXRyYWNlIGlzIGFubm90YXRlZCB3aXRoIFJlZ0V4cCwgdGhlIHRvcC1m
cmFtZSBtdXN0IGJlIFJlZ0V4cCBzaW5jZSBSZWdFeHAgZXZhbHVhdGlvbiBpcyBsZWFmIGZ1bmN0
aW9uLgorICAgICAgICAgICAgYXBwZW5kRW1wdHlGcmFtZSgpOworICAgICAgICAgICAgc3RhY2tU
cmFjZS5mcmFtZXMubGFzdCgpLnJlZ0V4cCA9IHVucHJvY2Vzc2VkU3RhY2tUcmFjZS5yZWdFeHA7
CisgICAgICAgICAgICBzdGFja1RyYWNlLmZyYW1lcy5sYXN0KCkuZnJhbWVUeXBlID0gRnJhbWVU
eXBlOjpSZWdFeHA7CisgICAgICAgICAgICBzdGFja1RyYWNlLmZyYW1lcy5sYXN0KCkuc2VtYW50
aWNMb2NhdGlvbi5pc1JlZ0V4cCA9IHRydWU7CisgICAgICAgICAgICBtX2xpdmVDZWxsUG9pbnRl
cnMuYWRkKHVucHJvY2Vzc2VkU3RhY2tUcmFjZS5yZWdFeHApOworICAgICAgICB9IGVsc2UgaWYg
KCF1bnByb2Nlc3NlZFN0YWNrVHJhY2UuZnJhbWVzLmlzRW1wdHkoKSAmJiAhIXVucHJvY2Vzc2Vk
U3RhY2tUcmFjZS5mcmFtZXNbMF0udmVyaWZpZWRDb2RlQmxvY2spIHsKICAgICAgICAgICAgIENv
ZGVCbG9jayogdG9wQ29kZUJsb2NrID0gdW5wcm9jZXNzZWRTdGFja1RyYWNlLmZyYW1lc1swXS52
ZXJpZmllZENvZGVCbG9jazsKICAgICAgICAgICAgIGlmICh1bnByb2Nlc3NlZFN0YWNrVHJhY2Uu
dG9wRnJhbWVJc0xMSW50KSB7CiAgICAgICAgICAgICAgICAgLy8gV2UgcmV1c2UgTExJbnQgQ29k
ZUJsb2NrcyBmb3IgdGhlIGJhc2VsaW5lIEpJVCwgc28gd2UgbmVlZCB0byBjaGVjayBmb3IgYm90
aCBqaXQgdHlwZXMuCkBAIC03MzUsOCArNzQzLDExIEBAIHZvaWQgU2FtcGxpbmdQcm9maWxlcjo6
Y2xlYXJEYXRhKCkKIAogU3RyaW5nIFNhbXBsaW5nUHJvZmlsZXI6OlN0YWNrRnJhbWU6Om5hbWVG
cm9tQ2FsbGVlKFZNJiB2bSkKIHsKLSAgICBpZiAoIWNhbGxlZSkKKyAgICBpZiAoIWNhbGxlZSkg
eworICAgICAgICBpZiAocmVnRXhwKQorICAgICAgICAgICAgcmV0dXJuIHJlZ0V4cC0+dG9Tb3Vy
Y2VTdHJpbmcoKTsKICAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgIH0KIAogICAgIERlZmVy
VGVybWluYXRpb24gZGVmZXJTY29wZSh2bSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FU
Q0hfU0NPUEUodm0pOwpAQCAtNzgyLDEyICs3OTMsMTYgQEAgU3RyaW5nIFNhbXBsaW5nUHJvZmls
ZXI6OlN0YWNrRnJhbWU6OmRpc3BsYXlOYW1lKFZNJiB2bSkKICAgICAgICAgfQogI2VuZGlmCiAg
ICAgICAgIHJldHVybiAiKHVua25vd24gQyBQQykiX3M7CisKICAgICBjYXNlIEZyYW1lVHlwZTo6
VW5rbm93bjoKICAgICAgICAgcmV0dXJuICIodW5rbm93bikiX3M7CiAKICAgICBjYXNlIEZyYW1l
VHlwZTo6SG9zdDoKICAgICAgICAgcmV0dXJuICIoaG9zdCkiX3M7CiAKKyAgICBjYXNlIEZyYW1l
VHlwZTo6UmVnRXhwOgorICAgICAgICByZXR1cm4gIihyZWdleHApIl9zOworCiAgICAgY2FzZSBG
cmFtZVR5cGU6Oldhc206CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICAgICBpZiAod2Fz
bUluZGV4T3JOYW1lKQpAQCAtODI2LDYgKzg0MSw5IEBAIFN0cmluZyBTYW1wbGluZ1Byb2ZpbGVy
OjpTdGFja0ZyYW1lOjpkaXNwbGF5TmFtZUZvckpTT05UZXN0cyhWTSYgdm0pCiAgICAgY2FzZSBG
cmFtZVR5cGU6OkM6CiAgICAgICAgIHJldHVybiAiKHVua25vd24pIl9zOwogCisgICAgY2FzZSBG
cmFtZVR5cGU6OlJlZ0V4cDoKKyAgICAgICAgcmV0dXJuICIocmVnZXhwKSJfczsKKwogICAgIGNh
c2UgRnJhbWVUeXBlOjpIb3N0OgogICAgICAgICByZXR1cm4gIihob3N0KSJfczsKIApAQCAtODY2
LDYgKzg4NCw3IEBAIGludCBTYW1wbGluZ1Byb2ZpbGVyOjpTdGFja0ZyYW1lOjpmdW5jdGlvblN0
YXJ0TGluZSgpCiAgICAgc3dpdGNoIChmcmFtZVR5cGUpIHsKICAgICBjYXNlIEZyYW1lVHlwZTo6
VW5rbm93bjoKICAgICBjYXNlIEZyYW1lVHlwZTo6SG9zdDoKKyAgICBjYXNlIEZyYW1lVHlwZTo6
UmVnRXhwOgogICAgIGNhc2UgRnJhbWVUeXBlOjpDOgogICAgIGNhc2UgRnJhbWVUeXBlOjpXYXNt
OgogICAgICAgICByZXR1cm4gLTE7CkBAIC04ODQsNiArOTAzLDcgQEAgdW5zaWduZWQgU2FtcGxp
bmdQcm9maWxlcjo6U3RhY2tGcmFtZTo6ZnVuY3Rpb25TdGFydENvbHVtbigpCiAgICAgc3dpdGNo
IChmcmFtZVR5cGUpIHsKICAgICBjYXNlIEZyYW1lVHlwZTo6VW5rbm93bjoKICAgICBjYXNlIEZy
YW1lVHlwZTo6SG9zdDoKKyAgICBjYXNlIEZyYW1lVHlwZTo6UmVnRXhwOgogICAgIGNhc2UgRnJh
bWVUeXBlOjpDOgogICAgIGNhc2UgRnJhbWVUeXBlOjpXYXNtOgogICAgICAgICByZXR1cm4gc3Rk
OjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpOwpAQCAtOTAzLDYgKzkyMyw3IEBAIGlu
dHB0cl90IFNhbXBsaW5nUHJvZmlsZXI6OlN0YWNrRnJhbWU6OnNvdXJjZUlEKCkKICAgICBzd2l0
Y2ggKGZyYW1lVHlwZSkgewogICAgIGNhc2UgRnJhbWVUeXBlOjpVbmtub3duOgogICAgIGNhc2Ug
RnJhbWVUeXBlOjpIb3N0OgorICAgIGNhc2UgRnJhbWVUeXBlOjpSZWdFeHA6CiAgICAgY2FzZSBG
cmFtZVR5cGU6OkM6CiAgICAgY2FzZSBGcmFtZVR5cGU6Oldhc206CiAgICAgICAgIHJldHVybiBp
bnRlcm5hbFNvdXJjZUlEOwpAQCAtOTIyLDYgKzk0Myw3IEBAIFN0cmluZyBTYW1wbGluZ1Byb2Zp
bGVyOjpTdGFja0ZyYW1lOjp1cmwoKQogICAgIHN3aXRjaCAoZnJhbWVUeXBlKSB7CiAgICAgY2Fz
ZSBGcmFtZVR5cGU6OlVua25vd246CiAgICAgY2FzZSBGcmFtZVR5cGU6Okhvc3Q6CisgICAgY2Fz
ZSBGcmFtZVR5cGU6OlJlZ0V4cDoKICAgICBjYXNlIEZyYW1lVHlwZTo6QzoKICAgICBjYXNlIEZy
YW1lVHlwZTo6V2FzbToKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CkBAIC0xMTE1LDYg
KzExMzcsNyBAQCB2b2lkIFNhbXBsaW5nUHJvZmlsZXI6OnJlcG9ydFRvcEJ5dGVjb2RlcyhQcmlu
dFN0cmVhbSYgb3V0KQogICAgIFN0cmluZyBidWlsdGluID0gImpzIGJ1aWx0aW4iX3M7CiAgICAg
U3RyaW5nIHdhc20gPSAiV2FzbSJfczsKICAgICBTdHJpbmcgaG9zdCA9ICJIb3N0Il9zOworICAg
IFN0cmluZyByZWdleHAgPSAiUmVnRXhwIl9zOwogICAgIFN0cmluZyBjcHAgPSAiQy9DKysiX3M7
CiAgICAgU3RyaW5nIHVua25vd25GcmFtZSA9ICJVbmtub3duIEZyYW1lIl9zOwogICAgIFN0cmlu
ZyB1bmtub3duRXhlY3V0YWJsZSA9ICJVbmtub3duIEV4ZWN1dGFibGUiX3M7CkBAIC0xMTI3LDYg
KzExNTAsNyBAQCB2b2lkIFNhbXBsaW5nUHJvZmlsZXI6OnJlcG9ydFRvcEJ5dGVjb2RlcyhQcmlu
dFN0cmVhbSYgb3V0KQogICAgICAgICBmdW5jKGJ1aWx0aW4pOwogICAgICAgICBmdW5jKHdhc20p
OwogICAgICAgICBmdW5jKGhvc3QpOworICAgICAgICBmdW5jKHJlZ2V4cCk7CiAgICAgICAgIGZ1
bmMoY3BwKTsKICAgICAgICAgZnVuYyh1bmtub3duRnJhbWUpOwogICAgICAgICBmdW5jKHVua25v
d25FeGVjdXRhYmxlKTsKQEAgLTExNDMsMjEgKzExNjcsMjMgQEAgdm9pZCBTYW1wbGluZ1Byb2Zp
bGVyOjpyZXBvcnRUb3BCeXRlY29kZXMoUHJpbnRTdHJlYW0mIG91dCkKICAgICAgICAgICAgIGlm
IChsb2NhdGlvbi5oYXNCeXRlY29kZUluZGV4KCkpCiAgICAgICAgICAgICAgICAgYnl0ZWNvZGVJ
bmRleCA9IHRvU3RyaW5nKGxvY2F0aW9uLmJ5dGVjb2RlSW5kZXgpOwogICAgICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgICAgIGJ5dGVjb2RlSW5kZXggPSAiPG5pbD4iOworICAgICAgICAgICAg
ICAgIGJ5dGVjb2RlSW5kZXggPSAiPG5pbD4iX3M7CiAKICAgICAgICAgICAgIGlmIChsb2NhdGlv
bi5oYXNDb2RlQmxvY2tIYXNoKCkpIHsKICAgICAgICAgICAgICAgICBTdHJpbmdQcmludFN0cmVh
bSBzdHJlYW07CiAgICAgICAgICAgICAgICAgbG9jYXRpb24uY29kZUJsb2NrSGFzaC5kdW1wKHN0
cmVhbSk7CiAgICAgICAgICAgICAgICAgY29kZUJsb2NrSGFzaCA9IHN0cmVhbS50b1N0cmluZygp
OwogICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgY29kZUJsb2NrSGFzaCA9ICI8
bmlsPiI7CisgICAgICAgICAgICAgICAgY29kZUJsb2NrSGFzaCA9ICI8bmlsPiJfczsKIAogICAg
ICAgICAgICAgaWYgKHdhc21Db21waWxhdGlvbk1vZGUpCiAgICAgICAgICAgICAgICAgaml0VHlw
ZSA9IFdhc206Om1ha2VTdHJpbmcod2FzbUNvbXBpbGF0aW9uTW9kZS52YWx1ZSgpKTsKKyAgICAg
ICAgICAgIGVsc2UgaWYgKGxvY2F0aW9uLmlzUmVnRXhwKQorICAgICAgICAgICAgICAgIGppdFR5
cGUgPSAiUmVnRXhwIl9zOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGppdFR5
cGUgPSBKSVRDb2RlOjp0eXBlTmFtZShsb2NhdGlvbi5qaXRUeXBlKTsKIAotICAgICAgICAgICAg
cmV0dXJuIG1ha2VTdHJpbmcoIiMiLCBjb2RlQmxvY2tIYXNoLCAiOiIsIGppdFR5cGUsICI6Iiwg
Ynl0ZWNvZGVJbmRleCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVN0cmluZygnIycsIGNvZGVC
bG9ja0hhc2gsICc6Jywgaml0VHlwZSwgJzonLCBieXRlY29kZUluZGV4KTsKICAgICAgICAgfTsK
IAogICAgICAgICBTdGFja0ZyYW1lJiBmcmFtZSA9IHN0YWNrVHJhY2UuZnJhbWVzLmZpcnN0KCk7
CkBAIC0xMjA3LDYgKzEyMzMsOSBAQCB2b2lkIFNhbXBsaW5nUHJvZmlsZXI6OnJlcG9ydFRvcEJ5
dGVjb2RlcyhQcmludFN0cmVhbSYgb3V0KQogICAgICAgICAgICAgY2FzZSBTYW1wbGluZ1Byb2Zp
bGVyOjpGcmFtZVR5cGU6Okhvc3Q6CiAgICAgICAgICAgICAgICAgdGllck5hbWUgPSBob3N0Owog
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBTYW1wbGluZ1Byb2ZpbGVy
OjpGcmFtZVR5cGU6OlJlZ0V4cDoKKyAgICAgICAgICAgICAgICB0aWVyTmFtZSA9IHJlZ2V4cDsK
KyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgU2FtcGxpbmdQcm9maWxl
cjo6RnJhbWVUeXBlOjpDOgogICAgICAgICAgICAgICAgIHRpZXJOYW1lID0gY3BwOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwpAQCAtMTI5MSw2ICsxMzIwLDkgQEAgdm9pZCBwcmludEludGVybmFs
KFByaW50U3RyZWFtJiBvdXQsIFNhbXBsaW5nUHJvZmlsZXI6OkZyYW1lVHlwZSBmcmFtZVR5cGUp
CiAgICAgY2FzZSBTYW1wbGluZ1Byb2ZpbGVyOjpGcmFtZVR5cGU6Okhvc3Q6CiAgICAgICAgIG91
dC5wcmludCgiSG9zdCIpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFNhbXBsaW5nUHJvZmls
ZXI6OkZyYW1lVHlwZTo6UmVnRXhwOgorICAgICAgICBvdXQucHJpbnQoIlJlZ0V4cCIpOworICAg
ICAgICBicmVhazsKICAgICBjYXNlIFNhbXBsaW5nUHJvZmlsZXI6OkZyYW1lVHlwZTo6QzoKICAg
ICBjYXNlIFNhbXBsaW5nUHJvZmlsZXI6OkZyYW1lVHlwZTo6VW5rbm93bjoKICAgICAgICAgb3V0
LnByaW50KCJVbmtub3duIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TYW1wbGluZ1Byb2ZpbGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
YW1wbGluZ1Byb2ZpbGVyLmgKaW5kZXggYmU2YmVjMjhmMTUyMmRkYjI4YTI1Njg5OGNjY2QyMmUx
ZDg3ZjhlNy4uOWFmMjc1NjVkNDUxODU4NTQ4NWZjN2I5MDdmZTczZmU1Y2NjNzRkYSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuaApAQCAt
NzUsNiArNzUsNyBAQCBjbGFzcyBTYW1wbGluZ1Byb2ZpbGVyIDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPFNhbXBsaW5nUHJvZmlsZXI+IHsKICAgICAgICAgRXhlY3V0YWJsZSwKICAgICAg
ICAgV2FzbSwKICAgICAgICAgSG9zdCwKKyAgICAgICAgUmVnRXhwLAogICAgICAgICBDLAogICAg
ICAgICBVbmtub3duLAogICAgIH07CkBAIC05NCw2ICs5NSw3IEBAIGNsYXNzIFNhbXBsaW5nUHJv
ZmlsZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2FtcGxpbmdQcm9maWxlcj4gewog
ICAgICAgICBjb25zdCB2b2lkKiBjQ29kZVBDIHsgbnVsbHB0ciB9OwogICAgICAgICBFeGVjdXRh
YmxlQmFzZSogZXhlY3V0YWJsZSB7IG51bGxwdHIgfTsKICAgICAgICAgSlNPYmplY3QqIGNhbGxl
ZSB7IG51bGxwdHIgfTsKKyAgICAgICAgUmVnRXhwKiByZWdFeHAgeyBudWxscHRyIH07CiAjaWYg
RU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICAgICBzdGQ6Om9wdGlvbmFsPFdhc206OkluZGV4T3JO
YW1lPiB3YXNtSW5kZXhPck5hbWU7CiAjZW5kaWYKQEAgLTEyMiw2ICsxMjQsNyBAQCBjbGFzcyBT
YW1wbGluZ1Byb2ZpbGVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNhbXBsaW5nUHJv
ZmlsZXI+IHsKICAgICAgICAgICAgIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleDsKICAgICAg
ICAgICAgIENvZGVCbG9ja0hhc2ggY29kZUJsb2NrSGFzaDsKICAgICAgICAgICAgIEpJVFR5cGUg
aml0VHlwZSB7IEpJVFR5cGU6Ok5vbmUgfTsKKyAgICAgICAgICAgIGJvb2wgaXNSZWdFeHAgeyBm
YWxzZSB9OwogICAgICAgICB9OwogCiAgICAgICAgIENvZGVMb2NhdGlvbiBzZW1hbnRpY0xvY2F0
aW9uOwpAQCAtMTU0LDYgKzE1Nyw3IEBAIGNsYXNzIFNhbXBsaW5nUHJvZmlsZXIgOiBwdWJsaWMg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2FtcGxpbmdQcm9maWxlcj4gewogICAgICAgICB2b2lkKiB0
b3BQQzsKICAgICAgICAgYm9vbCB0b3BGcmFtZUlzTExJbnQ7CiAgICAgICAgIHZvaWQqIGxsaW50
UEM7CisgICAgICAgIFJlZ0V4cCogcmVnRXhwOwogICAgICAgICBWZWN0b3I8VW5wcm9jZXNzZWRT
dGFja0ZyYW1lPiBmcmFtZXM7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgK
aW5kZXggYzljNTNlMjNjZDE2ZTdmNjc2MjE3MGEwNTRlYTkwNTU3MGE3OTIxZi4uYmNlZDk4NDNm
Y2U4MjYyMGU4OGI5NzUwMTgzYWViNjE1NTYyNjA2OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5oCkBAIC0yMTcsNiArMjE3LDkgQEAgY2xhc3MgRGF0YWJhc2U7CiBuYW1lc3BhY2UgRE9N
SklUIHsKIGNsYXNzIFNpZ25hdHVyZTsKIH0KK25hbWVzcGFjZSBZYXJyIHsKK2NsYXNzIE1hdGNo
aW5nQ29udGV4dEhvbGRlcjsKK30KIAogc3RydWN0IEVudHJ5RnJhbWU7CiBzdHJ1Y3QgSGFzaFRh
YmxlOwpAQCAtOTgzLDcgKzk4Niw3IEBAIGNsYXNzIFZNIDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPFZNPiwgcHVibGljIERvdWJseUxpbmtlZExpc3ROb2RlPFZNPiB7CiAgICAgY29uc3Qg
SW5zdHJ1Y3Rpb24qIHRhcmdldEludGVycHJldGVyUENGb3JUaHJvdzsKICAgICB1aW50MzJfdCBv
c3JFeGl0SW5kZXg7CiAgICAgdm9pZCogb3NyRXhpdEp1bXBEZXN0aW5hdGlvbjsKLSAgICBib29s
IGlzRXhlY3V0aW5nSW5SZWdFeHBKSVQgeyBmYWxzZSB9OworICAgIFJlZ0V4cCogbV9leGVjdXRp
bmdSZWdFeHAgeyBudWxscHRyIH07CiAKICAgICAvLyBUaGUgdGhyZWFkaW5nIHByb3RvY29sIGhl
cmUgaXMgYXMgZm9sbG93czoKICAgICAvLyAtIFlvdSBjYW4gY2FsbCBzY3JhdGNoQnVmZmVyRm9y
U2l6ZSBmcm9tIGFueSB0aHJlYWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
eWFyci9ZYXJySklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3Bw
CmluZGV4IGY0YmNjMWFjNmVkNzE3MjFjNzZjN2ZlM2Y5MWYyMTYxZjM3MzNlYzMuLmMyYTJkODhh
ODk3MWU1ODhjNzEwYTRkZGU4NzRlNTBlNDE1ZWFkYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95
YXJyL1lhcnJKSVQuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiWWFyci5oIgogI2lu
Y2x1ZGUgIllhcnJDYW5vbmljYWxpemUuaCIKICNpbmNsdWRlICJZYXJyRGlzYXNzZW1ibGVyLmgi
CisjaW5jbHVkZSAiWWFyck1hdGNoaW5nQ29udGV4dEhvbGRlci5oIgogI2luY2x1ZGUgPHd0Zi9B
U0NJSUNUeXBlLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogCkBAIC00NCwzNCArNDUs
NiBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFlhcnIgewogSlNDX0FOTk9UQVRFX0pJVF9P
UEVSQVRJT04oX0pJVFRhcmdldF92bUVudHJ5VG9ZYXJySklUQWZ0ZXIsIHZtRW50cnlUb1lhcnJK
SVRBZnRlcik7CiAjZW5kaWYKIAotTWF0Y2hpbmdDb250ZXh0SG9sZGVyOjpNYXRjaGluZ0NvbnRl
eHRIb2xkZXIoVk0mIHZtLCBZYXJyQ29kZUJsb2NrKiB5YXJyQ29kZUJsb2NrLCBNYXRjaEZyb20g
bWF0Y2hGcm9tKQotICAgIDogbV92bSh2bSkKLXsKLSAgICBpZiAobWF0Y2hGcm9tID09IE1hdGNo
RnJvbTo6Vk1UaHJlYWQpCi0gICAgICAgIG1fc3RhY2tMaW1pdCA9IHZtLnNvZnRTdGFja0xpbWl0
KCk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIFN0YWNrQm91bmRzIHN0YWNrID0gVGhyZWFkOjpjdXJy
ZW50KCkuc3RhY2soKTsKLSAgICAgICAgbV9zdGFja0xpbWl0ID0gc3RhY2sucmVjdXJzaW9uTGlt
aXQoT3B0aW9uczo6cmVzZXJ2ZWRab25lU2l6ZSgpKTsKLSAgICB9Ci0KLSNpZiBFTkFCTEUoWUFS
Ul9KSVRfQUxMX1BBUkVOU19FWFBSRVNTSU9OUykKLSAgICBpZiAoeWFyckNvZGVCbG9jay0+dXNl
c1BhdHRlcm5Db250ZXh0QnVmZmVyKCkpIHsKLSAgICAgICAgbV9wYXR0ZXJuQ29udGV4dEJ1ZmZl
ciA9IG1fdm0uYWNxdWlyZVJlZ0V4cFBhdHRlcm5Db250ZXhCdWZmZXIoKTsKLSAgICAgICAgbV9w
YXR0ZXJuQ29udGV4dEJ1ZmZlclNpemUgPSBWTTo6cGF0dGVybkNvbnRleHRCdWZmZXJTaXplOwot
ICAgIH0KLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHlhcnJDb2RlQmxvY2spOwotI2VuZGlmCi19
Ci0KLU1hdGNoaW5nQ29udGV4dEhvbGRlcjo6fk1hdGNoaW5nQ29udGV4dEhvbGRlcigpCi17Ci0j
aWYgRU5BQkxFKFlBUlJfSklUX0FMTF9QQVJFTlNfRVhQUkVTU0lPTlMpCi0gICAgaWYgKG1fcGF0
dGVybkNvbnRleHRCdWZmZXIpCi0gICAgICAgIG1fdm0ucmVsZWFzZVJlZ0V4cFBhdHRlcm5Db250
ZXhCdWZmZXIoKTsKLSNlbmRpZgotfQotCiB0ZW1wbGF0ZTxZYXJySklUQ29tcGlsZU1vZGUgY29t
cGlsZU1vZGU+CiBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZv
LCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKIApAQCAtMzc3MSwxNCArMzc0NCwxMCBAQCBjbGFz
cyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3Jv
QXNzZW1ibGVyIHsKICNlbGlmIENQVShNSVBTKQogICAgICAgICAvLyBEbyBub3RoaW5nLgogI2Vu
ZGlmCi0KLSAgICAgICAgc3RvcmU4KFRydXN0ZWRJbW0zMigxKSwgJm1fdm0tPmlzRXhlY3V0aW5n
SW5SZWdFeHBKSVQpOwogICAgIH0KIAogICAgIHZvaWQgZ2VuZXJhdGVSZXR1cm4oKQogICAgIHsK
LSAgICAgICAgc3RvcmU4KFRydXN0ZWRJbW0zMigwKSwgJm1fdm0tPmlzRXhlY3V0aW5nSW5SZWdF
eHBKSVQpOwotCiAjaWYgQ1BVKFg4Nl82NCkKICNpZiBPUyhXSU5ET1dTKQogICAgICAgICAvLyBT
dG9yZSB0aGUgcmV0dXJuIHZhbHVlIGluIHRoZSBhbGxvY2F0ZWQgc3BhY2UgcG9pbnRlZCBieSBy
Y3guCkBAIC0zODIxLDcgKzM3OTAsNiBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVi
bGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICNlbGlmIENQVShNSVBT
KQogICAgICAgICAvLyBEbyBub3RoaW5nCiAjZW5kaWYKLQogI2lmIENQVShBUk02NEUpCiAgICAg
ICAgIGlmIChPcHRpb25zOjp1c2VKSVRDYWdlKCkpCiAgICAgICAgICAgICBmYXJKdW1wKFRydXN0
ZWRJbW1QdHIocmV0YWdDb2RlUHRyPHZvaWQqLCBDRnVuY3Rpb25QdHJUYWcsIE9wZXJhdGlvblB0
clRhZz4oJnZtRW50cnlUb1lhcnJKSVRBZnRlcikpLCBPcGVyYXRpb25QdHJUYWcpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3lhcnIvWWFyckpJVC5oCmluZGV4IDk3NGQ1ODFmZGIxZGVmYTA1YThjZjQxMmM2
NTQ1MDcyMWQyM2Q2N2MuLjNkMmZjNGFkNjY1ZjFkMTNhNjM0Yzk1MWUwMjI0MDdhNzNkZGMzN2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmgKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Miw2ICs0Miw3IEBAIGNs
YXNzIEV4ZWN1dGFibGVQb29sOwogCiBuYW1lc3BhY2UgWWFyciB7CiAKK2NsYXNzIE1hdGNoaW5n
Q29udGV4dEhvbGRlcjsKIGNsYXNzIFlhcnJDb2RlQmxvY2s7CiAKIGVudW0gY2xhc3MgSklURmFp
bHVyZVJlYXNvbiA6IHVpbnQ4X3QgewpAQCAtNTUsMjcgKzU2LDYgQEAgZW51bSBjbGFzcyBKSVRG
YWlsdXJlUmVhc29uIDogdWludDhfdCB7CiAgICAgRXhlY3V0YWJsZU1lbW9yeUFsbG9jYXRpb25G
YWlsdXJlLAogfTsKIAotY2xhc3MgTWF0Y2hpbmdDb250ZXh0SG9sZGVyIHsKLSAgICBXVEZfRk9S
QklEX0hFQVBfQUxMT0NBVElPTjsKLXB1YmxpYzoKLSAgICBNYXRjaGluZ0NvbnRleHRIb2xkZXIo
Vk0mLCBZYXJyQ29kZUJsb2NrKiwgTWF0Y2hGcm9tIG1hdGNoRnJvbSA9IE1hdGNoRnJvbTo6Vk1U
aHJlYWQpOwotICAgIH5NYXRjaGluZ0NvbnRleHRIb2xkZXIoKTsKLQotICAgIHN0YXRpYyBwdHJk
aWZmX3Qgb2Zmc2V0T2ZTdGFja0xpbWl0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKE1hdGNo
aW5nQ29udGV4dEhvbGRlciwgbV9zdGFja0xpbWl0KTsgfQotI2lmIEVOQUJMRShZQVJSX0pJVF9B
TExfUEFSRU5TX0VYUFJFU1NJT05TKQotICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZQYXR0
ZXJuQ29udGV4dEJ1ZmZlcigpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihNYXRjaGluZ0NvbnRl
eHRIb2xkZXIsIG1fcGF0dGVybkNvbnRleHRCdWZmZXIpOyB9Ci0gICAgc3RhdGljIHB0cmRpZmZf
dCBvZmZzZXRPZlBhdHRlcm5Db250ZXh0QnVmZmVyU2l6ZSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZT
RVRPRihNYXRjaGluZ0NvbnRleHRIb2xkZXIsIG1fcGF0dGVybkNvbnRleHRCdWZmZXJTaXplKTsg
fQotI2VuZGlmCi0KLXByaXZhdGU6Ci0gICAgVk0mIG1fdm07Ci0gICAgdm9pZCogbV9zdGFja0xp
bWl0OwotI2lmIEVOQUJMRShZQVJSX0pJVF9BTExfUEFSRU5TX0VYUFJFU1NJT05TKQotICAgIHZv
aWQqIG1fcGF0dGVybkNvbnRleHRCdWZmZXIgeyBudWxscHRyIH07Ci0gICAgdW5zaWduZWQgbV9w
YXR0ZXJuQ29udGV4dEJ1ZmZlclNpemUgeyAwIH07Ci0jZW5kaWYKLX07Ci0KICNpZiBDUFUoQVJN
NjRFKQogZXh0ZXJuICJDIiBFbmNvZGVkTWF0Y2hSZXN1bHQgdm1FbnRyeVRvWWFyckpJVChjb25z
dCB2b2lkKiBpbnB1dCwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgaW50KiBvdXRw
dXQsIE1hdGNoaW5nQ29udGV4dEhvbGRlciogbWF0Y2hpbmdDb250ZXh0LCBjb25zdCB2b2lkKiBj
b2RlUHRyKTsKIGV4dGVybiAiQyIgdm9pZCB2bUVudHJ5VG9ZYXJySklUQWZ0ZXIodm9pZCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyTWF0Y2hpbmdDb250ZXh0
SG9sZGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyTWF0Y2hpbmdDb250ZXh0
SG9sZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMTM5ZDFmZTM1YjU3NWM3MGEwNWE3ZTc3MjVkZDlmYTFlZmI2
NjAxZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJN
YXRjaGluZ0NvbnRleHRIb2xkZXIuaApAQCAtMCwwICsxLDk2IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgIlZNLmgiCisjaW5jbHVkZSAiWWFyci5oIgorI2luY2x1ZGUgIllhcnJKSVQuaCIKKworbmFt
ZXNwYWNlIEpTQyB7CisKK2NsYXNzIFZNOworY2xhc3MgRXhlY3V0YWJsZVBvb2w7CitjbGFzcyBS
ZWdFeHA7CisKK25hbWVzcGFjZSBZYXJyIHsKKworY2xhc3MgWWFyckNvZGVCbG9jazsKKworY2xh
c3MgTWF0Y2hpbmdDb250ZXh0SG9sZGVyIHsKKyAgICBXVEZfRk9SQklEX0hFQVBfQUxMT0NBVElP
TjsKK3B1YmxpYzoKKyAgICBNYXRjaGluZ0NvbnRleHRIb2xkZXIoVk0mLCBZYXJyQ29kZUJsb2Nr
KiwgUmVnRXhwKiwgTWF0Y2hGcm9tKTsKKyAgICB+TWF0Y2hpbmdDb250ZXh0SG9sZGVyKCk7CisK
KyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mU3RhY2tMaW1pdCgpIHsgcmV0dXJuIE9CSkVD
VF9PRkZTRVRPRihNYXRjaGluZ0NvbnRleHRIb2xkZXIsIG1fc3RhY2tMaW1pdCk7IH0KKyNpZiBF
TkFCTEUoWUFSUl9KSVRfQUxMX1BBUkVOU19FWFBSRVNTSU9OUykKKyAgICBzdGF0aWMgcHRyZGlm
Zl90IG9mZnNldE9mUGF0dGVybkNvbnRleHRCdWZmZXIoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VU
T0YoTWF0Y2hpbmdDb250ZXh0SG9sZGVyLCBtX3BhdHRlcm5Db250ZXh0QnVmZmVyKTsgfQorICAg
IHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZQYXR0ZXJuQ29udGV4dEJ1ZmZlclNpemUoKSB7IHJl
dHVybiBPQkpFQ1RfT0ZGU0VUT0YoTWF0Y2hpbmdDb250ZXh0SG9sZGVyLCBtX3BhdHRlcm5Db250
ZXh0QnVmZmVyU2l6ZSk7IH0KKyNlbmRpZgorCitwcml2YXRlOgorICAgIFZNJiBtX3ZtOworICAg
IHZvaWQqIG1fc3RhY2tMaW1pdDsKKyNpZiBFTkFCTEUoWUFSUl9KSVRfQUxMX1BBUkVOU19FWFBS
RVNTSU9OUykKKyAgICB2b2lkKiBtX3BhdHRlcm5Db250ZXh0QnVmZmVyIHsgbnVsbHB0ciB9Owor
ICAgIHVuc2lnbmVkIG1fcGF0dGVybkNvbnRleHRCdWZmZXJTaXplIHsgMCB9OworI2VuZGlmCisg
ICAgTWF0Y2hGcm9tIG1fbWF0Y2hGcm9tOworfTsKKworaW5saW5lIE1hdGNoaW5nQ29udGV4dEhv
bGRlcjo6TWF0Y2hpbmdDb250ZXh0SG9sZGVyKFZNJiB2bSwgWWFyckNvZGVCbG9jayogeWFyckNv
ZGVCbG9jaywgUmVnRXhwKiByZWdFeHAsIE1hdGNoRnJvbSBtYXRjaEZyb20pCisgICAgOiBtX3Zt
KHZtKQorICAgICwgbV9tYXRjaEZyb20obWF0Y2hGcm9tKQoreworICAgIGlmIChtYXRjaEZyb20g
PT0gTWF0Y2hGcm9tOjpWTVRocmVhZCkgeworICAgICAgICBtX3N0YWNrTGltaXQgPSB2bS5zb2Z0
U3RhY2tMaW1pdCgpOworICAgICAgICB2bS5tX2V4ZWN1dGluZ1JlZ0V4cCA9IHJlZ0V4cDsKKyAg
ICB9IGVsc2UgeworICAgICAgICBTdGFja0JvdW5kcyBzdGFjayA9IFRocmVhZDo6Y3VycmVudCgp
LnN0YWNrKCk7CisgICAgICAgIG1fc3RhY2tMaW1pdCA9IHN0YWNrLnJlY3Vyc2lvbkxpbWl0KE9w
dGlvbnM6OnJlc2VydmVkWm9uZVNpemUoKSk7CisgICAgfQorCisjaWYgRU5BQkxFKFlBUlJfSklU
X0FMTF9QQVJFTlNfRVhQUkVTU0lPTlMpCisgICAgaWYgKHlhcnJDb2RlQmxvY2sgJiYgeWFyckNv
ZGVCbG9jay0+dXNlc1BhdHRlcm5Db250ZXh0QnVmZmVyKCkpIHsKKyAgICAgICAgbV9wYXR0ZXJu
Q29udGV4dEJ1ZmZlciA9IG1fdm0uYWNxdWlyZVJlZ0V4cFBhdHRlcm5Db250ZXhCdWZmZXIoKTsK
KyAgICAgICAgbV9wYXR0ZXJuQ29udGV4dEJ1ZmZlclNpemUgPSBWTTo6cGF0dGVybkNvbnRleHRC
dWZmZXJTaXplOworICAgIH0KKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHlhcnJDb2RlQmxvY2sp
OworI2VuZGlmCit9CisKK2lubGluZSBNYXRjaGluZ0NvbnRleHRIb2xkZXI6On5NYXRjaGluZ0Nv
bnRleHRIb2xkZXIoKQoreworI2lmIEVOQUJMRShZQVJSX0pJVF9BTExfUEFSRU5TX0VYUFJFU1NJ
T05TKQorICAgIGlmIChtX3BhdHRlcm5Db250ZXh0QnVmZmVyKQorICAgICAgICBtX3ZtLnJlbGVh
c2VSZWdFeHBQYXR0ZXJuQ29udGV4QnVmZmVyKCk7CisjZW5kaWYKKyAgICBpZiAobV9tYXRjaEZy
b20gPT0gTWF0Y2hGcm9tOjpWTVRocmVhZCkKKyAgICAgICAgbV92bS5tX2V4ZWN1dGluZ1JlZ0V4
cCA9IG51bGxwdHI7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpZYXJyCmRpZmYgLS1naXQg
YS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGNhZWQ1YzMyZTJi
YmEzZWY2Yzk2YTZhODY3MWY3OWFmZGEyMTlkMjEuLjU1YWJlNGYyMTNjMmZlNzg0MDVkYzFhMjMz
MDc4OTU1NGRhY2VmOTQgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjEtMDctMTUgIFl1c3VrZSBTdXp1a2kg
IDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBTYW1wbGluZ1Byb2ZpbGVyIHNo
b3VsZCByZWNvZ25pemUgUmVnRXhwIGV4ZWN1dGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxNzAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3Mvc2FtcGxpbmctcHJvZmlsZXItcmVnZXhw
LmpzOiBBZGRlZC4KKyAgICAgICAgKHBsYXRmb3JtU3VwcG9ydHNTYW1wbGluZ1Byb2ZpbGVyLmdl
dFRleHQpOgorICAgICAgICAocGxhdGZvcm1TdXBwb3J0c1NhbXBsaW5nUHJvZmlsZXIudGVzdCk6
CisgICAgICAgIChwbGF0Zm9ybVN1cHBvcnRzU2FtcGxpbmdQcm9maWxlci5iYXopOgorICAgICAg
ICAocGxhdGZvcm1TdXBwb3J0c1NhbXBsaW5nUHJvZmlsZXIpOgorICAgICAgICAqIHN0cmVzcy9z
YW1wbGluZy1wcm9maWxlci9zYW1wbGluZ1Byb2ZpbGVyLmpzOiBFeHRlbmQgc2FtcGxpbmdQcm9m
aWxlciB0byBzaG93IGJldHRlciBlcnJvciBpbmZvcm1hdGlvbiB3aGVuIFZFUkJPU0UgPSB0cnVl
LgorICAgICAgICAoZG9lc1RyZWVIYXZlU3RhY2tUcmFjZSk6CisKIDIwMjEtMDctMTUgIFl1c3Vr
ZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBIYXJkZW4gZGVm
YXVsdFRpbWVab25lIHJldHJpZXZhbApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvc2FtcGxp
bmctcHJvZmlsZXItcmVnZXhwLmpzIGIvSlNUZXN0cy9zdHJlc3Mvc2FtcGxpbmctcHJvZmlsZXIt
cmVnZXhwLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk2NmE2ZTFmMjY0Mjg0ZDBlMDY5ZTA2MjgxMjQ4ZmM5ZDQw
MThjMTIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9zYW1wbGluZy1wcm9maWxl
ci1yZWdleHAuanMKQEAgLTAsMCArMSwyNCBAQAoraWYgKHBsYXRmb3JtU3VwcG9ydHNTYW1wbGlu
Z1Byb2ZpbGVyKCkpIHsKKyAgICBsb2FkKCIuL3NhbXBsaW5nLXByb2ZpbGVyL3NhbXBsaW5nUHJv
ZmlsZXIuanMiKTsKKworICAgIHZhciB0ZXh0ID0gYExvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0
LCBjb25zZWN0ZXR1ciBhZGlwaXNjaW5nIGVsaXQsIHNlZCBkbyBlaXVzbW9kIHRlbXBvciBpbmNp
ZGlkdW50IHV0IGxhYm9yZSBldCBkb2xvcmUgbWFnbmEgYWxpcXVhLiBVdCBlbmltIGFkIG1pbmlt
IHZlbmlhbSwgcXVpcyBub3N0cnVkIGV4ZXJjaXRhdGlvbiB1bGxhbWNvIGxhYm9yaXMgbmlzaSB1
dCBhbGlxdWlwIGV4IGVhIGNvbW1vZG8gY29uc2VxdWF0LiBEdWlzIGF1dGUgaXJ1cmUgZG9sb3Ig
aW4gcmVwcmVoZW5kZXJpdCBpbiB2b2x1cHRhdGUgdmVsaXQgZXNzZSBjaWxsdW0gZG9sb3JlIGV1
IGZ1Z2lhdCBudWxsYSBwYXJpYXR1ci4gRXhjZXB0ZXVyIHNpbnQgb2NjYWVjYXQgY3VwaWRhdGF0
IG5vbiBwcm9pZGVudCwgc3VudCBpbiBjdWxwYSBxdWkgb2ZmaWNpYSBkZXNlcnVudCBtb2xsaXQg
YW5pbSBpZCBlc3QgbGFib3J1bS5gLnJlcGVhdCgxMDAwKTsKKyAgICBmdW5jdGlvbiBnZXRUZXh0
KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0ZXh0OworICAgIH0KKyAgICBub0lubGluZShnZXRU
ZXh0KTsKKworICAgIGZ1bmN0aW9uIHRlc3QocmVnZXhwKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGdldFRleHQoKS5tYXRjaChyZWdleHApOworICAgIH0KKyAgICBub0lubGluZSh0ZXN0KTsKKwor
ICAgIGZ1bmN0aW9uIGJheigpIHsKKyAgICAgICAgdmFyIHJlZ2V4cCA9IC8oLispL2dpOworICAg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlMTsgKytpKQorICAgICAgICAgICAgdGVzdChyZWdl
eHApOworICAgIH0KKworICAgIHJ1blRlc3QoYmF6LCBbIi8oLispL2dpIiwgIiIsICJ0ZXN0Iiwg
ImJheiJdKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3NhbXBsaW5nLXByb2ZpbGVy
L3NhbXBsaW5nUHJvZmlsZXIuanMgYi9KU1Rlc3RzL3N0cmVzcy9zYW1wbGluZy1wcm9maWxlci9z
YW1wbGluZ1Byb2ZpbGVyLmpzCmluZGV4IDM3NjdhMjMwZjVjNjIwN2FlOGRjOWQ2ZjhiMmMzN2M3
OWVmMTNiZmMuLmJjMjM2YWVlODZlNjc3ZjU2YjhhN2YzNWEzNWYxZTc0YmE4NmU1ODkgMTAwNjQ0
Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL3NhbXBsaW5nLXByb2ZpbGVyL3NhbXBsaW5nUHJvZmlsZXIu
anMKKysrIGIvSlNUZXN0cy9zdHJlc3Mvc2FtcGxpbmctcHJvZmlsZXIvc2FtcGxpbmdQcm9maWxl
ci5qcwpAQCAtMzQsNyArMzQsOSBAQCBmdW5jdGlvbiB1cGRhdGVDYWxsaW5nQ29udGV4dFRyZWUo
cm9vdCkgewogICAgIH0KIH0KIAotZnVuY3Rpb24gZG9lc1RyZWVIYXZlU3RhY2tUcmFjZSh0cmVl
LCBzdGFja1RyYWNlLCBpc1J1bkZyb21SdW5UZXN0ID0gdHJ1ZSwgdmVyYm9zZSA9IGZhbHNlKSB7
Citjb25zdCBWRVJCT1NFID0gZmFsc2U7CisKK2Z1bmN0aW9uIGRvZXNUcmVlSGF2ZVN0YWNrVHJh
Y2UodHJlZSwgc3RhY2tUcmFjZSwgaXNSdW5Gcm9tUnVuVGVzdCA9IHRydWUpIHsKICAgICAvLyBz
dGFjayB0cmFjZSBzaG91bGQgYmUgdG9wLWRvd24gYXJyYXkgd2l0aCB0aGUgZGVlcGVzdAogICAg
IC8vIGNhbGwgZnJhbWUgYXQgaW5kZXggMC4KICAgICBpZiAoaXNSdW5Gcm9tUnVuVGVzdCkKQEAg
LTQ2LDggKzQ4LDEwIEBAIGZ1bmN0aW9uIGRvZXNUcmVlSGF2ZVN0YWNrVHJhY2UodHJlZSwgc3Rh
Y2tUcmFjZSwgaXNSdW5Gcm9tUnVuVGVzdCA9IHRydWUsIHZlcmJvCiAgICAgZm9yIChsZXQgaSA9
IHN0YWNrVHJhY2UubGVuZ3RoOyBpLS07ICkgewogICAgICAgICBub2RlID0gbm9kZS5jaGlsZHJl
bltzdGFja1RyYWNlW2ldXTsKICAgICAgICAgaWYgKCFub2RlKSB7Ci0gICAgICAgICAgICBpZiAo
dmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChWRVJCT1NFKSB7CiAgICAgICAgICAgICAgICAgcHJp
bnQoImZhaWxpbmcgb24gIiArIGkgKyAiIDogIiArIHN0YWNrVHJhY2VbaV0pOworICAgICAgICAg
ICAgICAgIHByaW50KEpTT04uc3RyaW5naWZ5KHRyZWUpKTsKKyAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgIH0KQEAgLTYwLDcgKzY0LDYgQEAg
ZnVuY3Rpb24gbWFrZVRyZWUoKSB7CiAgICAgcmV0dXJuIHJvb3Q7CiB9CiAKLWNvbnN0IFZFUkJP
U0UgPSBmYWxzZTsKIC8vIFRoaXMgdGVzdCBzdWl0ZSBhc3N1bWVzIHRoYXQgInJ1blRlc3QiIGlz
IGJlaW5nIGNhbGxlZAogLy8gZnJvbSB0aGUgZ2xvYmFsIHNjb3BlLgogZnVuY3Rpb24gcnVuVGVz
dChmdW5jLCBzdGFja1RyYWNlKSB7Cg==
</data>
<flag name="review"
          id="455964"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>