<?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>41649</bug_id>
          
          <creation_ts>2010-07-05 22:20:37 -0700</creation_ts>
          <short_desc>[chromium] Add a few more methods to WebPlugin so that Pepper v2 plugins can support copy/zoom/find</short_desc>
          <delta_ts>2010-07-07 21:52:33 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="John Abd-El-Malek">jam</reporter>
          <assigned_to name="John Abd-El-Malek">jam</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>jorlow</cc>
    
    <cc>levin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>246853</commentid>
    <comment_count>0</comment_count>
    <who name="John Abd-El-Malek">jam</who>
    <bug_when>2010-07-05 22:20:37 -0700</bug_when>
    <thetext>[chromium] Add a few more methods to WebPlugin so that Pepper v2 plugins can support copy/zoom/find</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>246855</commentid>
    <comment_count>1</comment_count>
      <attachid>60586</attachid>
    <who name="John Abd-El-Malek">jam</who>
    <bug_when>2010-07-05 22:22:15 -0700</bug_when>
    <thetext>Created attachment 60586
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>247450</commentid>
    <comment_count>2</comment_count>
      <attachid>60586</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-07-07 03:27:53 -0700</bug_when>
    <thetext>Comment on attachment 60586
Patch

Looks plausible, but we need the great and powerful fishd for WebKit API review.

WebKit/chromium/public/WebPlugin.h:101
 +      virtual void zoom(int factor) {}
I think we want { } instead of {}, but I could be wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>247597</commentid>
    <comment_count>3</comment_count>
      <attachid>60743</attachid>
    <who name="John Abd-El-Malek">jam</who>
    <bug_when>2010-07-07 09:40:10 -0700</bug_when>
    <thetext>Created attachment 60743
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>247604</commentid>
    <comment_count>4</comment_count>
      <attachid>60743</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-07-07 09:52:13 -0700</bug_when>
    <thetext>Comment on attachment 60743
Patch

WebKit/chromium/public/WebPlugin.h:99
 +      // Used for zooming of full page plugins.  0 means reset, while -1 means zoom
nit: add a new line above this comment since selectedText and zoom
aren&apos;t related methods.

note: WebView::setZoomLevel takes a zoomLevel int and returns the actual int that the
object was zoomed to.  shouldn&apos;t WebPlugin be similar?  what about textOnly?  even if
plugins don&apos;t support exactly the same zooming capabilities, perhaps the webkit api
shouldn&apos;t preclude it?  imagine implementing WebPlugin in terms of WebView.

I assume the &quot;copy&quot; method means that the plugin should copy text to the clipboard,
but how does the plugin do that, and if the selected text can be read from the
WebPlugin, why not have the host simply call selectedText and then take care of the
clipboard operations?

WebKit/chromium/public/WebPlugin.h:105
 +      // See WebPluginContainerImpl&apos;s description of the find interface.
i recommend not having public headers refer to private implementation
classes for documentation.  please document the interface here.

WebKit/chromium/public/WebPlugin.h:107
 +      virtual void startFind(const WebString&amp; searchText, bool caseSensitive, int identifier) { }
what is the purpose of the identifier here?  i figure it is
related to the identifier used in the &quot;find&quot; methods on WebFrame,
but what is the plugin supposed to do with the identifier.  are
there some corresponding changes to WebPluginContainer that are
required?  how does the plugin report find-in-page results?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>247631</commentid>
    <comment_count>5</comment_count>
    <who name="John Abd-El-Malek">jam</who>
    <bug_when>2010-07-07 10:36:16 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 60743 [details])
&gt; WebKit/chromium/public/WebPlugin.h:99
&gt;  +      // Used for zooming of full page plugins.  0 means reset, while -1 means zoom
&gt; nit: add a new line above this comment since selectedText and zoom
&gt; aren&apos;t related methods.

done

&gt; 
&gt; note: WebView::setZoomLevel takes a zoomLevel int and returns the actual int that the
&gt; object was zoomed to.  shouldn&apos;t WebPlugin be similar?  

For WebView, that&apos;s doable because the current zoom is available.  To make the plugin API the same, we&apos;d have to add another function to the plugin to get the current zoom.  That seems unnecessary (adding a getter just so that value can be sent back).

&gt; what about textOnly?  even if
&gt; plugins don&apos;t support exactly the same zooming capabilities, perhaps the webkit api
&gt; shouldn&apos;t preclude it?  imagine implementing WebPlugin in terms of WebView.

Implementation wise, this code is called from a place in Chrome where the only available information is PageZoom::Function (zoom in/out/100%) so we don&apos;t have information on whether this is a text only operation or not.  I can add that value and ignore it, but it seems we can go without it for now and only add it if we need it?

&gt; 
&gt; I assume the &quot;copy&quot; method means that the plugin should copy text to the clipboard,
&gt; but how does the plugin do that, and if the selected text can be read from the
&gt; WebPlugin, why not have the host simply call selectedText and then take care of the
&gt; clipboard operations?

yeah I wanted to do that, but in the implementation I found this easier.  The reason was that in both v1 and v2 implementations, I sniff for &quot;ctrl+c&quot; or &quot;cmd+c&quot; and then call the copy() method directly.  So the plugin will have to know how to use the clipboard anyways.

&gt; 
&gt; WebKit/chromium/public/WebPlugin.h:105
&gt;  +      // See WebPluginContainerImpl&apos;s description of the find interface.
&gt; i recommend not having public headers refer to private implementation
&gt; classes for documentation.  please document the interface here.

Done

&gt; 
&gt; WebKit/chromium/public/WebPlugin.h:107
&gt;  +      virtual void startFind(const WebString&amp; searchText, bool caseSensitive, int identifier) { }
&gt; what is the purpose of the identifier here?  i figure it is
&gt; related to the identifier used in the &quot;find&quot; methods on WebFrame,
&gt; but what is the plugin supposed to do with the identifier.  are
&gt; there some corresponding changes to WebPluginContainer that are
&gt; required?  how does the plugin report find-in-page results?

I expanded on this in the comment.  The plugin uses the identifier when talking to WebFrameClient&apos;s reportFindInPage* functions.

Are you saying we should just have them talk to WebPluginContainer?  This would be adding more layers that aren&apos;t necessary IMO, since the actual implementation (both pepper v1 and v2) don&apos;t even use the WebFrameClient directly, but have a RenderView*.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>247824</commentid>
    <comment_count>6</comment_count>
      <attachid>60795</attachid>
    <who name="John Abd-El-Malek">jam</who>
    <bug_when>2010-07-07 16:07:47 -0700</bug_when>
    <thetext>Created attachment 60795
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>247828</commentid>
    <comment_count>7</comment_count>
    <who name="John Abd-El-Malek">jam</who>
    <bug_when>2010-07-07 16:14:01 -0700</bug_when>
    <thetext>Per our discussions, I&apos;ve updated the WebKit code so that the embedder doesn&apos;t have to check for a PluginDocument.  You&apos;re right, it makes the API simpler.  The one area I&apos;ve left as is is the find-in-page.  Since the (non-plugin) logic is inside chromium code, I couldn&apos;t move just the plugin case to the webkit side.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>247829</commentid>
    <comment_count>8</comment_count>
      <attachid>60797</attachid>
    <who name="John Abd-El-Malek">jam</who>
    <bug_when>2010-07-07 16:14:42 -0700</bug_when>
    <thetext>Created attachment 60797
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>247838</commentid>
    <comment_count>9</comment_count>
      <attachid>60797</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-07-07 16:24:28 -0700</bug_when>
    <thetext>Comment on attachment 60797
Patch

WebKit/chromium/src/WebFrameImpl.h:203
 +      static WebPluginContainerImpl* pluginContainerFromFrame(WebCore::Frame* frame);
nit: leave off the parameter name

WebKit/chromium/public/WebPlugin.h:108
 +      // doesn&apos;t block the thread in case of a large document.  The results, along with the
nit: &quot;is sent&quot; -&gt; &quot;should be sent&quot;?

otherwise, r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>247995</commentid>
    <comment_count>10</comment_count>
    <who name="John Abd-El-Malek">jam</who>
    <bug_when>2010-07-07 21:52:33 -0700</bug_when>
    <thetext>Committed r62743: &lt;http://trac.webkit.org/changeset/62743&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60586</attachid>
            <date>2010-07-05 22:22:15 -0700</date>
            <delta_ts>2010-07-07 09:40:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-41649-20100705222141.patch</filename>
            <type>text/plain</type>
            <size>1835</size>
            <attacher name="John Abd-El-Malek">jam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNjI1MjApCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTAtMDctMDUgIEpvaG4g
