<?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>41228</bug_id>
          
          <creation_ts>2010-06-25 14:35:11 -0700</creation_ts>
          <short_desc>Fix http/tests/local/blob/send-data-blob.html on Windows</short_desc>
          <delta_ts>2010-06-29 18:16:39 -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>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Kinuko Yasuda">kinuko</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>jianli</cc>
    
    <cc>levin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>243204</commentid>
    <comment_count>0</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-06-25 14:35:11 -0700</bug_when>
    <thetext>http/tests/local/blob/send-data-blob.html test is failing on Windows.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243216</commentid>
    <comment_count>1</comment_count>
      <attachid>59801</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-06-25 15:03:58 -0700</bug_when>
    <thetext>Created attachment 59801
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243782</commentid>
    <comment_count>2</comment_count>
      <attachid>59801</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-06-28 11:25:22 -0700</bug_when>
    <thetext>Comment on attachment 59801
Patch

LayoutTests/ChangeLog:7
 +          Also fix test expectations for Windows.
Please add an empty line before this line.

WebCore/ChangeLog:7
 +          Fix line-ending conversion code.  Seems like I made a bad fix.
Please add an empty line before this line. Also might be better to say something like:
  Fix a regression bug in line-ending conversion code.

WebCore/platform/BlobItem.cpp:157
 +                      calculatedLength += (endingLength - 2);
Better to add more comment here. Like:
  // Turn CRLF into CR or LF if the line ending is set to CR or LF.
Please also add the comment in other appropriate places.

The calculation logic is kind of hard to understand with regard to &quot;(endingLength - 2)&quot; could be a negative value. This should be the reason we keep having regression problems here. I am thinking it might be better to go back to the original way of doing the calculation. That is, we do not set the calculatedLength to the string length first and then adjust it. Instead, we set it to 0 and then add up to it.

WebCore/platform/BlobItem.cpp:158
 +                      ++needFix;
It seems to better to define needFix as a boolean.

