<?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>56323</bug_id>
          
          <creation_ts>2011-03-14 12:30:50 -0700</creation_ts>
          <short_desc>[Qt] Add a command line option to capture stdout and stderr for DumpRenderTree</short_desc>
          <delta_ts>2011-03-21 09:40:38 -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>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Qt, QtTriaged</keywords>
          <priority>P5</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Laszlo Gombos">laszlo.gombos</reporter>
          <assigned_to name="qi">qi.2.zhang</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>koshuin</cc>
    
    <cc>qi.2.zhang</cc>
    
    <cc>s.mathur</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>367131</commentid>
    <comment_count>0</comment_count>
    <who name="Laszlo Gombos">laszlo.gombos</who>
    <bug_when>2011-03-14 12:30:50 -0700</bug_when>
    <thetext>LayoutTests rely on redirecting stdout of the DumpRenderTree process. On Symbian redirecting stdout (and stderr) is quite an &quot;involved&quot; process (see http://wiki.forum.nokia.com/index.php/TSS001020_-_Open_C:_Redirecting_stdin_and_stdout_streams or http://qt.gitorious.org/qt/pages/SymbianFAQ).

It would be beneficial if the DumpRendertree executable for the Qt port would have a command line option to specify an outputfile (and perhaps an error file). This is in preparation for running LayoutTests on Symbian. I would recommend to add this option to all Qt supported platforms to make sure that the code is maintained, even though it seems that this is only useful/needed on Symbian.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>367665</commentid>
    <comment_count>1</comment_count>
      <attachid>85807</attachid>
    <who name="qi">qi.2.zhang</who>
    <bug_when>2011-03-15 08:19:11 -0700</bug_when>
    <thetext>Created attachment 85807
patch

Here is the proposal, welcome the comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>367760</commentid>
    <comment_count>2</comment_count>
    <who name="Siddharth Mathur">s.mathur</who>
    <bug_when>2011-03-15 10:36:11 -0700</bug_when>
    <thetext>Looks reasonable to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>368153</commentid>
    <comment_count>3</comment_count>
      <attachid>85807</attachid>
    <who name="Laszlo Gombos">laszlo.gombos</who>
    <bug_when>2011-03-15 20:04:07 -0700</bug_when>
    <thetext>Comment on attachment 85807
patch

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

Overall the patch looks great. r- to fix the build break.

&gt; Tools/ChangeLog:8
&gt; +        Provide an option for DumpRenderTree to redirect stdout and stderr.

This line does not seem to add information as it just repeats the bug title. Perhaps you should describe how the patch work in plain English.

&gt; Tools/DumpRenderTree/qt/DumpRenderTreeQt.cpp:684
&gt; +        freopen(qPrintable(m_redirectErrorFileName), &quot;w&quot;, stderr);

This does not build in my environment (Linux) - not sure why it passed on EWS. Fails with the following error:

DumpRenderTreeQt.cpp: In member function ‘void WebCore::DumpRenderTree::processArgsLine(const QStringList&amp;)’:
DumpRenderTreeQt.cpp:682: error: ignoring return value of ‘FILE* freopen(const char*, const char*, FILE*)’, declared with attribute warn_unused_result
DumpRenderTreeQt.cpp:684: error: ignoring return value of ‘FILE* freopen(const char*, const char*, FILE*)’, declared with attribute warn_unused_result

You can perhaps check the return value of the freopen call - if (freopen(qPrintable(m_redirectOutputFileName), &quot;w&quot;, stdout) == 0) {..}.

&gt; Tools/DumpRenderTree/qt/main.cpp:155
&gt;          qDebug() &lt;&lt; &quot;Or folder containing test files: DumpRenderTree [-v|--pixel-tests] dirpath&quot;;

I would prefer to have more error-handling for the command-line. It appears that &quot;DumpRenderTree -o FileName&quot; is crashing (as there is no test specified) without any warning.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>368322</commentid>
    <comment_count>4</comment_count>
      <attachid>85927</attachid>
    <who name="qi">qi.2.zhang</who>
    <bug_when>2011-03-16 07:30:39 -0700</bug_when>
    <thetext>Created attachment 85927
patch2

Changed the code based on the comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>368323</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-16 07:32:17 -0700</bug_when>
    <thetext>Attachment 85927 did not pass style-queue:

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

Tools/DumpRenderTree/qt/main.cpp:84:  Extra space for operator  ++;  [whitespace/operators] [4]
Total errors found: 1 in 4 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>368324</commentid>
    <comment_count>6</comment_count>
      <attachid>85928</attachid>
    <who name="qi">qi.2.zhang</who>
    <bug_when>2011-03-16 07:39:15 -0700</bug_when>
    <thetext>Created attachment 85928
patch3

fixed the style issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>368336</commentid>
    <comment_count>7</comment_count>
      <attachid>85928</attachid>
    <who name="qi">qi.2.zhang</who>
    <bug_when>2011-03-16 08:25:25 -0700</bug_when>
    <thetext>Comment on attachment 85928
patch3

find DumpRenderTree has 2 different way to call, current change may broke the run-webkit-tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>368481</commentid>
    <comment_count>8</comment_count>
      <attachid>85960</attachid>
    <who name="qi">qi.2.zhang</who>
    <bug_when>2011-03-16 13:16:21 -0700</bug_when>
    <thetext>Created attachment 85960
patch4

minor change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>368548</commentid>
    <comment_count>9</comment_count>
      <attachid>85960</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-03-16 14:33:10 -0700</bug_when>
    <thetext>Comment on attachment 85960
patch4

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

&gt; Tools/DumpRenderTree/qt/DumpRenderTreeQt.cpp:693
&gt; +    if (!m_redirectOutputFileName.isEmpty()) {
&gt; +        if (!freopen(qPrintable(m_redirectOutputFileName), &quot;w&quot;, stdout)) {
&gt; +            qDebug() &lt;&lt; &quot;Redirect STDOUT failed.&quot;;
&gt; +            return;
&gt; +        }
&gt; +    }
&gt; +    if (!m_redirectErrorFileName.isEmpty()) {
&gt; +        if (!freopen(qPrintable(m_redirectErrorFileName), &quot;w&quot;, stderr)) {
&gt; +            qDebug() &lt;&lt; &quot;Redirect STDERR failed.&quot;;
&gt; +            return;
&gt; +        }
&gt; +    }
&gt; +

This looks like a strange place to do this.

&gt; Tools/DumpRenderTree/qt/DumpRenderTreeQt.h:109
&gt; +    void setRedirectOutputFileName(const QString s) { m_redirectOutputFileName = s; }
&gt; +    void setRedirectErrorFileName(const QString s) { m_redirectErrorFileName = s; }

This should be ref to const.

&gt; Tools/DumpRenderTree/qt/main.cpp:73
&gt; +    if (++index &lt; arguments.count() &amp;&amp; !arguments.at(index).startsWith(&quot;-&quot;))

!arguments.at(index).startsWith(&quot;-&quot;)) -&gt; a filename can start with &quot;-&quot;... :)

The side effect with ++index is a bit ugly, you can do better.

&gt; Tools/DumpRenderTree/qt/main.cpp:87
&gt; +bool validOptions(QStringList&amp; args)
&gt; +{
&gt; +    int count = 0;
&gt; +
&gt; +    for (int i = 1; i &lt; args.size(); ++i)
&gt; +        if (!args.at(i).startsWith(&apos;-&apos;))
&gt; +            count++;
&gt; +
&gt; +    return count &gt;= 1;
&gt; +}

I don&apos;t follow here, at least the function name could be improved.

&gt; Tools/DumpRenderTree/qt/main.cpp:93
&gt; +    fflush(stderr);

Unecesary.

&gt; Tools/DumpRenderTree/qt/main.cpp:192
&gt; +    int outputIndex = args.indexOf(&quot;-o&quot;);
&gt; +    if (outputIndex != -1) 
&gt; +        dumper.setRedirectOutputFileName(takeOptionValue(args, outputIndex));
&gt; +
&gt; +    int errorIndex = args.indexOf(&quot;-e&quot;);
&gt; +    if (errorIndex != -1) 
&gt; +        dumper.setRedirectErrorFileName(takeOptionValue(args, errorIndex));
&gt; +

Maybe use long option name? -o and -e are not very intuitive.

You could use QLatin1String for the literals.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>369031</commentid>
    <comment_count>10</comment_count>
    <who name="qi">qi.2.zhang</who>
    <bug_when>2011-03-17 06:37:21 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 85960 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=85960&amp;action=review
&gt; 
&gt; &gt; Tools/DumpRenderTree/qt/DumpRenderTreeQt.cpp:693
&gt; &gt; +    if (!m_redirectOutputFileName.isEmpty()) {
&gt; &gt; +        if (!freopen(qPrintable(m_redirectOutputFileName), &quot;w&quot;, stdout)) {
&gt; &gt; +            qDebug() &lt;&lt; &quot;Redirect STDOUT failed.&quot;;
&gt; &gt; +            return;
&gt; &gt; +        }
&gt; &gt; +    }
&gt; &gt; +    if (!m_redirectErrorFileName.isEmpty()) {
&gt; &gt; +        if (!freopen(qPrintable(m_redirectErrorFileName), &quot;w&quot;, stderr)) {
&gt; &gt; +            qDebug() &lt;&lt; &quot;Redirect STDERR failed.&quot;;
&gt; &gt; +            return;
&gt; &gt; +        }
&gt; &gt; +    }
&gt; &gt; +
&gt; 
&gt; This looks like a strange place to do this.

Maybe I can do this at main.cpp, the reason I put the code here is in main.cpp I have no place to put the &quot;stop freopen&quot; code. I don&apos;t think main.cpp can connect to DumpRenderTreeQt&apos;s quit()??!! My purpose is to keep the start and stop in the same class.

&gt; 
&gt; &gt; Tools/DumpRenderTree/qt/DumpRenderTreeQt.h:109
&gt; &gt; +    void setRedirectOutputFileName(const QString s) { m_redirectOutputFileName = s; }
&gt; &gt; +    void setRedirectErrorFileName(const QString s) { m_redirectErrorFileName = s; }
&gt; 
&gt; This should be ref to const.
&gt; 
&gt; &gt; Tools/DumpRenderTree/qt/main.cpp:73
&gt; &gt; +    if (++index &lt; arguments.count() &amp;&amp; !arguments.at(index).startsWith(&quot;-&quot;))
&gt; 
&gt; !arguments.at(index).startsWith(&quot;-&quot;)) -&gt; a filename can start with &quot;-&quot;... :)

really? you mean &quot;-abc.html&quot; is a valid name? I copy this code from other place, actually in the main.cpp, this is a assumption that start with &quot;-&quot; should be a option like &quot;-v&quot;.

&gt; 
&gt; The side effect with ++index is a bit ugly, you can do better.
&gt; 
&gt; &gt; Tools/DumpRenderTree/qt/main.cpp:87
&gt; &gt; +bool validOptions(QStringList&amp; args)
&gt; &gt; +{
&gt; &gt; +    int count = 0;
&gt; &gt; +
&gt; &gt; +    for (int i = 1; i &lt; args.size(); ++i)
&gt; &gt; +        if (!args.at(i).startsWith(&apos;-&apos;))
&gt; &gt; +            count++;
&gt; &gt; +
&gt; &gt; +    return count &gt;= 1;
&gt; &gt; +}
&gt; 
&gt; I don&apos;t follow here, at least the function name could be improved.

DumpRenderTreeQt need at least one test case name (not start with &quot;-&quot;), the code here just check if we do have.

&gt; 
&gt; &gt; Tools/DumpRenderTree/qt/main.cpp:93
&gt; &gt; +    fflush(stderr);
&gt; 
&gt; Unecesary.

I found if I don&apos;t put fflush here, some time another stderr message (LEAK) just jump into my two print out, make it looks ugly.

&gt; 
&gt; &gt; Tools/DumpRenderTree/qt/main.cpp:192
&gt; &gt; +    int outputIndex = args.indexOf(&quot;-o&quot;);
&gt; &gt; +    if (outputIndex != -1) 
&gt; &gt; +        dumper.setRedirectOutputFileName(takeOptionValue(args, outputIndex));
&gt; &gt; +
&gt; &gt; +    int errorIndex = args.indexOf(&quot;-e&quot;);
&gt; &gt; +    if (errorIndex != -1) 
&gt; &gt; +        dumper.setRedirectErrorFileName(takeOptionValue(args, errorIndex));
&gt; &gt; +
&gt; 
&gt; Maybe use long option name? -o and -e are not very intuitive.
&gt; 
&gt; You could use QLatin1String for the literals.

Maybe you like : -stdout and -stderr</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>369214</commentid>
    <comment_count>11</comment_count>
      <attachid>86079</attachid>
    <who name="qi">qi.2.zhang</who>
    <bug_when>2011-03-17 12:24:00 -0700</bug_when>
    <thetext>Created attachment 86079
patch5

Change based on discussion with Laszlo and comments from Benjamin.

1. Make the redirect work for standalone mode and &quot;-&quot; mode.
2. Because 1, I move the code for starting redirect into main.cpp.
3. Changed DumpRenderTreeQt.h based on Benjanmin&apos;s comments.
4. Based Benjanmin&apos;s comments, &quot;-bac.html&quot; is valid test case name. The assumption to get test case name is wrong, I make a function to identify the option name, then all the others will be consider as valid option value.
5. Changed the redirection option name as &quot;--stdout&quot; and &quot;--stderr&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>369769</commentid>
    <comment_count>12</comment_count>
      <attachid>86189</attachid>
    <who name="qi">qi.2.zhang</who>
    <bug_when>2011-03-18 11:53:34 -0700</bug_when>
    <thetext>Created attachment 86189
patch6

Do some improvement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>369771</commentid>
    <comment_count>13</comment_count>
      <attachid>86191</attachid>
    <who name="qi">qi.2.zhang</who>
    <bug_when>2011-03-18 11:57:43 -0700</bug_when>
    <thetext>Created attachment 86191
patch6

sorry, upload wrong patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>369949</commentid>
    <comment_count>14</comment_count>
      <attachid>86191</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-03-18 15:21:25 -0700</bug_when>
    <thetext>Comment on attachment 86191
patch6

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

&gt; Tools/DumpRenderTree/qt/DumpRenderTreeQt.h:108
&gt; +    void setRedirectOutputFileName(const QString&amp; s) { m_redirectOutputFileName = s; }

name would be more descriptive than s

Also, please check whether we use Filename or FileName in Qt APIs. I believe we use the former.

&gt; Tools/DumpRenderTree/qt/main.cpp:79
&gt; +// Get the option value and remove the option and value from arguments list

I dont think this comment is needed. The code is very condense and easy to understand and the method name is also quite descriptive

&gt; Tools/DumpRenderTree/qt/main.cpp:201
&gt; +            fprintf(stderr, &quot;Redirect STDOUT failed.&quot;);

stdout redirection failed. - Redirection of stdout failed.

&gt; Tools/DumpRenderTree/qt/main.cpp:202
&gt; +            exit(0);

Isn&apos;t that an error?

&gt; Tools/DumpRenderTree/qt/main.cpp:228
&gt; +            // Go to read STDIN

Comments like this one are not that useful and might end up bitrotting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370346</commentid>
    <comment_count>15</comment_count>
      <attachid>86314</attachid>
    <who name="qi">qi.2.zhang</who>
    <bug_when>2011-03-21 06:23:04 -0700</bug_when>
    <thetext>Created attachment 86314
patch7

Change based on comment 14.

I found in qwebpage.h used &quot;FileName&quot;, so I didn&apos;t change my code (see the first comment is comment 14)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370397</commentid>
    <comment_count>16</comment_count>
      <attachid>86314</attachid>
    <who name="Laszlo Gombos">laszlo.gombos</who>
    <bug_when>2011-03-21 08:40:50 -0700</bug_when>
    <thetext>Comment on attachment 86314
patch7

r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370421</commentid>
    <comment_count>17</comment_count>
      <attachid>86314</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-03-21 09:40:32 -0700</bug_when>
    <thetext>Comment on attachment 86314
patch7

Clearing flags on attachment: 86314

Committed r81588: &lt;http://trac.webkit.org/changeset/81588&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370422</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-03-21 09:40:38 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>85807</attachid>
            <date>2011-03-15 08:19:11 -0700</date>
            <delta_ts>2011-03-16 07:30:39 -0700</delta_ts>
            <desc>patch</desc>
            <filename>bug56323.patch</filename>
            <type>text/plain</type>
            <size>4444</size>
            <attacher name="qi">qi.2.zhang</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDgxMTM2KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjIgQEAKKzIwMTEtMDMtMTUgIFFpIFpoYW5nICA8cWkuMi56aGFuZ0Bub2tpYS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1F0XSBBZGQg
