<?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>48418</bug_id>
          
          <creation_ts>2010-10-27 05:00:37 -0700</creation_ts>
          <short_desc>@spellcheck attribute at the child of contentEditable node is ignored.</short_desc>
          <delta_ts>2010-11-01 22:31:02 -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>HTML Editing</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></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="Hajime Morrita">morrita</assigned_to>
          <cc>eric</cc>
    
    <cc>jiapu.mail</cc>
    
    <cc>ojan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>300133</commentid>
    <comment_count>0</comment_count>
      <attachid>72013</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-10-27 05:00:37 -0700</bug_when>
    <thetext>Created attachment 72013
repro 

@spellcheck attribute is ignored when it is given at the node ascendant of the contentEditable element (not the contentEditable element itself.)

  &lt;div contentEditable=&quot;true&quot;&gt;
    &lt;div&gt;Here is spellcheck=true:    [&lt;span spellcheck=&quot;true&quot; &gt;test should be checked here.&lt;/span&gt;]&lt;/div&gt;
    &lt;div&gt;Here is spellcheck=false:   [&lt;span spellcheck=&quot;false&quot;&gt;text should NOT be checked here, but does.&lt;/span&gt;]&lt;/div&gt;
  &lt;/div&gt;

Currently @spellcheck is checked against focused node, which is an editable root at the case of rich text editing (not form.)
We should check the node under the selection(caret) at that case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302599</commentid>
    <comment_count>1</comment_count>
      <attachid>72494</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-11-01 04:26:52 -0700</bug_when>
    <thetext>Created attachment 72494
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303155</commentid>
    <comment_count>2</comment_count>
      <attachid>72494</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-11-01 18:55:01 -0700</bug_when>
    <thetext>Comment on attachment 72494
Patch

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

&gt; LayoutTests/editing/spelling/spelling-attribute-at-child-expected.txt:14
&gt; +PASS layoutTestController.hasSpellingMarker(1, 2) is true

The readability of the test result is not good.  Every test looks to check the same thing, layoutTestController.hasSpellingMarker(1, 2).

How about testSpellCheckingEnabled() returns the boolean result of hasSpellingMarker(), and call shouldBe() at the top level like shouldBeFalse(&apos;testSpellCheckingEnabled(undefined, false))?

&gt; WebCore/editing/Editor.cpp:2130
&gt; +    return isSpellCheckingEnabledFor(m_frame-&gt;selection()-&gt;start().node());

Why m_frame-&gt;selection()-&gt;start().node() instead of document()-&gt;focusedNode() ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303161</commentid>
    <comment_count>3</comment_count>
      <attachid>72494</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-11-01 19:12:00 -0700</bug_when>
    <thetext>Comment on attachment 72494
Patch

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

&gt; LayoutTests/editing/spelling/script-tests/spelling-attribute-at-child.js:15
&gt; +    root.innerHTML = &quot;&lt;div id=&apos;parent&apos; contentEditable&gt;Foo &lt;span id=&apos;child&apos;&gt;[]&lt;/span&gt; Baz&lt;/div&gt;&quot;;
&gt; +    var parent = document.getElementById(&quot;parent&quot;);
&gt; +    if (undefined != parentValue)
&gt; +        parent.spellcheck = parentValue;
&gt; +    var child = document.getElementById(&quot;child&quot;);
&gt; +    if (undefined != childValue)
&gt; +        child.spellcheck = childValue;

