<?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>134438</bug_id>
          
          <creation_ts>2014-06-29 18:47:39 -0700</creation_ts>
          <short_desc>[EFL] Remove netscape plugin implementation from WebCore</short_desc>
          <delta_ts>2014-06-29 21:44:01 -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>WebKit EFL</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>134087</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryuan Choi">ryuan.choi</reporter>
          <assigned_to name="Ryuan Choi">ryuan.choi</assigned_to>
          <cc>bunhere</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>rakuco</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1019267</commentid>
    <comment_count>0</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2014-06-29 18:47:39 -0700</bug_when>
    <thetext>PluginViewEfl.cpp and PluginPackageEfl.cpp are implemented only for WebKit1/Efl.

So, it can be removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1019268</commentid>
    <comment_count>1</comment_count>
      <attachid>234064</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2014-06-29 18:59:56 -0700</bug_when>
    <thetext>Created attachment 234064
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1019277</commentid>
    <comment_count>2</comment_count>
      <attachid>234064</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-06-29 21:43:55 -0700</bug_when>
    <thetext>Comment on attachment 234064
Patch

Clearing flags on attachment: 234064

Committed r170577: &lt;http://trac.webkit.org/changeset/170577&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1019278</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-06-29 21:44:01 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>234064</attachid>
            <date>2014-06-29 18:59:56 -0700</date>
            <delta_ts>2014-06-29 21:43:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-134438-20140630105934.patch</filename>
            <type>text/plain</type>
            <size>29970</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcwNTc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGI0NGE3NDk2NmM5MTM2
