<?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>181488</bug_id>
          
          <creation_ts>2018-01-10 11:32:17 -0800</creation_ts>
          <short_desc>REGRESSION(r226667): This caused a flaky crash. (Requested by mlewis13 on #webkit).</short_desc>
          <delta_ts>2018-01-10 11:42:16 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>180884</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>jlewis3</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1387764</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-01-10 11:32:17 -0800</bug_when>
    <thetext>https://trac.webkit.org/changeset/226667 broke the build:
This caused a flaky crash. (Requested by mlewis13 on #webkit).

This is an automatic bug report generated by webkitbot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1387766</commentid>
    <comment_count>1</comment_count>
      <attachid>330936</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-01-10 11:32:43 -0800</bug_when>
    <thetext>Created attachment 330936
ROLLOUT of r226667

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

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

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1387768</commentid>
    <comment_count>2</comment_count>
      <attachid>330936</attachid>
    <who name="Matt Lewis">jlewis3</who>
    <bug_when>2018-01-10 11:34:37 -0800</bug_when>
    <thetext>Comment on attachment 330936
ROLLOUT of r226667

Committing rollout.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1387769</commentid>
    <comment_count>3</comment_count>
      <attachid>330936</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-01-10 11:41:17 -0800</bug_when>
    <thetext>Comment on attachment 330936
ROLLOUT of r226667

Clearing flags on attachment: 330936

Committed r226725: &lt;https://trac.webkit.org/changeset/226725&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1387770</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-01-10 11:41:19 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1387772</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-01-10 11:42:16 -0800</bug_when>
    <thetext>&lt;rdar://problem/36412325&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>330936</attachid>
            <date>2018-01-10 11:32:43 -0800</date>
            <delta_ts>2018-01-10 11:41:17 -0800</delta_ts>
            <desc>ROLLOUT of r226667</desc>
            <filename>bug-181488-20180110143243.patch</filename>
            <type>text/plain</type>
            <size>133432</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI2NzIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
MzExZTZjZDhjN2FjYmRkNWQxNDM5YTkzOTM5N2UyY2VlMmQwNzdkLi5hOGNhYTE1NDVjOGFiZjU1
ZmM2MDk1MDc5YzU0YzlhMTkxMjNhMzIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAxOC0wMS0xMCAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIyNjY2NyBhbmQgcjIy
NjY3My4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4
MTQ4OAorCisgICAgICAgIFRoaXMgY2F1c2VkIGEgZmxha3kgY3Jhc2guIChSZXF1ZXN0ZWQgYnkg
bWxld2lzMTMgb24gI3dlYmtpdCkuCisKKyAgICAgICAgUmV2ZXJ0ZWQgY2hhbmdlc2V0czoKKwor
ICAgICAgICAiQ29kZUJsb2NrcyBzaG91bGQgYmUgaW4gSXNvU3Vic3BhY2VzIgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwODg0CisgICAgICAgIGh0
dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yMjY2NjcKKworICAgICAgICAiUkVHUkVT
U0lPTiAocjIyNjY2Nyk6IENvZGVCbG9ja3Mgc2hvdWxkIGJlIGluIElzb1N1YnNwYWNlcyIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDg4NAorICAg
ICAgICBodHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjI2NjczCisKIDIwMTgtMDEt
MDkgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNT
SU9OIChyMjI2NjY3KTogQ29kZUJsb2NrcyBzaG91bGQgYmUgaW4gSXNvU3Vic3BhY2VzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4
IDgxNGY2NGUzNDkwMDNmODdhNjA3OTUyZDg3YzI1ZmEzYmQxYzliYzguLjMxYTE4MGQ4YWQxMTU2
MTZiOGRmZDY5MjQ5Y2UwZWM2Mzg2YjMxNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTgtMDEt
MTAgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgorCisgICAgICAgIFVu
cmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMjY2NjcgYW5kIHIyMjY2NzMuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODE0ODgKKworICAgICAgICBUaGlz
IGNhdXNlZCBhIGZsYWt5IGNyYXNoLiAoUmVxdWVzdGVkIGJ5IG1sZXdpczEzIG9uICN3ZWJraXQp
LgorCisgICAgICAgIFJldmVydGVkIGNoYW5nZXNldHM6CisKKyAgICAgICAgIkNvZGVCbG9ja3Mg
c2hvdWxkIGJlIGluIElzb1N1YnNwYWNlcyIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4MDg4NAorICAgICAgICBodHRwczovL3RyYWMud2Via2l0Lm9y
Zy9jaGFuZ2VzZXQvMjI2NjY3CisKKyAgICAgICAgIlJFR1JFU1NJT04gKHIyMjY2NjcpOiBDb2Rl
QmxvY2tzIHNob3VsZCBiZSBpbiBJc29TdWJzcGFjZXMiCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODA4ODQKKyAgICAgICAgaHR0cHM6Ly90cmFjLndl
YmtpdC5vcmcvY2hhbmdlc2V0LzIyNjY3MworCiAyMDE4LTAxLTA0ICBGaWxpcCBQaXpsbyAgPGZw
aXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgQ29kZUJsb2NrcyBzaG91bGQgYmUgaW4gSXNvU3Vi
c3BhY2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKaW5kZXggYzc1NmZmMWM5MWJkNTE1OWY2YjEzZDU4MmRiMjU2Y2U2Mzhl
NTUxZS4uZTg0N2NjYmJlOTEyN2U5MTM0ZjM1YjIwOWU3Y2MxMDdhZTcxMGMwOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDIwIEBACisyMDE4LTAxLTEwICBDb21taXQgUXVldWUgIDxjb21taXQtcXVl
dWVAd2Via2l0Lm9yZz4KKworICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjI2NjY3
IGFuZCByMjI2NjczLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTgxNDg4CisKKyAgICAgICAgVGhpcyBjYXVzZWQgYSBmbGFreSBjcmFzaC4gKFJlcXVl
c3RlZCBieSBtbGV3aXMxMyBvbiAjd2Via2l0KS4KKworICAgICAgICBSZXZlcnRlZCBjaGFuZ2Vz
ZXRzOgorCisgICAgICAgICJDb2RlQmxvY2tzIHNob3VsZCBiZSBpbiBJc29TdWJzcGFjZXMiCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODA4ODQKKyAg
ICAgICAgaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzIyNjY2NworCisgICAgICAg
ICJSRUdSRVNTSU9OIChyMjI2NjY3KTogQ29kZUJsb2NrcyBzaG91bGQgYmUgaW4gSXNvU3Vic3Bh
Y2VzIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgw
ODg0CisgICAgICAgIGh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yMjY2NzMKKwog
MjAxOC0wMS0xMCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAg
UkVHUkVTU0lPTihyMjI1NjUwKTogVGhlIHNjb3JlcyBvZiBNb3Rpb25NYXJrIHRlc3RzIE11bHRp
cGx5IGFuZCBMZWF2ZXMgZHJvcHBlZCBieSA4JQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCAwYjU5Y2VhNDdlYzJmZjlmYzAyZmNkZDQ1ZGEzMzMwM2FmMTNmNmU0Li40YjQzZGMxNzVm
OWU5ZjI2MjlkYWMwNGEzMzY5YTZjY2FjNzkzMzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtMzQzLDcgKzM0Myw2IEBACiAJCTBGNUNGOTg5MUU5RUQ2NTIwMEMxODY5MiAvKiBB
aXJTdGFja0FsbG9jYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGNUNGOTg3MUU5RUQ2NEUwMEMxODY5MiAvKiBBaXJTdGFja0FsbG9jYXRpb24u
aCAqLzsgfTsKIAkJMEY1RUY5MUYxNjg3OEY3RDAwM0U1QzI1IC8qIEpJVFRodW5rcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1RUY5MUMxNjg3OEY3
ODAwM0U1QzI1IC8qIEpJVFRodW5rcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTBGNUYwOENGMTQ2Qzc2MzMwMDA0NzJBOSAvKiBVbmNvbmRpdGlv
bmFsRmluYWxpemVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjVGMDhDRTE0NkM3NjJGMDAwNDcyQTkgLyogVW5jb25kaXRpb25hbEZpbmFsaXplci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTBGNjBG
RTkwMUZGQzM3MDIwMDAzMzIwQSAvKiBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjYwRkU4RTFGRkMzNkZE
MDAwMzMyMEEgLyogRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNjE4MzJBMUM0NUJGMDcwMDcyNDUw
QiAvKiBBaXJDQ2FsbGluZ0NvbnZlbnRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjE4MzIxMUM0NUJGMDcwMDcyNDUwQiAvKiBBaXJDQ2FsbGlu
Z0NvbnZlbnRpb24uaCAqLzsgfTsKIAkJMEY2MTgzMkQxQzQ1QkYwNzAwNzI0NTBCIC8qIEFpckVt
aXRTaHVmZmxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjYxODMyNDFDNDVCRjA3MDA3MjQ1MEIgLyogQWlyRW1pdFNodWZmbGUuaCAqLzsgfTsKIAkJ
MEY2MTgzMkYxQzQ1QkYwNzAwNzI0NTBCIC8qIEFpckxvd2VyQWZ0ZXJSZWdBbGxvYy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2MTgzMjYxQzQ1QkYw
NzAwNzI0NTBCIC8qIEFpckxvd2VyQWZ0ZXJSZWdBbGxvYy5oICovOyB9OwpAQCAtMjMzOSw4ICsy
MzM4LDYgQEAKIAkJMEY1RUY5MUIxNjg3OEY3ODAwM0U1QzI1IC8qIEpJVFRodW5rcy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKSVRUaHVua3MuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRjVFRjkxQzE2ODc4Rjc4MDAzRTVDMjUgLyogSklUVGh1
bmtzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJVFRodW5rcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjVGMDhDRTE0NkM3NjJGMDAwNDcyQTkgLyogVW5j
b25kaXRpb25hbEZpbmFsaXplci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBV
bmNvbmRpdGlvbmFsRmluYWxpemVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBG
NjBGRThEMUZGQzM2RkMwMDAzMzIwQSAvKiBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV4ZWN1dGFibGVUb0NvZGVCbG9j
a0VkZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRjYwRkU4RTFGRkMzNkZE
MDAwMzMyMEEgLyogRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGNjE4MzIwMUM0NUJGMDcwMDcyNDUwQiAvKiBBaXJDQ2FsbGlu
Z0NvbnZlbnRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQWly
Q0NhbGxpbmdDb252ZW50aW9uLmNwcDsgcGF0aCA9IGIzL2Fpci9BaXJDQ2FsbGluZ0NvbnZlbnRp
b24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjYxODMyMTFDNDVCRjA3MDA3
MjQ1MEIgLyogQWlyQ0NhbGxpbmdDb252ZW50aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IEFpckNDYWxsaW5nQ29udmVudGlvbi5oOyBwYXRoID0gYjMvYWlyL0FpckNDYWxs
aW5nQ29udmVudGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjYxODMyMjFD
NDVCRjA3MDA3MjQ1MEIgLyogQWlyQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IEFpckN1c3RvbS5jcHA7IHBhdGggPSBiMy9haXIvQWlyQ3VzdG9tLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc1MjUsOCArNzUyMiw2IEBACiAJCQkJMTRB
RDkxMTIxRENBOTdGRDAwMTRGOUZFIC8qIEV2YWxDb2RlQmxvY2suY3BwICovLAogCQkJCTE0QUQ5
MTA2MURDQTkyOTQwMDE0RjlGRSAvKiBFdmFsQ29kZUJsb2NrLmggKi8sCiAJCQkJMTQxNDJFNTIx
Qjc5NkVERDAwRjRCRjRCIC8qIEV4ZWN1dGFibGVJbmZvLmggKi8sCi0JCQkJMEY2MEZFOEQxRkZD
MzZGQzAwMDMzMjBBIC8qIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuY3BwICovLAotCQkJCTBG
NjBGRThFMUZGQzM2RkQwMDAzMzIwQSAvKiBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmggKi8s
CiAJCQkJMEY1NkExRDQxNTAwMUNGMjAwMjk5MkIxIC8qIEV4ZWN1dGlvbkNvdW50ZXIuY3BwICov
LAogCQkJCTBGNTZBMUQxMTUwMDBGMzEwMDI5OTJCMSAvKiBFeGVjdXRpb25Db3VudGVyLmggKi8s
CiAJCQkJMEYwMzMyQkYxOEFERkFFMTAwNUY5NzlBIC8qIEV4aXRpbmdKSVRUeXBlLmNwcCAqLywK
QEAgLTgzMjMsNyArODMxOCw2IEBACiAJCQkJQTUzMjQzOTgxODU2QTQ4OTAwMkVENjkyIC8qIENv
bWJpbmVkRG9tYWlucy5qc29uIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEMzRjMwRTE2RjVDRDAw
QjM0NDYwIC8qIENvbW1vbklkZW50aWZpZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjE1RjE1
RjE0QjdBNzNFMDA1REUzN0QgLyogQ29tbW9uU2xvd1BhdGhzLmggaW4gSGVhZGVycyAqLywKLQkJ
CQkwRjYwRkU5MDFGRkMzNzAyMDAwMzMyMEEgLyogRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNjU1M0EzMzIxN0ExRjFFRTAwOENGNkYzIC8qIENvbW1vblNs
b3dQYXRoc0V4Y2VwdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDgyRTM5MTQxQUIxNEQw
MDE3OUM5NCAvKiBDb21wYWN0SklUQ29kZU1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdFNUEz
QTgxNzk3NDMyRDAwRTg5M0MwIC8qIENvbXBpbGF0aW9uUmVzdWx0LmggaW4gSGVhZGVycyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCA4YWQzZjJhMTk2OWMxMjZmYTJlZWU2ZjYz
MzQxNWQxMzA3M2JhZmI4Li4yYzFlYmE4NTY4YzNkNjBjYmI0YThjYmU1NzkyNjdhNmU1Mjc0MTIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC0yMTAsNyArMjEwLDYgQEAgYnl0ZWNv
ZGUvRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmNwcAogYnl0ZWNvZGUvRGVmZXJyZWRTb3Vy
Y2VEdW1wLmNwcAogYnl0ZWNvZGUvRGlyZWN0RXZhbENvZGVDYWNoZS5jcHAKIGJ5dGVjb2RlL0V2
YWxDb2RlQmxvY2suY3BwCi1ieXRlY29kZS9FeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmNwcAog
Ynl0ZWNvZGUvRXhlY3V0aW9uQ291bnRlci5jcHAKIGJ5dGVjb2RlL0V4aXRLaW5kLmNwcAogYnl0
ZWNvZGUvRXhpdGluZ0pJVFR5cGUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suY3BwCmluZGV4IDY4M2E5NjhmZDBlNWI1MWEwNmMyNzI0Y2RmNmIwMmM0ODFm
MDI3OGEuLmY5ZjZhZDFiMjZlNzJhZTg0N2IzMzVhYzIxYjg4ODA0ZmY0ZTQ0NzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC01MSw3ICs1MSw2
IEBACiAjaW5jbHVkZSAiR2V0UHV0SW5mby5oIgogI2luY2x1ZGUgIklubGluZUNhbGxGcmFtZS5o
IgogI2luY2x1ZGUgIkludGVycHJldGVySW5saW5lcy5oIgotI2luY2x1ZGUgIklzb0NlbGxTZXRJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSklUTWF0aElDLmgiCiAjaW5j
bHVkZSAiSlNCaWdJbnQuaCIKQEAgLTMzMCwxOSArMzI5LDIwIEBAIENvZGVCbG9jazo6Q29kZUJs
b2NrKFZNKiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENvcHlQYXJzZWRCbG9ja1RhZywgQ29k
ZUJsb2NrCiAgICAgLCBtX29wdGltaXphdGlvbkRlbGF5Q291bnRlcigwKQogICAgICwgbV9yZW9w
dGltaXphdGlvblJldHJ5Q291bnRlcigwKQogICAgICwgbV9jcmVhdGlvblRpbWUoTW9ub3Rvbmlj
VGltZTo6bm93KCkpCisgICAgLCBtX3VuY29uZGl0aW9uYWxGaW5hbGl6ZXIobWFrZVBvaXNvbmVk
VW5pcXVlPFVuY29uZGl0aW9uYWxGaW5hbGl6ZXI+KCp0aGlzKSkKKyAgICAsIG1fd2Vha1JlZmVy
ZW5jZUhhcnZlc3RlcihtYWtlUG9pc29uZWRVbmlxdWU8V2Vha1JlZmVyZW5jZUhhcnZlc3Rlcj4o
KnRoaXMpKQogeworICAgIG1fdmlzaXRXZWFrbHlIYXNCZWVuQ2FsbGVkID0gZmFsc2U7CisKICAg
ICBBU1NFUlQoaGVhcCgpLT5pc0RlZmVycmVkKCkpOwogICAgIEFTU0VSVChtX3Njb3BlUmVnaXN0
ZXIuaXNMb2NhbCgpKTsKIAogICAgIHNldE51bVBhcmFtZXRlcnMob3RoZXIubnVtUGFyYW1ldGVy
cygpKTsKLSAgICAKLSAgICB2bS0+aGVhcC5jb2RlQmxvY2tTZXQoKS5hZGQodGhpcyk7CiB9CiAK
IHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIENvcHlQYXJzZWRCbG9ja1Rh
ZywgQ29kZUJsb2NrJiBvdGhlcikKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Ci0g
ICAgZmluaXNoQ3JlYXRpb25Db21tb24odm0pOwogCiAgICAgb3B0aW1pemVBZnRlcldhcm1VcCgp
OwogICAgIGppdEFmdGVyV2FybVVwKCk7CkBAIC0zNTQsNiArMzU0LDggQEAgdm9pZCBDb2RlQmxv
Y2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgQ29weVBhcnNlZEJsb2NrVGFnLCBDb2RlQmxvY2sm
IG90aGVyKQogICAgICAgICBtX3JhcmVEYXRhLT5tX3N3aXRjaEp1bXBUYWJsZXMgPSBvdGhlci5t
X3JhcmVEYXRhLT5tX3N3aXRjaEp1bXBUYWJsZXM7CiAgICAgICAgIG1fcmFyZURhdGEtPm1fc3Ry
aW5nU3dpdGNoSnVtcFRhYmxlcyA9IG90aGVyLm1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVt
cFRhYmxlczsKICAgICB9CisgICAgCisgICAgaGVhcCgpLT5tX2NvZGVCbG9ja3MtPmFkZCh0aGlz
KTsKIH0KIAogQ29kZUJsb2NrOjpDb2RlQmxvY2soVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZENvZGVCbG9jayog
dW5saW5rZWRDb2RlQmxvY2ssCkBAIC0zODcsMTQgKzM4OSwxNiBAQCBDb2RlQmxvY2s6OkNvZGVC
bG9jayhWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25l
ckV4ZWN1dAogICAgICwgbV9vcHRpbWl6YXRpb25EZWxheUNvdW50ZXIoMCkKICAgICAsIG1fcmVv
cHRpbWl6YXRpb25SZXRyeUNvdW50ZXIoMCkKICAgICAsIG1fY3JlYXRpb25UaW1lKE1vbm90b25p
Y1RpbWU6Om5vdygpKQorICAgICwgbV91bmNvbmRpdGlvbmFsRmluYWxpemVyKG1ha2VQb2lzb25l
ZFVuaXF1ZTxVbmNvbmRpdGlvbmFsRmluYWxpemVyPigqdGhpcykpCisgICAgLCBtX3dlYWtSZWZl
cmVuY2VIYXJ2ZXN0ZXIobWFrZVBvaXNvbmVkVW5pcXVlPFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXI+
KCp0aGlzKSkKIHsKKyAgICBtX3Zpc2l0V2Vha2x5SGFzQmVlbkNhbGxlZCA9IGZhbHNlOworCiAg
ICAgQVNTRVJUKGhlYXAoKS0+aXNEZWZlcnJlZCgpKTsKICAgICBBU1NFUlQobV9zY29wZVJlZ2lz
dGVyLmlzTG9jYWwoKSk7CiAKICAgICBBU1NFUlQobV9zb3VyY2UpOwogICAgIHNldE51bVBhcmFt
ZXRlcnModW5saW5rZWRDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSk7Ci0gICAgCi0gICAgdm0t
PmhlYXAuY29kZUJsb2NrU2V0KCkuYWRkKHRoaXMpOwogfQogCiAvLyBUaGUgbWFpbiBwdXJwb3Nl
IG9mIHRoaXMgZnVuY3Rpb24gaXMgdG8gZ2VuZXJhdGUgbGlua2VkIGJ5dGVjb2RlIGZyb20gdW5s
aW5rZWQgYnl0ZWNvZGUuIFRoZSBwcm9jZXNzCkBAIC00MDksNyArNDEzLDYgQEAgYm9vbCBDb2Rl
QmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVj
dXRhYmxlLCBVbmxpbmsKICAgICBKU1Njb3BlKiBzY29wZSkKIHsKICAgICBCYXNlOjpmaW5pc2hD
cmVhdGlvbih2bSk7Ci0gICAgZmluaXNoQ3JlYXRpb25Db21tb24odm0pOwogCiAgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKQEAgLTg0NiwyNiArODQ5LDE5
IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFi
bGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgaWYgKE9wdGlvbnM6OmR1bXBHZW5lcmF0
ZWRCeXRlY29kZXMoKSkKICAgICAgICAgZHVtcEJ5dGVjb2RlKCk7CiAKKyAgICBoZWFwKCktPm1f
Y29kZUJsb2Nrcy0+YWRkKHRoaXMpOwogICAgIGhlYXAoKS0+cmVwb3J0RXh0cmFNZW1vcnlBbGxv
Y2F0ZWQobV9pbnN0cnVjdGlvbnMuc2l6ZSgpICogc2l6ZW9mKEluc3RydWN0aW9uKSk7CiAKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uQ29tbW9u
KFZNJiB2bSkKLXsKLSAgICBtX293bmVyRWRnZS5zZXQodm0sIHRoaXMsIEV4ZWN1dGFibGVUb0Nv
ZGVCbG9ja0VkZ2U6OmNyZWF0ZSh2bSwgdGhpcykpOwotfQotCiBDb2RlQmxvY2s6On5Db2RlQmxv
Y2soKQogewogICAgIFZNJiB2bSA9ICptX3BvaXNvbmVkVk07Ci0KLSAgICB2bS5oZWFwLmNvZGVC
bG9ja1NldCgpLnJlbW92ZSh0aGlzKTsKLSAgICAKICAgICBpZiAoVU5MSUtFTFkodm0ubV9wZXJC
eXRlY29kZVByb2ZpbGVyKSkKICAgICAgICAgdm0ubV9wZXJCeXRlY29kZVByb2ZpbGVyLT5ub3Rp
ZnlEZXN0cnVjdGlvbih0aGlzKTsKIAotICAgIGlmICghdm0uaGVhcC5pc1NodXR0aW5nRG93bigp
ICYmIHVubGlua2VkQ29kZUJsb2NrKCktPmRpZE9wdGltaXplKCkgPT0gTWl4ZWRUcmlTdGF0ZSkK
KyAgICBpZiAodW5saW5rZWRDb2RlQmxvY2soKS0+ZGlkT3B0aW1pemUoKSA9PSBNaXhlZFRyaVN0
YXRlKQogICAgICAgICB1bmxpbmtlZENvZGVCbG9jaygpLT5zZXREaWRPcHRpbWl6ZShGYWxzZVRy
aVN0YXRlKTsKIAogI2lmIEVOQUJMRShWRVJCT1NFX1ZBTFVFX1BST0ZJTEUpCkBAIC05NzksNiAr
OTc1LDU4IEBAIENvZGVCbG9jayogQ29kZUJsb2NrOjpzcGVjaWFsT1NSRW50cnlCbG9ja09yTnVs
bCgpCiAjZW5kaWYgLy8gRU5BQkxFKEZUTF9KSVQpCiB9CiAKK3ZvaWQgQ29kZUJsb2NrOjp2aXNp
dFdlYWtseShTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBDb25jdXJyZW50SlNMb2NrZXIg
bG9ja2VyKG1fbG9jayk7CisgICAgaWYgKG1fdmlzaXRXZWFrbHlIYXNCZWVuQ2FsbGVkKQorICAg
ICAgICByZXR1cm47CisgICAgCisgICAgbV92aXNpdFdlYWtseUhhc0JlZW5DYWxsZWQgPSB0cnVl
OworCisgICAgaWYgKEhlYXA6OmlzTWFya2VkKHRoaXMpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBpZiAoc2hvdWxkVmlzaXRTdHJvbmdseShsb2NrZXIpKSB7CisgICAgICAgIHZpc2l0b3IuYXBw
ZW5kVW5iYXJyaWVyZWQodGhpcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAg
Ly8gVGhlcmUgYXJlIHR3byB0aGluZ3MgdGhhdCBtYXkgdXNlIHVuY29uZGl0aW9uYWwgZmluYWxp
emVyczogaW5saW5lIGNhY2hlIGNsZWFyaW5nCisgICAgLy8gYW5kIGpldHRpc29uaW5nLiBUaGUg
cHJvYmFiaWxpdHkgb2YgdXMgd2FudGluZyB0byBkbyBhdCBsZWFzdCBvbmUgb2YgdGhvc2UgdGhp
bmdzCisgICAgLy8gaXMgcHJvYmFibHkgcXVpdGUgY2xvc2UgdG8gMS4gU28gd2UgYWRkIG9uZSBu
byBtYXR0ZXIgd2hhdCBhbmQgd2hlbiBpdCBydW5zLCBpdAorICAgIC8vIGZpZ3VyZXMgb3V0IHdo
ZXRoZXIgaXQgaGFzIGFueSB3b3JrIHRvIGRvLgorICAgIHZpc2l0b3IuYWRkVW5jb25kaXRpb25h
bEZpbmFsaXplcihtX3VuY29uZGl0aW9uYWxGaW5hbGl6ZXIuZ2V0KCkpOworCisgICAgaWYgKCFK
SVRDb2RlOjppc09wdGltaXppbmdKSVQoaml0VHlwZSgpKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgLy8gSWYgd2UgamV0dGlzb24gb3Vyc2VsdmVzIHdlJ2xsIGluc3RhbGwgb3VyIGFsdGVybmF0
aXZlLCBzbyBtYWtlIHN1cmUgdGhhdCBpdAorICAgIC8vIHN1cnZpdmVzIEdDIGV2ZW4gaWYgd2Ug
ZG9uJ3QuCisgICAgdmlzaXRvci5hcHBlbmQobV9hbHRlcm5hdGl2ZSk7CisgICAgCisgICAgLy8g
VGhlcmUgYXJlIHR3byB0aGluZ3MgdGhhdCB3ZSB1c2Ugd2VhayByZWZlcmVuY2UgaGFydmVzdGVy
cyBmb3I6IERGRyBmaXhwb2ludCBmb3IKKyAgICAvLyBqZXR0aXNvbmluZywgYW5kIHRyeWluZyB0
byBmaW5kIHN0cnVjdHVyZXMgdGhhdCB3b3VsZCBiZSBsaXZlIGJhc2VkIG9uIHNvbWUKKyAgICAv
LyBpbmxpbmUgY2FjaGUuIFNvIGl0IG1ha2VzIHNlbnNlIHRvIHJlZ2lzdGVyIHRoZW0gcmVnYXJk
bGVzcy4KKyAgICB2aXNpdG9yLmFkZFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIobV93ZWFrUmVmZXJl
bmNlSGFydmVzdGVyLmdldCgpKTsKKworI2lmIEVOQUJMRShERkdfSklUKQorICAgIC8vIFdlIGdl
dCBoZXJlIGlmIHdlJ3JlIGxpdmUgaW4gdGhlIHNlbnNlIHRoYXQgb3VyIG93bmVyIGV4ZWN1dGFi
bGUgaXMgbGl2ZSwKKyAgICAvLyBidXQgd2UncmUgbm90IHlldCBsaXZlIGZvciBzdXJlIGluIGFu
b3RoZXIgc2Vuc2U6IHdlIG1heSB5ZXQgZGVjaWRlIHRoYXQgdGhpcworICAgIC8vIGNvZGUgYmxv
Y2sgc2hvdWxkIGJlIGpldHRpc29uZWQgYmFzZWQgb24gaXRzIG91dGdvaW5nIHdlYWsgcmVmZXJl
bmNlcyBiZWluZworICAgIC8vIHN0YWxlLiBTZXQgYSBmbGFnIHRvIGluZGljYXRlIHRoYXQgd2Un
cmUgc3RpbGwgYXNzdW1pbmcgdGhhdCB3ZSdyZSBkZWFkLCBhbmQKKyAgICAvLyBwZXJmb3JtIG9u
ZSByb3VuZCBvZiBkZXRlcm1pbmluZyBpZiB3ZSdyZSBsaXZlLiBUaGUgR0MgbWF5IGRldGVybWlu
ZSwgYmFzZWQgb24KKyAgICAvLyBlaXRoZXIgdXMgbWFya2luZyBhZGRpdGlvbmFsIG9iamVjdHMs
IG9yIGJ5IG90aGVyIG9iamVjdHMgYmVpbmcgbWFya2VkIGZvcgorICAgIC8vIG90aGVyIHJlYXNv
bnMsIHRoYXQgdGhpcyBpdGVyYXRpb24gc2hvdWxkIHJ1biBhZ2FpbjsgaXQgd2lsbCBub3RpZnkg
dXMgb2YgdGhpcworICAgIC8vIGRlY2lzaW9uIGJ5IGNhbGxpbmcgaGFydmVzdFdlYWtSZWZlcmVu
Y2VzKCkuCisKKyAgICBtX2FsbFRyYW5zaXRpb25zSGF2ZUJlZW5NYXJrZWQgPSBmYWxzZTsKKyAg
ICBwcm9wYWdhdGVUcmFuc2l0aW9ucyhsb2NrZXIsIHZpc2l0b3IpOworCisgICAgbV9qaXRDb2Rl
LT5kZmdDb21tb24oKS0+bGl2ZW5lc3NIYXNCZWVuUHJvdmVkID0gZmFsc2U7CisgICAgZGV0ZXJt
aW5lTGl2ZW5lc3MobG9ja2VyLCB2aXNpdG9yKTsKKyNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkK
K30KKwogc2l6ZV90IENvZGVCbG9jazo6ZXN0aW1hdGVkU2l6ZShKU0NlbGwqIGNlbGwpCiB7CiAg
ICAgQ29kZUJsb2NrKiB0aGlzT2JqZWN0ID0ganNDYXN0PENvZGVCbG9jayo+KGNlbGwpOwpAQCAt
OTkzLDEzICsxMDQxLDE4IEBAIHZvaWQgQ29kZUJsb2NrOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCog
Y2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgQ29kZUJsb2NrKiB0aGlzT2JqZWN0ID0g
anNDYXN0PENvZGVCbG9jayo+KGNlbGwpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
dGhpc09iamVjdCwgaW5mbygpKTsKICAgICBKU0NlbGw6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVj
dCwgdmlzaXRvcik7Ci0gICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9vd25lckVkZ2Up
OwogICAgIHRoaXNPYmplY3QtPnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CiB9CiAKIHZvaWQgQ29k
ZUJsb2NrOjp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIENvbmN1
cnJlbnRKU0xvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICAvLyBUaGVyZSBhcmUgdHdvIHRoaW5n
cyB0aGF0IG1heSB1c2UgdW5jb25kaXRpb25hbCBmaW5hbGl6ZXJzOiBpbmxpbmUgY2FjaGUgY2xl
YXJpbmcKKyAgICAvLyBhbmQgamV0dGlzb25pbmcuIFRoZSBwcm9iYWJpbGl0eSBvZiB1cyB3YW50
aW5nIHRvIGRvIGF0IGxlYXN0IG9uZSBvZiB0aG9zZSB0aGluZ3MKKyAgICAvLyBpcyBwcm9iYWJs
eSBxdWl0ZSBjbG9zZSB0byAxLiBTbyB3ZSBhZGQgb25lIG5vIG1hdHRlciB3aGF0IGFuZCB3aGVu
IGl0IHJ1bnMsIGl0CisgICAgLy8gZmlndXJlcyBvdXQgd2hldGhlciBpdCBoYXMgYW55IHdvcmsg
dG8gZG8uCisgICAgdmlzaXRvci5hZGRVbmNvbmRpdGlvbmFsRmluYWxpemVyKG1fdW5jb25kaXRp
b25hbEZpbmFsaXplci5nZXQoKSk7CisKICAgICBpZiAoQ29kZUJsb2NrKiBvdGhlckJsb2NrID0g
c3BlY2lhbE9TUkVudHJ5QmxvY2tPck51bGwoKSkKICAgICAgICAgdmlzaXRvci5hcHBlbmRVbmJh
cnJpZXJlZChvdGhlckJsb2NrKTsKIApAQCAtMTAxOCw4ICsxMDcxLDkgQEAgdm9pZCBDb2RlQmxv
Y2s6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAKICAgICBzdHJvbmdseVZp
c2l0U3Ryb25nUmVmZXJlbmNlcyhsb2NrZXIsIHZpc2l0b3IpOwogICAgIHN0cm9uZ2x5VmlzaXRX
ZWFrUmVmZXJlbmNlcyhsb2NrZXIsIHZpc2l0b3IpOwotICAgIAotICAgIFZNOjpTcGFjZUFuZEZp
bmFsaXplclNldDo6ZmluYWxpemVyU2V0Rm9yKCpzdWJzcGFjZSgpKS5hZGQodGhpcyk7CisKKyAg
ICBtX2FsbFRyYW5zaXRpb25zSGF2ZUJlZW5NYXJrZWQgPSBmYWxzZTsKKyAgICBwcm9wYWdhdGVU
cmFuc2l0aW9ucyhsb2NrZXIsIHZpc2l0b3IpOwogfQogCiBib29sIENvZGVCbG9jazo6c2hvdWxk
VmlzaXRTdHJvbmdseShjb25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlcikKQEAgLTExMTAs
OCArMTE2NCwxMiBAQCB2b2lkIENvZGVCbG9jazo6cHJvcGFnYXRlVHJhbnNpdGlvbnMoY29uc3Qg
Q29uY3VycmVudEpTTG9ja2VyJiwgU2xvdFZpc2l0b3ImIHZpcwogewogICAgIFVOVVNFRF9QQVJB
TSh2aXNpdG9yKTsKIAotICAgIFZNJiB2bSA9ICptX3BvaXNvbmVkVk07CisgICAgaWYgKG1fYWxs
VHJhbnNpdGlvbnNIYXZlQmVlbk1hcmtlZCkKKyAgICAgICAgcmV0dXJuOwogCisgICAgVk0mIHZt
ID0gKm1fcG9pc29uZWRWTTsKKyAgICBib29sIGFsbEFyZU1hcmtlZFNvRmFyID0gdHJ1ZTsKKyAg
ICAgICAgCiAgICAgaWYgKGppdFR5cGUoKSA9PSBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKSB7
CiAgICAgICAgIGNvbnN0IFZlY3Rvcjx1bnNpZ25lZD4mIHByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rp
b25zID0gbV91bmxpbmtlZENvZGUtPnByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zKCk7CiAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMuc2l6
ZSgpOyArK2kpIHsKQEAgLTExMjgsNiArMTE4Niw4IEBAIHZvaWQgQ29kZUJsb2NrOjpwcm9wYWdh
dGVUcmFuc2l0aW9ucyhjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBTbG90VmlzaXRvciYgdmlz
CiAgICAgICAgICAgICAgICAgICAgIHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmdldChuZXdT
dHJ1Y3R1cmVJRCk7CiAgICAgICAgICAgICAgICAgaWYgKEhlYXA6OmlzTWFya2VkKG9sZFN0cnVj
dHVyZSkpCiAgICAgICAgICAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQobmV3
U3RydWN0dXJlKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGFs
bEFyZU1hcmtlZFNvRmFyID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBkZWZhdWx0OgpAQCAtMTEzOSw3ICsxMTk5LDcgQEAgdm9pZCBD
b2RlQmxvY2s6OnByb3BhZ2F0ZVRyYW5zaXRpb25zKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYs
IFNsb3RWaXNpdG9yJiB2aXMKICNpZiBFTkFCTEUoSklUKQogICAgIGlmIChKSVRDb2RlOjppc0pJ
VChqaXRUeXBlKCkpKSB7CiAgICAgICAgIGZvciAoYXV0byBpdGVyID0gbV9zdHViSW5mb3MuYmVn
aW4oKTsgISFpdGVyOyArK2l0ZXIpCi0gICAgICAgICAgICAoKml0ZXIpLT5wcm9wYWdhdGVUcmFu
c2l0aW9ucyh2aXNpdG9yKTsKKyAgICAgICAgICAgIGFsbEFyZU1hcmtlZFNvRmFyICY9ICgqaXRl
ciktPnByb3BhZ2F0ZVRyYW5zaXRpb25zKHZpc2l0b3IpOwogICAgIH0KICNlbmRpZiAvLyBFTkFC
TEUoSklUKQogICAgIApAQCAtMTE0Nyw3ICsxMjA3LDcgQEAgdm9pZCBDb2RlQmxvY2s6OnByb3Bh
Z2F0ZVRyYW5zaXRpb25zKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIFNsb3RWaXNpdG9yJiB2
aXMKICAgICBpZiAoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGppdFR5cGUoKSkpIHsKICAgICAg
ICAgREZHOjpDb21tb25EYXRhKiBkZmdDb21tb24gPSBtX2ppdENvZGUtPmRmZ0NvbW1vbigpOwog
ICAgICAgICBmb3IgKGF1dG8mIHdlYWtSZWZlcmVuY2UgOiBkZmdDb21tb24tPndlYWtTdHJ1Y3R1
cmVSZWZlcmVuY2VzKQotICAgICAgICAgICAgd2Vha1JlZmVyZW5jZS0+bWFya0lmQ2hlYXAodmlz
aXRvcik7CisgICAgICAgICAgICBhbGxBcmVNYXJrZWRTb0ZhciAmPSB3ZWFrUmVmZXJlbmNlLT5t
YXJrSWZDaGVhcCh2aXNpdG9yKTsKIAogICAgICAgICBmb3IgKGF1dG8mIHRyYW5zaXRpb24gOiBk
ZmdDb21tb24tPnRyYW5zaXRpb25zKSB7CiAgICAgICAgICAgICBpZiAoc2hvdWxkTWFya1RyYW5z
aXRpb24odHJhbnNpdGlvbikpIHsKQEAgLTExNzEsMTAgKzEyMzEsMTQgQEAgdm9pZCBDb2RlQmxv
Y2s6OnByb3BhZ2F0ZVRyYW5zaXRpb25zKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIFNsb3RW
aXNpdG9yJiB2aXMKICAgICAgICAgICAgICAgICAvLyBsaXZlKS4KIAogICAgICAgICAgICAgICAg
IHZpc2l0b3IuYXBwZW5kKHRyYW5zaXRpb24ubV90byk7Ci0gICAgICAgICAgICB9CisgICAgICAg
ICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBhbGxBcmVNYXJrZWRTb0ZhciA9IGZhbHNlOwog
ICAgICAgICB9CiAgICAgfQogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQorICAgIAorICAgIGlm
IChhbGxBcmVNYXJrZWRTb0ZhcikKKyAgICAgICAgbV9hbGxUcmFuc2l0aW9uc0hhdmVCZWVuTWFy
a2VkID0gdHJ1ZTsKIH0KIAogdm9pZCBDb2RlQmxvY2s6OmRldGVybWluZUxpdmVuZXNzKGNvbnN0
IENvbmN1cnJlbnRKU0xvY2tlciYsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQpAQCAtMTE4MiwxNiAr
MTI0NiwxMSBAQCB2b2lkIENvZGVCbG9jazo6ZGV0ZXJtaW5lTGl2ZW5lc3MoY29uc3QgQ29uY3Vy
cmVudEpTTG9ja2VyJiwgU2xvdFZpc2l0b3ImIHZpc2l0bwogICAgIFVOVVNFRF9QQVJBTSh2aXNp
dG9yKTsKICAgICAKICNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICBpZiAoSGVhcDo6aXNNYXJrZWQo
dGhpcykpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICAvLyBJbiByYXJlIGFuZCB3ZWlyZCBj
YXNlcywgdGhpcyBjb3VsZCBiZSBjYWxsZWQgb24gYSBiYXNlbGluZSBDb2RlQmxvY2suIE9uZSB0
aGF0IEkgZm91bmQgd2FzCi0gICAgLy8gdGhhdCB3ZSBtaWdodCBkZWNpZGUgdGhhdCB0aGUgQ29k
ZUJsb2NrIHNob3VsZCBiZSBqZXR0aXNvbmVkIGR1ZSB0byBvbGQgYWdlLCBzbyB0aGUKLSAgICAv
LyBpc01hcmtlZCBjaGVjayBkb2Vzbid0IHByb3RlY3QgdXMuCi0gICAgaWYgKCFKSVRDb2RlOjpp
c09wdGltaXppbmdKSVQoaml0VHlwZSgpKSkKKyAgICAvLyBDaGVjayBpZiB3ZSBoYXZlIGFueSBy
ZW1haW5pbmcgd29yayB0byBkby4KKyAgICBERkc6OkNvbW1vbkRhdGEqIGRmZ0NvbW1vbiA9IG1f
aml0Q29kZS0+ZGZnQ29tbW9uKCk7CisgICAgaWYgKGRmZ0NvbW1vbi0+bGl2ZW5lc3NIYXNCZWVu
UHJvdmVkKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgREZHOjpDb21tb25EYXRhKiBkZmdD
b21tb24gPSBtX2ppdENvZGUtPmRmZ0NvbW1vbigpOwogICAgIC8vIE5vdyBjaGVjayBhbGwgb2Yg
b3VyIHdlYWsgcmVmZXJlbmNlcy4gSWYgYWxsIG9mIHRoZW0gYXJlIGxpdmUsIHRoZW4gd2UKICAg
ICAvLyBoYXZlIHByb3ZlZCBsaXZlbmVzcyBhbmQgc28gd2Ugc2NhbiBvdXIgc3Ryb25nIHJlZmVy
ZW5jZXMuIElmIGF0IGVuZCBvZgogICAgIC8vIEdDIHdlIHN0aWxsIGhhdmUgbm90IHByb3ZlZCBs
aXZlbmVzcywgdGhlbiB0aGlzIGNvZGUgYmxvY2sgaXMgdG9hc3QuCkBAIC0xMjIwLDEwICsxMjc5
LDE3IEBAIHZvaWQgQ29kZUJsb2NrOjpkZXRlcm1pbmVMaXZlbmVzcyhjb25zdCBDb25jdXJyZW50
SlNMb2NrZXImLCBTbG90VmlzaXRvciYgdmlzaXRvCiAgICAgCiAgICAgLy8gQWxsIHdlYWsgcmVm
ZXJlbmNlcyBhcmUgbGl2ZS4gUmVjb3JkIHRoaXMgaW5mb3JtYXRpb24gc28gd2UgZG9uJ3QKICAg
ICAvLyBjb21lIGJhY2sgaGVyZSBhZ2FpbiwgYW5kIHNjYW4gdGhlIHN0cm9uZyByZWZlcmVuY2Vz
LgorICAgIGRmZ0NvbW1vbi0+bGl2ZW5lc3NIYXNCZWVuUHJvdmVkID0gdHJ1ZTsKICAgICB2aXNp
dG9yLmFwcGVuZFVuYmFycmllcmVkKHRoaXMpOwogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQog
fQogCit2b2lkIENvZGVCbG9jazo6V2Vha1JlZmVyZW5jZUhhcnZlc3Rlcjo6dmlzaXRXZWFrUmVm
ZXJlbmNlcyhTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBjb2RlQmxvY2sucHJvcGFnYXRl
VHJhbnNpdGlvbnMoTm9Mb2NraW5nTmVjZXNzYXJ5LCB2aXNpdG9yKTsKKyAgICBjb2RlQmxvY2su
ZGV0ZXJtaW5lTGl2ZW5lc3MoTm9Mb2NraW5nTmVjZXNzYXJ5LCB2aXNpdG9yKTsKK30KKwogdm9p
ZCBDb2RlQmxvY2s6OmNsZWFyTExJbnRHZXRCeUlkQ2FjaGUoSW5zdHJ1Y3Rpb24qIGluc3RydWN0
aW9uKQogewogICAgIGluc3RydWN0aW9uWzBdLnUub3Bjb2RlID0gTExJbnQ6OmdldE9wY29kZShv
cF9nZXRfYnlfaWQpOwpAQCAtMTM1NSwxOSArMTQyMSwyNSBAQCB2b2lkIENvZGVCbG9jazo6Zmlu
YWxpemVCYXNlbGluZUpJVElubGluZUNhY2hlcygpCiAjZW5kaWYKIH0KIAotdm9pZCBDb2RlQmxv
Y2s6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KFZNJikKK3ZvaWQgQ29kZUJsb2NrOjpVbmNvbmRp
dGlvbmFsRmluYWxpemVyOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSgpCiB7Ci0gICAgdXBkYXRl
QWxsUHJlZGljdGlvbnMoKTsKKyAgICBjb2RlQmxvY2sudXBkYXRlQWxsUHJlZGljdGlvbnMoKTsK
ICAgICAKLSAgICBpZiAoSklUQ29kZTo6Y291bGRCZUludGVycHJldGVkKGppdFR5cGUoKSkpCi0g
ICAgICAgIGZpbmFsaXplTExJbnRJbmxpbmVDYWNoZXMoKTsKKyAgICBpZiAoIUhlYXA6OmlzTWFy
a2VkKCZjb2RlQmxvY2spKSB7CisgICAgICAgIGlmIChjb2RlQmxvY2suc2hvdWxkSmV0dGlzb25E
dWVUb1dlYWtSZWZlcmVuY2UoKSkKKyAgICAgICAgICAgIGNvZGVCbG9jay5qZXR0aXNvbihQcm9m
aWxlcjo6SmV0dGlzb25EdWVUb1dlYWtSZWZlcmVuY2UpOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBjb2RlQmxvY2suamV0dGlzb24oUHJvZmlsZXI6OkpldHRpc29uRHVlVG9PbGRBZ2UpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKEpJVENvZGU6OmNvdWxkQmVJbnRlcnBy
ZXRlZChjb2RlQmxvY2suaml0VHlwZSgpKSkKKyAgICAgICAgY29kZUJsb2NrLmZpbmFsaXplTExJ
bnRJbmxpbmVDYWNoZXMoKTsKIAogI2lmIEVOQUJMRShKSVQpCi0gICAgaWYgKCEhaml0Q29kZSgp
KQotICAgICAgICBmaW5hbGl6ZUJhc2VsaW5lSklUSW5saW5lQ2FjaGVzKCk7CisgICAgaWYgKCEh
Y29kZUJsb2NrLmppdENvZGUoKSkKKyAgICAgICAgY29kZUJsb2NrLmZpbmFsaXplQmFzZWxpbmVK
SVRJbmxpbmVDYWNoZXMoKTsKICNlbmRpZgotCi0gICAgVk06OlNwYWNlQW5kRmluYWxpemVyU2V0
OjpmaW5hbGl6ZXJTZXRGb3IoKnN1YnNwYWNlKCkpLnJlbW92ZSh0aGlzKTsKIH0KIAogdm9pZCBD
b2RlQmxvY2s6OmdldFN0dWJJbmZvTWFwKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIFN0dWJJ
bmZvTWFwJiByZXN1bHQpCkBAIC0xNTIxLDcgKzE1OTMsNyBAQCB2b2lkIENvZGVCbG9jazo6c3Ry
b25nbHlWaXNpdFN0cm9uZ1JlZmVyZW5jZXMoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2Nr
ZXIsCiAgICAgVU5VU0VEX1BBUkFNKGxvY2tlcik7CiAgICAgCiAgICAgdmlzaXRvci5hcHBlbmQo
bV9nbG9iYWxPYmplY3QpOwotICAgIHZpc2l0b3IuYXBwZW5kKG1fb3duZXJFeGVjdXRhYmxlKTsg
Ly8gVGhpcyBpcyBleHRyYSBpbXBvcnRhbnQgc2luY2UgaXQgY2F1c2VzIHRoZSBFeGVjdXRhYmxl
VG9Db2RlQmxvY2tFZGdlIHRvIGJlIG1hcmtlZC4KKyAgICB2aXNpdG9yLmFwcGVuZChtX293bmVy
RXhlY3V0YWJsZSk7CiAgICAgdmlzaXRvci5hcHBlbmQobV91bmxpbmtlZENvZGUpOwogICAgIGlm
IChtX3JhcmVEYXRhKQogICAgICAgICBtX3JhcmVEYXRhLT5tX2RpcmVjdEV2YWxDb2RlQ2FjaGUu
dmlzaXRBZ2dyZWdhdGUodmlzaXRvcik7CkBAIC0zMDYwLDYgKzMxMzIsNyBAQCB2b2lkIENvZGVC
bG9jazo6aml0U29vbigpCiBib29sIENvZGVCbG9jazo6aGFzSW5zdGFsbGVkVk1UcmFwQnJlYWtw
b2ludHMoKSBjb25zdAogewogI2lmIEVOQUJMRShTSUdOQUxfQkFTRURfVk1fVFJBUFMpCisgICAg
CiAgICAgLy8gVGhpcyBmdW5jdGlvbiBtYXkgYmUgY2FsbGVkIGZyb20gYSBzaWduYWwgaGFuZGxl
ci4gV2UgbmVlZCB0byBiZQogICAgIC8vIGNhcmVmdWwgdG8gbm90IGNhbGwgYW55dGhpbmcgdGhh
dCBpcyBub3Qgc2lnbmFsIGhhbmRsZXIgc2FmZSwgZS5nLgogICAgIC8vIHdlIHNob3VsZCBub3Qg
cGVydHVyYiB0aGUgcmVmQ291bnQgb2YgbV9qaXRDb2RlLgpAQCAtMzA3OSw4ICszMTUyLDcgQEAg
Ym9vbCBDb2RlQmxvY2s6Omluc3RhbGxWTVRyYXBCcmVha3BvaW50cygpCiAgICAgLy8gd2Ugc2hv
dWxkIG5vdCBwZXJ0dXJiIHRoZSByZWZDb3VudCBvZiBtX2ppdENvZGUuCiAgICAgaWYgKCFKSVRD
b2RlOjppc09wdGltaXppbmdKSVQoaml0VHlwZSgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIGF1dG8mIGNvbW1vbkRhdGEgPSAqbV9qaXRDb2RlLT5kZmdDb21tb24oKTsKLSAgICBjb21t
b25EYXRhLmluc3RhbGxWTVRyYXBCcmVha3BvaW50cyh0aGlzKTsKKyAgICBtX2ppdENvZGUtPmRm
Z0NvbW1vbigpLT5pbnN0YWxsVk1UcmFwQnJlYWtwb2ludHModGhpcyk7CiAgICAgcmV0dXJuIHRy
dWU7CiAjZWxzZQogICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOwpAQCAtMzEyMCw2ICsz
MTkyLDggQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBNYXRoSUNTdGF0cygpCiAgICAgICAgICAgICBu
dW1TdWJzKys7CiAgICAgICAgICAgICB0b3RhbFN1YlNpemUgKz0gc3ViSUMtPmNvZGVTaXplKCk7
CiAgICAgICAgIH0KKworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfTsKICAgICBoZWFwKCkt
PmZvckVhY2hDb2RlQmxvY2soY291bnRJQ3MpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmgKaW5kZXggZmI3ZTY4YmE5N2Q1N2M3NzU5ZmQ3NmRiZTkzZjZjOTgx
NDk2YjI2Mi4uYzEwNzlmZmY0ODA4ZjI0YjdiZTRlMjY4Mjc3MTg4YzhiZjgzY2NhNyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtODcsNyArODcsNiBA
QCBzdHJ1Y3QgT1NSRXhpdFN0YXRlOwogY2xhc3MgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOwog
Y2xhc3MgQ29kZUJsb2NrU2V0OwogY2xhc3MgRXhlY1N0YXRlOwotY2xhc3MgRXhlY3V0YWJsZVRv
Q29kZUJsb2NrRWRnZTsKIGNsYXNzIEpTTW9kdWxlRW52aXJvbm1lbnQ7CiBjbGFzcyBMTEludE9m
ZnNldHNFeHRyYWN0b3I7CiBjbGFzcyBQQ1RvQ29kZU9yaWdpbk1hcDsKQEAgLTEwOCwxNSArMTA3
LDI3IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIGZyaWVuZCBjbGFz
cyBKSVQ7CiAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAorICAgIHN0
cnVjdCBVbmNvbmRpdGlvbmFsRmluYWxpemVyIDogcHVibGljIEpTQzo6VW5jb25kaXRpb25hbEZp
bmFsaXplciB7CisgICAgICAgIFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIoQ29kZUJsb2NrJiBjb2Rl
QmxvY2spCisgICAgICAgICAgICA6IGNvZGVCbG9jayhjb2RlQmxvY2spCisgICAgICAgIHsgfQor
ICAgICAgICB2b2lkIGZpbmFsaXplVW5jb25kaXRpb25hbGx5KCkgb3ZlcnJpZGU7CisgICAgICAg
IENvZGVCbG9jayYgY29kZUJsb2NrOworICAgIH07CisKKyAgICBzdHJ1Y3QgV2Vha1JlZmVyZW5j
ZUhhcnZlc3RlciA6IHB1YmxpYyBKU0M6OldlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIgeworICAgICAg
ICBXZWFrUmVmZXJlbmNlSGFydmVzdGVyKENvZGVCbG9jayYgY29kZUJsb2NrKQorICAgICAgICAg
ICAgOiBjb2RlQmxvY2soY29kZUJsb2NrKQorICAgICAgICB7IH0KKyAgICAgICAgdm9pZCB2aXNp
dFdlYWtSZWZlcmVuY2VzKFNsb3RWaXNpdG9yJikgb3ZlcnJpZGU7CisgICAgICAgIENvZGVCbG9j
ayYgY29kZUJsb2NrOworICAgIH07CisKIHB1YmxpYzoKIAogICAgIGVudW0gQ29weVBhcnNlZEJs
b2NrVGFnIHsgQ29weVBhcnNlZEJsb2NrIH07CiAKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
U3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1tb3J0
YWw7Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IHRydWU7Ci0KLSAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZT4KLSAgICBzdGF0aWMgdm9pZCBzdWJzcGFjZUZvcihWTSYpIHsg
fQogCiAgICAgREVDTEFSRV9JTkZPOwogCkBAIC0xMjYsOCArMTM3LDYgQEAgcHJvdGVjdGVkOgog
CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIENvcHlQYXJzZWRCbG9ja1RhZywgQ29kZUJs
b2NrJiBvdGhlcik7CiAgICAgYm9vbCBmaW5pc2hDcmVhdGlvbihWTSYsIFNjcmlwdEV4ZWN1dGFi
bGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRDb2RlQmxvY2sqLCBKU1Njb3BlKik7Ci0gICAg
Ci0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbkNvbW1vbihWTSYpOwogCiAgICAgV3JpdGVCYXJyaWVy
PEpTR2xvYmFsT2JqZWN0PiBtX2dsb2JhbE9iamVjdDsKIApAQCAtMTkxLDcgKzIwMCw4IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgc2l6ZV90IGVzdGltYXRlZFNpemUoSlNDZWxsKik7CiAgICAgc3Rh
dGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogICAgIHZvaWQg
dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYpOwotICAgIHZvaWQgZmluYWxpemVVbmNvbmRpdGlv
bmFsbHkoVk0mKTsKKyAgICB2b2lkIHZpc2l0V2Vha2x5KFNsb3RWaXNpdG9yJik7CisgICAgdm9p
ZCBjbGVhclZpc2l0V2Vha2x5SGFzQmVlbkNhbGxlZCgpOwogCiAgICAgdm9pZCBkdW1wU291cmNl
KCk7CiAgICAgdm9pZCBkdW1wU291cmNlKFByaW50U3RyZWFtJik7CkBAIC0zNTksOCArMzY5LDYg
QEAgcHVibGljOgogICAgIAogICAgIEV4ZWN1dGFibGVCYXNlKiBvd25lckV4ZWN1dGFibGUoKSBj
b25zdCB7IHJldHVybiBtX293bmVyRXhlY3V0YWJsZS5nZXQoKTsgfQogICAgIFNjcmlwdEV4ZWN1
dGFibGUqIG93bmVyU2NyaXB0RXhlY3V0YWJsZSgpIGNvbnN0IHsgcmV0dXJuIGpzQ2FzdDxTY3Jp
cHRFeGVjdXRhYmxlKj4obV9vd25lckV4ZWN1dGFibGUuZ2V0KCkpOyB9Ci0gICAgCi0gICAgRXhl
Y3V0YWJsZVRvQ29kZUJsb2NrRWRnZSogb3duZXJFZGdlKCkgY29uc3QgeyByZXR1cm4gbV9vd25l
ckVkZ2UuZ2V0KCk7IH0KIAogICAgIFZNKiB2bSgpIGNvbnN0IHsgcmV0dXJuIG1fcG9pc29uZWRW
TS51bnBvaXNvbmVkKCk7IH0KIApAQCAtODIxLDYgKzgyOSw4IEBAIHB1YmxpYzoKICAgICAvLyBj
b25jdXJyZW50IGNvbXBpbGF0aW9uIHRocmVhZHMgZmluaXNoIHdoYXQgdGhleSdyZSBkb2luZy4K
ICAgICBtdXRhYmxlIENvbmN1cnJlbnRKU0xvY2sgbV9sb2NrOwogCisgICAgYm9vbCBtX3Zpc2l0
V2Vha2x5SGFzQmVlbkNhbGxlZDsKKwogICAgIGJvb2wgbV9zaG91bGRBbHdheXNCZUlubGluZWQ7
IC8vIE5vdCBhIGJpdGZpZWxkIGJlY2F1c2UgdGhlIEpJVCB3YW50cyB0byBzdG9yZSB0byBpdC4K
IAogI2lmIEVOQUJMRShKSVQpCkBAIC05MDgsNyArOTE4LDYgQEAgcHJvdGVjdGVkOgogCiBwcml2
YXRlOgogICAgIGZyaWVuZCBjbGFzcyBDb2RlQmxvY2tTZXQ7Ci0gICAgZnJpZW5kIGNsYXNzIEV4
ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U7CiAKICAgICBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMm
IGxpdmVuZXNzQW5hbHlzaXNTbG93KCk7CiAgICAgCkBAIC05NzMsNyArOTgyLDYgQEAgcHJpdmF0
ZToKICAgICAgICAgfTsKICAgICB9OwogICAgIFdyaXRlQmFycmllcjxFeGVjdXRhYmxlQmFzZT4g
bV9vd25lckV4ZWN1dGFibGU7Ci0gICAgV3JpdGVCYXJyaWVyPEV4ZWN1dGFibGVUb0NvZGVCbG9j
a0VkZ2U+IG1fb3duZXJFZGdlOwogICAgIENvbnN0RXhwclBvaXNvbmVkPENvZGVCbG9ja1BvaXNv
biwgVk0qPiBtX3BvaXNvbmVkVk07CiAKICAgICBQb2lzb25lZFJlZkNvdW50ZWRBcnJheTxDb2Rl
QmxvY2tQb2lzb24sIEluc3RydWN0aW9uPiBtX2luc3RydWN0aW9uczsKQEAgLTEwMzgsNiArMTA0
Niw5IEBAIHByaXZhdGU6CiAgICAgTW9ub3RvbmljVGltZSBtX2NyZWF0aW9uVGltZTsKIAogICAg
IHN0ZDo6dW5pcXVlX3B0cjxSYXJlRGF0YT4gbV9yYXJlRGF0YTsKKworICAgIFBvaXNvbmVkVW5p
cXVlUHRyPENvZGVCbG9ja1BvaXNvbiwgVW5jb25kaXRpb25hbEZpbmFsaXplcj4gbV91bmNvbmRp
dGlvbmFsRmluYWxpemVyOworICAgIFBvaXNvbmVkVW5pcXVlUHRyPENvZGVCbG9ja1BvaXNvbiwg
V2Vha1JlZmVyZW5jZUhhcnZlc3Rlcj4gbV93ZWFrUmVmZXJlbmNlSGFydmVzdGVyOwogfTsKIAog
aW5saW5lIFJlZ2lzdGVyJiBFeGVjU3RhdGU6OnIoaW50IGluZGV4KQpAQCAtMTA2NCw2ICsxMDc1
LDExIEBAIGlubGluZSBSZWdpc3RlciYgRXhlY1N0YXRlOjp1bmNoZWNrZWRSKFZpcnR1YWxSZWdp
c3RlciByZWcpCiAgICAgcmV0dXJuIHVuY2hlY2tlZFIocmVnLm9mZnNldCgpKTsKIH0KIAoraW5s
aW5lIHZvaWQgQ29kZUJsb2NrOjpjbGVhclZpc2l0V2Vha2x5SGFzQmVlbkNhbGxlZCgpCit7Cisg
ICAgbV92aXNpdFdlYWtseUhhc0JlZW5DYWxsZWQgPSBmYWxzZTsKK30KKwogdGVtcGxhdGUgPHR5
cGVuYW1lIEV4ZWN1dGFibGVUeXBlPgogSlNPYmplY3QqIFNjcmlwdEV4ZWN1dGFibGU6OnByZXBh
cmVGb3JFeGVjdXRpb24oVk0mIHZtLCBKU0Z1bmN0aW9uKiBmdW5jdGlvbiwgSlNTY29wZSogc2Nv
cGUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCwgQ29kZUJsb2NrKiYgcmVzdWx0Q29kZUJs
b2NrKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxD
b2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FdmFsQ29kZUJsb2Nr
LmgKaW5kZXggNjc3NWMzNjJiNWQ4MDUxNDlkZDUxYWMzMjEwZTAxZDc2NGZjOTNjNS4uNGFkYjQ4
NzhiMWYxNzk2ZjZhY2E0OTE3YWY0MzMwYzZlMjM3ZDU4YiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvRXZhbENvZGVCbG9jay5oCkBAIC0zMywxNyArMzMsMTEgQEAKIAog
bmFtZXNwYWNlIEpTQyB7CiAKLWNsYXNzIEV2YWxDb2RlQmxvY2sgZmluYWwgOiBwdWJsaWMgR2xv
YmFsQ29kZUJsb2NrIHsKK2NsYXNzIEV2YWxDb2RlQmxvY2sgOiBwdWJsaWMgR2xvYmFsQ29kZUJs
b2NrIHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEdsb2JhbENvZGVCbG9jayBCYXNlOwogICAgIERF
Q0xBUkVfSU5GTzsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lPgotICAgIHN0YXRpYyBJc29TdWJz
cGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQotICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5ldmFs
Q29kZUJsb2NrU3BhY2Uuc3BhY2U7Ci0gICAgfQotCiAgICAgc3RhdGljIEV2YWxDb2RlQmxvY2sq
IGNyZWF0ZShWTSogdm0sIENvcHlQYXJzZWRCbG9ja1RhZywgRXZhbENvZGVCbG9jayYgb3RoZXIp
CiAgICAgewogICAgICAgICBFdmFsQ29kZUJsb2NrKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPEV2YWxDb2RlQmxvY2s+KHZtLT5oZWFwKSkKQEAgLTY0LDcgKzU4LDcgQEAg
cHVibGljOgogCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewot
ICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90
eXBlLCBUeXBlSW5mbyhDb2RlQmxvY2tUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cisg
ICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5
cGUsIFR5cGVJbmZvKENlbGxUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAgICAgfQog
CiAgICAgY29uc3QgSWRlbnRpZmllciYgdmFyaWFibGUodW5zaWduZWQgaW5kZXgpIHsgcmV0dXJu
IHVubGlua2VkRXZhbENvZGVCbG9jaygpLT52YXJpYWJsZShpbmRleCk7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlVG9Db2RlQmxv
Y2tFZGdlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGNiNjE0ZWM3YzYxYzRm
MTgxOGM0MTc5NzM0NmVkNzQ0MTQ4MjI1My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJs
ZVRvQ29kZUJsb2NrRWRnZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNzcgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5oIgotCi0jaW5jbHVk
ZSAiSXNvQ2VsbFNldElubGluZXMuaCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLWNvbnN0IENsYXNz
SW5mbyBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjpzX2luZm8gPSB7ICJFeGVjdXRhYmxlVG9D
b2RlQmxvY2tFZGdlIiwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9U
QUJMRShFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlKSB9OwotCi1TdHJ1Y3R1cmUqIEV4ZWN1dGFi
bGVUb0NvZGVCbG9ja0VkZ2U6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQotewotICAgIHJldHVybiBTdHJ1Y3R1
cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKENlbGxUeXBl
LCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Ci19Ci0KLUV4ZWN1dGFibGVUb0NvZGVCbG9ja0Vk
Z2UqIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6OmNyZWF0ZShWTSYgdm0sIENvZGVCbG9jayog
Y29kZUJsb2NrKQotewotICAgIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UqIHJlc3VsdCA9IG5l
dyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U+KHZtLmhl
YXApKSBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlKHZtLCBjb2RlQmxvY2spOwotICAgIHJlc3Vs
dC0+ZmluaXNoQ3JlYXRpb24odm0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXZvaWQgRXhl
Y3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RW
aXNpdG9yJiB2aXNpdG9yKQotewotICAgIFZNJiB2bSA9IHZpc2l0b3Iudm0oKTsKLSAgICBFeGVj
dXRhYmxlVG9Db2RlQmxvY2tFZGdlKiBlZGdlID0ganNDYXN0PEV4ZWN1dGFibGVUb0NvZGVCbG9j
a0VkZ2UqPihjZWxsKTsKLSAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGVkZ2UtPm1fY29kZUJs
b2NrLmdldCgpOwotICAgIAotICAgIGlmICghZWRnZS0+bV9pc0FjdGl2ZSkgewotICAgICAgICB2
aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkKGNvZGVCbG9jayk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0gICAgCi0gICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9j
ayk7Ci0gICAgCi0gICAgaWYgKGNvZGVCbG9jay0+c2hvdWxkVmlzaXRTdHJvbmdseShsb2NrZXIp
KQotICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkKGNvZGVCbG9jayk7Ci0gICAgCi0g
ICAgaWYgKCFIZWFwOjppc01hcmtlZChjb2RlQmxvY2spKQotICAgICAgICB2bS5leGVjdXRhYmxl
VG9Db2RlQmxvY2tFZGdlc1dpdGhGaW5hbGl6ZXJzLmFkZChlZGdlKTsKLSAgICAKLSAgICBpZiAo
SklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGNvZGVCbG9jay0+aml0VHlwZSgpKSkgewotICAgICAg
ICAvLyBJZiB3ZSBqZXR0aXNvbiBvdXJzZWx2ZXMgd2UnbGwgaW5zdGFsbCBvdXIgYWx0ZXJuYXRp
dmUsIHNvIG1ha2Ugc3VyZSB0aGF0IGl0Ci0gICAgICAgIC8vIHN1cnZpdmVzIEdDIGV2ZW4gaWYg
d2UgZG9uJ3QuCi0gICAgICAgIHZpc2l0b3IuYXBwZW5kKGNvZGVCbG9jay0+bV9hbHRlcm5hdGl2
ZSk7Ci0gICAgfQotICAgIAotICAgIC8vIE5PVEU6IFRoZXJlIGFyZSB0d28gc2lkZXMgdG8gdGhp
cyBjb25zdHJhaW50LCB3aXRoIGRpZmZlcmVudCByZXF1aXJlbWVudHMgZm9yIGNvcnJlY3RuZXNz
LgotICAgIC8vIEJlY2F1c2UgZXZlcnl0aGluZyBpcyB1bHRpbWF0ZWx5IHByb3RlY3RlZCB3aXRo
IHdlYWsgcmVmZXJlbmNlcyBhbmQgamV0dGlzb25pbmcsIGl0J3MKLSAgICAvLyBhbHdheXMgIk9L
IiB0byBjbGFpbSB0aGF0IHNvbWV0aGluZyBpcyBkZWFkIHByZW1hdHVyZWx5IGFuZCBpdCdzICJP
SyIgdG8ga2VlcCB0aGluZ3MgYWxpdmUuCi0gICAgLy8gQnV0IGJvdGggY2hvaWNlcyBjb3VsZCBs
ZWFkIHRvIGJhZCBwZXJmIC0gZWl0aGVyIHJlY29tcCBjeWNsZXMgb3IgbGVha3MuCi0gICAgLy8K
LSAgICAvLyBEZXRlcm1pbmluZyBDb2RlQmxvY2sgbGl2ZW5lc3M6IFRoaXMgcGFydCBpcyB0aGUg
bW9zdCBjb25zZXF1ZW50aWFsLiBXZSB3YW50IHRvIGtlZXAgdGhlCi0gICAgLy8gb3V0cHV0IGNv
bnN0cmFpbnQgYWN0aXZlIHNvIGxvbmcgYXMgd2UgdGhpbmsgdGhhdCB3ZSBtYXkgeWV0IHByb3Zl
IHRoYXQgdGhlIENvZGVCbG9jayBpcwotICAgIC8vIGxpdmUgYnV0IHdlIGhhdmVuJ3QgZG9uZSBp
dCB5ZXQuCi0gICAgLy8KLSAgICAvLyBNYXJraW5nIFN0cnVjdHVyZXMgaWYgcHJvZml0YWJsZTog
SXQncyBpbXBvcnRhbnQgdGhhdCB3ZSBkbyBhIHBhc3Mgb2YgdGhpcy4gTG9naWNhbGx5LCB0aGlz
Ci0gICAgLy8gc2VlbXMgbGlrZSBpdCBpcyBhIGNvbnN0cmFpbnQgb2YgQ29kZUJsb2NrLiBCdXQg
d2UgaGF2ZSBhbHdheXMgZmlyc3QgcnVuIHRoaXMgYXMgYSByZXN1bHQKLSAgICAvLyBvZiB0aGUg
ZWRnZSBiZWluZyBtYXJrZWQgZXZlbiBiZWZvcmUgd2UgZGV0ZXJtaW5lIHRoZSBsaXZlbmVzcyBv
ZiB0aGUgQ29kZUJsb2NrLiBUaGlzCi0gICAgLy8gYWxsb3dzIGEgQ29kZUJsb2NrIHRvIG1hcmsg
aXRzZWxmIGJ5IGZpcnN0IHByb3ZpbmcgdGhhdCBhbGwgb2YgdGhlIFN0cnVjdHVyZXMgaXQgd2Vh
a2x5Ci0gICAgLy8gZGVwZW5kcyBvbiBjb3VsZCBiZSBzdHJvbmdseSBtYXJrZWQuIChUaGlzIHBh
cnQgaXMgYWxzbyBjYWxsZWQgcHJvcGFnYXRlVHJhbnNpdGlvbnMuKQotICAgIC8vCi0gICAgLy8g
QXMgYSB3ZWlyZCBjYXZlYXQsIHdlIG9ubHkgZml4cG9pbnQgdGhlIGNvbnN0cmFpbnRzIHNvIGxv
bmcgYXMgdGhlIENvZGVCbG9jayBpcyBub3QgbGl2ZS4KLSAgICAvLyBUaGlzIG1lYW5zIHRoYXQg
d2UgbWF5IG92ZXJsb29rIHN0cnVjdHVyZSBtYXJraW5nIG9wcG9ydHVuaXRpZXMgY3JlYXRlZCBi
eSBvdGhlciBtYXJraW5nCi0gICAgLy8gdGhhdCBoYXBwZW5zIGFmdGVyIHRoZSBDb2RlQmxvY2sg
aXMgbWFya2VkLiBUaGlzIHdhcyBhbiBhY2NpZGVudGFsIHBvbGljeSBkZWNpc2lvbiBmcm9tIGEK
LSAgICAvLyBsb25nIHRpbWUgYWdvLCBidXQgaXQgaXMgcHJvYmFibHkgT0ssIHNpbmNlIGl0J3Mg
b25seSB3b3J0aHdoaWxlIHRvIGtlZXAgZml4cG9pbnRpbmcgdGhlCi0gICAgLy8gc3RydWN0dXJl
IG1hcmtpbmcgaWYgd2Ugc3RpbGwgaGF2ZSB1bm1hcmtlZCBzdHJ1Y3R1cmVzIGFmdGVyIHRoZSBm
aXJzdCByb3VuZC4gV2UgYWxtb3N0Ci0gICAgLy8gbmV2ZXIgd2lsbCBiZWNhdXNlIHdlIHdpbGwg
bWFyay1pZi1wcm9maXRhYmxlIGJhc2VkIG9uIHRoZSBvd25pbmcgZ2xvYmFsIG9iamVjdCBiZWlu
ZwotICAgIC8vIGFscmVhZHkgbWFya2VkLiBXZSBtYXJrIGl0IGp1c3QgaW4gY2FzZSB0aGF0IGhh
ZG4ndCBoYXBwZW5lZCB5ZXQuIEFuZCBpZiB0aGUgQ29kZUJsb2NrIGlzCi0gICAgLy8gbm90IHll
dCBtYXJrZWQgYmVjYXVzZSBpdCB3ZWFrbHkgZGVwZW5kcyBvbiBhIHN0cnVjdHVyZSB0aGF0IHdl
IGRpZCBub3QgeWV0IG1hcmssIHRoZW4gd2UKLSAgICAvLyB3aWxsIGtlZXAgZml4cG9pbnRpbmcg
dW50aWwgdGhlIGVuZC4KLSAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkKGNvZGVCbG9jay0+
Z2xvYmFsT2JqZWN0KCkpOwotICAgIHZtLmV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aENv
bnN0cmFpbnRzLmFkZChlZGdlKTsKLSAgICBlZGdlLT5ydW5Db25zdHJhaW50KGxvY2tlciwgdm0s
IHZpc2l0b3IpOwotfQotCi12b2lkIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6OnZpc2l0T3V0
cHV0Q29uc3RyYWludHMoSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKLXsKLSAg
ICBWTSYgdm0gPSB2aXNpdG9yLnZtKCk7Ci0gICAgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZSog
ZWRnZSA9IGpzQ2FzdDxFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlKj4oY2VsbCk7Ci0gICAgCi0g
ICAgZWRnZS0+cnVuQ29uc3RyYWludChOb0xvY2tpbmdOZWNlc3NhcnksIHZtLCB2aXNpdG9yKTsK
LX0KLQotdm9pZCBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjpmaW5hbGl6ZVVuY29uZGl0aW9u
YWxseShWTSYgdm0pCi17Ci0gICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2NvZGVCbG9jay5n
ZXQoKTsKLSAgICAKLSAgICBpZiAoIUhlYXA6OmlzTWFya2VkKGNvZGVCbG9jaykpIHsKLSAgICAg
ICAgaWYgKGNvZGVCbG9jay0+c2hvdWxkSmV0dGlzb25EdWVUb1dlYWtSZWZlcmVuY2UoKSkKLSAg
ICAgICAgICAgIGNvZGVCbG9jay0+amV0dGlzb24oUHJvZmlsZXI6OkpldHRpc29uRHVlVG9XZWFr
UmVmZXJlbmNlKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgY29kZUJsb2NrLT5qZXR0aXNv
bihQcm9maWxlcjo6SmV0dGlzb25EdWVUb09sZEFnZSk7Ci0gICAgICAgIG1fY29kZUJsb2NrLmNs
ZWFyKCk7Ci0gICAgfQotICAgIAotICAgIHZtLmV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0
aEZpbmFsaXplcnMucmVtb3ZlKHRoaXMpOwotICAgIHZtLmV4ZWN1dGFibGVUb0NvZGVCbG9ja0Vk
Z2VzV2l0aENvbnN0cmFpbnRzLnJlbW92ZSh0aGlzKTsKLX0KLQotdm9pZCBFeGVjdXRhYmxlVG9D
b2RlQmxvY2tFZGdlOjphY3RpdmF0ZSgpCi17Ci0gICAgbV9pc0FjdGl2ZSA9IHRydWU7Ci19Ci0K
LXZvaWQgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6ZGVhY3RpdmF0ZSgpCi17Ci0gICAgbV9p
c0FjdGl2ZSA9IGZhbHNlOwotfQotCi1Db2RlQmxvY2sqIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0Vk
Z2U6OmRlYWN0aXZhdGVBbmRVbndyYXAoRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZSogZWRnZSkK
LXsKLSAgICBpZiAoIWVkZ2UpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGVkZ2UtPmRl
YWN0aXZhdGUoKTsKLSAgICByZXR1cm4gZWRnZS0+Y29kZUJsb2NrKCk7Ci19Ci0KLUV4ZWN1dGFi
bGVUb0NvZGVCbG9ja0VkZ2UqIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6OndyYXAoQ29kZUJs
b2NrKiBjb2RlQmxvY2spCi17Ci0gICAgaWYgKCFjb2RlQmxvY2spCi0gICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgIHJldHVybiBjb2RlQmxvY2stPm93bmVyRWRnZSgpOwotfQotICAgIAotRXhl
Y3V0YWJsZVRvQ29kZUJsb2NrRWRnZSogRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6d3JhcEFu
ZEFjdGl2YXRlKENvZGVCbG9jayogY29kZUJsb2NrKQotewotICAgIGlmICghY29kZUJsb2NrKQot
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlKiBy
ZXN1bHQgPSBjb2RlQmxvY2stPm93bmVyRWRnZSgpOwotICAgIHJlc3VsdC0+YWN0aXZhdGUoKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1FeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjpFeGVj
dXRhYmxlVG9Db2RlQmxvY2tFZGdlKFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCi0gICAg
OiBCYXNlKHZtLCB2bS5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlU3RydWN0dXJlLmdldCgpKQot
ICAgICwgbV9jb2RlQmxvY2sodm0sIHRoaXMsIGNvZGVCbG9jaykKLXsKLX0KLQotdm9pZCBFeGVj
dXRhYmxlVG9Db2RlQmxvY2tFZGdlOjpydW5Db25zdHJhaW50KGNvbnN0IENvbmN1cnJlbnRKU0xv
Y2tlciYgbG9ja2VyLCBWTSYgdm0sIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQotewotICAgIENvZGVC
bG9jayogY29kZUJsb2NrID0gbV9jb2RlQmxvY2suZ2V0KCk7Ci0gICAgCi0gICAgY29kZUJsb2Nr
LT5wcm9wYWdhdGVUcmFuc2l0aW9ucyhsb2NrZXIsIHZpc2l0b3IpOwotICAgIGNvZGVCbG9jay0+
ZGV0ZXJtaW5lTGl2ZW5lc3MobG9ja2VyLCB2aXNpdG9yKTsKLSAgICAKLSAgICBpZiAoSGVhcDo6
aXNNYXJrZWQoY29kZUJsb2NrKSkKLSAgICAgICAgdm0uZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRn
ZXNXaXRoQ29uc3RyYWludHMucmVtb3ZlKHRoaXMpOwotfQotCi19IC8vIG5hbWVzcGFjZSBKU0MK
LQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVU
b0NvZGVCbG9ja0VkZ2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRh
YmxlVG9Db2RlQmxvY2tFZGdlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEyYjli
NTBhYzkyNjBkZmExNDg1OGE1MmFjZmNlYTcyZTk5ZDdmMWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0V4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaAorKysgL2Rldi9udWxsCkBAIC0xLDg5ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
Ci0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI3ByYWdt
YSBvbmNlCi0KLSNpbmNsdWRlICJDb25jdXJyZW50SlNMb2NrLmgiCi0jaW5jbHVkZSAiSXNvU3Vi
c3BhY2UuaCIKLSNpbmNsdWRlICJKU0NlbGwuaCIKLSNpbmNsdWRlICJWTS5oIgotCi1uYW1lc3Bh
Y2UgSlNDIHsKLQotY2xhc3MgQ29kZUJsb2NrOwotY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9y
OwotCi1jbGFzcyBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlIDogcHVibGljIEpTQ2VsbCB7Ci1w
dWJsaWM6Ci0gICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKLSAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1t
b3J0YWw7Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZT4KLSAgICBzdGF0aWMgSXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKLSAgICB7Ci0gICAgICAgIHJldHVybiAmdm0u
ZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZVNwYWNlOwotICAgIH0KLQotICAgIHN0YXRpYyBTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBwcm90
b3R5cGUpOwotCi0gICAgc3RhdGljIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UqIGNyZWF0ZShW
TSYsIENvZGVCbG9jayopOwotICAgIAotICAgIERFQ0xBUkVfSU5GTzsKLQotICAgIENvZGVCbG9j
ayogY29kZUJsb2NrKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2suZ2V0KCk7IH0KLSAgICAK
LSAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7Ci0g
ICAgc3RhdGljIHZvaWQgdmlzaXRPdXRwdXRDb25zdHJhaW50cyhKU0NlbGwqLCBTbG90VmlzaXRv
ciYpOwotICAgIHZvaWQgZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoVk0mKTsKLSAgICAKLSAgICB2
b2lkIGFjdGl2YXRlKCk7Ci0gICAgdm9pZCBkZWFjdGl2YXRlKCk7Ci0gICAgCi0gICAgc3RhdGlj
IENvZGVCbG9jayogdW53cmFwKEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UqIGVkZ2UpCi0gICAg
ewotICAgICAgICBpZiAoIWVkZ2UpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAg
ICAgcmV0dXJuIGVkZ2UtPmNvZGVCbG9jaygpOwotICAgIH0KLSAgICAKLSAgICBzdGF0aWMgQ29k
ZUJsb2NrKiBkZWFjdGl2YXRlQW5kVW53cmFwKEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UqIGVk
Z2UpOwotICAgIAotICAgIHN0YXRpYyBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlKiB3cmFwKENv
ZGVCbG9jayogY29kZUJsb2NrKTsKLSAgICAKLSAgICBzdGF0aWMgRXhlY3V0YWJsZVRvQ29kZUJs
b2NrRWRnZSogd3JhcEFuZEFjdGl2YXRlKENvZGVCbG9jayogY29kZUJsb2NrKTsKLSAgICAKLXBy
aXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKLQotICAgIEV4
ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UoVk0mLCBDb2RlQmxvY2sqKTsKLSAgICAKLSAgICB2b2lk
IHJ1bkNvbnN0cmFpbnQoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgVk0mLCBTbG90VmlzaXRv
ciYpOwotICAgIAotICAgIFdyaXRlQmFycmllcjxDb2RlQmxvY2s+IG1fY29kZUJsb2NrOwotICAg
IGJvb2wgbV9pc0FjdGl2ZSB7IGZhbHNlIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBKU0MKLQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Z1bmN0aW9uQ29kZUJs
b2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRnVuY3Rpb25Db2RlQmxvY2su
aAppbmRleCAyYjA3Y2Y2MzYwOThjZWJlM2M0ODQwN2RiODFhMGY4MzIxMTFkNjRjLi4xYTZjMGJh
ZWRiMTkwMDA2YzZhOTIyY2IwMGZkN2YxYWY3ZDVjMjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvRnVuY3Rpb25Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvRnVuY3Rpb25Db2RlQmxvY2suaApAQCAtMzksMTIgKzM5LDYg
QEAgcHVibGljOgogICAgIHR5cGVkZWYgQ29kZUJsb2NrIEJhc2U7CiAgICAgREVDTEFSRV9JTkZP
OwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWU+Ci0gICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihWTSYgdm0pCi0gICAgewotICAgICAgICByZXR1cm4gJnZtLmZ1bmN0aW9uQ29kZUJs
b2NrU3BhY2Uuc3BhY2U7Ci0gICAgfQotCiAgICAgc3RhdGljIEZ1bmN0aW9uQ29kZUJsb2NrKiBj
cmVhdGUoVk0qIHZtLCBDb3B5UGFyc2VkQmxvY2tUYWcsIEZ1bmN0aW9uQ29kZUJsb2NrJiBvdGhl
cikKICAgICB7CiAgICAgICAgIEZ1bmN0aW9uQ29kZUJsb2NrKiBpbnN0YW5jZSA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPEZ1bmN0aW9uQ29kZUJsb2NrPih2bS0+aGVhcCkpCkBAIC02NSw3
ICs1OSw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBl
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QsIHByb3RvdHlwZSwgVHlwZUluZm8oQ29kZUJsb2NrVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBp
bmZvKCkpOworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCwgcHJvdG90eXBlLCBUeXBlSW5mbyhDZWxsVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkp
OwogICAgIH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Nb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvTW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5oCmluZGV4IGFlOTlmNzdkNWI0MzY4MjAw
M2NlNGIwNTdkOTQ4YzQzYWUxNTYzNTAuLjE5OTRiNTI0NjIzOTBiZjkyM2JkOWZkY2U3N2M3ZWY1
MTk0NjQ4MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Nb2R1
bGVQcm9ncmFtQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L01vZHVsZVByb2dyYW1Db2RlQmxvY2suaApAQCAtMzQsMTcgKzM0LDExIEBACiAKIG5hbWVzcGFj
ZSBKU0MgewogCi1jbGFzcyBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrIGZpbmFsIDogcHVibGljIEds
b2JhbENvZGVCbG9jayB7CitjbGFzcyBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrIDogcHVibGljIEds
b2JhbENvZGVCbG9jayB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBHbG9iYWxDb2RlQmxvY2sgQmFz
ZTsKICAgICBERUNMQVJFX0lORk87CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZT4KLSAgICBzdGF0
aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKLSAgICB7Ci0gICAgICAgIHJldHVy
biAmdm0ubW9kdWxlUHJvZ3JhbUNvZGVCbG9ja1NwYWNlLnNwYWNlOwotICAgIH0KLQogICAgIHN0
YXRpYyBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBjcmVhdGUoVk0qIHZtLCBDb3B5UGFyc2VkQmxv
Y2tUYWcsIE1vZHVsZVByb2dyYW1Db2RlQmxvY2smIG90aGVyKQogICAgIHsKICAgICAgICAgTW9k
dWxlUHJvZ3JhbUNvZGVCbG9jayogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxNb2R1bGVQcm9ncmFtQ29kZUJsb2NrPih2bS0+aGVhcCkpCkBAIC02NSw3ICs1OSw3IEBAIHB1
YmxpYzoKIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlw
ZSwgVHlwZUluZm8oQ29kZUJsb2NrVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAg
ICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBl
LCBUeXBlSW5mbyhDZWxsVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogICAgIH0KIAog
cHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm9n
cmFtQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJvZ3JhbUNv
ZGVCbG9jay5oCmluZGV4IDhlYTliNGNhYTA0NDM5ODMxZWMxN2IxYWNkYmY4YzhkMWY4NGU4YWUu
LjJhYWM1ZDk4NWFhNWZlMDczYTk4NDAyYjVlYzVjNWE5OWFlMjEzZGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm9ncmFtQ29kZUJsb2NrLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb2dyYW1Db2RlQmxvY2suaApAQCAtMzQsMTcg
KzM0LDExIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1jbGFzcyBQcm9ncmFtQ29kZUJsb2NrIGZp
bmFsIDogcHVibGljIEdsb2JhbENvZGVCbG9jayB7CitjbGFzcyBQcm9ncmFtQ29kZUJsb2NrIDog
cHVibGljIEdsb2JhbENvZGVCbG9jayB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBHbG9iYWxDb2Rl
QmxvY2sgQmFzZTsKICAgICBERUNMQVJFX0lORk87CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZT4K
LSAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiAmdm0ucHJvZ3JhbUNvZGVCbG9ja1NwYWNlLnNwYWNlOwotICAgIH0KLQogICAg
IHN0YXRpYyBQcm9ncmFtQ29kZUJsb2NrKiBjcmVhdGUoVk0qIHZtLCBDb3B5UGFyc2VkQmxvY2tU
YWcsIFByb2dyYW1Db2RlQmxvY2smIG90aGVyKQogICAgIHsKICAgICAgICAgUHJvZ3JhbUNvZGVC
bG9jayogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxQcm9ncmFtQ29kZUJs
b2NrPih2bS0+aGVhcCkpCkBAIC02NSw3ICs1OSw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIFN0cnVjdHVy
ZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oQ29kZUJsb2Nr
VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgICAgICByZXR1cm4gU3RydWN0dXJl
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhDZWxsVHlwZSwg
U3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogICAgIH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3BwCmluZGV4IGMzMjUwODBiZjNlOGRjYzc3
ODNlZWM2MmMzY2IxZWI2Nzg2MGViOWUuLjc3MTZlODk1ZjY0MzBiYjY2YWFjNTFiNjFkN2JlZWQ5
ZGJkYjczMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1
Z2dlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNw
cApAQCAtMjA3LDcgKzIwNyw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgdm9pZCBv
cGVyYXRvcigpKENvZGVCbG9jayogY29kZUJsb2NrKSBjb25zdAorICAgIGJvb2wgb3BlcmF0b3Io
KShDb2RlQmxvY2sqIGNvZGVCbG9jaykgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChtX2RlYnVn
Z2VyID09IGNvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCktPmRlYnVnZ2VyKCkpIHsKICAgICAgICAg
ICAgIGlmIChtX21vZGUgPT0gU3RlcHBpbmdNb2RlRW5hYmxlZCkKQEAgLTIxNSw2ICsyMTUsNyBA
QCBwdWJsaWM6CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgY29kZUJsb2NrLT5z
ZXRTdGVwcGluZ01vZGUoQ29kZUJsb2NrOjpTdGVwcGluZ01vZGVEaXNhYmxlZCk7CiAgICAgICAg
IH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTMxNCwxMCAr
MzE1LDExIEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgdm9pZCBvcGVyYXRvcigpKENv
ZGVCbG9jayogY29kZUJsb2NrKSBjb25zdAorICAgIGJvb2wgb3BlcmF0b3IoKShDb2RlQmxvY2sq
IGNvZGVCbG9jaykgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChtX2RlYnVnZ2VyID09IGNvZGVC
bG9jay0+Z2xvYmFsT2JqZWN0KCktPmRlYnVnZ2VyKCkpCiAgICAgICAgICAgICBtX2RlYnVnZ2Vy
LT50b2dnbGVCcmVha3BvaW50KGNvZGVCbG9jaywgbV9icmVha3BvaW50LCBtX2VuYWJsZWRPck5v
dCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC01MjYsMTAg
KzUyOCwxMSBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIHZvaWQgb3BlcmF0b3IoKShD
b2RlQmxvY2sqIGNvZGVCbG9jaykgY29uc3QKKyAgICBib29sIG9wZXJhdG9yKCkoQ29kZUJsb2Nr
KiBjb2RlQmxvY2spIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoY29kZUJsb2NrLT5oYXNEZWJ1
Z2dlclJlcXVlc3RzKCkgJiYgbV9kZWJ1Z2dlciA9PSBjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgp
LT5kZWJ1Z2dlcigpKQogICAgICAgICAgICAgY29kZUJsb2NrLT5jbGVhckRlYnVnZ2VyUmVxdWVz
dHMoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTU1NSwx
MCArNTU4LDExIEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgdm9pZCBvcGVyYXRvcigp
KENvZGVCbG9jayogY29kZUJsb2NrKSBjb25zdAorICAgIGJvb2wgb3BlcmF0b3IoKShDb2RlQmxv
Y2sqIGNvZGVCbG9jaykgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChjb2RlQmxvY2stPmhhc0Rl
YnVnZ2VyUmVxdWVzdHMoKSAmJiBtX2dsb2JhbE9iamVjdCA9PSBjb2RlQmxvY2stPmdsb2JhbE9i
amVjdCgpKQogICAgICAgICAgICAgY29kZUJsb2NrLT5jbGVhckRlYnVnZ2VyUmVxdWVzdHMoKTsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9Db2RlQmxvY2tTZXQuY3BwCmluZGV4IDQ5ZmNkODRmNGFkOTdhYWUwYWFm
M2YxOTNjODZlYTA2MTNmNmQ4YjcuLmFlNzllNzk5NTNlNDNmMWQ1N2EzNWViM2RiNjA4ZjA1NDQx
OTZjZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvZGVCbG9ja1Nl
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0LmNwcApA
QCAtNDEsMTMgKzQxLDgzIEBAIENvZGVCbG9ja1NldDo6fkNvZGVCbG9ja1NldCgpCiB7CiB9CiAK
K3ZvaWQgQ29kZUJsb2NrU2V0OjphZGQoQ29kZUJsb2NrKiBjb2RlQmxvY2spCit7CisgICAgTG9j
a0hvbGRlciBsb2NrZXIoJm1fbG9jayk7CisgICAgYm9vbCBpc05ld0VudHJ5ID0gbV9uZXdDb2Rl
QmxvY2tzLmFkZChjb2RlQmxvY2spLmlzTmV3RW50cnk7CisgICAgQVNTRVJUX1VOVVNFRChpc05l
d0VudHJ5LCBpc05ld0VudHJ5KTsKK30KKwordm9pZCBDb2RlQmxvY2tTZXQ6OnByb21vdGVZb3Vu
Z0NvZGVCbG9ja3MoY29uc3QgQWJzdHJhY3RMb2NrZXImKQoreworICAgIEFTU0VSVChtX2xvY2su
aXNMb2NrZWQoKSk7CisgICAgbV9vbGRDb2RlQmxvY2tzLmFkZChtX25ld0NvZGVCbG9ja3MuYmVn
aW4oKSwgbV9uZXdDb2RlQmxvY2tzLmVuZCgpKTsKKyAgICBtX25ld0NvZGVCbG9ja3MuY2xlYXIo
KTsKK30KKwordm9pZCBDb2RlQmxvY2tTZXQ6OmNsZWFyTWFya3NGb3JGdWxsQ29sbGVjdGlvbigp
Cit7CisgICAgTG9ja0hvbGRlciBsb2NrZXIoJm1fbG9jayk7CisgICAgZm9yIChDb2RlQmxvY2sq
IGNvZGVCbG9jayA6IG1fb2xkQ29kZUJsb2NrcykKKyAgICAgICAgY29kZUJsb2NrLT5jbGVhclZp
c2l0V2Vha2x5SGFzQmVlbkNhbGxlZCgpOworfQorCit2b2lkIENvZGVCbG9ja1NldDo6bGFzdENo
YW5jZVRvRmluYWxpemUoVk0mIHZtKQoreworICAgIExvY2tIb2xkZXIgbG9ja2VyKCZtX2xvY2sp
OworICAgIGZvciAoQ29kZUJsb2NrKiBjb2RlQmxvY2sgOiBtX25ld0NvZGVCbG9ja3MpCisgICAg
ICAgIGNvZGVCbG9jay0+c3RydWN0dXJlKHZtKS0+Y2xhc3NJbmZvKCktPm1ldGhvZFRhYmxlLmRl
c3Ryb3koY29kZUJsb2NrKTsKKworICAgIGZvciAoQ29kZUJsb2NrKiBjb2RlQmxvY2sgOiBtX29s
ZENvZGVCbG9ja3MpCisgICAgICAgIGNvZGVCbG9jay0+c3RydWN0dXJlKHZtKS0+Y2xhc3NJbmZv
KCktPm1ldGhvZFRhYmxlLmRlc3Ryb3koY29kZUJsb2NrKTsKK30KKwordm9pZCBDb2RlQmxvY2tT
ZXQ6OmRlbGV0ZVVubWFya2VkQW5kVW5yZWZlcmVuY2VkKFZNJiB2bSwgQ29sbGVjdGlvblNjb3Bl
IHNjb3BlKQoreworICAgIExvY2tIb2xkZXIgbG9ja2VyKCZtX2xvY2spOworICAgIAorICAgIC8v
IERlc3Ryb3lpbmcgYSBDb2RlQmxvY2sgdGFrZXMgYWJvdXQgMXVzIG9uIGF2ZXJhZ2UgaW4gU3Bl
ZWRvbWV0ZXIuIEZ1bGwgY29sbGVjdGlvbnMgaW4gU3BlZWRvbWV0ZXIKKyAgICAvLyB1c3VhbGx5
IGhhdmUgfjIwMDAgQ29kZUJsb2NrcyB0byBwcm9jZXNzLiBUaGUgdGltZSBpdCB0YWtlcyB0byBw
cm9jZXNzIHRoZSB3aG9sZSBsaXN0IHZhcmllcyBhCisgICAgLy8gbG90LiBJbiBvbmUgZXh0cmVt
ZSBjYXNlIEkgc2F3IDE4bXMgKG9uIG15IGZhc3QgTUJQKS4KKyAgICAvLworICAgIC8vIEZJWE1F
OiB1c2UgU3Vic3BhY2UgaW5zdGVhZCBvZiBIYXNoU2V0IGFuZCBhZG9wdCBTdWJzcGFjZS1iYXNl
ZCBjb25zdHJhaW50IHNvbHZpbmcuIFRoaXMgbWF5CisgICAgLy8gcmVtb3ZlIHRoZSBuZWVkIHRv
IGVhZ2VybHkgZGVzdHJ1Y3QgQ29kZUJsb2Nrcy4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwMDg5CisgICAgLy8KKyAgICAvLyBGSVhNRTogbWFrZSBD
b2RlQmxvY2s6On5Db2RlQmxvY2sgYSBsb3QgZmFzdGVyLiBJdCBzZWVtcyBpbnNhbmUgZm9yIHRo
YXQgdG8gdGFrZSAxdXMgb3IgbW9yZS4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTgwMTA5CisgICAgCisgICAgYXV0byBjb25zaWRlciA9IFsmXSAoSGFz
aFNldDxDb2RlQmxvY2sqPiYgc2V0KSB7CisgICAgICAgIHNldC5yZW1vdmVJZigKKyAgICAgICAg
ICAgIFsmXSAoQ29kZUJsb2NrKiBjb2RlQmxvY2spIC0+IGJvb2wgeworICAgICAgICAgICAgICAg
IGlmIChIZWFwOjppc01hcmtlZChjb2RlQmxvY2spKQorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgY29kZUJsb2NrLT5zdHJ1Y3R1cmUodm0pLT5jbGFz
c0luZm8oKS0+bWV0aG9kVGFibGUuZGVzdHJveShjb2RlQmxvY2spOworICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICAgICAgfSk7CisgICAgfTsKKworICAgIHN3aXRjaCAoc2Nv
cGUpIHsKKyAgICBjYXNlIENvbGxlY3Rpb25TY29wZTo6RWRlbjoKKyAgICAgICAgY29uc2lkZXIo
bV9uZXdDb2RlQmxvY2tzKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDb2xsZWN0aW9uU2Nv
cGU6OkZ1bGw6CisgICAgICAgIGNvbnNpZGVyKG1fb2xkQ29kZUJsb2Nrcyk7CisgICAgICAgIGNv
bnNpZGVyKG1fbmV3Q29kZUJsb2Nrcyk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIC8v
IEFueSByZW1haW5pbmcgeW91bmcgQ29kZUJsb2NrcyBhcmUgbGl2ZSBhbmQgbmVlZCB0byBiZSBw
cm9tb3RlZCB0byB0aGUgc2V0IG9mIG9sZCBDb2RlQmxvY2tzLgorICAgIHByb21vdGVZb3VuZ0Nv
ZGVCbG9ja3MobG9ja2VyKTsKK30KKwogYm9vbCBDb2RlQmxvY2tTZXQ6OmNvbnRhaW5zKGNvbnN0
IEFic3RyYWN0TG9ja2VyJiwgdm9pZCogY2FuZGlkYXRlQ29kZUJsb2NrKQogewogICAgIFJFTEVB
U0VfQVNTRVJUKG1fbG9jay5pc0xvY2tlZCgpKTsKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9
IHN0YXRpY19jYXN0PENvZGVCbG9jayo+KGNhbmRpZGF0ZUNvZGVCbG9jayk7CiAgICAgaWYgKCFI
YXNoU2V0PENvZGVCbG9jayo+Ojppc1ZhbGlkVmFsdWUoY29kZUJsb2NrKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIHJldHVybiBtX2NvZGVCbG9ja3MuY29udGFpbnMoY29kZUJsb2NrKTsK
KyAgICByZXR1cm4gbV9vbGRDb2RlQmxvY2tzLmNvbnRhaW5zKGNvZGVCbG9jaykgfHwgbV9uZXdD
b2RlQmxvY2tzLmNvbnRhaW5zKGNvZGVCbG9jaykgfHwgbV9jdXJyZW50bHlFeGVjdXRpbmcuY29u
dGFpbnMoY29kZUJsb2NrKTsKIH0KIAogdm9pZCBDb2RlQmxvY2tTZXQ6OmNsZWFyQ3VycmVudGx5
RXhlY3V0aW5nKCkKQEAgLTU4LDggKzEyOCwxMiBAQCB2b2lkIENvZGVCbG9ja1NldDo6Y2xlYXJD
dXJyZW50bHlFeGVjdXRpbmcoKQogdm9pZCBDb2RlQmxvY2tTZXQ6OmR1bXAoUHJpbnRTdHJlYW0m
IG91dCkgY29uc3QKIHsKICAgICBDb21tYVByaW50ZXIgY29tbWE7Ci0gICAgb3V0LnByaW50KCJ7
Y29kZUJsb2NrcyA9IFsiKTsKLSAgICBmb3IgKENvZGVCbG9jayogY29kZUJsb2NrIDogbV9jb2Rl
QmxvY2tzKQorICAgIG91dC5wcmludCgie29sZCA9IFsiKTsKKyAgICBmb3IgKENvZGVCbG9jayog
Y29kZUJsb2NrIDogbV9vbGRDb2RlQmxvY2tzKQorICAgICAgICBvdXQucHJpbnQoY29tbWEsIHBv
aW50ZXJEdW1wKGNvZGVCbG9jaykpOworICAgIG91dC5wcmludCgiXSwgbmV3ID0gWyIpOworICAg
IGNvbW1hID0gQ29tbWFQcmludGVyKCk7CisgICAgZm9yIChDb2RlQmxvY2sqIGNvZGVCbG9jayA6
IG1fbmV3Q29kZUJsb2NrcykKICAgICAgICAgb3V0LnByaW50KGNvbW1hLCBwb2ludGVyRHVtcChj
b2RlQmxvY2spKTsKICAgICBvdXQucHJpbnQoIl0sIGN1cnJlbnRseUV4ZWN1dGluZyA9IFsiKTsK
ICAgICBjb21tYSA9IENvbW1hUHJpbnRlcigpOwpAQCAtNjgsMTkgKzE0Miw1IEBAIHZvaWQgQ29k
ZUJsb2NrU2V0OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiAgICAgb3V0LnByaW50KCJd
fSIpOwogfQogCi12b2lkIENvZGVCbG9ja1NldDo6YWRkKENvZGVCbG9jayogY29kZUJsb2NrKQot
ewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsKLSAgICBhdXRvIHJlc3VsdCA9
IG1fY29kZUJsb2Nrcy5hZGQoY29kZUJsb2NrKTsKLSAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQp
OwotfQotCi12b2lkIENvZGVCbG9ja1NldDo6cmVtb3ZlKENvZGVCbG9jayogY29kZUJsb2NrKQot
ewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsKLSAgICBib29sIHJlc3VsdCA9
IG1fY29kZUJsb2Nrcy5yZW1vdmUoY29kZUJsb2NrKTsKLSAgICBSRUxFQVNFX0FTU0VSVChyZXN1
bHQpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9Db2RlQmxvY2tTZXQuaAppbmRleCA4ZmFlZjQ2ODk5MDIxNzkwMGZlMTkyYjMwZWJlNzk1YjEw
ZGEyMDI3Li40YzIyODI4OWFiNDVmZGQ3NDhjYWUwZmQxMDE4ODI0ZmM2OTAzNzVhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxvY2tTZXQuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxvY2tTZXQuaApAQCAtNDksNyArNDksMjQgQEAg
cHVibGljOgogICAgIENvZGVCbG9ja1NldCgpOwogICAgIH5Db2RlQmxvY2tTZXQoKTsKIAorICAg
IHZvaWQgbGFzdENoYW5jZVRvRmluYWxpemUoVk0mKTsKKyAgICAKKyAgICAvLyBBZGQgYSBDb2Rl
QmxvY2suIFRoaXMgaXMgb25seSBjYWxsZWQgYnkgQ29kZUJsb2NrIGNvbnN0cnVjdG9ycy4KKyAg
ICB2b2lkIGFkZChDb2RlQmxvY2sqKTsKKyAgICAKKyAgICAvLyBDbGVhciBhbGwgbWFyayBiaXRz
IGZvciBhbGwgQ29kZUJsb2Nrcy4KKyAgICB2b2lkIGNsZWFyTWFya3NGb3JGdWxsQ29sbGVjdGlv
bigpOworCisgICAgLy8gTWFyayBhIHBvaW50ZXIgdGhhdCBtYXkgYmUgYSBDb2RlQmxvY2sgdGhh
dCBiZWxvbmdzIHRvIHRoZSBzZXQgb2YgREZHCisgICAgLy8gYmxvY2tzLiBUaGlzIGlzIGRlZmlu
ZWQgaW4gQ29kZUJsb2NrLmguCitwcml2YXRlOgogICAgIHZvaWQgbWFyayhjb25zdCBBYnN0cmFj
dExvY2tlciYsIENvZGVCbG9jayogY2FuZGlkYXRlQ29kZUJsb2NrKTsKK3B1YmxpYzoKKyAgICB2
b2lkIG1hcmsoY29uc3QgQWJzdHJhY3RMb2NrZXImLCB2b2lkKiBjYW5kaWRhdGVDb2RlQmxvY2sp
OworICAgIAorICAgIC8vIERlbGV0ZSBhbGwgY29kZSBibG9ja3MgdGhhdCBhcmUgb25seSByZWZl
cmVuY2VkIGJ5IHRoaXMgc2V0IChpLmUuIG93bmVkCisgICAgLy8gYnkgdGhpcyBzZXQpLCBhbmQg
dGhhdCBoYXZlIG5vdCBiZWVuIG1hcmtlZC4KKyAgICB2b2lkIGRlbGV0ZVVubWFya2VkQW5kVW5y
ZWZlcmVuY2VkKFZNJiwgQ29sbGVjdGlvblNjb3BlKTsKICAgICAKICAgICB2b2lkIGNsZWFyQ3Vy
cmVudGx5RXhlY3V0aW5nKCk7CiAKQEAgLTYxLDE4ICs3OCwxNiBAQCBwdWJsaWM6CiAgICAgLy8g
dmlzaXRlZC4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGl0ZXJhdGUoY29u
c3QgRnVuY3RvciYpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgaXRlcmF0
ZShjb25zdCBBYnN0cmFjdExvY2tlciYsIGNvbnN0IEZ1bmN0b3ImKTsKLQotICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgaXRlcmF0ZVZpYVN1YnNwYWNlcyhWTSYsIGNvbnN0IEZ1
bmN0b3ImKTsKICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGl0ZXJh
dGVDdXJyZW50bHlFeGVjdXRpbmcoY29uc3QgRnVuY3RvciYpOwogICAgIAogICAgIHZvaWQgZHVt
cChQcmludFN0cmVhbSYpIGNvbnN0OwotICAgIAotICAgIHZvaWQgYWRkKENvZGVCbG9jayopOwot
ICAgIHZvaWQgcmVtb3ZlKENvZGVCbG9jayopOwogCiBwcml2YXRlOgotICAgIEhhc2hTZXQ8Q29k
ZUJsb2NrKj4gbV9jb2RlQmxvY2tzOworICAgIHZvaWQgcHJvbW90ZVlvdW5nQ29kZUJsb2Nrcyhj
b25zdCBBYnN0cmFjdExvY2tlciYpOworCisgICAgSGFzaFNldDxDb2RlQmxvY2sqPiBtX29sZENv
ZGVCbG9ja3M7CisgICAgSGFzaFNldDxDb2RlQmxvY2sqPiBtX25ld0NvZGVCbG9ja3M7CiAgICAg
SGFzaFNldDxDb2RlQmxvY2sqPiBtX2N1cnJlbnRseUV4ZWN1dGluZzsKICAgICBMb2NrIG1fbG9j
azsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxvY2tT
ZXRJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxvY2tTZXRJbmxp
bmVzLmgKaW5kZXggZDYxYmFiNDg4OTZhNDIwZjk0ZmRmODJjMzc3ZDVmMTIxMGFjZjI3Ni4uYzNk
OGMwYmZkNTg4NGY1YzE0NWY5NjY1ZTg3ZDQ0ODkxMmE3MTUxOSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0SW5saW5lcy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldElubGluZXMuaApAQCAtMzMsNiArMzMsMjUg
QEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK2lubGluZSB2b2lkIENvZGVCbG9ja1NldDo6bWFyayhj
b25zdCBBYnN0cmFjdExvY2tlciYgbG9ja2VyLCB2b2lkKiBjYW5kaWRhdGVDb2RlQmxvY2spCit7
CisgICAgQVNTRVJUKG1fbG9jay5pc0xvY2tlZCgpKTsKKyAgICAvLyBXZSBoYXZlIHRvIGNoZWNr
IGZvciAwIGFuZCAtMSBiZWNhdXNlIHRob3NlIGFyZSB1c2VkIGJ5IHRoZSBIYXNoTWFwIGFzIG1h
cmtlcnMuCisgICAgdWludHB0cl90IHZhbHVlID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+
KGNhbmRpZGF0ZUNvZGVCbG9jayk7CisgICAgCisgICAgLy8gVGhpcyBjaGVja3MgZm9yIGJvdGgg
b2YgdGhvc2UgbmFzdHkgY2FzZXMgaW4gb25lIGdvLgorICAgIC8vIDAgKyAxID0gMQorICAgIC8v
IC0xICsgMSA9IDAKKyAgICBpZiAodmFsdWUgKyAxIDw9IDEpCisgICAgICAgIHJldHVybjsKKwor
ICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gc3RhdGljX2Nhc3Q8Q29kZUJsb2NrKj4oY2FuZGlk
YXRlQ29kZUJsb2NrKTsgCisgICAgaWYgKCFtX29sZENvZGVCbG9ja3MuY29udGFpbnMoY29kZUJs
b2NrKSAmJiAhbV9uZXdDb2RlQmxvY2tzLmNvbnRhaW5zKGNvZGVCbG9jaykpCisgICAgICAgIHJl
dHVybjsKKworICAgIG1hcmsobG9ja2VyLCBjb2RlQmxvY2spOworfQorCiBpbmxpbmUgdm9pZCBD
b2RlQmxvY2tTZXQ6Om1hcmsoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBDb2RlQmxvY2sqIGNvZGVC
bG9jaykKIHsKICAgICBpZiAoIWNvZGVCbG9jaykKQEAgLTUxLDIwICs3MCwxNyBAQCB2b2lkIENv
ZGVCbG9ja1NldDo6aXRlcmF0ZShjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogdGVtcGxhdGU8dHlw
ZW5hbWUgRnVuY3Rvcj4KIHZvaWQgQ29kZUJsb2NrU2V0OjppdGVyYXRlKGNvbnN0IEFic3RyYWN0
TG9ja2VyJiwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKIHsKLSAgICBmb3IgKENvZGVCbG9jayog
Y29kZUJsb2NrIDogbV9jb2RlQmxvY2tzKQotICAgICAgICBmdW5jdG9yKGNvZGVCbG9jayk7Ci19
Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci12b2lkIENvZGVCbG9ja1NldDo6aXRlcmF0
ZVZpYVN1YnNwYWNlcyhWTSYgdm0sIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCi17Ci0gICAgdm0u
Zm9yRWFjaENvZGVCbG9ja1NwYWNlKAotICAgICAgICBbJl0gKElzb1N1YnNwYWNlJiBzcGFjZSkg
ewotICAgICAgICAgICAgc3BhY2UuZm9yRWFjaExpdmVDZWxsKAotICAgICAgICAgICAgICAgIFsm
XSAoSGVhcENlbGwqIGNlbGwsIEhlYXBDZWxsOjpLaW5kKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGZ1bmN0b3IoanNDYXN0PENvZGVCbG9jayo+KHN0YXRpY19jYXN0PEpTQ2VsbCo+KGNlbGwpKSk7
Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOworICAgIGZvciAoYXV0byYgY29kZUJs
b2NrIDogbV9vbGRDb2RlQmxvY2tzKSB7CisgICAgICAgIGJvb2wgZG9uZSA9IGZ1bmN0b3IoY29k
ZUJsb2NrKTsKKyAgICAgICAgaWYgKGRvbmUpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIAorICAgIGZvciAoYXV0byYgY29kZUJsb2NrIDogbV9uZXdDb2RlQmxvY2tzKSB7CisgICAg
ICAgIGJvb2wgZG9uZSA9IGZ1bmN0b3IoY29kZUJsb2NrKTsKKyAgICAgICAgaWYgKGRvbmUpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgfQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9y
PgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29uc2VydmF0aXZlUm9v
dHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29uc2VydmF0aXZlUm9vdHMuY3Bw
CmluZGV4IDFlN2UwNWZkN2JjZTcyNmJlMzE4YWRkMTdlNmRiMTRiOWU0NzEzYzkuLjc0MTc5MmE0
MTQwYzM2ZTNhOTdmMzZhYTZlZWViM2ExYzEwNGFkZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0NvbnNlcnZhdGl2ZVJvb3RzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9Db25zZXJ2YXRpdmVSb290cy5jcHAKQEAgLTcyLDEwICs3Miw3IEBAIGlu
bGluZSB2b2lkIENvbnNlcnZhdGl2ZVJvb3RzOjpnZW5lcmljQWRkUG9pbnRlcih2b2lkKiBwLCBI
ZWFwVmVyc2lvbiBtYXJraW5nVmVyCiAKICAgICBIZWFwVXRpbDo6ZmluZEdDT2JqZWN0UG9pbnRl
cnNGb3JNYXJraW5nKAogICAgICAgICBtX2hlYXAsIG1hcmtpbmdWZXJzaW9uLCBuZXdseUFsbG9j
YXRlZFZlcnNpb24sIGZpbHRlciwgcCwKLSAgICAgICAgWyZdICh2b2lkKiBwLCBIZWFwQ2VsbDo6
S2luZCBjZWxsS2luZCkgewotICAgICAgICAgICAgaWYgKGNlbGxLaW5kID09IEhlYXBDZWxsOjpK
U0NlbGwpCi0gICAgICAgICAgICAgICAgbWFya0hvb2subWFya0tub3duSlNDZWxsKHN0YXRpY19j
YXN0PEpTQ2VsbCo+KHApKTsKLSAgICAgICAgICAgIAorICAgICAgICBbJl0gKHZvaWQqIHApIHsK
ICAgICAgICAgICAgIGlmIChtX3NpemUgPT0gbV9jYXBhY2l0eSkKICAgICAgICAgICAgICAgICBn
cm93KCk7CiAgICAgICAgICAgICAKQEAgLTEwNiw3ICsxMDMsNiBAQCB2b2lkIENvbnNlcnZhdGl2
ZVJvb3RzOjpnZW5lcmljQWRkU3Bhbih2b2lkKiBiZWdpbiwgdm9pZCogZW5kLCBNYXJrSG9vayYg
bWFya0hvbwogY2xhc3MgRHVtbXlNYXJrSG9vayB7CiBwdWJsaWM6CiAgICAgdm9pZCBtYXJrKHZv
aWQqKSB7IH0KLSAgICB2b2lkIG1hcmtLbm93bkpTQ2VsbChKU0NlbGwqKSB7IH0KIH07CiAKIHZv
aWQgQ29uc2VydmF0aXZlUm9vdHM6OmFkZCh2b2lkKiBiZWdpbiwgdm9pZCogZW5kKQpAQCAtMTE1
LDYgKzExMSwxMSBAQCB2b2lkIENvbnNlcnZhdGl2ZVJvb3RzOjphZGQodm9pZCogYmVnaW4sIHZv
aWQqIGVuZCkKICAgICBnZW5lcmljQWRkU3BhbihiZWdpbiwgZW5kLCBkdW1teSk7CiB9CiAKK3Zv
aWQgQ29uc2VydmF0aXZlUm9vdHM6OmFkZCh2b2lkKiBiZWdpbiwgdm9pZCogZW5kLCBKSVRTdHVi
Um91dGluZVNldCYgaml0U3R1YlJvdXRpbmVzKQoreworICAgIGdlbmVyaWNBZGRTcGFuKGJlZ2lu
LCBlbmQsIGppdFN0dWJSb3V0aW5lcyk7Cit9CisKIGNsYXNzIENvbXBvc2l0ZU1hcmtIb29rIHsK
IHB1YmxpYzoKICAgICBDb21wb3NpdGVNYXJrSG9vayhKSVRTdHViUm91dGluZVNldCYgc3R1YlJv
dXRpbmVzLCBDb2RlQmxvY2tTZXQmIGNvZGVCbG9ja3MsIGNvbnN0IEFic3RyYWN0TG9ja2VyJiBs
b2NrZXIpCkBAIC0xMjcsMTIgKzEyOCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG1hcmsodm9pZCog
YWRkcmVzcykKICAgICB7CiAgICAgICAgIG1fc3R1YlJvdXRpbmVzLm1hcmsoYWRkcmVzcyk7Ci0g
ICAgfQotICAgIAotICAgIHZvaWQgbWFya0tub3duSlNDZWxsKEpTQ2VsbCogY2VsbCkKLSAgICB7
Ci0gICAgICAgIGlmIChjZWxsLT50eXBlKCkgPT0gQ29kZUJsb2NrVHlwZSkKLSAgICAgICAgICAg
IG1fY29kZUJsb2Nrcy5tYXJrKG1fY29kZUJsb2Nrc0xvY2tlciwganNDYXN0PENvZGVCbG9jayo+
KGNlbGwpKTsKKyAgICAgICAgbV9jb2RlQmxvY2tzLm1hcmsobV9jb2RlQmxvY2tzTG9ja2VyLCBh
ZGRyZXNzKTsKICAgICB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9Db25zZXJ2YXRpdmVSb290cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvQ29uc2VydmF0aXZlUm9vdHMuaAppbmRleCAwZjlhNDJhNmZjZDY5NGYwYTllZmViMTBmMzIw
NjIyNDZmOTY0MTBkLi41NDQ4MzkyZDFkYTRjZjkyY2Q4NmVlMDlkNzYyMzQ4ZTBhMzA5ZmViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db25zZXJ2YXRpdmVSb290cy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbnNlcnZhdGl2ZVJvb3RzLmgKQEAg
LTM5LDYgKzM5LDcgQEAgcHVibGljOgogICAgIH5Db25zZXJ2YXRpdmVSb290cygpOwogCiAgICAg
dm9pZCBhZGQodm9pZCogYmVnaW4sIHZvaWQqIGVuZCk7CisgICAgdm9pZCBhZGQodm9pZCogYmVn
aW4sIHZvaWQqIGVuZCwgSklUU3R1YlJvdXRpbmVTZXQmKTsKICAgICB2b2lkIGFkZCh2b2lkKiBi
ZWdpbiwgdm9pZCogZW5kLCBKSVRTdHViUm91dGluZVNldCYsIENvZGVCbG9ja1NldCYpOwogICAg
IAogICAgIHNpemVfdCBzaXplKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCmluZGV4
IDdiMjlmMTRmOGFjMzVjZjM2NzgxN2NhYjY1ZmE4YmI2YTZlZjI0YWQuLmYwYmFmMzE4NzA5YTdk
ZGQ0YTczNjBiYzY1ZmU4NTM3ODE2N2U2MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hlYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAu
Y3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogIENvcHlyaWdodCAoQykgMjAwNyBF
cmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC0zNjcsOCArMzY3
LDYgQEAgdm9pZCBIZWFwOjpsYXN0Q2hhbmNlVG9GaW5hbGl6ZSgpCiAgICAgICAgIGRhdGFMb2co
IltHQzwiLCBSYXdQb2ludGVyKHRoaXMpLCAiPjogc2h1dGRvd24gIik7CiAgICAgfQogICAgIAot
ICAgIG1faXNTaHV0dGluZ0Rvd24gPSB0cnVlOwotICAgIAogICAgIFJFTEVBU0VfQVNTRVJUKCFt
X3ZtLT5lbnRyeVNjb3BlKTsKICAgICBSRUxFQVNFX0FTU0VSVChtX211dGF0b3JTdGF0ZSA9PSBN
dXRhdG9yU3RhdGU6OlJ1bm5pbmcpOwogICAgIApAQCAtNDM4LDYgKzQzNiw3IEBAIHZvaWQgSGVh
cDo6bGFzdENoYW5jZVRvRmluYWxpemUoKQogICAgICAgICBkYXRhTG9nKCI1ICIpOwogICAgIAog
ICAgIG1fYXJyYXlCdWZmZXJzLmxhc3RDaGFuY2VUb0ZpbmFsaXplKCk7CisgICAgbV9jb2RlQmxv
Y2tzLT5sYXN0Q2hhbmNlVG9GaW5hbGl6ZSgqbV92bSk7CiAgICAgbV9vYmplY3RTcGFjZS5zdG9w
QWxsb2NhdGluZygpOwogICAgIG1fb2JqZWN0U3BhY2UubGFzdENoYW5jZVRvRmluYWxpemUoKTsK
ICAgICByZWxlYXNlRGVsYXllZFJlbGVhc2VkT2JqZWN0cygpOwpAQCAtNTU5LDcgKzU1OCw3IEBA
IHZvaWQgSGVhcDo6YWRkUmVmZXJlbmNlKEpTQ2VsbCogY2VsbCwgQXJyYXlCdWZmZXIqIGJ1ZmZl
cikKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIHR5cGVuYW1lIENlbGxTZXQ+Ci12
b2lkIEhlYXA6OmZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnMoQ2VsbFNldCYg
Y2VsbFNldCkKK3ZvaWQgSGVhcDo6ZmluYWxpemVVbmNvbmRpdGlvbmFsRmluYWxpemVycyhDZWxs
U2V0JiBjZWxsU2V0KQogewogICAgIGNlbGxTZXQuZm9yRWFjaE1hcmtlZENlbGwoCiAgICAgICAg
IFsmXSAoSGVhcENlbGwqIGNlbGwsIEhlYXBDZWxsOjpLaW5kKSB7CkBAIC01NjcsMTcgKzU2Niwy
MSBAQCB2b2lkIEhlYXA6OmZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnMoQ2Vs
bFNldCYgY2VsbFNldCkKICAgICAgICAgfSk7CiB9CiAKLXZvaWQgSGVhcDo6ZmluYWxpemVVbmNv
bmRpdGlvbmFsRmluYWxpemVycygpCit0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZT4KK3ZvaWQg
SGVhcDo6ZmluYWxpemVVbmNvbmRpdGlvbmFsRmluYWxpemVyc0luSXNvU3Vic3BhY2UoKQogewot
ICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8SW5mZXJyZWRUeXBlPih2
bSgpLT5pbmZlcnJlZFR5cGVzV2l0aEZpbmFsaXplcnMpOwotICAgIGZpbmFsaXplTWFya2VkVW5j
b25kaXRpb25hbEZpbmFsaXplcnM8SW5mZXJyZWRWYWx1ZT4odm0oKS0+aW5mZXJyZWRWYWx1ZXNX
aXRoRmluYWxpemVycyk7Ci0gICAgdm0oKS0+Zm9yRWFjaENvZGVCbG9ja1NwYWNlKAotICAgICAg
ICBbJl0gKGF1dG8mIHNwYWNlKSB7Ci0gICAgICAgICAgICB0aGlzLT5maW5hbGl6ZU1hcmtlZFVu
Y29uZGl0aW9uYWxGaW5hbGl6ZXJzPENvZGVCbG9jaz4oc3BhY2UuZmluYWxpemVyU2V0KTsKKyAg
ICBKU0M6OnN1YnNwYWNlRm9yPENlbGxUeXBlPigqdm0oKSktPmZvckVhY2hNYXJrZWRDZWxsKAor
ICAgICAgICBbJl0gKEhlYXBDZWxsKiBjZWxsLCBIZWFwQ2VsbDo6S2luZCkgeworICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8Q2VsbFR5cGUqPihjZWxsKS0+ZmluYWxpemVVbmNvbmRpdGlvbmFsbHko
KnZtKCkpOwogICAgICAgICB9KTsKLSAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5h
bGl6ZXJzPEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U+KHZtKCktPmV4ZWN1dGFibGVUb0NvZGVC
bG9ja0VkZ2VzV2l0aEZpbmFsaXplcnMpOwotICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25h
bEZpbmFsaXplcnM8SlNXZWFrU2V0Pih2bSgpLT53ZWFrU2V0U3BhY2UpOwotICAgIGZpbmFsaXpl
TWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8SlNXZWFrTWFwPih2bSgpLT53ZWFrTWFwU3Bh
Y2UpOworfQorCit2b2lkIEhlYXA6OmZpbmFsaXplVW5jb25kaXRpb25hbEZpbmFsaXplcnMoKQor
eworICAgIGZpbmFsaXplVW5jb25kaXRpb25hbEZpbmFsaXplcnM8SW5mZXJyZWRUeXBlPih2bSgp
LT5pbmZlcnJlZFR5cGVzV2l0aEZpbmFsaXplcnMpOworICAgIGZpbmFsaXplVW5jb25kaXRpb25h
bEZpbmFsaXplcnM8SW5mZXJyZWRWYWx1ZT4odm0oKS0+aW5mZXJyZWRWYWx1ZXNXaXRoRmluYWxp
emVycyk7CisgICAgZmluYWxpemVVbmNvbmRpdGlvbmFsRmluYWxpemVyc0luSXNvU3Vic3BhY2U8
SlNXZWFrU2V0PigpOworICAgIGZpbmFsaXplVW5jb25kaXRpb25hbEZpbmFsaXplcnNJbklzb1N1
YnNwYWNlPEpTV2Vha01hcD4oKTsKICAgICAKICAgICB3aGlsZSAobV91bmNvbmRpdGlvbmFsRmlu
YWxpemVycy5oYXNOZXh0KCkpIHsKICAgICAgICAgVW5jb25kaXRpb25hbEZpbmFsaXplciogZmlu
YWxpemVyID0gbV91bmNvbmRpdGlvbmFsRmluYWxpemVycy5yZW1vdmVOZXh0KCk7CkBAIC02NzQs
NiArNjc3LDggQEAgdm9pZCBIZWFwOjpnYXRoZXJTY3JhdGNoQnVmZmVyUm9vdHMoQ29uc2VydmF0
aXZlUm9vdHMmIHJvb3RzKQogdm9pZCBIZWFwOjpiZWdpbk1hcmtpbmcoKQogewogICAgIFRpbWlu
Z1Njb3BlIHRpbWluZ1Njb3BlKCp0aGlzLCAiSGVhcDo6YmVnaW5NYXJraW5nIik7CisgICAgaWYg
KG1fY29sbGVjdGlvblNjb3BlID09IENvbGxlY3Rpb25TY29wZTo6RnVsbCkKKyAgICAgICAgbV9j
b2RlQmxvY2tzLT5jbGVhck1hcmtzRm9yRnVsbENvbGxlY3Rpb24oKTsKICAgICBtX2ppdFN0dWJS
b3V0aW5lcy0+Y2xlYXJNYXJrcygpOwogICAgIG1fb2JqZWN0U3BhY2UuYmVnaW5NYXJraW5nKCk7
CiAgICAgc2V0TXV0YXRvclNob3VsZEJlRmVuY2VkKHRydWUpOwpAQCAtOTM0LDYgKzkzOSw3IEBA
IHZvaWQgSGVhcDo6Y2xlYXJVbm1hcmtlZEV4ZWN1dGFibGVzKCkKIHZvaWQgSGVhcDo6ZGVsZXRl
VW5tYXJrZWRDb21waWxlZENvZGUoKQogewogICAgIGNsZWFyVW5tYXJrZWRFeGVjdXRhYmxlcygp
OworICAgIG1fY29kZUJsb2Nrcy0+ZGVsZXRlVW5tYXJrZWRBbmRVbnJlZmVyZW5jZWQoKm1fdm0s
ICptX2xhc3RDb2xsZWN0aW9uU2NvcGUpOwogICAgIG1faml0U3R1YlJvdXRpbmVzLT5kZWxldGVV
bm1hcmtlZEpldHRpc29uZWRTdHViUm91dGluZXMoKTsKIH0KIApAQCAtMjA4Miw4ICsyMDg4LDEy
IEBAIHZvaWQgSGVhcDo6d2FpdEZvckNvbGxlY3Rpb24oVGlja2V0IHRpY2tldCkKIHZvaWQgSGVh
cDo6c3dlZXBJbkZpbmFsaXplKCkKIHsKICAgICBtX29iamVjdFNwYWNlLnN3ZWVwTGFyZ2VBbGxv
Y2F0aW9ucygpOwotICAgIHZtKCktPmZvckVhY2hDb2RlQmxvY2tTcGFjZShbXSAoYXV0byYgc3Bh
Y2UpIHsgc3BhY2Uuc3BhY2Uuc3dlZXAoKTsgfSk7Ci0gICAgdm0oKS0+ZWFnZXJseVN3ZXB0RGVz
dHJ1Y3RpYmxlT2JqZWN0U3BhY2Uuc3dlZXAoKTsKKyAgICAKKyAgICBhdXRvIHN3ZWVwQmxvY2sg
PSBbJl0gKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGhhbmRsZSkgeworICAgICAgICBoYW5kbGUtPnN3
ZWVwKG51bGxwdHIpOworICAgIH07CisgICAgCisgICAgdm0oKS0+ZWFnZXJseVN3ZXB0RGVzdHJ1
Y3RpYmxlT2JqZWN0U3BhY2UuZm9yRWFjaE1hcmtlZEJsb2NrKHN3ZWVwQmxvY2spOwogfQogCiB2
b2lkIEhlYXA6OnN1c3BlbmRDb21waWxlclRocmVhZHMoKQpAQCAtMjQ1OCw3ICsyNDY4LDcgQEAg
c2l6ZV90IEhlYXA6OmJ5dGVzVmlzaXRlZCgpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9p
ZCBIZWFwOjpmb3JFYWNoQ29kZUJsb2NrSW1wbChjb25zdCBTY29wZWRMYW1iZGE8dm9pZChDb2Rl
QmxvY2sqKT4mIGZ1bmMpCit2b2lkIEhlYXA6OmZvckVhY2hDb2RlQmxvY2tJbXBsKGNvbnN0IFNj
b3BlZExhbWJkYTxib29sKENvZGVCbG9jayopPiYgZnVuYykKIHsKICAgICAvLyBXZSBkb24ndCBr
bm93IHRoZSBmdWxsIHNldCBvZiBDb2RlQmxvY2tzIHVudGlsIGNvbXBpbGF0aW9uIGhhcyB0ZXJt
aW5hdGVkLgogICAgIGNvbXBsZXRlQWxsSklUUGxhbnMoKTsKQEAgLTI0NjYsNyArMjQ3Niw3IEBA
IHZvaWQgSGVhcDo6Zm9yRWFjaENvZGVCbG9ja0ltcGwoY29uc3QgU2NvcGVkTGFtYmRhPHZvaWQo
Q29kZUJsb2NrKik+JiBmdW5jKQogICAgIHJldHVybiBtX2NvZGVCbG9ja3MtPml0ZXJhdGUoZnVu
Yyk7CiB9CiAKLXZvaWQgSGVhcDo6Zm9yRWFjaENvZGVCbG9ja0lnbm9yaW5nSklUUGxhbnNJbXBs
KGNvbnN0IEFic3RyYWN0TG9ja2VyJiBsb2NrZXIsIGNvbnN0IFNjb3BlZExhbWJkYTx2b2lkKENv
ZGVCbG9jayopPiYgZnVuYykKK3ZvaWQgSGVhcDo6Zm9yRWFjaENvZGVCbG9ja0lnbm9yaW5nSklU
UGxhbnNJbXBsKGNvbnN0IEFic3RyYWN0TG9ja2VyJiBsb2NrZXIsIGNvbnN0IFNjb3BlZExhbWJk
YTxib29sKENvZGVCbG9jayopPiYgZnVuYykKIHsKICAgICByZXR1cm4gbV9jb2RlQmxvY2tzLT5p
dGVyYXRlKGxvY2tlciwgZnVuYyk7CiB9CkBAIC0yNzAzLDI2ICsyNzEzLDYgQEAgdm9pZCBIZWFw
OjphZGRDb3JlQ29uc3RyYWludHMoKQogICAgICAgICB9LAogICAgICAgICBDb25zdHJhaW50Vm9s
YXRpbGl0eTo6R3JleWVkQnlNYXJraW5nKTsKICAgICAKLSAgICBtX2NvbnN0cmFpbnRTZXQtPmFk
ZCgKLSAgICAgICAgIk8iLCAiT3V0cHV0IiwKLSAgICAgICAgW10gKFNsb3RWaXNpdG9yJiBzbG90
VmlzaXRvcikgewotICAgICAgICAgICAgVk0mIHZtID0gc2xvdFZpc2l0b3Iudm0oKTsKLSAgICAg
ICAgICAgIAotICAgICAgICAgICAgYXV0byBjYWxsT3V0cHV0Q29uc3RyYWludCA9IFtdIChTbG90
VmlzaXRvciYgc2xvdFZpc2l0b3IsIEhlYXBDZWxsKiBoZWFwQ2VsbCwgSGVhcENlbGw6OktpbmQp
IHsKLSAgICAgICAgICAgICAgICBWTSYgdm0gPSBzbG90VmlzaXRvci52bSgpOwotICAgICAgICAg
ICAgICAgIEpTQ2VsbCogY2VsbCA9IHN0YXRpY19jYXN0PEpTQ2VsbCo+KGhlYXBDZWxsKTsKLSAg
ICAgICAgICAgICAgICBjZWxsLT5tZXRob2RUYWJsZSh2bSktPnZpc2l0T3V0cHV0Q29uc3RyYWlu
dHMoY2VsbCwgc2xvdFZpc2l0b3IpOwotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIAotICAg
ICAgICAgICAgYXV0byBhZGQgPSBbJl0gKGF1dG8mIHNldCkgewotICAgICAgICAgICAgICAgIHNs
b3RWaXNpdG9yLmFkZFBhcmFsbGVsQ29uc3RyYWludFRhc2soc2V0LmZvckVhY2hNYXJrZWRDZWxs
SW5QYXJhbGxlbChjYWxsT3V0cHV0Q29uc3RyYWludCkpOwotICAgICAgICAgICAgfTsKLSAgICAg
ICAgICAgIAotICAgICAgICAgICAgYWRkKHZtLmV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0
aENvbnN0cmFpbnRzKTsKLSAgICAgICAgfSwKLSAgICAgICAgQ29uc3RyYWludFZvbGF0aWxpdHk6
OkdyZXllZEJ5TWFya2luZywKLSAgICAgICAgQ29uc3RyYWludFBhcmFsbGVsaXNtOjpQYXJhbGxl
bCk7Ci0gICAgCiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgbV9jb25zdHJhaW50U2V0LT5hZGQo
CiAgICAgICAgICJEdyIsICJERkcgV29ya2xpc3RzIiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAu
aAppbmRleCA4ZWNlY2FkYzVmNjUwNDdkOTA0M2U2OGQwNzRmYjI0ODlkYzQ1ZjIxLi4wZTk3ZGQ0
YmFlZjIyZDAwOGZjMThmYzkyYzdjMjY4Zjg4YWEyODBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcC5oCkBAIC0xNjcsOCArMTY3LDYgQEAgcHVibGljOgogCiAgICAgdm9pZCBub3RpZnlJc1Nh
ZmVUb0NvbGxlY3QoKTsKICAgICBib29sIGlzU2FmZVRvQ29sbGVjdCgpIGNvbnN0IHsgcmV0dXJu
IG1faXNTYWZlVG9Db2xsZWN0OyB9Ci0gICAgCi0gICAgYm9vbCBpc1NodXR0aW5nRG93bigpIGNv
bnN0IHsgcmV0dXJuIG1faXNTaHV0dGluZ0Rvd247IH0KIAogICAgIEpTX0VYUE9SVF9QUklWQVRF
IGJvb2wgaXNIZWFwU25hcHNob3R0aW5nKCkgY29uc3Q7CiAKQEAgLTQ5OCw4ICs0OTYsMTEgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGhhcnZlc3RXZWFrUmVmZXJlbmNlcygpOwogCiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgQ2VsbFR5cGUsIHR5cGVuYW1lIENlbGxTZXQ+Ci0gICAgdm9pZCBmaW5hbGl6
ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzKENlbGxTZXQmKTsKKyAgICB2b2lkIGZpbmFs
aXplVW5jb25kaXRpb25hbEZpbmFsaXplcnMoQ2VsbFNldCYpOwogCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2VsbFR5cGU+CisgICAgdm9pZCBmaW5hbGl6ZVVuY29uZGl0aW9uYWxGaW5hbGl6ZXJz
SW5Jc29TdWJzcGFjZSgpOworICAgIAogICAgIHZvaWQgZmluYWxpemVVbmNvbmRpdGlvbmFsRmlu
YWxpemVycygpOwogICAgIAogICAgIHZvaWQgY2xlYXJVbm1hcmtlZEV4ZWN1dGFibGVzKCk7CkBA
IC01MjYsOCArNTI3LDggQEAgcHJpdmF0ZToKICAgICBzaXplX3QgdmlzaXRDb3VudCgpOwogICAg
IHNpemVfdCBieXRlc1Zpc2l0ZWQoKTsKICAgICAKLSAgICB2b2lkIGZvckVhY2hDb2RlQmxvY2tJ
bXBsKGNvbnN0IFNjb3BlZExhbWJkYTx2b2lkKENvZGVCbG9jayopPiYpOwotICAgIHZvaWQgZm9y
RWFjaENvZGVCbG9ja0lnbm9yaW5nSklUUGxhbnNJbXBsKGNvbnN0IEFic3RyYWN0TG9ja2VyJiBj
b2RlQmxvY2tTZXRMb2NrZXIsIGNvbnN0IFNjb3BlZExhbWJkYTx2b2lkKENvZGVCbG9jayopPiYp
OworICAgIHZvaWQgZm9yRWFjaENvZGVCbG9ja0ltcGwoY29uc3QgU2NvcGVkTGFtYmRhPGJvb2wo
Q29kZUJsb2NrKik+Jik7CisgICAgdm9pZCBmb3JFYWNoQ29kZUJsb2NrSWdub3JpbmdKSVRQbGFu
c0ltcGwoY29uc3QgQWJzdHJhY3RMb2NrZXImIGNvZGVCbG9ja1NldExvY2tlciwgY29uc3QgU2Nv
cGVkTGFtYmRhPGJvb2woQ29kZUJsb2NrKik+Jik7CiAgICAgCiAgICAgdm9pZCBzZXRNdXRhdG9y
U2hvdWxkQmVGZW5jZWQoYm9vbCB2YWx1ZSk7CiAgICAgCkBAIC02MDgsNyArNjA5LDYgQEAgcHJp
dmF0ZToKICAgICBGaW5hbGl6ZXJPd25lciBtX2ZpbmFsaXplck93bmVyOwogICAgIAogICAgIGJv
b2wgbV9pc1NhZmVUb0NvbGxlY3Q7Ci0gICAgYm9vbCBtX2lzU2h1dHRpbmdEb3duIHsgZmFsc2Ug
fTsKIAogICAgIGJvb2wgbV9tdXRhdG9yU2hvdWxkQmVGZW5jZWQgeyBPcHRpb25zOjpmb3JjZUZl
bmNlZEJhcnJpZXIoKSB9OwogICAgIHVuc2lnbmVkIG1fYmFycmllclRocmVzaG9sZCB7IE9wdGlv
bnM6OmZvcmNlRmVuY2VkQmFycmllcigpID8gdGF1dG9sb2dpY2FsVGhyZXNob2xkIDogYmxhY2tU
aHJlc2hvbGQgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBD
ZWxsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwQ2VsbC5oCmluZGV4IDY4MjE4
N2U3ODM0ZmNmMDJlM2U2OWRlNzg0MjQ4MDZkODBhNzU5Y2YuLmViOGU0Y2RiZWMyZjAxZWNjZDE3
ZDZhMGE0YzY0NWMwZTAwMGY3NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hlYXBDZWxsLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcENlbGwu
aApAQCAtMzMsNyArMzMsNiBAQCBjbGFzcyBDZWxsQ29udGFpbmVyOwogY2xhc3MgSGVhcDsKIGNs
YXNzIExhcmdlQWxsb2NhdGlvbjsKIGNsYXNzIE1hcmtlZEJsb2NrOwotY2xhc3MgU3Vic3BhY2U7
CiBjbGFzcyBWTTsKIHN0cnVjdCBBbGxvY2F0b3JBdHRyaWJ1dGVzOwogCkBAIC02OSw3ICs2OCw2
IEBAIHB1YmxpYzoKICAgICBBbGxvY2F0b3JBdHRyaWJ1dGVzIGFsbG9jYXRvckF0dHJpYnV0ZXMo
KSBjb25zdDsKICAgICBEZXN0cnVjdGlvbk1vZGUgZGVzdHJ1Y3Rpb25Nb2RlKCkgY29uc3Q7CiAg
ICAgS2luZCBjZWxsS2luZCgpIGNvbnN0OwotICAgIFN1YnNwYWNlKiBzdWJzcGFjZSgpIGNvbnN0
OwogICAgIAogICAgIC8vIENhbGwgdXNlKCkgYWZ0ZXIgdGhlIGxhc3QgcG9pbnQgd2hlcmUgeW91
IG5lZWQgYHRoaXNgIHBvaW50ZXIgdG8gYmUga2VwdCBhbGl2ZS4gWW91IHVzdWFsbHkgZG9uJ3QK
ICAgICAvLyBuZWVkIHRvIHVzZSB0aGlzLCBidXQgaXQgbWlnaHQgYmUgbmVjZXNzYXJ5IGlmIHlv
dSdyZSBvdGhlcndpc2UgcmVmZXJyaW5nIHRvIGFuIG9iamVjdCdzIGlubmFyZHMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBDZWxsSW5saW5lcy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcENlbGxJbmxpbmVzLmgKaW5kZXggNTYzZWUwMWZjNTQ1
ZTM0MmY5MWM0ODI4MmRiOTEwMzRmYmQ0YmYwOC4uNGU2OTczNDc1YjYwYWU3NTdhZGQwMzI2YzE0
Y2JhZTNjN2U3ZGZhNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cENlbGxJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcENlbGxJ
bmxpbmVzLmgKQEAgLTkwLDEyICs5MCw1IEBAIEFMV0FZU19JTkxJTkUgSGVhcENlbGw6OktpbmQg
SGVhcENlbGw6OmNlbGxLaW5kKCkgY29uc3QKICAgICByZXR1cm4gYWxsb2NhdG9yQXR0cmlidXRl
cygpLmNlbGxLaW5kOwogfQogCi1BTFdBWVNfSU5MSU5FIFN1YnNwYWNlKiBIZWFwQ2VsbDo6c3Vi
c3BhY2UoKSBjb25zdAotewotICAgIGlmIChpc0xhcmdlQWxsb2NhdGlvbigpKQotICAgICAgICBy
ZXR1cm4gbGFyZ2VBbGxvY2F0aW9uKCkuc3Vic3BhY2UoKTsKLSAgICByZXR1cm4gbWFya2VkQmxv
Y2soKS5zdWJzcGFjZSgpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hlYXBJbmxpbmVzLmgKaW5kZXggZDY3OWJmZmIzNjBjZTk3YWI3NDU2YmU4
ZGFiMjRkMmE3MGRmNjJjZi4uMmFkZDBlZDQ1ZmQ4YTk2NTFjM2YyY2NmNDlkODk5NmIxYmEyMGM4
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcElubGluZXMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oCkBAIC0xNDQsMTIg
KzE0NCwxMiBAQCBpbmxpbmUgdm9pZCBIZWFwOjptdXRhdG9yRmVuY2UoKQogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdm9pZCBIZWFwOjpmb3JFYWNoQ29kZUJsb2NrKGNvbnN0
IEZ1bmN0b3ImIGZ1bmMpCiB7Ci0gICAgZm9yRWFjaENvZGVCbG9ja0ltcGwoc2NvcGVkTGFtYmRh
UmVmPHZvaWQoQ29kZUJsb2NrKik+KGZ1bmMpKTsKKyAgICBmb3JFYWNoQ29kZUJsb2NrSW1wbChz
Y29wZWRMYW1iZGFSZWY8Ym9vbChDb2RlQmxvY2sqKT4oZnVuYykpOwogfQogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdm9pZCBIZWFwOjpmb3JFYWNoQ29kZUJsb2NrSWdub3Jp
bmdKSVRQbGFucyhjb25zdCBBYnN0cmFjdExvY2tlciYgY29kZUJsb2NrU2V0TG9ja2VyLCBjb25z
dCBGdW5jdG9yJiBmdW5jKQogewotICAgIGZvckVhY2hDb2RlQmxvY2tJZ25vcmluZ0pJVFBsYW5z
SW1wbChjb2RlQmxvY2tTZXRMb2NrZXIsIHNjb3BlZExhbWJkYVJlZjx2b2lkKENvZGVCbG9jayop
PihmdW5jKSk7CisgICAgZm9yRWFjaENvZGVCbG9ja0lnbm9yaW5nSklUUGxhbnNJbXBsKGNvZGVC
bG9ja1NldExvY2tlciwgc2NvcGVkTGFtYmRhUmVmPGJvb2woQ29kZUJsb2NrKik+KGZ1bmMpKTsK
IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHZvaWQgSGVhcDo6Zm9yRWFj
aFByb3RlY3RlZENlbGwoY29uc3QgRnVuY3RvciYgZnVuY3RvcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBVdGlsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwVXRpbC5oCmluZGV4IDMyYzQ1NWEyNTZhNmZmZTQ5NmZiNjNkMjllMDZhNjk4ZjVj
MGM2Y2QuLjU3ZmNkMDRlMTA4MGY2NjA3ZDMyOGYwN2U4MzQ1ZDkxNjFkMGVjODMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBVdGlsLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSGVhcFV0aWwuaApAQCAtNjYsMTYgKzY2LDE0IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgICAgICAgICAgTGFyZ2VBbGxvY2F0aW9uOjpmcm9tQ2VsbChwb2ludGVyKSwK
ICAgICAgICAgICAgICAgICAgICAgW10gKExhcmdlQWxsb2NhdGlvbioqIHB0cikgLT4gTGFyZ2VB
bGxvY2F0aW9uKiB7IHJldHVybiAqcHRyOyB9KTsKICAgICAgICAgICAgICAgICBpZiAocmVzdWx0
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gYXR0ZW1wdExhcmdlID0gWyZdIChMYXJnZUFs
bG9jYXRpb24qIGFsbG9jYXRpb24pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhbGxv
Y2F0aW9uLT5jb250YWlucyhwb2ludGVyKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBm
dW5jKGFsbG9jYXRpb24tPmNlbGwoKSwgYWxsb2NhdGlvbi0+YXR0cmlidXRlcygpLmNlbGxLaW5k
KTsKLSAgICAgICAgICAgICAgICAgICAgfTsKLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAg
ICAgICAgICAgICAgIGlmIChyZXN1bHQgPiBoZWFwLm9iamVjdFNwYWNlKCkubGFyZ2VBbGxvY2F0
aW9uc0ZvclRoaXNDb2xsZWN0aW9uQmVnaW4oKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGF0
dGVtcHRMYXJnZShyZXN1bHRbLTFdKTsKLSAgICAgICAgICAgICAgICAgICAgYXR0ZW1wdExhcmdl
KHJlc3VsdFswXSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgKyAxIDwgaGVhcC5v
YmplY3RTcGFjZSgpLmxhcmdlQWxsb2NhdGlvbnNGb3JUaGlzQ29sbGVjdGlvbkVuZCgpKQotICAg
ICAgICAgICAgICAgICAgICAgICAgYXR0ZW1wdExhcmdlKHJlc3VsdFsxXSk7CisgICAgICAgICAg
ICAgICAgICAgIGlmIChyZXN1bHQgPiBoZWFwLm9iamVjdFNwYWNlKCkubGFyZ2VBbGxvY2F0aW9u
c0ZvclRoaXNDb2xsZWN0aW9uQmVnaW4oKQorICAgICAgICAgICAgICAgICAgICAgICAgJiYgcmVz
dWx0Wy0xXS0+Y29udGFpbnMocG9pbnRlcikpCisgICAgICAgICAgICAgICAgICAgICAgICBmdW5j
KHJlc3VsdFstMV0tPmNlbGwoKSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHRbMF0t
PmNvbnRhaW5zKHBvaW50ZXIpKQorICAgICAgICAgICAgICAgICAgICAgICAgZnVuYyhyZXN1bHRb
MF0tPmNlbGwoKSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgKyAxIDwgaGVhcC5v
YmplY3RTcGFjZSgpLmxhcmdlQWxsb2NhdGlvbnNGb3JUaGlzQ29sbGVjdGlvbkVuZCgpCisgICAg
ICAgICAgICAgICAgICAgICAgICAmJiByZXN1bHRbMV0tPmNvbnRhaW5zKHBvaW50ZXIpKQorICAg
ICAgICAgICAgICAgICAgICAgICAgZnVuYyhyZXN1bHRbMV0tPmNlbGwoKSk7CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC05MSw3ICs4OSw3IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgICAgICAmJiBwcmV2aW91c0NhbmRpZGF0ZS0+aGFuZGxlKCkuY2VsbEtp
bmQoKSA9PSBIZWFwQ2VsbDo6QXV4aWxpYXJ5KSB7CiAgICAgICAgICAgICAgICAgcHJldmlvdXNQ
b2ludGVyID0gc3RhdGljX2Nhc3Q8Y2hhcio+KHByZXZpb3VzQ2FuZGlkYXRlLT5oYW5kbGUoKS5j
ZWxsQWxpZ24ocHJldmlvdXNQb2ludGVyKSk7CiAgICAgICAgICAgICAgICAgaWYgKHByZXZpb3Vz
Q2FuZGlkYXRlLT5oYW5kbGUoKS5pc0xpdmVDZWxsKG1hcmtpbmdWZXJzaW9uLCBuZXdseUFsbG9j
YXRlZFZlcnNpb24sIGlzTWFya2luZywgcHJldmlvdXNQb2ludGVyKSkKLSAgICAgICAgICAgICAg
ICAgICAgZnVuYyhwcmV2aW91c1BvaW50ZXIsIHByZXZpb3VzQ2FuZGlkYXRlLT5oYW5kbGUoKS5j
ZWxsS2luZCgpKTsKKyAgICAgICAgICAgICAgICAgICAgZnVuYyhwcmV2aW91c1BvaW50ZXIpOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgCkBAIC0xMDIsMTIgKzEwMCwxMCBAQCBwdWJs
aWM6CiAgICAgCiAgICAgICAgIGlmICghc2V0LmNvbnRhaW5zKGNhbmRpZGF0ZSkpCiAgICAgICAg
ICAgICByZXR1cm47Ci0KLSAgICAgICAgSGVhcENlbGw6OktpbmQgY2VsbEtpbmQgPSBjYW5kaWRh
dGUtPmhhbmRsZSgpLmNlbGxLaW5kKCk7CiAgICAgICAgIAogICAgICAgICBhdXRvIHRyeVBvaW50
ZXIgPSBbJl0gKHZvaWQqIHBvaW50ZXIpIHsKICAgICAgICAgICAgIGlmIChjYW5kaWRhdGUtPmhh
bmRsZSgpLmlzTGl2ZUNlbGwobWFya2luZ1ZlcnNpb24sIG5ld2x5QWxsb2NhdGVkVmVyc2lvbiwg
aXNNYXJraW5nLCBwb2ludGVyKSkKLSAgICAgICAgICAgICAgICBmdW5jKHBvaW50ZXIsIGNlbGxL
aW5kKTsKKyAgICAgICAgICAgICAgICBmdW5jKHBvaW50ZXIpOwogICAgICAgICB9OwogICAgIAog
ICAgICAgICBpZiAoY2FuZGlkYXRlLT5oYW5kbGUoKS5jZWxsS2luZCgpID09IEhlYXBDZWxsOjpK
U0NlbGwpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxT
ZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5jcHAKaW5kZXgg
ZjgyOGY2ZTE4OWI4MTgyN2QyYzg3OGZiOTM0OTk4OTY1NDliOTMzOS4uYWIxNzQxZmVmOGY4Yjgw
Y2ZjM2JkZGVmOTQxMDAzOThhZmMwZjc2ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSXNvQ2VsbFNldC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SXNvQ2VsbFNldC5jcHAKQEAgLTQ2LDQxICs0Niw2IEBAIElzb0NlbGxTZXQ6On5Jc29DZWxsU2V0
KCkKICAgICAgICAgQmFzaWNSYXdTZW50aW5lbE5vZGU8SXNvQ2VsbFNldD46OnJlbW92ZSgpOwog
fQogCi1SZWZQdHI8U2hhcmVkVGFzazxNYXJrZWRCbG9jazo6SGFuZGxlKigpPj4gSXNvQ2VsbFNl
dDo6cGFyYWxsZWxOb3RFbXB0eU1hcmtlZEJsb2NrU291cmNlKCkKLXsKLSAgICBjbGFzcyBUYXNr
IDogcHVibGljIFNoYXJlZFRhc2s8TWFya2VkQmxvY2s6OkhhbmRsZSooKT4gewotICAgIHB1Ymxp
YzoKLSAgICAgICAgVGFzayhJc29DZWxsU2V0JiBzZXQpCi0gICAgICAgICAgICA6IG1fc2V0KHNl
dCkKLSAgICAgICAgICAgICwgbV9hbGxvY2F0b3Ioc2V0Lm1fc3Vic3BhY2UubV9hbGxvY2F0b3Ip
Ci0gICAgICAgIHsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgTWFya2VkQmxvY2s6Okhh
bmRsZSogcnVuKCkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKG1fZG9uZSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgICAgIGF1dG8gbG9ja2Vy
ID0gaG9sZExvY2sobV9sb2NrKTsKLSAgICAgICAgICAgIGF1dG8gYml0cyA9IG1fYWxsb2NhdG9y
Lm1fbWFya2luZ05vdEVtcHR5ICYgbV9zZXQubV9ibG9ja3NXaXRoQml0czsKLSAgICAgICAgICAg
IG1faW5kZXggPSBiaXRzLmZpbmRCaXQobV9pbmRleCwgdHJ1ZSk7Ci0gICAgICAgICAgICBpZiAo
bV9pbmRleCA+PSBtX2FsbG9jYXRvci5tX2Jsb2Nrcy5zaXplKCkpIHsKLSAgICAgICAgICAgICAg
ICBtX2RvbmUgPSB0cnVlOwotICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIG1fYWxsb2NhdG9yLm1fYmxvY2tzW21faW5kZXgr
K107Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgcHJpdmF0ZToKLSAgICAgICAgSXNvQ2VsbFNl
dCYgbV9zZXQ7Ci0gICAgICAgIE1hcmtlZEFsbG9jYXRvciYgbV9hbGxvY2F0b3I7Ci0gICAgICAg
IHNpemVfdCBtX2luZGV4IHsgMCB9OwotICAgICAgICBMb2NrIG1fbG9jazsKLSAgICAgICAgYm9v
bCBtX2RvbmUgeyBmYWxzZSB9OwotICAgIH07Ci0gICAgCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBUYXNrKCp0aGlzKSk7Ci19Ci0KIE5FVkVSX0lOTElORSBCaXRtYXA8TWFya2VkQmxvY2s6OmF0
b21zUGVyQmxvY2s+KiBJc29DZWxsU2V0OjphZGRTbG93KHNpemVfdCBibG9ja0luZGV4KQogewog
ICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9zdWJzcGFjZS5tX2FsbG9jYXRvci5tX2JpdHZl
Y3RvckxvY2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2Vs
bFNldC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5oCmluZGV4IDM4
Njk1ZjIzZmNkZmE4ZDJlMDZlZmI0Y2RiNjg3NzFlYmZkMWU5MTEuLmZhZjU2NWY1NGVmYWJkMWM4
OWY3NWU3ODI0NTUxNzI3ZDgzZDVlNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0lzb0NlbGxTZXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29D
ZWxsU2V0LmgKQEAgLTQ4LDE4ICs0OCwxMCBAQCBwdWJsaWM6CiAgICAgCiAgICAgYm9vbCBjb250
YWlucyhIZWFwQ2VsbCogY2VsbCkgY29uc3Q7CiAgICAgCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUg
UmVmUHRyPFNoYXJlZFRhc2s8TWFya2VkQmxvY2s6OkhhbmRsZSooKT4+IHBhcmFsbGVsTm90RW1w
dHlNYXJrZWRCbG9ja1NvdXJjZSgpOwotICAgIAogICAgIC8vIFRoaXMgd2lsbCBoYXZlIHRvIGRv
IGEgY29tYmluZWQgc2VhcmNoIG92ZXIgd2hhdGV2ZXIgU3Vic3BhY2U6OmZvckVhY2hNYXJrZWRD
ZWxsIHVzZXMgYW5kCiAgICAgLy8gb3VyIG1fYmxvY2tzV2l0aEJpdHMuCiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgRnVuYz4KICAgICB2b2lkIGZvckVhY2hNYXJrZWRDZWxsKGNvbnN0IEZ1bmMmKTsK
LQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+Ci0gICAgUmVmUHRyPFNoYXJlZFRhc2s8dm9p
ZChTbG90VmlzaXRvciYpPj4gZm9yRWFjaE1hcmtlZENlbGxJblBhcmFsbGVsKGNvbnN0IEZ1bmMm
KTsKLSAgICAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgotICAgIHZvaWQgZm9yRWFjaExp
dmVDZWxsKGNvbnN0IEZ1bmMmKTsKICAgICAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIElz
b1N1YnNwYWNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2Vs
bFNldElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXRJbmxp
bmVzLmgKaW5kZXggZDk0MzRiNzFlMzY5NTIyMDg0MjRhNjAwMjFiYTE3ZmFhMjZhMjg1NS4uZjcy
NTBiNDczOWE5NWViZmVjOTQ5ZTUzNTQ3NDRkMjVkNzg4ZTkyMSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0SW5saW5lcy5oCkBAIC03OCw2MSArNzgsNSBAQCB2
b2lkIElzb0NlbGxTZXQ6OmZvckVhY2hNYXJrZWRDZWxsKGNvbnN0IEZ1bmMmIGZ1bmMpCiAgICAg
ICAgIH0pOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgotUmVmUHRyPFNoYXJlZFRhc2s8
dm9pZChTbG90VmlzaXRvciYpPj4gSXNvQ2VsbFNldDo6Zm9yRWFjaE1hcmtlZENlbGxJblBhcmFs
bGVsKGNvbnN0IEZ1bmMmIGZ1bmMpCi17Ci0gICAgY2xhc3MgVGFzayA6IHB1YmxpYyBTaGFyZWRU
YXNrPHZvaWQoU2xvdFZpc2l0b3ImKT4gewotICAgIHB1YmxpYzoKLSAgICAgICAgVGFzayhJc29D
ZWxsU2V0JiBzZXQsIGNvbnN0IEZ1bmMmIGZ1bmMpCi0gICAgICAgICAgICA6IG1fc2V0KHNldCkK
LSAgICAgICAgICAgICwgbV9ibG9ja1NvdXJjZShzZXQucGFyYWxsZWxOb3RFbXB0eU1hcmtlZEJs
b2NrU291cmNlKCkpCi0gICAgICAgICAgICAsIG1fZnVuYyhmdW5jKQotICAgICAgICB7Ci0gICAg
ICAgIH0KLSAgICAgICAgCi0gICAgICAgIHZvaWQgcnVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKSBv
dmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICB3aGlsZSAoTWFya2VkQmxvY2s6OkhhbmRs
ZSogaGFuZGxlID0gbV9ibG9ja1NvdXJjZS0+cnVuKCkpIHsKLSAgICAgICAgICAgICAgICBzaXpl
X3QgYmxvY2tJbmRleCA9IGhhbmRsZS0+aW5kZXgoKTsKLSAgICAgICAgICAgICAgICBhdXRvKiBi
aXRzID0gbV9zZXQubV9iaXRzW2Jsb2NrSW5kZXhdLmdldCgpOwotICAgICAgICAgICAgICAgIGhh
bmRsZS0+Zm9yRWFjaE1hcmtlZENlbGwoCi0gICAgICAgICAgICAgICAgICAgIFsmXSAoc2l6ZV90
IGF0b21OdW1iZXIsIEhlYXBDZWxsKiBjZWxsLCBIZWFwQ2VsbDo6S2luZCBraW5kKSAtPiBJdGVy
YXRpb25TdGF0dXMgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJpdHMtPmdldChhdG9t
TnVtYmVyKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2Z1bmModmlzaXRvciwgY2Vs
bCwga2luZCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVz
OjpDb250aW51ZTsKLSAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLSAgICAgICAgCi0gICAgcHJpdmF0ZToKLSAgICAgICAgSXNvQ2VsbFNldCYgbV9zZXQ7
Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRUYXNrPE1hcmtlZEJsb2NrOjpIYW5kbGUqKCk+PiBtX2Js
b2NrU291cmNlOwotICAgICAgICBGdW5jIG1fZnVuYzsKLSAgICAgICAgTG9jayBtX2xvY2s7Ci0g
ICAgfTsKLSAgICAKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRhc2soKnRoaXMsIGZ1bmMpKTsK
LX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KLXZvaWQgSXNvQ2VsbFNldDo6Zm9yRWFjaExp
dmVDZWxsKGNvbnN0IEZ1bmMmIGZ1bmMpCi17Ci0gICAgTWFya2VkQWxsb2NhdG9yJiBhbGxvY2F0
b3IgPSBtX3N1YnNwYWNlLm1fYWxsb2NhdG9yOwotICAgIG1fYmxvY2tzV2l0aEJpdHMuZm9yRWFj
aFNldEJpdCgKLSAgICAgICAgWyZdIChzaXplX3QgYmxvY2tJbmRleCkgewotICAgICAgICAgICAg
TWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2sgPSBhbGxvY2F0b3IubV9ibG9ja3NbYmxvY2tJbmRl
eF07Ci0KLSAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBjb3VsZCBvcHRpbWl6ZSB0aGlzIGJ5IGNo
ZWNraW5nIG91ciBiaXRzIGJlZm9yZSBxdWVyeWluZyBpc0xpdmUuCi0gICAgICAgICAgICAvLyBP
T1BTISAobmVlZCBidWcgVVJMKQotICAgICAgICAgICAgYXV0byogYml0cyA9IG1fYml0c1tibG9j
a0luZGV4XS5nZXQoKTsKLSAgICAgICAgICAgIGJsb2NrLT5mb3JFYWNoTGl2ZUNlbGwoCi0gICAg
ICAgICAgICAgICAgWyZdIChzaXplX3QgYXRvbU51bWJlciwgSGVhcENlbGwqIGNlbGwsIEhlYXBD
ZWxsOjpLaW5kIGtpbmQpIC0+IEl0ZXJhdGlvblN0YXR1cyB7Ci0gICAgICAgICAgICAgICAgICAg
IGlmIChiaXRzLT5nZXQoYXRvbU51bWJlcikpCi0gICAgICAgICAgICAgICAgICAgICAgICBmdW5j
KGNlbGwsIGtpbmQpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVz
OjpDb250aW51ZTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7Ci19Ci0KIH0gLy8g
bmFtZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9M
YXJnZUFsbG9jYXRpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0xhcmdlQWxsb2Nh
dGlvbi5oCmluZGV4IDMxM2YzY2Q3MjUxOGE2YjRkMmE1Y2UyY2RmY2Y1MDQxMWQ4OGViNTcuLmEy
NmQ5YTU2MGQ0MjdhM2I5ZGNhMjIxODAyNDZhMzZlM2U1YmVmOTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0xhcmdlQWxsb2NhdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0xhcmdlQWxsb2NhdGlvbi5oCkBAIC01OCw4ICs1OCw2IEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGNlbGwpICYgaGFsZkFs
aWdubWVudDsKICAgICB9CiAgICAgCi0gICAgU3Vic3BhY2UqIHN1YnNwYWNlKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdWJzcGFjZTsgfQotICAgIAogICAgIHZvaWQgbGFzdENoYW5jZVRvRmluYWxpemUo
KTsKICAgICAKICAgICBIZWFwKiBoZWFwKCkgY29uc3QgeyByZXR1cm4gbV93ZWFrU2V0LmhlYXAo
KTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrTWVy
Z2luZ0NvbnN0cmFpbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNr
TWVyZ2luZ0NvbnN0cmFpbnQuY3BwCmluZGV4IGIzZWI0NWI2ODkwMGI0ZGIxNGIwMzJjY2Q0NzE0
ODY5NDI0MjM4MDQuLmJhYjVhNDM0NGRkM2FiNGQwYjFmOTBjYTEwZTMxYWM1ZGVjZGI0YzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFja01lcmdpbmdDb25z
dHJhaW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2tNZXJn
aW5nQ29uc3RyYWludC5jcHAKQEAgLTU0LDEwICs1NCwxMSBAQCB2b2lkIE1hcmtTdGFja01lcmdp
bmdDb25zdHJhaW50OjpwcmVwYXJlVG9FeGVjdXRlSW1wbChjb25zdCBBYnN0cmFjdExvY2tlciYs
IFNsbwogICAgICAgICBkYXRhTG9nKCIoIiwgc2l6ZSwgIikiKTsKIH0KIAotdm9pZCBNYXJrU3Rh
Y2tNZXJnaW5nQ29uc3RyYWludDo6ZXhlY3V0ZUltcGwoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCitD
b25zdHJhaW50UGFyYWxsZWxpc20gTWFya1N0YWNrTWVyZ2luZ0NvbnN0cmFpbnQ6OmV4ZWN1dGVJ
bXBsKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIG1faGVhcC5tX211dGF0b3JNYXJrU3Rh
Y2stPnRyYW5zZmVyVG8odmlzaXRvci5tdXRhdG9yTWFya1N0YWNrKCkpOwogICAgIG1faGVhcC5t
X3JhY2VNYXJrU3RhY2stPnRyYW5zZmVyVG8odmlzaXRvci5tdXRhdG9yTWFya1N0YWNrKCkpOwor
ICAgIHJldHVybiBDb25zdHJhaW50UGFyYWxsZWxpc206OlNlcXVlbnRpYWw7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFy
a1N0YWNrTWVyZ2luZ0NvbnN0cmFpbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01h
cmtTdGFja01lcmdpbmdDb25zdHJhaW50LmgKaW5kZXggMjlkMzZlNTMwYmJiZDkyNmE4M2IwNDUw
YzRjOTFiZTVjNTQwZTc4Ni4uZmZjYWM0M2FmMTg1ZTQ4NWEyNjlmYWQ1YmY3MmUzNTAyNjY0MDM5
MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrTWVyZ2lu
Z0NvbnN0cmFpbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2tN
ZXJnaW5nQ29uc3RyYWludC5oCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKICAgICAKIHByb3Rl
Y3RlZDoKICAgICB2b2lkIHByZXBhcmVUb0V4ZWN1dGVJbXBsKGNvbnN0IEFic3RyYWN0TG9ja2Vy
JiBjb25zdHJhaW50U29sdmluZ0xvY2tlciwgU2xvdFZpc2l0b3ImKSBvdmVycmlkZTsKLSAgICB2
b2lkIGV4ZWN1dGVJbXBsKFNsb3RWaXNpdG9yJikgb3ZlcnJpZGU7CisgICAgQ29uc3RyYWludFBh
cmFsbGVsaXNtIGV4ZWN1dGVJbXBsKFNsb3RWaXNpdG9yJikgb3ZlcnJpZGU7CiAgICAgCiBwcml2
YXRlOgogICAgIEhlYXAmIG1faGVhcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL01hcmtlZEFsbG9jYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9N
YXJrZWRBbGxvY2F0b3IuY3BwCmluZGV4IDBiOWI0YzdhMWRjYzQ2Y2JiYzc1YzlhYzkzZDZjMGU1
ZGNiYzVkNjIuLmRlODQ2YWMwYjk5ZTY5MWQwZGY1MjU3NWNkNjQzZjcxNzJmMmM2OWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQWxsb2NhdG9yLmNwcApAQCAtNDU4
LDE0ICs0NTgsMTAgQEAgUmVmUHRyPFNoYXJlZFRhc2s8TWFya2VkQmxvY2s6OkhhbmRsZSooKT4+
IE1hcmtlZEFsbG9jYXRvcjo6cGFyYWxsZWxOb3RFbXB0eUJsb2MKICAgICAgICAgCiAgICAgICAg
IE1hcmtlZEJsb2NrOjpIYW5kbGUqIHJ1bigpIG92ZXJyaWRlCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIGlmIChtX2RvbmUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAg
ICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9jayk7CiAgICAgICAgICAgICBtX2luZGV4
ID0gbV9hbGxvY2F0b3IubV9tYXJraW5nTm90RW1wdHkuZmluZEJpdChtX2luZGV4LCB0cnVlKTsK
LSAgICAgICAgICAgIGlmIChtX2luZGV4ID49IG1fYWxsb2NhdG9yLm1fYmxvY2tzLnNpemUoKSkg
ewotICAgICAgICAgICAgICAgIG1fZG9uZSA9IHRydWU7CisgICAgICAgICAgICBpZiAobV9pbmRl
eCA+PSBtX2FsbG9jYXRvci5tX2Jsb2Nrcy5zaXplKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gbV9hbGxvY2F0b3Iu
bV9ibG9ja3NbbV9pbmRleCsrXTsKICAgICAgICAgfQogICAgICAgICAKQEAgLTQ3Myw3ICs0Njks
NiBAQCBSZWZQdHI8U2hhcmVkVGFzazxNYXJrZWRCbG9jazo6SGFuZGxlKigpPj4gTWFya2VkQWxs
b2NhdG9yOjpwYXJhbGxlbE5vdEVtcHR5QmxvYwogICAgICAgICBNYXJrZWRBbGxvY2F0b3ImIG1f
YWxsb2NhdG9yOwogICAgICAgICBzaXplX3QgbV9pbmRleCB7IDAgfTsKICAgICAgICAgTG9jayBt
X2xvY2s7Ci0gICAgICAgIGJvb2wgbV9kb25lIHsgZmFsc2UgfTsKICAgICB9OwogICAgIAogICAg
IHJldHVybiBhZG9wdFJlZihuZXcgVGFzaygqdGhpcykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFya2VkQmxvY2suY3BwCmluZGV4IDNlYjllYzI2ZjkxYTY5NDYwOTZmODU3NDM2NDdm
ZTZkMTA0MWIxNTEuLmFiMjE1ZTA4OWIwZGZiNjg0YWJkNDdiZWRlNjUwNmQ0YTk1MjcxZWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAKQEAgLTMyOSw3ICsz
MjksNiBAQCB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmRpZEFkZFRvQWxsb2NhdG9yKE1hcmtl
ZEFsbG9jYXRvciogYWxsb2NhdG9yLCBzaXplX3QgaQogICAgIAogICAgIG1faW5kZXggPSBpbmRl
eDsKICAgICBtX2FsbG9jYXRvciA9IGFsbG9jYXRvcjsKLSAgICBtX2Jsb2NrLT5tX3N1YnNwYWNl
ID0gYWxsb2NhdG9yLT5zdWJzcGFjZSgpOwogICAgIAogICAgIHNpemVfdCBjZWxsU2l6ZSA9IGFs
bG9jYXRvci0+Y2VsbFNpemUoKTsKICAgICBtX2F0b21zUGVyQ2VsbCA9IChjZWxsU2l6ZSArIGF0
b21TaXplIC0gMSkgLyBhdG9tU2l6ZTsKQEAgLTM1Nyw3ICszNTYsNiBAQCB2b2lkIE1hcmtlZEJs
b2NrOjpIYW5kbGU6OmRpZFJlbW92ZUZyb21BbGxvY2F0b3IoKQogICAgIAogICAgIG1faW5kZXgg
PSBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpOwogICAgIG1fYWxsb2NhdG9yID0g
bnVsbHB0cjsKLSAgICBtX2Jsb2NrLT5tX3N1YnNwYWNlID0gbnVsbHB0cjsKIH0KIAogI2lmICFB
U1NFUlRfRElTQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01h
cmtlZEJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCmlu
ZGV4IDExYjcyYzdhMTZkY2ZmYTBiN2Q3YzY4ODZlYjYyODM0OGEyZTJkYWQuLjIwMzk3YTRjMzk0
MTI1OWI0ZDIwODdiM2MzOGEyMGYxNzM4OWM3MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFya2VkQmxvY2suaApAQCAtMzAwLDggKzMwMCw2IEBAIHB1YmxpYzoKICAgICBjb25zdCBC
aXRtYXA8YXRvbXNQZXJCbG9jaz4mIG1hcmtzKCkgY29uc3Q7CiAgICAgCiAgICAgQ291bnRpbmdM
b2NrJiBsb2NrKCkgeyByZXR1cm4gbV9sb2NrOyB9Ci0gICAgCi0gICAgU3Vic3BhY2UqIHN1YnNw
YWNlKCkgY29uc3QgeyByZXR1cm4gbV9zdWJzcGFjZTsgfQogCiBwcml2YXRlOgogICAgIHN0YXRp
YyBjb25zdCBzaXplX3QgYXRvbUFsaWdubWVudE1hc2sgPSBhdG9tU2l6ZSAtIDE7CkBAIC0zMjEs
NyArMzE5LDYgQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgSGFuZGxlJiBtX2hhbmRsZTsKICAg
ICBWTSogbV92bTsKLSAgICBTdWJzcGFjZSogbV9zdWJzcGFjZTsKIAogICAgIENvdW50aW5nTG9j
ayBtX2xvY2s7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9N
YXJrZWRCbG9ja0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJs
b2NrSW5saW5lcy5oCmluZGV4IGNhNzM1YmY0NjJjMGIyYzUxNzE1YjQ5ZTM2Y2U5NDAxNGNkNTNl
NTMuLjNkZmJmNzVkMzNhNWExZjRiMjlmZjMyNTllN2RlYmZiMDJhMDU2NjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrSW5saW5lcy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrSW5saW5lcy5oCkBAIC00ODMsMTIg
KzQ4Myw2IEBAIGlubGluZSBJdGVyYXRpb25TdGF0dXMgTWFya2VkQmxvY2s6OkhhbmRsZTo6Zm9y
RWFjaExpdmVDZWxsKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0CiAgICAgLy8gaGFwcGVuLCB3ZSB3aWxs
IGp1c3Qgb3Zlcmxvb2sgb2JqZWN0cy4gSSB0aGluayB0aGF0IGJlY2F1c2Ugb2YgaG93IGFib3V0
VG9NYXJrU2xvdygpIGRvZXMgdGhpbmdzLAogICAgIC8vIGEgcmFjZSBvdWdodCB0byBtZWFuIHRo
YXQgaXQganVzdCByZXR1cm5zIGZhbHNlIHdoZW4gaXQgc2hvdWxkIGhhdmUgcmV0dXJuZWQgdHJ1
ZSAtIGJ1dCB0aGlzIGlzCiAgICAgLy8gc29tZXRoaW5nIHRoYXQgd291bGQgaGF2ZSB0byBiZSB2
ZXJpZmllZCBjYXJlZnVsbHkuCi0gICAgLy8KLSAgICAvLyBOT1RFOiBTb21lIHVzZXJzIG9mIGZv
ckVhY2hMaXZlQ2VsbCByZXF1aXJlIHRoYXQgdGhlaXIgY2FsbGJhY2sgaXMgY2FsbGVkIGV4YWN0
bHkgb25jZSBmb3IKLSAgICAvLyBlYWNoIGxpdmUgY2VsbC4gV2UgY291bGQgb3B0aW1pemUgdGhp
cyBmdW5jdGlvbiBmb3IgdGhvc2UgdXNlcnMgYnkgdXNpbmcgYSBzbG93IGxvb3AgaWYgdGhlCi0g
ICAgLy8gYmxvY2sgaXMgaW4gbWFya3MtbWVhbi1saXZlIG1vZGUuIFRoYXQgd291bGQgb25seSBh
ZmZlY3QgYmxvY2tzIHRoYXQgaGFkIHBhcnRpYWwgc3Vydml2b3JzCi0gICAgLy8gZHVyaW5nIHRo
ZSBsYXN0IGNvbGxlY3Rpb24gYW5kIG5vIHN1cnZpdm9ycyAoeWV0KSBkdXJpbmcgdGhpcyBjb2xs
ZWN0aW9uLgotICAgIC8vCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE4MDMxNQogICAgIAogICAgIEhlYXBDZWxsOjpLaW5kIGtpbmQgPSBtX2F0dHJpYnV0
ZXMuY2VsbEtpbmQ7CkBAIC00OTcsNyArNDkxLDcgQEAgaW5saW5lIEl0ZXJhdGlvblN0YXR1cyBN
YXJrZWRCbG9jazo6SGFuZGxlOjpmb3JFYWNoTGl2ZUNlbGwoY29uc3QgRnVuY3RvciYgZnVuY3QK
ICAgICAgICAgaWYgKCFpc0xpdmUoY2VsbCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAg
ICAgICBpZiAoZnVuY3RvcihpLCBjZWxsLCBraW5kKSA9PSBJdGVyYXRpb25TdGF0dXM6OkRvbmUp
CisgICAgICAgIGlmIChmdW5jdG9yKGNlbGwsIGtpbmQpID09IEl0ZXJhdGlvblN0YXR1czo6RG9u
ZSkKICAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkRvbmU7CiAgICAgfQogICAg
IHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2VJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrZWRTcGFjZUlubGluZXMuaAppbmRleCA0YzZiMTE5ZWM0OWUyYTFmODk2
ZmYxZGEwMTFlYmMxNzk4ZjY5NGQwLi43ZmJhODZkY2RhYzNmMmEwNzU1MDAxMWIyMTczMWE0MzFj
ZjdiYTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFj
ZUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZUlu
bGluZXMuaApAQCAtNDAsMTEgKzQwLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gaW5s
aW5lIHZvaWQgTWFya2VkU3BhY2U6OmZvckVhY2hMaXZlQ2VsbChjb25zdCBGdW5jdG8KIHsKICAg
ICBCbG9ja0l0ZXJhdG9yIGVuZCA9IG1fYmxvY2tzLnNldCgpLmVuZCgpOwogICAgIGZvciAoQmxv
Y2tJdGVyYXRvciBpdCA9IG1fYmxvY2tzLnNldCgpLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkg
ewotICAgICAgICBJdGVyYXRpb25TdGF0dXMgcmVzdWx0ID0gKCppdCktPmhhbmRsZSgpLmZvckVh
Y2hMaXZlQ2VsbCgKLSAgICAgICAgICAgIFsmXSAoc2l6ZV90LCBIZWFwQ2VsbCogY2VsbCwgSGVh
cENlbGw6OktpbmQga2luZCkgLT4gSXRlcmF0aW9uU3RhdHVzIHsKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gZnVuY3RvcihjZWxsLCBraW5kKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICBpZiAo
cmVzdWx0ID09IEl0ZXJhdGlvblN0YXR1czo6RG9uZSkKKyAgICAgICAgaWYgKCgqaXQpLT5oYW5k
bGUoKS5mb3JFYWNoTGl2ZUNlbGwoZnVuY3RvcikgPT0gSXRlcmF0aW9uU3RhdHVzOjpEb25lKQog
ICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBmb3IgKExhcmdlQWxsb2NhdGlvbiogYWxs
b2NhdGlvbiA6IG1fbGFyZ2VBbGxvY2F0aW9ucykgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTWFya2luZ0NvbnN0cmFpbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTWFya2luZ0NvbnN0cmFpbnQuY3BwCmluZGV4IDNiYWI3Njc5YzU1M2NkM2VjM2U0
YzgxNGVjZWE0ZDhjNmM0Mjk5YmIuLjY0MDg0ZmVlMGM5MDJkOGMxYzVhZWEzNDk4Yjg0NzNmNDQ4
ZTI4YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtpbmdDb25z
dHJhaW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJraW5nQ29uc3Ry
YWludC5jcHAKQEAgLTUxLDEzICs1MSwxOSBAQCB2b2lkIE1hcmtpbmdDb25zdHJhaW50OjpyZXNl
dFN0YXRzKCkKICAgICBtX2xhc3RWaXNpdENvdW50ID0gMDsKIH0KIAotdm9pZCBNYXJraW5nQ29u
c3RyYWludDo6ZXhlY3V0ZShTbG90VmlzaXRvciYgdmlzaXRvcikKK0NvbnN0cmFpbnRQYXJhbGxl
bGlzbSBNYXJraW5nQ29uc3RyYWludDo6ZXhlY3V0ZShTbG90VmlzaXRvciYgdmlzaXRvcikKIHsK
ICAgICBWaXNpdENvdW50ZXIgdmlzaXRDb3VudGVyKHZpc2l0b3IpOwotICAgIGV4ZWN1dGVJbXBs
KHZpc2l0b3IpOworICAgIENvbnN0cmFpbnRQYXJhbGxlbGlzbSByZXN1bHQgPSBleGVjdXRlSW1w
bCh2aXNpdG9yKTsKICAgICBtX2xhc3RWaXNpdENvdW50ICs9IHZpc2l0Q291bnRlci52aXNpdENv
dW50KCk7CiAgICAgaWYgKHZlcmJvc2VNYXJraW5nQ29uc3RyYWludCAmJiB2aXNpdENvdW50ZXIu
dmlzaXRDb3VudCgpKQogICAgICAgICBkYXRhTG9nKCIoIiwgYWJicmV2aWF0ZWROYW1lKCksICIg
dmlzaXRlZCAiLCB2aXNpdENvdW50ZXIudmlzaXRDb3VudCgpLCAiIGluIGV4ZWN1dGUpIik7Cisg
ICAgaWYgKHJlc3VsdCA9PSBDb25zdHJhaW50UGFyYWxsZWxpc206OlBhcmFsbGVsKSB7CisgICAg
ICAgIC8vIEl0J3MgaWxsZWdhbCB0byBwcm9kdWNlIHBhcmFsbGVsIHdvcmsgaWYgeW91IGhhdmVu
J3QgYWR2ZXJ0aXNlZCBpdCB1cGZyb250IGJlY2F1c2UgdGhlIHNvbHZlcgorICAgICAgICAvLyBo
YXMgb3B0aW1pemF0aW9ucyBmb3IgY29uc3RyYWludHMgdGhhdCBwcm9taXNlIHRvIG5ldmVyIHBy
b2R1Y2UgcGFyYWxsZWwgd29yay4KKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9wYXJhbGxlbGlz
bSA9PSBDb25zdHJhaW50UGFyYWxsZWxpc206OlBhcmFsbGVsKTsKKyAgICB9CisgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAogZG91YmxlIE1hcmtpbmdDb25zdHJhaW50OjpxdWlja1dvcmtFc3RpbWF0
ZShTbG90VmlzaXRvciYpCkBAIC04MSwxMCArODcsMTAgQEAgdm9pZCBNYXJraW5nQ29uc3RyYWlu
dDo6cHJlcGFyZVRvRXhlY3V0ZShjb25zdCBBYnN0cmFjdExvY2tlciYgY29uc3RyYWludFNvbHZp
bmcKICAgICAgICAgZGF0YUxvZygiKCIsIGFiYnJldmlhdGVkTmFtZSgpLCAiIHZpc2l0ZWQgIiwg
dmlzaXRDb3VudGVyLnZpc2l0Q291bnQoKSwgIiBpbiBwcmVwYXJlVG9FeGVjdXRlKSIpOwogfQog
Ci12b2lkIE1hcmtpbmdDb25zdHJhaW50Ojpkb1BhcmFsbGVsV29yayhTbG90VmlzaXRvciYgdmlz
aXRvciwgU2hhcmVkVGFzazx2b2lkKFNsb3RWaXNpdG9yJik+JiB0YXNrKQordm9pZCBNYXJraW5n
Q29uc3RyYWludDo6ZG9QYXJhbGxlbFdvcmsoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAg
VmlzaXRDb3VudGVyIHZpc2l0Q291bnRlcih2aXNpdG9yKTsKLSAgICB0YXNrLnJ1bih2aXNpdG9y
KTsKKyAgICBkb1BhcmFsbGVsV29ya0ltcGwodmlzaXRvcik7CiAgICAgaWYgKHZlcmJvc2VNYXJr
aW5nQ29uc3RyYWludCAmJiB2aXNpdENvdW50ZXIudmlzaXRDb3VudCgpKQogICAgICAgICBkYXRh
TG9nKCIoIiwgYWJicmV2aWF0ZWROYW1lKCksICIgdmlzaXRlZCAiLCB2aXNpdENvdW50ZXIudmlz
aXRDb3VudCgpLCAiIGluIGRvUGFyYWxsZWxXb3JrKSIpOwogICAgIHsKQEAgLTkzLDkgKzk5LDI3
IEBAIHZvaWQgTWFya2luZ0NvbnN0cmFpbnQ6OmRvUGFyYWxsZWxXb3JrKFNsb3RWaXNpdG9yJiB2
aXNpdG9yLCBTaGFyZWRUYXNrPHZvaWQoU2xvCiAgICAgfQogfQogCit2b2lkIE1hcmtpbmdDb25z
dHJhaW50OjpmaW5pc2hQYXJhbGxlbFdvcmsoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAg
VmlzaXRDb3VudGVyIHZpc2l0Q291bnRlcih2aXNpdG9yKTsKKyAgICBmaW5pc2hQYXJhbGxlbFdv
cmtJbXBsKHZpc2l0b3IpOworICAgIG1fbGFzdFZpc2l0Q291bnQgKz0gdmlzaXRDb3VudGVyLnZp
c2l0Q291bnQoKTsKKyAgICBpZiAodmVyYm9zZU1hcmtpbmdDb25zdHJhaW50ICYmIHZpc2l0Q291
bnRlci52aXNpdENvdW50KCkpCisgICAgICAgIGRhdGFMb2coIigiLCBhYmJyZXZpYXRlZE5hbWUo
KSwgIiB2aXNpdGVkICIsIHZpc2l0Q291bnRlci52aXNpdENvdW50KCksICIgaW4gZmluaXNoUGFy
YWxsZWxXb3JrKSIpOworfQorCiB2b2lkIE1hcmtpbmdDb25zdHJhaW50OjpwcmVwYXJlVG9FeGVj
dXRlSW1wbChjb25zdCBBYnN0cmFjdExvY2tlciYsIFNsb3RWaXNpdG9yJikKIHsKIH0KIAordm9p
ZCBNYXJraW5nQ29uc3RyYWludDo6ZG9QYXJhbGxlbFdvcmtJbXBsKFNsb3RWaXNpdG9yJikKK3sK
KyAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKK30KKwordm9pZCBNYXJraW5nQ29uc3Ry
YWludDo6ZmluaXNoUGFyYWxsZWxXb3JrSW1wbChTbG90VmlzaXRvciYpCit7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9N
YXJraW5nQ29uc3RyYWludC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2luZ0Nv
bnN0cmFpbnQuaAppbmRleCA1ZjBlZmZlMzMyMDdjZmJkYzY0ZWUzYzA0NGViMGNkN2U1Y2YyM2Nh
Li5mMGZjYzE4N2MwYThhYjBjNjU4MWU2NjBjOGVkNzY4MmUxODQ5MjZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJraW5nQ29uc3RyYWludC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtpbmdDb25zdHJhaW50LmgKQEAgLTMyLDcgKzMyLDYg
QEAKICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAj
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1NoYXJlZFRhc2suaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNjAs
NyArNTksNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgc2l6ZV90IGxhc3RWaXNpdENvdW50KCkgY29u
c3QgeyByZXR1cm4gbV9sYXN0VmlzaXRDb3VudDsgfQogICAgIAotICAgIHZvaWQgZXhlY3V0ZShT
bG90VmlzaXRvciYpOworICAgIENvbnN0cmFpbnRQYXJhbGxlbGlzbSBleGVjdXRlKFNsb3RWaXNp
dG9yJik7CiAgICAgCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCBkb3VibGUgcXVpY2tX
b3JrRXN0aW1hdGUoU2xvdFZpc2l0b3ImIHZpc2l0b3IpOwogICAgIApAQCAtNjgsNyArNjcsOCBA
QCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBwcmVwYXJlVG9FeGVjdXRlKGNvbnN0IEFic3RyYWN0
TG9ja2VyJiBjb25zdHJhaW50U29sdmluZ0xvY2tlciwgU2xvdFZpc2l0b3ImKTsKICAgICAKLSAg
ICB2b2lkIGRvUGFyYWxsZWxXb3JrKFNsb3RWaXNpdG9yJiwgU2hhcmVkVGFzazx2b2lkKFNsb3RW
aXNpdG9yJik+Jik7CisgICAgdm9pZCBkb1BhcmFsbGVsV29yayhTbG90VmlzaXRvciYpOworICAg
IHZvaWQgZmluaXNoUGFyYWxsZWxXb3JrKFNsb3RWaXNpdG9yJik7CiAgICAgCiAgICAgQ29uc3Ry
YWludFZvbGF0aWxpdHkgdm9sYXRpbGl0eSgpIGNvbnN0IHsgcmV0dXJuIG1fdm9sYXRpbGl0eTsg
fQogICAgIApAQCAtNzYsOCArNzYsMTAgQEAgcHVibGljOgogICAgIENvbnN0cmFpbnRQYXJhbGxl
bGlzbSBwYXJhbGxlbGlzbSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYWxsZWxpc207IH0KIAogcHJv
dGVjdGVkOgotICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlSW1wbChTbG90VmlzaXRvciYpID0gMDsK
KyAgICB2aXJ0dWFsIENvbnN0cmFpbnRQYXJhbGxlbGlzbSBleGVjdXRlSW1wbChTbG90VmlzaXRv
ciYpID0gMDsKICAgICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvRXhl
Y3V0ZUltcGwoY29uc3QgQWJzdHJhY3RMb2NrZXImIGNvbnN0cmFpbnRTb2x2aW5nTG9ja2VyLCBT
bG90VmlzaXRvciYpOworICAgIHZpcnR1YWwgdm9pZCBkb1BhcmFsbGVsV29ya0ltcGwoU2xvdFZp
c2l0b3ImKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmluaXNoUGFyYWxsZWxXb3JrSW1wbChTbG90Vmlz
aXRvciYpOwogICAgIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgTWFya2luZ0NvbnN0cmFp
bnRTZXQ7IC8vIFNvIGl0IGNhbiBzZXQgbV9pbmRleC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL01hcmtpbmdDb25zdHJhaW50U2V0LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL01hcmtpbmdDb25zdHJhaW50U2V0LmNwcAppbmRleCBiM2FiZDJjNTIyNGZj
ZTNlNWNlMTJjNGYxNjNlZDQ4MjNkYWU2OThlLi4yN2M5MDdjOWZiMjEzMmRiMTNlMTZhYjgxYzcz
Y2Q5NTI5OWUzNTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJr
aW5nQ29uc3RyYWludFNldC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFy
a2luZ0NvbnN0cmFpbnRTZXQuY3BwCkBAIC02NSw5ICs2NSw5IEBAIHZvaWQgTWFya2luZ0NvbnN0
cmFpbnRTZXQ6OmRpZFN0YXJ0TWFya2luZygpCiAgICAgbV9pdGVyYXRpb24gPSAxOwogfQogCi12
b2lkIE1hcmtpbmdDb25zdHJhaW50U2V0OjphZGQoQ1N0cmluZyBhYmJyZXZpYXRlZE5hbWUsIENT
dHJpbmcgbmFtZSwgOjpGdW5jdGlvbjx2b2lkKFNsb3RWaXNpdG9yJik+IGZ1bmN0aW9uLCBDb25z
dHJhaW50Vm9sYXRpbGl0eSB2b2xhdGlsaXR5LCBDb25zdHJhaW50Q29uY3VycmVuY3kgY29uY3Vy
cmVuY3ksIENvbnN0cmFpbnRQYXJhbGxlbGlzbSBwYXJhbGxlbGlzbSkKK3ZvaWQgTWFya2luZ0Nv
bnN0cmFpbnRTZXQ6OmFkZChDU3RyaW5nIGFiYnJldmlhdGVkTmFtZSwgQ1N0cmluZyBuYW1lLCA6
OkZ1bmN0aW9uPHZvaWQoU2xvdFZpc2l0b3ImKT4gZnVuY3Rpb24sIENvbnN0cmFpbnRWb2xhdGls
aXR5IHZvbGF0aWxpdHksIENvbnN0cmFpbnRDb25jdXJyZW5jeSBjb25jdXJyZW5jeSkKIHsKLSAg
ICBhZGQoc3RkOjptYWtlX3VuaXF1ZTxTaW1wbGVNYXJraW5nQ29uc3RyYWludD4oV1RGTW92ZShh
YmJyZXZpYXRlZE5hbWUpLCBXVEZNb3ZlKG5hbWUpLCBXVEZNb3ZlKGZ1bmN0aW9uKSwgdm9sYXRp
bGl0eSwgY29uY3VycmVuY3ksIHBhcmFsbGVsaXNtKSk7CisgICAgYWRkKHN0ZDo6bWFrZV91bmlx
dWU8U2ltcGxlTWFya2luZ0NvbnN0cmFpbnQ+KFdURk1vdmUoYWJicmV2aWF0ZWROYW1lKSwgV1RG
TW92ZShuYW1lKSwgV1RGTW92ZShmdW5jdGlvbiksIHZvbGF0aWxpdHksIGNvbmN1cnJlbmN5KSk7
CiB9CiAKIHZvaWQgTWFya2luZ0NvbnN0cmFpbnRTZXQ6OmFkZCgKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtpbmdDb25zdHJhaW50U2V0LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9NYXJraW5nQ29uc3RyYWludFNldC5oCmluZGV4IDZhOTgwZWM2MjFm
OTc2M2QwN2VkZDQyNmYzMGQ3NDkxNGFkOTZlYTMuLjA3OWVlZTU4NmY4NDMyYzllNGJkNTBkNTVk
NWRlMjM4MTRmODM0ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01h
cmtpbmdDb25zdHJhaW50U2V0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFy
a2luZ0NvbnN0cmFpbnRTZXQuaApAQCAtNDYsMTcgKzQ2LDcgQEAgcHVibGljOgogICAgICAgICBD
U3RyaW5nIG5hbWUsCiAgICAgICAgIDo6RnVuY3Rpb248dm9pZChTbG90VmlzaXRvciYpPiwKICAg
ICAgICAgQ29uc3RyYWludFZvbGF0aWxpdHksCi0gICAgICAgIENvbnN0cmFpbnRDb25jdXJyZW5j
eSA9IENvbnN0cmFpbnRDb25jdXJyZW5jeTo6Q29uY3VycmVudCwKLSAgICAgICAgQ29uc3RyYWlu
dFBhcmFsbGVsaXNtID0gQ29uc3RyYWludFBhcmFsbGVsaXNtOjpTZXF1ZW50aWFsKTsKLSAgICAK
LSAgICB2b2lkIGFkZCgKLSAgICAgICAgQ1N0cmluZyBhYmJyZXZpYXRlZE5hbWUsIENTdHJpbmcg
bmFtZSwKLSAgICAgICAgOjpGdW5jdGlvbjx2b2lkKFNsb3RWaXNpdG9yJik+IGZ1bmMsCi0gICAg
ICAgIENvbnN0cmFpbnRWb2xhdGlsaXR5IHZvbGF0aWxpdHksCi0gICAgICAgIENvbnN0cmFpbnRQ
YXJhbGxlbGlzbSBwYXJhbGxlbGlzbSkKLSAgICB7Ci0gICAgICAgIGFkZChhYmJyZXZpYXRlZE5h
bWUsIG5hbWUsIFdURk1vdmUoZnVuYyksIHZvbGF0aWxpdHksIENvbnN0cmFpbnRDb25jdXJyZW5j
eTo6Q29uY3VycmVudCwgcGFyYWxsZWxpc20pOwotICAgIH0KKyAgICAgICAgQ29uc3RyYWludENv
bmN1cnJlbmN5ID0gQ29uc3RyYWludENvbmN1cnJlbmN5OjpDb25jdXJyZW50KTsKICAgICAKICAg
ICB2b2lkIGFkZChzdGQ6OnVuaXF1ZV9wdHI8TWFya2luZ0NvbnN0cmFpbnQ+KTsKICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtpbmdDb25zdHJhaW50U29s
dmVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtpbmdDb25zdHJhaW50U29s
dmVyLmNwcAppbmRleCAyOTg5MmRmMTc3Yzk1ZTA5MzU2MTk3YjU3NjQyOTJjNDA2YjU4MjNjLi44
OWM2MDZhMmEzYzdhZGI1YmJmMDE1OGFkODlhNWEzZmM0MjkwMDExIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJraW5nQ29uc3RyYWludFNvbHZlci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2luZ0NvbnN0cmFpbnRTb2x2ZXIuY3BwCkBA
IC03OCw2ICs3OCwxMCBAQCB2b2lkIE1hcmtpbmdDb25zdHJhaW50U29sdmVyOjpleGVjdXRlKFNj
aGVkdWxlclByZWZlcmVuY2UgcHJlZmVyZW5jZSwgU2NvcGVkTGFtYgogICAgIFJFTEVBU0VfQVNT
RVJUKCFtX3BpY2tOZXh0SXNTdGlsbEFjdGl2ZSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoIW1fbnVt
VGhyZWFkc1RoYXRNYXlQcm9kdWNlV29yayk7CiAgICAgICAgIAorICAgIGZvciAodW5zaWduZWQg
aW5kZXhUb1J1biA6IG1fZGlkRXhlY3V0ZUluUGFyYWxsZWwpCisgICAgICAgIG1fc2V0Lm1fc2V0
W2luZGV4VG9SdW5dLT5maW5pc2hQYXJhbGxlbFdvcmsobV9tYWluVmlzaXRvcik7CisgICAgbV9k
aWRFeGVjdXRlSW5QYXJhbGxlbC5jbGVhcigpOworICAgIAogICAgIGlmICghbV90b0V4ZWN1dGVT
ZXF1ZW50aWFsbHkuaXNFbXB0eSgpKSB7CiAgICAgICAgIGZvciAodW5zaWduZWQgaW5kZXhUb1J1
biA6IG1fdG9FeGVjdXRlU2VxdWVudGlhbGx5KQogICAgICAgICAgICAgZXhlY3V0ZSgqbV9zZXQu
bV9zZXRbaW5kZXhUb1J1bl0pOwpAQCAtODUsNiArODksNyBAQCB2b2lkIE1hcmtpbmdDb25zdHJh
aW50U29sdmVyOjpleGVjdXRlKFNjaGVkdWxlclByZWZlcmVuY2UgcHJlZmVyZW5jZSwgU2NvcGVk
TGFtYgogICAgIH0KICAgICAgICAgCiAgICAgUkVMRUFTRV9BU1NFUlQobV90b0V4ZWN1dGVJblBh
cmFsbGVsLmlzRW1wdHkoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoIW1fdG9FeGVjdXRlSW5QYXJh
bGxlbFNldC5iaXRDb3VudCgpKTsKIH0KIAogdm9pZCBNYXJraW5nQ29uc3RyYWludFNvbHZlcjo6
ZHJhaW4oQml0VmVjdG9yJiB1bmV4ZWN1dGVkKQpAQCAtMTUxLDIzICsxNTYsMTUgQEAgdm9pZCBN
YXJraW5nQ29uc3RyYWludFNvbHZlcjo6ZXhlY3V0ZShNYXJraW5nQ29uc3RyYWludCYgY29uc3Ry
YWludCkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIGNvbnN0cmFpbnQucHJlcGFyZVRvRXhl
Y3V0ZShOb0xvY2tpbmdOZWNlc3NhcnksIG1fbWFpblZpc2l0b3IpOwotICAgIGNvbnN0cmFpbnQu
ZXhlY3V0ZShtX21haW5WaXNpdG9yKTsKLSAgICBtX2V4ZWN1dGVkLnNldChjb25zdHJhaW50Lmlu
ZGV4KCkpOwotfQotCi12b2lkIE1hcmtpbmdDb25zdHJhaW50U29sdmVyOjphZGRQYXJhbGxlbFRh
c2soUmVmUHRyPFNoYXJlZFRhc2s8dm9pZChTbG90VmlzaXRvciYpPj4gdGFzaywgTWFya2luZ0Nv
bnN0cmFpbnQmIGNvbnN0cmFpbnQpCi17Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xv
Y2spOwotICAgIG1fdG9FeGVjdXRlSW5QYXJhbGxlbC5hcHBlbmQoVGFza1dpdGhDb25zdHJhaW50
KFdURk1vdmUodGFzayksICZjb25zdHJhaW50KSk7CisgICAgQ29uc3RyYWludFBhcmFsbGVsaXNt
IHBhcmFsbGVsaXNtID0gY29uc3RyYWludC5leGVjdXRlKG1fbWFpblZpc2l0b3IpOworICAgIGRp
ZEV4ZWN1dGUocGFyYWxsZWxpc20sIGNvbnN0cmFpbnQuaW5kZXgoKSk7CiB9CiAKIHZvaWQgTWFy
a2luZ0NvbnN0cmFpbnRTb2x2ZXI6OnJ1bkV4ZWN1dGlvblRocmVhZChTbG90VmlzaXRvciYgdmlz
aXRvciwgU2NoZWR1bGVyUHJlZmVyZW5jZSBwcmVmZXJlbmNlLCBTY29wZWRMYW1iZGE8c3RkOjpv
cHRpb25hbDx1bnNpZ25lZD4oKT4gcGlja05leHQpCiB7CiAgICAgZm9yICg7OykgewogICAgICAg
ICBib29sIGRvUGFyYWxsZWxXb3JrTW9kZTsKLSAgICAgICAgTWFya2luZ0NvbnN0cmFpbnQqIGNv
bnN0cmFpbnQgPSBudWxscHRyOwotICAgICAgICB1bnNpZ25lZCBpbmRleFRvUnVuID0gVUlOVF9N
QVg7Ci0gICAgICAgIFRhc2tXaXRoQ29uc3RyYWludCB0YXNrOworICAgICAgICB1bnNpZ25lZCBp
bmRleFRvUnVuOwogICAgICAgICB7CiAgICAgICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2Nr
KG1fbG9jayk7CiAgICAgICAgICAgICAgICAgICAgICAgICAKQEAgLTE3NiwxMiArMTczLDExIEBA
IHZvaWQgTWFya2luZ0NvbnN0cmFpbnRTb2x2ZXI6OnJ1bkV4ZWN1dGlvblRocmVhZChTbG90Vmlz
aXRvciYgdmlzaXRvciwgU2NoZWR1bGVyCiAgICAgICAgICAgICAgICAgICAgIGlmIChtX3RvRXhl
Y3V0ZUluUGFyYWxsZWwuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgdGFzayA9
IG1fdG9FeGVjdXRlSW5QYXJhbGxlbC5maXJzdCgpOwotICAgICAgICAgICAgICAgICAgICBjb25z
dHJhaW50ID0gdGFzay5jb25zdHJhaW50OworICAgICAgICAgICAgICAgICAgICBpbmRleFRvUnVu
ID0gbV90b0V4ZWN1dGVJblBhcmFsbGVsLmZpcnN0KCk7CiAgICAgICAgICAgICAgICAgICAgIGRv
UGFyYWxsZWxXb3JrTW9kZSA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICAgICAgICAgIH07Ci0gICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgYXV0byB0cnlOZXh0Q29uc3RyYWludCA9IFsm
XSAoKSAtPiBib29sIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFtX3BpY2tOZXh0SXNTdGls
bEFjdGl2ZSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE5Niwx
NyArMTkyLDE2IEBAIHZvaWQgTWFya2luZ0NvbnN0cmFpbnRTb2x2ZXI6OnJ1bkV4ZWN1dGlvblRo
cmVhZChTbG90VmlzaXRvciYgdmlzaXRvciwgU2NoZWR1bGVyCiAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAobV9leGVjdXRlZC5nZXQoKnBpY2tSZXN1bHQpKQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ci0gICAgICAgICAgICAgICAgICAgICAgICBNYXJraW5nQ29uc3RyYWludCYgY2FuZGlkYXRlQ29u
c3RyYWludCA9ICptX3NldC5tX3NldFsqcGlja1Jlc3VsdF07Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoY2FuZGlkYXRlQ29uc3RyYWludC5jb25jdXJyZW5jeSgpID09IENvbnN0cmFpbnRD
b25jdXJyZW5jeTo6U2VxdWVudGlhbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgTWFya2lu
Z0NvbnN0cmFpbnQmIGNvbnN0cmFpbnQgPSAqbV9zZXQubV9zZXRbKnBpY2tSZXN1bHRdOworICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnN0cmFpbnQuY29uY3VycmVuY3koKSA9PSBDb25z
dHJhaW50Q29uY3VycmVuY3k6OlNlcXVlbnRpYWwpIHsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtX3RvRXhlY3V0ZVNlcXVlbnRpYWxseS5hcHBlbmQoKnBpY2tSZXN1bHQpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZUNvbnN0cmFpbnQucGFyYWxs
ZWxpc20oKSA9PSBDb25zdHJhaW50UGFyYWxsZWxpc206OlBhcmFsbGVsKQorICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKGNvbnN0cmFpbnQucGFyYWxsZWxpc20oKSA9PSBDb25zdHJhaW50UGFy
YWxsZWxpc206OlBhcmFsbGVsKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fbnVtVGhy
ZWFkc1RoYXRNYXlQcm9kdWNlV29yaysrOwogICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhU
b1J1biA9ICpwaWNrUmVzdWx0OwotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RyYWludCA9
ICZjYW5kaWRhdGVDb25zdHJhaW50OwogICAgICAgICAgICAgICAgICAgICAgICAgZG9QYXJhbGxl
bFdvcmtNb2RlID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdHJhaW50LT5w
cmVwYXJlVG9FeGVjdXRlKGxvY2tlciwgdmlzaXRvcik7CisgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdHJhaW50LnByZXBhcmVUb0V4ZWN1dGUobG9ja2VyLCB2aXNpdG9yKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgfTsKQEAgLTIzMSwzMyArMjI2LDM0IEBAIHZvaWQgTWFya2luZ0NvbnN0cmFp
bnRTb2x2ZXI6OnJ1bkV4ZWN1dGlvblRocmVhZChTbG90VmlzaXRvciYgdmlzaXRvciwgU2NoZWR1
bGVyCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgCisgICAg
ICAgIENvbnN0cmFpbnRQYXJhbGxlbGlzbSBwYXJhbGxlbGlzbSA9IENvbnN0cmFpbnRQYXJhbGxl
bGlzbTo6U2VxdWVudGlhbDsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIE1hcmtpbmdD
b25zdHJhaW50JiBjb25zdHJhaW50ID0gKm1fc2V0Lm1fc2V0W2luZGV4VG9SdW5dOworICAgICAg
ICAgICAgICAgICAgICAKICAgICAgICAgaWYgKGRvUGFyYWxsZWxXb3JrTW9kZSkKLSAgICAgICAg
ICAgIGNvbnN0cmFpbnQtPmRvUGFyYWxsZWxXb3JrKHZpc2l0b3IsICp0YXNrLnRhc2spOwotICAg
ICAgICBlbHNlIHsKLSAgICAgICAgICAgIGlmIChjb25zdHJhaW50LT5wYXJhbGxlbGlzbSgpID09
IENvbnN0cmFpbnRQYXJhbGxlbGlzbTo6UGFyYWxsZWwpIHsKLSAgICAgICAgICAgICAgICB2aXNp
dG9yLm1fY3VycmVudENvbnN0cmFpbnQgPSBjb25zdHJhaW50OwotICAgICAgICAgICAgICAgIHZp
c2l0b3IubV9jdXJyZW50U29sdmVyID0gdGhpczsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IAotICAgICAgICAgICAgY29uc3RyYWludC0+ZXhlY3V0ZSh2aXNpdG9yKTsKLSAgICAgICAgICAg
IAotICAgICAgICAgICAgdmlzaXRvci5tX2N1cnJlbnRDb25zdHJhaW50ID0gbnVsbHB0cjsKLSAg
ICAgICAgICAgIHZpc2l0b3IubV9jdXJyZW50U29sdmVyID0gbnVsbHB0cjsKLSAgICAgICAgfQot
ICAgICAgICAKKyAgICAgICAgICAgIGNvbnN0cmFpbnQuZG9QYXJhbGxlbFdvcmsodmlzaXRvcik7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHBhcmFsbGVsaXNtID0gY29uc3RyYWludC5leGVj
dXRlKHZpc2l0b3IpOworICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgewogICAgICAgICAg
ICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2spOwotICAgICAgICAgICAgCisgICAgICAg
ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChkb1BhcmFsbGVsV29ya01vZGUpIHsK
LSAgICAgICAgICAgICAgICBpZiAoIW1fdG9FeGVjdXRlSW5QYXJhbGxlbC5pc0VtcHR5KCkKLSAg
ICAgICAgICAgICAgICAgICAgJiYgdGFzayA9PSBtX3RvRXhlY3V0ZUluUGFyYWxsZWwuZmlyc3Qo
KSkKLSAgICAgICAgICAgICAgICAgICAgbV90b0V4ZWN1dGVJblBhcmFsbGVsLnRha2VGaXJzdCgp
OwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUKCFtX3Rv
RXhlY3V0ZUluUGFyYWxsZWwuY29udGFpbnModGFzaykpOworICAgICAgICAgICAgICAgIGlmICht
X3RvRXhlY3V0ZUluUGFyYWxsZWxTZXQuZ2V0KGluZGV4VG9SdW4pKSB7CisgICAgICAgICAgICAg
ICAgICAgIG1fZGlkRXhlY3V0ZUluUGFyYWxsZWwuYXBwZW5kKGluZGV4VG9SdW4pOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgbV90b0V4ZWN1
dGVJblBhcmFsbGVsLnRha2VGaXJzdCgKKyAgICAgICAgICAgICAgICAgICAgICAgIFsmXSAodW5z
aWduZWQgdmFsdWUpIHsgcmV0dXJuIHZhbHVlID09IGluZGV4VG9SdW47IH0pOworICAgICAgICAg
ICAgICAgICAgICBtX3RvRXhlY3V0ZUluUGFyYWxsZWxTZXQuY2xlYXIoaW5kZXhUb1J1bik7Cisg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBp
ZiAoY29uc3RyYWludC0+cGFyYWxsZWxpc20oKSA9PSBDb25zdHJhaW50UGFyYWxsZWxpc206OlBh
cmFsbGVsKQorICAgICAgICAgICAgICAgIGlmIChjb25zdHJhaW50LnBhcmFsbGVsaXNtKCkgPT0g
Q29uc3RyYWludFBhcmFsbGVsaXNtOjpQYXJhbGxlbCkKICAgICAgICAgICAgICAgICAgICAgbV9u
dW1UaHJlYWRzVGhhdE1heVByb2R1Y2VXb3JrLS07CiAgICAgICAgICAgICAgICAgbV9leGVjdXRl
ZC5zZXQoaW5kZXhUb1J1bik7CisgICAgICAgICAgICAgICAgaWYgKHBhcmFsbGVsaXNtID09IENv
bnN0cmFpbnRQYXJhbGxlbGlzbTo6UGFyYWxsZWwpIHsKKyAgICAgICAgICAgICAgICAgICAgbV90
b0V4ZWN1dGVJblBhcmFsbGVsLmFwcGVuZChpbmRleFRvUnVuKTsKKyAgICAgICAgICAgICAgICAg
ICAgbV90b0V4ZWN1dGVJblBhcmFsbGVsU2V0LnNldChpbmRleFRvUnVuKTsKKyAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgIG1fY29uZGl0aW9uLm5vdGlmeUFsbCgpOwpAQCAtMjY1LDUgKzI2MSwxNCBAQCB2b2lkIE1h
cmtpbmdDb25zdHJhaW50U29sdmVyOjpydW5FeGVjdXRpb25UaHJlYWQoU2xvdFZpc2l0b3ImIHZp
c2l0b3IsIFNjaGVkdWxlcgogICAgIH0KIH0KIAordm9pZCBNYXJraW5nQ29uc3RyYWludFNvbHZl
cjo6ZGlkRXhlY3V0ZShDb25zdHJhaW50UGFyYWxsZWxpc20gcGFyYWxsZWxpc20sIHVuc2lnbmVk
IGluZGV4KQoreworICAgIG1fZXhlY3V0ZWQuc2V0KGluZGV4KTsKKyAgICBpZiAocGFyYWxsZWxp
c20gPT0gQ29uc3RyYWludFBhcmFsbGVsaXNtOjpQYXJhbGxlbCkgeworICAgICAgICBtX3RvRXhl
Y3V0ZUluUGFyYWxsZWwuYXBwZW5kKGluZGV4KTsKKyAgICAgICAgbV90b0V4ZWN1dGVJblBhcmFs
bGVsU2V0LnNldChpbmRleCk7CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2luZ0NvbnN0cmFpbnRTb2x2
ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtpbmdDb25zdHJhaW50U29sdmVy
LmgKaW5kZXggMDhiMzhkYmJlZTczMDlhNjUzZWZmNDc3MzBhZDBkYWM1ZjBlYmMxYy4uMTZjOWE1
NmVmZTBmYmQ5ZGU5YTIxYzlhZTkzY2U3YzkzNzRmMGU4MCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFya2luZ0NvbnN0cmFpbnRTb2x2ZXIuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9NYXJraW5nQ29uc3RyYWludFNvbHZlci5oCkBAIC02NCwzNiAr
NjQsMTggQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgZXhlY3V0ZShNYXJraW5nQ29uc3RyYWlu
dCYpOwogICAgIAotICAgIC8vIFBhcmFsbGVsIGNvbnN0cmFpbnRzIGNhbiBhZGQgcGFyYWxsZWwg
dGFza3MuCi0gICAgdm9pZCBhZGRQYXJhbGxlbFRhc2soUmVmUHRyPFNoYXJlZFRhc2s8dm9pZChT
bG90VmlzaXRvciYpPj4sIE1hcmtpbmdDb25zdHJhaW50Jik7Ci0gICAgCiBwcml2YXRlOgogICAg
IHZvaWQgcnVuRXhlY3V0aW9uVGhyZWFkKFNsb3RWaXNpdG9yJiwgU2NoZWR1bGVyUHJlZmVyZW5j
ZSwgU2NvcGVkTGFtYmRhPHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+KCk+IHBpY2tOZXh0KTsKICAg
ICAKLSAgICBzdHJ1Y3QgVGFza1dpdGhDb25zdHJhaW50IHsKLSAgICAgICAgVGFza1dpdGhDb25z
dHJhaW50KCkgeyB9Ci0gICAgICAgIAotICAgICAgICBUYXNrV2l0aENvbnN0cmFpbnQoUmVmUHRy
PFNoYXJlZFRhc2s8dm9pZChTbG90VmlzaXRvciYpPj4gdGFzaywgTWFya2luZ0NvbnN0cmFpbnQq
IGNvbnN0cmFpbnQpCi0gICAgICAgICAgICA6IHRhc2soV1RGTW92ZSh0YXNrKSkKLSAgICAgICAg
ICAgICwgY29uc3RyYWludChjb25zdHJhaW50KQotICAgICAgICB7Ci0gICAgICAgIH0KLSAgICAg
ICAgCi0gICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUYXNrV2l0aENvbnN0cmFpbnQmIG90
aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdGFzayA9PSBvdGhlci50
YXNrCi0gICAgICAgICAgICAgICAgJiYgY29uc3RyYWludCA9PSBvdGhlci5jb25zdHJhaW50Owot
ICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBSZWZQdHI8U2hhcmVkVGFzazx2b2lkKFNsb3RW
aXNpdG9yJik+PiB0YXNrOwotICAgICAgICBNYXJraW5nQ29uc3RyYWludCogY29uc3RyYWludCB7
IG51bGxwdHIgfTsKLSAgICB9OwotICAgIAorICAgIHZvaWQgZGlkRXhlY3V0ZShDb25zdHJhaW50
UGFyYWxsZWxpc20sIHVuc2lnbmVkIGluZGV4KTsKKwogICAgIEhlYXAmIG1faGVhcDsKICAgICBT
bG90VmlzaXRvciYgbV9tYWluVmlzaXRvcjsKICAgICBNYXJraW5nQ29uc3RyYWludFNldCYgbV9z
ZXQ7CiAgICAgQml0VmVjdG9yIG1fZXhlY3V0ZWQ7Ci0gICAgRGVxdWU8VGFza1dpdGhDb25zdHJh
aW50LCAzMj4gbV90b0V4ZWN1dGVJblBhcmFsbGVsOworICAgIERlcXVlPHVuc2lnbmVkLCAzMj4g
bV90b0V4ZWN1dGVJblBhcmFsbGVsOworICAgIEJpdFZlY3RvciBtX3RvRXhlY3V0ZUluUGFyYWxs
ZWxTZXQ7CisgICAgVmVjdG9yPHVuc2lnbmVkLCAzMj4gbV9kaWRFeGVjdXRlSW5QYXJhbGxlbDsK
ICAgICBWZWN0b3I8dW5zaWduZWQsIDMyPiBtX3RvRXhlY3V0ZVNlcXVlbnRpYWxseTsKICAgICBM
b2NrIG1fbG9jazsKICAgICBDb25kaXRpb24gbV9jb25kaXRpb247CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TaW1wbGVNYXJraW5nQ29uc3RyYWludC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TaW1wbGVNYXJraW5nQ29uc3RyYWludC5jcHAKaW5kZXgg
NDliZDRhMDE2ZjZkYzk0MTQ1MDM0NWNhZjhkZjc3ZTQyZTMzYzRkNy4uMGQ4MGUzZjg5Mzk0MmY2
YmVhMTY0NWNjNmExZDA1ZTI5ZWIyYTlmYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvU2ltcGxlTWFya2luZ0NvbnN0cmFpbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL1NpbXBsZU1hcmtpbmdDb25zdHJhaW50LmNwcApAQCAtMzEsOSArMzEsOCBA
QCBuYW1lc3BhY2UgSlNDIHsKIFNpbXBsZU1hcmtpbmdDb25zdHJhaW50OjpTaW1wbGVNYXJraW5n
Q29uc3RyYWludCgKICAgICBDU3RyaW5nIGFiYnJldmlhdGVkTmFtZSwgQ1N0cmluZyBuYW1lLAog
ICAgIDo6RnVuY3Rpb248dm9pZChTbG90VmlzaXRvciYpPiBleGVjdXRlRnVuY3Rpb24sCi0gICAg
Q29uc3RyYWludFZvbGF0aWxpdHkgdm9sYXRpbGl0eSwgQ29uc3RyYWludENvbmN1cnJlbmN5IGNv
bmN1cnJlbmN5LAotICAgIENvbnN0cmFpbnRQYXJhbGxlbGlzbSBwYXJhbGxlbGlzbSkKLSAgICA6
IE1hcmtpbmdDb25zdHJhaW50KFdURk1vdmUoYWJicmV2aWF0ZWROYW1lKSwgV1RGTW92ZShuYW1l
KSwgdm9sYXRpbGl0eSwgY29uY3VycmVuY3ksIHBhcmFsbGVsaXNtKQorICAgIENvbnN0cmFpbnRW
b2xhdGlsaXR5IHZvbGF0aWxpdHksIENvbnN0cmFpbnRDb25jdXJyZW5jeSBjb25jdXJyZW5jeSkK
KyAgICA6IE1hcmtpbmdDb25zdHJhaW50KFdURk1vdmUoYWJicmV2aWF0ZWROYW1lKSwgV1RGTW92
ZShuYW1lKSwgdm9sYXRpbGl0eSwgY29uY3VycmVuY3ksIENvbnN0cmFpbnRQYXJhbGxlbGlzbTo6
U2VxdWVudGlhbCkKICAgICAsIG1fZXhlY3V0ZUZ1bmN0aW9uKFdURk1vdmUoZXhlY3V0ZUZ1bmN0
aW9uKSkKIHsKIH0KQEAgLTQyLDkgKzQxLDEwIEBAIFNpbXBsZU1hcmtpbmdDb25zdHJhaW50Ojp+
U2ltcGxlTWFya2luZ0NvbnN0cmFpbnQoKQogewogfQogCi12b2lkIFNpbXBsZU1hcmtpbmdDb25z
dHJhaW50OjpleGVjdXRlSW1wbChTbG90VmlzaXRvciYgdmlzaXRvcikKK0NvbnN0cmFpbnRQYXJh
bGxlbGlzbSBTaW1wbGVNYXJraW5nQ29uc3RyYWludDo6ZXhlY3V0ZUltcGwoU2xvdFZpc2l0b3Im
IHZpc2l0b3IpCiB7CiAgICAgbV9leGVjdXRlRnVuY3Rpb24odmlzaXRvcik7CisgICAgcmV0dXJu
IENvbnN0cmFpbnRQYXJhbGxlbGlzbTo6U2VxdWVudGlhbDsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TaW1wbGVNYXJraW5n
Q29uc3RyYWludC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2ltcGxlTWFya2luZ0Nv
bnN0cmFpbnQuaAppbmRleCBmMDIxODhjYmViZmI4ZjkzMjYwNTM5NjIwM2Q0NWVkZGQ3YTdjNTRj
Li45OWJiNTY5MzI1NDNjNmIzN2U2ODdmMTc3ODBkODVkZTViMjk3NGI0IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TaW1wbGVNYXJraW5nQ29uc3RyYWludC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1NpbXBsZU1hcmtpbmdDb25zdHJhaW50LmgKQEAg
LTMxLDMwICszMSwyMCBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIC8vIFRoaXMgYWxsb3dzIGZvciBh
biBpbmZvcm1hbCB3YXkgdG8gZGVmaW5lIGNvbnN0cmFpbnRzLiBKdXN0IHBhc3MgYSBsYW1iZGEg
dG8gdGhlIGNvbnN0cnVjdG9yLiBUaGUgb25seQotLy8gZG93bnNpZGUgaXMgdGhhdCB0aGlzIG1h
a2VzIGl0IGhhcmQgZm9yIGNvbnN0cmFpbnRzIHRvIG92ZXJyaWRlIGFueSBmdW5jdGlvbnMgaW4g
TWFya2luZ0NvbnN0cmFpbnQKLS8vIG90aGVyIHRoYW4gZXhlY3V0ZUltcGwuIEluIHRob3NlIGNh
c2VzLCBqdXN0IHN1YmNsYXNzIE1hcmtpbmdDb25zdHJhaW50LgorLy8gZG93bnNpZGUgaXMgdGhh
dCB0aGlzIG1ha2VzIGl0IGhhcmQgZm9yIGNvbnN0cmFpbnRzIHRvIGJlIHN0YXRlZnVsLCB3aGlj
aCBpcyBuZWNlc3NhcnkgZm9yIHRoZW0gdG8gYmUKKy8vIHBhcmFsbGVsLiBJbiB0aG9zZSBjYXNl
cywgaXQncyBlYXNpZXIgdG8ganVzdCBzdWJjbGFzcyBNYXJraW5nQ29uc3RyYWludC4KIGNsYXNz
IFNpbXBsZU1hcmtpbmdDb25zdHJhaW50IDogcHVibGljIE1hcmtpbmdDb25zdHJhaW50IHsKIHB1
YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFURSBTaW1wbGVNYXJraW5nQ29uc3RyYWludCgKICAg
ICAgICAgQ1N0cmluZyBhYmJyZXZpYXRlZE5hbWUsIENTdHJpbmcgbmFtZSwKICAgICAgICAgOjpG
dW5jdGlvbjx2b2lkKFNsb3RWaXNpdG9yJik+LAogICAgICAgICBDb25zdHJhaW50Vm9sYXRpbGl0
eSwKLSAgICAgICAgQ29uc3RyYWludENvbmN1cnJlbmN5ID0gQ29uc3RyYWludENvbmN1cnJlbmN5
OjpDb25jdXJyZW50LAotICAgICAgICBDb25zdHJhaW50UGFyYWxsZWxpc20gPSBDb25zdHJhaW50
UGFyYWxsZWxpc206OlNlcXVlbnRpYWwpOwotICAgIAotICAgIFNpbXBsZU1hcmtpbmdDb25zdHJh
aW50KAotICAgICAgICBDU3RyaW5nIGFiYnJldmlhdGVkTmFtZSwgQ1N0cmluZyBuYW1lLAotICAg
ICAgICA6OkZ1bmN0aW9uPHZvaWQoU2xvdFZpc2l0b3ImKT4gZnVuYywKLSAgICAgICAgQ29uc3Ry
YWludFZvbGF0aWxpdHkgdm9sYXRpbGl0eSwKLSAgICAgICAgQ29uc3RyYWludFBhcmFsbGVsaXNt
IHBhcmFsbGVsaXNtKQotICAgICAgICA6IFNpbXBsZU1hcmtpbmdDb25zdHJhaW50KGFiYnJldmlh
dGVkTmFtZSwgbmFtZSwgV1RGTW92ZShmdW5jKSwgdm9sYXRpbGl0eSwgQ29uc3RyYWludENvbmN1
cnJlbmN5OjpDb25jdXJyZW50LCBwYXJhbGxlbGlzbSkKLSAgICB7Ci0gICAgfQorICAgICAgICBD
b25zdHJhaW50Q29uY3VycmVuY3kgPSBDb25zdHJhaW50Q29uY3VycmVuY3k6OkNvbmN1cnJlbnQp
OwogICAgIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIH5TaW1wbGVNYXJraW5nQ29uc3RyYWludCgp
OwogICAgIAogcHJpdmF0ZToKLSAgICB2b2lkIGV4ZWN1dGVJbXBsKFNsb3RWaXNpdG9yJikgb3Zl
cnJpZGU7CisgICAgQ29uc3RyYWludFBhcmFsbGVsaXNtIGV4ZWN1dGVJbXBsKFNsb3RWaXNpdG9y
Jikgb3ZlcnJpZGU7CiAKICAgICA6OkZ1bmN0aW9uPHZvaWQoU2xvdFZpc2l0b3ImKT4gbV9leGVj
dXRlRnVuY3Rpb247CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
U2xvdFZpc2l0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3Iu
Y3BwCmluZGV4IDEzYzQ4ZmNiNTY1Njk0OGFlODAyMThmMmZkZTJiMzgwOTk4NTk4OGQuLjQwZmY5
NWM0OGYzYzFkMGJiMGM4MTM5NDg5MzZiYTNhMmQ0MzE0NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9TbG90VmlzaXRvci5jcHAKQEAgLTc4NiwxMyArNzg2LDQgQEAgTWFya1N0YWNr
QXJyYXkmIFNsb3RWaXNpdG9yOjpjb3JyZXNwb25kaW5nR2xvYmFsU3RhY2soTWFya1N0YWNrQXJy
YXkmIHN0YWNrKQogICAgIHJldHVybiAqbV9oZWFwLm1fc2hhcmVkTXV0YXRvck1hcmtTdGFjazsK
IH0KIAotdm9pZCBTbG90VmlzaXRvcjo6YWRkUGFyYWxsZWxDb25zdHJhaW50VGFzayhSZWZQdHI8
U2hhcmVkVGFzazx2b2lkKFNsb3RWaXNpdG9yJik+PiB0YXNrKQotewotICAgIFJFTEVBU0VfQVNT
RVJUKG1fY3VycmVudFNvbHZlcik7Ci0gICAgUkVMRUFTRV9BU1NFUlQobV9jdXJyZW50Q29uc3Ry
YWludCk7Ci0gICAgUkVMRUFTRV9BU1NFUlQodGFzayk7Ci0gICAgCi0gICAgbV9jdXJyZW50U29s
dmVyLT5hZGRQYXJhbGxlbFRhc2sodGFzaywgKm1fY3VycmVudENvbnN0cmFpbnQpOwotfQotCiB9
IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L1Nsb3RWaXNpdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5o
CmluZGV4IGE1NTFjMWUwYzQzYzE3ZDUxODM2YTdlNTg3M2VmYWY1Zjg2YzczZjQuLmQ2ZjU2NjVl
MDZjOTAxMDI5NmUwMzlkYzRiMzkwOGNjMDU4YWI5NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvU2xvdFZpc2l0b3IuaApAQCAtNDAsNyArNDAsNiBAQCBjbGFzcyBIZWFwOwogY2xhc3Mg
SGVhcENlbGw7CiBjbGFzcyBIZWFwU25hcHNob3RCdWlsZGVyOwogY2xhc3MgTWFya2VkQmxvY2s7
Ci1jbGFzcyBNYXJraW5nQ29uc3RyYWludFNvbHZlcjsKIGNsYXNzIFVuY29uZGl0aW9uYWxGaW5h
bGl6ZXI7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBXZWFrOwogY2xhc3MgV2Vha1JlZmVy
ZW5jZUhhcnZlc3RlcjsKQEAgLTE3MSwxMiArMTcwLDkgQEAgcHVibGljOgogICAgIHZvaWQgZG9u
YXRlQWxsKCk7CiAgICAgCiAgICAgY29uc3QgY2hhciogY29kZU5hbWUoKSBjb25zdCB7IHJldHVy
biBtX2NvZGVOYW1lLmRhdGEoKTsgfQotICAgIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQg
YWRkUGFyYWxsZWxDb25zdHJhaW50VGFzayhSZWZQdHI8U2hhcmVkVGFzazx2b2lkKFNsb3RWaXNp
dG9yJik+Pik7CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFBhcmFsbGVsTW9kZUVuYWJs
ZXI7Ci0gICAgZnJpZW5kIGNsYXNzIE1hcmtpbmdDb25zdHJhaW50U29sdmVyOwogICAgIAogICAg
IHZvaWQgYXBwZW5kSlNDZWxsT3JBdXhpbGlhcnkoSGVhcENlbGwqKTsKIApAQCAtMjMzLDkgKzIy
OSw2IEBAIHByaXZhdGU6CiAgICAgCiAgICAgQ1N0cmluZyBtX2NvZGVOYW1lOwogICAgIAotICAg
IE1hcmtpbmdDb25zdHJhaW50KiBtX2N1cnJlbnRDb25zdHJhaW50IHsgbnVsbHB0ciB9OwotICAg
IE1hcmtpbmdDb25zdHJhaW50U29sdmVyKiBtX2N1cnJlbnRTb2x2ZXIgeyBudWxscHRyIH07Ci0g
ICAgCiBwdWJsaWM6CiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgIGJvb2wgbV9pc0NoZWNraW5n
Rm9yRGVmYXVsdE1hcmtWaW9sYXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9TdWJzcGFjZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFj
ZS5jcHAKaW5kZXggMmQ0YzAyMzM0YTUwZWY1ZGU3YmUyNzFmZGM3NWEyOTk1YzhjNDVlNS4uYzRi
NDU4ODAzMWU0NmYwMDRiMTczMjMzNGUzOWU2OTg0YTdkYTg1NiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL1N1YnNwYWNlLmNwcApAQCAtMTI2LDE0ICsxMjYsNiBAQCBSZWZQdHI8U2hhcmVk
VGFzazxNYXJrZWRCbG9jazo6SGFuZGxlKigpPj4gU3Vic3BhY2U6OnBhcmFsbGVsTm90RW1wdHlN
YXJrZWRCbG9jawogICAgICAgICB9KTsKIH0KIAotdm9pZCBTdWJzcGFjZTo6c3dlZXAoKQotewot
ICAgIGZvckVhY2hBbGxvY2F0b3IoCi0gICAgICAgIFsmXSAoTWFya2VkQWxsb2NhdG9yJiBhbGxv
Y2F0b3IpIHsKLSAgICAgICAgICAgIGFsbG9jYXRvci5zd2VlcCgpOwotICAgICAgICB9KTsKLX0K
LQogdm9pZCBTdWJzcGFjZTo6ZGlkUmVzaXplQml0cyhzaXplX3QpCiB7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFjZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvU3Vic3BhY2UuaAppbmRleCBlOWU0NjNlYWUxYTU1NDRmN2FiM2MyNDY5MmYx
NjRjM2M4YmUwOTQwLi5hOGUwYTIxMzAzNjU1MzE0ZTAyNzdiZDE1ZDc2M2E3NzJkYjkxYjMwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFjZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlLmgKQEAgLTkxLDggKzkxLDYgQEAgcHVi
bGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CiAgICAgdm9pZCBmb3JFYWNoTGl2ZUNl
bGwoY29uc3QgRnVuYyYpOwogICAgIAotICAgIHZvaWQgc3dlZXAoKTsKLSAgICAKICAgICBTdWJz
cGFjZSogbmV4dFN1YnNwYWNlSW5BbGlnbmVkTWVtb3J5QWxsb2NhdG9yKCkgY29uc3QgeyByZXR1
cm4gbV9uZXh0U3Vic3BhY2VJbkFsaWduZWRNZW1vcnlBbGxvY2F0b3I7IH0KICAgICB2b2lkIHNl
dE5leHRTdWJzcGFjZUluQWxpZ25lZE1lbW9yeUFsbG9jYXRvcihTdWJzcGFjZSogc3Vic3BhY2Up
IHsgbV9uZXh0U3Vic3BhY2VJbkFsaWduZWRNZW1vcnlBbGxvY2F0b3IgPSBzdWJzcGFjZTsgfQog
ICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2VJbmxp
bmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFjZUlubGluZXMuaAppbmRl
eCBiODBhNmUzZmE0Y2YzZTM2YmQ2ZmNkM2MwZDYxNWVhOTc1NDQ3NzQ5Li4xYWE4YWNhZDc3ZmQ2
ZTA2NjZmMTU2NGJjYzIxYTFkMzVkMDQwNTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9TdWJzcGFjZUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9TdWJzcGFjZUlubGluZXMuaApAQCAtMTM2LDcgKzEzNiw3IEBAIHZvaWQgU3Vic3BhY2U6
OmZvckVhY2hMaXZlQ2VsbChjb25zdCBGdW5jJiBmdW5jKQogICAgIGZvckVhY2hNYXJrZWRCbG9j
aygKICAgICAgICAgWyZdIChNYXJrZWRCbG9jazo6SGFuZGxlKiBoYW5kbGUpIHsKICAgICAgICAg
ICAgIGhhbmRsZS0+Zm9yRWFjaExpdmVDZWxsKAotICAgICAgICAgICAgICAgIFsmXSAoc2l6ZV90
LCBIZWFwQ2VsbCogY2VsbCwgSGVhcENlbGw6OktpbmQga2luZCkgLT4gSXRlcmF0aW9uU3RhdHVz
IHsKKyAgICAgICAgICAgICAgICBbJl0gKEhlYXBDZWxsKiBjZWxsLCBIZWFwQ2VsbDo6S2luZCBr
aW5kKSAtPiBJdGVyYXRpb25TdGF0dXMgeyAKICAgICAgICAgICAgICAgICAgICAgZnVuYyhjZWxs
LCBraW5kKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29u
dGludWU7CiAgICAgICAgICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggNDFkMThhNWM2ZTYwYzA5NTk0
MjBjMjEyZmUwMjMxZWViNTg2Y2JlZC4uNTIwNDJmNDQxOTBhZGMxOTg3Yzg4OTg3ZTA0YWQ4ZjY3
MGI3YTRkNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmFzbQpAQCAtOTQ3LDcgKzk0Nyw2IEBAIG1hY3JvIGZ1bmN0aW9uRm9yQ2Fs
bENvZGVCbG9ja0dldHRlcih0YXJnZXRSZWdpc3RlcikKICAgICBlbmQKICAgICBsb2FkcCBKU0Z1
bmN0aW9uOjptX2V4ZWN1dGFibGVbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3RlcgogICAg
IGxvYWRwIEZ1bmN0aW9uRXhlY3V0YWJsZTo6bV9jb2RlQmxvY2tGb3JDYWxsW3RhcmdldFJlZ2lz
dGVyXSwgdGFyZ2V0UmVnaXN0ZXIKLSAgICBsb2FkcCBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdl
OjptX2NvZGVCbG9ja1t0YXJnZXRSZWdpc3Rlcl0sIHRhcmdldFJlZ2lzdGVyCiBlbmQKIAogbWFj
cm8gZnVuY3Rpb25Gb3JDb25zdHJ1Y3RDb2RlQmxvY2tHZXR0ZXIodGFyZ2V0UmVnaXN0ZXIpCkBA
IC05NTgsNyArOTU3LDYgQEAgbWFjcm8gZnVuY3Rpb25Gb3JDb25zdHJ1Y3RDb2RlQmxvY2tHZXR0
ZXIodGFyZ2V0UmVnaXN0ZXIpCiAgICAgZW5kCiAgICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9leGVj
dXRhYmxlW3RhcmdldFJlZ2lzdGVyXSwgdGFyZ2V0UmVnaXN0ZXIKICAgICBsb2FkcCBGdW5jdGlv
bkV4ZWN1dGFibGU6Om1fY29kZUJsb2NrRm9yQ29uc3RydWN0W3RhcmdldFJlZ2lzdGVyXSwgdGFy
Z2V0UmVnaXN0ZXIKLSAgICBsb2FkcCBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjptX2NvZGVC
bG9ja1t0YXJnZXRSZWdpc3Rlcl0sIHRhcmdldFJlZ2lzdGVyCiBlbmQKIAogbWFjcm8gbm90RnVu
Y3Rpb25Db2RlQmxvY2tHZXR0ZXIodGFyZ2V0UmVnaXN0ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FdmFsRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FdmFsRXhlY3V0YWJsZS5jcHAKaW5kZXggMzM4NmQwZWU2NjEwMmU4
OGMzZTkxODFmNWUxMmNlMDcxYTVmN2E0Ni4uMzQxYWIxZDNiYTE1ZTk0MDU5ZWY3MDgzYmEyMjQ0
ODUwN2FiNDliYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXZh
bEV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V2YWxF
eGVjdXRhYmxlLmNwcApAQCAtNTAsNyArNTAsOCBAQCB2b2lkIEV2YWxFeGVjdXRhYmxlOjp2aXNp
dENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIFNjcmlwdEV4ZWN1
dGFibGU6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CiAgICAgdmlzaXRvci5h
cHBlbmQodGhpc09iamVjdC0+bV91bmxpbmtlZEV2YWxDb2RlQmxvY2spOwotICAgIHZpc2l0b3Iu
YXBwZW5kKHRoaXNPYmplY3QtPm1fZXZhbENvZGVCbG9jayk7CisgICAgaWYgKEV2YWxDb2RlQmxv
Y2sqIGV2YWxDb2RlQmxvY2sgPSB0aGlzT2JqZWN0LT5tX2V2YWxDb2RlQmxvY2suZ2V0KCkpCisg
ICAgICAgIGV2YWxDb2RlQmxvY2stPnZpc2l0V2Vha2x5KHZpc2l0b3IpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V2
YWxFeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FdmFsRXhlY3V0
YWJsZS5oCmluZGV4IGVhMmZkZTAyNzAxOGI1NWE5YTY3M2Y4YzllZTkyMTEwZGUyM2U5NGQuLjc2
MDRiYmQyNDYyMzA1MzhmYjcwYWRkZWRmZmY4YjZlMTgwZmQ3MjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V2YWxFeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXZhbEV4ZWN1dGFibGUuaApAQCAtMjUsNyArMjUsNiBAQAog
CiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaCIK
ICNpbmNsdWRlICJTY3JpcHRFeGVjdXRhYmxlLmgiCiAjaW5jbHVkZSAiVW5saW5rZWRFdmFsQ29k
ZUJsb2NrLmgiCiAKQEAgLTQxLDcgKzQwLDcgQEAgcHVibGljOgogICAgIAogICAgIEV2YWxDb2Rl
QmxvY2sqIGNvZGVCbG9jaygpCiAgICAgewotICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PEV2
YWxDb2RlQmxvY2sqPihFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjp1bndyYXAobV9ldmFsQ29k
ZUJsb2NrLmdldCgpKSk7CisgICAgICAgIHJldHVybiBtX2V2YWxDb2RlQmxvY2suZ2V0KCk7CiAg
ICAgfQogCiAgICAgUmVmPEpJVENvZGU+IGdlbmVyYXRlZEpJVENvZGUoKQpAQCAtNzEsNyArNzAs
NyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCos
IFNsb3RWaXNpdG9yJik7CiAKLSAgICBXcml0ZUJhcnJpZXI8RXhlY3V0YWJsZVRvQ29kZUJsb2Nr
RWRnZT4gbV9ldmFsQ29kZUJsb2NrOworICAgIFdyaXRlQmFycmllcjxFdmFsQ29kZUJsb2NrPiBt
X2V2YWxDb2RlQmxvY2s7CiAgICAgV3JpdGVCYXJyaWVyPFVubGlua2VkRXZhbENvZGVCbG9jaz4g
bV91bmxpbmtlZEV2YWxDb2RlQmxvY2s7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAppbmRleCA3MTk2NDI2Njk1Y2Jk
MTI0NzZjN2ExMDgxNjhkZjlhODkwMGQwNzU2Li5mMTU4NjcyYTNjMDYyZThhODBjY2NiNTdhNTRh
ZTRjMDBhOTg5MTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9G
dW5jdGlvbkV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Z1bmN0aW9uRXhlY3V0YWJsZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDA5LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA5LCAyMDEwLCAyMDEzLCAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02OCwxNiArNjgs
MTYgQEAgdm9pZCBGdW5jdGlvbkV4ZWN1dGFibGU6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogCiBG
dW5jdGlvbkNvZGVCbG9jayogRnVuY3Rpb25FeGVjdXRhYmxlOjpiYXNlbGluZUNvZGVCbG9ja0Zv
cihDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCiB7Ci0gICAgRXhlY3V0YWJsZVRvQ29kZUJs
b2NrRWRnZSogZWRnZTsKKyAgICBGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0OwogICAgIGlmIChr
aW5kID09IENvZGVGb3JDYWxsKQotICAgICAgICBlZGdlID0gbV9jb2RlQmxvY2tGb3JDYWxsLmdl
dCgpOworICAgICAgICByZXN1bHQgPSBtX2NvZGVCbG9ja0ZvckNhbGwuZ2V0KCk7CiAgICAgZWxz
ZSB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCk7Ci0g
ICAgICAgIGVkZ2UgPSBtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdC5nZXQoKTsKKyAgICAgICAgcmVz
dWx0ID0gbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QuZ2V0KCk7CiAgICAgfQotICAgIGlmICghZWRn
ZSkKKyAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIHN0YXRp
Y19jYXN0PEZ1bmN0aW9uQ29kZUJsb2NrKj4oZWRnZS0+Y29kZUJsb2NrKCktPmJhc2VsaW5lQWx0
ZXJuYXRpdmUoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEZ1bmN0aW9uQ29kZUJsb2NrKj4o
cmVzdWx0LT5iYXNlbGluZUFsdGVybmF0aXZlKCkpOwogfQogCiB2b2lkIEZ1bmN0aW9uRXhlY3V0
YWJsZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQpA
QCAtODUsOCArODUsMTAgQEAgdm9pZCBGdW5jdGlvbkV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW4o
SlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICBGdW5jdGlvbkV4ZWN1dGFi
bGUqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oY2VsbCk7CiAgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIFNjcmlw
dEV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7Ci0gICAgdmlz
aXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9jb2RlQmxvY2tGb3JDYWxsKTsKLSAgICB2aXNpdG9y
LmFwcGVuZCh0aGlzT2JqZWN0LT5tX2NvZGVCbG9ja0ZvckNvbnN0cnVjdCk7CisgICAgaWYgKEZ1
bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2tGb3JDYWxsID0gdGhpc09iamVjdC0+bV9jb2RlQmxv
Y2tGb3JDYWxsLmdldCgpKQorICAgICAgICBjb2RlQmxvY2tGb3JDYWxsLT52aXNpdFdlYWtseSh2
aXNpdG9yKTsKKyAgICBpZiAoRnVuY3Rpb25Db2RlQmxvY2sqIGNvZGVCbG9ja0ZvckNvbnN0cnVj
dCA9IHRoaXNPYmplY3QtPm1fY29kZUJsb2NrRm9yQ29uc3RydWN0LmdldCgpKQorICAgICAgICBj
b2RlQmxvY2tGb3JDb25zdHJ1Y3QtPnZpc2l0V2Vha2x5KHZpc2l0b3IpOwogICAgIHZpc2l0b3Iu
YXBwZW5kKHRoaXNPYmplY3QtPm1fdW5saW5rZWRFeGVjdXRhYmxlKTsKICAgICB2aXNpdG9yLmFw
cGVuZCh0aGlzT2JqZWN0LT5tX3NpbmdsZXRvbkZ1bmN0aW9uKTsKICAgICB2aXNpdG9yLmFwcGVu
ZCh0aGlzT2JqZWN0LT5tX2NhY2hlZFBvbHlQcm90b1N0cnVjdHVyZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5oCmluZGV4IDY0NmZh
YzBiODczMjg5M2FiNzUzMDEyMGI1YjI4MDM4ZjY4MzZiOGMuLjc3ODJjNDI2MmZjYjQwZjMyZjUx
MGIzOTViODQ2YTU2Mjc2MzE5NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAwOS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwOS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsNyArMjUsNiBAQAogCiAjcHJhZ21h
IG9uY2UKIAotI2luY2x1ZGUgIkV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaCIKICNpbmNsdWRl
ICJTY3JpcHRFeGVjdXRhYmxlLmgiCiAjaW5jbHVkZSAiU291cmNlQ29kZS5oIgogI2luY2x1ZGUg
PHd0Zi9Cb3guaD4KQEAgLTY5LDEyICs2OCw5IEBAIHB1YmxpYzoKICAgICAvLyBmb3IgZXhhbXBs
ZSwgYXJndW1lbnRzUmVnaXN0ZXIoKS4KICAgICBGdW5jdGlvbkNvZGVCbG9jayogZWl0aGVyQ29k
ZUJsb2NrKCkKICAgICB7Ci0gICAgICAgIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UqIGVkZ2U7
CiAgICAgICAgIGlmIChtX2NvZGVCbG9ja0ZvckNhbGwpCi0gICAgICAgICAgICBlZGdlID0gbV9j
b2RlQmxvY2tGb3JDYWxsLmdldCgpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBlZGdlID0g
bV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QuZ2V0KCk7Ci0gICAgICAgIHJldHVybiBiaXR3aXNlX2Nh
c3Q8RnVuY3Rpb25Db2RlQmxvY2sqPihFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjp1bndyYXAo
ZWRnZSkpOworICAgICAgICAgICAgcmV0dXJuIG1fY29kZUJsb2NrRm9yQ2FsbC5nZXQoKTsKKyAg
ICAgICAgcmV0dXJuIG1fY29kZUJsb2NrRm9yQ29uc3RydWN0LmdldCgpOwogICAgIH0KICAgICAg
ICAgCiAgICAgYm9vbCBpc0dlbmVyYXRlZEZvckNhbGwoKSBjb25zdApAQCAtODQsMTcgKzgwLDE3
IEBAIHB1YmxpYzoKIAogICAgIEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2tGb3JDYWxsKCkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8RnVuY3Rpb25Db2RlQmxvY2sqPihF
eGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjp1bndyYXAobV9jb2RlQmxvY2tGb3JDYWxsLmdldCgp
KSk7CisgICAgICAgIHJldHVybiBtX2NvZGVCbG9ja0ZvckNhbGwuZ2V0KCk7CiAgICAgfQogCiAg
ICAgYm9vbCBpc0dlbmVyYXRlZEZvckNvbnN0cnVjdCgpIGNvbnN0CiAgICAgewotICAgICAgICBy
ZXR1cm4gISFtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdDsKKyAgICAgICAgcmV0dXJuIG1fY29kZUJs
b2NrRm9yQ29uc3RydWN0LmdldCgpOwogICAgIH0KIAogICAgIEZ1bmN0aW9uQ29kZUJsb2NrKiBj
b2RlQmxvY2tGb3JDb25zdHJ1Y3QoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2Fz
dDxGdW5jdGlvbkNvZGVCbG9jayo+KEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6OnVud3JhcCht
X2NvZGVCbG9ja0ZvckNvbnN0cnVjdC5nZXQoKSkpOworICAgICAgICByZXR1cm4gbV9jb2RlQmxv
Y2tGb3JDb25zdHJ1Y3QuZ2V0KCk7CiAgICAgfQogICAgICAgICAKICAgICBib29sIGlzR2VuZXJh
dGVkRm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKQEAgLTIwOCw4ICsyMDQsOCBAQCBw
cml2YXRlOgogICAgIAogICAgIHVuc2lnbmVkIG1fcGFyYW1ldGVyc1N0YXJ0T2Zmc2V0OwogICAg
IFdyaXRlQmFycmllcjxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4gbV91bmxpbmtlZEV4ZWN1
dGFibGU7Ci0gICAgV3JpdGVCYXJyaWVyPEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U+IG1fY29k
ZUJsb2NrRm9yQ2FsbDsKLSAgICBXcml0ZUJhcnJpZXI8RXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRn
ZT4gbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3Q7CisgICAgV3JpdGVCYXJyaWVyPEZ1bmN0aW9uQ29k
ZUJsb2NrPiBtX2NvZGVCbG9ja0ZvckNhbGw7CisgICAgV3JpdGVCYXJyaWVyPEZ1bmN0aW9uQ29k
ZUJsb2NrPiBtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdDsKICAgICBSZWZQdHI8VHlwZVNldD4gbV9y
ZXR1cm5TdGF0ZW1lbnRUeXBlU2V0OwogICAgIFdyaXRlQmFycmllcjxJbmZlcnJlZFZhbHVlPiBt
X3NpbmdsZXRvbkZ1bmN0aW9uOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fY2FjaGVk
UG9seVByb3RvU3RydWN0dXJlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaApp
bmRleCAwYWRmNDkyMzhhZDU5NWI5YTczYWU5ZTlhYjhjNDRhZGIzZDFlNjUyLi4xZWQ4NDcwOWJk
YzYxZTVjYjllZWMzN2ZhOTg0MWFjOWYyNmE0OTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1R5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1R5cGUuaApAQCAtNDMsOCArNDMsNiBAQCBlbnVtIEpTVHlwZSA6IHVpbnQ4X3Qgewog
ICAgIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9ja1R5cGUsCiAgICAgVW5saW5rZWRFdmFs
Q29kZUJsb2NrVHlwZSwKICAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrVHlwZSwKLSAgICAg
ICAgCi0gICAgQ29kZUJsb2NrVHlwZSwKIAogICAgIEpTRml4ZWRBcnJheVR5cGUsCiAgICAgSlNT
b3VyY2VDb2RlVHlwZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L01vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL01vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmNwcAppbmRleCBlYWVlZjhhZDcxY2M3MDhlMDZl
YWUxYWU4Yzg0OTBjOTI4ZGM3MWY1Li5kNGU4MzA2MTIyYTM2MWU1N2VmZjFjMzQwNThlOGE5OTJl
N2ViZjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVQ
cm9ncmFtRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuY3BwCkBAIC05Myw3ICs5Myw4IEBAIHZvaWQgTW9kdWxl
UHJvZ3JhbUV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRv
ciYgdmlzaXRvcikKICAgICBTY3JpcHRFeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmpl
Y3QsIHZpc2l0b3IpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fdW5saW5rZWRN
b2R1bGVQcm9ncmFtQ29kZUJsb2NrKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5t
X21vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUpOwotICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNP
YmplY3QtPm1fbW9kdWxlUHJvZ3JhbUNvZGVCbG9jayk7CisgICAgaWYgKE1vZHVsZVByb2dyYW1D
b2RlQmxvY2sqIG1vZHVsZVByb2dyYW1Db2RlQmxvY2sgPSB0aGlzT2JqZWN0LT5tX21vZHVsZVBy
b2dyYW1Db2RlQmxvY2suZ2V0KCkpCisgICAgICAgIG1vZHVsZVByb2dyYW1Db2RlQmxvY2stPnZp
c2l0V2Vha2x5KHZpc2l0b3IpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5o
CmluZGV4IGExZmU4NjQ0ZjBmNzhjN2U5ZTdlMjM0ZmY4OGYzZTZjMDIwNmQ1NzEuLjQwYjhkOTZh
YmNjOThkN2QxYTk1ODQ4NGY3YzlkZTY2M2Y5ZjI2ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuaApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTAsIDIwMTMtMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTI1LDcgKzI1LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJFeGVj
dXRhYmxlVG9Db2RlQmxvY2tFZGdlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0YWJsZS5oIgog
CiBuYW1lc3BhY2UgSlNDIHsKQEAgLTQ4LDcgKzQ3LDcgQEAgcHVibGljOgogCiAgICAgTW9kdWxl
UHJvZ3JhbUNvZGVCbG9jayogY29kZUJsb2NrKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBiaXR3
aXNlX2Nhc3Q8TW9kdWxlUHJvZ3JhbUNvZGVCbG9jayo+KEV4ZWN1dGFibGVUb0NvZGVCbG9ja0Vk
Z2U6OnVud3JhcChtX21vZHVsZVByb2dyYW1Db2RlQmxvY2suZ2V0KCkpKTsKKyAgICAgICAgcmV0
dXJuIG1fbW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5nZXQoKTsKICAgICB9CiAKICAgICBSZWY8SklU
Q29kZT4gZ2VuZXJhdGVkSklUQ29kZSgpCkBAIC03OSw3ICs3OCw3IEBAIHByaXZhdGU6CiAKICAg
ICBXcml0ZUJhcnJpZXI8VW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrPiBtX3VubGlua2Vk
TW9kdWxlUHJvZ3JhbUNvZGVCbG9jazsKICAgICBXcml0ZUJhcnJpZXI8U3ltYm9sVGFibGU+IG1f
bW9kdWxlRW52aXJvbm1lbnRTeW1ib2xUYWJsZTsKLSAgICBXcml0ZUJhcnJpZXI8RXhlY3V0YWJs
ZVRvQ29kZUJsb2NrRWRnZT4gbV9tb2R1bGVQcm9ncmFtQ29kZUJsb2NrOworICAgIFdyaXRlQmFy
cmllcjxNb2R1bGVQcm9ncmFtQ29kZUJsb2NrPiBtX21vZHVsZVByb2dyYW1Db2RlQmxvY2s7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmNwcAppbmRleCA5YzRhODAzNTE3YmUxMWQxYzE3ODU1
MjkwYjBkNTJlMmIxYjZjNGEwLi4wZTQwMzRjM2M5NGFiYWVlYWE0MDZiZjVhOGZmYWU0YTMwMzIw
ZmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9ncmFtRXhl
Y3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4
ZWN1dGFibGUuY3BwCkBAIC0yMDksNyArMjA5LDggQEAgdm9pZCBQcm9ncmFtRXhlY3V0YWJsZTo6
dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBTY3JpcHRF
eGVjdXRhYmxlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwogICAgIHZpc2l0
b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fdW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKTsKLSAgICB2
aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3Byb2dyYW1Db2RlQmxvY2spOworICAgIGlmIChQ
cm9ncmFtQ29kZUJsb2NrKiBwcm9ncmFtQ29kZUJsb2NrID0gdGhpc09iamVjdC0+bV9wcm9ncmFt
Q29kZUJsb2NrLmdldCgpKQorICAgICAgICBwcm9ncmFtQ29kZUJsb2NrLT52aXNpdFdlYWtseSh2
aXNpdG9yKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuaAppbmRleCA5ODM3Yzg4NGM4OWFhZDcy
MDExYmFlNjk1ZTk2MjhlNzliMTA0ZTk4Li4yNDBmNzYzMThlYmEyMmFiYzNjYzlmZDdjYzQwOWQ4
OTEzODAxYmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9n
cmFtRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dy
YW1FeGVjdXRhYmxlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5
LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDA5LCAyMDEwLCAyMDEzLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNSw3ICsyNSw2IEBACiAKICNwcmFnbWEg
b25jZQogCi0jaW5jbHVkZSAiRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5oIgogI2luY2x1ZGUg
IlNjcmlwdEV4ZWN1dGFibGUuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC01Niw3ICs1NSw3IEBA
IHB1YmxpYzoKIAogICAgIFByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9jaygpCiAgICAgewotICAg
ICAgICByZXR1cm4gYml0d2lzZV9jYXN0PFByb2dyYW1Db2RlQmxvY2sqPihFeGVjdXRhYmxlVG9D
b2RlQmxvY2tFZGdlOjp1bndyYXAobV9wcm9ncmFtQ29kZUJsb2NrLmdldCgpKSk7CisgICAgICAg
IHJldHVybiBtX3Byb2dyYW1Db2RlQmxvY2suZ2V0KCk7CiAgICAgfQogCiAgICAgSlNPYmplY3Qq
IGNoZWNrU3ludGF4KEV4ZWNTdGF0ZSopOwpAQCAtODQsNyArODMsNyBAQCBwcml2YXRlOgogICAg
IHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAogICAg
IFdyaXRlQmFycmllcjxVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2s+IG1fdW5saW5rZWRQcm9ncmFt
Q29kZUJsb2NrOwotICAgIFdyaXRlQmFycmllcjxFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlPiBt
X3Byb2dyYW1Db2RlQmxvY2s7CisgICAgV3JpdGVCYXJyaWVyPFByb2dyYW1Db2RlQmxvY2s+IG1f
cHJvZ3JhbUNvZGVCbG9jazsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcAppbmRleCBjMzQw
MjFhMzY5ZTQ4ZWU1ZTBiNjkxOGRhZWZjZGFhZDY0YmMwNGM3Li5iYjJhYTcwNTY4ZmYwNTliOTEx
NmRiY2Y4NmE5YmU2ODE3NTI4OWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcApAQCAtODksOCArODksOCBAQCB2b2lkIFNjcmlw
dEV4ZWN1dGFibGU6Omluc3RhbGxDb2RlKFZNJiB2bSwgQ29kZUJsb2NrKiBnZW5lcmljQ29kZUJs
b2NrLCBDb2RlVHlwZQogICAgICAgICAKICAgICAgICAgQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNh
bGwpOwogICAgICAgICAKLSAgICAgICAgb2xkQ29kZUJsb2NrID0gRXhlY3V0YWJsZVRvQ29kZUJs
b2NrRWRnZTo6ZGVhY3RpdmF0ZUFuZFVud3JhcChleGVjdXRhYmxlLT5tX3Byb2dyYW1Db2RlQmxv
Y2suZ2V0KCkpOwotICAgICAgICBleGVjdXRhYmxlLT5tX3Byb2dyYW1Db2RlQmxvY2suc2V0TWF5
QmVOdWxsKHZtLCB0aGlzLCBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjp3cmFwQW5kQWN0aXZh
dGUoY29kZUJsb2NrKSk7CisgICAgICAgIG9sZENvZGVCbG9jayA9IGV4ZWN1dGFibGUtPm1fcHJv
Z3JhbUNvZGVCbG9jay5nZXQoKTsKKyAgICAgICAgZXhlY3V0YWJsZS0+bV9wcm9ncmFtQ29kZUJs
b2NrLnNldE1heUJlTnVsbCh2bSwgdGhpcywgY29kZUJsb2NrKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogCkBAIC0xMDAsOCArMTAwLDggQEAgdm9pZCBTY3JpcHRFeGVjdXRhYmxlOjppbnN0YWxs
Q29kZShWTSYgdm0sIENvZGVCbG9jayogZ2VuZXJpY0NvZGVCbG9jaywgQ29kZVR5cGUKIAogICAg
ICAgICBBU1NFUlQoa2luZCA9PSBDb2RlRm9yQ2FsbCk7CiAKLSAgICAgICAgb2xkQ29kZUJsb2Nr
ID0gRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6ZGVhY3RpdmF0ZUFuZFVud3JhcChleGVjdXRh
YmxlLT5tX21vZHVsZVByb2dyYW1Db2RlQmxvY2suZ2V0KCkpOwotICAgICAgICBleGVjdXRhYmxl
LT5tX21vZHVsZVByb2dyYW1Db2RlQmxvY2suc2V0TWF5QmVOdWxsKHZtLCB0aGlzLCBFeGVjdXRh
YmxlVG9Db2RlQmxvY2tFZGdlOjp3cmFwQW5kQWN0aXZhdGUoY29kZUJsb2NrKSk7CisgICAgICAg
IG9sZENvZGVCbG9jayA9IGV4ZWN1dGFibGUtPm1fbW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5nZXQo
KTsKKyAgICAgICAgZXhlY3V0YWJsZS0+bV9tb2R1bGVQcm9ncmFtQ29kZUJsb2NrLnNldE1heUJl
TnVsbCh2bSwgdGhpcywgY29kZUJsb2NrKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC0x
MTEsOCArMTExLDggQEAgdm9pZCBTY3JpcHRFeGVjdXRhYmxlOjppbnN0YWxsQ29kZShWTSYgdm0s
IENvZGVCbG9jayogZ2VuZXJpY0NvZGVCbG9jaywgQ29kZVR5cGUKICAgICAgICAgCiAgICAgICAg
IEFTU0VSVChraW5kID09IENvZGVGb3JDYWxsKTsKICAgICAgICAgCi0gICAgICAgIG9sZENvZGVC
bG9jayA9IEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6OmRlYWN0aXZhdGVBbmRVbndyYXAoZXhl
Y3V0YWJsZS0+bV9ldmFsQ29kZUJsb2NrLmdldCgpKTsKLSAgICAgICAgZXhlY3V0YWJsZS0+bV9l
dmFsQ29kZUJsb2NrLnNldE1heUJlTnVsbCh2bSwgdGhpcywgRXhlY3V0YWJsZVRvQ29kZUJsb2Nr
RWRnZTo6d3JhcEFuZEFjdGl2YXRlKGNvZGVCbG9jaykpOworICAgICAgICBvbGRDb2RlQmxvY2sg
PSBleGVjdXRhYmxlLT5tX2V2YWxDb2RlQmxvY2suZ2V0KCk7CisgICAgICAgIGV4ZWN1dGFibGUt
Pm1fZXZhbENvZGVCbG9jay5zZXRNYXlCZU51bGwodm0sIHRoaXMsIGNvZGVCbG9jayk7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCkBAIC0xMjIsMTIgKzEyMiwxMiBAQCB2b2lkIFNj
cmlwdEV4ZWN1dGFibGU6Omluc3RhbGxDb2RlKFZNJiB2bSwgQ29kZUJsb2NrKiBnZW5lcmljQ29k
ZUJsb2NrLCBDb2RlVHlwZQogICAgICAgICAKICAgICAgICAgc3dpdGNoIChraW5kKSB7CiAgICAg
ICAgIGNhc2UgQ29kZUZvckNhbGw6Ci0gICAgICAgICAgICBvbGRDb2RlQmxvY2sgPSBFeGVjdXRh
YmxlVG9Db2RlQmxvY2tFZGdlOjpkZWFjdGl2YXRlQW5kVW53cmFwKGV4ZWN1dGFibGUtPm1fY29k
ZUJsb2NrRm9yQ2FsbC5nZXQoKSk7Ci0gICAgICAgICAgICBleGVjdXRhYmxlLT5tX2NvZGVCbG9j
a0ZvckNhbGwuc2V0TWF5QmVOdWxsKHZtLCB0aGlzLCBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdl
Ojp3cmFwQW5kQWN0aXZhdGUoY29kZUJsb2NrKSk7CisgICAgICAgICAgICBvbGRDb2RlQmxvY2sg
PSBleGVjdXRhYmxlLT5tX2NvZGVCbG9ja0ZvckNhbGwuZ2V0KCk7CisgICAgICAgICAgICBleGVj
dXRhYmxlLT5tX2NvZGVCbG9ja0ZvckNhbGwuc2V0TWF5QmVOdWxsKHZtLCB0aGlzLCBjb2RlQmxv
Y2spOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ29kZUZvckNvbnN0cnVjdDoK
LSAgICAgICAgICAgIG9sZENvZGVCbG9jayA9IEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6OmRl
YWN0aXZhdGVBbmRVbndyYXAoZXhlY3V0YWJsZS0+bV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QuZ2V0
KCkpOwotICAgICAgICAgICAgZXhlY3V0YWJsZS0+bV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3Quc2V0
TWF5QmVOdWxsKHZtLCB0aGlzLCBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjp3cmFwQW5kQWN0
aXZhdGUoY29kZUJsb2NrKSk7CisgICAgICAgICAgICBvbGRDb2RlQmxvY2sgPSBleGVjdXRhYmxl
LT5tX2NvZGVCbG9ja0ZvckNvbnN0cnVjdC5nZXQoKTsKKyAgICAgICAgICAgIGV4ZWN1dGFibGUt
Pm1fY29kZUJsb2NrRm9yQ29uc3RydWN0LnNldE1heUJlTnVsbCh2bSwgdGhpcywgY29kZUJsb2Nr
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwpAQCAtMjY4
LDcgKzI2OCw3IEBAIENvZGVCbG9jayogU2NyaXB0RXhlY3V0YWJsZTo6bmV3UmVwbGFjZW1lbnRD
b2RlQmxvY2tGb3IoCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNhbGwp
OwogICAgICAgICBFdmFsRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGpzQ2FzdDxFdmFsRXhlY3V0
YWJsZSo+KHRoaXMpOwogICAgICAgICBFdmFsQ29kZUJsb2NrKiBiYXNlbGluZSA9IHN0YXRpY19j
YXN0PEV2YWxDb2RlQmxvY2sqPigKLSAgICAgICAgICAgIGV4ZWN1dGFibGUtPmNvZGVCbG9jaygp
LT5iYXNlbGluZVZlcnNpb24oKSk7CisgICAgICAgICAgICBleGVjdXRhYmxlLT5tX2V2YWxDb2Rl
QmxvY2stPmJhc2VsaW5lVmVyc2lvbigpKTsKICAgICAgICAgRXZhbENvZGVCbG9jayogcmVzdWx0
ID0gRXZhbENvZGVCbG9jazo6Y3JlYXRlKCZ2bSwKICAgICAgICAgICAgIENvZGVCbG9jazo6Q29w
eVBhcnNlZEJsb2NrLCAqYmFzZWxpbmUpOwogICAgICAgICByZXN1bHQtPnNldEFsdGVybmF0aXZl
KHZtLCBiYXNlbGluZSk7CkBAIC0yNzksNyArMjc5LDcgQEAgQ29kZUJsb2NrKiBTY3JpcHRFeGVj
dXRhYmxlOjpuZXdSZXBsYWNlbWVudENvZGVCbG9ja0ZvcigKICAgICAgICAgUkVMRUFTRV9BU1NF
UlQoa2luZCA9PSBDb2RlRm9yQ2FsbCk7CiAgICAgICAgIFByb2dyYW1FeGVjdXRhYmxlKiBleGVj
dXRhYmxlID0ganNDYXN0PFByb2dyYW1FeGVjdXRhYmxlKj4odGhpcyk7CiAgICAgICAgIFByb2dy
YW1Db2RlQmxvY2sqIGJhc2VsaW5lID0gc3RhdGljX2Nhc3Q8UHJvZ3JhbUNvZGVCbG9jayo+KAot
ICAgICAgICAgICAgZXhlY3V0YWJsZS0+Y29kZUJsb2NrKCktPmJhc2VsaW5lVmVyc2lvbigpKTsK
KyAgICAgICAgICAgIGV4ZWN1dGFibGUtPm1fcHJvZ3JhbUNvZGVCbG9jay0+YmFzZWxpbmVWZXJz
aW9uKCkpOwogICAgICAgICBQcm9ncmFtQ29kZUJsb2NrKiByZXN1bHQgPSBQcm9ncmFtQ29kZUJs
b2NrOjpjcmVhdGUoJnZtLAogICAgICAgICAgICAgQ29kZUJsb2NrOjpDb3B5UGFyc2VkQmxvY2ss
ICpiYXNlbGluZSk7CiAgICAgICAgIHJlc3VsdC0+c2V0QWx0ZXJuYXRpdmUodm0sIGJhc2VsaW5l
KTsKQEAgLTI5MCw3ICsyOTAsNyBAQCBDb2RlQmxvY2sqIFNjcmlwdEV4ZWN1dGFibGU6Om5ld1Jl
cGxhY2VtZW50Q29kZUJsb2NrRm9yKAogICAgICAgICBSRUxFQVNFX0FTU0VSVChraW5kID09IENv
ZGVGb3JDYWxsKTsKICAgICAgICAgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUg
PSBqc0Nhc3Q8TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqPih0aGlzKTsKICAgICAgICAgTW9kdWxl
UHJvZ3JhbUNvZGVCbG9jayogYmFzZWxpbmUgPSBzdGF0aWNfY2FzdDxNb2R1bGVQcm9ncmFtQ29k
ZUJsb2NrKj4oCi0gICAgICAgICAgICBleGVjdXRhYmxlLT5jb2RlQmxvY2soKS0+YmFzZWxpbmVW
ZXJzaW9uKCkpOworICAgICAgICAgICAgZXhlY3V0YWJsZS0+bV9tb2R1bGVQcm9ncmFtQ29kZUJs
b2NrLT5iYXNlbGluZVZlcnNpb24oKSk7CiAgICAgICAgIE1vZHVsZVByb2dyYW1Db2RlQmxvY2sq
IHJlc3VsdCA9IE1vZHVsZVByb2dyYW1Db2RlQmxvY2s6OmNyZWF0ZSgmdm0sCiAgICAgICAgICAg
ICBDb2RlQmxvY2s6OkNvcHlQYXJzZWRCbG9jaywgKmJhc2VsaW5lKTsKICAgICAgICAgcmVzdWx0
LT5zZXRBbHRlcm5hdGl2ZSh2bSwgYmFzZWxpbmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uY3BwCmluZGV4IDQ1ZDA4M2MzZDZmYzAxMWI1OTIzZWFlMmMwZDZhM2I3MDhhY2IxOGMuLjFi
ZThiMDIzMGM0NDM1YzJiZDdkZmJiNTdjN2QyNWY3MzhiMGQ5YTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5jcHAKQEAgLTQ0LDcgKzQ0LDYgQEAKICNpbmNsdWRlICJFcnJvckluc3Rh
bmNlLmgiCiAjaW5jbHVkZSAiRXZhbENvZGVCbG9jay5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbi5o
IgotI2luY2x1ZGUgIkV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaCIKICNpbmNsdWRlICJGVExU
aHVua3MuaCIKICNpbmNsdWRlICJGYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oIgog
I2luY2x1ZGUgIkZ1bmN0aW9uQ29kZUJsb2NrLmgiCkBAIC0yNTAsNyArMjQ5LDYgQEAgVk06OlZN
KFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwgd2ViQXNzZW1ibHlDb2Rl
QmxvY2tTcGFjZSgiSlNXZWJBc3NlbWJseUNvZGVCbG9ja1NwYWNlIiwgaGVhcCwgd2ViQXNzZW1i
bHlDb2RlQmxvY2tIZWFwQ2VsbFR5cGUuZ2V0KCksIGZhc3RNYWxsb2NBbGxvY2F0b3IuZ2V0KCkp
CiAjZW5kaWYKICAgICAsIGRpcmVjdEV2YWxFeGVjdXRhYmxlU3BhY2UgSVNPX1NVQlNQQUNFX0lO
SVQoaGVhcCwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgRGlyZWN0RXZhbEV4
ZWN1dGFibGUpCi0gICAgLCBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlU3BhY2UgSVNPX1NVQlNQ
QUNFX0lOSVQoaGVhcCwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgRXhlY3V0YWJsZVRvQ29kZUJs
b2NrRWRnZSkKICAgICAsIGZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlIElTT19TVUJTUEFDRV9JTklU
KGhlYXAsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEZ1bmN0aW9uRXhlY3V0
YWJsZSkKICAgICAsIGluZGlyZWN0RXZhbEV4ZWN1dGFibGVTcGFjZSBJU09fU1VCU1BBQ0VfSU5J
VChoZWFwLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBJbmRpcmVjdEV2YWxF
eGVjdXRhYmxlKQogICAgICwgaW5mZXJyZWRUeXBlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVh
cCwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSW5mZXJyZWRUeXBlKQpAQCAt
MjYzLDE0ICsyNjEsOCBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUp
CiAgICAgLCBzdHJ1Y3R1cmVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGli
bGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBTdHJ1Y3R1cmUpCiAgICAgLCB3ZWFrU2V0U3BhY2Ug
SVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdl
dCgpLCBKU1dlYWtTZXQpCiAgICAgLCB3ZWFrTWFwU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVh
cCwgZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1dlYWtNYXApCi0gICAg
LCBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhDb25zdHJhaW50cyhleGVjdXRhYmxlVG9D
b2RlQmxvY2tFZGdlU3BhY2UpCi0gICAgLCBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhG
aW5hbGl6ZXJzKGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VTcGFjZSkKICAgICAsIGluZmVycmVk
VHlwZXNXaXRoRmluYWxpemVycyhpbmZlcnJlZFR5cGVTcGFjZSkKICAgICAsIGluZmVycmVkVmFs
dWVzV2l0aEZpbmFsaXplcnMoaW5mZXJyZWRWYWx1ZVNwYWNlKQotICAgICwgZXZhbENvZGVCbG9j
a1NwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5
cGUuZ2V0KCksIEV2YWxDb2RlQmxvY2spCi0gICAgLCBmdW5jdGlvbkNvZGVCbG9ja1NwYWNlIElT
T19TVUJTUEFDRV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCks
IEZ1bmN0aW9uQ29kZUJsb2NrKQotICAgICwgbW9kdWxlUHJvZ3JhbUNvZGVCbG9ja1NwYWNlIElT
T19TVUJTUEFDRV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCks
IE1vZHVsZVByb2dyYW1Db2RlQmxvY2spCi0gICAgLCBwcm9ncmFtQ29kZUJsb2NrU3BhY2UgSVNP
X1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwg
UHJvZ3JhbUNvZGVCbG9jaykKICAgICAsIHZtVHlwZSh2bVR5cGUpCiAgICAgLCBjbGllbnREYXRh
KDApCiAgICAgLCB0b3BFbnRyeUZyYW1lKG51bGxwdHIpCkBAIC0zNjAsNyArMzUyLDYgQEAgVk06
OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgIHNldEl0ZXJhdG9yU3Ry
dWN0dXJlLnNldCgqdGhpcywgSlNTZXRJdGVyYXRvcjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAw
LCBqc051bGwoKSkpOwogICAgIG1hcEl0ZXJhdG9yU3RydWN0dXJlLnNldCgqdGhpcywgSlNNYXBJ
dGVyYXRvcjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGJpZ0lu
dFN0cnVjdHVyZS5zZXQoKnRoaXMsIEpTQmlnSW50OjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAs
IGpzTnVsbCgpKSk7Ci0gICAgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZVN0cnVjdHVyZS5zZXQo
KnRoaXMsIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywg
bnVsbHB0ciwganNOdWxsKCkpKTsKIAogICAgIHNlbnRpbmVsU2V0QnVja2V0LnNldCgqdGhpcywg
SlNTZXQ6OkJ1Y2tldFR5cGU6OmNyZWF0ZVNlbnRpbmVsKCp0aGlzKSk7CiAgICAgc2VudGluZWxN
YXBCdWNrZXQuc2V0KCp0aGlzLCBKU01hcDo6QnVja2V0VHlwZTo6Y3JlYXRlU2VudGluZWwoKnRo
aXMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4IGJlMmY3ODY2NzhmZTVhZmNh
MzNjZmNiODFjYTc1MDA5ZjFkM2I5ZTEuLmMyOTA3M2QyMDhhNWQ2Mjk5YzQ3YTk2MjEwZjg4OTE2
ZjI5NTdhMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMzOSw3ICszMzks
NiBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICAKICAgICBJc29TdWJzcGFjZSBkaXJlY3RFdmFsRXhl
Y3V0YWJsZVNwYWNlOwotICAgIElzb1N1YnNwYWNlIGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VT
cGFjZTsKICAgICBJc29TdWJzcGFjZSBmdW5jdGlvbkV4ZWN1dGFibGVTcGFjZTsKICAgICBJc29T
dWJzcGFjZSBpbmRpcmVjdEV2YWxFeGVjdXRhYmxlU3BhY2U7CiAgICAgSXNvU3Vic3BhY2UgaW5m
ZXJyZWRUeXBlU3BhY2U7CkBAIC0zNTMsNDcgKzM1Miw5IEBAIHB1YmxpYzoKICAgICBJc29TdWJz
cGFjZSB3ZWFrU2V0U3BhY2U7CiAgICAgSXNvU3Vic3BhY2Ugd2Vha01hcFNwYWNlOwogICAgIAot
ICAgIElzb0NlbGxTZXQgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWludHM7
Ci0gICAgSXNvQ2VsbFNldCBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhGaW5hbGl6ZXJz
OwogICAgIElzb0NlbGxTZXQgaW5mZXJyZWRUeXBlc1dpdGhGaW5hbGl6ZXJzOwogICAgIElzb0Nl
bGxTZXQgaW5mZXJyZWRWYWx1ZXNXaXRoRmluYWxpemVyczsKLSAgICAKLSAgICBzdHJ1Y3QgU3Bh
Y2VBbmRGaW5hbGl6ZXJTZXQgewotICAgICAgICBJc29TdWJzcGFjZSBzcGFjZTsKLSAgICAgICAg
SXNvQ2VsbFNldCBmaW5hbGl6ZXJTZXQ7Ci0gICAgICAgIAotICAgICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZS4uLiBBcmd1bWVudHM+Ci0gICAgICAgIFNwYWNlQW5kRmluYWxpemVyU2V0KEFyZ3VtZW50
cyYmLi4uIGFyZ3VtZW50cykKLSAgICAgICAgICAgIDogc3BhY2Uoc3RkOjpmb3J3YXJkPEFyZ3Vt
ZW50cz4oYXJndW1lbnRzKS4uLikKLSAgICAgICAgICAgICwgZmluYWxpemVyU2V0KHNwYWNlKQot
ICAgICAgICB7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHN0YXRpYyBJc29DZWxsU2V0
JiBmaW5hbGl6ZXJTZXRGb3IoU3Vic3BhY2UmIHNwYWNlKQotICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gKmJpdHdpc2VfY2FzdDxJc29DZWxsU2V0Kj4oCi0gICAgICAgICAgICAgICAgYml0
d2lzZV9jYXN0PGNoYXIqPigmc3BhY2UpIC0KLSAgICAgICAgICAgICAgICBPQkpFQ1RfT0ZGU0VU
T0YoU3BhY2VBbmRGaW5hbGl6ZXJTZXQsIHNwYWNlKSArCi0gICAgICAgICAgICAgICAgT0JKRUNU
X09GRlNFVE9GKFNwYWNlQW5kRmluYWxpemVyU2V0LCBmaW5hbGl6ZXJTZXQpKTsKLSAgICAgICAg
fQotICAgIH07Ci0gICAgCi0gICAgU3BhY2VBbmRGaW5hbGl6ZXJTZXQgZXZhbENvZGVCbG9ja1Nw
YWNlOwotICAgIFNwYWNlQW5kRmluYWxpemVyU2V0IGZ1bmN0aW9uQ29kZUJsb2NrU3BhY2U7Ci0g
ICAgU3BhY2VBbmRGaW5hbGl6ZXJTZXQgbW9kdWxlUHJvZ3JhbUNvZGVCbG9ja1NwYWNlOwotICAg
IFNwYWNlQW5kRmluYWxpemVyU2V0IHByb2dyYW1Db2RlQmxvY2tTcGFjZTsKIAotICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEZ1bmM+Ci0gICAgdm9pZCBmb3JFYWNoQ29kZUJsb2NrU3BhY2UoY29uc3Qg
RnVuYyYgZnVuYykKLSAgICB7Ci0gICAgICAgIC8vIFRoaXMgc2hvdWxkIG5vdCBpbmNsdWRlIHdl
YkFzc2VtYmx5Q29kZUJsb2NrU3BhY2UgYmVjYXVzZSB0aGlzIGlzIGFib3V0IHN1YnNjbGFzc2Vz
IG9mCi0gICAgICAgIC8vIEpTQzo6Q29kZUJsb2NrLgotICAgICAgICBmdW5jKGV2YWxDb2RlQmxv
Y2tTcGFjZSk7Ci0gICAgICAgIGZ1bmMoZnVuY3Rpb25Db2RlQmxvY2tTcGFjZSk7Ci0gICAgICAg
IGZ1bmMobW9kdWxlUHJvZ3JhbUNvZGVCbG9ja1NwYWNlKTsKLSAgICAgICAgZnVuYyhwcm9ncmFt
Q29kZUJsb2NrU3BhY2UpOwotICAgIH0KLSAgICAKICAgICBWTVR5cGUgdm1UeXBlOwogICAgIENs
aWVudERhdGEqIGNsaWVudERhdGE7CiAgICAgRW50cnlGcmFtZSogdG9wRW50cnlGcmFtZTsKQEAg
LTQ1Nyw3ICs0MTgsNiBAQCBwdWJsaWM6CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gc2V0SXRlcmF0
b3JTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gbWFwSXRlcmF0b3JTdHJ1Y3R1cmU7
CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gYmlnSW50U3RydWN0dXJlOwotICAgIFN0cm9uZzxTdHJ1
Y3R1cmU+IGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VTdHJ1Y3R1cmU7CiAKICAgICBTdHJvbmc8
SlNDZWxsPiBlbXB0eVByb3BlcnR5TmFtZUVudW1lcmF0b3I7CiAgICAgU3Ryb25nPEpTQ2VsbD4g
c2VudGluZWxTZXRCdWNrZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTVRyYXBzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNVHJhcHMu
Y3BwCmluZGV4IDkyMWNkOTRiOTAwMDYyNGE1YTgzZDhjMDM5NWY1MjU3NTJlNTJhYmUuLmEyMGQw
OTQ0NTZjMWYzZDEyMDE5ZTBiMGY0MmQzMzZiZTliMDVkNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNVHJhcHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNVHJhcHMuY3BwCkBAIC0yMzAsNiArMjMwLDcgQEAgcHVibGljOgogCiAg
ICAgICAgICAgICAgICAgICAgICAgICBjb2RlQmxvY2stPmpldHRpc29uKFByb2ZpbGVyOjpKZXR0
aXNvbkR1ZVRvVk1UcmFwcyk7CiAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKHNhd0N1cnJlbnRDb2RlQmxvY2spOwogICAgICAgICAgICAgICAgIApA
QCAtMzQwLDYgKzM0MSw3IEBAIHZvaWQgVk1UcmFwczo6aGFuZGxlVHJhcHMoRXhlY1N0YXRlKiBl
eGVjLCBWTVRyYXBzOjpNYXNrIG1hc2spCiAgICAgICAgICAgICAvLyBXZSB3YW50IHRvIGpldHRp
c29uIGFsbCBjb2RlIGJsb2NrcyB0aGF0IGhhdmUgdm0gdHJhcHMgYnJlYWtwb2ludHMsIG90aGVy
d2lzZSB3ZSBjb3VsZCBoaXQgdGhlbSBsYXRlci4KICAgICAgICAgICAgIGlmIChjb2RlQmxvY2st
Pmhhc0luc3RhbGxlZFZNVHJhcEJyZWFrcG9pbnRzKCkpCiAgICAgICAgICAgICAgICAgY29kZUJs
b2NrLT5qZXR0aXNvbihQcm9maWxlcjo6SmV0dGlzb25EdWVUb1ZNVHJhcHMpOworICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90b29scy9WTUluc3BlY3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdG9vbHMvVk1JbnNwZWN0b3IuY3BwCmluZGV4IDc1OTczZTI2YjA3MjNmMzk1N2NlYzlh
M2ZiMGQ5OTBiOGNlMzZhMjMuLjg4OGNhNzc3ZmI5MWM1YWRhZDA1YzdiZTYxMDIyN2E4YjgyZjRj
ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9WTUluc3BlY3Rvci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1ZNSW5zcGVjdG9yLmNwcApAQCAt
MTcxLDE2ICsxNzEsMTcgQEAgYXV0byBWTUluc3BlY3Rvcjo6Y29kZUJsb2NrRm9yTWFjaGluZVBD
KGNvbnN0IFZNSW5zcGVjdG9yOjpMb2NrZXImLCB2b2lkKiBtYWNoaW4KICAgICAgICAgICAgICAg
ICAvLyBJZiB0aGUgY29kZUJsb2NrIGlzIGEgcmVwbGFjZW1lbnQgY29kZUJsb2NrIHdoaWNoIGlz
IGluIHRoZSBwcm9jZXNzIG9mIGJlaW5nCiAgICAgICAgICAgICAgICAgLy8gY29tcGlsZWQsIGl0
cyBqaXRDb2RlIHdpbGwgYmUgbnVsbCwgYW5kIHdlIGNhbiBkaXNyZWdhcmQgaXQgYXMgYSBtYXRj
aCBmb3IKICAgICAgICAgICAgICAgICAvLyB0aGUgbWFjaGluZVBDIHdlJ3JlIHNlYXJjaGluZyBm
b3IuCi0gICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKCFKSVRDb2RlOjppc0pJVChqaXRD
b2RlLT5qaXRUeXBlKCkpKQotICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgICAgIGlmIChqaXRDb2RlLT5jb250YWlucyhtYWNo
aW5lUEMpKSB7CiAgICAgICAgICAgICAgICAgY29kZUJsb2NrID0gY2I7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9KTsKICAgICAgICAgaWYgKGNvZGVC
bG9jaykKICAgICAgICAgICAgIHJldHVybiBGdW5jdG9yU3RhdHVzOjpEb25lOwpAQCAtMjc1LDEw
ICsyNzYsMTEgQEAgYm9vbCBWTUluc3BlY3Rvcjo6aXNWYWxpZENvZGVCbG9jayhFeGVjU3RhdGUq
IGV4ZWMsIENvZGVCbG9jayogY2FuZGlkYXRlKQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAg
ICAgICB2b2lkIG9wZXJhdG9yKCkoQ29kZUJsb2NrKiBjb2RlQmxvY2spIGNvbnN0CisgICAgICAg
IGJvb2wgb3BlcmF0b3IoKShDb2RlQmxvY2sqIGNvZGVCbG9jaykgY29uc3QKICAgICAgICAgewog
ICAgICAgICAgICAgaWYgKGNvZGVCbG9jayA9PSBjYW5kaWRhdGUpCiAgICAgICAgICAgICAgICAg
Zm91bmQgPSB0cnVlOworICAgICAgICAgICAgcmV0dXJuIGZvdW5kOwogICAgICAgICB9CiAKICAg
ICAgICAgQ29kZUJsb2NrKiBjYW5kaWRhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9E
ZXF1ZS5oIGIvU291cmNlL1dURi93dGYvRGVxdWUuaAppbmRleCA5ZDFjZjBmZDA3NDU3MDA3Yjky
MGNlNGU3YmJkMjY2Y2Y0M2ZmNWZiLi44NTU2Zjc1YWYxZDM2MTQ3ZjVjMjAwYzY0MmU1NTVlZTQz
YTU3ZmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9EZXF1ZS5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL0RlcXVlLmgKQEAgLTc1LDggKzc1LDYgQEAgcHVibGljOgogICAgIHJldmVyc2VfaXRl
cmF0b3IgcmVuZCgpIHsgcmV0dXJuIHJldmVyc2VfaXRlcmF0b3IoYmVnaW4oKSk7IH0KICAgICBj
b25zdF9yZXZlcnNlX2l0ZXJhdG9yIHJiZWdpbigpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X3JldmVy
c2VfaXRlcmF0b3IoZW5kKCkpOyB9CiAgICAgY29uc3RfcmV2ZXJzZV9pdGVyYXRvciByZW5kKCkg
Y29uc3QgeyByZXR1cm4gY29uc3RfcmV2ZXJzZV9pdGVyYXRvcihiZWdpbigpKTsgfQotICAgIAot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgY29udGFpbnMoY29uc3QgVSYpOwogCiAgICAg
VCYgZmlyc3QoKSB7IEFTU0VSVChtX3N0YXJ0ICE9IG1fZW5kKTsgcmV0dXJuIG1fYnVmZmVyLmJ1
ZmZlcigpW21fc3RhcnRdOyB9CiAgICAgY29uc3QgVCYgZmlyc3QoKSBjb25zdCB7IEFTU0VSVCht
X3N0YXJ0ICE9IG1fZW5kKTsgcmV0dXJuIG1fYnVmZmVyLmJ1ZmZlcigpW21fc3RhcnRdOyB9CkBA
IC00NDAsMTcgKzQzOCw2IEBAIHZvaWQgRGVxdWU8VCwgaW5saW5lQ2FwYWNpdHk+OjpleHBhbmRD
YXBhY2l0eSgpCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0
eT4KLXRlbXBsYXRlPHR5cGVuYW1lIFU+Ci1ib29sIERlcXVlPFQsIGlubGluZUNhcGFjaXR5Pjo6
Y29udGFpbnMoY29uc3QgVSYgc2VhcmNoVmFsdWUpCi17Ci0gICAgZm9yIChhdXRvJiB2YWx1ZSA6
ICp0aGlzKSB7Ci0gICAgICAgIGlmICh2YWx1ZSA9PSBzZWFyY2hWYWx1ZSkKLSAgICAgICAgICAg
IHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXRlbXBsYXRlPHR5
cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KIGlubGluZSBhdXRvIERlcXVlPFQsIGlu
bGluZUNhcGFjaXR5Pjo6dGFrZUZpcnN0KCkgLT4gVAogewogICAgIFQgb2xkRmlyc3QgPSBXVEZN
b3ZlKGZpcnN0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9N
R0NPdXRwdXRDb25zdHJhaW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTUdD
T3V0cHV0Q29uc3RyYWludC5jcHAKaW5kZXggOTBhYTMzNjAwOTJlMzMxZjJhZGMyYjdlZGIxNmQ0
ZTQ5YzY0Y2UwNC4uZjQyMmYwZDk1ODVjNGY4ZmI2MGMyZGQwNTM4MmZlNjNiN2VmOWE5MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NR0NPdXRwdXRDb25zdHJhaW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01HQ091dHB1dENvbnN0cmFp
bnQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTQ5LDE1ICs0OSwxNiBAQCBET01HQ091dHB1dENvbnN0cmFpbnQ6On5ET01HQ091dHB1
dENvbnN0cmFpbnQoKQogewogfQogCi12b2lkIERPTUdDT3V0cHV0Q29uc3RyYWludDo6ZXhlY3V0
ZUltcGwoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCitDb25zdHJhaW50UGFyYWxsZWxpc20gRE9NR0NP
dXRwdXRDb25zdHJhaW50OjpleGVjdXRlSW1wbChTbG90VmlzaXRvciYpCiB7CiAgICAgSGVhcCYg
aGVhcCA9IG1fdm0uaGVhcDsKICAgICAKICAgICBpZiAoaGVhcC5tdXRhdG9yRXhlY3V0aW9uVmVy
c2lvbigpID09IG1fbGFzdEV4ZWN1dGlvblZlcnNpb24pCi0gICAgICAgIHJldHVybjsKKyAgICAg
ICAgcmV0dXJuIENvbnN0cmFpbnRQYXJhbGxlbGlzbTo6U2VxdWVudGlhbDsKICAgICAKICAgICBt
X2xhc3RFeGVjdXRpb25WZXJzaW9uID0gaGVhcC5tdXRhdG9yRXhlY3V0aW9uVmVyc2lvbigpOwog
ICAgIAorICAgIFJFTEVBU0VfQVNTRVJUKG1fdGFza3MuaXNFbXB0eSgpKTsKICAgICBtX2NsaWVu
dERhdGEuZm9yRWFjaE91dHB1dENvbnN0cmFpbnRTcGFjZSgKICAgICAgICAgWyZdIChTdWJzcGFj
ZSYgc3Vic3BhY2UpIHsKICAgICAgICAgICAgIGF1dG8gZnVuYyA9IFtdIChTbG90VmlzaXRvciYg
dmlzaXRvciwgSGVhcENlbGwqIGhlYXBDZWxsLCBIZWFwQ2VsbDo6S2luZCkgewpAQCAtNjUsOSAr
NjYsMjIgQEAgdm9pZCBET01HQ091dHB1dENvbnN0cmFpbnQ6OmV4ZWN1dGVJbXBsKFNsb3RWaXNp
dG9yJiB2aXNpdG9yKQogICAgICAgICAgICAgICAgIGNlbGwtPm1ldGhvZFRhYmxlKHZpc2l0b3Iu
dm0oKSktPnZpc2l0T3V0cHV0Q29uc3RyYWludHMoY2VsbCwgdmlzaXRvcik7CiAgICAgICAgICAg
ICB9OwogICAgICAgICAgICAgCi0gICAgICAgICAgICB2aXNpdG9yLmFkZFBhcmFsbGVsQ29uc3Ry
YWludFRhc2soc3Vic3BhY2UuZm9yRWFjaE1hcmtlZENlbGxJblBhcmFsbGVsKGZ1bmMpKTsKKyAg
ICAgICAgICAgIG1fdGFza3MuYXBwZW5kKHN1YnNwYWNlLmZvckVhY2hNYXJrZWRDZWxsSW5QYXJh
bGxlbChmdW5jKSk7CiAgICAgICAgIH0pOworICAgIAorICAgIHJldHVybiBDb25zdHJhaW50UGFy
YWxsZWxpc206OlBhcmFsbGVsOworfQorICAgICAgICAKK3ZvaWQgRE9NR0NPdXRwdXRDb25zdHJh
aW50Ojpkb1BhcmFsbGVsV29ya0ltcGwoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgZm9y
IChhdXRvJiB0YXNrIDogbV90YXNrcykKKyAgICAgICAgdGFzay0+cnVuKHZpc2l0b3IpOwogfQog
ICAgICAgICAKK3ZvaWQgRE9NR0NPdXRwdXRDb25zdHJhaW50OjpmaW5pc2hQYXJhbGxlbFdvcmtJ
bXBsKFNsb3RWaXNpdG9yJikKK3sKKyAgICBtX3Rhc2tzLmNsZWFyKCk7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
RE9NR0NPdXRwdXRDb25zdHJhaW50LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01H
Q091dHB1dENvbnN0cmFpbnQuaAppbmRleCA0YzhmMjAzYmU5Mzc1MGEzNzRlZTNjOTI3MDg0NzQ2
OGFiYmRiZWEyLi5jNWQ3ODE2YzM0ZjllNGVhMmIzMWM2MWUzNTljZDlkNTVkNTAxNDVhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01HQ091dHB1dENvbnN0cmFpbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01HQ091dHB1dENvbnN0cmFpbnQu
aApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0zOSwxMiArMzksMTUgQEAgcHVibGljOgogICAgIH5ET01HQ091dHB1dENvbnN0cmFpbnQoKTsK
ICAgICAKIHByb3RlY3RlZDoKLSAgICB2b2lkIGV4ZWN1dGVJbXBsKEpTQzo6U2xvdFZpc2l0b3Im
KSBvdmVycmlkZTsKKyAgICBKU0M6OkNvbnN0cmFpbnRQYXJhbGxlbGlzbSBleGVjdXRlSW1wbChK
U0M6OlNsb3RWaXNpdG9yJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkb1BhcmFsbGVsV29ya0ltcGwo
SlNDOjpTbG90VmlzaXRvciYpIG92ZXJyaWRlOworICAgIHZvaWQgZmluaXNoUGFyYWxsZWxXb3Jr
SW1wbChKU0M6OlNsb3RWaXNpdG9yJikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgSlNDOjpW
TSYgbV92bTsKICAgICBKU1ZNQ2xpZW50RGF0YSYgbV9jbGllbnREYXRhOwogICAgIHVpbnQ2NF90
IG1fbGFzdEV4ZWN1dGlvblZlcnNpb247CisgICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRUYXNrPHZv
aWQoU2xvdFZpc2l0b3ImKT4+PiBtX3Rhc2tzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDky
Mjk5NDY4Yzk5NTNkNDAyNGMzYjM2NmFhNWU0NzhiMGQ5NWI1OGIuLmRjYWZmNDM5OTNkMzdiNGY3
NGUzMzZkYzU2M2E4YTQ5Zjc1NjZjN2QgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysg
Yi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxOC0wMS0xMCAgQ29tbWl0IFF1
ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9s
bGluZyBvdXQgcjIyNjY2NyBhbmQgcjIyNjY3My4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MTQ4OAorCisgICAgICAgIFRoaXMgY2F1c2VkIGEgZmxh
a3kgY3Jhc2guIChSZXF1ZXN0ZWQgYnkgbWxld2lzMTMgb24gI3dlYmtpdCkuCisKKyAgICAgICAg
UmV2ZXJ0ZWQgY2hhbmdlc2V0czoKKworICAgICAgICAiQ29kZUJsb2NrcyBzaG91bGQgYmUgaW4g
SXNvU3Vic3BhY2VzIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTgwODg0CisgICAgICAgIGh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8y
MjY2NjcKKworICAgICAgICAiUkVHUkVTU0lPTiAocjIyNjY2Nyk6IENvZGVCbG9ja3Mgc2hvdWxk
IGJlIGluIElzb1N1YnNwYWNlcyIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE4MDg4NAorICAgICAgICBodHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFu
Z2VzZXQvMjI2NjczCisKIDIwMTgtMDEtMTAgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBw
bGUuY29tPgogCiAgICAgICAgIEZvbGxvdy11cCBmaXggdG8gcjIyNjcxNQpkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy9ydW4tanNjLWJlbmNobWFya3MgYi9Ub29scy9TY3JpcHRzL3J1bi1qc2Mt
YmVuY2htYXJrcwppbmRleCAzMWYwZWQ0OGZhZDUxMDNkOTJhMDlmOTI3NjRlMDQ3ZGQyMTU1YzBi
Li5kNzZmY2Q0MmMyYzY0ZDhiYzRlZWM0NjY2MDUxZTZiZWUzYzMwYzE0IDEwMDc1NQotLS0gYS9U
b29scy9TY3JpcHRzL3J1bi1qc2MtYmVuY2htYXJrcworKysgYi9Ub29scy9TY3JpcHRzL3J1bi1q
c2MtYmVuY2htYXJrcwpAQCAtMjE2LDcgKzIxNiw3IEBAICR3YXJtdXA9MQogJG91dGVyPTQKICRx
dWFudHVtPTEwMDAKICRpbmNsdWRlU3VuU3BpZGVyPXRydWUKLSRpbmNsdWRlTG9uZ1NwaWRlcj1m
YWxzZQorJGluY2x1ZGVMb25nU3BpZGVyPXRydWUKICRpbmNsdWRlVjg9dHJ1ZQogJGluY2x1ZGVL
cmFrZW49dHJ1ZQogJGluY2x1ZGVKU0JlbmNoPXRydWUKQEAgLTIyNiw4ICsyMjYsOCBAQCAkaW5j
bHVkZURTUEpTPXRydWUKICRpbmNsdWRlQnJvd3Nlcm1hcmtKUz1mYWxzZQogJGluY2x1ZGVCcm93
c2VybWFya0RPTT1mYWxzZQogJGluY2x1ZGVPY3RhbmU9dHJ1ZQotJGluY2x1ZGVDb21wcmVzc2lv
bkJlbmNoID0gZmFsc2UKLSRpbmNsdWRlU2l4U3BlZWQgPSBmYWxzZQorJGluY2x1ZGVDb21wcmVz
c2lvbkJlbmNoID0gdHJ1ZQorJGluY2x1ZGVTaXhTcGVlZCA9IHRydWUKICRpbmNsdWRlVGFpbEJl
bmNoID0gdHJ1ZQogJG1lYXN1cmVHQz1mYWxzZQogJGJlbmNobWFya1BhdHRlcm49bmlsCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>