I think it&apos;s cleaner to pass the entire markup to this function rather than passing boolean values and modifying DOM by script like this.  You can then remove id attributes (you can just make a contract that there&apos;s exactly one span and do var text = document.elementsByTagName(&apos;span&apos;)[0].firstChild.

&gt; LayoutTests/editing/spelling/script-tests/spelling-attribute-at-child.js:22
&gt; +    shouldBe(&quot;layoutTestController.hasSpellingMarker(1, 2)&quot;, expectedEnabled ? &quot;true&quot; : &quot;false&quot;);

I don&apos;t think this is a really nice usage of shouldBe.  I personally like calling testPassed / testFailed manually with more descriptive message.  See See http://trac.webkit.org/browser/trunk/LayoutTests/editing/execCommand/script-tests/query-command-state.js for an example.

&gt;&gt; LayoutTests/editing/spelling/spelling-attribute-at-child-expected.txt:14
&gt;&gt; +PASS layoutTestController.hasSpellingMarker(1, 2) is true
&gt; 
&gt; The readability of the test result is not good.  Every test looks to check the same thing, layoutTestController.hasSpellingMarker(1, 2).
&gt; 
&gt; How about testSpellCheckingEnabled() returns the boolean result of hasSpellingMarker(), and call shouldBe() at the top level like shouldBeFalse(&apos;testSpellCheckingEnabled(undefined, false))?

I agree with Kent.  These results look cryptic.  We need to look at the actual script to know what the test is doing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303163</commentid>
    <comment_count>4</comment_count>
      <attachid>72618</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-11-01 19:20:13 -0700</bug_when>
    <thetext>Created attachment 72618
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303166</commentid>
    <comment_count>5</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-11-01 19:22:42 -0700</bug_when>
    <thetext>Oops, I&apos;ve missed Ryosuke&apos;s comment. I&apos;ll address it soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303168</commentid>
    <comment_count>6</comment_count>
      <attachid>72619</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-11-01 19:30:44 -0700</bug_when>
    <thetext>Created attachment 72619
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303171</commentid>
    <comment_count>7</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-11-01 19:39:48 -0700</bug_when>
    <thetext>Hi Kent-san, Ryosuke, thank you for reviewing this!

&gt; The readability of the test result is not good.  Every test looks to check the same thing, layoutTestController.hasSpellingMarker(1, 2).
&gt; 
&gt; How about testSpellCheckingEnabled() returns the boolean result of hasSpellingMarker(), and call shouldBe() at the top level like shouldBeFalse(&apos;testSpellCheckingEnabled(undefined, false))?

Sounds better. Passing markup itself looks bette too as Ryosuke mentioned.
I rewrote to such.

&gt; 
&gt; &gt; WebCore/editing/Editor.cpp:2130
&gt; &gt; +    return isSpellCheckingEnabledFor(m_frame-&gt;selection()-&gt;start().node());
&gt; 
&gt; Why m_frame-&gt;selection()-&gt;start().node() instead of document()-&gt;focusedNode() ?

This is the point of this fix.
For &lt;input&gt; or &lt;text&gt; focusNode() is OK.
For contentEditable nodes, the focus is on editable root, instead of where the caret is.
And such node could have @spellcheck attribute.

I think it is OK to call it isSpellCheckingEnabledInFocusedNode() because
the caret node is a child  of actual focused node and it&apos;s a detail of WebCore.
So WebKit layer, who is calling this API, doesn&apos;t need to know that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303177</commentid>
    <comment_count>8</comment_count>
      <attachid>72619</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-11-01 19:52:54 -0700</bug_when>
    <thetext>Comment on attachment 72619
Patch

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

&gt; LayoutTests/editing/spelling/script-tests/spelling-attribute-at-child.js:10
&gt; +    var parent = document.getElementById(&quot;parent&quot;);

parent is never used.

&gt; LayoutTests/editing/spelling/script-tests/spelling-attribute-at-child.js:30
&gt; +shouldBeFalse(&quot;testSpellChecking(\&quot;&lt;div id=&apos;parent&apos; contentEditable&gt;Foo &lt;span spellcheck=&apos;false&apos; id=&apos;child&apos;&gt;[]&lt;/span&gt; Baz&lt;/div&gt;\&quot;)&quot;);
&gt; +shouldBeTrue(&quot;testSpellChecking(\&quot;&lt;div id=&apos;parent&apos; contentEditable&gt;Foo &lt;span id=&apos;child&apos;&gt;[]&lt;/span&gt; Baz&lt;/div&gt;\&quot;)&quot;);
&gt; +shouldBeTrue(&quot;testSpellChecking(\&quot;&lt;div id=&apos;parent&apos; contentEditable&gt;Foo &lt;span spellcheck=&apos;true&apos; id=&apos;child&apos;&gt;[]&lt;/span&gt; Baz&lt;/div&gt;\&quot;)&quot;);
&gt; +shouldBeFalse(&quot;testSpellChecking(\&quot;&lt;div id=&apos;parent&apos; spellcheck=&apos;false&apos; contentEditable&gt;Foo &lt;span spellcheck=&apos;false&apos; id=&apos;child&apos;&gt;[]&lt;/span&gt; Baz&lt;/div&gt;\&quot;)&quot;);
&gt; +shouldBeFalse(&quot;testSpellChecking(\&quot;&lt;div id=&apos;parent&apos; spellcheck=&apos;false&apos; contentEditable&gt;Foo &lt;span id=&apos;child&apos;&gt;[]&lt;/span&gt; Baz&lt;/div&gt;\&quot;)&quot;);
&gt; +shouldBeTrue(&quot;testSpellChecking(\&quot;&lt;div id=&apos;parent&apos; spellcheck=&apos;false&apos; contentEditable&gt;Foo &lt;span spellcheck=&apos;true&apos; id=&apos;child&apos;&gt;[]&lt;/span&gt; Baz&lt;/div&gt;\&quot;)&quot;);
&gt; +shouldBeFalse(&quot;testSpellChecking(\&quot;&lt;div id=&apos;parent&apos; spellcheck=&apos;true&apos; contentEditable&gt;Foo &lt;span spellcheck=&apos;false&apos; id=&apos;child&apos;&gt;[]&lt;/span&gt; Baz&lt;/div&gt;\&quot;)&quot;);
&gt; +shouldBeTrue(&quot;testSpellChecking(\&quot;&lt;div id=&apos;parent&apos; spellcheck=&apos;true&apos; contentEditable&gt;Foo &lt;span id=&apos;child&apos;&gt;[]&lt;/span&gt; Baz&lt;/div&gt;\&quot;)&quot;);
&gt; +shouldBeTrue(&quot;testSpellChecking(\&quot;&lt;div id=&apos;parent&apos; spellcheck=&apos;true&apos; contentEditable&gt;Foo &lt;span spellcheck=&apos;true&apos; id=&apos;child&apos;&gt;[]&lt;/span&gt; Baz&lt;/div&gt;\&quot;)&quot;);

You don&apos;t need parent here. You don&apos;t even need id=&apos;child&apos; if you do what I said in the earlier comment but I used to put id=&quot;test&quot; all the time so I guess it&apos;s up to you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303189</commentid>
    <comment_count>9</comment_count>
      <attachid>72623</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-11-01 20:29:11 -0700</bug_when>
    <thetext>Created attachment 72623
removed &apos;parent&apos; from test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303208</commentid>
    <comment_count>10</comment_count>
      <attachid>72623</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-11-01 21:51:15 -0700</bug_when>
    <thetext>Comment on attachment 72623
removed &apos;parent&apos; from test

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

&gt; LayoutTests/editing/spelling/script-tests/spelling-attribute-at-child.js:11
&gt; +    var child = document.getElementById(&quot;child&quot;);
&gt; +    var text = child.firstChild;

Sorry, I keep adding comments but you can rewrite this just in one line: var text = document.getElementById(&apos;child&apos;).firstChild.

&gt; LayoutTests/editing/spelling/script-tests/spelling-attribute-at-child.js:12
&gt; +    sel.setBaseAndExtent(text, 1, text, 1);

You can do window.getSelection().setPosition(text, 1) here as well. Then you can get rid of &quot;sel&quot; variable.

&gt; LayoutTests/editing/spelling/spelling-attribute-at-child-expected.txt:6
&gt; +PASS testSpellChecking(&quot;&lt;div contentEditable&gt;Foo &lt;span spellcheck=&apos;false&apos; id=&apos;child&apos;&gt;[]&lt;/span&gt; Baz&lt;/div&gt;&quot;) is false

Maybe rename testSpellChecking to childHasSpellingMarker so that the test reads as: PASS childHasSpellingMarker(~~) is true/false</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303210</commentid>
    <comment_count>11</comment_count>
      <attachid>72629</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-11-01 22:15:08 -0700</bug_when>
    <thetext>Created attachment 72629
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303212</commentid>
    <comment_count>12</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-11-01 22:17:18 -0700</bug_when>
    <thetext>&gt; &gt; LayoutTests/editing/spelling/script-tests/spelling-attribute-at-child.js:11
&gt; &gt; +    var child = document.getElementById(&quot;child&quot;);
&gt; &gt; +    var text = child.firstChild;
&gt; 
&gt; Sorry, I keep adding comments but you can rewrite this just in one line: var text = document.getElementById(&apos;child&apos;).firstChild.
Done.

&gt; 
&gt; &gt; LayoutTests/editing/spelling/script-tests/spelling-attribute-at-child.js:12
&gt; &gt; +    sel.setBaseAndExtent(text, 1, text, 1);
&gt; 
&gt; You can do window.getSelection().setPosition(text, 1) here as well. Then you can get rid of &quot;sel&quot; variable.
&gt; 
Done.

&gt; &gt; LayoutTests/editing/spelling/spelling-attribute-at-child-expected.txt:6
&gt; &gt; +PASS testSpellChecking(&quot;&lt;div contentEditable&gt;Foo &lt;span spellcheck=&apos;false&apos; id=&apos;child&apos;&gt;[]&lt;/span&gt; Baz&lt;/div&gt;&quot;) is false
&gt; 
&gt; Maybe rename testSpellChecking to childHasSpellingMarker so that the test reads as: PASS childHasSpellingMarker(~~) is true/false
Done.

Wow, the code goes further concise than original version.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303215</commentid>
    <comment_count>13</comment_count>
      <attachid>72629</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-11-01 22:19:29 -0700</bug_when>
    <thetext>Comment on attachment 72629
Patch

ok</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303222</commentid>
    <comment_count>14</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-11-01 22:31:02 -0700</bug_when>
    <thetext>Committed r71101: &lt;http://trac.webkit.org/changeset/71101&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>72013</attachid>
            <date>2010-10-27 05:00:37 -0700</date>
            <delta_ts>2010-10-27 05:00:37 -0700</delta_ts>
            <desc>repro </desc>
            <filename>spellcheck-child.html</filename>
            <type>text/html</type>
            <size>801</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">PGh0bWw+CjxoZWFkPgogIDx0aWx0ZT5TcGVsbGNoZWNrIG9uIHRoZSBjb250ZW50RWRpdGFibGUg
Y2hpbGRyZW48L3RpdGxlPgo8L2hlYWQ+Cjxib2R5PgogIDxoMj5QYXJlbnQgaGFzIHNwZWxsY2hl
Y2s9ImZhbHNlIjwvaDI+CiAgPGRpdiBjb250ZW50RWRpdGFibGU9InRydWUiIHNwZWxsY2hlY2s9
ImZhbHNlIj4KICAgIDxkaXY+SGVyZSBpcyBzcGVsbGNoZWNrPXRydWU6ICAgIFs8c3BhbiBzcGVs
bGNoZWNrPSJ0cnVlIiA+SGVsbG88L3NwYW4+XTwvZGl2PgogICAgPGRpdj5IZXJlIGlzIHNwZWxs
Y2hlY2s9ZmFsc2U6ICAgWzxzcGFuIHNwZWxsY2hlY2s9ImZhbHNlIj5IZWxsbzwvc3Bhbj5dPC9k
aXY+CiAgICA8ZGl2PkhlcmUgaXMgbm8gc3BlbGxjaGVjayBhdHRyOiBbPHNwYW4gICAgICAgICAg
ICAgICAgICAgPkhlbGxvPC9zcGFuPl08L2Rpdj4KICA8L2Rpdj4KICA8aDI+UGFyZW50IGhhcyBz
cGVsbGNoZWNrPSJ0cnVlIjwvaDI+CiAgPGRpdiBjb250ZW50RWRpdGFibGU9InRydWUiIHNwZWxs
Y2hlY2s9InRydWUiPgogICAgPGRpdj5IZXJlIGlzIHNwZWxsY2hlY2s9dHJ1ZTogICAgWzxzcGFu
IHNwZWxsY2hlY2s9InRydWUiID5IZWxsbzwvc3Bhbj5dPC9kaXY+CiAgICA8ZGl2PkhlcmUgaXMg
c3BlbGxjaGVjaz1mYWxzZTogICBbPHNwYW4gc3BlbGxjaGVjaz0iZmFsc2UiPkhlbGxvPC9zcGFu
Pl08L2Rpdj4KICAgIDxkaXY+SGVyZSBpcyBubyBzcGVsbGNoZWNrIGF0dHI6IFs8c3BhbiAgICAg
ICAgICAgICAgICAgICA+SGVsbG88L3NwYW4+XTwvZGl2PgogIDwvZGl2Pgo8L2JvZHk+CjwvaHRt
bD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72494</attachid>
            <date>2010-11-01 04:26:52 -0700</date>
            <delta_ts>2010-11-01 19:20:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-48418-20101101202650.patch</filename>
            <type>text/plain</type>
            <size>11838</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3YmVjMzBlODIxNjRkYTNmNjczNWRhNDgzODVmM2M2NjFiNGZmZWM3Li45NDJiOWFk
OTdmOWU4YmJiOGJlMjYxNWZhMmM5Y2UxOWRjODRmNjc0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTAtMTEtMDEgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQHNwZWxsY2hlY2sgYXR0
cmlidXRlIGF0IHRoZSBjaGlsZCBvZiBjb250ZW50RWRpdGFibGUgbm9kZSBpcyBpZ25vcmVkLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDg0MTgKKwor
ICAgICAgICAqIGVkaXRpbmcvc3BlbGxpbmcvc2NyaXB0LXRlc3RzL3NwZWxsaW5nLWF0dHJpYnV0
ZS1hdC1jaGlsZC5qczogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy9zcGVsbGlu
Zy1hdHRyaWJ1dGUtYXQtY2hpbGQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0
aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWF0dHJpYnV0ZS1hdC1jaGlsZC5odG1sOiBBZGRlZC4KKwog
MjAxMC0xMS0wMSAgUm9sYW5kIFN0ZWluZXIgIDxyb2xhbmRzdGVpbmVyQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBVbnJldmlld2VkOiBhZGQgZmFpbGluZyBTVkcgdGVzdHMgdG8gQ2hyb21pdW0g
dGVzdF9leHBlY3RhdGlvbnMudHh0LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9z
cGVsbGluZy9zY3JpcHQtdGVzdHMvc3BlbGxpbmctYXR0cmlidXRlLWF0LWNoaWxkLmpzIGIvTGF5
b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zY3JpcHQtdGVzdHMvc3BlbGxpbmctYXR0cmlidXRl
LWF0LWNoaWxkLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhjZjZhZGFmNTQ2NmFjMzc0Y2U2ODliNmE2NGE0ODEx
MDllYWU2MDEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5n
L3NjcmlwdC10ZXN0cy9zcGVsbGluZy1hdHRyaWJ1dGUtYXQtY2hpbGQuanMKQEAgLTAsMCArMSwz
NyBAQAorZGVzY3JpcHRpb24oJ1Rlc3RzIGlmIHRoZSBzcGVsbGNoZWNrZXIgYmVoYXZpb3IgY2hh
bmdlIGFmdGVyIHRoZSBzcGVsbGNoZWNrIGF0dHJpYnV0ZSBjaGFuZ2VkIGJ5IHRoZSBzY3JpcHQu
Jyk7CisKK3ZhciByb290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Citkb2N1bWVu
dC5ib2R5LmFwcGVuZENoaWxkKHJvb3QpOwordmFyIHNlbCA9IGRvY3VtZW50LmdldFNlbGVjdGlv
bigpOworCitmdW5jdGlvbiB0ZXN0U3BlbGxDaGVja2luZ0VuYWJsZWQocGFyZW50VmFsdWUsIGNo
aWxkVmFsdWUsIGV4cGVjdGVkRW5hYmxlZCkKK3sKKyAgICByb290LmlubmVySFRNTCA9ICI8ZGl2
IGlkPSdwYXJlbnQnIGNvbnRlbnRFZGl0YWJsZT5Gb28gPHNwYW4gaWQ9J2NoaWxkJz5bXTwvc3Bh
bj4gQmF6PC9kaXY+IjsKKyAgICB2YXIgcGFyZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InBhcmVudCIpOworICAgIGlmICh1bmRlZmluZWQgIT0gcGFyZW50VmFsdWUpCisgICAgICAgIHBh
cmVudC5zcGVsbGNoZWNrID0gcGFyZW50VmFsdWU7CisgICAgdmFyIGNoaWxkID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImNoaWxkIik7CisgICAgaWYgKHVuZGVmaW5lZCAhPSBjaGlsZFZhbHVl
KQorICAgICAgICBjaGlsZC5zcGVsbGNoZWNrID0gY2hpbGRWYWx1ZTsKKworICAgIHZhciB0ZXh0
ID0gY2hpbGQuZmlyc3RDaGlsZDsKKyAgICBzZWwuc2V0QmFzZUFuZEV4dGVudCh0ZXh0LCAxLCB0
ZXh0LCAxKTsKKyAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiSW5zZXJ0VGV4dCIsIGZhbHNlLCAn
eicpOworICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJJbnNlcnRUZXh0IiwgZmFsc2UsICd6Jyk7
CisgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkluc2VydFRleHQiLCBmYWxzZSwgJyAnKTsKKyAg
ICBzaG91bGRCZSgibGF5b3V0VGVzdENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJrZXIoMSwgMiki
LCBleHBlY3RlZEVuYWJsZWQgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKKworICAgIHJvb3QuaW5uZXJI
VE1MID0gIiI7Cit9CisKK3Rlc3RTcGVsbENoZWNraW5nRW5hYmxlZCh1bmRlZmluZWQsIGZhbHNl
LCBmYWxzZSk7Cit0ZXN0U3BlbGxDaGVja2luZ0VuYWJsZWQodW5kZWZpbmVkLCB1bmRlZmluZWQs
IHRydWUpOwordGVzdFNwZWxsQ2hlY2tpbmdFbmFibGVkKHVuZGVmaW5lZCwgdHJ1ZSwgdHJ1ZSk7
Cit0ZXN0U3BlbGxDaGVja2luZ0VuYWJsZWQoZmFsc2UsIGZhbHNlLCBmYWxzZSk7Cit0ZXN0U3Bl
bGxDaGVja2luZ0VuYWJsZWQoZmFsc2UsIHVuZGVmaW5lZCwgZmFsc2UpOwordGVzdFNwZWxsQ2hl
Y2tpbmdFbmFibGVkKGZhbHNlLCB0cnVlLCB0cnVlKTsKK3Rlc3RTcGVsbENoZWNraW5nRW5hYmxl
ZCh0cnVlLCBmYWxzZSwgZmFsc2UpOwordGVzdFNwZWxsQ2hlY2tpbmdFbmFibGVkKHRydWUsIHVu
ZGVmaW5lZCwgdHJ1ZSk7Cit0ZXN0U3BlbGxDaGVja2luZ0VuYWJsZWQodHJ1ZSwgdHJ1ZSwgdHJ1
ZSk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1hdHRyaWJ1dGUtYXQtY2hpbGQtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1hdHRyaWJ1dGUt
YXQtY2hpbGQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAyNzc3ODVkYjRjODMwN2MwNDUwZGE3
NTQ0ZjgwZWIxOWU0OWRiMzIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5n
L3NwZWxsaW5nL3NwZWxsaW5nLWF0dHJpYnV0ZS1hdC1jaGlsZC1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwxOCBAQAorVGVzdHMgaWYgdGhlIHNwZWxsY2hlY2tlciBiZWhhdmlvciBjaGFuZ2UgYWZ0
ZXIgdGhlIHNwZWxsY2hlY2sgYXR0cmlidXRlIGNoYW5nZWQgYnkgdGhlIHNjcmlwdC4KKworT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIuaGFz
U3BlbGxpbmdNYXJrZXIoMSwgMikgaXMgZmFsc2UKK1BBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIu
aGFzU3BlbGxpbmdNYXJrZXIoMSwgMikgaXMgdHJ1ZQorUEFTUyBsYXlvdXRUZXN0Q29udHJvbGxl
ci5oYXNTcGVsbGluZ01hcmtlcigxLCAyKSBpcyB0cnVlCitQQVNTIGxheW91dFRlc3RDb250cm9s
bGVyLmhhc1NwZWxsaW5nTWFya2VyKDEsIDIpIGlzIGZhbHNlCitQQVNTIGxheW91dFRlc3RDb250
cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyKDEsIDIpIGlzIGZhbHNlCitQQVNTIGxheW91dFRlc3RD
b250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyKDEsIDIpIGlzIHRydWUKK1BBU1MgbGF5b3V0VGVz
dENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJrZXIoMSwgMikgaXMgZmFsc2UKK1BBU1MgbGF5b3V0
VGVzdENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJrZXIoMSwgMikgaXMgdHJ1ZQorUEFTUyBsYXlv
dXRUZXN0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcigxLCAyKSBpcyB0cnVlCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1hdHRyaWJ1dGUtYXQtY2hpbGQu
aHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctYXR0cmlidXRlLWF0
LWNoaWxkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzg5NTdhOTE1MTNiN2NlNGQzODVkMGFhYTk3ZDNhYmNm
MjRmNTVlMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcv
c3BlbGxpbmctYXR0cmlidXRlLWF0LWNoaWxkLmh0bWwKQEAgLTAsMCArMSwxNCBAQAorPCFET0NU
WVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1z
ZWxlY3Rpb24tc2hhcmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRl
c2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJz
Y3JpcHQtdGVzdHMvc3BlbGxpbmctYXR0cmlidXRlLWF0LWNoaWxkLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3MDE2ZWQ5ZDZjZWJjZWNlNjI4MjcxNmU5ZGQzMzFlYjNh
NjUxYjljLi40M2FmYTU2YzEzNDJiZWEwNDkxNGJkMjg1OWIzOTk3YjE0YzMwZTZlIDEwMDY0NAot
LS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDMwIEBACisyMDEwLTExLTAxICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEBzcGVsbGNo
ZWNrIGF0dHJpYnV0ZSBhdCB0aGUgY2hpbGQgb2YgY29udGVudEVkaXRhYmxlIG5vZGUgaXMgaWdu
b3JlZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4
NDE4CisKKyAgICAgICAgQ2hhbmdlZCB0byBjaGVjayBzcGVsbGNoZWNrIGF2YWlsYWJpbGl0eSBh
Z2FpbnN0IGEgbm9kZSB1bmRlciB0aGUKKyAgICAgICAgc2VsZWN0aW9uIChjYXJldCkgaW5zdGVh
ZCBvZiB0aGUgZm9jdXMuIEZvciBzaGFkb3cgZWxlbWVudHMsIHRoZQorICAgICAgICBjaGVjayBu
b3cgcmVmZXJzIGl0cyBob3N0IG5vZGUuICBOb3RlIHRoYXQgdGhlIG9yaWdpbmFsIGNvZGUgZGlk
bid0CisgICAgICAgIGNhcmUgc2hhZG93cyBiZWNhdXNlIGZvY3VzIGlzIG5ldmVyIHNldCBvbiB0
aGVtLgorICAgICAgICAKKyAgICAgICAgVGVzdDogZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1h
dHRyaWJ1dGUtYXQtY2hpbGQuaHRtbAorCisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAg
ICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Om1hcmtN
aXNzcGVsbGluZ3NPckJhZEdyYW1tYXIpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjppc1Nw
ZWxsQ2hlY2tpbmdFbmFibGVkRm9yKTogCisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmlzU3Bl
bGxDaGVja2luZ0VuYWJsZWRJbkZvY3VzZWROb2RlKTogTm93IGp1c3QgY2FsbGluZyBpc1NwZWxs
Q2hlY2tpbmdFbmFibGVkRm9yKCkKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bWFya0FsbE1p
c3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyk6CisgICAgICAgICogZWRpdGluZy9FZGl0
b3IuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Db250ZXh0TWVudS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDb250ZXh0TWVudTo6cG9wdWxhdGUpOgorICAgICAgICAqIHJlbmRlcmluZy9UZXh0Q29u
dHJvbElubmVyRWxlbWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENvbnRyb2xJbm5l
ckVsZW1lbnQ6OmlzU3BlbGxDaGVja2luZ0VuYWJsZWQpOiBBZGRlZC4KKyAgICAgICAgKiByZW5k
ZXJpbmcvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmg6CisKIDIwMTAtMTAtMzEgIFBhdmVsIEZl
bGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgVGlt
b3RoeSBIYXRjaGVyLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIvV2ViQ29y
ZS9kb20vRWxlbWVudC5oCmluZGV4IDY3ODg3Y2NhZTI5ZTAzZWIzNWM2MGVjNmM3YzZhZTVjY2U5
ZGNmYTcuLjFhODU2NTAyZWMxYWU5NDc2ZGYxOWUzNzk5YjA2OGM5OWVhZWVkNGIgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAg
LTMyNiw3ICszMjYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB3ZWJraXRSZXF1ZXN0RnVsbFNjcmVl
bih1bnNpZ25lZCBzaG9ydCBmbGFncyk7CiAjZW5kaWYKIAotICAgIGJvb2wgaXNTcGVsbENoZWNr
aW5nRW5hYmxlZCgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBpc1NwZWxsQ2hlY2tpbmdFbmFi
bGVkKCkgY29uc3Q7CiAKIHByb3RlY3RlZDoKICAgICBFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCwgQ29uc3RydWN0aW9uVHlwZSB0eXBlKQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9XZWJDb3JlL2VkaXRpbmcv
RWRpdG9yLmNwcAppbmRleCA4YTRlZjU5OTQ4ZWE3NGNlODE3ODYxMmYwZjljMDYyOWEzODRhNTNk
Li4yMmNiN2IxOGRlYzdhMGE0MjQ3YWE5NDhmNzViMjkzODczYjllOWY4IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNw
cApAQCAtMjA5NSw3ICsyMDk1LDcgQEAgdm9pZCBFZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NPckJh
ZEdyYW1tYXIoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uLCBib28KICAgICBpZiAo
IWVkaXRhYmxlTm9kZSB8fCAhZWRpdGFibGVOb2RlLT5pc0NvbnRlbnRFZGl0YWJsZSgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBpZiAoIWlzU3BlbGxDaGVja2luZ0VuYWJsZWRJbkZvY3VzZWRO
b2RlKCkpCisgICAgaWYgKCFpc1NwZWxsQ2hlY2tpbmdFbmFibGVkRm9yKGVkaXRhYmxlTm9kZSkp
CiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIEdldCB0aGUgc3BlbGwgY2hlY2tlciBpZiBpdCBp
cyBhdmFpbGFibGUKQEAgLTIxMTUsMTEgKzIxMTUsOCBAQCB2b2lkIEVkaXRvcjo6bWFya01pc3Nw
ZWxsaW5nc09yQmFkR3JhbW1hcihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24sIGJv
bwogICAgIH0gICAgCiB9CiAKLWJvb2wgRWRpdG9yOjppc1NwZWxsQ2hlY2tpbmdFbmFibGVkSW5G
b2N1c2VkTm9kZSgpIGNvbnN0Citib29sIEVkaXRvcjo6aXNTcGVsbENoZWNraW5nRW5hYmxlZEZv
cihOb2RlKiBub2RlKSBjb25zdAogewotICAgIC8vIEFzY2VuZCB0aGUgRE9NIHRyZWUgdG8gZmlu
ZCBhICJzcGVsbGNoZWNrIiBhdHRyaWJ1dGUuCi0gICAgLy8gV2hlbiB3ZSBmaW5kIGEgInNwZWxs
Y2hlY2siIGF0dHJpYnV0ZSwgcmV0cmlldmUgaXRzIHZhbHVlIGFuZCByZXR1cm4gZmFsc2UgaWYg
aXRzIHZhbHVlIGlzICJmYWxzZSIuCi0gICAgY29uc3QgTm9kZSogbm9kZSA9IGZyYW1lKCktPmRv
Y3VtZW50KCktPmZvY3VzZWROb2RlKCk7CiAgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgY29uc3QgRWxlbWVudCogZm9jdXNlZEVsZW1lbnQgPSBub2RlLT5pc0VsZW1l
bnROb2RlKCkgPyB0b0VsZW1lbnQobm9kZSkgOiBub2RlLT5wYXJlbnRFbGVtZW50KCk7CkBAIC0y
MTI4LDYgKzIxMjUsMTEgQEAgYm9vbCBFZGl0b3I6OmlzU3BlbGxDaGVja2luZ0VuYWJsZWRJbkZv
Y3VzZWROb2RlKCkgY29uc3QKICAgICByZXR1cm4gZm9jdXNlZEVsZW1lbnQtPmlzU3BlbGxDaGVj
a2luZ0VuYWJsZWQoKTsKIH0KIAorYm9vbCBFZGl0b3I6OmlzU3BlbGxDaGVja2luZ0VuYWJsZWRJ
bkZvY3VzZWROb2RlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gaXNTcGVsbENoZWNraW5nRW5hYmxl
ZEZvcihtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+c3RhcnQoKS5ub2RlKCkpOworfQorCiB2b2lkIEVk
aXRvcjo6bWFya01pc3NwZWxsaW5ncyhjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24s
IFJlZlB0cjxSYW5nZT4mIGZpcnN0TWlzc3BlbGxpbmdSYW5nZSkKIHsKICAgICBtYXJrTWlzc3Bl
bGxpbmdzT3JCYWRHcmFtbWFyKHNlbGVjdGlvbiwgdHJ1ZSwgZmlyc3RNaXNzcGVsbGluZ1Jhbmdl
KTsKQEAgLTIxNzAsNyArMjE3Miw3IEBAIHZvaWQgRWRpdG9yOjptYXJrQWxsTWlzc3BlbGxpbmdz
QW5kQmFkR3JhbW1hckluUmFuZ2VzKFRleHRDaGVja2luZ09wdGlvbnMgdGV4dENoCiAgICAgaWYg
KCFlZGl0YWJsZU5vZGUgfHwgIWVkaXRhYmxlTm9kZS0+aXNDb250ZW50RWRpdGFibGUoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFpc1NwZWxsQ2hlY2tpbmdFbmFibGVkSW5Gb2N1c2Vk
Tm9kZSgpKQorICAgIGlmICghaXNTcGVsbENoZWNraW5nRW5hYmxlZEZvcihlZGl0YWJsZU5vZGUp
KQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBFeHBhbmQgdGhlIHJhbmdlIHRvIGVuY29tcGFz
cyBlbnRpcmUgcGFyYWdyYXBocywgc2luY2UgdGV4dCBjaGVja2luZyBuZWVkcyB0aGF0IG11Y2gg
Y29udGV4dC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaCBiL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuaAppbmRleCAxMTBlM2Y5YThmMTgzMjUxN2IyZGQ5YTI3NDdiYTU0NmYw
ZmEwYWRmLi44YmYxZWE1OWY1OWI2NDEyMjUwZmUzZmFiNTkzOWZhOTEyNDI5MTRmIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKKysrIGIvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ci5oCkBAIC0yMTksNiArMjE5LDcgQEAgcHVibGljOgogICAgIFZlY3RvcjxTdHJpbmc+IGd1ZXNz
ZXNGb3JVbmdyYW1tYXRpY2FsU2VsZWN0aW9uKCk7CiAgICAgVmVjdG9yPFN0cmluZz4gZ3Vlc3Nl
c0Zvck1pc3NwZWxsZWRPclVuZ3JhbW1hdGljYWxTZWxlY3Rpb24oYm9vbCYgbWlzc3BlbGxlZCwg
Ym9vbCYgdW5ncmFtbWF0aWNhbCk7CiAgICAgYm9vbCBpc1NwZWxsQ2hlY2tpbmdFbmFibGVkSW5G
b2N1c2VkTm9kZSgpIGNvbnN0OworICAgIGJvb2wgaXNTcGVsbENoZWNraW5nRW5hYmxlZEZvcihO
b2RlKikgY29uc3Q7CiAgICAgdm9pZCBtYXJrTWlzc3BlbGxpbmdzQWZ0ZXJUeXBpbmdUb1Bvc2l0
aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpOwogICAgIHZvaWQgbWFya01pc3NwZWxsaW5ncyhj
b25zdCBWaXNpYmxlU2VsZWN0aW9uJiwgUmVmUHRyPFJhbmdlPiYgZmlyc3RNaXNzcGVsbGluZ1Jh
bmdlKTsKICAgICB2b2lkIG1hcmtCYWRHcmFtbWFyKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKTsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnUuY3BwIGIvV2ViQ29yZS9w
bGF0Zm9ybS9Db250ZXh0TWVudS5jcHAKaW5kZXggZWNkZjIzMDQ4ODY4NzZmMGY1ZWU0ZmQ3NWU4
OWI0ZTc5MTc2ZWRlNi4uOTNjZGZkZjlhYzg3NTg0NmEwNWM2ZmE4ZWFkZTJhYzk3NjFjNGFjNyAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZXh0TWVudS5jcHAKKysrIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9Db250ZXh0TWVudS5jcHAKQEAgLTQyOSw3ICs0MjksNyBAQCB2b2lkIENvbnRl
eHRNZW51Ojpwb3B1bGF0ZSgpCiAgICAgfSBlbHNlIHsgLy8gTWFrZSBhbiBlZGl0aW5nIGNvbnRl
eHQgbWVudQogICAgICAgICBTZWxlY3Rpb25Db250cm9sbGVyKiBzZWxlY3Rpb24gPSBmcmFtZS0+
c2VsZWN0aW9uKCk7CiAgICAgICAgIGJvb2wgaW5QYXNzd29yZEZpZWxkID0gc2VsZWN0aW9uLT5p
c0luUGFzc3dvcmRGaWVsZCgpOwotICAgICAgICBib29sIHNwZWxsQ2hlY2tpbmdFbmFibGVkID0g
ZnJhbWUtPmVkaXRvcigpLT5pc1NwZWxsQ2hlY2tpbmdFbmFibGVkSW5Gb2N1c2VkTm9kZSgpOwor
ICAgICAgICBib29sIHNwZWxsQ2hlY2tpbmdFbmFibGVkID0gZnJhbWUtPmVkaXRvcigpLT5pc1Nw
ZWxsQ2hlY2tpbmdFbmFibGVkRm9yKG5vZGUpOwogICAgICAgICAKICAgICAgICAgaWYgKCFpblBh
c3N3b3JkRmllbGQgJiYgc3BlbGxDaGVja2luZ0VuYWJsZWQpIHsKICAgICAgICAgICAgIC8vIENv
bnNpZGVyIGFkZGluZyBzcGVsbGluZy1yZWxhdGVkIG9yIGdyYW1tYXItcmVsYXRlZCBjb250ZXh0
IG1lbnUgaXRlbXMgKG5ldmVyIGJvdGgsIHNpbmNlIGEgc2luZ2xlIHNlbGVjdGVkIHJhbmdlCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3Bw
IGIvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAppbmRleCBm
OTY0MWY0Y2Y2OGJhYzYxMDNmM2JjYTFkYTE4NGEwZTQzYTU3YmRkLi5kOWExYTczMjQxYTMxOGEw
NWQ3NjdjOGY5MmIzNTNiMTExNWEzNWE3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9U
ZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRD
b250cm9sSW5uZXJFbGVtZW50cy5jcHAKQEAgLTEyNCw2ICsxMjQsMTEgQEAgdm9pZCBUZXh0Q29u
dHJvbElubmVyRWxlbWVudDo6YXR0YWNoSW5uZXJFbGVtZW50KE5vZGUqIHBhcmVudCwgUGFzc1Jl
ZlB0cjxSZW5kZXIKICAgICAgICAgcGFyZW50LT5yZW5kZXJlcigpLT5hZGRDaGlsZChyZW5kZXJl
cik7CiB9CiAKK2Jvb2wgVGV4dENvbnRyb2xJbm5lckVsZW1lbnQ6OmlzU3BlbGxDaGVja2luZ0Vu
YWJsZWQoKSBjb25zdAoreworICAgIHJldHVybiBtX3NoYWRvd1BhcmVudCAmJiBtX3NoYWRvd1Bh
cmVudC0+aXNTcGVsbENoZWNraW5nRW5hYmxlZCgpOworfQorCiAvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCiAKIGlubGluZSBUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ6OlRleHRD
b250cm9sSW5uZXJUZXh0RWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQsIEhUTUxFbGVtZW50KiBz
aGFkb3dQYXJlbnQpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Q29udHJvbElu
bmVyRWxlbWVudHMuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50
cy5oCmluZGV4IDQ2YzFjOGU0YWQyMDg4ODJkZmZjNzYyYzRhZWQzNDJiZWQ1NTZmNjQuLjYxYzlk
YmFjY2NlYWFmNWVjNzk0NzNkNDg1MDE1NDk1MTc5ZTdmYTMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cmVuZGVyaW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oCisrKyBiL1dlYkNvcmUvcmVuZGVy
aW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oCkBAIC00OSw2ICs0OSw3IEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCBib29sIGlzTW91c2VGb2N1c2FibGUoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfSAKICAgICB2aXJ0dWFsIGJvb2wgaXNTaGFkb3dOb2RlKCkgY29uc3QgeyByZXR1cm4gbV9z
aGFkb3dQYXJlbnQ7IH0KICAgICB2aXJ0dWFsIENvbnRhaW5lck5vZGUqIHNoYWRvd1BhcmVudE5v
ZGUoKSB7IHJldHVybiBtX3NoYWRvd1BhcmVudDsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1NwZWxs
Q2hlY2tpbmdFbmFibGVkKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRTaGFkb3dQYXJlbnROb2RlKEhU
TUxFbGVtZW50KiBzaGFkb3dQYXJlbnQpIHsgbV9zaGFkb3dQYXJlbnQgPSBzaGFkb3dQYXJlbnQ7
IH0KIAogICAgIEhUTUxFbGVtZW50KiBtX3NoYWRvd1BhcmVudDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72618</attachid>
            <date>2010-11-01 19:20:13 -0700</date>
            <delta_ts>2010-11-01 19:30:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-48418-20101102112010.patch</filename>
            <type>text/plain</type>
            <size>11725</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3YmVjMzBlODIxNjRkYTNmNjczNWRhNDgzODVmM2M2NjFiNGZmZWM3Li45NDJiOWFk
OTdmOWU4YmJiOGJlMjYxNWZhMmM5Y2UxOWRjODRmNjc0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTAtMTEtMDEgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQHNwZWxsY2hlY2sgYXR0
cmlidXRlIGF0IHRoZSBjaGlsZCBvZiBjb250ZW50RWRpdGFibGUgbm9kZSBpcyBpZ25vcmVkLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDg0MTgKKwor
ICAgICAgICAqIGVkaXRpbmcvc3BlbGxpbmcvc2NyaXB0LXRlc3RzL3NwZWxsaW5nLWF0dHJpYnV0
ZS1hdC1jaGlsZC5qczogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy9zcGVsbGlu
Zy1hdHRyaWJ1dGUtYXQtY2hpbGQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0
aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWF0dHJpYnV0ZS1hdC1jaGlsZC5odG1sOiBBZGRlZC4KKwog
MjAxMC0xMS0wMSAgUm9sYW5kIFN0ZWluZXIgIDxyb2xhbmRzdGVpbmVyQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBVbnJldmlld2VkOiBhZGQgZmFpbGluZyBTVkcgdGVzdHMgdG8gQ2hyb21pdW0g
dGVzdF9leHBlY3RhdGlvbnMudHh0LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9z
cGVsbGluZy9zY3JpcHQtdGVzdHMvc3BlbGxpbmctYXR0cmlidXRlLWF0LWNoaWxkLmpzIGIvTGF5
b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zY3JpcHQtdGVzdHMvc3BlbGxpbmctYXR0cmlidXRl
LWF0LWNoaWxkLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM1NmM0ZTIzYjU4YmNjZmQ4MGNkYjQwZmYwMDY1NmYy
ZTVjMjkwYWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5n
L3NjcmlwdC10ZXN0cy9zcGVsbGluZy1hdHRyaWJ1dGUtYXQtY2hpbGQuanMKQEAgLTAsMCArMSwz
NyBAQAorZGVzY3JpcHRpb24oJ1Rlc3RzIGlmIHRoZSBzcGVsbGNoZWNrZXIgYmVoYXZpb3IgY2hh
bmdlIGFmdGVyIHRoZSBzcGVsbGNoZWNrIGF0dHJpYnV0ZSBjaGFuZ2VkIGJ5IHRoZSBzY3JpcHQu
Jyk7CisKK3ZhciByb290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Citkb2N1bWVu
dC5ib2R5LmFwcGVuZENoaWxkKHJvb3QpOwordmFyIHNlbCA9IGRvY3VtZW50LmdldFNlbGVjdGlv
bigpOworCitmdW5jdGlvbiB0ZXN0U3BlbGxDaGVja2luZyhwYXJlbnRWYWx1ZSwgY2hpbGRWYWx1
ZSkKK3sKKyAgICByb290LmlubmVySFRNTCA9ICI8ZGl2IGlkPSdwYXJlbnQnIGNvbnRlbnRFZGl0
YWJsZT5Gb28gPHNwYW4gaWQ9J2NoaWxkJz5bXTwvc3Bhbj4gQmF6PC9kaXY+IjsKKyAgICB2YXIg
cGFyZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBhcmVudCIpOworICAgIGlmICh1bmRl
ZmluZWQgIT0gcGFyZW50VmFsdWUpCisgICAgICAgIHBhcmVudC5zcGVsbGNoZWNrID0gcGFyZW50
VmFsdWU7CisgICAgdmFyIGNoaWxkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNoaWxkIik7
CisgICAgaWYgKHVuZGVmaW5lZCAhPSBjaGlsZFZhbHVlKQorICAgICAgICBjaGlsZC5zcGVsbGNo
ZWNrID0gY2hpbGRWYWx1ZTsKKworICAgIHZhciB0ZXh0ID0gY2hpbGQuZmlyc3RDaGlsZDsKKyAg
ICBzZWwuc2V0QmFzZUFuZEV4dGVudCh0ZXh0LCAxLCB0ZXh0LCAxKTsKKyAgICBkb2N1bWVudC5l
eGVjQ29tbWFuZCgiSW5zZXJ0VGV4dCIsIGZhbHNlLCAneicpOworICAgIGRvY3VtZW50LmV4ZWND
b21tYW5kKCJJbnNlcnRUZXh0IiwgZmFsc2UsICd6Jyk7CisgICAgZG9jdW1lbnQuZXhlY0NvbW1h
bmQoIkluc2VydFRleHQiLCBmYWxzZSwgJyAnKTsKKyAgICB2YXIgbWFya2VkID0gbGF5b3V0VGVz
dENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJrZXIoMSwgMik7CisgICAgcm9vdC5pbm5lckhUTUwg
PSAiIjsKKyAgICByZXR1cm4gbWFya2VkOworfQorCitzaG91bGRCZUZhbHNlKCJ0ZXN0U3BlbGxD
aGVja2luZyh1bmRlZmluZWQsIGZhbHNlKSIpOworc2hvdWxkQmVUcnVlKCJ0ZXN0U3BlbGxDaGVj
a2luZyh1bmRlZmluZWQsIHVuZGVmaW5lZCkiKTsKK3Nob3VsZEJlVHJ1ZSgidGVzdFNwZWxsQ2hl
Y2tpbmcodW5kZWZpbmVkLCB0cnVlKSIpOworc2hvdWxkQmVGYWxzZSgidGVzdFNwZWxsQ2hlY2tp
bmcoZmFsc2UsIGZhbHNlKSIpOworc2hvdWxkQmVGYWxzZSgidGVzdFNwZWxsQ2hlY2tpbmcoZmFs
c2UsIHVuZGVmaW5lZCkiKTsKK3Nob3VsZEJlVHJ1ZSgidGVzdFNwZWxsQ2hlY2tpbmcoZmFsc2Us
IHRydWUpIik7CitzaG91bGRCZUZhbHNlKCJ0ZXN0U3BlbGxDaGVja2luZyh0cnVlLCBmYWxzZSki
KTsKK3Nob3VsZEJlVHJ1ZSgidGVzdFNwZWxsQ2hlY2tpbmcodHJ1ZSwgdW5kZWZpbmVkKSIpOwor
c2hvdWxkQmVUcnVlKCJ0ZXN0U3BlbGxDaGVja2luZyh0cnVlLCB0cnVlKSIpOworCit2YXIgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcv
c3BlbGxpbmcvc3BlbGxpbmctYXR0cmlidXRlLWF0LWNoaWxkLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctYXR0cmlidXRlLWF0LWNoaWxkLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4zMGM1MWI0MmE3NDUyMzk2NzZhYTQ0MTJjMTYxMjQ3ODk5ZjYw
NTMyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVs
bGluZy1hdHRyaWJ1dGUtYXQtY2hpbGQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTggQEAKK1Rl
c3RzIGlmIHRoZSBzcGVsbGNoZWNrZXIgYmVoYXZpb3IgY2hhbmdlIGFmdGVyIHRoZSBzcGVsbGNo
ZWNrIGF0dHJpYnV0ZSBjaGFuZ2VkIGJ5IHRoZSBzY3JpcHQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KKworCitQQVNTIHRlc3RTcGVsbENoZWNraW5nKHVuZGVmaW5lZCwgZmFsc2UpIGlz
IGZhbHNlCitQQVNTIHRlc3RTcGVsbENoZWNraW5nKHVuZGVmaW5lZCwgdW5kZWZpbmVkKSBpcyB0
cnVlCitQQVNTIHRlc3RTcGVsbENoZWNraW5nKHVuZGVmaW5lZCwgdHJ1ZSkgaXMgdHJ1ZQorUEFT
UyB0ZXN0U3BlbGxDaGVja2luZyhmYWxzZSwgZmFsc2UpIGlzIGZhbHNlCitQQVNTIHRlc3RTcGVs
bENoZWNraW5nKGZhbHNlLCB1bmRlZmluZWQpIGlzIGZhbHNlCitQQVNTIHRlc3RTcGVsbENoZWNr
aW5nKGZhbHNlLCB0cnVlKSBpcyB0cnVlCitQQVNTIHRlc3RTcGVsbENoZWNraW5nKHRydWUsIGZh
bHNlKSBpcyBmYWxzZQorUEFTUyB0ZXN0U3BlbGxDaGVja2luZyh0cnVlLCB1bmRlZmluZWQpIGlz
IHRydWUKK1BBU1MgdGVzdFNwZWxsQ2hlY2tpbmcodHJ1ZSwgdHJ1ZSkgaXMgdHJ1ZQorUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctYXR0cmlidXRlLWF0LWNoaWxk
Lmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWF0dHJpYnV0ZS1h
dC1jaGlsZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc4OTU3YTkxNTEzYjdjZTRkMzg1ZDBhYWE5N2QzYWJj
ZjI0ZjU1ZTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5n
L3NwZWxsaW5nLWF0dHJpYnV0ZS1hdC1jaGlsZC5odG1sCkBAIC0wLDAgKzEsMTQgQEAKKzwhRE9D
VFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3Qt
c2VsZWN0aW9uLXNoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJk
ZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0i
c2NyaXB0LXRlc3RzL3NwZWxsaW5nLWF0dHJpYnV0ZS1hdC1jaGlsZC5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzAxNmVkOWQ2Y2ViY2VjZTYyODI3MTZlOWRkMzMxZWIz
YTY1MWI5Yy4uNDNhZmE1NmMxMzQyYmVhMDQ5MTRiZDI4NTliMzk5N2IxNGMzMGU2ZSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwzMCBAQAorMjAxMC0xMS0wMSAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBAc3BlbGxj
aGVjayBhdHRyaWJ1dGUgYXQgdGhlIGNoaWxkIG9mIGNvbnRlbnRFZGl0YWJsZSBub2RlIGlzIGln
bm9yZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
ODQxOAorCisgICAgICAgIENoYW5nZWQgdG8gY2hlY2sgc3BlbGxjaGVjayBhdmFpbGFiaWxpdHkg
YWdhaW5zdCBhIG5vZGUgdW5kZXIgdGhlCisgICAgICAgIHNlbGVjdGlvbiAoY2FyZXQpIGluc3Rl
YWQgb2YgdGhlIGZvY3VzLiBGb3Igc2hhZG93IGVsZW1lbnRzLCB0aGUKKyAgICAgICAgY2hlY2sg
bm93IHJlZmVycyBpdHMgaG9zdCBub2RlLiAgTm90ZSB0aGF0IHRoZSBvcmlnaW5hbCBjb2RlIGRp
ZG4ndAorICAgICAgICBjYXJlIHNoYWRvd3MgYmVjYXVzZSBmb2N1cyBpcyBuZXZlciBzZXQgb24g
dGhlbS4KKyAgICAgICAgCisgICAgICAgIFRlc3Q6IGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmct
YXR0cmlidXRlLWF0LWNoaWxkLmh0bWwKKworICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAg
ICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjptYXJr
TWlzc3BlbGxpbmdzT3JCYWRHcmFtbWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6aXNT
cGVsbENoZWNraW5nRW5hYmxlZEZvcik6IAorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjppc1Nw
ZWxsQ2hlY2tpbmdFbmFibGVkSW5Gb2N1c2VkTm9kZSk6IE5vdyBqdXN0IGNhbGxpbmcgaXNTcGVs
bENoZWNraW5nRW5hYmxlZEZvcigpCisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Om1hcmtBbGxN
aXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMpOgorICAgICAgICAqIGVkaXRpbmcvRWRp
dG9yLmg6CisgICAgICAgICogcGxhdGZvcm0vQ29udGV4dE1lbnUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGV4dE1lbnU6OnBvcHVsYXRlKToKKyAgICAgICAgKiByZW5kZXJpbmcvVGV4dENv
bnRyb2xJbm5lckVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb250cm9sSW5u
ZXJFbGVtZW50Ojppc1NwZWxsQ2hlY2tpbmdFbmFibGVkKTogQWRkZWQuCisgICAgICAgICogcmVu
ZGVyaW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oOgorCiAyMDEwLTEwLTMxICBQYXZlbCBG
ZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFRp
bW90aHkgSGF0Y2hlci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1dlYkNv
cmUvZG9tL0VsZW1lbnQuaAppbmRleCA2Nzg4N2NjYWUyOWUwM2ViMzVjNjBlYzZjN2M2YWU1Y2Nl
OWRjZmE3Li4xYTg1NjUwMmVjMWFlOTQ3NmRmMTllMzc5OWIwNjhjOTllYWVlZDRiIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBA
IC0zMjYsNyArMzI2LDcgQEAgcHVibGljOgogICAgIHZvaWQgd2Via2l0UmVxdWVzdEZ1bGxTY3Jl
ZW4odW5zaWduZWQgc2hvcnQgZmxhZ3MpOwogI2VuZGlmCiAKLSAgICBib29sIGlzU3BlbGxDaGVj
a2luZ0VuYWJsZWQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNTcGVsbENoZWNraW5nRW5h
YmxlZCgpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6CiAgICAgRWxlbWVudChjb25zdCBRdWFsaWZpZWRO
YW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQsIENvbnN0cnVjdGlvblR5cGUgdHlwZSkK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvci5jcHAKaW5kZXggOGE0ZWY1OTk0OGVhNzRjZTgxNzg2MTJmMGY5YzA2MjlhMzg0YTUz
ZC4uMjJjYjdiMThkZWM3YTBhNDI0N2FhOTQ4Zjc1YjI5Mzg3M2I5ZTlmOCAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5j
cHAKQEAgLTIwOTUsNyArMjA5NSw3IEBAIHZvaWQgRWRpdG9yOjptYXJrTWlzc3BlbGxpbmdzT3JC
YWRHcmFtbWFyKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbiwgYm9vCiAgICAgaWYg
KCFlZGl0YWJsZU5vZGUgfHwgIWVkaXRhYmxlTm9kZS0+aXNDb250ZW50RWRpdGFibGUoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFpc1NwZWxsQ2hlY2tpbmdFbmFibGVkSW5Gb2N1c2Vk
Tm9kZSgpKQorICAgIGlmICghaXNTcGVsbENoZWNraW5nRW5hYmxlZEZvcihlZGl0YWJsZU5vZGUp
KQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBHZXQgdGhlIHNwZWxsIGNoZWNrZXIgaWYgaXQg
aXMgYXZhaWxhYmxlCkBAIC0yMTE1LDExICsyMTE1LDggQEAgdm9pZCBFZGl0b3I6Om1hcmtNaXNz
cGVsbGluZ3NPckJhZEdyYW1tYXIoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uLCBi
b28KICAgICB9ICAgIAogfQogCi1ib29sIEVkaXRvcjo6aXNTcGVsbENoZWNraW5nRW5hYmxlZElu
Rm9jdXNlZE5vZGUoKSBjb25zdAorYm9vbCBFZGl0b3I6OmlzU3BlbGxDaGVja2luZ0VuYWJsZWRG
b3IoTm9kZSogbm9kZSkgY29uc3QKIHsKLSAgICAvLyBBc2NlbmQgdGhlIERPTSB0cmVlIHRvIGZp
bmQgYSAic3BlbGxjaGVjayIgYXR0cmlidXRlLgotICAgIC8vIFdoZW4gd2UgZmluZCBhICJzcGVs
bGNoZWNrIiBhdHRyaWJ1dGUsIHJldHJpZXZlIGl0cyB2YWx1ZSBhbmQgcmV0dXJuIGZhbHNlIGlm
IGl0cyB2YWx1ZSBpcyAiZmFsc2UiLgotICAgIGNvbnN0IE5vZGUqIG5vZGUgPSBmcmFtZSgpLT5k
b2N1bWVudCgpLT5mb2N1c2VkTm9kZSgpOwogICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIGNvbnN0IEVsZW1lbnQqIGZvY3VzZWRFbGVtZW50ID0gbm9kZS0+aXNFbGVt
ZW50Tm9kZSgpID8gdG9FbGVtZW50KG5vZGUpIDogbm9kZS0+cGFyZW50RWxlbWVudCgpOwpAQCAt
MjEyOCw2ICsyMTI1LDExIEBAIGJvb2wgRWRpdG9yOjppc1NwZWxsQ2hlY2tpbmdFbmFibGVkSW5G
b2N1c2VkTm9kZSgpIGNvbnN0CiAgICAgcmV0dXJuIGZvY3VzZWRFbGVtZW50LT5pc1NwZWxsQ2hl
Y2tpbmdFbmFibGVkKCk7CiB9CiAKK2Jvb2wgRWRpdG9yOjppc1NwZWxsQ2hlY2tpbmdFbmFibGVk
SW5Gb2N1c2VkTm9kZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGlzU3BlbGxDaGVja2luZ0VuYWJs
ZWRGb3IobV9mcmFtZS0+c2VsZWN0aW9uKCktPnN0YXJ0KCkubm9kZSgpKTsKK30KKwogdm9pZCBF
ZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3MoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9u
LCBSZWZQdHI8UmFuZ2U+JiBmaXJzdE1pc3NwZWxsaW5nUmFuZ2UpCiB7CiAgICAgbWFya01pc3Nw
ZWxsaW5nc09yQmFkR3JhbW1hcihzZWxlY3Rpb24sIHRydWUsIGZpcnN0TWlzc3BlbGxpbmdSYW5n
ZSk7CkBAIC0yMTcwLDcgKzIxNzIsNyBAQCB2b2lkIEVkaXRvcjo6bWFya0FsbE1pc3NwZWxsaW5n
c0FuZEJhZEdyYW1tYXJJblJhbmdlcyhUZXh0Q2hlY2tpbmdPcHRpb25zIHRleHRDaAogICAgIGlm
ICghZWRpdGFibGVOb2RlIHx8ICFlZGl0YWJsZU5vZGUtPmlzQ29udGVudEVkaXRhYmxlKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGlmICghaXNTcGVsbENoZWNraW5nRW5hYmxlZEluRm9jdXNl
ZE5vZGUoKSkKKyAgICBpZiAoIWlzU3BlbGxDaGVja2luZ0VuYWJsZWRGb3IoZWRpdGFibGVOb2Rl
KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gRXhwYW5kIHRoZSByYW5nZSB0byBlbmNvbXBh
c3MgZW50aXJlIHBhcmFncmFwaHMsIHNpbmNlIHRleHQgY2hlY2tpbmcgbmVlZHMgdGhhdCBtdWNo
IGNvbnRleHQuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmggYi9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yLmgKaW5kZXggMTEwZTNmOWE4ZjE4MzI1MTdiMmRkOWEyNzQ3YmE1NDZm
MGZhMGFkZi4uOGJmMWVhNTlmNTliNjQxMjI1MGZlM2ZhYjU5MzlmYTkxMjQyOTE0ZiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCisrKyBiL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3IuaApAQCAtMjE5LDYgKzIxOSw3IEBAIHB1YmxpYzoKICAgICBWZWN0b3I8U3RyaW5nPiBndWVz
c2VzRm9yVW5ncmFtbWF0aWNhbFNlbGVjdGlvbigpOwogICAgIFZlY3RvcjxTdHJpbmc+IGd1ZXNz
ZXNGb3JNaXNzcGVsbGVkT3JVbmdyYW1tYXRpY2FsU2VsZWN0aW9uKGJvb2wmIG1pc3NwZWxsZWQs
IGJvb2wmIHVuZ3JhbW1hdGljYWwpOwogICAgIGJvb2wgaXNTcGVsbENoZWNraW5nRW5hYmxlZElu
Rm9jdXNlZE5vZGUoKSBjb25zdDsKKyAgICBib29sIGlzU3BlbGxDaGVja2luZ0VuYWJsZWRGb3Io
Tm9kZSopIGNvbnN0OwogICAgIHZvaWQgbWFya01pc3NwZWxsaW5nc0FmdGVyVHlwaW5nVG9Qb3Np
dGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKTsKICAgICB2b2lkIG1hcmtNaXNzcGVsbGluZ3Mo
Y29uc3QgVmlzaWJsZVNlbGVjdGlvbiYsIFJlZlB0cjxSYW5nZT4mIGZpcnN0TWlzc3BlbGxpbmdS
YW5nZSk7CiAgICAgdm9pZCBtYXJrQmFkR3JhbW1hcihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJik7
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRNZW51LmNwcCBiL1dlYkNvcmUv
cGxhdGZvcm0vQ29udGV4dE1lbnUuY3BwCmluZGV4IGVjZGYyMzA0ODg2ODc2ZjBmNWVlNGZkNzVl
ODliNGU3OTE3NmVkZTYuLjkzY2RmZGY5YWM4NzU4NDZhMDVjNmZhOGVhZGUyYWM5NzYxYzRhYzcg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnUuY3BwCisrKyBiL1dlYkNv
cmUvcGxhdGZvcm0vQ29udGV4dE1lbnUuY3BwCkBAIC00MjksNyArNDI5LDcgQEAgdm9pZCBDb250
ZXh0TWVudTo6cG9wdWxhdGUoKQogICAgIH0gZWxzZSB7IC8vIE1ha2UgYW4gZWRpdGluZyBjb250
ZXh0IG1lbnUKICAgICAgICAgU2VsZWN0aW9uQ29udHJvbGxlciogc2VsZWN0aW9uID0gZnJhbWUt
PnNlbGVjdGlvbigpOwogICAgICAgICBib29sIGluUGFzc3dvcmRGaWVsZCA9IHNlbGVjdGlvbi0+
aXNJblBhc3N3b3JkRmllbGQoKTsKLSAgICAgICAgYm9vbCBzcGVsbENoZWNraW5nRW5hYmxlZCA9
IGZyYW1lLT5lZGl0b3IoKS0+aXNTcGVsbENoZWNraW5nRW5hYmxlZEluRm9jdXNlZE5vZGUoKTsK
KyAgICAgICAgYm9vbCBzcGVsbENoZWNraW5nRW5hYmxlZCA9IGZyYW1lLT5lZGl0b3IoKS0+aXNT
cGVsbENoZWNraW5nRW5hYmxlZEZvcihub2RlKTsKICAgICAgICAgCiAgICAgICAgIGlmICghaW5Q
YXNzd29yZEZpZWxkICYmIHNwZWxsQ2hlY2tpbmdFbmFibGVkKSB7CiAgICAgICAgICAgICAvLyBD
b25zaWRlciBhZGRpbmcgc3BlbGxpbmctcmVsYXRlZCBvciBncmFtbWFyLXJlbGF0ZWQgY29udGV4
dCBtZW51IGl0ZW1zIChuZXZlciBib3RoLCBzaW5jZSBhIHNpbmdsZSBzZWxlY3RlZCByYW5nZQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNw
cCBiL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKaW5kZXgg
Zjk2NDFmNGNmNjhiYWM2MTAzZjNiY2ExZGExODRhMGU0M2E1N2JkZC4uZDlhMWE3MzI0MWEzMThh
MDVkNzY3YzhmOTJiMzUzYjExMTVhMzVhNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcv
VGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9UZXh0
Q29udHJvbElubmVyRWxlbWVudHMuY3BwCkBAIC0xMjQsNiArMTI0LDExIEBAIHZvaWQgVGV4dENv
bnRyb2xJbm5lckVsZW1lbnQ6OmF0dGFjaElubmVyRWxlbWVudChOb2RlKiBwYXJlbnQsIFBhc3NS
ZWZQdHI8UmVuZGVyCiAgICAgICAgIHBhcmVudC0+cmVuZGVyZXIoKS0+YWRkQ2hpbGQocmVuZGVy
ZXIpOwogfQogCitib29sIFRleHRDb250cm9sSW5uZXJFbGVtZW50Ojppc1NwZWxsQ2hlY2tpbmdF
bmFibGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zaGFkb3dQYXJlbnQgJiYgbV9zaGFkb3dQ
YXJlbnQtPmlzU3BlbGxDaGVja2luZ0VuYWJsZWQoKTsKK30KKwogLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQogCiBpbmxpbmUgVGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50OjpUZXh0
Q29udHJvbElubmVyVGV4dEVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBIVE1MRWxlbWVudCog
c2hhZG93UGFyZW50KQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dENvbnRyb2xJ
bm5lckVsZW1lbnRzLmggYi9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Q29udHJvbElubmVyRWxlbWVu
dHMuaAppbmRleCA0NmMxYzhlNGFkMjA4ODgyZGZmYzc2MmM0YWVkMzQyYmVkNTU2ZjY0Li42MWM5
ZGJhY2NjZWFhZjVlYzc5NDczZDQ4NTAxNTQ5NTE3OWU3ZmEzIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3JlbmRlcmluZy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuaAorKysgYi9XZWJDb3JlL3JlbmRl
cmluZy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuaApAQCAtNDksNiArNDksNyBAQCBwcml2YXRl
OgogICAgIHZpcnR1YWwgYm9vbCBpc01vdXNlRm9jdXNhYmxlKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0gCiAgICAgdmlydHVhbCBib29sIGlzU2hhZG93Tm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c2hhZG93UGFyZW50OyB9CiAgICAgdmlydHVhbCBDb250YWluZXJOb2RlKiBzaGFkb3dQYXJlbnRO
b2RlKCkgeyByZXR1cm4gbV9zaGFkb3dQYXJlbnQ7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNTcGVs
bENoZWNraW5nRW5hYmxlZCgpIGNvbnN0OwogICAgIHZvaWQgc2V0U2hhZG93UGFyZW50Tm9kZShI
VE1MRWxlbWVudCogc2hhZG93UGFyZW50KSB7IG1fc2hhZG93UGFyZW50ID0gc2hhZG93UGFyZW50
OyB9CiAKICAgICBIVE1MRWxlbWVudCogbV9zaGFkb3dQYXJlbnQ7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72619</attachid>
            <date>2010-11-01 19:30:44 -0700</date>
            <delta_ts>2010-11-01 20:29:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-48418-20101102113042.patch</filename>
            <type>text/plain</type>
            <size>13046</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3YmVjMzBlODIxNjRkYTNmNjczNWRhNDgzODVmM2M2NjFiNGZmZWM3Li45NDJiOWFk
OTdmOWU4YmJiOGJlMjYxNWZhMmM5Y2UxOWRjODRmNjc0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTAtMTEtMDEgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQHNwZWxsY2hlY2sgYXR0
cmlidXRlIGF0IHRoZSBjaGlsZCBvZiBjb250ZW50RWRpdGFibGUgbm9kZSBpcyBpZ25vcmVkLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDg0MTgKKwor
ICAgICAgICAqIGVkaXRpbmcvc3BlbGxpbmcvc2NyaXB0LXRlc3RzL3NwZWxsaW5nLWF0dHJpYnV0
ZS1hdC1jaGlsZC5qczogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy9zcGVsbGlu
Zy1hdHRyaWJ1dGUtYXQtY2hpbGQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0
aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWF0dHJpYnV0ZS1hdC1jaGlsZC5odG1sOiBBZGRlZC4KKwog
MjAxMC0xMS0wMSAgUm9sYW5kIFN0ZWluZXIgIDxyb2xhbmRzdGVpbmVyQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBVbnJldmlld2VkOiBhZGQgZmFpbGluZyBTVkcgdGVzdHMgdG8gQ2hyb21pdW0g
dGVzdF9leHBlY3RhdGlvbnMudHh0LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9z
cGVsbGluZy9zY3JpcHQtdGVzdHMvc3BlbGxpbmctYXR0cmlidXRlLWF0LWNoaWxkLmpzIGIvTGF5
b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zY3JpcHQtdGVzdHMvc3BlbGxpbmctYXR0cmlidXRl
LWF0LWNoaWxkLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE1Y2ViZTllNDdiYTJiNmY2ODFiODFjZDJhMzdiYWJl
NmI1YThmY2IKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5n
L3NjcmlwdC10ZXN0cy9zcGVsbGluZy1hdHRyaWJ1dGUtYXQtY2hpbGQuanMKQEAgLTAsMCArMSwz
MiBAQAorZGVzY3JpcHRpb24oJ1Rlc3RzIGlmIHRoZSBzcGVsbGNoZWNrZXIgYmVoYXZpb3IgY2hh
bmdlIGFmdGVyIHRoZSBzcGVsbGNoZWNrIGF0dHJpYnV0ZSBjaGFuZ2VkIGJ5IHRoZSBzY3JpcHQu
Jyk7CisKK3ZhciByb290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Citkb2N1bWVu
dC5ib2R5LmFwcGVuZENoaWxkKHJvb3QpOwordmFyIHNlbCA9IGRvY3VtZW50LmdldFNlbGVjdGlv
bigpOworCitmdW5jdGlvbiB0ZXN0U3BlbGxDaGVja2luZyhtYXJrdXApCit7CisgICAgcm9vdC5p
bm5lckhUTUwgPSBtYXJrdXA7CisgICAgdmFyIHBhcmVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJwYXJlbnQiKTsKKyAgICB2YXIgY2hpbGQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
Y2hpbGQiKTsKKyAgICB2YXIgdGV4dCA9IGNoaWxkLmZpcnN0Q2hpbGQ7CisgICAgc2VsLnNldEJh
c2VBbmRFeHRlbnQodGV4dCwgMSwgdGV4dCwgMSk7CisgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQo
Ikluc2VydFRleHQiLCBmYWxzZSwgJ3onKTsKKyAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiSW5z
ZXJ0VGV4dCIsIGZhbHNlLCAneicpOworICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJJbnNlcnRU
ZXh0IiwgZmFsc2UsICcgJyk7CisgICAgdmFyIG1hcmtlZCA9IGxheW91dFRlc3RDb250cm9sbGVy
Lmhhc1NwZWxsaW5nTWFya2VyKDEsIDIpOworICAgIHJvb3QuaW5uZXJIVE1MID0gIiI7CisgICAg
cmV0dXJuIG1hcmtlZDsKK30KKworc2hvdWxkQmVGYWxzZSgidGVzdFNwZWxsQ2hlY2tpbmcoXCI8
ZGl2IGlkPSdwYXJlbnQnIGNvbnRlbnRFZGl0YWJsZT5Gb28gPHNwYW4gc3BlbGxjaGVjaz0nZmFs
c2UnIGlkPSdjaGlsZCc+W108L3NwYW4+IEJhejwvZGl2PlwiKSIpOworc2hvdWxkQmVUcnVlKCJ0
ZXN0U3BlbGxDaGVja2luZyhcIjxkaXYgaWQ9J3BhcmVudCcgY29udGVudEVkaXRhYmxlPkZvbyA8
c3BhbiBpZD0nY2hpbGQnPltdPC9zcGFuPiBCYXo8L2Rpdj5cIikiKTsKK3Nob3VsZEJlVHJ1ZSgi
dGVzdFNwZWxsQ2hlY2tpbmcoXCI8ZGl2IGlkPSdwYXJlbnQnIGNvbnRlbnRFZGl0YWJsZT5Gb28g
PHNwYW4gc3BlbGxjaGVjaz0ndHJ1ZScgaWQ9J2NoaWxkJz5bXTwvc3Bhbj4gQmF6PC9kaXY+XCIp
Iik7CitzaG91bGRCZUZhbHNlKCJ0ZXN0U3BlbGxDaGVja2luZyhcIjxkaXYgaWQ9J3BhcmVudCcg
c3BlbGxjaGVjaz0nZmFsc2UnIGNvbnRlbnRFZGl0YWJsZT5Gb28gPHNwYW4gc3BlbGxjaGVjaz0n
ZmFsc2UnIGlkPSdjaGlsZCc+W108L3NwYW4+IEJhejwvZGl2PlwiKSIpOworc2hvdWxkQmVGYWxz
ZSgidGVzdFNwZWxsQ2hlY2tpbmcoXCI8ZGl2IGlkPSdwYXJlbnQnIHNwZWxsY2hlY2s9J2ZhbHNl
JyBjb250ZW50RWRpdGFibGU+Rm9vIDxzcGFuIGlkPSdjaGlsZCc+W108L3NwYW4+IEJhejwvZGl2
PlwiKSIpOworc2hvdWxkQmVUcnVlKCJ0ZXN0U3BlbGxDaGVja2luZyhcIjxkaXYgaWQ9J3BhcmVu
dCcgc3BlbGxjaGVjaz0nZmFsc2UnIGNvbnRlbnRFZGl0YWJsZT5Gb28gPHNwYW4gc3BlbGxjaGVj
az0ndHJ1ZScgaWQ9J2NoaWxkJz5bXTwvc3Bhbj4gQmF6PC9kaXY+XCIpIik7CitzaG91bGRCZUZh
bHNlKCJ0ZXN0U3BlbGxDaGVja2luZyhcIjxkaXYgaWQ9J3BhcmVudCcgc3BlbGxjaGVjaz0ndHJ1
ZScgY29udGVudEVkaXRhYmxlPkZvbyA8c3BhbiBzcGVsbGNoZWNrPSdmYWxzZScgaWQ9J2NoaWxk
Jz5bXTwvc3Bhbj4gQmF6PC9kaXY+XCIpIik7CitzaG91bGRCZVRydWUoInRlc3RTcGVsbENoZWNr
aW5nKFwiPGRpdiBpZD0ncGFyZW50JyBzcGVsbGNoZWNrPSd0cnVlJyBjb250ZW50RWRpdGFibGU+
Rm9vIDxzcGFuIGlkPSdjaGlsZCc+W108L3NwYW4+IEJhejwvZGl2PlwiKSIpOworc2hvdWxkQmVU
cnVlKCJ0ZXN0U3BlbGxDaGVja2luZyhcIjxkaXYgaWQ9J3BhcmVudCcgc3BlbGxjaGVjaz0ndHJ1
ZScgY29udGVudEVkaXRhYmxlPkZvbyA8c3BhbiBzcGVsbGNoZWNrPSd0cnVlJyBpZD0nY2hpbGQn
PltdPC9zcGFuPiBCYXo8L2Rpdj5cIikiKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRy
dWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWF0
dHJpYnV0ZS1hdC1jaGlsZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxs
aW5nL3NwZWxsaW5nLWF0dHJpYnV0ZS1hdC1jaGlsZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YTc2ZWZmMDQwNDM3OTUxOTI4ODYxY2IyMjY4NGNlOTRhNDMwYzk4NgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctYXR0cmlidXRlLWF0LWNo
aWxkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE4IEBACitUZXN0cyBpZiB0aGUgc3BlbGxjaGVj
a2VyIGJlaGF2aW9yIGNoYW5nZSBhZnRlciB0aGUgc3BlbGxjaGVjayBhdHRyaWJ1dGUgY2hhbmdl
ZCBieSB0aGUgc2NyaXB0LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyB0
ZXN0U3BlbGxDaGVja2luZygiPGRpdiBpZD0ncGFyZW50JyBjb250ZW50RWRpdGFibGU+Rm9vIDxz
cGFuIHNwZWxsY2hlY2s9J2ZhbHNlJyBpZD0nY2hpbGQnPltdPC9zcGFuPiBCYXo8L2Rpdj4iKSBp
cyBmYWxzZQorUEFTUyB0ZXN0U3BlbGxDaGVja2luZygiPGRpdiBpZD0ncGFyZW50JyBjb250ZW50
RWRpdGFibGU+Rm9vIDxzcGFuIGlkPSdjaGlsZCc+W108L3NwYW4+IEJhejwvZGl2PiIpIGlzIHRy
dWUKK1BBU1MgdGVzdFNwZWxsQ2hlY2tpbmcoIjxkaXYgaWQ9J3BhcmVudCcgY29udGVudEVkaXRh
YmxlPkZvbyA8c3BhbiBzcGVsbGNoZWNrPSd0cnVlJyBpZD0nY2hpbGQnPltdPC9zcGFuPiBCYXo8
L2Rpdj4iKSBpcyB0cnVlCitQQVNTIHRlc3RTcGVsbENoZWNraW5nKCI8ZGl2IGlkPSdwYXJlbnQn
IHNwZWxsY2hlY2s9J2ZhbHNlJyBjb250ZW50RWRpdGFibGU+Rm9vIDxzcGFuIHNwZWxsY2hlY2s9
J2ZhbHNlJyBpZD0nY2hpbGQnPltdPC9zcGFuPiBCYXo8L2Rpdj4iKSBpcyBmYWxzZQorUEFTUyB0
ZXN0U3BlbGxDaGVja2luZygiPGRpdiBpZD0ncGFyZW50JyBzcGVsbGNoZWNrPSdmYWxzZScgY29u
dGVudEVkaXRhYmxlPkZvbyA8c3BhbiBpZD0nY2hpbGQnPltdPC9zcGFuPiBCYXo8L2Rpdj4iKSBp
cyBmYWxzZQorUEFTUyB0ZXN0U3BlbGxDaGVja2luZygiPGRpdiBpZD0ncGFyZW50JyBzcGVsbGNo
ZWNrPSdmYWxzZScgY29udGVudEVkaXRhYmxlPkZvbyA8c3BhbiBzcGVsbGNoZWNrPSd0cnVlJyBp
ZD0nY2hpbGQnPltdPC9zcGFuPiBCYXo8L2Rpdj4iKSBpcyB0cnVlCitQQVNTIHRlc3RTcGVsbENo
ZWNraW5nKCI8ZGl2IGlkPSdwYXJlbnQnIHNwZWxsY2hlY2s9J3RydWUnIGNvbnRlbnRFZGl0YWJs
ZT5Gb28gPHNwYW4gc3BlbGxjaGVjaz0nZmFsc2UnIGlkPSdjaGlsZCc+W108L3NwYW4+IEJhejwv
ZGl2PiIpIGlzIGZhbHNlCitQQVNTIHRlc3RTcGVsbENoZWNraW5nKCI8ZGl2IGlkPSdwYXJlbnQn
IHNwZWxsY2hlY2s9J3RydWUnIGNvbnRlbnRFZGl0YWJsZT5Gb28gPHNwYW4gaWQ9J2NoaWxkJz5b
XTwvc3Bhbj4gQmF6PC9kaXY+IikgaXMgdHJ1ZQorUEFTUyB0ZXN0U3BlbGxDaGVja2luZygiPGRp
diBpZD0ncGFyZW50JyBzcGVsbGNoZWNrPSd0cnVlJyBjb250ZW50RWRpdGFibGU+Rm9vIDxzcGFu
IHNwZWxsY2hlY2s9J3RydWUnIGlkPSdjaGlsZCc+W108L3NwYW4+IEJhejwvZGl2PiIpIGlzIHRy
dWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWF0dHJpYnV0
ZS1hdC1jaGlsZC5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1h
dHRyaWJ1dGUtYXQtY2hpbGQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ODk1N2E5MTUxM2I3Y2U0ZDM4NWQw
YWFhOTdkM2FiY2YyNGY1NWUwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9zcGVsbGluZy9zcGVsbGluZy1hdHRyaWJ1dGUtYXQtY2hpbGQuaHRtbApAQCAtMCwwICsxLDE0
IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRt
bD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNl
cy9qcy10ZXN0LXNlbGVjdGlvbi1zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNj
cmlwdCBzcmM9InNjcmlwdC10ZXN0cy9zcGVsbGluZy1hdHRyaWJ1dGUtYXQtY2hpbGQuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9XZWJDb3JlL0No
YW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDcwMTZlZDlkNmNlYmNlY2U2MjgyNzE2
ZTlkZDMzMWViM2E2NTFiOWMuLjQzYWZhNTZjMTM0MmJlYTA0OTE0YmQyODU5YjM5OTdiMTRjMzBl
NmUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMzAgQEAKKzIwMTAtMTEtMDEgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdv
b2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQHNwZWxsY2hlY2sgYXR0cmlidXRlIGF0IHRoZSBjaGlsZCBvZiBjb250ZW50RWRpdGFibGUg
bm9kZSBpcyBpZ25vcmVkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NDg0MTgKKworICAgICAgICBDaGFuZ2VkIHRvIGNoZWNrIHNwZWxsY2hlY2sgYXZh
aWxhYmlsaXR5IGFnYWluc3QgYSBub2RlIHVuZGVyIHRoZQorICAgICAgICBzZWxlY3Rpb24gKGNh
cmV0KSBpbnN0ZWFkIG9mIHRoZSBmb2N1cy4gRm9yIHNoYWRvdyBlbGVtZW50cywgdGhlCisgICAg
ICAgIGNoZWNrIG5vdyByZWZlcnMgaXRzIGhvc3Qgbm9kZS4gIE5vdGUgdGhhdCB0aGUgb3JpZ2lu
YWwgY29kZSBkaWRuJ3QKKyAgICAgICAgY2FyZSBzaGFkb3dzIGJlY2F1c2UgZm9jdXMgaXMgbmV2
ZXIgc2V0IG9uIHRoZW0uCisgICAgICAgIAorICAgICAgICBUZXN0OiBlZGl0aW5nL3NwZWxsaW5n
L3NwZWxsaW5nLWF0dHJpYnV0ZS1hdC1jaGlsZC5odG1sCisKKyAgICAgICAgKiBkb20vRWxlbWVu
dC5oOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRvcjo6bWFya01pc3NwZWxsaW5nc09yQmFkR3JhbW1hcik6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0b3I6OmlzU3BlbGxDaGVja2luZ0VuYWJsZWRGb3IpOiAKKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRvcjo6aXNTcGVsbENoZWNraW5nRW5hYmxlZEluRm9jdXNlZE5vZGUpOiBOb3cganVzdCBjYWxs
aW5nIGlzU3BlbGxDaGVja2luZ0VuYWJsZWRGb3IoKQorICAgICAgICAoV2ViQ29yZTo6RWRpdG9y
OjptYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKToKKyAgICAgICAgKiBl
ZGl0aW5nL0VkaXRvci5oOgorICAgICAgICAqIHBsYXRmb3JtL0NvbnRleHRNZW51LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51Ojpwb3B1bGF0ZSk6CisgICAgICAgICogcmVuZGVy
aW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
Q29udHJvbElubmVyRWxlbWVudDo6aXNTcGVsbENoZWNraW5nRW5hYmxlZCk6IEFkZGVkLgorICAg
ICAgICAqIHJlbmRlcmluZy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuaDoKKwogMjAxMC0xMC0z
MSAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBUaW1vdGh5IEhhdGNoZXIuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9FbGVtZW50
LmggYi9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXggNjc4ODdjY2FlMjllMDNlYjM1YzYwZWM2
YzdjNmFlNWNjZTlkY2ZhNy4uMWE4NTY1MDJlYzFhZTk0NzZkZjE5ZTM3OTliMDY4Yzk5ZWFlZWQ0
YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBiL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuaApAQCAtMzI2LDcgKzMyNiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHdlYmtpdFJlcXVl
c3RGdWxsU2NyZWVuKHVuc2lnbmVkIHNob3J0IGZsYWdzKTsKICNlbmRpZgogCi0gICAgYm9vbCBp
c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGlzU3BlbGxD
aGVja2luZ0VuYWJsZWQoKSBjb25zdDsKIAogcHJvdGVjdGVkOgogICAgIEVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBDb25zdHJ1Y3Rpb25U
eXBlIHR5cGUpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDhhNGVmNTk5NDhlYTc0Y2U4MTc4NjEyZjBmOWMw
NjI5YTM4NGE1M2QuLjIyY2I3YjE4ZGVjN2EwYTQyNDdhYTk0OGY3NWIyOTM4NzNiOWU5ZjggMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3IuY3BwCkBAIC0yMDk1LDcgKzIwOTUsNyBAQCB2b2lkIEVkaXRvcjo6bWFya01pc3Nw
ZWxsaW5nc09yQmFkR3JhbW1hcihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24sIGJv
bwogICAgIGlmICghZWRpdGFibGVOb2RlIHx8ICFlZGl0YWJsZU5vZGUtPmlzQ29udGVudEVkaXRh
YmxlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghaXNTcGVsbENoZWNraW5nRW5hYmxl
ZEluRm9jdXNlZE5vZGUoKSkKKyAgICBpZiAoIWlzU3BlbGxDaGVja2luZ0VuYWJsZWRGb3IoZWRp
dGFibGVOb2RlKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gR2V0IHRoZSBzcGVsbCBjaGVj
a2VyIGlmIGl0IGlzIGF2YWlsYWJsZQpAQCAtMjExNSwxMSArMjExNSw4IEBAIHZvaWQgRWRpdG9y
OjptYXJrTWlzc3BlbGxpbmdzT3JCYWRHcmFtbWFyKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNl
bGVjdGlvbiwgYm9vCiAgICAgfSAgICAKIH0KIAotYm9vbCBFZGl0b3I6OmlzU3BlbGxDaGVja2lu
Z0VuYWJsZWRJbkZvY3VzZWROb2RlKCkgY29uc3QKK2Jvb2wgRWRpdG9yOjppc1NwZWxsQ2hlY2tp
bmdFbmFibGVkRm9yKE5vZGUqIG5vZGUpIGNvbnN0CiB7Ci0gICAgLy8gQXNjZW5kIHRoZSBET00g
dHJlZSB0byBmaW5kIGEgInNwZWxsY2hlY2siIGF0dHJpYnV0ZS4KLSAgICAvLyBXaGVuIHdlIGZp
bmQgYSAic3BlbGxjaGVjayIgYXR0cmlidXRlLCByZXRyaWV2ZSBpdHMgdmFsdWUgYW5kIHJldHVy
biBmYWxzZSBpZiBpdHMgdmFsdWUgaXMgImZhbHNlIi4KLSAgICBjb25zdCBOb2RlKiBub2RlID0g
ZnJhbWUoKS0+ZG9jdW1lbnQoKS0+Zm9jdXNlZE5vZGUoKTsKICAgICBpZiAoIW5vZGUpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICBjb25zdCBFbGVtZW50KiBmb2N1c2VkRWxlbWVudCA9IG5v
ZGUtPmlzRWxlbWVudE5vZGUoKSA/IHRvRWxlbWVudChub2RlKSA6IG5vZGUtPnBhcmVudEVsZW1l
bnQoKTsKQEAgLTIxMjgsNiArMjEyNSwxMSBAQCBib29sIEVkaXRvcjo6aXNTcGVsbENoZWNraW5n
RW5hYmxlZEluRm9jdXNlZE5vZGUoKSBjb25zdAogICAgIHJldHVybiBmb2N1c2VkRWxlbWVudC0+
aXNTcGVsbENoZWNraW5nRW5hYmxlZCgpOwogfQogCitib29sIEVkaXRvcjo6aXNTcGVsbENoZWNr
aW5nRW5hYmxlZEluRm9jdXNlZE5vZGUoKSBjb25zdAoreworICAgIHJldHVybiBpc1NwZWxsQ2hl
Y2tpbmdFbmFibGVkRm9yKG1fZnJhbWUtPnNlbGVjdGlvbigpLT5zdGFydCgpLm5vZGUoKSk7Cit9
CisKIHZvaWQgRWRpdG9yOjptYXJrTWlzc3BlbGxpbmdzKGNvbnN0IFZpc2libGVTZWxlY3Rpb24m
IHNlbGVjdGlvbiwgUmVmUHRyPFJhbmdlPiYgZmlyc3RNaXNzcGVsbGluZ1JhbmdlKQogewogICAg
IG1hcmtNaXNzcGVsbGluZ3NPckJhZEdyYW1tYXIoc2VsZWN0aW9uLCB0cnVlLCBmaXJzdE1pc3Nw
ZWxsaW5nUmFuZ2UpOwpAQCAtMjE3MCw3ICsyMTcyLDcgQEAgdm9pZCBFZGl0b3I6Om1hcmtBbGxN
aXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMoVGV4dENoZWNraW5nT3B0aW9ucyB0ZXh0
Q2gKICAgICBpZiAoIWVkaXRhYmxlTm9kZSB8fCAhZWRpdGFibGVOb2RlLT5pc0NvbnRlbnRFZGl0
YWJsZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIWlzU3BlbGxDaGVja2luZ0VuYWJs
ZWRJbkZvY3VzZWROb2RlKCkpCisgICAgaWYgKCFpc1NwZWxsQ2hlY2tpbmdFbmFibGVkRm9yKGVk
aXRhYmxlTm9kZSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIEV4cGFuZCB0aGUgcmFuZ2Ug
dG8gZW5jb21wYXNzIGVudGlyZSBwYXJhZ3JhcGhzLCBzaW5jZSB0ZXh0IGNoZWNraW5nIG5lZWRz
IHRoYXQgbXVjaCBjb250ZXh0LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5o
IGIvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCmluZGV4IDExMGUzZjlhOGYxODMyNTE3YjJkZDlh
Mjc0N2JhNTQ2ZjBmYTBhZGYuLjhiZjFlYTU5ZjU5YjY0MTIyNTBmZTNmYWI1OTM5ZmE5MTI0Mjkx
NGYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAorKysgYi9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmgKQEAgLTIxOSw2ICsyMTksNyBAQCBwdWJsaWM6CiAgICAgVmVjdG9yPFN0
cmluZz4gZ3Vlc3Nlc0ZvclVuZ3JhbW1hdGljYWxTZWxlY3Rpb24oKTsKICAgICBWZWN0b3I8U3Ry
aW5nPiBndWVzc2VzRm9yTWlzc3BlbGxlZE9yVW5ncmFtbWF0aWNhbFNlbGVjdGlvbihib29sJiBt
aXNzcGVsbGVkLCBib29sJiB1bmdyYW1tYXRpY2FsKTsKICAgICBib29sIGlzU3BlbGxDaGVja2lu
Z0VuYWJsZWRJbkZvY3VzZWROb2RlKCkgY29uc3Q7CisgICAgYm9vbCBpc1NwZWxsQ2hlY2tpbmdF
bmFibGVkRm9yKE5vZGUqKSBjb25zdDsKICAgICB2b2lkIG1hcmtNaXNzcGVsbGluZ3NBZnRlclR5
cGluZ1RvUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJik7CiAgICAgdm9pZCBtYXJrTWlz
c3BlbGxpbmdzKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mLCBSZWZQdHI8UmFuZ2U+JiBmaXJzdE1p
c3NwZWxsaW5nUmFuZ2UpOwogICAgIHZvaWQgbWFya0JhZEdyYW1tYXIoY29uc3QgVmlzaWJsZVNl
bGVjdGlvbiYpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZXh0TWVudS5jcHAg
Yi9XZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRNZW51LmNwcAppbmRleCBlY2RmMjMwNDg4Njg3NmYw
ZjVlZTRmZDc1ZTg5YjRlNzkxNzZlZGU2Li45M2NkZmRmOWFjODc1ODQ2YTA1YzZmYThlYWRlMmFj
OTc2MWM0YWM3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRNZW51LmNwcAor
KysgYi9XZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRNZW51LmNwcApAQCAtNDI5LDcgKzQyOSw3IEBA
IHZvaWQgQ29udGV4dE1lbnU6OnBvcHVsYXRlKCkKICAgICB9IGVsc2UgeyAvLyBNYWtlIGFuIGVk
aXRpbmcgY29udGV4dCBtZW51CiAgICAgICAgIFNlbGVjdGlvbkNvbnRyb2xsZXIqIHNlbGVjdGlv
biA9IGZyYW1lLT5zZWxlY3Rpb24oKTsKICAgICAgICAgYm9vbCBpblBhc3N3b3JkRmllbGQgPSBz
ZWxlY3Rpb24tPmlzSW5QYXNzd29yZEZpZWxkKCk7Ci0gICAgICAgIGJvb2wgc3BlbGxDaGVja2lu
Z0VuYWJsZWQgPSBmcmFtZS0+ZWRpdG9yKCktPmlzU3BlbGxDaGVja2luZ0VuYWJsZWRJbkZvY3Vz
ZWROb2RlKCk7CisgICAgICAgIGJvb2wgc3BlbGxDaGVja2luZ0VuYWJsZWQgPSBmcmFtZS0+ZWRp
dG9yKCktPmlzU3BlbGxDaGVja2luZ0VuYWJsZWRGb3Iobm9kZSk7CiAgICAgICAgIAogICAgICAg
ICBpZiAoIWluUGFzc3dvcmRGaWVsZCAmJiBzcGVsbENoZWNraW5nRW5hYmxlZCkgewogICAgICAg
ICAgICAgLy8gQ29uc2lkZXIgYWRkaW5nIHNwZWxsaW5nLXJlbGF0ZWQgb3IgZ3JhbW1hci1yZWxh
dGVkIGNvbnRleHQgbWVudSBpdGVtcyAobmV2ZXIgYm90aCwgc2luY2UgYSBzaW5nbGUgc2VsZWN0
ZWQgcmFuZ2UKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRDb250cm9sSW5uZXJF
bGVtZW50cy5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMu
Y3BwCmluZGV4IGY5NjQxZjRjZjY4YmFjNjEwM2YzYmNhMWRhMTg0YTBlNDNhNTdiZGQuLmQ5YTFh
NzMyNDFhMzE4YTA1ZDc2N2M4ZjkyYjM1M2IxMTE1YTM1YTcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cmVuZGVyaW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKKysrIGIvV2ViQ29yZS9yZW5k
ZXJpbmcvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcApAQCAtMTI0LDYgKzEyNCwxMSBAQCB2
b2lkIFRleHRDb250cm9sSW5uZXJFbGVtZW50OjphdHRhY2hJbm5lckVsZW1lbnQoTm9kZSogcGFy
ZW50LCBQYXNzUmVmUHRyPFJlbmRlcgogICAgICAgICBwYXJlbnQtPnJlbmRlcmVyKCktPmFkZENo
aWxkKHJlbmRlcmVyKTsKIH0KIAorYm9vbCBUZXh0Q29udHJvbElubmVyRWxlbWVudDo6aXNTcGVs
bENoZWNraW5nRW5hYmxlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2hhZG93UGFyZW50ICYm
IG1fc2hhZG93UGFyZW50LT5pc1NwZWxsQ2hlY2tpbmdFbmFibGVkKCk7Cit9CisKIC8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogaW5saW5lIFRleHRDb250cm9sSW5uZXJUZXh0RWxl
bWVudDo6VGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCwgSFRN
TEVsZW1lbnQqIHNoYWRvd1BhcmVudCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1Rl
eHRDb250cm9sSW5uZXJFbGVtZW50cy5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dENvbnRyb2xJ
bm5lckVsZW1lbnRzLmgKaW5kZXggNDZjMWM4ZTRhZDIwODg4MmRmZmM3NjJjNGFlZDM0MmJlZDU1
NmY2NC4uNjFjOWRiYWNjY2VhYWY1ZWM3OTQ3M2Q0ODUwMTU0OTUxNzllN2ZhMyAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgKKysrIGIvV2Vi
Q29yZS9yZW5kZXJpbmcvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgKQEAgLTQ5LDYgKzQ5LDcg
QEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNNb3VzZUZvY3VzYWJsZSgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9IAogICAgIHZpcnR1YWwgYm9vbCBpc1NoYWRvd05vZGUoKSBjb25zdCB7
IHJldHVybiBtX3NoYWRvd1BhcmVudDsgfQogICAgIHZpcnR1YWwgQ29udGFpbmVyTm9kZSogc2hh
ZG93UGFyZW50Tm9kZSgpIHsgcmV0dXJuIG1fc2hhZG93UGFyZW50OyB9CisgICAgdmlydHVhbCBi
b29sIGlzU3BlbGxDaGVja2luZ0VuYWJsZWQoKSBjb25zdDsKICAgICB2b2lkIHNldFNoYWRvd1Bh
cmVudE5vZGUoSFRNTEVsZW1lbnQqIHNoYWRvd1BhcmVudCkgeyBtX3NoYWRvd1BhcmVudCA9IHNo
YWRvd1BhcmVudDsgfQogCiAgICAgSFRNTEVsZW1lbnQqIG1fc2hhZG93UGFyZW50Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72623</attachid>
            <date>2010-11-01 20:29:11 -0700</date>
            <delta_ts>2010-11-01 22:15:02 -0700</delta_ts>
            <desc>removed &apos;parent&apos; from test</desc>
            <filename>bug-48418-20101102122909.patch</filename>
            <type>text/plain</type>
            <size>12777</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3YmVjMzBlODIxNjRkYTNmNjczNWRhNDgzODVmM2M2NjFiNGZmZWM3Li45NDJiOWFk
OTdmOWU4YmJiOGJlMjYxNWZhMmM5Y2UxOWRjODRmNjc0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTAtMTEtMDEgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQHNwZWxsY2hlY2sgYXR0
cmlidXRlIGF0IHRoZSBjaGlsZCBvZiBjb250ZW50RWRpdGFibGUgbm9kZSBpcyBpZ25vcmVkLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDg0MTgKKwor
ICAgICAgICAqIGVkaXRpbmcvc3BlbGxpbmcvc2NyaXB0LXRlc3RzL3NwZWxsaW5nLWF0dHJpYnV0
ZS1hdC1jaGlsZC5qczogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy9zcGVsbGlu
Zy1hdHRyaWJ1dGUtYXQtY2hpbGQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0
aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWF0dHJpYnV0ZS1hdC1jaGlsZC5odG1sOiBBZGRlZC4KKwog
MjAxMC0xMS0wMSAgUm9sYW5kIFN0ZWluZXIgIDxyb2xhbmRzdGVpbmVyQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBVbnJldmlld2VkOiBhZGQgZmFpbGluZyBTVkcgdGVzdHMgdG8gQ2hyb21pdW0g
dGVzdF9leHBlY3RhdGlvbnMudHh0LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9z
cGVsbGluZy9zY3JpcHQtdGVzdHMvc3BlbGxpbmctYXR0cmlidXRlLWF0LWNoaWxkLmpzIGIvTGF5
b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zY3JpcHQtdGVzdHMvc3BlbGxpbmctYXR0cmlidXRl
LWF0LWNoaWxkLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhmOGQxZmNiZjg5NDBiYjlkMjM4ODczZmJjODIwZmQ4
Yzg5MjYyYzkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5n
L3NjcmlwdC10ZXN0cy9zcGVsbGluZy1hdHRyaWJ1dGUtYXQtY2hpbGQuanMKQEAgLTAsMCArMSwz
MSBAQAorZGVzY3JpcHRpb24oJ1Rlc3RzIGlmIHRoZSBzcGVsbGNoZWNrZXIgYmVoYXZpb3IgY2hh
bmdlIGFmdGVyIHRoZSBzcGVsbGNoZWNrIGF0dHJpYnV0ZSBjaGFuZ2VkIGJ5IHRoZSBzY3JpcHQu
Jyk7CisKK3ZhciByb290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Citkb2N1bWVu
dC5ib2R5LmFwcGVuZENoaWxkKHJvb3QpOwordmFyIHNlbCA9IGRvY3VtZW50LmdldFNlbGVjdGlv
bigpOworCitmdW5jdGlvbiB0ZXN0U3BlbGxDaGVja2luZyhtYXJrdXApCit7CisgICAgcm9vdC5p
bm5lckhUTUwgPSBtYXJrdXA7CisgICAgdmFyIGNoaWxkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImNoaWxkIik7CisgICAgdmFyIHRleHQgPSBjaGlsZC5maXJzdENoaWxkOworICAgIHNlbC5z
ZXRCYXNlQW5kRXh0ZW50KHRleHQsIDEsIHRleHQsIDEpOworICAgIGRvY3VtZW50LmV4ZWNDb21t
YW5kKCJJbnNlcnRUZXh0IiwgZmFsc2UsICd6Jyk7CisgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQo
Ikluc2VydFRleHQiLCBmYWxzZSwgJ3onKTsKKyAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiSW5z
ZXJ0VGV4dCIsIGZhbHNlLCAnICcpOworICAgIHZhciBtYXJrZWQgPSBsYXlvdXRUZXN0Q29udHJv
bGxlci5oYXNTcGVsbGluZ01hcmtlcigxLCAyKTsKKyAgICByb290LmlubmVySFRNTCA9ICIiOwor
ICAgIHJldHVybiBtYXJrZWQ7Cit9CisKK3Nob3VsZEJlRmFsc2UoInRlc3RTcGVsbENoZWNraW5n
KFwiPGRpdiBjb250ZW50RWRpdGFibGU+Rm9vIDxzcGFuIHNwZWxsY2hlY2s9J2ZhbHNlJyBpZD0n
Y2hpbGQnPltdPC9zcGFuPiBCYXo8L2Rpdj5cIikiKTsKK3Nob3VsZEJlVHJ1ZSgidGVzdFNwZWxs
Q2hlY2tpbmcoXCI8ZGl2IGNvbnRlbnRFZGl0YWJsZT5Gb28gPHNwYW4gaWQ9J2NoaWxkJz5bXTwv
c3Bhbj4gQmF6PC9kaXY+XCIpIik7CitzaG91bGRCZVRydWUoInRlc3RTcGVsbENoZWNraW5nKFwi
PGRpdiBjb250ZW50RWRpdGFibGU+Rm9vIDxzcGFuIHNwZWxsY2hlY2s9J3RydWUnIGlkPSdjaGls
ZCc+W108L3NwYW4+IEJhejwvZGl2PlwiKSIpOworc2hvdWxkQmVGYWxzZSgidGVzdFNwZWxsQ2hl
Y2tpbmcoXCI8ZGl2IHNwZWxsY2hlY2s9J2ZhbHNlJyBjb250ZW50RWRpdGFibGU+Rm9vIDxzcGFu
IHNwZWxsY2hlY2s9J2ZhbHNlJyBpZD0nY2hpbGQnPltdPC9zcGFuPiBCYXo8L2Rpdj5cIikiKTsK
K3Nob3VsZEJlRmFsc2UoInRlc3RTcGVsbENoZWNraW5nKFwiPGRpdiBzcGVsbGNoZWNrPSdmYWxz
ZScgY29udGVudEVkaXRhYmxlPkZvbyA8c3BhbiBpZD0nY2hpbGQnPltdPC9zcGFuPiBCYXo8L2Rp
dj5cIikiKTsKK3Nob3VsZEJlVHJ1ZSgidGVzdFNwZWxsQ2hlY2tpbmcoXCI8ZGl2IHNwZWxsY2hl
Y2s9J2ZhbHNlJyBjb250ZW50RWRpdGFibGU+Rm9vIDxzcGFuIHNwZWxsY2hlY2s9J3RydWUnIGlk
PSdjaGlsZCc+W108L3NwYW4+IEJhejwvZGl2PlwiKSIpOworc2hvdWxkQmVGYWxzZSgidGVzdFNw
ZWxsQ2hlY2tpbmcoXCI8ZGl2IHNwZWxsY2hlY2s9J3RydWUnIGNvbnRlbnRFZGl0YWJsZT5Gb28g
PHNwYW4gc3BlbGxjaGVjaz0nZmFsc2UnIGlkPSdjaGlsZCc+W108L3NwYW4+IEJhejwvZGl2Plwi
KSIpOworc2hvdWxkQmVUcnVlKCJ0ZXN0U3BlbGxDaGVja2luZyhcIjxkaXYgc3BlbGxjaGVjaz0n
dHJ1ZScgY29udGVudEVkaXRhYmxlPkZvbyA8c3BhbiBpZD0nY2hpbGQnPltdPC9zcGFuPiBCYXo8
L2Rpdj5cIikiKTsKK3Nob3VsZEJlVHJ1ZSgidGVzdFNwZWxsQ2hlY2tpbmcoXCI8ZGl2IHNwZWxs
Y2hlY2s9J3RydWUnIGNvbnRlbnRFZGl0YWJsZT5Gb28gPHNwYW4gc3BlbGxjaGVjaz0ndHJ1ZScg
aWQ9J2NoaWxkJz5bXTwvc3Bhbj4gQmF6PC9kaXY+XCIpIik7CisKK3ZhciBzdWNjZXNzZnVsbHlQ
YXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9z
cGVsbGluZy1hdHRyaWJ1dGUtYXQtY2hpbGQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRp
dGluZy9zcGVsbGluZy9zcGVsbGluZy1hdHRyaWJ1dGUtYXQtY2hpbGQtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjg0OTM5MzVlOGE3YzNiMDQxNDc2N2Q3Y2JmOTlkODNjYWU4MjljYjYKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWF0dHJp
YnV0ZS1hdC1jaGlsZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxOCBAQAorVGVzdHMgaWYgdGhl
IHNwZWxsY2hlY2tlciBiZWhhdmlvciBjaGFuZ2UgYWZ0ZXIgdGhlIHNwZWxsY2hlY2sgYXR0cmli
dXRlIGNoYW5nZWQgYnkgdGhlIHNjcmlwdC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgor
CisKK1BBU1MgdGVzdFNwZWxsQ2hlY2tpbmcoIjxkaXYgY29udGVudEVkaXRhYmxlPkZvbyA8c3Bh
biBzcGVsbGNoZWNrPSdmYWxzZScgaWQ9J2NoaWxkJz5bXTwvc3Bhbj4gQmF6PC9kaXY+IikgaXMg
ZmFsc2UKK1BBU1MgdGVzdFNwZWxsQ2hlY2tpbmcoIjxkaXYgY29udGVudEVkaXRhYmxlPkZvbyA8
c3BhbiBpZD0nY2hpbGQnPltdPC9zcGFuPiBCYXo8L2Rpdj4iKSBpcyB0cnVlCitQQVNTIHRlc3RT
cGVsbENoZWNraW5nKCI8ZGl2IGNvbnRlbnRFZGl0YWJsZT5Gb28gPHNwYW4gc3BlbGxjaGVjaz0n
dHJ1ZScgaWQ9J2NoaWxkJz5bXTwvc3Bhbj4gQmF6PC9kaXY+IikgaXMgdHJ1ZQorUEFTUyB0ZXN0
U3BlbGxDaGVja2luZygiPGRpdiBzcGVsbGNoZWNrPSdmYWxzZScgY29udGVudEVkaXRhYmxlPkZv
byA8c3BhbiBzcGVsbGNoZWNrPSdmYWxzZScgaWQ9J2NoaWxkJz5bXTwvc3Bhbj4gQmF6PC9kaXY+
IikgaXMgZmFsc2UKK1BBU1MgdGVzdFNwZWxsQ2hlY2tpbmcoIjxkaXYgc3BlbGxjaGVjaz0nZmFs
c2UnIGNvbnRlbnRFZGl0YWJsZT5Gb28gPHNwYW4gaWQ9J2NoaWxkJz5bXTwvc3Bhbj4gQmF6PC9k
aXY+IikgaXMgZmFsc2UKK1BBU1MgdGVzdFNwZWxsQ2hlY2tpbmcoIjxkaXYgc3BlbGxjaGVjaz0n
ZmFsc2UnIGNvbnRlbnRFZGl0YWJsZT5Gb28gPHNwYW4gc3BlbGxjaGVjaz0ndHJ1ZScgaWQ9J2No
aWxkJz5bXTwvc3Bhbj4gQmF6PC9kaXY+IikgaXMgdHJ1ZQorUEFTUyB0ZXN0U3BlbGxDaGVja2lu
ZygiPGRpdiBzcGVsbGNoZWNrPSd0cnVlJyBjb250ZW50RWRpdGFibGU+Rm9vIDxzcGFuIHNwZWxs
Y2hlY2s9J2ZhbHNlJyBpZD0nY2hpbGQnPltdPC9zcGFuPiBCYXo8L2Rpdj4iKSBpcyBmYWxzZQor
UEFTUyB0ZXN0U3BlbGxDaGVja2luZygiPGRpdiBzcGVsbGNoZWNrPSd0cnVlJyBjb250ZW50RWRp
dGFibGU+Rm9vIDxzcGFuIGlkPSdjaGlsZCc+W108L3NwYW4+IEJhejwvZGl2PiIpIGlzIHRydWUK
K1BBU1MgdGVzdFNwZWxsQ2hlY2tpbmcoIjxkaXYgc3BlbGxjaGVjaz0ndHJ1ZScgY29udGVudEVk
aXRhYmxlPkZvbyA8c3BhbiBzcGVsbGNoZWNrPSd0cnVlJyBpZD0nY2hpbGQnPltdPC9zcGFuPiBC
YXo8L2Rpdj4iKSBpcyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9z
cGVsbGluZy1hdHRyaWJ1dGUtYXQtY2hpbGQuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3Bl
bGxpbmcvc3BlbGxpbmctYXR0cmlidXRlLWF0LWNoaWxkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzg5NTdh
OTE1MTNiN2NlNGQzODVkMGFhYTk3ZDNhYmNmMjRmNTVlMAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctYXR0cmlidXRlLWF0LWNoaWxkLmh0
bWwKQEAgLTAsMCArMSwxNCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQg
SFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Li4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9
Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1zZWxlY3Rpb24tc2hhcmVkLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvc3BlbGxpbmctYXR0cmlidXRl
LWF0LWNoaWxkLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3MDE2ZWQ5
ZDZjZWJjZWNlNjI4MjcxNmU5ZGQzMzFlYjNhNjUxYjljLi40M2FmYTU2YzEzNDJiZWEwNDkxNGJk
Mjg1OWIzOTk3YjE0YzMwZTZlIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEwLTExLTAxICBNT1JJVEEgSGFq
aW1lICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEBzcGVsbGNoZWNrIGF0dHJpYnV0ZSBhdCB0aGUgY2hpbGQgb2Yg
Y29udGVudEVkaXRhYmxlIG5vZGUgaXMgaWdub3JlZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4NDE4CisKKyAgICAgICAgQ2hhbmdlZCB0byBjaGVj
ayBzcGVsbGNoZWNrIGF2YWlsYWJpbGl0eSBhZ2FpbnN0IGEgbm9kZSB1bmRlciB0aGUKKyAgICAg
ICAgc2VsZWN0aW9uIChjYXJldCkgaW5zdGVhZCBvZiB0aGUgZm9jdXMuIEZvciBzaGFkb3cgZWxl
bWVudHMsIHRoZQorICAgICAgICBjaGVjayBub3cgcmVmZXJzIGl0cyBob3N0IG5vZGUuICBOb3Rl
IHRoYXQgdGhlIG9yaWdpbmFsIGNvZGUgZGlkbid0CisgICAgICAgIGNhcmUgc2hhZG93cyBiZWNh
dXNlIGZvY3VzIGlzIG5ldmVyIHNldCBvbiB0aGVtLgorICAgICAgICAKKyAgICAgICAgVGVzdDog
ZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1hdHRyaWJ1dGUtYXQtY2hpbGQuaHRtbAorCisgICAg
ICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpFZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NPckJhZEdyYW1tYXIpOgorICAg
ICAgICAoV2ViQ29yZTo6RWRpdG9yOjppc1NwZWxsQ2hlY2tpbmdFbmFibGVkRm9yKTogCisgICAg
ICAgIChXZWJDb3JlOjpFZGl0b3I6OmlzU3BlbGxDaGVja2luZ0VuYWJsZWRJbkZvY3VzZWROb2Rl
KTogTm93IGp1c3QgY2FsbGluZyBpc1NwZWxsQ2hlY2tpbmdFbmFibGVkRm9yKCkKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvcjo6bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdl
cyk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Db250
ZXh0TWVudS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudTo6cG9wdWxhdGUpOgor
ICAgICAgICAqIHJlbmRlcmluZy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dENvbnRyb2xJbm5lckVsZW1lbnQ6OmlzU3BlbGxDaGVja2luZ0VuYWJs
ZWQpOiBBZGRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRz
Lmg6CisKIDIwMTAtMTAtMzEgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgVGltb3RoeSBIYXRjaGVyLgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9kb20vRWxlbWVudC5oIGIvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IDY3ODg3Y2Nh
ZTI5ZTAzZWIzNWM2MGVjNmM3YzZhZTVjY2U5ZGNmYTcuLjFhODU2NTAyZWMxYWU5NDc2ZGYxOWUz
Nzk5YjA2OGM5OWVhZWVkNGIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysg
Yi9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTMyNiw3ICszMjYsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCB3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbih1bnNpZ25lZCBzaG9ydCBmbGFncyk7CiAjZW5k
aWYKIAotICAgIGJvb2wgaXNTcGVsbENoZWNraW5nRW5hYmxlZCgpIGNvbnN0OworICAgIHZpcnR1
YWwgYm9vbCBpc1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkgY29uc3Q7CiAKIHByb3RlY3RlZDoKICAg
ICBFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVu
dCwgQ29uc3RydWN0aW9uVHlwZSB0eXBlKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5jcHAgYi9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCA4YTRlZjU5OTQ4ZWE3
NGNlODE3ODYxMmYwZjljMDYyOWEzODRhNTNkLi4yMmNiN2IxOGRlYzdhMGE0MjQ3YWE5NDhmNzVi
MjkzODczYjllOWY4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysg
Yi9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtMjA5NSw3ICsyMDk1LDcgQEAgdm9pZCBF
ZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NPckJhZEdyYW1tYXIoY29uc3QgVmlzaWJsZVNlbGVjdGlv
biYgc2VsZWN0aW9uLCBib28KICAgICBpZiAoIWVkaXRhYmxlTm9kZSB8fCAhZWRpdGFibGVOb2Rl
LT5pc0NvbnRlbnRFZGl0YWJsZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIWlzU3Bl
bGxDaGVja2luZ0VuYWJsZWRJbkZvY3VzZWROb2RlKCkpCisgICAgaWYgKCFpc1NwZWxsQ2hlY2tp
bmdFbmFibGVkRm9yKGVkaXRhYmxlTm9kZSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIEdl
dCB0aGUgc3BlbGwgY2hlY2tlciBpZiBpdCBpcyBhdmFpbGFibGUKQEAgLTIxMTUsMTEgKzIxMTUs
OCBAQCB2b2lkIEVkaXRvcjo6bWFya01pc3NwZWxsaW5nc09yQmFkR3JhbW1hcihjb25zdCBWaXNp
YmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24sIGJvbwogICAgIH0gICAgCiB9CiAKLWJvb2wgRWRpdG9y
Ojppc1NwZWxsQ2hlY2tpbmdFbmFibGVkSW5Gb2N1c2VkTm9kZSgpIGNvbnN0Citib29sIEVkaXRv
cjo6aXNTcGVsbENoZWNraW5nRW5hYmxlZEZvcihOb2RlKiBub2RlKSBjb25zdAogewotICAgIC8v
IEFzY2VuZCB0aGUgRE9NIHRyZWUgdG8gZmluZCBhICJzcGVsbGNoZWNrIiBhdHRyaWJ1dGUuCi0g
ICAgLy8gV2hlbiB3ZSBmaW5kIGEgInNwZWxsY2hlY2siIGF0dHJpYnV0ZSwgcmV0cmlldmUgaXRz
IHZhbHVlIGFuZCByZXR1cm4gZmFsc2UgaWYgaXRzIHZhbHVlIGlzICJmYWxzZSIuCi0gICAgY29u
c3QgTm9kZSogbm9kZSA9IGZyYW1lKCktPmRvY3VtZW50KCktPmZvY3VzZWROb2RlKCk7CiAgICAg
aWYgKCFub2RlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgY29uc3QgRWxlbWVudCogZm9j
dXNlZEVsZW1lbnQgPSBub2RlLT5pc0VsZW1lbnROb2RlKCkgPyB0b0VsZW1lbnQobm9kZSkgOiBu
b2RlLT5wYXJlbnRFbGVtZW50KCk7CkBAIC0yMTI4LDYgKzIxMjUsMTEgQEAgYm9vbCBFZGl0b3I6
OmlzU3BlbGxDaGVja2luZ0VuYWJsZWRJbkZvY3VzZWROb2RlKCkgY29uc3QKICAgICByZXR1cm4g
Zm9jdXNlZEVsZW1lbnQtPmlzU3BlbGxDaGVja2luZ0VuYWJsZWQoKTsKIH0KIAorYm9vbCBFZGl0
b3I6OmlzU3BlbGxDaGVja2luZ0VuYWJsZWRJbkZvY3VzZWROb2RlKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gaXNTcGVsbENoZWNraW5nRW5hYmxlZEZvcihtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+c3Rh
cnQoKS5ub2RlKCkpOworfQorCiB2b2lkIEVkaXRvcjo6bWFya01pc3NwZWxsaW5ncyhjb25zdCBW
aXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24sIFJlZlB0cjxSYW5nZT4mIGZpcnN0TWlzc3BlbGxp
bmdSYW5nZSkKIHsKICAgICBtYXJrTWlzc3BlbGxpbmdzT3JCYWRHcmFtbWFyKHNlbGVjdGlvbiwg
dHJ1ZSwgZmlyc3RNaXNzcGVsbGluZ1JhbmdlKTsKQEAgLTIxNzAsNyArMjE3Miw3IEBAIHZvaWQg
RWRpdG9yOjptYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKFRleHRDaGVj
a2luZ09wdGlvbnMgdGV4dENoCiAgICAgaWYgKCFlZGl0YWJsZU5vZGUgfHwgIWVkaXRhYmxlTm9k
ZS0+aXNDb250ZW50RWRpdGFibGUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFpc1Nw
ZWxsQ2hlY2tpbmdFbmFibGVkSW5Gb2N1c2VkTm9kZSgpKQorICAgIGlmICghaXNTcGVsbENoZWNr
aW5nRW5hYmxlZEZvcihlZGl0YWJsZU5vZGUpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBF
eHBhbmQgdGhlIHJhbmdlIHRvIGVuY29tcGFzcyBlbnRpcmUgcGFyYWdyYXBocywgc2luY2UgdGV4
dCBjaGVja2luZyBuZWVkcyB0aGF0IG11Y2ggY29udGV4dC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuaCBiL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAppbmRleCAxMTBlM2Y5
YThmMTgzMjUxN2IyZGQ5YTI3NDdiYTU0NmYwZmEwYWRmLi44YmYxZWE1OWY1OWI2NDEyMjUwZmUz
ZmFiNTkzOWZhOTEyNDI5MTRmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgK
KysrIGIvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCkBAIC0yMTksNiArMjE5LDcgQEAgcHVibGlj
OgogICAgIFZlY3RvcjxTdHJpbmc+IGd1ZXNzZXNGb3JVbmdyYW1tYXRpY2FsU2VsZWN0aW9uKCk7
CiAgICAgVmVjdG9yPFN0cmluZz4gZ3Vlc3Nlc0Zvck1pc3NwZWxsZWRPclVuZ3JhbW1hdGljYWxT
ZWxlY3Rpb24oYm9vbCYgbWlzc3BlbGxlZCwgYm9vbCYgdW5ncmFtbWF0aWNhbCk7CiAgICAgYm9v
bCBpc1NwZWxsQ2hlY2tpbmdFbmFibGVkSW5Gb2N1c2VkTm9kZSgpIGNvbnN0OworICAgIGJvb2wg
aXNTcGVsbENoZWNraW5nRW5hYmxlZEZvcihOb2RlKikgY29uc3Q7CiAgICAgdm9pZCBtYXJrTWlz
c3BlbGxpbmdzQWZ0ZXJUeXBpbmdUb1Bvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpOwog
ICAgIHZvaWQgbWFya01pc3NwZWxsaW5ncyhjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiwgUmVmUHRy
PFJhbmdlPiYgZmlyc3RNaXNzcGVsbGluZ1JhbmdlKTsKICAgICB2b2lkIG1hcmtCYWRHcmFtbWFy
KGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0v
Q29udGV4dE1lbnUuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZXh0TWVudS5jcHAKaW5kZXgg
ZWNkZjIzMDQ4ODY4NzZmMGY1ZWU0ZmQ3NWU4OWI0ZTc5MTc2ZWRlNi4uOTNjZGZkZjlhYzg3NTg0
NmEwNWM2ZmE4ZWFkZTJhYzk3NjFjNGFjNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9D
b250ZXh0TWVudS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZXh0TWVudS5jcHAKQEAg
LTQyOSw3ICs0MjksNyBAQCB2b2lkIENvbnRleHRNZW51Ojpwb3B1bGF0ZSgpCiAgICAgfSBlbHNl
IHsgLy8gTWFrZSBhbiBlZGl0aW5nIGNvbnRleHQgbWVudQogICAgICAgICBTZWxlY3Rpb25Db250
cm9sbGVyKiBzZWxlY3Rpb24gPSBmcmFtZS0+c2VsZWN0aW9uKCk7CiAgICAgICAgIGJvb2wgaW5Q
YXNzd29yZEZpZWxkID0gc2VsZWN0aW9uLT5pc0luUGFzc3dvcmRGaWVsZCgpOwotICAgICAgICBi
b29sIHNwZWxsQ2hlY2tpbmdFbmFibGVkID0gZnJhbWUtPmVkaXRvcigpLT5pc1NwZWxsQ2hlY2tp
bmdFbmFibGVkSW5Gb2N1c2VkTm9kZSgpOworICAgICAgICBib29sIHNwZWxsQ2hlY2tpbmdFbmFi
bGVkID0gZnJhbWUtPmVkaXRvcigpLT5pc1NwZWxsQ2hlY2tpbmdFbmFibGVkRm9yKG5vZGUpOwog
ICAgICAgICAKICAgICAgICAgaWYgKCFpblBhc3N3b3JkRmllbGQgJiYgc3BlbGxDaGVja2luZ0Vu
YWJsZWQpIHsKICAgICAgICAgICAgIC8vIENvbnNpZGVyIGFkZGluZyBzcGVsbGluZy1yZWxhdGVk
IG9yIGdyYW1tYXItcmVsYXRlZCBjb250ZXh0IG1lbnUgaXRlbXMgKG5ldmVyIGJvdGgsIHNpbmNl
IGEgc2luZ2xlIHNlbGVjdGVkIHJhbmdlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9U
ZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dENvbnRy
b2xJbm5lckVsZW1lbnRzLmNwcAppbmRleCBmOTY0MWY0Y2Y2OGJhYzYxMDNmM2JjYTFkYTE4NGEw
ZTQzYTU3YmRkLi5kOWExYTczMjQxYTMxOGEwNWQ3NjdjOGY5MmIzNTNiMTExNWEzNWE3IDEwMDY0
NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCisr
KyBiL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKQEAgLTEy
NCw2ICsxMjQsMTEgQEAgdm9pZCBUZXh0Q29udHJvbElubmVyRWxlbWVudDo6YXR0YWNoSW5uZXJF
bGVtZW50KE5vZGUqIHBhcmVudCwgUGFzc1JlZlB0cjxSZW5kZXIKICAgICAgICAgcGFyZW50LT5y
ZW5kZXJlcigpLT5hZGRDaGlsZChyZW5kZXJlcik7CiB9CiAKK2Jvb2wgVGV4dENvbnRyb2xJbm5l
ckVsZW1lbnQ6OmlzU3BlbGxDaGVja2luZ0VuYWJsZWQoKSBjb25zdAoreworICAgIHJldHVybiBt
X3NoYWRvd1BhcmVudCAmJiBtX3NoYWRvd1BhcmVudC0+aXNTcGVsbENoZWNraW5nRW5hYmxlZCgp
OworfQorCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIGlubGluZSBUZXh0Q29u
dHJvbElubmVyVGV4dEVsZW1lbnQ6OlRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudChEb2N1bWVu
dCogZG9jdW1lbnQsIEhUTUxFbGVtZW50KiBzaGFkb3dQYXJlbnQpCmRpZmYgLS1naXQgYS9XZWJD
b3JlL3JlbmRlcmluZy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuaCBiL1dlYkNvcmUvcmVuZGVy
aW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oCmluZGV4IDQ2YzFjOGU0YWQyMDg4ODJkZmZj
NzYyYzRhZWQzNDJiZWQ1NTZmNjQuLjYxYzlkYmFjY2NlYWFmNWVjNzk0NzNkNDg1MDE1NDk1MTc5
ZTdmYTMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRDb250cm9sSW5uZXJFbGVt
ZW50cy5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5o
CkBAIC00OSw2ICs0OSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlzTW91c2VGb2N1
c2FibGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfSAKICAgICB2aXJ0dWFsIGJvb2wgaXNTaGFk
b3dOb2RlKCkgY29uc3QgeyByZXR1cm4gbV9zaGFkb3dQYXJlbnQ7IH0KICAgICB2aXJ0dWFsIENv
bnRhaW5lck5vZGUqIHNoYWRvd1BhcmVudE5vZGUoKSB7IHJldHVybiBtX3NoYWRvd1BhcmVudDsg
fQorICAgIHZpcnR1YWwgYm9vbCBpc1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkgY29uc3Q7CiAgICAg
dm9pZCBzZXRTaGFkb3dQYXJlbnROb2RlKEhUTUxFbGVtZW50KiBzaGFkb3dQYXJlbnQpIHsgbV9z
aGFkb3dQYXJlbnQgPSBzaGFkb3dQYXJlbnQ7IH0KIAogICAgIEhUTUxFbGVtZW50KiBtX3NoYWRv
d1BhcmVudDsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72629</attachid>
            <date>2010-11-01 22:15:08 -0700</date>
            <delta_ts>2010-11-01 22:19:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-48418-20101102141506.patch</filename>
            <type>text/plain</type>
            <size>12818</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3YmVjMzBlODIxNjRkYTNmNjczNWRhNDgzODVmM2M2NjFiNGZmZWM3Li45NDJiOWFk
OTdmOWU4YmJiOGJlMjYxNWZhMmM5Y2UxOWRjODRmNjc0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTAtMTEtMDEgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQHNwZWxsY2hlY2sgYXR0
cmlidXRlIGF0IHRoZSBjaGlsZCBvZiBjb250ZW50RWRpdGFibGUgbm9kZSBpcyBpZ25vcmVkLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDg0MTgKKwor
ICAgICAgICAqIGVkaXRpbmcvc3BlbGxpbmcvc2NyaXB0LXRlc3RzL3NwZWxsaW5nLWF0dHJpYnV0
ZS1hdC1jaGlsZC5qczogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy9zcGVsbGlu
Zy1hdHRyaWJ1dGUtYXQtY2hpbGQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0
aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWF0dHJpYnV0ZS1hdC1jaGlsZC5odG1sOiBBZGRlZC4KKwog
MjAxMC0xMS0wMSAgUm9sYW5kIFN0ZWluZXIgIDxyb2xhbmRzdGVpbmVyQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBVbnJldmlld2VkOiBhZGQgZmFpbGluZyBTVkcgdGVzdHMgdG8gQ2hyb21pdW0g
dGVzdF9leHBlY3RhdGlvbnMudHh0LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9z
cGVsbGluZy9zY3JpcHQtdGVzdHMvc3BlbGxpbmctYXR0cmlidXRlLWF0LWNoaWxkLmpzIGIvTGF5
b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zY3JpcHQtdGVzdHMvc3BlbGxpbmctYXR0cmlidXRl
LWF0LWNoaWxkLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAwMjg2NzJmMGVhOWVjMWMxNWExMzFkMDJkODI2MThj
ODI3YjkzMDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5n
L3NjcmlwdC10ZXN0cy9zcGVsbGluZy1hdHRyaWJ1dGUtYXQtY2hpbGQuanMKQEAgLTAsMCArMSwy
OSBAQAorZGVzY3JpcHRpb24oJ1Rlc3RzIGlmIHRoZSBzcGVsbGNoZWNrZXIgYmVoYXZpb3IgY2hh
bmdlIGFmdGVyIHRoZSBzcGVsbGNoZWNrIGF0dHJpYnV0ZSBjaGFuZ2VkIGJ5IHRoZSBzY3JpcHQu
Jyk7CisKK3ZhciByb290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Citkb2N1bWVu
dC5ib2R5LmFwcGVuZENoaWxkKHJvb3QpOworCitmdW5jdGlvbiBjaGlsZEhhc1NwZWxsaW5nTWFy
a2VyKG1hcmt1cCkKK3sKKyAgICByb290LmlubmVySFRNTCA9IG1hcmt1cDsKKyAgICB2YXIgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjaGlsZCIpLmZpcnN0Q2hpbGQ7CisgICAgZG9j
dW1lbnQuZ2V0U2VsZWN0aW9uKCkuc2V0UG9zaXRpb24odGV4dCwgMSk7CisgICAgZG9jdW1lbnQu
ZXhlY0NvbW1hbmQoIkluc2VydFRleHQiLCBmYWxzZSwgJ3onKTsKKyAgICBkb2N1bWVudC5leGVj
Q29tbWFuZCgiSW5zZXJ0VGV4dCIsIGZhbHNlLCAneicpOworICAgIGRvY3VtZW50LmV4ZWNDb21t
YW5kKCJJbnNlcnRUZXh0IiwgZmFsc2UsICcgJyk7CisgICAgdmFyIG1hcmtlZCA9IGxheW91dFRl
c3RDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyKDEsIDIpOworICAgIHJvb3QuaW5uZXJIVE1M
ID0gIiI7CisgICAgcmV0dXJuIG1hcmtlZDsKK30KKworc2hvdWxkQmVGYWxzZSgiY2hpbGRIYXNT
cGVsbGluZ01hcmtlcihcIjxkaXYgY29udGVudEVkaXRhYmxlPkZvbyA8c3BhbiBzcGVsbGNoZWNr
PSdmYWxzZScgaWQ9J2NoaWxkJz5bXTwvc3Bhbj4gQmF6PC9kaXY+XCIpIik7CitzaG91bGRCZVRy
dWUoImNoaWxkSGFzU3BlbGxpbmdNYXJrZXIoXCI8ZGl2IGNvbnRlbnRFZGl0YWJsZT5Gb28gPHNw
YW4gaWQ9J2NoaWxkJz5bXTwvc3Bhbj4gQmF6PC9kaXY+XCIpIik7CitzaG91bGRCZVRydWUoImNo
aWxkSGFzU3BlbGxpbmdNYXJrZXIoXCI8ZGl2IGNvbnRlbnRFZGl0YWJsZT5Gb28gPHNwYW4gc3Bl
bGxjaGVjaz0ndHJ1ZScgaWQ9J2NoaWxkJz5bXTwvc3Bhbj4gQmF6PC9kaXY+XCIpIik7CitzaG91
bGRCZUZhbHNlKCJjaGlsZEhhc1NwZWxsaW5nTWFya2VyKFwiPGRpdiBzcGVsbGNoZWNrPSdmYWxz
ZScgY29udGVudEVkaXRhYmxlPkZvbyA8c3BhbiBzcGVsbGNoZWNrPSdmYWxzZScgaWQ9J2NoaWxk
Jz5bXTwvc3Bhbj4gQmF6PC9kaXY+XCIpIik7CitzaG91bGRCZUZhbHNlKCJjaGlsZEhhc1NwZWxs
aW5nTWFya2VyKFwiPGRpdiBzcGVsbGNoZWNrPSdmYWxzZScgY29udGVudEVkaXRhYmxlPkZvbyA8
c3BhbiBpZD0nY2hpbGQnPltdPC9zcGFuPiBCYXo8L2Rpdj5cIikiKTsKK3Nob3VsZEJlVHJ1ZSgi
Y2hpbGRIYXNTcGVsbGluZ01hcmtlcihcIjxkaXYgc3BlbGxjaGVjaz0nZmFsc2UnIGNvbnRlbnRF
ZGl0YWJsZT5Gb28gPHNwYW4gc3BlbGxjaGVjaz0ndHJ1ZScgaWQ9J2NoaWxkJz5bXTwvc3Bhbj4g
QmF6PC9kaXY+XCIpIik7CitzaG91bGRCZUZhbHNlKCJjaGlsZEhhc1NwZWxsaW5nTWFya2VyKFwi
PGRpdiBzcGVsbGNoZWNrPSd0cnVlJyBjb250ZW50RWRpdGFibGU+Rm9vIDxzcGFuIHNwZWxsY2hl
Y2s9J2ZhbHNlJyBpZD0nY2hpbGQnPltdPC9zcGFuPiBCYXo8L2Rpdj5cIikiKTsKK3Nob3VsZEJl
VHJ1ZSgiY2hpbGRIYXNTcGVsbGluZ01hcmtlcihcIjxkaXYgc3BlbGxjaGVjaz0ndHJ1ZScgY29u
dGVudEVkaXRhYmxlPkZvbyA8c3BhbiBpZD0nY2hpbGQnPltdPC9zcGFuPiBCYXo8L2Rpdj5cIiki
KTsKK3Nob3VsZEJlVHJ1ZSgiY2hpbGRIYXNTcGVsbGluZ01hcmtlcihcIjxkaXYgc3BlbGxjaGVj
az0ndHJ1ZScgY29udGVudEVkaXRhYmxlPkZvbyA8c3BhbiBzcGVsbGNoZWNrPSd0cnVlJyBpZD0n
Y2hpbGQnPltdPC9zcGFuPiBCYXo8L2Rpdj5cIikiKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNl
ZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxs
aW5nLWF0dHJpYnV0ZS1hdC1jaGlsZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5n
L3NwZWxsaW5nL3NwZWxsaW5nLWF0dHJpYnV0ZS1hdC1jaGlsZC1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNTRiNGVmOGJhM2ZlY2EyNmMwOGZhZjEyODJkOGViYTNkMzY4NzQwZAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctYXR0cmlidXRl
LWF0LWNoaWxkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE4IEBACitUZXN0cyBpZiB0aGUgc3Bl
bGxjaGVja2VyIGJlaGF2aW9yIGNoYW5nZSBhZnRlciB0aGUgc3BlbGxjaGVjayBhdHRyaWJ1dGUg
Y2hhbmdlZCBieSB0aGUgc2NyaXB0LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwor
UEFTUyBjaGlsZEhhc1NwZWxsaW5nTWFya2VyKCI8ZGl2IGNvbnRlbnRFZGl0YWJsZT5Gb28gPHNw
YW4gc3BlbGxjaGVjaz0nZmFsc2UnIGlkPSdjaGlsZCc+W108L3NwYW4+IEJhejwvZGl2PiIpIGlz
IGZhbHNlCitQQVNTIGNoaWxkSGFzU3BlbGxpbmdNYXJrZXIoIjxkaXYgY29udGVudEVkaXRhYmxl
PkZvbyA8c3BhbiBpZD0nY2hpbGQnPltdPC9zcGFuPiBCYXo8L2Rpdj4iKSBpcyB0cnVlCitQQVNT
IGNoaWxkSGFzU3BlbGxpbmdNYXJrZXIoIjxkaXYgY29udGVudEVkaXRhYmxlPkZvbyA8c3BhbiBz
cGVsbGNoZWNrPSd0cnVlJyBpZD0nY2hpbGQnPltdPC9zcGFuPiBCYXo8L2Rpdj4iKSBpcyB0cnVl
CitQQVNTIGNoaWxkSGFzU3BlbGxpbmdNYXJrZXIoIjxkaXYgc3BlbGxjaGVjaz0nZmFsc2UnIGNv
bnRlbnRFZGl0YWJsZT5Gb28gPHNwYW4gc3BlbGxjaGVjaz0nZmFsc2UnIGlkPSdjaGlsZCc+W108
L3NwYW4+IEJhejwvZGl2PiIpIGlzIGZhbHNlCitQQVNTIGNoaWxkSGFzU3BlbGxpbmdNYXJrZXIo
IjxkaXYgc3BlbGxjaGVjaz0nZmFsc2UnIGNvbnRlbnRFZGl0YWJsZT5Gb28gPHNwYW4gaWQ9J2No
aWxkJz5bXTwvc3Bhbj4gQmF6PC9kaXY+IikgaXMgZmFsc2UKK1BBU1MgY2hpbGRIYXNTcGVsbGlu
Z01hcmtlcigiPGRpdiBzcGVsbGNoZWNrPSdmYWxzZScgY29udGVudEVkaXRhYmxlPkZvbyA8c3Bh
biBzcGVsbGNoZWNrPSd0cnVlJyBpZD0nY2hpbGQnPltdPC9zcGFuPiBCYXo8L2Rpdj4iKSBpcyB0
cnVlCitQQVNTIGNoaWxkSGFzU3BlbGxpbmdNYXJrZXIoIjxkaXYgc3BlbGxjaGVjaz0ndHJ1ZScg
Y29udGVudEVkaXRhYmxlPkZvbyA8c3BhbiBzcGVsbGNoZWNrPSdmYWxzZScgaWQ9J2NoaWxkJz5b
XTwvc3Bhbj4gQmF6PC9kaXY+IikgaXMgZmFsc2UKK1BBU1MgY2hpbGRIYXNTcGVsbGluZ01hcmtl
cigiPGRpdiBzcGVsbGNoZWNrPSd0cnVlJyBjb250ZW50RWRpdGFibGU+Rm9vIDxzcGFuIGlkPSdj
aGlsZCc+W108L3NwYW4+IEJhejwvZGl2PiIpIGlzIHRydWUKK1BBU1MgY2hpbGRIYXNTcGVsbGlu
Z01hcmtlcigiPGRpdiBzcGVsbGNoZWNrPSd0cnVlJyBjb250ZW50RWRpdGFibGU+Rm9vIDxzcGFu
IHNwZWxsY2hlY2s9J3RydWUnIGlkPSdjaGlsZCc+W108L3NwYW4+IEJhejwvZGl2PiIpIGlzIHRy
dWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWF0dHJpYnV0
ZS1hdC1jaGlsZC5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1h
dHRyaWJ1dGUtYXQtY2hpbGQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ODk1N2E5MTUxM2I3Y2U0ZDM4NWQw
YWFhOTdkM2FiY2YyNGY1NWUwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9zcGVsbGluZy9zcGVsbGluZy1hdHRyaWJ1dGUtYXQtY2hpbGQuaHRtbApAQCAtMCwwICsxLDE0
IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRt
bD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNl
cy9qcy10ZXN0LXNlbGVjdGlvbi1zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNj
cmlwdCBzcmM9InNjcmlwdC10ZXN0cy9zcGVsbGluZy1hdHRyaWJ1dGUtYXQtY2hpbGQuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9XZWJDb3JlL0No
YW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDcwMTZlZDlkNmNlYmNlY2U2MjgyNzE2
ZTlkZDMzMWViM2E2NTFiOWMuLjQzYWZhNTZjMTM0MmJlYTA0OTE0YmQyODU5YjM5OTdiMTRjMzBl
NmUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMzAgQEAKKzIwMTAtMTEtMDEgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdv
b2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQHNwZWxsY2hlY2sgYXR0cmlidXRlIGF0IHRoZSBjaGlsZCBvZiBjb250ZW50RWRpdGFibGUg
bm9kZSBpcyBpZ25vcmVkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NDg0MTgKKworICAgICAgICBDaGFuZ2VkIHRvIGNoZWNrIHNwZWxsY2hlY2sgYXZh
aWxhYmlsaXR5IGFnYWluc3QgYSBub2RlIHVuZGVyIHRoZQorICAgICAgICBzZWxlY3Rpb24gKGNh
cmV0KSBpbnN0ZWFkIG9mIHRoZSBmb2N1cy4gRm9yIHNoYWRvdyBlbGVtZW50cywgdGhlCisgICAg
ICAgIGNoZWNrIG5vdyByZWZlcnMgaXRzIGhvc3Qgbm9kZS4gIE5vdGUgdGhhdCB0aGUgb3JpZ2lu
YWwgY29kZSBkaWRuJ3QKKyAgICAgICAgY2FyZSBzaGFkb3dzIGJlY2F1c2UgZm9jdXMgaXMgbmV2
ZXIgc2V0IG9uIHRoZW0uCisgICAgICAgIAorICAgICAgICBUZXN0OiBlZGl0aW5nL3NwZWxsaW5n
L3NwZWxsaW5nLWF0dHJpYnV0ZS1hdC1jaGlsZC5odG1sCisKKyAgICAgICAgKiBkb20vRWxlbWVu
dC5oOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRvcjo6bWFya01pc3NwZWxsaW5nc09yQmFkR3JhbW1hcik6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0b3I6OmlzU3BlbGxDaGVja2luZ0VuYWJsZWRGb3IpOiAKKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRvcjo6aXNTcGVsbENoZWNraW5nRW5hYmxlZEluRm9jdXNlZE5vZGUpOiBOb3cganVzdCBjYWxs
aW5nIGlzU3BlbGxDaGVja2luZ0VuYWJsZWRGb3IoKQorICAgICAgICAoV2ViQ29yZTo6RWRpdG9y
OjptYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKToKKyAgICAgICAgKiBl
ZGl0aW5nL0VkaXRvci5oOgorICAgICAgICAqIHBsYXRmb3JtL0NvbnRleHRNZW51LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51Ojpwb3B1bGF0ZSk6CisgICAgICAgICogcmVuZGVy
aW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
Q29udHJvbElubmVyRWxlbWVudDo6aXNTcGVsbENoZWNraW5nRW5hYmxlZCk6IEFkZGVkLgorICAg
ICAgICAqIHJlbmRlcmluZy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuaDoKKwogMjAxMC0xMC0z
MSAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBUaW1vdGh5IEhhdGNoZXIuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9FbGVtZW50
LmggYi9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXggNjc4ODdjY2FlMjllMDNlYjM1YzYwZWM2
YzdjNmFlNWNjZTlkY2ZhNy4uMWE4NTY1MDJlYzFhZTk0NzZkZjE5ZTM3OTliMDY4Yzk5ZWFlZWQ0
YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBiL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuaApAQCAtMzI2LDcgKzMyNiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHdlYmtpdFJlcXVl
c3RGdWxsU2NyZWVuKHVuc2lnbmVkIHNob3J0IGZsYWdzKTsKICNlbmRpZgogCi0gICAgYm9vbCBp
c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGlzU3BlbGxD
aGVja2luZ0VuYWJsZWQoKSBjb25zdDsKIAogcHJvdGVjdGVkOgogICAgIEVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBDb25zdHJ1Y3Rpb25U
eXBlIHR5cGUpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDhhNGVmNTk5NDhlYTc0Y2U4MTc4NjEyZjBmOWMw
NjI5YTM4NGE1M2QuLjIyY2I3YjE4ZGVjN2EwYTQyNDdhYTk0OGY3NWIyOTM4NzNiOWU5ZjggMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3IuY3BwCkBAIC0yMDk1LDcgKzIwOTUsNyBAQCB2b2lkIEVkaXRvcjo6bWFya01pc3Nw
ZWxsaW5nc09yQmFkR3JhbW1hcihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24sIGJv
bwogICAgIGlmICghZWRpdGFibGVOb2RlIHx8ICFlZGl0YWJsZU5vZGUtPmlzQ29udGVudEVkaXRh
YmxlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghaXNTcGVsbENoZWNraW5nRW5hYmxl
ZEluRm9jdXNlZE5vZGUoKSkKKyAgICBpZiAoIWlzU3BlbGxDaGVja2luZ0VuYWJsZWRGb3IoZWRp
dGFibGVOb2RlKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gR2V0IHRoZSBzcGVsbCBjaGVj
a2VyIGlmIGl0IGlzIGF2YWlsYWJsZQpAQCAtMjExNSwxMSArMjExNSw4IEBAIHZvaWQgRWRpdG9y
OjptYXJrTWlzc3BlbGxpbmdzT3JCYWRHcmFtbWFyKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNl
bGVjdGlvbiwgYm9vCiAgICAgfSAgICAKIH0KIAotYm9vbCBFZGl0b3I6OmlzU3BlbGxDaGVja2lu
Z0VuYWJsZWRJbkZvY3VzZWROb2RlKCkgY29uc3QKK2Jvb2wgRWRpdG9yOjppc1NwZWxsQ2hlY2tp
bmdFbmFibGVkRm9yKE5vZGUqIG5vZGUpIGNvbnN0CiB7Ci0gICAgLy8gQXNjZW5kIHRoZSBET00g
dHJlZSB0byBmaW5kIGEgInNwZWxsY2hlY2siIGF0dHJpYnV0ZS4KLSAgICAvLyBXaGVuIHdlIGZp
bmQgYSAic3BlbGxjaGVjayIgYXR0cmlidXRlLCByZXRyaWV2ZSBpdHMgdmFsdWUgYW5kIHJldHVy
biBmYWxzZSBpZiBpdHMgdmFsdWUgaXMgImZhbHNlIi4KLSAgICBjb25zdCBOb2RlKiBub2RlID0g
ZnJhbWUoKS0+ZG9jdW1lbnQoKS0+Zm9jdXNlZE5vZGUoKTsKICAgICBpZiAoIW5vZGUpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICBjb25zdCBFbGVtZW50KiBmb2N1c2VkRWxlbWVudCA9IG5v
ZGUtPmlzRWxlbWVudE5vZGUoKSA/IHRvRWxlbWVudChub2RlKSA6IG5vZGUtPnBhcmVudEVsZW1l
bnQoKTsKQEAgLTIxMjgsNiArMjEyNSwxMSBAQCBib29sIEVkaXRvcjo6aXNTcGVsbENoZWNraW5n
RW5hYmxlZEluRm9jdXNlZE5vZGUoKSBjb25zdAogICAgIHJldHVybiBmb2N1c2VkRWxlbWVudC0+
aXNTcGVsbENoZWNraW5nRW5hYmxlZCgpOwogfQogCitib29sIEVkaXRvcjo6aXNTcGVsbENoZWNr
aW5nRW5hYmxlZEluRm9jdXNlZE5vZGUoKSBjb25zdAoreworICAgIHJldHVybiBpc1NwZWxsQ2hl
Y2tpbmdFbmFibGVkRm9yKG1fZnJhbWUtPnNlbGVjdGlvbigpLT5zdGFydCgpLm5vZGUoKSk7Cit9
CisKIHZvaWQgRWRpdG9yOjptYXJrTWlzc3BlbGxpbmdzKGNvbnN0IFZpc2libGVTZWxlY3Rpb24m
IHNlbGVjdGlvbiwgUmVmUHRyPFJhbmdlPiYgZmlyc3RNaXNzcGVsbGluZ1JhbmdlKQogewogICAg
IG1hcmtNaXNzcGVsbGluZ3NPckJhZEdyYW1tYXIoc2VsZWN0aW9uLCB0cnVlLCBmaXJzdE1pc3Nw
ZWxsaW5nUmFuZ2UpOwpAQCAtMjE3MCw3ICsyMTcyLDcgQEAgdm9pZCBFZGl0b3I6Om1hcmtBbGxN
aXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMoVGV4dENoZWNraW5nT3B0aW9ucyB0ZXh0
Q2gKICAgICBpZiAoIWVkaXRhYmxlTm9kZSB8fCAhZWRpdGFibGVOb2RlLT5pc0NvbnRlbnRFZGl0
YWJsZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIWlzU3BlbGxDaGVja2luZ0VuYWJs
ZWRJbkZvY3VzZWROb2RlKCkpCisgICAgaWYgKCFpc1NwZWxsQ2hlY2tpbmdFbmFibGVkRm9yKGVk
aXRhYmxlTm9kZSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIEV4cGFuZCB0aGUgcmFuZ2Ug
dG8gZW5jb21wYXNzIGVudGlyZSBwYXJhZ3JhcGhzLCBzaW5jZSB0ZXh0IGNoZWNraW5nIG5lZWRz
IHRoYXQgbXVjaCBjb250ZXh0LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5o
IGIvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCmluZGV4IDExMGUzZjlhOGYxODMyNTE3YjJkZDlh
Mjc0N2JhNTQ2ZjBmYTBhZGYuLjhiZjFlYTU5ZjU5YjY0MTIyNTBmZTNmYWI1OTM5ZmE5MTI0Mjkx
NGYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAorKysgYi9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmgKQEAgLTIxOSw2ICsyMTksNyBAQCBwdWJsaWM6CiAgICAgVmVjdG9yPFN0
cmluZz4gZ3Vlc3Nlc0ZvclVuZ3JhbW1hdGljYWxTZWxlY3Rpb24oKTsKICAgICBWZWN0b3I8U3Ry
aW5nPiBndWVzc2VzRm9yTWlzc3BlbGxlZE9yVW5ncmFtbWF0aWNhbFNlbGVjdGlvbihib29sJiBt
aXNzcGVsbGVkLCBib29sJiB1bmdyYW1tYXRpY2FsKTsKICAgICBib29sIGlzU3BlbGxDaGVja2lu
Z0VuYWJsZWRJbkZvY3VzZWROb2RlKCkgY29uc3Q7CisgICAgYm9vbCBpc1NwZWxsQ2hlY2tpbmdF
bmFibGVkRm9yKE5vZGUqKSBjb25zdDsKICAgICB2b2lkIG1hcmtNaXNzcGVsbGluZ3NBZnRlclR5
cGluZ1RvUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJik7CiAgICAgdm9pZCBtYXJrTWlz
c3BlbGxpbmdzKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mLCBSZWZQdHI8UmFuZ2U+JiBmaXJzdE1p
c3NwZWxsaW5nUmFuZ2UpOwogICAgIHZvaWQgbWFya0JhZEdyYW1tYXIoY29uc3QgVmlzaWJsZVNl
bGVjdGlvbiYpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZXh0TWVudS5jcHAg
Yi9XZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRNZW51LmNwcAppbmRleCBlY2RmMjMwNDg4Njg3NmYw
ZjVlZTRmZDc1ZTg5YjRlNzkxNzZlZGU2Li45M2NkZmRmOWFjODc1ODQ2YTA1YzZmYThlYWRlMmFj
OTc2MWM0YWM3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRNZW51LmNwcAor
KysgYi9XZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRNZW51LmNwcApAQCAtNDI5LDcgKzQyOSw3IEBA
IHZvaWQgQ29udGV4dE1lbnU6OnBvcHVsYXRlKCkKICAgICB9IGVsc2UgeyAvLyBNYWtlIGFuIGVk
aXRpbmcgY29udGV4dCBtZW51CiAgICAgICAgIFNlbGVjdGlvbkNvbnRyb2xsZXIqIHNlbGVjdGlv
biA9IGZyYW1lLT5zZWxlY3Rpb24oKTsKICAgICAgICAgYm9vbCBpblBhc3N3b3JkRmllbGQgPSBz
ZWxlY3Rpb24tPmlzSW5QYXNzd29yZEZpZWxkKCk7Ci0gICAgICAgIGJvb2wgc3BlbGxDaGVja2lu
Z0VuYWJsZWQgPSBmcmFtZS0+ZWRpdG9yKCktPmlzU3BlbGxDaGVja2luZ0VuYWJsZWRJbkZvY3Vz
ZWROb2RlKCk7CisgICAgICAgIGJvb2wgc3BlbGxDaGVja2luZ0VuYWJsZWQgPSBmcmFtZS0+ZWRp
dG9yKCktPmlzU3BlbGxDaGVja2luZ0VuYWJsZWRGb3Iobm9kZSk7CiAgICAgICAgIAogICAgICAg
ICBpZiAoIWluUGFzc3dvcmRGaWVsZCAmJiBzcGVsbENoZWNraW5nRW5hYmxlZCkgewogICAgICAg
ICAgICAgLy8gQ29uc2lkZXIgYWRkaW5nIHNwZWxsaW5nLXJlbGF0ZWQgb3IgZ3JhbW1hci1yZWxh
dGVkIGNvbnRleHQgbWVudSBpdGVtcyAobmV2ZXIgYm90aCwgc2luY2UgYSBzaW5nbGUgc2VsZWN0
ZWQgcmFuZ2UKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRDb250cm9sSW5uZXJF
bGVtZW50cy5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMu
Y3BwCmluZGV4IGY5NjQxZjRjZjY4YmFjNjEwM2YzYmNhMWRhMTg0YTBlNDNhNTdiZGQuLmQ5YTFh
NzMyNDFhMzE4YTA1ZDc2N2M4ZjkyYjM1M2IxMTE1YTM1YTcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cmVuZGVyaW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKKysrIGIvV2ViQ29yZS9yZW5k
ZXJpbmcvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcApAQCAtMTI0LDYgKzEyNCwxMSBAQCB2
b2lkIFRleHRDb250cm9sSW5uZXJFbGVtZW50OjphdHRhY2hJbm5lckVsZW1lbnQoTm9kZSogcGFy
ZW50LCBQYXNzUmVmUHRyPFJlbmRlcgogICAgICAgICBwYXJlbnQtPnJlbmRlcmVyKCktPmFkZENo
aWxkKHJlbmRlcmVyKTsKIH0KIAorYm9vbCBUZXh0Q29udHJvbElubmVyRWxlbWVudDo6aXNTcGVs
bENoZWNraW5nRW5hYmxlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2hhZG93UGFyZW50ICYm
IG1fc2hhZG93UGFyZW50LT5pc1NwZWxsQ2hlY2tpbmdFbmFibGVkKCk7Cit9CisKIC8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogaW5saW5lIFRleHRDb250cm9sSW5uZXJUZXh0RWxl
bWVudDo6VGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCwgSFRN
TEVsZW1lbnQqIHNoYWRvd1BhcmVudCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1Rl
eHRDb250cm9sSW5uZXJFbGVtZW50cy5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dENvbnRyb2xJ
bm5lckVsZW1lbnRzLmgKaW5kZXggNDZjMWM4ZTRhZDIwODg4MmRmZmM3NjJjNGFlZDM0MmJlZDU1
NmY2NC4uNjFjOWRiYWNjY2VhYWY1ZWM3OTQ3M2Q0ODUwMTU0OTUxNzllN2ZhMyAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgKKysrIGIvV2Vi
Q29yZS9yZW5kZXJpbmcvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgKQEAgLTQ5LDYgKzQ5LDcg
QEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNNb3VzZUZvY3VzYWJsZSgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9IAogICAgIHZpcnR1YWwgYm9vbCBpc1NoYWRvd05vZGUoKSBjb25zdCB7
IHJldHVybiBtX3NoYWRvd1BhcmVudDsgfQogICAgIHZpcnR1YWwgQ29udGFpbmVyTm9kZSogc2hh
ZG93UGFyZW50Tm9kZSgpIHsgcmV0dXJuIG1fc2hhZG93UGFyZW50OyB9CisgICAgdmlydHVhbCBi
b29sIGlzU3BlbGxDaGVja2luZ0VuYWJsZWQoKSBjb25zdDsKICAgICB2b2lkIHNldFNoYWRvd1Bh
cmVudE5vZGUoSFRNTEVsZW1lbnQqIHNoYWRvd1BhcmVudCkgeyBtX3NoYWRvd1BhcmVudCA9IHNo
YWRvd1BhcmVudDsgfQogCiAgICAgSFRNTEVsZW1lbnQqIG1fc2hhZG93UGFyZW50Owo=
</data>
<flag name="review"
          id="62921"
          type_id="1"
          status="+"
          setter="tkent"
    />
          </attachment>
      

    </bug>

</bugzilla>