<?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>51918</bug_id>
          
          <creation_ts>2011-01-04 23:27:30 -0800</creation_ts>
          <short_desc>contentEditable cannot handle multiple whitespace which is set as a composition text.</short_desc>
          <delta_ts>2011-01-11 00:43:34 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</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>DUPLICATE</resolution>
          <dup_id>5241</dup_id>
          
          <bug_file_loc>javascript:&quot;&lt;div contentEditable&gt;[]&lt;/div&gt;&quot;</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Hajime Morrita">morrita</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>bashi</cc>
    
    <cc>enrica</cc>
    
    <cc>justin.garcia</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>329447</commentid>
    <comment_count>0</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-01-04 23:27:30 -0800</bug_when>
    <thetext>How to reproduce:
1. Open attached repro URL (it is a plain contentEditable div)
2. Place caret between &quot;[&quot; and &quot;]&quot;
3. Enable IME
4. input &quot;AB&quot; (by typing Shift-A, Shift-B)
5. move caret between A and B (by typing left-arrow)
6. input whitespace multiple times (by typing whitespace)

What is expected:
The string &quot;A&quot;, followed by multiple whitespace, followed by &quot;B&quot; should be appeared as 
a composition text.

What happens instead:
The string &quot;A&quot;, followed by single whitespace, followed by &quot;B&quot; is appeared.

Other browsers:
- Firefox accepts multiple whitespace characters
- On Windows, composition text is typically rendered by IME itself, (thus multiple whitespace is accepted)