YSBjb21tYW5kIGxpbmUgb3B0aW9uIHRvIGNhcHR1cmUgc3Rkb3V0IGFuZCBzdGRlcnIgZm9yIER1
bXBSZW5kZXJUcmVlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD01NjMyMworCisgICAgICAgIFByb3ZpZGUgYW4gb3B0aW9uIGZvciBEdW1wUmVuZGVyVHJl
ZSB0byByZWRpcmVjdCBzdGRvdXQgYW5kIHN0ZGVyci4KKworICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL3F0L0R1bXBSZW5kZXJUcmVlUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHVtcFJlbmRl
clRyZWU6On5EdW1wUmVuZGVyVHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpEdW1wUmVuZGVyVHJl
ZTo6cHJvY2Vzc0FyZ3NMaW5lKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVu
ZGVyVHJlZVF0Lmg6CisgICAgICAgIChXZWJDb3JlOjpEdW1wUmVuZGVyVHJlZTo6c2V0UmVkaXJl
Y3RPdXRwdXRGaWxlTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpEdW1wUmVuZGVyVHJlZTo6c2V0
UmVkaXJlY3RFcnJvckZpbGVOYW1lKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9tYWlu
LmNwcDoKKyAgICAgICAgKHRha2VPcHRpb25WYWx1ZSk6CisgICAgICAgIChtYWluKToKKwogMjAx
MS0wMy0xNSAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVl
L3F0L0R1bXBSZW5kZXJUcmVlUXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJU
cmVlL3F0L0R1bXBSZW5kZXJUcmVlUXQuY3BwCShyZXZpc2lvbiA4MTA0NCkKKysrIFRvb2xzL0R1
bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlUXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
OTksNiArNDk5LDEwIEBAIER1bXBSZW5kZXJUcmVlOjpEdW1wUmVuZGVyVHJlZSgpCiAKIER1bXBS
ZW5kZXJUcmVlOjp+RHVtcFJlbmRlclRyZWUoKQogeworICAgIGlmICghbV9yZWRpcmVjdE91dHB1
dEZpbGVOYW1lLmlzRW1wdHkoKSkKKyAgICAgICAgZmNsb3NlKHN0ZG91dCk7CisgICAgaWYgKCFt
X3JlZGlyZWN0RXJyb3JGaWxlTmFtZS5pc0VtcHR5KCkpCisgICAgICAgIGZjbG9zZShzdGRlcnIp
OwogICAgIGRlbGV0ZSBtX21haW5WaWV3OwogICAgIGRlbGV0ZSBtX3N0ZGluOwogICAgIER1bXBS
ZW5kZXJUcmVlU3VwcG9ydFF0OjpyZW1vdmVNb2NrRGV2aWNlT3JpZW50YXRpb24oKTsKQEAgLTY3
NCw2ICs2NzgsMTEgQEAgdm9pZCBEdW1wUmVuZGVyVHJlZTo6cmVhZExpbmUoKQogCiB2b2lkIER1
bXBSZW5kZXJUcmVlOjpwcm9jZXNzQXJnc0xpbmUoY29uc3QgUVN0cmluZ0xpc3QgJmFyZ3MpCiB7
CisgICAgaWYgKCFtX3JlZGlyZWN0T3V0cHV0RmlsZU5hbWUuaXNFbXB0eSgpKQorICAgICAgICBm
cmVvcGVuKHFQcmludGFibGUobV9yZWRpcmVjdE91dHB1dEZpbGVOYW1lKSwgInciLCBzdGRvdXQp
OworICAgIGlmICghbV9yZWRpcmVjdEVycm9yRmlsZU5hbWUuaXNFbXB0eSgpKQorICAgICAgICBm
cmVvcGVuKHFQcmludGFibGUobV9yZWRpcmVjdEVycm9yRmlsZU5hbWUpLCAidyIsIHN0ZGVycik7
CisKICAgICBzZXRTdGFuZEFsb25lTW9kZSh0cnVlKTsKIAogICAgIGZvciAoaW50IGkgPSAxOyBp
IDwgYXJncy5zaXplKCk7ICsraSkKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0R1bXBS
ZW5kZXJUcmVlUXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1w
UmVuZGVyVHJlZVF0LmgJKHJldmlzaW9uIDgxMDQ0KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUv
cXQvRHVtcFJlbmRlclRyZWVRdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDUsNiArMTA1LDggQEAg
cHVibGljOgogICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemVGb250cygpOwogI2VuZGlmCiAgICAg
dm9pZCBwcm9jZXNzQXJnc0xpbmUoY29uc3QgUVN0cmluZ0xpc3QmKTsKKyAgICB2b2lkIHNldFJl
ZGlyZWN0T3V0cHV0RmlsZU5hbWUoY29uc3QgUVN0cmluZyBzKSB7IG1fcmVkaXJlY3RPdXRwdXRG
aWxlTmFtZSA9IHM7IH0KKyAgICB2b2lkIHNldFJlZGlyZWN0RXJyb3JGaWxlTmFtZShjb25zdCBR
U3RyaW5nIHMpIHsgbV9yZWRpcmVjdEVycm9yRmlsZU5hbWUgPSBzOyB9CiAKIHB1YmxpYyBRX1NM
T1RTOgogICAgIHZvaWQgaW5pdEpTT2JqZWN0cygpOwpAQCAtMTYwLDYgKzE2Miw4IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBtX3N0YW5kQWxvbmVNb2RlOwogICAgIGJvb2wgbV9ncmFwaGljc0Jhc2Vk
OwogICAgIFFTdHJpbmcgbV9wZXJzaXN0ZW50U3RvcmFnZVBhdGg7CisgICAgUVN0cmluZyBtX3Jl
ZGlyZWN0T3V0cHV0RmlsZU5hbWU7CisgICAgUVN0cmluZyBtX3JlZGlyZWN0RXJyb3JGaWxlTmFt
ZTsKIH07CiAKIGNsYXNzIE5ldHdvcmtBY2Nlc3NNYW5hZ2VyIDogcHVibGljIFFOZXR3b3JrQWNj
ZXNzTWFuYWdlciB7CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9tYWluLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9tYWluLmNwcAkocmV2aXNpb24gODEw
NDQpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9tYWluLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjcsNiArNjcsMTQgQEAgdm9pZCBtZXNzYWdlSGFuZGxlcihRdE1zZ1R5cGUgdHlwZSwgY29u
cwogICAgIC8vIGRvIG5vdGhpbmcKIH0KIAorUVN0cmluZyB0YWtlT3B0aW9uVmFsdWUoUVN0cmlu
Z0xpc3QmIGFyZ3VtZW50cywgaW50IGluZGV4KQoreworICAgIFFTdHJpbmcgcmVzdWx0OworICAg
IGlmICgrK2luZGV4IDwgYXJndW1lbnRzLmNvdW50KCkgJiYgIWFyZ3VtZW50cy5hdChpbmRleCku
c3RhcnRzV2l0aCgiLSIpKQorICAgICAgICByZXN1bHQgPSBhcmd1bWVudHMudGFrZUF0KGluZGV4
KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiBRU3RyaW5nIGdldF9iYWNrdHJhY2UoKSB7CiAg
ICAgUVN0cmluZyBzOwogCkBAIC0xNDMsNyArMTUxLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNo
YXIqIGFyZ3ZbXSkKIAogICAgIFFTdHJpbmdMaXN0IGFyZ3MgPSBhcHAuYXJndW1lbnRzKCk7CiAg
ICAgaWYgKGFyZ3MuY291bnQoKSA8IDIpIHsKLSAgICAgICAgcURlYnVnKCkgPDwgIlVzYWdlOiBE
dW1wUmVuZGVyVHJlZSBbLXZ8LS1waXhlbC10ZXN0c10gZmlsZW5hbWUgW2ZpbGVuYW1lMi4ubl0i
OworICAgICAgICBxRGVidWcoKSA8PCAiVXNhZ2U6IER1bXBSZW5kZXJUcmVlIFstdnwtLXBpeGVs
LXRlc3RzXSBbLW8gb3V0cHV0X2ZpbGVuYW1lXSBbLWUgZXJyb3JfZmlsZW5hbWVdIGZpbGVuYW1l
IFtmaWxlbmFtZTIuLm5dIjsKICAgICAgICAgcURlYnVnKCkgPDwgIk9yIGZvbGRlciBjb250YWlu
aW5nIHRlc3QgZmlsZXM6IER1bXBSZW5kZXJUcmVlIFstdnwtLXBpeGVsLXRlc3RzXSBkaXJwYXRo
IjsKICAgICAgICAgZXhpdCgwKTsKICAgICB9CkBAIC0xNTcsNiArMTY1LDE0IEBAIGludCBtYWlu
KGludCBhcmdjLCBjaGFyKiBhcmd2W10pCiAgICAgaWYgKGFyZ3MuY29udGFpbnMoUUxhdGluMVN0
cmluZygiLS1waXhlbC10ZXN0cyIpKSkKICAgICAgICAgZHVtcGVyLnNldER1bXBQaXhlbHModHJ1
ZSk7CiAKKyAgICBpbnQgb3V0cHV0SW5kZXggPSBhcmdzLmluZGV4T2YoIi1vIik7CisgICAgaWYg
KG91dHB1dEluZGV4ICE9IC0xKSAKKyAgICAgICAgZHVtcGVyLnNldFJlZGlyZWN0T3V0cHV0Rmls
ZU5hbWUodGFrZU9wdGlvblZhbHVlKGFyZ3MsIG91dHB1dEluZGV4KSk7CisKKyAgICBpbnQgZXJy
b3JJbmRleCA9IGFyZ3MuaW5kZXhPZigiLWUiKTsKKyAgICBpZiAoZXJyb3JJbmRleCAhPSAtMSkg
CisgICAgICAgIGR1bXBlci5zZXRSZWRpcmVjdEVycm9yRmlsZU5hbWUodGFrZU9wdGlvblZhbHVl
KGFyZ3MsIGVycm9ySW5kZXgpKTsKKwogICAgIFFXZWJEYXRhYmFzZTo6cmVtb3ZlQWxsRGF0YWJh
c2VzKCk7CiAKICAgICBpZiAoYXJncy5jb250YWlucyhRTGF0aW4xU3RyaW5nKCItIikpKSB7Cg==
</data>
<flag name="review"
          id="77988"
          type_id="1"
          status="-"
          setter="laszlo.gombos"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>85927</attachid>
            <date>2011-03-16 07:30:39 -0700</date>
            <delta_ts>2011-03-16 07:39:15 -0700</delta_ts>
            <desc>patch2</desc>
            <filename>bug56323_2.patch</filename>
            <type>text/plain</type>
            <size>5286</size>
            <attacher name="qi">qi.2.zhang</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDgxMjQwKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjQgQEAKKzIwMTEtMDMtMTYgIFFpIFpoYW5nICA8cWkuMi56aGFuZ0Bub2tpYS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1F0XSBBZGQg
YSBjb21tYW5kIGxpbmUgb3B0aW9uIHRvIGNhcHR1cmUgc3Rkb3V0IGFuZCBzdGRlcnIgZm9yIER1
bXBSZW5kZXJUcmVlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD01NjMyMworCisgICAgICAgIFVzaW5nIGZyZW9wZW4gdG8gcmVkaXJlY3QgU1RET1VUIGFu
ZCBTVERFUlIgd2hlbiBEdW1wUmVuZGVyVHJlZSBjb21tYW5kIGxpbmUgcHJvdmlkZSAKKyAgICAg
ICAgIi1vIiBvciAiLWUiIG9wdGlvbi4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L0R1
bXBSZW5kZXJUcmVlUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHVtcFJlbmRlclRyZWU6On5E
dW1wUmVuZGVyVHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpEdW1wUmVuZGVyVHJlZTo6cHJvY2Vz
c0FyZ3NMaW5lKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZVF0
Lmg6CisgICAgICAgIChXZWJDb3JlOjpEdW1wUmVuZGVyVHJlZTo6c2V0UmVkaXJlY3RPdXRwdXRG
aWxlTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpEdW1wUmVuZGVyVHJlZTo6c2V0UmVkaXJlY3RF
cnJvckZpbGVOYW1lKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9tYWluLmNwcDoKKyAg
ICAgICAgKHRha2VPcHRpb25WYWx1ZSk6CisgICAgICAgICh2YWxpZE9wdGlvbnMpOgorICAgICAg
ICAobWFpbik6CisKIDIwMTEtMDMtMTUgIEhheWF0byBJdG8gIDxoYXlhdG9AY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IE9qYW4gVmFmYWkuCkluZGV4OiBUb29scy9EdW1wUmVu
ZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZVF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1w
UmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZVF0LmNwcAkocmV2aXNpb24gODEwNDQpCisrKyBU
b29scy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZVF0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDk5LDYgKzQ5OSwxMCBAQCBEdW1wUmVuZGVyVHJlZTo6RHVtcFJlbmRlclRyZWUoKQog
CiBEdW1wUmVuZGVyVHJlZTo6fkR1bXBSZW5kZXJUcmVlKCkKIHsKKyAgICBpZiAoIW1fcmVkaXJl
Y3RPdXRwdXRGaWxlTmFtZS5pc0VtcHR5KCkpCisgICAgICAgIGZjbG9zZShzdGRvdXQpOworICAg
IGlmICghbV9yZWRpcmVjdEVycm9yRmlsZU5hbWUuaXNFbXB0eSgpKQorICAgICAgICBmY2xvc2Uo
c3RkZXJyKTsKICAgICBkZWxldGUgbV9tYWluVmlldzsKICAgICBkZWxldGUgbV9zdGRpbjsKICAg
ICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6cmVtb3ZlTW9ja0RldmljZU9yaWVudGF0aW9uKCk7
CkBAIC02NzQsNiArNjc4LDE4IEBAIHZvaWQgRHVtcFJlbmRlclRyZWU6OnJlYWRMaW5lKCkKIAog
dm9pZCBEdW1wUmVuZGVyVHJlZTo6cHJvY2Vzc0FyZ3NMaW5lKGNvbnN0IFFTdHJpbmdMaXN0ICZh
cmdzKQogeworICAgIGlmICghbV9yZWRpcmVjdE91dHB1dEZpbGVOYW1lLmlzRW1wdHkoKSkgewor
ICAgICAgICBpZiAoIWZyZW9wZW4ocVByaW50YWJsZShtX3JlZGlyZWN0T3V0cHV0RmlsZU5hbWUp
LCAidyIsIHN0ZG91dCkpIHsKKyAgICAgICAgICAgIHFEZWJ1ZygpIDw8ICJSZWRpcmVjdCBTVERP
VVQgZmFpbGVkLiI7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisgICAg
aWYgKCFtX3JlZGlyZWN0RXJyb3JGaWxlTmFtZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKCFm
cmVvcGVuKHFQcmludGFibGUobV9yZWRpcmVjdEVycm9yRmlsZU5hbWUpLCAidyIsIHN0ZGVycikp
IHsKKyAgICAgICAgICAgIHFEZWJ1ZygpIDw8ICJSZWRpcmVjdCBTVERFUlIgZmFpbGVkLiI7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CiAgICAgc2V0U3RhbmRBbG9uZU1v
ZGUodHJ1ZSk7CiAKICAgICBmb3IgKGludCBpID0gMTsgaSA8IGFyZ3Muc2l6ZSgpOyArK2kpCklu
ZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZVF0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWVRdC5oCShyZXZpc2lv
biA4MTA0NCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlUXQuaAko
d29ya2luZyBjb3B5KQpAQCAtMTA1LDYgKzEwNSw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9p
ZCBpbml0aWFsaXplRm9udHMoKTsKICNlbmRpZgogICAgIHZvaWQgcHJvY2Vzc0FyZ3NMaW5lKGNv
bnN0IFFTdHJpbmdMaXN0Jik7CisgICAgdm9pZCBzZXRSZWRpcmVjdE91dHB1dEZpbGVOYW1lKGNv
bnN0IFFTdHJpbmcgcykgeyBtX3JlZGlyZWN0T3V0cHV0RmlsZU5hbWUgPSBzOyB9CisgICAgdm9p
ZCBzZXRSZWRpcmVjdEVycm9yRmlsZU5hbWUoY29uc3QgUVN0cmluZyBzKSB7IG1fcmVkaXJlY3RF
cnJvckZpbGVOYW1lID0gczsgfQogCiBwdWJsaWMgUV9TTE9UUzoKICAgICB2b2lkIGluaXRKU09i
amVjdHMoKTsKQEAgLTE2MCw2ICsxNjIsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9zdGFuZEFs
b25lTW9kZTsKICAgICBib29sIG1fZ3JhcGhpY3NCYXNlZDsKICAgICBRU3RyaW5nIG1fcGVyc2lz
dGVudFN0b3JhZ2VQYXRoOworICAgIFFTdHJpbmcgbV9yZWRpcmVjdE91dHB1dEZpbGVOYW1lOwor
ICAgIFFTdHJpbmcgbV9yZWRpcmVjdEVycm9yRmlsZU5hbWU7CiB9OwogCiBjbGFzcyBOZXR3b3Jr
QWNjZXNzTWFuYWdlciA6IHB1YmxpYyBRTmV0d29ya0FjY2Vzc01hbmFnZXIgewpJbmRleDogVG9v
bHMvRHVtcFJlbmRlclRyZWUvcXQvbWFpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJl
bmRlclRyZWUvcXQvbWFpbi5jcHAJKHJldmlzaW9uIDgxMDQ0KQorKysgVG9vbHMvRHVtcFJlbmRl
clRyZWUvcXQvbWFpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3LDYgKzY3LDI1IEBAIHZvaWQg
bWVzc2FnZUhhbmRsZXIoUXRNc2dUeXBlIHR5cGUsIGNvbnMKICAgICAvLyBkbyBub3RoaW5nCiB9
CiAKK1FTdHJpbmcgdGFrZU9wdGlvblZhbHVlKFFTdHJpbmdMaXN0JiBhcmd1bWVudHMsIGludCBp
bmRleCkKK3sKKyAgICBRU3RyaW5nIHJlc3VsdDsKKyAgICBpZiAoKytpbmRleCA8IGFyZ3VtZW50
cy5jb3VudCgpICYmICFhcmd1bWVudHMuYXQoaW5kZXgpLnN0YXJ0c1dpdGgoIi0iKSkKKyAgICAg
ICAgcmVzdWx0ID0gYXJndW1lbnRzLnRha2VBdChpbmRleCk7CisgICAgcmV0dXJuIHJlc3VsdDsK
K30KKworYm9vbCB2YWxpZE9wdGlvbnMoUVN0cmluZ0xpc3QmIGFyZ3MpCit7CisgICAgaW50IGNv
dW50ID0gMDsKKworICAgIGZvciAoaW50IGkgPSAxOyBpIDwgYXJncy5zaXplKCk7ICsraSkKKyAg
ICAgICAgaWYgKCFhcmdzLmF0KGkpLnN0YXJ0c1dpdGgoJy0nKSkKKyAgICAgICAgICAgIGNvdW50
ICsrOworCisgICAgcmV0dXJuIGNvdW50ID49IDE7Cit9CisKIFFTdHJpbmcgZ2V0X2JhY2t0cmFj
ZSgpIHsKICAgICBRU3RyaW5nIHM7CiAKQEAgLTE0Miw4ICsxNjEsMjMgQEAgaW50IG1haW4oaW50
IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkKICNlbmRpZgogCiAgICAgUVN0cmluZ0xpc3QgYXJncyA9IGFw
cC5hcmd1bWVudHMoKTsKLSAgICBpZiAoYXJncy5jb3VudCgpIDwgMikgewotICAgICAgICBxRGVi
dWcoKSA8PCAiVXNhZ2U6IER1bXBSZW5kZXJUcmVlIFstdnwtLXBpeGVsLXRlc3RzXSBmaWxlbmFt
ZSBbZmlsZW5hbWUyLi5uXSI7CisKKyAgICBXZWJDb3JlOjpEdW1wUmVuZGVyVHJlZSBkdW1wZXI7
CisKKyAgICBpZiAoYXJncy5jb250YWlucyhRTGF0aW4xU3RyaW5nKCItLXBpeGVsLXRlc3RzIikp
KQorICAgICAgICBkdW1wZXIuc2V0RHVtcFBpeGVscyh0cnVlKTsKKworICAgIGludCBvdXRwdXRJ
bmRleCA9IGFyZ3MuaW5kZXhPZigiLW8iKTsKKyAgICBpZiAob3V0cHV0SW5kZXggIT0gLTEpIAor
ICAgICAgICBkdW1wZXIuc2V0UmVkaXJlY3RPdXRwdXRGaWxlTmFtZSh0YWtlT3B0aW9uVmFsdWUo
YXJncywgb3V0cHV0SW5kZXgpKTsKKworICAgIGludCBlcnJvckluZGV4ID0gYXJncy5pbmRleE9m
KCItZSIpOworICAgIGlmIChlcnJvckluZGV4ICE9IC0xKSAKKyAgICAgICAgZHVtcGVyLnNldFJl
ZGlyZWN0RXJyb3JGaWxlTmFtZSh0YWtlT3B0aW9uVmFsdWUoYXJncywgZXJyb3JJbmRleCkpOwor
CisgICAgLy8gQmVmb3JlIHN0YXJ0IHByb2Nlc3MgYXJncywgY2hlY2sgdGhlIGNvbW1hbmQgb3B0
aW9uIGlzIHZhbGlkCisgICAgaWYgKCF2YWxpZE9wdGlvbnMoYXJncykpIHsKKyAgICAgICAgcURl
YnVnKCkgPDwgIlVzYWdlOiBEdW1wUmVuZGVyVHJlZSBbLXZ8LS1waXhlbC10ZXN0c10gWy1vIG91
dHB1dF9maWxlbmFtZV0gWy1lIGVycm9yX2ZpbGVuYW1lXSBmaWxlbmFtZSBbZmlsZW5hbWUyLi5u
XSI7CiAgICAgICAgIHFEZWJ1ZygpIDw8ICJPciBmb2xkZXIgY29udGFpbmluZyB0ZXN0IGZpbGVz
OiBEdW1wUmVuZGVyVHJlZSBbLXZ8LS1waXhlbC10ZXN0c10gZGlycGF0aCI7CiAgICAgICAgIGV4
aXQoMCk7CiAgICAgfQpAQCAtMTUyLDExICsxODYsNiBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hh
ciogYXJndltdKQogICAgIGlmICghYXJncy5jb250YWlucyhRTGF0aW4xU3RyaW5nKCItdiIpKSkK
ICAgICAgICAgcUluc3RhbGxNc2dIYW5kbGVyKG1lc3NhZ2VIYW5kbGVyKTsKIAotICAgIFdlYkNv
cmU6OkR1bXBSZW5kZXJUcmVlIGR1bXBlcjsKLQotICAgIGlmIChhcmdzLmNvbnRhaW5zKFFMYXRp
bjFTdHJpbmcoIi0tcGl4ZWwtdGVzdHMiKSkpCi0gICAgICAgIGR1bXBlci5zZXREdW1wUGl4ZWxz
KHRydWUpOwotCiAgICAgUVdlYkRhdGFiYXNlOjpyZW1vdmVBbGxEYXRhYmFzZXMoKTsKIAogICAg
IGlmIChhcmdzLmNvbnRhaW5zKFFMYXRpbjFTdHJpbmcoIi0iKSkpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>85928</attachid>
            <date>2011-03-16 07:39:15 -0700</date>
            <delta_ts>2011-03-16 13:16:21 -0700</delta_ts>
            <desc>patch3</desc>
            <filename>bug56323_3.patch</filename>
            <type>text/plain</type>
            <size>5285</size>
            <attacher name="qi">qi.2.zhang</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDgxMjQwKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjQgQEAKKzIwMTEtMDMtMTYgIFFpIFpoYW5nICA8cWkuMi56aGFuZ0Bub2tpYS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1F0XSBBZGQg