ODE2MjY1NmI2ZDVkNmQ3ODRiMGI5MjEwYy4uYTc3ODNhY2E0YTE5MGYwZDNlNjQyZDEzODljZTlm
N2QxZjEwZGQ5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE0LTA2LTI5ICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXSBSZW1vdmUg
bmV0c2NhcGUgcGx1Z2luIGltcGxlbWVudGF0aW9uIGZyb20gV2ViQ29yZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM0NDM4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmVjYXVzZSBXZWJLaXQxL0VmbCB3
YXMgZHJvcHBlZCwgUGx1Z2luUGFja2FnZUVmbC5jcHAgYW5kIFBsdWdpblZpZXdFZmwuY3BwIGFy
ZSBub3QgbmVjZXNzYXJ5LgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAg
ICogcGx1Z2lucy9lZmwvUGx1Z2luUGFja2FnZUVmbC5jcHA6IFJlbW92ZWQuCisgICAgICAgICog
cGx1Z2lucy9lZmwvUGx1Z2luVmlld0VmbC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGx1Z2lu
cy94MTEvUGx1Z2luVmlld1gxMS5jcHA6IFJlbW92ZWQuCisgICAgICAgIFRoaXMgZmlsZSBpcyB0
byBzaGFyZSBjb21tb24gY29kZSBiZXR3ZWVuIFdlYktpdDEvRWZsIGFuZCBXZWJLaXQxL0dUay4K
KyAgICAgICAgTm93LCBib3RoIHBvcnRzIGFyZSBkcm9wcGVkIFdlYktpdDEgc3VwcG9ydCBhbmQg
dGhlIEdUSyBwb3J0IGFscmVhZHkgcmVtb3ZlZCB0aGUgcmVsYXRlZCBmaWxlcyBhdCByMTY3MDE2
LgorCiAyMDE0LTA2LTI5ICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KIAogICAg
ICAgICBObyBuZWVkIHRvIGxhemlseSBpbml0aWFsaXplIFJlc291cmNlUmVzcG9uc2UgaW50ZXJu
YWxzIHdoZW4gYWNjZXNzaW5nIHRpbWluZyBkYXRhLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQpp
bmRleCA2NzViMWQxYWIyMmJiNDliN2MzNTBhZGQ4ZmE0ZTRkZjhlZDJkNWYxLi42MGM4YzYxZDBl
YjE2NjEyOGZmNjJjYTkyOWU1YjJlZThiYWJiMDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFr
ZQpAQCAtMTk3LDYgKzE5Nyw5IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBs
YXRmb3JtL3RleHQvZWZsL1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VFZmwuY3BwCiAKICAg
ICBwbGF0Zm9ybS90ZXh0L2VuY2hhbnQvVGV4dENoZWNrZXJFbmNoYW50LmNwcAorCisgICAgcGx1
Z2lucy9QbHVnaW5QYWNrYWdlTm9uZS5jcHAKKyAgICBwbHVnaW5zL1BsdWdpblZpZXdOb25lLmNw
cAogKQogCiBpZiAoRU5BQkxFX0JBVFRFUllfU1RBVFVTIE9SIChFRkxfUkVRVUlSRURfVkVSU0lP
TiBWRVJTSU9OX0xFU1MgMS44KSkKQEAgLTIwOCwxOSArMjExLDYgQEAgaWYgKEVOQUJMRV9CQVRU
RVJZX1NUQVRVUyBPUiAoRUZMX1JFUVVJUkVEX1ZFUlNJT04gVkVSU0lPTl9MRVNTIDEuOCkpCiAg
ICAgbGlzdChBUFBFTkQgV2ViQ29yZV9MSUJSQVJJRVMgJHtFX0RCVVNfRVVLSVRfTElCUkFSSUVT
fSkKIGVuZGlmICgpCiAKLWlmIChFTkFCTEVfTkVUU0NBUEVfUExVR0lOX0FQSSkKLSAgICBsaXN0
KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKLSAgICAgICAgcGx1Z2lucy9QbHVnaW5QYWNrYWdlLmNw
cAotICAgICAgICBwbHVnaW5zL1BsdWdpblZpZXcuY3BwCi0gICAgICAgIHBsdWdpbnMvbnBhcGku
Y3BwCi0KLSAgICAgICAgcGx1Z2lucy9lZmwvUGx1Z2luUGFja2FnZUVmbC5jcHAKLSAgICAgICAg
cGx1Z2lucy9lZmwvUGx1Z2luVmlld0VmbC5jcHAKLQotICAgICAgICBwbHVnaW5zL3gxMS9QbHVn
aW5WaWV3WDExLmNwcAotICAgICkKLWVuZGlmICgpCi0KIGxpc3QoQVBQRU5EIFdlYkNvcmVfVVNF
Ul9BR0VOVF9TVFlMRV9TSEVFVFMKICAgICAke1dFQkNPUkVfRElSfS9Nb2R1bGVzL21lZGlhY29u
dHJvbHMvbWVkaWFDb250cm9sc0FwcGxlLmNzcwogKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGx1Z2lucy9lZmwvUGx1Z2luUGFja2FnZUVmbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbHVn
aW5zL2VmbC9QbHVnaW5QYWNrYWdlRWZsLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMjc1ZDc0MzU1NjQ5YjVlYTAwZDEwYmI1OWZjN2YxYWRlMDcyNmI0ZS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5z
L2VmbC9QbHVnaW5QYWNrYWdlRWZsLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE2OCArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3IEFwcGxlIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3JhIEx0ZC4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwOCBOdWFudGkgTHRkLgotICogQ29weXJp
Z2h0IChDKSAyMDA4IElOZFQgLSBJbnN0aXR1dG8gTm9raWEgZGUgVGVjbm9sb2dpYQotICogQ29w
eXJpZ2h0IChDKSAyMDA5LTIwMTAgUHJvRlVTSU9OIGVtYmVkZGVkIHN5c3RlbXMKLSAqIENvcHly
aWdodCAoQykgMjAwOS0yMDExIFNhbXN1bmcgRWxlY3Ryb25pY3MKLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IlBsdWdpblBhY2thZ2UuaCIKLQotI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKLSNpbmNs
dWRlICJOb3RJbXBsZW1lbnRlZC5oIgotI2luY2x1ZGUgIlBsdWdpbkRhdGFiYXNlLmgiCi0jaW5j
bHVkZSAiUGx1Z2luRGVidWcuaCIKLSNpbmNsdWRlICJucHJ1bnRpbWVfaW1wbC5oIgotCi0jaW5j
bHVkZSA8RWluYS5oPgotI2luY2x1ZGUgPGRsZmNuLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWJvb2wgUGx1Z2luUGFja2FnZTo6ZmV0
Y2hJbmZvKCkKLXsKLSAgICBjb25zdCBjaGFyICplcnJtc2c7Ci0KLSAgICBpZiAoIWxvYWQoKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgTlBQX0dldFZhbHVlUHJvY1B0ciBnZXRWYWx1
ZSA9IDA7Ci0gICAgTlBfR2V0TUlNRURlc2NyaXB0aW9uRnVuY1B0ciBnZXRNSU1FRGVzY3JpcHRp
b24gPSAwOwotCi0gICAgZ2V0VmFsdWUgPSByZWludGVycHJldF9jYXN0PE5QUF9HZXRWYWx1ZVBy
b2NQdHI+KGVpbmFfbW9kdWxlX3N5bWJvbF9nZXQobV9tb2R1bGUsICJOUF9HZXRWYWx1ZSIpKTsK
LSAgICBpZiAoKGVycm1zZyA9IGRsZXJyb3IoKSkpIHsKLSAgICAgICAgRUlOQV9MT0dfRVJSKCJD
b3VsZCBub3QgZ2V0IHN5bWJvbCBOUF9HZXRWYWx1ZTogJXMiLCBlcnJtc2cpOwotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgZ2V0TUlNRURlc2NyaXB0aW9uID0gcmVpbnRlcnBy
ZXRfY2FzdDxOUF9HZXRNSU1FRGVzY3JpcHRpb25GdW5jUHRyPihlaW5hX21vZHVsZV9zeW1ib2xf
Z2V0KG1fbW9kdWxlLCAiTlBfR2V0TUlNRURlc2NyaXB0aW9uIikpOwotICAgIGlmICgoZXJybXNn
ID0gZGxlcnJvcigpKSkgewotICAgICAgICBFSU5BX0xPR19FUlIoIkNvdWxkIG5vdCBnZXQgc3lt
Ym9sIE5QX0dldE1JTUVEZXNjcmlwdGlvbjogJXMiLCBlcnJtc2cpOwotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgfQotCi0gICAgY2hhciogYnVmZmVyID0gMDsKLSAgICBOUEVycm9yIGVyciA9
IGdldFZhbHVlKDAsIE5QUFZwbHVnaW5OYW1lU3RyaW5nLCBzdGF0aWNfY2FzdDx2b2lkKj4oJmJ1
ZmZlcikpOwotICAgIGlmIChlcnIgIT0gTlBFUlJfTk9fRVJST1IpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICBtX25hbWUgPSBTdHJpbmc6OmZyb21VVEY4KGJ1ZmZlcik7Ci0KLSAgICBidWZm
ZXIgPSAwOwotICAgIGVyciA9IGdldFZhbHVlKDAsIE5QUFZwbHVnaW5EZXNjcmlwdGlvblN0cmlu
Zywgc3RhdGljX2Nhc3Q8dm9pZCo+KCZidWZmZXIpKTsKLSAgICBpZiAoZXJyICE9IE5QRVJSX05P
X0VSUk9SKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgbV9kZXNjcmlwdGlvbiA9IFN0cmlu
Zzo6ZnJvbVVURjgoYnVmZmVyKTsKLSAgICBkZXRlcm1pbmVNb2R1bGVWZXJzaW9uRnJvbURlc2Ny
aXB0aW9uKCk7Ci0KLSAgICBTdHJpbmcgZGVzY3JpcHRpb24gPSBTdHJpbmc6OmZyb21VVEY4KGdl
dE1JTUVEZXNjcmlwdGlvbigpKTsKLQotICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzOwotICAgIGRl
c2NyaXB0aW9uLnNwbGl0KFVDaGFyKCc7JyksIGZhbHNlLCB0eXBlcyk7Ci0KLSAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHR5cGVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIFZlY3RvcjxTdHJp
bmc+IG1pbWU7Ci0gICAgICAgIHR5cGVzW2ldLnNwbGl0KFVDaGFyKCc6JyksIHRydWUsIG1pbWUp
OwotCi0gICAgICAgIGlmICghbWltZS5pc0VtcHR5KCkgPiAwKSB7Ci0gICAgICAgICAgICBWZWN0
b3I8U3RyaW5nPiBleHRzOwotCi0gICAgICAgICAgICBpZiAobWltZS5zaXplKCkgPiAxKQotICAg
ICAgICAgICAgICAgIG1pbWVbMV0uc3BsaXQoVUNoYXIoJywnKSwgZmFsc2UsIGV4dHMpOwotCi0g
ICAgICAgICAgICBkZXRlcm1pbmVRdWlya3MobWltZVswXSk7Ci0gICAgICAgICAgICBtX21pbWVU
b0V4dGVuc2lvbnMuYWRkKG1pbWVbMF0sIGV4dHMpOwotCi0gICAgICAgICAgICBpZiAobWltZS5z
aXplKCkgPiAyKQotICAgICAgICAgICAgICAgIG1fbWltZVRvRGVzY3JpcHRpb25zLmFkZChtaW1l
WzBdLCBtaW1lWzJdKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQot
Ci11aW50MTZfdCBQbHVnaW5QYWNrYWdlOjpOUFZlcnNpb24oKSBjb25zdAotewotICAgIHJldHVy
biBOUFZFUlNfSEFTX1BMVUdJTl9USFJFQURfQVNZTkNfQ0FMTDsKLX0KLQotYm9vbCBQbHVnaW5Q
YWNrYWdlOjpsb2FkKCkKLXsKLSAgICBpZiAobV9pc0xvYWRlZCkgewotICAgICAgICArK21fbG9h
ZENvdW50OwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBtX21vZHVsZSA9IGVp
bmFfbW9kdWxlX25ldyhtX3BhdGgudXRmOCgpLmRhdGEoKSk7Ci0gICAgaWYgKCFtX21vZHVsZSkg
ewotICAgICAgICBFSU5BX0xPR19XQVJOKCIlcyBub3QgbG9hZGVkOiBlaW5hX21vZHVsZV9uZXco
KSBmYWlsZWQiLCBtX3BhdGgudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICB9Ci0gICAgaWYgKCFlaW5hX21vZHVsZV9sb2FkKG1fbW9kdWxlKSkgewotICAgICAgICBj
b25zdCBjaGFyKiBlcnJvck1lc3NhZ2UgPSBlaW5hX2Vycm9yX21zZ19nZXQoZWluYV9lcnJvcl9n
ZXQoKSk7Ci0gICAgICAgIEVJTkFfTE9HX1dBUk4oIiVzIG5vdCBsb2FkZWQ6ICVzIiwgbV9wYXRo
LnV0ZjgoKS5kYXRhKCksIGVycm9yTWVzc2FnZSA/IGVycm9yTWVzc2FnZSA6ICJOb25lIik7Ci0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBtX2lzTG9hZGVkID0gdHJ1ZTsKLQot
ICAgIE5QRXJyb3IgZXJyOwotCi0gICAgTlBfSW5pdGlhbGl6ZUZ1bmNQdHIgaW5pdGlhbGl6ZSA9
IHJlaW50ZXJwcmV0X2Nhc3Q8TlBfSW5pdGlhbGl6ZUZ1bmNQdHI+KGVpbmFfbW9kdWxlX3N5bWJv
bF9nZXQobV9tb2R1bGUsICJOUF9Jbml0aWFsaXplIikpOwotICAgIGlmICghaW5pdGlhbGl6ZSkg
ewotICAgICAgICBFSU5BX0xPR19FUlIoIkNvdWxkIG5vdCBnZXQgc3ltYm9sIE5QX0luaXRpYWxp
emUiKTsKLSAgICAgICAgZ290byBhYm9ydDsKLSAgICB9Ci0KLSAgICBtX05QUF9TaHV0ZG93biA9
IHJlaW50ZXJwcmV0X2Nhc3Q8TlBQX1NodXRkb3duUHJvY1B0cj4oZWluYV9tb2R1bGVfc3ltYm9s
X2dldChtX21vZHVsZSwgIk5QX1NodXRkb3duIikpOwotICAgIGlmICghbV9OUFBfU2h1dGRvd24p
IHsKLSAgICAgICAgRUlOQV9MT0dfRVJSKCJDb3VsZCBub3QgZ2V0IHN5bWJvbCBOUF9TaHV0ZG93
biIpOwotICAgICAgICBnb3RvIGFib3J0OwotICAgIH0KLQotICAgIG1lbXNldCgmbV9wbHVnaW5G
dW5jcywgMCwgc2l6ZW9mKG1fcGx1Z2luRnVuY3MpKTsKLSAgICBtX3BsdWdpbkZ1bmNzLnNpemUg
PSBzaXplb2YobV9wbHVnaW5GdW5jcyk7Ci0KLSAgICBpbml0aWFsaXplQnJvd3NlckZ1bmNzKCk7
Ci0KLSNpZiBkZWZpbmVkKFhQX1VOSVgpCi0gICAgZXJyID0gaW5pdGlhbGl6ZSgmbV9icm93c2Vy
RnVuY3MsICZtX3BsdWdpbkZ1bmNzKTsKLSNlbHNlCi0gICAgZXJyID0gaW5pdGlhbGl6ZSgmbV9i
cm93c2VyRnVuY3MpOwotI2VuZGlmCi0gICAgaWYgKGVyciAhPSBOUEVSUl9OT19FUlJPUikKLSAg
ICAgICAgZ290byBhYm9ydDsKLQotICAgICsrbV9sb2FkQ291bnQ7Ci0gICAgcmV0dXJuIHRydWU7
Ci0KLWFib3J0OgotICAgIEVJTkFfTE9HX0RCRygiZmFpbGVkIHRvIGxvYWQgcGx1Z2luLCB1bmxv
YWQgaXQgd2l0aG91dCBzaHV0dGluZyBpdCBkb3duLiIpOwotICAgIHVubG9hZFdpdGhvdXRTaHV0
ZG93bigpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGx1Z2lucy9lZmwvUGx1Z2luVmlld0VmbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbHVn
aW5zL2VmbC9QbHVnaW5WaWV3RWZsLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MzNlOWEzMzVkZDk1NWQ2MjUzYjdmMjhmOThiNGIxNzViYTIzMDRhZS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL2Vm
bC9QbHVnaW5WaWV3RWZsLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyMCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3JhIEx0ZC4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwOCBJTmRUIC0gSW5zdGl0dXRvIE5va2lhIGRlIFRl
Y25vbG9naWEKLSAqIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFByb0ZVU0lPTiBlbWJlZGRlZCBz
eXN0ZW1zCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNCBTYW1zdW5nIEVsZWN0cm9uaWNzCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlICJQbHVnaW5WaWV3LmgiCi0KLSNpbmNsdWRlICJGcmFtZS5oIgotI2lu
Y2x1ZGUgIkZyYW1lVmlldy5oIgotI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgotI2luY2x1ZGUgIkhU
TUxQbHVnSW5FbGVtZW50LmgiCi0jaW5jbHVkZSAiTW91c2VFdmVudC5oIgotI2luY2x1ZGUgIk5v
dEltcGxlbWVudGVkLmgiCi0jaW5jbHVkZSAiUGx1Z2luUGFja2FnZS5oIgotI2luY2x1ZGUgIlNj
cmlwdENvbnRyb2xsZXIuaCIKLSNpbmNsdWRlICJucHJ1bnRpbWVfaW1wbC5oIgotI2luY2x1ZGUg
InJ1bnRpbWUvSlNMb2NrLmgiCi0jaW5jbHVkZSAicnVudGltZS9PcGVyYXRpb25zLmgiCi0jaW5j
bHVkZSA8RWNvcmVfRXZhcy5oPgotI2luY2x1ZGUgPEVjb3JlX1guaD4KLSNpbmNsdWRlIDxFdmFz
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsK
LQotV2luZG93IFBsdWdpblZpZXc6OmdldFJvb3RXaW5kb3coRnJhbWUqIHBhcmVudEZyYW1lKQot
ewotICAgIEV2YXMqIGV2YXMgPSBldmFzX29iamVjdF9ldmFzX2dldChwYXJlbnRGcmFtZS0+dmll
dygpLT5ldmFzT2JqZWN0KCkpOwotICAgIEVjb3JlX0V2YXMqIGVjb3JlRXZhcyA9IGVjb3JlX2V2
YXNfZWNvcmVfZXZhc19nZXQoZXZhcyk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFdpbmRvdz4o
ZWNvcmVfZXZhc193aW5kb3dfZ2V0KGVjb3JlRXZhcykpOwotfQotCi12b2lkIFBsdWdpblZpZXc6
OmhhbmRsZUtleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCopCi17Ci0gICAgbm90SW1wbGVtZW50
ZWQoKTsKLX0KLQotdm9pZCBQbHVnaW5WaWV3OjpoYW5kbGVNb3VzZUV2ZW50KE1vdXNlRXZlbnQq
IGV2ZW50KQotewotICAgIE5QRXZlbnQgeEV2ZW50OwotCi0jaWYgZGVmaW5lZChYUF9VTklYKQot
ICAgIGNvbnN0IEludFJlY3QgcmVjdCA9IHBhcmVudCgpLT5jb250ZW50c1RvU2NyZWVuKEludFJl
Y3QoMCwgMCwgZXZlbnQtPm9mZnNldFgoKSwgZXZlbnQtPm9mZnNldFkoKSkpOwotICAgIGNvbnN0
IGludCBldmVudFggPSByZWN0LndpZHRoKCk7Ci0gICAgY29uc3QgaW50IGV2ZW50WSA9IHJlY3Qu
aGVpZ2h0KCk7Ci0gICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlbW92
ZUV2ZW50Ci0gICAgICAgICAgICB8fCBldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3Vz
ZW91dEV2ZW50Ci0gICAgICAgICAgICB8fCBldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5t
b3VzZW92ZXJFdmVudCkgewotICAgICAgICB4RXZlbnQudHlwZSA9IE1vdGlvbk5vdGlmeTsKLSAg
ICAgICAgeEV2ZW50Lnhtb3Rpb24ueCA9IGV2ZW50WDsKLSAgICAgICAgeEV2ZW50Lnhtb3Rpb24u
eSA9IGV2ZW50WTsKLSAgICB9IGVsc2UgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygp
Lm1vdXNlZG93bkV2ZW50KSB7Ci0gICAgICAgIHhFdmVudC50eXBlID0gQnV0dG9uUHJlc3M7Ci0g
ICAgICAgIHhFdmVudC54YnV0dG9uLnggPSBldmVudFg7Ci0gICAgICAgIHhFdmVudC54YnV0dG9u
LnkgPSBldmVudFk7Ci0gICAgICAgIHhFdmVudC54YnV0dG9uLmJ1dHRvbiA9IGV2ZW50LT5idXR0
b24oKSArIDE7IC8vIERPTSBNb3VzZUV2ZW50IGNvdW50cyBmcm9tIDAsIGFuZCBYQnV0dG9uRXZl
bnQgZnJvbSAxLgotICAgIH0gZWxzZSBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCku
bW91c2V1cEV2ZW50KSB7Ci0gICAgICAgIHhFdmVudC50eXBlID0gQnV0dG9uUmVsZWFzZTsKLSAg
ICAgICAgeEV2ZW50LnhidXR0b24ueCA9IGV2ZW50WDsKLSAgICAgICAgeEV2ZW50LnhidXR0b24u
eSA9IGV2ZW50WTsKLSAgICAgICAgeEV2ZW50LnhidXR0b24uYnV0dG9uID0gZXZlbnQtPmJ1dHRv
bigpICsgMTsKLSAgICB9IGVsc2UKLSAgICAgICAgcmV0dXJuOwotI2VuZGlmCi0KLSAgICBpZiAo
ZGlzcGF0Y2hOUEV2ZW50KHhFdmVudCkpCi0gICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxl
ZCgpOwotfQotCi12b2lkIFBsdWdpblZpZXc6OnNldEZvY3VzKGJvb2wgZm9jdXNlZCkKLXsKLSAg
ICBpZiAoZm9jdXNlZCkKLSAgICAgICAgbV9lbGVtZW50LT5kb2N1bWVudCgpLnNldEZvY3VzZWRF
bGVtZW50KG1fZWxlbWVudCk7Ci0KLSAgICBXaWRnZXQ6OnNldEZvY3VzKGZvY3VzZWQpOwotfQot
Ci12b2lkIFBsdWdpblZpZXc6OnNob3coKQotewotICAgIHNldFNlbGZWaXNpYmxlKHRydWUpOwot
Ci0gICAgV2lkZ2V0OjpzaG93KCk7Ci19Ci0KLXZvaWQgUGx1Z2luVmlldzo6aGlkZSgpCi17Ci0g
ICAgc2V0U2VsZlZpc2libGUoZmFsc2UpOwotCi0gICAgV2lkZ2V0OjpoaWRlKCk7Ci19Ci0KLXZv
aWQgUGx1Z2luVmlldzo6c2V0UGFyZW50VmlzaWJsZShib29sIHZpc2libGUpCi17Ci0gICAgV2lk
Z2V0OjpzZXRQYXJlbnRWaXNpYmxlKHZpc2libGUpOwotfQotCi1OUEVycm9yIFBsdWdpblZpZXc6
OmhhbmRsZVBvc3RSZWFkRmlsZShWZWN0b3I8Y2hhcj4mIGJ1ZmZlciwgdWludDMyX3QgbGVuLCBj
b25zdCBjaGFyKiBidWYpCi17Ci0gICAgU3RyaW5nIGZpbGVuYW1lKGJ1ZiwgbGVuKTsKLQotICAg
IGlmIChmaWxlbmFtZS5zdGFydHNXaXRoKCJmaWxlOi8vLyIpKQotI2lmIGRlZmluZWQoWFBfVU5J
WCkKLSAgICAgICAgZmlsZW5hbWUgPSBmaWxlbmFtZS5zdWJzdHJpbmcoNyk7Ci0jZWxzZQotICAg
ICAgICBmaWxlbmFtZSA9IGZpbGVuYW1lLnN1YnN0cmluZyg4KTsKLSNlbmRpZgotCi0gICAgbG9u
ZyBsb25nIHNpemU7Ci0gICAgaWYgKCFnZXRGaWxlU2l6ZShmaWxlbmFtZSwgc2l6ZSkpCi0gICAg
ICAgIHJldHVybiBOUEVSUl9GSUxFX05PVF9GT1VORDsKLQotICAgIEZJTEUqIGZpbGVIYW5kbGUg
PSBmb3BlbihmaWxlbmFtZS51dGY4KCkuZGF0YSgpLCAiciIpOwotICAgIGlmICghZmlsZUhhbmRs
ZSkKLSAgICAgICAgcmV0dXJuIE5QRVJSX0ZJTEVfTk9UX0ZPVU5EOwotCi0gICAgYnVmZmVyLnJl
c2l6ZShzaXplKTsKLSAgICBpbnQgYnl0ZXNSZWFkID0gZnJlYWQoYnVmZmVyLmRhdGEoKSwgMSwg
c2l6ZSwgZmlsZUhhbmRsZSk7Ci0KLSAgICBmY2xvc2UoZmlsZUhhbmRsZSk7Ci0KLSAgICBpZiAo
Ynl0ZXNSZWFkIDw9IDApCi0gICAgICAgIHJldHVybiBOUEVSUl9GSUxFX05PVF9GT1VORDsKLQot
ICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsKLX0KLQotYm9vbCBQbHVnaW5WaWV3OjpwbGF0Zm9y
bUdldFZhbHVlU3RhdGljKE5QTlZhcmlhYmxlIHZhcmlhYmxlLCB2b2lkKiB2YWx1ZSwgTlBFcnJv
ciogcmVzdWx0KQotewotICAgIHN3aXRjaCAodmFyaWFibGUpIHsKLSAgICBjYXNlIE5QTlZUb29s
a2l0OgotICAgICAgICAqc3RhdGljX2Nhc3Q8dWludDMyX3QqPih2YWx1ZSkgPSAwOwotICAgICAg
ICAqcmVzdWx0ID0gTlBFUlJfTk9fRVJST1I7Ci0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAg
Y2FzZSBOUE5WU3VwcG9ydHNYRW1iZWRCb29sOgotICAgICAgICAqc3RhdGljX2Nhc3Q8TlBCb29s
Kj4odmFsdWUpID0gZmFsc2U7Ci0gICAgICAgICpyZXN1bHQgPSBOUEVSUl9OT19FUlJPUjsKLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBjYXNlIE5QTlZqYXZhc2NyaXB0RW5hYmxlZEJvb2w6
Ci0gICAgICAgICpzdGF0aWNfY2FzdDxOUEJvb2wqPih2YWx1ZSkgPSB0cnVlOwotICAgICAgICAq
cmVzdWx0ID0gTlBFUlJfTk9fRVJST1I7Ci0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgY2Fz
ZSBOUE5WU3VwcG9ydHNXaW5kb3dsZXNzOgotICAgICAgICAqc3RhdGljX2Nhc3Q8TlBCb29sKj4o
dmFsdWUpID0gdHJ1ZTsKLSAgICAgICAgKnJlc3VsdCA9IE5QRVJSX05PX0VSUk9SOwotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICB9Ci19Ci0KLWJvb2wgUGx1Z2luVmlldzo6cGxhdGZvcm1HZXRWYWx1ZShOUE5WYXJpYWJsZSB2
YXJpYWJsZSwgdm9pZCogdmFsdWUsIE5QRXJyb3IqIHJlc3VsdCkKLXsKLSAgICBpZiAoIXZhbHVl
IHx8ICFyZXN1bHQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHN3aXRjaCAodmFyaWFi
bGUpIHsKLSAgICBjYXNlIE5QTlZ4RGlzcGxheToKLSAgICAgICAgKnN0YXRpY19jYXN0PHZvaWQq
Kj4odmFsdWUpID0gc3RhdGljX2Nhc3Q8RGlzcGxheSo+KGVjb3JlX3hfZGlzcGxheV9nZXQoKSk7
Ci0gICAgICAgICpyZXN1bHQgPSBOUEVSUl9OT19FUlJPUjsKLSAgICAgICAgcmV0dXJuIHRydWU7
Ci0KLSAgICBjYXNlIE5QTlZ4dEFwcENvbnRleHQ6Ci0gICAgICAgICpyZXN1bHQgPSBOUEVSUl9H
RU5FUklDX0VSUk9SOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIGNhc2UgTlBOVldpbmRv
d05QT2JqZWN0OiB7Ci0gICAgICAgIGlmIChtX2lzSmF2YVNjcmlwdFBhdXNlZCkgewotICAgICAg
ICAgICAgKnJlc3VsdCA9IE5QRVJSX0dFTkVSSUNfRVJST1I7Ci0gICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIE5QT2JqZWN0KiB3aW5kb3dTY3JpcHRPYmplY3Qg
PSBtX3BhcmVudEZyYW1lLT5zY3JpcHQoKS53aW5kb3dTY3JpcHROUE9iamVjdCgpOwotCi0gICAg
ICAgIC8vIFJldHVybiB2YWx1ZSBpcyBleHBlY3RlZCB0byBiZSByZXRhaW5lZCwgYXMgZGVzY3Jp
YmVkIGhlcmU6IDxodHRwOi8vd3d3Lm1vemlsbGEub3JnL3Byb2plY3RzL3BsdWdpbi9ucHJ1bnRp
bWUuaHRtbD4KLSAgICAgICAgaWYgKHdpbmRvd1NjcmlwdE9iamVjdCkKLSAgICAgICAgICAgIF9O
UE5fUmV0YWluT2JqZWN0KHdpbmRvd1NjcmlwdE9iamVjdCk7Ci0KLSAgICAgICAgKnN0YXRpY19j
YXN0PHZvaWQqKj4odmFsdWUpID0gd2luZG93U2NyaXB0T2JqZWN0OwotCi0gICAgICAgICpyZXN1
bHQgPSBOUEVSUl9OT19FUlJPUjsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAg
Y2FzZSBOUE5WUGx1Z2luRWxlbWVudE5QT2JqZWN0OiB7Ci0gICAgICAgIGlmIChtX2lzSmF2YVNj
cmlwdFBhdXNlZCkgewotICAgICAgICAgICAgKnJlc3VsdCA9IE5QRVJSX0dFTkVSSUNfRVJST1I7
Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIE5QT2JqZWN0
KiBwbHVnaW5TY3JpcHRPYmplY3QgPSAwOwotCi0gICAgICAgIGlmIChtX2VsZW1lbnQtPmhhc1Rh
Z05hbWUoYXBwbGV0VGFnKSB8fCBtX2VsZW1lbnQtPmhhc1RhZ05hbWUoZW1iZWRUYWcpIHx8IG1f
ZWxlbWVudC0+aGFzVGFnTmFtZShvYmplY3RUYWcpKQotICAgICAgICAgICAgcGx1Z2luU2NyaXB0
T2JqZWN0ID0gc3RhdGljX2Nhc3Q8SFRNTFBsdWdJbkVsZW1lbnQqPihtX2VsZW1lbnQpLT5nZXRO
UE9iamVjdCgpOwotCi0gICAgICAgIC8vIFJldHVybiB2YWx1ZSBpcyBleHBlY3RlZCB0byBiZSBy
ZXRhaW5lZCwgYXMgZGVzY3JpYmVkIGhlcmU6IDxodHRwOi8vd3d3Lm1vemlsbGEub3JnL3Byb2pl
Y3RzL3BsdWdpbi9ucHJ1bnRpbWUuaHRtbD4KLSAgICAgICAgaWYgKHBsdWdpblNjcmlwdE9iamVj
dCkKLSAgICAgICAgICAgIF9OUE5fUmV0YWluT2JqZWN0KHBsdWdpblNjcmlwdE9iamVjdCk7Ci0K
LSAgICAgICAgKnN0YXRpY19jYXN0PHZvaWQqKj4odmFsdWUpID0gcGx1Z2luU2NyaXB0T2JqZWN0
OwotCi0gICAgICAgICpyZXN1bHQgPSBOUEVSUl9OT19FUlJPUjsKLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgfQotCi0gICAgY2FzZSBOUE5WbmV0c2NhcGVXaW5kb3c6IHsKLSAgICAgICAgRXZh
cyogZXZhcyA9IGV2YXNfb2JqZWN0X2V2YXNfZ2V0KG1fcGFyZW50RnJhbWUtPnZpZXcoKS0+ZXZh
c09iamVjdCgpKTsKLSAgICAgICAgaWYgKCFldmFzKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgICAgIEVjb3JlX0V2YXMqIGVjb3JlRXZhcyA9IGVjb3JlX2V2YXNfZWNvcmVfZXZh
c19nZXQoZXZhcyk7Ci0gICAgICAgICpzdGF0aWNfY2FzdDxYSUQqPih2YWx1ZSkgPSBzdGF0aWNf
Y2FzdDxXaW5kb3c+KGVjb3JlX2V2YXNfd2luZG93X2dldChlY29yZUV2YXMpKTsKLSAgICAgICAg
KnJlc3VsdCA9IE5QRVJSX05PX0VSUk9SOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0K
LSAgICBjYXNlIE5QTlZUb29sa2l0OgotICAgICAgICBpZiAobV9wbHVnaW4tPnF1aXJrcygpLmNv
bnRhaW5zKFBsdWdpblF1aXJrUmVxdWlyZXNHdGtUb29sS2l0KSkgewotICAgICAgICAgICAgKnN0
YXRpY19jYXN0PHVpbnQzMl90Kj4odmFsdWUpID0gMjsKLSAgICAgICAgICAgICpyZXN1bHQgPSBO
UEVSUl9OT19FUlJPUjsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgfQotfQotCi12b2lkIFBsdWdpblZpZXc6OmludmFsaWRhdGVSZWN0KGNvbnN0IEludFJlY3Qm
IHJlY3QpCi17Ci0gICAgaW52YWxpZGF0ZVdpbmRvd2xlc3NQbHVnaW5SZWN0KHJlY3QpOwotfQot
Ci1EaXNwbGF5KiBQbHVnaW5WaWV3OjpnZXRQbHVnaW5EaXNwbGF5KEZyYW1lKikKLXsKLSAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8RGlzcGxheSo+KGVjb3JlX3hfZGlzcGxheV9nZXQoKSk7Ci19Ci0K
LXZvaWQgUGx1Z2luVmlldzo6Zm9yY2VSZWRyYXcoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7
Ci19Ci0KLWJvb2wgUGx1Z2luVmlldzo6cGxhdGZvcm1TdGFydCgpCi17Ci0gICAgQVNTRVJUKG1f
aXNTdGFydGVkKTsKLSAgICBBU1NFUlQobV9zdGF0dXMgPT0gUGx1Z2luU3RhdHVzTG9hZGVkU3Vj
Y2Vzc2Z1bGx5KTsKLQotICAgIGlmIChtX3BsdWdpbi0+cGx1Z2luRnVuY3MoKS0+Z2V0dmFsdWUp
IHsKLSAgICAgICAgUGx1Z2luVmlldzo6c2V0Q3VycmVudFBsdWdpblZpZXcodGhpcyk7Ci0gICAg
ICAgIEpTQzo6SlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKEpTRE9NV2luZG93QmFz
ZTo6Y29tbW9uVk0oKSk7Ci0gICAgICAgIHNldENhbGxpbmdQbHVnaW4odHJ1ZSk7Ci0gICAgICAg
IG1fcGx1Z2luLT5wbHVnaW5GdW5jcygpLT5nZXR2YWx1ZShtX2luc3RhbmNlLCBOUFBWcGx1Z2lu
TmVlZHNYRW1iZWQsICZtX25lZWRzWEVtYmVkKTsKLSAgICAgICAgc2V0Q2FsbGluZ1BsdWdpbihm
YWxzZSk7Ci0gICAgICAgIFBsdWdpblZpZXc6OnNldEN1cnJlbnRQbHVnaW5WaWV3KDApOwotICAg
IH0KLQotICAgIHNldFBsYXRmb3JtV2lkZ2V0KDApOwotICAgIG1fcGx1Z2luRGlzcGxheSA9IGdl
dFBsdWdpbkRpc3BsYXkobnVsbHB0cik7Ci0KLSAgICBzaG93KCk7Ci0KLSAgICBOUFNldFdpbmRv
d0NhbGxiYWNrU3RydWN0KiB3cyA9IG5ldyBOUFNldFdpbmRvd0NhbGxiYWNrU3RydWN0KCk7Ci0g
ICAgd3MtPnR5cGUgPSAwOwotCi0gICAgbV9ucFdpbmRvdy50eXBlID0gTlBXaW5kb3dUeXBlRHJh
d2FibGU7Ci0gICAgbV9ucFdpbmRvdy53aW5kb3cgPSAwOyAvLyBOb3QgdXNlZD8KLQotICAgIFNj
cmVlbiogc2NyZWVuID0gc3RhdGljX2Nhc3Q8U2NyZWVuKj4oZWNvcmVfeF9kZWZhdWx0X3NjcmVl
bl9nZXQoKSk7Ci0gICAgbV92aXN1YWwgPSBzdGF0aWNfY2FzdDxWaXN1YWwqPihlY29yZV94X2Rl
ZmF1bHRfdmlzdWFsX2dldChtX3BsdWdpbkRpc3BsYXksIHNjcmVlbikpOwotICAgIG1fY29sb3Jt
YXAgPSBlY29yZV94X2RlZmF1bHRfY29sb3JtYXBfZ2V0KG1fcGx1Z2luRGlzcGxheSwgc2NyZWVu
KTsKLQotICAgIHdzLT5kZXB0aCA9IGVjb3JlX3hfZGVmYXVsdF9kZXB0aF9nZXQobV9wbHVnaW5E
aXNwbGF5LCBzY3JlZW4pOwotICAgIHdzLT5kaXNwbGF5ID0gbV9wbHVnaW5EaXNwbGF5OwotICAg
IHdzLT52aXN1YWwgPSBtX3Zpc3VhbDsKLSAgICB3cy0+Y29sb3JtYXAgPSBtX2NvbG9ybWFwOwot
Ci0gICAgbV9ucFdpbmRvdy53c19pbmZvID0gd3M7Ci0KLSAgICAvLyBGSVhNRTogcmVtb3ZlIGlu
IGZhdm9yIG9mIG51bGwgZXZlbnRzLCBsaWtlIG1hYyBwb3J0PwotICAgIGlmICghKG1fcGx1Z2lu
LT5xdWlya3MoKS5jb250YWlucyhQbHVnaW5RdWlya0RlZmVyRmlyc3RTZXRXaW5kb3dDYWxsKSkp
Ci0gICAgICAgIHVwZGF0ZVBsdWdpbldpZGdldCgpOyAvLyB3YXM6IHNldE5QV2luZG93SWZOZWVk
ZWQoKSwgYnV0IHRoaXMgZG9lc24ndCBwcm9kdWNlIDB4MCByZWN0cyBhdCBmaXJzdCBnbwotCi0g
ICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgUGx1Z2luVmlldzo6cGxhdGZvcm1EZXN0cm95KCkK
LXsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGx1Z2lucy94MTEvUGx1Z2luVmlld1gxMS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5z
L3gxMS9QbHVnaW5WaWV3WDExLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzc5
YmI2YWI4YmYwMTUzOWYxNDczNTY5OGJlMjljNjUyYzg1MTBkZC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL3gxMS9Q
bHVnaW5WaWV3WDExLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDMzMCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDA2LCAyMDA3IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3JhIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMCBLYWthaSwgSW5jLiA8YnJpYW5Aa2FrYWku
Y29tPgotICogQ29weXJpZ2h0IChDKSAyMDEwIElnYWxpYSBTLkwuCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTQgU2Ftc3VuZyBFbGVjdHJvbmljcwotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
LSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlBsdWdpblZpZXcu
aCIKLQotI2luY2x1ZGUgIkZyYW1lVmlldy5oIgotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5o
IgotI2luY2x1ZGUgIkpTRE9NV2luZG93QmFzZS5oIgotI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4
dENhaXJvLmgiCi0jaW5jbHVkZSAiUGx1Z2luUGFja2FnZS5oIgotI2luY2x1ZGUgIlJlZlB0ckNh
aXJvLmgiCi0jaW5jbHVkZSA8WDExL1guaD4KLSNpbmNsdWRlIDxjYWlyby14bGliLmg+Ci0jaW5j
bHVkZSA8cnVudGltZS9KU0xvY2suaD4KLQotI2lmIFBMQVRGT1JNKEdUSykKLSNkZWZpbmUgU3Ry
aW5nIFh0U3RyaW5nVHlwZQotI2luY2x1ZGUgImd0azJ4dGJpbi5oIgotI2VuZGlmCi0KLSNkZWZp
bmUgQm9vbCBpbnQgLy8gdGhpcyBiZWNhbWUgdW5kZWZpbmVkIGluIG5wcnVudGltZV9pbnRlcm5h
bC5oCi0jZGVmaW5lIE5vbmUgMEwgLy8gZGl0dG8KLSNkZWZpbmUgU3RhdHVzIGludCAvLyBkaXR0
bwotI2luY2x1ZGUgPFgxMS9leHRlbnNpb25zL1hyZW5kZXIuaD4KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1ib29sIFBsdWdpblZpZXc6OmRpc3BhdGNoTlBFdmVudChOUEV2ZW50JiBldmVudCkK
LXsKLSAgICBpZiAoIW1fcGx1Z2luLT5wbHVnaW5GdW5jcygpLT5ldmVudCkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgUGx1Z2luVmlldzo6c2V0Q3VycmVudFBsdWdpblZpZXcodGhpcyk7
Ci0gICAgSlNDOjpKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoSlNET01XaW5kb3dC
YXNlOjpjb21tb25WTSgpKTsKLSAgICBzZXRDYWxsaW5nUGx1Z2luKHRydWUpOwotCi0gICAgYm9v
bCBhY2NlcHRlZCA9IG1fcGx1Z2luLT5wbHVnaW5GdW5jcygpLT5ldmVudChtX2luc3RhbmNlLCAm
ZXZlbnQpOwotCi0gICAgc2V0Q2FsbGluZ1BsdWdpbihmYWxzZSk7Ci0gICAgUGx1Z2luVmlldzo6
c2V0Q3VycmVudFBsdWdpblZpZXcoMCk7Ci0gICAgcmV0dXJuIGFjY2VwdGVkOwotfQotCi12b2lk
IFBsdWdpblZpZXc6OnVwZGF0ZVBsdWdpbldpZGdldCgpCi17Ci0gICAgaWYgKCFwYXJlbnQoKSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgQVNTRVJUKHBhcmVudCgpLT5pc0ZyYW1lVmlldygpKTsK
LSAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IHRvRnJhbWVWaWV3KHBhcmVudCgpKTsKLQotICAg
IEludFJlY3Qgb2xkV2luZG93UmVjdCA9IG1fd2luZG93UmVjdDsKLSAgICBJbnRSZWN0IG9sZENs
aXBSZWN0ID0gbV9jbGlwUmVjdDsKLQotICAgIG1fd2luZG93UmVjdCA9IEludFJlY3QoZnJhbWVW
aWV3LT5jb250ZW50c1RvV2luZG93KGZyYW1lUmVjdCgpLmxvY2F0aW9uKCkpLCBmcmFtZVJlY3Qo
KS5zaXplKCkpOwotICAgIG1fY2xpcFJlY3QgPSB3aW5kb3dDbGlwUmVjdCgpOwotICAgIG1fY2xp
cFJlY3QubW92ZSgtbV93aW5kb3dSZWN0LngoKSwgLW1fd2luZG93UmVjdC55KCkpOwotCi0gICAg
aWYgKG1fd2luZG93UmVjdCA9PSBvbGRXaW5kb3dSZWN0ICYmIG1fY2xpcFJlY3QgPT0gb2xkQ2xp
cFJlY3QpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChtX3N0YXR1cyAhPSBQbHVnaW5TdGF0
dXNMb2FkZWRTdWNjZXNzZnVsbHkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICghbV9pc1dp
bmRvd2VkICYmICFtX3dpbmRvd1JlY3QuaXNFbXB0eSgpKSB7Ci0gICAgICAgIERpc3BsYXkqIGRp
c3BsYXkgPSBnZXRQbHVnaW5EaXNwbGF5KG51bGxwdHIpOwotICAgICAgICBpZiAobV9kcmF3YWJs
ZSkKLSAgICAgICAgICAgIFhGcmVlUGl4bWFwKGRpc3BsYXksIG1fZHJhd2FibGUpOwotICAgICAg
ICAgICAgCi0gICAgICAgIG1fZHJhd2FibGUgPSBYQ3JlYXRlUGl4bWFwKGRpc3BsYXksIGdldFJv
b3RXaW5kb3cobV9wYXJlbnRGcmFtZS5nZXQoKSksCi0gICAgICAgICAgICBtX3dpbmRvd1JlY3Qu
d2lkdGgoKSwgbV93aW5kb3dSZWN0LmhlaWdodCgpLAotICAgICAgICAgICAgKChOUFNldFdpbmRv
d0NhbGxiYWNrU3RydWN0KiltX25wV2luZG93LndzX2luZm8pLT5kZXB0aCk7Ci0gICAgICAgIFhT
eW5jKGRpc3BsYXksIGZhbHNlKTsgLy8gbWFrZSBzdXJlIHRoYXQgdGhlIHNlcnZlciBrbm93cyBh
Ym91dCB0aGUgRHJhd2FibGUKLSAgICB9Ci0KLSAgICBzZXROUFdpbmRvd0lmTmVlZGVkKCk7Ci19
Ci0KLXZvaWQgUGx1Z2luVmlldzo6aGFuZGxlRm9jdXNJbkV2ZW50KCkKLXsKLSAgICBpZiAoIW1f
aXNTdGFydGVkIHx8IG1fc3RhdHVzICE9IFBsdWdpblN0YXR1c0xvYWRlZFN1Y2Nlc3NmdWxseSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgWEV2ZW50IG5wRXZlbnQ7Ci0gICAgaW5pdFhFdmVudCgm
bnBFdmVudCk7Ci0KLSAgICBYRm9jdXNDaGFuZ2VFdmVudCYgZXZlbnQgPSBucEV2ZW50Lnhmb2N1
czsKLSAgICBldmVudC50eXBlID0gOTsgLy8gRm9jdXNJbiBnZXRzIHVuc2V0IHNvbWV3aGVyZQot
ICAgIGV2ZW50Lm1vZGUgPSBOb3RpZnlOb3JtYWw7Ci0gICAgZXZlbnQuZGV0YWlsID0gTm90aWZ5
RGV0YWlsTm9uZTsKLQotICAgIGRpc3BhdGNoTlBFdmVudChucEV2ZW50KTsKLX0KLQotdm9pZCBQ
bHVnaW5WaWV3OjppbnZhbGlkYXRlUmVjdChOUFJlY3QqIHJlY3QpCi17Ci0gICAgaWYgKCFyZWN0
KSB7Ci0gICAgICAgIGludmFsaWRhdGUoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IEludFJlY3QgcihyZWN0LT5sZWZ0LCByZWN0LT50b3AsIHJlY3QtPnJpZ2h0IC0gcmVjdC0+bGVm
dCwgcmVjdC0+Ym90dG9tIC0gcmVjdC0+dG9wKTsKLSAgICBpbnZhbGlkYXRlV2luZG93bGVzc1Bs
dWdpblJlY3Qocik7Ci19Ci0KLXZvaWQgUGx1Z2luVmlldzo6aW52YWxpZGF0ZVJlZ2lvbihOUFJl
Z2lvbikKLXsKLSAgICBpbnZhbGlkYXRlKCk7Ci19Ci0KLXZvaWQgUGx1Z2luVmlldzo6aGFuZGxl
Rm9jdXNPdXRFdmVudCgpCi17Ci0gICAgaWYgKCFtX2lzU3RhcnRlZCB8fCBtX3N0YXR1cyAhPSBQ
bHVnaW5TdGF0dXNMb2FkZWRTdWNjZXNzZnVsbHkpCi0gICAgICAgIHJldHVybjsKLQotICAgIFhF
dmVudCBucEV2ZW50OwotICAgIGluaXRYRXZlbnQoJm5wRXZlbnQpOwotCi0gICAgWEZvY3VzQ2hh
bmdlRXZlbnQmIGV2ZW50ID0gbnBFdmVudC54Zm9jdXM7Ci0gICAgZXZlbnQudHlwZSA9IDEwOyAv
LyBGb2N1c091dCBnZXRzIHVuc2V0IHNvbWV3aGVyZQotICAgIGV2ZW50Lm1vZGUgPSBOb3RpZnlO
b3JtYWw7Ci0gICAgZXZlbnQuZGV0YWlsID0gTm90aWZ5RGV0YWlsTm9uZTsKLQotICAgIGRpc3Bh
dGNoTlBFdmVudChucEV2ZW50KTsKLX0KLQotdm9pZCBQbHVnaW5WaWV3Ojppbml0WEV2ZW50KFhF
dmVudCogeEV2ZW50KQotewotICAgIG1lbXNldCh4RXZlbnQsIDAsIHNpemVvZihYRXZlbnQpKTsK
LQotICAgIHhFdmVudC0+eGFueS5zZXJpYWwgPSAwOyAvLyB3ZSBhcmUgdW5hd2FyZSBvZiB0aGUg
bGFzdCByZXF1ZXN0IHByb2Nlc3NlZCBieSBYIFNlcnZlcgotICAgIHhFdmVudC0+eGFueS5zZW5k
X2V2ZW50ID0gZmFsc2U7Ci0gICAgeEV2ZW50LT54YW55LmRpc3BsYXkgPSBnZXRQbHVnaW5EaXNw
bGF5KG1fcGFyZW50RnJhbWUuZ2V0KCkpOwotCi0gICAgLy8gTW96aWxsYSBhbHNvIHNlbmRzIE5v
bmUgaGVyZSBmb3Igd2luZG93bGVzcyBwbHVnaW5zLiBTZWUgbnNPYmplY3RGcmFtZS5jcHAgaW4g
dGhlIE1vemlsbGEgc291cmNlcy4KLSAgICAvLyBUaGlzIG1ldGhvZCBhbHNvIHNldHMgdXAgRm9j
dXNJbiBhbmQgRm9jdXNPdXQgZXZlbnRzIGZvciB3aW5kb3dzIHBsdWdpbnMsIGJ1dCBNb3ppbGxh
IGRvZXNuJ3QKLSAgICAvLyBldmVuIHNlbmQgdGhlc2UgdHlwZXMgb2YgZXZlbnRzIHRvIHdpbmRv
d2VkIHBsdWdpbnMuIEluIHRoZSBmdXR1cmUsIGl0IG1heSBiZSBnb29kIHRvIG9ubHkKLSAgICAv
LyBzZW5kIHRoZW0gdG8gd2luZG93bGVzcyBwbHVnaW5zLgotICAgIHhFdmVudC0+eGFueS53aW5k
b3cgPSBOb25lOwotfQotCi12b2lkIFBsdWdpblZpZXc6OnBhaW50KEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCkKLXsKLSAgICBpZiAoIW1faXNTdGFydGVkIHx8
IG1fc3RhdHVzICE9IFBsdWdpblN0YXR1c0xvYWRlZFN1Y2Nlc3NmdWxseSkgewotICAgICAgICBw
YWludE1pc3NpbmdQbHVnaW5JY29uKGNvbnRleHQsIHJlY3QpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgaWYgKGNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgc2V0TlBXaW5kb3dJZk5lZWRlZCgpOwotCi0gICAgaWYgKG1faXNXaW5kb3dl
ZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFtX2RyYXdhYmxlKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBEaXNwbGF5KiBkaXNwbGF5ID0gZ2V0UGx1Z2luRGlzcGxheShudWxscHRyKTsK
LSAgICBjb25zdCBib29sIHN5bmNYID0gbV9wbHVnaW5EaXNwbGF5ICYmIG1fcGx1Z2luRGlzcGxh
eSAhPSBkaXNwbGF5OwotCi0gICAgSW50UmVjdCBleHBvc2VkUmVjdChyZWN0KTsKLSAgICBleHBv
c2VkUmVjdC5pbnRlcnNlY3QoZnJhbWVSZWN0KCkpOwotICAgIGV4cG9zZWRSZWN0Lm1vdmUoLWZy
YW1lUmVjdCgpLngoKSwgLWZyYW1lUmVjdCgpLnkoKSk7Ci0KLSAgICBSZWZQdHI8Y2Fpcm9fc3Vy
ZmFjZV90PiBkcmF3YWJsZVN1cmZhY2UgPSBhZG9wdFJlZihjYWlyb194bGliX3N1cmZhY2VfY3Jl
YXRlKGRpc3BsYXksCi0gICAgICAgIG1fZHJhd2FibGUsIG1fdmlzdWFsLCBtX3dpbmRvd1JlY3Qu
d2lkdGgoKSwgbV93aW5kb3dSZWN0LmhlaWdodCgpKSk7Ci0KLSAgICBpZiAobV9pc1RyYW5zcGFy
ZW50KSB7Ci0gICAgICAgIC8vIElmIHdlIGhhdmUgYSAzMiBiaXQgZHJhd2FibGUgYW5kIHRoZSBw
bHVnaW4gd2FudHMgdHJhbnNwYXJlbmN5LAotICAgICAgICAvLyB3ZSdsbCBjbGVhciB0aGUgZXhw
b3NlZCBhcmVhIHRvIHRyYW5zcGFyZW50IGZpcnN0LiBPdGhlcndpc2UsCi0gICAgICAgIC8vIHdl
J2QgZW5kIHVwIHdpdGgganVuayBpbiB0aGVyZSBmcm9tIHRoZSBsYXN0IHBhaW50LCBvciwgd29y
c2UsCi0gICAgICAgIC8vIHVuaW5pdGlhbGl6ZWQgZGF0YS4KLSAgICAgICAgUmVmUHRyPGNhaXJv
X3Q+IGNyID0gYWRvcHRSZWYoY2Fpcm9fY3JlYXRlKGRyYXdhYmxlU3VyZmFjZS5nZXQoKSkpOwot
Ci0gICAgICAgIGlmICghKGNhaXJvX3N1cmZhY2VfZ2V0X2NvbnRlbnQoZHJhd2FibGVTdXJmYWNl
LmdldCgpKSAmIENBSVJPX0NPTlRFTlRfQUxQSEEpKSB7Ci0gICAgICAgICAgICAvLyBBdHRlbXB0
IHRvIGZha2UgaXQgd2hlbiB3ZSBkb24ndCBoYXZlIGFuIGFscGhhIGNoYW5uZWwgb24gb3VyCi0g
ICAgICAgICAgICAvLyBwaXhtYXAuIElmIHRoYXQncyBub3QgcG9zc2libGUsIGF0IGxlYXN0IGNs
ZWFyIHRoZSB3aW5kb3cgdG8KLSAgICAgICAgICAgIC8vIGF2b2lkIGRyYXdpbmcgYXJ0aWZhY3Rz
LgotCi0gICAgICAgICAgICAvLyBUaGlzIFdvdWxkIG5vdCB3b3JrIHdpdGhvdXQgZG91YmxlIGJ1
ZmZlcmluZywgYnV0IHdlIGFsd2F5cyB1c2UgaXQuCi0gICAgICAgICAgICBjYWlyb19zZXRfc291
cmNlX3N1cmZhY2UoY3IuZ2V0KCksIGNhaXJvX2dldF9ncm91cF90YXJnZXQoY29udGV4dC0+cGxh
dGZvcm1Db250ZXh0KCktPmNyKCkpLAotICAgICAgICAgICAgICAgIC1tX3dpbmRvd1JlY3QueCgp
LCAtbV93aW5kb3dSZWN0LnkoKSk7Ci0gICAgICAgICAgICBjYWlyb19zZXRfb3BlcmF0b3IoY3Iu
Z2V0KCksIENBSVJPX09QRVJBVE9SX1NPVVJDRSk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAg
ICAgY2Fpcm9fc2V0X29wZXJhdG9yKGNyLmdldCgpLCBDQUlST19PUEVSQVRPUl9DTEVBUik7Ci0K
LSAgICAgICAgY2Fpcm9fcmVjdGFuZ2xlKGNyLmdldCgpLCBleHBvc2VkUmVjdC54KCksIGV4cG9z
ZWRSZWN0LnkoKSwKLSAgICAgICAgICAgIGV4cG9zZWRSZWN0LndpZHRoKCksIGV4cG9zZWRSZWN0
LmhlaWdodCgpKTsKLSAgICAgICAgY2Fpcm9fZmlsbChjci5nZXQoKSk7Ci0gICAgfQotCi0gICAg
WEV2ZW50IHhldmVudDsKLSAgICBtZW1zZXQoJnhldmVudCwgMCwgc2l6ZW9mKFhFdmVudCkpOwot
ICAgIFhHcmFwaGljc0V4cG9zZUV2ZW50JiBleHBvc2VFdmVudCA9IHhldmVudC54Z3JhcGhpY3Nl
eHBvc2U7Ci0gICAgZXhwb3NlRXZlbnQudHlwZSA9IEdyYXBoaWNzRXhwb3NlOwotICAgIGV4cG9z
ZUV2ZW50LmRpc3BsYXkgPSBkaXNwbGF5OwotICAgIGV4cG9zZUV2ZW50LmRyYXdhYmxlID0gbV9k
cmF3YWJsZTsKLSAgICBleHBvc2VFdmVudC54ID0gZXhwb3NlZFJlY3QueCgpOwotICAgIGV4cG9z
ZUV2ZW50LnkgPSBleHBvc2VkUmVjdC55KCk7Ci0gICAgZXhwb3NlRXZlbnQud2lkdGggPSBleHBv
c2VkUmVjdC54KCkgKyBleHBvc2VkUmVjdC53aWR0aCgpOyAvLyBmbGFzaCBidWc/IGl0IHRoaW5r
cyB3aWR0aCBpcyB0aGUgcmlnaHQgaW4gdHJhbnNwYXJlbnQgbW9kZQotICAgIGV4cG9zZUV2ZW50
LmhlaWdodCA9IGV4cG9zZWRSZWN0LnkoKSArIGV4cG9zZWRSZWN0LmhlaWdodCgpOyAvLyBmbGFz
aCBidWc/IGl0IHRoaW5rcyBoZWlnaHQgaXMgdGhlIGJvdHRvbSBpbiB0cmFuc3BhcmVudCBtb2Rl
Ci0KLSAgICBkaXNwYXRjaE5QRXZlbnQoeGV2ZW50KTsKLQotICAgIGlmIChzeW5jWCkKLSAgICAg
ICAgWFN5bmMobV9wbHVnaW5EaXNwbGF5LCBmYWxzZSk7IC8vIHN5bmMgY2hhbmdlcyBieSBwbHVn
aW4KLQotICAgIGNhaXJvX3QqIGNyID0gY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCk7
Ci0gICAgY2Fpcm9fc2F2ZShjcik7Ci0KLSAgICBjYWlyb19zZXRfc291cmNlX3N1cmZhY2UoY3Is
IGRyYXdhYmxlU3VyZmFjZS5nZXQoKSwgZnJhbWVSZWN0KCkueCgpLCBmcmFtZVJlY3QoKS55KCkp
OwotCi0gICAgY2Fpcm9fcmVjdGFuZ2xlKGNyLCBmcmFtZVJlY3QoKS54KCkgKyBleHBvc2VkUmVj
dC54KCksIGZyYW1lUmVjdCgpLnkoKSArIGV4cG9zZWRSZWN0LnkoKSwgZXhwb3NlZFJlY3Qud2lk
dGgoKSwgZXhwb3NlZFJlY3QuaGVpZ2h0KCkpOwotICAgIGNhaXJvX2NsaXAoY3IpOwotCi0gICAg
aWYgKG1faXNUcmFuc3BhcmVudCkKLSAgICAgICAgY2Fpcm9fc2V0X29wZXJhdG9yKGNyLCBDQUlS
T19PUEVSQVRPUl9PVkVSKTsKLSAgICBlbHNlCi0gICAgICAgIGNhaXJvX3NldF9vcGVyYXRvcihj
ciwgQ0FJUk9fT1BFUkFUT1JfU09VUkNFKTsKLSAgICBjYWlyb19wYWludChjcik7Ci0KLSAgICBj
YWlyb19yZXN0b3JlKGNyKTsKLX0KLQotdm9pZCBQbHVnaW5WaWV3OjpzZXRQYXJlbnQoU2Nyb2xs
VmlldyogcGFyZW50KQotewotICAgIFdpZGdldDo6c2V0UGFyZW50KHBhcmVudCk7Ci0KLSAgICBp
ZiAocGFyZW50KQotICAgICAgICBpbml0KCk7Ci19Ci0KLXZvaWQgUGx1Z2luVmlldzo6c2V0TlBX
aW5kb3dSZWN0KGNvbnN0IEludFJlY3QmKQotewotICAgIGlmICghbV9pc1dpbmRvd2VkKQotICAg
ICAgICBzZXROUFdpbmRvd0lmTmVlZGVkKCk7Ci19Ci0KLXZvaWQgUGx1Z2luVmlldzo6c2V0TlBX
aW5kb3dJZk5lZWRlZCgpCi17Ci0gICAgaWYgKCFtX2lzU3RhcnRlZCB8fCAhcGFyZW50KCkgfHwg
IW1fcGx1Z2luLT5wbHVnaW5GdW5jcygpLT5zZXR3aW5kb3cpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIC8vIElmIHRoZSBwbHVnaW4gZGlkbid0IGxvYWQgc3VjZXNzZnVsbHksIG5vIHBvaW50IGlu
IGNhbGxpbmcgc2V0d2luZG93Ci0gICAgaWYgKG1fc3RhdHVzICE9IFBsdWdpblN0YXR1c0xvYWRl
ZFN1Y2Nlc3NmdWxseSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gT24gVW5peCwgb25seSBj
YWxsIHBsdWdpbidzIHNldHdpbmRvdyBpZiBpdCdzIGZ1bGwtcGFnZSBvciB3aW5kb3dlZAotICAg
IGlmIChtX21vZGUgIT0gTlBfRlVMTCAmJiBtX21vZGUgIT0gTlBfRU1CRUQpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIC8vIENoZWNrIGlmIHRoZSBwbGF0Zm9ybVBsdWdpbldpZGdldCBzdGlsbCBl
eGlzdHMKLSAgICBpZiAobV9pc1dpbmRvd2VkICYmICFwbGF0Zm9ybVBsdWdpbldpZGdldCgpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobV9jbGlwUmVjdC5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgLy8gSWYgd2lkdGggb3IgaGVpZ2h0IGFyZSBudWxsLCBzZXQgdGhlIGNsaXBSZWN0IHRvIG51
bGwsCi0gICAgICAgIC8vIGluZGljYXRpbmcgdGhhdCB0aGUgcGx1Z2luIGlzIG5vdCB2aXNpYmxl
L3Njcm9sbGVkIG91dC4KLSAgICAgICAgbV9ucFdpbmRvdy5jbGlwUmVjdC5sZWZ0ID0gMDsKLSAg
ICAgICAgbV9ucFdpbmRvdy5jbGlwUmVjdC5yaWdodCA9IDA7Ci0gICAgICAgIG1fbnBXaW5kb3cu
Y2xpcFJlY3QudG9wID0gMDsKLSAgICAgICAgbV9ucFdpbmRvdy5jbGlwUmVjdC5ib3R0b20gPSAw
OwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIENsaXBwaW5nIHJlY3RhbmdsZSBvZiB0aGUgcGx1
Zy1pbjsgdGhlIG9yaWdpbiBpcyB0aGUgdG9wIGxlZnQgY29ybmVyIG9mIHRoZSBkcmF3YWJsZSBv
ciB3aW5kb3cuIAotICAgICAgICBtX25wV2luZG93LmNsaXBSZWN0LmxlZnQgPSBtX25wV2luZG93
LnggKyBtX2NsaXBSZWN0LngoKTsKLSAgICAgICAgbV9ucFdpbmRvdy5jbGlwUmVjdC50b3AgPSBt
X25wV2luZG93LnkgKyBtX2NsaXBSZWN0LnkoKTsKLSAgICAgICAgbV9ucFdpbmRvdy5jbGlwUmVj
dC5yaWdodCA9IG1fbnBXaW5kb3cueCArIG1fY2xpcFJlY3QueCgpICsgbV9jbGlwUmVjdC53aWR0
aCgpOwotICAgICAgICBtX25wV2luZG93LmNsaXBSZWN0LmJvdHRvbSA9IG1fbnBXaW5kb3cueSAr
IG1fY2xpcFJlY3QueSgpICsgbV9jbGlwUmVjdC5oZWlnaHQoKTsKLSAgICB9Ci0KLSAgICAvLyBG
TEFTSCBXT1JLQVJPVU5EOiBPbmx5IHNldCBpbml0aWFsbHkuIE11bHRpcGxlIGNhbGxzIHRvCi0g
ICAgLy8gc2V0TlBXaW5kb3coKSBjYXVzZSB0aGUgcGx1Z2luIHRvIGNyYXNoIGluIHdpbmRvd2Vk
IG1vZGUuCi0gICAgaWYgKCFtX3BsdWdpbi0+cXVpcmtzKCkuY29udGFpbnMoUGx1Z2luUXVpcmtE
b250Q2FsbFNldFdpbmRvd01vcmVUaGFuT25jZSkgfHwgIW1faXNXaW5kb3dlZAotICAgICAgICB8
fCBtX25wV2luZG93LndpZHRoID09IHN0YXRpY19jYXN0PHVpbnQzMl90PigtMSkgfHwgbV9ucFdp
bmRvdy5oZWlnaHQgPT0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KC0xKSkgewotICAgICAgICBtX25w
V2luZG93LndpZHRoID0gbV93aW5kb3dSZWN0LndpZHRoKCk7Ci0gICAgICAgIG1fbnBXaW5kb3cu
aGVpZ2h0ID0gbV93aW5kb3dSZWN0LmhlaWdodCgpOwotICAgIH0KLQotICAgIFBsdWdpblZpZXc6
OnNldEN1cnJlbnRQbHVnaW5WaWV3KHRoaXMpOwotICAgIEpTQzo6SlNMb2NrOjpEcm9wQWxsTG9j
a3MgZHJvcEFsbExvY2tzKEpTRE9NV2luZG93QmFzZTo6Y29tbW9uVk0oKSk7Ci0gICAgc2V0Q2Fs
bGluZ1BsdWdpbih0cnVlKTsKLSAgICBtX3BsdWdpbi0+cGx1Z2luRnVuY3MoKS0+c2V0d2luZG93
KG1faW5zdGFuY2UsICZtX25wV2luZG93KTsKLSAgICBzZXRDYWxsaW5nUGx1Z2luKGZhbHNlKTsK
LSAgICBQbHVnaW5WaWV3OjpzZXRDdXJyZW50UGx1Z2luVmlldygwKTsKLQotICAgIGlmICghbV9p
c1dpbmRvd2VkKQotICAgICAgICByZXR1cm47Ci0KLSNpZiBQTEFURk9STShHVEspCi0gICAgLy8g
R3RrWHRCaW4gd2lsbCBjYWxsIGd0a193aWRnZXRfc2l6ZV9hbGxvY2F0ZSwgc28gd2UgZG9uJ3Qg
bmVlZCB0byBkbyBpdCBoZXJlLgotICAgIGlmICghbV9uZWVkc1hFbWJlZCkgewotICAgICAgICBn
dGtfeHRiaW5fc2V0X3Bvc2l0aW9uKEdUS19YVEJJTihwbGF0Zm9ybVBsdWdpbldpZGdldCgpKSwg
bV93aW5kb3dSZWN0LngoKSwgbV93aW5kb3dSZWN0LnkoKSk7Ci0gICAgICAgIGd0a194dGJpbl9y
ZXNpemUocGxhdGZvcm1QbHVnaW5XaWRnZXQoKSwgbV93aW5kb3dSZWN0LndpZHRoKCksIG1fd2lu
ZG93UmVjdC5oZWlnaHQoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBtX2RlbGF5
ZWRBbGxvY2F0aW9uID0gbV93aW5kb3dSZWN0OwotICAgIHVwZGF0ZVdpZGdldEFsbG9jYXRpb25B
bmRDbGlwKCk7Ci0jZW5kaWYKLX0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
      

    </bug>

</bugzilla>