WebCore/platform/BlobItem.cpp:185
 +              } else if (ending != EndingCR) {
What are you going to do with else part? Do we need to copy the &apos;\r&apos; character?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243909</commentid>
    <comment_count>3</comment_count>
      <attachid>59943</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-06-28 14:42:18 -0700</bug_when>
    <thetext>Created attachment 59943
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243911</commentid>
    <comment_count>4</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-06-28 14:48:19 -0700</bug_when>
    <thetext>I rewrote the convertToCString function with single-purpose three functions that just convert line-endings into CRLF, CR and LF respectively.

(In reply to comment #2)
&gt; (From update of attachment 59801 [details])
&gt; LayoutTests/ChangeLog:7
&gt;  +          Also fix test expectations for Windows.
&gt; Please add an empty line before this line.

Done.

&gt; WebCore/ChangeLog:7
&gt;  +          Fix line-ending conversion code.  Seems like I made a bad fix.
&gt; Please add an empty line before this line. Also might be better to say something like:
&gt;   Fix a regression bug in line-ending conversion code.

Fixed.

&gt; WebCore/platform/BlobItem.cpp:158
&gt;  +                      ++needFix;
&gt; It seems to better to define needFix as a boolean.

Done.
 
&gt; WebCore/platform/BlobItem.cpp:185
&gt;  +              } else if (ending != EndingCR) {
&gt; What are you going to do with else part? Do we need to copy the &apos;\r&apos; character?

(In the previous code) yes, else case would be char==&apos;\r&apos; and ending==EndingCR.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243971</commentid>
    <comment_count>5</comment_count>
      <attachid>59943</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-06-28 16:15:57 -0700</bug_when>
    <thetext>Comment on attachment 59943
Patch

WebCore/platform/BlobItem.cpp:128
 +  // Convert line-endings (CR and LF) into CRLF.
Probably better to say:
  // Normalize all line-endings to CRLF.

WebCore/platform/BlobItem.cpp:176
 +  static CString convertToCR(const CString&amp; from)
I think we can combine convertToCR and convertToLF to one single function like the following:
  convertToCROrLF(const CString&amp; from, bool toCR)
  {
      char fromLineEndingChar = toCR ? &apos;\n&apos; : &apos;\r&apos;;
      char toLineEndingChar = toCR ? &apos;\r&apos; : &apos;\n&apos;;
      ...
      while (...) {
          ...
          } else if (c == fromLineEndingChar) {
              // Turn CF/LF into LF/CR.
  }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244022</commentid>
    <comment_count>6</comment_count>
      <attachid>59968</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-06-28 18:18:08 -0700</bug_when>
    <thetext>Created attachment 59968
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244029</commentid>
    <comment_count>7</comment_count>
      <attachid>59971</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-06-28 18:35:14 -0700</bug_when>
    <thetext>Created attachment 59971
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244030</commentid>
    <comment_count>8</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-06-28 18:37:11 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 59943 [details])
&gt; WebCore/platform/BlobItem.cpp:128
&gt;  +  // Convert line-endings (CR and LF) into CRLF.
&gt; Probably better to say:
&gt;   // Normalize all line-endings to CRLF.

Done.

&gt; WebCore/platform/BlobItem.cpp:176
&gt;  +  static CString convertToCR(const CString&amp; from)
&gt; I think we can combine convertToCR and convertToLF to one single function like the following:
&gt;   convertToCROrLF(const CString&amp; from, bool toCR)
&gt;   {
&gt;       char fromLineEndingChar = toCR ? &apos;\n&apos; : &apos;\r&apos;;
&gt;       char toLineEndingChar = toCR ? &apos;\r&apos; : &apos;\n&apos;;
&gt;       ...
&gt;       while (...) {
&gt;           ...
&gt;           } else if (c == fromLineEndingChar) {
&gt;               // Turn CF/LF into LF/CR.
&gt;   }

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244374</commentid>
    <comment_count>9</comment_count>
      <attachid>59971</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-06-29 10:43:49 -0700</bug_when>
    <thetext>Comment on attachment 59971
Patch

Looks good except the following minor issue. Please address it before you land the patch.

WebCore/platform/BlobItem.cpp:242
 +      ASSERT_NOT_REACHED();
This is not needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244583</commentid>
    <comment_count>10</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-06-29 18:16:39 -0700</bug_when>
    <thetext>Committed r62155: &lt;http://trac.webkit.org/changeset/62155&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59801</attachid>
            <date>2010-06-25 15:03:58 -0700</date>
            <delta_ts>2010-06-28 14:42:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-41228-20100625150357.patch</filename>
            <type>text/plain</type>
            <size>5741</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhNmMwNjg2NGNjZmIwZmNhNDhiZTg3YmFlNGNiODZjNjU1ZTQxNTc0Li44NjEyNDYy
ZTlhM2EyMzZkMzQxMDdhM2JlMjEwMjc5YTBjZWZjMTM5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTAtMDYtMjUgIEtpbnVrbyBZYXN1ZGEgIDxraW51a29AY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeCBodHRwL3Rlc3Rz
L2xvY2FsL2Jsb2Ivc2VuZC1kYXRhLWJsb2IuaHRtbCBvbiBXaW5kb3dzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MTIyOAorICAgICAgICBBbHNvIGZp
eCB0ZXN0IGV4cGVjdGF0aW9ucyBmb3IgV2luZG93cy4KKworICAgICAgICAqIGh0dHAvdGVzdHMv
cmVzb3VyY2VzL3Bvc3QtYW5kLXZlcmlmeS1oeWJyaWQuY2dpOgorICAgICAgICAqIHBsYXRmb3Jt
L2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4v
ZmFzdC9qcy9nbG9iYWwtY29uc3RydWN0b3JzLWV4cGVjdGVkLnR4dDoKKwogMjAxMC0wNi0yNSAg
QWxleCBNaWxvd3NraSAgPGFsZXhAbWlsb3dza2kuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9yZXNvdXJjZXMvcG9zdC1hbmQtdmVyaWZ5LWh5YnJpZC5jZ2kgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3Jlc291cmNlcy9wb3N0LWFuZC12ZXJpZnktaHlicmlkLmNnaQppbmRleCA4
ZmM5YTI3ZDQyYzM2MzMwZGJjMDliYzdiZGU3MjlkZjUzNGYyNDZmLi4yY2M4MjZhNmVkOTk0Nzhm
NTlkZDMzNGU3YWZhYTI0YmU2YjFmMjdjIDEwMDc1NQotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3Jlc291cmNlcy9wb3N0LWFuZC12ZXJpZnktaHlicmlkLmNnaQorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3Jlc291cmNlcy9wb3N0LWFuZC12ZXJpZnktaHlicmlkLmNnaQpAQCAtMSw1
ICsxLDcgQEAKICMhL3Vzci9iaW4vcGVybCAtdwogCit1c2UgQ29uZmlnOworCiBwcmludCAiQ29u
dGVudC10eXBlOiB0ZXh0L3BsYWluXG5cbiI7CiAKIGlmICgkRU5WeydSRVFVRVNUX01FVEhPRCd9
IGVxICJQT1NUIikgewpAQCAtNzAsNyArNzIsNyBAQCBpZiAoJEVOVnsnUkVRVUVTVF9NRVRIT0Qn
fSBlcSAiUE9TVCIpIHsKICAgICB9CiAKICAgICBpZiAoJHZhbHVlc3snY29udmVydF9uZXdsaW5l
cyd9KSB7Ci0gICAgICAgICRuYXRpdmVFbmRpbmcgPSAoJF5PID1+IC9NU1dpbi8pID8gIlxyXG4i
IDogIlxuIjsKKyAgICAgICAgJG5hdGl2ZUVuZGluZyA9ICgkQ29uZmlne29zbmFtZX0gPX4gLyhN
U1dpbnxjeWd3aW4pLykgPyAiXHJcbiIgOiAiXG4iOwogICAgICAgICAkcG9zdERhdGEgPX4gcy8k
bmF0aXZlRW5kaW5nL1tOTF0vZzsKICAgICB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dCBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAppbmRleCBjMTUxYTBjNWY5M2QzYTRj
ZTJmZGMzZWQ0MjgxZGMxMWRkOWQyMmY1Li5mZTFhMjI5ZjRhNDdiOGUxZGI4OWVlMjFkMzdiYWNh
NmE3ZjIyMzQxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0
X2V4cGVjdGF0aW9ucy50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVz
dF9leHBlY3RhdGlvbnMudHh0CkBAIC0yODg1LDkgKzI4ODUsNiBAQCBCVUc0NTA0OCBXSU4gOiBm
YXN0L2hhcm5lc3Mvc2hvdy1tb2RhbC1kaWFsb2cuaHRtbCA9IFRJTUVPVVQKIC8vIFdlYktpdCBy
b2xsIDYxNTQ3OjYxNjI5LiBTdGlsbCBuZWVkIHRvIGludmVzdGlnYXRlLgogQlVHX0hDTEFNIDog
ZmFzdC9qcy9zY3JpcHQtbGluZS1udW1iZXIuaHRtbCA9IFRFWFQKIAotLy8gQWRkZWQgYnkgcjYx
NjUwCi1CVUc0NzI1OSBXSU4gOiBodHRwL3Rlc3RzL2xvY2FsL2Jsb2Ivc2VuZC1kYXRhLWJsb2Iu
aHRtbCA9IFRFWFQKLQogLy8gTGF5b3V0VGVzdENvbnRyb2xsZXI6OmlzUGFnZUJveFZpc2libGUs
IHBhZ2VBcmVhUmVjdEluUGl4ZWxzLCBhbmQgcHJlZmVycmVkUGFnZVNpemVJblBpeGVscyBhcmUg
bm90IGltcGxlbWVudGVkIHlldCBmb3IgQ2hyb21pdW0uCiBCVUdXSzM3NTM4IDogcHJpbnRpbmcv
cGFnZS1mb3JtYXQtZGF0YS5odG1sID0gVEVYVAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS93aW4vZmFzdC9qcy9nbG9iYWwtY29uc3RydWN0b3JzLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL3dpbi9mYXN0L2pzL2dsb2JhbC1jb25zdHJ1Y3RvcnMtZXhwZWN0
ZWQudHh0CmluZGV4IGVhYzM1Yjc2MmQ3ZDQ0NDBhMzk3NjE0MDUwMmNkODVhNTVjNmQyYTMuLmFl
MmFlNjlhNDBkYWIzMGE4NWZlMjY3YWRlMDk0NTU2NTNlNTZiNDcgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL3dpbi9mYXN0L2pzL2dsb2JhbC1jb25zdHJ1Y3RvcnMtZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9mYXN0L2pzL2dsb2JhbC1jb25zdHJ1
Y3RvcnMtZXhwZWN0ZWQudHh0CkBAIC03LDYgKzcsNyBAQCBQQVNTIEF0dHIudG9TdHJpbmcoKSBp
cyAnW29iamVjdCBBdHRyQ29uc3RydWN0b3JdJwogUEFTUyBBdWRpby50b1N0cmluZygpIGlzICdb
b2JqZWN0IEF1ZGlvQ29uc3RydWN0b3JdJwogUEFTUyBCZWZvcmVMb2FkRXZlbnQudG9TdHJpbmco
KSBpcyAnW29iamVjdCBCZWZvcmVMb2FkRXZlbnRDb25zdHJ1Y3Rvcl0nCiBQQVNTIEJsb2IudG9T
dHJpbmcoKSBpcyAnW29iamVjdCBCbG9iQ29uc3RydWN0b3JdJworUEFTUyBCbG9iQnVpbGRlci50
b1N0cmluZygpIGlzICdbb2JqZWN0IEJsb2JCdWlsZGVyQ29uc3RydWN0b3JdJwogUEFTUyBDREFU
QVNlY3Rpb24udG9TdHJpbmcoKSBpcyAnW29iamVjdCBDREFUQVNlY3Rpb25Db25zdHJ1Y3Rvcl0n
CiBQQVNTIENTU0NoYXJzZXRSdWxlLnRvU3RyaW5nKCkgaXMgJ1tvYmplY3QgQ1NTQ2hhcnNldFJ1
bGVDb25zdHJ1Y3Rvcl0nCiBQQVNTIENTU0ZvbnRGYWNlUnVsZS50b1N0cmluZygpIGlzICdbb2Jq
ZWN0IENTU0ZvbnRGYWNlUnVsZUNvbnN0cnVjdG9yXScKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjFjMjU1NjdiYzlkN2E0NjY5OTM5YWNh
YWM4ZDNmZDIzMzdmOTJlMi4uNjljZjc4NTgwZTZkY2FhNTNlNzYwZTc4ZTU3ZmVkMTA5OWUzZGJj
NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNiBAQAorMjAxMC0wNi0yNSAgS2ludWtvIFlhc3VkYSAgPGtpbnVrb0BjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgRml4IGh0dHAvdGVzdHMvbG9jYWwvYmxvYi9zZW5kLWRhdGEtYmxvYi5odG1sIG9uIFdpbmRv
d3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQxMjI4
CisgICAgICAgIEZpeCBsaW5lLWVuZGluZyBjb252ZXJzaW9uIGNvZGUuICBTZWVtcyBsaWtlIEkg
bWFkZSBhIGJhZCBmaXguCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGFzIHRoaXMgaXMgZm9yIGJ1
ZyBmaXhlcy4KKworICAgICAgICAqIHBsYXRmb3JtL0Jsb2JJdGVtLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlN0cmluZ0Jsb2JJdGVtOjpjb252ZXJ0VG9DU3RyaW5nKToKKwogMjAxMC0wNi0yNSAg
TGVpIFpoZW5nICA8bHpoZW5nQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBE
aW1pdHJpIEdsYXprb3YuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL0Jsb2JJdGVtLmNw
cCBiL1dlYkNvcmUvcGxhdGZvcm0vQmxvYkl0ZW0uY3BwCmluZGV4IGY5OGU0NjYwNDgxNTlhNzdj
YmM5ZTRhNGU3YzU4OGEwMmUyMWRmOWMuLmUzN2JjY2M4Mjk0MGFiNzUwZjBjNWQ1NDZkMjlkYTkx
NTc1MDRlY2UgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vQmxvYkl0ZW0uY3BwCisrKyBi
L1dlYkNvcmUvcGxhdGZvcm0vQmxvYkl0ZW0uY3BwCkBAIC0xNTEsMTAgKzE1MSwxMiBAQCBDU3Ry
aW5nIFN0cmluZ0Jsb2JJdGVtOjpjb252ZXJ0VG9DU3RyaW5nKGNvbnN0IFN0cmluZyYgdGV4dCwg
TGluZUVuZGluZyBlbmRpbmcsCiAgICAgd2hpbGUgKGNoYXIgYyA9ICpwKyspIHsKICAgICAgICAg
aWYgKGMgPT0gJ1xyJykgewogICAgICAgICAgICAgLy8gU2FmZSB0byBsb29rIGFoZWFkIGJlY2F1
c2Ugb2YgdHJhaWxpbmcgJ1wwJy4KLSAgICAgICAgICAgIGlmICgqcCA9PSAnXG4nICYmIGVuZGlu
ZyAhPSBFbmRpbmdDUkxGKSB7CisgICAgICAgICAgICBpZiAoKnAgPT0gJ1xuJykgewogICAgICAg
ICAgICAgICAgIHArKzsKLSAgICAgICAgICAgICAgICBjYWxjdWxhdGVkTGVuZ3RoICs9IChlbmRp
bmdMZW5ndGggLSAyKTsKLSAgICAgICAgICAgICAgICArK25lZWRGaXg7CisgICAgICAgICAgICAg
ICAgaWYgKGVuZGluZyAhPSBFbmRpbmdDUkxGKSB7CisgICAgICAgICAgICAgICAgICAgIGNhbGN1
bGF0ZWRMZW5ndGggKz0gKGVuZGluZ0xlbmd0aCAtIDIpOworICAgICAgICAgICAgICAgICAgICAr
K25lZWRGaXg7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIGlmIChlbmRp
bmcgIT0gRW5kaW5nQ1IpIHsKICAgICAgICAgICAgICAgICBjYWxjdWxhdGVkTGVuZ3RoICs9IChl
bmRpbmdMZW5ndGggLSAxKTsKICAgICAgICAgICAgICAgICArK25lZWRGaXg7CkBAIC0xNzQsMTEg
KzE3NiwxMyBAQCBDU3RyaW5nIFN0cmluZ0Jsb2JJdGVtOjpjb252ZXJ0VG9DU3RyaW5nKGNvbnN0
IFN0cmluZyYgdGV4dCwgTGluZUVuZGluZyBlbmRpbmcsCiAgICAgcmVzdWx0ID0gQ1N0cmluZzo6
bmV3VW5pbml0aWFsaXplZChjYWxjdWxhdGVkTGVuZ3RoLCBxKTsKICAgICB3aGlsZSAoY2hhciBj
ID0gKnArKykgewogICAgICAgICBpZiAoYyA9PSAnXHInKSB7Ci0gICAgICAgICAgICBpZiAoKnAg
PT0gJ1xuJyAmJiBlbmRpbmcgIT0gRW5kaW5nQ1JMRikgeworICAgICAgICAgICAgaWYgKCpwID09
ICdcbicpIHsKICAgICAgICAgICAgICAgICBwKys7Ci0gICAgICAgICAgICAgICAgbWVtY3B5KHEs
IGVuZGluZ0NoYXJzLCBlbmRpbmdMZW5ndGgpOwotICAgICAgICAgICAgICAgIHEgKz0gZW5kaW5n
TGVuZ3RoOwotICAgICAgICAgICAgfSBlbHNlIGlmICgqcCAhPSAnXG4nICYmIGVuZGluZyAhPSBF
bmRpbmdDUikgeworICAgICAgICAgICAgICAgIGlmIChlbmRpbmcgIT0gRW5kaW5nQ1JMRikgewor
ICAgICAgICAgICAgICAgICAgICBtZW1jcHkocSwgZW5kaW5nQ2hhcnMsIGVuZGluZ0xlbmd0aCk7
CisgICAgICAgICAgICAgICAgICAgIHEgKz0gZW5kaW5nTGVuZ3RoOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0gZWxzZSBpZiAoZW5kaW5nICE9IEVuZGluZ0NSKSB7CiAgICAgICAg
ICAgICAgICAgbWVtY3B5KHEsIGVuZGluZ0NoYXJzLCBlbmRpbmdMZW5ndGgpOwogICAgICAgICAg
ICAgICAgIHEgKz0gZW5kaW5nTGVuZ3RoOwogICAgICAgICAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59943</attachid>
            <date>2010-06-28 14:42:18 -0700</date>
            <delta_ts>2010-06-28 18:18:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-41228-20100628144217.patch</filename>
            <type>text/plain</type>
            <size>10628</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwNTBhMjQ0OGU0Y2Y1MWUyMmEzNzZmM2EzOTdmOGI5YzE0OWI1ZjBjLi43ZGRlY2Zh
MmUzNTY5ZjFiOTMwZDZiMzdiYjJlMDczMjlhZmJmMWYyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTAtMDYtMjUgIEtpbnVrbyBZYXN1ZGEgIDxraW51a29AY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeCBodHRwL3Rlc3Rz
L2xvY2FsL2Jsb2Ivc2VuZC1kYXRhLWJsb2IuaHRtbCBvbiBXaW5kb3dzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MTIyOAorCisgICAgICAgIEZpeCB0
aGUgY2dpIGNvZGUgdG8gbWFrZSBpdCB3b3JrIHdpdGggY3lnd2luIHBlcmwuCisgICAgICAgIEFs
c28gZml4IHRlc3QgZXhwZWN0YXRpb25zIGZvciBXaW5kb3dzLgorCisgICAgICAgICogaHR0cC90
ZXN0cy9yZXNvdXJjZXMvcG9zdC1hbmQtdmVyaWZ5LWh5YnJpZC5jZ2k6CisgICAgICAgICogcGxh
dGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0OgorICAgICAgICAqIHBsYXRmb3Jt
L3dpbi9mYXN0L2pzL2dsb2JhbC1jb25zdHJ1Y3RvcnMtZXhwZWN0ZWQudHh0OgorCiAyMDEwLTA2
LTI4ICBBbmRyZWFzIEtsaW5nICA8YW5kcmVhcy5rbGluZ0Bub2tpYS5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlcy9wb3N0LWFuZC12ZXJpZnktaHlicmlkLmNnaSBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VzL3Bvc3QtYW5kLXZlcmlmeS1oeWJyaWQu
Y2dpCmluZGV4IDhmYzlhMjdkNDJjMzYzMzBkYmMwOWJjN2JkZTcyOWRmNTM0ZjI0NmYuLjJjYzgy
NmE2ZWQ5OTQ3OGY1OWRkMzM0ZTdhZmFhMjRiZTZiMWYyN2MgMTAwNzU1Ci0tLSBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VzL3Bvc3QtYW5kLXZlcmlmeS1oeWJyaWQuY2dpCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VzL3Bvc3QtYW5kLXZlcmlmeS1oeWJyaWQu
Y2dpCkBAIC0xLDUgKzEsNyBAQAogIyEvdXNyL2Jpbi9wZXJsIC13CiAKK3VzZSBDb25maWc7CisK
IHByaW50ICJDb250ZW50LXR5cGU6IHRleHQvcGxhaW5cblxuIjsKIAogaWYgKCRFTlZ7J1JFUVVF
U1RfTUVUSE9EJ30gZXEgIlBPU1QiKSB7CkBAIC03MCw3ICs3Miw3IEBAIGlmICgkRU5WeydSRVFV
RVNUX01FVEhPRCd9IGVxICJQT1NUIikgewogICAgIH0KIAogICAgIGlmICgkdmFsdWVzeydjb252
ZXJ0X25ld2xpbmVzJ30pIHsKLSAgICAgICAgJG5hdGl2ZUVuZGluZyA9ICgkXk8gPX4gL01TV2lu
LykgPyAiXHJcbiIgOiAiXG4iOworICAgICAgICAkbmF0aXZlRW5kaW5nID0gKCRDb25maWd7b3Nu
YW1lfSA9fiAvKE1TV2lufGN5Z3dpbikvKSA/ICJcclxuIiA6ICJcbiI7CiAgICAgICAgICRwb3N0
RGF0YSA9fiBzLyRuYXRpdmVFbmRpbmcvW05MXS9nOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0IGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CmluZGV4IGI3MmVm
Zjk3NzY5OTEyOWZmOWU3MjgyMTU1OTE2Mjg3YzU4ZjRjYWUuLjA0N2VlNjMzMzRjNGQ2M2Y2NDdh
MGU5ODYzMjk0NmNhZTM0ZmFkYjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKQEAgLTI4ODQsOSArMjg4NCw2IEBAIEJVRzQ1
MDQ4IFdJTiA6IGZhc3QvaGFybmVzcy9zaG93LW1vZGFsLWRpYWxvZy5odG1sID0gVElNRU9VVAog
Ly8gV2ViS2l0IHJvbGwgNjE1NDc6NjE2MjkuIFN0aWxsIG5lZWQgdG8gaW52ZXN0aWdhdGUuCiBC
VUdfSENMQU0gOiBmYXN0L2pzL3NjcmlwdC1saW5lLW51bWJlci5odG1sID0gVEVYVAogCi0vLyBB
ZGRlZCBieSByNjE2NTAKLUJVRzQ3MjU5IFdJTiA6IGh0dHAvdGVzdHMvbG9jYWwvYmxvYi9zZW5k
LWRhdGEtYmxvYi5odG1sID0gVEVYVAotCiAvLyBMYXlvdXRUZXN0Q29udHJvbGxlcjo6aXNQYWdl
Qm94VmlzaWJsZSwgcGFnZUFyZWFSZWN0SW5QaXhlbHMsIGFuZCBwcmVmZXJyZWRQYWdlU2l6ZUlu
UGl4ZWxzIGFyZSBub3QgaW1wbGVtZW50ZWQgeWV0IGZvciBDaHJvbWl1bS4KIEJVR1dLMzc1Mzgg
OiBwcmludGluZy9wYWdlLWZvcm1hdC1kYXRhLmh0bWwgPSBURVhUCiAKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL3dpbi9mYXN0L2pzL2dsb2JhbC1jb25zdHJ1Y3RvcnMtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL2Zhc3QvanMvZ2xvYmFsLWNvbnN0cnVj
dG9ycy1leHBlY3RlZC50eHQKaW5kZXggZWFjMzViNzYyZDdkNDQ0MGEzOTc2MTQwNTAyY2Q4NWE1
NWM2ZDJhMy4uYWUyYWU2OWE0MGRhYjMwYTg1ZmUyNjdhZGUwOTQ1NTY1M2U1NmI0NyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL2Zhc3QvanMvZ2xvYmFsLWNvbnN0cnVjdG9y
cy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL2Zhc3QvanMvZ2xv
YmFsLWNvbnN0cnVjdG9ycy1leHBlY3RlZC50eHQKQEAgLTcsNiArNyw3IEBAIFBBU1MgQXR0ci50
b1N0cmluZygpIGlzICdbb2JqZWN0IEF0dHJDb25zdHJ1Y3Rvcl0nCiBQQVNTIEF1ZGlvLnRvU3Ry
aW5nKCkgaXMgJ1tvYmplY3QgQXVkaW9Db25zdHJ1Y3Rvcl0nCiBQQVNTIEJlZm9yZUxvYWRFdmVu
dC50b1N0cmluZygpIGlzICdbb2JqZWN0IEJlZm9yZUxvYWRFdmVudENvbnN0cnVjdG9yXScKIFBB
U1MgQmxvYi50b1N0cmluZygpIGlzICdbb2JqZWN0IEJsb2JDb25zdHJ1Y3Rvcl0nCitQQVNTIEJs
b2JCdWlsZGVyLnRvU3RyaW5nKCkgaXMgJ1tvYmplY3QgQmxvYkJ1aWxkZXJDb25zdHJ1Y3Rvcl0n
CiBQQVNTIENEQVRBU2VjdGlvbi50b1N0cmluZygpIGlzICdbb2JqZWN0IENEQVRBU2VjdGlvbkNv
bnN0cnVjdG9yXScKIFBBU1MgQ1NTQ2hhcnNldFJ1bGUudG9TdHJpbmcoKSBpcyAnW29iamVjdCBD
U1NDaGFyc2V0UnVsZUNvbnN0cnVjdG9yXScKIFBBU1MgQ1NTRm9udEZhY2VSdWxlLnRvU3RyaW5n
KCkgaXMgJ1tvYmplY3QgQ1NTRm9udEZhY2VSdWxlQ29uc3RydWN0b3JdJwpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3MWM1YTZkNzNjOGQw
MzQ4MGNmZmYxNzMyMWI2YThlZjUzN2M1MTdkLi41MjA3NjZiZjNmOTBjOTRlNzI2NTljYTdkMGNi
Yzc5MWQ0ZjdkYWEwIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEwLTA2LTI1ICBLaW51a28gWWFzdWRhICA8
a2ludWtvQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBGaXggaHR0cC90ZXN0cy9sb2NhbC9ibG9iL3NlbmQtZGF0YS1ibG9iLmh0
bWwgb24gV2luZG93cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NDEyMjgKKworICAgICAgICBGaXggYSByZWdyZXNzaW9uIGJ1ZyBpbiB0aGUgbGluZS1j
b252ZXJzaW9uIGNvZGUuCisgICAgICAgIFJld3JpdGUgdGhlIGxpbmUtY29udmVyc2lvbiBmdW5j
dGlvbiB3aXRoIHNpbXBsZXIgZnVuY3Rpb25zIHRvCisgICAgICAgIG1ha2UgaXQgbGVzcyBlcnJv
ciBwcm9uZS4KKworICAgICAgICBObyBuZXcgdGVzdHMgYXMgdGhpcyBpcyBmb3IgYnVnIGZpeGVz
LgorCisgICAgICAgICogcGxhdGZvcm0vQmxvYkl0ZW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U3RyaW5nQmxvYkl0ZW06OmNvbnZlcnRUb0NTdHJpbmcpOgorCiAyMDEwLTA2LTI4ICBBbmRyZWFz
IEtsaW5nICA8YW5kcmVhcy5rbGluZ0Bub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
S2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3Jt
L0Jsb2JJdGVtLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vQmxvYkl0ZW0uY3BwCmluZGV4IGY5OGU0
NjYwNDgxNTlhNzdjYmM5ZTRhNGU3YzU4OGEwMmUyMWRmOWMuLjE0ZDBiZDYwM2U2Y2RiN2I3MjRj
YmUxZjM5NTJkZWVjMjM1ZGU2MWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vQmxvYkl0
ZW0uY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vQmxvYkl0ZW0uY3BwCkBAIC0zMyw2ICszMyw3
IEBACiAKICNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiVVVJRC5oIgorI2luY2x1
ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTI0LDY3
ICsxMjUsMTI1IEBAIFN0cmluZ0Jsb2JJdGVtOjpTdHJpbmdCbG9iSXRlbShjb25zdCBDU3RyaW5n
JiB0ZXh0KQogewogfQogCi1DU3RyaW5nIFN0cmluZ0Jsb2JJdGVtOjpjb252ZXJ0VG9DU3RyaW5n
KGNvbnN0IFN0cmluZyYgdGV4dCwgTGluZUVuZGluZyBlbmRpbmcsIFRleHRFbmNvZGluZyBlbmNv
ZGluZykKKy8vIENvbnZlcnQgbGluZS1lbmRpbmdzIChDUiBhbmQgTEYpIGludG8gQ1JMRi4KK3N0
YXRpYyBDU3RyaW5nIGNvbnZlcnRUb0NSTEYoY29uc3QgQ1N0cmluZyYgZnJvbSkKIHsKLSAgICBD
U3RyaW5nIGZyb20gPSBlbmNvZGluZy5lbmNvZGUodGV4dC5jaGFyYWN0ZXJzKCksIHRleHQubGVu
Z3RoKCksIEVudGl0aWVzRm9yVW5lbmNvZGFibGVzKTsKLSAgICBDU3RyaW5nIHJlc3VsdCA9IGZy
b207Ci0KLSAgICBpZiAoZW5kaW5nID09IEVuZGluZ1RyYW5zcGFyZW50KQotICAgICAgICByZXR1
cm4gcmVzdWx0OworICAgIHVuc2lnbmVkIG5ld0xlbiA9IDA7CisgICAgY29uc3QgY2hhciogcCA9
IGZyb20uZGF0YSgpOworICAgIHdoaWxlIChjaGFyIGMgPSAqcCsrKSB7CisgICAgICAgIGlmIChj
ID09ICdccicpIHsKKyAgICAgICAgICAgIC8vIFNhZmUgdG8gbG9vayBhaGVhZCBiZWNhdXNlIG9m
IHRyYWlsaW5nICdcMCcuCisgICAgICAgICAgICBpZiAoKnAgIT0gJ1xuJykgeworICAgICAgICAg
ICAgICAgIC8vIFR1cm4gQ1IgaW50byBDUkxGLgorICAgICAgICAgICAgICAgIG5ld0xlbiArPSAy
OworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKGMgPT0gJ1xuJykgeworICAgICAg
ICAgICAgLy8gVHVybiBMRiBpbnRvIENSTEYuCisgICAgICAgICAgICBuZXdMZW4gKz0gMjsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIExlYXZlIG90aGVyIGNoYXJhY3RlcnMgYWxv
bmUuCisgICAgICAgICAgICBuZXdMZW4gKz0gMTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAo
bmV3TGVuID09IGZyb20ubGVuZ3RoKCkpCisgICAgICAgIHJldHVybiBmcm9tOwogCi0gICAgaWYg
KGVuZGluZyA9PSBFbmRpbmdOYXRpdmUpIHsKLSNpZiBPUyhXSU5ET1dTKQotICAgICAgICBlbmRp
bmcgPSBFbmRpbmdDUkxGOwotI2Vsc2UKLSAgICAgICAgZW5kaW5nID0gRW5kaW5nTEY7Ci0jZW5k
aWYKKyAgICAvLyBNYWtlIGEgY29weSBvZiB0aGUgc3RyaW5nLgorICAgIHAgPSBmcm9tLmRhdGEo
KTsKKyAgICBjaGFyKiBxOworICAgIENTdHJpbmcgcmVzdWx0ID0gQ1N0cmluZzo6bmV3VW5pbml0
aWFsaXplZChuZXdMZW4sIHEpOworICAgIHdoaWxlIChjaGFyIGMgPSAqcCsrKSB7CisgICAgICAg
IGlmIChjID09ICdccicpIHsKKyAgICAgICAgICAgIC8vIFNhZmUgdG8gbG9vayBhaGVhZCBiZWNh
dXNlIG9mIHRyYWlsaW5nICdcMCcuCisgICAgICAgICAgICBpZiAoKnAgIT0gJ1xuJykgeworICAg
ICAgICAgICAgICAgIC8vIFR1cm4gQ1IgaW50byBDUkxGLgorICAgICAgICAgICAgICAgICpxKysg
PSAnXHInOworICAgICAgICAgICAgICAgICpxKysgPSAnXG4nOworICAgICAgICAgICAgfQorICAg
ICAgICB9IGVsc2UgaWYgKGMgPT0gJ1xuJykgeworICAgICAgICAgICAgLy8gVHVybiBMRiBpbnRv
IENSTEYuCisgICAgICAgICAgICAqcSsrID0gJ1xyJzsKKyAgICAgICAgICAgICpxKysgPSAnXG4n
OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gTGVhdmUgb3RoZXIgY2hhcmFjdGVy
cyBhbG9uZS4KKyAgICAgICAgICAgICpxKysgPSBjOworICAgICAgICB9CiAgICAgfQorICAgIHJl
dHVybiByZXN1bHQ7Cit9CiAKLSAgICBjb25zdCBjaGFyKiBlbmRpbmdDaGFycyA9IChlbmRpbmcg
PT0gRW5kaW5nQ1JMRikgPyAiXHJcbiIgOiAoKGVuZGluZyA9PSBFbmRpbmdDUikgPyAiXHIiIDog
IlxuIik7CisvLyBDb252ZXJ0IGxpbmUtZW5kaW5ncyBpbnRvIENSLgorc3RhdGljIENTdHJpbmcg
Y29udmVydFRvQ1IoY29uc3QgQ1N0cmluZyYgZnJvbSkKK3sKKyAgICB1bnNpZ25lZCBuZXdMZW4g
PSAwOworICAgIGJvb2wgbmVlZEZpeCA9IGZhbHNlOworICAgIGNvbnN0IGNoYXIqIHAgPSBmcm9t
LmRhdGEoKTsKKyAgICB3aGlsZSAoY2hhciBjID0gKnArKykgeworICAgICAgICBpZiAoYyA9PSAn
XHInICYmICpwID09ICdcbicpIHsKKyAgICAgICAgICAgIC8vIFR1cm4gQ1JMRiBpbnRvIENSLgor
ICAgICAgICAgICAgcCsrOworICAgICAgICAgICAgbmVlZEZpeCA9IHRydWU7CisgICAgICAgIH0g
ZWxzZSBpZiAoYyA9PSAnXG4nKSB7CisgICAgICAgICAgICAvLyBUdXJuIExGIGludG8gQ1IuCisg
ICAgICAgICAgICBuZWVkRml4ID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBuZXdMZW4gKz0g
MTsKKyAgICB9CisgICAgaWYgKCFuZWVkRml4KQorICAgICAgICByZXR1cm4gZnJvbTsKIAotICAg
IGludCBlbmRpbmdMZW5ndGggPSAoZW5kaW5nID09IEVuZGluZ0NSTEYpID8gMiA6IDE7Ci0gICAg
aW50IG5lZWRGaXggPSAwOworICAgIC8vIE1ha2UgYSBjb3B5IG9mIHRoZSBzdHJpbmcuCisgICAg
cCA9IGZyb20uZGF0YSgpOworICAgIGNoYXIqIHE7CisgICAgQ1N0cmluZyByZXN1bHQgPSBDU3Ry
aW5nOjpuZXdVbmluaXRpYWxpemVkKG5ld0xlbiwgcSk7CisgICAgd2hpbGUgKGNoYXIgYyA9ICpw
KyspIHsKKyAgICAgICAgaWYgKGMgPT0gJ1xyJyAmJiAqcCA9PSAnXG4nKSB7CisgICAgICAgICAg
ICAvLyBUdXJuIENSTEYgaW50byBDUi4KKyAgICAgICAgICAgIHArKzsKKyAgICAgICAgICAgICpx
KysgPSAnXHInOworICAgICAgICB9IGVsc2UgaWYgKGMgPT0gJ1xuJykgeworICAgICAgICAgICAg
Ly8gVHVybiBMRiBpbnRvIENSLgorICAgICAgICAgICAgKnErKyA9ICdccic7CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAvLyBMZWF2ZSBvdGhlciBjaGFyYWN0ZXJzIGFsb25lLgorICAg
ICAgICAgICAgKnErKyA9IGM7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsK
K30KIAotICAgIC8vIENhbGN1bGF0ZSB0aGUgZmluYWwgbGVuZ3RoLgotICAgIGludCBjYWxjdWxh
dGVkTGVuZ3RoID0gZnJvbS5sZW5ndGgoKTsKKy8vIENvbnZlcnQgbGluZS1lbmRpbmdzIGludG8g
TEYuCitzdGF0aWMgQ1N0cmluZyBjb252ZXJ0VG9MRihjb25zdCBDU3RyaW5nJiBmcm9tKQorewor
ICAgIHVuc2lnbmVkIG5ld0xlbiA9IDA7CisgICAgYm9vbCBuZWVkRml4ID0gZmFsc2U7CiAgICAg
Y29uc3QgY2hhciogcCA9IGZyb20uZGF0YSgpOwogICAgIHdoaWxlIChjaGFyIGMgPSAqcCsrKSB7
CiAgICAgICAgIGlmIChjID09ICdccicpIHsKLSAgICAgICAgICAgIC8vIFNhZmUgdG8gbG9vayBh
aGVhZCBiZWNhdXNlIG9mIHRyYWlsaW5nICdcMCcuCi0gICAgICAgICAgICBpZiAoKnAgPT0gJ1xu
JyAmJiBlbmRpbmcgIT0gRW5kaW5nQ1JMRikgeworICAgICAgICAgICAgaWYgKCpwID09ICdcbicp
IHsKKyAgICAgICAgICAgICAgICAvLyBJbmNyZW1lbnQgdGhlIHNvdXJjZSBwb2ludGVyIGlmIHRo
ZSBzZXF1ZW5jZSBpcyBDUkxGLgogICAgICAgICAgICAgICAgIHArKzsKLSAgICAgICAgICAgICAg
ICBjYWxjdWxhdGVkTGVuZ3RoICs9IChlbmRpbmdMZW5ndGggLSAyKTsKLSAgICAgICAgICAgICAg
ICArK25lZWRGaXg7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGVuZGluZyAhPSBFbmRpbmdDUikg
ewotICAgICAgICAgICAgICAgIGNhbGN1bGF0ZWRMZW5ndGggKz0gKGVuZGluZ0xlbmd0aCAtIDEp
OwotICAgICAgICAgICAgICAgICsrbmVlZEZpeDsKICAgICAgICAgICAgIH0KLSAgICAgICAgfSBl
bHNlIGlmIChjID09ICdcbicgJiYgZW5kaW5nICE9IEVuZGluZ0xGKSB7Ci0gICAgICAgICAgICBj
YWxjdWxhdGVkTGVuZ3RoICs9IChlbmRpbmdMZW5ndGggLSAxKTsKLSAgICAgICAgICAgICsrbmVl
ZEZpeDsKKyAgICAgICAgICAgIC8vIFR1cm4gQ1JMRiBvciBDUiBpbnRvIExGLgorICAgICAgICAg
ICAgbmVlZEZpeCA9IHRydWU7CiAgICAgICAgIH0KKyAgICAgICAgbmV3TGVuICs9IDE7CiAgICAg
fQotCiAgICAgaWYgKCFuZWVkRml4KQotICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICBy
ZXR1cm4gZnJvbTsKIAotICAgIC8vIENvbnZlcnQgdGhlIGVuZGluZ3MgYW5kIGNyZWF0ZSBhIGRh
dGEgYnVmZmVyLgorICAgIC8vIE1ha2UgYSBjb3B5IG9mIHRoZSBzdHJpbmcuCiAgICAgcCA9IGZy
b20uZGF0YSgpOwogICAgIGNoYXIqIHE7Ci0gICAgcmVzdWx0ID0gQ1N0cmluZzo6bmV3VW5pbml0
aWFsaXplZChjYWxjdWxhdGVkTGVuZ3RoLCBxKTsKKyAgICBDU3RyaW5nIHJlc3VsdCA9IENTdHJp
bmc6Om5ld1VuaW5pdGlhbGl6ZWQobmV3TGVuLCBxKTsKICAgICB3aGlsZSAoY2hhciBjID0gKnAr
KykgewogICAgICAgICBpZiAoYyA9PSAnXHInKSB7Ci0gICAgICAgICAgICBpZiAoKnAgPT0gJ1xu
JyAmJiBlbmRpbmcgIT0gRW5kaW5nQ1JMRikgeworICAgICAgICAgICAgaWYgKCpwID09ICdcbicp
IHsKKyAgICAgICAgICAgICAgICAvLyBJbmNyZW1lbnQgdGhlIHNvdXJjZSBwb2ludGVyIGlmIHRo
ZSBzZXF1ZW5jZSBpcyBDUkxGLgogICAgICAgICAgICAgICAgIHArKzsKLSAgICAgICAgICAgICAg
ICBtZW1jcHkocSwgZW5kaW5nQ2hhcnMsIGVuZGluZ0xlbmd0aCk7Ci0gICAgICAgICAgICAgICAg
cSArPSBlbmRpbmdMZW5ndGg7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKCpwICE9ICdcbicgJiYg
ZW5kaW5nICE9IEVuZGluZ0NSKSB7Ci0gICAgICAgICAgICAgICAgbWVtY3B5KHEsIGVuZGluZ0No
YXJzLCBlbmRpbmdMZW5ndGgpOwotICAgICAgICAgICAgICAgIHEgKz0gZW5kaW5nTGVuZ3RoOwog
ICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYgKGMgPT0gJ1xuJyAmJiBlbmRpbmcgIT0g
RW5kaW5nTEYpIHsKLSAgICAgICAgICAgIG1lbWNweShxLCBlbmRpbmdDaGFycywgZW5kaW5nTGVu
Z3RoKTsKLSAgICAgICAgICAgIHEgKz0gZW5kaW5nTGVuZ3RoOworICAgICAgICAgICAgLy8gVHVy
biBDUkxGIG9yIENSIGludG8gTEYuCisgICAgICAgICAgICAqcSsrID0gJ1xuJzsKICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgIC8vIExlYXZlIG90aGVyIGNoYXJhY3RlcnMgYWxvbmUuCiAg
ICAgICAgICAgICAqcSsrID0gYzsKQEAgLTE5Myw2ICsyNTIsMzUgQEAgQ1N0cmluZyBTdHJpbmdC
bG9iSXRlbTo6Y29udmVydFRvQ1N0cmluZyhjb25zdCBTdHJpbmcmIHRleHQsIExpbmVFbmRpbmcg
ZW5kaW5nLAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK0NTdHJpbmcgU3RyaW5nQmxvYkl0ZW06
OmNvbnZlcnRUb0NTdHJpbmcoY29uc3QgU3RyaW5nJiB0ZXh0LCBMaW5lRW5kaW5nIGVuZGluZywg
VGV4dEVuY29kaW5nIGVuY29kaW5nKQoreworICAgIENTdHJpbmcgZnJvbSA9IGVuY29kaW5nLmVu
Y29kZSh0ZXh0LmNoYXJhY3RlcnMoKSwgdGV4dC5sZW5ndGgoKSwgRW50aXRpZXNGb3JVbmVuY29k
YWJsZXMpOworCisgICAgaWYgKGVuZGluZyA9PSBFbmRpbmdOYXRpdmUpIHsKKyNpZiBPUyhXSU5E
T1dTKQorICAgICAgICBlbmRpbmcgPSBFbmRpbmdDUkxGOworI2Vsc2UKKyAgICAgICAgZW5kaW5n
ID0gRW5kaW5nTEY7CisjZW5kaWYKKyAgICB9CisKKyAgICBzd2l0Y2ggKGVuZGluZykgeworICAg
IGNhc2UgRW5kaW5nVHJhbnNwYXJlbnQ6CisgICAgICAgIHJldHVybiBmcm9tOworICAgIGNhc2Ug
RW5kaW5nQ1JMRjoKKyAgICAgICAgcmV0dXJuIGNvbnZlcnRUb0NSTEYoZnJvbSk7CisgICAgY2Fz
ZSBFbmRpbmdDUjoKKyAgICAgICAgcmV0dXJuIGNvbnZlcnRUb0NSKGZyb20pOworICAgIGNhc2Ug
RW5kaW5nTEY6CisgICAgICAgIHJldHVybiBjb252ZXJ0VG9MRihmcm9tKTsKKyAgICBkZWZhdWx0
OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisKKyAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZnJvbTsKK30KKwogLy8gQnl0ZUFycmF5QmxvYkl0ZW0g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQogCiBQYXNzUmVmUHRyPEJsb2JJdGVtPiBCeXRlQXJyYXlCbG9iSXRlbTo6Y3JlYXRlKGNvbnN0
IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59968</attachid>
            <date>2010-06-28 18:18:08 -0700</date>
            <delta_ts>2010-06-28 18:35:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-41228-20100628181807.patch</filename>
            <type>text/plain</type>
            <size>9965</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwNTBhMjQ0OGU0Y2Y1MWUyMmEzNzZmM2EzOTdmOGI5YzE0OWI1ZjBjLi43ZGRlY2Zh
MmUzNTY5ZjFiOTMwZDZiMzdiYjJlMDczMjlhZmJmMWYyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTAtMDYtMjUgIEtpbnVrbyBZYXN1ZGEgIDxraW51a29AY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeCBodHRwL3Rlc3Rz
L2xvY2FsL2Jsb2Ivc2VuZC1kYXRhLWJsb2IuaHRtbCBvbiBXaW5kb3dzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MTIyOAorCisgICAgICAgIEZpeCB0
aGUgY2dpIGNvZGUgdG8gbWFrZSBpdCB3b3JrIHdpdGggY3lnd2luIHBlcmwuCisgICAgICAgIEFs
c28gZml4IHRlc3QgZXhwZWN0YXRpb25zIGZvciBXaW5kb3dzLgorCisgICAgICAgICogaHR0cC90
ZXN0cy9yZXNvdXJjZXMvcG9zdC1hbmQtdmVyaWZ5LWh5YnJpZC5jZ2k6CisgICAgICAgICogcGxh
dGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0OgorICAgICAgICAqIHBsYXRmb3Jt
L3dpbi9mYXN0L2pzL2dsb2JhbC1jb25zdHJ1Y3RvcnMtZXhwZWN0ZWQudHh0OgorCiAyMDEwLTA2
LTI4ICBBbmRyZWFzIEtsaW5nICA8YW5kcmVhcy5rbGluZ0Bub2tpYS5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlcy9wb3N0LWFuZC12ZXJpZnktaHlicmlkLmNnaSBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VzL3Bvc3QtYW5kLXZlcmlmeS1oeWJyaWQu
Y2dpCmluZGV4IDhmYzlhMjdkNDJjMzYzMzBkYmMwOWJjN2JkZTcyOWRmNTM0ZjI0NmYuLjJjYzgy
NmE2ZWQ5OTQ3OGY1OWRkMzM0ZTdhZmFhMjRiZTZiMWYyN2MgMTAwNzU1Ci0tLSBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VzL3Bvc3QtYW5kLXZlcmlmeS1oeWJyaWQuY2dpCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VzL3Bvc3QtYW5kLXZlcmlmeS1oeWJyaWQu
Y2dpCkBAIC0xLDUgKzEsNyBAQAogIyEvdXNyL2Jpbi9wZXJsIC13CiAKK3VzZSBDb25maWc7CisK
IHByaW50ICJDb250ZW50LXR5cGU6IHRleHQvcGxhaW5cblxuIjsKIAogaWYgKCRFTlZ7J1JFUVVF
U1RfTUVUSE9EJ30gZXEgIlBPU1QiKSB7CkBAIC03MCw3ICs3Miw3IEBAIGlmICgkRU5WeydSRVFV
RVNUX01FVEhPRCd9IGVxICJQT1NUIikgewogICAgIH0KIAogICAgIGlmICgkdmFsdWVzeydjb252
ZXJ0X25ld2xpbmVzJ30pIHsKLSAgICAgICAgJG5hdGl2ZUVuZGluZyA9ICgkXk8gPX4gL01TV2lu
LykgPyAiXHJcbiIgOiAiXG4iOworICAgICAgICAkbmF0aXZlRW5kaW5nID0gKCRDb25maWd7b3Nu
YW1lfSA9fiAvKE1TV2lufGN5Z3dpbikvKSA/ICJcclxuIiA6ICJcbiI7CiAgICAgICAgICRwb3N0
RGF0YSA9fiBzLyRuYXRpdmVFbmRpbmcvW05MXS9nOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0IGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CmluZGV4IGI3MmVm
Zjk3NzY5OTEyOWZmOWU3MjgyMTU1OTE2Mjg3YzU4ZjRjYWUuLjA0N2VlNjMzMzRjNGQ2M2Y2NDdh
MGU5ODYzMjk0NmNhZTM0ZmFkYjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKQEAgLTI4ODQsOSArMjg4NCw2IEBAIEJVRzQ1
MDQ4IFdJTiA6IGZhc3QvaGFybmVzcy9zaG93LW1vZGFsLWRpYWxvZy5odG1sID0gVElNRU9VVAog
Ly8gV2ViS2l0IHJvbGwgNjE1NDc6NjE2MjkuIFN0aWxsIG5lZWQgdG8gaW52ZXN0aWdhdGUuCiBC
VUdfSENMQU0gOiBmYXN0L2pzL3NjcmlwdC1saW5lLW51bWJlci5odG1sID0gVEVYVAogCi0vLyBB
ZGRlZCBieSByNjE2NTAKLUJVRzQ3MjU5IFdJTiA6IGh0dHAvdGVzdHMvbG9jYWwvYmxvYi9zZW5k
LWRhdGEtYmxvYi5odG1sID0gVEVYVAotCiAvLyBMYXlvdXRUZXN0Q29udHJvbGxlcjo6aXNQYWdl
Qm94VmlzaWJsZSwgcGFnZUFyZWFSZWN0SW5QaXhlbHMsIGFuZCBwcmVmZXJyZWRQYWdlU2l6ZUlu
UGl4ZWxzIGFyZSBub3QgaW1wbGVtZW50ZWQgeWV0IGZvciBDaHJvbWl1bS4KIEJVR1dLMzc1Mzgg
OiBwcmludGluZy9wYWdlLWZvcm1hdC1kYXRhLmh0bWwgPSBURVhUCiAKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL3dpbi9mYXN0L2pzL2dsb2JhbC1jb25zdHJ1Y3RvcnMtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL2Zhc3QvanMvZ2xvYmFsLWNvbnN0cnVj
dG9ycy1leHBlY3RlZC50eHQKaW5kZXggZWFjMzViNzYyZDdkNDQ0MGEzOTc2MTQwNTAyY2Q4NWE1
NWM2ZDJhMy4uYWUyYWU2OWE0MGRhYjMwYTg1ZmUyNjdhZGUwOTQ1NTY1M2U1NmI0NyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL2Zhc3QvanMvZ2xvYmFsLWNvbnN0cnVjdG9y
cy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL2Zhc3QvanMvZ2xv
YmFsLWNvbnN0cnVjdG9ycy1leHBlY3RlZC50eHQKQEAgLTcsNiArNyw3IEBAIFBBU1MgQXR0ci50
b1N0cmluZygpIGlzICdbb2JqZWN0IEF0dHJDb25zdHJ1Y3Rvcl0nCiBQQVNTIEF1ZGlvLnRvU3Ry
aW5nKCkgaXMgJ1tvYmplY3QgQXVkaW9Db25zdHJ1Y3Rvcl0nCiBQQVNTIEJlZm9yZUxvYWRFdmVu
dC50b1N0cmluZygpIGlzICdbb2JqZWN0IEJlZm9yZUxvYWRFdmVudENvbnN0cnVjdG9yXScKIFBB
U1MgQmxvYi50b1N0cmluZygpIGlzICdbb2JqZWN0IEJsb2JDb25zdHJ1Y3Rvcl0nCitQQVNTIEJs
b2JCdWlsZGVyLnRvU3RyaW5nKCkgaXMgJ1tvYmplY3QgQmxvYkJ1aWxkZXJDb25zdHJ1Y3Rvcl0n
CiBQQVNTIENEQVRBU2VjdGlvbi50b1N0cmluZygpIGlzICdbb2JqZWN0IENEQVRBU2VjdGlvbkNv
bnN0cnVjdG9yXScKIFBBU1MgQ1NTQ2hhcnNldFJ1bGUudG9TdHJpbmcoKSBpcyAnW29iamVjdCBD
U1NDaGFyc2V0UnVsZUNvbnN0cnVjdG9yXScKIFBBU1MgQ1NTRm9udEZhY2VSdWxlLnRvU3RyaW5n
KCkgaXMgJ1tvYmplY3QgQ1NTRm9udEZhY2VSdWxlQ29uc3RydWN0b3JdJwpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3MWM1YTZkNzNjOGQw
MzQ4MGNmZmYxNzMyMWI2YThlZjUzN2M1MTdkLi41MjA3NjZiZjNmOTBjOTRlNzI2NTljYTdkMGNi
Yzc5MWQ0ZjdkYWEwIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEwLTA2LTI1ICBLaW51a28gWWFzdWRhICA8
a2ludWtvQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBGaXggaHR0cC90ZXN0cy9sb2NhbC9ibG9iL3NlbmQtZGF0YS1ibG9iLmh0
bWwgb24gV2luZG93cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NDEyMjgKKworICAgICAgICBGaXggYSByZWdyZXNzaW9uIGJ1ZyBpbiB0aGUgbGluZS1j
b252ZXJzaW9uIGNvZGUuCisgICAgICAgIFJld3JpdGUgdGhlIGxpbmUtY29udmVyc2lvbiBmdW5j
dGlvbiB3aXRoIHNpbXBsZXIgZnVuY3Rpb25zIHRvCisgICAgICAgIG1ha2UgaXQgbGVzcyBlcnJv
ciBwcm9uZS4KKworICAgICAgICBObyBuZXcgdGVzdHMgYXMgdGhpcyBpcyBmb3IgYnVnIGZpeGVz
LgorCisgICAgICAgICogcGxhdGZvcm0vQmxvYkl0ZW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U3RyaW5nQmxvYkl0ZW06OmNvbnZlcnRUb0NTdHJpbmcpOgorCiAyMDEwLTA2LTI4ICBBbmRyZWFz
IEtsaW5nICA8YW5kcmVhcy5rbGluZ0Bub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
S2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3Jt
L0Jsb2JJdGVtLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vQmxvYkl0ZW0uY3BwCmluZGV4IGY5OGU0
NjYwNDgxNTlhNzdjYmM5ZTRhNGU3YzU4OGEwMmUyMWRmOWMuLjg2NmMwODNiZjE1ODMxYTQzYTk3
OTNmYmZlMWQ1ODAzNmYzMTg1MWEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vQmxvYkl0
ZW0uY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vQmxvYkl0ZW0uY3BwCkBAIC0zMyw2ICszMyw3
IEBACiAKICNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiVVVJRC5oIgorI2luY2x1
ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTI0LDY3
ICsxMjUsOTQgQEAgU3RyaW5nQmxvYkl0ZW06OlN0cmluZ0Jsb2JJdGVtKGNvbnN0IENTdHJpbmcm
IHRleHQpCiB7CiB9CiAKLUNTdHJpbmcgU3RyaW5nQmxvYkl0ZW06OmNvbnZlcnRUb0NTdHJpbmco
Y29uc3QgU3RyaW5nJiB0ZXh0LCBMaW5lRW5kaW5nIGVuZGluZywgVGV4dEVuY29kaW5nIGVuY29k
aW5nKQorLy8gTm9ybWFsaXplIGFsbCBsaW5lLWVuZGluZ3MgdG8gQ1JMRi4KK3N0YXRpYyBDU3Ry
aW5nIGNvbnZlcnRUb0NSTEYoY29uc3QgQ1N0cmluZyYgZnJvbSkKIHsKLSAgICBDU3RyaW5nIGZy
b20gPSBlbmNvZGluZy5lbmNvZGUodGV4dC5jaGFyYWN0ZXJzKCksIHRleHQubGVuZ3RoKCksIEVu
dGl0aWVzRm9yVW5lbmNvZGFibGVzKTsKLSAgICBDU3RyaW5nIHJlc3VsdCA9IGZyb207Ci0KLSAg
ICBpZiAoZW5kaW5nID09IEVuZGluZ1RyYW5zcGFyZW50KQotICAgICAgICByZXR1cm4gcmVzdWx0
OwotCi0gICAgaWYgKGVuZGluZyA9PSBFbmRpbmdOYXRpdmUpIHsKLSNpZiBPUyhXSU5ET1dTKQot
ICAgICAgICBlbmRpbmcgPSBFbmRpbmdDUkxGOwotI2Vsc2UKLSAgICAgICAgZW5kaW5nID0gRW5k
aW5nTEY7Ci0jZW5kaWYKKyAgICB1bnNpZ25lZCBuZXdMZW4gPSAwOworICAgIGNvbnN0IGNoYXIq
IHAgPSBmcm9tLmRhdGEoKTsKKyAgICB3aGlsZSAoY2hhciBjID0gKnArKykgeworICAgICAgICBp
ZiAoYyA9PSAnXHInKSB7CisgICAgICAgICAgICAvLyBTYWZlIHRvIGxvb2sgYWhlYWQgYmVjYXVz
ZSBvZiB0cmFpbGluZyAnXDAnLgorICAgICAgICAgICAgaWYgKCpwICE9ICdcbicpIHsKKyAgICAg
ICAgICAgICAgICAvLyBUdXJuIENSIGludG8gQ1JMRi4KKyAgICAgICAgICAgICAgICBuZXdMZW4g
Kz0gMjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChjID09ICdcbicpIHsKKyAg
ICAgICAgICAgIC8vIFR1cm4gTEYgaW50byBDUkxGLgorICAgICAgICAgICAgbmV3TGVuICs9IDI7
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBMZWF2ZSBvdGhlciBjaGFyYWN0ZXJz
IGFsb25lLgorICAgICAgICAgICAgbmV3TGVuICs9IDE7CisgICAgICAgIH0KICAgICB9CisgICAg
aWYgKG5ld0xlbiA9PSBmcm9tLmxlbmd0aCgpKQorICAgICAgICByZXR1cm4gZnJvbTsKIAotICAg
IGNvbnN0IGNoYXIqIGVuZGluZ0NoYXJzID0gKGVuZGluZyA9PSBFbmRpbmdDUkxGKSA/ICJcclxu
IiA6ICgoZW5kaW5nID09IEVuZGluZ0NSKSA/ICJcciIgOiAiXG4iKTsKLQotICAgIGludCBlbmRp
bmdMZW5ndGggPSAoZW5kaW5nID09IEVuZGluZ0NSTEYpID8gMiA6IDE7Ci0gICAgaW50IG5lZWRG
aXggPSAwOworICAgIC8vIE1ha2UgYSBjb3B5IG9mIHRoZSBzdHJpbmcuCisgICAgcCA9IGZyb20u
ZGF0YSgpOworICAgIGNoYXIqIHE7CisgICAgQ1N0cmluZyByZXN1bHQgPSBDU3RyaW5nOjpuZXdV
bmluaXRpYWxpemVkKG5ld0xlbiwgcSk7CisgICAgd2hpbGUgKGNoYXIgYyA9ICpwKyspIHsKKyAg
ICAgICAgaWYgKGMgPT0gJ1xyJykgeworICAgICAgICAgICAgLy8gU2FmZSB0byBsb29rIGFoZWFk
IGJlY2F1c2Ugb2YgdHJhaWxpbmcgJ1wwJy4KKyAgICAgICAgICAgIGlmICgqcCAhPSAnXG4nKSB7
CisgICAgICAgICAgICAgICAgLy8gVHVybiBDUiBpbnRvIENSTEYuCisgICAgICAgICAgICAgICAg
KnErKyA9ICdccic7CisgICAgICAgICAgICAgICAgKnErKyA9ICdcbic7CisgICAgICAgICAgICB9
CisgICAgICAgIH0gZWxzZSBpZiAoYyA9PSAnXG4nKSB7CisgICAgICAgICAgICAvLyBUdXJuIExG
IGludG8gQ1JMRi4KKyAgICAgICAgICAgICpxKysgPSAnXHInOworICAgICAgICAgICAgKnErKyA9
ICdcbic7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBMZWF2ZSBvdGhlciBjaGFy
YWN0ZXJzIGFsb25lLgorICAgICAgICAgICAgKnErKyA9IGM7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KIAotICAgIC8vIENhbGN1bGF0ZSB0aGUgZmluYWwgbGVuZ3Ro
LgotICAgIGludCBjYWxjdWxhdGVkTGVuZ3RoID0gZnJvbS5sZW5ndGgoKTsKKy8vIE5vcm1hbGl6
ZSBhbGwgbGluZS1lbmRpbmdzIHRvIENSIG9yIExGLgorc3RhdGljIENTdHJpbmcgY29udmVydFRv
Q1JPckxGKGNvbnN0IENTdHJpbmcmIGZyb20sIGJvb2wgdG9DUikKK3sKKyAgICB1bnNpZ25lZCBu
ZXdMZW4gPSAwOworICAgIGJvb2wgbmVlZEZpeCA9IGZhbHNlOwogICAgIGNvbnN0IGNoYXIqIHAg
PSBmcm9tLmRhdGEoKTsKICAgICB3aGlsZSAoY2hhciBjID0gKnArKykgewogICAgICAgICBpZiAo
YyA9PSAnXHInKSB7Ci0gICAgICAgICAgICAvLyBTYWZlIHRvIGxvb2sgYWhlYWQgYmVjYXVzZSBv
ZiB0cmFpbGluZyAnXDAnLgotICAgICAgICAgICAgaWYgKCpwID09ICdcbicgJiYgZW5kaW5nICE9
IEVuZGluZ0NSTEYpIHsKKyAgICAgICAgICAgIGlmICgqcCA9PSAnXG4nKSB7CisgICAgICAgICAg
ICAgICAgLy8gVHVybiBDUkxGIGludG8gQ1Igb3IgTEYuCiAgICAgICAgICAgICAgICAgcCsrOwot
ICAgICAgICAgICAgICAgIGNhbGN1bGF0ZWRMZW5ndGggKz0gKGVuZGluZ0xlbmd0aCAtIDIpOwot
ICAgICAgICAgICAgICAgICsrbmVlZEZpeDsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoZW5kaW5n
ICE9IEVuZGluZ0NSKSB7Ci0gICAgICAgICAgICAgICAgY2FsY3VsYXRlZExlbmd0aCArPSAoZW5k
aW5nTGVuZ3RoIC0gMSk7Ci0gICAgICAgICAgICAgICAgKytuZWVkRml4OworICAgICAgICAgICAg
ICAgIG5lZWRGaXggPSB0cnVlOworICAgICAgICAgICAgfSBlbHNlIGlmICghdG9DUikgeworICAg
ICAgICAgICAgICAgIC8vIFR1cm4gQ1IgaW50byBMRi4KKyAgICAgICAgICAgICAgICBuZWVkRml4
ID0gdHJ1ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIGlmIChjID09ICdcbicgJiYg
ZW5kaW5nICE9IEVuZGluZ0xGKSB7Ci0gICAgICAgICAgICBjYWxjdWxhdGVkTGVuZ3RoICs9IChl
bmRpbmdMZW5ndGggLSAxKTsKLSAgICAgICAgICAgICsrbmVlZEZpeDsKKyAgICAgICAgfSBlbHNl
IGlmIChjID09ICdcbicgJiYgdG9DUikgeworICAgICAgICAgICAgLy8gVHVybiBMRiBpbnRvIENS
LgorICAgICAgICAgICAgbmVlZEZpeCA9IHRydWU7CiAgICAgICAgIH0KKyAgICAgICAgbmV3TGVu
ICs9IDE7CiAgICAgfQotCiAgICAgaWYgKCFuZWVkRml4KQotICAgICAgICByZXR1cm4gcmVzdWx0
OworICAgICAgICByZXR1cm4gZnJvbTsKIAotICAgIC8vIENvbnZlcnQgdGhlIGVuZGluZ3MgYW5k
IGNyZWF0ZSBhIGRhdGEgYnVmZmVyLgorICAgIC8vIE1ha2UgYSBjb3B5IG9mIHRoZSBzdHJpbmcu
CiAgICAgcCA9IGZyb20uZGF0YSgpOwogICAgIGNoYXIqIHE7Ci0gICAgcmVzdWx0ID0gQ1N0cmlu
Zzo6bmV3VW5pbml0aWFsaXplZChjYWxjdWxhdGVkTGVuZ3RoLCBxKTsKKyAgICBDU3RyaW5nIHJl
c3VsdCA9IENTdHJpbmc6Om5ld1VuaW5pdGlhbGl6ZWQobmV3TGVuLCBxKTsKKyAgICBjaGFyIHRv
RW5kaW5nQ2hhciA9IHRvQ1IgPyAnXHInIDogJ1xuJzsKICAgICB3aGlsZSAoY2hhciBjID0gKnAr
KykgewogICAgICAgICBpZiAoYyA9PSAnXHInKSB7Ci0gICAgICAgICAgICBpZiAoKnAgPT0gJ1xu
JyAmJiBlbmRpbmcgIT0gRW5kaW5nQ1JMRikgeworICAgICAgICAgICAgaWYgKCpwID09ICdcbicp
IHsKKyAgICAgICAgICAgICAgICAvLyBJbmNyZW1lbnQgdGhlIHNvdXJjZSBwb2ludGVyIGlmIHRo
ZSBzZXF1ZW5jZSBpcyBDUkxGLgogICAgICAgICAgICAgICAgIHArKzsKLSAgICAgICAgICAgICAg
ICBtZW1jcHkocSwgZW5kaW5nQ2hhcnMsIGVuZGluZ0xlbmd0aCk7Ci0gICAgICAgICAgICAgICAg
cSArPSBlbmRpbmdMZW5ndGg7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKCpwICE9ICdcbicgJiYg
ZW5kaW5nICE9IEVuZGluZ0NSKSB7Ci0gICAgICAgICAgICAgICAgbWVtY3B5KHEsIGVuZGluZ0No
YXJzLCBlbmRpbmdMZW5ndGgpOwotICAgICAgICAgICAgICAgIHEgKz0gZW5kaW5nTGVuZ3RoOwog
ICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYgKGMgPT0gJ1xuJyAmJiBlbmRpbmcgIT0g
RW5kaW5nTEYpIHsKLSAgICAgICAgICAgIG1lbWNweShxLCBlbmRpbmdDaGFycywgZW5kaW5nTGVu
Z3RoKTsKLSAgICAgICAgICAgIHEgKz0gZW5kaW5nTGVuZ3RoOworICAgICAgICAgICAgLy8gVHVy
biBDUkxGIG9yIENSIGludG8gQ1Igb3IgTEYuCisgICAgICAgICAgICAqcSsrID0gdG9FbmRpbmdD
aGFyOworICAgICAgICB9IGVsc2UgaWYgKGMgPT0gJ1xuJyAmJiB0b0NSKSB7CisgICAgICAgICAg
ICAvLyBUdXJuIExGIGludG8gQ1IuCisgICAgICAgICAgICAqcSsrID0gJ1xyJzsKICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgIC8vIExlYXZlIG90aGVyIGNoYXJhY3RlcnMgYWxvbmUuCiAg
ICAgICAgICAgICAqcSsrID0gYzsKQEAgLTE5Myw2ICsyMjEsMzUgQEAgQ1N0cmluZyBTdHJpbmdC
bG9iSXRlbTo6Y29udmVydFRvQ1N0cmluZyhjb25zdCBTdHJpbmcmIHRleHQsIExpbmVFbmRpbmcg
ZW5kaW5nLAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK0NTdHJpbmcgU3RyaW5nQmxvYkl0ZW06
OmNvbnZlcnRUb0NTdHJpbmcoY29uc3QgU3RyaW5nJiB0ZXh0LCBMaW5lRW5kaW5nIGVuZGluZywg
VGV4dEVuY29kaW5nIGVuY29kaW5nKQoreworICAgIENTdHJpbmcgZnJvbSA9IGVuY29kaW5nLmVu
Y29kZSh0ZXh0LmNoYXJhY3RlcnMoKSwgdGV4dC5sZW5ndGgoKSwgRW50aXRpZXNGb3JVbmVuY29k
YWJsZXMpOworCisgICAgaWYgKGVuZGluZyA9PSBFbmRpbmdOYXRpdmUpIHsKKyNpZiBPUyhXSU5E
T1dTKQorICAgICAgICBlbmRpbmcgPSBFbmRpbmdDUkxGOworI2Vsc2UKKyAgICAgICAgZW5kaW5n
ID0gRW5kaW5nTEY7CisjZW5kaWYKKyAgICB9CisKKyAgICBzd2l0Y2ggKGVuZGluZykgeworICAg
IGNhc2UgRW5kaW5nVHJhbnNwYXJlbnQ6CisgICAgICAgIHJldHVybiBmcm9tOworICAgIGNhc2Ug
RW5kaW5nQ1JMRjoKKyAgICAgICAgcmV0dXJuIGNvbnZlcnRUb0NSTEYoZnJvbSk7CisgICAgY2Fz
ZSBFbmRpbmdDUjoKKyAgICAgICAgcmV0dXJuIGNvbnZlcnRUb0NST3JMRihmcm9tLCB0cnVlKTsK
KyAgICBjYXNlIEVuZGluZ0xGOgorICAgICAgICByZXR1cm4gY29udmVydFRvQ1JPckxGKGZyb20s
IGZhbHNlKTsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZnJvbTsKK30KKwog
Ly8gQnl0ZUFycmF5QmxvYkl0ZW0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBQYXNzUmVmUHRyPEJsb2JJdGVtPiBCeXRlQXJyYXlC
bG9iSXRlbTo6Y3JlYXRlKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59971</attachid>
            <date>2010-06-28 18:35:14 -0700</date>
            <delta_ts>2010-06-29 10:43:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-41228-20100628183512.patch</filename>
            <type>text/plain</type>
            <size>9837</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwNTBhMjQ0OGU0Y2Y1MWUyMmEzNzZmM2EzOTdmOGI5YzE0OWI1ZjBjLi43ZGRlY2Zh
MmUzNTY5ZjFiOTMwZDZiMzdiYjJlMDczMjlhZmJmMWYyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTAtMDYtMjUgIEtpbnVrbyBZYXN1ZGEgIDxraW51a29AY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeCBodHRwL3Rlc3Rz
L2xvY2FsL2Jsb2Ivc2VuZC1kYXRhLWJsb2IuaHRtbCBvbiBXaW5kb3dzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MTIyOAorCisgICAgICAgIEZpeCB0
aGUgY2dpIGNvZGUgdG8gbWFrZSBpdCB3b3JrIHdpdGggY3lnd2luIHBlcmwuCisgICAgICAgIEFs
c28gZml4IHRlc3QgZXhwZWN0YXRpb25zIGZvciBXaW5kb3dzLgorCisgICAgICAgICogaHR0cC90
ZXN0cy9yZXNvdXJjZXMvcG9zdC1hbmQtdmVyaWZ5LWh5YnJpZC5jZ2k6CisgICAgICAgICogcGxh
dGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0OgorICAgICAgICAqIHBsYXRmb3Jt
L3dpbi9mYXN0L2pzL2dsb2JhbC1jb25zdHJ1Y3RvcnMtZXhwZWN0ZWQudHh0OgorCiAyMDEwLTA2
LTI4ICBBbmRyZWFzIEtsaW5nICA8YW5kcmVhcy5rbGluZ0Bub2tpYS5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlcy9wb3N0LWFuZC12ZXJpZnktaHlicmlkLmNnaSBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VzL3Bvc3QtYW5kLXZlcmlmeS1oeWJyaWQu
Y2dpCmluZGV4IDhmYzlhMjdkNDJjMzYzMzBkYmMwOWJjN2JkZTcyOWRmNTM0ZjI0NmYuLjJjYzgy
NmE2ZWQ5OTQ3OGY1OWRkMzM0ZTdhZmFhMjRiZTZiMWYyN2MgMTAwNzU1Ci0tLSBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VzL3Bvc3QtYW5kLXZlcmlmeS1oeWJyaWQuY2dpCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VzL3Bvc3QtYW5kLXZlcmlmeS1oeWJyaWQu
Y2dpCkBAIC0xLDUgKzEsNyBAQAogIyEvdXNyL2Jpbi9wZXJsIC13CiAKK3VzZSBDb25maWc7CisK
IHByaW50ICJDb250ZW50LXR5cGU6IHRleHQvcGxhaW5cblxuIjsKIAogaWYgKCRFTlZ7J1JFUVVF
U1RfTUVUSE9EJ30gZXEgIlBPU1QiKSB7CkBAIC03MCw3ICs3Miw3IEBAIGlmICgkRU5WeydSRVFV
RVNUX01FVEhPRCd9IGVxICJQT1NUIikgewogICAgIH0KIAogICAgIGlmICgkdmFsdWVzeydjb252
ZXJ0X25ld2xpbmVzJ30pIHsKLSAgICAgICAgJG5hdGl2ZUVuZGluZyA9ICgkXk8gPX4gL01TV2lu
LykgPyAiXHJcbiIgOiAiXG4iOworICAgICAgICAkbmF0aXZlRW5kaW5nID0gKCRDb25maWd7b3Nu
YW1lfSA9fiAvKE1TV2lufGN5Z3dpbikvKSA/ICJcclxuIiA6ICJcbiI7CiAgICAgICAgICRwb3N0
RGF0YSA9fiBzLyRuYXRpdmVFbmRpbmcvW05MXS9nOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0IGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CmluZGV4IGI3MmVm
Zjk3NzY5OTEyOWZmOWU3MjgyMTU1OTE2Mjg3YzU4ZjRjYWUuLjA0N2VlNjMzMzRjNGQ2M2Y2NDdh
MGU5ODYzMjk0NmNhZTM0ZmFkYjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKQEAgLTI4ODQsOSArMjg4NCw2IEBAIEJVRzQ1
MDQ4IFdJTiA6IGZhc3QvaGFybmVzcy9zaG93LW1vZGFsLWRpYWxvZy5odG1sID0gVElNRU9VVAog
Ly8gV2ViS2l0IHJvbGwgNjE1NDc6NjE2MjkuIFN0aWxsIG5lZWQgdG8gaW52ZXN0aWdhdGUuCiBC
VUdfSENMQU0gOiBmYXN0L2pzL3NjcmlwdC1saW5lLW51bWJlci5odG1sID0gVEVYVAogCi0vLyBB
ZGRlZCBieSByNjE2NTAKLUJVRzQ3MjU5IFdJTiA6IGh0dHAvdGVzdHMvbG9jYWwvYmxvYi9zZW5k
LWRhdGEtYmxvYi5odG1sID0gVEVYVAotCiAvLyBMYXlvdXRUZXN0Q29udHJvbGxlcjo6aXNQYWdl
Qm94VmlzaWJsZSwgcGFnZUFyZWFSZWN0SW5QaXhlbHMsIGFuZCBwcmVmZXJyZWRQYWdlU2l6ZUlu
UGl4ZWxzIGFyZSBub3QgaW1wbGVtZW50ZWQgeWV0IGZvciBDaHJvbWl1bS4KIEJVR1dLMzc1Mzgg
OiBwcmludGluZy9wYWdlLWZvcm1hdC1kYXRhLmh0bWwgPSBURVhUCiAKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL3dpbi9mYXN0L2pzL2dsb2JhbC1jb25zdHJ1Y3RvcnMtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL2Zhc3QvanMvZ2xvYmFsLWNvbnN0cnVj
dG9ycy1leHBlY3RlZC50eHQKaW5kZXggZWFjMzViNzYyZDdkNDQ0MGEzOTc2MTQwNTAyY2Q4NWE1
NWM2ZDJhMy4uYWUyYWU2OWE0MGRhYjMwYTg1ZmUyNjdhZGUwOTQ1NTY1M2U1NmI0NyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL2Zhc3QvanMvZ2xvYmFsLWNvbnN0cnVjdG9y
cy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL2Zhc3QvanMvZ2xv
YmFsLWNvbnN0cnVjdG9ycy1leHBlY3RlZC50eHQKQEAgLTcsNiArNyw3IEBAIFBBU1MgQXR0ci50
b1N0cmluZygpIGlzICdbb2JqZWN0IEF0dHJDb25zdHJ1Y3Rvcl0nCiBQQVNTIEF1ZGlvLnRvU3Ry
aW5nKCkgaXMgJ1tvYmplY3QgQXVkaW9Db25zdHJ1Y3Rvcl0nCiBQQVNTIEJlZm9yZUxvYWRFdmVu
dC50b1N0cmluZygpIGlzICdbb2JqZWN0IEJlZm9yZUxvYWRFdmVudENvbnN0cnVjdG9yXScKIFBB
U1MgQmxvYi50b1N0cmluZygpIGlzICdbb2JqZWN0IEJsb2JDb25zdHJ1Y3Rvcl0nCitQQVNTIEJs
b2JCdWlsZGVyLnRvU3RyaW5nKCkgaXMgJ1tvYmplY3QgQmxvYkJ1aWxkZXJDb25zdHJ1Y3Rvcl0n
CiBQQVNTIENEQVRBU2VjdGlvbi50b1N0cmluZygpIGlzICdbb2JqZWN0IENEQVRBU2VjdGlvbkNv
bnN0cnVjdG9yXScKIFBBU1MgQ1NTQ2hhcnNldFJ1bGUudG9TdHJpbmcoKSBpcyAnW29iamVjdCBD
U1NDaGFyc2V0UnVsZUNvbnN0cnVjdG9yXScKIFBBU1MgQ1NTRm9udEZhY2VSdWxlLnRvU3RyaW5n
KCkgaXMgJ1tvYmplY3QgQ1NTRm9udEZhY2VSdWxlQ29uc3RydWN0b3JdJwpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3MWM1YTZkNzNjOGQw
MzQ4MGNmZmYxNzMyMWI2YThlZjUzN2M1MTdkLi41MjA3NjZiZjNmOTBjOTRlNzI2NTljYTdkMGNi
Yzc5MWQ0ZjdkYWEwIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEwLTA2LTI1ICBLaW51a28gWWFzdWRhICA8
a2ludWtvQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBGaXggaHR0cC90ZXN0cy9sb2NhbC9ibG9iL3NlbmQtZGF0YS1ibG9iLmh0
bWwgb24gV2luZG93cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NDEyMjgKKworICAgICAgICBGaXggYSByZWdyZXNzaW9uIGJ1ZyBpbiB0aGUgbGluZS1j
b252ZXJzaW9uIGNvZGUuCisgICAgICAgIFJld3JpdGUgdGhlIGxpbmUtY29udmVyc2lvbiBmdW5j
dGlvbiB3aXRoIHNpbXBsZXIgZnVuY3Rpb25zIHRvCisgICAgICAgIG1ha2UgaXQgbGVzcyBlcnJv
ciBwcm9uZS4KKworICAgICAgICBObyBuZXcgdGVzdHMgYXMgdGhpcyBpcyBmb3IgYnVnIGZpeGVz
LgorCisgICAgICAgICogcGxhdGZvcm0vQmxvYkl0ZW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U3RyaW5nQmxvYkl0ZW06OmNvbnZlcnRUb0NTdHJpbmcpOgorCiAyMDEwLTA2LTI4ICBBbmRyZWFz
IEtsaW5nICA8YW5kcmVhcy5rbGluZ0Bub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
S2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3Jt
L0Jsb2JJdGVtLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vQmxvYkl0ZW0uY3BwCmluZGV4IGY5OGU0
NjYwNDgxNTlhNzdjYmM5ZTRhNGU3YzU4OGEwMmUyMWRmOWMuLmExMmRkMDhjYWY0NmE4OGU1YThj
YzE2NGExZTlkNzYxY2NmMTI5ZGEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vQmxvYkl0
ZW0uY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vQmxvYkl0ZW0uY3BwCkBAIC0zMyw2ICszMyw3
IEBACiAKICNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiVVVJRC5oIgorI2luY2x1
ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTI0LDY3
ICsxMjUsODcgQEAgU3RyaW5nQmxvYkl0ZW06OlN0cmluZ0Jsb2JJdGVtKGNvbnN0IENTdHJpbmcm
IHRleHQpCiB7CiB9CiAKLUNTdHJpbmcgU3RyaW5nQmxvYkl0ZW06OmNvbnZlcnRUb0NTdHJpbmco
Y29uc3QgU3RyaW5nJiB0ZXh0LCBMaW5lRW5kaW5nIGVuZGluZywgVGV4dEVuY29kaW5nIGVuY29k
aW5nKQorLy8gTm9ybWFsaXplIGFsbCBsaW5lLWVuZGluZ3MgdG8gQ1JMRi4KK3N0YXRpYyBDU3Ry
aW5nIGNvbnZlcnRUb0NSTEYoY29uc3QgQ1N0cmluZyYgZnJvbSkKIHsKLSAgICBDU3RyaW5nIGZy
b20gPSBlbmNvZGluZy5lbmNvZGUodGV4dC5jaGFyYWN0ZXJzKCksIHRleHQubGVuZ3RoKCksIEVu
dGl0aWVzRm9yVW5lbmNvZGFibGVzKTsKLSAgICBDU3RyaW5nIHJlc3VsdCA9IGZyb207Ci0KLSAg
ICBpZiAoZW5kaW5nID09IEVuZGluZ1RyYW5zcGFyZW50KQotICAgICAgICByZXR1cm4gcmVzdWx0
OwotCi0gICAgaWYgKGVuZGluZyA9PSBFbmRpbmdOYXRpdmUpIHsKLSNpZiBPUyhXSU5ET1dTKQot
ICAgICAgICBlbmRpbmcgPSBFbmRpbmdDUkxGOwotI2Vsc2UKLSAgICAgICAgZW5kaW5nID0gRW5k
aW5nTEY7Ci0jZW5kaWYKKyAgICB1bnNpZ25lZCBuZXdMZW4gPSAwOworICAgIGNvbnN0IGNoYXIq
IHAgPSBmcm9tLmRhdGEoKTsKKyAgICB3aGlsZSAoY2hhciBjID0gKnArKykgeworICAgICAgICBp
ZiAoYyA9PSAnXHInKSB7CisgICAgICAgICAgICAvLyBTYWZlIHRvIGxvb2sgYWhlYWQgYmVjYXVz
ZSBvZiB0cmFpbGluZyAnXDAnLgorICAgICAgICAgICAgaWYgKCpwICE9ICdcbicpIHsKKyAgICAg
ICAgICAgICAgICAvLyBUdXJuIENSIGludG8gQ1JMRi4KKyAgICAgICAgICAgICAgICBuZXdMZW4g
Kz0gMjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChjID09ICdcbicpIHsKKyAg
ICAgICAgICAgIC8vIFR1cm4gTEYgaW50byBDUkxGLgorICAgICAgICAgICAgbmV3TGVuICs9IDI7
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBMZWF2ZSBvdGhlciBjaGFyYWN0ZXJz
IGFsb25lLgorICAgICAgICAgICAgbmV3TGVuICs9IDE7CisgICAgICAgIH0KICAgICB9CisgICAg
aWYgKG5ld0xlbiA9PSBmcm9tLmxlbmd0aCgpKQorICAgICAgICByZXR1cm4gZnJvbTsKIAotICAg
IGNvbnN0IGNoYXIqIGVuZGluZ0NoYXJzID0gKGVuZGluZyA9PSBFbmRpbmdDUkxGKSA/ICJcclxu
IiA6ICgoZW5kaW5nID09IEVuZGluZ0NSKSA/ICJcciIgOiAiXG4iKTsKLQotICAgIGludCBlbmRp
bmdMZW5ndGggPSAoZW5kaW5nID09IEVuZGluZ0NSTEYpID8gMiA6IDE7Ci0gICAgaW50IG5lZWRG
aXggPSAwOwotCi0gICAgLy8gQ2FsY3VsYXRlIHRoZSBmaW5hbCBsZW5ndGguCi0gICAgaW50IGNh
bGN1bGF0ZWRMZW5ndGggPSBmcm9tLmxlbmd0aCgpOwotICAgIGNvbnN0IGNoYXIqIHAgPSBmcm9t
LmRhdGEoKTsKKyAgICAvLyBNYWtlIGEgY29weSBvZiB0aGUgc3RyaW5nLgorICAgIHAgPSBmcm9t
LmRhdGEoKTsKKyAgICBjaGFyKiBxOworICAgIENTdHJpbmcgcmVzdWx0ID0gQ1N0cmluZzo6bmV3
VW5pbml0aWFsaXplZChuZXdMZW4sIHEpOwogICAgIHdoaWxlIChjaGFyIGMgPSAqcCsrKSB7CiAg
ICAgICAgIGlmIChjID09ICdccicpIHsKICAgICAgICAgICAgIC8vIFNhZmUgdG8gbG9vayBhaGVh
ZCBiZWNhdXNlIG9mIHRyYWlsaW5nICdcMCcuCi0gICAgICAgICAgICBpZiAoKnAgPT0gJ1xuJyAm
JiBlbmRpbmcgIT0gRW5kaW5nQ1JMRikgewotICAgICAgICAgICAgICAgIHArKzsKLSAgICAgICAg
ICAgICAgICBjYWxjdWxhdGVkTGVuZ3RoICs9IChlbmRpbmdMZW5ndGggLSAyKTsKLSAgICAgICAg
ICAgICAgICArK25lZWRGaXg7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGVuZGluZyAhPSBFbmRp
bmdDUikgewotICAgICAgICAgICAgICAgIGNhbGN1bGF0ZWRMZW5ndGggKz0gKGVuZGluZ0xlbmd0
aCAtIDEpOwotICAgICAgICAgICAgICAgICsrbmVlZEZpeDsKKyAgICAgICAgICAgIGlmICgqcCAh
PSAnXG4nKSB7CisgICAgICAgICAgICAgICAgLy8gVHVybiBDUiBpbnRvIENSTEYuCisgICAgICAg
ICAgICAgICAgKnErKyA9ICdccic7CisgICAgICAgICAgICAgICAgKnErKyA9ICdcbic7CiAgICAg
ICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAoYyA9PSAnXG4nICYmIGVuZGluZyAhPSBFbmRp
bmdMRikgewotICAgICAgICAgICAgY2FsY3VsYXRlZExlbmd0aCArPSAoZW5kaW5nTGVuZ3RoIC0g
MSk7Ci0gICAgICAgICAgICArK25lZWRGaXg7CisgICAgICAgIH0gZWxzZSBpZiAoYyA9PSAnXG4n
KSB7CisgICAgICAgICAgICAvLyBUdXJuIExGIGludG8gQ1JMRi4KKyAgICAgICAgICAgICpxKysg
PSAnXHInOworICAgICAgICAgICAgKnErKyA9ICdcbic7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAvLyBMZWF2ZSBvdGhlciBjaGFyYWN0ZXJzIGFsb25lLgorICAgICAgICAgICAgKnEr
KyA9IGM7CiAgICAgICAgIH0KICAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KIAorLy8gTm9y
bWFsaXplIGFsbCBsaW5lLWVuZGluZ3MgdG8gQ1Igb3IgTEYuCitzdGF0aWMgQ1N0cmluZyBjb252
ZXJ0VG9DUk9yTEYoY29uc3QgQ1N0cmluZyYgZnJvbSwgYm9vbCB0b0NSKQoreworICAgIHVuc2ln
bmVkIG5ld0xlbiA9IDA7CisgICAgYm9vbCBuZWVkRml4ID0gZmFsc2U7CisgICAgY29uc3QgY2hh
ciogcCA9IGZyb20uZGF0YSgpOworICAgIGNoYXIgZnJvbUVuZGluZ0NoYXIgPSB0b0NSID8gJ1xu
JyA6ICdccic7CisgICAgY2hhciB0b0VuZGluZ0NoYXIgPSB0b0NSID8gJ1xyJyA6ICdcbic7Cisg
ICAgd2hpbGUgKGNoYXIgYyA9ICpwKyspIHsKKyAgICAgICAgaWYgKGMgPT0gJ1xyJyAmJiAqcCA9
PSAnXG4nKSB7CisgICAgICAgICAgICAvLyBUdXJuIENSTEYgaW50byBDUiBvciBMRi4KKyAgICAg
ICAgICAgIHArKzsKKyAgICAgICAgICAgIG5lZWRGaXggPSB0cnVlOworICAgICAgICB9IGVsc2Ug
aWYgKGMgPT0gZnJvbUVuZGluZ0NoYXIpIHsKKyAgICAgICAgICAgIC8vIFR1cm4gQ1IvTEYgaW50
byBMRi9DUi4KKyAgICAgICAgICAgIG5lZWRGaXggPSB0cnVlOworICAgICAgICB9CisgICAgICAg
IG5ld0xlbiArPSAxOworICAgIH0KICAgICBpZiAoIW5lZWRGaXgpCi0gICAgICAgIHJldHVybiBy
ZXN1bHQ7CisgICAgICAgIHJldHVybiBmcm9tOwogCi0gICAgLy8gQ29udmVydCB0aGUgZW5kaW5n
cyBhbmQgY3JlYXRlIGEgZGF0YSBidWZmZXIuCisgICAgLy8gTWFrZSBhIGNvcHkgb2YgdGhlIHN0
cmluZy4KICAgICBwID0gZnJvbS5kYXRhKCk7CiAgICAgY2hhciogcTsKLSAgICByZXN1bHQgPSBD
U3RyaW5nOjpuZXdVbmluaXRpYWxpemVkKGNhbGN1bGF0ZWRMZW5ndGgsIHEpOworICAgIENTdHJp
bmcgcmVzdWx0ID0gQ1N0cmluZzo6bmV3VW5pbml0aWFsaXplZChuZXdMZW4sIHEpOwogICAgIHdo
aWxlIChjaGFyIGMgPSAqcCsrKSB7Ci0gICAgICAgIGlmIChjID09ICdccicpIHsKLSAgICAgICAg
ICAgIGlmICgqcCA9PSAnXG4nICYmIGVuZGluZyAhPSBFbmRpbmdDUkxGKSB7Ci0gICAgICAgICAg
ICAgICAgcCsrOwotICAgICAgICAgICAgICAgIG1lbWNweShxLCBlbmRpbmdDaGFycywgZW5kaW5n
TGVuZ3RoKTsKLSAgICAgICAgICAgICAgICBxICs9IGVuZGluZ0xlbmd0aDsKLSAgICAgICAgICAg
IH0gZWxzZSBpZiAoKnAgIT0gJ1xuJyAmJiBlbmRpbmcgIT0gRW5kaW5nQ1IpIHsKLSAgICAgICAg
ICAgICAgICBtZW1jcHkocSwgZW5kaW5nQ2hhcnMsIGVuZGluZ0xlbmd0aCk7Ci0gICAgICAgICAg
ICAgICAgcSArPSBlbmRpbmdMZW5ndGg7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBp
ZiAoYyA9PSAnXG4nICYmIGVuZGluZyAhPSBFbmRpbmdMRikgewotICAgICAgICAgICAgbWVtY3B5
KHEsIGVuZGluZ0NoYXJzLCBlbmRpbmdMZW5ndGgpOwotICAgICAgICAgICAgcSArPSBlbmRpbmdM
ZW5ndGg7CisgICAgICAgIGlmIChjID09ICdccicgJiYgKnAgPT0gJ1xuJykgeworICAgICAgICAg
ICAgLy8gVHVybiBDUkxGIG9yIENSIGludG8gQ1Igb3IgTEYuCisgICAgICAgICAgICBwKys7Cisg
ICAgICAgICAgICAqcSsrID0gdG9FbmRpbmdDaGFyOworICAgICAgICB9IGVsc2UgaWYgKGMgPT0g
ZnJvbUVuZGluZ0NoYXIpIHsKKyAgICAgICAgICAgIC8vIFR1cm4gQ1IvTEYgaW50byBMRi9DUi4K
KyAgICAgICAgICAgICpxKysgPSB0b0VuZGluZ0NoYXI7CiAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICAvLyBMZWF2ZSBvdGhlciBjaGFyYWN0ZXJzIGFsb25lLgogICAgICAgICAgICAgKnEr
KyA9IGM7CkBAIC0xOTMsNiArMjE0LDM1IEBAIENTdHJpbmcgU3RyaW5nQmxvYkl0ZW06OmNvbnZl
cnRUb0NTdHJpbmcoY29uc3QgU3RyaW5nJiB0ZXh0LCBMaW5lRW5kaW5nIGVuZGluZywKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCitDU3RyaW5nIFN0cmluZ0Jsb2JJdGVtOjpjb252ZXJ0VG9DU3Ry
aW5nKGNvbnN0IFN0cmluZyYgdGV4dCwgTGluZUVuZGluZyBlbmRpbmcsIFRleHRFbmNvZGluZyBl
bmNvZGluZykKK3sKKyAgICBDU3RyaW5nIGZyb20gPSBlbmNvZGluZy5lbmNvZGUodGV4dC5jaGFy
YWN0ZXJzKCksIHRleHQubGVuZ3RoKCksIEVudGl0aWVzRm9yVW5lbmNvZGFibGVzKTsKKworICAg
IGlmIChlbmRpbmcgPT0gRW5kaW5nTmF0aXZlKSB7CisjaWYgT1MoV0lORE9XUykKKyAgICAgICAg
ZW5kaW5nID0gRW5kaW5nQ1JMRjsKKyNlbHNlCisgICAgICAgIGVuZGluZyA9IEVuZGluZ0xGOwor
I2VuZGlmCisgICAgfQorCisgICAgc3dpdGNoIChlbmRpbmcpIHsKKyAgICBjYXNlIEVuZGluZ1Ry
YW5zcGFyZW50OgorICAgICAgICByZXR1cm4gZnJvbTsKKyAgICBjYXNlIEVuZGluZ0NSTEY6Cisg
ICAgICAgIHJldHVybiBjb252ZXJ0VG9DUkxGKGZyb20pOworICAgIGNhc2UgRW5kaW5nQ1I6Cisg
ICAgICAgIHJldHVybiBjb252ZXJ0VG9DUk9yTEYoZnJvbSwgdHJ1ZSk7CisgICAgY2FzZSBFbmRp
bmdMRjoKKyAgICAgICAgcmV0dXJuIGNvbnZlcnRUb0NST3JMRihmcm9tLCBmYWxzZSk7CisgICAg
ZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorCisgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZyb207Cit9CisKIC8vIEJ5dGVBcnJheUJs
b2JJdGVtIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KIAogUGFzc1JlZlB0cjxCbG9iSXRlbT4gQnl0ZUFycmF5QmxvYkl0ZW06OmNyZWF0
ZShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkK
</data>
<flag name="review"
          id="47167"
          type_id="1"
          status="+"
          setter="jianli"
    />
          </attachment>
      

    </bug>

</bugzilla>