YSBjb21tYW5kIGxpbmUgb3B0aW9uIHRvIGNhcHR1cmUgc3Rkb3V0IGFuZCBzdGRlcnIgZm9yIER1
bXBSZW5kZXJUcmVlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD01NjMyMworCisgICAgICAgIFVzaW5nIGZyZW9wZW4gdG8gcmVkaXJlY3QgU1RET1VUIGFu
ZCBTVERFUlIgd2hlbiBEdW1wUmVuZGVyVHJlZSBjb21tYW5kIGxpbmUgcHJvdmlkZSAKKyAgICAg
ICAgIi1vIiBvciAiLWUiIG9wdGlvbi4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L0R1
bXBSZW5kZXJUcmVlUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHVtcFJlbmRlclRyZWU6On5E
dW1wUmVuZGVyVHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpEdW1wUmVuZGVyVHJlZTo6cHJvY2Vz
c0FyZ3NMaW5lKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZVF0
Lmg6CisgICAgICAgIChXZWJDb3JlOjpEdW1wUmVuZGVyVHJlZTo6c2V0UmVkaXJlY3RPdXRwdXRG
aWxlTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpEdW1wUmVuZGVyVHJlZTo6c2V0UmVkaXJlY3RF
cnJvckZpbGVOYW1lKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9tYWluLmNwcDoKKyAg
ICAgICAgKHRha2VPcHRpb25WYWx1ZSk6CisgICAgICAgICh2YWxpZE9wdGlvbnMpOgorICAgICAg
ICAobWFpbik6CisKIDIwMTEtMDMtMTUgIEhheWF0byBJdG8gIDxoYXlhdG9AY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IE9qYW4gVmFmYWkuCkluZGV4OiBUb29scy9EdW1wUmVu
ZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZVF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1w
UmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZVF0LmNwcAkocmV2aXNpb24gODEwNDQpCisrKyBU
b29scy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZVF0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDk5LDYgKzQ5OSwxMCBAQCBEdW1wUmVuZGVyVHJlZTo6RHVtcFJlbmRlclRyZWUoKQog
CiBEdW1wUmVuZGVyVHJlZTo6fkR1bXBSZW5kZXJUcmVlKCkKIHsKKyAgICBpZiAoIW1fcmVkaXJl
Y3RPdXRwdXRGaWxlTmFtZS5pc0VtcHR5KCkpCisgICAgICAgIGZjbG9zZShzdGRvdXQpOworICAg
IGlmICghbV9yZWRpcmVjdEVycm9yRmlsZU5hbWUuaXNFbXB0eSgpKQorICAgICAgICBmY2xvc2Uo
c3RkZXJyKTsKICAgICBkZWxldGUgbV9tYWluVmlldzsKICAgICBkZWxldGUgbV9zdGRpbjsKICAg
ICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6cmVtb3ZlTW9ja0RldmljZU9yaWVudGF0aW9uKCk7
CkBAIC02NzQsNiArNjc4LDE4IEBAIHZvaWQgRHVtcFJlbmRlclRyZWU6OnJlYWRMaW5lKCkKIAog
dm9pZCBEdW1wUmVuZGVyVHJlZTo6cHJvY2Vzc0FyZ3NMaW5lKGNvbnN0IFFTdHJpbmdMaXN0ICZh
cmdzKQogeworICAgIGlmICghbV9yZWRpcmVjdE91dHB1dEZpbGVOYW1lLmlzRW1wdHkoKSkgewor
ICAgICAgICBpZiAoIWZyZW9wZW4ocVByaW50YWJsZShtX3JlZGlyZWN0T3V0cHV0RmlsZU5hbWUp
LCAidyIsIHN0ZG91dCkpIHsKKyAgICAgICAgICAgIHFEZWJ1ZygpIDw8ICJSZWRpcmVjdCBTVERP
VVQgZmFpbGVkLiI7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisgICAg
aWYgKCFtX3JlZGlyZWN0RXJyb3JGaWxlTmFtZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKCFm
cmVvcGVuKHFQcmludGFibGUobV9yZWRpcmVjdEVycm9yRmlsZU5hbWUpLCAidyIsIHN0ZGVycikp
IHsKKyAgICAgICAgICAgIHFEZWJ1ZygpIDw8ICJSZWRpcmVjdCBTVERFUlIgZmFpbGVkLiI7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CiAgICAgc2V0U3RhbmRBbG9uZU1v
ZGUodHJ1ZSk7CiAKICAgICBmb3IgKGludCBpID0gMTsgaSA8IGFyZ3Muc2l6ZSgpOyArK2kpCklu
ZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZVF0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWVRdC5oCShyZXZpc2lv
biA4MTA0NCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlUXQuaAko
d29ya2luZyBjb3B5KQpAQCAtMTA1LDYgKzEwNSw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9p
ZCBpbml0aWFsaXplRm9udHMoKTsKICNlbmRpZgogICAgIHZvaWQgcHJvY2Vzc0FyZ3NMaW5lKGNv
bnN0IFFTdHJpbmdMaXN0Jik7CisgICAgdm9pZCBzZXRSZWRpcmVjdE91dHB1dEZpbGVOYW1lKGNv
bnN0IFFTdHJpbmcgcykgeyBtX3JlZGlyZWN0T3V0cHV0RmlsZU5hbWUgPSBzOyB9CisgICAgdm9p
ZCBzZXRSZWRpcmVjdEVycm9yRmlsZU5hbWUoY29uc3QgUVN0cmluZyBzKSB7IG1fcmVkaXJlY3RF
cnJvckZpbGVOYW1lID0gczsgfQogCiBwdWJsaWMgUV9TTE9UUzoKICAgICB2b2lkIGluaXRKU09i
amVjdHMoKTsKQEAgLTE2MCw2ICsxNjIsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9zdGFuZEFs
b25lTW9kZTsKICAgICBib29sIG1fZ3JhcGhpY3NCYXNlZDsKICAgICBRU3RyaW5nIG1fcGVyc2lz
dGVudFN0b3JhZ2VQYXRoOworICAgIFFTdHJpbmcgbV9yZWRpcmVjdE91dHB1dEZpbGVOYW1lOwor
ICAgIFFTdHJpbmcgbV9yZWRpcmVjdEVycm9yRmlsZU5hbWU7CiB9OwogCiBjbGFzcyBOZXR3b3Jr
QWNjZXNzTWFuYWdlciA6IHB1YmxpYyBRTmV0d29ya0FjY2Vzc01hbmFnZXIgewpJbmRleDogVG9v
bHMvRHVtcFJlbmRlclRyZWUvcXQvbWFpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJl
bmRlclRyZWUvcXQvbWFpbi5jcHAJKHJldmlzaW9uIDgxMDQ0KQorKysgVG9vbHMvRHVtcFJlbmRl
clRyZWUvcXQvbWFpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3LDYgKzY3LDI1IEBAIHZvaWQg
bWVzc2FnZUhhbmRsZXIoUXRNc2dUeXBlIHR5cGUsIGNvbnMKICAgICAvLyBkbyBub3RoaW5nCiB9
CiAKK1FTdHJpbmcgdGFrZU9wdGlvblZhbHVlKFFTdHJpbmdMaXN0JiBhcmd1bWVudHMsIGludCBp
bmRleCkKK3sKKyAgICBRU3RyaW5nIHJlc3VsdDsKKyAgICBpZiAoKytpbmRleCA8IGFyZ3VtZW50
cy5jb3VudCgpICYmICFhcmd1bWVudHMuYXQoaW5kZXgpLnN0YXJ0c1dpdGgoIi0iKSkKKyAgICAg
ICAgcmVzdWx0ID0gYXJndW1lbnRzLnRha2VBdChpbmRleCk7CisgICAgcmV0dXJuIHJlc3VsdDsK
K30KKworYm9vbCB2YWxpZE9wdGlvbnMoUVN0cmluZ0xpc3QmIGFyZ3MpCit7CisgICAgaW50IGNv
dW50ID0gMDsKKworICAgIGZvciAoaW50IGkgPSAxOyBpIDwgYXJncy5zaXplKCk7ICsraSkKKyAg
ICAgICAgaWYgKCFhcmdzLmF0KGkpLnN0YXJ0c1dpdGgoJy0nKSkKKyAgICAgICAgICAgIGNvdW50
Kys7CisKKyAgICByZXR1cm4gY291bnQgPj0gMTsKK30KKwogUVN0cmluZyBnZXRfYmFja3RyYWNl
KCkgewogICAgIFFTdHJpbmcgczsKIApAQCAtMTQyLDggKzE2MSwyMyBAQCBpbnQgbWFpbihpbnQg
YXJnYywgY2hhciogYXJndltdKQogI2VuZGlmCiAKICAgICBRU3RyaW5nTGlzdCBhcmdzID0gYXBw
LmFyZ3VtZW50cygpOwotICAgIGlmIChhcmdzLmNvdW50KCkgPCAyKSB7Ci0gICAgICAgIHFEZWJ1
ZygpIDw8ICJVc2FnZTogRHVtcFJlbmRlclRyZWUgWy12fC0tcGl4ZWwtdGVzdHNdIGZpbGVuYW1l
IFtmaWxlbmFtZTIuLm5dIjsKKworICAgIFdlYkNvcmU6OkR1bXBSZW5kZXJUcmVlIGR1bXBlcjsK
KworICAgIGlmIChhcmdzLmNvbnRhaW5zKFFMYXRpbjFTdHJpbmcoIi0tcGl4ZWwtdGVzdHMiKSkp
CisgICAgICAgIGR1bXBlci5zZXREdW1wUGl4ZWxzKHRydWUpOworCisgICAgaW50IG91dHB1dElu
ZGV4ID0gYXJncy5pbmRleE9mKCItbyIpOworICAgIGlmIChvdXRwdXRJbmRleCAhPSAtMSkgCisg
ICAgICAgIGR1bXBlci5zZXRSZWRpcmVjdE91dHB1dEZpbGVOYW1lKHRha2VPcHRpb25WYWx1ZShh
cmdzLCBvdXRwdXRJbmRleCkpOworCisgICAgaW50IGVycm9ySW5kZXggPSBhcmdzLmluZGV4T2Yo
Ii1lIik7CisgICAgaWYgKGVycm9ySW5kZXggIT0gLTEpIAorICAgICAgICBkdW1wZXIuc2V0UmVk
aXJlY3RFcnJvckZpbGVOYW1lKHRha2VPcHRpb25WYWx1ZShhcmdzLCBlcnJvckluZGV4KSk7CisK
KyAgICAvLyBCZWZvcmUgc3RhcnQgcHJvY2VzcyBhcmdzLCBjaGVjayB0aGUgY29tbWFuZCBvcHRp
b24gaXMgdmFsaWQKKyAgICBpZiAoIXZhbGlkT3B0aW9ucyhhcmdzKSkgeworICAgICAgICBxRGVi
dWcoKSA8PCAiVXNhZ2U6IER1bXBSZW5kZXJUcmVlIFstdnwtLXBpeGVsLXRlc3RzXSBbLW8gb3V0
cHV0X2ZpbGVuYW1lXSBbLWUgZXJyb3JfZmlsZW5hbWVdIGZpbGVuYW1lIFtmaWxlbmFtZTIuLm5d
IjsKICAgICAgICAgcURlYnVnKCkgPDwgIk9yIGZvbGRlciBjb250YWluaW5nIHRlc3QgZmlsZXM6
IER1bXBSZW5kZXJUcmVlIFstdnwtLXBpeGVsLXRlc3RzXSBkaXJwYXRoIjsKICAgICAgICAgZXhp
dCgwKTsKICAgICB9CkBAIC0xNTIsMTEgKzE4Niw2IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFy
KiBhcmd2W10pCiAgICAgaWYgKCFhcmdzLmNvbnRhaW5zKFFMYXRpbjFTdHJpbmcoIi12IikpKQog
ICAgICAgICBxSW5zdGFsbE1zZ0hhbmRsZXIobWVzc2FnZUhhbmRsZXIpOwogCi0gICAgV2ViQ29y
ZTo6RHVtcFJlbmRlclRyZWUgZHVtcGVyOwotCi0gICAgaWYgKGFyZ3MuY29udGFpbnMoUUxhdGlu
MVN0cmluZygiLS1waXhlbC10ZXN0cyIpKSkKLSAgICAgICAgZHVtcGVyLnNldER1bXBQaXhlbHMo
dHJ1ZSk7Ci0KICAgICBRV2ViRGF0YWJhc2U6OnJlbW92ZUFsbERhdGFiYXNlcygpOwogCiAgICAg
aWYgKGFyZ3MuY29udGFpbnMoUUxhdGluMVN0cmluZygiLSIpKSkgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>85960</attachid>
            <date>2011-03-16 13:16:21 -0700</date>
            <delta_ts>2011-03-17 12:24:00 -0700</delta_ts>
            <desc>patch4</desc>
            <filename>bug56323_4.patch</filename>
            <type>text/plain</type>
            <size>5462</size>
            <attacher name="qi">qi.2.zhang</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDgxMjQwKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjQgQEAKKzIwMTEtMDMtMTYgIFFpIFpoYW5nICA8cWkuMi56aGFuZ0Bub2tpYS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1F0XSBBZGQg
