<?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>74784</bug_id>
          
          <creation_ts>2011-12-17 00:33:17 -0800</creation_ts>
          <short_desc>Add support for 8 bits strings to Document::isValidName()</short_desc>
          <delta_ts>2011-12-19 00:11:45 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>74833</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>darin</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>523274</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-12-17 00:33:17 -0800</bug_when>
    <thetext>We don&apos;t have to go through the slow case when we have a 8 bit string.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523275</commentid>
    <comment_count>1</comment_count>
      <attachid>119719</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-12-17 00:35:08 -0800</bug_when>
    <thetext>Created attachment 119719
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523307</commentid>
    <comment_count>2</comment_count>
      <attachid>119719</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-12-17 09:28:45 -0800</bug_when>
    <thetext>Comment on attachment 119719
Patch

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

Ahh, these 8-bit string hacks are just great! :)

&gt; Source/WebCore/ChangeLog:9
&gt; +        The valid name has a fast path for ASCII, and a slow path
&gt; +        taking into account Unicode characters.

... a slow path taking Unicode characters into account.

&gt; Source/WebCore/ChangeLog:12
&gt; +        For 8 bits strings, we do not need to test again the slow path
&gt; +        as it should never succeed if the fast path does not succed.

Since the slow path here is really the non-ASCII path, you could be more specific, e.g:
&quot;For 8-bit strings, we don&apos;t need to take the non-ASCII path as it could never succeed if the ASCII path didn&apos;t.&quot;

&gt; Source/WebCore/dom/Document.cpp:3802
&gt; +    return isValidNameASCII(name.characters16(), length) || isValidNameNonASCII(name.characters16(), length);

We should cache the return value from characters16() to avoid doing the String::m_impl null check again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523608</commentid>
    <comment_count>3</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-12-18 18:17:40 -0800</bug_when>
    <thetext>&gt; We should cache the return value from characters16() to avoid doing the String::m_impl null check again.

Good catch Baron Kling.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523609</commentid>
    <comment_count>4</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-12-18 18:17:53 -0800</bug_when>
    <thetext>Committed r103205: &lt;http://trac.webkit.org/changeset/103205&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523625</commentid>
    <comment_count>5</comment_count>
      <attachid>119719</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-12-18 18:43:52 -0800</bug_when>
    <thetext>Comment on attachment 119719
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:12
&gt;&gt; +        as it should never succeed if the fast path does not succed.
&gt; 
&gt; Since the slow path here is really the non-ASCII path, you could be more specific, e.g:
&gt; &quot;For 8-bit strings, we don&apos;t need to take the non-ASCII path as it could never succeed if the ASCII path didn&apos;t.&quot;

Is that true? Are there no valid name characters in the 0x80-0xFF range that could be in 8-bit strings? That doesn’t sound right to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523628</commentid>
    <comment_count>6</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-12-18 18:49:28 -0800</bug_when>
    <thetext>&gt; &gt; Since the slow path here is really the non-ASCII path, you could be more specific, e.g:
&gt; &gt; &quot;For 8-bit strings, we don&apos;t need to take the non-ASCII path as it could never succeed if the ASCII path didn&apos;t.&quot;
&gt; 
&gt; Is that true? Are there no valid name characters in the 0x80-0xFF range that could be in 8-bit strings? That doesn’t sound right to me.

All I had seen in the nonASCII path is characters &gt; 0xFF. Did I miss something?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523630</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-12-18 18:54:03 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; All I had seen in the nonASCII path is characters &gt; 0xFF. Did I miss something?

Well, I went to read isValidNameStart and isValidNamePart and I immediately spotted these:

- All letters are legal name starts. I believe there are many letters in the U+0080-U+00FF range, such as U+00C0.

- U+00B7 is a legal name part. It’s right there as a constant in isValidNamePart.

So I think there are many non-ASCII valid name characters that fit in 8-bit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523634</commentid>
    <comment_count>8</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-12-18 18:56:51 -0800</bug_when>
    <thetext>I checked the Unicode categories of the valid characters, and there are some in 0x80-0xFF.

