<?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>18892</bug_id>
          
          <creation_ts>2008-05-05 03:34:03 -0700</creation_ts>
          <short_desc>[gtk][qt] Some NPAPI plugins need info before creating a PluginView</short_desc>
          <delta_ts>2008-05-19 03:15:13 -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>Plug-ins</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk, Qt</keywords>
          <priority>P3</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="marcoil">marc.ordinasillopis</reporter>
          <assigned_to name="marcoil">marc.ordinasillopis</assigned_to>
          <cc>andersca</cc>
    
    <cc>chris</cc>
    
    <cc>gb.devel</cc>
    
    <cc>hausmann</cc>
    
    <cc>jhoneycutt</cc>
    
    <cc>pierre-luc.beaudoin</cc>
    
    <cc>voyageursp</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>79666</commentid>
    <comment_count>0</comment_count>
    <who name="marcoil">marc.ordinasillopis</who>
    <bug_when>2008-05-05 03:34:03 -0700</bug_when>
    <thetext>Plugins like Gnash, nspluginwrapper and Adobe Acrobat call NPN_UserAgent and NPN_GetValue (with variables NPNVxDisplay, NPNVToolkit and NPNVSupportsXEmbedBool) before a PluginView has been created.

Right now we have no way of answering those queries, so the plugins fail to load.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>79737</commentid>
    <comment_count>1</comment_count>
    <who name="Gwenole Beauchesne">gb.devel</who>
    <bug_when>2008-05-06 04:41:00 -0700</bug_when>
    <thetext>*** Bug 18907 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>79804</commentid>
    <comment_count>2</comment_count>
      <attachid>20998</attachid>
    <who name="marcoil">marc.ordinasillopis</who>
    <bug_when>2008-05-07 02:29:25 -0700</bug_when>
    <thetext>Created attachment 20998
Preliminary patch for testing

This is a preliminary attempt at fixing the bug. It adds two things:
- An static version for NPN_UserAgent and NPN_GetValue for plugins that call those before any PluginView has been created.
- More currentPluginView guards for plugins that call NPN_* functions without a proper instance when calling inside an NPP_* call, based on the existing patch for bug #18882.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>79869</commentid>
    <comment_count>3</comment_count>
      <attachid>21011</attachid>
    <who name="marcoil">marc.ordinasillopis</who>
    <bug_when>2008-05-08 01:54:02 -0700</bug_when>
    <thetext>Created attachment 21011
Fixes loading plugins with NULL instance (r32972)

This is mostly the same patch but with proper ChangeLog and ready for review. Thanks to Chris Lord, it should also fix bug #18882.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>79968</commentid>
    <comment_count>4</comment_count>
      <attachid>21034</attachid>
    <who name="marcoil">marc.ordinasillopis</who>
    <bug_when>2008-05-09 03:14:47 -0700</bug_when>
    <thetext>Created attachment 21034
Modified patch for #18892 and #18882

Modified patch for style changes. I&apos;ve also removed some stuff for dealing with Adobe Acrobat that I think will require a different bug and some more work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>80337</commentid>
    <comment_count>5</comment_count>
      <attachid>21034</attachid>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2008-05-14 01:52:48 -0700</bug_when>
    <thetext>Comment on attachment 21034
Modified patch for #18892 and #18882

Yupp. Patch looks fine. I would like to land it in two parts. First the substance and then bringing these two files in line with our coding style.

thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>80886</commentid>
    <comment_count>6</comment_count>
    <who name="marcoil">marc.ordinasillopis</who>
    <bug_when>2008-05-19 03:15:13 -0700</bug_when>
    <thetext>Patch landed in r33570.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>20998</attachid>
            <date>2008-05-07 02:29:25 -0700</date>
            <delta_ts>2008-05-08 01:54:02 -0700</delta_ts>
            <desc>Preliminary patch for testing</desc>
            <filename>plugins-18892.patch</filename>
            <type>text/plain</type>
            <size>13847</size>
            <attacher name="marcoil">marc.ordinasillopis</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1dlYkNvcmUvcGx1
Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCBhN2IxYjM3Li42MGY4MWE5IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvV2ViQ29yZS9wbHVnaW5zL1BsdWdp
blZpZXcuY3BwCkBAIC0xNTEsMTUgKzE1MSwxNSBAQCBib29sIFBsdWdpblZpZXc6OnN0YXJ0KCkK
ICAgICBBU1NFUlQobV9wbHVnaW4tPnBsdWdpbkZ1bmNzKCktPm5ld3ApOwogCiAgICAgTlBFcnJv
ciBucEVycjsKLSAgICBQbHVnaW5WaWV3OjpzZXRDdXJyZW50UGx1Z2luVmlldyh0aGlzKTsKICAg
ICB7CisgICAgICAgIFBsdWdpblZpZXc6OnNldEN1cnJlbnRQbHVnaW5WaWV3KHRoaXMpOwogICAg
ICAgICBLSlM6OkpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrczsKICAgICAgICAgc2V0
Q2FsbGluZ1BsdWdpbih0cnVlKTsKICAgICAgICAgbnBFcnIgPSBtX3BsdWdpbi0+cGx1Z2luRnVu
Y3MoKS0+bmV3cCgoTlBNSU1FVHlwZSltX21pbWVUeXBlLmRhdGEoKSwgbV9pbnN0YW5jZSwgbV9t
b2RlLCBtX3BhcmFtQ291bnQsIG1fcGFyYW1OYW1lcywgbV9wYXJhbVZhbHVlcywgTlVMTCk7CiAg
ICAgICAgIHNldENhbGxpbmdQbHVnaW4oZmFsc2UpOwogICAgICAgICBMT0dfTlBFUlJPUihucEVy
cik7CisgICAgICAgIFBsdWdpblZpZXc6OnNldEN1cnJlbnRQbHVnaW5WaWV3KDApOwogICAgIH0K
LSAgICBQbHVnaW5WaWV3OjpzZXRDdXJyZW50UGx1Z2luVmlldygwKTsKIAogICAgIGlmIChucEVy
ciAhPSBOUEVSUl9OT19FUlJPUikKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjM0LDEwICsy
MzQsMTIgQEAgdm9pZCBQbHVnaW5WaWV3OjpwZXJmb3JtUmVxdWVzdChQbHVnaW5SZXF1ZXN0KiBy
ZXF1ZXN0KQogICAgICAgCiAgICAgICAgICAgICAvLyBGSVhNRTogPHJkYXI6Ly9wcm9ibGVtLzQ4
MDc0Njk+IFRoaXMgc2hvdWxkIGJlIHNlbnQgd2hlbiB0aGUgZG9jdW1lbnQgaGFzIGZpbmlzaGVk
IGxvYWRpbmcKICAgICAgICAgICAgIGlmIChyZXF1ZXN0LT5zZW5kTm90aWZpY2F0aW9uKCkpIHsK
KyAgICAgICAgICAgICAgICBQbHVnaW5WaWV3OjpzZXRDdXJyZW50UGx1Z2luVmlldyh0aGlzKTsK
ICAgICAgICAgICAgICAgICBLSlM6OkpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrczsK
ICAgICAgICAgICAgICAgICBzZXRDYWxsaW5nUGx1Z2luKHRydWUpOwogICAgICAgICAgICAgICAg
IG1fcGx1Z2luLT5wbHVnaW5GdW5jcygpLT51cmxub3RpZnkobV9pbnN0YW5jZSwgcmVxdWVzdFVS
TC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBOUFJFU19ET05FLCByZXF1ZXN0LT5ub3RpZnlEYXRh
KCkpOwogICAgICAgICAgICAgICAgIHNldENhbGxpbmdQbHVnaW4oZmFsc2UpOworICAgICAgICAg
ICAgICAgIFBsdWdpblZpZXc6OnNldEN1cnJlbnRQbHVnaW5WaWV3KDApOwogICAgICAgICAgICAg
fQogICAgICAgICB9CiAgICAgICAgIHJldHVybjsKQEAgLTQ2MSwxMCArNDYzLDEyIEBAIFBhc3NS
ZWZQdHI8S0pTOjpCaW5kaW5nczo6SW5zdGFuY2U+IFBsdWdpblZpZXc6OmJpbmRpbmdJbnN0YW5j
ZSgpCiAKICAgICBOUEVycm9yIG5wRXJyOwogICAgIHsKKyAgICAgICAgUGx1Z2luVmlldzo6c2V0
Q3VycmVudFBsdWdpblZpZXcodGhpcyk7CiAgICAgICAgIEtKUzo6SlNMb2NrOjpEcm9wQWxsTG9j
a3MgZHJvcEFsbExvY2tzOwogICAgICAgICBzZXRDYWxsaW5nUGx1Z2luKHRydWUpOwogICAgICAg
ICBucEVyciA9IG1fcGx1Z2luLT5wbHVnaW5GdW5jcygpLT5nZXR2YWx1ZShtX2luc3RhbmNlLCBO
UFBWcGx1Z2luU2NyaXB0YWJsZU5QT2JqZWN0LCAmb2JqZWN0KTsKICAgICAgICAgc2V0Q2FsbGlu
Z1BsdWdpbihmYWxzZSk7CisgICAgICAgIFBsdWdpblZpZXc6OnNldEN1cnJlbnRQbHVnaW5WaWV3
KDApOwogICAgIH0KIAogICAgIGlmIChucEVyciAhPSBOUEVSUl9OT19FUlJPUiB8fCAhb2JqZWN0
KQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcuaCBiL1dlYkNvcmUvcGx1
Z2lucy9QbHVnaW5WaWV3LmgKaW5kZXggNjllZjg1MS4uOWJhMDAxMiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wbHVnaW5zL1BsdWdpblZpZXcuaAorKysgYi9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmll
dy5oCkBAIC0xMTgsOCArMTE4LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgaW50
MzIgd3JpdGUoTlBTdHJlYW0qIHN0cmVhbSwgaW50MzIgbGVuLCB2b2lkKiBidWZmZXIpOwogICAg
ICAgICBOUEVycm9yIGRlc3Ryb3lTdHJlYW0oTlBTdHJlYW0qIHN0cmVhbSwgTlBSZWFzb24gcmVh
c29uKTsKICAgICAgICAgY29uc3QgY2hhciogdXNlckFnZW50KCk7CisgICAgICAgIHN0YXRpYyBj
b25zdCBjaGFyKiB1c2VyQWdlbnRTdGF0aWMoKTsKICAgICAgICAgdm9pZCBzdGF0dXMoY29uc3Qg
Y2hhciogbWVzc2FnZSk7CiAgICAgICAgIE5QRXJyb3IgZ2V0VmFsdWUoTlBOVmFyaWFibGUgdmFy
aWFibGUsIHZvaWQqIHZhbHVlKTsKKyAgICAgICAgc3RhdGljIE5QRXJyb3IgZ2V0VmFsdWVTdGF0
aWMoTlBOVmFyaWFibGUgdmFyaWFibGUsIHZvaWQqIHZhbHVlKTsKICAgICAgICAgTlBFcnJvciBz
ZXRWYWx1ZShOUFBWYXJpYWJsZSB2YXJpYWJsZSwgdm9pZCogdmFsdWUpOwogICAgICAgICB2b2lk
IGludmFsaWRhdGVSZWN0KE5QUmVjdCopOwogICAgICAgICB2b2lkIGludmFsaWRhdGVSZWdpb24o
TlBSZWdpb24pOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbHVnaW5zL2d0ay9QbHVnaW5WaWV3R3Rr
LmNwcCBiL1dlYkNvcmUvcGx1Z2lucy9ndGsvUGx1Z2luVmlld0d0ay5jcHAKaW5kZXggMmI1NmEz
Ni4uNjg1ZDgwOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbHVnaW5zL2d0ay9QbHVnaW5WaWV3R3Rr
LmNwcAorKysgYi9XZWJDb3JlL3BsdWdpbnMvZ3RrL1BsdWdpblZpZXdHdGsuY3BwCkBAIC0yMjQs
MTAgKzIyNCwxMiBAQCB2b2lkIFBsdWdpblZpZXc6OnNldE5QV2luZG93UmVjdChjb25zdCBJbnRS
ZWN0JiByZWN0KQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9wbHVnaW4tPnBsdWdpbkZ1
bmNzKCktPnNldHdpbmRvdykgeworICAgICAgICBQbHVnaW5WaWV3OjpzZXRDdXJyZW50UGx1Z2lu
Vmlldyh0aGlzKTsKICAgICAgICAgS0pTOjpKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9j
a3M7CiAgICAgICAgIHNldENhbGxpbmdQbHVnaW4odHJ1ZSk7CiAgICAgICAgIG1fcGx1Z2luLT5w
bHVnaW5GdW5jcygpLT5zZXR3aW5kb3cobV9pbnN0YW5jZSwgJm1fbnBXaW5kb3cpOwogICAgICAg
ICBzZXRDYWxsaW5nUGx1Z2luKGZhbHNlKTsKKyAgICAgICAgUGx1Z2luVmlldzo6c2V0Q3VycmVu
dFBsdWdpblZpZXcoMCk7CiAKICAgICAgICAgaWYgKCFtX2lzV2luZG93ZWQpCiAgICAgICAgICAg
ICByZXR1cm47CkBAIC0yODEsMTYgKzI4MywyMCBAQCB2b2lkIFBsdWdpblZpZXc6OnN0b3AoKQog
ICAgIG1fbnBXaW5kb3cud3NfaW5mbyA9IDA7CiAjZW5kaWYKICAgICBpZiAobV9wbHVnaW4tPnBs
dWdpbkZ1bmNzKCktPnNldHdpbmRvdyAmJiAhbV9wbHVnaW4tPnF1aXJrcygpLmNvbnRhaW5zKFBs
dWdpblF1aXJrRG9udFNldE51bGxXaW5kb3dIYW5kbGVPbkRlc3Ryb3kpKSB7CisgICAgICAgIFBs
dWdpblZpZXc6OnNldEN1cnJlbnRQbHVnaW5WaWV3KHRoaXMpOwogICAgICAgICBzZXRDYWxsaW5n
UGx1Z2luKHRydWUpOwogICAgICAgICBtX3BsdWdpbi0+cGx1Z2luRnVuY3MoKS0+c2V0d2luZG93
KG1faW5zdGFuY2UsICZtX25wV2luZG93KTsKICAgICAgICAgc2V0Q2FsbGluZ1BsdWdpbihmYWxz
ZSk7CisgICAgICAgIFBsdWdpblZpZXc6OnNldEN1cnJlbnRQbHVnaW5WaWV3KDApOwogICAgIH0K
IAogICAgIC8vIERlc3Ryb3kgdGhlIHBsdWdpbgogICAgIHsKKyAgICAgICAgUGx1Z2luVmlldzo6
c2V0Q3VycmVudFBsdWdpblZpZXcodGhpcyk7CiAgICAgICAgIHNldENhbGxpbmdQbHVnaW4odHJ1
ZSk7CiAgICAgICAgIG1fcGx1Z2luLT5wbHVnaW5GdW5jcygpLT5kZXN0cm95KG1faW5zdGFuY2Us
IDApOwogICAgICAgICBzZXRDYWxsaW5nUGx1Z2luKGZhbHNlKTsKKyAgICAgICAgUGx1Z2luVmll
dzo6c2V0Q3VycmVudFBsdWdpblZpZXcoMCk7CiAgICAgfQogCiAgICAgbV9pbnN0YW5jZS0+cGRh
dGEgPSAwOwpAQCAtMzA5LDYgKzMxNSwxMiBAQCBjb25zdCBjaGFyKiBQbHVnaW5WaWV3Ojp1c2Vy
QWdlbnQoKQogICAgIHJldHVybiBtX3VzZXJBZ2VudC5kYXRhKCk7CiB9CiAKK2NvbnN0IGNoYXIq
IFBsdWdpblZpZXc6OnVzZXJBZ2VudFN0YXRpYygpCit7CisgICAgLy9GSVhNRSAtIExpZSBhbmQg
c2F5IHdlIGFyZSBNb3ppbGxhCisgICAgcmV0dXJuIE1vemlsbGFVc2VyQWdlbnQ7Cit9CisKIE5Q
RXJyb3IgUGx1Z2luVmlldzo6aGFuZGxlUG9zdFJlYWRGaWxlKFZlY3RvcjxjaGFyPiYgYnVmZmVy
LCB1aW50MzIgbGVuLCBjb25zdCBjaGFyKiBidWYpCiB7CiAgICAgU3RyaW5nIGZpbGVuYW1lKGJ1
ZiwgbGVuKTsKQEAgLTMzOCwyMCArMzUwLDIzIEBAIE5QRXJyb3IgUGx1Z2luVmlldzo6aGFuZGxl
UG9zdFJlYWRGaWxlKFZlY3RvcjxjaGFyPiYgYnVmZmVyLCB1aW50MzIgbGVuLCBjb25zdCBjCiAg
ICAgcmV0dXJuIE5QRVJSX05PX0VSUk9SOwogfQogCi1OUEVycm9yIFBsdWdpblZpZXc6OmdldFZh
bHVlKE5QTlZhcmlhYmxlIHZhcmlhYmxlLCB2b2lkKiB2YWx1ZSkKK05QRXJyb3IgUGx1Z2luVmll
dzo6Z2V0VmFsdWVTdGF0aWMoTlBOVmFyaWFibGUgdmFyaWFibGUsIHZvaWQqIHZhbHVlKQogewog
ICAgIHN3aXRjaCAodmFyaWFibGUpIHsKKyAgICAgICAgY2FzZSBOUE5WeERpc3BsYXk6IHsKICNp
ZiBkZWZpbmVkKEdES19XSU5ET1dJTkdfWDExKQotICAgICAgICBjYXNlIE5QTlZ4dEFwcENvbnRl
eHQ6IHsKLSAgICAgICAgICAgIGlmICghbV9uZWVkc1hFbWJlZCkgewotICAgICAgICAgICAgICAg
ICoodm9pZCAqKil2YWx1ZSA9IFh0RGlzcGxheVRvQXBwbGljYXRpb25Db250ZXh0IChHVEtfWFRC
SU4obV93aW5kb3cpLT54dGNsaWVudC54dGRpc3BsYXkpOwotCi0gICAgICAgICAgICAgICAgcmV0
dXJuIE5QRVJSX05PX0VSUk9SOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAg
cmV0dXJuIE5QRVJSX0dFTkVSSUNfRVJST1I7Ci0gICAgICAgIH0KKyAgICAgICAgICAgIC8vIEFk
b2JlIEFjcm9iYXQgdHJpZXMgdG8gZ2V0IGFuIHhkaXNwbGF5IGJlZm9yZSBhbnl0aGluZworICAg
ICAgICAgICAgLy8gaXMgc2V0IHVwLCBzbyB3ZSBoYXZlIHRvIGZha2UgYSB3aWRnZXQKKyAgICAg
ICAgICAgIHN0YXRpYyBHdGtXaWRnZXQgKmd0a1h0QmluSG9sZGVyID0gMDsKKyAgICAgICAgICAg
IGlmICghZ3RrWHRCaW5Ib2xkZXIpIHsKKyAgICAgICAgICAgICAgICBndGtYdEJpbkhvbGRlciA9
IGd0a194dGJpbl9uZXcoZ2RrX2dldF9kZWZhdWx0X3Jvb3Rfd2luZG93KCksIDApOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgKih2b2lkICoqKXZhbHVlID0gKHZvaWQgKilHVEtfWFRCSU4o
Z3RrWHRCaW5Ib2xkZXIpLT54dGNsaWVudC54dGRpc3BsYXk7CisgICAgICAgICAgICByZXR1cm4g
TlBFUlJfTk9fRVJST1I7CisjZWxzZQorICAgICAgICAgICAgcmV0dXJuIE5QRVJSX0dFTkVSSUNf
RVJST1I7CiAjZW5kaWYKLQorICAgICAgICB9ICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgTlBO
VlRvb2xraXQ6IHsKICNpZiBQTEFURk9STShHVEspCiAgICAgICAgICAgICAqKCh1aW50MzIgKil2
YWx1ZSkgPSAyOwpAQCAtMzcwLDYgKzM4NSw0MiBAQCBOUEVycm9yIFBsdWdpblZpZXc6OmdldFZh
bHVlKE5QTlZhcmlhYmxlIHZhcmlhYmxlLCB2b2lkKiB2YWx1ZSkKICAgICAgICAgICAgIHJldHVy
biBOUEVSUl9OT19FUlJPUjsKICAgICAgICAgfQogCisgICAgICAgIGNhc2UgTlBOVmphdmFzY3Jp
cHRFbmFibGVkQm9vbDogeworICAgICAgICAgICAgKigodWludDMyICopdmFsdWUpID0gdHJ1ZTsK
KyAgICAgICAgICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsKKyAgICAgICAgfQorCisgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gTlBFUlJfR0VORVJJQ19FUlJPUjsKKyAgICB9
Cit9CisKK05QRXJyb3IgUGx1Z2luVmlldzo6Z2V0VmFsdWUoTlBOVmFyaWFibGUgdmFyaWFibGUs
IHZvaWQqIHZhbHVlKQoreworICAgIHN3aXRjaCAodmFyaWFibGUpIHsKKyAgICAgICAgY2FzZSBO
UE5WeERpc3BsYXk6IHsKKyNpZiBkZWZpbmVkKEdES19XSU5ET1dJTkdfWDExKQorICAgICAgICAg
ICAgaWYgKG1fbmVlZHNYRW1iZWQpCisgICAgICAgICAgICAgICAgKih2b2lkICoqKXZhbHVlID0g
KHZvaWQgKilHREtfRElTUExBWSgpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
ICoodm9pZCAqKil2YWx1ZSA9ICh2b2lkICopR1RLX1hUQklOKG1fd2luZG93KS0+eHRjbGllbnQu
eHRkaXNwbGF5OworICAgICAgICAgICAgcmV0dXJuIE5QRVJSX05PX0VSUk9SOworI2Vsc2UKKyAg
ICAgICAgICAgIHJldHVybiBOUEVSUl9HRU5FUklDX0VSUk9SOworI2VuZGlmCisgICAgICAgIH0K
KworI2lmIGRlZmluZWQoR0RLX1dJTkRPV0lOR19YMTEpCisgICAgICAgIGNhc2UgTlBOVnh0QXBw
Q29udGV4dDogeworICAgICAgICAgICAgaWYgKCFtX25lZWRzWEVtYmVkKSB7CisgICAgICAgICAg
ICAgICAgKih2b2lkICoqKXZhbHVlID0gWHREaXNwbGF5VG9BcHBsaWNhdGlvbkNvbnRleHQgKEdU
S19YVEJJTihtX3dpbmRvdyktPnh0Y2xpZW50Lnh0ZGlzcGxheSk7CisKKyAgICAgICAgICAgICAg
ICByZXR1cm4gTlBFUlJfTk9fRVJST1I7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAg
ICAgICByZXR1cm4gTlBFUlJfR0VORVJJQ19FUlJPUjsKKyAgICAgICAgfQorI2VuZGlmCisKICNp
ZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICAgICAgY2FzZSBOUE5WV2luZG93TlBP
YmplY3Q6IHsKICAgICAgICAgaWYgKG1faXNKYXZhU2NyaXB0UGF1c2VkKQpAQCAtNDE5LDcgKzQ3
MCw3IEBAIE5QRXJyb3IgUGx1Z2luVmlldzo6Z2V0VmFsdWUoTlBOVmFyaWFibGUgdmFyaWFibGUs
IHZvaWQqIHZhbHVlKQogICAgICAgICAgICAgcmV0dXJuIE5QRVJSX05PX0VSUk9SOwogICAgICAg
ICB9CiAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gTlBFUlJfR0VORVJJQ19F
UlJPUjsKKyAgICAgICAgICAgIHJldHVybiBnZXRWYWx1ZVN0YXRpYyh2YXJpYWJsZSwgdmFsdWUp
OwogICAgIH0KIH0KIApAQCAtNDg1LDggKzUzNiwxNCBAQCB2b2lkIFBsdWdpblZpZXc6OmluaXQo
KQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKG1fcGx1Z2luLT5wbHVnaW5GdW5j
cygpLT5nZXR2YWx1ZSkKKyAgICBpZiAobV9wbHVnaW4tPnBsdWdpbkZ1bmNzKCktPmdldHZhbHVl
KSB7CisgICAgICAgIFBsdWdpblZpZXc6OnNldEN1cnJlbnRQbHVnaW5WaWV3KHRoaXMpOworICAg
ICAgICBLSlM6OkpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrczsKKyAgICAgICAgc2V0
Q2FsbGluZ1BsdWdpbih0cnVlKTsKICAgICAgICAgbV9wbHVnaW4tPnBsdWdpbkZ1bmNzKCktPmdl
dHZhbHVlKG1faW5zdGFuY2UsIE5QUFZwbHVnaW5OZWVkc1hFbWJlZCwgJm1fbmVlZHNYRW1iZWQp
OworICAgICAgICBzZXRDYWxsaW5nUGx1Z2luKGZhbHNlKTsKKyAgICAgICAgUGx1Z2luVmlldzo6
c2V0Q3VycmVudFBsdWdpblZpZXcoMCk7CisgICAgfQogCiAjaWYgZGVmaW5lZChHREtfV0lORE9X
SU5HX1gxMSkKICAgICBpZiAobV9uZWVkc1hFbWJlZCkgewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bHVnaW5zL25wYXBpLmNwcCBiL1dlYkNvcmUvcGx1Z2lucy9ucGFwaS5jcHAKaW5kZXggMTNlNTM5
OS4uZTkzOGQyMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbHVnaW5zL25wYXBpLmNwcAorKysgYi9X
ZWJDb3JlL3BsdWdpbnMvbnBhcGkuY3BwCkBAIC0xMDcsMTAgKzEwNyw4IEBAIGNvbnN0IGNoYXIq
IE5QTl9Vc2VyQWdlbnQoTlBQIGluc3RhbmNlKQogewogICAgIFBsdWdpblZpZXcqIHZpZXcgPSBw
bHVnaW5WaWV3Rm9ySW5zdGFuY2UoaW5zdGFuY2UpOwogCi0gICAgIC8vIEZJWE1FOiBTb21lIHBs
dWctaW5zIGNhbGwgTlBOX1VzZXJBZ2VudCB3aXRoIGEgbnVsbCBpbnN0YW5jZSBpbiB0aGVpciBO
UF9pbml0aWFsaXplIGZ1bmN0aW9uIQotICAgICAvLyBXZSdkIG5lZWQgYSB3YXkgdG8gZ2V0IGEg
dXNlciBhZ2VudCB3aXRob3V0IGhhdmluZyBhIGZyYW1lIGFyb3VuZC4KICAgICAgaWYgKCF2aWV3
KQotICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICByZXR1cm4gUGx1Z2luVmlldzo6dXNlckFn
ZW50U3RhdGljKCk7CiAgCiAgICAgcmV0dXJuIHZpZXctPnVzZXJBZ2VudCgpOwogfQpAQCAtMTM3
LDExICsxMzUsMTEgQEAgdm9pZCBOUE5fRm9yY2VSZWRyYXcoTlBQIGluc3RhbmNlKQogCiBOUEVy
cm9yIE5QTl9HZXRWYWx1ZShOUFAgaW5zdGFuY2UsIE5QTlZhcmlhYmxlIHZhcmlhYmxlLCB2b2lk
KiB2YWx1ZSkKIHsKLSAgICAvLyBGSVhNRTogQWNyb2JhdCByZWFkZXIgcGx1Z2luIGNhbGxzIE5Q
Tl9HZXRWYWx1ZSBiZWZvcmUgYSBQbHVnaW5WaWV3Ci0gICAgLy8gaGFzIGJlZW4gY3JlYXRlZAot
ICAgIGlmICghaW5zdGFuY2UpCi0gICAgICAgIHJldHVybiBOUEVSUl9HRU5FUklDX0VSUk9SOwor
ICAgIFBsdWdpblZpZXcqIHZpZXcgPSBwbHVnaW5WaWV3Rm9ySW5zdGFuY2UoaW5zdGFuY2UpOwog
CisgICAgIGlmICghdmlldykKKyAgICAgICAgIHJldHVybiBQbHVnaW5WaWV3OjpnZXRWYWx1ZVN0
YXRpYyh2YXJpYWJsZSwgdmFsdWUpOworIAogICAgIHJldHVybiBwbHVnaW5WaWV3Rm9ySW5zdGFu
Y2UoaW5zdGFuY2UpLT5nZXRWYWx1ZSh2YXJpYWJsZSwgdmFsdWUpOwogfQogCmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BsdWdpbnMvcXQvUGx1Z2luUGFja2FnZVF0LmNwcCBiL1dlYkNvcmUvcGx1Z2lu
cy9xdC9QbHVnaW5QYWNrYWdlUXQuY3BwCmluZGV4IDgyZjM5MTQuLjdiZWRlMjcgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcGx1Z2lucy9xdC9QbHVnaW5QYWNrYWdlUXQuY3BwCisrKyBiL1dlYkNvcmUv
cGx1Z2lucy9xdC9QbHVnaW5QYWNrYWdlUXQuY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIGJvb2wgUGx1
Z2luUGFja2FnZTo6ZmV0Y2hJbmZvKCkKICAgICBzLnNwbGl0KFVDaGFyKCc7JyksIGZhbHNlLCB0
eXBlcyk7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0eXBlcy5zaXplKCk7ICsraSkgewogICAg
ICAgICBWZWN0b3I8U3RyaW5nPiBtaW1lOwotICAgICAgICB0eXBlc1tpXS5zcGxpdChVQ2hhcign
OicpLCBmYWxzZSwgbWltZSk7IAorICAgICAgICB0eXBlc1tpXS5zcGxpdChVQ2hhcignOicpLCB0
cnVlLCBtaW1lKTsgCiAgICAgICAgIGlmIChtaW1lLnNpemUoKSA+IDApIHsKICAgICAgICAgICAg
IFZlY3RvcjxTdHJpbmc+IGV4dHM7CiAgICAgICAgICAgICBtaW1lWzBdLnNwbGl0KFVDaGFyKCcs
JyksIGZhbHNlLCBleHRzKTsKQEAgLTExMCw2ICsxMTAsNyBAQCBib29sIFBsdWdpblBhY2thZ2U6
OmxvYWQoKQogICAgIH0KIAogICAgIG1fbW9kdWxlID0gbmV3IFFMaWJyYXJ5KChRU3RyaW5nKW1f
cGF0aCk7CisgICAgbV9tb2R1bGUtPnNldExvYWRIaW50cyhRTGlicmFyeTo6UmVzb2x2ZUFsbFN5
bWJvbHNIaW50KTsKICAgICBpZiAoIW1fbW9kdWxlLT5sb2FkKCkpIHsKICAgICAgICAgTE9HKFBs
dWdpbiwgIiVzIG5vdCBsb2FkZWQiLCBtX3BhdGgudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGx1Z2lucy9xdC9QbHVnaW5WaWV3UXQu
Y3BwIGIvV2ViQ29yZS9wbHVnaW5zL3F0L1BsdWdpblZpZXdRdC5jcHAKaW5kZXggNWE5NjU3NC4u
NDRhOTRiNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbHVnaW5zL3F0L1BsdWdpblZpZXdRdC5jcHAK
KysrIGIvV2ViQ29yZS9wbHVnaW5zL3F0L1BsdWdpblZpZXdRdC5jcHAKQEAgLTE4NSwxMCArMTg1
LDE1IEBAIHZvaWQgUGx1Z2luVmlldzo6c2V0TlBXaW5kb3dSZWN0KGNvbnN0IEludFJlY3QmIHJl
Y3QpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX3BsdWdpbi0+cGx1Z2luRnVuY3MoKS0+
c2V0d2luZG93KSB7CisgICAgICAgIFBsdWdpblZpZXc6OnNldEN1cnJlbnRQbHVnaW5WaWV3KHRo
aXMpOwogICAgICAgICBLSlM6OkpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrczsKICAg
ICAgICAgc2V0Q2FsbGluZ1BsdWdpbih0cnVlKTsKICAgICAgICAgbV9wbHVnaW4tPnBsdWdpbkZ1
bmNzKCktPnNldHdpbmRvdyhtX2luc3RhbmNlLCAmbV9ucFdpbmRvdyk7CiAgICAgICAgIHNldENh
bGxpbmdQbHVnaW4oZmFsc2UpOworICAgICAgICBQbHVnaW5WaWV3OjpzZXRDdXJyZW50UGx1Z2lu
VmlldygwKTsKKworICAgICAgICBpZiAoIW1faXNXaW5kb3dlZCkKKyAgICAgICAgICAgIHJldHVy
bjsKIAogICAgICAgICBBU1NFUlQobV93aW5kb3cpOwogICAgIH0KQEAgLTIzNywxNiArMjQyLDIw
IEBAIHZvaWQgUGx1Z2luVmlldzo6c3RvcCgpCiAgICAgZGVsZXRlIChOUFNldFdpbmRvd0NhbGxi
YWNrU3RydWN0ICopbV9ucFdpbmRvdy53c19pbmZvOwogICAgIG1fbnBXaW5kb3cud3NfaW5mbyA9
IDA7CiAgICAgaWYgKG1fcGx1Z2luLT5wbHVnaW5GdW5jcygpLT5zZXR3aW5kb3cgJiYgIW1fcGx1
Z2luLT5xdWlya3MoKS5jb250YWlucyhQbHVnaW5RdWlya0RvbnRTZXROdWxsV2luZG93SGFuZGxl
T25EZXN0cm95KSkgeworICAgICAgICBQbHVnaW5WaWV3OjpzZXRDdXJyZW50UGx1Z2luVmlldyh0
aGlzKTsKICAgICAgICAgc2V0Q2FsbGluZ1BsdWdpbih0cnVlKTsKICAgICAgICAgbV9wbHVnaW4t
PnBsdWdpbkZ1bmNzKCktPnNldHdpbmRvdyhtX2luc3RhbmNlLCAmbV9ucFdpbmRvdyk7CiAgICAg
ICAgIHNldENhbGxpbmdQbHVnaW4oZmFsc2UpOworICAgICAgICBQbHVnaW5WaWV3OjpzZXRDdXJy
ZW50UGx1Z2luVmlldygwKTsKICAgICB9CiAKICAgICAvLyBEZXN0cm95IHRoZSBwbHVnaW4KICAg
ICB7CisgICAgICAgIFBsdWdpblZpZXc6OnNldEN1cnJlbnRQbHVnaW5WaWV3KHRoaXMpOwogICAg
ICAgICBzZXRDYWxsaW5nUGx1Z2luKHRydWUpOwogICAgICAgICBtX3BsdWdpbi0+cGx1Z2luRnVu
Y3MoKS0+ZGVzdHJveShtX2luc3RhbmNlLCAwKTsKICAgICAgICAgc2V0Q2FsbGluZ1BsdWdpbihm
YWxzZSk7CisgICAgICAgIFBsdWdpblZpZXc6OnNldEN1cnJlbnRQbHVnaW5WaWV3KDApOwogICAg
IH0KIAogICAgIG1faW5zdGFuY2UtPnBkYXRhID0gMDsKQEAgLTI2NSw2ICsyNzQsMTIgQEAgY29u
c3QgY2hhciogUGx1Z2luVmlldzo6dXNlckFnZW50KCkKICAgICByZXR1cm4gbV91c2VyQWdlbnQu
ZGF0YSgpOwogfQogCitjb25zdCBjaGFyKiBQbHVnaW5WaWV3Ojp1c2VyQWdlbnRTdGF0aWMoKQor
eworICAgIC8vRklYTUUgLSBKdXN0IHNheSB3ZSBhcmUgTW96aWxsYQorICAgIHJldHVybiBNb3pp
bGxhVXNlckFnZW50OworfQorCiBOUEVycm9yIFBsdWdpblZpZXc6OmhhbmRsZVBvc3RSZWFkRmls
ZShWZWN0b3I8Y2hhcj4mIGJ1ZmZlciwgdWludDMyIGxlbiwgY29uc3QgY2hhciogYnVmKQogewog
ICAgIFN0cmluZyBmaWxlbmFtZShidWYsIGxlbik7CkBAIC0yOTMsNiArMzA4LDI5IEBAIE5QRXJy
b3IgUGx1Z2luVmlldzo6aGFuZGxlUG9zdFJlYWRGaWxlKFZlY3RvcjxjaGFyPiYgYnVmZmVyLCB1
aW50MzIgbGVuLCBjb25zdCBjCiAgICAgcmV0dXJuIE5QRVJSX05PX0VSUk9SOwogfQogCitOUEVy
cm9yIFBsdWdpblZpZXc6OmdldFZhbHVlU3RhdGljKE5QTlZhcmlhYmxlIHZhcmlhYmxlLCB2b2lk
KiB2YWx1ZSkKK3sKKyAgICBzd2l0Y2ggKHZhcmlhYmxlKSB7CisgICAgICAgIGNhc2UgTlBOVlRv
b2xraXQ6IHsKKyAgICAgICAgICAgICooKHVpbnQzMiAqKXZhbHVlKSA9IDA7CisgICAgICAgICAg
ICByZXR1cm4gTlBFUlJfTk9fRVJST1I7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIE5QTlZT
dXBwb3J0c1hFbWJlZEJvb2w6IHsKKyAgICAgICAgICAgICooKHVpbnQzMiAqKXZhbHVlKSA9IHRy
dWU7CisgICAgICAgICAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7CisgICAgICAgIH0KKworICAg
ICAgICBjYXNlIE5QTlZqYXZhc2NyaXB0RW5hYmxlZEJvb2w6IHsKKyAgICAgICAgICAgICooKHVp
bnQzMiAqKXZhbHVlKSA9IHRydWU7CisgICAgICAgICAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7
CisgICAgICAgIH0KKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIE5QRVJS
X0dFTkVSSUNfRVJST1I7CisgICAgfQorfQorCiBOUEVycm9yIFBsdWdpblZpZXc6OmdldFZhbHVl
KE5QTlZhcmlhYmxlIHZhcmlhYmxlLCB2b2lkKiB2YWx1ZSkKIHsKICAgICBzd2l0Y2ggKHZhcmlh
YmxlKSB7CkBAIC0zMDgsMTYgKzM0Niw2IEBAIE5QRXJyb3IgUGx1Z2luVmlldzo6Z2V0VmFsdWUo
TlBOVmFyaWFibGUgdmFyaWFibGUsIHZvaWQqIHZhbHVlKQogICAgICAgICAgICAgcmV0dXJuIE5Q
RVJSX0dFTkVSSUNfRVJST1I7CiAgICAgICAgIH0KIAotICAgICAgICBjYXNlIE5QTlZUb29sa2l0
OiB7Ci0gICAgICAgICAgICAqKCh1aW50MzIgKil2YWx1ZSkgPSAwOwotICAgICAgICAgICAgcmV0
dXJuIE5QRVJSX05PX0VSUk9SOwotICAgICAgICB9Ci0KLSAgICAgICAgY2FzZSBOUE5WU3VwcG9y
dHNYRW1iZWRCb29sOiB7Ci0gICAgICAgICAgICAqKCh1aW50MzIgKil2YWx1ZSkgPSB0cnVlOwot
ICAgICAgICAgICAgcmV0dXJuIE5QRVJSX05PX0VSUk9SOwotICAgICAgICB9Ci0KICNpZiBFTkFC
TEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICAgICAgY2FzZSBOUE5WV2luZG93TlBPYmplY3Q6
IHsKICAgICAgICAgaWYgKG1faXNKYXZhU2NyaXB0UGF1c2VkKQpAQCAtMzYxLDEzICszODksOCBA
QCBOUEVycm9yIFBsdWdpblZpZXc6OmdldFZhbHVlKE5QTlZhcmlhYmxlIHZhcmlhYmxlLCB2b2lk
KiB2YWx1ZSkKICAgICAgICAgICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsKICAgICAgICAgfQog
Ci0gICAgICAgIGNhc2UgTlBOVmphdmFzY3JpcHRFbmFibGVkQm9vbDogewotICAgICAgICAgICAg
KigodWludDMyICopdmFsdWUpID0gdHJ1ZTsKLSAgICAgICAgICAgIHJldHVybiBOUEVSUl9OT19F
UlJPUjsKLSAgICAgICAgfQotCiAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4g
TlBFUlJfR0VORVJJQ19FUlJPUjsKKyAgICAgICAgICAgIHJldHVybiBnZXRWYWx1ZVN0YXRpYyh2
YXJpYWJsZSwgdmFsdWUpOwogICAgIH0KIH0KIApAQCAtNDI1LDkgKzQ0OCwxNCBAQCB2b2lkIFBs
dWdpblZpZXc6OmluaXQoKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9uZWVkc1hF
bWJlZCA9IGZhbHNlOwotICAgIGlmIChtX3BsdWdpbi0+cGx1Z2luRnVuY3MoKS0+Z2V0dmFsdWUp
CisgICAgaWYgKG1fcGx1Z2luLT5wbHVnaW5GdW5jcygpLT5nZXR2YWx1ZSkgeworICAgICAgICBQ
bHVnaW5WaWV3OjpzZXRDdXJyZW50UGx1Z2luVmlldyh0aGlzKTsKKyAgICAgICAgS0pTOjpKU0xv
Y2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3M7CisgICAgICAgIHNldENhbGxpbmdQbHVnaW4o
dHJ1ZSk7CiAgICAgICAgIG1fcGx1Z2luLT5wbHVnaW5GdW5jcygpLT5nZXR2YWx1ZShtX2luc3Rh
bmNlLCBOUFBWcGx1Z2luTmVlZHNYRW1iZWQsICZtX25lZWRzWEVtYmVkKTsKKyAgICAgICAgc2V0
Q2FsbGluZ1BsdWdpbihmYWxzZSk7CisgICAgICAgIFBsdWdpblZpZXc6OnNldEN1cnJlbnRQbHVn
aW5WaWV3KDApOworICAgIH0KIAogICAgIGlmIChtX25lZWRzWEVtYmVkKSB7CiAgICAgICAgIG1f
d2luZG93ID0gbmV3IFFYMTFFbWJlZENvbnRhaW5lcihjb250YWluaW5nV2luZG93KCkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>21011</attachid>
            <date>2008-05-08 01:54:02 -0700</date>
            <delta_ts>2008-05-09 03:14:47 -0700</delta_ts>
            <desc>Fixes loading plugins with NULL instance (r32972)</desc>
            <filename>npapi-plugins-r32972.patch</filename>
            <type>text/plain</type>
            <size>15793</size>
            <attacher name="marcoil">marc.ordinasillopis</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzMjk3MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDQgQEAKKzIwMDgtMDUtMDggIE1hcmMgT3JkaW5hcyBpIExsb3BpcyAgPG1hcmMu
