<?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>212950</bug_id>
          
          <creation_ts>2020-06-08 20:21:03 -0700</creation_ts>
          <short_desc>[WebDriver][WPE] Support creating new webviews from create-web-view signal</short_desc>
          <delta_ts>2024-07-01 07:12:51 -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>WPE WebKit</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>BrowserCompat</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>216899</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Lauro Moura">lmoura</reporter>
          <assigned_to name="Lauro Moura">lmoura</assigned_to>
          <cc>annulen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>karlcow</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1660555</commentid>
    <comment_count>0</comment_count>
    <who name="Lauro Moura">lmoura</who>
    <bug_when>2020-06-08 20:21:03 -0700</bug_when>
    <thetext>Originally, bug 212118 was created to allow MB to create new views for some WebDriver tests from the &quot;create&quot; signal in child views, and fixed a number of failures.

But &quot;POST /session/{session_id}/window/new&quot; implementation emits &quot;create-web-view&quot;. WPE&apos;s MiniBrowser handler for it only returns the original automated webview instead of creating a new one.

This is is causing a number of w3c/tests/new_window/user_prompts.py to fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702633</commentid>
    <comment_count>1</comment_count>
      <attachid>412615</attachid>
    <who name="Lauro Moura">lmoura</who>
    <bug_when>2020-10-28 23:15:08 -0700</bug_when>
    <thetext>Created attachment 412615
WIP without touch and cleanup support

With this patch, a lot of new WebDriver failures related to the session fixure from W3C tests are working now. Still missing touch support, styling changes and sorting out the cleanup, but uploading for initial feedback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2042704</commentid>
    <comment_count>2</comment_count>
    <who name="Lauro Moura">lmoura</who>
    <bug_when>2024-06-23 21:34:57 -0700</bug_when>
    <thetext>Pull request: https://github.com/WebKit/WebKit/pull/30103</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2043966</commentid>
    <comment_count>3</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2024-07-01 07:12:47 -0700</bug_when>
    <thetext>Committed 280534@main (474a4428f7ed): &lt;https://commits.webkit.org/280534@main&gt;

Reviewed commits have been landed. Closing PR #30103 and removing active labels.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412615</attachid>
            <date>2020-10-28 23:15:08 -0700</date>
            <delta_ts>2020-10-28 23:15:08 -0700</delta_ts>
            <desc>WIP without touch and cleanup support</desc>
            <filename>bug-212950-20201029031506.patch</filename>
            <type>text/plain</type>
            <size>41931</size>
            <attacher name="Lauro Moura">lmoura</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5MDY5CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZWQ1ZDQxYjdkM2Y2Yjk0Nzk1MmVkNTgxYzU4YjcyZGY2