YSBjb21tYW5kIGxpbmUgb3B0aW9uIHRvIGNhcHR1cmUgc3Rkb3V0IGFuZCBzdGRlcnIgZm9yIER1
bXBSZW5kZXJUcmVlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD01NjMyMworCisgICAgICAgIFVzaW5nIGZyZW9wZW4gdG8gcmVkaXJlY3QgU1RET1VUIGFu
ZCBTVERFUlIgd2hlbiBEdW1wUmVuZGVyVHJlZSBjb21tYW5kIGxpbmUgcHJvdmlkZSAKKyAgICAg
ICAgIi1vIiBvciAiLWUiIG9wdGlvbi4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L0R1
bXBSZW5kZXJUcmVlUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHVtcFJlbmRlclRyZWU6On5E
dW1wUmVuZGVyVHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpEdW1wUmVuZGVyVHJlZTo6cHJvY2Vz
c0FyZ3NMaW5lKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZVF0
Lmg6CisgICAgICAgIChXZWJDb3JlOjpEdW1wUmVuZGVyVHJlZTo6c2V0UmVkaXJlY3RPdXRwdXRG
aWxlTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpEdW1wUmVuZGVyVHJlZTo6c2V0UmVkaXJlY3RF
cnJvckZpbGVOYW1lKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9tYWluLmNwcDoKKyAg
ICAgICAgKHRha2VPcHRpb25WYWx1ZSk6CisgICAgICAgICh2YWxpZE9wdGlvbnMpOgorICAgICAg
ICAobWFpbik6CisKIDIwMTEtMDMtMTUgIEhheWF0byBJdG8gIDxoYXlhdG9AY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IE9qYW4gVmFmYWkuCkluZGV4OiBUb29scy9EdW1wUmVu
ZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZVF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1w
UmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZVF0LmNwcAkocmV2aXNpb24gODEwNDQpCisrKyBU
b29scy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZVF0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDk5LDYgKzQ5OSwxMCBAQCBEdW1wUmVuZGVyVHJlZTo6RHVtcFJlbmRlclRyZWUoKQog
CiBEdW1wUmVuZGVyVHJlZTo6fkR1bXBSZW5kZXJUcmVlKCkKIHsKKyAgICBpZiAoIW1fcmVkaXJl
Y3RPdXRwdXRGaWxlTmFtZS5pc0VtcHR5KCkpCisgICAgICAgIGZjbG9zZShzdGRvdXQpOworICAg
IGlmICghbV9yZWRpcmVjdEVycm9yRmlsZU5hbWUuaXNFbXB0eSgpKQorICAgICAgICBmY2xvc2Uo
c3RkZXJyKTsKICAgICBkZWxldGUgbV9tYWluVmlldzsKICAgICBkZWxldGUgbV9zdGRpbjsKICAg
ICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6cmVtb3ZlTW9ja0RldmljZU9yaWVudGF0aW9uKCk7
CkBAIC02NzQsNiArNjc4LDE5IEBAIHZvaWQgRHVtcFJlbmRlclRyZWU6OnJlYWRMaW5lKCkKIAog
dm9pZCBEdW1wUmVuZGVyVHJlZTo6cHJvY2Vzc0FyZ3NMaW5lKGNvbnN0IFFTdHJpbmdMaXN0ICZh
cmdzKQogeworICAgIGlmICghbV9yZWRpcmVjdE91dHB1dEZpbGVOYW1lLmlzRW1wdHkoKSkgewor
ICAgICAgICBpZiAoIWZyZW9wZW4ocVByaW50YWJsZShtX3JlZGlyZWN0T3V0cHV0RmlsZU5hbWUp
LCAidyIsIHN0ZG91dCkpIHsKKyAgICAgICAgICAgIHFEZWJ1ZygpIDw8ICJSZWRpcmVjdCBTVERP
VVQgZmFpbGVkLiI7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisgICAg
aWYgKCFtX3JlZGlyZWN0RXJyb3JGaWxlTmFtZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKCFm
cmVvcGVuKHFQcmludGFibGUobV9yZWRpcmVjdEVycm9yRmlsZU5hbWUpLCAidyIsIHN0ZGVycikp
IHsKKyAgICAgICAgICAgIHFEZWJ1ZygpIDw8ICJSZWRpcmVjdCBTVERFUlIgZmFpbGVkLiI7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKICAgICBzZXRTdGFuZEFsb25l
TW9kZSh0cnVlKTsKIAogICAgIGZvciAoaW50IGkgPSAxOyBpIDwgYXJncy5zaXplKCk7ICsraSkK
SW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlUXQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZVF0LmgJKHJldmlz
aW9uIDgxMDQ0KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWVRdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDUsNiArMTA1LDggQEAgcHVibGljOgogICAgIHN0YXRpYyB2
b2lkIGluaXRpYWxpemVGb250cygpOwogI2VuZGlmCiAgICAgdm9pZCBwcm9jZXNzQXJnc0xpbmUo
Y29uc3QgUVN0cmluZ0xpc3QmKTsKKyAgICB2b2lkIHNldFJlZGlyZWN0T3V0cHV0RmlsZU5hbWUo
Y29uc3QgUVN0cmluZyBzKSB7IG1fcmVkaXJlY3RPdXRwdXRGaWxlTmFtZSA9IHM7IH0KKyAgICB2
b2lkIHNldFJlZGlyZWN0RXJyb3JGaWxlTmFtZShjb25zdCBRU3RyaW5nIHMpIHsgbV9yZWRpcmVj
dEVycm9yRmlsZU5hbWUgPSBzOyB9CiAKIHB1YmxpYyBRX1NMT1RTOgogICAgIHZvaWQgaW5pdEpT
T2JqZWN0cygpOwpAQCAtMTYwLDYgKzE2Miw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3N0YW5k
QWxvbmVNb2RlOwogICAgIGJvb2wgbV9ncmFwaGljc0Jhc2VkOwogICAgIFFTdHJpbmcgbV9wZXJz
aXN0ZW50U3RvcmFnZVBhdGg7CisgICAgUVN0cmluZyBtX3JlZGlyZWN0T3V0cHV0RmlsZU5hbWU7
CisgICAgUVN0cmluZyBtX3JlZGlyZWN0RXJyb3JGaWxlTmFtZTsKIH07CiAKIGNsYXNzIE5ldHdv
cmtBY2Nlc3NNYW5hZ2VyIDogcHVibGljIFFOZXR3b3JrQWNjZXNzTWFuYWdlciB7CkluZGV4OiBU
b29scy9EdW1wUmVuZGVyVHJlZS9xdC9tYWluLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1w
UmVuZGVyVHJlZS9xdC9tYWluLmNwcAkocmV2aXNpb24gODEwNDQpCisrKyBUb29scy9EdW1wUmVu
ZGVyVHJlZS9xdC9tYWluLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcsNiArNjcsMzIgQEAgdm9p
ZCBtZXNzYWdlSGFuZGxlcihRdE1zZ1R5cGUgdHlwZSwgY29ucwogICAgIC8vIGRvIG5vdGhpbmcK
IH0KIAorUVN0cmluZyB0YWtlT3B0aW9uVmFsdWUoUVN0cmluZ0xpc3QmIGFyZ3VtZW50cywgaW50
IGluZGV4KQoreworICAgIFFTdHJpbmcgcmVzdWx0OworICAgIGlmICgrK2luZGV4IDwgYXJndW1l
bnRzLmNvdW50KCkgJiYgIWFyZ3VtZW50cy5hdChpbmRleCkuc3RhcnRzV2l0aCgiLSIpKQorICAg
ICAgICByZXN1bHQgPSBhcmd1bWVudHMudGFrZUF0KGluZGV4KTsKKyAgICByZXR1cm4gcmVzdWx0
OworfQorCitib29sIHZhbGlkT3B0aW9ucyhRU3RyaW5nTGlzdCYgYXJncykKK3sKKyAgICBpbnQg
Y291bnQgPSAwOworCisgICAgZm9yIChpbnQgaSA9IDE7IGkgPCBhcmdzLnNpemUoKTsgKytpKQor
ICAgICAgICBpZiAoIWFyZ3MuYXQoaSkuc3RhcnRzV2l0aCgnLScpKQorICAgICAgICAgICAgY291
bnQrKzsKKworICAgIHJldHVybiBjb3VudCA+PSAxOworfQorCit2b2lkIHByaW50VXNhZ2UoKQor
eworICAgIGZwcmludGYoc3RkZXJyLCAiVXNhZ2U6IER1bXBSZW5kZXJUcmVlIFstdnwtLXBpeGVs
LXRlc3RzXSBbLW8gb3V0cHV0X2ZpbGVuYW1lXSBbLWUgZXJyb3JfZmlsZW5hbWVdIGZpbGVuYW1l
IFtmaWxlbmFtZTIuLm5dXG4iKTsKKyAgICBmcHJpbnRmKHN0ZGVyciwgIk9yIGZvbGRlciBjb250
YWluaW5nIHRlc3QgZmlsZXM6IER1bXBSZW5kZXJUcmVlIFstdnwtLXBpeGVsLXRlc3RzXSBkaXJw
YXRoXG4iKTsKKyAgICBmZmx1c2goc3RkZXJyKTsKK30KKwogUVN0cmluZyBnZXRfYmFja3RyYWNl
KCkgewogICAgIFFTdHJpbmcgczsKIApAQCAtMTQzLDggKzE2OSw3IEBAIGludCBtYWluKGludCBh
cmdjLCBjaGFyKiBhcmd2W10pCiAKICAgICBRU3RyaW5nTGlzdCBhcmdzID0gYXBwLmFyZ3VtZW50
cygpOwogICAgIGlmIChhcmdzLmNvdW50KCkgPCAyKSB7Ci0gICAgICAgIHFEZWJ1ZygpIDw8ICJV
c2FnZTogRHVtcFJlbmRlclRyZWUgWy12fC0tcGl4ZWwtdGVzdHNdIGZpbGVuYW1lIFtmaWxlbmFt
ZTIuLm5dIjsKLSAgICAgICAgcURlYnVnKCkgPDwgIk9yIGZvbGRlciBjb250YWluaW5nIHRlc3Qg
ZmlsZXM6IER1bXBSZW5kZXJUcmVlIFstdnwtLXBpeGVsLXRlc3RzXSBkaXJwYXRoIjsKKyAgICAg
ICAgcHJpbnRVc2FnZSgpOwogICAgICAgICBleGl0KDApOwogICAgIH0KIApAQCAtMTU3LDE0ICsx
ODIsMjcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkKICAgICBpZiAoYXJncy5j
b250YWlucyhRTGF0aW4xU3RyaW5nKCItLXBpeGVsLXRlc3RzIikpKQogICAgICAgICBkdW1wZXIu
c2V0RHVtcFBpeGVscyh0cnVlKTsKIAorICAgIGludCBvdXRwdXRJbmRleCA9IGFyZ3MuaW5kZXhP
ZigiLW8iKTsKKyAgICBpZiAob3V0cHV0SW5kZXggIT0gLTEpIAorICAgICAgICBkdW1wZXIuc2V0
UmVkaXJlY3RPdXRwdXRGaWxlTmFtZSh0YWtlT3B0aW9uVmFsdWUoYXJncywgb3V0cHV0SW5kZXgp
KTsKKworICAgIGludCBlcnJvckluZGV4ID0gYXJncy5pbmRleE9mKCItZSIpOworICAgIGlmIChl
cnJvckluZGV4ICE9IC0xKSAKKyAgICAgICAgZHVtcGVyLnNldFJlZGlyZWN0RXJyb3JGaWxlTmFt
ZSh0YWtlT3B0aW9uVmFsdWUoYXJncywgZXJyb3JJbmRleCkpOworCiAgICAgUVdlYkRhdGFiYXNl
OjpyZW1vdmVBbGxEYXRhYmFzZXMoKTsKIAogICAgIGlmIChhcmdzLmNvbnRhaW5zKFFMYXRpbjFT
dHJpbmcoIi0iKSkpIHsKICAgICAgICAgUU9iamVjdDo6Y29ubmVjdCgmZHVtcGVyLCBTSUdOQUwo
cmVhZHkoKSksICZkdW1wZXIsIFNMT1QocmVhZExpbmUoKSksIFF0OjpRdWV1ZWRDb25uZWN0aW9u
KTsKICAgICAgICAgUVRpbWVyOjpzaW5nbGVTaG90KDAsICZkdW1wZXIsIFNMT1QocmVhZExpbmUo
KSkpOwotICAgIH0gZWxzZQorICAgIH0gZWxzZSB7CisgICAgICAgIGlmICghdmFsaWRPcHRpb25z
KGFyZ3MpKSB7CisgICAgICAgICAgICBwcmludFVzYWdlKCk7CisgICAgICAgICAgICBleGl0KDAp
OworICAgICAgICB9CiAgICAgICAgIGR1bXBlci5wcm9jZXNzQXJnc0xpbmUoYXJncyk7CiAKKyAg
ICB9CiAgICAgcmV0dXJuIGFwcC5leGVjKCk7CiAKICNpZmRlZiBRX1dTX1gxMQo=
</data>
<flag name="review"
          id="78164"
          type_id="1"
          status="-"
          setter="benjamin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86079</attachid>
            <date>2011-03-17 12:24:00 -0700</date>
            <delta_ts>2011-03-18 11:53:34 -0700</delta_ts>
            <desc>patch5</desc>
            <filename>bug56323_5.patch</filename>
            <type>text/plain</type>
            <size>7545</size>
            <attacher name="qi">qi.2.zhang</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDgxMzc1KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjYgQEAKKzIwMTEtMDMtMTcgIFFpIFpoYW5nICA8cWkuMi56aGFuZ0Bub2tpYS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1F0XSBBZGQg
YSBjb21tYW5kIGxpbmUgb3B0aW9uIHRvIGNhcHR1cmUgc3Rkb3V0IGFuZCBzdGRlcnIgZm9yIER1
bXBSZW5kZXJUcmVlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD01NjMyMworCisgICAgICAgIFVzaW5nIGZyZW9wZW4gdG8gcmVkaXJlY3QgU1RET1VUIGFu
ZCBTVERFUlIgd2hlbiBEdW1wUmVuZGVyVHJlZSBjb21tYW5kIGxpbmUgcHJvdmlkZSAKKyAgICAg
ICAgIi0tc3Rkb3V0IiBvciAiLS1zdGRlcnIiIG9wdGlvbi4KKworICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHVtcFJl
bmRlclRyZWU6On5EdW1wUmVuZGVyVHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpEdW1wUmVuZGVy
VHJlZTo6cHJvY2Vzc0FyZ3NMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkR1bXBSZW5kZXJUcmVl
Ojpsb2FkTmV4dFRlc3RJblN0YW5kQWxvbmVNb2RlKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9xdC9EdW1wUmVuZGVyVHJlZVF0Lmg6CisgICAgICAgIChXZWJDb3JlOjpEdW1wUmVuZGVyVHJl
ZTo6c2V0UmVkaXJlY3RPdXRwdXRGaWxlTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpEdW1wUmVu
ZGVyVHJlZTo6c2V0UmVkaXJlY3RFcnJvckZpbGVOYW1lKToKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9xdC9tYWluLmNwcDoKKyAgICAgICAgKGlzT3B0aW9uKToKKyAgICAgICAgKHRha2VPcHRp
b25WYWx1ZSk6CisgICAgICAgIChwcmludFVzYWdlKToKKyAgICAgICAgKG1haW4pOgorCiAyMDEx
LTAzLTE3ICBNaWtoYWlsIE5hZ2Fub3YgIDxtbmFnYW5vdkBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgWXVyeSBTZW1pa2hhdHNreS4KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJU
cmVlL3F0L0R1bXBSZW5kZXJUcmVlUXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlUXQuY3BwCShyZXZpc2lvbiA4MTA0NCkKKysrIFRvb2xz
L0R1bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlUXQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00OTksNiArNDk5LDEwIEBAIER1bXBSZW5kZXJUcmVlOjpEdW1wUmVuZGVyVHJlZSgpCiAKIER1
bXBSZW5kZXJUcmVlOjp+RHVtcFJlbmRlclRyZWUoKQogeworICAgIGlmICghbV9yZWRpcmVjdE91
dHB1dEZpbGVOYW1lLmlzRW1wdHkoKSkKKyAgICAgICAgZmNsb3NlKHN0ZG91dCk7CisgICAgaWYg
KCFtX3JlZGlyZWN0RXJyb3JGaWxlTmFtZS5pc0VtcHR5KCkpCisgICAgICAgIGZjbG9zZShzdGRl
cnIpOwogICAgIGRlbGV0ZSBtX21haW5WaWV3OwogICAgIGRlbGV0ZSBtX3N0ZGluOwogICAgIER1
bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpyZW1vdmVNb2NrRGV2aWNlT3JpZW50YXRpb24oKTsKQEAg
LTY3Nyw4ICs2ODEsNyBAQCB2b2lkIER1bXBSZW5kZXJUcmVlOjpwcm9jZXNzQXJnc0xpbmUoY29u
CiAgICAgc2V0U3RhbmRBbG9uZU1vZGUodHJ1ZSk7CiAKICAgICBmb3IgKGludCBpID0gMTsgaSA8
IGFyZ3Muc2l6ZSgpOyArK2kpCi0gICAgICAgIGlmICghYXJncy5hdChpKS5zdGFydHNXaXRoKCct
JykpCi0gICAgICAgICAgICBtX3N0YW5kQWxvbmVNb2RlVGVzdExpc3QuYXBwZW5kKGFyZ3NbaV0p
OworICAgICAgICBtX3N0YW5kQWxvbmVNb2RlVGVzdExpc3QuYXBwZW5kKGFyZ3NbaV0pOwogCiAg
ICAgUUZpbGVJbmZvIGZpcnN0RW50cnkobV9zdGFuZEFsb25lTW9kZVRlc3RMaXN0LmZpcnN0KCkp
OwogICAgIGlmIChmaXJzdEVudHJ5LmlzRGlyKCkpIHsKQEAgLTY5MCwxMSArNjkzLDEyIEBAIHZv
aWQgRHVtcFJlbmRlclRyZWU6OnByb2Nlc3NBcmdzTGluZShjb24KICAgICAgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBtX3N0YW5kQWxvbmVNb2RlVGVzdExpc3Quc2l6ZSgpOyArK2kpCiAgICAgICAg
ICAgICBtX3N0YW5kQWxvbmVNb2RlVGVzdExpc3RbaV0gPSBmb2xkZXJFbnRyeS5hYnNvbHV0ZUZp
bGVQYXRoKG1fc3RhbmRBbG9uZU1vZGVUZXN0TGlzdFtpXSk7CiAgICAgfQotCi0gICAgcHJvY2Vz
c0xpbmUobV9zdGFuZEFsb25lTW9kZVRlc3RMaXN0LmZpcnN0KCkpOwotICAgIG1fc3RhbmRBbG9u
ZU1vZGVUZXN0TGlzdC5yZW1vdmVGaXJzdCgpOwotCiAgICAgY29ubmVjdCh0aGlzLCBTSUdOQUwo
cmVhZHkoKSksIHRoaXMsIFNMT1QobG9hZE5leHRUZXN0SW5TdGFuZEFsb25lTW9kZSgpKSk7CisK
KyAgICBpZiAoIW1fc3RhbmRBbG9uZU1vZGVUZXN0TGlzdC5pc0VtcHR5KCkpIHsKKyAgICAgICAg
UVN0cmluZyBmaXJzdCA9IG1fc3RhbmRBbG9uZU1vZGVUZXN0TGlzdC50YWtlRmlyc3QoKTsKKyAg
ICAgICAgcHJvY2Vzc0xpbmUoZmlyc3QpOworICAgIH0KIH0KIAogdm9pZCBEdW1wUmVuZGVyVHJl
ZTo6bG9hZE5leHRUZXN0SW5TdGFuZEFsb25lTW9kZSgpCkBAIC03MDMsOSArNzA3LDEwIEBAIHZv
aWQgRHVtcFJlbmRlclRyZWU6OmxvYWROZXh0VGVzdEluU3RhbmQKICAgICAgICAgZW1pdCBxdWl0
KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0KLSAgICBwcm9jZXNzTGluZShtX3N0YW5kQWxv
bmVNb2RlVGVzdExpc3QuZmlyc3QoKSk7Ci0gICAgbV9zdGFuZEFsb25lTW9kZVRlc3RMaXN0LnJl
bW92ZUZpcnN0KCk7CisgICAgaWYgKCFtX3N0YW5kQWxvbmVNb2RlVGVzdExpc3QuaXNFbXB0eSgp
KSB7CisgICAgICAgIFFTdHJpbmcgZmlyc3QgPSBtX3N0YW5kQWxvbmVNb2RlVGVzdExpc3QudGFr
ZUZpcnN0KCk7CisgICAgICAgIHByb2Nlc3NMaW5lKGZpcnN0KTsKKyAgICB9CiB9CiAKIHZvaWQg
RHVtcFJlbmRlclRyZWU6OnByb2Nlc3NMaW5lKGNvbnN0IFFTdHJpbmcgJmlucHV0KQpJbmRleDog
VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWVRdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlUXQuaAkocmV2aXNpb24gODEw
NDQpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZVF0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTEwNSw2ICsxMDUsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgaW5p
dGlhbGl6ZUZvbnRzKCk7CiAjZW5kaWYKICAgICB2b2lkIHByb2Nlc3NBcmdzTGluZShjb25zdCBR
U3RyaW5nTGlzdCYpOworICAgIHZvaWQgc2V0UmVkaXJlY3RPdXRwdXRGaWxlTmFtZShjb25zdCBR
U3RyaW5nJiBzKSB7IG1fcmVkaXJlY3RPdXRwdXRGaWxlTmFtZSA9IHM7IH0KKyAgICB2b2lkIHNl
dFJlZGlyZWN0RXJyb3JGaWxlTmFtZShjb25zdCBRU3RyaW5nJiBzKSB7IG1fcmVkaXJlY3RFcnJv
ckZpbGVOYW1lID0gczsgfQogCiBwdWJsaWMgUV9TTE9UUzoKICAgICB2b2lkIGluaXRKU09iamVj
dHMoKTsKQEAgLTE2MCw2ICsxNjIsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9zdGFuZEFsb25l
TW9kZTsKICAgICBib29sIG1fZ3JhcGhpY3NCYXNlZDsKICAgICBRU3RyaW5nIG1fcGVyc2lzdGVu
dFN0b3JhZ2VQYXRoOworICAgIFFTdHJpbmcgbV9yZWRpcmVjdE91dHB1dEZpbGVOYW1lOworICAg
IFFTdHJpbmcgbV9yZWRpcmVjdEVycm9yRmlsZU5hbWU7CiB9OwogCiBjbGFzcyBOZXR3b3JrQWNj
ZXNzTWFuYWdlciA6IHB1YmxpYyBRTmV0d29ya0FjY2Vzc01hbmFnZXIgewpJbmRleDogVG9vbHMv
RHVtcFJlbmRlclRyZWUvcXQvbWFpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRl
clRyZWUvcXQvbWFpbi5jcHAJKHJldmlzaW9uIDgxMDQ0KQorKysgVG9vbHMvRHVtcFJlbmRlclRy
ZWUvcXQvbWFpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3LDYgKzY3LDM0IEBAIHZvaWQgbWVz
c2FnZUhhbmRsZXIoUXRNc2dUeXBlIHR5cGUsIGNvbnMKICAgICAvLyBkbyBub3RoaW5nCiB9CiAK
Ky8vIFdlIG9ubHkgc3VwcG9ydCAtdiBvciAtLXBpeGVsLXRlc3RzIG9yIC0tc3Rkb3V0IG9yIC0t
c3RkZXJyIG9yIC0sIGFsbCB0aGUgb3RoZXJzIHdpbGwgYmUgCisvLyBwYXNzIGFzIHRlc3QgY2Fz
ZSBuYW1lIChldmVuIC1hYmMuaHRtbCBpcyBhIHZhbGlkIHRlc3QgY2FzZSBuYW1lKQorYm9vbCBp
c09wdGlvbihjb25zdCBRU3RyaW5nJiBzdHIpCit7CisgICAgcmV0dXJuIHN0ciA9PSBRU3RyaW5n
KCItdiIpIHx8IHN0ciA9PSBRU3RyaW5nKCItLXBpeGVsLXRlc3RzIikKKyAgICAgICAgICAgfHwg
c3RyID09IFFTdHJpbmcoIi0tc3Rkb3V0IikgfHwgc3RyID09IFFTdHJpbmcoIi0tc3RkZXJyIikK
KyAgICAgICAgICAgfHwgc3RyID09IFFTdHJpbmcoIi0iKTsKK30KKworLy8gR2V0IHRoZSBvcHRp
b24gdmFsdWUgYW5kIHJlbW92ZSB0aGUgb3B0aW9uIGFuZCB2YWx1ZSBmcm9tIGFyZ3VtZW50cyBs
aXN0CitRU3RyaW5nIHRha2VPcHRpb25WYWx1ZShRU3RyaW5nTGlzdCYgYXJndW1lbnRzLCBpbnQg
aW5kZXgpCit7CisgICAgUVN0cmluZyByZXN1bHQ7CisKKyAgICBpZiAoaW5kZXggKyAxIDwgYXJn
dW1lbnRzLmNvdW50KCkgJiYgIWlzT3B0aW9uKGFyZ3VtZW50cy5hdChpbmRleCArIDEpKSkKKyAg
ICAgICAgcmVzdWx0ID0gYXJndW1lbnRzLnRha2VBdChpbmRleCArIDEpOworICAgIGFyZ3VtZW50
cy5yZW1vdmVBdChpbmRleCk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkIHByaW50
VXNhZ2UoKQoreworICAgIGZwcmludGYoc3RkZXJyLCAiVXNhZ2U6IER1bXBSZW5kZXJUcmVlIFst
dnwtLXBpeGVsLXRlc3RzXSBbLW8gb3V0cHV0X2ZpbGVuYW1lXSBbLWUgZXJyb3JfZmlsZW5hbWVd
IGZpbGVuYW1lIFtmaWxlbmFtZTIuLm5dXG4iKTsKKyAgICBmcHJpbnRmKHN0ZGVyciwgIk9yIGZv
bGRlciBjb250YWluaW5nIHRlc3QgZmlsZXM6IER1bXBSZW5kZXJUcmVlIFstdnwtLXBpeGVsLXRl
c3RzXSBkaXJwYXRoXG4iKTsKKyAgICBmZmx1c2goc3RkZXJyKTsKK30KKwogUVN0cmluZyBnZXRf
YmFja3RyYWNlKCkgewogICAgIFFTdHJpbmcgczsKIApAQCAtMTQzLDI4ICsxNzEsNTggQEAgaW50
IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkKIAogICAgIFFTdHJpbmdMaXN0IGFyZ3MgPSBh
cHAuYXJndW1lbnRzKCk7CiAgICAgaWYgKGFyZ3MuY291bnQoKSA8IDIpIHsKLSAgICAgICAgcURl
YnVnKCkgPDwgIlVzYWdlOiBEdW1wUmVuZGVyVHJlZSBbLXZ8LS1waXhlbC10ZXN0c10gZmlsZW5h
bWUgW2ZpbGVuYW1lMi4ubl0iOwotICAgICAgICBxRGVidWcoKSA8PCAiT3IgZm9sZGVyIGNvbnRh
aW5pbmcgdGVzdCBmaWxlczogRHVtcFJlbmRlclRyZWUgWy12fC0tcGl4ZWwtdGVzdHNdIGRpcnBh
dGgiOworICAgICAgICBwcmludFVzYWdlKCk7CiAgICAgICAgIGV4aXQoMCk7CiAgICAgfQogCiAg
ICAgLy8gU3VwcHJlc3MgZGVidWcgb3V0cHV0IGZyb20gUXQgaWYgbm90IHN0YXJ0ZWQgd2l0aCAt
dgotICAgIGlmICghYXJncy5jb250YWlucyhRTGF0aW4xU3RyaW5nKCItdiIpKSkKKyAgICBpbnQg
aW5kZXggPSBhcmdzLmluZGV4T2YoUUxhdGluMVN0cmluZygiLXYiKSk7CisgICAgaWYgKGluZGV4
ID09IC0xKSAKICAgICAgICAgcUluc3RhbGxNc2dIYW5kbGVyKG1lc3NhZ2VIYW5kbGVyKTsKKyAg
ICBlbHNlCisgICAgICAgIGFyZ3MucmVtb3ZlQXQoaW5kZXgpOwogCiAgICAgV2ViQ29yZTo6RHVt
cFJlbmRlclRyZWUgZHVtcGVyOwogCi0gICAgaWYgKGFyZ3MuY29udGFpbnMoUUxhdGluMVN0cmlu
ZygiLS1waXhlbC10ZXN0cyIpKSkKKyAgICBpbmRleCA9IGFyZ3MuaW5kZXhPZihRTGF0aW4xU3Ry
aW5nKCItLXBpeGVsLXRlc3RzIikpOworICAgIGlmIChpbmRleCAhPSAtMSkgewogICAgICAgICBk
dW1wZXIuc2V0RHVtcFBpeGVscyh0cnVlKTsKKyAgICAgICAgYXJncy5yZW1vdmVBdChpbmRleCk7
CisgICAgfQogCisgICAgaW5kZXggPSBhcmdzLmluZGV4T2YoUUxhdGluMVN0cmluZygiLS1zdGRv
dXQiKSk7CisgICAgaWYgKGluZGV4ICE9IC0xKSB7CisgICAgICAgIFFTdHJpbmcgZmlsZU5hbWUg
PSB0YWtlT3B0aW9uVmFsdWUoYXJncywgaW5kZXgpOworICAgICAgICBkdW1wZXIuc2V0UmVkaXJl
Y3RPdXRwdXRGaWxlTmFtZShmaWxlTmFtZSk7CisgICAgICAgIGlmIChmaWxlTmFtZS5pc0VtcHR5
KCkgfHwgIWZyZW9wZW4ocVByaW50YWJsZShmaWxlTmFtZSksICJ3Iiwgc3Rkb3V0KSkgeworICAg
ICAgICAgICAgZnByaW50ZihzdGRlcnIsICJSZWRpcmVjdCBTVERPVVQgZmFpbGVkLiIpOworICAg
ICAgICAgICAgZXhpdCgwKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpbmRleCA9IGFyZ3MuaW5k
ZXhPZihRTGF0aW4xU3RyaW5nKCItLXN0ZGVyciIpKTsKKyAgICBpZiAoaW5kZXggIT0gLTEpIHsK
KyAgICAgICAgUVN0cmluZyBmaWxlTmFtZSA9IHRha2VPcHRpb25WYWx1ZShhcmdzLCBpbmRleCk7
CisgICAgICAgIGR1bXBlci5zZXRSZWRpcmVjdEVycm9yRmlsZU5hbWUoZmlsZU5hbWUpOworICAg
ICAgICBpZiAoIWZyZW9wZW4ocVByaW50YWJsZShmaWxlTmFtZSksICJ3Iiwgc3RkZXJyKSkgewor
ICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJSZWRpcmVjdCBTVERFUlIgZmFpbGVkLiIpOwor
ICAgICAgICAgICAgZXhpdCgwKTsKKyAgICAgICAgfQorICAgIH0KICAgICBRV2ViRGF0YWJhc2U6
OnJlbW92ZUFsbERhdGFiYXNlcygpOwogCiAgICAgaWYgKGFyZ3MuY29udGFpbnMoUUxhdGluMVN0
cmluZygiLSIpKSkgewogICAgICAgICBRT2JqZWN0Ojpjb25uZWN0KCZkdW1wZXIsIFNJR05BTChy
ZWFkeSgpKSwgJmR1bXBlciwgU0xPVChyZWFkTGluZSgpKSwgUXQ6OlF1ZXVlZENvbm5lY3Rpb24p
OwogICAgICAgICBRVGltZXI6OnNpbmdsZVNob3QoMCwgJmR1bXBlciwgU0xPVChyZWFkTGluZSgp
KSk7Ci0gICAgfSBlbHNlCisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gR28gaW50byBzdGFuZGFs
b25lIG1vZGUKKyAgICAgICAgLy8gU3RhbmRhbG9uZSBtb2RlIG5lZWQgYXQgbGVhc3Qgb25lIHRl
c3QgY2FzZQorICAgICAgICBpZiAoYXJncy5jb3VudCgpIDwgMikgeworICAgICAgICAgICAgcHJp
bnRVc2FnZSgpOworICAgICAgICAgICAgZXhpdCgwKTsKKyAgICAgICAgfQogICAgICAgICBkdW1w
ZXIucHJvY2Vzc0FyZ3NMaW5lKGFyZ3MpOwogCisgICAgfQogICAgIHJldHVybiBhcHAuZXhlYygp
OwogCiAjaWZkZWYgUV9XU19YMTEK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86189</attachid>
            <date>2011-03-18 11:53:34 -0700</date>
            <delta_ts>2011-03-18 11:57:43 -0700</delta_ts>
            <desc>patch6</desc>
            <filename>bug52974_6.patch</filename>
            <type>text/plain</type>
            <size>13983</size>
            <attacher name="qi">qi.2.zhang</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc3NTE2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTEtMDItMDMgIFFpIFpoYW5n
