<?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>212499</bug_id>
          
          <creation_ts>2020-05-28 15:55:44 -0700</creation_ts>
          <short_desc>watchOS: Upstream WKNumberPadView</short_desc>
          <delta_ts>2020-05-28 16:27:11 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jonathan Bedard">jbedard</reporter>
          <assigned_to name="Jonathan Bedard">jbedard</assigned_to>
          <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1657068</commentid>
    <comment_count>0</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-05-28 15:55:44 -0700</bug_when>
    <thetext>WKNumberPadView should be upstreamed from WebKitAdditions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657069</commentid>
    <comment_count>1</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-05-28 15:57:43 -0700</bug_when>
    <thetext>&lt;rdar://problem/63736073&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657070</commentid>
    <comment_count>2</comment_count>
      <attachid>400518</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-05-28 16:01:49 -0700</bug_when>
    <thetext>Created attachment 400518
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657079</commentid>
    <comment_count>3</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-05-28 16:27:10 -0700</bug_when>
    <thetext>Committed r262273: &lt;https://trac.webkit.org/changeset/262273&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 400518.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400518</attachid>
            <date>2020-05-28 16:01:49 -0700</date>
            <delta_ts>2020-05-28 16:27:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212499-20200528160147.patch</filename>
            <type>text/plain</type>
            <size>22259</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjIyNjkpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIwLTA1LTI4ICBKb25hdGhhbiBC
ZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KKworICAgICAgICB3YXRjaE9TOiBVcHN0cmVhbSBX
S051bWJlclBhZFZpZXcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxMjQ5OQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjM3MzYwNzM+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9z
L2Zvcm1zL1dLTnVtYmVyUGFkVmlldy5oOiBNb3ZlZCBmcm9tIFdlYktpdEFkZGl0aW9ucy4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLTnVtYmVyUGFkVmlldy5tbTogRGl0dG8uCisK
IDIwMjAtMDUtMjggIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAg
ICAgICAgU2ltcGxpZnkgRXZlbnREaXNwYXRjaGVyIHdoZWVsIGV2ZW50IGRpc3BhdGNoCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tOdW1iZXJQYWRWaWV3LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLTnVtYmVyUGFk
Vmlldy5oCShyZXZpc2lvbiAyNjIyNTIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
Zm9ybXMvV0tOdW1iZXJQYWRWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDYgKzI1LDU5IEBACiAKICNwcmFn
bWEgb25jZQogCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLSNpbXBvcnQgPFdlYktpdEFk
ZGl0aW9ucy9XS051bWJlclBhZFZpZXdBZGRpdGlvbnMuaD4KKyNpZiBQTEFURk9STShXQVRDSE9T
KQorCisjaW1wb3J0IDxVSUtpdC9VSUtpdC5oPgorCit0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2Vy
LCBXS051bWJlclBhZEJ1dHRvbk1vZGUpIHsKKyAgICBXS051bWJlclBhZEJ1dHRvbk1vZGVEZWZh
dWx0LAorICAgIFdLTnVtYmVyUGFkQnV0dG9uTW9kZUFsdGVybmF0ZQorfTsKKwordHlwZWRlZiBO
U19FTlVNKE5TSW50ZWdlciwgV0tOdW1iZXJQYWRCdXR0b25Qb3NpdGlvbikgeworICAgIFdLTnVt
YmVyUGFkQnV0dG9uUG9zaXRpb25Cb3R0b21MZWZ0ID0gLTIsCisgICAgV0tOdW1iZXJQYWRCdXR0
b25Qb3NpdGlvbkJvdHRvbVJpZ2h0ID0gLTEsCisgICAgV0tOdW1iZXJQYWRCdXR0b25Qb3NpdGlv
bjAgPSAwLAorICAgIFdLTnVtYmVyUGFkQnV0dG9uUG9zaXRpb24xID0gMSwKKyAgICBXS051bWJl
clBhZEJ1dHRvblBvc2l0aW9uMiA9IDIsCisgICAgV0tOdW1iZXJQYWRCdXR0b25Qb3NpdGlvbjMg
PSAzLAorICAgIFdLTnVtYmVyUGFkQnV0dG9uUG9zaXRpb240ID0gNCwKKyAgICBXS051bWJlclBh
ZEJ1dHRvblBvc2l0aW9uNSA9IDUsCisgICAgV0tOdW1iZXJQYWRCdXR0b25Qb3NpdGlvbjYgPSA2
LAorICAgIFdLTnVtYmVyUGFkQnV0dG9uUG9zaXRpb243ID0gNywKKyAgICBXS051bWJlclBhZEJ1
dHRvblBvc2l0aW9uOCA9IDgsCisgICAgV0tOdW1iZXJQYWRCdXR0b25Qb3NpdGlvbjkgPSA5Cit9
OworCit0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBXS051bWJlclBhZEtleSkgeworICAgIFdL
TnVtYmVyUGFkS2V5RGFzaCA9IC05LAorICAgIFdLTnVtYmVyUGFkS2V5QXN0ZXJpc2sgPSAtOCwK
KyAgICBXS051bWJlclBhZEtleU9jdG90aG9ycGUgPSAtNywKKyAgICBXS051bWJlclBhZEtleUNs
b3NpbmdQYXJlbnRoZXNpcyA9IC02LAorICAgIFdLTnVtYmVyUGFkS2V5T3BlbmluZ1BhcmVudGhl
c2lzID0gLTUsCisgICAgV0tOdW1iZXJQYWRLZXlQbHVzID0gLTQsCisgICAgV0tOdW1iZXJQYWRL
ZXlBY2NlcHQgPSAtMywKKyAgICBXS051bWJlclBhZEtleVRvZ2dsZU1vZGUgPSAtMiwKKyAgICBX
S051bWJlclBhZEtleU5vbmUgPSAtMSwKKyAgICBXS051bWJlclBhZEtleTAgPSBXS051bWJlclBh
ZEJ1dHRvblBvc2l0aW9uMCwKKyAgICBXS051bWJlclBhZEtleTEgPSBXS051bWJlclBhZEJ1dHRv
blBvc2l0aW9uMSwKKyAgICBXS051bWJlclBhZEtleTIgPSBXS051bWJlclBhZEJ1dHRvblBvc2l0
aW9uMiwKKyAgICBXS051bWJlclBhZEtleTMgPSBXS051bWJlclBhZEJ1dHRvblBvc2l0aW9uMywK
KyAgICBXS051bWJlclBhZEtleTQgPSBXS051bWJlclBhZEJ1dHRvblBvc2l0aW9uNCwKKyAgICBX
S051bWJlclBhZEtleTUgPSBXS051bWJlclBhZEJ1dHRvblBvc2l0aW9uNSwKKyAgICBXS051bWJl
clBhZEtleTYgPSBXS051bWJlclBhZEJ1dHRvblBvc2l0aW9uNiwKKyAgICBXS051bWJlclBhZEtl
eTcgPSBXS051bWJlclBhZEJ1dHRvblBvc2l0aW9uNywKKyAgICBXS051bWJlclBhZEtleTggPSBX
S051bWJlclBhZEJ1dHRvblBvc2l0aW9uOCwKKyAgICBXS051bWJlclBhZEtleTkgPSBXS051bWJl
clBhZEJ1dHRvblBvc2l0aW9uOQorfTsKKworQGNsYXNzIFdLTnVtYmVyUGFkVmlld0NvbnRyb2xs
ZXI7CisKK0BpbnRlcmZhY2UgV0tOdW1iZXJQYWRWaWV3IDogVUlWaWV3CistIChpbnN0YW5jZXR5
cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1lIGNvbnRyb2xsZXI6KFdLTnVtYmVyUGFkVmll
d0NvbnRyb2xsZXIgKiljb250cm9sbGVyIE5TX0RFU0lHTkFURURfSU5JVElBTElaRVI7CistIChp
bnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1lIE5TX1VOQVZBSUxBQkxFOwor
LSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29kZXI6KE5TQ29kZXIgKilkZWNvZGVyIE5TX1VOQVZB
SUxBQkxFOworLSAoaW5zdGFuY2V0eXBlKWluaXQgTlNfVU5BVkFJTEFCTEU7CitAZW5kCisKICNl
bmRpZgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLTnVtYmVyUGFk
Vmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMv
V0tOdW1iZXJQYWRWaWV3Lm1tCShyZXZpc2lvbiAyNjIyNTIpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvZm9ybXMvV0tOdW1iZXJQYWRWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiw2ICsyNiw1
NTAgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV0tOdW1iZXJQYWRWaWV3LmgiCiAK
LSNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQotI2ltcG9ydCA8V2ViS2l0QWRkaXRpb25zL1dL
TnVtYmVyUGFkVmlld0FkZGl0aW9ucy5tbT4KLSNlbmRpZgorI2lmIFBMQVRGT1JNKFdBVENIT1Mp
CisKKyNpbXBvcnQgIldLTnVtYmVyUGFkVmlld0NvbnRyb2xsZXIuaCIKKyNpbXBvcnQgPENvcmVU
ZXh0L0NURm9udFRyYWl0c1ByaXYuaD4KKyNpbXBvcnQgPFBlcHBlclVJQ29yZS9QVUlDQWN0aW9u
Q29udHJvbGxlcl9Qcml2YXRlLmg+CisjaW1wb3J0IDxQZXBwZXJVSUNvcmUvVUlEZXZpY2UrUFVJ
Q0FkZGl0aW9ucy5oPgorI2ltcG9ydCA8VUlLaXQvVUlGb250X1ByaXZhdGUuaD4KKyNpbXBvcnQg
PFVJS2l0L1VJR2VvbWV0cnlfUHJpdmF0ZS5oPgorI2ltcG9ydCA8VUlLaXQvVUlJbWFnZV9Qcml2
YXRlLmg+CisjaW1wb3J0IDxVSUtpdC9VSUxhYmVsX1ByaXZhdGUuaD4KKyNpbXBvcnQgPFVJS2l0
L1VJVmlld19Qcml2YXRlLmg+CisjaW1wb3J0IDxXZWJDb3JlL0xvY2FsaXplZFN0cmluZ3MuaD4K
KyNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5o
PgorI2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KKworc3RhdGljIEJPT0wgaXNSZWd1bGFyRGV2aWNlVmFyaWFudCgpCit7CisgICAgcmV0
dXJuIFtVSURldmljZSBjdXJyZW50RGV2aWNlXS5wdWljX2RldmljZVZhcmlhbnQgPT0gUFVJQ0Rl
dmljZVZhcmlhbnRSZWd1bGFyOworfQorCitzdGF0aWMgQ0dGbG9hdCBudW1iZXJQYWRCdXR0b25T
cGFjaW5nKCkKK3sKKyAgICByZXR1cm4gaXNSZWd1bGFyRGV2aWNlVmFyaWFudCgpID8gMi41IDog
MjsKK30KKworc3RhdGljIENHRmxvYXQgbnVtYmVyUGFkQmFja2dyb3VuZEluc2V0QW1vdW50KCkK
K3sKKyAgICByZXR1cm4gaXNSZWd1bGFyRGV2aWNlVmFyaWFudCgpID8gMSA6IDEuMjU7Cit9CisK
K3N0YXRpYyBDR0Zsb2F0IG51bWJlclBhZExhYmVsRm9udFNpemUoKQoreworICAgIHJldHVybiBb
VUlEZXZpY2UgY3VycmVudERldmljZV0ucHVpY19kZXZpY2VWYXJpYW50ID09IFBVSUNEZXZpY2VW
YXJpYW50Q29tcGFjdCA/IDI0IDogMjg7Cit9CisKK2NvbnN0IENHRmxvYXQgbnVtYmVyUGFkSGln
aGxpZ2h0ZWRXaGl0ZUNvbG9yVmFsdWUgPSAwLjM4OworY29uc3QgQ0dGbG9hdCBudW1iZXJQYWRC
dXR0b25CYWNrZ3JvdW5kVmlld0Nvcm5lclJhZGl1cyA9IDY7Citjb25zdCBDR0Zsb2F0IG51bWJl
clBhZEJ1dHRvbkhpZ2hsaWdodFNjYWxlRmFjdG9yID0gMS4zNTsKK2NvbnN0IENHRmxvYXQgbnVt
YmVyUGFkSGlnaGxpZ2h0QW5pbWF0aW9uRHVyYXRpb24gPSAwLjI1OworY29uc3QgQ0dGbG9hdCBu
dW1iZXJQYWROb25IaWdobGlnaHRlZEJ1dHRvbkFscGhhID0gMC41OworY29uc3QgQ0dGbG9hdCBu
dW1iZXJQYWROb25WaXNpYmxlQnV0dG9uU2NhbGVGYWN0b3IgPSAwLjAwMTsKK2NvbnN0IENHRmxv
YXQgbnVtYmVyUGFkSGlnaGxpZ2h0ZWRCdXR0b25aUG9zaXRpb24gPSAxMDA7CisKK3R5cGVkZWYg
c3RydWN0IENvbHVtbkFuZFJvdyB7CisgICAgTlNVSW50ZWdlciBjb2x1bW47CisgICAgTlNVSW50
ZWdlciByb3c7Cit9IENvbHVtbkFuZFJvdzsKKworc3RhdGljIENvbHVtbkFuZFJvdyBjb2x1bW5B
bmRSb3dGb3JQb3NpdGlvbihXS051bWJlclBhZEJ1dHRvblBvc2l0aW9uIHBvc2l0aW9uKQorewor
ICAgIGlmICghcG9zaXRpb24pCisgICAgICAgIHJldHVybiB7IDEsIDMgfTsKKyAgICBpZiAocG9z
aXRpb24gPT0gV0tOdW1iZXJQYWRCdXR0b25Qb3NpdGlvbkJvdHRvbUxlZnQpCisgICAgICAgIHJl
dHVybiB7IDAsIDMgfTsKKyAgICBpZiAocG9zaXRpb24gPT0gV0tOdW1iZXJQYWRCdXR0b25Qb3Np
dGlvbkJvdHRvbVJpZ2h0KQorICAgICAgICByZXR1cm4geyAyLCAzIH07CisgICAgcmV0dXJuIHsg
KHN0YXRpY19jYXN0PE5TVUludGVnZXI+KHBvc2l0aW9uKSAtIDEpICUgMywgKHN0YXRpY19jYXN0
PE5TVUludGVnZXI+KHBvc2l0aW9uKSAtIDEpIC8gMyB9OworfQorCitzdGF0aWMgV0tOdW1iZXJQ
YWRCdXR0b25Qb3NpdGlvbiBwb3NpdGlvbkZvckNvbHVtbkFuZFJvdyhDb2x1bW5BbmRSb3cgY29s
dW1uQW5kUm93KQoreworICAgIE5TVUludGVnZXIgY29sdW1uID0gY29sdW1uQW5kUm93LmNvbHVt
bjsKKyAgICBOU1VJbnRlZ2VyIHJvdyA9IGNvbHVtbkFuZFJvdy5yb3c7CisgICAgaWYgKHJvdyA9
PSAzKSB7CisgICAgICAgIGlmICghY29sdW1uKQorICAgICAgICAgICAgcmV0dXJuIFdLTnVtYmVy
UGFkQnV0dG9uUG9zaXRpb25Cb3R0b21MZWZ0OworICAgICAgICBpZiAoY29sdW1uID09IDEpCisg
ICAgICAgICAgICByZXR1cm4gV0tOdW1iZXJQYWRCdXR0b25Qb3NpdGlvbjA7CisgICAgICAgIHJl
dHVybiBXS051bWJlclBhZEJ1dHRvblBvc2l0aW9uQm90dG9tUmlnaHQ7CisgICAgfQorICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxXS051bWJlclBhZEJ1dHRvblBvc2l0aW9uPigxICsgKDMgKiByb3cg
KyBjb2x1bW4pKTsKK30KKworc3RhdGljIEJPT0wgc2hvdWxkRHJhd0JhY2tncm91bmRGb3JLZXko
V0tOdW1iZXJQYWRLZXkga2V5LCBXS051bWJlclBhZEJ1dHRvbk1vZGUgbW9kZSkKK3sKKyAgICBz
d2l0Y2ggKGtleSkgeworICAgIGNhc2UgV0tOdW1iZXJQYWRLZXlBY2NlcHQ6CisgICAgY2FzZSBX
S051bWJlclBhZEtleVRvZ2dsZU1vZGU6CisgICAgY2FzZSBXS051bWJlclBhZEtleU5vbmU6Cisg
ICAgICAgIHJldHVybiBOTzsKKyAgICBjYXNlIFdLTnVtYmVyUGFkS2V5UGx1czoKKyAgICAgICAg
cmV0dXJuIG1vZGUgPT0gV0tOdW1iZXJQYWRCdXR0b25Nb2RlQWx0ZXJuYXRlOworICAgIGRlZmF1
bHQ6CisgICAgICAgIHJldHVybiBZRVM7CisgICAgfQorfQorCitzdGF0aWMgVUlDb2xvciAqYnV0
dG9uVGl0bGVDb2xvckZvcktleShXS051bWJlclBhZEtleSBrZXkpCit7CisgICAgcmV0dXJuIGtl
eSA9PSBXS051bWJlclBhZEtleUFjY2VwdCA/IFtVSUNvbG9yIHN5c3RlbUJsdWVDb2xvcl0gOiBb
VUlDb2xvciB3aGl0ZUNvbG9yXTsKK30KKworc3RhdGljIE5TU3RyaW5nICpidXR0b25UaXRsZUZv
cktleShXS051bWJlclBhZEtleSBrZXkpCit7CisgICAgc3dpdGNoIChrZXkpIHsKKyAgICBjYXNl
IFdLTnVtYmVyUGFkS2V5RGFzaDoKKyAgICAgICAgcmV0dXJuIEAiLSI7CisgICAgY2FzZSBXS051
bWJlclBhZEtleUFzdGVyaXNrOgorICAgICAgICByZXR1cm4gQCIqIjsKKyAgICBjYXNlIFdLTnVt
YmVyUGFkS2V5T2N0b3Rob3JwZToKKyAgICAgICAgcmV0dXJuIEAiIyI7CisgICAgY2FzZSBXS051
bWJlclBhZEtleUNsb3NpbmdQYXJlbnRoZXNpczoKKyAgICAgICAgcmV0dXJuIEAiKSI7CisgICAg
Y2FzZSBXS051bWJlclBhZEtleU9wZW5pbmdQYXJlbnRoZXNpczoKKyAgICAgICAgcmV0dXJuIEAi
KCI7CisgICAgY2FzZSBXS051bWJlclBhZEtleVBsdXM6CisgICAgICAgIHJldHVybiBAIisiOwor
ICAgIGNhc2UgV0tOdW1iZXJQYWRLZXlUb2dnbGVNb2RlOgorICAgICAgICByZXR1cm4gQCLigKYi
OworICAgIGNhc2UgV0tOdW1iZXJQYWRLZXlBY2NlcHQ6CisgICAgICAgIHJldHVybiBXZWJDb3Jl
OjpudW1iZXJQYWRPS0J1dHRvblRpdGxlKCk7CisgICAgY2FzZSBXS051bWJlclBhZEtleU5vbmU6
CisgICAgICAgIHJldHVybiBuaWw7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIFN0cmlu
Zzo6bnVtYmVyKGtleSk7CisgICAgfQorfQorCitAaW50ZXJmYWNlIFdLTnVtYmVyUGFkQnV0dG9u
IDogVUlCdXR0b24KKworLSAodm9pZClzZXRWaXNpYmxlOihCT09MKXZpc2libGUgZHVyYXRpb246
KE5TVGltZUludGVydmFsKWR1cmF0aW9uIGRlbGF5OihOU1RpbWVJbnRlcnZhbClzdGFydERlbGF5
OworLSAodm9pZClzZXRIaWdobGlnaHRlZDooQk9PTCloaWdobGlnaHRlZCBhbmltYXRlZDooQk9P
TClhbmltYXRlZDsKKworQHByb3BlcnR5IChub25hdG9taWMpIENHRmxvYXQgYmFja2dyb3VuZElu
c2V0QW1vdW50OworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBnZXR0ZXI9aXNWaXNp
YmxlKSBCT09MIHZpc2libGU7CitAcHJvcGVydHkgKG5vbmF0b21pYykgQ0dQb2ludCBzdWJBbmNo
b3I7CisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljKSBXS051bWJlclBhZEJ1dHRvbk1vZGUgYnV0dG9u
TW9kZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljKSBXS051bWJlclBhZEJ1dHRvblBvc2l0aW9uIGJ1
dHRvblBvc2l0aW9uOworCitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIFdLTnVtYmVy
UGFkS2V5IGN1cnJlbnRLZXk7CitAcHJvcGVydHkgKG5vbmF0b21pYykgV0tOdW1iZXJQYWRLZXkg
ZGVmYXVsdEtleTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljKSBXS051bWJlclBhZEtleSBhbHRlcm5h
dGVLZXk7CisKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdLTnVtYmVyUGFkQnV0dG9uIHsKKyAg
ICBCT09MIF92aXNpYmxlOworICAgIFJldGFpblB0cjxVSVZpZXc+IF9iYWNrZ3JvdW5kVmlldzsK
KyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IF9kZWZhdWx0VGl0bGU7CisgICAgUmV0YWluUHRyPE5T
U3RyaW5nPiBfYWx0ZXJuYXRlVGl0bGU7CisgICAgUmV0YWluUHRyPFVJRm9udD4gX3RpdGxlRm9u
dDsKK30KKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KENHUmVjdClmcmFtZQorewor
ICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhGcmFtZTpmcmFtZV0pKQorICAgICAgICBy
ZXR1cm4gbmlsOworCisgICAgX2J1dHRvbk1vZGUgPSBXS051bWJlclBhZEJ1dHRvbk1vZGVEZWZh
dWx0OworICAgIF9iYWNrZ3JvdW5kVmlldyA9IGFkb3B0TlMoW1tVSVZpZXcgYWxsb2NdIGluaXRd
KTsKKyAgICBbX2JhY2tncm91bmRWaWV3IHNldEJhY2tncm91bmRDb2xvcjpbVUlDb2xvciBjb2xv
cldpdGhXaGl0ZTpudW1iZXJQYWRIaWdobGlnaHRlZFdoaXRlQ29sb3JWYWx1ZSBhbHBoYTpudW1i
ZXJQYWROb25IaWdobGlnaHRlZEJ1dHRvbkFscGhhXV07CisgICAgW19iYWNrZ3JvdW5kVmlldyBz
ZXRVc2VySW50ZXJhY3Rpb25FbmFibGVkOk5PXTsKKyAgICBbc2VsZiBpbnNlcnRTdWJ2aWV3Ol9i
YWNrZ3JvdW5kVmlldy5nZXQoKSBhdEluZGV4OjBdOworICAgIF92aXNpYmxlID0gWUVTOworICAg
IF9iYWNrZ3JvdW5kSW5zZXRBbW91bnQgPSBudW1iZXJQYWRCYWNrZ3JvdW5kSW5zZXRBbW91bnQo
KTsKKworICAgIHNlbGYudGl0bGVMYWJlbC5hZGp1c3RzRm9udFNpemVUb0ZpdFdpZHRoID0gWUVT
OworCisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKEJPT0wpaXNWaXNpYmxlCit7CisgICAgcmV0
dXJuIF92aXNpYmxlOworfQorCistICh2b2lkKXNldFZpc2libGU6KEJPT0wpdmlzaWJsZSBkdXJh
dGlvbjooTlNUaW1lSW50ZXJ2YWwpZHVyYXRpb24gZGVsYXk6KE5TVGltZUludGVydmFsKXN0YXJ0
RGVsYXkKK3sKKyAgICBbc2VsZiBzZXRFbmFibGVkOnZpc2libGVdOworICAgIGlmICh2aXNpYmxl
ID09IF92aXNpYmxlKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGFwcGx5QmxvY2sgPSBb
dmlzaWJsZSwgcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKV0geworICAgICAgICBbcHJv
dGVjdGVkU2VsZiBzZXRUcmFuc2Zvcm06dmlzaWJsZSA/IENHQWZmaW5lVHJhbnNmb3JtSWRlbnRp
dHkgOiBDR0FmZmluZVRyYW5zZm9ybU1ha2VTY2FsZShudW1iZXJQYWROb25WaXNpYmxlQnV0dG9u
U2NhbGVGYWN0b3IsIG51bWJlclBhZE5vblZpc2libGVCdXR0b25TY2FsZUZhY3RvcildOworICAg
ICAgICBbcHJvdGVjdGVkU2VsZiB0aXRsZUxhYmVsXS5hbHBoYSA9IHZpc2libGUgPyAxIDogMDsK
KyAgICB9OworCisgICAgaWYgKGR1cmF0aW9uID4gMCkKKyAgICAgICAgW1VJVmlldyBhbmltYXRl
V2l0aER1cmF0aW9uOmR1cmF0aW9uIGRlbGF5OnN0YXJ0RGVsYXkgb3B0aW9uczpVSVZpZXdBbmlt
YXRpb25PcHRpb25BbGxvd1VzZXJJbnRlcmFjdGlvbiBhbmltYXRpb25zOmFwcGx5QmxvY2sgY29t
cGxldGlvbjpuaWxdOworICAgIGVsc2UKKyAgICAgICAgYXBwbHlCbG9jaygpOworCisgICAgX3Zp
c2libGUgPSB2aXNpYmxlOworfQorCistICh2b2lkKXNldERlZmF1bHRLZXk6KFdLTnVtYmVyUGFk
S2V5KWRlZmF1bHRLZXkKK3sKKyAgICBpZiAoX2RlZmF1bHRLZXkgPT0gZGVmYXVsdEtleSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgX2RlZmF1bHRLZXkgPSBkZWZhdWx0S2V5OworCisgICAgaWYg
KHNlbGYuYnV0dG9uTW9kZSA9PSBXS051bWJlclBhZEJ1dHRvbk1vZGVEZWZhdWx0KQorICAgICAg
ICBbc2VsZiBfdXBkYXRlQmFja2dyb3VuZFZpZXddOworCisgICAgW3NlbGYgc2V0TmVlZHNMYXlv
dXRdOworfQorCistICh2b2lkKXNldEFsdGVybmF0ZUtleTooV0tOdW1iZXJQYWRLZXkpYWx0ZXJu
YXRlS2V5Cit7CisgICAgaWYgKF9hbHRlcm5hdGVLZXkgPT0gYWx0ZXJuYXRlS2V5KQorICAgICAg
ICByZXR1cm47CisKKyAgICBfYWx0ZXJuYXRlS2V5ID0gYWx0ZXJuYXRlS2V5OworCisgICAgaWYg
KHNlbGYuYnV0dG9uTW9kZSA9PSBXS051bWJlclBhZEJ1dHRvbk1vZGVBbHRlcm5hdGUpCisgICAg
ICAgIFtzZWxmIF91cGRhdGVCYWNrZ3JvdW5kVmlld107CisKKyAgICBbc2VsZiBzZXROZWVkc0xh
eW91dF07Cit9CisKKy0gKE5TU3RyaW5nICopZGVmYXVsdFRpdGxlCit7CisgICAgcmV0dXJuIGJ1
dHRvblRpdGxlRm9yS2V5KHNlbGYuZGVmYXVsdEtleSk7Cit9CisKKy0gKE5TU3RyaW5nICopYWx0
ZXJuYXRlVGl0bGUKK3sKKyAgICByZXR1cm4gYnV0dG9uVGl0bGVGb3JLZXkoc2VsZi5hbHRlcm5h
dGVLZXkpOworfQorCistIChXS051bWJlclBhZEtleSljdXJyZW50S2V5Cit7CisgICAgcmV0dXJu
IF9idXR0b25Nb2RlID09IFdLTnVtYmVyUGFkQnV0dG9uTW9kZUFsdGVybmF0ZSA/IHNlbGYuYWx0
ZXJuYXRlS2V5IDogc2VsZi5kZWZhdWx0S2V5OworfQorCistICh2b2lkKV91cGRhdGVCYWNrZ3Jv
dW5kVmlldworeworICAgIFtfYmFja2dyb3VuZFZpZXcgc2V0QmFja2dyb3VuZENvbG9yOnNob3Vs
ZERyYXdCYWNrZ3JvdW5kRm9yS2V5KHNlbGYuY3VycmVudEtleSwgc2VsZi5idXR0b25Nb2RlKSA/
IFtVSUNvbG9yIGNvbG9yV2l0aFdoaXRlOm51bWJlclBhZEhpZ2hsaWdodGVkV2hpdGVDb2xvclZh
bHVlIGFscGhhOjFdIDogW1VJQ29sb3IgY2xlYXJDb2xvcl1dOworICAgIFtfYmFja2dyb3VuZFZp
ZXcgc2V0QWxwaGE6c2VsZi5pc0hpZ2hsaWdodGVkID8gMSA6IG51bWJlclBhZE5vbkhpZ2hsaWdo
dGVkQnV0dG9uQWxwaGFdOworfQorCistIChDR1BvaW50KXN1YkFuY2hvcgoreworICAgIHJldHVy
biBbX2JhY2tncm91bmRWaWV3IGxheWVyXS5hbmNob3JQb2ludDsKK30KKworLSAodm9pZClzZXRT
dWJBbmNob3I6KENHUG9pbnQpc3ViQW5jaG9yCit7CisgICAgW19iYWNrZ3JvdW5kVmlldyBsYXll
cl0uYW5jaG9yUG9pbnQgPSBzdWJBbmNob3I7Cit9CisKKy0gKHZvaWQpc2V0SGlnaGxpZ2h0ZWQ6
KEJPT0wpaGlnaGxpZ2h0ZWQKK3sKKyAgICBbc2VsZiBzZXRIaWdobGlnaHRlZDpoaWdobGlnaHRl
ZCBhbmltYXRlZDpOT107Cit9CisKKy0gKHZvaWQpc2V0SGlnaGxpZ2h0ZWQ6KEJPT0wpaGlnaGxp
Z2h0ZWQgYW5pbWF0ZWQ6KEJPT0wpYW5pbWF0ZWQKK3sKKyAgICBzZWxmLmxheWVyLnpQb3NpdGlv
biA9IGhpZ2hsaWdodGVkID8gbnVtYmVyUGFkSGlnaGxpZ2h0ZWRCdXR0b25aUG9zaXRpb24gOiAw
OworICAgIFtzdXBlciBzZXRIaWdobGlnaHRlZDpoaWdobGlnaHRlZF07CisgICAgW3NlbGYgc2V0
TmVlZHNMYXlvdXRdOworICAgIGlmICghYW5pbWF0ZWQpIHsKKyAgICAgICAgW3NlbGYgX3VwZGF0
ZUJhY2tncm91bmRWaWV3XTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFtVSVZpZXcg
YW5pbWF0ZVdpdGhEdXJhdGlvbjpudW1iZXJQYWRIaWdobGlnaHRBbmltYXRpb25EdXJhdGlvbiBk
ZWxheTowIG9wdGlvbnM6VUlWaWV3QW5pbWF0aW9uT3B0aW9uQWxsb3dVc2VySW50ZXJhY3Rpb24g
fCBVSVZpZXdBbmltYXRpb25PcHRpb25CZWdpbkZyb21DdXJyZW50U3RhdGUgYW5pbWF0aW9uczpb
cHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKV0geworICAgICAgICBbcHJvdGVjdGVkU2Vs
ZiBsYXlvdXRJZk5lZWRlZF07CisgICAgICAgIFtwcm90ZWN0ZWRTZWxmIF91cGRhdGVCYWNrZ3Jv
dW5kVmlld107CisgICAgfSBjb21wbGV0aW9uOm5pbF07Cit9CisKKy0gKHZvaWQpc2V0RW5hYmxl
ZDooQk9PTCllbmFibGVkCit7CisgICAgW3N1cGVyIHNldEVuYWJsZWQ6ZW5hYmxlZF07CisgICAg
c2VsZi5hbHBoYSA9IGVuYWJsZWQgPyAxIDogbnVtYmVyUGFkTm9uSGlnaGxpZ2h0ZWRCdXR0b25B
bHBoYTsKK30KKworLSAodm9pZClzZXRCdXR0b25Nb2RlOihXS051bWJlclBhZEJ1dHRvbk1vZGUp
YnV0dG9uTW9kZQoreworICAgIGlmIChfYnV0dG9uTW9kZSA9PSBidXR0b25Nb2RlKQorICAgICAg
ICByZXR1cm47CisKKyAgICBfYnV0dG9uTW9kZSA9IGJ1dHRvbk1vZGU7CisKKyAgICBbc2VsZiBf
dXBkYXRlQmFja2dyb3VuZFZpZXddOworICAgIFtzZWxmIHNldE5lZWRzTGF5b3V0XTsKK30KKwor
LSAodm9pZClsYXlvdXRTdWJ2aWV3cworeworICAgIENHUmVjdCBib3VuZHMgPSBzZWxmLmJvdW5k
czsKKworICAgIFVJVmlldyAqdGl0bGVWaWV3ID0gc2VsZi50aXRsZUxhYmVsOworICAgIHRpdGxl
Vmlldy50cmFuc2Zvcm0gPSBDR0FmZmluZVRyYW5zZm9ybUlkZW50aXR5OworCisgICAgVUlWaWV3
ICppbWFnZVZpZXcgPSBzZWxmLmltYWdlVmlldzsKKyAgICBpbWFnZVZpZXcudHJhbnNmb3JtID0g
Q0dBZmZpbmVUcmFuc2Zvcm1JZGVudGl0eTsKKworICAgIGlmIChfYnV0dG9uTW9kZSA9PSBXS051
bWJlclBhZEJ1dHRvbk1vZGVBbHRlcm5hdGUpIHsKKyAgICAgICAgQk9PTCBlbmFibGVkID0gc2Vs
Zi5hbHRlcm5hdGVLZXkgIT0gV0tOdW1iZXJQYWRLZXlOb25lOworICAgICAgICBbc2VsZiBzZXRF
bmFibGVkOmVuYWJsZWRdOworICAgICAgICAvLyBUaGlzIG1hdGNoZXMgYmVoYXZpb3Igb24gaU9T
LCB3aGVyZWluIHN3aXRjaGluZyB0byBzeW1ib2wga2V5cyBkaXNhYmxlcyBhbnkga2V5cyB0aGF0
IGRvbid0IHN1cHBvcnQgYWx0ZXJuYXRpdmVzLCBidXQgbGVhdmVzIHRoZWlyIHRpdGxlcyB1bmNo
YW5nZWQuCisgICAgICAgIFtzZWxmIHNldFRpdGxlOmJ1dHRvblRpdGxlRm9yS2V5KGVuYWJsZWQg
PyBzZWxmLmFsdGVybmF0ZUtleSA6IHNlbGYuZGVmYXVsdEtleSkgZm9yU3RhdGU6VUlDb250cm9s
U3RhdGVOb3JtYWxdOworICAgICAgICBbc2VsZiBzZXRUaXRsZUNvbG9yOmJ1dHRvblRpdGxlQ29s
b3JGb3JLZXkoZW5hYmxlZCA/IHNlbGYuYWx0ZXJuYXRlS2V5IDogc2VsZi5kZWZhdWx0S2V5KSBm
b3JTdGF0ZTpVSUNvbnRyb2xTdGF0ZU5vcm1hbF07CisgICAgfSBlbHNlIHsKKyAgICAgICAgW3Nl
bGYgc2V0RW5hYmxlZDpzZWxmLmRlZmF1bHRLZXkgIT0gV0tOdW1iZXJQYWRLZXlOb25lXTsKKyAg
ICAgICAgW3NlbGYgc2V0VGl0bGU6c2VsZi5kZWZhdWx0VGl0bGUgZm9yU3RhdGU6VUlDb250cm9s
U3RhdGVOb3JtYWxdOworICAgICAgICBbc2VsZiBzZXRUaXRsZUNvbG9yOmJ1dHRvblRpdGxlQ29s
b3JGb3JLZXkoc2VsZi5kZWZhdWx0S2V5KSBmb3JTdGF0ZTpVSUNvbnRyb2xTdGF0ZU5vcm1hbF07
CisgICAgfQorCisgICAgW3N1cGVyIGxheW91dFN1YnZpZXdzXTsKKworICAgIFtfYmFja2dyb3Vu
ZFZpZXcgc2V0VHJhbnNmb3JtOkNHQWZmaW5lVHJhbnNmb3JtSWRlbnRpdHldOworICAgIFtfYmFj
a2dyb3VuZFZpZXcgc2V0RnJhbWU6Q0dSZWN0SW5zZXQoYm91bmRzLCBfYmFja2dyb3VuZEluc2V0
QW1vdW50LCBfYmFja2dyb3VuZEluc2V0QW1vdW50KV07CisgICAgW19iYWNrZ3JvdW5kVmlldyBs
YXllcl0uY29ybmVyUmFkaXVzID0gbnVtYmVyUGFkQnV0dG9uQmFja2dyb3VuZFZpZXdDb3JuZXJS
YWRpdXM7CisKKyAgICBDR0FmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm0gPSBzZWxmLmlzSGlnaGxp
Z2h0ZWQgJiYgc2hvdWxkRHJhd0JhY2tncm91bmRGb3JLZXkoc2VsZi5jdXJyZW50S2V5LCBzZWxm
LmJ1dHRvbk1vZGUpID8gQ0dBZmZpbmVUcmFuc2Zvcm1NYWtlU2NhbGUobnVtYmVyUGFkQnV0dG9u
SGlnaGxpZ2h0U2NhbGVGYWN0b3IsIG51bWJlclBhZEJ1dHRvbkhpZ2hsaWdodFNjYWxlRmFjdG9y
KSA6IENHQWZmaW5lVHJhbnNmb3JtSWRlbnRpdHk7CisgICAgW19iYWNrZ3JvdW5kVmlldyBzZXRU
cmFuc2Zvcm06dHJhbnNmb3JtXTsKKyAgICB0aXRsZVZpZXcudHJhbnNmb3JtID0gdHJhbnNmb3Jt
OworICAgIGltYWdlVmlldy50cmFuc2Zvcm0gPSB0cmFuc2Zvcm07CisKKyAgICBDR1JlY3QgYmFj
a2dyb3VuZEJvdW5kcyA9IFtfYmFja2dyb3VuZFZpZXcgYm91bmRzXTsKKyAgICBDR1BvaW50IGNv
bnRlbnRDZW50ZXIgPSBbc2VsZiBjb252ZXJ0UG9pbnQ6Q0dQb2ludE1ha2UoYmFja2dyb3VuZEJv
dW5kcy5zaXplLndpZHRoIC8gMiwgYmFja2dyb3VuZEJvdW5kcy5zaXplLmhlaWdodCAvIDIpIGZy
b21WaWV3Ol9iYWNrZ3JvdW5kVmlldy5nZXQoKV07CisgICAgdGl0bGVWaWV3LmNlbnRlciA9IGNv
bnRlbnRDZW50ZXI7CisgICAgaW1hZ2VWaWV3LmNlbnRlciA9IGNvbnRlbnRDZW50ZXI7Cit9CisK
K0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdLTnVtYmVyUGFkVmlldyB7CisgICAgUmV0YWluUHRy
PFVJVG91Y2g+IF90cmFja2VkVG91Y2g7CisgICAgUmV0YWluUHRyPFdLTnVtYmVyUGFkQnV0dG9u
PiBfaGlnaGxpZ2h0ZWRCdXR0b247CisgICAgUmV0YWluUHRyPFVJVmlldz4gX2tleXBhZDsKKyAg
ICBSZXRhaW5QdHI8VUlWaWV3PiBfY29udGVudFZpZXc7CisgICAgV2Vha09iakNQdHI8V0tOdW1i
ZXJQYWRWaWV3Q29udHJvbGxlcj4gX2NvbnRyb2xsZXI7Cit9CisKKy0gKGluc3RhbmNldHlwZSlp
bml0V2l0aEZyYW1lOihDR1JlY3QpZnJhbWUgY29udHJvbGxlcjooV0tOdW1iZXJQYWRWaWV3Q29u
dHJvbGxlciAqKWNvbnRyb2xsZXIKK3sKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRXaXRo
RnJhbWU6ZnJhbWVdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIF9jb250cm9sbGVyID0g
Y29udHJvbGxlcjsKKyAgICBfY29udGVudFZpZXcgPSBhZG9wdE5TKFtbVUlWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOnNlbGYuYm91bmRzXSk7CisgICAgW19jb250ZW50VmlldyBzZXRDbGlwc1Rv
Qm91bmRzOllFU107CisgICAgW19jb250ZW50VmlldyBzZXRCYWNrZ3JvdW5kQ29sb3I6W1VJQ29s
b3IgYmxhY2tDb2xvcl1dOworICAgIFtzZWxmIGFkZFN1YnZpZXc6X2NvbnRlbnRWaWV3LmdldCgp
XTsKKyAgICBbc2VsZiBfaW5pdEtleXBhZF07CisgICAgcmV0dXJuIHNlbGY7Cit9CisKK3N0YXRp
YyBXS051bWJlclBhZEtleSBkZWZhdWx0S2V5QXRQb3NpdGlvbihXS051bWJlclBhZEJ1dHRvblBv
c2l0aW9uIHBvc2l0aW9uLCBXS051bWJlclBhZElucHV0TW9kZSBpbnB1dE1vZGUpCit7CisgICAg
c3dpdGNoIChwb3NpdGlvbikgeworICAgIGNhc2UgV0tOdW1iZXJQYWRCdXR0b25Qb3NpdGlvbkJv
dHRvbUxlZnQ6CisgICAgICAgIGlmIChpbnB1dE1vZGUgPT0gV0tOdW1iZXJQYWRJbnB1dE1vZGVU
ZWxlcGhvbmUpCisgICAgICAgICAgICByZXR1cm4gV0tOdW1iZXJQYWRLZXlQbHVzOworICAgICAg
ICBpZiAoaW5wdXRNb2RlID09IFdLTnVtYmVyUGFkSW5wdXRNb2RlTnVtYmVyc09ubHkpCisgICAg
ICAgICAgICByZXR1cm4gV0tOdW1iZXJQYWRLZXlOb25lOworICAgICAgICByZXR1cm4gV0tOdW1i
ZXJQYWRLZXlUb2dnbGVNb2RlOworICAgIGNhc2UgV0tOdW1iZXJQYWRCdXR0b25Qb3NpdGlvbkJv
dHRvbVJpZ2h0OgorICAgICAgICByZXR1cm4gV0tOdW1iZXJQYWRLZXlBY2NlcHQ7CisgICAgY2Fz
ZSBXS051bWJlclBhZEJ1dHRvblBvc2l0aW9uMDoKKyAgICAgICAgcmV0dXJuIFdLTnVtYmVyUGFk
S2V5MDsKKyAgICBjYXNlIFdLTnVtYmVyUGFkQnV0dG9uUG9zaXRpb24xOgorICAgICAgICByZXR1
cm4gV0tOdW1iZXJQYWRLZXkxOworICAgIGNhc2UgV0tOdW1iZXJQYWRCdXR0b25Qb3NpdGlvbjI6
CisgICAgICAgIHJldHVybiBXS051bWJlclBhZEtleTI7CisgICAgY2FzZSBXS051bWJlclBhZEJ1
dHRvblBvc2l0aW9uMzoKKyAgICAgICAgcmV0dXJuIFdLTnVtYmVyUGFkS2V5MzsKKyAgICBjYXNl
IFdLTnVtYmVyUGFkQnV0dG9uUG9zaXRpb240OgorICAgICAgICByZXR1cm4gV0tOdW1iZXJQYWRL
ZXk0OworICAgIGNhc2UgV0tOdW1iZXJQYWRCdXR0b25Qb3NpdGlvbjU6CisgICAgICAgIHJldHVy
biBXS051bWJlclBhZEtleTU7CisgICAgY2FzZSBXS051bWJlclBhZEJ1dHRvblBvc2l0aW9uNjoK
KyAgICAgICAgcmV0dXJuIFdLTnVtYmVyUGFkS2V5NjsKKyAgICBjYXNlIFdLTnVtYmVyUGFkQnV0
dG9uUG9zaXRpb243OgorICAgICAgICByZXR1cm4gV0tOdW1iZXJQYWRLZXk3OworICAgIGNhc2Ug
V0tOdW1iZXJQYWRCdXR0b25Qb3NpdGlvbjg6CisgICAgICAgIHJldHVybiBXS051bWJlclBhZEtl
eTg7CisgICAgY2FzZSBXS051bWJlclBhZEJ1dHRvblBvc2l0aW9uOToKKyAgICAgICAgcmV0dXJu
IFdLTnVtYmVyUGFkS2V5OTsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgcmV0dXJuIFdLTnVtYmVyUGFkS2V5Tm9uZTsKKyAgICB9Cit9CisKK3N0
YXRpYyBXS051bWJlclBhZEtleSBhbHRlcm5hdGVLZXlBdFBvc2l0aW9uKFdLTnVtYmVyUGFkQnV0
dG9uUG9zaXRpb24gcG9zaXRpb24pCit7CisgICAgc3dpdGNoIChwb3NpdGlvbikgeworICAgIGNh
c2UgV0tOdW1iZXJQYWRCdXR0b25Qb3NpdGlvbkJvdHRvbUxlZnQ6CisgICAgICAgIHJldHVybiBX
S051bWJlclBhZEtleVRvZ2dsZU1vZGU7CisgICAgY2FzZSBXS051bWJlclBhZEJ1dHRvblBvc2l0
aW9uQm90dG9tUmlnaHQ6CisgICAgICAgIHJldHVybiBXS051bWJlclBhZEtleUFjY2VwdDsKKyAg
ICBjYXNlIFdLTnVtYmVyUGFkQnV0dG9uUG9zaXRpb24wOgorICAgICAgICByZXR1cm4gV0tOdW1i
ZXJQYWRLZXlEYXNoOworICAgIGNhc2UgV0tOdW1iZXJQYWRCdXR0b25Qb3NpdGlvbjQ6CisgICAg
ICAgIHJldHVybiBXS051bWJlclBhZEtleUFzdGVyaXNrOworICAgIGNhc2UgV0tOdW1iZXJQYWRC
dXR0b25Qb3NpdGlvbjY6CisgICAgICAgIHJldHVybiBXS051bWJlclBhZEtleVBsdXM7CisgICAg
Y2FzZSBXS051bWJlclBhZEJ1dHRvblBvc2l0aW9uNzoKKyAgICAgICAgcmV0dXJuIFdLTnVtYmVy
UGFkS2V5T3BlbmluZ1BhcmVudGhlc2lzOworICAgIGNhc2UgV0tOdW1iZXJQYWRCdXR0b25Qb3Np
dGlvbjg6CisgICAgICAgIHJldHVybiBXS051bWJlclBhZEtleU9jdG90aG9ycGU7CisgICAgY2Fz
ZSBXS051bWJlclBhZEJ1dHRvblBvc2l0aW9uOToKKyAgICAgICAgcmV0dXJuIFdLTnVtYmVyUGFk
S2V5Q2xvc2luZ1BhcmVudGhlc2lzOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBXS051
bWJlclBhZEtleU5vbmU7CisgICAgfQorfQorCistIChXS051bWJlclBhZEJ1dHRvbiAqKV9idXR0
b25Gb3JQb3NpdGlvbjooV0tOdW1iZXJQYWRCdXR0b25Qb3NpdGlvbilwb3NpdGlvbgoreworICAg
IFdLTnVtYmVyUGFkQnV0dG9uICpidXR0b24gPSBbW1tXS051bWJlclBhZEJ1dHRvbiBhbGxvY10g
aW5pdF0gYXV0b3JlbGVhc2VdOworICAgIGJ1dHRvbi5kZWZhdWx0S2V5ID0gZGVmYXVsdEtleUF0
UG9zaXRpb24ocG9zaXRpb24sIFtfY29udHJvbGxlciBpbnB1dE1vZGVdKTsKKyAgICBidXR0b24u
YWx0ZXJuYXRlS2V5ID0gYWx0ZXJuYXRlS2V5QXRQb3NpdGlvbihwb3NpdGlvbik7CisgICAgYnV0
dG9uLmJ1dHRvblBvc2l0aW9uID0gcG9zaXRpb247CisgICAgYnV0dG9uLnRpdGxlTGFiZWwuZm9u
dCA9IFtVSUZvbnQgc3lzdGVtRm9udE9mU2l6ZTpudW1iZXJQYWRMYWJlbEZvbnRTaXplKCkgd2Vp
Z2h0OlVJRm9udFdlaWdodFNlbWlib2xkIGRlc2lnbjooTlNTdHJpbmcgKilrQ1RGb250VUlGb250
RGVzaWduUm91bmRlZF07CisgICAgYnV0dG9uLnVzZXJJbnRlcmFjdGlvbkVuYWJsZWQgPSBOTzsK
KyAgICByZXR1cm4gYnV0dG9uOworfQorCistICh2b2lkKV9pbml0S2V5cGFkCit7CisgICAgVUlW
aWV3ICp2aWV3ID0gX2NvbnRlbnRWaWV3LmdldCgpOworICAgIF9rZXlwYWQgPSBhZG9wdE5TKFtb
VUlWaWV3IGFsbG9jXSBpbml0XSk7CisgICAgW19rZXlwYWQgc2V0VXNlckludGVyYWN0aW9uRW5h
YmxlZDpZRVNdOworCisgICAgQ0dGbG9hdCB4QW5jaG9yc1tdID0geyAwLjAsIDAuNSwgMS4wIH07
CisgICAgQ0dGbG9hdCB5QW5jaG9yc1tdID0geyAwLjAsIDAuNSwgMC41LCAxLjAgfTsKKworICAg
IGZvciAodW5zaWduZWQgeCA9IDA7IHggPCAzOyArK3gpIHsKKyAgICAgICAgZm9yICh1bnNpZ25l
ZCB5ID0gMDsgeSA8IDQ7ICsreSkgeworICAgICAgICAgICAgV0tOdW1iZXJQYWRCdXR0b24gKmJ1
dHRvbiA9IFtzZWxmIF9idXR0b25Gb3JQb3NpdGlvbjpwb3NpdGlvbkZvckNvbHVtbkFuZFJvdyh7
IHgsIHkgfSldOworICAgICAgICAgICAgYnV0dG9uLnN1YkFuY2hvciA9IENHUG9pbnRNYWtlKHhB
bmNob3JzW3hdLCB5QW5jaG9yc1t5XSk7CisgICAgICAgICAgICBbX2tleXBhZCBhZGRTdWJ2aWV3
OmJ1dHRvbl07CisgICAgICAgIH0KKyAgICB9CisgICAgW3ZpZXcgYWRkU3Vidmlldzpfa2V5cGFk
LmdldCgpXTsKK30KKworLSAodm9pZClsYXlvdXRTdWJ2aWV3cworeworICAgIFtzdXBlciBsYXlv
dXRTdWJ2aWV3c107CisKKyAgICBbX2NvbnRlbnRWaWV3IHNldEZyYW1lOnNlbGYuYm91bmRzXTsK
KworICAgIENHRmxvYXQgYnV0dG9uU3BhY2luZyA9IG51bWJlclBhZEJ1dHRvblNwYWNpbmcoKTsK
KyAgICBDR1NpemUgYnV0dG9uU2l6ZSA9IENHU2l6ZU1ha2UoKENHUmVjdEdldFdpZHRoKHNlbGYu
Ym91bmRzKSAtIDIgKiBidXR0b25TcGFjaW5nKSAvIDMsIChDR1JlY3RHZXRIZWlnaHQoc2VsZi5i
b3VuZHMpIC0gMyAqIGJ1dHRvblNwYWNpbmcpIC8gNCk7CisKKyAgICBbX2tleXBhZCBzZXRGcmFt
ZTpzZWxmLmJvdW5kc107CisgICAgW1tfa2V5cGFkIHN1YnZpZXdzXSBlbnVtZXJhdGVPYmplY3Rz
VXNpbmdCbG9jazpeKFdLTnVtYmVyUGFkQnV0dG9uICpidXR0b24sIE5TVUludGVnZXIsIEJPT0wg
KikgeworICAgICAgICBpZiAoIWJ1dHRvbi52aXNpYmxlKQorICAgICAgICAgICAgW2J1dHRvbiBz
ZXRWaXNpYmxlOllFUyBkdXJhdGlvbjowIGRlbGF5OjBdOworCisgICAgICAgIGF1dG8gY29sdW1u
QW5kUm93ID0gY29sdW1uQW5kUm93Rm9yUG9zaXRpb24oYnV0dG9uLmJ1dHRvblBvc2l0aW9uKTsK
KyAgICAgICAgQ0dGbG9hdCBpbnNldEFtb3VudCA9IGJ1dHRvblNwYWNpbmcgLyAyOworICAgICAg
ICBDR1JlY3QgYmFzZUZyYW1lID0gQ0dSZWN0TWFrZShjb2x1bW5BbmRSb3cuY29sdW1uICogKGJ1
dHRvblNpemUud2lkdGggKyBidXR0b25TcGFjaW5nKSwgY29sdW1uQW5kUm93LnJvdyAqIChidXR0
b25TaXplLmhlaWdodCArIGJ1dHRvblNwYWNpbmcpLCBidXR0b25TaXplLndpZHRoLCBidXR0b25T
aXplLmhlaWdodCk7CisgICAgICAgIFtidXR0b24gc2V0RnJhbWU6Q0dSZWN0SW5zZXQoYmFzZUZy
YW1lLCAtaW5zZXRBbW91bnQsIC1pbnNldEFtb3VudCldOworICAgICAgICBbYnV0dG9uIHNldEJh
Y2tncm91bmRJbnNldEFtb3VudDppbnNldEFtb3VudF07CisgICAgfV07Cit9CisKKy0gKFdLTnVt
YmVyUGFkQnV0dG9uICopX251bWJlclBhZEJ1dHRvbkZvclRvdWNoOihVSVRvdWNoICopdG91Y2gK
K3sKKyAgICBDR1BvaW50IHBvaW50SW5WaWV3Q29vcmRpbmF0ZXMgPSBbdG91Y2ggbG9jYXRpb25J
blZpZXc6c2VsZl07CisgICAgZm9yIChXS051bWJlclBhZEJ1dHRvbiAqYnV0dG9uIGluIFtfa2V5
cGFkIHN1YnZpZXdzXSkgeworICAgICAgICBDR1BvaW50IHBvaW50SW5CdXR0b25Db29yZGluYXRl
cyA9IFtidXR0b24gY29udmVydFBvaW50OnBvaW50SW5WaWV3Q29vcmRpbmF0ZXMgZnJvbVZpZXc6
c2VsZl07CisgICAgICAgIGlmIChbYnV0dG9uIHBvaW50SW5zaWRlOnBvaW50SW5CdXR0b25Db29y
ZGluYXRlcyB3aXRoRXZlbnQ6bmlsXSkKKyAgICAgICAgICAgIHJldHVybiBidXR0b24uZW5hYmxl
ZCA/IGJ1dHRvbiA6IG5pbDsKKyAgICB9CisKKyAgICByZXR1cm4gbmlsOworfQorCistICh2b2lk
KXRvdWNoZXNCZWdhbjooTlNTZXQ8VUlUb3VjaCAqPiAqKXRvdWNoZXMgd2l0aEV2ZW50OihVSUV2
ZW50ICopZXZlbnQKK3sKKyAgICBpZiAoX3RyYWNrZWRUb3VjaCkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgX3RyYWNrZWRUb3VjaCA9IHRvdWNoZXMuYW55T2JqZWN0OworICAgIF9oaWdobGlnaHRl
ZEJ1dHRvbiA9IFtzZWxmIF9udW1iZXJQYWRCdXR0b25Gb3JUb3VjaDpfdHJhY2tlZFRvdWNoLmdl
dCgpXTsKKyAgICBbX2hpZ2hsaWdodGVkQnV0dG9uIHNldEhpZ2hsaWdodGVkOllFU107Cit9CisK
Ky0gKHZvaWQpdG91Y2hlc01vdmVkOihOU1NldDxVSVRvdWNoICo+ICopdG91Y2hlcyB3aXRoRXZl
bnQ6KFVJRXZlbnQgKilldmVudAoreworICAgIGZvciAoVUlUb3VjaCAqdG91Y2ggaW4gdG91Y2hl
cykgeworICAgICAgICBpZiAodG91Y2ggIT0gX3RyYWNrZWRUb3VjaCkKKyAgICAgICAgICAgIGNv
bnRpbnVlOworCisgICAgICAgIFdLTnVtYmVyUGFkQnV0dG9uICpuZXdIaWdobGlnaHRlZEJ1dHRv
biA9IFtzZWxmIF9udW1iZXJQYWRCdXR0b25Gb3JUb3VjaDpfdHJhY2tlZFRvdWNoLmdldCgpXTsK
KyAgICAgICAgaWYgKG5ld0hpZ2hsaWdodGVkQnV0dG9uID09IF9oaWdobGlnaHRlZEJ1dHRvbikK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBbX2hpZ2hsaWdodGVkQnV0dG9uIHNldEhp
Z2hsaWdodGVkOk5PXTsKKyAgICAgICAgX2hpZ2hsaWdodGVkQnV0dG9uID0gbmV3SGlnaGxpZ2h0
ZWRCdXR0b247CisgICAgICAgIFtfaGlnaGxpZ2h0ZWRCdXR0b24gc2V0SGlnaGxpZ2h0ZWQ6WUVT
XTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KK30KKworLSAodm9pZCl0b3VjaGVzRW5kZWQ6KE5T
U2V0PFVJVG91Y2ggKj4gKil0b3VjaGVzIHdpdGhFdmVudDooVUlFdmVudCAqKWV2ZW50Cit7Cisg
ICAgZm9yIChVSVRvdWNoICp0b3VjaCBpbiB0b3VjaGVzKSB7CisgICAgICAgIGlmICh0b3VjaCAh
PSBfdHJhY2tlZFRvdWNoKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgX3RyYWNr
ZWRUb3VjaCA9IG5pbDsKKworICAgICAgICBpZiAoIV9oaWdobGlnaHRlZEJ1dHRvbikKKyAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICBhdXRvIHNlbGVjdGVkS2V5ID0gW19oaWdobGlnaHRl
ZEJ1dHRvbiBjdXJyZW50S2V5XTsKKyAgICAgICAgW19jb250cm9sbGVyIGRpZFNlbGVjdEtleTpz
ZWxlY3RlZEtleV07CisgICAgICAgIFtfaGlnaGxpZ2h0ZWRCdXR0b24gc2V0SGlnaGxpZ2h0ZWQ6
Tk8gYW5pbWF0ZWQ6WUVTXTsKKworICAgICAgICBpZiAoc2VsZWN0ZWRLZXkgPT0gV0tOdW1iZXJQ
YWRLZXlUb2dnbGVNb2RlIHx8IFtfaGlnaGxpZ2h0ZWRCdXR0b24gYnV0dG9uTW9kZV0gPT0gV0tO
dW1iZXJQYWRCdXR0b25Nb2RlQWx0ZXJuYXRlKQorICAgICAgICAgICAgW3NlbGYgdG9nZ2xlQWx0
ZXJuYXRlS2V5c107CisKKyAgICAgICAgX2hpZ2hsaWdodGVkQnV0dG9uID0gbmlsOworICAgICAg
ICByZXR1cm47CisgICAgfQorfQorCistICh2b2lkKXRvdWNoZXNDYW5jZWxsZWQ6KE5TU2V0PFVJ
VG91Y2ggKj4gKil0b3VjaGVzIHdpdGhFdmVudDooVUlFdmVudCAqKWV2ZW50Cit7CisgICAgZm9y
IChVSVRvdWNoICp0b3VjaCBpbiB0b3VjaGVzKSB7CisgICAgICAgIGlmICh0b3VjaCAhPSBfdHJh
Y2tlZFRvdWNoKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgX3RyYWNrZWRUb3Vj
aCA9IG5pbDsKKyAgICAgICAgW19oaWdobGlnaHRlZEJ1dHRvbiBzZXRIaWdobGlnaHRlZDpOTyBh
bmltYXRlZDpZRVNdOworICAgICAgICBfaGlnaGxpZ2h0ZWRCdXR0b24gPSBuaWw7CisgICAgICAg
IHJldHVybjsKKyAgICB9Cit9CisKKy0gKHZvaWQpdG9nZ2xlQWx0ZXJuYXRlS2V5cworeworICAg
IGZvciAoV0tOdW1iZXJQYWRCdXR0b24gKmJ1dHRvbiBpbiBbX2tleXBhZCBzdWJ2aWV3c10pIHsK
KyAgICAgICAgaWYgKGJ1dHRvbi5idXR0b25Nb2RlID09IFdLTnVtYmVyUGFkQnV0dG9uTW9kZUFs
dGVybmF0ZSkKKyAgICAgICAgICAgIGJ1dHRvbi5idXR0b25Nb2RlID0gV0tOdW1iZXJQYWRCdXR0
b25Nb2RlRGVmYXVsdDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYnV0dG9uLmJ1dHRvbk1v
ZGUgPSBXS051bWJlclBhZEJ1dHRvbk1vZGVBbHRlcm5hdGU7CisgICAgfQorfQorCitAZW5kCisK
KyNlbmRpZiAvLyBQTEFURk9STShXQVRDSE9TKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>