The function should probably be changed isValidNameASCII() -&gt; isValidNameLatin1. Or if not possible, skip the shortcut altogether.

I will revert this. There should be tests for those cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523643</commentid>
    <comment_count>9</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-12-18 19:02:19 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; The function should probably be changed isValidNameASCII() -&gt; isValidNameLatin1.

That might be OK.

&gt; Or if not possible, skip the shortcut altogether.

Why!? Valid ASCII names are far more common than other kind of name, so it’s great to have a fast case for that.

&gt; There should be tests for those cases.

Absolutely. I agree!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523645</commentid>
    <comment_count>10</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-12-18 19:07:59 -0800</bug_when>
    <thetext>&gt; &gt; Or if not possible, skip the shortcut altogether.
&gt; 
&gt; Why!? Valid ASCII names are far more common than other kind of name, so it’s great to have a fast case for that.

I meant skipping the Unicode test if the string is 8 bits.

The current fast path totally make sense, I have no intention to change that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523651</commentid>
    <comment_count>11</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-12-18 19:16:08 -0800</bug_when>
    <thetext>Reverted in r103210. Reopening to fix this again with tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523653</commentid>
    <comment_count>12</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-12-18 19:19:58 -0800</bug_when>
    <thetext>I suggest logic that uses characters() if the 8-bit string is not all ASCII. I think it’s OK to expand the string to 16-bit to check if it’s valid if the string has non-ASCII characters in it. I believe those cases are rare enough that we don’t need to optimize them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523672</commentid>
    <comment_count>13</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-12-18 19:57:37 -0800</bug_when>
    <thetext>Here’s the code I suggest:

    UChar* characters;
    if (name.is8Bit()) {
        if (isValidNameASCII(name.characters8(), length))
            return true;
        characters = name.characters();
    } else {
        characters = name.characters16();
        if (isValidNameASCII(characters, length))
            return true;
    }
    return isValidNameNonASCII(characters, length);

You like that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523673</commentid>
    <comment_count>14</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-12-18 20:09:26 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; Here’s the code I suggest:
&gt; 
&gt;     UChar* characters;
&gt;     if (name.is8Bit()) {
&gt;         if (isValidNameASCII(name.characters8(), length))
&gt;             return true;
&gt;         characters = name.characters();
&gt;     } else {
&gt;         characters = name.characters16();
&gt;         if (isValidNameASCII(characters, length))
&gt;             return true;
&gt;     }
&gt;     return isValidNameNonASCII(characters, length);
&gt; 
&gt; You like that?

Sure, I think that is the right thing to do. I just want to add tests before updating and I am busy with a merge at the moment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523724</commentid>
    <comment_count>15</comment_count>
      <attachid>119815</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-12-18 22:23:11 -0800</bug_when>
    <thetext>Created attachment 119815
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523780</commentid>
    <comment_count>16</comment_count>
      <attachid>119815</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-19 00:11:40 -0800</bug_when>
    <thetext>Comment on attachment 119815
Patch

Clearing flags on attachment: 119815

Committed r103222: &lt;http://trac.webkit.org/changeset/103222&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523781</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-19 00:11:45 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119719</attachid>
            <date>2011-12-17 00:35:08 -0800</date>
            <delta_ts>2011-12-18 22:23:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74784-20111217003507.patch</filename>
            <type>text/plain</type>
            <size>2263</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAzMTQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTQ0M2Y1YTM3YjFiZjBj
