<?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>226140</bug_id>
          
          <creation_ts>2021-05-22 04:13:34 -0700</creation_ts>
          <short_desc>REGRESSION(r277913): Caused multiple layout-test crash on mac debug queues</short_desc>
          <delta_ts>2021-05-22 04:33:03 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>226133</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1762795</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2021-05-22 04:13:34 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/277913 broke the build:
Caused multiple layout-test crash on mac debug queues

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>1762797</commentid>
    <comment_count>1</comment_count>
      <attachid>429410</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2021-05-22 04:13:57 -0700</bug_when>
    <thetext>Created attachment 429410
REVERT of r277913

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

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

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762798</commentid>
    <comment_count>2</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-05-22 04:17:10 -0700</bug_when>
    <thetext>Committed r277917 (238050@main): &lt;https://commits.webkit.org/238050@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 429410.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762799</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-05-22 04:18:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/78348411&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762802</commentid>
    <comment_count>4</comment_count>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2021-05-22 04:33:03 -0700</bug_when>
    <thetext>*** Bug 226139 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429410</attachid>
            <date>2021-05-22 04:13:57 -0700</date>
            <delta_ts>2021-05-22 04:17:10 -0700</delta_ts>
            <desc>REVERT of r277913</desc>
            <filename>bug-226140-20210522111356.patch</filename>
            <type>text/plain</type>
            <size>250141</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3OTE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
MjdhMDAyYjY3MmRjMjFkZDRkOTYyODc4ZTVkMzZjNzY0MDNiNmY3Li5iNjc3N2YzZDM2MTI5NjUx
YjRhZGM1MjM5OWVlYWIxODBiNWMxYzdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAyMS0wNS0yMiAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNzc5MTMuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYxNDAKKworICAgICAg
ICBDYXVzZWQgbXVsdGlwbGUgbGF5b3V0LXRlc3QgY3Jhc2ggb24gbWFjIGRlYnVnIHF1ZXVlcwor
CisgICAgICAgIFJldmVydGVkIGNoYW5nZXNldDoKKworICAgICAgICAiUmVwbGFjZSBMb2NrSG9s
ZGVyIHdpdGggTG9ja2VyIGluIGxvY2FsIHZhcmlhYmxlcyIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjEzMworICAgICAgICBodHRwczovL3RyYWMu
d2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjc3OTEzCisKIDIwMjEtMDUtMjEgIENocmlzIER1bWV6ICA8
Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgV1RGOjpob2xkTG9jaygpIC8gV1RG
Ojpob2xkTG9ja0lmKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNl
L1dURi9DaGFuZ2VMb2cKaW5kZXggMTJmN2FlN2IyODQzYjk2NTE1ZjFjNGZhZTk5ODYwNjA0Y2Ji
YTNkOC4uMGQwNDI0MzQxOTRjMGRkMTdlOGVlOGRlYzMwZDBkYTI4MzY3MWY2YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAyMS0wNS0yMiAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNzc5MTMuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYxNDAKKworICAgICAg
ICBDYXVzZWQgbXVsdGlwbGUgbGF5b3V0LXRlc3QgY3Jhc2ggb24gbWFjIGRlYnVnIHF1ZXVlcwor
CisgICAgICAgIFJldmVydGVkIGNoYW5nZXNldDoKKworICAgICAgICAiUmVwbGFjZSBMb2NrSG9s
ZGVyIHdpdGggTG9ja2VyIGluIGxvY2FsIHZhcmlhYmxlcyIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjEzMworICAgICAgICBodHRwczovL3RyYWMu
d2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjc3OTEzCisKIDIwMjEtMDUtMjEgIENocmlzIER1bWV6ICA8
Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgV1RGOjpob2xkTG9jaygpIC8gV1RG
Ojpob2xkTG9ja0lmKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0NmIwOGRmZjc1NDViMDQ5NTdhN2U5Y2I0NWMw
MmY4ODU3MmMzNzE2Li4wZjYwYjc3ZTkzNDM5ZGI5OWE5YmY5ZjhlNjMyNjlhMmMwMzYyMWMxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMDUtMjIgIENvbW1pdCBRdWV1ZSAgPGNv
bW1pdC1xdWV1ZUB3ZWJraXQub3JnPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyBy
Mjc3OTEzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjI2MTQwCisKKyAgICAgICAgQ2F1c2VkIG11bHRpcGxlIGxheW91dC10ZXN0IGNyYXNoIG9uIG1h
YyBkZWJ1ZyBxdWV1ZXMKKworICAgICAgICBSZXZlcnRlZCBjaGFuZ2VzZXQ6CisKKyAgICAgICAg
IlJlcGxhY2UgTG9ja0hvbGRlciB3aXRoIExvY2tlciBpbiBsb2NhbCB2YXJpYWJsZXMiCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYxMzMKKyAgICAg
ICAgaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzI3NzkxMworCiAyMDIxLTA1LTIy
ICBSb2IgQnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CiAKICAgICAgICAgRGV0ZWN0IGludmFsaWQg
SW5saW5lUGF0aERhdGEgaW4gU3Ryb2tlSW5saW5lUGF0aApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBhOGI4NGIxZDQ0
MDllZGU3OWVjYThkNmJkMGQ4ODYxYmZjY2RjOGM0Li5jZTdiOWIzODA4NmIzMzVhYzFmNTJlYzM5
NzdlMTM2Y2JiZGE0YzEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIxLTA1LTIyICBD
b21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KKworICAgICAgICBVbnJldmll
d2VkLCByZXZlcnRpbmcgcjI3NzkxMy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyNjE0MAorCisgICAgICAgIENhdXNlZCBtdWx0aXBsZSBsYXlvdXQt
dGVzdCBjcmFzaCBvbiBtYWMgZGVidWcgcXVldWVzCisKKyAgICAgICAgUmV2ZXJ0ZWQgY2hhbmdl
c2V0OgorCisgICAgICAgICJSZXBsYWNlIExvY2tIb2xkZXIgd2l0aCBMb2NrZXIgaW4gbG9jYWwg
dmFyaWFibGVzIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjI2MTMzCisgICAgICAgIGh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yNzc5
MTMKKwogMjAyMS0wNS0yMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJlcGxhY2UgTG9ja0hvbGRlciB3aXRoIExvY2tlciBpbiBsb2NhbCB2YXJpYWJsZXMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExl
Z2FjeS9DaGFuZ2VMb2cKaW5kZXggZmUzNTFkMzIxMTgyMGJmMDVjNDQwZTU4NGQwMmI1ZjY5NWYx
Mjc4Zi4uMmVjYWQzYmZjZGNiYzlhY2JlMTUxMzUxNDk0MmMxYjk0ZmY0YWZmYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMS0wNS0yMiAgQ29tbWl0IFF1ZXVlICA8
Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5n
IHIyNzc5MTMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjYxNDAKKworICAgICAgICBDYXVzZWQgbXVsdGlwbGUgbGF5b3V0LXRlc3QgY3Jhc2ggb24g
bWFjIGRlYnVnIHF1ZXVlcworCisgICAgICAgIFJldmVydGVkIGNoYW5nZXNldDoKKworICAgICAg
ICAiUmVwbGFjZSBMb2NrSG9sZGVyIHdpdGggTG9ja2VyIGluIGxvY2FsIHZhcmlhYmxlcyIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjEzMworICAg
ICAgICBodHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjc3OTEzCisKIDIwMjEtMDUt
MjEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXBsYWNlIExv
Y2tIb2xkZXIgd2l0aCBMb2NrZXIgaW4gbG9jYWwgdmFyaWFibGVzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cKaW5kZXggMTA1NzAzNWI5ZGNmNGFjZjRmODdmOWJjNzY5NDMzYjkwNjcwNDc4YS4u
NmI1MjQ4MzViNzQ4ZDY4NGZhMjg2Y2ExZWQ4OWZhMjUyODkzYzMxYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIxLTA1LTIyICBDb21taXQgUXVldWUg
IDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KKworICAgICAgICBVbnJldmlld2VkLCByZXZlcnRp
bmcgcjI3NzkxMy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyNjE0MAorCisgICAgICAgIENhdXNlZCBtdWx0aXBsZSBsYXlvdXQtdGVzdCBjcmFzaCBv
biBtYWMgZGVidWcgcXVldWVzCisKKyAgICAgICAgUmV2ZXJ0ZWQgY2hhbmdlc2V0OgorCisgICAg
ICAgICJSZXBsYWNlIExvY2tIb2xkZXIgd2l0aCBMb2NrZXIgaW4gbG9jYWwgdmFyaWFibGVzIgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2MTMzCisg
ICAgICAgIGh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yNzc5MTMKKwogMjAyMS0w
NS0yMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFJlcGxhY2Ug
TG9ja0hvbGRlciB3aXRoIExvY2tlciBpbiBsb2NhbCB2YXJpYWJsZXMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L0NoYW5nZUxvZwppbmRleCBkYzMyZDdmMmIzN2NlMzQ1YjlmNDEzMWYxOGJmMGIzZGFjN2I2YjNk
Li5mMWU2Mjg5YjkwMmMzMmFjZGI2NmE3ZjI5Y2VhNTMwZTkyNTFjNDhjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMDUtMjIgIENvbW1pdCBRdWV1
ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJldmVy
dGluZyByMjc3OTEzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjI2MTQwCisKKyAgICAgICAgQ2F1c2VkIG11bHRpcGxlIGxheW91dC10ZXN0IGNyYXNo
IG9uIG1hYyBkZWJ1ZyBxdWV1ZXMKKworICAgICAgICBSZXZlcnRlZCBjaGFuZ2VzZXQ6CisKKyAg
ICAgICAgIlJlcGxhY2UgTG9ja0hvbGRlciB3aXRoIExvY2tlciBpbiBsb2NhbCB2YXJpYWJsZXMi
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYxMzMK
KyAgICAgICAgaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzI3NzkxMworCiAyMDIx
LTA1LTIxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUmVwbGFj
ZSBMb2NrSG9sZGVyIHdpdGggTG9ja2VyIGluIGxvY2FsIHZhcmlhYmxlcwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAppbmRleCBiMzQzM2RlMGUyMjFkY2Yx
M2I0NWRhYTk3YWViMWU0OWIzZWZkOGUyLi4zZDI4NWYzZDIyNTYyZWMwNjI5Y2QzNjlhYTkxMDRh
ZjIxZWNiOTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJh
Y2tPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmpl
Y3QuaApAQCAtOTUsMjEgKzk1LDIxIEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgICAgIHZvaWQg
c2V0UHJpdmF0ZVByb3BlcnR5KFZNJiB2bSwgSlNDZWxsKiBvd25lciwgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlKQogICAgICAgICB7Ci0gICAgICAgICAgICBM
b2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CisgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tlciht
X2xvY2spOwogICAgICAgICAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+IGVtcHR5OwogICAgICAg
ICAgICAgbV9wcm9wZXJ0eU1hcC5hZGQocHJvcGVydHlOYW1lLmltcGwoKSwgZW1wdHkpLml0ZXJh
dG9yLT52YWx1ZS5zZXQodm0sIG93bmVyLCB2YWx1ZSk7CiAgICAgICAgIH0KICAgICAgICAgCiAg
ICAgICAgIHZvaWQgZGVsZXRlUHJpdmF0ZVByb3BlcnR5KGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSkKICAgICAgICAgewotICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9
OworICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKICAgICAgICAgICAgIG1f
cHJvcGVydHlNYXAucmVtb3ZlKHByb3BlcnR5TmFtZS5pbXBsKCkpOwogICAgICAgICB9CiAKICAg
ICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4KICAgICAgICAgdm9pZCB2aXNpdENoaWxk
cmVuKFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgICAgIHsKLSAgICAgICAgICAgIExvY2tlciBsb2Nr
ZXIgeyBtX2xvY2sgfTsKKyAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CiAg
ICAgICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBtX3Byb3BlcnR5TWFwKSB7CiAgICAgICAgICAg
ICAgICAgaWYgKHBhaXIudmFsdWUpCiAgICAgICAgICAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5k
KHBhaXIudmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1Zh
bHVlLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLm1tCmluZGV4IDIxZjkx
OTA2NzExZGY2NGFmOGM3NWIyOTIzNmU1Nzg4OTE3Mjc2NWIuLmFjMDlmNjU0NTA3YzNkYmQ0OTYw
ZmQ2NzEzMzJiYjNmMTFmOTA2MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNWYWx1ZS5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWUubW0K
QEAgLTEyMDksNyArMTIwOSw3IEBAIHN0YXRpYyBTdHJ1Y3RIYW5kbGVycyogY3JlYXRlU3RydWN0
SGFuZGxlck1hcCgpCiBzdGF0aWMgU3RydWN0VGFnSGFuZGxlciogaGFuZGVyRm9yU3RydWN0VGFn
KGNvbnN0IGNoYXIqIGVuY29kZWRUeXBlKQogewogICAgIHN0YXRpYyBMb2NrIGhhbmRlckZvclN0
cnVjdFRhZ0xvY2s7Ci0gICAgTG9ja2VyIGxvY2tIb2xkZXIgeyBoYW5kZXJGb3JTdHJ1Y3RUYWdM
b2NrIH07CisgICAgTG9ja0hvbGRlciBsb2NrSG9sZGVyKCZoYW5kZXJGb3JTdHJ1Y3RUYWdMb2Nr
KTsKIAogICAgIHN0YXRpYyBTdHJ1Y3RIYW5kbGVycyogc3RydWN0SGFuZGxlcnMgPSBjcmVhdGVT
dHJ1Y3RIYW5kbGVyTWFwKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvdGVzdHMvdGVzdGFwaS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rl
c3RhcGkuY3BwCmluZGV4IDVkNzUzMzUwMDU0MjY4ODJhNjY3ZmU1MTdlNGUyNjQxZjEzM2VlZGUu
LjhjMTlmNTNkNGI2NDQ5YjI2YjE3OTIyNmUyNDVmZTlmNzYzZDgwNzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmNwcApAQCAtNzY1LDcgKzc2NSw3IEBAIGlu
dCB0ZXN0Q0FQSVZpYUNwcChjb25zdCBjaGFyKiBmaWx0ZXIpCiAgICAgICAgICAgICAgICAgZm9y
ICg7OykgewogICAgICAgICAgICAgICAgICAgICBSZWZQdHI8U2hhcmVkVGFzazx2b2lkKFRlc3RB
UEkmKT4+IHRhc2s7CiAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIExvY2tlciBsb2NrZXIgeyBsb2NrIH07CisgICAgICAgICAgICAgICAgICAgICAgICBMb2Nr
SG9sZGVyIGxvY2tlcihsb2NrKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0YXNrcy5p
c0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAgICAgICAgICAgICB0YXNrID0gdGFza3MudGFrZUZpcnN0KCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3BwCmluZGV4IDE5MWQxODI5MzVhYzFhNmU2ZjBi
NTBiN2EzMTNiZDk4ODdhZGE0MjAuLmIxYjI2ODNlYmIxMzY0YmRlOWM3NmRmYjQ4OWNjMGU3ZWJk
YWQ0MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1h
c20uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3Bw
CkBAIC0yNzI0LDcgKzI3MjQsNyBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIpCiAgICAg
ICAgICAgICAgICAgICAgIGZvciAoOzspIHsKICAgICAgICAgICAgICAgICAgICAgICAgIFJlZlB0
cjxTaGFyZWRUYXNrPHZvaWQoKT4+IHRhc2s7CiAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IGxvY2sgfTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihsb2NrKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAodGFza3MuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFz
ayA9IHRhc2tzLnRha2VGaXJzdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL2Fpci90ZXN0YWlyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvdGVzdGFp
ci5jcHAKaW5kZXggYmU0ZGJmOTM4ODQ3ZTU4MTA5NTZkNmVmZTEzODFjMDE0MTRlZGM2MS4uZTVj
ODYyMmQ0NTI0YTJmOGEyNWNlMWQ0NWVjMmU1Yzg2ZTdjODYwMyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci90ZXN0YWlyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL3Rlc3RhaXIuY3BwCkBAIC0xMjksNyArMTI5LDcgQEAgdm9pZCBsb2FkQ29u
c3RhbnRJbXBsKEJhc2ljQmxvY2sqIGJsb2NrLCBUIHZhbHVlLCBCMzo6QWlyOjpPcGNvZGUgbW92
ZSwgVG1wIHRtcCwKICAgICBzdGF0aWMgTG9jayBsb2NrOwogICAgIHN0YXRpYyBTdGRNYXA8VCwg
VCo+KiBtYXA7IC8vIEknbSBub3QgbWVzc2luZyB3aXRoIEhhc2hNYXAncyBwcm9ibGVtcyB3aXRo
IGludGVnZXJzLgogCi0gICAgTG9ja2VyIGxvY2tlciB7IGxvY2sgfTsKKyAgICBMb2NrSG9sZGVy
IGxvY2tlcihsb2NrKTsKICAgICBpZiAoIW1hcCkKICAgICAgICAgbWFwID0gbmV3IFN0ZE1hcDxU
LCBUKj4oKTsKIApAQCAtMjQ2OSw3ICsyNDY5LDcgQEAgdm9pZCBydW4oY29uc3QgY2hhciogZmls
dGVyKQogICAgICAgICAgICAgICAgICAgICBmb3IgKDs7KSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBSZWZQdHI8U2hhcmVkVGFzazx2b2lkKCk+PiB0YXNrOwogICAgICAgICAgICAgICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBsb2Nr
IH07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobG9jayk7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRhc2tzLmlzRW1wdHkoKSkKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRhc2sgPSB0YXNrcy50YWtlRmlyc3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy90ZXN0YjNfMS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVz
dGIzXzEuY3BwCmluZGV4IDJiZTg4MzI4NjFmZDBkNWE2NTAzMzI5ZDNhM2U3YjljZGYzYjdiMDEu
LmU1MmU2ZGFiYzMzNDNkYmExNDE2MjQ1NGU4ZmNhODY3NDZmM2MwNzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNfMS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL3Rlc3RiM18xLmNwcApAQCAtODY3LDcgKzg2Nyw3IEBAIHZvaWQgcnVuKGNvbnN0
IGNoYXIqIGZpbHRlcikKICAgICAgICAgICAgICAgICAgICAgZm9yICg7OykgewogICAgICAgICAg
ICAgICAgICAgICAgICAgUmVmUHRyPFNoYXJlZFRhc2s8dm9pZCgpPj4gdGFzazsKICAgICAgICAg
ICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2NrZXIgbG9j
a2VyIHsgbG9jayB9OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvY2tIb2xkZXIgbG9j
a2VyKGxvY2spOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0YXNrcy5pc0VtcHR5
KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0YXNrID0gdGFza3MudGFrZUZpcnN0KCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGlyZWN0RXZhbENvZGVDYWNoZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGlyZWN0RXZhbENvZGVDYWNoZS5jcHAKaW5k
ZXggMGE4OGE2YzhhNTBlYmM5ODA5ZmU2NzI4MmM1YjcwMjBkN2FiMGU1ZS4uOTRjYmMyM2E2Njkw
MWQ1MWE4OWM4N2RjZDRmMGNkMTNkYzliZTVkZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0RpcmVjdEV2YWxDb2RlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9EaXJlY3RFdmFsQ29kZUNhY2hlLmNwcApAQCAtMzUsMjAgKzM1
LDIwIEBAIHZvaWQgRGlyZWN0RXZhbENvZGVDYWNoZTo6c2V0U2xvdyhKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0NlbGwqIG93bmVyLCBjCiAgICAgaWYgKCFldmFsRXhlY3V0YWJsZS0+
YWxsb3dEaXJlY3RFdmFsQ2FjaGUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTG9ja2VyIGxv
Y2tlciB7IG1fbG9jayB9OworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgbV9j
YWNoZU1hcC5zZXQoQ2FjaGVLZXkoZXZhbFNvdXJjZSwgY2FsbFNpdGVJbmRleCksIFdyaXRlQmFy
cmllcjxEaXJlY3RFdmFsRXhlY3V0YWJsZT4oZ2xvYmFsT2JqZWN0LT52bSgpLCBvd25lciwgZXZh
bEV4ZWN1dGFibGUpKTsKIH0KIAogdm9pZCBEaXJlY3RFdmFsQ29kZUNhY2hlOjpjbGVhcigpCiB7
Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1f
bG9jayk7CiAgICAgbV9jYWNoZU1hcC5jbGVhcigpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBW
aXNpdG9yPgogdm9pZCBEaXJlY3RFdmFsQ29kZUNhY2hlOjp2aXNpdEFnZ3JlZ2F0ZUltcGwoVmlz
aXRvciYgdmlzaXRvcikKIHsKLSAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CisgICAgTG9j
a0hvbGRlciBsb2NrZXIobV9sb2NrKTsKICAgICBFdmFsQ2FjaGVNYXA6Oml0ZXJhdG9yIGVuZCA9
IG1fY2FjaGVNYXAuZW5kKCk7CiAgICAgZm9yIChFdmFsQ2FjaGVNYXA6Oml0ZXJhdG9yIHB0ciA9
IG1fY2FjaGVNYXAuYmVnaW4oKTsgcHRyICE9IGVuZDsgKytwdHIpCiAgICAgICAgIHZpc2l0b3Iu
YXBwZW5kKHB0ci0+dmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1N1cGVyU2FtcGxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
U3VwZXJTYW1wbGVyLmNwcAppbmRleCBhNDI2NDBmMjg2MzI2OTcyNzlkYzQ5YTNjZTUxZWZjMzll
YzFhMzkwLi5jM2E1YzQyYWQyMWY2OTQ5MTdhNGI1MDMzZjUzNjY2OGEyM2Y5YjlkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3VwZXJTYW1wbGVyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3VwZXJTYW1wbGVyLmNwcApAQCAtNTMs
NyArNTMsNyBAQCB2b2lkIGluaXRpYWxpemVTdXBlclNhbXBsZXIoKQogICAgICAgICAgICAgZm9y
ICg7OykgewogICAgICAgICAgICAgICAgIGZvciAoaW50IG1zID0gMDsgbXMgPCBwcmludGluZ1Bl
cmlvZDsgbXMgKz0gc2xlZXBRdWFudHVtKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChnX3N1
cGVyU2FtcGxlckVuYWJsZWQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIExvY2tlciBsb2Nr
ZXIgeyBsb2NrIH07CisgICAgICAgICAgICAgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihs
b2NrKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnX3N1cGVyU2FtcGxlckNvdW50KQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluKys7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBlbHNlCkBAIC03MCw3ICs3MCw3IEBAIHZvaWQgaW5pdGlhbGl6ZVN1cGVyU2FtcGxlcigpCiAK
IHZvaWQgcmVzZXRTdXBlclNhbXBsZXJTdGF0ZSgpCiB7Ci0gICAgTG9ja2VyIGxvY2tlciB7IGxv
Y2sgfTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihsb2NrKTsKICAgICBpbiA9IDA7CiAgICAgb3V0
ID0gMDsKIH0KQEAgLTgwLDcgKzgwLDcgQEAgdm9pZCBwcmludFN1cGVyU2FtcGxlclN0YXRlKCkK
ICAgICBpZiAoIU9wdGlvbnM6OnVzZVN1cGVyU2FtcGxlcigpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBMb2NrZXIgbG9ja2VyIHsgbG9jayB9OworICAgIExvY2tIb2xkZXIgbG9ja2VyKGxvY2sp
OwogICAgIGRvdWJsZSBwZXJjZW50YWdlID0gMTAwLjAgKiBpbiAvIChpbiArIG91dCk7CiAgICAg
aWYgKHBlcmNlbnRhZ2UgIT0gcGVyY2VudGFnZSkKICAgICAgICAgcGVyY2VudGFnZSA9IDAuMDsK
QEAgLTg5LDEzICs4OSwxMyBAQCB2b2lkIHByaW50U3VwZXJTYW1wbGVyU3RhdGUoKQogCiB2b2lk
IGVuYWJsZVN1cGVyU2FtcGxlcigpCiB7Ci0gICAgTG9ja2VyIGxvY2tlciB7IGxvY2sgfTsKKyAg
ICBMb2NrSG9sZGVyIGxvY2tlcihsb2NrKTsKICAgICBnX3N1cGVyU2FtcGxlckVuYWJsZWQgPSB0
cnVlOwogfQogCiB2b2lkIGRpc2FibGVTdXBlclNhbXBsZXIoKQogewotICAgIExvY2tlciBsb2Nr
ZXIgeyBsb2NrIH07CisgICAgTG9ja0hvbGRlciBsb2NrZXIobG9jayk7CiAgICAgZ19zdXBlclNh
bXBsZXJFbmFibGVkID0gZmFsc2U7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ29tbW9uRGF0YS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NvbW1vbkRhdGEuY3BwCmluZGV4IDI3ZWRmMWM4MWE1MzgzOGYxYjhiNmNlOTAwM2VjNDZkNzM0
OWI1OTAuLmZmYjA4MzVlNjEzNDdkODQzNGFkMzQzZWNjOWRjNTU5MTg2YTRhMjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uRGF0YS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb25EYXRhLmNwcApAQCAtNjEsNyArNjEsNyBA
QCBib29sIENvbW1vbkRhdGE6OmludmFsaWRhdGUoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICBpZiAoVU5MSUtFTFkoaGFzVk1UcmFwc0JyZWFrcG9pbnRzSW5zdGFsbGVkKSkgewotICAg
ICAgICBMb2NrZXIgbG9ja2VyIHsgcGNDb2RlQmxvY2tNYXBMb2NrIH07CisgICAgICAgIExvY2tI
b2xkZXIgbG9ja2VyKHBjQ29kZUJsb2NrTWFwTG9jayk7CiAgICAgICAgIGF1dG8mIG1hcCA9IHBj
Q29kZUJsb2NrTWFwKGxvY2tlcik7CiAgICAgICAgIGZvciAoYXV0byYganVtcFJlcGxhY2VtZW50
IDogbV9qdW1wUmVwbGFjZW1lbnRzKQogICAgICAgICAgICAgbWFwLnJlbW92ZShqdW1wUmVwbGFj
ZW1lbnQuZGF0YUxvY2F0aW9uKCkpOwpAQCAtNzcsNyArNzcsNyBAQCBib29sIENvbW1vbkRhdGE6
OmludmFsaWRhdGUoKQogQ29tbW9uRGF0YTo6fkNvbW1vbkRhdGEoKQogewogICAgIGlmIChVTkxJ
S0VMWShoYXNWTVRyYXBzQnJlYWtwb2ludHNJbnN0YWxsZWQpKSB7Ci0gICAgICAgIExvY2tlciBs
b2NrZXIgeyBwY0NvZGVCbG9ja01hcExvY2sgfTsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIo
cGNDb2RlQmxvY2tNYXBMb2NrKTsKICAgICAgICAgYXV0byYgbWFwID0gcGNDb2RlQmxvY2tNYXAo
bG9ja2VyKTsKICAgICAgICAgZm9yIChhdXRvJiBqdW1wUmVwbGFjZW1lbnQgOiBtX2p1bXBSZXBs
YWNlbWVudHMpCiAgICAgICAgICAgICBtYXAucmVtb3ZlKGp1bXBSZXBsYWNlbWVudC5kYXRhTG9j
YXRpb24oKSk7CkBAIC04Niw3ICs4Niw3IEBAIENvbW1vbkRhdGE6On5Db21tb25EYXRhKCkKIAog
dm9pZCBDb21tb25EYXRhOjppbnN0YWxsVk1UcmFwQnJlYWtwb2ludHMoQ29kZUJsb2NrKiBvd25l
cikKIHsKLSAgICBMb2NrZXIgbG9ja2VyIHsgcGNDb2RlQmxvY2tNYXBMb2NrIH07CisgICAgTG9j
a0hvbGRlciBsb2NrZXIocGNDb2RlQmxvY2tNYXBMb2NrKTsKICAgICBpZiAoIWlzU3RpbGxWYWxp
ZCB8fCBoYXNWTVRyYXBzQnJlYWtwb2ludHNJbnN0YWxsZWQpCiAgICAgICAgIHJldHVybjsKICAg
ICBoYXNWTVRyYXBzQnJlYWtwb2ludHNJbnN0YWxsZWQgPSB0cnVlOwpAQCAtMTEyLDcgKzExMiw3
IEBAIHZvaWQgQ29tbW9uRGF0YTo6aW5zdGFsbFZNVHJhcEJyZWFrcG9pbnRzKENvZGVCbG9jayog
b3duZXIpCiBDb2RlQmxvY2sqIGNvZGVCbG9ja0ZvclZNVHJhcFBDKHZvaWQqIHBjKQogewogICAg
IEFTU0VSVChpc0pJVFBDKHBjKSk7Ci0gICAgTG9ja2VyIGxvY2tlciB7IHBjQ29kZUJsb2NrTWFw
TG9jayB9OworICAgIExvY2tIb2xkZXIgbG9ja2VyKHBjQ29kZUJsb2NrTWFwTG9jayk7CiAgICAg
YXV0byYgbWFwID0gcGNDb2RlQmxvY2tNYXAobG9ja2VyKTsKICAgICBhdXRvIHJlc3VsdCA9IG1h
cC5maW5kKHBjKTsKICAgICBpZiAocmVzdWx0ID09IG1hcC5lbmQoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1BsYW4uY3BwCmluZGV4IDc5YWE2YzZiZTgyOGNmY2IyOTg2MGFmYWM2YTE4ZTgz
MmE2MDQ1ZGYuLjM4NmY1ZmI4ZmQ0ODI3NmFlNjU5ZGI2YThjMmM2ZDI2NDAwMTY3NTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcApAQCAtNzY0LDcgKzc2NCw3IEBAIHZvaWQg
UGxhbjo6Y2FuY2VsKCkKIAogdm9pZCBQbGFuOjpjbGVhbk11c3RIYW5kbGVWYWx1ZXNJZk5lY2Vz
c2FyeSgpCiB7Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1fbXVzdEhhbmRsZVZhbHVlQ2xlYW5pbmdM
b2NrIH07CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9tdXN0SGFuZGxlVmFsdWVDbGVhbmluZ0xv
Y2spOwogCiAgICAgaWYgKCFtX211c3RIYW5kbGVWYWx1ZXNNYXlJbmNsdWRlR2FyYmFnZSkKICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdX
b3JrbGlzdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dvcmtsaXN0LmNwcApp
bmRleCA0ZDIyOGNmZTg3YWQ5ODE5MzZjMDdjMDlkNDFiNzI3NTE1NTk0YTkxLi5hOTk2YzU1Y2Rk
YzI1Y2NjMTZiMmFiYTQ1NmJiYzc0NzYzYTcwMjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1dvcmtsaXN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1dvcmtsaXN0LmNwcApAQCAtODQsNyArODQsNyBAQCBwcml2YXRlOgogICAgICAgICAK
ICAgICAgICAgfldvcmtTY29wZSgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIExvY2tlciBsb2Nr
ZXIgeyAqbV90aHJlYWQubV93b3JrbGlzdC5tX2xvY2sgfTsKKyAgICAgICAgICAgIExvY2tIb2xk
ZXIgbG9ja2VyKCptX3RocmVhZC5tX3dvcmtsaXN0Lm1fbG9jayk7CiAgICAgICAgICAgICBtX3Ro
cmVhZC5tX3BsYW4gPSBudWxscHRyOwogICAgICAgICAgICAgbV90aHJlYWQubV93b3JrbGlzdC5t
X251bWJlck9mQWN0aXZlVGhyZWFkcy0tOwogICAgICAgICB9CkBAIC05Nyw5ICs5Nyw5IEBAIHBy
aXZhdGU6CiAgICAgewogICAgICAgICBXb3JrU2NvcGUgd29ya1Njb3BlKCp0aGlzKTsKIAotICAg
ICAgICBMb2NrZXIgbG9ja2VyIHsgbV9kYXRhLm1fcmlnaHRUb1J1biB9OworICAgICAgICBMb2Nr
SG9sZGVyIGxvY2tlcihtX2RhdGEubV9yaWdodFRvUnVuKTsKICAgICAgICAgewotICAgICAgICAg
ICAgTG9ja2VyIGxvY2tlciB7ICptX3dvcmtsaXN0Lm1fbG9jayB9OworICAgICAgICAgICAgTG9j
a0hvbGRlciBsb2NrZXIoKm1fd29ya2xpc3QubV9sb2NrKTsKICAgICAgICAgICAgIGlmIChtX3Bs
YW4tPnN0YWdlKCkgPT0gUGxhbjo6Q2FuY2VsbGVkKQogICAgICAgICAgICAgICAgIHJldHVybiBX
b3JrUmVzdWx0OjpDb250aW51ZTsKICAgICAgICAgICAgIG1fcGxhbi0+bm90aWZ5Q29tcGlsaW5n
KCk7CkBAIC0xMjEsNyArMTIxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgICAgICAKICAg
ICAgICAgewotICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7ICptX3dvcmtsaXN0Lm1fbG9jayB9
OworICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fd29ya2xpc3QubV9sb2NrKTsKICAg
ICAgICAgICAgIGlmIChtX3BsYW4tPnN0YWdlKCkgPT0gUGxhbjo6Q2FuY2VsbGVkKQogICAgICAg
ICAgICAgICAgIHJldHVybiBXb3JrUmVzdWx0OjpDb250aW51ZTsKICAgICAgICAgICAgIApAQCAt
MTg4LDcgKzE4OCw3IEBAIFdvcmtsaXN0OjpXb3JrbGlzdChDU3RyaW5nJiYgdGllck5hbWUpCiBX
b3JrbGlzdDo6fldvcmtsaXN0KCkKIHsKICAgICB7Ci0gICAgICAgIExvY2tlciBsb2NrZXIgeyAq
bV9sb2NrIH07CisgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKCptX2xvY2spOwogICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSBtX3RocmVhZHMuc2l6ZSgpOyBpLS07KQogICAgICAgICAgICAgbV9x
dWV1ZS5hcHBlbmQobnVsbHB0cik7IC8vIFVzZSBudWxsIHBsYW4gdG8gaW5kaWNhdGUgdGhhdCB3
ZSB3YW50IHRoZSB0aHJlYWQgdG8gdGVybWluYXRlLgogICAgICAgICBtX3BsYW5FbnF1ZXVlZC0+
bm90aWZ5QWxsKGxvY2tlcik7CkBAIC0yMDEsNyArMjAxLDcgQEAgV29ya2xpc3Q6On5Xb3JrbGlz
dCgpCiB2b2lkIFdvcmtsaXN0OjpmaW5pc2hDcmVhdGlvbih1bnNpZ25lZCBudW1iZXJPZlRocmVh
ZHMsIGludCByZWxhdGl2ZVByaW9yaXR5KQogewogICAgIFJFTEVBU0VfQVNTRVJUKG51bWJlck9m
VGhyZWFkcyk7Ci0gICAgTG9ja2VyIGxvY2tlciB7ICptX2xvY2sgfTsKKyAgICBMb2NrSG9sZGVy
IGxvY2tlcigqbV9sb2NrKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBudW1iZXJPZlRocmVhZHM7
IGktLTspIHsKICAgICAgICAgY3JlYXRlTmV3VGhyZWFkKGxvY2tlciwgcmVsYXRpdmVQcmlvcml0
eSk7CiAgICAgfQpAQCAtMjIzLDcgKzIyMyw3IEBAIFJlZjxXb3JrbGlzdD4gV29ya2xpc3Q6OmNy
ZWF0ZShDU3RyaW5nJiYgdGllck5hbWUsIHVuc2lnbmVkIG51bWJlck9mVGhyZWFkcywgaW50CiAK
IGJvb2wgV29ya2xpc3Q6OmlzQWN0aXZlRm9yVk0oVk0mIHZtKSBjb25zdAogewotICAgIExvY2tl
ciBsb2NrZXIgeyAqbV9sb2NrIH07CisgICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fbG9jayk7CiAg
ICAgUGxhbk1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9wbGFucy5lbmQoKTsKICAgICBmb3Ig
KFBsYW5NYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBtX3BsYW5zLmJlZ2luKCk7IGl0ZXIgIT0g
ZW5kOyArK2l0ZXIpIHsKICAgICAgICAgaWYgKGl0ZXItPnZhbHVlLT52bSgpID09ICZ2bSkKQEAg
LTIzNCw3ICsyMzQsNyBAQCBib29sIFdvcmtsaXN0Ojppc0FjdGl2ZUZvclZNKFZNJiB2bSkgY29u
c3QKIAogdm9pZCBXb3JrbGlzdDo6ZW5xdWV1ZShSZWY8UGxhbj4mJiBwbGFuKQogewotICAgIExv
Y2tlciBsb2NrZXIgeyAqbV9sb2NrIH07CisgICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fbG9jayk7
CiAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VDb21waWxhdGlvblF1ZXVlKCkpIHsKICAgICAgICAg
ZHVtcChsb2NrZXIsIFdURjo6ZGF0YUZpbGUoKSk7CiAgICAgICAgIGRhdGFMb2coIjogRW5xdWV1
ZWluZyBwbGFuIHRvIG9wdGltaXplICIsIHBsYW4tPmtleSgpLCAiXG4iKTsKQEAgLTI0Nyw3ICsy
NDcsNyBAQCB2b2lkIFdvcmtsaXN0OjplbnF1ZXVlKFJlZjxQbGFuPiYmIHBsYW4pCiAKIFdvcmts
aXN0OjpTdGF0ZSBXb3JrbGlzdDo6Y29tcGlsYXRpb25TdGF0ZShDb21waWxhdGlvbktleSBrZXkp
CiB7Ci0gICAgTG9ja2VyIGxvY2tlciB7ICptX2xvY2sgfTsKKyAgICBMb2NrSG9sZGVyIGxvY2tl
cigqbV9sb2NrKTsKICAgICBQbGFuTWFwOjppdGVyYXRvciBpdGVyID0gbV9wbGFucy5maW5kKGtl
eSk7CiAgICAgaWYgKGl0ZXIgPT0gbV9wbGFucy5lbmQoKSkKICAgICAgICAgcmV0dXJuIE5vdEtu
b3duOwpAQCAtMjcwLDcgKzI3MCw3IEBAIHZvaWQgV29ya2xpc3Q6OndhaXRVbnRpbEFsbFBsYW5z
Rm9yVk1BcmVSZWFkeShWTSYgdm0pCiAgICAgLy8gQWZ0ZXIgd2UgcmVsZWFzZSB0aGlzIGxvY2ss
IHdlIGtub3cgdGhhdCBhbHRob3VnaCBvdGhlciBWTXMgbWF5IHN0aWxsCiAgICAgLy8gYmUgYWRk
aW5nIHBsYW5zLCBvdXIgVk0gd2lsbCBub3QgYmUuCiAgICAgCi0gICAgTG9ja2VyIGxvY2tlciB7
ICptX2xvY2sgfTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2NrKTsKICAgICAKICAgICBp
ZiAoT3B0aW9uczo6dmVyYm9zZUNvbXBpbGF0aW9uUXVldWUoKSkgewogICAgICAgICBkdW1wKGxv
Y2tlciwgV1RGOjpkYXRhRmlsZSgpKTsKQEAgLTI5OSw3ICsyOTksNyBAQCB2b2lkIFdvcmtsaXN0
Ojp3YWl0VW50aWxBbGxQbGFuc0ZvclZNQXJlUmVhZHkoVk0mIHZtKQogdm9pZCBXb3JrbGlzdDo6
cmVtb3ZlQWxsUmVhZHlQbGFuc0ZvclZNKFZNJiB2bSwgVmVjdG9yPFJlZlB0cjxQbGFuPiwgOD4m
IG15UmVhZHlQbGFucykKIHsKICAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7Ci0gICAgTG9j
a2VyIGxvY2tlciB7ICptX2xvY2sgfTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2NrKTsK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fcmVhZHlQbGFucy5zaXplKCk7ICsraSkgewog
ICAgICAgICBSZWZQdHI8UGxhbj4gcGxhbiA9IG1fcmVhZHlQbGFuc1tpXTsKICAgICAgICAgaWYg
KHBsYW4tPnZtKCkgIT0gJnZtKQpAQCAtMzQzLDcgKzM0Myw3IEBAIFdvcmtsaXN0OjpTdGF0ZSBX
b3JrbGlzdDo6Y29tcGxldGVBbGxSZWFkeVBsYW5zRm9yVk0oVk0mIHZtLCBDb21waWxhdGlvbktl
eSByZXF1CiAgICAgfQogICAgIAogICAgIGlmICghIXJlcXVlc3RlZEtleSAmJiByZXN1bHRpbmdT
dGF0ZSA9PSBOb3RLbm93bikgewotICAgICAgICBMb2NrZXIgbG9ja2VyIHsgKm1fbG9jayB9Owor
ICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2NrKTsKICAgICAgICAgaWYgKG1fcGxhbnMu
Y29udGFpbnMocmVxdWVzdGVkS2V5KSkKICAgICAgICAgICAgIHJlc3VsdGluZ1N0YXRlID0gQ29t
cGlsaW5nOwogICAgIH0KQEAgLTM3Nyw3ICszNzcsNyBAQCB2b2lkIFdvcmtsaXN0Ojp2aXNpdFdl
YWtSZWZlcmVuY2VzKFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgVk0qIHZtID0gJnZpc2l0b3Iu
aGVhcCgpLT52bSgpOwogICAgIHsKLSAgICAgICAgTG9ja2VyIGxvY2tlciB7ICptX2xvY2sgfTsK
KyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fbG9jayk7CiAgICAgICAgIGZvciAoUGxhbk1h
cDo6aXRlcmF0b3IgaXRlciA9IG1fcGxhbnMuYmVnaW4oKTsgaXRlciAhPSBtX3BsYW5zLmVuZCgp
OyArK2l0ZXIpIHsKICAgICAgICAgICAgIFBsYW4qIHBsYW4gPSBpdGVyLT52YWx1ZS5nZXQoKTsK
ICAgICAgICAgICAgIGlmIChwbGFuLT52bSgpICE9IHZtKQpAQCAtNDAzLDcgKzQwMyw3IEBAIHRl
bXBsYXRlIHZvaWQgV29ya2xpc3Q6OnZpc2l0V2Vha1JlZmVyZW5jZXMoU2xvdFZpc2l0b3ImKTsK
IHZvaWQgV29ya2xpc3Q6OnJlbW92ZURlYWRQbGFucyhWTSYgdm0pCiB7CiAgICAgewotICAgICAg
ICBMb2NrZXIgbG9ja2VyIHsgKm1fbG9jayB9OworICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcigq
bV9sb2NrKTsKICAgICAgICAgSGFzaFNldDxDb21waWxhdGlvbktleT4gZGVhZFBsYW5LZXlzOwog
ICAgICAgICBmb3IgKFBsYW5NYXA6Oml0ZXJhdG9yIGl0ZXIgPSBtX3BsYW5zLmJlZ2luKCk7IGl0
ZXIgIT0gbV9wbGFucy5lbmQoKTsgKytpdGVyKSB7CiAgICAgICAgICAgICBQbGFuKiBwbGFuID0g
aXRlci0+dmFsdWUuZ2V0KCk7CkBAIC00NTIsNyArNDUyLDcgQEAgdm9pZCBXb3JrbGlzdDo6cmVt
b3ZlRGVhZFBsYW5zKFZNJiB2bSkKIAogdm9pZCBXb3JrbGlzdDo6cmVtb3ZlTm9uQ29tcGlsaW5n
UGxhbnNGb3JWTShWTSYgdm0pCiB7Ci0gICAgTG9ja2VyIGxvY2tlciB7ICptX2xvY2sgfTsKKyAg
ICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2NrKTsKICAgICBIYXNoU2V0PENvbXBpbGF0aW9uS2V5
PiBkZWFkUGxhbktleXM7CiAgICAgVmVjdG9yPFJlZlB0cjxQbGFuPj4gZGVhZFBsYW5zOwogICAg
IGZvciAoYXV0byYgZW50cnkgOiBtX3BsYW5zKSB7CkBAIC00ODMsMTMgKzQ4MywxMyBAQCB2b2lk
IFdvcmtsaXN0OjpyZW1vdmVOb25Db21waWxpbmdQbGFuc0ZvclZNKFZNJiB2bSkKIAogc2l6ZV90
IFdvcmtsaXN0OjpxdWV1ZUxlbmd0aCgpCiB7Ci0gICAgTG9ja2VyIGxvY2tlciB7ICptX2xvY2sg
fTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2NrKTsKICAgICByZXR1cm4gbV9xdWV1ZS5z
aXplKCk7CiB9CiAKIHZvaWQgV29ya2xpc3Q6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QK
IHsKLSAgICBMb2NrZXIgbG9ja2VyIHsgKm1fbG9jayB9OworICAgIExvY2tIb2xkZXIgbG9ja2Vy
KCptX2xvY2spOwogICAgIGR1bXAobG9ja2VyLCBvdXQpOwogfQogCkBAIC01MDMsMTEgKzUwMywx
MSBAQCB2b2lkIFdvcmtsaXN0OjpkdW1wKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgUHJpbnRTdHJl
YW0mIG91dCkgY29uc3QKIAogdW5zaWduZWQgV29ya2xpc3Q6OnNldE51bWJlck9mVGhyZWFkcyh1
bnNpZ25lZCBudW1iZXJPZlRocmVhZHMsIGludCByZWxhdGl2ZVByaW9yaXR5KQogewotICAgIExv
Y2tlciBsb2NrZXIgeyBtX3N1c3BlbnNpb25Mb2NrIH07CisgICAgTG9ja0hvbGRlciBsb2NrZXIo
bV9zdXNwZW5zaW9uTG9jayk7CiAgICAgYXV0byBjdXJyZW50TnVtYmVyT2ZUaHJlYWRzID0gbV90
aHJlYWRzLnNpemUoKTsKICAgICBpZiAobnVtYmVyT2ZUaHJlYWRzIDwgY3VycmVudE51bWJlck9m
VGhyZWFkcykgewogICAgICAgICB7Ci0gICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgKm1fbG9j
ayB9OworICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fbG9jayk7CiAgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSBjdXJyZW50TnVtYmVyT2ZUaHJlYWRzOyBpLS0gPiBudW1iZXJP
ZlRocmVhZHM7KSB7CiAgICAgICAgICAgICAgICAgaWYgKG1fdGhyZWFkc1tpXS0+bV90aHJlYWQt
Pmhhc1VuZGVybHlpbmdUaHJlYWQobG9ja2VyKSkgewogICAgICAgICAgICAgICAgICAgICBtX3F1
ZXVlLmFwcGVuZChudWxscHRyKTsKQEAgLTUxOCw3ICs1MTgsNyBAQCB1bnNpZ25lZCBXb3JrbGlz
dDo6c2V0TnVtYmVyT2ZUaHJlYWRzKHVuc2lnbmVkIG51bWJlck9mVGhyZWFkcywgaW50IHJlbGF0
aXZlUHJpbwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBjdXJyZW50TnVtYmVyT2ZUaHJlYWRz
OyBpLS0gPiBudW1iZXJPZlRocmVhZHM7KSB7CiAgICAgICAgICAgICBib29sIGlzU3RvcHBlZCA9
IGZhbHNlOwogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyAq
bV9sb2NrIH07CisgICAgICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fbG9jayk7CiAg
ICAgICAgICAgICAgICAgaXNTdG9wcGVkID0gbV90aHJlYWRzW2ldLT5tX3RocmVhZC0+dHJ5U3Rv
cChsb2NrZXIpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCFpc1N0b3BwZWQpCkBA
IC01MjgsNyArNTI4LDcgQEAgdW5zaWduZWQgV29ya2xpc3Q6OnNldE51bWJlck9mVGhyZWFkcyh1
bnNpZ25lZCBudW1iZXJPZlRocmVhZHMsIGludCByZWxhdGl2ZVByaW8KICAgICAgICAgbV90aHJl
YWRzLnNocmlua1RvRml0KCk7CiAgICAgICAgIEFTU0VSVChtX251bWJlck9mQWN0aXZlVGhyZWFk
cyA8PSBudW1iZXJPZlRocmVhZHMpOwogICAgIH0gZWxzZSBpZiAobnVtYmVyT2ZUaHJlYWRzID4g
Y3VycmVudE51bWJlck9mVGhyZWFkcykgewotICAgICAgICBMb2NrZXIgbG9ja2VyIHsgKm1fbG9j
ayB9OworICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2NrKTsKICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gY3VycmVudE51bWJlck9mVGhyZWFkczsgaSA8IG51bWJlck9mVGhyZWFkczsg
aSsrKQogICAgICAgICAgICAgY3JlYXRlTmV3VGhyZWFkKGxvY2tlciwgcmVsYXRpdmVQcmlvcml0
eSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3Jr
bGlzdElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV29ya2xpc3RJbmxp
bmVzLmgKaW5kZXggY2MyNjZmNmYzNjU2MWFjNmVjNjQyNTI1MWFkYThkNmY0MmYyMDBjOC4uZTVm
OTBiNDM4YzdiOTU4YmRlMmZiYjBhYmU2NzUwZGZiYWZjYTA5MiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1dvcmtsaXN0SW5saW5lcy5oCkBAIC00NCw3ICs0NCw3IEBAIHZv
aWQgaXRlcmF0ZUNvZGVCbG9ja3NGb3JHQyhWaXNpdG9yJiB2aXNpdG9yLCBWTSYgdm0sIGNvbnN0
IEZ1bmMmIGZ1bmMpCiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jLCB0eXBlbmFtZSBWaXNpdG9yPgog
dm9pZCBXb3JrbGlzdDo6aXRlcmF0ZUNvZGVCbG9ja3NGb3JHQyhWaXNpdG9yJiB2aXNpdG9yLCBW
TSYgdm0sIGNvbnN0IEZ1bmMmIGZ1bmMpCiB7Ci0gICAgTG9ja2VyIGxvY2tlciB7ICptX2xvY2sg
fTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2NrKTsKICAgICBmb3IgKFBsYW5NYXA6Oml0
ZXJhdG9yIGl0ZXIgPSBtX3BsYW5zLmJlZ2luKCk7IGl0ZXIgIT0gbV9wbGFucy5lbmQoKTsgKytp
dGVyKSB7CiAgICAgICAgIFBsYW4qIHBsYW4gPSBpdGVyLT52YWx1ZS5nZXQoKTsKICAgICAgICAg
aWYgKHBsYW4tPnZtKCkgIT0gJnZtKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Rpc2Fzc2VtYmxlci9EaXNhc3NlbWJsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rp
c2Fzc2VtYmxlci9EaXNhc3NlbWJsZXIuY3BwCmluZGV4IDU1YzA1YzgxMjI5ZjM1OTM2ZmYxMzQ3
Y2RkZjQ1NGYzYWZiNmFjOTAuLmY0ZjFjMzdjYzM3YWE2YjUxNzk1YmJlNDkyYTk1NjQ0ZGVhM2Rl
OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvRGlzYXNz
ZW1ibGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0Rpc2Fz
c2VtYmxlci5jcHAKQEAgLTc3LDE0ICs3NywxNCBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBl
bnF1ZXVlKHN0ZDo6dW5pcXVlX3B0cjxEaXNhc3NlbWJseVRhc2s+IHRhc2spCiAgICAgewotICAg
ICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CisgICAgICAgIExvY2tIb2xkZXIgbG9ja2Vy
KG1fbG9jayk7CiAgICAgICAgIG1fcXVldWUuYXBwZW5kKFdURk1vdmUodGFzaykpOwogICAgICAg
ICBtX2NvbmRpdGlvbi5ub3RpZnlBbGwoKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCB3YWl0VW50
aWxFbXB0eSgpCiAgICAgewotICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CisgICAg
ICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgICAgIHdoaWxlICghbV9xdWV1ZS5p
c0VtcHR5KCkgfHwgbV93b3JraW5nKQogICAgICAgICAgICAgbV9jb25kaXRpb24ud2FpdChtX2xv
Y2spOwogICAgIH0KQEAgLTk1LDcgKzk1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgZm9yICg7Oykg
ewogICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPERpc2Fzc2VtYmx5VGFzaz4gdGFzazsKICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07Cisg
ICAgICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKICAgICAgICAgICAgICAg
ICBtX3dvcmtpbmcgPSBmYWxzZTsKICAgICAgICAgICAgICAgICBtX2NvbmRpdGlvbi5ub3RpZnlB
bGwoKTsKICAgICAgICAgICAgICAgICB3aGlsZSAobV9xdWV1ZS5pc0VtcHR5KCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0RpcmVjdG9yeS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0RpcmVjdG9yeS5jcHAKaW5kZXggNmMyNDJiODYz
YmNlY2Q3M2U4MzBhNjNhMzVmZTIwMDBkMGEyMzc5OS4uYjFlOTdmYzY1YTRlY2MwZWMzMjVkNzgz
OTQ0MTZiMjlkODVlNmI2NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
QmxvY2tEaXJlY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2Nr
RGlyZWN0b3J5LmNwcApAQCAtMTM0LDcgKzEzNCw3IEBAIHZvaWQgQmxvY2tEaXJlY3Rvcnk6OmFk
ZEJsb2NrKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKQogICAgICAgICAgICAgQVNTRVJUKG1f
Yml0cy5udW1CaXRzKCkgPT0gb2xkQ2FwYWNpdHkpOwogICAgICAgICAgICAgQVNTRVJUKG1fYmxv
Y2tzLmNhcGFjaXR5KCkgPiBvbGRDYXBhY2l0eSk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAg
IExvY2tlciBsb2NrZXIgeyBtX2JpdHZlY3RvckxvY2sgfTsKKyAgICAgICAgICAgIExvY2tIb2xk
ZXIgbG9ja2VyKG1fYml0dmVjdG9yTG9jayk7CiAgICAgICAgICAgICBzdWJzcGFjZSgpLT5kaWRS
ZXNpemVCaXRzKG1fYmxvY2tzLmNhcGFjaXR5KCkpOwogICAgICAgICAgICAgbV9iaXRzLnJlc2l6
ZShtX2Jsb2Nrcy5jYXBhY2l0eSgpKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0SW5saW5lcy5oCmluZGV4IDU3NTQ1MDgyYTIwYmQzOWY5
MzVkZDIzNDFiY2Y3ZWUxNzg3YzI3MzguLjA1ODEwOGY3M2E0ZmE4MDY5YmZmZDU5NGJlYzA3YzY5
ZWYzYzFiYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvZGVCbG9j
a1NldElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxvY2tT
ZXRJbmxpbmVzLmgKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBDb2RlQmxvY2tTZXQ6Oml0ZXJhdGVW
aWFTdWJzcGFjZXMoVk0mIHZtLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogdGVtcGxhdGU8dHlw
ZW5hbWUgRnVuY3Rvcj4KIHZvaWQgQ29kZUJsb2NrU2V0OjppdGVyYXRlQ3VycmVudGx5RXhlY3V0
aW5nKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1fbG9j
ayB9OworICAgIExvY2tIb2xkZXIgbG9ja2VyKCZtX2xvY2spOwogICAgIGZvciAoQ29kZUJsb2Nr
KiBjb2RlQmxvY2sgOiBtX2N1cnJlbnRseUV4ZWN1dGluZykKICAgICAgICAgZnVuY3Rvcihjb2Rl
QmxvY2spOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29uc2Vy
dmF0aXZlUm9vdHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29uc2VydmF0aXZl
Um9vdHMuY3BwCmluZGV4IDUxODM4NzBmNDZkMjQ4MjNkNTc5OTczZjgzYzFlOWNmNWFmZTA2NzIu
LjRmMDlhNjNlZTA1OGQ0YTE4YmEzYzYxMTVlYWJjNjAzZTZmMTJlMjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbnNlcnZhdGl2ZVJvb3RzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db25zZXJ2YXRpdmVSb290cy5jcHAKQEAgLTE0Miw3ICsx
NDIsNyBAQCBwcml2YXRlOgogdm9pZCBDb25zZXJ2YXRpdmVSb290czo6YWRkKAogICAgIHZvaWQq
IGJlZ2luLCB2b2lkKiBlbmQsIEpJVFN0dWJSb3V0aW5lU2V0JiBqaXRTdHViUm91dGluZXMsIENv
ZGVCbG9ja1NldCYgY29kZUJsb2NrcykKIHsKLSAgICBMb2NrZXIgbG9ja2VyIHsgY29kZUJsb2Nr
cy5nZXRMb2NrKCkgfTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihjb2RlQmxvY2tzLmdldExvY2so
KSk7CiAgICAgQ29tcG9zaXRlTWFya0hvb2sgbWFya0hvb2soaml0U3R1YlJvdXRpbmVzLCBjb2Rl
QmxvY2tzLCBsb2NrZXIpOwogICAgIGdlbmVyaWNBZGRTcGFuKGJlZ2luLCBlbmQsIG1hcmtIb29r
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKaW5kZXggYzFjZjg2NDI3NzA1MWJh
MDIxMDU4Y2Y1MTRhZDM3MmZiYTc0ODI3Yi4uNjFkMmIyZDJiMTAxYzM4MjI1OWQ2OThkYmUyZjc1
YzE2YzMxOTFmMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKQEAgLTMzNSw3ICsz
MzUsNyBAQCBIZWFwOjpIZWFwKFZNJiB2bSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgc2l6ZV90
IG1lbW9yeUFib3ZlQ3JpdGljYWxUaHJlc2hvbGQgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHN0YXRp
Y19jYXN0PGRvdWJsZT4obV9yYW1TaXplKSAqICgxLjAgLSBPcHRpb25zOjpjcml0aWNhbEdDTWVt
b3J5VGhyZXNob2xkKCkpKTsKICAgICBtX21heEVkZW5TaXplV2hlbkNyaXRpY2FsID0gbWVtb3J5
QWJvdmVDcml0aWNhbFRocmVzaG9sZCAvIDQ7CiAKLSAgICBMb2NrZXIgbG9ja2VyIHsgKm1fdGhy
ZWFkTG9jayB9OworICAgIExvY2tIb2xkZXIgbG9ja2VyKCptX3RocmVhZExvY2spOwogICAgIG1f
dGhyZWFkID0gYWRvcHRSZWYobmV3IEhlYXBUaHJlYWQobG9ja2VyLCAqdGhpcykpOwogfQogCkBA
IC00MDEsNyArNDAxLDcgQEAgdm9pZCBIZWFwOjpsYXN0Q2hhbmNlVG9GaW5hbGl6ZSgpCiAgICAg
CiAgICAgaWYgKG1fY29sbGVjdENvbnRpbnVvdXNseVRocmVhZCkgewogICAgICAgICB7Ci0gICAg
ICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9jb2xsZWN0Q29udGludW91c2x5TG9jayB9OworICAg
ICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9jb2xsZWN0Q29udGludW91c2x5TG9jayk7CiAg
ICAgICAgICAgICBtX3Nob3VsZFN0b3BDb2xsZWN0aW5nQ29udGludW91c2x5ID0gdHJ1ZTsKICAg
ICAgICAgICAgIG1fY29sbGVjdENvbnRpbnVvdXNseUNvbmRpdGlvbi5ub3RpZnlPbmUoKTsKICAg
ICAgICAgfQpAQCAtNDQzLDcgKzQ0Myw3IEBAIHZvaWQgSGVhcDo6bGFzdENoYW5jZVRvRmluYWxp
emUoKQogICAgIC8vIENhcmVmdWxseSBicmluZyB0aGUgdGhyZWFkIGRvd24uCiAgICAgYm9vbCBz
dG9wcGVkID0gZmFsc2U7CiAgICAgewotICAgICAgICBMb2NrZXIgbG9ja2VyIHsgKm1fdGhyZWFk
TG9jayB9OworICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV90aHJlYWRMb2NrKTsKICAgICAg
ICAgc3RvcHBlZCA9IG1fdGhyZWFkLT50cnlTdG9wKGxvY2tlcik7CiAgICAgICAgIG1fdGhyZWFk
U2hvdWxkU3RvcCA9IHRydWU7CiAgICAgICAgIGlmICghc3RvcHBlZCkKQEAgLTExMTEsNyArMTEx
MSw3IEBAIHZvaWQgSGVhcDo6Y29sbGVjdEFzeW5jKEdDUmVxdWVzdCByZXF1ZXN0KQogCiAgICAg
Ym9vbCBhbHJlYWR5UmVxdWVzdGVkID0gZmFsc2U7CiAgICAgewotICAgICAgICBMb2NrZXIgbG9j
a2VyIHsgKm1fdGhyZWFkTG9jayB9OworICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV90aHJl
YWRMb2NrKTsKICAgICAgICAgZm9yIChjb25zdCBHQ1JlcXVlc3QmIHByZXZpb3VzUmVxdWVzdCA6
IG1fcmVxdWVzdHMpIHsKICAgICAgICAgICAgIGlmIChyZXF1ZXN0LnN1YnN1bWVkQnkocHJldmlv
dXNSZXF1ZXN0KSkgewogICAgICAgICAgICAgICAgIGFscmVhZHlSZXF1ZXN0ZWQgPSB0cnVlOwpA
QCAtMTI1MCw3ICsxMjUwLDcgQEAgTkVWRVJfSU5MSU5FIGJvb2wgSGVhcDo6cnVuQmVnaW5QaGFz
ZShHQ0NvbmR1Y3RvciBjb25uKQogICAgIG1fY3VycmVudEdDU3RhcnRUaW1lID0gTW9ub3Rvbmlj
VGltZTo6bm93KCk7CiAgICAgCiAgICAgewotICAgICAgICBMb2NrZXIgbG9ja2VyIHsgKm1fdGhy
ZWFkTG9jayB9OworICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV90aHJlYWRMb2NrKTsKICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fcmVxdWVzdHMuaXNFbXB0eSgpKTsKICAgICAgICAgbV9j
dXJyZW50UmVxdWVzdCA9IG1fcmVxdWVzdHMuZmlyc3QoKTsKICAgICB9CkBAIC0xMzAxLDcgKzEz
MDEsNyBAQCBORVZFUl9JTkxJTkUgYm9vbCBIZWFwOjpydW5CZWdpblBoYXNlKEdDQ29uZHVjdG9y
IGNvbm4pCiAgICAgICAgIFt0aGlzXSAoKSB7CiAgICAgICAgICAgICBTbG90VmlzaXRvciogdmlz
aXRvcjsKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9w
YXJhbGxlbFNsb3RWaXNpdG9yTG9jayB9OworICAgICAgICAgICAgICAgIExvY2tIb2xkZXIgbG9j
a2VyKG1fcGFyYWxsZWxTbG90VmlzaXRvckxvY2spOwogICAgICAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUX1dJVEhfTUVTU0FHRSghbV9hdmFpbGFibGVQYXJhbGxlbFNsb3RWaXNpdG9ycy5pc0Vt
cHR5KCksICJQYXJhbGxlbCBTbG90VmlzaXRvcnMgYXJlIGFsbG9jYXRlZCBhcHJpb3JpIik7CiAg
ICAgICAgICAgICAgICAgdmlzaXRvciA9IG1fYXZhaWxhYmxlUGFyYWxsZWxTbG90VmlzaXRvcnMu
dGFrZUxhc3QoKTsKICAgICAgICAgICAgIH0KQEAgLTEzMTQsNyArMTMxNCw3IEBAIE5FVkVSX0lO
TElORSBib29sIEhlYXA6OnJ1bkJlZ2luUGhhc2UoR0NDb25kdWN0b3IgY29ubikKICAgICAgICAg
ICAgIH0KIAogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBt
X3BhcmFsbGVsU2xvdFZpc2l0b3JMb2NrIH07CisgICAgICAgICAgICAgICAgTG9ja0hvbGRlciBs
b2NrZXIobV9wYXJhbGxlbFNsb3RWaXNpdG9yTG9jayk7CiAgICAgICAgICAgICAgICAgbV9hdmFp
bGFibGVQYXJhbGxlbFNsb3RWaXNpdG9ycy5hcHBlbmQodmlzaXRvcik7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0pOwpAQCAtMTg3Miw3ICsxODcyLDcgQEAgdm9pZCBIZWFwOjp3YWl0Rm9yQ29s
bGVjdG9yKGNvbnN0IEZ1bmMmIGZ1bmMpCiAgICAgZm9yICg7OykgewogICAgICAgICBib29sIGRv
bmU7CiAgICAgICAgIHsKLSAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyAqbV90aHJlYWRMb2Nr
IH07CisgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV90aHJlYWRMb2NrKTsKICAgICAg
ICAgICAgIGRvbmUgPSBmdW5jKGxvY2tlcik7CiAgICAgICAgICAgICBpZiAoIWRvbmUpIHsKICAg
ICAgICAgICAgICAgICBzZXRNdXRhdG9yV2FpdGluZygpOwpAQCAtMjEyOCw3ICsyMTI4LDcgQEAg
SGVhcDo6VGlja2V0IEhlYXA6OnJlcXVlc3RDb2xsZWN0aW9uKEdDUmVxdWVzdCByZXF1ZXN0KQog
ICAgIEFTU0VSVCh2bSgpLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOwogICAgIFJF
TEVBU0VfQVNTRVJUKHZtKCkuYXRvbVN0cmluZ1RhYmxlKCkgPT0gVGhyZWFkOjpjdXJyZW50KCku
YXRvbVN0cmluZ1RhYmxlKCkpOwogICAgIAotICAgIExvY2tlciBsb2NrZXIgeyAqbV90aHJlYWRM
b2NrIH07CisgICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fdGhyZWFkTG9jayk7CiAgICAgLy8gV2Ug
bWF5IGJlIGFibGUgdG8gc3RlYWwgdGhlIGNvbm4uIFRoYXQgb25seSB3b3JrcyBpZiB0aGUgY29s
bGVjdG9yIGlzIGRlZmluaXRlbHkgbm90IHJ1bm5pbmcKICAgICAvLyByaWdodCBub3cuIFRoaXMg
aXMgYW4gb3B0aW1pemF0aW9uIHRoYXQgcHJldmVudHMgdGhlIGNvbGxlY3RvciB0aHJlYWQgZnJv
bSBldmVyIHN0YXJ0aW5nIGluIG1vc3QKICAgICAvLyBjYXNlcy4KQEAgLTI5NjgsOSArMjk2OCw5
IEBAIHZvaWQgSGVhcDo6bm90aWZ5SXNTYWZlVG9Db2xsZWN0KCkKICAgICAgICAgICAgICAgICBN
b25vdG9uaWNUaW1lIGluaXRpYWxUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCk7CiAgICAgICAg
ICAgICAgICAgU2Vjb25kcyBwZXJpb2QgPSBTZWNvbmRzOjpmcm9tTWlsbGlzZWNvbmRzKE9wdGlv
bnM6OmNvbGxlY3RDb250aW51b3VzbHlQZXJpb2RNUygpKTsKICAgICAgICAgICAgICAgICB3aGls
ZSAodHJ1ZSkgewotICAgICAgICAgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9jb2xsZWN0
Q29udGludW91c2x5TG9jayB9OworICAgICAgICAgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tl
cihtX2NvbGxlY3RDb250aW51b3VzbHlMb2NrKTsKICAgICAgICAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7ICptX3RocmVhZExvY2sgfTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKCptX3RocmVhZExvY2spOwog
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1fcmVxdWVzdHMuaXNFbXB0eSgpKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbV9yZXF1ZXN0cy5hcHBlbmQoV1RGOjpudWxsb3B0KTsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2xhc3RHcmFudGVkVGlja2V0Kys7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5jcHAKaW5kZXggZjlhMTgzMjNjNzI4
MzM0NzE5OGQ5Njg4OWRjNTlmNzQzNzhmMjA3Mi4uNmYwNGMzNDc2ZTg3OWVjNGE0NzlmOGI2ZWE4
OTFmMmYzOWYzZDdiMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xv
dFZpc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9y
LmNwcApAQCAtNTc4LDcgKzU3OCw3IEBAIHNpemVfdCBTbG90VmlzaXRvcjo6cGVyZm9ybUluY3Jl
bWVudE9mRHJhaW5pbmcoc2l6ZV90IGJ5dGVzUmVxdWVzdGVkKQogCiBib29sIFNsb3RWaXNpdG9y
OjpkaWRSZWFjaFRlcm1pbmF0aW9uKCkKIHsKLSAgICBMb2NrZXIgbG9ja2VyIHsgbV9oZWFwLm1f
bWFya2luZ011dGV4IH07CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9oZWFwLm1fbWFya2luZ011
dGV4KTsKICAgICByZXR1cm4gZGlkUmVhY2hUZXJtaW5hdGlvbihsb2NrZXIpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JT
Y3JpcHRQcm9maWxlckFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQuY3BwCmluZGV4IGIyZDk5ZmJhODky
MjZkNGMyNDBjZGFiOGY1YjA1NzU3ODFiZThkZTEuLjdlYjUxYWYzMGZkYTgwMmNhODFhOGIxMGVj
ZDdlNmViZWUyMjExN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdl
bnQuY3BwCkBAIC03OCw3ICs3OCw3IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IElu
c3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQ6OnN0YXJ0VHJhY2tpbmcoT3B0aW9uCiAgICAgICAg
IFZNJiB2bSA9IG1fZW52aXJvbm1lbnQuZGVidWdnZXIoKS52bSgpOwogICAgICAgICBTYW1wbGlu
Z1Byb2ZpbGVyJiBzYW1wbGluZ1Byb2ZpbGVyID0gdm0uZW5zdXJlU2FtcGxpbmdQcm9maWxlcihz
dG9wd2F0Y2gpOwogCi0gICAgICAgIExvY2tlciBsb2NrZXIgeyBzYW1wbGluZ1Byb2ZpbGVyLmdl
dExvY2soKSB9OworICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihzYW1wbGluZ1Byb2ZpbGVyLmdl
dExvY2soKSk7CiAgICAgICAgIHNhbXBsaW5nUHJvZmlsZXIuc2V0U3RvcFdhdGNoKGxvY2tlciwg
c3RvcHdhdGNoKTsKICAgICAgICAgc2FtcGxpbmdQcm9maWxlci5ub3RpY2VDdXJyZW50VGhyZWFk
QXNKU0NFeGVjdXRpb25UaHJlYWQobG9ja2VyKTsKICAgICAgICAgc2FtcGxpbmdQcm9maWxlci5z
dGFydChsb2NrZXIpOwpAQCAtMjE3LDcgKzIxNyw3IEBAIHZvaWQgSW5zcGVjdG9yU2NyaXB0UHJv
ZmlsZXJBZ2VudDo6dHJhY2tpbmdDb21wbGV0ZSgpCiAgICAgICAgIFNhbXBsaW5nUHJvZmlsZXIq
IHNhbXBsaW5nUHJvZmlsZXIgPSB2bS5zYW1wbGluZ1Byb2ZpbGVyKCk7CiAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKHNhbXBsaW5nUHJvZmlsZXIpOwogCi0gICAgICAgIExvY2tlciBsb2NrZXIgeyBz
YW1wbGluZ1Byb2ZpbGVyLT5nZXRMb2NrKCkgfTsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIo
c2FtcGxpbmdQcm9maWxlci0+Z2V0TG9jaygpKTsKICAgICAgICAgc2FtcGxpbmdQcm9maWxlci0+
cGF1c2UobG9ja2VyKTsKICAgICAgICAgVmVjdG9yPFNhbXBsaW5nUHJvZmlsZXI6OlN0YWNrVHJh
Y2U+IHN0YWNrVHJhY2VzID0gc2FtcGxpbmdQcm9maWxlci0+cmVsZWFzZVN0YWNrVHJhY2VzKGxv
Y2tlcik7CiAgICAgICAgIGxvY2tlci51bmxvY2tFYXJseSgpOwpAQCAtMjQ0LDcgKzI0NCw3IEBA
IHZvaWQgSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudDo6c3RvcFNhbXBsaW5nV2hlbkRpc2Nv
bm5lY3RpbmcoKQogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKICAgICBTYW1wbGluZ1Byb2Zp
bGVyKiBzYW1wbGluZ1Byb2ZpbGVyID0gdm0uc2FtcGxpbmdQcm9maWxlcigpOwogICAgIFJFTEVB
U0VfQVNTRVJUKHNhbXBsaW5nUHJvZmlsZXIpOwotICAgIExvY2tlciBsb2NrZXIgeyBzYW1wbGlu
Z1Byb2ZpbGVyLT5nZXRMb2NrKCkgfTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihzYW1wbGluZ1By
b2ZpbGVyLT5nZXRMb2NrKCkpOwogICAgIHNhbXBsaW5nUHJvZmlsZXItPnBhdXNlKGxvY2tlcik7
CiAgICAgc2FtcGxpbmdQcm9maWxlci0+Y2xlYXJEYXRhKGxvY2tlcik7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUNvbm5lY3Rpb25U
b1RhcmdldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1v
dGVDb25uZWN0aW9uVG9UYXJnZXQuY3BwCmluZGV4IGUwNmZiZDk5OTViYWVhNmQ1ODcwYTNjYmJi
NTI2ODczZWE5NmM2YTEuLjg5OTlmMzA3N2I3MzIwNTE4NWMxMDRhMGI2YjMyYjRmMjkwODdjYjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90
ZUNvbm5lY3Rpb25Ub1RhcmdldC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9yZW1vdGUvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0LmNwcApAQCAtNDYsNyArNDYsNyBA
QCBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6On5SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQoKQog
CiBib29sIFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6c2V0dXAoYm9vbCBpc0F1dG9tYXRpY0lu
c3BlY3Rpb24sIGJvb2wgYXV0b21hdGljYWxseVBhdXNlKQogewotICAgIExvY2tlciBsb2NrZXIg
eyBtX3RhcmdldE11dGV4IH07CisgICAgTG9ja0hvbGRlciBsb2NrKG1fdGFyZ2V0TXV0ZXgpOwog
ICAgIGlmICghbV90YXJnZXQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNzYsNyArNzYs
NyBAQCB2b2lkIFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6c2VuZE1lc3NhZ2VUb1RhcmdldChj
b25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgUmVtb3RlQ29udHJvbGxhYmxlVGFyZ2V0KiB0
YXJnZXQgPSBudWxscHRyOwogICAgIHsKLSAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fdGFyZ2V0
TXV0ZXggfTsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1fdGFyZ2V0TXV0ZXgpOwogICAgICAg
ICBpZiAoIW1fdGFyZ2V0KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB0YXJnZXQgPSBt
X3RhcmdldDsKQEAgLTg4LDcgKzg4LDcgQEAgdm9pZCBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6
OnNlbmRNZXNzYWdlVG9UYXJnZXQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogdm9pZCBSZW1vdGVD
b25uZWN0aW9uVG9UYXJnZXQ6OmNsb3NlKCkKIHsKICAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlz
cGF0Y2goW3RoaXMsIHByb3RlY3RUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKLSAgICAgICAgTG9j
a2VyIGxvY2tlciB7IG1fdGFyZ2V0TXV0ZXggfTsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1f
dGFyZ2V0TXV0ZXgpOwogICAgICAgICBpZiAoIW1fdGFyZ2V0KQogICAgICAgICAgICAgcmV0dXJu
OwogCkBAIC0xMDUsNyArMTA1LDcgQEAgdm9pZCBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6OmNs
b3NlKCkKIAogdm9pZCBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6OnRhcmdldENsb3NlZCgpCiB7
Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1fdGFyZ2V0TXV0ZXggfTsKKyAgICBMb2NrSG9sZGVyIGxv
Y2sobV90YXJnZXRNdXRleCk7CiAgICAgbV90YXJnZXQgPSBudWxscHRyOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0
b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5z
cGVjdG9yLmNwcAppbmRleCBkMWQ5NTJjOTQ0NTk2N2FhOGExMWYxMjQzODJhYmEyYTJiOWU3Mzll
Li4zZjE5ZjBiOWU4YTU5NDNlZDk5Zjg0OTQ2NGViYTdhNGY2MDAzNDUwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3Bl
Y3Rvci5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnJlZ2lzdGVy
VGFyZ2V0KFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldCogdGFyZ2V0KQogewogICAgIEFTU0VSVF9B
UkcodGFyZ2V0LCB0YXJnZXQpOwogCi0gICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKKyAg
ICBMb2NrSG9sZGVyIGxvY2sobV9tdXRleCk7CiAKICAgICBhdXRvIHRhcmdldElkZW50aWZpZXIg
PSBuZXh0QXZhaWxhYmxlVGFyZ2V0SWRlbnRpZmllcigpOwogICAgIHRhcmdldC0+c2V0VGFyZ2V0
SWRlbnRpZmllcih0YXJnZXRJZGVudGlmaWVyKTsKQEAgLTgzLDcgKzgzLDcgQEAgdm9pZCBSZW1v
dGVJbnNwZWN0b3I6OnVucmVnaXN0ZXJUYXJnZXQoUmVtb3RlQ29udHJvbGxhYmxlVGFyZ2V0KiB0
YXJnZXQpCiB7CiAgICAgQVNTRVJUX0FSRyh0YXJnZXQsIHRhcmdldCk7CiAKLSAgICBMb2NrZXIg
bG9ja2VyIHsgbV9tdXRleCB9OworICAgIExvY2tIb2xkZXIgbG9jayhtX211dGV4KTsKIAogICAg
IGF1dG8gdGFyZ2V0SWRlbnRpZmllciA9IHRhcmdldC0+dGFyZ2V0SWRlbnRpZmllcigpOwogICAg
IGlmICghdGFyZ2V0SWRlbnRpZmllcikKQEAgLTEwNSw3ICsxMDUsNyBAQCB2b2lkIFJlbW90ZUlu
c3BlY3Rvcjo6dXBkYXRlVGFyZ2V0KFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldCogdGFyZ2V0KQog
ewogICAgIEFTU0VSVF9BUkcodGFyZ2V0LCB0YXJnZXQpOwogCi0gICAgTG9ja2VyIGxvY2tlciB7
IG1fbXV0ZXggfTsKKyAgICBMb2NrSG9sZGVyIGxvY2sobV9tdXRleCk7CiAKICAgICBpZiAoIXVw
ZGF0ZVRhcmdldE1hcCh0YXJnZXQpKQogICAgICAgICByZXR1cm47CkBAIC0xNDYsNyArMTQ2LDcg
QEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnVwZGF0ZUNsaWVudENhcGFiaWxpdGllcygpCiB7CiAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4
IH07CisgICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOwogCiAgICAgaWYgKCFtX2NsaWVudCkK
ICAgICAgICAgbV9jbGllbnRDYXBhYmlsaXRpZXMgPSBXVEY6Om51bGxvcHQ7CkBAIC0xNjYsNyAr
MTY2LDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnNldENsaWVudChSZW1vdGVJbnNwZWN0b3I6
OkNsaWVudCogY2xpZW50KQogICAgIEFTU0VSVCgobV9jbGllbnQgJiYgIWNsaWVudCkgfHwgKCFt
X2NsaWVudCAmJiBjbGllbnQpKTsKIAogICAgIHsKLSAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1f
bXV0ZXggfTsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOwogICAgICAgICBtX2Ns
aWVudCA9IGNsaWVudDsKICAgICB9CiAKQEAgLTE3Nyw3ICsxNzcsNyBAQCB2b2lkIFJlbW90ZUlu
c3BlY3Rvcjo6c2V0Q2xpZW50KFJlbW90ZUluc3BlY3Rvcjo6Q2xpZW50KiBjbGllbnQpCiAKIHZv
aWQgUmVtb3RlSW5zcGVjdG9yOjpzZXR1cEZhaWxlZChUYXJnZXRJRCB0YXJnZXRJZGVudGlmaWVy
KQogewotICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CisgICAgTG9ja0hvbGRlciBsb2Nr
KG1fbXV0ZXgpOwogCiAgICAgbV90YXJnZXRDb25uZWN0aW9uTWFwLnJlbW92ZSh0YXJnZXRJZGVu
dGlmaWVyKTsKIApAQCAtMTkxLDcgKzE5MSw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZXR1
cEZhaWxlZChUYXJnZXRJRCB0YXJnZXRJZGVudGlmaWVyKQogCiB2b2lkIFJlbW90ZUluc3BlY3Rv
cjo6c2V0dXBDb21wbGV0ZWQoVGFyZ2V0SUQgdGFyZ2V0SWRlbnRpZmllcikKIHsKLSAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9tdXRleCB9OworICAgIExvY2tIb2xkZXIgbG9jayhtX211dGV4KTsKIAog
ICAgIGlmICh0YXJnZXRJZGVudGlmaWVyID09IG1fYXV0b21hdGljSW5zcGVjdGlvbkNhbmRpZGF0
ZVRhcmdldElkZW50aWZpZXIpCiAgICAgICAgIG1fYXV0b21hdGljSW5zcGVjdGlvblBhdXNlZCA9
IGZhbHNlOwpAQCAtMjExLDcgKzIxMSw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpjbGllbnRD
YXBhYmlsaXRpZXNEaWRDaGFuZ2UoKQogCiB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c3RvcCgpCiB7
Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKKyAgICBMb2NrSG9sZGVyIGxvY2sobV9t
dXRleCk7CiAKICAgICBzdG9wSW50ZXJuYWwoU3RvcFNvdXJjZTo6QVBJKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUNv
bm5lY3Rpb25Ub1RhcmdldENvY29hLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9yZW1vdGUvY29jb2EvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Q29jb2EubW0KaW5kZXggOGIy
YTdmYTM4YWEwNjhlNDUzNDNmMzRhNDcyY2YxYWUwNTBhZTA4Ni4uZDAwY2ZiYzg4YTA2ZTI4NDRi
ZDViMTI0N2JlODkwNTczMjE5MzAzNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Q29jb2EubW0K
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3Rl
Q29ubmVjdGlvblRvVGFyZ2V0Q29jb2EubW0KQEAgLTU0LDcgKzU0LDcgQEAgc3RhdGljIHZvaWQg
UmVtb3RlVGFyZ2V0SGFuZGxlUnVuU291cmNlR2xvYmFsKHZvaWQqKQogCiAgICAgUmVtb3RlVGFy
Z2V0UXVldWUgcXVldWVDb3B5OwogICAgIHsKLSAgICAgICAgTG9ja2VyIGxvY2tlciB7IHJ3aVF1
ZXVlTXV0ZXggfTsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrKHJ3aVF1ZXVlTXV0ZXgpOwogICAg
ICAgICBzdGQ6OnN3YXAocXVldWVDb3B5LCAqcndpUXVldWUpOwogICAgIH0KIApAQCAtNjgsNyAr
NjgsNyBAQCBzdGF0aWMgdm9pZCBSZW1vdGVUYXJnZXRRdWV1ZVRhc2tPbkdsb2JhbFF1ZXVlKEZ1
bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCiAgICAgQVNTRVJUKHJ3aVF1ZXVlKTsKIAogICAg
IHsKLSAgICAgICAgTG9ja2VyIGxvY2tlciB7IHJ3aVF1ZXVlTXV0ZXggfTsKKyAgICAgICAgTG9j
a0hvbGRlciBsb2NrKHJ3aVF1ZXVlTXV0ZXgpOwogICAgICAgICByd2lRdWV1ZS0+YXBwZW5kKFdU
Rk1vdmUoZnVuY3Rpb24pKTsKICAgICB9CiAKQEAgLTk5LDcgKzk5LDcgQEAgc3RhdGljIHZvaWQg
UmVtb3RlVGFyZ2V0SGFuZGxlUnVuU291cmNlV2l0aEluZm8odm9pZCogaW5mbykKIAogICAgIFJl
bW90ZVRhcmdldFF1ZXVlIHF1ZXVlQ29weTsKICAgICB7Ci0gICAgICAgIExvY2tlciBsb2NrZXIg
eyBjb25uZWN0aW9uVG9UYXJnZXQtPnF1ZXVlTXV0ZXgoKSB9OworICAgICAgICBMb2NrSG9sZGVy
IGxvY2soY29ubmVjdGlvblRvVGFyZ2V0LT5xdWV1ZU11dGV4KCkpOwogICAgICAgICBxdWV1ZUNv
cHkgPSBjb25uZWN0aW9uVG9UYXJnZXQtPnRha2VRdWV1ZSgpOwogICAgIH0KIApAQCAtMTU4LDcg
KzE1OCw3IEBAIHZvaWQgUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0OjpkaXNwYXRjaEFzeW5jT25U
YXJnZXQoRnVuY3Rpb248dm9pZCAoKT4mJiBjYWxsYmFjCiAKIGJvb2wgUmVtb3RlQ29ubmVjdGlv
blRvVGFyZ2V0OjpzZXR1cChib29sIGlzQXV0b21hdGljSW5zcGVjdGlvbiwgYm9vbCBhdXRvbWF0
aWNhbGx5UGF1c2UpCiB7Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1fdGFyZ2V0TXV0ZXggfTsKKyAg
ICBMb2NrSG9sZGVyIGxvY2sobV90YXJnZXRNdXRleCk7CiAKICAgICBpZiAoIW1fdGFyZ2V0KQog
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNjYsNyArMTY2LDcgQEAgYm9vbCBSZW1vdGVDb25u
ZWN0aW9uVG9UYXJnZXQ6OnNldHVwKGJvb2wgaXNBdXRvbWF0aWNJbnNwZWN0aW9uLCBib29sIGF1
dG9tYXRpY2EKICAgICBhdXRvIHRhcmdldElkZW50aWZpZXIgPSB0aGlzLT50YXJnZXRJZGVudGlm
aWVyKCkudmFsdWVPcigwKTsKIAogICAgIGRpc3BhdGNoQXN5bmNPblRhcmdldChbdGhpcywgdGFy
Z2V0SWRlbnRpZmllciwgaXNBdXRvbWF0aWNJbnNwZWN0aW9uLCBhdXRvbWF0aWNhbGx5UGF1c2Us
IHN0cm9uZ1RoaXMgPSBtYWtlUmVmKCp0aGlzKV0oKSB7Ci0gICAgICAgIExvY2tlciBsb2NrZXIg
eyBtX3RhcmdldE11dGV4IH07CisgICAgICAgIExvY2tIb2xkZXIgbG9jayhtX3RhcmdldE11dGV4
KTsKIAogICAgICAgICBpZiAoIW1fdGFyZ2V0IHx8ICFtX3RhcmdldC0+cmVtb3RlQ29udHJvbEFs
bG93ZWQoKSkgewogICAgICAgICAgICAgUmVtb3RlSW5zcGVjdG9yOjpzaW5nbGV0b24oKS5zZXR1
cEZhaWxlZCh0YXJnZXRJZGVudGlmaWVyKTsKQEAgLTE5MSw3ICsxOTEsNyBAQCBib29sIFJlbW90
ZUNvbm5lY3Rpb25Ub1RhcmdldDo6c2V0dXAoYm9vbCBpc0F1dG9tYXRpY0luc3BlY3Rpb24sIGJv
b2wgYXV0b21hdGljYQogCiB2b2lkIFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6dGFyZ2V0Q2xv
c2VkKCkKIHsKLSAgICBMb2NrZXIgbG9ja2VyIHsgbV90YXJnZXRNdXRleCB9OworICAgIExvY2tI
b2xkZXIgbG9jayhtX3RhcmdldE11dGV4KTsKIAogICAgIG1fdGFyZ2V0ID0gbnVsbHB0cjsKIH0K
QEAgLTIwMSw3ICsyMDEsNyBAQCB2b2lkIFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6Y2xvc2Uo
KQogICAgIGF1dG8gdGFyZ2V0SWRlbnRpZmllciA9IG1fdGFyZ2V0ID8gbV90YXJnZXQtPnRhcmdl
dElkZW50aWZpZXIoKSA6IDA7CiAgICAgCiAgICAgZGlzcGF0Y2hBc3luY09uVGFyZ2V0KFt0aGlz
LCB0YXJnZXRJZGVudGlmaWVyLCBzdHJvbmdUaGlzID0gbWFrZVJlZigqdGhpcyldKCkgewotICAg
ICAgICBMb2NrZXIgbG9ja2VyIHsgbV90YXJnZXRNdXRleCB9OworICAgICAgICBMb2NrSG9sZGVy
IGxvY2sobV90YXJnZXRNdXRleCk7CiAgICAgICAgIGlmIChtX3RhcmdldCkgewogICAgICAgICAg
ICAgaWYgKG1fY29ubmVjdGVkKQogICAgICAgICAgICAgICAgIG1fdGFyZ2V0LT5kaXNjb25uZWN0
KCp0aGlzKTsKQEAgLTIxOCw3ICsyMTgsNyBAQCB2b2lkIFJlbW90ZUNvbm5lY3Rpb25Ub1Rhcmdl
dDo6c2VuZE1lc3NhZ2VUb1RhcmdldChOU1N0cmluZyAqbWVzc2FnZSkKICAgICBkaXNwYXRjaEFz
eW5jT25UYXJnZXQoW3RoaXMsIHN0cm9uZ01lc3NhZ2UgPSByZXRhaW5QdHIobWVzc2FnZSksIHN0
cm9uZ1RoaXMgPSBtYWtlUmVmKCp0aGlzKV0oKSB7CiAgICAgICAgIFJlbW90ZUNvbnRyb2xsYWJs
ZVRhcmdldCogdGFyZ2V0ID0gbnVsbHB0cjsKICAgICAgICAgewotICAgICAgICAgICAgTG9ja2Vy
IGxvY2tlciB7IG1fdGFyZ2V0TXV0ZXggfTsKKyAgICAgICAgICAgIExvY2tIb2xkZXIgbG9jayht
X3RhcmdldE11dGV4KTsKICAgICAgICAgICAgIGlmICghbV90YXJnZXQpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICAgdGFyZ2V0ID0gbV90YXJnZXQ7CkBAIC0yNzQsNyArMjc0
LDcgQEAgdm9pZCBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6OnF1ZXVlVGFza09uUHJpdmF0ZVJ1
bkxvb3AoRnVuY3Rpb248dm9pZCAoKT4mJiBmdW4KICAgICBBU1NFUlQobV9ydW5Mb29wKTsKIAog
ICAgIHsKLSAgICAgICAgTG9ja2VyIGxvY2sgeyBtX3F1ZXVlTXV0ZXggfTsKKyAgICAgICAgTG9j
a0hvbGRlciBsb2NrKG1fcXVldWVNdXRleCk7CiAgICAgICAgIG1fcXVldWUuYXBwZW5kKFdURk1v
dmUoZnVuY3Rpb24pKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUluc3BlY3RvckNvY29hLm1tIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yQ29j
b2EubW0KaW5kZXggNzVmMzk0MzdiZTViOWZjOTA1YjBkMmFjNmYwNmQ0MzBmOGJiNjU5MS4uZDFi
ZjcxM2NiYzk2YzQ2Y2Y5YjA2N2MzYzlmZmU5ZTUzZjgxYjZkZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yQ29j
b2EubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2Ev
UmVtb3RlSW5zcGVjdG9yQ29jb2EubW0KQEAgLTEyOSw3ICsxMjksNyBAQCB2b2lkIFJlbW90ZUlu
c3BlY3Rvcjo6dXBkYXRlQXV0b21hdGljSW5zcGVjdGlvbkNhbmRpZGF0ZShSZW1vdGVJbnNwZWN0
aW9uVGFyZ2V0KgogewogICAgIEFTU0VSVF9BUkcodGFyZ2V0LCB0YXJnZXQpOwogICAgIHsKLSAg
ICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKKyAgICAgICAgTG9ja0hvbGRlciBsb2Nr
KG1fbXV0ZXgpOwogCiAgICAgICAgIGlmICghdXBkYXRlVGFyZ2V0TWFwKHRhcmdldCkpCiAgICAg
ICAgICAgICByZXR1cm47CkBAIC0xNjMsNyArMTYzLDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6
OnVwZGF0ZUF1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGUoUmVtb3RlSW5zcGVjdGlvblRhcmdl
dCoKICAgICAgICAgLy8gSW4gY2FzZSBkZWJ1Z2dlcnMgZmFpbCB0byByZXNwb25kLCBvciB3ZSBj
YW5ub3QgY29ubmVjdCB0byB3ZWJpbnNwZWN0b3JkLCBhdXRvbWF0aWNhbGx5IGNvbnRpbnVlIGFm
dGVyIGEgc2hvcnQgcGVyaW9kIG9mIHRpbWUuCiAgICAgICAgIGludDY0X3QgZGVidWdnZXJUaW1l
b3V0RGVsYXkgPSAxMDsKICAgICAgICAgZGlzcGF0Y2hfYWZ0ZXIoZGlzcGF0Y2hfdGltZShESVNQ
QVRDSF9USU1FX05PVywgZGVidWdnZXJUaW1lb3V0RGVsYXkgKiBOU0VDX1BFUl9TRUMpLCBkaXNw
YXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQsIDAp
LCBeewotICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKKyAgICAgICAgICAg
IExvY2tIb2xkZXIgbG9jayhtX211dGV4KTsKICAgICAgICAgICAgIGlmIChtX2F1dG9tYXRpY0lu
c3BlY3Rpb25DYW5kaWRhdGVUYXJnZXRJZGVudGlmaWVyID09IHRhcmdldElkZW50aWZpZXIpIHsK
ICAgICAgICAgICAgICAgICBXVEZMb2dBbHdheXMoIlNraXBwaW5nIEF1dG9tYXRpYyBJbnNwZWN0
aW9uIENhbmRpZGF0ZSB3aXRoIHBhZ2VJZCgldSkgYmVjYXVzZSB3ZSBmYWlsZWQgdG8gcmVjZWl2
ZSBhIHJlc3BvbnNlIGluIHRpbWUuIiwgbV9hdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRlVGFy
Z2V0SWRlbnRpZmllcik7CiAgICAgICAgICAgICAgICAgbV9hdXRvbWF0aWNJbnNwZWN0aW9uUGF1
c2VkID0gZmFsc2U7CkBAIC0xNzQsNyArMTc0LDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnVw
ZGF0ZUF1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGUoUmVtb3RlSW5zcGVjdGlvblRhcmdldCoK
ICAgICB0YXJnZXQtPnBhdXNlV2FpdGluZ0ZvckF1dG9tYXRpY0luc3BlY3Rpb24oKTsKIAogICAg
IHsKLSAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKKyAgICAgICAgTG9ja0hvbGRl
ciBsb2NrKG1fbXV0ZXgpOwogCiAgICAgICAgIEFTU0VSVChtX2F1dG9tYXRpY0luc3BlY3Rpb25D
YW5kaWRhdGVUYXJnZXRJZGVudGlmaWVyKTsKICAgICAgICAgbV9hdXRvbWF0aWNJbnNwZWN0aW9u
Q2FuZGlkYXRlVGFyZ2V0SWRlbnRpZmllciA9IDA7CkBAIC0xOTUsNyArMTk1LDcgQEAgdm9pZCBS
ZW1vdGVJbnNwZWN0b3I6OnNlbmRBdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRlTWVzc2FnZSgp
CiAKIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZW5kTWVzc2FnZVRvUmVtb3RlKFRhcmdldElEIHRh
cmdldElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAgICBMb2NrZXIgbG9j
a2VyIHsgbV9tdXRleCB9OworICAgIExvY2tIb2xkZXIgbG9jayhtX211dGV4KTsKIAogICAgIGlm
ICghbV9yZWxheUNvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsKQEAgLTIxNSw3ICsyMTUsNyBA
QCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2VuZE1lc3NhZ2VUb1JlbW90ZShUYXJnZXRJRCB0YXJn
ZXRJZGVudGlmaWVyLCBjb25zdCBTdHJpbgogCiB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c3RhcnQo
KQogewotICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CisgICAgTG9ja0hvbGRlciBsb2Nr
KG1fbXV0ZXgpOwogCiAgICAgaWYgKG1fZW5hYmxlZCkKICAgICAgICAgcmV0dXJuOwpAQCAtMjcw
LDcgKzI3MCw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzdG9wSW50ZXJuYWwoU3RvcFNvdXJj
ZSBzb3VyY2UpCiAKIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZXR1cFhQQ0Nvbm5lY3Rpb25JZk5l
ZWRlZCgpCiB7Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKKyAgICBMb2NrSG9sZGVy
IGxvY2sobV9tdXRleCk7CiAKICAgICBpZiAobV9yZWxheUNvbm5lY3Rpb24pCiAgICAgICAgIHJl
dHVybjsKQEAgLTI5NCw3ICsyOTQsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2V0dXBYUEND
b25uZWN0aW9uSWZOZWVkZWQoKQogCiB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2V0UGFyZW50UHJv
Y2Vzc0luZm9ybWF0aW9uKHBpZF90IHBpZCwgUmV0YWluUHRyPENGRGF0YVJlZj4gYXVkaXREYXRh
KQogewotICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CisgICAgTG9ja0hvbGRlciBsb2Nr
KG1fbXV0ZXgpOwogCiAgICAgaWYgKG1fcGFyZW50UHJvY2Vzc0lkZW50aWZpZXIgfHwgbV9wYXJl
bnRQcm9jZXNzQXVkaXREYXRhKQogICAgICAgICByZXR1cm47CkBAIC0zMTAsNyArMzEwLDcgQEAg
dm9pZCBSZW1vdGVJbnNwZWN0b3I6OnNldFBhcmVudFByb2Nlc3NJbmZvcm1hdGlvbihwaWRfdCBw
aWQsIFJldGFpblB0cjxDRkRhdGFSZWYKIAogdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnhwY0Nvbm5l
Y3Rpb25SZWNlaXZlZE1lc3NhZ2UoUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbiosIE5TU3Ry
aW5nICptZXNzYWdlTmFtZSwgTlNEaWN0aW9uYXJ5ICp1c2VySW5mbykKIHsKLSAgICBMb2NrZXIg
bG9ja2VyIHsgbV9tdXRleCB9OworICAgIExvY2tIb2xkZXIgbG9jayhtX211dGV4KTsKIAogICAg
IGlmIChbbWVzc2FnZU5hbWUgaXNFcXVhbFRvU3RyaW5nOldJUlBlcm1pc3Npb25EZW5pZWRdKSB7
CiAgICAgICAgIHN0b3BJbnRlcm5hbChTdG9wU291cmNlOjpYUENNZXNzYWdlKTsKQEAgLTM0NSw3
ICszNDUsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6eHBjQ29ubmVjdGlvblJlY2VpdmVkTWVz
c2FnZShSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uKgogCiB2b2lkIFJlbW90ZUluc3BlY3Rv
cjo6eHBjQ29ubmVjdGlvbkZhaWxlZChSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uKiByZWxh
eUNvbm5lY3Rpb24pCiB7Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKKyAgICBMb2Nr
SG9sZGVyIGxvY2sobV9tdXRleCk7CiAKICAgICBBU1NFUlQocmVsYXlDb25uZWN0aW9uID09IG1f
cmVsYXlDb25uZWN0aW9uKTsKICAgICBpZiAocmVsYXlDb25uZWN0aW9uICE9IG1fcmVsYXlDb25u
ZWN0aW9uKQpAQCAtNDg0LDcgKzQ4NCw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpwdXNoTGlz
dGluZ3NTb29uKCkKIAogICAgIG1fcHVzaFNjaGVkdWxlZCA9IHRydWU7CiAgICAgZGlzcGF0Y2hf
YWZ0ZXIoZGlzcGF0Y2hfdGltZShESVNQQVRDSF9USU1FX05PVywgMC4yICogTlNFQ19QRVJfU0VD
KSwgZGlzcGF0Y2hfZ2V0X2dsb2JhbF9xdWV1ZShESVNQQVRDSF9RVUVVRV9QUklPUklUWV9ERUZB
VUxULCAwKSwgXnsKLSAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKKyAgICAgICAg
TG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOwogICAgICAgICBpZiAobV9wdXNoU2NoZWR1bGVkKQog
ICAgICAgICAgICAgcHVzaExpc3RpbmdzTm93KCk7CiAgICAgfSk7CkBAIC02MTUsNyArNjE1LDcg
QEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkSW5kaWNhdGVNZXNzYWdlKE5TRGljdGlv
bmFyeSAqdXNlckluZm8pCiAgICAgZGlzcGF0Y2hBc3luY09uTWFpblRocmVhZFdpdGhXZWJUaHJl
YWRMb2NrSWZOZWVkZWQoXnsKICAgICAgICAgUmVtb3RlQ29udHJvbGxhYmxlVGFyZ2V0KiB0YXJn
ZXQgPSBudWxscHRyOwogICAgICAgICB7Ci0gICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9t
dXRleCB9OworICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOwogCiAgICAgICAg
ICAgICBhdXRvIGZpbmRSZXN1bHQgPSBtX3RhcmdldE1hcC5maW5kKHRhcmdldElkZW50aWZpZXIp
OwogICAgICAgICAgICAgaWYgKGZpbmRSZXN1bHQgPT0gbV90YXJnZXRNYXAuZW5kKCkpCkBAIC02
MzksNyArNjM5LDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkUHJveHlBcHBsaWNh
dGlvblNldHVwTWVzc2FnZShOU0RpY3Rpb25hcnkgKikKICAgICAgICAgLy8gV2FpdCBhIGJpdCBm
b3IgdGhlIGluZm9ybWF0aW9uLCBidXQgZ2l2ZSB1cCBhZnRlciBhIHNlY29uZC4KICAgICAgICAg
bV9zaG91bGRTZW5kUGFyZW50UHJvY2Vzc0luZm9ybWF0aW9uID0gdHJ1ZTsKICAgICAgICAgZGlz
cGF0Y2hfYWZ0ZXIoZGlzcGF0Y2hfdGltZShESVNQQVRDSF9USU1FX05PVywgMSAqIE5TRUNfUEVS
X1NFQyksIGRpc3BhdGNoX2dldF9nbG9iYWxfcXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJT1JJVFlf
REVGQVVMVCwgMCksIF57Ci0gICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9Owor
ICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOwogICAgICAgICAgICAgaWYgKG1f
c2hvdWxkU2VuZFBhcmVudFByb2Nlc3NJbmZvcm1hdGlvbikKICAgICAgICAgICAgICAgICBzdG9w
SW50ZXJuYWwoU3RvcFNvdXJjZTo6WFBDTWVzc2FnZSk7CiAgICAgICAgIH0pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5z
cGVjdG9yWFBDQ29ubmVjdGlvbi5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
cmVtb3RlL2NvY29hL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW0KaW5kZXggNDNkZjI3
MGFjODIyZjRiZjljZDY1ZDlkNTAwZjg3M2UyYWIxYWQzZC4uYjUwMmUyOTM1ZjBmODU2YWExZjIy
YmU1MDQyNGFjM2E3ODU3MjEyOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbQorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNw
ZWN0b3JYUENDb25uZWN0aW9uLm1tCkBAIC03MSw3ICs3MSw3IEBAIFJlbW90ZUluc3BlY3RvclhQ
Q0Nvbm5lY3Rpb246On5SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uKCkKIAogdm9pZCBSZW1v
dGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpjbG9zZSgpCiB7Ci0gICAgTG9ja2VyIGxvY2tlciB7
IG1fbXV0ZXggfTsKKyAgICBMb2NrSG9sZGVyIGxvY2sobV9tdXRleCk7CiAgICAgY2xvc2VGcm9t
TWVzc2FnZSgpOwogfQogCkBAIC04MSw3ICs4MSw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yWFBD
Q29ubmVjdGlvbjo6Y2xvc2VGcm9tTWVzc2FnZSgpCiAgICAgbV9jbGllbnQgPSBudWxscHRyOwog
CiAgICAgZGlzcGF0Y2hfYXN5bmMobV9xdWV1ZS5nZXQoKSwgXnsKLSAgICAgICAgTG9ja2VyIGxv
Y2tlciB7IG1fbXV0ZXggfTsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOwogICAg
ICAgICAvLyBUaGlzIHdpbGwgdHJpZ2dlciBvbmUgbGFzdCBYUENfRVJST1JfQ09OTkVDVElPTl9J
TlZBTElEIGV2ZW50IG9uIHRoZSBxdWV1ZSBhbmQgZGVyZWYgdXMuCiAgICAgICAgIGNsb3NlT25R
dWV1ZSgpOwogICAgIH0pOwpAQCAtMTA0LDcgKzEwNCw3IEBAIE5TRGljdGlvbmFyeSAqUmVtb3Rl
SW5zcGVjdG9yWFBDQ29ubmVjdGlvbjo6ZGVzZXJpYWxpemVNZXNzYWdlKHhwY19vYmplY3RfdCBv
YmplCiAKICAgICB4cGNfb2JqZWN0X3QgeHBjRGljdGlvbmFyeSA9IHhwY19kaWN0aW9uYXJ5X2dl
dF92YWx1ZShvYmplY3QsIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb25TZXJpYWxpemVkTWVz
c2FnZUtleSk7CiAgICAgaWYgKCF4cGNEaWN0aW9uYXJ5IHx8IHhwY19nZXRfdHlwZSh4cGNEaWN0
aW9uYXJ5KSAhPSBYUENfVFlQRV9ESUNUSU9OQVJZKSB7Ci0gICAgICAgIExvY2tlciBsb2NrZXIg
eyBtX211dGV4IH07CisgICAgICAgIExvY2tIb2xkZXIgbG9jayhtX211dGV4KTsKICAgICAgICAg
aWYgKG1fY2xpZW50KQogICAgICAgICAgICAgbV9jbGllbnQtPnhwY0Nvbm5lY3Rpb25VbmhhbmRs
ZWRNZXNzYWdlKHRoaXMsIG9iamVjdCk7CiAgICAgICAgIHJldHVybiBuaWw7CkBAIC0xMjAsNyAr
MTIwLDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpoYW5kbGVFdmVudCh4
cGNfb2JqZWN0X3Qgb2JqZWN0KQogewogICAgIGlmICh4cGNfZ2V0X3R5cGUob2JqZWN0KSA9PSBY
UENfVFlQRV9FUlJPUikgewogICAgICAgICB7Ci0gICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsg
bV9tdXRleCB9OworICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOwogICAgICAg
ICAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICAgICAgICAgIG1fY2xpZW50LT54cGNDb25uZWN0
aW9uRmFpbGVkKHRoaXMpOwogCkBAIC0xNDIsNyArMTQyLDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0
b3JYUENDb25uZWN0aW9uOjpoYW5kbGVFdmVudCh4cGNfb2JqZWN0X3Qgb2JqZWN0KQogICAgICAg
ICBhdWRpdF90b2tlbl90IHRva2VuOwogICAgICAgICB4cGNfY29ubmVjdGlvbl9nZXRfYXVkaXRf
dG9rZW4obV9jb25uZWN0aW9uLmdldCgpLCAmdG9rZW4pOwogICAgICAgICBpZiAoIVdURjo6aGFz
RW50aXRsZW1lbnQodG9rZW4sICJjb20uYXBwbGUucHJpdmF0ZS53ZWJpbnNwZWN0b3Iud2ViaW5z
cGVjdG9yZCIpKSB7Ci0gICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OworICAg
ICAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOwogICAgICAgICAgICAgLy8gVGhpcyB3
aWxsIHRyaWdnZXIgb25lIGxhc3QgWFBDX0VSUk9SX0NPTk5FQ1RJT05fSU5WQUxJRCBldmVudCBv
biB0aGUgcXVldWUgYW5kIGRlcmVmIHVzLgogICAgICAgICAgICAgY2xvc2VPblF1ZXVlKCk7CiAg
ICAgICAgICAgICByZXR1cm47CkBAIC0xNjMsNyArMTYzLDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0
b3JYUENDb25uZWN0aW9uOjpoYW5kbGVFdmVudCh4cGNfb2JqZWN0X3Qgb2JqZWN0KQogICAgIGlm
ICh1c2VySW5mbyAmJiAhW3VzZXJJbmZvIGlzS2luZE9mQ2xhc3M6W05TRGljdGlvbmFyeSBjbGFz
c11dKQogICAgICAgICByZXR1cm47CiAKLSAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9Owor
ICAgIExvY2tIb2xkZXIgbG9jayhtX211dGV4KTsKICAgICBpZiAobV9jbGllbnQpCiAgICAgICAg
IG1fY2xpZW50LT54cGNDb25uZWN0aW9uUmVjZWl2ZWRNZXNzYWdlKHRoaXMsIG1lc3NhZ2UsIHVz
ZXJJbmZvKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
cmVtb3RlL2dsaWIvUmVtb3RlSW5zcGVjdG9yR2xpYi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9nbGliL1JlbW90ZUluc3BlY3RvckdsaWIuY3BwCmluZGV4IDhi
YmNmZTFiZmY2MWViMzFjYmUyZjViNTlhZTE0YzhhODIzMjBjMGIuLjA0YWJmNTU1NGM0MmIzOTUw
YmFiNDFiYTI1NDc0NzJhYTNhMGJlMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvcmVtb3RlL2dsaWIvUmVtb3RlSW5zcGVjdG9yR2xpYi5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvZ2xpYi9SZW1vdGVJbnNwZWN0b3JH
bGliLmNwcApAQCAtNTYsNyArNTYsNyBAQCBSZW1vdGVJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rv
cigpCiAKIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzdGFydCgpCiB7Ci0gICAgTG9ja2VyIGxvY2tl
ciB7IG1fbXV0ZXggfTsKKyAgICBMb2NrSG9sZGVyIGxvY2sobV9tdXRleCk7CiAKICAgICBpZiAo
bV9lbmFibGVkKQogICAgICAgICByZXR1cm47CkBAIC0xNDIsNyArMTQyLDcgQEAgY29uc3QgU29j
a2V0Q29ubmVjdGlvbjo6TWVzc2FnZUhhbmRsZXJzJiBSZW1vdGVJbnNwZWN0b3I6Om1lc3NhZ2VI
YW5kbGVycygpCiAKIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZXR1cENvbm5lY3Rpb24oUmVmPFNv
Y2tldENvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikKIHsKLSAgICBMb2NrZXIgbG9ja2VyIHsgbV9t
dXRleCB9OworICAgIExvY2tIb2xkZXIgbG9jayhtX211dGV4KTsKIAogICAgIEFTU0VSVCghbV9z
b2NrZXRDb25uZWN0aW9uKTsKICAgICBtX3NvY2tldENvbm5lY3Rpb24gPSBXVEZNb3ZlKGNvbm5l
Y3Rpb24pOwpAQCAtMjExLDcgKzIxMSw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpwdXNoTGlz
dGluZ3NTb29uKCkKICAgICBtX3B1c2hTY2hlZHVsZWQgPSB0cnVlOwogCiAgICAgUnVuTG9vcDo6
Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzXSB7Ci0gICAgICAgIExvY2tlciBsb2NrZXIgeyBtX211
dGV4IH07CisgICAgICAgIExvY2tIb2xkZXIgbG9jayhtX211dGV4KTsKICAgICAgICAgaWYgKG1f
cHVzaFNjaGVkdWxlZCkKICAgICAgICAgICAgIHB1c2hMaXN0aW5nc05vdygpOwogICAgIH0pOwpA
QCAtMjI5LDcgKzIyOSw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZW5kQXV0b21hdGljSW5z
cGVjdGlvbkNhbmRpZGF0ZU1lc3NhZ2UoKQogCiB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2VuZE1l
c3NhZ2VUb1JlbW90ZShUYXJnZXRJRCB0YXJnZXRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1l
c3NhZ2UpCiB7Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKKyAgICBMb2NrSG9sZGVy
IGxvY2sobV9tdXRleCk7CiAgICAgaWYgKCFtX3NvY2tldENvbm5lY3Rpb24pCiAgICAgICAgIHJl
dHVybjsKIApAQCAtMjM4LDcgKzIzOCw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZW5kTWVz
c2FnZVRvUmVtb3RlKFRhcmdldElEIHRhcmdldElkZW50aWZpZXIsIGNvbnN0IFN0cmluCiAKIHZv
aWQgUmVtb3RlSW5zcGVjdG9yOjpyZWNlaXZlZEdldFRhcmdldExpc3RNZXNzYWdlKCkKIHsKLSAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OworICAgIExvY2tIb2xkZXIgbG9jayhtX211dGV4
KTsKICAgICBwdXNoTGlzdGluZ3NOb3coKTsKIH0KIApAQCAtMjUxLDcgKzI1MSw3IEBAIHZvaWQg
UmVtb3RlSW5zcGVjdG9yOjpyZWNlaXZlZERhdGFNZXNzYWdlKFRhcmdldElEIHRhcmdldElkZW50
aWZpZXIsIGNvbnN0IGNoYXIqCiB7CiAgICAgUmVmUHRyPFJlbW90ZUNvbm5lY3Rpb25Ub1Rhcmdl
dD4gY29ubmVjdGlvblRvVGFyZ2V0OwogICAgIHsKLSAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1f
bXV0ZXggfTsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOwogICAgICAgICBjb25u
ZWN0aW9uVG9UYXJnZXQgPSBtX3RhcmdldENvbm5lY3Rpb25NYXAuZ2V0KHRhcmdldElkZW50aWZp
ZXIpOwogICAgICAgICBpZiAoIWNvbm5lY3Rpb25Ub1RhcmdldCkKICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTI2Myw3ICsyNjMsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6cmVjZWl2ZWRDbG9z
ZU1lc3NhZ2UoVGFyZ2V0SUQgdGFyZ2V0SWRlbnRpZmllcikKIHsKICAgICBSZWZQdHI8UmVtb3Rl
Q29ubmVjdGlvblRvVGFyZ2V0PiBjb25uZWN0aW9uVG9UYXJnZXQ7CiAgICAgewotICAgICAgICBM
b2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OworICAgICAgICBMb2NrSG9sZGVyIGxvY2sobV9tdXRl
eCk7CiAgICAgICAgIFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldCogdGFyZ2V0ID0gbV90YXJnZXRN
YXAuZ2V0KHRhcmdldElkZW50aWZpZXIpOwogICAgICAgICBpZiAoIXRhcmdldCkKICAgICAgICAg
ICAgIHJldHVybjsKQEAgLTI4MCw3ICsyODAsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2V0
dXAoVGFyZ2V0SUQgdGFyZ2V0SWRlbnRpZmllcikKIHsKICAgICBSZW1vdGVDb250cm9sbGFibGVU
YXJnZXQqIHRhcmdldDsKICAgICB7Ci0gICAgICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07
CisgICAgICAgIExvY2tIb2xkZXIgbG9jayhtX211dGV4KTsKICAgICAgICAgdGFyZ2V0ID0gbV90
YXJnZXRNYXAuZ2V0KHRhcmdldElkZW50aWZpZXIpOwogICAgICAgICBpZiAoIXRhcmdldCkKICAg
ICAgICAgICAgIHJldHVybjsKQEAgLTI5Myw3ICsyOTMsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3Rv
cjo6c2V0dXAoVGFyZ2V0SUQgdGFyZ2V0SWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CisgICAgTG9ja0hvbGRlciBsb2Nr
KG1fbXV0ZXgpOwogICAgIG1fdGFyZ2V0Q29ubmVjdGlvbk1hcC5zZXQodGFyZ2V0SWRlbnRpZmll
ciwgV1RGTW92ZShjb25uZWN0aW9uVG9UYXJnZXQpKTsKIAogICAgIHVwZGF0ZUhhc0FjdGl2ZURl
YnVnU2Vzc2lvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvckNvbm5lY3Rpb25DbGllbnQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3Rv
ckNvbm5lY3Rpb25DbGllbnQuY3BwCmluZGV4IDVlMzg3OThlYTBiMTg1NTQ5MGJlNWM2ZjljMzgx
YTVjNWE0ZTJhZDYuLjVhMWQ5MjQ1N2E1M2FhODdkNGNhYzliNGIxMTFjYzM0MTgzMTY5NTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9S
ZW1vdGVJbnNwZWN0b3JDb25uZWN0aW9uQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNs
aWVudC5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3JDb25uZWN0aW9u
Q2xpZW50OjpkaWRSZWNlaXZlKFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50JiwKIHsKICAg
ICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKIAotICAgIExvY2tlciBsb2NrZXIgeyBtX3BhcnNl
cnNMb2NrIH07CisgICAgTG9ja0hvbGRlciBsb2NrKG1fcGFyc2Vyc0xvY2spOwogICAgIGF1dG8g
cmVzdWx0ID0gbV9wYXJzZXJzLmVuc3VyZShjbGllbnRJRCwgW3RoaXMsIGNsaWVudElEXSB7CiAg
ICAgICAgIHJldHVybiBNZXNzYWdlUGFyc2VyKFt0aGlzLCBjbGllbnRJRF0oVmVjdG9yPHVpbnQ4
X3Q+JiYgZGF0YSkgewogICAgICAgICAgICAgaWYgKGF1dG8gZXZlbnQgPSBSZW1vdGVJbnNwZWN0
b3JDb25uZWN0aW9uQ2xpZW50OjpleHRyYWN0RXZlbnQoY2xpZW50SUQsIFdURk1vdmUoZGF0YSkp
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9z
b2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXQuY3BwCmluZGV4IGUz
MDU4ZjUwMWRjNzA5ZmIyOGU2ODY1YjY5NTMzYTZiNTljODY1ZDYuLjczOTY3M2VmODc3NGY2MGVk
ODc4MTk1MzU1M2Q3MGZlMzcwYjNjZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNw
ZWN0b3JTb2NrZXQuY3BwCkBAIC03MCw3ICs3MCw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpk
aWRDbG9zZShSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludCYsIENvbm5lY3Rpb25JRCkKICAg
ICBtX2NsaWVudENvbm5lY3Rpb24gPSBXVEY6Om51bGxvcHQ7CiAKICAgICBSdW5Mb29wOjpjdXJy
ZW50KCkuZGlzcGF0Y2goWz1dIHsKLSAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsK
KyAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOwogICAgICAgICBzdG9wSW50ZXJuYWwo
U3RvcFNvdXJjZTo6QVBJKTsKICAgICB9KTsKIH0KQEAgLTg2LDcgKzg2LDcgQEAgdm9pZCBSZW1v
dGVJbnNwZWN0b3I6OnNlbmRXZWJJbnNwZWN0b3JFdmVudChjb25zdCBTdHJpbmcmIGV2ZW50KQog
CiB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c3RhcnQoKQogewotICAgIExvY2tlciBsb2NrZXIgeyBt
X211dGV4IH07CisgICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOwogCiAgICAgaWYgKG1fZW5h
YmxlZCkKICAgICAgICAgcmV0dXJuOwpAQCAtMTgyLDcgKzE4Miw3IEBAIHZvaWQgUmVtb3RlSW5z
cGVjdG9yOjpwdXNoTGlzdGluZ3NTb29uKCkKICAgICBtX3B1c2hTY2hlZHVsZWQgPSB0cnVlOwog
CiAgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFs9XSB7Ci0gICAgICAgIExvY2tlciBs
b2NrZXIgeyBtX211dGV4IH07CisgICAgICAgIExvY2tIb2xkZXIgbG9jayhtX211dGV4KTsKICAg
ICAgICAgaWYgKG1fcHVzaFNjaGVkdWxlZCkKICAgICAgICAgICAgIHB1c2hMaXN0aW5nc05vdygp
OwogICAgIH0pOwpAQCAtMjMzLDcgKzIzMyw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZXR1
cChUYXJnZXRJRCB0YXJnZXRJZGVudGlmaWVyKQogewogICAgIFJlbW90ZUNvbnRyb2xsYWJsZVRh
cmdldCogdGFyZ2V0OwogICAgIHsKLSAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsK
KyAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOwogICAgICAgICB0YXJnZXQgPSBtX3Rh
cmdldE1hcC5nZXQodGFyZ2V0SWRlbnRpZmllcik7CiAgICAgICAgIGlmICghdGFyZ2V0KQogICAg
ICAgICAgICAgcmV0dXJuOwpAQCAtMjQ2LDcgKzI0Niw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9y
OjpzZXR1cChUYXJnZXRJRCB0YXJnZXRJZGVudGlmaWVyKQogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKKyAgICBMb2NrSG9sZGVyIGxvY2so
bV9tdXRleCk7CiAgICAgbV90YXJnZXRDb25uZWN0aW9uTWFwLnNldCh0YXJnZXRJZGVudGlmaWVy
LCBXVEZNb3ZlKGNvbm5lY3Rpb25Ub1RhcmdldCkpOwogCiAgICAgdXBkYXRlSGFzQWN0aXZlRGVi
dWdTZXNzaW9uKCk7CkBAIC0zMDMsNyArMzAzLDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnNl
dHVwSW5zcGVjdG9yQ2xpZW50KGNvbnN0IEV2ZW50JikKIAogICAgIG1fcmVhZHlUb1B1c2hMaXN0
aW5ncyA9IHRydWU7CiAKLSAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OworICAgIExvY2tI
b2xkZXIgbG9jayhtX211dGV4KTsKICAgICBwdXNoTGlzdGluZ3NOb3coKTsKIH0KIApAQCAtMzI2
LDcgKzMyNiw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpmcm9udGVuZERpZENsb3NlKGNvbnN0
IEV2ZW50JiBldmVudCkKIAogICAgIFJlZlB0cjxSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ+IGNv
bm5lY3Rpb25Ub1RhcmdldDsKICAgICB7Ci0gICAgICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4
IH07CisgICAgICAgIExvY2tIb2xkZXIgbG9jayhtX211dGV4KTsKICAgICAgICAgUmVtb3RlQ29u
dHJvbGxhYmxlVGFyZ2V0KiB0YXJnZXQgPSBtX3RhcmdldE1hcC5nZXQoZXZlbnQudGFyZ2V0SUQu
dmFsdWUoKSk7CiAgICAgICAgIGlmICghdGFyZ2V0KQogICAgICAgICAgICAgcmV0dXJuOwpAQCAt
MzQ4LDcgKzM0OCw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZW5kTWVzc2FnZVRvQmFja2Vu
ZChjb25zdCBFdmVudCYgZXZlbnQpCiAKICAgICBSZWZQdHI8UmVtb3RlQ29ubmVjdGlvblRvVGFy
Z2V0PiBjb25uZWN0aW9uVG9UYXJnZXQ7CiAgICAgewotICAgICAgICBMb2NrZXIgbG9ja2VyIHsg
bV9tdXRleCB9OworICAgICAgICBMb2NrSG9sZGVyIGxvY2sobV9tdXRleCk7CiAgICAgICAgIGNv
bm5lY3Rpb25Ub1RhcmdldCA9IG1fdGFyZ2V0Q29ubmVjdGlvbk1hcC5nZXQoZXZlbnQudGFyZ2V0
SUQudmFsdWUoKSk7CiAgICAgICAgIGlmICghY29ubmVjdGlvblRvVGFyZ2V0KQogICAgICAgICAg
ICAgcmV0dXJuOwpAQCAtMzgzLDcgKzM4Myw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzdGFy
dEF1dG9tYXRpb25TZXNzaW9uKGNvbnN0IEV2ZW50JiBldmVudCkKIAogICAgIG1fcmVhZHlUb1B1
c2hMaXN0aW5ncyA9IHRydWU7CiAKLSAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OworICAg
IExvY2tIb2xkZXIgbG9jayhtX211dGV4KTsKICAgICBwdXNoTGlzdGluZ3NOb3coKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0
L1JlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludC5j
cHAKaW5kZXggYTUwYzk0MjA4MmFhZTRhZDRhNjRkNDM5ZTc5Yjc1YmYxODUwY2MxYi4uYWU1ZTZk
OGExYWVhYjFhMDQ1NTY2YjM3YTNlNGNkMGViZDYxZjRmYyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tl
dEVuZHBvaW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90
ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQuY3BwCkBAIC04OSw3ICs4OSw3
IEBAIE9wdGlvbmFsPENvbm5lY3Rpb25JRD4gUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6
OmNvbm5lY3RJbmV0KGNvbnN0IGNoYXIqIHNlCiAKIE9wdGlvbmFsPENvbm5lY3Rpb25JRD4gUmVt
b3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6Omxpc3RlbkluZXQoY29uc3QgY2hhciogYWRkcmVz
cywgdWludDE2X3QgcG9ydCwgTGlzdGVuZXImIGxpc3RlbmVyKQogewotICAgIExvY2tlciBsb2Nr
ZXIgeyBtX2Nvbm5lY3Rpb25zTG9jayB9OworICAgIExvY2tIb2xkZXIgbG9jayhtX2Nvbm5lY3Rp
b25zTG9jayk7CiAgICAgYXV0byBpZCA9IGdlbmVyYXRlQ29ubmVjdGlvbklEKCk7CiAgICAgYXV0
byBjb25uZWN0aW9uID0gbWFrZVVuaXF1ZTxMaXN0ZW5lckNvbm5lY3Rpb24+KGlkLCBsaXN0ZW5l
ciwgYWRkcmVzcywgcG9ydCk7CiAgICAgaWYgKCFjb25uZWN0aW9uLT5pc0xpc3RlbmluZygpKQpA
QCAtMTAyLDcgKzEwMiw3IEBAIE9wdGlvbmFsPENvbm5lY3Rpb25JRD4gUmVtb3RlSW5zcGVjdG9y
U29ja2V0RW5kcG9pbnQ6Omxpc3RlbkluZXQoY29uc3QgY2hhciogYWRkCiAKIGJvb2wgUmVtb3Rl
SW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OmlzTGlzdGVuaW5nKENvbm5lY3Rpb25JRCBpZCkKIHsK
LSAgICBMb2NrZXIgbG9ja2VyIHsgbV9jb25uZWN0aW9uc0xvY2sgfTsKKyAgICBMb2NrSG9sZGVy
IGxvY2sobV9jb25uZWN0aW9uc0xvY2spOwogICAgIGlmIChtX2xpc3RlbmVycy5jb250YWlucyhp
ZCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIHJldHVybiBmYWxzZTsKQEAgLTE0NCw3ICsx
NDQsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50Ojp3b3JrZXJUaHJlYWQo
KQogICAgICAgICBWZWN0b3I8UG9sbGluZ0Rlc2NyaXB0b3I+IHBvbGxmZHM7CiAgICAgICAgIFZl
Y3RvcjxDb25uZWN0aW9uSUQ+IGlkczsKICAgICAgICAgewotICAgICAgICAgICAgTG9ja2VyIGxv
Y2tlciB7IG1fY29ubmVjdGlvbnNMb2NrIH07CisgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2so
bV9jb25uZWN0aW9uc0xvY2spOwogICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBjb25uZWN0
aW9uIDogbV9jbGllbnRzKSB7CiAgICAgICAgICAgICAgICAgcG9sbGZkcy5hcHBlbmQoY29ubmVj
dGlvbi52YWx1ZS0+cG9sbCk7CiAgICAgICAgICAgICAgICAgaWRzLmFwcGVuZChjb25uZWN0aW9u
LmtleSk7CkBAIC0yMDMsNyArMjAzLDcgQEAgT3B0aW9uYWw8Q29ubmVjdGlvbklEPiBSZW1vdGVJ
bnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6Y3JlYXRlQ2xpZW50KFBsYXRmb3JtU29ja2UKIHsKICAg
ICBBU1NFUlQoU29ja2V0Ojppc1ZhbGlkKHNvY2tldCkpOwogCi0gICAgTG9ja2VyIGxvY2tlciB7
IG1fY29ubmVjdGlvbnNMb2NrIH07CisgICAgTG9ja0hvbGRlciBsb2NrKG1fY29ubmVjdGlvbnNM
b2NrKTsKICAgICBhdXRvIGlkID0gZ2VuZXJhdGVDb25uZWN0aW9uSUQoKTsKICAgICBhdXRvIGNv
bm5lY3Rpb24gPSBtYWtlVW5pcXVlPENsaWVudENvbm5lY3Rpb24+KGlkLCBzb2NrZXQsIGNsaWVu
dCk7CiAgICAgaWYgKCFTb2NrZXQ6OmlzVmFsaWQoY29ubmVjdGlvbi0+c29ja2V0KSkKQEAgLTIx
NywxNyArMjE3LDE3IEBAIE9wdGlvbmFsPENvbm5lY3Rpb25JRD4gUmVtb3RlSW5zcGVjdG9yU29j
a2V0RW5kcG9pbnQ6OmNyZWF0ZUNsaWVudChQbGF0Zm9ybVNvY2tlCiAKIHZvaWQgUmVtb3RlSW5z
cGVjdG9yU29ja2V0RW5kcG9pbnQ6OmRpc2Nvbm5lY3QoQ29ubmVjdGlvbklEIGlkKQogewotICAg
IExvY2tlciBsb2NrZXIgeyBtX2Nvbm5lY3Rpb25zTG9jayB9OworICAgIExvY2tIb2xkZXIgbG9j
ayhtX2Nvbm5lY3Rpb25zTG9jayk7CiAKICAgICBpZiAoY29uc3QgYXV0byYgY29ubmVjdGlvbiA9
IG1fbGlzdGVuZXJzLmdldChpZCkpIHsKICAgICAgICAgbV9saXN0ZW5lcnMucmVtb3ZlKGlkKTsK
ICAgICAgICAgU29ja2V0OjpjbG9zZShjb25uZWN0aW9uLT5zb2NrZXQpOwotICAgICAgICBsb2Nr
ZXIudW5sb2NrRWFybHkoKTsKKyAgICAgICAgbG9jay51bmxvY2tFYXJseSgpOwogICAgICAgICBj
b25uZWN0aW9uLT5saXN0ZW5lci5kaWRDaGFuZ2VTdGF0dXMoKnRoaXMsIGlkLCBMaXN0ZW5lcjo6
U3RhdHVzOjpDbG9zZWQpOwogICAgIH0gZWxzZSBpZiAoY29uc3QgYXV0byYgY29ubmVjdGlvbiA9
IG1fY2xpZW50cy5nZXQoaWQpKSB7CiAgICAgICAgIG1fY2xpZW50cy5yZW1vdmUoaWQpOwogICAg
ICAgICBTb2NrZXQ6OmNsb3NlKGNvbm5lY3Rpb24tPnNvY2tldCk7Ci0gICAgICAgIGxvY2tlci51
bmxvY2tFYXJseSgpOworICAgICAgICBsb2NrLnVubG9ja0Vhcmx5KCk7CiAgICAgICAgIGNvbm5l
Y3Rpb24tPmNsaWVudC5kaWRDbG9zZSgqdGhpcywgaWQpOwogICAgIH0gZWxzZQogICAgICAgICBM
T0dfRVJST1IoIkVycm9yOiBDYW5ub3QgZGlzY29ubmVjdDogSW52YWxpZCBpZCIpOwpAQCAtMjM1
LDcgKzIzNSw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OmRpc2Nvbm5l
Y3QoQ29ubmVjdGlvbklEIGlkKQogCiB2b2lkIFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50
OjppbnZhbGlkYXRlQ2xpZW50KENsaWVudCYgY2xpZW50KQogewotICAgIExvY2tlciBsb2NrZXIg
eyBtX2Nvbm5lY3Rpb25zTG9jayB9OworICAgIExvY2tIb2xkZXIgbG9jayhtX2Nvbm5lY3Rpb25z
TG9jayk7CiAgICAgbV9jbGllbnRzLnJlbW92ZUlmKFsmY2xpZW50XShhdXRvJiBrZXlWYWx1ZSkg
ewogICAgICAgICBjb25zdCBhdXRvJiBjb25uZWN0aW9uID0ga2V5VmFsdWUudmFsdWU7CiAKQEAg
LTI1MCw3ICsyNTAsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50OjppbnZh
bGlkYXRlQ2xpZW50KENsaWVudCYgY2xpZW50KQogCiB2b2lkIFJlbW90ZUluc3BlY3RvclNvY2tl
dEVuZHBvaW50OjppbnZhbGlkYXRlTGlzdGVuZXIoTGlzdGVuZXImIGxpc3RlbmVyKQogewotICAg
IExvY2tlciBsb2NrZXIgeyBtX2Nvbm5lY3Rpb25zTG9jayB9OworICAgIExvY2tIb2xkZXIgbG9j
ayhtX2Nvbm5lY3Rpb25zTG9jayk7CiAgICAgbV9saXN0ZW5lcnMucmVtb3ZlSWYoWyZsaXN0ZW5l
cl0oYXV0byYga2V5VmFsdWUpIHsKICAgICAgICAgY29uc3QgYXV0byYgY29ubmVjdGlvbiA9IGtl
eVZhbHVlLnZhbHVlOwogCkBAIC0yNjUsNyArMjY1LDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3JT
b2NrZXRFbmRwb2ludDo6aW52YWxpZGF0ZUxpc3RlbmVyKExpc3RlbmVyJiBsaXN0ZW5lcikKIAog
T3B0aW9uYWw8dWludDE2X3Q+IFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50OjpnZXRQb3J0
KENvbm5lY3Rpb25JRCBpZCkgY29uc3QKIHsKLSAgICBMb2NrZXIgbG9ja2VyIHsgbV9jb25uZWN0
aW9uc0xvY2sgfTsKKyAgICBMb2NrSG9sZGVyIGxvY2sobV9jb25uZWN0aW9uc0xvY2spOwogICAg
IGlmIChjb25zdCBhdXRvJiBjb25uZWN0aW9uID0gbV9saXN0ZW5lcnMuZ2V0KGlkKSkKICAgICAg
ICAgcmV0dXJuIFNvY2tldDo6Z2V0UG9ydChjb25uZWN0aW9uLT5zb2NrZXQpOwogICAgIGlmIChj
b25zdCBhdXRvJiBjb25uZWN0aW9uID0gbV9jbGllbnRzLmdldChpZCkpCkBAIC0yNzYsMTMgKzI3
NiwxMyBAQCBPcHRpb25hbDx1aW50MTZfdD4gUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6
OmdldFBvcnQoQ29ubmVjdGlvbklEIGlkKSBjb25zdAogCiB2b2lkIFJlbW90ZUluc3BlY3RvclNv
Y2tldEVuZHBvaW50OjpyZWN2SWZFbmFibGVkKENvbm5lY3Rpb25JRCBpZCkKIHsKLSAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9jb25uZWN0aW9uc0xvY2sgfTsKKyAgICBMb2NrSG9sZGVyIGxvY2sobV9j
b25uZWN0aW9uc0xvY2spOwogICAgIGlmIChjb25zdCBhdXRvJiBjb25uZWN0aW9uID0gbV9jbGll
bnRzLmdldChpZCkpIHsKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlY3ZCdWZmZXIoU29ja2V0
OjpCdWZmZXJTaXplKTsKICAgICAgICAgaWYgKGF1dG8gcmVhZFNpemUgPSBTb2NrZXQ6OnJlYWQo
Y29ubmVjdGlvbi0+c29ja2V0LCByZWN2QnVmZmVyLmRhdGEoKSwgcmVjdkJ1ZmZlci5zaXplKCkp
KSB7CiAgICAgICAgICAgICBpZiAoKnJlYWRTaXplID4gMCkgewogICAgICAgICAgICAgICAgIHJl
Y3ZCdWZmZXIuc2hyaW5rKCpyZWFkU2l6ZSk7Ci0gICAgICAgICAgICAgICAgbG9ja2VyLnVubG9j
a0Vhcmx5KCk7CisgICAgICAgICAgICAgICAgbG9jay51bmxvY2tFYXJseSgpOwogICAgICAgICAg
ICAgICAgIGNvbm5lY3Rpb24tPmNsaWVudC5kaWRSZWNlaXZlKCp0aGlzLCBpZCwgV1RGTW92ZShy
ZWN2QnVmZmVyKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQpAQCAt
MjkxLDE0ICsyOTEsMTQgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6cmVj
dklmRW5hYmxlZChDb25uZWN0aW9uSUQgaWQpCiAgICAgICAgIFNvY2tldDo6Y2xvc2UoY29ubmVj
dGlvbi0+c29ja2V0KTsKICAgICAgICAgbV9jbGllbnRzLnJlbW92ZShpZCk7CiAKLSAgICAgICAg
bG9ja2VyLnVubG9ja0Vhcmx5KCk7CisgICAgICAgIGxvY2sudW5sb2NrRWFybHkoKTsKICAgICAg
ICAgY29ubmVjdGlvbi0+Y2xpZW50LmRpZENsb3NlKCp0aGlzLCBpZCk7CiAgICAgfQogfQogCiB2
b2lkIFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50OjpzZW5kSWZFbmFibGVkKENvbm5lY3Rp
b25JRCBpZCkKIHsKLSAgICBMb2NrZXIgbG9ja2VyIHsgbV9jb25uZWN0aW9uc0xvY2sgfTsKKyAg
ICBMb2NrSG9sZGVyIGxvY2sobV9jb25uZWN0aW9uc0xvY2spOwogICAgIGlmIChjb25zdCBhdXRv
JiBjb25uZWN0aW9uID0gbV9jbGllbnRzLmdldChpZCkpIHsKICAgICAgICAgU29ja2V0OjpjbGVh
cldhaXRpbmdXcml0YWJsZShjb25uZWN0aW9uLT5wb2xsKTsKIApAQCAtMzIzLDcgKzMyMyw3IEBA
IHZvaWQgUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OnNlbmRJZkVuYWJsZWQoQ29ubmVj
dGlvbklEIGlkKQogCiB2b2lkIFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50OjpzZW5kKENv
bm5lY3Rpb25JRCBpZCwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7Ci0gICAg
TG9ja2VyIGxvY2tlciB7IG1fY29ubmVjdGlvbnNMb2NrIH07CisgICAgTG9ja0hvbGRlciBsb2Nr
KG1fY29ubmVjdGlvbnNMb2NrKTsKICAgICBpZiAoY29uc3QgYXV0byYgY29ubmVjdGlvbiA9IG1f
Y2xpZW50cy5nZXQoaWQpKSB7CiAgICAgICAgIHNpemVfdCBvZmZzZXQgPSAwOwogICAgICAgICBp
ZiAoY29ubmVjdGlvbi0+c2VuZEJ1ZmZlci5pc0VtcHR5KCkpIHsKQEAgLTM0OSwxMSArMzQ5LDEx
IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OmFjY2VwdEluZXRTb2NrZXRJ
ZkVuYWJsZWQoQ29ubmVjdGlvbklEIGlkKQogewogICAgIEFTU0VSVChpc0xpc3RlbmluZyhpZCkp
OwogCi0gICAgTG9ja2VyIGxvY2tlciB7IG1fY29ubmVjdGlvbnNMb2NrIH07CisgICAgTG9ja0hv
bGRlciBsb2NrKG1fY29ubmVjdGlvbnNMb2NrKTsKICAgICBpZiAoY29uc3QgYXV0byYgY29ubmVj
dGlvbiA9IG1fbGlzdGVuZXJzLmdldChpZCkpIHsKICAgICAgICAgaWYgKGF1dG8gc29ja2V0ID0g
U29ja2V0OjphY2NlcHQoY29ubmVjdGlvbi0+c29ja2V0KSkgewogICAgICAgICAgICAgLy8gTmVl
ZCB0byB1bmxvY2sgYmVmb3JlIGNhbGxpbmcgY3JlYXRlQ2xpZW50IGFzIGl0IGFsc28gYXR0ZW1w
dHMgdG8gbG9jay4KLSAgICAgICAgICAgIGxvY2tlci51bmxvY2tFYXJseSgpOworICAgICAgICAg
ICAgbG9jay51bmxvY2tFYXJseSgpOwogICAgICAgICAgICAgaWYgKGNvbm5lY3Rpb24tPmxpc3Rl
bmVyLmRvQWNjZXB0KCp0aGlzLCBzb2NrZXQudmFsdWUoKSkpCiAgICAgICAgICAgICAgICAgcmV0
dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ0xv
b3BTdGFjay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ0xvb3BTdGFj
ay5jcHAKaW5kZXggODE5ZDNlM2VjNDEzZTljODI4YTEyMzdjZGE0ZGM3OGZhNDcxNzljNi4uM2M5
M2FiOGViZTVhYjJjOTZlMzRjMDE5YTJiN2YyMDQxM2Y4MDhhMSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NMb29wU3RhY2suY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DTG9vcFN0YWNrLmNwcApAQCAtMTM5LDcgKzEzOSw3
IEBAIHZvaWQgQ0xvb3BTdGFjazo6cmVsZWFzZUV4Y2Vzc0NhcGFjaXR5KCkKIAogdm9pZCBDTG9v
cFN0YWNrOjphZGRUb0NvbW1pdHRlZEJ5dGVDb3VudChsb25nIGJ5dGVDb3VudCkKIHsKLSAgICBM
b2NrZXIgbG9ja2VyIHsgc3RhY2tTdGF0aXN0aWNzTXV0ZXggfTsKKyAgICBMb2NrSG9sZGVyIGxv
Y2tlcihzdGFja1N0YXRpc3RpY3NNdXRleCk7CiAgICAgQVNTRVJUKHN0YXRpY19jYXN0PGxvbmc+
KGNvbW1pdHRlZEJ5dGVzQ291bnQpICsgYnl0ZUNvdW50ID4gLTEpOwogICAgIGNvbW1pdHRlZEJ5
dGVzQ291bnQgKz0gYnl0ZUNvdW50OwogfQpAQCAtMTU5LDcgKzE1OSw3IEBAIGJvb2wgQ0xvb3BT
dGFjazo6aXNTYWZlVG9SZWN1cnNlKCkgY29uc3QKIAogc2l6ZV90IENMb29wU3RhY2s6OmNvbW1p
dHRlZEJ5dGVDb3VudCgpCiB7Ci0gICAgTG9ja2VyIGxvY2tlciB7IHN0YWNrU3RhdGlzdGljc011
dGV4IH07CisgICAgTG9ja0hvbGRlciBsb2NrZXIoc3RhY2tTdGF0aXN0aWNzTXV0ZXgpOwogICAg
IHJldHVybiBjb21taXR0ZWRCeXRlc0NvdW50OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcAppbmRleCA5Y2Q1MjUyNWU2YzcyMmY3
MGQ4OGU0ZTY5M2IxNWI5NmNkNzExMDE1Li41NDMzYzcxYzczN2I5NWFkZmE2YmI3NmY3ZThjNTAz
NTBlNTAyNWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFi
bGVBbGxvY2F0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJs
ZUFsbG9jYXRvci5jcHAKQEAgLTEwNTgsNyArMTA1OCw3IEBAIHZvaWQgZHVtcEpJVE1lbW9yeShj
b25zdCB2b2lkKiBkc3QsIGNvbnN0IHZvaWQqIHNyYywgc2l6ZV90IHNpemUpCiAgICAgICAgIGJ1
ZmZlciA9IGJpdHdpc2VfY2FzdDx1aW50OF90Kj4obWFsbG9jKGJ1ZmZlclNpemUpKTsKICAgICAg
ICAgZmx1c2hRdWV1ZS5jb25zdHJ1Y3QoV29ya1F1ZXVlOjpjcmVhdGUoImpzYy5kdW1wSklUTWVt
b3J5LnF1ZXVlIiwgV29ya1F1ZXVlOjpUeXBlOjpTZXJpYWwsIFdvcmtRdWV1ZTo6UU9TOjpCYWNr
Z3JvdW5kKSk7CiAgICAgICAgIHN0ZDo6YXRleGl0KFtdIHsKLSAgICAgICAgICAgIExvY2tlciBs
b2NrZXIgeyBkdW1wSklUTWVtb3J5TG9jayB9OworICAgICAgICAgICAgTG9ja0hvbGRlciBsb2Nr
ZXIoZHVtcEpJVE1lbW9yeUxvY2spOwogICAgICAgICAgICAgZmx1c2gobG9ja2VyKTsKICAgICAg
ICAgICAgIGNsb3NlKGZkKTsKICAgICAgICAgICAgIGZkID0gLTE7CkBAIC0xMDcxLDcgKzEwNzEs
NyBAQCB2b2lkIGR1bXBKSVRNZW1vcnkoY29uc3Qgdm9pZCogZHN0LCBjb25zdCB2b2lkKiBzcmMs
IHNpemVfdCBzaXplKQogCiAgICAgICAgIG5lZWRzVG9GbHVzaCA9IHRydWU7CiAgICAgICAgIGZs
dXNoUXVldWUuZ2V0KCktPmRpc3BhdGNoQWZ0ZXIoU2Vjb25kcyhPcHRpb25zOjpkdW1wSklUTWVt
b3J5Rmx1c2hJbnRlcnZhbCgpKSwgW10gewotICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IGR1
bXBKSVRNZW1vcnlMb2NrIH07CisgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihkdW1wSklU
TWVtb3J5TG9jayk7CiAgICAgICAgICAgICBpZiAoIW5lZWRzVG9GbHVzaCkKICAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICBmbHVzaChsb2NrZXIpOwpAQCAtMTA4Niw3ICsxMDg2
LDcgQEAgdm9pZCBkdW1wSklUTWVtb3J5KGNvbnN0IHZvaWQqIGRzdCwgY29uc3Qgdm9pZCogc3Jj
LCBzaXplX3Qgc2l6ZSkKICAgICAgICAgZW5xdWV1ZUZsdXNoKGxvY2tlcik7CiAgICAgfTsKIAot
ICAgIExvY2tlciBsb2NrZXIgeyBkdW1wSklUTWVtb3J5TG9jayB9OworICAgIExvY2tIb2xkZXIg
bG9ja2VyKGR1bXBKSVRNZW1vcnlMb2NrKTsKICAgICB1aW50NjRfdCB0aW1lID0gbWFjaF9hYnNv
bHV0ZV90aW1lKCk7CiAgICAgdWludDY0X3QgZHN0NjQgPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90
Pihkc3QpOwogICAgIHVpbnQ2NF90IHNpemU2NCA9IHNpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9JQ1N0YXRzLmNwcAppbmRleCA3ZDFhNzQ0ZGY3NmNlNWVmNTkwNTI2ZDUwYzUwNDJlODViMTFm
Y2I4Li44MTM1YjRmZGVlNjJmNzhlOWRjNmI0NjJkNmNlZWNhNGZkMWM2MDY2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgSUNTdGF0czo6SUNT
dGF0cygpCiAgICAgbV90aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgKICAgICAgICAgIkpTQyBJQ1N0
YXRzIiwKICAgICAgICAgW3RoaXNdICgpIHsKLSAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBt
X2xvY2sgfTsKKyAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgICAg
ICAgICBmb3IgKDs7KSB7CiAgICAgICAgICAgICAgICAgbV9jb25kaXRpb24ud2FpdEZvcigKICAg
ICAgICAgICAgICAgICAgICAgbV9sb2NrLCBTZWNvbmRzKDEpLCBbdGhpc10gKCkgLT4gYm9vbCB7
IHJldHVybiBtX3Nob3VsZFN0b3A7IH0pOwpAQCAtODQsNyArODQsNyBAQCBJQ1N0YXRzOjpJQ1N0
YXRzKCkKIElDU3RhdHM6On5JQ1N0YXRzKCkKIHsKICAgICB7Ci0gICAgICAgIExvY2tlciBsb2Nr
ZXIgeyBtX2xvY2sgfTsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKICAgICAg
ICAgbV9zaG91bGRTdG9wID0gdHJ1ZTsKICAgICAgICAgbV9jb25kaXRpb24ubm90aWZ5QWxsKCk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3Mu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuY3BwCmluZGV4IDMxOWI1
MGQ5NDJkNWE5NGQ5ZTliZDBmZjQyZTUzZGNhNzMxMmJlNzcuLjMyNTUzNGViOTZmY2ZhYjEyODRk
YWE4NTQ4N2QzODNjZThiODJiNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUVGh1bmtzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5r
cy5jcHAKQEAgLTEzMSw3ICsxMzEsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SklUVGh1bmtQ
dHJUYWc+IEpJVFRodW5rczo6Y3RpSW50ZXJuYWxGdW5jdGlvbkNvbnN0cnVjdChWTQogCiBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVFRodW5rczo6Y3RpU3R1YihWTSYg
dm0sIFRodW5rR2VuZXJhdG9yIGdlbmVyYXRvcikKIHsKLSAgICBMb2NrZXIgbG9ja2VyIHsgbV9s
b2NrIH07CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKICAgICBDVElTdHViTWFwOjpB
ZGRSZXN1bHQgZW50cnkgPSBtX2N0aVN0dWJNYXAuYWRkKGdlbmVyYXRvciwgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPigpKTsKICAgICBpZiAoZW50cnkuaXNOZXdFbnRyeSkg
ewogICAgICAgICAvLyBDb21waWxhdGlvbiB0aHJlYWQgY2FuIG9ubHkgcmV0cmlldmUgZXhpc3Rp
bmcgZW50cmllcy4KQEAgLTE0Myw3ICsxNDMsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
VGh1bmtQdHJUYWc+IEpJVFRodW5rczo6Y3RpU3R1YihWTSYgdm0sIFRodW5rR2VuZXJhdG9yCiAK
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUVGh1bmtzOjpleGlzdGlu
Z0NUSVN0dWIoVGh1bmtHZW5lcmF0b3IgZ2VuZXJhdG9yKQogewotICAgIExvY2tlciBsb2NrZXIg
eyBtX2xvY2sgfTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOwogICAgIHJldHVybiBl
eGlzdGluZ0NUSVN0dWIoZ2VuZXJhdG9yLCBOb0xvY2tpbmdOZWNlc3NhcnkpOwogfQogCkBAIC0x
NTksNyArMTU5LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVRU
aHVua3M6OmV4aXN0aW5nQ1RJU3R1YihUaHVua0dlbmVyYXRvcgogCiBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVFRodW5rczo6Y3RpU2xvd1BhdGhGdW5jdGlvblN0dWIo
Vk0mIHZtLCBTbG93UGF0aEZ1bmN0aW9uIHNsb3dQYXRoRnVuY3Rpb24pCiB7Ci0gICAgTG9ja2Vy
IGxvY2tlciB7IG1fbG9jayB9OworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CiAgICAg
YXV0byBrZXkgPSBiaXR3aXNlX2Nhc3Q8VGh1bmtHZW5lcmF0b3I+KHNsb3dQYXRoRnVuY3Rpb24p
OwogICAgIENUSVN0dWJNYXA6OkFkZFJlc3VsdCBlbnRyeSA9IG1fY3RpU3R1Yk1hcC5hZGQoa2V5
LCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+KCkpOwogICAgIGlmIChlbnRy
eS5pc05ld0VudHJ5KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFdvcmtsaXN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUV29ya2xpc3QuY3Bw
CmluZGV4IGE3MDUyZTc5ZjBhNzQzNjdmZTNmZGM1YTNjZjZkNTM4ZTY5MzIwMGUuLjUzOWI2ZmE5
Y2FhODMyOTE1NDRjOGFkMzc5ZDIyNjAyODQ3NGI1OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUV29ya2xpc3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUV29ya2xpc3QuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB7CiAg
ICAgICAgIG1faml0LmNvbXBpbGVBbmRMaW5rV2l0aG91dEZpbmFsaXppbmcoSklUQ29tcGlsYXRp
b25DYW5GYWlsKTsKICAgICAgICAgCi0gICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsK
KyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKICAgICAgICAgbV9pc0ZpbmlzaGVk
Q29tcGlsaW5nID0gdHJ1ZTsKICAgICB9CiAgICAgCkBAIC03OSw3ICs3OSw3IEBAIHB1YmxpYzoK
ICAgICAKICAgICBib29sIGlzRmluaXNoZWRDb21waWxpbmcoKQogICAgIHsKLSAgICAgICAgTG9j
a2VyIGxvY2tlciB7IG1fbG9jayB9OworICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2sp
OwogICAgICAgICByZXR1cm4gbV9pc0ZpbmlzaGVkQ29tcGlsaW5nOwogICAgIH0KICAgICAKQEAg
LTEzOCwxMyArMTM4LDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8v
IE1ha2Ugc3VyZSB0aGF0IHRoZSBtYWluIHRocmVhZCByZWFsaXplcyB0aGF0IHdlIGp1c3QgY29t
cGlsZWQgc29tZXRoaW5nLiBOb3RpZnlpbmcKICAgICAgICAgICAgIC8vIGEgY29uZGl0aW9uIGlz
IGJhc2ljYWxseSBmcmVlIGlmIG5vYm9keSBpcyB3YWl0aW5nLgotICAgICAgICAgICAgTG9ja2Vy
IGxvY2tlciB7ICptX3dvcmtsaXN0Lm1fbG9jayB9OworICAgICAgICAgICAgTG9ja0hvbGRlciBs
b2NrZXIoKm1fd29ya2xpc3QubV9sb2NrKTsKICAgICAgICAgICAgIG1fd29ya2xpc3QubV9jb25k
aXRpb24tPm5vdGlmeUFsbChsb2NrZXIpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBt
X215UGxhbnMuY2xlYXIoKTsKICAgICAgICAgCi0gICAgICAgIExvY2tlciBsb2NrZXIgeyAqbV93
b3JrbGlzdC5tX2xvY2sgfTsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fd29ya2xpc3Qu
bV9sb2NrKTsKICAgICAgICAgbV93b3JrbGlzdC5tX251bUF2YWlsYWJsZVRocmVhZHMrKzsKICAg
ICAgICAgcmV0dXJuIFdvcmtSZXN1bHQ6OkNvbnRpbnVlOwogICAgIH0KQEAgLTE2OCw3ICsxNjgs
NyBAQCBKSVRXb3JrbGlzdDo6SklUV29ya2xpc3QoKQogICAgIDogbV9sb2NrKEJveDxMb2NrPjo6
Y3JlYXRlKCkpCiAgICAgLCBtX2NvbmRpdGlvbihBdXRvbWF0aWNUaHJlYWRDb25kaXRpb246OmNy
ZWF0ZSgpKQogewotICAgIExvY2tlciBsb2NrZXIgeyAqbV9sb2NrIH07CisgICAgTG9ja0hvbGRl
ciBsb2NrZXIoKm1fbG9jayk7CiAgICAgbV90aHJlYWQgPSBuZXcgVGhyZWFkKGxvY2tlciwgKnRo
aXMpOwogfQogCkBAIC0xODQsNyArMTg0LDcgQEAgYm9vbCBKSVRXb3JrbGlzdDo6Y29tcGxldGVB
bGxGb3JWTShWTSYgdm0pCiAgICAgZm9yICg7OykgewogICAgICAgICBWZWN0b3I8UmVmUHRyPFBs
YW4+LCAzMj4gbXlQbGFuczsKICAgICAgICAgewotICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7
ICptX2xvY2sgfTsKKyAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKCptX2xvY2spOwogICAg
ICAgICAgICAgZm9yICg7OykgewogICAgICAgICAgICAgICAgIGJvb2wgZGlkRmluZFVuZmluaXNo
ZWRQbGFuID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgbV9wbGFucy5yZW1vdmVBbGxNYXRjaGlu
ZygKQEAgLTIyMyw3ICsyMjMsNyBAQCB2b2lkIEpJVFdvcmtsaXN0Ojpwb2xsKFZNJiB2bSkKICAg
ICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7CiAgICAgUGxhbnMgbXlQbGFuczsKICAgICB7Ci0g
ICAgICAgIExvY2tlciBsb2NrZXIgeyAqbV9sb2NrIH07CisgICAgICAgIExvY2tIb2xkZXIgbG9j
a2VyKCptX2xvY2spOwogICAgICAgICBtX3BsYW5zLnJlbW92ZUFsbE1hdGNoaW5nKAogICAgICAg
ICAgICAgWyZdIChSZWZQdHI8UGxhbj4mIHBsYW4pIHsKICAgICAgICAgICAgICAgICBpZiAoJnBs
YW4tPnZtKCkgIT0gJnZtKQpAQCAtMjU2LDcgKzI1Niw3IEBAIHZvaWQgSklUV29ya2xpc3Q6OmNv
bXBpbGVMYXRlcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVJbmRleCBsb29wT1NSRW50
cnlCCiAgICAgY29kZUJsb2NrLT5qaXRTb29uKCk7CiAKICAgICB7Ci0gICAgICAgIExvY2tlciBs
b2NrZXIgeyAqbV9sb2NrIH07CisgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKCptX2xvY2spOwog
ICAgICAgICAKICAgICAgICAgaWYgKG1fcGxhbm5lZC5jb250YWlucyhjb2RlQmxvY2spKQogICAg
ICAgICAgICAgcmV0dXJuOwpAQCAtMjk1LDcgKzI5NSw3IEBAIHZvaWQgSklUV29ya2xpc3Q6OmZp
bmFsaXplUGxhbnMoUGxhbnMmIG15UGxhbnMpCiAgICAgZm9yIChSZWZQdHI8UGxhbj4mIHBsYW4g
OiBteVBsYW5zKSB7CiAgICAgICAgIHBsYW4tPmZpbmFsaXplKHRydWUpOwogICAgICAgICAKLSAg
ICAgICAgTG9ja2VyIGxvY2tlciB7ICptX2xvY2sgfTsKKyAgICAgICAgTG9ja0hvbGRlciBsb2Nr
ZXIoKm1fbG9jayk7CiAgICAgICAgIG1fcGxhbm5lZC5yZW1vdmUocGxhbi0+Y29kZUJsb2NrKCkp
OwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291
cmNlUHJvdmlkZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92
aWRlci5jcHAKaW5kZXggNjA2ZTVmMTc0NGFmMGY2MTBkZGNjZTc2MWJjOTNlMzIyM2I5NTNkYi4u
MDNlNTVlZTNkMWZmMjAyNTg2YWYyYmVhOGQ3OTFkNTE1M2ExODdiMCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlci5jcHAKQEAgLTQ4LDcgKzQ4LDcg
QEAgc3RhdGljIExvY2sgcHJvdmlkZXJJZExvY2s7CiAKIHZvaWQgU291cmNlUHJvdmlkZXI6Omdl
dElEKCkKIHsKLSAgICBMb2NrZXIgbG9ja2VyIHsgcHJvdmlkZXJJZExvY2sgfTsKKyAgICBMb2Nr
SG9sZGVyIGxvY2soJnByb3ZpZGVySWRMb2NrKTsKICAgICBpZiAoIW1faWQpIHsKICAgICAgICAg
c3RhdGljIGludHB0cl90IG5leHRQcm92aWRlcklEID0gMDsKICAgICAgICAgbV9pZCA9ICsrbmV4
dFByb3ZpZGVySUQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIv
UHJvZmlsZXJEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJv
ZmlsZXJEYXRhYmFzZS5jcHAKaW5kZXggMmQyNmVlMWEwZDc2MzYyYTk3YWNhYmVmYzIzY2RhYmI1
ODdmOTk1OS4uNzUyMWExZDdhYmEzODdiNGExZGM4YmU2ZjYyMjFjMTRiMmYxYmZiMCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyRGF0YWJhc2UuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckRhdGFiYXNlLmNw
cApAQCAtNTgsNyArNTgsNyBAQCBEYXRhYmFzZTo6fkRhdGFiYXNlKCkKIAogQnl0ZWNvZGVzKiBE
YXRhYmFzZTo6ZW5zdXJlQnl0ZWNvZGVzRm9yKENvZGVCbG9jayogY29kZUJsb2NrKQogewotICAg
IExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2sp
OwogICAgIHJldHVybiBlbnN1cmVCeXRlY29kZXNGb3IobG9ja2VyLCBjb2RlQmxvY2spOwogfQog
CkBAIC04MCw3ICs4MCw3IEBAIEJ5dGVjb2RlcyogRGF0YWJhc2U6OmVuc3VyZUJ5dGVjb2Rlc0Zv
cihjb25zdCBBYnN0cmFjdExvY2tlciYsIENvZGVCbG9jayogY29kZUJsCiAKIHZvaWQgRGF0YWJh
c2U6Om5vdGlmeURlc3RydWN0aW9uKENvZGVCbG9jayogY29kZUJsb2NrKQogewotICAgIExvY2tl
ciBsb2NrZXIgeyBtX2xvY2sgfTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOwogICAg
IAogICAgIG1fYnl0ZWNvZGVzTWFwLnJlbW92ZShjb2RlQmxvY2spOwogICAgIG1fY29tcGlsYXRp
b25NYXAucmVtb3ZlKGNvZGVCbG9jayk7CkBAIC04OCw3ICs4OCw3IEBAIHZvaWQgRGF0YWJhc2U6
Om5vdGlmeURlc3RydWN0aW9uKENvZGVCbG9jayogY29kZUJsb2NrKQogCiB2b2lkIERhdGFiYXNl
OjphZGRDb21waWxhdGlvbihDb2RlQmxvY2sqIGNvZGVCbG9jaywgUmVmPENvbXBpbGF0aW9uPiYm
IGNvbXBpbGF0aW9uKQogewotICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKyAgICBMb2Nr
SG9sZGVyIGxvY2tlcihtX2xvY2spOwogICAgIEFTU0VSVCghaXNDb21waWxhdGlvblRocmVhZCgp
KTsKIAogICAgIG1fY29tcGlsYXRpb25zLmFwcGVuZChjb21waWxhdGlvbi5jb3B5UmVmKCkpOwpA
QCAtMTc0LDcgKzE3NCw3IEBAIHZvaWQgRGF0YWJhc2U6OnJlZ2lzdGVyVG9TYXZlQXRFeGl0KGNv
bnN0IGNoYXIqIGZpbGVuYW1lKQogCiB2b2lkIERhdGFiYXNlOjpsb2dFdmVudChDb2RlQmxvY2sq
IGNvZGVCbG9jaywgY29uc3QgY2hhciogc3VtbWFyeSwgY29uc3QgQ1N0cmluZyYgZGV0YWlsKQog
ewotICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlciht
X2xvY2spOwogICAgIAogICAgIEJ5dGVjb2RlcyogYnl0ZWNvZGVzID0gZW5zdXJlQnl0ZWNvZGVz
Rm9yKGxvY2tlciwgY29kZUJsb2NrKTsKICAgICBDb21waWxhdGlvbiogY29tcGlsYXRpb24gPSBt
X2NvbXBpbGF0aW9uTWFwLmdldChjb2RlQmxvY2spOwpAQCAtMTg2LDE0ICsxODYsMTQgQEAgdm9p
ZCBEYXRhYmFzZTo6YWRkRGF0YWJhc2VUb0F0RXhpdCgpCiAgICAgaWYgKCsrZGlkUmVnaXN0ZXJB
dEV4aXQgPT0gMSkKICAgICAgICAgYXRleGl0KGF0RXhpdENhbGxiYWNrKTsKICAgICAKLSAgICBM
b2NrZXIgbG9ja2VyIHsgcmVnaXN0cmF0aW9uTG9jayB9OworICAgIExvY2tIb2xkZXIgaG9sZGVy
KHJlZ2lzdHJhdGlvbkxvY2spOwogICAgIG1fbmV4dFJlZ2lzdGVyZWREYXRhYmFzZSA9IGZpcnN0
RGF0YWJhc2U7CiAgICAgZmlyc3REYXRhYmFzZSA9IHRoaXM7CiB9CiAKIHZvaWQgRGF0YWJhc2U6
OnJlbW92ZURhdGFiYXNlRnJvbUF0RXhpdCgpCiB7Ci0gICAgTG9ja2VyIGxvY2tlciB7IHJlZ2lz
dHJhdGlvbkxvY2sgfTsKKyAgICBMb2NrSG9sZGVyIGhvbGRlcihyZWdpc3RyYXRpb25Mb2NrKTsK
ICAgICBmb3IgKERhdGFiYXNlKiogY3VycmVudCA9ICZmaXJzdERhdGFiYXNlOyAqY3VycmVudDsg
Y3VycmVudCA9ICYoKmN1cnJlbnQpLT5tX25leHRSZWdpc3RlcmVkRGF0YWJhc2UpIHsKICAgICAg
ICAgaWYgKCpjdXJyZW50ICE9IHRoaXMpCiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTIxMiw3
ICsyMTIsNyBAQCB2b2lkIERhdGFiYXNlOjpwZXJmb3JtQXRFeGl0U2F2ZSgpIGNvbnN0CiAKIERh
dGFiYXNlKiBEYXRhYmFzZTo6cmVtb3ZlRmlyc3RBdEV4aXREYXRhYmFzZSgpCiB7Ci0gICAgTG9j
a2VyIGxvY2tlciB7IHJlZ2lzdHJhdGlvbkxvY2sgfTsKKyAgICBMb2NrSG9sZGVyIGhvbGRlcihy
ZWdpc3RyYXRpb25Mb2NrKTsKICAgICBEYXRhYmFzZSogcmVzdWx0ID0gZmlyc3REYXRhYmFzZTsK
ICAgICBpZiAocmVzdWx0KSB7CiAgICAgICAgIGZpcnN0RGF0YWJhc2UgPSByZXN1bHQtPm1fbmV4
dFJlZ2lzdGVyZWREYXRhYmFzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
cm9maWxlci9Qcm9maWxlclVJRC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIv
UHJvZmlsZXJVSUQuY3BwCmluZGV4IGYwMDBjOTg4ODNmNjBkNDk1M2FhZjMyNDgzNWU5NzVkZmRk
MTJlNmQuLjg3Yzk3Y2ZkOGI1MDRmYzc2ZjkxYzA0NzZmZGI3MWM3Yzg4ZmFlMjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlclVJRC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyVUlELmNwcApAQCAtMzcsNyAr
MzcsNyBAQCBVSUQgVUlEOjpjcmVhdGUoKQogICAgIHN0YXRpYyBMb2NrIGxvY2s7CiAgICAgc3Rh
dGljIHVpbnQ2NF90IGNvdW50ZXI7CiAgICAgCi0gICAgTG9ja2VyIGxvY2tlciB7IGxvY2sgfTsK
KyAgICBMb2NrSG9sZGVyIGxvY2tlcihsb2NrKTsKICAgICBVSUQgcmVzdWx0OwogICAgIHJlc3Vs
dC5tX3VpZCA9ICsrY291bnRlcjsKICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGVmZXJyZWRXb3JrVGltZXIuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGVmZXJyZWRXb3JrVGltZXIuY3BwCmluZGV4IDFmMmRi
ZWFmYzRkNjFhZjQ4ZTYzOWZjNTliZmQyNGQ0NWFlMGRkZDMuLjI5ZDVkZmU3OGFiMjk0N2UzOWJj
ZTY5NzcwNDI5NzdmZGExMjI0NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0RlZmVycmVkV29ya1RpbWVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9EZWZlcnJlZFdvcmtUaW1lci5jcHAKQEAgLTE1NCw3ICsxNTQsNyBAQCBib29sIERl
ZmVycmVkV29ya1RpbWVyOjpoYXNEZXBlbmRhbmN5SW5QZW5kaW5nV29yayhUaWNrZXQgdGlja2V0
LCBKU0NlbGwqIGRlcGVuZAogCiB2b2lkIERlZmVycmVkV29ya1RpbWVyOjpzY2hlZHVsZVdvcmtT
b29uKFRpY2tldCB0aWNrZXQsIFRhc2smJiB0YXNrKQogewotICAgIExvY2tlciBsb2NrZXIgeyBt
X3Rhc2tMb2NrIH07CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV90YXNrTG9jayk7CiAgICAgbV90
YXNrcy5hcHBlbmQoc3RkOjptYWtlX3R1cGxlKHRpY2tldCwgV1RGTW92ZSh0YXNrKSkpOwogICAg
IGlmICghaXNTY2hlZHVsZWQoKSAmJiAhbV9jdXJyZW50bHlSdW5uaW5nVGFzaykKICAgICAgICAg
c2V0VGltZVVudGlsRmlyZSgwX3MpOwpAQCAtMTc0LDcgKzE3NCw3IEBAIGJvb2wgRGVmZXJyZWRX
b3JrVGltZXI6OmNhbmNlbFBlbmRpbmdXb3JrKFRpY2tldCB0aWNrZXQpCiB2b2lkIERlZmVycmVk
V29ya1RpbWVyOjpkaWRSZXN1bWVTY3JpcHRFeGVjdXRpb25Pd25lcigpCiB7CiAgICAgQVNTRVJU
KCFtX2N1cnJlbnRseVJ1bm5pbmdUYXNrKTsKLSAgICBMb2NrZXIgbG9ja2VyIHsgbV90YXNrTG9j
ayB9OworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fdGFza0xvY2spOwogICAgIGlmICghaXNTY2hl
ZHVsZWQoKSAmJiBtX3Rhc2tzLnNpemUoKSkKICAgICAgICAgc2V0VGltZVVudGlsRmlyZSgwX3Mp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQ
cm9maWxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2Zp
bGVyLmNwcAppbmRleCBkNzFmM2VjMTlmZjM2NzQ2NzcwN2ZlNTJiODgwMjRjNTYyN2ExNGFkLi41
ZmY1ODdlZTk0MDE1OGU2NGVlOWQxNjBiZjYwMDQ0YTFiNjlkZjQzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcApAQCAtMzI0LDcg
KzMyNCw3IEBAIHZvaWQgU2FtcGxpbmdQcm9maWxlcjo6dGltZXJMb29wKCkKICAgICB3aGlsZSAo
dHJ1ZSkgewogICAgICAgICBTZWNvbmRzIHN0YWNrVHJhY2VQcm9jZXNzaW5nVGltZSA9IDBfczsK
ICAgICAgICAgewotICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OworICAgICAg
ICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKICAgICAgICAgICAgIGlmIChVTkxJS0VM
WShtX2lzU2h1dERvd24pKQogICAgICAgICAgICAgICAgIHJldHVybjsKIApAQCAtNjcxLDEzICs2
NzEsMTMgQEAgdGVtcGxhdGUgdm9pZCBTYW1wbGluZ1Byb2ZpbGVyOjp2aXNpdChTbG90VmlzaXRv
ciYpOwogCiB2b2lkIFNhbXBsaW5nUHJvZmlsZXI6OnNodXRkb3duKCkKIHsKLSAgICBMb2NrZXIg
bG9ja2VyIHsgbV9sb2NrIH07CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKICAgICBt
X2lzU2h1dERvd24gPSB0cnVlOwogfQogCiB2b2lkIFNhbXBsaW5nUHJvZmlsZXI6OnN0YXJ0KCkK
IHsKLSAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CisgICAgTG9ja0hvbGRlciBsb2NrZXIo
bV9sb2NrKTsKICAgICBzdGFydChsb2NrZXIpOwogfQogCkBAIC03MDMsMTkgKzcwMywxOSBAQCB2
b2lkIFNhbXBsaW5nUHJvZmlsZXI6Om5vdGljZUN1cnJlbnRUaHJlYWRBc0pTQ0V4ZWN1dGlvblRo
cmVhZChjb25zdCBBYnN0cmFjdExvYwogCiB2b2lkIFNhbXBsaW5nUHJvZmlsZXI6Om5vdGljZUN1
cnJlbnRUaHJlYWRBc0pTQ0V4ZWN1dGlvblRocmVhZCgpCiB7Ci0gICAgTG9ja2VyIGxvY2tlciB7
IG1fbG9jayB9OworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgbm90aWNlQ3Vy
cmVudFRocmVhZEFzSlNDRXhlY3V0aW9uVGhyZWFkKGxvY2tlcik7CiB9CiAKIHZvaWQgU2FtcGxp
bmdQcm9maWxlcjo6bm90aWNlSlNMb2NrQWNxdWlzaXRpb24oKQogewotICAgIExvY2tlciBsb2Nr
ZXIgeyBtX2xvY2sgfTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOwogICAgIG5vdGlj
ZUN1cnJlbnRUaHJlYWRBc0pTQ0V4ZWN1dGlvblRocmVhZChsb2NrZXIpOwogfQogCiB2b2lkIFNh
bXBsaW5nUHJvZmlsZXI6Om5vdGljZVZNRW50cnkoKQogewotICAgIExvY2tlciBsb2NrZXIgeyBt
X2xvY2sgfTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOwogICAgIEFTU0VSVChtX3Zt
LmVudHJ5U2NvcGUpOwogICAgIG5vdGljZUN1cnJlbnRUaHJlYWRBc0pTQ0V4ZWN1dGlvblRocmVh
ZChsb2NrZXIpOwogICAgIG1fbGFzdFRpbWUgPSBtX3N0b3B3YXRjaC0+ZWxhcHNlZFRpbWUoKTsK
QEAgLTk5MSw3ICs5OTEsNyBAQCB2b2lkIFNhbXBsaW5nUHJvZmlsZXI6OnJlZ2lzdGVyRm9yUmVw
b3J0QXRFeGl0KCkKICAgICBzdGF0aWMgTG9jayByZWdpc3RyYXRpb25Mb2NrOwogICAgIHN0YXRp
YyBIYXNoU2V0PFJlZlB0cjxTYW1wbGluZ1Byb2ZpbGVyPj4qIHByb2ZpbGVzVG9SZXBvcnQ7CiAK
LSAgICBMb2NrZXIgbG9ja2VyIHsgcmVnaXN0cmF0aW9uTG9jayB9OworICAgIExvY2tIb2xkZXIg
aG9sZGVyKHJlZ2lzdHJhdGlvbkxvY2spOwogCiAgICAgaWYgKCFwcm9maWxlc1RvUmVwb3J0KSB7
CiAgICAgICAgIHByb2ZpbGVzVG9SZXBvcnQgPSBuZXcgSGFzaFNldDxSZWZQdHI8U2FtcGxpbmdQ
cm9maWxlcj4+KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9X
YXRjaGRvZy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XYXRjaGRvZy5jcHAK
aW5kZXggNGRhYzVlMTk4ODAyNmM3ZWVhOWJkMjQ4NDE0NDc0ZWE1MzRhMmNlNy4uNGY1ZDVjNGU0
NTFiYTE2MTE3YTI3YTFmNzc5NDgxNzJlNTk2MzRhZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvV2F0Y2hkb2cuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1dhdGNoZG9nLmNwcApAQCAtMTQ0LDcgKzE0NCw3IEBAIHZvaWQgV2F0Y2hkb2c6
OnN0YXJ0VGltZXIoU2Vjb25kcyB0aW1lTGltaXQpCiAgICAgLy8gdmlhIHdpbGxEZXN0cm95Vk0o
KSBiZWZvcmUgaXQgZ29lcyBhd2F5LgogICAgIFJlZlB0cjxXYXRjaGRvZz4gcHJvdGVjdGVkVGhp
cyA9IHRoaXM7CiAgICAgbV90aW1lclF1ZXVlLT5kaXNwYXRjaEFmdGVyKHRpbWVMaW1pdCwgW3Ro
aXMsIHByb3RlY3RlZFRoaXNdIHsKLSAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9Owor
ICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOwogICAgICAgICBpZiAobV92bSkKICAg
ICAgICAgICAgIG1fdm0tPm5vdGlmeU5lZWRXYXRjaGRvZ0NoZWNrKCk7CiAgICAgfSk7CkBAIC0x
NTksNyArMTU5LDcgQEAgdm9pZCBXYXRjaGRvZzo6c3RvcFRpbWVyKCkKIAogdm9pZCBXYXRjaGRv
Zzo6d2lsbERlc3Ryb3lWTShWTSogdm0pCiB7Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9
OworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgQVNTRVJUX1VOVVNFRCh2bSwg
bV92bSA9PSB2bSk7CiAgICAgbV92bSA9IG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdG9vbHMvVk1JbnNwZWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rvb2xzL1ZNSW5zcGVjdG9yLmNwcAppbmRleCBlNDlkYWUxZTFiYzlkZDcwYzllYjIwMmQ4
NzcwOWZjYzZjYTY3MDkwLi5lZDg4ZmYyYzc0YWYyNWMyMzkwMWU2ZWU2NDg5N2U3OWZjYjJhMzcw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvVk1JbnNwZWN0b3IuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9WTUluc3BlY3Rvci5jcHAKQEAgLTEy
Nyw3ICsxMjcsNyBAQCBhdXRvIFZNSW5zcGVjdG9yOjppc1ZhbGlkRXhlY3V0YWJsZU1lbW9yeShj
b25zdCBWTUluc3BlY3Rvcjo6TG9ja2VyJiwgdm9pZCogbWFjaAogICAgICAgICAgICAgcmV0dXJu
IEZ1bmN0b3JTdGF0dXM6OkNvbnRpbnVlOyAvLyBTa2lwIHRoaXMgVk0uCiAgICAgICAgIH0KIAot
ICAgICAgICBMb2NrZXIgZXhlY3V0YWJsZUFsbG9jYXRvckxvY2tlciB7IGxvY2sgfTsKKyAgICAg
ICAgTG9ja0hvbGRlciBleGVjdXRhYmxlQWxsb2NhdG9yTG9ja2VyKGxvY2spOwogICAgICAgICBp
ZiAoYWxsb2NhdG9yLmlzVmFsaWRFeGVjdXRhYmxlTWVtb3J5KGV4ZWN1dGFibGVBbGxvY2F0b3JM
b2NrZXIsIG1hY2hpbmVQQykpIHsKICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKICAgICAgICAg
ICAgIHJldHVybiBGdW5jdG9yU3RhdHVzOjpEb25lOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUJCUVBsYW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUJCUVBsYW4uY3BwCmluZGV4IGY3OGVkMjU1NDY0MTQzMzk1N2FiZGJjOGFiYTcwZGMz
OWE2YWI1M2YuLjM2ZWY2NGRhMzM1Yzc0OGVjNTc0N2EyMWFjMGUyNzBjOWMzNTZlMTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFuLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAKQEAgLTEyNSw3ICsxMjUs
NyBAQCB2b2lkIEJCUVBsYW46OndvcmsoQ29tcGlsYXRpb25FZmZvcnQgZWZmb3J0KQogICAgICAg
ICAvLyBhbHdheXMgY2FsbCB0aGUgZmFzdGVzdCBjb2RlLiBBbnkgZnVuY3Rpb24gbGlua2VkIGFm
dGVyIHVzIHdpbGwgc2VlIG91ciBuZXcgY29kZSBhbmQgdGhlIG5ldyBjYWxsc2l0ZXMsIHdoaWNo
IHRoZXkKICAgICAgICAgLy8gd2lsbCB1cGRhdGUuIEl0J3MgYWxzbyBvayBpZiB0aGV5IHB1Ymxp
c2ggdGhlaXIgY29kZSBiZWZvcmUgd2UgcmVzZXQgdGhlIGluc3RydWN0aW9uIGNhY2hlcyBiZWNh
dXNlIGFmdGVyIHdlIHJlbGVhc2UKICAgICAgICAgLy8gdGhlIGxvY2sgb3VyIGNvZGUgaXMgcmVh
ZHkgdG8gYmUgcHVibGlzaGVkIHRvby4KLSAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fY29kZUJs
b2NrLT5tX2xvY2sgfTsKKyAgICAgICAgTG9ja0hvbGRlciBob2xkZXIobV9jb2RlQmxvY2stPm1f
bG9jayk7CiAKICAgICAgICAgbV9jb2RlQmxvY2stPm1fYmJxQ2FsbGVlc1ttX2Z1bmN0aW9uSW5k
ZXhdID0gY2FsbGVlLmNvcHlSZWYoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUVudHJ5UGxhbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtRW50cnlQbGFuLmNwcAppbmRleCA2ZmViMTU3NzM0ZGZjOWZiYjhiMmFmNGNhNjNjN2VhYzBm
MDQzYWJhLi45ZDJjMjRkOGVhMDI5YTBhOTVlNDI1OGFhMjA5ZjBmM2M4NzE1NTk5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRW50cnlQbGFuLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRW50cnlQbGFuLmNwcApAQCAtMTY0LDEzICsx
NjQsMTMgQEAgcHVibGljOgogICAgIFRocmVhZENvdW50SG9sZGVyKEVudHJ5UGxhbiYgcGxhbikK
ICAgICAgICAgOiBtX3BsYW4ocGxhbikKICAgICB7Ci0gICAgICAgIExvY2tlciBsb2NrZXIgeyBt
X3BsYW4ubV9sb2NrIH07CisgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fcGxhbi5tX2xvY2sp
OwogICAgICAgICBtX3BsYW4ubV9udW1iZXJPZkFjdGl2ZVRocmVhZHMrKzsKICAgICB9CiAKICAg
ICB+VGhyZWFkQ291bnRIb2xkZXIoKQogICAgIHsKLSAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1f
cGxhbi5tX2xvY2sgfTsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9wbGFuLm1fbG9jayk7
CiAgICAgICAgIG1fcGxhbi5tX251bWJlck9mQWN0aXZlVGhyZWFkcy0tOwogCiAgICAgICAgIGlm
ICghbV9wbGFuLm1fbnVtYmVyT2ZBY3RpdmVUaHJlYWRzICYmICFtX3BsYW4uaGFzV29yaygpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9NR1BsYW4uY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9NR1BsYW4uY3BwCmluZGV4IGVkZmQ2OGFm
YzRhNjZkZmUwNjAzMDc2ZGYxZWEzOWZmZjk1ZDVlMGMuLjhjMjM4OGIxNmYwY2UxNDhkN2Q4YTEz
NTYyNmRhNmY1ZDM0ZTk0Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21PTUdQbGFuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT01H
UGxhbi5jcHAKQEAgLTEwNCw3ICsxMDQsNyBAQCB2b2lkIE9NR1BsYW46OndvcmsoQ29tcGlsYXRp
b25FZmZvcnQpCiAgICAgICAgIC8vIGFsd2F5cyBjYWxsIHRoZSBmYXN0ZXN0IGNvZGUuIEFueSBm
dW5jdGlvbiBsaW5rZWQgYWZ0ZXIgdXMgd2lsbCBzZWUgb3VyIG5ldyBjb2RlIGFuZCB0aGUgbmV3
IGNhbGxzaXRlcywgd2hpY2ggdGhleQogICAgICAgICAvLyB3aWxsIHVwZGF0ZS4gSXQncyBhbHNv
IG9rIGlmIHRoZXkgcHVibGlzaCB0aGVpciBjb2RlIGJlZm9yZSB3ZSByZXNldCB0aGUgaW5zdHJ1
Y3Rpb24gY2FjaGVzIGJlY2F1c2UgYWZ0ZXIgd2UgcmVsZWFzZQogICAgICAgICAvLyB0aGUgbG9j
ayBvdXIgY29kZSBpcyByZWFkeSB0byBiZSBwdWJsaXNoZWQgdG9vLgotICAgICAgICBMb2NrZXIg
bG9ja2VyIHsgbV9jb2RlQmxvY2stPm1fbG9jayB9OworICAgICAgICBMb2NrSG9sZGVyIGhvbGRl
cihtX2NvZGVCbG9jay0+bV9sb2NrKTsKIAogICAgICAgICBtX2NvZGVCbG9jay0+bV9vbWdDYWxs
ZWVzW21fZnVuY3Rpb25JbmRleF0gPSBjYWxsZWUuY29weVJlZigpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGxhbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtUGxhbi5jcHAKaW5kZXggZjczNWI0MDkyZGNmNzhmNzg2NjM2M2I4MGUy
YzJkNjViMjg5MDYxMy4uYzZhOTA0ZDY4NDQxMWQyMDZlYTBmYTk0ZDM5OGZlMDcxMjE3ZTZiZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBsYW4uY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QbGFuLmNwcApAQCAtNjQsNyArNjQsNyBA
QCB2b2lkIFBsYW46OnJ1bkNvbXBsZXRpb25UYXNrcyhjb25zdCBBYnN0cmFjdExvY2tlciYpCiAK
IHZvaWQgUGxhbjo6YWRkQ29tcGxldGlvblRhc2soQ29udGV4dCogY29udGV4dCwgQ29tcGxldGlv
blRhc2smJiB0YXNrKQogewotICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKyAgICBMb2Nr
SG9sZGVyIGxvY2tlcihtX2xvY2spOwogICAgIGlmICghaXNDb21wbGV0ZSgpKQogICAgICAgICBt
X2NvbXBsZXRpb25UYXNrcy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoY29udGV4dCwgV1RGTW92ZSh0
YXNrKSkpOwogICAgIGVsc2UKQEAgLTczLDcgKzczLDcgQEAgdm9pZCBQbGFuOjphZGRDb21wbGV0
aW9uVGFzayhDb250ZXh0KiBjb250ZXh0LCBDb21wbGV0aW9uVGFzayYmIHRhc2spCiAKIHZvaWQg
UGxhbjo6d2FpdEZvckNvbXBsZXRpb24oKQogewotICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sg
fTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOwogICAgIGlmICghaXNDb21wbGV0ZSgp
KSB7CiAgICAgICAgIG1fY29tcGxldGVkLndhaXQobV9sb2NrKTsKICAgICB9CkBAIC04MSw3ICs4
MSw3IEBAIHZvaWQgUGxhbjo6d2FpdEZvckNvbXBsZXRpb24oKQogCiBib29sIFBsYW46OnRyeVJl
bW92ZUNvbnRleHRBbmRDYW5jZWxJZkxhc3QoQ29udGV4dCYgY29udGV4dCkKIHsKLSAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9sb2NrIH07CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKIAog
ICAgIGlmIChBU1NFUlRfRU5BQkxFRCkgewogICAgICAgICAvLyBXZSBhbGxvdyB0aGUgZmlyc3Qg
Y29tcGxldGlvbiB0YXNrIHRvIG5vdCBoYXZlIGEgQ29udGV4dC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TaWduYXR1cmUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbVNpZ25hdHVyZS5jcHAKaW5kZXggNmIyMGQwODk0NTQyMDY3OWU3NjI3
ZWUwYzhkYzE5YmRjOTg2N2I4OC4uNjI0NWEzMWQwMGMxZTAxZTc0NzgwZTcwYjEwOWEwZTc1ZDZk
ZDYyNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNpZ25hdHVy
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNpZ25hdHVyZS5jcHAK
QEAgLTE2Nyw3ICsxNjcsNyBAQCBzdHJ1Y3QgUGFyYW1ldGVyVHlwZXMgewogUmVmUHRyPFNpZ25h
dHVyZT4gU2lnbmF0dXJlSW5mb3JtYXRpb246OnNpZ25hdHVyZUZvcihjb25zdCBWZWN0b3I8VHlw
ZSwgMT4mIHJlc3VsdHMsIGNvbnN0IFZlY3RvcjxUeXBlPiYgYXJncykKIHsKICAgICBTaWduYXR1
cmVJbmZvcm1hdGlvbiYgaW5mbyA9IHNpbmdsZXRvbigpOwotICAgIExvY2tlciBsb2NrZXIgeyBp
bmZvLm1fbG9jayB9OworICAgIExvY2tIb2xkZXIgbG9jayhpbmZvLm1fbG9jayk7CiAKICAgICBh
dXRvIGFkZFJlc3VsdCA9IGluZm8ubV9zaWduYXR1cmVTZXQudGVtcGxhdGUgYWRkPFBhcmFtZXRl
clR5cGVzPihQYXJhbWV0ZXJUeXBlcyB7IHJlc3VsdHMsIGFyZ3MgfSk7CiAgICAgcmV0dXJuIG1h
a2VSZWYoKmFkZFJlc3VsdC5pdGVyYXRvci0+a2V5KTsKQEAgLTE3Niw3ICsxNzYsNyBAQCBSZWZQ
dHI8U2lnbmF0dXJlPiBTaWduYXR1cmVJbmZvcm1hdGlvbjo6c2lnbmF0dXJlRm9yKGNvbnN0IFZl
Y3RvcjxUeXBlLCAxPiYgcmVzdQogdm9pZCBTaWduYXR1cmVJbmZvcm1hdGlvbjo6dHJ5Q2xlYW51
cCgpCiB7CiAgICAgU2lnbmF0dXJlSW5mb3JtYXRpb24mIGluZm8gPSBzaW5nbGV0b24oKTsKLSAg
ICBMb2NrZXIgbG9ja2VyIHsgaW5mby5tX2xvY2sgfTsKKyAgICBMb2NrSG9sZGVyIGxvY2soaW5m
by5tX2xvY2spOwogCiAgICAgaW5mby5tX3NpZ25hdHVyZVNldC5yZW1vdmVJZihbJl0gKGF1dG8m
IGhhc2gpIHsKICAgICAgICAgY29uc3QgYXV0byYgc2lnbmF0dXJlID0gaGFzaC5rZXk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtV29ya2xpc3QuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVdvcmtsaXN0LmNwcAppbmRleCA1YmFkMGQ5MGE1
NjJlMjVkZGU4MTdiNTgyYzA2MDY2NTZjOTA2ZWJhLi4wY2M2ZWZmYmQ3OTQ4Y2MwZDNjZTg0MWE4
OTM1ZjZkNTc5ZWI1MGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtV29ya2xpc3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Xb3Jr
bGlzdC5jcHAKQEAgLTExMiw3ICsxMTIsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIEFTU0VSVCgh
cGxhbi0+aGFzV29yaygpIHx8IHBsYW4tPm11bHRpVGhyZWFkZWQoKSk7CiAgICAgICAgIGlmIChw
bGFuLT5oYXNXb3JrKCkgJiYgIXdhc011bHRpVGhyZWFkZWQgJiYgcGxhbi0+bXVsdGlUaHJlYWRl
ZCgpKSB7Ci0gICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgKndvcmtsaXN0Lm1fbG9jayB9Owor
ICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoKndvcmtsaXN0Lm1fbG9jayk7CiAgICAgICAg
ICAgICBlbGVtZW50LnNldFRvTmV4dFByaW9yaXR5KCk7CiAgICAgICAgICAgICB3b3JrbGlzdC5t
X3F1ZXVlLmVucXVldWUoV1RGTW92ZShlbGVtZW50KSk7CiAgICAgICAgICAgICB3b3JrbGlzdC5t
X3BsYW5FbnF1ZXVlZC0+bm90aWZ5QWxsKGxvY2tlcik7CkBAIC0xNTAsNyArMTUwLDcgQEAgdm9p
ZCBXb3JrbGlzdDo6UXVldWVFbGVtZW50OjpzZXRUb05leHRQcmlvcml0eSgpCiAKIHZvaWQgV29y
a2xpc3Q6OmVucXVldWUoUmVmPFBsYW4+IHBsYW4pCiB7Ci0gICAgTG9ja2VyIGxvY2tlciB7ICpt
X2xvY2sgfTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2NrKTsKIAogICAgIGlmIChBU1NF
UlRfRU5BQkxFRCkgewogICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBtX3F1ZXVl
KQpAQCAtMTY5LDcgKzE2OSw3IEBAIHZvaWQgV29ya2xpc3Q6OmVucXVldWUoUmVmPFBsYW4+IHBs
YW4pCiB2b2lkIFdvcmtsaXN0Ojpjb21wbGV0ZVBsYW5TeW5jaHJvbm91c2x5KFBsYW4mIHBsYW4p
CiB7CiAgICAgewotICAgICAgICBMb2NrZXIgbG9ja2VyIHsgKm1fbG9jayB9OworICAgICAgICBM
b2NrSG9sZGVyIGxvY2tlcigqbV9sb2NrKTsKICAgICAgICAgbV9xdWV1ZS5kZWNyZWFzZUtleShb
Jl0gKFF1ZXVlRWxlbWVudCYgZWxlbWVudCkgewogICAgICAgICAgICAgaWYgKGVsZW1lbnQucGxh
biA9PSAmcGxhbikgewogICAgICAgICAgICAgICAgIGVsZW1lbnQucHJpb3JpdHkgPSBQcmlvcml0
eTo6U3luY2hyb25vdXM7CkBAIC0xODksNyArMTg5LDcgQEAgdm9pZCBXb3JrbGlzdDo6Y29tcGxl
dGVQbGFuU3luY2hyb25vdXNseShQbGFuJiBwbGFuKQogCiB2b2lkIFdvcmtsaXN0OjpzdG9wQWxs
UGxhbnNGb3JDb250ZXh0KENvbnRleHQmIGNvbnRleHQpCiB7Ci0gICAgTG9ja2VyIGxvY2tlciB7
ICptX2xvY2sgfTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2NrKTsKICAgICBWZWN0b3I8
UXVldWVFbGVtZW50PiBlbGVtZW50czsKICAgICB3aGlsZSAoIW1fcXVldWUuaXNFbXB0eSgpKSB7
CiAgICAgICAgIFF1ZXVlRWxlbWVudCBlbGVtZW50ID0gbV9xdWV1ZS5kZXF1ZXVlKCk7CkBAIC0y
MTgsNyArMjE4LDcgQEAgV29ya2xpc3Q6OldvcmtsaXN0KCkKIHsKICAgICB1bnNpZ25lZCBudW1i
ZXJPZkNvbXBpbGF0aW9uVGhyZWFkcyA9IE9wdGlvbnM6OnVzZUNvbmN1cnJlbnRKSVQoKSA/IGtl
cm5UQ1NNQXdhcmVOdW1iZXJPZlByb2Nlc3NvckNvcmVzKCkgOiAxOwogICAgIG1fdGhyZWFkcy5y
ZXNlcnZlQ2FwYWNpdHkobnVtYmVyT2ZDb21waWxhdGlvblRocmVhZHMpOwotICAgIExvY2tlciBs
b2NrZXIgeyAqbV9sb2NrIH07CisgICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fbG9jayk7CiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mQ29tcGlsYXRpb25UaHJlYWRzOyBpKysp
CiAgICAgICAgIG1fdGhyZWFkcy51bmNoZWNrZWRBcHBlbmQobWFrZVVuaXF1ZTxXb3JrbGlzdDo6
VGhyZWFkPihsb2NrZXIsICp0aGlzKSk7CiB9CkBAIC0yMjYsNyArMjI2LDcgQEAgV29ya2xpc3Q6
OldvcmtsaXN0KCkKIFdvcmtsaXN0Ojp+V29ya2xpc3QoKQogewogICAgIHsKLSAgICAgICAgTG9j
a2VyIGxvY2tlciB7ICptX2xvY2sgfTsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fbG9j
ayk7CiAgICAgICAgIG1fcXVldWUuZW5xdWV1ZSh7IFByaW9yaXR5OjpTaHV0ZG93biwgbmV4dFRp
Y2tldCgpLCBudWxscHRyIH0pOwogICAgICAgICBtX3BsYW5FbnF1ZXVlZC0+bm90aWZ5QWxsKGxv
Y2tlcik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9iZW5jaG1hcmtzL0xvY2tTcGVl
ZFRlc3QuY3BwIGIvU291cmNlL1dURi9iZW5jaG1hcmtzL0xvY2tTcGVlZFRlc3QuY3BwCmluZGV4
IDAxNDQwMjAyOTE1M2VkZjE2YTljM2U1MTI2MmQyZWE1ODI2MTcyNTEuLmIyMGRkN2U3MTM2MTIw
ZjFlMDlkNTE2ZTVmMjM0MmFjMzFjZTQxMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvYmVuY2ht
YXJrcy9Mb2NrU3BlZWRUZXN0LmNwcAorKysgYi9Tb3VyY2UvV1RGL2JlbmNobWFya3MvTG9ja1Nw
ZWVkVGVzdC5jcHAKQEAgLTEwOCw3ICsxMDgsNyBAQCBzdHJ1Y3QgQmVuY2htYXJrIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXlO
dW1JdGVyYXRpb25zKys7CiAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbnVtSXRlcmF0aW9uc0xvY2sgfTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG51bUl0ZXJhdGlvbnNMb2NrKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIG51bUl0ZXJhdGlvbnMgKz0gbXlOdW1JdGVyYXRpb25zOwog
ICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL0F1dG9tYXRpY1RocmVhZC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9BdXRvbWF0aWNU
aHJlYWQuY3BwCmluZGV4IGY0ZWE3OGQxM2UxY2RkYjYxOWI4MjI4NjhkMzNjNzI3YzlmMmY5OGIu
Ljg3YjkxZjEwNWM3MmQwNDYwZDYxN2UzODU1NzNjZWNlY2IyN2NhNTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL0F1dG9tYXRpY1RocmVhZC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvQXV0
b21hdGljVGhyZWFkLmNwcApAQCAtMTI0LDcgKzEyNCw3IEBAIEF1dG9tYXRpY1RocmVhZDo6fkF1
dG9tYXRpY1RocmVhZCgpCiB7CiAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coUmF3
UG9pbnRlcih0aGlzKSwgIjogRGVsZXRpbmcgQXV0b21hdGljVGhyZWFkLlxuIik7Ci0gICAgTG9j
a2VyIGxvY2tlciB7ICptX2xvY2sgfTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2NrKTsK
ICAgICAKICAgICAvLyBJdCdzIHBvc3NpYmxlIHRoYXQgd2UncmUgaW4gYSB3YWl0aW5nIHN0YXRl
IHdpdGggdGhlIHRocmVhZCBzaHV0IGRvd24uIFRoaXMgaXMgYSBnb29meSB3YXkgdG8KICAgICAv
LyBkaWUsIGJ1dCBpdCBjb3VsZCBoYXBwZW4uCkBAIC0xNTUsNyArMTU1LDcgQEAgYm9vbCBBdXRv
bWF0aWNUaHJlYWQ6Om5vdGlmeShjb25zdCBBYnN0cmFjdExvY2tlciYgbG9ja2VyKQogCiB2b2lk
IEF1dG9tYXRpY1RocmVhZDo6am9pbigpCiB7Ci0gICAgTG9ja2VyIGxvY2tlciB7ICptX2xvY2sg
fTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2NrKTsKICAgICB3aGlsZSAobV9pc1J1bm5p
bmcpCiAgICAgICAgIG1faXNSdW5uaW5nQ29uZGl0aW9uLndhaXQoKm1fbG9jayk7CiB9CkBAIC0x
NzgsNyArMTc4LDcgQEAgdm9pZCBBdXRvbWF0aWNUaHJlYWQ6OnN0YXJ0KGNvbnN0IEFic3RyYWN0
TG9ja2VyJikKICAgICAgICAgICAgIHRocmVhZC0+dGhyZWFkRGlkU3RhcnQoKTsKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgaWYgKEFTU0VSVF9FTkFCTEVEKSB7Ci0gICAgICAgICAgICAgICAg
TG9ja2VyIGxvY2tlciB7ICptX2xvY2sgfTsKKyAgICAgICAgICAgICAgICBMb2NrSG9sZGVyIGxv
Y2tlcigqbV9sb2NrKTsKICAgICAgICAgICAgICAgICBBU1NFUlQobV9jb25kaXRpb24tPmNvbnRh
aW5zKGxvY2tlciwgdGhpcykpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCkBAIC0xOTks
NyArMTk5LDcgQEAgdm9pZCBBdXRvbWF0aWNUaHJlYWQ6OnN0YXJ0KGNvbnN0IEFic3RyYWN0TG9j
a2VyJikKICAgICAgICAgICAgIAogICAgICAgICAgICAgZm9yICg7OykgewogICAgICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7ICptX2xvY2sgfTsKKyAg
ICAgICAgICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fbG9jayk7CiAgICAgICAgICAg
ICAgICAgICAgIGZvciAoOzspIHsKICAgICAgICAgICAgICAgICAgICAgICAgIFBvbGxSZXN1bHQg
cmVzdWx0ID0gcG9sbChsb2NrZXIpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3Vs
dCA9PSBQb2xsUmVzdWx0OjpXb3JrKQpAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQgQXV0b21hdGlj
VGhyZWFkOjpzdGFydChjb25zdCBBYnN0cmFjdExvY2tlciYpCiAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICAgICAgV29ya1Jlc3VsdCByZXN1bHQgPSB3b3JrKCk7CiAgICAgICAgICAgICAg
ICAgaWYgKHJlc3VsdCA9PSBXb3JrUmVzdWx0OjpTdG9wKSB7Ci0gICAgICAgICAgICAgICAgICAg
IExvY2tlciBsb2NrZXIgeyAqbV9sb2NrIH07CisgICAgICAgICAgICAgICAgICAgIExvY2tIb2xk
ZXIgbG9ja2VyKCptX2xvY2spOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RvcFBlcm1h
bmVudGx5KGxvY2tlcik7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKHJlc3VsdCA9PSBXb3JrUmVzdWx0OjpDb250aW51ZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9BdXRvbWF0aWNUaHJlYWQuaCBiL1NvdXJjZS9XVEYvd3RmL0F1dG9tYXRp
Y1RocmVhZC5oCmluZGV4IDhkN2MyYjUxNjgwYTNlYTY3MjhlNTE3NGZjODE4MDY4ZGVlOTVjODYu
LjZkNTU3YmMzYjZjZDk0YzMxNGMyZjA5NDA5ZGY5NzIwYzZkOWI4ZDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL0F1dG9tYXRpY1RocmVhZC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0F1dG9t
YXRpY1RocmVhZC5oCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXVEYgewogLy8KIC8vICAg
ICBmb3IgKDs7KSB7CiAvLyAgICAgICAgIHsKLS8vICAgICAgICAgICAgIExvY2tlciBsb2NrZXIg
eyBtX2xvY2sgfTsKKy8vICAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CiAv
LyAgICAgICAgICAgICBmb3IgKDs7KSB7CiAvLyAgWzFdICAgICAgICAgICAgc3R1ZmYgdGhhdCBj
b3VsZCBicmVhaywgcmV0dXJuLCBvciBmYWxsIHRocm91Z2g7CiAvLyAgICAgICAgICAgICAgICAg
bV9jb25kaXRpb24ud2FpdChtX2xvY2spOwpAQCAtMTQyLDcgKzE0Miw3IEBAIHByb3RlY3RlZDoK
ICAgICAvLyB7CiAgICAgLy8gICAgIGZvciAoOzspIHsKICAgICAvLyAgICAgICAgIHsKLSAgICAv
LyAgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CisgICAgLy8gICAgICAgICAg
ICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKICAgICAvLyAgICAgICAgICAgICBmb3IgKDs7
KSB7CiAgICAgLy8gICAgICAgICAgICAgICAgIFBvbGxSZXN1bHQgcmVzdWx0ID0gcG9sbCgpOwog
ICAgIC8vICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IFBvbGxSZXN1bHQ6OldvcmspCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9NZXRhQWxsb2NhdG9yLmNwcCBiL1NvdXJjZS9XVEYv
d3RmL01ldGFBbGxvY2F0b3IuY3BwCmluZGV4IGVlZjg5Yjc3ZTdiZGRmY2Q2NzY1ZDY3M2FhNTY1
YTA2NzdjZDcwYTQuLmQ3YzhlZGVjZWI5YzExMmFiNTAzODQwZGI0ZmY1NmJmNzdhNTJhMzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL01ldGFBbGxvY2F0b3IuY3BwCisrKyBiL1NvdXJjZS9X
VEYvd3RmL01ldGFBbGxvY2F0b3IuY3BwCkBAIC05Niw3ICs5Niw3IEBAIHZvaWQgTWV0YUFsbG9j
YXRvckhhbmRsZTo6c2hyaW5rKHNpemVfdCBuZXdTaXplSW5CeXRlcykKICAgICBBU1NFUlQobmV3
U2l6ZUluQnl0ZXMgPD0gc2l6ZUluQnl0ZXMpOwogCiAgICAgTWV0YUFsbG9jYXRvciYgYWxsb2Nh
dG9yID0gdGhpcy0+YWxsb2NhdG9yKCk7Ci0gICAgTG9ja2VyIGxvY2tlciB7IGFsbG9jYXRvci5t
X2xvY2sgfTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcigmYWxsb2NhdG9yLm1fbG9jayk7CiAKICAg
ICBuZXdTaXplSW5CeXRlcyA9IGFsbG9jYXRvci5yb3VuZFVwKG5ld1NpemVJbkJ5dGVzKTsKICAg
ICAKQEAgLTI4Nyw3ICsyODcsNyBAQCB2b2lkIE1ldGFBbGxvY2F0b3I6OmFkZEZyZWVTcGFjZUZy
b21SZWxlYXNlZEhhbmRsZShGcmVlU3BhY2VQdHIgc3RhcnQsIHNpemVfdCBzaQogdm9pZCBNZXRh
QWxsb2NhdG9yOjphZGRGcmVzaEZyZWVTcGFjZSh2b2lkKiBzdGFydCwgc2l6ZV90IHNpemVJbkJ5
dGVzKQogewogICAgIENvbmZpZzo6QXNzZXJ0Tm90RnJvemVuU2NvcGUgYXNzZXJ0Tm90RnJvemVu
U2NvcGU7Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OworICAgIExvY2tIb2xkZXIgbG9j
a2VyKCZtX2xvY2spOwogICAgIG1fYnl0ZXNSZXNlcnZlZCArPSBzaXplSW5CeXRlczsKICAgICBh
ZGRGcmVlU3BhY2UoRnJlZVNwYWNlUHRyOjptYWtlRnJvbVJhd1BvaW50ZXIoc3RhcnQpLCBzaXpl
SW5CeXRlcyk7CiB9CkBAIC0yOTUsNyArMjk1LDcgQEAgdm9pZCBNZXRhQWxsb2NhdG9yOjphZGRG
cmVzaEZyZWVTcGFjZSh2b2lkKiBzdGFydCwgc2l6ZV90IHNpemVJbkJ5dGVzKQogc2l6ZV90IE1l
dGFBbGxvY2F0b3I6OmRlYnVnRnJlZVNwYWNlU2l6ZSgpCiB7CiAjaWZuZGVmIE5ERUJVRwotICAg
IExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcigmbV9sb2Nr
KTsKICAgICBzaXplX3QgcmVzdWx0ID0gMDsKICAgICBmb3IgKEZyZWVTcGFjZU5vZGUqIG5vZGUg
PSBtX2ZyZWVTcGFjZVNpemVNYXAuZmlyc3QoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPnN1Y2Nlc3Nv
cigpKQogICAgICAgICByZXN1bHQgKz0gbm9kZS0+c2l6ZUluQnl0ZXMoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL1BhcmFsbGVsSGVscGVyUG9vbC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9Q
YXJhbGxlbEhlbHBlclBvb2wuY3BwCmluZGV4IDQ0M2Q3MzEzZTZiYWQwMjg0MzQ5ZTYxMDdmMjAz
OTdmOTNmNDNhOGQuLjdjMDU2YmExNTEyMDBmNzY5ZGM2YmM5MjQ0MTljYzM2OGM3MjE4NjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BhcmFsbGVsSGVscGVyUG9vbC5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvUGFyYWxsZWxIZWxwZXJQb29sLmNwcApAQCAtMzMsMTQgKzMzLDE0IEBAIG5h
bWVzcGFjZSBXVEYgewogUGFyYWxsZWxIZWxwZXJDbGllbnQ6OlBhcmFsbGVsSGVscGVyQ2xpZW50
KFJlZlB0cjxQYXJhbGxlbEhlbHBlclBvb2w+JiYgcG9vbCkKICAgICA6IG1fcG9vbChXVEZNb3Zl
KHBvb2wpKQogewotICAgIExvY2tlciBsb2NrZXIgeyAqbV9wb29sLT5tX2xvY2sgfTsKKyAgICBM
b2NrSG9sZGVyIGxvY2tlcigqbV9wb29sLT5tX2xvY2spOwogICAgIFJFTEVBU0VfQVNTRVJUKCFt
X3Bvb2wtPm1faXNEeWluZyk7CiAgICAgbV9wb29sLT5tX2NsaWVudHMuYXBwZW5kKHRoaXMpOwog
fQogCiBQYXJhbGxlbEhlbHBlckNsaWVudDo6flBhcmFsbGVsSGVscGVyQ2xpZW50KCkKIHsKLSAg
ICBMb2NrZXIgbG9ja2VyIHsgKm1fcG9vbC0+bV9sb2NrIH07CisgICAgTG9ja0hvbGRlciBsb2Nr
ZXIoKm1fcG9vbC0+bV9sb2NrKTsKICAgICBmaW5pc2gobG9ja2VyKTsKIAogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbV9wb29sLT5tX2NsaWVudHMuc2l6ZSgpOyArK2kpIHsKQEAgLTU0LDcg
KzU0LDcgQEAgUGFyYWxsZWxIZWxwZXJDbGllbnQ6On5QYXJhbGxlbEhlbHBlckNsaWVudCgpCiAK
IHZvaWQgUGFyYWxsZWxIZWxwZXJDbGllbnQ6OnNldFRhc2soUmVmUHRyPFNoYXJlZFRhc2s8dm9p
ZCAoKT4+JiYgdGFzaykKIHsKLSAgICBMb2NrZXIgbG9ja2VyIHsgKm1fcG9vbC0+bV9sb2NrIH07
CisgICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fcG9vbC0+bV9sb2NrKTsKICAgICBSRUxFQVNFX0FT
U0VSVCghbV90YXNrKTsKICAgICBtX3Rhc2sgPSBXVEZNb3ZlKHRhc2spOwogICAgIG1fcG9vbC0+
ZGlkTWFrZVdvcmtBdmFpbGFibGUobG9ja2VyKTsKQEAgLTYyLDcgKzYyLDcgQEAgdm9pZCBQYXJh
bGxlbEhlbHBlckNsaWVudDo6c2V0VGFzayhSZWZQdHI8U2hhcmVkVGFzazx2b2lkICgpPj4mJiB0
YXNrKQogCiB2b2lkIFBhcmFsbGVsSGVscGVyQ2xpZW50OjpmaW5pc2goKQogewotICAgIExvY2tl
ciBsb2NrZXIgeyAqbV9wb29sLT5tX2xvY2sgfTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9w
b29sLT5tX2xvY2spOwogICAgIGZpbmlzaChsb2NrZXIpOwogfQogCkBAIC03MCw3ICs3MCw3IEBA
IHZvaWQgUGFyYWxsZWxIZWxwZXJDbGllbnQ6OmRvU29tZUhlbHBpbmcoKQogewogICAgIFJlZlB0
cjxTaGFyZWRUYXNrPHZvaWQgKCk+PiB0YXNrOwogICAgIHsKLSAgICAgICAgTG9ja2VyIGxvY2tl
ciB7ICptX3Bvb2wtPm1fbG9jayB9OworICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9wb29s
LT5tX2xvY2spOwogICAgICAgICB0YXNrID0gY2xhaW1UYXNrKGxvY2tlcik7CiAgICAgICAgIGlm
ICghdGFzaykKICAgICAgICAgICAgIHJldHVybjsKQEAgLTExMCw3ICsxMTAsNyBAQCB2b2lkIFBh
cmFsbGVsSGVscGVyQ2xpZW50OjpydW5UYXNrKGNvbnN0IFJlZlB0cjxTaGFyZWRUYXNrPHZvaWQg
KCk+PiYgdGFzaykKICAgICB0YXNrLT5ydW4oKTsKIAogICAgIHsKLSAgICAgICAgTG9ja2VyIGxv
Y2tlciB7ICptX3Bvb2wtPm1fbG9jayB9OworICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9w
b29sLT5tX2xvY2spOwogICAgICAgICBSRUxFQVNFX0FTU0VSVChtX251bUFjdGl2ZSk7CiAgICAg
ICAgIC8vIE5vIG5ldyB0YXNrIGNvdWxkIGhhdmUgYmVlbiBpbnN0YWxsZWQsIHNpbmNlIHdlIHdl
cmUgc3RpbGwgYWN0aXZlLgogICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV90YXNrIHx8IG1fdGFz
ayA9PSB0YXNrKTsKQEAgLTEzMyw3ICsxMzMsNyBAQCBQYXJhbGxlbEhlbHBlclBvb2w6On5QYXJh
bGxlbEhlbHBlclBvb2woKQogICAgIFJFTEVBU0VfQVNTRVJUKG1fY2xpZW50cy5pc0VtcHR5KCkp
OwogICAgIAogICAgIHsKLSAgICAgICAgTG9ja2VyIGxvY2tlciB7ICptX2xvY2sgfTsKKyAgICAg
ICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fbG9jayk7CiAgICAgICAgIG1faXNEeWluZyA9IHRydWU7
CiAgICAgICAgIG1fd29ya0F2YWlsYWJsZUNvbmRpdGlvbi0+bm90aWZ5QWxsKGxvY2tlcik7CiAg
ICAgfQpAQCAtMTQ0LDcgKzE0NCw3IEBAIFBhcmFsbGVsSGVscGVyUG9vbDo6flBhcmFsbGVsSGVs
cGVyUG9vbCgpCiAKIHZvaWQgUGFyYWxsZWxIZWxwZXJQb29sOjplbnN1cmVUaHJlYWRzKHVuc2ln
bmVkIG51bVRocmVhZHMpCiB7Ci0gICAgTG9ja2VyIGxvY2tlciB7ICptX2xvY2sgfTsKKyAgICBM
b2NrSG9sZGVyIGxvY2tlcigqbV9sb2NrKTsKICAgICBpZiAobnVtVGhyZWFkcyA8IG1fbnVtVGhy
ZWFkcykKICAgICAgICAgcmV0dXJuOwogICAgIG1fbnVtVGhyZWFkcyA9IG51bVRocmVhZHM7CkBA
IC0xNTcsNyArMTU3LDcgQEAgdm9pZCBQYXJhbGxlbEhlbHBlclBvb2w6OmRvU29tZUhlbHBpbmco
KQogICAgIFBhcmFsbGVsSGVscGVyQ2xpZW50KiBjbGllbnQ7CiAgICAgUmVmUHRyPFNoYXJlZFRh
c2s8dm9pZCAoKT4+IHRhc2s7CiAgICAgewotICAgICAgICBMb2NrZXIgbG9ja2VyIHsgKm1fbG9j
ayB9OworICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2NrKTsKICAgICAgICAgY2xpZW50
ID0gZ2V0Q2xpZW50V2l0aFRhc2sobG9ja2VyKTsKICAgICAgICAgaWYgKCFjbGllbnQpCiAgICAg
ICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9TZWNvbmRzLmNwcCBi
L1NvdXJjZS9XVEYvd3RmL1NlY29uZHMuY3BwCmluZGV4IGQ2MDdjOTcyOWFmMTY3ZmZiN2FkMmE2
NjZhMTY0NzBiN2RmYjQ5MWEuLjVhODFmMDlkOWI3ZGU0ZGQ4ZjMwZTg5NGI5MmY1OTIyMzE2ZGZi
OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1NlY29uZHMuY3BwCisrKyBiL1NvdXJjZS9X
VEYvd3RmL1NlY29uZHMuY3BwCkBAIC04Niw3ICs4Niw3IEBAIHZvaWQgc2xlZXAoU2Vjb25kcyB2
YWx1ZSkKIAogICAgIExvY2sgZmFrZUxvY2s7CiAgICAgQ29uZGl0aW9uIGZha2VDb25kaXRpb247
Ci0gICAgTG9ja2VyIGZha2VMb2NrZXIgeyBmYWtlTG9jayB9OworICAgIExvY2tIb2xkZXIgZmFr
ZUxvY2tlcihmYWtlTG9jayk7CiAgICAgZmFrZUNvbmRpdGlvbi53YWl0Rm9yKGZha2VMb2NrLCB2
YWx1ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1RpbWVXaXRoRHluYW1pY0Ns
b2NrVHlwZS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9UaW1lV2l0aER5bmFtaWNDbG9ja1R5cGUuY3Bw
CmluZGV4IDJiNTBkZTFhMzFhNWNkOTMxMWM4MjI0MmI0NzVlMTQ2ZGZmNDY3M2UuLmM3YjllZDJl
NjJlMDY3NGU3Y2E1M2I4NWIxMzI5MWNiMDM4ZDE5NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL1RpbWVXaXRoRHluYW1pY0Nsb2NrVHlwZS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvVGlt
ZVdpdGhEeW5hbWljQ2xvY2tUeXBlLmNwcApAQCAtMTI1LDcgKzEyNSw3IEBAIHZvaWQgc2xlZXAo
Y29uc3QgVGltZVdpdGhEeW5hbWljQ2xvY2tUeXBlJiB0aW1lKQogewogICAgIExvY2sgZmFrZUxv
Y2s7CiAgICAgQ29uZGl0aW9uIGZha2VDb25kaXRpb247Ci0gICAgTG9ja2VyIGZha2VMb2NrZXIg
eyBmYWtlTG9jayB9OworICAgIExvY2tIb2xkZXIgZmFrZUxvY2tlcihmYWtlTG9jayk7CiAgICAg
ZmFrZUNvbmRpdGlvbi53YWl0VW50aWwoZmFrZUxvY2ssIHRpbWUpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9Xb3JrZXJQb29sLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1dvcmtlclBv
b2wuY3BwCmluZGV4IDhhOWMxZmRhNzRhNzNiMmM1YWI1Y2RhMmQ4ZTQ2MDlhYmU4MGEzMGIuLjQy
YzllMTM1YWE5ZWI5MWM4YzBiZjRkNDgyMzM0ZTU5ZGRmZWM2MjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL1dvcmtlclBvb2wuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL1dvcmtlclBvb2wu
Y3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdGhyZWFkRGlkU3RhcnQo
KSBmaW5hbAogICAgIHsKLSAgICAgICAgTG9ja2VyIGxvY2tlciB7ICptX3Bvb2wubV9sb2NrIH07
CisgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKCptX3Bvb2wubV9sb2NrKTsKICAgICAgICAgbV9w
b29sLm1fbnVtYmVyT2ZBY3RpdmVXb3JrZXJzKys7CiAgICAgfQogCkBAIC04Nyw3ICs4Nyw3IEBA
IFdvcmtlclBvb2w6OldvcmtlclBvb2woQVNDSUlMaXRlcmFsIG5hbWUsIHVuc2lnbmVkIG51bWJl
ck9mV29ya2VycywgU2Vjb25kcyB0aW1lCiAgICAgLCBtX3RpbWVvdXQodGltZW91dCkKICAgICAs
IG1fbmFtZShuYW1lKQogewotICAgIExvY2tlciBsb2NrZXIgeyAqbV9sb2NrIH07CisgICAgTG9j
a0hvbGRlciBsb2NrZXIoKm1fbG9jayk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51
bWJlck9mV29ya2VyczsgKytpKQogICAgICAgICBtX3dvcmtlcnMuYXBwZW5kKGFkb3B0UmVmKCpu
ZXcgV29ya2VyKGxvY2tlciwgKnRoaXMsIG1fbG9jaywgbV9jb25kaXRpb24uY29weVJlZigpLCB0
aW1lb3V0KSkpOwogfQpAQCAtOTUsNyArOTUsNyBAQCBXb3JrZXJQb29sOjpXb3JrZXJQb29sKEFT
Q0lJTGl0ZXJhbCBuYW1lLCB1bnNpZ25lZCBudW1iZXJPZldvcmtlcnMsIFNlY29uZHMgdGltZQog
V29ya2VyUG9vbDo6fldvcmtlclBvb2woKQogewogICAgIHsKLSAgICAgICAgTG9ja2VyIGxvY2tl
ciB7ICptX2xvY2sgfTsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fbG9jayk7CiAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IG1fd29ya2Vycy5zaXplKCk7IGktLTspCiAgICAgICAgICAg
ICBtX3Rhc2tzLmFwcGVuZChudWxscHRyKTsgLy8gVXNlIG51bGwgdGFzayB0byBpbmRpY2F0ZSB0
aGF0IHdlIHdhbnQgdGhlIHRocmVhZCB0byB0ZXJtaW5hdGUuCiAgICAgICAgIG1fY29uZGl0aW9u
LT5ub3RpZnlBbGwobG9ja2VyKTsKQEAgLTEyMCw3ICsxMjAsNyBAQCBib29sIFdvcmtlclBvb2w6
OnNob3VsZFNsZWVwKGNvbnN0IEFic3RyYWN0TG9ja2VyJikKIAogdm9pZCBXb3JrZXJQb29sOjpw
b3N0VGFzayhGdW5jdGlvbjx2b2lkKCk+JiYgdGFzaykKIHsKLSAgICBMb2NrZXIgbG9ja2VyIHsg
Km1fbG9jayB9OworICAgIExvY2tIb2xkZXIgbG9ja2VyKCptX2xvY2spOwogICAgIG1fdGFza3Mu
YXBwZW5kKFdURk1vdmUodGFzaykpOwogICAgIG1fY29uZGl0aW9uLT5ub3RpZnlPbmUobG9ja2Vy
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L1RocmVhZGluZ1BPU0lYLmNw
cCBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L1RocmVhZGluZ1BPU0lYLmNwcAppbmRleCA1OTE3YjM3
OWYxMmFmZjVmZjQyZDEzNDdmYmRjYjFmMjA4YTA3MDdmLi4zNDgxMjdkYjY4NGJiYmFiMzQ0MmE5
MTdhMDhiMzE2ZWU5N2UxNjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9UaHJl
YWRpbmdQT1NJWC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvcG9zaXgvVGhyZWFkaW5nUE9TSVgu
Y3BwCkBAIC0zODMsNyArMzgzLDcgQEAgYXV0byBUaHJlYWQ6OnN1c3BlbmQoKSAtPiBFeHBlY3Rl
ZDx2b2lkLCBQbGF0Zm9ybVN1c3BlbmRFcnJvcj4KICAgICAvLyBZb3VyIGlzc3VpbmcgdGhyZWFk
IChBKSBhdHRlbXB0cyB0byBzdXNwZW5kIHRoZSB0YXJnZXQgdGhyZWFkIChCKS4gVGhlbiwgeW91
IHdpbGwgc3VzcGVuZCB0aGUgdGhyZWFkIChDKSBhZGRpdGlvbmFsbHkuCiAgICAgLy8gVGhpcyBj
YXNlIGZyZXF1ZW50bHkgaGFwcGVucyBpZiB5b3Ugc3RvcCB0aHJlYWRzIHRvIHBlcmZvcm0gc3Rh
Y2sgc2Nhbm5pbmcuIEJ1dCB0aHJlYWQgKEIpIG1heSBob2xkIHRoZSBsb2NrIG9mIHRocmVhZCAo
QykuCiAgICAgLy8gSW4gdGhhdCBjYXNlLCBkZWFkIGxvY2sgaGFwcGVucy4gVXNpbmcgZ2xvYmFs
IGxvY2sgaGVyZSBhdm9pZHMgdGhpcyBkZWFkIGxvY2suCi0gICAgTG9ja2VyIGxvY2tlciB7IGds
b2JhbFN1c3BlbmRMb2NrIH07CisgICAgTG9ja0hvbGRlciBsb2NrZXIoZ2xvYmFsU3VzcGVuZExv
Y2spOwogI2lmIE9TKERBUldJTikKICAgICBrZXJuX3JldHVybl90IHJlc3VsdCA9IHRocmVhZF9z
dXNwZW5kKG1fcGxhdGZvcm1UaHJlYWQpOwogICAgIGlmIChyZXN1bHQgIT0gS0VSTl9TVUNDRVNT
KQpAQCAtNDE0LDcgKzQxNCw3IEBAIGF1dG8gVGhyZWFkOjpzdXNwZW5kKCkgLT4gRXhwZWN0ZWQ8
dm9pZCwgUGxhdGZvcm1TdXNwZW5kRXJyb3I+CiB2b2lkIFRocmVhZDo6cmVzdW1lKCkKIHsKICAg
ICAvLyBEdXJpbmcgcmVzdW1lLCBzdXNwZW5kIG9yIHJlc3VtZSBzaG91bGQgbm90IGJlIGV4ZWN1
dGVkIGZyb20gdGhlIG90aGVyIHRocmVhZHMuCi0gICAgTG9ja2VyIGxvY2tlciB7IGdsb2JhbFN1
c3BlbmRMb2NrIH07CisgICAgTG9ja0hvbGRlciBsb2NrZXIoZ2xvYmFsU3VzcGVuZExvY2spOwog
I2lmIE9TKERBUldJTikKICAgICB0aHJlYWRfcmVzdW1lKG1fcGxhdGZvcm1UaHJlYWQpOwogI2Vs
c2UKQEAgLTQ3Miw3ICs0NzIsNyBAQCBzdGF0aWMgVGhyZWFkU3RhdGVNZXRhZGF0YSB0aHJlYWRT
dGF0ZU1ldGFkYXRhKCkKIAogc2l6ZV90IFRocmVhZDo6Z2V0UmVnaXN0ZXJzKFBsYXRmb3JtUmVn
aXN0ZXJzJiByZWdpc3RlcnMpCiB7Ci0gICAgTG9ja2VyIGxvY2tlciB7IGdsb2JhbFN1c3BlbmRM
b2NrIH07CisgICAgTG9ja0hvbGRlciBsb2NrZXIoZ2xvYmFsU3VzcGVuZExvY2spOwogI2lmIE9T
KERBUldJTikKICAgICBhdXRvIG1ldGFkYXRhID0gdGhyZWFkU3RhdGVNZXRhZGF0YSgpOwogICAg
IGtlcm5fcmV0dXJuX3QgcmVzdWx0ID0gdGhyZWFkX2dldF9zdGF0ZShtX3BsYXRmb3JtVGhyZWFk
LCBtZXRhZGF0YS5mbGF2b3IsICh0aHJlYWRfc3RhdGVfdCkmcmVnaXN0ZXJzLCAmbWV0YWRhdGEu
dXNlckNvdW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9EYmdIZWxwZXJXaW4u
Y3BwIGIvU291cmNlL1dURi93dGYvd2luL0RiZ0hlbHBlcldpbi5jcHAKaW5kZXggNWExYWI0Y2Jk
YzdiMzQxZTg0NGY2NWZkNzNjOTVkN2QxYzdlMjVjMi4uNTU5ZGFhYjJhNGFiNDg1NWIzYzY0Yjhm
ZDJkNmUwZTdmMGViMzAzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvd2luL0RiZ0hlbHBl
cldpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvd2luL0RiZ0hlbHBlcldpbi5jcHAKQEAgLTQ5
LDcgKzQ5LDcgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVN5bWJvbHMoSEFORExFIGhQcm9jKQog
CiBib29sIFN5bUZyb21BZGRyZXNzKEhBTkRMRSBoUHJvYywgRFdPUkQ2NCBhZGRyZXNzLCBEV09S
RDY0KiBkaXNwbGFjZW1lbnQsIFNZTUJPTF9JTkZPKiBzeW1ib2xJbmZvKQogewotICAgIExvY2tl
ciBsb2NrZXIgeyBjYWxsTXV0ZXggfTsKKyAgICBMb2NrSG9sZGVyIGxvY2soY2FsbE11dGV4KTsK
ICAgICBpbml0aWFsaXplU3ltYm9scyhoUHJvYyk7CiAKICAgICBib29sIHN1Y2Nlc3MgPSA6OlN5
bUZyb21BZGRyKGhQcm9jLCBhZGRyZXNzLCBkaXNwbGFjZW1lbnQsIHN5bWJvbEluZm8pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvd2luL1RocmVhZGluZ1dpbi5jcHAgYi9Tb3VyY2UvV1RG
L3d0Zi93aW4vVGhyZWFkaW5nV2luLmNwcAppbmRleCA0YjM3MjQ3Zjk5MDcyM2UzMjhlN2RjOTJk
ZTI1YjVjMzA4NmFlOTI2Li42Njc4YWViZWY3MDlmYzQwYjNhZTUxM2NmZGU3NjQxYzAyZWFlODRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi93aW4vVGhyZWFkaW5nV2luLmNwcAorKysgYi9T
b3VyY2UvV1RGL3d0Zi93aW4vVGhyZWFkaW5nV2luLmNwcApAQCAtMjE0LDcgKzIxNCw3IEBAIHZv
aWQgVGhyZWFkOjpkZXRhY2goKQogYXV0byBUaHJlYWQ6OnN1c3BlbmQoKSAtPiBFeHBlY3RlZDx2
b2lkLCBQbGF0Zm9ybVN1c3BlbmRFcnJvcj4KIHsKICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX01F
U1NBR0UodGhpcyAhPSAmVGhyZWFkOjpjdXJyZW50KCksICJXZSBkbyBub3Qgc3VwcG9ydCBzdXNw
ZW5kaW5nIHRoZSBjdXJyZW50IHRocmVhZCBpdHNlbGYuIik7Ci0gICAgTG9ja2VyIGxvY2tlciB7
IGdsb2JhbFN1c3BlbmRMb2NrIH07CisgICAgTG9ja0hvbGRlciBsb2NrZXIoZ2xvYmFsU3VzcGVu
ZExvY2spOwogICAgIERXT1JEIHJlc3VsdCA9IFN1c3BlbmRUaHJlYWQobV9oYW5kbGUpOwogICAg
IGlmIChyZXN1bHQgIT0gKERXT1JEKS0xKQogICAgICAgICByZXR1cm4geyB9OwpAQCAtMjI0LDEz
ICsyMjQsMTMgQEAgYXV0byBUaHJlYWQ6OnN1c3BlbmQoKSAtPiBFeHBlY3RlZDx2b2lkLCBQbGF0
Zm9ybVN1c3BlbmRFcnJvcj4KIC8vIER1cmluZyByZXN1bWUsIHN1c3BlbmQgb3IgcmVzdW1lIHNo
b3VsZCBub3QgYmUgZXhlY3V0ZWQgZnJvbSB0aGUgb3RoZXIgdGhyZWFkcy4KIHZvaWQgVGhyZWFk
OjpyZXN1bWUoKQogewotICAgIExvY2tlciBsb2NrZXIgeyBnbG9iYWxTdXNwZW5kTG9jayB9Owor
ICAgIExvY2tIb2xkZXIgbG9ja2VyKGdsb2JhbFN1c3BlbmRMb2NrKTsKICAgICBSZXN1bWVUaHJl
YWQobV9oYW5kbGUpOwogfQogCiBzaXplX3QgVGhyZWFkOjpnZXRSZWdpc3RlcnMoUGxhdGZvcm1S
ZWdpc3RlcnMmIHJlZ2lzdGVycykKIHsKLSAgICBMb2NrZXIgbG9ja2VyIHsgZ2xvYmFsU3VzcGVu
ZExvY2sgfTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihnbG9iYWxTdXNwZW5kTG9jayk7CiAgICAg
cmVnaXN0ZXJzLkNvbnRleHRGbGFncyA9IENPTlRFWFRfSU5URUdFUiB8IENPTlRFWFRfQ09OVFJP
TDsKICAgICBHZXRUaHJlYWRDb250ZXh0KG1faGFuZGxlLCAmcmVnaXN0ZXJzKTsKICAgICByZXR1
cm4gc2l6ZW9mKENPTlRFWFQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmNwcAppbmRleCA5NzVjZmMzZWNkNTcyMzJhYmU3NzNi
OWQxYmM0ZDA0NGIzYzVlZTg0Li5mYWQ1YzlkNmI0YjE3MmQ3MjJiNmE5YjM3ZDJlMGU4M2RjNTcz
MmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVk
aW9EZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FzeW5j
QXVkaW9EZWNvZGVyLmNwcApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBB
c3luY0F1ZGlvRGVjb2Rlcjo6QXN5bmNBdWRpb0RlY29kZXIoKQogewogICAgIC8vIFN0YXJ0IHdv
cmtlciB0aHJlYWQuCi0gICAgTG9ja2VyIGxvY2tlciB7IG1fdGhyZWFkQ3JlYXRpb25NdXRleCB9
OworICAgIExvY2tIb2xkZXIgbG9jayhtX3RocmVhZENyZWF0aW9uTXV0ZXgpOwogICAgIG1fdGhy
ZWFkID0gVGhyZWFkOjpjcmVhdGUoIkF1ZGlvIERlY29kZXIiLCBbdGhpc10gewogICAgICAgICBy
dW5Mb29wKCk7CiAgICAgfSwgVGhyZWFkVHlwZTo6QXVkaW8pOwpAQCAtNjYsNyArNjYsNyBAQCB2
b2lkIEFzeW5jQXVkaW9EZWNvZGVyOjpydW5Mb29wKCkKIAogICAgIHsKICAgICAgICAgLy8gV2Fp
dCBmb3IgdW50aWwgd2UgaGF2ZSBtX3RocmVhZCBlc3RhYmxpc2hlZCBiZWZvcmUgc3RhcnRpbmcg
dGhlIHJ1biBsb29wLgotICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV90aHJlYWRDcmVhdGlvbk11
dGV4IH07CisgICAgICAgIExvY2tIb2xkZXIgbG9jayhtX3RocmVhZENyZWF0aW9uTXV0ZXgpOwog
ICAgIH0KIAogICAgIC8vIEtlZXAgcnVubmluZyBkZWNvZGluZyB0YXNrcyB1bnRpbCB3ZSdyZSBr
aWxsZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2Uu
Y3BwCmluZGV4IDZiYjgwODg5NmQ3YWNmMTRjOWRhYjQwYmI1MTUzYTY2ZDcwMDQyMDEuLjNhNGNk
ODVlNWVjMTAwYzg3MTMyODc2Mzg0NDk5NTUyOTBjZGMzZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwCkBAIC0yODIsNyArMjgyLDcgQEAg
dm9pZCBEYXRhYmFzZTo6cGVyZm9ybUNsb3NlKCkKICAgICBBU1NFUlQoZGF0YWJhc2VUaHJlYWQo
KS5nZXRUaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgewotICAgICAgICBM
b2NrZXIgbG9ja2VyIHsgbV90cmFuc2FjdGlvbkluUHJvZ3Jlc3NNdXRleCB9OworICAgICAgICBM
b2NrSG9sZGVyIGxvY2tlcihtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzc011dGV4KTsKIAogICAgICAg
ICAvLyBDbGVhbiB1cCB0cmFuc2FjdGlvbnMgdGhhdCBoYXZlIG5vdCBiZWVuIHNjaGVkdWxlZCB5
ZXQ6CiAgICAgICAgIC8vIFRyYW5zYWN0aW9uIHBoYXNlIDEgY2xlYW51cC4gU2VlIGNvbW1lbnQg
b24gIldoYXQgaGFwcGVucyBpZiBhCkBAIC01NDQsMTQgKzU0NCwxNCBAQCB2b2lkIERhdGFiYXNl
OjpzY2hlZHVsZVRyYW5zYWN0aW9uU3RlcChTUUxUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pCiAK
IHZvaWQgRGF0YWJhc2U6OmluUHJvZ3Jlc3NUcmFuc2FjdGlvbkNvbXBsZXRlZCgpCiB7Ci0gICAg
TG9ja2VyIGxvY2tlciB7IG1fdHJhbnNhY3Rpb25JblByb2dyZXNzTXV0ZXggfTsKKyAgICBMb2Nr
SG9sZGVyIGxvY2tlcihtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzc011dGV4KTsKICAgICBtX3RyYW5z
YWN0aW9uSW5Qcm9ncmVzcyA9IGZhbHNlOwogICAgIHNjaGVkdWxlVHJhbnNhY3Rpb24oKTsKIH0K
IAogYm9vbCBEYXRhYmFzZTo6aGFzUGVuZGluZ1RyYW5zYWN0aW9uKCkKIHsKLSAgICBMb2NrZXIg
bG9ja2VyIHsgbV90cmFuc2FjdGlvbkluUHJvZ3Jlc3NNdXRleCB9OworICAgIExvY2tIb2xkZXIg
bG9ja2VyKG1fdHJhbnNhY3Rpb25JblByb2dyZXNzTXV0ZXgpOwogICAgIHJldHVybiBtX3RyYW5z
YWN0aW9uSW5Qcm9ncmVzcyB8fCAhbV90cmFuc2FjdGlvblF1ZXVlLmlzRW1wdHkoKTsKIH0KIApA
QCAtNjgxLDcgKzY4MSw3IEBAIHZvaWQgRGF0YWJhc2U6OnJlc2V0QXV0aG9yaXplcigpCiB2b2lk
IERhdGFiYXNlOjpydW5UcmFuc2FjdGlvbihSZWZQdHI8U1FMVHJhbnNhY3Rpb25DYWxsYmFjaz4m
JiBjYWxsYmFjaywgUmVmUHRyPFNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjaz4mJiBlcnJvckNh
bGxiYWNrLCBSZWZQdHI8Vm9pZENhbGxiYWNrPiYmIHN1Y2Nlc3NDYWxsYmFjaywgUmVmUHRyPFNR
TFRyYW5zYWN0aW9uV3JhcHBlcj4mJiB3cmFwcGVyLCBib29sIHJlYWRPbmx5KQogewogICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1fdHJhbnNhY3Rpb25J
blByb2dyZXNzTXV0ZXggfTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3RyYW5zYWN0aW9uSW5Q
cm9ncmVzc011dGV4KTsKICAgICBpZiAoIW1faXNUcmFuc2FjdGlvblF1ZXVlRW5hYmxlZCkgewog
ICAgICAgICBpZiAoZXJyb3JDYWxsYmFjaykgewogICAgICAgICAgICAgbV9kb2N1bWVudC0+ZXZl
bnRMb29wKCkucXVldWVUYXNrKFRhc2tTb3VyY2U6Ok5ldHdvcmtpbmcsIFtlcnJvckNhbGxiYWNr
ID0gbWFrZVJlZigqZXJyb3JDYWxsYmFjayldKCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmNwcAppbmRleCBlNmQ3ZDY2YTA4
ZDhhYzc1ODM4NjdjMDcwYjEzYzQzYjE2Njk5ZmY5Li5mY2ZmMTA0YzUyZTJjNzg0Mzk1MzU5MzQy
ODEyNjk3ZGZjN2E3YzczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmNwcApAQCAtNTgsNyArNTgsNyBAQCBEYXRhYmFzZVRo
cmVhZDo6fkRhdGFiYXNlVGhyZWFkKCkKIAogdm9pZCBEYXRhYmFzZVRocmVhZDo6c3RhcnQoKQog
ewotICAgIExvY2tlciBsb2NrZXIgeyBtX3RocmVhZENyZWF0aW9uTXV0ZXggfTsKKyAgICBMb2Nr
SG9sZGVyIGxvY2sobV90aHJlYWRDcmVhdGlvbk11dGV4KTsKIAogICAgIGlmIChtX3RocmVhZCkK
ICAgICAgICAgcmV0dXJuOwpAQCAtOTEsNyArOTEsNyBAQCB2b2lkIERhdGFiYXNlVGhyZWFkOjpk
YXRhYmFzZVRocmVhZCgpCiB7CiAgICAgewogICAgICAgICAvLyBXYWl0IGZvciBEYXRhYmFzZVRo
cmVhZDo6c3RhcnQoKSB0byBjb21wbGV0ZS4KLSAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fdGhy
ZWFkQ3JlYXRpb25NdXRleCB9OworICAgICAgICBMb2NrSG9sZGVyIGxvY2sobV90aHJlYWRDcmVh
dGlvbk11dGV4KTsKICAgICAgICAgTE9HKFN0b3JhZ2VBUEksICJTdGFydGVkIERhdGFiYXNlVGhy
ZWFkICVwIiwgdGhpcyk7CiAgICAgfQogCkBAIC0xMTAsNyArMTEwLDcgQEAgdm9pZCBEYXRhYmFz
ZVRocmVhZDo6ZGF0YWJhc2VUaHJlYWQoKQogICAgIC8vIGluY29uc2lzdGVudCBvciBsb2NrZWQg
c3RhdGUuCiAgICAgRGF0YWJhc2VTZXQgb3BlblNldENvcHk7CiAgICAgewotICAgICAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9vcGVuRGF0YWJhc2VTZXRNdXRleCB9OworICAgICAgICBMb2NrSG9sZGVy
IGxvY2sobV9vcGVuRGF0YWJhc2VTZXRNdXRleCk7CiAgICAgICAgIGlmIChtX29wZW5EYXRhYmFz
ZVNldC5zaXplKCkgPiAwKSB7CiAgICAgICAgICAgICAvLyBBcyB0aGUgY2FsbCB0byBjbG9zZSB3
aWxsIG1vZGlmeSB0aGUgb3JpZ2luYWwgc2V0LCB3ZSBtdXN0IHRha2UgYSBjb3B5IHRvIGl0ZXJh
dGUgb3Zlci4KICAgICAgICAgICAgIG9wZW5TZXRDb3B5LnN3YXAobV9vcGVuRGF0YWJhc2VTZXQp
OwpAQCAtMTM0LDcgKzEzNCw3IEBAIHZvaWQgRGF0YWJhc2VUaHJlYWQ6OmRhdGFiYXNlVGhyZWFk
KCkKIAogdm9pZCBEYXRhYmFzZVRocmVhZDo6cmVjb3JkRGF0YWJhc2VPcGVuKERhdGFiYXNlJiBk
YXRhYmFzZSkKIHsKLSAgICBMb2NrZXIgbG9ja2VyIHsgbV9vcGVuRGF0YWJhc2VTZXRNdXRleCB9
OworICAgIExvY2tIb2xkZXIgbG9jayhtX29wZW5EYXRhYmFzZVNldE11dGV4KTsKIAogICAgIEFT
U0VSVChtX3RocmVhZCA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogICAgIEFTU0VSVCghbV9vcGVu
RGF0YWJhc2VTZXQuY29udGFpbnMoJmRhdGFiYXNlKSk7CkBAIC0xNDMsNyArMTQzLDcgQEAgdm9p
ZCBEYXRhYmFzZVRocmVhZDo6cmVjb3JkRGF0YWJhc2VPcGVuKERhdGFiYXNlJiBkYXRhYmFzZSkK
IAogdm9pZCBEYXRhYmFzZVRocmVhZDo6cmVjb3JkRGF0YWJhc2VDbG9zZWQoRGF0YWJhc2UmIGRh
dGFiYXNlKQogewotICAgIExvY2tlciBsb2NrZXIgeyBtX29wZW5EYXRhYmFzZVNldE11dGV4IH07
CisgICAgTG9ja0hvbGRlciBsb2NrKG1fb3BlbkRhdGFiYXNlU2V0TXV0ZXgpOwogCiAgICAgQVNT
RVJUKG1fdGhyZWFkID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAgICAgQVNTRVJUKG1fcXVldWUu
a2lsbGVkKCkgfHwgbV9vcGVuRGF0YWJhc2VTZXQuY29udGFpbnMoJmRhdGFiYXNlKSk7CkBAIC0x
NzIsNyArMTcyLDcgQEAgdm9pZCBEYXRhYmFzZVRocmVhZDo6dW5zY2hlZHVsZURhdGFiYXNlVGFz
a3MoRGF0YWJhc2UmIGRhdGFiYXNlKQogCiBib29sIERhdGFiYXNlVGhyZWFkOjpoYXNQZW5kaW5n
RGF0YWJhc2VBY3Rpdml0eSgpIGNvbnN0CiB7Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1fb3BlbkRh
dGFiYXNlU2V0TXV0ZXggfTsKKyAgICBMb2NrSG9sZGVyIGxvY2sobV9vcGVuRGF0YWJhc2VTZXRN
dXRleCk7CiAgICAgZm9yIChhdXRvJiBkYXRhYmFzZSA6IG1fb3BlbkRhdGFiYXNlU2V0KSB7CiAg
ICAgICAgIGlmIChkYXRhYmFzZS0+aGFzUGVuZGluZ0NyZWF0aW9uRXZlbnQoKSB8fCBkYXRhYmFz
ZS0+aGFzUGVuZGluZ1RyYW5zYWN0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFj
a2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFj
a2VyLmNwcAppbmRleCA4MzRhYzgyN2MyYjFlNWY3ZTIwM2QxNTMwYjM1YzY4ZDFmNGEwOWQ3Li5h
MDM4MjM0Yjc1NTZiY2I1ZWJlMzcxYjNjNTgyYTY4NTU4YWJiNTk4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCkBA
IC0xNTksNyArMTU5LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gRGF0YWJhc2VUcmFja2VyOjpoYXNB
ZGVxdWF0ZVF1b3RhRm9yT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2kKIAogRXhjZXB0aW9uT3I8
dm9pZD4gRGF0YWJhc2VUcmFja2VyOjpjYW5Fc3RhYmxpc2hEYXRhYmFzZShEYXRhYmFzZUNvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgdWludDY0X3QgZXN0aW1hdGVkU2l6ZSkK
IHsKLSAgICBMb2NrZXIgbG9ja0RhdGFiYXNlIHsgbV9vcGVuRGF0YWJhc2VNYXBHdWFyZCB9Owor
ICAgIExvY2tIb2xkZXIgbG9ja0RhdGFiYXNlKG1fZGF0YWJhc2VHdWFyZCk7CiAKICAgICAvLyBG
SVhNRTogV2hhdCBndWFyYW50ZWVzIHRoaXMgY29udGV4dC5zZWN1cml0eU9yaWdpbigpIGlzIG5v
bi1udWxsPwogICAgIGF1dG8gb3JpZ2luID0gY29udGV4dC5zZWN1cml0eU9yaWdpbigpOwpAQCAt
MjA3LDcgKzIwNyw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IERhdGFiYXNlVHJhY2tlcjo6Y2FuRXN0
YWJsaXNoRGF0YWJhc2UoRGF0YWJhc2VDb250ZXh0JiBjb250ZXh0CiAvLyBoZW5jZSBzaG91bGQg
bm90IGJlIGEgcGVyZm9ybWFuY2UgY3JpdGljYWwgcGF0aCBhbnl3YXkuIAogRXhjZXB0aW9uT3I8
dm9pZD4gRGF0YWJhc2VUcmFja2VyOjpyZXRyeUNhbkVzdGFibGlzaERhdGFiYXNlKERhdGFiYXNl
Q29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCB1aW50NjRfdCBlc3RpbWF0ZWRT
aXplKQogewotICAgIExvY2tlciBsb2NrRGF0YWJhc2UgeyBtX29wZW5EYXRhYmFzZU1hcEd1YXJk
IH07CisgICAgTG9ja0hvbGRlciBsb2NrRGF0YWJhc2UobV9kYXRhYmFzZUd1YXJkKTsKIAogICAg
IC8vIEZJWE1FOiBXaGF0IGd1YXJhbnRlZXMgY29udGV4dC5zZWN1cml0eU9yaWdpbigpIGlzIG5v
bi1udWxsPwogICAgIGF1dG8gb3JpZ2luID0gY29udGV4dC5zZWN1cml0eU9yaWdpbigpOwpAQCAt
MjcxLDcgKzI3MSw3IEBAIHVpbnQ2NF90IERhdGFiYXNlVHJhY2tlcjo6bWF4aW11bVNpemUoRGF0
YWJhc2UmIGRhdGFiYXNlKQogewogICAgIC8vIFRoZSBtYXhpbXVtIHNpemUgZm9yIGEgZGF0YWJh
c2UgaXMgdGhlIGZ1bGwgcXVvdGEgZm9yIGl0cyBvcmlnaW4sIG1pbnVzIHRoZSBjdXJyZW50IHVz
YWdlIHdpdGhpbiB0aGUgb3JpZ2luLAogICAgIC8vIHBsdXMgdGhlIGN1cnJlbnQgdXNhZ2Ugb2Yg
dGhlIGdpdmVuIGRhdGFiYXNlCi0gICAgTG9ja2VyIGxvY2tEYXRhYmFzZSB7IG1fb3BlbkRhdGFi
YXNlTWFwR3VhcmQgfTsKKyAgICBMb2NrSG9sZGVyIGxvY2tEYXRhYmFzZShtX2RhdGFiYXNlR3Vh
cmQpOwogICAgIGF1dG8gb3JpZ2luID0gZGF0YWJhc2Uuc2VjdXJpdHlPcmlnaW4oKTsKIAogICAg
IGF1dG8gcXVvdGEgPSBxdW90YU5vTG9jayhvcmlnaW4pOwpAQCAtMzYwLDEzICszNjAsMTMgQEAg
U3RyaW5nIERhdGFiYXNlVHJhY2tlcjo6ZnVsbFBhdGhGb3JEYXRhYmFzZU5vTG9jayhjb25zdCBT
ZWN1cml0eU9yaWdpbkRhdGEmIG9yaWcKIAogU3RyaW5nIERhdGFiYXNlVHJhY2tlcjo6ZnVsbFBh
dGhGb3JEYXRhYmFzZShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbiwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBib29sIGNyZWF0ZUlmTm90RXhpc3RzKQogewotICAgIExvY2tlciBsb2NrRGF0
YWJhc2UgeyBtX29wZW5EYXRhYmFzZU1hcEd1YXJkIH07CisgICAgTG9ja0hvbGRlciBsb2NrRGF0
YWJhc2UobV9kYXRhYmFzZUd1YXJkKTsKICAgICByZXR1cm4gZnVsbFBhdGhGb3JEYXRhYmFzZU5v
TG9jayhvcmlnaW4sIG5hbWUsIGNyZWF0ZUlmTm90RXhpc3RzKS5pc29sYXRlZENvcHkoKTsKIH0K
IAogVmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4gRGF0YWJhc2VUcmFja2VyOjpvcmlnaW5zKCkK
IHsKLSAgICBMb2NrZXIgbG9ja0RhdGFiYXNlIHsgbV9vcGVuRGF0YWJhc2VNYXBHdWFyZCB9Owor
ICAgIExvY2tIb2xkZXIgbG9ja0RhdGFiYXNlKG1fZGF0YWJhc2VHdWFyZCk7CiAKICAgICBvcGVu
VHJhY2tlckRhdGFiYXNlKERvbnRDcmVhdGVJZkRvZXNOb3RFeGlzdCk7CiAgICAgaWYgKCFtX2Rh
dGFiYXNlLmlzT3BlbigpKQpAQCAtNDIxLDcgKzQyMSw3IEBAIFZlY3RvcjxTdHJpbmc+IERhdGFi
YXNlVHJhY2tlcjo6ZGF0YWJhc2VOYW1lcyhjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdp
bikKIHsKICAgICBWZWN0b3I8U3RyaW5nPiBuYW1lczsKICAgICB7Ci0gICAgICAgIExvY2tlciBs
b2NrRGF0YWJhc2UgeyBtX29wZW5EYXRhYmFzZU1hcEd1YXJkIH07CisgICAgICAgIExvY2tIb2xk
ZXIgbG9ja0RhdGFiYXNlKG1fZGF0YWJhc2VHdWFyZCk7CiAgICAgICAgIG5hbWVzID0gZGF0YWJh
c2VOYW1lc05vTG9jayhvcmlnaW4pOwogICAgIH0KICAgICByZXR1cm4gaXNvbGF0ZWRDb3B5KG5h
bWVzKTsKQEAgLTQzNCw3ICs0MzQsNyBAQCBEYXRhYmFzZURldGFpbHMgRGF0YWJhc2VUcmFja2Vy
OjpkZXRhaWxzRm9yTmFtZUFuZE9yaWdpbihjb25zdCBTdHJpbmcmIG5hbWUsIGNvbgogICAgIGlu
dDY0X3QgZXhwZWN0ZWRVc2FnZTsKIAogICAgIHsKLSAgICAgICAgTG9ja2VyIGxvY2tEYXRhYmFz
ZSB7IG1fb3BlbkRhdGFiYXNlTWFwR3VhcmQgfTsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrRGF0
YWJhc2UobV9kYXRhYmFzZUd1YXJkKTsKIAogICAgICAgICBvcGVuVHJhY2tlckRhdGFiYXNlKERv
bnRDcmVhdGVJZkRvZXNOb3RFeGlzdCk7CiAgICAgICAgIGlmICghbV9kYXRhYmFzZS5pc09wZW4o
KSkKQEAgLTQ2OSw3ICs0NjksNyBAQCB2b2lkIERhdGFiYXNlVHJhY2tlcjo6c2V0RGF0YWJhc2VE
ZXRhaWxzKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luLCBjb25zdAogICAgIFN0cmlu
ZyBvcmlnaW5JZGVudGlmaWVyID0gb3JpZ2luLmRhdGFiYXNlSWRlbnRpZmllcigpOwogICAgIGlu
dDY0X3QgZ3VpZCA9IDA7CiAKLSAgICBMb2NrZXIgbG9ja0RhdGFiYXNlIHsgbV9vcGVuRGF0YWJh
c2VNYXBHdWFyZCB9OworICAgIExvY2tIb2xkZXIgbG9ja0RhdGFiYXNlKG1fZGF0YWJhc2VHdWFy
ZCk7CiAKICAgICBvcGVuVHJhY2tlckRhdGFiYXNlKENyZWF0ZUlmRG9lc05vdEV4aXN0KTsKICAg
ICBpZiAoIW1fZGF0YWJhc2UuaXNPcGVuKCkpCkBAIC01MTksNyArNTE5LDcgQEAgdm9pZCBEYXRh
YmFzZVRyYWNrZXI6OnNldERhdGFiYXNlRGV0YWlscyhjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEm
IG9yaWdpbiwgY29uc3QKIAogdm9pZCBEYXRhYmFzZVRyYWNrZXI6OmRvbmVDcmVhdGluZ0RhdGFi
YXNlKERhdGFiYXNlJiBkYXRhYmFzZSkKIHsKLSAgICBMb2NrZXIgbG9ja0RhdGFiYXNlIHsgbV9v
cGVuRGF0YWJhc2VNYXBHdWFyZCB9OworICAgIExvY2tIb2xkZXIgbG9ja0RhdGFiYXNlKG1fZGF0
YWJhc2VHdWFyZCk7CiAgICAgZG9uZUNyZWF0aW5nRGF0YWJhc2UoZGF0YWJhc2Uuc2VjdXJpdHlP
cmlnaW4oKSwgZGF0YWJhc2Uuc3RyaW5nSWRlbnRpZmllcklzb2xhdGVkQ29weSgpKTsKIH0KIApA
QCAtNTI3LDcgKzUyNyw3IEBAIFZlY3RvcjxSZWY8RGF0YWJhc2U+PiBEYXRhYmFzZVRyYWNrZXI6
Om9wZW5EYXRhYmFzZXMoKQogewogICAgIFZlY3RvcjxSZWY8RGF0YWJhc2U+PiBvcGVuRGF0YWJh
c2VzOwogICAgIHsKLSAgICAgICAgTG9ja2VyIG9wZW5EYXRhYmFzZU1hcExvY2sgeyBtX29wZW5E
YXRhYmFzZU1hcEd1YXJkIH07CisgICAgICAgIExvY2tIb2xkZXIgb3BlbkRhdGFiYXNlTWFwTG9j
ayhtX29wZW5EYXRhYmFzZU1hcEd1YXJkKTsKIAogICAgICAgICBpZiAobV9vcGVuRGF0YWJhc2VN
YXApIHsKICAgICAgICAgICAgIGZvciAoYXV0byYgbmFtZU1hcCA6IG1fb3BlbkRhdGFiYXNlTWFw
LT52YWx1ZXMoKSkgewpAQCAtNTQzLDcgKzU0Myw3IEBAIFZlY3RvcjxSZWY8RGF0YWJhc2U+PiBE
YXRhYmFzZVRyYWNrZXI6Om9wZW5EYXRhYmFzZXMoKQogCiB2b2lkIERhdGFiYXNlVHJhY2tlcjo6
YWRkT3BlbkRhdGFiYXNlKERhdGFiYXNlJiBkYXRhYmFzZSkKIHsKLSAgICBMb2NrZXIgb3BlbkRh
dGFiYXNlTWFwTG9jayB7IG1fb3BlbkRhdGFiYXNlTWFwR3VhcmQgfTsKKyAgICBMb2NrSG9sZGVy
IG9wZW5EYXRhYmFzZU1hcExvY2sobV9vcGVuRGF0YWJhc2VNYXBHdWFyZCk7CiAKICAgICBpZiAo
IW1fb3BlbkRhdGFiYXNlTWFwKQogICAgICAgICBtX29wZW5EYXRhYmFzZU1hcCA9IG1ha2VVbmlx
dWU8RGF0YWJhc2VPcmlnaW5NYXA+KCk7CkBAIC01NzAsNyArNTcwLDcgQEAgdm9pZCBEYXRhYmFz
ZVRyYWNrZXI6OmFkZE9wZW5EYXRhYmFzZShEYXRhYmFzZSYgZGF0YWJhc2UpCiAKIHZvaWQgRGF0
YWJhc2VUcmFja2VyOjpyZW1vdmVPcGVuRGF0YWJhc2UoRGF0YWJhc2UmIGRhdGFiYXNlKQogewot
ICAgIExvY2tlciBvcGVuRGF0YWJhc2VNYXBMb2NrIHsgbV9vcGVuRGF0YWJhc2VNYXBHdWFyZCB9
OworICAgIExvY2tIb2xkZXIgb3BlbkRhdGFiYXNlTWFwTG9jayhtX29wZW5EYXRhYmFzZU1hcEd1
YXJkKTsKIAogICAgIGlmICghbV9vcGVuRGF0YWJhc2VNYXApIHsKICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CkBAIC02MDksNyArNjA5LDcgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OnJl
bW92ZU9wZW5EYXRhYmFzZShEYXRhYmFzZSYgZGF0YWJhc2UpCiAKIFJlZlB0cjxPcmlnaW5Mb2Nr
PiBEYXRhYmFzZVRyYWNrZXI6Om9yaWdpbkxvY2tGb3IoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRh
JiBvcmlnaW4pCiB7Ci0gICAgTG9ja2VyIGxvY2tEYXRhYmFzZSB7IG1fb3BlbkRhdGFiYXNlTWFw
R3VhcmQgfTsKKyAgICBMb2NrSG9sZGVyIGxvY2tEYXRhYmFzZShtX2RhdGFiYXNlR3VhcmQpOwog
ICAgIFN0cmluZyBkYXRhYmFzZUlkZW50aWZpZXIgPSBvcmlnaW4uZGF0YWJhc2VJZGVudGlmaWVy
KCk7CiAKICAgICAvLyBUaGUgb3JpZ2luTG9ja01hcCBpcyBhY2Nlc3NlZCBmcm9tIG11bHRpcGxl
IERhdGFiYXNlVGhyZWFkcyBzaW5jZQpAQCAtNjg4LDEzICs2ODgsMTMgQEAgdWludDY0X3QgRGF0
YWJhc2VUcmFja2VyOjpxdW90YU5vTG9jayhjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdp
bikKIAogdWludDY0X3QgRGF0YWJhc2VUcmFja2VyOjpxdW90YShjb25zdCBTZWN1cml0eU9yaWdp
bkRhdGEmIG9yaWdpbikKIHsKLSAgICBMb2NrZXIgbG9ja0RhdGFiYXNlIHsgbV9vcGVuRGF0YWJh
c2VNYXBHdWFyZCB9OworICAgIExvY2tIb2xkZXIgbG9ja0RhdGFiYXNlKG1fZGF0YWJhc2VHdWFy
ZCk7CiAgICAgcmV0dXJuIHF1b3RhTm9Mb2NrKG9yaWdpbik7CiB9CiAKIHZvaWQgRGF0YWJhc2VU
cmFja2VyOjpzZXRRdW90YShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbiwgdWludDY0
X3QgcXVvdGEpCiB7Ci0gICAgTG9ja2VyIGxvY2tEYXRhYmFzZSB7IG1fb3BlbkRhdGFiYXNlTWFw
R3VhcmQgfTsKKyAgICBMb2NrSG9sZGVyIGxvY2tEYXRhYmFzZShtX2RhdGFiYXNlR3VhcmQpOwog
CiAgICAgaWYgKHF1b3RhTm9Mb2NrKG9yaWdpbikgPT0gcXVvdGEpCiAgICAgICAgIHJldHVybjsK
QEAgLTgyNCw3ICs4MjQsNyBAQCBib29sIERhdGFiYXNlVHJhY2tlcjo6ZGVsZXRlT3JpZ2luKGNv
bnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luLCBEZWxldGlvbk1vZAogewogICAgIFZlY3Rv
cjxTdHJpbmc+IGRhdGFiYXNlTmFtZXM7CiAgICAgewotICAgICAgICBMb2NrZXIgbG9ja0RhdGFi
YXNlIHsgbV9vcGVuRGF0YWJhc2VNYXBHdWFyZCB9OworICAgICAgICBMb2NrSG9sZGVyIGxvY2tE
YXRhYmFzZShtX2RhdGFiYXNlR3VhcmQpOwogICAgICAgICBvcGVuVHJhY2tlckRhdGFiYXNlKERv
bnRDcmVhdGVJZkRvZXNOb3RFeGlzdCk7CiAgICAgICAgIGlmICghbV9kYXRhYmFzZS5pc09wZW4o
KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTg3Niw3ICs4NzYsNyBAQCBib29sIERh
dGFiYXNlVHJhY2tlcjo6ZGVsZXRlT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3Jp
Z2luLCBEZWxldGlvbk1vZAogICAgIH0KIAogICAgIHsKLSAgICAgICAgTG9ja2VyIGxvY2tEYXRh
YmFzZSB7IG1fb3BlbkRhdGFiYXNlTWFwR3VhcmQgfTsKKyAgICAgICAgTG9ja0hvbGRlciBsb2Nr
RGF0YWJhc2UobV9kYXRhYmFzZUd1YXJkKTsKICAgICAgICAgZGVsZXRlT3JpZ2luTG9ja0Zvcihv
cmlnaW4pOwogICAgICAgICBkb25lRGVsZXRpbmdPcmlnaW4ob3JpZ2luKTsKIApAQCAtMTA2Myw3
ICsxMDYzLDcgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OmRvbmVEZWxldGluZ09yaWdpbihjb25z
dCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbikKIGJvb2wgRGF0YWJhc2VUcmFja2VyOjpkZWxl
dGVEYXRhYmFzZShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbiwgY29uc3QgU3RyaW5n
JiBuYW1lKQogewogICAgIHsKLSAgICAgICAgTG9ja2VyIGxvY2tEYXRhYmFzZSB7IG1fb3BlbkRh
dGFiYXNlTWFwR3VhcmQgfTsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrRGF0YWJhc2UobV9kYXRh
YmFzZUd1YXJkKTsKICAgICAgICAgb3BlblRyYWNrZXJEYXRhYmFzZShEb250Q3JlYXRlSWZEb2Vz
Tm90RXhpc3QpOwogICAgICAgICBpZiAoIW1fZGF0YWJhc2UuaXNPcGVuKCkpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC0xMDc4LDEyICsxMDc4LDEyIEBAIGJvb2wgRGF0YWJhc2VUcmFj
a2VyOjpkZWxldGVEYXRhYmFzZShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbiwgY29u
c3QgU3RyCiAgICAgLy8gV2UgZHJvcCB0aGUgbG9jayBoZXJlIGJlY2F1c2UgaG9sZGluZyBsb2Nr
cyBkdXJpbmcgYSBjYWxsIHRvIGRlbGV0ZURhdGFiYXNlRmlsZSB3aWxsIGRlYWRsb2NrLgogICAg
IGlmIChGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGZ1bGxQYXRoRm9yRGF0YWJhc2Uob3JpZ2luLCBu
YW1lLCBmYWxzZSkpICYmICFkZWxldGVEYXRhYmFzZUZpbGUob3JpZ2luLCBuYW1lLCBEZWxldGlv
bk1vZGU6OkRlZmF1bHQpKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGRlbGV0ZSBm
aWxlIGZvciBkYXRhYmFzZSAlcyBpbiBvcmlnaW4gJXMiLCBuYW1lLnV0ZjgoKS5kYXRhKCksIG9y
aWdpbi5kYXRhYmFzZUlkZW50aWZpZXIoKS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgTG9ja2Vy
IGxvY2tEYXRhYmFzZSB7IG1fb3BlbkRhdGFiYXNlTWFwR3VhcmQgfTsKKyAgICAgICAgTG9ja0hv
bGRlciBsb2NrRGF0YWJhc2UobV9kYXRhYmFzZUd1YXJkKTsKICAgICAgICAgZG9uZURlbGV0aW5n
RGF0YWJhc2Uob3JpZ2luLCBuYW1lKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAot
ICAgIExvY2tlciBsb2NrRGF0YWJhc2UgeyBtX29wZW5EYXRhYmFzZU1hcEd1YXJkIH07CisgICAg
TG9ja0hvbGRlciBsb2NrRGF0YWJhc2UobV9kYXRhYmFzZUd1YXJkKTsKIAogICAgIGF1dG8gc3Rh
dGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KCJERUxFVEUgRlJPTSBEYXRhYmFz
ZXMgV0hFUkUgb3JpZ2luPT8gQU5EIG5hbWU9PyJfcyk7CiAgICAgaWYgKCFzdGF0ZW1lbnQpIHsK
QEAgLTExMjEsNyArMTEyMSw3IEBAIGJvb2wgRGF0YWJhc2VUcmFja2VyOjpkZWxldGVEYXRhYmFz
ZUZpbGUoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4sIGNvbnN0CiAKICNpZm5kZWYg
TkRFQlVHCiAgICAgewotICAgICAgICBMb2NrZXIgbG9ja0RhdGFiYXNlIHsgbV9vcGVuRGF0YWJh
c2VNYXBHdWFyZCB9OworICAgICAgICBMb2NrSG9sZGVyIGxvY2tEYXRhYmFzZShtX2RhdGFiYXNl
R3VhcmQpOwogICAgICAgICBBU1NFUlQoaXNEZWxldGluZ0RhdGFiYXNlT3JPcmlnaW5Gb3Iob3Jp
Z2luLCBuYW1lKSk7CiAgICAgfQogI2VuZGlmCkBAIC0xMTMyLDcgKzExMzIsNyBAQCBib29sIERh
dGFiYXNlVHJhY2tlcjo6ZGVsZXRlRGF0YWJhc2VGaWxlKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0
YSYgb3JpZ2luLCBjb25zdAogICAgIC8vIERhdGFiYXNlOjptYXJrQXNEZWxldGVkQW5kQ2xvc2Uo
KSwgc2luY2UgdGhhdCBjYW4gY2F1c2UgYSBkZWFkbG9jawogICAgIC8vIGR1cmluZyB0aGUgc3lu
Y2hyb25vdXMgRGF0YWJhc2VUaHJlYWQgY2FsbCBpdCB0cmlnZ2Vycy4KICAgICB7Ci0gICAgICAg
IExvY2tlciBvcGVuRGF0YWJhc2VNYXBMb2NrIHsgbV9vcGVuRGF0YWJhc2VNYXBHdWFyZCB9Owor
ICAgICAgICBMb2NrSG9sZGVyIG9wZW5EYXRhYmFzZU1hcExvY2sobV9vcGVuRGF0YWJhc2VNYXBH
dWFyZCk7CiAgICAgICAgIGlmIChtX29wZW5EYXRhYmFzZU1hcCkgewogICAgICAgICAgICAgaWYg
KGF1dG8qIG5hbWVNYXAgPSBtX29wZW5EYXRhYmFzZU1hcC0+Z2V0KG9yaWdpbikpIHsKICAgICAg
ICAgICAgICAgICBpZiAoYXV0byogZGF0YWJhc2VTZXQgPSBuYW1lTWFwLT5nZXQobmFtZSkpIHsK
QEAgLTExNzQsNyArMTE3NCw3IEBAIHZvaWQgRGF0YWJhc2VUcmFja2VyOjpyZW1vdmVEZWxldGVk
T3BlbmVkRGF0YWJhc2VzKCkKICAgICAKICAgICB7CiAgICAgICAgIC8vIEFjcXVpcmUgdGhlIGxv
Y2sgYmVmb3JlIGNhbGxpbmcgb3BlblRyYWNrZXJEYXRhYmFzZS4KLSAgICAgICAgTG9ja2VyIGxv
Y2tEYXRhYmFzZSB7IG1fb3BlbkRhdGFiYXNlTWFwR3VhcmQgfTsKKyAgICAgICAgTG9ja0hvbGRl
ciBsb2NrRGF0YWJhc2UobV9kYXRhYmFzZUd1YXJkKTsKICAgICAgICAgb3BlblRyYWNrZXJEYXRh
YmFzZShEb250Q3JlYXRlSWZEb2VzTm90RXhpc3QpOwogICAgIH0KIApAQCAtMTE4OSw3ICsxMTg5
LDcgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OnJlbW92ZURlbGV0ZWRPcGVuZWREYXRhYmFzZXMo
KQogICAgIC8vIERhdGFiYXNlOjptYXJrQXNEZWxldGVkQW5kQ2xvc2UoKSwgc2luY2UgdGhhdCBj
YW4gY2F1c2UgYSBkZWFkbG9jawogICAgIC8vIGR1cmluZyB0aGUgc3luY2hyb25vdXMgRGF0YWJh
c2VUaHJlYWQgY2FsbCBpdCB0cmlnZ2Vycy4KICAgICB7Ci0gICAgICAgIExvY2tlciBvcGVuRGF0
YWJhc2VNYXBMb2NrIHsgbV9vcGVuRGF0YWJhc2VNYXBHdWFyZCB9OworICAgICAgICBMb2NrSG9s
ZGVyIG9wZW5EYXRhYmFzZU1hcExvY2sobV9vcGVuRGF0YWJhc2VNYXBHdWFyZCk7CiAgICAgICAg
IGlmIChtX29wZW5EYXRhYmFzZU1hcCkgewogICAgICAgICAgICAgZm9yIChhdXRvJiBvcGVuRGF0
YWJhc2UgOiAqbV9vcGVuRGF0YWJhc2VNYXApIHsKICAgICAgICAgICAgICAgICBhdXRvJiBvcmln
aW4gPSBvcGVuRGF0YWJhc2Uua2V5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9TUUxDYWxsYmFja1dyYXBwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvU1FMQ2FsbGJhY2tXcmFwcGVyLmgKaW5kZXggMjcyMTQ0MTM3NTI1OTNl
ZDA4YTI2NjI5NDBmY2E4N2E5MjQzNmM1Yi4uZDBkMTI4MDk2YmFiMGE2YTBmN2MyZGJmMTAzYzIy
ZDQwODM5ZmYwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9TUUxDYWxsYmFja1dyYXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL1NRTENhbGxiYWNrV3JhcHBlci5oCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKICAg
ICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dFB0cjsK
ICAgICAgICAgVCogY2FsbGJhY2s7CiAgICAgICAgIHsKLSAgICAgICAgICAgIExvY2tlciBsb2Nr
ZXIgeyBtX211dGV4IH07CisgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX211dGV4KTsK
ICAgICAgICAgICAgIGlmICghbV9jYWxsYmFjaykgewogICAgICAgICAgICAgICAgIEFTU0VSVCgh
bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC04
Myw3ICs4Myw3IEBAIHB1YmxpYzoKIAogICAgIFJlZlB0cjxUPiB1bndyYXAoKQogICAgIHsKLSAg
ICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKKyAgICAgICAgTG9ja0hvbGRlciBsb2Nr
ZXIobV9tdXRleCk7CiAgICAgICAgIEFTU0VSVCghbV9jYWxsYmFjayB8fCBtX3NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQtPmlzQ29udGV4dFRocmVhZCgpKTsKICAgICAgICAgbV9zY3JpcHRFeGVjdXRp
b25Db250ZXh0ID0gbnVsbHB0cjsKICAgICAgICAgcmV0dXJuIFdURk1vdmUobV9jYWxsYmFjayk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5z
YWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNh
Y3Rpb24uY3BwCmluZGV4IGU3NDIxYzc3YzUzMjcwMTFmNThiZjEyNjE2ZjllMDRkYjUxYjY2NmUu
LmVkZGNlODFiZGQwZWE4ZjY0ZTljMjI4NTNiN2YxOGEzYWNkMzdiNjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uY3BwCkBA
IC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBTUUxUcmFuc2FjdGlvbjo6Y2FsbEVycm9yQ2FsbGJhY2tE
dWVUb0ludGVycnVwdGlvbigpCiAKIHZvaWQgU1FMVHJhbnNhY3Rpb246OmVucXVldWVTdGF0ZW1l
bnQoc3RkOjp1bmlxdWVfcHRyPFNRTFN0YXRlbWVudD4gc3RhdGVtZW50KQogewotICAgIExvY2tl
ciBsb2NrZXIgeyBtX3N0YXRlbWVudE11dGV4IH07CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9z
dGF0ZW1lbnRNdXRleCk7CiAgICAgbV9zdGF0ZW1lbnRRdWV1ZS5hcHBlbmQoV1RGTW92ZShzdGF0
ZW1lbnQpKTsKIH0KIApAQCAtMTkwLDcgKzE5MCw3IEBAIHZvaWQgU1FMVHJhbnNhY3Rpb246OmNo
ZWNrQW5kSGFuZGxlQ2xvc2VkRGF0YWJhc2UoKQogICAgIC8vIElmIHRoZSBkYXRhYmFzZSB3YXMg
c3RvcHBlZCwgZG9uJ3QgZG8gYW55dGhpbmcgYW5kIGNhbmNlbCBxdWV1ZWQgd29yawogICAgIExP
RyhTdG9yYWdlQVBJLCAiRGF0YWJhc2Ugd2FzIHN0b3BwZWQgb3IgaW50ZXJydXB0ZWQgLSBjYW5j
ZWxsaW5nIHdvcmsgZm9yIHRoaXMgdHJhbnNhY3Rpb24iKTsKIAotICAgIExvY2tlciBsb2NrZXIg
eyBtX3N0YXRlbWVudE11dGV4IH07CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zdGF0ZW1lbnRN
dXRleCk7CiAgICAgbV9zdGF0ZW1lbnRRdWV1ZS5jbGVhcigpOwogICAgIG1fbmV4dFN0ZXAgPSBu
dWxscHRyOwogCkBAIC01MTYsNyArNTE2LDcgQEAgdm9pZCBTUUxUcmFuc2FjdGlvbjo6Z2V0TmV4
dFN0YXRlbWVudCgpCiB7CiAgICAgbV9jdXJyZW50U3RhdGVtZW50ID0gbnVsbHB0cjsKIAotICAg
IExvY2tlciBsb2NrZXIgeyBtX3N0YXRlbWVudE11dGV4IH07CisgICAgTG9ja0hvbGRlciBsb2Nr
ZXIobV9zdGF0ZW1lbnRNdXRleCk7CiAgICAgaWYgKCFtX3N0YXRlbWVudFF1ZXVlLmlzRW1wdHko
KSkKICAgICAgICAgbV9jdXJyZW50U3RhdGVtZW50ID0gbV9zdGF0ZW1lbnRRdWV1ZS50YWtlRmly
c3QoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
U1FMVHJhbnNhY3Rpb25CYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvU1FMVHJhbnNhY3Rpb25CYWNrZW5kLmNwcAppbmRleCBhMDQzZjdjYTMyNmJlOGMwZTli
Yzk4M2JjMzdiYmY0NTE4ZTkwNjE0Li5kMDBlYzFkOTQyNDhiZjlhZDUxNTQ5MTkwY2JmY2Q5YzVm
MDBkZTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NR
TFRyYW5zYWN0aW9uQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9TUUxUcmFuc2FjdGlvbkJhY2tlbmQuY3BwCkBAIC0zNTcsNyArMzU3LDcgQEAgdm9p
ZCBTUUxUcmFuc2FjdGlvbkJhY2tlbmQ6OmRvQ2xlYW51cCgpCiAKICAgICBtX2Zyb250ZW5kLnJl
bGVhc2VPcmlnaW5Mb2NrSWZOZWVkZWQoKTsKIAotICAgIExvY2tlciBsb2NrZXIgeyBtX2Zyb250
ZW5kLm1fc3RhdGVtZW50TXV0ZXggfTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2Zyb250ZW5k
Lm1fc3RhdGVtZW50TXV0ZXgpOwogICAgIG1fZnJvbnRlbmQubV9zdGF0ZW1lbnRRdWV1ZS5jbGVh
cigpOwogCiAgICAgaWYgKG1fZnJvbnRlbmQubV9zcWxpdGVUcmFuc2FjdGlvbikgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRl
ZFRyZWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJ
c29sYXRlZFRyZWUuY3BwCmluZGV4IDlmYzM4N2U0NWNhMjU4NTgyZTM5OTIxZjU2Y2NlOWU3ZDAx
MDRhNDAuLjNmODNlOGU2NzA2YmE0NTc0MzRjMmEzMWZkMjQ4OTZhNzlkOTYyYTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRU
cmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9B
WElzb2xhdGVkVHJlZS5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgdm9pZCBBWElzb2xhdGVkVHJlZTo6
Y2xlYXIoKQogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgbV9heE9iamVjdENhY2hl
ID0gbnVsbHB0cjsKIAotICAgIExvY2tlciBsb2NrZXIgeyBtX2NoYW5nZUxvZ0xvY2sgfTsKKyAg
ICBMb2NrSG9sZGVyIGxvY2tlciB7IG1fY2hhbmdlTG9nTG9jayB9OwogICAgIG1fcGVuZGluZ1N1
YnRyZWVSZW1vdmFscy5hcHBlbmQobV9yb290Tm9kZS0+b2JqZWN0SUQoKSk7CiAgICAgbV9yb290
Tm9kZSA9IG51bGxwdHI7CiAgICAgbV9ub2RlTWFwLmNsZWFyKCk7CkBAIC0xODgsNyArMTg4LDcg
QEAgdm9pZCBBWElzb2xhdGVkVHJlZTo6Z2VuZXJhdGVTdWJ0cmVlKEFYQ29yZU9iamVjdCYgYXhP
YmplY3QsIEFYQ29yZU9iamVjdCogYXhQYXIKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byBv
YmplY3QgPSBjcmVhdGVTdWJ0cmVlKGF4T2JqZWN0LCBheFBhcmVudCA/IGF4UGFyZW50LT5vYmpl
Y3RJRCgpIDogSW52YWxpZEFYSUQsIGF0dGFjaFdyYXBwZXIpOwotICAgIExvY2tlciBsb2NrZXIg
eyBtX2NoYW5nZUxvZ0xvY2sgfTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlciB7IG1fY2hhbmdlTG9n
TG9jayB9OwogICAgIGlmICghYXhQYXJlbnQpCiAgICAgICAgIHNldFJvb3ROb2RlKG9iamVjdC5w
dHIoKSk7CiAgICAgZWxzZSBpZiAoYXhQYXJlbnQtPm9iamVjdElEKCkgIT0gSW52YWxpZEFYSUQp
IC8vIE5lZWQgdG8gY2hlY2sgZm9yIHRoZSBvYmplY3RJRCBvZiBheFBhcmVudCBhZ2FpbiBiZWNh
dXNlIGl0IG1heSBoYXZlIGJlZW4gZGV0YWNoZWQgd2hpbGUgdHJhdmVyc2luZyB0aGUgdHJlZS4K
QEAgLTIyNCw3ICsyMjQsNyBAQCBSZWY8QVhJc29sYXRlZE9iamVjdD4gQVhJc29sYXRlZFRyZWU6
OmNyZWF0ZVN1YnRyZWUoQVhDb3JlT2JqZWN0JiBheE9iamVjdCwgQVhJRAogICAgIH0KIAogICAg
IHsKLSAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fY2hhbmdlTG9nTG9jayB9OworICAgICAgICBM
b2NrSG9sZGVyIGxvY2tlciB7IG1fY2hhbmdlTG9nTG9jayB9OwogICAgICAgICBtX3BlbmRpbmdB
cHBlbmRzLmFwcGVuZChXVEZNb3ZlKG5vZGVDaGFuZ2UpKTsKICAgICAgICAgdXBkYXRlQ2hpbGRy
ZW5JRHMob2JqZWN0LT5vYmplY3RJRCgpLCBXVEZNb3ZlKGNoaWxkcmVuSURzKSk7CiAgICAgfQpA
QCAtMjQ1LDcgKzI0NSw3IEBAIHZvaWQgQVhJc29sYXRlZFRyZWU6OnVwZGF0ZU5vZGUoQVhDb3Jl
T2JqZWN0JiBheE9iamVjdCkKICAgICBhdXRvIG5ld09iamVjdCA9IEFYSXNvbGF0ZWRPYmplY3Q6
OmNyZWF0ZShheE9iamVjdCwgdGhpcywgcGFyZW50SUQpOwogICAgIG5ld09iamVjdC0+bV9jaGls
ZHJlbklEcyA9IGF4T2JqZWN0LmNoaWxkcmVuSURzKCk7CiAKLSAgICBMb2NrZXIgbG9ja2VyIHsg
bV9jaGFuZ2VMb2dMb2NrIH07CisgICAgTG9ja0hvbGRlciBsb2NrZXIgeyBtX2NoYW5nZUxvZ0xv
Y2sgfTsKICAgICAvLyBSZW1vdmUgdGhlIG9sZCBvYmplY3QgYW5kIHNldCB0aGUgbmV3IG9uZSB0
byBiZSB1cGRhdGVkIG9uIHRoZSBBWCB0aHJlYWQuCiAgICAgbV9wZW5kaW5nTm9kZVJlbW92YWxz
LmFwcGVuZChheElEKTsKICAgICBtX3BlbmRpbmdBcHBlbmRzLmFwcGVuZCh7IG5ld09iamVjdCwg
YXhPYmplY3Qud3JhcHBlcigpIH0pOwpAQCAtMjcxLDcgKzI3MSw3IEBAIHZvaWQgQVhJc29sYXRl
ZFRyZWU6OnVwZGF0ZU5vZGVQcm9wZXJ0eShjb25zdCBBWENvcmVPYmplY3QmIGF4T2JqZWN0LCBB
WFByb3BlcnR5CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBMb2NrZXIgbG9ja2VyIHsg
bV9jaGFuZ2VMb2dMb2NrIH07CisgICAgTG9ja0hvbGRlciBsb2NrZXIgeyBtX2NoYW5nZUxvZ0xv
Y2sgfTsKICAgICBtX3BlbmRpbmdQcm9wZXJ0eUNoYW5nZXMuYXBwZW5kKHsgYXhPYmplY3Qub2Jq
ZWN0SUQoKSwgcHJvcGVydHlNYXAgfSk7CiB9CiAKQEAgLTM0OSw3ICszNDksNyBAQCB2b2lkIEFY
SXNvbGF0ZWRUcmVlOjp1cGRhdGVDaGlsZHJlbihBWENvcmVPYmplY3QmIGF4T2JqZWN0KQogCiAg
ICAgaWYgKHVwZGF0ZWRDaGlsZCB8fCByZW1vdmFscy5zaXplKCkpIHsKICAgICAgICAgLy8gTWFr
ZSB0aGUgY2hpbGRyZW4gSURzIG9mIHRoZSBpc29sYXRlZCBvYmplY3QgdG8gYmUgdGhlIHNhbWUg
YXMgdGhlIEFYT2JqZWN0J3MuCi0gICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2NoYW5nZUxvZ0xv
Y2sgfTsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIgeyBtX2NoYW5nZUxvZ0xvY2sgfTsKICAg
ICAgICAgdXBkYXRlQ2hpbGRyZW5JRHMoYXhBbmNlc3Rvci0+b2JqZWN0SUQoKSwgV1RGTW92ZShh
eENoaWxkcmVuSURzKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gTm90aGluZyB3YXMgdXBk
YXRlZC4gQXMgYSBsYXN0IHJlc29ydCwgdXBkYXRlIHRoZSBzdWJ0cmVlLgpAQCAtMzYyLDcgKzM2
Miw3IEBAIFJlZlB0cjxBWElzb2xhdGVkT2JqZWN0PiBBWElzb2xhdGVkVHJlZTo6Zm9jdXNlZE5v
ZGUoKQogICAgIEFYVFJBQ0UoIkFYSXNvbGF0ZWRUcmVlOjpmb2N1c2VkTm9kZSIpOwogICAgIC8v
IEFwcGx5IHBlbmRpbmcgY2hhbmdlcyBpbiBjYXNlIGZvY3VzIGhhcyBjaGFuZ2VkIGFuZCBoYXNu
J3QgYmVlbiB1cGRhdGVkLgogICAgIGFwcGx5UGVuZGluZ0NoYW5nZXMoKTsKLSAgICBMb2NrZXIg
bG9ja2VyIHsgbV9jaGFuZ2VMb2dMb2NrIH07CisgICAgTG9ja0hvbGRlciBsb2NrZXIgeyBtX2No
YW5nZUxvZ0xvY2sgfTsKICAgICBBWExPRyhtYWtlU3RyaW5nKCJmb2N1c2VkTm9kZUlEICIsIG1f
Zm9jdXNlZE5vZGVJRCkpOwogICAgIEFYTE9HKCJmb2N1c2VkIG5vZGU6Iik7CiAgICAgQVhMT0co
bm9kZUZvcklEKG1fZm9jdXNlZE5vZGVJRCkpOwpAQCAtMzcyLDcgKzM3Miw3IEBAIFJlZlB0cjxB
WElzb2xhdGVkT2JqZWN0PiBBWElzb2xhdGVkVHJlZTo6Zm9jdXNlZE5vZGUoKQogUmVmUHRyPEFY
SXNvbGF0ZWRPYmplY3Q+IEFYSXNvbGF0ZWRUcmVlOjpyb290Tm9kZSgpCiB7CiAgICAgQVhUUkFD
RSgiQVhJc29sYXRlZFRyZWU6OnJvb3ROb2RlIik7Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1fY2hh
bmdlTG9nTG9jayB9OworICAgIExvY2tIb2xkZXIgbG9ja2VyIHsgbV9jaGFuZ2VMb2dMb2NrIH07
CiAgICAgcmV0dXJuIG1fcm9vdE5vZGU7CiB9CiAKQEAgLTM5Myw3ICszOTMsNyBAQCB2b2lkIEFY
SXNvbGF0ZWRUcmVlOjpzZXRGb2N1c2VkTm9kZUlEKEFYSUQgYXhJRCkKICAgICBBWExPRyhtYWtl
U3RyaW5nKCJheElEICIsIGF4SUQpKTsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0g
ICAgTG9ja2VyIGxvY2tlciB7IG1fY2hhbmdlTG9nTG9jayB9OworICAgIExvY2tIb2xkZXIgbG9j
a2VyIHsgbV9jaGFuZ2VMb2dMb2NrIH07CiAgICAgbV9wZW5kaW5nRm9jdXNlZE5vZGVJRCA9IGF4
SUQ7CiAKICAgICBBWFByb3BlcnR5TWFwIHByb3BlcnR5TWFwOwpAQCAtNDA4LDcgKzQwOCw3IEBA
IHZvaWQgQVhJc29sYXRlZFRyZWU6OnJlbW92ZU5vZGUoQVhJRCBheElEKQogICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CiAKICAgICBtX25vZGVNYXAucmVtb3ZlKGF4SUQpOwotICAgIExvY2tl
ciBsb2NrZXIgeyBtX2NoYW5nZUxvZ0xvY2sgfTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlciB7IG1f
Y2hhbmdlTG9nTG9jayB9OwogICAgIG1fcGVuZGluZ05vZGVSZW1vdmFscy5hcHBlbmQoYXhJRCk7
CiB9CiAKQEAgLTQzMSw3ICs0MzEsNyBAQCB2b2lkIEFYSXNvbGF0ZWRUcmVlOjpyZW1vdmVTdWJ0
cmVlKEFYSUQgYXhJRCkKICAgICAgICAgfQogICAgIH0KIAotICAgIExvY2tlciBsb2NrZXIgeyBt
X2NoYW5nZUxvZ0xvY2sgfTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlciB7IG1fY2hhbmdlTG9nTG9j
ayB9OwogICAgIG1fcGVuZGluZ1N1YnRyZWVSZW1vdmFscy5hcHBlbmQoYXhJRCk7CiB9CiAKQEAg
LTQ0Myw3ICs0NDMsNyBAQCB2b2lkIEFYSXNvbGF0ZWRUcmVlOjphcHBseVBlbmRpbmdDaGFuZ2Vz
KCkKICAgICBpZiAobV91c2VkT25BWFRocmVhZCAmJiBpc01haW5UaHJlYWQoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgTG9ja2VyIGxvY2tlciB7IG1fY2hhbmdlTG9nTG9jayB9OworICAgIExv
Y2tIb2xkZXIgbG9ja2VyIHsgbV9jaGFuZ2VMb2dMb2NrIH07CiAKICAgICBpZiAobV9wZW5kaW5n
Rm9jdXNlZE5vZGVJRCAhPSBtX2ZvY3VzZWROb2RlSUQpIHsKICAgICAgICAgQVhMT0cobWFrZVN0
cmluZygiZm9jdXNlZE5vZGVJRCAiLCBtX2ZvY3VzZWROb2RlSUQsICIgcGVuZGluZ0ZvY3VzZWRO
b2RlSUQgIiwgbV9wZW5kaW5nRm9jdXNlZE5vZGVJRCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVNYWMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZU1hYy5tbQppbmRleCAwMTY0ZDUz
MjQ2MjQxY2JhZjE4NzVhZWU3OTk2YjFlNTMyOTU4MmYyLi5iYjA1N2VmNmEwMDYyNjFiZDRlNmE2
MTVjYWYxZTAxODE5NWViNDFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9tYWMvU2Nyb2xsaW5nVHJlZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZU1hYy5tbQpAQCAtMTYxLDcgKzE2MSw3IEBAIFJlZlB0
cjxTY3JvbGxpbmdUcmVlTm9kZT4gU2Nyb2xsaW5nVHJlZU1hYzo6c2Nyb2xsaW5nTm9kZUZvclBv
aW50KEZsb2F0UG9pbnQgcG9pCiAgICAgaWYgKCFyb290U2Nyb2xsaW5nTm9kZSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICBMb2NrZXIgbG9ja2VyIHsgbV9sYXllckhpdFRlc3RNdXRl
eCB9OworICAgIExvY2tIb2xkZXIgbG9ja0hvbGRlcihtX2xheWVySGl0VGVzdE11dGV4KTsKIAog
ICAgIGF1dG8gcm9vdENvbnRlbnRzTGF5ZXIgPSBzdGF0aWNfY2FzdDxTY3JvbGxpbmdUcmVlRnJh
bWVTY3JvbGxpbmdOb2RlTWFjKj4ocm9vdFNjcm9sbGluZ05vZGUpLT5yb290Q29udGVudHNMYXll
cigpOwogICAgIEZsb2F0UG9pbnQgc2Nyb2xsT3JpZ2luID0gcm9vdFNjcm9sbGluZ05vZGUtPnNj
cm9sbE9yaWdpbigpOwpAQCAtMjA0LDcgKzIwNCw3IEBAIE9wdGlvblNldDxFdmVudExpc3RlbmVy
UmVnaW9uVHlwZT4gU2Nyb2xsaW5nVHJlZU1hYzo6ZXZlbnRMaXN0ZW5lclJlZ2lvblR5cGVzRm9y
CiAgICAgaWYgKCFyb290U2Nyb2xsaW5nTm9kZSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAg
IExvY2tlciBsb2NrZXIgeyBtX2xheWVySGl0VGVzdE11dGV4IH07CisgICAgTG9ja0hvbGRlciBs
b2NrSG9sZGVyKG1fbGF5ZXJIaXRUZXN0TXV0ZXgpOwogCiAgICAgYXV0byByb290Q29udGVudHNM
YXllciA9IHN0YXRpY19jYXN0PFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMqPihy
b290U2Nyb2xsaW5nTm9kZSktPnJvb3RDb250ZW50c0xheWVyKCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Fib3J0YWJsZVRhc2tRdWV1ZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vQWJvcnRhYmxlVGFza1F1ZXVlLmgKaW5kZXggODI2OTlkZTYwZjA1NjUxZDZj
NzA4MTYxYThhMzhhYzcxOTI5YTY2Yy4uNzRjN2UwZTg1MzJlMTRlMzc5ZDJjZjk2MjJjNTIxYzlm
ODc4M2RlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQWJvcnRhYmxlVGFz
a1F1ZXVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQWJvcnRhYmxlVGFza1F1ZXVl
LmgKQEAgLTk0LDcgKzk0LDcgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwogCiAgICAgICAgIHsKLSAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07
CisgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tIb2xkZXIobV9tdXRleCk7CiAgICAgICAgICAg
ICBtX2Fib3J0aW5nID0gdHJ1ZTsKICAgICAgICAgICAgIGNhbmNlbEFsbFRhc2tzKCk7CiAgICAg
ICAgIH0KQEAgLTEwOCw3ICsxMDgsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwogCi0gICAgICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07Cisg
ICAgICAgIExvY2tIb2xkZXIgbG9ja0hvbGRlcihtX211dGV4KTsKICAgICAgICAgQVNTRVJUKG1f
YWJvcnRpbmcpOwogICAgICAgICBtX2Fib3J0aW5nID0gZmFsc2U7CiAgICAgfQpAQCAtMTIzLDcg
KzEyMyw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkp
OwogCi0gICAgICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CisgICAgICAgIExvY2tIb2xk
ZXIgbG9ja0hvbGRlcihtX211dGV4KTsKICAgICAgICAgaWYgKG1fYWJvcnRpbmcpCiAgICAgICAg
ICAgICByZXR1cm47CiAKQEAgLTE0MywxNCArMTQzLDE0IEBAIHB1YmxpYzoKICAgICAgICAgLy8g
RG9uJ3QgZGVhZGxvY2sgdGhlIG1haW4gdGhyZWFkIHdpdGggaXRzZWxmLgogICAgICAgICBBU1NF
UlQoIWlzTWFpblRocmVhZCgpKTsKIAotICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9
OworICAgICAgICBMb2NrSG9sZGVyIGxvY2tIb2xkZXIobV9tdXRleCk7CiAgICAgICAgIGlmICht
X2Fib3J0aW5nKQogICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAogICAgICAgICBP
cHRpb25hbDxSPiByZXNwb25zZSA9IFdURjo6bnVsbG9wdDsKICAgICAgICAgcG9zdFRhc2soW3Ro
aXMsICZyZXNwb25zZSwgJm1haW5UaHJlYWRUYXNrSGFuZGxlcl0oKSB7CiAgICAgICAgICAgICBS
IHJlc3BvbnNlVmFsdWUgPSBtYWluVGhyZWFkVGFza0hhbmRsZXIoKTsKLSAgICAgICAgICAgIExv
Y2tlciBsb2NrZXIgeyBtX211dGV4IH07CisgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tIb2xk
ZXIobV9tdXRleCk7CiAgICAgICAgICAgICBpZiAoIW1fYWJvcnRpbmcpCiAgICAgICAgICAgICAg
ICAgcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlVmFsdWUpOwogICAgICAgICAgICAgbV9hYm9y
dGVkT3JSZXNwb25zZVNldC5ub3RpZnlBbGwoKTsKQEAgLTE5Nyw3ICsxOTcsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgaWYgKGlzQ2FuY2VsbGVkKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogCi0gICAgICAgICAgICBMb2NrZXIgbG9jayB7IG1fdGFza1F1ZXVlLT5tX211dGV4IH07Cisg
ICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2sobV90YXNrUXVldWUtPm1fbXV0ZXgpOwogICAgICAg
ICAgICAgQVNTRVJUKHRoaXMgPT0gbV90YXNrUXVldWUtPm1fY2hhbm5lbC5maXJzdCgpLnB0cigp
KTsKICAgICAgICAgICAgIG1fdGFza1F1ZXVlLT5tX2NoYW5uZWwucmVtb3ZlRmlyc3QoKTsKICAg
ICAgICAgICAgIGxvY2sudW5sb2NrRWFybHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL2NvY29hL0NBUmluZ0J1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9jb2NvYS9DQVJpbmdCdWZmZXIuY3BwCmluZGV4IGE1ODFjZjY1NTZmOTk3
NTY4N2NjNTA1MWRhZWY5M2UyYzMyYjg5YjkuLjUyNjZiNWZjYTVjNTUyMjhkMDQwNTI3Njk4NzBh
MjJhMWY3NDI4ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2Nv
Y29hL0NBUmluZ0J1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
Y29jb2EvQ0FSaW5nQnVmZmVyLmNwcApAQCAtMjMxLDcgKzIzMSw3IEBAIGJvb2wgQ0FSaW5nQnVm
ZmVyU3RvcmFnZVZlY3Rvcjo6YWxsb2NhdGUoc2l6ZV90IGJ5dGVDb3VudCwgY29uc3QgQ0FBdWRp
b1N0cmVhbURlCiAKIHZvaWQgQ0FSaW5nQnVmZmVyU3RvcmFnZVZlY3Rvcjo6Zmx1c2goKQogewot
ICAgIExvY2tlciBsb2NrZXIgeyBtX2N1cnJlbnRGcmFtZUJvdW5kc0xvY2sgfTsKKyAgICBMb2Nr
SG9sZGVyIGxvY2tlcihtX2N1cnJlbnRGcmFtZUJvdW5kc0xvY2spOwogICAgIGZvciAoYXV0byYg
dGltZUJvdW5kcyA6IG1fdGltZUJvdW5kc1F1ZXVlKSB7CiAgICAgICAgIHRpbWVCb3VuZHMubV9z
dGFydEZyYW1lID0gMDsKICAgICAgICAgdGltZUJvdW5kcy5tX2VuZEZyYW1lID0gMDsKQEAgLTMw
NSw3ICszMDUsNyBAQCB2b2lkIENBUmluZ0J1ZmZlcjo6c2V0Q3VycmVudEZyYW1lQm91bmRzKHVp
bnQ2NF90IHN0YXJ0VGltZSwgdWludDY0X3QgZW5kVGltZSkKIAogdm9pZCBDQVJpbmdCdWZmZXJT
dG9yYWdlVmVjdG9yOjpzZXRDdXJyZW50RnJhbWVCb3VuZHModWludDY0X3Qgc3RhcnRUaW1lLCB1
aW50NjRfdCBlbmRUaW1lKQogewotICAgIExvY2tlciBsb2NrZXIgeyBtX2N1cnJlbnRGcmFtZUJv
dW5kc0xvY2sgfTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2N1cnJlbnRGcmFtZUJvdW5kc0xv
Y2spOwogICAgIHVpbnQzMl90IG5leHRQdHIgPSBtX3RpbWVCb3VuZHNRdWV1ZVB0ci5sb2FkKCkg
KyAxOwogICAgIHVpbnQzMl90IGluZGV4ID0gbmV4dFB0ciAmIGtHZW5lcmFsUmluZ1RpbWVCb3Vu
ZHNRdWV1ZU1hc2s7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCmluZGV4IDQzNjk2ODhlMTlhNDI3ZWM4YWU0
ZjYxZDUwMjdhZTczYjJlNGZhZjEuLjhjZDVjMjg3NDI3ZGNmZTYwOWJkOThmNjZmOWFhYTA5NGNm
OWM1ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcApAQCAtMTQzMCw3ICsxNDMwLDcgQEAgSGFzaE1hcDx1
aW50cHRyX3QsIEFWRldyYXBwZXIqPiYgQVZGV3JhcHBlcjo6bWFwKCkKIAogdm9pZCBBVkZXcmFw
cGVyOjphZGRUb01hcCgpCiB7Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1hcExvY2soKSB9OworICAg
IExvY2tIb2xkZXIgbG9ja2VyKG1hcExvY2soKSk7CiAgICAgCiAgICAgLy8gSGFzaE1hcCBkb2Vz
bid0IGxpa2UgYSBrZXkgb2YgMCwgYW5kIGFsc28gbWFrZSBzdXJlIHdlIGFyZW4ndAogICAgIC8v
IHVzaW5nIGFuIG9iamVjdCBJRCB0aGF0J3MgYWxyZWFkeSBpbiB1c2UuCkBAIC0xNDQ2LDcgKzE0
NDYsNyBAQCB2b2lkIEFWRldyYXBwZXI6OnJlbW92ZUZyb21NYXAoKSBjb25zdAogewogICAgIExP
RyhNZWRpYSwgIkFWRldyYXBwZXI6OnJlbW92ZUZyb21NYXAoJXAgJWQpIiwgdGhpcywgbV9vYmpl
Y3RJRCk7CiAKLSAgICBMb2NrZXIgbG9ja2VyIHsgbWFwTG9jaygpIH07CisgICAgTG9ja0hvbGRl
ciBsb2NrZXIobWFwTG9jaygpKTsKICAgICBtYXAoKS5yZW1vdmUobV9vYmplY3RJRCk7CiB9CiAK
QEAgLTE2NTAsNyArMTY1MCw3IEBAIHZvaWQgQVZGV3JhcHBlcjo6Y3JlYXRlUGxheWVySXRlbSgp
CiAKIHZvaWQgQVZGV3JhcHBlcjo6cGVyaW9kaWNUaW1lT2JzZXJ2ZXJDYWxsYmFjayhBVkNGUGxh
eWVyUmVmLCBDTVRpbWUgY21UaW1lLCB2b2lkKiBjb250ZXh0KQogewotICAgIExvY2tlciBsb2Nr
ZXIgeyBtYXBMb2NrKCkgfTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtYXBMb2NrKCkpOwogICAg
IEFWRldyYXBwZXIqIHNlbGYgPSBhdmZXcmFwcGVyRm9yQ2FsbGJhY2tDb250ZXh0KGNvbnRleHQp
OwogICAgIGlmICghc2VsZikgewogICAgICAgICBMT0coTWVkaWEsICJBVkZXcmFwcGVyOjpwZXJp
b2RpY1RpbWVPYnNlcnZlckNhbGxiYWNrIGludm9rZWQgZm9yIGRlbGV0ZWQgQVZGV3JhcHBlciAl
ZCIsIHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihjb250ZXh0KSk7CkBAIC0xNjgyLDcgKzE2
ODIsNyBAQCB2b2lkIEFWRldyYXBwZXI6OnByb2Nlc3NOb3RpZmljYXRpb24odm9pZCogY29udGV4
dCkKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxOb3RpZmljYXRpb25DYWxsYmFja0RhdGE+IG5vdGlm
aWNhdGlvbkRhdGEgeyBzdGF0aWNfY2FzdDxOb3RpZmljYXRpb25DYWxsYmFja0RhdGEqPihjb250
ZXh0KSB9OwogCi0gICAgTG9ja2VyIGxvY2tlciB7IG1hcExvY2soKSB9OworICAgIExvY2tIb2xk
ZXIgbG9ja2VyKG1hcExvY2soKSk7CiAgICAgQVZGV3JhcHBlciogc2VsZiA9IGF2ZldyYXBwZXJG
b3JDYWxsYmFja0NvbnRleHQobm90aWZpY2F0aW9uRGF0YS0+bV9jb250ZXh0KTsKICAgICBpZiAo
IXNlbGYpIHsKICAgICAgICAgTE9HKE1lZGlhLCAiQVZGV3JhcHBlcjo6cHJvY2Vzc05vdGlmaWNh
dGlvbiBpbnZva2VkIGZvciBkZWxldGVkIEFWRldyYXBwZXIgJWQiLCByZWludGVycHJldF9jYXN0
PHVpbnRwdHJfdD4oY29udGV4dCkpOwpAQCAtMTczNyw3ICsxNzM3LDcgQEAgdm9pZCBBVkZXcmFw
cGVyOjpub3RpZmljYXRpb25DYWxsYmFjayhDRk5vdGlmaWNhdGlvbkNlbnRlclJlZiwgdm9pZCog
b2JzZXJ2ZXIsIEMKIAogdm9pZCBBVkZXcmFwcGVyOjpsb2FkUGxheWFibGVDb21wbGV0aW9uQ2Fs
bGJhY2soQVZDRkFzc2V0UmVmLCB2b2lkKiBjb250ZXh0KQogewotICAgIExvY2tlciBsb2NrZXIg
eyBtYXBMb2NrKCkgfTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtYXBMb2NrKCkpOwogICAgIEFW
RldyYXBwZXIqIHNlbGYgPSBhdmZXcmFwcGVyRm9yQ2FsbGJhY2tDb250ZXh0KGNvbnRleHQpOwog
ICAgIGlmICghc2VsZikgewogICAgICAgICBMT0coTWVkaWEsICJBVkZXcmFwcGVyOjpsb2FkUGxh
eWFibGVDb21wbGV0aW9uQ2FsbGJhY2sgaW52b2tlZCBmb3IgZGVsZXRlZCBBVkZXcmFwcGVyICVk
IiwgcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGNvbnRleHQpKTsKQEAgLTE3NjQsNyArMTc2
NCw3IEBAIHZvaWQgQVZGV3JhcHBlcjo6Y2hlY2tQbGF5YWJpbGl0eSgpCiAKIHZvaWQgQVZGV3Jh
cHBlcjo6bG9hZE1ldGFkYXRhQ29tcGxldGlvbkNhbGxiYWNrKEFWQ0ZBc3NldFJlZiwgdm9pZCog
Y29udGV4dCkKIHsKLSAgICBMb2NrZXIgbG9ja2VyIHsgbWFwTG9jaygpIH07CisgICAgTG9ja0hv
bGRlciBsb2NrZXIobWFwTG9jaygpKTsKICAgICBBVkZXcmFwcGVyKiBzZWxmID0gYXZmV3JhcHBl
ckZvckNhbGxiYWNrQ29udGV4dChjb250ZXh0KTsKICAgICBpZiAoIXNlbGYpIHsKICAgICAgICAg
TE9HKE1lZGlhLCAiQVZGV3JhcHBlcjo6bG9hZE1ldGFkYXRhQ29tcGxldGlvbkNhbGxiYWNrIGlu
dm9rZWQgZm9yIGRlbGV0ZWQgQVZGV3JhcHBlciAlZCIsIHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0
cl90Pihjb250ZXh0KSk7CkBAIC0xNzg0LDcgKzE3ODQsNyBAQCB2b2lkIEFWRldyYXBwZXI6OmJl
Z2luTG9hZGluZ01ldGFkYXRhKCkKIAogdm9pZCBBVkZXcmFwcGVyOjpzZWVrQ29tcGxldGVkQ2Fs
bGJhY2soQVZDRlBsYXllckl0ZW1SZWYsIEJvb2xlYW4gZmluaXNoZWQsIHZvaWQqIGNvbnRleHQp
CiB7Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1hcExvY2soKSB9OworICAgIExvY2tIb2xkZXIgbG9j
a2VyKG1hcExvY2soKSk7CiAgICAgQVZGV3JhcHBlciogc2VsZiA9IGF2ZldyYXBwZXJGb3JDYWxs
YmFja0NvbnRleHQoY29udGV4dCk7CiAgICAgaWYgKCFzZWxmKSB7CiAgICAgICAgIExPRyhNZWRp
YSwgIkFWRldyYXBwZXI6OnNlZWtDb21wbGV0ZWRDYWxsYmFjayBpbnZva2VkIGZvciBkZWxldGVk
IEFWRldyYXBwZXIgJWQiLCByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oY29udGV4dCkpOwpA
QCAtMTgyOCw3ICsxODI4LDcgQEAgdm9pZCBBVkZXcmFwcGVyOjpwcm9jZXNzQ3VlKHZvaWQqIGNv
bnRleHQpCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TGVnaWJsZU91dHB1dERhdGE+IGxlZ2libGVP
dXRwdXREYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8TGVnaWJsZU91dHB1dERhdGEqPihjb250ZXh0KSk7
CiAKLSAgICBMb2NrZXIgbG9ja2VyIHsgbWFwTG9jaygpIH07CisgICAgTG9ja0hvbGRlciBsb2Nr
ZXIobWFwTG9jaygpKTsKICAgICBBVkZXcmFwcGVyKiBzZWxmID0gYXZmV3JhcHBlckZvckNhbGxi
YWNrQ29udGV4dChsZWdpYmxlT3V0cHV0RGF0YS0+bV9jb250ZXh0KTsKICAgICBpZiAoIXNlbGYp
IHsKICAgICAgICAgTE9HKE1lZGlhLCAiQVZGV3JhcHBlcjo6cHJvY2Vzc0N1ZSBpbnZva2VkIGZv
ciBkZWxldGVkIEFWRldyYXBwZXIgJWQiLCByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oY29u
dGV4dCkpOwpAQCAtMTg0NCw3ICsxODQ0LDcgQEAgdm9pZCBBVkZXcmFwcGVyOjpwcm9jZXNzQ3Vl
KHZvaWQqIGNvbnRleHQpCiB2b2lkIEFWRldyYXBwZXI6OmxlZ2libGVPdXRwdXRDYWxsYmFjayh2
b2lkKiBjb250ZXh0LCBBVkNGUGxheWVySXRlbUxlZ2libGVPdXRwdXRSZWYgbGVnaWJsZU91dHB1
dCwgQ0ZBcnJheVJlZiBhdHRyaWJ1dGVkU3RyaW5ncywgQ0ZBcnJheVJlZiBuYXRpdmVTYW1wbGVC
dWZmZXJzLCBDTVRpbWUgaXRlbVRpbWUpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7
Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1hcExvY2soKSB9OworICAgIExvY2tIb2xkZXIgbG9ja2Vy
KG1hcExvY2soKSk7CiAgICAgQVZGV3JhcHBlciogc2VsZiA9IGF2ZldyYXBwZXJGb3JDYWxsYmFj
a0NvbnRleHQoY29udGV4dCk7CiAgICAgaWYgKCFzZWxmKSB7CiAgICAgICAgIExPRyhNZWRpYSwg
IkFWRldyYXBwZXI6OmxlZ2libGVPdXRwdXRDYWxsYmFjayBpbnZva2VkIGZvciBkZWxldGVkIEFW
RldyYXBwZXIgJWQiLCByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oY29udGV4dCkpOwpAQCAt
MTg4Myw3ICsxODgzLDcgQEAgdm9pZCBBVkZXcmFwcGVyOjpwcm9jZXNzU2hvdWxkV2FpdEZvckxv
YWRpbmdPZlJlc291cmNlKHZvaWQqIGNvbnRleHQpCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TG9h
ZFJlcXVlc3REYXRhPiBsb2FkUmVxdWVzdERhdGEocmVpbnRlcnByZXRfY2FzdDxMb2FkUmVxdWVz
dERhdGEqPihjb250ZXh0KSk7CiAKLSAgICBMb2NrZXIgbG9ja2VyIHsgbWFwTG9jaygpIH07Cisg
ICAgTG9ja0hvbGRlciBsb2NrZXIobWFwTG9jaygpKTsKICAgICBBVkZXcmFwcGVyKiBzZWxmID0g
YXZmV3JhcHBlckZvckNhbGxiYWNrQ29udGV4dChsb2FkUmVxdWVzdERhdGEtPm1fY29udGV4dCk7
CiAgICAgaWYgKCFzZWxmKSB7CiAgICAgICAgIExPRyhNZWRpYSwgIkFWRldyYXBwZXI6OnByb2Nl
c3NTaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UgaW52b2tlZCBmb3IgZGVsZXRlZCBBVkZX
cmFwcGVyICVkIiwgcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGNvbnRleHQpKTsKQEAgLTE5
MzgsNyArMTkzOCw3IEBAIGJvb2wgQVZGV3JhcHBlcjo6c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJl
c291cmNlKEFWQ0ZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3RSCiBCb29sZWFuIEFWRldyYXBw
ZXI6OnJlc291cmNlTG9hZGVyU2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlcXVlc3RlZFJlc291cmNl
KEFWQ0ZBc3NldFJlc291cmNlTG9hZGVyUmVmIHJlc291cmNlTG9hZGVyLCBBVkNGQXNzZXRSZXNv
dXJjZUxvYWRpbmdSZXF1ZXN0UmVmIGxvYWRpbmdSZXF1ZXN0LCB2b2lkICpjb250ZXh0KQogewog
ICAgIEFTU0VSVChkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpICE9IGRpc3BhdGNoX2dldF9jdXJy
ZW50X3F1ZXVlKCkpOwotICAgIExvY2tlciBsb2NrZXIgeyBtYXBMb2NrKCkgfTsKKyAgICBMb2Nr
SG9sZGVyIGxvY2tlcihtYXBMb2NrKCkpOwogICAgIEFWRldyYXBwZXIqIHNlbGYgPSBhdmZXcmFw
cGVyRm9yQ2FsbGJhY2tDb250ZXh0KGNvbnRleHQpOwogICAgIGlmICghc2VsZikgewogICAgICAg
ICBMT0coTWVkaWEsICJBVkZXcmFwcGVyOjpyZXNvdXJjZUxvYWRlclNob3VsZFdhaXRGb3JMb2Fk
aW5nT2ZSZXF1ZXN0ZWRSZXNvdXJjZSBpbnZva2VkIGZvciBkZWxldGVkIEFWRldyYXBwZXIgJWQi
LCByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oY29udGV4dCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNv
ZGVyQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KaW5kZXggNTJmOTE4ZjFlYWJiYjA3M2Vi
NDkyODVhMWYyNmI2MmRlYzE4NzU3ZS4uZTk3ZDAwNGNjOTQ3ZDZkYzFmNzUxMDFjMGU3M2IyNzUz
MDNhZjQ4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpD
Lm1tCkBAIC05Nyw3ICs5Nyw3IEBAIC0gKE5TRGF0YSopZGF0YQogCiAtICh2b2lkKXNldEV4cGVj
dGVkQ29udGVudFNpemU6KGxvbmcgbG9uZylleHBlY3RlZENvbnRlbnRTaXplCiB7Ci0gICAgTG9j
a2VyIGxvY2tlciB7IF9kYXRhTG9jayB9OworICAgIExvY2tIb2xkZXIgaG9sZGVyIHsgX2RhdGFM
b2NrIH07CiAgICAgX2V4cGVjdGVkQ29udGVudFNpemUgPSBleHBlY3RlZENvbnRlbnRTaXplOwog
CiAgICAgW3NlbGYgZnVsZmlsbFBlbmRpbmdSZXF1ZXN0c107CkBAIC0xMDUsNyArMTA1LDcgQEAg
LSAodm9pZClzZXRFeHBlY3RlZENvbnRlbnRTaXplOihsb25nIGxvbmcpZXhwZWN0ZWRDb250ZW50
U2l6ZQogCiAtICh2b2lkKXVwZGF0ZURhdGE6KE5TRGF0YSAqKWRhdGEgY29tcGxldGU6KEJPT0wp
Y29tcGxldGUKIHsKLSAgICBMb2NrZXIgbG9ja2VyIHsgX2RhdGFMb2NrIH07CisgICAgTG9ja0hv
bGRlciBob2xkZXIgeyBfZGF0YUxvY2sgfTsKICAgICBfZGF0YSA9IGRhdGE7CiAgICAgX2NvbXBs
ZXRlID0gY29tcGxldGU7CiAKQEAgLTE5MCw3ICsxOTAsNyBAQCAtICh2b2lkKWZ1bGZpbGxSZXF1
ZXN0OihBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdCAqKXJlcXVlc3QKIAogLSAoQk9PTCly
ZXNvdXJjZUxvYWRlcjooQVZBc3NldFJlc291cmNlTG9hZGVyICopcmVzb3VyY2VMb2FkZXIgc2hv
dWxkV2FpdEZvckxvYWRpbmdPZlJlcXVlc3RlZFJlc291cmNlOihBVkFzc2V0UmVzb3VyY2VMb2Fk
aW5nUmVxdWVzdCAqKWxvYWRpbmdSZXF1ZXN0CiB7Ci0gICAgTG9ja2VyIGxvY2tlciB7IF9kYXRh
TG9jayB9OworICAgIExvY2tIb2xkZXIgaG9sZGVyIHsgX2RhdGFMb2NrIH07CiAKICAgICBVTlVT
RURfUEFSQU0ocmVzb3VyY2VMb2FkZXIpOwogCkBAIC0yMDYsNyArMjA2LDcgQEAgLSAoQk9PTCly
ZXNvdXJjZUxvYWRlcjooQVZBc3NldFJlc291cmNlTG9hZGVyICopcmVzb3VyY2VMb2FkZXIgc2hv
dWxkV2FpdEZvckxvYWQKIAogLSAodm9pZClyZXNvdXJjZUxvYWRlcjooQVZBc3NldFJlc291cmNl
TG9hZGVyICopcmVzb3VyY2VMb2FkZXIgZGlkQ2FuY2VsTG9hZGluZ1JlcXVlc3Q6KEFWQXNzZXRS
ZXNvdXJjZUxvYWRpbmdSZXF1ZXN0ICopbG9hZGluZ1JlcXVlc3QKIHsKLSAgICBMb2NrZXIgbG9j
a2VyIHsgX2RhdGFMb2NrIH07CisgICAgTG9ja0hvbGRlciBob2xkZXIgeyBfZGF0YUxvY2sgfTsK
IAogICAgIFVOVVNFRF9QQVJBTShyZXNvdXJjZUxvYWRlcik7CiAgICAgX3JlcXVlc3RzLnJlbW92
ZUFsbChsb2FkaW5nUmVxdWVzdCk7CkBAIC00MzcsNyArNDM3LDcgQEAgdm9pZCBJbWFnZURlY29k
ZXJBVkZPYmpDOjpzZXRUcmFjayhBVkFzc2V0VHJhY2sgKnRyYWNrKQogICAgICAgICByZXR1cm47
CiAgICAgbV90cmFjayA9IHRyYWNrOwogCi0gICAgTG9ja2VyIGxvY2tlciB7IG1fc2FtcGxlR2Vu
ZXJhdG9yTG9jayB9OworICAgIExvY2tIb2xkZXIgaG9sZGVyIHsgbV9zYW1wbGVHZW5lcmF0b3JM
b2NrIH07CiAgICAgbV9zYW1wbGVEYXRhLmNsZWFyKCk7CiAgICAgbV9zaXplLnJlc2V0KCk7CiAg
ICAgbV9jdXJzb3IgPSBtX3NhbXBsZURhdGEuZGVjb2RlT3JkZXIoKS5lbmQoKTsKQEAgLTU2MSw3
ICs1NjEsNyBAQCB1bnNpZ25lZCBJbWFnZURlY29kZXJBVkZPYmpDOjpmcmFtZUJ5dGVzQXRJbmRl
eChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgcwogCiBQbGF0Zm9ybUltYWdlUHRyIElt
YWdlRGVjb2RlckFWRk9iakM6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwg
U3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJikKIHsKLSAgICBMb2NrZXIg
bG9ja2VyIHsgbV9zYW1wbGVHZW5lcmF0b3JMb2NrIH07CisgICAgTG9ja0hvbGRlciBob2xkZXIg
eyBtX3NhbXBsZUdlbmVyYXRvckxvY2sgfTsKIAogICAgIGF1dG8qIHNhbXBsZURhdGEgPSBzYW1w
bGVBdEluZGV4KGluZGV4KTsKICAgICBpZiAoIXNhbXBsZURhdGEpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVh
bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFn
ZURlY29kZXJHU3RyZWFtZXIuY3BwCmluZGV4IDY0MTBjMjlkMjBhNTY5NGZiYThhYjlhYjNjNjNi
Y2E0OTFkZjIwZTQuLjM1MDM4YWY1OTgzYzFkMjNjYWM3YzQwZDcxMDdhYWEzMDBiMjAwMTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFn
ZURlY29kZXJHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCkBAIC0xODksNyArMTg5LDcg
QEAgdW5zaWduZWQgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpmcmFtZUJ5dGVzQXRJbmRleChzaXpl
X3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwKIAogUGxhdGZvcm1JbWFnZVB0ciBJbWFnZURlY29k
ZXJHU3RyZWFtZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2Ft
cGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJikKIHsKLSAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9zYW1wbGVHZW5lcmF0b3JMb2NrIH07CisgICAgTG9ja0hvbGRlciBob2xkZXIgeyBtX3Nh
bXBsZUdlbmVyYXRvckxvY2sgfTsKIAogICAgIGF1dG8qIHNhbXBsZURhdGEgPSBzYW1wbGVBdElu
ZGV4KGluZGV4KTsKICAgICBpZiAoIXNhbXBsZURhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdT
dHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggZWE4ZTEwNzJhOTcxZjcx
MjE3MTcwYjYxM2U3YWU3NjhiYWVkZmVjNi4uYThlZWY1MmExM2E3N2VlZDc3Y2YxNGU5ODczNjc4
MGFiOTlmZTA0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2
YXRlR1N0cmVhbWVyLmNwcApAQCAtODMsNyArODMsNyBAQCB2b2lkIEluYmFuZFRleHRUcmFja1By
aXZhdGVHU3RyZWFtZXI6OmRpc2Nvbm5lY3QoKQogdm9pZCBJbmJhbmRUZXh0VHJhY2tQcml2YXRl
R1N0cmVhbWVyOjpoYW5kbGVTYW1wbGUoR1JlZlB0cjxHc3RTYW1wbGU+IHNhbXBsZSkKIHsKICAg
ICB7Ci0gICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3NhbXBsZU11dGV4IH07CisgICAgICAgIExv
Y2tIb2xkZXIgbG9jayhtX3NhbXBsZU11dGV4KTsKICAgICAgICAgbV9wZW5kaW5nU2FtcGxlcy5h
cHBlbmQoc2FtcGxlKTsKICAgICB9CiAKQEAgLTEwNSw3ICsxMDUsNyBAQCB2b2lkIEluYmFuZFRl
eHRUcmFja1ByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVRyYWNrT2ZTYW1wbGUoKQogewogICAgIFZl
Y3RvcjxHUmVmUHRyPEdzdFNhbXBsZT4gPiBzYW1wbGVzOwogICAgIHsKLSAgICAgICAgTG9ja2Vy
IGxvY2tlciB7IG1fc2FtcGxlTXV0ZXggfTsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1fc2Ft
cGxlTXV0ZXgpOwogICAgICAgICBtX3BlbmRpbmdTYW1wbGVzLnN3YXAoc2FtcGxlcyk7CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWFpblRocmVhZE5vdGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWFpblRocmVhZE5vdGlmaWVyLmgKaW5kZXggOGQ5NDI0MGJiMDZlYzQxYjdk
Nzc1YzJmNDAzNTNhY2NjNTI0NjI2Ni4uYTg4NTkyODljODU1MzJkOWU2NjNkZTQ3MGI2MTMxYmM5
ZGIwOGZhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01haW5UaHJlYWROb3RpZmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NYWluVGhyZWFkTm90aWZpZXIuaApAQCAtODYsNyArODYsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBjYW5jZWxQZW5kaW5nTm90aWZpY2F0aW9ucyh1bnNpZ25lZCBt
YXNrID0gMCkKICAgICB7CiAgICAgICAgIEFTU0VSVChtX2lzVmFsaWQubG9hZCgpKTsKLSAgICAg
ICAgTG9ja2VyIGxvY2tlciB7IG1fcGVuZGluZ05vdGlmaWNhdGlvbnNMb2NrIH07CisgICAgICAg
IExvY2tIb2xkZXIgbG9ja2VyKG1fcGVuZGluZ05vdGlmaWNhdGlvbnNMb2NrKTsKICAgICAgICAg
aWYgKG1hc2spCiAgICAgICAgICAgICBtX3BlbmRpbmdOb3RpZmljYXRpb25zICY9IH5tYXNrOwog
ICAgICAgICBlbHNlCkBAIC0xMDcsNyArMTA3LDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgYWRk
UGVuZGluZ05vdGlmaWNhdGlvbihUIG5vdGlmaWNhdGlvblR5cGUpCiAgICAgewotICAgICAgICBM
b2NrZXIgbG9ja2VyIHsgbV9wZW5kaW5nTm90aWZpY2F0aW9uc0xvY2sgfTsKKyAgICAgICAgTG9j
a0hvbGRlciBsb2NrZXIobV9wZW5kaW5nTm90aWZpY2F0aW9uc0xvY2spOwogICAgICAgICBpZiAo
bm90aWZpY2F0aW9uVHlwZSAmIG1fcGVuZGluZ05vdGlmaWNhdGlvbnMpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIG1fcGVuZGluZ05vdGlmaWNhdGlvbnMgfD0gbm90aWZpY2F0
aW9uVHlwZTsKQEAgLTExNiw3ICsxMTYsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCByZW1vdmVQ
ZW5kaW5nTm90aWZpY2F0aW9uKFQgbm90aWZpY2F0aW9uVHlwZSkKICAgICB7Ci0gICAgICAgIExv
Y2tlciBsb2NrZXIgeyBtX3BlbmRpbmdOb3RpZmljYXRpb25zTG9jayB9OworICAgICAgICBMb2Nr
SG9sZGVyIGxvY2tlcihtX3BlbmRpbmdOb3RpZmljYXRpb25zTG9jayk7CiAgICAgICAgIGlmIChu
b3RpZmljYXRpb25UeXBlICYgbV9wZW5kaW5nTm90aWZpY2F0aW9ucykgewogICAgICAgICAgICAg
bV9wZW5kaW5nTm90aWZpY2F0aW9ucyAmPSB+bm90aWZpY2F0aW9uVHlwZTsKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyLmNwcAppbmRleCA3NWEyMWMxYjRkZDg1MDRmZTAyN2NmMjkzODIwZDJmODdlMDQ4ZjA3Li5h
ZjUxMjk5MGI2YjQwYWMxZTgwNDRhOWI3MDllNjM5ZWZkMTE3MjMyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMzU1MSw3ICszNTUxLDcg
QEAgSW5pdERhdGEgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwYXJzZUluaXREYXRhRnJv
bVByb3RlY3Rpb25NZXNzYWdlKEdzdE1lc3MKIAogICAgIEluaXREYXRhIGluaXREYXRhOwogICAg
IHsKLSAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fcHJvdGVjdGlvbk11dGV4IH07CisgICAgICAg
IExvY2tIb2xkZXIgbG9jayhtX3Byb3RlY3Rpb25NdXRleCk7CiAgICAgICAgIFByb3RlY3Rpb25T
eXN0ZW1FdmVudHMgcHJvdGVjdGlvblN5c3RlbUV2ZW50cyhtZXNzYWdlKTsKICAgICAgICAgR1NU
X1RSQUNFX09CSkVDVChwaXBlbGluZSgpLCAiZm91bmQgJXp1IHByb3RlY3Rpb24gZXZlbnRzLCAl
enUgZGVjcnlwdG9ycyBhdmFpbGFibGUiLCBwcm90ZWN0aW9uU3lzdGVtRXZlbnRzLmV2ZW50cygp
LnNpemUoKSwgcHJvdGVjdGlvblN5c3RlbUV2ZW50cy5hdmFpbGFibGVTeXN0ZW1zKCkuc2l6ZSgp
KTsKIApAQCAtMzY2Niw3ICszNjY2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXI6OmF0dGVtcHRUb0RlY3J5cHRXaXRoTG9jYWxJbnN0YW5jZSgpCiB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlUHJvdGVjdGlvbkV2ZW50KEdzdEV2ZW50KiBldmVudCkK
IHsKICAgICB7Ci0gICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3Byb3RlY3Rpb25NdXRleCB9Owor
ICAgICAgICBMb2NrSG9sZGVyIGxvY2sobV9wcm90ZWN0aW9uTXV0ZXgpOwogICAgICAgICBpZiAo
bV9oYW5kbGVkUHJvdGVjdGlvbkV2ZW50cy5jb250YWlucyhHU1RfRVZFTlRfU0VRTlVNKGV2ZW50
KSkpIHsKICAgICAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1QocGlwZWxpbmUoKSwgImV2ZW50ICV1
IGFscmVhZHkgaGFuZGxlZCIsIEdTVF9FVkVOVF9TRVFOVU0oZXZlbnQpKTsKICAgICAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmNwcApp
bmRleCA2MDBhNjdmZGY3NGY2OTFjODU3MTA4MWRiODMwODQzZmMyYTU0MjJlLi5kNjBjYWU4MDgx
Y2QzYTkwNWU2OTZhYjMzNWM3OWM3ODg2NGNkNDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNr
UHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwCkBAIC0xNTksNyArMTU5LDcgQEAgdm9pZCBUcmFja1By
aXZhdGVCYXNlR1N0cmVhbWVyOjp0YWdzQ2hhbmdlZCgpCiAKICAgICBHU1RfREVCVUcoIkluc3Bl
Y3RpbmcgdHJhY2sgYXQgaW5kZXggJWQgd2l0aCB0YWdzOiAlIiBHU1RfUFRSX0ZPUk1BVCwgbV9p
bmRleCwgdGFncy5nZXQoKSk7CiAgICAgewotICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV90YWdN
dXRleCB9OworICAgICAgICBMb2NrSG9sZGVyIGxvY2sobV90YWdNdXRleCk7CiAgICAgICAgIG1f
dGFncy5zd2FwKHRhZ3MpOwogICAgIH0KIApAQCAtMTk4LDcgKzE5OCw3IEBAIHZvaWQgVHJhY2tQ
cml2YXRlQmFzZUdTdHJlYW1lcjo6bm90aWZ5VHJhY2tPZlRhZ3NDaGFuZ2VkKCkKIAogICAgIEdS
ZWZQdHI8R3N0VGFnTGlzdD4gdGFnczsKICAgICB7Ci0gICAgICAgIExvY2tlciBsb2NrZXIgeyBt
X3RhZ011dGV4IH07CisgICAgICAgIExvY2tIb2xkZXIgbG9jayhtX3RhZ011dGV4KTsKICAgICAg
ICAgdGFncy5zd2FwKG1fdGFncyk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9TaW5rR1N0cmVhbWVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1NpbmtHU3RyZWFt
ZXIuY3BwCmluZGV4IDExYmVhMTJiNjZkYzU0NjI1YTgyOWY5MDc0YTkyYzAzNzRjZTI4OTUuLmY0
MTM5Yjc2YTdmYmUyZGUwZjdmNmU2NGNjNTMyNjBkZjAyZGQyYTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1NpbmtHU3RyZWFtZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRl
b1NpbmtHU3RyZWFtZXIuY3BwCkBAIC03MSwyNiArNzEsMjYgQEAgY2xhc3MgVmlkZW9SZW5kZXJS
ZXF1ZXN0U2NoZWR1bGVyIHsKIHB1YmxpYzoKICAgICB2b2lkIHN0YXJ0KCkKICAgICB7Ci0gICAg
ICAgIExvY2tlciBsb2NrZXIgeyBtX3NhbXBsZU11dGV4IH07CisgICAgICAgIExvY2tIb2xkZXIg
bG9ja2VyKG1fc2FtcGxlTXV0ZXgpOwogICAgICAgICBtX3VubG9ja2VkID0gZmFsc2U7CiAgICAg
fQogCiAgICAgdm9pZCBzdG9wKCkKICAgICB7Ci0gICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3Nh
bXBsZU11dGV4IH07CisgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2FtcGxlTXV0ZXgpOwog
ICAgICAgICBtX3NhbXBsZSA9IG51bGxwdHI7CiAgICAgICAgIG1fdW5sb2NrZWQgPSB0cnVlOwog
ICAgIH0KIAogICAgIHZvaWQgZHJhaW4oKQogICAgIHsKLSAgICAgICAgTG9ja2VyIGxvY2tlciB7
IG1fc2FtcGxlTXV0ZXggfTsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zYW1wbGVNdXRl
eCk7CiAgICAgICAgIG1fc2FtcGxlID0gbnVsbHB0cjsKICAgICB9CiAKICAgICBib29sIHJlcXVl
c3RSZW5kZXIoV2ViS2l0VmlkZW9TaW5rKiBzaW5rLCBHc3RCdWZmZXIqIGJ1ZmZlcikKICAgICB7
Ci0gICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3NhbXBsZU11dGV4IH07CisgICAgICAgIExvY2tI
b2xkZXIgbG9ja2VyKG1fc2FtcGxlTXV0ZXgpOwogICAgICAgICBpZiAobV91bmxvY2tlZCkKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL1dlYktpdENvbW1vbkVuY3J5cHRpb25EZWNyeXB0
b3JHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL2VtZS9XZWJLaXRDb21tb25FbmNyeXB0aW9uRGVjcnlwdG9yR1N0cmVhbWVyLmNwcAppbmRl
eCAzMjAxNzRkNWJmZTg3NmRiOGMxNDIzNTlhOGUxYTAxYWE4NmMwZmRiLi4xODBlMjYwZjk4ZWMw
NjA2ZGM4NDljNDRhYTMyYjU5NzY4OWI2YTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL1dlYktpdENvbW1vbkVuY3J5cHRpb25EZWNy
eXB0b3JHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9lbWUvV2ViS2l0Q29tbW9uRW5jcnlwdGlvbkRlY3J5cHRvckdTdHJlYW1lci5j
cHAKQEAgLTE5MSw3ICsxOTEsNyBAQCBzdGF0aWMgR3N0Rmxvd1JldHVybiB0cmFuc2Zvcm1JblBs
YWNlKEdzdEJhc2VUcmFuc2Zvcm0qIGJhc2UsIEdzdEJ1ZmZlciogYnVmZmVyKQogICAgICAgICBy
ZXR1cm4gR1NUX0ZMT1dfT0s7CiAgICAgfQogCi0gICAgTG9ja2VyIGxvY2tlciB7IHByaXYtPm11
dGV4IH07CisgICAgTG9ja0hvbGRlciBsb2NrZXIocHJpdi0+bXV0ZXgpOwogCiAgICAgaWYgKHBy
aXYtPmlzRmx1c2hpbmcpIHsKICAgICAgICAgR1NUX0RFQlVHX09CSkVDVChzZWxmLCAiRGVjcnlw
dGlvbiBhYm9ydGVkIGJlY2F1c2Ugb2YgZmx1c2giKTsKQEAgLTI4OSw3ICsyODksNyBAQCBzdGF0
aWMgR3N0Rmxvd1JldHVybiB0cmFuc2Zvcm1JblBsYWNlKEdzdEJhc2VUcmFuc2Zvcm0qIGJhc2Us
IEdzdEJ1ZmZlciogYnVmZmVyKQogICAgIEdTVF9UUkFDRV9PQkpFQ1Qoc2VsZiwgImRlY3J5cHRp
bmciKTsKIAogICAgIC8vIFRlbXBvcmFyaWx5IHJlbGVhc2UgdGhlIGxvY2sgd2hpbGUgd2UgZG9u
J3QgbmVlZCB0byBhY2Nlc3MgcHJpdi4gVGhlIGxvd2VyIGxldmVsIEFQSSBpcyB1c2VkCi0gICAg
Ly8gaW4gb3JkZXIgdG8gYXZvaWQgY3JlYXRpbmcgc2V2ZXJhbCBzY29wZXMgd2l0aCBkaWZmZXJl
bnQgTG9ja2VyIGluc3RhbmNlcyBpbiBlYWNoIG9uZS4KKyAgICAvLyBpbiBvcmRlciB0byBhdm9p
ZCBjcmVhdGluZyBzZXZlcmFsIHNjb3BlcyB3aXRoIGRpZmZlcmVudCBMb2NrSG9sZGVyIGluc3Rh
bmNlcyBpbiBlYWNoIG9uZS4KICAgICBwcml2LT5tdXRleC51bmxvY2soKTsKIAogICAgIGJvb2wg
ZGlkRGVjcnlwdGlvblN1Y2NlZWQgPSBrbGFzcy0+ZGVjcnlwdChzZWxmLCBpdkJ1ZmZlciwga2V5
SURCdWZmZXIsIGJ1ZmZlciwgc3ViU2FtcGxlQ291bnQsIHN1YlNhbXBsZXNCdWZmZXIpOwpAQCAt
MzkzLDcgKzM5Myw3IEBAIHN0YXRpYyBnYm9vbGVhbiBzaW5rRXZlbnRIYW5kbGVyKEdzdEJhc2VU
cmFuc2Zvcm0qIHRyYW5zLCBHc3RFdmVudCogZXZlbnQpCiAgICAgY2FzZSBHU1RfRVZFTlRfRkxV
U0hfU1RBUlQ6CiAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qoc2VsZiwgIkZsdXNoLXN0YXJ0Iik7
CiAgICAgICAgIHsKLSAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBwcml2LT5tdXRleCB9Owor
ICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIocHJpdi0+bXV0ZXgpOwogICAgICAgICAgICAg
Ym9vbCBpc0NkbVByb3h5QXR0YWNoZWQgPSBwcml2LT5jZG1Qcm94eTsKICAgICAgICAgICAgIHBy
aXYtPmlzRmx1c2hpbmcgPSB0cnVlOwogICAgICAgICAgICAgaWYgKGlzQ2RtUHJveHlBdHRhY2hl
ZCkgewpAQCAtNDA2LDcgKzQwNiw3IEBAIHN0YXRpYyBnYm9vbGVhbiBzaW5rRXZlbnRIYW5kbGVy
KEdzdEJhc2VUcmFuc2Zvcm0qIHRyYW5zLCBHc3RFdmVudCogZXZlbnQpCiAgICAgY2FzZSBHU1Rf
RVZFTlRfRkxVU0hfU1RPUDoKICAgICAgICAgR1NUX0RFQlVHX09CSkVDVChzZWxmLCAiRmx1c2gt
c3RvcCIpOwogICAgICAgICB7Ci0gICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgcHJpdi0+bXV0
ZXggfTsKKyAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKHByaXYtPm11dGV4KTsKICAgICAg
ICAgICAgIHByaXYtPmlzRmx1c2hpbmcgPSBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBicmVh
azsKQEAgLTQyMCw3ICs0MjAsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gc2lua0V2ZW50SGFuZGxlcihH
c3RCYXNlVHJhbnNmb3JtKiB0cmFucywgR3N0RXZlbnQqIGV2ZW50KQogYm9vbCB3ZWJLaXRNZWRp
YUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0SXNGbHVzaGluZyhXZWJLaXRNZWRpYUNvbW1vbkVuY3J5
cHRpb25EZWNyeXB0KiBzZWxmKQogewogICAgIFdlYktpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRl
Y3J5cHRQcml2YXRlKiBwcml2ID0gV0VCS0lUX01FRElBX0NFTkNfREVDUllQVF9HRVRfUFJJVkFU
RShzZWxmKTsKLSAgICBMb2NrZXIgbG9ja2VyIHsgcHJpdi0+bXV0ZXggfTsKKyAgICBMb2NrSG9s
ZGVyIGxvY2tlcihwcml2LT5tdXRleCk7CiAgICAgcmV0dXJuIHByaXYtPmlzRmx1c2hpbmc7CiB9
CiAKQEAgLTQ1OSw3ICs0NTksNyBAQCBzdGF0aWMgdm9pZCBzZXRDb250ZXh0KEdzdEVsZW1lbnQq
IGVsZW1lbnQsIEdzdENvbnRleHQqIGNvbnRleHQpCiAKICAgICBpZiAoZ3N0X2NvbnRleHRfaGFz
X2NvbnRleHRfdHlwZShjb250ZXh0LCAiZHJtLWNkbS1wcm94eSIpKSB7CiAgICAgICAgIGNvbnN0
IEdWYWx1ZSogdmFsdWUgPSBnc3Rfc3RydWN0dXJlX2dldF92YWx1ZShnc3RfY29udGV4dF9nZXRf
c3RydWN0dXJlKGNvbnRleHQpLCAiY2RtLXByb3h5Iik7Ci0gICAgICAgIExvY2tlciBsb2NrZXIg
eyBwcml2LT5tdXRleCB9OworICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihwcml2LT5tdXRleCk7
CiAgICAgICAgIHByaXYtPmNkbVByb3h5ID0gdmFsdWUgPyByZWludGVycHJldF9jYXN0PENETVBy
b3h5Kj4oZ192YWx1ZV9nZXRfcG9pbnRlcih2YWx1ZSkpIDogbnVsbHB0cjsKICAgICAgICAgR1NU
X0RFQlVHX09CSkVDVChzZWxmLCAicmVjZWl2ZWQgbmV3IENETUluc3RhbmNlICVwIiwgcHJpdi0+
Y2RtUHJveHkuZ2V0KCkpOwogICAgICAgICBrbGFzcy0+Y2RtUHJveHlBdHRhY2hlZChzZWxmLCBw
cml2LT5jZG1Qcm94eSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9uaWNvc2lhL05pY29zaWFCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhQnVmZmVyLmNwcAppbmRleCBjNzkxNWZiNTVkZTMzZjY2
Y2JmYWE5MjEzNjBiMTk5NTY0MmQ5Y2M0Li45NDliY2ZhODc0NTUwNDVjMWU1M2FlZDI0M2YwNzhj
ZWE4ZWZjNWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9u
aWNvc2lhL05pY29zaWFCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL25pY29zaWEvTmljb3NpYUJ1ZmZlci5jcHAKQEAgLTUwLDE0ICs1MCwxNCBAQCBCdWZm
ZXI6On5CdWZmZXIoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgQnVmZmVyOjpiZWdpblBhaW50aW5nKCkK
IHsKLSAgICBMb2NrZXIgbG9ja2VyIHsgbV9wYWludGluZy5sb2NrIH07CisgICAgTG9ja0hvbGRl
ciBsb2NrZXIobV9wYWludGluZy5sb2NrKTsKICAgICBBU1NFUlQobV9wYWludGluZy5zdGF0ZSA9
PSBQYWludGluZ1N0YXRlOjpDb21wbGV0ZSk7CiAgICAgbV9wYWludGluZy5zdGF0ZSA9IFBhaW50
aW5nU3RhdGU6OkluUHJvZ3Jlc3M7CiB9CiAKIHZvaWQgQnVmZmVyOjpjb21wbGV0ZVBhaW50aW5n
KCkKIHsKLSAgICBMb2NrZXIgbG9ja2VyIHsgbV9wYWludGluZy5sb2NrIH07CisgICAgTG9ja0hv
bGRlciBsb2NrZXIobV9wYWludGluZy5sb2NrKTsKICAgICBBU1NFUlQobV9wYWludGluZy5zdGF0
ZSA9PSBQYWludGluZ1N0YXRlOjpJblByb2dyZXNzKTsKICAgICBtX3BhaW50aW5nLnN0YXRlID0g
UGFpbnRpbmdTdGF0ZTo6Q29tcGxldGU7CiAgICAgbV9wYWludGluZy5jb25kaXRpb24ubm90aWZ5
T25lKCk7CkBAIC02NSw3ICs2NSw3IEBAIHZvaWQgQnVmZmVyOjpjb21wbGV0ZVBhaW50aW5nKCkK
IAogdm9pZCBCdWZmZXI6OndhaXRVbnRpbFBhaW50aW5nQ29tcGxldGUoKQogewotICAgIExvY2tl
ciBsb2NrZXIgeyBtX3BhaW50aW5nLmxvY2sgfTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3Bh
aW50aW5nLmxvY2spOwogICAgIG1fcGFpbnRpbmcuY29uZGl0aW9uLndhaXQobV9wYWludGluZy5s
b2NrLAogICAgICAgICBbdGhpc10geyByZXR1cm4gbV9wYWludGluZy5zdGF0ZSA9PSBQYWludGlu
Z1N0YXRlOjpDb21wbGV0ZTsgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFQbGF0Zm9ybUxheWVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFQbGF0Zm9ybUxheWVyLmgKaW5k
ZXggOWI2YWMwZGJiZDk1OWViNDFmOGE2NjJmZTlmN2Y0ZGEwNDUzYmVmYi4uNjQwYTA0MjFiY2Vi
NjFhOTg4YjYxZmZmOGY5YWI0YzZkOTUxYWQzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhUGxhdGZvcm1MYXllci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVBsYXRmb3JtTGF5
ZXIuaApAQCAtNTgsMTMgKzU4LDEzIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0U2NlbmVJbnRl
Z3JhdGlvbihSZWZQdHI8U2NlbmVJbnRlZ3JhdGlvbj4mJiBzY2VuZUludGVncmF0aW9uKQogICAg
IHsKLSAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fc3RhdGUubG9jayB9OworICAgICAgICBMb2Nr
SG9sZGVyIGxvY2tlcihtX3N0YXRlLmxvY2spOwogICAgICAgICBtX3N0YXRlLnNjZW5lSW50ZWdy
YXRpb24gPSBXVEZNb3ZlKHNjZW5lSW50ZWdyYXRpb24pOwogICAgIH0KIAogICAgIHN0ZDo6dW5p
cXVlX3B0cjxTY2VuZUludGVncmF0aW9uOjpVcGRhdGVTY29wZT4gY3JlYXRlVXBkYXRlU2NvcGUo
KQogICAgIHsKLSAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fc3RhdGUubG9jayB9OworICAgICAg
ICBMb2NrSG9sZGVyIGxvY2tlcihtX3N0YXRlLmxvY2spOwogICAgICAgICBpZiAobV9zdGF0ZS5z
Y2VuZUludGVncmF0aW9uKQogICAgICAgICAgICAgcmV0dXJuIG1fc3RhdGUuc2NlbmVJbnRlZ3Jh
dGlvbi0+Y3JlYXRlVXBkYXRlU2NvcGUoKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0y
MDgsMTQgKzIwOCwxNCBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICB2
b2lkIHVwZGF0ZVN0YXRlKGNvbnN0IFQmIGZ1bmN0b3IpCiAgICAgewotICAgICAgICBMb2NrZXIg
bG9ja2VyIHsgUGxhdGZvcm1MYXllcjo6bV9zdGF0ZS5sb2NrIH07CisgICAgICAgIExvY2tIb2xk
ZXIgbG9ja2VyKFBsYXRmb3JtTGF5ZXI6Om1fc3RhdGUubG9jayk7CiAgICAgICAgIGZ1bmN0b3Io
bV9zdGF0ZS5wZW5kaW5nKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAg
IHZvaWQgZmx1c2hTdGF0ZShjb25zdCBUJiBmdW5jdG9yKQogICAgIHsKLSAgICAgICAgTG9ja2Vy
IGxvY2tlciB7IFBsYXRmb3JtTGF5ZXI6Om1fc3RhdGUubG9jayB9OworICAgICAgICBMb2NrSG9s
ZGVyIGxvY2tlcihQbGF0Zm9ybUxheWVyOjptX3N0YXRlLmxvY2spOwogICAgICAgICBhdXRvJiBw
ZW5kaW5nID0gbV9zdGF0ZS5wZW5kaW5nOwogICAgICAgICBhdXRvJiBzdGFnaW5nID0gbV9zdGF0
ZS5zdGFnaW5nOwogCkBAIC0yOTMsNyArMjkzLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+CiAgICAgdm9pZCBjb21taXRTdGF0ZShjb25zdCBUJiBmdW5jdG9yKQogICAgIHsK
LSAgICAgICAgTG9ja2VyIGxvY2tlciB7IFBsYXRmb3JtTGF5ZXI6Om1fc3RhdGUubG9jayB9Owor
ICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihQbGF0Zm9ybUxheWVyOjptX3N0YXRlLmxvY2spOwog
ICAgICAgICBtX3N0YXRlLmNvbW1pdHRlZCA9IG1fc3RhdGUuc3RhZ2luZzsKICAgICAgICAgbV9z
dGF0ZS5zdGFnaW5nLmRlbHRhID0geyB9OwogCkBAIC0zMDMsMTQgKzMwMywxNCBAQCBwdWJsaWM6
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICB2b2lkIGFjY2Vzc1BlbmRpbmcoY29uc3Qg
VCYgZnVuY3RvcikKICAgICB7Ci0gICAgICAgIExvY2tlciBsb2NrZXIgeyBQbGF0Zm9ybUxheWVy
OjptX3N0YXRlLmxvY2sgfTsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoUGxhdGZvcm1MYXll
cjo6bV9zdGF0ZS5sb2NrKTsKICAgICAgICAgZnVuY3RvcihtX3N0YXRlLnBlbmRpbmcpOwogICAg
IH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgdm9pZCBhY2Nlc3NDb21taXR0ZWQo
Y29uc3QgVCYgZnVuY3RvcikKICAgICB7Ci0gICAgICAgIExvY2tlciBsb2NrZXIgeyBQbGF0Zm9y
bUxheWVyOjptX3N0YXRlLmxvY2sgfTsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoUGxhdGZv
cm1MYXllcjo6bV9zdGF0ZS5sb2NrKTsKICAgICAgICAgZnVuY3RvcihtX3N0YXRlLmNvbW1pdHRl
ZCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9uaWNvc2lhL05pY29zaWFTY2VuZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvbmljb3NpYS9OaWNvc2lhU2NlbmUuaAppbmRleCA2MzFjODQ3MzhkZjAxMmQxMmFkOTIyY2Q4
YzBiN2I4ODIyMThlMTBiLi42ZjI4MWRjYjNjOWE0OWYwYjQ0ZTQ4ZDdhNjM0Y2RlMzE3NjdlMjU4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05p
Y29zaWFTY2VuZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29z
aWEvTmljb3NpYVNjZW5lLmgKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEY+CiAgICAgdm9pZCBhY2Nlc3NTdGF0ZShjb25zdCBGJiBmdW5jdG9yKQogICAg
IHsKLSAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fc2NlbmUubG9jayB9OworICAgICAgICBMb2Nr
SG9sZGVyIGxvY2tlcihtX3NjZW5lLmxvY2spOwogICAgICAgICBmdW5jdG9yKG1fc2NlbmUuc3Rh
dGUpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvbmljb3NpYS9OaWNvc2lhU2NlbmVJbnRlZ3JhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFTY2VuZUludGVncmF0aW9uLmNwcAppbmRl
eCBkZTNmZDI3MWQwMmRkYzA4NzVmM2E0NzhlM2M5YTYxNWViNjg4N2I0Li4zNzQzYWI0MDRlOTU0
NjRkMzQwMmFmN2UwMzMzZGU5NzQ0MzE5OWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFTY2VuZUludGVncmF0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFTY2VuZUlu
dGVncmF0aW9uLmNwcApAQCAtNDcsMjAgKzQ3LDIwIEBAIFNjZW5lSW50ZWdyYXRpb246On5TY2Vu
ZUludGVncmF0aW9uKCkKIAogdm9pZCBTY2VuZUludGVncmF0aW9uOjpzZXRDbGllbnQoQ2xpZW50
JiBjbGllbnQpCiB7Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1fY2xpZW50LmxvY2sgfTsKKyAgICBM
b2NrSG9sZGVyIGxvY2tlcihtX2NsaWVudC5sb2NrKTsKICAgICBtX2NsaWVudC5vYmplY3QgPSAm
Y2xpZW50OwogfQogCiB2b2lkIFNjZW5lSW50ZWdyYXRpb246OmludmFsaWRhdGUoKQogewotICAg
IExvY2tlciBsb2NrZXIgeyBtX2NsaWVudC5sb2NrIH07CisgICAgTG9ja0hvbGRlciBsb2NrZXIo
bV9jbGllbnQubG9jayk7CiAgICAgbV9jbGllbnQuc2NlbmUgPSBudWxscHRyOwogICAgIG1fY2xp
ZW50Lm9iamVjdCA9IG51bGxwdHI7CiB9CiAKIHZvaWQgU2NlbmVJbnRlZ3JhdGlvbjo6cmVxdWVz
dFVwZGF0ZSgpCiB7Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1fY2xpZW50LmxvY2sgfTsKKyAgICBM
b2NrSG9sZGVyIGxvY2tlcihtX2NsaWVudC5sb2NrKTsKICAgICBpZiAobV9jbGllbnQub2JqZWN0
KQogICAgICAgICBtX2NsaWVudC5vYmplY3QtPnJlcXVlc3RVcGRhdGUoKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29z
aWFCYWNraW5nU3RvcmVUZXh0dXJlTWFwcGVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQmFja2luZ1N0b3JlVGV4dHVyZU1h
cHBlckltcGwuY3BwCmluZGV4IDg3ZjkxNWFjNGQ0Y2NmZTdhY2UxZmFjNmNlMzk1MWE0ZmM2Mzgy
NmMuLmI5YzcwZGFhMTU0MjMxY2Q1Mjg3YzFkOWI1MWNiYjlmZmIzOTNkZGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFC
YWNraW5nU3RvcmVUZXh0dXJlTWFwcGVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUJhY2tpbmdTdG9yZVRleHR1cmVN
YXBwZXJJbXBsLmNwcApAQCAtMTAxLDcgKzEwMSw3IEBAIHZvaWQgQmFja2luZ1N0b3JlVGV4dHVy
ZU1hcHBlckltcGw6OmZsdXNoVXBkYXRlKCkKIAogICAgIC8vIEluY3JlbWVudGFsbHkgc3RvcmUg
dXBkYXRlcyBhcyB0aGV5IGFyZSBiZWluZyBmbHVzaGVkIGZyb20gdGhlIGxheWVyLXNpZGUuCiAg
ICAgewotICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV91cGRhdGUubG9jayB9OworICAgICAgICBM
b2NrSG9sZGVyIGxvY2tlcihtX3VwZGF0ZS5sb2NrKTsKICAgICAgICAgbV91cGRhdGUucGVuZGlu
Zy50aWxlc1RvQ3JlYXRlLmFwcGVuZFZlY3RvcihtX2xheWVyU3RhdGUudXBkYXRlLnRpbGVzVG9D
cmVhdGUpOwogICAgICAgICBtX3VwZGF0ZS5wZW5kaW5nLnRpbGVzVG9VcGRhdGUuYXBwZW5kVmVj
dG9yKG1fbGF5ZXJTdGF0ZS51cGRhdGUudGlsZXNUb1VwZGF0ZSk7CiAgICAgICAgIG1fdXBkYXRl
LnBlbmRpbmcudGlsZXNUb1JlbW92ZS5hcHBlbmRWZWN0b3IobV9sYXllclN0YXRlLnVwZGF0ZS50
aWxlc1RvUmVtb3ZlKTsKQEAgLTExMiw3ICsxMTIsNyBAQCB2b2lkIEJhY2tpbmdTdG9yZVRleHR1
cmVNYXBwZXJJbXBsOjpmbHVzaFVwZGF0ZSgpCiAKIGF1dG8gQmFja2luZ1N0b3JlVGV4dHVyZU1h
cHBlckltcGw6OnRha2VVcGRhdGUoKSAtPiBUaWxlVXBkYXRlCiB7Ci0gICAgTG9ja2VyIGxvY2tl
ciB7IG1fdXBkYXRlLmxvY2sgfTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3VwZGF0ZS5sb2Nr
KTsKICAgICByZXR1cm4gV1RGTW92ZShtX3VwZGF0ZS5wZW5kaW5nKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3Np
YUNvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFDb250ZW50TGF5ZXJUZXh0dXJlTWFw
cGVySW1wbC5jcHAKaW5kZXggZjYyM2U2MzQyNTQ1YTg4OWQyZTA0YWRiOThlYTFjZGFkN2U5NjBl
Zi4uZjgxZTQ4Yzc1NTczNzhiNGEwYmQ4M2NlMzFiNGM4ZTdhMWQyODdlOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUNv
bnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29udGVudExheWVyVGV4dHVyZU1h
cHBlckltcGwuY3BwCkBAIC01MiwyNiArNTIsMjYgQEAgQ29udGVudExheWVyVGV4dHVyZU1hcHBl
ckltcGw6OkNvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsKENsaWVudCYgY2xpZW50KQogQ29u
dGVudExheWVyVGV4dHVyZU1hcHBlckltcGw6On5Db250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1w
bCgpCiB7CiAjaWYgQVNTRVJUX0VOQUJMRUQKLSAgICBMb2NrZXIgbG9ja2VyIHsgbV9jbGllbnQu
bG9jayB9OworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fY2xpZW50LmxvY2spOwogICAgIEFTU0VS
VCghbV9jbGllbnQuY2xpZW50KTsKICNlbmRpZgogfQogCiB2b2lkIENvbnRlbnRMYXllclRleHR1
cmVNYXBwZXJJbXBsOjppbnZhbGlkYXRlQ2xpZW50KCkKIHsKLSAgICBMb2NrZXIgbG9ja2VyIHsg
bV9jbGllbnQubG9jayB9OworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fY2xpZW50LmxvY2spOwog
ICAgIG1fY2xpZW50LmNsaWVudCA9IG51bGxwdHI7CiB9CiAKIGJvb2wgQ29udGVudExheWVyVGV4
dHVyZU1hcHBlckltcGw6OmZsdXNoVXBkYXRlKCkKIHsKLSAgICBMb2NrZXIgbG9ja2VyIHsgbV9j
bGllbnQubG9jayB9OworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fY2xpZW50LmxvY2spOwogICAg
IHJldHVybiBzdGQ6OmV4Y2hhbmdlKG1fY2xpZW50LnBlbmRpbmdVcGRhdGUsIGZhbHNlKTsKIH0K
IAogdm9pZCBDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbDo6c3dhcEJ1ZmZlcnNJZk5lZWRl
ZCgpCiB7Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1fY2xpZW50LmxvY2sgfTsKKyAgICBMb2NrSG9s
ZGVyIGxvY2tlcihtX2NsaWVudC5sb2NrKTsKICAgICBpZiAobV9jbGllbnQuY2xpZW50KQogICAg
ICAgICBtX2NsaWVudC5jbGllbnQtPnN3YXBCdWZmZXJzSWZOZWVkZWQoKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29z
aWFJbWFnZUJhY2tpbmdUZXh0dXJlTWFwcGVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhSW1hZ2VCYWNraW5nVGV4dHVyZU1h
cHBlckltcGwuY3BwCmluZGV4IDk4M2YzMWZkYTdmZTFjYzY4MDIyZDZiY2NmNzJlZDUxOTUxYTY2
MjQuLjFhOGU2OTgzNDQ4ZDYyMTJlMjllYjIwNjA2MDBkNGEzYjZjOTQ0ZTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFJ
bWFnZUJhY2tpbmdUZXh0dXJlTWFwcGVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUltYWdlQmFja2luZ1RleHR1cmVN
YXBwZXJJbXBsLmNwcApAQCAtNDYsNyArNDYsNyBAQCBJbWFnZUJhY2tpbmdUZXh0dXJlTWFwcGVy
SW1wbDo6fkltYWdlQmFja2luZ1RleHR1cmVNYXBwZXJJbXBsKCkgPSBkZWZhdWx0OwogCiB2b2lk
IEltYWdlQmFja2luZ1RleHR1cmVNYXBwZXJJbXBsOjpmbHVzaFVwZGF0ZSgpCiB7Ci0gICAgTG9j
a2VyIGxvY2tlciB7IG1fdXBkYXRlLmxvY2sgfTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3Vw
ZGF0ZS5sb2NrKTsKIAogICAgIC8vIElmIHRoZSB1cGRhdGUgaGFwcGVucyBmb3IgdGhlIHNhbWUg
aW1hZ2UgYW5kIHRoZXJlJ3Mgbm8gYnVmZmVyLCBrZWVwIHRoZSBjdXJyZW50IG9uZQogICAgIC8v
IHNvIGl0IGNhbiBiZSByZWNlaXZlZCBieSB0aGUgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLiBJ
biB0aGF0IGNhc2Ugd2Ugb25seSBuZWVkIHRvIHVwZGF0ZQpAQCAtNjEsNyArNjEsNyBAQCB2b2lk
IEltYWdlQmFja2luZ1RleHR1cmVNYXBwZXJJbXBsOjpmbHVzaFVwZGF0ZSgpCiAKIGF1dG8gSW1h
Z2VCYWNraW5nVGV4dHVyZU1hcHBlckltcGw6OnRha2VVcGRhdGUoKSAtPiBVcGRhdGUKIHsKLSAg
ICBMb2NrZXIgbG9ja2VyIHsgbV91cGRhdGUubG9jayB9OworICAgIExvY2tIb2xkZXIgbG9ja2Vy
KG1fdXBkYXRlLmxvY2spOwogICAgIHJldHVybiBXVEZNb3ZlKG1fdXBkYXRlLnVwZGF0ZSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyR0NHTFBsYXRmb3JtTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHQ0dMUGxhdGZvcm1MYXllci5jcHAKaW5k
ZXggZjhiMTI1YjUyNDhiOTA2YzUzYWE4YTUyODk4MDlkOWEyOWNmNDhmNC4uODU5YTA0NWI3MGMy
MmY2ODM2YTNlMzcxMzU2MjI3MjY2NmMxYTQyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHQ0dMUGxhdGZvcm1MYXllci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJHQ0dMUGxhdGZvcm1MYXllci5jcHAKQEAgLTg0LDcgKzg0LDcgQEAgdm9pZCBUZXh0dXJl
TWFwcGVyR0NHTFBsYXRmb3JtTGF5ZXI6OnN3YXBCdWZmZXJzSWZOZWVkZWQoKQogICAgIFRleHR1
cmVNYXBwZXJHTDo6RmxhZ3MgZmxhZ3MgPSBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZEZsaXBUZXh0
dXJlIHwgKG1fY29udGV4dC5tX2F0dHJzLmFscGhhID8gVGV4dHVyZU1hcHBlckdMOjpTaG91bGRC
bGVuZCA6IDApOwogCiAgICAgewotICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9wbGF0Zm9ybUxh
eWVyUHJveHktPmxvY2soKSB9OworICAgICAgICBMb2NrSG9sZGVyIGhvbGRlcihtX3BsYXRmb3Jt
TGF5ZXJQcm94eS0+bG9jaygpKTsKICAgICAgICAgbV9wbGF0Zm9ybUxheWVyUHJveHktPnB1c2hO
ZXh0QnVmZmVyKG1ha2VVbmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KG1f
Y29udGV4dC5tX2NvbXBvc2l0b3JUZXh0dXJlLCB0ZXh0dXJlU2l6ZSwgZmxhZ3MsIG1fY29udGV4
dC5tX2ludGVybmFsQ29sb3JGb3JtYXQpKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5k
YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5jcHAKaW5kZXggYTQ1OTc1M2YxNzNlMWI2YjUwZDkz
MmM4NGViYWY2YmMyMTU1YmViMy4uZjY3OWY2NGVmMDEwZjAxODA1NDkyYWM0ODQ4YmYxNzVkNzNl
YzkwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5j
cHAKQEAgLTE1NCw3ICsxNTQsNyBAQCBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIE1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6c3VwcG9ydHNUeXBlKGNvbnN0CiB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6bG9hZChjb25zdCBTdHJpbmcmIHVybCkKIHsK
ICAgICB7Ci0gICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2NhY2hlZE5hdHVyYWxTaXplTG9jayB9
OworICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2NhY2hlZE5hdHVyYWxTaXplTG9jayk7CiAg
ICAgICAgIG1fY2FjaGVkTmF0dXJhbFNpemUgPSBGbG9hdFNpemUoKTsKICAgICB9CiAKQEAgLTE5
MSw3ICsxOTEsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6c3Vw
cG9ydHNGdWxsc2NyZWVuKCkgY29uc3QKIAogRmxvYXRTaXplIE1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhRm91bmRhdGlvbjo6bmF0dXJhbFNpemUoKSBjb25zdAogewotICAgIExvY2tlciBsb2NrZXIg
eyBtX2NhY2hlZE5hdHVyYWxTaXplTG9jayB9OworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fY2Fj
aGVkTmF0dXJhbFNpemVMb2NrKTsKICAgICByZXR1cm4gbV9jYWNoZWROYXR1cmFsU2l6ZTsKIH0K
IApAQCAtNjQ1LDIxICs2NDUsMjEgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5k
YXRpb246OmludmFsaWRhdGVGcmFtZVZpZXcoKQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhRm91bmRhdGlvbjo6YWRkTGlzdGVuZXIoTWVkaWFQbGF5ZXJMaXN0ZW5lciogbGlzdGVuZXIp
CiB7Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXhMaXN0ZW5lcnMgfTsKKyAgICBMb2NrSG9s
ZGVyIGxvY2tlcihtX211dGV4TGlzdGVuZXJzKTsKIAogICAgIG1fbGlzdGVuZXJzLmFkZChsaXN0
ZW5lcik7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpyZW1v
dmVMaXN0ZW5lcihNZWRpYVBsYXllckxpc3RlbmVyKiBsaXN0ZW5lcikKIHsKLSAgICBMb2NrZXIg
bG9ja2VyIHsgbV9tdXRleExpc3RlbmVycyB9OworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbXV0
ZXhMaXN0ZW5lcnMpOwogCiAgICAgbV9saXN0ZW5lcnMucmVtb3ZlKGxpc3RlbmVyKTsKIH0KIAog
dm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246Om5vdGlmeURlbGV0ZWQoKQog
ewotICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4TGlzdGVuZXJzIH07CisgICAgTG9ja0hvbGRl
ciBsb2NrZXIobV9tdXRleExpc3RlbmVycyk7CiAKICAgICBmb3IgKEhhc2hTZXQ8TWVkaWFQbGF5
ZXJMaXN0ZW5lcio+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fbGlzdGVuZXJzLmJlZ2luKCk7IGl0
ICE9IG1fbGlzdGVuZXJzLmVuZCgpOyArK2l0KQogICAgICAgICAoKml0KS0+b25NZWRpYVBsYXll
ckRlbGV0ZWQoKTsKQEAgLTY2Nyw3ICs2NjcsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhRm91bmRhdGlvbjo6bm90aWZ5RGVsZXRlZCgpCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFGb3VuZGF0aW9uOjpzZXROYXR1cmFsU2l6ZShjb25zdCBGbG9hdFNpemUmIHNpemUpCiB7
Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1fY2FjaGVkTmF0dXJhbFNpemVMb2NrIH07CisgICAgTG9j
a0hvbGRlciBsb2NrZXIobV9jYWNoZWROYXR1cmFsU2l6ZUxvY2spOwogICAgIG1fY2FjaGVkTmF0
dXJhbFNpemUgPSBzaXplOwogfQogCkBAIC05MTAsNyArOTEwLDcgQEAgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkFzeW5jQ2FsbGJh
Y2s6OkdldFAKIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBNZWRpYVBsYXllclByaXZhdGVN
ZWRpYUZvdW5kYXRpb246OkFzeW5jQ2FsbGJhY2s6Okludm9rZShfX1JQQ19faW5fb3B0IElNRkFz
eW5jUmVzdWx0ICpwQXN5bmNSZXN1bHQpCiB7Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXgg
fTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX211dGV4KTsKIAogICAgIGlmICghbV9tZWRpYVBs
YXllcikKICAgICAgICAgcmV0dXJuIFNfT0s7CkBAIC05MjUsNyArOTI1LDcgQEAgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkFzeW5j
Q2FsbGJhY2s6Okludm8KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246
OkFzeW5jQ2FsbGJhY2s6Om9uTWVkaWFQbGF5ZXJEZWxldGVkKCkKIHsKLSAgICBMb2NrZXIgbG9j
a2VyIHsgbV9tdXRleCB9OworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbXV0ZXgpOwogCiAgICAg
bV9tZWRpYVBsYXllciA9IG51bGxwdHI7CiB9CkBAIC05OTksNyArOTk5LDcgQEAgVUxPTkcgTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpDdXN0b21WaWRlb1ByZXNlbnRlcjo6UmVs
ZWFzZSgpCiAKIEhSRVNVTFQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpDdXN0
b21WaWRlb1ByZXNlbnRlcjo6T25DbG9ja1N0YXJ0KE1GVElNRSBobnNTeXN0ZW1UaW1lLCBMT05H
TE9ORyBsbENsb2NrU3RhcnRPZmZzZXQpCiB7Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9
OworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CiAKICAgICAvLyBBZnRlciBzaHV0ZG93
biwgd2UgY2Fubm90IHN0YXJ0LgogICAgIEhSRVNVTFQgaHIgPSBjaGVja1NodXRkb3duKCk7CkBA
IC0xMDIyLDcgKzEwMjIsNyBAQCBIUkVTVUxUIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRh
dGlvbjo6Q3VzdG9tVmlkZW9QcmVzZW50ZXI6Ok9uQ2xvY2tTdGFydChNRgogCiBIUkVTVUxUIE1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6Q3VzdG9tVmlkZW9QcmVzZW50ZXI6Ok9u
Q2xvY2tTdG9wKE1GVElNRSBobnNTeXN0ZW1UaW1lKQogewotICAgIExvY2tlciBsb2NrZXIgeyBt
X2xvY2sgfTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOwogCiAgICAgSFJFU1VMVCBo
ciA9IGNoZWNrU2h1dGRvd24oKTsKICAgICBpZiAoRkFJTEVEKGhyKSkKQEAgLTEwMzgsNyArMTAz
OCw3IEBAIEhSRVNVTFQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpDdXN0b21W
aWRlb1ByZXNlbnRlcjo6T25DbG9ja1N0b3AoTUZUCiAKIEhSRVNVTFQgTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFGb3VuZGF0aW9uOjpDdXN0b21WaWRlb1ByZXNlbnRlcjo6T25DbG9ja1BhdXNlKE1G
VElNRSBobnNTeXN0ZW1UaW1lKQogewotICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKyAg
ICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOwogCiAgICAgLy8gQWZ0ZXIgc2h1dGRvd24sIHdl
IGNhbm5vdCBwYXVzZS4KICAgICBIUkVTVUxUIGhyID0gY2hlY2tTaHV0ZG93bigpOwpAQCAtMTA1
Miw3ICsxMDUyLDcgQEAgSFJFU1VMVCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246
OkN1c3RvbVZpZGVvUHJlc2VudGVyOjpPbkNsb2NrUGF1c2UoTUYKIAogSFJFU1VMVCBNZWRpYVBs
YXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkN1c3RvbVZpZGVvUHJlc2VudGVyOjpPbkNsb2Nr
UmVzdGFydChNRlRJTUUgaG5zU3lzdGVtVGltZSkKIHsKLSAgICBMb2NrZXIgbG9ja2VyIHsgbV9s
b2NrIH07CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKIAogICAgIEhSRVNVTFQgaHIg
PSBjaGVja1NodXRkb3duKCk7CiAgICAgaWYgKEZBSUxFRChocikpCkBAIC0xMDY5LDcgKzEwNjks
NyBAQCBIUkVTVUxUIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6Q3VzdG9tVmlk
ZW9QcmVzZW50ZXI6Ok9uQ2xvY2tSZXN0YXJ0KAogCiBIUkVTVUxUIE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhRm91bmRhdGlvbjo6Q3VzdG9tVmlkZW9QcmVzZW50ZXI6Ok9uQ2xvY2tTZXRSYXRlKE1G
VElNRSBobnNTeXN0ZW1UaW1lLCBmbG9hdCByYXRlKQogewotICAgIExvY2tlciBsb2NrZXIgeyBt
X2xvY2sgfTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOwogCiAgICAgSFJFU1VMVCBo
ciA9IGNoZWNrU2h1dGRvd24oKTsKICAgICBpZiAoRkFJTEVEKGhyKSkKQEAgLTEwODQsNyArMTA4
NCw3IEBAIEhSRVNVTFQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpDdXN0b21W
aWRlb1ByZXNlbnRlcjo6T25DbG9ja1NldFJhdGUoCiAKIEhSRVNVTFQgTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFGb3VuZGF0aW9uOjpDdXN0b21WaWRlb1ByZXNlbnRlcjo6UHJvY2Vzc01lc3NhZ2Uo
TUZWUF9NRVNTQUdFX1RZUEUgZU1lc3NhZ2UsIFVMT05HX1BUUiB1bFBhcmFtKQogewotICAgIExv
Y2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOwog
CiAgICAgSFJFU1VMVCBociA9IGNoZWNrU2h1dGRvd24oKTsKICAgICBpZiAoRkFJTEVEKGhyKSkK
QEAgLTExMjcsNyArMTEyNyw3IEBAIEhSRVNVTFQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3Vu
ZGF0aW9uOjpDdXN0b21WaWRlb1ByZXNlbnRlcjo6UHJvY2Vzc01lc3NhZ2UoCiAKIEhSRVNVTFQg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpDdXN0b21WaWRlb1ByZXNlbnRlcjo6
R2V0Q3VycmVudE1lZGlhVHlwZShfT3V0cHRyXyAgSU1GVmlkZW9NZWRpYVR5cGUgKipwcE1lZGlh
VHlwZSkKIHsKLSAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CisgICAgTG9ja0hvbGRlciBs
b2NrZXIobV9sb2NrKTsKIAogICAgIGlmICghcHBNZWRpYVR5cGUpCiAgICAgICAgIHJldHVybiBF
X1BPSU5URVI7CkBAIC0xMTU4LDcgKzExNTgsNyBAQCBIUkVTVUxUIE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhRm91bmRhdGlvbjo6Q3VzdG9tVmlkZW9QcmVzZW50ZXI6OkluaXRTZXJ2aWNlUG9pbgog
CiAgICAgSFJFU1VMVCBociA9IFNfT0s7CiAKLSAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07
CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKIAogICAgIGlmIChpc0FjdGl2ZSgpKQog
ICAgICAgICByZXR1cm4gTUZfRV9JTlZBTElEUkVRVUVTVDsKQEAgLTExOTQsNyArMTE5NCw3IEBA
IEhSRVNVTFQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpDdXN0b21WaWRlb1By
ZXNlbnRlcjo6SW5pdFNlcnZpY2VQb2luCiAKIEhSRVNVTFQgTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFGb3VuZGF0aW9uOjpDdXN0b21WaWRlb1ByZXNlbnRlcjo6UmVsZWFzZVNlcnZpY2VQb2ludGVy
cygpCiB7Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OworICAgIExvY2tIb2xkZXIgbG9j
a2VyKG1fbG9jayk7CiAKICAgICBtX3JlbmRlclN0YXRlID0gUmVuZGVyU3RhdGVTaHV0ZG93bjsK
IApAQCAtMTI1MSw3ICsxMjUxLDcgQEAgSFJFU1VMVCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZv
dW5kYXRpb246OkN1c3RvbVZpZGVvUHJlc2VudGVyOjpTaHV0ZG93bk9iamVjdCgKIAogSFJFU1VM
VCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkN1c3RvbVZpZGVvUHJlc2VudGVy
OjpTZXRWaWRlb1dpbmRvdyhIV05EIGh3bmRWaWRlbykKIHsKLSAgICBMb2NrZXIgbG9ja2VyIHsg
bV9sb2NrIH07CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKIAogICAgIGlmICghSXNX
aW5kb3coaHduZFZpZGVvKSkKICAgICAgICAgcmV0dXJuIEVfSU5WQUxJREFSRzsKQEAgLTEyNzEs
NyArMTI3MSw3IEBAIEhSRVNVTFQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpD
dXN0b21WaWRlb1ByZXNlbnRlcjo6U2V0VmlkZW9XaW5kb3coCiAKIEhSRVNVTFQgTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpDdXN0b21WaWRlb1ByZXNlbnRlcjo6R2V0VmlkZW9X
aW5kb3coSFdORCogcGh3bmRWaWRlbykKIHsKLSAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07
CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKIAogICAgIGlmICghcGh3bmRWaWRlbykK
ICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKQEAgLTEyOTcsNyArMTI5Nyw3IEBAIHN0YXRpYyBI
UkVTVUxUIHNldE1peGVyU291cmNlUmVjdChJTUZUcmFuc2Zvcm0qIG1peGVyLCBjb25zdCBNRlZp
ZGVvTm9ybWFsaXplZFJlCiAKIEhSRVNVTFQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0
aW9uOjpDdXN0b21WaWRlb1ByZXNlbnRlcjo6U2V0VmlkZW9Qb3NpdGlvbihjb25zdCBNRlZpZGVv
Tm9ybWFsaXplZFJlY3QqIHBucmNTb3VyY2UsIGNvbnN0IExQUkVDVCBwcmNEZXN0KQogewotICAg
IExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2sp
OwogCiAgICAgLy8gRmlyc3QsIGNoZWNrIHRoYXQgdGhlIHBhcmFtZXRlcnMgYXJlIHZhbGlkLgog
CkBAIC0xMzY2LDcgKzEzNjYsNyBAQCBIUkVTVUxUIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91
bmRhdGlvbjo6Q3VzdG9tVmlkZW9QcmVzZW50ZXI6OlNldFZpZGVvUG9zaXRpbwogCiBIUkVTVUxU
IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6Q3VzdG9tVmlkZW9QcmVzZW50ZXI6
OkdldFZpZGVvUG9zaXRpb24oTUZWaWRlb05vcm1hbGl6ZWRSZWN0KiBwbnJjU291cmNlLCBMUFJF
Q1QgcHJjRGVzdCkKIHsKLSAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CisgICAgTG9ja0hv
bGRlciBsb2NrZXIobV9sb2NrKTsKIAogICAgIGlmICghcG5yY1NvdXJjZSB8fCAhcHJjRGVzdCkK
ICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKQEAgLTEzNzksNyArMTM3OSw3IEBAIEhSRVNVTFQg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpDdXN0b21WaWRlb1ByZXNlbnRlcjo6
R2V0VmlkZW9Qb3NpdGlvCiAKIEhSRVNVTFQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0
aW9uOjpDdXN0b21WaWRlb1ByZXNlbnRlcjo6UmVwYWludFZpZGVvKCkKIHsKLSAgICBMb2NrZXIg
bG9ja2VyIHsgbV9sb2NrIH07CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKIAogICAg
IEhSRVNVTFQgaHIgPSBjaGVja1NodXRkb3duKCk7CiAgICAgaWYgKEZBSUxFRChocikpCkBAIC0y
MTk1LDcgKzIxOTUsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6
Q3VzdG9tVmlkZW9QcmVzZW50ZXI6Om5vdGlmeUV2ZW50KGxvbmcgRQogCiBIUkVTVUxUIE1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6VmlkZW9TYW1wbGVQb29sOjpnZXRTYW1wbGUo
Q09NUHRyPElNRlNhbXBsZT4mIHNhbXBsZSkKIHsKLSAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2Nr
IH07CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKIAogICAgIGlmICghbV9pbml0aWFs
aXplZCkKICAgICAgICAgcmV0dXJuIE1GX0VfTk9UX0lOSVRJQUxJWkVEOwpAQCAtMjIxNSw3ICsy
MjE1LDcgQEAgSFJFU1VMVCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OlZpZGVv
U2FtcGxlUG9vbDo6cmV0dXJuU2FtcGxlKElNRlNhbXAKICAgICBpZiAoIXNhbXBsZSkKICAgICAg
ICAgcmV0dXJuIEVfUE9JTlRFUjsKIAotICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKyAg
ICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOwogCiAgICAgaWYgKCFtX2luaXRpYWxpemVkKQog
ICAgICAgICByZXR1cm4gTUZfRV9OT1RfSU5JVElBTElaRUQ7CkBAIC0yMjI3LDcgKzIyMjcsNyBA
QCBIUkVTVUxUIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6VmlkZW9TYW1wbGVQ
b29sOjpyZXR1cm5TYW1wbGUoSU1GU2FtcAogCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
Rm91bmRhdGlvbjo6VmlkZW9TYW1wbGVQb29sOjphcmVTYW1wbGVzUGVuZGluZygpCiB7Ci0gICAg
TG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7
CiAKICAgICBpZiAoIW1faW5pdGlhbGl6ZWQpCiAgICAgICAgIHJldHVybiBGQUxTRTsKQEAgLTIy
MzcsNyArMjIzNyw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpW
aWRlb1NhbXBsZVBvb2w6OmFyZVNhbXBsZXNQZW5kaW5nKCkKIAogSFJFU1VMVCBNZWRpYVBsYXll
clByaXZhdGVNZWRpYUZvdW5kYXRpb246OlZpZGVvU2FtcGxlUG9vbDo6aW5pdGlhbGl6ZShWaWRl
b1NhbXBsZUxpc3QmIHNhbXBsZXMpCiB7Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9Owor
ICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CiAKICAgICBpZiAobV9pbml0aWFsaXplZCkK
ICAgICAgICAgcmV0dXJuIE1GX0VfSU5WQUxJRFJFUVVFU1Q7CkBAIC0yMjU0LDcgKzIyNTQsNyBA
QCBIUkVTVUxUIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6VmlkZW9TYW1wbGVQ
b29sOjppbml0aWFsaXplKFZpZGVvU2FtcAogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
Rm91bmRhdGlvbjo6VmlkZW9TYW1wbGVQb29sOjpjbGVhcigpCiB7Ci0gICAgTG9ja2VyIGxvY2tl
ciB7IG1fbG9jayB9OworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CiAKICAgICBtX3Zp
ZGVvU2FtcGxlUXVldWUuY2xlYXIoKTsKICAgICBtX2luaXRpYWxpemVkID0gZmFsc2U7CkBAIC0y
MzMzLDcgKzIzMzMsNyBAQCBIUkVTVUxUIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlv
bjo6VmlkZW9TY2hlZHVsZXI6OnN0b3BTY2hlZHVsZXIoKQogICAgIC8vIFdhaXQgZm9yIHRoZSBz
Y2hlZHVsZXIgdGhyZWFkIHRvIGZpbmlzaC4KICAgICA6OldhaXRGb3JTaW5nbGVPYmplY3QobV9z
Y2hlZHVsZXJUaHJlYWQuZ2V0KCksIElORklOSVRFKTsKIAotICAgIExvY2tlciBsb2NrZXIgeyBt
X2xvY2sgfTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOwogCiAgICAgbV9zY2hlZHVs
ZWRTYW1wbGVzLmNsZWFyKCk7CiAgICAgbV9zY2hlZHVsZXJUaHJlYWQuY2xlYXIoKTsKQEAgLTIz
ODQsNyArMjM4NCw3IEBAIEhSRVNVTFQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9u
OjpWaWRlb1NjaGVkdWxlcjo6c2NoZWR1bGVTYW1wbGUoSU1GU2FtCiAgICAgICAgIG1fcHJlc2Vu
dGVyLT5wcmVzZW50U2FtcGxlKHNhbXBsZSwgMCk7CiAgICAgZWxzZSB7CiAgICAgICAgIC8vIFN1
Ym1pdCB0aGUgc2FtcGxlIGZvciBzY2hlZHVsaW5nLgotICAgICAgICBMb2NrZXIgbG9ja2VyIHsg
bV9sb2NrIH07CisgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgICAgIG1f
c2NoZWR1bGVkU2FtcGxlcy5hcHBlbmQoc2FtcGxlKTsKIAogICAgICAgICA6OlBvc3RUaHJlYWRN
ZXNzYWdlKG1fdGhyZWFkSUQsIEV2ZW50U2NoZWR1bGUsIDAsIDApOwpAQCAtMjQwNCw3ICsyNDA0
LDcgQEAgSFJFU1VMVCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OlZpZGVvU2No
ZWR1bGVyOjpwcm9jZXNzU2FtcGxlc0luUXVldWUKICAgICAgICAgQ09NUHRyPElNRlNhbXBsZT4g
c2FtcGxlOwogCiAgICAgICAgIGlmICh0cnVlKSB7Ci0gICAgICAgICAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9sb2NrIH07CisgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOwogICAg
ICAgICAgICAgaWYgKG1fc2NoZWR1bGVkU2FtcGxlcy5pc0VtcHR5KCkpCiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICBzYW1wbGUgPSBtX3NjaGVkdWxlZFNhbXBsZXMudGFrZUZp
cnN0KCk7CkBAIC0yNDkwLDcgKzI0OTAsNyBAQCBIUkVTVUxUIE1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhRm91bmRhdGlvbjo6VmlkZW9TY2hlZHVsZXI6OnByb2Nlc3NTYW1wbGUoSU1GU2FtcAogICAg
ICAgICBociA9IG1fcHJlc2VudGVyLT5wcmVzZW50U2FtcGxlKHNhbXBsZSwgcHJlc2VudGF0aW9u
VGltZSk7CiAgICAgZWxzZSB7CiAgICAgICAgIC8vIFJldHVybiB0aGUgc2FtcGxlIHRvIHRoZSBx
dWV1ZSwgc2luY2UgaXQgaXMgbm90IHJlYWR5LgotICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9s
b2NrIH07CisgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgICAgIG1fc2No
ZWR1bGVkU2FtcGxlcy5wcmVwZW5kKHNhbXBsZSk7CiAgICAgfQogCkBAIC0yNTQwLDcgKzI1NDAs
NyBAQCBEV09SRCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OlZpZGVvU2NoZWR1
bGVyOjpzY2hlZHVsZXJUaHJlYWRQcm9jUHJpdgogCiAgICAgICAgICAgICBjYXNlIEV2ZW50Rmx1
c2g6CiAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9sb2NrIH07CisgICAgICAgICAgICAgICAgICAgIExvY2tIb2xkZXIgbG9jayhtX2xvY2sp
OwogICAgICAgICAgICAgICAgICAgICBtX3NjaGVkdWxlZFNhbXBsZXMuY2xlYXIoKTsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgd2FpdCA9IElORklOSVRFOwpAQCAtMjY0OCw3
ICsyNjQ4LDcgQEAgSFJFU1VMVCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkRp
cmVjdDNEUHJlc2VudGVyOjpzZXRWaWRlb1dpbmRvdyhIV04KICAgICBBU1NFUlQoaHduZCAhPSBt
X2h3bmQpOwogCiAgICAgewotICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CisgICAg
ICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgICAgIG1faHduZCA9IGh3bmQ7CiAg
ICAgfQogCkBAIC0yNjYwLDcgKzI2NjAsNyBAQCBIUkVTVUxUIE1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhRm91bmRhdGlvbjo6RGlyZWN0M0RQcmVzZW50ZXI6OnNldERlc3RpbmF0aW9uUmVjdAogICAg
IGlmIChFcXVhbFJlY3QoJnJjRGVzdCwgJm1fZGVzdFJlY3QpKQogICAgICAgICByZXR1cm4gU19P
SzsKIAotICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKyAgICBMb2NrSG9sZGVyIGxvY2tl
cihtX2xvY2spOwogCiAgICAgbV9kZXN0UmVjdCA9IHJjRGVzdDsKIApAQCAtMjY4Miw3ICsyNjgy
LDcgQEAgSFJFU1VMVCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkRpcmVjdDNE
UHJlc2VudGVyOjpjcmVhdGVWaWRlb1NhbXBsZXMKICAgICAgICAgcmV0dXJuIE1GX0VfVU5FWFBF
Q1RFRDsKIAogCi0gICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OworICAgIExvY2tIb2xkZXIg
bG9ja2VyKG1fbG9jayk7CiAKICAgICByZWxlYXNlUmVzb3VyY2VzKCk7CiAKQEAgLTI3MjMsNyAr
MjcyMyw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpEaXJlY3Qz
RFByZXNlbnRlcjo6cmVsZWFzZVJlc291cmNlcygpCiAKIEhSRVNVTFQgTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFGb3VuZGF0aW9uOjpEaXJlY3QzRFByZXNlbnRlcjo6Y2hlY2tEZXZpY2VTdGF0ZShE
ZXZpY2VTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OworICAg
IExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CiAKICAgICBIUkVTVUxUIGhyID0gbV9kZXZpY2Ut
PkNoZWNrRGV2aWNlU3RhdGUobV9od25kKTsKIApAQCAtMjc2NCw3ICsyNzY0LDcgQEAgSFJFU1VM
VCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkRpcmVjdDNEUHJlc2VudGVyOjpw
cmVzZW50U2FtcGxlKElNRlMKIHsKICAgICBIUkVTVUxUIGhyID0gU19PSzsKIAotICAgIExvY2tl
ciBsb2NrZXIgeyBtX2xvY2sgfTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOwogCiAg
ICAgQ09NUHRyPElEaXJlY3QzRFN1cmZhY2U5PiBzdXJmYWNlOwogCkBAIC0yODIyLDcgKzI4MjIs
NyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6RGlyZWN0M0RQcmVz
ZW50ZXI6OnBhaW50Q3VycmVudEZyYW1lKFdlYgogICAgIGlmICghd2lkdGggfHwgIWhlaWdodCkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OworICAgIExv
Y2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CiAKICAgICBpZiAoIW1fbWVtU3VyZmFjZSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtMjg4Nyw3ICsyODg3LDcgQEAgSFJFU1VMVCBNZWRpYVBsYXllclByaXZh
dGVNZWRpYUZvdW5kYXRpb246OkRpcmVjdDNEUHJlc2VudGVyOjpjcmVhdGVEM0REZXZpY2UoKQog
ICAgIEhSRVNVTFQgaHIgPSBTX09LOwogICAgIFVJTlQgYWRhcHRlcklEID0gRDNEQURBUFRFUl9E
RUZBVUxUOwogCi0gICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OworICAgIExvY2tIb2xkZXIg
bG9ja2VyKG1fbG9jayk7CiAKICAgICBpZiAoIW1fZGlyZWN0M0Q5IHx8ICFtX2RldmljZU1hbmFn
ZXIpCiAgICAgICAgIHJldHVybiBNRl9FX05PVF9JTklUSUFMSVpFRDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1h
Z2VEZWNvZGVyLmNwcAppbmRleCBmMmNlYjAwMGFkNDA3YzRlYjYyMzU3Y2NhMGMwMjJhNWI3MWE1
OTA1Li4yMWMxYzI3ODY5ZTM3ZWI5ZTI4ODliYWM0YzhhNzU2YjBmZDI3YjUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVj
b2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2Nh
bGFibGVJbWFnZURlY29kZXIuY3BwCkBAIC0xNzAsNyArMTcwLDcgQEAgUmVmUHRyPFNjYWxhYmxl
SW1hZ2VEZWNvZGVyPiBTY2FsYWJsZUltYWdlRGVjb2Rlcjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlciYg
ZGF0YSwgQWwKIAogYm9vbCBTY2FsYWJsZUltYWdlRGVjb2Rlcjo6ZnJhbWVJc0NvbXBsZXRlQXRJ
bmRleChzaXplX3QgaW5kZXgpIGNvbnN0CiB7Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXgg
fTsKKyAgICBMb2NrSG9sZGVyIGxvY2tIb2xkZXIobV9tdXRleCk7CiAgICAgaWYgKGluZGV4ID49
IG1fZnJhbWVCdWZmZXJDYWNoZS5zaXplKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAt
MTgwLDcgKzE4MCw3IEBAIGJvb2wgU2NhbGFibGVJbWFnZURlY29kZXI6OmZyYW1lSXNDb21wbGV0
ZUF0SW5kZXgoc2l6ZV90IGluZGV4KSBjb25zdAogCiBib29sIFNjYWxhYmxlSW1hZ2VEZWNvZGVy
OjpmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0CiB7Ci0gICAgTG9ja2Vy
IGxvY2tlciB7IG1fbXV0ZXggfTsKKyAgICBMb2NrSG9sZGVyIGxvY2tIb2xkZXIobV9tdXRleCk7
CiAgICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNoZS5zaXplKCkgPD0gaW5kZXgpCiAgICAgICAgIHJl
dHVybiB0cnVlOwogCkBAIC0xOTIsNyArMTkyLDcgQEAgYm9vbCBTY2FsYWJsZUltYWdlRGVjb2Rl
cjo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90IGluZGV4KSBjb25zdAogCiB1bnNpZ25lZCBT
Y2FsYWJsZUltYWdlRGVjb2Rlcjo6ZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJz
YW1wbGluZ0xldmVsKSBjb25zdAogewotICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07Cisg
ICAgTG9ja0hvbGRlciBsb2NrSG9sZGVyKG1fbXV0ZXgpOwogICAgIGlmIChtX2ZyYW1lQnVmZmVy
Q2FjaGUuc2l6ZSgpIDw9IGluZGV4KQogICAgICAgICByZXR1cm4gMDsKICAgICAvLyBGSVhNRTog
VXNlIHRoZSBkaW1lbnNpb24gb2YgdGhlIHJlcXVlc3RlZCBmcmFtZS4KQEAgLTIwMSw3ICsyMDEs
NyBAQCB1bnNpZ25lZCBTY2FsYWJsZUltYWdlRGVjb2Rlcjo6ZnJhbWVCeXRlc0F0SW5kZXgoc2l6
ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsKQogCiBTZWNvbmRzIFNjYWxhYmxlSW1hZ2VEZWNv
ZGVyOjpmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0CiB7Ci0gICAgTG9j
a2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKKyAgICBMb2NrSG9sZGVyIGxvY2tIb2xkZXIobV9tdXRl
eCk7CiAgICAgaWYgKGluZGV4ID49IG1fZnJhbWVCdWZmZXJDYWNoZS5zaXplKCkpCiAgICAgICAg
IHJldHVybiAwX3M7CiAKQEAgLTIyMSw3ICsyMjEsNyBAQCBTZWNvbmRzIFNjYWxhYmxlSW1hZ2VE
ZWNvZGVyOjpmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0CiAKIFBsYXRm
b3JtSW1hZ2VQdHIgU2NhbGFibGVJbWFnZURlY29kZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4
KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJikK
IHsKLSAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OworICAgIExvY2tIb2xkZXIgbG9ja0hv
bGRlcihtX211dGV4KTsKICAgICAvLyBaZXJvLWhlaWdodCBpbWFnZXMgY2FuIGNhdXNlIHByb2Js
ZW1zIGZvciBzb21lIHBvcnRzLiBJZiB3ZSBoYXZlIGFuIGVtcHR5IGltYWdlIGRpbWVuc2lvbiwg
anVzdCBiYWlsLgogICAgIGlmIChzaXplKCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCmluZGV4IGZjZjBhNjExNWRkODZjMTQ3NTli
MmIyMWE3YzcxYzc4ZTlmNGNmNGEuLmE2MTU3ZWYzYTg3NGZjY2YzMjAwZTlhZjc0MDZlZTQ4Nzk4
OGNhZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaApAQCAtNzIsNyArNzIsNyBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFS
ZWNlaXZlZCkgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4
IH07CisgICAgICAgIExvY2tIb2xkZXIgbG9ja0hvbGRlcihtX211dGV4KTsKICAgICAgICAgaWYg
KG1fZW5jb2RlZERhdGFTdGF0dXMgPT0gRW5jb2RlZERhdGFTdGF0dXM6OkVycm9yKQogICAgICAg
ICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
TGVnYWN5VGlsZUNhY2hlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRp
bGVDYWNoZS5tbQppbmRleCA5MmRlMWRjNWY2MDU2ZDYxYTliMzJmMjYyOTdkYjdkYWVhZjQzODU2
Li5mMTExN2ZmMjQ3MGNmYzI3ZjQ1OTEzYTc0ODI2MjVlMDllNzNlZWNmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW0KQEAgLTEzMSw3ICsxMzEs
NyBAQCB2b2lkIExlZ2FjeVRpbGVDYWNoZTo6c2V0VGlsZXNPcGFxdWUoYm9vbCBvcGFxdWUpCiAg
ICAgaWYgKG1fdGlsZXNPcGFxdWUgPT0gb3BhcXVlKQogICAgICAgICByZXR1cm47CiAKLSAgICBM
b2NrZXIgbG9ja2VyIHsgbV90aWxlTXV0ZXggfTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3Rp
bGVNdXRleCk7CiAKICAgICBtX3RpbGVzT3BhcXVlID0gb3BhcXVlOwogICAgIG1fem9vbWVkT3V0
VGlsZUdyaWQtPnVwZGF0ZVRpbGVPcGFjaXR5KCk7CkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBM
ZWdhY3lUaWxlQ2FjaGU6OmRvTGF5b3V0VGlsZXMoKQogICAgIGlmIChpc1RpbGVDcmVhdGlvblN1
c3BlbmRlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBMb2NrZXIgbG9ja2VyIHsgbV90aWxl
TXV0ZXggfTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3RpbGVNdXRleCk7CiAgICAgTGVnYWN5
VGlsZUdyaWQqIGFjdGl2ZUdyaWQgPSBhY3RpdmVUaWxlR3JpZCgpOwogICAgIC8vIEV2ZW4gdGhv
dWdoIHdlIGFyZW4ndCBhY3R1YWxseSBjcmVhdGluZyB0aWxlcyBpbiB0aGUgaW5hY3RpdmUgZ3Jp
ZCwgd2UKICAgICAvLyBzdGlsbCBuZWVkIHRvIGRyb3AgaW52YWxpZCB0aWxlcyBpbiByZXNwb25z
ZSB0byBhIGxheW91dC4KQEAgLTE4NCw3ICsxODQsNyBAQCB2b2lkIExlZ2FjeVRpbGVDYWNoZTo6
c2V0Q3VycmVudFNjYWxlKGZsb2F0IHNjYWxlKQogICAgIGlmICgha2VlcHNab29tZWRPdXRUaWxl
cygpICYmICFpc1RpbGVJbnZhbGlkYXRpb25TdXNwZW5kZWQoKSkgewogICAgICAgICAvLyBUaWxl
IGludmFsaWRhdGlvbiBpcyBub3JtYWxseSBzdXNwZW5kZWQgZHVyaW5nIHpvb21pbmcgYnkgVUlL
aXQgYnV0IHNvbWUgYXBwbGljYXRpb25zCiAgICAgICAgIC8vIHVzaW5nIGN1c3RvbSBzY3JvbGx2
aWV3cyBtYXkgem9vbSB3aXRob3V0IHRyaWdnZXJpbmcgdGhlIGNhbGxiYWNrcy4gSW52YWxpZGF0
ZSB0aGUgdGlsZXMgZXhwbGljaXRseS4KLSAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fdGlsZU11
dGV4IH07CisgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fdGlsZU11dGV4KTsKICAgICAgICAg
YWN0aXZlVGlsZUdyaWQoKS0+ZHJvcEFsbFRpbGVzKCk7CiAgICAgICAgIGFjdGl2ZVRpbGVHcmlk
KCktPmNyZWF0ZVRpbGVzKENvdmVyVmlzaWJsZU9ubHkpOwogICAgIH0KQEAgLTIwOSw3ICsyMDks
NyBAQCB2b2lkIExlZ2FjeVRpbGVDYWNoZTo6Y29tbWl0U2NhbGVDaGFuZ2UoKQogICAgIEFTU0VS
VChtX3BlbmRpbmdab29tZWRPdXRTY2FsZSB8fCBtX3BlbmRpbmdTY2FsZSk7CiAgICAgQVNTRVJU
KG1fdGlsaW5nTW9kZSAhPSBEaXNhYmxlZCk7CiAgICAgCi0gICAgTG9ja2VyIGxvY2tlciB7IG1f
dGlsZU11dGV4IH07CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV90aWxlTXV0ZXgpOwogCiAgICAg
aWYgKG1fcGVuZGluZ1pvb21lZE91dFNjYWxlKSB7CiAgICAgICAgIG1fem9vbWVkT3V0VGlsZUdy
aWQtPnNldFNjYWxlKG1fcGVuZGluZ1pvb21lZE91dFNjYWxlKTsKQEAgLTI5OCw3ICsyOTgsNyBA
QCB2b2lkIExlZ2FjeVRpbGVDYWNoZTo6bGF5b3V0VGlsZXNOb3coKQogICAgIGlmIChtX3RpbGlu
Z01vZGUgPT0gWm9vbWluZykKICAgICAgICAgbV90aWxpbmdNb2RlID0gTWluaW1hbDsKIAotICAg
IExvY2tlciBsb2NrZXIgeyBtX3RpbGVNdXRleCB9OworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1f
dGlsZU11dGV4KTsKICAgICBMZWdhY3lUaWxlR3JpZCogYWN0aXZlR3JpZCA9IGFjdGl2ZVRpbGVH
cmlkKCk7CiAgICAgaWYgKGFjdGl2ZUdyaWQtPmNoZWNrRG9TaW5nbGVUaWxlTGF5b3V0KCkpIHsK
ICAgICAgICAgbV90aWxpbmdNb2RlID0gc2F2ZWRUaWxpbmdNb2RlOwpAQCAtMzExLDE0ICszMTEs
MTQgQEAgdm9pZCBMZWdhY3lUaWxlQ2FjaGU6OmxheW91dFRpbGVzTm93KCkKIHZvaWQgTGVnYWN5
VGlsZUNhY2hlOjpsYXlvdXRUaWxlc05vd0ZvclJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKIHsK
ICAgICBBU1NFUlQoV2ViVGhyZWFkSXNMb2NrZWRPckRpc2FibGVkKCkpOwotICAgIExvY2tlciBs
b2NrZXIgeyBtX3RpbGVNdXRleCB9OworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fdGlsZU11dGV4
KTsKIAogICAgIGFjdGl2ZVRpbGVHcmlkKCktPmFkZFRpbGVzQ292ZXJpbmdSZWN0KHJlY3QpOwog
fQogCiB2b2lkIExlZ2FjeVRpbGVDYWNoZTo6cmVtb3ZlQWxsTm9uVmlzaWJsZVRpbGVzKCkKIHsK
LSAgICBMb2NrZXIgbG9ja2VyIHsgbV90aWxlTXV0ZXggfTsKKyAgICBMb2NrSG9sZGVyIGxvY2tl
cihtX3RpbGVNdXRleCk7CiAgICAgcmVtb3ZlQWxsTm9uVmlzaWJsZVRpbGVzSW50ZXJuYWwoKTsK
IH0KIApAQCAtMzQwLDcgKzM0MCw3IEBAIHZvaWQgTGVnYWN5VGlsZUNhY2hlOjpyZW1vdmVBbGxO
b25WaXNpYmxlVGlsZXNJbnRlcm5hbCgpCiAKIHZvaWQgTGVnYWN5VGlsZUNhY2hlOjpyZW1vdmVB
bGxUaWxlcygpCiB7Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1fdGlsZU11dGV4IH07CisgICAgTG9j
a0hvbGRlciBsb2NrZXIobV90aWxlTXV0ZXgpOwogICAgIG1fem9vbWVkT3V0VGlsZUdyaWQtPmRy
b3BBbGxUaWxlcygpOwogICAgIGlmIChtX3pvb21lZEluVGlsZUdyaWQpCiAgICAgICAgIG1fem9v
bWVkSW5UaWxlR3JpZC0+ZHJvcEFsbFRpbGVzKCk7CkBAIC0zNDgsNyArMzQ4LDcgQEAgdm9pZCBM
ZWdhY3lUaWxlQ2FjaGU6OnJlbW92ZUFsbFRpbGVzKCkKIAogdm9pZCBMZWdhY3lUaWxlQ2FjaGU6
OnJlbW92ZUZvcmVncm91bmRUaWxlcygpCiB7Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1fdGlsZU11
dGV4IH07CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV90aWxlTXV0ZXgpOwogICAgIGlmICgha2Vl
cHNab29tZWRPdXRUaWxlcygpKQogICAgICAgICBtX3pvb21lZE91dFRpbGVHcmlkLT5kcm9wQWxs
VGlsZXMoKTsKICAgICBpZiAobV96b29tZWRJblRpbGVHcmlkKQpAQCAtMzU3LDEzICszNTcsMTMg
QEAgdm9pZCBMZWdhY3lUaWxlQ2FjaGU6OnJlbW92ZUZvcmVncm91bmRUaWxlcygpCiAKIHZvaWQg
TGVnYWN5VGlsZUNhY2hlOjpzZXRDb250ZW50UmVwbGFjZW1lbnRJbWFnZShSZXRhaW5QdHI8Q0dJ
bWFnZVJlZj4gY29udGVudFJlcGxhY2VtZW50SW1hZ2UpCiB7Ci0gICAgTG9ja2VyIGxvY2tlciB7
IG1fY29udGVudFJlcGxhY2VtZW50SW1hZ2VNdXRleCB9OworICAgIExvY2tIb2xkZXIgbG9ja2Vy
KG1fY29udGVudFJlcGxhY2VtZW50SW1hZ2VNdXRleCk7CiAgICAgbV9jb250ZW50UmVwbGFjZW1l
bnRJbWFnZSA9IGNvbnRlbnRSZXBsYWNlbWVudEltYWdlOwogfQogCiBSZXRhaW5QdHI8Q0dJbWFn
ZVJlZj4gTGVnYWN5VGlsZUNhY2hlOjpjb250ZW50UmVwbGFjZW1lbnRJbWFnZSgpIGNvbnN0CiB7
Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1fY29udGVudFJlcGxhY2VtZW50SW1hZ2VNdXRleCB9Owor
ICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fY29udGVudFJlcGxhY2VtZW50SW1hZ2VNdXRleCk7CiAg
ICAgcmV0dXJuIG1fY29udGVudFJlcGxhY2VtZW50SW1hZ2U7CiB9CiAKQEAgLTQxMCw3ICs0MTAs
NyBAQCB2b2lkIExlZ2FjeVRpbGVDYWNoZTo6dGlsZUNyZWF0aW9uVGltZXJGaXJlZCgpCiB7CiAg
ICAgaWYgKGlzVGlsZUNyZWF0aW9uU3VzcGVuZGVkKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBM
b2NrZXIgbG9ja2VyIHsgbV90aWxlTXV0ZXggfTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3Rp
bGVNdXRleCk7CiAgICAgY3JlYXRlVGlsZXNJbkFjdGl2ZUdyaWQoQ292ZXJTcGVjdWxhdGl2ZSk7
CiB9CiAKQEAgLTYxMSw3ICs2MTEsNyBAQCB2b2lkIExlZ2FjeVRpbGVDYWNoZTo6c2NoZWR1bGVS
ZW5kZXJpbmdVcGRhdGVGb3JQZW5kaW5nUmVwYWludCgpCiAKIHZvaWQgTGVnYWN5VGlsZUNhY2hl
OjpzZXROZWVkc0Rpc3BsYXlJblJlY3QoY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KQogewotICAg
IExvY2tlciBsb2NrZXIgeyBtX3NhdmVkRGlzcGxheVJlY3RNdXRleCB9OworICAgIExvY2tIb2xk
ZXIgbG9ja2VyKG1fc2F2ZWREaXNwbGF5UmVjdE11dGV4KTsKICAgICBib29sIGFkZGVkRmlyc3RS
ZWN0ID0gbV9zYXZlZERpc3BsYXlSZWN0cy5pc0VtcHR5KCk7CiAgICAgbV9zYXZlZERpc3BsYXlS
ZWN0cy5hcHBlbmQoZGlydHlSZWN0KTsKICAgICBpZiAoIWFkZGVkRmlyc3RSZWN0KQpAQCAtNjgz
LDcgKzY4Myw3IEBAIHZvaWQgTGVnYWN5VGlsZUNhY2hlOjp1cGRhdGVUaWxpbmdNb2RlKCkKICAg
ICAgICAgaWYgKG1fdGlsaW5nTW9kZSA9PSBEaXNhYmxlZCkKICAgICAgICAgICAgIHJldHVybjsK
IAotICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV90aWxlTXV0ZXggfTsKKyAgICAgICAgTG9ja0hv
bGRlciBsb2NrZXIobV90aWxlTXV0ZXgpOwogICAgICAgICBjcmVhdGVUaWxlc0luQWN0aXZlR3Jp
ZChDb3ZlclZpc2libGVPbmx5KTsKIAogICAgICAgICBpZiAoIW1fc2F2ZWREaXNwbGF5UmVjdHMu
aXNFbXB0eSgpKQpAQCAtNzAxLDcgKzcwMSw3IEBAIHZvaWQgTGVnYWN5VGlsZUNhY2hlOjpzZXRU
aWxpbmdNb2RlKFRpbGluZ01vZGUgdGlsaW5nTW9kZSkKICAgICBpZiAoKG1fcGVuZGluZ1pvb21l
ZE91dFNjYWxlIHx8IG1fcGVuZGluZ1NjYWxlKSAmJiBtX3RpbGluZ01vZGUgIT0gRGlzYWJsZWQp
CiAgICAgICAgIGNvbW1pdFNjYWxlQ2hhbmdlKCk7CiAgICAgZWxzZSBpZiAod2FzWm9vbWluZykg
ewotICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV90aWxlTXV0ZXggfTsKKyAgICAgICAgTG9ja0hv
bGRlciBsb2NrZXIobV90aWxlTXV0ZXgpOwogICAgICAgICBicmluZ0FjdGl2ZVRpbGVHcmlkVG9G
cm9udCgpOwogICAgIH0KIApAQCAtNzQ0LDcgKzc0NCw3IEBAIHZvaWQgTGVnYWN5VGlsZUNhY2hl
Ojpkb1BlbmRpbmdSZXBhaW50cygpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoaXNUaWxlSW52
YWxpZGF0aW9uU3VzcGVuZGVkKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBMb2NrZXIgbG9ja2Vy
IHsgbV90aWxlTXV0ZXggfTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3RpbGVNdXRleCk7CiAg
ICAgZmx1c2hTYXZlZERpc3BsYXlSZWN0cygpOwogfQogCkBAIC03NTUsNyArNzU1LDcgQEAgdm9p
ZCBMZWdhY3lUaWxlQ2FjaGU6OmZsdXNoU2F2ZWREaXNwbGF5UmVjdHMoKQogCiAgICAgVmVjdG9y
PEludFJlY3Q+IHJlY3RzOwogICAgIHsKLSAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fc2F2ZWRE
aXNwbGF5UmVjdE11dGV4IH07CisgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2F2ZWREaXNw
bGF5UmVjdE11dGV4KTsKICAgICAgICAgbV9zYXZlZERpc3BsYXlSZWN0cy5zd2FwKHJlY3RzKTsK
ICAgICB9CiAgICAgc2l6ZV90IHNpemUgPSByZWN0cy5zaXplKCk7CkBAIC03NzgsNyArNzc4LDcg
QEAgdm9pZCBMZWdhY3lUaWxlQ2FjaGU6OnByZXBhcmVUb0RyYXcoKQogICAgIFtbbV93aW5kb3cg
Y29udGVudFZpZXddIHZpZXdXaWxsRHJhd107CiAKICAgICBpZiAoIW1fc2F2ZWREaXNwbGF5UmVj
dHMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3RpbGVNdXRleCB9Owor
ICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3RpbGVNdXRleCk7CiAgICAgICAgIGZsdXNoU2F2
ZWREaXNwbGF5UmVjdHMoKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUxheWVyUG9vbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9MZWdhY3lUaWxlTGF5ZXJQb29sLm1tCmluZGV4IDJmNDUyNTZmNDgwMzkwMmJjODFk
MmU5OWM3Y2Q4NGE3MjhkM2EyMTYuLmFjOGM2NDhkNmIzZjE2MzQ2MTQxZGU2YTRkZjE5Njk5YjY1
ZWZkZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxl
TGF5ZXJQb29sLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxl
TGF5ZXJQb29sLm1tCkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgTGVnYWN5VGlsZUxheWVyUG9vbDo6
YWRkTGF5ZXIoY29uc3QgUmV0YWluUHRyPExlZ2FjeVRpbGVMYXllcj4mIGxheWVyKQogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgTG9ja2VyIGxvY2tlciB7IG1fbGF5ZXJQb29sTXV0ZXgg
fTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xheWVyUG9vbE11dGV4KTsKICAgICBsaXN0T2ZM
YXllcnNXaXRoU2l6ZShsYXllclNpemUpLnByZXBlbmQobGF5ZXIpOwogICAgIG1fdG90YWxCeXRl
cyArPSBieXRlc0JhY2tpbmdMYXllcldpdGhQaXhlbFNpemUobGF5ZXJTaXplKTsKIApAQCAtOTQs
NyArOTQsNyBAQCBSZXRhaW5QdHI8TGVnYWN5VGlsZUxheWVyPiBMZWdhY3lUaWxlTGF5ZXJQb29s
Ojp0YWtlTGF5ZXJXaXRoU2l6ZShjb25zdCBJbnRTaXplJgogewogICAgIGlmICghY2FuUmV1c2VM
YXllcldpdGhTaXplKHNpemUpKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIExvY2tlciBsb2Nr
ZXIgeyBtX2xheWVyUG9vbE11dGV4IH07CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sYXllclBv
b2xNdXRleCk7CiAgICAgTGF5ZXJMaXN0JiByZXVzZUxpc3QgPSBsaXN0T2ZMYXllcnNXaXRoU2l6
ZShzaXplLCBNYXJrQXNVc2VkKTsKICAgICBpZiAocmV1c2VMaXN0LmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIG5pbDsKQEAgLTEwNCw3ICsxMDQsNyBAQCBSZXRhaW5QdHI8TGVnYWN5VGlsZUxh
eWVyPiBMZWdhY3lUaWxlTGF5ZXJQb29sOjp0YWtlTGF5ZXJXaXRoU2l6ZShjb25zdCBJbnRTaXpl
JgogCiB2b2lkIExlZ2FjeVRpbGVMYXllclBvb2w6OnNldENhcGFjaXR5KHVuc2lnbmVkIGNhcGFj
aXR5KQogewotICAgIExvY2tlciByZXVzZUxvY2tlciB7IG1fbGF5ZXJQb29sTXV0ZXggfTsKKyAg
ICBMb2NrSG9sZGVyIHJldXNlTG9ja2VyKG1fbGF5ZXJQb29sTXV0ZXgpOwogICAgIGlmIChjYXBh
Y2l0eSA8IG1fY2FwYWNpdHkpCiAgICAgICAgIHNjaGVkdWxlUHJ1bmUoKTsKICAgICBtX2NhcGFj
aXR5ID0gY2FwYWNpdHk7CkBAIC0xMzQsNyArMTM0LDcgQEAgdm9pZCBMZWdhY3lUaWxlTGF5ZXJQ
b29sOjpzY2hlZHVsZVBydW5lKCkKIAogdm9pZCBMZWdhY3lUaWxlTGF5ZXJQb29sOjpwcnVuZSgp
CiB7Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1fbGF5ZXJQb29sTXV0ZXggfTsKKyAgICBMb2NrSG9s
ZGVyIGxvY2tlcihtX2xheWVyUG9vbE11dGV4KTsKICAgICBBU1NFUlQobV9uZWVkc1BydW5lKTsK
ICAgICBtX25lZWRzUHJ1bmUgPSBmYWxzZTsKICAgICB1bnNpZ25lZCBzaHJpbmtUbyA9IGRlY2F5
ZWRDYXBhY2l0eSgpOwpAQCAtMTYxLDcgKzE2MSw3IEBAIHZvaWQgTGVnYWN5VGlsZUxheWVyUG9v
bDo6cHJ1bmUoKQogCiB2b2lkIExlZ2FjeVRpbGVMYXllclBvb2w6OmRyYWluKCkKIHsKLSAgICBM
b2NrZXIgcmV1c2VMb2NrZXIgeyBtX2xheWVyUG9vbE11dGV4IH07CisgICAgTG9ja0hvbGRlciBy
ZXVzZUxvY2tlcihtX2xheWVyUG9vbE11dGV4KTsKICAgICBtX3JldXNlTGlzdHMuY2xlYXIoKTsK
ICAgICBtX3NpemVzSW5QcnVuZU9yZGVyLmNsZWFyKCk7CiAgICAgbV90b3RhbEJ5dGVzID0gMDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV0FLV2luZG93Lm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XQUtXaW5kb3cubW0KaW5kZXggNmU1
ZDgzMzMwMzEwODQzYjNmMmQwOTE0ZmY5NDczMmI1ODRlOGUyNC4uNmNhZTA4YmEzYjk2M2QyNTk3
MWRmYTNjNDNhYWRkMTExYzE1NTVkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL3dhay9XQUtXaW5kb3cubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L3dhay9XQUtXaW5kb3cubW0KQEAgLTM4NCwxNCArMzg0LDE0IEBAIC0gKHZvaWQpc2VuZE1vdXNl
TW92ZUV2ZW50OihXZWJFdmVudCAqKWV2ZW50IGNvbnRlbnRDaGFuZ2U6KFdLQ29udGVudENoYW5n
ZSAqKWFDCiAKIC0gKHZvaWQpc2V0RXhwb3NlZFNjcm9sbFZpZXdSZWN0OihDR1JlY3QpZXhwb3Nl
ZFNjcm9sbFZpZXdSZWN0CiB7Ci0gICAgTG9ja2VyIGxvY2tlciB7IF9leHBvc2VkU2Nyb2xsVmll
d1JlY3RMb2NrIH07CisgICAgTG9ja0hvbGRlciBsb2NrZXIoJl9leHBvc2VkU2Nyb2xsVmlld1Jl
Y3RMb2NrKTsKICAgICBfZXhwb3NlZFNjcm9sbFZpZXdSZWN0ID0gZXhwb3NlZFNjcm9sbFZpZXdS
ZWN0OwogfQogCiAtIChDR1JlY3QpZXhwb3NlZFNjcm9sbFZpZXdSZWN0CiB7CiAgICAgewotICAg
ICAgICBMb2NrZXIgbG9ja2VyIHsgX2V4cG9zZWRTY3JvbGxWaWV3UmVjdExvY2sgfTsKKyAgICAg
ICAgTG9ja0hvbGRlciBsb2NrZXIoJl9leHBvc2VkU2Nyb2xsVmlld1JlY3RMb2NrKTsKICAgICAg
ICAgaWYgKCFDR1JlY3RJc051bGwoX2V4cG9zZWRTY3JvbGxWaWV3UmVjdCkpCiAgICAgICAgICAg
ICByZXR1cm4gX2V4cG9zZWRTY3JvbGxWaWV3UmVjdDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0KaW5kZXggMDAyNjY0ZTNlMTY2
OWZmMzI4ZGI5Yjk1MjkxYTg4YjUwNDE3OWMzOC4uMTlmZmRlZWI1MWQ2Zjg3MWVkN2E2Y2U5YzU1
Y2Q5NDRkNmIyNDExZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dh
ay9XZWJDb3JlVGhyZWFkLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsv
V2ViQ29yZVRocmVhZC5tbQpAQCAtNjY4LDcgKzY2OCw3IEBAIHN0YXRpYyB2b2lkKiBSdW5XZWJU
aHJlYWQodm9pZCopCiAgICAgcGVyQ2FsbG91dEF1dG9yZWxlYXNlcG9vbEVuYWJsZWQgPSBfQ0ZS
dW5Mb29wU2V0UGVyQ2FsbG91dEF1dG9yZWxlYXNlcG9vbEVuYWJsZWQoWUVTKTsKIAogICAgIHsK
LSAgICAgICAgTG9ja2VyIGxvY2tlciB7IHN0YXJ0dXBMb2NrIH07CisgICAgICAgIExvY2tIb2xk
ZXIgbG9ja2VyKHN0YXJ0dXBMb2NrKTsKICAgICAgICAgc3RhcnR1cENvbmRpdGlvbi5ub3RpZnlP
bmUoKTsKICAgICB9CiAKQEAgLTcyMiw3ICs3MjIsNyBAQCBzdGF0aWMgdm9pZCBTdGFydFdlYlRo
cmVhZCgpCiAKICAgICAvLyBXYWl0IGZvciB0aGUgd2ViIHRocmVhZCB0byBzdGFydHVwIGNvbXBs
ZXRlbHkgYmVmb3JlIHdlIGNvbnRpbnVlLgogICAgIHsKLSAgICAgICAgTG9ja2VyIGxvY2tlciB7
IHN0YXJ0dXBMb2NrIH07CisgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKHN0YXJ0dXBMb2NrKTsK
IAogICAgICAgICAvLyBQcm9wYWdhdGUgdGhlIG1haW5UaHJlYWQncyBmZW52IHRvIHdvcmtlcnMg
JiB0aGUgd2ViIHRocmVhZC4KICAgICAgICAgRmxvYXRpbmdQb2ludEVudmlyb25tZW50OjpzaW5n
bGV0b24oKS5zYXZlTWFpblRocmVhZEVudmlyb25tZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvUmVhbHRpbWVPdXRnb2luZ0F1
ZGlvU291cmNlTGliV2ViUlRDLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL2dzdHJlYW1lci9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VMaWJXZWJSVEMuY3BwCmlu
ZGV4IDNiOTA5NTg1OGY1ZmVhNGY4ZWQ2ZDRkMmZhMjBhMmViNWIxYTgwMTcuLjVjMjYyYjQyNmZj
NWY0Mzg5ZWE0NmZiNmU5MThhNTcyYWFiN2U0MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3Vy
Y2VMaWJXZWJSVEMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L2dzdHJlYW1lci9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VMaWJXZWJSVEMuY3BwCkBAIC04
MSw3ICs4MSw3IEBAIHZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlTGliV2ViUlRDOjph
dWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgTWVkaWFUaW1lCiAgICAgfQogCiAgICAgewotICAg
ICAgICBMb2NrZXIgbG9ja2VyIHsgbV9hZGFwdGVyTXV0ZXggfTsKKyAgICAgICAgTG9ja0hvbGRl
ciBsb2NrZXIobV9hZGFwdGVyTXV0ZXgpOwogICAgICAgICBjb25zdCBhdXRvJiBzYW1wbGUgPSBk
YXRhLmdldFNhbXBsZSgpOwogICAgICAgICBhdXRvKiBidWZmZXIgPSBnc3Rfc2FtcGxlX2dldF9i
dWZmZXIoc2FtcGxlLmdldCgpKTsKICAgICAgICAgZ3N0X2FkYXB0ZXJfcHVzaChtX2FkYXB0ZXIu
Z2V0KCksIGdzdF9idWZmZXJfcmVmKGJ1ZmZlcikpOwpAQCAtMTAxLDcgKzEwMSw3IEBAIHZvaWQg
UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlTGliV2ViUlRDOjpwdWxsQXVkaW9EYXRhKCkKICAg
ICBzaXplX3Qgb3V0Q2h1bmtTYW1wbGVDb3VudCA9IExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpjaHVu
a1NhbXBsZUNvdW50OwogICAgIHNpemVfdCBvdXRCdWZmZXJTaXplID0gb3V0Q2h1bmtTYW1wbGVD
b3VudCAqIG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24uYnBmOwogCi0gICAgTG9ja2VyIGxvY2tl
ciB7IG1fYWRhcHRlck11dGV4IH07CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9hZGFwdGVyTXV0
ZXgpOwogICAgIHNpemVfdCBpbkNodW5rU2FtcGxlQ291bnQgPSBnc3RfYXVkaW9fY29udmVydGVy
X2dldF9pbl9mcmFtZXMobV9zYW1wbGVDb252ZXJ0ZXIuZ2V0KCksIG91dENodW5rU2FtcGxlQ291
bnQpOwogICAgIHNpemVfdCBpbkJ1ZmZlclNpemUgPSBpbkNodW5rU2FtcGxlQ291bnQgKiBtX2lu
cHV0U3RyZWFtRGVzY3JpcHRpb24uYnBmOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcAppbmRleCBhNmYy
YjczYzE3ZGZjZjg2Mjg0YzhjNWRlNTYyMDZhOWE1MDg3NGNkLi5jY2Q2YWM1NjIyMzFmZjhjMjk4
ZmQ2YzQ1MzQxNjA5OWUxZDE4ZDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAKQEAgLTE4OSw3ICsx
ODksNyBAQCBzdGF0aWMgYm9vbCBvcGVuTmV4dFN0cmVhbShGb3JtU3RyZWFtRmllbGRzKiBmb3Jt
KQogewogICAgIC8vIENGUmVhZFN0cmVhbU9wZW4oKSBjYW4gY2F1c2UgdGhpcyBmdW5jdGlvbiB0
byBiZSByZS1lbnRlcmVkIGZyb20gYW5vdGhlciB0aHJlYWQgYmVmb3JlIGl0IHJldHVybnMuCiAg
ICAgLy8gT25lIGV4YW1wbGUgd2hlbiB0aGlzIGNhbiBvY2N1ciBpcyB3aGVuIHRoZSBzdHJlYW0g
YmVpbmcgb3BlbmVkIGhhcyBubyBkYXRhLiBTZWUgPHJkYXI6Ly9wcm9ibGVtLzIzNTUwMjY5Pi4K
LSAgICBMb2NrZXIgbG9ja2VyIHsgZm9ybS0+c3RyZWFtSXNCZWluZ09wZW5lZE9yQ2xvc2VkTG9j
ayB9OworICAgIExvY2tIb2xkZXIgbG9ja2VyKGZvcm0tPnN0cmVhbUlzQmVpbmdPcGVuZWRPckNs
b3NlZExvY2spOwogCiAgICAgLy8gU2tpcCBvdmVyIGFueSBzdHJlYW1zIHdlIGNhbid0IG9wZW4u
CiAgICAgaWYgKCFhZHZhbmNlQ3VycmVudFN0cmVhbShmb3JtKSkKQEAgLTIyOSw3ICsyMjksNyBA
QCBzdGF0aWMgdm9pZCBmb3JtRmluYWxpemUoQ0ZSZWFkU3RyZWFtUmVmIHN0cmVhbSwgdm9pZCog
Y29udGV4dCkKIAogICAgIGNhbGxPbk1haW5UaHJlYWQoW2Zvcm1dIHsKICAgICAgICAgewotICAg
ICAgICAgICAgTG9ja2VyIGxvY2tlciB7IGZvcm0tPnN0cmVhbUlzQmVpbmdPcGVuZWRPckNsb3Nl
ZExvY2sgfTsKKyAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKGZvcm0tPnN0cmVhbUlzQmVp
bmdPcGVuZWRPckNsb3NlZExvY2spOwogICAgICAgICAgICAgY2xvc2VDdXJyZW50U3RyZWFtKGZv
cm0pOwogICAgICAgICB9CiAgICAgICAgIGRlbGV0ZSBmb3JtOwpAQCAtMjk5LDcgKzI5OSw3IEBA
IHN0YXRpYyBCb29sZWFuIGZvcm1DYW5SZWFkKENGUmVhZFN0cmVhbVJlZiBzdHJlYW0sIHZvaWQq
IGNvbnRleHQpCiBzdGF0aWMgdm9pZCBmb3JtQ2xvc2UoQ0ZSZWFkU3RyZWFtUmVmLCB2b2lkKiBj
b250ZXh0KQogewogICAgIEZvcm1TdHJlYW1GaWVsZHMqIGZvcm0gPSBzdGF0aWNfY2FzdDxGb3Jt
U3RyZWFtRmllbGRzKj4oY29udGV4dCk7Ci0gICAgTG9ja2VyIGxvY2tlciB7IGZvcm0tPnN0cmVh
bUlzQmVpbmdPcGVuZWRPckNsb3NlZExvY2sgfTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihmb3Jt
LT5zdHJlYW1Jc0JlaW5nT3BlbmVkT3JDbG9zZWRMb2NrKTsKIAogICAgIGNsb3NlQ3VycmVudFN0
cmVhbShmb3JtKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybFJlcXVlc3QuY3BwCmluZGV4IDE3NzI2MGNmNDEyZjJkYjc5YTlkMGQ1YWQ4YzE5
NmZkYWI3MTJkOGIuLmQ5YTMxOTRhYWRiNmNmNzllMTA4Mzg4MTcyODJiN2FjMjRiZmQxZWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVz
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1
ZXN0LmNwcApAQCAtNjQzLDcgKzY0Myw3IEBAIHZvaWQgQ3VybFJlcXVlc3Q6OmNvbXBsZXRlRGlk
UmVjZWl2ZVJlc3BvbnNlKCkKIHZvaWQgQ3VybFJlcXVlc3Q6OnNldFJlcXVlc3RQYXVzZWQoYm9v
bCBwYXVzZWQpCiB7CiAgICAgewotICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9wYXVzZVN0YXRl
TXV0ZXggfTsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1fcGF1c2VTdGF0ZU11dGV4KTsKIAog
ICAgICAgICBhdXRvIHNhdmVkU3RhdGUgPSBzaG91bGRCZVBhdXNlZCgpOwogICAgICAgICBtX3No
b3VsZFN1c3BlbmQgPSBtX2lzUGF1c2VkT2ZSZXF1ZXN0ID0gcGF1c2VkOwpAQCAtNjU3LDcgKzY1
Nyw3IEBAIHZvaWQgQ3VybFJlcXVlc3Q6OnNldFJlcXVlc3RQYXVzZWQoYm9vbCBwYXVzZWQpCiB2
b2lkIEN1cmxSZXF1ZXN0OjpzZXRDYWxsYmFja1BhdXNlZChib29sIHBhdXNlZCkKIHsKICAgICB7
Ci0gICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3BhdXNlU3RhdGVNdXRleCB9OworICAgICAgICBM
b2NrSG9sZGVyIGxvY2sobV9wYXVzZVN0YXRlTXV0ZXgpOwogCiAgICAgICAgIGF1dG8gc2F2ZWRT
dGF0ZSA9IHNob3VsZEJlUGF1c2VkKCk7CiAgICAgICAgIG1faXNQYXVzZWRPZkNhbGxiYWNrID0g
cGF1c2VkOwpAQCAtNjkyLDcgKzY5Miw3IEBAIHZvaWQgQ3VybFJlcXVlc3Q6OnBhdXNlZFN0YXR1
c0NoYW5nZWQoKQogCiAgICAgICAgIGJvb2wgbmVlZENhbmNlbCB7IGZhbHNlIH07CiAgICAgICAg
IHsKLSAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3BhdXNlU3RhdGVNdXRleCB9OworICAg
ICAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1fcGF1c2VTdGF0ZU11dGV4KTsKICAgICAgICAgICAg
IGJvb2wgcGF1c2VkID0gc2hvdWxkQmVQYXVzZWQoKTsKIAogICAgICAgICAgICAgaWYgKGlzSGFu
ZGxlUGF1c2VkKCkgPT0gcGF1c2VkKQpAQCAtNzQyLDIwICs3NDIsMjAgQEAgTmV0d29ya0xvYWRN
ZXRyaWNzIEN1cmxSZXF1ZXN0OjpuZXR3b3JrTG9hZE1ldHJpY3MoKQogCiB2b2lkIEN1cmxSZXF1
ZXN0OjplbmFibGVEb3dubG9hZFRvRmlsZSgpCiB7Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1fZG93
bmxvYWRNdXRleCB9OworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fZG93bmxvYWRNdXRleCk7CiAg
ICAgbV9pc0VuYWJsZWREb3dubG9hZFRvRmlsZSA9IHRydWU7CiB9CiAKIGNvbnN0IFN0cmluZyYg
Q3VybFJlcXVlc3Q6OmdldERvd25sb2FkZWRGaWxlUGF0aCgpCiB7Ci0gICAgTG9ja2VyIGxvY2tl
ciB7IG1fZG93bmxvYWRNdXRleCB9OworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fZG93bmxvYWRN
dXRleCk7CiAgICAgcmV0dXJuIG1fZG93bmxvYWRGaWxlUGF0aDsKIH0KIAogdm9pZCBDdXJsUmVx
dWVzdDo6d3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQoY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIpCiB7CiAgICAgewotICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9kb3dubG9hZE11
dGV4IH07CisgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fZG93bmxvYWRNdXRleCk7CiAKICAg
ICAgICAgaWYgKCFtX2lzRW5hYmxlZERvd25sb2FkVG9GaWxlKQogICAgICAgICAgICAgcmV0dXJu
OwpAQCAtNzcwLDcgKzc3MCw3IEBAIHZvaWQgQ3VybFJlcXVlc3Q6OndyaXRlRGF0YVRvRG93bmxv
YWRGaWxlSWZFbmFibGVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogCiB2b2lkIEN1cmxS
ZXF1ZXN0OjpjbG9zZURvd25sb2FkRmlsZSgpCiB7Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1fZG93
bmxvYWRNdXRleCB9OworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fZG93bmxvYWRNdXRleCk7CiAK
ICAgICBpZiAobV9kb3dubG9hZEZpbGVIYW5kbGUgPT0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRm
b3JtRmlsZUhhbmRsZSkKICAgICAgICAgcmV0dXJuOwpAQCAtNzgxLDcgKzc4MSw3IEBAIHZvaWQg
Q3VybFJlcXVlc3Q6OmNsb3NlRG93bmxvYWRGaWxlKCkKIAogdm9pZCBDdXJsUmVxdWVzdDo6Y2xl
YW51cERvd25sb2FkRmlsZSgpCiB7Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1fZG93bmxvYWRNdXRl
eCB9OworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fZG93bmxvYWRNdXRleCk7CiAKICAgICBpZiAo
IW1fZG93bmxvYWRGaWxlUGF0aC5pc0VtcHR5KCkpIHsKICAgICAgICAgRmlsZVN5c3RlbTo6ZGVs
ZXRlRmlsZShtX2Rvd25sb2FkRmlsZVBhdGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTU0xIYW5kbGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTU0xIYW5kbGUuY3BwCmluZGV4IGFlODZkMmIxMmRi
MmVkZTU0NTJkOGIyYmE1YWIyMjdjYmZkOTA1MzIuLjJjZjljODc3MWRkZDhmNTJiMmUwMDI5YzRm
OTNhN2RhMTFlM2ZkMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsU1NMSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybFNTTEhhbmRsZS5jcHAKQEAgLTYzLDI4ICs2MywyOCBAQCB2b2lkIEN1
cmxTU0xIYW5kbGU6OmNsZWFyQ0FDZXJ0SW5mbygpCiAKIHZvaWQgQ3VybFNTTEhhbmRsZTo6YWxs
b3dBbnlIVFRQU0NlcnRpZmljYXRlc0Zvckhvc3QoY29uc3QgU3RyaW5nJiBob3N0KQogewotICAg
IExvY2tlciBsb2NrZXIgeyBtX2FsbG93ZWRIb3N0c0xvY2sgfTsKKyAgICBMb2NrSG9sZGVyIG11
dGV4KG1fYWxsb3dlZEhvc3RzTG9jayk7CiAKICAgICBtX2FsbG93ZWRIb3N0cy5hZGRWb2lkKGhv
c3QpOwogfQogCiBib29sIEN1cmxTU0xIYW5kbGU6OmNhbklnbm9yZUFueUhUVFBTQ2VydGlmaWNh
dGVzRm9ySG9zdChjb25zdCBTdHJpbmcmIGhvc3QpIGNvbnN0CiB7Ci0gICAgTG9ja2VyIGxvY2tl
ciB7IG1fYWxsb3dlZEhvc3RzTG9jayB9OworICAgIExvY2tIb2xkZXIgbXV0ZXgobV9hbGxvd2Vk
SG9zdHNMb2NrKTsKIAogICAgIHJldHVybiBtX2FsbG93ZWRIb3N0cy5jb250YWlucyhob3N0KTsK
IH0KIAogdm9pZCBDdXJsU1NMSGFuZGxlOjpzZXRDbGllbnRDZXJ0aWZpY2F0ZUluZm8oY29uc3Qg
U3RyaW5nJiBob3N0TmFtZSwgY29uc3QgU3RyaW5nJiBjZXJ0aWZpY2F0ZSwgY29uc3QgU3RyaW5n
JiBrZXkpCiB7Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1fYWxsb3dlZENsaWVudEhvc3RzTG9jayB9
OworICAgIExvY2tIb2xkZXIgbXV0ZXgobV9hbGxvd2VkQ2xpZW50SG9zdHNMb2NrKTsKIAogICAg
IG1fYWxsb3dlZENsaWVudEhvc3RzLnNldChob3N0TmFtZSwgQ2xpZW50Q2VydGlmaWNhdGUgeyBj
ZXJ0aWZpY2F0ZSwga2V5IH0pOwogfQogCiBPcHRpb25hbDxDdXJsU1NMSGFuZGxlOjpDbGllbnRD
ZXJ0aWZpY2F0ZT4gQ3VybFNTTEhhbmRsZTo6Z2V0U1NMQ2xpZW50Q2VydGlmaWNhdGUoY29uc3Qg
U3RyaW5nJiBob3N0TmFtZSkgY29uc3QKIHsKLSAgICBMb2NrZXIgbG9ja2VyIHsgbV9hbGxvd2Vk
Q2xpZW50SG9zdHNMb2NrIH07CisgICAgTG9ja0hvbGRlciBtdXRleChtX2FsbG93ZWRDbGllbnRI
b3N0c0xvY2spOwogCiAgICAgYXV0byBpdCA9IG1fYWxsb3dlZENsaWVudEhvc3RzLmZpbmQoaG9z
dE5hbWUpOwogICAgIGlmIChpdCA9PSBtX2FsbG93ZWRDbGllbnRIb3N0cy5lbmQoKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwCmluZGV4IDE1Nzdh
YTYxYjJmNTY5YjJkMTY3MmNiMjcxNzNjMmE4NmRlNGUwMWEuLmVhNDUzMTEwYTE4Mzk3MzdkOTc1
ZmIzNWUxZTgyMDljOGVhMjAyOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3Fs
L1NRTGl0ZURhdGFiYXNlLmNwcApAQCAtMjI5LDcgKzIyOSw3IEBAIHZvaWQgU1FMaXRlRGF0YWJh
c2U6OmNsb3NlKCkKICAgICAgICAgLy8gQVNTRVJUKG1fb3BlbmluZ1RocmVhZCA9PSAmVGhyZWFk
OjpjdXJyZW50KCkpOwogICAgICAgICBzcWxpdGUzKiBkYiA9IG1fZGI7CiAgICAgICAgIHsKLSAg
ICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2RhdGFiYXNlQ2xvc2luZ011dGV4IH07CisgICAg
ICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2RhdGFiYXNlQ2xvc2luZ011dGV4KTsKICAgICAg
ICAgICAgIG1fZGIgPSAwOwogICAgICAgICB9CiAgICAgICAgIGlmIChtX3VzZVdBTCkgewpAQCAt
MjczLDcgKzI3Myw3IEBAIGludDY0X3QgU1FMaXRlRGF0YWJhc2U6Om1heGltdW1TaXplKCkKICAg
ICBpbnQ2NF90IG1heFBhZ2VDb3VudCA9IDA7CiAKICAgICB7Ci0gICAgICAgIExvY2tlciBsb2Nr
ZXIgeyBtX2F1dGhvcml6ZXJMb2NrIH07CisgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fYXV0
aG9yaXplckxvY2spOwogICAgICAgICBlbmFibGVBdXRob3JpemVyKGZhbHNlKTsKICAgICAgICAg
YXV0byBzdGF0ZW1lbnQgPSBwcmVwYXJlU3RhdGVtZW50KCJQUkFHTUEgbWF4X3BhZ2VfY291bnQi
X3MpOwogICAgICAgICBtYXhQYWdlQ291bnQgPSBzdGF0ZW1lbnQgPyBzdGF0ZW1lbnQtPmNvbHVt
bkludDY0KDApIDogMDsKQEAgLTI5Myw3ICsyOTMsNyBAQCB2b2lkIFNRTGl0ZURhdGFiYXNlOjpz
ZXRNYXhpbXVtU2l6ZShpbnQ2NF90IHNpemUpCiAgICAgQVNTRVJUKGN1cnJlbnRQYWdlU2l6ZSB8
fCAhbV9kYik7CiAgICAgaW50NjRfdCBuZXdNYXhQYWdlQ291bnQgPSBjdXJyZW50UGFnZVNpemUg
PyBzaXplIC8gY3VycmVudFBhZ2VTaXplIDogMDsKICAgICAKLSAgICBMb2NrZXIgbG9ja2VyIHsg
bV9hdXRob3JpemVyTG9jayB9OworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fYXV0aG9yaXplckxv
Y2spOwogICAgIGVuYWJsZUF1dGhvcml6ZXIoZmFsc2UpOwogCiAgICAgYXV0byBzdGF0ZW1lbnQg
PSBwcmVwYXJlU3RhdGVtZW50U2xvdyhtYWtlU3RyaW5nKCJQUkFHTUEgbWF4X3BhZ2VfY291bnQg
PSAiLCBuZXdNYXhQYWdlQ291bnQpKTsKQEAgLTMwOSw3ICszMDksNyBAQCBpbnQgU1FMaXRlRGF0
YWJhc2U6OnBhZ2VTaXplKCkKICAgICAvLyBTaW5jZSB0aGUgcGFnZSBzaXplIG9mIGEgZGF0YWJh
c2UgaXMgbG9ja2VkIGluIGF0IGNyZWF0aW9uIGFuZCB0aGVyZWZvcmUgY2Fubm90IGJlIGR5bmFt
aWMsIAogICAgIC8vIHdlIGNhbiBjYWNoZSB0aGUgdmFsdWUgZm9yIGZ1dHVyZSB1c2UKICAgICBp
ZiAobV9wYWdlU2l6ZSA9PSAtMSkgewotICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9hdXRob3Jp
emVyTG9jayB9OworICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2F1dGhvcml6ZXJMb2NrKTsK
ICAgICAgICAgZW5hYmxlQXV0aG9yaXplcihmYWxzZSk7CiAgICAgICAgIAogICAgICAgICBhdXRv
IHN0YXRlbWVudCA9IHByZXBhcmVTdGF0ZW1lbnQoIlBSQUdNQSBwYWdlX3NpemUiX3MpOwpAQCAt
MzI2LDcgKzMyNiw3IEBAIGludDY0X3QgU1FMaXRlRGF0YWJhc2U6OmZyZWVTcGFjZVNpemUoKQog
ICAgIGludDY0X3QgZnJlZWxpc3RDb3VudCA9IDA7CiAKICAgICB7Ci0gICAgICAgIExvY2tlciBs
b2NrZXIgeyBtX2F1dGhvcml6ZXJMb2NrIH07CisgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1f
YXV0aG9yaXplckxvY2spOwogICAgICAgICBlbmFibGVBdXRob3JpemVyKGZhbHNlKTsKICAgICAg
ICAgLy8gTm90ZTogZnJlZWxpc3RfY291bnQgd2FzIGFkZGVkIGluIFNRTGl0ZSAzLjQuMS4KICAg
ICAgICAgYXV0byBzdGF0ZW1lbnQgPSBwcmVwYXJlU3RhdGVtZW50KCJQUkFHTUEgZnJlZWxpc3Rf
Y291bnQiX3MpOwpAQCAtMzQyLDcgKzM0Miw3IEBAIGludDY0X3QgU1FMaXRlRGF0YWJhc2U6OnRv
dGFsU2l6ZSgpCiAgICAgaW50NjRfdCBwYWdlQ291bnQgPSAwOwogCiAgICAgewotICAgICAgICBM
b2NrZXIgbG9ja2VyIHsgbV9hdXRob3JpemVyTG9jayB9OworICAgICAgICBMb2NrSG9sZGVyIGxv
Y2tlcihtX2F1dGhvcml6ZXJMb2NrKTsKICAgICAgICAgZW5hYmxlQXV0aG9yaXplcihmYWxzZSk7
CiAgICAgICAgIGF1dG8gc3RhdGVtZW50ID0gcHJlcGFyZVN0YXRlbWVudCgiUFJBR01BIHBhZ2Vf
Y291bnQiX3MpOwogICAgICAgICBwYWdlQ291bnQgPSBzdGF0ZW1lbnQgPyBzdGF0ZW1lbnQtPmNv
bHVtbkludDY0KDApIDogMDsKQEAgLTQyMyw3ICs0MjMsNyBAQCBpbnQgU1FMaXRlRGF0YWJhc2U6
OnJ1blZhY3V1bUNvbW1hbmQoKQogCiBpbnQgU1FMaXRlRGF0YWJhc2U6OnJ1bkluY3JlbWVudGFs
VmFjdXVtQ29tbWFuZCgpCiB7Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1fYXV0aG9yaXplckxvY2sg
fTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2F1dGhvcml6ZXJMb2NrKTsKICAgICBlbmFibGVB
dXRob3JpemVyKGZhbHNlKTsKIAogICAgIGlmICghZXhlY3V0ZUNvbW1hbmQoIlBSQUdNQSBpbmNy
ZW1lbnRhbF92YWN1dW0iX3MpKQpAQCAtNDM1LDcgKzQzNSw3IEBAIGludCBTUUxpdGVEYXRhYmFz
ZTo6cnVuSW5jcmVtZW50YWxWYWN1dW1Db21tYW5kKCkKIAogdm9pZCBTUUxpdGVEYXRhYmFzZTo6
aW50ZXJydXB0KCkKIHsKLSAgICBMb2NrZXIgbG9ja2VyIHsgbV9kYXRhYmFzZUNsb3NpbmdNdXRl
eCB9OworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fZGF0YWJhc2VDbG9zaW5nTXV0ZXgpOwogICAg
IGlmIChtX2RiKQogICAgICAgICBzcWxpdGUzX2ludGVycnVwdChtX2RiKTsKIH0KQEAgLTU1Nyw3
ICs1NTcsNyBAQCB2b2lkIFNRTGl0ZURhdGFiYXNlOjpzZXRBdXRob3JpemVyKERhdGFiYXNlQXV0
aG9yaXplciYgYXV0aG9yaXplcikKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIExvY2tl
ciBsb2NrZXIgeyBtX2F1dGhvcml6ZXJMb2NrIH07CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9h
dXRob3JpemVyTG9jayk7CiAKICAgICBtX2F1dGhvcml6ZXIgPSAmYXV0aG9yaXplcjsKICAgICAK
QEAgLTY0MSw3ICs2NDEsNyBAQCB2b2lkIFNRTGl0ZURhdGFiYXNlOjpyZWxlYXNlTWVtb3J5KCkK
IAogc3RhdGljIEV4cGVjdGVkPHNxbGl0ZTNfc3RtdCosIGludD4gY29uc3RydWN0QW5kUHJlcGFy
ZVN0YXRlbWVudChTUUxpdGVEYXRhYmFzZSYgZGF0YWJhc2UsIGNvbnN0IGNoYXIqIHF1ZXJ5LCBz
aXplX3QgcXVlcnlMZW5ndGgpCiB7Ci0gICAgTG9ja2VyIGRhdGFiYXNlTG9jayB7IGRhdGFiYXNl
LmRhdGFiYXNlTXV0ZXgoKSB9OworICAgIExvY2tIb2xkZXIgZGF0YWJhc2VMb2NrKGRhdGFiYXNl
LmRhdGFiYXNlTXV0ZXgoKSk7CiAgICAgTE9HKFNRTERhdGFiYXNlLCAiU1FMIC0gcHJlcGFyZSAt
ICVzIiwgcXVlcnkpOwogCiAgICAgLy8gUGFzcyB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcgaW5j
bHVkaW5nIHRoZSBudWxsIGNoYXJhY3RlciB0byBzcWxpdGUzX3ByZXBhcmVfdjI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwCmluZGV4IDZkOGRj
NzJlZGNiZDQyODg3ZTY3NzVhMTYwMjg1NDdhOTdjNjMxYjkuLmE5MmQzYWM1ZTU4NjU2ZjBiMzM2
MTE1NDgyN2FiODcyYTU3ZGVlM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Nx
bC9TUUxpdGVTdGF0ZW1lbnQuY3BwCkBAIC02NCw3ICs2NCw3IEBAIFNRTGl0ZVN0YXRlbWVudDo6
flNRTGl0ZVN0YXRlbWVudCgpCiAKIGludCBTUUxpdGVTdGF0ZW1lbnQ6OnN0ZXAoKQogewotICAg
IExvY2tlciBkYXRhYmFzZUxvY2sgeyBtX2RhdGFiYXNlLmRhdGFiYXNlTXV0ZXgoKSB9OworICAg
IExvY2tIb2xkZXIgZGF0YWJhc2VMb2NrKG1fZGF0YWJhc2UuZGF0YWJhc2VNdXRleCgpKTsKIAog
ICAgIGludCBlcnJvciA9IHNxbGl0ZTNfc3RlcChtX3N0YXRlbWVudCk7CiAgICAgaWYgKGVycm9y
ICE9IFNRTElURV9ET05FICYmIGVycm9yICE9IFNRTElURV9ST1cpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXIuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCU2VydmVyLmNwcAppbmRl
eCA5MWI4ODk0MWE3NmE4MDcxZDMwZDdmZWQ3NDE2M2ZiMDlmN2I4NzIxLi4wMjhjYjUzNzhhZTI0
NjcxY2Q2MmE2MTRlZjk3MDNjYzY2MTQyYjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvSW5kZXhlZERCL1dlYklEQlNlcnZlci5jcHAKQEAgLTQ4LDcgKzQ4
LDcgQEAgV2ViSURCU2VydmVyOjpXZWJJREJTZXJ2ZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSwgV2UKICAgICBwb3N0VGFzayhbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzZXNzaW9uSUQsIGRpcmVjdG9yeSA9IGRpcmVjdG9y
eS5pc29sYXRlZENvcHkoKSwgc3BhY2VSZXF1ZXN0ZXIgPSBXVEZNb3ZlKHNwYWNlUmVxdWVzdGVy
KV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0g
ICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKKyAgICAgICAgTG9ja0hvbGRl
ciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKICAgICAgICAgbV9zZXJ2ZXIgPSBtYWtlVW5pcXVlPFdl
YkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyPihzZXNzaW9uSUQsIGRpcmVjdG9yeSwgV1RGTW92
ZShzcGFjZVJlcXVlc3RlciksIG1fc2VydmVyTG9jayk7CiAgICAgfSk7CiB9CkBAIC02Nyw3ICs2
Nyw3IEBAIHZvaWQgV2ViSURCU2VydmVyOjpnZXRPcmlnaW5zKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoSGFzaFNldDxXZWJDb3JlOjpTZWN1cml0eU9yCiAgICAgcG9zdFRhc2soW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwg
dG9rZW4gPSBtX2RhdGFUYXNrQ291bnRlci5jb3VudCgpXSgpIG11dGFibGUgewogICAgICAgICBB
U1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9z
ZXJ2ZXJMb2NrIH07CisgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CiAg
ICAgICAgIHBvc3RUYXNrUmVwbHkoQ3Jvc3NUaHJlYWRUYXNrKFtjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spLCB0b2tlbiA9IFdURk1vdmUodG9rZW4pLCBvcmlnaW5zID0gY3Jvc3NUaHJlYWRD
b3B5KG1fc2VydmVyLT5nZXRPcmlnaW5zKCkpXSgpIG11dGFibGUgewogICAgICAgICAgICAgY2Fs
bGJhY2soV1RGTW92ZShvcmlnaW5zKSk7CiAgICAgICAgIH0pKTsKQEAgLTgxLDcgKzgxLDcgQEAg
dm9pZCBXZWJJREJTZXJ2ZXI6OmNsb3NlQW5kRGVsZXRlRGF0YWJhc2VzTW9kaWZpZWRTaW5jZShX
YWxsVGltZSBtb2RpZmljYXRpb25UaW0KICAgICBwb3N0VGFzayhbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCBtb2RpZmljYXRpb25UaW1lLCBjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spLCB0b2tlbiA9IG1fZGF0YVRhc2tDb3VudGVyLmNvdW50KCldKCkgbXV0YWJsZSB7
CiAgICAgICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgICAgIExvY2tlciBs
b2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2
ZXJMb2NrKTsKICAgICAgICAgbV9zZXJ2ZXItPmNsb3NlQW5kRGVsZXRlRGF0YWJhc2VzTW9kaWZp
ZWRTaW5jZShtb2RpZmljYXRpb25UaW1lKTsKICAgICAgICAgcG9zdFRhc2tSZXBseShDcm9zc1Ro
cmVhZFRhc2soW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHRva2VuID0gV1RGTW92ZSh0
b2tlbildKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBjYWxsYmFjaygpOwpAQCAtOTYsNyArOTYs
NyBAQCB2b2lkIFdlYklEQlNlcnZlcjo6Y2xvc2VBbmREZWxldGVEYXRhYmFzZXNGb3JPcmlnaW5z
KGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1cgogICAgIHBvc3RUYXNrKFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG9yaWdpbkRhdGFzID0gb3JpZ2luRGF0YXMuaXNvbGF0
ZWRDb3B5KCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHRva2VuID0gbV9kYXRhVGFz
a0NvdW50ZXIuY291bnQoKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVCghUnVuTG9vcDo6
aXNNYWluKCkpOwogCi0gICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKKyAg
ICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKICAgICAgICAgbV9zZXJ2ZXIt
PmNsb3NlQW5kRGVsZXRlRGF0YWJhc2VzRm9yT3JpZ2lucyhvcmlnaW5EYXRhcyk7CiAgICAgICAg
IHBvc3RUYXNrUmVwbHkoQ3Jvc3NUaHJlYWRUYXNrKFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spLCB0b2tlbiA9IFdURk1vdmUodG9rZW4pXSgpIG11dGFibGUgewogICAgICAgICAgICAgY2Fs
bGJhY2soKTsKQEAgLTExMSw3ICsxMTEsNyBAQCB2b2lkIFdlYklEQlNlcnZlcjo6cmVuYW1lT3Jp
Z2luKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgb2xkT3JpZ2luLCBjbwogICAg
IHBvc3RUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG9sZE9yaWdp
biA9IG9sZE9yaWdpbi5pc29sYXRlZENvcHkoKSwgbmV3T3JpZ2luID0gbmV3T3JpZ2luLmlzb2xh
dGVkQ29weSgpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCB0b2tlbiA9IG1fZGF0YVRh
c2tDb3VudGVyLmNvdW50KCldICgpIG11dGFibGUgewogICAgICAgICBBU1NFUlQoIVJ1bkxvb3A6
OmlzTWFpbigpKTsKIAotICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07Cisg
ICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CiAgICAgICAgIG1fc2VydmVy
LT5yZW5hbWVPcmlnaW4ob2xkT3JpZ2luLCBuZXdPcmlnaW4pOwogICAgICAgICBwb3N0VGFza1Jl
cGx5KENyb3NzVGhyZWFkVGFzayhbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgdG9rZW4g
PSBXVEZNb3ZlKHRva2VuKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGNhbGxiYWNrKCk7CkBA
IC0xNDcsNyArMTQ3LDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6Om9wZW5EYXRhYmFzZShjb25zdCBX
ZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEpCiB7CiAgICAgQVNTRVJUKCFSdW5M
b29wOjppc01haW4oKSk7CiAKLSAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07Cisg
ICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKICAgICBtX3NlcnZlci0+b3BlbkRh
dGFiYXNlKHJlcXVlc3REYXRhKTsKIH0KIApAQCAtMTU1LDcgKzE1NSw3IEBAIHZvaWQgV2ViSURC
U2VydmVyOjpkZWxldGVEYXRhYmFzZShjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVx
dWVzdERhdGEpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2
ZXJMb2NrKTsKICAgICBtX3NlcnZlci0+ZGVsZXRlRGF0YWJhc2UocmVxdWVzdERhdGEpOwogfQog
CkBAIC0xNjMsNyArMTYzLDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6OmFib3J0VHJhbnNhY3Rpb24o
Y29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2EKIHsKICAgICBBU1NF
UlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxv
Y2sgfTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOwogICAgIG1fc2VydmVy
LT5hYm9ydFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllcik7CiB9CiAKQEAgLTE3MSw3
ICsxNzEsNyBAQCB2b2lkIFdlYklEQlNlcnZlcjo6Y29tbWl0VHJhbnNhY3Rpb24oY29uc3QgV2Vi
Q29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFucwogewogICAgIEFTU0VSVCghUnVuTG9v
cDo6aXNNYWluKCkpOwogCi0gICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OworICAg
IExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CiAgICAgbV9zZXJ2ZXItPmNvbW1pdFRy
YW5zYWN0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllcik7CiB9CiAKQEAgLTE3OSw3ICsxNzksNyBA
QCB2b2lkIFdlYklEQlNlcnZlcjo6ZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdlVHJhbnNh
Y3Rpb24odWludDY0X3QgZGF0YWJhc2VDbwogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWlu
KCkpOwogCi0gICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OworICAgIExvY2tIb2xk
ZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CiAgICAgbV9zZXJ2ZXItPmRpZEZpbmlzaEhhbmRsaW5n
VmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHRy
YW5zYWN0aW9uSWRlbnRpZmllcik7CiB9CiAKQEAgLTE4Nyw3ICsxODcsNyBAQCB2b2lkIFdlYklE
QlNlcnZlcjo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEm
IHJlcXVlc3REYXRhLAogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAg
TG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1f
c2VydmVyTG9jayk7CiAgICAgbV9zZXJ2ZXItPmNyZWF0ZU9iamVjdFN0b3JlKHJlcXVlc3REYXRh
LCBvYmplY3RTdG9yZUluZm8pOwogfQogCkBAIC0xOTUsNyArMTk1LDcgQEAgdm9pZCBXZWJJREJT
ZXJ2ZXI6OmRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiBy
ZXF1ZXN0RGF0YSwKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIExv
Y2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3Nl
cnZlckxvY2spOwogICAgIG1fc2VydmVyLT5kZWxldGVPYmplY3RTdG9yZShyZXF1ZXN0RGF0YSwg
b2JqZWN0U3RvcmVOYW1lKTsKIH0KIApAQCAtMjAzLDcgKzIwMyw3IEBAIHZvaWQgV2ViSURCU2Vy
dmVyOjpyZW5hbWVPYmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVx
dWVzdERhdGEsCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2
ZXJMb2NrKTsKICAgICBtX3NlcnZlci0+cmVuYW1lT2JqZWN0U3RvcmUocmVxdWVzdERhdGEsIG9i
amVjdFN0b3JlSWRlbnRpZmllciwgbmV3TmFtZSk7CiB9CiAKQEAgLTIxMSw3ICsyMTEsNyBAQCB2
b2lkIFdlYklEQlNlcnZlcjo6Y2xlYXJPYmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJSZXF1
ZXN0RGF0YSYgcmVxdWVzdERhdGEsCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7
CiAKLSAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07CisgICAgTG9ja0hvbGRlciBs
b2NrZXIobV9zZXJ2ZXJMb2NrKTsKICAgICBtX3NlcnZlci0+Y2xlYXJPYmplY3RTdG9yZShyZXF1
ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyKTsKIH0KIApAQCAtMjE5LDcgKzIxOSw3IEBA
IHZvaWQgV2ViSURCU2VydmVyOjpjcmVhdGVJbmRleChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0
RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4o
KSk7CiAKLSAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07CisgICAgTG9ja0hvbGRl
ciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKICAgICBtX3NlcnZlci0+Y3JlYXRlSW5kZXgocmVxdWVz
dERhdGEsIGluZGV4SW5mbyk7CiB9CiAKQEAgLTIyNyw3ICsyMjcsNyBAQCB2b2lkIFdlYklEQlNl
cnZlcjo6ZGVsZXRlSW5kZXgoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3RE
YXRhLCB1aW50NgogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgTG9j
a2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2Vy
dmVyTG9jayk7CiAgICAgbV9zZXJ2ZXItPmRlbGV0ZUluZGV4KHJlcXVlc3REYXRhLCBvYmplY3RT
dG9yZUlkZW50aWZpZXIsIGluZGV4TmFtZSk7CiB9CiAKQEAgLTIzNSw3ICsyMzUsNyBAQCB2b2lk
IFdlYklEQlNlcnZlcjo6cmVuYW1lSW5kZXgoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEm
IHJlcXVlc3REYXRhLCB1aW50NgogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwog
Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OworICAgIExvY2tIb2xkZXIgbG9j
a2VyKG1fc2VydmVyTG9jayk7CiAgICAgbV9zZXJ2ZXItPnJlbmFtZUluZGV4KHJlcXVlc3REYXRh
LCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4SWRlbnRpZmllciwgbmV3TmFtZSk7CiB9CiAK
QEAgLTI0Myw3ICsyNDMsNyBAQCB2b2lkIFdlYklEQlNlcnZlcjo6cHV0T3JBZGQoY29uc3QgV2Vi
Q29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBXZQogewogICAgIEFTU0VS
VCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9j
ayB9OworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CiAgICAgbV9zZXJ2ZXIt
PnB1dE9yQWRkKHJlcXVlc3REYXRhLCBrZXlEYXRhLCB2YWx1ZSwgb3ZlcldyaXRlTW9kZSk7CiB9
CiAKQEAgLTI1MSw3ICsyNTEsNyBAQCB2b2lkIFdlYklEQlNlcnZlcjo6Z2V0UmVjb3JkKGNvbnN0
IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgVwogewogICAgIEFT
U0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVy
TG9jayB9OworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CiAgICAgbV9zZXJ2
ZXItPmdldFJlY29yZChyZXF1ZXN0RGF0YSwgZ2V0UmVjb3JkRGF0YSk7CiB9CiAKQEAgLTI1OSw3
ICsyNTksNyBAQCB2b2lkIFdlYklEQlNlcnZlcjo6Z2V0QWxsUmVjb3Jkcyhjb25zdCBXZWJDb3Jl
OjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbgogewogICAgIEFTU0VSVCghUnVuTG9v
cDo6aXNNYWluKCkpOwogCi0gICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OworICAg
IExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CiAgICAgbV9zZXJ2ZXItPmdldEFsbFJl
Y29yZHMocmVxdWVzdERhdGEsIGdldEFsbFJlY29yZHNEYXRhKTsKIH0KIApAQCAtMjY3LDcgKzI2
Nyw3IEBAIHZvaWQgV2ViSURCU2VydmVyOjpnZXRDb3VudChjb25zdCBXZWJDb3JlOjpJREJSZXF1
ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IFdlCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjpp
c01haW4oKSk7CiAKLSAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07CisgICAgTG9j
a0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKICAgICBtX3NlcnZlci0+Z2V0Q291bnQocmVx
dWVzdERhdGEsIGtleVJhbmdlRGF0YSk7CiB9CiAKQEAgLTI3NSw3ICsyNzUsNyBAQCB2b2lkIFdl
YklEQlNlcnZlcjo6ZGVsZXRlUmVjb3JkKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiBy
ZXF1ZXN0RGF0YSwgY29ucwogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0g
ICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OworICAgIExvY2tIb2xkZXIgbG9ja2Vy
KG1fc2VydmVyTG9jayk7CiAgICAgbV9zZXJ2ZXItPmRlbGV0ZVJlY29yZChyZXF1ZXN0RGF0YSwg
a2V5UmFuZ2VEYXRhKTsKIH0KIApAQCAtMjgzLDcgKzI4Myw3IEBAIHZvaWQgV2ViSURCU2VydmVy
OjpvcGVuQ3Vyc29yKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwg
Y29uc3QKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIExvY2tlciBs
b2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxv
Y2spOwogICAgIG1fc2VydmVyLT5vcGVuQ3Vyc29yKHJlcXVlc3REYXRhLCBjdXJzb3JJbmZvKTsK
IH0KIApAQCAtMjkxLDcgKzI5MSw3IEBAIHZvaWQgV2ViSURCU2VydmVyOjppdGVyYXRlQ3Vyc29y
KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uCiB7CiAgICAg
QVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2
ZXJMb2NrIH07CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKICAgICBtX3Nl
cnZlci0+aXRlcmF0ZUN1cnNvcihyZXF1ZXN0RGF0YSwgaXRlcmF0ZUN1cnNvckRhdGEpOwogfQog
CkBAIC0yOTksNyArMjk5LDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6OmVzdGFibGlzaFRyYW5zYWN0
aW9uKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGMKIHsKICAgICBBU1NF
UlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxv
Y2sgfTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOwogICAgIG1fc2VydmVy
LT5lc3RhYmxpc2hUcmFuc2FjdGlvbihkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCB0cmFu
c2FjdGlvbkluZm8pOwogfQogCkBAIC0zMDcsNyArMzA3LDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6
OmRhdGFiYXNlQ29ubmVjdGlvblBlbmRpbmdDbG9zZSh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rp
b25JZGUKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIExvY2tlciBs
b2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxv
Y2spOwogICAgIG1fc2VydmVyLT5kYXRhYmFzZUNvbm5lY3Rpb25QZW5kaW5nQ2xvc2UoZGF0YWJh
c2VDb25uZWN0aW9uSWRlbnRpZmllcik7CiB9CiAKQEAgLTMxNSw3ICszMTUsNyBAQCB2b2lkIFdl
YklEQlNlcnZlcjo6ZGF0YWJhc2VDb25uZWN0aW9uQ2xvc2VkKHVpbnQ2NF90IGRhdGFiYXNlQ29u
bmVjdGlvbklkZW50aWZpZQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0g
ICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OworICAgIExvY2tIb2xkZXIgbG9ja2Vy
KG1fc2VydmVyTG9jayk7CiAgICAgbV9zZXJ2ZXItPmRhdGFiYXNlQ29ubmVjdGlvbkNsb3NlZChk
YXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKTsKIH0KIApAQCAtMzIzLDcgKzMyMyw3IEBAIHZv
aWQgV2ViSURCU2VydmVyOjphYm9ydE9wZW5BbmRVcGdyYWRlTmVlZGVkKHVpbnQ2NF90IGRhdGFi
YXNlQ29ubmVjdGlvbklkZW50aWZpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7
CiAKLSAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07CisgICAgTG9ja0hvbGRlciBs
b2NrZXIobV9zZXJ2ZXJMb2NrKTsKICAgICBtX3NlcnZlci0+YWJvcnRPcGVuQW5kVXBncmFkZU5l
ZWRlZChkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCB0cmFuc2FjdGlvbklkZW50aWZpZXIp
OwogfQogCkBAIC0zMzEsNyArMzMxLDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6OmRpZEZpcmVWZXJz
aW9uQ2hhbmdlRXZlbnQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmkKIHsKICAg
ICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIExvY2tlciBsb2NrZXIgeyBtX3Nl
cnZlckxvY2sgfTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOwogICAgIG1f
c2VydmVyLT5kaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KGRhdGFiYXNlQ29ubmVjdGlvbklkZW50
aWZpZXIsIHJlcXVlc3RJZGVudGlmaWVyLCBjb25uZWN0aW9uQ2xvc2VkKTsKIH0KIApAQCAtMzM5
LDcgKzMzOSw3IEBAIHZvaWQgV2ViSURCU2VydmVyOjpvcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKGNv
bnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0CiB7CiAgICAgQVNTRVJUKCFSdW5M
b29wOjppc01haW4oKSk7CiAKLSAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07Cisg
ICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKICAgICBtX3NlcnZlci0+b3BlbkRC
UmVxdWVzdENhbmNlbGxlZChyZXF1ZXN0RGF0YSk7CiB9CiAKQEAgLTM1MCw3ICszNTAsNyBAQCB2
b2lkIFdlYklEQlNlcnZlcjo6Z2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgYwogICAgIGF1dG8qIHdlYklEQkNvbm5lY3Rpb24gPSBtX2Nv
bm5lY3Rpb25NYXAuZ2V0KGNvbm5lY3Rpb24udW5pcXVlSUQoKSk7CiAgICAgQVNTRVJUKHdlYklE
QkNvbm5lY3Rpb24pOwogCi0gICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OworICAg
IExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CiAgICAgbV9zZXJ2ZXItPmdldEFsbERh
dGFiYXNlTmFtZXNBbmRWZXJzaW9ucyh3ZWJJREJDb25uZWN0aW9uLT5pZGVudGlmaWVyKCksIHJl
cXVlc3RJZGVudGlmaWVyLCBvcmlnaW4pOwogfQogCkBAIC0zNjUsNyArMzY1LDcgQEAgdm9pZCBX
ZWJJREJTZXJ2ZXI6OmFkZENvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBX
ZWJDb3JlOjpQcm9jZXNzSWQKIAogICAgICAgICBBU1NFUlRfVU5VU0VEKGlzTmV3RW50cnksIGlz
TmV3RW50cnkpOwogCi0gICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKKyAg
ICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKICAgICAgICAgbV9zZXJ2ZXIt
PnJlZ2lzdGVyQ29ubmVjdGlvbihpdGVyLT52YWx1ZS0+Y29ubmVjdGlvblRvQ2xpZW50KCkpOwog
ICAgIH0pOwogICAgIG1fY29ubmVjdGlvbnMuYWRkKCZjb25uZWN0aW9uKTsKQEAgLTM4Niw3ICsz
ODYsNyBAQCB2b2lkIFdlYklEQlNlcnZlcjo6cmVtb3ZlQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24pCiAKICAgICAgICAgQVNTRVJUKGNvbm5lY3Rpb24pOwogCi0gICAgICAg
IExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKKyAgICAgICAgTG9ja0hvbGRlciBsb2Nr
ZXIobV9zZXJ2ZXJMb2NrKTsKICAgICAgICAgbV9zZXJ2ZXItPnVucmVnaXN0ZXJDb25uZWN0aW9u
KGNvbm5lY3Rpb24tPmNvbm5lY3Rpb25Ub0NsaWVudCgpKTsKICAgICB9KTsKIApAQCAtNDIzLDcg
KzQyMyw3IEBAIHZvaWQgV2ViSURCU2VydmVyOjpjbG9zZSgpCiAgICAgcG9zdFRhc2soW3RoaXNd
KCkgbXV0YWJsZSB7CiAgICAgICAgIG1fY29ubmVjdGlvbk1hcC5jbGVhcigpOwogCi0gICAgICAg
IExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKKyAgICAgICAgTG9ja0hvbGRlciBsb2Nr
ZXIobV9zZXJ2ZXJMb2NrKTsKICAgICAgICAgbV9zZXJ2ZXIgPSBudWxscHRyOwogICAgICAgICBD
cm9zc1RocmVhZFRhc2tIYW5kbGVyOjpraWxsKCk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAK
aW5kZXggMmFjZTUxYzYxMDhlMjM1ZjgwNjFkYzJlODg5OWJkNTZiZDc4MjM4Mi4uOWExYTIwODY0
MGZlZDgxMTNkYTM3YjY0NGQwYjc0YjlmYmZmYjMzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcApAQCAt
NTM0LDcgKzUzNCw3IEBAIHZvaWQgRW5naW5lOjp3cml0ZVNpemVGaWxlKGNvbnN0IFN0cmluZyYg
cGF0aCwgdWludDY0X3Qgc2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8CiAgICAgICAgIHJldHVybiBj
b21wbGV0aW9uSGFuZGxlcigpOwogCiAgICAgbV9pb1F1ZXVlLT5kaXNwYXRjaChbcGF0aCA9IHBh
dGguaXNvbGF0ZWRDb3B5KCksIHNpemUsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Ci0gICAgICAgIExvY2tlciBsb2NrZXIgeyBnbG9i
YWxTaXplRmlsZUxvY2sgfTsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoZ2xvYmFsU2l6ZUZp
bGVMb2NrKTsKICAgICAgICAgYXV0byBmaWxlSGFuZGxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUo
cGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpXcml0ZSk7CiAKICAgICAgICAgaWYgKEZp
bGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoZmlsZUhhbmRsZSkpIHsKQEAgLTU1NCw3ICs1NTQsNyBA
QCBPcHRpb25hbDx1aW50NjRfdD4gRW5naW5lOjpyZWFkU2l6ZUZpbGUoY29uc3QgU3RyaW5nJiBw
YXRoKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgTG9ja2VyIGxv
Y2tlciB7IGdsb2JhbFNpemVGaWxlTG9jayB9OworICAgIExvY2tIb2xkZXIgbG9ja2VyKGdsb2Jh
bFNpemVGaWxlTG9jayk7CiAgICAgYXV0byBmaWxlSGFuZGxlID0gRmlsZVN5c3RlbTo6b3BlbkZp
bGUocGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpSZWFkKTsKICAgICBhdXRvIGNsb3Nl
RmlsZUhhbmRsZSA9IG1ha2VTY29wZUV4aXQoWyZdIHsKICAgICAgICAgRmlsZVN5c3RlbTo6Y2xv
c2VGaWxlKGZpbGVIYW5kbGUpOwpAQCAtNjk4LDcgKzY5OCw3IEBAIHZvaWQgRW5naW5lOjpjbGVh
ckFsbENhY2hlc0Zyb21EaXNrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9u
SGFuZGxlCiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIG1faW9RdWV1ZS0+
ZGlzcGF0Y2goW3BhdGggPSBtX3Jvb3RQYXRoLmlzb2xhdGVkQ29weSgpLCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewotICAgICAgICBM
b2NrZXIgbG9ja2VyIHsgZ2xvYmFsU2l6ZUZpbGVMb2NrIH07CisgICAgICAgIExvY2tIb2xkZXIg
bG9ja2VyKGdsb2JhbFNpemVGaWxlTG9jayk7CiAgICAgICAgIGZvciAoYXV0byYgZmlsZU5hbWUg
OiBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KHBhdGgpKSB7CiAgICAgICAgICAgICBhdXRvIGZp
bGVQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhdGgsIGZpbGVO
YW1lKTsKICAgICAgICAgICAgIGlmIChGaWxlU3lzdGVtOjpmaWxlVHlwZShmaWxlUGF0aCkgPT0g
RmlsZVN5c3RlbTo6RmlsZVR5cGU6OkRpcmVjdG9yeSkKQEAgLTc1OSw3ICs3NTksNyBAQCB2b2lk
IEVuZ2luZTo6ZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnlPbkJhY2tncm91bmRUaHJlYWQoY29uc3Qg
U3RyaW5nJiBwYXRoLCBDb21wbAogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKICAg
ICBtX2lvUXVldWUtPmRpc3BhdGNoKFtwYXRoID0gcGF0aC5pc29sYXRlZENvcHkoKSwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKLSAg
ICAgICAgTG9ja2VyIGxvY2tlciB7IGdsb2JhbFNpemVGaWxlTG9jayB9OworICAgICAgICBMb2Nr
SG9sZGVyIGxvY2tlcihnbG9iYWxTaXplRmlsZUxvY2spOwogICAgICAgICBGaWxlU3lzdGVtOjpk
ZWxldGVOb25FbXB0eURpcmVjdG9yeShwYXRoKTsKIAogICAgICAgICBSdW5Mb29wOjptYWluKCku
ZGlzcGF0Y2goV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9nbGliL0ROU0NhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvZ2xpYi9ETlNDYWNoZS5jcHAKaW5kZXggMjRkYTM4ODc5Y2IwNDI2ZTE5
ZjRmYmM3MWRhOTJlODMxNGZmY2I2NC4uZDhlYTMzNjg1ZWEyYjhlYjZjY2ViNDNhZDM4ZTA2MGM0
M2E4OTU5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9nbGliL0RO
U0NhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2dsaWIvRE5TQ2Fj
aGUuY3BwCkBAIC02NCw3ICs2NCw3IEBAIEROU0NhY2hlOjpETlNDYWNoZU1hcCYgRE5TQ2FjaGU6
Om1hcEZvclR5cGUoVHlwZSB0eXBlKQogCiBPcHRpb25hbDxWZWN0b3I8R1JlZlB0cjxHSW5ldEFk
ZHJlc3M+Pj4gRE5TQ2FjaGU6Omxvb2t1cChjb25zdCBDU3RyaW5nJiBob3N0LCBUeXBlIHR5cGUp
CiB7Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OworICAgIExvY2tIb2xkZXIgbG9ja2Vy
KG1fbG9jayk7CiAgICAgYXV0byYgbWFwID0gbWFwRm9yVHlwZSh0eXBlKTsKICAgICBhdXRvIGl0
ID0gbWFwLmZpbmQoaG9zdCk7CiAgICAgaWYgKGl0ID09IG1hcC5lbmQoKSkKQEAgLTgxLDcgKzgx
LDcgQEAgT3B0aW9uYWw8VmVjdG9yPEdSZWZQdHI8R0luZXRBZGRyZXNzPj4+IEROU0NhY2hlOjps
b29rdXAoY29uc3QgQ1N0cmluZyYgaG9zdCwgVHkKIAogdm9pZCBETlNDYWNoZTo6dXBkYXRlKGNv
bnN0IENTdHJpbmcmIGhvc3QsIFZlY3RvcjxHUmVmUHRyPEdJbmV0QWRkcmVzcz4+JiYgYWRkcmVz
c0xpc3QsIFR5cGUgdHlwZSkKIHsKLSAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CisgICAg
TG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKICAgICBhdXRvJiBtYXAgPSBtYXBGb3JUeXBlKHR5
cGUpOwogICAgIENhY2hlZFJlc3BvbnNlIHJlc3BvbnNlID0geyBXVEZNb3ZlKGFkZHJlc3NMaXN0
KSwgTW9ub3RvbmljVGltZTo6bm93KCkgKyBleHBpcmVJbnRlcnZhbCB9OwogICAgIGF1dG8gYWRk
UmVzdWx0ID0gbWFwLnNldChob3N0LCBXVEZNb3ZlKHJlc3BvbnNlKSk7CkBAIC0xMTksNyArMTE5
LDcgQEAgdm9pZCBETlNDYWNoZTo6cHJ1bmVSZXNwb25zZXNJbk1hcChETlNDYWNoZU1hcCYgbWFw
KQogCiB2b2lkIEROU0NhY2hlOjpyZW1vdmVFeHBpcmVkUmVzcG9uc2VzRmlyZWQoKQogewotICAg
IExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2sp
OwogICAgIHJlbW92ZUV4cGlyZWRSZXNwb25zZXNJbk1hcChtX2Ruc01hcCk7CiAjaWYgR0xJQl9D
SEVDS19WRVJTSU9OKDIsIDU5LCAwKQogICAgIHJlbW92ZUV4cGlyZWRSZXNwb25zZXNJbk1hcCht
X2lwdjRNYXApOwpAQCAtMTI5LDcgKzEyOSw3IEBAIHZvaWQgRE5TQ2FjaGU6OnJlbW92ZUV4cGly
ZWRSZXNwb25zZXNGaXJlZCgpCiAKIHZvaWQgRE5TQ2FjaGU6OmNsZWFyKCkKIHsKLSAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9sb2NrIH07CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKICAg
ICBtX2Ruc01hcC5jbGVhcigpOwogI2lmIEdMSUJfQ0hFQ0tfVkVSU0lPTigyLCA1OSwgMCkKICAg
ICBtX2lwdjRNYXAuY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL0NvbXBvc2l0aW5nUnVuTG9vcC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29t
cG9zaXRvci9Db21wb3NpdGluZ1J1bkxvb3AuY3BwCmluZGV4IDU3OTEzNzkyZmU0OGVkOGFlZTQ1
Mjc0Mzk3M2ZjNjdlNjVkYTg2OTkuLmIyYTRmZGQ2ZmZjNmZlZTMxMzUyNmJmYWY0ZjliMmRmNTkx
ZjlmZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvdGhyZWFkZWRjb21wb3NpdG9yL0NvbXBvc2l0aW5nUnVuTG9vcC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvQ29t
cG9zaXRpbmdSdW5Mb29wLmNwcApAQCAtOTYsMTQgKzk2LDE0IEBAIHZvaWQgQ29tcG9zaXRpbmdS
dW5Mb29wOjpwZXJmb3JtVGFza1N5bmMoRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbikKIAog
dm9pZCBDb21wb3NpdGluZ1J1bkxvb3A6OnN1c3BlbmQoKQogewotICAgIExvY2tlciBzdGF0ZUxv
Y2tlciB7IG1fc3RhdGUubG9jayB9OworICAgIExvY2tIb2xkZXIgc3RhdGVMb2NrZXIobV9zdGF0
ZS5sb2NrKTsKICAgICBtX3N0YXRlLmlzU3VzcGVuZGVkID0gdHJ1ZTsKICAgICBtX3VwZGF0ZVRp
bWVyLnN0b3AoKTsKIH0KIAogdm9pZCBDb21wb3NpdGluZ1J1bkxvb3A6OnJlc3VtZSgpCiB7Ci0g
ICAgTG9ja2VyIHN0YXRlTG9ja2VyIHsgbV9zdGF0ZS5sb2NrIH07CisgICAgTG9ja0hvbGRlciBz
dGF0ZUxvY2tlcihtX3N0YXRlLmxvY2spOwogICAgIG1fc3RhdGUuaXNTdXNwZW5kZWQgPSBmYWxz
ZTsKICAgICBpZiAobV9zdGF0ZS51cGRhdGUgPT0gVXBkYXRlU3RhdGU6OlNjaGVkdWxlZCkKICAg
ICAgICAgbV91cGRhdGVUaW1lci5zdGFydE9uZVNob3QoMF9zKTsKQEAgLTExMSw3ICsxMTEsNyBA
QCB2b2lkIENvbXBvc2l0aW5nUnVuTG9vcDo6cmVzdW1lKCkKIAogdm9pZCBDb21wb3NpdGluZ1J1
bkxvb3A6OnNjaGVkdWxlVXBkYXRlKCkKIHsKLSAgICBMb2NrZXIgc3RhdGVMb2NrZXIgeyBtX3N0
YXRlLmxvY2sgfTsKKyAgICBMb2NrSG9sZGVyIHN0YXRlTG9ja2VyKG1fc3RhdGUubG9jayk7CiAg
ICAgc2NoZWR1bGVVcGRhdGUoc3RhdGVMb2NrZXIpOwogfQogCkBAIC0xNDMsNyArMTQzLDcgQEAg
dm9pZCBDb21wb3NpdGluZ1J1bkxvb3A6OnN0b3BVcGRhdGVzKCkKIHsKICAgICAvLyBTdG9wIGV2
ZXJ5dGhpbmcuCiAKLSAgICBMb2NrZXIgbG9ja2VyIHsgbV9zdGF0ZS5sb2NrIH07CisgICAgTG9j
a0hvbGRlciBsb2NrZXIobV9zdGF0ZS5sb2NrKTsKICAgICBtX3VwZGF0ZVRpbWVyLnN0b3AoKTsK
ICAgICBtX3N0YXRlLnVwZGF0ZSA9IFVwZGF0ZVN0YXRlOjpJZGxlOwogICAgIG1fc3RhdGUucGVu
ZGluZ1VwZGF0ZSA9IGZhbHNlOwpAQCAtMTgwLDcgKzE4MCw3IEBAIHZvaWQgQ29tcG9zaXRpbmdS
dW5Mb29wOjp1cGRhdGVUaW1lckZpcmVkKCkKIHsKICAgICB7CiAgICAgICAgIC8vIFNjZW5lIHVw
ZGF0ZSBpcyBub3cgaW4gcHJvZ3Jlc3MuCi0gICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3N0YXRl
LmxvY2sgfTsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zdGF0ZS5sb2NrKTsKICAgICAg
ICAgaWYgKG1fc3RhdGUuaXNTdXNwZW5kZWQpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IG1fc3RhdGUudXBkYXRlID0gVXBkYXRlU3RhdGU6OkluUHJvZ3Jlc3M7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRv
ci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0
ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcAppbmRl
eCBjOGI5YjhjYzkxMTYwNzU2NDhiNjg2NTg0MDQyOWRjOWNmMTlkODE3Li4zNjY1OWU0NjdmZWMz
ZTNlOTdiODEyN2FlZTliYzkwYTIzMjM0NDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBv
c2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
dGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHAKQEAgLTYwLDcgKzYwLDcg
QEAgVGhyZWFkZWRDb21wb3NpdG9yOjpUaHJlYWRlZENvbXBvc2l0b3IoQ2xpZW50JiBjbGllbnQs
IFRocmVhZGVkRGlzcGxheVJlZnJlc2hNb24KIHsKICAgICB7CiAgICAgICAgIC8vIExvY2tpbmcg
aXNuJ3QgcmVhbGx5IG5lY2Vzc2FyeSBoZXJlLCBidXQgaXQncyBkb25lIGZvciBjb25zaXN0ZW5j
eS4KLSAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fYXR0cmlidXRlcy5sb2NrIH07CisgICAgICAg
IExvY2tIb2xkZXIgbG9ja2VyKG1fYXR0cmlidXRlcy5sb2NrKTsKICAgICAgICAgbV9hdHRyaWJ1
dGVzLnZpZXdwb3J0U2l6ZSA9IHZpZXdwb3J0U2l6ZTsKICAgICAgICAgbV9hdHRyaWJ1dGVzLnNj
YWxlRmFjdG9yID0gc2NhbGVGYWN0b3I7CiAgICAgICAgIG1fYXR0cmlidXRlcy5uZWVkc1Jlc2l6
ZSA9ICF2aWV3cG9ydFNpemUuaXNFbXB0eSgpOwpAQCAtMTM4LDE0ICsxMzgsMTQgQEAgdm9pZCBU
aHJlYWRlZENvbXBvc2l0b3I6OnJlc3VtZSgpCiAKIHZvaWQgVGhyZWFkZWRDb21wb3NpdG9yOjpz
ZXRTY2FsZUZhY3RvcihmbG9hdCBzY2FsZSkKIHsKLSAgICBMb2NrZXIgbG9ja2VyIHsgbV9hdHRy
aWJ1dGVzLmxvY2sgfTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2F0dHJpYnV0ZXMubG9jayk7
CiAgICAgbV9hdHRyaWJ1dGVzLnNjYWxlRmFjdG9yID0gc2NhbGU7CiAgICAgbV9jb21wb3NpdGlu
Z1J1bkxvb3AtPnNjaGVkdWxlVXBkYXRlKCk7CiB9CiAKIHZvaWQgVGhyZWFkZWRDb21wb3NpdG9y
OjpzZXRTY3JvbGxQb3NpdGlvbihjb25zdCBJbnRQb2ludCYgc2Nyb2xsUG9zaXRpb24sIGZsb2F0
IHNjYWxlKQogewotICAgIExvY2tlciBsb2NrZXIgeyBtX2F0dHJpYnV0ZXMubG9jayB9OworICAg
IExvY2tIb2xkZXIgbG9ja2VyKG1fYXR0cmlidXRlcy5sb2NrKTsKICAgICBtX2F0dHJpYnV0ZXMu
c2Nyb2xsUG9zaXRpb24gPSBzY3JvbGxQb3NpdGlvbjsKICAgICBtX2F0dHJpYnV0ZXMuc2NhbGVG
YWN0b3IgPSBzY2FsZTsKICAgICBtX2NvbXBvc2l0aW5nUnVuTG9vcC0+c2NoZWR1bGVVcGRhdGUo
KTsKQEAgLTE1Myw3ICsxNTMsNyBAQCB2b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6c2V0U2Nyb2xs
UG9zaXRpb24oY29uc3QgSW50UG9pbnQmIHNjcm9sbFBvc2l0aW9uLCBmbG9hdAogCiB2b2lkIFRo
cmVhZGVkQ29tcG9zaXRvcjo6c2V0Vmlld3BvcnRTaXplKGNvbnN0IEludFNpemUmIHZpZXdwb3J0
U2l6ZSwgZmxvYXQgc2NhbGUpCiB7Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1fYXR0cmlidXRlcy5s
b2NrIH07CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9hdHRyaWJ1dGVzLmxvY2spOwogICAgIG1f
YXR0cmlidXRlcy52aWV3cG9ydFNpemUgPSB2aWV3cG9ydFNpemU7CiAgICAgbV9hdHRyaWJ1dGVz
LnNjYWxlRmFjdG9yID0gc2NhbGU7CiAgICAgbV9hdHRyaWJ1dGVzLm5lZWRzUmVzaXplID0gdHJ1
ZTsKQEAgLTE5Myw3ICsxOTMsNyBAQCB2b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6cmVuZGVyTGF5
ZXJUcmVlKCkKICAgICBWZWN0b3I8V2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlPiBz
dGF0ZXM7CiAKICAgICB7Ci0gICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2F0dHJpYnV0ZXMubG9j
ayB9OworICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2F0dHJpYnV0ZXMubG9jayk7CiAgICAg
ICAgIHZpZXdwb3J0U2l6ZSA9IG1fYXR0cmlidXRlcy52aWV3cG9ydFNpemU7CiAgICAgICAgIHNj
cm9sbFBvc2l0aW9uID0gbV9hdHRyaWJ1dGVzLnNjcm9sbFBvc2l0aW9uOwogICAgICAgICBzY2Fs
ZUZhY3RvciA9IG1fYXR0cmlidXRlcy5zY2FsZUZhY3RvcjsKQEAgLTI1MCwxMiArMjUwLDEyIEBA
IHZvaWQgVGhyZWFkZWRDb21wb3NpdG9yOjpzY2VuZVVwZGF0ZUZpbmlzaGVkKCkKICAgICBib29s
IHNob3VsZERpc3BhdGNoRGlzcGxheVJlZnJlc2hDYWxsYmFjayB7IGZhbHNlIH07CiAKICAgICB7
Ci0gICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2F0dHJpYnV0ZXMubG9jayB9OworICAgICAgICBM
b2NrSG9sZGVyIGxvY2tlcihtX2F0dHJpYnV0ZXMubG9jayk7CiAgICAgICAgIHNob3VsZERpc3Bh
dGNoRGlzcGxheVJlZnJlc2hDYWxsYmFjayA9IG1fYXR0cmlidXRlcy5jbGllbnRSZW5kZXJzTmV4
dEZyYW1lCiAgICAgICAgICAgICB8fCBtX2Rpc3BsYXlSZWZyZXNoTW9uaXRvci0+cmVxdWlyZXNE
aXNwbGF5UmVmcmVzaENhbGxiYWNrKCk7CiAgICAgfQogCi0gICAgTG9ja2VyIHN0YXRlTG9ja2Vy
IHsgbV9jb21wb3NpdGluZ1J1bkxvb3AtPnN0YXRlTG9jaygpIH07CisgICAgTG9ja0hvbGRlciBz
dGF0ZUxvY2tlcihtX2NvbXBvc2l0aW5nUnVuTG9vcC0+c3RhdGVMb2NrKCkpOwogCiAgICAgLy8g
U2NoZWR1bGUgdGhlIERpc3BsYXlSZWZyZXNoTW9uaXRvciBjYWxsYmFjaywgaWYgbmVjZXNzYXJ5
LgogICAgIGlmIChzaG91bGREaXNwYXRjaERpc3BsYXlSZWZyZXNoQ2FsbGJhY2spCkBAIC0yNzAs
NyArMjcwLDcgQEAgdm9pZCBUaHJlYWRlZENvbXBvc2l0b3I6OnNjZW5lVXBkYXRlRmluaXNoZWQo
KQogCiB2b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6dXBkYXRlU2NlbmVTdGF0ZShjb25zdCBDb29y
ZGluYXRlZEdyYXBoaWNzU3RhdGUmIHN0YXRlKQogewotICAgIExvY2tlciBsb2NrZXIgeyBtX2F0
dHJpYnV0ZXMubG9jayB9OworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fYXR0cmlidXRlcy5sb2Nr
KTsKICAgICBtX2F0dHJpYnV0ZXMuc3RhdGVzLmFwcGVuZChzdGF0ZSk7CiAgICAgbV9jb21wb3Np
dGluZ1J1bkxvb3AtPnNjaGVkdWxlVXBkYXRlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcAppbmRleCBkNzRhNDczZTIwYzkwMThm
ZTM2ZDVhYjZkZmQ4YWE1MmI1YTY5YTUxLi5hOGE3ODlmYzEyYzQxODZhMDlmMDJjOTJkNDNlZWQx
NDUxZTA0MTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9J
Y29uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0lj
b25EYXRhYmFzZS5jcHAKQEAgLTE4OCw3ICsxODgsNyBAQCB2b2lkIEljb25EYXRhYmFzZTo6cG9w
dWxhdGVQYWdlVVJMVG9JY29uVVJMTWFwKCkKICAgICB9CiAKICAgICBhdXRvIHJlc3VsdCA9IHF1
ZXJ5LT5zdGVwKCk7Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1fcGFnZVVSTFRvSWNvblVSTE1hcExv
Y2sgfTsKKyAgICBMb2NrSG9sZGVyIGxvY2tIb2xkZXIobV9wYWdlVVJMVG9JY29uVVJMTWFwTG9j
ayk7CiAgICAgd2hpbGUgKHJlc3VsdCA9PSBTUUxJVEVfUk9XKSB7CiAgICAgICAgIG1fcGFnZVVS
TFRvSWNvblVSTE1hcC5zZXQocXVlcnktPmNvbHVtblRleHQoMCksIHF1ZXJ5LT5jb2x1bW5UZXh0
KDEpKTsKICAgICAgICAgcmVzdWx0ID0gcXVlcnktPnN0ZXAoKTsKQEAgLTI2MCw3ICsyNjAsNyBA
QCB2b2lkIEljb25EYXRhYmFzZTo6Y2xlYXJMb2FkZWRJY29uc1RpbWVyRmlyZWQoKQogewogICAg
IEFTU0VSVChpc01haW5SdW5Mb29wKCkpOwogCi0gICAgTG9ja2VyIGxvY2tlciB7IG1fbG9hZGVk
SWNvbnNMb2NrIH07CisgICAgTG9ja0hvbGRlciBsb2NrSG9sZGVyKG1fbG9hZGVkSWNvbnNMb2Nr
KTsKICAgICBhdXRvIG5vdyA9IE1vbm90b25pY1RpbWU6Om5vdygpOwogICAgIFZlY3RvcjxTdHJp
bmc+IGljb25zVG9SZW1vdmU7CiAgICAgZm9yIChhdXRvIGl0ZXIgOiBtX2xvYWRlZEljb25zKSB7
CkBAIC00OTIsNyArNDkyLDcgQEAgdm9pZCBJY29uRGF0YWJhc2U6OmNoZWNrSWNvblVSTEFuZFNl
dFBhZ2VVUkxJZk5lZWRlZChjb25zdCBTdHJpbmcmIGljb25VUkwsIGNvbnMKICAgICAgICAgICAg
IGJvb2wgZXhwaXJlZCA9IGZhbHNlOwogICAgICAgICAgICAgU3RyaW5nIGNhY2hlZEljb25VUkw7
CiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fcGFnZVVS
TFRvSWNvblVSTE1hcExvY2sgfTsKKyAgICAgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tIb2xk
ZXIobV9wYWdlVVJMVG9JY29uVVJMTWFwTG9jayk7CiAgICAgICAgICAgICAgICAgY2FjaGVkSWNv
blVSTCA9IG1fcGFnZVVSTFRvSWNvblVSTE1hcC5nZXQocGFnZVVSTCk7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBpZiAoY2FjaGVkSWNvblVSTCA9PSBpY29uVVJMKQpAQCAtNTA2LDcgKzUw
Niw3IEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpjaGVja0ljb25VUkxBbmRTZXRQYWdlVVJMSWZOZWVk
ZWQoY29uc3QgU3RyaW5nJiBpY29uVVJMLCBjb25zCiAgICAgICAgICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAg
aWYgKCFjYW5Xcml0ZVRvRGF0YWJhc2UgfHwgc2V0SWNvbklERm9yUGFnZVVSTChpY29uSUQudmFs
dWUoKSwgcGFnZVVSTCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIExvY2tlciBsb2NrZXIg
eyBtX3BhZ2VVUkxUb0ljb25VUkxNYXBMb2NrIH07CisgICAgICAgICAgICAgICAgICAgICAgICBM
b2NrSG9sZGVyIGxvY2tIb2xkZXIobV9wYWdlVVJMVG9JY29uVVJMTWFwTG9jayk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBtX3BhZ2VVUkxUb0ljb25VUkxNYXAuc2V0KHBhZ2VVUkwsIGljb25V
UkwpOwogICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CiAgICAgICAgICAg
ICAgICAgICAgIH0KQEAgLTUxNCwxMyArNTE0LDEzIEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpjaGVj
a0ljb25VUkxBbmRTZXRQYWdlVVJMSWZOZWVkZWQoY29uc3QgU3RyaW5nJiBpY29uVVJMLCBjb25z
CiAgICAgICAgICAgICB9IGVsc2UgaWYgKCFjYW5Xcml0ZVRvRGF0YWJhc2UpIHsKICAgICAgICAg
ICAgICAgICBib29sIGZvdW5kSW5NZW1vcnlDYWNoZTsKICAgICAgICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2xvYWRlZEljb25zTG9jayB9OworICAg
ICAgICAgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tIb2xkZXIobV9sb2FkZWRJY29uc0xvY2sp
OwogICAgICAgICAgICAgICAgICAgICBmb3VuZEluTWVtb3J5Q2FjaGUgPSBtX2xvYWRlZEljb25z
LmNvbnRhaW5zKGljb25VUkwpOwogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAg
IGlmIChmb3VuZEluTWVtb3J5Q2FjaGUpIHsKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0g
dHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fcGFnZVVSTFRvSWNv
blVSTE1hcExvY2sgfTsKKyAgICAgICAgICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrSG9sZGVy
KG1fcGFnZVVSTFRvSWNvblVSTE1hcExvY2spOwogICAgICAgICAgICAgICAgICAgICBtX3BhZ2VV
UkxUb0ljb25VUkxNYXAuc2V0KHBhZ2VVUkwsIGljb25VUkwpOwogICAgICAgICAgICAgICAgICAg
ICBjaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICB9CkBAIC01NDIsMTQgKzU0MiwxNCBA
QCB2b2lkIEljb25EYXRhYmFzZTo6bG9hZEljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgcGFn
ZVVSTCwgQWxsb3dEYXRhYmFzZVdyaXRlCiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBpY29uRGF0
YTsKICAgICAgICAgU3RyaW5nIGljb25VUkw7CiAgICAgICAgIHsKLSAgICAgICAgICAgIExvY2tl
ciBsb2NrZXIgeyBtX3BhZ2VVUkxUb0ljb25VUkxNYXBMb2NrIH07CisgICAgICAgICAgICBMb2Nr
SG9sZGVyIGxvY2tIb2xkZXIobV9wYWdlVVJMVG9JY29uVVJMTWFwTG9jayk7CiAgICAgICAgICAg
ICBpY29uVVJMID0gbV9wYWdlVVJMVG9JY29uVVJMTWFwLmdldChwYWdlVVJMKTsKICAgICAgICAg
fQogICAgICAgICBpZiAobV9kYi5pc09wZW4oKSAmJiAhaWNvblVSTC5pc0VtcHR5KCkpIHsKICAg
ICAgICAgICAgIGJvb2wgZXhwaXJlZDsKICAgICAgICAgICAgIGljb25JRCA9IGljb25JREZvcklj
b25VUkwoaWNvblVSTCwgZXhwaXJlZCk7CiAgICAgICAgICAgICBpZiAoaWNvbklEKSB7Ci0gICAg
ICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9hZGVkSWNvbnNMb2NrIH07CisgICAgICAg
ICAgICAgICAgTG9ja0hvbGRlciBsb2NrSG9sZGVyKG1fbG9hZGVkSWNvbnNMb2NrKTsKICAgICAg
ICAgICAgICAgICBpZiAoIW1fbG9hZGVkSWNvbnMuY29udGFpbnMoaWNvblVSTCkpIHsKICAgICAg
ICAgICAgICAgICAgICAgaWNvbkRhdGEgPSB0aGlzLT5pY29uRGF0YShpY29uSUQudmFsdWUoKSk7
CiAgICAgICAgICAgICAgICAgICAgIG1fbG9hZGVkSWNvbnMuc2V0KGljb25VUkwsIHN0ZDo6bWFr
ZV9wYWlyPFBsYXRmb3JtSW1hZ2VQdHIsIE1vbm90b25pY1RpbWU+KG51bGxwdHIsIHsgfSkpOwpA
QCAtNTY2LDEzICs1NjYsMTMgQEAgdm9pZCBJY29uRGF0YWJhc2U6OmxvYWRJY29uRm9yUGFnZVVS
TChjb25zdCBTdHJpbmcmIHBhZ2VVUkwsIEFsbG93RGF0YWJhc2VXcml0ZQogICAgICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7
IG1fbG9hZGVkSWNvbnNMb2NrIH07CisgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tIb2xkZXIo
bV9sb2FkZWRJY29uc0xvY2spOwogICAgICAgICAgICAgYXV0byBpdCA9IG1fbG9hZGVkSWNvbnMu
ZmluZChpY29uVVJMKTsKICAgICAgICAgICAgIGlmIChpdCAhPSBtX2xvYWRlZEljb25zLmVuZCgp
ICYmIGl0LT52YWx1ZS5maXJzdCkgewogICAgICAgICAgICAgICAgIGF1dG8gaWNvbiA9IGl0LT52
YWx1ZS5maXJzdDsKICAgICAgICAgICAgICAgICBpdC0+dmFsdWUuc2Vjb25kID0gTW9ub3Rvbmlj
VGltZTo6bm93KCk7CiAgICAgICAgICAgICAgICAgc3RhcnRDbGVhckxvYWRlZEljb25zVGltZXIo
KTsKLSAgICAgICAgICAgICAgICBsb2NrZXIudW5sb2NrRWFybHkoKTsKKyAgICAgICAgICAgICAg
ICBsb2NrSG9sZGVyLnVubG9ja0Vhcmx5KCk7CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoV1RGTW92ZShpY29uKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgfQpAQCAtNTk2LDcgKzU5Niw3IEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpsb2FkSWNvbkZvclBh
Z2VVUkwoY29uc3QgU3RyaW5nJiBwYWdlVVJMLCBBbGxvd0RhdGFiYXNlV3JpdGUKIAogICAgICAg
ICAgICAgYXV0byBpY29uID0gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5maXJzdDsKICAgICAg
ICAgICAgIHN0YXJ0Q2xlYXJMb2FkZWRJY29uc1RpbWVyKCk7Ci0gICAgICAgICAgICBsb2NrZXIu
dW5sb2NrRWFybHkoKTsKKyAgICAgICAgICAgIGxvY2tIb2xkZXIudW5sb2NrRWFybHkoKTsKICAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoaWNvbikpOwogICAgICAgICB9KTsK
ICAgICB9KTsKQEAgLTYwNiw3ICs2MDYsNyBAQCBTdHJpbmcgSWNvbkRhdGFiYXNlOjppY29uVVJM
Rm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VVUkwpCiB7CiAgICAgQVNTRVJUKGlzTWFpblJ1
bkxvb3AoKSk7CiAKLSAgICBMb2NrZXIgbG9ja2VyIHsgbV9wYWdlVVJMVG9JY29uVVJMTWFwTG9j
ayB9OworICAgIExvY2tIb2xkZXIgbG9ja0hvbGRlcihtX3BhZ2VVUkxUb0ljb25VUkxNYXBMb2Nr
KTsKICAgICByZXR1cm4gbV9wYWdlVVJMVG9JY29uVVJMTWFwLmdldChwYWdlVVJMKTsKIH0KIApA
QCAtNjE4LDcgKzYxOCw3IEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpzZXRJY29uRm9yUGFnZVVSTChj
b25zdCBTdHJpbmcmIGljb25VUkwsIGNvbnN0IHVuc2lnbmVkIGNoYXIqCiAgICAgaWYgKG1fYWxs
b3dEYXRhYmFzZVdyaXRlID09IEFsbG93RGF0YWJhc2VXcml0ZTo6Tm8gfHwgYWxsb3dEYXRhYmFz
ZVdyaXRlID09IEFsbG93RGF0YWJhc2VXcml0ZTo6Tm8pIHsKICAgICAgICAgYm9vbCByZXN1bHQg
PSB0cnVlOwogICAgICAgICB7Ci0gICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2FkZWRJ
Y29uc0xvY2sgfTsKKyAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja0hvbGRlcihtX2xvYWRlZElj
b25zTG9jayk7CiAgICAgICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fbG9hZGVkSWNvbnMuc2V0
KGljb25VUkwsIHN0ZDo6bWFrZV9wYWlyPFBsYXRmb3JtSW1hZ2VQdHIsIE1vbm90b25pY1RpbWU+
KG51bGxwdHIsIHsgfSkpOwogICAgICAgICAgICAgaWYgKGljb25EYXRhU2l6ZSkgewogICAgICAg
ICAgICAgICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2U7CkBAIC02MzIsNyArNjMy
LDcgQEAgdm9pZCBJY29uRGF0YWJhc2U6OnNldEljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYg
aWNvblVSTCwgY29uc3QgdW5zaWduZWQgY2hhcioKICAgICAgICAgc3RhcnRDbGVhckxvYWRlZElj
b25zVGltZXIoKTsKICAgICAgICAgbV93b3JrUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlc3VsdCwgaWNvblVSTCA9IGljb25VUkwuaXNvbGF0
ZWRDb3B5KCksIHBhZ2VVUkwgPSBwYWdlVVJMLmlzb2xhdGVkQ29weSgpLCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3BhZ2VVUkxUb0ljb25VUkxN
YXBMb2NrIH07CisgICAgICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrSG9sZGVyKG1fcGFnZVVS
TFRvSWNvblVSTE1hcExvY2spOwogICAgICAgICAgICAgICAgIG1fcGFnZVVSTFRvSWNvblVSTE1h
cC5zZXQocGFnZVVSTCwgaWNvblVSTCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBSdW5M
b29wOjptYWluKCkuZGlzcGF0Y2goW3Jlc3VsdCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKQEAgLTY1OSw3ICs2NTksNyBAQCB2b2lk
IEljb25EYXRhYmFzZTo6c2V0SWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBpY29uVVJMLCBj
b25zdCB1bnNpZ25lZCBjaGFyKgogICAgICAgICAgICAgaWYgKGljb25JRCkgewogICAgICAgICAg
ICAgICAgIHJlc3VsdCA9IHRydWU7CiAgICAgICAgICAgICAgICAgaWYgKHNldEljb25JREZvclBh
Z2VVUkwoaWNvbklELnZhbHVlKCksIHBhZ2VVUkwpKSB7Ci0gICAgICAgICAgICAgICAgICAgIExv
Y2tlciBsb2NrZXIgeyBtX3BhZ2VVUkxUb0ljb25VUkxNYXBMb2NrIH07CisgICAgICAgICAgICAg
ICAgICAgIExvY2tIb2xkZXIgbG9ja0hvbGRlcihtX3BhZ2VVUkxUb0ljb25VUkxNYXBMb2NrKTsK
ICAgICAgICAgICAgICAgICAgICAgbV9wYWdlVVJMVG9JY29uVVJMTWFwLnNldChwYWdlVVJMLCBp
Y29uVVJMKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC02NzgsMTIgKzY3
OCwxMiBAQCB2b2lkIEljb25EYXRhYmFzZTo6Y2xlYXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkpOwogCiAg
ICAgewotICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2FkZWRJY29uc0xvY2sgfTsKKyAgICAg
ICAgTG9ja0hvbGRlciBsb2NrSG9sZGVyKG1fbG9hZGVkSWNvbnNMb2NrKTsKICAgICAgICAgbV9s
b2FkZWRJY29ucy5jbGVhcigpOwogICAgIH0KICAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgewotICAgICAg
ICAgICAgTG9ja2VyIGxvY2tlciB7IG1fcGFnZVVSTFRvSWNvblVSTE1hcExvY2sgfTsKKyAgICAg
ICAgICAgIExvY2tIb2xkZXIgbG9ja0hvbGRlcihtX3BhZ2VVUkxUb0ljb25VUkxNYXBMb2NrKTsK
ICAgICAgICAgICAgIG1fcGFnZVVSTFRvSWNvblVSTE1hcC5jbGVhcigpOwogICAgICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9JblByb2Nlc3NJREJTZXJ2
ZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL0luUHJvY2Vzc0lEQlNlcnZlci5j
cHAKaW5kZXggYWIwZTkwOTg4YjQ5ZDAzOTUyYjFlN2U1ODIyNjdjYTExYTZlOTE4MS4uYjIzN2E2
Y2M2OWNmZWIzNjUzYzhiYTY1ZGU5ZWNiNDdkYzQxZmY4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9TdG9yYWdlL0luUHJvY2Vzc0lEQlNlcnZlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9TdG9yYWdlL0luUHJvY2Vzc0lEQlNlcnZlci5jcHAKQEAgLTk3LDcgKzk3LDcg
QEAgSW5Qcm9jZXNzSURCU2VydmVyOjpJblByb2Nlc3NJREJTZXJ2ZXIoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGQKICAgICBkaXNwYXRjaFRhc2soW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc2Vzc2lvbklELCBkaXJlY3RvcnkgPSBkYXRhYmFz
ZURpcmVjdG9yeVBhdGguaXNvbGF0ZWRDb3B5KCksIHNwYWNlUmVxdWVzdGVyID0gc3RvcmFnZVF1
b3RhTWFuYWdlclNwYWNlUmVxdWVzdGVyKCp0aGlzKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIG1f
Y29ubmVjdGlvblRvQ2xpZW50ID0gSURCU2VydmVyOjpJREJDb25uZWN0aW9uVG9DbGllbnQ6OmNy
ZWF0ZSgqdGhpcyk7CiAKLSAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9Owor
ICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOwogICAgICAgICBtX3NlcnZl
ciA9IG1ha2VVbmlxdWU8SURCU2VydmVyOjpJREJTZXJ2ZXI+KHNlc3Npb25JRCwgZGlyZWN0b3J5
LCBXVEZNb3ZlKHNwYWNlUmVxdWVzdGVyKSwgbV9zZXJ2ZXJMb2NrKTsKICAgICAgICAgbV9zZXJ2
ZXItPnJlZ2lzdGVyQ29ubmVjdGlvbigqbV9jb25uZWN0aW9uVG9DbGllbnQpOwogICAgIH0pOwpA
QCAtMTIzLDcgKzEyMyw3IEBAIElEQlNlcnZlcjo6SURCQ29ubmVjdGlvblRvQ2xpZW50JiBJblBy
b2Nlc3NJREJTZXJ2ZXI6OmNvbm5lY3Rpb25Ub0NsaWVudCgpIGNvbnN0CiB2b2lkIEluUHJvY2Vz
c0lEQlNlcnZlcjo6ZGVsZXRlRGF0YWJhc2UoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEm
IHJlcXVlc3REYXRhKQogewogICAgIGRpc3BhdGNoVGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0RGF0YSA9IHJlcXVlc3REYXRhLmlzb2xhdGVkQ29weSgp
XSB7Ci0gICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKKyAgICAgICAgTG9j
a0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKICAgICAgICAgbV9zZXJ2ZXItPmRlbGV0ZURh
dGFiYXNlKHJlcXVlc3REYXRhKTsKICAgICB9KTsKIH0KQEAgLTEzOCw3ICsxMzgsNyBAQCB2b2lk
IEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkRGVsZXRlRGF0YWJhc2UoY29uc3QgSURCUmVzdWx0RGF0
YSYgcmVzdWx0RGF0YSkKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpvcGVuRGF0YWJhc2UoY29u
c3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhKQogewogICAgIGRpc3BhdGNo
VGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0RGF0YSA9
IHJlcXVlc3REYXRhLmlzb2xhdGVkQ29weSgpXSB7Ci0gICAgICAgIExvY2tlciBsb2NrZXIgeyBt
X3NlcnZlckxvY2sgfTsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsK
ICAgICAgICAgbV9zZXJ2ZXItPm9wZW5EYXRhYmFzZShyZXF1ZXN0RGF0YSk7CiAgICAgfSk7CiB9
CkBAIC0yNjUsNyArMjY1LDcgQEAgdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZEl0ZXJhdGVD
dXJzb3IoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKIHZvaWQgSW5Qcm9jZXNzSURC
U2VydmVyOjphYm9ydFRyYW5zYWN0aW9uKGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRp
ZmllciYgcmVzb3VyY2VJZGVudGlmaWVyKQogewogICAgIGRpc3BhdGNoVGFzayhbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXNvdXJjZUlkZW50aWZpZXIgPSByZXNvdXJj
ZUlkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCldIHsKLSAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1f
c2VydmVyTG9jayB9OworICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOwog
ICAgICAgICBtX3NlcnZlci0+YWJvcnRUcmFuc2FjdGlvbihyZXNvdXJjZUlkZW50aWZpZXIpOwog
ICAgIH0pOwogfQpAQCAtMjczLDcgKzI3Myw3IEBAIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjph
Ym9ydFRyYW5zYWN0aW9uKGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYKIHZv
aWQgSW5Qcm9jZXNzSURCU2VydmVyOjpjb21taXRUcmFuc2FjdGlvbihjb25zdCBXZWJDb3JlOjpJ
REJSZXNvdXJjZUlkZW50aWZpZXImIHJlc291cmNlSWRlbnRpZmllcikKIHsKICAgICBkaXNwYXRj
aFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVzb3VyY2VJZGVu
dGlmaWVyID0gcmVzb3VyY2VJZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpXSB7Ci0gICAgICAgIExv
Y2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIo
bV9zZXJ2ZXJMb2NrKTsKICAgICAgICAgbV9zZXJ2ZXItPmNvbW1pdFRyYW5zYWN0aW9uKHJlc291
cmNlSWRlbnRpZmllcik7CiAgICAgfSk7CiB9CkBAIC0yODEsNyArMjgxLDcgQEAgdm9pZCBJblBy
b2Nlc3NJREJTZXJ2ZXI6OmNvbW1pdFRyYW5zYWN0aW9uKGNvbnN0IFdlYkNvcmU6OklEQlJlc291
cmNlSWRlbnRpZmllciYKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRGaW5pc2hIYW5kbGlu
Z1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbih1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVu
dGlmaWVyLCBjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9u
SWRlbnRpZmllcikKIHsKICAgICBkaXNwYXRjaFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgdHJhbnNhY3Rpb25J
ZGVudGlmaWVyID0gdHJhbnNhY3Rpb25JZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpXSB7Ci0gICAg
ICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKKyAgICAgICAgTG9ja0hvbGRlciBs
b2NrZXIobV9zZXJ2ZXJMb2NrKTsKICAgICAgICAgbV9zZXJ2ZXItPmRpZEZpbmlzaEhhbmRsaW5n
VmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHRy
YW5zYWN0aW9uSWRlbnRpZmllcik7CiAgICAgfSk7CiB9CkBAIC0yODksNyArMjg5LDcgQEAgdm9p
ZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZEZpbmlzaEhhbmRsaW5nVmVyc2lvbkNoYW5nZVRyYW5z
YWN0aW9uKHVpbnQ2NF90IGRhdGEKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpjcmVhdGVPYmpl
Y3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVzdWx0RGF0YSwgY29uc3Qg
SURCT2JqZWN0U3RvcmVJbmZvJiBpbmZvKQogewogICAgIGRpc3BhdGNoVGFzayhbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXN1bHREYXRhID0gcmVzdWx0RGF0YS5pc29s
YXRlZENvcHkoKSwgaW5mbyA9IGluZm8uaXNvbGF0ZWRDb3B5KCldIHsKLSAgICAgICAgTG9ja2Vy
IGxvY2tlciB7IG1fc2VydmVyTG9jayB9OworICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3Nl
cnZlckxvY2spOwogICAgICAgICBtX3NlcnZlci0+Y3JlYXRlT2JqZWN0U3RvcmUocmVzdWx0RGF0
YSwgaW5mbyk7CiAgICAgfSk7CiB9CkBAIC0yOTcsNyArMjk3LDcgQEAgdm9pZCBJblByb2Nlc3NJ
REJTZXJ2ZXI6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRh
JiByZXN1bHQKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkZWxldGVPYmplY3RTdG9yZShjb25z
dCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IFN0cmluZyYgb2Jq
ZWN0U3RvcmVOYW1lKQogewogICAgIGRpc3BhdGNoVGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0RGF0YSA9IHJlcXVlc3REYXRhLmlzb2xhdGVkQ29weSgp
LCBvYmplY3RTdG9yZU5hbWUgPSBvYmplY3RTdG9yZU5hbWUuaXNvbGF0ZWRDb3B5KCldICgpIG11
dGFibGUgewotICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07CisgICAgICAg
IExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CiAgICAgICAgIG1fc2VydmVyLT5kZWxl
dGVPYmplY3RTdG9yZShyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVOYW1lKTsKICAgICB9KTsKIH0K
QEAgLTMwNSw3ICszMDUsNyBAQCB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGVsZXRlT2JqZWN0
U3RvcmUoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlcwogdm9pZCBJblByb2Nl
c3NJREJTZXJ2ZXI6OnJlbmFtZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3RE
YXRhJiByZXF1ZXN0RGF0YSwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIG5ld05hbWUpCiB7CiAgICAgZGlzcGF0Y2hUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3REYXRhID0gcmVxdWVzdERhdGEuaXNvbGF0ZWRDb3B5
KCksIG9iamVjdFN0b3JlSWRlbnRpZmllciwgbmV3TmFtZSA9IG5ld05hbWUuaXNvbGF0ZWRDb3B5
KCldICgpIG11dGFibGUgewotICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07
CisgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CiAgICAgICAgIG1fc2Vy
dmVyLT5yZW5hbWVPYmplY3RTdG9yZShyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVy
LCBuZXdOYW1lKTsKICAgICB9KTsKIH0KQEAgLTMxMyw3ICszMTMsNyBAQCB2b2lkIEluUHJvY2Vz
c0lEQlNlcnZlcjo6cmVuYW1lT2JqZWN0U3RvcmUoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERh
dGEmIHJlcXVlcwogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmNsZWFyT2JqZWN0U3RvcmUoY29u
c3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCB1aW50NjRfdCBvYmplY3RT
dG9yZUlkZW50aWZpZXIpCiB7CiAgICAgZGlzcGF0Y2hUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3REYXRhID0gcmVxdWVzdERhdGEuaXNvbGF0ZWRDb3B5
KCksIG9iamVjdFN0b3JlSWRlbnRpZmllcl0gewotICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9z
ZXJ2ZXJMb2NrIH07CisgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CiAg
ICAgICAgIG1fc2VydmVyLT5jbGVhck9iamVjdFN0b3JlKHJlcXVlc3REYXRhLCBvYmplY3RTdG9y
ZUlkZW50aWZpZXIpOwogICAgIH0pOwogfQpAQCAtMzIxLDcgKzMyMSw3IEBAIHZvaWQgSW5Qcm9j
ZXNzSURCU2VydmVyOjpjbGVhck9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3RE
YXRhJiByZXF1ZXN0CiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6Y3JlYXRlSW5kZXgoY29uc3Qg
V2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJJbmRleEluZm8m
IGluZm8pCiB7CiAgICAgZGlzcGF0Y2hUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIHJlcXVlc3REYXRhID0gcmVxdWVzdERhdGEuaXNvbGF0ZWRDb3B5KCksIGluZm8g
PSBpbmZvLmlzb2xhdGVkQ29weSgpXSB7Ci0gICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZl
ckxvY2sgfTsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKICAgICAg
ICAgbV9zZXJ2ZXItPmNyZWF0ZUluZGV4KHJlcXVlc3REYXRhLCBpbmZvKTsKICAgICB9KTsKIH0K
QEAgLTMyOSw3ICszMjksNyBAQCB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6Y3JlYXRlSW5kZXgo
Y29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLAogdm9pZCBJblByb2Nl
c3NJREJTZXJ2ZXI6OmRlbGV0ZUluZGV4KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiBy
ZXF1ZXN0RGF0YSwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IGluZGV4TmFtZSkKIHsKICAgICBkaXNwYXRjaFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgcmVxdWVzdERhdGEgPSByZXF1ZXN0RGF0YS5pc29sYXRlZENvcHkoKSwg
b2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleE5hbWUgPSBpbmRleE5hbWUuaXNvbGF0ZWRDb3B5
KCldIHsKLSAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OworICAgICAgICBM
b2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOwogICAgICAgICBtX3NlcnZlci0+ZGVsZXRl
SW5kZXgocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhOYW1lKTsKICAg
ICB9KTsKIH0KQEAgLTMzNyw3ICszMzcsNyBAQCB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGVs
ZXRlSW5kZXgoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLAogdm9p
ZCBJblByb2Nlc3NJREJTZXJ2ZXI6OnJlbmFtZUluZGV4KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVl
c3REYXRhJiByZXF1ZXN0RGF0YSwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1aW50
NjRfdCBpbmRleElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSkKIHsKICAgICBkaXNw
YXRjaFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdERh
dGEgPSByZXF1ZXN0RGF0YS5pc29sYXRlZENvcHkoKSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBp
bmRleElkZW50aWZpZXIsIG5ld05hbWUgPSBuZXdOYW1lLmlzb2xhdGVkQ29weSgpXSB7Ci0gICAg
ICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKKyAgICAgICAgTG9ja0hvbGRlciBs
b2NrZXIobV9zZXJ2ZXJMb2NrKTsKICAgICAgICAgbV9zZXJ2ZXItPnJlbmFtZUluZGV4KHJlcXVl
c3REYXRhLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4SWRlbnRpZmllciwgbmV3TmFtZSk7
CiAgICAgfSk7CiB9CkBAIC0zNDUsNyArMzQ1LDcgQEAgdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6
OnJlbmFtZUluZGV4KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwK
IHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpwdXRPckFkZChjb25zdCBXZWJDb3JlOjpJREJSZXF1
ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQktleURhdGEmIGtleURhdGEsIGNvbnN0IElE
QlZhbHVlJiB2YWx1ZSwgY29uc3QgSW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUg
b3ZlcndyaXRlTW9kZSkKIHsKICAgICBkaXNwYXRjaFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdERhdGEgPSByZXF1ZXN0RGF0YS5pc29sYXRlZENvcHko
KSwga2V5RGF0YSA9IGtleURhdGEuaXNvbGF0ZWRDb3B5KCksIHZhbHVlID0gdmFsdWUuaXNvbGF0
ZWRDb3B5KCksIG92ZXJ3cml0ZU1vZGVdIHsKLSAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fc2Vy
dmVyTG9jayB9OworICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOwogICAg
ICAgICBtX3NlcnZlci0+cHV0T3JBZGQocmVxdWVzdERhdGEsIGtleURhdGEsIHZhbHVlLCBvdmVy
d3JpdGVNb2RlKTsKICAgICB9KTsKIH0KQEAgLTM1Myw3ICszNTMsNyBAQCB2b2lkIEluUHJvY2Vz
c0lEQlNlcnZlcjo6cHV0T3JBZGQoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVl
c3REYXRhLCBjbwogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmdldFJlY29yZChjb25zdCBXZWJD
b3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQkdldFJlY29yZERhdGEm
IGdldFJlY29yZERhdGEpCiB7CiAgICAgZGlzcGF0Y2hUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3REYXRhID0gcmVxdWVzdERhdGEuaXNvbGF0ZWRDb3B5
KCksIGdldFJlY29yZERhdGEgPSBnZXRSZWNvcmREYXRhLmlzb2xhdGVkQ29weSgpXSB7Ci0gICAg
ICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKKyAgICAgICAgTG9ja0hvbGRlciBs
b2NrZXIobV9zZXJ2ZXJMb2NrKTsKICAgICAgICAgbV9zZXJ2ZXItPmdldFJlY29yZChyZXF1ZXN0
RGF0YSwgZ2V0UmVjb3JkRGF0YSk7CiAgICAgfSk7CiB9CkBAIC0zNjEsNyArMzYxLDcgQEAgdm9p
ZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmdldFJlY29yZChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0
RGF0YSYgcmVxdWVzdERhdGEsIGMKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpnZXRBbGxSZWNv
cmRzKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURC
R2V0QWxsUmVjb3Jkc0RhdGEmIGdldEFsbFJlY29yZHNEYXRhKQogewogICAgIGRpc3BhdGNoVGFz
ayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0RGF0YSA9IHJl
cXVlc3REYXRhLmlzb2xhdGVkQ29weSgpLCBnZXRBbGxSZWNvcmRzRGF0YSA9IGdldEFsbFJlY29y
ZHNEYXRhLmlzb2xhdGVkQ29weSgpXSB7Ci0gICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZl
ckxvY2sgfTsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKICAgICAg
ICAgbV9zZXJ2ZXItPmdldEFsbFJlY29yZHMocmVxdWVzdERhdGEsIGdldEFsbFJlY29yZHNEYXRh
KTsKICAgICB9KTsKIH0KQEAgLTM2OSw3ICszNjksNyBAQCB2b2lkIEluUHJvY2Vzc0lEQlNlcnZl
cjo6Z2V0QWxsUmVjb3Jkcyhjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERh
dAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmdldENvdW50KGNvbnN0IFdlYkNvcmU6OklEQlJl
cXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiBrZXlSYW5nZURh
dGEpCiB7CiAgICAgZGlzcGF0Y2hUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIHJlcXVlc3REYXRhID0gcmVxdWVzdERhdGEuaXNvbGF0ZWRDb3B5KCksIGtleVJhbmdl
RGF0YSA9IGtleVJhbmdlRGF0YS5pc29sYXRlZENvcHkoKV0gewotICAgICAgICBMb2NrZXIgbG9j
a2VyIHsgbV9zZXJ2ZXJMb2NrIH07CisgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVy
TG9jayk7CiAgICAgICAgIG1fc2VydmVyLT5nZXRDb3VudChyZXF1ZXN0RGF0YSwga2V5UmFuZ2VE
YXRhKTsKICAgICB9KTsKIH0KQEAgLTM3Nyw3ICszNzcsNyBAQCB2b2lkIEluUHJvY2Vzc0lEQlNl
cnZlcjo6Z2V0Q291bnQoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRh
LCBjbwogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRlbGV0ZVJlY29yZChjb25zdCBXZWJDb3Jl
OjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQktleVJhbmdlRGF0YSYga2V5
UmFuZ2VEYXRhKQogewogICAgIGRpc3BhdGNoVGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCByZXF1ZXN0RGF0YSA9IHJlcXVlc3REYXRhLmlzb2xhdGVkQ29weSgpLCBr
ZXlSYW5nZURhdGEgPSBrZXlSYW5nZURhdGEuaXNvbGF0ZWRDb3B5KCldIHsKLSAgICAgICAgTG9j
a2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OworICAgICAgICBMb2NrSG9sZGVyIGxvY2tlciht
X3NlcnZlckxvY2spOwogICAgICAgICBtX3NlcnZlci0+ZGVsZXRlUmVjb3JkKHJlcXVlc3REYXRh
LCBrZXlSYW5nZURhdGEpOwogICAgIH0pOwogfQpAQCAtMzg1LDcgKzM4NSw3IEBAIHZvaWQgSW5Q
cm9jZXNzSURCU2VydmVyOjpkZWxldGVSZWNvcmQoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERh
dGEmIHJlcXVlc3REYXRhCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6b3BlbkN1cnNvcihjb25z
dCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQkN1cnNvcklu
Zm8mIGluZm8pCiB7CiAgICAgZGlzcGF0Y2hUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIHJlcXVlc3REYXRhID0gcmVxdWVzdERhdGEuaXNvbGF0ZWRDb3B5KCksIGlu
Zm8gPSBpbmZvLmlzb2xhdGVkQ29weSgpXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgTG9ja2VyIGxv
Y2tlciB7IG1fc2VydmVyTG9jayB9OworICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZl
ckxvY2spOwogICAgICAgICBtX3NlcnZlci0+b3BlbkN1cnNvcihyZXF1ZXN0RGF0YSwgaW5mbyk7
CiAgICAgfSk7CiB9CkBAIC0zOTMsNyArMzkzLDcgQEAgdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6
Om9wZW5DdXJzb3IoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLAog
dm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6Oml0ZXJhdGVDdXJzb3IoY29uc3QgV2ViQ29yZTo6SURC
UmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJJdGVyYXRlQ3Vyc29yRGF0YSYgZGF0
YSkKIHsKICAgICBkaXNwYXRjaFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgcmVxdWVzdERhdGEgPSByZXF1ZXN0RGF0YS5pc29sYXRlZENvcHkoKSwgZGF0YSA9IGRh
dGEuaXNvbGF0ZWRDb3B5KCldIHsKLSAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9j
ayB9OworICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOwogICAgICAgICBt
X3NlcnZlci0+aXRlcmF0ZUN1cnNvcihyZXF1ZXN0RGF0YSwgZGF0YSk7CiAgICAgfSk7CiB9CkBA
IC00MDEsNyArNDAxLDcgQEAgdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6Oml0ZXJhdGVDdXJzb3Io
Y29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXQKIHZvaWQgSW5Qcm9jZXNz
SURCU2VydmVyOjplc3RhYmxpc2hUcmFuc2FjdGlvbih1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rp
b25JZGVudGlmaWVyLCBjb25zdCBJREJUcmFuc2FjdGlvbkluZm8mIGluZm8pCiB7CiAgICAgZGlz
cGF0Y2hUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGRhdGFiYXNl
Q29ubmVjdGlvbklkZW50aWZpZXIsIGluZm8gPSBpbmZvLmlzb2xhdGVkQ29weSgpXSB7Ci0gICAg
ICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKKyAgICAgICAgTG9ja0hvbGRlciBs
b2NrZXIobV9zZXJ2ZXJMb2NrKTsKICAgICAgICAgbV9zZXJ2ZXItPmVzdGFibGlzaFRyYW5zYWN0
aW9uKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGluZm8pOwogICAgIH0pOwogfQpAQCAt
NDM3LDcgKzQzNyw3IEBAIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpub3RpZnlPcGVuREJSZXF1
ZXN0QmxvY2tlZChjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkCiB2b2lkIEluUHJvY2Vzc0lE
QlNlcnZlcjo6ZGF0YWJhc2VDb25uZWN0aW9uUGVuZGluZ0Nsb3NlKHVpbnQ2NF90IGRhdGFiYXNl
Q29ubmVjdGlvbklkZW50aWZpZXIpCiB7CiAgICAgZGlzcGF0Y2hUYXNrKFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXJdIHsK
LSAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OworICAgICAgICBMb2NrSG9s
ZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOwogICAgICAgICBtX3NlcnZlci0+ZGF0YWJhc2VDb25u
ZWN0aW9uUGVuZGluZ0Nsb3NlKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpOwogICAgIH0p
OwogfQpAQCAtNDQ1LDcgKzQ0NSw3IEBAIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkYXRhYmFz
ZUNvbm5lY3Rpb25QZW5kaW5nQ2xvc2UodWludDY0X3QgZGF0YWJhc2VDb25uZWN0CiB2b2lkIElu
UHJvY2Vzc0lEQlNlcnZlcjo6ZGF0YWJhc2VDb25uZWN0aW9uQ2xvc2VkKHVpbnQ2NF90IGRhdGFi
YXNlQ29ubmVjdGlvbklkZW50aWZpZXIpCiB7CiAgICAgZGlzcGF0Y2hUYXNrKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXJd
IHsKLSAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OworICAgICAgICBMb2Nr
SG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOwogICAgICAgICBtX3NlcnZlci0+ZGF0YWJhc2VD
b25uZWN0aW9uQ2xvc2VkKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpOwogICAgIH0pOwog
fQpAQCAtNDUzLDcgKzQ1Myw3IEBAIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkYXRhYmFzZUNv
bm5lY3Rpb25DbG9zZWQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlCiB2b2lkIEluUHJv
Y2Vzc0lEQlNlcnZlcjo6YWJvcnRPcGVuQW5kVXBncmFkZU5lZWRlZCh1aW50NjRfdCBkYXRhYmFz
ZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZp
ZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllcikKIHsKICAgICBkaXNwYXRjaFRhc2soW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmll
ciwgdHJhbnNhY3Rpb25JZGVudGlmaWVyID0gdHJhbnNhY3Rpb25JZGVudGlmaWVyLmlzb2xhdGVk
Q29weSgpXSB7Ci0gICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKKyAgICAg
ICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKICAgICAgICAgbV9zZXJ2ZXItPmFi
b3J0T3BlbkFuZFVwZ3JhZGVOZWVkZWQoZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgdHJh
bnNhY3Rpb25JZGVudGlmaWVyKTsKICAgICB9KTsKIH0KQEAgLTQ2MSw3ICs0NjEsNyBAQCB2b2lk
IEluUHJvY2Vzc0lEQlNlcnZlcjo6YWJvcnRPcGVuQW5kVXBncmFkZU5lZWRlZCh1aW50NjRfdCBk
YXRhYmFzZUNvbm5lY3Rpb25JZAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZEZpcmVWZXJz
aW9uQ2hhbmdlRXZlbnQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29u
c3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgY29u
c3QgSW5kZXhlZERCOjpDb25uZWN0aW9uQ2xvc2VkT25CZWhhbGZPZlNlcnZlciBjb25uZWN0aW9u
Q2xvc2VkKQogewogICAgIGRpc3BhdGNoVGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCByZXF1ZXN0SWRlbnRpZmll
ciA9IHJlcXVlc3RJZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpLCBjb25uZWN0aW9uQ2xvc2VkXSB7
Ci0gICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKKyAgICAgICAgTG9ja0hv
bGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKICAgICAgICAgbV9zZXJ2ZXItPmRpZEZpcmVWZXJz
aW9uQ2hhbmdlRXZlbnQoZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgcmVxdWVzdElkZW50
aWZpZXIsIGNvbm5lY3Rpb25DbG9zZWQpOwogICAgIH0pOwogfQpAQCAtNDY5LDcgKzQ2OSw3IEBA
IHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KHVpbnQ2
NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6b3BlbkRC
UmVxdWVzdENhbmNlbGxlZChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERh
dGEpCiB7CiAgICAgZGlzcGF0Y2hUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIHJlcXVlc3REYXRhID0gcmVxdWVzdERhdGEuaXNvbGF0ZWRDb3B5KCldIHsKLSAgICAg
ICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OworICAgICAgICBMb2NrSG9sZGVyIGxv
Y2tlcihtX3NlcnZlckxvY2spOwogICAgICAgICBtX3NlcnZlci0+b3BlbkRCUmVxdWVzdENhbmNl
bGxlZChyZXF1ZXN0RGF0YSk7CiAgICAgfSk7CiB9CkBAIC00NzcsNyArNDc3LDcgQEAgdm9pZCBJ
blByb2Nlc3NJREJTZXJ2ZXI6Om9wZW5EQlJlcXVlc3RDYW5jZWxsZWQoY29uc3QgV2ViQ29yZTo6
SURCUmVxdWVzdERhdGEmIHIKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpnZXRBbGxEYXRhYmFz
ZU5hbWVzQW5kVmVyc2lvbnMoY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiBy
ZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4pCiB7CiAgICAgZGlz
cGF0Y2hUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGlkZW50aWZp
ZXIgPSBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+aWRlbnRpZmllcigpLCByZXF1ZXN0SWRlbnRpZmll
ciwgb3JpZ2luID0gb3JpZ2luLmlzb2xhdGVkQ29weSgpXSB7Ci0gICAgICAgIExvY2tlciBsb2Nr
ZXIgeyBtX3NlcnZlckxvY2sgfTsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJM
b2NrKTsKICAgICAgICAgbV9zZXJ2ZXItPmdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhp
ZGVudGlmaWVyLCByZXF1ZXN0SWRlbnRpZmllciwgb3JpZ2luKTsKICAgICB9KTsKIH0KQEAgLTQ5
Miw3ICs0OTIsNyBAQCB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkR2V0QWxsRGF0YWJhc2VO
YW1lc0FuZFZlcnNpb25zKGNvbnN0IFdlYkNvcmU6OklEQlJlcwogdm9pZCBJblByb2Nlc3NJREJT
ZXJ2ZXI6OmNsb3NlQW5kRGVsZXRlRGF0YWJhc2VzTW9kaWZpZWRTaW5jZShXYWxsVGltZSBtb2Rp
ZmljYXRpb25UaW1lKQogewogICAgIGRpc3BhdGNoVGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCBtb2RpZmljYXRpb25UaW1lXSB7Ci0gICAgICAgIExvY2tlciBsb2Nr
ZXIgeyBtX3NlcnZlckxvY2sgfTsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJM
b2NrKTsKICAgICAgICAgbV9zZXJ2ZXItPmNsb3NlQW5kRGVsZXRlRGF0YWJhc2VzTW9kaWZpZWRT
aW5jZShtb2RpZmljYXRpb25UaW1lKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuY3BwIGIvU291cmNlL1dlYktpdExl
Z2FjeS9TdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5jcHAKaW5kZXggZjZhNmU5NzU3YjRhZmNhYjg5
ODRhYmExZjUyODBiNzk4YjlhYTQ3OS4uOTFiNGY3YWMzNDYzMzEzZTEwZWE3ZjMyMmFlODg3YThl
ODQ0ZTRlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VB
cmVhU3luYy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VBcmVh
U3luYy5jcHAKQEAgLTE2Niw3ICsxNjYsNyBAQCB2b2lkIFN0b3JhZ2VBcmVhU3luYzo6c3luY1Rp
bWVyRmlyZWQoKQogCiAgICAgYm9vbCBwYXJ0aWFsU3luYyA9IGZhbHNlOwogICAgIHsKLSAgICAg
ICAgTG9ja2VyIGxvY2tlciB7IG1fc3luY0xvY2sgfTsKKyAgICAgICAgTG9ja0hvbGRlciBsb2Nr
ZXIobV9zeW5jTG9jayk7CiAKICAgICAgICAgLy8gRG8gbm90IHNjaGVkdWxlIGFub3RoZXIgc3lu
YyBpZiB3ZSdyZSBzdGlsbCB0cnlpbmcgdG8gY29tcGxldGUgdGhlCiAgICAgICAgIC8vIHByZXZp
b3VzIG9uZS4gQnV0LCBpZiB3ZSdyZSBzaHV0dGluZyBkb3duLCBzY2hlZHVsZSBpdCBhbnl3YXku
CkBAIC00NjksNyArNDY5LDcgQEAgdm9pZCBTdG9yYWdlQXJlYVN5bmM6OnBlcmZvcm1TeW5jKCkK
ICAgICBib29sIGNsZWFySXRlbXM7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gaXRlbXM7
CiAgICAgewotICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9zeW5jTG9jayB9OworICAgICAgICBM
b2NrSG9sZGVyIGxvY2tlcihtX3N5bmNMb2NrKTsKIAogICAgICAgICBBU1NFUlQobV9zeW5jU2No
ZWR1bGVkKTsKIApAQCAtNDg0LDcgKzQ4NCw3IEBAIHZvaWQgU3RvcmFnZUFyZWFTeW5jOjpwZXJm
b3JtU3luYygpCiAgICAgc3luYyhjbGVhckl0ZW1zLCBpdGVtcyk7CiAKICAgICB7Ci0gICAgICAg
IExvY2tlciBsb2NrZXIgeyBtX3N5bmNMb2NrIH07CisgICAgICAgIExvY2tIb2xkZXIgbG9ja2Vy
KG1fc3luY0xvY2spOwogICAgICAgICBtX3N5bmNJblByb2dyZXNzID0gZmFsc2U7CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIu
Y3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcAppbmRl
eCAxZGU4ZTQ2ODgxZmNjMTEzYTZiZmJiZTQwYTg5ZGI0ZTVmNDA2NTg0Li40OWEzMzJlMjFhNDg1
OThkZDQ1NzQ3M2QxNTNmOWJlYWYwNmVkMDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
U3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAKQEAgLTE2Niw3ICsxNjYsNyBAQCB2b2lkIFN0b3Jh
Z2VUcmFja2VyOjppbXBvcnRPcmlnaW5JZGVudGlmaWVycygpCiAKIHZvaWQgU3RvcmFnZVRyYWNr
ZXI6OmZpbmlzaGVkSW1wb3J0aW5nT3JpZ2luSWRlbnRpZmllcnMoKQogewotICAgIExvY2tlciBs
b2NrZXIgeyBtX2RhdGFiYXNlTXV0ZXggfTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2RhdGFi
YXNlTXV0ZXgpOwogICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgbV9jbGllbnQtPmRpZEZpbmlz
aExvYWRpbmdPcmlnaW5zKCk7CiB9CkBAIC0xNzgsNyArMTc4LDcgQEAgdm9pZCBTdG9yYWdlVHJh
Y2tlcjo6c3luY0ltcG9ydE9yaWdpbklkZW50aWZpZXJzKCkKICAgICBBU1NFUlQoIWlzTWFpblRo
cmVhZCgpKTsKIAogICAgIHsKLSAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fZGF0YWJhc2VNdXRl
eCB9OworICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2RhdGFiYXNlTXV0ZXgpOwogCiAgICAg
ICAgIC8vIERvbid0IGZvcmNlIGNyZWF0aW9uIG9mIFN0b3JhZ2VUcmFja2VyJ3MgZGIganVzdCBi
ZWNhdXNlIGEgdHJhY2tlcgogICAgICAgICAvLyB3YXMgaW5pdGlhbGl6ZWQuIEl0IHdpbGwgYmUg
Y3JlYXRlZCBpZiBsb2NhbCBzdG9yYWdlIGRicyBhcmUgZm91bmQKQEAgLTE5OCw3ICsxOTgsNyBA
QCB2b2lkIFN0b3JhZ2VUcmFja2VyOjpzeW5jSW1wb3J0T3JpZ2luSWRlbnRpZmllcnMoKQogICAg
ICAgICAgICAgaW50IHJlc3VsdDsKICAgICAgICAgICAgIAogICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIExvY2tlciBsb2NrT3JpZ2lucyB7IG1fb3JpZ2luU2V0TXV0ZXggfTsKKyAgICAg
ICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tPcmlnaW5zKG1fb3JpZ2luU2V0TXV0ZXgpOwogICAg
ICAgICAgICAgICAgIHdoaWxlICgocmVzdWx0ID0gc3RhdGVtZW50LT5zdGVwKCkpID09IFNRTElU
RV9ST1cpCiAgICAgICAgICAgICAgICAgICAgIG1fb3JpZ2luU2V0LmFkZChzdGF0ZW1lbnQtPmNv
bHVtblRleHQoMCkuaXNvbGF0ZWRDb3B5KCkpOwogICAgICAgICAgICAgfQpAQCAtMjEzLDEwICsy
MTMsMTAgQEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6c3luY0ltcG9ydE9yaWdpbklkZW50aWZpZXJz
KCkKICAgICBzeW5jRmlsZVN5c3RlbUFuZFRyYWNrZXJEYXRhYmFzZSgpOwogICAgIAogICAgIHsK
LSAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fY2xpZW50TXV0ZXggfTsKKyAgICAgICAgTG9ja0hv
bGRlciBsb2NrZXIobV9jbGllbnRNdXRleCk7CiAKICAgICAgICAgaWYgKG1fY2xpZW50KSB7Ci0g
ICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9vcmlnaW5TZXRNdXRleCB9OworICAgICAgICAg
ICAgTG9ja0hvbGRlciBsb2NrZXIobV9vcmlnaW5TZXRNdXRleCk7CiAgICAgICAgICAgICBPcmln
aW5TZXQ6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fb3JpZ2luU2V0LmVuZCgpOwogICAgICAgICAg
ICAgZm9yIChPcmlnaW5TZXQ6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9vcmlnaW5TZXQuYmVnaW4o
KTsgaXQgIT0gZW5kOyArK2l0KQogICAgICAgICAgICAgICAgIG1fY2xpZW50LT5kaXNwYXRjaERp
ZE1vZGlmeU9yaWdpbigqaXQpOwpAQCAtMjM4LDcgKzIzOCw3IEBAIHZvaWQgU3RvcmFnZVRyYWNr
ZXI6OnN5bmNGaWxlU3lzdGVtQW5kVHJhY2tlckRhdGFiYXNlKCkKIAogICAgIFZlY3RvcjxTdHJp
bmc+IGZpbGVOYW1lczsKICAgICB7Ci0gICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2RhdGFiYXNl
TXV0ZXggfTsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9kYXRhYmFzZU11dGV4KTsKICAg
ICAgICAgZmlsZU5hbWVzID0gRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShtX3N0b3JhZ2VEaXJl
Y3RvcnlQYXRoKTsKICAgICB9CiAKQEAgLTI0Niw3ICsyNDYsNyBAQCB2b2lkIFN0b3JhZ2VUcmFj
a2VyOjpzeW5jRmlsZVN5c3RlbUFuZFRyYWNrZXJEYXRhYmFzZSgpCiAgICAgLy8gZGVsZXRpb25z
IGZyb20gZGlzayBhbmQgZnJvbSBtX29yaWdpblNldC4KICAgICBPcmlnaW5TZXQgb3JpZ2luU2V0
Q29weTsKICAgICB7Ci0gICAgICAgIExvY2tlciBsb2NrZXIgeyBtX29yaWdpblNldE11dGV4IH07
CisgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fb3JpZ2luU2V0TXV0ZXgpOwogICAgICAgICBm
b3IgKE9yaWdpblNldDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX29yaWdpblNldC5iZWdpbigpLCBl
bmQgPSBtX29yaWdpblNldC5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KQogICAgICAgICAgICAgb3Jp
Z2luU2V0Q29weS5hZGQoKCppdCkuaXNvbGF0ZWRDb3B5KCkpOwogICAgIH0KQEAgLTI4NSw3ICsy
ODUsNyBAQCB2b2lkIFN0b3JhZ2VUcmFja2VyOjpzZXRPcmlnaW5EZXRhaWxzKGNvbnN0IFN0cmlu
ZyYgb3JpZ2luSWRlbnRpZmllciwgY29uc3QgU3RyaQogICAgICAgICByZXR1cm47CiAKICAgICB7
Ci0gICAgICAgIExvY2tlciBsb2NrZXIgeyBtX29yaWdpblNldE11dGV4IH07CisgICAgICAgIExv
Y2tIb2xkZXIgbG9ja2VyKG1fb3JpZ2luU2V0TXV0ZXgpOwogCiAgICAgICAgIGlmIChtX29yaWdp
blNldC5jb250YWlucyhvcmlnaW5JZGVudGlmaWVyKSkKICAgICAgICAgICAgIHJldHVybjsKQEAg
LTMwOSw3ICszMDksNyBAQCB2b2lkIFN0b3JhZ2VUcmFja2VyOjpzeW5jU2V0T3JpZ2luRGV0YWls
cyhjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIsIGNvbnN0CiAKICAgICBTUUxpdGVUcmFu
c2FjdGlvbkluUHJvZ3Jlc3NBdXRvQ291bnRlciB0cmFuc2FjdGlvbkNvdW50ZXI7CiAKLSAgICBM
b2NrZXIgbG9ja2VyIHsgbV9kYXRhYmFzZU11dGV4IH07CisgICAgTG9ja0hvbGRlciBsb2NrZXIo
bV9kYXRhYmFzZU11dGV4KTsKIAogICAgIG9wZW5UcmFja2VyRGF0YWJhc2UodHJ1ZSk7CiAgICAg
CkBAIC0zMjksMTMgKzMyOSwxMyBAQCB2b2lkIFN0b3JhZ2VUcmFja2VyOjpzeW5jU2V0T3JpZ2lu
RGV0YWlscyhjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIsIGNvbnN0CiAgICAgICAgIExP
R19FUlJPUigiVW5hYmxlIHRvIGVzdGFibGlzaCBvcmlnaW4gJyVzJyBpbiB0aGUgdHJhY2tlciIs
IG9yaWdpbklkZW50aWZpZXIuYXNjaWkoKS5kYXRhKCkpOwogCiAgICAgewotICAgICAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9vcmlnaW5TZXRNdXRleCB9OworICAgICAgICBMb2NrSG9sZGVyIGxvY2tl
cihtX29yaWdpblNldE11dGV4KTsKICAgICAgICAgaWYgKCFtX29yaWdpblNldC5jb250YWlucyhv
cmlnaW5JZGVudGlmaWVyKSkKICAgICAgICAgICAgIG1fb3JpZ2luU2V0LmFkZChvcmlnaW5JZGVu
dGlmaWVyKTsKICAgICB9CiAKICAgICB7Ci0gICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2NsaWVu
dE11dGV4IH07CisgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fY2xpZW50TXV0ZXgpOwogICAg
ICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgICAgICBtX2NsaWVudC0+ZGlzcGF0Y2hEaWRNb2Rp
ZnlPcmlnaW4ob3JpZ2luSWRlbnRpZmllcik7CiAgICAgfQpAQCAtMzQ4LDcgKzM0OCw3IEBAIFZl
Y3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+IFN0b3JhZ2VUcmFja2VyOjpvcmlnaW5zKCkKICAgICBp
ZiAoIW1faXNBY3RpdmUpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9vcmlnaW5TZXRNdXRleCB9OworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fb3JpZ2luU2V0
TXV0ZXgpOwogCiAgICAgVmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4gcmVzdWx0OwogICAgIHJl
c3VsdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fb3JpZ2luU2V0LnNpemUoKSk7CkBAIC0zNzMs
NyArMzczLDcgQEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6ZGVsZXRlQWxsT3JpZ2lucygpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIHsKLSAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fb3JpZ2luU2V0
TXV0ZXggfTsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9vcmlnaW5TZXRNdXRleCk7CiAg
ICAgICAgIHdpbGxEZWxldGVBbGxPcmlnaW5zKCk7CiAgICAgICAgIG1fb3JpZ2luU2V0LmNsZWFy
KCk7CiAgICAgfQpAQCAtMzk4LDcgKzM5OCw3IEBAIHZvaWQgU3RvcmFnZVRyYWNrZXI6OnN5bmNE
ZWxldGVBbGxPcmlnaW5zKCkKIAogICAgIFNRTGl0ZVRyYW5zYWN0aW9uSW5Qcm9ncmVzc0F1dG9D
b3VudGVyIHRyYW5zYWN0aW9uQ291bnRlcjsKICAgICAKLSAgICBMb2NrZXIgbG9ja2VyIHsgbV9k
YXRhYmFzZU11dGV4IH07CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9kYXRhYmFzZU11dGV4KTsK
ICAgICAKICAgICBvcGVuVHJhY2tlckRhdGFiYXNlKGZhbHNlKTsKICAgICBpZiAoIW1fZGF0YWJh
c2UuaXNPcGVuKCkpCkBAIC00MTgsNyArNDE4LDcgQEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6c3lu
Y0RlbGV0ZUFsbE9yaWdpbnMoKQogICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKHN0YXRl
bWVudC0+Y29sdW1uVGV4dCgxKSk7CiAKICAgICAgICAgewotICAgICAgICAgICAgTG9ja2VyIGxv
Y2tlciB7IG1fY2xpZW50TXV0ZXggfTsKKyAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1f
Y2xpZW50TXV0ZXgpOwogICAgICAgICAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICAgICAgICAg
IG1fY2xpZW50LT5kaXNwYXRjaERpZE1vZGlmeU9yaWdpbihzdGF0ZW1lbnQtPmNvbHVtblRleHQo
MCkpOwogICAgICAgICB9CkBAIC00ODUsNyArNDg1LDcgQEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6
ZGVsZXRlT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luKQogICAgIFN0cmlu
ZyBvcmlnaW5JZCA9IG9yaWdpbi5kYXRhYmFzZUlkZW50aWZpZXIoKTsKICAgICAKICAgICB7Ci0g
ICAgICAgIExvY2tlciBsb2NrZXIgeyBtX29yaWdpblNldE11dGV4IH07CisgICAgICAgIExvY2tI
b2xkZXIgbG9ja2VyKG1fb3JpZ2luU2V0TXV0ZXgpOwogICAgICAgICB3aWxsRGVsZXRlT3JpZ2lu
KG9yaWdpbklkKTsKICAgICAgICAgbV9vcmlnaW5TZXQucmVtb3ZlKG9yaWdpbklkKTsKICAgICB9
CkBAIC01MDEsNyArNTAxLDcgQEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6c3luY0RlbGV0ZU9yaWdp
bihjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIpCiAKICAgICBTUUxpdGVUcmFuc2FjdGlv
bkluUHJvZ3Jlc3NBdXRvQ291bnRlciB0cmFuc2FjdGlvbkNvdW50ZXI7CiAKLSAgICBMb2NrZXIg
bG9ja2VyIHsgbV9kYXRhYmFzZU11dGV4IH07CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9kYXRh
YmFzZU11dGV4KTsKICAgICAKICAgICBpZiAoIWNhbkRlbGV0ZU9yaWdpbihvcmlnaW5JZGVudGlm
aWVyKSkgewogICAgICAgICBMT0dfRVJST1IoIkF0dGVtcHRlZCB0byBkZWxldGUgb3JpZ2luICcl
cycgd2hpbGUgaXQgd2FzIGJlaW5nIGNyZWF0ZWRcbiIsIG9yaWdpbklkZW50aWZpZXIuYXNjaWko
KS5kYXRhKCkpOwpAQCAtNTM2LDcgKzUzNiw3IEBAIHZvaWQgU3RvcmFnZVRyYWNrZXI6OnN5bmNE
ZWxldGVPcmlnaW4oY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyKQogICAgIAogICAgIGJv
b2wgc2hvdWxkRGVsZXRlVHJhY2tlckZpbGVzID0gZmFsc2U7CiAgICAgewotICAgICAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9vcmlnaW5TZXRNdXRleCB9OworICAgICAgICBMb2NrSG9sZGVyIGxvY2tl
cihtX29yaWdpblNldE11dGV4KTsKICAgICAgICAgbV9vcmlnaW5TZXQucmVtb3ZlKG9yaWdpbklk
ZW50aWZpZXIpOwogICAgICAgICBzaG91bGREZWxldGVUcmFja2VyRmlsZXMgPSBtX29yaWdpblNl
dC5pc0VtcHR5KCk7CiAgICAgfQpAQCAtNTUzLDcgKzU1Myw3IEBAIHZvaWQgU3RvcmFnZVRyYWNr
ZXI6OnN5bmNEZWxldGVPcmlnaW4oY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyKQogICAg
IH0KIAogICAgIHsKLSAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fY2xpZW50TXV0ZXggfTsKKyAg
ICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9jbGllbnRNdXRleCk7CiAgICAgICAgIGlmIChtX2Ns
aWVudCkKICAgICAgICAgICAgIG1fY2xpZW50LT5kaXNwYXRjaERpZE1vZGlmeU9yaWdpbihvcmln
aW5JZGVudGlmaWVyKTsKICAgICB9CkBAIC01NzksNyArNTc5LDcgQEAgdm9pZCBTdG9yYWdlVHJh
Y2tlcjo6d2lsbERlbGV0ZU9yaWdpbihjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIpCiBi
b29sIFN0b3JhZ2VUcmFja2VyOjpjYW5EZWxldGVPcmlnaW4oY29uc3QgU3RyaW5nJiBvcmlnaW5J
ZGVudGlmaWVyKQogewogICAgIEFTU0VSVCghbV9kYXRhYmFzZU11dGV4LnRyeUxvY2soKSk7Ci0g
ICAgTG9ja2VyIGxvY2tlciB7IG1fb3JpZ2luU2V0TXV0ZXggfTsKKyAgICBMb2NrSG9sZGVyIGxv
Y2tlcihtX29yaWdpblNldE11dGV4KTsKICAgICByZXR1cm4gbV9vcmlnaW5zQmVpbmdEZWxldGVk
LmNvbnRhaW5zKG9yaWdpbklkZW50aWZpZXIpOwogfQogCkBAIC01ODgsOSArNTg4LDkgQEAgdm9p
ZCBTdG9yYWdlVHJhY2tlcjo6Y2FuY2VsRGVsZXRpbmdPcmlnaW4oY29uc3QgU3RyaW5nJiBvcmln
aW5JZGVudGlmaWVyKQogICAgIGlmICghbV9pc0FjdGl2ZSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgTG9ja2VyIGxvY2tlciB7IG1fZGF0YWJhc2VNdXRleCB9OworICAgIExvY2tIb2xkZXIgbG9j
a2VyKG1fZGF0YWJhc2VNdXRleCk7CiAgICAgewotICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9v
cmlnaW5TZXRNdXRleCB9OworICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX29yaWdpblNldE11
dGV4KTsKICAgICAgICAgaWYgKCFtX29yaWdpbnNCZWluZ0RlbGV0ZWQuaXNFbXB0eSgpKQogICAg
ICAgICAgICAgbV9vcmlnaW5zQmVpbmdEZWxldGVkLnJlbW92ZShvcmlnaW5JZGVudGlmaWVyKTsK
ICAgICB9CkBAIC02MzQsNyArNjM0LDcgQEAgdWludDY0X3QgU3RvcmFnZVRyYWNrZXI6OmRpc2tV
c2FnZUZvck9yaWdpbihTZWN1cml0eU9yaWdpbiogb3JpZ2luKQogICAgIGlmICghbV9pc0FjdGl2
ZSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBMb2NrZXIgbG9ja2VyIHsgbV9kYXRhYmFzZU11
dGV4IH07CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9kYXRhYmFzZU11dGV4KTsKIAogICAgIFN0
cmluZyBwYXRoID0gZGF0YWJhc2VQYXRoRm9yT3JpZ2luKG9yaWdpbi0+ZGF0YSgpLmRhdGFiYXNl
SWRlbnRpZmllcigpKTsKICAgICBpZiAocGF0aC5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggMzAxMGE2YTg4Yjk1N2M5MDc3OTE0Njg4
OGM2Njg5M2M0YjVkN2IxNy4uNjVkZjhlMzcyYzM0ODU5NzFmNWY1ZWQyOTIwMmJmNGUwNmQ1ZGU3
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMzk1
Nyw3ICszOTU3LDcgQEAgLSAodm9pZClfc3luY2hyb25pemVDdXN0b21GaXhlZFBvc2l0aW9uTGF5
b3V0UmVjdAogCiAgICAgV2ViQ29yZTo6SW50UmVjdCBuZXdSZWN0OwogICAgIHsKLSAgICAgICAg
TG9ja2VyIGxvY2tlciB7IF9wcml2YXRlLT5wZW5kaW5nRml4ZWRQb3NpdGlvbkxheW91dFJlY3RN
dXRleCB9OworICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihfcHJpdmF0ZS0+cGVuZGluZ0ZpeGVk
UG9zaXRpb25MYXlvdXRSZWN0TXV0ZXgpOwogICAgICAgICBpZiAoQ0dSZWN0SXNOdWxsKF9wcml2
YXRlLT5wZW5kaW5nRml4ZWRQb3NpdGlvbkxheW91dFJlY3QpKQogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICBuZXdSZWN0ID0gV2ViQ29yZTo6ZW5jbG9zaW5nSW50UmVjdChfcHJpdmF0ZS0+
cGVuZGluZ0ZpeGVkUG9zaXRpb25MYXlvdXRSZWN0KTsKQEAgLTM5NzEsNyArMzk3MSw3IEBAIC0g
KHZvaWQpX3N5bmNocm9uaXplQ3VzdG9tRml4ZWRQb3NpdGlvbkxheW91dFJlY3QKIC0gKHZvaWQp
X3NldEN1c3RvbUZpeGVkUG9zaXRpb25MYXlvdXRSZWN0SW5XZWJUaHJlYWQ6KENHUmVjdClyZWN0
IHN5bmNocm9uaXplOihCT09MKXN5bmNocm9uaXplCiB7CiAgICAgewotICAgICAgICBMb2NrZXIg
bG9ja2VyIHsgX3ByaXZhdGUtPnBlbmRpbmdGaXhlZFBvc2l0aW9uTGF5b3V0UmVjdE11dGV4IH07
CisgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKF9wcml2YXRlLT5wZW5kaW5nRml4ZWRQb3NpdGlv
bkxheW91dFJlY3RNdXRleCk7CiAgICAgICAgIF9wcml2YXRlLT5wZW5kaW5nRml4ZWRQb3NpdGlv
bkxheW91dFJlY3QgPSByZWN0OwogICAgIH0KICAgICBpZiAoIXN5bmNocm9uaXplKQpAQCAtMzk4
NSw3ICszOTg1LDcgQEAgLSAodm9pZClfc2V0Q3VzdG9tRml4ZWRQb3NpdGlvbkxheW91dFJlY3Q6
KENHUmVjdClyZWN0CiB7CiAgICAgQVNTRVJUKFdlYlRocmVhZElzTG9ja2VkKCkpOwogICAgIHsK
LSAgICAgICAgTG9ja2VyIGxvY2tlciB7IF9wcml2YXRlLT5wZW5kaW5nRml4ZWRQb3NpdGlvbkxh
eW91dFJlY3RNdXRleCB9OworICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihfcHJpdmF0ZS0+cGVu
ZGluZ0ZpeGVkUG9zaXRpb25MYXlvdXRSZWN0TXV0ZXgpOwogICAgICAgICBfcHJpdmF0ZS0+cGVu
ZGluZ0ZpeGVkUG9zaXRpb25MYXlvdXRSZWN0ID0gcmVjdDsKICAgICB9CiAgICAgW3NlbGYgX3N5
bmNocm9uaXplQ3VzdG9tRml4ZWRQb3NpdGlvbkxheW91dFJlY3RdOwpAQCAtMzk5Myw3ICszOTkz
LDcgQEAgLSAodm9pZClfc2V0Q3VzdG9tRml4ZWRQb3NpdGlvbkxheW91dFJlY3Q6KENHUmVjdCly
ZWN0CiAKIC0gKEJPT0wpX2ZldGNoQ3VzdG9tRml4ZWRQb3NpdGlvbkxheW91dFJlY3Q6KE5TUmVj
dCopcmVjdAogewotICAgIExvY2tlciBsb2NrZXIgeyBfcHJpdmF0ZS0+cGVuZGluZ0ZpeGVkUG9z
aXRpb25MYXlvdXRSZWN0TXV0ZXggfTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihfcHJpdmF0ZS0+
cGVuZGluZ0ZpeGVkUG9zaXRpb25MYXlvdXRSZWN0TXV0ZXgpOwogICAgIGlmIChDR1JlY3RJc051
bGwoX3ByaXZhdGUtPnBlbmRpbmdGaXhlZFBvc2l0aW9uTGF5b3V0UmVjdCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lu
cy9QbHVnaW5NYWluVGhyZWFkU2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1BsdWdpbnMvUGx1Z2luTWFpblRocmVhZFNjaGVkdWxlci5jcHAKaW5kZXggMDkyNjY2YmQ1NDg0
Yjg3MTQ5OTEwNzJjZTIyNGRkNTJkMDg1MWMyYi4uNGVjYzMwZGM3ZTc5NjE3OWExMDFkZDAzOTI2
MjY0NzE1NzU0NzhlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lu
cy9QbHVnaW5NYWluVGhyZWFkU2NoZWR1bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9QbHVnaW5zL1BsdWdpbk1haW5UaHJlYWRTY2hlZHVsZXIuY3BwCkBAIC00Miw3ICs0Miw3
IEBAIFBsdWdpbk1haW5UaHJlYWRTY2hlZHVsZXI6OlBsdWdpbk1haW5UaHJlYWRTY2hlZHVsZXIo
KQogCiB2b2lkIFBsdWdpbk1haW5UaHJlYWRTY2hlZHVsZXI6OnNjaGVkdWxlQ2FsbChOUFAgbnBw
LCBNYWluVGhyZWFkRnVuY3Rpb24gZnVuY3Rpb24sIHZvaWQqIHVzZXJEYXRhKQogewotICAgIExv
Y2tlciBsb2NrZXIgeyBtX3F1ZXVlTXV0ZXggfTsKKyAgICBMb2NrSG9sZGVyIGxvY2sobV9xdWV1
ZU11dGV4KTsKIAogICAgIENhbGxRdWV1ZU1hcDo6aXRlcmF0b3IgaXQgPSBtX2NhbGxRdWV1ZU1h
cC5maW5kKG5wcCk7CiAgICAgaWYgKGl0ID09IG1fY2FsbFF1ZXVlTWFwLmVuZCgpKQpAQCAtNjAs
NyArNjAsNyBAQCB2b2lkIFBsdWdpbk1haW5UaHJlYWRTY2hlZHVsZXI6OnNjaGVkdWxlQ2FsbChO
UFAgbnBwLCBNYWluVGhyZWFkRnVuY3Rpb24gZnVuY3RpbwogCiB2b2lkIFBsdWdpbk1haW5UaHJl
YWRTY2hlZHVsZXI6OnJlZ2lzdGVyUGx1Z2luKE5QUCBucHApCiB7Ci0gICAgTG9ja2VyIGxvY2tl
ciB7IG1fcXVldWVNdXRleCB9OworICAgIExvY2tIb2xkZXIgbG9jayhtX3F1ZXVlTXV0ZXgpOwog
CiAgICAgQVNTRVJUKCFtX2NhbGxRdWV1ZU1hcC5jb250YWlucyhucHApKTsKICAgICBtX2NhbGxR
dWV1ZU1hcC5zZXQobnBwLCBEZXF1ZTxDYWxsPigpKTsKQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBQ
bHVnaW5NYWluVGhyZWFkU2NoZWR1bGVyOjpyZWdpc3RlclBsdWdpbihOUFAgbnBwKQogCiB2b2lk
IFBsdWdpbk1haW5UaHJlYWRTY2hlZHVsZXI6OnVucmVnaXN0ZXJQbHVnaW4oTlBQIG5wcCkKIHsK
LSAgICBMb2NrZXIgbG9ja2VyIHsgbV9xdWV1ZU11dGV4IH07CisgICAgTG9ja0hvbGRlciBsb2Nr
KG1fcXVldWVNdXRleCk7CiAKICAgICBBU1NFUlQobV9jYWxsUXVldWVNYXAuY29udGFpbnMobnBw
KSk7CiAgICAgbV9jYWxsUXVldWVNYXAucmVtb3ZlKG5wcCk7CkBAIC03OSw3ICs3OSw3IEBAIHZv
aWQgUGx1Z2luTWFpblRocmVhZFNjaGVkdWxlcjo6ZGlzcGF0Y2hDYWxsc0ZvclBsdWdpbihOUFAg
bnBwLCBjb25zdCBEZXF1ZTxDYWxsCiAgICAgZm9yIChhdXRvJiBjYWxsIDogY2FsbHMpIHsKICAg
ICAgICAgLy8gQ2hlY2sgaWYgdGhlIHBsdWctaW4gaGFzIGJlZW4gZGVzdHJveWVkLgogICAgICAg
ICB7Ci0gICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9xdWV1ZU11dGV4IH07CisgICAgICAg
ICAgICBMb2NrSG9sZGVyIGxvY2sobV9xdWV1ZU11dGV4KTsKICAgICAgICAgICAgIGlmICghbV9j
YWxsUXVldWVNYXAuY29udGFpbnMobnBwKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRl
eCBjNDUyNjQ4OTU0ZTg4NDZmYTMxZGQ3YmY2MjFlZDNlODdlMDk0OWQ4Li43MWUzOWY0NjU0ZTNm
MDA3NDhlYjA2ZmFhMTYzZDRmNTRkNWI2ZWYwIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cK
KysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMDUtMjIgIENvbW1p
dCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgorCisgICAgICAgIFVucmV2aWV3ZWQs
IHJldmVydGluZyByMjc3OTEzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjI2MTQwCisKKyAgICAgICAgQ2F1c2VkIG11bHRpcGxlIGxheW91dC10ZXN0
IGNyYXNoIG9uIG1hYyBkZWJ1ZyBxdWV1ZXMKKworICAgICAgICBSZXZlcnRlZCBjaGFuZ2VzZXQ6
CisKKyAgICAgICAgIlJlcGxhY2UgTG9ja0hvbGRlciB3aXRoIExvY2tlciBpbiBsb2NhbCB2YXJp
YWJsZXMiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjYxMzMKKyAgICAgICAgaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzI3NzkxMwor
CiAyMDIxLTA1LTIyICBKdWxpYW4gR29uemFsZXogIDxqdWxpYW5fYV9nb256YWxlekBhcHBsZS5j
b20+CiAKICAgICAgICAgWyBEZWJ1ZyBdIFRlc3RXZWJLaXRBUEkuSVBDVGVzdGluZ0FQSS5DYW5E
ZXRlY3ROaWxSZXBseUJsb2NrcyAoQVBJLXRlc3RzKSBpcyBhIGNvbnN0YW50IGNyYXNoCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Xb3JrUXVldWUuY3BwIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvV29ya1F1ZXVlLmNwcAppbmRleCBlZjk5NzU3NTIy
ZGQ5ZGE2MTA5Y2RiOTVjN2UzN2FlMWY0ZDNhNTY2Li41NmUwYTA2MmIzZDBjOGJhZGFhMTJlZDA0
OTdjMTVkODgxNmNlZTVlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9Xb3JrUXVldWUuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dvcmtR
dWV1ZS5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgVEVTVChXVEZfV29ya1F1ZXVlLCBTaW1wbGUpCiAg
ICAgaW50IGluaXRpYWxSZWZDb3VudCA9IHF1ZXVlLT5yZWZDb3VudCgpOwogICAgIEVYUEVDVF9F
USgxLCBpbml0aWFsUmVmQ291bnQpOwogCi0gICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9Owor
ICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgcXVldWUtPmRpc3BhdGNoKFsmXSh2
b2lkKSB7CiAgICAgICAgIG1fZnVuY3Rpb25DYWxsT3JkZXIuYXBwZW5kKHNpbXBsZVRlc3RMYWJl
bCk7CiAgICAgICAgIGNhbGxlZFNpbXBsZVRlc3QgPSB0cnVlOwpAQCAtNzMsNyArNzMsNyBAQCBU
RVNUKFdURl9Xb3JrUXVldWUsIFNpbXBsZSkKICAgICB9KTsKIAogICAgIHF1ZXVlLT5kaXNwYXRj
aChbJl0odm9pZCkgewotICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CisgICAgICAg
IExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgICAgIG1fZnVuY3Rpb25DYWxsT3JkZXIu
YXBwZW5kKHRoaXJkVGVzdExhYmVsKTsKICAgICAgICAgY2FsbGVkVGhpcmRUZXN0ID0gdHJ1ZTsK
IApAQCAtMTE0LDcgKzExNCw3IEBAIFRFU1QoV1RGX1dvcmtRdWV1ZSwgVHdvUXVldWVzKQogICAg
IEVYUEVDVF9FUSgxVSwgcXVldWUxLT5yZWZDb3VudCgpKTsKICAgICBFWFBFQ1RfRVEoMVUsIHF1
ZXVlMi0+cmVmQ291bnQoKSk7CiAKLSAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CisgICAg
TG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKICAgICAKICAgICBxdWV1ZTEtPmRpc3BhdGNoKFsm
XSh2b2lkKSB7CiAgICAgICAgIG1fZnVuY3Rpb25DYWxsT3JkZXIuYXBwZW5kKHNpbXBsZVRlc3RM
YWJlbCk7CkBAIC0xMjQsNyArMTI0LDcgQEAgVEVTVChXVEZfV29ya1F1ZXVlLCBUd29RdWV1ZXMp
CiAgICAgcXVldWUyLT5kaXNwYXRjaChbJl0odm9pZCkgewogICAgICAgICBzdGQ6OnRoaXNfdGhy
ZWFkOjpzbGVlcF9mb3IoNTBtcyk7CiAKLSAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9
OworICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOwogCiAgICAgICAgIC8vIFdpbGwg
ZmFpbCBpZiBxdWV1ZTIgdG9vayB0aGUgbXV0ZXggYmVmb3JlIHF1ZXVlMS4KICAgICAgICAgRVhQ
RUNUX1RSVUUoY2FsbGVkVGhpcmRUZXN0KTsKQEAgLTEzNSw3ICsxMzUsNyBAQCBURVNUKFdURl9X
b3JrUXVldWUsIFR3b1F1ZXVlcykKICAgICB9KTsKIAogICAgIHF1ZXVlMS0+ZGlzcGF0Y2goWyZd
KHZvaWQpIHsKLSAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OworICAgICAgICBMb2Nr
SG9sZGVyIGxvY2tlcihtX2xvY2spOwogICAgICAgICBtX2Z1bmN0aW9uQ2FsbE9yZGVyLmFwcGVu
ZCh0aGlyZFRlc3RMYWJlbCk7CiAgICAgICAgIGNhbGxlZFRoaXJkVGVzdCA9IHRydWU7CiAgICAg
ICAgIApAQCAtMTcxLDE3ICsxNzEsMTcgQEAgVEVTVChXVEZfV29ya1F1ZXVlLCBEaXNwYXRjaEFm
dGVyKQogCiAgICAgYXV0byBxdWV1ZSA9IFdvcmtRdWV1ZTo6Y3JlYXRlKCJjb20uYXBwbGUuV2Vi
S2l0LlRlc3QuZGlzcGF0Y2hBZnRlciIpOwogCi0gICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9
OworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CiAKICAgICBxdWV1ZS0+ZGlzcGF0Y2go
WyZdKHZvaWQpIHsKLSAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OworICAgICAgICBM
b2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOwogICAgICAgICBtX2Z1bmN0aW9uQ2FsbE9yZGVyLmFw
cGVuZChzaW1wbGVUZXN0TGFiZWwpOwogICAgICAgICBjYWxsZWRTaW1wbGVUZXN0ID0gdHJ1ZTsK
ICAgICAgICAgbV90ZXN0Q29tcGxldGVkLm5vdGlmeU9uZSgpOwogICAgIH0pOwogCiAgICAgcXVl
dWUtPmRpc3BhdGNoQWZ0ZXIoNTAwX21zLCBbJl0odm9pZCkgewotICAgICAgICBMb2NrZXIgbG9j
a2VyIHsgbV9sb2NrIH07CisgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CiAgICAg
ICAgIG1fZnVuY3Rpb25DYWxsT3JkZXIuYXBwZW5kKGRpc3BhdGNoQWZ0ZXJMYWJlbCk7CiAgICAg
ICAgIGNhbGxlZERpc3BhdGNoQWZ0ZXJUZXN0ID0gdHJ1ZTsKICAgICAgICAgbV9kaXNwYXRjaEFm
dGVyVGVzdENvbXBsZXRlZC5ub3RpZnlPbmUoKTsKQEAgLTIxMSwxMSArMjExLDExIEBAIFRFU1Qo
V1RGX1dvcmtRdWV1ZSwgRGVzdHJveU9uU2VsZikKICAgICBib29sIGNvbXBsZXRlZCA9IGZhbHNl
OwogCiAgICAgewotICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbG9jayB9OworICAgICAgICBMb2Nr
SG9sZGVyIGxvY2tlcihsb2NrKTsKICAgICAgICAgewogICAgICAgICAgICAgYXV0byBxdWV1ZSA9
IFdvcmtRdWV1ZTo6Y3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0LlRlc3QuZGlzcGF0Y2hBZnRlciIp
OwogICAgICAgICAgICAgcXVldWUtPmRpc3BhdGNoQWZ0ZXIoNTAwX21zLCBbJl0odm9pZCkgewot
ICAgICAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBsb2NrIH07CisgICAgICAgICAgICAgICAg
TG9ja0hvbGRlciBsb2NrZXIobG9jayk7CiAgICAgICAgICAgICAgICAgZGlzcGF0Y2hBZnRlclRl
c3RTdGFydGVkLndhaXQobG9jaywgWyZdIHsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0
YXJ0ZWQ7CiAgICAgICAgICAgICAgICAgfSk7CkBAIC0yMjcsNyArMjI3LDcgQEAgVEVTVChXVEZf
V29ya1F1ZXVlLCBEZXN0cm95T25TZWxmKQogICAgICAgICBkaXNwYXRjaEFmdGVyVGVzdFN0YXJ0
ZWQubm90aWZ5T25lKCk7CiAgICAgfQogICAgIHsKLSAgICAgICAgTG9ja2VyIGxvY2tlciB7IGxv
Y2sgfTsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobG9jayk7CiAgICAgICAgIGRpc3BhdGNo
QWZ0ZXJUZXN0Q29tcGxldGVkLndhaXQobG9jaywgWyZdIHsKICAgICAgICAgICAgIHJldHVybiBj
b21wbGV0ZWQ7CiAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvZ2xpYi9Xb3JrUXVldWVHTGliLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL2dsaWIvV29ya1F1ZXVlR0xpYi5jcHAKaW5kZXggMDdhMmFjZDI3ZDhhZmYyZjQ3MjQ5
YWJlM2EwMzc0ZWM2MTBlNTc5NS4uOTkyM2Q2NTgwMGVkNzE0YmE2ODA2YjEzZjdlNTFmZWU1ODAz
NWFkMCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvZ2xpYi9Xb3Jr
UXVldWVHTGliLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9nbGliL1dv
cmtRdWV1ZUdMaWIuY3BwCkBAIC01MSw3ICs1MSw3IEBAIFRFU1QoV1RGX1dvcmtRdWV1ZSwgQXN5
bmNJTykKICAgICBHVW5pcXVlUHRyPGNoYXI+IGN1cnJlbnREaXJlY3RvcnkoZ19nZXRfY3VycmVu
dF9kaXIoKSk7CiAgICAgR1JlZlB0cjxHRmlsZT4gZmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3
X2Zvcl9wYXRoKGN1cnJlbnREaXJlY3RvcnkuZ2V0KCkpKTsKIAotICAgIExvY2tlciBsb2NrZXIg
eyBjb250ZXh0Lm1fbG9jayB9OworICAgIExvY2tIb2xkZXIgbG9ja2VyKGNvbnRleHQubV9sb2Nr
KTsKICAgICBxdWV1ZS0+ZGlzcGF0Y2goWyZdKHZvaWQpIHsKICAgICAgICAgRVhQRUNUX1RSVUUo
Z19tYWluX2NvbnRleHRfZ2V0X3RocmVhZF9kZWZhdWx0KCkpOwogICAgICAgICBFWFBFQ1RfVFJV
RShnX21haW5fY29udGV4dF9nZXRfdGhyZWFkX2RlZmF1bHQoKSAhPSBjb250ZXh0Lm1fbWFpbkNv
bnRleHQpOwpAQCAtNTksNyArNTksNyBAQCBURVNUKFdURl9Xb3JrUXVldWUsIEFzeW5jSU8pCiAg
ICAgICAgIGdfZmlsZV9xdWVyeV9pbmZvX2FzeW5jKGZpbGUuZ2V0KCksIEdfRklMRV9BVFRSSUJV
VEVfU1RBTkRBUkRfU0laRSwgR19GSUxFX1FVRVJZX0lORk9fTk9ORSwgR19QUklPUklUWV9ERUZB
VUxULCBudWxscHRyLAogICAgICAgICAgICAgW10oR09iamVjdCosIEdBc3luY1Jlc3VsdCosIGdw
b2ludGVyIHVzZXJEYXRhKSB7CiAgICAgICAgICAgICAgICAgVGVzdGluZ0NvbnRleHQqIGNvbnRl
eHQgPSBzdGF0aWNfY2FzdDxUZXN0aW5nQ29udGV4dCo+KHVzZXJEYXRhKTsKLSAgICAgICAgICAg
ICAgICBMb2NrZXIgbG9ja2VyIHsgY29udGV4dC0+bV9sb2NrIH07CisgICAgICAgICAgICAgICAg
TG9ja0hvbGRlciBsb2NrZXIoY29udGV4dC0+bV9sb2NrKTsKICAgICAgICAgICAgICAgICBFWFBF
Q1RfRVEoZ19tYWluX2NvbnRleHRfZ2V0X3RocmVhZF9kZWZhdWx0KCksIGNvbnRleHQtPm1fbWFp
bkNvbnRleHQpOwogICAgICAgICAgICAgICAgIGNvbnRleHQtPm1fdGVzdENvbXBsZXRlZC5ub3Rp
ZnlPbmUoKTsKICAgICAgICAgICAgIH0sICZjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9BYm9ydGFibGVUYXNrUXVldWUuY3BwIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Fib3J0YWJsZVRhc2tRdWV1ZS5jcHAKaW5kZXgg
MTE0NzkxYjM2YWE5NWZkYzE4NmRhYjU2ZDA4ZTEyOWY1NGU1NTZhNS4uN2I1NjNkMzZiNTJmNzIz
Yzg0ZTc3YjE5ZWUwMmJjMDM2ODQ1YjkxYiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL0Fib3J0YWJsZVRhc2tRdWV1ZS5jcHAKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL0Fib3J0YWJsZVRhc2tRdWV1ZS5jcHAKQEAgLTE0Nyw3ICsx
NDcsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgdm9pZCB3YWl0TXlUdXJuKCkKICAgICAgICAgewot
ICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fc2NoZWR1bGVyLm1fbXV0ZXggfTsKKyAgICAg
ICAgICAgIExvY2tIb2xkZXIgbG9jayhtX3NjaGVkdWxlci5tX211dGV4KTsKICAgICAgICAgICAg
IG1fc2NoZWR1bGVyLm1fY3VycmVudFRocmVhZENoYW5nZWQud2FpdChtX3NjaGVkdWxlci5tX211
dGV4LCBbdGhpc10oKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIG1fc2NoZWR1bGVyLm1fY3Vy
cmVudFRocmVhZCA9PSBtX3RoaXNUaHJlYWQ7CiAgICAgICAgICAgICB9KTsKQEAgLTE1NSw3ICsx
NTUsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgdm9pZCB5aWVsZFRvVGhyZWFkKFRocmVhZEVudW0g
bmV4dFRocmVhZCkKICAgICAgICAgewotICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fc2No
ZWR1bGVyLm1fbXV0ZXggfTsKKyAgICAgICAgICAgIExvY2tIb2xkZXIgbG9jayhtX3NjaGVkdWxl
ci5tX211dGV4KTsKICAgICAgICAgICAgIG1fc2NoZWR1bGVyLm1fY3VycmVudFRocmVhZCA9IG5l
eHRUaHJlYWQ7CiAgICAgICAgICAgICBtX3NjaGVkdWxlci5tX2N1cnJlbnRUaHJlYWRDaGFuZ2Vk
Lm5vdGlmeUFsbCgpOwogICAgICAgICB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>