QWJkLUVsLU1hbGVrICA8amFtQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbY2hyb21pdW1dIEFkZCBhIGZldyBtb3JlIG1ldGhv
ZHMgdG8gV2ViUGx1Z2luIHNvIHRoYXQgUGVwcGVyIHYyIHBsdWdpbnMgY2FuIHN1cHBvcnQgY29w
eS96b29tL2ZpbmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQxNjQ5CisKKyAgICAgICAgKiBwdWJsaWMvV2ViUGx1Z2luLmg6CisgICAgICAgIChXZWJL
aXQ6OldlYlBsdWdpbjo6em9vbSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsdWdpbjo6Y29weSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBsdWdpbjo6c3VwcG9ydHNGaW5kKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGx1Z2luOjpzdGFydEZpbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbHVnaW46
OnNlbGVjdEZpbmRSZXN1bHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbHVnaW46OnN0b3BGaW5k
KToKKwogMjAxMC0wNy0wNSAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFuLgpJbmRleDogV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJQbHVnaW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYlBsdWdpbi5oCShyZXZpc2lvbiA2MjUxNikKKysrIFdlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViUGx1Z2luLmgJKHdvcmtpbmcgY29weSkKQEAgLTk0LDcgKzk0LDE5IEBAIHB1YmxpYzoK
ICAgICAvLyBFbmRzIHRoZSBwcmludCBvcGVyYXRpb24uCiAgICAgdmlydHVhbCB2b2lkIHByaW50
RW5kKCkgeyB9CiAKKyAgICAvLyBSZXR1cm5zIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgdGV4dC4K
ICAgICB2aXJ0dWFsIFdlYlN0cmluZyBzZWxlY3RlZFRleHQoKSB7IHJldHVybiBXZWJTdHJpbmco
KTsgfQorICAgIC8vIFVzZWQgZm9yIHpvb21pbmcgb2YgZnVsbCBwYWdlIHBsdWdpbnMuICAwIG1l
YW5zIHJlc2V0LCB3aGlsZSAtMSBtZWFucyB6b29tCisgICAgLy8gb3V0IGFuZCArMSBtZWFucyB6
b29tIGluLgorICAgIHZpcnR1YWwgdm9pZCB6b29tKGludCBmYWN0b3IpIHt9CisgICAgLy8gVGVs
bHMgdGhlIHBsdWdpbiB0byBjb3B5IHRoZSBzZWxlY3RlZCB0ZXh0LgorICAgIHZpcnR1YWwgdm9p
ZCBjb3B5KCkge30KKworICAgIC8vIFNlZSBXZWJQbHVnaW5Db250YWluZXJJbXBsJ3MgZGVzY3Jp
cHRpb24gb2YgdGhlIGZpbmQgaW50ZXJmYWNlLgorICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0Zp
bmQoKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBzdGFydEZpbmQoY29uc3Qg
V2ViU3RyaW5nJiBzZWFyY2hUZXh0LCBib29sIGNhc2VTZW5zaXRpdmUsIGludCBpZGVudGlmaWVy
KSB7fQorICAgIHZpcnR1YWwgdm9pZCBzZWxlY3RGaW5kUmVzdWx0KGJvb2wgZm9yd2FyZCkge30K
KyAgICB2aXJ0dWFsIHZvaWQgc3RvcEZpbmQoKSB7fQogCiBwcm90ZWN0ZWQ6CiAgICAgfldlYlBs
dWdpbigpIHsgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60743</attachid>
            <date>2010-07-07 09:40:10 -0700</date>
            <delta_ts>2010-07-07 16:07:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-41649-20100707093937.patch</filename>
            <type>text/plain</type>
            <size>1840</size>
            <attacher name="John Abd-El-Malek">jam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNjI1MjApCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTAtMDctMDUgIEpvaG4g
QWJkLUVsLU1hbGVrICA8amFtQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbY2hyb21pdW1dIEFkZCBhIGZldyBtb3JlIG1ldGhv
ZHMgdG8gV2ViUGx1Z2luIHNvIHRoYXQgUGVwcGVyIHYyIHBsdWdpbnMgY2FuIHN1cHBvcnQgY29w
eS96b29tL2ZpbmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQxNjQ5CisKKyAgICAgICAgKiBwdWJsaWMvV2ViUGx1Z2luLmg6CisgICAgICAgIChXZWJL
aXQ6OldlYlBsdWdpbjo6em9vbSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsdWdpbjo6Y29weSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBsdWdpbjo6c3VwcG9ydHNGaW5kKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGx1Z2luOjpzdGFydEZpbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbHVnaW46
OnNlbGVjdEZpbmRSZXN1bHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbHVnaW46OnN0b3BGaW5k
KToKKwogMjAxMC0wNy0wNSAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFuLgpJbmRleDogV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJQbHVnaW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYlBsdWdpbi5oCShyZXZpc2lvbiA2MjUxNikKKysrIFdlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViUGx1Z2luLmgJKHdvcmtpbmcgY29weSkKQEAgLTk0LDcgKzk0LDE5IEBAIHB1YmxpYzoK
ICAgICAvLyBFbmRzIHRoZSBwcmludCBvcGVyYXRpb24uCiAgICAgdmlydHVhbCB2b2lkIHByaW50
RW5kKCkgeyB9CiAKKyAgICAvLyBSZXR1cm5zIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgdGV4dC4K
ICAgICB2aXJ0dWFsIFdlYlN0cmluZyBzZWxlY3RlZFRleHQoKSB7IHJldHVybiBXZWJTdHJpbmco
KTsgfQorICAgIC8vIFVzZWQgZm9yIHpvb21pbmcgb2YgZnVsbCBwYWdlIHBsdWdpbnMuICAwIG1l
YW5zIHJlc2V0LCB3aGlsZSAtMSBtZWFucyB6b29tCisgICAgLy8gb3V0IGFuZCArMSBtZWFucyB6
b29tIGluLgorICAgIHZpcnR1YWwgdm9pZCB6b29tKGludCBmYWN0b3IpIHsgfQorICAgIC8vIFRl
bGxzIHRoZSBwbHVnaW4gdG8gY29weSB0aGUgc2VsZWN0ZWQgdGV4dC4KKyAgICB2aXJ0dWFsIHZv
aWQgY29weSgpIHsgfQorCisgICAgLy8gU2VlIFdlYlBsdWdpbkNvbnRhaW5lckltcGwncyBkZXNj
cmlwdGlvbiBvZiB0aGUgZmluZCBpbnRlcmZhY2UuCisgICAgdmlydHVhbCBib29sIHN1cHBvcnRz
RmluZCgpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIHN0YXJ0RmluZChjb25z
dCBXZWJTdHJpbmcmIHNlYXJjaFRleHQsIGJvb2wgY2FzZVNlbnNpdGl2ZSwgaW50IGlkZW50aWZp
ZXIpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzZWxlY3RGaW5kUmVzdWx0KGJvb2wgZm9yd2FyZCkg
eyB9CisgICAgdmlydHVhbCB2b2lkIHN0b3BGaW5kKCkgeyB9CiAKIHByb3RlY3RlZDoKICAgICB+
V2ViUGx1Z2luKCkgeyB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60795</attachid>
            <date>2010-07-07 16:07:47 -0700</date>
            <delta_ts>2010-07-07 16:14:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-41649-20100707160714.patch</filename>
            <type>text/plain</type>
            <size>11589</size>
            <attacher name="John Abd-El-Malek">jam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNjI3MjYpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTAtMDctMDcgIEpvaG4g
