<?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>190087</bug_id>
          
          <creation_ts>2018-09-28 13:35:09 -0700</creation_ts>
          <short_desc>REGRESSION(r236605): caused three API test timeouts (Requested by jernoble on #webkit).</short_desc>
          <delta_ts>2018-09-28 13:39:24 -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>188747</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>achristensen</cc>
    
    <cc>jer.noble</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1464479</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-09-28 13:35:09 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/236605 broke the build:
caused three API test timeouts (Requested by jernoble 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>1464481</commentid>
    <comment_count>1</comment_count>
      <attachid>351104</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-09-28 13:35:31 -0700</bug_when>
    <thetext>Created attachment 351104
ROLLOUT of r236605

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>1464482</commentid>
    <comment_count>2</comment_count>
      <attachid>351104</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-09-28 13:38:40 -0700</bug_when>
    <thetext>Comment on attachment 351104
ROLLOUT of r236605

Clearing flags on attachment: 351104

Committed r236610: &lt;https://trac.webkit.org/changeset/236610&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1464483</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-09-28 13:38:42 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1464484</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-09-28 13:39:24 -0700</bug_when>
    <thetext>&lt;rdar://problem/44873419&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>351104</attachid>
            <date>2018-09-28 13:35:31 -0700</date>
            <delta_ts>2018-09-28 13:38:40 -0700</delta_ts>
            <desc>ROLLOUT of r236605</desc>
            <filename>bug-190087-20180928163531.patch</filename>
            <type>text/plain</type>
            <size>161070</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2NjA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDE4MTdmYTUwNTYzNDI0MTU5OGQzOTk4
MGY4Y2M3ZDcxMTVjNGE5MWQuLmQ0MWQ4M2JkYWNiNjM1NGRkZmQ1ZGI4ODU2NDI2ZWE2YTU5YzBi
YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTgtMDktMjggIENvbW1pdCBRdWV1ZSAgPGNvbW1p
dC1xdWV1ZUB3ZWJraXQub3JnPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIy
MzY2MDUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTAwODcKKworICAgICAgICBjYXVzZWQgdGhyZWUgQVBJIHRlc3QgdGltZW91dHMgKFJlcXVlc3Rl
ZCBieSBqZXJub2JsZSBvbgorICAgICAgICAjd2Via2l0KS4KKworICAgICAgICBSZXZlcnRlZCBj
aGFuZ2VzZXQ6CisKKyAgICAgICAgIlJlZmFjdG9yaW5nOiBlbGltaW5hdGUgcmF3IHBvaW50ZXIg
dXNhZ2UgaW4gRnVsbHNjcmVlbiBjb2RlIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTg4NzQ3CisgICAgICAgIGh0dHBzOi8vdHJhYy53ZWJraXQub3Jn
L2NoYW5nZXNldC8yMzY2MDUKKwogMjAxOC0wOS0yOCAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZXBsYWNlIHJlY2VudGx5IGFkZGVkIGxpbmUgY29tbWVudHMgaW4g
Q29tcGlsZXIuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGQzNzY3NWU2YzljNWViZGRiOTU3NWUwMmVkOWNjNjlj
YzY2ODhmOWMuLjYyMGE4NjdhNjc5YjhmYWQxYjM4Y2Q2MzFmZjNmMjEzZWIxMjZjMTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxOC0wOS0yOCAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0
LXF1ZXVlQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIz
NjYwNS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
MDA4NworCisgICAgICAgIGNhdXNlZCB0aHJlZSBBUEkgdGVzdCB0aW1lb3V0cyAoUmVxdWVzdGVk
IGJ5IGplcm5vYmxlIG9uCisgICAgICAgICN3ZWJraXQpLgorCisgICAgICAgIFJldmVydGVkIGNo
YW5nZXNldDoKKworICAgICAgICAiUmVmYWN0b3Jpbmc6IGVsaW1pbmF0ZSByYXcgcG9pbnRlciB1
c2FnZSBpbiBGdWxsc2NyZWVuIGNvZGUiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xODg3NDcKKyAgICAgICAgaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcv
Y2hhbmdlc2V0LzIzNjYwNQorCiAyMDE4LTA5LTI4ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFNpbXBsaWZ5IFN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjp0cmF2
ZXJzZU5vZGVzRm9yU2VyaWFsaXphdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBhYmRjNzRhNDU0OGM0ODkxMzNk
MzY5MzliMWMzODZmNjQ1NzkxMGI0Li4wYzM0OWQxYmYzZTc3ZjQ0Y2YwNzJlMzBjYzgxZmE4YmU3
NjMyYzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE4LTA5LTI4ICBDb21taXQgUXVl
dWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KKworICAgICAgICBVbnJldmlld2VkLCByb2xs
aW5nIG91dCByMjM2NjA1LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTkwMDg3CisKKyAgICAgICAgY2F1c2VkIHRocmVlIEFQSSB0ZXN0IHRpbWVvdXRz
IChSZXF1ZXN0ZWQgYnkgamVybm9ibGUgb24KKyAgICAgICAgI3dlYmtpdCkuCisKKyAgICAgICAg
UmV2ZXJ0ZWQgY2hhbmdlc2V0OgorCisgICAgICAgICJSZWZhY3RvcmluZzogZWxpbWluYXRlIHJh
dyBwb2ludGVyIHVzYWdlIGluIEZ1bGxzY3JlZW4gY29kZSIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODc0NworICAgICAgICBodHRwczovL3RyYWMu
d2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjM2NjA1CisKIDIwMTgtMDktMjggIEplciBOb2JsZSAgPGpl
ci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVmYWN0b3Jpbmc6IGVsaW1pbmF0ZSByYXcg
cG9pbnRlciB1c2FnZSBpbiBGdWxsc2NyZWVuIGNvZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxv
ZwppbmRleCA0MDM4ODdhOGEwYzQ3OWI0OGFkMDY4ZDQxZTk4NDdjMzBiNzNhNjVlLi42MWU0MmZl
NTVhN2U1MjQ2MzQxYjI4NTZmYWFmOTIzNGE0MTA3OGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTgtMDktMjggIENvbW1pdCBRdWV1ZSAgPGNvbW1p
dC1xdWV1ZUB3ZWJraXQub3JnPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIy
MzY2MDUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTAwODcKKworICAgICAgICBjYXVzZWQgdGhyZWUgQVBJIHRlc3QgdGltZW91dHMgKFJlcXVlc3Rl
ZCBieSBqZXJub2JsZSBvbgorICAgICAgICAjd2Via2l0KS4KKworICAgICAgICBSZXZlcnRlZCBj
aGFuZ2VzZXQ6CisKKyAgICAgICAgIlJlZmFjdG9yaW5nOiBlbGltaW5hdGUgcmF3IHBvaW50ZXIg
dXNhZ2UgaW4gRnVsbHNjcmVlbiBjb2RlIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTg4NzQ3CisgICAgICAgIGh0dHBzOi8vdHJhYy53ZWJraXQub3Jn
L2NoYW5nZXNldC8yMzY2MDUKKwogMjAxOC0wOS0yOCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZWZhY3RvcmluZzogZWxpbWluYXRlIHJhdyBwb2ludGVyIHVz
YWdlIGluIEZ1bGxzY3JlZW4gY29kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggODI3MTQwOTU3MThkZmVhNmRkMThlYTgxZTQzYmNkMjNkNjFhMGJiYy4uOWRm
MWE1ZWNhYzYzNjc2MDUwNmZiNWJlNDZiMjZlMWJiZTNkN2E0NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV1RGL1dURi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02MDksNyArNjA5LDYgQEAKIAkJQzZGMDUwNzkw
RDlDNDMyQTk5MDg1RTc1IC8qIEFTQ0lJTGl0ZXJhbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBBU0NJSUxpdGVyYWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDOEY1OTdDQTJBNTc0MTdGQkFCOTJGRDYgLyogUmFuZG9tRGV2aWNlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJhbmRvbURldmljZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEMDAzNjBEMjE1MDFGNzgwMEY0RUQ0QyAvKiBTdHJp
bmdUb0ludGVnZXJDb252ZXJzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmluZ1RvSW50ZWdlckNv
bnZlcnNpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQ0QyRDBEMTAyMTJDNzZF
NjAwMThDNzg0IC8qIFdlYWtQdHJDb250YWluZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2Vha1B0ckNvbnRhaW5lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDRDU0OTdBQTE1ODU3RDAzMDBCNUJDMzAgLyogTWVkaWFUaW1lLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhVGltZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUNENTQ5N0FCMTU4NTdEMDMwMEI1QkMzMCAvKiBNZWRpYVRpbWUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFUaW1lLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUNENkQ5RkNEMUVFRjNBRDQwMDhCMDY3MSAvKiBBbGdvcml0aG1zLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEFsZ29yaXRobXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTExNDMsNyArMTE0Miw2IEBACiAJCQkJMEY2NkIyODkxREM5N0JBQjAwNEExRDNGIC8qIFdh
bGxUaW1lLmggKi8sCiAJCQkJODNBQkIzQzAyMEIzODIzMjAwQkEzMzA2IC8qIFdlYWtPYmpDUHRy
LmggKi8sCiAJCQkJOTc0Q0ZDOEQxNkE0RjMyNzAwNkQ1NDA0IC8qIFdlYWtQdHIuaCAqLywKLQkJ
CQlDRDJEMEQxMDIxMkM3NkU2MDAxOEM3ODQgLyogV2Vha1B0ckNvbnRhaW5lci5oICovLAogCQkJ
CTBGMzUwMTYzMUJCMjU4QzgwMEYwQTJBMyAvKiBXZWFrUmFuZG9tLmggKi8sCiAJCQkJMEZFNDQ3
OUExQjdBQUEwMzAwOTQ5OEVCIC8qIFdvcmRMb2NrLmNwcCAqLywKIAkJCQkwRkU0NDc5QjFCN0FB
QTAzMDA5NDk4RUIgLyogV29yZExvY2suaCAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L1dlYWtQdHJDb250YWluZXIuaCBiL1NvdXJjZS9XVEYvd3RmL1dlYWtQdHJDb250YWluZXIuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGM4NWJmZTM1NjcyYzdlNWExMTg4NWZmNjA2
YzRkYTNlZWVlMzgwZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9XZWFrUHRyQ29udGFpbmVyLmgKKysrIC9kZXYvbnVsbApAQCAt
MSw3MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KLQotbmFtZXNwYWNlIFdURiB7Ci0K
LXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotY2xhc3MgV2Vha1B0ckNvbnRhaW5lciB7Ci1wdWJsaWM6
Ci0gICAgdm9pZCBhZGQoV2Vha1B0cjxUPiYmIHB0cikKLSAgICB7Ci0gICAgICAgIG1fbWVtYmVy
cy5hcHBlbmQoV1RGTW92ZShwdHIpKTsKLSAgICB9Ci0gICAgCi0gICAgdm9pZCByZW1vdmUoVCYg
cHRyKQotICAgIHsKLSAgICAgICAgbV9tZW1iZXJzLnJlbW92ZUFsbCgmcHRyKTsKLSAgICB9Ci0K
LSAgICB2b2lkIGNsZWFyKCkKLSAgICB7Ci0gICAgICAgIG1fbWVtYmVycy5jbGVhcigpOwotICAg
IH0KLQotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9t
ZW1iZXJzLmlzRW1wdHkoKTsKLSAgICB9Ci0gICAgCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEY+
Ci0gICAgdm9pZCBmb3JFYWNoTm9uTnVsbE1lbWJlcihGJiYgZikKLSAgICB7Ci0gICAgICAgIG1f
bWVtYmVycy5yZW1vdmVBbGxNYXRjaGluZyhbZiA9IFdURk1vdmUoZildIChhdXRvJiBtZW1iZXIp
IHsKLSAgICAgICAgICAgIGlmICghbWVtYmVyKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgICAgIGYoKm1lbWJlcik7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICAgICAgfSk7Ci0gICAgfQotcHJpdmF0ZToKLSAgICBWZWN0b3I8V2Vha1B0cjxUPj4gbV9tZW1i
ZXJzOwotfTsKLQotfQotCi11c2luZyBXVEY6OldlYWtQdHJDb250YWluZXI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QbGF5YmFja1Nlc3Npb25JbnRlcmZhY2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZS5oCmluZGV4IGRiN2I1OGZhOWUwNDViYjM0OTU1NDU5NWY0MmM4MjAyOTE0NzA5OGUuLmNkZjJi
YmZiZGRkN2UyZjkzNWRjMmIzY2Q0OWY1NTA4MTg4NDc1NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS5oCkBA
IC0yNywxMSArMjcsMTYgQEAKIAogI2lmIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykg
JiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKIAorI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
K2NsYXNzIFRpbWVSYW5nZXM7CisKIGNsYXNzIFBsYXliYWNrU2Vzc2lvbkludGVyZmFjZSB7CiBw
dWJsaWM6Ci0gICAgdmlydHVhbCB+UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlKCkgPSBkZWZhdWx0
OworICAgIHZpcnR1YWwgflBsYXliYWNrU2Vzc2lvbkludGVyZmFjZSgpIHsgfTsKICAgICB2aXJ0
dWFsIHZvaWQgcmVzZXRNZWRpYVN0YXRlKCkgPSAwOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGxheWJhY2tTZXNzaW9uTW9kZWwuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1vZGVsLmgKaW5kZXggMTU1MzYz
OWQ3NGFiZTA2MDM5YThkMjg3NTRmYWFjZTg5MjYwZjYzNy4uYzQzZjczMmZkNjQzZGQ5ZmRiYWQz
Y2E1N2ZhOTE3YThmYTI1YTQzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvUGxheWJhY2tTZXNzaW9uTW9kZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9QbGF5YmFja1Nlc3Npb25Nb2RlbC5oCkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgotI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApAQCAtNDAsMTIgKzM5LDggQEAgc3RydWN0IE1lZGlhU2VsZWN0aW9uT3B0aW9uOwogCiBjbGFz
cyBQbGF5YmFja1Nlc3Npb25Nb2RlbCB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB+UGxheWJhY2tT
ZXNzaW9uTW9kZWwoKSA9IGRlZmF1bHQ7Ci0KLSAgICB2b2lkIHJlZigpIHsgcmVmUGxheWJhY2tT
ZXNzaW9uTW9kZWwoKTsgfQotICAgIHZvaWQgZGVyZWYoKSB7IGRlcmVmUGxheWJhY2tTZXNzaW9u
TW9kZWwoKTsgfQotCi0gICAgdmlydHVhbCB2b2lkIGFkZENsaWVudChXZWFrUHRyPFBsYXliYWNr
U2Vzc2lvbk1vZGVsQ2xpZW50PiYmKSA9IDA7CisgICAgdmlydHVhbCB+UGxheWJhY2tTZXNzaW9u
TW9kZWwoKSB7IH07CisgICAgdmlydHVhbCB2b2lkIGFkZENsaWVudChQbGF5YmFja1Nlc3Npb25N
b2RlbENsaWVudCYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQ2xpZW50KFBsYXliYWNr
U2Vzc2lvbk1vZGVsQ2xpZW50JikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHBsYXkoKSA9IDA7
CkBAIC05MSwxMCArODYsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBkb3VibGUgdm9sdW1lKCkg
Y29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpc1BpY3R1cmVJblBpY3R1cmVTdXBwb3J0ZWQo
KSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzUGljdHVyZUluUGljdHVyZUFjdGl2ZSgp
IGNvbnN0ID0gMDsKLQotcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgcmVmUGxheWJhY2tTZXNz
aW9uTW9kZWwoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRlcmVmUGxheWJhY2tTZXNzaW9uTW9k
ZWwoKSA9IDA7CiB9OwogCiBjbGFzcyBQbGF5YmFja1Nlc3Npb25Nb2RlbENsaWVudCB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QbGF5YmFja1Nlc3Npb25Nb2Rl
bE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGxheWJhY2tT
ZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQuaAppbmRleCAyMDQ2MjliYzgxMTk1NGYxMGE4OWZmMzUx
Y2E3YTJkY2E3OTRhMDQzLi45ZWVmZDEwZjJhM2RjZWVhZDExOTRlYzk0ODUzMTM5NDg0NzIzNzkx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QbGF5YmFja1Nlc3Np
b25Nb2RlbE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L1BsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50LmgKQEAgLTMwLDggKzMwLDkgQEAKICNp
bmNsdWRlICJFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudEVudW1z
LmgiCiAjaW5jbHVkZSAiUGxheWJhY2tTZXNzaW9uTW9kZWwuaCIKKyNpbmNsdWRlIDx3dGYvSGFz
aFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvV2Vha1B0ckNv
bnRhaW5lci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCkBAIC00MCwxMCArNDEsNyBAQCBjbGFzcyBIVE1MTWVkaWFFbGVtZW50OwogY2xhc3MgVGV4
dFRyYWNrOwogY2xhc3MgUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlOwogCi1jbGFzcyBQbGF5YmFj
a1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudCBmaW5hbAotICAgIDogcHVibGljIFJlZkNvdW50ZWQ8
UGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ+Ci0gICAgLCBwdWJsaWMgQ2FuTWFrZVdl
YWtQdHI8UGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ+Ci0gICAgLCBwdWJsaWMgUGxh
eWJhY2tTZXNzaW9uTW9kZWwgeworY2xhc3MgUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1l
bnQgZmluYWwgOiBwdWJsaWMgUGxheWJhY2tTZXNzaW9uTW9kZWwsIHB1YmxpYyBFdmVudExpc3Rl
bmVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFF
bGVtZW50PiBjcmVhdGUoKQogICAgIHsKQEAgLTUzLDkgKzUxLDExIEBAIHB1YmxpYzoKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldE1lZGlhRWxlbWVudChIVE1MTWVkaWFFbGVtZW50Kik7CiAg
ICAgSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9tZWRp
YUVsZW1lbnQuZ2V0KCk7IH0KIAorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaGFuZGxlRXZlbnQo
V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFdlYkNvcmU6OkV2ZW50JikgZmluYWw7
CiAgICAgdm9pZCB1cGRhdGVGb3JFdmVudE5hbWUoY29uc3QgV1RGOjpBdG9taWNTdHJpbmcmKTsK
KyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgcmhzKSBjb25zdCBmaW5h
bCB7IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBXZWJDb3JlOjpFdmVudExpc3RlbmVyKj4odGhp
cykgPT0gJnJoczsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRDbGllbnQoV2Vha1B0
cjxQbGF5YmFja1Nlc3Npb25Nb2RlbENsaWVudD4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBhZGRDbGllbnQoUGxheWJhY2tTZXNzaW9uTW9kZWxDbGllbnQmKTsKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHJlbW92ZUNsaWVudChQbGF5YmFja1Nlc3Npb25Nb2RlbENsaWVudCYpOwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgcGxheSgpIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgcGF1c2UoKSBmaW5hbDsKQEAgLTk4LDI3ICs5OCwxOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBp
c1BpY3R1cmVJblBpY3R1cmVTdXBwb3J0ZWQoKSBjb25zdCBmaW5hbDsKICAgICBib29sIGlzUGlj
dHVyZUluUGljdHVyZUFjdGl2ZSgpIGNvbnN0IGZpbmFsOwogCi0gICAgdXNpbmcgUmVmQ291bnRl
ZDo6cmVmOwotICAgIHVzaW5nIFJlZkNvdW50ZWQ6OmRlcmVmOwotCiBwcm90ZWN0ZWQ6CiAgICAg
V0VCQ09SRV9FWFBPUlQgUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQoKTsKIAogcHJp
dmF0ZToKLSAgICB2b2lkIHJlZlBsYXliYWNrU2Vzc2lvbk1vZGVsKCkgZmluYWwgeyByZWYoKTsg
fQotICAgIHZvaWQgZGVyZWZQbGF5YmFja1Nlc3Npb25Nb2RlbCgpIGZpbmFsIHsgZGVyZWYoKTsg
fQotICAgIAogICAgIHZvaWQgcHJvZ3Jlc3NFdmVudFRpbWVyRmlyZWQoKTsKICAgICBzdGF0aWMg
Y29uc3QgVmVjdG9yPFdURjo6QXRvbWljU3RyaW5nPiYgb2JzZXJ2ZWRFdmVudE5hbWVzKCk7CiAg
ICAgY29uc3QgV1RGOjpBdG9taWNTdHJpbmcmIGV2ZW50TmFtZUFsbCgpOwogCi0gICAgY2xhc3Mg
TWVkaWFFbGVtZW50RXZlbnRMaXN0ZW5lcjsKLQogICAgIFJlZlB0cjxIVE1MTWVkaWFFbGVtZW50
PiBtX21lZGlhRWxlbWVudDsKLSAgICBXZWFrUHRyQ29udGFpbmVyPFBsYXliYWNrU2Vzc2lvbk1v
ZGVsQ2xpZW50PiBtX2NsaWVudHM7CisgICAgYm9vbCBtX2lzTGlzdGVuaW5nIHsgZmFsc2UgfTsK
KyAgICBIYXNoU2V0PFBsYXliYWNrU2Vzc2lvbk1vZGVsQ2xpZW50Kj4gbV9jbGllbnRzOwogICAg
IFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNrPj4gbV9sZWdpYmxlVHJhY2tzRm9yTWVudTsKICAgICBW
ZWN0b3I8UmVmUHRyPEF1ZGlvVHJhY2s+PiBtX2F1ZGlvVHJhY2tzRm9yTWVudTsKLSAgICBSZWY8
TWVkaWFFbGVtZW50RXZlbnRMaXN0ZW5lcj4gbV9ldmVudExpc3RlbmVyOwogCiAgICAgZG91Ymxl
IHBsYXliYWNrU3RhcnRlZFRpbWUoKSBjb25zdDsKICAgICB2b2lkIHVwZGF0ZU1lZGlhU2VsZWN0
aW9uT3B0aW9ucygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
UGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9QbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5tbQppbmRleCBkNjBh
NDQzYmY3ZTY5MDU5MWQxYTBmYjljNGI4ZGJkYzE2M2RlZmNjLi5jMDE3OTIxNzVkZDMzZDI5ZmEz
ODRhNWU5NzI1NTA1MjQ3MzlkNTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9QbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5t
bQpAQCAtNDcsMzMgKzQ3LDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgUGxh
eWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6Ok1lZGlhRWxlbWVudEV2ZW50TGlzdGVuZXIg
ZmluYWwgOiBwdWJsaWMgRXZlbnRMaXN0ZW5lciB7Ci1wdWJsaWM6Ci0gICAgTWVkaWFFbGVtZW50
RXZlbnRMaXN0ZW5lcihXZWFrUHRyPFBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50PiYm
IHBhcmVudCkKLSAgICAgICAgOiBFdmVudExpc3RlbmVyKENQUEV2ZW50TGlzdGVuZXJUeXBlKQot
ICAgICAgICAsIG1fcGFyZW50KFdURk1vdmUocGFyZW50KSkKLSAgICB7Ci0gICAgfQotcHJpdmF0
ZToKLSAgICB2b2lkIGhhbmRsZUV2ZW50KFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
LCBXZWJDb3JlOjpFdmVudCYgZXZlbnQpIGZpbmFsCi0gICAgewotICAgICAgICBpZiAobV9wYXJl
bnQpCi0gICAgICAgICAgICBtX3BhcmVudC0+dXBkYXRlRm9yRXZlbnROYW1lKGV2ZW50LnR5cGUo
KSk7Ci0gICAgfQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiByaHMp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFdlYkNvcmU6OkV2ZW50TGlz
dGVuZXIqPih0aGlzKSA9PSAmcmhzOyB9Ci0KLSAgICBXZWFrUHRyPFBsYXliYWNrU2Vzc2lvbk1v
ZGVsTWVkaWFFbGVtZW50PiBtX3BhcmVudDsKLX07Ci0KIFBsYXliYWNrU2Vzc2lvbk1vZGVsTWVk
aWFFbGVtZW50OjpQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudCgpCi0gICAgOiBtX2V2
ZW50TGlzdGVuZXIoYWRvcHRSZWYoKm5ldyBNZWRpYUVsZW1lbnRFdmVudExpc3RlbmVyKG1ha2VX
ZWFrUHRyKCp0aGlzKSkpKQorICAgIDogRXZlbnRMaXN0ZW5lcihFdmVudExpc3RlbmVyOjpDUFBF
dmVudExpc3RlbmVyVHlwZSkKIHsKIH0KIAogUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1l
bnQ6On5QbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudCgpCiB7Ci0gICAgbV9jbGllbnRz
LmNsZWFyKCk7Ci0gICAgc2V0TWVkaWFFbGVtZW50KG51bGxwdHIpOwogfQogCiB2b2lkIFBsYXli
YWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50OjpzZXRNZWRpYUVsZW1lbnQoSFRNTE1lZGlhRWxl
bWVudCogbWVkaWFFbGVtZW50KQpAQCAtODMsNDUgKzYzLDUyIEBAIHZvaWQgUGxheWJhY2tTZXNz
aW9uTW9kZWxNZWRpYUVsZW1lbnQ6OnNldE1lZGlhRWxlbWVudChIVE1MTWVkaWFFbGVtZW50KiBt
ZWRpYUVsCiAKICAgICBhdXRvJiBldmVudHMgPSBldmVudE5hbWVzKCk7CiAKLSAgICBpZiAobV9t
ZWRpYUVsZW1lbnQpIHsKKyAgICBpZiAobV9tZWRpYUVsZW1lbnQgJiYgbV9pc0xpc3RlbmluZykg
ewogICAgICAgICBmb3IgKGF1dG8mIGV2ZW50TmFtZSA6IG9ic2VydmVkRXZlbnROYW1lcygpKQot
ICAgICAgICAgICAgbV9tZWRpYUVsZW1lbnQtPnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1l
LCBtX2V2ZW50TGlzdGVuZXIuY29weVJlZigpLCBmYWxzZSk7CisgICAgICAgICAgICBtX21lZGlh
RWxlbWVudC0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsICp0aGlzLCBmYWxzZSk7CiAg
ICAgICAgIGlmIChhdXRvKiBhdWRpb1RyYWNrcyA9IG1fbWVkaWFFbGVtZW50LT5hdWRpb1RyYWNr
cygpKSB7Ci0gICAgICAgICAgICBhdWRpb1RyYWNrcy0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVu
dHMuYWRkdHJhY2tFdmVudCwgbV9ldmVudExpc3RlbmVyLmNvcHlSZWYoKSwgZmFsc2UpOwotICAg
ICAgICAgICAgYXVkaW9UcmFja3MtPnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRzLmNoYW5nZUV2
ZW50LCBtX2V2ZW50TGlzdGVuZXIuY29weVJlZigpLCBmYWxzZSk7Ci0gICAgICAgICAgICBhdWRp
b1RyYWNrcy0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudHMucmVtb3ZldHJhY2tFdmVudCwgbV9l
dmVudExpc3RlbmVyLmNvcHlSZWYoKSwgZmFsc2UpOworICAgICAgICAgICAgYXVkaW9UcmFja3Mt
PnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRzLmFkZHRyYWNrRXZlbnQsICp0aGlzLCBmYWxzZSk7
CisgICAgICAgICAgICBhdWRpb1RyYWNrcy0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudHMuY2hh
bmdlRXZlbnQsICp0aGlzLCBmYWxzZSk7CisgICAgICAgICAgICBhdWRpb1RyYWNrcy0+cmVtb3Zl
RXZlbnRMaXN0ZW5lcihldmVudHMucmVtb3ZldHJhY2tFdmVudCwgKnRoaXMsIGZhbHNlKTsKICAg
ICAgICAgfQogCiAgICAgICAgIGlmIChhdXRvKiB0ZXh0VHJhY2tzID0gbV9tZWRpYUVsZW1lbnQt
PmF1ZGlvVHJhY2tzKCkpIHsKLSAgICAgICAgICAgIHRleHRUcmFja3MtPnJlbW92ZUV2ZW50TGlz
dGVuZXIoZXZlbnRzLmFkZHRyYWNrRXZlbnQsIG1fZXZlbnRMaXN0ZW5lci5jb3B5UmVmKCksIGZh
bHNlKTsKLSAgICAgICAgICAgIHRleHRUcmFja3MtPnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRz
LmNoYW5nZUV2ZW50LCBtX2V2ZW50TGlzdGVuZXIuY29weVJlZigpLCBmYWxzZSk7Ci0gICAgICAg
ICAgICB0ZXh0VHJhY2tzLT5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50cy5yZW1vdmV0cmFja0V2
ZW50LCBtX2V2ZW50TGlzdGVuZXIuY29weVJlZigpLCBmYWxzZSk7CisgICAgICAgICAgICB0ZXh0
VHJhY2tzLT5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50cy5hZGR0cmFja0V2ZW50LCAqdGhpcywg
ZmFsc2UpOworICAgICAgICAgICAgdGV4dFRyYWNrcy0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVu
dHMuY2hhbmdlRXZlbnQsICp0aGlzLCBmYWxzZSk7CisgICAgICAgICAgICB0ZXh0VHJhY2tzLT5y
ZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50cy5yZW1vdmV0cmFja0V2ZW50LCAqdGhpcywgZmFsc2Up
OwogICAgICAgICB9Ci0gICAgICAgIG1fbWVkaWFFbGVtZW50LT5yZXNldFBsYXliYWNrU2Vzc2lv
blN0YXRlKCk7CiAgICAgfQorICAgIG1faXNMaXN0ZW5pbmcgPSBmYWxzZTsKKworICAgIGlmICht
X21lZGlhRWxlbWVudCkKKyAgICAgICAgbV9tZWRpYUVsZW1lbnQtPnJlc2V0UGxheWJhY2tTZXNz
aW9uU3RhdGUoKTsKIAogICAgIG1fbWVkaWFFbGVtZW50ID0gbWVkaWFFbGVtZW50OwogCiAgICAg
aWYgKG1fbWVkaWFFbGVtZW50KSB7CiAgICAgICAgIGZvciAoYXV0byYgZXZlbnROYW1lIDogb2Jz
ZXJ2ZWRFdmVudE5hbWVzKCkpCi0gICAgICAgICAgICBtX21lZGlhRWxlbWVudC0+YWRkRXZlbnRM
aXN0ZW5lcihldmVudE5hbWUsIG1fZXZlbnRMaXN0ZW5lci5jb3B5UmVmKCksIGZhbHNlKTsKKyAg
ICAgICAgICAgIG1fbWVkaWFFbGVtZW50LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgKnRo
aXMsIGZhbHNlKTsKIAogICAgICAgICBhdXRvJiBhdWRpb1RyYWNrcyA9IG1fbWVkaWFFbGVtZW50
LT5lbnN1cmVBdWRpb1RyYWNrcygpOwotICAgICAgICBhdWRpb1RyYWNrcy5hZGRFdmVudExpc3Rl
bmVyKGV2ZW50cy5hZGR0cmFja0V2ZW50LCBtX2V2ZW50TGlzdGVuZXIuY29weVJlZigpLCBmYWxz
ZSk7Ci0gICAgICAgIGF1ZGlvVHJhY2tzLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRzLmNoYW5nZUV2
ZW50LCBtX2V2ZW50TGlzdGVuZXIuY29weVJlZigpLCBmYWxzZSk7Ci0gICAgICAgIGF1ZGlvVHJh
Y2tzLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRzLnJlbW92ZXRyYWNrRXZlbnQsIG1fZXZlbnRMaXN0
ZW5lci5jb3B5UmVmKCksIGZhbHNlKTsKKyAgICAgICAgYXVkaW9UcmFja3MuYWRkRXZlbnRMaXN0
ZW5lcihldmVudHMuYWRkdHJhY2tFdmVudCwgKnRoaXMsIGZhbHNlKTsKKyAgICAgICAgYXVkaW9U
cmFja3MuYWRkRXZlbnRMaXN0ZW5lcihldmVudHMuY2hhbmdlRXZlbnQsICp0aGlzLCBmYWxzZSk7
CisgICAgICAgIGF1ZGlvVHJhY2tzLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRzLnJlbW92ZXRyYWNr
RXZlbnQsICp0aGlzLCBmYWxzZSk7CiAKICAgICAgICAgYXV0byYgdGV4dFRyYWNrcyA9IG1fbWVk
aWFFbGVtZW50LT5lbnN1cmVUZXh0VHJhY2tzKCk7Ci0gICAgICAgIHRleHRUcmFja3MuYWRkRXZl
bnRMaXN0ZW5lcihldmVudHMuYWRkdHJhY2tFdmVudCwgbV9ldmVudExpc3RlbmVyLmNvcHlSZWYo
KSwgZmFsc2UpOwotICAgICAgICB0ZXh0VHJhY2tzLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRzLmNo
YW5nZUV2ZW50LCBtX2V2ZW50TGlzdGVuZXIuY29weVJlZigpLCBmYWxzZSk7Ci0gICAgICAgIHRl
eHRUcmFja3MuYWRkRXZlbnRMaXN0ZW5lcihldmVudHMucmVtb3ZldHJhY2tFdmVudCwgbV9ldmVu
dExpc3RlbmVyLmNvcHlSZWYoKSwgZmFsc2UpOworICAgICAgICB0ZXh0VHJhY2tzLmFkZEV2ZW50
TGlzdGVuZXIoZXZlbnRzLmFkZHRyYWNrRXZlbnQsICp0aGlzLCBmYWxzZSk7CisgICAgICAgIHRl
eHRUcmFja3MuYWRkRXZlbnRMaXN0ZW5lcihldmVudHMuY2hhbmdlRXZlbnQsICp0aGlzLCBmYWxz
ZSk7CisgICAgICAgIHRleHRUcmFja3MuYWRkRXZlbnRMaXN0ZW5lcihldmVudHMucmVtb3ZldHJh
Y2tFdmVudCwgKnRoaXMsIGZhbHNlKTsKICAgICB9CiAKICAgICB1cGRhdGVGb3JFdmVudE5hbWUo
ZXZlbnROYW1lQWxsKCkpOwogCi0gICAgbV9jbGllbnRzLmZvckVhY2hOb25OdWxsTWVtYmVyKFtp
c1BpY3R1cmVJblBpY3R1cmVTdXBwb3J0ZWQgPSBpc1BpY3R1cmVJblBpY3R1cmVTdXBwb3J0ZWQo
KV0gKGF1dG8mIGNsaWVudCkgewotICAgICAgICBjbGllbnQuaXNQaWN0dXJlSW5QaWN0dXJlU3Vw
cG9ydGVkQ2hhbmdlZChpc1BpY3R1cmVJblBpY3R1cmVTdXBwb3J0ZWQpOwotICAgIH0pOworICAg
IGZvciAoYXV0byBjbGllbnQgOiBtX2NsaWVudHMpCisgICAgICAgIGNsaWVudC0+aXNQaWN0dXJl
SW5QaWN0dXJlU3VwcG9ydGVkQ2hhbmdlZChpc1BpY3R1cmVJblBpY3R1cmVTdXBwb3J0ZWQoKSk7
Cit9CisKK3ZvaWQgUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmhhbmRsZUV2ZW50
KFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBXZWJDb3JlOjpFdmVudCYgZXZlbnQp
Cit7CisgICAgdXBkYXRlRm9yRXZlbnROYW1lKGV2ZW50LnR5cGUoKSk7CiB9CiAKIHZvaWQgUGxh
eWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OnVwZGF0ZUZvckV2ZW50TmFtZShjb25zdCBX
VEY6OkF0b21pY1N0cmluZyYgZXZlbnROYW1lKQpAQCAtMTMzLDQ2ICsxMjAsNTEgQEAgdm9pZCBQ
bGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6dXBkYXRlRm9yRXZlbnROYW1lKGNvbnN0
IFdURjo6QXRvbWljU3RyaW4KIAogICAgIGlmIChhbGwKICAgICAgICAgfHwgZXZlbnROYW1lID09
IGV2ZW50TmFtZXMoKS5kdXJhdGlvbmNoYW5nZUV2ZW50KSB7Ci0gICAgICAgIG1fY2xpZW50cy5m
b3JFYWNoTm9uTnVsbE1lbWJlcihbZHVyYXRpb24gPSBkdXJhdGlvbigpXSAoYXV0byYgY2xpZW50
KSB7Ci0gICAgICAgICAgICBjbGllbnQuZHVyYXRpb25DaGFuZ2VkKGR1cmF0aW9uKTsKLSAgICAg
ICAgfSk7CisgICAgICAgIGRvdWJsZSBkdXJhdGlvbiA9IHRoaXMtPmR1cmF0aW9uKCk7CisgICAg
ICAgIGZvciAoYXV0byBjbGllbnQgOiBtX2NsaWVudHMpCisgICAgICAgICAgICBjbGllbnQtPmR1
cmF0aW9uQ2hhbmdlZChkdXJhdGlvbik7CiAgICAgICAgIC8vIFRoZXNlIGlzIG5vIHN0YW5kYXJk
IGV2ZW50IGZvciBtaW5GYXN0UmV2ZXJzZVJhdGVDaGFuZ2U7IGR1cmF0aW9uIGNoYW5nZSBpcyBh
IHJlYXNvbmFibGUgcHJveHkgZm9yIGl0LgogICAgICAgICAvLyBJdCBoYXBwZW5zIGV2ZXJ5IHRp
bWUgYSBuZXcgaXRlbSBiZWNvbWVzIHJlYWR5IHRvIHBsYXkuCi0gICAgICAgIG1fY2xpZW50cy5m
b3JFYWNoTm9uTnVsbE1lbWJlcihbY2FuUGxheUZhc3RSZXZlcnNlID0gY2FuUGxheUZhc3RSZXZl
cnNlKCldIChhdXRvJiBjbGllbnQpIHsKLSAgICAgICAgICAgIGNsaWVudC5jYW5QbGF5RmFzdFJl
dmVyc2VDaGFuZ2VkKGNhblBsYXlGYXN0UmV2ZXJzZSk7Ci0gICAgICAgIH0pOworICAgICAgICBi
b29sIGNhblBsYXlGYXN0UmV2ZXJzZSA9IHRoaXMtPmNhblBsYXlGYXN0UmV2ZXJzZSgpOworICAg
ICAgICBmb3IgKGF1dG8gY2xpZW50IDogbV9jbGllbnRzKQorICAgICAgICAgICAgY2xpZW50LT5j
YW5QbGF5RmFzdFJldmVyc2VDaGFuZ2VkKGNhblBsYXlGYXN0UmV2ZXJzZSk7CiAgICAgfQogCiAg
ICAgaWYgKGFsbAogICAgICAgICB8fCBldmVudE5hbWUgPT0gZXZlbnROYW1lcygpLnBsYXlFdmVu
dAogICAgICAgICB8fCBldmVudE5hbWUgPT0gZXZlbnROYW1lcygpLnBsYXlpbmdFdmVudCkgewot
ICAgICAgICBtX2NsaWVudHMuZm9yRWFjaE5vbk51bGxNZW1iZXIoW3BsYXliYWNrU3RhcnRlZFRp
bWUgPSBwbGF5YmFja1N0YXJ0ZWRUaW1lKCldIChhdXRvJiBjbGllbnQpIHsKLSAgICAgICAgICAg
IGNsaWVudC5wbGF5YmFja1N0YXJ0ZWRUaW1lQ2hhbmdlZChwbGF5YmFja1N0YXJ0ZWRUaW1lKTsK
LSAgICAgICAgfSk7CisgICAgICAgIGZvciAoYXV0byBjbGllbnQgOiBtX2NsaWVudHMpCisgICAg
ICAgICAgICBjbGllbnQtPnBsYXliYWNrU3RhcnRlZFRpbWVDaGFuZ2VkKHBsYXliYWNrU3RhcnRl
ZFRpbWUoKSk7CiAgICAgfQogCiAgICAgaWYgKGFsbAogICAgICAgICB8fCBldmVudE5hbWUgPT0g
ZXZlbnROYW1lcygpLnBhdXNlRXZlbnQKICAgICAgICAgfHwgZXZlbnROYW1lID09IGV2ZW50TmFt
ZXMoKS5wbGF5RXZlbnQKICAgICAgICAgfHwgZXZlbnROYW1lID09IGV2ZW50TmFtZXMoKS5yYXRl
Y2hhbmdlRXZlbnQpIHsKLSAgICAgICAgbV9jbGllbnRzLmZvckVhY2hOb25OdWxsTWVtYmVyKFtp
c1BsYXlpbmcgPSBpc1BsYXlpbmcoKSwgcGxheWJhY2tSYXRlID0gcGxheWJhY2tSYXRlKCldIChh
dXRvJiBjbGllbnQpIHsKLSAgICAgICAgICAgIGNsaWVudC5yYXRlQ2hhbmdlZChpc1BsYXlpbmcs
IHBsYXliYWNrUmF0ZSk7Ci0gICAgICAgIH0pOworICAgICAgICBib29sIGlzUGxheWluZyA9IHRo
aXMtPmlzUGxheWluZygpOworICAgICAgICBmbG9hdCBwbGF5YmFja1JhdGUgPSB0aGlzLT5wbGF5
YmFja1JhdGUoKTsKKyAgICAgICAgZm9yIChhdXRvIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAg
ICAgICAgIGNsaWVudC0+cmF0ZUNoYW5nZWQoaXNQbGF5aW5nLCBwbGF5YmFja1JhdGUpOwogICAg
IH0KIAogICAgIGlmIChhbGwKICAgICAgICAgfHwgZXZlbnROYW1lID09IGV2ZW50TmFtZXMoKS50
aW1ldXBkYXRlRXZlbnQpIHsKLSAgICAgICAgbV9jbGllbnRzLmZvckVhY2hOb25OdWxsTWVtYmVy
KFtjdXJyZW50VGltZSA9IGN1cnJlbnRUaW1lKCksIGFuY2hvclRpbWUgPSBbW05TUHJvY2Vzc0lu
Zm8gcHJvY2Vzc0luZm9dIHN5c3RlbVVwdGltZV1dIChhdXRvJiBjbGllbnQpIHsKLSAgICAgICAg
ICAgIGNsaWVudC5jdXJyZW50VGltZUNoYW5nZWQoY3VycmVudFRpbWUsIGFuY2hvclRpbWUpOwot
ICAgICAgICB9KTsKKyAgICAgICAgYXV0byBjdXJyZW50VGltZSA9IHRoaXMtPmN1cnJlbnRUaW1l
KCk7CisgICAgICAgIGF1dG8gYW5jaG9yVGltZSA9IFtbTlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5m
b10gc3lzdGVtVXB0aW1lXTsKKyAgICAgICAgZm9yIChhdXRvIGNsaWVudCA6IG1fY2xpZW50cykK
KyAgICAgICAgICAgIGNsaWVudC0+Y3VycmVudFRpbWVDaGFuZ2VkKGN1cnJlbnRUaW1lLCBhbmNo
b3JUaW1lKTsKICAgICB9CiAKICAgICBpZiAoYWxsCiAgICAgICAgIHx8IGV2ZW50TmFtZSA9PSBl
dmVudE5hbWVzKCkucHJvZ3Jlc3NFdmVudCkgewotICAgICAgICBtX2NsaWVudHMuZm9yRWFjaE5v
bk51bGxNZW1iZXIoW2J1ZmZlcmVkVGltZSA9IGJ1ZmZlcmVkVGltZSgpLCBzZWVrYWJsZVJhbmdl
cyA9IHNlZWthYmxlUmFuZ2VzKCksIHNlZWthYmxlVGltZVJhbmdlc0xhc3RNb2RpZmllZFRpbWUg
PSBzZWVrYWJsZVRpbWVSYW5nZXNMYXN0TW9kaWZpZWRUaW1lKCksIGxpdmVVcGRhdGVJbnRlcnZh
bCA9IGxpdmVVcGRhdGVJbnRlcnZhbCgpXSAoYXV0byYgY2xpZW50KSB7Ci0gICAgICAgICAgICBj
bGllbnQuYnVmZmVyZWRUaW1lQ2hhbmdlZChidWZmZXJlZFRpbWUpOwotICAgICAgICAgICAgY2xp
ZW50LnNlZWthYmxlUmFuZ2VzQ2hhbmdlZChzZWVrYWJsZVJhbmdlcywgc2Vla2FibGVUaW1lUmFu
Z2VzTGFzdE1vZGlmaWVkVGltZSwgbGl2ZVVwZGF0ZUludGVydmFsKTsKLSAgICAgICAgfSk7Cisg
ICAgICAgIGF1dG8gYnVmZmVyZWRUaW1lID0gdGhpcy0+YnVmZmVyZWRUaW1lKCk7CisgICAgICAg
IGF1dG8gc2Vla2FibGVSYW5nZXMgPSB0aGlzLT5zZWVrYWJsZVJhbmdlcygpOworICAgICAgICBh
dXRvIHNlZWthYmxlVGltZVJhbmdlc0xhc3RNb2RpZmllZFRpbWUgPSB0aGlzLT5zZWVrYWJsZVRp
bWVSYW5nZXNMYXN0TW9kaWZpZWRUaW1lKCk7CisgICAgICAgIGF1dG8gbGl2ZVVwZGF0ZUludGVy
dmFsID0gdGhpcy0+bGl2ZVVwZGF0ZUludGVydmFsKCk7CisgICAgICAgIGZvciAoYXV0byBjbGll
bnQgOiBtX2NsaWVudHMpIHsKKyAgICAgICAgICAgIGNsaWVudC0+YnVmZmVyZWRUaW1lQ2hhbmdl
ZChidWZmZXJlZFRpbWUpOworICAgICAgICAgICAgY2xpZW50LT5zZWVrYWJsZVJhbmdlc0NoYW5n
ZWQoc2Vla2FibGVSYW5nZXMsIHNlZWthYmxlVGltZVJhbmdlc0xhc3RNb2RpZmllZFRpbWUsIGxp
dmVVcGRhdGVJbnRlcnZhbCk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoYWxsCkBAIC0x
ODIsMTcgKzE3NCwyNCBAQCB2b2lkIFBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Ojp1
cGRhdGVGb3JFdmVudE5hbWUoY29uc3QgV1RGOjpBdG9taWNTdHJpbgogCiAgICAgaWYgKGFsbAog
ICAgICAgICB8fCBldmVudE5hbWUgPT0gZXZlbnROYW1lcygpLndlYmtpdGN1cnJlbnRwbGF5YmFj
a3RhcmdldGlzd2lyZWxlc3NjaGFuZ2VkRXZlbnQpIHsKLSAgICAgICAgbV9jbGllbnRzLmZvckVh
Y2hOb25OdWxsTWVtYmVyKFtlbmFibGVkID0gZXh0ZXJuYWxQbGF5YmFja0VuYWJsZWQoKSwgdGFy
Z2V0VHlwZSA9IGV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlKCksIGxvY2FsaXplZERldmljZU5h
bWUgPSBleHRlcm5hbFBsYXliYWNrTG9jYWxpemVkRGV2aWNlTmFtZSgpLCB3aXJlbGVzc1ZpZGVv
UGxheWJhY2tEaXNhYmxlZCA9IHdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKCldIChhdXRv
JiBjbGllbnQpIHsKLSAgICAgICAgICAgIGNsaWVudC5leHRlcm5hbFBsYXliYWNrQ2hhbmdlZChl
bmFibGVkLCB0YXJnZXRUeXBlLCBsb2NhbGl6ZWREZXZpY2VOYW1lKTsKLSAgICAgICAgICAgIGNs
aWVudC53aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZENoYW5nZWQod2lyZWxlc3NWaWRlb1Bs
YXliYWNrRGlzYWJsZWQpOwotICAgICAgICB9KTsKKyAgICAgICAgYm9vbCBlbmFibGVkID0gZXh0
ZXJuYWxQbGF5YmFja0VuYWJsZWQoKTsKKyAgICAgICAgRXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5
cGUgdGFyZ2V0VHlwZSA9IGV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlKCk7CisgICAgICAgIFN0
cmluZyBsb2NhbGl6ZWREZXZpY2VOYW1lID0gZXh0ZXJuYWxQbGF5YmFja0xvY2FsaXplZERldmlj
ZU5hbWUoKTsKKworICAgICAgICBib29sIHdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkID0g
dGhpcy0+d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoKTsKKworICAgICAgICBmb3IgKGF1
dG8gY2xpZW50IDogbV9jbGllbnRzKSB7CisgICAgICAgICAgICBjbGllbnQtPmV4dGVybmFsUGxh
eWJhY2tDaGFuZ2VkKGVuYWJsZWQsIHRhcmdldFR5cGUsIGxvY2FsaXplZERldmljZU5hbWUpOwor
ICAgICAgICAgICAgY2xpZW50LT53aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZENoYW5nZWQo
d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQpOworICAgICAgICB9CiAgICAgfQogCiAgICAg
aWYgKGFsbAogICAgICAgICB8fCBldmVudE5hbWUgPT0gZXZlbnROYW1lcygpLndlYmtpdHByZXNl
bnRhdGlvbm1vZGVjaGFuZ2VkRXZlbnQpIHsKLSAgICAgICAgbV9jbGllbnRzLmZvckVhY2hOb25O
dWxsTWVtYmVyKFtpc1BpY3R1cmVJblBpY3R1cmVBY3RpdmUgPSBpc1BpY3R1cmVJblBpY3R1cmVB
Y3RpdmUoKV0gKGF1dG8mIGNsaWVudCkgewotICAgICAgICAgICAgY2xpZW50LnBpY3R1cmVJblBp
Y3R1cmVBY3RpdmVDaGFuZ2VkKGlzUGljdHVyZUluUGljdHVyZUFjdGl2ZSk7Ci0gICAgICAgIH0p
OworICAgICAgICBib29sIGlzUGljdHVyZUluUGljdHVyZUFjdGl2ZSA9IHRoaXMtPmlzUGljdHVy
ZUluUGljdHVyZUFjdGl2ZSgpOworCisgICAgICAgIGZvciAoYXV0byBjbGllbnQgOiBtX2NsaWVu
dHMpCisgICAgICAgICAgICBjbGllbnQtPnBpY3R1cmVJblBpY3R1cmVBY3RpdmVDaGFuZ2VkKGlz
UGljdHVyZUluUGljdHVyZUFjdGl2ZSk7CiAgICAgfQogCiAKQEAgLTIwMywyMCArMjAyLDIyIEBA
IHZvaWQgUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OnVwZGF0ZUZvckV2ZW50TmFt
ZShjb25zdCBXVEY6OkF0b21pY1N0cmluCiAKICAgICBpZiAoYWxsCiAgICAgICAgIHx8IGV2ZW50
TmFtZSA9PSBldmVudE5hbWVzKCkudm9sdW1lY2hhbmdlRXZlbnQpIHsKLSAgICAgICAgbV9jbGll
bnRzLmZvckVhY2hOb25OdWxsTWVtYmVyKFtpc011dGVkID0gaXNNdXRlZCgpLCB2b2x1bWUgPSB2
b2x1bWUoKV0gKGF1dG8mIGNsaWVudCkgewotICAgICAgICAgICAgY2xpZW50Lm11dGVkQ2hhbmdl
ZChpc011dGVkKTsKLSAgICAgICAgICAgIGNsaWVudC52b2x1bWVDaGFuZ2VkKHZvbHVtZSk7Ci0g
ICAgICAgIH0pOworICAgICAgICBmb3IgKGF1dG8gY2xpZW50IDogbV9jbGllbnRzKSB7CisgICAg
ICAgICAgICBjbGllbnQtPm11dGVkQ2hhbmdlZChpc011dGVkKCkpOworICAgICAgICAgICAgY2xp
ZW50LT52b2x1bWVDaGFuZ2VkKHZvbHVtZSgpKTsKKyAgICAgICAgfQogICAgIH0KIH0KLXZvaWQg
UGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmFkZENsaWVudChXZWFrUHRyPFBsYXli
YWNrU2Vzc2lvbk1vZGVsQ2xpZW50PiYmIGNsaWVudCkKK3ZvaWQgUGxheWJhY2tTZXNzaW9uTW9k
ZWxNZWRpYUVsZW1lbnQ6OmFkZENsaWVudChQbGF5YmFja1Nlc3Npb25Nb2RlbENsaWVudCYgY2xp
ZW50KQogewotICAgIG1fY2xpZW50cy5hZGQoV1RGTW92ZShjbGllbnQpKTsKKyAgICBBU1NFUlQo
IW1fY2xpZW50cy5jb250YWlucygmY2xpZW50KSk7CisgICAgbV9jbGllbnRzLmFkZCgmY2xpZW50
KTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6cmVtb3ZlQ2xp
ZW50KFBsYXliYWNrU2Vzc2lvbk1vZGVsQ2xpZW50JiBjbGllbnQpCiB7Ci0gICAgbV9jbGllbnRz
LnJlbW92ZShjbGllbnQpOworICAgIEFTU0VSVChtX2NsaWVudHMuY29udGFpbnMoJmNsaWVudCkp
OworICAgIG1fY2xpZW50cy5yZW1vdmUoJmNsaWVudCk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNz
aW9uTW9kZWxNZWRpYUVsZW1lbnQ6OnBsYXkoKQpAQCAtMzU0LDE4ICszNTUsMjYgQEAgdm9pZCBQ
bGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6dXBkYXRlTWVkaWFTZWxlY3Rpb25PcHRp
b25zKCkKICAgICBlbHNlCiAgICAgICAgIG1fYXVkaW9UcmFja3NGb3JNZW51LmNsZWFyKCk7CiAK
LSAgICBtX2NsaWVudHMuZm9yRWFjaE5vbk51bGxNZW1iZXIoW2F1ZGlvT3B0aW9ucyA9IGF1ZGlv
TWVkaWFTZWxlY3Rpb25PcHRpb25zKCksIGF1ZGlvSW5kZXggPSBhdWRpb01lZGlhU2VsZWN0ZWRJ
bmRleCgpLCBsZWdpYmxlT3B0aW9ucyA9IGxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoKSwg
bGVnaWJsZUluZGV4ID0gbGVnaWJsZU1lZGlhU2VsZWN0ZWRJbmRleCgpXSAoYXV0byYgY2xpZW50
KSB7Ci0gICAgICAgIGNsaWVudC5hdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQoYXVk
aW9PcHRpb25zLCBhdWRpb0luZGV4KTsKLSAgICAgICAgY2xpZW50LmxlZ2libGVNZWRpYVNlbGVj
dGlvbk9wdGlvbnNDaGFuZ2VkKGxlZ2libGVPcHRpb25zLCBsZWdpYmxlSW5kZXgpOwotICAgIH0p
OworICAgIGF1dG8gYXVkaW9PcHRpb25zID0gYXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMoKTsK
KyAgICBhdXRvIGF1ZGlvSW5kZXggPSBhdWRpb01lZGlhU2VsZWN0ZWRJbmRleCgpOworICAgIGF1
dG8gbGVnaWJsZU9wdGlvbnMgPSBsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKCk7CisgICAg
YXV0byBsZWdpYmxlSW5kZXggPSBsZWdpYmxlTWVkaWFTZWxlY3RlZEluZGV4KCk7CisKKyAgICBm
b3IgKGF1dG8gY2xpZW50IDogbV9jbGllbnRzKSB7CisgICAgICAgIGNsaWVudC0+YXVkaW9NZWRp
YVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKGF1ZGlvT3B0aW9ucywgYXVkaW9JbmRleCk7CisgICAg
ICAgIGNsaWVudC0+bGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQobGVnaWJsZU9w
dGlvbnMsIGxlZ2libGVJbmRleCk7CisgICAgfQogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1v
ZGVsTWVkaWFFbGVtZW50Ojp1cGRhdGVNZWRpYVNlbGVjdGlvbkluZGljZXMoKQogewotICAgIG1f
Y2xpZW50cy5mb3JFYWNoTm9uTnVsbE1lbWJlcihbYXVkaW9JbmRleCA9IGF1ZGlvTWVkaWFTZWxl
Y3RlZEluZGV4KCksIGxlZ2libGVJbmRleCA9IGxlZ2libGVNZWRpYVNlbGVjdGVkSW5kZXgoKV0g
KGF1dG8mIGNsaWVudCkgewotICAgICAgICBjbGllbnQuYXVkaW9NZWRpYVNlbGVjdGlvbkluZGV4
Q2hhbmdlZChhdWRpb0luZGV4KTsKLSAgICAgICAgY2xpZW50LmxlZ2libGVNZWRpYVNlbGVjdGlv
bkluZGV4Q2hhbmdlZChsZWdpYmxlSW5kZXgpOwotICAgIH0pOworICAgIGF1dG8gYXVkaW9JbmRl
eCA9IGF1ZGlvTWVkaWFTZWxlY3RlZEluZGV4KCk7CisgICAgYXV0byBsZWdpYmxlSW5kZXggPSBs
ZWdpYmxlTWVkaWFTZWxlY3RlZEluZGV4KCk7CisKKyAgICBmb3IgKGF1dG8gY2xpZW50IDogbV9j
bGllbnRzKSB7CisgICAgICAgIGNsaWVudC0+YXVkaW9NZWRpYVNlbGVjdGlvbkluZGV4Q2hhbmdl
ZChhdWRpb0luZGV4KTsKKyAgICAgICAgY2xpZW50LT5sZWdpYmxlTWVkaWFTZWxlY3Rpb25JbmRl
eENoYW5nZWQobGVnaWJsZUluZGV4KTsKKyAgICB9CiB9CiAKIGRvdWJsZSBQbGF5YmFja1Nlc3Np
b25Nb2RlbE1lZGlhRWxlbWVudDo6cGxheWJhY2tTdGFydGVkVGltZSgpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5DaGFuZ2VP
YnNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxsc2NyZWVu
Q2hhbmdlT2JzZXJ2ZXIuaAppbmRleCA0OTkwODEzYTM5MDllNjAyY2Y1NTY2YTg5N2Y4NzA3MTk0
ZGQ2YjliLi40ZWIwNTgwYzk2MTM5ZGQ0N2U3NTgxMmU2MTliYzkwNWQ2Yjc2ZWQ1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5DaGFuZ2VP
YnNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNj
cmVlbkNoYW5nZU9ic2VydmVyLmgKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlciB7CiBwdWJsaWM6Ci0gICAg
dmlydHVhbCB+VmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIoKSA9IGRlZmF1bHQ7CisgICAg
dmlydHVhbCB+VmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIoKSB7IH07CiAgICAgdmlydHVh
bCB2b2lkIHJlcXVlc3RVcGRhdGVJbmxpbmVSZWN0KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBy
ZXF1ZXN0VmlkZW9Db250ZW50TGF5ZXIoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJldHVyblZp
ZGVvQ29udGVudExheWVyKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvVmlkZW9GdWxsc2NyZWVuTW9kZWwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1vZGVsLmgKaW5kZXggNmQxYjdlOThhOWUzNWI2N2EyYzM3
MWNiYTYwYWZjMzg4YjZhYjViZS4uY2U1MTM1NDE2NDJmZmJhMzJmN2RiNmI4MDM3YjYwYjgwMDdk
MWVlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxs
c2NyZWVuTW9kZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1
bGxzY3JlZW5Nb2RlbC5oCkBAIC0zMCw3ICszMCw3IEBACiAKICNpbmNsdWRlICJGbG9hdFJlY3Qu
aCIKICNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50RW51bXMuaCIKLSNpbmNsdWRlIDx3dGYvV2Vh
a1B0ci5oPgorI2luY2x1ZGUgIlBsYXliYWNrU2Vzc2lvbk1vZGVsLmgiCiAKICNpZiBQTEFURk9S
TShJT1MpCiBPQkpDX0NMQVNTIEFWUGxheWVyVmlld0NvbnRyb2xsZXI7CkBAIC00MywxNSArNDMs
OCBAQCBjbGFzcyBWaWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVudDsKIAogY2xhc3MgVmlkZW9GdWxs
c2NyZWVuTW9kZWwgewogcHVibGljOgotICAgIHZpcnR1YWwgflZpZGVvRnVsbHNjcmVlbk1vZGVs
KCkgPSBkZWZhdWx0OwotCi0gICAgdm9pZCByZWYoKSB7IHJlZlZpZGVvRnVsbHNjcmVlbk1vZGVs
KCk7IH0KLSAgICB2b2lkIGRlcmVmKCkgeyBkZXJlZlZpZGVvRnVsbHNjcmVlbk1vZGVsKCk7IH0K
LQotICAgIHZpcnR1YWwgdm9pZCByZWZWaWRlb0Z1bGxzY3JlZW5Nb2RlbCgpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgZGVyZWZWaWRlb0Z1bGxzY3JlZW5Nb2RlbCgpID0gMDsKLQotICAgIHZpcnR1
YWwgdm9pZCBhZGRDbGllbnQoV2Vha1B0cjxWaWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVudD4mJikg
PSAwOworICAgIHZpcnR1YWwgflZpZGVvRnVsbHNjcmVlbk1vZGVsKCkgeyB9OworICAgIHZpcnR1
YWwgdm9pZCBhZGRDbGllbnQoVmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQmKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHJlbW92ZUNsaWVudChWaWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVudCYpPSAw
OwogCiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RGdWxsc2NyZWVuTW9kZShIVE1MTWVkaWFFbGVt
ZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUsIGJvb2wgZmluaXNoZWRXaXRoTWVkaWEgPSBm
YWxzZSkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlk
ZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50LmgKaW5kZXggODI2OGRhNWEw
MjQzNzFkMWRkZmJiYTE4MjE5NjAzNWFkOTViNTNlNC4uMDM3ZGQwMmI2MWQzYjFhODI0YjNmOWMw
ZWMxNjFkNTk5ZjMxMGRlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5oCkBAIC0y
OCwxNCArMjgsMTYgQEAKIAogI2lmIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYg
RU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKIAorI2luY2x1ZGUgIkV2ZW50TGlzdGVu
ZXIuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50
RW51bXMuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCiAjaW5jbHVkZSAiVmlkZW9GdWxs
c2NyZWVuTW9kZWwuaCIKICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KKyNpbmNsdWRlIDx3dGYv
SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1dlYWtQdHJDb250YWluZXIuaD4KKyNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEF1ZGlvVHJhY2s7CkBAIC00
MywxMCArNDUsNyBAQCBjbGFzcyBIVE1MVmlkZW9FbGVtZW50OwogY2xhc3MgVGV4dFRyYWNrOwog
Y2xhc3MgUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ7CiAKLWNsYXNzIFZpZGVvRnVs
bHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50IAotICAgIDogcHVibGljIFJlZkNvdW50ZWQ8VmlkZW9G
dWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ+Ci0gICAgLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8
VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ+Ci0gICAgLCBwdWJsaWMgVmlkZW9GdWxs
c2NyZWVuTW9kZWwgeworY2xhc3MgVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQgOiBw
dWJsaWMgVmlkZW9GdWxsc2NyZWVuTW9kZWwsIHB1YmxpYyBFdmVudExpc3RlbmVyIHsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgUmVmUHRyPFZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50PiBj
cmVhdGUoKQogICAgIHsKQEAgLTU5LDkgKzU4LDExIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHdpbGxFeGl0RnVsbHNjcmVlbigpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
d2FpdEZvclByZXBhcmVkRm9ySW5saW5lVGhlbihXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlciA9IFtdIHsgfSk7CiAgICAgCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBo
YW5kbGVFdmVudChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgV2ViQ29yZTo6RXZl
bnQmKSBvdmVycmlkZTsKICAgICB2b2lkIHVwZGF0ZUZvckV2ZW50TmFtZShjb25zdCBXVEY6OkF0
b21pY1N0cmluZyYpOworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBy
aHMpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFdlYkNvcmU6OkV2
ZW50TGlzdGVuZXIqPih0aGlzKSA9PSAmcmhzOyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGFkZENsaWVudChXZWFrUHRyPFZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50PiYmKSBvdmVycmlk
ZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZENsaWVudChWaWRlb0Z1bGxzY3JlZW5Nb2Rl
bENsaWVudCYpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlQ2xpZW50
KFZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50Jikgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCByZXF1ZXN0RnVsbHNjcmVlbk1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRl
b0Z1bGxzY3JlZW5Nb2RlLCBib29sIGZpbmlzaGVkV2l0aE1lZGlhID0gZmFsc2UpIG92ZXJyaWRl
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VmlkZW9MYXllckZyYW1lKEZsb2F0UmVjdCkg
b3ZlcnJpZGU7CkBAIC03MSw4ICs3Miw2IEBAIHB1YmxpYzoKICAgICBGbG9hdFNpemUgdmlkZW9E
aW1lbnNpb25zKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV92aWRlb0RpbWVuc2lvbnM7IH0K
ICAgICBib29sIGhhc1ZpZGVvKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9oYXNWaWRlbzsg
fQogCi0gICAgdXNpbmcgUmVmQ291bnRlZDo6cmVmOwotICAgIHVzaW5nIFJlZkNvdW50ZWQ6OmRl
cmVmOwogCiBwcm90ZWN0ZWQ6CiAgICAgV0VCQ09SRV9FWFBPUlQgVmlkZW9GdWxsc2NyZWVuTW9k
ZWxWaWRlb0VsZW1lbnQoKTsKQEAgLTgxLDggKzgwLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNl
dEhhc1ZpZGVvKGJvb2wpOwogICAgIHZvaWQgc2V0VmlkZW9EaW1lbnNpb25zKGNvbnN0IEZsb2F0
U2l6ZSYpOwogCi0gICAgdm9pZCByZWZWaWRlb0Z1bGxzY3JlZW5Nb2RlbCgpIGZpbmFsIHsgcmVm
KCk7IH0KLSAgICB2b2lkIGRlcmVmVmlkZW9GdWxsc2NyZWVuTW9kZWwoKSBmaW5hbCB7IGRlcmVm
KCk7IH0KICAgICB2b2lkIHdpbGxFbnRlclBpY3R1cmVJblBpY3R1cmUoKSBvdmVycmlkZTsKICAg
ICB2b2lkIGRpZEVudGVyUGljdHVyZUluUGljdHVyZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgZmFp
bGVkVG9FbnRlclBpY3R1cmVJblBpY3R1cmUoKSBvdmVycmlkZTsKQEAgLTkyLDE3ICs4OSwxNSBA
QCBwcml2YXRlOgogICAgIHN0YXRpYyBjb25zdCBWZWN0b3I8V1RGOjpBdG9taWNTdHJpbmc+JiBv
YnNlcnZlZEV2ZW50TmFtZXMoKTsKICAgICBjb25zdCBXVEY6OkF0b21pY1N0cmluZyYgZXZlbnRO
YW1lQWxsKCk7CiAKLSAgICBjbGFzcyBNZWRpYUVsZW1lbnRFdmVudExpc3RlbmVyOwotCiAgICAg
UmVmUHRyPEhUTUxWaWRlb0VsZW1lbnQ+IG1fdmlkZW9FbGVtZW50OwogICAgIFJldGFpblB0cjxQ
bGF0Zm9ybUxheWVyPiBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyOwotICAgIFdlYWtQdHJDb250YWlu
ZXI8VmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQ+IG1fY2xpZW50czsKKyAgICBib29sIG1faXNM
aXN0ZW5pbmcgeyBmYWxzZSB9OworICAgIEhhc2hTZXQ8VmlkZW9GdWxsc2NyZWVuTW9kZWxDbGll
bnQqPiBtX2NsaWVudHM7CiAgICAgYm9vbCBtX2hhc1ZpZGVvIHsgZmFsc2UgfTsKICAgICBGbG9h
dFNpemUgbV92aWRlb0RpbWVuc2lvbnM7CiAgICAgRmxvYXRSZWN0IG1fdmlkZW9GcmFtZTsKICAg
ICBWZWN0b3I8UmVmUHRyPFRleHRUcmFjaz4+IG1fbGVnaWJsZVRyYWNrc0Zvck1lbnU7CiAgICAg
VmVjdG9yPFJlZlB0cjxBdWRpb1RyYWNrPj4gbV9hdWRpb1RyYWNrc0Zvck1lbnU7Ci0gICAgUmVm
PE1lZGlhRWxlbWVudEV2ZW50TGlzdGVuZXI+IG1fZXZlbnRMaXN0ZW5lcjsKIH07CiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1v
ZGVsVmlkZW9FbGVtZW50Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlkZW9G
dWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQubW0KaW5kZXggYzMxNWI2NWEyZmNkYmFjMjdhNjRk
MzJlNGIzNGRiMmEyZjMyZjRiNS4uNDA5ZjYyMjE4N2ZkYjcyZGNlYjZjNzQ0NTFjNjQ3MzBlNzIx
ZGY3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxs
c2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQubW0KQEAgLTQ3LDI3ICs0Nyw4
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotCi1jbGFzcyBWaWRlb0Z1bGxzY3JlZW5Nb2Rl
bFZpZGVvRWxlbWVudDo6TWVkaWFFbGVtZW50RXZlbnRMaXN0ZW5lciBmaW5hbCA6IHB1YmxpYyBF
dmVudExpc3RlbmVyIHsKLXB1YmxpYzoKLSAgICBNZWRpYUVsZW1lbnRFdmVudExpc3RlbmVyKFdl
YWtQdHI8VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ+JiYgcGFyZW50KQotICAgICAg
ICA6IEV2ZW50TGlzdGVuZXIoQ1BQRXZlbnRMaXN0ZW5lclR5cGUpCi0gICAgICAgICwgbV9wYXJl
bnQoV1RGTW92ZShwYXJlbnQpKQotICAgIHsKLSAgICB9Ci1wcml2YXRlOgotICAgIHZvaWQgaGFu
ZGxlRXZlbnQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFdlYkNvcmU6OkV2ZW50
JiBldmVudCkgZmluYWwKLSAgICB7Ci0gICAgICAgIGlmIChtX3BhcmVudCkKLSAgICAgICAgICAg
IG1fcGFyZW50LT51cGRhdGVGb3JFdmVudE5hbWUoZXZlbnQudHlwZSgpKTsKLSAgICB9Ci0gICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXImIHJocykgY29uc3QgZmluYWwgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgV2ViQ29yZTo6RXZlbnRMaXN0ZW5lcio+KHRoaXMpID09
ICZyaHM7IH0KLQotICAgIFdlYWtQdHI8VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ+
IG1fcGFyZW50OwotfTsKLQogVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OlZpZGVv
RnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50KCkKLSAgICA6IG1fZXZlbnRMaXN0ZW5lcihhZG9w
dFJlZigqbmV3IE1lZGlhRWxlbWVudEV2ZW50TGlzdGVuZXIobWFrZVdlYWtQdHIoKnRoaXMpKSkp
CisgICAgOiBFdmVudExpc3RlbmVyKEV2ZW50TGlzdGVuZXI6OkNQUEV2ZW50TGlzdGVuZXJUeXBl
KQogewogICAgIExPRyhGdWxsc2NyZWVuLCAiVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1l
bnQgJXAgY3RvciIsIHRoaXMpOwogfQpAQCAtODcsMjEgKzY4LDI4IEBAIHZvaWQgVmlkZW9GdWxs
c2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnNldFZpZGVvRWxlbWVudChIVE1MVmlkZW9FbGVtZW50
KiB2aWRlb0VsCiAgICAgaWYgKG1fdmlkZW9FbGVtZW50ICYmIG1fdmlkZW9FbGVtZW50LT52aWRl
b0Z1bGxzY3JlZW5MYXllcigpKQogICAgICAgICBtX3ZpZGVvRWxlbWVudC0+c2V0VmlkZW9GdWxs
c2NyZWVuTGF5ZXIobnVsbHB0cik7CiAKLSAgICBpZiAobV92aWRlb0VsZW1lbnQpIHsKKyAgICBp
ZiAobV92aWRlb0VsZW1lbnQgJiYgbV9pc0xpc3RlbmluZykgewogICAgICAgICBmb3IgKGF1dG8m
IGV2ZW50TmFtZSA6IG9ic2VydmVkRXZlbnROYW1lcygpKQotICAgICAgICAgICAgbV92aWRlb0Vs
ZW1lbnQtPnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBtX2V2ZW50TGlzdGVuZXIuY29w
eVJlZigpLCBmYWxzZSk7CisgICAgICAgICAgICBtX3ZpZGVvRWxlbWVudC0+cmVtb3ZlRXZlbnRM
aXN0ZW5lcihldmVudE5hbWUsICp0aGlzLCBmYWxzZSk7CiAgICAgfQorICAgIG1faXNMaXN0ZW5p
bmcgPSBmYWxzZTsKIAogICAgIG1fdmlkZW9FbGVtZW50ID0gdmlkZW9FbGVtZW50OwogCiAgICAg
aWYgKG1fdmlkZW9FbGVtZW50KSB7CiAgICAgICAgIGZvciAoYXV0byYgZXZlbnROYW1lIDogb2Jz
ZXJ2ZWRFdmVudE5hbWVzKCkpCi0gICAgICAgICAgICBtX3ZpZGVvRWxlbWVudC0+YWRkRXZlbnRM
aXN0ZW5lcihldmVudE5hbWUsIG1fZXZlbnRMaXN0ZW5lci5jb3B5UmVmKCksIGZhbHNlKTsKKyAg
ICAgICAgICAgIG1fdmlkZW9FbGVtZW50LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgKnRo
aXMsIGZhbHNlKTsKKyAgICAgICAgbV9pc0xpc3RlbmluZyA9IHRydWU7CiAgICAgfQogCiAgICAg
dXBkYXRlRm9yRXZlbnROYW1lKGV2ZW50TmFtZUFsbCgpKTsKIH0KIAordm9pZCBWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6aGFuZGxlRXZlbnQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYsIFdlYkNvcmU6OkV2ZW50JiBldmVudCkKK3sKKyAgICB1cGRhdGVGb3JFdmVu
dE5hbWUoZXZlbnQudHlwZSgpKTsKK30KKwogdm9pZCBWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVv
RWxlbWVudDo6dXBkYXRlRm9yRXZlbnROYW1lKGNvbnN0IFdURjo6QXRvbWljU3RyaW5nJiBldmVu
dE5hbWUpCiB7CiAgICAgaWYgKG1fY2xpZW50cy5pc0VtcHR5KCkpCkBAIC0yMTEsMTQgKzE5OSwx
NiBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpmdWxsc2NyZWVuTW9k
ZUNoYW5nZWQoSFRNTE1lZGlhRWxlbWVudEVudQogICAgICAgICBtX3ZpZGVvRWxlbWVudC0+ZnVs
bHNjcmVlbk1vZGVDaGFuZ2VkKHZpZGVvRnVsbHNjcmVlbk1vZGUpOwogfQogCi12b2lkIFZpZGVv
RnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjphZGRDbGllbnQoV2Vha1B0cjxWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbENsaWVudD4mJiBjbGllbnQpCit2b2lkIFZpZGVvRnVsbHNjcmVlbk1vZGVsVmlk
ZW9FbGVtZW50OjphZGRDbGllbnQoVmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQmIGNsaWVudCkK
IHsKLSAgICBtX2NsaWVudHMuYWRkKFdURk1vdmUoY2xpZW50KSk7CisgICAgQVNTRVJUKCFtX2Ns
aWVudHMuY29udGFpbnMoJmNsaWVudCkpOworICAgIG1fY2xpZW50cy5hZGQoJmNsaWVudCk7CiB9
CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnJlbW92ZUNsaWVudChW
aWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVudCYgY2xpZW50KQogewotICAgIG1fY2xpZW50cy5yZW1v
dmUoY2xpZW50KTsKKyAgICBBU1NFUlQobV9jbGllbnRzLmNvbnRhaW5zKCZjbGllbnQpKTsKKyAg
ICBtX2NsaWVudHMucmVtb3ZlKCZjbGllbnQpOwogfQogCiBib29sIFZpZGVvRnVsbHNjcmVlbk1v
ZGVsVmlkZW9FbGVtZW50Ojppc1Zpc2libGUoKSBjb25zdApAQCAtMjM5LDkgKzIyOSw4IEBAIHZv
aWQgVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnNldEhhc1ZpZGVvKGJvb2wgaGFz
VmlkZW8pCiAKICAgICBtX2hhc1ZpZGVvID0gaGFzVmlkZW87CiAKLSAgICBtX2NsaWVudHMuZm9y
RWFjaE5vbk51bGxNZW1iZXIoW2hhc1ZpZGVvXSAoYXV0byYgY2xpZW50KSB7Ci0gICAgICAgIGNs
aWVudC5oYXNWaWRlb0NoYW5nZWQoaGFzVmlkZW8pOwotICAgIH0pOworICAgIGZvciAoYXV0byYg
Y2xpZW50IDogbV9jbGllbnRzKQorICAgICAgICBjbGllbnQtPmhhc1ZpZGVvQ2hhbmdlZChtX2hh
c1ZpZGVvKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6c2V0
VmlkZW9EaW1lbnNpb25zKGNvbnN0IEZsb2F0U2l6ZSYgdmlkZW9EaW1lbnNpb25zKQpAQCAtMjUx
LDQ0ICsyNDAsMzggQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6c2V0
VmlkZW9EaW1lbnNpb25zKGNvbnN0IEZsb2F0U2l6ZSYgdmlkZW8KIAogICAgIG1fdmlkZW9EaW1l
bnNpb25zID0gdmlkZW9EaW1lbnNpb25zOwogCi0gICAgbV9jbGllbnRzLmZvckVhY2hOb25OdWxs
TWVtYmVyKFt2aWRlb0RpbWVuc2lvbnNdIChhdXRvJiBjbGllbnQpIHsKLSAgICAgICAgY2xpZW50
LnZpZGVvRGltZW5zaW9uc0NoYW5nZWQodmlkZW9EaW1lbnNpb25zKTsKLSAgICB9KTsKKyAgICBm
b3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50LT52aWRlb0RpbWVu
c2lvbnNDaGFuZ2VkKG1fdmlkZW9EaW1lbnNpb25zKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbFZpZGVvRWxlbWVudDo6d2lsbEVudGVyUGljdHVyZUluUGljdHVyZSgpCiB7Ci0gICAg
bV9jbGllbnRzLmZvckVhY2hOb25OdWxsTWVtYmVyKFtdIChhdXRvJiBjbGllbnQpIHsKLSAgICAg
ICAgY2xpZW50LndpbGxFbnRlclBpY3R1cmVJblBpY3R1cmUoKTsKLSAgICB9KTsKKyAgICBmb3Ig
KGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50LT53aWxsRW50ZXJQaWN0
dXJlSW5QaWN0dXJlKCk7CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1l
bnQ6OmRpZEVudGVyUGljdHVyZUluUGljdHVyZSgpCiB7Ci0gICAgbV9jbGllbnRzLmZvckVhY2hO
b25OdWxsTWVtYmVyKFtdIChhdXRvJiBjbGllbnQpIHsKLSAgICAgICAgY2xpZW50LmRpZEVudGVy
UGljdHVyZUluUGljdHVyZSgpOwotICAgIH0pOworICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9j
bGllbnRzKQorICAgICAgICBjbGllbnQtPmRpZEVudGVyUGljdHVyZUluUGljdHVyZSgpOwogfQog
CiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpmYWlsZWRUb0VudGVyUGlj
dHVyZUluUGljdHVyZSgpCiB7Ci0gICAgbV9jbGllbnRzLmZvckVhY2hOb25OdWxsTWVtYmVyKFtd
IChhdXRvJiBjbGllbnQpIHsKLSAgICAgICAgY2xpZW50LmZhaWxlZFRvRW50ZXJQaWN0dXJlSW5Q
aWN0dXJlKCk7Ci0gICAgfSk7CisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCisg
ICAgICAgIGNsaWVudC0+ZmFpbGVkVG9FbnRlclBpY3R1cmVJblBpY3R1cmUoKTsKIH0KIAogdm9p
ZCBWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6d2lsbEV4aXRQaWN0dXJlSW5QaWN0
dXJlKCkKIHsKLSAgICBtX2NsaWVudHMuZm9yRWFjaE5vbk51bGxNZW1iZXIoW10gKGF1dG8mIGNs
aWVudCkgewotICAgICAgICBjbGllbnQud2lsbEV4aXRQaWN0dXJlSW5QaWN0dXJlKCk7Ci0gICAg
fSk7CisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCisgICAgICAgIGNsaWVudC0+
d2lsbEV4aXRQaWN0dXJlSW5QaWN0dXJlKCk7CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTW9k
ZWxWaWRlb0VsZW1lbnQ6OmRpZEV4aXRQaWN0dXJlSW5QaWN0dXJlKCkKIHsKLSAgICBtX2NsaWVu
dHMuZm9yRWFjaE5vbk51bGxNZW1iZXIoW10gKGF1dG8mIGNsaWVudCkgewotICAgICAgICBjbGll
bnQuZGlkRXhpdFBpY3R1cmVJblBpY3R1cmUoKTsKLSAgICB9KTsKKyAgICBmb3IgKGF1dG8mIGNs
aWVudCA6IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50LT5kaWRFeGl0UGljdHVyZUluUGljdHVy
ZSgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5oCmlu
ZGV4IGE1NzRmNThkZDViN2U2MDdiNzNkOGU5ZGQ0MjUxZTVhY2ZjMzQxZmQuLjg1ODAxOTE1ZTBm
MDE5NjgwZGY0N2M4MTZjMGJkZGI1YjYwYmMzOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9QbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5oCkBA
IC01MSwxNCArNTEsMTggQEAgY2xhc3MgSW50UmVjdDsKIGNsYXNzIFBsYXliYWNrU2Vzc2lvbk1v
ZGVsOwogY2xhc3MgV2ViUGxheWJhY2tTZXNzaW9uQ2hhbmdlT2JzZXJ2ZXI7CiAKLWNsYXNzIFBs
YXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0CitjbGFzcyBXRUJDT1JFX0VYUE9SVCBQbGF5YmFj
a1Nlc3Npb25JbnRlcmZhY2VBVktpdAogICAgIDogcHVibGljIFBsYXliYWNrU2Vzc2lvbkludGVy
ZmFjZQogICAgICwgcHVibGljIFBsYXliYWNrU2Vzc2lvbk1vZGVsQ2xpZW50CiAgICAgLCBwdWJs
aWMgUmVmQ291bnRlZDxQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdD4geworCiBwdWJsaWM6
Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VB
VktpdD4gY3JlYXRlKFJlZjxQbGF5YmFja1Nlc3Npb25Nb2RlbD4mJik7CisgICAgc3RhdGljIFJl
ZjxQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdD4gY3JlYXRlKFBsYXliYWNrU2Vzc2lvbk1v
ZGVsJiBtb2RlbCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBsYXliYWNr
U2Vzc2lvbkludGVyZmFjZUFWS2l0KG1vZGVsKSk7CisgICAgfQogICAgIHZpcnR1YWwgflBsYXli
YWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0KCk7Ci0gICAgUGxheWJhY2tTZXNzaW9uTW9kZWwmIHBs
YXliYWNrU2Vzc2lvbk1vZGVsKCkgY29uc3QgeyByZXR1cm4gbV9wbGF5YmFja1Nlc3Npb25Nb2Rl
bDsgfQorICAgIFBsYXliYWNrU2Vzc2lvbk1vZGVsKiBwbGF5YmFja1Nlc3Npb25Nb2RlbCgpIGNv
bnN0IHsgcmV0dXJuIG1fcGxheWJhY2tTZXNzaW9uTW9kZWw7IH0KIAogICAgIC8vIFBsYXliYWNr
U2Vzc2lvbkludGVyZmFjZQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzZXRNZWRpYVN0YXRl
KCkgb3ZlcnJpZGU7CkBAIC03NywxNCArODEsMTUgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgbXV0ZWRDaGFuZ2VkKGJvb2wpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgdm9sdW1lQ2hhbmdlZChkb3VibGUpIG92ZXJyaWRlOwogCisgICAgV0VCQ09SRV9FWFBP
UlQgdmlydHVhbCB2b2lkIGludmFsaWRhdGUoKTsKKwogICAgIFdlYkFWUGxheWVyQ29udHJvbGxl
ciAqcGxheWVyQ29udHJvbGxlcigpIGNvbnN0IHsgcmV0dXJuIG1fcGxheWVyQ29udHJvbGxlci5n
ZXQoKTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgV0VCQ09SRV9FWFBPUlQgUGxheWJhY2tTZXNzaW9u
SW50ZXJmYWNlQVZLaXQoUmVmPFBsYXliYWNrU2Vzc2lvbk1vZGVsPiYmKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdChQbGF5YmFja1Nlc3Npb25Nb2Rl
bCYpOwogCiAgICAgUmV0YWluUHRyPFdlYkFWUGxheWVyQ29udHJvbGxlcj4gbV9wbGF5ZXJDb250
cm9sbGVyOwotICAgIFJlZjxQbGF5YmFja1Nlc3Npb25Nb2RlbD4gbV9wbGF5YmFja1Nlc3Npb25N
b2RlbDsKLSAgICBXZWFrUHRyRmFjdG9yeTxQbGF5YmFja1Nlc3Npb25Nb2RlbENsaWVudD4gbV93
ZWFrUHRyRmFjdG9yeTsKKyAgICBQbGF5YmFja1Nlc3Npb25Nb2RlbCogbV9wbGF5YmFja1Nlc3Np
b25Nb2RlbCB7IG51bGxwdHIgfTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9QbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5tbQppbmRl
eCBkZGIxNjMxMTdmMGQ3MWE4OTY3M2JlMDVmNjY3OTI1MTYyOTk3ZGVlLi4wYTI4NTQ4YjdmNTk1
MTYxOTUzNDQzMmRhOWEwMDA3ZGRiOWFlODY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Lm1tCkBA
IC00OSwzNiArNDksMzIgQEAgU09GVF9MSU5LX0NMQVNTX09QVElPTkFMKEFWS2l0LCBBVlZhbHVl
VGltaW5nKQogbmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIFBBTDsKIAotUmVm
PFBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0PiBQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VB
VktpdDo6Y3JlYXRlKFJlZjxQbGF5YmFja1Nlc3Npb25Nb2RlbD4mJiBtb2RlbCkKLXsKLSAgICBh
dXRvIGludGVyZmFjZSA9IGFkb3B0UmVmKCpuZXcgUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZL
aXQoV1RGTW92ZShtb2RlbCkpKTsKLSAgICBbaW50ZXJmYWNlLT5wbGF5ZXJDb250cm9sbGVyKCkg
c2V0UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlOmludGVyZmFjZS5wdHIoKV07Ci0gICAgcmV0dXJu
IGludGVyZmFjZTsKLX0KLQotUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OlBsYXliYWNr
U2Vzc2lvbkludGVyZmFjZUFWS2l0KFJlZjxQbGF5YmFja1Nlc3Npb25Nb2RlbD4mJiBtb2RlbCkK
K1BsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0OjpQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VB
VktpdChQbGF5YmFja1Nlc3Npb25Nb2RlbCYgbW9kZWwpCiAgICAgOiBtX3BsYXllckNvbnRyb2xs
ZXIoYWRvcHROUyhbW1dlYkFWUGxheWVyQ29udHJvbGxlciBhbGxvY10gaW5pdF0pKQotICAgICwg
bV9wbGF5YmFja1Nlc3Npb25Nb2RlbChXVEZNb3ZlKG1vZGVsKSkKKyAgICAsIG1fcGxheWJhY2tT
ZXNzaW9uTW9kZWwoJm1vZGVsKQogewotICAgIG1fcGxheWJhY2tTZXNzaW9uTW9kZWwtPmFkZENs
aWVudChtX3dlYWtQdHJGYWN0b3J5LmNyZWF0ZVdlYWtQdHIoKnRoaXMpKTsKKyAgICBtb2RlbC5h
ZGRDbGllbnQoKnRoaXMpOworICAgIFttX3BsYXllckNvbnRyb2xsZXIgc2V0UGxheWJhY2tTZXNz
aW9uSW50ZXJmYWNlOnRoaXNdOworICAgIFttX3BsYXllckNvbnRyb2xsZXIgc2V0RGVsZWdhdGU6
Jm1vZGVsXTsKIAotICAgIGR1cmF0aW9uQ2hhbmdlZChtX3BsYXliYWNrU2Vzc2lvbk1vZGVsLT5k
dXJhdGlvbigpKTsKLSAgICBjdXJyZW50VGltZUNoYW5nZWQobV9wbGF5YmFja1Nlc3Npb25Nb2Rl
bC0+Y3VycmVudFRpbWUoKSwgW1tOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXSBzeXN0ZW1VcHRp
bWVdKTsKLSAgICBidWZmZXJlZFRpbWVDaGFuZ2VkKG1fcGxheWJhY2tTZXNzaW9uTW9kZWwtPmJ1
ZmZlcmVkVGltZSgpKTsKLSAgICByYXRlQ2hhbmdlZChtX3BsYXliYWNrU2Vzc2lvbk1vZGVsLT5p
c1BsYXlpbmcoKSwgbV9wbGF5YmFja1Nlc3Npb25Nb2RlbC0+cGxheWJhY2tSYXRlKCkpOwotICAg
IHNlZWthYmxlUmFuZ2VzQ2hhbmdlZChtX3BsYXliYWNrU2Vzc2lvbk1vZGVsLT5zZWVrYWJsZVJh
bmdlcygpLCBtX3BsYXliYWNrU2Vzc2lvbk1vZGVsLT5zZWVrYWJsZVRpbWVSYW5nZXNMYXN0TW9k
aWZpZWRUaW1lKCksIG1fcGxheWJhY2tTZXNzaW9uTW9kZWwtPmxpdmVVcGRhdGVJbnRlcnZhbCgp
KTsKLSAgICBjYW5QbGF5RmFzdFJldmVyc2VDaGFuZ2VkKG1fcGxheWJhY2tTZXNzaW9uTW9kZWwt
PmNhblBsYXlGYXN0UmV2ZXJzZSgpKTsKLSAgICBhdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uc0No
YW5nZWQobV9wbGF5YmFja1Nlc3Npb25Nb2RlbC0+YXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMo
KSwgbV9wbGF5YmFja1Nlc3Npb25Nb2RlbC0+YXVkaW9NZWRpYVNlbGVjdGVkSW5kZXgoKSk7Ci0g
ICAgbGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQobV9wbGF5YmFja1Nlc3Npb25N
b2RlbC0+bGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucygpLCBtX3BsYXliYWNrU2Vzc2lvbk1v
ZGVsLT5sZWdpYmxlTWVkaWFTZWxlY3RlZEluZGV4KCkpOwotICAgIGV4dGVybmFsUGxheWJhY2tD
aGFuZ2VkKG1fcGxheWJhY2tTZXNzaW9uTW9kZWwtPmV4dGVybmFsUGxheWJhY2tFbmFibGVkKCks
IG1fcGxheWJhY2tTZXNzaW9uTW9kZWwtPmV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlKCksIG1f
cGxheWJhY2tTZXNzaW9uTW9kZWwtPmV4dGVybmFsUGxheWJhY2tMb2NhbGl6ZWREZXZpY2VOYW1l
KCkpOwotICAgIHdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkQ2hhbmdlZChtX3BsYXliYWNr
U2Vzc2lvbk1vZGVsLT53aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCgpKTsKKyAgICBkdXJh
dGlvbkNoYW5nZWQobW9kZWwuZHVyYXRpb24oKSk7CisgICAgY3VycmVudFRpbWVDaGFuZ2VkKG1v
ZGVsLmN1cnJlbnRUaW1lKCksIFtbTlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5mb10gc3lzdGVtVXB0
aW1lXSk7CisgICAgYnVmZmVyZWRUaW1lQ2hhbmdlZChtb2RlbC5idWZmZXJlZFRpbWUoKSk7Cisg
ICAgcmF0ZUNoYW5nZWQobW9kZWwuaXNQbGF5aW5nKCksIG1vZGVsLnBsYXliYWNrUmF0ZSgpKTsK
KyAgICBzZWVrYWJsZVJhbmdlc0NoYW5nZWQobW9kZWwuc2Vla2FibGVSYW5nZXMoKSwgbW9kZWwu
c2Vla2FibGVUaW1lUmFuZ2VzTGFzdE1vZGlmaWVkVGltZSgpLCBtb2RlbC5saXZlVXBkYXRlSW50
ZXJ2YWwoKSk7CisgICAgY2FuUGxheUZhc3RSZXZlcnNlQ2hhbmdlZChtb2RlbC5jYW5QbGF5RmFz
dFJldmVyc2UoKSk7CisgICAgYXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKG1vZGVs
LmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKCksIG1vZGVsLmF1ZGlvTWVkaWFTZWxlY3RlZElu
ZGV4KCkpOworICAgIGxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKG1vZGVsLmxl
Z2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoKSwgbW9kZWwubGVnaWJsZU1lZGlhU2VsZWN0ZWRJ
bmRleCgpKTsKKyAgICBleHRlcm5hbFBsYXliYWNrQ2hhbmdlZChtb2RlbC5leHRlcm5hbFBsYXli
YWNrRW5hYmxlZCgpLCBtb2RlbC5leHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSgpLCBtb2RlbC5l
eHRlcm5hbFBsYXliYWNrTG9jYWxpemVkRGV2aWNlTmFtZSgpKTsKKyAgICB3aXJlbGVzc1ZpZGVv
UGxheWJhY2tEaXNhYmxlZENoYW5nZWQobW9kZWwud2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJs
ZWQoKSk7CiB9CiAKIFBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Ojp+UGxheWJhY2tTZXNz
aW9uSW50ZXJmYWNlQVZLaXQoKQogewotICAgIG1fcGxheWJhY2tTZXNzaW9uTW9kZWwtPnJlbW92
ZUNsaWVudCgqdGhpcyk7CiAgICAgW21fcGxheWVyQ29udHJvbGxlciBzZXRQbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2U6bnVsbHB0cl07CiAgICAgW21fcGxheWVyQ29udHJvbGxlciBzZXRFeHRlcm5h
bFBsYXliYWNrQWN0aXZlOmZhbHNlXTsKKworICAgIGludmFsaWRhdGUoKTsKIH0KIAogdm9pZCBQ
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6cmVzZXRNZWRpYVN0YXRlKCkKQEAgLTIxMCw2
ICsyMDYsMTYgQEAgdm9pZCBQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6dm9sdW1lQ2hh
bmdlZChkb3VibGUgdm9sdW1lKQogICAgIFttX3BsYXllckNvbnRyb2xsZXIgdm9sdW1lQ2hhbmdl
ZDp2b2x1bWVdOwogfQogCit2b2lkIFBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0OjppbnZh
bGlkYXRlKCkKK3sKKyAgICBpZiAoIW1fcGxheWJhY2tTZXNzaW9uTW9kZWwpCisgICAgICAgIHJl
dHVybjsKKworICAgIFttX3BsYXllckNvbnRyb2xsZXIgc2V0RGVsZWdhdGU6bnVsbHB0cl07Cisg
ICAgbV9wbGF5YmFja1Nlc3Npb25Nb2RlbC0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsKKyAgICBtX3Bs
YXliYWNrU2Vzc2lvbk1vZGVsID0gbnVsbHB0cjsKK30KKwogfQogCiAjZW5kaWYgLy8gSEFWRShB
VktJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VBVktpdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUFWS2l0LmgKaW5kZXggOGVlMmE5NTg2YmFmMmIxZjkzOGE3MDU3
MTUzOWY1ODk3Y2QyOTQ0Ny4uYzZkMmVhZDk1NDJjZjg0MzQyMGNlOTUzY2QzZjI0ZjkyNzJiZGVj
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUFWS2l0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUFWS2l0LmgKQEAgLTQwLDcgKzQwLDYgQEAKICNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9S
dW5Mb29wLmg+Ci0jaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogT0JKQ19DTEFTUyBVSVZpZXdD
b250cm9sbGVyOwogT0JKQ19DTEFTUyBVSVdpbmRvdzsKQEAgLTY1LDExICs2NCwxMiBAQCBjbGFz
cyBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdCBmaW5hbAogICAgICwgcHVibGljIFRocmVh
ZFNhZmVSZWZDb3VudGVkPFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0PiB7CiAKIHB1Ymxp
YzoKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0PiBjcmVhdGUoUmVmPFBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0PiYmLCBSZWY8
VmlkZW9GdWxsc2NyZWVuTW9kZWw+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ+IGNyZWF0ZShQbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2VBVktpdCYpOwogICAgIHZpcnR1YWwgflZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0
KCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNl
cnZlcihXZWFrUHRyPFZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyPik7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5Nb2RlbChWaWRlb0Z1bGxzY3JlZW5Nb2Rl
bCopOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2Jz
ZXJ2ZXIoVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIqKTsKICAgICBQbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2VBVktpdCYgcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlKCkgY29uc3QgeyByZXR1
cm4gbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UuZ2V0KCk7IH0KLSAgICBQbGF5YmFja1Nlc3Np
b25Nb2RlbCYgcGxheWJhY2tTZXNzaW9uTW9kZWwoKSBjb25zdCB7IHJldHVybiBtX3BsYXliYWNr
U2Vzc2lvbkludGVyZmFjZS0+cGxheWJhY2tTZXNzaW9uTW9kZWwoKTsgfQorICAgIFBsYXliYWNr
U2Vzc2lvbk1vZGVsKiBwbGF5YmFja1Nlc3Npb25Nb2RlbCgpIGNvbnN0IHsgcmV0dXJuIG1fcGxh
eWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5wbGF5YmFja1Nlc3Npb25Nb2RlbCgpOyB9CiAKICAgICAv
LyBWaWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVudAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaGFz
VmlkZW9DaGFuZ2VkKGJvb2wpIGZpbmFsOwpAQCAtODIsNiArODIsNyBAQCBwdWJsaWM6CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBlbnRlckZ1bGxzY3JlZW4oKTsKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGV4aXRGdWxsc2NyZWVuKGNvbnN0IEludFJlY3QmIGZpbmFsUmVjdCk7CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBjbGVhbnVwRnVsbHNjcmVlbigpOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgaW52YWxpZGF0ZSgpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVxdWVzdEhpZGVB
bmRFeGl0RnVsbHNjcmVlbigpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcHJlcGFyZWRUb1Jl
dHVyblRvSW5saW5lKGJvb2wgdmlzaWJsZSwgY29uc3QgSW50UmVjdCYgaW5saW5lUmVjdCk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwcmVwYXJlZFRvRXhpdEZ1bGxzY3JlZW4oKTsKQEAgLTEz
MCw3ICsxMzEsNyBAQCBwdWJsaWM6CiAgICAgTW9kZSBtX3RhcmdldE1vZGU7CiAjZW5kaWYKIAot
ICAgIFZpZGVvRnVsbHNjcmVlbk1vZGVsJiB2aWRlb0Z1bGxzY3JlZW5Nb2RlbCgpIGNvbnN0IHsg
cmV0dXJuIG1fdmlkZW9GdWxsc2NyZWVuTW9kZWw7IH0KKyAgICBWaWRlb0Z1bGxzY3JlZW5Nb2Rl
bCogdmlkZW9GdWxsc2NyZWVuTW9kZWwoKSBjb25zdCB7IHJldHVybiBtX3ZpZGVvRnVsbHNjcmVl
bk1vZGVsOyB9CiAgICAgYm9vbCBzaG91bGRFeGl0RnVsbHNjcmVlbldpdGhSZWFzb24oRXhpdEZ1
bGxTY3JlZW5SZWFzb24pOwogICAgIEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2Ny
ZWVuTW9kZSBtb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50TW9kZS5tb2RlKCk7IH0KICAg
ICBib29sIGFsbG93c1BpY3R1cmVJblBpY3R1cmVQbGF5YmFjaygpIGNvbnN0IHsgcmV0dXJuIG1f
YWxsb3dzUGljdHVyZUluUGljdHVyZVBsYXliYWNrOyB9CkBAIC0xNjMsNyArMTY0LDcgQEAgcHVi
bGljOgogI2VuZGlmCiAKIHByb3RlY3RlZDoKLSAgICBXRUJDT1JFX0VYUE9SVCBWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VBVktpdChSZWY8UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ+JiYs
IFJlZjxWaWRlb0Z1bGxzY3JlZW5Nb2RlbD4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQoUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQmKTsK
IAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICB2b2lkIGRvU2V0dXAoKTsKQEAgLTE3
OSwxMCArMTgwLDEwIEBAIHByb3RlY3RlZDoKICAgICBXZWJBVlBsYXllckNvbnRyb2xsZXIgKnBs
YXllckNvbnRyb2xsZXIoKSBjb25zdDsKIAogICAgIFJlZjxQbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2VBVktpdD4gbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2U7Ci0gICAgUmVmPFZpZGVvRnVsbHNj
cmVlbk1vZGVsPiBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsOwogICAgIFJldGFpblB0cjxXZWJBVlBs
YXllclZpZXdDb250cm9sbGVyRGVsZWdhdGU+IG1fcGxheWVyVmlld0NvbnRyb2xsZXJEZWxlZ2F0
ZTsKICAgICBSZXRhaW5QdHI8V2ViQVZQbGF5ZXJWaWV3Q29udHJvbGxlcj4gbV9wbGF5ZXJWaWV3
Q29udHJvbGxlcjsKLSAgICBXZWFrUHRyPFZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyPiBt
X2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcjsKKyAgICBWaWRlb0Z1bGxzY3JlZW5Nb2RlbCogbV92
aWRlb0Z1bGxzY3JlZW5Nb2RlbCB7IG51bGxwdHIgfTsKKyAgICBWaWRlb0Z1bGxzY3JlZW5DaGFu
Z2VPYnNlcnZlciogbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIgeyBudWxscHRyIH07CiAKICAg
ICAvLyBUaGVzZSBhcmUgb25seSB1c2VkIHdoZW4gZnVsbHNjcmVlbiBpcyBwcmVzZW50ZWQgaW4g
YSBzZXBhcmF0ZSB3aW5kb3cuCiAgICAgUmV0YWluUHRyPFVJV2luZG93PiBtX3dpbmRvdzsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VBVktpdC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VBVktpdC5tbQppbmRleCA3MzI0NGVlYzJlYjUxZjIwOGY2ZDM2ZTE5NmM0MTMx
NjFhODVjZjJjLi41Y2MzMjBlMTlkYWQzOWMwMDljNzMzNjhhNTg3MWM4NjA5M2U4YjdkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlQVZLaXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUFWS2l0Lm1tCkBAIC0yODksNyArMjg5LDggQEAgc3RhdGljIFZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZUFWS2l0OjpFeGl0RnVsbFNjcmVlblJlYXNvbiBjb252ZXJ0VG9FeGl0
RnVsbFNjcmUKICAgICB9IGVsc2UgaWYgKFtnZXRBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplQXNw
ZWN0RmlsbCgpIGlzRXF1YWxUb1N0cmluZzpzZWxmLnZpZGVvR3Jhdml0eV0pIHsKICAgICAgICAg
c291cmNlVmlkZW9GcmFtZSA9IHNtYWxsZXN0UmVjdFdpdGhBc3BlY3RSYXRpb0Fyb3VuZFJlY3Qo
dmlkZW9Bc3BlY3RSYXRpbywgc2VsZi5tb2RlbFZpZGVvTGF5ZXJGcmFtZSk7CiAgICAgICAgIHNl
bGYubW9kZWxWaWRlb0xheWVyRnJhbWUgPSBDR1JlY3RNYWtlKDAsIDAsIHNvdXJjZVZpZGVvRnJh
bWUud2lkdGgoKSwgc291cmNlVmlkZW9GcmFtZS5oZWlnaHQoKSk7Ci0gICAgICAgIF9mdWxsc2Ny
ZWVuSW50ZXJmYWNlLT52aWRlb0Z1bGxzY3JlZW5Nb2RlbCgpLnNldFZpZGVvTGF5ZXJGcmFtZShz
ZWxmLm1vZGVsVmlkZW9MYXllckZyYW1lKTsKKyAgICAgICAgaWYgKGF1dG8qIG1vZGVsID0gX2Z1
bGxzY3JlZW5JbnRlcmZhY2UtPnZpZGVvRnVsbHNjcmVlbk1vZGVsKCkpCisgICAgICAgICAgICBt
b2RlbC0+c2V0VmlkZW9MYXllckZyYW1lKHNlbGYubW9kZWxWaWRlb0xheWVyRnJhbWUpOwogICAg
ICAgICB0YXJnZXRWaWRlb0ZyYW1lID0gc21hbGxlc3RSZWN0V2l0aEFzcGVjdFJhdGlvQXJvdW5k
UmVjdCh2aWRlb0FzcGVjdFJhdGlvLCBzZWxmLmJvdW5kcyk7CiAgICAgfSBlbHNlCiAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMzI0LDcgKzMyNSw4IEBAIHN0YXRpYyBWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6RXhpdEZ1bGxTY3JlZW5SZWFzb24gY29udmVydFRvRXhp
dEZ1bGxTY3JlCiAgICAgCiAgICAgaWYgKCFDR1JlY3RFcXVhbFRvUmVjdChzZWxmLm1vZGVsVmlk
ZW9MYXllckZyYW1lLCBbc2VsZiBib3VuZHNdKSkgewogICAgICAgICBzZWxmLm1vZGVsVmlkZW9M
YXllckZyYW1lID0gW3NlbGYgYm91bmRzXTsKLSAgICAgICAgX2Z1bGxzY3JlZW5JbnRlcmZhY2Ut
PnZpZGVvRnVsbHNjcmVlbk1vZGVsKCkuc2V0VmlkZW9MYXllckZyYW1lKHNlbGYubW9kZWxWaWRl
b0xheWVyRnJhbWUpOworICAgICAgICBpZiAoYXV0byogbW9kZWwgPSBfZnVsbHNjcmVlbkludGVy
ZmFjZS0+dmlkZW9GdWxsc2NyZWVuTW9kZWwoKSkKKyAgICAgICAgICAgIG1vZGVsLT5zZXRWaWRl
b0xheWVyRnJhbWUoc2VsZi5tb2RlbFZpZGVvTGF5ZXJGcmFtZSk7CiAgICAgfQogICAgIFsoVUlW
aWV3ICopW192aWRlb1N1YmxheWVyIGRlbGVnYXRlXSBzZXRUcmFuc2Zvcm06Q0dBZmZpbmVUcmFu
c2Zvcm1JZGVudGl0eV07CiAgICAgCkBAIC0zNDgsNyArMzUwLDggQEAgc3RhdGljIFZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZUFWS2l0OjpFeGl0RnVsbFNjcmVlblJlYXNvbiBjb252ZXJ0VG9FeGl0
RnVsbFNjcmUKICAgICBlbHNlCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIAot
ICAgIF9mdWxsc2NyZWVuSW50ZXJmYWNlLT52aWRlb0Z1bGxzY3JlZW5Nb2RlbCgpLnNldFZpZGVv
TGF5ZXJHcmF2aXR5KGdyYXZpdHkpOworICAgIGlmIChhdXRvKiBtb2RlbCA9IF9mdWxsc2NyZWVu
SW50ZXJmYWNlLT52aWRlb0Z1bGxzY3JlZW5Nb2RlbCgpKQorICAgICAgICBtb2RlbC0+c2V0Vmlk
ZW9MYXllckdyYXZpdHkoZ3Jhdml0eSk7CiB9CiAKIC0gKE5TU3RyaW5nICopdmlkZW9HcmF2aXR5
CkBAIC03MjIsMTYgKzcyNSwxNSBAQCBOU19BU1NVTUVfTk9OTlVMTF9FTkQKIH0KIEBlbmQKIAot
UmVmPFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0PiBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2VBVktpdDo6Y3JlYXRlKFJlZjxQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdD4mJiBwbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2UsIFJlZjxWaWRlb0Z1bGxzY3JlZW5Nb2RlbD4mJiB2aWRlb0Z1
bGxzY3JlZW5Nb2RlbCkKK1JlZjxWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdD4gVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmNyZWF0ZShQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VB
VktpdCYgcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlKQogewotICAgIFJlZjxWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VBVktpdD4gaW50ZXJmYWNlID0gYWRvcHRSZWYoKm5ldyBWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VBVktpdChXVEZNb3ZlKHBsYXliYWNrU2Vzc2lvbkludGVyZmFjZSksIFdURk1v
dmUodmlkZW9GdWxsc2NyZWVuTW9kZWwpKSk7CisgICAgUmVmPFZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0PiBpbnRlcmZhY2UgPSBhZG9wdFJlZigqbmV3IFZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0KHBsYXliYWNrU2Vzc2lvbkludGVyZmFjZSkpOwogICAgIFtpbnRlcmZhY2UtPm1f
cGxheWVyVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBzZXRGdWxsc2NyZWVuSW50ZXJmYWNlOmludGVy
ZmFjZS5wdHIoKV07CiAgICAgcmV0dXJuIGludGVyZmFjZTsKIH0KIAotVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQ6OlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0KFJlZjxQbGF5YmFj
a1Nlc3Npb25JbnRlcmZhY2VBVktpdD4mJiBwbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UsIFJlZjxW
aWRlb0Z1bGxzY3JlZW5Nb2RlbD4mJiB2aWRlb0Z1bGxzY3JlZW5Nb2RlbCkKLSAgICA6IG1fcGxh
eWJhY2tTZXNzaW9uSW50ZXJmYWNlKFdURk1vdmUocGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlKSkK
LSAgICAsIG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwoV1RGTW92ZSh2aWRlb0Z1bGxzY3JlZW5Nb2Rl
bCkpCitWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6VmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlQVZLaXQoUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQmIHBsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZSkKKyAgICA6IG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlKHBsYXliYWNrU2Vzc2lv
bkludGVyZmFjZSkKICAgICAsIG1fcGxheWVyVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZShhZG9wdE5T
KFtbV2ViQVZQbGF5ZXJWaWV3Q29udHJvbGxlckRlbGVnYXRlIGFsbG9jXSBpbml0XSkpCiAgICAg
LCBtX3dhdGNoZG9nVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQ6OndhdGNoZG9nVGltZXJGaXJlZCkKIHsKQEAgLTc0Miw3ICs3NDQsOCBA
QCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6flZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0KCkKICAgICBXZWJBVlBsYXllckNvbnRyb2xsZXIqIHBsYXllckNvbnRyb2xsZXIgPSB0
aGlzLT5wbGF5ZXJDb250cm9sbGVyKCk7CiAgICAgaWYgKHBsYXllckNvbnRyb2xsZXIgJiYgcGxh
eWVyQ29udHJvbGxlci5leHRlcm5hbFBsYXliYWNrQWN0aXZlKQogICAgICAgICBleHRlcm5hbFBs
YXliYWNrQ2hhbmdlZChmYWxzZSwgUGxheWJhY2tTZXNzaW9uTW9kZWw6OlRhcmdldFR5cGVOb25l
LCAiIik7Ci0gICAgdmlkZW9GdWxsc2NyZWVuTW9kZWwoKS5yZW1vdmVDbGllbnQoKnRoaXMpOwor
ICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsKQorICAgICAgICBtX3ZpZGVvRnVsbHNjcmVl
bk1vZGVsLT5yZW1vdmVDbGllbnQoKnRoaXMpOwogfQogCiBXZWJBVlBsYXllckNvbnRyb2xsZXIg
KlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpwbGF5ZXJDb250cm9sbGVyKCkgY29uc3QK
QEAgLTc1MCw3ICs3NTMsMjEgQEAgV2ViQVZQbGF5ZXJDb250cm9sbGVyICpWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VBVktpdDo6cGxheWVyQ29udHJvbGxlcigpIGNvbnN0CiAgICAgcmV0dXJuIG1f
cGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5wbGF5ZXJDb250cm9sbGVyKCk7CiB9CiAKLXZvaWQg
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldFZpZGVvRnVsbHNjcmVlbkNoYW5nZU9i
c2VydmVyKFdlYWtQdHI8VmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXI+IG9ic2VydmVyKQor
dm9pZCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0VmlkZW9GdWxsc2NyZWVuTW9k
ZWwoVmlkZW9GdWxsc2NyZWVuTW9kZWwqIG1vZGVsKQoreworICAgIGlmIChtX3ZpZGVvRnVsbHNj
cmVlbk1vZGVsKQorICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT5yZW1vdmVDbGllbnQo
KnRoaXMpOworCisgICAgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbCA9IG1vZGVsOworCisgICAgaWYg
KG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwpCisgICAgICAgIG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwt
PmFkZENsaWVudCgqdGhpcyk7CisKKyAgICBoYXNWaWRlb0NoYW5nZWQobV92aWRlb0Z1bGxzY3Jl
ZW5Nb2RlbCA/IG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwtPmhhc1ZpZGVvKCkgOiBmYWxzZSk7Cisg
ICAgdmlkZW9EaW1lbnNpb25zQ2hhbmdlZChtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsID8gbV92aWRl
b0Z1bGxzY3JlZW5Nb2RlbC0+dmlkZW9EaW1lbnNpb25zKCkgOiBGbG9hdFNpemUoKSk7Cit9CisK
K3ZvaWQgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldFZpZGVvRnVsbHNjcmVlbkNo
YW5nZU9ic2VydmVyKFZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKiBvYnNlcnZlcikKIHsK
ICAgICBtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlciA9IG9ic2VydmVyOwogfQpAQCAtNzkwLDcg
KzgwNyw3IEBAIGJvb2wgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnBpY3R1cmVJblBp
Y3R1cmVXYXNTdGFydGVkV2hlbkVudGVyaW5nQmFja2dyCiB2b2lkIFZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZUFWS2l0OjphcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpCiB7CiAgICAgTE9HKEZ1
bGxzY3JlZW4sICJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6YXBwbGljYXRpb25EaWRC
ZWNvbWVBY3RpdmUoJXApIiwgdGhpcyk7Ci0gICAgaWYgKG1fc2hvdWxkUmV0dXJuVG9GdWxsc2Ny
ZWVuQWZ0ZXJFbnRlcmluZ0ZvcmVncm91bmQgJiYgdmlkZW9GdWxsc2NyZWVuTW9kZWwoKS5pc1Zp
c2libGUoKSkgeworICAgIGlmIChtX3Nob3VsZFJldHVyblRvRnVsbHNjcmVlbkFmdGVyRW50ZXJp
bmdGb3JlZ3JvdW5kICYmIG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwgJiYgbV92aWRlb0Z1bGxzY3Jl
ZW5Nb2RlbC0+aXNWaXNpYmxlKCkpIHsKICAgICAgICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIg
c3RvcFBpY3R1cmVJblBpY3R1cmVdOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtODY3LDcg
Kzg4NCw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldHVwRnVsbHNj
cmVlbihVSVZpZXcmIHZpZGVvVmlldywgY29uc3QgSW50CiAgICAgW3BsYXllckNvbnRyb2xsZXIo
KSBzZXRQaWN0dXJlSW5QaWN0dXJlUG9zc2libGU6bV9hbGxvd3NQaWN0dXJlSW5QaWN0dXJlUGxh
eWJhY2tdOwogCiAjaWYgUExBVEZPUk0oV0FUQ0hPUykKLSAgICBtX3ZpZXdDb250cm9sbGVyID0g
dmlkZW9GdWxsc2NyZWVuTW9kZWwoKS5jcmVhdGVWaWRlb0Z1bGxzY3JlZW5WaWV3Q29udHJvbGxl
cihtX3BsYXllclZpZXdDb250cm9sbGVyLmdldCgpLmF2UGxheWVyVmlld0NvbnRyb2xsZXIpOwor
ICAgIG1fdmlld0NvbnRyb2xsZXIgPSB2aWRlb0Z1bGxzY3JlZW5Nb2RlbCgpLT5jcmVhdGVWaWRl
b0Z1bGxzY3JlZW5WaWV3Q29udHJvbGxlcihtX3BsYXllclZpZXdDb250cm9sbGVyLmdldCgpLmF2
UGxheWVyVmlld0NvbnRyb2xsZXIpOwogI2VuZGlmCiAKICAgICBpZiAobV92aWV3Q29udHJvbGxl
cikgewpAQCAtOTMyLDcgKzk0OSw3IEBAIHN0YXRpYyBVSVZpZXdDb250cm9sbGVyICpmYWxsYmFj
a1ZpZXdDb250cm9sbGVyKFVJVmlldyAqdmlldykKIAogVUlWaWV3Q29udHJvbGxlciAqVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnByZXNlbnRpbmdWaWV3Q29udHJvbGxlcigpCiB7Ci0g
ICAgYXV0byAqY29udHJvbGxlciA9IHZpZGVvRnVsbHNjcmVlbk1vZGVsKCkucHJlc2VudGluZ1Zp
ZXdDb250cm9sbGVyKCk7CisgICAgYXV0byAqY29udHJvbGxlciA9IHZpZGVvRnVsbHNjcmVlbk1v
ZGVsKCktPnByZXNlbnRpbmdWaWV3Q29udHJvbGxlcigpOwogICAgIGlmICghY29udHJvbGxlcikK
ICAgICAgICAgY29udHJvbGxlciA9IGZhbGxiYWNrVmlld0NvbnRyb2xsZXIobV9wYXJlbnRWaWV3
LmdldCgpKTsKIApAQCAtMTA2MCw2ICsxMDc3LDE0IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQ6OmNsZWFudXBGdWxsc2NyZWVuKCkKICAgICBtX2VudGVyUmVxdWVzdGVkID0g
ZmFsc2U7CiB9CiAKK3ZvaWQgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmludmFsaWRh
dGUoKQoreworICAgIG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwgPSBuaWw7CisgICAgbV9mdWxsc2Ny
ZWVuQ2hhbmdlT2JzZXJ2ZXIgPSBuaWw7CisgICAgCisgICAgY2xlYW51cEZ1bGxzY3JlZW4oKTsK
K30KKwogdm9pZCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6cmVxdWVzdEhpZGVBbmRF
eGl0RnVsbHNjcmVlbigpCiB7CiAgICAgaWYgKCFtX2VudGVyUmVxdWVzdGVkKQpAQCAtMTA3Myw5
ICsxMDk4LDkgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6cmVxdWVzdEhp
ZGVBbmRFeGl0RnVsbHNjcmVlbigpCiAgICAgW21fd2luZG93IHNldEhpZGRlbjpZRVNdOwogICAg
IFtbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciB2aWV3XSBzZXRIaWRkZW46WUVTXTsKIAotICAgIGlm
ICghbV9leGl0UmVxdWVzdGVkKSB7Ci0gICAgICAgIHBsYXliYWNrU2Vzc2lvbk1vZGVsKCkucGF1
c2UoKTsKLSAgICAgICAgdmlkZW9GdWxsc2NyZWVuTW9kZWwoKS5yZXF1ZXN0RnVsbHNjcmVlbk1v
ZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSk7CisgICAg
aWYgKHBsYXliYWNrU2Vzc2lvbk1vZGVsKCkgJiYgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbCAmJiAh
bV9leGl0UmVxdWVzdGVkKSB7CisgICAgICAgIHBsYXliYWNrU2Vzc2lvbk1vZGVsKCktPnBhdXNl
KCk7CisgICAgICAgIG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwtPnJlcXVlc3RGdWxsc2NyZWVuTW9k
ZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsKICAgICB9
CiB9CiAKQEAgLTEwOTUsNyArMTEyMCw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
QVZLaXQ6OnByZXBhcmVkVG9FeGl0RnVsbHNjcmVlbigpCiAgICAgICAgIHJldHVybjsKIAogICAg
IG1fd2FpdGluZ0ZvclByZXBhcmVkVG9FeGl0ID0gZmFsc2U7Ci0gICAgdmlkZW9GdWxsc2NyZWVu
TW9kZWwoKS5yZXF1ZXN0RnVsbHNjcmVlbk1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRl
b0Z1bGxzY3JlZW5Nb2RlTm9uZSwgdHJ1ZSk7CisgICAgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbC0+
cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2Ny
ZWVuTW9kZU5vbmUsIHRydWUpOwogfQogCiBib29sIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFW
S2l0OjptYXlBdXRvbWF0aWNhbGx5U2hvd1ZpZGVvUGljdHVyZUluUGljdHVyZSgpIGNvbnN0CkBA
IC0xMTE0LDcgKzExMzksOCBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojp3
aWxsU3RhcnRQaWN0dXJlSW5QaWN0dXJlKCkKIHsKICAgICBMT0coRnVsbHNjcmVlbiwgIlZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojp3aWxsU3RhcnRQaWN0dXJlSW5QaWN0dXJlKCVwKSIs
IHRoaXMpOwogICAgIHNldE1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlUGljdHVyZUluUGljdHVyZSk7Ci0gICAgdmlkZW9GdWxsc2NyZWVuTW9kZWwoKS53aWxs
RW50ZXJQaWN0dXJlSW5QaWN0dXJlKCk7CisgICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwp
CisgICAgICAgIG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwtPndpbGxFbnRlclBpY3R1cmVJblBpY3R1
cmUoKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZGlkU3RhcnRQ
aWN0dXJlSW5QaWN0dXJlKCkKQEAgLTExNDAsNyArMTE2Niw4IEBAIHZvaWQgVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlQVZLaXQ6OmRpZFN0YXJ0UGljdHVyZUluUGljdHVyZSgpCiAKICAgICBpZiAo
bV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIpCiAgICAgICAgIG1fZnVsbHNjcmVlbkNoYW5nZU9i
c2VydmVyLT5kaWRFbnRlckZ1bGxzY3JlZW4oKTsKLSAgICB2aWRlb0Z1bGxzY3JlZW5Nb2RlbCgp
LmRpZEVudGVyUGljdHVyZUluUGljdHVyZSgpOworICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbk1v
ZGVsKQorICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT5kaWRFbnRlclBpY3R1cmVJblBp
Y3R1cmUoKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZmFpbGVk
VG9TdGFydFBpY3R1cmVJblBpY3R1cmUoKQpAQCAtMTE1NSw4ICsxMTgyLDExIEBAIHZvaWQgVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmZhaWxlZFRvU3RhcnRQaWN0dXJlSW5QaWN0dXJl
KCkKIAogICAgIGlmIChtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcikKICAgICAgICAgbV9mdWxs
c2NyZWVuQ2hhbmdlT2JzZXJ2ZXItPmRpZEVudGVyRnVsbHNjcmVlbigpOwotICAgIHZpZGVvRnVs
bHNjcmVlbk1vZGVsKCkuZmFpbGVkVG9FbnRlclBpY3R1cmVJblBpY3R1cmUoKTsKLSAgICB2aWRl
b0Z1bGxzY3JlZW5Nb2RlbCgpLnJlcXVlc3RGdWxsc2NyZWVuTW9kZShIVE1MTWVkaWFFbGVtZW50
RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsKKyAgICBpZiAobV92aWRlb0Z1bGxzY3Jl
ZW5Nb2RlbCkKKyAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbC0+ZmFpbGVkVG9FbnRlclBp
Y3R1cmVJblBpY3R1cmUoKTsKKworICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsKQorICAg
ICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT5yZXF1ZXN0RnVsbHNjcmVlbk1vZGUoSFRNTE1l
ZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSk7CiB9CiAKIHZvaWQgVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OndpbGxTdG9wUGljdHVyZUluUGljdHVyZSgpCkBA
IC0xMTcyLDggKzEyMDIsMTAgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6
d2lsbFN0b3BQaWN0dXJlSW5QaWN0dXJlKCkKICAgICBbbV93aW5kb3cgc2V0SGlkZGVuOk5PXTsK
ICAgICBbW21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10gc2V0SGlkZGVuOk5PXTsKIAotICAg
IHZpZGVvRnVsbHNjcmVlbk1vZGVsKCkucmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKEhUTUxNZWRpYUVs
ZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpOwotICAgIHZpZGVvRnVsbHNjcmVl
bk1vZGVsKCkud2lsbEV4aXRQaWN0dXJlSW5QaWN0dXJlKCk7CisgICAgaWYgKG1fdmlkZW9GdWxs
c2NyZWVuTW9kZWwpCisgICAgICAgIG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwtPnJlcXVlc3RGdWxs
c2NyZWVuTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVOb25l
KTsKKyAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5Nb2RlbCkKKyAgICAgICAgbV92aWRlb0Z1bGxz
Y3JlZW5Nb2RlbC0+d2lsbEV4aXRQaWN0dXJlSW5QaWN0dXJlKCk7CiB9CiAKIHZvaWQgVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmRpZFN0b3BQaWN0dXJlSW5QaWN0dXJlKCkKQEAgLTEx
OTYsNyArMTIyOCw4IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmRpZFN0
b3BQaWN0dXJlSW5QaWN0dXJlKCkKIAogICAgIGlmIChtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZl
cikKICAgICAgICAgbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXItPmRpZEV4aXRGdWxsc2NyZWVu
KCk7Ci0gICAgdmlkZW9GdWxsc2NyZWVuTW9kZWwoKS5kaWRFeGl0UGljdHVyZUluUGljdHVyZSgp
OworICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsKQorICAgICAgICBtX3ZpZGVvRnVsbHNj
cmVlbk1vZGVsLT5kaWRFeGl0UGljdHVyZUluUGljdHVyZSgpOwogfQogCiB2b2lkIFZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZUFWS2l0OjpwcmVwYXJlRm9yUGljdHVyZUluUGljdHVyZVN0b3BXaXRo
Q29tcGxldGlvbkhhbmRsZXIodm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShCT09MIHJlc3RvcmVk
KSkKQEAgLTEyMzMsNiArMTI2Niw5IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQ6OnByZXBhcmVGb3JQaWN0dXJlSW5QaWN0dXJlU3RvcFdpdGhDb21wbGV0aW9uCiAKIGJvb2wg
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNob3VsZEV4aXRGdWxsc2NyZWVuV2l0aFJl
YXNvbihWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6RXhpdEZ1bGxTY3JlZW5SZWFzb24g
cmVhc29uKQogeworICAgIGlmICghbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbCkKKyAgICAgICAgcmV0
dXJuIHRydWU7CisKICAgICBpZiAocmVhc29uID09IEV4aXRGdWxsU2NyZWVuUmVhc29uOjpQaWN0
dXJlSW5QaWN0dXJlU3RhcnRlZCkgewogICAgICAgICBpZiAocGljdHVyZUluUGljdHVyZVdhc1N0
YXJ0ZWRXaGVuRW50ZXJpbmdCYWNrZ3JvdW5kKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC0xMjQyLDggKzEyNzgsOCBAQCBib29sIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0
OjpzaG91bGRFeGl0RnVsbHNjcmVlbldpdGhSZWFzb24oVmlkZW9GdWxsc2NyZQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBpZiAocmVhc29uID09IEV4aXRGdWxsU2NyZWVuUmVh
c29uOjpEb25lQnV0dG9uVGFwcGVkIHx8IHJlYXNvbiA9PSBFeGl0RnVsbFNjcmVlblJlYXNvbjo6
UmVtb3RlQ29udHJvbFN0b3BFdmVudFJlY2VpdmVkKQotICAgICAgICBwbGF5YmFja1Nlc3Npb25N
b2RlbCgpLnBhdXNlKCk7CisgICAgaWYgKHBsYXliYWNrU2Vzc2lvbk1vZGVsKCkgJiYgKHJlYXNv
biA9PSBFeGl0RnVsbFNjcmVlblJlYXNvbjo6RG9uZUJ1dHRvblRhcHBlZCB8fCByZWFzb24gPT0g
RXhpdEZ1bGxTY3JlZW5SZWFzb246OlJlbW90ZUNvbnRyb2xTdG9wRXZlbnRSZWNlaXZlZCkpCisg
ICAgICAgIHBsYXliYWNrU2Vzc2lvbk1vZGVsKCktPnBhdXNlKCk7CiAKICAgICBpZiAoIW1fd2F0
Y2hkb2dUaW1lci5pc0FjdGl2ZSgpICYmICFpZ25vcmVXYXRjaGRvZ0ZvckRlYnVnZ2luZykKICAg
ICAgICAgbV93YXRjaGRvZ1RpbWVyLnN0YXJ0T25lU2hvdChkZWZhdWx0V2F0Y2hkb2dUaW1lcklu
dGVydmFsKTsKQEAgLTEyNTcsNyArMTI5Myw3IEBAIGJvb2wgVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlQVZLaXQ6OnNob3VsZEV4aXRGdWxsc2NyZWVuV2l0aFJlYXNvbihWaWRlb0Z1bGxzY3JlCiAj
ZW5kaWYKIAogICAgIEJPT0wgZmluaXNoZWQgPSByZWFzb24gPT0gRXhpdEZ1bGxTY3JlZW5SZWFz
b246OkRvbmVCdXR0b25UYXBwZWQgfHwgcmVhc29uID09IEV4aXRGdWxsU2NyZWVuUmVhc29uOjpQ
aW5jaEdlc3R1cmVIYW5kbGVkOwotICAgIHZpZGVvRnVsbHNjcmVlbk1vZGVsKCkucmVxdWVzdEZ1
bGxzY3JlZW5Nb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZU5v
bmUsIGZpbmlzaGVkKTsKKyAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT5yZXF1ZXN0RnVsbHNj
cmVlbk1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSwg
ZmluaXNoZWQpOwogCiAgICAgcmV0dXJuIGZhbHNlOwogfQpAQCAtMTM0OSw2ICsxMzg1LDE0IEBA
IHZvaWQgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmNsZWFudXBGdWxsc2NyZWVuKCkK
ICAgICAgICAgbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXItPmRpZENsZWFudXBGdWxsc2NyZWVu
KCk7CiB9CiAKK3ZvaWQgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmludmFsaWRhdGUo
KQoreworICAgIG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwgPSBuaWw7CisgICAgbV9mdWxsc2NyZWVu
Q2hhbmdlT2JzZXJ2ZXIgPSBuaWw7CisgICAgCisgICAgY2xlYW51cEZ1bGxzY3JlZW4oKTsKK30K
Kwogdm9pZCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6cmVxdWVzdEhpZGVBbmRFeGl0
RnVsbHNjcmVlbigpCiB7CiAgICAgaWYgKG1fY3VycmVudE1vZGUuaGFzUGljdHVyZUluUGljdHVy
ZSgpKQpAQCAtMTM1OSw4ICsxNDAzLDEwIEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
QVZLaXQ6OnJlcXVlc3RIaWRlQW5kRXhpdEZ1bGxzY3JlZW4oKQogICAgIFttX3dpbmRvdyBzZXRI
aWRkZW46WUVTXTsKICAgICBbW21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10gc2V0SGlkZGVu
OllFU107CiAKLSAgICBwbGF5YmFja1Nlc3Npb25Nb2RlbCgpLnBhdXNlKCk7Ci0gICAgdmlkZW9G
dWxsc2NyZWVuTW9kZWwoKS5yZXF1ZXN0RnVsbHNjcmVlbk1vZGUoSFRNTE1lZGlhRWxlbWVudEVu
dW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSk7CisgICAgaWYgKHBsYXliYWNrU2Vzc2lvbk1v
ZGVsKCkgJiYgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbCkgeworICAgICAgICBwbGF5YmFja1Nlc3Np
b25Nb2RlbCgpLT5wYXVzZSgpOworICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT5yZXF1
ZXN0RnVsbHNjcmVlbk1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5N
b2RlTm9uZSk7CisgICAgfQogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0
OjpwcmVwYXJlZFRvUmV0dXJuVG9JbmxpbmUoYm9vbCB2aXNpYmxlLCBjb25zdCBJbnRSZWN0JiBp
bmxpbmVSZWN0KQpAQCAtMTM5OSw3ICsxNDQ1LDggQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VBVktpdDo6d2lsbFN0YXJ0UGljdHVyZUluUGljdHVyZSgpCiAKICAgICBpZiAoIW1faGFz
VmlkZW9Db250ZW50TGF5ZXIpCiAgICAgICAgIG1fZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLT5y
ZXF1ZXN0VmlkZW9Db250ZW50TGF5ZXIoKTsKLSAgICB2aWRlb0Z1bGxzY3JlZW5Nb2RlbCgpLndp
bGxFbnRlclBpY3R1cmVJblBpY3R1cmUoKTsKKyAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5Nb2Rl
bCkKKyAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbC0+d2lsbEVudGVyUGljdHVyZUluUGlj
dHVyZSgpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpkaWRTdGFy
dFBpY3R1cmVJblBpY3R1cmUoKQpAQCAtMTQxOSw3ICsxNDY2LDggQEAgdm9pZCBWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VBVktpdDo6ZGlkU3RhcnRQaWN0dXJlSW5QaWN0dXJlKCkKICAgICAgICAg
W1ttX3BsYXllclZpZXdDb250cm9sbGVyIHZpZXddIHNldEhpZGRlbjpZRVNdOwogICAgIH0KIAot
ICAgIHZpZGVvRnVsbHNjcmVlbk1vZGVsKCkuZGlkRW50ZXJQaWN0dXJlSW5QaWN0dXJlKCk7Cisg
ICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwpCisgICAgICAgIG1fdmlkZW9GdWxsc2NyZWVu
TW9kZWwtPmRpZEVudGVyUGljdHVyZUluUGljdHVyZSgpOwogCiAgICAgaWYgKG1fZW50ZXJGdWxs
c2NyZWVuTmVlZHNFbnRlclBpY3R1cmVJblBpY3R1cmUpCiAgICAgICAgIGRvRW50ZXJGdWxsc2Ny
ZWVuKCk7CkBAIC0xNDM3LDggKzE0ODUsMTEgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2VBVktpdDo6ZmFpbGVkVG9TdGFydFBpY3R1cmVJblBpY3R1cmUoKQogICAgIGlmIChtX2Z1bGxz
Y3JlZW5DaGFuZ2VPYnNlcnZlcikKICAgICAgICAgbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIt
PmRpZEVudGVyRnVsbHNjcmVlbigpOwogCi0gICAgdmlkZW9GdWxsc2NyZWVuTW9kZWwoKS5mYWls
ZWRUb0VudGVyUGljdHVyZUluUGljdHVyZSgpOwotICAgIHZpZGVvRnVsbHNjcmVlbk1vZGVsKCku
cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2Ny
ZWVuTW9kZU5vbmUpOworICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsKQorICAgICAgICBt
X3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT5mYWlsZWRUb0VudGVyUGljdHVyZUluUGljdHVyZSgpOwor
CisgICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwpCisgICAgICAgIG1fdmlkZW9GdWxsc2Ny
ZWVuTW9kZWwtPnJlcXVlc3RGdWxsc2NyZWVuTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZp
ZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2VBVktpdDo6d2lsbFN0b3BQaWN0dXJlSW5QaWN0dXJlKCkKQEAgLTE0NTMsNyArMTUwNCw4IEBA
IHZvaWQgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OndpbGxTdG9wUGljdHVyZUluUGlj
dHVyZSgpCiAgICAgW21fd2luZG93IHNldEhpZGRlbjpOT107CiAgICAgW1ttX3BsYXllclZpZXdD
b250cm9sbGVyIHZpZXddIHNldEhpZGRlbjpOT107CiAKLSAgICB2aWRlb0Z1bGxzY3JlZW5Nb2Rl
bCgpLndpbGxFeGl0UGljdHVyZUluUGljdHVyZSgpOworICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVl
bk1vZGVsKQorICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT53aWxsRXhpdFBpY3R1cmVJ
blBpY3R1cmUoKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZGlk
U3RvcFBpY3R1cmVJblBpY3R1cmUoKQpAQCAtMTQ3MywxMSArMTUyNSwxMyBAQCB2b2lkIFZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpkaWRTdG9wUGljdHVyZUluUGljdHVyZSgpCiAgICAg
W21fcGxheWVyTGF5ZXJWaWV3IHNldEJhY2tncm91bmRDb2xvcjpjbGVhclVJQ29sb3IoKV07CiAg
ICAgW1ttX3BsYXllclZpZXdDb250cm9sbGVyIHZpZXddIHNldEJhY2tncm91bmRDb2xvcjpjbGVh
clVJQ29sb3IoKV07CiAKLSAgICB2aWRlb0Z1bGxzY3JlZW5Nb2RlbCgpLnJlcXVlc3RGdWxsc2Ny
ZWVuTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsK
KyAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5Nb2RlbCkKKyAgICAgICAgbV92aWRlb0Z1bGxzY3Jl
ZW5Nb2RlbC0+cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6Vmlk
ZW9GdWxsc2NyZWVuTW9kZU5vbmUpOwogCiAgICAgY2xlYXJNb2RlKEhUTUxNZWRpYUVsZW1lbnRF
bnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVBpY3R1cmVJblBpY3R1cmUpOwogCi0gICAgdmlkZW9G
dWxsc2NyZWVuTW9kZWwoKS5kaWRFeGl0UGljdHVyZUluUGljdHVyZSgpOworICAgIGlmIChtX3Zp
ZGVvRnVsbHNjcmVlbk1vZGVsKQorICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT5kaWRF
eGl0UGljdHVyZUluUGljdHVyZSgpOwogCiAgICAgaWYgKG1fZW50ZXJGdWxsc2NyZWVuTmVlZHNF
eGl0UGljdHVyZUluUGljdHVyZSkKICAgICAgICAgZG9FbnRlckZ1bGxzY3JlZW4oKTsKQEAgLTE1
MTMsMTQgKzE1NjcsMTcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6cHJl
cGFyZUZvclBpY3R1cmVJblBpY3R1cmVTdG9wV2l0aENvbXBsZXRpb24KIAogYm9vbCBWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2hvdWxkRXhpdEZ1bGxzY3JlZW5XaXRoUmVhc29uKFZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpFeGl0RnVsbFNjcmVlblJlYXNvbiByZWFzb24p
CiB7CisgICAgaWYgKCFtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsKQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKwogICAgIGlmIChyZWFzb24gPT0gRXhpdEZ1bGxTY3JlZW5SZWFzb246OlBpY3R1cmVJblBp
Y3R1cmVTdGFydGVkKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAocmVhc29uID09
IEV4aXRGdWxsU2NyZWVuUmVhc29uOjpEb25lQnV0dG9uVGFwcGVkIHx8IHJlYXNvbiA9PSBFeGl0
RnVsbFNjcmVlblJlYXNvbjo6UmVtb3RlQ29udHJvbFN0b3BFdmVudFJlY2VpdmVkKQotICAgICAg
ICBwbGF5YmFja1Nlc3Npb25Nb2RlbCgpLnBhdXNlKCk7CisgICAgaWYgKHBsYXliYWNrU2Vzc2lv
bk1vZGVsKCkgJiYgKHJlYXNvbiA9PSBFeGl0RnVsbFNjcmVlblJlYXNvbjo6RG9uZUJ1dHRvblRh
cHBlZCB8fCByZWFzb24gPT0gRXhpdEZ1bGxTY3JlZW5SZWFzb246OlJlbW90ZUNvbnRyb2xTdG9w
RXZlbnRSZWNlaXZlZCkpCisgICAgICAgIHBsYXliYWNrU2Vzc2lvbk1vZGVsKCktPnBhdXNlKCk7
CiAKICAgICBCT09MIGZpbmlzaGVkID0gcmVhc29uID09IEV4aXRGdWxsU2NyZWVuUmVhc29uOjpE
b25lQnV0dG9uVGFwcGVkIHx8IHJlYXNvbiA9PSBFeGl0RnVsbFNjcmVlblJlYXNvbjo6UGluY2hH
ZXN0dXJlSGFuZGxlZDsKLSAgICB2aWRlb0Z1bGxzY3JlZW5Nb2RlbCgpLnJlcXVlc3RGdWxsc2Ny
ZWVuTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVOb25lLCBm
aW5pc2hlZCk7CisgICAgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbC0+cmVxdWVzdEZ1bGxzY3JlZW5N
b2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUsIGZpbmlz
aGVkKTsKIAogICAgIGlmICghbV93YXRjaGRvZ1RpbWVyLmlzQWN0aXZlKCkgJiYgIWlnbm9yZVdh
dGNoZG9nRm9yRGVidWdnaW5nKQogICAgICAgICBtX3dhdGNoZG9nVGltZXIuc3RhcnRPbmVTaG90
KGRlZmF1bHRXYXRjaGRvZ1RpbWVySW50ZXJ2YWwpOwpAQCAtMTYxNSw3ICsxNjcyLDggQEAgdm9p
ZCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZG9TZXR1cCgpCiAgICAgW3BsYXllckxh
eWVyIHNldE1vZGVsVmlkZW9MYXllckZyYW1lOm1vZGVsVmlkZW9MYXllckZyYW1lXTsKICAgICBb
cGxheWVyTGF5ZXIgc2V0VmlkZW9EaW1lbnNpb25zOltwbGF5ZXJDb250cm9sbGVyKCkgY29udGVu
dERpbWVuc2lvbnNdXTsKICAgICBwbGF5ZXJMYXllci5mdWxsc2NyZWVuSW50ZXJmYWNlID0gdGhp
czsKLSAgICB2aWRlb0Z1bGxzY3JlZW5Nb2RlbCgpLnNldFZpZGVvTGF5ZXJGcmFtZShtb2RlbFZp
ZGVvTGF5ZXJGcmFtZSk7CisgICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwpCisgICAgICAg
IG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwtPnNldFZpZGVvTGF5ZXJGcmFtZShtb2RlbFZpZGVvTGF5
ZXJGcmFtZSk7CiAKICAgICBpZiAoIW1fcGxheWVyVmlld0NvbnRyb2xsZXIpCiAgICAgICAgIG1f
cGxheWVyVmlld0NvbnRyb2xsZXIgPSBhZG9wdE5TKFtbV2ViQVZQbGF5ZXJWaWV3Q29udHJvbGxl
ciBhbGxvY10gaW5pdFdpdGhGdWxsc2NyZWVuSW50ZXJmYWNlOnRoaXNdKTsKQEAgLTE2MjcsNyAr
MTY4NSw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmRvU2V0dXAoKQog
ICAgIFtwbGF5ZXJDb250cm9sbGVyKCkgc2V0UGljdHVyZUluUGljdHVyZVBvc3NpYmxlOm1fYWxs
b3dzUGljdHVyZUluUGljdHVyZVBsYXliYWNrXTsKIAogI2lmIFBMQVRGT1JNKFdBVENIT1MpCi0g
ICAgbV92aWV3Q29udHJvbGxlciA9IHZpZGVvRnVsbHNjcmVlbk1vZGVsKCkuY3JlYXRlVmlkZW9G
dWxsc2NyZWVuVmlld0NvbnRyb2xsZXIobV9wbGF5ZXJWaWV3Q29udHJvbGxlci5nZXQoKS5hdlBs
YXllclZpZXdDb250cm9sbGVyKTsKKyAgICBtX3ZpZXdDb250cm9sbGVyID0gdmlkZW9GdWxsc2Ny
ZWVuTW9kZWwoKS0+Y3JlYXRlVmlkZW9GdWxsc2NyZWVuVmlld0NvbnRyb2xsZXIobV9wbGF5ZXJW
aWV3Q29udHJvbGxlci5nZXQoKS5hdlBsYXllclZpZXdDb250cm9sbGVyKTsKICNlbmRpZgogCiAg
ICAgaWYgKG1fdmlld0NvbnRyb2xsZXIpIHsKQEAgLTE4MzQsNyArMTg5Miw4IEBAIHZvaWQgVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldE1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1z
OjpWaWRlb0Z1bGxzY3JlCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fY3VycmVudE1vZGUuc2V0
TW9kZShtb2RlKTsKLSAgICB2aWRlb0Z1bGxzY3JlZW5Nb2RlbCgpLmZ1bGxzY3JlZW5Nb2RlQ2hh
bmdlZChtX2N1cnJlbnRNb2RlLm1vZGUoKSk7CisgICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTW9k
ZWwpCisgICAgICAgIG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwtPmZ1bGxzY3JlZW5Nb2RlQ2hhbmdl
ZChtX2N1cnJlbnRNb2RlLm1vZGUoKSk7CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlQVZLaXQ6OmNsZWFyTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVl
bk1vZGUgbW9kZSkKQEAgLTE4NDMsNyArMTkwMiw4IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQ6OmNsZWFyTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNj
CiAgICAgICAgIHJldHVybjsKIAogICAgIG1fY3VycmVudE1vZGUuY2xlYXJNb2RlKG1vZGUpOwot
ICAgIHZpZGVvRnVsbHNjcmVlbk1vZGVsKCkuZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKG1fY3VycmVu
dE1vZGUubW9kZSgpKTsKKyAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5Nb2RlbCkKKyAgICAgICAg
bV92aWRlb0Z1bGxzY3JlZW5Nb2RlbC0+ZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKG1fY3VycmVudE1v
ZGUubW9kZSgpKTsKIH0KIAogYm9vbCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6aXNQ
bGF5aW5nVmlkZW9JbkVuaGFuY2VkRnVsbHNjcmVlbigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQVZQbGF5ZXJDb250cm9sbGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQVZQbGF5ZXJDb250cm9sbGVyLmgKaW5kZXggMWU3OGFi
MDZmZTRiNDdiMTNkNjAzMDUwMWE0NTM0MTJkMmMyNjg2Mi4uYTQ1MzQ2Y2RkYzBmNDc1YTkxYTM4
OTdiNWFhMjYzYjdmODFjNzIyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1dlYkFWUGxheWVyQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9XZWJBVlBsYXllckNvbnRyb2xsZXIuaApAQCAtMjYsNyArMjYsNiBAQAogI2lmIFBMQVRG
T1JNKElPUykgJiYgSEFWRShBVktJVCkKIAogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9BVktpdFNQ
SS5oPgotI2ltcG9ydCA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgUGxheWJhY2tTZXNzaW9uTW9kZWw7CkBAIC00MCwxNCArMzksMTMgQEAgY2xhc3MgUGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ7CiBAaW50ZXJmYWNlIFdlYkFWUGxheWVyQ29udHJvbGxl
ciA6IE5TT2JqZWN0IHsKICAgICBXZWJBVk1lZGlhU2VsZWN0aW9uT3B0aW9uICpfY3VycmVudEF1
ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb247CiAgICAgV2ViQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiAq
X2N1cnJlbnRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb247Ci0gICAgUmVmUHRyPFdlYkNvcmU6
OlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0PiBfcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNl
OwogICAgIEJPT0wgX3BpY3R1cmVJblBpY3R1cmVJbnRlcnJ1cHRlZDsKICAgICBCT09MIF9tdXRl
ZDsKIH0KIAogQHByb3BlcnR5IChyZXRhaW4pIEFWUGxheWVyQ29udHJvbGxlciogcGxheWVyQ29u
dHJvbGxlclByb3h5OwotQHByb3BlcnR5IChyZWFkb25seSkgV2ViQ29yZTo6UGxheWJhY2tTZXNz
aW9uTW9kZWwqIGRlbGVnYXRlOwotQHByb3BlcnR5IFdlYkNvcmU6OlBsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZUFWS2l0KiBwbGF5YmFja1Nlc3Npb25JbnRlcmZhY2U7CitAcHJvcGVydHkgKGFzc2ln
bikgV2ViQ29yZTo6UGxheWJhY2tTZXNzaW9uTW9kZWwqIGRlbGVnYXRlOworQHByb3BlcnR5IChh
c3NpZ24pIFdlYkNvcmU6OlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0KiBwbGF5YmFja1Nl
c3Npb25JbnRlcmZhY2U7CiAKIEBwcm9wZXJ0eSAocmVhZG9ubHkpIEJPT0wgY2FuU2NhbkZvcndh
cmQ7CiBAcHJvcGVydHkgQk9PTCBjYW5TY2FuQmFja3dhcmQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQVZQbGF5ZXJDb250cm9sbGVyLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1dlYkFWUGxheWVyQ29udHJvbGxlci5tbQppbmRleCA2ZjI0YWIy
MWEwZWE1YTBlY2NmOTMxOWIzNmM0ZDExOTE0Y2NiOWE4Li4zNzIxODAwZTEwYjlmZjRhODEwNmFk
ZTVhYzEwMTUxZDAwZmEyYzc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvV2ViQVZQbGF5ZXJDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9XZWJBVlBsYXllckNvbnRyb2xsZXIubW0KQEAgLTk3LDIzICs5Nyw2IEBAIHN0YXRpYyBk
b3VibGUgV2ViQVZQbGF5ZXJDb250cm9sbGVyTGl2ZVN0cmVhbVNlZWthYmxlVGltZVJhbmdlTWlu
aW11bUR1cmF0aW9uID0KICAgICBbc3VwZXIgZGVhbGxvY107CiB9CiAKLUBkeW5hbWljIGRlbGVn
YXRlOwotLSAoV2ViQ29yZTo6UGxheWJhY2tTZXNzaW9uTW9kZWwqKWRlbGVnYXRlCi17Ci0gICAg
cmV0dXJuIF9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UgPyAmX3BsYXliYWNrU2Vzc2lvbkludGVy
ZmFjZS0+cGxheWJhY2tTZXNzaW9uTW9kZWwoKSA6IG51bGxwdHI7Ci19Ci0KLUBkeW5hbWljIHBs
YXliYWNrU2Vzc2lvbkludGVyZmFjZTsKLS0gKFdlYkNvcmU6OlBsYXliYWNrU2Vzc2lvbkludGVy
ZmFjZUFWS2l0KilwbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UKLXsKLSAgICByZXR1cm4gX3BsYXli
YWNrU2Vzc2lvbkludGVyZmFjZS5nZXQoKTsKLX0KLQotLSAodm9pZClzZXRQbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2U6KFdlYkNvcmU6OlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0KilwbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2UKLXsKLSAgICBfcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlID0g
cGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlOwotfQotCiAtIChBVlBsYXllciAqKXBsYXllcgogewog
ICAgIHJldHVybiBuaWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbQppbmRleCBiNzA1
YWIzYjZhNGQ4NDE4ZGEzOTQxZThmZGJmNzk5NGFiNGM2NWViLi5kNDNiODdjMGQ5NTIyMGExN2Y0
YzEwYmYyNDdkZGNiYTMwZDA5OGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0K
QEAgLTk5LDExICs5OSwxMSBAQCBjbGFzcyBWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4
dDsKIEBlbmQKIAogY2xhc3MgVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQgZmluYWwK
LSAgICA6IHB1YmxpYyBWaWRlb0Z1bGxzY3JlZW5Nb2RlbAotICAgICwgcHVibGljIFZpZGVvRnVs
bHNjcmVlbk1vZGVsQ2xpZW50Ci0gICAgLCBwdWJsaWMgVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2Jz
ZXJ2ZXIKKyAgICA6IHByaXZhdGUgVmlkZW9GdWxsc2NyZWVuTW9kZWwKKyAgICAsIHByaXZhdGUg
VmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQKKyAgICAsIHByaXZhdGUgVmlkZW9GdWxsc2NyZWVu
Q2hhbmdlT2JzZXJ2ZXIKICAgICAsIHByaXZhdGUgUGxheWJhY2tTZXNzaW9uTW9kZWwKLSAgICAs
IHB1YmxpYyBQbGF5YmFja1Nlc3Npb25Nb2RlbENsaWVudAorICAgICwgcHJpdmF0ZSBQbGF5YmFj
a1Nlc3Npb25Nb2RlbENsaWVudAogICAgICwgcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZp
ZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiB7CiAKIHB1YmxpYzoKQEAgLTExOCw5ICsx
MTgsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXF1ZXN0SGlkZUFuZEV4aXRGdWxsc2NyZWVuKCk7
CiAgICAgdm9pZCBpbnZhbGlkYXRlKCk7CiAKLSAgICB1c2luZyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDo6cmVmOwotICAgIHVzaW5nIFRocmVhZFNhZmVSZWZDb3VudGVkOjpkZXJlZjsKLQogcHJpdmF0
ZToKICAgICBWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dCgpIHsgfQogCkBAIC0xNDAs
OSArMTM3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHZpZGVvRGltZW5zaW9uc0NoYW5nZWQoY29u
c3QgRmxvYXRTaXplJikgb3ZlcnJpZGU7CiAKICAgICAvLyBQbGF5YmFja1Nlc3Npb25Nb2RlbAot
ICAgIHZvaWQgcmVmUGxheWJhY2tTZXNzaW9uTW9kZWwoKSBmaW5hbCB7IHJlZigpOyB9Ci0gICAg
dm9pZCBkZXJlZlBsYXliYWNrU2Vzc2lvbk1vZGVsKCkgZmluYWwgeyBkZXJlZigpOyB9Ci0gICAg
dm9pZCBhZGRDbGllbnQoV2Vha1B0cjxQbGF5YmFja1Nlc3Npb25Nb2RlbENsaWVudD4mJikgb3Zl
cnJpZGU7CisgICAgdm9pZCBhZGRDbGllbnQoUGxheWJhY2tTZXNzaW9uTW9kZWxDbGllbnQmKSBv
dmVycmlkZTsKICAgICB2b2lkIHJlbW92ZUNsaWVudChQbGF5YmFja1Nlc3Npb25Nb2RlbENsaWVu
dCYpIG92ZXJyaWRlOwogICAgIHZvaWQgcGxheSgpIG92ZXJyaWRlOwogICAgIHZvaWQgcGF1c2Uo
KSBvdmVycmlkZTsKQEAgLTE5Niw5ICsxOTEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgdm9sdW1l
Q2hhbmdlZChkb3VibGUpIG92ZXJyaWRlOwogCiAgICAgLy8gVmlkZW9GdWxsc2NyZWVuTW9kZWwK
LSAgICB2b2lkIHJlZlZpZGVvRnVsbHNjcmVlbk1vZGVsKCkgZmluYWwgeyByZWYoKTsgfQotICAg
IHZvaWQgZGVyZWZWaWRlb0Z1bGxzY3JlZW5Nb2RlbCgpIGZpbmFsIHsgZGVyZWYoKTsgfQotICAg
IHZvaWQgYWRkQ2xpZW50KFdlYWtQdHI8VmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQ+JiYpIG92
ZXJyaWRlOworICAgIHZvaWQgYWRkQ2xpZW50KFZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50Jikg
b3ZlcnJpZGU7CiAgICAgdm9pZCByZW1vdmVDbGllbnQoVmlkZW9GdWxsc2NyZWVuTW9kZWxDbGll
bnQmKSBvdmVycmlkZTsKICAgICB2b2lkIHJlcXVlc3RGdWxsc2NyZWVuTW9kZShIVE1MTWVkaWFF
bGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUsIGJvb2wgZmluaXNoZWRXaXRoTWVkaWEg
PSBmYWxzZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRWaWRlb0xheWVyRnJhbWUoRmxvYXRSZWN0
KSBvdmVycmlkZTsKQEAgLTIxNywxNyArMjEwLDE0IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxs
RXhpdFBpY3R1cmVJblBpY3R1cmUoKSBmaW5hbDsKICAgICB2b2lkIGRpZEV4aXRQaWN0dXJlSW5Q
aWN0dXJlKCkgZmluYWw7CiAKLSAgICBWZWN0b3I8V2Vha1B0cjxQbGF5YmFja1Nlc3Npb25Nb2Rl
bENsaWVudD4+IG1fcGxheWJhY2tDbGllbnRzOwotICAgIFZlY3RvcjxXZWFrUHRyPFZpZGVvRnVs
bHNjcmVlbk1vZGVsQ2xpZW50Pj4gbV9mdWxsc2NyZWVuQ2xpZW50czsKKyAgICBIYXNoU2V0PFBs
YXliYWNrU2Vzc2lvbk1vZGVsQ2xpZW50Kj4gbV9wbGF5YmFja0NsaWVudHM7CisgICAgSGFzaFNl
dDxWaWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVudCo+IG1fZnVsbHNjcmVlbkNsaWVudHM7CiAgICAg
UmVmUHRyPFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0PiBtX2ludGVyZmFjZTsKICAgICBS
ZWZQdHI8VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ+IG1fZnVsbHNjcmVlbk1vZGVs
OwogICAgIFJlZlB0cjxQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudD4gbV9wbGF5YmFj
a01vZGVsOwogICAgIFJlZlB0cjxIVE1MVmlkZW9FbGVtZW50PiBtX3ZpZGVvRWxlbWVudDsKICAg
ICBSZXRhaW5QdHI8VUlWaWV3PiBtX3ZpZGVvRnVsbHNjcmVlblZpZXc7CiAgICAgUmV0YWluUHRy
PFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXI+IG1fY29udHJvbGxlcjsKLSAgICBXZWFrUHRy
RmFjdG9yeTxQbGF5YmFja1Nlc3Npb25Nb2RlbENsaWVudD4gbV9wbGF5YmFja0NsaWVudEZhY3Rv
cnk7Ci0gICAgV2Vha1B0ckZhY3Rvcnk8VmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQ+IG1fZnVs
bHNjcmVlbk1vZGVsQ2xpZW50RmFjdG9yeTsKLSAgICBXZWFrUHRyRmFjdG9yeTxWaWRlb0Z1bGxz
Y3JlZW5DaGFuZ2VPYnNlcnZlcj4gbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXJGYWN0b3J5Owog
fTsKIAogI3ByYWdtYSBtYXJrIFZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyCkBAIC0zMzEs
NiArMzIxLDggQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6ZGlkRXhp
dEZ1bGxzY3JlZW4oKQogdm9pZCBWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6ZGlk
Q2xlYW51cEZ1bGxzY3JlZW4oKQogewogICAgIEFTU0VSVChpc1VJVGhyZWFkKCkpOworICAgIG1f
aW50ZXJmYWNlLT5zZXRWaWRlb0Z1bGxzY3JlZW5Nb2RlbChudWxscHRyKTsKKyAgICBtX2ludGVy
ZmFjZS0+c2V0VmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIobnVsbHB0cik7CiAgICAgbV9p
bnRlcmZhY2UgPSBudWxscHRyOwogICAgIG1fdmlkZW9GdWxsc2NyZWVuVmlldyA9IG5pbDsKIApA
QCAtMzM5LDcgKzMzMSw2IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6
OmRpZENsZWFudXBGdWxsc2NyZWVuKCkKICAgICAgICAgbV9mdWxsc2NyZWVuTW9kZWwtPnNldFZp
ZGVvRWxlbWVudChudWxscHRyKTsKICAgICAgICAgbV9wbGF5YmFja01vZGVsLT5zZXRNZWRpYUVs
ZW1lbnQobnVsbHB0cik7CiAgICAgICAgIG1fcGxheWJhY2tNb2RlbC0+cmVtb3ZlQ2xpZW50KCp0
aGlzKTsKLSAgICAgICAgbV9wbGF5YmFja01vZGVsID0gbnVsbHB0cjsKICAgICAgICAgbV9mdWxs
c2NyZWVuTW9kZWwtPnJlbW92ZUNsaWVudCgqdGhpcyk7CiAgICAgICAgIG1fZnVsbHNjcmVlbk1v
ZGVsID0gbnVsbHB0cjsKICAgICAgICAgbV92aWRlb0VsZW1lbnQgPSBudWxscHRyOwpAQCAtNTU0
LDE2ICs1NDUsMTYgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6dm9s
dW1lQ2hhbmdlZChkb3VibGUgdm9sdW1lKQogfQogI3ByYWdtYSBtYXJrIFZpZGVvRnVsbHNjcmVl
bk1vZGVsCiAKLXZvaWQgVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmFkZENsaWVu
dChXZWFrUHRyPFZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50PiYmIGNsaWVudCkKK3ZvaWQgVmlk
ZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmFkZENsaWVudChWaWRlb0Z1bGxzY3JlZW5N
b2RlbENsaWVudCYgY2xpZW50KQogewotICAgIEFTU0VSVCghbV9mdWxsc2NyZWVuQ2xpZW50cy5j
b250YWlucyhjbGllbnQpKTsKLSAgICBtX2Z1bGxzY3JlZW5DbGllbnRzLmFwcGVuZChXVEZNb3Zl
KGNsaWVudCkpOworICAgIEFTU0VSVCghbV9mdWxsc2NyZWVuQ2xpZW50cy5jb250YWlucygmY2xp
ZW50KSk7CisgICAgbV9mdWxsc2NyZWVuQ2xpZW50cy5hZGQoJmNsaWVudCk7CiB9CiAKIHZvaWQg
VmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnJlbW92ZUNsaWVudChWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbENsaWVudCYgY2xpZW50KQogewogICAgIEFTU0VSVChtX2Z1bGxzY3JlZW5DbGll
bnRzLmNvbnRhaW5zKCZjbGllbnQpKTsKLSAgICBtX2Z1bGxzY3JlZW5DbGllbnRzLnJlbW92ZUFs
bCgmY2xpZW50KTsKKyAgICBtX2Z1bGxzY3JlZW5DbGllbnRzLnJlbW92ZSgmY2xpZW50KTsKIH0K
IAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6cmVxdWVzdEZ1bGxzY3Jl
ZW5Nb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2RlLCBi
b29sIGZpbmlzaGVkV2l0aE1lZGlhKQpAQCAtNjUzLDM1ICs2NDQsMzUgQEAgYm9vbCBWaWRlb0Z1
bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6aXNQaWN0dXJlSW5QaWN0dXJlU3VwcG9ydGVkKCkg
Y29uc3QKIHZvaWQgVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OndpbGxFbnRlclBp
Y3R1cmVJblBpY3R1cmUoKQogewogICAgIEFTU0VSVChpc1VJVGhyZWFkKCkpOwotICAgIGZvciAo
YXV0byYgY2xpZW50IDogbV9mdWxsc2NyZWVuQ2xpZW50cykKKyAgICBmb3IgKGF1dG8qIGNsaWVu
dCA6IG1fZnVsbHNjcmVlbkNsaWVudHMpCiAgICAgICAgIGNsaWVudC0+d2lsbEVudGVyUGljdHVy
ZUluUGljdHVyZSgpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0
OjpkaWRFbnRlclBpY3R1cmVJblBpY3R1cmUoKQogewogICAgIEFTU0VSVChpc1VJVGhyZWFkKCkp
OwotICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9mdWxsc2NyZWVuQ2xpZW50cykKKyAgICBmb3Ig
KGF1dG8qIGNsaWVudCA6IG1fZnVsbHNjcmVlbkNsaWVudHMpCiAgICAgICAgIGNsaWVudC0+ZGlk
RW50ZXJQaWN0dXJlSW5QaWN0dXJlKCk7CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlckNvbnRleHQ6OmZhaWxlZFRvRW50ZXJQaWN0dXJlSW5QaWN0dXJlKCkKIHsKICAgICBBU1NF
UlQoaXNVSVRocmVhZCgpKTsKLSAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fZnVsbHNjcmVlbkNs
aWVudHMpCisgICAgZm9yIChhdXRvKiBjbGllbnQgOiBtX2Z1bGxzY3JlZW5DbGllbnRzKQogICAg
ICAgICBjbGllbnQtPmZhaWxlZFRvRW50ZXJQaWN0dXJlSW5QaWN0dXJlKCk7CiB9CiAKIHZvaWQg
VmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OndpbGxFeGl0UGljdHVyZUluUGljdHVy
ZSgpCiB7CiAgICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7Ci0gICAgZm9yIChhdXRvJiBjbGllbnQg
OiBtX2Z1bGxzY3JlZW5DbGllbnRzKQorICAgIGZvciAoYXV0byogY2xpZW50IDogbV9mdWxsc2Ny
ZWVuQ2xpZW50cykKICAgICAgICAgY2xpZW50LT53aWxsRXhpdFBpY3R1cmVJblBpY3R1cmUoKTsK
IH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6ZGlkRXhpdFBpY3R1
cmVJblBpY3R1cmUoKQogewogICAgIEFTU0VSVChpc1VJVGhyZWFkKCkpOwotICAgIGZvciAoYXV0
byYgY2xpZW50IDogbV9mdWxsc2NyZWVuQ2xpZW50cykKKyAgICBmb3IgKGF1dG8qIGNsaWVudCA6
IG1fZnVsbHNjcmVlbkNsaWVudHMpCiAgICAgICAgIGNsaWVudC0+ZGlkRXhpdFBpY3R1cmVJblBp
Y3R1cmUoKTsKIH0KIApAQCAtNjkzLDE2ICs2ODQsMTYgQEAgRmxvYXRTaXplIFZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXJDb250ZXh0Ojp2aWRlb0RpbWVuc2lvbnMoKSBjb25zdAogCiAjcHJhZ21h
IG1hcmsgLSBQbGF5YmFja1Nlc3Npb25Nb2RlbAogCi12b2lkIFZpZGVvRnVsbHNjcmVlbkNvbnRy
b2xsZXJDb250ZXh0OjphZGRDbGllbnQoV2Vha1B0cjxQbGF5YmFja1Nlc3Npb25Nb2RlbENsaWVu
dD4mJiBjbGllbnQpCit2b2lkIFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjphZGRD
bGllbnQoUGxheWJhY2tTZXNzaW9uTW9kZWxDbGllbnQmIGNsaWVudCkKIHsKLSAgICBBU1NFUlQo
IW1fcGxheWJhY2tDbGllbnRzLmNvbnRhaW5zKGNsaWVudCkpOwotICAgIG1fcGxheWJhY2tDbGll
bnRzLmFwcGVuZChXVEZNb3ZlKGNsaWVudCkpOworICAgIEFTU0VSVCghbV9wbGF5YmFja0NsaWVu
dHMuY29udGFpbnMoJmNsaWVudCkpOworICAgIG1fcGxheWJhY2tDbGllbnRzLmFkZCgmY2xpZW50
KTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6cmVtb3ZlQ2xp
ZW50KFBsYXliYWNrU2Vzc2lvbk1vZGVsQ2xpZW50JiBjbGllbnQpCiB7CiAgICAgQVNTRVJUKG1f
cGxheWJhY2tDbGllbnRzLmNvbnRhaW5zKCZjbGllbnQpKTsKLSAgICBtX3BsYXliYWNrQ2xpZW50
cy5yZW1vdmVBbGwoJmNsaWVudCk7CisgICAgbV9wbGF5YmFja0NsaWVudHMucmVtb3ZlKCZjbGll
bnQpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpwbGF5KCkK
QEAgLTk2MywxMSArOTU0LDExIEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRl
eHQ6OnNldFVwRnVsbHNjcmVlbihIVE1MVmlkZW9FbGVtZW50JiB2aWRlb0VsCiAgICAgUmV0YWlu
UHRyPFVJVmlldz4gdmlld1JlZiA9IHZpZXc7CiAgICAgbV92aWRlb0VsZW1lbnQgPSAmdmlkZW9F
bGVtZW50OwogICAgIG1fcGxheWJhY2tNb2RlbCA9IFBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFF
bGVtZW50OjpjcmVhdGUoKTsKLSAgICBtX3BsYXliYWNrTW9kZWwtPmFkZENsaWVudChtX3BsYXli
YWNrQ2xpZW50RmFjdG9yeS5jcmVhdGVXZWFrUHRyKCp0aGlzKSk7CisgICAgbV9wbGF5YmFja01v
ZGVsLT5hZGRDbGllbnQoKnRoaXMpOwogICAgIG1fcGxheWJhY2tNb2RlbC0+c2V0TWVkaWFFbGVt
ZW50KG1fdmlkZW9FbGVtZW50LmdldCgpKTsKIAogICAgIG1fZnVsbHNjcmVlbk1vZGVsID0gVmlk
ZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OmNyZWF0ZSgpOwotICAgIG1fZnVsbHNjcmVl
bk1vZGVsLT5hZGRDbGllbnQobV9mdWxsc2NyZWVuTW9kZWxDbGllbnRGYWN0b3J5LmNyZWF0ZVdl
YWtQdHIoKnRoaXMpKTsKKyAgICBtX2Z1bGxzY3JlZW5Nb2RlbC0+YWRkQ2xpZW50KCp0aGlzKTsK
ICAgICBtX2Z1bGxzY3JlZW5Nb2RlbC0+c2V0VmlkZW9FbGVtZW50KG1fdmlkZW9FbGVtZW50Lmdl
dCgpKTsKIAogICAgIGJvb2wgYWxsb3dzUGljdHVyZUluUGljdHVyZSA9IG1fdmlkZW9FbGVtZW50
LT53ZWJraXRTdXBwb3J0c1ByZXNlbnRhdGlvbk1vZGUoSFRNTFZpZGVvRWxlbWVudDo6VmlkZW9Q
cmVzZW50YXRpb25Nb2RlOjpQaWN0dXJlSW5QaWN0dXJlKTsKQEAgLTk4MCw4ICs5NzEsMTAgQEAg
dm9pZCBWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6c2V0VXBGdWxsc2NyZWVuKEhU
TUxWaWRlb0VsZW1lbnQmIHZpZGVvRWwKICAgICAgICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7CiAK
ICAgICAgICAgUmVmPFBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0PiBzZXNzaW9uSW50ZXJm
YWNlID0gUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OmNyZWF0ZSgqdGhpcyk7Ci0gICAg
ICAgIG1faW50ZXJmYWNlID0gVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmNyZWF0ZShz
ZXNzaW9uSW50ZXJmYWNlLmdldCgpLCAqdGhpcyk7Ci0gICAgICAgIG1faW50ZXJmYWNlLT5zZXRW
aWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcihtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlckZh
Y3RvcnkuY3JlYXRlV2Vha1B0cigqdGhpcykpOworICAgICAgICBtX2ludGVyZmFjZSA9IFZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpjcmVhdGUoc2Vzc2lvbkludGVyZmFjZS5nZXQoKSk7
CisgICAgICAgIG1faW50ZXJmYWNlLT5zZXRWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcih0
aGlzKTsKKyAgICAgICAgbV9pbnRlcmZhY2UtPnNldFZpZGVvRnVsbHNjcmVlbk1vZGVsKHRoaXMp
OworICAgICAgICBtX2ludGVyZmFjZS0+c2V0VmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIo
dGhpcyk7CiAKICAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5WaWV3ID0gYWRvcHROUyhbYWxsb2NV
SVZpZXdJbnN0YW5jZSgpIGluaXRdKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1BsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1BsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy5oCmluZGV4IDQzOWExOWVh
NmVmYjkwZWU1OTg5ZmQ4OTY3YThiNjEzN2E5OTkzMDQuLmU3ZGIzOTdjY2U0MGZkNWJkY2M0ZjVh
ZjI2ZTdiZjMyNzQxOWY2MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9QbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjLmgKQEAgLTQ1LDkgKzQ1LDkgQEAg
Y2xhc3MgV0VCQ09SRV9FWFBPUlQgUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjIGZpbmFsCiAg
ICAgLCBwdWJsaWMgUGxheWJhY2tTZXNzaW9uTW9kZWxDbGllbnQKICAgICAsIHB1YmxpYyBSZWZD
b3VudGVkPFBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYz4gewogcHVibGljOgotICAgIHN0YXRp
YyBSZWY8UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjPiBjcmVhdGUoUmVmPFBsYXliYWNrU2Vz
c2lvbk1vZGVsPiYmKTsKLSAgICB2aXJ0dWFsIH5QbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMo
KSA9IGRlZmF1bHQ7Ci0gICAgUGxheWJhY2tTZXNzaW9uTW9kZWwmIHBsYXliYWNrU2Vzc2lvbk1v
ZGVsKCkgY29uc3Q7CisgICAgc3RhdGljIFJlZjxQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM+
IGNyZWF0ZShQbGF5YmFja1Nlc3Npb25Nb2RlbCYpOworICAgIHZpcnR1YWwgflBsYXliYWNrU2Vz
c2lvbkludGVyZmFjZU1hYygpOworICAgIFBsYXliYWNrU2Vzc2lvbk1vZGVsKiBwbGF5YmFja1Nl
c3Npb25Nb2RlbCgpIGNvbnN0OwogCiAgICAgLy8gUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlCiAg
ICAgdm9pZCByZXNldE1lZGlhU3RhdGUoKSBmaW5hbDsKQEAgLTY0LDYgKzY0LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgZXh0ZXJuYWxQbGF5YmFja0NoYW5nZWQoYm9vbCAvKiBlbmFibGVkICovLCBQ
bGF5YmFja1Nlc3Npb25Nb2RlbDo6RXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUsIGNvbnN0IFN0
cmluZyYgLyogbG9jYWxpemVkRGV2aWNlTmFtZSAqLykgZmluYWw7CiAgICAgdm9pZCBpc1BpY3R1
cmVJblBpY3R1cmVTdXBwb3J0ZWRDaGFuZ2VkKGJvb2wpIGZpbmFsOwogCisgICAgdm9pZCBpbnZh
bGlkYXRlKCk7CiAgICAgdm9pZCBlbnN1cmVDb250cm9sc01hbmFnZXIoKTsKICNpZiBFTkFCTEUo
V0VCX1BMQVlCQUNLX0NPTlRST0xTX01BTkFHRVIpCiAgICAgdm9pZCBzZXRQbGF5QmFja0NvbnRy
b2xzTWFuYWdlcihXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciAqKTsKQEAgLTc1LDkgKzc2LDgg
QEAgcHVibGljOgogICAgIHZvaWQgZW5kU2NydWJiaW5nKCk7CiAKIHByaXZhdGU6Ci0gICAgUGxh
eWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjKFJlZjxQbGF5YmFja1Nlc3Npb25Nb2RlbD4mJik7Ci0g
ICAgUmVmPFBsYXliYWNrU2Vzc2lvbk1vZGVsPiBtX3BsYXliYWNrU2Vzc2lvbk1vZGVsOwotICAg
IFdlYWtQdHJGYWN0b3J5PFBsYXliYWNrU2Vzc2lvbk1vZGVsQ2xpZW50PiBtX3dlYWtQdHJGYWN0
b3J5OworICAgIFBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYyhQbGF5YmFja1Nlc3Npb25Nb2Rl
bCYpOworICAgIFBsYXliYWNrU2Vzc2lvbk1vZGVsKiBtX3BsYXliYWNrU2Vzc2lvbk1vZGVsIHsg
bnVsbHB0ciB9OwogI2lmIEVOQUJMRShXRUJfUExBWUJBQ0tfQ09OVFJPTFNfTUFOQUdFUikKICAg
ICBXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciAqbV9wbGF5YmFja0NvbnRyb2xzTWFuYWdlciAg
eyBudWxscHRyIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Q
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjLm1tCmluZGV4IGI4YWE5M2ExOGVkNGJmMzc0
YmM3ZDdjNDY2ZTY1NmU3YmZmZTc3ZDQuLmI4NjI2NmQ0ZTMzZDAwN2JmZDc4YTZmZTUzM2M3ZjUz
ODZkMzkzOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF5YmFj
a1Nlc3Npb25JbnRlcmZhY2VNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1BsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy5tbQpAQCAtNDQsMTggKzQ0LDI0IEBAIFNPRlRf
TElOS19DTEFTU19PUFRJT05BTChBVktpdCwgQVZWYWx1ZVRpbWluZykKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1SZWY8UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjPiBQbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2VNYWM6OmNyZWF0ZShSZWY8UGxheWJhY2tTZXNzaW9uTW9kZWw+JiYgbW9kZWwp
CitSZWY8UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjPiBQbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2VNYWM6OmNyZWF0ZShQbGF5YmFja1Nlc3Npb25Nb2RlbCYgbW9kZWwpCiB7Ci0gICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjKFdURk1vdmUobW9kZWwp
KSk7CisgICAgYXV0byBpbnRlcmZhY2UgPSBhZG9wdFJlZigqbmV3IFBsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZU1hYyhtb2RlbCkpOworICAgIG1vZGVsLmFkZENsaWVudChpbnRlcmZhY2UpOworICAg
IHJldHVybiBpbnRlcmZhY2U7CiB9CiAKLVBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzo6UGxh
eWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjKFJlZjxQbGF5YmFja1Nlc3Npb25Nb2RlbD4mJiBtb2Rl
bCkKLSAgICA6IG1fcGxheWJhY2tTZXNzaW9uTW9kZWwoV1RGTW92ZShtb2RlbCkpCitQbGF5YmFj
a1Nlc3Npb25JbnRlcmZhY2VNYWM6OlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYyhQbGF5YmFj
a1Nlc3Npb25Nb2RlbCYgbW9kZWwpCisgICAgOiBtX3BsYXliYWNrU2Vzc2lvbk1vZGVsKCZtb2Rl
bCkKIHsKLSAgICBwbGF5YmFja1Nlc3Npb25Nb2RlbCgpLmFkZENsaWVudChtX3dlYWtQdHJGYWN0
b3J5LmNyZWF0ZVdlYWtQdHIoKnRoaXMpKTsKIH0KIAotUGxheWJhY2tTZXNzaW9uTW9kZWwmIFBs
YXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzo6cGxheWJhY2tTZXNzaW9uTW9kZWwoKSBjb25zdAor
UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjOjp+UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFj
KCkKK3sKKyAgICBpbnZhbGlkYXRlKCk7Cit9CisKK1BsYXliYWNrU2Vzc2lvbk1vZGVsKiBQbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6OnBsYXliYWNrU2Vzc2lvbk1vZGVsKCkgY29uc3QKIHsK
ICAgICByZXR1cm4gbV9wbGF5YmFja1Nlc3Npb25Nb2RlbDsKIH0KQEAgLTk2LDcgKzEwMiw3IEBA
IHZvaWQgUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjOjpyYXRlQ2hhbmdlZChib29sIGlzUGxh
eWluZywgZmxvYXQgcGxheWJhY2tSYXRlCiAgICAgV2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIq
IGNvbnRyb2xzTWFuYWdlciA9IHBsYXlCYWNrQ29udHJvbHNNYW5hZ2VyKCk7CiAgICAgW2NvbnRy
b2xzTWFuYWdlciBzZXRSYXRlOmlzUGxheWluZyA/IHBsYXliYWNrUmF0ZSA6IDAuXTsKICAgICBb
Y29udHJvbHNNYW5hZ2VyIHNldFBsYXlpbmc6aXNQbGF5aW5nXTsKLSAgICB1cGRhdGVQbGF5YmFj
a0NvbnRyb2xzTWFuYWdlclRpbWluZyhwbGF5YmFja1Nlc3Npb25Nb2RlbCgpLmN1cnJlbnRUaW1l
KCksIFtbTlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5mb10gc3lzdGVtVXB0aW1lXSwgcGxheWJhY2tS
YXRlLCBpc1BsYXlpbmcpOworICAgIHVwZGF0ZVBsYXliYWNrQ29udHJvbHNNYW5hZ2VyVGltaW5n
KG1fcGxheWJhY2tTZXNzaW9uTW9kZWwgPyBtX3BsYXliYWNrU2Vzc2lvbk1vZGVsLT5jdXJyZW50
VGltZSgpIDogMCwgW1tOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXSBzeXN0ZW1VcHRpbWVdLCBw
bGF5YmFja1JhdGUsIGlzUGxheWluZyk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShpc1BsYXlp
bmcpOwogICAgIFVOVVNFRF9QQVJBTShwbGF5YmFja1JhdGUpOwpAQCAtMTA2LDE0ICsxMTIsMTQg
QEAgdm9pZCBQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6OnJhdGVDaGFuZ2VkKGJvb2wgaXNQ
bGF5aW5nLCBmbG9hdCBwbGF5YmFja1JhdGUKIHZvaWQgUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNl
TWFjOjpiZWdpblNjcnViYmluZygpCiB7CiAjaWYgRU5BQkxFKFdFQl9QTEFZQkFDS19DT05UUk9M
U19NQU5BR0VSKQotICAgIHVwZGF0ZVBsYXliYWNrQ29udHJvbHNNYW5hZ2VyVGltaW5nKHBsYXli
YWNrU2Vzc2lvbk1vZGVsKCkuY3VycmVudFRpbWUoKSwgW1tOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJ
bmZvXSBzeXN0ZW1VcHRpbWVdLCAwLCBmYWxzZSk7CisgICAgdXBkYXRlUGxheWJhY2tDb250cm9s
c01hbmFnZXJUaW1pbmcobV9wbGF5YmFja1Nlc3Npb25Nb2RlbCA/IG1fcGxheWJhY2tTZXNzaW9u
TW9kZWwtPmN1cnJlbnRUaW1lKCkgOiAwLCBbW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dIHN5
c3RlbVVwdGltZV0sIDAsIGZhbHNlKTsKICNlbmRpZgotICAgIHBsYXliYWNrU2Vzc2lvbk1vZGVs
KCkuYmVnaW5TY3J1YmJpbmcoKTsKKyAgICBwbGF5YmFja1Nlc3Npb25Nb2RlbCgpLT5iZWdpblNj
cnViYmluZygpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzo6ZW5kU2Ny
dWJiaW5nKCkKIHsKLSAgICBwbGF5YmFja1Nlc3Npb25Nb2RlbCgpLmVuZFNjcnViYmluZygpOwor
ICAgIHBsYXliYWNrU2Vzc2lvbk1vZGVsKCktPmVuZFNjcnViYmluZygpOwogfQogCiAjaWYgRU5B
QkxFKFdFQl9QTEFZQkFDS19DT05UUk9MU19NQU5BR0VSKQpAQCAtMTkyLDYgKzE5OCwxNSBAQCB2
b2lkIFBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzo6ZXh0ZXJuYWxQbGF5YmFja0NoYW5nZWQo
Ym9vbCwgUGxheWJhY2tTZXNzaW9uTQogI2VuZGlmCiB9CiAKK3ZvaWQgUGxheWJhY2tTZXNzaW9u
SW50ZXJmYWNlTWFjOjppbnZhbGlkYXRlKCkKK3sKKyAgICBpZiAoIW1fcGxheWJhY2tTZXNzaW9u
TW9kZWwpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcGxheWJhY2tTZXNzaW9uTW9kZWwtPnJl
bW92ZUNsaWVudCgqdGhpcyk7CisgICAgbV9wbGF5YmFja1Nlc3Npb25Nb2RlbCA9IG51bGxwdHI7
Cit9CisKIHZvaWQgUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjOjplbnN1cmVDb250cm9sc01h
bmFnZXIoKQogewogI2lmIEVOQUJMRShXRUJfUExBWUJBQ0tfQ09OVFJPTFNfTUFOQUdFUikKQEAg
LTIxMCwyNyArMjI1LDMyIEBAIHZvaWQgUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjOjpzZXRQ
bGF5QmFja0NvbnRyb2xzTWFuYWdlcihXZWJQbGF5YmFja0NvbnRyb2xzCiB7CiAgICAgbV9wbGF5
YmFja0NvbnRyb2xzTWFuYWdlciA9IG1hbmFnZXI7CiAKLSAgICBpZiAoIW1hbmFnZXIpCisgICAg
aWYgKCFtYW5hZ2VyIHx8ICFtX3BsYXliYWNrU2Vzc2lvbk1vZGVsKQogICAgICAgICByZXR1cm47
CiAKICAgICBOU1RpbWVJbnRlcnZhbCBhbmNob3JUaW1lU3RhbXAgPSAhW21hbmFnZXIgcmF0ZV0g
PyBOQU4gOiBbW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dIHN5c3RlbVVwdGltZV07Ci0gICAg
bWFuYWdlci50aW1pbmcgPSBbZ2V0QVZWYWx1ZVRpbWluZ0NsYXNzKCkgdmFsdWVUaW1pbmdXaXRo
QW5jaG9yVmFsdWU6cGxheWJhY2tTZXNzaW9uTW9kZWwoKS5jdXJyZW50VGltZSgpIGFuY2hvclRp
bWVTdGFtcDphbmNob3JUaW1lU3RhbXAgcmF0ZTowXTsKLSAgICBkb3VibGUgZHVyYXRpb24gPSBw
bGF5YmFja1Nlc3Npb25Nb2RlbCgpLmR1cmF0aW9uKCk7CisgICAgbWFuYWdlci50aW1pbmcgPSBb
Z2V0QVZWYWx1ZVRpbWluZ0NsYXNzKCkgdmFsdWVUaW1pbmdXaXRoQW5jaG9yVmFsdWU6bV9wbGF5
YmFja1Nlc3Npb25Nb2RlbC0+Y3VycmVudFRpbWUoKSBhbmNob3JUaW1lU3RhbXA6YW5jaG9yVGlt
ZVN0YW1wIHJhdGU6MF07CisgICAgZG91YmxlIGR1cmF0aW9uID0gbV9wbGF5YmFja1Nlc3Npb25N
b2RlbC0+ZHVyYXRpb24oKTsKICAgICBtYW5hZ2VyLmNvbnRlbnREdXJhdGlvbiA9IGR1cmF0aW9u
OwogICAgIG1hbmFnZXIuaGFzRW5hYmxlZEF1ZGlvID0gZHVyYXRpb24gPiAwOwogICAgIG1hbmFn
ZXIuaGFzRW5hYmxlZFZpZGVvID0gZHVyYXRpb24gPiAwOwotICAgIG1hbmFnZXIucmF0ZSA9IHBs
YXliYWNrU2Vzc2lvbk1vZGVsKCkuaXNQbGF5aW5nKCkgPyBwbGF5YmFja1Nlc3Npb25Nb2RlbCgp
LnBsYXliYWNrUmF0ZSgpIDogMC47Ci0gICAgbWFuYWdlci5zZWVrYWJsZVRpbWVSYW5nZXMgPSB0
aW1lUmFuZ2VzVG9BcnJheShwbGF5YmFja1Nlc3Npb25Nb2RlbCgpLnNlZWthYmxlUmFuZ2VzKCkp
LmdldCgpOworICAgIG1hbmFnZXIucmF0ZSA9IG1fcGxheWJhY2tTZXNzaW9uTW9kZWwtPmlzUGxh
eWluZygpID8gbV9wbGF5YmFja1Nlc3Npb25Nb2RlbC0+cGxheWJhY2tSYXRlKCkgOiAwLjsKKyAg
ICBtYW5hZ2VyLnNlZWthYmxlVGltZVJhbmdlcyA9IHRpbWVSYW5nZXNUb0FycmF5KG1fcGxheWJh
Y2tTZXNzaW9uTW9kZWwtPnNlZWthYmxlUmFuZ2VzKCkpLmdldCgpOwogICAgIG1hbmFnZXIuY2Fu
VG9nZ2xlUGxheWJhY2sgPSBZRVM7Ci0gICAgbWFuYWdlci5wbGF5aW5nID0gcGxheWJhY2tTZXNz
aW9uTW9kZWwoKS5pc1BsYXlpbmcoKTsKLSAgICBbbWFuYWdlciBzZXRBdWRpb01lZGlhU2VsZWN0
aW9uT3B0aW9uczpwbGF5YmFja1Nlc3Npb25Nb2RlbCgpLmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRp
b25zKCkgd2l0aFNlbGVjdGVkSW5kZXg6c3RhdGljX2Nhc3Q8TlNVSW50ZWdlcj4ocGxheWJhY2tT
ZXNzaW9uTW9kZWwoKS5hdWRpb01lZGlhU2VsZWN0ZWRJbmRleCgpKV07Ci0gICAgW21hbmFnZXIg
c2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uczpwbGF5YmFja1Nlc3Npb25Nb2RlbCgpLmxl
Z2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoKSB3aXRoU2VsZWN0ZWRJbmRleDpzdGF0aWNfY2Fz
dDxOU1VJbnRlZ2VyPihwbGF5YmFja1Nlc3Npb25Nb2RlbCgpLmxlZ2libGVNZWRpYVNlbGVjdGVk
SW5kZXgoKSldOworICAgIG1hbmFnZXIucGxheWluZyA9IG1fcGxheWJhY2tTZXNzaW9uTW9kZWwt
PmlzUGxheWluZygpOworICAgIFttYW5hZ2VyIHNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25z
Om1fcGxheWJhY2tTZXNzaW9uTW9kZWwtPmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKCkgd2l0
aFNlbGVjdGVkSW5kZXg6c3RhdGljX2Nhc3Q8TlNVSW50ZWdlcj4obV9wbGF5YmFja1Nlc3Npb25N
b2RlbC0+YXVkaW9NZWRpYVNlbGVjdGVkSW5kZXgoKSldOworICAgIFttYW5hZ2VyIHNldExlZ2li
bGVNZWRpYVNlbGVjdGlvbk9wdGlvbnM6bV9wbGF5YmFja1Nlc3Npb25Nb2RlbC0+bGVnaWJsZU1l
ZGlhU2VsZWN0aW9uT3B0aW9ucygpIHdpdGhTZWxlY3RlZEluZGV4OnN0YXRpY19jYXN0PE5TVUlu
dGVnZXI+KG1fcGxheWJhY2tTZXNzaW9uTW9kZWwtPmxlZ2libGVNZWRpYVNlbGVjdGVkSW5kZXgo
KSldOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzo6dXBkYXRlUGxheWJh
Y2tDb250cm9sc01hbmFnZXJDYW5Ub2dnbGVQaWN0dXJlSW5QaWN0dXJlKCkKIHsKLSAgICBhdXRv
JiBtb2RlbCA9IHBsYXliYWNrU2Vzc2lvbk1vZGVsKCk7Ci0gICAgW3BsYXlCYWNrQ29udHJvbHNN
YW5hZ2VyKCkgc2V0Q2FuVG9nZ2xlUGljdHVyZUluUGljdHVyZTptb2RlbC5pc1BpY3R1cmVJblBp
Y3R1cmVTdXBwb3J0ZWQoKSAmJiAhbW9kZWwuZXh0ZXJuYWxQbGF5YmFja0VuYWJsZWQoKV07Cisg
ICAgUGxheWJhY2tTZXNzaW9uTW9kZWwqIG1vZGVsID0gcGxheWJhY2tTZXNzaW9uTW9kZWwoKTsK
KyAgICBpZiAoIW1vZGVsKSB7CisgICAgICAgIFtwbGF5QmFja0NvbnRyb2xzTWFuYWdlcigpIHNl
dENhblRvZ2dsZVBpY3R1cmVJblBpY3R1cmU6Tk9dOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgW3BsYXlCYWNrQ29udHJvbHNNYW5hZ2VyKCkgc2V0Q2FuVG9nZ2xlUGljdHVyZUluUGlj
dHVyZTptb2RlbC0+aXNQaWN0dXJlSW5QaWN0dXJlU3VwcG9ydGVkKCkgJiYgIW1vZGVsLT5leHRl
cm5hbFBsYXliYWNrRW5hYmxlZCgpXTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2VNYWM6OnVwZGF0ZVBsYXliYWNrQ29udHJvbHNNYW5hZ2VyVGltaW5nKGRvdWJsZSBjdXJyZW50
VGltZSwgZG91YmxlIGFuY2hvclRpbWUsIGRvdWJsZSBwbGF5YmFja1JhdGUsIGJvb2wgaXNQbGF5
aW5nKQpAQCAtMjM5LDE0ICsyNTksMTYgQEAgdm9pZCBQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VN
YWM6OnVwZGF0ZVBsYXliYWNrQ29udHJvbHNNYW5hZ2VyVGltaW5nKGRvdWJsZSBjdXIKICAgICBp
ZiAoIW1hbmFnZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8mIG1vZGVsID0gcGxheWJh
Y2tTZXNzaW9uTW9kZWwoKTsKKyAgICBQbGF5YmFja1Nlc3Npb25Nb2RlbCAqbW9kZWwgPSBwbGF5
YmFja1Nlc3Npb25Nb2RlbCgpOworICAgIGlmICghbW9kZWwpCisgICAgICAgIHJldHVybjsKIAog
ICAgIGRvdWJsZSBlZmZlY3RpdmVBbmNob3JUaW1lID0gcGxheWJhY2tSYXRlID8gYW5jaG9yVGlt
ZSA6IE5BTjsKICAgICBkb3VibGUgZWZmZWN0aXZlUGxheWJhY2tSYXRlID0gcGxheWJhY2tSYXRl
OwogICAgIGlmICghaXNQbGF5aW5nCi0gICAgICAgIHx8IG1vZGVsLmlzU2NydWJiaW5nKCkKLSAg
ICAgICAgfHwgKG1hbmFnZXIucmF0ZSA+IDAgJiYgbW9kZWwucGxheWJhY2tTdGFydGVkVGltZSgp
ID49IGN1cnJlbnRUaW1lKQotICAgICAgICB8fCAobWFuYWdlci5yYXRlIDwgMCAmJiBtb2RlbC5w
bGF5YmFja1N0YXJ0ZWRUaW1lKCkgPD0gY3VycmVudFRpbWUpKQorICAgICAgICB8fCBtb2RlbC0+
aXNTY3J1YmJpbmcoKQorICAgICAgICB8fCAobWFuYWdlci5yYXRlID4gMCAmJiBtb2RlbC0+cGxh
eWJhY2tTdGFydGVkVGltZSgpID49IGN1cnJlbnRUaW1lKQorICAgICAgICB8fCAobWFuYWdlci5y
YXRlIDwgMCAmJiBtb2RlbC0+cGxheWJhY2tTdGFydGVkVGltZSgpIDw9IGN1cnJlbnRUaW1lKSkK
ICAgICAgICAgZWZmZWN0aXZlUGxheWJhY2tSYXRlID0gMDsKIAogICAgIG1hbmFnZXIudGltaW5n
ID0gW2dldEFWVmFsdWVUaW1pbmdDbGFzcygpIHZhbHVlVGltaW5nV2l0aEFuY2hvclZhbHVlOmN1
cnJlbnRUaW1lIGFuY2hvclRpbWVTdGFtcDplZmZlY3RpdmVBbmNob3JUaW1lIHJhdGU6ZWZmZWN0
aXZlUGxheWJhY2tSYXRlXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMuaAppbmRleCBlMDA1NzNhNWFlNmM2MjI1
NzM3YzY3ZTg3ODg3ZTNiYjljZmJhMmY2Li5hZjJjNjQ5ZjU3ZTVlMTU4NTgzMWRmOGIyNDYyNjJi
MmU3M2Q2Y2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlTWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy5oCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVk
ZSAiVmlkZW9GdWxsc2NyZWVuTW9kZWwuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgog
I2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLSNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBPQkpDX0NMQVNTIE5TV2luZG93OwpAQCAt
NDcsMjEgKzQ2LDIxIEBAIGNsYXNzIFZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyOwogCiBj
bGFzcyBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMKICAgICA6IHB1YmxpYyBWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbENsaWVudAotICAgICwgcHVibGljIFBsYXliYWNrU2Vzc2lvbk1vZGVsQ2xpZW50
Ci0gICAgLCBwdWJsaWMgUmVmQ291bnRlZDxWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM+Ci0g
ICAgLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjPiB7
CisgICAgLCBwcml2YXRlIFBsYXliYWNrU2Vzc2lvbk1vZGVsQ2xpZW50CisgICAgLCBwdWJsaWMg
UmVmQ291bnRlZDxWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM+IHsKIAogcHVibGljOgotICAg
IHN0YXRpYyBSZWY8VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjPiBjcmVhdGUoUmVmPFBsYXli
YWNrU2Vzc2lvbkludGVyZmFjZU1hYz4mJiBwbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UsIFJlZjxW
aWRlb0Z1bGxzY3JlZW5Nb2RlbD4gdmlkZW9GdWxsc2NyZWVuTW9kZWwpCisgICAgc3RhdGljIFJl
ZjxWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM+IGNyZWF0ZShQbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2VNYWMmIHBsYXliYWNrU2Vzc2lvbkludGVyZmFjZSkKICAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYyhXVEZNb3ZlKHBsYXli
YWNrU2Vzc2lvbkludGVyZmFjZSksIFdURk1vdmUodmlkZW9GdWxsc2NyZWVuTW9kZWwpKSk7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYyhw
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2UpKTsKICAgICB9CiAgICAgdmlydHVhbCB+VmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlTWFjKCk7CiAgICAgUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjJiBw
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2UoKSBjb25zdCB7IHJldHVybiBtX3BsYXliYWNrU2Vzc2lv
bkludGVyZmFjZS5nZXQoKTsgfQotICAgIFZpZGVvRnVsbHNjcmVlbk1vZGVsJiB2aWRlb0Z1bGxz
Y3JlZW5Nb2RlbCgpIGNvbnN0IHsgcmV0dXJuIG1fdmlkZW9GdWxsc2NyZWVuTW9kZWw7IH0KLSAg
ICBQbGF5YmFja1Nlc3Npb25Nb2RlbCYgcGxheWJhY2tTZXNzaW9uTW9kZWwoKSBjb25zdCB7IHJl
dHVybiBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+cGxheWJhY2tTZXNzaW9uTW9kZWwoKTsg
fQotICAgIFZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKiB2aWRlb0Z1bGxzY3JlZW5DaGFu
Z2VPYnNlcnZlcigpIGNvbnN0IHsgcmV0dXJuIG1fZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLmdl
dCgpOyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VP
YnNlcnZlcihXZWFrUHRyPFZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyPik7CisgICAgVmlk
ZW9GdWxsc2NyZWVuTW9kZWwqIHZpZGVvRnVsbHNjcmVlbk1vZGVsKCkgY29uc3QgeyByZXR1cm4g
bV92aWRlb0Z1bGxzY3JlZW5Nb2RlbDsgfQorICAgIFBsYXliYWNrU2Vzc2lvbk1vZGVsKiBwbGF5
YmFja1Nlc3Npb25Nb2RlbCgpIGNvbnN0IHsgcmV0dXJuIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJm
YWNlLT5wbGF5YmFja1Nlc3Npb25Nb2RlbCgpOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRWaWRlb0Z1bGxzY3JlZW5Nb2RlbChWaWRlb0Z1bGxzY3JlZW5Nb2RlbCopOworICAgIFZpZGVv
RnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKiB2aWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcigp
IGNvbnN0IHsgcmV0dXJuIG1fZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyOyB9CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcihWaWRlb0Z1bGxz
Y3JlZW5DaGFuZ2VPYnNlcnZlciopOwogCiAgICAgLy8gUGxheWJhY2tTZXNzaW9uTW9kZWxDbGll
bnQKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJhdGVDaGFuZ2VkKGJvb2wgaXNQbGF5aW5nLCBm
bG9hdCBwbGF5YmFja1JhdGUpIG92ZXJyaWRlOwpAQCAtOTgsMTEgKzk3LDEwIEBAIHB1YmxpYzoK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlcXVlc3RIaWRlQW5kRXhpdFBpUCgpOwogCiBwcml2
YXRlOgotICAgIFdFQkNPUkVfRVhQT1JUIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYyhSZWY8
UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjPiYmLCBSZWY8VmlkZW9GdWxsc2NyZWVuTW9kZWw+
JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYyhQbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMmKTsKICAgICBSZWY8UGxheWJhY2tTZXNzaW9uSW50ZXJm
YWNlTWFjPiBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZTsKLSAgICBSZWY8VmlkZW9GdWxsc2Ny
ZWVuTW9kZWw+IG1fdmlkZW9GdWxsc2NyZWVuTW9kZWw7Ci0gICAgV2Vha1B0ckZhY3Rvcnk8UGxh
eWJhY2tTZXNzaW9uTW9kZWxDbGllbnQ+IG1fd2Vha1B0ckZhY3Rvcnk7Ci0gICAgV2Vha1B0cjxW
aWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcj4gbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXI7
CisgICAgVmlkZW9GdWxsc2NyZWVuTW9kZWwqIG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwgeyBudWxs
cHRyIH07CisgICAgVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIqIG1fZnVsbHNjcmVlbkNo
YW5nZU9ic2VydmVyIHsgbnVsbHB0ciB9OwogICAgIEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6Vmlk
ZW9GdWxsc2NyZWVuTW9kZSBtX21vZGUgeyBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVs
bHNjcmVlbk1vZGVOb25lIH07CiAgICAgUmV0YWluUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZU1hY09iakM+IG1fd2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlT2JqQzsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1ZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZU1hYy5tbQppbmRleCA0OTlhMDM4OTM4NDVjZWY0MDY2NWMxMjk1NDI0YzQ2MGM5NzE4
YmFiLi4wYWU2YWZlYWRlMzEzMTc1ZDJlMzY4NWNkN2EyYjU0ZTg1MDZiMDdiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9WaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VNYWMubW0KQEAgLTM5LDcgKzM5LDYgQEAKICNpbXBvcnQgPHBhbC9hdmZvdW5kYXRpb24v
TWVkaWFUaW1lQVZGb3VuZGF0aW9uLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL0FWS2l0U1BJ
Lmg+CiAjaW1wb3J0IDxwYWwvc3BpL21hYy9QSVBTUEkuaD4KLSNpbXBvcnQgPHd0Zi9XZWFrT2Jq
Q1B0ci5oPgogCiAjaW1wb3J0IDxwYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaD4KIApAQCAtNjUs
OSArNjQsMTEgQEAgdXNpbmcgV2ViQ29yZTo6VmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXI7
CiB1c2luZyBXZWJDb3JlOjpQbGF5YmFja1Nlc3Npb25Nb2RlbDsKIAogQGludGVyZmFjZSBXZWJW
aWRlb1ZpZXdDb250YWluZXIgOiBOU1ZpZXcgewotICAgIF9fd2VhayBpZCA8V2ViVmlkZW9WaWV3
Q29udGFpbmVyRGVsZWdhdGU+IF92aWRlb1ZpZXdDb250YWluZXJEZWxlZ2F0ZTsKKyAgICBfX3Vu
c2FmZV91bnJldGFpbmVkIGlkIDxXZWJWaWRlb1ZpZXdDb250YWluZXJEZWxlZ2F0ZT4gX3ZpZGVv
Vmlld0NvbnRhaW5lckRlbGVnYXRlOwogfQotQHByb3BlcnR5IChub25hdG9taWMsIHdlYWssIGFz
c2lnbikgaWQgPFdlYlZpZGVvVmlld0NvbnRhaW5lckRlbGVnYXRlPiB2aWRlb1ZpZXdDb250YWlu
ZXJEZWxlZ2F0ZTsKKworQHByb3BlcnR5IChub25hdG9taWMsIGFzc2lnbikgaWQgPFdlYlZpZGVv
Vmlld0NvbnRhaW5lckRlbGVnYXRlPiB2aWRlb1ZpZXdDb250YWluZXJEZWxlZ2F0ZTsKKwogQGVu
ZAogCiBAaW1wbGVtZW50YXRpb24gV2ViVmlkZW9WaWV3Q29udGFpbmVyCkBAIC05Nyw3ICs5OCw3
IEBAIGVudW0gY2xhc3MgUElQU3RhdGUgewogfTsKIAogQGludGVyZmFjZSBXZWJWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VNYWNPYmpDIDogTlNPYmplY3QgPFBJUFZpZXdDb250cm9sbGVyRGVsZWdh
dGUsIFdlYlZpZGVvVmlld0NvbnRhaW5lckRlbGVnYXRlPiB7Ci0gICAgV2Vha1B0cjxXZWJDb3Jl
OjpWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM+IF92aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VN
YWM7CisgICAgV2ViQ29yZTo6VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjKiBfdmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlTWFjOwogICAgIE5TU2l6ZSBfdmlkZW9EaW1lbnNpb25zOwogICAgIFJl
dGFpblB0cjxQSVBWaWV3Q29udHJvbGxlcj4gX3BpcFZpZXdDb250cm9sbGVyOwogICAgIFJldGFp
blB0cjxOU1ZpZXdDb250cm9sbGVyPiBfdmlkZW9WaWV3Q29udGFpbmVyQ29udHJvbGxlcjsKQEAg
LTEzOSw3ICsxNDAsNyBAQCBlbnVtIGNsYXNzIFBJUFN0YXRlIHsKICAgICBpZiAoIShzZWxmID0g
W3N1cGVyIGluaXRdKSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIF92aWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VNYWMgPSBtYWtlV2Vha1B0cih2aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMp
OworICAgIF92aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMgPSB2aWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VNYWM7CiAgICAgX3BpcFN0YXRlID0gUElQU3RhdGU6Ok5vdEluUElQOwogCiAgICAgcmV0
dXJuIHNlbGY7CkBAIC0xOTEsOCArMTkyLDggQEAgZW51bSBjbGFzcyBQSVBTdGF0ZSB7CiAgICAg
W19waXBWaWV3Q29udHJvbGxlciBzZXRVc2VyQ2FuUmVzaXplOllFU107CiAgICAgW19waXBWaWV3
Q29udHJvbGxlciBzZXRQbGF5aW5nOl9wbGF5aW5nXTsKICAgICBbc2VsZiBzZXRWaWRlb0RpbWVu
c2lvbnM6TlNFcXVhbFNpemVzKF92aWRlb0RpbWVuc2lvbnMsIE5TWmVyb1NpemUpID8gZnJhbWUu
c2l6ZSA6IF92aWRlb0RpbWVuc2lvbnNdOwotICAgIGlmIChfdmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlTWFjKQotICAgICAgICBfdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLT52aWRlb0Z1bGxz
Y3JlZW5Nb2RlbCgpLnNldFZpZGVvTGF5ZXJHcmF2aXR5KFZpZGVvRnVsbHNjcmVlbk1vZGVsOjpW
aWRlb0dyYXZpdHlSZXNpemVBc3BlY3RGaWxsKTsKKyAgICBpZiAoX3ZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZU1hYyAmJiBfdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLT52aWRlb0Z1bGxzY3Jl
ZW5Nb2RlbCgpKQorICAgICAgICBfdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLT52aWRlb0Z1
bGxzY3JlZW5Nb2RlbCgpLT5zZXRWaWRlb0xheWVyR3Jhdml0eShWaWRlb0Z1bGxzY3JlZW5Nb2Rl
bDo6VmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0RmlsbCk7CiAKICAgICBfdmlkZW9WaWV3Q29udGFp
bmVyID0gYWRvcHROUyhbW1dlYlZpZGVvVmlld0NvbnRhaW5lciBhbGxvY10gaW5pdFdpdGhGcmFt
ZTpmcmFtZV0pOwogICAgIFtfdmlkZW9WaWV3Q29udGFpbmVyIHNldFZpZGVvVmlld0NvbnRhaW5l
ckRlbGVnYXRlOnNlbGZdOwpAQCAtMjQ1LDggKzI0Niw4IEBAIGVudW0gY2xhc3MgUElQU3RhdGUg
ewogCiAgICAgQVNTRVJUX1VOVVNFRCh2aWRlb1ZpZXdDb250YWluZXIsIHZpZGVvVmlld0NvbnRh
aW5lciA9PSBfdmlkZW9WaWV3Q29udGFpbmVyKTsKIAotICAgIGlmIChfdmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlTWFjKQotICAgICAgICBfdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLT52aWRl
b0Z1bGxzY3JlZW5Nb2RlbCgpLnNldFZpZGVvTGF5ZXJGcmFtZShbX3ZpZGVvVmlld0NvbnRhaW5l
ciBib3VuZHNdKTsKKyAgICBpZiAoX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYyAmJiBfdmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLT52aWRlb0Z1bGxzY3JlZW5Nb2RlbCgpKQorICAgICAg
ICBfdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLT52aWRlb0Z1bGxzY3JlZW5Nb2RlbCgpLT5z
ZXRWaWRlb0xheWVyRnJhbWUoW192aWRlb1ZpZXdDb250YWluZXIgYm91bmRzXSk7CiB9CiAKIC0g
KHZvaWQpc3VwZXJ2aWV3RGlkQ2hhbmdlRm9yVmlkZW9WaWV3Q29udGFpbmVyOihXZWJWaWRlb1Zp
ZXdDb250YWluZXIgKil2aWRlb1ZpZXdDb250YWluZXIKQEAgLTI4MiwxMiArMjgzLDEyIEBAIGVu
dW0gY2xhc3MgUElQU3RhdGUgewogewogICAgIEFTU0VSVF9VTlVTRUQocGlwLCBwaXAgPT0gX3Bp
cFZpZXdDb250cm9sbGVyKTsKIAotICAgIGlmIChfdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFj
ICYmIF92aWRlb1ZpZXdDb250YWluZXIgJiYgX3JldHVybmluZ1dpbmRvdyAmJiAhTlNFcXVhbFJl
Y3RzKF9yZXR1cm5pbmdSZWN0LCBOU1plcm9SZWN0KSkgeworICAgIGlmIChfdmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlTWFjICYmIF92aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMtPnZpZGVvRnVs
bHNjcmVlbk1vZGVsKCkgJiYgX3ZpZGVvVmlld0NvbnRhaW5lciAmJiBfcmV0dXJuaW5nV2luZG93
ICYmICFOU0VxdWFsUmVjdHMoX3JldHVybmluZ1JlY3QsIE5TWmVyb1JlY3QpKSB7CiAgICAgICAg
IFtOU0FuaW1hdGlvbkNvbnRleHQgcnVuQW5pbWF0aW9uR3JvdXA6XihOU0FuaW1hdGlvbkNvbnRl
eHQgKmNvbnRleHQpIHsKICAgICAgICAgICAgIGNvbnRleHQuYWxsb3dzSW1wbGljaXRBbmltYXRp
b24gPSBOTzsKICAgICAgICAgICAgIFtfdmlkZW9WaWV3Q29udGFpbmVyIHNldEZyYW1lOl9yZXR1
cm5pbmdSZWN0XTsKLSAgICAgICAgICAgIF92aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMtPnZp
ZGVvRnVsbHNjcmVlbk1vZGVsKCkuc2V0VmlkZW9MYXllckZyYW1lKFtfdmlkZW9WaWV3Q29udGFp
bmVyIGJvdW5kc10pOwotICAgICAgICAgICAgX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy0+
dmlkZW9GdWxsc2NyZWVuTW9kZWwoKS5zZXRWaWRlb0xheWVyR3Jhdml0eShWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbDo6VmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0KTsKKyAgICAgICAgICAgIF92aWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VNYWMtPnZpZGVvRnVsbHNjcmVlbk1vZGVsKCktPnNldFZpZGVvTGF5
ZXJGcmFtZShbX3ZpZGVvVmlld0NvbnRhaW5lciBib3VuZHNdKTsKKyAgICAgICAgICAgIF92aWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMtPnZpZGVvRnVsbHNjcmVlbk1vZGVsKCktPnNldFZpZGVv
TGF5ZXJHcmF2aXR5KFZpZGVvRnVsbHNjcmVlbk1vZGVsOjpWaWRlb0dyYXZpdHlSZXNpemVBc3Bl
Y3QpOwogCiAgICAgICAgICAgICBbW19yZXR1cm5pbmdXaW5kb3cgY29udGVudFZpZXddIGFkZFN1
YnZpZXc6X3ZpZGVvVmlld0NvbnRhaW5lci5nZXQoKSBwb3NpdGlvbmVkOk5TV2luZG93QWJvdmUg
cmVsYXRpdmVUbzpuaWxdOwogICAgICAgICB9IGNvbXBsZXRpb25IYW5kbGVyOm5pbF07CkBAIC0y
OTUsOSArMjk2LDEwIEBAIGVudW0gY2xhc3MgUElQU3RhdGUgewogCiAgICAgaWYgKF92aWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VNYWMpIHsKICAgICAgICAgaWYgKCFzZWxmLmlzRXhpdGluZ1RvU3Rh
bmRhcmRGdWxsc2NyZWVuKSB7Ci0gICAgICAgICAgICBSZWY8VmlkZW9GdWxsc2NyZWVuTW9kZWw+
IHZpZGVvRnVsbHNjcmVlbk1vZGVsID0gX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy0+dmlk
ZW9GdWxsc2NyZWVuTW9kZWwoKTsKLSAgICAgICAgICAgIHZpZGVvRnVsbHNjcmVlbk1vZGVsLT5k
aWRFeGl0UGljdHVyZUluUGljdHVyZSgpOwotICAgICAgICAgICAgdmlkZW9GdWxsc2NyZWVuTW9k
ZWwtPnNldFZpZGVvTGF5ZXJHcmF2aXR5KFZpZGVvRnVsbHNjcmVlbk1vZGVsOjpWaWRlb0dyYXZp
dHlSZXNpemVBc3BlY3QpOworICAgICAgICAgICAgaWYgKFZpZGVvRnVsbHNjcmVlbk1vZGVsKiB2
aWRlb0Z1bGxzY3JlZW5Nb2RlbCA9IF92aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMtPnZpZGVv
RnVsbHNjcmVlbk1vZGVsKCkpIHsKKyAgICAgICAgICAgICAgICB2aWRlb0Z1bGxzY3JlZW5Nb2Rl
bC0+ZGlkRXhpdFBpY3R1cmVJblBpY3R1cmUoKTsKKyAgICAgICAgICAgICAgICB2aWRlb0Z1bGxz
Y3JlZW5Nb2RlbC0+c2V0VmlkZW9MYXllckdyYXZpdHkoVmlkZW9GdWxsc2NyZWVuTW9kZWw6OlZp
ZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdCk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAg
ICAgICBfdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLT5jbGVhck1vZGUoSFRNTE1lZGlhRWxl
bWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVyZUluUGljdHVyZSk7CkBAIC0zMTEs
MTYgKzMxMywxNiBAQCBlbnVtIGNsYXNzIFBJUFN0YXRlIHsKIHsKICAgICBBU1NFUlRfVU5VU0VE
KHBpcCwgcGlwID09IF9waXBWaWV3Q29udHJvbGxlcik7CiAKLSAgICBpZiAoX3ZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZU1hYykKLSAgICAgICAgX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy0+
cGxheWJhY2tTZXNzaW9uTW9kZWwoKS5wbGF5KCk7CisgICAgaWYgKF92aWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VNYWMgJiYgX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy0+cGxheWJhY2tTZXNz
aW9uTW9kZWwoKSkKKyAgICAgICAgX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy0+cGxheWJh
Y2tTZXNzaW9uTW9kZWwoKS0+cGxheSgpOwogfQogCiAtICh2b2lkKXBpcEFjdGlvblBhdXNlOihQ
SVBWaWV3Q29udHJvbGxlciAqKXBpcAogewogICAgIEFTU0VSVF9VTlVTRUQocGlwLCBwaXAgPT0g
X3BpcFZpZXdDb250cm9sbGVyKTsKIAotICAgIGlmIChfdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
TWFjKQotICAgICAgICBfdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLT5wbGF5YmFja1Nlc3Np
b25Nb2RlbCgpLnBhdXNlKCk7CisgICAgaWYgKF92aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMg
JiYgX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy0+cGxheWJhY2tTZXNzaW9uTW9kZWwoKSkK
KyAgICAgICAgX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy0+cGxheWJhY2tTZXNzaW9uTW9k
ZWwoKS0+cGF1c2UoKTsKIH0KIAogLSAodm9pZClwaXBBY3Rpb25TdG9wOihQSVBWaWV3Q29udHJv
bGxlciAqKXBpcApAQCAtMzMwLDcgKzMzMiw4IEBAIGVudW0gY2xhc3MgUElQU3RhdGUgewogICAg
IGlmICghX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYykKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy0+cGxheWJhY2tTZXNzaW9uTW9kZWwoKS5w
YXVzZSgpOworICAgIGlmIChQbGF5YmFja1Nlc3Npb25Nb2RlbCogcGxheWJhY2tTZXNzaW9uTW9k
ZWwgPSBfdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLT5wbGF5YmFja1Nlc3Npb25Nb2RlbCgp
KQorICAgICAgICBwbGF5YmFja1Nlc3Npb25Nb2RlbC0+cGF1c2UoKTsKIAogICAgIF92aWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VNYWMtPnJlcXVlc3RIaWRlQW5kRXhpdFBpUCgpOwogICAgIF9waXBT
dGF0ZSA9IFBJUFN0YXRlOjpFeGl0aW5nUElQOwpAQCAtMzQxLDI0ICszNDQsMzMgQEAgZW51bSBj
bGFzcyBQSVBTdGF0ZSB7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgUEFM
OwogCi1WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZU1hYyhSZWY8UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjPiYmIHBsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZSwgUmVmPFZpZGVvRnVsbHNjcmVlbk1vZGVsPiYmIHZpZGVvRnVsbHNjcmVlbk1vZGVs
KQotICAgIDogbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UoV1RGTW92ZShwbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2UpKQotICAgICwgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbChXVEZNb3ZlKHZpZGVv
RnVsbHNjcmVlbk1vZGVsKSkKK1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6VmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlTWFjKFBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYyYgcGxheWJhY2tT
ZXNzaW9uSW50ZXJmYWNlKQorICAgIDogbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UocGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlKQogewotICAgIGF1dG8mIG1vZGVsID0gcGxheWJhY2tTZXNzaW9u
TW9kZWwoKTsKLSAgICBtb2RlbC5hZGRDbGllbnQobWFrZVdlYWtQdHIodGhpcykpOwotICAgIFt2
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VPYmpDKCkgdXBkYXRlSXNQbGF5aW5nOm1vZGVsLmlzUGxh
eWluZygpIG5ld1BsYXliYWNrUmF0ZTptb2RlbC5wbGF5YmFja1JhdGUoKV07CisgICAgQVNTRVJU
KG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5wbGF5YmFja1Nlc3Npb25Nb2RlbCgpKTsKKyAg
ICBhdXRvIG1vZGVsID0gbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnBsYXliYWNrU2Vzc2lv
bk1vZGVsKCk7CisgICAgbW9kZWwtPmFkZENsaWVudCgqdGhpcyk7CisgICAgW3ZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZU9iakMoKSB1cGRhdGVJc1BsYXlpbmc6bW9kZWwtPmlzUGxheWluZygpIG5l
d1BsYXliYWNrUmF0ZTptb2RlbC0+cGxheWJhY2tSYXRlKCldOwogfQogCiBWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VNYWM6On5WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMoKQogewotICAgIGlu
dmFsaWRhdGUoKTsKLSAgICBhdXRvJiBtb2RlbCA9IHBsYXliYWNrU2Vzc2lvbk1vZGVsKCk7Ci0g
ICAgbW9kZWwucmVtb3ZlQ2xpZW50KCp0aGlzKTsKLSAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVs
LT5yZW1vdmVDbGllbnQoKnRoaXMpOworICAgIGlmIChtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZS0+cGxheWJhY2tTZXNzaW9uTW9kZWwoKSkKKyAgICAgICAgbV9wbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2UtPnBsYXliYWNrU2Vzc2lvbk1vZGVsKCktPnJlbW92ZUNsaWVudCgqdGhpcyk7CisgICAg
aWYgKG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwpCisgICAgICAgIG1fdmlkZW9GdWxsc2NyZWVuTW9k
ZWwtPnJlbW92ZUNsaWVudCgqdGhpcyk7CiB9CiAKLXZvaWQgVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlTWFjOjpzZXRWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcihXZWFrUHRyPFZpZGVvRnVs
bHNjcmVlbkNoYW5nZU9ic2VydmVyPiBvYnNlcnZlcikKK3ZvaWQgVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlTWFjOjpzZXRWaWRlb0Z1bGxzY3JlZW5Nb2RlbChWaWRlb0Z1bGxzY3JlZW5Nb2RlbCog
bW9kZWwpCit7CisgICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwpCisgICAgICAgIG1fdmlk
ZW9GdWxsc2NyZWVuTW9kZWwtPnJlbW92ZUNsaWVudCgqdGhpcyk7CisgICAgbV92aWRlb0Z1bGxz
Y3JlZW5Nb2RlbCA9IG1vZGVsOworICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsKQorICAg
ICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT5hZGRDbGllbnQoKnRoaXMpOworfQorCit2b2lk
IFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6c2V0VmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2Jz
ZXJ2ZXIoVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIqIG9ic2VydmVyKQogewogICAgIG1f
ZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyID0gb2JzZXJ2ZXI7CiB9CkBAIC0zNzAsNyArMzgyLDgg
QEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OnNldE1vZGUoSFRNTE1lZGlhRWxl
bWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW4KICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9tb2Rl
ID0gbmV3TW9kZTsKLSAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT5mdWxsc2NyZWVuTW9kZUNo
YW5nZWQobV9tb2RlKTsKKyAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5Nb2RlbCkKKyAgICAgICAg
bV92aWRlb0Z1bGxzY3JlZW5Nb2RlbC0+ZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKG1fbW9kZSk7CiB9
CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjOjpjbGVhck1vZGUoSFRNTE1lZGlh
RWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUpCkBAIC0zODAsNyArMzkzLDgg
QEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OmNsZWFyTW9kZShIVE1MTWVkaWFF
bGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmUKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9tb2Rl
ID0gbmV3TW9kZTsKLSAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT5mdWxsc2NyZWVuTW9kZUNo
YW5nZWQobV9tb2RlKTsKKyAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5Nb2RlbCkKKyAgICAgICAg
bV92aWRlb0Z1bGxzY3JlZW5Nb2RlbC0+ZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKG1fbW9kZSk7CiB9
CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjOjpyYXRlQ2hhbmdlZChib29sIGlz
UGxheWluZywgZmxvYXQgcGxheWJhY2tSYXRlKQpAQCAtNDg1LDYgKzQ5OSw3IEBAIHZvaWQgVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjOjppbnZhbGlkYXRlKCkKIHsKICAgICBMT0coRnVsbHNj
cmVlbiwgIlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6aW52YWxpZGF0ZSglcCkiLCB0aGlz
KTsKIAorICAgIG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwgPSBuaWw7CiAgICAgbV9mdWxsc2NyZWVu
Q2hhbmdlT2JzZXJ2ZXIgPSBuaWw7CiAKICAgICBjbGVhbnVwRnVsbHNjcmVlbigpOwpAQCAtNDk1
LDYgKzUxMCw5IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjOjppbnZhbGlkYXRl
KCkKIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OnJlcXVlc3RIaWRlQW5kRXhp
dFBpUCgpCiB7CisgICAgaWYgKCFtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsKQorICAgICAgICByZXR1
cm47CisKICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT5yZXF1ZXN0RnVsbHNjcmVlbk1vZGUo
SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSk7CiAgICAgbV92
aWRlb0Z1bGxzY3JlZW5Nb2RlbC0+d2lsbEV4aXRQaWN0dXJlSW5QaWN0dXJlKCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViUGxheWJhY2tDb250cm9sc01h
bmFnZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViUGxheWJhY2tDb250cm9s
c01hbmFnZXIubW0KaW5kZXggMGRkMTI1MWJkNmViOTJjOTY1OTgxYTQyOGU3YjY2YzQwMDEwMmIx
OS4uYWMwOGQxZmJkZjExMmM2NTg4NWI5Y2Q4OTVmMmVmZTExMTczYmI2MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJQbGF5YmFja0NvbnRyb2xzTWFu
YWdlci5tbQpAQCAtOTMsNyArOTMsNyBAQCB1c2luZyBXZWJDb3JlOjpQbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2VNYWM7CiB7CiAgICAgVU5VU0VEX1BBUkFNKHRvbGVyYW5jZUJlZm9yZSk7CiAgICAg
VU5VU0VEX1BBUkFNKHRvbGVyYW5jZUFmdGVyKTsKLSAgICBfcGxheWJhY2tTZXNzaW9uSW50ZXJm
YWNlTWFjLT5wbGF5YmFja1Nlc3Npb25Nb2RlbCgpLnNlZWtUb1RpbWUodGltZSk7CisgICAgX3Bs
YXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy0+cGxheWJhY2tTZXNzaW9uTW9kZWwoKS0+c2Vla1Rv
VGltZSh0aW1lKTsKIH0KIAogLSAodm9pZCljYW5jZWxUaHVtYm5haWxBbmRBdWRpb0FtcGxpdHVk
ZVNhbXBsZUdlbmVyYXRpb24KQEAgLTE5Miw3ICsxOTIsNyBAQCB1c2luZyBXZWJDb3JlOjpQbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM7CiAgICAgaWYgKGF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRp
b24gJiYgX2F1ZGlvVG91Y2hCYXJNZWRpYVNlbGVjdGlvbk9wdGlvbnMpCiAgICAgICAgIGluZGV4
ID0gW19hdWRpb1RvdWNoQmFyTWVkaWFTZWxlY3Rpb25PcHRpb25zIGluZGV4T2ZPYmplY3Q6YXVk
aW9NZWRpYVNlbGVjdGlvbk9wdGlvbl07CiAKLSAgICBfcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNl
TWFjLT5wbGF5YmFja1Nlc3Npb25Nb2RlbCgpLnNlbGVjdEF1ZGlvTWVkaWFPcHRpb24oaW5kZXgg
IT0gTlNOb3RGb3VuZCA/IGluZGV4IDogVUlOVDY0X01BWCk7CisgICAgX3BsYXliYWNrU2Vzc2lv
bkludGVyZmFjZU1hYy0+cGxheWJhY2tTZXNzaW9uTW9kZWwoKS0+c2VsZWN0QXVkaW9NZWRpYU9w
dGlvbihpbmRleCAhPSBOU05vdEZvdW5kID8gaW5kZXggOiBVSU5UNjRfTUFYKTsKIH0KIAogLSAo
TlNBcnJheTxBVlRvdWNoQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24gKj4gKilsZWdpYmxlVG91Y2hC
YXJNZWRpYVNlbGVjdGlvbk9wdGlvbnMKQEAgLTIyMiw3ICsyMjIsNyBAQCB1c2luZyBXZWJDb3Jl
OjpQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM7CiAgICAgaWYgKGxlZ2libGVNZWRpYVNlbGVj
dGlvbk9wdGlvbiAmJiBfbGVnaWJsZVRvdWNoQmFyTWVkaWFTZWxlY3Rpb25PcHRpb25zKQogICAg
ICAgICBpbmRleCA9IFtfbGVnaWJsZVRvdWNoQmFyTWVkaWFTZWxlY3Rpb25PcHRpb25zIGluZGV4
T2ZPYmplY3Q6bGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uXTsKIAotICAgIF9wbGF5YmFja1Nl
c3Npb25JbnRlcmZhY2VNYWMtPnBsYXliYWNrU2Vzc2lvbk1vZGVsKCkuc2VsZWN0TGVnaWJsZU1l
ZGlhT3B0aW9uKGluZGV4ICE9IE5TTm90Rm91bmQgPyBpbmRleCA6IFVJTlQ2NF9NQVgpOworICAg
IF9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMtPnBsYXliYWNrU2Vzc2lvbk1vZGVsKCktPnNl
bGVjdExlZ2libGVNZWRpYU9wdGlvbihpbmRleCAhPSBOU05vdEZvdW5kID8gaW5kZXggOiBVSU5U
NjRfTUFYKTsKIH0KIAogI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAx
MzAwCkBAIC0zMTMsMzQgKzMxMywzNCBAQCBzdGF0aWMgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5
PiBtZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVjdG9yPE1lZGlhU2VsZWN0aQogCiAtICh2
b2lkKXRvZ2dsZVBsYXliYWNrCiB7Ci0gICAgaWYgKF9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VN
YWMpCi0gICAgICAgIF9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMtPnBsYXliYWNrU2Vzc2lv
bk1vZGVsKCkudG9nZ2xlUGxheVN0YXRlKCk7CisgICAgaWYgKF9wbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2VNYWMgJiYgX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy0+cGxheWJhY2tTZXNzaW9u
TW9kZWwoKSkKKyAgICAgICAgX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy0+cGxheWJhY2tT
ZXNzaW9uTW9kZWwoKS0+dG9nZ2xlUGxheVN0YXRlKCk7CiB9CiAKIC0gKHZvaWQpc2V0UGxheWlu
ZzooQk9PTClwbGF5aW5nCiB7Ci0gICAgaWYgKCFfcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFj
KQorICAgIGlmICghX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYyB8fCAhX3BsYXliYWNrU2Vz
c2lvbkludGVyZmFjZU1hYy0+cGxheWJhY2tTZXNzaW9uTW9kZWwoKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgQk9PTCBpc0N1cnJlbnRseVBsYXlpbmcgPSBzZWxmLnBsYXlpbmc7CiAgICAgaWYg
KCFpc0N1cnJlbnRseVBsYXlpbmcgJiYgcGxheWluZykKLSAgICAgICAgX3BsYXliYWNrU2Vzc2lv
bkludGVyZmFjZU1hYy0+cGxheWJhY2tTZXNzaW9uTW9kZWwoKS5wbGF5KCk7CisgICAgICAgIF9w
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMtPnBsYXliYWNrU2Vzc2lvbk1vZGVsKCktPnBsYXko
KTsKICAgICBlbHNlIGlmIChpc0N1cnJlbnRseVBsYXlpbmcgJiYgIXBsYXlpbmcpCi0gICAgICAg
IF9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMtPnBsYXliYWNrU2Vzc2lvbk1vZGVsKCkucGF1
c2UoKTsKKyAgICAgICAgX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy0+cGxheWJhY2tTZXNz
aW9uTW9kZWwoKS0+cGF1c2UoKTsKIH0KIAogLSAoQk9PTClpc1BsYXlpbmcKIHsKLSAgICBpZiAo
X3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYykKLSAgICAgICAgcmV0dXJuIF9wbGF5YmFja1Nl
c3Npb25JbnRlcmZhY2VNYWMtPnBsYXliYWNrU2Vzc2lvbk1vZGVsKCkuaXNQbGF5aW5nKCk7Cisg
ICAgaWYgKF9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMgJiYgX3BsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZU1hYy0+cGxheWJhY2tTZXNzaW9uTW9kZWwoKSkKKyAgICAgICAgcmV0dXJuIF9wbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMtPnBsYXliYWNrU2Vzc2lvbk1vZGVsKCktPmlzUGxheWlu
ZygpOwogCiAgICAgcmV0dXJuIE5POwogfQogCiAtICh2b2lkKXRvZ2dsZVBpY3R1cmVJblBpY3R1
cmUKIHsKLSAgICBpZiAoX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYykKLSAgICAgICAgX3Bs
YXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy0+cGxheWJhY2tTZXNzaW9uTW9kZWwoKS50b2dnbGVQ
aWN0dXJlSW5QaWN0dXJlKCk7CisgICAgaWYgKF9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMg
JiYgX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy0+cGxheWJhY2tTZXNzaW9uTW9kZWwoKSkK
KyAgICAgICAgX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy0+cGxheWJhY2tTZXNzaW9uTW9k
ZWwoKS0+dG9nZ2xlUGljdHVyZUluUGljdHVyZSgpOwogfQogCiBJR05PUkVfQ0xBTkdfV0FSTklO
R1NfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1Bs
YXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5oCmluZGV4IDAwMTdhMjZiYzQ5MzcwMWQzZGNjMDg0
MGQ1YWNmYzQzYTdiNDNiMGIuLmEyNzczZTZmOWYyM2JhMjY2NDg3NWI1ZTgxOWEyNzJjZTc1NDM1
OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vz
c2lvbk1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1Bs
YXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5oCkBAIC0zNSwxMCArMzUsOSBAQAogI2luY2x1ZGUg
PFdlYkNvcmUvVGltZVJhbmdlcy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoQ291bnRlZFNldC5oPgog
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLSNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL1dlYWtQdHJDb250YWluZXIuaD4KIAogI2lm
IFBMQVRGT1JNKElPUykKICNpbmNsdWRlIDxXZWJDb3JlL1BsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZUFWS2l0Lmg+CkBAIC01NywyMCArNTYsMTggQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBX
ZWJQYWdlUHJveHk7CiBjbGFzcyBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk7CiAKLWNsYXNz
IFBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dCBmaW5hbAotICAgIDogcHVibGljIFdlYkNvcmU6
OlBsYXliYWNrU2Vzc2lvbk1vZGVsCi0gICAgLCBwdWJsaWMgUmVmQ291bnRlZDxQbGF5YmFja1Nl
c3Npb25Nb2RlbENvbnRleHQ+IHsKK2NsYXNzIFBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dCBm
aW5hbDogcHVibGljIFJlZkNvdW50ZWQ8UGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0PiwgcHVi
bGljIFdlYkNvcmU6OlBsYXliYWNrU2Vzc2lvbk1vZGVsICB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZjxQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ+IGNyZWF0ZShXZWFrUHRyPFBsYXliYWNr
U2Vzc2lvbk1hbmFnZXJQcm94eT4mJiBtYW5hZ2VyLCB1aW50NjRfdCBjb250ZXh0SWQpCisgICAg
c3RhdGljIFJlZjxQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ+IGNyZWF0ZShQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHkmIG1hbmFnZXIsIHVpbnQ2NF90IGNvbnRleHRJZCkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dChX
VEZNb3ZlKG1hbmFnZXIpLCBjb250ZXh0SWQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0KG1hbmFnZXIsIGNvbnRleHRJZCkpOwogICAg
IH0KICAgICB2aXJ0dWFsIH5QbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQoKSB7IH0KIAogICAg
IHZvaWQgaW52YWxpZGF0ZSgpIHsgbV9tYW5hZ2VyID0gbnVsbHB0cjsgfQogCiAgICAgLy8gUGxh
eWJhY2tTZXNzaW9uTW9kZWwKLSAgICB2b2lkIGFkZENsaWVudChXZWFrUHRyPFdlYkNvcmU6OlBs
YXliYWNrU2Vzc2lvbk1vZGVsQ2xpZW50PiYmKSBmaW5hbDsKKyAgICB2b2lkIGFkZENsaWVudChX
ZWJDb3JlOjpQbGF5YmFja1Nlc3Npb25Nb2RlbENsaWVudCYpIGZpbmFsOwogICAgIHZvaWQgcmVt
b3ZlQ2xpZW50KFdlYkNvcmU6OlBsYXliYWNrU2Vzc2lvbk1vZGVsQ2xpZW50JilmaW5hbDsKIAog
ICAgIHZvaWQgZHVyYXRpb25DaGFuZ2VkKGRvdWJsZSk7CkBAIC05MSwyMSArODgsMTYgQEAgcHVi
bGljOgogICAgIHZvaWQgcGljdHVyZUluUGljdHVyZVN1cHBvcnRlZENoYW5nZWQoYm9vbCk7CiAg
ICAgdm9pZCBwaWN0dXJlSW5QaWN0dXJlQWN0aXZlQ2hhbmdlZChib29sKTsKIAotICAgIHVzaW5n
IFJlZkNvdW50ZWQ6OnJlZjsKLSAgICB1c2luZyBSZWZDb3VudGVkOjpkZXJlZjsKLQogcHJpdmF0
ZToKICAgICBmcmllbmQgY2xhc3MgVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OwogCi0gICAg
UGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0KFdlYWtQdHI8UGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5PiYmIG1hbmFnZXIsIHVpbnQ2NF90IGNvbnRleHRJZCkKLSAgICAgICAgOiBtX21hbmFn
ZXIoV1RGTW92ZShtYW5hZ2VyKSkKKyAgICBQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQoUGxh
eWJhY2tTZXNzaW9uTWFuYWdlclByb3h5JiBtYW5hZ2VyLCB1aW50NjRfdCBjb250ZXh0SWQpCisg
ICAgICAgIDogbV9tYW5hZ2VyKCZtYW5hZ2VyKQogICAgICAgICAsIG1fY29udGV4dElkKGNvbnRl
eHRJZCkKICAgICB7CiAgICAgfQogCiAgICAgLy8gUGxheWJhY2tTZXNzaW9uTW9kZWwKLSAgICB2
b2lkIHJlZlBsYXliYWNrU2Vzc2lvbk1vZGVsKCkgZmluYWwgeyByZWYoKTsgfQotICAgIHZvaWQg
ZGVyZWZQbGF5YmFja1Nlc3Npb25Nb2RlbCgpIGZpbmFsIHsgZGVyZWYoKTsgfQogICAgIHZvaWQg
cGxheSgpIGZpbmFsOwogICAgIHZvaWQgcGF1c2UoKSBmaW5hbDsKICAgICB2b2lkIHRvZ2dsZVBs
YXlTdGF0ZSgpIGZpbmFsOwpAQCAtMTQ3LDEwICsxMzksMTAgQEAgcHJpdmF0ZToKICAgICBkb3Vi
bGUgdm9sdW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV92b2x1bWU7IH0KICAgICBib29sIGlz
UGljdHVyZUluUGljdHVyZVN1cHBvcnRlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcGljdHVy
ZUluUGljdHVyZVN1cHBvcnRlZDsgfQogICAgIGJvb2wgaXNQaWN0dXJlSW5QaWN0dXJlQWN0aXZl
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9waWN0dXJlSW5QaWN0dXJlQWN0aXZlOyB9Ci0gICAg
Ci0gICAgV2Vha1B0cjxQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk+IG1fbWFuYWdlcjsKKwor
ICAgIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eSogbV9tYW5hZ2VyOwogICAgIHVpbnQ2NF90
IG1fY29udGV4dElkOwotICAgIFdlYWtQdHJDb250YWluZXI8V2ViQ29yZTo6UGxheWJhY2tTZXNz
aW9uTW9kZWxDbGllbnQ+IG1fY2xpZW50czsKKyAgICBIYXNoU2V0PFdlYkNvcmU6OlBsYXliYWNr
U2Vzc2lvbk1vZGVsQ2xpZW50Kj4gbV9jbGllbnRzOwogICAgIGRvdWJsZSBtX3BsYXliYWNrU3Rh
cnRlZFRpbWUgeyAwIH07CiAgICAgYm9vbCBtX3BsYXliYWNrU3RhcnRlZFRpbWVOZWVkc1VwZGF0
ZSB7IGZhbHNlIH07CiAgICAgZG91YmxlIG1fZHVyYXRpb24geyAwIH07CkBAIC0xNzcsMTAgKzE2
OSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3BpY3R1cmVJblBpY3R1cmVBY3RpdmUgeyBmYWxz
ZSB9OwogfTsKIAotY2xhc3MgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Ci0gICAgOiBwdWJs
aWMgUmVmQ291bnRlZDxQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk+Ci0gICAgLCBwcml2YXRl
IElQQzo6TWVzc2FnZVJlY2VpdmVyCi0gICAgLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5PiB7CitjbGFzcyBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHkgOiBwdWJsaWMgUmVmQ291bnRlZDxQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk+LCBwcml2
YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmUHRyPFBs
YXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eT4gY3JlYXRlKFdlYlBhZ2VQcm94eSYpOwogICAgIHZp
cnR1YWwgflBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5
Lm1tCmluZGV4IDY5OWJkZmQ3ZTMxYWIwNjhkMWE1ZjVkYjc4MTc4YzY1YTc4MTIyNzcuLmRjMzYx
NzFiN2I0MWY2MmVhZTRiZTNkZmQzZWUzY2RmOWUzYzA2ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHkubW0KQEAgLTM4LDE0ICszOCwxNiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogI3By
YWdtYSBtYXJrIC0gUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0CiAKLXZvaWQgUGxheWJhY2tT
ZXNzaW9uTW9kZWxDb250ZXh0OjphZGRDbGllbnQoV2Vha1B0cjxQbGF5YmFja1Nlc3Npb25Nb2Rl
bENsaWVudD4mJiBjbGllbnQpCit2b2lkIFBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dDo6YWRk
Q2xpZW50KFBsYXliYWNrU2Vzc2lvbk1vZGVsQ2xpZW50JiBjbGllbnQpCiB7Ci0gICAgbV9jbGll
bnRzLmFkZChXVEZNb3ZlKGNsaWVudCkpOworICAgIEFTU0VSVCghbV9jbGllbnRzLmNvbnRhaW5z
KCZjbGllbnQpKTsKKyAgICBtX2NsaWVudHMuYWRkKCZjbGllbnQpOwogfQogCiB2b2lkIFBsYXli
YWNrU2Vzc2lvbk1vZGVsQ29udGV4dDo6cmVtb3ZlQ2xpZW50KFBsYXliYWNrU2Vzc2lvbk1vZGVs
Q2xpZW50JiBjbGllbnQpCiB7Ci0gICAgbV9jbGllbnRzLnJlbW92ZShjbGllbnQpOworICAgIEFT
U0VSVChtX2NsaWVudHMuY29udGFpbnMoJmNsaWVudCkpOworICAgIG1fY2xpZW50cy5yZW1vdmUo
JmNsaWVudCk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0OjpwbGF5KCkK
QEAgLTE2NCw5ICsxNjYsOCBAQCB2b2lkIFBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dDo6cGxh
eWJhY2tTdGFydGVkVGltZUNoYW5nZWQoZG91YmxlIHBsYXliYWNrU3Rhcgogdm9pZCBQbGF5YmFj
a1Nlc3Npb25Nb2RlbENvbnRleHQ6OmR1cmF0aW9uQ2hhbmdlZChkb3VibGUgZHVyYXRpb24pCiB7
CiAgICAgbV9kdXJhdGlvbiA9IGR1cmF0aW9uOwotICAgIG1fY2xpZW50cy5mb3JFYWNoTm9uTnVs
bE1lbWJlcihbZHVyYXRpb25dIChhdXRvJiBjbGllbnQpIHsKLSAgICAgICAgY2xpZW50LmR1cmF0
aW9uQ2hhbmdlZChkdXJhdGlvbik7Ci0gICAgfSk7CisgICAgZm9yIChhdXRvKiBjbGllbnQgOiBt
X2NsaWVudHMpCisgICAgICAgIGNsaWVudC0+ZHVyYXRpb25DaGFuZ2VkKGR1cmF0aW9uKTsKIH0K
IAogdm9pZCBQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ6OmN1cnJlbnRUaW1lQ2hhbmdlZChk
b3VibGUgY3VycmVudFRpbWUpCkBAIC0xNzYsMjYgKzE3NywyMyBAQCB2b2lkIFBsYXliYWNrU2Vz
c2lvbk1vZGVsQ29udGV4dDo6Y3VycmVudFRpbWVDaGFuZ2VkKGRvdWJsZSBjdXJyZW50VGltZSkK
ICAgICBpZiAobV9wbGF5YmFja1N0YXJ0ZWRUaW1lTmVlZHNVcGRhdGUpCiAgICAgICAgIHBsYXli
YWNrU3RhcnRlZFRpbWVDaGFuZ2VkKGN1cnJlbnRUaW1lKTsKIAotICAgIG1fY2xpZW50cy5mb3JF
YWNoTm9uTnVsbE1lbWJlcihbY3VycmVudFRpbWUsIGFuY2hvclRpbWVdIChhdXRvJiBjbGllbnQp
IHsKLSAgICAgICAgY2xpZW50LmN1cnJlbnRUaW1lQ2hhbmdlZChjdXJyZW50VGltZSwgYW5jaG9y
VGltZSk7Ci0gICAgfSk7CisgICAgZm9yIChhdXRvKiBjbGllbnQgOiBtX2NsaWVudHMpCisgICAg
ICAgIGNsaWVudC0+Y3VycmVudFRpbWVDaGFuZ2VkKGN1cnJlbnRUaW1lLCBhbmNob3JUaW1lKTsK
IH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ6OmJ1ZmZlcmVkVGltZUNoYW5n
ZWQoZG91YmxlIGJ1ZmZlcmVkVGltZSkKIHsKICAgICBtX2J1ZmZlcmVkVGltZSA9IGJ1ZmZlcmVk
VGltZTsKLSAgICBtX2NsaWVudHMuZm9yRWFjaE5vbk51bGxNZW1iZXIoW2J1ZmZlcmVkVGltZV0g
KGF1dG8mIGNsaWVudCkgewotICAgICAgICBjbGllbnQuYnVmZmVyZWRUaW1lQ2hhbmdlZChidWZm
ZXJlZFRpbWUpOwotICAgIH0pOworICAgIGZvciAoYXV0byogY2xpZW50IDogbV9jbGllbnRzKQor
ICAgICAgICBjbGllbnQtPmJ1ZmZlcmVkVGltZUNoYW5nZWQoYnVmZmVyZWRUaW1lKTsKIH0KIAog
dm9pZCBQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ6OnJhdGVDaGFuZ2VkKGJvb2wgaXNQbGF5
aW5nLCBmbG9hdCBwbGF5YmFja1JhdGUpCiB7CiAgICAgbV9pc1BsYXlpbmcgPSBpc1BsYXlpbmc7
CiAgICAgbV9wbGF5YmFja1JhdGUgPSBwbGF5YmFja1JhdGU7Ci0gICAgbV9jbGllbnRzLmZvckVh
Y2hOb25OdWxsTWVtYmVyKFtpc1BsYXlpbmcsIHBsYXliYWNrUmF0ZV0gKGF1dG8mIGNsaWVudCkg
ewotICAgICAgICBjbGllbnQucmF0ZUNoYW5nZWQoaXNQbGF5aW5nLCBwbGF5YmFja1JhdGUpOwot
ICAgIH0pOworICAgIGZvciAoYXV0byogY2xpZW50IDogbV9jbGllbnRzKQorICAgICAgICBjbGll
bnQtPnJhdGVDaGFuZ2VkKGlzUGxheWluZywgcGxheWJhY2tSYXRlKTsKIH0KIAogdm9pZCBQbGF5
YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ6OnNlZWthYmxlUmFuZ2VzQ2hhbmdlZChXZWJDb3JlOjpU
aW1lUmFuZ2VzJiBzZWVrYWJsZVJhbmdlcywgZG91YmxlIGxhc3RNb2RpZmllZFRpbWUsIGRvdWJs
ZSBsaXZlVXBkYXRlSW50ZXJ2YWwpCkBAIC0yMDMsMjYgKzIwMSwyMyBAQCB2b2lkIFBsYXliYWNr
U2Vzc2lvbk1vZGVsQ29udGV4dDo6c2Vla2FibGVSYW5nZXNDaGFuZ2VkKFdlYkNvcmU6OlRpbWVS
YW5nZXMmIHNlZQogICAgIG1fc2Vla2FibGVSYW5nZXMgPSBzZWVrYWJsZVJhbmdlczsKICAgICBt
X3NlZWthYmxlVGltZVJhbmdlc0xhc3RNb2RpZmllZFRpbWUgPSBsYXN0TW9kaWZpZWRUaW1lOwog
ICAgIG1fbGl2ZVVwZGF0ZUludGVydmFsID0gbGl2ZVVwZGF0ZUludGVydmFsOwotICAgIG1fY2xp
ZW50cy5mb3JFYWNoTm9uTnVsbE1lbWJlcihbc2Vla2FibGVSYW5nZXMgPSBtYWtlUmVmKHNlZWth
YmxlUmFuZ2VzKSwgbGFzdE1vZGlmaWVkVGltZSwgbGl2ZVVwZGF0ZUludGVydmFsXSAoYXV0byYg
Y2xpZW50KSB7Ci0gICAgICAgIGNsaWVudC5zZWVrYWJsZVJhbmdlc0NoYW5nZWQoc2Vla2FibGVS
YW5nZXMsIGxhc3RNb2RpZmllZFRpbWUsIGxpdmVVcGRhdGVJbnRlcnZhbCk7Ci0gICAgfSk7Cisg
ICAgZm9yIChhdXRvKiBjbGllbnQgOiBtX2NsaWVudHMpCisgICAgICAgIGNsaWVudC0+c2Vla2Fi
bGVSYW5nZXNDaGFuZ2VkKHNlZWthYmxlUmFuZ2VzLCBsYXN0TW9kaWZpZWRUaW1lLCBsaXZlVXBk
YXRlSW50ZXJ2YWwpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dDo6Y2Fu
UGxheUZhc3RSZXZlcnNlQ2hhbmdlZChib29sIGNhblBsYXlGYXN0UmV2ZXJzZSkKIHsKICAgICBt
X2NhblBsYXlGYXN0UmV2ZXJzZSA9IGNhblBsYXlGYXN0UmV2ZXJzZTsKLSAgICBtX2NsaWVudHMu
Zm9yRWFjaE5vbk51bGxNZW1iZXIoW2NhblBsYXlGYXN0UmV2ZXJzZV0gKGF1dG8mIGNsaWVudCkg
ewotICAgICAgICBjbGllbnQuY2FuUGxheUZhc3RSZXZlcnNlQ2hhbmdlZChjYW5QbGF5RmFzdFJl
dmVyc2UpOwotICAgIH0pOworICAgIGZvciAoYXV0byogY2xpZW50IDogbV9jbGllbnRzKQorICAg
ICAgICBjbGllbnQtPmNhblBsYXlGYXN0UmV2ZXJzZUNoYW5nZWQoY2FuUGxheUZhc3RSZXZlcnNl
KTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ6OmF1ZGlvTWVkaWFTZWxl
Y3Rpb25PcHRpb25zQ2hhbmdlZChjb25zdCBWZWN0b3I8TWVkaWFTZWxlY3Rpb25PcHRpb24+JiBh
dWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucywgdWludDY0X3QgYXVkaW9NZWRpYVNlbGVjdGVkSW5k
ZXgpCiB7CiAgICAgbV9hdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyA9IGF1ZGlvTWVkaWFTZWxl
Y3Rpb25PcHRpb25zOwogICAgIG1fYXVkaW9NZWRpYVNlbGVjdGVkSW5kZXggPSBhdWRpb01lZGlh
U2VsZWN0ZWRJbmRleDsKLSAgICBtX2NsaWVudHMuZm9yRWFjaE5vbk51bGxNZW1iZXIoW2F1ZGlv
TWVkaWFTZWxlY3Rpb25PcHRpb25zLCBhdWRpb01lZGlhU2VsZWN0ZWRJbmRleF0gKGF1dG8mIGNs
aWVudCkgewotICAgICAgICBjbGllbnQuYXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2Vk
KGF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zLCBhdWRpb01lZGlhU2VsZWN0ZWRJbmRleCk7Ci0g
ICAgfSk7CisgICAgZm9yIChhdXRvKiBjbGllbnQgOiBtX2NsaWVudHMpCisgICAgICAgIGNsaWVu
dC0+YXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKGF1ZGlvTWVkaWFTZWxlY3Rpb25P
cHRpb25zLCBhdWRpb01lZGlhU2VsZWN0ZWRJbmRleCk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNz
aW9uTW9kZWxDb250ZXh0OjpsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChjb25z
dCBWZWN0b3I8TWVkaWFTZWxlY3Rpb25PcHRpb24+JiBsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRp
b25zLCB1aW50NjRfdCBsZWdpYmxlTWVkaWFTZWxlY3RlZEluZGV4KQpAQCAtMjMwLDI3ICsyMjUs
MjQgQEAgdm9pZCBQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ6OmxlZ2libGVNZWRpYVNlbGVj
dGlvbk9wdGlvbnNDaGFuZ2VkKGNvbnN0IFZlY3QKICAgICBtX2xlZ2libGVNZWRpYVNlbGVjdGlv
bk9wdGlvbnMgPSBsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zOwogICAgIG1fbGVnaWJsZU1l
ZGlhU2VsZWN0ZWRJbmRleCA9IGxlZ2libGVNZWRpYVNlbGVjdGVkSW5kZXg7CiAKLSAgICBtX2Ns
aWVudHMuZm9yRWFjaE5vbk51bGxNZW1iZXIoW2xlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMs
IGxlZ2libGVNZWRpYVNlbGVjdGVkSW5kZXhdIChhdXRvJiBjbGllbnQpIHsKLSAgICAgICAgY2xp
ZW50LmxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKGxlZ2libGVNZWRpYVNlbGVj
dGlvbk9wdGlvbnMsIGxlZ2libGVNZWRpYVNlbGVjdGVkSW5kZXgpOwotICAgIH0pOworICAgIGZv
ciAoYXV0byogY2xpZW50IDogbV9jbGllbnRzKQorICAgICAgICBjbGllbnQtPmxlZ2libGVNZWRp
YVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKGxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMsIGxl
Z2libGVNZWRpYVNlbGVjdGVkSW5kZXgpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1vZGVs
Q29udGV4dDo6YXVkaW9NZWRpYVNlbGVjdGlvbkluZGV4Q2hhbmdlZCh1aW50NjRfdCBzZWxlY3Rl
ZEluZGV4KQogewogICAgIG1fYXVkaW9NZWRpYVNlbGVjdGVkSW5kZXggPSBzZWxlY3RlZEluZGV4
OwogCi0gICAgbV9jbGllbnRzLmZvckVhY2hOb25OdWxsTWVtYmVyKFtzZWxlY3RlZEluZGV4XSAo
YXV0byYgY2xpZW50KSB7Ci0gICAgICAgIGNsaWVudC5hdWRpb01lZGlhU2VsZWN0aW9uSW5kZXhD
aGFuZ2VkKHNlbGVjdGVkSW5kZXgpOwotICAgIH0pOworICAgIGZvciAoYXV0byogY2xpZW50IDog
bV9jbGllbnRzKQorICAgICAgICBjbGllbnQtPmF1ZGlvTWVkaWFTZWxlY3Rpb25JbmRleENoYW5n
ZWQoc2VsZWN0ZWRJbmRleCk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0
OjpsZWdpYmxlTWVkaWFTZWxlY3Rpb25JbmRleENoYW5nZWQodWludDY0X3Qgc2VsZWN0ZWRJbmRl
eCkKIHsKICAgICBtX2xlZ2libGVNZWRpYVNlbGVjdGVkSW5kZXggPSBzZWxlY3RlZEluZGV4Owog
Ci0gICAgbV9jbGllbnRzLmZvckVhY2hOb25OdWxsTWVtYmVyKFtzZWxlY3RlZEluZGV4XSAoYXV0
byYgY2xpZW50KSB7Ci0gICAgICAgIGNsaWVudC5sZWdpYmxlTWVkaWFTZWxlY3Rpb25JbmRleENo
YW5nZWQoc2VsZWN0ZWRJbmRleCk7Ci0gICAgfSk7CisgICAgZm9yIChhdXRvKiBjbGllbnQgOiBt
X2NsaWVudHMpCisgICAgICAgIGNsaWVudC0+bGVnaWJsZU1lZGlhU2VsZWN0aW9uSW5kZXhDaGFu
Z2VkKHNlbGVjdGVkSW5kZXgpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4
dDo6ZXh0ZXJuYWxQbGF5YmFja0NoYW5nZWQoYm9vbCBlbmFibGVkLCBQbGF5YmFja1Nlc3Npb25N
b2RlbDo6RXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBsb2Nh
bGl6ZWROYW1lKQpAQCAtMjU5LDQ5ICsyNTEsNDMgQEAgdm9pZCBQbGF5YmFja1Nlc3Npb25Nb2Rl
bENvbnRleHQ6OmV4dGVybmFsUGxheWJhY2tDaGFuZ2VkKGJvb2wgZW5hYmxlZCwgUGxheWJhY2sK
ICAgICBtX2V4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlID0gdHlwZTsKICAgICBtX2V4dGVybmFs
UGxheWJhY2tMb2NhbGl6ZWREZXZpY2VOYW1lID0gbG9jYWxpemVkTmFtZTsKIAotICAgIG1fY2xp
ZW50cy5mb3JFYWNoTm9uTnVsbE1lbWJlcihbZW5hYmxlZCwgdHlwZSwgbG9jYWxpemVkTmFtZV0g
KGF1dG8mIGNsaWVudCkgewotICAgICAgICBjbGllbnQuZXh0ZXJuYWxQbGF5YmFja0NoYW5nZWQo
ZW5hYmxlZCwgdHlwZSwgbG9jYWxpemVkTmFtZSk7Ci0gICAgfSk7CisgICAgZm9yIChhdXRvKiBj
bGllbnQgOiBtX2NsaWVudHMpCisgICAgICAgIGNsaWVudC0+ZXh0ZXJuYWxQbGF5YmFja0NoYW5n
ZWQoZW5hYmxlZCwgdHlwZSwgbG9jYWxpemVkTmFtZSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNz
aW9uTW9kZWxDb250ZXh0Ojp3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZENoYW5nZWQoYm9v
bCB3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCkKIHsKICAgICBtX3dpcmVsZXNzVmlkZW9Q
bGF5YmFja0Rpc2FibGVkID0gd2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQ7Ci0gICAgbV9j
bGllbnRzLmZvckVhY2hOb25OdWxsTWVtYmVyKFt3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxl
ZF0gKGF1dG8mIGNsaWVudCkgewotICAgICAgICBjbGllbnQud2lyZWxlc3NWaWRlb1BsYXliYWNr
RGlzYWJsZWRDaGFuZ2VkKHdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKTsKLSAgICB9KTsK
KyAgICBmb3IgKGF1dG8qIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50LT53aXJl
bGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZENoYW5nZWQod2lyZWxlc3NWaWRlb1BsYXliYWNrRGlz
YWJsZWQpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dDo6bXV0ZWRDaGFu
Z2VkKGJvb2wgbXV0ZWQpCiB7CiAgICAgbV9tdXRlZCA9IG11dGVkOwotICAgIG1fY2xpZW50cy5m
b3JFYWNoTm9uTnVsbE1lbWJlcihbbXV0ZWRdIChhdXRvJiBjbGllbnQpIHsKLSAgICAgICAgY2xp
ZW50Lm11dGVkQ2hhbmdlZChtdXRlZCk7Ci0gICAgfSk7CisgICAgZm9yIChhdXRvKiBjbGllbnQg
OiBtX2NsaWVudHMpCisgICAgICAgIGNsaWVudC0+bXV0ZWRDaGFuZ2VkKG11dGVkKTsKIH0KIAog
dm9pZCBQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ6OnZvbHVtZUNoYW5nZWQoZG91YmxlIHZv
bHVtZSkKIHsKICAgICBtX3ZvbHVtZSA9IHZvbHVtZTsKLSAgICBtX2NsaWVudHMuZm9yRWFjaE5v
bk51bGxNZW1iZXIoW3ZvbHVtZV0gKGF1dG8mIGNsaWVudCkgewotICAgICAgICBjbGllbnQudm9s
dW1lQ2hhbmdlZCh2b2x1bWUpOwotICAgIH0pOworICAgIGZvciAoYXV0byogY2xpZW50IDogbV9j
bGllbnRzKQorICAgICAgICBjbGllbnQtPnZvbHVtZUNoYW5nZWQodm9sdW1lKTsKIH0KIAogdm9p
ZCBQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ6OnBpY3R1cmVJblBpY3R1cmVTdXBwb3J0ZWRD
aGFuZ2VkKGJvb2wgc3VwcG9ydGVkKQogewogICAgIG1fcGljdHVyZUluUGljdHVyZVN1cHBvcnRl
ZCA9IHN1cHBvcnRlZDsKLSAgICBtX2NsaWVudHMuZm9yRWFjaE5vbk51bGxNZW1iZXIoW3N1cHBv
cnRlZF0gKGF1dG8mIGNsaWVudCkgewotICAgICAgICBjbGllbnQuaXNQaWN0dXJlSW5QaWN0dXJl
U3VwcG9ydGVkQ2hhbmdlZChzdXBwb3J0ZWQpOwotICAgIH0pOworICAgIGZvciAoYXV0byogY2xp
ZW50IDogbV9jbGllbnRzKQorICAgICAgICBjbGllbnQtPmlzUGljdHVyZUluUGljdHVyZVN1cHBv
cnRlZENoYW5nZWQoc3VwcG9ydGVkKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25Nb2RlbENv
bnRleHQ6OnBpY3R1cmVJblBpY3R1cmVBY3RpdmVDaGFuZ2VkKGJvb2wgYWN0aXZlKQogewogICAg
IG1fcGljdHVyZUluUGljdHVyZUFjdGl2ZSA9IGFjdGl2ZTsKLSAgICBtX2NsaWVudHMuZm9yRWFj
aE5vbk51bGxNZW1iZXIoW2FjdGl2ZV0gKGF1dG8mIGNsaWVudCkgewotICAgICAgICBjbGllbnQu
cGljdHVyZUluUGljdHVyZUFjdGl2ZUNoYW5nZWQoYWN0aXZlKTsKLSAgICB9KTsKKyAgICBmb3Ig
KGF1dG8qIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50LT5waWN0dXJlSW5QaWN0
dXJlQWN0aXZlQ2hhbmdlZChhY3RpdmUpOwogfQogCiAjcHJhZ21hIG1hcmsgLSBQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHkKQEAgLTMyOSwxNCArMzE1LDIyIEBAIHZvaWQgUGxheWJhY2tTZXNz
aW9uTWFuYWdlclByb3h5OjppbnZhbGlkYXRlKCkKICAgICBtX3BhZ2UtPnByb2Nlc3MoKS5yZW1v
dmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKICAgICBtX3BhZ2UgPSBu
dWxscHRyOwogCi0gICAgbV9jb250ZXh0TWFwLmNsZWFyKCk7CisgICAgYXV0byBjb250ZXh0TWFw
ID0gV1RGTW92ZShtX2NvbnRleHRNYXApOwogICAgIG1fY2xpZW50Q291bnRzLmNsZWFyKCk7CisK
KyAgICBmb3IgKGF1dG8mIHR1cGxlIDogY29udGV4dE1hcC52YWx1ZXMoKSkgeworICAgICAgICBS
ZWZQdHI8UGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0PiBtb2RlbDsKKyAgICAgICAgUmVmUHRy
PFBsYXRmb3JtUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlPiBpbnRlcmZhY2U7CisgICAgICAgIHN0
ZDo6dGllKG1vZGVsLCBpbnRlcmZhY2UpID0gdHVwbGU7CisKKyAgICAgICAgaW50ZXJmYWNlLT5p
bnZhbGlkYXRlKCk7CisgICAgfQogfQogCiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6Ok1v
ZGVsSW50ZXJmYWNlVHVwbGUgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpjcmVhdGVNb2Rl
bEFuZEludGVyZmFjZSh1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgUmVmPFBsYXliYWNrU2Vz
c2lvbk1vZGVsQ29udGV4dD4gbW9kZWwgPSBQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ6OmNy
ZWF0ZShtYWtlV2Vha1B0cih0aGlzKSwgY29udGV4dElkKTsKLSAgICBSZWY8UGxhdGZvcm1QbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2U+IGludGVyZmFjZSA9IFBsYXRmb3JtUGxheWJhY2tTZXNzaW9u
SW50ZXJmYWNlOjpjcmVhdGUobW9kZWwuY29weVJlZigpKTsKKyAgICBSZWY8UGxheWJhY2tTZXNz
aW9uTW9kZWxDb250ZXh0PiBtb2RlbCA9IFBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dDo6Y3Jl
YXRlKCp0aGlzLCBjb250ZXh0SWQpOworICAgIFJlZjxQbGF0Zm9ybVBsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZT4gaW50ZXJmYWNlID0gUGxhdGZvcm1QbGF5YmFja1Nlc3Npb25JbnRlcmZhY2U6OmNy
ZWF0ZShtb2RlbCk7CiAKICAgICByZXR1cm4gc3RkOjptYWtlX3R1cGxlKFdURk1vdmUobW9kZWwp
LCBXVEZNb3ZlKGludGVyZmFjZSkpOwogfQpAQCAtMzY2LDggKzM2MCwxMSBAQCB2b2lkIFBsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6YWRkQ2xpZW50Rm9yQ29udGV4dCh1aW50NjRfdCBjb250
ZXh0SWQpCiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpyZW1vdmVDbGllbnRG
b3JDb250ZXh0KHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBpZiAobV9jbGllbnRDb3VudHMu
cmVtb3ZlKGNvbnRleHRJZCkpCi0gICAgICAgIG1fY29udGV4dE1hcC5yZW1vdmUoY29udGV4dElk
KTsKKyAgICBpZiAoIW1fY2xpZW50Q291bnRzLnJlbW92ZShjb250ZXh0SWQpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBlbnN1cmVJbnRlcmZhY2UoY29udGV4dElkKS5pbnZhbGlkYXRlKCk7Cisg
ICAgbV9jb250ZXh0TWFwLnJlbW92ZShjb250ZXh0SWQpOwogfQogCiAjcHJhZ21hIG1hcmsgTWVz
c2FnZXMgZnJvbSBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyCkBAIC0zODQsOCArMzgxLDcgQEAgdm9p
ZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNldFVwUGxheWJhY2tDb250cm9sc01hbmFn
ZXJXaXRoSUQodWludDY0X3QgY28KICAgICBlbnN1cmVJbnRlcmZhY2UobV9jb250cm9sc01hbmFn
ZXJDb250ZXh0SWQpLmVuc3VyZUNvbnRyb2xzTWFuYWdlcigpOwogICAgIGFkZENsaWVudEZvckNv
bnRleHQobV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQpOwogCi0gICAgaWYgKG1fcGFnZSkKLSAg
ICAgICAgbV9wYWdlLT52aWRlb0NvbnRyb2xzTWFuYWdlckRpZENoYW5nZSgpOworICAgIG1fcGFn
ZS0+dmlkZW9Db250cm9sc01hbmFnZXJEaWRDaGFuZ2UoKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHk6OmNsZWFyUGxheWJhY2tDb250cm9sc01hbmFnZXIoKQpAQCAtMzk1
LDggKzM5MSw3IEBAIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpjbGVhclBsYXli
YWNrQ29udHJvbHNNYW5hZ2VyKCkKIAogICAgIHJlbW92ZUNsaWVudEZvckNvbnRleHQobV9jb250
cm9sc01hbmFnZXJDb250ZXh0SWQpOwogICAgIG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElkID0g
MDsKLSAgICBpZiAobV9wYWdlKQotICAgICAgICBtX3BhZ2UtPnZpZGVvQ29udHJvbHNNYW5hZ2Vy
RGlkQ2hhbmdlKCk7CisgICAgbV9wYWdlLT52aWRlb0NvbnRyb2xzTWFuYWdlckRpZENoYW5nZSgp
OwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6cmVzZXRNZWRpYVN0YXRl
KHVpbnQ2NF90IGNvbnRleHRJZCkKQEAgLTUwMyw3ICs0OTgsNyBAQCB2b2lkIFBsYXliYWNrU2Vz
c2lvbk1hbmFnZXJQcm94eTo6cGljdHVyZUluUGljdHVyZUFjdGl2ZUNoYW5nZWQodWludDY0X3Qg
Y29udGV4dAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmhhbmRsZUNvbnRyb2xs
ZWRFbGVtZW50SURSZXNwb25zZSh1aW50NjRfdCBjb250ZXh0SWQsIFN0cmluZyBpZGVudGlmaWVy
KSBjb25zdAogewogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBpZiAobV9wYWdlICYmIGNvbnRleHRJ
ZCA9PSBtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCkKKyAgICBpZiAoY29udGV4dElkID09IG1f
Y29udHJvbHNNYW5hZ2VyQ29udGV4dElkKQogICAgICAgICBtX3BhZ2UtPmhhbmRsZUNvbnRyb2xs
ZWRFbGVtZW50SURSZXNwb25zZShpZGVudGlmaWVyKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFN
KGNvbnRleHRJZCk7CkBAIC01MTYsOTggKzUxMSw4MiBAQCB2b2lkIFBsYXliYWNrU2Vzc2lvbk1h
bmFnZXJQcm94eTo6aGFuZGxlQ29udHJvbGxlZEVsZW1lbnRJRFJlc3BvbnNlKHVpbnQ2NF90IGNv
bgogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6cGxheSh1aW50NjRfdCBjb250
ZXh0SWQpCiB7Ci0gICAgaWYgKG1fcGFnZSkKLSAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpQbGF5KGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlE
KCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6
UGxheShjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHk6OnBhdXNlKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBpZiAo
bV9wYWdlKQotICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1h
bmFnZXI6OlBhdXNlKGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+
c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6UGF1c2UoY29udGV4dElkKSwg
bV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5
Ojp0b2dnbGVQbGF5U3RhdGUodWludDY0X3QgY29udGV4dElkKQogewotICAgIGlmIChtX3BhZ2Up
Ci0gICAgICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6
VG9nZ2xlUGxheVN0YXRlKGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFn
ZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6VG9nZ2xlUGxheVN0YXRl
KGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lv
bk1hbmFnZXJQcm94eTo6YmVnaW5TY3J1YmJpbmcodWludDY0X3QgY29udGV4dElkKQogewotICAg
IGlmIChtX3BhZ2UpCi0gICAgICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNz
aW9uTWFuYWdlcjo6QmVnaW5TY3J1YmJpbmcoY29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7
CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpCZWdp
blNjcnViYmluZyhjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIH0KIAogdm9pZCBQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmVuZFNjcnViYmluZyh1aW50NjRfdCBjb250ZXh0SWQp
CiB7Ci0gICAgaWYgKG1fcGFnZSkKLSAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyOjpFbmRTY3J1YmJpbmcoY29udGV4dElkKSwgbV9wYWdlLT5wYWdl
SUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
OjpFbmRTY3J1YmJpbmcoY29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAKIHZvaWQg
UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZWVrVG9UaW1lKHVpbnQ2NF90IGNvbnRleHRJ
ZCwgZG91YmxlIHRpbWUsIGRvdWJsZSB0b2xlcmFuY2VCZWZvcmUsIGRvdWJsZSB0b2xlcmFuY2VB
ZnRlcikKIHsKLSAgICBpZiAobV9wYWdlKQotICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlNlZWtUb1RpbWUoY29udGV4dElkLCB0aW1lLCB0b2xl
cmFuY2VCZWZvcmUsIHRvbGVyYW5jZUFmdGVyKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpTZWVrVG9UaW1lKGNv
bnRleHRJZCwgdGltZSwgdG9sZXJhbmNlQmVmb3JlLCB0b2xlcmFuY2VBZnRlciksIG1fcGFnZS0+
cGFnZUlEKCkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6ZmFzdFNl
ZWsodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgdGltZSkKIHsKLSAgICBpZiAobV9wYWdlKQot
ICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OkZh
c3RTZWVrKGNvbnRleHRJZCwgdGltZSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+
c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6RmFzdFNlZWsoY29udGV4dElk
LCB0aW1lKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFu
YWdlclByb3h5OjpiZWdpblNjYW5uaW5nRm9yd2FyZCh1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0g
ICAgaWYgKG1fcGFnZSkKLSAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyOjpCZWdpblNjYW5uaW5nRm9yd2FyZChjb250ZXh0SWQpLCBtX3BhZ2UtPnBh
Z2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXI6OkJlZ2luU2Nhbm5pbmdGb3J3YXJkKGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOwog
fQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6YmVnaW5TY2FubmluZ0JhY2t3
YXJkKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBpZiAobV9wYWdlKQotICAgICAgICBtX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OkJlZ2luU2Nhbm5pbmdC
YWNrd2FyZChjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQo
TWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OkJlZ2luU2Nhbm5pbmdCYWNrd2FyZChj
b250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyUHJveHk6OmVuZFNjYW5uaW5nKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBpZiAo
bV9wYWdlKQotICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1h
bmFnZXI6OkVuZFNjYW5uaW5nKGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1f
cGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6RW5kU2Nhbm5pbmco
Y29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5OjpzZWxlY3RBdWRpb01lZGlhT3B0aW9uKHVpbnQ2NF90IGNvbnRleHRJZCwg
dWludDY0X3QgaW5kZXgpCiB7Ci0gICAgaWYgKG1fcGFnZSkKLSAgICAgICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpTZWxlY3RBdWRpb01lZGlhT3B0aW9u
KGNvbnRleHRJZCwgaW5kZXgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQo
TWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlNlbGVjdEF1ZGlvTWVkaWFPcHRpb24o
Y29udGV4dElkLCBpbmRleCksIG1fcGFnZS0+cGFnZUlEKCkpOwogfQogCiB2b2lkIFBsYXliYWNr
U2Vzc2lvbk1hbmFnZXJQcm94eTo6c2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKHVpbnQ2NF90IGNv
bnRleHRJZCwgdWludDY0X3QgaW5kZXgpCiB7Ci0gICAgaWYgKG1fcGFnZSkKLSAgICAgICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpTZWxlY3RMZWdpYmxl
TWVkaWFPcHRpb24oY29udGV4dElkLCBpbmRleCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1f
cGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6U2VsZWN0TGVnaWJs
ZU1lZGlhT3B0aW9uKGNvbnRleHRJZCwgaW5kZXgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIH0KIAog
dm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnRvZ2dsZVBpY3R1cmVJblBpY3R1cmUo
dWludDY0X3QgY29udGV4dElkKQogewotICAgIGlmIChtX3BhZ2UpCi0gICAgICAgIG1fcGFnZS0+
c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6VG9nZ2xlUGljdHVyZUluUGlj
dHVyZShjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVz
c2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlRvZ2dsZVBpY3R1cmVJblBpY3R1cmUoY29u
dGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFu
YWdlclByb3h5Ojp0b2dnbGVNdXRlZCh1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgaWYgKG1f
cGFnZSkKLSAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyOjpUb2dnbGVNdXRlZChjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlRvZ2dsZU11dGVkKGNv
bnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1h
bmFnZXJQcm94eTo6c2V0TXV0ZWQodWludDY0X3QgY29udGV4dElkLCBib29sIG11dGVkKQogewot
ICAgIGlmIChtX3BhZ2UpCi0gICAgICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tT
ZXNzaW9uTWFuYWdlcjo6U2V0TXV0ZWQoY29udGV4dElkLCBtdXRlZCksIG1fcGFnZS0+cGFnZUlE
KCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6
U2V0TXV0ZWQoY29udGV4dElkLCBtdXRlZCksIG1fcGFnZS0+cGFnZUlEKCkpOwogfQogCiB2b2lk
IFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6c2V0Vm9sdW1lKHVpbnQ2NF90IGNvbnRleHRJ
ZCwgZG91YmxlIHZvbHVtZSkKIHsKLSAgICBpZiAobV9wYWdlKQotICAgICAgICBtX3BhZ2UtPnNl
bmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlNldFZvbHVtZShjb250ZXh0SWQs
IHZvbHVtZSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6
UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6U2V0Vm9sdW1lKGNvbnRleHRJZCwgdm9sdW1lKSwgbV9w
YWdlLT5wYWdlSUQoKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Ojpz
ZXRQbGF5aW5nT25TZWNvbmRTY3JlZW4odWludDY0X3QgY29udGV4dElkLCBib29sIHZhbHVlKQpA
QCAtNjE4LDcgKzU5Nyw3IEBAIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZXRQ
bGF5aW5nT25TZWNvbmRTY3JlZW4odWludDY0X3QgY29udGV4dElkLCBiCiAKIHZvaWQgUGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5OjpyZXF1ZXN0Q29udHJvbGxlZEVsZW1lbnRJRCgpCiB7Ci0g
ICAgaWYgKG1fcGFnZSAmJiBtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCkKKyAgICBpZiAobV9j
b250cm9sc01hbmFnZXJDb250ZXh0SWQpCiAgICAgICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6
UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6SGFuZGxlQ29udHJvbGxlZEVsZW1lbnRJRFJlcXVlc3Qo
bV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHkuaAppbmRleCBiNmY3NGY1ZDQxYjc0NjIyN2M5NmQ3ODNjMjMwZWQ1MTU4
NjJjMGFiLi40ODY2M2MyNTJiYTg3OGJiYTFhMTkxNDAzYzJjY2FlZTMxNjEwOTE2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHkuaApAQCAtMzMsMTEgKzMzLDkgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Zp
ZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9WaWRlb0Z1
bGxzY3JlZW5Nb2RlbC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3Rm
L0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgotI2luY2x1ZGUgPHd0Zi9XZWFrUHRyQ29udGFpbmVyLmg+CiAKICNpZiBQTEFURk9STShJ
T1MpCiAjaW5jbHVkZSA8V2ViQ29yZS9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oPgpA
QCAtNjEsOSArNTksMTIgQEAgY2xhc3MgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OwogY2xh
c3MgVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0IGZpbmFsCiAgICAgOiBwdWJsaWMgUmVmQ291
bnRlZDxWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ+CiAgICAgLCBwdWJsaWMgV2ViQ29yZTo6
VmlkZW9GdWxsc2NyZWVuTW9kZWwKLSAgICAsIHB1YmxpYyBXZWJDb3JlOjpWaWRlb0Z1bGxzY3Jl
ZW5DaGFuZ2VPYnNlcnZlciB7CisgICAgLCBwdWJsaWMgV2ViQ29yZTo6VmlkZW9GdWxsc2NyZWVu
Q2hhbmdlT2JzZXJ2ZXIgIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFZpZGVvRnVsbHNjcmVl
bk1vZGVsQ29udGV4dD4gY3JlYXRlKFdlYWtQdHI8VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
PiYmLCBSZWY8UGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0PiYmLCB1aW50NjRfdCBjb250ZXh0
SWQpOworICAgIHN0YXRpYyBSZWY8VmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0PiBjcmVhdGUo
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5JiBtYW5hZ2VyLCBQbGF5YmFja1Nlc3Npb25Nb2Rl
bENvbnRleHQmIHBsYXliYWNrU2Vzc2lvbk1vZGVsLCB1aW50NjRfdCBjb250ZXh0SWQpCisgICAg
eworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRl
eHQobWFuYWdlciwgcGxheWJhY2tTZXNzaW9uTW9kZWwsIGNvbnRleHRJZCkpOworICAgIH0KICAg
ICB2aXJ0dWFsIH5WaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQoKTsKIAogICAgIHZvaWQgaW52
YWxpZGF0ZSgpIHsgbV9tYW5hZ2VyID0gbnVsbHB0cjsgfQpAQCAtNzEsMjYgKzcyLDE5IEBAIHB1
YmxpYzoKICAgICBQbGF0Zm9ybVZpZXcgKmxheWVySG9zdFZpZXcoKSBjb25zdCB7IHJldHVybiBt
X2xheWVySG9zdFZpZXcuZ2V0KCk7IH0KICAgICB2b2lkIHNldExheWVySG9zdFZpZXcoUmV0YWlu
UHRyPFBsYXRmb3JtVmlldz4mJiBsYXllckhvc3RWaWV3KSB7IG1fbGF5ZXJIb3N0VmlldyA9IFdU
Rk1vdmUobGF5ZXJIb3N0Vmlldyk7IH0KIAotICAgIFdlYWtQdHI8VmlkZW9GdWxsc2NyZWVuQ2hh
bmdlT2JzZXJ2ZXI+IGNyZWF0ZVdlYWtQdHIoKSB7IHJldHVybiBtX3dlYWtQdHJGYWN0b3J5LmNy
ZWF0ZVdlYWtQdHIoKnRoaXMpOyB9Ci0KLSAgICB1c2luZyBSZWZDb3VudGVkOjpyZWY7Ci0gICAg
dXNpbmcgUmVmQ291bnRlZDo6ZGVyZWY7Ci0KIHByaXZhdGU6Ci0gICAgVmlkZW9GdWxsc2NyZWVu
TW9kZWxDb250ZXh0KFdlYWtQdHI8VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5PiYmLCBSZWY8
UGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0PiYmLCB1aW50NjRfdCk7CisgICAgVmlkZW9GdWxs
c2NyZWVuTW9kZWxDb250ZXh0KFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eSYsIFBsYXliYWNr
U2Vzc2lvbk1vZGVsQ29udGV4dCYsIHVpbnQ2NF90KTsKIAogICAgIC8vIFZpZGVvRnVsbHNjcmVl
bk1vZGVsCi0gICAgdm9pZCByZWZWaWRlb0Z1bGxzY3JlZW5Nb2RlbCgpIGZpbmFsIHsgcmVmKCk7
IH0KLSAgICB2b2lkIGRlcmVmVmlkZW9GdWxsc2NyZWVuTW9kZWwoKSBmaW5hbCB7IGRlcmVmKCk7
IH0KLSAgICB2b2lkIGFkZENsaWVudChXZWFrUHRyPFdlYkNvcmU6OlZpZGVvRnVsbHNjcmVlbk1v
ZGVsQ2xpZW50PiYmKSBmaW5hbDsKLSAgICB2b2lkIHJlbW92ZUNsaWVudChXZWJDb3JlOjpWaWRl
b0Z1bGxzY3JlZW5Nb2RlbENsaWVudCYpIGZpbmFsOwotICAgIHZvaWQgcmVxdWVzdEZ1bGxzY3Jl
ZW5Nb2RlKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9k
ZSwgYm9vbCBmaW5pc2hlZFdpdGhNZWRpYSA9IGZhbHNlKSBmaW5hbDsKLSAgICB2b2lkIHNldFZp
ZGVvTGF5ZXJGcmFtZShXZWJDb3JlOjpGbG9hdFJlY3QpIGZpbmFsOwotICAgIHZvaWQgc2V0Vmlk
ZW9MYXllckdyYXZpdHkoVmlkZW9HcmF2aXR5KSBmaW5hbDsKLSAgICB2b2lkIGZ1bGxzY3JlZW5N
b2RlQ2hhbmdlZChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVl
bk1vZGUpIGZpbmFsOwotICAgIGJvb2wgaXNWaXNpYmxlKCkgY29uc3QgZmluYWw7Ci0gICAgYm9v
bCBoYXNWaWRlbygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faGFzVmlkZW87IH0KLSAgICBXZWJD
b3JlOjpGbG9hdFNpemUgdmlkZW9EaW1lbnNpb25zKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV92
aWRlb0RpbWVuc2lvbnM7IH0KKyAgICB2b2lkIGFkZENsaWVudChXZWJDb3JlOjpWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbENsaWVudCYpIG92ZXJyaWRlOworICAgIHZvaWQgcmVtb3ZlQ2xpZW50KFdlYkNv
cmU6OlZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50Jikgb3ZlcnJpZGU7CisgICAgdm9pZCByZXF1
ZXN0RnVsbHNjcmVlbk1vZGUoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1
bGxzY3JlZW5Nb2RlLCBib29sIGZpbmlzaGVkV2l0aE1lZGlhID0gZmFsc2UpIG92ZXJyaWRlOwor
ICAgIHZvaWQgc2V0VmlkZW9MYXllckZyYW1lKFdlYkNvcmU6OkZsb2F0UmVjdCkgb3ZlcnJpZGU7
CisgICAgdm9pZCBzZXRWaWRlb0xheWVyR3Jhdml0eShWaWRlb0dyYXZpdHkpIG92ZXJyaWRlOwor
ICAgIHZvaWQgZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRF
bnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSkgb3ZlcnJpZGU7CisgICAgYm9vbCBpc1Zpc2libGUo
KSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGhhc1ZpZGVvKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gbV9oYXNWaWRlbzsgfQorICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSB2aWRlb0RpbWVuc2lv
bnMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3ZpZGVvRGltZW5zaW9uczsgfQogI2lmIFBM
QVRGT1JNKElPUykKICAgICBVSVZpZXdDb250cm9sbGVyICpwcmVzZW50aW5nVmlld0NvbnRyb2xs
ZXIoKSBmaW5hbDsKICAgICBVSVZpZXdDb250cm9sbGVyICpjcmVhdGVWaWRlb0Z1bGxzY3JlZW5W
aWV3Q29udHJvbGxlcihBVlBsYXllclZpZXdDb250cm9sbGVyKikgZmluYWw7CkBAIC0xMTIsMjAg
KzEwNiwxNiBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkQ2xlYW51cEZ1bGxzY3JlZW4oKSBmaW5h
bDsKICAgICB2b2lkIGZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZSgpIGZpbmFsOwogCi0gICAg
V2Vha1B0cjxWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk+IG1fbWFuYWdlcjsKKyAgICBWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkqIG1fbWFuYWdlcjsKICAgICBSZWY8UGxheWJhY2tTZXNz
aW9uTW9kZWxDb250ZXh0PiBtX3BsYXliYWNrU2Vzc2lvbk1vZGVsOwogICAgIHVpbnQ2NF90IG1f
Y29udGV4dElkOwotICAgIFdlYWtQdHJGYWN0b3J5PFZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2Vy
dmVyPiBtX3dlYWtQdHJGYWN0b3J5OwogICAgIFJldGFpblB0cjxQbGF0Zm9ybVZpZXcgKj4gbV9s
YXllckhvc3RWaWV3OwotICAgIFdlYWtQdHJDb250YWluZXI8V2ViQ29yZTo6VmlkZW9GdWxsc2Ny
ZWVuTW9kZWxDbGllbnQ+IG1fY2xpZW50czsKKyAgICBIYXNoU2V0PFdlYkNvcmU6OlZpZGVvRnVs
bHNjcmVlbk1vZGVsQ2xpZW50Kj4gbV9jbGllbnRzOwogICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBt
X3ZpZGVvRGltZW5zaW9uczsKICAgICBib29sIG1faGFzVmlkZW8geyBmYWxzZSB9OwogfTsKIAot
Y2xhc3MgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Ci0gICAgOiBwdWJsaWMgUmVmQ291bnRl
ZDxWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk+Ci0gICAgLCBwcml2YXRlIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyIAotICAgICwgcHVibGljIENhbk1ha2VXZWFrUHRyPFZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eT4geworY2xhc3MgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5IDogcHVibGlj
IFJlZkNvdW50ZWQ8VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5PiwgcHJpdmF0ZSBJUEM6Ok1l
c3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZlB0cjxWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHk+IGNyZWF0ZShXZWJQYWdlUHJveHkmLCBQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyUHJveHkmKTsKICAgICB2aXJ0dWFsIH5WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVs
bHNjcmVlbk1hbmFnZXJQcm94eS5tbQppbmRleCA4ZTIwNDI2YmM2ZjlhNDU2NmQ4MDMxYjljNWUy
YTFkYjE2MDU2M2U2Li5iZGZiYzgwN2ExYzk5NWI2ZTFjNDFiODcyYmM0OGI1NDcwZDIzNjM5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9G
dWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tCkBAIC0xNTgsMjggKzE1OCwyNyBAQCB2b2lkIFZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKQogCiAj
cHJhZ21hIG1hcmsgLSBWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQKIAotUmVmPFZpZGVvRnVs
bHNjcmVlbk1vZGVsQ29udGV4dD4gVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpjcmVhdGUo
V2Vha1B0cjxWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk+JiYgbWFuYWdlciwgUmVmPFBsYXli
YWNrU2Vzc2lvbk1vZGVsQ29udGV4dD4mJiBwbGF5YmFja1Nlc3Npb25Nb2RlbCwgdWludDY0X3Qg
Y29udGV4dElkKQorVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpWaWRlb0Z1bGxzY3JlZW5N
b2RlbENvbnRleHQoVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5JiBtYW5hZ2VyLCBQbGF5YmFj
a1Nlc3Npb25Nb2RlbENvbnRleHQmIHBsYXliYWNrU2Vzc2lvbk1vZGVsLCB1aW50NjRfdCBjb250
ZXh0SWQpCisgICAgOiBtX21hbmFnZXIoJm1hbmFnZXIpCisgICAgLCBtX3BsYXliYWNrU2Vzc2lv
bk1vZGVsKHBsYXliYWNrU2Vzc2lvbk1vZGVsKQorICAgICwgbV9jb250ZXh0SWQoY29udGV4dElk
KQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4
dChXVEZNb3ZlKG1hbmFnZXIpLCBXVEZNb3ZlKHBsYXliYWNrU2Vzc2lvbk1vZGVsKSwgY29udGV4
dElkKSk7CiB9CiAKLVZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6VmlkZW9GdWxsc2NyZWVu
TW9kZWxDb250ZXh0KFdlYWtQdHI8VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5PiYmIG1hbmFn
ZXIsIFJlZjxQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ+JiYgcGxheWJhY2tTZXNzaW9uTW9k
ZWwsIHVpbnQ2NF90IGNvbnRleHRJZCkKLSAgICA6IG1fbWFuYWdlcihXVEZNb3ZlKG1hbmFnZXIp
KQotICAgICwgbV9wbGF5YmFja1Nlc3Npb25Nb2RlbChXVEZNb3ZlKHBsYXliYWNrU2Vzc2lvbk1v
ZGVsKSkKLSAgICAsIG1fY29udGV4dElkKGNvbnRleHRJZCkKK1ZpZGVvRnVsbHNjcmVlbk1vZGVs
Q29udGV4dDo6flZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dCgpCiB7CiB9CiAKLVZpZGVvRnVs
bHNjcmVlbk1vZGVsQ29udGV4dDo6flZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dCgpID0gZGVm
YXVsdDsKLQotdm9pZCBWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OmFkZENsaWVudChXZWFr
UHRyPFZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50PiYmIGNsaWVudCkKK3ZvaWQgVmlkZW9GdWxs
c2NyZWVuTW9kZWxDb250ZXh0OjphZGRDbGllbnQoVmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQm
IGNsaWVudCkKIHsKLSAgICBtX2NsaWVudHMuYWRkKFdURk1vdmUoY2xpZW50KSk7CisgICAgQVNT
RVJUKCFtX2NsaWVudHMuY29udGFpbnMoJmNsaWVudCkpOworICAgIG1fY2xpZW50cy5hZGQoJmNs
aWVudCk7CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpyZW1vdmVDbGll
bnQoVmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQmIGNsaWVudCkKIHsKLSAgICBtX2NsaWVudHMu
cmVtb3ZlKGNsaWVudCk7CisgICAgQVNTRVJUKG1fY2xpZW50cy5jb250YWlucygmY2xpZW50KSk7
CisgICAgbV9jbGllbnRzLnJlbW92ZSgmY2xpZW50KTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbENvbnRleHQ6OnJlcXVlc3RGdWxsc2NyZWVuTW9kZShIVE1MTWVkaWFFbGVtZW50RW51
bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSwgYm9vbCBmaW5pc2hlZFdpdGhNZWRpYSkKQEAg
LTI4MiwzNyArMjgxLDMyIEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpmdWxs
c2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUoKQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1vZGVsQ29u
dGV4dDo6d2lsbEVudGVyUGljdHVyZUluUGljdHVyZSgpCiB7Ci0gICAgbV9jbGllbnRzLmZvckVh
Y2hOb25OdWxsTWVtYmVyKFtdIChhdXRvJiBjbGllbnQpIHsKLSAgICAgICAgY2xpZW50LndpbGxF
bnRlclBpY3R1cmVJblBpY3R1cmUoKTsKLSAgICB9KTsKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6
IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50LT53aWxsRW50ZXJQaWN0dXJlSW5QaWN0dXJlKCk7
CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpkaWRFbnRlclBpY3R1cmVJ
blBpY3R1cmUoKQogewotICAgIG1fY2xpZW50cy5mb3JFYWNoTm9uTnVsbE1lbWJlcihbXSAoYXV0
byYgY2xpZW50KSB7Ci0gICAgICAgIGNsaWVudC5kaWRFbnRlclBpY3R1cmVJblBpY3R1cmUoKTsK
LSAgICB9KTsKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAgICAgY2xp
ZW50LT5kaWRFbnRlclBpY3R1cmVJblBpY3R1cmUoKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbENvbnRleHQ6OmZhaWxlZFRvRW50ZXJQaWN0dXJlSW5QaWN0dXJlKCkKIHsKLSAgICBt
X2NsaWVudHMuZm9yRWFjaE5vbk51bGxNZW1iZXIoW10gKGF1dG8mIGNsaWVudCkgewotICAgICAg
ICBjbGllbnQuZmFpbGVkVG9FbnRlclBpY3R1cmVJblBpY3R1cmUoKTsKLSAgICB9KTsKKyAgICBm
b3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50LT5mYWlsZWRUb0Vu
dGVyUGljdHVyZUluUGljdHVyZSgpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1vZGVsQ29u
dGV4dDo6d2lsbEV4aXRQaWN0dXJlSW5QaWN0dXJlKCkKIHsKLSAgICBtX2NsaWVudHMuZm9yRWFj
aE5vbk51bGxNZW1iZXIoW10gKGF1dG8mIGNsaWVudCkgewotICAgICAgICBjbGllbnQud2lsbEV4
aXRQaWN0dXJlSW5QaWN0dXJlKCk7Ci0gICAgfSk7CisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBt
X2NsaWVudHMpCisgICAgICAgIGNsaWVudC0+d2lsbEV4aXRQaWN0dXJlSW5QaWN0dXJlKCk7CiB9
CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpkaWRFeGl0UGljdHVyZUluUGlj
dHVyZSgpCiB7Ci0gICAgbV9jbGllbnRzLmZvckVhY2hOb25OdWxsTWVtYmVyKFtdIChhdXRvJiBj
bGllbnQpIHsKLSAgICAgICAgY2xpZW50LmRpZEV4aXRQaWN0dXJlSW5QaWN0dXJlKCk7Ci0gICAg
fSk7CisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCisgICAgICAgIGNsaWVudC0+
ZGlkRXhpdFBpY3R1cmVJblBpY3R1cmUoKTsKIH0KIAogI3ByYWdtYSBtYXJrIC0gVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5CkBAIC0zNDksNiArMzQzLDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHk6OmludmFsaWRhdGUoKQogICAgICAgICBSZWZQdHI8UGxhdGZvcm1WaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2U+IGludGVyZmFjZTsKICAgICAgICAgc3RkOjp0aWUobW9kZWws
IGludGVyZmFjZSkgPSB0dXBsZTsKIAorICAgICAgICBpbnRlcmZhY2UtPmludmFsaWRhdGUoKTsK
ICAgICAgICAgW21vZGVsLT5sYXllckhvc3RWaWV3KCkgcmVtb3ZlRnJvbVN1cGVydmlld107CiAg
ICAgICAgIG1vZGVsLT5zZXRMYXllckhvc3RWaWV3KG51bGxwdHIpOwogICAgIH0KQEAgLTQwNiwx
MiArNDAxLDEzIEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjphcHBsaWNhdGlv
bkRpZEJlY29tZUFjdGl2ZSgpCiBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6Ok1vZGVsSW50
ZXJmYWNlVHVwbGUgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpjcmVhdGVNb2RlbEFuZElu
dGVyZmFjZSh1aW50NjRfdCBjb250ZXh0SWQpCiB7CiAgICAgYXV0byYgcGxheWJhY2tTZXNzaW9u
TW9kZWwgPSBtX3BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS0+ZW5zdXJlTW9kZWwoY29udGV4
dElkKTsKKyAgICBSZWY8VmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0PiBtb2RlbCA9IFZpZGVv
RnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6Y3JlYXRlKCp0aGlzLCBwbGF5YmFja1Nlc3Npb25Nb2Rl
bCwgY29udGV4dElkKTsKICAgICBhdXRvJiBwbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UgPSBtX3Bs
YXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS0+ZW5zdXJlSW50ZXJmYWNlKGNvbnRleHRJZCk7Ci0g
ICAgUmVmPFZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dD4gbW9kZWwgPSBWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbENvbnRleHQ6OmNyZWF0ZShtYWtlV2Vha1B0cih0aGlzKSwgcGxheWJhY2tTZXNzaW9u
TW9kZWwsIGNvbnRleHRJZCk7Ci0gICAgUmVmPFBsYXRmb3JtVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlPiBpbnRlcmZhY2UgPSBQbGF0Zm9ybVZpZGVvRnVsbHNjcmVlbkludGVyZmFjZTo6Y3JlYXRl
KG1ha2VSZWYocGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlKSwgbW9kZWwuY29weVJlZigpKTsKKyAg
ICBSZWY8UGxhdGZvcm1WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2U+IGludGVyZmFjZSA9IFBsYXRm
b3JtVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlOjpjcmVhdGUocGxheWJhY2tTZXNzaW9uSW50ZXJm
YWNlKTsKICAgICBtX3BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS0+YWRkQ2xpZW50Rm9yQ29u
dGV4dChjb250ZXh0SWQpOwogCi0gICAgaW50ZXJmYWNlLT5zZXRWaWRlb0Z1bGxzY3JlZW5DaGFu
Z2VPYnNlcnZlcihtb2RlbC0+Y3JlYXRlV2Vha1B0cigpKTsKKyAgICBpbnRlcmZhY2UtPnNldFZp
ZGVvRnVsbHNjcmVlbk1vZGVsKCZtb2RlbC5nZXQoKSk7CisgICAgaW50ZXJmYWNlLT5zZXRWaWRl
b0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcigmbW9kZWwuZ2V0KCkpOwogCiAgICAgcmV0dXJuIHN0
ZDo6bWFrZV90dXBsZShXVEZNb3ZlKG1vZGVsKSwgV1RGTW92ZShpbnRlcmZhY2UpKTsKIH0KQEAg
LTQ1MCw2ICs0NDYsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6cmVtb3Zl
Q2xpZW50Rm9yQ29udGV4dCh1aW50NjRfdCBjb250ZXh0SWQpCiAgICAgY2xpZW50Q291bnQtLTsK
IAogICAgIGlmIChjbGllbnRDb3VudCA8PSAwKSB7CisgICAgICAgIGVuc3VyZUludGVyZmFjZShj
b250ZXh0SWQpLnNldFZpZGVvRnVsbHNjcmVlbk1vZGVsKG51bGxwdHIpOwogICAgICAgICBtX3Bs
YXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS0+cmVtb3ZlQ2xpZW50Rm9yQ29udGV4dChjb250ZXh0
SWQpOwogICAgICAgICBtX2NsaWVudENvdW50cy5yZW1vdmUoY29udGV4dElkKTsKICAgICAgICAg
bV9jb250ZXh0TWFwLnJlbW92ZShjb250ZXh0SWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuVmlld0NvbnRyb2xsZXIubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5WaWV3
Q29udHJvbGxlci5tbQppbmRleCBmMTc0NzVlYzgxOGJhYTczMTVmZDliZjQ5NjJkZmY0NWZmZmVl
OTQ5Li5hOWFjNTQ1ODYyMTQwY2NhMjE2NDdhMGMzMGFhYTcyZTRhMTMxOTM2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5WaWV3
Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZnVsbHNjcmVl
bi9XS0Z1bGxTY3JlZW5WaWV3Q29udHJvbGxlci5tbQpAQCAtNTYsOSArNTYsNyBAQCBzdGF0aWMg
Y29uc3QgZG91YmxlIHJlcXVpcmVkU2NvcmUgPSAwLjE7CiAtICh2b2lkKWZhaWxlZFRvRW50ZXJQ
aWN0dXJlSW5QaWN0dXJlOwogQGVuZAogCi1jbGFzcyBXS0Z1bGxTY3JlZW5WaWV3Q29udHJvbGxl
clBsYXliYWNrU2Vzc2lvbk1vZGVsQ2xpZW50IAotICAgIDogcHVibGljIFBsYXliYWNrU2Vzc2lv
bk1vZGVsQ2xpZW50Ci0gICAgLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8V0tGdWxsU2NyZWVuVmll
d0NvbnRyb2xsZXJQbGF5YmFja1Nlc3Npb25Nb2RlbENsaWVudD4geworY2xhc3MgV0tGdWxsU2Ny
ZWVuVmlld0NvbnRyb2xsZXJQbGF5YmFja1Nlc3Npb25Nb2RlbENsaWVudCA6IFBsYXliYWNrU2Vz
c2lvbk1vZGVsQ2xpZW50IHsKIHB1YmxpYzoKICAgICB2b2lkIHNldFBhcmVudChXS0Z1bGxTY3Jl
ZW5WaWV3Q29udHJvbGxlciAqcGFyZW50KSB7IG1fcGFyZW50ID0gcGFyZW50OyB9CiAKQEAgLTgx
LDExICs3OSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChtX2ludGVyZmFjZSA9PSBpbnRlcmZh
Y2UpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKG1faW50ZXJmYWNlKQotICAg
ICAgICAgICAgbV9pbnRlcmZhY2UtPnBsYXliYWNrU2Vzc2lvbk1vZGVsKCkucmVtb3ZlQ2xpZW50
KCp0aGlzKTsKKyAgICAgICAgaWYgKG1faW50ZXJmYWNlICYmIG1faW50ZXJmYWNlLT5wbGF5YmFj
a1Nlc3Npb25Nb2RlbCgpKQorICAgICAgICAgICAgbV9pbnRlcmZhY2UtPnBsYXliYWNrU2Vzc2lv
bk1vZGVsKCktPnJlbW92ZUNsaWVudCgqdGhpcyk7CiAgICAgICAgIG1faW50ZXJmYWNlID0gaW50
ZXJmYWNlOwotICAgICAgICBpZiAobV9pbnRlcmZhY2UpCi0gICAgICAgICAgICBtX2ludGVyZmFj
ZS0+cGxheWJhY2tTZXNzaW9uTW9kZWwoKS5hZGRDbGllbnQobWFrZVdlYWtQdHIoKnRoaXMpKTsK
KyAgICAgICAgaWYgKG1faW50ZXJmYWNlICYmIG1faW50ZXJmYWNlLT5wbGF5YmFja1Nlc3Npb25N
b2RlbCgpKQorICAgICAgICAgICAgbV9pbnRlcmZhY2UtPnBsYXliYWNrU2Vzc2lvbk1vZGVsKCkt
PmFkZENsaWVudCgqdGhpcyk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtOTMsOSArOTEsNyBAQCBw
cml2YXRlOgogICAgIFJlZlB0cjxQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdD4gbV9pbnRl
cmZhY2U7CiB9OwogCi1jbGFzcyBXS0Z1bGxTY3JlZW5WaWV3Q29udHJvbGxlclZpZGVvRnVsbHNj
cmVlbk1vZGVsQ2xpZW50Ci0gICAgOiBwdWJsaWMgVmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQK
LSAgICAsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXS0Z1bGxTY3JlZW5WaWV3Q29udHJvbGxlclZp
ZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50PiB7CitjbGFzcyBXS0Z1bGxTY3JlZW5WaWV3Q29udHJv
bGxlclZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50IDogVmlkZW9GdWxsc2NyZWVuTW9kZWxDbGll
bnQgewogcHVibGljOgogICAgIHZvaWQgc2V0UGFyZW50KFdLRnVsbFNjcmVlblZpZXdDb250cm9s
bGVyICpwYXJlbnQpIHsgbV9wYXJlbnQgPSBwYXJlbnQ7IH0KIApAQCAtMTA0LDExICsxMDAsMTEg
QEAgcHVibGljOgogICAgICAgICBpZiAobV9pbnRlcmZhY2UgPT0gaW50ZXJmYWNlKQogICAgICAg
ICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmIChtX2ludGVyZmFjZSkKLSAgICAgICAgICAgIG1f
aW50ZXJmYWNlLT52aWRlb0Z1bGxzY3JlZW5Nb2RlbCgpLnJlbW92ZUNsaWVudCgqdGhpcyk7Cisg
ICAgICAgIGlmIChtX2ludGVyZmFjZSAmJiBtX2ludGVyZmFjZS0+dmlkZW9GdWxsc2NyZWVuTW9k
ZWwoKSkKKyAgICAgICAgICAgIG1faW50ZXJmYWNlLT52aWRlb0Z1bGxzY3JlZW5Nb2RlbCgpLT5y
ZW1vdmVDbGllbnQoKnRoaXMpOwogICAgICAgICBtX2ludGVyZmFjZSA9IGludGVyZmFjZTsKLSAg
ICAgICAgaWYgKG1faW50ZXJmYWNlKQotICAgICAgICAgICAgbV9pbnRlcmZhY2UtPnZpZGVvRnVs
bHNjcmVlbk1vZGVsKCkuYWRkQ2xpZW50KG1ha2VXZWFrUHRyKCp0aGlzKSk7CisgICAgICAgIGlm
IChtX2ludGVyZmFjZSAmJiBtX2ludGVyZmFjZS0+dmlkZW9GdWxsc2NyZWVuTW9kZWwoKSkKKyAg
ICAgICAgICAgIG1faW50ZXJmYWNlLT52aWRlb0Z1bGxzY3JlZW5Nb2RlbCgpLT5hZGRDbGllbnQo
KnRoaXMpOwogICAgIH0KIAogICAgIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0KiBpbnRl
cmZhY2UoKSBjb25zdCB7IHJldHVybiBtX2ludGVyZmFjZS5nZXQoKTsgfQpAQCAtMjcyLDE0ICsy
NjgsOSBAQCBwcml2YXRlOgogICAgIF9wbGF5YmFja0NsaWVudC5zZXRJbnRlcmZhY2UocGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlKTsKICAgICBfdmlkZW9GdWxsc2NyZWVuQ2xpZW50LnNldEludGVy
ZmFjZSh2aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UpOwogCi0gICAgaWYgKCFwbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2UpIHsKLSAgICAgICAgc2VsZi5wbGF5aW5nID0gTk87Ci0gICAgICAgIFtfcGlw
QnV0dG9uIHNldEhpZGRlbjpZRVNdOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgc2Vs
Zi5wbGF5aW5nID0gcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5wbGF5YmFja1Nlc3Npb25Nb2Rl
bCgpLmlzUGxheWluZygpOwotICAgIFtfcGlwQnV0dG9uIHNldEhpZGRlbjpOT107CisgICAgUGxh
eWJhY2tTZXNzaW9uTW9kZWwqIHBsYXliYWNrU2Vzc2lvbk1vZGVsID0gcGxheWJhY2tTZXNzaW9u
SW50ZXJmYWNlID8gcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5wbGF5YmFja1Nlc3Npb25Nb2Rl
bCgpIDogbnVsbHB0cjsKKyAgICBzZWxmLnBsYXlpbmcgPSBwbGF5YmFja1Nlc3Npb25Nb2RlbCA/
IHBsYXliYWNrU2Vzc2lvbk1vZGVsLT5pc1BsYXlpbmcoKSA6IE5POworICAgIFtfcGlwQnV0dG9u
IHNldEhpZGRlbjohcGxheWJhY2tTZXNzaW9uTW9kZWxdOwogfQogCiAtICh2b2lkKXNldFByZWZl
cnNTdGF0dXNCYXJIaWRkZW46KEJPT0wpdmFsdWUKQEAgLTUyNSw4ICs1MTYsMTQgQEAgcHJpdmF0
ZToKICAgICAgICAgcmV0dXJuOwogCiAgICAgUGxhdGZvcm1QbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2UqIHBsYXliYWNrU2Vzc2lvbkludGVyZmFjZSA9IHBsYXliYWNrU2Vzc2lvbk1hbmFnZXItPmNv
bnRyb2xzTWFuYWdlckludGVyZmFjZSgpOwotICAgIGlmIChwbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2UpCi0gICAgICAgIHBsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+cGxheWJhY2tTZXNzaW9uTW9k
ZWwoKS50b2dnbGVQaWN0dXJlSW5QaWN0dXJlKCk7CisgICAgaWYgKCFwbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2UpCisgICAgICAgIHJldHVybjsKKworICAgIFBsYXliYWNrU2Vzc2lvbk1vZGVsKiBw
bGF5YmFja1Nlc3Npb25Nb2RlbCA9IHBsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+cGxheWJhY2tT
ZXNzaW9uTW9kZWwoKTsKKyAgICBpZiAoIXBsYXliYWNrU2Vzc2lvbk1vZGVsKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBwbGF5YmFja1Nlc3Npb25Nb2RlbC0+dG9nZ2xlUGljdHVyZUluUGljdHVy
ZSgpOwogfQogCiAtICh2b2lkKV90b3VjaERldGVjdGVkOihpZClzZW5kZXIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVy
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRy
b2xsZXIubW0KaW5kZXggNjBhN2Q4YWE1NDNiNzU3ZjkxOTM2ZmZmMjlmOGEzOWM5ZjM2MjU0MS4u
YjYwYTU1Yzk1YWViMmVjZmE5MDM4Y2ZkNjE3Yzc3ZjIxOWIxOTc2MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRy
b2xsZXIubW0KQEAgLTUyLDkgKzUyLDcgQEAgc3RhdGljIGNvbnN0IE5TVGltZUludGVydmFsIERl
ZmF1bHRXYXRjaGRvZ1RpbWVySW50ZXJ2YWwgPSAxOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAot
Y2xhc3MgV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlclZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xp
ZW50IAotICAgIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFdLRnVsbFNjcmVlbldpbmRvd0NvbnRy
b2xsZXJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVudD4KLSAgICAsIHB1YmxpYyBXZWJDb3JlOjpW
aWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVudCB7CitjbGFzcyBXS0Z1bGxTY3JlZW5XaW5kb3dDb250
cm9sbGVyVmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQgOiBXZWJDb3JlOjpWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbENsaWVudCB7CiBwdWJsaWM6CiAgICAgdm9pZCBzZXRQYXJlbnQoV0tGdWxsU2NyZWVu
V2luZG93Q29udHJvbGxlciAqcGFyZW50KSB7IG1fcGFyZW50ID0gcGFyZW50OyB9CiAKQEAgLTYz
LDExICs2MSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChtX2ludGVyZmFjZSA9PSBpbnRlcmZh
Y2UpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKG1faW50ZXJmYWNlKQotICAg
ICAgICAgICAgbV9pbnRlcmZhY2UtPnZpZGVvRnVsbHNjcmVlbk1vZGVsKCkucmVtb3ZlQ2xpZW50
KCp0aGlzKTsKKyAgICAgICAgaWYgKG1faW50ZXJmYWNlICYmIG1faW50ZXJmYWNlLT52aWRlb0Z1
bGxzY3JlZW5Nb2RlbCgpKQorICAgICAgICAgICAgbV9pbnRlcmZhY2UtPnZpZGVvRnVsbHNjcmVl
bk1vZGVsKCktPnJlbW92ZUNsaWVudCgqdGhpcyk7CiAgICAgICAgIG1faW50ZXJmYWNlID0gaW50
ZXJmYWNlOwotICAgICAgICBpZiAobV9pbnRlcmZhY2UpCi0gICAgICAgICAgICBtX2ludGVyZmFj
ZS0+dmlkZW9GdWxsc2NyZWVuTW9kZWwoKS5hZGRDbGllbnQobWFrZVdlYWtQdHIodGhpcykpOwor
ICAgICAgICBpZiAobV9pbnRlcmZhY2UgJiYgbV9pbnRlcmZhY2UtPnZpZGVvRnVsbHNjcmVlbk1v
ZGVsKCkpCisgICAgICAgICAgICBtX2ludGVyZmFjZS0+dmlkZW9GdWxsc2NyZWVuTW9kZWwoKS0+
YWRkQ2xpZW50KCp0aGlzKTsKICAgICB9CiAKICAgICBXZWJDb3JlOjpWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VNYWMqIGludGVyZmFjZSgpIGNvbnN0IHsgcmV0dXJuIG1faW50ZXJmYWNlLmdldCgp
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tT
ZXNzaW9uTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXliYWNr
U2Vzc2lvbk1hbmFnZXIuaAppbmRleCA5MWNlZmZhOTYzZjI2MGQ1Y2UyNDFjNzY5MjMwZjg0NTVi
ZGUyNThkLi5mMGRlNjJiOGRiMDVhMzdlYWU3ZDk3MmJhNjZmYmM1ODdlMzI0MGY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFja1Nlc3Npb25N
YW5hZ2VyLmgKQEAgLTQ3LDggKzQ3LDYgQEAgY2xhc3MgTWVzc2FnZVJlY2VpdmVyOwogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBOb2RlOwotY2xhc3MgUGxheWJhY2tTZXNzaW9uTW9kZWw7
Ci1jbGFzcyBQbGF5YmFja1Nlc3Npb25Nb2RlbENsaWVudDsKIH0KIAogbmFtZXNwYWNlIFdlYktp
dCB7CkBAIC01NywxNyArNTUsMTcgQEAgY2xhc3MgV2ViUGFnZTsKIGNsYXNzIFBsYXliYWNrU2Vz
c2lvbk1hbmFnZXI7CiAKIGNsYXNzIFBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQgZmlu
YWwKLSAgICA6IHB1YmxpYyBXZWJDb3JlOjpQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UKLSAgICAs
IHB1YmxpYyBXZWJDb3JlOjpQbGF5YmFja1Nlc3Npb25Nb2RlbENsaWVudAotICAgICwgcHVibGlj
IFJlZkNvdW50ZWQ8UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dD4geworICAgIDogcHVi
bGljIFJlZkNvdW50ZWQ8UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dD4KKyAgICAsIHB1
YmxpYyBXZWJDb3JlOjpQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UKKyAgICAsIHB1YmxpYyBXZWJD
b3JlOjpQbGF5YmFja1Nlc3Npb25Nb2RlbENsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZjxQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0PiBjcmVhdGUoV2Vha1B0cjxQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyPiYmIG1hbmFnZXIsIHVpbnQ2NF90IGNvbnRleHRJZCkKKyAgICBzdGF0
aWMgUmVmPFBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ+IGNyZWF0ZShQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyJiBtYW5hZ2VyLCB1aW50NjRfdCBjb250ZXh0SWQpCiAgICAgewotICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0KFdU
Rk1vdmUobWFuYWdlciksIGNvbnRleHRJZCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0KG1hbmFnZXIsIGNvbnRleHRJZCkpOwog
ICAgIH0KICAgICB2aXJ0dWFsIH5QbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0KCk7CiAK
LSAgICBXZWFrUHRyPFdlYkNvcmU6OlBsYXliYWNrU2Vzc2lvbk1vZGVsQ2xpZW50PiBjcmVhdGVX
ZWFrUHRyKCkgeyByZXR1cm4gbV93ZWFrUHRyRmFjdG9yeS5jcmVhdGVXZWFrUHRyKCp0aGlzKTsg
fQorICAgIHZvaWQgaW52YWxpZGF0ZSgpIHsgbV9tYW5hZ2VyID0gbnVsbHB0cjsgfQogCiBwcml2
YXRlOgogICAgIGZyaWVuZCBjbGFzcyBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0OwpA
QCAtOTMsMTcgKzkxLDEzIEBAIHByaXZhdGU6CiAgICAgdm9pZCB2b2x1bWVDaGFuZ2VkKGRvdWJs
ZSkgZmluYWw7CiAgICAgdm9pZCBpc1BpY3R1cmVJblBpY3R1cmVTdXBwb3J0ZWRDaGFuZ2VkKGJv
b2wpIGZpbmFsOwogCi0gICAgUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dChXZWFrUHRy
PFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI+JiYsIHVpbnQ2NF90IGNvbnRleHRJZCk7CisgICAgUGxh
eWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dChQbGF5YmFja1Nlc3Npb25NYW5hZ2VyJiwgdWlu
dDY0X3QgY29udGV4dElkKTsKIAotICAgIFdlYWtQdHI8UGxheWJhY2tTZXNzaW9uTWFuYWdlcj4g
bV9tYW5hZ2VyOwotICAgIFdlYWtQdHJGYWN0b3J5PFBsYXliYWNrU2Vzc2lvbk1vZGVsQ2xpZW50
PiBtX3dlYWtQdHJGYWN0b3J5OworICAgIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXIqIG1fbWFuYWdl
cjsKICAgICB1aW50NjRfdCBtX2NvbnRleHRJZDsKIH07CiAKLWNsYXNzIFBsYXliYWNrU2Vzc2lv
bk1hbmFnZXIKLSAgICA6IHB1YmxpYyBSZWZDb3VudGVkPFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI+
Ci0gICAgLCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyCi0gICAgLCBwdWJsaWMgQ2FuTWFr
ZVdlYWtQdHI8UGxheWJhY2tTZXNzaW9uTWFuYWdlcj4geworY2xhc3MgUGxheWJhY2tTZXNzaW9u
TWFuYWdlciA6IHB1YmxpYyBSZWZDb3VudGVkPFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI+LCBwcml2
YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFBsYXli
YWNrU2Vzc2lvbk1hbmFnZXI+IGNyZWF0ZShXZWJQYWdlJik7CiAgICAgdmlydHVhbCB+UGxheWJh
Y2tTZXNzaW9uTWFuYWdlcigpOwpAQCAtMTcyLDcgKzE2Niw2IEBAIHByb3RlY3RlZDoKICAgICB2
b2lkIHNldFZvbHVtZSh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSB2b2x1bWUpOwogICAgIHZv
aWQgc2V0UGxheWluZ09uU2Vjb25kU2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCB2YWx1
ZSk7CiAKLSAgICBXZWFrUHRyRmFjdG9yeTxXZWJDb3JlOjpQbGF5YmFja1Nlc3Npb25Nb2RlbD4g
bV93ZWFrUHRyRmFjdG9yeTsKICAgICBXZWJQYWdlKiBtX3BhZ2U7CiAgICAgSGFzaE1hcDxXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50KiwgdWludDY0X3Q+IG1fbWVkaWFFbGVtZW50czsKICAgICBI
YXNoTWFwPHVpbnQ2NF90LCBNb2RlbEludGVyZmFjZVR1cGxlPiBtX2NvbnRleHRNYXA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9uTWFu
YWdlci5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFja1Nlc3Npb25N
YW5hZ2VyLm1tCmluZGV4IDM3MmFjMjAyMWUzNWFiZjdlZTlmYzc0MzY0YzYwZGZiYmQ4NzYyMDgu
LmQwYWVjMjVlOTJlOTdjMjg1MmI5NmRkMzVmYzQxNjcxNjYyZDhkODkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
Lm1tCkBAIC01NCwxMyArNTQsMTUgQEAgc3RhdGljIHVpbnQ2NF90IG5leHRDb250ZXh0SWQoKQog
CiAjcHJhZ21hIG1hcmsgLSBQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0CiAKLVBsYXli
YWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6OlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRl
eHQoV2Vha1B0cjxQbGF5YmFja1Nlc3Npb25NYW5hZ2VyPiYmIG1hbmFnZXIsIHVpbnQ2NF90IGNv
bnRleHRJZCkKLSAgICA6IG1fbWFuYWdlcihXVEZNb3ZlKG1hbmFnZXIpKQorUGxheWJhY2tTZXNz
aW9uSW50ZXJmYWNlQ29udGV4dDo6UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dChQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyJiBtYW5hZ2VyLCB1aW50NjRfdCBjb250ZXh0SWQpCisgICAgOiBt
X21hbmFnZXIoJm1hbmFnZXIpCiAgICAgLCBtX2NvbnRleHRJZChjb250ZXh0SWQpCiB7CiB9CiAK
LVBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6On5QbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2VDb250ZXh0KCkgPSBkZWZhdWx0OworUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6
flBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQoKQoreworfQogCiB2b2lkIFBsYXliYWNr
U2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6OnJlc2V0TWVkaWFTdGF0ZSgpCiB7CkBAIC0xODMsNyAr
MTg1LDEwIEBAIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6On5QbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
KCkKICAgICAgICAgUmVmUHRyPFBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50PiBtb2Rl
bDsKICAgICAgICAgUmVmUHRyPFBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ+IGludGVy
ZmFjZTsKICAgICAgICAgc3RkOjp0aWUobW9kZWwsIGludGVyZmFjZSkgPSB0dXBsZTsKKyAgICAg
ICAgbW9kZWwtPnJlbW92ZUNsaWVudCgqaW50ZXJmYWNlKTsKICAgICAgICAgbW9kZWwtPnNldE1l
ZGlhRWxlbWVudChudWxscHRyKTsKKworICAgICAgICBpbnRlcmZhY2UtPmludmFsaWRhdGUoKTsK
ICAgICB9CiAKICAgICBtX2NvbnRleHRNYXAuY2xlYXIoKTsKQEAgLTIwMyw5ICsyMDgsOSBAQCB2
b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmludmFsaWRhdGUoKQogCiBQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyOjpNb2RlbEludGVyZmFjZVR1cGxlIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmNy
ZWF0ZU1vZGVsQW5kSW50ZXJmYWNlKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBSZWY8UGxh
eWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ+IG1vZGVsID0gUGxheWJhY2tTZXNzaW9uTW9k
ZWxNZWRpYUVsZW1lbnQ6OmNyZWF0ZSgpOwotICAgIFJlZjxQbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2VDb250ZXh0PiBpbnRlcmZhY2UgPSBQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0Ojpj
cmVhdGUobWFrZVdlYWtQdHIodGhpcyksIGNvbnRleHRJZCk7Ci0gICAgbW9kZWwtPmFkZENsaWVu
dChpbnRlcmZhY2UtPmNyZWF0ZVdlYWtQdHIoKSk7CisgICAgUmVmUHRyPFBsYXliYWNrU2Vzc2lv
bk1vZGVsTWVkaWFFbGVtZW50PiBtb2RlbCA9IFBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVt
ZW50OjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4
dD4gaW50ZXJmYWNlID0gUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6Y3JlYXRlKCp0
aGlzLCBjb250ZXh0SWQpOworICAgIG1vZGVsLT5hZGRDbGllbnQoKmludGVyZmFjZSk7CiAKICAg
ICByZXR1cm4gc3RkOjptYWtlX3R1cGxlKFdURk1vdmUobW9kZWwpLCBXVEZNb3ZlKGludGVyZmFj
ZSkpOwogfQpAQCAtMjM2LDYgKzI0MSw4IEBAIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6
cmVtb3ZlQ29udGV4dCh1aW50NjRfdCBjb250ZXh0SWQpCiAKICAgICBSZWZQdHI8SFRNTE1lZGlh
RWxlbWVudD4gbWVkaWFFbGVtZW50ID0gbW9kZWwtPm1lZGlhRWxlbWVudCgpOwogICAgIG1vZGVs
LT5zZXRNZWRpYUVsZW1lbnQobnVsbHB0cik7CisgICAgbW9kZWwtPnJlbW92ZUNsaWVudCgqaW50
ZXJmYWNlKTsKKyAgICBpbnRlcmZhY2UtPmludmFsaWRhdGUoKTsKICAgICBtX21lZGlhRWxlbWVu
dHMucmVtb3ZlKG1lZGlhRWxlbWVudC5nZXQoKSk7CiAgICAgbV9jb250ZXh0TWFwLnJlbW92ZShj
b250ZXh0SWQpOwogfQpAQCAtMjc3LDggKzI4NCw2IEBAIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFu
YWdlcjo6c2V0VXBQbGF5YmFja0NvbnRyb2xzTWFuYWdlcihXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
CiAKICAgICBhZGRDbGllbnRGb3JDb250ZXh0KG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElkKTsK
IAotICAgIGlmICghbV9wYWdlKQotICAgICAgICByZXR1cm47CiAgICAgbV9wYWdlLT52aWRlb0Nv
bnRyb2xzTWFuYWdlckRpZENoYW5nZSgpOwogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxh
eWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpTZXRVcFBsYXliYWNrQ29udHJvbHNNYW5hZ2VyV2l0
aElEKG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CkBA
IC0yOTEsOSArMjk2LDYgQEAgdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpjbGVhclBsYXli
YWNrQ29udHJvbHNNYW5hZ2VyKCkKICAgICByZW1vdmVDbGllbnRGb3JDb250ZXh0KG1fY29udHJv
bHNNYW5hZ2VyQ29udGV4dElkKTsKICAgICBtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCA9IDA7
CiAKLSAgICBpZiAoIW1fcGFnZSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgbV9wYWdlLT52aWRl
b0NvbnRyb2xzTWFuYWdlckRpZENoYW5nZSgpOwogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6
UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpDbGVhclBsYXliYWNrQ29udHJvbHNNYW5hZ2Vy
KCksIG1fcGFnZS0+cGFnZUlEKCkpOwogfQpAQCAtMzIyLDQ1ICszMjQsMzYgQEAgV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudCogUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6Y3VycmVudFBsYXliYWNr
Q29udHJvbHNFbGVtZW4KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpyZXNldE1lZGlh
U3RhdGUodWludDY0X3QgY29udGV4dElkKQogewotICAgIGlmIChtX3BhZ2UpCi0gICAgICAgIG1f
cGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpSZXNldE1l
ZGlhU3RhdGUoY29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OlJlc2V0TWVkaWFTdGF0ZShj
b250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyOjpkdXJhdGlvbkNoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgZHVyYXRp
b24pCiB7Ci0gICAgaWYgKG1fcGFnZSkKLSAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkR1cmF0aW9uQ2hhbmdlZChjb250ZXh0SWQsIGR1
cmF0aW9uKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkR1cmF0aW9uQ2hhbmdlZChjb250ZXh0SWQsIGR1
cmF0aW9uKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFu
YWdlcjo6Y3VycmVudFRpbWVDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIGN1cnJl
bnRUaW1lLCBkb3VibGUgYW5jaG9yVGltZSkKIHsKLSAgICBpZiAobV9wYWdlKQotICAgICAgICBt
X3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6Q3VycmVu
dFRpbWVDaGFuZ2VkKGNvbnRleHRJZCwgY3VycmVudFRpbWUsIGFuY2hvclRpbWUpLCBtX3BhZ2Ut
PnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1h
bmFnZXJQcm94eTo6Q3VycmVudFRpbWVDaGFuZ2VkKGNvbnRleHRJZCwgY3VycmVudFRpbWUsIGFu
Y2hvclRpbWUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyOjpidWZmZXJlZFRpbWVDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIGJ1
ZmZlcmVkVGltZSkKIHsKLSAgICBpZiAobV9wYWdlKQotICAgICAgICBtX3BhZ2UtPnNlbmQoTWVz
c2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6QnVmZmVyZWRUaW1lQ2hhbmdlZChj
b250ZXh0SWQsIGJ1ZmZlcmVkVGltZSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+
c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpCdWZmZXJlZFRpbWVD
aGFuZ2VkKGNvbnRleHRJZCwgYnVmZmVyZWRUaW1lKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAK
IHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6cGxheWJhY2tTdGFydGVkVGltZUNoYW5nZWQo
dWludDY0X3QgY29udGV4dElkLCBkb3VibGUgcGxheWJhY2tTdGFydGVkVGltZSkKIHsKLSAgICBp
ZiAobV9wYWdlKQotICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lv
bk1hbmFnZXJQcm94eTo6UGxheWJhY2tTdGFydGVkVGltZUNoYW5nZWQoY29udGV4dElkLCBwbGF5
YmFja1N0YXJ0ZWRUaW1lKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1l
c3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OlBsYXliYWNrU3RhcnRlZFRpbWVD
aGFuZ2VkKGNvbnRleHRJZCwgcGxheWJhY2tTdGFydGVkVGltZSksIG1fcGFnZS0+cGFnZUlEKCkp
OwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnJhdGVDaGFuZ2VkKHVpbnQ2NF90
IGNvbnRleHRJZCwgYm9vbCBpc1BsYXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0ZSkKIHsKLSAgICBp
ZiAobV9wYWdlKQotICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lv
bk1hbmFnZXJQcm94eTo6UmF0ZUNoYW5nZWQoY29udGV4dElkLCBpc1BsYXlpbmcsIHBsYXliYWNr
UmF0ZSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxh
eWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpSYXRlQ2hhbmdlZChjb250ZXh0SWQsIGlzUGxheWlu
ZywgcGxheWJhY2tSYXRlKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tT
ZXNzaW9uTWFuYWdlcjo6c2Vla2FibGVSYW5nZXNDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwg
Y29uc3QgV2ViQ29yZTo6VGltZVJhbmdlcyYgdGltZVJhbmdlcywgZG91YmxlIGxhc3RNb2RpZmll
ZFRpbWUsIGRvdWJsZSBsaXZlVXBkYXRlSW50ZXJ2YWwpCiB7Ci0gICAgaWYgKCFtX3BhZ2UpCi0g
ICAgICAgIHJldHVybjsKLQogICAgIFZlY3RvcjxzdGQ6OnBhaXI8ZG91YmxlLCBkb3VibGU+PiBy
YW5nZXNWZWN0b3I7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRpbWVSYW5nZXMubGVu
Z3RoKCk7IGkrKykgewogICAgICAgICBkb3VibGUgc3RhcnQgPSB0aW1lUmFuZ2VzLnJhbmdlcygp
LnN0YXJ0KGkpLnRvRG91YmxlKCk7CkBAIC0zNzIsNTYgKzM2NSw0NyBAQCB2b2lkIFBsYXliYWNr
U2Vzc2lvbk1hbmFnZXI6OnNlZWthYmxlUmFuZ2VzQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQs
IGNvbnN0IFdlYgogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmNhblBsYXlGYXN0UmV2
ZXJzZUNoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBib29sIHZhbHVlKQogewotICAgIGlmICht
X3BhZ2UpCi0gICAgICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFu
YWdlclByb3h5OjpDYW5QbGF5RmFzdFJldmVyc2VDaGFuZ2VkKGNvbnRleHRJZCwgdmFsdWUpLCBt
X3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vz
c2lvbk1hbmFnZXJQcm94eTo6Q2FuUGxheUZhc3RSZXZlcnNlQ2hhbmdlZChjb250ZXh0SWQsIHZh
bHVlKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdl
cjo6YXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwg
Y29uc3QgVmVjdG9yPE1lZGlhU2VsZWN0aW9uT3B0aW9uPiYgb3B0aW9ucywgdWludDY0X3Qgc2Vs
ZWN0ZWRJbmRleCkKIHsKLSAgICBpZiAobV9wYWdlKQotICAgICAgICBtX3BhZ2UtPnNlbmQoTWVz
c2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6QXVkaW9NZWRpYVNlbGVjdGlvbk9w
dGlvbnNDaGFuZ2VkKGNvbnRleHRJZCwgb3B0aW9ucywgc2VsZWN0ZWRJbmRleCksIG1fcGFnZS0+
cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFu
YWdlclByb3h5OjpBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQoY29udGV4dElkLCBv
cHRpb25zLCBzZWxlY3RlZEluZGV4KSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAKIHZvaWQgUGxh
eWJhY2tTZXNzaW9uTWFuYWdlcjo6bGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQo
dWludDY0X3QgY29udGV4dElkLCBjb25zdCBWZWN0b3I8TWVkaWFTZWxlY3Rpb25PcHRpb24+JiBv
cHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQogewotICAgIGlmIChtX3BhZ2UpCi0gICAg
ICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpM
ZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChjb250ZXh0SWQsIG9wdGlvbnMsIHNl
bGVjdGVkSW5kZXgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0
aW9uc0NoYW5nZWQoY29udGV4dElkLCBvcHRpb25zLCBzZWxlY3RlZEluZGV4KSwgbV9wYWdlLT5w
YWdlSUQoKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6ZXh0ZXJuYWxQbGF5
YmFja0NoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBib29sIGVuYWJsZWQsIFBsYXliYWNrU2Vz
c2lvbk1vZGVsOjpFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSB0YXJnZXRUeXBlLCBTdHJpbmcg
bG9jYWxpemVkRGV2aWNlTmFtZSkKIHsKLSAgICBpZiAobV9wYWdlKQotICAgICAgICBtX3BhZ2Ut
PnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6RXh0ZXJuYWxQbGF5
YmFja1Byb3BlcnRpZXNDaGFuZ2VkKGNvbnRleHRJZCwgZW5hYmxlZCwgc3RhdGljX2Nhc3Q8dWlu
dDMyX3Q+KHRhcmdldFR5cGUpLCBsb2NhbGl6ZWREZXZpY2VOYW1lKSwgbV9wYWdlLT5wYWdlSUQo
KSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHk6OkV4dGVybmFsUGxheWJhY2tQcm9wZXJ0aWVzQ2hhbmdlZChjb250ZXh0SWQsIGVuYWJsZWQs
IHN0YXRpY19jYXN0PHVpbnQzMl90Pih0YXJnZXRUeXBlKSwgbG9jYWxpemVkRGV2aWNlTmFtZSks
IG1fcGFnZS0+cGFnZUlEKCkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmF1
ZGlvTWVkaWFTZWxlY3Rpb25JbmRleENoYW5nZWQodWludDY0X3QgY29udGV4dElkLCB1aW50NjRf
dCBzZWxlY3RlZEluZGV4KQogewotICAgIGlmIChtX3BhZ2UpCi0gICAgICAgIG1fcGFnZS0+c2Vu
ZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpBdWRpb01lZGlhU2VsZWN0
aW9uSW5kZXhDaGFuZ2VkKGNvbnRleHRJZCwgc2VsZWN0ZWRJbmRleCksIG1fcGFnZS0+cGFnZUlE
KCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclBy
b3h5OjpBdWRpb01lZGlhU2VsZWN0aW9uSW5kZXhDaGFuZ2VkKGNvbnRleHRJZCwgc2VsZWN0ZWRJ
bmRleCksIG1fcGFnZS0+cGFnZUlEKCkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXI6OmxlZ2libGVNZWRpYVNlbGVjdGlvbkluZGV4Q2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQs
IHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCiB7Ci0gICAgaWYgKG1fcGFnZSkKLSAgICAgICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkxlZ2libGVN
ZWRpYVNlbGVjdGlvbkluZGV4Q2hhbmdlZChjb250ZXh0SWQsIHNlbGVjdGVkSW5kZXgpLCBtX3Bh
Z2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lv
bk1hbmFnZXJQcm94eTo6TGVnaWJsZU1lZGlhU2VsZWN0aW9uSW5kZXhDaGFuZ2VkKGNvbnRleHRJ
ZCwgc2VsZWN0ZWRJbmRleCksIG1fcGFnZS0+cGFnZUlEKCkpOwogfQogCiB2b2lkIFBsYXliYWNr
U2Vzc2lvbk1hbmFnZXI6OndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkQ2hhbmdlZCh1aW50
NjRfdCBjb250ZXh0SWQsIGJvb2wgZGlzYWJsZWQpCiB7Ci0gICAgaWYgKG1fcGFnZSkKLSAgICAg
ICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6Oldp
cmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkQ2hhbmdlZChjb250ZXh0SWQsIGRpc2FibGVkKSk7
CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6
OldpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkQ2hhbmdlZChjb250ZXh0SWQsIGRpc2FibGVk
KSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6bXV0ZWRDaGFuZ2VkKHVpbnQ2
NF90IGNvbnRleHRJZCwgYm9vbCBtdXRlZCkKIHsKLSAgICBpZiAobV9wYWdlKQotICAgICAgICBt
X3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6TXV0ZWRD
aGFuZ2VkKGNvbnRleHRJZCwgbXV0ZWQpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBs
YXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6TXV0ZWRDaGFuZ2VkKGNvbnRleHRJZCwgbXV0ZWQp
KTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjp2b2x1bWVDaGFuZ2VkKHVpbnQ2
NF90IGNvbnRleHRJZCwgZG91YmxlIHZvbHVtZSkKIHsKLSAgICBpZiAobV9wYWdlKQotICAgICAg
ICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6Vm9s
dW1lQ2hhbmdlZChjb250ZXh0SWQsIHZvbHVtZSkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdl
czo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpWb2x1bWVDaGFuZ2VkKGNvbnRleHRJZCwg
dm9sdW1lKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6aXNQaWN0dXJlSW5Q
aWN0dXJlU3VwcG9ydGVkQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgc3VwcG9ydGVk
KQpAQCAtNTA1LDEwICs0ODksOCBAQCB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnNlbGVj
dExlZ2libGVNZWRpYU9wdGlvbih1aW50NjRfdCBjb250ZXh0SWQsIHVpbnQ2NAogCiB2b2lkIFBs
YXliYWNrU2Vzc2lvbk1hbmFnZXI6OmhhbmRsZUNvbnRyb2xsZWRFbGVtZW50SURSZXF1ZXN0KHVp
bnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBpZiAoIW1fcGFnZSkKLSAgICAgICAgcmV0dXJuOwot
ICAgIAotICAgIGlmIChhdXRvIGVsZW1lbnQgPSBlbnN1cmVNb2RlbChjb250ZXh0SWQpLm1lZGlh
RWxlbWVudCgpKQorICAgIGF1dG8gZWxlbWVudCA9IGVuc3VyZU1vZGVsKGNvbnRleHRJZCkubWVk
aWFFbGVtZW50KCk7CisgICAgaWYgKGVsZW1lbnQpCiAgICAgICAgIG1fcGFnZS0+c2VuZChNZXNz
YWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpIYW5kbGVDb250cm9sbGVkRWxlbWVu
dElEUmVzcG9uc2UoY29udGV4dElkLCBlbGVtZW50LT5nZXRJZEF0dHJpYnV0ZSgpKSk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlci5oCmluZGV4IGQ1ZTNhOGYxNzMyODRiNGIwZWIxYTNjZjYxOWJiNTFkYmQxNzJm
NGIuLmZmOGM0YmFmNDYzYmUzNTM5ODMwMjkwZWNkMjQ2ZWY5ZmNmYjFkZmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXIuaApAQCAtNjAsOSArNjAsOSBAQCBjbGFzcyBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250
ZXh0CiAgICAgOiBwdWJsaWMgUmVmQ291bnRlZDxWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250
ZXh0PgogICAgICwgcHVibGljIFdlYkNvcmU6OlZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50IHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ+
IGNyZWF0ZShXZWFrUHRyPFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI+JiYgbWFuYWdlciwgdWludDY0
X3QgY29udGV4dElkKQorICAgIHN0YXRpYyBSZWY8VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29u
dGV4dD4gY3JlYXRlKFZpZGVvRnVsbHNjcmVlbk1hbmFnZXImIG1hbmFnZXIsIHVpbnQ2NF90IGNv
bnRleHRJZCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUNvbnRleHQoV1RGTW92ZShtYW5hZ2VyKSwgY29udGV4dElkKSk7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQo
bWFuYWdlciwgY29udGV4dElkKSk7CiAgICAgfQogICAgIHZpcnR1YWwgflZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUNvbnRleHQoKTsKIApAQCAtODYsMTYgKzg2LDE0IEBAIHB1YmxpYzoKICAgICBi
b29sIGlzRnVsbHNjcmVlbigpIGNvbnN0IHsgcmV0dXJuIG1faXNGdWxsc2NyZWVuOyB9CiAgICAg
dm9pZCBzZXRJc0Z1bGxzY3JlZW4oYm9vbCBmbGFnKSB7IG1faXNGdWxsc2NyZWVuID0gZmxhZzsg
fQogCi0gICAgV2Vha1B0cjxXZWJDb3JlOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVudD4gY3Jl
YXRlV2Vha1B0cigpIHsgcmV0dXJuIG1fd2Vha1B0ckZhY3RvcnkuY3JlYXRlV2Vha1B0cigqdGhp
cyk7IH0KLQogcHJpdmF0ZToKICAgICAvLyBWaWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVudAogICAg
IHZvaWQgaGFzVmlkZW9DaGFuZ2VkKGJvb2wpIG92ZXJyaWRlOwogICAgIHZvaWQgdmlkZW9EaW1l
bnNpb25zQ2hhbmdlZChjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmKSBvdmVycmlkZTsKIAotICAg
IFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQoV2Vha1B0cjxWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyPiYmLCB1aW50NjRfdCBjb250ZXh0SWQpOworICAgIFZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUNvbnRleHQoVmlkZW9GdWxsc2NyZWVuTWFuYWdlciYsIHVpbnQ2NF90IGNvbnRleHRJZCk7
CiAKLSAgICBXZWFrUHRyPFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI+IG1fbWFuYWdlcjsKKyAgICBW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKiBtX21hbmFnZXI7CiAgICAgdWludDY0X3QgbV9jb250ZXh0
SWQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPExheWVySG9zdGluZ0NvbnRleHQ+IG1fbGF5ZXJIb3N0
aW5nQ29udGV4dDsKICAgICBib29sIG1faXNBbmltYXRpbmcgeyBmYWxzZSB9OwpAQCAtMTAzLDEz
ICsxMDEsOSBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6
VmlkZW9GdWxsc2NyZWVuTW9kZSBtX2Z1bGxzY3JlZW5Nb2RlIHsgV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSB9OwogICAgIGJvb2wgbV9mdWxs
c2NyZWVuU3RhbmRieSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2lzRnVsbHNjcmVlbiB7IGZhbHNl
IH07Ci0gICAgV2Vha1B0ckZhY3Rvcnk8V2ViQ29yZTo6VmlkZW9GdWxsc2NyZWVuTW9kZWxDbGll
bnQ+IG1fd2Vha1B0ckZhY3Rvcnk7CiB9OwogCi1jbGFzcyBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
Ci0gICAgOiBwdWJsaWMgUmVmQ291bnRlZDxWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyPgotICAgICwg
cHVibGljIENhbk1ha2VXZWFrUHRyPFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI+Ci0gICAgLCBwcml2
YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKK2NsYXNzIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXIg
OiBwdWJsaWMgUmVmQ291bnRlZDxWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyPiwgcHJpdmF0ZSBJUEM6
Ok1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyPiBjcmVhdGUoV2ViUGFnZSYsIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXImKTsKICAg
ICB2aXJ0dWFsIH5WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbSBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCmluZGV4
IDgxNGUyYzhmMWY2NTQ5OGYzYWQ2ZDAzNTE1ZTY5ZmE4NTJjNTc5ZmEuLjcxOWNjMmJiNDhjN2U5
NjU4ZDZjM2IwN2E4MGRjMjQzYzYxMDgxYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCkBAIC04MCw4ICs4
MCw4IEBAIHN0YXRpYyBJbnRSZWN0IGlubGluZVZpZGVvRnJhbWUoSFRNTFZpZGVvRWxlbWVudCYg
ZWxlbWVudCkKIAogI3ByYWdtYSBtYXJrIC0gVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4
dAogCi1WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0OjpWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VDb250ZXh0KFdlYWtQdHI8VmlkZW9GdWxsc2NyZWVuTWFuYWdlcj4mJiBtYW5hZ2VyLCB1
aW50NjRfdCBjb250ZXh0SWQpCi0gICAgOiBtX21hbmFnZXIoV1RGTW92ZShtYW5hZ2VyKSkKK1Zp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6OlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNv
bnRleHQoVmlkZW9GdWxsc2NyZWVuTWFuYWdlciYgbWFuYWdlciwgdWludDY0X3QgY29udGV4dElk
KQorICAgIDogbV9tYW5hZ2VyKCZtYW5hZ2VyKQogICAgICwgbV9jb250ZXh0SWQoY29udGV4dElk
KQogewogfQpAQCAtMTI5LDYgKzEyOSw5IEBAIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6On5WaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyKCkKICAgICAgICAgc3RkOjp0aWUobW9kZWwsIGludGVyZmFjZSkg
PSB0dXBsZTsKIAogICAgICAgICBtb2RlbC0+c2V0VmlkZW9FbGVtZW50KG51bGxwdHIpOworICAg
ICAgICBtb2RlbC0+cmVtb3ZlQ2xpZW50KCppbnRlcmZhY2UpOworCisgICAgICAgIGludGVyZmFj
ZS0+aW52YWxpZGF0ZSgpOwogICAgIH0KIAogICAgIG1fY29udGV4dE1hcC5jbGVhcigpOwpAQCAt
MTQ5LDExICsxNTIsMTEgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjppbnZhbGlkYXRl
KCkKIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6Ok1vZGVsSW50ZXJmYWNlVHVwbGUgVmlkZW9GdWxs
c2NyZWVuTWFuYWdlcjo6Y3JlYXRlTW9kZWxBbmRJbnRlcmZhY2UodWludDY0X3QgY29udGV4dElk
KQogewogICAgIFJlZlB0cjxWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudD4gbW9kZWwg
PSBWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRy
PFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ+IGludGVyZmFjZSA9IFZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUNvbnRleHQ6OmNyZWF0ZShtYWtlV2Vha1B0cigqdGhpcyksIGNvbnRleHRJ
ZCk7CisgICAgUmVmUHRyPFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ+IGludGVyZmFj
ZSA9IFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6OmNyZWF0ZSgqdGhpcywgY29udGV4
dElkKTsKICAgICBtX3BsYXliYWNrU2Vzc2lvbk1hbmFnZXItPmFkZENsaWVudEZvckNvbnRleHQo
Y29udGV4dElkKTsKIAogICAgIGludGVyZmFjZS0+c2V0TGF5ZXJIb3N0aW5nQ29udGV4dChMYXll
ckhvc3RpbmdDb250ZXh0OjpjcmVhdGVGb3JFeHRlcm5hbEhvc3RpbmdQcm9jZXNzKCkpOwotICAg
IG1vZGVsLT5hZGRDbGllbnQoaW50ZXJmYWNlLT5jcmVhdGVXZWFrUHRyKCkpOworICAgIG1vZGVs
LT5hZGRDbGllbnQoKmludGVyZmFjZSk7CiAKICAgICByZXR1cm4gc3RkOjptYWtlX3R1cGxlKFdU
Rk1vdmUobW9kZWwpLCBXVEZNb3ZlKGludGVyZmFjZSkpOwogfQpAQCAtMTg2LDYgKzE4OSw4IEBA
IHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6cmVtb3ZlQ29udGV4dCh1aW50NjRfdCBjb250
ZXh0SWQpCiAKICAgICBSZWZQdHI8SFRNTFZpZGVvRWxlbWVudD4gdmlkZW9FbGVtZW50ID0gbW9k
ZWwtPnZpZGVvRWxlbWVudCgpOwogICAgIG1vZGVsLT5zZXRWaWRlb0VsZW1lbnQobnVsbHB0cik7
CisgICAgbW9kZWwtPnJlbW92ZUNsaWVudCgqaW50ZXJmYWNlKTsKKyAgICBpbnRlcmZhY2UtPmlu
dmFsaWRhdGUoKTsKICAgICBtX3ZpZGVvRWxlbWVudHMucmVtb3ZlKHZpZGVvRWxlbWVudC5nZXQo
KSk7CiAgICAgbV9jb250ZXh0TWFwLnJlbW92ZShjb250ZXh0SWQpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDcyZDhhZDk2M2IzNzMxNWI3YWIx
OTY1MDYxODY0ODIyYTY2ZDc3MWIuLjBlNGE2NzViYjhkZTNlYjFiZDljYmI1ZTYzZTM4MTQ3NmI3
Yzc1YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmll
dy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAg
LTk0MjAsNiArOTQyMCw4IEBAIGJvb2wgTGF5ZXJGbHVzaENvbnRyb2xsZXI6OmZsdXNoTGF5ZXJz
KCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgX3ByaXZhdGUtPnBsYXliYWNrU2Vzc2lvbk1vZGVs
LT5zZXRNZWRpYUVsZW1lbnQobnVsbHB0cik7CisgICAgX3ByaXZhdGUtPnBsYXliYWNrU2Vzc2lv
bkludGVyZmFjZS0+aW52YWxpZGF0ZSgpOworCiAgICAgX3ByaXZhdGUtPnBsYXliYWNrU2Vzc2lv
bk1vZGVsID0gbnVsbHB0cjsKICAgICBfcHJpdmF0ZS0+cGxheWJhY2tTZXNzaW9uSW50ZXJmYWNl
ID0gbnVsbHB0cjsKICAgICBbc2VsZiB1cGRhdGVUb3VjaEJhcl07CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggN2I4NDQ0OTc4
NDFhYzg4ODY3ODRkZWM4MjQ2MjIzODM2MTg5ODFkOS4uMTEyZmZmOGZmNGRiMTQ3YTNjZGI0MGZl
ZGFmNjJmODJkNzNhYzNmNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE4LTA5LTI4ICBDb21t
aXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KKworICAgICAgICBVbnJldmlld2Vk
LCByb2xsaW5nIG91dCByMjM2NjA1LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTkwMDg3CisKKyAgICAgICAgY2F1c2VkIHRocmVlIEFQSSB0ZXN0IHRp
bWVvdXRzIChSZXF1ZXN0ZWQgYnkgamVybm9ibGUgb24KKyAgICAgICAgI3dlYmtpdCkuCisKKyAg
ICAgICAgUmV2ZXJ0ZWQgY2hhbmdlc2V0OgorCisgICAgICAgICJSZWZhY3RvcmluZzogZWxpbWlu
YXRlIHJhdyBwb2ludGVyIHVzYWdlIGluIEZ1bGxzY3JlZW4gY29kZSIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODc0NworICAgICAgICBodHRwczov
L3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjM2NjA1CisKIDIwMTgtMDktMjggIEplciBOb2Js
ZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVmYWN0b3Jpbmc6IGVsaW1pbmF0
ZSByYXcgcG9pbnRlciB1c2FnZSBpbiBGdWxsc2NyZWVuIGNvZGUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL21lZGlhL2NvbnRyb2xzL2lwYWQvY2xvc2UtcGFnZS13aXRoLXBpY3R1cmUtaW4tcGlj
dHVyZS12aWRlby1hc3NlcnRpb24tZmFpbHVyZS5odG1sIGIvTGF5b3V0VGVzdHMvbWVkaWEvY29u
dHJvbHMvaXBhZC9jbG9zZS1wYWdlLXdpdGgtcGljdHVyZS1pbi1waWN0dXJlLXZpZGVvLWFzc2Vy
dGlvbi1mYWlsdXJlLmh0bWwKaW5kZXggN2UwOGFkZDYwNDQ2ZmQzNDZmNmVmMjU3MTA5YzQxYThk
NzZhZTgzNi4uNzE5NDBjOTM3NjQ4NzEyY2Y1OTUwNzg5ZDgxMjdmMmExMTQ4NzNhYyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvbWVkaWEvY29udHJvbHMvaXBhZC9jbG9zZS1wYWdlLXdpdGgtcGlj
dHVyZS1pbi1waWN0dXJlLXZpZGVvLWFzc2VydGlvbi1mYWlsdXJlLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvbWVkaWEvY29udHJvbHMvaXBhZC9jbG9zZS1wYWdlLXdpdGgtcGljdHVyZS1pbi1waWN0
dXJlLXZpZGVvLWFzc2VydGlvbi1mYWlsdXJlLmh0bWwKQEAgLTEzLDExICsxMyw4IEBAIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikgewogfQogCiAvLyBDYWxsZWQgYnkgcmVzb3VyY2VzL3BpY3R1cmUt
aW4tcGljdHVyZS5odG1sCi1mdW5jdGlvbiBub3RpZnlEaWRDaGFuZ2VQcmVzZW50YXRpb25Nb2Rl
KG1vZGUpCitmdW5jdGlvbiBub3RpZnlEaWRDaGFuZ2VQcmVzZW50YXRpb25Nb2RlKCkKIHsKLSAg
ICBpZiAobW9kZSAhPT0gJ3BpY3R1cmUtaW4tcGljdHVyZScpCi0gICAgICAgIHJldHVybjsKLQog
ICAgIC8vIEZvciBzb21lIHJlYXNvbiB3YWl0aW5nIH4yMDBtcyB0byBhbGxvdyB0aGUgdmlkZW8g
dG8gdHJhbnNpdGlvbiBmcm9tIHRoZSBwYWdlIHRvIGl0cwogICAgIC8vIHBpY3R1cmUtaW4tcGlj
dHVyZSB3aW5kb3cgc2VlbXMgdG8gbWFrZSB0cmlnZ2VyaW5nIHRoZSBhc3NlcnRpb24gbW9yZSBy
ZWxpYWJsZSAod2h5PykuCiAgICAgZnVuY3Rpb24gY2xvc2VXaW5kb3dBbmREb25lKCkKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL21lZGlhL2NvbnRyb2xzL2lwYWQvcmVzb3VyY2VzL3BpY3R1cmUt
aW4tcGljdHVyZS5odG1sIGIvTGF5b3V0VGVzdHMvbWVkaWEvY29udHJvbHMvaXBhZC9yZXNvdXJj
ZXMvcGljdHVyZS1pbi1waWN0dXJlLmh0bWwKaW5kZXggN2EzNzZkMGM1ZjM1ODM2NGQ4ZDVhYzE1
MGJlNTc0YzczYzdhODgyZC4uYjFkMDJiOWIwOWFkYmE0ZTNjYjIwZGQyZWYwNTI0YzM1ZDViMDEz
ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvbWVkaWEvY29udHJvbHMvaXBhZC9yZXNvdXJjZXMv
cGljdHVyZS1pbi1waWN0dXJlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvY29udHJvbHMv
aXBhZC9yZXNvdXJjZXMvcGljdHVyZS1pbi1waWN0dXJlLmh0bWwKQEAgLTksOSArOSw5IEBACiBp
ZiAod2luZG93LmludGVybmFscykKICAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0QWxsb3dzUGlj
dHVyZUluUGljdHVyZU1lZGlhUGxheWJhY2sodHJ1ZSk7CiAKLWZ1bmN0aW9uIGRpc3BhdGNoRGlk
Q2hhbmdlUHJlc2VudGF0aW9uTW9kZShldmVudCkKK2Z1bmN0aW9uIGRpc3BhdGNoRGlkQ2hhbmdl
UHJlc2VudGF0aW9uTW9kZSgpCiB7Ci0gICAgd2luZG93Lm9wZW5lci5ub3RpZnlEaWRDaGFuZ2VQ
cmVzZW50YXRpb25Nb2RlKGV2ZW50LnRhcmdldC53ZWJraXRQcmVzZW50YXRpb25Nb2RlKTsKKyAg
ICB3aW5kb3cub3BlbmVyLm5vdGlmeURpZENoYW5nZVByZXNlbnRhdGlvbk1vZGUoKTsKIH0KIAog
dmFyIHZpZGVvID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigidmlkZW8iKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>