<?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>63330</bug_id>
          
          <creation_ts>2011-06-24 09:52:54 -0700</creation_ts>
          <short_desc>Concatenating string literals and WTF::Strings using operator+ is suboptimal</short_desc>
          <delta_ts>2022-10-28 02:17:27 -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>Web Template Framework</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows XP</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=247121</see_also>
          <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="Adam Roben (:aroben)">aroben</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>darin</cc>
    
    <cc>mjs</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>426933</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-06-24 09:52:54 -0700</bug_when>
    <thetext>The following code:

String color(&quot;brown&quot;);
String workEthic(&quot;lazy&quot;);
String result = L&quot;The quick &quot; + color + L&quot; fox jumped over the &quot; + workEthic + L&quot; dogs&quot;;

...doesn&apos;t behave in an optimal way. The optimal behavior would be for the + expressions to build up a StringAppend object, and only to convert to a String at the very end. What actually happens is:

1. L&quot;The quick &quot; is converted to a String
2. (String(L&quot;The quick &quot;) + color) is evaluated, resulting in a StringAppend object
3. StringAppend::operator String() is called
4. (String(L&quot;The quick brown&quot;) + L&quot; fox jumped over the &quot;) is evaluated, resulting in a StringAppend object
5. StringAppend::operator String() is called

...and so on.

You can see that each concatenation is being converted to a String before the next concatenation occurs. It also shouldn&apos;t be necessary for the first wide string to be converted to a String.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426934</commentid>
    <comment_count>1</comment_count>
      <attachid>98503</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-06-24 09:55:30 -0700</bug_when>
    <thetext>Created attachment 98503
patch for discussion