b3JkaW5hc2lsbG9waXNAY29sbGFib3JhLmNvLnVrPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODg4MgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTg4OTIKKyAgICAgICAgQmFzZWQgYWxzbyBvbiB3b3JrIGJ5IENocmlzIExvcmQuCisg
ICAgICAgIAorICAgICAgICBQcm92aWRlcyBzdXBwb3J0IGZvciBOUEFQSSBwbHVnaW5zIHRoYXQg
cGFzcyBOVUxMIGFzIHRoZWlyIGluc3RhbmNlCisgICAgICAgIGluZm8uIFRoZXJlIGFyZSB0d28g
a2luZHM6CisgICAgICAgIC0gU29tZSBjYWxsIE5QTl9Vc2VyQWdlbnQgYW5kIE5QTl9HZXRWYWx1
ZSBiZWZvcmUgYSBQbHVnaW5WaWV3IGhhcworICAgICAgICBiZWVuIGNyZWF0ZWQuIEZvciB0aG9z
ZSB3ZSBwcm92aWRlIHN0YXRpYyB2ZXJzaW9ucyBvZiB0aG9zZSBmdW5jdGlvbnMuCisgICAgICAg
IC0gT3RoZXJzIGNhbGwgTlBOXyogZnVuY3Rpb25zIHdpdGggYSBOVUxMIGluc3RhbmNlIGluc2lk
ZSBOUFBfKgorICAgICAgICBjYWxscywgZm9yIHRob3NlIHdlJ3ZlIGFkZGVkIGV4dHJhIGN1cnJl
bnRQbHVnaW5WaWV3IGd1YXJkcy4KKworICAgICAgICAqIHBsdWdpbnMvUGx1Z2luVmlldy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjpzdGFydCk6CisgICAgICAgIChXZWJDb3Jl
OjpQbHVnaW5WaWV3OjpwZXJmb3JtUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5W
aWV3OjpiaW5kaW5nSW5zdGFuY2UpOgorICAgICAgICAqIHBsdWdpbnMvUGx1Z2luVmlldy5oOgor
ICAgICAgICAqIHBsdWdpbnMvZ3RrL1BsdWdpblZpZXdHdGsuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UGx1Z2luVmlldzo6c2V0TlBXaW5kb3dSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdp
blZpZXc6OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6dXNlckFnZW50U3Rh
dGljKToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OmdldFZhbHVlU3RhdGljKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OmdldFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6
OlBsdWdpblZpZXc6OmluaXQpOgorICAgICAgICAqIHBsdWdpbnMvbnBhcGkuY3BwOgorICAgICAg
ICAoTlBOX1VzZXJBZ2VudCk6CisgICAgICAgIChOUE5fR2V0VmFsdWUpOgorICAgICAgICAqIHBs
dWdpbnMvcXQvUGx1Z2luUGFja2FnZVF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblBh
Y2thZ2U6OmZldGNoSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5QYWNrYWdlOjpsb2Fk
KToKKyAgICAgICAgKiBwbHVnaW5zL3F0L1BsdWdpblZpZXdRdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQbHVnaW5WaWV3OjpzZXROUFdpbmRvd1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6UGx1
Z2luVmlldzo6c3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3Ojp1c2VyQWdlbnRT
dGF0aWMpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6Z2V0VmFsdWVTdGF0aWMpOgor
ICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6Z2V0VmFsdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6UGx1Z2luVmlldzo6aW5pdCk6CisKIDIwMDgtMDUtMDggIFNpbW9uIEhhdXNtYW5uICA8aGF1
c21hbm5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBGaXggdGhlIFF0IGFuZCBXeCBidWlsZCB3aGVu
IGNvbXBpbGluZyB3aXRob3V0IG9mZmxpbmUgYXBwIHN1cHBvcnQuCkluZGV4OiBXZWJDb3JlL3Bs
dWdpbnMvUGx1Z2luVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbHVnaW5zL1BsdWdp
blZpZXcuY3BwCShyZXZpc2lvbiAzMjk3MikKKysrIFdlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUxLDE1ICsxNTEsMTUgQEAgYm9vbCBQbHVnaW5WaWV3
OjpzdGFydCgpCiAgICAgQVNTRVJUKG1fcGx1Z2luLT5wbHVnaW5GdW5jcygpLT5uZXdwKTsKIAog
ICAgIE5QRXJyb3IgbnBFcnI7Ci0gICAgUGx1Z2luVmlldzo6c2V0Q3VycmVudFBsdWdpblZpZXco
dGhpcyk7CiAgICAgeworICAgICAgICBQbHVnaW5WaWV3OjpzZXRDdXJyZW50UGx1Z2luVmlldyh0
aGlzKTsKICAgICAgICAgS0pTOjpKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3M7CiAg
ICAgICAgIHNldENhbGxpbmdQbHVnaW4odHJ1ZSk7CiAgICAgICAgIG5wRXJyID0gbV9wbHVnaW4t
PnBsdWdpbkZ1bmNzKCktPm5ld3AoKE5QTUlNRVR5cGUpbV9taW1lVHlwZS5kYXRhKCksIG1faW5z
dGFuY2UsIG1fbW9kZSwgbV9wYXJhbUNvdW50LCBtX3BhcmFtTmFtZXMsIG1fcGFyYW1WYWx1ZXMs
IE5VTEwpOwogICAgICAgICBzZXRDYWxsaW5nUGx1Z2luKGZhbHNlKTsKICAgICAgICAgTE9HX05Q
RVJST1IobnBFcnIpOworICAgICAgICBQbHVnaW5WaWV3OjpzZXRDdXJyZW50UGx1Z2luVmlldygw
KTsKICAgICB9Ci0gICAgUGx1Z2luVmlldzo6c2V0Q3VycmVudFBsdWdpblZpZXcoMCk7CiAKICAg
ICBpZiAobnBFcnIgIT0gTlBFUlJfTk9fRVJST1IpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTIzNCwxMCArMjM0LDEyIEBAIHZvaWQgUGx1Z2luVmlldzo6cGVyZm9ybVJlcXVlc3QoUGx1Z2lu
UmUKICAgICAgIAogICAgICAgICAgICAgLy8gRklYTUU6IDxyZGFyOi8vcHJvYmxlbS80ODA3NDY5
PiBUaGlzIHNob3VsZCBiZSBzZW50IHdoZW4gdGhlIGRvY3VtZW50IGhhcyBmaW5pc2hlZCBsb2Fk
aW5nCiAgICAgICAgICAgICBpZiAocmVxdWVzdC0+c2VuZE5vdGlmaWNhdGlvbigpKSB7CisgICAg
ICAgICAgICAgICAgUGx1Z2luVmlldzo6c2V0Q3VycmVudFBsdWdpblZpZXcodGhpcyk7CiAgICAg
ICAgICAgICAgICAgS0pTOjpKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3M7CiAgICAg
ICAgICAgICAgICAgc2V0Q2FsbGluZ1BsdWdpbih0cnVlKTsKICAgICAgICAgICAgICAgICBtX3Bs
dWdpbi0+cGx1Z2luRnVuY3MoKS0+dXJsbm90aWZ5KG1faW5zdGFuY2UsIHJlcXVlc3RVUkwuc3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSwgTlBSRVNfRE9ORSwgcmVxdWVzdC0+bm90aWZ5RGF0YSgpKTsK
ICAgICAgICAgICAgICAgICBzZXRDYWxsaW5nUGx1Z2luKGZhbHNlKTsKKyAgICAgICAgICAgICAg
ICBQbHVnaW5WaWV3OjpzZXRDdXJyZW50UGx1Z2luVmlldygwKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQogICAgICAgICByZXR1cm47CkBAIC00NjEsMTAgKzQ2MywxMiBAQCBQYXNzUmVmUHRy
PEtKUzo6QmluZGluZ3M6Okluc3RhbmNlPiBQbHVnCiAKICAgICBOUEVycm9yIG5wRXJyOwogICAg
IHsKKyAgICAgICAgUGx1Z2luVmlldzo6c2V0Q3VycmVudFBsdWdpblZpZXcodGhpcyk7CiAgICAg
ICAgIEtKUzo6SlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzOwogICAgICAgICBzZXRD
YWxsaW5nUGx1Z2luKHRydWUpOwogICAgICAgICBucEVyciA9IG1fcGx1Z2luLT5wbHVnaW5GdW5j
cygpLT5nZXR2YWx1ZShtX2luc3RhbmNlLCBOUFBWcGx1Z2luU2NyaXB0YWJsZU5QT2JqZWN0LCAm
b2JqZWN0KTsKICAgICAgICAgc2V0Q2FsbGluZ1BsdWdpbihmYWxzZSk7CisgICAgICAgIFBsdWdp
blZpZXc6OnNldEN1cnJlbnRQbHVnaW5WaWV3KDApOwogICAgIH0KIAogICAgIGlmIChucEVyciAh
PSBOUEVSUl9OT19FUlJPUiB8fCAhb2JqZWN0KQpJbmRleDogV2ViQ29yZS9wbHVnaW5zL1BsdWdp
blZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5oCShyZXZp
c2lvbiAzMjk3MikKKysrIFdlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTExOCw4ICsxMTgsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBpbnQz
MiB3cml0ZShOUFN0cmVhbSogc3RyZWFtLCBpbnQzMiBsZW4sIHZvaWQqIGJ1ZmZlcik7CiAgICAg
ICAgIE5QRXJyb3IgZGVzdHJveVN0cmVhbShOUFN0cmVhbSogc3RyZWFtLCBOUFJlYXNvbiByZWFz
b24pOwogICAgICAgICBjb25zdCBjaGFyKiB1c2VyQWdlbnQoKTsKKyAgICAgICAgc3RhdGljIGNv
bnN0IGNoYXIqIHVzZXJBZ2VudFN0YXRpYygpOwogICAgICAgICB2b2lkIHN0YXR1cyhjb25zdCBj
aGFyKiBtZXNzYWdlKTsKICAgICAgICAgTlBFcnJvciBnZXRWYWx1ZShOUE5WYXJpYWJsZSB2YXJp
YWJsZSwgdm9pZCogdmFsdWUpOworICAgICAgICBzdGF0aWMgTlBFcnJvciBnZXRWYWx1ZVN0YXRp
YyhOUE5WYXJpYWJsZSB2YXJpYWJsZSwgdm9pZCogdmFsdWUpOwogICAgICAgICBOUEVycm9yIHNl
dFZhbHVlKE5QUFZhcmlhYmxlIHZhcmlhYmxlLCB2b2lkKiB2YWx1ZSk7CiAgICAgICAgIHZvaWQg
aW52YWxpZGF0ZVJlY3QoTlBSZWN0Kik7CiAgICAgICAgIHZvaWQgaW52YWxpZGF0ZVJlZ2lvbihO
UFJlZ2lvbik7CkluZGV4OiBXZWJDb3JlL3BsdWdpbnMvbnBhcGkuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGx1Z2lucy9ucGFwaS5jcHAJKHJldmlzaW9uIDMyOTcyKQorKysgV2ViQ29yZS9w
bHVnaW5zL25wYXBpLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA3LDEwICsxMDcsOCBAQCBjb25z
dCBjaGFyKiBOUE5fVXNlckFnZW50KE5QUCBpbnN0YW5jZSkKIHsKICAgICBQbHVnaW5WaWV3KiB2
aWV3ID0gcGx1Z2luVmlld0Zvckluc3RhbmNlKGluc3RhbmNlKTsKIAotICAgICAvLyBGSVhNRTog
U29tZSBwbHVnLWlucyBjYWxsIE5QTl9Vc2VyQWdlbnQgd2l0aCBhIG51bGwgaW5zdGFuY2UgaW4g
dGhlaXIgTlBfaW5pdGlhbGl6ZSBmdW5jdGlvbiEKLSAgICAgLy8gV2UnZCBuZWVkIGEgd2F5IHRv
IGdldCBhIHVzZXIgYWdlbnQgd2l0aG91dCBoYXZpbmcgYSBmcmFtZSBhcm91bmQuCiAgICAgIGlm
ICghdmlldykKLSAgICAgICAgIHJldHVybiAwOworICAgICAgICAgcmV0dXJuIFBsdWdpblZpZXc6
OnVzZXJBZ2VudFN0YXRpYygpOwogIAogICAgIHJldHVybiB2aWV3LT51c2VyQWdlbnQoKTsKIH0K
QEAgLTEzNywxMSArMTM1LDExIEBAIHZvaWQgTlBOX0ZvcmNlUmVkcmF3KE5QUCBpbnN0YW5jZSkK
IAogTlBFcnJvciBOUE5fR2V0VmFsdWUoTlBQIGluc3RhbmNlLCBOUE5WYXJpYWJsZSB2YXJpYWJs
ZSwgdm9pZCogdmFsdWUpCiB7Ci0gICAgLy8gRklYTUU6IEFjcm9iYXQgcmVhZGVyIHBsdWdpbiBj
YWxscyBOUE5fR2V0VmFsdWUgYmVmb3JlIGEgUGx1Z2luVmlldwotICAgIC8vIGhhcyBiZWVuIGNy
ZWF0ZWQKLSAgICBpZiAoIWluc3RhbmNlKQotICAgICAgICByZXR1cm4gTlBFUlJfR0VORVJJQ19F
UlJPUjsKKyAgICBQbHVnaW5WaWV3KiB2aWV3ID0gcGx1Z2luVmlld0Zvckluc3RhbmNlKGluc3Rh
bmNlKTsKIAorICAgICBpZiAoIXZpZXcpCisgICAgICAgICByZXR1cm4gUGx1Z2luVmlldzo6Z2V0
VmFsdWVTdGF0aWModmFyaWFibGUsIHZhbHVlKTsKKyAKICAgICByZXR1cm4gcGx1Z2luVmlld0Zv
ckluc3RhbmNlKGluc3RhbmNlKS0+Z2V0VmFsdWUodmFyaWFibGUsIHZhbHVlKTsKIH0KIApJbmRl
eDogV2ViQ29yZS9wbHVnaW5zL2d0ay9QbHVnaW5WaWV3R3RrLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BsdWdpbnMvZ3RrL1BsdWdpblZpZXdHdGsuY3BwCShyZXZpc2lvbiAzMjk3MikKKysr
IFdlYkNvcmUvcGx1Z2lucy9ndGsvUGx1Z2luVmlld0d0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIyNCwxMCArMjI0LDEyIEBAIHZvaWQgUGx1Z2luVmlldzo6c2V0TlBXaW5kb3dSZWN0KGNvbnN0
IEkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fcGx1Z2luLT5wbHVnaW5GdW5jcygpLT5z
ZXR3aW5kb3cpIHsKKyAgICAgICAgUGx1Z2luVmlldzo6c2V0Q3VycmVudFBsdWdpblZpZXcodGhp
cyk7CiAgICAgICAgIEtKUzo6SlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzOwogICAg
ICAgICBzZXRDYWxsaW5nUGx1Z2luKHRydWUpOwogICAgICAgICBtX3BsdWdpbi0+cGx1Z2luRnVu
Y3MoKS0+c2V0d2luZG93KG1faW5zdGFuY2UsICZtX25wV2luZG93KTsKICAgICAgICAgc2V0Q2Fs
bGluZ1BsdWdpbihmYWxzZSk7CisgICAgICAgIFBsdWdpblZpZXc6OnNldEN1cnJlbnRQbHVnaW5W
aWV3KDApOwogCiAgICAgICAgIGlmICghbV9pc1dpbmRvd2VkKQogICAgICAgICAgICAgcmV0dXJu
OwpAQCAtMjgxLDE2ICsyODMsMjAgQEAgdm9pZCBQbHVnaW5WaWV3OjpzdG9wKCkKICAgICBtX25w
V2luZG93LndzX2luZm8gPSAwOwogI2VuZGlmCiAgICAgaWYgKG1fcGx1Z2luLT5wbHVnaW5GdW5j
cygpLT5zZXR3aW5kb3cgJiYgIW1fcGx1Z2luLT5xdWlya3MoKS5jb250YWlucyhQbHVnaW5RdWly
a0RvbnRTZXROdWxsV2luZG93SGFuZGxlT25EZXN0cm95KSkgeworICAgICAgICBQbHVnaW5WaWV3
OjpzZXRDdXJyZW50UGx1Z2luVmlldyh0aGlzKTsKICAgICAgICAgc2V0Q2FsbGluZ1BsdWdpbih0
cnVlKTsKICAgICAgICAgbV9wbHVnaW4tPnBsdWdpbkZ1bmNzKCktPnNldHdpbmRvdyhtX2luc3Rh
bmNlLCAmbV9ucFdpbmRvdyk7CiAgICAgICAgIHNldENhbGxpbmdQbHVnaW4oZmFsc2UpOworICAg
ICAgICBQbHVnaW5WaWV3OjpzZXRDdXJyZW50UGx1Z2luVmlldygwKTsKICAgICB9CiAKICAgICAv
LyBEZXN0cm95IHRoZSBwbHVnaW4KICAgICB7CisgICAgICAgIFBsdWdpblZpZXc6OnNldEN1cnJl
bnRQbHVnaW5WaWV3KHRoaXMpOwogICAgICAgICBzZXRDYWxsaW5nUGx1Z2luKHRydWUpOwogICAg
ICAgICBtX3BsdWdpbi0+cGx1Z2luRnVuY3MoKS0+ZGVzdHJveShtX2luc3RhbmNlLCAwKTsKICAg
ICAgICAgc2V0Q2FsbGluZ1BsdWdpbihmYWxzZSk7CisgICAgICAgIFBsdWdpblZpZXc6OnNldEN1
cnJlbnRQbHVnaW5WaWV3KDApOwogICAgIH0KIAogICAgIG1faW5zdGFuY2UtPnBkYXRhID0gMDsK
QEAgLTMwOSw2ICszMTUsMTIgQEAgY29uc3QgY2hhciogUGx1Z2luVmlldzo6dXNlckFnZW50KCkK
ICAgICByZXR1cm4gbV91c2VyQWdlbnQuZGF0YSgpOwogfQogCitjb25zdCBjaGFyKiBQbHVnaW5W
aWV3Ojp1c2VyQWdlbnRTdGF0aWMoKQoreworICAgIC8vRklYTUUgLSBMaWUgYW5kIHNheSB3ZSBh
cmUgTW96aWxsYQorICAgIHJldHVybiBNb3ppbGxhVXNlckFnZW50OworfQorCiBOUEVycm9yIFBs
dWdpblZpZXc6OmhhbmRsZVBvc3RSZWFkRmlsZShWZWN0b3I8Y2hhcj4mIGJ1ZmZlciwgdWludDMy
IGxlbiwgY29uc3QgY2hhciogYnVmKQogewogICAgIFN0cmluZyBmaWxlbmFtZShidWYsIGxlbik7
CkBAIC0zMzgsMjAgKzM1MCwyMyBAQCBOUEVycm9yIFBsdWdpblZpZXc6OmhhbmRsZVBvc3RSZWFk
RmlsZShWCiAgICAgcmV0dXJuIE5QRVJSX05PX0VSUk9SOwogfQogCi1OUEVycm9yIFBsdWdpblZp
ZXc6OmdldFZhbHVlKE5QTlZhcmlhYmxlIHZhcmlhYmxlLCB2b2lkKiB2YWx1ZSkKK05QRXJyb3Ig
UGx1Z2luVmlldzo6Z2V0VmFsdWVTdGF0aWMoTlBOVmFyaWFibGUgdmFyaWFibGUsIHZvaWQqIHZh
bHVlKQogewogICAgIHN3aXRjaCAodmFyaWFibGUpIHsKKyAgICAgICAgY2FzZSBOUE5WeERpc3Bs
YXk6IHsKICNpZiBkZWZpbmVkKEdES19XSU5ET1dJTkdfWDExKQotICAgICAgICBjYXNlIE5QTlZ4
dEFwcENvbnRleHQ6IHsKLSAgICAgICAgICAgIGlmICghbV9uZWVkc1hFbWJlZCkgewotICAgICAg
ICAgICAgICAgICoodm9pZCAqKil2YWx1ZSA9IFh0RGlzcGxheVRvQXBwbGljYXRpb25Db250ZXh0
IChHVEtfWFRCSU4obV93aW5kb3cpLT54dGNsaWVudC54dGRpc3BsYXkpOwotCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIE5QRVJSX05PX0VSUk9SOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIE5QRVJSX0dFTkVSSUNfRVJST1I7Ci0gICAgICAgIH0KKyAgICAgICAg
ICAgIC8vIEFkb2JlIEFjcm9iYXQgdHJpZXMgdG8gZ2V0IGFuIHhkaXNwbGF5IGJlZm9yZSBhbnl0
aGluZworICAgICAgICAgICAgLy8gaXMgc2V0IHVwLCBzbyB3ZSBoYXZlIHRvIGZha2UgYSB3aWRn
ZXQKKyAgICAgICAgICAgIHN0YXRpYyBHdGtXaWRnZXQgKmd0a1h0QmluSG9sZGVyID0gMDsKKyAg
ICAgICAgICAgIGlmICghZ3RrWHRCaW5Ib2xkZXIpIHsKKyAgICAgICAgICAgICAgICBndGtYdEJp
bkhvbGRlciA9IGd0a194dGJpbl9uZXcoZ2RrX2dldF9kZWZhdWx0X3Jvb3Rfd2luZG93KCksIDAp
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgKih2b2lkICoqKXZhbHVlID0gKHZvaWQgKilH
VEtfWFRCSU4oZ3RrWHRCaW5Ib2xkZXIpLT54dGNsaWVudC54dGRpc3BsYXk7CisgICAgICAgICAg
ICByZXR1cm4gTlBFUlJfTk9fRVJST1I7CisjZWxzZQorICAgICAgICAgICAgcmV0dXJuIE5QRVJS
X0dFTkVSSUNfRVJST1I7CiAjZW5kaWYKLQorICAgICAgICB9ICAgICAgICAgICAgCiAgICAgICAg
IGNhc2UgTlBOVlRvb2xraXQ6IHsKICNpZiBQTEFURk9STShHVEspCiAgICAgICAgICAgICAqKCh1
aW50MzIgKil2YWx1ZSkgPSAyOwpAQCAtMzcwLDYgKzM4NSw0MiBAQCBOUEVycm9yIFBsdWdpblZp
ZXc6OmdldFZhbHVlKE5QTlZhcmlhYmxlCiAgICAgICAgICAgICByZXR1cm4gTlBFUlJfTk9fRVJS
T1I7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIE5QTlZqYXZhc2NyaXB0RW5hYmxlZEJvb2w6
IHsKKyAgICAgICAgICAgICooKHVpbnQzMiAqKXZhbHVlKSA9IHRydWU7CisgICAgICAgICAgICBy
ZXR1cm4gTlBFUlJfTk9fRVJST1I7CisgICAgICAgIH0KKworICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgcmV0dXJuIE5QRVJSX0dFTkVSSUNfRVJST1I7CisgICAgfQorfQorCitOUEVycm9y
IFBsdWdpblZpZXc6OmdldFZhbHVlKE5QTlZhcmlhYmxlIHZhcmlhYmxlLCB2b2lkKiB2YWx1ZSkK
K3sKKyAgICBzd2l0Y2ggKHZhcmlhYmxlKSB7CisgICAgICAgIGNhc2UgTlBOVnhEaXNwbGF5OiB7
CisjaWYgZGVmaW5lZChHREtfV0lORE9XSU5HX1gxMSkKKyAgICAgICAgICAgIGlmIChtX25lZWRz
WEVtYmVkKQorICAgICAgICAgICAgICAgICoodm9pZCAqKil2YWx1ZSA9ICh2b2lkICopR0RLX0RJ
U1BMQVkoKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAqKHZvaWQgKiopdmFs
dWUgPSAodm9pZCAqKUdUS19YVEJJTihtX3dpbmRvdyktPnh0Y2xpZW50Lnh0ZGlzcGxheTsKKyAg
ICAgICAgICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsKKyNlbHNlCisgICAgICAgICAgICByZXR1
cm4gTlBFUlJfR0VORVJJQ19FUlJPUjsKKyNlbmRpZgorICAgICAgICB9CisKKyNpZiBkZWZpbmVk
KEdES19XSU5ET1dJTkdfWDExKQorICAgICAgICBjYXNlIE5QTlZ4dEFwcENvbnRleHQ6IHsKKyAg
ICAgICAgICAgIGlmICghbV9uZWVkc1hFbWJlZCkgeworICAgICAgICAgICAgICAgICoodm9pZCAq
Kil2YWx1ZSA9IFh0RGlzcGxheVRvQXBwbGljYXRpb25Db250ZXh0IChHVEtfWFRCSU4obV93aW5k
b3cpLT54dGNsaWVudC54dGRpc3BsYXkpOworCisgICAgICAgICAgICAgICAgcmV0dXJuIE5QRVJS
X05PX0VSUk9SOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgcmV0dXJuIE5Q
RVJSX0dFTkVSSUNfRVJST1I7CisgICAgICAgIH0KKyNlbmRpZgorCiAjaWYgRU5BQkxFKE5FVFND
QVBFX1BMVUdJTl9BUEkpCiAgICAgICAgIGNhc2UgTlBOVldpbmRvd05QT2JqZWN0OiB7CiAgICAg
ICAgIGlmIChtX2lzSmF2YVNjcmlwdFBhdXNlZCkKQEAgLTQxOSw3ICs0NzAsNyBAQCBOUEVycm9y
IFBsdWdpblZpZXc6OmdldFZhbHVlKE5QTlZhcmlhYmxlCiAgICAgICAgICAgICByZXR1cm4gTlBF
UlJfTk9fRVJST1I7CiAgICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJl
dHVybiBOUEVSUl9HRU5FUklDX0VSUk9SOworICAgICAgICAgICAgcmV0dXJuIGdldFZhbHVlU3Rh
dGljKHZhcmlhYmxlLCB2YWx1ZSk7CiAgICAgfQogfQogCkBAIC00ODUsOCArNTM2LDE0IEBAIHZv
aWQgUGx1Z2luVmlldzo6aW5pdCgpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAo
bV9wbHVnaW4tPnBsdWdpbkZ1bmNzKCktPmdldHZhbHVlKQorICAgIGlmIChtX3BsdWdpbi0+cGx1
Z2luRnVuY3MoKS0+Z2V0dmFsdWUpIHsKKyAgICAgICAgUGx1Z2luVmlldzo6c2V0Q3VycmVudFBs
dWdpblZpZXcodGhpcyk7CisgICAgICAgIEtKUzo6SlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFs
bExvY2tzOworICAgICAgICBzZXRDYWxsaW5nUGx1Z2luKHRydWUpOwogICAgICAgICBtX3BsdWdp
bi0+cGx1Z2luRnVuY3MoKS0+Z2V0dmFsdWUobV9pbnN0YW5jZSwgTlBQVnBsdWdpbk5lZWRzWEVt
YmVkLCAmbV9uZWVkc1hFbWJlZCk7CisgICAgICAgIHNldENhbGxpbmdQbHVnaW4oZmFsc2UpOwor
ICAgICAgICBQbHVnaW5WaWV3OjpzZXRDdXJyZW50UGx1Z2luVmlldygwKTsKKyAgICB9CiAKICNp
ZiBkZWZpbmVkKEdES19XSU5ET1dJTkdfWDExKQogICAgIGlmIChtX25lZWRzWEVtYmVkKSB7Cklu
ZGV4OiBXZWJDb3JlL3BsdWdpbnMvcXQvUGx1Z2luUGFja2FnZVF0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BsdWdpbnMvcXQvUGx1Z2luUGFja2FnZVF0LmNwcAkocmV2aXNpb24gMzI5NzIp
CisrKyBXZWJDb3JlL3BsdWdpbnMvcXQvUGx1Z2luUGFja2FnZVF0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtODcsNyArODcsNyBAQCBib29sIFBsdWdpblBhY2thZ2U6OmZldGNoSW5mbygpCiAgICAg
cy5zcGxpdChVQ2hhcignOycpLCBmYWxzZSwgdHlwZXMpOwogICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgdHlwZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgVmVjdG9yPFN0cmluZz4gbWltZTsKLSAg
ICAgICAgdHlwZXNbaV0uc3BsaXQoVUNoYXIoJzonKSwgZmFsc2UsIG1pbWUpOyAKKyAgICAgICAg
dHlwZXNbaV0uc3BsaXQoVUNoYXIoJzonKSwgdHJ1ZSwgbWltZSk7IAogICAgICAgICBpZiAobWlt
ZS5zaXplKCkgPiAwKSB7CiAgICAgICAgICAgICBWZWN0b3I8U3RyaW5nPiBleHRzOwogICAgICAg
ICAgICAgbWltZVswXS5zcGxpdChVQ2hhcignLCcpLCBmYWxzZSwgZXh0cyk7CkBAIC0xMTAsNiAr
MTEwLDcgQEAgYm9vbCBQbHVnaW5QYWNrYWdlOjpsb2FkKCkKICAgICB9CiAKICAgICBtX21vZHVs
ZSA9IG5ldyBRTGlicmFyeSgoUVN0cmluZyltX3BhdGgpOworICAgIG1fbW9kdWxlLT5zZXRMb2Fk
SGludHMoUUxpYnJhcnk6OlJlc29sdmVBbGxTeW1ib2xzSGludCk7CiAgICAgaWYgKCFtX21vZHVs
ZS0+bG9hZCgpKSB7CiAgICAgICAgIExPRyhQbHVnaW4sICIlcyBub3QgbG9hZGVkIiwgbV9wYXRo
LnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBXZWJDb3JlL3Bs
dWdpbnMvcXQvUGx1Z2luVmlld1F0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsdWdpbnMv
cXQvUGx1Z2luVmlld1F0LmNwcAkocmV2aXNpb24gMzI5NzIpCisrKyBXZWJDb3JlL3BsdWdpbnMv
cXQvUGx1Z2luVmlld1F0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg1LDEwICsxODUsMTUgQEAg
dm9pZCBQbHVnaW5WaWV3OjpzZXROUFdpbmRvd1JlY3QoY29uc3QgSQogICAgICAgICByZXR1cm47
CiAKICAgICBpZiAobV9wbHVnaW4tPnBsdWdpbkZ1bmNzKCktPnNldHdpbmRvdykgeworICAgICAg
ICBQbHVnaW5WaWV3OjpzZXRDdXJyZW50UGx1Z2luVmlldyh0aGlzKTsKICAgICAgICAgS0pTOjpK
U0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3M7CiAgICAgICAgIHNldENhbGxpbmdQbHVn
aW4odHJ1ZSk7CiAgICAgICAgIG1fcGx1Z2luLT5wbHVnaW5GdW5jcygpLT5zZXR3aW5kb3cobV9p
bnN0YW5jZSwgJm1fbnBXaW5kb3cpOwogICAgICAgICBzZXRDYWxsaW5nUGx1Z2luKGZhbHNlKTsK
KyAgICAgICAgUGx1Z2luVmlldzo6c2V0Q3VycmVudFBsdWdpblZpZXcoMCk7CisKKyAgICAgICAg
aWYgKCFtX2lzV2luZG93ZWQpCisgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgQVNTRVJU
KG1fd2luZG93KTsKICAgICB9CkBAIC0yMzcsMTYgKzI0MiwyMCBAQCB2b2lkIFBsdWdpblZpZXc6
OnN0b3AoKQogICAgIGRlbGV0ZSAoTlBTZXRXaW5kb3dDYWxsYmFja1N0cnVjdCAqKW1fbnBXaW5k
b3cud3NfaW5mbzsKICAgICBtX25wV2luZG93LndzX2luZm8gPSAwOwogICAgIGlmIChtX3BsdWdp
bi0+cGx1Z2luRnVuY3MoKS0+c2V0d2luZG93ICYmICFtX3BsdWdpbi0+cXVpcmtzKCkuY29udGFp
bnMoUGx1Z2luUXVpcmtEb250U2V0TnVsbFdpbmRvd0hhbmRsZU9uRGVzdHJveSkpIHsKKyAgICAg
ICAgUGx1Z2luVmlldzo6c2V0Q3VycmVudFBsdWdpblZpZXcodGhpcyk7CiAgICAgICAgIHNldENh
bGxpbmdQbHVnaW4odHJ1ZSk7CiAgICAgICAgIG1fcGx1Z2luLT5wbHVnaW5GdW5jcygpLT5zZXR3
aW5kb3cobV9pbnN0YW5jZSwgJm1fbnBXaW5kb3cpOwogICAgICAgICBzZXRDYWxsaW5nUGx1Z2lu
KGZhbHNlKTsKKyAgICAgICAgUGx1Z2luVmlldzo6c2V0Q3VycmVudFBsdWdpblZpZXcoMCk7CiAg
ICAgfQogCiAgICAgLy8gRGVzdHJveSB0aGUgcGx1Z2luCiAgICAgeworICAgICAgICBQbHVnaW5W
aWV3OjpzZXRDdXJyZW50UGx1Z2luVmlldyh0aGlzKTsKICAgICAgICAgc2V0Q2FsbGluZ1BsdWdp
bih0cnVlKTsKICAgICAgICAgbV9wbHVnaW4tPnBsdWdpbkZ1bmNzKCktPmRlc3Ryb3kobV9pbnN0
YW5jZSwgMCk7CiAgICAgICAgIHNldENhbGxpbmdQbHVnaW4oZmFsc2UpOworICAgICAgICBQbHVn
aW5WaWV3OjpzZXRDdXJyZW50UGx1Z2luVmlldygwKTsKICAgICB9CiAKICAgICBtX2luc3RhbmNl
LT5wZGF0YSA9IDA7CkBAIC0yNjUsNiArMjc0LDEyIEBAIGNvbnN0IGNoYXIqIFBsdWdpblZpZXc6
OnVzZXJBZ2VudCgpCiAgICAgcmV0dXJuIG1fdXNlckFnZW50LmRhdGEoKTsKIH0KIAorY29uc3Qg
Y2hhciogUGx1Z2luVmlldzo6dXNlckFnZW50U3RhdGljKCkKK3sKKyAgICAvL0ZJWE1FIC0gSnVz
dCBzYXkgd2UgYXJlIE1vemlsbGEKKyAgICByZXR1cm4gTW96aWxsYVVzZXJBZ2VudDsKK30KKwog
TlBFcnJvciBQbHVnaW5WaWV3OjpoYW5kbGVQb3N0UmVhZEZpbGUoVmVjdG9yPGNoYXI+JiBidWZm
ZXIsIHVpbnQzMiBsZW4sIGNvbnN0IGNoYXIqIGJ1ZikKIHsKICAgICBTdHJpbmcgZmlsZW5hbWUo
YnVmLCBsZW4pOwpAQCAtMjkzLDYgKzMwOCwyOSBAQCBOUEVycm9yIFBsdWdpblZpZXc6OmhhbmRs
ZVBvc3RSZWFkRmlsZShWCiAgICAgcmV0dXJuIE5QRVJSX05PX0VSUk9SOwogfQogCitOUEVycm9y
IFBsdWdpblZpZXc6OmdldFZhbHVlU3RhdGljKE5QTlZhcmlhYmxlIHZhcmlhYmxlLCB2b2lkKiB2
YWx1ZSkKK3sKKyAgICBzd2l0Y2ggKHZhcmlhYmxlKSB7CisgICAgICAgIGNhc2UgTlBOVlRvb2xr
aXQ6IHsKKyAgICAgICAgICAgICooKHVpbnQzMiAqKXZhbHVlKSA9IDA7CisgICAgICAgICAgICBy
ZXR1cm4gTlBFUlJfTk9fRVJST1I7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIE5QTlZTdXBw
b3J0c1hFbWJlZEJvb2w6IHsKKyAgICAgICAgICAgICooKHVpbnQzMiAqKXZhbHVlKSA9IHRydWU7
CisgICAgICAgICAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7CisgICAgICAgIH0KKworICAgICAg
ICBjYXNlIE5QTlZqYXZhc2NyaXB0RW5hYmxlZEJvb2w6IHsKKyAgICAgICAgICAgICooKHVpbnQz
MiAqKXZhbHVlKSA9IHRydWU7CisgICAgICAgICAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7Cisg
ICAgICAgIH0KKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIE5QRVJSX0dF
TkVSSUNfRVJST1I7CisgICAgfQorfQorCiBOUEVycm9yIFBsdWdpblZpZXc6OmdldFZhbHVlKE5Q
TlZhcmlhYmxlIHZhcmlhYmxlLCB2b2lkKiB2YWx1ZSkKIHsKICAgICBzd2l0Y2ggKHZhcmlhYmxl
KSB7CkBAIC0zMDgsMTYgKzM0Niw2IEBAIE5QRXJyb3IgUGx1Z2luVmlldzo6Z2V0VmFsdWUoTlBO
VmFyaWFibGUKICAgICAgICAgICAgIHJldHVybiBOUEVSUl9HRU5FUklDX0VSUk9SOwogICAgICAg
ICB9CiAKLSAgICAgICAgY2FzZSBOUE5WVG9vbGtpdDogewotICAgICAgICAgICAgKigodWludDMy
ICopdmFsdWUpID0gMDsKLSAgICAgICAgICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsKLSAgICAg
ICAgfQotCi0gICAgICAgIGNhc2UgTlBOVlN1cHBvcnRzWEVtYmVkQm9vbDogewotICAgICAgICAg
ICAgKigodWludDMyICopdmFsdWUpID0gdHJ1ZTsKLSAgICAgICAgICAgIHJldHVybiBOUEVSUl9O
T19FUlJPUjsKLSAgICAgICAgfQotCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAg
ICAgICAgIGNhc2UgTlBOVldpbmRvd05QT2JqZWN0OiB7CiAgICAgICAgIGlmIChtX2lzSmF2YVNj
cmlwdFBhdXNlZCkKQEAgLTM2MSwxMyArMzg5LDggQEAgTlBFcnJvciBQbHVnaW5WaWV3OjpnZXRW
YWx1ZShOUE5WYXJpYWJsZQogICAgICAgICAgICAgcmV0dXJuIE5QRVJSX05PX0VSUk9SOwogICAg
ICAgICB9CiAKLSAgICAgICAgY2FzZSBOUE5WamF2YXNjcmlwdEVuYWJsZWRCb29sOiB7Ci0gICAg
ICAgICAgICAqKCh1aW50MzIgKil2YWx1ZSkgPSB0cnVlOwotICAgICAgICAgICAgcmV0dXJuIE5Q
RVJSX05PX0VSUk9SOwotICAgICAgICB9Ci0KICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAg
IHJldHVybiBOUEVSUl9HRU5FUklDX0VSUk9SOworICAgICAgICAgICAgcmV0dXJuIGdldFZhbHVl
U3RhdGljKHZhcmlhYmxlLCB2YWx1ZSk7CiAgICAgfQogfQogCkBAIC00MjUsOSArNDQ4LDE0IEBA
IHZvaWQgUGx1Z2luVmlldzo6aW5pdCgpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBt
X25lZWRzWEVtYmVkID0gZmFsc2U7Ci0gICAgaWYgKG1fcGx1Z2luLT5wbHVnaW5GdW5jcygpLT5n
ZXR2YWx1ZSkKKyAgICBpZiAobV9wbHVnaW4tPnBsdWdpbkZ1bmNzKCktPmdldHZhbHVlKSB7Cisg
ICAgICAgIFBsdWdpblZpZXc6OnNldEN1cnJlbnRQbHVnaW5WaWV3KHRoaXMpOworICAgICAgICBL
SlM6OkpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrczsKKyAgICAgICAgc2V0Q2FsbGlu
Z1BsdWdpbih0cnVlKTsKICAgICAgICAgbV9wbHVnaW4tPnBsdWdpbkZ1bmNzKCktPmdldHZhbHVl
KG1faW5zdGFuY2UsIE5QUFZwbHVnaW5OZWVkc1hFbWJlZCwgJm1fbmVlZHNYRW1iZWQpOworICAg
ICAgICBzZXRDYWxsaW5nUGx1Z2luKGZhbHNlKTsKKyAgICAgICAgUGx1Z2luVmlldzo6c2V0Q3Vy
cmVudFBsdWdpblZpZXcoMCk7CisgICAgfQogCiAgICAgaWYgKG1fbmVlZHNYRW1iZWQpIHsKICAg
ICAgICAgbV93aW5kb3cgPSBuZXcgUVgxMUVtYmVkQ29udGFpbmVyKGNvbnRhaW5pbmdXaW5kb3co
KSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>21034</attachid>
            <date>2008-05-09 03:14:47 -0700</date>
            <delta_ts>2008-05-14 01:52:48 -0700</delta_ts>
            <desc>Modified patch for #18892 and #18882</desc>
            <filename>plugins-fix18892-r33002.patch</filename>
            <type>text/plain</type>
            <size>23873</size>
            <attacher name="marcoil">marc.ordinasillopis</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzMzAwMikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTkgQEAKKzIwMDgtMDUtMDkgIE1hcmMgT3JkaW5hcyBpIExsb3BpcyAgPG1hcmMu