ICA8cWkuMi56aGFuZ0Bub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgW1F0XSBlbnVtIFFXZWJQYWdlOjpXZWJBY3Rpb24gZG9lc24ndCBo
YXZlIHZhbHVlIFFXZWJQYWdlOjpDb3B5SW1hZ2VVcmwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUyOTc0CisKKyAgICAgICAgQWRkIENvbnRleHRNZW51
SXRlbVRhZ0NvcHlJbWFnZVVybFRvQ2xpcGJvYXJkIGludG8gc3RhbmRhcmQgYWN0aW9uIGJ1dCBR
dCBwbGF0Zm9ybSBzcGVjaWZpYy4KKworICAgICAgICAqIHBhZ2UvQ29udGV4dE1lbnVDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51Q29udHJvbGxlcjo6Y29udGV4
dE1lbnVJdGVtU2VsZWN0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250cm9s
bGVyOjpwb3B1bGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudUNvbnRyb2xsZXI6
OmNoZWNrT3JFbmFibGVJZk5lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vQ29udGV4dE1lbnVJ
dGVtLmg6CisgICAgICAgICogcGxhdGZvcm0vTG9jYWxpemF0aW9uU3RyYXRlZ3kuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNv
bnRleHRNZW51SXRlbVRhZ0NvcHlJbWFnZVVybFRvQ2xpcGJvYXJkKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmg6CisKIDIwMTEtMDItMDMgIFBhdmVsIFBvZGl2aWxvdiAg
PHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVs
ZG1hbi4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxl
ci5jcHAJKHJldmlzaW9uIDc1OTcxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVu
dUNvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDcsNiArMjA3LDExIEBAIHZvaWQg
Q29udGV4dE1lbnVDb250cm9sbGVyOjpjb250ZXh0TWVudUkKICAgICAgICAgLy8gRm9yIG5vdywg
Y2FsbCBpbnRvIHRoZSBjbGllbnQuIFRoaXMgaXMgdGVtcG9yYXJ5IQogICAgICAgICBmcmFtZS0+
ZWRpdG9yKCktPmNvcHlJbWFnZShtX2hpdFRlc3RSZXN1bHQpOwogICAgICAgICBicmVhazsKKyNp
ZiBQTEFURk9STShRVCkKKyAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0NvcHlJbWFnZVVybFRv
Q2xpcGJvYXJkOgorICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvcHlVUkwobV9oaXRUZXN0UmVz
dWx0LmFic29sdXRlSW1hZ2VVUkwoKSwgbV9oaXRUZXN0UmVzdWx0LnRleHRDb250ZW50KCkpOwor
ICAgICAgICBicmVhazsKKyNlbmRpZgogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnT3Blbk1l
ZGlhSW5OZXdXaW5kb3c6CiAgICAgICAgIG9wZW5OZXdXaW5kb3cobV9oaXRUZXN0UmVzdWx0LmFi
c29sdXRlTWVkaWFVUkwoKSwgZnJhbWUpOwogICAgICAgICBicmVhazsKQEAgLTY0Miw2ICs2NDcs
MTAgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OnBvcHVsYXRlKCkKICAgICAgICAgY29u
dGV4dE1lbnVJdGVtVGFnRG93bmxvYWRJbWFnZVRvRGlzaygpKTsKICAgICBDb250ZXh0TWVudUl0
ZW0gQ29weUltYWdlSXRlbShBY3Rpb25UeXBlLCBDb250ZXh0TWVudUl0ZW1UYWdDb3B5SW1hZ2VU
b0NsaXBib2FyZCwgCiAgICAgICAgIGNvbnRleHRNZW51SXRlbVRhZ0NvcHlJbWFnZVRvQ2xpcGJv
YXJkKCkpOworI2lmIFBMQVRGT1JNKFFUKQorICAgIENvbnRleHRNZW51SXRlbSBDb3B5SW1hZ2VV
cmxJdGVtKEFjdGlvblR5cGUsIENvbnRleHRNZW51SXRlbVRhZ0NvcHlJbWFnZVVybFRvQ2xpcGJv
YXJkLCAKKyAgICAgICAgY29udGV4dE1lbnVJdGVtVGFnQ29weUltYWdlVXJsVG9DbGlwYm9hcmQo
KSk7CisjZW5kaWYKICAgICBDb250ZXh0TWVudUl0ZW0gT3Blbk1lZGlhSW5OZXdXaW5kb3dJdGVt
KEFjdGlvblR5cGUsIENvbnRleHRNZW51SXRlbVRhZ09wZW5NZWRpYUluTmV3V2luZG93LCBTdHJp
bmcoKSk7CiAgICAgQ29udGV4dE1lbnVJdGVtIENvcHlNZWRpYUxpbmtJdGVtKEFjdGlvblR5cGUs
IENvbnRleHRNZW51SXRlbVRhZ0NvcHlNZWRpYUxpbmtUb0NsaXBib2FyZCwgCiAgICAgICAgIFN0
cmluZygpKTsKQEAgLTcyMCw2ICs3MjksOSBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6
cG9wdWxhdGUoKQogICAgICAgICAgICAgYXBwZW5kSXRlbShEb3dubG9hZEltYWdlSXRlbSwgbV9j
b250ZXh0TWVudS5nZXQoKSk7CiAgICAgICAgICAgICBpZiAoaW1hZ2VVUkwuaXNMb2NhbEZpbGUo
KSB8fCBtX2hpdFRlc3RSZXN1bHQuaW1hZ2UoKSkKICAgICAgICAgICAgICAgICBhcHBlbmRJdGVt
KENvcHlJbWFnZUl0ZW0sIG1fY29udGV4dE1lbnUuZ2V0KCkpOworI2lmIFBMQVRGT1JNKFFUKQor
ICAgICAgICAgICAgYXBwZW5kSXRlbShDb3B5SW1hZ2VVcmxJdGVtLCBtX2NvbnRleHRNZW51Lmdl
dCgpKTsKKyNlbmRpZgogICAgICAgICB9CiAKICAgICAgICAgS1VSTCBtZWRpYVVSTCA9IG1faGl0
VGVzdFJlc3VsdC5hYnNvbHV0ZU1lZGlhVVJMKCk7CkBAIC0xMTcyLDYgKzExODQsOSBAQCB2b2lk
IENvbnRleHRNZW51Q29udHJvbGxlcjo6Y2hlY2tPckVuYWJsCiAgICAgICAgIGNhc2UgQ29udGV4
dE1lbnVJdGVtVGFnT3BlbkltYWdlSW5OZXdXaW5kb3c6CiAgICAgICAgIGNhc2UgQ29udGV4dE1l
bnVJdGVtVGFnRG93bmxvYWRJbWFnZVRvRGlzazoKICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0
ZW1UYWdDb3B5SW1hZ2VUb0NsaXBib2FyZDoKKyNpZiBQTEFURk9STShRVCkKKyAgICAgICAgY2Fz
ZSBDb250ZXh0TWVudUl0ZW1UYWdDb3B5SW1hZ2VVcmxUb0NsaXBib2FyZDoKKyNlbmRpZgogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnT3Blbk1lZGlh
SW5OZXdXaW5kb3c6CiAgICAgICAgICAgICBpZiAobV9oaXRUZXN0UmVzdWx0Lm1lZGlhSXNWaWRl
bygpKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnVJdGVtLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnVJdGVtLmgJKHJl
dmlzaW9uIDc1OTcxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnVJdGVt
LmgJKHdvcmtpbmcgY29weSkKQEAgLTY1LDYgKzY1LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICBDb250ZXh0TWVudUl0ZW1UYWdPcGVuSW1hZ2VJbk5ld1dpbmRvdywKICAgICAgICAg
Q29udGV4dE1lbnVJdGVtVGFnRG93bmxvYWRJbWFnZVRvRGlzaywKICAgICAgICAgQ29udGV4dE1l
bnVJdGVtVGFnQ29weUltYWdlVG9DbGlwYm9hcmQsCisjaWYgUExBVEZPUk0oUVQpCisgICAgICAg
IENvbnRleHRNZW51SXRlbVRhZ0NvcHlJbWFnZVVybFRvQ2xpcGJvYXJkLAorI2VuZGlmCiAgICAg
ICAgIENvbnRleHRNZW51SXRlbVRhZ09wZW5GcmFtZUluTmV3V2luZG93LAogICAgICAgICBDb250
ZXh0TWVudUl0ZW1UYWdDb3B5LAogICAgICAgICBDb250ZXh0TWVudUl0ZW1UYWdHb0JhY2ssCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6YXRpb25TdHJhdGVneS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXphdGlvblN0cmF0ZWd5LmgJ
KHJldmlzaW9uIDc1OTcxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemF0aW9u
U3RyYXRlZ3kuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsNiArNTUsOSBAQCBwdWJsaWM6ICAgIAog
ICAgIHZpcnR1YWwgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ09wZW5JbWFnZUluTmV3V2luZG93
KCkgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0Rvd25sb2FkSW1h
Z2VUb0Rpc2soKSA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ29w
eUltYWdlVG9DbGlwYm9hcmQoKSA9IDA7CisjaWYgUExBVEZPUk0oUVQpCisgICAgdmlydHVhbCBT
dHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ29weUltYWdlVXJsVG9DbGlwYm9hcmQoKSA9IDA7Cisj
ZW5kaWYKICAgICB2aXJ0dWFsIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdPcGVuRnJhbWVJbk5l
d1dpbmRvdygpID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdDb3B5
KCkgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0dvQmFjaygpID0g
MDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3Bw
CShyZXZpc2lvbiA3NTk3MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0
cmluZ3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNiArMTA0LDEzIEBAIFN0cmluZyBjb250
ZXh0TWVudUl0ZW1UYWdDb3B5SW1hZ2VUb0NsaXAKICAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVn
aWVzKCktPmxvY2FsaXphdGlvblN0cmF0ZWd5KCktPmNvbnRleHRNZW51SXRlbVRhZ0NvcHlJbWFn
ZVRvQ2xpcGJvYXJkKCk7CiB9CiAKKyNpZiBQTEFURk9STShRVCkKK1N0cmluZyBjb250ZXh0TWVu
dUl0ZW1UYWdDb3B5SW1hZ2VVcmxUb0NsaXBib2FyZCgpCit7CisgICAgcmV0dXJuIHBsYXRmb3Jt
U3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT5jb250ZXh0TWVudUl0ZW1UYWdD
b3B5SW1hZ2VVcmxUb0NsaXBib2FyZCgpOworfQorI2VuZGlmCisKIFN0cmluZyBjb250ZXh0TWVu
dUl0ZW1UYWdPcGVuRnJhbWVJbk5ld1dpbmRvdygpCiB7CiAgICAgcmV0dXJuIHBsYXRmb3JtU3Ry
YXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT5jb250ZXh0TWVudUl0ZW1UYWdPcGVu
RnJhbWVJbk5ld1dpbmRvdygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxp
emVkU3RyaW5ncy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2Fs
aXplZFN0cmluZ3MuaAkocmV2aXNpb24gNzU5NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9Mb2NhbGl6ZWRTdHJpbmdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDYgKzUxLDkgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdPcGVuSW1hZ2VJ
bk5ld1dpbmRvdygpOwogICAgIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZEltYWdl
VG9EaXNrKCk7CiAgICAgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0NvcHlJbWFnZVRvQ2xpcGJv
YXJkKCk7CisjaWYgUExBVEZPUk0oUVQpCisgICAgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0Nv
cHlJbWFnZVVybFRvQ2xpcGJvYXJkKCk7CisjZW5kaWYKICAgICBTdHJpbmcgY29udGV4dE1lbnVJ
dGVtVGFnT3BlbkZyYW1lSW5OZXdXaW5kb3coKTsKICAgICBTdHJpbmcgY29udGV4dE1lbnVJdGVt
VGFnQ29weSgpOwogICAgIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdHb0JhY2soKTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cJKHJldmlzaW9uIDc3NTE2KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDItMDMgIFFpIFpoYW5nICA8cWku
Mi56aGFuZ0Bub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgW1F0XSBlbnVtIFFXZWJQYWdlOjpXZWJBY3Rpb24gZG9lc24ndCBoYXZlIHZh
bHVlIFFXZWJQYWdlOjpDb3B5SW1hZ2VVcmwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTUyOTc0CisKKyAgICAgICAgQWRkIENvbnRleHRNZW51SXRlbVRh
Z0NvcHlJbWFnZVVybFRvQ2xpcGJvYXJkIGludG8gc3RhbmRhcmQgYWN0aW9uIGJ1dCBRdCBwbGF0
Zm9ybSBzcGVjaWZpYy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdDb3B5SW1hZ2VVcmxUb0NsaXBib2FyZCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoK
KwogMjAxMS0wMi0wMyAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIEZp
eCBRdCBidWlsZC4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAJKHJl
dmlzaW9uIDc1OTcxKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDYsNiArMjA2
LDEzIEBAIFN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW4KICAgICByZXR1
cm4gVUlfU1RSSU5HKCJDb3B5IEltYWdlIiwgIkNvcHkgSW1hZ2UgY29udGV4dCBtZW51IGl0ZW0i
KTsKIH0KIAorI2lmIFBMQVRGT1JNKFFUKQorU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
Y29udGV4dE1lbnVJdGVtVGFnQ29weUltYWdlVXJsVG9DbGlwYm9hcmQoKQoreworICAgIHJldHVy
biBVSV9TVFJJTkcoIkNvcHkgSW1hZ2UgQWRkcmVzcyIsICJDb3B5IEltYWdlIEFkZHJlc3MgbWVu
dSBpdGVtIik7Cit9CisjZW5kaWYKKwogU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29u
dGV4dE1lbnVJdGVtVGFnT3BlblZpZGVvSW5OZXdXaW5kb3coKQogewogICAgIHJldHVybiBVSV9T
VFJJTkcoIk9wZW4gVmlkZW8gaW4gTmV3IFdpbmRvdyIsICJPcGVuIFZpZGVvIGluIE5ldyBXaW5k
b3cgY29udGV4dCBtZW51IGl0ZW0iKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMuaAkocmV2aXNpb24gNzU5NzEpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCSh3b3JraW5nIGNvcHkpCkBAIC02OCw2
ICs2OCw5IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFn
T3BlbkltYWdlSW5OZXdXaW5kb3coKTsKICAgICB2aXJ0dWFsIFN0cmluZyBjb250ZXh0TWVudUl0
ZW1UYWdEb3dubG9hZEltYWdlVG9EaXNrKCk7CiAgICAgdmlydHVhbCBTdHJpbmcgY29udGV4dE1l
bnVJdGVtVGFnQ29weUltYWdlVG9DbGlwYm9hcmQoKTsKKyNpZiBQTEFURk9STShRVCkKKyAgICB2
aXJ0dWFsIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdDb3B5SW1hZ2VVcmxUb0NsaXBib2FyZCgp
OworI2VuZGlmCiAgICAgdmlydHVhbCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnT3BlbkZyYW1l
SW5OZXdXaW5kb3coKTsKICAgICB2aXJ0dWFsIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdDb3B5
KCk7CiAgICAgdmlydHVhbCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnR29CYWNrKCk7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L3F0L0NoYW5nZUxvZwkocmV2aXNpb24gNzc1MTYpCisrKyBTb3VyY2UvV2ViS2l0L3F0L0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDExLTAyLTAzICBRaSBaaGFu
ZyAgPHFpLjIuemhhbmdAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFtRdF0gZW51bSBRV2ViUGFnZTo6V2ViQWN0aW9uIGRvZXNuJ3Qg
aGF2ZSB2YWx1ZSBRV2ViUGFnZTo6Q29weUltYWdlVXJsCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01Mjk3NAorCisgICAgICAgIEFkZCBRV2ViUGFnZTo6
Q29weUltYWdlVXJsVG9DbGlwYm9hcmQgaW50byBRV2ViUGFnZTo6V2ViQWN0aW9uLgorCisgICAg
ICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKHdlYkFjdGlvbkZvckNvbnRleHRNZW51
QWN0aW9uKToKKyAgICAgICAgKFFXZWJQYWdlOjp0cmlnZ2VyQWN0aW9uKToKKyAgICAgICAgKFFX
ZWJQYWdlOjphY3Rpb24pOgorICAgICAgICAqIEFwaS9xd2VicGFnZS5oOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6CisgICAgICAgIChXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ0NvcHlJbWFnZVVybFRvQ2xpcGJvYXJk
KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKwog
MjAxMS0wMi0wMSAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQgUXQgYnVpbGRmaXggYWZ0ZXIgcjc3Mjg2LgpJbmRleDogU291cmNlL1dl
YktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQv
QXBpL3F3ZWJwYWdlLmNwcAkocmV2aXNpb24gNzU5NzEpCisrKyBTb3VyY2UvV2ViS2l0L3F0L0Fw
aS9xd2VicGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2Miw2ICsxNjIsNyBAQCBzdGF0aWMg
Y29uc3QgY2hhciogZWRpdG9yQ29tbWFuZFdlYkFjdGlvCiAgICAgMCwgLy8gT3BlbkltYWdlSW5O
ZXdXaW5kb3csCiAgICAgMCwgLy8gRG93bmxvYWRJbWFnZVRvRGlzaywKICAgICAwLCAvLyBDb3B5
SW1hZ2VUb0NsaXBib2FyZCwKKyAgICAwLCAvLyBDb3B5SW1hZ2VVcmxUb0NsaXBib2FyZCwKIAog
ICAgIDAsIC8vIEJhY2ssCiAgICAgMCwgLy8gRm9yd2FyZCwKQEAgLTQwNCw2ICs0MDUsNyBAQCBz
dGF0aWMgUVdlYlBhZ2U6OldlYkFjdGlvbiB3ZWJBY3Rpb25Gb3JDCiAgICAgICAgIGNhc2UgV2Vi
Q29yZTo6Q29udGV4dE1lbnVJdGVtVGFnT3BlbkltYWdlSW5OZXdXaW5kb3c6IHJldHVybiBRV2Vi
UGFnZTo6T3BlbkltYWdlSW5OZXdXaW5kb3c7CiAgICAgICAgIGNhc2UgV2ViQ29yZTo6Q29udGV4
dE1lbnVJdGVtVGFnRG93bmxvYWRJbWFnZVRvRGlzazogcmV0dXJuIFFXZWJQYWdlOjpEb3dubG9h
ZEltYWdlVG9EaXNrOwogICAgICAgICBjYXNlIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0Nv
cHlJbWFnZVRvQ2xpcGJvYXJkOiByZXR1cm4gUVdlYlBhZ2U6OkNvcHlJbWFnZVRvQ2xpcGJvYXJk
OworICAgICAgICBjYXNlIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0NvcHlJbWFnZVVybFRv
Q2xpcGJvYXJkOiByZXR1cm4gUVdlYlBhZ2U6OkNvcHlJbWFnZVVybFRvQ2xpcGJvYXJkOwogICAg
ICAgICBjYXNlIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ09wZW5GcmFtZUluTmV3V2luZG93
OiByZXR1cm4gUVdlYlBhZ2U6Ok9wZW5GcmFtZUluTmV3V2luZG93OwogICAgICAgICBjYXNlIFdl
YkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0NvcHk6IHJldHVybiBRV2ViUGFnZTo6Q29weTsKICAg
ICAgICAgY2FzZSBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdHb0JhY2s6IHJldHVybiBRV2Vi
UGFnZTo6QmFjazsKQEAgLTE2ODAsNiArMTY4Miw3IEBAIEludFBvaW50IFFXZWJQYWdlUHJpdmF0
ZTo6VG91Y2hBZGp1c3RlcjoKICAgICBcdmFsdWUgT3BlbkltYWdlSW5OZXdXaW5kb3cgT3BlbiB0
aGUgaGlnaGxpZ2h0ZWQgaW1hZ2UgaW4gYSBuZXcgd2luZG93LgogICAgIFx2YWx1ZSBEb3dubG9h
ZEltYWdlVG9EaXNrIERvd25sb2FkIHRoZSBoaWdobGlnaHRlZCBpbWFnZSB0byB0aGUgZGlzay4K
ICAgICBcdmFsdWUgQ29weUltYWdlVG9DbGlwYm9hcmQgQ29weSB0aGUgaGlnaGxpZ2h0ZWQgaW1h
Z2UgdG8gdGhlIGNsaXBib2FyZC4KKyAgICBcdmFsdWUgQ29weUltYWdlVXJsVG9DbGlwYm9hcmQg
Q29weSB0aGUgaGlnaGxpZ2h0ZWQgaW1hZ2UncyBVUkwgdG8gdGhlIGNsaXBib2FyZC4KICAgICBc
dmFsdWUgQmFjayBOYXZpZ2F0ZSBiYWNrIGluIHRoZSBoaXN0b3J5IG9mIG5hdmlnYXRlZCBsaW5r
cy4KICAgICBcdmFsdWUgRm9yd2FyZCBOYXZpZ2F0ZSBmb3J3YXJkIGluIHRoZSBoaXN0b3J5IG9m
IG5hdmlnYXRlZCBsaW5rcy4KICAgICBcdmFsdWUgU3RvcCBTdG9wIGxvYWRpbmcgdGhlIGN1cnJl
bnQgcGFnZS4KQEAgLTIzNDIsNiArMjM0NSw5IEBAIHZvaWQgUVdlYlBhZ2U6OnRyaWdnZXJBY3Rp
b24oV2ViQWN0aW9uIGEKICAgICAgICAgY2FzZSBDb3B5SW1hZ2VUb0NsaXBib2FyZDoKICAgICAg
ICAgICAgIFFBcHBsaWNhdGlvbjo6Y2xpcGJvYXJkKCktPnNldFBpeG1hcChkLT5oaXRUZXN0UmVz
dWx0LnBpeG1hcCgpKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENvcHlJbWFn
ZVVybFRvQ2xpcGJvYXJkOgorICAgICAgICAgICAgUUFwcGxpY2F0aW9uOjpjbGlwYm9hcmQoKS0+
c2V0VGV4dChkLT5oaXRUZXN0UmVzdWx0LmltYWdlVXJsKCkudG9TdHJpbmcoKSk7CisgICAgICAg
ICAgICBicmVhazsKICNlbmRpZgogICAgICAgICBjYXNlIEJhY2s6CiAgICAgICAgICAgICBkLT5w
YWdlLT5nb0JhY2soKTsKQEAgLTI3MzAsNiArMjczNiw5IEBAIFFBY3Rpb24gKlFXZWJQYWdlOjph
Y3Rpb24oV2ViQWN0aW9uIGFjdGkKICAgICAgICAgY2FzZSBDb3B5SW1hZ2VUb0NsaXBib2FyZDoK
ICAgICAgICAgICAgIHRleHQgPSBjb250ZXh0TWVudUl0ZW1UYWdDb3B5SW1hZ2VUb0NsaXBib2Fy
ZCgpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ29weUltYWdlVXJsVG9DbGlw
Ym9hcmQ6CisgICAgICAgICAgICB0ZXh0ID0gY29udGV4dE1lbnVJdGVtVGFnQ29weUltYWdlVXJs
VG9DbGlwYm9hcmQoKTsKKyAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgQmFjazoK
ICAgICAgICAgICAgIHRleHQgPSBjb250ZXh0TWVudUl0ZW1UYWdHb0JhY2soKTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9xdC9BcGkvcXdlYnBhZ2UuaAkocmV2aXNpb24gNzU5NzEpCisrKyBTb3VyY2UvV2ViS2l0L3F0
L0FwaS9xd2VicGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDUsNiArMTA1LDcgQEAgcHVibGlj
OgogICAgICAgICBPcGVuSW1hZ2VJbk5ld1dpbmRvdywKICAgICAgICAgRG93bmxvYWRJbWFnZVRv
RGlzaywKICAgICAgICAgQ29weUltYWdlVG9DbGlwYm9hcmQsCisgICAgICAgIENvcHlJbWFnZVVy
bFRvQ2xpcGJvYXJkLAogCiAgICAgICAgIEJhY2ssCiAgICAgICAgIEZvcndhcmQsCkluZGV4OiBT
b3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMuY3BwCShyZXZpc2lvbiA3NTk3MSkKKysrIFNvdXJjZS9XZWJLaXQvcXQvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjAwLDYgKzIwMCwxMSBAQCBTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVu
CiAgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiQ29w
eSBJbWFnZSIsICJDb3B5IExpbmsgY29udGV4dCBtZW51IGl0ZW0iKTsKIH0KIAorU3RyaW5nIFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnQ29weUltYWdlVXJsVG9DbGlw
Ym9hcmQoKQoreworICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQ
YWdlIiwgIkNvcHkgSW1hZ2UgQWRkcmVzcyIsICJDb3B5IEltYWdlIEFkZHJlc3MgbWVudSBpdGVt
Iik7Cit9CisKIFN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRh
Z09wZW5WaWRlb0luTmV3V2luZG93KCkKIHsKICAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6
dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJPcGVuIFZpZGVvIiwgIk9wZW4gVmlkZW8gaW4gTmV3IFdp
bmRvdyIpOwpJbmRleDogU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCShyZXZpc2lvbiA3NTk3MSkKKysrIFNvdXJjZS9X
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTY2LDYgKzY2LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFdURjo6U3RyaW5n
IGNvbnRleHRNZW51SXRlbVRhZ09wZW5JbWFnZUluTmV3V2luZG93KCk7CiAgICAgdmlydHVhbCBX
VEY6OlN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZEltYWdlVG9EaXNrKCk7CiAgICAg
dmlydHVhbCBXVEY6OlN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdDb3B5SW1hZ2VUb0NsaXBib2Fy
ZCgpOworICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ29weUltYWdl
VXJsVG9DbGlwYm9hcmQoKTsKICAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGNvbnRleHRNZW51SXRl
bVRhZ09wZW5GcmFtZUluTmV3V2luZG93KCk7CiAgICAgdmlydHVhbCBXVEY6OlN0cmluZyBjb250
ZXh0TWVudUl0ZW1UYWdDb3B5KCk7CiAgICAgdmlydHVhbCBXVEY6OlN0cmluZyBjb250ZXh0TWVu
dUl0ZW1UYWdHb0JhY2soKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86191</attachid>
            <date>2011-03-18 11:57:43 -0700</date>
            <delta_ts>2011-03-21 06:23:04 -0700</delta_ts>
            <desc>patch6</desc>
            <filename>bug56323_6.patch</filename>
            <type>text/plain</type>
            <size>8182</size>
            <attacher name="qi">qi.2.zhang</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDgxMzc1KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjYgQEAKKzIwMTEtMDMtMTcgIFFpIFpoYW5nICA8cWkuMi56aGFuZ0Bub2tpYS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1F0XSBBZGQg