ZTYzZjFmMzM0MzZhZDBkODNiY2RlZDliMC4uOTU5NTgwYzRjMjM1OTE2YTkwOTFmNjA0MmNhNWNm
Y2JiM2ZmN2ZmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDExLTEyLTE3ICBCZW5q
YW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0
IGZvciA4IGJpdHMgc3RyaW5ncyB0byBEb2N1bWVudDo6aXNWYWxpZE5hbWUoKQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ3ODQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgdmFsaWQgbmFtZSBoYXMg
YSBmYXN0IHBhdGggZm9yIEFTQ0lJLCBhbmQgYSBzbG93IHBhdGgKKyAgICAgICAgdGFraW5nIGlu
dG8gYWNjb3VudCBVbmljb2RlIGNoYXJhY3RlcnMuCisKKyAgICAgICAgRm9yIDggYml0cyBzdHJp
bmdzLCB3ZSBkbyBub3QgbmVlZCB0byB0ZXN0IGFnYWluIHRoZSBzbG93IHBhdGgKKyAgICAgICAg
YXMgaXQgc2hvdWxkIG5ldmVyIHN1Y2NlZWQgaWYgdGhlIGZhc3QgcGF0aCBkb2VzIG5vdCBzdWNj
ZWQuCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNW
YWxpZE5hbWVBU0NJSSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aXNWYWxpZE5hbWUp
OgorCiAyMDExLTEyLTE2ICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFJlZHVjZSB0aGUgbWVtb3J5IGFsbG9jYXRpb25zIG9mIFdlYkNvcmUncyBjc3NQ
cm9wZXJ0eU5hbWUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggMGYwNGNkYWVhZjUwYjhi
NjAzM2I1ZDg2OTM4ODM2OGNkMWQzOTFlNi4uNWEyMDAyNjc5OTY2OTIwZTJhNWQwNjBmYTNlZTU0
MzY3Nzk5MGZkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0zNzc1LDkgKzM3NzUsMTAg
QEAgc3RhdGljIGJvb2wgaXNWYWxpZE5hbWVOb25BU0NJSShjb25zdCBVQ2hhciogY2hhcmFjdGVy
cywgdW5zaWduZWQgbGVuZ3RoKQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgaW5saW5l
IGJvb2wgaXNWYWxpZE5hbWVBU0NJSShjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQg
bGVuZ3RoKQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhclR5cGU+CitzdGF0aWMgaW5saW5lIGJvb2wg
aXNWYWxpZE5hbWVBU0NJSShjb25zdCBDaGFyVHlwZSogY2hhcmFjdGVycywgdW5zaWduZWQgbGVu
Z3RoKQogewotICAgIFVDaGFyIGMgPSBjaGFyYWN0ZXJzWzBdOworICAgIENoYXJUeXBlIGMgPSBj
aGFyYWN0ZXJzWzBdOwogICAgIGlmICghKGlzQVNDSUlBbHBoYShjKSB8fCBjID09ICc6JyB8fCBj
ID09ICdfJykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMzc5Niw4ICszNzk3LDkgQEAg
Ym9vbCBEb2N1bWVudDo6aXNWYWxpZE5hbWUoY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIGlmICgh
bGVuZ3RoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBjb25zdCBVQ2hhciogY2hhcmFj
dGVycyA9IG5hbWUuY2hhcmFjdGVycygpOwotICAgIHJldHVybiBpc1ZhbGlkTmFtZUFTQ0lJKGNo
YXJhY3RlcnMsIGxlbmd0aCkgfHwgaXNWYWxpZE5hbWVOb25BU0NJSShjaGFyYWN0ZXJzLCBsZW5n
dGgpOworICAgIGlmIChuYW1lLmlzOEJpdCgpKQorICAgICAgICByZXR1cm4gaXNWYWxpZE5hbWVB
U0NJSShuYW1lLmNoYXJhY3RlcnM4KCksIGxlbmd0aCk7CisgICAgcmV0dXJuIGlzVmFsaWROYW1l
QVNDSUkobmFtZS5jaGFyYWN0ZXJzMTYoKSwgbGVuZ3RoKSB8fCBpc1ZhbGlkTmFtZU5vbkFTQ0lJ
KG5hbWUuY2hhcmFjdGVyczE2KCksIGxlbmd0aCk7CiB9CiAKIGJvb2wgRG9jdW1lbnQ6OnBhcnNl
UXVhbGlmaWVkTmFtZShjb25zdCBTdHJpbmcmIHF1YWxpZmllZE5hbWUsIFN0cmluZyYgcHJlZml4
LCBTdHJpbmcmIGxvY2FsTmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119815</attachid>
            <date>2011-12-18 22:23:11 -0800</date>
            <delta_ts>2011-12-19 00:11:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74784-20111218222310.patch</filename>
            <type>text/plain</type>
            <size>10585</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAzMjEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjQwOTc2ZDlkMjE2NjZk