This patch fixes the above issues. I&apos;m unsure whether this is the right way to fix it, however. Any thoughts?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>427003</commentid>
    <comment_count>2</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-06-24 11:20:51 -0700</bug_when>
    <thetext>(In reply to comment #0)
&gt; The following code:
&gt; 
&gt; String color(&quot;brown&quot;);
&gt; String workEthic(&quot;lazy&quot;);
&gt; String result = L&quot;The quick &quot; + color + L&quot; fox jumped over the &quot; + workEthic + L&quot; dogs&quot;;
&gt; 
&gt; ...doesn&apos;t behave in an optimal way. The optimal behavior would be for the + expressions to build up a StringAppend object, and only to convert to a String at the very end. What actually happens is:
&gt; 
&gt; 1. L&quot;The quick &quot; is converted to a String
Sounds like the right StringTypeAdapter is missing.
Try adding one for your string type in JavaScriptCore/wtf/text/StringConcatenate.h, that will make the String conversion unncessary when invoking operator+.

&gt; 2. (String(L&quot;The quick &quot;) + color) is evaluated, resulting in a StringAppend object
&gt; 3. StringAppend::operator String() is called
&gt; 4. (String(L&quot;The quick brown&quot;) + L&quot; fox jumped over the &quot;) is evaluated, resulting in a StringAppend object
&gt; 5. StringAppend::operator String() is called
&gt; 
&gt; ...and so on.
&gt; 
&gt; You can see that each concatenation is being converted to a String before the next concatenation occurs. It also shouldn&apos;t be necessary for the first wide string to be converted to a String.
That&apos;s stupid... Is this fixed when introducing the right StringTypeAdapter for wchar?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>427057</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-06-24 12:42:47 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (In reply to comment #0)
&gt; &gt; The following code:
&gt; &gt; 
&gt; &gt; String color(&quot;brown&quot;);
&gt; &gt; String workEthic(&quot;lazy&quot;);
&gt; &gt; String result = L&quot;The quick &quot; + color + L&quot; fox jumped over the &quot; + workEthic + L&quot; dogs&quot;;
&gt; &gt; 
&gt; &gt; ...doesn&apos;t behave in an optimal way. The optimal behavior would be for the + expressions to build up a StringAppend object, and only to convert to a String at the very end. What actually happens is:
&gt; &gt; 
&gt; &gt; 1. L&quot;The quick &quot; is converted to a String
&gt; Sounds like the right StringTypeAdapter is missing.
&gt; Try adding one for your string type in JavaScriptCore/wtf/text/StringConcatenate.h, that will make the String conversion unncessary when invoking operator+.

There is already a StringTypeAdapter&lt;const UChar*&gt;. On Windows, UChar == wchar_t. So there&apos;s already the correct StringTypeAdapter for wide strings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>427064</commentid>
    <comment_count>4</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-06-24 13:10:47 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #2)
&gt; &gt; (In reply to comment #0)
&gt; &gt; &gt; The following code:
&gt; &gt; &gt; 
&gt; &gt; &gt; String color(&quot;brown&quot;);
&gt; &gt; &gt; String workEthic(&quot;lazy&quot;);
&gt; &gt; &gt; String result = L&quot;The quick &quot; + color + L&quot; fox jumped over the &quot; + workEthic + L&quot; dogs&quot;;
&gt; &gt; &gt; 
&gt; &gt; &gt; ...doesn&apos;t behave in an optimal way. The optimal behavior would be for the + expressions to build up a StringAppend object, and only to convert to a String at the very end. What actually happens is:
&gt; &gt; &gt; 
&gt; &gt; &gt; 1. L&quot;The quick &quot; is converted to a String
&gt; &gt; Sounds like the right StringTypeAdapter is missing.
&gt; &gt; Try adding one for your string type in JavaScriptCore/wtf/text/StringConcatenate.h, that will make the String conversion unncessary when invoking operator+.
&gt; 
&gt; There is already a StringTypeAdapter&lt;const UChar*&gt;. On Windows, UChar == wchar_t. So there&apos;s already the correct StringTypeAdapter for wide strings.

Oh okay, I overlooked that! but why is it converted to a string
The whole String result should be evaluated to:
String result = StringAppend&lt;const UChar*, StringAppend&lt;String, StringAppend&lt;const UChar*, .... &gt; &gt; &gt;.operator String();

It&apos;s intessting that your patch fixes it, I&apos;d like Darin or Maciej to have a look here!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>427131</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-06-24 14:11:38 -0700</bug_when>
    <thetext>What about non-wide strings on other platforms?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>427918</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-06-27 07:25:50 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; What about non-wide strings on other platforms?

I tried compiling this in a Debug build on Mac OS X 10.6:

String color(&quot;brown&quot;);
String workEthic(&quot;lazy&quot;);
String result = &quot;The quick &quot; + color + &quot; fox jumped over the &quot; + workEthic + &quot; dogs&quot;;

What happens is:

1. (&quot;The quick &quot; + color) is evaluated, resulting in a StringAppend object
2. StringAppend::operator String() is called
3. (String(L&quot;The quick brown&quot;) + &quot; fox jumped over the &quot;) is evaluated, resulting in a StringAppend object
4. StringAppend::operator String() is called

...and so on.

This is also suboptimal. I believe this would also be fixed by my attached patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>427920</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-06-27 07:26:49 -0700</bug_when>
    <thetext>The problem in both of these examples is that the concatenation is happening left-to-right, so the left-hand side of the expression is always a StringAppend object. But our operator+ that takes a StringAppend only takes a StringAppend on the right-hand side.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>427947</commentid>
    <comment_count>8</comment_count>
      <attachid>98503</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-06-27 08:13:39 -0700</bug_when>
    <thetext>Comment on attachment 98503
patch for discussion

This looks good to me. I could have sworn I brought up this issue during the development of the StringAppend template.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>427954</commentid>
    <comment_count>9</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-06-27 08:28:52 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 98503 [details])
&gt; This looks good to me. I could have sworn I brought up this issue during the development of the StringAppend template.

OK, I&apos;ll write up a ChangeLog and submit a real patch!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>427964</commentid>
    <comment_count>10</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-06-27 08:40:22 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; The problem in both of these examples is that the concatenation is happening left-to-right, so the left-hand side of the expression is always a StringAppend object. But our operator+ that takes a StringAppend only takes a StringAppend on the right-hand side.

*grml* I have the feeling we discussed that at some point. _Maybe_ it got lost during the 20+ patches marathon needed to get it building :(
I am very sorry, for the trouble it caused. Thanks for your analysis, it&apos;s clear that your patch is better!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428068</commentid>
    <comment_count>11</comment_count>
      <attachid>98746</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-06-27 10:27:32 -0700</bug_when>
    <thetext>Created attachment 98746
Make concatenating string literals and WTF::Strings more efficient</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428156</commentid>
    <comment_count>12</comment_count>
      <attachid>98746</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-06-27 11:55:38 -0700</bug_when>
    <thetext>Comment on attachment 98746
Make concatenating string literals and WTF::Strings more efficient

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

&gt; Source/JavaScriptCore/wtf/text/StringOperators.h:109
&gt;  template&lt;typename U, typename V, typename W&gt;
&gt; -StringAppend&lt;U, StringAppend&lt;V, W&gt; &gt; operator+(U string1, const StringAppend&lt;V, W&gt;&amp; string2)
&gt; +StringAppend&lt;StringAppend&lt;U, V&gt;, W&gt; operator+(const StringAppend&lt;U, V&gt;&amp; string1, W string2)
&gt;  {
&gt; -    return StringAppend&lt;U, StringAppend&lt;V, W&gt; &gt;(string1, string2);
&gt; +    return StringAppend&lt;StringAppend&lt;U, V&gt;, W&gt;(string1, string2);
&gt;  }

I think the reason this is correct is that the + operator is left-associative. Ideally we should make unit test cases for this that somehow check how many string objects are allocated. I would want to use tests to prove that this does not adversely affect expressions like these:

    a + (b + c)
    (a + b) + (c + d)

with various types of arguments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432395</commentid>
    <comment_count>13</comment_count>
      <attachid>99742</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-07-05 14:06:13 -0700</bug_when>
    <thetext>Created attachment 99742
Ensure no intermediate WTF::Strings are created when concatenating with string literals</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432396</commentid>
    <comment_count>14</comment_count>
      <attachid>99743</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-07-05 14:07:16 -0700</bug_when>
    <thetext>Created attachment 99743
Ensure no intermediate WTF::Strings are created when concatenating with string literals</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432398</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-05 14:09:38 -0700</bug_when>
    <thetext>Attachment 99743 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1

Tools/TestWebKitAPI/Tests/WTF/StringOperators.cpp:43:  Missing space before ( in while(  [whitespace/parens] [5]
Total errors found: 1 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432399</commentid>
    <comment_count>16</comment_count>
      <attachid>99745</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-07-05 14:10:50 -0700</bug_when>
    <thetext>Created attachment 99745
Ensure no intermediate WTF::Strings are created when concatenating with string literals</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434668</commentid>
    <comment_count>17</comment_count>
      <attachid>99745</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-07-10 21:34:24 -0700</bug_when>
    <thetext>Comment on attachment 99745
Ensure no intermediate WTF::Strings are created when concatenating with string literals

Would you like to fix the Windows build failure before I review this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434836</commentid>
    <comment_count>18</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-07-11 06:41:15 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 99745 [details])
&gt; Would you like to fix the Windows build failure before I review this?

Strange, I didn&apos;t notice it didn&apos;t build on Windows (filed bug 64276). I must have uploaded the wrong version of the patch. (It can get confusing when moving patches between computers!) The only changes required should be some new entries in the WebKit2.def file, so you can review this as-is if you want. But I&apos;ll try to upload a new version later today.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435500</commentid>
    <comment_count>19</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-07-12 00:15:23 -0700</bug_when>
    <thetext>Great job Adam, especially on the tests!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435612</commentid>
    <comment_count>20</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-07-12 06:36:19 -0700</bug_when>
    <thetext>Committed r90813: &lt;http://trac.webkit.org/changeset/90813&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>98503</attachid>
            <date>2011-06-24 09:55:30 -0700</date>
            <delta_ts>2011-06-27 10:27:27 -0700</delta_ts>
            <desc>patch for discussion</desc>
            <filename>stringoperators.patch</filename>
            <type>text/plain</type>
            <size>1183</size>
            <attacher name="Adam Roben (:aroben)">aroben</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdPcGVyYXRv
cnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdPcGVyYXRvcnMuaApp
bmRleCBlOGMyMTgxLi5kNzg4ZmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d3RmL3RleHQvU3RyaW5nT3BlcmF0b3JzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi90ZXh0L1N0cmluZ09wZXJhdG9ycy5oCkBAIC05MSw2ICs5MSwxMSBAQCBpbmxpbmUgU3RyaW5n
QXBwZW5kPGNvbnN0IGNoYXIqLCBBdG9taWNTdHJpbmc+IG9wZXJhdG9yKyhjb25zdCBjaGFyKiBz
dHJpbmcxLCBjbwogICAgIHJldHVybiBTdHJpbmdBcHBlbmQ8Y29uc3QgY2hhciosIEF0b21pY1N0
cmluZz4oc3RyaW5nMSwgc3RyaW5nMik7CiB9CiAKK2lubGluZSBTdHJpbmdBcHBlbmQ8Y29uc3Qg
VUNoYXIqLCBTdHJpbmc+IG9wZXJhdG9yKyhjb25zdCBVQ2hhciogc3RyaW5nMSwgY29uc3QgU3Ry
aW5nJiBzdHJpbmcyKQoreworICAgIHJldHVybiBTdHJpbmdBcHBlbmQ8Y29uc3QgVUNoYXIqLCBT
dHJpbmc+KHN0cmluZzEsIHN0cmluZzIpOworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogU3Ry
aW5nQXBwZW5kPFN0cmluZywgVD4gb3BlcmF0b3IrKGNvbnN0IFN0cmluZyYgc3RyaW5nMSwgVCBz
dHJpbmcyKQogewpAQCAtOTgsOSArMTAzLDkgQEAgU3RyaW5nQXBwZW5kPFN0cmluZywgVD4gb3Bl
cmF0b3IrKGNvbnN0IFN0cmluZyYgc3RyaW5nMSwgVCBzdHJpbmcyKQogfQogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXPgotU3RyaW5nQXBwZW5kPFUsIFN0cmlu
Z0FwcGVuZDxWLCBXPiA+IG9wZXJhdG9yKyhVIHN0cmluZzEsIGNvbnN0IFN0cmluZ0FwcGVuZDxW
LCBXPiYgc3RyaW5nMikKK1N0cmluZ0FwcGVuZDxTdHJpbmdBcHBlbmQ8VSwgVj4sIFc+IG9wZXJh
dG9yKyhjb25zdCBTdHJpbmdBcHBlbmQ8VSwgVj4mIHN0cmluZzEsIFcgc3RyaW5nMikKIHsKLSAg
ICByZXR1cm4gU3RyaW5nQXBwZW5kPFUsIFN0cmluZ0FwcGVuZDxWLCBXPiA+KHN0cmluZzEsIHN0
cmluZzIpOworICAgIHJldHVybiBTdHJpbmdBcHBlbmQ8U3RyaW5nQXBwZW5kPFUsIFY+LCBXPihz
dHJpbmcxLCBzdHJpbmcyKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV1RGCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>98746</attachid>
            <date>2011-06-27 10:27:32 -0700</date>
            <delta_ts>2011-07-05 14:06:09 -0700</delta_ts>
            <desc>Make concatenating string literals and WTF::Strings more efficient</desc>
            <filename>bug-63330-20110627132729.patch</filename>
            <type>text/plain</type>
            <size>2586</size>
            <attacher name="Adam Roben (:aroben)">aroben</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODk4MTUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGQy
M2Y0MWY3MDFjOGM2MDNhZGMxNGZlYzIxNzVlMGNmYTU5OTRjNjYuLmI1NDMwNTRiOWY4MmU3NTE3
NGFiODcwZjE5MGIxYWI0ODNhNTZlOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDIyIEBACisyMDExLTA2LTI3ICBBZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxlLmNvbT4KKwor
ICAgICAgICBNYWtlIGNvbmNhdGVuYXRpbmcgc3RyaW5nIGxpdGVyYWxzIGFuZCBXVEY6OlN0cmlu
Z3MgbW9yZSBlZmZpY2llbnQKKworICAgICAgICBJdCdzIG5vdyBwb3NzaWJsZSB0byBjb25jYXRl
bmF0ZSBlZmZpY2llbnRseSBib3RoIHdpZGUgYW5kIG5vbi13aWRlIHN0cmluZyBsaXRlcmFscyB3
aXRoCisgICAgICAgIFdURjo6U3RyaW5ncyB1c2luZyBvcGVyYXRvcisuIE9ubHkgYSBzaW5nbGUg
Y2FsbCB0byB0cnlNYWtlU3RyaW5nIG9jY3VycyBpbiBlYWNoIGNhc2UuCisKKyAgICAgICAgRml4
ZXMgPGh0dHA6Ly93ZWJraXQub3JnL2IvNjMzMzA+IENvbmNhdGVuYXRpbmcgc3RyaW5nIGxpdGVy
YWxzIGFuZCBXVEY6OlN0cmluZ3MgdXNpbmcKKyAgICAgICAgb3BlcmF0b3IrIGlzIHN1Ym9wdGlt
YWwKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0
Zi90ZXh0L1N0cmluZ09wZXJhdG9ycy5oOgorICAgICAgICAoV1RGOjpvcGVyYXRvcispOiBBZGRl
ZCBhbiBvdmVybG9hZCB0aGF0IHRha2VzIGEgY29uc3QgVUNoYXIqIHNvIHRoYXQgd2lkZSBzdHJp
bmcgbGl0ZXJhbHMKKyAgICAgICAgd29uJ3QgZmlyc3QgYmUgY29udmVydGVkIHRvIFdURjo6U3Ry
aW5ncyBiZWZvcmUgY29uY2F0ZW5hdGlvbi4gUmV2ZXJzZWQgdGhlIG9yZGVyIG9mCisgICAgICAg
IGFyZ3VtZW50cyB0byB0aGUgb3ZlcmxvYWQgdGhhdCB0YWtlcyBhIFN0cmluZ0FwcGVuZDsgYnkg
aGF2aW5nIHRoZSBTdHJpbmdBcHBlbmQgb24gdGhlCisgICAgICAgIGxlZnQtaGFuZCBzaWRlIG9m
IHRoZSBleHByZXNzaW9uLCBjaGFpbmVkIG9wZXJhdG9yKyBjYWxscyBjYW4gb2NjdXIgd2l0aG91
dCBhbnkgaW50ZXJtZWRpYXRlCisgICAgICAgIFN0cmluZ3MgYmVpbmcgY3JlYXRlZC4KKwogMjAx
MS0wNi0yNiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IEdhdmluIEJhcnJhY2xvdWdoLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3d0Zi90ZXh0L1N0cmluZ09wZXJhdG9ycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi90ZXh0L1N0cmluZ09wZXJhdG9ycy5oCmluZGV4IGU4YzIxODE0N2I0YTFkYzVmMzM3MmM5NzQ4
Y2IyMmNmZTU0YTZhY2EuLmQ3ODhmYTViZTRhNDcyMGI3MDgzOWZlNGZjZmEzNzlkZWU2OGRjYTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdPcGVyYXRv
cnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nT3BlcmF0b3Jz
LmgKQEAgLTkxLDYgKzkxLDExIEBAIGlubGluZSBTdHJpbmdBcHBlbmQ8Y29uc3QgY2hhciosIEF0
b21pY1N0cmluZz4gb3BlcmF0b3IrKGNvbnN0IGNoYXIqIHN0cmluZzEsIGNvCiAgICAgcmV0dXJu
IFN0cmluZ0FwcGVuZDxjb25zdCBjaGFyKiwgQXRvbWljU3RyaW5nPihzdHJpbmcxLCBzdHJpbmcy
KTsKIH0KIAoraW5saW5lIFN0cmluZ0FwcGVuZDxjb25zdCBVQ2hhciosIFN0cmluZz4gb3BlcmF0
b3IrKGNvbnN0IFVDaGFyKiBzdHJpbmcxLCBjb25zdCBTdHJpbmcmIHN0cmluZzIpCit7CisgICAg
cmV0dXJuIFN0cmluZ0FwcGVuZDxjb25zdCBVQ2hhciosIFN0cmluZz4oc3RyaW5nMSwgc3RyaW5n
Mik7Cit9CisKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBTdHJpbmdBcHBlbmQ8U3RyaW5nLCBUPiBv
cGVyYXRvcisoY29uc3QgU3RyaW5nJiBzdHJpbmcxLCBUIHN0cmluZzIpCiB7CkBAIC05OCw5ICsx
MDMsOSBAQCBTdHJpbmdBcHBlbmQ8U3RyaW5nLCBUPiBvcGVyYXRvcisoY29uc3QgU3RyaW5nJiBz
dHJpbmcxLCBUIHN0cmluZzIpCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYs
IHR5cGVuYW1lIFc+Ci1TdHJpbmdBcHBlbmQ8VSwgU3RyaW5nQXBwZW5kPFYsIFc+ID4gb3BlcmF0
b3IrKFUgc3RyaW5nMSwgY29uc3QgU3RyaW5nQXBwZW5kPFYsIFc+JiBzdHJpbmcyKQorU3RyaW5n
QXBwZW5kPFN0cmluZ0FwcGVuZDxVLCBWPiwgVz4gb3BlcmF0b3IrKGNvbnN0IFN0cmluZ0FwcGVu
ZDxVLCBWPiYgc3RyaW5nMSwgVyBzdHJpbmcyKQogewotICAgIHJldHVybiBTdHJpbmdBcHBlbmQ8
VSwgU3RyaW5nQXBwZW5kPFYsIFc+ID4oc3RyaW5nMSwgc3RyaW5nMik7CisgICAgcmV0dXJuIFN0
cmluZ0FwcGVuZDxTdHJpbmdBcHBlbmQ8VSwgVj4sIFc+KHN0cmluZzEsIHN0cmluZzIpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXVEYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>99742</attachid>
            <date>2011-07-05 14:06:13 -0700</date>
            <delta_ts>2011-07-05 14:07:11 -0700</delta_ts>
            <desc>Ensure no intermediate WTF::Strings are created when concatenating with string literals</desc>
            <filename>bug-63330-20110705170611.patch</filename>
            <type>text/plain</type>
            <size>9477</size>
            <attacher name="Adam Roben (:aroben)">aroben</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTAzOTQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDUy
NmNhZjAwYmJkMWE0YzljNzgxNzBmZTM5YTNhZmYwNDcwMTRiMTIuLjhiODc2NjA5ZGQxYmIyNmEz
ZTRiZDY2YWMwYjExMDQ5MTkwYjUwMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDI1IEBACisyMDExLTA3LTA1ICBBZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxlLmNvbT4KKwor
ICAgICAgICBFbnN1cmUgbm8gaW50ZXJtZWRpYXRlIFdURjo6U3RyaW5ncyBhcmUgY3JlYXRlZCB3
aGVuIGNvbmNhdGVuYXRpbmcgd2l0aCBzdHJpbmcgbGl0ZXJhbHMKKworICAgICAgICBGaXhlcyA8
aHR0cDovL3dlYmtpdC5vcmcvYi82MzMzMD4gQ29uY2F0ZW5hdGluZyBzdHJpbmcgbGl0ZXJhbHMg
YW5kIFdURjo6U3RyaW5ncyB1c2luZworICAgICAgICBvcGVyYXRvcisgaXMgc3Vib3B0aW1hbAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL3Rl
eHQvU3RyaW5nQ29uY2F0ZW5hdGUuaDoKKyAgICAgICAgKFdURjo6U3RyaW5nVHlwZUFkYXB0ZXI8
U3RyaW5nPjo6d3JpdGVUbyk6IEFkZGVkIGEgbWFjcm8gdGhhdCBjYW4gYmUgdXNlZCBmb3IgdGVz
dGluZyBob3cKKyAgICAgICAgbWFueSBXVEY6OlN0cmluZ3MgZ2V0IGNvcGllZCB3aGlsZSBldmFs
dWF0aW5nIGFuIG9wZXJhdG9yKyBleHByZXNzaW9uLgorCisgICAgICAgICogd3RmL3RleHQvU3Ry
aW5nT3BlcmF0b3JzLmg6CisgICAgICAgIChXVEY6Om9wZXJhdG9yKyk6IENoYW5nZWQgdGhlIG92
ZXJsb2FkIHRoYXQgdGFrZXMgYSBTdHJpbmdBcHBlbmQgdG8gdGFrZSBpdCBvbiB0aGUgbGVmdC1o
YW5kCisgICAgICAgIHNpZGUsIHNpbmNlIG9wZXJhdG9yKyBpcyBsZWZ0LWFzc29jaWF0aXZlLiBI
YXZpbmcgdGhlIFN0cmluZ0FwcGVuZCBvbiB0aGUgcmlnaHQtaGFuZCBzaWRlCisgICAgICAgIHdh
cyBjYXVzaW5nIHVzIHRvIG1ha2UgaW50ZXJtZWRpYXRlIFdURjo6U3RyaW5ncyB3aGVuIGV2YWx1
YXRpbmcgZXhwcmVzc2lvbnMgdGhhdCBjb250YWluZWQKKyAgICAgICAgbXVsdGlwbGUgY2FsbHMg
dG8gb3BlcmF0b3IrLiBBZGRlZCBzb21lIG1vcmUgb3ZlcmxvYWRzIGZvciB0aGF0IHRha2UgYSBs
ZWZ0LWhhbmQgc2lkZSBvZgorICAgICAgICBjb25zdCBjaGFyKiB0byByZXNvbHZlIG92ZXJsb2Fk
IGFtYmlndWl0eSBmb3IgY2VydGFpbiBleHByZXNzaW9ucy4gQWRkZWQgb3ZlcmxvYWRzIHRoYXQg
dGFrZQorICAgICAgICBhIGxlZnQtaGFuZCBzaWRlIG9mIGNvbnN0IFVDaGFyKiAobWF0Y2hpbmcg
dGhlIGNvbnN0IGNoYXIqIG92ZXJsb2Fkcykgc28gdGhhdCB3aWRlIHN0cmluZworICAgICAgICBs
aXRlcmFscyBkb24ndCBmaXJzdCBoYXZlIHRvIGJlIGNvbnZlcnRlZCB0byBhIFdURjo6U3RyaW5n
IGluIG9wZXJhdG9yKyBleHByZXNzaW9ucy4KKwogMjAxMS0wNy0wNCAgR2F2aW4gQmFycmFjbG91
Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdl
aW5pZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdD
b25jYXRlbmF0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0NvbmNh
dGVuYXRlLmgKaW5kZXggZThjNjMzMTE4ODFmZjZhZjk4NWFjMjJiZTUyMmI3NzI4MjkzNGVkNC4u
ZDNmMjM3NjQ0ODFjYjUyOTEwMTA4NGFhNzNlYmM4OTBhYTM0NDFjNiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmgKQEAgLTMwLDYg
KzMwLDEyIEBACiAjaW5jbHVkZSAiQXRvbWljU3RyaW5nLmgiCiAjZW5kaWYKIAorLy8gVGhpcyBt
YWNybyBpcyBoZWxwZnVsIGZvciB0ZXN0aW5nIGhvdyBtYW55IGludGVybWVkaWF0ZSBTdHJpbmdz
IGFyZSBjcmVhdGVkIHdoaWxlIGV2YWx1YXRpbmcgYW4KKy8vIGV4cHJlc3Npb24gY29udGFpbmlu
ZyBvcGVyYXRvcisuCisjaWZuZGVmIFdURl9TVFJJTkdUWVBFQURBUFRFUl9DT1BJRURfV1RGX1NU
UklORworI2RlZmluZSBXVEZfU1RSSU5HVFlQRUFEQVBURVJfQ09QSUVEX1dURl9TVFJJTkcoKSAo
KHZvaWQpMCkKKyNlbmRpZgorCiBuYW1lc3BhY2UgV1RGIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUg
U3RyaW5nVHlwZT4KQEAgLTE4MCw2ICsxODYsOCBAQCBwdWJsaWM6CiAgICAgICAgIHVuc2lnbmVk
IGxlbmd0aCA9IG1fYnVmZmVyLmxlbmd0aCgpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbGVuZ3RoOyArK2kpCiAgICAgICAgICAgICBkZXN0aW5hdGlvbltpXSA9IGRhdGFbaV07
CisKKyAgICAgICAgV1RGX1NUUklOR1RZUEVBREFQVEVSX0NPUElFRF9XVEZfU1RSSU5HKCk7CiAg
ICAgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90
ZXh0L1N0cmluZ09wZXJhdG9ycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0
cmluZ09wZXJhdG9ycy5oCmluZGV4IGU4YzIxODE0N2I0YTFkYzVmMzM3MmM5NzQ4Y2IyMmNmZTU0
YTZhY2EuLmNmN2FhNDJkZmQ4MjYwOGMzODcwY2U3OGQ1OTUzMGE1YjBiOTkyZGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdPcGVyYXRvcnMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nT3BlcmF0b3JzLmgKQEAgLTkx
LDYgKzkxLDI4IEBAIGlubGluZSBTdHJpbmdBcHBlbmQ8Y29uc3QgY2hhciosIEF0b21pY1N0cmlu
Zz4gb3BlcmF0b3IrKGNvbnN0IGNoYXIqIHN0cmluZzEsIGNvCiAgICAgcmV0dXJuIFN0cmluZ0Fw
cGVuZDxjb25zdCBjaGFyKiwgQXRvbWljU3RyaW5nPihzdHJpbmcxLCBzdHJpbmcyKTsKIH0KIAor
dGVtcGxhdGU8dHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4KK1N0cmluZ0FwcGVuZDxjb25zdCBjaGFy
KiwgU3RyaW5nQXBwZW5kPFUsIFY+ID4gb3BlcmF0b3IrKGNvbnN0IGNoYXIqIHN0cmluZzEsIGNv
bnN0IFN0cmluZ0FwcGVuZDxVLCBWPiYgc3RyaW5nMikKK3sKKyAgICByZXR1cm4gU3RyaW5nQXBw
ZW5kPGNvbnN0IGNoYXIqLCBTdHJpbmdBcHBlbmQ8VSwgVj4gPihzdHJpbmcxLCBzdHJpbmcyKTsK
K30KKworaW5saW5lIFN0cmluZ0FwcGVuZDxjb25zdCBVQ2hhciosIFN0cmluZz4gb3BlcmF0b3Ir
KGNvbnN0IFVDaGFyKiBzdHJpbmcxLCBjb25zdCBTdHJpbmcmIHN0cmluZzIpCit7CisgICAgcmV0
dXJuIFN0cmluZ0FwcGVuZDxjb25zdCBVQ2hhciosIFN0cmluZz4oc3RyaW5nMSwgc3RyaW5nMik7
Cit9CisKK2lubGluZSBTdHJpbmdBcHBlbmQ8Y29uc3QgVUNoYXIqLCBBdG9taWNTdHJpbmc+IG9w
ZXJhdG9yKyhjb25zdCBVQ2hhciogc3RyaW5nMSwgY29uc3QgQXRvbWljU3RyaW5nJiBzdHJpbmcy
KQoreworICAgIHJldHVybiBTdHJpbmdBcHBlbmQ8Y29uc3QgVUNoYXIqLCBBdG9taWNTdHJpbmc+
KHN0cmluZzEsIHN0cmluZzIpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBVLCB0eXBlbmFtZSBW
PgorU3RyaW5nQXBwZW5kPGNvbnN0IFVDaGFyKiwgU3RyaW5nQXBwZW5kPFUsIFY+ID4gb3BlcmF0
b3IrKGNvbnN0IFVDaGFyKiBzdHJpbmcxLCBjb25zdCBTdHJpbmdBcHBlbmQ8VSwgVj4mIHN0cmlu
ZzIpCit7CisgICAgcmV0dXJuIFN0cmluZ0FwcGVuZDxjb25zdCBVQ2hhciosIFN0cmluZ0FwcGVu
ZDxVLCBWPiA+KHN0cmluZzEsIHN0cmluZzIpOworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgog
U3RyaW5nQXBwZW5kPFN0cmluZywgVD4gb3BlcmF0b3IrKGNvbnN0IFN0cmluZyYgc3RyaW5nMSwg
VCBzdHJpbmcyKQogewpAQCAtOTgsOSArMTIwLDkgQEAgU3RyaW5nQXBwZW5kPFN0cmluZywgVD4g
b3BlcmF0b3IrKGNvbnN0IFN0cmluZyYgc3RyaW5nMSwgVCBzdHJpbmcyKQogfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXPgotU3RyaW5nQXBwZW5kPFUsIFN0
cmluZ0FwcGVuZDxWLCBXPiA+IG9wZXJhdG9yKyhVIHN0cmluZzEsIGNvbnN0IFN0cmluZ0FwcGVu
ZDxWLCBXPiYgc3RyaW5nMikKK1N0cmluZ0FwcGVuZDxTdHJpbmdBcHBlbmQ8VSwgVj4sIFc+IG9w
ZXJhdG9yKyhjb25zdCBTdHJpbmdBcHBlbmQ8VSwgVj4mIHN0cmluZzEsIFcgc3RyaW5nMikKIHsK
LSAgICByZXR1cm4gU3RyaW5nQXBwZW5kPFUsIFN0cmluZ0FwcGVuZDxWLCBXPiA+KHN0cmluZzEs
IHN0cmluZzIpOworICAgIHJldHVybiBTdHJpbmdBcHBlbmQ8U3RyaW5nQXBwZW5kPFUsIFY+LCBX
PihzdHJpbmcxLCBzdHJpbmcyKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZWJjOGZjODhhZGM2Mzc1
NmVlODVjY2Q5NDBlNzc0NmZkNDIxNzVjMi4uYWY2ZDhkMDVlNDcxNTI5OWNlOThmNzIxNDE1MmFl
YjQ1NjRjNTU2MyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDExLTA3LTA1ICBBZGFtIFJvYmVuICA8YXJvYmVuQGFw
cGxlLmNvbT4KKworICAgICAgICBUZXN0IHRoYXQgbm8gaW50ZXJtZWRpYXRlIFdURjo6U3RyaW5n
cyBhcmUgY3JlYXRlZCB3aGVuIGNvbmNhdGVuYXRpbmcgd2l0aCBzdHJpbmcgbGl0ZXJhbHMKKwor
ICAgICAgICBUZXN0IGZvciA8aHR0cDovL3dlYmtpdC5vcmcvYi82MzMzMD4gQ29uY2F0ZW5hdGlu
ZyBzdHJpbmcgbGl0ZXJhbHMgYW5kIFdURjo6U3RyaW5ncyB1c2luZworICAgICAgICBvcGVyYXRv
cisgaXMgc3Vib3B0aW1hbAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nT3BlcmF0b3JzLmNwcDog
QWRkZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKTogVGVzdCB0aGF0IGEgYnVuY2gg
b2YgZGlmZmVyZW50IHN0cmluZyBjb25jYXRlbmF0aW9uIGV4cHJlc3Npb25zIGRvbid0CisgICAg
ICAgIGNyZWF0ZSBhbnkgaW50ZXJtZWRpYXRlIFdURjo6U3RyaW5ncyB3aGlsZSB0aGV5J3JlIGJl
aW5nIGV2YWx1YXRlZC4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvd2luL1Rl
c3RXZWJLaXRBUEkudmNwcm9qOgorICAgICAgICBBZGRlZCBuZXcgZmlsZS4KKwogMjAxMS0wNy0w
NCAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZDYxMmJh
ZWExZjEyMTYzYzFkMDVmNTVhZWJlNDVjNjMzMmY1ZDI0Zi4uZDFiYzg3ZmYyZjcxZjIwYTJjOWYw
NGM1NWM2ZmI2MDEyOWVhMmJhMiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTUzLDYgKzUz
LDcgQEAKIAkJQkNCRDM3MzcxMjVBQkJFQjAwRDJDMjlGIC8qIGljb24ucG5nIGluIENvcHkgUmVz
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQkQzNzJFMTI1QUJC
RTYwMEQyQzI5RiAvKiBpY29uLnBuZyAqLzsgfTsKIAkJQkNCRDM3NjExMjVBQkNGRTAwRDJDMjlG
IC8qIEZyYW1lTUlNRVR5cGVQTkcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQkNCRDM3NjAxMjVBQkNGRTAwRDJDMjlGIC8qIEZyYW1lTUlNRVR5cGVQ
TkcuY3BwICovOyB9OwogCQlCQ0M4Qjk1QjEyNjExRjQ3MDBERTQ2QTQgLyogRmFpbGVkTG9hZC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0M4Qjk1
QTEyNjExRjQ3MDBERTQ2QTQgLyogRmFpbGVkTG9hZC5jcHAgKi87IH07CisJCUMwMTM2M0M4MTND
Mzk5NzMwMEVGMzk2NCAvKiBTdHJpbmdPcGVyYXRvcnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzAxMzYzQzcxM0MzOTk3MzAwRUYzOTY0IC8qIFN0
cmluZ09wZXJhdG9ycy5jcHAgKi87IH07CiAJCUMwMUEyM0YyMTI2NjE1NjcwMEM5RUQ1NSAvKiBz
cGFjZWJhci1zY3JvbGxpbmcuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDMDJCNzg4MjEyNjYxNTQxMDAyNkJGMEYgLyogc3BhY2ViYXIt
c2Nyb2xsaW5nLmh0bWwgKi87IH07CiAJCUMwMkI3N0YyMTI2NjEyMTQwMDI2QkYwRiAvKiBTcGFj
ZWJhclNjcm9sbGluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDMDJCNzdGMTEyNjYxMjE0MDAyNkJGMEYgLyogU3BhY2ViYXJTY3JvbGxpbmcuY3Bw
ICovOyB9OwogCQlDMDJCNzg1NDEyNjYxM0FFMDAyNkJGMEYgLyogQ2FyYm9uLmZyYW1ld29yayBp
biBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMwMkI3ODUz
MTI2NjEzQUUwMDI2QkYwRiAvKiBDYXJib24uZnJhbWV3b3JrICovOyB9OwpAQCAtMTYzLDYgKzE2
NCw3IEBACiAJCUJDQkQzNzYwMTI1QUJDRkUwMEQyQzI5RiAvKiBGcmFtZU1JTUVUeXBlUE5HLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZyYW1lTUlNRVR5cGVQTkcu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0M4Qjk1QTEyNjExRjQ3MDBERTQ2
QTQgLyogRmFpbGVkTG9hZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBGYWlsZWRMb2FkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNGMEY5Mzkx
MzgxQzI1QjAwODM2MUFDIC8qIENvbXBpbGVyVmVyc2lvbi54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQueGNjb25maWc7IHBhdGggPSBDb21waWxlclZlcnNpb24ueGNjb25maWc7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUMwMTM2M0M3MTNDMzk5NzMwMEVGMzk2NCAvKiBTdHJpbmdPcGVy
YXRvcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU3RyaW5nT3Bl
cmF0b3JzLmNwcDsgcGF0aCA9IFdURi9TdHJpbmdPcGVyYXRvcnMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDMDJCNzdGMTEyNjYxMjE0MDAyNkJGMEYgLyogU3BhY2ViYXJTY3Jv
bGxpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3BhY2ViYXJT
Y3JvbGxpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMDJCNzg1MzEyNjYx
M0FFMDAyNkJGMEYgLyogQ2FyYm9uLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBleHBsaWNpdEZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBDYXJib24u
ZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gU0RLUk9PVDsgfTsKIAkJQzAyQjc4ODIxMjY2MTU0MTAw
MjZCRjBGIC8qIHNwYWNlYmFyLXNjcm9sbGluZy5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBw
YXRoID0gInNwYWNlYmFyLXNjcm9sbGluZy5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTMxOSw2ICszMjEsNyBAQAogCQlCQzkwOTY0NjEyNTU2MTg5MDAwODM3NTYgLyogV1RG
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlDMDEzNjND
NzEzQzM5OTczMDBFRjM5NjQgLyogU3RyaW5nT3BlcmF0b3JzLmNwcCAqLywKIAkJCQlCQzkwOTY0
QjEyNTU2MUJGMDAwODM3NTYgLyogVmVjdG9yQmFzaWMuY3BwICovLAogCQkJCTM3MjAwQjkxMTNB
MTYyMzAwMDdBNEZBRCAvKiBWZWN0b3JSZXZlcnNlLmNwcCAqLywKIAkJCSk7CkBAIC00NzEsNiAr
NDc0LDcgQEAKIAkJCQkzM0JFNUFGNTEzN0I1QTZDMDA3MDU4MTMgLyogTW91c2VNb3ZlQWZ0ZXJD
cmFzaC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMDQ1Rjk0NTEzODVDMkVBMDBDMEYzQ0QgLyog
RG93bmxvYWREZWNpZGVEZXN0aW5hdGlvbkNyYXNoLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTM3
MjAwQjkyMTNBMTYyMzAwMDdBNEZBRCAvKiBWZWN0b3JSZXZlcnNlLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCUMwMTM2M0M4MTNDMzk5NzMwMEVGMzk2NCAvKiBTdHJpbmdPcGVyYXRvcnMuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL3dpbi9UZXN0V2Vi
S2l0QVBJLnZjcHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvd2luL1Rlc3RXZWJLaXRBUEkudmNw
cm9qCmluZGV4IDIwODliNTk1YTFmNGE0YmEzNGM2YmFhZDI4ODAxYjA4YWYyYjg5YTcuLjBhMjg4
YjAwZTJjMjIyMjAwNWViYzE4OGM0YTBhMjg1NTY3MGNiZjEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvd2luL1Rlc3RXZWJLaXRBUEkudmNwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvd2luL1Rlc3RXZWJLaXRBUEkudmNwcm9qCkBAIC01ODgsNiArNTg4LDEwIEBACiAJCQkJ
TmFtZT0iV1RGIgogCQkJCT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFRlc3Rz
XFdURlxTdHJpbmdPcGVyYXRvcnMuY3BwIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxl
CiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5cVGVzdHNcV1RGXFZlY3RvckJhc2ljLmNwcCIKIAkJCQkJ
PgogCQkJCTwvRmlsZT4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>99743</attachid>
            <date>2011-07-05 14:07:16 -0700</date>
            <delta_ts>2011-07-05 14:10:45 -0700</delta_ts>
            <desc>Ensure no intermediate WTF::Strings are created when concatenating with string literals</desc>
            <filename>bug-63330-20110705170714.patch</filename>
            <type>text/plain</type>
            <size>16975</size>
            <attacher name="Adam Roben (:aroben)">aroben</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTAzOTQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDUy
NmNhZjAwYmJkMWE0YzljNzgxNzBmZTM5YTNhZmYwNDcwMTRiMTIuLjhiODc2NjA5ZGQxYmIyNmEz
ZTRiZDY2YWMwYjExMDQ5MTkwYjUwMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDI1IEBACisyMDExLTA3LTA1ICBBZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxlLmNvbT4KKwor
ICAgICAgICBFbnN1cmUgbm8gaW50ZXJtZWRpYXRlIFdURjo6U3RyaW5ncyBhcmUgY3JlYXRlZCB3
aGVuIGNvbmNhdGVuYXRpbmcgd2l0aCBzdHJpbmcgbGl0ZXJhbHMKKworICAgICAgICBGaXhlcyA8
aHR0cDovL3dlYmtpdC5vcmcvYi82MzMzMD4gQ29uY2F0ZW5hdGluZyBzdHJpbmcgbGl0ZXJhbHMg
YW5kIFdURjo6U3RyaW5ncyB1c2luZworICAgICAgICBvcGVyYXRvcisgaXMgc3Vib3B0aW1hbAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL3Rl
eHQvU3RyaW5nQ29uY2F0ZW5hdGUuaDoKKyAgICAgICAgKFdURjo6U3RyaW5nVHlwZUFkYXB0ZXI8
U3RyaW5nPjo6d3JpdGVUbyk6IEFkZGVkIGEgbWFjcm8gdGhhdCBjYW4gYmUgdXNlZCBmb3IgdGVz
dGluZyBob3cKKyAgICAgICAgbWFueSBXVEY6OlN0cmluZ3MgZ2V0IGNvcGllZCB3aGlsZSBldmFs
dWF0aW5nIGFuIG9wZXJhdG9yKyBleHByZXNzaW9uLgorCisgICAgICAgICogd3RmL3RleHQvU3Ry
aW5nT3BlcmF0b3JzLmg6CisgICAgICAgIChXVEY6Om9wZXJhdG9yKyk6IENoYW5nZWQgdGhlIG92
ZXJsb2FkIHRoYXQgdGFrZXMgYSBTdHJpbmdBcHBlbmQgdG8gdGFrZSBpdCBvbiB0aGUgbGVmdC1o
YW5kCisgICAgICAgIHNpZGUsIHNpbmNlIG9wZXJhdG9yKyBpcyBsZWZ0LWFzc29jaWF0aXZlLiBI
YXZpbmcgdGhlIFN0cmluZ0FwcGVuZCBvbiB0aGUgcmlnaHQtaGFuZCBzaWRlCisgICAgICAgIHdh
cyBjYXVzaW5nIHVzIHRvIG1ha2UgaW50ZXJtZWRpYXRlIFdURjo6U3RyaW5ncyB3aGVuIGV2YWx1
YXRpbmcgZXhwcmVzc2lvbnMgdGhhdCBjb250YWluZWQKKyAgICAgICAgbXVsdGlwbGUgY2FsbHMg
dG8gb3BlcmF0b3IrLiBBZGRlZCBzb21lIG1vcmUgb3ZlcmxvYWRzIGZvciB0aGF0IHRha2UgYSBs
ZWZ0LWhhbmQgc2lkZSBvZgorICAgICAgICBjb25zdCBjaGFyKiB0byByZXNvbHZlIG92ZXJsb2Fk
IGFtYmlndWl0eSBmb3IgY2VydGFpbiBleHByZXNzaW9ucy4gQWRkZWQgb3ZlcmxvYWRzIHRoYXQg
dGFrZQorICAgICAgICBhIGxlZnQtaGFuZCBzaWRlIG9mIGNvbnN0IFVDaGFyKiAobWF0Y2hpbmcg
dGhlIGNvbnN0IGNoYXIqIG92ZXJsb2Fkcykgc28gdGhhdCB3aWRlIHN0cmluZworICAgICAgICBs
aXRlcmFscyBkb24ndCBmaXJzdCBoYXZlIHRvIGJlIGNvbnZlcnRlZCB0byBhIFdURjo6U3RyaW5n
IGluIG9wZXJhdG9yKyBleHByZXNzaW9ucy4KKwogMjAxMS0wNy0wNCAgR2F2aW4gQmFycmFjbG91
Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdl
aW5pZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdD
b25jYXRlbmF0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0NvbmNh
dGVuYXRlLmgKaW5kZXggZThjNjMzMTE4ODFmZjZhZjk4NWFjMjJiZTUyMmI3NzI4MjkzNGVkNC4u
ZDNmMjM3NjQ0ODFjYjUyOTEwMTA4NGFhNzNlYmM4OTBhYTM0NDFjNiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmgKQEAgLTMwLDYg
KzMwLDEyIEBACiAjaW5jbHVkZSAiQXRvbWljU3RyaW5nLmgiCiAjZW5kaWYKIAorLy8gVGhpcyBt
YWNybyBpcyBoZWxwZnVsIGZvciB0ZXN0aW5nIGhvdyBtYW55IGludGVybWVkaWF0ZSBTdHJpbmdz
IGFyZSBjcmVhdGVkIHdoaWxlIGV2YWx1YXRpbmcgYW4KKy8vIGV4cHJlc3Npb24gY29udGFpbmlu
ZyBvcGVyYXRvcisuCisjaWZuZGVmIFdURl9TVFJJTkdUWVBFQURBUFRFUl9DT1BJRURfV1RGX1NU
UklORworI2RlZmluZSBXVEZfU1RSSU5HVFlQRUFEQVBURVJfQ09QSUVEX1dURl9TVFJJTkcoKSAo
KHZvaWQpMCkKKyNlbmRpZgorCiBuYW1lc3BhY2UgV1RGIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUg
U3RyaW5nVHlwZT4KQEAgLTE4MCw2ICsxODYsOCBAQCBwdWJsaWM6CiAgICAgICAgIHVuc2lnbmVk
IGxlbmd0aCA9IG1fYnVmZmVyLmxlbmd0aCgpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbGVuZ3RoOyArK2kpCiAgICAgICAgICAgICBkZXN0aW5hdGlvbltpXSA9IGRhdGFbaV07
CisKKyAgICAgICAgV1RGX1NUUklOR1RZUEVBREFQVEVSX0NPUElFRF9XVEZfU1RSSU5HKCk7CiAg
ICAgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90
ZXh0L1N0cmluZ09wZXJhdG9ycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0
cmluZ09wZXJhdG9ycy5oCmluZGV4IGU4YzIxODE0N2I0YTFkYzVmMzM3MmM5NzQ4Y2IyMmNmZTU0
YTZhY2EuLmNmN2FhNDJkZmQ4MjYwOGMzODcwY2U3OGQ1OTUzMGE1YjBiOTkyZGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdPcGVyYXRvcnMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nT3BlcmF0b3JzLmgKQEAgLTkx
LDYgKzkxLDI4IEBAIGlubGluZSBTdHJpbmdBcHBlbmQ8Y29uc3QgY2hhciosIEF0b21pY1N0cmlu
Zz4gb3BlcmF0b3IrKGNvbnN0IGNoYXIqIHN0cmluZzEsIGNvCiAgICAgcmV0dXJuIFN0cmluZ0Fw
cGVuZDxjb25zdCBjaGFyKiwgQXRvbWljU3RyaW5nPihzdHJpbmcxLCBzdHJpbmcyKTsKIH0KIAor
dGVtcGxhdGU8dHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4KK1N0cmluZ0FwcGVuZDxjb25zdCBjaGFy
KiwgU3RyaW5nQXBwZW5kPFUsIFY+ID4gb3BlcmF0b3IrKGNvbnN0IGNoYXIqIHN0cmluZzEsIGNv
bnN0IFN0cmluZ0FwcGVuZDxVLCBWPiYgc3RyaW5nMikKK3sKKyAgICByZXR1cm4gU3RyaW5nQXBw
ZW5kPGNvbnN0IGNoYXIqLCBTdHJpbmdBcHBlbmQ8VSwgVj4gPihzdHJpbmcxLCBzdHJpbmcyKTsK
K30KKworaW5saW5lIFN0cmluZ0FwcGVuZDxjb25zdCBVQ2hhciosIFN0cmluZz4gb3BlcmF0b3Ir
KGNvbnN0IFVDaGFyKiBzdHJpbmcxLCBjb25zdCBTdHJpbmcmIHN0cmluZzIpCit7CisgICAgcmV0
dXJuIFN0cmluZ0FwcGVuZDxjb25zdCBVQ2hhciosIFN0cmluZz4oc3RyaW5nMSwgc3RyaW5nMik7
Cit9CisKK2lubGluZSBTdHJpbmdBcHBlbmQ8Y29uc3QgVUNoYXIqLCBBdG9taWNTdHJpbmc+IG9w
ZXJhdG9yKyhjb25zdCBVQ2hhciogc3RyaW5nMSwgY29uc3QgQXRvbWljU3RyaW5nJiBzdHJpbmcy
KQoreworICAgIHJldHVybiBTdHJpbmdBcHBlbmQ8Y29uc3QgVUNoYXIqLCBBdG9taWNTdHJpbmc+
KHN0cmluZzEsIHN0cmluZzIpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBVLCB0eXBlbmFtZSBW
PgorU3RyaW5nQXBwZW5kPGNvbnN0IFVDaGFyKiwgU3RyaW5nQXBwZW5kPFUsIFY+ID4gb3BlcmF0
b3IrKGNvbnN0IFVDaGFyKiBzdHJpbmcxLCBjb25zdCBTdHJpbmdBcHBlbmQ8VSwgVj4mIHN0cmlu
ZzIpCit7CisgICAgcmV0dXJuIFN0cmluZ0FwcGVuZDxjb25zdCBVQ2hhciosIFN0cmluZ0FwcGVu
ZDxVLCBWPiA+KHN0cmluZzEsIHN0cmluZzIpOworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgog
U3RyaW5nQXBwZW5kPFN0cmluZywgVD4gb3BlcmF0b3IrKGNvbnN0IFN0cmluZyYgc3RyaW5nMSwg
VCBzdHJpbmcyKQogewpAQCAtOTgsOSArMTIwLDkgQEAgU3RyaW5nQXBwZW5kPFN0cmluZywgVD4g
b3BlcmF0b3IrKGNvbnN0IFN0cmluZyYgc3RyaW5nMSwgVCBzdHJpbmcyKQogfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXPgotU3RyaW5nQXBwZW5kPFUsIFN0
cmluZ0FwcGVuZDxWLCBXPiA+IG9wZXJhdG9yKyhVIHN0cmluZzEsIGNvbnN0IFN0cmluZ0FwcGVu
ZDxWLCBXPiYgc3RyaW5nMikKK1N0cmluZ0FwcGVuZDxTdHJpbmdBcHBlbmQ8VSwgVj4sIFc+IG9w
ZXJhdG9yKyhjb25zdCBTdHJpbmdBcHBlbmQ8VSwgVj4mIHN0cmluZzEsIFcgc3RyaW5nMikKIHsK
LSAgICByZXR1cm4gU3RyaW5nQXBwZW5kPFUsIFN0cmluZ0FwcGVuZDxWLCBXPiA+KHN0cmluZzEs
IHN0cmluZzIpOworICAgIHJldHVybiBTdHJpbmdBcHBlbmQ8U3RyaW5nQXBwZW5kPFUsIFY+LCBX
PihzdHJpbmcxLCBzdHJpbmcyKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZWJjOGZjODhhZGM2Mzc1
NmVlODVjY2Q5NDBlNzc0NmZkNDIxNzVjMi4uYWY2ZDhkMDVlNDcxNTI5OWNlOThmNzIxNDE1MmFl
YjQ1NjRjNTU2MyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDExLTA3LTA1ICBBZGFtIFJvYmVuICA8YXJvYmVuQGFw
cGxlLmNvbT4KKworICAgICAgICBUZXN0IHRoYXQgbm8gaW50ZXJtZWRpYXRlIFdURjo6U3RyaW5n
cyBhcmUgY3JlYXRlZCB3aGVuIGNvbmNhdGVuYXRpbmcgd2l0aCBzdHJpbmcgbGl0ZXJhbHMKKwor
ICAgICAgICBUZXN0IGZvciA8aHR0cDovL3dlYmtpdC5vcmcvYi82MzMzMD4gQ29uY2F0ZW5hdGlu
ZyBzdHJpbmcgbGl0ZXJhbHMgYW5kIFdURjo6U3RyaW5ncyB1c2luZworICAgICAgICBvcGVyYXRv
cisgaXMgc3Vib3B0aW1hbAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nT3BlcmF0b3JzLmNwcDog
QWRkZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKTogVGVzdCB0aGF0IGEgYnVuY2gg
b2YgZGlmZmVyZW50IHN0cmluZyBjb25jYXRlbmF0aW9uIGV4cHJlc3Npb25zIGRvbid0CisgICAg
ICAgIGNyZWF0ZSBhbnkgaW50ZXJtZWRpYXRlIFdURjo6U3RyaW5ncyB3aGlsZSB0aGV5J3JlIGJl
aW5nIGV2YWx1YXRlZC4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvd2luL1Rl
c3RXZWJLaXRBUEkudmNwcm9qOgorICAgICAgICBBZGRlZCBuZXcgZmlsZS4KKwogMjAxMS0wNy0w
NCAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZDYxMmJh
ZWExZjEyMTYzYzFkMDVmNTVhZWJlNDVjNjMzMmY1ZDI0Zi4uZDFiYzg3ZmYyZjcxZjIwYTJjOWYw
NGM1NWM2ZmI2MDEyOWVhMmJhMiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTUzLDYgKzUz
LDcgQEAKIAkJQkNCRDM3MzcxMjVBQkJFQjAwRDJDMjlGIC8qIGljb24ucG5nIGluIENvcHkgUmVz
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQkQzNzJFMTI1QUJC
RTYwMEQyQzI5RiAvKiBpY29uLnBuZyAqLzsgfTsKIAkJQkNCRDM3NjExMjVBQkNGRTAwRDJDMjlG
IC8qIEZyYW1lTUlNRVR5cGVQTkcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQkNCRDM3NjAxMjVBQkNGRTAwRDJDMjlGIC8qIEZyYW1lTUlNRVR5cGVQ
TkcuY3BwICovOyB9OwogCQlCQ0M4Qjk1QjEyNjExRjQ3MDBERTQ2QTQgLyogRmFpbGVkTG9hZC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0M4Qjk1
QTEyNjExRjQ3MDBERTQ2QTQgLyogRmFpbGVkTG9hZC5jcHAgKi87IH07CisJCUMwMTM2M0M4MTND
Mzk5NzMwMEVGMzk2NCAvKiBTdHJpbmdPcGVyYXRvcnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzAxMzYzQzcxM0MzOTk3MzAwRUYzOTY0IC8qIFN0
cmluZ09wZXJhdG9ycy5jcHAgKi87IH07CiAJCUMwMUEyM0YyMTI2NjE1NjcwMEM5RUQ1NSAvKiBz
cGFjZWJhci1zY3JvbGxpbmcuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDMDJCNzg4MjEyNjYxNTQxMDAyNkJGMEYgLyogc3BhY2ViYXIt
c2Nyb2xsaW5nLmh0bWwgKi87IH07CiAJCUMwMkI3N0YyMTI2NjEyMTQwMDI2QkYwRiAvKiBTcGFj
ZWJhclNjcm9sbGluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDMDJCNzdGMTEyNjYxMjE0MDAyNkJGMEYgLyogU3BhY2ViYXJTY3JvbGxpbmcuY3Bw
ICovOyB9OwogCQlDMDJCNzg1NDEyNjYxM0FFMDAyNkJGMEYgLyogQ2FyYm9uLmZyYW1ld29yayBp
biBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMwMkI3ODUz
MTI2NjEzQUUwMDI2QkYwRiAvKiBDYXJib24uZnJhbWV3b3JrICovOyB9OwpAQCAtMTYzLDYgKzE2
NCw3IEBACiAJCUJDQkQzNzYwMTI1QUJDRkUwMEQyQzI5RiAvKiBGcmFtZU1JTUVUeXBlUE5HLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZyYW1lTUlNRVR5cGVQTkcu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0M4Qjk1QTEyNjExRjQ3MDBERTQ2
QTQgLyogRmFpbGVkTG9hZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBGYWlsZWRMb2FkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNGMEY5Mzkx
MzgxQzI1QjAwODM2MUFDIC8qIENvbXBpbGVyVmVyc2lvbi54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQueGNjb25maWc7IHBhdGggPSBDb21waWxlclZlcnNpb24ueGNjb25maWc7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUMwMTM2M0M3MTNDMzk5NzMwMEVGMzk2NCAvKiBTdHJpbmdPcGVy
YXRvcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU3RyaW5nT3Bl
cmF0b3JzLmNwcDsgcGF0aCA9IFdURi9TdHJpbmdPcGVyYXRvcnMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDMDJCNzdGMTEyNjYxMjE0MDAyNkJGMEYgLyogU3BhY2ViYXJTY3Jv
bGxpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3BhY2ViYXJT
Y3JvbGxpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMDJCNzg1MzEyNjYx
M0FFMDAyNkJGMEYgLyogQ2FyYm9uLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBleHBsaWNpdEZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBDYXJib24u
ZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gU0RLUk9PVDsgfTsKIAkJQzAyQjc4ODIxMjY2MTU0MTAw
MjZCRjBGIC8qIHNwYWNlYmFyLXNjcm9sbGluZy5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBw
YXRoID0gInNwYWNlYmFyLXNjcm9sbGluZy5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTMxOSw2ICszMjEsNyBAQAogCQlCQzkwOTY0NjEyNTU2MTg5MDAwODM3NTYgLyogV1RG
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlDMDEzNjND
NzEzQzM5OTczMDBFRjM5NjQgLyogU3RyaW5nT3BlcmF0b3JzLmNwcCAqLywKIAkJCQlCQzkwOTY0
QjEyNTU2MUJGMDAwODM3NTYgLyogVmVjdG9yQmFzaWMuY3BwICovLAogCQkJCTM3MjAwQjkxMTNB
MTYyMzAwMDdBNEZBRCAvKiBWZWN0b3JSZXZlcnNlLmNwcCAqLywKIAkJCSk7CkBAIC00NzEsNiAr
NDc0LDcgQEAKIAkJCQkzM0JFNUFGNTEzN0I1QTZDMDA3MDU4MTMgLyogTW91c2VNb3ZlQWZ0ZXJD
cmFzaC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMDQ1Rjk0NTEzODVDMkVBMDBDMEYzQ0QgLyog
RG93bmxvYWREZWNpZGVEZXN0aW5hdGlvbkNyYXNoLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTM3
MjAwQjkyMTNBMTYyMzAwMDdBNEZBRCAvKiBWZWN0b3JSZXZlcnNlLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCUMwMTM2M0M4MTNDMzk5NzMwMEVGMzk2NCAvKiBTdHJpbmdPcGVyYXRvcnMuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9T
dHJpbmdPcGVyYXRvcnMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5n
T3BlcmF0b3JzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YzMyMDMyOWNkOTgyYzQ1YjgwMzM0NmMxZDhlMzZm
MzYzNTMwYzY2Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvU3RyaW5nT3BlcmF0b3JzLmNwcApAQCAtMCwwICsxLDEyNiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJUZXN0LmgiCisKKyNkZWZpbmUgSlNfRVhQT1JUREFUQQorI2RlZmluZSBXVEZfU1RS
SU5HVFlQRUFEQVBURVJfQ09QSUVEX1dURl9TVFJJTkcoKSAoKyt3dGZTdHJpbmdDb3B5Q291bnQp
CisKK3N0YXRpYyBpbnQgd3RmU3RyaW5nQ29weUNvdW50OworCisjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworI2RlZmlu
ZSBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUyhleHByLCBjb3VudCkgXAorICAgIGRvIHsgXAor
ICAgICAgICB3dGZTdHJpbmdDb3B5Q291bnQgPSAwOyBcCisgICAgICAgIFN0cmluZyBfX3Rlc3RT
dHJpbmcgPSBleHByOyBcCisgICAgICAgICh2b2lkKV9fdGVzdFN0cmluZzsgXAorICAgICAgICBF
WFBFQ1RfRVEoY291bnQsIHd0ZlN0cmluZ0NvcHlDb3VudCkgPDwgI2V4cHI7IFwKKyAgICB9IHdo
aWxlKDApOworCitURVNUKFdURiwgU3RyaW5nT3BlcmF0b3JzKQoreworICAgIFN0cmluZyBzdHJp
bmcoIlN0cmluZyIpOworICAgIEF0b21pY1N0cmluZyBhdG9taWNTdHJpbmcoIkF0b21pY1N0cmlu
ZyIpOworCisgICAgRVhQRUNUX0VRKHd0ZlN0cmluZ0NvcHlDb3VudCwgMCk7CisKKyAgICBFWFBF
Q1RfTl9XVEZfU1RSSU5HX0NPUElFUyhzdHJpbmcgKyBzdHJpbmcsIDIpOworICAgIEVYUEVDVF9O
X1dURl9TVFJJTkdfQ09QSUVTKHN0cmluZyArIGF0b21pY1N0cmluZywgMik7CisgICAgRVhQRUNU
X05fV1RGX1NUUklOR19DT1BJRVMoYXRvbWljU3RyaW5nICsgc3RyaW5nLCAyKTsKKyAgICBFWFBF
Q1RfTl9XVEZfU1RSSU5HX0NPUElFUyhhdG9taWNTdHJpbmcgKyBhdG9taWNTdHJpbmcsIDIpOwor
CisgICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoIkMgc3RyaW5nIiArIHN0cmluZywgMSk7
CisgICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoc3RyaW5nICsgIkMgc3RyaW5nIiwgMSk7
CisgICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoIkMgc3RyaW5nIiArIGF0b21pY1N0cmlu
ZywgMSk7CisgICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoYXRvbWljU3RyaW5nICsgIkMg
c3RyaW5nIiwgMSk7CisKKyAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygiQyBzdHJpbmci
ICsgc3RyaW5nICsgIkMgc3RyaW5nIiArIHN0cmluZywgMik7CisgICAgRVhQRUNUX05fV1RGX1NU
UklOR19DT1BJRVMoIkMgc3RyaW5nIiArIChzdHJpbmcgKyAiQyBzdHJpbmciICsgc3RyaW5nKSwg
Mik7CisgICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoKCJDIHN0cmluZyIgKyBzdHJpbmcp
ICsgKCJDIHN0cmluZyIgKyBzdHJpbmcpLCAyKTsKKyAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NP
UElFUyhzdHJpbmcgKyAiQyBzdHJpbmciICsgc3RyaW5nICsgIkMgc3RyaW5nIiwgMik7CisgICAg
RVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoc3RyaW5nICsgKCJDIHN0cmluZyIgKyBzdHJpbmcg
KyAiQyBzdHJpbmciKSwgMik7CisgICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoKHN0cmlu
ZyArICJDIHN0cmluZyIpICsgKHN0cmluZyArICJDIHN0cmluZyIpLCAyKTsKKworICAgIEVYUEVD
VF9OX1dURl9TVFJJTkdfQ09QSUVTKCJDIHN0cmluZyIgKyBhdG9taWNTdHJpbmcgKyAiQyBzdHJp
bmciICsgYXRvbWljU3RyaW5nLCAyKTsKKyAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygi
QyBzdHJpbmciICsgKGF0b21pY1N0cmluZyArICJDIHN0cmluZyIgKyBhdG9taWNTdHJpbmcpLCAy
KTsKKyAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygoIkMgc3RyaW5nIiArIGF0b21pY1N0
cmluZykgKyAoIkMgc3RyaW5nIiArIGF0b21pY1N0cmluZyksIDIpOworICAgIEVYUEVDVF9OX1dU
Rl9TVFJJTkdfQ09QSUVTKGF0b21pY1N0cmluZyArICJDIHN0cmluZyIgKyBhdG9taWNTdHJpbmcg
KyAiQyBzdHJpbmciLCAyKTsKKyAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUyhhdG9taWNT
dHJpbmcgKyAoIkMgc3RyaW5nIiArIGF0b21pY1N0cmluZyArICJDIHN0cmluZyIpLCAyKTsKKyAg
ICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygoYXRvbWljU3RyaW5nICsgIkMgc3RyaW5nIikg
KyAoYXRvbWljU3RyaW5nICsgIkMgc3RyaW5nIiksIDIpOworCisgICAgRVhQRUNUX05fV1RGX1NU
UklOR19DT1BJRVMoIkMgc3RyaW5nIiArIHN0cmluZyArICJDIHN0cmluZyIgKyBhdG9taWNTdHJp
bmcsIDIpOworICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKCJDIHN0cmluZyIgKyAoc3Ry
aW5nICsgIkMgc3RyaW5nIiArIGF0b21pY1N0cmluZyksIDIpOworICAgIEVYUEVDVF9OX1dURl9T
VFJJTkdfQ09QSUVTKCgiQyBzdHJpbmciICsgc3RyaW5nKSArICgiQyBzdHJpbmciICsgYXRvbWlj
U3RyaW5nKSwgMik7CisgICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoc3RyaW5nICsgIkMg
c3RyaW5nIiArIGF0b21pY1N0cmluZyArICJDIHN0cmluZyIsIDIpOworICAgIEVYUEVDVF9OX1dU
Rl9TVFJJTkdfQ09QSUVTKHN0cmluZyArICgiQyBzdHJpbmciICsgYXRvbWljU3RyaW5nICsgIkMg
c3RyaW5nIiksIDIpOworICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKChzdHJpbmcgKyAi
QyBzdHJpbmciKSArIChhdG9taWNTdHJpbmcgKyAiQyBzdHJpbmciKSwgMik7CisKKyAgICBFWFBF
Q1RfTl9XVEZfU1RSSU5HX0NPUElFUygiQyBzdHJpbmciICsgYXRvbWljU3RyaW5nICsgIkMgc3Ry
aW5nIiArIHN0cmluZywgMik7CisgICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoIkMgc3Ry
aW5nIiArIChhdG9taWNTdHJpbmcgKyAiQyBzdHJpbmciICsgc3RyaW5nKSwgMik7CisgICAgRVhQ
RUNUX05fV1RGX1NUUklOR19DT1BJRVMoKCJDIHN0cmluZyIgKyBhdG9taWNTdHJpbmcpICsgKCJD
IHN0cmluZyIgKyBzdHJpbmcpLCAyKTsKKyAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUyhh
dG9taWNTdHJpbmcgKyAiQyBzdHJpbmciICsgc3RyaW5nICsgIkMgc3RyaW5nIiwgMik7CisgICAg
RVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoYXRvbWljU3RyaW5nICsgKCJDIHN0cmluZyIgKyBz
dHJpbmcgKyAiQyBzdHJpbmciKSwgMik7CisgICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMo
KGF0b21pY1N0cmluZyArICJDIHN0cmluZyIpICsgKHN0cmluZyArICJDIHN0cmluZyIpLCAyKTsK
KworI2lmIENPTVBJTEVSKE1TVkMpCisgICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoTCJ3
aWRlIHN0cmluZyIgKyBzdHJpbmcsIDEpOworICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVT
KHN0cmluZyArIEwid2lkZSBzdHJpbmciLCAxKTsKKyAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NP
UElFUyhMIndpZGUgc3RyaW5nIiArIGF0b21pY1N0cmluZywgMSk7CisgICAgRVhQRUNUX05fV1RG
X1NUUklOR19DT1BJRVMoYXRvbWljU3RyaW5nICsgTCJ3aWRlIHN0cmluZyIsIDEpOworCisgICAg
RVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmcgKyBMIndp
ZGUgc3RyaW5nIiArIHN0cmluZywgMik7CisgICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMo
TCJ3aWRlIHN0cmluZyIgKyAoc3RyaW5nICsgTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmcpLCAyKTsK
KyAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygoTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmcp
ICsgKEwid2lkZSBzdHJpbmciICsgc3RyaW5nKSwgMik7CisgICAgRVhQRUNUX05fV1RGX1NUUklO
R19DT1BJRVMoc3RyaW5nICsgTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmcgKyBMIndpZGUgc3RyaW5n
IiwgMik7CisgICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoc3RyaW5nICsgKEwid2lkZSBz
dHJpbmciICsgc3RyaW5nICsgTCJ3aWRlIHN0cmluZyIpLCAyKTsKKyAgICBFWFBFQ1RfTl9XVEZf
U1RSSU5HX0NPUElFUygoc3RyaW5nICsgTCJ3aWRlIHN0cmluZyIpICsgKHN0cmluZyArIEwid2lk
ZSBzdHJpbmciKSwgMik7CisKKyAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUyhMIndpZGUg
c3RyaW5nIiArIGF0b21pY1N0cmluZyArIEwid2lkZSBzdHJpbmciICsgYXRvbWljU3RyaW5nLCAy
KTsKKyAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUyhMIndpZGUgc3RyaW5nIiArIChhdG9t
aWNTdHJpbmcgKyBMIndpZGUgc3RyaW5nIiArIGF0b21pY1N0cmluZyksIDIpOworICAgIEVYUEVD
VF9OX1dURl9TVFJJTkdfQ09QSUVTKChMIndpZGUgc3RyaW5nIiArIGF0b21pY1N0cmluZykgKyAo
TCJ3aWRlIHN0cmluZyIgKyBhdG9taWNTdHJpbmcpLCAyKTsKKyAgICBFWFBFQ1RfTl9XVEZfU1RS
SU5HX0NPUElFUyhhdG9taWNTdHJpbmcgKyBMIndpZGUgc3RyaW5nIiArIGF0b21pY1N0cmluZyAr
IEwid2lkZSBzdHJpbmciLCAyKTsKKyAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUyhhdG9t
aWNTdHJpbmcgKyAoTCJ3aWRlIHN0cmluZyIgKyBhdG9taWNTdHJpbmcgKyBMIndpZGUgc3RyaW5n
IiksIDIpOworICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKChhdG9taWNTdHJpbmcgKyBM
IndpZGUgc3RyaW5nIikgKyAoYXRvbWljU3RyaW5nICsgTCJ3aWRlIHN0cmluZyIpLCAyKTsKKwor
ICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKEwid2lkZSBzdHJpbmciICsgc3RyaW5nICsg
TCJ3aWRlIHN0cmluZyIgKyBhdG9taWNTdHJpbmcsIDIpOworICAgIEVYUEVDVF9OX1dURl9TVFJJ
TkdfQ09QSUVTKEwid2lkZSBzdHJpbmciICsgKHN0cmluZyArIEwid2lkZSBzdHJpbmciICsgYXRv
bWljU3RyaW5nKSwgMik7CisgICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoKEwid2lkZSBz
dHJpbmciICsgc3RyaW5nKSArIChMIndpZGUgc3RyaW5nIiArIGF0b21pY1N0cmluZyksIDIpOwor
ICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKHN0cmluZyArIEwid2lkZSBzdHJpbmciICsg
YXRvbWljU3RyaW5nICsgTCJ3aWRlIHN0cmluZyIsIDIpOworICAgIEVYUEVDVF9OX1dURl9TVFJJ
TkdfQ09QSUVTKHN0cmluZyArIChMIndpZGUgc3RyaW5nIiArIGF0b21pY1N0cmluZyArIEwid2lk
ZSBzdHJpbmciKSwgMik7CisgICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoKHN0cmluZyAr
IEwid2lkZSBzdHJpbmciKSArIChhdG9taWNTdHJpbmcgKyBMIndpZGUgc3RyaW5nIiksIDIpOwor
CisgICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoTCJ3aWRlIHN0cmluZyIgKyBhdG9taWNT
dHJpbmcgKyBMIndpZGUgc3RyaW5nIiArIHN0cmluZywgMik7CisgICAgRVhQRUNUX05fV1RGX1NU
UklOR19DT1BJRVMoTCJ3aWRlIHN0cmluZyIgKyAoYXRvbWljU3RyaW5nICsgTCJ3aWRlIHN0cmlu
ZyIgKyBzdHJpbmcpLCAyKTsKKyAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygoTCJ3aWRl
IHN0cmluZyIgKyBhdG9taWNTdHJpbmcpICsgKEwid2lkZSBzdHJpbmciICsgc3RyaW5nKSwgMik7
CisgICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoYXRvbWljU3RyaW5nICsgTCJ3aWRlIHN0
cmluZyIgKyBzdHJpbmcgKyBMIndpZGUgc3RyaW5nIiwgMik7CisgICAgRVhQRUNUX05fV1RGX1NU
UklOR19DT1BJRVMoYXRvbWljU3RyaW5nICsgKEwid2lkZSBzdHJpbmciICsgc3RyaW5nICsgTCJ3
aWRlIHN0cmluZyIpLCAyKTsKKyAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygoYXRvbWlj
U3RyaW5nICsgTCJ3aWRlIHN0cmluZyIpICsgKHN0cmluZyArIEwid2lkZSBzdHJpbmciKSwgMik7
CisjZW5kaWYKK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS93aW4vVGVzdFdlYktpdEFQSS52Y3Byb2ogYi9Ub29scy9UZXN0
V2ViS2l0QVBJL3dpbi9UZXN0V2ViS2l0QVBJLnZjcHJvagppbmRleCAyMDg5YjU5NWExZjRhNGJh
MzRjNmJhYWQyODgwMWIwOGFmMmI4OWE3Li4wYTI4OGIwMGUyYzIyMjIwMDVlYmMxODhjNGEwYTI4
NTU2NzBjYmYxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL3dpbi9UZXN0V2ViS2l0
QVBJLnZjcHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL3dpbi9UZXN0V2ViS2l0QVBJLnZj
cHJvagpAQCAtNTg4LDYgKzU4OCwxMCBAQAogCQkJCU5hbWU9IldURiIKIAkJCQk+CiAJCQkJPEZp
bGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxUZXN0c1xXVEZcU3RyaW5nT3BlcmF0b3JzLmNwcCIK
KwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFRl
c3RzXFdURlxWZWN0b3JCYXNpYy5jcHAiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>99745</attachid>
            <date>2011-07-05 14:10:50 -0700</date>
            <delta_ts>2011-07-11 10:25:52 -0700</delta_ts>
            <desc>Ensure no intermediate WTF::Strings are created when concatenating with string literals</desc>
            <filename>bug-63330-20110705171048.patch</filename>
            <type>text/plain</type>
            <size>16979</size>
            <attacher name="Adam Roben (:aroben)">aroben</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTAzOTQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDUy
NmNhZjAwYmJkMWE0YzljNzgxNzBmZTM5YTNhZmYwNDcwMTRiMTIuLjhiODc2NjA5ZGQxYmIyNmEz
ZTRiZDY2YWMwYjExMDQ5MTkwYjUwMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDI1IEBACisyMDExLTA3LTA1ICBBZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxlLmNvbT4KKwor
ICAgICAgICBFbnN1cmUgbm8gaW50ZXJtZWRpYXRlIFdURjo6U3RyaW5ncyBhcmUgY3JlYXRlZCB3
aGVuIGNvbmNhdGVuYXRpbmcgd2l0aCBzdHJpbmcgbGl0ZXJhbHMKKworICAgICAgICBGaXhlcyA8
aHR0cDovL3dlYmtpdC5vcmcvYi82MzMzMD4gQ29uY2F0ZW5hdGluZyBzdHJpbmcgbGl0ZXJhbHMg
YW5kIFdURjo6U3RyaW5ncyB1c2luZworICAgICAgICBvcGVyYXRvcisgaXMgc3Vib3B0aW1hbAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL3Rl
eHQvU3RyaW5nQ29uY2F0ZW5hdGUuaDoKKyAgICAgICAgKFdURjo6U3RyaW5nVHlwZUFkYXB0ZXI8
U3RyaW5nPjo6d3JpdGVUbyk6IEFkZGVkIGEgbWFjcm8gdGhhdCBjYW4gYmUgdXNlZCBmb3IgdGVz
dGluZyBob3cKKyAgICAgICAgbWFueSBXVEY6OlN0cmluZ3MgZ2V0IGNvcGllZCB3aGlsZSBldmFs
dWF0aW5nIGFuIG9wZXJhdG9yKyBleHByZXNzaW9uLgorCisgICAgICAgICogd3RmL3RleHQvU3Ry
aW5nT3BlcmF0b3JzLmg6CisgICAgICAgIChXVEY6Om9wZXJhdG9yKyk6IENoYW5nZWQgdGhlIG92
ZXJsb2FkIHRoYXQgdGFrZXMgYSBTdHJpbmdBcHBlbmQgdG8gdGFrZSBpdCBvbiB0aGUgbGVmdC1o
YW5kCisgICAgICAgIHNpZGUsIHNpbmNlIG9wZXJhdG9yKyBpcyBsZWZ0LWFzc29jaWF0aXZlLiBI
YXZpbmcgdGhlIFN0cmluZ0FwcGVuZCBvbiB0aGUgcmlnaHQtaGFuZCBzaWRlCisgICAgICAgIHdh
cyBjYXVzaW5nIHVzIHRvIG1ha2UgaW50ZXJtZWRpYXRlIFdURjo6U3RyaW5ncyB3aGVuIGV2YWx1
YXRpbmcgZXhwcmVzc2lvbnMgdGhhdCBjb250YWluZWQKKyAgICAgICAgbXVsdGlwbGUgY2FsbHMg
dG8gb3BlcmF0b3IrLiBBZGRlZCBzb21lIG1vcmUgb3ZlcmxvYWRzIGZvciB0aGF0IHRha2UgYSBs
ZWZ0LWhhbmQgc2lkZSBvZgorICAgICAgICBjb25zdCBjaGFyKiB0byByZXNvbHZlIG92ZXJsb2Fk
IGFtYmlndWl0eSBmb3IgY2VydGFpbiBleHByZXNzaW9ucy4gQWRkZWQgb3ZlcmxvYWRzIHRoYXQg
dGFrZQorICAgICAgICBhIGxlZnQtaGFuZCBzaWRlIG9mIGNvbnN0IFVDaGFyKiAobWF0Y2hpbmcg
dGhlIGNvbnN0IGNoYXIqIG92ZXJsb2Fkcykgc28gdGhhdCB3aWRlIHN0cmluZworICAgICAgICBs
aXRlcmFscyBkb24ndCBmaXJzdCBoYXZlIHRvIGJlIGNvbnZlcnRlZCB0byBhIFdURjo6U3RyaW5n
IGluIG9wZXJhdG9yKyBleHByZXNzaW9ucy4KKwogMjAxMS0wNy0wNCAgR2F2aW4gQmFycmFjbG91
Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdl
aW5pZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdD
b25jYXRlbmF0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0NvbmNh
dGVuYXRlLmgKaW5kZXggZThjNjMzMTE4ODFmZjZhZjk4NWFjMjJiZTUyMmI3NzI4MjkzNGVkNC4u
ZDNmMjM3NjQ0ODFjYjUyOTEwMTA4NGFhNzNlYmM4OTBhYTM0NDFjNiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmgKQEAgLTMwLDYg
KzMwLDEyIEBACiAjaW5jbHVkZSAiQXRvbWljU3RyaW5nLmgiCiAjZW5kaWYKIAorLy8gVGhpcyBt
YWNybyBpcyBoZWxwZnVsIGZvciB0ZXN0aW5nIGhvdyBtYW55IGludGVybWVkaWF0ZSBTdHJpbmdz
IGFyZSBjcmVhdGVkIHdoaWxlIGV2YWx1YXRpbmcgYW4KKy8vIGV4cHJlc3Npb24gY29udGFpbmlu
ZyBvcGVyYXRvcisuCisjaWZuZGVmIFdURl9TVFJJTkdUWVBFQURBUFRFUl9DT1BJRURfV1RGX1NU
UklORworI2RlZmluZSBXVEZfU1RSSU5HVFlQRUFEQVBURVJfQ09QSUVEX1dURl9TVFJJTkcoKSAo
KHZvaWQpMCkKKyNlbmRpZgorCiBuYW1lc3BhY2UgV1RGIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUg
U3RyaW5nVHlwZT4KQEAgLTE4MCw2ICsxODYsOCBAQCBwdWJsaWM6CiAgICAgICAgIHVuc2lnbmVk
IGxlbmd0aCA9IG1fYnVmZmVyLmxlbmd0aCgpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbGVuZ3RoOyArK2kpCiAgICAgICAgICAgICBkZXN0aW5hdGlvbltpXSA9IGRhdGFbaV07
CisKKyAgICAgICAgV1RGX1NUUklOR1RZUEVBREFQVEVSX0NPUElFRF9XVEZfU1RSSU5HKCk7CiAg
ICAgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90
ZXh0L1N0cmluZ09wZXJhdG9ycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0
cmluZ09wZXJhdG9ycy5oCmluZGV4IGU4YzIxODE0N2I0YTFkYzVmMzM3MmM5NzQ4Y2IyMmNmZTU0
YTZhY2EuLmNmN2FhNDJkZmQ4MjYwOGMzODcwY2U3OGQ1OTUzMGE1YjBiOTkyZGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdPcGVyYXRvcnMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nT3BlcmF0b3JzLmgKQEAgLTkx
LDYgKzkxLDI4IEBAIGlubGluZSBTdHJpbmdBcHBlbmQ8Y29uc3QgY2hhciosIEF0b21pY1N0cmlu
Zz4gb3BlcmF0b3IrKGNvbnN0IGNoYXIqIHN0cmluZzEsIGNvCiAgICAgcmV0dXJuIFN0cmluZ0Fw
cGVuZDxjb25zdCBjaGFyKiwgQXRvbWljU3RyaW5nPihzdHJpbmcxLCBzdHJpbmcyKTsKIH0KIAor
dGVtcGxhdGU8dHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4KK1N0cmluZ0FwcGVuZDxjb25zdCBjaGFy
KiwgU3RyaW5nQXBwZW5kPFUsIFY+ID4gb3BlcmF0b3IrKGNvbnN0IGNoYXIqIHN0cmluZzEsIGNv
bnN0IFN0cmluZ0FwcGVuZDxVLCBWPiYgc3RyaW5nMikKK3sKKyAgICByZXR1cm4gU3RyaW5nQXBw
ZW5kPGNvbnN0IGNoYXIqLCBTdHJpbmdBcHBlbmQ8VSwgVj4gPihzdHJpbmcxLCBzdHJpbmcyKTsK
K30KKworaW5saW5lIFN0cmluZ0FwcGVuZDxjb25zdCBVQ2hhciosIFN0cmluZz4gb3BlcmF0b3Ir
KGNvbnN0IFVDaGFyKiBzdHJpbmcxLCBjb25zdCBTdHJpbmcmIHN0cmluZzIpCit7CisgICAgcmV0
dXJuIFN0cmluZ0FwcGVuZDxjb25zdCBVQ2hhciosIFN0cmluZz4oc3RyaW5nMSwgc3RyaW5nMik7
Cit9CisKK2lubGluZSBTdHJpbmdBcHBlbmQ8Y29uc3QgVUNoYXIqLCBBdG9taWNTdHJpbmc+IG9w
ZXJhdG9yKyhjb25zdCBVQ2hhciogc3RyaW5nMSwgY29uc3QgQXRvbWljU3RyaW5nJiBzdHJpbmcy
KQoreworICAgIHJldHVybiBTdHJpbmdBcHBlbmQ8Y29uc3QgVUNoYXIqLCBBdG9taWNTdHJpbmc+
KHN0cmluZzEsIHN0cmluZzIpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBVLCB0eXBlbmFtZSBW
PgorU3RyaW5nQXBwZW5kPGNvbnN0IFVDaGFyKiwgU3RyaW5nQXBwZW5kPFUsIFY+ID4gb3BlcmF0
b3IrKGNvbnN0IFVDaGFyKiBzdHJpbmcxLCBjb25zdCBTdHJpbmdBcHBlbmQ8VSwgVj4mIHN0cmlu
ZzIpCit7CisgICAgcmV0dXJuIFN0cmluZ0FwcGVuZDxjb25zdCBVQ2hhciosIFN0cmluZ0FwcGVu
ZDxVLCBWPiA+KHN0cmluZzEsIHN0cmluZzIpOworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgog
U3RyaW5nQXBwZW5kPFN0cmluZywgVD4gb3BlcmF0b3IrKGNvbnN0IFN0cmluZyYgc3RyaW5nMSwg
VCBzdHJpbmcyKQogewpAQCAtOTgsOSArMTIwLDkgQEAgU3RyaW5nQXBwZW5kPFN0cmluZywgVD4g
b3BlcmF0b3IrKGNvbnN0IFN0cmluZyYgc3RyaW5nMSwgVCBzdHJpbmcyKQogfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXPgotU3RyaW5nQXBwZW5kPFUsIFN0
cmluZ0FwcGVuZDxWLCBXPiA+IG9wZXJhdG9yKyhVIHN0cmluZzEsIGNvbnN0IFN0cmluZ0FwcGVu
ZDxWLCBXPiYgc3RyaW5nMikKK1N0cmluZ0FwcGVuZDxTdHJpbmdBcHBlbmQ8VSwgVj4sIFc+IG9w
ZXJhdG9yKyhjb25zdCBTdHJpbmdBcHBlbmQ8VSwgVj4mIHN0cmluZzEsIFcgc3RyaW5nMikKIHsK
LSAgICByZXR1cm4gU3RyaW5nQXBwZW5kPFUsIFN0cmluZ0FwcGVuZDxWLCBXPiA+KHN0cmluZzEs
IHN0cmluZzIpOworICAgIHJldHVybiBTdHJpbmdBcHBlbmQ8U3RyaW5nQXBwZW5kPFUsIFY+LCBX
PihzdHJpbmcxLCBzdHJpbmcyKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZWJjOGZjODhhZGM2Mzc1
NmVlODVjY2Q5NDBlNzc0NmZkNDIxNzVjMi4uYWY2ZDhkMDVlNDcxNTI5OWNlOThmNzIxNDE1MmFl
YjQ1NjRjNTU2MyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDExLTA3LTA1ICBBZGFtIFJvYmVuICA8YXJvYmVuQGFw
cGxlLmNvbT4KKworICAgICAgICBUZXN0IHRoYXQgbm8gaW50ZXJtZWRpYXRlIFdURjo6U3RyaW5n
cyBhcmUgY3JlYXRlZCB3aGVuIGNvbmNhdGVuYXRpbmcgd2l0aCBzdHJpbmcgbGl0ZXJhbHMKKwor
ICAgICAgICBUZXN0IGZvciA8aHR0cDovL3dlYmtpdC5vcmcvYi82MzMzMD4gQ29uY2F0ZW5hdGlu
ZyBzdHJpbmcgbGl0ZXJhbHMgYW5kIFdURjo6U3RyaW5ncyB1c2luZworICAgICAgICBvcGVyYXRv
cisgaXMgc3Vib3B0aW1hbAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nT3BlcmF0b3JzLmNwcDog
QWRkZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKTogVGVzdCB0aGF0IGEgYnVuY2gg
b2YgZGlmZmVyZW50IHN0cmluZyBjb25jYXRlbmF0aW9uIGV4cHJlc3Npb25zIGRvbid0CisgICAg
ICAgIGNyZWF0ZSBhbnkgaW50ZXJtZWRpYXRlIFdURjo6U3RyaW5ncyB3aGlsZSB0aGV5J3JlIGJl
aW5nIGV2YWx1YXRlZC4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvd2luL1Rl
c3RXZWJLaXRBUEkudmNwcm9qOgorICAgICAgICBBZGRlZCBuZXcgZmlsZS4KKwogMjAxMS0wNy0w
NCAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZDYxMmJh
ZWExZjEyMTYzYzFkMDVmNTVhZWJlNDVjNjMzMmY1ZDI0Zi4uZDFiYzg3ZmYyZjcxZjIwYTJjOWYw
NGM1NWM2ZmI2MDEyOWVhMmJhMiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTUzLDYgKzUz
LDcgQEAKIAkJQkNCRDM3MzcxMjVBQkJFQjAwRDJDMjlGIC8qIGljb24ucG5nIGluIENvcHkgUmVz
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQkQzNzJFMTI1QUJC
RTYwMEQyQzI5RiAvKiBpY29uLnBuZyAqLzsgfTsKIAkJQkNCRDM3NjExMjVBQkNGRTAwRDJDMjlG
IC8qIEZyYW1lTUlNRVR5cGVQTkcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQkNCRDM3NjAxMjVBQkNGRTAwRDJDMjlGIC8qIEZyYW1lTUlNRVR5cGVQ
TkcuY3BwICovOyB9OwogCQlCQ0M4Qjk1QjEyNjExRjQ3MDBERTQ2QTQgLyogRmFpbGVkTG9hZC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0M4Qjk1
QTEyNjExRjQ3MDBERTQ2QTQgLyogRmFpbGVkTG9hZC5jcHAgKi87IH07CisJCUMwMTM2M0M4MTND
Mzk5NzMwMEVGMzk2NCAvKiBTdHJpbmdPcGVyYXRvcnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzAxMzYzQzcxM0MzOTk3MzAwRUYzOTY0IC8qIFN0
cmluZ09wZXJhdG9ycy5jcHAgKi87IH07CiAJCUMwMUEyM0YyMTI2NjE1NjcwMEM5RUQ1NSAvKiBz
cGFjZWJhci1zY3JvbGxpbmcuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDMDJCNzg4MjEyNjYxNTQxMDAyNkJGMEYgLyogc3BhY2ViYXIt
c2Nyb2xsaW5nLmh0bWwgKi87IH07CiAJCUMwMkI3N0YyMTI2NjEyMTQwMDI2QkYwRiAvKiBTcGFj
ZWJhclNjcm9sbGluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDMDJCNzdGMTEyNjYxMjE0MDAyNkJGMEYgLyogU3BhY2ViYXJTY3JvbGxpbmcuY3Bw
ICovOyB9OwogCQlDMDJCNzg1NDEyNjYxM0FFMDAyNkJGMEYgLyogQ2FyYm9uLmZyYW1ld29yayBp
biBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMwMkI3ODUz
MTI2NjEzQUUwMDI2QkYwRiAvKiBDYXJib24uZnJhbWV3b3JrICovOyB9OwpAQCAtMTYzLDYgKzE2
NCw3IEBACiAJCUJDQkQzNzYwMTI1QUJDRkUwMEQyQzI5RiAvKiBGcmFtZU1JTUVUeXBlUE5HLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZyYW1lTUlNRVR5cGVQTkcu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0M4Qjk1QTEyNjExRjQ3MDBERTQ2
QTQgLyogRmFpbGVkTG9hZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBGYWlsZWRMb2FkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNGMEY5Mzkx
MzgxQzI1QjAwODM2MUFDIC8qIENvbXBpbGVyVmVyc2lvbi54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQueGNjb25maWc7IHBhdGggPSBDb21waWxlclZlcnNpb24ueGNjb25maWc7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUMwMTM2M0M3MTNDMzk5NzMwMEVGMzk2NCAvKiBTdHJpbmdPcGVy
YXRvcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU3RyaW5nT3Bl
cmF0b3JzLmNwcDsgcGF0aCA9IFdURi9TdHJpbmdPcGVyYXRvcnMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDMDJCNzdGMTEyNjYxMjE0MDAyNkJGMEYgLyogU3BhY2ViYXJTY3Jv
bGxpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3BhY2ViYXJT
Y3JvbGxpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMDJCNzg1MzEyNjYx
M0FFMDAyNkJGMEYgLyogQ2FyYm9uLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBleHBsaWNpdEZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBDYXJib24u
ZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gU0RLUk9PVDsgfTsKIAkJQzAyQjc4ODIxMjY2MTU0MTAw
MjZCRjBGIC8qIHNwYWNlYmFyLXNjcm9sbGluZy5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBw
YXRoID0gInNwYWNlYmFyLXNjcm9sbGluZy5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTMxOSw2ICszMjEsNyBAQAogCQlCQzkwOTY0NjEyNTU2MTg5MDAwODM3NTYgLyogV1RG
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlDMDEzNjND
NzEzQzM5OTczMDBFRjM5NjQgLyogU3RyaW5nT3BlcmF0b3JzLmNwcCAqLywKIAkJCQlCQzkwOTY0
QjEyNTU2MUJGMDAwODM3NTYgLyogVmVjdG9yQmFzaWMuY3BwICovLAogCQkJCTM3MjAwQjkxMTNB
MTYyMzAwMDdBNEZBRCAvKiBWZWN0b3JSZXZlcnNlLmNwcCAqLywKIAkJCSk7CkBAIC00NzEsNiAr
NDc0LDcgQEAKIAkJCQkzM0JFNUFGNTEzN0I1QTZDMDA3MDU4MTMgLyogTW91c2VNb3ZlQWZ0ZXJD
cmFzaC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMDQ1Rjk0NTEzODVDMkVBMDBDMEYzQ0QgLyog
RG93bmxvYWREZWNpZGVEZXN0aW5hdGlvbkNyYXNoLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTM3
MjAwQjkyMTNBMTYyMzAwMDdBNEZBRCAvKiBWZWN0b3JSZXZlcnNlLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCUMwMTM2M0M4MTNDMzk5NzMwMEVGMzk2NCAvKiBTdHJpbmdPcGVyYXRvcnMuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9T
dHJpbmdPcGVyYXRvcnMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5n
T3BlcmF0b3JzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43Mjc0NjQ3ODg5MDcyYmVkNmFjOGRmM2IxMmVjYWQ0
MTZjOGU3YjI4Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvU3RyaW5nT3BlcmF0b3JzLmNwcApAQCAtMCwwICsxLDEyNiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJUZXN0LmgiCisKKyNkZWZpbmUgSlNfRVhQT1JUREFUQQorI2RlZmluZSBXVEZfU1RS
SU5HVFlQRUFEQVBURVJfQ09QSUVEX1dURl9TVFJJTkcoKSAoKyt3dGZTdHJpbmdDb3B5Q291bnQp
CisKK3N0YXRpYyBpbnQgd3RmU3RyaW5nQ29weUNvdW50OworCisjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworI2RlZmlu
ZSBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUyhleHByLCBjb3VudCkgXAorICAgIGRvIHsgXAor
ICAgICAgICB3dGZTdHJpbmdDb3B5Q291bnQgPSAwOyBcCisgICAgICAgIFN0cmluZyBfX3Rlc3RT
dHJpbmcgPSBleHByOyBcCisgICAgICAgICh2b2lkKV9fdGVzdFN0cmluZzsgXAorICAgICAgICBF
WFBFQ1RfRVEoY291bnQsIHd0ZlN0cmluZ0NvcHlDb3VudCkgPDwgI2V4cHI7IFwKKyAgICB9IHdo
aWxlIChmYWxzZSkKKworVEVTVChXVEYsIFN0cmluZ09wZXJhdG9ycykKK3sKKyAgICBTdHJpbmcg
c3RyaW5nKCJTdHJpbmciKTsKKyAgICBBdG9taWNTdHJpbmcgYXRvbWljU3RyaW5nKCJBdG9taWNT
dHJpbmciKTsKKworICAgIEVYUEVDVF9FUSh3dGZTdHJpbmdDb3B5Q291bnQsIDApOworCisgICAg
RVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoc3RyaW5nICsgc3RyaW5nLCAyKTsKKyAgICBFWFBF
Q1RfTl9XVEZfU1RSSU5HX0NPUElFUyhzdHJpbmcgKyBhdG9taWNTdHJpbmcsIDIpOworICAgIEVY
UEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKGF0b21pY1N0cmluZyArIHN0cmluZywgMik7CisgICAg
RVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoYXRvbWljU3RyaW5nICsgYXRvbWljU3RyaW5nLCAy
KTsKKworICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKCJDIHN0cmluZyIgKyBzdHJpbmcs
IDEpOworICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKHN0cmluZyArICJDIHN0cmluZyIs
IDEpOworICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKCJDIHN0cmluZyIgKyBhdG9taWNT
dHJpbmcsIDEpOworICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKGF0b21pY1N0cmluZyAr
ICJDIHN0cmluZyIsIDEpOworCisgICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoIkMgc3Ry
aW5nIiArIHN0cmluZyArICJDIHN0cmluZyIgKyBzdHJpbmcsIDIpOworICAgIEVYUEVDVF9OX1dU
Rl9TVFJJTkdfQ09QSUVTKCJDIHN0cmluZyIgKyAoc3RyaW5nICsgIkMgc3RyaW5nIiArIHN0cmlu
ZyksIDIpOworICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKCgiQyBzdHJpbmciICsgc3Ry
aW5nKSArICgiQyBzdHJpbmciICsgc3RyaW5nKSwgMik7CisgICAgRVhQRUNUX05fV1RGX1NUUklO
R19DT1BJRVMoc3RyaW5nICsgIkMgc3RyaW5nIiArIHN0cmluZyArICJDIHN0cmluZyIsIDIpOwor
ICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKHN0cmluZyArICgiQyBzdHJpbmciICsgc3Ry
aW5nICsgIkMgc3RyaW5nIiksIDIpOworICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKChz
dHJpbmcgKyAiQyBzdHJpbmciKSArIChzdHJpbmcgKyAiQyBzdHJpbmciKSwgMik7CisKKyAgICBF
WFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygiQyBzdHJpbmciICsgYXRvbWljU3RyaW5nICsgIkMg
c3RyaW5nIiArIGF0b21pY1N0cmluZywgMik7CisgICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJ
RVMoIkMgc3RyaW5nIiArIChhdG9taWNTdHJpbmcgKyAiQyBzdHJpbmciICsgYXRvbWljU3RyaW5n
KSwgMik7CisgICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoKCJDIHN0cmluZyIgKyBhdG9t
aWNTdHJpbmcpICsgKCJDIHN0cmluZyIgKyBhdG9taWNTdHJpbmcpLCAyKTsKKyAgICBFWFBFQ1Rf
Tl9XVEZfU1RSSU5HX0NPUElFUyhhdG9taWNTdHJpbmcgKyAiQyBzdHJpbmciICsgYXRvbWljU3Ry
aW5nICsgIkMgc3RyaW5nIiwgMik7CisgICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoYXRv
bWljU3RyaW5nICsgKCJDIHN0cmluZyIgKyBhdG9taWNTdHJpbmcgKyAiQyBzdHJpbmciKSwgMik7
CisgICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoKGF0b21pY1N0cmluZyArICJDIHN0cmlu
ZyIpICsgKGF0b21pY1N0cmluZyArICJDIHN0cmluZyIpLCAyKTsKKworICAgIEVYUEVDVF9OX1dU
Rl9TVFJJTkdfQ09QSUVTKCJDIHN0cmluZyIgKyBzdHJpbmcgKyAiQyBzdHJpbmciICsgYXRvbWlj
U3RyaW5nLCAyKTsKKyAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygiQyBzdHJpbmciICsg
KHN0cmluZyArICJDIHN0cmluZyIgKyBhdG9taWNTdHJpbmcpLCAyKTsKKyAgICBFWFBFQ1RfTl9X
VEZfU1RSSU5HX0NPUElFUygoIkMgc3RyaW5nIiArIHN0cmluZykgKyAoIkMgc3RyaW5nIiArIGF0
b21pY1N0cmluZyksIDIpOworICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKHN0cmluZyAr
ICJDIHN0cmluZyIgKyBhdG9taWNTdHJpbmcgKyAiQyBzdHJpbmciLCAyKTsKKyAgICBFWFBFQ1Rf
Tl9XVEZfU1RSSU5HX0NPUElFUyhzdHJpbmcgKyAoIkMgc3RyaW5nIiArIGF0b21pY1N0cmluZyAr
ICJDIHN0cmluZyIpLCAyKTsKKyAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygoc3RyaW5n
ICsgIkMgc3RyaW5nIikgKyAoYXRvbWljU3RyaW5nICsgIkMgc3RyaW5nIiksIDIpOworCisgICAg
RVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoIkMgc3RyaW5nIiArIGF0b21pY1N0cmluZyArICJD
IHN0cmluZyIgKyBzdHJpbmcsIDIpOworICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKCJD
IHN0cmluZyIgKyAoYXRvbWljU3RyaW5nICsgIkMgc3RyaW5nIiArIHN0cmluZyksIDIpOworICAg
IEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKCgiQyBzdHJpbmciICsgYXRvbWljU3RyaW5nKSAr
ICgiQyBzdHJpbmciICsgc3RyaW5nKSwgMik7CisgICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJ
RVMoYXRvbWljU3RyaW5nICsgIkMgc3RyaW5nIiArIHN0cmluZyArICJDIHN0cmluZyIsIDIpOwor
ICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKGF0b21pY1N0cmluZyArICgiQyBzdHJpbmci
ICsgc3RyaW5nICsgIkMgc3RyaW5nIiksIDIpOworICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09Q
SUVTKChhdG9taWNTdHJpbmcgKyAiQyBzdHJpbmciKSArIChzdHJpbmcgKyAiQyBzdHJpbmciKSwg
Mik7CisKKyNpZiBDT01QSUxFUihNU1ZDKQorICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVT
KEwid2lkZSBzdHJpbmciICsgc3RyaW5nLCAxKTsKKyAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NP
UElFUyhzdHJpbmcgKyBMIndpZGUgc3RyaW5nIiwgMSk7CisgICAgRVhQRUNUX05fV1RGX1NUUklO
R19DT1BJRVMoTCJ3aWRlIHN0cmluZyIgKyBhdG9taWNTdHJpbmcsIDEpOworICAgIEVYUEVDVF9O
X1dURl9TVFJJTkdfQ09QSUVTKGF0b21pY1N0cmluZyArIEwid2lkZSBzdHJpbmciLCAxKTsKKwor
ICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKEwid2lkZSBzdHJpbmciICsgc3RyaW5nICsg
TCJ3aWRlIHN0cmluZyIgKyBzdHJpbmcsIDIpOworICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09Q
SUVTKEwid2lkZSBzdHJpbmciICsgKHN0cmluZyArIEwid2lkZSBzdHJpbmciICsgc3RyaW5nKSwg
Mik7CisgICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoKEwid2lkZSBzdHJpbmciICsgc3Ry
aW5nKSArIChMIndpZGUgc3RyaW5nIiArIHN0cmluZyksIDIpOworICAgIEVYUEVDVF9OX1dURl9T
VFJJTkdfQ09QSUVTKHN0cmluZyArIEwid2lkZSBzdHJpbmciICsgc3RyaW5nICsgTCJ3aWRlIHN0
cmluZyIsIDIpOworICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKHN0cmluZyArIChMIndp
ZGUgc3RyaW5nIiArIHN0cmluZyArIEwid2lkZSBzdHJpbmciKSwgMik7CisgICAgRVhQRUNUX05f
V1RGX1NUUklOR19DT1BJRVMoKHN0cmluZyArIEwid2lkZSBzdHJpbmciKSArIChzdHJpbmcgKyBM
IndpZGUgc3RyaW5nIiksIDIpOworCisgICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoTCJ3
aWRlIHN0cmluZyIgKyBhdG9taWNTdHJpbmcgKyBMIndpZGUgc3RyaW5nIiArIGF0b21pY1N0cmlu
ZywgMik7CisgICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoTCJ3aWRlIHN0cmluZyIgKyAo
YXRvbWljU3RyaW5nICsgTCJ3aWRlIHN0cmluZyIgKyBhdG9taWNTdHJpbmcpLCAyKTsKKyAgICBF
WFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygoTCJ3aWRlIHN0cmluZyIgKyBhdG9taWNTdHJpbmcp
ICsgKEwid2lkZSBzdHJpbmciICsgYXRvbWljU3RyaW5nKSwgMik7CisgICAgRVhQRUNUX05fV1RG
X1NUUklOR19DT1BJRVMoYXRvbWljU3RyaW5nICsgTCJ3aWRlIHN0cmluZyIgKyBhdG9taWNTdHJp
bmcgKyBMIndpZGUgc3RyaW5nIiwgMik7CisgICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMo
YXRvbWljU3RyaW5nICsgKEwid2lkZSBzdHJpbmciICsgYXRvbWljU3RyaW5nICsgTCJ3aWRlIHN0
cmluZyIpLCAyKTsKKyAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygoYXRvbWljU3RyaW5n
ICsgTCJ3aWRlIHN0cmluZyIpICsgKGF0b21pY1N0cmluZyArIEwid2lkZSBzdHJpbmciKSwgMik7
CisKKyAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUyhMIndpZGUgc3RyaW5nIiArIHN0cmlu
ZyArIEwid2lkZSBzdHJpbmciICsgYXRvbWljU3RyaW5nLCAyKTsKKyAgICBFWFBFQ1RfTl9XVEZf
U1RSSU5HX0NPUElFUyhMIndpZGUgc3RyaW5nIiArIChzdHJpbmcgKyBMIndpZGUgc3RyaW5nIiAr
IGF0b21pY1N0cmluZyksIDIpOworICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKChMIndp
ZGUgc3RyaW5nIiArIHN0cmluZykgKyAoTCJ3aWRlIHN0cmluZyIgKyBhdG9taWNTdHJpbmcpLCAy
KTsKKyAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUyhzdHJpbmcgKyBMIndpZGUgc3RyaW5n
IiArIGF0b21pY1N0cmluZyArIEwid2lkZSBzdHJpbmciLCAyKTsKKyAgICBFWFBFQ1RfTl9XVEZf
U1RSSU5HX0NPUElFUyhzdHJpbmcgKyAoTCJ3aWRlIHN0cmluZyIgKyBhdG9taWNTdHJpbmcgKyBM
IndpZGUgc3RyaW5nIiksIDIpOworICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKChzdHJp
bmcgKyBMIndpZGUgc3RyaW5nIikgKyAoYXRvbWljU3RyaW5nICsgTCJ3aWRlIHN0cmluZyIpLCAy
KTsKKworICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKEwid2lkZSBzdHJpbmciICsgYXRv
bWljU3RyaW5nICsgTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmcsIDIpOworICAgIEVYUEVDVF9OX1dU
Rl9TVFJJTkdfQ09QSUVTKEwid2lkZSBzdHJpbmciICsgKGF0b21pY1N0cmluZyArIEwid2lkZSBz
dHJpbmciICsgc3RyaW5nKSwgMik7CisgICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoKEwi
d2lkZSBzdHJpbmciICsgYXRvbWljU3RyaW5nKSArIChMIndpZGUgc3RyaW5nIiArIHN0cmluZyks
IDIpOworICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKGF0b21pY1N0cmluZyArIEwid2lk
ZSBzdHJpbmciICsgc3RyaW5nICsgTCJ3aWRlIHN0cmluZyIsIDIpOworICAgIEVYUEVDVF9OX1dU
Rl9TVFJJTkdfQ09QSUVTKGF0b21pY1N0cmluZyArIChMIndpZGUgc3RyaW5nIiArIHN0cmluZyAr
IEwid2lkZSBzdHJpbmciKSwgMik7CisgICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoKGF0
b21pY1N0cmluZyArIEwid2lkZSBzdHJpbmciKSArIChzdHJpbmcgKyBMIndpZGUgc3RyaW5nIiks
IDIpOworI2VuZGlmCit9CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvd2luL1Rlc3RXZWJLaXRBUEkudmNwcm9qIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS93aW4vVGVzdFdlYktpdEFQSS52Y3Byb2oKaW5kZXggMjA4OWI1OTVhMWY0
YTRiYTM0YzZiYWFkMjg4MDFiMDhhZjJiODlhNy4uMGEyODhiMDBlMmMyMjIyMDA1ZWJjMTg4YzRh
MGEyODU1NjcwY2JmMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS93aW4vVGVzdFdl
YktpdEFQSS52Y3Byb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS93aW4vVGVzdFdlYktpdEFQ
SS52Y3Byb2oKQEAgLTU4OCw2ICs1ODgsMTAgQEAKIAkJCQlOYW1lPSJXVEYiCiAJCQkJPgogCQkJ
CTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cVGVzdHNcV1RGXFN0cmluZ09wZXJhdG9ycy5j
cHAiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIu
LlxUZXN0c1xXVEZcVmVjdG9yQmFzaWMuY3BwIgogCQkJCQk+CiAJCQkJPC9GaWxlPgo=
</data>
<flag name="review"
          id="94284"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>