<?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>58410</bug_id>
          
          <creation_ts>2011-04-12 18:39:27 -0700</creation_ts>
          <short_desc>Extension3D needs to provide a way to check if an extension is enabled</short_desc>
          <delta_ts>2011-04-13 14:09:00 -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>WebGL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</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="Zhenyao Mo">zmo</reporter>
          <assigned_to name="Zhenyao Mo">zmo</assigned_to>
          <cc>cmarrin</cc>
    
    <cc>kbr</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>384608</commentid>
    <comment_count>0</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2011-04-12 18:39:27 -0700</bug_when>
    <thetext>At the moment, we have supports(), which checks if an extension is enabled or request-able.

However, to avoid NPOT texture checking in both WebGLRenderingContext and chromium/command-buffer, we need to check if an extension is enabled without enabling it, something like a function named isEnabled().

Currently we use supports(), which results in NPOT checking in WebGLRenderingContext, which is unnecessary because NPOT support is not enabled, it&apos;s only request-able.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385088</commentid>
    <comment_count>1</comment_count>
      <attachid>89420</attachid>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2011-04-13 11:53:29 -0700</bug_when>
    <thetext>Created attachment 89420
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385145</commentid>
    <comment_count>2</comment_count>
      <attachid>89420</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-04-13 12:31:53 -0700</bug_when>
    <thetext>Comment on attachment 89420
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=89420&amp;action=review

This looks good overall but there are a couple of issues.

&gt; Source/WebCore/platform/graphics/Extensions3D.h:63
&gt; +    virtual bool isEnabled(const String&amp;) = 0;

This new method needs better documentation. I suggest:

&quot;&quot;&quot;
Takes full name of extension: for example, &quot;GL_EXT_texture_format_BGRA8888&quot;. Checks to see whether the given extension is actually enabled (see ensureEnabled). Has no other side-effects.
&quot;&quot;&quot;

Also, I would add it underneath ensureEnabled, which will be folded into supports() per bug 57393.

&gt; Source/WebCore/platform/graphics/opengl/Extensions3DOpenGL.cpp:113
&gt; +#if PLATFORM(MAC)
&gt; +    if (name == &quot;GL_OES_standard_derivatives&quot;) {
&gt; +        // Enable support in ANGLE (if not enabled already)
&gt; +        ANGLEWebKitBridge&amp; compiler = m_context-&gt;m_compiler;
&gt; +        ShBuiltInResources ANGLEResources = compiler.getResources();
&gt; +        return ANGLEResources.OES_standard_derivatives;
&gt; +    }
&gt; +#endif

This code is incorrect -- isEnabled() should not have any side-effects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385163</commentid>
    <comment_count>3</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2011-04-13 12:59:58 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 89420 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=89420&amp;action=review
&gt; 
&gt; This looks good overall but there are a couple of issues.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/Extensions3D.h:63
&gt; &gt; +    virtual bool isEnabled(const String&amp;) = 0;
&gt; 
&gt; This new method needs better documentation. I suggest:
&gt; 
&gt; &quot;&quot;&quot;
&gt; Takes full name of extension: for example, &quot;GL_EXT_texture_format_BGRA8888&quot;. Checks to see whether the given extension is actually enabled (see ensureEnabled). Has no other side-effects.
&gt; &quot;&quot;&quot;
&gt; 
&gt; Also, I would add it underneath ensureEnabled, which will be folded into supports() per bug 57393.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/opengl/Extensions3DOpenGL.cpp:113
&gt; &gt; +#if PLATFORM(MAC)
&gt; &gt; +    if (name == &quot;GL_OES_standard_derivatives&quot;) {
&gt; &gt; +        // Enable support in ANGLE (if not enabled already)
&gt; &gt; +        ANGLEWebKitBridge&amp; compiler = m_context-&gt;m_compiler;
&gt; &gt; +        ShBuiltInResources ANGLEResources = compiler.getResources();
&gt; &gt; +        return ANGLEResources.OES_standard_derivatives;
&gt; &gt; +    }
&gt; &gt; +#endif
&gt; 
&gt; This code is incorrect -- isEnabled() should not have any side-effects.

Ah I copied and modified, but forget to remove the comment.  The code itself doesn&apos;t have side-effects.  It simply queries if that extension is enabled in ANGLE or not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385166</commentid>
    <comment_count>4</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-04-13 13:06:11 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Ah I copied and modified, but forget to remove the comment.  The code itself doesn&apos;t have side-effects.  It simply queries if that extension is enabled in ANGLE or not.

Ah, I see. OK, let&apos;s just remove the incorrect comment then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385180</commentid>
    <comment_count>5</comment_count>
      <attachid>89445</attachid>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2011-04-13 13:41:53 -0700</bug_when>
    <thetext>Created attachment 89445
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385183</commentid>
    <comment_count>6</comment_count>
      <attachid>89445</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-04-13 13:47:17 -0700</bug_when>
    <thetext>Comment on attachment 89445
Patch

Thanks. Looks good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385202</commentid>
    <comment_count>7</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2011-04-13 14:09:00 -0700</bug_when>
    <thetext>Committed r83762: &lt;http://trac.webkit.org/changeset/83762&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89420</attachid>
            <date>2011-04-13 11:53:29 -0700</date>
            <delta_ts>2011-04-13 13:41:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58410-20110413115328.patch</filename>
            <type>text/plain</type>
            <size>9816</size>
            <attacher name="Zhenyao Mo">zmo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgzNzUwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMDQtMTMgIFpoZW55YW8g
TW8gIDx6bW9AZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBFeHRlbnNpb24zRCBuZWVkcyB0byBwcm92aWRlIGEgd2F5IHRvIGNoZWNr
IGlmIGFuIGV4dGVuc2lvbiBpcyBlbmFibGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD01ODQxMAorCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6c2V0dXBGbGFncyk6IFVzZSBpc0VuYWJsZWQoKSBpbnN0ZWFkIG9mIHN1cHBvcnRzKCku
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uczNELmg6IEFkZCBpc0VuYWJs
ZWQoKS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9FeHRlbnNpb25zM0RD
aHJvbWl1bS5oOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0
ZW5zaW9uczNET3BlbkdMLmNwcDogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25z
M0RPcGVuR0w6OmlzRW5hYmxlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0V4dGVuc2lvbnMzRE9wZW5HTC5oOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9xdC9FeHRlbnNpb25zM0RRdC5jcHA6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5z
aW9uczNEUXQ6OmlzRW5hYmxlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRXh0
ZW5zaW9uczNEUXQuaDogRGl0dG8uCisKIDIwMTEtMDQtMTIgIFBhdmVsIFBvZGl2aWxvdiAgPHBv
ZGl2aWxvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1h
bi4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0LmNwcAkocmV2aXNpb24gODM2MDUpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NTgs
MTQgKzQ1OCwxNCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6c2V0dXBGbGFncygpCiAg
ICAgQVNTRVJUKG1fY29udGV4dCk7CiAKICAgICBtX2lzR0xFUzJDb21wbGlhbnQgPSBtX2NvbnRl
eHQtPmlzR0xFUzJDb21wbGlhbnQoKTsKLSAgICBtX2lzRXJyb3JHZW5lcmF0ZWRPbk91dE9mQm91
bmRzQWNjZXNzZXMgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX0NI
Uk9NSVVNX3N0cmljdF9hdHRyaWJzIik7Ci0gICAgbV9pc1Jlc291cmNlU2FmZSA9IG1fY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfQ0hST01JVU1fcmVzb3VyY2Vfc2FmZSIp
OworICAgIG1faXNFcnJvckdlbmVyYXRlZE9uT3V0T2ZCb3VuZHNBY2Nlc3NlcyA9IG1fY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpLT5pc0VuYWJsZWQoIkdMX0NIUk9NSVVNX3N0cmljdF9hdHRyaWJz
Iik7CisgICAgbV9pc1Jlc291cmNlU2FmZSA9IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5p
c0VuYWJsZWQoIkdMX0NIUk9NSVVNX3Jlc291cmNlX3NhZmUiKTsKICAgICBpZiAobV9pc0dMRVMy
Q29tcGxpYW50KSB7Ci0gICAgICAgIG1faXNHTEVTMk5QT1RTdHJpY3QgPSAhbV9jb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9PRVNfdGV4dHVyZV9ucG90Iik7Ci0gICAgICAg
IG1faXNEZXB0aFN0ZW5jaWxTdXBwb3J0ZWQgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+
c3VwcG9ydHMoIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCIpOworICAgICAgICBtX2lzR0xF
UzJOUE9UU3RyaWN0ID0gIW1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5pc0VuYWJsZWQoIkdM
X09FU190ZXh0dXJlX25wb3QiKTsKKyAgICAgICAgbV9pc0RlcHRoU3RlbmNpbFN1cHBvcnRlZCA9
IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5pc0VuYWJsZWQoIkdMX09FU19wYWNrZWRfZGVw
dGhfc3RlbmNpbCIpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIG1faXNHTEVTMk5QT1RTdHJpY3Qg
PSAhbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9BUkJfdGV4dHVyZV9u
b25fcG93ZXJfb2ZfdHdvIik7Ci0gICAgICAgIG1faXNEZXB0aFN0ZW5jaWxTdXBwb3J0ZWQgPSBt
X2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX0VYVF9wYWNrZWRfZGVwdGhf
c3RlbmNpbCIpOworICAgICAgICBtX2lzR0xFUzJOUE9UU3RyaWN0ID0gIW1fY29udGV4dC0+Z2V0
RXh0ZW5zaW9ucygpLT5pc0VuYWJsZWQoIkdMX0FSQl90ZXh0dXJlX25vbl9wb3dlcl9vZl90d28i
KTsKKyAgICAgICAgbV9pc0RlcHRoU3RlbmNpbFN1cHBvcnRlZCA9IG1fY29udGV4dC0+Z2V0RXh0
ZW5zaW9ucygpLT5pc0VuYWJsZWQoIkdMX0VYVF9wYWNrZWRfZGVwdGhfc3RlbmNpbCIpOwogICAg
IH0KIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9u
czNELmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0
ZW5zaW9uczNELmgJKHJldmlzaW9uIDgzNjA1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRXh0ZW5zaW9uczNELmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDYgKzYwLDcgQEAg
cHVibGljOgogICAgIC8vIFRha2VzIGZ1bGwgbmFtZSBvZiBleHRlbnNpb247IGZvciBleGFtcGxl
LAogICAgIC8vICJHTF9FWFRfdGV4dHVyZV9mb3JtYXRfQkdSQTg4ODgiLgogICAgIHZpcnR1YWwg
Ym9vbCBzdXBwb3J0cyhjb25zdCBTdHJpbmcmKSA9IDA7CisgICAgdmlydHVhbCBib29sIGlzRW5h
YmxlZChjb25zdCBTdHJpbmcmKSA9IDA7CiAKICAgICAvLyBDZXJ0YWluIE9wZW5HTCBhbmQgV2Vi
R0wgaW1wbGVtZW50YXRpb25zIG1heSBzdXBwb3J0IGVuYWJsaW5nCiAgICAgLy8gZXh0ZW5zaW9u
cyBsYXppbHkuIFRoaXMgbWV0aG9kIG1heSBvbmx5IGJlIGNhbGxlZCB3aXRoCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9FeHRlbnNpb25zM0RDaHJvbWl1
bS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0V4dGVuc2lvbnMzRENocm9taXVtLmgJKHJldmlzaW9uIDgzNjA1KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRXh0ZW5zaW9uczNEQ2hyb21pdW0uaAko
d29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBFeHRlbnNp
b25zM0QgbWV0aG9kcy4KICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHMoY29uc3QgU3RyaW5nJik7
CisgICAgdmlydHVhbCBib29sIGlzRW5hYmxlZChjb25zdCBTdHJpbmcmKTsKICAgICB2aXJ0dWFs
IHZvaWQgZW5zdXJlRW5hYmxlZChjb25zdCBTdHJpbmcmKTsKICAgICB2aXJ0dWFsIGludCBnZXRH
cmFwaGljc1Jlc2V0U3RhdHVzQVJCKCk7CiAgICAgdmlydHVhbCB2b2lkIGJsaXRGcmFtZWJ1ZmZl
cihsb25nIHNyY1gwLCBsb25nIHNyY1kwLCBsb25nIHNyY1gxLCBsb25nIHNyY1kxLCBsb25nIGRz
dFgwLCBsb25nIGRzdFkwLCBsb25nIGRzdFgxLCBsb25nIGRzdFkxLCB1bnNpZ25lZCBsb25nIG1h
c2ssIHVuc2lnbmVkIGxvbmcgZmlsdGVyKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0wuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0wu
Y3BwCShyZXZpc2lvbiA4MzYwNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNiAr
MTAxLDE5IEBAIGJvb2wgRXh0ZW5zaW9uczNET3BlbkdMOjpzdXBwb3J0cyhjb25zdCAKICAgICBy
ZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpOwogfQogCitib29sIEV4
dGVuc2lvbnMzRE9wZW5HTDo6aXNFbmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyNpZiBQ
TEFURk9STShNQUMpCisgICAgaWYgKG5hbWUgPT0gIkdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZl
cyIpIHsKKyAgICAgICAgLy8gRW5hYmxlIHN1cHBvcnQgaW4gQU5HTEUgKGlmIG5vdCBlbmFibGVk
IGFscmVhZHkpCisgICAgICAgIEFOR0xFV2ViS2l0QnJpZGdlJiBjb21waWxlciA9IG1fY29udGV4
dC0+bV9jb21waWxlcjsKKyAgICAgICAgU2hCdWlsdEluUmVzb3VyY2VzIEFOR0xFUmVzb3VyY2Vz
ID0gY29tcGlsZXIuZ2V0UmVzb3VyY2VzKCk7CisgICAgICAgIHJldHVybiBBTkdMRVJlc291cmNl
cy5PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXM7CisgICAgfQorI2VuZGlmCisgICAgcmV0dXJuIHN1
cHBvcnRzKG5hbWUpOworfQorCiB2b2lkIEV4dGVuc2lvbnMzRE9wZW5HTDo6ZW5zdXJlRW5hYmxl
ZChjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAjaWYgUExBVEZPUk0oTUFDKQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRl
bnNpb25zM0RPcGVuR0wuaAkocmV2aXNpb24gODM2MDUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNET3BlbkdMLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQwLDYgKzQwLDcgQEAgcHVibGljOgogCiAgICAgLy8gRXh0ZW5zaW9uczNEIG1ldGhvZHMu
CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzKGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwg
Ym9vbCBpc0VuYWJsZWQoY29uc3QgU3RyaW5nJik7CiAgICAgdmlydHVhbCB2b2lkIGVuc3VyZUVu
YWJsZWQoY29uc3QgU3RyaW5nJik7CiAgICAgdmlydHVhbCBpbnQgZ2V0R3JhcGhpY3NSZXNldFN0
YXR1c0FSQigpOwogICAgIHZpcnR1YWwgdm9pZCBibGl0RnJhbWVidWZmZXIobG9uZyBzcmNYMCwg
bG9uZyBzcmNZMCwgbG9uZyBzcmNYMSwgbG9uZyBzcmNZMSwgbG9uZyBkc3RYMCwgbG9uZyBkc3RZ
MCwgbG9uZyBkc3RYMSwgbG9uZyBkc3RZMSwgdW5zaWduZWQgbG9uZyBtYXNrLCB1bnNpZ25lZCBs
b25nIGZpbHRlcik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9F
eHRlbnNpb25zM0RRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvcXQvRXh0ZW5zaW9uczNEUXQuY3BwCShyZXZpc2lvbiA4MzYwNSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0V4dGVuc2lvbnMzRFF0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDcsNiArNDcsMTEgQEAgYm9vbCBFeHRlbnNpb25zM0RRdDo6c3VwcG9ydHMo
Y29uc3QgU3RyaQogICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBFeHRlbnNpb25zM0RRdDo6
aXNFbmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICByZXR1cm4gc3VwcG9ydHMobmFt
ZSk7Cit9CisKIHZvaWQgRXh0ZW5zaW9uczNEUXQ6OmVuc3VyZUVuYWJsZWQoY29uc3QgU3RyaW5n
JiBuYW1lKQogewogICAgIEFTU0VSVChzdXBwb3J0cyhuYW1lKSk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9FeHRlbnNpb25zM0RRdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0V4dGVuc2lvbnMzRFF0LmgJKHJl
dmlzaW9uIDgzNjA1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRXh0
ZW5zaW9uczNEUXQuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsNyBAQCBwdWJsaWM6CiAK
ICAgICAvLyBFeHRlbnNpb25zM0QgbWV0aG9kcy4KICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHMo
Y29uc3QgU3RyaW5nJik7CisgICAgdmlydHVhbCBib29sIGlzRW5hYmxlZChjb25zdCBTdHJpbmcm
KTsKICAgICB2aXJ0dWFsIHZvaWQgZW5zdXJlRW5hYmxlZChjb25zdCBTdHJpbmcmKTsKICAgICB2
aXJ0dWFsIGludCBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCk7CiAgICAgdmlydHVhbCB2b2lk
IGJsaXRGcmFtZWJ1ZmZlcihsb25nIHNyY1gwLCBsb25nIHNyY1kwLCBsb25nIHNyY1gxLCBsb25n
IHNyY1kxLCBsb25nIGRzdFgwLCBsb25nIGRzdFkwLCBsb25nIGRzdFgxLCBsb25nIGRzdFkxLCB1
bnNpZ25lZCBsb25nIG1hc2ssIHVuc2lnbmVkIGxvbmcgZmlsdGVyKTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA4Mzc1MCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDQtMTMg
IFpoZW55YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBFeHRlbnNpb24zRCBuZWVkcyB0byBwcm92aWRlIGEgd2F5
IHRvIGNoZWNrIGlmIGFuIGV4dGVuc2lvbiBpcyBlbmFibGVkCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODQxMAorCisgICAgICAgIEltcGxlbWVudCBp
c0VuYWJsZWQoKSBpbiBjaHJvbWl1bSBwb3J0LgorCisgICAgICAgICogc3JjL0V4dGVuc2lvbnMz
RENocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnMzRENocm9taXVtOjpp
c0VuYWJsZWQpOgorICAgICAgICAqIHNyYy9HcmFwaGljc0NvbnRleHQzRENocm9taXVtLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmlzRXh0ZW5zaW9u
RW5hYmxlZCk6CisgICAgICAgICogc3JjL0dyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwuaDoKKwog
MjAxMS0wNC0xMyAgS2ludWtvIFlhc3VkYSAgPGtpbnVrb0BjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgRGF2aWQgTGV2aW4uCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9FeHRlbnNpb25zM0RDaHJvbWl1bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvRXh0ZW5zaW9uczNEQ2hyb21pdW0uY3BwCShyZXZpc2lvbiA4MzYwNSkK
KysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0V4dGVuc2lvbnMzRENocm9taXVtLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsMTEgQEAgYm9vbCBFeHRlbnNpb25zM0RDaHJvbWl1
bTo6c3VwcG9ydHMoY29ucwogICAgIHJldHVybiBtX2ludGVybmFsLT5zdXBwb3J0c0V4dGVuc2lv
bihuYW1lKTsKIH0KIAorYm9vbCBFeHRlbnNpb25zM0RDaHJvbWl1bTo6aXNFbmFibGVkKGNvbnN0
IFN0cmluZyYgbmFtZSkKK3sKKyAgICByZXR1cm4gbV9pbnRlcm5hbC0+aXNFeHRlbnNpb25FbmFi
bGVkKG5hbWUpOworfQorCiB2b2lkIEV4dGVuc2lvbnMzRENocm9taXVtOjplbnN1cmVFbmFibGVk
KGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICNpZm5kZWYgTkRFQlVHCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRENocm9taXVtLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRENocm9taXVt
LmNwcAkocmV2aXNpb24gODM2MDUpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFw
aGljc0NvbnRleHQzRENocm9taXVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzc0LDYgKzc3NCwx
MyBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnN1cHBvcnRzCiAgICAgcmV0dXJu
IG1fZW5hYmxlZEV4dGVuc2lvbnMuY29udGFpbnMobWFwcGVkTmFtZSkgfHwgbV9yZXF1ZXN0YWJs
ZUV4dGVuc2lvbnMuY29udGFpbnMobWFwcGVkTmFtZSk7CiB9CiAKK2Jvb2wgR3JhcGhpY3NDb250
ZXh0M0RJbnRlcm5hbDo6aXNFeHRlbnNpb25FbmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sK
KyAgICBpbml0aWFsaXplRXh0ZW5zaW9ucygpOworICAgIFN0cmluZyBtYXBwZWROYW1lID0gbWFw
RXh0ZW5zaW9uTmFtZShuYW1lKTsKKyAgICByZXR1cm4gbV9lbmFibGVkRXh0ZW5zaW9ucy5jb250
YWlucyhtYXBwZWROYW1lKTsKK30KKwogYm9vbCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpl
bnN1cmVFeHRlbnNpb25FbmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICBpbml0aWFs
aXplRXh0ZW5zaW9ucygpOwpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhp
Y3NDb250ZXh0M0RJbnRlcm5hbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0dyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwuaAkocmV2aXNpb24gODM2MDUpCisrKyBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzREludGVybmFsLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI1MCw2ICsyNTAsNyBAQCBwdWJsaWM6CiAgICAgLy8gRXh0ZW5zaW9u
czNEIHN1cHBvcnQuCiAgICAgRXh0ZW5zaW9uczNEKiBnZXRFeHRlbnNpb25zKCk7CiAgICAgYm9v
bCBzdXBwb3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpOworICAgIGJvb2wgaXNFeHRl
bnNpb25FbmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSk7CiAgICAgYm9vbCBlbnN1cmVFeHRlbnNp
b25FbmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSk7CiAKICAgICAvLyBFWFRfdGV4dHVyZV9mb3Jt
YXRfQkdSQTg4ODgK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89445</attachid>
            <date>2011-04-13 13:41:53 -0700</date>
            <delta_ts>2011-04-13 13:47:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58410-20110413134151.patch</filename>
            <type>text/plain</type>
            <size>10579</size>
            <attacher name="Zhenyao Mo">zmo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgzNzUwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMDQtMTMgIFpoZW55YW8g
TW8gIDx6bW9AZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBFeHRlbnNpb24zRCBuZWVkcyB0byBwcm92aWRlIGEgd2F5IHRvIGNoZWNr
IGlmIGFuIGV4dGVuc2lvbiBpcyBlbmFibGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD01ODQxMAorCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6c2V0dXBGbGFncyk6IFVzZSBpc0VuYWJsZWQoKSBpbnN0ZWFkIG9mIHN1cHBvcnRzKCku
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uczNELmg6IEFkZCBpc0VuYWJs
ZWQoKS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9FeHRlbnNpb25zM0RD
aHJvbWl1bS5oOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0
ZW5zaW9uczNET3BlbkdMLmNwcDogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25z
M0RPcGVuR0w6OmlzRW5hYmxlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0V4dGVuc2lvbnMzRE9wZW5HTC5oOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9xdC9FeHRlbnNpb25zM0RRdC5jcHA6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5z
aW9uczNEUXQ6OmlzRW5hYmxlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRXh0
ZW5zaW9uczNEUXQuaDogRGl0dG8uCisKIDIwMTEtMDQtMTIgIFBhdmVsIFBvZGl2aWxvdiAgPHBv
ZGl2aWxvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1h
bi4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0LmNwcAkocmV2aXNpb24gODM2MDUpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NTgs
MTQgKzQ1OCwxNCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6c2V0dXBGbGFncygpCiAg
ICAgQVNTRVJUKG1fY29udGV4dCk7CiAKICAgICBtX2lzR0xFUzJDb21wbGlhbnQgPSBtX2NvbnRl
eHQtPmlzR0xFUzJDb21wbGlhbnQoKTsKLSAgICBtX2lzRXJyb3JHZW5lcmF0ZWRPbk91dE9mQm91
bmRzQWNjZXNzZXMgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX0NI
Uk9NSVVNX3N0cmljdF9hdHRyaWJzIik7Ci0gICAgbV9pc1Jlc291cmNlU2FmZSA9IG1fY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfQ0hST01JVU1fcmVzb3VyY2Vfc2FmZSIp
OworICAgIG1faXNFcnJvckdlbmVyYXRlZE9uT3V0T2ZCb3VuZHNBY2Nlc3NlcyA9IG1fY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpLT5pc0VuYWJsZWQoIkdMX0NIUk9NSVVNX3N0cmljdF9hdHRyaWJz
Iik7CisgICAgbV9pc1Jlc291cmNlU2FmZSA9IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5p
c0VuYWJsZWQoIkdMX0NIUk9NSVVNX3Jlc291cmNlX3NhZmUiKTsKICAgICBpZiAobV9pc0dMRVMy
Q29tcGxpYW50KSB7Ci0gICAgICAgIG1faXNHTEVTMk5QT1RTdHJpY3QgPSAhbV9jb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9PRVNfdGV4dHVyZV9ucG90Iik7Ci0gICAgICAg
IG1faXNEZXB0aFN0ZW5jaWxTdXBwb3J0ZWQgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+
c3VwcG9ydHMoIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCIpOworICAgICAgICBtX2lzR0xF
UzJOUE9UU3RyaWN0ID0gIW1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5pc0VuYWJsZWQoIkdM
X09FU190ZXh0dXJlX25wb3QiKTsKKyAgICAgICAgbV9pc0RlcHRoU3RlbmNpbFN1cHBvcnRlZCA9
IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5pc0VuYWJsZWQoIkdMX09FU19wYWNrZWRfZGVw
dGhfc3RlbmNpbCIpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIG1faXNHTEVTMk5QT1RTdHJpY3Qg
PSAhbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9BUkJfdGV4dHVyZV9u
b25fcG93ZXJfb2ZfdHdvIik7Ci0gICAgICAgIG1faXNEZXB0aFN0ZW5jaWxTdXBwb3J0ZWQgPSBt
X2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX0VYVF9wYWNrZWRfZGVwdGhf
c3RlbmNpbCIpOworICAgICAgICBtX2lzR0xFUzJOUE9UU3RyaWN0ID0gIW1fY29udGV4dC0+Z2V0
RXh0ZW5zaW9ucygpLT5pc0VuYWJsZWQoIkdMX0FSQl90ZXh0dXJlX25vbl9wb3dlcl9vZl90d28i
KTsKKyAgICAgICAgbV9pc0RlcHRoU3RlbmNpbFN1cHBvcnRlZCA9IG1fY29udGV4dC0+Z2V0RXh0
ZW5zaW9ucygpLT5pc0VuYWJsZWQoIkdMX0VYVF9wYWNrZWRfZGVwdGhfc3RlbmNpbCIpOwogICAg
IH0KIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9u
czNELmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0
ZW5zaW9uczNELmgJKHJldmlzaW9uIDgzNjA1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRXh0ZW5zaW9uczNELmgJKHdvcmtpbmcgY29weSkKQEAgLTY2LDYgKzY2LDExIEBA
IHB1YmxpYzoKICAgICAvLyBleHRlbnNpb24gbmFtZXMgZm9yIHdoaWNoIHN1cHBvcnRzIHJldHVy
bnMgdHJ1ZS4KICAgICB2aXJ0dWFsIHZvaWQgZW5zdXJlRW5hYmxlZChjb25zdCBTdHJpbmcmKSA9
IDA7CiAKKyAgICAvLyBUYWtlcyBmdWxsIG5hbWUgb2YgZXh0ZW5zaW9uOiBmb3IgZXhhbXBsZSwg
IkdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCIuCisgICAgLy8gQ2hlY2tzIHRvIHNlZSB3
aGV0aGVyIHRoZSBnaXZlbiBleHRlbnNpb24gaXMgYWN0dWFsbHkgZW5hYmxlZCAoc2VlIGVuc3Vy
ZUVuYWJsZWQpLgorICAgIC8vIEhhcyBubyBvdGhlciBzaWRlLWVmZmVjdHMuCisgICAgdmlydHVh
bCBib29sIGlzRW5hYmxlZChjb25zdCBTdHJpbmcmKSA9IDA7CisKICAgICBlbnVtIEV4dGVuc2lv
bnNFbnVtVHlwZSB7CiAgICAgICAgIC8vIEdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCBl
bnVtcwogICAgICAgICBCR1JBX0VYVCA9IDB4ODBFMSwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0V4dGVuc2lvbnMzRENocm9taXVtLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRXh0ZW5zaW9u
czNEQ2hyb21pdW0uaAkocmV2aXNpb24gODM2MDUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9FeHRlbnNpb25zM0RDaHJvbWl1bS5oCSh3b3JraW5nIGNvcHkp
CkBAIC00Myw2ICs0Myw3IEBAIHB1YmxpYzoKICAgICAvLyBFeHRlbnNpb25zM0QgbWV0aG9kcy4K
ICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHMoY29uc3QgU3RyaW5nJik7CiAgICAgdmlydHVhbCB2
b2lkIGVuc3VyZUVuYWJsZWQoY29uc3QgU3RyaW5nJik7CisgICAgdmlydHVhbCBib29sIGlzRW5h
YmxlZChjb25zdCBTdHJpbmcmKTsKICAgICB2aXJ0dWFsIGludCBnZXRHcmFwaGljc1Jlc2V0U3Rh
dHVzQVJCKCk7CiAgICAgdmlydHVhbCB2b2lkIGJsaXRGcmFtZWJ1ZmZlcihsb25nIHNyY1gwLCBs
b25nIHNyY1kwLCBsb25nIHNyY1gxLCBsb25nIHNyY1kxLCBsb25nIGRzdFgwLCBsb25nIGRzdFkw
LCBsb25nIGRzdFgxLCBsb25nIGRzdFkxLCB1bnNpZ25lZCBsb25nIG1hc2ssIHVuc2lnbmVkIGxv
bmcgZmlsdGVyKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2Ft
cGxlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHNhbXBsZXMsIHVuc2lnbmVk
IGxvbmcgaW50ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcg
aGVpZ2h0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zM0RPcGVuR0wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0wuY3BwCShyZXZpc2lvbiA4MzYw
NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25z
M0RPcGVuR0wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgsNiArMTE4LDE3IEBAIHZvaWQgRXh0
ZW5zaW9uczNET3BlbkdMOjplbnN1cmVFbmFibGVkKGMKICNlbmRpZgogfQogCitib29sIEV4dGVu
c2lvbnMzRE9wZW5HTDo6aXNFbmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyNpZiBQTEFU
Rk9STShNQUMpCisgICAgaWYgKG5hbWUgPT0gIkdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyIp
IHsKKyAgICAgICAgQU5HTEVXZWJLaXRCcmlkZ2UmIGNvbXBpbGVyID0gbV9jb250ZXh0LT5tX2Nv
bXBpbGVyOworICAgICAgICByZXR1cm4gY29tcGlsZXIuZ2V0UmVzb3VyY2VzKCkuT0VTX3N0YW5k
YXJkX2Rlcml2YXRpdmVzOworICAgIH0KKyNlbmRpZgorICAgIHJldHVybiBzdXBwb3J0cyhuYW1l
KTsKK30KKwogaW50IEV4dGVuc2lvbnMzRE9wZW5HTDo6Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FS
QigpCiB7CiAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDNEOjpOT19FUlJPUjsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0wu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
RXh0ZW5zaW9uczNET3BlbkdMLmgJKHJldmlzaW9uIDgzNjA1KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTC5oCSh3b3JraW5nIGNv
cHkpCkBAIC00MSw2ICs0MSw3IEBAIHB1YmxpYzoKICAgICAvLyBFeHRlbnNpb25zM0QgbWV0aG9k
cy4KICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHMoY29uc3QgU3RyaW5nJik7CiAgICAgdmlydHVh
bCB2b2lkIGVuc3VyZUVuYWJsZWQoY29uc3QgU3RyaW5nJik7CisgICAgdmlydHVhbCBib29sIGlz
RW5hYmxlZChjb25zdCBTdHJpbmcmKTsKICAgICB2aXJ0dWFsIGludCBnZXRHcmFwaGljc1Jlc2V0
U3RhdHVzQVJCKCk7CiAgICAgdmlydHVhbCB2b2lkIGJsaXRGcmFtZWJ1ZmZlcihsb25nIHNyY1gw
LCBsb25nIHNyY1kwLCBsb25nIHNyY1gxLCBsb25nIHNyY1kxLCBsb25nIGRzdFgwLCBsb25nIGRz
dFkwLCBsb25nIGRzdFgxLCBsb25nIGRzdFkxLCB1bnNpZ25lZCBsb25nIG1hc2ssIHVuc2lnbmVk
IGxvbmcgZmlsdGVyKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRp
c2FtcGxlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHNhbXBsZXMsIHVuc2ln
bmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxv
bmcgaGVpZ2h0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0V4
dGVuc2lvbnMzRFF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9xdC9FeHRlbnNpb25zM0RRdC5jcHAJKHJldmlzaW9uIDgzNjA1KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRXh0ZW5zaW9uczNEUXQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01Miw2ICs1MiwxMSBAQCB2b2lkIEV4dGVuc2lvbnMzRFF0OjplbnN1cmVFbmFi
bGVkKGNvbnN0CiAgICAgQVNTRVJUKHN1cHBvcnRzKG5hbWUpKTsKIH0KIAorYm9vbCBFeHRlbnNp
b25zM0RRdDo6aXNFbmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICByZXR1cm4gc3Vw
cG9ydHMobmFtZSk7Cit9CisKIGludCBFeHRlbnNpb25zM0RRdDo6Z2V0R3JhcGhpY3NSZXNldFN0
YXR1c0FSQigpCiB7CiAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDNEOjpOT19FUlJPUjsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0V4dGVuc2lvbnMzRFF0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRXh0ZW5z
aW9uczNEUXQuaAkocmV2aXNpb24gODM2MDUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9xdC9FeHRlbnNpb25zM0RRdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3
IEBAIHB1YmxpYzoKICAgICAvLyBFeHRlbnNpb25zM0QgbWV0aG9kcy4KICAgICB2aXJ0dWFsIGJv
b2wgc3VwcG9ydHMoY29uc3QgU3RyaW5nJik7CiAgICAgdmlydHVhbCB2b2lkIGVuc3VyZUVuYWJs
ZWQoY29uc3QgU3RyaW5nJik7CisgICAgdmlydHVhbCBib29sIGlzRW5hYmxlZChjb25zdCBTdHJp
bmcmKTsKICAgICB2aXJ0dWFsIGludCBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCk7CiAgICAg
dmlydHVhbCB2b2lkIGJsaXRGcmFtZWJ1ZmZlcihsb25nIHNyY1gwLCBsb25nIHNyY1kwLCBsb25n
IHNyY1gxLCBsb25nIHNyY1kxLCBsb25nIGRzdFgwLCBsb25nIGRzdFkwLCBsb25nIGRzdFgxLCBs
b25nIGRzdFkxLCB1bnNpZ25lZCBsb25nIG1hc2ssIHVuc2lnbmVkIGxvbmcgZmlsdGVyKTsKICAg
ICB2aXJ0dWFsIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKHVuc2lnbmVkIGxv
bmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHNhbXBsZXMsIHVuc2lnbmVkIGxvbmcgaW50ZXJuYWxm
b3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA4Mzc1MCkKKysrIFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIw
MTEtMDQtMTMgIFpoZW55YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeHRlbnNpb24zRCBuZWVkcyB0byBwcm92
aWRlIGEgd2F5IHRvIGNoZWNrIGlmIGFuIGV4dGVuc2lvbiBpcyBlbmFibGVkCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODQxMAorCisgICAgICAgIElt
cGxlbWVudCBpc0VuYWJsZWQoKSBpbiBjaHJvbWl1bSBwb3J0LgorCisgICAgICAgICogc3JjL0V4
dGVuc2lvbnMzRENocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnMzRENo
cm9taXVtOjppc0VuYWJsZWQpOgorICAgICAgICAqIHNyYy9HcmFwaGljc0NvbnRleHQzRENocm9t
aXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6Omlz
RXh0ZW5zaW9uRW5hYmxlZCk6CisgICAgICAgICogc3JjL0dyYXBoaWNzQ29udGV4dDNESW50ZXJu
YWwuaDoKKwogMjAxMS0wNC0xMyAgS2ludWtvIFlhc3VkYSAgPGtpbnVrb0BjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgTGV2aW4uCkluZGV4OiBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9FeHRlbnNpb25zM0RDaHJvbWl1bS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRXh0ZW5zaW9uczNEQ2hyb21pdW0uY3BwCShyZXZpc2lv
biA4MzYwNSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0V4dGVuc2lvbnMzRENocm9t
aXVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcsNiArNTcsMTEgQEAgdm9pZCBFeHRlbnNpb25z
M0RDaHJvbWl1bTo6ZW5zdXJlRW5hYmxlZAogICAgIEFTU0VSVChyZXN1bHQpOwogfQogCitib29s
IEV4dGVuc2lvbnMzRENocm9taXVtOjppc0VuYWJsZWQoY29uc3QgU3RyaW5nJiBuYW1lKQorewor
ICAgIHJldHVybiBtX2ludGVybmFsLT5pc0V4dGVuc2lvbkVuYWJsZWQobmFtZSk7Cit9CisKIGlu
dCBFeHRlbnNpb25zM0RDaHJvbWl1bTo6Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpCiB7CiAg
ICAgcmV0dXJuIG1faW50ZXJuYWwtPmlzQ29udGV4dExvc3QoKSA/IHN0YXRpY19jYXN0PGludD4o
RXh0ZW5zaW9uczNEOjpVTktOT1dOX0NPTlRFWFRfUkVTRVRfQVJCKSA6IHN0YXRpY19jYXN0PGlu
dD4oR3JhcGhpY3NDb250ZXh0M0Q6Ok5PX0VSUk9SKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNEQ2hyb21pdW0uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNEQ2hyb21pdW0uY3BwCShy
ZXZpc2lvbiA4MzYwNSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29u
dGV4dDNEQ2hyb21pdW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OTMsNiArNzkzLDEzIEBAIGJv
b2wgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6ZW5zdXJlRXgKICAgICByZXR1cm4gbV9lbmFi
bGVkRXh0ZW5zaW9ucy5jb250YWlucyhtYXBwZWROYW1lKTsKIH0KIAorYm9vbCBHcmFwaGljc0Nv
bnRleHQzREludGVybmFsOjppc0V4dGVuc2lvbkVuYWJsZWQoY29uc3QgU3RyaW5nJiBuYW1lKQor
eworICAgIGluaXRpYWxpemVFeHRlbnNpb25zKCk7CisgICAgU3RyaW5nIG1hcHBlZE5hbWUgPSBt
YXBFeHRlbnNpb25OYW1lKG5hbWUpOworICAgIHJldHVybiBtX2VuYWJsZWRFeHRlbnNpb25zLmNv
bnRhaW5zKG1hcHBlZE5hbWUpOworfQorCiBERUxFR0FURV9UT19JTVBMXzRSKG1hcEJ1ZmZlclN1
YkRhdGFDSFJPTUlVTSwgR0MzRGVudW0sIEdDM0RzaXplaXB0ciwgR0MzRHNpemVpLCBHQzNEZW51
bSwgdm9pZCopCiBERUxFR0FURV9UT19JTVBMXzEodW5tYXBCdWZmZXJTdWJEYXRhQ0hST01JVU0s
IGNvbnN0IHZvaWQqKQogREVMRUdBVEVfVE9fSU1QTF85UihtYXBUZXhTdWJJbWFnZTJEQ0hST01J
VU0sIEdDM0RlbnVtLCBHQzNEaW50LCBHQzNEaW50LCBHQzNEaW50LCBHQzNEc2l6ZWksIEdDM0Rz
aXplaSwgR0MzRGVudW0sIEdDM0RlbnVtLCBHQzNEZW51bSwgdm9pZCopCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzREludGVybmFsLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5h
bC5oCShyZXZpc2lvbiA4MzYwNSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBo
aWNzQ29udGV4dDNESW50ZXJuYWwuaAkod29ya2luZyBjb3B5KQpAQCAtMjUxLDYgKzI1MSw3IEBA
IHB1YmxpYzoKICAgICBFeHRlbnNpb25zM0QqIGdldEV4dGVuc2lvbnMoKTsKICAgICBib29sIHN1
cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSk7CiAgICAgYm9vbCBlbnN1cmVFeHRl
bnNpb25FbmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSk7CisgICAgYm9vbCBpc0V4dGVuc2lvbkVu
YWJsZWQoY29uc3QgU3RyaW5nJiBuYW1lKTsKIAogICAgIC8vIEVYVF90ZXh0dXJlX2Zvcm1hdF9C
R1JBODg4OAogICAgIGJvb2wgc3VwcG9ydHNCR1JBKCk7Cg==
</data>
<flag name="review"
          id="82118"
          type_id="1"
          status="+"
          setter="kbr"
    />
          </attachment>
      

    </bug>

</bugzilla>