QWJkLUVsLU1hbGVrICA8amFtQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbY2hyb21pdW1dIEFkZCBhIGZldyBtb3JlIG1ldGhv
ZHMgdG8gV2ViUGx1Z2luIHNvIHRoYXQgUGVwcGVyIHYyIHBsdWdpbnMgY2FuIHN1cHBvcnQgY29w
eS96b29tL2ZpbmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQxNjQ5CisKKyAgICAgICAgKiBwdWJsaWMvV2ViUGx1Z2luLmg6CisgICAgICAgIChXZWJL
aXQ6OldlYlBsdWdpbjo6aGFzU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGx1Z2lu
OjpzZWxlY3Rpb25Bc1RleHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbHVnaW46OnNlbGVjdGlv
bkFzTWFya3VwKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGx1Z2luOjpzZXRab29tRmFjdG9yKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGx1Z2luOjpzdXBwb3J0c0ZpbmQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQbHVnaW46OnN0YXJ0RmluZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsdWdpbjo6
c2VsZWN0RmluZFJlc3VsdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsdWdpbjo6c3RvcEZpbmQp
OgorICAgICAgICAqIHNyYy9Db250ZXh0TWVudUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpDb250ZXh0TWVudUNsaWVudEltcGw6OmdldEN1c3RvbU1lbnVGcm9tRGVmYXVsdEl0ZW1z
KToKKyAgICAgICAgKiBzcmMvV2ViRnJhbWVJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
RnJhbWVJbXBsOjpwbHVnaW5Db250YWluZXJGcm9tRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpD
aHJvbWVQbHVnaW5QcmludENvbnRleHQ6OmVuZCk6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZVBs
dWdpblByaW50Q29udGV4dDo6Y29tcHV0ZVBhZ2VSZWN0cyk6CisgICAgICAgIChXZWJLaXQ6OkNo
cm9tZVBsdWdpblByaW50Q29udGV4dDo6c3Bvb2xQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
RnJhbWVJbXBsOjpleGVjdXRlQ29tbWFuZCk6CisgICAgICAgICogc3JjL1dlYkZyYW1lSW1wbC5o
OgorICAgICAgICAqIHNyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUGx1Z2luQ29udGFpbmVySW1wbDo6Y29weSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBsdWdpbkNvbnRhaW5lckltcGw6OmhhbmRsZUtleWJvYXJkRXZlbnQpOgorICAgICAgICAqIHNy
Yy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmg6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNldFpvb21MZXZlbCk6CisKIDIwMTAt
MDctMDcgIEphbWVzIEhhd2tpbnMgIDxqaGF3a2luc0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292LgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJQbHVnaW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlBs
dWdpbi5oCShyZXZpc2lvbiA2MjUxNikKKysrIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViUGx1
Z2luLmgJKHdvcmtpbmcgY29weSkKQEAgLTk0LDcgKzk0LDI0IEBAIHB1YmxpYzoKICAgICAvLyBF
bmRzIHRoZSBwcmludCBvcGVyYXRpb24uCiAgICAgdmlydHVhbCB2b2lkIHByaW50RW5kKCkgeyB9
CiAKLSAgICB2aXJ0dWFsIFdlYlN0cmluZyBzZWxlY3RlZFRleHQoKSB7IHJldHVybiBXZWJTdHJp
bmcoKTsgfQorICAgIHZpcnR1YWwgYm9vbCBoYXNTZWxlY3Rpb24oKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQorICAgIHZpcnR1YWwgV2ViU3RyaW5nIHNlbGVjdGlvbkFzVGV4dCgpIGNvbnN0IHsg
cmV0dXJuIFdlYlN0cmluZygpOyB9CisgICAgdmlydHVhbCBXZWJTdHJpbmcgc2VsZWN0aW9uQXNN
YXJrdXAoKSBjb25zdCB7IHJldHVybiBXZWJTdHJpbmcoKTsgfQorCisgICAgLy8gVXNlZCBmb3Ig
em9vbWluZyBvZiBmdWxsIHBhZ2UgcGx1Z2lucy4KKyAgICB2aXJ0dWFsIHZvaWQgc2V0Wm9vbUZh
Y3RvcihmbG9hdCBzY2FsZSwgYm9vbCB0ZXh0T25seSkgeyB9CisKKyAgICAvLyBGaW5kIGludGVy
ZmFjZS4KKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIHBsdWdpbiBzdXBwb3J0cyB0ZXh0IHNl
YXJjaC4KKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNGaW5kKCkgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICAvLyBTdGFydCBhIG5ldyBzZWFyY2guICBUaGUgcGx1Z2luIHNob3VsZCBzZWFyY2ggZm9y
IGEgbGl0dGxlIGJpdCBhdCBhIHRpbWUgc28gdGhhdCBpdAorICAgIC8vIGRvZXNuJ3QgYmxvY2sg
dGhlIHRocmVhZCBpbiBjYXNlIG9mIGEgbGFyZ2UgZG9jdW1lbnQuICBUaGUgcmVzdWx0cywgYWxv
bmcgd2l0aCB0aGUKKyAgICAvLyBmaW5kJ3MgaWRlbnRpZmllciwgaXMgc2VudCBhc3luY2hyb25v
dXNseSB0byBXZWJGcmFtZUNsaWVudCdzIHJlcG9ydEZpbmRJblBhZ2UqIG1ldGhvZHMuCisgICAg
dmlydHVhbCB2b2lkIHN0YXJ0RmluZChjb25zdCBXZWJTdHJpbmcmIHNlYXJjaFRleHQsIGJvb2wg
Y2FzZVNlbnNpdGl2ZSwgaW50IGlkZW50aWZpZXIpIHsgfQorICAgIC8vIFRlbGxzIHRoZSBwbHVn
aW4gdG8ganVtcCBmb3J3YXJkIG9yIGJhY2t3YXJkIGluIHRoZSBsaXN0IG9mIGZpbmQgcmVzdWx0
cy4KKyAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0RmluZFJlc3VsdChib29sIGZvcndhcmQpIHsgfQor
ICAgIC8vIFRlbGxzIHRoZSBwbHVnaW4gdGhhdCB0aGUgdXNlciBoYXMgc3RvcHBlZCB0aGUgZmlu
ZCBvcGVyYXRpb24uCisgICAgdmlydHVhbCB2b2lkIHN0b3BGaW5kKCkgeyB9CiAKIHByb3RlY3Rl
ZDoKICAgICB+V2ViUGx1Z2luKCkgeyB9CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL0NvbnRl
eHRNZW51Q2xpZW50SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9D
b250ZXh0TWVudUNsaWVudEltcGwuY3BwCShyZXZpc2lvbiA2MjUxNikKKysrIFdlYktpdC9jaHJv
bWl1bS9zcmMvQ29udGV4dE1lbnVDbGllbnRJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQs
NiArNTQsNyBAQAogI2luY2x1ZGUgIldlYkRhdGFTb3VyY2VJbXBsLmgiCiAjaW5jbHVkZSAiV2Vi
RnJhbWVJbXBsLmgiCiAjaW5jbHVkZSAiV2ViTWVudUl0ZW1JbmZvLmgiCisjaW5jbHVkZSAiV2Vi
UGx1Z2luLmgiCiAjaW5jbHVkZSAiV2ViUGx1Z2luQ29udGFpbmVySW1wbC5oIgogI2luY2x1ZGUg
IldlYlBvaW50LmgiCiAjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCkBAIC0yMDksNyArMjEwLDcgQEAg
UGxhdGZvcm1NZW51RGVzY3JpcHRpb24gQ29udGV4dE1lbnVDbGllbgogICAgICAgICAgICAgV2lk
Z2V0KiB3aWRnZXQgPSB0b1JlbmRlcldpZGdldChvYmplY3QpLT53aWRnZXQoKTsKICAgICAgICAg
ICAgIGlmICh3aWRnZXQpIHsKICAgICAgICAgICAgICAgICBXZWJQbHVnaW5Db250YWluZXJJbXBs
KiBwbHVnaW4gPSBzdGF0aWNfY2FzdDxXZWJQbHVnaW5Db250YWluZXJJbXBsKj4od2lkZ2V0KTsK
LSAgICAgICAgICAgICAgICBXZWJTdHJpbmcgdGV4dCA9IHBsdWdpbi0+c2VsZWN0ZWRUZXh0KCk7
CisgICAgICAgICAgICAgICAgV2ViU3RyaW5nIHRleHQgPSBwbHVnaW4tPnBsdWdpbigpLT5zZWxl
Y3Rpb25Bc1RleHQoKTsKICAgICAgICAgICAgICAgICBpZiAoIXRleHQuaXNFbXB0eSgpKSB7CiAg
ICAgICAgICAgICAgICAgICAgIGRhdGEuc2VsZWN0ZWRUZXh0ID0gdGV4dDsKICAgICAgICAgICAg
ICAgICAgICAgZGF0YS5lZGl0RmxhZ3MgfD0gV2ViQ29udGV4dE1lbnVEYXRhOjpDYW5Db3B5OwpJ
bmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAkocmV2aXNpb24gNjI1MTYpCisr
KyBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEzMCw2ICsxMzAsNyBAQAogI2luY2x1ZGUgIldlYkhpc3RvcnlJdGVtLmgiCiAjaW5jbHVkZSAi
V2ViSW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiV2ViUGFzc3dvcmRBdXRvY29tcGxldGVMaXN0
ZW5lci5oIgorI2luY2x1ZGUgIldlYlBsdWdpbi5oIgogI2luY2x1ZGUgIldlYlBsdWdpbkNvbnRh
aW5lckltcGwuaCIKICNpbmNsdWRlICJXZWJSYW5nZS5oIgogI2luY2x1ZGUgIldlYlJlY3QuaCIK
QEAgLTI0OCw5ICsyNDksNyBAQCBzdGF0aWMgdm9pZCBmcmFtZUNvbnRlbnRBc1BsYWluVGV4dChz
aXplCiAgICAgfQogfQogCi0vLyBJZiB0aGUgZnJhbWUgaG9zdHMgYSBQbHVnaW5Eb2N1bWVudCwg
dGhpcyBtZXRob2QgcmV0dXJucyB0aGUgV2ViUGx1Z2luQ29udGFpbmVySW1wbAotLy8gdGhhdCBo
b3N0cyB0aGUgcGx1Z2luLgotc3RhdGljIFdlYlBsdWdpbkNvbnRhaW5lckltcGwqIHBsdWdpbkNv
bnRhaW5lckZyb21GcmFtZShGcmFtZSogZnJhbWUpCitXZWJQbHVnaW5Db250YWluZXJJbXBsKiBX
ZWJGcmFtZUltcGw6OnBsdWdpbkNvbnRhaW5lckZyb21GcmFtZShGcmFtZSogZnJhbWUpCiB7CiAg
ICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0zNDgsNyArMzQ3LDcgQEAgcHVi
bGljOgogCiAgICAgdmlydHVhbCB2b2lkIGVuZCgpCiAgICAgewotICAgICAgICBXZWJQbHVnaW5D
b250YWluZXJJbXBsKiBwbHVnaW5Db250YWluZXIgPSBwbHVnaW5Db250YWluZXJGcm9tRnJhbWUo
bV9mcmFtZSk7CisgICAgICAgIFdlYlBsdWdpbkNvbnRhaW5lckltcGwqIHBsdWdpbkNvbnRhaW5l
ciA9IFdlYkZyYW1lSW1wbDo6cGx1Z2luQ29udGFpbmVyRnJvbUZyYW1lKG1fZnJhbWUpOwogICAg
ICAgICBpZiAocGx1Z2luQ29udGFpbmVyICYmIHBsdWdpbkNvbnRhaW5lci0+c3VwcG9ydHNQYWdp
bmF0ZWRQcmludCgpKQogICAgICAgICAgICAgcGx1Z2luQ29udGFpbmVyLT5wcmludEVuZCgpOwog
ICAgICAgICBlbHNlCkBAIC0zNjMsNyArMzYyLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2
b2lkIGNvbXB1dGVQYWdlUmVjdHMoY29uc3QgRmxvYXRSZWN0JiBwcmludFJlY3QsIGZsb2F0IGhl
YWRlckhlaWdodCwgZmxvYXQgZm9vdGVySGVpZ2h0LCBmbG9hdCB1c2VyU2NhbGVGYWN0b3IsIGZs
b2F0JiBvdXRQYWdlSGVpZ2h0KQogICAgIHsKLSAgICAgICAgV2ViUGx1Z2luQ29udGFpbmVySW1w
bCogcGx1Z2luQ29udGFpbmVyID0gcGx1Z2luQ29udGFpbmVyRnJvbUZyYW1lKG1fZnJhbWUpOwor
ICAgICAgICBXZWJQbHVnaW5Db250YWluZXJJbXBsKiBwbHVnaW5Db250YWluZXIgPSBXZWJGcmFt
ZUltcGw6OnBsdWdpbkNvbnRhaW5lckZyb21GcmFtZShtX2ZyYW1lKTsKICAgICAgICAgaWYgKHBs
dWdpbkNvbnRhaW5lciAmJiBwbHVnaW5Db250YWluZXItPnN1cHBvcnRzUGFnaW5hdGVkUHJpbnQo
KSkKICAgICAgICAgICAgIG1fcGFnZUNvdW50ID0gcGx1Z2luQ29udGFpbmVyLT5wcmludEJlZ2lu
KEludFJlY3QocHJpbnRSZWN0KSwgbV9wcmludGVyRFBJKTsKICAgICAgICAgZWxzZQpAQCAtMzgw
LDcgKzM3OSw3IEBAIHB1YmxpYzoKICAgICAvLyBpbnN0ZWFkLiAgUmV0dXJucyB0aGUgc2NhbGUg
dG8gYmUgYXBwbGllZC4KICAgICB2aXJ0dWFsIGZsb2F0IHNwb29sUGFnZShHcmFwaGljc0NvbnRl
eHQmIGN0eCwgaW50IHBhZ2VOdW1iZXIpCiAgICAgewotICAgICAgICBXZWJQbHVnaW5Db250YWlu
ZXJJbXBsKiBwbHVnaW5Db250YWluZXIgPSBwbHVnaW5Db250YWluZXJGcm9tRnJhbWUobV9mcmFt
ZSk7CisgICAgICAgIFdlYlBsdWdpbkNvbnRhaW5lckltcGwqIHBsdWdpbkNvbnRhaW5lciA9IFdl
YkZyYW1lSW1wbDo6cGx1Z2luQ29udGFpbmVyRnJvbUZyYW1lKG1fZnJhbWUpOwogICAgICAgICBp
ZiAocGx1Z2luQ29udGFpbmVyICYmIHBsdWdpbkNvbnRhaW5lci0+c3VwcG9ydHNQYWdpbmF0ZWRQ
cmludCgpKQogICAgICAgICAgICAgcGx1Z2luQ29udGFpbmVyLT5wcmludFBhZ2UocGFnZU51bWJl
ciwgJmN0eCk7CiAgICAgICAgIGVsc2UKQEAgLTEwOTQsNiArMTA5MywxNCBAQCBib29sIFdlYkZy
YW1lSW1wbDo6ZXhlY3V0ZUNvbW1hbmQoY29uc3QKICAgICBpZiAoY29tbWFuZFtjb21tYW5kLmxl
bmd0aCgpIC0gMV0gPT0gVUNoYXIoJzonKSkKICAgICAgICAgY29tbWFuZCA9IGNvbW1hbmQuc3Vi
c3RyaW5nKDAsIGNvbW1hbmQubGVuZ3RoKCkgLSAxKTsKIAorICAgIGlmIChjb21tYW5kID09ICJD
b3B5IikgeworICAgICAgICBXZWJQbHVnaW5Db250YWluZXJJbXBsKiBwbHVnaW5Db250YWluZXIg
PSBwbHVnaW5Db250YWluZXJGcm9tRnJhbWUoZnJhbWUoKSk7CisgICAgICAgIGlmIChwbHVnaW5D
b250YWluZXIpIHsKKyAgICAgICAgICAgIHBsdWdpbkNvbnRhaW5lci0+Y29weSgpOworICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CisKICAgICBib29sIHJ2ID0gdHJ1
ZTsKIAogICAgIC8vIFNwZWNpYWxseSBoYW5kbGluZyBjb21tYW5kcyB0aGF0IEVkaXRvcjo6ZXhl
Y0NvbW1hbmQgZG9lcyBub3QgZGlyZWN0bHkKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
RnJhbWVJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUlt
cGwuaAkocmV2aXNpb24gNjI1MTYpCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1w
bC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Niw2ICs1Niw3IEBAIGNsYXNzIFdlYkRhdGFTb3VyY2VJ
bXBsOwogY2xhc3MgV2ViSW5wdXRFbGVtZW50OwogY2xhc3MgV2ViRnJhbWVDbGllbnQ7CiBjbGFz
cyBXZWJQYXNzd29yZEF1dG9jb21wbGV0ZUxpc3RlbmVyOworY2xhc3MgV2ViUGx1Z2luQ29udGFp
bmVySW1wbDsKIGNsYXNzIFdlYlZpZXc7CiBjbGFzcyBXZWJWaWV3SW1wbDsKIApAQCAtMTk3LDYg
KzE5OCwxMCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFdlYkZyYW1lSW1wbCogZnJvbUZyYW1lKFdl
YkNvcmU6OkZyYW1lKiBmcmFtZSk7CiAgICAgc3RhdGljIFdlYkZyYW1lSW1wbCogZnJvbUZyYW1l
T3duZXJFbGVtZW50KFdlYkNvcmU6OkVsZW1lbnQqIGVsZW1lbnQpOwogCisgICAgLy8gSWYgdGhl
IGZyYW1lIGhvc3RzIGEgUGx1Z2luRG9jdW1lbnQsIHRoaXMgbWV0aG9kIHJldHVybnMgdGhlIFdl
YlBsdWdpbkNvbnRhaW5lckltcGwKKyAgICAvLyB0aGF0IGhvc3RzIHRoZSBwbHVnaW4uCisgICAg
c3RhdGljIFdlYlBsdWdpbkNvbnRhaW5lckltcGwqIHBsdWdpbkNvbnRhaW5lckZyb21GcmFtZShX
ZWJDb3JlOjpGcmFtZSogZnJhbWUpOworCiAgICAgV2ViVmlld0ltcGwqIHZpZXdJbXBsKCkgY29u
c3Q7CiAKICAgICBXZWJDb3JlOjpGcmFtZSogZnJhbWUoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1l
OyB9CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVySW1w
bC5jcHAJKHJldmlzaW9uIDYyNTE2KQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5D
b250YWluZXJJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTQgKzMzLDE4IEBACiAKICNp
bmNsdWRlICJDaHJvbWUuaCIKICNpbmNsdWRlICJDaHJvbWVDbGllbnRJbXBsLmgiCisjaW5jbHVk
ZSAiV2ViQ2xpcGJvYXJkLmgiCiAjaW5jbHVkZSAiV2ViQ3Vyc29ySW5mby5oIgogI2luY2x1ZGUg
IldlYkRhdGFTb3VyY2VJbXBsLmgiCiAjaW5jbHVkZSAiV2ViRWxlbWVudC5oIgogI2luY2x1ZGUg
IldlYklucHV0RXZlbnQuaCIKICNpbmNsdWRlICJXZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5oIgog
I2luY2x1ZGUgIldlYktpdC5oIgorI2luY2x1ZGUgIldlYktpdENsaWVudC5oIgogI2luY2x1ZGUg
IldlYlBsdWdpbi5oIgogI2luY2x1ZGUgIldlYlJlY3QuaCIKKyNpbmNsdWRlICJXZWJTdHJpbmcu
aCIKKyNpbmNsdWRlICJXZWJVUkwuaCIKICNpbmNsdWRlICJXZWJVUkxFcnJvci5oIgogI2luY2x1
ZGUgIldlYlVSTFJlcXVlc3QuaCIKICNpbmNsdWRlICJXZWJWZWN0b3IuaCIKQEAgLTU3LDYgKzYx
LDcgQEAKICNpbmNsdWRlICJIVE1MRm9ybUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMu
aCIKICNpbmNsdWRlICJIVE1MUGx1Z0luRWxlbWVudC5oIgorI2luY2x1ZGUgIktleWJvYXJkQ29k
ZXMuaCIKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAiTW91c2VFdmVudC5o
IgogI2luY2x1ZGUgIlBhZ2UuaCIKQEAgLTI0Niw5ICsyNTEsMTIgQEAgdm9pZCBXZWJQbHVnaW5D
b250YWluZXJJbXBsOjpwcmludEVuZCgpCiAgICAgcmV0dXJuIG1fd2ViUGx1Z2luLT5wcmludEVu
ZCgpOwogfQogCi1XZWJTdHJpbmcgV2ViUGx1Z2luQ29udGFpbmVySW1wbDo6c2VsZWN0ZWRUZXh0
KCkKK3ZvaWQgV2ViUGx1Z2luQ29udGFpbmVySW1wbDo6Y29weSgpCiB7Ci0gICAgcmV0dXJuIG1f
d2ViUGx1Z2luLT5zZWxlY3RlZFRleHQoKTsKKyAgICBpZiAoIXBsdWdpbigpLT5oYXNTZWxlY3Rp
b24oKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgd2ViS2l0Q2xpZW50KCktPmNsaXBib2FyZCgp
LT53cml0ZUhUTUwocGx1Z2luKCktPnNlbGVjdGlvbkFzTWFya3VwKCksIFdlYlVSTCgpLCBwbHVn
aW4oKS0+c2VsZWN0aW9uQXNUZXh0KCksIGZhbHNlKTsKIH0KIAogV2ViRWxlbWVudCBXZWJQbHVn
aW5Db250YWluZXJJbXBsOjplbGVtZW50KCkKQEAgLTQ0MSw5ICs0NDksMjEgQEAgdm9pZCBXZWJQ
bHVnaW5Db250YWluZXJJbXBsOjpoYW5kbGVLZXlibwogICAgIGlmICh3ZWJFdmVudC50eXBlID09
IFdlYklucHV0RXZlbnQ6OlVuZGVmaW5lZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgV2ViQ3Vy
c29ySW5mbyBjdXJzb3JJbmZvOwotICAgIGlmIChtX3dlYlBsdWdpbi0+aGFuZGxlSW5wdXRFdmVu
dCh3ZWJFdmVudCwgY3Vyc29ySW5mbykpCi0gICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxl
ZCgpOworICAgIGlmICh3ZWJFdmVudC50eXBlID09IFdlYklucHV0RXZlbnQ6OktleURvd24pIHsK
KyNpZiBkZWZpbmVkKE9TX01BQ09TWCkKKyAgICAgICAgaWYgKHdlYkV2ZW50Lm1vZGlmaWVycyA9
PSBXZWJJbnB1dEV2ZW50OjpNZXRhS2V5CisjZWxzZQorICAgICAgICBpZiAod2ViRXZlbnQubW9k
aWZpZXJzID09IFdlYklucHV0RXZlbnQ6OkNvbnRyb2xLZXkKKyNlbmRpZgorICAgICAgICAgICAg
JiYgd2ViRXZlbnQud2luZG93c0tleUNvZGUgPT0gVktFWV9DKSB7CisgICAgICAgICAgICBjb3B5
KCk7CisgICAgICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKKyAgICAgICAgfQor
ICAgIH0gZWxzZSB7CisgICAgICAgIFdlYkN1cnNvckluZm8gY3Vyc29ySW5mbzsKKyAgICAgICAg
aWYgKG1fd2ViUGx1Z2luLT5oYW5kbGVJbnB1dEV2ZW50KHdlYkV2ZW50LCBjdXJzb3JJbmZvKSkK
KyAgICAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOworICAgIH0KIH0KIAogdm9p
ZCBXZWJQbHVnaW5Db250YWluZXJJbXBsOjpjYWxjdWxhdGVHZW9tZXRyeShjb25zdCBJbnRSZWN0
JiBmcmFtZVJlY3QsCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdpbkNvbnRhaW5l
ckltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdpbkNvbnRh
aW5lckltcGwuaAkocmV2aXNpb24gNjI1MTYpCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBs
dWdpbkNvbnRhaW5lckltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDcgKzEwMiw4IEBAIHB1
YmxpYzoKICAgICAvLyBFbmRzIHRoZSBwcmludCBvcGVyYXRpb24uCiAgICAgdm9pZCBwcmludEVu
ZCgpOwogCi0gICAgV2ViU3RyaW5nIHNlbGVjdGVkVGV4dCgpOworICAgIC8vIENvcHkgdGhlIHNl
bGVjdGVkIHRleHQuCisgICAgdm9pZCBjb3B5KCk7CiAKICAgICAvLyBSZXNvdXJjZSBsb2FkIGV2
ZW50cyBmb3IgdGhlIHBsdWdpbidzIHNvdXJjZSBkYXRhOgogICAgIHZvaWQgZGlkUmVjZWl2ZVJl
c3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKSW5kZXg6IFdlYktpdC9j
aHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1
bS9zcmMvV2ViVmlld0ltcGwuY3BwCShyZXZpc2lvbiA2MjUxNikKKysrIFdlYktpdC9jaHJvbWl1
bS9zcmMvV2ViVmlld0ltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Niw2ICs5Niw4IEBACiAj
aW5jbHVkZSAiV2ViS2l0Q2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViTWVkaWFQbGF5ZXJBY3Rpb24u
aCIKICNpbmNsdWRlICJXZWJOb2RlLmgiCisjaW5jbHVkZSAiV2ViUGx1Z2luLmgiCisjaW5jbHVk
ZSAiV2ViUGx1Z2luQ29udGFpbmVySW1wbC5oIgogI2luY2x1ZGUgIldlYlBvaW50LmgiCiAjaW5j
bHVkZSAiV2ViUG9wdXBNZW51SW1wbC5oIgogI2luY2x1ZGUgIldlYlJlY3QuaCIKQEAgLTE0MzQs
OCArMTQzNiwxMSBAQCBpbnQgV2ViVmlld0ltcGw6OnNldFpvb21MZXZlbChib29sIHRleHRPCiAg
ICAgaWYgKCF2aWV3KQogICAgICAgICByZXR1cm4gbV96b29tTGV2ZWw7CiAgICAgaWYgKHpvb21G
YWN0b3IgIT0gdmlldy0+em9vbUZhY3RvcigpKSB7Ci0gICAgICAgIG1fem9vbUxldmVsID0gem9v
bUxldmVsOwogICAgICAgICB2aWV3LT5zZXRab29tRmFjdG9yKHpvb21GYWN0b3IsIHRleHRPbmx5
ID8gWm9vbVRleHRPbmx5IDogWm9vbVBhZ2UpOworICAgICAgICBXZWJQbHVnaW5Db250YWluZXJJ
bXBsKiBwbHVnaW5Db250YWluZXIgPSBXZWJGcmFtZUltcGw6OnBsdWdpbkNvbnRhaW5lckZyb21G
cmFtZShmcmFtZSk7CisgICAgICAgIGlmIChwbHVnaW5Db250YWluZXIpCisgICAgICAgICAgICBw
bHVnaW5Db250YWluZXItPnBsdWdpbigpLT5zZXRab29tRmFjdG9yKHpvb21GYWN0b3IsIHRleHRP
bmx5KTsKKyAgICAgICAgbV96b29tTGV2ZWwgPSB6b29tTGV2ZWw7CiAgICAgfQogICAgIHJldHVy
biBtX3pvb21MZXZlbDsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60797</attachid>
            <date>2010-07-07 16:14:42 -0700</date>
            <delta_ts>2010-07-07 16:24:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-41649-20100707161409.patch</filename>
            <type>text/plain</type>
            <size>12833</size>
            <attacher name="John Abd-El-Malek">jam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNjI3MjYpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTAtMDctMDcgIEpvaG4g
QWJkLUVsLU1hbGVrICA8amFtQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbY2hyb21pdW1dIEFkZCBhIGZldyBtb3JlIG1ldGhv
ZHMgdG8gV2ViUGx1Z2luIHNvIHRoYXQgUGVwcGVyIHYyIHBsdWdpbnMgY2FuIHN1cHBvcnQgY29w
eS96b29tL2ZpbmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQxNjQ5CisKKyAgICAgICAgKiBwdWJsaWMvV2ViUGx1Z2luLmg6CisgICAgICAgIChXZWJL
aXQ6OldlYlBsdWdpbjo6aGFzU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGx1Z2lu
OjpzZWxlY3Rpb25Bc1RleHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbHVnaW46OnNlbGVjdGlv
bkFzTWFya3VwKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGx1Z2luOjpzZXRab29tRmFjdG9yKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGx1Z2luOjpzdXBwb3J0c0ZpbmQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQbHVnaW46OnN0YXJ0RmluZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsdWdpbjo6
c2VsZWN0RmluZFJlc3VsdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsdWdpbjo6c3RvcEZpbmQp
OgorICAgICAgICAqIHNyYy9Db250ZXh0TWVudUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpDb250ZXh0TWVudUNsaWVudEltcGw6OmdldEN1c3RvbU1lbnVGcm9tRGVmYXVsdEl0ZW1z
KToKKyAgICAgICAgKiBzcmMvV2ViRnJhbWVJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
RnJhbWVJbXBsOjpwbHVnaW5Db250YWluZXJGcm9tRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpD
aHJvbWVQbHVnaW5QcmludENvbnRleHQ6OmVuZCk6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZVBs
dWdpblByaW50Q29udGV4dDo6Y29tcHV0ZVBhZ2VSZWN0cyk6CisgICAgICAgIChXZWJLaXQ6OkNo
cm9tZVBsdWdpblByaW50Q29udGV4dDo6c3Bvb2xQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
RnJhbWVJbXBsOjpleGVjdXRlQ29tbWFuZCk6CisgICAgICAgICogc3JjL1dlYkZyYW1lSW1wbC5o
OgorICAgICAgICAqIHNyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUGx1Z2luQ29udGFpbmVySW1wbDo6Y29weSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBsdWdpbkNvbnRhaW5lckltcGw6OmhhbmRsZUtleWJvYXJkRXZlbnQpOgorICAgICAgICAqIHNy
Yy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmg6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNldFpvb21MZXZlbCk6CisKIDIwMTAt
MDctMDcgIEphbWVzIEhhd2tpbnMgIDxqaGF3a2luc0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292LgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJQbHVnaW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlBs
dWdpbi5oCShyZXZpc2lvbiA2MjUxNikKKysrIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViUGx1
Z2luLmgJKHdvcmtpbmcgY29weSkKQEAgLTk0LDcgKzk0LDI0IEBAIHB1YmxpYzoKICAgICAvLyBF
bmRzIHRoZSBwcmludCBvcGVyYXRpb24uCiAgICAgdmlydHVhbCB2b2lkIHByaW50RW5kKCkgeyB9
CiAKLSAgICB2aXJ0dWFsIFdlYlN0cmluZyBzZWxlY3RlZFRleHQoKSB7IHJldHVybiBXZWJTdHJp
bmcoKTsgfQorICAgIHZpcnR1YWwgYm9vbCBoYXNTZWxlY3Rpb24oKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQorICAgIHZpcnR1YWwgV2ViU3RyaW5nIHNlbGVjdGlvbkFzVGV4dCgpIGNvbnN0IHsg
cmV0dXJuIFdlYlN0cmluZygpOyB9CisgICAgdmlydHVhbCBXZWJTdHJpbmcgc2VsZWN0aW9uQXNN
YXJrdXAoKSBjb25zdCB7IHJldHVybiBXZWJTdHJpbmcoKTsgfQorCisgICAgLy8gVXNlZCBmb3Ig
em9vbWluZyBvZiBmdWxsIHBhZ2UgcGx1Z2lucy4KKyAgICB2aXJ0dWFsIHZvaWQgc2V0Wm9vbUZh
Y3RvcihmbG9hdCBzY2FsZSwgYm9vbCB0ZXh0T25seSkgeyB9CisKKyAgICAvLyBGaW5kIGludGVy
ZmFjZS4KKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIHBsdWdpbiBzdXBwb3J0cyB0ZXh0IHNl
YXJjaC4KKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNGaW5kKCkgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICAvLyBTdGFydCBhIG5ldyBzZWFyY2guICBUaGUgcGx1Z2luIHNob3VsZCBzZWFyY2ggZm9y
IGEgbGl0dGxlIGJpdCBhdCBhIHRpbWUgc28gdGhhdCBpdAorICAgIC8vIGRvZXNuJ3QgYmxvY2sg
dGhlIHRocmVhZCBpbiBjYXNlIG9mIGEgbGFyZ2UgZG9jdW1lbnQuICBUaGUgcmVzdWx0cywgYWxv
bmcgd2l0aCB0aGUKKyAgICAvLyBmaW5kJ3MgaWRlbnRpZmllciwgaXMgc2VudCBhc3luY2hyb25v
dXNseSB0byBXZWJGcmFtZUNsaWVudCdzIHJlcG9ydEZpbmRJblBhZ2UqIG1ldGhvZHMuCisgICAg
dmlydHVhbCB2b2lkIHN0YXJ0RmluZChjb25zdCBXZWJTdHJpbmcmIHNlYXJjaFRleHQsIGJvb2wg
Y2FzZVNlbnNpdGl2ZSwgaW50IGlkZW50aWZpZXIpIHsgfQorICAgIC8vIFRlbGxzIHRoZSBwbHVn
aW4gdG8ganVtcCBmb3J3YXJkIG9yIGJhY2t3YXJkIGluIHRoZSBsaXN0IG9mIGZpbmQgcmVzdWx0
cy4KKyAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0RmluZFJlc3VsdChib29sIGZvcndhcmQpIHsgfQor
ICAgIC8vIFRlbGxzIHRoZSBwbHVnaW4gdGhhdCB0aGUgdXNlciBoYXMgc3RvcHBlZCB0aGUgZmlu
ZCBvcGVyYXRpb24uCisgICAgdmlydHVhbCB2b2lkIHN0b3BGaW5kKCkgeyB9CiAKIHByb3RlY3Rl
ZDoKICAgICB+V2ViUGx1Z2luKCkgeyB9CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL0NvbnRl
eHRNZW51Q2xpZW50SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9D
b250ZXh0TWVudUNsaWVudEltcGwuY3BwCShyZXZpc2lvbiA2MjUxNikKKysrIFdlYktpdC9jaHJv
bWl1bS9zcmMvQ29udGV4dE1lbnVDbGllbnRJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQs
NiArNTQsNyBAQAogI2luY2x1ZGUgIldlYkRhdGFTb3VyY2VJbXBsLmgiCiAjaW5jbHVkZSAiV2Vi
RnJhbWVJbXBsLmgiCiAjaW5jbHVkZSAiV2ViTWVudUl0ZW1JbmZvLmgiCisjaW5jbHVkZSAiV2Vi
UGx1Z2luLmgiCiAjaW5jbHVkZSAiV2ViUGx1Z2luQ29udGFpbmVySW1wbC5oIgogI2luY2x1ZGUg
IldlYlBvaW50LmgiCiAjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCkBAIC0yMDksNyArMjEwLDcgQEAg
UGxhdGZvcm1NZW51RGVzY3JpcHRpb24gQ29udGV4dE1lbnVDbGllbgogICAgICAgICAgICAgV2lk
Z2V0KiB3aWRnZXQgPSB0b1JlbmRlcldpZGdldChvYmplY3QpLT53aWRnZXQoKTsKICAgICAgICAg
ICAgIGlmICh3aWRnZXQpIHsKICAgICAgICAgICAgICAgICBXZWJQbHVnaW5Db250YWluZXJJbXBs
KiBwbHVnaW4gPSBzdGF0aWNfY2FzdDxXZWJQbHVnaW5Db250YWluZXJJbXBsKj4od2lkZ2V0KTsK
LSAgICAgICAgICAgICAgICBXZWJTdHJpbmcgdGV4dCA9IHBsdWdpbi0+c2VsZWN0ZWRUZXh0KCk7
CisgICAgICAgICAgICAgICAgV2ViU3RyaW5nIHRleHQgPSBwbHVnaW4tPnBsdWdpbigpLT5zZWxl
Y3Rpb25Bc1RleHQoKTsKICAgICAgICAgICAgICAgICBpZiAoIXRleHQuaXNFbXB0eSgpKSB7CiAg
ICAgICAgICAgICAgICAgICAgIGRhdGEuc2VsZWN0ZWRUZXh0ID0gdGV4dDsKICAgICAgICAgICAg
ICAgICAgICAgZGF0YS5lZGl0RmxhZ3MgfD0gV2ViQ29udGV4dE1lbnVEYXRhOjpDYW5Db3B5OwpJ
bmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAkocmV2aXNpb24gNjI1MTYpCisr
KyBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEzMCw2ICsxMzAsNyBAQAogI2luY2x1ZGUgIldlYkhpc3RvcnlJdGVtLmgiCiAjaW5jbHVkZSAi
V2ViSW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiV2ViUGFzc3dvcmRBdXRvY29tcGxldGVMaXN0
ZW5lci5oIgorI2luY2x1ZGUgIldlYlBsdWdpbi5oIgogI2luY2x1ZGUgIldlYlBsdWdpbkNvbnRh
aW5lckltcGwuaCIKICNpbmNsdWRlICJXZWJSYW5nZS5oIgogI2luY2x1ZGUgIldlYlJlY3QuaCIK
QEAgLTI0OCw5ICsyNDksNyBAQCBzdGF0aWMgdm9pZCBmcmFtZUNvbnRlbnRBc1BsYWluVGV4dChz
aXplCiAgICAgfQogfQogCi0vLyBJZiB0aGUgZnJhbWUgaG9zdHMgYSBQbHVnaW5Eb2N1bWVudCwg
dGhpcyBtZXRob2QgcmV0dXJucyB0aGUgV2ViUGx1Z2luQ29udGFpbmVySW1wbAotLy8gdGhhdCBo
b3N0cyB0aGUgcGx1Z2luLgotc3RhdGljIFdlYlBsdWdpbkNvbnRhaW5lckltcGwqIHBsdWdpbkNv
bnRhaW5lckZyb21GcmFtZShGcmFtZSogZnJhbWUpCitXZWJQbHVnaW5Db250YWluZXJJbXBsKiBX
ZWJGcmFtZUltcGw6OnBsdWdpbkNvbnRhaW5lckZyb21GcmFtZShGcmFtZSogZnJhbWUpCiB7CiAg
ICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0zNDgsNyArMzQ3LDcgQEAgcHVi
bGljOgogCiAgICAgdmlydHVhbCB2b2lkIGVuZCgpCiAgICAgewotICAgICAgICBXZWJQbHVnaW5D
b250YWluZXJJbXBsKiBwbHVnaW5Db250YWluZXIgPSBwbHVnaW5Db250YWluZXJGcm9tRnJhbWUo
bV9mcmFtZSk7CisgICAgICAgIFdlYlBsdWdpbkNvbnRhaW5lckltcGwqIHBsdWdpbkNvbnRhaW5l
ciA9IFdlYkZyYW1lSW1wbDo6cGx1Z2luQ29udGFpbmVyRnJvbUZyYW1lKG1fZnJhbWUpOwogICAg
ICAgICBpZiAocGx1Z2luQ29udGFpbmVyICYmIHBsdWdpbkNvbnRhaW5lci0+c3VwcG9ydHNQYWdp
bmF0ZWRQcmludCgpKQogICAgICAgICAgICAgcGx1Z2luQ29udGFpbmVyLT5wcmludEVuZCgpOwog
ICAgICAgICBlbHNlCkBAIC0zNjMsNyArMzYyLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2
b2lkIGNvbXB1dGVQYWdlUmVjdHMoY29uc3QgRmxvYXRSZWN0JiBwcmludFJlY3QsIGZsb2F0IGhl
YWRlckhlaWdodCwgZmxvYXQgZm9vdGVySGVpZ2h0LCBmbG9hdCB1c2VyU2NhbGVGYWN0b3IsIGZs
b2F0JiBvdXRQYWdlSGVpZ2h0KQogICAgIHsKLSAgICAgICAgV2ViUGx1Z2luQ29udGFpbmVySW1w
bCogcGx1Z2luQ29udGFpbmVyID0gcGx1Z2luQ29udGFpbmVyRnJvbUZyYW1lKG1fZnJhbWUpOwor
ICAgICAgICBXZWJQbHVnaW5Db250YWluZXJJbXBsKiBwbHVnaW5Db250YWluZXIgPSBXZWJGcmFt
ZUltcGw6OnBsdWdpbkNvbnRhaW5lckZyb21GcmFtZShtX2ZyYW1lKTsKICAgICAgICAgaWYgKHBs
dWdpbkNvbnRhaW5lciAmJiBwbHVnaW5Db250YWluZXItPnN1cHBvcnRzUGFnaW5hdGVkUHJpbnQo
KSkKICAgICAgICAgICAgIG1fcGFnZUNvdW50ID0gcGx1Z2luQ29udGFpbmVyLT5wcmludEJlZ2lu
KEludFJlY3QocHJpbnRSZWN0KSwgbV9wcmludGVyRFBJKTsKICAgICAgICAgZWxzZQpAQCAtMzgw
LDcgKzM3OSw3IEBAIHB1YmxpYzoKICAgICAvLyBpbnN0ZWFkLiAgUmV0dXJucyB0aGUgc2NhbGUg
dG8gYmUgYXBwbGllZC4KICAgICB2aXJ0dWFsIGZsb2F0IHNwb29sUGFnZShHcmFwaGljc0NvbnRl
eHQmIGN0eCwgaW50IHBhZ2VOdW1iZXIpCiAgICAgewotICAgICAgICBXZWJQbHVnaW5Db250YWlu
ZXJJbXBsKiBwbHVnaW5Db250YWluZXIgPSBwbHVnaW5Db250YWluZXJGcm9tRnJhbWUobV9mcmFt
ZSk7CisgICAgICAgIFdlYlBsdWdpbkNvbnRhaW5lckltcGwqIHBsdWdpbkNvbnRhaW5lciA9IFdl
YkZyYW1lSW1wbDo6cGx1Z2luQ29udGFpbmVyRnJvbUZyYW1lKG1fZnJhbWUpOwogICAgICAgICBp
ZiAocGx1Z2luQ29udGFpbmVyICYmIHBsdWdpbkNvbnRhaW5lci0+c3VwcG9ydHNQYWdpbmF0ZWRQ
cmludCgpKQogICAgICAgICAgICAgcGx1Z2luQ29udGFpbmVyLT5wcmludFBhZ2UocGFnZU51bWJl
ciwgJmN0eCk7CiAgICAgICAgIGVsc2UKQEAgLTEwOTQsNiArMTA5MywxNCBAQCBib29sIFdlYkZy
YW1lSW1wbDo6ZXhlY3V0ZUNvbW1hbmQoY29uc3QKICAgICBpZiAoY29tbWFuZFtjb21tYW5kLmxl
bmd0aCgpIC0gMV0gPT0gVUNoYXIoJzonKSkKICAgICAgICAgY29tbWFuZCA9IGNvbW1hbmQuc3Vi
c3RyaW5nKDAsIGNvbW1hbmQubGVuZ3RoKCkgLSAxKTsKIAorICAgIGlmIChjb21tYW5kID09ICJD
b3B5IikgeworICAgICAgICBXZWJQbHVnaW5Db250YWluZXJJbXBsKiBwbHVnaW5Db250YWluZXIg
PSBwbHVnaW5Db250YWluZXJGcm9tRnJhbWUoZnJhbWUoKSk7CisgICAgICAgIGlmIChwbHVnaW5D
b250YWluZXIpIHsKKyAgICAgICAgICAgIHBsdWdpbkNvbnRhaW5lci0+Y29weSgpOworICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CisKICAgICBib29sIHJ2ID0gdHJ1
ZTsKIAogICAgIC8vIFNwZWNpYWxseSBoYW5kbGluZyBjb21tYW5kcyB0aGF0IEVkaXRvcjo6ZXhl
Y0NvbW1hbmQgZG9lcyBub3QgZGlyZWN0bHkKQEAgLTExNjQsNiArMTE3MSwxMCBAQCBib29sIFdl
YkZyYW1lSW1wbDo6aXNDb250aW51b3VzU3BlbGxDaGVjCiAKIGJvb2wgV2ViRnJhbWVJbXBsOjpo
YXNTZWxlY3Rpb24oKSBjb25zdAogeworICAgIFdlYlBsdWdpbkNvbnRhaW5lckltcGwqIHBsdWdp
bkNvbnRhaW5lciA9IHBsdWdpbkNvbnRhaW5lckZyb21GcmFtZShmcmFtZSgpKTsKKyAgICBpZiAo
cGx1Z2luQ29udGFpbmVyKQorICAgICAgICByZXR1cm4gcGx1Z2luQ29udGFpbmVyLT5wbHVnaW4o
KS0+aGFzU2VsZWN0aW9uKCk7CisKICAgICAvLyBmcmFtZSgpLT5zZWxlY3Rpb24oKS0+aXNOb25l
KCkgbmV2ZXIgcmV0dXJucyB0cnVlLgogICAgIHJldHVybiAoZnJhbWUoKS0+c2VsZWN0aW9uKCkt
PnN0YXJ0KCkgIT0gZnJhbWUoKS0+c2VsZWN0aW9uKCktPmVuZCgpKTsKIH0KQEAgLTExNzUsNiAr
MTE4NiwxMCBAQCBXZWJSYW5nZSBXZWJGcmFtZUltcGw6OnNlbGVjdGlvblJhbmdlKCkKIAogV2Vi
U3RyaW5nIFdlYkZyYW1lSW1wbDo6c2VsZWN0aW9uQXNUZXh0KCkgY29uc3QKIHsKKyAgICBXZWJQ
bHVnaW5Db250YWluZXJJbXBsKiBwbHVnaW5Db250YWluZXIgPSBwbHVnaW5Db250YWluZXJGcm9t
RnJhbWUoZnJhbWUoKSk7CisgICAgaWYgKHBsdWdpbkNvbnRhaW5lcikKKyAgICAgICAgcmV0dXJu
IHBsdWdpbkNvbnRhaW5lci0+cGx1Z2luKCktPnNlbGVjdGlvbkFzVGV4dCgpOworCiAgICAgUmVm
UHRyPFJhbmdlPiByYW5nZSA9IGZyYW1lKCktPnNlbGVjdGlvbigpLT50b05vcm1hbGl6ZWRSYW5n
ZSgpOwogICAgIGlmICghcmFuZ2UuZ2V0KCkpCiAgICAgICAgIHJldHVybiBXZWJTdHJpbmcoKTsK
QEAgLTExODksNiArMTIwNCwxMCBAQCBXZWJTdHJpbmcgV2ViRnJhbWVJbXBsOjpzZWxlY3Rpb25B
c1RleHQoCiAKIFdlYlN0cmluZyBXZWJGcmFtZUltcGw6OnNlbGVjdGlvbkFzTWFya3VwKCkgY29u
c3QKIHsKKyAgICBXZWJQbHVnaW5Db250YWluZXJJbXBsKiBwbHVnaW5Db250YWluZXIgPSBwbHVn
aW5Db250YWluZXJGcm9tRnJhbWUoZnJhbWUoKSk7CisgICAgaWYgKHBsdWdpbkNvbnRhaW5lcikK
KyAgICAgICAgcmV0dXJuIHBsdWdpbkNvbnRhaW5lci0+cGx1Z2luKCktPnNlbGVjdGlvbkFzTWFy
a3VwKCk7CisKICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gZnJhbWUoKS0+c2VsZWN0aW9uKCkt
PnRvTm9ybWFsaXplZFJhbmdlKCk7CiAgICAgaWYgKCFyYW5nZS5nZXQoKSkKICAgICAgICAgcmV0
dXJuIFdlYlN0cmluZygpOwpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5oCShyZXZp
c2lvbiA2MjUxNikKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmgJKHdvcmtp
bmcgY29weSkKQEAgLTU2LDYgKzU2LDcgQEAgY2xhc3MgV2ViRGF0YVNvdXJjZUltcGw7CiBjbGFz
cyBXZWJJbnB1dEVsZW1lbnQ7CiBjbGFzcyBXZWJGcmFtZUNsaWVudDsKIGNsYXNzIFdlYlBhc3N3
b3JkQXV0b2NvbXBsZXRlTGlzdGVuZXI7CitjbGFzcyBXZWJQbHVnaW5Db250YWluZXJJbXBsOwog
Y2xhc3MgV2ViVmlldzsKIGNsYXNzIFdlYlZpZXdJbXBsOwogCkBAIC0xOTcsNiArMTk4LDEwIEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgV2ViRnJhbWVJbXBsKiBmcm9tRnJhbWUoV2ViQ29yZTo6RnJh
bWUqIGZyYW1lKTsKICAgICBzdGF0aWMgV2ViRnJhbWVJbXBsKiBmcm9tRnJhbWVPd25lckVsZW1l
bnQoV2ViQ29yZTo6RWxlbWVudCogZWxlbWVudCk7CiAKKyAgICAvLyBJZiB0aGUgZnJhbWUgaG9z
dHMgYSBQbHVnaW5Eb2N1bWVudCwgdGhpcyBtZXRob2QgcmV0dXJucyB0aGUgV2ViUGx1Z2luQ29u
dGFpbmVySW1wbAorICAgIC8vIHRoYXQgaG9zdHMgdGhlIHBsdWdpbi4KKyAgICBzdGF0aWMgV2Vi
UGx1Z2luQ29udGFpbmVySW1wbCogcGx1Z2luQ29udGFpbmVyRnJvbUZyYW1lKFdlYkNvcmU6OkZy
YW1lKiBmcmFtZSk7CisKICAgICBXZWJWaWV3SW1wbCogdmlld0ltcGwoKSBjb25zdDsKIAogICAg
IFdlYkNvcmU6OkZyYW1lKiBmcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWU7IH0KSW5kZXg6
IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcAkocmV2
aXNpb24gNjI1MTYpCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdpbkNvbnRhaW5lcklt
cGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxNCArMzMsMTggQEAKIAogI2luY2x1ZGUgIkNo
cm9tZS5oIgogI2luY2x1ZGUgIkNocm9tZUNsaWVudEltcGwuaCIKKyNpbmNsdWRlICJXZWJDbGlw
Ym9hcmQuaCIKICNpbmNsdWRlICJXZWJDdXJzb3JJbmZvLmgiCiAjaW5jbHVkZSAiV2ViRGF0YVNv
dXJjZUltcGwuaCIKICNpbmNsdWRlICJXZWJFbGVtZW50LmgiCiAjaW5jbHVkZSAiV2ViSW5wdXRF
dmVudC5oIgogI2luY2x1ZGUgIldlYklucHV0RXZlbnRDb252ZXJzaW9uLmgiCiAjaW5jbHVkZSAi
V2ViS2l0LmgiCisjaW5jbHVkZSAiV2ViS2l0Q2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViUGx1Z2lu
LmgiCiAjaW5jbHVkZSAiV2ViUmVjdC5oIgorI2luY2x1ZGUgIldlYlN0cmluZy5oIgorI2luY2x1
ZGUgIldlYlVSTC5oIgogI2luY2x1ZGUgIldlYlVSTEVycm9yLmgiCiAjaW5jbHVkZSAiV2ViVVJM
UmVxdWVzdC5oIgogI2luY2x1ZGUgIldlYlZlY3Rvci5oIgpAQCAtNTcsNiArNjEsNyBAQAogI2lu
Y2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1
ZGUgIkhUTUxQbHVnSW5FbGVtZW50LmgiCisjaW5jbHVkZSAiS2V5Ym9hcmRDb2Rlcy5oIgogI2lu
Y2x1ZGUgIktleWJvYXJkRXZlbnQuaCIKICNpbmNsdWRlICJNb3VzZUV2ZW50LmgiCiAjaW5jbHVk
ZSAiUGFnZS5oIgpAQCAtMjQ2LDkgKzI1MSwxMiBAQCB2b2lkIFdlYlBsdWdpbkNvbnRhaW5lcklt
cGw6OnByaW50RW5kKCkKICAgICByZXR1cm4gbV93ZWJQbHVnaW4tPnByaW50RW5kKCk7CiB9CiAK
LVdlYlN0cmluZyBXZWJQbHVnaW5Db250YWluZXJJbXBsOjpzZWxlY3RlZFRleHQoKQordm9pZCBX
ZWJQbHVnaW5Db250YWluZXJJbXBsOjpjb3B5KCkKIHsKLSAgICByZXR1cm4gbV93ZWJQbHVnaW4t
PnNlbGVjdGVkVGV4dCgpOworICAgIGlmICghcGx1Z2luKCktPmhhc1NlbGVjdGlvbigpKQorICAg
ICAgICByZXR1cm47CisKKyAgICB3ZWJLaXRDbGllbnQoKS0+Y2xpcGJvYXJkKCktPndyaXRlSFRN
TChwbHVnaW4oKS0+c2VsZWN0aW9uQXNNYXJrdXAoKSwgV2ViVVJMKCksIHBsdWdpbigpLT5zZWxl
Y3Rpb25Bc1RleHQoKSwgZmFsc2UpOwogfQogCiBXZWJFbGVtZW50IFdlYlBsdWdpbkNvbnRhaW5l
ckltcGw6OmVsZW1lbnQoKQpAQCAtNDQxLDkgKzQ0OSwyMSBAQCB2b2lkIFdlYlBsdWdpbkNvbnRh
aW5lckltcGw6OmhhbmRsZUtleWJvCiAgICAgaWYgKHdlYkV2ZW50LnR5cGUgPT0gV2ViSW5wdXRF
dmVudDo6VW5kZWZpbmVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBXZWJDdXJzb3JJbmZvIGN1
cnNvckluZm87Ci0gICAgaWYgKG1fd2ViUGx1Z2luLT5oYW5kbGVJbnB1dEV2ZW50KHdlYkV2ZW50
LCBjdXJzb3JJbmZvKSkKLSAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CisgICAg
aWYgKHdlYkV2ZW50LnR5cGUgPT0gV2ViSW5wdXRFdmVudDo6S2V5RG93bikgeworI2lmIGRlZmlu
ZWQoT1NfTUFDT1NYKQorICAgICAgICBpZiAod2ViRXZlbnQubW9kaWZpZXJzID09IFdlYklucHV0
RXZlbnQ6Ok1ldGFLZXkKKyNlbHNlCisgICAgICAgIGlmICh3ZWJFdmVudC5tb2RpZmllcnMgPT0g
V2ViSW5wdXRFdmVudDo6Q29udHJvbEtleQorI2VuZGlmCisgICAgICAgICAgICAmJiB3ZWJFdmVu
dC53aW5kb3dzS2V5Q29kZSA9PSBWS0VZX0MpIHsKKyAgICAgICAgICAgIGNvcHkoKTsKKyAgICAg
ICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOworICAgICAgICB9CisgICAgfSBlbHNl
IHsKKyAgICAgICAgV2ViQ3Vyc29ySW5mbyBjdXJzb3JJbmZvOworICAgICAgICBpZiAobV93ZWJQ
bHVnaW4tPmhhbmRsZUlucHV0RXZlbnQod2ViRXZlbnQsIGN1cnNvckluZm8pKQorICAgICAgICAg
ICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CisgICAgfQogfQogCiB2b2lkIFdlYlBsdWdp
bkNvbnRhaW5lckltcGw6OmNhbGN1bGF0ZUdlb21ldHJ5KGNvbnN0IEludFJlY3QmIGZyYW1lUmVj
dCwKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5o
CShyZXZpc2lvbiA2MjUxNikKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1Z2luQ29udGFp
bmVySW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsNyArMTAyLDggQEAgcHVibGljOgogICAg
IC8vIEVuZHMgdGhlIHByaW50IG9wZXJhdGlvbi4KICAgICB2b2lkIHByaW50RW5kKCk7CiAKLSAg
ICBXZWJTdHJpbmcgc2VsZWN0ZWRUZXh0KCk7CisgICAgLy8gQ29weSB0aGUgc2VsZWN0ZWQgdGV4
dC4KKyAgICB2b2lkIGNvcHkoKTsKIAogICAgIC8vIFJlc291cmNlIGxvYWQgZXZlbnRzIGZvciB0
aGUgcGx1Z2luJ3Mgc291cmNlIGRhdGE6CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwpJbmRleDogV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJWaWV3SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJW
aWV3SW1wbC5jcHAJKHJldmlzaW9uIDYyNTE2KQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJW
aWV3SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk2LDYgKzk2LDggQEAKICNpbmNsdWRlICJX
ZWJLaXRDbGllbnQuaCIKICNpbmNsdWRlICJXZWJNZWRpYVBsYXllckFjdGlvbi5oIgogI2luY2x1
ZGUgIldlYk5vZGUuaCIKKyNpbmNsdWRlICJXZWJQbHVnaW4uaCIKKyNpbmNsdWRlICJXZWJQbHVn
aW5Db250YWluZXJJbXBsLmgiCiAjaW5jbHVkZSAiV2ViUG9pbnQuaCIKICNpbmNsdWRlICJXZWJQ
b3B1cE1lbnVJbXBsLmgiCiAjaW5jbHVkZSAiV2ViUmVjdC5oIgpAQCAtMTQzNCw4ICsxNDM2LDEx
IEBAIGludCBXZWJWaWV3SW1wbDo6c2V0Wm9vbUxldmVsKGJvb2wgdGV4dE8KICAgICBpZiAoIXZp
ZXcpCiAgICAgICAgIHJldHVybiBtX3pvb21MZXZlbDsKICAgICBpZiAoem9vbUZhY3RvciAhPSB2
aWV3LT56b29tRmFjdG9yKCkpIHsKLSAgICAgICAgbV96b29tTGV2ZWwgPSB6b29tTGV2ZWw7CiAg
ICAgICAgIHZpZXctPnNldFpvb21GYWN0b3Ioem9vbUZhY3RvciwgdGV4dE9ubHkgPyBab29tVGV4
dE9ubHkgOiBab29tUGFnZSk7CisgICAgICAgIFdlYlBsdWdpbkNvbnRhaW5lckltcGwqIHBsdWdp
bkNvbnRhaW5lciA9IFdlYkZyYW1lSW1wbDo6cGx1Z2luQ29udGFpbmVyRnJvbUZyYW1lKGZyYW1l
KTsKKyAgICAgICAgaWYgKHBsdWdpbkNvbnRhaW5lcikKKyAgICAgICAgICAgIHBsdWdpbkNvbnRh
aW5lci0+cGx1Z2luKCktPnNldFpvb21GYWN0b3Ioem9vbUZhY3RvciwgdGV4dE9ubHkpOworICAg
ICAgICBtX3pvb21MZXZlbCA9IHpvb21MZXZlbDsKICAgICB9CiAgICAgcmV0dXJuIG1fem9vbUxl
dmVsOwogfQo=
</data>
<flag name="review"
          id="48567"
          type_id="1"
          status="+"
          setter="fishd"
    />
          </attachment>
      

    </bug>

</bugzilla>