YSBjb21tYW5kIGxpbmUgb3B0aW9uIHRvIGNhcHR1cmUgc3Rkb3V0IGFuZCBzdGRlcnIgZm9yIER1
bXBSZW5kZXJUcmVlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD01NjMyMworCisgICAgICAgIFVzaW5nIGZyZW9wZW4gdG8gcmVkaXJlY3QgU1RET1VUIGFu
ZCBTVERFUlIgd2hlbiBEdW1wUmVuZGVyVHJlZSBjb21tYW5kIGxpbmUgcHJvdmlkZSAKKyAgICAg
ICAgIi0tc3Rkb3V0IiBvciAiLS1zdGRlcnIiIG9wdGlvbi4KKworICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHVtcFJl
bmRlclRyZWU6On5EdW1wUmVuZGVyVHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpEdW1wUmVuZGVy
VHJlZTo6cHJvY2Vzc0FyZ3NMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkR1bXBSZW5kZXJUcmVl
Ojpsb2FkTmV4dFRlc3RJblN0YW5kQWxvbmVNb2RlKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9xdC9EdW1wUmVuZGVyVHJlZVF0Lmg6CisgICAgICAgIChXZWJDb3JlOjpEdW1wUmVuZGVyVHJl
ZTo6c2V0UmVkaXJlY3RPdXRwdXRGaWxlTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpEdW1wUmVu
ZGVyVHJlZTo6c2V0UmVkaXJlY3RFcnJvckZpbGVOYW1lKToKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9xdC9tYWluLmNwcDoKKyAgICAgICAgKGlzT3B0aW9uKToKKyAgICAgICAgKHRha2VPcHRp
b25WYWx1ZSk6CisgICAgICAgIChwcmludFVzYWdlKToKKyAgICAgICAgKG1haW4pOgorCiAyMDEx
LTAzLTE3ICBNaWtoYWlsIE5hZ2Fub3YgIDxtbmFnYW5vdkBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgWXVyeSBTZW1pa2hhdHNreS4KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJU
cmVlL3F0L0R1bXBSZW5kZXJUcmVlUXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlUXQuY3BwCShyZXZpc2lvbiA4MTA0NCkKKysrIFRvb2xz
L0R1bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlUXQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00OTksNiArNDk5LDEwIEBAIER1bXBSZW5kZXJUcmVlOjpEdW1wUmVuZGVyVHJlZSgpCiAKIER1
bXBSZW5kZXJUcmVlOjp+RHVtcFJlbmRlclRyZWUoKQogeworICAgIGlmICghbV9yZWRpcmVjdE91
dHB1dEZpbGVOYW1lLmlzRW1wdHkoKSkKKyAgICAgICAgZmNsb3NlKHN0ZG91dCk7CisgICAgaWYg
KCFtX3JlZGlyZWN0RXJyb3JGaWxlTmFtZS5pc0VtcHR5KCkpCisgICAgICAgIGZjbG9zZShzdGRl
cnIpOwogICAgIGRlbGV0ZSBtX21haW5WaWV3OwogICAgIGRlbGV0ZSBtX3N0ZGluOwogICAgIER1
bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpyZW1vdmVNb2NrRGV2aWNlT3JpZW50YXRpb24oKTsKQEAg
LTY3Niw5ICs2ODAsNyBAQCB2b2lkIER1bXBSZW5kZXJUcmVlOjpwcm9jZXNzQXJnc0xpbmUoY29u
CiB7CiAgICAgc2V0U3RhbmRBbG9uZU1vZGUodHJ1ZSk7CiAKLSAgICBmb3IgKGludCBpID0gMTsg
aSA8IGFyZ3Muc2l6ZSgpOyArK2kpCi0gICAgICAgIGlmICghYXJncy5hdChpKS5zdGFydHNXaXRo
KCctJykpCi0gICAgICAgICAgICBtX3N0YW5kQWxvbmVNb2RlVGVzdExpc3QuYXBwZW5kKGFyZ3Nb
aV0pOworICAgIG1fc3RhbmRBbG9uZU1vZGVUZXN0TGlzdCA9IGFyZ3M7CiAKICAgICBRRmlsZUlu
Zm8gZmlyc3RFbnRyeShtX3N0YW5kQWxvbmVNb2RlVGVzdExpc3QuZmlyc3QoKSk7CiAgICAgaWYg
KGZpcnN0RW50cnkuaXNEaXIoKSkgewpAQCAtNjkwLDExICs2OTIsMTIgQEAgdm9pZCBEdW1wUmVu
ZGVyVHJlZTo6cHJvY2Vzc0FyZ3NMaW5lKGNvbgogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8
IG1fc3RhbmRBbG9uZU1vZGVUZXN0TGlzdC5zaXplKCk7ICsraSkKICAgICAgICAgICAgIG1fc3Rh
bmRBbG9uZU1vZGVUZXN0TGlzdFtpXSA9IGZvbGRlckVudHJ5LmFic29sdXRlRmlsZVBhdGgobV9z
dGFuZEFsb25lTW9kZVRlc3RMaXN0W2ldKTsKICAgICB9Ci0KLSAgICBwcm9jZXNzTGluZShtX3N0
YW5kQWxvbmVNb2RlVGVzdExpc3QuZmlyc3QoKSk7Ci0gICAgbV9zdGFuZEFsb25lTW9kZVRlc3RM
aXN0LnJlbW92ZUZpcnN0KCk7Ci0KICAgICBjb25uZWN0KHRoaXMsIFNJR05BTChyZWFkeSgpKSwg
dGhpcywgU0xPVChsb2FkTmV4dFRlc3RJblN0YW5kQWxvbmVNb2RlKCkpKTsKKworICAgIGlmICgh
bV9zdGFuZEFsb25lTW9kZVRlc3RMaXN0LmlzRW1wdHkoKSkgeworICAgICAgICBRU3RyaW5nIGZp
cnN0ID0gbV9zdGFuZEFsb25lTW9kZVRlc3RMaXN0LnRha2VGaXJzdCgpOworICAgICAgICBwcm9j
ZXNzTGluZShmaXJzdCk7CisgICAgfQogfQogCiB2b2lkIER1bXBSZW5kZXJUcmVlOjpsb2FkTmV4
dFRlc3RJblN0YW5kQWxvbmVNb2RlKCkKQEAgLTcwMyw5ICs3MDYsOCBAQCB2b2lkIER1bXBSZW5k
ZXJUcmVlOjpsb2FkTmV4dFRlc3RJblN0YW5kCiAgICAgICAgIGVtaXQgcXVpdCgpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQotCi0gICAgcHJvY2Vzc0xpbmUobV9zdGFuZEFsb25lTW9kZVRlc3RM
aXN0LmZpcnN0KCkpOwotICAgIG1fc3RhbmRBbG9uZU1vZGVUZXN0TGlzdC5yZW1vdmVGaXJzdCgp
OworICAgIFFTdHJpbmcgZmlyc3QgPSBtX3N0YW5kQWxvbmVNb2RlVGVzdExpc3QudGFrZUZpcnN0
KCk7CisgICAgcHJvY2Vzc0xpbmUoZmlyc3QpOwogfQogCiB2b2lkIER1bXBSZW5kZXJUcmVlOjpw
cm9jZXNzTGluZShjb25zdCBRU3RyaW5nICZpbnB1dCkKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJU
cmVlL3F0L0R1bXBSZW5kZXJUcmVlUXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVy
VHJlZS9xdC9EdW1wUmVuZGVyVHJlZVF0LmgJKHJldmlzaW9uIDgxMDQ0KQorKysgVG9vbHMvRHVt
cFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWVRdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDUs
NiArMTA1LDggQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemVGb250cygpOwog
I2VuZGlmCiAgICAgdm9pZCBwcm9jZXNzQXJnc0xpbmUoY29uc3QgUVN0cmluZ0xpc3QmKTsKKyAg
ICB2b2lkIHNldFJlZGlyZWN0T3V0cHV0RmlsZU5hbWUoY29uc3QgUVN0cmluZyYgcykgeyBtX3Jl
ZGlyZWN0T3V0cHV0RmlsZU5hbWUgPSBzOyB9CisgICAgdm9pZCBzZXRSZWRpcmVjdEVycm9yRmls
ZU5hbWUoY29uc3QgUVN0cmluZyYgcykgeyBtX3JlZGlyZWN0RXJyb3JGaWxlTmFtZSA9IHM7IH0K
IAogcHVibGljIFFfU0xPVFM6CiAgICAgdm9pZCBpbml0SlNPYmplY3RzKCk7CkBAIC0xNjAsNiAr
MTYyLDggQEAgcHJpdmF0ZToKICAgICBib29sIG1fc3RhbmRBbG9uZU1vZGU7CiAgICAgYm9vbCBt
X2dyYXBoaWNzQmFzZWQ7CiAgICAgUVN0cmluZyBtX3BlcnNpc3RlbnRTdG9yYWdlUGF0aDsKKyAg
ICBRU3RyaW5nIG1fcmVkaXJlY3RPdXRwdXRGaWxlTmFtZTsKKyAgICBRU3RyaW5nIG1fcmVkaXJl
Y3RFcnJvckZpbGVOYW1lOwogfTsKIAogY2xhc3MgTmV0d29ya0FjY2Vzc01hbmFnZXIgOiBwdWJs
aWMgUU5ldHdvcmtBY2Nlc3NNYW5hZ2VyIHsKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0
L21haW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L21haW4uY3Bw
CShyZXZpc2lvbiA4MTA0NCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L21haW4uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02Nyw2ICs2NywzNCBAQCB2b2lkIG1lc3NhZ2VIYW5kbGVyKFF0TXNn
VHlwZSB0eXBlLCBjb25zCiAgICAgLy8gZG8gbm90aGluZwogfQogCisvLyBXZSBvbmx5IHN1cHBv
cnQgLXYgb3IgLS1waXhlbC10ZXN0cyBvciAtLXN0ZG91dCBvciAtLXN0ZGVyciBvciAtLCBhbGwg
dGhlIG90aGVycyB3aWxsIGJlIAorLy8gcGFzcyBhcyB0ZXN0IGNhc2UgbmFtZSAoZXZlbiAtYWJj
Lmh0bWwgaXMgYSB2YWxpZCB0ZXN0IGNhc2UgbmFtZSkKK2Jvb2wgaXNPcHRpb24oY29uc3QgUVN0
cmluZyYgc3RyKQoreworICAgIHJldHVybiBzdHIgPT0gUVN0cmluZygiLXYiKSB8fCBzdHIgPT0g
UVN0cmluZygiLS1waXhlbC10ZXN0cyIpCisgICAgICAgICAgIHx8IHN0ciA9PSBRU3RyaW5nKCIt
LXN0ZG91dCIpIHx8IHN0ciA9PSBRU3RyaW5nKCItLXN0ZGVyciIpCisgICAgICAgICAgIHx8IHN0
ciA9PSBRU3RyaW5nKCItIik7Cit9CisKKy8vIEdldCB0aGUgb3B0aW9uIHZhbHVlIGFuZCByZW1v
dmUgdGhlIG9wdGlvbiBhbmQgdmFsdWUgZnJvbSBhcmd1bWVudHMgbGlzdAorUVN0cmluZyB0YWtl
T3B0aW9uVmFsdWUoUVN0cmluZ0xpc3QmIGFyZ3VtZW50cywgaW50IGluZGV4KQoreworICAgIFFT
dHJpbmcgcmVzdWx0OworCisgICAgaWYgKGluZGV4ICsgMSA8IGFyZ3VtZW50cy5jb3VudCgpICYm
ICFpc09wdGlvbihhcmd1bWVudHMuYXQoaW5kZXggKyAxKSkpCisgICAgICAgIHJlc3VsdCA9IGFy
Z3VtZW50cy50YWtlQXQoaW5kZXggKyAxKTsKKyAgICBhcmd1bWVudHMucmVtb3ZlQXQoaW5kZXgp
OworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCBwcmludFVzYWdlKCkKK3sKKyAgICBm
cHJpbnRmKHN0ZGVyciwgIlVzYWdlOiBEdW1wUmVuZGVyVHJlZSBbLXZ8LS1waXhlbC10ZXN0c10g
Wy0tc3Rkb3V0IG91dHB1dF9maWxlbmFtZV0gWy1zdGRlcnIgZXJyb3JfZmlsZW5hbWVdIGZpbGVu
YW1lIFtmaWxlbmFtZTIuLm5dXG4iKTsKKyAgICBmcHJpbnRmKHN0ZGVyciwgIk9yIGZvbGRlciBj
b250YWluaW5nIHRlc3QgZmlsZXM6IER1bXBSZW5kZXJUcmVlIFstdnwtLXBpeGVsLXRlc3RzXSBk
aXJwYXRoXG4iKTsKKyAgICBmZmx1c2goc3RkZXJyKTsKK30KKwogUVN0cmluZyBnZXRfYmFja3Ry
YWNlKCkgewogICAgIFFTdHJpbmcgczsKIApAQCAtMTQzLDI4ICsxNzEsNzIgQEAgaW50IG1haW4o
aW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkKIAogICAgIFFTdHJpbmdMaXN0IGFyZ3MgPSBhcHAuYXJn
dW1lbnRzKCk7CiAgICAgaWYgKGFyZ3MuY291bnQoKSA8IDIpIHsKLSAgICAgICAgcURlYnVnKCkg
PDwgIlVzYWdlOiBEdW1wUmVuZGVyVHJlZSBbLXZ8LS1waXhlbC10ZXN0c10gZmlsZW5hbWUgW2Zp
bGVuYW1lMi4ubl0iOwotICAgICAgICBxRGVidWcoKSA8PCAiT3IgZm9sZGVyIGNvbnRhaW5pbmcg
dGVzdCBmaWxlczogRHVtcFJlbmRlclRyZWUgWy12fC0tcGl4ZWwtdGVzdHNdIGRpcnBhdGgiOwor
ICAgICAgICBwcmludFVzYWdlKCk7CiAgICAgICAgIGV4aXQoMCk7CiAgICAgfQogCisgICAgLy8g
UmVtb3ZlIHRoZSBmaXJzdCBhcmd1bWVudHMsIGl0IGlzIGFwcGxpY2F0aW9uIG5hbWUgaXRzZWxm
CisgICAgYXJncy5yZW1vdmVBdCgwKTsKKwogICAgIC8vIFN1cHByZXNzIGRlYnVnIG91dHB1dCBm
cm9tIFF0IGlmIG5vdCBzdGFydGVkIHdpdGggLXYKLSAgICBpZiAoIWFyZ3MuY29udGFpbnMoUUxh
dGluMVN0cmluZygiLXYiKSkpCisgICAgaW50IGluZGV4ID0gYXJncy5pbmRleE9mKFFMYXRpbjFT
dHJpbmcoIi12IikpOworICAgIGlmIChpbmRleCA9PSAtMSkgCiAgICAgICAgIHFJbnN0YWxsTXNn
SGFuZGxlcihtZXNzYWdlSGFuZGxlcik7CisgICAgZWxzZQorICAgICAgICBhcmdzLnJlbW92ZUF0
KGluZGV4KTsKIAogICAgIFdlYkNvcmU6OkR1bXBSZW5kZXJUcmVlIGR1bXBlcjsKIAotICAgIGlm
IChhcmdzLmNvbnRhaW5zKFFMYXRpbjFTdHJpbmcoIi0tcGl4ZWwtdGVzdHMiKSkpCisgICAgaW5k
ZXggPSBhcmdzLmluZGV4T2YoUUxhdGluMVN0cmluZygiLS1waXhlbC10ZXN0cyIpKTsKKyAgICBp
ZiAoaW5kZXggIT0gLTEpIHsKICAgICAgICAgZHVtcGVyLnNldER1bXBQaXhlbHModHJ1ZSk7Cisg
ICAgICAgIGFyZ3MucmVtb3ZlQXQoaW5kZXgpOworICAgIH0KIAorICAgIGluZGV4ID0gYXJncy5p
bmRleE9mKFFMYXRpbjFTdHJpbmcoIi0tc3Rkb3V0IikpOworICAgIGlmIChpbmRleCAhPSAtMSkg
eworICAgICAgICBRU3RyaW5nIGZpbGVOYW1lID0gdGFrZU9wdGlvblZhbHVlKGFyZ3MsIGluZGV4
KTsKKyAgICAgICAgZHVtcGVyLnNldFJlZGlyZWN0T3V0cHV0RmlsZU5hbWUoZmlsZU5hbWUpOwor
ICAgICAgICBpZiAoZmlsZU5hbWUuaXNFbXB0eSgpIHx8ICFmcmVvcGVuKHFQcmludGFibGUoZmls
ZU5hbWUpLCAidyIsIHN0ZG91dCkpIHsKKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiUmVk
aXJlY3QgU1RET1VUIGZhaWxlZC4iKTsKKyAgICAgICAgICAgIGV4aXQoMCk7CisgICAgICAgIH0K
KyAgICB9CisgICAgaW5kZXggPSBhcmdzLmluZGV4T2YoUUxhdGluMVN0cmluZygiLS1zdGRlcnIi
KSk7CisgICAgaWYgKGluZGV4ICE9IC0xKSB7CisgICAgICAgIFFTdHJpbmcgZmlsZU5hbWUgPSB0
YWtlT3B0aW9uVmFsdWUoYXJncywgaW5kZXgpOworICAgICAgICBkdW1wZXIuc2V0UmVkaXJlY3RF
cnJvckZpbGVOYW1lKGZpbGVOYW1lKTsKKyAgICAgICAgaWYgKCFmcmVvcGVuKHFQcmludGFibGUo
ZmlsZU5hbWUpLCAidyIsIHN0ZGVycikpIHsKKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAi
UmVkaXJlY3QgU1RERVJSIGZhaWxlZC4iKTsKKyAgICAgICAgICAgIGV4aXQoMCk7CisgICAgICAg
IH0KKyAgICB9CiAgICAgUVdlYkRhdGFiYXNlOjpyZW1vdmVBbGxEYXRhYmFzZXMoKTsKIAotICAg
IGlmIChhcmdzLmNvbnRhaW5zKFFMYXRpbjFTdHJpbmcoIi0iKSkpIHsKLSAgICAgICAgUU9iamVj
dDo6Y29ubmVjdCgmZHVtcGVyLCBTSUdOQUwocmVhZHkoKSksICZkdW1wZXIsIFNMT1QocmVhZExp
bmUoKSksIFF0OjpRdWV1ZWRDb25uZWN0aW9uKTsKLSAgICAgICAgUVRpbWVyOjpzaW5nbGVTaG90
KDAsICZkdW1wZXIsIFNMT1QocmVhZExpbmUoKSkpOwotICAgIH0gZWxzZQorICAgIGluZGV4ID0g
YXJncy5pbmRleE9mKFFMYXRpbjFTdHJpbmcoIi0iKSk7CisgICAgaWYgKGluZGV4ICE9IC0xKSB7
CisgICAgICAgIGFyZ3MucmVtb3ZlQXQoaW5kZXgpOworCisgICAgICAgIC8vIENvbnRpbnVlIHdh
aXRpbmcgaW4gU1RESU4gZm9yIG1vcmUgdGVzdCBjYXNlIGFmdGVyIHByb2Nlc3Mgb25lIHRlc3Qg
Y2FzZQorICAgICAgICBRT2JqZWN0Ojpjb25uZWN0KCZkdW1wZXIsIFNJR05BTChyZWFkeSgpKSwg
JmR1bXBlciwgU0xPVChyZWFkTGluZSgpKSwgUXQ6OlF1ZXVlZENvbm5lY3Rpb24pOyAgIAorCisg
ICAgICAgIC8vIFJlYWQgYW5kIG9ubHkgcmVhZCB0aGUgZmlyc3QgdGVzdCBjYXNlLCBpZ25vcmUg
dGhlIG90aGVycyAKKyAgICAgICAgaWYgKGFyZ3Muc2l6ZSgpID4gMCkgeyAKKyAgICAgICAgICAg
IC8vIFByb2Nlc3MgdGhlIGFyZ3VtZW50IGZpcnN0CisgICAgICAgICAgICBkdW1wZXIucHJvY2Vz
c0xpbmUoYXJnc1swXSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBHbyB0byBy
ZWFkIFNURElOCisgICAgICAgICAgIFFUaW1lcjo6c2luZ2xlU2hvdCgwLCAmZHVtcGVyLCBTTE9U
KHJlYWRMaW5lKCkpKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIC8vIEdvIGlu
dG8gc3RhbmRhbG9uZSBtb2RlCisgICAgICAgIC8vIFN0YW5kYWxvbmUgbW9kZSBuZWVkIGF0IGxl
YXN0IG9uZSB0ZXN0IGNhc2UKKyAgICAgICAgaWYgKGFyZ3MuY291bnQoKSA8IDEpIHsKKyAgICAg
ICAgICAgIHByaW50VXNhZ2UoKTsKKyAgICAgICAgICAgIGV4aXQoMCk7CisgICAgICAgIH0KICAg
ICAgICAgZHVtcGVyLnByb2Nlc3NBcmdzTGluZShhcmdzKTsKLQorICAgIH0KICAgICByZXR1cm4g
YXBwLmV4ZWMoKTsKIAogI2lmZGVmIFFfV1NfWDExCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86314</attachid>
            <date>2011-03-21 06:23:04 -0700</date>
            <delta_ts>2011-03-21 09:40:31 -0700</delta_ts>
            <desc>patch7</desc>
            <filename>bug56323_7.patch</filename>
            <type>text/plain</type>
            <size>8111</size>
            <attacher name="qi">qi.2.zhang</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDgxMzc1KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjYgQEAKKzIwMTEtMDMtMTcgIFFpIFpoYW5nICA8cWkuMi56aGFuZ0Bub2tpYS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1F0XSBBZGQg