Note: 
You can use Google Japanese Input (http://www.google.com/intl/ja/ime/index-mac.html) to 
reproduce this problem. You can input multiple whitespace between compositing text.
Kotoeri doesn&apos;t allow users to input such type of sequence.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>329552</commentid>
    <comment_count>1</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-01-05 07:14:41 -0800</bug_when>
    <thetext>I&apos;m not too familiar with how IME works on Mac but in other places in editing, we use interleaving sp and nbsp to render line-breakable multiple whitespace.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330650</commentid>
    <comment_count>2</comment_count>
      <attachid>78211</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-01-06 22:34:57 -0800</bug_when>
    <thetext>Created attachment 78211
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>331963</commentid>
    <comment_count>3</comment_count>
      <attachid>78211</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-01-10 14:48:22 -0800</bug_when>
    <thetext>Comment on attachment 78211
Patch

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

&gt; LayoutTests/ChangeLog:7
&gt; +

You probably want to explain what kind of test you&apos;re adding.

&gt; WebCore/editing/CompositeEditCommand.cpp:433
&gt; +String CompositeEditCommand::stringWithBalancedWhitespaceAt(const Position&amp; position, const String&amp; text)

Nit: the original function name &quot;rebalanceWhitespaceAt&quot; is better IMO.

&gt; WebCore/editing/CompositeEditCommand.cpp:438
&gt; +    String ret;

Nit: please don&apos;t use abbreviation.

&gt; WebCore/editing/CompositeEditCommand.cpp:469
&gt; +    for (unsigned i = 0; i &lt; text.length(); ++i) {
&gt; +        bool isWhitespace = text[i] == &apos; &apos;;
&gt; +        if (isWhitespace) {
&gt; +            whiteCount++;
&gt; +
&gt; +            if (i + 1 &lt; text.length())
&gt; +                continue;
&gt; +            // Preserves trailing whitespace, which will be balanced by rebalanceWhitespaceAt()
&gt; +            ret.append(text.characters() + text.length() - whiteCount, whiteCount);
&gt; +            break;
&gt; +        }
&gt; +
&gt; +        // Preseves leading whitespace, which will be balanced by rebalanceWhitespaceAt()
&gt; +        if (whiteCount == i)
&gt; +            ret.append(text.characters(), whiteCount);
&gt; +        else {
&gt; +            // Interleaves nbsp and whitespace to preserve
&gt; +            // space characters and line-breakability.
&gt; +            if (1 == whiteCount)
&gt; +                ret.append(&apos; &apos;);
&gt; +            else {
&gt; +                for (unsigned whiteIndex = 0; whiteIndex &lt; whiteCount; ++whiteIndex)
&gt; +                    ret.append(static_cast&lt;UChar&gt;(whiteIndex%2 ? noBreakSpace : &apos; &apos;));
&gt; +            }
&gt; +        }
&gt; +
&gt; +        ret.append(text.characters()[i]);
&gt; +        whiteCount = 0;
&gt; +    }

Why aren&apos;t we calling stringWithRebalancedWhitespace in htmlediting.cpp?

&gt; WebCore/editing/Editor.cpp:1604
&gt; +    // Some IME pass sequence of whitespace &apos; &apos; instead of nbsp even they expect
&gt; +    // multiple whitespaces inserted into the redering result. 
&gt; +    // So we mix some nbsp characters for preserving the whitespace.

Nit: I don&apos;t think this comment is necessary.  Anyone who knows about whitespace rebalancing would understand what this code does.

&gt; WebCore/editing/Editor.cpp:1696
&gt; +        // Some IME pass sequence of whitespace &apos; &apos; instead of nbsp even they expect
&gt; +        // multiple whitespaces inserted into the redering result. 
&gt; +        // So we mix some nbsp characters for preserving the whitespace.

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>331971</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-01-10 15:00:57 -0800</bug_when>
    <thetext>Duplicate of bug 5241?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>331972</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-01-10 15:04:18 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Duplicate of bug 5241?

So it seems.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332181</commentid>
    <comment_count>6</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-01-11 00:42:49 -0800</bug_when>
    <thetext>&gt; &gt; Duplicate of bug 5241?
&gt; 
&gt; So it seems.
Thanks to pointing this out. I&apos;m closing this to mark as duplicated.
Update patch will come shortly to Bug 5241.

*** This bug has been marked as a duplicate of bug 5241 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78211</attachid>
            <date>2011-01-06 22:34:57 -0800</date>
            <delta_ts>2011-01-11 00:43:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-51918-20110107153456.patch</filename>
            <type>text/plain</type>
            <size>14718</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmMWM3YzQ4NTU1ZTkyZmQyYTkwMWM2Y2FmZTM4YzQ3YzA0YmIyMzEzLi5hZjEzZWVh
YzkzYWE2ZjlmN2Q3MmI2ODZhZDBhNmVlOWViNDczODM4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTEtMDEtMDYgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgY29udGVudEVkaXRhYmxl
IGNhbm5vdCBoYW5kbGUgbXVsdGlwbGUgd2hpdGVzcGFjZSB3aGljaCBpcyBzZXQgYXMgYSBjb21w
b3NpdGlvbiB0ZXh0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NTE5MTgKKworICAgICAgICAqIGVkaXRpbmcvaW5zZXJ0aW5nL2luc2VydC1jb21wb3Np
dGlvbi13aGl0ZXNwYWNlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9p
bnNlcnRpbmcvaW5zZXJ0LWNvbXBvc2l0aW9uLXdoaXRlc3BhY2UuaHRtbDogQWRkZWQuCisgICAg
ICAgICogZWRpdGluZy9pbnNlcnRpbmcvc2NyaXB0LXRlc3RzL2luc2VydC1jb21wb3NpdGlvbi13
aGl0ZXNwYWNlLmpzOiBBZGRlZC4KKwogMjAxMS0wMS0wNiAgTWloYWkgUGFycGFyaXRhICA8bWlo
YWlwQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkOyBjaHJvbWl1bSB0ZXN0IGV4
cGVjdGF0aW9ucyB1cGRhdGUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL2luc2Vy
dGluZy9pbnNlcnQtY29tcG9zaXRpb24td2hpdGVzcGFjZS1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9lZGl0aW5nL2luc2VydGluZy9pbnNlcnQtY29tcG9zaXRpb24td2hpdGVzcGFjZS1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYjY1MzM2NDY1NjFmZjY3ZjBhN2U3MjY2MDI4NDBhOGE0ZGJk
MDA2MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvaW5zZXJ0aW5nL2lu
c2VydC1jb21wb3NpdGlvbi13aGl0ZXNwYWNlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDM5IEBA
CitQQVNTIGNvbXBvc2l0aW5nVGV4dCBpcyAnQUInCitQQVNTIGNvbXBvc2l0aW5nVGV4dCBpcyAn
QSBCJworUEFTUyBjb21wb3NpdGluZ1RleHQgaXMgJ0EgwqBCJworUEFTUyBjb21wb3NpdGluZ1Rl
eHQgaXMgJ0EgwqAgQicKK1BBU1MgY29tcG9zaXRpbmdUZXh0IGlzICdBIMKgIMKgQicKK1BBU1Mg
Y29tcG9zaXRpbmdUZXh0IGlzICfCoEFCJworUEFTUyBjb21wb3NpdGluZ1RleHQgaXMgJ8KgwqBB
QicKK1BBU1MgY29tcG9zaXRpbmdUZXh0IGlzICfCoMKgIEFCJworUEFTUyBjb21wb3NpdGluZ1Rl
eHQgaXMgJ8KgwqAgwqBBQicKK1BBU1MgY29tcG9zaXRpbmdUZXh0IGlzICfCoMKgIMKgIEFCJwor
UEFTUyBjb21wb3NpdGluZ1RleHQgaXMgJ8KgwqAgwqAgwqBBQicKK1BBU1MgY29tcG9zaXRpbmdU
ZXh0IGlzICfCoMKgIMKgIMKgIEFCJworUEFTUyBjb21wb3NpdGluZ1RleHQgaXMgJ0FCIMKgJwor
UEFTUyBjb21wb3NpdGluZ1RleHQgaXMgJ0FCIMKgwqAnCitQQVNTIGNvbXBvc2l0aW5nVGV4dCBp
cyAnQUIgwqAgwqAnCitQQVNTIGNvbXBvc2l0aW5nVGV4dCBpcyAnQUIgwqAgwqDCoCcKK1BBU1Mg
Y29tcG9zaXRpbmdUZXh0IGlzICdBQiDCoCDCoCDCoCcKK1BBU1MgY29tcG9zaXRpbmdUZXh0IGlz
ICdBQiDCoCDCoCDCoMKgJworUEFTUyBjb21wb3NpdGluZ1RleHQgaXMgJ0FCJworUEFTUyBjb21w
b3NpdGluZ1RleHQgaXMgJ0EgQicKK1BBU1MgY29tcG9zaXRpbmdUZXh0IGlzICdBICBCJworUEFT
UyBjb21wb3NpdGluZ1RleHQgaXMgJ0EgICBCJworUEFTUyBjb21wb3NpdGluZ1RleHQgaXMgJ0Eg
ICAgQicKK1BBU1MgY29tcG9zaXRpbmdUZXh0IGlzICdBQiAgJworUEFTUyBjb21wb3NpdGluZ1Rl
eHQgaXMgJ0FCICAgJworUEFTUyBjb21wb3NpdGluZ1RleHQgaXMgJ0FCICAgICcKK1BBU1MgY29t
cG9zaXRpbmdUZXh0IGlzICdBQiAgICAgJworUEFTUyBjb21wb3NpdGluZ1RleHQgaXMgJ0FCICAg
ICAgJworUEFTUyBjb21wb3NpdGluZ1RleHQgaXMgJ0FCICAgICAgICcKK1BBU1MgY29tcG9zaXRp
bmdUZXh0IGlzICcgIEFCJworUEFTUyBjb21wb3NpdGluZ1RleHQgaXMgJyAgIEFCJworUEFTUyBj
b21wb3NpdGluZ1RleHQgaXMgJyAgICBBQicKK1BBU1MgY29tcG9zaXRpbmdUZXh0IGlzICcgICAg
IEFCJworUEFTUyBjb21wb3NpdGluZ1RleHQgaXMgJyAgICAgIEFCJworUEFTUyBjb21wb3NpdGlu
Z1RleHQgaXMgJyAgICAgICBBQicKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL2luc2VydGlu
Zy9pbnNlcnQtY29tcG9zaXRpb24td2hpdGVzcGFjZS5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9pbnNlcnRpbmcvaW5zZXJ0LWNvbXBvc2l0aW9uLXdoaXRlc3BhY2UuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li41ZmI5MzQ3NTE4YmFkMmIyZjVmNTE3YjUyZmMxZDE0YzBhY2QzMDllCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9pbnNlcnRpbmcvaW5zZXJ0LWNvbXBvc2l0aW9uLXdo
aXRlc3BhY2UuaHRtbApAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0v
L0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9pbnNlcnQtY29tcG9z
aXRpb24td2hpdGVzcGFjZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvaW5zZXJ0aW5nL3NjcmlwdC10ZXN0cy9p
bnNlcnQtY29tcG9zaXRpb24td2hpdGVzcGFjZS5qcyBiL0xheW91dFRlc3RzL2VkaXRpbmcvaW5z
ZXJ0aW5nL3NjcmlwdC10ZXN0cy9pbnNlcnQtY29tcG9zaXRpb24td2hpdGVzcGFjZS5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi43ZmI3OTBjNjk4ZDEyMDFhYTYwYmY1ZmJmMTQyYWExMTBhN2M4ZDI0Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9pbnNlcnRpbmcvc2NyaXB0LXRlc3RzL2lu
c2VydC1jb21wb3NpdGlvbi13aGl0ZXNwYWNlLmpzCkBAIC0wLDAgKzEsNjkgQEAKKwordmFyIHNl
bCA9IGRvY3VtZW50LmdldFNlbGVjdGlvbigpOwordmFyIHJvb3QgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJyb290Iik7Citkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHJvb3QpOworCisKK2Z1
bmN0aW9uIGNyZWF0ZUVkaXRhYmxlKHRhZ05hbWUsIHRleHQpIHsKKyAgICB2YXIgbm9kZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnTmFtZSk7CisgICAgbm9kZS5jb250ZW50RWRpdGFibGUg
PSB0cnVlOworICAgIG5vZGUuaW5uZXJIVE1MID0gdGV4dDsKKyAgICByZXR1cm4gbm9kZTsKK30K
KworZnVuY3Rpb24gdGVzdCh0YWdOYW1lLCBjb21wb3NpdGlvblRleHQsIGV4cGVjdGVkKSB7Cisg
ICAgdmFyIG5vZGUgPSBjcmVhdGVFZGl0YWJsZSh0YWdOYW1lLCAiWCIpOworICAgIHJvb3QuYXBw
ZW5kQ2hpbGQobm9kZSk7CisKKyAgICB2YXIgdGV4dE5vZGUgPSBub2RlLmZpcnN0Q2hpbGQ7Cisg
ICAgc2VsLnNldEJhc2VBbmRFeHRlbnQodGV4dE5vZGUsIDAsIHRleHROb2RlLCB0ZXh0Tm9kZS5k
YXRhLmxlbmd0aCk7CisgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkRlbGV0ZSIsIGZhbHNlKTsK
KworICAgIHRleHRJbnB1dENvbnRyb2xsZXIuc2V0TWFya2VkVGV4dChjb21wb3NpdGlvblRleHQs
IDAsIGNvbXBvc2l0aW9uVGV4dCk7CisgICAgY29tcG9zaXRpbmdUZXh0ID0gbm9kZS5pbm5lclRl
eHQ7CisgICAgdGV4dElucHV0Q29udHJvbGxlci51bm1hcmtUZXh0KCk7CisgICAgY29uZmlybWVk
VGV4dCA9IG5vZGUuaW5uZXJUZXh0OworCisgICAgc2hvdWxkQmUoImNvbXBvc2l0aW5nVGV4dCIs
ICInIiArIGV4cGVjdGVkICsgIiciKTsKK30KKwordGVzdCgiZGl2IiwgIkFCIiwgIkFCIik7Cit0
ZXN0KCJkaXYiLCAiQSBCIiwgIkEgQiIpOwordGVzdCgiZGl2IiwgIkEgIEIiLCAiQSBceEEwQiIp
OwordGVzdCgiZGl2IiwgIkEgICBCIiwgIkEgXHhBMCBCIik7Cit0ZXN0KCJkaXYiLCAiQSAgICBC
IiwgIkEgXHhBMCBceEEwQiIpOyAKK3Rlc3QoImRpdiIsICIgQUIiLCAiXHhBMEFCIik7Cit0ZXN0
KCJkaXYiLCAiICBBQiIsICJceEEwXHhBMEFCIik7Cit0ZXN0KCJkaXYiLCAiICAgQUIiLCAiXHhB
MFx4QTAgQUIiKTsKK3Rlc3QoImRpdiIsICIgICAgQUIiLCAiXHhBMFx4QTAgXHhBMEFCIik7Cit0
ZXN0KCJkaXYiLCAiICAgICBBQiIsICJceEEwXHhBMCBceEEwIEFCIik7Cit0ZXN0KCJkaXYiLCAi
ICAgICAgQUIiLCAiXHhBMFx4QTAgXHhBMCBceEEwQUIiKTsKK3Rlc3QoImRpdiIsICIgICAgICAg
QUIiLCAiXHhBMFx4QTAgXHhBMCBceEEwIEFCIik7Cit0ZXN0KCJkaXYiLCAiQUIgICIsICJBQiBc
eEEwIik7Cit0ZXN0KCJkaXYiLCAiQUIgICAiLCAiQUIgXHhBMFx4QTAiKTsKK3Rlc3QoImRpdiIs
ICJBQiAgICAiLCAiQUIgXHhBMCBceEEwIik7Cit0ZXN0KCJkaXYiLCAiQUIgICAgICIsICJBQiBc
eEEwIFx4QTBceEEwIik7Cit0ZXN0KCJkaXYiLCAiQUIgICAgICAiLCAiQUIgXHhBMCBceEEwIFx4
QTAiKTsKK3Rlc3QoImRpdiIsICJBQiAgICAgICAiLCAiQUIgXHhBMCBceEEwIFx4QTBceEEwIik7
CisKK3Rlc3QoInByZSIsICJBQiIsICJBQiIpOwordGVzdCgicHJlIiwgIkEgQiIsICJBIEIiKTsK
K3Rlc3QoInByZSIsICJBICBCIiwgIkEgIEIiKTsKK3Rlc3QoInByZSIsICJBICAgQiIsICJBICAg
QiIpOwordGVzdCgicHJlIiwgIkEgICAgQiIsICJBICAgIEIiKTsKK3Rlc3QoInByZSIsICJBQiAg
IiwgIkFCICAiKTsKK3Rlc3QoInByZSIsICJBQiAgICIsICJBQiAgICIpOwordGVzdCgicHJlIiwg
IkFCICAgICIsICJBQiAgICAiKTsKK3Rlc3QoInByZSIsICJBQiAgICAgIiwgIkFCICAgICAiKTsK
K3Rlc3QoInByZSIsICJBQiAgICAgICIsICJBQiAgICAgICIpOwordGVzdCgicHJlIiwgIkFCICAg
ICAgICIsICJBQiAgICAgICAiKTsKK3Rlc3QoInByZSIsICIgIEFCIiwgIiAgQUIiKTsKK3Rlc3Qo
InByZSIsICIgICBBQiIsICIgICBBQiIpOwordGVzdCgicHJlIiwgIiAgICBBQiIsICIgICAgQUIi
KTsKK3Rlc3QoInByZSIsICIgICAgIEFCIiwgIiAgICAgQUIiKTsKK3Rlc3QoInByZSIsICIgICAg
ICBBQiIsICIgICAgICBBQiIpOwordGVzdCgicHJlIiwgIiAgICAgICBBQiIsICIgICAgICAgQUIi
KTsKKworcm9vdC5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOworc3VjY2Vzc2Z1bGx5UGFyc2VkID0g
dHJ1ZTsKKwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCAzNGE2MDBmMjdiZWUyYzdlYTNmYWUwMTNhZjQ2YTViYTkxNmZkZDU4Li4xYzIzMjg2
NTg0ZWU0Y2ZhMmEwYjVlNzIxY2ZhNmJjZThjZjcyYmZkIDEwMDY0NAotLS0gYS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDExLTAx
LTA2ICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGNvbnRlbnRFZGl0YWJsZSBjYW5ub3Qg
aGFuZGxlIG11bHRpcGxlIHdoaXRlc3BhY2Ugd2hpY2ggaXMgc2V0IGFzIGEgY29tcG9zaXRpb24g
dGV4dC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUx
OTE4CisKKyAgICAgICAgRml4IHNldENvbXBvc2l0aW9uKCkgYW5kIGNvbmZpcm1Db21wb3NpdGlv
bigpIHRvIHJld3JpdGUgdGhlIGxpc3QKKyAgICAgICAgb2Ygd2hpdGVzcGFjZSgweDIwKSBpbiBn
aXZlbiB0ZXh0IHRvIGFuIGludGVybGVhdmVkIHNlcXVlbmNlIG9mCisgICAgICAgIG5ic3AoMHhh
MCkgYW5kIHdoaXRlc3BhY2UoMHgyMCkuICBUaGlzIGNoYW5nZSBtb2RpZmllcyB0aGUgdGV4dCBp
bgorICAgICAgICBFZGl0b3IgaW5zdGVhZCBvZiBDb21wb3NpdGVFZGl0Q29tbWFuZCBiZWNhdXNl
IG5vdCBhbGwgIkluc2VydFRleHQiIAorICAgICAgICBvcGVyYXRpb24gd2FudHMgdG8gcHJlc2Vy
dmUgd2hpdGVzcGFjZSBvZiB0aGUgY29udGVudC4KKyAgICAgICAgCisgICAgICAgIFRlc3Q6IGVk
aXRpbmcvaW5zZXJ0aW5nL2luc2VydC1jb21wb3NpdGlvbi13aGl0ZXNwYWNlLmh0bWwKKworICAg
ICAgICAqIGVkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6aGFzV2hpdGVzcGFjZUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlRWRpdENv
bW1hbmQ6OnNob3VsZEJhbGFuY2VXaGl0ZXNwYWNlQXQpOgorICAgICAgICAoV2ViQ29yZTo6Q29t
cG9zaXRlRWRpdENvbW1hbmQ6OnN0cmluZ1dpdGhCYWxhbmNlZFdoaXRlc3BhY2VBdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6cmViYWxhbmNlV2hpdGVzcGFjZUF0
KToKKyAgICAgICAgKiBlZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmg6CisgICAgICAgICog
ZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpjb25maXJtQ29t
cG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZXRDb21wb3NpdGlvbik6CisK
IDIwMTEtMDEtMDYgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9Db21w
b3NpdGVFZGl0Q29tbWFuZC5jcHAgYi9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1h
bmQuY3BwCmluZGV4IDc0ODc3N2Q2MGFiYWIyZTlmYmEwOTYzY2ZkNjcwMmU4MDljMTQ5YWYuLmMz
YWM3ODJiZGM2MTkwMTdkYjQyMTAxYTM5Mjg1YjU3OTI3MjA4ODYgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKKysrIGIvV2ViQ29yZS9lZGl0aW5n
L0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcApAQCAtMzk1LDIwICszOTUsODkgQEAgc3RhdGljIGlu
bGluZSBib29sIGlzV2hpdGVzcGFjZShVQ2hhciBjKQogICAgIHJldHVybiBjID09IG5vQnJlYWtT
cGFjZSB8fCBjID09ICcgJyB8fCBjID09ICdcbicgfHwgYyA9PSAnXHQnOwogfQogCi0vLyBGSVhN
RTogRG9lc24ndCBnbyBpbnRvIHRleHQgbm9kZXMgdGhhdCBjb250cmlidXRlIGFkamFjZW50IHRl
eHQgKHNpYmxpbmdzLCBjb3VzaW5zLCBldGMpLgotdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6
cmViYWxhbmNlV2hpdGVzcGFjZUF0KGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvbikKK3N0YXRpYyBi
b29sIGhhc1doaXRlc3BhY2VMaXN0KGNvbnN0IFN0cmluZyYgdGV4dCkKK3sKKyAgICBib29sIGZv
dW5kV2hpdGVzcGFjZSA9IGZhbHNlOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0ZXh0
Lmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgYm9vbCBmb3VuZEhlcmUgPSAodGV4dFtpXSA9PSAn
ICcpOworICAgICAgICBpZiAoZm91bmRXaGl0ZXNwYWNlKQorICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIGZvdW5kV2hpdGVzcGFjZSA9IGZvdW5kSGVyZTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OnNob3VsZEJhbGFu
Y2VXaGl0ZXNwYWNlQXQoY29uc3QgUG9zaXRpb24mIHBvc2l0aW9uLCBib29sIHdpbGxJbnNlcnQp
CiB7CiAgICAgTm9kZSogbm9kZSA9IHBvc2l0aW9uLm5vZGUoKTsKLSAgICBpZiAoIW5vZGUgfHwg
IW5vZGUtPmlzVGV4dE5vZGUoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIFRleHQqIHRleHROb2Rl
ID0gc3RhdGljX2Nhc3Q8VGV4dCo+KG5vZGUpOwotICAgIAotICAgIGlmICh0ZXh0Tm9kZS0+bGVu
Z3RoKCkgPT0gMCkKLSAgICAgICAgcmV0dXJuOwotICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIg
PSB0ZXh0Tm9kZS0+cmVuZGVyZXIoKTsKKyAgICBpZiAoIW5vZGUpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIGlmIChub2RlLT5pc1RleHROb2RlKCkpIHsKKyAgICAgICAgVGV4dCogdGV4
dE5vZGUgPSBzdGF0aWNfY2FzdDxUZXh0Kj4obm9kZSk7CisgICAgICAgIGlmICghdGV4dE5vZGUt
Pmxlbmd0aCgpICYmICF3aWxsSW5zZXJ0KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0gZWxzZSB7CisgICAgICAgIGlmICghd2lsbEluc2VydCkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisKKyAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVy
ZXIoKTsKICAgICBpZiAocmVuZGVyZXIgJiYgIXJlbmRlcmVyLT5zdHlsZSgpLT5jb2xsYXBzZVdo
aXRlU3BhY2UoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9
CisKK1N0cmluZyBDb21wb3NpdGVFZGl0Q29tbWFuZDo6c3RyaW5nV2l0aEJhbGFuY2VkV2hpdGVz
cGFjZUF0KGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvbiwgY29uc3QgU3RyaW5nJiB0ZXh0KQorewor
ICAgIGlmICghaGFzV2hpdGVzcGFjZUxpc3QodGV4dCkgfHwgIXNob3VsZEJhbGFuY2VXaGl0ZXNw
YWNlQXQocG9zaXRpb24sIHRydWUpKQorICAgICAgICByZXR1cm4gdGV4dDsKKworICAgIFN0cmlu
ZyByZXQ7CisgICAgdW5zaWduZWQgd2hpdGVDb3VudCA9IDA7CisKKyAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgdGV4dC5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgIGJvb2wgaXNXaGl0ZXNw
YWNlID0gdGV4dFtpXSA9PSAnICc7CisgICAgICAgIGlmIChpc1doaXRlc3BhY2UpIHsKKyAgICAg
ICAgICAgIHdoaXRlQ291bnQrKzsKKworICAgICAgICAgICAgaWYgKGkgKyAxIDwgdGV4dC5sZW5n
dGgoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIC8vIFByZXNlcnZl
cyB0cmFpbGluZyB3aGl0ZXNwYWNlLCB3aGljaCB3aWxsIGJlIGJhbGFuY2VkIGJ5IHJlYmFsYW5j
ZVdoaXRlc3BhY2VBdCgpCisgICAgICAgICAgICByZXQuYXBwZW5kKHRleHQuY2hhcmFjdGVycygp
ICsgdGV4dC5sZW5ndGgoKSAtIHdoaXRlQ291bnQsIHdoaXRlQ291bnQpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKworICAgICAgICAvLyBQcmVzZXZlcyBsZWFkaW5nIHdoaXRlc3Bh
Y2UsIHdoaWNoIHdpbGwgYmUgYmFsYW5jZWQgYnkgcmViYWxhbmNlV2hpdGVzcGFjZUF0KCkKKyAg
ICAgICAgaWYgKHdoaXRlQ291bnQgPT0gaSkKKyAgICAgICAgICAgIHJldC5hcHBlbmQodGV4dC5j
aGFyYWN0ZXJzKCksIHdoaXRlQ291bnQpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8v
IEludGVybGVhdmVzIG5ic3AgYW5kIHdoaXRlc3BhY2UgdG8gcHJlc2VydmUKKyAgICAgICAgICAg
IC8vIHNwYWNlIGNoYXJhY3RlcnMgYW5kIGxpbmUtYnJlYWthYmlsaXR5LgorICAgICAgICAgICAg
aWYgKDEgPT0gd2hpdGVDb3VudCkKKyAgICAgICAgICAgICAgICByZXQuYXBwZW5kKCcgJyk7Cisg
ICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIHdoaXRlSW5k
ZXggPSAwOyB3aGl0ZUluZGV4IDwgd2hpdGVDb3VudDsgKyt3aGl0ZUluZGV4KQorICAgICAgICAg
ICAgICAgICAgICByZXQuYXBwZW5kKHN0YXRpY19jYXN0PFVDaGFyPih3aGl0ZUluZGV4JTIgPyBu
b0JyZWFrU3BhY2UgOiAnICcpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAg
IHJldC5hcHBlbmQodGV4dC5jaGFyYWN0ZXJzKClbaV0pOworICAgICAgICB3aGl0ZUNvdW50ID0g
MDsKKyAgICB9CisKKyAgICByZXR1cm4gcmV0OworfQorCisvLyBGSVhNRTogRG9lc24ndCBnbyBp
bnRvIHRleHQgbm9kZXMgdGhhdCBjb250cmlidXRlIGFkamFjZW50IHRleHQgKHNpYmxpbmdzLCBj
b3VzaW5zLCBldGMpLgordm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6cmViYWxhbmNlV2hpdGVz
cGFjZUF0KGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvbikKK3sKKyAgICBpZiAoIXNob3VsZEJhbGFu
Y2VXaGl0ZXNwYWNlQXQocG9zaXRpb24sIGZhbHNlKSkKICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAKKworICAgIFRleHQqIHRleHROb2RlID0gc3RhdGljX2Nhc3Q8VGV4dCo+KHBvc2l0aW9uLm5v
ZGUoKSk7CiAgICAgU3RyaW5nIHRleHQgPSB0ZXh0Tm9kZS0+ZGF0YSgpOwogICAgIEFTU0VSVCgh
dGV4dC5pc0VtcHR5KCkpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRl
RWRpdENvbW1hbmQuaCBiL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5oCmlu
ZGV4IDZkYjRlYjE4MmEwODg2YWQxZmQ4MGIwNGU4YzFjNmYzNjFjYjAzMDAuLmY0NWFiODVmMTFk
NTk3MGJjODg3MTY0Nzc0N2U0MWZhYmM2NWVjNmEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGlu
Zy9Db21wb3NpdGVFZGl0Q29tbWFuZC5oCisrKyBiL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVF
ZGl0Q29tbWFuZC5oCkBAIC00Myw2ICs0Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Db21w
b3NpdGVFZGl0Q29tbWFuZCgpOwogCiAgICAgYm9vbCBpc0ZpcnN0Q29tbWFuZChFZGl0Q29tbWFu
ZCogY29tbWFuZCkgeyByZXR1cm4gIW1fY29tbWFuZHMuaXNFbXB0eSgpICYmIG1fY29tbWFuZHMu
Zmlyc3QoKSA9PSBjb21tYW5kOyB9CisgICAgc3RhdGljIFN0cmluZyBzdHJpbmdXaXRoQmFsYW5j
ZWRXaGl0ZXNwYWNlQXQoY29uc3QgUG9zaXRpb24mLCBjb25zdCBTdHJpbmcmKTsKIAogcHJvdGVj
dGVkOgogICAgIGV4cGxpY2l0IENvbXBvc2l0ZUVkaXRDb21tYW5kKERvY3VtZW50Kik7CkBAIC0x
MTgsNiArMTE5LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgVmVjdG9yPFJlZlB0cjxFZGl0Q29tbWFu
ZD4gPiBtX2NvbW1hbmRzOwogCisgICAgc3RhdGljIGJvb2wgc2hvdWxkQmFsYW5jZVdoaXRlc3Bh
Y2VBdChjb25zdCBQb3NpdGlvbiYsIGJvb2wgd2lsbEluc2VydCk7CiBwcml2YXRlOgogICAgIHZp
cnR1YWwgdm9pZCBkb1VuYXBwbHkoKTsKICAgICB2aXJ0dWFsIHZvaWQgZG9SZWFwcGx5KCk7CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuY3BwCmluZGV4IDQ0MzNiNDVkZDRkYjNjYzY2NzE2NmQwOGM5MmNkOWMwZDUwZmE2NWUu
LjJkMGQ2ZWQ4M2VmMjEyMmFiOTcxMGVlZTNhNTM5OGQ5ZTQzMDcxMmUgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3Bw
CkBAIC0xNTk4LDEzICsxNTk4LDE4IEBAIHZvaWQgRWRpdG9yOjpjb25maXJtQ29tcG9zaXRpb24o
Y29uc3QgU3RyaW5nJiB0ZXh0LCBib29sIHByZXNlcnZlU2VsZWN0aW9uKQogICAgICAgICBzZXRJ
Z25vcmVDb21wb3NpdGlvblNlbGVjdGlvbkNoYW5nZShmYWxzZSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9Ci0gICAgCisKKyAgICAvLyBTb21lIElNRSBwYXNzIHNlcXVlbmNlIG9mIHdoaXRlc3Bh
Y2UgJyAnIGluc3RlYWQgb2YgbmJzcCBldmVuIHRoZXkgZXhwZWN0CisgICAgLy8gbXVsdGlwbGUg
d2hpdGVzcGFjZXMgaW5zZXJ0ZWQgaW50byB0aGUgcmVkZXJpbmcgcmVzdWx0LiAKKyAgICAvLyBT
byB3ZSBtaXggc29tZSBuYnNwIGNoYXJhY3RlcnMgZm9yIHByZXNlcnZpbmcgdGhlIHdoaXRlc3Bh
Y2UuCisgICAgU3RyaW5nIGJhbGFuY2VkVGV4dCA9IENvbXBvc2l0ZUVkaXRDb21tYW5kOjpzdHJp
bmdXaXRoQmFsYW5jZWRXaGl0ZXNwYWNlQXQobV9mcmFtZS0+c2VsZWN0aW9uKCktPmJhc2UoKSwg
dGV4dCk7CisKICAgICAvLyBEaXNwYXRjaCBhIGNvbXBvc2l0aW9uZW5kIGV2ZW50IHRvIHRoZSBm
b2N1c2VkIG5vZGUuCiAgICAgLy8gV2Ugc2hvdWxkIHNlbmQgdGhpcyBldmVudCBiZWZvcmUgc2Vu
ZGluZyBhIFRleHRFdmVudCBhcyB3cml0dGVuIGluIFNlY3Rpb24gNi4yLjIgYW5kIDYuMi4zIG9m
CiAgICAgLy8gdGhlIERPTSBFdmVudCBzcGVjaWZpY2F0aW9uLgogICAgIE5vZGUqIHRhcmdldCA9
IG1fZnJhbWUtPmRvY3VtZW50KCktPmZvY3VzZWROb2RlKCk7CiAgICAgaWYgKHRhcmdldCkgewot
ICAgICAgICBSZWZQdHI8Q29tcG9zaXRpb25FdmVudD4gZXZlbnQgPSBDb21wb3NpdGlvbkV2ZW50
OjpjcmVhdGUoZXZlbnROYW1lcygpLmNvbXBvc2l0aW9uZW5kRXZlbnQsIG1fZnJhbWUtPmRvbVdp
bmRvdygpLCB0ZXh0KTsKKyAgICAgICAgUmVmUHRyPENvbXBvc2l0aW9uRXZlbnQ+IGV2ZW50ID0g
Q29tcG9zaXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jb21wb3NpdGlvbmVuZEV2ZW50
LCBtX2ZyYW1lLT5kb21XaW5kb3coKSwgYmFsYW5jZWRUZXh0KTsKICAgICAgICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7CiAgICAgICAgIHRhcmdldC0+ZGlzcGF0Y2hFdmVudChldmVudCwgZWMpOwog
ICAgIH0KQEAgLTE2MTcsNyArMTYyMiw3IEBAIHZvaWQgRWRpdG9yOjpjb25maXJtQ29tcG9zaXRp
b24oY29uc3QgU3RyaW5nJiB0ZXh0LCBib29sIHByZXNlcnZlU2VsZWN0aW9uKQogICAgIG1fY29t
cG9zaXRpb25Ob2RlID0gMDsKICAgICBtX2N1c3RvbUNvbXBvc2l0aW9uVW5kZXJsaW5lcy5jbGVh
cigpOwogCi0gICAgaW5zZXJ0VGV4dCh0ZXh0LCAwKTsKKyAgICBpbnNlcnRUZXh0KGJhbGFuY2Vk
VGV4dCwgMCk7CiAKICAgICBpZiAocHJlc2VydmVTZWxlY3Rpb24pIHsKICAgICAgICAgbV9mcmFt
ZS0+c2VsZWN0aW9uKCktPnNldFNlbGVjdGlvbihvbGRTZWxlY3Rpb24sIGZhbHNlLCBmYWxzZSk7
CkBAIC0xNjg2LDcgKzE2OTEsMTEgQEAgdm9pZCBFZGl0b3I6OnNldENvbXBvc2l0aW9uKGNvbnN0
IFN0cmluZyYgdGV4dCwgY29uc3QgVmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW4KICAgICBtX2N1
c3RvbUNvbXBvc2l0aW9uVW5kZXJsaW5lcy5jbGVhcigpOwogCiAgICAgaWYgKCF0ZXh0LmlzRW1w
dHkoKSkgewotICAgICAgICBUeXBpbmdDb21tYW5kOjppbnNlcnRUZXh0KG1fZnJhbWUtPmRvY3Vt
ZW50KCksIHRleHQsIHRydWUsIHRydWUpOworICAgICAgICAvLyBTb21lIElNRSBwYXNzIHNlcXVl
bmNlIG9mIHdoaXRlc3BhY2UgJyAnIGluc3RlYWQgb2YgbmJzcCBldmVuIHRoZXkgZXhwZWN0Cisg
ICAgICAgIC8vIG11bHRpcGxlIHdoaXRlc3BhY2VzIGluc2VydGVkIGludG8gdGhlIHJlZGVyaW5n
IHJlc3VsdC4gCisgICAgICAgIC8vIFNvIHdlIG1peCBzb21lIG5ic3AgY2hhcmFjdGVycyBmb3Ig
cHJlc2VydmluZyB0aGUgd2hpdGVzcGFjZS4KKyAgICAgICAgU3RyaW5nIGJhbGFuY2VkVGV4dCA9
IENvbXBvc2l0ZUVkaXRDb21tYW5kOjpzdHJpbmdXaXRoQmFsYW5jZWRXaGl0ZXNwYWNlQXQobV9m
cmFtZS0+c2VsZWN0aW9uKCktPmJhc2UoKSwgdGV4dCk7CisgICAgICAgIFR5cGluZ0NvbW1hbmQ6
Omluc2VydFRleHQobV9mcmFtZS0+ZG9jdW1lbnQoKSwgYmFsYW5jZWRUZXh0LCB0cnVlLCB0cnVl
KTsKIAogICAgICAgICAvLyBGaW5kIG91dCB3aGF0IG5vZGUgaGFzIHRoZSBjb21wb3NpdGlvbiBu
b3cuCiAgICAgICAgIFBvc2l0aW9uIGJhc2UgPSBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+YmFzZSgp
LmRvd25zdHJlYW0oKTsKQEAgLTE2OTYsNyArMTcwNSw3IEBAIHZvaWQgRWRpdG9yOjpzZXRDb21w
b3NpdGlvbihjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFZlY3RvcjxDb21wb3NpdGlvblVuZGVy
bGluCiAgICAgICAgIE5vZGUqIGV4dGVudE5vZGUgPSBleHRlbnQubm9kZSgpOwogICAgICAgICB1
bnNpZ25lZCBleHRlbnRPZmZzZXQgPSBleHRlbnQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKTsK
IAotICAgICAgICBpZiAoYmFzZU5vZGUgJiYgYmFzZU5vZGUgPT0gZXh0ZW50Tm9kZSAmJiBiYXNl
Tm9kZS0+aXNUZXh0Tm9kZSgpICYmIGJhc2VPZmZzZXQgKyB0ZXh0Lmxlbmd0aCgpID09IGV4dGVu
dE9mZnNldCkgeworICAgICAgICBpZiAoYmFzZU5vZGUgJiYgYmFzZU5vZGUgPT0gZXh0ZW50Tm9k
ZSAmJiBiYXNlTm9kZS0+aXNUZXh0Tm9kZSgpICYmIGJhc2VPZmZzZXQgKyBiYWxhbmNlZFRleHQu
bGVuZ3RoKCkgPT0gZXh0ZW50T2Zmc2V0KSB7CiAgICAgICAgICAgICBtX2NvbXBvc2l0aW9uTm9k
ZSA9IHN0YXRpY19jYXN0PFRleHQqPihiYXNlTm9kZSk7CiAgICAgICAgICAgICBtX2NvbXBvc2l0
aW9uU3RhcnQgPSBiYXNlT2Zmc2V0OwogICAgICAgICAgICAgbV9jb21wb3NpdGlvbkVuZCA9IGV4
dGVudE9mZnNldDsK
</data>

          </attachment>
      

    </bug>

</bugzilla>