<?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>196611</bug_id>
          
          <creation_ts>2019-04-04 10:14:28 -0700</creation_ts>
          <short_desc>REGRESSION(r243807): Test added is a flaky timeout on iOS Simulator, 3 tests unskipped are flaky failures (Requested by ShawnRoberts on #webkit).</short_desc>
          <delta_ts>2019-04-04 15:01:11 -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>196128</blocked>
    
    <blocked>196547</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>ap</cc>
    
    <cc>ggaren</cc>
    
    <cc>sihui_liu</cc>
    
    <cc>sroberts</cc>
    
    <cc>webkit-bot-watchers-bugzilla</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1524281</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-04-04 10:14:28 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/243807 broke the build:
Test added is a flaky timeout on iOS Simulator, 3 tests unskipped are flaky failures (Requested by ShawnRoberts on #webkit).

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

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

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

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1524458</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2019-04-04 14:53:33 -0700</bug_when>
    <thetext>What is the next step here, are we rolling back?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1524464</commentid>
    <comment_count>3</comment_count>
      <attachid>366724</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-04-04 14:59:08 -0700</bug_when>
    <thetext>Comment on attachment 366724
ROLLOUT of r243807

Clearing flags on attachment: 366724

Committed r243910: &lt;https://trac.webkit.org/changeset/243910&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1524465</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-04-04 14:59:09 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1524468</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-04-04 15:01:11 -0700</bug_when>
    <thetext>&lt;rdar://problem/49624433&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>366724</attachid>
            <date>2019-04-04 10:14:38 -0700</date>
            <delta_ts>2019-04-04 14:59:08 -0700</delta_ts>
            <desc>ROLLOUT of r243807</desc>
            <filename>bug-196611-20190404101437.patch</filename>
            <type>text/plain</type>
            <size>71908</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQzODczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmY0ODc5OGQ1ZjI2ODNi
ZGIzYWU5YzU5ZmZmMTk1OTBiMTA3Yjg5ZS4uYjI1ZTRhZjU2ODUxYjJhMTBlNjgzYWMxZTdhY2Ex
MjFhMTdjYWJhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE5LTA0LTA0ICBDb21t
aXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KKworICAgICAgICBVbnJldmlld2Vk
LCByb2xsaW5nIG91dCByMjQzODA3IGFuZCByMjQzODI0LgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk2NjExCisKKyAgICAgICAgVGVzdCBhZGRlZCBp
cyBhIGZsYWt5IHRpbWVvdXQgb24gaU9TIFNpbXVsYXRvciwgMyB0ZXN0cworICAgICAgICB1bnNr
aXBwZWQgYXJlIGZsYWt5IGZhaWx1cmVzIChSZXF1ZXN0ZWQgYnkgU2hhd25Sb2JlcnRzIG9uCisg
ICAgICAgICN3ZWJraXQpLgorCisgICAgICAgIFJldmVydGVkIGNoYW5nZXNldHM6CisKKyAgICAg
ICAgIkJsb2IgdHlwZSBjYW5ub3QgYmUgc3RvcmVkIGNvcnJlY3RseSBpbiBJREIgd2hlbgorICAg
ICAgICBJREJPYmplY3RTdG9yZSBoYXMgYXV0b0luY3JlbWVudCBhbmQga2V5UGF0aCBvcHRpb25z
IgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk2MTI4
CisgICAgICAgIGh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yNDM4MDcKKworICAg
ICAgICAiRm9sbG93IHVwIGZpeCBmb3IgcjI0MzgwNzogVXNlIE1hcmtlZEFyZ3VtZW50QnVmZmVy
IGluc3RlYWQKKyAgICAgICAgb2YgVmVjdG9yIGZvciBKU1ZhbHVlIgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk2NTQ3CisgICAgICAgIGh0dHBzOi8v
dHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yNDM4MjQKKwogMjAxOS0wNC0wNCAgQW50b2luZSBR
dWludCAgPGdyYW91dHNAYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWIgQW5pbWF0aW9uc10gSlMg
d3JhcHBlciBtYXkgYmUgZGVsZXRlZCB3aGlsZSBhbmltYXRpb24gaXMgeWV0IHRvIGRpc3BhdGNo
IGl0cyBmaW5pc2ggZXZlbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkN1cnNvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJDdXJzb3IuY3BwCmluZGV4IDZkNDBhZTFlMzRmNmIxNzYyNDRjZjFmNWIyODczYTNjOTk0OTRk
NzMuLjQ1NzkwYTdmOGQxZTA0OGFkNmMxZWE4NzkwNmM5NjU1NTNiNGM1NDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcApAQCAtMzQxLDEwICsz
NDEsOCBAQCBib29sIElEQkN1cnNvcjo6c2V0R2V0UmVzdWx0KElEQlJlcXVlc3QmIHJlcXVlc3Qs
IGNvbnN0IElEQkdldFJlc3VsdCYgZ2V0UmVzdWx0KQogICAgIG1fcHJpbWFyeUtleURhdGEgPSBn
ZXRSZXN1bHQucHJpbWFyeUtleURhdGEoKTsKICAgICBtX3ByaW1hcnlLZXkgPSBtX3ByaW1hcnlL
ZXlEYXRhLm1heWJlQ3JlYXRlSURCS2V5KCk7CiAKLSAgICBpZiAoaXNLZXlDdXJzb3JXaXRoVmFs
dWUoKSkgeworICAgIGlmIChpc0tleUN1cnNvcldpdGhWYWx1ZSgpKQogICAgICAgICBtX3ZhbHVl
ID0gZ2V0UmVzdWx0LnZhbHVlKCk7Ci0gICAgICAgIG1fa2V5UGF0aCA9IGdldFJlc3VsdC5rZXlQ
YXRoKCk7Ci0gICAgfQogCiAgICAgbV9nb3RWYWx1ZSA9IHRydWU7CiAgICAgcmV0dXJuIHRydWU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3Iu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5oCmluZGV4IDE0
YWUzYWExYTQ1NmIyMGQ5YmYxMDNlMjA4NzY3YzNiYzVjNjM4MGUuLjdiN2IxNzEzYmJmYTlhMmY4
ZjkwYjcwMmNkMDAxNzNlMWRhMjY4NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkN1cnNvci5oCkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9u
T3IuaCIKICNpbmNsdWRlICJJREJDdXJzb3JEaXJlY3Rpb24uaCIKICNpbmNsdWRlICJJREJDdXJz
b3JJbmZvLmgiCi0jaW5jbHVkZSAiSURCS2V5UGF0aC5oIgogI2luY2x1ZGUgIklEQlZhbHVlLmgi
CiAjaW5jbHVkZSAiSlNWYWx1ZUluV3JhcHBlZE9iamVjdC5oIgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL1N0cm9uZy5oPgpAQCAtNTksNyArNTgsNiBAQCBwdWJsaWM6CiAgICAgSURCS2V5KiBr
ZXkoKSB7IHJldHVybiBtX2tleS5nZXQoKTsgfTsKICAgICBJREJLZXkqIHByaW1hcnlLZXkoKSB7
IHJldHVybiBtX3ByaW1hcnlLZXkuZ2V0KCk7IH07CiAgICAgSURCVmFsdWUgdmFsdWUoKSB7IHJl
dHVybiBtX3ZhbHVlOyB9OwotICAgIGNvbnN0IE9wdGlvbmFsPElEQktleVBhdGg+JiBwcmltYXJ5
S2V5UGF0aCgpIHsgcmV0dXJuIG1fa2V5UGF0aDsgfTsKICAgICBKU1ZhbHVlSW5XcmFwcGVkT2Jq
ZWN0JiBrZXlXcmFwcGVyKCkgeyByZXR1cm4gbV9rZXlXcmFwcGVyOyB9CiAgICAgSlNWYWx1ZUlu
V3JhcHBlZE9iamVjdCYgcHJpbWFyeUtleVdyYXBwZXIoKSB7IHJldHVybiBtX3ByaW1hcnlLZXlX
cmFwcGVyOyB9CiAgICAgSlNWYWx1ZUluV3JhcHBlZE9iamVjdCYgdmFsdWVXcmFwcGVyKCkgeyBy
ZXR1cm4gbV92YWx1ZVdyYXBwZXI7IH0KQEAgLTEwNiw3ICsxMDQsNiBAQCBwcml2YXRlOgogICAg
IElEQktleURhdGEgbV9rZXlEYXRhOwogICAgIElEQktleURhdGEgbV9wcmltYXJ5S2V5RGF0YTsK
ICAgICBJREJWYWx1ZSBtX3ZhbHVlOwotICAgIE9wdGlvbmFsPElEQktleVBhdGg+IG1fa2V5UGF0
aDsKIAogICAgIEpTVmFsdWVJbldyYXBwZWRPYmplY3QgbV9rZXlXcmFwcGVyOwogICAgIEpTVmFs
dWVJbldyYXBwZWRPYmplY3QgbV9wcmltYXJ5S2V5V3JhcHBlcjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkdldEFsbFJlc3VsdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJHZXRBbGxSZXN1bHQuY3BwCmluZGV4IDU4NDdk
YThiYTM0NGM2NThhN2U0NjhjZDYwMzJjN2ZmMzYxMzU1MzAuLjRkMjYyNGQ1NTE5YjM2MjlhYWE5
ZWZjYmY2NDY0MzY3YWQzYTliN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkdldEFsbFJlc3VsdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCR2V0QWxsUmVzdWx0LmNwcApAQCAtMjgsMTEgKzI4LDIwIEBACiAKICNp
ZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAotI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZENv
cGllci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAordGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBpc29sYXRlZENvcHlPZlZhcmlhbnQoY29uc3Qg
V1RGOjpWYXJpYW50PFZlY3RvcjxJREJLZXlEYXRhPiwgVmVjdG9yPElEQlZhbHVlPiwgc3RkOjpu
dWxscHRyX3Q+JiBzb3VyY2UsIFdURjo6VmFyaWFudDxWZWN0b3I8SURCS2V5RGF0YT4sIFZlY3Rv
cjxJREJWYWx1ZT4sIHN0ZDo6bnVsbHB0cl90PiYgdGFyZ2V0KQoreworICAgIHRhcmdldCA9IFZl
Y3RvcjxUPigpOworICAgIGF1dG8mIHNvdXJjZVZlY3RvciA9IFdURjo6Z2V0PFZlY3RvcjxUPj4o
c291cmNlKTsKKyAgICBhdXRvJiB0YXJnZXRWZWN0b3IgPSBXVEY6OmdldDxWZWN0b3I8VD4+KHRh
cmdldCk7CisgICAgdGFyZ2V0VmVjdG9yLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc291cmNlVmVj
dG9yLnNpemUoKSk7CisgICAgZm9yIChhdXRvJiBlbGVtZW50IDogc291cmNlVmVjdG9yKQorICAg
ICAgICB0YXJnZXRWZWN0b3IudW5jaGVja2VkQXBwZW5kKGVsZW1lbnQuaXNvbGF0ZWRDb3B5KCkp
OworfQorCiBJREJHZXRBbGxSZXN1bHQ6OklEQkdldEFsbFJlc3VsdChjb25zdCBJREJHZXRBbGxS
ZXN1bHQmIHRoYXQsIElzb2xhdGVkQ29weVRhZykKIHsKICAgICBpc29sYXRlZENvcHkodGhhdCwg
KnRoaXMpOwpAQCAtNDYsMjkgKzU1LDQ2IEBAIElEQkdldEFsbFJlc3VsdCBJREJHZXRBbGxSZXN1
bHQ6Omlzb2xhdGVkQ29weSgpIGNvbnN0CiB2b2lkIElEQkdldEFsbFJlc3VsdDo6aXNvbGF0ZWRD
b3B5KGNvbnN0IElEQkdldEFsbFJlc3VsdCYgc291cmNlLCBJREJHZXRBbGxSZXN1bHQmIGRlc3Rp
bmF0aW9uKQogewogICAgIGRlc3RpbmF0aW9uLm1fdHlwZSA9IHNvdXJjZS5tX3R5cGU7Ci0gICAg
ZGVzdGluYXRpb24ubV9rZXlzID0gY3Jvc3NUaHJlYWRDb3B5KHNvdXJjZS5tX2tleXMpOwotICAg
IGRlc3RpbmF0aW9uLm1fdmFsdWVzID0gY3Jvc3NUaHJlYWRDb3B5KHNvdXJjZS5tX3ZhbHVlcyk7
Ci0gICAgZGVzdGluYXRpb24ubV9rZXlQYXRoID0gV2ViQ29yZTo6aXNvbGF0ZWRDb3B5KHNvdXJj
ZS5tX2tleVBhdGgpOworCisgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8c3RkOjpudWxs
cHRyX3Q+KHNvdXJjZS5tX3Jlc3VsdHMpKQorICAgICAgICByZXR1cm47CisKKyAgICBzd2l0Y2gg
KHNvdXJjZS5tX3R5cGUpIHsKKyAgICBjYXNlIEluZGV4ZWREQjo6R2V0QWxsVHlwZTo6S2V5czoK
KyAgICAgICAgaXNvbGF0ZWRDb3B5T2ZWYXJpYW50PElEQktleURhdGE+KHNvdXJjZS5tX3Jlc3Vs
dHMsIGRlc3RpbmF0aW9uLm1fcmVzdWx0cyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW5k
ZXhlZERCOjpHZXRBbGxUeXBlOjpWYWx1ZXM6CisgICAgICAgIGlzb2xhdGVkQ29weU9mVmFyaWFu
dDxJREJWYWx1ZT4oc291cmNlLm1fcmVzdWx0cywgZGVzdGluYXRpb24ubV9yZXN1bHRzKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQogfQogCiB2b2lkIElEQkdldEFsbFJlc3VsdDo6YWRkS2V5KElE
QktleURhdGEmJiBrZXkpCiB7Ci0gICAgbV9rZXlzLmFwcGVuZChXVEZNb3ZlKGtleSkpOworICAg
IEFTU0VSVChtX3R5cGUgPT0gSW5kZXhlZERCOjpHZXRBbGxUeXBlOjpLZXlzKTsKKyAgICBBU1NF
UlQoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxWZWN0b3I8SURCS2V5RGF0YT4+KG1fcmVzdWx0cykp
OworICAgIFdURjo6Z2V0PFZlY3RvcjxJREJLZXlEYXRhPj4obV9yZXN1bHRzKS5hcHBlbmQoV1RG
TW92ZShrZXkpKTsKIH0KIAogdm9pZCBJREJHZXRBbGxSZXN1bHQ6OmFkZFZhbHVlKElEQlZhbHVl
JiYgdmFsdWUpCiB7Ci0gICAgbV92YWx1ZXMuYXBwZW5kKFdURk1vdmUodmFsdWUpKTsKKyAgICBB
U1NFUlQobV90eXBlID09IEluZGV4ZWREQjo6R2V0QWxsVHlwZTo6VmFsdWVzKTsKKyAgICBBU1NF
UlQoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxWZWN0b3I8SURCVmFsdWU+PihtX3Jlc3VsdHMpKTsK
KyAgICBXVEY6OmdldDxWZWN0b3I8SURCVmFsdWU+PihtX3Jlc3VsdHMpLmFwcGVuZChXVEZNb3Zl
KHZhbHVlKSk7CiB9CiAKIGNvbnN0IFZlY3RvcjxJREJLZXlEYXRhPiYgSURCR2V0QWxsUmVzdWx0
OjprZXlzKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9rZXlzOworICAgIEFTU0VSVChtX3R5cGUg
PT0gSW5kZXhlZERCOjpHZXRBbGxUeXBlOjpLZXlzKTsKKyAgICBBU1NFUlQoV1RGOjpob2xkc19h
bHRlcm5hdGl2ZTxWZWN0b3I8SURCS2V5RGF0YT4+KG1fcmVzdWx0cykpOworICAgIHJldHVybiBX
VEY6OmdldDxWZWN0b3I8SURCS2V5RGF0YT4+KG1fcmVzdWx0cyk7CiB9CiAKIGNvbnN0IFZlY3Rv
cjxJREJWYWx1ZT4mIElEQkdldEFsbFJlc3VsdDo6dmFsdWVzKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gbV92YWx1ZXM7CisgICAgQVNTRVJUKG1fdHlwZSA9PSBJbmRleGVkREI6OkdldEFsbFR5cGU6
OlZhbHVlcyk7CisgICAgQVNTRVJUKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8VmVjdG9yPElEQlZh
bHVlPj4obV9yZXN1bHRzKSk7CisgICAgcmV0dXJuIFdURjo6Z2V0PFZlY3RvcjxJREJWYWx1ZT4+
KG1fcmVzdWx0cyk7CiB9CiAKIFZlY3RvcjxTdHJpbmc+IElEQkdldEFsbFJlc3VsdDo6YWxsQmxv
YkZpbGVQYXRocygpIGNvbnN0CkBAIC03Niw3ICsxMDIsNyBAQCBWZWN0b3I8U3RyaW5nPiBJREJH
ZXRBbGxSZXN1bHQ6OmFsbEJsb2JGaWxlUGF0aHMoKSBjb25zdAogICAgIEFTU0VSVChtX3R5cGUg
PT0gSW5kZXhlZERCOjpHZXRBbGxUeXBlOjpWYWx1ZXMpOwogCiAgICAgSGFzaFNldDxTdHJpbmc+
IHBhdGhTZXQ7Ci0gICAgZm9yIChhdXRvJiB2YWx1ZSA6IG1fdmFsdWVzKSB7CisgICAgZm9yIChh
dXRvJiB2YWx1ZSA6IFdURjo6Z2V0PFZlY3RvcjxJREJWYWx1ZT4+KG1fcmVzdWx0cykpIHsKICAg
ICAgICAgZm9yIChhdXRvJiBwYXRoIDogdmFsdWUuYmxvYkZpbGVQYXRocygpKQogICAgICAgICAg
ICAgcGF0aFNldC5hZGQocGF0aCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCR2V0QWxsUmVzdWx0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJHZXRBbGxSZXN1bHQuaAppbmRleCAzZjk3NDI4Y2Y5MzA1YTdlOTEx
MjJkZTg4ODIwNjk1MDMxYzM1MjE2Li5iYWY4MDQzZGFiZTUxOGE4MjllMGFjOGNiNWY2MGNmNWFm
MjZiNjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJH
ZXRBbGxSZXN1bHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJH
ZXRBbGxSZXN1bHQuaApAQCAtMjgsNyArMjgsNiBAQAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFC
QVNFKQogCiAjaW5jbHVkZSAiSURCS2V5RGF0YS5oIgotI2luY2x1ZGUgIklEQktleVBhdGguaCIK
ICNpbmNsdWRlICJJREJWYWx1ZS5oIgogI2luY2x1ZGUgIkluZGV4ZWREQi5oIgogCkBAIC00Mywx
MCArNDIsMTcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICBJREJHZXRBbGxSZXN1bHQo
SW5kZXhlZERCOjpHZXRBbGxUeXBlIHR5cGUsIGNvbnN0IE9wdGlvbmFsPElEQktleVBhdGg+JiBr
ZXlQYXRoKQorICAgIElEQkdldEFsbFJlc3VsdChJbmRleGVkREI6OkdldEFsbFR5cGUgdHlwZSkK
ICAgICAgICAgOiBtX3R5cGUodHlwZSkKLSAgICAgICAgLCBtX2tleVBhdGgoa2V5UGF0aCkKICAg
ICB7CisgICAgICAgIHN3aXRjaCAobV90eXBlKSB7CisgICAgICAgIGNhc2UgSW5kZXhlZERCOjpH
ZXRBbGxUeXBlOjpLZXlzOgorICAgICAgICAgICAgbV9yZXN1bHRzID0gVmVjdG9yPElEQktleURh
dGE+KCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBJbmRleGVkREI6OkdldEFs
bFR5cGU6OlZhbHVlczoKKyAgICAgICAgICAgIG1fcmVzdWx0cyA9IFZlY3RvcjxJREJWYWx1ZT4o
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgfQogCiAgICAgZW51bSBJc29s
YXRlZENvcHlUYWcgeyBJc29sYXRlZENvcHkgfTsKQEAgLTU0LDcgKzYwLDYgQEAgcHVibGljOgog
ICAgIElEQkdldEFsbFJlc3VsdCBpc29sYXRlZENvcHkoKSBjb25zdDsKIAogICAgIEluZGV4ZWRE
Qjo6R2V0QWxsVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9Ci0gICAgY29uc3Qg
T3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBhdGgoKSBjb25zdCB7IHJldHVybiBtX2tleVBhdGg7
IH0KICAgICBjb25zdCBWZWN0b3I8SURCS2V5RGF0YT4mIGtleXMoKSBjb25zdDsKICAgICBjb25z
dCBWZWN0b3I8SURCVmFsdWU+JiB2YWx1ZXMoKSBjb25zdDsKIApAQCAtNzAsMTUgKzc1LDI2IEBA
IHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgaXNvbGF0ZWRDb3B5KGNvbnN0IElEQkdldEFsbFJl
c3VsdCYgc291cmNlLCBJREJHZXRBbGxSZXN1bHQmIGRlc3RpbmF0aW9uKTsKIAogICAgIEluZGV4
ZWREQjo6R2V0QWxsVHlwZSBtX3R5cGUgeyBJbmRleGVkREI6OkdldEFsbFR5cGU6OktleXMgfTsK
LSAgICBWZWN0b3I8SURCS2V5RGF0YT4gbV9rZXlzOwotICAgIFZlY3RvcjxJREJWYWx1ZT4gbV92
YWx1ZXM7Ci0gICAgT3B0aW9uYWw8SURCS2V5UGF0aD4gbV9rZXlQYXRoOworICAgIFdURjo6VmFy
aWFudDxWZWN0b3I8SURCS2V5RGF0YT4sIFZlY3RvcjxJREJWYWx1ZT4sIHN0ZDo6bnVsbHB0cl90
PiBtX3Jlc3VsdHMgeyBudWxscHRyIH07CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgog
dm9pZCBJREJHZXRBbGxSZXN1bHQ6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewot
ICAgIGVuY29kZXIgPDwgbV90eXBlIDw8IG1fa2V5cyA8PCBtX3ZhbHVlcyA8PCBtX2tleVBhdGg7
CisgICAgZW5jb2RlciA8PCBtX3R5cGUgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG1fcmVzdWx0
cy5pbmRleCgpKTsKKworICAgIHN3aXRjaCAobV9yZXN1bHRzLmluZGV4KCkpIHsKKyAgICBjYXNl
IDA6CisgICAgICAgIGVuY29kZXIgPDwgV1RGOjpnZXQ8VmVjdG9yPElEQktleURhdGE+PihtX3Jl
c3VsdHMpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIDE6CisgICAgICAgIGVuY29kZXIgPDwg
V1RGOjpnZXQ8VmVjdG9yPElEQlZhbHVlPj4obV9yZXN1bHRzKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSAyOgorICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4KQEAgLTg3LDE0ICsxMDMsMzIgQEAgYm9vbCBJREJHZXRBbGxSZXN1bHQ6OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyLCBJREJHZXRBbGxSZXN1bHQmIHJlc3VsdCkKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHJlc3VsdC5tX3R5cGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX2tleXMpKQorICAgIHVpbnQ2NF90IGluZGV4OworICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoaW5kZXgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX3ZhbHVlcykpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX2tleVBhdGgpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgc3dpdGNoIChpbmRleCkgeworICAgIGNhc2UgMDog
eworICAgICAgICByZXN1bHQubV9yZXN1bHRzID0gVmVjdG9yPElEQktleURhdGE+KCk7CisgICAg
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoV1RGOjpnZXQ8VmVjdG9yPElEQktleURhdGE+PihyZXN1
bHQubV9yZXN1bHRzKSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGJyZWFr
OworICAgIH0KKyAgICBjYXNlIDE6IHsKKyAgICAgICAgcmVzdWx0Lm1fcmVzdWx0cyA9IFZlY3Rv
cjxJREJWYWx1ZT4oKTsKKyAgICAgICAgT3B0aW9uYWw8VmVjdG9yPElEQlZhbHVlPj4gb3B0aW9u
YWw7CisgICAgICAgIGRlY29kZXIgPj4gb3B0aW9uYWw7CisgICAgICAgIGlmICghb3B0aW9uYWwp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIFdURjo6Z2V0PFZlY3RvcjxJREJW
YWx1ZT4+KHJlc3VsdC5tX3Jlc3VsdHMpID0gV1RGTW92ZSgqb3B0aW9uYWwpOworICAgICAgICBi
cmVhazsKKyAgICB9CisgICAgY2FzZSAyOgorICAgICAgICByZXN1bHQubV9yZXN1bHRzID0gbnVs
bHB0cjsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkdldFJlc3VsdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJHZXRSZXN1bHQuY3BwCmluZGV4IDk0
OWU4MTMzOTdmMzFiZjE4ZTY1YmJjNTU4MjEyZDA4ODE2YzA2ZmYuLjVmOGU5OGEwY2UyMzMxNDhm
OGU2MTBhMTlhZjM5ZDNjZjAzMzkyZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkdldFJlc3VsdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCR2V0UmVzdWx0LmNwcApAQCAtNTcsMTEgKzU3LDYgQEAgdm9pZCBJREJH
ZXRSZXN1bHQ6Omlzb2xhdGVkQ29weShjb25zdCBJREJHZXRSZXN1bHQmIHNvdXJjZSwgSURCR2V0
UmVzdWx0JiBkZXN0aW4KICAgICBkZXN0aW5hdGlvbi5tX2lzRGVmaW5lZCA9IHNvdXJjZS5tX2lz
RGVmaW5lZDsKIH0KIAotdm9pZCBJREJHZXRSZXN1bHQ6OnNldFZhbHVlKElEQlZhbHVlJiYgdmFs
dWUpCi17Ci0gICAgbV92YWx1ZSA9IFdURk1vdmUodmFsdWUpOwotfQotCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkdldFJlc3VsdC5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCR2V0UmVzdWx0LmgKaW5kZXggZTg3YzM5
MDEyMzM0OWQxMTUzZDFmYzA4YzllNmIyYmY3NDUxYjI1My4uYjQ5ZjlhNmRmMzI2NWE2YmZjZDNl
OGU5ODI3ODY1ZWY4OTQ3NmIzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCR2V0UmVzdWx0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCR2V0UmVzdWx0LmgKQEAgLTQzLDM2ICs0Myw1NyBAQCBwdWJsaWM6CiAgICAgewog
ICAgIH0KIAorICAgIElEQkdldFJlc3VsdChjb25zdCBJREJWYWx1ZSYgdmFsdWUsIGNvbnN0IElE
QktleURhdGEmIGN1cnJlbnRQcmltYXJ5S2V5KQorICAgICAgICA6IG1fdmFsdWUodmFsdWUpCisg
ICAgICAgICwgbV9wcmltYXJ5S2V5RGF0YShjdXJyZW50UHJpbWFyeUtleSkKKyAgICB7CisgICAg
fQorCisgICAgSURCR2V0UmVzdWx0KGNvbnN0IFRocmVhZFNhZmVEYXRhQnVmZmVyJiBidWZmZXIp
CisgICAgICAgIDogbV92YWx1ZShidWZmZXIpCisgICAgeworICAgIH0KKworICAgIElEQkdldFJl
c3VsdChJREJWYWx1ZSYmIGJ1ZmZlcikKKyAgICAgICAgOiBtX3ZhbHVlKFdURk1vdmUoYnVmZmVy
KSkKKyAgICB7CisgICAgfQorCisgICAgSURCR2V0UmVzdWx0KElEQktleSYga2V5KQorICAgICAg
ICA6IG1fa2V5RGF0YSgma2V5KQorICAgIHsKKyAgICB9CisKICAgICBJREJHZXRSZXN1bHQoY29u
c3QgSURCS2V5RGF0YSYga2V5RGF0YSkKICAgICAgICAgOiBtX2tleURhdGEoa2V5RGF0YSkKICAg
ICB7CiAgICAgfQogCi0gICAgSURCR2V0UmVzdWx0KGNvbnN0IElEQktleURhdGEmIGtleURhdGEs
IGNvbnN0IElEQktleURhdGEmIHByaW1hcnlLZXlEYXRhKQotICAgICAgICA6IG1fa2V5RGF0YShr
ZXlEYXRhKQotICAgICAgICAsIG1fcHJpbWFyeUtleURhdGEocHJpbWFyeUtleURhdGEpCisgICAg
SURCR2V0UmVzdWx0KFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBJREJLZXkmIGtleSwgY29uc3QgSURC
S2V5UGF0aCYgcGF0aCkKKyAgICAgICAgOiBtX2tleURhdGEoJmtleSkKKyAgICAgICAgLCBtX2tl
eVBhdGgocGF0aCkKICAgICB7CisgICAgICAgIGlmIChidWZmZXIpCisgICAgICAgICAgICBkYXRh
RnJvbUJ1ZmZlcigqYnVmZmVyKTsKICAgICB9CiAKLSAgICBJREJHZXRSZXN1bHQoY29uc3QgSURC
S2V5RGF0YSYga2V5RGF0YSwgY29uc3QgVGhyZWFkU2FmZURhdGFCdWZmZXImIGJ1ZmZlciwgY29u
c3QgT3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBhdGgpCi0gICAgICAgIDogbV92YWx1ZShidWZm
ZXIpCi0gICAgICAgICwgbV9rZXlEYXRhKGtleURhdGEpCi0gICAgICAgICwgbV9rZXlQYXRoKGtl
eVBhdGgpCisgICAgSURCR2V0UmVzdWx0KGNvbnN0IElEQktleURhdGEmIGtleURhdGEsIGNvbnN0
IElEQktleURhdGEmIHByaW1hcnlLZXlEYXRhKQorICAgICAgICA6IG1fa2V5RGF0YShrZXlEYXRh
KQorICAgICAgICAsIG1fcHJpbWFyeUtleURhdGEocHJpbWFyeUtleURhdGEpCiAgICAgewogICAg
IH0KIAotICAgIElEQkdldFJlc3VsdChjb25zdCBJREJLZXlEYXRhJiBrZXlEYXRhLCBJREJWYWx1
ZSYmIHZhbHVlLCBjb25zdCBPcHRpb25hbDxJREJLZXlQYXRoPiYga2V5UGF0aCkKKyAgICBJREJH
ZXRSZXN1bHQoY29uc3QgSURCS2V5RGF0YSYga2V5RGF0YSwgY29uc3QgSURCS2V5RGF0YSYgcHJp
bWFyeUtleURhdGEsIElEQlZhbHVlJiYgdmFsdWUpCiAgICAgICAgIDogbV92YWx1ZShXVEZNb3Zl
KHZhbHVlKSkKICAgICAgICAgLCBtX2tleURhdGEoa2V5RGF0YSkKLSAgICAgICAgLCBtX2tleVBh
dGgoa2V5UGF0aCkKKyAgICAgICAgLCBtX3ByaW1hcnlLZXlEYXRhKHByaW1hcnlLZXlEYXRhKQog
ICAgIHsKICAgICB9CiAKLSAgICBJREJHZXRSZXN1bHQoY29uc3QgSURCS2V5RGF0YSYga2V5RGF0
YSwgY29uc3QgSURCS2V5RGF0YSYgcHJpbWFyeUtleURhdGEsIElEQlZhbHVlJiYgdmFsdWUsIGNv
bnN0IE9wdGlvbmFsPElEQktleVBhdGg+JiBrZXlQYXRoKQotICAgICAgICA6IG1fdmFsdWUoV1RG
TW92ZSh2YWx1ZSkpCisgICAgSURCR2V0UmVzdWx0KGNvbnN0IElEQktleURhdGEmIGtleURhdGEs
IGNvbnN0IElEQktleURhdGEmIHByaW1hcnlLZXlEYXRhLCBjb25zdCBJREJWYWx1ZSYgdmFsdWUp
CisgICAgICAgIDogbV92YWx1ZSh2YWx1ZSkKICAgICAgICAgLCBtX2tleURhdGEoa2V5RGF0YSkK
ICAgICAgICAgLCBtX3ByaW1hcnlLZXlEYXRhKHByaW1hcnlLZXlEYXRhKQotICAgICAgICAsIG1f
a2V5UGF0aChrZXlQYXRoKQogICAgIHsKICAgICB9CiAKQEAgLTgxLDEyICsxMDIsMTAgQEAgcHVi
bGljOgogCiAgICAgSURCR2V0UmVzdWx0IGlzb2xhdGVkQ29weSgpIGNvbnN0OwogCi0gICAgdm9p
ZCBzZXRWYWx1ZShJREJWYWx1ZSYmKTsKLQogICAgIGNvbnN0IElEQlZhbHVlJiB2YWx1ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KICAgICBjb25zdCBJREJLZXlEYXRhJiBrZXlEYXRhKCkg
Y29uc3QgeyByZXR1cm4gbV9rZXlEYXRhOyB9CiAgICAgY29uc3QgSURCS2V5RGF0YSYgcHJpbWFy
eUtleURhdGEoKSBjb25zdCB7IHJldHVybiBtX3ByaW1hcnlLZXlEYXRhOyB9Ci0gICAgY29uc3Qg
T3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBhdGgoKSBjb25zdCB7IHJldHVybiBtX2tleVBhdGg7
IH0KKyAgICBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9rZXlQ
YXRoOyB9CiAgICAgYm9vbCBpc0RlZmluZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRGVmaW5lZDsg
fQogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNv
bnN0OwpAQCAtMTAwLDcgKzExOSw3IEBAIHByaXZhdGU6CiAgICAgSURCVmFsdWUgbV92YWx1ZTsK
ICAgICBJREJLZXlEYXRhIG1fa2V5RGF0YTsKICAgICBJREJLZXlEYXRhIG1fcHJpbWFyeUtleURh
dGE7Ci0gICAgT3B0aW9uYWw8SURCS2V5UGF0aD4gbV9rZXlQYXRoOworICAgIElEQktleVBhdGgg
bV9rZXlQYXRoOwogICAgIGJvb2wgbV9pc0RlZmluZWQgeyB0cnVlIH07CiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwCmluZGV4IDg4ZWRk
NWM5NzJiZTlhNmE4Y2NkNTIwMmQ4NzJmZDViMmJjNzUzMGMuLmFiN2YxNTg2ZDhmY2UwZTUwY2Fk
MmNkNDYxMzdmZDI4YTMyZGE4NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQlJlcXVlc3QuY3BwCkBAIC0zOTEsNyArMzkxLDcgQEAgdm9pZCBJREJSZXF1ZXN0
OjpzZXRSZXN1bHQoY29uc3QgVmVjdG9yPElEQktleURhdGE+JiBrZXlEYXRhcykKICAgICBtX3Jl
c3VsdFdyYXBwZXIgPSB7IH07CiB9CiAKLXZvaWQgSURCUmVxdWVzdDo6c2V0UmVzdWx0KGNvbnN0
IElEQkdldEFsbFJlc3VsdCYgcmVzdWx0KQordm9pZCBJREJSZXF1ZXN0OjpzZXRSZXN1bHQoY29u
c3QgVmVjdG9yPElEQlZhbHVlPiYgdmFsdWVzKQogewogICAgIEFTU0VSVCgmb3JpZ2luVGhyZWFk
KCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIApAQCAtNDAxLDcgKzQwMSw3IEBAIHZvaWQgSURC
UmVxdWVzdDo6c2V0UmVzdWx0KGNvbnN0IElEQkdldEFsbFJlc3VsdCYgcmVzdWx0KQogCiAgICAg
Vk0mIHZtID0gY29udGV4dC0+dm0oKTsKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7Ci0gICAg
bV9yZXN1bHQgPSByZXN1bHQ7CisgICAgbV9yZXN1bHQgPSB2YWx1ZXM7CiAgICAgbV9yZXN1bHRX
cmFwcGVyID0geyB9OwogfQogCkBAIC00MTksNyArNDE5LDcgQEAgdm9pZCBJREJSZXF1ZXN0Ojpz
ZXRSZXN1bHQodWludDY0X3QgbnVtYmVyKQogICAgIG1fcmVzdWx0V3JhcHBlciA9IHsgfTsKIH0K
IAotdm9pZCBJREJSZXF1ZXN0OjpzZXRSZXN1bHRUb1N0cnVjdHVyZWRDbG9uZShjb25zdCBJREJH
ZXRSZXN1bHQmIHJlc3VsdCkKK3ZvaWQgSURCUmVxdWVzdDo6c2V0UmVzdWx0VG9TdHJ1Y3R1cmVk
Q2xvbmUoY29uc3QgSURCVmFsdWUmIHZhbHVlKQogewogICAgIEFTU0VSVCgmb3JpZ2luVGhyZWFk
KCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIApAQCAtNDMxLDcgKzQzMSw3IEBAIHZvaWQgSURC
UmVxdWVzdDo6c2V0UmVzdWx0VG9TdHJ1Y3R1cmVkQ2xvbmUoY29uc3QgSURCR2V0UmVzdWx0JiBy
ZXN1bHQpCiAKICAgICBWTSYgdm0gPSBjb250ZXh0LT52bSgpOwogICAgIEpTTG9ja0hvbGRlciBs
b2NrKHZtKTsKLSAgICBtX3Jlc3VsdCA9IHJlc3VsdDsKKyAgICBtX3Jlc3VsdCA9IHZhbHVlOwog
ICAgIG1fcmVzdWx0V3JhcHBlciA9IHsgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCUmVxdWVzdC5oCmluZGV4IDVjOTIzNGZjYjY1N2JjNWRhZjEzMzFmODhh
MWRkZGE1ODQ0YTIwMzguLmQ1YmU5OWZkNGRkOTQyYjE0OGVjYWI1MDVmMzZkZTJkNDU5OTk0ZGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmgKQEAg
LTMxLDggKzMxLDYgQEAKICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgogI2luY2x1ZGUgIklEQkFj
dGl2ZURPTU9iamVjdC5oIgogI2luY2x1ZGUgIklEQkVycm9yLmgiCi0jaW5jbHVkZSAiSURCR2V0
QWxsUmVzdWx0LmgiCi0jaW5jbHVkZSAiSURCR2V0UmVzdWx0LmgiCiAjaW5jbHVkZSAiSURCS2V5
RGF0YS5oIgogI2luY2x1ZGUgIklEQlJlc291cmNlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIklE
QlZhbHVlLmgiCkBAIC03Nyw3ICs3NSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfklEQlJl
cXVlc3QoKTsKIAotICAgIHVzaW5nIFJlc3VsdCA9IFZhcmlhbnQ8UmVmUHRyPElEQkN1cnNvcj4s
IFJlZlB0cjxJREJEYXRhYmFzZT4sIElEQktleURhdGEsIFZlY3RvcjxJREJLZXlEYXRhPiwgSURC
R2V0UmVzdWx0LCBJREJHZXRBbGxSZXN1bHQsIHVpbnQ2NF90LCBOdWxsUmVzdWx0VHlwZT47Cisg
ICAgdXNpbmcgUmVzdWx0ID0gVmFyaWFudDxSZWZQdHI8SURCQ3Vyc29yPiwgUmVmUHRyPElEQkRh
dGFiYXNlPiwgSURCS2V5RGF0YSwgVmVjdG9yPElEQktleURhdGE+LCBJREJWYWx1ZSwgVmVjdG9y
PElEQlZhbHVlPiwgdWludDY0X3QsIE51bGxSZXN1bHRUeXBlPjsKICAgICBFeGNlcHRpb25PcjxS
ZXN1bHQ+IHJlc3VsdCgpIGNvbnN0OwogICAgIEpTVmFsdWVJbldyYXBwZWRPYmplY3QmIHJlc3Vs
dFdyYXBwZXIoKSB7IHJldHVybiBtX3Jlc3VsdFdyYXBwZXI7IH0KICAgICBKU1ZhbHVlSW5XcmFw
cGVkT2JqZWN0JiBjdXJzb3JXcmFwcGVyKCkgeyByZXR1cm4gbV9jdXJzb3JXcmFwcGVyOyB9CkBA
IC0xMDgsOSArMTA2LDkgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRSZXN1bHQoY29uc3QgSURC
S2V5RGF0YSYpOwogICAgIHZvaWQgc2V0UmVzdWx0KGNvbnN0IFZlY3RvcjxJREJLZXlEYXRhPiYp
OwotICAgIHZvaWQgc2V0UmVzdWx0VG9TdHJ1Y3R1cmVkQ2xvbmUoY29uc3QgSURCR2V0UmVzdWx0
Jik7Ci0gICAgdm9pZCBzZXRSZXN1bHQoY29uc3QgSURCR2V0QWxsUmVzdWx0Jik7CisgICAgdm9p
ZCBzZXRSZXN1bHQoY29uc3QgVmVjdG9yPElEQlZhbHVlPiYpOwogICAgIHZvaWQgc2V0UmVzdWx0
KHVpbnQ2NF90KTsKKyAgICB2b2lkIHNldFJlc3VsdFRvU3RydWN0dXJlZENsb25lKGNvbnN0IElE
QlZhbHVlJik7CiAgICAgdm9pZCBzZXRSZXN1bHRUb1VuZGVmaW5lZCgpOwogCiAgICAgdm9pZCB3
aWxsSXRlcmF0ZUN1cnNvcihJREJDdXJzb3ImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAppbmRleCBkOTg1ZmQ0ZThlNDg3ZWFh
YzNmMTBlY2IxZTAzOTg2M2RiMzc2MDQ3Li5lNWEwZTg4YTgxNWJkZWUyYWJlNzgwOWNlNDRiYmU0
NTQ2NzcyNjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCVHJhbnNhY3Rpb24uY3BwCkBAIC05ODYsNyArOTg2LDcgQEAgdm9pZCBJREJUcmFuc2FjdGlv
bjo6ZGlkR2V0QWxsUmVjb3Jkc09uU2VydmVyKElEQlJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IElE
QlJlc3UKICAgICAgICAgcmVxdWVzdC5zZXRSZXN1bHQoZ2V0QWxsUmVzdWx0LmtleXMoKSk7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgSW5kZXhlZERCOjpHZXRBbGxUeXBlOjpWYWx1ZXM6Ci0g
ICAgICAgIHJlcXVlc3Quc2V0UmVzdWx0KGdldEFsbFJlc3VsdCk7CisgICAgICAgIHJlcXVlc3Qu
c2V0UmVzdWx0KGdldEFsbFJlc3VsdC52YWx1ZXMoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
IApAQCAtMTA5MCw3ICsxMDkwLDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGlkR2V0UmVjb3Jk
T25TZXJ2ZXIoSURCUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgSURCUmVzdWx0RGEKICAgICAgICAg
ICAgIHJlcXVlc3Quc2V0UmVzdWx0VG9VbmRlZmluZWQoKTsKICAgICB9IGVsc2UgewogICAgICAg
ICBpZiAocmVzdWx0RGF0YS5nZXRSZXN1bHQoKS52YWx1ZSgpLmRhdGEoKS5kYXRhKCkpCi0gICAg
ICAgICAgICByZXF1ZXN0LnNldFJlc3VsdFRvU3RydWN0dXJlZENsb25lKHJlc3VsdERhdGEuZ2V0
UmVzdWx0KCkpOworICAgICAgICAgICAgcmVxdWVzdC5zZXRSZXN1bHRUb1N0cnVjdHVyZWRDbG9u
ZShyZXN1bHREYXRhLmdldFJlc3VsdCgpLnZhbHVlKCkpOwogICAgICAgICBlbHNlCiAgICAgICAg
ICAgICByZXF1ZXN0LnNldFJlc3VsdFRvVW5kZWZpbmVkKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdT
dG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5
SURCQmFja2luZ1N0b3JlLmNwcAppbmRleCA3ZDE0MmIwMDUwYWI2MDg4MWUzODdiZThjMTk4OTQ3
YWM2ZThkZDgxLi5mNmQxNjU4YmNkZDZkNTIzNTM0Njg2MTZjNmUzMDdmNjIwMjg1MWNlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURC
QmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmNwcApAQCAtMzYzLDExICszNjMsOSBAQCBJREJF
cnJvciBNZW1vcnlJREJCYWNraW5nU3RvcmU6OmdldFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlk
ZW50aWZpZXImIHRyYW5zYWN0aQogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJy
b3IsICJObyBiYWNraW5nIHN0b3JlIG9iamVjdCBzdG9yZSBmb3VuZCJfcyB9OwogCiAgICAgc3dp
dGNoICh0eXBlKSB7Ci0gICAgY2FzZSBJREJHZXRSZWNvcmREYXRhVHlwZTo6S2V5QW5kVmFsdWU6
IHsKLSAgICAgICAgYXV0byBrZXkgPSBvYmplY3RTdG9yZS0+bG93ZXN0S2V5V2l0aFJlY29yZElu
UmFuZ2UocmFuZ2UpOwotICAgICAgICBvdXRWYWx1ZSA9IHsga2V5LCBrZXkuaXNOdWxsKCkgPyBU
aHJlYWRTYWZlRGF0YUJ1ZmZlcigpIDogb2JqZWN0U3RvcmUtPnZhbHVlRm9yS2V5KGtleSksIG9i
amVjdFN0b3JlLT5pbmZvKCkua2V5UGF0aCgpIH07CisgICAgY2FzZSBJREJHZXRSZWNvcmREYXRh
VHlwZTo6S2V5QW5kVmFsdWU6CisgICAgICAgIG91dFZhbHVlID0gb2JqZWN0U3RvcmUtPnZhbHVl
Rm9yS2V5UmFuZ2UocmFuZ2UpOwogICAgICAgICBicmVhazsKLSAgICB9CiAgICAgY2FzZSBJREJH
ZXRSZWNvcmREYXRhVHlwZTo6S2V5T25seToKICAgICAgICAgb3V0VmFsdWUgPSBvYmplY3RTdG9y
ZS0+bG93ZXN0S2V5V2l0aFJlY29yZEluUmFuZ2UocmFuZ2UpOwogICAgICAgICBicmVhazsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJ
bmRleC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5
SW5kZXguY3BwCmluZGV4IDQ5ZGRjYTZiZDQwZDI5ZDQyZTM4Yjg1MTMxYzg5ZmRmZTdkNDc5MmQu
LjIyYTZhZThhNWM4ZGM2MTQ3N2UyYTU2NDAyNjU4ZWNjNzMyYzhkN2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJbmRleC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUluZGV4LmNw
cApAQCAtMTI2LDcgKzEyNiw3IEBAIElEQkdldFJlc3VsdCBNZW1vcnlJbmRleDo6Z2V0UmVzdWx0
Rm9yS2V5UmFuZ2UoSW5kZXhlZERCOjpJbmRleFJlY29yZFR5cGUgdHlwZSwKICAgICBpZiAoIWtl
eVZhbHVlKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgcmV0dXJuIHR5cGUgPT0gSW5kZXhl
ZERCOjpJbmRleFJlY29yZFR5cGU6OktleSA/IElEQkdldFJlc3VsdCgqa2V5VmFsdWUpIDogSURC
R2V0UmVzdWx0KCprZXlWYWx1ZSwgbV9vYmplY3RTdG9yZS52YWx1ZUZvcktleVJhbmdlKCprZXlW
YWx1ZSksIG1fb2JqZWN0U3RvcmUuaW5mbygpLmtleVBhdGgoKSk7CisgICAgcmV0dXJuIHR5cGUg
PT0gSW5kZXhlZERCOjpJbmRleFJlY29yZFR5cGU6OktleSA/IElEQkdldFJlc3VsdCgqa2V5VmFs
dWUpIDogSURCR2V0UmVzdWx0KG1fb2JqZWN0U3RvcmUudmFsdWVGb3JLZXlSYW5nZSgqa2V5VmFs
dWUpKTsKIH0KIAogdWludDY0X3QgTWVtb3J5SW5kZXg6OmNvdW50Rm9yS2V5UmFuZ2UoY29uc3Qg
SURCS2V5UmFuZ2VEYXRhJiBpblJhbmdlKQpAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgTWVtb3J5
SW5kZXg6OmdldEFsbFJlY29yZHMoY29uc3QgSURCS2V5UmFuZ2VEYXRhJiBrZXlSYW5nZURhdGEs
IE9wdGlvbmFsPHVpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIk1lbW9yeUluZGV4OjpnZXRBbGxS
ZWNvcmRzIik7CiAKLSAgICByZXN1bHQgPSB7IHR5cGUsIG1fb2JqZWN0U3RvcmUuaW5mbygpLmtl
eVBhdGgoKSB9OworICAgIHJlc3VsdCA9IHsgdHlwZSB9OwogCiAgICAgaWYgKCFtX3JlY29yZHMp
CiAgICAgICAgIHJldHVybjsKQEAgLTE3OSw4ICsxNzksMTAgQEAgdm9pZCBNZW1vcnlJbmRleDo6
Z2V0QWxsUmVjb3Jkcyhjb25zdCBJREJLZXlSYW5nZURhdGEmIGtleVJhbmdlRGF0YSwgT3B0aW9u
YWw8dWkKIAogICAgICAgICBhdXRvIGFsbFZhbHVlcyA9IG1fcmVjb3Jkcy0+YWxsVmFsdWVzRm9y
S2V5KGtleSwgdGFyZ2V0Q291bnQgLSBjdXJyZW50Q291bnQpOwogICAgICAgICBmb3IgKGF1dG8m
IGtleVZhbHVlIDogYWxsVmFsdWVzKSB7Ci0gICAgICAgICAgICByZXN1bHQuYWRkS2V5KElEQktl
eURhdGEoa2V5VmFsdWUpKTsKLSAgICAgICAgICAgIGlmICh0eXBlID09IEluZGV4ZWREQjo6R2V0
QWxsVHlwZTo6VmFsdWVzKQorICAgICAgICAgICAgaWYgKHR5cGUgPT0gSW5kZXhlZERCOjpHZXRB
bGxUeXBlOjpLZXlzKSB7CisgICAgICAgICAgICAgICAgSURCS2V5RGF0YSBrZXlDb3B5IHsga2V5
VmFsdWUgfTsKKyAgICAgICAgICAgICAgICByZXN1bHQuYWRkS2V5KFdURk1vdmUoa2V5Q29weSkp
OworICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgcmVzdWx0LmFkZFZhbHVlKG1f
b2JqZWN0U3RvcmUudmFsdWVGb3JLZXlSYW5nZShrZXlWYWx1ZSkpOwogICAgICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJ
bmRleEN1cnNvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
TWVtb3J5SW5kZXhDdXJzb3IuY3BwCmluZGV4IDhmYmM4OTBiZGI4N2ZkYzU2ODE3YTRmMjFhYWE0
NTA3YjY1OTVlNmQuLjQ3YjBlOTU1ZDVkNTRhNzU0YmQ2ZDM4NDg3NTFiOWE4MDQ1OGMzOWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJ
bmRleEN1cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL01lbW9yeUluZGV4Q3Vyc29yLmNwcApAQCAtNzUsNyArNzUsNyBAQCB2b2lkIE1lbW9yeUlu
ZGV4Q3Vyc29yOjpjdXJyZW50RGF0YShJREJHZXRSZXN1bHQmIGdldFJlc3VsdCkKICAgICAgICAg
Z2V0UmVzdWx0ID0geyBtX2N1cnJlbnRLZXksIG1fY3VycmVudFByaW1hcnlLZXkgfTsKICAgICBl
bHNlIHsKICAgICAgICAgSURCVmFsdWUgdmFsdWUgPSB7IG1faW5kZXgub2JqZWN0U3RvcmUoKS52
YWx1ZUZvcktleShtX2N1cnJlbnRQcmltYXJ5S2V5KSwgeyB9LCB7IH0sIHsgfSB9OwotICAgICAg
ICBnZXRSZXN1bHQgPSB7IG1fY3VycmVudEtleSwgbV9jdXJyZW50UHJpbWFyeUtleSwgV1RGTW92
ZSh2YWx1ZSksIG1faW5kZXgub2JqZWN0U3RvcmUoKS5pbmZvKCkua2V5UGF0aCgpIH07CisgICAg
ICAgIGdldFJlc3VsdCA9IHsgbV9jdXJyZW50S2V5LCBtX2N1cnJlbnRQcmltYXJ5S2V5LCBXVEZN
b3ZlKHZhbHVlKSB9OwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZS5jcHAKaW5kZXgg
ZWQ2ZWJhOTI3ZjFmNGY2YjljMzA2OGY2YjVkODhkZTI5OTcyNjdlYi4uMzBjYTE0M2M3ZDYzNjBl
OGIxMjVhNGYwMmVkYzE2YTI1NzFlMGE4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuY3BwCkBA
IC0zMTAsNyArMzEwLDcgQEAgSURCRXJyb3IgTWVtb3J5T2JqZWN0U3RvcmU6OnVwZGF0ZUluZGV4
ZXNGb3JQdXRSZWNvcmQoY29uc3QgSURCS2V5RGF0YSYga2V5LCBjb24KIAogICAgIGZvciAoYXV0
byYgaW5kZXggOiBtX2luZGV4ZXNCeU5hbWUudmFsdWVzKCkpIHsKICAgICAgICAgSW5kZXhLZXkg
aW5kZXhLZXk7Ci0gICAgICAgIGdlbmVyYXRlSW5kZXhLZXlGb3JWYWx1ZShVbmlxdWVJREJEYXRh
YmFzZTo6ZGF0YWJhc2VUaHJlYWRFeGVjU3RhdGUoKSwgaW5kZXgtPmluZm8oKSwganNWYWx1ZSwg
aW5kZXhLZXksIG1faW5mby5rZXlQYXRoKCksIGtleSk7CisgICAgICAgIGdlbmVyYXRlSW5kZXhL
ZXlGb3JWYWx1ZShVbmlxdWVJREJEYXRhYmFzZTo6ZGF0YWJhc2VUaHJlYWRFeGVjU3RhdGUoKSwg
aW5kZXgtPmluZm8oKSwganNWYWx1ZSwgaW5kZXhLZXkpOwogCiAgICAgICAgIGlmIChpbmRleEtl
eS5pc051bGwoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMzQ0LDcgKzM0NCw3IEBAIElE
QkVycm9yIE1lbW9yeU9iamVjdFN0b3JlOjpwb3B1bGF0ZUluZGV4V2l0aEV4aXN0aW5nUmVjb3Jk
cyhNZW1vcnlJbmRleCYgaW5kZXgpCiAgICAgICAgICAgICByZXR1cm4gSURCRXJyb3IgeyB9Owog
CiAgICAgICAgIEluZGV4S2V5IGluZGV4S2V5OwotICAgICAgICBnZW5lcmF0ZUluZGV4S2V5Rm9y
VmFsdWUoVW5pcXVlSURCRGF0YWJhc2U6OmRhdGFiYXNlVGhyZWFkRXhlY1N0YXRlKCksIGluZGV4
LmluZm8oKSwganNWYWx1ZSwgaW5kZXhLZXksIG1faW5mby5rZXlQYXRoKCksIGl0ZXJhdG9yLmtl
eSk7CisgICAgICAgIGdlbmVyYXRlSW5kZXhLZXlGb3JWYWx1ZShVbmlxdWVJREJEYXRhYmFzZTo6
ZGF0YWJhc2VUaHJlYWRFeGVjU3RhdGUoKSwgaW5kZXguaW5mbygpLCBqc1ZhbHVlLCBpbmRleEtl
eSk7CiAKICAgICAgICAgaWYgKGluZGV4S2V5LmlzTnVsbCgpKQogICAgICAgICAgICAgY29udGlu
dWU7CkBAIC00MDcsNyArNDA3LDcgQEAgVGhyZWFkU2FmZURhdGFCdWZmZXIgTWVtb3J5T2JqZWN0
U3RvcmU6OnZhbHVlRm9yS2V5UmFuZ2UoY29uc3QgSURCS2V5UmFuZ2VEYXRhJgogCiB2b2lkIE1l
bW9yeU9iamVjdFN0b3JlOjpnZXRBbGxSZWNvcmRzKGNvbnN0IElEQktleVJhbmdlRGF0YSYga2V5
UmFuZ2VEYXRhLCBPcHRpb25hbDx1aW50MzJfdD4gY291bnQsIEluZGV4ZWREQjo6R2V0QWxsVHlw
ZSB0eXBlLCBJREJHZXRBbGxSZXN1bHQmIHJlc3VsdCkgY29uc3QKIHsKLSAgICByZXN1bHQgPSB7
IHR5cGUsIG1faW5mby5rZXlQYXRoKCkgfTsKKyAgICByZXN1bHQgPSB7IHR5cGUgfTsKIAogICAg
IHVpbnQzMl90IHRhcmdldENvdW50OwogICAgIGlmIChjb3VudCAmJiBjb3VudC52YWx1ZSgpKQpA
QCAtNDI0LDkgKzQyNCwxMSBAQCB2b2lkIE1lbW9yeU9iamVjdFN0b3JlOjpnZXRBbGxSZWNvcmRz
KGNvbnN0IElEQktleVJhbmdlRGF0YSYga2V5UmFuZ2VEYXRhLCBPcHRpbwogCiAgICAgICAgIHJh
bmdlLmxvd2VyS2V5ID0ga2V5OwogICAgICAgICByYW5nZS5sb3dlck9wZW4gPSB0cnVlOwotICAg
ICAgICBpZiAodHlwZSA9PSBJbmRleGVkREI6OkdldEFsbFR5cGU6OlZhbHVlcykKKworICAgICAg
ICBpZiAodHlwZSA9PSBJbmRleGVkREI6OkdldEFsbFR5cGU6OktleXMpCisgICAgICAgICAgICBy
ZXN1bHQuYWRkS2V5KFdURk1vdmUoa2V5KSk7CisgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJl
c3VsdC5hZGRWYWx1ZSh2YWx1ZUZvcktleShrZXkpKTsKLSAgICAgICAgcmVzdWx0LmFkZEtleShX
VEZNb3ZlKGtleSkpOwogCiAgICAgICAgICsrY3VycmVudENvdW50OwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RT
dG9yZUN1cnNvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
TWVtb3J5T2JqZWN0U3RvcmVDdXJzb3IuY3BwCmluZGV4IDM3MDMzNDdlYjhlNTFiNjdmZjg1NGI0
MWUwYTNlMWQ3ZjJmYzZkNWIuLmY4YjIzZWEzNjJhYjJmZDE2MGRjMjUyNGUwNDlmNWZlMTcyNGE3
ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9N
ZW1vcnlPYmplY3RTdG9yZUN1cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlQ3Vyc29yLmNwcApAQCAtMTk0LDcgKzE5
NCw3IEBAIHZvaWQgTWVtb3J5T2JqZWN0U3RvcmVDdXJzb3I6OmN1cnJlbnREYXRhKElEQkdldFJl
c3VsdCYgZGF0YSkKICAgICAgICAgZGF0YSA9IHsgbV9jdXJyZW50UG9zaXRpb25LZXksIG1fY3Vy
cmVudFBvc2l0aW9uS2V5IH07CiAgICAgZWxzZSB7CiAgICAgICAgIElEQlZhbHVlIHZhbHVlID0g
eyBtX29iamVjdFN0b3JlLnZhbHVlRm9yS2V5UmFuZ2UobV9jdXJyZW50UG9zaXRpb25LZXkpLCB7
IH0sIHsgfSwgeyB9IH07Ci0gICAgICAgIGRhdGEgPSB7IG1fY3VycmVudFBvc2l0aW9uS2V5LCBt
X2N1cnJlbnRQb3NpdGlvbktleSwgV1RGTW92ZSh2YWx1ZSksIG1fb2JqZWN0U3RvcmUuaW5mbygp
LmtleVBhdGgoKSB9OworICAgICAgICBkYXRhID0geyBtX2N1cnJlbnRQb3NpdGlvbktleSwgbV9j
dXJyZW50UG9zaXRpb25LZXksIFdURk1vdmUodmFsdWUpIH07CiAgICAgfQogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFj
a2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9T
UUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDQ4OWRlZDRlM2JkNzA2MWRiODIxY2Q2OWZi
NDAxYzg3MTM0ZGFhYTQuLjYyNDk5NzY1YWI5ZDRhYmQxM2Y1OTcwZDJjZmU1NWYzYjJjMTkzYTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxp
dGVJREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCkBAIC0yOSw3ICsyOSw2IEBACiAj
aWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKICNpbmNsdWRlICJJREJCaW5kaW5nVXRpbGl0
aWVzLmgiCi0jaW5jbHVkZSAiSURCQ3Vyc29ySW5mby5oIgogI2luY2x1ZGUgIklEQkdldEFsbFJl
Y29yZHNEYXRhLmgiCiAjaW5jbHVkZSAiSURCR2V0QWxsUmVzdWx0LmgiCiAjaW5jbHVkZSAiSURC
R2V0UmVjb3JkRGF0YS5oIgpAQCAtMTc1Myw5ICsxNzUyLDcgQEAgSURCRXJyb3IgU1FMaXRlSURC
QmFja2luZ1N0b3JlOjp1cGRhdGVPbmVJbmRleEZvckFkZFJlY29yZChjb25zdCBJREJJbmRleElu
Zm8mIGkKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgfTsKIAogICAgIEluZGV4S2V5IGluZGV4
S2V5OwotICAgIGF1dG8qIG9iamVjdFN0b3JlSW5mbyA9IGluZm9Gb3JPYmplY3RTdG9yZShpbmZv
Lm9iamVjdFN0b3JlSWRlbnRpZmllcigpKTsKLSAgICBBU1NFUlQob2JqZWN0U3RvcmVJbmZvKTsK
LSAgICBnZW5lcmF0ZUluZGV4S2V5Rm9yVmFsdWUoKm1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVj
KCksIGluZm8sIGpzVmFsdWUsIGluZGV4S2V5LCBvYmplY3RTdG9yZUluZm8tPmtleVBhdGgoKSwg
a2V5KTsKKyAgICBnZW5lcmF0ZUluZGV4S2V5Rm9yVmFsdWUoKm1fZ2xvYmFsT2JqZWN0LT5nbG9i
YWxFeGVjKCksIGluZm8sIGpzVmFsdWUsIGluZGV4S2V5KTsKIAogICAgIGlmIChpbmRleEtleS5p
c051bGwoKSkKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgfTsKQEAgLTE3NzUsNyArMTc3Miw3
IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dXBkYXRlQWxsSW5kZXhlc0ZvckFk
ZFJlY29yZChjb25zdCBJREJPYmplY3RTdG9yCiAgICAgYm9vbCBhbnlSZWNvcmRzU3VjY2VlZGVk
ID0gZmFsc2U7CiAgICAgZm9yIChhdXRvJiBpbmRleCA6IGluZm8uaW5kZXhNYXAoKS52YWx1ZXMo
KSkgewogICAgICAgICBJbmRleEtleSBpbmRleEtleTsKLSAgICAgICAgZ2VuZXJhdGVJbmRleEtl
eUZvclZhbHVlKCptX2dsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBpbmRleCwganNWYWx1ZSwg
aW5kZXhLZXksIGluZm8ua2V5UGF0aCgpLCBrZXkpOworICAgICAgICBnZW5lcmF0ZUluZGV4S2V5
Rm9yVmFsdWUoKm1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGluZGV4LCBqc1ZhbHVlLCBp
bmRleEtleSk7CiAKICAgICAgICAgaWYgKGluZGV4S2V5LmlzTnVsbCgpKQogICAgICAgICAgICAg
Y29udGludWU7CkBAIC0yMDA3LDEyICsyMDA0LDEyIEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tp
bmdTdG9yZTo6Z2V0UmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rp
CiAgICAgfQogCiAgICAgaW50NjRfdCByZWNvcmRJRCA9IDA7Ci0gICAgVGhyZWFkU2FmZURhdGFC
dWZmZXIga2V5UmVzdWx0QnVmZmVyLCB2YWx1ZVJlc3VsdEJ1ZmZlcjsKKyAgICBUaHJlYWRTYWZl
RGF0YUJ1ZmZlciByZXN1bHRCdWZmZXI7CiAgICAgewotICAgICAgICBzdGF0aWMgY29uc3QgY2hh
ciogY29uc3QgbG93ZXJPcGVuVXBwZXJPcGVuID0gIlNFTEVDVCBrZXksIHZhbHVlLCBST1dJRCBG
Uk9NIFJlY29yZHMgV0hFUkUgb2JqZWN0U3RvcmVJRCA9ID8gQU5EIGtleSA+IENBU1QoPyBBUyBU
RVhUKSBBTkQga2V5IDwgQ0FTVCg/IEFTIFRFWFQpIE9SREVSIEJZIGtleTsiOwotICAgICAgICBz
dGF0aWMgY29uc3QgY2hhciogY29uc3QgbG93ZXJPcGVuVXBwZXJDbG9zZWQgPSAiU0VMRUNUIGtl
eSwgdmFsdWUsIFJPV0lEIEZST00gUmVjb3JkcyBXSEVSRSBvYmplY3RTdG9yZUlEID0gPyBBTkQg
a2V5ID4gQ0FTVCg/IEFTIFRFWFQpIEFORCBrZXkgPD0gQ0FTVCg/IEFTIFRFWFQpIE9SREVSIEJZ
IGtleTsiOwotICAgICAgICBzdGF0aWMgY29uc3QgY2hhciogY29uc3QgbG93ZXJDbG9zZWRVcHBl
ck9wZW4gPSAiU0VMRUNUIGtleSwgdmFsdWUsIFJPV0lEIEZST00gUmVjb3JkcyBXSEVSRSBvYmpl
Y3RTdG9yZUlEID0gPyBBTkQga2V5ID49IENBU1QoPyBBUyBURVhUKSBBTkQga2V5IDwgQ0FTVCg/
IEFTIFRFWFQpIE9SREVSIEJZIGtleTsiOwotICAgICAgICBzdGF0aWMgY29uc3QgY2hhciogY29u
c3QgbG93ZXJDbG9zZWRVcHBlckNsb3NlZCA9ICJTRUxFQ1Qga2V5LCB2YWx1ZSwgUk9XSUQgRlJP
TSBSZWNvcmRzIFdIRVJFIG9iamVjdFN0b3JlSUQgPSA/IEFORCBrZXkgPj0gQ0FTVCg/IEFTIFRF
WFQpIEFORCBrZXkgPD0gQ0FTVCg/IEFTIFRFWFQpIE9SREVSIEJZIGtleTsiOworICAgICAgICBz
dGF0aWMgY29uc3QgY2hhciogY29uc3QgbG93ZXJPcGVuVXBwZXJPcGVuID0gIlNFTEVDVCB2YWx1
ZSwgUk9XSUQgRlJPTSBSZWNvcmRzIFdIRVJFIG9iamVjdFN0b3JlSUQgPSA/IEFORCBrZXkgPiBD
QVNUKD8gQVMgVEVYVCkgQU5EIGtleSA8IENBU1QoPyBBUyBURVhUKSBPUkRFUiBCWSBrZXk7IjsK
KyAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGxvd2VyT3BlblVwcGVyQ2xvc2VkID0g
IlNFTEVDVCB2YWx1ZSwgUk9XSUQgRlJPTSBSZWNvcmRzIFdIRVJFIG9iamVjdFN0b3JlSUQgPSA/
IEFORCBrZXkgPiBDQVNUKD8gQVMgVEVYVCkgQU5EIGtleSA8PSBDQVNUKD8gQVMgVEVYVCkgT1JE
RVIgQlkga2V5OyI7CisgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBsb3dlckNsb3Nl
ZFVwcGVyT3BlbiA9ICJTRUxFQ1QgdmFsdWUsIFJPV0lEIEZST00gUmVjb3JkcyBXSEVSRSBvYmpl
Y3RTdG9yZUlEID0gPyBBTkQga2V5ID49IENBU1QoPyBBUyBURVhUKSBBTkQga2V5IDwgQ0FTVCg/
IEFTIFRFWFQpIE9SREVSIEJZIGtleTsiOworICAgICAgICBzdGF0aWMgY29uc3QgY2hhciogY29u
c3QgbG93ZXJDbG9zZWRVcHBlckNsb3NlZCA9ICJTRUxFQ1QgdmFsdWUsIFJPV0lEIEZST00gUmVj
b3JkcyBXSEVSRSBvYmplY3RTdG9yZUlEID0gPyBBTkQga2V5ID49IENBU1QoPyBBUyBURVhUKSBB
TkQga2V5IDw9IENBU1QoPyBBUyBURVhUKSBPUkRFUiBCWSBrZXk7IjsKIAogICAgICAgICBzdGF0
aWMgY29uc3QgY2hhciogY29uc3QgbG93ZXJPcGVuVXBwZXJPcGVuS2V5T25seSA9ICJTRUxFQ1Qg
a2V5IEZST00gUmVjb3JkcyBXSEVSRSBvYmplY3RTdG9yZUlEID0gPyBBTkQga2V5ID4gQ0FTVCg/
IEFTIFRFWFQpIEFORCBrZXkgPCBDQVNUKD8gQVMgVEVYVCkgT1JERVIgQlkga2V5OyI7CiAgICAg
ICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBsb3dlck9wZW5VcHBlckNsb3NlZEtleU9ubHkg
PSAiU0VMRUNUIGtleSBGUk9NIFJlY29yZHMgV0hFUkUgb2JqZWN0U3RvcmVJRCA9ID8gQU5EIGtl
eSA+IENBU1QoPyBBUyBURVhUKSBBTkQga2V5IDw9IENBU1QoPyBBUyBURVhUKSBPUkRFUiBCWSBr
ZXk7IjsKQEAgLTIwNjksMzEgKzIwNjYsMjcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0
b3JlOjpnZXRSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGkKICAg
ICAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkVycm9yIGxvb2tpbmcg
dXAgcmVjb3JkIGluIG9iamVjdCBzdG9yZSBieSBrZXkgcmFuZ2UiX3MgfTsKICAgICAgICAgfQog
Ci0gICAgICAgIFZlY3Rvcjx1aW50OF90PiBrZXlCdWZmZXI7Ci0gICAgICAgIHNxbC0+Z2V0Q29s
dW1uQmxvYkFzVmVjdG9yKDAsIGtleUJ1ZmZlcik7Ci0gICAgICAgIGtleVJlc3VsdEJ1ZmZlciA9
IFRocmVhZFNhZmVEYXRhQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShrZXlCdWZmZXIpKTsKKyAgICAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcjsKKyAgICAgICAgc3FsLT5nZXRDb2x1bW5CbG9iQXNW
ZWN0b3IoMCwgYnVmZmVyKTsKKyAgICAgICAgcmVzdWx0QnVmZmVyID0gVGhyZWFkU2FmZURhdGFC
dWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogCi0gICAgICAgIGlmICh0eXBlID09IElE
QkdldFJlY29yZERhdGFUeXBlOjpLZXlBbmRWYWx1ZSkgewotICAgICAgICAgICAgVmVjdG9yPHVp
bnQ4X3Q+IHZhbHVlQnVmZmVyOwotICAgICAgICAgICAgc3FsLT5nZXRDb2x1bW5CbG9iQXNWZWN0
b3IoMSwgdmFsdWVCdWZmZXIpOwotICAgICAgICAgICAgdmFsdWVSZXN1bHRCdWZmZXIgPSBUaHJl
YWRTYWZlRGF0YUJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUodmFsdWVCdWZmZXIpKTsKLSAgICAgICAg
ICAgIHJlY29yZElEID0gc3FsLT5nZXRDb2x1bW5JbnQ2NCgyKTsKLSAgICAgICAgfQotICAgIH0K
LQotICAgIGF1dG8qIGtleVZlY3RvciA9IGtleVJlc3VsdEJ1ZmZlci5kYXRhKCk7Ci0gICAgaWYg
KCFrZXlWZWN0b3IpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gZGVzZXJpYWxpemUg
a2V5IGRhdGEgZnJvbSBkYXRhYmFzZSBmb3IgSURCT2JqZWN0U3RvcmUiKTsKLSAgICAgICAgcmV0
dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiRXJyb3IgZXh0cmFjdGluZyBrZXkgZGF0YSBm
cm9tIGRhdGFiYXNlIGV4ZWN1dGluZyBJREJPYmplY3RTdG9yZSBnZXQiX3MgfTsKLSAgICB9Ci0g
ICAgCi0gICAgSURCS2V5RGF0YSBrZXlEYXRhOwotICAgIGlmICghZGVzZXJpYWxpemVJREJLZXlE
YXRhKGtleVZlY3Rvci0+ZGF0YSgpLCBrZXlWZWN0b3ItPnNpemUoKSwga2V5RGF0YSkpIHsKLSAg
ICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gZGVzZXJpYWxpemUga2V5IGRhdGEgZnJvbSBkYXRh
YmFzZSBmb3IgSURCT2JqZWN0U3RvcmUiKTsKLSAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5r
bm93bkVycm9yLCAiRXJyb3IgZXh0cmFjdGluZyBrZXkgZGF0YSBmcm9tIGRhdGFiYXNlIGV4ZWN1
dGluZyBJREJPYmplY3RTdG9yZSBnZXQiX3MgfTsKKyAgICAgICAgaWYgKHR5cGUgPT0gSURCR2V0
UmVjb3JkRGF0YVR5cGU6OktleUFuZFZhbHVlKQorICAgICAgICAgICAgcmVjb3JkSUQgPSBzcWwt
PmdldENvbHVtbkludDY0KDEpOwogICAgIH0KIAogICAgIGlmICh0eXBlID09IElEQkdldFJlY29y
ZERhdGFUeXBlOjpLZXlPbmx5KSB7CisgICAgICAgIGF1dG8qIHZlY3RvciA9IHJlc3VsdEJ1ZmZl
ci5kYXRhKCk7CisgICAgICAgIGlmICghdmVjdG9yKSB7CisgICAgICAgICAgICBMT0dfRVJST1Io
IlVuYWJsZSB0byBkZXNlcmlhbGl6ZSBrZXkgZGF0YSBmcm9tIGRhdGFiYXNlIGZvciBJREJPYmpl
Y3RTdG9yZS5nZXRLZXkoKSIpOworICAgICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93
bkVycm9yLCAiRXJyb3IgZXh0cmFjdGluZyBrZXkgZGF0YSBmcm9tIGRhdGFiYXNlIGV4ZWN1dGlu
ZyBJREJPYmplY3RTdG9yZS5nZXRLZXkoKSJfcyB9OworICAgICAgICB9CisKKyAgICAgICAgSURC
S2V5RGF0YSBrZXlEYXRhOworICAgICAgICBpZiAoIWRlc2VyaWFsaXplSURCS2V5RGF0YSh2ZWN0
b3ItPmRhdGEoKSwgdmVjdG9yLT5zaXplKCksIGtleURhdGEpKSB7CisgICAgICAgICAgICBMT0df
RVJST1IoIlVuYWJsZSB0byBkZXNlcmlhbGl6ZSBrZXkgZGF0YSBmcm9tIGRhdGFiYXNlIGZvciBJ
REJPYmplY3RTdG9yZS5nZXRLZXkoKSIpOworICAgICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsg
VW5rbm93bkVycm9yLCAiRXJyb3IgZXh0cmFjdGluZyBrZXkgZGF0YSBmcm9tIGRhdGFiYXNlIGV4
ZWN1dGluZyBJREJPYmplY3RTdG9yZS5nZXRLZXkoKSJfcyB9OworICAgICAgICB9CisKICAgICAg
ICAgcmVzdWx0VmFsdWUgPSB7IGtleURhdGEgfTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsg
fTsKICAgICB9CkBAIC0yMTA3LDkgKzIxMDAsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5n
U3RvcmU6OmdldFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aQog
ICAgIGlmICghZXJyb3IuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBlcnJvcjsKIAotICAgIGF1
dG8qIG9iamVjdFN0b3JlSW5mbyA9IGluZm9Gb3JPYmplY3RTdG9yZShvYmplY3RTdG9yZUlEKTsK
LSAgICBBU1NFUlQob2JqZWN0U3RvcmVJbmZvKTsKLSAgICByZXN1bHRWYWx1ZSA9IHsga2V5RGF0
YSwgeyB2YWx1ZVJlc3VsdEJ1ZmZlciwgV1RGTW92ZShibG9iVVJMcyksIHNlc3Npb25JRCwgV1RG
TW92ZShibG9iRmlsZVBhdGhzKSB9LCBvYmplY3RTdG9yZUluZm8tPmtleVBhdGgoKX07CisgICAg
cmVzdWx0VmFsdWUgPSB7IHsgcmVzdWx0QnVmZmVyLCBXVEZNb3ZlKGJsb2JVUkxzKSwgc2Vzc2lv
bklELCBXVEZNb3ZlKGJsb2JGaWxlUGF0aHMpIH0gfTsKICAgICByZXR1cm4gSURCRXJyb3IgeyB9
OwogfQogCkBAIC0yMTI0LDEwICsyMTE1LDEwIEBAIFNRTGl0ZVN0YXRlbWVudCogU1FMaXRlSURC
QmFja2luZ1N0b3JlOjpjYWNoZWRTdGF0ZW1lbnRGb3JHZXRBbGxPYmplY3RTdG9yZVJlY29yCiAg
ICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGxvd2VyT3BlblVwcGVyQ2xvc2VkS2V5ID0gIlNF
TEVDVCBrZXkgRlJPTSBSZWNvcmRzIFdIRVJFIG9iamVjdFN0b3JlSUQgPSA/IEFORCBrZXkgPiBD
QVNUKD8gQVMgVEVYVCkgQU5EIGtleSA8PSBDQVNUKD8gQVMgVEVYVCkgT1JERVIgQlkga2V5OyI7
CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGxvd2VyQ2xvc2VkVXBwZXJPcGVuS2V5ID0g
IlNFTEVDVCBrZXkgRlJPTSBSZWNvcmRzIFdIRVJFIG9iamVjdFN0b3JlSUQgPSA/IEFORCBrZXkg
Pj0gQ0FTVCg/IEFTIFRFWFQpIEFORCBrZXkgPCBDQVNUKD8gQVMgVEVYVCkgT1JERVIgQlkga2V5
OyI7CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGxvd2VyQ2xvc2VkVXBwZXJDbG9zZWRL
ZXkgPSAiU0VMRUNUIGtleSBGUk9NIFJlY29yZHMgV0hFUkUgb2JqZWN0U3RvcmVJRCA9ID8gQU5E
IGtleSA+PSBDQVNUKD8gQVMgVEVYVCkgQU5EIGtleSA8PSBDQVNUKD8gQVMgVEVYVCkgT1JERVIg
Qlkga2V5OyI7Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGxvd2VyT3BlblVwcGVyT3Bl
blZhbHVlID0gIlNFTEVDVCBrZXksIHZhbHVlLCBST1dJRCBGUk9NIFJlY29yZHMgV0hFUkUgb2Jq
ZWN0U3RvcmVJRCA9ID8gQU5EIGtleSA+IENBU1QoPyBBUyBURVhUKSBBTkQga2V5IDwgQ0FTVCg/
IEFTIFRFWFQpIE9SREVSIEJZIGtleTsiOwotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBs
b3dlck9wZW5VcHBlckNsb3NlZFZhbHVlID0gIlNFTEVDVCBrZXksIHZhbHVlLCBST1dJRCBGUk9N
IFJlY29yZHMgV0hFUkUgb2JqZWN0U3RvcmVJRCA9ID8gQU5EIGtleSA+IENBU1QoPyBBUyBURVhU
KSBBTkQga2V5IDw9IENBU1QoPyBBUyBURVhUKSBPUkRFUiBCWSBrZXk7IjsKLSAgICBzdGF0aWMg
Y29uc3QgY2hhciogY29uc3QgbG93ZXJDbG9zZWRVcHBlck9wZW5WYWx1ZSA9ICJTRUxFQ1Qga2V5
LCB2YWx1ZSwgUk9XSUQgRlJPTSBSZWNvcmRzIFdIRVJFIG9iamVjdFN0b3JlSUQgPSA/IEFORCBr
ZXkgPj0gQ0FTVCg/IEFTIFRFWFQpIEFORCBrZXkgPCBDQVNUKD8gQVMgVEVYVCkgT1JERVIgQlkg
a2V5OyI7Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGxvd2VyQ2xvc2VkVXBwZXJDbG9z
ZWRWYWx1ZSA9ICJTRUxFQ1Qga2V5LCB2YWx1ZSwgUk9XSUQgRlJPTSBSZWNvcmRzIFdIRVJFIG9i
amVjdFN0b3JlSUQgPSA/IEFORCBrZXkgPj0gQ0FTVCg/IEFTIFRFWFQpIEFORCBrZXkgPD0gQ0FT
VCg/IEFTIFRFWFQpIE9SREVSIEJZIGtleTsiOworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25z
dCBsb3dlck9wZW5VcHBlck9wZW5WYWx1ZSA9ICJTRUxFQ1QgdmFsdWUsIFJPV0lEIEZST00gUmVj
b3JkcyBXSEVSRSBvYmplY3RTdG9yZUlEID0gPyBBTkQga2V5ID4gQ0FTVCg/IEFTIFRFWFQpIEFO
RCBrZXkgPCBDQVNUKD8gQVMgVEVYVCkgT1JERVIgQlkga2V5OyI7CisgICAgc3RhdGljIGNvbnN0
IGNoYXIqIGNvbnN0IGxvd2VyT3BlblVwcGVyQ2xvc2VkVmFsdWUgPSAiU0VMRUNUIHZhbHVlLCBS
T1dJRCBGUk9NIFJlY29yZHMgV0hFUkUgb2JqZWN0U3RvcmVJRCA9ID8gQU5EIGtleSA+IENBU1Qo
PyBBUyBURVhUKSBBTkQga2V5IDw9IENBU1QoPyBBUyBURVhUKSBPUkRFUiBCWSBrZXk7IjsKKyAg
ICBzdGF0aWMgY29uc3QgY2hhciogY29uc3QgbG93ZXJDbG9zZWRVcHBlck9wZW5WYWx1ZSA9ICJT
RUxFQ1QgdmFsdWUsIFJPV0lEIEZST00gUmVjb3JkcyBXSEVSRSBvYmplY3RTdG9yZUlEID0gPyBB
TkQga2V5ID49IENBU1QoPyBBUyBURVhUKSBBTkQga2V5IDwgQ0FTVCg/IEFTIFRFWFQpIE9SREVS
IEJZIGtleTsiOworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBsb3dlckNsb3NlZFVwcGVy
Q2xvc2VkVmFsdWUgPSAiU0VMRUNUIHZhbHVlLCBST1dJRCBGUk9NIFJlY29yZHMgV0hFUkUgb2Jq
ZWN0U3RvcmVJRCA9ID8gQU5EIGtleSA+PSBDQVNUKD8gQVMgVEVYVCkgQU5EIGtleSA8PSBDQVNU
KD8gQVMgVEVYVCkgT1JERVIgQlkga2V5OyI7CiAKICAgICBpZiAoZ2V0QWxsUmVjb3Jkc0RhdGEu
Z2V0QWxsVHlwZSA9PSBJbmRleGVkREI6OkdldEFsbFR5cGU6OktleXMpIHsKICAgICAgICAgaWYg
KGdldEFsbFJlY29yZHNEYXRhLmtleVJhbmdlRGF0YS5sb3dlck9wZW4pIHsKQEAgLTIxOTIsOSAr
MjE4Myw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0QWxsT2JqZWN0U3Rv
cmVSZWNvcmRzKGNvbnN0IElEQlJlc291cmNlSWRlbnRpCiAgICAgICAgIHJldHVybiBJREJFcnJv
ciB7IFVua25vd25FcnJvciwgIkZhaWxlZCB0byBsb29rIHVwIHJlY29yZCBpbiBvYmplY3Qgc3Rv
cmUgYnkga2V5IHJhbmdlIl9zIH07CiAgICAgfQogCi0gICAgYXV0byogb2JqZWN0U3RvcmVJbmZv
ID0gaW5mb0Zvck9iamVjdFN0b3JlKGdldEFsbFJlY29yZHNEYXRhLm9iamVjdFN0b3JlSWRlbnRp
Zmllcik7Ci0gICAgQVNTRVJUKG9iamVjdFN0b3JlSW5mbyk7Ci0gICAgcmVzdWx0ID0geyBnZXRB
bGxSZWNvcmRzRGF0YS5nZXRBbGxUeXBlLCBvYmplY3RTdG9yZUluZm8tPmtleVBhdGgoKSB9Owor
ICAgIHJlc3VsdCA9IHsgZ2V0QWxsUmVjb3Jkc0RhdGEuZ2V0QWxsVHlwZSB9OwogCiAgICAgdWlu
dDMyX3QgdGFyZ2V0UmVzdWx0czsKICAgICBpZiAoZ2V0QWxsUmVjb3Jkc0RhdGEuY291bnQgJiYg
Z2V0QWxsUmVjb3Jkc0RhdGEuY291bnQudmFsdWUoKSkKQEAgLTIyMDYsMjEgKzIxOTUsMTIgQEAg
SURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRBbGxPYmplY3RTdG9yZVJlY29yZHMo
Y29uc3QgSURCUmVzb3VyY2VJZGVudGkKICAgICB1aW50MzJfdCByZXR1cm5lZFJlc3VsdHMgPSAw
OwogCiAgICAgd2hpbGUgKHNxbFJlc3VsdCA9PSBTUUxJVEVfUk9XICYmIHJldHVybmVkUmVzdWx0
cyA8IHRhcmdldFJlc3VsdHMpIHsKLSAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGtleUJ1ZmZlcjsK
LSAgICAgICAgSURCS2V5RGF0YSBrZXlEYXRhOwotICAgICAgICBzcWwtPmdldENvbHVtbkJsb2JB
c1ZlY3RvcigwLCBrZXlCdWZmZXIpOwotICAgICAgICBpZiAoIWRlc2VyaWFsaXplSURCS2V5RGF0
YShrZXlCdWZmZXIuZGF0YSgpLCBrZXlCdWZmZXIuc2l6ZSgpLCBrZXlEYXRhKSkgewotICAgICAg
ICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gZGVzZXJpYWxpemUga2V5IGRhdGEgZnJvbSBkYXRh
YmFzZSB3aGlsZSBnZXR0aW5nIGFsbCByZWNvcmRzIik7Ci0gICAgICAgICAgICByZXR1cm4gSURC
RXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gZGVzZXJpYWxpemUga2V5IGRhdGEgd2hp
bGUgZ2V0dGluZyBhbGwgcmVjb3JkcyJfcyB9OwotICAgICAgICB9Ci0gICAgICAgIHJlc3VsdC5h
ZGRLZXkoV1RGTW92ZShrZXlEYXRhKSk7Ci0KICAgICAgICAgaWYgKGdldEFsbFJlY29yZHNEYXRh
LmdldEFsbFR5cGUgPT0gSW5kZXhlZERCOjpHZXRBbGxUeXBlOjpWYWx1ZXMpIHsKLSAgICAgICAg
ICAgIFZlY3Rvcjx1aW50OF90PiB2YWx1ZUJ1ZmZlcjsKLSAgICAgICAgICAgIHNxbC0+Z2V0Q29s
dW1uQmxvYkFzVmVjdG9yKDEsIHZhbHVlQnVmZmVyKTsKLSAgICAgICAgICAgIFRocmVhZFNhZmVE
YXRhQnVmZmVyIHZhbHVlUmVzdWx0QnVmZmVyID0gVGhyZWFkU2FmZURhdGFCdWZmZXI6OmNyZWF0
ZShXVEZNb3ZlKHZhbHVlQnVmZmVyKSk7CisgICAgICAgICAgICBWZWN0b3I8dWludDhfdD4gYnVm
ZmVyOworICAgICAgICAgICAgc3FsLT5nZXRDb2x1bW5CbG9iQXNWZWN0b3IoMCwgYnVmZmVyKTsK
KyAgICAgICAgICAgIFRocmVhZFNhZmVEYXRhQnVmZmVyIHJlc3VsdEJ1ZmZlciA9IFRocmVhZFNh
ZmVEYXRhQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKIAotICAgICAgICAgICAgYXV0
byByZWNvcmRJRCA9IHNxbC0+Z2V0Q29sdW1uSW50NjQoMik7CisgICAgICAgICAgICBhdXRvIHJl
Y29yZElEID0gc3FsLT5nZXRDb2x1bW5JbnQ2NCgxKTsKIAogICAgICAgICAgICAgQVNTRVJUKHJl
Y29yZElEKTsKICAgICAgICAgICAgIFZlY3RvcjxTdHJpbmc+IGJsb2JVUkxzLCBibG9iRmlsZVBh
dGhzOwpAQCAtMjIzMSw3ICsyMjExLDE4IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6Z2V0QWxsT2JqZWN0U3RvcmVSZWNvcmRzKGNvbnN0IElEQlJlc291cmNlSWRlbnRpCiAgICAg
ICAgICAgICBpZiAoIWVycm9yLmlzTnVsbCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBlcnJv
cjsKIAotICAgICAgICAgICAgcmVzdWx0LmFkZFZhbHVlKHsgdmFsdWVSZXN1bHRCdWZmZXIsIFdU
Rk1vdmUoYmxvYlVSTHMpLCBzZXNzaW9uSUQsIFdURk1vdmUoYmxvYkZpbGVQYXRocykgfSk7Cisg
ICAgICAgICAgICByZXN1bHQuYWRkVmFsdWUoeyByZXN1bHRCdWZmZXIsIFdURk1vdmUoYmxvYlVS
THMpLCBzZXNzaW9uSUQsIFdURk1vdmUoYmxvYkZpbGVQYXRocykgfSk7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICBWZWN0b3I8dWludDhfdD4ga2V5RGF0YTsKKyAgICAgICAgICAgIElE
QktleURhdGEga2V5OworICAgICAgICAgICAgc3FsLT5nZXRDb2x1bW5CbG9iQXNWZWN0b3IoMCwg
a2V5RGF0YSk7CisKKyAgICAgICAgICAgIGlmICghZGVzZXJpYWxpemVJREJLZXlEYXRhKGtleURh
dGEuZGF0YSgpLCBrZXlEYXRhLnNpemUoKSwga2V5KSkgeworICAgICAgICAgICAgICAgIExPR19F
UlJPUigiVW5hYmxlIHRvIGRlc2VyaWFsaXplIGtleSBkYXRhIGZyb20gZGF0YWJhc2Ugd2hpbGUg
Z2V0dGluZyBhbGwga2V5IHJlY29yZHMiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gSURCRXJy
b3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gZGVzZXJpYWxpemUga2V5IGRhdGEgd2hpbGUg
Z2V0dGluZyBhbGwga2V5IHJlY29yZHMiX3MgfTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgcmVzdWx0LmFkZEtleShXVEZNb3ZlKGtleSkpOwogICAgICAgICB9CiAKICAgICAgICAgKyty
ZXR1cm5lZFJlc3VsdHM7CkBAIC0yMjcyLDE4ICsyMjYzLDE2IEBAIElEQkVycm9yIFNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6Z2V0QWxsSW5kZXhSZWNvcmRzKGNvbnN0IElEQlJlc291cmNlSWRlbnRp
ZmllciYKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQ3Vyc29yIGZh
aWxlZCB3aGlsZSBsb29raW5nIHVwIGluZGV4IHJlY29yZHMgaW4gZGF0YWJhc2UiX3MgfTsKICAg
ICB9CiAKLSAgICBhdXRvKiBvYmplY3RTdG9yZUluZm8gPSBpbmZvRm9yT2JqZWN0U3RvcmUoZ2V0
QWxsUmVjb3Jkc0RhdGEub2JqZWN0U3RvcmVJZGVudGlmaWVyKTsKLSAgICBBU1NFUlQob2JqZWN0
U3RvcmVJbmZvKTsKLSAgICByZXN1bHQgPSB7IGdldEFsbFJlY29yZHNEYXRhLmdldEFsbFR5cGUs
IG9iamVjdFN0b3JlSW5mby0+a2V5UGF0aCgpIH07Ci0KKyAgICByZXN1bHQgPSB7IGdldEFsbFJl
Y29yZHNEYXRhLmdldEFsbFR5cGUgfTsKICAgICB1aW50MzJfdCBjdXJyZW50Q291bnQgPSAwOwog
ICAgIHVpbnQzMl90IHRhcmdldENvdW50ID0gZ2V0QWxsUmVjb3Jkc0RhdGEuY291bnQgPyBnZXRB
bGxSZWNvcmRzRGF0YS5jb3VudC52YWx1ZSgpIDogMDsKICAgICBpZiAoIXRhcmdldENvdW50KQog
ICAgICAgICB0YXJnZXRDb3VudCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgo
KTsKICAgICB3aGlsZSAoIWN1cnNvci0+ZGlkQ29tcGxldGUoKSAmJiAhY3Vyc29yLT5kaWRFcnJv
cigpICYmIGN1cnJlbnRDb3VudCA8IHRhcmdldENvdW50KSB7Ci0gICAgICAgIElEQktleURhdGEg
a2V5Q29weSA9IGN1cnNvci0+Y3VycmVudFByaW1hcnlLZXkoKTsKLSAgICAgICAgcmVzdWx0LmFk
ZEtleShXVEZNb3ZlKGtleUNvcHkpKTsKLSAgICAgICAgaWYgKGdldEFsbFJlY29yZHNEYXRhLmdl
dEFsbFR5cGUgPT0gSW5kZXhlZERCOjpHZXRBbGxUeXBlOjpWYWx1ZXMpCisgICAgICAgIGlmIChn
ZXRBbGxSZWNvcmRzRGF0YS5nZXRBbGxUeXBlID09IEluZGV4ZWREQjo6R2V0QWxsVHlwZTo6S2V5
cykgeworICAgICAgICAgICAgSURCS2V5RGF0YSBrZXlDb3B5ID0gY3Vyc29yLT5jdXJyZW50UHJp
bWFyeUtleSgpOworICAgICAgICAgICAgcmVzdWx0LmFkZEtleShXVEZNb3ZlKGtleUNvcHkpKTsK
KyAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICByZXN1bHQuYWRkVmFsdWUoY3Vyc29yLT5jdXJy
ZW50VmFsdWUoKSA/ICpjdXJzb3ItPmN1cnJlbnRWYWx1ZSgpIDogSURCVmFsdWUoKSk7CiAKICAg
ICAgICAgKytjdXJyZW50Q291bnQ7CkBAIC0yMzMwLDExICsyMzE5LDggQEAgSURCRXJyb3IgU1FM
aXRlSURCQmFja2luZ1N0b3JlOjpnZXRJbmRleFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50
aWZpZXImIHRyYW4KICAgICBlbHNlIHsKICAgICAgICAgaWYgKHR5cGUgPT0gSW5kZXhlZERCOjpJ
bmRleFJlY29yZFR5cGU6OktleSkKICAgICAgICAgICAgIGdldFJlc3VsdCA9IHsgY3Vyc29yLT5j
dXJyZW50UHJpbWFyeUtleSgpIH07Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgYXV0byog
b2JqZWN0U3RvcmVJbmZvID0gaW5mb0Zvck9iamVjdFN0b3JlKG9iamVjdFN0b3JlSUQpOwotICAg
ICAgICAgICAgQVNTRVJUKG9iamVjdFN0b3JlSW5mbyk7Ci0gICAgICAgICAgICBnZXRSZXN1bHQg
PSB7IGN1cnNvci0+Y3VycmVudFByaW1hcnlLZXkoKSwgY3Vyc29yLT5jdXJyZW50UHJpbWFyeUtl
eSgpLCBjdXJzb3ItPmN1cnJlbnRWYWx1ZSgpID8gKmN1cnNvci0+Y3VycmVudFZhbHVlKCkgOiBJ
REJWYWx1ZSgpLCBvYmplY3RTdG9yZUluZm8tPmtleVBhdGgoKSB9OwotICAgICAgICB9CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIGdldFJlc3VsdCA9IHsgY3Vyc29yLT5jdXJyZW50VmFsdWUo
KSA/ICpjdXJzb3ItPmN1cnJlbnRWYWx1ZSgpIDogSURCVmFsdWUoKSwgY3Vyc29yLT5jdXJyZW50
UHJpbWFyeUtleSgpIH07CiAgICAgfQogCiAgICAgcmV0dXJuIElEQkVycm9yIHsgfTsKQEAgLTIz
ODUsOCArMjM3MSw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2Vk
R2V0SW5kZXhSZWNvcmRGb3JPbmVLZXkoaW50NjRfdCBpbmRleElECiAgICAgICAgIHJldHVybiBJ
REJFcnJvciB7IH07CiAgICAgfQogCi0gICAgVmVjdG9yPHVpbnQ4X3Q+IHZhbHVlVmVjdG9yOwot
ICAgIHNxbC0+Z2V0Q29sdW1uQmxvYkFzVmVjdG9yKDEsIHZhbHVlVmVjdG9yKTsKKyAgICBzcWwt
PmdldENvbHVtbkJsb2JBc1ZlY3RvcigxLCBrZXlWZWN0b3IpOwogCiAgICAgaW50NjRfdCByZWNv
cmRJRCA9IHNxbC0+Z2V0Q29sdW1uSW50NjQoMik7CiAgICAgVmVjdG9yPFN0cmluZz4gYmxvYlVS
THMsIGJsb2JGaWxlUGF0aHM7CkBAIC0yMzk3LDkgKzIzODIsNyBAQCBJREJFcnJvciBTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZEdldEluZGV4UmVjb3JkRm9yT25lS2V5KGludDY0X3Qg
aW5kZXhJRAogICAgIGlmICghZXJyb3IuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBlcnJvcjsK
IAotICAgIGF1dG8qIG9iamVjdFN0b3JlSW5mbyA9IGluZm9Gb3JPYmplY3RTdG9yZShvYmplY3RT
dG9yZUlEKTsKLSAgICBBU1NFUlQob2JqZWN0U3RvcmVJbmZvKTsKLSAgICBnZXRSZXN1bHQgPSB7
IG9iamVjdFN0b3JlS2V5LCBvYmplY3RTdG9yZUtleSwgeyBUaHJlYWRTYWZlRGF0YUJ1ZmZlcjo6
Y3JlYXRlKFdURk1vdmUodmFsdWVWZWN0b3IpKSwgV1RGTW92ZShibG9iVVJMcyksIHNlc3Npb25J
RCwgV1RGTW92ZShibG9iRmlsZVBhdGhzKSB9LCBvYmplY3RTdG9yZUluZm8tPmtleVBhdGgoKSB9
OworICAgIGdldFJlc3VsdCA9IHsgeyBUaHJlYWRTYWZlRGF0YUJ1ZmZlcjo6Y3JlYXRlKFdURk1v
dmUoa2V5VmVjdG9yKSksIFdURk1vdmUoYmxvYlVSTHMpLCBzZXNzaW9uSUQsIFdURk1vdmUoYmxv
YkZpbGVQYXRocykgfSwgb2JqZWN0U3RvcmVLZXkgfTsKICAgICByZXR1cm4gSURCRXJyb3IgeyB9
OwogfQogCkBAIC0yNTY0LDkgKzI1NDcsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3Rv
cmU6Om9wZW5DdXJzb3IoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdAogCiAg
ICAgbV9jdXJzb3JzLnNldChjdXJzb3ItPmlkZW50aWZpZXIoKSwgY3Vyc29yKTsKIAotICAgIGF1
dG8qIG9iamVjdFN0b3JlSW5mbyA9IGluZm9Gb3JPYmplY3RTdG9yZShpbmZvLm9iamVjdFN0b3Jl
SWRlbnRpZmllcigpKTsKLSAgICBBU1NFUlQob2JqZWN0U3RvcmVJbmZvKTsKLSAgICBjdXJzb3It
PmN1cnJlbnREYXRhKHJlc3VsdCwgb2JqZWN0U3RvcmVJbmZvLT5rZXlQYXRoKCkpOworICAgIGN1
cnNvci0+Y3VycmVudERhdGEocmVzdWx0KTsKICAgICByZXR1cm4gSURCRXJyb3IgeyB9OwogfQog
CkBAIC0yNjA5LDkgKzI1OTAsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6Oml0
ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFucwogICAgICAgICB9
CiAgICAgfQogCi0gICAgYXV0byogb2JqZWN0U3RvcmVJbmZvID0gaW5mb0Zvck9iamVjdFN0b3Jl
KGN1cnNvci0+b2JqZWN0U3RvcmVJRCgpKTsKLSAgICBBU1NFUlQob2JqZWN0U3RvcmVJbmZvKTsK
LSAgICBjdXJzb3ItPmN1cnJlbnREYXRhKHJlc3VsdCwgb2JqZWN0U3RvcmVJbmZvLT5rZXlQYXRo
KCkpOworICAgIGN1cnNvci0+Y3VycmVudERhdGEocmVzdWx0KTsKICAgICByZXR1cm4gSURCRXJy
b3IgeyB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwCmluZGV4IGNhZWFjZjI0MTJiNjBkMThm
M2E1OTQ0YmFkYjJkNzFjMWU5N2M4MTIuLjg3OGM4YmQxOTIyZTM2YjJiZTdlNDllMTg1MGY0Nzlh
YWViMWNjMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9TUUxpdGVJREJDdXJzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgU1FM
aXRlSURCQ3Vyc29yOjp+U1FMaXRlSURCQ3Vyc29yKCkKICAgICAgICAgbV90cmFuc2FjdGlvbi0+
Y2xvc2VDdXJzb3IoKnRoaXMpOwogfQogCi12b2lkIFNRTGl0ZUlEQkN1cnNvcjo6Y3VycmVudERh
dGEoSURCR2V0UmVzdWx0JiByZXN1bHQsIGNvbnN0IE9wdGlvbmFsPElEQktleVBhdGg+JiBrZXlQ
YXRoKQordm9pZCBTUUxpdGVJREJDdXJzb3I6OmN1cnJlbnREYXRhKElEQkdldFJlc3VsdCYgcmVz
dWx0KQogewogICAgIEFTU0VSVCghbV9mZXRjaGVkUmVjb3Jkcy5pc0VtcHR5KCkpOwogCkBAIC0x
MTIsNyArMTEyLDcgQEAgdm9pZCBTUUxpdGVJREJDdXJzb3I6OmN1cnJlbnREYXRhKElEQkdldFJl
c3VsdCYgcmVzdWx0LCBjb25zdCBPcHRpb25hbDxJREJLZXlQYXQKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIHJlc3VsdCA9IHsgY3VycmVudFJlY29yZC5yZWNvcmQua2V5LCBjdXJyZW50
UmVjb3JkLnJlY29yZC5wcmltYXJ5S2V5LCBjdXJyZW50UmVjb3JkLnJlY29yZC52YWx1ZSA/ICpj
dXJyZW50UmVjb3JkLnJlY29yZC52YWx1ZSA6IElEQlZhbHVlKCksIGtleVBhdGh9OworICAgIHJl
c3VsdCA9IHsgY3VycmVudFJlY29yZC5yZWNvcmQua2V5LCBjdXJyZW50UmVjb3JkLnJlY29yZC5w
cmltYXJ5S2V5LCBjdXJyZW50UmVjb3JkLnJlY29yZC52YWx1ZSA/ICpjdXJyZW50UmVjb3JkLnJl
Y29yZC52YWx1ZSA6IElEQlZhbHVlKCkgfTsKIH0KIAogc3RhdGljIFN0cmluZyBidWlsZEluZGV4
U3RhdGVtZW50KGNvbnN0IElEQktleVJhbmdlRGF0YSYga2V5UmFuZ2UsIEluZGV4ZWREQjo6Q3Vy
c29yRGlyZWN0aW9uIGN1cnNvckRpcmVjdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuaAppbmRleCA4Y2My
YWI5MzE4ZTE2MmI1MjY3ZDNhOGMzMDM5ZWJmOWVhOTRjZjM0Li5mNzhlZTc2NTkxZjEzMjc1ZmE0
YWZhOTQzZTk2OTE4OTI1ZDg1MWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5oCkBAIC03OSw3ICs3OSw3
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgb2JqZWN0U3RvcmVSZWNvcmRzQ2hhbmdlZCgpOwogCi0g
ICAgdm9pZCBjdXJyZW50RGF0YShJREJHZXRSZXN1bHQmLCBjb25zdCBPcHRpb25hbDxJREJLZXlQ
YXRoPiYpOworICAgIHZvaWQgY3VycmVudERhdGEoSURCR2V0UmVzdWx0Jik7CiAKIHByaXZhdGU6
CiAgICAgYm9vbCBlc3RhYmxpc2hTdGF0ZW1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3Bw
CmluZGV4IDkwNzdlNThiODQ4YWZiYWNiYzk1MzA5NmE5MjlmYTY2N2U1NmVlOTcuLjlhZTQ5MjI4
MTdmYWJjYTc0ZmM1NDA4YjFjNWYzN2U3ZjkxYTk1M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNl
LmNwcApAQCAtMTI1MSw2ICsxMjUxLDM1IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnBlcmZv
cm1QdXRPckFkZCh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGNvbnN0IElEQlJlCiAgICAg
ICAgIH0KICAgICB9CiAKKyAgICAvLyAzLjQuMS4yIE9iamVjdCBTdG9yZSBTdG9yYWdlIE9wZXJh
dGlvbgorICAgIC8vIElmIE9iamVjdFN0b3JlIGhhcyBhIGtleSBwYXRoIGFuZCB0aGUga2V5IGlz
IGF1dG9nZW5lcmF0ZWQsIHRoZW4gaW5qZWN0IHRoZSBrZXkgaW50byB0aGUgdmFsdWUKKyAgICAv
LyB1c2luZyBzdGVwcyB0byBhc3NpZ24gYSBrZXkgdG8gYSB2YWx1ZSB1c2luZyBhIGtleSBwYXRo
LgorICAgIFRocmVhZFNhZmVEYXRhQnVmZmVyIGluamVjdGVkUmVjb3JkVmFsdWU7CisgICAgaWYg
KHVzZWRLZXlJc0dlbmVyYXRlZCAmJiBvYmplY3RTdG9yZUluZm8tPmtleVBhdGgoKSkgeworICAg
ICAgICBWTSYgdm0gPSBkYXRhYmFzZVRocmVhZFZNKCk7CisgICAgICAgIEpTTG9ja0hvbGRlciBs
b2NrZXIodm0pOworICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisKKyAgICAgICAgYXV0byB2YWx1ZSA9IGRlc2VyaWFsaXplSURCVmFsdWVUb0pTVmFsdWUoZGF0
YWJhc2VUaHJlYWRFeGVjU3RhdGUoKSwgb3JpZ2luYWxSZWNvcmRWYWx1ZS5kYXRhKCkpOworICAg
ICAgICBpZiAodmFsdWUuaXNVbmRlZmluZWQoKSkgeworICAgICAgICAgICAgcG9zdERhdGFiYXNl
VGFza1JlcGx5KGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNl
OjpkaWRQZXJmb3JtUHV0T3JBZGQsIGNhbGxiYWNrSWRlbnRpZmllciwgSURCRXJyb3IoQ29uc3Ry
YWludEVycm9yLCAiVW5hYmxlIHRvIGRlc2VyaWFsaXplIHJlY29yZCB2YWx1ZSBmb3IgcmVjb3Jk
IGtleSBpbmplY3Rpb24iX3MpLCB1c2VkS2V5KSk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKworICAgICAgICBpZiAoIWluamVjdElEQktleUludG9TY3JpcHRWYWx1ZShkYXRhYmFz
ZVRocmVhZEV4ZWNTdGF0ZSgpLCB1c2VkS2V5LCB2YWx1ZSwgb2JqZWN0U3RvcmVJbmZvLT5rZXlQ
YXRoKCkudmFsdWUoKSkpIHsKKyAgICAgICAgICAgIHBvc3REYXRhYmFzZVRhc2tSZXBseShjcmVh
dGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUGVyZm9ybVB1
dE9yQWRkLCBjYWxsYmFja0lkZW50aWZpZXIsIElEQkVycm9yKENvbnN0cmFpbnRFcnJvciwgIlVu
YWJsZSB0byBpbmplY3QgcmVjb3JkIGtleSBpbnRvIHJlY29yZCB2YWx1ZSJfcyksIHVzZWRLZXkp
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGF1dG8gc2VyaWFs
aXplZFZhbHVlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoZGF0YWJhc2VUaHJlYWRF
eGVjU3RhdGUoKSwgdmFsdWUpOworICAgICAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9u
KCkpKSB7CisgICAgICAgICAgICBwb3N0RGF0YWJhc2VUYXNrUmVwbHkoY3JlYXRlQ3Jvc3NUaHJl
YWRUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRpZFBlcmZvcm1QdXRPckFkZCwgY2Fs
bGJhY2tJZGVudGlmaWVyLCBJREJFcnJvcihDb25zdHJhaW50RXJyb3IsICJVbmFibGUgdG8gc2Vy
aWFsaXplIHJlY29yZCB2YWx1ZSBhZnRlciBpbmplY3RpbmcgcmVjb3JkIGtleSJfcyksIHVzZWRL
ZXkpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGluamVjdGVk
UmVjb3JkVmFsdWUgPSBUaHJlYWRTYWZlRGF0YUJ1ZmZlcjo6Y29weVZlY3RvcihzZXJpYWxpemVk
VmFsdWUtPmRhdGEoKSk7CisgICAgfQorCiAgICAgLy8gMy40LjEgT2JqZWN0IFN0b3JlIFN0b3Jh
Z2UgT3BlcmF0aW9uCiAgICAgLy8gLi4uSWYgYSByZWNvcmQgYWxyZWFkeSBleGlzdHMgaW4gc3Rv
cmUgLi4uCiAgICAgLy8gdGhlbiByZW1vdmUgdGhlIHJlY29yZCBmcm9tIHN0b3JlIHVzaW5nIHRo
ZSBzdGVwcyBmb3IgZGVsZXRpbmcgcmVjb3JkcyBmcm9tIGFuIG9iamVjdCBzdG9yZS4uLgpAQCAt
MTI2MSw3ICsxMjkwLDEwIEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1QdXRPckFk
ZCh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGNvbnN0IElEQlJlCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBlcnJvciA9IG1fYmFja2luZ1N0b3JlLT5hZGRSZWNvcmQodHJhbnNh
Y3Rpb25JZGVudGlmaWVyLCAqb2JqZWN0U3RvcmVJbmZvLCB1c2VkS2V5LCBvcmlnaW5hbFJlY29y
ZFZhbHVlKTsKKyAgICBpZiAoaW5qZWN0ZWRSZWNvcmRWYWx1ZS5kYXRhKCkpCisgICAgICAgIGVy
cm9yID0gbV9iYWNraW5nU3RvcmUtPmFkZFJlY29yZCh0cmFuc2FjdGlvbklkZW50aWZpZXIsICpv
YmplY3RTdG9yZUluZm8sIHVzZWRLZXksIHsgaW5qZWN0ZWRSZWNvcmRWYWx1ZSwgb3JpZ2luYWxS
ZWNvcmRWYWx1ZS5ibG9iVVJMcygpLCBvcmlnaW5hbFJlY29yZFZhbHVlLnNlc3Npb25JRCgpLCBv
cmlnaW5hbFJlY29yZFZhbHVlLmJsb2JGaWxlUGF0aHMoKSB9KTsKKyAgICBlbHNlCisgICAgICAg
IGVycm9yID0gbV9iYWNraW5nU3RvcmUtPmFkZFJlY29yZCh0cmFuc2FjdGlvbklkZW50aWZpZXIs
ICpvYmplY3RTdG9yZUluZm8sIHVzZWRLZXksIG9yaWdpbmFsUmVjb3JkVmFsdWUpOwogCiAgICAg
aWYgKCFlcnJvci5pc051bGwoKSkgewogICAgICAgICBwb3N0RGF0YWJhc2VUYXNrUmVwbHkoY3Jl
YXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRpZFBlcmZvcm1Q
dXRPckFkZCwgY2FsbGJhY2tJZGVudGlmaWVyLCBlcnJvciwgdXNlZEtleSkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc3VsdERhdGEu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc3VsdERh
dGEuY3BwCmluZGV4IGE4OTQ1NGU2ZTYzZjZlYjdjYjUwMzhiOWM5MzJmYTIxODYzM2VkYzYuLjdm
ZjA4ZWU0OThlNzc2NmQxYmYyYWE2YjE1M2JmZmViNWQ2NzBhYTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzdWx0RGF0YS5j
cHAKQEAgLTIzMywxMiArMjMzLDYgQEAgY29uc3QgSURCR2V0UmVzdWx0JiBJREJSZXN1bHREYXRh
OjpnZXRSZXN1bHQoKSBjb25zdAogICAgIHJldHVybiAqbV9nZXRSZXN1bHQ7CiB9CiAKLUlEQkdl
dFJlc3VsdCYgSURCUmVzdWx0RGF0YTo6Z2V0UmVzdWx0UmVmKCkKLXsKLSAgICBSRUxFQVNFX0FT
U0VSVChtX2dldFJlc3VsdCk7Ci0gICAgcmV0dXJuICptX2dldFJlc3VsdDsKLX0KLQogY29uc3Qg
SURCR2V0QWxsUmVzdWx0JiBJREJSZXN1bHREYXRhOjpnZXRBbGxSZXN1bHQoKSBjb25zdAogewog
ICAgIFJFTEVBU0VfQVNTRVJUKG1fZ2V0QWxsUmVzdWx0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzdWx0RGF0YS5oCmluZGV4IDcx
N2IzZTJkZTUzYjM1M2ZlYjZkZDc1NTAwYTBlNWU2OGM5NDdhM2YuLjgwZDhjZTkzYWNjMDExOTA5
NzA3OTQzMDkxZTAxOWJjMTgwYTI0YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc3VsdERhdGEuaApAQCAtMTA3LDcgKzEwNyw2
IEBAIHB1YmxpYzoKICAgICB1aW50NjRfdCByZXN1bHRJbnRlZ2VyKCkgY29uc3QgeyByZXR1cm4g
bV9yZXN1bHRJbnRlZ2VyOyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBJREJHZXRSZXN1
bHQmIGdldFJlc3VsdCgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIElEQkdldFJlc3VsdCYg
Z2V0UmVzdWx0UmVmKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgSURCR2V0QWxsUmVzdWx0
JiBnZXRBbGxSZXN1bHQoKSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIElEQlJlc3VsdERh
dGEoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdV
dGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxp
dGllcy5jcHAKaW5kZXggYWQ5MjM0YzdjZDllMjQ1OGY2NzY0Y2M5MGM0MzlkYjE3ZjI0ZGEyMy4u
ZGExMDZlYzMwMDdhY2FhZWMxZTQ2NWE1YTViNzhjODhjYjE4NDZjZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5jcHAKQEAgLTMxLDcg
KzMxLDYgQEAKIAogI2luY2x1ZGUgIklEQkJpbmRpbmdVdGlsaXRpZXMuaCIKIAotI2luY2x1ZGUg
IkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJJREJJbmRleEluZm8uaCIKICNpbmNsdWRlICJJ
REJLZXkuaCIKICNpbmNsdWRlICJJREJLZXlEYXRhLmgiCkBAIC00Miw3ICs0MSw2IEBACiAjaW5j
bHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNET01Db252ZXJ0RGF0ZS5oIgogI2lu
Y2x1ZGUgIkpTRE9NQ29udmVydE51bGxhYmxlLmgiCi0jaW5jbHVkZSAiSlNET01FeGNlcHRpb25I
YW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRmlsZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNp
bmNsdWRlICJNZXNzYWdlUG9ydC5oIgpAQCAtMzI2LDEyICszMjQsNiBAQCBib29sIGluamVjdElE
QktleUludG9TY3JpcHRWYWx1ZShFeGVjU3RhdGUmIGV4ZWMsIGNvbnN0IElEQktleURhdGEmIGtl
eURhdGEsIEpTVgogICAgIGlmICgha2V5KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAv
LyBEbyBub3Qgc2V0IGlmIG9iamVjdCBhbHJlYWR5IGhhcyB0aGUgY29ycmVjdCBwcm9wZXJ0eSB2
YWx1ZS4KLSAgICBhdXRvIGpzS2V5ID0gdG9KUyhleGVjLCAqZXhlYy5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCksIGtleS5nZXQoKSk7Ci0gICAgSlNWYWx1ZSBleGlzdGluZ0tleTsKLSAgICBpZiAoZ2V0
KGV4ZWMsIHBhcmVudCwga2V5UGF0aEVsZW1lbnRzLmxhc3QoKSwgZXhpc3RpbmdLZXkpICYmIGV4
aXN0aW5nS2V5ID09IGpzS2V5KQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQogICAgIGlmICghc2V0
KGV4ZWMsIHBhcmVudCwga2V5UGF0aEVsZW1lbnRzLmxhc3QoKSwgdG9KUyhleGVjLCAqZXhlYy5s
ZXhpY2FsR2xvYmFsT2JqZWN0KCksIGtleS5nZXQoKSkpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKQEAgLTQxOSwxMyArNDExLDkgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUq
IHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdAogICAgIHJldHVy
biB0b0pTKCpzdGF0ZSwgKmdsb2JhbE9iamVjdCwga2V5RGF0YS5tYXliZUNyZWF0ZUlEQktleSgp
LmdldCgpKTsKIH0KIAotc3RhdGljIFZlY3RvcjxJREJLZXlEYXRhPiBjcmVhdGVLZXlQYXRoQXJy
YXkoRXhlY1N0YXRlJiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBjb25zdCBJREJJbmRleEluZm8mIGlu
Zm8sIE9wdGlvbmFsPElEQktleVBhdGg+IG9iamVjdFN0b3JlS2V5UGF0aCwgY29uc3QgSURCS2V5
RGF0YSYgb2JqZWN0U3RvcmVLZXkpCitzdGF0aWMgVmVjdG9yPElEQktleURhdGE+IGNyZWF0ZUtl
eVBhdGhBcnJheShFeGVjU3RhdGUmIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIGNvbnN0IElEQkluZGV4
SW5mbyYgaW5mbykKIHsKICAgICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VWaXNpdG9yKFsmXShj
b25zdCBTdHJpbmcmIHN0cmluZykgLT4gVmVjdG9yPElEQktleURhdGE+IHsKLSAgICAgICAgLy8g
VmFsdWUgZG9lc24ndCBjb250YWluIGF1dG8tZ2VuZXJhdGVkIGtleSwgc28gd2UgbmVlZCB0byBt
YW51YWxseSBhZGQga2V5IGlmIGl0IGlzIHBvc3NpYmx5IGF1dG8tZ2VuZXJhdGVkLgotICAgICAg
ICBpZiAob2JqZWN0U3RvcmVLZXlQYXRoICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5n
PihvYmplY3RTdG9yZUtleVBhdGgudmFsdWUoKSkgJiYgSURCS2V5UGF0aChzdHJpbmcpID09IG9i
amVjdFN0b3JlS2V5UGF0aC52YWx1ZSgpKQotICAgICAgICAgICAgcmV0dXJuIHsgb2JqZWN0U3Rv
cmVLZXkgfTsKLQogICAgICAgICBhdXRvIGlkYktleSA9IGludGVybmFsQ3JlYXRlSURCS2V5RnJv
bVNjcmlwdFZhbHVlQW5kS2V5UGF0aChleGVjLCB2YWx1ZSwgc3RyaW5nKTsKICAgICAgICAgaWYg
KCFpZGJLZXkpCiAgICAgICAgICAgICByZXR1cm4geyB9OwpAQCAtNDQwLDE0ICs0MjgsMTAgQEAg
c3RhdGljIFZlY3RvcjxJREJLZXlEYXRhPiBjcmVhdGVLZXlQYXRoQXJyYXkoRXhlY1N0YXRlJiBl
eGVjLCBKU1ZhbHVlIHZhbHVlLCBjb24KICAgICB9LCBbJl0oY29uc3QgVmVjdG9yPFN0cmluZz4m
IHZlY3RvcikgLT4gVmVjdG9yPElEQktleURhdGE+IHsKICAgICAgICAgVmVjdG9yPElEQktleURh
dGE+IGtleXM7CiAgICAgICAgIGZvciAoYXV0byYgZW50cnkgOiB2ZWN0b3IpIHsKLSAgICAgICAg
ICAgIGlmIChvYmplY3RTdG9yZUtleVBhdGggJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJp
bmc+KG9iamVjdFN0b3JlS2V5UGF0aC52YWx1ZSgpKSAmJiBJREJLZXlQYXRoKGVudHJ5KSA9PSBv
YmplY3RTdG9yZUtleVBhdGgudmFsdWUoKSkKLSAgICAgICAgICAgICAgICBrZXlzLmFwcGVuZChv
YmplY3RTdG9yZUtleSk7Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBhdXRv
IGtleSA9IGludGVybmFsQ3JlYXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aChleGVj
LCB2YWx1ZSwgZW50cnkpOwotICAgICAgICAgICAgICAgIGlmICgha2V5IHx8ICFrZXktPmlzVmFs
aWQoKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICAgICAgICAgICAgICBr
ZXlzLmFwcGVuZChrZXkuZ2V0KCkpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgYXV0byBr
ZXkgPSBpbnRlcm5hbENyZWF0ZUlEQktleUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgoZXhlYywg
dmFsdWUsIGVudHJ5KTsKKyAgICAgICAgICAgIGlmICgha2V5IHx8ICFrZXktPmlzVmFsaWQoKSkK
KyAgICAgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICAgICAga2V5cy5hcHBlbmQoa2V5
LmdldCgpKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4ga2V5czsKICAgICB9KTsKQEAgLTQ1
NSwzMSArNDM5LDE2IEBAIHN0YXRpYyBWZWN0b3I8SURCS2V5RGF0YT4gY3JlYXRlS2V5UGF0aEFy
cmF5KEV4ZWNTdGF0ZSYgZXhlYywgSlNWYWx1ZSB2YWx1ZSwgY29uCiAgICAgcmV0dXJuIFdURjo6
dmlzaXQodmlzaXRvciwgaW5mby5rZXlQYXRoKCkpOwogfQogCi12b2lkIGdlbmVyYXRlSW5kZXhL
ZXlGb3JWYWx1ZShFeGVjU3RhdGUmIGV4ZWMsIGNvbnN0IElEQkluZGV4SW5mbyYgaW5mbywgSlNW
YWx1ZSB2YWx1ZSwgSW5kZXhLZXkmIG91dEtleSwgY29uc3QgT3B0aW9uYWw8SURCS2V5UGF0aD4m
IG9iamVjdFN0b3JlS2V5UGF0aCwgY29uc3QgSURCS2V5RGF0YSYgb2JqZWN0U3RvcmVLZXkpCit2
b2lkIGdlbmVyYXRlSW5kZXhLZXlGb3JWYWx1ZShFeGVjU3RhdGUmIGV4ZWMsIGNvbnN0IElEQklu
ZGV4SW5mbyYgaW5mbywgSlNWYWx1ZSB2YWx1ZSwgSW5kZXhLZXkmIG91dEtleSkKIHsKLSAgICBh
dXRvIGtleURhdGFzID0gY3JlYXRlS2V5UGF0aEFycmF5KGV4ZWMsIHZhbHVlLCBpbmZvLCBvYmpl
Y3RTdG9yZUtleVBhdGgsIG9iamVjdFN0b3JlS2V5KTsKKyAgICBhdXRvIGtleURhdGFzID0gY3Jl
YXRlS2V5UGF0aEFycmF5KGV4ZWMsIHZhbHVlLCBpbmZvKTsKKwogICAgIGlmIChrZXlEYXRhcy5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIG91dEtleSA9IEluZGV4S2V5KFdURk1v
dmUoa2V5RGF0YXMpKTsKIH0KIAotT3B0aW9uYWw8SlNDOjpKU1ZhbHVlPiBkZXNlcmlhbGl6ZUlE
QlZhbHVlV2l0aEtleUluamVjdGlvbihFeGVjU3RhdGUmIHN0YXRlLCBjb25zdCBJREJWYWx1ZSYg
dmFsdWUsIGNvbnN0IElEQktleURhdGEmIGtleSwgY29uc3QgT3B0aW9uYWw8SURCS2V5UGF0aD4m
IGtleVBhdGgpCi17Ci0gICAgYXV0byBqc1ZhbHVlID0gZGVzZXJpYWxpemVJREJWYWx1ZVRvSlNW
YWx1ZShzdGF0ZSwgdmFsdWUpOwotICAgIGlmIChqc1ZhbHVlLmlzVW5kZWZpbmVkKCkgfHwgIWtl
eVBhdGggfHwgIVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihrZXlQYXRoLnZhbHVlKCkp
IHx8ICFpc0lEQktleVBhdGhWYWxpZChrZXlQYXRoLnZhbHVlKCkpKQotICAgICAgICByZXR1cm4g
anNWYWx1ZTsKLQotICAgIEpTTG9ja0hvbGRlciBsb2NrZXIoc3RhdGUudm0oKSk7Ci0gICAgaWYg
KCFpbmplY3RJREJLZXlJbnRvU2NyaXB0VmFsdWUoc3RhdGUsIGtleSwganNWYWx1ZSwga2V5UGF0
aC52YWx1ZSgpKSkgewotICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHN0YXRlLnZtKCkpOwotICAgICAgICBwcm9wYWdhdGVFeGNlcHRpb24oc3RhdGUsIHRocm93
U2NvcGUsIEV4Y2VwdGlvbihVbmtub3duRXJyb3IsICJDYW5ub3QgaW5qZWN0IGtleSBpbnRvIHNj
cmlwdCB2YWx1ZSJfcykpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIH0KLQot
ICAgIHJldHVybiBqc1ZhbHVlOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRp
ZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuaAppbmRleCBmMDY3Y2IwYTgzOGZlNDEwYTVlZjMz
MTRkMmIwZDk0NGI2ZTUwNTVmLi5jNDkxZmVlN2Y2Mjc3YmZkZGU5MzU2NThhMDE5NTdlNjgzNmEz
M2E2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRp
bGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxp
dGllcy5oCkBAIC01MCwxNyArNTAsMTUgQEAgUmVmUHRyPElEQktleT4gbWF5YmVDcmVhdGVJREJL
ZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoKEpTQzo6RXhlY1N0YXRlJiwgY29uc3QKIGJvb2wg
Y2FuSW5qZWN0SURCS2V5SW50b1NjcmlwdFZhbHVlKEpTQzo6RXhlY1N0YXRlJiwgY29uc3QgSlND
OjpKU1ZhbHVlJiwgY29uc3QgSURCS2V5UGF0aCYpOwogYm9vbCBpbmplY3RJREJLZXlJbnRvU2Ny
aXB0VmFsdWUoSlNDOjpFeGVjU3RhdGUmLCBjb25zdCBJREJLZXlEYXRhJiwgSlNDOjpKU1ZhbHVl
LCBjb25zdCBJREJLZXlQYXRoJik7CiAKLXZvaWQgZ2VuZXJhdGVJbmRleEtleUZvclZhbHVlKEpT
Qzo6RXhlY1N0YXRlJiwgY29uc3QgSURCSW5kZXhJbmZvJiwgSlNDOjpKU1ZhbHVlLCBJbmRleEtl
eSYgb3V0S2V5LCBjb25zdCBPcHRpb25hbDxJREJLZXlQYXRoPiYsIGNvbnN0IElEQktleURhdGEm
KTsKK3ZvaWQgZ2VuZXJhdGVJbmRleEtleUZvclZhbHVlKEpTQzo6RXhlY1N0YXRlJiwgY29uc3Qg
SURCSW5kZXhJbmZvJiwgSlNDOjpKU1ZhbHVlLCBJbmRleEtleSYgb3V0S2V5KTsKIAogUmVmPElE
QktleT4gc2NyaXB0VmFsdWVUb0lEQktleShKU0M6OkV4ZWNTdGF0ZSYsIGNvbnN0IEpTQzo6SlNW
YWx1ZSYpOwogCi1KU0M6OkpTVmFsdWUgZGVzZXJpYWxpemVJREJWYWx1ZVRvSlNWYWx1ZShKU0M6
OkV4ZWNTdGF0ZSYsIGNvbnN0IElEQlZhbHVlJiwgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0
cmluZz4+Jik7CiBKU0M6OkpTVmFsdWUgZGVzZXJpYWxpemVJREJWYWx1ZVRvSlNWYWx1ZShKU0M6
OkV4ZWNTdGF0ZSYsIGNvbnN0IElEQlZhbHVlJik7CiBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4
ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgY29uc3QgSURCVmFsdWUmKTsKIEpTQzo6SlNW
YWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU0dsb2JhbE9iamVjdCYsIElEQktleSop
OwogSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCos
IGNvbnN0IElEQktleURhdGEmKTsKIAotT3B0aW9uYWw8SlNDOjpKU1ZhbHVlPiBkZXNlcmlhbGl6
ZUlEQlZhbHVlV2l0aEtleUluamVjdGlvbihKU0M6OkV4ZWNTdGF0ZSYsIGNvbnN0IElEQlZhbHVl
JiwgY29uc3QgSURCS2V5RGF0YSYsIGNvbnN0IE9wdGlvbmFsPElEQktleVBhdGg+Jik7CiB9CiAK
ICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCQ3Vyc29yV2l0aFZhbHVlQ3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCQ3Vyc29yV2l0aFZhbHVlQ3VzdG9tLmNwcAppbmRl
eCBhODQ2OTBiZTA1MTk2YjdjZmEyYmMyNjQ4OWJiYmMzNzgyOWJiN2E3Li5mNDM1MDFjZjk0YjQx
MWY4ZWQ5NmNkYjhkNzZjNmYwNThkNTE1NzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0lEQkN1cnNvcldpdGhWYWx1ZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNJREJDdXJzb3JXaXRoVmFsdWVDdXN0b20uY3BwCkBAIC0zOCw4
ICszOCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiBKU0M6OkpTVmFsdWUgSlNJREJDdXJzb3JX
aXRoVmFsdWU6OnZhbHVlKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKIHsKICAgICByZXR1
cm4gY2FjaGVkUHJvcGVydHlWYWx1ZShzdGF0ZSwgKnRoaXMsIHdyYXBwZWQoKS52YWx1ZVdyYXBw
ZXIoKSwgWyZdIHsKLSAgICAgICAgYXV0byByZXN1bHQgPSBkZXNlcmlhbGl6ZUlEQlZhbHVlV2l0
aEtleUluamVjdGlvbihzdGF0ZSwgd3JhcHBlZCgpLnZhbHVlKCksIHdyYXBwZWQoKS5wcmltYXJ5
S2V5KCksIHdyYXBwZWQoKS5wcmltYXJ5S2V5UGF0aCgpKTsKLSAgICAgICAgcmV0dXJuIHJlc3Vs
dCA/IHJlc3VsdC52YWx1ZSgpIDoganNOdWxsKCk7CisgICAgICAgIHJldHVybiBkZXNlcmlhbGl6
ZUlEQlZhbHVlVG9KU1ZhbHVlKHN0YXRlLCB3cmFwcGVkKCkudmFsdWUoKSk7CiAgICAgfSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCUmVxdWVzdEN1
c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQlJlcXVlc3RDdXN0b20u
Y3BwCmluZGV4IDUxOTAyZTJiNjg1MzI5NGI5OTllNDEyZWQyNTdmNzYyOTJhYWJkYWYuLjVlYmI3
Y2NjOGU0MzdlZDM2ZDljMzIwZjE3MDAwMzE3ZjJjZTRlZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCUmVxdWVzdEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNJREJSZXF1ZXN0Q3VzdG9tLmNwcApAQCAtNTcsMjYgKzU3LDEw
IEBAIEpTQzo6SlNWYWx1ZSBKU0lEQlJlcXVlc3Q6OnJlc3VsdChKU0M6OkV4ZWNTdGF0ZSYgc3Rh
dGUpIGNvbnN0CiAgICAgICAgICAgICByZXR1cm4gdG9KUzxJRExJREJLZXlEYXRhPihzdGF0ZSwg
KmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLmxleGljYWxHbG9iYWxPYmplY3QoKSks
IGtleURhdGEpOwogICAgICAgICB9LCBbJnN0YXRlXSAoVmVjdG9yPElEQktleURhdGE+IGtleURh
dGFzKSB7CiAgICAgICAgICAgICByZXR1cm4gdG9KUzxJRExTZXF1ZW5jZTxJRExJREJLZXlEYXRh
Pj4oc3RhdGUsICpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzdGF0ZS5sZXhpY2FsR2xvYmFs
T2JqZWN0KCkpLCBrZXlEYXRhcyk7Ci0gICAgICAgIH0sIFsmc3RhdGVdIChJREJHZXRSZXN1bHQg
Z2V0UmVzdWx0KSB7Ci0gICAgICAgICAgICBhdXRvIHJlc3VsdCA9IGRlc2VyaWFsaXplSURCVmFs
dWVXaXRoS2V5SW5qZWN0aW9uKHN0YXRlLCBnZXRSZXN1bHQudmFsdWUoKSwgZ2V0UmVzdWx0Lmtl
eURhdGEoKSwgZ2V0UmVzdWx0LmtleVBhdGgoKSk7Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0
ID8gcmVzdWx0LnZhbHVlKCkgOiBqc051bGwoKTsKLSAgICAgICAgfSwgWyZzdGF0ZV0gKElEQkdl
dEFsbFJlc3VsdCBnZXRBbGxSZXN1bHQpIHsKLSAgICAgICAgICAgIGF1dG8mIGtleXMgPSBnZXRB
bGxSZXN1bHQua2V5cygpOwotICAgICAgICAgICAgYXV0byYgdmFsdWVzID0gZ2V0QWxsUmVzdWx0
LnZhbHVlcygpOwotICAgICAgICAgICAgYXV0byYga2V5UGF0aCA9IGdldEFsbFJlc3VsdC5rZXlQ
YXRoKCk7Ci0gICAgICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShzdGF0
ZS52bSgpKTsKLSAgICAgICAgICAgIEpTQzo6TWFya2VkQXJndW1lbnRCdWZmZXIgbGlzdDsKLSAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB2YWx1ZXMuc2l6ZSgpOyBpICsrKSB7
Ci0gICAgICAgICAgICAgICAgYXV0byByZXN1bHQgPSBkZXNlcmlhbGl6ZUlEQlZhbHVlV2l0aEtl
eUluamVjdGlvbihzdGF0ZSwgdmFsdWVzW2ldLCBrZXlzW2ldLCBrZXlQYXRoKTsKLSAgICAgICAg
ICAgICAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGpzTnVsbCgp
OwotICAgICAgICAgICAgICAgIGxpc3QuYXBwZW5kKHJlc3VsdC52YWx1ZSgpKTsKLSAgICAgICAg
ICAgICAgICBpZiAoVU5MSUtFTFkobGlzdC5oYXNPdmVyZmxvd2VkKCkpKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIHByb3BhZ2F0ZUV4Y2VwdGlvbihzdGF0ZSwgc2NvcGUsIEV4Y2VwdGlvbihVbmtu
b3duRXJyb3IpKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKEpT
Qzo6Y29uc3RydWN0QXJyYXkoJnN0YXRlLCBudWxscHRyLCBzdGF0ZS5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCksIGxpc3QpKTsKKyAgICAgICAgfSwgWyZzdGF0ZV0gKElEQlZhbHVlIHZhbHVlKSB7Cisg
ICAgICAgICAgICByZXR1cm4gdG9KUzxJRExJREJWYWx1ZT4oc3RhdGUsICpqc0Nhc3Q8SlNET01H
bG9iYWxPYmplY3QqPihzdGF0ZS5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLCB2YWx1ZSk7CisgICAg
ICAgIH0sIFsmc3RhdGVdIChWZWN0b3I8SURCVmFsdWU+IHZhbHVlcykgeworICAgICAgICAgICAg
cmV0dXJuIHRvSlM8SURMU2VxdWVuY2U8SURMSURCVmFsdWU+PihzdGF0ZSwgKmpzQ2FzdDxKU0RP
TUdsb2JhbE9iamVjdCo+KHN0YXRlLmxleGljYWxHbG9iYWxPYmplY3QoKSksIHZhbHVlcyk7CiAg
ICAgICAgIH0sIFtdICh1aW50NjRfdCBudW1iZXIpIHsKICAgICAgICAgICAgIHJldHVybiB0b0pT
PElETFVuc2lnbmVkTG9uZ0xvbmc+KG51bWJlcik7CiAgICAgICAgIH0sIFtdIChJREJSZXF1ZXN0
OjpOdWxsUmVzdWx0VHlwZSBvdGhlcikgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDYyZjhjZjAzNGFlY2MxMTZmMmUwYmVj
YzIyN2M5YWM1NWU5NDc2ZTIuLmU0MDQ1YzQwMmRkODgyYjJiZGEyMGQ2ZmY1ZWFjNjYyYmNiNjU1
ZmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAxOS0wNC0wNCAgQ29tbWl0IFF1ZXVlICA8Y29t
bWl0LXF1ZXVlQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQg
cjI0MzgwNyBhbmQgcjI0MzgyNC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5NjYxMQorCisgICAgICAgIFRlc3QgYWRkZWQgaXMgYSBmbGFreSB0aW1l
b3V0IG9uIGlPUyBTaW11bGF0b3IsIDMgdGVzdHMKKyAgICAgICAgdW5za2lwcGVkIGFyZSBmbGFr
eSBmYWlsdXJlcyAoUmVxdWVzdGVkIGJ5IFNoYXduUm9iZXJ0cyBvbgorICAgICAgICAjd2Via2l0
KS4KKworICAgICAgICBSZXZlcnRlZCBjaGFuZ2VzZXRzOgorCisgICAgICAgICJCbG9iIHR5cGUg
Y2Fubm90IGJlIHN0b3JlZCBjb3JyZWN0bHkgaW4gSURCIHdoZW4KKyAgICAgICAgSURCT2JqZWN0
U3RvcmUgaGFzIGF1dG9JbmNyZW1lbnQgYW5kIGtleVBhdGggb3B0aW9ucyIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NjEyOAorICAgICAgICBodHRw
czovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjQzODA3CisKKyAgICAgICAgIkZvbGxvdyB1
cCBmaXggZm9yIHIyNDM4MDc6IFVzZSBNYXJrZWRBcmd1bWVudEJ1ZmZlciBpbnN0ZWFkCisgICAg
ICAgIG9mIFZlY3RvciBmb3IgSlNWYWx1ZSIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5NjU0NworICAgICAgICBodHRwczovL3RyYWMud2Via2l0Lm9y
Zy9jaGFuZ2VzZXQvMjQzODI0CisKIDIwMTktMDQtMDQgIERpZWdvIFBpbm8gR2FyY2lhICA8ZHBp
bm9AaWdhbGlhLmNvbT4KIAogICAgICAgICBbV1BFXSBVbnJldmlld2VkIGdhcmRlbmluZwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggMTI2NmJmZDBkNzZjODZkODliZDE4YzhhZDg4
NmU1Zjg4Y2M0NzA3Mi4uYmZmMWM1OWI5MjAxMDYzMmFmYmM0ODU0ZjJlNmUxZDZmNTU3MDQ1OSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTktMDQt
MDQgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgorCisgICAgICAgIFVu
cmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyNDM4MDcgYW5kIHIyNDM4MjQuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTY2MTEKKworICAgICAgICBUZXN0
IGFkZGVkIGlzIGEgZmxha3kgdGltZW91dCBvbiBpT1MgU2ltdWxhdG9yLCAzIHRlc3RzCisgICAg
ICAgIHVuc2tpcHBlZCBhcmUgZmxha3kgZmFpbHVyZXMgKFJlcXVlc3RlZCBieSBTaGF3blJvYmVy
dHMgb24KKyAgICAgICAgI3dlYmtpdCkuCisKKyAgICAgICAgUmV2ZXJ0ZWQgY2hhbmdlc2V0czoK
KworICAgICAgICAiQmxvYiB0eXBlIGNhbm5vdCBiZSBzdG9yZWQgY29ycmVjdGx5IGluIElEQiB3
aGVuCisgICAgICAgIElEQk9iamVjdFN0b3JlIGhhcyBhdXRvSW5jcmVtZW50IGFuZCBrZXlQYXRo
IG9wdGlvbnMiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xOTYxMjgKKyAgICAgICAgaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzI0Mzgw
NworCisgICAgICAgICJGb2xsb3cgdXAgZml4IGZvciByMjQzODA3OiBVc2UgTWFya2VkQXJndW1l
bnRCdWZmZXIgaW5zdGVhZAorICAgICAgICBvZiBWZWN0b3IgZm9yIEpTVmFsdWUiCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTY1NDcKKyAgICAgICAg
aHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzI0MzgyNAorCiAyMDE5LTA0LTAzICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgSFRNTCBmcmFnbWVudCBz
ZXJpYWxpemF0aW9uIHNob3VsZCBub3Qgc3RyaXAgd2hpdGVzcGFjZSBmcm9tIFVSTCBhdHRyaWJ1
dGUgdmFsdWVzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5
b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAyNmIyZjNlODk4YjFmMGM4MWRmYzdhN2Fl
NWIwYzAyYTZhZmY0NTk2Li5kNTY4ZjVjMjcwOWVlODI4YmU3M2NjZDJmNmU3NzZlNTQ1MzczMTVh
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRl
c3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTM1OCw2ICszNTgsOCBAQCB3ZWJraXQub3JnL2IvMTc5
NjA4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMveGhyL2FjY2Vzcy1jb250cm9sLXBy
ZWZsaWdodAogd2Via2l0Lm9yZy9iLzE3OTYwOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3hoci9zZW5kLWNvbmRpdGlvbmFsLWNvcnMuaHRtIFsgRmFpbHVyZSBdCiB3ZWJraXQub3Jn
L2IvMTc5NjExIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMveGhyL3NlbmQtZW50aXR5
LWJvZHktZG9jdW1lbnQuaHRtIFsgUGFzcyBGYWlsdXJlIF0KIGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvSW5kZXhlZERCL25lc3RlZC1jbG9uaW5nLWxhcmdlLW11bHRpcGxlLmh0bWwg
WyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvSW5kZXhlZERCL25lc3Rl
ZC1jbG9uaW5nLWxhcmdlLmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvSW5kZXhlZERCL25lc3RlZC1jbG9uaW5nLXNtYWxsLmh0bWwgWyBTa2lwIF0KIGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzc29tL2ludGVyZmFjZXMuaHRtbCBbIFBh
c3MgVGltZW91dCBdCiBbIERlYnVnIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3Nzb20tdmlldy9pbnRlcmZhY2VzLmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xODIy
OTIgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nzb20tdmlldy9zY3JvbGxp
bmdFbGVtZW50LXF1aXJrcy1keW5hbWljLTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL0lu
ZGV4ZWREQi9uZXN0ZWQtY2xvbmluZy1sYXJnZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL0luZGV4ZWREQi9uZXN0ZWQtY2xvbmluZy1s
YXJnZS1leHBlY3RlZC50eHQKaW5kZXggZTBlNjFlNzZhZjlmZWYwOWU4YjQ1OTk3NzI4MjI5N2U3
NTgzOTllYS4uMjEyNWVmMGRmZDI3YTdkNzNkNzI0OGNlOWRjOGM0MDEwYzRiZDAwMSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVk
REIvbmVzdGVkLWNsb25pbmctbGFyZ2UtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvSW5kZXhlZERCL25lc3RlZC1jbG9uaW5nLWxh
cmdlLWV4cGVjdGVkLnR4dApAQCAtMSw5ICsxLDkgQEAKIAogUEFTUyBsYXJnZSB0eXBlZCBhcnJh
eSAKIFBBU1MgYmxvYiB3aXRoIGxhcmdlIHR5cGVkIGFycmF5IAotUEFTUyBibG9iIHdpdGggbGFy
Z2UgdHlwZWQgYXJyYXkgd2l0aCBrZXkgZ2VuZXJhdG9yIAorRkFJTCBibG9iIHdpdGggbGFyZ2Ug
dHlwZWQgYXJyYXkgd2l0aCBrZXkgZ2VuZXJhdG9yIGFzc2VydF9lcXVhbHM6IEluZGV4ZWREQiBy
ZXN1bHQgY2xhc3Mgc2hvdWxkIG1hdGNoIHB1dCgpIGFyZ3VtZW50IGV4cGVjdGVkICJbb2JqZWN0
IEJsb2JdIiBidXQgZ290ICJbb2JqZWN0IE51bGxdIgogUEFTUyBhcnJheSBvZiBibG9icyBhbmQg
bGFyZ2UgdHlwZWQgYXJyYXlzIAotUEFTUyBhcnJheSBvZiBibG9icyBhbmQgbGFyZ2UgdHlwZWQg
YXJyYXlzIHdpdGgga2V5IGdlbmVyYXRvciAKK0ZBSUwgYXJyYXkgb2YgYmxvYnMgYW5kIGxhcmdl
IHR5cGVkIGFycmF5cyB3aXRoIGtleSBnZW5lcmF0b3IgYXNzZXJ0X2VxdWFsczogSW5kZXhlZERC
IHJlc3VsdCBjbGFzcyBzaG91bGQgbWF0Y2ggcHV0KCkgYXJndW1lbnQgZXhwZWN0ZWQgIltvYmpl
Y3QgQmxvYl0iIGJ1dCBnb3QgIltvYmplY3QgTnVsbF0iCiBQQVNTIG9iamVjdCB3aXRoIGJsb2Jz
IGFuZCBsYXJnZSB0eXBlZCBhcnJheXMgCi1QQVNTIG9iamVjdCB3aXRoIGJsb2JzIGFuZCBsYXJn
ZSB0eXBlZCBhcnJheXMgd2l0aCBrZXkgZ2VuZXJhdG9yIAorRkFJTCBvYmplY3Qgd2l0aCBibG9i
cyBhbmQgbGFyZ2UgdHlwZWQgYXJyYXlzIHdpdGgga2V5IGdlbmVyYXRvciBhc3NlcnRfZXF1YWxz
OiBJbmRleGVkREIgcmVzdWx0IGNsYXNzIHNob3VsZCBtYXRjaCBwdXQoKSBhcmd1bWVudCBleHBl
Y3RlZCAiW29iamVjdCBCbG9iXSIgYnV0IGdvdCAiW29iamVjdCBOdWxsXSIKIApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVkREIv
bmVzdGVkLWNsb25pbmctbGFyZ2UtbXVsdGlwbGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVkREIvbmVzdGVkLWNsb25pbmct
bGFyZ2UtbXVsdGlwbGUtZXhwZWN0ZWQudHh0CmluZGV4IGY4MTM0YTQ2Y2U3YjZhMTVkMTFjNzQ4
ZWJkMGY1NmY2ZjQ1NjViYmUuLjA2NGJmNGFlYzgxNWYyNDE2ZTMyODk2YTMxZDM0ZmVlNDlkNTFl
NWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvSW5kZXhlZERCL25lc3RlZC1jbG9uaW5nLWxhcmdlLW11bHRpcGxlLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL0luZGV4ZWRE
Qi9uZXN0ZWQtY2xvbmluZy1sYXJnZS1tdWx0aXBsZS1leHBlY3RlZC50eHQKQEAgLTEsNCArMSw0
IEBACiAKIFBBU1MgbXVsdGlwbGUgcmVxdWVzdHMgb2Ygb2JqZWN0cyB3aXRoIGJsb2JzIGFuZCBs
YXJnZSB0eXBlZCBhcnJheXMgCi1QQVNTIG11bHRpcGxlIHJlcXVlc3RzIG9mIG9iamVjdHMgd2l0
aCBibG9icyBhbmQgbGFyZ2UgdHlwZWQgYXJyYXlzIHdpdGgga2V5IGdlbmVyYXRvciAKK0ZBSUwg
bXVsdGlwbGUgcmVxdWVzdHMgb2Ygb2JqZWN0cyB3aXRoIGJsb2JzIGFuZCBsYXJnZSB0eXBlZCBh
cnJheXMgd2l0aCBrZXkgZ2VuZXJhdG9yIGFzc2VydF9lcXVhbHM6IEluZGV4ZWREQiByZXN1bHQg
Y2xhc3Mgc2hvdWxkIG1hdGNoIHB1dCgpIGFyZ3VtZW50IGV4cGVjdGVkICJbb2JqZWN0IEJsb2Jd
IiBidXQgZ290ICJbb2JqZWN0IE51bGxdIgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL0luZGV4ZWREQi9uZXN0ZWQtY2xvbmluZy1zbWFs
bC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL0luZGV4ZWREQi9uZXN0ZWQtY2xvbmluZy1zbWFsbC1leHBlY3RlZC50eHQKaW5kZXggNDY4
Y2EwYjI3YTE1YTgwNTI5ODFmOTYzYjZkN2Y4OTNhZTllNmM3Yi4uNjZiNWZjNDA5YzI5YWMxMzcx
NTQ3YjQ4YzM4NmNlMWMwZGY5ZDNiMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVkREIvbmVzdGVkLWNsb25pbmctc21hbGwtZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvSW5kZXhlZERCL25lc3RlZC1jbG9uaW5nLXNtYWxsLWV4cGVjdGVkLnR4dApAQCAtMiw5ICsy
LDkgQEAKIFBBU1Mgc21hbGwgdHlwZWQgYXJyYXkgCiBQQVNTIGJsb2IgCiBQQVNTIGJsb2Igd2l0
aCBzbWFsbCB0eXBlZCBhcnJheSAKLVBBU1MgYmxvYiB3aXRoIHNtYWxsIHR5cGVkIGFycmF5IHdp
dGgga2V5IGdlbmVyYXRvciAKK0ZBSUwgYmxvYiB3aXRoIHNtYWxsIHR5cGVkIGFycmF5IHdpdGgg
a2V5IGdlbmVyYXRvciBhc3NlcnRfZXF1YWxzOiBJbmRleGVkREIgcmVzdWx0IGNsYXNzIHNob3Vs
ZCBtYXRjaCBwdXQoKSBhcmd1bWVudCBleHBlY3RlZCAiW29iamVjdCBCbG9iXSIgYnV0IGdvdCAi
W29iamVjdCBOdWxsXSIKIFBBU1MgYmxvYiBhcnJheSAKLVBBU1MgYmxvYiBhcnJheSB3aXRoIGtl
eSBnZW5lcmF0b3IgCitGQUlMIGJsb2IgYXJyYXkgd2l0aCBrZXkgZ2VuZXJhdG9yIGFzc2VydF9l
cXVhbHM6IEluZGV4ZWREQiByZXN1bHQgY2xhc3Mgc2hvdWxkIG1hdGNoIHB1dCgpIGFyZ3VtZW50
IGV4cGVjdGVkICJbb2JqZWN0IEJsb2JdIiBidXQgZ290ICJbb2JqZWN0IE51bGxdIgogUEFTUyBh
cnJheSBvZiBibG9icyBhbmQgc21hbGwgdHlwZWQgYXJyYXlzIAotUEFTUyBhcnJheSBvZiBibG9i
cyBhbmQgc21hbGwgdHlwZWQgYXJyYXlzIHdpdGgga2V5IGdlbmVyYXRvciAKK0ZBSUwgYXJyYXkg
b2YgYmxvYnMgYW5kIHNtYWxsIHR5cGVkIGFycmF5cyB3aXRoIGtleSBnZW5lcmF0b3IgYXNzZXJ0
X2VxdWFsczogSW5kZXhlZERCIHJlc3VsdCBjbGFzcyBzaG91bGQgbWF0Y2ggcHV0KCkgYXJndW1l
bnQgZXhwZWN0ZWQgIltvYmplY3QgQmxvYl0iIGJ1dCBnb3QgIltvYmplY3QgTnVsbF0iCiAKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9vYmplY3RzdG9y
ZS1hdXRvaW5jcmVtZW50LXR5cGVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL21vZGVybi9vYmplY3RzdG9yZS1hdXRvaW5jcmVtZW50LXR5cGVzLWV4cGVjdGVk
LnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGVlOTU2NGNiNzlkNTc1NDc3MDg2
Y2JhMzJlNWEwMzA2OWU2YTg5Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vb2JqZWN0c3Rv
cmUtYXV0b2luY3JlbWVudC10eXBlcy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwy
NyArMCwwIEBACi1UZXN0IEluZGV4ZWREQidzIElEQk9iamVjdFN0b3JlIGF1dG8taW5jcmVtZW50
IGZlYXR1cmUgd2l0aCBtb3JlIHR5cGVzLgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0K
LQotaW5kZXhlZERCID0gc2VsZi5pbmRleGVkREIgfHwgc2VsZi53ZWJraXRJbmRleGVkREIgfHwg
c2VsZi5tb3pJbmRleGVkREIgfHwgc2VsZi5tc0luZGV4ZWREQiB8fCBzZWxmLk9JbmRleGVkREI7
Ci0KLWluZGV4ZWREQi5kZWxldGVEYXRhYmFzZShkYm5hbWUpCi1pbmRleGVkREIub3BlbihkYm5h
bWUpCi1jcmVhdGVPYmplY3RTdG9yZSgpOgotc3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgn
U3RvcmUnLCB7a2V5UGF0aDogJ3ByaW1hcnlLZXknLCBhdXRvSW5jcmVtZW50OiB0cnVlfSkKLVBB
U1MgcmVxdWVzdC5yZXN1bHQuc2l6ZSBpcyBibG9iLnNpemUKLVBBU1MgcmVxdWVzdC5yZXN1bHQu
dHlwZSBpcyBibG9iLnR5cGUKLVBBU1MgcmVxdWVzdC5yZXN1bHQucHJpbWFyeUtleSBpcyBwcmlt
YXJ5S2V5Ci1QQVNTIHJlcXVlc3QucmVzdWx0Lm5hbWUgaXMgZmlsZS5uYW1lCi1QQVNTIHJlcXVl
c3QucmVzdWx0Lmxhc3RNb2RpZmllZCBpcyBmaWxlLmxhc3RNb2RpZmllZAotUEFTUyByZXF1ZXN0
LnJlc3VsdC5wcmltYXJ5S2V5IGlzIHByaW1hcnlLZXkKLVBBU1MgcmVxdWVzdC5yZXN1bHQuaGVp
Z2h0IGlzIGltYWdlRGF0YS5oZWlnaHQKLVBBU1MgcmVxdWVzdC5yZXN1bHQud2lkdGggaXMgaW1h
Z2VEYXRhLndpZHRoCi1QQVNTIEpTT04uc3RyaW5naWZ5KHJlcXVlc3QucmVzdWx0LmRhdGEpIGlz
IEpTT04uc3RyaW5naWZ5KGltYWdlRGF0YS5kYXRhKQotUEFTUyByZXF1ZXN0LnJlc3VsdC5wcmlt
YXJ5S2V5IGlzIHByaW1hcnlLZXkKLVBBU1MgcmVxdWVzdC5yZXN1bHQubGVuZ3RoIGlzIGZpbGVM
aXN0Lmxlbmd0aAotUEFTUyByZXF1ZXN0LnJlc3VsdC5wcmltYXJ5S2V5IGlzIHByaW1hcnlLZXkK
LVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vb2JqZWN0c3RvcmUt
YXV0b2luY3JlbWVudC10eXBlcy5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
bW9kZXJuL29iamVjdHN0b3JlLWF1dG9pbmNyZW1lbnQtdHlwZXMuaHRtbApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggOWY0NDE0YjJmNzM5ZWJmZjZmMjFmMWEyMTQ4ZGNiY2I5MzI1ZjUz
MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vb2JqZWN0c3RvcmUtYXV0b2luY3JlbWVudC10
eXBlcy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotPGh0bWw+Ci08aGVhZD4K
LTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08
Ym9keT4KLTxpbnB1dCBpZD0iZmlsZUlucHV0IiBtdWx0aXBsZSB0eXBlPSJmaWxlIj4KLTxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvb2JqZWN0c3RvcmUtYXV0b2luY3JlbWVudC10eXBlcy5qcyI+PC9z
Y3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3Jlc291cmNlcy9v
YmplY3RzdG9yZS1hdXRvaW5jcmVtZW50LXR5cGVzLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvbW9kZXJuL3Jlc291cmNlcy9vYmplY3RzdG9yZS1hdXRvaW5jcmVtZW50LXR5cGVz
LmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MThmYzViZWNhNWFiZTc0MTcwYjg5
NTUxNDYwOWQyY2JlNDZmYzY0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMv
b2JqZWN0c3RvcmUtYXV0b2luY3JlbWVudC10eXBlcy5qcworKysgL2Rldi9udWxsCkBAIC0xLDk1
ICswLDAgQEAKLWlmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKLSAgICBpbXBvcnRTY3JpcHRzKCcu
Li8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcycpOwotICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJl
ZC5qcycpOwotfQotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBJREJPYmplY3RTdG9y
ZSBhdXRvLWluY3JlbWVudCBmZWF0dXJlIHdpdGggbW9yZSB0eXBlcy4iKTsKLQotaW5kZXhlZERC
VGVzdChwcmVwYXJlRGF0YWJhc2UpOwotCi12YXIgZGI7Ci12YXIgdGVzdEdlbmVyYXRvcjsKLWZ1
bmN0aW9uIG5leHQoKQotewotICAgIHRlc3RHZW5lcmF0b3IubmV4dCgpOwotfQotCi1mdW5jdGlv
biBwcmVwYXJlRGF0YWJhc2UoKQotewotICAgIGRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKLSAg
ICBldmVudC50YXJnZXQudHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxi
YWNrOwotCi0gICAgZGVidWcoImNyZWF0ZU9iamVjdFN0b3JlKCk6Iik7Ci0gICAgZXZhbEFuZExv
Zygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnU3RvcmUnLCB7a2V5UGF0aDogJ3ByaW1h
cnlLZXknLCBhdXRvSW5jcmVtZW50OiB0cnVlfSkiKTsKLSAgICBldmVudC50YXJnZXQub25zdWNj
ZXNzID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgIHRlc3RHZW5lcmF0b3IgPSB0ZXN0U3RlcHMoKTsK
LSAgICAgICAgdGVzdEdlbmVyYXRvci5uZXh0KCk7Ci0gICAgfTsKLX0KLQotCi1mdW5jdGlvbiog
dGVzdFN0ZXBzKCkKLXsKLSAgICB0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKCJTdG9yZSIs
ICJyZWFkd3JpdGUiKTsKLSAgICBvYmplY3RTdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3Jl
KCJTdG9yZSIpOwotICAgIHByaW1hcnlLZXkgPSAxOwotCi0gICAgLy8gQmxvYgotICAgIHZhciBp
bWFnZVVSTCA9ICJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FB
QUdRQUFBQmtDQVlBQUFCdzRwVlVBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBS1QybERR
MUJRYUc5MGIzTm9iM0FnU1VORElIQnliMlpwYkdVQUFIamFuVk5uVkZQcEZqMzMzdlJDUzRpQWxF
dHZVaFVJSUZKQ2k0QVVrU1lxSVFrUVNvZ2hvZGtWVWNFUlJVVUVHOGlnaUFPT2pvQ01GVkVzRElv
SzJBZmtJYUtPZzZPSWlzcjc0WHVqYTlhODkrYk4vclhYUHVlczg1Mnp6d2ZBQ0F5V1NETlJOWUFN
cVVJZUVlQ0R4OFRHNGVRdVFJRUtKSEFBRUFpelpDRnovU01CQVBoK1BEd3JJc0FIdmdBQmVOTUxD
QURBVFp2QU1CeUgvdy9xUXBsY0FZQ0VBY0Iwa1RoTENJQVVBRUI2amtLbUFFQkdBWUNkbUNaVEFL
QUVBR0RMWTJMakFGQXRBR0FuZitiVEFJQ2QrSmw3QVFCYmxDRVZBYUNSQUNBVFpZaEVBR2c3QUt6
UFZvcEZBRmd3QUJSbVM4UTVBTmd0QURCSlYyWklBTEMzQU1ET0VBdXlBQWdNQURCUmlJVXBBQVI3
QUdESUl5TjRBSVNaQUJSRzhsYzg4U3V1RU9jcUFBQjRtYkk4dVNRNVJZRmJDQzF4QjFkWExoNG96
a2tYS3hRMllRSmhta0F1d25tWkdUS0JOQS9nODh3QUFLQ1JGUkhnZy9QOWVNNE9yczdPTm82MkRs
OHQ2cjhHL3lKaVl1UCs1YytyY0VBQUFPRjBmdEgrTEMrekdvQTdCb0J0L3FJbDdnUm9YZ3VnZGZl
TFpySVBRTFVBb09uYVYvTncrSDQ4UEVXaGtMbloyZVhrNU5oS3hFSmJZY3BYZmY1bndsL0FWLzFz
K1g0OC9QZjE0TDdpSklFeVhZRkhCUGpnd3N6MFRLVWN6NUlKaEdMYzVvOUgvTGNMLy93ZDB5TEVT
V0s1V0NvVTQxRVNjWTVFbW96ek1xVWlpVUtTS2NVbDB2OWs0dDhzK3dNKzN6VUFzR28rQVh1Ukxh
aGRZd1AyU3ljUVdIVEE0dmNBQVBLN2I4SFVLQWdEZ0dpRDRjOTMvKzgvL1VlZ0pRQ0Faa21TY1FB
QVhrUWtMbFRLc3ovSENBQUFSS0NCS3JCQkcvVEJHQ3pBQmh6QkJkekJDL3hnTm9SQ0pNVENRaEJD
Q21TQUhISmdLYXlDUWlpR3piQWRLbUF2MUVBZE5NQlJhSWFUY0E0dXdsVzREajF3RC9waENKN0JL
THlCQ1FSQnlBZ1RZU0hhaUFGaWlsZ2pqZ2dYbVlYNEljRklCQktMSkNESmlCUlJJa3VSTlVneFVv
cFVJRlZJSGZJOWNnSTVoMXhHdXBFN3lBQXlndnlHdkVjeGxJR3lVVDNVRExWRHVhZzNHb1JHb2d2
UVpIUXhtbzhXb0p2UWNyUWFQWXcyb2VmUXEyZ1AybzgrUThjd3dPZ1lCelBFYkRBdXhzTkNzVGdz
Q1pOank3RWlyQXlyeGhxd1Zxd0R1NG4xWTgreGR3UVNnVVhBQ1RZRWQwSWdZUjVCU0ZoTVdFN1lT
S2dnSENRMEVkb0pOd2tEaEZIQ0p5S1RxRXUwSnJvUitjUVlZakl4aDFoSUxDUFdFbzhUTHhCN2lF
UEVOeVFTaVVNeUo3bVFBa214cEZUU0V0SkcwbTVTSStrc3FaczBTQm9qazhuYVpHdXlCem1VTENB
cnlJWGtuZVRENURQa0crUWg4bHNLbldKQWNhVDRVK0lvVXNwcVNobmxFT1UwNVFabG1ESkJWYU9h
VXQyb29WUVJOWTlhUXEyaHRsS3ZVWWVvRXpSMW1qbk5neFpKUzZXdG9wWFRHbWdYYVBkcHIraDB1
aEhkbFI1T2w5Qlgwc3ZwUitpWDZBUDBkd3dOaGhXRHg0aG5LQm1iR0FjWVp4bDNHSytZVEtZWjA0
c1p4MVF3TnpIcm1PZVpENWx2VlZncXRpcDhGWkhLQ3BWS2xTYVZHeW92VkttcXBxcmVxZ3RWODFY
TFZJK3BYbE45cmtaVk0xUGpxUW5VbHF0VnFwMVE2MU1iVTJlcE82aUhxbWVvYjFRL3BINVovWWtH
V2NOTXcwOURwRkdnc1YvanZNWWdDMk1aczNnc0lXc05xNFoxZ1RYRUpySE4yWHgyS3J1WS9SMjdp
ejJxcWFFNVF6TktNMWV6VXZPVVpqOEg0NWh4K0p4MFRnbm5LS2VYODM2SzNoVHZLZUlwRzZZMFRM
a3haVnhycXBhWGxsaXJTS3RScTBmcnZUYXU3YWVkcHIxRnUxbjdnUTVCeDBvblhDZEhaNC9PQloz
blU5bFQzYWNLcHhaTlBUcjFyaTZxYTZVYm9idEVkNzl1cCs2WW5yNWVnSjVNYjZmZWViM24raHg5
TC8xVS9XMzZwL1ZIREZnR3N3d2tCdHNNemhnOHhUVnhiendkTDhmYjhWRkRYY05BUTZWaGxXR1g0
WVNSdWRFOG85VkdqVVlQakduR1hPTWs0MjNHYmNhakpnWW1JU1pMVGVwTjdwcFNUYm1tS2FZN1RE
dE14ODNNemFMTjFwazFtejB4MXpMbm0rZWIxNXZmdDJCYWVGb3N0cWkydUdWSnN1UmFwbG51dHJ4
dWhWbzVXYVZZVlZwZHMwYXRuYTBsMXJ1dHU2Y1JwN2xPazA2cm50Wm53N0R4dHNtMnFiY1pzT1hZ
QnR1dXRtMjJmV0ZuWWhkbnQ4V3V3KzZUdlpOOXVuMk4vVDBIRFlmWkRxc2RXaDErYzdSeUZEcFdP
dDZhenB6dVAzM0Y5SmJwTDJkWXp4RFAyRFBqdGhQTEtjUnBuVk9iMDBkbkYyZTVjNFB6aUl1SlM0
TExMcGMrTHBzYnh0M0l2ZVJLZFBWeFhlRjYwdldkbTdPYnd1Mm8yNi91TnU1cDdvZmNuOHcwbnlt
ZVdUTnowTVBJUStCUjVkRS9DNStWTUd2ZnJINVBRMCtCWjdYbkl5OWpMNUZYcmRld3Q2VjNxdmRo
N3hjKzlqNXluK00rNHp3MzNqTGVXVi9NTjhDM3lMZkxUOE52bmwrRjMwTi9JLzlrLzNyLzBRQ25n
Q1VCWndPSmdVR0JXd0w3K0hwOEliK09QenJiWmZheTJlMUJqS0M1UVJWQmo0S3RndVhCclNGb3lP
eVFyU0gzNTVqT2tjNXBEb1ZRZnVqVzBBZGg1bUdMdzM0TUo0V0hoVmVHUDQ1d2lGZ2EwVEdYTlhm
UjNFTnozMFQ2UkpaRTNwdG5NVTg1cnkxS05TbytxaTVxUE5vM3VqUzZQOFl1WmxuTTFWaWRXRWxz
U3h3NUxpcXVObTVzdnQvODdmT0g0cDNpQytON0Y1Z3Z5RjF3ZWFIT3d2U0ZweGFwTGhJc09wWkFU
SWhPT0pUd1FSQXFxQmFNSmZJVGR5V09Dbm5DSGNKbklpL1JOdEdJMkVOY0toNU84a2dxVFhxUzdK
RzhOWGtreFRPbExPVzVoQ2Vwa0x4TURVemRtenFlRnBwMklHMHlQVHE5TVlPU2taQnhRcW9oVFpP
MlorcG41bVoyeTZ4bGhiTCt4VzZMdHk4ZWxRZkphN09RckFWWkxRcTJRcWJvVkZvbzF5b0hzbWRs
VjJhL3pZbktPWmFybml2TjdjeXp5dHVRTjV6dm4vL3RFc0lTNFpLMnBZWkxWeTBkV09hOXJHbzVz
anh4ZWRzSzR4VUZLNFpXQnF3OHVJcTJLbTNWVDZ2dFY1ZXVmcjBtZWsxcmdWN0J5b0xCdFFGcjZ3
dFZDdVdGZmV2YzErMWRUMWd2V2QrMVlmcUduUnMrRlltS3JoVGJGNWNWZjlnbzNIamxHNGR2eXIr
WjNKUzBxYXZFdVdUUFp0Sm02ZWJlTFo1YkRwYXFsK2FYRG00TjJkcTBEZDlXdE8zMTlrWGJMNWZO
S051N2c3WkR1YU8vUExpOFphZkp6czA3UDFTa1ZQUlUrbFEyN3RMZHRXSFgrRzdSN2h0N3ZQWTA3
TlhiVzd6My9UN0p2dHRWQVZWTjFXYlZaZnRKKzdQM1A2NkpxdW40bHZ0dFhhMU9iWEh0eHdQU0Ev
MEhJdzYyMTduVTFSM1NQVlJTajlZcjYwY094eCsrL3AzdmR5ME5OZzFWalp6RzRpTndSSG5rNmZj
SjMvY2VEVHJhZG94N3JPRUgweDkySFdjZEwycENtdkthUnB0VG12dGJZbHU2VDh3KzBkYnEzbnI4
UjlzZkQ1dzBQRmw1U3ZOVXlXbmE2WUxUazJmeXo0eWRsWjE5Zmk3NTNHRGJvclo3NTJQTzMyb1Bi
Kys2RUhUaDBrWC9pK2M3dkR2T1hQSzRkUEt5MitVVFY3aFhtcTg2WDIzcWRPbzgvcFBUVDhlN25M
dWFycmxjYTdudWVyMjFlMmIzNlJ1ZU44N2Q5TDE1OFJiLzF0V2VPVDNkdmZONmIvZkY5L1hmRnQx
K2NpZjl6c3U3MlhjbjdxMjhUN3hmOUVEdFFkbEQzWWZWUDF2KzNOanYzSDlxd0hlZzg5SGNSL2NH
aFlQUC9wSDFqdzlEQlkrWmo4dUdEWWJybmpnK09UbmlQM0w5NmZ5blE4OWt6eWFlRi82aS9zdXVG
eFl2ZnZqVjY5Zk8wWmpSb1pmeWw1Ty9iWHlsL2VyQTZ4bXYyOGJDeGg2K3lYZ3pNVjcwVnZ2dHdY
ZmNkeDN2bzk4UFQrUjhJSDhvLzJqNXNmVlQwS2Y3a3htVGsvOEVBNWp6L0dNekxkc0FBQUFnWTBo
U1RRQUFlaVVBQUlDREFBRDUvd0FBZ09rQUFIVXdBQURxWUFBQU9wZ0FBQmR2a2wvRlJnQUFBTHBK
UkVGVWVOcnMwVUVWQUJBVVJjSFA1cGNSU3hwUjlGSEdoaHljdVEzZW14STlUbnhRN3B4dHRmSDZq
aG9DSWlCQUJBU0lnQUFSRUNBQ0lpQkFCQVNJZ0FBUkVDQUNJaUJBQkFTSWdBQVJFQ0FDSWlCQUJB
U0lnQUFSRUNBQ0lpQkFCQVNJZ0FBUkVDQUNJaUJBQkFTSWdBQVJFQ0FDSWlCQUJBU0lnQUFSRUNB
Q0lpQkFCQVNJZ0FBUkVDQUNJaUJBQkFTSWdBQVJFQ0FDQXNRRlFBUUVpSUFBRVJBZ0FnSkVRQVFF
aUlBQUVaRFB1d0FBQVAvL0F3Q2YrQVdVeWxKckNRQUFBQUJKUlU1RXJrSmdnZz09IjsKLSAgICBj
b25zdCBbdHlwZVBhcnQsIHBhcnRSZXN0XSA9IGltYWdlVVJMLnNwbGl0KCcsJyk7Ci0gICAgY29u
c3QgY29udGVudFR5cGUgPSB0eXBlUGFydC5zcGxpdCgnOicpWzFdLnNwbGl0KCc7JylbMF07Ci0g
ICAgY29uc3QgcmF3ID0gYXRvYihwYXJ0UmVzdCk7Ci0gICAgY29uc3QgcmF3TGVuZ3RoID0gcmF3
Lmxlbmd0aDsKLSAgICBjb25zdCB1SW50OEFycmF5ID0gbmV3IFVpbnQ4QXJyYXkocmF3TGVuZ3Ro
KTsKLSAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJhd0xlbmd0aDsgKytpKQotICAgICAgICB1SW50
OEFycmF5W2ldID0gcmF3LmNoYXJDb2RlQXQoaSk7Ci0gICAgYmxvYiA9IG5ldyBCbG9iKFt1SW50
OEFycmF5XSwgeyB0eXBlOiBjb250ZW50VHlwZSB9KTsKLSAgICBvYmplY3RTdG9yZS5wdXQoYmxv
Yikub25zdWNjZXNzID0gbmV4dDsKLSAgICB5aWVsZDsKLSAgICByZXF1ZXN0ID0gb2JqZWN0U3Rv
cmUuZ2V0KHByaW1hcnlLZXkpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gbmV4dDsKLSAgICB5
aWVsZDsKLSAgICBzaG91bGRCZSgicmVxdWVzdC5yZXN1bHQuc2l6ZSIsICJibG9iLnNpemUiKTsK
LSAgICBzaG91bGRCZSgicmVxdWVzdC5yZXN1bHQudHlwZSIsICJibG9iLnR5cGUiKTsKLSAgICBz
aG91bGRCZSgicmVxdWVzdC5yZXN1bHQucHJpbWFyeUtleSIsICJwcmltYXJ5S2V5Iik7Ci0gICAg
KysgcHJpbWFyeUtleTsKLQotICAgIC8vIEZpbGUKLSAgICBmaWxlID0gbmV3IEZpbGUoW2Jsb2Jd
LCAiRmlsZW5hbWUiKTsKLSAgICBvYmplY3RTdG9yZS5wdXQoZmlsZSkub25zdWNjZXNzID0gbmV4
dDsKLSAgICB5aWVsZDsKLSAgICByZXF1ZXN0ID0gb2JqZWN0U3RvcmUuZ2V0KHByaW1hcnlLZXkp
OwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gbmV4dDsKLSAgICB5aWVsZDsKLSAgICBzaG91bGRC
ZSgicmVxdWVzdC5yZXN1bHQubmFtZSIsICJmaWxlLm5hbWUiKTsKLSAgICBzaG91bGRCZSgicmVx
dWVzdC5yZXN1bHQubGFzdE1vZGlmaWVkIiwgImZpbGUubGFzdE1vZGlmaWVkIik7Ci0gICAgc2hv
dWxkQmUoInJlcXVlc3QucmVzdWx0LnByaW1hcnlLZXkiLCAicHJpbWFyeUtleSIpOwotICAgICsr
IHByaW1hcnlLZXk7Ci0KLSAgICAvLyBJbWFnZURhdGEKLSAgICBjYW52YXMgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdjYW52YXMnKTsKLSAgICBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQo
JzJkJyk7Ci0gICAgaW1hZ2VEYXRhID0gY29udGV4dC5jcmVhdGVJbWFnZURhdGEoMSwgMSk7Ci0g
ICAgb2JqZWN0U3RvcmUucHV0KGltYWdlRGF0YSkub25zdWNjZXNzID0gbmV4dDsKLSAgICB5aWVs
ZDsKLSAgICByZXF1ZXN0ID0gb2JqZWN0U3RvcmUuZ2V0KHByaW1hcnlLZXkpOwotICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gbmV4dDsKLSAgICB5aWVsZDsKLSAgICBzaG91bGRCZSgicmVxdWVzdC5y
ZXN1bHQuaGVpZ2h0IiwgImltYWdlRGF0YS5oZWlnaHQiKTsKLSAgICBzaG91bGRCZSgicmVxdWVz
dC5yZXN1bHQud2lkdGgiLCAiaW1hZ2VEYXRhLndpZHRoIik7Ci0gICAgc2hvdWxkQmUoIkpTT04u
c3RyaW5naWZ5KHJlcXVlc3QucmVzdWx0LmRhdGEpIiwgIkpTT04uc3RyaW5naWZ5KGltYWdlRGF0
YS5kYXRhKSIpOwotICAgIHNob3VsZEJlKCJyZXF1ZXN0LnJlc3VsdC5wcmltYXJ5S2V5IiwgInBy
aW1hcnlLZXkiKTsKLSAgICArKyBwcmltYXJ5S2V5OwotCi0gICAgLy8gRmlsZWxpc3QKLSAgICBm
aWxlTGlzdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmaWxlSW5wdXQiKS5maWxlczsKLSAg
ICBvYmplY3RTdG9yZS5wdXQoZmlsZUxpc3QpLm9uc3VjY2VzcyA9IG5leHQ7Ci0gICAgeWllbGQ7
Ci0gICAgcmVxdWVzdCA9IG9iamVjdFN0b3JlLmdldChwcmltYXJ5S2V5KTsKLSAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IG5leHQ7Ci0gICAgeWllbGQ7Ci0gICAgc2hvdWxkQmUoInJlcXVlc3QucmVz
dWx0Lmxlbmd0aCIsICJmaWxlTGlzdC5sZW5ndGgiKTsKLSAgICBzaG91bGRCZSgicmVxdWVzdC5y
ZXN1bHQucHJpbWFyeUtleSIsICJwcmltYXJ5S2V5Iik7Ci0KLSAgICBmaW5pc2hKU1Rlc3QoKTsK
LX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>