YSBjb21tYW5kIGxpbmUgb3B0aW9uIHRvIGNhcHR1cmUgc3Rkb3V0IGFuZCBzdGRlcnIgZm9yIER1
bXBSZW5kZXJUcmVlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD01NjMyMworCisgICAgICAgIFVzaW5nIGZyZW9wZW4gdG8gcmVkaXJlY3QgU1RET1VUIGFu
ZCBTVERFUlIgd2hlbiBEdW1wUmVuZGVyVHJlZSBjb21tYW5kIGxpbmUgcHJvdmlkZSAKKyAgICAg
ICAgIi0tc3Rkb3V0IiBvciAiLS1zdGRlcnIiIG9wdGlvbi4KKworICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHVtcFJl
bmRlclRyZWU6On5EdW1wUmVuZGVyVHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpEdW1wUmVuZGVy
VHJlZTo6cHJvY2Vzc0FyZ3NMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkR1bXBSZW5kZXJUcmVl
Ojpsb2FkTmV4dFRlc3RJblN0YW5kQWxvbmVNb2RlKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9xdC9EdW1wUmVuZGVyVHJlZVF0Lmg6CisgICAgICAgIChXZWJDb3JlOjpEdW1wUmVuZGVyVHJl
ZTo6c2V0UmVkaXJlY3RPdXRwdXRGaWxlTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpEdW1wUmVu
ZGVyVHJlZTo6c2V0UmVkaXJlY3RFcnJvckZpbGVOYW1lKToKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9xdC9tYWluLmNwcDoKKyAgICAgICAgKGlzT3B0aW9uKToKKyAgICAgICAgKHRha2VPcHRp
b25WYWx1ZSk6CisgICAgICAgIChwcmludFVzYWdlKToKKyAgICAgICAgKG1haW4pOgorCiAyMDEx
LTAzLTE3ICBNaWtoYWlsIE5hZ2Fub3YgIDxtbmFnYW5vdkBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgWXVyeSBTZW1pa2hhdHNreS4KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJU
cmVlL3F0L0R1bXBSZW5kZXJUcmVlUXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlUXQuY3BwCShyZXZpc2lvbiA4MTA0NCkKKysrIFRvb2xz
L0R1bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlUXQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00OTksNiArNDk5LDEwIEBAIER1bXBSZW5kZXJUcmVlOjpEdW1wUmVuZGVyVHJlZSgpCiAKIER1
bXBSZW5kZXJUcmVlOjp+RHVtcFJlbmRlclRyZWUoKQogeworICAgIGlmICghbV9yZWRpcmVjdE91
dHB1dEZpbGVOYW1lLmlzRW1wdHkoKSkKKyAgICAgICAgZmNsb3NlKHN0ZG91dCk7CisgICAgaWYg
KCFtX3JlZGlyZWN0RXJyb3JGaWxlTmFtZS5pc0VtcHR5KCkpCisgICAgICAgIGZjbG9zZShzdGRl
cnIpOwogICAgIGRlbGV0ZSBtX21haW5WaWV3OwogICAgIGRlbGV0ZSBtX3N0ZGluOwogICAgIER1
bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpyZW1vdmVNb2NrRGV2aWNlT3JpZW50YXRpb24oKTsKQEAg
LTY3Niw5ICs2ODAsNyBAQCB2b2lkIER1bXBSZW5kZXJUcmVlOjpwcm9jZXNzQXJnc0xpbmUoY29u
CiB7CiAgICAgc2V0U3RhbmRBbG9uZU1vZGUodHJ1ZSk7CiAKLSAgICBmb3IgKGludCBpID0gMTsg
aSA8IGFyZ3Muc2l6ZSgpOyArK2kpCi0gICAgICAgIGlmICghYXJncy5hdChpKS5zdGFydHNXaXRo
KCctJykpCi0gICAgICAgICAgICBtX3N0YW5kQWxvbmVNb2RlVGVzdExpc3QuYXBwZW5kKGFyZ3Nb
aV0pOworICAgIG1fc3RhbmRBbG9uZU1vZGVUZXN0TGlzdCA9IGFyZ3M7CiAKICAgICBRRmlsZUlu
Zm8gZmlyc3RFbnRyeShtX3N0YW5kQWxvbmVNb2RlVGVzdExpc3QuZmlyc3QoKSk7CiAgICAgaWYg
KGZpcnN0RW50cnkuaXNEaXIoKSkgewpAQCAtNjkwLDExICs2OTIsMTIgQEAgdm9pZCBEdW1wUmVu
ZGVyVHJlZTo6cHJvY2Vzc0FyZ3NMaW5lKGNvbgogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8
IG1fc3RhbmRBbG9uZU1vZGVUZXN0TGlzdC5zaXplKCk7ICsraSkKICAgICAgICAgICAgIG1fc3Rh
bmRBbG9uZU1vZGVUZXN0TGlzdFtpXSA9IGZvbGRlckVudHJ5LmFic29sdXRlRmlsZVBhdGgobV9z
dGFuZEFsb25lTW9kZVRlc3RMaXN0W2ldKTsKICAgICB9Ci0KLSAgICBwcm9jZXNzTGluZShtX3N0
YW5kQWxvbmVNb2RlVGVzdExpc3QuZmlyc3QoKSk7Ci0gICAgbV9zdGFuZEFsb25lTW9kZVRlc3RM
aXN0LnJlbW92ZUZpcnN0KCk7Ci0KICAgICBjb25uZWN0KHRoaXMsIFNJR05BTChyZWFkeSgpKSwg
dGhpcywgU0xPVChsb2FkTmV4dFRlc3RJblN0YW5kQWxvbmVNb2RlKCkpKTsKKworICAgIGlmICgh
bV9zdGFuZEFsb25lTW9kZVRlc3RMaXN0LmlzRW1wdHkoKSkgeworICAgICAgICBRU3RyaW5nIGZp
cnN0ID0gbV9zdGFuZEFsb25lTW9kZVRlc3RMaXN0LnRha2VGaXJzdCgpOworICAgICAgICBwcm9j
ZXNzTGluZShmaXJzdCk7CisgICAgfQogfQogCiB2b2lkIER1bXBSZW5kZXJUcmVlOjpsb2FkTmV4
dFRlc3RJblN0YW5kQWxvbmVNb2RlKCkKQEAgLTcwMyw5ICs3MDYsOCBAQCB2b2lkIER1bXBSZW5k
ZXJUcmVlOjpsb2FkTmV4dFRlc3RJblN0YW5kCiAgICAgICAgIGVtaXQgcXVpdCgpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQotCi0gICAgcHJvY2Vzc0xpbmUobV9zdGFuZEFsb25lTW9kZVRlc3RM
aXN0LmZpcnN0KCkpOwotICAgIG1fc3RhbmRBbG9uZU1vZGVUZXN0TGlzdC5yZW1vdmVGaXJzdCgp
OworICAgIFFTdHJpbmcgZmlyc3QgPSBtX3N0YW5kQWxvbmVNb2RlVGVzdExpc3QudGFrZUZpcnN0
KCk7CisgICAgcHJvY2Vzc0xpbmUoZmlyc3QpOwogfQogCiB2b2lkIER1bXBSZW5kZXJUcmVlOjpw
cm9jZXNzTGluZShjb25zdCBRU3RyaW5nICZpbnB1dCkKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJU
cmVlL3F0L0R1bXBSZW5kZXJUcmVlUXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVy
VHJlZS9xdC9EdW1wUmVuZGVyVHJlZVF0LmgJKHJldmlzaW9uIDgxMDQ0KQorKysgVG9vbHMvRHVt
cFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWVRdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDUs
NiArMTA1LDggQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemVGb250cygpOwog
I2VuZGlmCiAgICAgdm9pZCBwcm9jZXNzQXJnc0xpbmUoY29uc3QgUVN0cmluZ0xpc3QmKTsKKyAg
ICB2b2lkIHNldFJlZGlyZWN0T3V0cHV0RmlsZU5hbWUoY29uc3QgUVN0cmluZyYgZmlsZU5hbWUp
IHsgbV9yZWRpcmVjdE91dHB1dEZpbGVOYW1lID0gZmlsZU5hbWU7IH0KKyAgICB2b2lkIHNldFJl
ZGlyZWN0RXJyb3JGaWxlTmFtZShjb25zdCBRU3RyaW5nJiBmaWxlTmFtZSkgeyBtX3JlZGlyZWN0
RXJyb3JGaWxlTmFtZSA9IGZpbGVOYW1lOyB9CiAKIHB1YmxpYyBRX1NMT1RTOgogICAgIHZvaWQg
aW5pdEpTT2JqZWN0cygpOwpAQCAtMTYwLDYgKzE2Miw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBt
X3N0YW5kQWxvbmVNb2RlOwogICAgIGJvb2wgbV9ncmFwaGljc0Jhc2VkOwogICAgIFFTdHJpbmcg
bV9wZXJzaXN0ZW50U3RvcmFnZVBhdGg7CisgICAgUVN0cmluZyBtX3JlZGlyZWN0T3V0cHV0Rmls
ZU5hbWU7CisgICAgUVN0cmluZyBtX3JlZGlyZWN0RXJyb3JGaWxlTmFtZTsKIH07CiAKIGNsYXNz
IE5ldHdvcmtBY2Nlc3NNYW5hZ2VyIDogcHVibGljIFFOZXR3b3JrQWNjZXNzTWFuYWdlciB7Cklu
ZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9tYWluLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9EdW1wUmVuZGVyVHJlZS9xdC9tYWluLmNwcAkocmV2aXNpb24gODEwNDQpCisrKyBUb29scy9E
dW1wUmVuZGVyVHJlZS9xdC9tYWluLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcsNiArNjcsMzMg
QEAgdm9pZCBtZXNzYWdlSGFuZGxlcihRdE1zZ1R5cGUgdHlwZSwgY29ucwogICAgIC8vIGRvIG5v
dGhpbmcKIH0KIAorLy8gV2Ugb25seSBzdXBwb3J0IC12IG9yIC0tcGl4ZWwtdGVzdHMgb3IgLS1z
dGRvdXQgb3IgLS1zdGRlcnIgb3IgLSwgYWxsIHRoZSBvdGhlcnMgd2lsbCBiZSAKKy8vIHBhc3Mg
YXMgdGVzdCBjYXNlIG5hbWUgKGV2ZW4gLWFiYy5odG1sIGlzIGEgdmFsaWQgdGVzdCBjYXNlIG5h
bWUpCitib29sIGlzT3B0aW9uKGNvbnN0IFFTdHJpbmcmIHN0cikKK3sKKyAgICByZXR1cm4gc3Ry
ID09IFFTdHJpbmcoIi12IikgfHwgc3RyID09IFFTdHJpbmcoIi0tcGl4ZWwtdGVzdHMiKQorICAg
ICAgICAgICB8fCBzdHIgPT0gUVN0cmluZygiLS1zdGRvdXQiKSB8fCBzdHIgPT0gUVN0cmluZygi
LS1zdGRlcnIiKQorICAgICAgICAgICB8fCBzdHIgPT0gUVN0cmluZygiLSIpOworfQorCitRU3Ry
aW5nIHRha2VPcHRpb25WYWx1ZShRU3RyaW5nTGlzdCYgYXJndW1lbnRzLCBpbnQgaW5kZXgpCit7
CisgICAgUVN0cmluZyByZXN1bHQ7CisKKyAgICBpZiAoaW5kZXggKyAxIDwgYXJndW1lbnRzLmNv
dW50KCkgJiYgIWlzT3B0aW9uKGFyZ3VtZW50cy5hdChpbmRleCArIDEpKSkKKyAgICAgICAgcmVz
dWx0ID0gYXJndW1lbnRzLnRha2VBdChpbmRleCArIDEpOworICAgIGFyZ3VtZW50cy5yZW1vdmVB
dChpbmRleCk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkIHByaW50VXNhZ2UoKQor
eworICAgIGZwcmludGYoc3RkZXJyLCAiVXNhZ2U6IER1bXBSZW5kZXJUcmVlIFstdnwtLXBpeGVs
LXRlc3RzXSBbLS1zdGRvdXQgb3V0cHV0X2ZpbGVuYW1lXSBbLXN0ZGVyciBlcnJvcl9maWxlbmFt
ZV0gZmlsZW5hbWUgW2ZpbGVuYW1lMi4ubl1cbiIpOworICAgIGZwcmludGYoc3RkZXJyLCAiT3Ig
Zm9sZGVyIGNvbnRhaW5pbmcgdGVzdCBmaWxlczogRHVtcFJlbmRlclRyZWUgWy12fC0tcGl4ZWwt
dGVzdHNdIGRpcnBhdGhcbiIpOworICAgIGZmbHVzaChzdGRlcnIpOworfQorCiBRU3RyaW5nIGdl
dF9iYWNrdHJhY2UoKSB7CiAgICAgUVN0cmluZyBzOwogCkBAIC0xNDMsMjggKzE3MCw3MCBAQCBp
bnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKQogCiAgICAgUVN0cmluZ0xpc3QgYXJncyA9
IGFwcC5hcmd1bWVudHMoKTsKICAgICBpZiAoYXJncy5jb3VudCgpIDwgMikgewotICAgICAgICBx
RGVidWcoKSA8PCAiVXNhZ2U6IER1bXBSZW5kZXJUcmVlIFstdnwtLXBpeGVsLXRlc3RzXSBmaWxl
bmFtZSBbZmlsZW5hbWUyLi5uXSI7Ci0gICAgICAgIHFEZWJ1ZygpIDw8ICJPciBmb2xkZXIgY29u
dGFpbmluZyB0ZXN0IGZpbGVzOiBEdW1wUmVuZGVyVHJlZSBbLXZ8LS1waXhlbC10ZXN0c10gZGly
cGF0aCI7Ci0gICAgICAgIGV4aXQoMCk7CisgICAgICAgIHByaW50VXNhZ2UoKTsKKyAgICAgICAg
ZXhpdCgxKTsKICAgICB9CiAKKyAgICAvLyBSZW1vdmUgdGhlIGZpcnN0IGFyZ3VtZW50cywgaXQg
aXMgYXBwbGljYXRpb24gbmFtZSBpdHNlbGYKKyAgICBhcmdzLnJlbW92ZUF0KDApOworCiAgICAg
Ly8gU3VwcHJlc3MgZGVidWcgb3V0cHV0IGZyb20gUXQgaWYgbm90IHN0YXJ0ZWQgd2l0aCAtdgot
ICAgIGlmICghYXJncy5jb250YWlucyhRTGF0aW4xU3RyaW5nKCItdiIpKSkKKyAgICBpbnQgaW5k
ZXggPSBhcmdzLmluZGV4T2YoUUxhdGluMVN0cmluZygiLXYiKSk7CisgICAgaWYgKGluZGV4ID09
IC0xKSAKICAgICAgICAgcUluc3RhbGxNc2dIYW5kbGVyKG1lc3NhZ2VIYW5kbGVyKTsKKyAgICBl
bHNlCisgICAgICAgIGFyZ3MucmVtb3ZlQXQoaW5kZXgpOwogCiAgICAgV2ViQ29yZTo6RHVtcFJl
bmRlclRyZWUgZHVtcGVyOwogCi0gICAgaWYgKGFyZ3MuY29udGFpbnMoUUxhdGluMVN0cmluZygi
LS1waXhlbC10ZXN0cyIpKSkKKyAgICBpbmRleCA9IGFyZ3MuaW5kZXhPZihRTGF0aW4xU3RyaW5n
KCItLXBpeGVsLXRlc3RzIikpOworICAgIGlmIChpbmRleCAhPSAtMSkgewogICAgICAgICBkdW1w
ZXIuc2V0RHVtcFBpeGVscyh0cnVlKTsKKyAgICAgICAgYXJncy5yZW1vdmVBdChpbmRleCk7Cisg
ICAgfQogCisgICAgaW5kZXggPSBhcmdzLmluZGV4T2YoUUxhdGluMVN0cmluZygiLS1zdGRvdXQi
KSk7CisgICAgaWYgKGluZGV4ICE9IC0xKSB7CisgICAgICAgIFFTdHJpbmcgZmlsZU5hbWUgPSB0
YWtlT3B0aW9uVmFsdWUoYXJncywgaW5kZXgpOworICAgICAgICBkdW1wZXIuc2V0UmVkaXJlY3RP
dXRwdXRGaWxlTmFtZShmaWxlTmFtZSk7CisgICAgICAgIGlmIChmaWxlTmFtZS5pc0VtcHR5KCkg
fHwgIWZyZW9wZW4ocVByaW50YWJsZShmaWxlTmFtZSksICJ3Iiwgc3Rkb3V0KSkgeworICAgICAg
ICAgICAgZnByaW50ZihzdGRlcnIsICJTVERPVVQgcmVkaXJlY3Rpb24gZmFpbGVkLiIpOworICAg
ICAgICAgICAgZXhpdCgxKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpbmRleCA9IGFyZ3MuaW5k
ZXhPZihRTGF0aW4xU3RyaW5nKCItLXN0ZGVyciIpKTsKKyAgICBpZiAoaW5kZXggIT0gLTEpIHsK
KyAgICAgICAgUVN0cmluZyBmaWxlTmFtZSA9IHRha2VPcHRpb25WYWx1ZShhcmdzLCBpbmRleCk7
CisgICAgICAgIGR1bXBlci5zZXRSZWRpcmVjdEVycm9yRmlsZU5hbWUoZmlsZU5hbWUpOworICAg
ICAgICBpZiAoIWZyZW9wZW4ocVByaW50YWJsZShmaWxlTmFtZSksICJ3Iiwgc3RkZXJyKSkgewor
ICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJTVERFUlIgcmVkaXJlY3Rpb24gZmFpbGVkLiIp
OworICAgICAgICAgICAgZXhpdCgxKTsKKyAgICAgICAgfQorICAgIH0KICAgICBRV2ViRGF0YWJh
c2U6OnJlbW92ZUFsbERhdGFiYXNlcygpOwogCi0gICAgaWYgKGFyZ3MuY29udGFpbnMoUUxhdGlu
MVN0cmluZygiLSIpKSkgewotICAgICAgICBRT2JqZWN0Ojpjb25uZWN0KCZkdW1wZXIsIFNJR05B
TChyZWFkeSgpKSwgJmR1bXBlciwgU0xPVChyZWFkTGluZSgpKSwgUXQ6OlF1ZXVlZENvbm5lY3Rp
b24pOwotICAgICAgICBRVGltZXI6OnNpbmdsZVNob3QoMCwgJmR1bXBlciwgU0xPVChyZWFkTGlu
ZSgpKSk7Ci0gICAgfSBlbHNlCisgICAgaW5kZXggPSBhcmdzLmluZGV4T2YoUUxhdGluMVN0cmlu
ZygiLSIpKTsKKyAgICBpZiAoaW5kZXggIT0gLTEpIHsKKyAgICAgICAgYXJncy5yZW1vdmVBdChp
bmRleCk7CisKKyAgICAgICAgLy8gQ29udGludWUgd2FpdGluZyBpbiBTVERJTiBmb3IgbW9yZSB0
ZXN0IGNhc2UgYWZ0ZXIgcHJvY2VzcyBvbmUgdGVzdCBjYXNlCisgICAgICAgIFFPYmplY3Q6OmNv
bm5lY3QoJmR1bXBlciwgU0lHTkFMKHJlYWR5KCkpLCAmZHVtcGVyLCBTTE9UKHJlYWRMaW5lKCkp
LCBRdDo6UXVldWVkQ29ubmVjdGlvbik7ICAgCisKKyAgICAgICAgLy8gUmVhZCBhbmQgb25seSBy
ZWFkIHRoZSBmaXJzdCB0ZXN0IGNhc2UsIGlnbm9yZSB0aGUgb3RoZXJzIAorICAgICAgICBpZiAo
YXJncy5zaXplKCkgPiAwKSB7IAorICAgICAgICAgICAgLy8gUHJvY2VzcyB0aGUgYXJndW1lbnQg
Zmlyc3QKKyAgICAgICAgICAgIGR1bXBlci5wcm9jZXNzTGluZShhcmdzWzBdKTsKKyAgICAgICAg
fSBlbHNlCisgICAgICAgICAgIFFUaW1lcjo6c2luZ2xlU2hvdCgwLCAmZHVtcGVyLCBTTE9UKHJl
YWRMaW5lKCkpKTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBHbyBpbnRvIHN0YW5kYWxvbmUg
bW9kZQorICAgICAgICAvLyBTdGFuZGFsb25lIG1vZGUgbmVlZCBhdCBsZWFzdCBvbmUgdGVzdCBj
YXNlCisgICAgICAgIGlmIChhcmdzLmNvdW50KCkgPCAxKSB7CisgICAgICAgICAgICBwcmludFVz
YWdlKCk7CisgICAgICAgICAgICBleGl0KDEpOworICAgICAgICB9CiAgICAgICAgIGR1bXBlci5w
cm9jZXNzQXJnc0xpbmUoYXJncyk7Ci0KKyAgICB9CiAgICAgcmV0dXJuIGFwcC5leGVjKCk7CiAK
ICNpZmRlZiBRX1dTX1gxMQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>