NTc3NjVhODY2MzgyZWYwNjA4MWYwZjRkZS4uMTc5YTg0OTg4ODZhYThjZGRkYmZlMGQ4YTIwNGUz
ZjlkZDVjMTkyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDExLTEyLTE4ICBCZW5q
YW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0
IGZvciA4IGJpdHMgc3RyaW5ncyB0byBEb2N1bWVudDo6aXNWYWxpZE5hbWUoKQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ3ODQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBdm9pZCB0aGUgY29udmVyc2lv
biB0byAxNmJpdHMgd2hlbiB3ZSBhcmUgaW4gdGhlIEFTQ0lJIGZhc3QgcGF0aCwKKyAgICAgICAg
b3RoZXJ3aXNlIGZhbGxiYWNrIHRvIHRoZSBVbmljb2RlIHRlc3RpbmcgaW4gMTZiaXRzLgorCisg
ICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzVmFsaWROYW1l
QVNDSUkpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmlzVmFsaWROYW1lKToKKwogMjAx
MS0xMi0xOCAgRGF2aWQgQmFydG9uICA8ZGJhcnRvbkBtYXRoc2NyaWJlLmNvbT4KIAogICAgICAg
ICA8bXN1cD4sIDxtdW5kZXI+LCA8bW92ZXI+LCBhbmQgPG11bmRlcm92ZXI+IGJhc2VsaW5lIHBv
c2l0aW9ucyBhcmUgd3JvbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDE1NGE3ZDE5MzE2
ODFjYjgxYzQwYTVkOTQxN2Q1OGE3N2JhNWZlMTYuLjA3ZGU4N2Q1YjQ3NTg2OTU3ZmE4YmFhNWU5
Y2M1OWI0YmNmNDJjNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMzc3NSw5ICszNzc1
LDEwIEBAIHN0YXRpYyBib29sIGlzVmFsaWROYW1lTm9uQVNDSUkoY29uc3QgVUNoYXIqIGNoYXJh
Y3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGlu
bGluZSBib29sIGlzVmFsaWROYW1lQVNDSUkoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2ln
bmVkIGxlbmd0aCkKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJUeXBlPgorc3RhdGljIGlubGluZSBi
b29sIGlzVmFsaWROYW1lQVNDSUkoY29uc3QgQ2hhclR5cGUqIGNoYXJhY3RlcnMsIHVuc2lnbmVk
IGxlbmd0aCkKIHsKLSAgICBVQ2hhciBjID0gY2hhcmFjdGVyc1swXTsKKyAgICBDaGFyVHlwZSBj
ID0gY2hhcmFjdGVyc1swXTsKICAgICBpZiAoIShpc0FTQ0lJQWxwaGEoYykgfHwgYyA9PSAnOicg
fHwgYyA9PSAnXycpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTM3OTYsOCArMzc5Nywx
NyBAQCBib29sIERvY3VtZW50Ojppc1ZhbGlkTmFtZShjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAg
aWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGNvbnN0IFVDaGFyKiBj
aGFyYWN0ZXJzID0gbmFtZS5jaGFyYWN0ZXJzKCk7Ci0gICAgcmV0dXJuIGlzVmFsaWROYW1lQVND
SUkoY2hhcmFjdGVycywgbGVuZ3RoKSB8fCBpc1ZhbGlkTmFtZU5vbkFTQ0lJKGNoYXJhY3RlcnMs
IGxlbmd0aCk7CisgICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnM7CisgICAgaWYgKG5hbWUuaXM4
Qml0KCkpIHsKKyAgICAgICAgaWYgKGlzVmFsaWROYW1lQVNDSUkobmFtZS5jaGFyYWN0ZXJzOCgp
LCBsZW5ndGgpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGNoYXJhY3RlcnMg
PSBuYW1lLmNoYXJhY3RlcnMoKTsKKyAgICB9IGVsc2UgeworICAgICAgICBjaGFyYWN0ZXJzID0g
bmFtZS5jaGFyYWN0ZXJzMTYoKTsKKyAgICAgICAgaWYgKGlzVmFsaWROYW1lQVNDSUkoY2hhcmFj
dGVycywgbGVuZ3RoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1
cm4gaXNWYWxpZE5hbWVOb25BU0NJSShjaGFyYWN0ZXJzLCBsZW5ndGgpOwogfQogCiBib29sIERv
Y3VtZW50OjpwYXJzZVF1YWxpZmllZE5hbWUoY29uc3QgU3RyaW5nJiBxdWFsaWZpZWROYW1lLCBT
dHJpbmcmIHByZWZpeCwgU3RyaW5nJiBsb2NhbE5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IDVhNmNmZTE4YzIwZmM3OTk3MzA3NDE0M2FjMmJmMDI1NTQzYzg1ZmEuLjczNGM5ZWFhNGEw
N2M0ODE0Njc5OTg1ZjU3ZDNjYzdmNjQ0NzBkNDUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAx
MS0xMi0xOCAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4KKworICAgICAg
ICBBZGQgc3VwcG9ydCBmb3IgOCBiaXRzIHN0cmluZ3MgdG8gRG9jdW1lbnQ6OmlzVmFsaWROYW1l
KCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0Nzg0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRl
c3RzIGZvciB2YWxpZCBhbmQgaW52YWxpZCBuYW1lcyBmb3Igbm9kZXMuCisKKyAgICAgICAgKiBm
YXN0L2RvbS9Eb2N1bWVudC9jcmVhdGVFbGVtZW50LWludmFsaWQtbmFtZXMtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9Eb2N1bWVudC9jcmVhdGVFbGVtZW50LWludmFs
aWQtbmFtZXMuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vRG9jdW1lbnQvY3JlYXRl
RWxlbWVudC12YWxpZC1uYW1lcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
ZG9tL0RvY3VtZW50L2NyZWF0ZUVsZW1lbnQtdmFsaWQtbmFtZXMuaHRtbDogQWRkZWQuCisKIDIw
MTEtMTItMTggIERhdmlkIEJhcnRvbiAgPGRiYXJ0b25AbWF0aHNjcmliZS5jb20+CiAKICAgICAg
ICAgPG1zdXA+LCA8bXVuZGVyPiwgPG1vdmVyPiwgYW5kIDxtdW5kZXJvdmVyPiBiYXNlbGluZSBw
b3NpdGlvbnMgYXJlIHdyb25nCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9Eb2N1
bWVudC9jcmVhdGVFbGVtZW50LWludmFsaWQtbmFtZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vRG9jdW1lbnQvY3JlYXRlRWxlbWVudC1pbnZhbGlkLW5hbWVzLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5iYTQ3NDgyZjEzMDMyYWIxYTk0ZjYyMDZhYWIzZWNlNGRlMWQyZWM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQvY3JlYXRl
RWxlbWVudC1pbnZhbGlkLW5hbWVzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIxIEBACitUZXN0
IHZhcmlvdXMgdmFsaWQgbmFtZSBmb3IgZWxlbWVudHMgYWNjb3JkaW5nIHRvIHRoZSBkZWZpbml0
aW9uIG9mIERPTSBMZXZlbCAyLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFT
UyBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCcwYXNjaWknKSB0aHJldyBleGNlcHRpb24gRXJyb3I6
IElOVkFMSURfQ0hBUkFDVEVSX0VSUjogRE9NIEV4Y2VwdGlvbiA1LgorUEFTUyBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCcuQXNjaWknKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IElOVkFMSURfQ0hB
UkFDVEVSX0VSUjogRE9NIEV4Y2VwdGlvbiA1LgorUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCctQXNjaWknKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IElOVkFMSURfQ0hBUkFDVEVSX0VSUjog
RE9NIEV4Y2VwdGlvbiA1LgorUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCcgYXNjaWknKSB0
aHJldyBleGNlcHRpb24gRXJyb3I6IElOVkFMSURfQ0hBUkFDVEVSX0VSUjogRE9NIEV4Y2VwdGlv
biA1LgorUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCcJYXNjaWknKSB0aHJldyBleGNlcHRp
b24gRXJyb3I6IElOVkFMSURfQ0hBUkFDVEVSX0VSUjogRE9NIEV4Y2VwdGlvbiA1LgorUEFTUyBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCfWkXNjLmlpJykgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJ
TlZBTElEX0NIQVJBQ1RFUl9FUlI6IERPTSBFeGNlcHRpb24gNS4KK1BBU1MgZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgn4oOjc2NpaScpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9DSEFS
QUNURVJfRVJSOiBET00gRXhjZXB0aW9uIDUuCitQQVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J+Ckv2FzY2lpJykgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJTlZBTElEX0NIQVJBQ1RFUl9FUlI6
IERPTSBFeGNlcHRpb24gNS4KK1BBU1MgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnyrNhc2NpaScp
IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9DSEFSQUNURVJfRVJSOiBET00gRXhjZXB0
aW9uIDUuCitQQVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2FzYyBpJykgdGhyZXcgZXhjZXB0
aW9uIEVycm9yOiBJTlZBTElEX0NIQVJBQ1RFUl9FUlI6IERPTSBFeGNlcHRpb24gNS4KK1BBU1Mg
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYXNjCWknKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IElO
VkFMSURfQ0hBUkFDVEVSX0VSUjogRE9NIEV4Y2VwdGlvbiA1LgorUEFTUyBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdhc2NpaeKFpicpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9DSEFS
QUNURVJfRVJSOiBET00gRXhjZXB0aW9uIDUuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20v
RG9jdW1lbnQvY3JlYXRlRWxlbWVudC1pbnZhbGlkLW5hbWVzLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9Eb2N1bWVudC9jcmVhdGVFbGVtZW50LWludmFsaWQtbmFtZXMuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4wODc5ZGY3NGE2NmUyNjlkZDlmNDJkMjc0NjU3NmE5OTIzMjY5NzI5Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQvY3JlYXRlRWxlbWVudC1pbnZh
bGlkLW5hbWVzLmh0bWwKQEAgLTAsMCArMSwzMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICIt
Ly9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9
IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3QgdmFyaW91cyB2YWxpZCBu
YW1lIGZvciBlbGVtZW50cyBhY2NvcmRpbmcgdG8gdGhlIGRlZmluaXRpb24gb2YgRE9NIExldmVs
IDIuIikKKwordmFyIG5hbWVMaXN0ID0gWworICAgICAgICAgICAgICAgIC8vIEludmFsaWQgZmly
c3QgQ2hhcgorICAgICAgICAgICAgICAgICcwYXNjaWknLAorICAgICAgICAgICAgICAgICcuQXNj
aWknLAorICAgICAgICAgICAgICAgICctQXNjaWknLAorICAgICAgICAgICAgICAgICcgYXNjaWkn
LAorICAgICAgICAgICAgICAgICcJYXNjaWknLAorICAgICAgICAgICAgICAgICfWkXNjLmlpJywK
KyAgICAgICAgICAgICAgICAn4oOjc2NpaScsCisgICAgICAgICAgICAgICAgJ+Ckv2FzY2lpJywK
KyAgICAgICAgICAgICAgICAnyrNhc2NpaScsCisgICAgICAgICAgICAgICAgLy8gSW52YWxpZCBv
dGhlciBjaGFyCisgICAgICAgICAgICAgICAgJ2FzYyBpJywKKyAgICAgICAgICAgICAgICAnYXNj
CWknLAorICAgICAgICAgICAgICAgICdhc2NpaeKFpicKKyAgICAgICAgICAgICAgICBdOworCitm
b3IgKHZhciBpIGluIG5hbWVMaXN0KQorICAgIHNob3VsZFRocm93KCJkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCciICsgbmFtZUxpc3RbaV0gKyInKSIsICInRXJyb3I6IElOVkFMSURfQ0hBUkFDVEVS
X0VSUjogRE9NIEV4Y2VwdGlvbiA1JyIpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
anMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9Eb2N1bWVudC9jcmVhdGVFbGVtZW50
LXZhbGlkLW5hbWVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0RvY3VtZW50
L2NyZWF0ZUVsZW1lbnQtdmFsaWQtbmFtZXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA0MGY5
MzJiMDkwNTVlZjBmYWNiODg4MWIwNGY3YjZmM2JmZDZjZTIKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9Eb2N1bWVudC9jcmVhdGVFbGVtZW50LXZhbGlkLW5hbWVzLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDM2IEBACitUZXN0IHZhcmlvdXMgdmFsaWQgbmFtZSBmb3Ig
ZWxlbWVudHMgYWNjb3JkaW5nIHRvIHRoZSBkZWZpbml0aW9uIG9mIERPTSBMZXZlbCAyLgorCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdhc2NpaScpIGlzIG5vbi1udWxsLgorUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdBc2Np
aScpIGlzIG5vbi1udWxsLgorUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCfDoHNjaWknKSBp
cyBub24tbnVsbC4KK1BBU1MgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnw4BzY2lpJykgaXMgbm9u
LW51bGwuCitQQVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ8SBc2NpaScpIGlzIG5vbi1udWxs
LgorUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCfEgnNjaWknKSBpcyBub24tbnVsbC4KK1BB
U1MgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnxrtzY2lpJykgaXMgbm9uLW51bGwuCitQQVNTIGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ9eQc2NpaScpIGlzIG5vbi1udWxsLgorUEFTUyBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCfEgXNjaWknKSBpcyBub24tbnVsbC4KK1BBU1MgZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnxIFzY2lpJykgaXMgbm9uLW51bGwuCitQQVNTIGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJzphc2NpaScpIGlzIG5vbi1udWxsLgorUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdfYXNjaWknKSBpcyBub24tbnVsbC4KK1BBU1MgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYcOg
c2NpaScpIGlzIG5vbi1udWxsLgorUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhw4BzY2lp
JykgaXMgbm9uLW51bGwuCitQQVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2HEgXNjaWknKSBp
cyBub24tbnVsbC4KK1BBU1MgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYcSCc2NpaScpIGlzIG5v
bi1udWxsLgorUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhxrtzY2lpJykgaXMgbm9uLW51
bGwuCitQQVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2HXkHNjaWknKSBpcyBub24tbnVsbC4K
K1BBU1MgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYcSBc2NpaScpIGlzIG5vbi1udWxsLgorUEFT
UyBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhxIFzY2lpJykgaXMgbm9uLW51bGwuCitQQVNTIGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Fh1pEnKSBpcyBub24tbnVsbC4KK1BBU1MgZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnYeKDoycpIGlzIG5vbi1udWxsLgorUEFTUyBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdh4KS/JykgaXMgbm9uLW51bGwuCitQQVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J2HKsycpIGlzIG5vbi1udWxsLgorUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhMCcpIGlz
IG5vbi1udWxsLgorUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhLS0taScpIGlzIG5vbi1u
dWxsLgorUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhLi4uaScpIGlzIG5vbi1udWxsLgor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0RvY3VtZW50L2NyZWF0ZUVsZW1lbnQtdmFsaWQt
bmFtZXMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0RvY3VtZW50L2NyZWF0ZUVsZW1lbnQt
dmFsaWQtbmFtZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMDgzM2ViZWViNDExMjc1ZTZmOWRiNjA3ZjRi
NmE3MjI4NWQwMTgxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vRG9j
dW1lbnQvY3JlYXRlRWxlbWVudC12YWxpZC1uYW1lcy5odG1sCkBAIC0wLDAgKzEsNTQgQEAKKzwh
RE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhl
YWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsg
Y2hhcnNldD11dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9u
KCJUZXN0IHZhcmlvdXMgdmFsaWQgbmFtZSBmb3IgZWxlbWVudHMgYWNjb3JkaW5nIHRvIHRoZSBk
ZWZpbml0aW9uIG9mIERPTSBMZXZlbCAyLiIpCisKK3ZhciBuYW1lTGlzdCA9IFsKKyAgICAgICAg
ICAgICAgICAvLyBGaXJzdCBDaGFyIEFTQ0lJIGluIFVuaWNvZGUgY2F0ZWdvcmllcyBMbCwgTHUK
KyAgICAgICAgICAgICAgICAnYXNjaWknLAorICAgICAgICAgICAgICAgICdBc2NpaScsCisgICAg
ICAgICAgICAgICAgLy8gRmlyc3QgQ2hhciBMYXRpbjEgaW4gVW5pY29kZSBjYXRlZ29yaWVzIExs
LCBMdQorICAgICAgICAgICAgICAgICfDoHNjaWknLAorICAgICAgICAgICAgICAgICfDgHNjaWkn
LAorICAgICAgICAgICAgICAgIC8vIEZpcnN0IENoYXIgVW5pY29kZSwgYWJvdmUgTGF0aW4xLCBp
biBjYXRlZ29yaWVzIExsLCBMdSwgTG8sIEx0CisgICAgICAgICAgICAgICAgJ8SBc2NpaScsCisg
ICAgICAgICAgICAgICAgJ8SCc2NpaScsCisgICAgICAgICAgICAgICAgJ8a7c2NpaScsCisgICAg
ICAgICAgICAgICAgJ9eQc2NpaScsCisgICAgICAgICAgICAgICAgJ8SBc2NpaScsCisgICAgICAg
ICAgICAgICAgJ8SBc2NpaScsCisgICAgICAgICAgICAgICAgLy8gRXhjZXB0aW9ucyBmb3IgZmly
c3QgQ2hhcjogJzonIGFuZCAnXycKKyAgICAgICAgICAgICAgICAnOmFzY2lpJywKKyAgICAgICAg
ICAgICAgICAnX2FzY2lpJywKKyAgICAgICAgICAgICAgICAvLyBPdGhlciBDaGFyIExhdGluMSBp
biBVbmljb2RlIGNhdGVnb3JpZXMgTGwsIEx1CisgICAgICAgICAgICAgICAgJ2HDoHNjaWknLAor
ICAgICAgICAgICAgICAgICdhw4BzY2lpJywKKyAgICAgICAgICAgICAgICAvLyBPdGhlciBDaGFy
IFVuaWNvZGUsIGFib3ZlIExhdGluMSwgaW4gY2F0ZWdvcmllcyBMbCwgTHUsIExvLCBMdAorICAg
ICAgICAgICAgICAgICdhxIFzY2lpJywKKyAgICAgICAgICAgICAgICAnYcSCc2NpaScsCisgICAg
ICAgICAgICAgICAgJ2HGu3NjaWknLAorICAgICAgICAgICAgICAgICdh15BzY2lpJywKKyAgICAg
ICAgICAgICAgICAnYcSBc2NpaScsCisgICAgICAgICAgICAgICAgJ2HEgXNjaWknLAorICAgICAg
ICAgICAgICAgIC8vIE90aGVyIENoYXIgVW5pY29kZSBpbiBNYywgTWUsIE1uLCBMbSwgb3IgTmQK
KyAgICAgICAgICAgICAgICAnYWHWkScsCisgICAgICAgICAgICAgICAgJ2Hig6MnLAorICAgICAg
ICAgICAgICAgICdh4KS/JywKKyAgICAgICAgICAgICAgICAnYcqzJywKKyAgICAgICAgICAgICAg
ICAnYTAnLAorICAgICAgICAgICAgICAgIC8vIEV4Y2VwdGlvbnMgZm9yIG90aGVyIENoYXI6ICct
JyBhbmQgJy4nCisgICAgICAgICAgICAgICAgJ2EtLS1pJywKKyAgICAgICAgICAgICAgICAnYS4u
LmknLAorICAgICAgICAgICAgICAgIF07CisKK2ZvciAodmFyIGkgaW4gbmFtZUxpc3QpCisgICAg
c2hvdWxkQmVOb25OdWxsKCJkb2N1bWVudC5jcmVhdGVFbGVtZW50KCciICsgbmFtZUxpc3RbaV0g
KyInKSIpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>