ZTMxZGU1My4uNDZmMmNkZGViZDFjZDc4MTgzZWU3MGRkNWYwYjRhN2EzOGZiMzE0ZSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQy
IEBACisyMDIwLTEwLTI4ICBMYXVybyBNb3VyYSAgPGxtb3VyYUBpZ2FsaWEuY29tPgorCisgICAg
ICAgIFtXZWJEcml2ZXJdW1dQRV0gU3VwcG9ydCBjcmVhdGluZyBuZXcgd2Vidmlld3MgZnJvbSBj
cmVhdGUtd2ViLXZpZXcgc2lnbmFsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTI5NTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGRzIGJhc2ljIG11bHRpLXZpZXcgc3VwcG9ydCBmb3IgV1BFIE1pbmlC
cm93c2VyLCBhbGxvd2luZyB0byBjcmVhdGUKKyAgICAgICAgbmV3IHZpZXdzIGZvciB0ZXN0aW5n
LgorCisgICAgICAgIFByZXZpb3VzbHksIGVhY2ggbmV3IHZpZXcgd291bGQgcmVnaXN0ZXIgd2F5
bGFuZCBsaXN0ZW5lciBmb3IgZ2xvYmFscworICAgICAgICBsaWtlIHdsX3NlYXQgYW5kIHdvdWxk
IHRyeSB0byBkZWxldGUgdGhlbSB3aGVuIHRoZSB2aWV3IGlzIGRlc3Ryb3llZC4KKworICAgICAg
ICBUbyBtYW5hZ2UgdGhlIHNlYXQgY2FsbGJhY2tzLCBhIGNsYXNzIGNhbGxlZCBJbnB1dFJlZ2lz
dHJ5IGlzIGFkZGVkLgorICAgICAgICBJdCBrZWVwIHRyYWNrcyBvZiB0aGUgd2xfc3VyZmFjZSBh
bmQgV2luZG93Vmlld0JhY2tlbmQgYXNzb2NpYXRpb24gYW5kCisgICAgICAgIGZvcndhcmQgdGhl
IGV2ZW50IGZvciB0aGUgdmlld3MuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci93cGUvbWFpbi5j
cHA6IEFjdHVhbGx5IGNyZWF0ZSBuZXcgd2ViIHZpZXdzIGluIHRoZQorICAgICAgICBhdXRvbWF0
aW9uIGNhbGxiYWNrLiBJbnN0ZWFkIG9mIHVzaW5nIHRoZSByb290IHZpZXcgdG8gY3JlYXRlIHRo
ZW0sCisgICAgICAgIGdldCB0aGUgZmlyc3QgdmlldyBmcm9tIHRoZSBsaXN0IG9mIG9wZW4gdmll
d3MuIFdlYkRyaXZlciB0ZXN0cyB3ZXJlCisgICAgICAgIGNsb3NpbmcgdGhlIGZpcnN0IHZpZXcu
CisgICAgICAgIChhdXRvbWF0aW9uU3RhcnRlZENhbGxiYWNrKToKKyAgICAgICAgKHdlYlZpZXdD
bG9zZSk6CisgICAgICAgIChjcmVhdGVXZWJWaWV3KToKKyAgICAgICAgKG1haW4pOgorICAgICAg
ICAqIHdwZS9iYWNrZW5kcy9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiB3cGUvYmFja2VuZHMv
SW5wdXRSZWdpc3RyeS5jcHA6IEFkZGVkLgorICAgICAgICAoV1BFVG9vbGluZ0JhY2tlbmRzOjpJ
bnB1dFJlZ2lzdHJ5Ojptb2RpZmllcnMpOgorICAgICAgICAoV1BFVG9vbGluZ0JhY2tlbmRzOjpJ
bnB1dFJlZ2lzdHJ5OjpoYW5kbGVLZXlFdmVudCk6CisgICAgICAgIChXUEVUb29saW5nQmFja2Vu
ZHM6OklucHV0UmVnaXN0cnk6OnNldERpc3BsYXkpOgorICAgICAgICAoV1BFVG9vbGluZ0JhY2tl
bmRzOjpJbnB1dFJlZ2lzdHJ5OjphZGRJbnB1dFRhcmdldCk6CisgICAgICAgIChXUEVUb29saW5n
QmFja2VuZHM6OklucHV0UmVnaXN0cnk6OnJlbW92ZUlucHV0VGFyZ2V0KToKKyAgICAgICAgKiB3
cGUvYmFja2VuZHMvSW5wdXRSZWdpc3RyeS5oOiBDb3BpZWQgZnJvbSBUb29scy93cGUvYmFja2Vu
ZHMvV2luZG93Vmlld0JhY2tlbmQuaC4KKyAgICAgICAgKiB3cGUvYmFja2VuZHMvVmlld0JhY2tl
bmQuaDoKKyAgICAgICAgKiB3cGUvYmFja2VuZHMvV2luZG93Vmlld0JhY2tlbmQuY3BwOgorICAg
ICAgICAoV1BFVG9vbGluZ0JhY2tlbmRzOjpXaW5kb3dWaWV3QmFja2VuZDo6V2luZG93Vmlld0Jh
Y2tlbmQpOgorICAgICAgICAoV1BFVG9vbGluZ0JhY2tlbmRzOjpXaW5kb3dWaWV3QmFja2VuZDo6
fldpbmRvd1ZpZXdCYWNrZW5kKToKKyAgICAgICAgKiB3cGUvYmFja2VuZHMvV2luZG93Vmlld0Jh
Y2tlbmQuaDoKKwogMjAyMC0xMC0yNyAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbQ29jb2FdIEludHJvZHVjZSBfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uIGZvciBj
dXN0b21pemluZyBsb2NhbCBhbmQgcmVtb3RlIFdlYiBJbnNwZWN0b3JzCmRpZmYgLS1naXQgYS9U
b29scy9NaW5pQnJvd3Nlci93cGUvbWFpbi5jcHAgYi9Ub29scy9NaW5pQnJvd3Nlci93cGUvbWFp
bi5jcHAKaW5kZXggMmFiMDRjZTA2MWNmZmJmY2JiYzRlNjRjNjY4Mzk5NmI2NzJhYmJjZS4uYTcx
ZjE0MzEzYjFhYmEwYTlkZDY5MDYxYjI0ZDgyZTJhZjU1MDJiNCAxMDA2NDQKLS0tIGEvVG9vbHMv
TWluaUJyb3dzZXIvd3BlL21haW4uY3BwCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3dwZS9tYWlu
LmNwcApAQCAtMTA1LDE5ICsxMDUsMzEgQEAgcHJpdmF0ZToKICAgICBXZWJLaXRXZWJWaWV3KiBt
X3dlYlZpZXcgeyBudWxscHRyIH07CiB9OwogCi1zdGF0aWMgV2ViS2l0V2ViVmlldyogY3JlYXRl
V2ViVmlld0ZvckF1dG9tYXRpb25DYWxsYmFjayhXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiosIFdl
YktpdFdlYlZpZXcqIHZpZXcpCitzdGF0aWMgV2ViS2l0V2ViVmlldyogY3JlYXRlV2ViVmlldyhX
ZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXROYXZpZ2F0aW9uQWN0aW9uKiwgZ3BvaW50ZXIg
bG9vcCk7CitzdGF0aWMgV2ViS2l0V2ViVmlldyogY3JlYXRlV2ViVmlld0ZvckF1dG9tYXRpb25D
YWxsYmFjayhXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiosIEdNYWluTG9vcCogbG9vcCkKIHsKLSAg
ICByZXR1cm4gdmlldzsKKyAgICBXZWJLaXRXZWJWaWV3ICp2aWV3ID0gbnVsbHB0cjsKKworICAg
IEdIYXNoVGFibGVJdGVyIGl0ZXI7CisgICAgZ3BvaW50ZXIga2V5LCB2YWx1ZTsKKworICAgIGdf
aGFzaF90YWJsZV9pdGVyX2luaXQoJml0ZXIsIG9wZW5WaWV3cyk7CisgICAgd2hpbGUgKGdfaGFz
aF90YWJsZV9pdGVyX25leHQoJml0ZXIsICZrZXksICZ2YWx1ZSkpCisgICAgeworICAgICAgICBy
ZXR1cm4gY3JlYXRlV2ViVmlldyhXRUJLSVRfV0VCX1ZJRVcodmFsdWUpLCBudWxscHRyLCBsb29w
KTsKKyAgICB9CisKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotc3RhdGljIHZvaWQgYXV0b21h
dGlvblN0YXJ0ZWRDYWxsYmFjayhXZWJLaXRXZWJDb250ZXh0KiwgV2ViS2l0QXV0b21hdGlvblNl
c3Npb24qIHNlc3Npb24sIFdlYktpdFdlYlZpZXcqIHZpZXcpCitzdGF0aWMgdm9pZCBhdXRvbWF0
aW9uU3RhcnRlZENhbGxiYWNrKFdlYktpdFdlYkNvbnRleHQqLCBXZWJLaXRBdXRvbWF0aW9uU2Vz
c2lvbiogc2Vzc2lvbiwgR01haW5Mb29wKiBsb29wKQogewogICAgIGF1dG8qIGluZm8gPSB3ZWJr
aXRfYXBwbGljYXRpb25faW5mb19uZXcoKTsKICAgICB3ZWJraXRfYXBwbGljYXRpb25faW5mb19z
ZXRfdmVyc2lvbihpbmZvLCBXRUJLSVRfTUFKT1JfVkVSU0lPTiwgV0VCS0lUX01JTk9SX1ZFUlNJ
T04sIFdFQktJVF9NSUNST19WRVJTSU9OKTsKICAgICB3ZWJraXRfYXV0b21hdGlvbl9zZXNzaW9u
X3NldF9hcHBsaWNhdGlvbl9pbmZvKHNlc3Npb24sIGluZm8pOwogICAgIHdlYmtpdF9hcHBsaWNh
dGlvbl9pbmZvX3VucmVmKGluZm8pOwogCi0gICAgZ19zaWduYWxfY29ubmVjdChzZXNzaW9uLCAi
Y3JlYXRlLXdlYi12aWV3IiwgR19DQUxMQkFDSyhjcmVhdGVXZWJWaWV3Rm9yQXV0b21hdGlvbkNh
bGxiYWNrKSwgdmlldyk7CisgICAgZ19zaWduYWxfY29ubmVjdChzZXNzaW9uLCAiY3JlYXRlLXdl
Yi12aWV3IiwgR19DQUxMQkFDSyhjcmVhdGVXZWJWaWV3Rm9yQXV0b21hdGlvbkNhbGxiYWNrKSwg
bG9vcCk7CiB9CiAKIHN0YXRpYyBnYm9vbGVhbiBkZWNpZGVQZXJtaXNzaW9uUmVxdWVzdChXZWJL
aXRXZWJWaWV3ICosIFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0ICpyZXF1ZXN0LCBncG9pbnRlcikK
QEAgLTE0NywxMyArMTU5LDE4IEBAIHN0YXRpYyB2b2lkIGZpbHRlclNhdmVkQ2FsbGJhY2soV2Vi
S2l0VXNlckNvbnRlbnRGaWx0ZXJTdG9yZSAqc3RvcmUsIEdBc3luY1Jlc3VsCiAgICAgZ19tYWlu
X2xvb3BfcXVpdChkYXRhLT5tYWluTG9vcCk7CiB9CiAKLXN0YXRpYyB2b2lkIHdlYlZpZXdDbG9z
ZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBncG9pbnRlcikKK3N0YXRpYyB2b2lkIHdlYlZpZXdD
bG9zZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBncG9pbnRlciBkYXRhKQogewogICAgIC8vIEhh
c2ggdGFibGUga2V5IGRlbGV0ZSBmdW5jIHRha2VzIGNhcmUgb2YgdW5yZWYnaW5nIHRoZSB2aWV3
CisgICAgZnByaW50ZihzdGRlcnIsICIlcyAlcyAlZCBjbG9zaW5nIHZpZXcgJXAgd2l0aCAlZCBv
cGVuXG4iLCBfX0ZJTEVfXywgX19GVU5DVElPTl9fLCBfX0xJTkVfXywgd2ViVmlldywKKyAgICAg
ICAgICAgIGdfaGFzaF90YWJsZV9zaXplKG9wZW5WaWV3cykpOwogICAgIGdfaGFzaF90YWJsZV9y
ZW1vdmUob3BlblZpZXdzLCB3ZWJWaWV3KTsKKyAgICBpZiAoZ19oYXNoX3RhYmxlX3NpemUob3Bl
blZpZXdzKSA9PSAwKSB7CisgICAgICAgIGdfbWFpbl9sb29wX3F1aXQoc3RhdGljX2Nhc3Q8R01h
aW5Mb29wKj4oZGF0YSkpOworICAgIH0KIH0KIAotc3RhdGljIFdlYktpdFdlYlZpZXcqIGNyZWF0
ZVdlYlZpZXcoV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0TmF2aWdhdGlvbkFjdGlvbios
IGdwb2ludGVyKQorc3RhdGljIFdlYktpdFdlYlZpZXcqIGNyZWF0ZVdlYlZpZXcoV2ViS2l0V2Vi
Vmlldyogd2ViVmlldywgV2ViS2l0TmF2aWdhdGlvbkFjdGlvbiosIGdwb2ludGVyIGxvb3ApCiB7
CiAgICAgYXV0byBiYWNrZW5kID0gY3JlYXRlVmlld0JhY2tlbmQoMTI4MCwgNzIwKTsKICAgICBz
dHJ1Y3Qgd3BlX3ZpZXdfYmFja2VuZCogd3BlQmFja2VuZCA9IGJhY2tlbmQtPmJhY2tlbmQoKTsK
QEAgLTE2OCw5ICsxODUsMTAgQEAgc3RhdGljIFdlYktpdFdlYlZpZXcqIGNyZWF0ZVdlYlZpZXco
V2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0TmF2aWdhdGlvbkFjdGkKICAgICBhdXRvKiBu
ZXdXZWJWaWV3ID0gd2Via2l0X3dlYl92aWV3X25ld193aXRoX3JlbGF0ZWRfdmlldyh2aWV3QmFj
a2VuZCwgd2ViVmlldyk7CiAgICAgd2Via2l0X3dlYl92aWV3X3NldF9zZXR0aW5ncyhuZXdXZWJW
aWV3LCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKHdlYlZpZXcpKTsKIAotICAgIGdfc2ln
bmFsX2Nvbm5lY3QobmV3V2ViVmlldywgImNyZWF0ZSIsIEdfQ0FMTEJBQ0soY3JlYXRlV2ViVmll
dyksIG51bGxwdHIpOwotICAgIGdfc2lnbmFsX2Nvbm5lY3QobmV3V2ViVmlldywgImNsb3NlIiwg
R19DQUxMQkFDSyh3ZWJWaWV3Q2xvc2UpLCBudWxscHRyKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0
KG5ld1dlYlZpZXcsICJjcmVhdGUiLCBHX0NBTExCQUNLKGNyZWF0ZVdlYlZpZXcpLCBsb29wKTsK
KyAgICBnX3NpZ25hbF9jb25uZWN0KG5ld1dlYlZpZXcsICJjbG9zZSIsIEdfQ0FMTEJBQ0sod2Vi
Vmlld0Nsb3NlKSwgbG9vcCk7CiAKKyAgICBmcHJpbnRmKHN0ZGVyciwgIiVzICVzICVkIEFkZGlu
ZyB2aWV3ICVwIHRvIG9wZW4gdmlld3NcbiIsIF9fRklMRV9fLCBfX0ZVTkNUSU9OX18sIF9fTElO
RV9fLCBuZXdXZWJWaWV3KTsKICAgICBnX2hhc2hfdGFibGVfYWRkKG9wZW5WaWV3cywgbmV3V2Vi
Vmlldyk7CiAKICAgICByZXR1cm4gbmV3V2ViVmlldzsKQEAgLTE4MSw2ICsxOTksOCBAQCBpbnQg
bWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogI2lmIEVOQUJMRV9ERVZFTE9QRVJfTU9ERQog
ICAgIGdfc2V0ZW52KCJXRUJLSVRfSU5KRUNURURfQlVORExFX1BBVEgiLCBXRUJLSVRfSU5KRUNU
RURfQlVORExFX1BBVEgsIEZBTFNFKTsKICNlbmRpZgorICAgIC8qIGdfc2V0ZW52KCJHX0RFQlVH
IiwgImFsbCIsIFRSVUUpOyAqLworICAgIC8qIGdfc2V0ZW52KCJHX01FU1NBR0VTX0RFQlVHIiwg
ImFsbCIsIFRSVUUpOyAqLwogCiAgICAgR09wdGlvbkNvbnRleHQqIGNvbnRleHQgPSBnX29wdGlv
bl9jb250ZXh0X25ldyhudWxscHRyKTsKICAgICBnX29wdGlvbl9jb250ZXh0X2FkZF9tYWluX2Vu
dHJpZXMoY29udGV4dCwgY29tbWFuZExpbmVPcHRpb25zLCBudWxscHRyKTsKQEAgLTI5NSw3ICsz
MTUsNiBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogICAgICAgICAidXNlci1j
b250ZW50LW1hbmFnZXIiLCB1c2VyQ29udGVudE1hbmFnZXIsCiAgICAgICAgICJpcy1jb250cm9s
bGVkLWJ5LWF1dG9tYXRpb24iLCBhdXRvbWF0aW9uTW9kZSwKICAgICAgICAgbnVsbHB0cikpOwot
ICAgIGdfb2JqZWN0X3VucmVmKHNldHRpbmdzKTsKIAogICAgIGJhY2tlbmRQdHItPnNldElucHV0
Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8SW5wdXRDbGllbnQ+KGxvb3AsIHdlYlZpZXcpKTsKICNp
ZiBkZWZpbmVkKEhBVkVfQUNDRVNTSUJJTElUWSkgJiYgSEFWRV9BQ0NFU1NJQklMSVRZCkBAIC0z
MDcsMTAgKzMyNiwxMCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogICAgIG9w
ZW5WaWV3cyA9IGdfaGFzaF90YWJsZV9uZXdfZnVsbChudWxscHRyLCBudWxscHRyLCBnX29iamVj
dF91bnJlZiwgbnVsbHB0cik7CiAKICAgICB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X2F1dG9tYXRp
b25fYWxsb3dlZCh3ZWJDb250ZXh0LCBhdXRvbWF0aW9uTW9kZSk7Ci0gICAgZ19zaWduYWxfY29u
bmVjdCh3ZWJDb250ZXh0LCAiYXV0b21hdGlvbi1zdGFydGVkIiwgR19DQUxMQkFDSyhhdXRvbWF0
aW9uU3RhcnRlZENhbGxiYWNrKSwgd2ViVmlldyk7CisgICAgZ19zaWduYWxfY29ubmVjdCh3ZWJD
b250ZXh0LCAiYXV0b21hdGlvbi1zdGFydGVkIiwgR19DQUxMQkFDSyhhdXRvbWF0aW9uU3RhcnRl
ZENhbGxiYWNrKSwgbG9vcCk7CiAgICAgZ19zaWduYWxfY29ubmVjdCh3ZWJWaWV3LCAicGVybWlz
c2lvbi1yZXF1ZXN0IiwgR19DQUxMQkFDSyhkZWNpZGVQZXJtaXNzaW9uUmVxdWVzdCksIG51bGxw
dHIpOwotICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2ViVmlldywgImNyZWF0ZSIsIEdfQ0FMTEJBQ0so
Y3JlYXRlV2ViVmlldyksIG51bGxwdHIpOwotICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2ViVmlldywg
ImNsb3NlIiwgR19DQUxMQkFDSyh3ZWJWaWV3Q2xvc2UpLCBudWxscHRyKTsKKyAgICBnX3NpZ25h
bF9jb25uZWN0KHdlYlZpZXcsICJjcmVhdGUiLCBHX0NBTExCQUNLKGNyZWF0ZVdlYlZpZXcpLCBs
b29wKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KHdlYlZpZXcsICJjbG9zZSIsIEdfQ0FMTEJBQ0so
d2ViVmlld0Nsb3NlKSwgbG9vcCk7CiAgICAgZ19oYXNoX3RhYmxlX2FkZChvcGVuVmlld3MsIHdl
YlZpZXcpOwogCiAgICAgV2ViS2l0Q29sb3IgY29sb3I7CkBAIC0zMzQsNiArMzUzLDcgQEAgaW50
IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAogICAgIGdfbWFpbl9sb29wX3J1bihsb29w
KTsKIAorICAgIGdfb2JqZWN0X3VucmVmKHNldHRpbmdzKTsKICAgICBnX2hhc2hfdGFibGVfZGVz
dHJveShvcGVuVmlld3MpOwogCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL3dwZS9iYWNrZW5kcy9DTWFr
ZUxpc3RzLnR4dCBiL1Rvb2xzL3dwZS9iYWNrZW5kcy9DTWFrZUxpc3RzLnR4dAppbmRleCAzMmRk
NTE1ZDMyMTYyOWNlYmVlYzFlOThjYzdiNTFmZWFjZjkzZmU2Li4wYjZkZDZjZDc2ZWNiNWQ3MWNj
YmFkNjhlMzQ0MWI0N2Y0YWE0MTAwIDEwMDY0NAotLS0gYS9Ub29scy93cGUvYmFja2VuZHMvQ01h
a2VMaXN0cy50eHQKKysrIGIvVG9vbHMvd3BlL2JhY2tlbmRzL0NNYWtlTGlzdHMudHh0CkBAIC0x
MCw2ICsxMCw3IEBAIGZpbGUoTUFLRV9ESVJFQ1RPUlkgJHtERVJJVkVEX1NPVVJDRVNfV1BFVE9P
TElOR0JBQ0tFTkRTX0RJUn0pCiBzZXQoV1BFVG9vbGluZ0JhY2tlbmRzX1NPVVJDRVMKICAgICAk
e0RFUklWRURfU09VUkNFU19XUEVUT09MSU5HQkFDS0VORFNfRElSfS94ZGctc2hlbGwtdW5zdGFi
bGUtdjYtcHJvdG9jb2wuYwogICAgICR7VE9PTFNfRElSfS93cGUvYmFja2VuZHMvSGVhZGxlc3NW
aWV3QmFja2VuZC5jcHAKKyAgICAke1RPT0xTX0RJUn0vd3BlL2JhY2tlbmRzL0lucHV0UmVnaXN0
cnkuY3BwCiAgICAgJHtUT09MU19ESVJ9L3dwZS9iYWNrZW5kcy9WaWV3QmFja2VuZC5jcHAKICAg
ICAke1RPT0xTX0RJUn0vd3BlL2JhY2tlbmRzL1dlYktpdEFjY2Vzc2libGVBcHBsaWNhdGlvbi5j
cHAKICAgICAke1RPT0xTX0RJUn0vd3BlL2JhY2tlbmRzL1dpbmRvd1ZpZXdCYWNrZW5kLmNwcApk
aWZmIC0tZ2l0IGEvVG9vbHMvd3BlL2JhY2tlbmRzL0lucHV0UmVnaXN0cnkuY3BwIGIvVG9vbHMv
d3BlL2JhY2tlbmRzL0lucHV0UmVnaXN0cnkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU3NDIyZjI5MjdiNDY3
YTFkMTNjMjFiNGI2ZGQyMDA2ZWVkODI2MDUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy93cGUv
YmFja2VuZHMvSW5wdXRSZWdpc3RyeS5jcHAKQEAgLTAsMCArMSwzNzcgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgIklucHV0UmVn
aXN0cnkuaCIKKworI2luY2x1ZGUgPGNzdHJpbmc+CisjaW5jbHVkZSA8Y3N0ZGlvPgorI2luY2x1
ZGUgPGxpbnV4L2lucHV0Lmg+CisjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPG11dGV4Pgor
I2luY2x1ZGUgPHN5cy9tbWFuLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisKKy8vIFRoaXMgaW5j
bHVkZSBvcmRlciBpcyBuZWNlc3NhcnkgdG8gZW5mb3JjZSB0aGUgV2F5bGFuZCBFR0wgcGxhdGZv
cm0uCisjaW5jbHVkZSA8d2F5bGFuZC1lZ2wuaD4KKyNpbmNsdWRlIDxlcG94eS9lZ2wuaD4KKyNp
bmNsdWRlIDx3cGUvZmRvLWVnbC5oPgorCituYW1lc3BhY2UgV1BFVG9vbGluZ0JhY2tlbmRzIHsK
KworY29uc3Qgc3RydWN0IHdsX3JlZ2lzdHJ5X2xpc3RlbmVyIElucHV0UmVnaXN0cnk6OnNfcmVn
aXN0cnlMaXN0ZW5lciA9IHsKKyAgICAvLyBnbG9iYWwKKyAgICBbXSh2b2lkKiwgc3RydWN0IHds
X3JlZ2lzdHJ5KiByZWdpc3RyeSwgdWludDMyX3QgbmFtZSwgY29uc3QgY2hhciogaW50ZXJmYWNl
LCB1aW50MzJfdCkKKyAgICB7CisgICAgICAgIGlmICghc3RkOjpzdHJjbXAoaW50ZXJmYWNlLCAi
d2xfc2VhdCIpKSB7CisgICAgICAgICAgICBzX3NlYXQgPSBzdGF0aWNfY2FzdDxzdHJ1Y3Qgd2xf
c2VhdCo+KHdsX3JlZ2lzdHJ5X2JpbmQocmVnaXN0cnksIG5hbWUsICZ3bF9zZWF0X2ludGVyZmFj
ZSwgNCkpOworICAgICAgICB9CisgICAgfSwKKyAgICAvLyBnbG9iYWxfcmVtb3ZlCisgICAgW10o
dm9pZCosIHN0cnVjdCB3bF9yZWdpc3RyeSosIHVpbnQzMl90KSB7IH0sCit9OworCitjb25zdCBz
dHJ1Y3Qgd2xfc2VhdF9saXN0ZW5lciBJbnB1dFJlZ2lzdHJ5OjpzX3NlYXRMaXN0ZW5lciA9IHsK
KyAgICAvLyBDYXBhYmlsaXRpZXMKKyAgICBbXSh2b2lkKiwgc3RydWN0IHdsX3NlYXQqIHNlYXQs
IHVpbnQzMl90IGNhcGFiaWxpdGllcykKKyAgICB7CisgICAgICAgIGF1dG8mIHNlYXREYXRhID0g
c19zZWF0RGF0YTsKKworICAgICAgICAvLyBXTF9TRUFUX0NBUEFCSUxJVFlfUE9JTlRFUgorICAg
ICAgICBjb25zdCBib29sIGhhc1BvaW50ZXJDYXAgPSBjYXBhYmlsaXRpZXMgJiBXTF9TRUFUX0NB
UEFCSUxJVFlfUE9JTlRFUjsKKyAgICAgICAgaWYgKGhhc1BvaW50ZXJDYXAgJiYgIXNlYXREYXRh
LnBvaW50ZXIub2JqZWN0KSB7CisgICAgICAgICAgICBzZWF0RGF0YS5wb2ludGVyLm9iamVjdCA9
IHdsX3NlYXRfZ2V0X3BvaW50ZXIoc2VhdCk7CisgICAgICAgICAgICB3bF9wb2ludGVyX2FkZF9s
aXN0ZW5lcihzZWF0RGF0YS5wb2ludGVyLm9iamVjdCwgJnNfcG9pbnRlckxpc3RlbmVyLCBudWxs
cHRyKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIWhhc1BvaW50ZXJDYXAgJiYgc2VhdERhdGEu
cG9pbnRlci5vYmplY3QpIHsKKyAgICAgICAgICAgIHdsX3BvaW50ZXJfZGVzdHJveShzZWF0RGF0
YS5wb2ludGVyLm9iamVjdCk7CisgICAgICAgICAgICBzZWF0RGF0YS5wb2ludGVyLm9iamVjdCA9
IG51bGxwdHI7CisgICAgICAgIH0KKworICAgICAgICAvKiAvLyBXTF9TRUFUX0NBUEFCSUxJVFlf
S0VZQk9BUkQgKi8KKyAgICAgICAgY29uc3QgYm9vbCBoYXNLZXlib2FyZENhcCA9IGNhcGFiaWxp
dGllcyAmIFdMX1NFQVRfQ0FQQUJJTElUWV9LRVlCT0FSRDsKKyAgICAgICAgaWYgKGhhc0tleWJv
YXJkQ2FwICYmICFzZWF0RGF0YS5rZXlib2FyZC5vYmplY3QpIHsKKyAgICAgICAgICAgIHNlYXRE
YXRhLmtleWJvYXJkLm9iamVjdCA9IHdsX3NlYXRfZ2V0X2tleWJvYXJkKHNlYXQpOworICAgICAg
ICAgICAgd2xfa2V5Ym9hcmRfYWRkX2xpc3RlbmVyKHNlYXREYXRhLmtleWJvYXJkLm9iamVjdCwg
JnNfa2V5Ym9hcmRMaXN0ZW5lciwgbnVsbHB0cik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFo
YXNLZXlib2FyZENhcCAmJiBzZWF0RGF0YS5rZXlib2FyZC5vYmplY3QpIHsKKyAgICAgICAgICAg
IHdsX2tleWJvYXJkX2Rlc3Ryb3koc2VhdERhdGEua2V5Ym9hcmQub2JqZWN0KTsKKyAgICAgICAg
ICAgIHNlYXREYXRhLmtleWJvYXJkLm9iamVjdCA9IG51bGxwdHI7CisgICAgICAgIH0KKworICAg
ICAgICAvLyBUT0RPIFRvdWNoIHN1cHBvcnQKKyAgICAgICAgLy8gV0xfU0VBVF9DQVBBQklMSVRZ
X1RPVUNICisgICAgICAgIC8qIGNvbnN0IGJvb2wgaGFzVG91Y2hDYXAgPSBjYXBhYmlsaXRpZXMg
JiBXTF9TRUFUX0NBUEFCSUxJVFlfVE9VQ0g7ICovCisgICAgICAgIC8qIGlmIChoYXNUb3VjaENh
cCAmJiAhc2VhdERhdGEudG91Y2gub2JqZWN0KSB7ICovCisgICAgICAgIC8qICAgICBzZWF0RGF0
YS50b3VjaC5vYmplY3QgPSB3bF9zZWF0X2dldF90b3VjaChzZWF0KTsgKi8KKyAgICAgICAgLyog
ICAgIHdsX3RvdWNoX2FkZF9saXN0ZW5lcihzZWF0RGF0YS50b3VjaC5vYmplY3QsICZzX3RvdWNo
TGlzdGVuZXIsIHdpbmRvdyk7ICovCisgICAgICAgIC8qIH0gKi8KKyAgICAgICAgLyogaWYgKCFo
YXNUb3VjaENhcCAmJiBzZWF0RGF0YS50b3VjaC5vYmplY3QpIHsgKi8KKyAgICAgICAgLyogICAg
IHdsX3RvdWNoX2Rlc3Ryb3koc2VhdERhdGEudG91Y2gub2JqZWN0KTsgKi8KKyAgICAgICAgLyog
ICAgIHNlYXREYXRhLnRvdWNoLm9iamVjdCA9IG51bGxwdHI7ICovCisgICAgICAgIC8qIH0gKi8K
KyAgICB9LAorICAgIC8vIE5hbWUKKyAgICBbXSh2b2lkKiwgc3RydWN0IHdsX3NlYXQqLCBjb25z
dCBjaGFyKikgeyB9Cit9OworCitzdHJ1Y3Qgd2xfZGlzcGxheSogSW5wdXRSZWdpc3RyeTo6c19k
aXNwbGF5Oworc3RydWN0IHdsX3NlYXQqIElucHV0UmVnaXN0cnk6OnNfc2VhdDsKK3N0cnVjdCBJ
bnB1dFJlZ2lzdHJ5OjpTZWF0RGF0YSBJbnB1dFJlZ2lzdHJ5OjpzX3NlYXREYXRhOworc3RkOjp1
bm9yZGVyZWRfbWFwPHdsX3N1cmZhY2UqLCBXaW5kb3dWaWV3QmFja2VuZCo+IElucHV0UmVnaXN0
cnk6OnNfdmlld3M7CisKK3VpbnQzMl90IElucHV0UmVnaXN0cnk6Om1vZGlmaWVycygpCit7Cisg
ICAgdWludDMyX3QgbWFzayA9IHNfc2VhdERhdGEua2V5Ym9hcmQubW9kaWZpZXJzOworICAgIGlm
IChzX3NlYXREYXRhLnBvaW50ZXIub2JqZWN0KQorICAgICAgICBtYXNrIHw9IHNfc2VhdERhdGEu
cG9pbnRlci5tb2RpZmllcnM7CisgICAgcmV0dXJuIG1hc2s7Cit9CisKK3ZvaWQgSW5wdXRSZWdp
c3RyeTo6aGFuZGxlS2V5RXZlbnQoV2luZG93Vmlld0JhY2tlbmQqIHdpbmRvdywgdWludDMyX3Qg
a2V5LCB1aW50MzJfdCBzdGF0ZSwgdWludDMyX3QgdGltZSkKK3sKKyAgICB1aW50MzJfdCBrZXlz
eW0gPSB3cGVfaW5wdXRfeGtiX2NvbnRleHRfZ2V0X2tleV9jb2RlKHdwZV9pbnB1dF94a2JfY29u
dGV4dF9nZXRfZGVmYXVsdCgpLCBrZXksIHN0YXRlID09IFdMX0tFWUJPQVJEX0tFWV9TVEFURV9Q
UkVTU0VEKTsKKyAgICBpZiAoIWtleXN5bSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKHNf
c2VhdERhdGEua2V5Ym9hcmQudGFyZ2V0KSB7CisgICAgICAgIHN0cnVjdCB3cGVfaW5wdXRfa2V5
Ym9hcmRfZXZlbnQgZXZlbnQgPSB7IHRpbWUsIGtleXN5bSwga2V5LCAhIXN0YXRlLCBtb2RpZmll
cnMoKSB9OworICAgICAgICB3aW5kb3ctPmRpc3BhdGNoSW5wdXRLZXlib2FyZEV2ZW50KCZldmVu
dCk7CisgICAgfQorfQorCit2b2lkIElucHV0UmVnaXN0cnk6OnNldERpc3BsYXkod2xfZGlzcGxh
eSogZGlzcGxheSkKK3sKKyAgICBpZiAoc19kaXNwbGF5ID09IGRpc3BsYXkpIHsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIC8vIEZJWE1FIHdoYXQgaWYgd2UgZ2V0IGEgZGlmZmVyZW50
IGRpc3BsYXk/CisKKyAgICBzX2Rpc3BsYXkgPSBkaXNwbGF5OworCisgICAgYXV0byogcmVnaXN0
cnkgPSB3bF9kaXNwbGF5X2dldF9yZWdpc3RyeShzX2Rpc3BsYXkpOworICAgIHdsX3JlZ2lzdHJ5
X2FkZF9saXN0ZW5lcihyZWdpc3RyeSwgJnNfcmVnaXN0cnlMaXN0ZW5lciwgbnVsbHB0cik7Cisg
ICAgd2xfZGlzcGxheV9yb3VuZHRyaXAoc19kaXNwbGF5KTsKKworICAgIGlmIChzX3NlYXQpCisg
ICAgICAgIHdsX3NlYXRfYWRkX2xpc3RlbmVyKHNfc2VhdCwgJnNfc2VhdExpc3RlbmVyLCBudWxs
cHRyKTsKK30KKwordm9pZCBJbnB1dFJlZ2lzdHJ5OjphZGRJbnB1dFRhcmdldCh3bF9zdXJmYWNl
KiBzdXJmYWNlLCBXaW5kb3dWaWV3QmFja2VuZCAqdmlldykKK3sKKyAgICBzX3ZpZXdzW3N1cmZh
Y2VdID0gdmlldzsKK30KKwordm9pZCBJbnB1dFJlZ2lzdHJ5OjpyZW1vdmVJbnB1dFRhcmdldChX
aW5kb3dWaWV3QmFja2VuZCAqdmlldykKK3sKKyAgICB3bF9zdXJmYWNlKiBrZXkgPSBudWxscHRy
OworCisgICAgaWYgKCF2aWV3KQorICAgICAgICByZXR1cm47CisKKyAgICBmb3IgKGF1dG8gcGFp
ciA6IHNfdmlld3MpIHsKKyAgICAgICAgaWYgKHBhaXIuc2Vjb25kID09IHZpZXcpIHsKKyAgICAg
ICAgICAgIGtleSA9IHBhaXIuZmlyc3Q7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIGlmIChrZXkpIHsKKyAgICAgICAgc192aWV3cy5lcmFzZShrZXkpOworICAg
ICAgICBpZiAoc19zZWF0RGF0YS5rZXlib2FyZC50YXJnZXQgPT0ga2V5KQorICAgICAgICAgICAg
c19zZWF0RGF0YS5rZXlib2FyZC50YXJnZXQgPSBudWxscHRyOworICAgICAgICBpZiAoc19zZWF0
RGF0YS5wb2ludGVyLnRhcmdldCA9PSBrZXkpCisgICAgICAgICAgICBzX3NlYXREYXRhLnBvaW50
ZXIudGFyZ2V0ID0gbnVsbHB0cjsKKyAgICB9Cit9CisKK2NvbnN0IHN0cnVjdCB3bF9wb2ludGVy
X2xpc3RlbmVyIElucHV0UmVnaXN0cnk6OnNfcG9pbnRlckxpc3RlbmVyID0geworICAgIC8vIGVu
dGVyCisgICAgW10odm9pZCosIHN0cnVjdCB3bF9wb2ludGVyKiwgdWludDMyX3QgLypzZXJpYWwq
Lywgc3RydWN0IHdsX3N1cmZhY2UqIHN1cmZhY2UsIHdsX2ZpeGVkX3QsIHdsX2ZpeGVkX3QpCisg
ICAgeworICAgICAgICBzX3NlYXREYXRhLnBvaW50ZXIudGFyZ2V0ID0gc3VyZmFjZTsKKyAgICAg
ICAgc19zZWF0RGF0YS5wb2ludGVyLm1vZGlmaWVycyA9IDA7CisgICAgfSwKKyAgICAvLyBsZWF2
ZQorICAgIFtdKHZvaWQqLCBzdHJ1Y3Qgd2xfcG9pbnRlciosIHVpbnQzMl90IC8qc2VyaWFsKi8s
IHN0cnVjdCB3bF9zdXJmYWNlKiBzdXJmYWNlKQorICAgIHsKKyAgICAgICAgaWYgKHNfc2VhdERh
dGEucG9pbnRlci50YXJnZXQgPT0gc3VyZmFjZSkKKyAgICAgICAgICAgIHNfc2VhdERhdGEucG9p
bnRlci50YXJnZXQgPSBudWxscHRyOworICAgIH0sCisgICAgLy8gbW90aW9uCisgICAgW10odm9p
ZCosIHN0cnVjdCB3bF9wb2ludGVyKiwgdWludDMyX3QgdGltZSwgd2xfZml4ZWRfdCBmaXhlZFgs
IHdsX2ZpeGVkX3QgZml4ZWRZKQorICAgIHsKKyAgICAgICAgaW50IHggPSB3bF9maXhlZF90b19p
bnQoZml4ZWRYKTsKKyAgICAgICAgaW50IHkgPSB3bF9maXhlZF90b19pbnQoZml4ZWRZKTsKKwor
ICAgICAgICBzX3NlYXREYXRhLnBvaW50ZXIuY29vcmRzID0geyB4LCB5IH07CisKKyAgICAgICAg
aWYgKHNfc2VhdERhdGEucG9pbnRlci50YXJnZXQpIHsKKyAgICAgICAgICAgIHN0cnVjdCB3cGVf
aW5wdXRfcG9pbnRlcl9ldmVudCBldmVudCA9IHsgd3BlX2lucHV0X3BvaW50ZXJfZXZlbnRfdHlw
ZV9tb3Rpb24sCisgICAgICAgICAgICAgICAgdGltZSwgeCwgeSwgc19zZWF0RGF0YS5wb2ludGVy
LmJ1dHRvbiwgc19zZWF0RGF0YS5wb2ludGVyLnN0YXRlLAorICAgICAgICAgICAgICAgIG1vZGlm
aWVycygpIH07CisgICAgICAgICAgICBhdXRvIHdpbmRvdyA9IHNfdmlld3MuZmluZChzX3NlYXRE
YXRhLnBvaW50ZXIudGFyZ2V0KTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cgIT0gc192aWV3cy5l
bmQoKSkgeworICAgICAgICAgICAgICAgIHdpbmRvdy0+c2Vjb25kLT5kaXNwYXRjaElucHV0UG9p
bnRlckV2ZW50KCZldmVudCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgIH0sCisg
ICAgLy8gYnV0dG9uCisgICAgW10odm9pZCosIHN0cnVjdCB3bF9wb2ludGVyKiwgdWludDMyX3Qg
LypzZXJpYWwqLywgdWludDMyX3QgdGltZSwgdWludDMyX3QgYnV0dG9uLCB1aW50MzJfdCBzdGF0
ZSkKKyAgICB7CisKKyAgICAgICAgaWYgKGJ1dHRvbiA+PSBCVE5fTU9VU0UpCisgICAgICAgICAg
ICBidXR0b24gPSBidXR0b24gLSBCVE5fTU9VU0UgKyAxOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBidXR0b24gPSAwOworCisgICAgICAgIHNfc2VhdERhdGEucG9pbnRlci5idXR0b24gPSAh
IXN0YXRlID8gYnV0dG9uIDogMDsKKyAgICAgICAgc19zZWF0RGF0YS5wb2ludGVyLnN0YXRlID0g
c3RhdGU7CisKKyAgICAgICAgdWludDMyX3QgbW9kaWZpZXIgPSAwOworICAgICAgICBzd2l0Y2gg
KGJ1dHRvbikgeworICAgICAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgICAgIG1vZGlmaWVy
ID0gd3BlX2lucHV0X3BvaW50ZXJfbW9kaWZpZXJfYnV0dG9uMTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgICAgICBtb2RpZmllciA9IHdw
ZV9pbnB1dF9wb2ludGVyX21vZGlmaWVyX2J1dHRvbjI7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBjYXNlIDM6CisgICAgICAgICAgICAgICAgbW9kaWZpZXIgPSB3cGVfaW5w
dXRfcG9pbnRlcl9tb2RpZmllcl9idXR0b24zOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgY2FzZSA0OgorICAgICAgICAgICAgICAgIG1vZGlmaWVyID0gd3BlX2lucHV0X3Bv
aW50ZXJfbW9kaWZpZXJfYnV0dG9uNDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIGNhc2UgNToKKyAgICAgICAgICAgICAgICBtb2RpZmllciA9IHdwZV9pbnB1dF9wb2ludGVy
X21vZGlmaWVyX2J1dHRvbjU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgaWYg
KHN0YXRlKQorICAgICAgICAgICAgc19zZWF0RGF0YS5wb2ludGVyLm1vZGlmaWVycyB8PSBtb2Rp
ZmllcjsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc19zZWF0RGF0YS5wb2ludGVyLm1vZGlm
aWVycyAmPSB+bW9kaWZpZXI7CisKKyAgICAgICAgaWYgKHNfc2VhdERhdGEucG9pbnRlci50YXJn
ZXQpIHsKKyAgICAgICAgICAgIGF1dG8gd2luZG93ID0gc192aWV3cy5maW5kKHNfc2VhdERhdGEu
cG9pbnRlci50YXJnZXQpOworICAgICAgICAgICAgaWYgKHdpbmRvdyAhPSBzX3ZpZXdzLmVuZCgp
KSB7CisgICAgICAgICAgICAgICAgc3RydWN0IHdwZV9pbnB1dF9wb2ludGVyX2V2ZW50IGV2ZW50
ID0geyB3cGVfaW5wdXRfcG9pbnRlcl9ldmVudF90eXBlX2J1dHRvbiwKKyAgICAgICAgICAgICAg
ICAgICAgdGltZSwgc19zZWF0RGF0YS5wb2ludGVyLmNvb3Jkcy5maXJzdCwgc19zZWF0RGF0YS5w
b2ludGVyLmNvb3Jkcy5zZWNvbmQsIGJ1dHRvbiwgc3RhdGUsIG1vZGlmaWVycygpIH07CisgICAg
ICAgICAgICAgICAgd2luZG93LT5zZWNvbmQtPmRpc3BhdGNoSW5wdXRQb2ludGVyRXZlbnQoJmV2
ZW50KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0sCisgICAgLy8gYXhpcworICAg
IFtdKHZvaWQqLCBzdHJ1Y3Qgd2xfcG9pbnRlciosIHVpbnQzMl90IHRpbWUsIHVpbnQzMl90IGF4
aXMsIHdsX2ZpeGVkX3QgdmFsdWUpCisgICAgeworICAgICAgICBpZiAoIXNfc2VhdERhdGEucG9p
bnRlci50YXJnZXQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgYXV0byB3aW5kb3cg
PSBzX3ZpZXdzLmZpbmQoc19zZWF0RGF0YS5wb2ludGVyLnRhcmdldCk7CisgICAgICAgIGlmICh3
aW5kb3cgIT0gc192aWV3cy5lbmQoKSkgeworCisgICAgICAgICAgICBzdHJ1Y3Qgd3BlX2lucHV0
X2F4aXNfZXZlbnQgZXZlbnQgPSB7IHdwZV9pbnB1dF9heGlzX2V2ZW50X3R5cGVfbW90aW9uLAor
ICAgICAgICAgICAgdGltZSwgc19zZWF0RGF0YS5wb2ludGVyLmNvb3Jkcy5maXJzdCwgc19zZWF0
RGF0YS5wb2ludGVyLmNvb3Jkcy5zZWNvbmQsIGF4aXMsIC13bF9maXhlZF90b19pbnQodmFsdWUp
LCBtb2RpZmllcnMoKSB9OworICAgICAgICAgICAgd2luZG93LT5zZWNvbmQtPmRpc3BhdGNoSW5w
dXRBeGlzRXZlbnQoJmV2ZW50KTsKKyAgICAgICAgfQorICAgIH0sCisgICAgbnVsbHB0ciwgLy8g
ZnJhbWUKKyAgICBudWxscHRyLCAvLyBheGlzX3NvdXJjZQorICAgIG51bGxwdHIsIC8vIGF4aXNf
c3RvcAorICAgIG51bGxwdHIsIC8vIGF4aXNfZGlzY3JldGUKK307CisKK2NvbnN0IHN0cnVjdCB3
bF9rZXlib2FyZF9saXN0ZW5lciBJbnB1dFJlZ2lzdHJ5OjpzX2tleWJvYXJkTGlzdGVuZXIgPSB7
CisgICAgLy8ga2V5bWFwCisgICAgW10odm9pZCosIHN0cnVjdCB3bF9rZXlib2FyZCosIHVpbnQz
Ml90IGZvcm1hdCwgaW50IGZkLCB1aW50MzJfdCBzaXplKQorICAgIHsKKyAgICAgICAgaWYgKGZv
cm1hdCAhPSBXTF9LRVlCT0FSRF9LRVlNQVBfRk9STUFUX1hLQl9WMSkgeworICAgICAgICAgICAg
Y2xvc2UoZmQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgdm9p
ZCogbWFwcGluZyA9IG1tYXAobnVsbHB0ciwgc2l6ZSwgUFJPVF9SRUFELCBNQVBfU0hBUkVELCBm
ZCwgMCk7CisgICAgICAgIGlmIChtYXBwaW5nID09IE1BUF9GQUlMRUQpIHsKKyAgICAgICAgICAg
IGNsb3NlKGZkKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGF1
dG8qIHhrYiA9IHdwZV9pbnB1dF94a2JfY29udGV4dF9nZXRfZGVmYXVsdCgpOworICAgICAgICBh
dXRvKiBrZXltYXAgPSB4a2Jfa2V5bWFwX25ld19mcm9tX3N0cmluZyh3cGVfaW5wdXRfeGtiX2Nv
bnRleHRfZ2V0X2NvbnRleHQoeGtiKSwgc3RhdGljX2Nhc3Q8Y2hhcio+KG1hcHBpbmcpLAorICAg
ICAgICAgICAgWEtCX0tFWU1BUF9GT1JNQVRfVEVYVF9WMSwgWEtCX0tFWU1BUF9DT01QSUxFX05P
X0ZMQUdTKTsKKyAgICAgICAgbXVubWFwKG1hcHBpbmcsIHNpemUpOworICAgICAgICBjbG9zZShm
ZCk7CisKKyAgICAgICAgd3BlX2lucHV0X3hrYl9jb250ZXh0X3NldF9rZXltYXAoeGtiLCBrZXlt
YXApOworICAgICAgICB4a2Jfa2V5bWFwX3VucmVmKGtleW1hcCk7CisgICAgfSwKKyAgICAvLyBl
bnRlcgorICAgIFtdKHZvaWQqLCBzdHJ1Y3Qgd2xfa2V5Ym9hcmQqLCB1aW50MzJfdCAvKnNlcmlh
bCovLCBzdHJ1Y3Qgd2xfc3VyZmFjZSogc3VyZmFjZSwgc3RydWN0IHdsX2FycmF5KikKKyAgICB7
CisgICAgICAgIHNfc2VhdERhdGEua2V5Ym9hcmQudGFyZ2V0ID0gc3VyZmFjZTsKKyAgICB9LAor
ICAgIC8vIGxlYXZlCisgICAgW10odm9pZCosIHN0cnVjdCB3bF9rZXlib2FyZCosIHVpbnQzMl90
IC8qc2VyaWFsKi8sIHN0cnVjdCB3bF9zdXJmYWNlKikKKyAgICB7CisgICAgICAgIHNfc2VhdERh
dGEua2V5Ym9hcmQudGFyZ2V0ID0gbnVsbHB0cjsKKyAgICB9LAorICAgIC8vIGtleQorICAgIFtd
KHZvaWQqLCBzdHJ1Y3Qgd2xfa2V5Ym9hcmQqLCB1aW50MzJfdCAvKnNlcmlhbCovLCB1aW50MzJf
dCB0aW1lLCB1aW50MzJfdCBrZXksIHVpbnQzMl90IHN0YXRlKQorICAgIHsKKyAgICAgICAgaWYg
KCFzX3NlYXREYXRhLmtleWJvYXJkLnRhcmdldCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICBhdXRvIHdpbmRvd2l0ID0gc192aWV3cy5maW5kKHNfc2VhdERhdGEua2V5Ym9hcmQudGFy
Z2V0KTsKKyAgICAgICAgaWYgKHdpbmRvd2l0ID09IHNfdmlld3MuZW5kKCkpCisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIGF1dG8mIHdpbmRvdyA9IHdpbmRvd2l0LT5zZWNvbmQ7CisKKyAg
ICAgICAgLy8gSURLLgorICAgICAgICBrZXkgKz0gODsKKworICAgICAgICBJbnB1dFJlZ2lzdHJ5
OjpoYW5kbGVLZXlFdmVudCh3aW5kb3csIGtleSwgc3RhdGUsIHRpbWUpOworCisgICAgICAgIGF1
dG8mIHNlYXREYXRhID0gc19zZWF0RGF0YTsKKyAgICAgICAgaWYgKCFzZWF0RGF0YS5yZXBlYXRJ
bmZvLnJhdGUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgYXV0byoga2V5bWFwID0g
d3BlX2lucHV0X3hrYl9jb250ZXh0X2dldF9rZXltYXAod3BlX2lucHV0X3hrYl9jb250ZXh0X2dl
dF9kZWZhdWx0KCkpOworCisgICAgICAgIGlmIChzdGF0ZSA9PSBXTF9LRVlCT0FSRF9LRVlfU1RB
VEVfUkVMRUFTRUQKKyAgICAgICAgICAgICYmIHNlYXREYXRhLnJlcGVhdERhdGEua2V5ID09IGtl
eSkgeworICAgICAgICAgICAgaWYgKHNlYXREYXRhLnJlcGVhdERhdGEuZXZlbnRTb3VyY2UpCisg
ICAgICAgICAgICAgICAgZ19zb3VyY2VfcmVtb3ZlKHNlYXREYXRhLnJlcGVhdERhdGEuZXZlbnRT
b3VyY2UpOworICAgICAgICAgICAgc2VhdERhdGEucmVwZWF0RGF0YSA9IHsgMCwgMCwgMCwgMCB9
OworICAgICAgICB9IGVsc2UgaWYgKHN0YXRlID09IFdMX0tFWUJPQVJEX0tFWV9TVEFURV9QUkVT
U0VECisgICAgICAgICAgICAmJiBrZXltYXAgJiYgeGtiX2tleW1hcF9rZXlfcmVwZWF0cyhrZXlt
YXAsIGtleSkpIHsKKworICAgICAgICAgICAgaWYgKHNlYXREYXRhLnJlcGVhdERhdGEuZXZlbnRT
b3VyY2UpCisgICAgICAgICAgICAgICAgZ19zb3VyY2VfcmVtb3ZlKHNlYXREYXRhLnJlcGVhdERh
dGEuZXZlbnRTb3VyY2UpOworCisgICAgICAgICAgICBhdXRvIHNvdXJjZUlEID0gZ190aW1lb3V0
X2FkZChzZWF0RGF0YS5yZXBlYXRJbmZvLmRlbGF5LCBbXSh2b2lkKiBkYXRhKSAtPiBnYm9vbGVh
biB7CisgICAgICAgICAgICAgICAgYXV0byogd2luZG93ID0gc3RhdGljX2Nhc3Q8V2luZG93Vmll
d0JhY2tlbmQqPihkYXRhKTsKKyAgICAgICAgICAgICAgICBhdXRvJiBzZWF0RGF0YSA9IHNfc2Vh
dERhdGE7CisgICAgICAgICAgICAgICAgSW5wdXRSZWdpc3RyeTo6aGFuZGxlS2V5RXZlbnQod2lu
ZG93LCBzZWF0RGF0YS5yZXBlYXREYXRhLmtleSwgc2VhdERhdGEucmVwZWF0RGF0YS5zdGF0ZSwg
c2VhdERhdGEucmVwZWF0RGF0YS50aW1lKTsKKyAgICAgICAgICAgICAgICBzZWF0RGF0YS5yZXBl
YXREYXRhLmV2ZW50U291cmNlID0gZ190aW1lb3V0X2FkZChzZWF0RGF0YS5yZXBlYXRJbmZvLnJh
dGUsIFtdKHZvaWQqIGRhdGEpIC0+IGdib29sZWFuIHsKKyAgICAgICAgICAgICAgICAgICAgYXV0
byogd2luZG93ID0gc3RhdGljX2Nhc3Q8V2luZG93Vmlld0JhY2tlbmQqPihkYXRhKTsKKyAgICAg
ICAgICAgICAgICAgICAgYXV0byYgc2VhdERhdGEgPSBzX3NlYXREYXRhOworICAgICAgICAgICAg
ICAgICAgICBJbnB1dFJlZ2lzdHJ5OjpoYW5kbGVLZXlFdmVudCh3aW5kb3csIHNlYXREYXRhLnJl
cGVhdERhdGEua2V5LCBzZWF0RGF0YS5yZXBlYXREYXRhLnN0YXRlLCBzZWF0RGF0YS5yZXBlYXRE
YXRhLnRpbWUpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gR19TT1VSQ0VfQ09OVElOVUU7
CisgICAgICAgICAgICAgICAgfSwgZGF0YSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIEdfU09V
UkNFX1JFTU9WRTsKKyAgICAgICAgICAgIH0sIHdpbmRvdyk7CisgICAgICAgICAgICBzZWF0RGF0
YS5yZXBlYXREYXRhID0geyBrZXksIHRpbWUsIHN0YXRlLCBzb3VyY2VJRCB9OworICAgICAgICB9
CisgICAgfSwKKyAgICAvLyBtb2RpZmllcnMKKyAgICBbXSh2b2lkKiwgc3RydWN0IHdsX2tleWJv
YXJkKiwgdWludDMyX3QgLypzZXJpYWwqLywgdWludDMyX3QgZGVwcmVzc2VkTW9kcywgdWludDMy
X3QgbGF0Y2hlZE1vZHMsIHVpbnQzMl90IGxvY2tlZE1vZHMsIHVpbnQzMl90IGdyb3VwKQorICAg
IHsKKyAgICAgICAgYXV0byYga2V5Ym9hcmQgPSBzX3NlYXREYXRhLmtleWJvYXJkOworICAgICAg
ICBrZXlib2FyZC5tb2RpZmllcnMgPSB3cGVfaW5wdXRfeGtiX2NvbnRleHRfZ2V0X21vZGlmaWVy
cyh3cGVfaW5wdXRfeGtiX2NvbnRleHRfZ2V0X2RlZmF1bHQoKSwgZGVwcmVzc2VkTW9kcywgbGF0
Y2hlZE1vZHMsIGxvY2tlZE1vZHMsIGdyb3VwKTsKKyAgICB9LAorICAgIC8vIHJlcGVhdF9pbmZv
CisgICAgW10odm9pZCosIHN0cnVjdCB3bF9rZXlib2FyZCosIGludDMyX3QgcmF0ZSwgaW50MzJf
dCBkZWxheSkKKyAgICB7CisgICAgICAgIGF1dG8mIHNlYXREYXRhID0gc19zZWF0RGF0YTsKKwor
ICAgICAgICBhdXRvJiByZXBlYXRJbmZvID0gc2VhdERhdGEucmVwZWF0SW5mbzsKKyAgICAgICAg
cmVwZWF0SW5mbyA9IHsgcmF0ZSwgZGVsYXkgfTsKKworICAgICAgICAvLyBBIHJhdGUgb2YgemVy
byBkaXNhYmxlcyBhbnkgcmVwZWF0aW5nLgorICAgICAgICBpZiAoIXJhdGUpIHsKKyAgICAgICAg
ICAgIGF1dG8mIHJlcGVhdERhdGEgPSBzZWF0RGF0YS5yZXBlYXREYXRhOworICAgICAgICAgICAg
aWYgKHJlcGVhdERhdGEuZXZlbnRTb3VyY2UpIHsKKyAgICAgICAgICAgICAgICBnX3NvdXJjZV9y
ZW1vdmUocmVwZWF0RGF0YS5ldmVudFNvdXJjZSk7CisgICAgICAgICAgICAgICAgcmVwZWF0RGF0
YSA9IHsgMCwgMCwgMCwgMCB9OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfSwKKwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV1BFVG9vbGluZ0JhY2tlbmRzCmRpZmYgLS1naXQgYS9Ub29s
cy93cGUvYmFja2VuZHMvSW5wdXRSZWdpc3RyeS5oIGIvVG9vbHMvd3BlL2JhY2tlbmRzL0lucHV0
UmVnaXN0cnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMDQxNDNjNWVjM2VmN2NhYWQ0MDgyY2M2NmZiNzE0YmI4
ZDA0YjBhCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvd3BlL2JhY2tlbmRzL0lucHV0UmVnaXN0
cnkuaApAQCAtMCwwICsxLDk0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIElnYWxpYSBT
LkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAieGRnLXNoZWxsLXVuc3Rh
YmxlLXY2LWNsaWVudC1wcm90b2NvbC5oIgorCisjaW5jbHVkZSAiV2luZG93Vmlld0JhY2tlbmQu
aCIKKyNpbmNsdWRlIDx1bm9yZGVyZWRfbWFwPgorCisKK25hbWVzcGFjZSBXUEVUb29saW5nQmFj
a2VuZHMgeworCitjbGFzcyBJbnB1dFJlZ2lzdHJ5IGZpbmFsIHsKK3B1YmxpYzoKKworICAgIHN0
YXRpYyB2b2lkIHNldERpc3BsYXkod2xfZGlzcGxheSogZGlzcGxheSk7CisgICAgc3RhdGljIHZv
aWQgYWRkSW5wdXRUYXJnZXQod2xfc3VyZmFjZSogc3VyZmFjZSwgV2luZG93Vmlld0JhY2tlbmQq
IHZpZXcpOworICAgIHN0YXRpYyB2b2lkIHJlbW92ZUlucHV0VGFyZ2V0KFdpbmRvd1ZpZXdCYWNr
ZW5kKiB2aWV3KTsKKworcHJpdmF0ZToKKyAgICBzdGF0aWMgY29uc3Qgc3RydWN0IHdsX3NlYXRf
bGlzdGVuZXIgc19zZWF0TGlzdGVuZXI7CisgICAgc3RhdGljIGNvbnN0IHN0cnVjdCB3bF9yZWdp
c3RyeV9saXN0ZW5lciBzX3JlZ2lzdHJ5TGlzdGVuZXI7CisgICAgc3RhdGljIGNvbnN0IHN0cnVj
dCB3bF9wb2ludGVyX2xpc3RlbmVyIHNfcG9pbnRlckxpc3RlbmVyOworICAgIHN0YXRpYyBjb25z
dCBzdHJ1Y3Qgd2xfa2V5Ym9hcmRfbGlzdGVuZXIgc19rZXlib2FyZExpc3RlbmVyOworICAgIHN0
YXRpYyBjb25zdCBzdHJ1Y3Qgd2xfcG9pbnRlcl9saXN0ZW5lciBzX3RvdWNoTGlzdGVuZXI7Cisg
ICAgc3RhdGljIHN0cnVjdCB3bF9kaXNwbGF5KiBzX2Rpc3BsYXk7CisgICAgc3RhdGljIHN0cnVj
dCB3bF9zZWF0KiBzX3NlYXQ7CisKKyAgICBzdGF0aWMgc3RkOjp1bm9yZGVyZWRfbWFwPHdsX3N1
cmZhY2UqLCBXaW5kb3dWaWV3QmFja2VuZCo+IHNfdmlld3M7CisKKyAgICBzdGF0aWMgdWludDMy
X3QgbW9kaWZpZXJzKCk7CisgICAgc3RhdGljIHZvaWQgaGFuZGxlS2V5RXZlbnQoV2luZG93Vmll
d0JhY2tlbmQgKndpbmRvdywgdWludDMyX3Qga2V5LCB1aW50MzJfdCBzdGF0ZSwgdWludDMyX3Qg
dGltZSk7CisKKyAgICBzdGF0aWMgc3RydWN0IFNlYXREYXRhIHsKKyAgICAgICAgc3RydWN0IHsK
KyAgICAgICAgICAgIHN0cnVjdCB3bF9wb2ludGVyKiBvYmplY3QgeyBudWxscHRyIH07CisgICAg
ICAgICAgICBzdHJ1Y3Qgd2xfc3VyZmFjZSogdGFyZ2V0IHsgbnVsbHB0ciB9OworICAgICAgICAg
ICAgc3RkOjpwYWlyPGludCwgaW50PiBjb29yZHMgeyAwLCAwIH07CisgICAgICAgICAgICB1aW50
MzJfdCBidXR0b24geyAwIH07CisgICAgICAgICAgICB1aW50MzJfdCBzdGF0ZSB7IDAgfTsKKyAg
ICAgICAgICAgIHVpbnQzMl90IG1vZGlmaWVycyB7IDAgfTsKKyAgICAgICAgfSBwb2ludGVyOwor
CisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICBzdHJ1Y3Qgd2xfa2V5Ym9hcmQqIG9iamVj
dCB7IG51bGxwdHIgfTsKKyAgICAgICAgICAgIHN0cnVjdCB3bF9zdXJmYWNlKiB0YXJnZXQgeyBu
dWxscHRyIH07CisgICAgICAgICAgICB1aW50MzJfdCBtb2RpZmllcnMgeyAwIH07CisgICAgICAg
IH0ga2V5Ym9hcmQ7CisKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIHN0cnVjdCB3bF90
b3VjaCogb2JqZWN0IHsgbnVsbHB0ciB9OworICAgICAgICAgICAgc3RydWN0IHdwZV9pbnB1dF90
b3VjaF9ldmVudF9yYXcgcG9pbnRzWzEwXTsKKyAgICAgICAgICAgIGJvb2wgdHJhY2tpbmcgeyBm
YWxzZSB9OworICAgICAgICB9IHRvdWNoOworCisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAg
ICBpbnQzMl90IHJhdGUgeyAwIH07CisgICAgICAgICAgICBpbnQzMl90IGRlbGF5IHsgMCB9Owor
ICAgICAgICB9IHJlcGVhdEluZm87CisKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIHVp
bnQzMl90IGtleSB7IDAgfTsKKyAgICAgICAgICAgIHVpbnQzMl90IHRpbWUgeyAwIH07CisgICAg
ICAgICAgICB1aW50MzJfdCBzdGF0ZSB7IDAgfTsKKyAgICAgICAgICAgIHVpbnQzMl90IGV2ZW50
U291cmNlIHsgMCB9OworICAgICAgICB9IHJlcGVhdERhdGE7CisKKyAgICB9IHNfc2VhdERhdGE7
Cit9OworCit9IC8vIFdQRVRvb2xpbmdCYWNrZW5kcwpkaWZmIC0tZ2l0IGEvVG9vbHMvd3BlL2Jh
Y2tlbmRzL1ZpZXdCYWNrZW5kLmggYi9Ub29scy93cGUvYmFja2VuZHMvVmlld0JhY2tlbmQuaApp
bmRleCA5OTM4OGZjNWQ3M2U1N2EwZmIyMTFlNDIzZGZhYmQyYWMxOGVkNzQ3Li41MzYxYzBjYTFh
YmYyN2FjODExZWI5MzQ5NWRiNjRiOTFkNGQzYmI2IDEwMDY0NAotLS0gYS9Ub29scy93cGUvYmFj
a2VuZHMvVmlld0JhY2tlbmQuaAorKysgYi9Ub29scy93cGUvYmFja2VuZHMvVmlld0JhY2tlbmQu
aApAQCAtODIsNiArODIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdWludDMyX3QgbV93aWR0aCB7IDAg
fTsKICAgICB1aW50MzJfdCBtX2hlaWdodCB7IDAgfTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5w
dXRDbGllbnQ+IG1faW5wdXRDbGllbnQ7CisgICAgZnJpZW5kIGNsYXNzIElucHV0UmVnaXN0cnk7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXUEVUb29saW5nQmFja2VuZHMKZGlmZiAtLWdpdCBhL1Rv
b2xzL3dwZS9iYWNrZW5kcy9XaW5kb3dWaWV3QmFja2VuZC5jcHAgYi9Ub29scy93cGUvYmFja2Vu
ZHMvV2luZG93Vmlld0JhY2tlbmQuY3BwCmluZGV4IDU4YjcwZTMzZDUxMzUzN2Y5ODZjMmY4YjI3
NWViMThiY2QzNGNjMDUuLmNhNjhiMTRjMzk1NmQ3MjZiM2IxYTUwMGE0MDAzZmIxNDZhMTA0NzYg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL3dwZS9iYWNrZW5kcy9XaW5kb3dWaWV3QmFja2VuZC5jcHAKKysr
IGIvVG9vbHMvd3BlL2JhY2tlbmRzL1dpbmRvd1ZpZXdCYWNrZW5kLmNwcApAQCAtMzgsNiArMzgs
OCBAQAogI2luY2x1ZGUgPGVwb3h5L2VnbC5oPgogI2luY2x1ZGUgPHdwZS9mZG8tZWdsLmg+CiAK
KyNpbmNsdWRlICJJbnB1dFJlZ2lzdHJ5LmgiCisKICNpZm5kZWYgRUdMX1dMX2JpbmRfd2F5bGFu
ZF9kaXNwbGF5CiAjZGVmaW5lIEVHTF9XTF9iaW5kX3dheWxhbmRfZGlzcGxheSAxCiB0eXBlZGVm
IEVHTEJvb2xlYW4gKEVHTEFQSUVOVFJZUCBQRk5FR0xRVUVSWVdBWUxBTkRCVUZGRVJXTCkgKEVH
TERpc3BsYXkgZHB5LCBzdHJ1Y3Qgd2xfcmVzb3VyY2UqIGJ1ZmZlciwgRUdMaW50IGF0dHJpYnV0
ZSwgRUdMaW50KiB2YWx1ZSk7CkBAIC0xNDQsOSArMTQ2LDYgQEAgY29uc3Qgc3RydWN0IHdsX3Jl
Z2lzdHJ5X2xpc3RlbmVyIFdpbmRvd1ZpZXdCYWNrZW5kOjpzX3JlZ2lzdHJ5TGlzdGVuZXIgPSB7
CiAKICAgICAgICAgaWYgKCFzdGQ6OnN0cmNtcChpbnRlcmZhY2UsICJ6eGRnX3NoZWxsX3Y2Iikp
CiAgICAgICAgICAgICB3aW5kb3ctPm1feGRnID0gc3RhdGljX2Nhc3Q8c3RydWN0IHp4ZGdfc2hl
bGxfdjYqPih3bF9yZWdpc3RyeV9iaW5kKHJlZ2lzdHJ5LCBuYW1lLCAmenhkZ19zaGVsbF92Nl9p
bnRlcmZhY2UsIDEpKTsKLQotICAgICAgICBpZiAoIXN0ZDo6c3RyY21wKGludGVyZmFjZSwgInds
X3NlYXQiKSkKLSAgICAgICAgICAgIHdpbmRvdy0+bV9zZWF0ID0gc3RhdGljX2Nhc3Q8c3RydWN0
IHdsX3NlYXQqPih3bF9yZWdpc3RyeV9iaW5kKHJlZ2lzdHJ5LCBuYW1lLCAmd2xfc2VhdF9pbnRl
cmZhY2UsIDQpKTsKICAgICB9LAogICAgIC8vIGdsb2JhbF9yZW1vdmUKICAgICBbXSh2b2lkKiwg
c3RydWN0IHdsX3JlZ2lzdHJ5KiwgdWludDMyX3QpIHsgfSwKQEAgLTE2MCwyMDIgKzE1OSw2IEBA
IGNvbnN0IHN0cnVjdCB6eGRnX3NoZWxsX3Y2X2xpc3RlbmVyIFdpbmRvd1ZpZXdCYWNrZW5kOjpz
X3hkZ1dtQmFzZUxpc3RlbmVyID0gewogICAgIH0sCiB9OwogCi1jb25zdCBzdHJ1Y3Qgd2xfcG9p
bnRlcl9saXN0ZW5lciBXaW5kb3dWaWV3QmFja2VuZDo6c19wb2ludGVyTGlzdGVuZXIgPSB7Ci0g
ICAgLy8gZW50ZXIKLSAgICBbXSh2b2lkKiBkYXRhLCBzdHJ1Y3Qgd2xfcG9pbnRlciosIHVpbnQz
Ml90IC8qc2VyaWFsKi8sIHN0cnVjdCB3bF9zdXJmYWNlKiBzdXJmYWNlLCB3bF9maXhlZF90LCB3
bF9maXhlZF90KQotICAgIHsKLSAgICAgICAgYXV0byYgd2luZG93ID0gKnN0YXRpY19jYXN0PFdp
bmRvd1ZpZXdCYWNrZW5kKj4oZGF0YSk7Ci0gICAgICAgIGlmICh3aW5kb3cubV9zdXJmYWNlID09
IHN1cmZhY2UpIHsKLSAgICAgICAgICAgIHdpbmRvdy5tX3NlYXREYXRhLnBvaW50ZXIudGFyZ2V0
ID0gc3VyZmFjZTsKLSAgICAgICAgICAgIHdpbmRvdy5tX3NlYXREYXRhLnBvaW50ZXIubW9kaWZp
ZXJzID0gMDsKLSAgICAgICAgfQotICAgIH0sCi0gICAgLy8gbGVhdmUKLSAgICBbXSh2b2lkKiBk
YXRhLCBzdHJ1Y3Qgd2xfcG9pbnRlciosIHVpbnQzMl90IC8qc2VyaWFsKi8sIHN0cnVjdCB3bF9z
dXJmYWNlKiBzdXJmYWNlKQotICAgIHsKLSAgICAgICAgYXV0byYgd2luZG93ID0gKnN0YXRpY19j
YXN0PFdpbmRvd1ZpZXdCYWNrZW5kKj4oZGF0YSk7Ci0gICAgICAgIGlmICh3aW5kb3cubV9zdXJm
YWNlID09IHN1cmZhY2UgJiYgd2luZG93Lm1fc2VhdERhdGEucG9pbnRlci50YXJnZXQgPT0gc3Vy
ZmFjZSkKLSAgICAgICAgICAgIHdpbmRvdy5tX3NlYXREYXRhLnBvaW50ZXIudGFyZ2V0ID0gbnVs
bHB0cjsKLSAgICB9LAotICAgIC8vIG1vdGlvbgotICAgIFtdKHZvaWQqIGRhdGEsIHN0cnVjdCB3
bF9wb2ludGVyKiwgdWludDMyX3QgdGltZSwgd2xfZml4ZWRfdCBmaXhlZFgsIHdsX2ZpeGVkX3Qg
Zml4ZWRZKQotICAgIHsKLSAgICAgICAgYXV0byYgd2luZG93ID0gKnN0YXRpY19jYXN0PFdpbmRv
d1ZpZXdCYWNrZW5kKj4oZGF0YSk7Ci0gICAgICAgIGludCB4ID0gd2xfZml4ZWRfdG9faW50KGZp
eGVkWCk7Ci0gICAgICAgIGludCB5ID0gd2xfZml4ZWRfdG9faW50KGZpeGVkWSk7Ci0gICAgICAg
IHdpbmRvdy5tX3NlYXREYXRhLnBvaW50ZXIuY29vcmRzID0geyB4LCB5IH07Ci0KLSAgICAgICAg
aWYgKHdpbmRvdy5tX3NlYXREYXRhLnBvaW50ZXIudGFyZ2V0KSB7Ci0gICAgICAgICAgICBzdHJ1
Y3Qgd3BlX2lucHV0X3BvaW50ZXJfZXZlbnQgZXZlbnQgPSB7IHdwZV9pbnB1dF9wb2ludGVyX2V2
ZW50X3R5cGVfbW90aW9uLAotICAgICAgICAgICAgICAgIHRpbWUsIHgsIHksIHdpbmRvdy5tX3Nl
YXREYXRhLnBvaW50ZXIuYnV0dG9uLCB3aW5kb3cubV9zZWF0RGF0YS5wb2ludGVyLnN0YXRlLCB3
aW5kb3cubW9kaWZpZXJzKCkgfTsKLSAgICAgICAgICAgIHdpbmRvdy5kaXNwYXRjaElucHV0UG9p
bnRlckV2ZW50KCZldmVudCk7Ci0gICAgICAgIH0KLSAgICB9LAotICAgIC8vIGJ1dHRvbgotICAg
IFtdKHZvaWQqIGRhdGEsIHN0cnVjdCB3bF9wb2ludGVyKiwgdWludDMyX3QgLypzZXJpYWwqLywg
dWludDMyX3QgdGltZSwgdWludDMyX3QgYnV0dG9uLCB1aW50MzJfdCBzdGF0ZSkKLSAgICB7Ci0g
ICAgICAgIGF1dG8mIHdpbmRvdyA9ICpzdGF0aWNfY2FzdDxXaW5kb3dWaWV3QmFja2VuZCo+KGRh
dGEpOwotICAgICAgICBpZiAoYnV0dG9uID49IEJUTl9NT1VTRSkKLSAgICAgICAgICAgIGJ1dHRv
biA9IGJ1dHRvbiAtIEJUTl9NT1VTRSArIDE7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGJ1
dHRvbiA9IDA7Ci0KLSAgICAgICAgd2luZG93Lm1fc2VhdERhdGEucG9pbnRlci5idXR0b24gPSAh
IXN0YXRlID8gYnV0dG9uIDogMDsKLSAgICAgICAgd2luZG93Lm1fc2VhdERhdGEucG9pbnRlci5z
dGF0ZSA9IHN0YXRlOwotCi0gICAgICAgIHVpbnQzMl90IG1vZGlmaWVyID0gMDsKLSAgICAgICAg
c3dpdGNoIChidXR0b24pIHsKLSAgICAgICAgY2FzZSAxOgotICAgICAgICAgICAgbW9kaWZpZXIg
PSB3cGVfaW5wdXRfcG9pbnRlcl9tb2RpZmllcl9idXR0b24xOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgMjoKLSAgICAgICAgICAgIG1vZGlmaWVyID0gd3BlX2lucHV0X3BvaW50
ZXJfbW9kaWZpZXJfYnV0dG9uMjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIDM6
Ci0gICAgICAgICAgICBtb2RpZmllciA9IHdwZV9pbnB1dF9wb2ludGVyX21vZGlmaWVyX2J1dHRv
bjM7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSA0OgotICAgICAgICAgICAgbW9k
aWZpZXIgPSB3cGVfaW5wdXRfcG9pbnRlcl9tb2RpZmllcl9idXR0b240OwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGNhc2UgNToKLSAgICAgICAgICAgIG1vZGlmaWVyID0gd3BlX2lucHV0
X3BvaW50ZXJfbW9kaWZpZXJfYnV0dG9uNTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBk
ZWZhdWx0OgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoc3Rh
dGUpCi0gICAgICAgICAgICB3aW5kb3cubV9zZWF0RGF0YS5wb2ludGVyLm1vZGlmaWVycyB8PSBt
b2RpZmllcjsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgd2luZG93Lm1fc2VhdERhdGEucG9p
bnRlci5tb2RpZmllcnMgJj0gfm1vZGlmaWVyOwotCi0gICAgICAgIGlmICh3aW5kb3cubV9zZWF0
RGF0YS5wb2ludGVyLnRhcmdldCkgewotICAgICAgICAgICAgc3RydWN0IHdwZV9pbnB1dF9wb2lu
dGVyX2V2ZW50IGV2ZW50ID0geyB3cGVfaW5wdXRfcG9pbnRlcl9ldmVudF90eXBlX2J1dHRvbiwK
LSAgICAgICAgICAgICAgICB0aW1lLCB3aW5kb3cubV9zZWF0RGF0YS5wb2ludGVyLmNvb3Jkcy5m
aXJzdCwgd2luZG93Lm1fc2VhdERhdGEucG9pbnRlci5jb29yZHMuc2Vjb25kLCBidXR0b24sIHN0
YXRlLCB3aW5kb3cubW9kaWZpZXJzKCkgfTsKLSAgICAgICAgICAgIHdpbmRvdy5kaXNwYXRjaElu
cHV0UG9pbnRlckV2ZW50KCZldmVudCk7Ci0gICAgICAgIH0KLSAgICB9LAotICAgIC8vIGF4aXMK
LSAgICBbXSh2b2lkKiBkYXRhLCBzdHJ1Y3Qgd2xfcG9pbnRlciosIHVpbnQzMl90IHRpbWUsIHVp
bnQzMl90IGF4aXMsIHdsX2ZpeGVkX3QgdmFsdWUpCi0gICAgewotICAgICAgICBhdXRvJiB3aW5k
b3cgPSAqc3RhdGljX2Nhc3Q8V2luZG93Vmlld0JhY2tlbmQqPihkYXRhKTsKLSAgICAgICAgaWYg
KHdpbmRvdy5tX3NlYXREYXRhLnBvaW50ZXIudGFyZ2V0KSB7Ci0gICAgICAgICAgICBzdHJ1Y3Qg
d3BlX2lucHV0X2F4aXNfZXZlbnQgZXZlbnQgPSB7IHdwZV9pbnB1dF9heGlzX2V2ZW50X3R5cGVf
bW90aW9uLAotICAgICAgICAgICAgICAgIHRpbWUsIHdpbmRvdy5tX3NlYXREYXRhLnBvaW50ZXIu
Y29vcmRzLmZpcnN0LCB3aW5kb3cubV9zZWF0RGF0YS5wb2ludGVyLmNvb3Jkcy5zZWNvbmQsIGF4
aXMsIC13bF9maXhlZF90b19pbnQodmFsdWUpLCB3aW5kb3cubW9kaWZpZXJzKCkgfTsKLSAgICAg
ICAgICAgIHdpbmRvdy5kaXNwYXRjaElucHV0QXhpc0V2ZW50KCZldmVudCk7Ci0gICAgICAgIH0K
LSAgICB9LAotICAgIG51bGxwdHIsIC8vIGZyYW1lCi0gICAgbnVsbHB0ciwgLy8gYXhpc19zb3Vy
Y2UKLSAgICBudWxscHRyLCAvLyBheGlzX3N0b3AKLSAgICBudWxscHRyLCAvLyBheGlzX2Rpc2Ny
ZXRlCi19OwotCi1jb25zdCBzdHJ1Y3Qgd2xfa2V5Ym9hcmRfbGlzdGVuZXIgV2luZG93Vmlld0Jh
Y2tlbmQ6OnNfa2V5Ym9hcmRMaXN0ZW5lciA9IHsKLSAgICAvLyBrZXltYXAKLSAgICBbXSh2b2lk
Kiwgc3RydWN0IHdsX2tleWJvYXJkKiwgdWludDMyX3QgZm9ybWF0LCBpbnQgZmQsIHVpbnQzMl90
IHNpemUpCi0gICAgewotICAgICAgICBpZiAoZm9ybWF0ICE9IFdMX0tFWUJPQVJEX0tFWU1BUF9G
T1JNQVRfWEtCX1YxKSB7Ci0gICAgICAgICAgICBjbG9zZShmZCk7Ci0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkKiBtYXBwaW5nID0gbW1hcChudWxscHRyLCBz
aXplLCBQUk9UX1JFQUQsIE1BUF9TSEFSRUQsIGZkLCAwKTsKLSAgICAgICAgaWYgKG1hcHBpbmcg
PT0gTUFQX0ZBSUxFRCkgewotICAgICAgICAgICAgY2xvc2UoZmQpOwotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgYXV0byogeGtiID0gd3BlX2lucHV0X3hrYl9jb250
ZXh0X2dldF9kZWZhdWx0KCk7Ci0gICAgICAgIGF1dG8qIGtleW1hcCA9IHhrYl9rZXltYXBfbmV3
X2Zyb21fc3RyaW5nKHdwZV9pbnB1dF94a2JfY29udGV4dF9nZXRfY29udGV4dCh4a2IpLCBzdGF0
aWNfY2FzdDxjaGFyKj4obWFwcGluZyksCi0gICAgICAgICAgICBYS0JfS0VZTUFQX0ZPUk1BVF9U
RVhUX1YxLCBYS0JfS0VZTUFQX0NPTVBJTEVfTk9fRkxBR1MpOwotICAgICAgICBtdW5tYXAobWFw
cGluZywgc2l6ZSk7Ci0gICAgICAgIGNsb3NlKGZkKTsKLQotICAgICAgICB3cGVfaW5wdXRfeGti
X2NvbnRleHRfc2V0X2tleW1hcCh4a2IsIGtleW1hcCk7Ci0gICAgICAgIHhrYl9rZXltYXBfdW5y
ZWYoa2V5bWFwKTsKLSAgICB9LAotICAgIC8vIGVudGVyCi0gICAgW10odm9pZCogZGF0YSwgc3Ry
dWN0IHdsX2tleWJvYXJkKiwgdWludDMyX3QgLypzZXJpYWwqLywgc3RydWN0IHdsX3N1cmZhY2Uq
IHN1cmZhY2UsIHN0cnVjdCB3bF9hcnJheSopCi0gICAgewotICAgICAgICBhdXRvJiB3aW5kb3cg
PSAqc3RhdGljX2Nhc3Q8V2luZG93Vmlld0JhY2tlbmQqPihkYXRhKTsKLSAgICAgICAgaWYgKHdp
bmRvdy5tX3N1cmZhY2UgPT0gc3VyZmFjZSkKLSAgICAgICAgICAgIHdpbmRvdy5tX3NlYXREYXRh
LmtleWJvYXJkLnRhcmdldCA9IHN1cmZhY2U7Ci0gICAgfSwKLSAgICAvLyBsZWF2ZQotICAgIFtd
KHZvaWQqIGRhdGEsIHN0cnVjdCB3bF9rZXlib2FyZCosIHVpbnQzMl90IC8qc2VyaWFsKi8sIHN0
cnVjdCB3bF9zdXJmYWNlKiBzdXJmYWNlKQotICAgIHsKLSAgICAgICAgYXV0byYgd2luZG93ID0g
KnN0YXRpY19jYXN0PFdpbmRvd1ZpZXdCYWNrZW5kKj4oZGF0YSk7Ci0gICAgICAgIGlmICh3aW5k
b3cubV9zdXJmYWNlID09IHN1cmZhY2UgJiYgd2luZG93Lm1fc2VhdERhdGEua2V5Ym9hcmQudGFy
Z2V0ID09IHN1cmZhY2UpCi0gICAgICAgICAgICB3aW5kb3cubV9zZWF0RGF0YS5rZXlib2FyZC50
YXJnZXQgPSBudWxscHRyOwotICAgIH0sCi0gICAgLy8ga2V5Ci0gICAgW10odm9pZCogZGF0YSwg
c3RydWN0IHdsX2tleWJvYXJkKiwgdWludDMyX3QgLypzZXJpYWwqLywgdWludDMyX3QgdGltZSwg
dWludDMyX3Qga2V5LCB1aW50MzJfdCBzdGF0ZSkKLSAgICB7Ci0gICAgICAgIGF1dG8mIHdpbmRv
dyA9ICpzdGF0aWNfY2FzdDxXaW5kb3dWaWV3QmFja2VuZCo+KGRhdGEpOwotCi0gICAgICAgIC8v
IElESy4KLSAgICAgICAga2V5ICs9IDg7Ci0KLSAgICAgICAgd2luZG93LmhhbmRsZUtleUV2ZW50
KGtleSwgc3RhdGUsIHRpbWUpOwotCi0gICAgICAgIGF1dG8mIHNlYXREYXRhID0gd2luZG93Lm1f
c2VhdERhdGE7Ci0gICAgICAgIGlmICghc2VhdERhdGEucmVwZWF0SW5mby5yYXRlKQotICAgICAg
ICAgICAgcmV0dXJuOwotCi0gICAgICAgIGF1dG8qIGtleW1hcCA9IHdwZV9pbnB1dF94a2JfY29u
dGV4dF9nZXRfa2V5bWFwKHdwZV9pbnB1dF94a2JfY29udGV4dF9nZXRfZGVmYXVsdCgpKTsKLQot
ICAgICAgICBpZiAoc3RhdGUgPT0gV0xfS0VZQk9BUkRfS0VZX1NUQVRFX1JFTEVBU0VECi0gICAg
ICAgICAgICAmJiBzZWF0RGF0YS5yZXBlYXREYXRhLmtleSA9PSBrZXkpIHsKLSAgICAgICAgICAg
IGlmIChzZWF0RGF0YS5yZXBlYXREYXRhLmV2ZW50U291cmNlKQotICAgICAgICAgICAgICAgIGdf
c291cmNlX3JlbW92ZShzZWF0RGF0YS5yZXBlYXREYXRhLmV2ZW50U291cmNlKTsKLSAgICAgICAg
ICAgIHNlYXREYXRhLnJlcGVhdERhdGEgPSB7IDAsIDAsIDAsIDAgfTsKLSAgICAgICAgfSBlbHNl
IGlmIChzdGF0ZSA9PSBXTF9LRVlCT0FSRF9LRVlfU1RBVEVfUFJFU1NFRAotICAgICAgICAgICAg
JiYga2V5bWFwICYmIHhrYl9rZXltYXBfa2V5X3JlcGVhdHMoa2V5bWFwLCBrZXkpKSB7Ci0KLSAg
ICAgICAgICAgIGlmIChzZWF0RGF0YS5yZXBlYXREYXRhLmV2ZW50U291cmNlKQotICAgICAgICAg
ICAgICAgIGdfc291cmNlX3JlbW92ZShzZWF0RGF0YS5yZXBlYXREYXRhLmV2ZW50U291cmNlKTsK
LQotICAgICAgICAgICAgYXV0byBzb3VyY2VJRCA9IGdfdGltZW91dF9hZGQoc2VhdERhdGEucmVw
ZWF0SW5mby5kZWxheSwgW10odm9pZCogZGF0YSkgLT4gZ2Jvb2xlYW4gewotICAgICAgICAgICAg
ICAgIGF1dG8mIHdpbmRvdyA9ICpzdGF0aWNfY2FzdDxXaW5kb3dWaWV3QmFja2VuZCo+KGRhdGEp
OwotICAgICAgICAgICAgICAgIGF1dG8mIHNlYXREYXRhID0gd2luZG93Lm1fc2VhdERhdGE7Ci0g
ICAgICAgICAgICAgICAgd2luZG93LmhhbmRsZUtleUV2ZW50KHNlYXREYXRhLnJlcGVhdERhdGEu
a2V5LCBzZWF0RGF0YS5yZXBlYXREYXRhLnN0YXRlLCBzZWF0RGF0YS5yZXBlYXREYXRhLnRpbWUp
OwotICAgICAgICAgICAgICAgIHNlYXREYXRhLnJlcGVhdERhdGEuZXZlbnRTb3VyY2UgPSBnX3Rp
bWVvdXRfYWRkKHNlYXREYXRhLnJlcGVhdEluZm8ucmF0ZSwgW10odm9pZCogZGF0YSkgLT4gZ2Jv
b2xlYW4gewotICAgICAgICAgICAgICAgICAgICBhdXRvJiB3aW5kb3cgPSAqc3RhdGljX2Nhc3Q8
V2luZG93Vmlld0JhY2tlbmQqPihkYXRhKTsKLSAgICAgICAgICAgICAgICAgICAgYXV0byYgc2Vh
dERhdGEgPSB3aW5kb3cubV9zZWF0RGF0YTsKLSAgICAgICAgICAgICAgICAgICAgd2luZG93Lmhh
bmRsZUtleUV2ZW50KHNlYXREYXRhLnJlcGVhdERhdGEua2V5LCBzZWF0RGF0YS5yZXBlYXREYXRh
LnN0YXRlLCBzZWF0RGF0YS5yZXBlYXREYXRhLnRpbWUpOwotICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gR19TT1VSQ0VfQ09OVElOVUU7Ci0gICAgICAgICAgICAgICAgfSwgZGF0YSk7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIEdfU09VUkNFX1JFTU9WRTsKLSAgICAgICAgICAgIH0sIGRhdGEp
OwotICAgICAgICAgICAgc2VhdERhdGEucmVwZWF0RGF0YSA9IHsga2V5LCB0aW1lLCBzdGF0ZSwg
c291cmNlSUQgfTsKLSAgICAgICAgfQotICAgIH0sCi0gICAgLy8gbW9kaWZpZXJzCi0gICAgW10o
dm9pZCogZGF0YSwgc3RydWN0IHdsX2tleWJvYXJkKiwgdWludDMyX3QgLypzZXJpYWwqLywgdWlu
dDMyX3QgZGVwcmVzc2VkTW9kcywgdWludDMyX3QgbGF0Y2hlZE1vZHMsIHVpbnQzMl90IGxvY2tl
ZE1vZHMsIHVpbnQzMl90IGdyb3VwKQotICAgIHsKLSAgICAgICAgYXV0byYga2V5Ym9hcmQgPSBz
dGF0aWNfY2FzdDxXaW5kb3dWaWV3QmFja2VuZCo+KGRhdGEpLT5tX3NlYXREYXRhLmtleWJvYXJk
OwotICAgICAgICBrZXlib2FyZC5tb2RpZmllcnMgPSB3cGVfaW5wdXRfeGtiX2NvbnRleHRfZ2V0
X21vZGlmaWVycyh3cGVfaW5wdXRfeGtiX2NvbnRleHRfZ2V0X2RlZmF1bHQoKSwgZGVwcmVzc2Vk
TW9kcywgbGF0Y2hlZE1vZHMsIGxvY2tlZE1vZHMsIGdyb3VwKTsKLSAgICB9LAotICAgIC8vIHJl
cGVhdF9pbmZvCi0gICAgW10odm9pZCogZGF0YSwgc3RydWN0IHdsX2tleWJvYXJkKiwgaW50MzJf
dCByYXRlLCBpbnQzMl90IGRlbGF5KQotICAgIHsKLSAgICAgICAgYXV0byYgc2VhdERhdGEgPSBz
dGF0aWNfY2FzdDxXaW5kb3dWaWV3QmFja2VuZCo+KGRhdGEpLT5tX3NlYXREYXRhOwotCi0gICAg
ICAgIGF1dG8mIHJlcGVhdEluZm8gPSBzZWF0RGF0YS5yZXBlYXRJbmZvOwotICAgICAgICByZXBl
YXRJbmZvID0geyByYXRlLCBkZWxheSB9OwotCi0gICAgICAgIC8vIEEgcmF0ZSBvZiB6ZXJvIGRp
c2FibGVzIGFueSByZXBlYXRpbmcuCi0gICAgICAgIGlmICghcmF0ZSkgewotICAgICAgICAgICAg
YXV0byYgcmVwZWF0RGF0YSA9IHNlYXREYXRhLnJlcGVhdERhdGE7Ci0gICAgICAgICAgICBpZiAo
cmVwZWF0RGF0YS5ldmVudFNvdXJjZSkgewotICAgICAgICAgICAgICAgIGdfc291cmNlX3JlbW92
ZShyZXBlYXREYXRhLmV2ZW50U291cmNlKTsKLSAgICAgICAgICAgICAgICByZXBlYXREYXRhID0g
eyAwLCAwLCAwLCAwIH07Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9LAotfTsKLQog
Y29uc3Qgc3RydWN0IHdsX3RvdWNoX2xpc3RlbmVyIFdpbmRvd1ZpZXdCYWNrZW5kOjpzX3RvdWNo
TGlzdGVuZXIgPSB7CiAgICAgLy8gZG93bgogICAgIFtdKHZvaWQqIGRhdGEsIHN0cnVjdCB3bF90
b3VjaCosIHVpbnQzMl90LCB1aW50MzJfdCB0aW1lLCBzdHJ1Y3Qgd2xfc3VyZmFjZSogc3VyZmFj
ZSwgaW50MzJfdCBpZCwgd2xfZml4ZWRfdCB4LCB3bF9maXhlZF90IHkpCkBAIC00MjAsNTAgKzIy
Myw2IEBAIGNvbnN0IHN0cnVjdCB3bF90b3VjaF9saXN0ZW5lciBXaW5kb3dWaWV3QmFja2VuZDo6
c190b3VjaExpc3RlbmVyID0gewogICAgIFtdKHZvaWQqLCBzdHJ1Y3Qgd2xfdG91Y2gqLCBpbnQz
Ml90LCB3bF9maXhlZF90KSB7IH0sCiB9OwogCi1jb25zdCBzdHJ1Y3Qgd2xfc2VhdF9saXN0ZW5l
ciBXaW5kb3dWaWV3QmFja2VuZDo6c19zZWF0TGlzdGVuZXIgPSB7Ci0gICAgLy8gY2FwYWJpbGl0
aWVzCi0gICAgW10odm9pZCogZGF0YSwgc3RydWN0IHdsX3NlYXQqIHNlYXQsIHVpbnQzMl90IGNh
cGFiaWxpdGllcykKLSAgICB7Ci0gICAgICAgIGF1dG8qIHdpbmRvdyA9IHN0YXRpY19jYXN0PFdp
bmRvd1ZpZXdCYWNrZW5kKj4oZGF0YSk7Ci0gICAgICAgIGF1dG8mIHNlYXREYXRhID0gd2luZG93
LT5tX3NlYXREYXRhOwotCi0gICAgICAgIC8vIFdMX1NFQVRfQ0FQQUJJTElUWV9QT0lOVEVSCi0g
ICAgICAgIGNvbnN0IGJvb2wgaGFzUG9pbnRlckNhcCA9IGNhcGFiaWxpdGllcyAmIFdMX1NFQVRf
Q0FQQUJJTElUWV9QT0lOVEVSOwotICAgICAgICBpZiAoaGFzUG9pbnRlckNhcCAmJiAhc2VhdERh
dGEucG9pbnRlci5vYmplY3QpIHsKLSAgICAgICAgICAgIHNlYXREYXRhLnBvaW50ZXIub2JqZWN0
ID0gd2xfc2VhdF9nZXRfcG9pbnRlcihzZWF0KTsKLSAgICAgICAgICAgIHdsX3BvaW50ZXJfYWRk
X2xpc3RlbmVyKHNlYXREYXRhLnBvaW50ZXIub2JqZWN0LCAmc19wb2ludGVyTGlzdGVuZXIsIHdp
bmRvdyk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCFoYXNQb2ludGVyQ2FwICYmIHNlYXREYXRh
LnBvaW50ZXIub2JqZWN0KSB7Ci0gICAgICAgICAgICB3bF9wb2ludGVyX2Rlc3Ryb3koc2VhdERh
dGEucG9pbnRlci5vYmplY3QpOwotICAgICAgICAgICAgc2VhdERhdGEucG9pbnRlci5vYmplY3Qg
PSBudWxscHRyOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gV0xfU0VBVF9DQVBBQklMSVRZX0tF
WUJPQVJECi0gICAgICAgIGNvbnN0IGJvb2wgaGFzS2V5Ym9hcmRDYXAgPSBjYXBhYmlsaXRpZXMg
JiBXTF9TRUFUX0NBUEFCSUxJVFlfS0VZQk9BUkQ7Ci0gICAgICAgIGlmIChoYXNLZXlib2FyZENh
cCAmJiAhc2VhdERhdGEua2V5Ym9hcmQub2JqZWN0KSB7Ci0gICAgICAgICAgICBzZWF0RGF0YS5r
ZXlib2FyZC5vYmplY3QgPSB3bF9zZWF0X2dldF9rZXlib2FyZChzZWF0KTsKLSAgICAgICAgICAg
IHdsX2tleWJvYXJkX2FkZF9saXN0ZW5lcihzZWF0RGF0YS5rZXlib2FyZC5vYmplY3QsICZzX2tl
eWJvYXJkTGlzdGVuZXIsIHdpbmRvdyk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCFoYXNLZXli
b2FyZENhcCAmJiBzZWF0RGF0YS5rZXlib2FyZC5vYmplY3QpIHsKLSAgICAgICAgICAgIHdsX2tl
eWJvYXJkX2Rlc3Ryb3koc2VhdERhdGEua2V5Ym9hcmQub2JqZWN0KTsKLSAgICAgICAgICAgIHNl
YXREYXRhLmtleWJvYXJkLm9iamVjdCA9IG51bGxwdHI7Ci0gICAgICAgIH0KLQotICAgICAgICAv
LyBXTF9TRUFUX0NBUEFCSUxJVFlfVE9VQ0gKLSAgICAgICAgY29uc3QgYm9vbCBoYXNUb3VjaENh
cCA9IGNhcGFiaWxpdGllcyAmIFdMX1NFQVRfQ0FQQUJJTElUWV9UT1VDSDsKLSAgICAgICAgaWYg
KGhhc1RvdWNoQ2FwICYmICFzZWF0RGF0YS50b3VjaC5vYmplY3QpIHsKLSAgICAgICAgICAgIHNl
YXREYXRhLnRvdWNoLm9iamVjdCA9IHdsX3NlYXRfZ2V0X3RvdWNoKHNlYXQpOwotICAgICAgICAg
ICAgd2xfdG91Y2hfYWRkX2xpc3RlbmVyKHNlYXREYXRhLnRvdWNoLm9iamVjdCwgJnNfdG91Y2hM
aXN0ZW5lciwgd2luZG93KTsKLSAgICAgICAgfQotICAgICAgICBpZiAoIWhhc1RvdWNoQ2FwICYm
IHNlYXREYXRhLnRvdWNoLm9iamVjdCkgewotICAgICAgICAgICAgd2xfdG91Y2hfZGVzdHJveShz
ZWF0RGF0YS50b3VjaC5vYmplY3QpOwotICAgICAgICAgICAgc2VhdERhdGEudG91Y2gub2JqZWN0
ID0gbnVsbHB0cjsKLSAgICAgICAgfQotICAgIH0sCi0gICAgLy8gbmFtZQotICAgIFtdKHZvaWQq
LCBzdHJ1Y3Qgd2xfc2VhdCosIGNvbnN0IGNoYXIqKSB7IH0KLX07Ci0KIGNvbnN0IHN0cnVjdCB6
eGRnX3N1cmZhY2VfdjZfbGlzdGVuZXIgV2luZG93Vmlld0JhY2tlbmQ6OnNfeGRnU3VyZmFjZUxp
c3RlbmVyID0gewogICAgIC8vIGNvbmZpZ3VyZQogICAgIFtdKHZvaWQqLCBzdHJ1Y3QgenhkZ19z
dXJmYWNlX3Y2KiBzdXJmYWNlLCB1aW50MzJfdCBzZXJpYWwpCkBAIC01MzMsMTUgKzI5MiwxNCBA
QCBXaW5kb3dWaWV3QmFja2VuZDo6V2luZG93Vmlld0JhY2tlbmQodWludDMyX3Qgd2lkdGgsIHVp
bnQzMl90IGhlaWdodCkKICAgICB9CiAKICAgICB7CisgICAgICAgIElucHV0UmVnaXN0cnk6OnNl
dERpc3BsYXkoY29ubmVjdGlvbi5kaXNwbGF5KTsKKwogICAgICAgICBhdXRvKiByZWdpc3RyeSA9
IHdsX2Rpc3BsYXlfZ2V0X3JlZ2lzdHJ5KGNvbm5lY3Rpb24uZGlzcGxheSk7CiAgICAgICAgIHds
X3JlZ2lzdHJ5X2FkZF9saXN0ZW5lcihyZWdpc3RyeSwgJnNfcmVnaXN0cnlMaXN0ZW5lciwgdGhp
cyk7CiAgICAgICAgIHdsX2Rpc3BsYXlfcm91bmR0cmlwKGNvbm5lY3Rpb24uZGlzcGxheSk7CiAK
ICAgICAgICAgaWYgKG1feGRnKQogICAgICAgICAgICAgenhkZ19zaGVsbF92Nl9hZGRfbGlzdGVu
ZXIobV94ZGcsICZzX3hkZ1dtQmFzZUxpc3RlbmVyLCBudWxscHRyKTsKLQotICAgICAgICBpZiAo
bV9zZWF0KQotICAgICAgICAgICAgd2xfc2VhdF9hZGRfbGlzdGVuZXIobV9zZWF0LCAmc19zZWF0
TGlzdGVuZXIsIHRoaXMpOwogICAgIH0KIAogICAgIG1fZXZlbnRTb3VyY2UgPSBnX3NvdXJjZV9u
ZXcoJkV2ZW50U291cmNlOjpzb3VyY2VGdW5jcywgc2l6ZW9mKEV2ZW50U291cmNlKSk7CkBAIC01
NzIsNiArMzMwLDggQEAgV2luZG93Vmlld0JhY2tlbmQ6OldpbmRvd1ZpZXdCYWNrZW5kKHVpbnQz
Ml90IHdpZHRoLCB1aW50MzJfdCBoZWlnaHQpCiAgICAgICAgIH0KICAgICB9CiAKKyAgICBJbnB1
dFJlZ2lzdHJ5OjphZGRJbnB1dFRhcmdldChtX3N1cmZhY2UsIHRoaXMpOworCiAgICAgbV9lZ2xX
aW5kb3cgPSB3bF9lZ2xfd2luZG93X2NyZWF0ZShtX3N1cmZhY2UsIG1fd2lkdGgsIG1faGVpZ2h0
KTsKIAogICAgIGF1dG8gY3JlYXRlUGxhdGZvcm1XaW5kb3dTdXJmYWNlID0KQEAgLTYzNiw2ICsz
OTYsOCBAQCBXaW5kb3dWaWV3QmFja2VuZDo6fldpbmRvd1ZpZXdCYWNrZW5kKCkKICAgICAgICAg
Z19zb3VyY2VfdW5yZWYobV9ldmVudFNvdXJjZSk7CiAgICAgfQogCisgICAgSW5wdXRSZWdpc3Ry
eTo6cmVtb3ZlSW5wdXRUYXJnZXQodGhpcyk7CisKICAgICBpZiAobV94ZGdUb3BsZXZlbCkKICAg
ICAgICAgenhkZ190b3BsZXZlbF92Nl9kZXN0cm95KG1feGRnVG9wbGV2ZWwpOwogCkBAIC02NTEs
MTkgKzQxMywyOCBAQCBXaW5kb3dWaWV3QmFja2VuZDo6fldpbmRvd1ZpZXdCYWNrZW5kKCkKICAg
ICBpZiAobV94ZGcpCiAgICAgICAgIHp4ZGdfc2hlbGxfdjZfZGVzdHJveShtX3hkZyk7CiAKLSAg
ICBpZiAobV9zZWF0KQotICAgICAgICB3bF9zZWF0X2Rlc3Ryb3kobV9zZWF0KTsKKyAgICAvLyBG
SVhNRSBTb3J0IG91dCB0aGlzIGRlc3RydWN0aW9uIGluIG11bHRpIHZpZXcgc3VwcG9ydC4KKyAg
ICAvKiBpZiAobV9zZWF0KSB7ICovCisgICAgLyogICAgIGlmIChtX3NlYXREYXRhLnBvaW50ZXIu
b2JqZWN0KSAqLworICAgIC8qICAgICAgICAgd2xfcG9pbnRlcl9yZWxlYXNlKG1fc2VhdERhdGEu
cG9pbnRlci5vYmplY3QpOyAqLworICAgIC8qICAgICBpZiAobV9zZWF0RGF0YS5rZXlib2FyZC5v
YmplY3QpICovCisgICAgLyogICAgICAgICB3bF9rZXlib2FyZF9yZWxlYXNlKG1fc2VhdERhdGEu
a2V5Ym9hcmQub2JqZWN0KTsgKi8KKyAgICAvKiAgICAgaWYgKG1fc2VhdERhdGEudG91Y2gub2Jq
ZWN0KSAqLworICAgIC8qICAgICAgICAgd2xfdG91Y2hfcmVsZWFzZShtX3NlYXREYXRhLnRvdWNo
Lm9iamVjdCk7ICovCisgICAgLyogICAgIHdsX3NlYXRfZGVzdHJveShtX3NlYXQpOyAqLworICAg
IC8qIH0gKi8KKwogCi0gICAgaWYgKG1fY29tcG9zaXRvcikKLSAgICAgICAgd2xfY29tcG9zaXRv
cl9kZXN0cm95KG1fY29tcG9zaXRvcik7CisgICAgLyogaWYgKG1fY29tcG9zaXRvcikgKi8KKyAg
ICAvKiAgICAgd2xfY29tcG9zaXRvcl9kZXN0cm95KG1fY29tcG9zaXRvcik7ICovCiAKLSAgICBp
ZiAobV9lZ2xTdXJmYWNlKQotICAgICAgICBlZ2xEZXN0cm95U3VyZmFjZShjb25uZWN0aW9uLmVn
bERpc3BsYXksIG1fZWdsU3VyZmFjZSk7CisgICAgLyogaWYgKG1fZWdsU3VyZmFjZSkgKi8KKyAg
ICAvKiAgICAgZWdsRGVzdHJveVN1cmZhY2UoY29ubmVjdGlvbi5lZ2xEaXNwbGF5LCBtX2VnbFN1
cmZhY2UpOyAqLwogCi0gICAgaWYgKG1fZGlzcGxheSkKLSAgICAgICAgd2xfZGlzcGxheV9kaXNj
b25uZWN0KG1fZGlzcGxheSk7CisgICAgLyogaWYgKG1fZGlzcGxheSkgKi8KKyAgICAvKiAgICAg
d2xfZGlzcGxheV9kaXNjb25uZWN0KG1fZGlzcGxheSk7ICovCiAKLSAgICBkZWluaXRpYWxpemUo
Y29ubmVjdGlvbi5lZ2xEaXNwbGF5KTsKKyAgICAvKiBkZWluaXRpYWxpemUoY29ubmVjdGlvbi5l
Z2xEaXNwbGF5KTsgKi8KIH0KIAogY29uc3Qgc3RydWN0IHdsX2NhbGxiYWNrX2xpc3RlbmVyIFdp
bmRvd1ZpZXdCYWNrZW5kOjpzX2ZyYW1lTGlzdGVuZXIgPSB7CmRpZmYgLS1naXQgYS9Ub29scy93
cGUvYmFja2VuZHMvV2luZG93Vmlld0JhY2tlbmQuaCBiL1Rvb2xzL3dwZS9iYWNrZW5kcy9XaW5k
b3dWaWV3QmFja2VuZC5oCmluZGV4IGRhZDc3NGQ4ZjMzY2M0ZGM2MTEyMWZkZTc5NjZjZDc3MzA1
YTU3NWQuLjA0M2Q0MTNmODBhNTAyNTc1MzU3NzZhYTI2YzMwNTU5YTFmMTUzYmYgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL3dwZS9iYWNrZW5kcy9XaW5kb3dWaWV3QmFja2VuZC5oCisrKyBiL1Rvb2xzL3dw
ZS9iYWNrZW5kcy9XaW5kb3dWaWV3QmFja2VuZC5oCkBAIC01NiwxMCArNTYsNyBAQCBwcml2YXRl
OgogCiAgICAgc3RhdGljIGNvbnN0IHN0cnVjdCB3bF9yZWdpc3RyeV9saXN0ZW5lciBzX3JlZ2lz
dHJ5TGlzdGVuZXI7CiAgICAgc3RhdGljIGNvbnN0IHN0cnVjdCB6eGRnX3NoZWxsX3Y2X2xpc3Rl
bmVyIHNfeGRnV21CYXNlTGlzdGVuZXI7Ci0gICAgc3RhdGljIGNvbnN0IHN0cnVjdCB3bF9wb2lu
dGVyX2xpc3RlbmVyIHNfcG9pbnRlckxpc3RlbmVyOwotICAgIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg
d2xfa2V5Ym9hcmRfbGlzdGVuZXIgc19rZXlib2FyZExpc3RlbmVyOwogICAgIHN0YXRpYyBjb25z
dCBzdHJ1Y3Qgd2xfdG91Y2hfbGlzdGVuZXIgc190b3VjaExpc3RlbmVyOwotICAgIHN0YXRpYyBj
b25zdCBzdHJ1Y3Qgd2xfc2VhdF9saXN0ZW5lciBzX3NlYXRMaXN0ZW5lcjsKICAgICBzdGF0aWMg
Y29uc3Qgc3RydWN0IHdsX2NhbGxiYWNrX2xpc3RlbmVyIHNfZnJhbWVMaXN0ZW5lcjsKICAgICBz
dGF0aWMgY29uc3Qgc3RydWN0IHp4ZGdfc3VyZmFjZV92Nl9saXN0ZW5lciBzX3hkZ1N1cmZhY2VM
aXN0ZW5lcjsKICAgICBzdGF0aWMgY29uc3Qgc3RydWN0IHp4ZGdfdG9wbGV2ZWxfdjZfbGlzdGVu
ZXIgc194ZGdUb3BsZXZlbExpc3RlbmVyOwpAQCAtMTI2LDYgKzEyMyw4IEBAIHByaXZhdGU6CiAg
ICAgdW5zaWduZWQgbV90ZXh0dXJlVW5pZm9ybSB7IDAgfTsKICAgICB1bnNpZ25lZCBtX3ZpZXdU
ZXh0dXJlIHsgMCB9OwogICAgIHN0cnVjdCB3cGVfZmRvX2VnbF9leHBvcnRlZF9pbWFnZSogbV9j
b21taXR0ZWRJbWFnZSB7IG51bGxwdHIgfTsKKworICAgIGZyaWVuZCBjbGFzcyBJbnB1dFJlZ2lz
dHJ5OwogfTsKIAogfSAvLyBXUEVUb29saW5nQmFja2VuZHMK
</data>

          </attachment>
      

    </bug>

</bugzilla>