b3JkaW5hc2lsbG9waXNAY29sbGFib3JhLmNvLnVrPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODg4MgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTg4OTIKKyAgICAgICAgQmFzZWQgYWxzbyBvbiB3b3JrIGJ5IENocmlzIExvcmQuCisg
ICAgICAgIAorICAgICAgICBQcm92aWRlcyBzdXBwb3J0IGZvciBOUEFQSSBwbHVnaW5zIHRoYXQg
cGFzcyBOVUxMIGFzIHRoZWlyIGluc3RhbmNlCisgICAgICAgIGluZm8uIFRoZXJlIGFyZSB0d28g
a2luZHM6CisgICAgICAgIC0gU29tZSBjYWxsIE5QTl9Vc2VyQWdlbnQgYW5kIE5QTl9HZXRWYWx1
ZSBiZWZvcmUgYSBQbHVnaW5WaWV3IGhhcworICAgICAgICBiZWVuIGNyZWF0ZWQuIEZvciB0aG9z
ZSB3ZSBwcm92aWRlIHN0YXRpYyB2ZXJzaW9ucyBvZiB0aG9zZSBmdW5jdGlvbnMuCisgICAgICAg
IC0gT3RoZXJzIGNhbGwgTlBOXyogZnVuY3Rpb25zIHdpdGggYSBOVUxMIGluc3RhbmNlIGluc2lk
ZSBOUFBfKgorICAgICAgICBjYWxscywgZm9yIHRob3NlIHdlJ3ZlIGFkZGVkIGV4dHJhIGN1cnJl
bnRQbHVnaW5WaWV3IGd1YXJkcy4KKworICAgICAgICAqIHBsdWdpbnMvUGx1Z2luVmlldy5jcHA6
IEFkZCBhZGRpdGlvbmFsIGN1cnJlbnRQbHVnaW5WaWV3IGd1YXJkcyBhbmQKKyAgICAgICAgc29t
ZSBzbWFsbCBzdHlsZSBjaGFuZ2VzLgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6c3Rh
cnQpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6cGVyZm9ybVJlcXVlc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6YmluZGluZ0luc3RhbmNlKToKKyAgICAgICAgKFdl
YkNvcmU6OlBsdWdpblZpZXc6OmhhbmRsZVBvc3QpOgorICAgICAgICAqIHBsdWdpbnMvUGx1Z2lu
Vmlldy5oOiBBZGRlZCBzdGF0aWMgdmVyc2lvbnMgb2YgTlBOX1VzZXJBZ2VudCBhbmQKKyAgICAg
ICAgTlBOX0dldFZhbHVlLgorICAgICAgICAqIHBsdWdpbnMvZ3RrL1BsdWdpblZpZXdHdGsuY3Bw
OiBBZGQgYWRkaXRpb25hbCBjdXJyZW50UGx1Z2luVmlldworICAgICAgICBndWFyZHMgYW5kIHNv
bWUgc21hbGwgc3R5bGUgY2hhbmdlcy4KKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OnNl
dE5QV2luZG93UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjpzdG9wKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OnVzZXJBZ2VudFN0YXRpYyk6IEFkZGVkIHRvIGRl
YWwgd2l0aCBwbHVnaW5zCisgICAgICAgIHRoYXQgcXVlcnkgdGhpcyBiZWZvcmUgaGF2aW5nIGEg
UGx1Z2luVmlldy4KKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OmdldFZhbHVlU3RhdGlj
KTogQWRkZWQgdG8gZGVhbCB3aXRoIHBsdWdpbnMKKyAgICAgICAgdGhhdCBjYWxsIHRoaXMgYmVm
b3JlIHdlIGhhdmUgY3JlYXRlZCBhIFBsdWdpblZpZXcuCisgICAgICAgIChXZWJDb3JlOjpQbHVn
aW5WaWV3OjpnZXRWYWx1ZSk6IE1vdmVkIHNvbWUgY29kZSB0byBnZXRWYWx1ZVN0YXRpYy4KKyAg
ICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OmluaXQpOgorICAgICAgICAqIHBsdWdpbnMvbnBh
cGkuY3BwOiBDYWxsIFBsdWdpblZpZXc6OnVzZXJBZ2VudFN0YXRpYworICAgICAgICBhbmQgUGx1
Z2luVmlldzo6Z2V0VmFsdWVTdGF0aWMgaWYgbm8gUGx1Z2luVmlldyBpcworICAgICAgICBwcmVz
ZW50LgorICAgICAgICAoTlBOX1VzZXJBZ2VudCk6CisgICAgICAgIChOUE5fR2V0VmFsdWUpOgor
ICAgICAgICAqIHBsdWdpbnMvcXQvUGx1Z2luUGFja2FnZVF0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBsdWdpblBhY2thZ2U6OmZldGNoSW5mbyk6IENvcnJlY3RlZCBzcGxpdCBhcmdzIGJlY2F1
c2UgaWdub3JpbmcKKyAgICAgICAgZW1wdHkgZW50cmllcyBjcmFzaGVkLgorICAgICAgICAoV2Vi
Q29yZTo6UGx1Z2luUGFja2FnZTo6bG9hZCk6IFJlc29sdmUgYWxsIHN5bWJvbHMgd2hlbiBsb2Fk
aW5nIHBsdWdpbnMKKyAgICAgICAgdG8gcHJvdGVjdCBhZ2FpbnN0IFhQQ09NIGRlcGVuZGVuY2ll
cy4KKyAgICAgICAgKiBwbHVnaW5zL3F0L1BsdWdpblZpZXdRdC5jcHA6IEFkZCBhZGRpdGlvbmFs
IGN1cnJlbnRQbHVnaW5WaWV3IGd1YXJkcyBhbmQKKyAgICAgICAgc29tZSBzbWFsbCBzdHlsZSBj
aGFuZ2VzLgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6dXBkYXRlV2luZG93KToKKyAg
ICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OnNldE5QV2luZG93UmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpQbHVnaW5WaWV3OjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6
OnVzZXJBZ2VudFN0YXRpYyk6IEFkZGVkIHRvIGRlYWwgd2l0aCBwbHVnaW5zCisgICAgICAgIHRo
YXQgcXVlcnkgdGhpcyBiZWZvcmUgaGF2aW5nIGEgUGx1Z2luVmlldy4KKyAgICAgICAgKFdlYkNv
cmU6OlBsdWdpblZpZXc6OmhhbmRsZVBvc3RSZWFkRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpQ
bHVnaW5WaWV3OjpnZXRWYWx1ZVN0YXRpYyk6IEFkZGVkIHRvIGRlYWwgd2l0aCBwbHVnaW5zCisg
ICAgICAgIHRoYXQgY2FsbCB0aGlzIGJlZm9yZSB3ZSBoYXZlIGNyZWF0ZWQgYSBQbHVnaW5WaWV3
LgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6Z2V0VmFsdWUpOiBNb3ZlZCBzb21lIGNv
ZGUgdG8gZ2V0VmFsdWVTdGF0aWMuCisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3Ojppbml0
KTogbV9uZWVkc1hFbWJlZCBpbml0IHdhcyBtb3ZlZCB0byBjb25zdHJ1Y3Rvci4KKwogMjAwOC0w
NS0wOSAgVG9yIEFybmUgVmVzdGLDuCAgPHRhdmVzdGJvQHRyb2xsdGVjaC5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgU2ltb24KSW5kZXg6IFdlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5jcHAJKHJldmlzaW9u
IDMzMDAyKQorKysgV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNTEsMTUgKzE1MSwxNSBAQCBib29sIFBsdWdpblZpZXc6OnN0YXJ0KCkKICAgICBBU1NF
UlQobV9wbHVnaW4tPnBsdWdpbkZ1bmNzKCktPm5ld3ApOwogCiAgICAgTlBFcnJvciBucEVycjsK
LSAgICBQbHVnaW5WaWV3OjpzZXRDdXJyZW50UGx1Z2luVmlldyh0aGlzKTsKICAgICB7CisgICAg
ICAgIFBsdWdpblZpZXc6OnNldEN1cnJlbnRQbHVnaW5WaWV3KHRoaXMpOwogICAgICAgICBLSlM6
OkpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrczsKICAgICAgICAgc2V0Q2FsbGluZ1Bs
dWdpbih0cnVlKTsKICAgICAgICAgbnBFcnIgPSBtX3BsdWdpbi0+cGx1Z2luRnVuY3MoKS0+bmV3
cCgoTlBNSU1FVHlwZSltX21pbWVUeXBlLmRhdGEoKSwgbV9pbnN0YW5jZSwgbV9tb2RlLCBtX3Bh
cmFtQ291bnQsIG1fcGFyYW1OYW1lcywgbV9wYXJhbVZhbHVlcywgTlVMTCk7CiAgICAgICAgIHNl
dENhbGxpbmdQbHVnaW4oZmFsc2UpOwogICAgICAgICBMT0dfTlBFUlJPUihucEVycik7CisgICAg
ICAgIFBsdWdpblZpZXc6OnNldEN1cnJlbnRQbHVnaW5WaWV3KDApOwogICAgIH0KLSAgICBQbHVn
aW5WaWV3OjpzZXRDdXJyZW50UGx1Z2luVmlldygwKTsKIAogICAgIGlmIChucEVyciAhPSBOUEVS
Ul9OT19FUlJPUikKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjM0LDEwICsyMzQsMTIgQEAg
dm9pZCBQbHVnaW5WaWV3OjpwZXJmb3JtUmVxdWVzdChQbHVnaW5SZQogICAgICAgCiAgICAgICAg
ICAgICAvLyBGSVhNRTogPHJkYXI6Ly9wcm9ibGVtLzQ4MDc0Njk+IFRoaXMgc2hvdWxkIGJlIHNl
bnQgd2hlbiB0aGUgZG9jdW1lbnQgaGFzIGZpbmlzaGVkIGxvYWRpbmcKICAgICAgICAgICAgIGlm
IChyZXF1ZXN0LT5zZW5kTm90aWZpY2F0aW9uKCkpIHsKKyAgICAgICAgICAgICAgICBQbHVnaW5W
aWV3OjpzZXRDdXJyZW50UGx1Z2luVmlldyh0aGlzKTsKICAgICAgICAgICAgICAgICBLSlM6OkpT
TG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrczsKICAgICAgICAgICAgICAgICBzZXRDYWxs
aW5nUGx1Z2luKHRydWUpOwogICAgICAgICAgICAgICAgIG1fcGx1Z2luLT5wbHVnaW5GdW5jcygp
LT51cmxub3RpZnkobV9pbnN0YW5jZSwgcmVxdWVzdFVSTC5zdHJpbmcoKS51dGY4KCkuZGF0YSgp
LCBOUFJFU19ET05FLCByZXF1ZXN0LT5ub3RpZnlEYXRhKCkpOwogICAgICAgICAgICAgICAgIHNl
dENhbGxpbmdQbHVnaW4oZmFsc2UpOworICAgICAgICAgICAgICAgIFBsdWdpblZpZXc6OnNldEN1
cnJlbnRQbHVnaW5WaWV3KDApOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIHJl
dHVybjsKQEAgLTQ2MSwxMCArNDYzLDEyIEBAIFBhc3NSZWZQdHI8S0pTOjpCaW5kaW5nczo6SW5z
dGFuY2U+IFBsdWcKIAogICAgIE5QRXJyb3IgbnBFcnI7CiAgICAgeworICAgICAgICBQbHVnaW5W
aWV3OjpzZXRDdXJyZW50UGx1Z2luVmlldyh0aGlzKTsKICAgICAgICAgS0pTOjpKU0xvY2s6OkRy
b3BBbGxMb2NrcyBkcm9wQWxsTG9ja3M7CiAgICAgICAgIHNldENhbGxpbmdQbHVnaW4odHJ1ZSk7
CiAgICAgICAgIG5wRXJyID0gbV9wbHVnaW4tPnBsdWdpbkZ1bmNzKCktPmdldHZhbHVlKG1faW5z
dGFuY2UsIE5QUFZwbHVnaW5TY3JpcHRhYmxlTlBPYmplY3QsICZvYmplY3QpOwogICAgICAgICBz
ZXRDYWxsaW5nUGx1Z2luKGZhbHNlKTsKKyAgICAgICAgUGx1Z2luVmlldzo6c2V0Q3VycmVudFBs
dWdpblZpZXcoMCk7CiAgICAgfQogCiAgICAgaWYgKG5wRXJyICE9IE5QRVJSX05PX0VSUk9SIHx8
ICFvYmplY3QpCkBAIC04MTIsNyArODE2LDcgQEAgTlBFcnJvciBQbHVnaW5WaWV3OjpoYW5kbGVQ
b3N0KGNvbnN0IGNoYQogICAgIAogICAgIGlmIChmaWxlKSB7CiAgICAgICAgIE5QRXJyb3IgcmVh
ZFJlc3VsdCA9IGhhbmRsZVBvc3RSZWFkRmlsZShidWZmZXIsIGxlbiwgYnVmKTsKLSAgICAgICAg
aWYocmVhZFJlc3VsdCAhPSBOUEVSUl9OT19FUlJPUikKKyAgICAgICAgaWYgKHJlYWRSZXN1bHQg
IT0gTlBFUlJfTk9fRVJST1IpCiAgICAgICAgICAgICByZXR1cm4gcmVhZFJlc3VsdDsKICAgICB9
IGVsc2UgewogICAgICAgICBidWZmZXIucmVzaXplKGxlbik7CkluZGV4OiBXZWJDb3JlL3BsdWdp
bnMvUGx1Z2luVmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3
LmgJKHJldmlzaW9uIDMzMDAyKQorKysgV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcuaAkod29y
a2luZyBjb3B5KQpAQCAtMTE4LDggKzExOCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIGludDMyIHdyaXRlKE5QU3RyZWFtKiBzdHJlYW0sIGludDMyIGxlbiwgdm9pZCogYnVmZmVy
KTsKICAgICAgICAgTlBFcnJvciBkZXN0cm95U3RyZWFtKE5QU3RyZWFtKiBzdHJlYW0sIE5QUmVh
c29uIHJlYXNvbik7CiAgICAgICAgIGNvbnN0IGNoYXIqIHVzZXJBZ2VudCgpOworICAgICAgICBz
dGF0aWMgY29uc3QgY2hhciogdXNlckFnZW50U3RhdGljKCk7CiAgICAgICAgIHZvaWQgc3RhdHVz
KGNvbnN0IGNoYXIqIG1lc3NhZ2UpOwogICAgICAgICBOUEVycm9yIGdldFZhbHVlKE5QTlZhcmlh
YmxlIHZhcmlhYmxlLCB2b2lkKiB2YWx1ZSk7CisgICAgICAgIHN0YXRpYyBOUEVycm9yIGdldFZh
bHVlU3RhdGljKE5QTlZhcmlhYmxlIHZhcmlhYmxlLCB2b2lkKiB2YWx1ZSk7CiAgICAgICAgIE5Q
RXJyb3Igc2V0VmFsdWUoTlBQVmFyaWFibGUgdmFyaWFibGUsIHZvaWQqIHZhbHVlKTsKICAgICAg
ICAgdm9pZCBpbnZhbGlkYXRlUmVjdChOUFJlY3QqKTsKICAgICAgICAgdm9pZCBpbnZhbGlkYXRl
UmVnaW9uKE5QUmVnaW9uKTsKSW5kZXg6IFdlYkNvcmUvcGx1Z2lucy9ucGFwaS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9wbHVnaW5zL25wYXBpLmNwcAkocmV2aXNpb24gMzMwMDIpCisrKyBX
ZWJDb3JlL3BsdWdpbnMvbnBhcGkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDcsMTAgKzEwNyw4
IEBAIGNvbnN0IGNoYXIqIE5QTl9Vc2VyQWdlbnQoTlBQIGluc3RhbmNlKQogewogICAgIFBsdWdp
blZpZXcqIHZpZXcgPSBwbHVnaW5WaWV3Rm9ySW5zdGFuY2UoaW5zdGFuY2UpOwogCi0gICAgIC8v
IEZJWE1FOiBTb21lIHBsdWctaW5zIGNhbGwgTlBOX1VzZXJBZ2VudCB3aXRoIGEgbnVsbCBpbnN0
YW5jZSBpbiB0aGVpciBOUF9pbml0aWFsaXplIGZ1bmN0aW9uIQotICAgICAvLyBXZSdkIG5lZWQg
YSB3YXkgdG8gZ2V0IGEgdXNlciBhZ2VudCB3aXRob3V0IGhhdmluZyBhIGZyYW1lIGFyb3VuZC4K
ICAgICAgaWYgKCF2aWV3KQotICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICByZXR1cm4gUGx1
Z2luVmlldzo6dXNlckFnZW50U3RhdGljKCk7CiAgCiAgICAgcmV0dXJuIHZpZXctPnVzZXJBZ2Vu
dCgpOwogfQpAQCAtMTM3LDExICsxMzUsMTEgQEAgdm9pZCBOUE5fRm9yY2VSZWRyYXcoTlBQIGlu
c3RhbmNlKQogCiBOUEVycm9yIE5QTl9HZXRWYWx1ZShOUFAgaW5zdGFuY2UsIE5QTlZhcmlhYmxl
IHZhcmlhYmxlLCB2b2lkKiB2YWx1ZSkKIHsKLSAgICAvLyBGSVhNRTogQWNyb2JhdCByZWFkZXIg
cGx1Z2luIGNhbGxzIE5QTl9HZXRWYWx1ZSBiZWZvcmUgYSBQbHVnaW5WaWV3Ci0gICAgLy8gaGFz
IGJlZW4gY3JlYXRlZAotICAgIGlmICghaW5zdGFuY2UpCi0gICAgICAgIHJldHVybiBOUEVSUl9H
RU5FUklDX0VSUk9SOworICAgIFBsdWdpblZpZXcqIHZpZXcgPSBwbHVnaW5WaWV3Rm9ySW5zdGFu
Y2UoaW5zdGFuY2UpOwogCisgICAgIGlmICghdmlldykKKyAgICAgICAgIHJldHVybiBQbHVnaW5W
aWV3OjpnZXRWYWx1ZVN0YXRpYyh2YXJpYWJsZSwgdmFsdWUpOworIAogICAgIHJldHVybiBwbHVn
aW5WaWV3Rm9ySW5zdGFuY2UoaW5zdGFuY2UpLT5nZXRWYWx1ZSh2YXJpYWJsZSwgdmFsdWUpOwog
fQogCkluZGV4OiBXZWJDb3JlL3BsdWdpbnMvZ3RrL1BsdWdpblZpZXdHdGsuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcGx1Z2lucy9ndGsvUGx1Z2luVmlld0d0ay5jcHAJKHJldmlzaW9uIDMz
MDAyKQorKysgV2ViQ29yZS9wbHVnaW5zL2d0ay9QbHVnaW5WaWV3R3RrLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjI0LDEwICsyMjQsMTIgQEAgdm9pZCBQbHVnaW5WaWV3OjpzZXROUFdpbmRvd1Jl
Y3QoY29uc3QgSQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9wbHVnaW4tPnBsdWdpbkZ1
bmNzKCktPnNldHdpbmRvdykgeworICAgICAgICBQbHVnaW5WaWV3OjpzZXRDdXJyZW50UGx1Z2lu
Vmlldyh0aGlzKTsKICAgICAgICAgS0pTOjpKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9j
a3M7CiAgICAgICAgIHNldENhbGxpbmdQbHVnaW4odHJ1ZSk7CiAgICAgICAgIG1fcGx1Z2luLT5w
bHVnaW5GdW5jcygpLT5zZXR3aW5kb3cobV9pbnN0YW5jZSwgJm1fbnBXaW5kb3cpOwogICAgICAg
ICBzZXRDYWxsaW5nUGx1Z2luKGZhbHNlKTsKKyAgICAgICAgUGx1Z2luVmlldzo6c2V0Q3VycmVu
dFBsdWdpblZpZXcoMCk7CiAKICAgICAgICAgaWYgKCFtX2lzV2luZG93ZWQpCiAgICAgICAgICAg
ICByZXR1cm47CkBAIC0yODEsMTYgKzI4MywyMCBAQCB2b2lkIFBsdWdpblZpZXc6OnN0b3AoKQog
ICAgIG1fbnBXaW5kb3cud3NfaW5mbyA9IDA7CiAjZW5kaWYKICAgICBpZiAobV9wbHVnaW4tPnBs
dWdpbkZ1bmNzKCktPnNldHdpbmRvdyAmJiAhbV9wbHVnaW4tPnF1aXJrcygpLmNvbnRhaW5zKFBs
dWdpblF1aXJrRG9udFNldE51bGxXaW5kb3dIYW5kbGVPbkRlc3Ryb3kpKSB7CisgICAgICAgIFBs
dWdpblZpZXc6OnNldEN1cnJlbnRQbHVnaW5WaWV3KHRoaXMpOwogICAgICAgICBzZXRDYWxsaW5n
UGx1Z2luKHRydWUpOwogICAgICAgICBtX3BsdWdpbi0+cGx1Z2luRnVuY3MoKS0+c2V0d2luZG93
KG1faW5zdGFuY2UsICZtX25wV2luZG93KTsKICAgICAgICAgc2V0Q2FsbGluZ1BsdWdpbihmYWxz
ZSk7CisgICAgICAgIFBsdWdpblZpZXc6OnNldEN1cnJlbnRQbHVnaW5WaWV3KDApOwogICAgIH0K
IAogICAgIC8vIERlc3Ryb3kgdGhlIHBsdWdpbgogICAgIHsKKyAgICAgICAgUGx1Z2luVmlldzo6
c2V0Q3VycmVudFBsdWdpblZpZXcodGhpcyk7CiAgICAgICAgIHNldENhbGxpbmdQbHVnaW4odHJ1
ZSk7CiAgICAgICAgIG1fcGx1Z2luLT5wbHVnaW5GdW5jcygpLT5kZXN0cm95KG1faW5zdGFuY2Us
IDApOwogICAgICAgICBzZXRDYWxsaW5nUGx1Z2luKGZhbHNlKTsKKyAgICAgICAgUGx1Z2luVmll
dzo6c2V0Q3VycmVudFBsdWdpblZpZXcoMCk7CiAgICAgfQogCiAgICAgbV9pbnN0YW5jZS0+cGRh
dGEgPSAwOwpAQCAtMzA5LDYgKzMxNSwxMiBAQCBjb25zdCBjaGFyKiBQbHVnaW5WaWV3Ojp1c2Vy
QWdlbnQoKQogICAgIHJldHVybiBtX3VzZXJBZ2VudC5kYXRhKCk7CiB9CiAKK2NvbnN0IGNoYXIq
IFBsdWdpblZpZXc6OnVzZXJBZ2VudFN0YXRpYygpCit7CisgICAgLy9GSVhNRSAtIExpZSBhbmQg
c2F5IHdlIGFyZSBNb3ppbGxhCisgICAgcmV0dXJuIE1vemlsbGFVc2VyQWdlbnQ7Cit9CisKIE5Q
RXJyb3IgUGx1Z2luVmlldzo6aGFuZGxlUG9zdFJlYWRGaWxlKFZlY3RvcjxjaGFyPiYgYnVmZmVy
LCB1aW50MzIgbGVuLCBjb25zdCBjaGFyKiBidWYpCiB7CiAgICAgU3RyaW5nIGZpbGVuYW1lKGJ1
ZiwgbGVuKTsKQEAgLTMzOCw4OCArMzUwLDExMyBAQCBOUEVycm9yIFBsdWdpblZpZXc6OmhhbmRs
ZVBvc3RSZWFkRmlsZShWCiAgICAgcmV0dXJuIE5QRVJSX05PX0VSUk9SOwogfQogCi1OUEVycm9y
IFBsdWdpblZpZXc6OmdldFZhbHVlKE5QTlZhcmlhYmxlIHZhcmlhYmxlLCB2b2lkKiB2YWx1ZSkK
K05QRXJyb3IgUGx1Z2luVmlldzo6Z2V0VmFsdWVTdGF0aWMoTlBOVmFyaWFibGUgdmFyaWFibGUs
IHZvaWQqIHZhbHVlKQogewogICAgIHN3aXRjaCAodmFyaWFibGUpIHsKLSNpZiBkZWZpbmVkKEdE
S19XSU5ET1dJTkdfWDExKQotICAgICAgICBjYXNlIE5QTlZ4dEFwcENvbnRleHQ6IHsKLSAgICAg
ICAgICAgIGlmICghbV9uZWVkc1hFbWJlZCkgewotICAgICAgICAgICAgICAgICoodm9pZCAqKil2
YWx1ZSA9IFh0RGlzcGxheVRvQXBwbGljYXRpb25Db250ZXh0IChHVEtfWFRCSU4obV93aW5kb3cp
LT54dGNsaWVudC54dGRpc3BsYXkpOwotCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5QRVJSX05P
X0VSUk9SOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5QRVJS
X0dFTkVSSUNfRVJST1I7Ci0gICAgICAgIH0KKyAgICBjYXNlIE5QTlZUb29sa2l0OiB7CisjaWYg
UExBVEZPUk0oR1RLKQorICAgICAgICAqKCh1aW50MzIgKil2YWx1ZSkgPSAyOworI2Vsc2UKKyAg
ICAgICAgKigodWludDMyICopdmFsdWUpID0gMDsKICNlbmRpZgorICAgICAgICByZXR1cm4gTlBF
UlJfTk9fRVJST1I7CisgICAgfQogCi0gICAgICAgIGNhc2UgTlBOVlRvb2xraXQ6IHsKLSNpZiBQ
TEFURk9STShHVEspCi0gICAgICAgICAgICAqKCh1aW50MzIgKil2YWx1ZSkgPSAyOworICAgIGNh
c2UgTlBOVlN1cHBvcnRzWEVtYmVkQm9vbDogeworI2lmIGRlZmluZWQoR0RLX1dJTkRPV0lOR19Y
MTEpCisgICAgICAgICooKHVpbnQzMiAqKXZhbHVlKSA9IHRydWU7CiAjZWxzZQotICAgICAgICAg
ICAgKigodWludDMyICopdmFsdWUpID0gMDsKKyAgICAgICAgKigodWludDMyICopdmFsdWUpID0g
ZmFsc2U7CiAjZW5kaWYKLSAgICAgICAgICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsKLSAgICAg
ICAgfQorICAgICAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7CisgICAgfQorCisgICAgY2FzZSBO
UE5WamF2YXNjcmlwdEVuYWJsZWRCb29sOiB7CisgICAgICAgICooKHVpbnQzMiAqKXZhbHVlKSA9
IHRydWU7CisgICAgICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsKKyAgICB9CisKKyAgICBkZWZh
dWx0OgorICAgICAgICByZXR1cm4gTlBFUlJfR0VORVJJQ19FUlJPUjsKKyAgICB9Cit9CiAKLSAg
ICAgICAgY2FzZSBOUE5WU3VwcG9ydHNYRW1iZWRCb29sOiB7CitOUEVycm9yIFBsdWdpblZpZXc6
OmdldFZhbHVlKE5QTlZhcmlhYmxlIHZhcmlhYmxlLCB2b2lkKiB2YWx1ZSkKK3sKKyAgICBzd2l0
Y2ggKHZhcmlhYmxlKSB7CisgICAgY2FzZSBOUE5WeERpc3BsYXk6IHsKICNpZiBkZWZpbmVkKEdE
S19XSU5ET1dJTkdfWDExKQotICAgICAgICAgICAgKigodWludDMyICopdmFsdWUpID0gdHJ1ZTsK
KyAgICAgICAgaWYgKG1fbmVlZHNYRW1iZWQpCisgICAgICAgICAgICAqKHZvaWQgKiopdmFsdWUg
PSAodm9pZCAqKUdES19ESVNQTEFZKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICoodm9p
ZCAqKil2YWx1ZSA9ICh2b2lkICopR1RLX1hUQklOKG1fd2luZG93KS0+eHRjbGllbnQueHRkaXNw
bGF5OworICAgICAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7CiAjZWxzZQotICAgICAgICAgICAg
KigodWludDMyICopdmFsdWUpID0gZmFsc2U7CisgICAgICAgIHJldHVybiBOUEVSUl9HRU5FUklD
X0VSUk9SOwogI2VuZGlmCisgICAgfQorCisjaWYgZGVmaW5lZChHREtfV0lORE9XSU5HX1gxMSkK
KyAgICBjYXNlIE5QTlZ4dEFwcENvbnRleHQ6IHsKKyAgICAgICAgaWYgKCFtX25lZWRzWEVtYmVk
KSB7CisgICAgICAgICAgICAqKHZvaWQgKiopdmFsdWUgPSBYdERpc3BsYXlUb0FwcGxpY2F0aW9u
Q29udGV4dCAoR1RLX1hUQklOKG1fd2luZG93KS0+eHRjbGllbnQueHRkaXNwbGF5KTsKKwogICAg
ICAgICAgICAgcmV0dXJuIE5QRVJSX05PX0VSUk9SOwotICAgICAgICB9CisgICAgICAgIH0gZWxz
ZQorICAgICAgICAgICAgcmV0dXJuIE5QRVJSX0dFTkVSSUNfRVJST1I7CisgICAgfQorI2VuZGlm
CiAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKLSAgICAgICAgY2FzZSBOUE5WV2lu
ZG93TlBPYmplY3Q6IHsKLSAgICAgICAgaWYgKG1faXNKYXZhU2NyaXB0UGF1c2VkKQotICAgICAg
ICByZXR1cm4gTlBFUlJfR0VORVJJQ19FUlJPUjsKKyAgICBjYXNlIE5QTlZXaW5kb3dOUE9iamVj
dDogeworICAgIGlmIChtX2lzSmF2YVNjcmlwdFBhdXNlZCkKKyAgICByZXR1cm4gTlBFUlJfR0VO
RVJJQ19FUlJPUjsKIAotICAgICAgICAgICAgTlBPYmplY3QqIHdpbmRvd1NjcmlwdE9iamVjdCA9
IG1fcGFyZW50RnJhbWUtPndpbmRvd1NjcmlwdE5QT2JqZWN0KCk7CisgICAgICAgIE5QT2JqZWN0
KiB3aW5kb3dTY3JpcHRPYmplY3QgPSBtX3BhcmVudEZyYW1lLT53aW5kb3dTY3JpcHROUE9iamVj
dCgpOwogCi0gICAgICAgICAgICAvLyBSZXR1cm4gdmFsdWUgaXMgZXhwZWN0ZWQgdG8gYmUgcmV0
YWluZWQsIGFzIGRlc2NyaWJlZCBoZXJlOiA8aHR0cDovL3d3dy5tb3ppbGxhLm9yZy9wcm9qZWN0
cy9wbHVnaW4vbnBydW50aW1lLmh0bWw+Ci0gICAgICAgICAgICBpZiAod2luZG93U2NyaXB0T2Jq
ZWN0KQotICAgICAgICAgICAgICAgIF9OUE5fUmV0YWluT2JqZWN0KHdpbmRvd1NjcmlwdE9iamVj
dCk7Ci0KLSAgICAgICAgICAgIHZvaWQqKiB2ID0gKHZvaWQqKil2YWx1ZTsKLSAgICAgICAgICAg
ICp2ID0gd2luZG93U2NyaXB0T2JqZWN0OwotICAgICAgICAgICAgCi0gICAgICAgICAgICByZXR1
cm4gTlBFUlJfTk9fRVJST1I7Ci0gICAgICAgIH0KKyAgICAgICAgLy8gUmV0dXJuIHZhbHVlIGlz
IGV4cGVjdGVkIHRvIGJlIHJldGFpbmVkLCBhcyBkZXNjcmliZWQgaGVyZTogPGh0dHA6Ly93d3cu
bW96aWxsYS5vcmcvcHJvamVjdHMvcGx1Z2luL25wcnVudGltZS5odG1sPgorICAgICAgICBpZiAo
d2luZG93U2NyaXB0T2JqZWN0KQorICAgICAgICAgICAgX05QTl9SZXRhaW5PYmplY3Qod2luZG93
U2NyaXB0T2JqZWN0KTsKIAotICAgICAgICBjYXNlIE5QTlZQbHVnaW5FbGVtZW50TlBPYmplY3Q6
IHsKLSAgICAgICAgaWYgKG1faXNKYXZhU2NyaXB0UGF1c2VkKQotICAgICAgICByZXR1cm4gTlBF
UlJfR0VORVJJQ19FUlJPUjsKKyAgICAgICAgdm9pZCoqIHYgPSAodm9pZCoqKXZhbHVlOworICAg
ICAgICAqdiA9IHdpbmRvd1NjcmlwdE9iamVjdDsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBO
UEVSUl9OT19FUlJPUjsKKyAgICB9CiAKLSAgICAgICAgICAgIE5QT2JqZWN0KiBwbHVnaW5TY3Jp
cHRPYmplY3QgPSAwOworICAgIGNhc2UgTlBOVlBsdWdpbkVsZW1lbnROUE9iamVjdDogeworICAg
IGlmIChtX2lzSmF2YVNjcmlwdFBhdXNlZCkKKyAgICByZXR1cm4gTlBFUlJfR0VORVJJQ19FUlJP
UjsKIAotICAgICAgICAgICAgaWYgKG1fZWxlbWVudC0+aGFzVGFnTmFtZShhcHBsZXRUYWcpIHx8
IG1fZWxlbWVudC0+aGFzVGFnTmFtZShlbWJlZFRhZykgfHwgbV9lbGVtZW50LT5oYXNUYWdOYW1l
KG9iamVjdFRhZykpCi0gICAgICAgICAgICAgICAgcGx1Z2luU2NyaXB0T2JqZWN0ID0gc3RhdGlj
X2Nhc3Q8SFRNTFBsdWdJbkVsZW1lbnQqPihtX2VsZW1lbnQpLT5nZXROUE9iamVjdCgpOworICAg
ICAgICBOUE9iamVjdCogcGx1Z2luU2NyaXB0T2JqZWN0ID0gMDsKIAotICAgICAgICAgICAgLy8g
UmV0dXJuIHZhbHVlIGlzIGV4cGVjdGVkIHRvIGJlIHJldGFpbmVkLCBhcyBkZXNjcmliZWQgaGVy
ZTogPGh0dHA6Ly93d3cubW96aWxsYS5vcmcvcHJvamVjdHMvcGx1Z2luL25wcnVudGltZS5odG1s
PgotICAgICAgICAgICAgaWYgKHBsdWdpblNjcmlwdE9iamVjdCkKLSAgICAgICAgICAgICAgICBf
TlBOX1JldGFpbk9iamVjdChwbHVnaW5TY3JpcHRPYmplY3QpOworICAgICAgICBpZiAobV9lbGVt
ZW50LT5oYXNUYWdOYW1lKGFwcGxldFRhZykgfHwgbV9lbGVtZW50LT5oYXNUYWdOYW1lKGVtYmVk
VGFnKSB8fCBtX2VsZW1lbnQtPmhhc1RhZ05hbWUob2JqZWN0VGFnKSkKKyAgICAgICAgICAgIHBs
dWdpblNjcmlwdE9iamVjdCA9IHN0YXRpY19jYXN0PEhUTUxQbHVnSW5FbGVtZW50Kj4obV9lbGVt
ZW50KS0+Z2V0TlBPYmplY3QoKTsKIAotICAgICAgICAgICAgdm9pZCoqIHYgPSAodm9pZCoqKXZh
bHVlOwotICAgICAgICAgICAgKnYgPSBwbHVnaW5TY3JpcHRPYmplY3Q7CisgICAgICAgIC8vIFJl
dHVybiB2YWx1ZSBpcyBleHBlY3RlZCB0byBiZSByZXRhaW5lZCwgYXMgZGVzY3JpYmVkIGhlcmU6
IDxodHRwOi8vd3d3Lm1vemlsbGEub3JnL3Byb2plY3RzL3BsdWdpbi9ucHJ1bnRpbWUuaHRtbD4K
KyAgICAgICAgaWYgKHBsdWdpblNjcmlwdE9iamVjdCkKKyAgICAgICAgICAgIF9OUE5fUmV0YWlu
T2JqZWN0KHBsdWdpblNjcmlwdE9iamVjdCk7CiAKLSAgICAgICAgICAgIHJldHVybiBOUEVSUl9O
T19FUlJPUjsKLSAgICAgICAgfQorICAgICAgICB2b2lkKiogdiA9ICh2b2lkKiopdmFsdWU7Cisg
ICAgICAgICp2ID0gcGx1Z2luU2NyaXB0T2JqZWN0OworCisgICAgICAgIHJldHVybiBOUEVSUl9O
T19FUlJPUjsKKyAgICB9CiAjZW5kaWYKIAotICAgICAgICBjYXNlIE5QTlZuZXRzY2FwZVdpbmRv
dzogewotICAgICAgICAgICAgdm9pZCogdyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHZhbHVl
KTsKKyAgICBjYXNlIE5QTlZuZXRzY2FwZVdpbmRvdzogeworICAgICAgICB2b2lkKiB3ID0gcmVp
bnRlcnByZXRfY2FzdDx2b2lkKj4odmFsdWUpOwogCiAjaWZkZWYgR0RLX1dJTkRPV0lOR19YMTEK
LSAgICAgICAgICAgICooKFhJRCAqKXcpID0gR0RLX1dJTkRPV19YV0lORE9XKGNvbnRhaW5pbmdX
aW5kb3coKS0+d2luZG93KTsKKyAgICAgICAgKigoWElEICopdykgPSBHREtfV0lORE9XX1hXSU5E
T1coY29udGFpbmluZ1dpbmRvdygpLT53aW5kb3cpOwogI2VuZGlmCiAjaWZkZWYgR0RLX1dJTkRP
V0lOR19XSU4zMgotICAgICAgICAgICAgKigoSFdORCAqKXcpID0gR0RLX1dJTkRPV0lOR19IV05E
KGNvbnRhaW5pbmdXaW5kb3coKS0+d2luZG93KTsKKyAgICAgICAgKigoSFdORCAqKXcpID0gR0RL
X1dJTkRPV0lOR19IV05EKGNvbnRhaW5pbmdXaW5kb3coKS0+d2luZG93KTsKICNlbmRpZgotICAg
ICAgICAgICAgcmV0dXJuIE5QRVJSX05PX0VSUk9SOwotICAgICAgICB9Ci0gICAgICAgIGRlZmF1
bHQ6Ci0gICAgICAgICAgICByZXR1cm4gTlBFUlJfR0VORVJJQ19FUlJPUjsKKyAgICAgICAgcmV0
dXJuIE5QRVJSX05PX0VSUk9SOworICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4g
Z2V0VmFsdWVTdGF0aWModmFyaWFibGUsIHZhbHVlKTsKICAgICB9CiB9CiAKQEAgLTQ4NSw4ICs1
MjIsMTQgQEAgdm9pZCBQbHVnaW5WaWV3Ojppbml0KCkKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIGlmIChtX3BsdWdpbi0+cGx1Z2luRnVuY3MoKS0+Z2V0dmFsdWUpCisgICAgaWYgKG1f
cGx1Z2luLT5wbHVnaW5GdW5jcygpLT5nZXR2YWx1ZSkgeworICAgICAgICBQbHVnaW5WaWV3Ojpz
ZXRDdXJyZW50UGx1Z2luVmlldyh0aGlzKTsKKyAgICAgICAgS0pTOjpKU0xvY2s6OkRyb3BBbGxM
b2NrcyBkcm9wQWxsTG9ja3M7CisgICAgICAgIHNldENhbGxpbmdQbHVnaW4odHJ1ZSk7CiAgICAg
ICAgIG1fcGx1Z2luLT5wbHVnaW5GdW5jcygpLT5nZXR2YWx1ZShtX2luc3RhbmNlLCBOUFBWcGx1
Z2luTmVlZHNYRW1iZWQsICZtX25lZWRzWEVtYmVkKTsKKyAgICAgICAgc2V0Q2FsbGluZ1BsdWdp
bihmYWxzZSk7CisgICAgICAgIFBsdWdpblZpZXc6OnNldEN1cnJlbnRQbHVnaW5WaWV3KDApOwor
ICAgIH0KIAogI2lmIGRlZmluZWQoR0RLX1dJTkRPV0lOR19YMTEpCiAgICAgaWYgKG1fbmVlZHNY
RW1iZWQpIHsKSW5kZXg6IFdlYkNvcmUvcGx1Z2lucy9xdC9QbHVnaW5QYWNrYWdlUXQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGx1Z2lucy9xdC9QbHVnaW5QYWNrYWdlUXQuY3BwCShyZXZp
c2lvbiAzMzAwMikKKysrIFdlYkNvcmUvcGx1Z2lucy9xdC9QbHVnaW5QYWNrYWdlUXQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC04Nyw3ICs4Nyw3IEBAIGJvb2wgUGx1Z2luUGFja2FnZTo6ZmV0Y2hJ
bmZvKCkKICAgICBzLnNwbGl0KFVDaGFyKCc7JyksIGZhbHNlLCB0eXBlcyk7CiAgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCB0eXBlcy5zaXplKCk7ICsraSkgewogICAgICAgICBWZWN0b3I8U3RyaW5n
PiBtaW1lOwotICAgICAgICB0eXBlc1tpXS5zcGxpdChVQ2hhcignOicpLCBmYWxzZSwgbWltZSk7
IAorICAgICAgICB0eXBlc1tpXS5zcGxpdChVQ2hhcignOicpLCB0cnVlLCBtaW1lKTsgCiAgICAg
ICAgIGlmIChtaW1lLnNpemUoKSA+IDApIHsKICAgICAgICAgICAgIFZlY3RvcjxTdHJpbmc+IGV4
dHM7CiAgICAgICAgICAgICBtaW1lWzBdLnNwbGl0KFVDaGFyKCcsJyksIGZhbHNlLCBleHRzKTsK
QEAgLTExMCw2ICsxMTAsNyBAQCBib29sIFBsdWdpblBhY2thZ2U6OmxvYWQoKQogICAgIH0KIAog
ICAgIG1fbW9kdWxlID0gbmV3IFFMaWJyYXJ5KChRU3RyaW5nKW1fcGF0aCk7CisgICAgbV9tb2R1
bGUtPnNldExvYWRIaW50cyhRTGlicmFyeTo6UmVzb2x2ZUFsbFN5bWJvbHNIaW50KTsKICAgICBp
ZiAoIW1fbW9kdWxlLT5sb2FkKCkpIHsKICAgICAgICAgTE9HKFBsdWdpbiwgIiVzIG5vdCBsb2Fk
ZWQiLCBtX3BhdGgudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKSW5kZXg6
IFdlYkNvcmUvcGx1Z2lucy9xdC9QbHVnaW5WaWV3UXQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGx1Z2lucy9xdC9QbHVnaW5WaWV3UXQuY3BwCShyZXZpc2lvbiAzMzAwMikKKysrIFdlYkNv
cmUvcGx1Z2lucy9xdC9QbHVnaW5WaWV3UXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Myw3ICs5
Myw3IEBAIHZvaWQgUGx1Z2luVmlldzo6dXBkYXRlV2luZG93KCkgY29uc3QKICAgICBtX2NsaXBS
ZWN0ID0gd2luZG93Q2xpcFJlY3QoKTsKICAgICBtX2NsaXBSZWN0Lm1vdmUoLW1fd2luZG93UmVj
dC54KCksIC1tX3dpbmRvd1JlY3QueSgpKTsKIAotICAgIGlmKG1fd2luZG93KSB7CisgICAgaWYg
KG1fd2luZG93KSB7CiAgICAgICAgIG1fd2luZG93LT5tb3ZlKG1fd2luZG93UmVjdC54KCksIG1f
d2luZG93UmVjdC55KCkpOwogICAgICAgICBtX3dpbmRvdy0+cmVzaXplKG1fd2luZG93UmVjdC53
aWR0aCgpLCBtX3dpbmRvd1JlY3QuaGVpZ2h0KCkpOwogICAgIH0KQEAgLTE4NSwxMCArMTg1LDE1
IEBAIHZvaWQgUGx1Z2luVmlldzo6c2V0TlBXaW5kb3dSZWN0KGNvbnN0IEkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgaWYgKG1fcGx1Z2luLT5wbHVnaW5GdW5jcygpLT5zZXR3aW5kb3cpIHsKKyAg
ICAgICAgUGx1Z2luVmlldzo6c2V0Q3VycmVudFBsdWdpblZpZXcodGhpcyk7CiAgICAgICAgIEtK
Uzo6SlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzOwogICAgICAgICBzZXRDYWxsaW5n
UGx1Z2luKHRydWUpOwogICAgICAgICBtX3BsdWdpbi0+cGx1Z2luRnVuY3MoKS0+c2V0d2luZG93
KG1faW5zdGFuY2UsICZtX25wV2luZG93KTsKICAgICAgICAgc2V0Q2FsbGluZ1BsdWdpbihmYWxz
ZSk7CisgICAgICAgIFBsdWdpblZpZXc6OnNldEN1cnJlbnRQbHVnaW5WaWV3KDApOworCisgICAg
ICAgIGlmICghbV9pc1dpbmRvd2VkKQorICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIEFT
U0VSVChtX3dpbmRvdyk7CiAgICAgfQpAQCAtMjM3LDE2ICsyNDIsMjAgQEAgdm9pZCBQbHVnaW5W
aWV3OjpzdG9wKCkKICAgICBkZWxldGUgKE5QU2V0V2luZG93Q2FsbGJhY2tTdHJ1Y3QgKiltX25w
V2luZG93LndzX2luZm87CiAgICAgbV9ucFdpbmRvdy53c19pbmZvID0gMDsKICAgICBpZiAobV9w
bHVnaW4tPnBsdWdpbkZ1bmNzKCktPnNldHdpbmRvdyAmJiAhbV9wbHVnaW4tPnF1aXJrcygpLmNv
bnRhaW5zKFBsdWdpblF1aXJrRG9udFNldE51bGxXaW5kb3dIYW5kbGVPbkRlc3Ryb3kpKSB7Cisg
ICAgICAgIFBsdWdpblZpZXc6OnNldEN1cnJlbnRQbHVnaW5WaWV3KHRoaXMpOwogICAgICAgICBz
ZXRDYWxsaW5nUGx1Z2luKHRydWUpOwogICAgICAgICBtX3BsdWdpbi0+cGx1Z2luRnVuY3MoKS0+
c2V0d2luZG93KG1faW5zdGFuY2UsICZtX25wV2luZG93KTsKICAgICAgICAgc2V0Q2FsbGluZ1Bs
dWdpbihmYWxzZSk7CisgICAgICAgIFBsdWdpblZpZXc6OnNldEN1cnJlbnRQbHVnaW5WaWV3KDAp
OwogICAgIH0KIAogICAgIC8vIERlc3Ryb3kgdGhlIHBsdWdpbgogICAgIHsKKyAgICAgICAgUGx1
Z2luVmlldzo6c2V0Q3VycmVudFBsdWdpblZpZXcodGhpcyk7CiAgICAgICAgIHNldENhbGxpbmdQ
bHVnaW4odHJ1ZSk7CiAgICAgICAgIG1fcGx1Z2luLT5wbHVnaW5GdW5jcygpLT5kZXN0cm95KG1f
aW5zdGFuY2UsIDApOwogICAgICAgICBzZXRDYWxsaW5nUGx1Z2luKGZhbHNlKTsKKyAgICAgICAg
UGx1Z2luVmlldzo6c2V0Q3VycmVudFBsdWdpblZpZXcoMCk7CiAgICAgfQogCiAgICAgbV9pbnN0
YW5jZS0+cGRhdGEgPSAwOwpAQCAtMjY1LDYgKzI3NCwxMiBAQCBjb25zdCBjaGFyKiBQbHVnaW5W
aWV3Ojp1c2VyQWdlbnQoKQogICAgIHJldHVybiBtX3VzZXJBZ2VudC5kYXRhKCk7CiB9CiAKK2Nv
bnN0IGNoYXIqIFBsdWdpblZpZXc6OnVzZXJBZ2VudFN0YXRpYygpCit7CisgICAgLy9GSVhNRSAt
IEp1c3Qgc2F5IHdlIGFyZSBNb3ppbGxhCisgICAgcmV0dXJuIE1vemlsbGFVc2VyQWdlbnQ7Cit9
CisKIE5QRXJyb3IgUGx1Z2luVmlldzo6aGFuZGxlUG9zdFJlYWRGaWxlKFZlY3RvcjxjaGFyPiYg
YnVmZmVyLCB1aW50MzIgbGVuLCBjb25zdCBjaGFyKiBidWYpCiB7CiAgICAgU3RyaW5nIGZpbGVu
YW1lKGJ1ZiwgbGVuKTsKQEAgLTI3Miw3ICsyODcsNyBAQCBOUEVycm9yIFBsdWdpblZpZXc6Omhh
bmRsZVBvc3RSZWFkRmlsZShWCiAgICAgaWYgKGZpbGVuYW1lLnN0YXJ0c1dpdGgoImZpbGU6Ly8v
IikpCiAgICAgICAgIGZpbGVuYW1lID0gZmlsZW5hbWUuc3Vic3RyaW5nKDgpOwogCi0gICAgaWYo
IWZpbGVFeGlzdHMoZmlsZW5hbWUpKQorICAgIGlmICghZmlsZUV4aXN0cyhmaWxlbmFtZSkpCiAg
ICAgICAgIHJldHVybiBOUEVSUl9GSUxFX05PVF9GT1VORDsKIAogICAgIC8vRklYTUUgLSByZWFk
IHRoZSBmaWxlIGRhdGEgaW50byBidWZmZXIKQEAgLTI5Myw4MSArMzA4LDg5IEBAIE5QRXJyb3Ig
UGx1Z2luVmlldzo6aGFuZGxlUG9zdFJlYWRGaWxlKFYKICAgICByZXR1cm4gTlBFUlJfTk9fRVJS
T1I7CiB9CiAKK05QRXJyb3IgUGx1Z2luVmlldzo6Z2V0VmFsdWVTdGF0aWMoTlBOVmFyaWFibGUg
dmFyaWFibGUsIHZvaWQqIHZhbHVlKQoreworICAgIHN3aXRjaCAodmFyaWFibGUpIHsKKyAgICBj
YXNlIE5QTlZUb29sa2l0OiB7CisgICAgICAgICooKHVpbnQzMiAqKXZhbHVlKSA9IDA7CisgICAg
ICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsKKyAgICB9CisKKyAgICBjYXNlIE5QTlZTdXBwb3J0
c1hFbWJlZEJvb2w6IHsKKyAgICAgICAgKigodWludDMyICopdmFsdWUpID0gdHJ1ZTsKKyAgICAg
ICAgcmV0dXJuIE5QRVJSX05PX0VSUk9SOworICAgIH0KKworICAgIGNhc2UgTlBOVmphdmFzY3Jp
cHRFbmFibGVkQm9vbDogeworICAgICAgICAqKCh1aW50MzIgKil2YWx1ZSkgPSB0cnVlOworICAg
ICAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7CisgICAgfQorCisgICAgZGVmYXVsdDoKKyAgICAg
ICAgcmV0dXJuIE5QRVJSX0dFTkVSSUNfRVJST1I7CisgICAgfQorfQorCiBOUEVycm9yIFBsdWdp
blZpZXc6OmdldFZhbHVlKE5QTlZhcmlhYmxlIHZhcmlhYmxlLCB2b2lkKiB2YWx1ZSkKIHsKICAg
ICBzd2l0Y2ggKHZhcmlhYmxlKSB7Ci0gICAgICAgIGNhc2UgTlBOVnhEaXNwbGF5OiB7Ci0gICAg
ICAgICAgICBpZiAobV93aW5kb3cpCi0gICAgICAgICAgICAgICAgKih2b2lkICoqKXZhbHVlID0g
bV93aW5kb3ctPngxMUluZm8oKS5kaXNwbGF5KCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgKih2b2lkICoqKXZhbHVlID0gY29udGFpbmluZ1dpbmRvdygpLT54MTFJbmZvKCku
ZGlzcGxheSgpOwotICAgICAgICAgICAgcmV0dXJuIE5QRVJSX05PX0VSUk9SOyAgICAgICAgICAg
ICAgICAKLSAgICAgICAgfQotCi0gICAgICAgIGNhc2UgTlBOVnh0QXBwQ29udGV4dDogewotICAg
ICAgICAgICAgcmV0dXJuIE5QRVJSX0dFTkVSSUNfRVJST1I7Ci0gICAgICAgIH0KLQotICAgICAg
ICBjYXNlIE5QTlZUb29sa2l0OiB7Ci0gICAgICAgICAgICAqKCh1aW50MzIgKil2YWx1ZSkgPSAw
OwotICAgICAgICAgICAgcmV0dXJuIE5QRVJSX05PX0VSUk9SOwotICAgICAgICB9Ci0KLSAgICAg
ICAgY2FzZSBOUE5WU3VwcG9ydHNYRW1iZWRCb29sOiB7Ci0gICAgICAgICAgICAqKCh1aW50MzIg
Kil2YWx1ZSkgPSB0cnVlOwotICAgICAgICAgICAgcmV0dXJuIE5QRVJSX05PX0VSUk9SOwotICAg
ICAgICB9CisgICAgY2FzZSBOUE5WeERpc3BsYXk6IHsKKyAgICAgICAgaWYgKG1fd2luZG93KQor
ICAgICAgICAgICAgKih2b2lkICoqKXZhbHVlID0gbV93aW5kb3ctPngxMUluZm8oKS5kaXNwbGF5
KCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICoodm9pZCAqKil2YWx1ZSA9IGNvbnRhaW5p
bmdXaW5kb3coKS0+eDExSW5mbygpLmRpc3BsYXkoKTsKKyAgICAgICAgcmV0dXJuIE5QRVJSX05P
X0VSUk9SOyAgICAgICAgICAgICAgICAKKyAgICB9CiAKLSNpZiBFTkFCTEUoTkVUU0NBUEVfUExV
R0lOX0FQSSkKLSAgICAgICAgY2FzZSBOUE5WV2luZG93TlBPYmplY3Q6IHsKLSAgICAgICAgaWYg
KG1faXNKYXZhU2NyaXB0UGF1c2VkKQorICAgIGNhc2UgTlBOVnh0QXBwQ29udGV4dDogewogICAg
ICAgICByZXR1cm4gTlBFUlJfR0VORVJJQ19FUlJPUjsKKyAgICB9CiAKLSAgICAgICAgICAgIE5Q
T2JqZWN0KiB3aW5kb3dTY3JpcHRPYmplY3QgPSBtX3BhcmVudEZyYW1lLT53aW5kb3dTY3JpcHRO
UE9iamVjdCgpOworI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQorICAgIGNhc2UgTlBO
VldpbmRvd05QT2JqZWN0OiB7CisgICAgaWYgKG1faXNKYXZhU2NyaXB0UGF1c2VkKQorICAgIHJl
dHVybiBOUEVSUl9HRU5FUklDX0VSUk9SOwogCi0gICAgICAgICAgICAvLyBSZXR1cm4gdmFsdWUg
aXMgZXhwZWN0ZWQgdG8gYmUgcmV0YWluZWQsIGFzIGRlc2NyaWJlZCBoZXJlOiA8aHR0cDovL3d3
dy5tb3ppbGxhLm9yZy9wcm9qZWN0cy9wbHVnaW4vbnBydW50aW1lLmh0bWw+Ci0gICAgICAgICAg
ICBpZiAod2luZG93U2NyaXB0T2JqZWN0KQotICAgICAgICAgICAgICAgIF9OUE5fUmV0YWluT2Jq
ZWN0KHdpbmRvd1NjcmlwdE9iamVjdCk7Ci0KLSAgICAgICAgICAgIHZvaWQqKiB2ID0gKHZvaWQq
Kil2YWx1ZTsKLSAgICAgICAgICAgICp2ID0gd2luZG93U2NyaXB0T2JqZWN0OwotICAgICAgICAg
ICAgCi0gICAgICAgICAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7Ci0gICAgICAgIH0KKyAgICAg
ICAgTlBPYmplY3QqIHdpbmRvd1NjcmlwdE9iamVjdCA9IG1fcGFyZW50RnJhbWUtPndpbmRvd1Nj
cmlwdE5QT2JqZWN0KCk7CiAKLSAgICAgICAgY2FzZSBOUE5WUGx1Z2luRWxlbWVudE5QT2JqZWN0
OiB7Ci0gICAgICAgIGlmIChtX2lzSmF2YVNjcmlwdFBhdXNlZCkKLSAgICAgICAgcmV0dXJuIE5Q
RVJSX0dFTkVSSUNfRVJST1I7CisgICAgICAgIC8vIFJldHVybiB2YWx1ZSBpcyBleHBlY3RlZCB0
byBiZSByZXRhaW5lZCwgYXMgZGVzY3JpYmVkIGhlcmU6IDxodHRwOi8vd3d3Lm1vemlsbGEub3Jn
L3Byb2plY3RzL3BsdWdpbi9ucHJ1bnRpbWUuaHRtbD4KKyAgICAgICAgaWYgKHdpbmRvd1Njcmlw
dE9iamVjdCkKKyAgICAgICAgICAgIF9OUE5fUmV0YWluT2JqZWN0KHdpbmRvd1NjcmlwdE9iamVj
dCk7CisKKyAgICAgICAgdm9pZCoqIHYgPSAodm9pZCoqKXZhbHVlOworICAgICAgICAqdiA9IHdp
bmRvd1NjcmlwdE9iamVjdDsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBOUEVSUl9OT19FUlJP
UjsKKyAgICB9CiAKLSAgICAgICAgICAgIE5QT2JqZWN0KiBwbHVnaW5TY3JpcHRPYmplY3QgPSAw
OworICAgIGNhc2UgTlBOVlBsdWdpbkVsZW1lbnROUE9iamVjdDogeworICAgIGlmIChtX2lzSmF2
YVNjcmlwdFBhdXNlZCkKKyAgICByZXR1cm4gTlBFUlJfR0VORVJJQ19FUlJPUjsKIAotICAgICAg
ICAgICAgaWYgKG1fZWxlbWVudC0+aGFzVGFnTmFtZShhcHBsZXRUYWcpIHx8IG1fZWxlbWVudC0+
aGFzVGFnTmFtZShlbWJlZFRhZykgfHwgbV9lbGVtZW50LT5oYXNUYWdOYW1lKG9iamVjdFRhZykp
Ci0gICAgICAgICAgICAgICAgcGx1Z2luU2NyaXB0T2JqZWN0ID0gc3RhdGljX2Nhc3Q8SFRNTFBs
dWdJbkVsZW1lbnQqPihtX2VsZW1lbnQpLT5nZXROUE9iamVjdCgpOworICAgICAgICBOUE9iamVj
dCogcGx1Z2luU2NyaXB0T2JqZWN0ID0gMDsKIAotICAgICAgICAgICAgLy8gUmV0dXJuIHZhbHVl
IGlzIGV4cGVjdGVkIHRvIGJlIHJldGFpbmVkLCBhcyBkZXNjcmliZWQgaGVyZTogPGh0dHA6Ly93
d3cubW96aWxsYS5vcmcvcHJvamVjdHMvcGx1Z2luL25wcnVudGltZS5odG1sPgotICAgICAgICAg
ICAgaWYgKHBsdWdpblNjcmlwdE9iamVjdCkKLSAgICAgICAgICAgICAgICBfTlBOX1JldGFpbk9i
amVjdChwbHVnaW5TY3JpcHRPYmplY3QpOworICAgICAgICBpZiAobV9lbGVtZW50LT5oYXNUYWdO
YW1lKGFwcGxldFRhZykgfHwgbV9lbGVtZW50LT5oYXNUYWdOYW1lKGVtYmVkVGFnKSB8fCBtX2Vs
ZW1lbnQtPmhhc1RhZ05hbWUob2JqZWN0VGFnKSkKKyAgICAgICAgICAgIHBsdWdpblNjcmlwdE9i
amVjdCA9IHN0YXRpY19jYXN0PEhUTUxQbHVnSW5FbGVtZW50Kj4obV9lbGVtZW50KS0+Z2V0TlBP
YmplY3QoKTsKIAotICAgICAgICAgICAgdm9pZCoqIHYgPSAodm9pZCoqKXZhbHVlOwotICAgICAg
ICAgICAgKnYgPSBwbHVnaW5TY3JpcHRPYmplY3Q7CisgICAgICAgIC8vIFJldHVybiB2YWx1ZSBp
cyBleHBlY3RlZCB0byBiZSByZXRhaW5lZCwgYXMgZGVzY3JpYmVkIGhlcmU6IDxodHRwOi8vd3d3
Lm1vemlsbGEub3JnL3Byb2plY3RzL3BsdWdpbi9ucHJ1bnRpbWUuaHRtbD4KKyAgICAgICAgaWYg
KHBsdWdpblNjcmlwdE9iamVjdCkKKyAgICAgICAgICAgIF9OUE5fUmV0YWluT2JqZWN0KHBsdWdp
blNjcmlwdE9iamVjdCk7CiAKLSAgICAgICAgICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsKLSAg
ICAgICAgfQorICAgICAgICB2b2lkKiogdiA9ICh2b2lkKiopdmFsdWU7CisgICAgICAgICp2ID0g
cGx1Z2luU2NyaXB0T2JqZWN0OworCisgICAgICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsKKyAg
ICB9CiAjZW5kaWYKIAotICAgICAgICBjYXNlIE5QTlZuZXRzY2FwZVdpbmRvdzogewotICAgICAg
ICAgICAgdm9pZCogdyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHZhbHVlKTsKLSAgICAgICAg
ICAgICooKFhJRCAqKXcpID0gY29udGFpbmluZ1dpbmRvdygpLT53aW5JZCgpOwotICAgICAgICAg
ICAgcmV0dXJuIE5QRVJSX05PX0VSUk9SOwotICAgICAgICB9Ci0KLSAgICAgICAgY2FzZSBOUE5W
amF2YXNjcmlwdEVuYWJsZWRCb29sOiB7Ci0gICAgICAgICAgICAqKCh1aW50MzIgKil2YWx1ZSkg
PSB0cnVlOwotICAgICAgICAgICAgcmV0dXJuIE5QRVJSX05PX0VSUk9SOwotICAgICAgICB9Cisg
ICAgY2FzZSBOUE5WbmV0c2NhcGVXaW5kb3c6IHsKKyAgICAgICAgdm9pZCogdyA9IHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCo+KHZhbHVlKTsKKyAgICAgICAgKigoWElEICopdykgPSBjb250YWluaW5n
V2luZG93KCktPndpbklkKCk7CisgICAgICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsKKyAgICB9
CiAKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBOUEVSUl9HRU5FUklDX0VS
Uk9SOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBnZXRWYWx1ZVN0YXRpYyh2YXJpYWJs
ZSwgdmFsdWUpOwogICAgIH0KIH0KIApAQCAtNDI1LDkgKzQ0OCwxNCBAQCB2b2lkIFBsdWdpblZp
ZXc6OmluaXQoKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9uZWVkc1hFbWJlZCA9
IGZhbHNlOwotICAgIGlmIChtX3BsdWdpbi0+cGx1Z2luRnVuY3MoKS0+Z2V0dmFsdWUpCisgICAg
aWYgKG1fcGx1Z2luLT5wbHVnaW5GdW5jcygpLT5nZXR2YWx1ZSkgeworICAgICAgICBQbHVnaW5W
aWV3OjpzZXRDdXJyZW50UGx1Z2luVmlldyh0aGlzKTsKKyAgICAgICAgS0pTOjpKU0xvY2s6OkRy
b3BBbGxMb2NrcyBkcm9wQWxsTG9ja3M7CisgICAgICAgIHNldENhbGxpbmdQbHVnaW4odHJ1ZSk7
CiAgICAgICAgIG1fcGx1Z2luLT5wbHVnaW5GdW5jcygpLT5nZXR2YWx1ZShtX2luc3RhbmNlLCBO
UFBWcGx1Z2luTmVlZHNYRW1iZWQsICZtX25lZWRzWEVtYmVkKTsKKyAgICAgICAgc2V0Q2FsbGlu
Z1BsdWdpbihmYWxzZSk7CisgICAgICAgIFBsdWdpblZpZXc6OnNldEN1cnJlbnRQbHVnaW5WaWV3
KDApOworICAgIH0KIAogICAgIGlmIChtX25lZWRzWEVtYmVkKSB7CiAgICAgICAgIG1fd2luZG93
ID0gbmV3IFFYMTFFbWJlZENvbnRhaW5lcihjb250YWluaW5nV2luZG93KCkpOwo=
</data>
<flag name="review"
          id="9204"
          type_id="1"
          status="+"
          setter="zecke"
    />
          </attachment>
      

    </bug>

</bugzilla>