<?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>66241</bug_id>
          
          <creation_ts>2011-08-15 11:16:19 -0700</creation_ts>
          <short_desc>Crash when inserting text with a trailing newline into a textarea via JS</short_desc>
          <delta_ts>2011-08-31 23:10:05 -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>Mac (Intel)</rep_platform>
          <op_sys>OS X 10.6</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>HasReduction</keywords>
          <priority>P1</priority>
          <bug_severity>Major</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>67141</dependson>
    
    <dependson>67152</dependson>
    
    <dependson>67320</dependson>
          <blocked>67360</blocked>
    
    <blocked>67361</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Shajith">demerzel</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dominicc</cc>
    
    <cc>enrica</cc>
    
    <cc>hyatt</cc>
    
    <cc>jamesr</cc>
    
    <cc>jonlee</cc>
    
    <cc>keishi</cc>
    
    <cc>leviw</cc>
    
    <cc>mitz</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
    
    <cc>shinyak</cc>
    
    <cc>sullivan</cc>
    
    <cc>tkent</cc>
    
    <cc>wcarss</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>451160</commentid>
    <comment_count>0</comment_count>
    <who name="Shajith">demerzel</who>
    <bug_when>2011-08-15 11:16:19 -0700</bug_when>
    <thetext>Steps to reproduce:


1. Open an HTML file that contains the following (also attached as foo.html)
&lt;html&gt;
&lt;body onload=&quot;document.getElementById(&apos;comment_value&apos;).innerHTML=&apos;a\n&apos;;&quot;&gt;
&lt;style&gt;
#container + * { clear: both; }
&lt;/style&gt;
&lt;p id=&quot;container&quot;&gt;
&lt;textarea id=&quot;comment_value&quot;&gt;&lt;/textarea&gt;
&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;


2. Click into the textarea, move cursor to the end of the &apos;a&apos; in it.

3. Hit the Return key.

What is the expected result?

Cursor should go to the next line, inserting a new line into the text area.

What happens instead?

The page reloads, and I see a new crash report in Console.app. Attached.

Notes:
- Removing the &quot;#container + *&quot; CSS rule prevents the crash.
- I saw this crash first in the latest Chrome, and reported it on their bugtracker, here: 
   http://code.google.com/p/chromium/issues/detail?id=92757</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451162</commentid>
    <comment_count>1</comment_count>
      <attachid>103930</attachid>
    <who name="Shajith">demerzel</who>
    <bug_when>2011-08-15 11:16:54 -0700</bug_when>
    <thetext>Created attachment 103930
Test markup to reproduce the crash</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451163</commentid>
    <comment_count>2</comment_count>
      <attachid>103931</attachid>
    <who name="Shajith">demerzel</who>
    <bug_when>2011-08-15 11:18:06 -0700</bug_when>
    <thetext>Created attachment 103931
Crash file</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451426</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-15 17:51:32 -0700</bug_when>
    <thetext>The problem is that FrameSelection::textWillBeReplaced is triggering layout and renewing the shadow DOM when we split the text node in line 141 of InsertLineBreakCommand.cpp::doApply in InsertLineBreakCommand.cpp:
    } else if (pos.deprecatedNode()-&gt;isTextNode()) {
        // Split a text node
        Text* textNode = static_cast&lt;Text*&gt;(pos.deprecatedNode());
        splitTextNode(textNode, pos.deprecatedEditingOffset());
        insertNodeBefore(nodeToInsert, textNode);
        Position endingPosition = firstPositionInNode(textNode);

stack trace:
#0	0x102ab3a2a in WebCore::CharacterData::setDataAndUpdate at CharacterData.cpp:177
#1	0x102ab3c90 in WebCore::CharacterData::deleteData at CharacterData.cpp:130
#2	0x103739103 in WebCore::SplitTextNodeCommand::insertText1AndTrimText2 at SplitTextNodeCommand.cpp:104
#3	0x103739502 in WebCore::SplitTextNodeCommand::doApply at SplitTextNodeCommand.cpp:66
#4	0x102d82967 in WebCore::EditCommand::apply at EditCommand.cpp:92
#5	0x102add980 in WebCore::CompositeEditCommand::applyCommandToComposite at CompositeEditCommand.cpp:102
#6	0x102adf83d in WebCore::CompositeEditCommand::splitTextNode at CompositeEditCommand.cpp:279
#7	0x102fc899f in WebCore::InsertLineBreakCommand::doApply at InsertLineBreakCommand.cpp:141
#8	0x102d82967 in WebCore::EditCommand::apply at EditCommand.cpp:92

This is a quite serious design flaw.  On one hand, we have to update selection when CharacterData is modified but on the other hand, we can&apos;t lose the shadow DOM while we&apos;re in the middle of modifying DOM nodes in editing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451427</commentid>
    <comment_count>4</comment_count>
      <attachid>103987</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-15 17:51:53 -0700</bug_when>
    <thetext>Created attachment 103987
demo</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456008</commentid>
    <comment_count>5</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-08-24 01:32:26 -0700</bug_when>
    <thetext>Why is the textNode detached by m_frame-&gt;document()-&gt;updateLayout()?

Why does &quot;#container + * { clear: both; }&quot; affect? It looks to be unrelated to &lt;textarea&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456614</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-24 19:25:50 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Why is the textNode detached by m_frame-&gt;document()-&gt;updateLayout()?

It&apos;s causing the shadow DOM tree to be re-created.  The text node is in the shadow tree.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456636</commentid>
    <comment_count>7</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-08-24 21:20:23 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; Why is the textNode detached by m_frame-&gt;document()-&gt;updateLayout()?
&gt; 
&gt; It&apos;s causing the shadow DOM tree to be re-created.  The text node is in the shadow tree.

Do you mean HTMLTextElement::innerTextElement() is re-created? HTMLTextAreaElement and RenderTextControl* doesn&apos;t recreate it, so the editing code does it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456637</commentid>
    <comment_count>8</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-24 21:27:33 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; It&apos;s causing the shadow DOM tree to be re-created.  The text node is in the shadow tree.
&gt; 
&gt; Do you mean HTMLTextElement::innerTextElement() is re-created?

Yes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457427</commentid>
    <comment_count>9</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-08-25 23:46:25 -0700</bug_when>
    <thetext>ok, I understand.

&gt; FrameSelection::textWillBeReplaced is triggering layout and renewing the shadow DOM

  m_frame-&gt;document()-&gt;updateLayout() in FrameSelection::textWillBeReplaced()
  ...
  HTMLFormControlElement::recalcStyle()
  ...
  updateFromElementCallback() in HTMLFormControlElement.cpp
  RenderTextControlMultiLine::updateFromElement()
  setInnerTextValeu(...) resets the content of innerTextElement().
    (Note that innerTextElement() itself is not re-created.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458012</commentid>
    <comment_count>10</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-28 09:44:54 -0700</bug_when>
    <thetext>Apparently, this is the top renderer crasher in Chromium.

The problem is that the innerTextElement()&apos;s children are re-created via RenderTextControlMultiLine::updateFromElement when the text node is split around line 140 in InsertLineBreakCommand::doApply:

        Text* textNode = static_cast&lt;Text*&gt;(pos.deprecatedNode());
        splitTextNode(textNode, pos.deprecatedEditingOffset());
        insertNodeBefore(nodeToInsert, textNode);

because it triggers layout.

I don&apos;t think we should be marking the shadow host dirty when the text nodes in the shadow DOM changes but I&apos;m not an expert in style recalculation and style resolution.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458061</commentid>
    <comment_count>11</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-08-28 21:31:44 -0700</bug_when>
    <thetext>(In reply to comment #10)

&gt;   m_frame-&gt;document()-&gt;updateLayout() in FrameSelection::textWillBeReplaced()
&gt;   ...
&gt;   HTMLFormControlElement::recalcStyle()
&gt;   ...
&gt;   updateFromElementCallback() in HTMLFormControlElement.cpp
&gt;   RenderTextControlMultiLine::updateFromElement()
&gt;   setInnerTextValeu(...) resets the content of innerTextElement().

This is the line that bugs me. Why is it even here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458283</commentid>
    <comment_count>12</comment_count>
      <attachid>105501</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-08-29 10:51:31 -0700</bug_when>
    <thetext>Created attachment 105501
Cleaned-up repro

Here&apos;s a slightly cleaned-up repro.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458285</commentid>
    <comment_count>13</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-08-29 10:54:42 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #10)
&gt; 
&gt; &gt;   setInnerTextValeu(...) resets the content of innerTextElement().
&gt; 
&gt; This is the line that bugs me. Why is it even here?

Are you asking why it resets the content when the text is already correct? Or why it would ever reset the content of the inner text element?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459461</commentid>
    <comment_count>14</comment_count>
      <attachid>105744</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-30 23:07:55 -0700</bug_when>
    <thetext>Created attachment 105744
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459462</commentid>
    <comment_count>15</comment_count>
      <attachid>105744</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-30 23:09:20 -0700</bug_when>
    <thetext>Comment on attachment 105744
work in progress

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

&gt; Source/WebCore/html/HTMLTextFormControlElement.cpp:465
&gt; +static String textInShadowTree(HTMLElement* innerText)

This function is basically RenderText::text(). I should probably move it from RenderTextControl to HTMLTextFormControlElement because there&apos;s no reason it should live in RenderTextControl anymore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459484</commentid>
    <comment_count>16</comment_count>
      <attachid>105744</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-08-31 00:17:25 -0700</bug_when>
    <thetext>Comment on attachment 105744
work in progress

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

&gt;&gt; Source/WebCore/html/HTMLTextFormControlElement.cpp:465

&gt; 
&gt; This function is basically RenderText::text(). I should probably move it from RenderTextControl to HTMLTextFormControlElement because there&apos;s no reason it should live in RenderTextControl anymore.

I agree moving RenderTextControl::text().

BTW, the name &quot;textInShadowTree()&quot; sounds implementation-dependent.  I prefer &quot;textInEditableElement()&quot;, &quot;editingValue()&quot;, or something.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459881</commentid>
    <comment_count>17</comment_count>
      <attachid>105825</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-31 13:50:06 -0700</bug_when>
    <thetext>Created attachment 105825
work in progress 2

The following tests fail with this patch.
  fast/forms/search-disabled-readonly.html
  fast/forms/search-rtl.html
  fast/forms/text-control-intrinsic-widths.html
  fast/forms/textarea-submit-crash.html

Will investigate further but I can probably proceed with RenderText::text move.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>460145</commentid>
    <comment_count>18</comment_count>
      <attachid>105878</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-31 18:38:23 -0700</bug_when>
    <thetext>Created attachment 105878
fixes the bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>460158</commentid>
    <comment_count>19</comment_count>
      <attachid>105878</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-08-31 18:57:32 -0700</bug_when>
    <thetext>Comment on attachment 105878
fixes the bug

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

I&apos;ll set r+ when cr-linux EWS becomes green.

&gt; Source/WebCore/html/HTMLInputElement.cpp:627
&gt; +    if (!isTextField() &amp;&amp; !isPasswordField())

Type=password is also a text field.  So &quot;if (!isTextField())&quot; is enough.

nit: Such type-specific operation should be in specific InputType.
 1. Add an empty InputType::updateInnerTextValue()
 2. Add TextFieldInputType::updateInnerTextValue()
 3. Change the call sites of updateInnerTextValue()  to m_inputType-&gt;updateInnerTextValue().

&gt; Source/WebCore/html/HTMLInputElement.cpp:633
&gt; +        // For HTMLInputElement, update the renderer value if the formControlValueMatchesRenderer()

&quot;For HTMLInputElement, &quot; is not needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>460175</commentid>
    <comment_count>20</comment_count>
      <attachid>105878</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-31 19:42:18 -0700</bug_when>
    <thetext>Comment on attachment 105878
fixes the bug

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

&gt;&gt; Source/WebCore/html/HTMLInputElement.cpp:627
&gt;&gt; +    if (!isTextField() &amp;&amp; !isPasswordField())
&gt; 
&gt; Type=password is also a text field.  So &quot;if (!isTextField())&quot; is enough.
&gt; 
&gt; nit: Such type-specific operation should be in specific InputType.
&gt;  1. Add an empty InputType::updateInnerTextValue()
&gt;  2. Add TextFieldInputType::updateInnerTextValue()
&gt;  3. Change the call sites of updateInnerTextValue()  to m_inputType-&gt;updateInnerTextValue().

Oh oops, forgot to remove isPasswordField().  Will do.

&gt;&gt; Source/WebCore/html/HTMLInputElement.cpp:633
&gt;&gt; +        // For HTMLInputElement, update the renderer value if the formControlValueMatchesRenderer()
&gt; 
&gt; &quot;For HTMLInputElement, &quot; is not needed.

Will fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>460207</commentid>
    <comment_count>21</comment_count>
      <attachid>105878</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-31 21:26:55 -0700</bug_when>
    <thetext>Comment on attachment 105878
fixes the bug

Attachment 105878 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/9582054

New failing tests:
fast/speech/input-appearance-searchandspeech.html
fast/speech/input-appearance-numberandspeech.html
fast/speech/input-appearance-speechbutton.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>460215</commentid>
    <comment_count>22</comment_count>
      <attachid>105878</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-08-31 22:01:01 -0700</bug_when>
    <thetext>Comment on attachment 105878
fixes the bug

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

&gt;&gt;&gt; Source/WebCore/html/HTMLInputElement.cpp:627
&gt;&gt;&gt; +    if (!isTextField() &amp;&amp; !isPasswordField())
&gt;&gt; 
&gt;&gt; Type=password is also a text field.  So &quot;if (!isTextField())&quot; is enough.
&gt;&gt; 
&gt;&gt; nit: Such type-specific operation should be in specific InputType.
&gt;&gt;  1. Add an empty InputType::updateInnerTextValue()
&gt;&gt;  2. Add TextFieldInputType::updateInnerTextValue()
&gt;&gt;  3. Change the call sites of updateInnerTextValue()  to m_inputType-&gt;updateInnerTextValue().
&gt; 
&gt; Oh oops, forgot to remove isPasswordField().  Will do.

Putting the type-specific operation on the specific InputType the way Kent is telling you to is better. The isXXX functions are deprecated within the class.

&gt; Source/WebCore/html/HTMLInputElement.cpp:1105
&gt;      if (isTextField()) {
&gt; +        if (valueChanged)
&gt; +            updateInnerTextValue();

Since updateInnerTextValue already has the isTextField check, it might be clearer to leave the call outside the if statement. Because later we’d probably like to refactor the code within the isTextField block into an InputType function.

&gt; Source/WebCore/html/HTMLInputElement.h:148
&gt; +    void updateInnerTextValue();

A shame this has to public just so it can be called by one of the InputType functions.

&gt; Source/WebCore/html/HTMLTextFormControlElement.h:107
&gt;      String valueWithHardLineBreaks() const;
&gt; +
&gt;  private:

Nice to add this blank line--it’s the preferred style--but not sure this should be in this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>460235</commentid>
    <comment_count>23</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-31 22:55:11 -0700</bug_when>
    <thetext>Thanks for the review, tkent &amp; darin!

(In reply to comment #21)
&gt; (From update of attachment 105878 [details])
&gt; Attachment 105878 [details] did not pass chromium-ews (chromium-xvfb):
&gt; Output: http://queues.webkit.org/results/9582054
&gt; 
&gt; New failing tests:
&gt; fast/speech/input-appearance-searchandspeech.html
&gt; fast/speech/input-appearance-numberandspeech.html
&gt; fast/speech/input-appearance-speechbutton.html

I figured out why they&apos;re failing.  I need to call setFormControlValueMatchesRenderer(false) when -webkit-speech changes because we always recreate the shadow DOM when that attribute changes.

(In reply to comment #22)
&gt; (From update of attachment 105878 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=105878&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebCore/html/HTMLInputElement.cpp:627
&gt; &gt;&gt;&gt; +    if (!isTextField() &amp;&amp; !isPasswordField())
&gt; &gt;&gt; 
&gt; &gt;&gt; Type=password is also a text field.  So &quot;if (!isTextField())&quot; is enough.
&gt; &gt;&gt; 
&gt; &gt;&gt; nit: Such type-specific operation should be in specific InputType.
&gt; &gt;&gt;  1. Add an empty InputType::updateInnerTextValue()
&gt; &gt;&gt;  2. Add TextFieldInputType::updateInnerTextValue()
&gt; &gt;&gt;  3. Change the call sites of updateInnerTextValue()  to m_inputType-&gt;updateInnerTextValue().
&gt; &gt; 
&gt; &gt; Oh oops, forgot to remove isPasswordField().  Will do.
&gt; 
&gt; Putting the type-specific operation on the specific InputType the way Kent is telling you to is better. The isXXX functions are deprecated within the class.

Yeah, I&apos;m going to do that in a separate patch. Since I have to create a patch for chromium/835 branch, and I&apos;d really like to minimize the code changes in this patch.

&gt; &gt; Source/WebCore/html/HTMLInputElement.cpp:1105
&gt; &gt;      if (isTextField()) {
&gt; &gt; +        if (valueChanged)
&gt; &gt; +            updateInnerTextValue();
&gt; 
&gt; Since updateInnerTextValue already has the isTextField check, it might be clearer to leave the call outside the if statement. Because later we’d probably like to refactor the code within the isTextField block into an InputType function.

Good point.  Will fix.

&gt; &gt; Source/WebCore/html/HTMLInputElement.h:148
&gt; &gt; +    void updateInnerTextValue();
&gt; 
&gt; A shame this has to public just so it can be called by one of the InputType functions.

Yeah, it&apos;s very unfortunate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>460245</commentid>
    <comment_count>24</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-31 23:10:05 -0700</bug_when>
    <thetext>Committed r94274: &lt;http://trac.webkit.org/changeset/94274&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>103930</attachid>
            <date>2011-08-15 11:16:54 -0700</date>
            <delta_ts>2011-08-15 17:51:53 -0700</delta_ts>
            <desc>Test markup to reproduce the crash</desc>
            <filename>foo.html</filename>
            <type>text/html</type>
            <size>211</size>
            <attacher name="Shajith">demerzel</attacher>
            
              <data encoding="base64">PGh0bWw+Cjxib2R5IG9ubG9hZD0iZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbW1lbnRfdmFs
dWUnKS5pbm5lckhUTUw9J2Fcbic7Ij4KPHN0eWxlPgojY29udGFpbmVyICsgKiB7IGNsZWFyOiBi
b3RoOyB9Cjwvc3R5bGU+CjxwIGlkPSJjb250YWluZXIiPgo8dGV4dGFyZWEgaWQ9ImNvbW1lbnRf
dmFsdWUiPjwvdGV4dGFyZWE+CjwvcD4KPC9ib2R5Pgo8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>103931</attachid>
            <date>2011-08-15 11:18:06 -0700</date>
            <delta_ts>2011-08-15 11:18:06 -0700</delta_ts>
            <desc>Crash file</desc>
            <filename>WebProcess_2011-08-15-103334.crash</filename>
            <type>text/plain</type>
            <size>34344</size>
            <attacher name="Shajith">demerzel</attacher>
            
              <data encoding="base64">UHJvY2VzczogICAgICAgICBXZWJQcm9jZXNzIFs4ODA3MV0KUGF0aDogICAgICAgICAgICAvVXNl
cnMvc2hhaml0aC9BcHBsaWNhdGlvbnMvV2ViS2l0LmFwcC9Db250ZW50cy9GcmFtZXdvcmtzLzEw
LjYvV2ViS2l0Mi5mcmFtZXdvcmsvV2ViUHJvY2Vzcy5hcHAvQ29udGVudHMvTWFjT1MvV2ViUHJv
Y2VzcwpJZGVudGlmaWVyOiAgICAgIGNvbS5hcHBsZS5XZWJQcm9jZXNzClZlcnNpb246ICAgICAg
ICAgNTM1KyAoNTM1LjIrKQpDb2RlIFR5cGU6ICAgICAgIFg4Ni02NCAoTmF0aXZlKQpQYXJlbnQg
UHJvY2VzczogIFNhZmFyaSBbODgwNjldCgpEYXRlL1RpbWU6ICAgICAgIDIwMTEtMDgtMTUgMTA6
MzM6MzEuMzkwIC0wNzAwCk9TIFZlcnNpb246ICAgICAgTWFjIE9TIFggMTAuNi44ICgxMEs1NDkp
ClJlcG9ydCBWZXJzaW9uOiAgNgoKRXhjZXB0aW9uIFR5cGU6ICBFWENfQkFEX0FDQ0VTUyAoU0lH
U0VHVikKRXhjZXB0aW9uIENvZGVzOiBLRVJOX0lOVkFMSURfQUREUkVTUyBhdCAweDAwMDAwMDAw
MDAwMDAwNDgKQ3Jhc2hlZCBUaHJlYWQ6ICAwICBEaXNwYXRjaCBxdWV1ZTogY29tLmFwcGxlLm1h
aW4tdGhyZWFkCgpUaHJlYWQgMCBDcmFzaGVkOiAgRGlzcGF0Y2ggcXVldWU6IGNvbS5hcHBsZS5t
YWluLXRocmVhZAowICAgY29tLmFwcGxlLldlYkNvcmUgICAgICAgICAgICAgCTB4MDAwMDAwMDEw
MTBkYWE0YiBXZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6aW5zZXJ0Tm9kZUF0KFdURjo6
UGFzc1JlZlB0cjxXZWJDb3JlOjpOb2RlPiwgV2ViQ29yZTo6UG9zaXRpb24gY29uc3QmKSArIDkx
CjEgICBjb20uYXBwbGUuV2ViQ29yZSAgICAgICAgICAgICAJMHgwMDAwMDAwMTAxNGUzYTliIFdl
YkNvcmU6Okluc2VydExpbmVCcmVha0NvbW1hbmQ6OmRvQXBwbHkoKSArIDY0OTEKMiAgIGNvbS5h
cHBsZS5XZWJDb3JlICAgICAgICAgICAgIAkweDAwMDAwMDAxMDEzMDVkYzIgV2ViQ29yZTo6RWRp
dENvbW1hbmQ6OmFwcGx5KCkgKyA4MgozICAgY29tLmFwcGxlLldlYkNvcmUgICAgICAgICAgICAg
CTB4MDAwMDAwMDEwMTBkNzU0YiBXZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6YXBwbHlD
b21tYW5kVG9Db21wb3NpdGUoV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkVkaXRDb21tYW5kPikg
KyA0Mwo0ICAgY29tLmFwcGxlLldlYkNvcmUgICAgICAgICAgICAgCTB4MDAwMDAwMDEwMWRjZTA3
YyBXZWJDb3JlOjpUeXBpbmdDb21tYW5kOjppbnNlcnRMaW5lQnJlYWsoKSArIDEwOAo1ICAgY29t
LmFwcGxlLldlYkNvcmUgICAgICAgICAgICAgCTB4MDAwMDAwMDEwMTMwNWRjMiBXZWJDb3JlOjpF
ZGl0Q29tbWFuZDo6YXBwbHkoKSArIDgyCjYgICBjb20uYXBwbGUuV2ViQ29yZSAgICAgICAgICAg
ICAJMHgwMDAwMDAwMTAxZGNlNjJkIFdlYkNvcmU6OlR5cGluZ0NvbW1hbmQ6Omluc2VydExpbmVC
cmVhayhXZWJDb3JlOjpEb2N1bWVudCosIHVuc2lnbmVkIGludCkgKyAxODkKNyAgIGNvbS5hcHBs
ZS5XZWJDb3JlICAgICAgICAgICAgIAkweDAwMDAwMDAxMDEzMTQxYjcgV2ViQ29yZTo6RWRpdG9y
OjppbnNlcnRMaW5lQnJlYWsoKSArIDE5OQo4ICAgY29tLmFwcGxlLldlYkNvcmUgICAgICAgICAg
ICAgCTB4MDAwMDAwMDEwMTMxZTllNiBXZWJDb3JlOjpFZGl0b3I6OmhhbmRsZVRleHRFdmVudChX
ZWJDb3JlOjpUZXh0RXZlbnQqKSArIDE5OAo5ICAgY29tLmFwcGxlLldlYkNvcmUgICAgICAgICAg
ICAgCTB4MDAwMDAwMDEwMTMzODQxYiBXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmRlZmF1bHRUZXh0
SW5wdXRFdmVudEhhbmRsZXIoV2ViQ29yZTo6VGV4dEV2ZW50KikgKyAyNwoxMCAgY29tLmFwcGxl
LldlYkNvcmUgICAgICAgICAgICAgCTB4MDAwMDAwMDEwMWEzYTY1NCBXZWJDb3JlOjpOb2RlOjpk
ZWZhdWx0RXZlbnRIYW5kbGVyKFdlYkNvcmU6OkV2ZW50KikgKyAxMTA4CjExICBjb20uYXBwbGUu
V2ViQ29yZSAgICAgICAgICAgICAJMHgwMDAwMDAwMTAxMzM1YWRkIFdlYkNvcmU6OkV2ZW50RGlz
cGF0Y2hlcjo6ZGlzcGF0Y2hFdmVudChXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6RXZlbnQ+KSAr
IDEwMzcKMTIgIGNvbS5hcHBsZS5XZWJDb3JlICAgICAgICAgICAgIAkweDAwMDAwMDAxMDEzMzRj
OTggV2ViQ29yZTo6RXZlbnREaXNwYXRjaE1lZGlhdG9yOjpkaXNwYXRjaEV2ZW50KFdlYkNvcmU6
OkV2ZW50RGlzcGF0Y2hlciopIGNvbnN0ICsgNDAKMTMgIGNvbS5hcHBsZS5XZWJDb3JlICAgICAg
ICAgICAgIAkweDAwMDAwMDAxMDEzMzUzMTkgV2ViQ29yZTo6RXZlbnREaXNwYXRjaGVyOjpkaXNw
YXRjaEV2ZW50KFdlYkNvcmU6Ok5vZGUqLCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6RXZlbnRE
aXNwYXRjaE1lZGlhdG9yPikgKyA0MQoxNCAgY29tLmFwcGxlLldlYkNvcmUgICAgICAgICAgICAg
CTB4MDAwMDAwMDEwMWEzNDgxNyBXZWJDb3JlOjpOb2RlOjpkaXNwYXRjaEV2ZW50KFdURjo6UGFz
c1JlZlB0cjxXZWJDb3JlOjpFdmVudD4pICsgNTUKMTUgIGNvbS5hcHBsZS5XZWJDb3JlICAgICAg
ICAgICAgIAkweDAwMDAwMDAxMDEzNGI4MjkgV2ViQ29yZTo6RXZlbnRUYXJnZXQ6OmRpc3BhdGNo
RXZlbnQoV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkV2ZW50PiwgaW50JikgKyAxNTMKMTYgIGNv
bS5hcHBsZS5XZWJDb3JlICAgICAgICAgICAgIAkweDAwMDAwMDAxMDEzM2EwMDMgV2ViQ29yZTo6
RXZlbnRIYW5kbGVyOjpoYW5kbGVUZXh0SW5wdXRFdmVudChXVEY6OlN0cmluZyBjb25zdCYsIFdl
YkNvcmU6OkV2ZW50KiwgV2ViQ29yZTo6VGV4dEV2ZW50SW5wdXRUeXBlKSArIDI0MwoxNyAgY29t
LmFwcGxlLldlYkNvcmUgICAgICAgICAgICAgCTB4MDAwMDAwMDEwMTMyMzkwYyBXZWJDb3JlOjpl
eGVjdXRlSW5zZXJ0TmV3bGluZShXZWJDb3JlOjpGcmFtZSosIFdlYkNvcmU6OkV2ZW50KiwgV2Vi
Q29yZTo6RWRpdG9yQ29tbWFuZFNvdXJjZSwgV1RGOjpTdHJpbmcgY29uc3QmKSArIDkyCjE4ICBj
b20uYXBwbGUuV2ViQ29yZSAgICAgICAgICAgICAJMHgwMDAwMDAwMTAxMzIyMGEyIFdlYkNvcmU6
OkVkaXRvcjo6Q29tbWFuZDo6ZXhlY3V0ZShXVEY6OlN0cmluZyBjb25zdCYsIFdlYkNvcmU6OkV2
ZW50KikgY29uc3QgKyAxMTQKMTkgIGNvbS5hcHBsZS5XZWJDb3JlICAgICAgICAgICAgIAkweDAw
MDAwMDAxMDEzMjNhYTIgV2ViQ29yZTo6RWRpdG9yOjpDb21tYW5kOjpleGVjdXRlKFdlYkNvcmU6
OkV2ZW50KikgY29uc3QgKyAzNAoyMCAgY29tLmFwcGxlLldlYktpdDIgICAgICAgICAgICAgCTB4
MDAwMDAwMDEwMDI0NDEwMiBXZWJLaXQ6OldlYlBhZ2U6OmV4ZWN1dGVLZXlwcmVzc0NvbW1hbmRz
SW50ZXJuYWwoV1RGOjpWZWN0b3I8V2ViQ29yZTo6S2V5cHJlc3NDb21tYW5kLCAwdWw+IGNvbnN0
JiwgV2ViQ29yZTo6S2V5Ym9hcmRFdmVudCopICsgNDA2CjIxICBjb20uYXBwbGUuV2ViS2l0MiAg
ICAgICAgICAgICAJMHgwMDAwMDAwMTAwMjQ0NWMyIFdlYktpdDo6V2ViUGFnZTo6aGFuZGxlRWRp
dGluZ0tleWJvYXJkRXZlbnQoV2ViQ29yZTo6S2V5Ym9hcmRFdmVudCosIGJvb2wpICsgNzM0CjIy
ICBjb20uYXBwbGUuV2ViS2l0MiAgICAgICAgICAgICAJMHgwMDAwMDAwMTAwMjg4Yjc5IFdlYktp
dDo6V2ViRWRpdG9yQ2xpZW50OjpoYW5kbGVLZXlib2FyZEV2ZW50KFdlYkNvcmU6OktleWJvYXJk
RXZlbnQqKSArIDIzCjIzICBjb20uYXBwbGUuV2ViQ29yZSAgICAgICAgICAgICAJMHgwMDAwMDAw
MTAxMzQzZDcyIFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6ZGVmYXVsdEtleWJvYXJkRXZlbnRIYW5k
bGVyKFdlYkNvcmU6OktleWJvYXJkRXZlbnQqKSArIDIxMAoyNCAgY29tLmFwcGxlLldlYkNvcmUg
ICAgICAgICAgICAgCTB4MDAwMDAwMDEwMWEzYTQ0NSBXZWJDb3JlOjpOb2RlOjpkZWZhdWx0RXZl
bnRIYW5kbGVyKFdlYkNvcmU6OkV2ZW50KikgKyA1ODEKMjUgIGNvbS5hcHBsZS5XZWJDb3JlICAg
ICAgICAgICAgIAkweDAwMDAwMDAxMDEzMzVhZGQgV2ViQ29yZTo6RXZlbnREaXNwYXRjaGVyOjpk
aXNwYXRjaEV2ZW50KFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpFdmVudD4pICsgMTAzNwoyNiAg
Y29tLmFwcGxlLldlYkNvcmUgICAgICAgICAgICAgCTB4MDAwMDAwMDEwMTMzNGM5OCBXZWJDb3Jl
OjpFdmVudERpc3BhdGNoTWVkaWF0b3I6OmRpc3BhdGNoRXZlbnQoV2ViQ29yZTo6RXZlbnREaXNw
YXRjaGVyKikgY29uc3QgKyA0MAoyNyAgY29tLmFwcGxlLldlYkNvcmUgICAgICAgICAgICAgCTB4
MDAwMDAwMDEwMTMzNTMxOSBXZWJDb3JlOjpFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoRXZlbnQo
V2ViQ29yZTo6Tm9kZSosIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpFdmVudERpc3BhdGNoTWVk
aWF0b3I+KSArIDQxCjI4ICBjb20uYXBwbGUuV2ViQ29yZSAgICAgICAgICAgICAJMHgwMDAwMDAw
MTAxYTM0ODE3IFdlYkNvcmU6Ok5vZGU6OmRpc3BhdGNoRXZlbnQoV1RGOjpQYXNzUmVmUHRyPFdl
YkNvcmU6OkV2ZW50PikgKyA1NQoyOSAgY29tLmFwcGxlLldlYkNvcmUgICAgICAgICAgICAgCTB4
MDAwMDAwMDEwMTM0YjgyOSBXZWJDb3JlOjpFdmVudFRhcmdldDo6ZGlzcGF0Y2hFdmVudChXVEY6
OlBhc3NSZWZQdHI8V2ViQ29yZTo6RXZlbnQ+LCBpbnQmKSArIDE1MwozMCAgY29tLmFwcGxlLldl
YkNvcmUgICAgICAgICAgICAgCTB4MDAwMDAwMDEwMTMzYWQ3NiBXZWJDb3JlOjpFdmVudEhhbmRs
ZXI6OmtleUV2ZW50KFdlYkNvcmU6OlBsYXRmb3JtS2V5Ym9hcmRFdmVudCBjb25zdCYpICsgMjUz
NAozMSAgY29tLmFwcGxlLldlYktpdDIgICAgICAgICAgICAgCTB4MDAwMDAwMDEwMDIzYzI0MSBX
ZWJLaXQ6OldlYlBhZ2U6OmtleUV2ZW50KFdlYktpdDo6V2ViS2V5Ym9hcmRFdmVudCBjb25zdCYp
ICsgMjU5CjMyICBjb20uYXBwbGUuV2ViS2l0MiAgICAgICAgICAgICAJMHgwMDAwMDAwMTAwMjhi
MzNiIHZvaWQgQ29yZUlQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6S2V5RXZl
bnQsIFdlYktpdDo6V2ViUGFnZSwgdm9pZCAoV2ViS2l0OjpXZWJQYWdlOjoqKShXZWJLaXQ6Oldl
YktleWJvYXJkRXZlbnQgY29uc3QmKT4oQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiwgV2ViS2l0
OjpXZWJQYWdlKiwgdm9pZCAoV2ViS2l0OjpXZWJQYWdlOjoqKShXZWJLaXQ6OldlYktleWJvYXJk
RXZlbnQgY29uc3QmKSkgKyAxMjgKMzMgIGNvbS5hcHBsZS5XZWJLaXQyICAgICAgICAgICAgIAkw
eDAwMDAwMDAxMDAyMDJkMjggQ29yZUlQQzo6Q29ubmVjdGlvbjo6ZGlzcGF0Y2hNZXNzYWdlKENv
cmVJUEM6OkNvbm5lY3Rpb246Ok1lc3NhZ2U8Q29yZUlQQzo6QXJndW1lbnREZWNvZGVyPiYpICsg
MTM4CjM0ICBjb20uYXBwbGUuV2ViS2l0MiAgICAgICAgICAgICAJMHgwMDAwMDAwMTAwMjAyZTEz
IENvcmVJUEM6OkNvbm5lY3Rpb246OmRpc3BhdGNoTWVzc2FnZXMoKSArIDEyMQozNSAgY29tLmFw
cGxlLldlYktpdDIgICAgICAgICAgICAgCTB4MDAwMDAwMDEwMDIxZGNhZCBSdW5Mb29wOjpwZXJm
b3JtV29yaygpICsgMTM1CjM2ICBjb20uYXBwbGUuV2ViS2l0MiAgICAgICAgICAgICAJMHgwMDAw
MDAwMTAwMjFlMzE5IFJ1bkxvb3A6OnBlcmZvcm1Xb3JrKHZvaWQqKSArIDgzCjM3ICBjb20uYXBw
bGUuQ29yZUZvdW5kYXRpb24gICAgICAJMHgwMDAwN2ZmZjg1NmY5NDAxIF9fQ0ZSdW5Mb29wRG9T
b3VyY2VzMCArIDEzNjEKMzggIGNvbS5hcHBsZS5Db3JlRm91bmRhdGlvbiAgICAgIAkweDAwMDA3
ZmZmODU2Zjc1ZjkgX19DRlJ1bkxvb3BSdW4gKyA4NzMKMzkgIGNvbS5hcHBsZS5Db3JlRm91bmRh
dGlvbiAgICAgIAkweDAwMDA3ZmZmODU2ZjZkYmYgQ0ZSdW5Mb29wUnVuU3BlY2lmaWMgKyA1NzUK
NDAgIGNvbS5hcHBsZS5ISVRvb2xib3ggICAgICAgICAgIAkweDAwMDA3ZmZmODgwZjY3ZWUgUnVu
Q3VycmVudEV2ZW50TG9vcEluTW9kZSArIDMzMwo0MSAgY29tLmFwcGxlLkhJVG9vbGJveCAgICAg
ICAgICAgCTB4MDAwMDdmZmY4ODBmNjVmMyBSZWNlaXZlTmV4dEV2ZW50Q29tbW9uICsgMzEwCjQy
ICBjb20uYXBwbGUuSElUb29sYm94ICAgICAgICAgICAJMHgwMDAwN2ZmZjg4MGY2NGFjIEJsb2Nr
VW50aWxOZXh0RXZlbnRNYXRjaGluZ0xpc3RJbk1vZGUgKyA1OQo0MyAgY29tLmFwcGxlLkFwcEtp
dCAgICAgICAgICAgICAgCTB4MDAwMDdmZmY4MGFlNWViMiBfRFBTTmV4dEV2ZW50ICsgNzA4CjQ0
ICBjb20uYXBwbGUuQXBwS2l0ICAgICAgICAgICAgICAJMHgwMDAwN2ZmZjgwYWU1ODAxIC1bTlNB
cHBsaWNhdGlvbiBuZXh0RXZlbnRNYXRjaGluZ01hc2s6dW50aWxEYXRlOmluTW9kZTpkZXF1ZXVl
Ol0gKyAxNTUKNDUgIGNvbS5hcHBsZS5BcHBLaXQgICAgICAgICAgICAgIAkweDAwMDA3ZmZmODBh
YWI2OGYgLVtOU0FwcGxpY2F0aW9uIHJ1bl0gKyAzOTUKNDYgIGNvbS5hcHBsZS5XZWJLaXQyICAg
ICAgICAgICAgIAkweDAwMDAwMDAxMDAyNjRmMjMgV2ViS2l0OjpXZWJQcm9jZXNzTWFpbihXZWJL
aXQ6OkNvbW1hbmRMaW5lIGNvbnN0JikgKyA2NjcKNDcgIGNvbS5hcHBsZS5XZWJLaXQyICAgICAg
ICAgICAgIAkweDAwMDAwMDAxMDAyMzk0YWUgV2ViS2l0TWFpbiArIDI5Mwo0OCAgY29tLmFwcGxl
LldlYlByb2Nlc3MgICAgICAgICAgCTB4MDAwMDAwMDEwMDAwMGQ5NCBzdGFydCArIDUyCgpUaHJl
YWQgMTogIERpc3BhdGNoIHF1ZXVlOiBjb20uYXBwbGUubGliZGlzcGF0Y2gtbWFuYWdlcgowICAg
bGliU3lzdGVtLkIuZHlsaWIgICAgICAgICAgICAgCTB4MDAwMDdmZmY4OTMwOGMwYSBrZXZlbnQg
KyAxMAoxICAgbGliU3lzdGVtLkIuZHlsaWIgICAgICAgICAgICAgCTB4MDAwMDdmZmY4OTMwYWFk
ZCBfZGlzcGF0Y2hfbWdyX2ludm9rZSArIDE1NAoyICAgbGliU3lzdGVtLkIuZHlsaWIgICAgICAg
ICAgICAgCTB4MDAwMDdmZmY4OTMwYTdiNCBfZGlzcGF0Y2hfcXVldWVfaW52b2tlICsgMTg1CjMg
ICBsaWJTeXN0ZW0uQi5keWxpYiAgICAgICAgICAgICAJMHgwMDAwN2ZmZjg5MzBhMmRlIF9kaXNw
YXRjaF93b3JrZXJfdGhyZWFkMiArIDI1Mgo0ICAgbGliU3lzdGVtLkIuZHlsaWIgICAgICAgICAg
ICAgCTB4MDAwMDdmZmY4OTMwOWMwOCBfcHRocmVhZF93cXRocmVhZCArIDM1Mwo1ICAgbGliU3lz
dGVtLkIuZHlsaWIgICAgICAgICAgICAgCTB4MDAwMDdmZmY4OTMwOWFhNSBzdGFydF93cXRocmVh
ZCArIDEzCgpUaHJlYWQgMjoKMCAgIGxpYlN5c3RlbS5CLmR5bGliICAgICAgICAgICAgIAkweDAw
MDA3ZmZmODkzMDlhMmEgX193b3JrcV9rZXJucmV0dXJuICsgMTAKMSAgIGxpYlN5c3RlbS5CLmR5
bGliICAgICAgICAgICAgIAkweDAwMDA3ZmZmODkzMDllM2MgX3B0aHJlYWRfd3F0aHJlYWQgKyA5
MTcKMiAgIGxpYlN5c3RlbS5CLmR5bGliICAgICAgICAgICAgIAkweDAwMDA3ZmZmODkzMDlhYTUg
c3RhcnRfd3F0aHJlYWQgKyAxMwoKVGhyZWFkIDM6ICBKYXZhU2NyaXB0Q29yZTo6QmxvY2tGcmVl
CjAgICBsaWJTeXN0ZW0uQi5keWxpYiAgICAgICAgICAgICAJMHgwMDAwN2ZmZjg5MzJhYTZhIF9f
c2Vtd2FpdF9zaWduYWwgKyAxMAoxICAgbGliU3lzdGVtLkIuZHlsaWIgICAgICAgICAgICAgCTB4
MDAwMDdmZmY4OTMyZTg4MSBfcHRocmVhZF9jb25kX3dhaXQgKyAxMjg2CjIgICBjb20uYXBwbGUu
SmF2YVNjcmlwdENvcmUgICAgICAJMHgwMDAwMDAwMTAwNmRiYWU3IFdURjo6VGhyZWFkQ29uZGl0
aW9uOjp0aW1lZFdhaXQoV1RGOjpNdXRleCYsIGRvdWJsZSkgKyAxNTEKMyAgIGNvbS5hcHBsZS5K
YXZhU2NyaXB0Q29yZSAgICAgIAkweDAwMDAwMDAxMDA3MTAxY2YgSlNDOjpIZWFwOjpibG9ja0Zy
ZWVpbmdUaHJlYWRNYWluKCkgKyAzMTkKNCAgIGNvbS5hcHBsZS5KYXZhU2NyaXB0Q29yZSAgICAg
IAkweDAwMDAwMDAxMDA3MTAyMDkgSlNDOjpIZWFwOjpibG9ja0ZyZWVpbmdUaHJlYWRTdGFydEZ1
bmModm9pZCopICsgOQo1ICAgbGliU3lzdGVtLkIuZHlsaWIgICAgICAgICAgICAgCTB4MDAwMDdm
ZmY4OTMyOGZkNiBfcHRocmVhZF9zdGFydCArIDMzMQo2ICAgbGliU3lzdGVtLkIuZHlsaWIgICAg
ICAgICAgICAgCTB4MDAwMDdmZmY4OTMyOGU4OSB0aHJlYWRfc3RhcnQgKyAxMwoKVGhyZWFkIDQ6
CjAgICBsaWJTeXN0ZW0uQi5keWxpYiAgICAgICAgICAgICAJMHgwMDAwN2ZmZjg5MmVmZDdhIG1h
Y2hfbXNnX3RyYXAgKyAxMAoxICAgbGliU3lzdGVtLkIuZHlsaWIgICAgICAgICAgICAgCTB4MDAw
MDdmZmY4OTJmMDNlZCBtYWNoX21zZyArIDU5CjIgICBjb20uYXBwbGUuQ29yZUZvdW5kYXRpb24g
ICAgICAJMHgwMDAwN2ZmZjg1NmY3OTMyIF9fQ0ZSdW5Mb29wUnVuICsgMTY5OAozICAgY29tLmFw
cGxlLkNvcmVGb3VuZGF0aW9uICAgICAgCTB4MDAwMDdmZmY4NTZmNmRiZiBDRlJ1bkxvb3BSdW5T
cGVjaWZpYyArIDU3NQo0ICAgY29tLmFwcGxlLkZvdW5kYXRpb24gICAgICAgICAgCTB4MDAwMDdm
ZmY4MWZjODIzZiArW05TVVJMQ29ubmVjdGlvbihOU1VSTENvbm5lY3Rpb25SZWFsbHlJbnRlcm5h
bCkgX3Jlc291cmNlTG9hZExvb3A6XSArIDI5Nwo1ICAgY29tLmFwcGxlLkZvdW5kYXRpb24gICAg
ICAgICAgCTB4MDAwMDdmZmY4MWY0OTIwNCBfX05TVGhyZWFkX19tYWluX18gKyAxNDI5CjYgICBs
aWJTeXN0ZW0uQi5keWxpYiAgICAgICAgICAgICAJMHgwMDAwN2ZmZjg5MzI4ZmQ2IF9wdGhyZWFk
X3N0YXJ0ICsgMzMxCjcgICBsaWJTeXN0ZW0uQi5keWxpYiAgICAgICAgICAgICAJMHgwMDAwN2Zm
Zjg5MzI4ZTg5IHRocmVhZF9zdGFydCArIDEzCgpUaHJlYWQgNTogIGNvbS5hcHBsZS5DRlNvY2tl
dC5wcml2YXRlCjAgICBsaWJTeXN0ZW0uQi5keWxpYiAgICAgICAgICAgICAJMHgwMDAwN2ZmZjg5
MzMzOTMyIHNlbGVjdCREQVJXSU5fRVhUU04gKyAxMAoxICAgY29tLmFwcGxlLkNvcmVGb3VuZGF0
aW9uICAgICAgCTB4MDAwMDdmZmY4NTcxOTQ5OCBfX0NGU29ja2V0TWFuYWdlciArIDgyNAoyICAg
bGliU3lzdGVtLkIuZHlsaWIgICAgICAgICAgICAgCTB4MDAwMDdmZmY4OTMyOGZkNiBfcHRocmVh
ZF9zdGFydCArIDMzMQozICAgbGliU3lzdGVtLkIuZHlsaWIgICAgICAgICAgICAgCTB4MDAwMDdm
ZmY4OTMyOGU4OSB0aHJlYWRfc3RhcnQgKyAxMwoKVGhyZWFkIDAgY3Jhc2hlZCB3aXRoIFg4NiBU
aHJlYWQgU3RhdGUgKDY0LWJpdCk6CiAgcmF4OiAweDAwMDAwMDAwMDAwMDAwMDAgIHJieDogMHgw
MDAwMDAwMDAwMDAwMDAwICByY3g6IDB4MDAwMDAwMDAwMDAwMDAwMyAgcmR4OiAweDAwMDA3ZmZm
NWZiZmQwMTAKICByZGk6IDB4MDAwMDAwMDAwMDAwMDAwMCAgcnNpOiAweDAwMDA3ZmZmNWZiZmQw
MTAgIHJicDogMHgwMDAwN2ZmZjVmYmZjZGIwICByc3A6IDB4MDAwMDdmZmY1ZmJmY2NkMAogICBy
ODogMHgwMDAwMDAwMDAwMDAwMDAwICAgcjk6IDB4MDAwMDAwMDAwMDAwMDAwMCAgcjEwOiAweDAw
MDAwMDAwMDAwMDAwM2YgIHIxMTogMHgwMDAwMDAwMTE2NzhjYjM4CiAgcjEyOiAweDAwMDAwMDAw
MDAwMDAwMDAgIHIxMzogMHgwMDAwN2ZmZjVmYmZkMWYwICByMTQ6IDB4MDAwMDAwMDExNmE1MWI0
MCAgcjE1OiAweDAwMDA3ZmZmNWZiZmQwMTAKICByaXA6IDB4MDAwMDAwMDEwMTBkYWE0YiAgcmZs
OiAweDAwMDAwMDAwMDAwMTAyOTcgIGNyMjogMHgwMDAwMDAwMDAwMDAwMDQ4CgpCaW5hcnkgSW1h
Z2VzOgogICAgICAgMHgxMDAwMDAwMDAgLSAgICAgICAgMHgxMDAwMDBmZmYgIGNvbS5hcHBsZS5X
ZWJQcm9jZXNzIDUzNSsgKDUzNS4yKykgPEI5RDM0NDAyLTE0QjUtM0Q3Ri05ODY1LTI0REZDMzM1
NkQ2MT4gL1VzZXJzL3NoYWppdGgvQXBwbGljYXRpb25zL1dlYktpdC5hcHAvQ29udGVudHMvRnJh
bWV3b3Jrcy8xMC42L1dlYktpdDIuZnJhbWV3b3JrL1dlYlByb2Nlc3MuYXBwL0NvbnRlbnRzL01h
Y09TL1dlYlByb2Nlc3MKICAgICAgIDB4MTAwMDAzMDAwIC0gICAgICAgIDB4MTAwMDAzZmZmICtX
ZWJQcm9jZXNzU2hpbS5keWxpYiA1MzUuMi4wIChjb21wYXRpYmlsaXR5IDEuMC4wKSA8MzAzRjlB
MTktNDc5NS0zN0E2LUFFRTUtNTE1NUM3OThGN0Y2PiAvVXNlcnMvc2hhaml0aC9BcHBsaWNhdGlv
bnMvV2ViS2l0LmFwcC9Db250ZW50cy9GcmFtZXdvcmtzLzEwLjYvV2ViS2l0Mi5mcmFtZXdvcmsv
V2ViUHJvY2Vzcy5hcHAvQ29udGVudHMvTWFjT1MvV2ViUHJvY2Vzc1NoaW0uZHlsaWIKICAgICAg
IDB4MTAwMjAwMDAwIC0gICAgICAgIDB4MTAwM2IxZmVmICBjb20uYXBwbGUuV2ViS2l0MiA1MzUr
ICg1MzUuMispIDwwRTk5NkJERS1CODg2LTM4OEQtQkYwOS0zNTMyMTU2NEU5QTY+IC9Vc2Vycy9z
aGFqaXRoL0FwcGxpY2F0aW9ucy9XZWJLaXQuYXBwL0NvbnRlbnRzL0ZyYW1ld29ya3MvMTAuNi9X
ZWJLaXQyLmZyYW1ld29yay9XZWJLaXQyCiAgICAgICAweDEwMDRkYzAwMCAtICAgICAgICAweDEw
MDc2NGZmNyAgY29tLmFwcGxlLkphdmFTY3JpcHRDb3JlIDUzNSsgKDUzNS4yKykgPDhBQ0RFODky
LTg0M0ItMzZBMy04OUU1LUNENjEyODcyRjkzMD4gL1VzZXJzL3NoYWppdGgvQXBwbGljYXRpb25z
L1dlYktpdC5hcHAvQ29udGVudHMvRnJhbWV3b3Jrcy8xMC42L0phdmFTY3JpcHRDb3JlLmZyYW1l
d29yay9WZXJzaW9ucy9BL0phdmFTY3JpcHRDb3JlCiAgICAgICAweDEwMTAwMDAwMCAtICAgICAg
ICAweDEwMjIzYWZmZiAgY29tLmFwcGxlLldlYkNvcmUgNTM1KyAoNTM1LjIrKSA8ODRFQ0VFMkQt
MEM2QS0zQUIzLTgyMTEtOTNGODE2MDYwQjdDPiAvVXNlcnMvc2hhaml0aC9BcHBsaWNhdGlvbnMv
V2ViS2l0LmFwcC9Db250ZW50cy9GcmFtZXdvcmtzLzEwLjYvV2ViQ29yZS5mcmFtZXdvcmsvVmVy
c2lvbnMvQS9XZWJDb3JlCiAgICAgICAweDExNWQyNzAwMCAtICAgICAgICAweDExNWViOGZlNyAg
Y29tLmFwcGxlLldlYktpdCByOTMwNDMgKDUzNS4yKykgPEFCMDE3RUQyLTlCMzgtMzA4MC1BMEQy
LTkyNEZENkQ3RUQxNT4gL1VzZXJzL3NoYWppdGgvQXBwbGljYXRpb25zL1dlYktpdC5hcHAvQ29u
dGVudHMvRnJhbWV3b3Jrcy8xMC42L1dlYktpdC5mcmFtZXdvcmsvVmVyc2lvbnMvQS9XZWJLaXQK
ICAgIDB4N2ZmZjVmYzAwMDAwIC0gICAgIDB4N2ZmZjVmYzNiZGVmICBkeWxkIDEzMi4xICg/Pz8p
IDxCNTM2RjJGMS05REYxLTNCNkMtMUMyQy05MDc1RUEyMTlBMDY+IC91c3IvbGliL2R5bGQKICAg
IDB4N2ZmZjgwMDAzMDAwIC0gICAgIDB4N2ZmZjgwMDRhZmY3ICBjb20uYXBwbGUuY29yZXVpIDIg
KDExNCkgPDMxMTE4NDI2LTM1NUYtMjA2QS02NUFCLUNDQTJEMkQzRUJENz4gL1N5c3RlbS9MaWJy
YXJ5L1ByaXZhdGVGcmFtZXdvcmtzL0NvcmVVSS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9Db3JlVUkK
ICAgIDB4N2ZmZjgwMDRiMDAwIC0gICAgIDB4N2ZmZjgwMGQwZmY3ICBjb20uYXBwbGUucHJpbnQu
ZnJhbWV3b3JrLlByaW50Q29yZSA2LjMgKDMxMi43KSA8Q0RGRTgyREQtRDgxMS1BMDkxLTE3OUYt
NkU3NjA2OUI0MzJEPiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZp
Y2VzLmZyYW1ld29yay9WZXJzaW9ucy9BL0ZyYW1ld29ya3MvUHJpbnRDb3JlLmZyYW1ld29yay9W
ZXJzaW9ucy9BL1ByaW50Q29yZQogICAgMHg3ZmZmODAwZDEwMDAgLSAgICAgMHg3ZmZmODAxZThm
ZWYgIGxpYnhtbDIuMi5keWxpYiAxMC4zLjAgKGNvbXBhdGliaWxpdHkgMTAuMC4wKSA8MUIyN0FG
REQtREY4Ny0yMDA5LTE3MEUtQzEyOUUxNTcyRThCPiAvdXNyL2xpYi9saWJ4bWwyLjIuZHlsaWIK
ICAgIDB4N2ZmZjgwNmZjMDAwIC0gICAgIDB4N2ZmZjgwNzBkZmY3ICBsaWJ6LjEuZHlsaWIgMS4y
LjMgKGNvbXBhdGliaWxpdHkgMS4wLjApIDxGQjVFRTUzQS0wNTM0LTBGRkEtQjJFRC00ODY2MDk0
MzM3MTc+IC91c3IvbGliL2xpYnouMS5keWxpYgogICAgMHg3ZmZmODA3NjMwMDAgLSAgICAgMHg3
ZmZmODA3NjlmZjcgIElPU3VyZmFjZSA/Pz8gKD8/PykgPDA0RURDRURFLUUzNkYtMTVGOC1EQzY3
LUU2MUUxNDlEMkM5QT4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvSU9TdXJmYWNlLmZyYW1l
d29yay9WZXJzaW9ucy9BL0lPU3VyZmFjZQogICAgMHg3ZmZmODA3NmEwMDAgLSAgICAgMHg3ZmZm
ODA3YmRmZjcgIGNvbS5hcHBsZS5ISVNlcnZpY2VzIDEuOC4zICg/Pz8pIDxGNkUwQzdBNy1DMTFE
LTAwOTYtNEREQS0yQzc3NzkzQUE2Q0Q+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxp
Y2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL1ZlcnNpb25zL0EvRnJhbWV3b3Jrcy9ISVNlcnZpY2Vz
LmZyYW1ld29yay9WZXJzaW9ucy9BL0hJU2VydmljZXMKICAgIDB4N2ZmZjgwN2ZlMDAwIC0gICAg
IDB4N2ZmZjgwN2ZlZmY3ICBjb20uYXBwbGUuQWNjZWxlcmF0ZSAxLjYgKEFjY2VsZXJhdGUgMS42
KSA8MTVERjhCNEEtOTZCMi1DQjRFLTM2OEQtREVDN0RGNkI2MkJCPiAvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9BY2NlbGVyYXRlLmZyYW1ld29yay9WZXJzaW9ucy9BL0FjY2VsZXJhdGUKICAg
IDB4N2ZmZjgwOGU3MDAwIC0gICAgIDB4N2ZmZjgwOTBjZmY3ICBjb20uYXBwbGUuQ29yZVZpZGVv
IDEuNi4yICg0NS42KSA8RTEzOEM4RTctM0NCNi01NUE5LTBBMkMtQjczRkU2M0VBMjg4PiAvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlVmlkZW8uZnJhbWV3b3JrL1ZlcnNpb25zL0EvQ29y
ZVZpZGVvCiAgICAweDdmZmY4MGE1MTAwMCAtICAgICAweDdmZmY4MGE1MWZmNyAgY29tLmFwcGxl
LkFjY2VsZXJhdGUudmVjTGliIDMuNiAodmVjTGliIDMuNikgPDRDQ0U1RDY5LUYxQjMtOEZEMy0x
NDgzLUUwMjcxREIyQ0NGMz4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQWNjZWxlcmF0ZS5m
cmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtzL3ZlY0xpYi5mcmFtZXdvcmsvVmVyc2lvbnMv
QS92ZWNMaWIKICAgIDB4N2ZmZjgwYTUyMDAwIC0gICAgIDB4N2ZmZjgwYWExZmVmICBsaWJUSUZG
LmR5bGliID8/PyAoPz8/KSA8MUUyNTkzRDEtQTdGNi04NEM2LURGOEYtMEI0NkFFNDQ1OTI2PiAv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9W
ZXJzaW9ucy9BL0ZyYW1ld29ya3MvSW1hZ2VJTy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9SZXNvdXJj
ZXMvbGliVElGRi5keWxpYgogICAgMHg3ZmZmODBhYTIwMDAgLSAgICAgMHg3ZmZmODE0OWNmZjcg
IGNvbS5hcHBsZS5BcHBLaXQgNi42LjggKDEwMzguMzYpIDw0Q0ZCRTA0Qy04RkIzLUIwRUEtOERE
Qi03RTdEMTBFOUQyNTE+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdv
cmsvVmVyc2lvbnMvQy9BcHBLaXQKICAgIDB4N2ZmZjgxNDlkMDAwIC0gICAgIDB4N2ZmZjgxNGI0
ZmZmICBjb20uYXBwbGUuSW1hZ2VDYXB0dXJlIDYuMSAoNi4xKSA8NzlBQjIxMzEtMkE2Qy1GMzUx
LTM4QTktRUQ1OEIyNTUzNEZEPiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJh
bWV3b3JrL1ZlcnNpb25zL0EvRnJhbWV3b3Jrcy9JbWFnZUNhcHR1cmUuZnJhbWV3b3JrL1ZlcnNp
b25zL0EvSW1hZ2VDYXB0dXJlCiAgICAweDdmZmY4MTVlYzAwMCAtICAgICAweDdmZmY4MTY4Y2Zm
ZiAgY29tLmFwcGxlLkxhdW5jaFNlcnZpY2VzIDM2Mi4zICgzNjIuMykgPEI5MEI3QzMxLUZFRjgt
M0MyNi1CRkIzLUQ4QTQ4QkQyQzBEQT4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNl
cnZpY2VzLmZyYW1ld29yay9WZXJzaW9ucy9BL0ZyYW1ld29ya3MvTGF1bmNoU2VydmljZXMuZnJh
bWV3b3JrL1ZlcnNpb25zL0EvTGF1bmNoU2VydmljZXMKICAgIDB4N2ZmZjgxNjhkMDAwIC0gICAg
IDB4N2ZmZjgxNjljZmZmICBsaWJ4YXIuMS5keWxpYiA/Pz8gKD8/PykgPENCQUY4NjJBLTNDNzct
NjQ0Ni01NkMyLTlDNDQ2MTYzMUFBRj4gL3Vzci9saWIvbGlieGFyLjEuZHlsaWIKICAgIDB4N2Zm
ZjgxNjlkMDAwIC0gICAgIDB4N2ZmZjgxNmE0ZmZmICBjb20uYXBwbGUuT3BlbkRpcmVjdG9yeSAx
MC42ICgxMC42KSA8NDIwMENGQjAtREJBMS02MkI4LTdDN0MtOTE0NDZEODk1NTFGPiAvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9PcGVuRGlyZWN0b3J5LmZyYW1ld29yay9WZXJzaW9ucy9BL09w
ZW5EaXJlY3RvcnkKICAgIDB4N2ZmZjgxNmE1MDAwIC0gICAgIDB4N2ZmZjgxNmVkZmY3ICBsaWJ2
RFNQLmR5bGliIDI2OC4wLjEgKGNvbXBhdGliaWxpdHkgMS4wLjApIDw5OEZDNDQ1Ny1GNDA1LTAy
NjItMDBGNy01NjExOUNBMTA3QjY+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FjY2VsZXJh
dGUuZnJhbWV3b3JrL1ZlcnNpb25zL0EvRnJhbWV3b3Jrcy92ZWNMaWIuZnJhbWV3b3JrL1ZlcnNp
b25zL0EvbGlidkRTUC5keWxpYgogICAgMHg3ZmZmODE2ZWUwMDAgLSAgICAgMHg3ZmZmODE3NmRm
ZTcgIGNvbS5hcHBsZS5hdWRpby5Db3JlQXVkaW8gMy4yLjYgKDMuMi42KSA8NzlFMjU2RUItNDNG
MS1DN0FBLTY0MzYtMTI0QTRGRkIwMkQwPiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3Jl
QXVkaW8uZnJhbWV3b3JrL1ZlcnNpb25zL0EvQ29yZUF1ZGlvCiAgICAweDdmZmY4MWI1NzAwMCAt
ICAgICAweDdmZmY4MWI2OGZmZiAgU3luZGljYXRpb25VSSA/Pz8gKD8/PykgPDExN0YwOTcxLThC
N0UtREMyQS04NEMxLUM4QjVGQTE1RTQyMT4gL1N5c3RlbS9MaWJyYXJ5L1ByaXZhdGVGcmFtZXdv
cmtzL1N5bmRpY2F0aW9uVUkuZnJhbWV3b3JrL1ZlcnNpb25zL0EvU3luZGljYXRpb25VSQogICAg
MHg3ZmZmODFjOWEwMDAgLSAgICAgMHg3ZmZmODFjZWZmZjcgIGNvbS5hcHBsZS5mcmFtZXdvcmsu
ZmFtaWx5Y29udHJvbHMgMi4wLjIgKDIwMjApIDxGMDk1NDFCNi01RTI4LTFDMDEtQzFBRS1GNkEy
NTA4NjcwQzc+IC9TeXN0ZW0vTGlicmFyeS9Qcml2YXRlRnJhbWV3b3Jrcy9GYW1pbHlDb250cm9s
cy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GYW1pbHlDb250cm9scwogICAgMHg3ZmZmODFkMzYwMDAg
LSAgICAgMHg3ZmZmODFkMzZmZjcgIGNvbS5hcHBsZS5DYXJib24gMTUwICgxNTIpIDwxOUIzN0I3
Qi0xNTk0LUFEMEEtN0YxNC1GQTJGODVBRDcyNDE+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NhcmJvbi5mcmFtZXdvcmsvVmVyc2lvbnMvQS9DYXJib24KICAgIDB4N2ZmZjgxZDM3MDAwIC0g
ICAgIDB4N2ZmZjgxZDNjZmZmICBsaWJHSUYuZHlsaWIgPz8/ICg/Pz8pIDwyMDFCODA3Ny1CNUND
LTExQUEtRTFCMC0xRDA1N0FCRTQxNkE+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxp
Y2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL1ZlcnNpb25zL0EvRnJhbWV3b3Jrcy9JbWFnZUlPLmZy
YW1ld29yay9WZXJzaW9ucy9BL1Jlc291cmNlcy9saWJHSUYuZHlsaWIKICAgIDB4N2ZmZjgxZGEw
MDAwIC0gICAgIDB4N2ZmZjgxZGVmZmY3ICBjb20uYXBwbGUuRGlyZWN0b3J5U2VydmljZS5QYXNz
d29yZFNlcnZlckZyYW1ld29yayA2LjEgKDYuMSkgPDAxQjM3MEZCLUQ1MjQtRjY2MC0zODI2LUU4
NUI3RjBEODVDRD4gL1N5c3RlbS9MaWJyYXJ5L1ByaXZhdGVGcmFtZXdvcmtzL1Bhc3N3b3JkU2Vy
dmVyLmZyYW1ld29yay9WZXJzaW9ucy9BL1Bhc3N3b3JkU2VydmVyCiAgICAweDdmZmY4MWUwNjAw
MCAtICAgICAweDdmZmY4MWU4M2ZlZiAgbGlic3RkYysrLjYuZHlsaWIgNy45LjAgKGNvbXBhdGli
aWxpdHkgNy4wLjApIDwzNUVDQTQxMS0yQzA4LUZEN0QtMTFCMS0xQjdBMDQ5MjFBNUM+IC91c3Iv
bGliL2xpYnN0ZGMrKy42LmR5bGliCiAgICAweDdmZmY4MWVmNTAwMCAtICAgICAweDdmZmY4MWYz
NmZmZiAgY29tLmFwcGxlLlN5c3RlbUNvbmZpZ3VyYXRpb24gMS4xMC44ICgxLjEwLjIpIDw3OEQ0
OEQyNy1BOUM0LTYyQ0EtMjgwMy1EMEJCRUQ4Mjg1NUE+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL1N5c3RlbUNvbmZpZ3VyYXRpb24uZnJhbWV3b3JrL1ZlcnNpb25zL0EvU3lzdGVtQ29uZmln
dXJhdGlvbgogICAgMHg3ZmZmODFmMzgwMDAgLSAgICAgMHg3ZmZmODIxYmFmZTcgIGNvbS5hcHBs
ZS5Gb3VuZGF0aW9uIDYuNi43ICg3NTEuNjIpIDw2RjJBNUJCRi02OTkwLUQ1NjEtMjkyOC1BRDYx
RTk0MDM2RDk+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3Jr
L1ZlcnNpb25zL0MvRm91bmRhdGlvbgogICAgMHg3ZmZmODIxYmIwMDAgLSAgICAgMHg3ZmZmODIy
MjVmZTcgIGxpYnZNaXNjLmR5bGliIDI2OC4wLjEgKGNvbXBhdGliaWxpdHkgMS4wLjApIDw3QkQ3
RjE5Qi1BQ0Q0LTE4NkMtQjQyRC00REVCQTY3OTU2Mjg+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0FjY2VsZXJhdGUuZnJhbWV3b3JrL1ZlcnNpb25zL0EvRnJhbWV3b3Jrcy92ZWNMaWIuZnJh
bWV3b3JrL1ZlcnNpb25zL0EvbGlidk1pc2MuZHlsaWIKICAgIDB4N2ZmZjgyMjI2MDAwIC0gICAg
IDB4N2ZmZjgyMjcwZmY3ICBjb20uYXBwbGUuTWV0YWRhdGEgMTAuNi4zICg1MDcuMTUpIDwyRUYx
OTA1NS1EN0FFLTRENzctRTU4OS03QjcxQjBCQzFFNTk+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtzL01ldGFkYXRh
LmZyYW1ld29yay9WZXJzaW9ucy9BL01ldGFkYXRhCiAgICAweDdmZmY4MjMyZTAwMCAtICAgICAw
eDdmZmY4MjMzNGZmNyAgY29tLmFwcGxlLkNvbW1lcmNlQ29yZSAxLjAgKDkuMSkgPDM2OTFFOUJB
LUJDRjQtOThDNy1FRkVDLTc4REE2ODI1MDA0RT4gL1N5c3RlbS9MaWJyYXJ5L1ByaXZhdGVGcmFt
ZXdvcmtzL0NvbW1lcmNlS2l0LmZyYW1ld29yay9WZXJzaW9ucy9BL0ZyYW1ld29ya3MvQ29tbWVy
Y2VDb3JlLmZyYW1ld29yay9WZXJzaW9ucy9BL0NvbW1lcmNlQ29yZQogICAgMHg3ZmZmODIzMzUw
MDAgLSAgICAgMHg3ZmZmODIzMzZmZjcgIGNvbS5hcHBsZS5hdWRpby51bml0cy5BdWRpb1VuaXQg
MS42LjcgKDEuNi43KSA8NTMyOTk5NDgtMjU1NC0wRjhGLTc1MDEtMDRCMzRFNDlGNkNGPiAvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BdWRpb1VuaXQuZnJhbWV3b3JrL1ZlcnNpb25zL0EvQXVk
aW9Vbml0CiAgICAweDdmZmY4MjM1YzAwMCAtICAgICAweDdmZmY4MjUxYWZmNyAgY29tLmFwcGxl
LkltYWdlSU8uZnJhbWV3b3JrIDMuMC40ICgzLjAuNCkgPDBBNEY1MUExLTQ1MDItNzY3Qi04QTRF
LUYxNEM2MjE0RUY4OD4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2
aWNlcy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtzL0ltYWdlSU8uZnJhbWV3b3JrL1Zl
cnNpb25zL0EvSW1hZ2VJTwogICAgMHg3ZmZmODI1NjMwMDAgLSAgICAgMHg3ZmZmODI1OTZmZjcg
IGxpYlRydWVUeXBlU2NhbGVyLmR5bGliID8/PyAoPz8/KSA8NjlENEEyMTMtNDVEMi0xOTZELTdG
RjgtQjUyQTMxREZEMzI5PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNl
cnZpY2VzLmZyYW1ld29yay9WZXJzaW9ucy9BL0ZyYW1ld29ya3MvQVRTLmZyYW1ld29yay9WZXJz
aW9ucy9BL1Jlc291cmNlcy9saWJUcnVlVHlwZVNjYWxlci5keWxpYgogICAgMHg3ZmZmODI3N2Uw
MDAgLSAgICAgMHg3ZmZmODI3OTlmZjcgIGNvbS5hcHBsZS5vcGVuc2NyaXB0aW5nIDEuMy4xICg/
Pz8pIDxEQzMyOUNENC0xMTU5LUE0MEEtQTc2OS03MENBQTcwRjYwMUE+IC9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtzL09wZW5T
Y3JpcHRpbmcuZnJhbWV3b3JrL1ZlcnNpb25zL0EvT3BlblNjcmlwdGluZwogICAgMHg3ZmZmODI3
YzQwMDAgLSAgICAgMHg3ZmZmODI3YzhmZjcgIGxpYm1hdGhDb21tb24uQS5keWxpYiAzMTUuMC4w
IChjb21wYXRpYmlsaXR5IDEuMC4wKSA8OTU3MTg2NzMtRkVFRS1CNkVELUIxMjctQkNEQkRCNjBE
NEU1PiAvdXNyL2xpYi9zeXN0ZW0vbGlibWF0aENvbW1vbi5BLmR5bGliCiAgICAweDdmZmY4Mjdj
OTAwMCAtICAgICAweDdmZmY4MmMxMGZlZiAgY29tLmFwcGxlLlJhd0NhbWVyYS5idW5kbGUgMy43
LjEgKDU3MCkgPDVBRkE4N0NBLURDM0QtRjg0RS03RUExLTZFQUJBODgwNzc2Nj4gL1N5c3RlbS9M
aWJyYXJ5L0NvcmVTZXJ2aWNlcy9SYXdDYW1lcmEuYnVuZGxlL0NvbnRlbnRzL01hY09TL1Jhd0Nh
bWVyYQogICAgMHg3ZmZmODJjMTEwMDAgLSAgICAgMHg3ZmZmODJjMTNmZmYgIGxpYlJhZGlhbmNl
LmR5bGliID8/PyAoPz8/KSA8QTlEQjRENUQtNDA3Mi05NzFCLURFRjYtRERFNjQ1RjQxNUVBPiAv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9W
ZXJzaW9ucy9BL0ZyYW1ld29ya3MvSW1hZ2VJTy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9SZXNvdXJj
ZXMvbGliUmFkaWFuY2UuZHlsaWIKICAgIDB4N2ZmZjgyYzE0MDAwIC0gICAgIDB4N2ZmZjgyY2Q1
ZmVmICBjb20uYXBwbGUuQ29sb3JTeW5jIDQuNi42ICg0LjYuNikgPEJCMkM1ODEzLUM2MUQtM0NC
QS1BOEY3LTBFNTlFNDZFQkVFOD4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRp
b25TZXJ2aWNlcy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtzL0NvbG9yU3luYy5mcmFt
ZXdvcmsvVmVyc2lvbnMvQS9Db2xvclN5bmMKICAgIDB4N2ZmZjgyY2Q2MDAwIC0gICAgIDB4N2Zm
ZjgyY2U1ZmZmICBjb20uYXBwbGUuTmV0RlMgMy4yLjIgKDMuMi4yKSA8N0NDQkQ3MEUtQkYzMS1B
N0E3LURCOTgtMjMwNjg3NzczMTQ1PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9OZXRGUy5m
cmFtZXdvcmsvVmVyc2lvbnMvQS9OZXRGUwogICAgMHg3ZmZmODJjZTYwMDAgLSAgICAgMHg3ZmZm
ODM0ZjBmZTcgIGxpYkJMQVMuZHlsaWIgMjE5LjAuMCAoY29tcGF0aWJpbGl0eSAxLjAuMCkgPDJG
MjZDREM3LURBRTktOUFCRS02ODA2LTkzQkJCREEyMERBMD4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQWNjZWxlcmF0ZS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtzL3ZlY0xpYi5m
cmFtZXdvcmsvVmVyc2lvbnMvQS9saWJCTEFTLmR5bGliCiAgICAweDdmZmY4MzUwZDAwMCAtICAg
ICAweDdmZmY4MzVjNmZmZiAgbGlic3FsaXRlMy5keWxpYiA5LjYuMCAoY29tcGF0aWJpbGl0eSA5
LjAuMCkgPDJDNUVEMzEyLUU2NDYtOUFERS03M0E5LTYxOTlBMkE0MzE1MD4gL3Vzci9saWIvbGli
c3FsaXRlMy5keWxpYgogICAgMHg3ZmZmODQ3NzQwMDAgLSAgICAgMHg3ZmZmODQ3OWNmZmYgIGNv
bS5hcHBsZS5EaWN0aW9uYXJ5U2VydmljZXMgMS4xLjIgKDEuMS4yKSA8RTkyNjkwNjktOTNGQS0y
QjcxLUY5QkEtRkRERDIzQzRBNjVFPiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vy
dmljZXMuZnJhbWV3b3JrL1ZlcnNpb25zL0EvRnJhbWV3b3Jrcy9EaWN0aW9uYXJ5U2VydmljZXMu
ZnJhbWV3b3JrL1ZlcnNpb25zL0EvRGljdGlvbmFyeVNlcnZpY2VzCiAgICAweDdmZmY4NDdmYzAw
MCAtICAgICAweDdmZmY4NDgxMGZmNyAgY29tLmFwcGxlLnNwZWVjaC5zeW50aGVzaXMuZnJhbWV3
b3JrIDMuMTAuMzUgKDMuMTAuMzUpIDw1NzRDMUJFMC01RTVFLUNDQUYtMDZGOC05MkE2OUNCMjg5
MkQ+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3
b3JrL1ZlcnNpb25zL0EvRnJhbWV3b3Jrcy9TcGVlY2hTeW50aGVzaXMuZnJhbWV3b3JrL1ZlcnNp
b25zL0EvU3BlZWNoU3ludGhlc2lzCiAgICAweDdmZmY4NDgxMTAwMCAtICAgICAweDdmZmY4NDg0
ZWZmNyAgbGlic3NsLjAuOS44LmR5bGliIDAuOS44IChjb21wYXRpYmlsaXR5IDAuOS44KSA8Rjc0
MzM4OUYtRjI1QS1BNzdELTRGQ0EtRDZCMDFBRjJFRTZEPiAvdXNyL2xpYi9saWJzc2wuMC45Ljgu
ZHlsaWIKICAgIDB4N2ZmZjg0ODRmMDAwIC0gICAgIDB4N2ZmZjg0ODYxZmU3ICBsaWJzYXNsMi4y
LmR5bGliIDMuMTUuMCAoY29tcGF0aWJpbGl0eSAzLjAuMCkgPDMwRkUzNzhCLTk5RkUtOEM3Qy0w
NkQwLUEzQUEwQTBBNzBEND4gL3Vzci9saWIvbGlic2FzbDIuMi5keWxpYgogICAgMHg3ZmZmODQ4
OTMwMDAgLSAgICAgMHg3ZmZmODQ4ZGNmZjcgIGNvbS5hcHBsZS5zZWN1cml0eWludGVyZmFjZSA0
LjAuMSAoNDA0MTgpIDxFMkRDNzk2RC04NEVDLTQ4RjUtMzRBOS1ERjYxNDU3M0JFNzQ+IC9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5SW50ZXJmYWNlLmZyYW1ld29yay9WZXJzaW9u
cy9BL1NlY3VyaXR5SW50ZXJmYWNlCiAgICAweDdmZmY4NGIwMDAwMCAtICAgICAweDdmZmY4NGI0
M2ZlZiAgbGlidGlkeS5BLmR5bGliID8/PyAoPz8/KSA8MkY0MjczRDMtNDE4Qi02NjhDLUY0ODgt
N0U2NTlEM0E4QzIzPiAvdXNyL2xpYi9saWJ0aWR5LkEuZHlsaWIKICAgIDB4N2ZmZjg0YmZhMDAw
IC0gICAgIDB4N2ZmZjg1MmY2ZmY3ICBjb20uYXBwbGUuQ29yZUdyYXBoaWNzIDEuNTQ1LjAgKD8/
PykgPDU4RDU5N0IxLUVCM0ItNzEwRS0wQjhDLUVDMTE0RDU0RTExQj4gL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFt
ZXdvcmtzL0NvcmVHcmFwaGljcy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9Db3JlR3JhcGhpY3MKICAg
IDB4N2ZmZjg1M2I3MDAwIC0gICAgIDB4N2ZmZjg1M2M2ZmVmICBjb20uYXBwbGUub3BlbmdsIDEu
Ni4xMyAoMS42LjEzKSA8NTE2MDk4QjMtNDUxNy04QTU1LTY0QkItMTk1Q0RBQTUzMzREPiAvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9PcGVuR0wuZnJhbWV3b3JrL1ZlcnNpb25zL0EvT3BlbkdM
CiAgICAweDdmZmY4NTNjNzAwMCAtICAgICAweDdmZmY4NTNkNGZlNyAgbGliQ1N5bmMuQS5keWxp
YiA1NDUuMC4wIChjb21wYXRpYmlsaXR5IDY0LjAuMCkgPDFDMzVGQTUwLTlDNzAtNDhEQy05RThE
LTIwNTRGN0EyNjZCMT4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2
aWNlcy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtzL0NvcmVHcmFwaGljcy5mcmFtZXdv
cmsvVmVyc2lvbnMvQS9SZXNvdXJjZXMvbGliQ1N5bmMuQS5keWxpYgogICAgMHg3ZmZmODUzZDUw
MDAgLSAgICAgMHg3ZmZmODU1MTNmZmYgIGNvbS5hcHBsZS5Db3JlRGF0YSAxMDIuMSAoMjUxKSA8
OTZDNUU5QTYtQzI4Qy1FOUNDLUEwREItMjc4MDFBMjJBNDlGPiAvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9Db3JlRGF0YS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9Db3JlRGF0YQogICAgMHg3ZmZm
ODU1NWYwMDAgLSAgICAgMHg3ZmZmODU1NjBmZjcgIGNvbS5hcHBsZS5UcnVzdEV2YWx1YXRpb25B
Z2VudCAxLjEgKDEpIDxBOTFDRTVCOS0zQzYzLTVGOEMtNTA1Mi05NUNDQUI4NjZGNzI+IC9TeXN0
ZW0vTGlicmFyeS9Qcml2YXRlRnJhbWV3b3Jrcy9UcnVzdEV2YWx1YXRpb25BZ2VudC5mcmFtZXdv
cmsvVmVyc2lvbnMvQS9UcnVzdEV2YWx1YXRpb25BZ2VudAogICAgMHg3ZmZmODU1NjEwMDAgLSAg
ICAgMHg3ZmZmODU1N2FmZmYgIGNvbS5hcHBsZS5DRk9wZW5EaXJlY3RvcnkgMTAuNiAoMTAuNikg
PENDRjc5NzE2LTdDQzYtMjUyMC1DNkVCLUE0RjU2QUQwQTIwNz4gL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvT3BlbkRpcmVjdG9yeS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtzL0NG
T3BlbkRpcmVjdG9yeS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9DRk9wZW5EaXJlY3RvcnkKICAgIDB4
N2ZmZjg1NTdiMDAwIC0gICAgIDB4N2ZmZjg1NWJjZmVmICBjb20uYXBwbGUuUUQgMy4zNiAoPz8/
KSA8NURDNDFFODEtMzJDOS02NUIyLTU1MjgtQjMzRTkzNEQ1QkI0PiAvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9WZXJzaW9ucy9BL0ZyYW1l
d29ya3MvUUQuZnJhbWV3b3JrL1ZlcnNpb25zL0EvUUQKICAgIDB4N2ZmZjg1NWJkMDAwIC0gICAg
IDB4N2ZmZjg1NWU4ZmY3ICBsaWJ4c2x0LjEuZHlsaWIgMy4yNC4wIChjb21wYXRpYmlsaXR5IDMu
MC4wKSA8OEFCNENBOUUtNDM1QS0zM0RBLTcwNDEtOTA0QkE3RkExMUQ1PiAvdXNyL2xpYi9saWJ4
c2x0LjEuZHlsaWIKICAgIDB4N2ZmZjg1NWU5MDAwIC0gICAgIDB4N2ZmZjg1NmFhZmZmICBsaWJG
b250UGFyc2VyLmR5bGliID8/PyAoPz8/KSA8QTAwQkIwQTctRTQ2Qy0xRDA3LTEzOTEtMTk0NzQ1
NTY2QzdFPiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZy
YW1ld29yay9WZXJzaW9ucy9BL0ZyYW1ld29ya3MvQVRTLmZyYW1ld29yay9WZXJzaW9ucy9BL1Jl
c291cmNlcy9saWJGb250UGFyc2VyLmR5bGliCiAgICAweDdmZmY4NTZhYjAwMCAtICAgICAweDdm
ZmY4NTgyMmZlNyAgY29tLmFwcGxlLkNvcmVGb3VuZGF0aW9uIDYuNi41ICg1NTAuNDMpIDwzMUEx
QzExOC1BRDk2LTBBMTEtOEJERi1CRDU1Qjk5NDBFREM+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NvcmVGb3VuZGF0aW9uLmZyYW1ld29yay9WZXJzaW9ucy9BL0NvcmVGb3VuZGF0aW9uCiAg
ICAweDdmZmY4NTgzNzAwMCAtICAgICAweDdmZmY4NThjM2ZlZiAgU2VjdXJpdHlGb3VuZGF0aW9u
ID8/PyAoPz8/KSA8Njg2MERFMjYtMEQ0Mi1EMUU4LUNEN0MtNUI0MkQ3OEMxRTFEPiAvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eUZvdW5kYXRpb24uZnJhbWV3b3JrL1ZlcnNpb25z
L0EvU2VjdXJpdHlGb3VuZGF0aW9uCiAgICAweDdmZmY4NThjNDAwMCAtICAgICAweDdmZmY4NThj
NGZmNyAgY29tLmFwcGxlLnZlY0xpYiAzLjYgKHZlY0xpYiAzLjYpIDw5NkZCNkJBRC01NTY4LUM0
RTAtNkZBNy0wMjc5MUE1OEI1ODQ+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL3ZlY0xpYi5m
cmFtZXdvcmsvVmVyc2lvbnMvQS92ZWNMaWIKICAgIDB4N2ZmZjg1OGM1MDAwIC0gICAgIDB4N2Zm
Zjg1OGRhZmY3ICBjb20uYXBwbGUuTGFuZ0FuYWx5c2lzIDEuNi42ICgxLjYuNikgPERDOTk5QjMy
LUJGNDEtOTRDOC0wNTgzLTI3RDlBQjQ2M0U4Qj4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
QXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtzL0xhbmdB
bmFseXNpcy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9MYW5nQW5hbHlzaXMKICAgIDB4N2ZmZjg1OGRi
MDAwIC0gICAgIDB4N2ZmZjg1OWFmZmU3ICBjb20uYXBwbGUuQ0ZOZXR3b3JrIDQ1NC4xMi40ICg0
NTQuMTIuNCkgPEM4M0UyQkExLTE4MTgtQjNFOC01MzM0LTg2MEFEMjFEMUM4MD4gL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9WZXJzaW9ucy9BL0ZyYW1l
d29ya3MvQ0ZOZXR3b3JrLmZyYW1ld29yay9WZXJzaW9ucy9BL0NGTmV0d29yawogICAgMHg3ZmZm
ODVkMjcwMDAgLSAgICAgMHg3ZmZmODVkNzBmZWYgIGxpYkdMVS5keWxpYiA/Pz8gKD8/PykgPDFD
MDUwMDg4LTRBQjItMkJDMi02MkU2LUM5NjlGOTI1QTk0NT4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvT3BlbkdMLmZyYW1ld29yay9WZXJzaW9ucy9BL0xpYnJhcmllcy9saWJHTFUuZHlsaWIK
ICAgIDB4N2ZmZjg1ZDcxMDAwIC0gICAgIDB4N2ZmZjg1ZDcxZmY3ICBjb20uYXBwbGUuQ29yZVNl
cnZpY2VzIDQ0ICg0NCkgPERDNzQwMEZCLTg1MUUtN0I4QS01QkY2LTZGNTAwOTQzMDJGQj4gL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9WZXJzaW9ucy9B
L0NvcmVTZXJ2aWNlcwogICAgMHg3ZmZmODVkZjAwMDAgLSAgICAgMHg3ZmZmODVlYTBmZmYgIGVk
dS5taXQuS2VyYmVyb3MgNi41LjExICg2LjUuMTEpIDwwODVEODBGNS1DOURDLUUyNTItQzIxQi0w
MzI5NUU2NjBDOTE+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0tlcmJlcm9zLmZyYW1ld29y
ay9WZXJzaW9ucy9BL0tlcmJlcm9zCiAgICAweDdmZmY4NWVjOTAwMCAtICAgICAweDdmZmY4NWVj
Y2ZmNyAgY29tLmFwcGxlLnNlY3VyaXR5aGkgNC4wICgzNjYzOCkgPDM4OTM1ODUxLTA5RTQtRERB
Qi1EQjFELTMwQURDMzlGN0VEMD4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZy
YW1ld29yay9WZXJzaW9ucy9BL0ZyYW1ld29ya3MvU2VjdXJpdHlISS5mcmFtZXdvcmsvVmVyc2lv
bnMvQS9TZWN1cml0eUhJCiAgICAweDdmZmY4NWVjZDAwMCAtICAgICAweDdmZmY4NWZlY2ZlNyAg
bGliY3J5cHRvLjAuOS44LmR5bGliIDAuOS44IChjb21wYXRpYmlsaXR5IDAuOS44KSA8MTQxMTVE
MjktNDMyQi1DRjAyLTZCMjQtQTYwQ0M1MzNBMDlFPiAvdXNyL2xpYi9saWJjcnlwdG8uMC45Ljgu
ZHlsaWIKICAgIDB4N2ZmZjg1ZmVkMDAwIC0gICAgIDB4N2ZmZjg2MDdkZmZmICBjb20uYXBwbGUu
U2VhcmNoS2l0IDEuMy4wICgxLjMuMCkgPDQ1QkExMDUzLTkxOTYtM0MyRi0yNDIxLUFGRjVFMDk2
MjdDQz4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9W
ZXJzaW9ucy9BL0ZyYW1ld29ya3MvU2VhcmNoS2l0LmZyYW1ld29yay9WZXJzaW9ucy9BL1NlYXJj
aEtpdAogICAgMHg3ZmZmODYwN2UwMDAgLSAgICAgMHg3ZmZmODYxNjNmZWYgIGNvbS5hcHBsZS5E
ZXNrdG9wU2VydmljZXMgMS41LjExICgxLjUuMTEpIDwzOUZBQTNEMi02ODYzLUI1QUItQUVEOS05
MkQ4NzhFQTI0Mzg+IC9TeXN0ZW0vTGlicmFyeS9Qcml2YXRlRnJhbWV3b3Jrcy9EZXNrdG9wU2Vy
dmljZXNQcml2LmZyYW1ld29yay9WZXJzaW9ucy9BL0Rlc2t0b3BTZXJ2aWNlc1ByaXYKICAgIDB4
N2ZmZjg2MTY0MDAwIC0gICAgIDB4N2ZmZjg2MTlmZmZmICBjb20uYXBwbGUuQUUgNDk2LjUgKDQ5
Ni41KSA8MjA4REYzOTEtNERFNi04MUVELUM2OTctMTRBMjkzMEQxQkM2PiAvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL1ZlcnNpb25zL0EvRnJhbWV3b3Jr
cy9BRS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9BRQogICAgMHg3ZmZmODYxYTAwMDAgLSAgICAgMHg3
ZmZmODY1ZTNmZWYgIGxpYkxBUEFDSy5keWxpYiAyMTkuMC4wIChjb21wYXRpYmlsaXR5IDEuMC4w
KSA8NTdEMzg3MDUtNkYyMS0yQTgyLUYzRjYtMDNDRkZGMjE0Nzc1PiAvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9BY2NlbGVyYXRlLmZyYW1ld29yay9WZXJzaW9ucy9BL0ZyYW1ld29ya3MvdmVj
TGliLmZyYW1ld29yay9WZXJzaW9ucy9BL2xpYkxBUEFDSy5keWxpYgogICAgMHg3ZmZmODY3OWYw
MDAgLSAgICAgMHg3ZmZmODY3YmNmZjcgIGxpYlBuZy5keWxpYiA/Pz8gKD8/PykgPDZEOEU1MTVC
LUUwQTItMkJBMS05Q0FDLThDQjhBOEIzNTg3OT4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
QXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtzL0ltYWdl
SU8uZnJhbWV3b3JrL1ZlcnNpb25zL0EvUmVzb3VyY2VzL2xpYlBuZy5keWxpYgogICAgMHg3ZmZm
ODY3YmQwMDAgLSAgICAgMHg3ZmZmODY4M2JmZjcgIGNvbS5hcHBsZS5Db3JlVGV4dCAxNTEuMTAg
KD8/PykgPDU0OTYxOTk3LTU1RDgtREMwRi0yNjM0LTY3NEU0NTJENUE4RT4gL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9G
cmFtZXdvcmtzL0NvcmVUZXh0LmZyYW1ld29yay9WZXJzaW9ucy9BL0NvcmVUZXh0CiAgICAweDdm
ZmY4Njg0MzAwMCAtICAgICAweDdmZmY4Njg4NmZmNyAgbGliUklQLkEuZHlsaWIgNTQ1LjAuMCAo
Y29tcGF0aWJpbGl0eSA2NC4wLjApIDw1RkYzRDdGRC04NEQ4LUM1RkEtRDY0MC05MEJCODJFQzY1
MUQ+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3
b3JrL1ZlcnNpb25zL0EvRnJhbWV3b3Jrcy9Db3JlR3JhcGhpY3MuZnJhbWV3b3JrL1ZlcnNpb25z
L0EvUmVzb3VyY2VzL2xpYlJJUC5BLmR5bGliCiAgICAweDdmZmY4Njg4NzAwMCAtICAgICAweDdm
ZmY4NjhiZGZmNyAgY29tLmFwcGxlLmZyYW1ld29yay5BcHBsZTgwMjExIDYuMi41ICg2MjUuNikg
PEI2N0M3QTY1LUU0RkItNDQxOS0zRjMxLTQ0ODJFMTdFRjIwMz4gL1N5c3RlbS9MaWJyYXJ5L1By
aXZhdGVGcmFtZXdvcmtzL0FwcGxlODAyMTEuZnJhbWV3b3JrL1ZlcnNpb25zL0EvQXBwbGU4MDIx
MQogICAgMHg3ZmZmODZhY2MwMDAgLSAgICAgMHg3ZmZmODZhZDBmZjcgIGxpYkNHWFR5cGUuQS5k
eWxpYiA1NDUuMC4wIChjb21wYXRpYmlsaXR5IDY0LjAuMCkgPERCNzEwMjk5LUI0RDktMzcxNC02
NkY3LTVEMjk2NERFNTg1Qj4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25T
ZXJ2aWNlcy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtzL0NvcmVHcmFwaGljcy5mcmFt
ZXdvcmsvVmVyc2lvbnMvQS9SZXNvdXJjZXMvbGliQ0dYVHlwZS5BLmR5bGliCiAgICAweDdmZmY4
NzI2NjAwMCAtICAgICAweDdmZmY4NzYwM2ZlNyAgY29tLmFwcGxlLlF1YXJ0ekNvcmUgMS42LjMg
KDIyNy4zNykgPDE2REZGNkNELUVBNTgtQ0U2Mi1BMUQ3LTVGNkNFM0QwNjZERD4gL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvUXVhcnR6Q29yZS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9RdWFydHpD
b3JlCiAgICAweDdmZmY4NzZiZDAwMCAtICAgICAweDdmZmY4NzdmMmZmZiAgY29tLmFwcGxlLmF1
ZGlvLnRvb2xib3guQXVkaW9Ub29sYm94IDEuNi43ICgxLjYuNykgPEU1RDdEQkRCLTZEREYtRTZG
OS1DNzFDLTg2RjQ1MjBFRTVBMz4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXVkaW9Ub29s
Ym94LmZyYW1ld29yay9WZXJzaW9ucy9BL0F1ZGlvVG9vbGJveAogICAgMHg3ZmZmODc3ZjMwMDAg
LSAgICAgMHg3ZmZmODc3ZmVmZjcgIGNvbS5hcHBsZS5zcGVlY2gucmVjb2duaXRpb24uZnJhbWV3
b3JrIDMuMTEuMSAoMy4xMS4xKSA8QzM1OUI5M0ItQ0M5Qi1GQzBCLTk1OUUtRkIxMDY3NDEwM0E3
PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL1ZlcnNpb25zL0Ev
RnJhbWV3b3Jrcy9TcGVlY2hSZWNvZ25pdGlvbi5mcmFtZXdvcmsvVmVyc2lvbnMvQS9TcGVlY2hS
ZWNvZ25pdGlvbgogICAgMHg3ZmZmODc4N2IwMDAgLSAgICAgMHg3ZmZmODgwYTRmZWYgIGNvbS5h
cHBsZS5TYWZhcmkuZnJhbWV3b3JrIDY1MzQgKDY1MzQuNTApIDw1RTk4OTA5OC1CRUEwLTlERjkt
RURGQS1DRjA1QkRERUI4OTU+IC9TeXN0ZW0vTGlicmFyeS9Qcml2YXRlRnJhbWV3b3Jrcy9TYWZh
cmkuZnJhbWV3b3JrL1ZlcnNpb25zL0EvU2FmYXJpCiAgICAweDdmZmY4ODBhNTAwMCAtICAgICAw
eDdmZmY4ODBiYmZlZiAgbGliYnNtLjAuZHlsaWIgPz8/ICg/Pz8pIDwwMzIxRDMyQy05RkUxLTM5
MTktRTAzRS0yNTMwQTBDMTE5MUI+IC91c3IvbGliL2xpYmJzbS4wLmR5bGliCiAgICAweDdmZmY4
ODBiYzAwMCAtICAgICAweDdmZmY4ODBjN2ZmZiAgY29tLmFwcGxlLmNvcmVsb2NhdGlvbiAxMi4z
ICgxMi4zKSA8QTZDRkI0MTAtMjMzMy04QkUzLTY1OEItNzVBOTNDOTBBOUNDPiAvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9Db3JlTG9jYXRpb24uZnJhbWV3b3JrL1ZlcnNpb25zL0EvQ29yZUxv
Y2F0aW9uCiAgICAweDdmZmY4ODBjODAwMCAtICAgICAweDdmZmY4ODNjNmZmZiAgY29tLmFwcGxl
LkhJVG9vbGJveCAxLjYuNSAoPz8/KSA8QUQxQzE4RjYtNTFDQi03RTM5LTM1REQtRjE2QjFFQjk3
OEE4PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL1ZlcnNpb25z
L0EvRnJhbWV3b3Jrcy9ISVRvb2xib3guZnJhbWV3b3JrL1ZlcnNpb25zL0EvSElUb29sYm94CiAg
ICAweDdmZmY4ODNjNzAwMCAtICAgICAweDdmZmY4ODRhNGZmZiAgY29tLmFwcGxlLnZJbWFnZSA0
LjEgKDQuMSkgPEMzRjQ0QUE5LTZGNzEtMDY4NC0yNjg2LUQzQkJDOTAzRjAyMD4gL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQWNjZWxlcmF0ZS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdv
cmtzL3ZJbWFnZS5mcmFtZXdvcmsvVmVyc2lvbnMvQS92SW1hZ2UKICAgIDB4N2ZmZjg4Nzk5MDAw
IC0gICAgIDB4N2ZmZjg4N2E3ZmY3ICBsaWJreGxkLmR5bGliID8/PyAoPz8/KSA8ODE0NUE1MzQt
OTVDQy05RjNDLUI3OEItQUM5ODk4RjM4QzZGPiAvdXNyL2xpYi9zeXN0ZW0vbGlia3hsZC5keWxp
YgogICAgMHg3ZmZmODg3YTgwMDAgLSAgICAgMHg3ZmZmODg5NjZmZmYgIGxpYmljdWNvcmUuQS5k
eWxpYiA0MC4wLjAgKGNvbXBhdGliaWxpdHkgMS4wLjApIDw0Mjc0RkM3My1BMjU3LTNBNTYtNDI5
My01OTY4RjM0Mjg4NTQ+IC91c3IvbGliL2xpYmljdWNvcmUuQS5keWxpYgogICAgMHg3ZmZmODg5
NjcwMDAgLSAgICAgMHg3ZmZmODg5NjhmZmYgIGxpYmxhbmdpZC5keWxpYiA/Pz8gKD8/PykgPEQw
NjY2NTk3LUIzMzEtQzQzQy02N0JCLUYyRTc1NDA3OUE3QT4gL3Vzci9saWIvbGlibGFuZ2lkLmR5
bGliCiAgICAweDdmZmY4ODliODAwMCAtICAgICAweDdmZmY4ODlkZmZmNyAgbGliSlBFRy5keWxp
YiA/Pz8gKD8/PykgPDQ2QTQxM0VBLTRGRDEtQTA1MC0yRUYwLTYyNzlGM0VBRDU4MT4gL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvVmVyc2lv
bnMvQS9GcmFtZXdvcmtzL0ltYWdlSU8uZnJhbWV3b3JrL1ZlcnNpb25zL0EvUmVzb3VyY2VzL2xp
YkpQRUcuZHlsaWIKICAgIDB4N2ZmZjg4OWUwMDAwIC0gICAgIDB4N2ZmZjg4OWViZmZmICBjb20u
YXBwbGUuQ3Jhc2hSZXBvcnRlclN1cHBvcnQgMTAuNi43ICgyNTgpIDxBMkNCQjE4Qy1CRDFDLTg2
NTAtOTA5MS03Njg3RTc4MEU2ODk+IC9TeXN0ZW0vTGlicmFyeS9Qcml2YXRlRnJhbWV3b3Jrcy9D
cmFzaFJlcG9ydGVyU3VwcG9ydC5mcmFtZXdvcmsvVmVyc2lvbnMvQS9DcmFzaFJlcG9ydGVyU3Vw
cG9ydAogICAgMHg3ZmZmODg5ZWUwMDAgLSAgICAgMHg3ZmZmODhhYTNmZTcgIGNvbS5hcHBsZS5p
bmsuZnJhbWV3b3JrIDEuMy4zICgxMDcpIDxBNjgzMzlBQS05MDlELUU0NkMtMzVDMC03MjgwOEVF
M0QwNDM+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvVmVyc2lv
bnMvQS9GcmFtZXdvcmtzL0luay5mcmFtZXdvcmsvVmVyc2lvbnMvQS9JbmsKICAgIDB4N2ZmZjg4
YWE0MDAwIC0gICAgIDB4N2ZmZjg4YWFhZmY3ICBjb20uYXBwbGUuRGlza0FyYml0cmF0aW9uIDIu
MyAoMi4zKSA8QUFCNUNDNTYtMzM0QS0zQzYwLTNDMjctNTRFOEYzNEQ3NTRFPiAvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9EaXNrQXJiaXRyYXRpb24uZnJhbWV3b3JrL1ZlcnNpb25zL0EvRGlz
a0FyYml0cmF0aW9uCiAgICAweDdmZmY4OGFhYjAwMCAtICAgICAweDdmZmY4OGFiMGZmNyAgY29t
LmFwcGxlLkNvbW1vblBhbmVscyAxLjIuNCAoOTEpIDw4QjA4OEQ3OC1FNTA4LTY2MjItRTQ3Ny1F
MzRDMjJDRjJGNjc+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsv
VmVyc2lvbnMvQS9GcmFtZXdvcmtzL0NvbW1vblBhbmVscy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9D
b21tb25QYW5lbHMKICAgIDB4N2ZmZjg4YWIxMDAwIC0gICAgIDB4N2ZmZjg4YWI2ZmZmICBsaWJH
RlhTaGFyZWQuZHlsaWIgPz8/ICg/Pz8pIDwxRDBEMzUzMS05NTYxLTYzMkMtRDYyMC0xQTg2NTJC
RUY1QkM+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL09wZW5HTC5mcmFtZXdvcmsvVmVyc2lv
bnMvQS9MaWJyYXJpZXMvbGliR0ZYU2hhcmVkLmR5bGliCiAgICAweDdmZmY4OGFjMzAwMCAtICAg
ICAweDdmZmY4OGJkZGZlZiAgbGliR0xQcm9ncmFtbWFiaWxpdHkuZHlsaWIgPz8/ICg/Pz8pIDw4
QTRCODZFMy0wRkE3LTg2ODQtMkVGMi1DNUY4MDc5NDI4REI+IC9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL09wZW5HTC5mcmFtZXdvcmsvVmVyc2lvbnMvQS9MaWJyYXJpZXMvbGliR0xQcm9ncmFt
bWFiaWxpdHkuZHlsaWIKICAgIDB4N2ZmZjg4YmRlMDAwIC0gICAgIDB4N2ZmZjg4YmUxZmZmICBj
b20uYXBwbGUuaGVscCAxLjMuMiAoNDEuMSkgPEJEMUIwQTIyLTFDQjgtMjYzRS1GRjg1LTVCQkZE
RTM2NjBCOT4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9WZXJz
aW9ucy9BL0ZyYW1ld29ya3MvSGVscC5mcmFtZXdvcmsvVmVyc2lvbnMvQS9IZWxwCiAgICAweDdm
ZmY4OGMzYzAwMCAtICAgICAweDdmZmY4OGNiOGZmNyAgY29tLmFwcGxlLklTU3VwcG9ydCAxLjku
NyAoNTUpIDxCQUU4MzlBQi05REJELUZCMjMtRjFGMS0zOTQ0NUYwNEQ4REE+IC9TeXN0ZW0vTGli
cmFyeS9Qcml2YXRlRnJhbWV3b3Jrcy9JU1N1cHBvcnQuZnJhbWV3b3JrL1ZlcnNpb25zL0EvSVNT
dXBwb3J0CiAgICAweDdmZmY4OGNmYjAwMCAtICAgICAweDdmZmY4OGNmZWZmNyAgbGliQ29yZVZN
Q2xpZW50LmR5bGliID8/PyAoPz8/KSA8RTAzRDdDODEtQTNEQS1ENDRBLUE4OEEtRERCQjk4QUY5
MTBCPiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9PcGVuR0wuZnJhbWV3b3JrL1ZlcnNpb25z
L0EvTGlicmFyaWVzL2xpYkNvcmVWTUNsaWVudC5keWxpYgogICAgMHg3ZmZmODhkMDUwMDAgLSAg
ICAgMHg3ZmZmODhkMWJmZTcgIGNvbS5hcHBsZS5NdWx0aXRvdWNoU3VwcG9ydC5mcmFtZXdvcmsg
MjA3LjExICgyMDcuMTEpIDw4MjMzQ0U3MS02RjhELThCM0MtQTBFMS1FMTIzRjY0MDYxNjM+IC9T
eXN0ZW0vTGlicmFyeS9Qcml2YXRlRnJhbWV3b3Jrcy9NdWx0aXRvdWNoU3VwcG9ydC5mcmFtZXdv
cmsvVmVyc2lvbnMvQS9NdWx0aXRvdWNoU3VwcG9ydAogICAgMHg3ZmZmODhkNGMwMDAgLSAgICAg
MHg3ZmZmODhkNGNmZjcgIGNvbS5hcHBsZS5BcHBsaWNhdGlvblNlcnZpY2VzIDM4ICgzOCkgPDBF
MkZDNzVFLTJCRTItRDA0RC1DQTc4LTc2RTM4QTg5REQzMD4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9BcHBsaWNhdGlv
blNlcnZpY2VzCiAgICAweDdmZmY4OGQ0ZDAwMCAtICAgICAweDdmZmY4OGQ3ZWZmZiAgbGliR0xJ
bWFnZS5keWxpYiA/Pz8gKD8/PykgPDdGMTAyQTA3LUU0RkItOUY1Mi1CMkY2LTRFMkQyMzgzQ0Ex
Mz4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvT3BlbkdMLmZyYW1ld29yay9WZXJzaW9ucy9B
L0xpYnJhcmllcy9saWJHTEltYWdlLmR5bGliCiAgICAweDdmZmY4OGQ3ZjAwMCAtICAgICAweDdm
ZmY4OTBiM2ZlZiAgY29tLmFwcGxlLkNvcmVTZXJ2aWNlcy5DYXJib25Db3JlIDg2MS4zOSAoODYx
LjM5KSA8MTM4NkEyNEQtREQxNS01OTAzLTA1N0UtNEEyMjRGQUY1ODBCPiAvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL1ZlcnNpb25zL0EvRnJhbWV3b3Jr
cy9DYXJib25Db3JlLmZyYW1ld29yay9WZXJzaW9ucy9BL0NhcmJvbkNvcmUKICAgIDB4N2ZmZjg5
MTE2MDAwIC0gICAgIDB4N2ZmZjg5MjFhZmY3ICBjb20uYXBwbGUuUHViU3ViIDEuMC41ICg2NS4y
OCkgPEM5OUJCMUZFLTQ2RUEtMjM3Ri01NUEzLTQ4Q0MyRkUxRjc1NT4gL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvUHViU3ViLmZyYW1ld29yay9WZXJzaW9ucy9BL1B1YlN1YgogICAgMHg3ZmZm
ODkyMWIwMDAgLSAgICAgMHg3ZmZmODkyNjdmZmYgIGxpYmF1dG8uZHlsaWIgPz8/ICg/Pz8pIDxG
NzIyMUI0Ni1EQzRGLTMxNTMtQ0U2MS03RjUyQzhDMjkzQ0Y+IC91c3IvbGliL2xpYmF1dG8uZHls
aWIKICAgIDB4N2ZmZjg5MmVmMDAwIC0gICAgIDB4N2ZmZjg5NGIwZmVmICBsaWJTeXN0ZW0uQi5k
eWxpYiAxMjUuMi4xMSAoY29tcGF0aWJpbGl0eSAxLjAuMCkgPDlBQjRGMUQxLTg5REMtMEU4QS1E
QzhFLUE0RkU0RDY5REI2OT4gL3Vzci9saWIvbGliU3lzdGVtLkIuZHlsaWIKICAgIDB4N2ZmZjg5
NWJlMDAwIC0gICAgIDB4N2ZmZjg5NWNhZmZmICBsaWJiejIuMS4wLmR5bGliIDEuMC41IChjb21w
YXRpYmlsaXR5IDEuMC4wKSA8NkZCMEE4RjQtNzJBMS1EMjhGLUU4MDEtREUyQzc0OThBRkI5PiAv
dXNyL2xpYi9saWJiejIuMS4wLmR5bGliCiAgICAweDdmZmY4OTc2ODAwMCAtICAgICAweDdmZmY4
OTc2YWZmZiAgY29tLmFwcGxlLnByaW50LmZyYW1ld29yay5QcmludCA2LjEgKDIzNy4xKSA8Q0E4
NTY0RkItQjM2Ni03NDEzLUIxMkUtOTg5MkRBM0M2MTU3PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9DYXJib24uZnJhbWV3b3JrL1ZlcnNpb25zL0EvRnJhbWV3b3Jrcy9QcmludC5mcmFtZXdv
cmsvVmVyc2lvbnMvQS9QcmludAogICAgMHg3ZmZmODk3NmIwMDAgLSAgICAgMHg3ZmZmODk3Y2Jm
ZTcgIGNvbS5hcHBsZS5mcmFtZXdvcmsuSU9LaXQgMi4wICg/Pz8pIDw0RjA3MUVGMC04MjYwLTAx
RTktQzY0MS04MzBFNTgyRkE0MTY+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0lPS2l0LmZy
YW1ld29yay9WZXJzaW9ucy9BL0lPS2l0CiAgICAweDdmZmY4OWIxMDAwMCAtICAgICAweDdmZmY4
OWI0YWZmZiAgbGliY3Vwcy4yLmR5bGliIDIuOC4wIChjb21wYXRpYmlsaXR5IDIuMC4wKSA8Nzk4
MjczNEEtQjY2Qi00NEFBLURFRUMtMzY0RDJDMTAwMDlCPiAvdXNyL2xpYi9saWJjdXBzLjIuZHls
aWIKICAgIDB4N2ZmZjg5ZGI1MDAwIC0gICAgIDB4N2ZmZjg5ZGQ4ZmZmICBjb20uYXBwbGUub3Bl
bmNsIDEyLjMuNiAoMTIuMy42KSA8NDJGQTU3ODMtRUI4MC0xMTY4LTQwMTUtQjhDNjhGNTU4NDJG
PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9PcGVuQ0wuZnJhbWV3b3JrL1ZlcnNpb25zL0Ev
T3BlbkNMCiAgICAweDdmZmY4OWRkOTAwMCAtICAgICAweDdmZmY4OWUxNmZmNyAgbGliRm9udFJl
Z2lzdHJ5LmR5bGliID8/PyAoPz8/KSA8NEMzMjkzRTItODUxQi01NUNFLTNCRTMtMjlDNDI1REQ1
REZGPiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1l
d29yay9WZXJzaW9ucy9BL0ZyYW1ld29ya3MvQVRTLmZyYW1ld29yay9WZXJzaW9ucy9BL1Jlc291
cmNlcy9saWJGb250UmVnaXN0cnkuZHlsaWIKICAgIDB4N2ZmZjg5ZTE3MDAwIC0gICAgIDB4N2Zm
Zjg5ZTM4ZmZmICBsaWJyZXNvbHYuOS5keWxpYiA0MS4wLjAgKGNvbXBhdGliaWxpdHkgMS4wLjAp
IDw2OTkzRjM0OC00MjhGLUM5N0UtN0E4NC03QkQyRURDNDZBNjI+IC91c3IvbGliL2xpYnJlc29s
di45LmR5bGliCiAgICAweDdmZmY4OWZhZDAwMCAtICAgICAweDdmZmY4YTA2YWZmZiAgY29tLmFw
cGxlLkNvcmVTZXJ2aWNlcy5PU1NlcnZpY2VzIDM1OS4yICgzNTkuMikgPEJCQjg4ODhFLTE4REUt
NUQwOS0zQzNBLUY0QzAyOUVDNzg4Nj4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNl
cnZpY2VzLmZyYW1ld29yay9WZXJzaW9ucy9BL0ZyYW1ld29ya3MvT1NTZXJ2aWNlcy5mcmFtZXdv
cmsvVmVyc2lvbnMvQS9PU1NlcnZpY2VzCiAgICAweDdmZmY4YTA2YjAwMCAtICAgICAweDdmZmY4
YTA2YmZmNyAgY29tLmFwcGxlLkNvY29hIDYuNiAoPz8/KSA8QzY5RTg5NUEtMUM2Ni0zREE5LTVG
NjMtOEJFODVEQjlDNEUxPiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db2NvYS5mcmFtZXdv
cmsvVmVyc2lvbnMvQS9Db2NvYQogICAgMHg3ZmZmOGEwNmMwMDAgLSAgICAgMHg3ZmZmOGEwODBm
ZmYgIGxpYkdMLmR5bGliID8/PyAoPz8/KSA8MkVDRTNCMEYtMzlFMS0zOTM4LUJGMjctNzIwNUM2
RDAzNThCPiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9PcGVuR0wuZnJhbWV3b3JrL1ZlcnNp
b25zL0EvTGlicmFyaWVzL2xpYkdMLmR5bGliCiAgICAweDdmZmY4YTA4MTAwMCAtICAgICAweDdm
ZmY4YTEzN2ZmNyAgbGlib2JqYy5BLmR5bGliIDIyNy4wLjAgKGNvbXBhdGliaWxpdHkgMS4wLjAp
IDwwMzE0MDUzMS0zQjJELTFFQkEtREE3Ri1FMTJDQzhGNjM5Njk+IC91c3IvbGliL2xpYm9iamMu
QS5keWxpYgogICAgMHg3ZmZmOGExMzgwMDAgLSAgICAgMHg3ZmZmOGExNThmZjcgIGNvbS5hcHBs
ZS5EaXJlY3RvcnlTZXJ2aWNlLkZyYW1ld29yayAzLjYgKDYyMS4xMSkgPEFENzZDNzU3LTY3MDEt
QkRCNS02MzFFLTFDQjc3RDY2OTU4Nj4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRGlyZWN0
b3J5U2VydmljZS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9EaXJlY3RvcnlTZXJ2aWNlCiAgICAweDdm
ZmY4YTI1YTAwMCAtICAgICAweDdmZmY4YTJmNGZlNyAgY29tLmFwcGxlLkFwcGxpY2F0aW9uU2Vy
dmljZXMuQVRTIDI3NS4xNiAoPz8/KSA8NEI3MEEyRkMtMTkwMi01RjI3LTVDM0ItNUM3OEMyODND
NkVBPiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1l
d29yay9WZXJzaW9ucy9BL0ZyYW1ld29ya3MvQVRTLmZyYW1ld29yay9WZXJzaW9ucy9BL0FUUwog
ICAgMHg3ZmZmOGEyZmEwMDAgLSAgICAgMHg3ZmZmOGE1ODNmZjcgIGNvbS5hcHBsZS5zZWN1cml0
eSA2LjEuMiAoNTUwMDIpIDw0NDE5QUZGQy1EQUU3LTg3M0UtNkE3RC01QzlBNUE0NDk3QTY+IC9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yay9WZXJzaW9ucy9BL1Nl
Y3VyaXR5CiAgICAweDdmZmZmZmUwMDAwMCAtICAgICAweDdmZmZmZmUwMWZmZiAgbGliU3lzdGVt
LkIuZHlsaWIgPz8/ICg/Pz8pIDw5QUI0RjFEMS04OURDLTBFOEEtREM4RS1BNEZFNEQ2OURCNjk+
IC91c3IvbGliL2xpYlN5c3RlbS5CLmR5bGliCgog
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>103987</attachid>
            <date>2011-08-15 17:51:53 -0700</date>
            <delta_ts>2011-08-15 17:51:53 -0700</delta_ts>
            <desc>demo</desc>
            <filename>input-css-crash.html</filename>
            <type>text/html</type>
            <size>377</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sPgo8Ym9keT4KPHN0eWxlPgojY29udGFpbmVyICsgKiB7IGNs
ZWFyOiBib3RoOyB9Cjwvc3R5bGU+CjxwIGlkPSJjb250YWluZXIiPjx0ZXh0YXJlYT48L3RleHRh
cmVhPjwvcD4KPHNjcmlwdD4KCnZhciB0ZXh0YXJlYSA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCd0ZXh0YXJlYScpWzBdOwp0ZXh0YXJlYS5mb2N1cygpOwp0ZXh0YXJlYS5pbm5lckhU
TUwgPSAnYVxuJzsKdGV4dGFyZWEuc2VsZWN0aW9uU3RhcnQgPSAxOwp0ZXh0YXJlYS5zZWxlY3Rp
b25FbmQgPSAxOwpkb2N1bWVudC5leGVjQ29tbWFuZCgnSW5zZXJ0TGluZUJyZWFrJywgZmFsc2Us
IG51bGwpOwoKPC9zY3JpcHQ+CjwvYm9keT4KPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>105501</attachid>
            <date>2011-08-29 10:51:31 -0700</date>
            <delta_ts>2011-08-29 10:51:31 -0700</delta_ts>
            <desc>Cleaned-up repro</desc>
            <filename>crash.html</filename>
            <type>text/html</type>
            <size>56</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">PHN0eWxlPgpkaXYgKyAqIHt9Cjwvc3R5bGU+CjxwPgo8dGV4dGFyZWE+YQo8L3RleHRhcmVhPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105744</attachid>
            <date>2011-08-30 23:07:55 -0700</date>
            <delta_ts>2011-08-31 13:50:06 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>wip66241</filename>
            <type>text/plain</type>
            <size>4660</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVs
ZW1lbnQuY3BwCShyZXZpc2lvbiA5NDE0OCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRl
eHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBA
CiAjaW5jbHVkZSAiUmVuZGVyVGV4dENvbnRyb2wuaCIKICNpbmNsdWRlICJSZW5kZXJUaGVtZS5o
IgogI2luY2x1ZGUgIlNjcmlwdEV2ZW50TGlzdGVuZXIuaCIKKyNpbmNsdWRlICJUZXh0LmgiCiAj
aW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC00
NTIsMTYgKzQ1MywzOSBAQAogICAgIHJldHVybiBtX2xhc3RDaGFuZ2VXYXNVc2VyRWRpdDsKIH0K
IAorc3RhdGljIFN0cmluZyBmaW5pc2hUZXh0KFN0cmluZ0J1aWxkZXImIHJlc3VsdCkKK3sKKyAg
ICAvLyBSZW1vdmUgb25lIHRyYWlsaW5nIG5ld2xpbmU7IHRoZXJlJ3MgYWx3YXlzIG9uZSB0aGF0
J3MgY29sbGFwc2VkIG91dCBieSByZW5kZXJpbmcuCisgICAgc2l6ZV90IHNpemUgPSByZXN1bHQu
bGVuZ3RoKCk7CisgICAgaWYgKHNpemUgJiYgcmVzdWx0W3NpemUgLSAxXSA9PSAnXG4nKQorICAg
ICAgICByZXN1bHQucmVzaXplKC0tc2l6ZSk7CisgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygp
OworfQorCitzdGF0aWMgU3RyaW5nIHRleHRJblNoYWRvd1RyZWUoSFRNTEVsZW1lbnQqIGlubmVy
VGV4dCkKK3sKKyAgICBpZiAoIWlubmVyVGV4dCkKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5n
KCk7CisKKyAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKKyAgICBmb3IgKE5vZGUqIG5vZGUgPSBp
bm5lclRleHQ7IG5vZGU7IG5vZGUgPSBub2RlLT50cmF2ZXJzZU5leHROb2RlKGlubmVyVGV4dCkp
IHsKKyAgICAgICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUoYnJUYWcpKQorICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZChuZXdsaW5lQ2hhcmFjdGVyKTsKKyAgICAgICAgZWxzZSBpZiAobm9kZS0+aXNU
ZXh0Tm9kZSgpKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChzdGF0aWNfY2FzdDxUZXh0Kj4o
bm9kZSktPmRhdGEoKSk7CisgICAgfQorICAgIHJldHVybiBmaW5pc2hUZXh0KHJlc3VsdCk7Cit9
CisKIHZvaWQgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnNldElubmVyVGV4dFZhbHVlKGNv
bnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgaWYgKCFyZW5kZXJlcigpIHx8ICFpc1RleHRGb3Jt
Q29udHJvbCgpKQorICAgIGlmICghaXNUZXh0Rm9ybUNvbnRyb2woKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgUmVuZGVyVGV4dENvbnRyb2wqIHRleHRDb250cm9sID0gdG9SZW5kZXJUZXh0Q29u
dHJvbChyZW5kZXJlcigpKTsKLSAgICBib29sIHRleHRJc0NoYW5nZWQgPSB2YWx1ZSAhPSB0ZXh0
Q29udHJvbC0+dGV4dCgpOworICAgIGJvb2wgdGV4dElzQ2hhbmdlZCA9IHZhbHVlICE9IHRleHRJ
blNoYWRvd1RyZWUoaW5uZXJUZXh0RWxlbWVudCgpKTsKICAgICBpZiAodGV4dElzQ2hhbmdlZCB8
fCAhaW5uZXJUZXh0RWxlbWVudCgpLT5oYXNDaGlsZE5vZGVzKCkpIHsKLSAgICAgICAgaWYgKHRl
eHRJc0NoYW5nZWQgJiYgZG9jdW1lbnQoKSAmJiBBWE9iamVjdENhY2hlOjphY2Nlc3NpYmlsaXR5
RW5hYmxlZCgpKQotICAgICAgICAgICAgZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNoZSgpLT5wb3N0
Tm90aWZpY2F0aW9uKHRleHRDb250cm9sLCBBWE9iamVjdENhY2hlOjpBWFZhbHVlQ2hhbmdlZCwg
ZmFsc2UpOworICAgICAgICBpZiAodGV4dElzQ2hhbmdlZCAmJiBkb2N1bWVudCgpICYmIHJlbmRl
cmVyKCkgJiYgQVhPYmplY3RDYWNoZTo6YWNjZXNzaWJpbGl0eUVuYWJsZWQoKSkKKyAgICAgICAg
ICAgIGRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUoKS0+cG9zdE5vdGlmaWNhdGlvbihyZW5kZXJl
cigpLCBBWE9iamVjdENhY2hlOjpBWFZhbHVlQ2hhbmdlZCwgZmFsc2UpOwogCiAgICAgICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgICAgICBpbm5lclRleHRFbGVtZW50KCktPnNldElubmVy
VGV4dCh2YWx1ZSwgZWMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFF
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJl
YUVsZW1lbnQuY3BwCShyZXZpc2lvbiA5NDE0OCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRleHRBcmVhRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0LDYgKzc0LDcgQEAKIHsK
ICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBlbnN1cmVTaGFkb3dSb290KCktPmFwcGVu
ZENoaWxkKFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KCkpLCBl
Yyk7CisgICAgc2V0SW5uZXJUZXh0VmFsdWUodmFsdWUoKSk7CiB9CiAKIGNvbnN0IEF0b21pY1N0
cmluZyYgSFRNTFRleHRBcmVhRWxlbWVudDo6Zm9ybUNvbnRyb2xUeXBlKCkgY29uc3QKQEAgLTEw
MSw2ICsxMDIsNyBAQAogICAgIHNldExhc3RDaGFuZ2VXYXNOb3RVc2VyRWRpdCgpOwogICAgIGlm
ICghbV9pc0RpcnR5KQogICAgICAgICBzZXROb25EaXJ0eVZhbHVlKGRlZmF1bHRWYWx1ZSgpKTsK
KyAgICBzZXRJbm5lclRleHRWYWx1ZSh2YWx1ZSgpKTsKICAgICBIVE1MRWxlbWVudDo6Y2hpbGRy
ZW5DaGFuZ2VkKGNoYW5nZWRCeVBhcnNlciwgYmVmb3JlQ2hhbmdlLCBhZnRlckNoYW5nZSwgY2hp
bGRDb3VudERlbHRhKTsKIH0KICAgICAKQEAgLTI0Miw2ICsyNDQsOCBAQAogICAgICAgICBmcmFt
ZS0+ZWRpdG9yKCktPnRleHREaWRDaGFuZ2VJblRleHRBcmVhKHRoaXMpOwogICAgIC8vIFdoZW4g
dHlwaW5nIGluIGEgdGV4dGFyZWEsIGNoaWxkcmVuQ2hhbmdlZCBpcyBub3QgY2FsbGVkLCBzbyB3
ZSBuZWVkIHRvIGZvcmNlIHRoZSBkaXJlY3Rpb25hbGl0eSBjaGVjay4KICAgICBjYWxjdWxhdGVB
bmRBZGp1c3REaXJlY3Rpb25hbGl0eSgpOworCisgICAgc2V0SW5uZXJUZXh0VmFsdWUodmFsdWUo
KSk7CiB9CiAKIHZvaWQgSFRNTFRleHRBcmVhRWxlbWVudDo6aGFuZGxlQmVmb3JlVGV4dEluc2Vy
dGVkRXZlbnQoQmVmb3JlVGV4dEluc2VydGVkRXZlbnQqIGV2ZW50KSBjb25zdApAQCAtMzMyLDYg
KzMzNiw3IEBACiAgICAgICAgIHJldHVybjsKIAogICAgIG1fdmFsdWUgPSBub3JtYWxpemVkVmFs
dWU7CisgICAgc2V0SW5uZXJUZXh0VmFsdWUobV92YWx1ZSk7CiAgICAgc2V0TGFzdENoYW5nZVdh
c05vdFVzZXJFZGl0KCk7CiAgICAgdXBkYXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KGZhbHNlKTsK
ICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5jcHAJKHJldmlzaW9u
IDk0MTQ4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVs
dGlMaW5lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMsOCArODMsNiBAQAogdm9pZCBSZW5kZXJU
ZXh0Q29udHJvbE11bHRpTGluZTo6dXBkYXRlRnJvbUVsZW1lbnQoKQogewogICAgIFJlbmRlclRl
eHRDb250cm9sOjp1cGRhdGVGcm9tRWxlbWVudCgpOwotCi0gICAgdGV4dEZvcm1Db250cm9sRWxl
bWVudCgpLT5zZXRJbm5lclRleHRWYWx1ZShzdGF0aWNfY2FzdDxIVE1MVGV4dEFyZWFFbGVtZW50
Kj4obm9kZSgpKS0+dmFsdWUoKSk7CiB9CiAKIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IFJlbmRl
clRleHRDb250cm9sTXVsdGlMaW5lOjpjcmVhdGVJbm5lclRleHRTdHlsZShjb25zdCBSZW5kZXJT
dHlsZSogc3RhcnRTdHlsZSkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUZXh0Q29udHJvbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRleHRDb250cm9sLmNwcAkocmV2aXNpb24gOTQxNDgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NzYsNyArMTc2LDcgQEAKICAgICBIVE1MRWxlbWVudCogaW5uZXJUZXh0ID0gaW5uZXJUZXh0RWxl
bWVudCgpOwogICAgIGlmICghaW5uZXJUZXh0KQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmco
KTsKLSAKKwogICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OwogICAgIGZvciAoTm9kZSogbm9kZSA9
IGlubmVyVGV4dDsgbm9kZTsgbm9kZSA9IG5vZGUtPnRyYXZlcnNlTmV4dE5vZGUoaW5uZXJUZXh0
KSkgewogICAgICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShiclRhZykpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105825</attachid>
            <date>2011-08-31 13:50:06 -0700</date>
            <delta_ts>2011-08-31 18:38:14 -0700</delta_ts>
            <desc>work in progress 2</desc>
            <filename>wip66241b</filename>
            <type>text/plain</type>
            <size>20702</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAkocmV2aXNpb24gOTQxOTkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xOTUxLDEwICsxOTUxLDEwIEBACiAgICAgCiAgICAgaWYgKCFpc1RleHRDb250
cm9sKCkgfHwgaXNQYXNzd29yZEZpZWxkKCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAg
ICAKKwogICAgIGlmIChpc05hdGl2ZVRleHRDb250cm9sKCkpCi0gICAgICAgIHJldHVybiB0b1Jl
bmRlclRleHRDb250cm9sKG1fcmVuZGVyZXIpLT50ZXh0KCk7Ci0gICAgCisgICAgICAgIHJldHVy
biB0b1JlbmRlclRleHRDb250cm9sKG1fcmVuZGVyZXIpLT50ZXh0Rm9ybUNvbnRyb2xFbGVtZW50
KCktPnZhbHVlKCk7CisKICAgICBOb2RlKiBub2RlID0gbV9yZW5kZXJlci0+bm9kZSgpOwogICAg
IGlmICghbm9kZSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCShyZXZpc2lvbiA5NDE5OSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwOSw2
ICsxMDksNyBAQAogdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpjcmVhdGVTaGFkb3dTdWJ0cmVlKCkK
IHsKICAgICBtX2lucHV0VHlwZS0+Y3JlYXRlU2hhZG93U3VidHJlZSgpOworICAgIHVwZGF0ZUlu
bmVyVGV4dFZhbHVlKCk7CiB9CiAKIEhUTUxJbnB1dEVsZW1lbnQ6On5IVE1MSW5wdXRFbGVtZW50
KCkKQEAgLTU4Myw2ICs1ODQsMTAgQEAKICAgICAgICAgbV92YWx1ZUlmRGlydHkgPSBzYW5pdGl6
ZVZhbHVlKGZhc3RHZXRBdHRyaWJ1dGUodmFsdWVBdHRyKSk7CiAgICAgZWxzZQogICAgICAgICB1
cGRhdGVWYWx1ZUlmTmVlZGVkKCk7CisKKyAgICBzZXRGb3JtQ29udHJvbFZhbHVlTWF0Y2hlc1Jl
bmRlcmVyKGZhbHNlKTsKKyAgICB1cGRhdGVJbm5lclRleHRWYWx1ZSgpOworCiAgICAgbV93YXNN
b2RpZmllZEJ5VXNlciA9IGZhbHNlOwogCiAgICAgaWYgKG5lZWRlZEFjdGl2YXRpb25DYWxsYmFj
aykKQEAgLTYxNSw2ICs2MjAsMjEgQEAKICAgICBub3RpZnlGb3JtU3RhdGVDaGFuZ2VkKCk7CiB9
CiAKK3ZvaWQgSFRNTElucHV0RWxlbWVudDo6dXBkYXRlSW5uZXJUZXh0VmFsdWUoKQoreworICAg
IGlmICghaXNUZXh0RmllbGQoKSAmJiAhaXNQYXNzd29yZEZpZWxkKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIGlmICghc3VnZ2VzdGVkVmFsdWUoKS5pc051bGwoKSkKKyAgICAgICAgc2V0SW5u
ZXJUZXh0VmFsdWUoc3VnZ2VzdGVkVmFsdWUoKSk7CisgICAgZWxzZSBpZiAoIWZvcm1Db250cm9s
VmFsdWVNYXRjaGVzUmVuZGVyZXIoKSkgeworICAgICAgICAvLyBGb3IgSFRNTElucHV0RWxlbWVu
dCwgdXBkYXRlIHRoZSByZW5kZXJlciB2YWx1ZSBpZiB0aGUgZm9ybUNvbnRyb2xWYWx1ZU1hdGNo
ZXNSZW5kZXJlcigpCisgICAgICAgIC8vIGZsYWcgaXMgZmFsc2UuIEl0IHByb3RlY3RzIGFuIHVu
YWNjZXB0YWJsZSByZW5kZXJlciB2YWx1ZSBmcm9tCisgICAgICAgIC8vIGJlaW5nIG92ZXJ3cml0
dGVuIHdpdGggdGhlIERPTSB2YWx1ZS4KKyAgICAgICAgc2V0SW5uZXJUZXh0VmFsdWUodmlzaWJs
ZVZhbHVlKCkpOworICAgIH0KK30KKwogdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpzdWJ0cmVlSGFz
Q2hhbmdlZCgpCiB7CiAgICAgQVNTRVJUKGlzVGV4dEZpZWxkKCkpOwpAQCAtNjI4LDcgKzY0OCw3
IEBACiAgICAgLy8gSFRNTElucHV0RWxlbWVudDo6aGFuZGxlQmVmb3JlVGV4dEluc2VydGVkRXZl
bnQoKSBoYXMgYWxyZWFkeSBjYWxsZWQKICAgICAvLyBzYW5pdGl6ZVVzZXJJbnB1dFZhbHVlKCku
CiAgICAgLy8gc2FuaXRpemVWYWx1ZSgpIGlzIG5lZWRlZCBiZWNhdXNlIElNRSBpbnB1dCBkb2Vz
bid0IGRpc3BhdGNoIEJlZm9yZVRleHRJbnNlcnRlZEV2ZW50LgotICAgIFN0cmluZyB2YWx1ZSA9
IHRvUmVuZGVyVGV4dENvbnRyb2wocmVuZGVyZXIoKSktPnRleHQoKTsKKyAgICBTdHJpbmcgdmFs
dWUgPSB0ZXh0SW5Jbm5lclRleHQoKTsKICAgICBpZiAoaXNBY2NlcHRhYmxlVmFsdWUodmFsdWUp
KQogICAgICAgICBzZXRWYWx1ZUZyb21SZW5kZXJlcihzYW5pdGl6ZVZhbHVlKGNvbnZlcnRGcm9t
VmlzaWJsZVZhbHVlKHZhbHVlKSkpOwogICAgIC8vIFJlY2FsYyBmb3IgOmludmFsaWQgYW5kIGhh
c1VuYWNjZXB0YWJsZVZhbHVlKCkgY2hhbmdlLgpAQCAtODI4LDYgKzg0OCw3IEBACiAjZW5kaWYK
ICAgICBlbHNlCiAgICAgICAgIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpwYXJzZU1hcHBl
ZEF0dHJpYnV0ZShhdHRyKTsKKyAgICB1cGRhdGVJbm5lclRleHRWYWx1ZSgpOwogfQogCiB2b2lk
IEhUTUxJbnB1dEVsZW1lbnQ6OmZpbmlzaFBhcnNpbmdDaGlsZHJlbigpCkBAIC0xMDkwLDYgKzEx
MTEsNyBAQAogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgbV9pbnB1dFR5cGUtPnZhbHVlQ2hh
bmdlZCgpOworICAgIHVwZGF0ZUlubmVyVGV4dFZhbHVlKCk7CiAKICAgICBpZiAoc2VuZENoYW5n
ZUV2ZW50KSB7CiAgICAgICAgIC8vIElmIHRoZSB1c2VyIGlzIHN0aWxsIGVkaXRpbmcgdGhpcyBm
aWVsZCwgZGlzcGF0Y2ggYW4gaW5wdXQgZXZlbnQgcmF0aGVyIHRoYW4gYSBjaGFuZ2UgZXZlbnQu
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCShyZXZp
c2lvbiA5NDE5OSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjkyLDcgKzI5Miw3IEBACiAgICAgLy8gV2UgdXNlIFJlbmRl
clRleHRDb250cm9sU2luZ2xlTGluZTo6dGV4dCgpIGluc3RlYWQgb2YgSW5wdXRFbGVtZW50Ojp2
YWx1ZSgpCiAgICAgLy8gYmVjYXVzZSB0aGV5IGNhbiBiZSBtaXNtYXRjaGVkIGJ5IHNhbml0aXpl
VmFsdWUoKSBpbgogICAgIC8vIEhUTUxJbnB1dEVsZW1lbnQ6OnN1YnRyZWVIYXNDaGFuZ2VkKCkg
aW4gc29tZSBjYXNlcy4KLSAgICB1bnNpZ25lZCBvbGRMZW5ndGggPSBudW1HcmFwaGVtZUNsdXN0
ZXJzKHRvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lKGVsZW1lbnQoKS0+cmVuZGVyZXIoKSkt
PnRleHQoKSk7CisgICAgdW5zaWduZWQgb2xkTGVuZ3RoID0gbnVtR3JhcGhlbWVDbHVzdGVycyhl
bGVtZW50KCktPnRleHRJbklubmVyVGV4dChIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6QWNj
ZXNzS2V5Rm9yVGV4dEluSW5uZXJUZXh0KCkpKTsKIAogICAgIC8vIHNlbGVjdGlvbkxlbmd0aCBy
ZXByZXNlbnRzIHRoZSBzZWxlY3Rpb24gbGVuZ3RoIG9mIHRoaXMgdGV4dCBmaWVsZCB0byBiZQog
ICAgIC8vIHJlbW92ZWQgYnkgdGhpcyBpbnNlcnRpb24uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL051bWJlcklucHV0VHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9OdW1iZXJJbnB1dFR5cGUuY3BwCShyZXZpc2lvbiA5NDE5OSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvTnVtYmVySW5wdXRUeXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgwLDggKzI4MCw3
IEBACiAKICAgICAvLyBXZSBuZWVkIHRvIHJlc2V0IHRoZSByZW5kZXJlciB2YWx1ZSBleHBsaWNp
dGx5IGJlY2F1c2UgYW4gdW5hY2NlcHRhYmxlCiAgICAgLy8gcmVuZGVyZXIgdmFsdWUgc2hvdWxk
IGJlIHB1cmdlZCBiZWZvcmUgc3R5bGUgY2FsY3VsYXRpb24uCi0gICAgaWYgKGVsZW1lbnQoKS0+
cmVuZGVyZXIoKSkKLSAgICAgICAgZWxlbWVudCgpLT5yZW5kZXJlcigpLT51cGRhdGVGcm9tRWxl
bWVudCgpOworICAgIGVsZW1lbnQoKS0+dXBkYXRlSW5uZXJUZXh0VmFsdWUoKTsKIH0KIAogU3Ry
aW5nIE51bWJlcklucHV0VHlwZTo6dmlzaWJsZVZhbHVlKCkgY29uc3QKQEAgLTMxOCw3ICszMTcs
NyBAQAogCiBib29sIE51bWJlcklucHV0VHlwZTo6aGFzVW5hY2NlcHRhYmxlVmFsdWUoKQogewot
ICAgIHJldHVybiBlbGVtZW50KCktPnJlbmRlcmVyKCkgJiYgIWlzQWNjZXB0YWJsZVZhbHVlKHRv
UmVuZGVyVGV4dENvbnRyb2woZWxlbWVudCgpLT5yZW5kZXJlcigpKS0+dGV4dCgpKTsKKyAgICBy
ZXR1cm4gZWxlbWVudCgpLT5yZW5kZXJlcigpICYmICFpc0FjY2VwdGFibGVWYWx1ZShlbGVtZW50
KCktPnRleHRJbklubmVyVGV4dChIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6QWNjZXNzS2V5
Rm9yVGV4dEluSW5uZXJUZXh0KCkpKTsKIH0KIAogYm9vbCBOdW1iZXJJbnB1dFR5cGU6OnNob3Vs
ZFJlc3BlY3RTcGVlY2hBdHRyaWJ1dGUoKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAJKHJldmlzaW9uIDk0MTk5KQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJSZW5kZXJUZXh0Q29udHJvbC5o
IgogI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXZlbnRMaXN0ZW5l
ci5oIgorI2luY2x1ZGUgIlRleHQuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTE4NiwxMiArMTg3LDkgQEAKIAogU3RyaW5nIEhUTUxU
ZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpzZWxlY3RlZFRleHQoKSBjb25zdAogewotICAgIC8vIEZJ
WE1FOiBXZSBzaG91bGQgYmUgYWJsZSB0byBleHRyYWN0IHNlbGVjdGVkIGNvbnRlbnRzIGV2ZW4g
aWYgdGhlcmUgd2VyZSBubyByZW5kZXJlci4KLSAgICBpZiAoIXJlbmRlcmVyKCkgfHwgcmVuZGVy
ZXIoKS0+aXNUZXh0Q29udHJvbCgpKQorICAgIGlmICghaXNUZXh0Rm9ybUNvbnRyb2woKSkKICAg
ICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgUmVuZGVyVGV4dENvbnRyb2wqIHRleHRDb250
cm9sID0gdG9SZW5kZXJUZXh0Q29udHJvbChyZW5kZXJlcigpKTsKLSAgICByZXR1cm4gdGV4dENv
bnRyb2wtPnRleHQoKS5zdWJzdHJpbmcoc2VsZWN0aW9uU3RhcnQoKSwgc2VsZWN0aW9uRW5kKCkg
LSBzZWxlY3Rpb25TdGFydCgpKTsKKyAgICByZXR1cm4gdmFsdWUoKS5zdWJzdHJpbmcoc2VsZWN0
aW9uU3RhcnQoKSwgc2VsZWN0aW9uRW5kKCkgLSBzZWxlY3Rpb25TdGFydCgpKTsKIH0KIAogdm9p
ZCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6ZGlzcGF0Y2hGb3JtQ29udHJvbENoYW5nZUV2
ZW50KCkKQEAgLTQ1NCwxNCArNDUyLDEzIEBACiAKIHZvaWQgSFRNTFRleHRGb3JtQ29udHJvbEVs
ZW1lbnQ6OnNldElubmVyVGV4dFZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgaWYg
KCFyZW5kZXJlcigpIHx8ICFpc1RleHRGb3JtQ29udHJvbCgpKQorICAgIGlmICghaXNUZXh0Rm9y
bUNvbnRyb2woKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVuZGVyVGV4dENvbnRyb2wqIHRl
eHRDb250cm9sID0gdG9SZW5kZXJUZXh0Q29udHJvbChyZW5kZXJlcigpKTsKLSAgICBib29sIHRl
eHRJc0NoYW5nZWQgPSB2YWx1ZSAhPSB0ZXh0Q29udHJvbC0+dGV4dCgpOworICAgIGJvb2wgdGV4
dElzQ2hhbmdlZCA9IHZhbHVlICE9IHRleHRJbklubmVyVGV4dCgpOwogICAgIGlmICh0ZXh0SXND
aGFuZ2VkIHx8ICFpbm5lclRleHRFbGVtZW50KCktPmhhc0NoaWxkTm9kZXMoKSkgewotICAgICAg
ICBpZiAodGV4dElzQ2hhbmdlZCAmJiBkb2N1bWVudCgpICYmIEFYT2JqZWN0Q2FjaGU6OmFjY2Vz
c2liaWxpdHlFbmFibGVkKCkpCi0gICAgICAgICAgICBkb2N1bWVudCgpLT5heE9iamVjdENhY2hl
KCktPnBvc3ROb3RpZmljYXRpb24odGV4dENvbnRyb2wsIEFYT2JqZWN0Q2FjaGU6OkFYVmFsdWVD
aGFuZ2VkLCBmYWxzZSk7CisgICAgICAgIGlmICh0ZXh0SXNDaGFuZ2VkICYmIGRvY3VtZW50KCkg
JiYgcmVuZGVyZXIoKSAmJiBBWE9iamVjdENhY2hlOjphY2Nlc3NpYmlsaXR5RW5hYmxlZCgpKQor
ICAgICAgICAgICAgZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNoZSgpLT5wb3N0Tm90aWZpY2F0aW9u
KHJlbmRlcmVyKCksIEFYT2JqZWN0Q2FjaGU6OkFYVmFsdWVDaGFuZ2VkLCBmYWxzZSk7CiAKICAg
ICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgICAgIGlubmVyVGV4dEVsZW1lbnQoKS0+
c2V0SW5uZXJUZXh0KHZhbHVlLCBlYyk7CkBAIC00NzYsNiArNDczLDkwIEBACiAgICAgc2V0Rm9y
bUNvbnRyb2xWYWx1ZU1hdGNoZXNSZW5kZXJlcih0cnVlKTsKIH0KIAorc3RhdGljIFN0cmluZyBm
aW5pc2hUZXh0KFN0cmluZ0J1aWxkZXImIHJlc3VsdCkKK3sKKyAgICAvLyBSZW1vdmUgb25lIHRy
YWlsaW5nIG5ld2xpbmU7IHRoZXJlJ3MgYWx3YXlzIG9uZSB0aGF0J3MgY29sbGFwc2VkIG91dCBi
eSByZW5kZXJpbmcuCisgICAgc2l6ZV90IHNpemUgPSByZXN1bHQubGVuZ3RoKCk7CisgICAgaWYg
KHNpemUgJiYgcmVzdWx0W3NpemUgLSAxXSA9PSAnXG4nKQorICAgICAgICByZXN1bHQucmVzaXpl
KC0tc2l6ZSk7CisgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOworfQorCitTdHJpbmcgSFRN
TFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnRleHRJbklubmVyVGV4dChBY2Nlc3NLZXlGb3JUZXh0
SW5Jbm5lclRleHQpIGNvbnN0Cit7CisgICAgSFRNTEVsZW1lbnQqIGlubmVyVGV4dCA9IGlubmVy
VGV4dEVsZW1lbnQoKTsKKyAgICBpZiAoIWlubmVyVGV4dCB8fCAhaXNUZXh0Rm9ybUNvbnRyb2wo
KSkKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisKKyAgICBTdHJpbmdCdWlsZGVyIHJl
c3VsdDsKKyAgICBmb3IgKE5vZGUqIG5vZGUgPSBpbm5lclRleHQ7IG5vZGU7IG5vZGUgPSBub2Rl
LT50cmF2ZXJzZU5leHROb2RlKGlubmVyVGV4dCkpIHsKKyAgICAgICAgaWYgKG5vZGUtPmhhc1Rh
Z05hbWUoYnJUYWcpKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChuZXdsaW5lQ2hhcmFjdGVy
KTsKKyAgICAgICAgZWxzZSBpZiAobm9kZS0+aXNUZXh0Tm9kZSgpKQorICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZChzdGF0aWNfY2FzdDxUZXh0Kj4obm9kZSktPmRhdGEoKSk7CisgICAgfQorICAg
IHJldHVybiBmaW5pc2hUZXh0KHJlc3VsdCk7Cit9CisKK3N0YXRpYyB2b2lkIGdldE5leHRTb2Z0
QnJlYWsoUm9vdElubGluZUJveComIGxpbmUsIE5vZGUqJiBicmVha05vZGUsIHVuc2lnbmVkJiBi
cmVha09mZnNldCkKK3sKKyAgICBSb290SW5saW5lQm94KiBuZXh0OworICAgIGZvciAoOyBsaW5l
OyBsaW5lID0gbmV4dCkgeworICAgICAgICBuZXh0ID0gbGluZS0+bmV4dFJvb3RCb3goKTsKKyAg
ICAgICAgaWYgKG5leHQgJiYgIWxpbmUtPmVuZHNXaXRoQnJlYWsoKSkgeworICAgICAgICAgICAg
QVNTRVJUKGxpbmUtPmxpbmVCcmVha09iaigpKTsKKyAgICAgICAgICAgIGJyZWFrTm9kZSA9IGxp
bmUtPmxpbmVCcmVha09iaigpLT5ub2RlKCk7CisgICAgICAgICAgICBicmVha09mZnNldCA9IGxp
bmUtPmxpbmVCcmVha1BvcygpOworICAgICAgICAgICAgbGluZSA9IG5leHQ7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisgICAgYnJlYWtOb2RlID0gMDsKKyAgICBicmVh
a09mZnNldCA9IDA7Cit9CisKK1N0cmluZyBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6dGV4
dEluSW5uZXJUZXh0V2l0aEhhcmRMaW5lQnJlYWtzKEFjY2Vzc0tleUZvclRleHRJbklubmVyVGV4
dCkgY29uc3QKK3sKKyAgICBIVE1MRWxlbWVudCogaW5uZXJUZXh0ID0gaW5uZXJUZXh0RWxlbWVu
dCgpOworICAgIGlmICghaW5uZXJUZXh0IHx8ICFpc1RleHRGb3JtQ29udHJvbCgpKQorICAgICAg
ICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKKworICAgIFJlbmRlckJsb2NrKiByZW5kZXJlciA9IHRv
UmVuZGVyQmxvY2soaW5uZXJUZXh0LT5yZW5kZXJlcigpKTsKKyAgICBpZiAoIXJlbmRlcmVyKQor
ICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKKworICAgIE5vZGUqIGJyZWFrTm9kZTsKKyAg
ICB1bnNpZ25lZCBicmVha09mZnNldDsKKyAgICBSb290SW5saW5lQm94KiBsaW5lID0gcmVuZGVy
ZXItPmZpcnN0Um9vdEJveCgpOworICAgIGlmICghbGluZSkKKyAgICAgICAgcmV0dXJuIGVtcHR5
U3RyaW5nKCk7CisKKyAgICBnZXROZXh0U29mdEJyZWFrKGxpbmUsIGJyZWFrTm9kZSwgYnJlYWtP
ZmZzZXQpOworCisgICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7CisgICAgZm9yIChOb2RlKiBub2Rl
ID0gaW5uZXJUZXh0LT5maXJzdENoaWxkKCk7IG5vZGU7IG5vZGUgPSBub2RlLT50cmF2ZXJzZU5l
eHROb2RlKGlubmVyVGV4dCkpIHsKKyAgICAgICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUoYnJUYWcp
KQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChuZXdsaW5lQ2hhcmFjdGVyKTsKKyAgICAgICAg
ZWxzZSBpZiAobm9kZS0+aXNUZXh0Tm9kZSgpKSB7CisgICAgICAgICAgICBTdHJpbmcgZGF0YSA9
IHN0YXRpY19jYXN0PFRleHQqPihub2RlKS0+ZGF0YSgpOworICAgICAgICAgICAgdW5zaWduZWQg
bGVuZ3RoID0gZGF0YS5sZW5ndGgoKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIHBvc2l0aW9uID0g
MDsKKyAgICAgICAgICAgIHdoaWxlIChicmVha05vZGUgPT0gbm9kZSAmJiBicmVha09mZnNldCA8
PSBsZW5ndGgpIHsKKyAgICAgICAgICAgICAgICBpZiAoYnJlYWtPZmZzZXQgPiBwb3NpdGlvbikg
eworICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGRhdGEuY2hhcmFjdGVycygpICsg
cG9zaXRpb24sIGJyZWFrT2Zmc2V0IC0gcG9zaXRpb24pOworICAgICAgICAgICAgICAgICAgICBw
b3NpdGlvbiA9IGJyZWFrT2Zmc2V0OworICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5k
KG5ld2xpbmVDaGFyYWN0ZXIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBn
ZXROZXh0U29mdEJyZWFrKGxpbmUsIGJyZWFrTm9kZSwgYnJlYWtPZmZzZXQpOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChkYXRhLmNoYXJhY3RlcnMoKSArIHBvc2l0
aW9uLCBsZW5ndGggLSBwb3NpdGlvbik7CisgICAgICAgIH0KKyAgICAgICAgd2hpbGUgKGJyZWFr
Tm9kZSA9PSBub2RlKQorICAgICAgICAgICAgZ2V0TmV4dFNvZnRCcmVhayhsaW5lLCBicmVha05v
ZGUsIGJyZWFrT2Zmc2V0KTsKKyAgICB9CisgICAgcmV0dXJuIGZpbmlzaFRleHQocmVzdWx0KTsK
K30KKwogSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQqIGVuY2xvc2luZ1RleHRGb3JtQ29udHJv
bChjb25zdCBQb3NpdGlvbiYgcG9zaXRpb24pCiB7CiAgICAgQVNTRVJUKHBvc2l0aW9uLmlzTnVs
bCgpIHx8IHBvc2l0aW9uLmFuY2hvclR5cGUoKSA9PSBQb3NpdGlvbjo6UG9zaXRpb25Jc09mZnNl
dEluQW5jaG9yCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAkocmV2
aXNpb24gOTQxOTkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtMTQ1LDYgKzE0NSw4IEBACiAKICAgICBTdHJpbmcgc2FuaXRpemVW
YWx1ZShjb25zdCBTdHJpbmcmKSBjb25zdDsKIAorICAgIHZvaWQgdXBkYXRlSW5uZXJUZXh0VmFs
dWUoKTsKKwogICAgIC8vIFRoZSB2YWx1ZSB3aGljaCBpcyBkcmF3biBieSBhIHJlbmRlcmVyLgog
ICAgIFN0cmluZyB2aXNpYmxlVmFsdWUoKSBjb25zdDsKICAgICBTdHJpbmcgY29udmVydEZyb21W
aXNpYmxlVmFsdWUoY29uc3QgU3RyaW5nJikgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oCShyZXZpc2lvbiA5NDE5OSkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtNzgsNiArNzgsMTggQEAKICAgICBib29sIGxhc3RDaGFuZ2VXYXNVc2Vy
RWRpdCgpIGNvbnN0OwogICAgIHZvaWQgc2V0SW5uZXJUZXh0VmFsdWUoY29uc3QgU3RyaW5nJik7
CiAKKyAgICBjbGFzcyBBY2Nlc3NLZXlGb3JUZXh0SW5Jbm5lclRleHQgeworICAgIHByaXZhdGU6
CisgICAgICAgIEFjY2Vzc0tleUZvclRleHRJbklubmVyVGV4dCgpIHt9CisgICAgICAgIGZyaWVu
ZCBjbGFzcyBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDsKKyAgICAgICAgLy8gRklYTUU6IGlu
cHV0IHR5cGVzIHNob3VsZG4ndCB1c2UgdGV4dEluSW5uZXJUZXh0CisgICAgICAgIGZyaWVuZCBj
bGFzcyBOdW1iZXJJbnB1dFR5cGU7CisgICAgICAgIGZyaWVuZCBjbGFzcyBTZWFyY2hJbnB1dFR5
cGU7CisgICAgICAgIGZyaWVuZCBjbGFzcyBUZXh0RmllbGRJbnB1dFR5cGU7CisgICAgfTsKKyAg
ICBTdHJpbmcgdGV4dEluSW5uZXJUZXh0KEFjY2Vzc0tleUZvclRleHRJbklubmVyVGV4dCkgY29u
c3Q7CisgICAgU3RyaW5nIHRleHRJbklubmVyVGV4dFdpdGhIYXJkTGluZUJyZWFrcyhBY2Nlc3NL
ZXlGb3JUZXh0SW5Jbm5lclRleHQpIGNvbnN0OworCiBwcm90ZWN0ZWQ6CiAgICAgSFRNTFRleHRG
b3JtQ29udHJvbEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50KiwgSFRNTEZv
cm1FbGVtZW50Kik7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVBsYWNlaG9sZGVyVGV4dCgpID0g
MDsKQEAgLTEwMCw2ICsxMTIsOSBAQAogICAgIHZpcnR1YWwgdm9pZCBzdWJ0cmVlSGFzQ2hhbmdl
ZCgpID0gMDsKIAogICAgIHZvaWQgc2V0TGFzdENoYW5nZVdhc05vdFVzZXJFZGl0KCkgeyBtX2xh
c3RDaGFuZ2VXYXNVc2VyRWRpdCA9IGZhbHNlOyB9CisKKyAgICBTdHJpbmcgdGV4dEluSW5uZXJU
ZXh0KCkgY29uc3QgeyByZXR1cm4gdGV4dEluSW5uZXJUZXh0KEFjY2Vzc0tleUZvclRleHRJbklu
bmVyVGV4dCgpKTsgfQorICAgIFN0cmluZyB0ZXh0SW5Jbm5lclRleHRXaXRoSGFyZExpbmVCcmVh
a3MoKSBjb25zdCB7IHJldHVybiB0ZXh0SW5Jbm5lclRleHRXaXRoSGFyZExpbmVCcmVha3MoQWNj
ZXNzS2V5Rm9yVGV4dEluSW5uZXJUZXh0KCkpOyB9CiBwcml2YXRlOgogICAgIGludCBjb21wdXRl
U2VsZWN0aW9uU3RhcnQoKSBjb25zdDsKICAgICBpbnQgY29tcHV0ZVNlbGVjdGlvbkVuZCgpIGNv
bnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3Bw
CShyZXZpc2lvbiA5NDE5OSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0LDYgKzc0LDcgQEAKIHsKICAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKICAgICBlbnN1cmVTaGFkb3dSb290KCktPmFwcGVuZENoaWxkKFRleHRD
b250cm9sSW5uZXJUZXh0RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KCkpLCBlYyk7CisgICAgc2V0
SW5uZXJUZXh0VmFsdWUodmFsdWUoKSk7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgSFRNTFRl
eHRBcmVhRWxlbWVudDo6Zm9ybUNvbnRyb2xUeXBlKCkgY29uc3QKQEAgLTEwMSw2ICsxMDIsNyBA
QAogICAgIHNldExhc3RDaGFuZ2VXYXNOb3RVc2VyRWRpdCgpOwogICAgIGlmICghbV9pc0RpcnR5
KQogICAgICAgICBzZXROb25EaXJ0eVZhbHVlKGRlZmF1bHRWYWx1ZSgpKTsKKyAgICBzZXRJbm5l
clRleHRWYWx1ZSh2YWx1ZSgpKTsKICAgICBIVE1MRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNo
YW5nZWRCeVBhcnNlciwgYmVmb3JlQ2hhbmdlLCBhZnRlckNoYW5nZSwgY2hpbGRDb3VudERlbHRh
KTsKIH0KICAgICAKQEAgLTE3Myw4ICsxNzUsNyBAQAogCiAgICAgLy8gRklYTUU6IEl0J3Mgbm90
IGFjY2VwdGFibGUgdG8gaWdub3JlIHRoZSBIYXJkV3JhcCBzZXR0aW5nIHdoZW4gdGhlcmUgaXMg
bm8gcmVuZGVyZXIuCiAgICAgLy8gV2hpbGUgd2UgaGF2ZSBubyBldmlkZW5jZSB0aGlzIGhhcyBl
dmVyIGJlZW4gYSBwcmFjdGljYWwgcHJvYmxlbSwgaXQgd291bGQgYmUgYmVzdCB0byBmaXggaXQg
c29tZSBkYXkuCi0gICAgUmVuZGVyVGV4dENvbnRyb2wqIGNvbnRyb2wgPSB0b1JlbmRlclRleHRD
b250cm9sKHJlbmRlcmVyKCkpOwotICAgIGNvbnN0IFN0cmluZyYgdGV4dCA9IChtX3dyYXAgPT0g
SGFyZFdyYXAgJiYgY29udHJvbCkgPyBjb250cm9sLT50ZXh0V2l0aEhhcmRMaW5lQnJlYWtzKCkg
OiB2YWx1ZSgpOworICAgIGNvbnN0IFN0cmluZyYgdGV4dCA9IChtX3dyYXAgPT0gSGFyZFdyYXAp
ID8gdGV4dEluSW5uZXJUZXh0V2l0aEhhcmRMaW5lQnJlYWtzKCkgOiB2YWx1ZSgpOwogICAgIGVu
Y29kaW5nLmFwcGVuZERhdGEobmFtZSgpLCB0ZXh0KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAg
LTI0Miw2ICsyNDMsOCBAQAogICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPnRleHREaWRDaGFuZ2VJ
blRleHRBcmVhKHRoaXMpOwogICAgIC8vIFdoZW4gdHlwaW5nIGluIGEgdGV4dGFyZWEsIGNoaWxk
cmVuQ2hhbmdlZCBpcyBub3QgY2FsbGVkLCBzbyB3ZSBuZWVkIHRvIGZvcmNlIHRoZSBkaXJlY3Rp
b25hbGl0eSBjaGVjay4KICAgICBjYWxjdWxhdGVBbmRBZGp1c3REaXJlY3Rpb25hbGl0eSgpOwor
CisgICAgc2V0SW5uZXJUZXh0VmFsdWUodmFsdWUoKSk7CiB9CiAKIHZvaWQgSFRNTFRleHRBcmVh
RWxlbWVudDo6aGFuZGxlQmVmb3JlVGV4dEluc2VydGVkRXZlbnQoQmVmb3JlVGV4dEluc2VydGVk
RXZlbnQqIGV2ZW50KSBjb25zdApAQCAtMjUzLDcgKzI1Niw3IEBACiAgICAgICAgIHJldHVybjsK
ICAgICB1bnNpZ25lZCB1bnNpZ25lZE1heExlbmd0aCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihz
aWduZWRNYXhMZW5ndGgpOwogCi0gICAgdW5zaWduZWQgY3VycmVudExlbmd0aCA9IG51bUdyYXBo
ZW1lQ2x1c3RlcnModG9SZW5kZXJUZXh0Q29udHJvbChyZW5kZXJlcigpKS0+dGV4dCgpKTsKKyAg
ICB1bnNpZ25lZCBjdXJyZW50TGVuZ3RoID0gbnVtR3JhcGhlbWVDbHVzdGVycyh0ZXh0SW5Jbm5l
clRleHQoKSk7CiAgICAgLy8gc2VsZWN0aW9uTGVuZ3RoIHJlcHJlc2VudHMgdGhlIHNlbGVjdGlv
biBsZW5ndGggb2YgdGhpcyB0ZXh0IGZpZWxkIHRvIGJlCiAgICAgLy8gcmVtb3ZlZCBieSB0aGlz
IGluc2VydGlvbi4KICAgICAvLyBJZiB0aGUgdGV4dCBmaWVsZCBoYXMgbm8gZm9jdXMsIHdlIGRv
bid0IG5lZWQgdG8gdGFrZSBhY2NvdW50IG9mIHRoZQpAQCAtMjg5LDcgKzI5Miw3IEBACiAgICAg
ICAgIHJldHVybjsKIAogICAgIEFTU0VSVChyZW5kZXJlcigpKTsKLSAgICBtX3ZhbHVlID0gdG9S
ZW5kZXJUZXh0Q29udHJvbChyZW5kZXJlcigpKS0+dGV4dCgpOworICAgIG1fdmFsdWUgPSB0ZXh0
SW5Jbm5lclRleHQoKTsKICAgICBjb25zdF9jYXN0PEhUTUxUZXh0QXJlYUVsZW1lbnQqPih0aGlz
KS0+c2V0Rm9ybUNvbnRyb2xWYWx1ZU1hdGNoZXNSZW5kZXJlcih0cnVlKTsKICAgICBjb25zdF9j
YXN0PEhUTUxUZXh0QXJlYUVsZW1lbnQqPih0aGlzKS0+bm90aWZ5Rm9ybVN0YXRlQ2hhbmdlZCgp
OwogICAgIG1faXNEaXJ0eSA9IHRydWU7CkBAIC0zMzIsNiArMzM1LDcgQEAKICAgICAgICAgcmV0
dXJuOwogCiAgICAgbV92YWx1ZSA9IG5vcm1hbGl6ZWRWYWx1ZTsKKyAgICBzZXRJbm5lclRleHRW
YWx1ZShtX3ZhbHVlKTsKICAgICBzZXRMYXN0Q2hhbmdlV2FzTm90VXNlckVkaXQoKTsKICAgICB1
cGRhdGVQbGFjZWhvbGRlclZpc2liaWxpdHkoZmFsc2UpOwogICAgIHNldE5lZWRzU3R5bGVSZWNh
bGMoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL1NlYXJjaElucHV0VHlwZS5jcHAJKHJldmlz
aW9uIDk0MTk5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9TZWFyY2hJbnB1dFR5cGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMjgsNyArMTI4LDcgQEAKIHZvaWQgU2VhcmNoSW5wdXRUeXBlOjpz
dGFydFNlYXJjaEV2ZW50VGltZXIoKQogewogICAgIEFTU0VSVChlbGVtZW50KCktPnJlbmRlcmVy
KCkpOwotICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5l
KGVsZW1lbnQoKS0+cmVuZGVyZXIoKSktPnRleHQoKS5sZW5ndGgoKTsKKyAgICB1bnNpZ25lZCBs
ZW5ndGggPSBlbGVtZW50KCktPnRleHRJbklubmVyVGV4dChIVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudDo6QWNjZXNzS2V5Rm9yVGV4dEluSW5uZXJUZXh0KCkpLmxlbmd0aCgpOwogCiAgICAgaWYg
KCFsZW5ndGgpIHsKICAgICAgICAgc3RvcFNlYXJjaEV2ZW50VGltZXIoKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlM
aW5lLmNwcAkocmV2aXNpb24gOTQxOTkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Myw4ICs4Myw2
IEBACiB2b2lkIFJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lOjp1cGRhdGVGcm9tRWxlbWVudCgp
CiB7CiAgICAgUmVuZGVyVGV4dENvbnRyb2w6OnVwZGF0ZUZyb21FbGVtZW50KCk7Ci0KLSAgICB0
ZXh0Rm9ybUNvbnRyb2xFbGVtZW50KCktPnNldElubmVyVGV4dFZhbHVlKHN0YXRpY19jYXN0PEhU
TUxUZXh0QXJlYUVsZW1lbnQqPihub2RlKCkpLT52YWx1ZSgpKTsKIH0KIAogUGFzc1JlZlB0cjxS
ZW5kZXJTdHlsZT4gUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmU6OmNyZWF0ZUlubmVyVGV4dFN0
eWxlKGNvbnN0IFJlbmRlclN0eWxlKiBzdGFydFN0eWxlKSBjb25zdApJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGlu
ZS5jcHAJKHJldmlzaW9uIDk0MTk5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRleHRDb250cm9sU2luZ2xlTGluZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3NiwxOCArNDc2
LDYgQEAKICAgICBpZiAoY2FuY2VsQnV0dG9uRWxlbWVudCgpKQogICAgICAgICB1cGRhdGVDYW5j
ZWxCdXR0b25WaXNpYmlsaXR5KCk7CiAKLSAgICBpZiAoIWlucHV0RWxlbWVudCgpLT5zdWdnZXN0
ZWRWYWx1ZSgpLmlzTnVsbCgpKQotICAgICAgICB0ZXh0Rm9ybUNvbnRyb2xFbGVtZW50KCktPnNl
dElubmVyVGV4dFZhbHVlKGlucHV0RWxlbWVudCgpLT5zdWdnZXN0ZWRWYWx1ZSgpKTsKLSAgICBl
bHNlIHsKLSAgICAgICAgaWYgKG5vZGUoKS0+aGFzVGFnTmFtZShpbnB1dFRhZykpIHsKLSAgICAg
ICAgICAgIC8vIEZvciBIVE1MSW5wdXRFbGVtZW50LCB1cGRhdGUgdGhlIHJlbmRlcmVyIHZhbHVl
IGlmIHRoZSBmb3JtQ29udHJvbFZhbHVlTWF0Y2hlc1JlbmRlcmVyKCkKLSAgICAgICAgICAgIC8v
IGZsYWcgaXMgZmFsc2UuIEl0IHByb3RlY3RzIGFuIHVuYWNjZXB0YWJsZSByZW5kZXJlciB2YWx1
ZSBmcm9tCi0gICAgICAgICAgICAvLyBiZWluZyBvdmVyd3JpdHRlbiB3aXRoIHRoZSBET00gdmFs
dWUuCi0gICAgICAgICAgICBpZiAoIWlucHV0RWxlbWVudCgpLT5mb3JtQ29udHJvbFZhbHVlTWF0
Y2hlc1JlbmRlcmVyKCkpCi0gICAgICAgICAgICAgICAgdGV4dEZvcm1Db250cm9sRWxlbWVudCgp
LT5zZXRJbm5lclRleHRWYWx1ZShpbnB1dEVsZW1lbnQoKS0+dmlzaWJsZVZhbHVlKCkpOwotICAg
ICAgICB9Ci0gICAgfQotCiAgICAgaWYgKG1fc2VhcmNoUG9wdXBJc1Zpc2libGUpCiAgICAgICAg
IG1fc2VhcmNoUG9wdXAtPnBvcHVwTWVudSgpLT51cGRhdGVGcm9tRWxlbWVudCgpOwogfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwCShy
ZXZpc2lvbiA5NDE5OSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29u
dHJvbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2Miw5MCArMTYyLDYgQEAKICAgICByZXR1cm4g
VmlzaWJsZVBvc2l0aW9uKGl0LnJhbmdlKCktPmVuZFBvc2l0aW9uKCksIFVQU1RSRUFNKTsKIH0K
IAotc3RhdGljIFN0cmluZyBmaW5pc2hUZXh0KFN0cmluZ0J1aWxkZXImIHJlc3VsdCkKLXsKLSAg
ICAvLyBSZW1vdmUgb25lIHRyYWlsaW5nIG5ld2xpbmU7IHRoZXJlJ3MgYWx3YXlzIG9uZSB0aGF0
J3MgY29sbGFwc2VkIG91dCBieSByZW5kZXJpbmcuCi0gICAgc2l6ZV90IHNpemUgPSByZXN1bHQu
bGVuZ3RoKCk7Ci0gICAgaWYgKHNpemUgJiYgcmVzdWx0W3NpemUgLSAxXSA9PSAnXG4nKQotICAg
ICAgICByZXN1bHQucmVzaXplKC0tc2l6ZSk7Ci0gICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygp
OwotfQotCi1TdHJpbmcgUmVuZGVyVGV4dENvbnRyb2w6OnRleHQoKQotewotICAgIEhUTUxFbGVt
ZW50KiBpbm5lclRleHQgPSBpbm5lclRleHRFbGVtZW50KCk7Ci0gICAgaWYgKCFpbm5lclRleHQp
Ci0gICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwotIAotICAgIFN0cmluZ0J1aWxkZXIgcmVz
dWx0OwotICAgIGZvciAoTm9kZSogbm9kZSA9IGlubmVyVGV4dDsgbm9kZTsgbm9kZSA9IG5vZGUt
PnRyYXZlcnNlTmV4dE5vZGUoaW5uZXJUZXh0KSkgewotICAgICAgICBpZiAobm9kZS0+aGFzVGFn
TmFtZShiclRhZykpCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKG5ld2xpbmVDaGFyYWN0ZXIp
OwotICAgICAgICBlbHNlIGlmIChub2RlLT5pc1RleHROb2RlKCkpCi0gICAgICAgICAgICByZXN1
bHQuYXBwZW5kKHN0YXRpY19jYXN0PFRleHQqPihub2RlKS0+ZGF0YSgpKTsKLSAgICB9Ci0gICAg
cmV0dXJuIGZpbmlzaFRleHQocmVzdWx0KTsKLX0KLQotc3RhdGljIHZvaWQgZ2V0TmV4dFNvZnRC
cmVhayhSb290SW5saW5lQm94KiYgbGluZSwgTm9kZSomIGJyZWFrTm9kZSwgdW5zaWduZWQmIGJy
ZWFrT2Zmc2V0KQotewotICAgIFJvb3RJbmxpbmVCb3gqIG5leHQ7Ci0gICAgZm9yICg7IGxpbmU7
IGxpbmUgPSBuZXh0KSB7Ci0gICAgICAgIG5leHQgPSBsaW5lLT5uZXh0Um9vdEJveCgpOwotICAg
ICAgICBpZiAobmV4dCAmJiAhbGluZS0+ZW5kc1dpdGhCcmVhaygpKSB7Ci0gICAgICAgICAgICBB
U1NFUlQobGluZS0+bGluZUJyZWFrT2JqKCkpOwotICAgICAgICAgICAgYnJlYWtOb2RlID0gbGlu
ZS0+bGluZUJyZWFrT2JqKCktPm5vZGUoKTsKLSAgICAgICAgICAgIGJyZWFrT2Zmc2V0ID0gbGlu
ZS0+bGluZUJyZWFrUG9zKCk7Ci0gICAgICAgICAgICBsaW5lID0gbmV4dDsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLSAgICBicmVha05vZGUgPSAwOwotICAgIGJyZWFr
T2Zmc2V0ID0gMDsKLX0KLQotU3RyaW5nIFJlbmRlclRleHRDb250cm9sOjp0ZXh0V2l0aEhhcmRM
aW5lQnJlYWtzKCkKLXsKLSAgICBIVE1MRWxlbWVudCogaW5uZXJUZXh0ID0gaW5uZXJUZXh0RWxl
bWVudCgpOwotICAgIGlmICghaW5uZXJUZXh0KQotICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmco
KTsKLQotICAgIFJlbmRlckJsb2NrKiByZW5kZXJlciA9IHRvUmVuZGVyQmxvY2soaW5uZXJUZXh0
LT5yZW5kZXJlcigpKTsKLSAgICBpZiAoIXJlbmRlcmVyKQotICAgICAgICByZXR1cm4gZW1wdHlT
dHJpbmcoKTsKLQotICAgIE5vZGUqIGJyZWFrTm9kZTsKLSAgICB1bnNpZ25lZCBicmVha09mZnNl
dDsKLSAgICBSb290SW5saW5lQm94KiBsaW5lID0gcmVuZGVyZXItPmZpcnN0Um9vdEJveCgpOwot
ICAgIGlmICghbGluZSkKLSAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Ci0KLSAgICBnZXRO
ZXh0U29mdEJyZWFrKGxpbmUsIGJyZWFrTm9kZSwgYnJlYWtPZmZzZXQpOwotCi0gICAgU3RyaW5n
QnVpbGRlciByZXN1bHQ7Ci0gICAgZm9yIChOb2RlKiBub2RlID0gaW5uZXJUZXh0LT5maXJzdENo
aWxkKCk7IG5vZGU7IG5vZGUgPSBub2RlLT50cmF2ZXJzZU5leHROb2RlKGlubmVyVGV4dCkpIHsK
LSAgICAgICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUoYnJUYWcpKQotICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZChuZXdsaW5lQ2hhcmFjdGVyKTsKLSAgICAgICAgZWxzZSBpZiAobm9kZS0+aXNUZXh0
Tm9kZSgpKSB7Ci0gICAgICAgICAgICBTdHJpbmcgZGF0YSA9IHN0YXRpY19jYXN0PFRleHQqPihu
b2RlKS0+ZGF0YSgpOwotICAgICAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gZGF0YS5sZW5ndGgo
KTsKLSAgICAgICAgICAgIHVuc2lnbmVkIHBvc2l0aW9uID0gMDsKLSAgICAgICAgICAgIHdoaWxl
IChicmVha05vZGUgPT0gbm9kZSAmJiBicmVha09mZnNldCA8PSBsZW5ndGgpIHsKLSAgICAgICAg
ICAgICAgICBpZiAoYnJlYWtPZmZzZXQgPiBwb3NpdGlvbikgewotICAgICAgICAgICAgICAgICAg
ICByZXN1bHQuYXBwZW5kKGRhdGEuY2hhcmFjdGVycygpICsgcG9zaXRpb24sIGJyZWFrT2Zmc2V0
IC0gcG9zaXRpb24pOwotICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IGJyZWFrT2Zmc2V0
OwotICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKG5ld2xpbmVDaGFyYWN0ZXIpOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBnZXROZXh0U29mdEJyZWFrKGxpbmUs
IGJyZWFrTm9kZSwgYnJlYWtPZmZzZXQpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZChkYXRhLmNoYXJhY3RlcnMoKSArIHBvc2l0aW9uLCBsZW5ndGggLSBwb3NpdGlv
bik7Ci0gICAgICAgIH0KLSAgICAgICAgd2hpbGUgKGJyZWFrTm9kZSA9PSBub2RlKQotICAgICAg
ICAgICAgZ2V0TmV4dFNvZnRCcmVhayhsaW5lLCBicmVha05vZGUsIGJyZWFrT2Zmc2V0KTsKLSAg
ICB9Ci0gICAgcmV0dXJuIGZpbmlzaFRleHQocmVzdWx0KTsKLX0KLQogaW50IFJlbmRlclRleHRD
b250cm9sOjpzY3JvbGxiYXJUaGlja25lc3MoKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBXZSBz
aG91bGQgZ2V0IHRoZSBzaXplIG9mIHRoZSBzY3JvbGxiYXIgZnJvbSB0aGUgUmVuZGVyVGhlbWUg
aW5zdGVhZC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJv
bC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29u
dHJvbC5oCShyZXZpc2lvbiA5NDE5OSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUZXh0Q29udHJvbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw5ICszNSw2IEBACiAgICAgSFRN
TFRleHRGb3JtQ29udHJvbEVsZW1lbnQqIHRleHRGb3JtQ29udHJvbEVsZW1lbnQoKSBjb25zdDsK
ICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IGNyZWF0ZUlubmVyVGV4dFN0eWxl
KGNvbnN0IFJlbmRlclN0eWxlKiBzdGFydFN0eWxlKSBjb25zdCA9IDA7CiAKLSAgICBTdHJpbmcg
dGV4dCgpOwotICAgIFN0cmluZyB0ZXh0V2l0aEhhcmRMaW5lQnJlYWtzKCk7Ci0KICAgICBWaXNp
YmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9ySW5kZXgoaW50IGluZGV4KSBjb25zdDsKIAog
cHJvdGVjdGVkOgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105878</attachid>
            <date>2011-08-31 18:38:23 -0700</date>
            <delta_ts>2011-08-31 22:01:01 -0700</delta_ts>
            <desc>fixes the bug</desc>
            <filename>bug-66241-20110831183822.patch</filename>
            <type>text/plain</type>
            <size>14627</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk0MjYwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDcgQEAKKzIwMTEtMDgtMzEgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQ3Jhc2ggd2hlbiBpbnNlcnRpbmcg
dGV4dCB3aXRoIGEgdHJhaWxpbmcgbmV3bGluZSBpbnRvIGEgdGV4dGFyZWEgdmlhIEpTCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NjI0MQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBjcmFzaCB3YXMg
Y2F1c2VkIGJ5IHVwZGF0ZUZyb21FbGVtZW50IGJpdGluZyBvbiB0aGUgZWRpdGluZyBjb2RlLgor
CisgICAgICAgIFdoZW4gdGhlcmUgaXMgYSBzdHlsZSBydWxlIHRoYXQgYXBwbGllcyBvbiB0ZXh0
IG5vZGVzIGluc2lkZSB0aGUgc2hhZG93IERPTSwgRE9NIG1vZGlmaWNhdGlvbnMgbWFkZQorICAg
ICAgICBieSB0aGUgZWRpdGluZyBjb2RlIHRyaWdnZXJzIHN0eWxlIHJlY2FsY3VsYXRpb24gb24g
aW5wdXQgb3IgdGV4dGFyZWEgZWxlbWVudHMgaW4gdGhlIG1pZHN0IG9mIGVkaXRpbmcKKyAgICAg
ICAgY29tbWFuZHMuIEluIHJlc3BvbnNlIHRoaXMgc3R5bGUgcmVjYWxjdWxhdGlvbiwgSFRNTElu
cHV0RWxlbWVudDo6dXBkYXRlRnJvbUVsZW1lbnQgYW5kCisgICAgICAgIEhUTUxUZXh0QXJlYUVs
ZW1lbnQ6OnVwZGF0ZUZyb21FbGVtZW50IGNhbGwgc2V0SW5uZXJUZXh0VmFsdWUgdG8gcmUtY3Jl
YXRlIHRoZSB0ZXh0IG5vZGVzIGluIHRoZQorICAgICAgICBzaGFkb3cgRE9NLiBUaGUgZWRpdGlu
ZyBjb2RlIGJsb3dzIHVwIGJlY2F1c2Ugc2V0SW5uZXJUZXh0VmFsdWUgZGV0YWNoZXMgb2xkIHRl
eHQgbm9kZXMgcmVmZXJlbmNlZCBieQorICAgICAgICBQb3NpdGlvbnMgYW5kIFZpc2libGVQb3Np
dGlvbnMgaGVsZCBieSB0aGUgZWRpdGluZyBjb21tYW5kcyBpbiBwcm9ncmVzcy4KKworICAgICAg
ICBGaXhlZCB0aGUgY3Jhc2ggYnkgc3RvcCBjYWxsaW5nIHNldElubmVyVGV4dFZhbHVlIGluIHVw
ZGF0ZUZyb21FbGVtZW50LiBJbnN0ZWFkLCBXZWJLaXQgbm93IGNyZWF0ZXMKKyAgICAgICAgdGhl
IHRleHQgbm9kZXMgd2hlbiBhdHRyaWJ1dGVzLCBkZXNjZW5kZW50IG5vZGVzLCBldGMuLi4gb2Yg
aW5wdXQgb3IgdGV4dGFyZWEgZWxlbWVudCBjaGFuZ2VzLgorCisgICAgICAgIFRlc3RzOiBmYXN0
L2Zvcm1zL3VwZGF0ZS1mcm9tLWVsZW1lbnQtZHVyaW5nLWVkaXRpbmctY3Jhc2gtMS5odG1sCisg
ICAgICAgICAgICAgICBmYXN0L2Zvcm1zL3VwZGF0ZS1mcm9tLWVsZW1lbnQtZHVyaW5nLWVkaXRp
bmctY3Jhc2gtMi5odG1sCisKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6dXBkYXRlVHlwZSk6IEZvcmNlIGNh
bGxpbmcgc2V0SW5uZXJUZXh0VmFsdWUgd2hlbiBpbnB1dCB0eXBlIGNoYW5nZXMuCisgICAgICAg
IChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50Ojp1cGRhdGVJbm5lclRleHRWYWx1ZSk6IEV4dHJh
Y3RlZCBmcm9tIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZSdzCisgICAgICAgIHVwZGF0ZUVs
ZW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpwYXJzZU1hcHBlZEF0
dHJpYnV0ZSk6IENhbGxzIHVwZGF0ZUlubmVyVGV4dFZhbHVlLiBJbiB0aGUgdGhlb3J5LCB3ZSBz
aG91bGQKKyAgICAgICAgYmUgYWJsZSB0byBjYWxsIGl0IGxlc3MgZnJlcXVlbnRseSBidXQgdGhl
cmUgYXJlIHRvbyBtYW55IGNhc2VzIHRvIGNvbnNpZGVyIGF0IHRoZSBtb21lbnQuCisgICAgICAg
IChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpzZXRWYWx1ZSk6IENhbGxzIHVwZGF0ZUlubmVy
VGV4dFZhbHVlIHdoZW4gdGhlIHZhbHVlIGFjdHVhbGx5IGNoYW5nZWQuCisgICAgICAgIE5vdGUg
d2UgbmVlZCB0byBjYWxsIGl0IGJlZm9yZSB3ZSBzZXQgb3IgcmVzdG9yZSBzZWxlY3Rpb24uCisg
ICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MVGV4
dEFyZWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6
OmNoaWxkcmVuQ2hhbmdlZCk6IENhbGxzIHVwZGF0ZUlubmVyVGV4dFZhbHVlIHdoZW4gdGV4dGFy
ZWEncyBkZXNjZW5kYW50cworICAgICAgICBub2RlcyBhcmUgY2hhbmdlZCBieSBwYXJzZXIgb3Ig
c2NyaXB0cy4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6OnNldFZhbHVl
Q29tbW9uKTogQ2FsbHMgdXBkYXRlSW5uZXJUZXh0VmFsdWUgd2hlbiB0aGUgdmFsdWUgY2hhbmdl
cy4KKyAgICAgICAgKiBodG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Lmg6CisgICAgICAg
ICogaHRtbC9OdW1iZXJJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TnVtYmVySW5w
dXRUeXBlOjp3aWxsQmx1cik6IENhbGxzIHVwZGF0ZUlubmVyVGV4dFZhbHVlIGJlY2F1c2UgaW5w
dXRbdHlwZT1udW1iZXJdIGZvcmNlcworICAgICAgICB0aGUgdmFsdWUgdG8gYmUgdmFsaWQgb24g
Ymx1ci4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuY3Bw
OiBSZW1vdmVkIFJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lOjp1cGRhdGVGcm9tRWxlbWVudC4K
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuaDogRGl0dG8u
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OnVwZGF0ZUZyb21F
bGVtZW50KToKKwogMjAxMS0wOC0zMSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxl
LmNvbT4KIAogICAgICAgICBUcmFuc2Zvcm1TdGF0ZS5tb3ZlKCkgc2hvdWxkIGJlIG5lZ2F0ZWQg
aW4gdGhlIHVuYXBwbHkgY29kZSBwYXRoCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
bnB1dEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElu
cHV0RWxlbWVudC5jcHAJKHJldmlzaW9uIDk0MjU0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSW5wdXRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNiBAQAogI2lu
Y2x1ZGUgIk51bWJlcklucHV0VHlwZS5oIgogI2luY2x1ZGUgIlJlbmRlclRleHRDb250cm9sU2lu
Z2xlTGluZS5oIgogI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCi0jaW5jbHVkZSAiUnVudGltZUVu
YWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIlNlYXJjaElucHV0VHlwZS5oIgogI2luY2x1ZGUg
IlNjcmlwdEV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJXaGVlbEV2ZW50LmgiCkBAIC02MSw2
ICs2MCwxMCBAQAogI2luY2x1ZGUgIkNvbG9ySW5wdXRUeXBlLmgiCiAjZW5kaWYKIAorI2lmIEVO
QUJMRShJTlBVVF9TUEVFQ0gpCisjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgor
I2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTU4Myw2ICs1ODYsMTAgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50Ojp1cGRhdGVUeXBlKCkKICAg
ICAgICAgbV92YWx1ZUlmRGlydHkgPSBzYW5pdGl6ZVZhbHVlKGZhc3RHZXRBdHRyaWJ1dGUodmFs
dWVBdHRyKSk7CiAgICAgZWxzZQogICAgICAgICB1cGRhdGVWYWx1ZUlmTmVlZGVkKCk7CisKKyAg
ICBzZXRGb3JtQ29udHJvbFZhbHVlTWF0Y2hlc1JlbmRlcmVyKGZhbHNlKTsKKyAgICB1cGRhdGVJ
bm5lclRleHRWYWx1ZSgpOworCiAgICAgbV93YXNNb2RpZmllZEJ5VXNlciA9IGZhbHNlOwogCiAg
ICAgaWYgKG5lZWRlZEFjdGl2YXRpb25DYWxsYmFjaykKQEAgLTYxNSw2ICs2MjIsMjEgQEAgdm9p
ZCBIVE1MSW5wdXRFbGVtZW50Ojp1cGRhdGVUeXBlKCkKICAgICBub3RpZnlGb3JtU3RhdGVDaGFu
Z2VkKCk7CiB9CiAKK3ZvaWQgSFRNTElucHV0RWxlbWVudDo6dXBkYXRlSW5uZXJUZXh0VmFsdWUo
KQoreworICAgIGlmICghaXNUZXh0RmllbGQoKSAmJiAhaXNQYXNzd29yZEZpZWxkKCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIGlmICghc3VnZ2VzdGVkVmFsdWUoKS5pc051bGwoKSkKKyAgICAg
ICAgc2V0SW5uZXJUZXh0VmFsdWUoc3VnZ2VzdGVkVmFsdWUoKSk7CisgICAgZWxzZSBpZiAoIWZv
cm1Db250cm9sVmFsdWVNYXRjaGVzUmVuZGVyZXIoKSkgeworICAgICAgICAvLyBGb3IgSFRNTElu
cHV0RWxlbWVudCwgdXBkYXRlIHRoZSByZW5kZXJlciB2YWx1ZSBpZiB0aGUgZm9ybUNvbnRyb2xW
YWx1ZU1hdGNoZXNSZW5kZXJlcigpCisgICAgICAgIC8vIGZsYWcgaXMgZmFsc2UuIEl0IHByb3Rl
Y3RzIGFuIHVuYWNjZXB0YWJsZSByZW5kZXJlciB2YWx1ZSBmcm9tCisgICAgICAgIC8vIGJlaW5n
IG92ZXJ3cml0dGVuIHdpdGggdGhlIERPTSB2YWx1ZS4KKyAgICAgICAgc2V0SW5uZXJUZXh0VmFs
dWUodmlzaWJsZVZhbHVlKCkpOworICAgIH0KK30KKwogdm9pZCBIVE1MSW5wdXRFbGVtZW50Ojpz
dWJ0cmVlSGFzQ2hhbmdlZCgpCiB7CiAgICAgQVNTRVJUKGlzVGV4dEZpZWxkKCkpOwpAQCAtODI4
LDYgKzg1MCw3IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWIKICNl
bmRpZgogICAgIGVsc2UKICAgICAgICAgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnBhcnNl
TWFwcGVkQXR0cmlidXRlKGF0dHIpOworICAgIHVwZGF0ZUlubmVyVGV4dFZhbHVlKCk7CiB9CiAK
IHZvaWQgSFRNTElucHV0RWxlbWVudDo6ZmluaXNoUGFyc2luZ0NoaWxkcmVuKCkKQEAgLTEwNzgs
NiArMTEwMSw5IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6c2V0VmFsdWUoY29uc3QgU3QKICAg
ICBzZXROZWVkc1ZhbGlkaXR5Q2hlY2soKTsKIAogICAgIGlmIChpc1RleHRGaWVsZCgpKSB7Cisg
ICAgICAgIGlmICh2YWx1ZUNoYW5nZWQpCisgICAgICAgICAgICB1cGRhdGVJbm5lclRleHRWYWx1
ZSgpOworCiAgICAgICAgIHVuc2lnbmVkIG1heCA9IHZpc2libGVWYWx1ZSgpLmxlbmd0aCgpOwog
ICAgICAgICBpZiAoZG9jdW1lbnQoKS0+Zm9jdXNlZE5vZGUoKSA9PSB0aGlzKQogICAgICAgICAg
ICAgc2V0U2VsZWN0aW9uUmFuZ2UobWF4LCBtYXgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW5wdXRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSW5wdXRFbGVtZW50LmgJKHJldmlzaW9uIDk0MjU0KQorKysgU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW5wdXRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0NSw2ICsxNDUsOCBAQCBw
dWJsaWM6CiAKICAgICBTdHJpbmcgc2FuaXRpemVWYWx1ZShjb25zdCBTdHJpbmcmKSBjb25zdDsK
IAorICAgIHZvaWQgdXBkYXRlSW5uZXJUZXh0VmFsdWUoKTsKKwogICAgIC8vIFRoZSB2YWx1ZSB3
aGljaCBpcyBkcmF3biBieSBhIHJlbmRlcmVyLgogICAgIFN0cmluZyB2aXNpYmxlVmFsdWUoKSBj
b25zdDsKICAgICBTdHJpbmcgY29udmVydEZyb21WaXNpYmxlVmFsdWUoY29uc3QgU3RyaW5nJikg
Y29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5j
cHAJKHJldmlzaW9uIDk0MjU0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNiBAQAogI2luY2x1ZGUgIkZv
cm1EYXRhTGlzdC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgi
Ci0jaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJSZW5kZXJUZXh0Q29udHJvbE11
bHRpTGluZS5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlICJUZXh0LmgiCkBA
IC0xMDEsNiArMTAwLDcgQEAgdm9pZCBIVE1MVGV4dEFyZWFFbGVtZW50OjpjaGlsZHJlbkNoYW5n
ZQogICAgIHNldExhc3RDaGFuZ2VXYXNOb3RVc2VyRWRpdCgpOwogICAgIGlmICghbV9pc0RpcnR5
KQogICAgICAgICBzZXROb25EaXJ0eVZhbHVlKGRlZmF1bHRWYWx1ZSgpKTsKKyAgICBzZXRJbm5l
clRleHRWYWx1ZSh2YWx1ZSgpKTsKICAgICBIVE1MRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNo
YW5nZWRCeVBhcnNlciwgYmVmb3JlQ2hhbmdlLCBhZnRlckNoYW5nZSwgY2hpbGRDb3VudERlbHRh
KTsKIH0KICAgICAKQEAgLTMyOSw2ICszMjksNyBAQCB2b2lkIEhUTUxUZXh0QXJlYUVsZW1lbnQ6
OnNldFZhbHVlQ29tbW9uCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fdmFsdWUgPSBub3JtYWxp
emVkVmFsdWU7CisgICAgc2V0SW5uZXJUZXh0VmFsdWUobV92YWx1ZSk7CiAgICAgc2V0TGFzdENo
YW5nZVdhc05vdFVzZXJFZGl0KCk7CiAgICAgdXBkYXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KGZh
bHNlKTsKICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oCShyZXZpc2lvbiA5NDI1NCkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMTAzLDYgKzEwMyw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHNldExh
c3RDaGFuZ2VXYXNOb3RVc2VyRWRpdCgpIHsgbV9sYXN0Q2hhbmdlV2FzVXNlckVkaXQgPSBmYWxz
ZTsgfQogCiAgICAgU3RyaW5nIHZhbHVlV2l0aEhhcmRMaW5lQnJlYWtzKCkgY29uc3Q7CisKIHBy
aXZhdGU6CiAgICAgaW50IGNvbXB1dGVTZWxlY3Rpb25TdGFydCgpIGNvbnN0OwogICAgIGludCBj
b21wdXRlU2VsZWN0aW9uRW5kKCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL051
bWJlcklucHV0VHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9OdW1i
ZXJJbnB1dFR5cGUuY3BwCShyZXZpc2lvbiA5NDI1NCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwv
TnVtYmVySW5wdXRUeXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgwLDggKzI4MCw3IEBAIHZv
aWQgTnVtYmVySW5wdXRUeXBlOjp3aWxsQmx1cigpCiAKICAgICAvLyBXZSBuZWVkIHRvIHJlc2V0
IHRoZSByZW5kZXJlciB2YWx1ZSBleHBsaWNpdGx5IGJlY2F1c2UgYW4gdW5hY2NlcHRhYmxlCiAg
ICAgLy8gcmVuZGVyZXIgdmFsdWUgc2hvdWxkIGJlIHB1cmdlZCBiZWZvcmUgc3R5bGUgY2FsY3Vs
YXRpb24uCi0gICAgaWYgKGVsZW1lbnQoKS0+cmVuZGVyZXIoKSkKLSAgICAgICAgZWxlbWVudCgp
LT5yZW5kZXJlcigpLT51cGRhdGVGcm9tRWxlbWVudCgpOworICAgIGVsZW1lbnQoKS0+dXBkYXRl
SW5uZXJUZXh0VmFsdWUoKTsKIH0KIAogU3RyaW5nIE51bWJlcklucHV0VHlwZTo6dmlzaWJsZVZh
bHVlKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29u
dHJvbE11bHRpTGluZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmNwcAkocmV2aXNpb24gOTQyNTQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC04MCwxMyArODAsNiBAQCBMYXlvdXRVbml0IFJlbmRlclRleHRDb250cm9s
TXVsdGlMaW5lOjpiCiAgICAgcmV0dXJuIFJlbmRlckJveDo6YmFzZWxpbmVQb3NpdGlvbihiYXNl
bGluZVR5cGUsIGZpcnN0TGluZSwgZGlyZWN0aW9uLCBsaW5lUG9zaXRpb25Nb2RlKTsKIH0KIAot
dm9pZCBSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZTo6dXBkYXRlRnJvbUVsZW1lbnQoKQotewot
ICAgIFJlbmRlclRleHRDb250cm9sOjp1cGRhdGVGcm9tRWxlbWVudCgpOwotCi0gICAgdGV4dEZv
cm1Db250cm9sRWxlbWVudCgpLT5zZXRJbm5lclRleHRWYWx1ZShzdGF0aWNfY2FzdDxIVE1MVGV4
dEFyZWFFbGVtZW50Kj4obm9kZSgpKS0+dmFsdWUoKSk7Ci19Ci0KIFBhc3NSZWZQdHI8UmVuZGVy
U3R5bGU+IFJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lOjpjcmVhdGVJbm5lclRleHRTdHlsZShj
b25zdCBSZW5kZXJTdHlsZSogc3RhcnRTdHlsZSkgY29uc3QKIHsKICAgICBSZWZQdHI8UmVuZGVy
U3R5bGU+IHRleHRCbG9ja1N0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZSgpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlM
aW5lLmgJKHJldmlzaW9uIDk0MjU0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRleHRDb250cm9sTXVsdGlMaW5lLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDggKzQxLDYgQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0Q29udHJvbEhlaWdodEJhc2VkT25MaW5l
SGVpZ2h0KExheW91dFVuaXQgbGluZUhlaWdodCk7CiAgICAgdmlydHVhbCBMYXlvdXRVbml0IGJh
c2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlv
bk1vZGUsIExpbmVQb3NpdGlvbk1vZGUgPSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpIGNvbnN0
OwogCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZyb21FbGVtZW50KCk7Ci0KICAgICB2aXJ0dWFs
IFJlbmRlclN0eWxlKiB0ZXh0QmFzZVN0eWxlKCkgY29uc3Q7CiAgICAgdmlydHVhbCBQYXNzUmVm
UHRyPFJlbmRlclN0eWxlPiBjcmVhdGVJbm5lclRleHRTdHlsZShjb25zdCBSZW5kZXJTdHlsZSog
c3RhcnRTdHlsZSkgY29uc3Q7CiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGxheW91dFNwZWNp
YWxFeGNsdWRlZENoaWxkKGJvb2wgcmVsYXlvdXRDaGlsZHJlbik7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5l
LmNwcAkocmV2aXNpb24gOTQyNTQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDc2LDE4ICs0NzYs
NiBAQCB2b2lkIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6dXBkYXRlCiAgICAgaWYgKGNh
bmNlbEJ1dHRvbkVsZW1lbnQoKSkKICAgICAgICAgdXBkYXRlQ2FuY2VsQnV0dG9uVmlzaWJpbGl0
eSgpOwogCi0gICAgaWYgKCFpbnB1dEVsZW1lbnQoKS0+c3VnZ2VzdGVkVmFsdWUoKS5pc051bGwo
KSkKLSAgICAgICAgdGV4dEZvcm1Db250cm9sRWxlbWVudCgpLT5zZXRJbm5lclRleHRWYWx1ZShp
bnB1dEVsZW1lbnQoKS0+c3VnZ2VzdGVkVmFsdWUoKSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIGlm
IChub2RlKCktPmhhc1RhZ05hbWUoaW5wdXRUYWcpKSB7Ci0gICAgICAgICAgICAvLyBGb3IgSFRN
TElucHV0RWxlbWVudCwgdXBkYXRlIHRoZSByZW5kZXJlciB2YWx1ZSBpZiB0aGUgZm9ybUNvbnRy
b2xWYWx1ZU1hdGNoZXNSZW5kZXJlcigpCi0gICAgICAgICAgICAvLyBmbGFnIGlzIGZhbHNlLiBJ
dCBwcm90ZWN0cyBhbiB1bmFjY2VwdGFibGUgcmVuZGVyZXIgdmFsdWUgZnJvbQotICAgICAgICAg
ICAgLy8gYmVpbmcgb3ZlcndyaXR0ZW4gd2l0aCB0aGUgRE9NIHZhbHVlLgotICAgICAgICAgICAg
aWYgKCFpbnB1dEVsZW1lbnQoKS0+Zm9ybUNvbnRyb2xWYWx1ZU1hdGNoZXNSZW5kZXJlcigpKQot
ICAgICAgICAgICAgICAgIHRleHRGb3JtQ29udHJvbEVsZW1lbnQoKS0+c2V0SW5uZXJUZXh0VmFs
dWUoaW5wdXRFbGVtZW50KCktPnZpc2libGVWYWx1ZSgpKTsKLSAgICAgICAgfQotICAgIH0KLQog
ICAgIGlmIChtX3NlYXJjaFBvcHVwSXNWaXNpYmxlKQogICAgICAgICBtX3NlYXJjaFBvcHVwLT5w
b3B1cE1lbnUoKS0+dXBkYXRlRnJvbUVsZW1lbnQoKTsKIH0KSW5kZXg6IExheW91dFRlc3RzL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDk0
MjYwKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTggQEAKKzIwMTEtMDgtMzEgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgQ3Jhc2ggd2hlbiBpbnNlcnRpbmcgdGV4dCB3aXRoIGEgdHJhaWxpbmcgbmV3bGluZSBp
bnRvIGEgdGV4dGFyZWEgdmlhIEpTCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD02NjI0MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZCByZWdyZXNzaW9ucyB0ZXN0cyB0byBlbnN1cmUgV2ViS2l0IGRvZXNu
J3QgY3Jhc2ggZXZlbiB3aGVuIHN0eWxlIHJlY2FsYyBoYXBwZW5zCisgICAgICAgIGluIHRoZSBt
aWRzdCBvZiBlZGl0aW5nIGNvbW1hbmRzLgorCisgICAgICAgICogZmFzdC9mb3Jtcy91cGRhdGUt
ZnJvbS1lbGVtZW50LWR1cmluZy1lZGl0aW5nLWNyYXNoLTEtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2Zvcm1zL3VwZGF0ZS1mcm9tLWVsZW1lbnQtZHVyaW5nLWVkaXRpbmct
Y3Jhc2gtMS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL3VwZGF0ZS1mcm9tLWVs
ZW1lbnQtZHVyaW5nLWVkaXRpbmctY3Jhc2gtMi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvZm9ybXMvdXBkYXRlLWZyb20tZWxlbWVudC1kdXJpbmctZWRpdGluZy1jcmFzaC0y
Lmh0bWw6IEFkZGVkLgorCiAyMDExLTA4LTMxICBFcmlrIEFydmlkc3NvbiAgPGFydkBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nIHNob3VsZCBlbmNvZGUgc3Bl
Y2lhbCBjaGFyYWN0ZXJzCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3VwZGF0ZS1mcm9t
LWVsZW1lbnQtZHVyaW5nLWVkaXRpbmctY3Jhc2gtMS1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy91cGRhdGUtZnJvbS1lbGVtZW50LWR1cmluZy1lZGl0
aW5nLWNyYXNoLTEtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy91cGRhdGUtZnJvbS1lbGVtZW50LWR1cmluZy1lZGl0aW5nLWNyYXNoLTEtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIgQEAKK1RoaXMgdGVzdCB2ZXJpZmllcyBX
ZWJLaXQgZG9lc24ndCBjcmFzaCBldmVuIGlmIHRoZSBET00gY2hhbmdlcyBpbiBzaGFkb3cgRE9N
IGNhdXNlZCB0aGUgc2hhZG93IGhvc3QncyBzdHlsZSB0byBjaGFuZ2UuCitQQVNTCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3VwZGF0ZS1mcm9tLWVsZW1lbnQtZHVyaW5nLWVkaXRpbmct
Y3Jhc2gtMS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvdXBkYXRl
LWZyb20tZWxlbWVudC1kdXJpbmctZWRpdGluZy1jcmFzaC0xLmh0bWwJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3VwZGF0ZS1mcm9tLWVsZW1lbnQtZHVyaW5nLWVkaXRp
bmctY3Jhc2gtMS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI0IEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGJvZHk+Cis8c3R5bGU+CisjY29udGFpbmVyICsgKiB7IGNsZWFyOiBi
b3RoOyB9Cis8L3N0eWxlPgorPHAgaWQ9ImNvbnRhaW5lciI+PHRleHRhcmVhPjwvdGV4dGFyZWE+
PC9wPgorPHNjcmlwdD4KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKK3ZhciB0ZXh0YXJlYSA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCd0ZXh0YXJlYScpWzBdOwordGV4dGFyZWEuZm9jdXMo
KTsKK3RleHRhcmVhLmlubmVySFRNTCA9ICdhXG4nOwordGV4dGFyZWEuc2VsZWN0aW9uU3RhcnQg
PSAxOwordGV4dGFyZWEuc2VsZWN0aW9uRW5kID0gMTsKK2RvY3VtZW50LmV4ZWNDb21tYW5kKCdJ
bnNlcnRMaW5lQnJlYWsnLCBmYWxzZSwgbnVsbCk7CisKK2RvY3VtZW50LmJvZHkuaW5uZXJUZXh0
ID0gIlRoaXMgdGVzdCB2ZXJpZmllcyBXZWJLaXQgZG9lc24ndCBjcmFzaCBldmVuIGlmIHRoZSBE
T00gY2hhbmdlcyBpbiBzaGFkb3cgRE9NIGNhdXNlZCB0aGUgc2hhZG93IGhvc3QncyBzdHlsZSB0
byBjaGFuZ2UuXG5QQVNTIjsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3VwZGF0ZS1mcm9tLWVsZW1lbnQtZHVyaW5nLWVkaXRpbmct
Y3Jhc2gtMi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy91cGRhdGUtZnJvbS1lbGVtZW50LWR1cmluZy1lZGl0aW5nLWNyYXNoLTItZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy91cGRhdGUtZnJvbS1lbGVt
ZW50LWR1cmluZy1lZGl0aW5nLWNyYXNoLTItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDIgQEAKK1RoaXMgdGVzdCB2ZXJpZmllcyBXZWJLaXQgZG9lc24ndCBjcmFzaCBldmVu
IGlmIHRoZSBET00gY2hhbmdlcyBpbiBzaGFkb3cgRE9NIGNhdXNlZCB0aGUgc2hhZG93IGhvc3Qn
cyBzdHlsZSB0byBjaGFuZ2UuCitQQVNTCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Vw
ZGF0ZS1mcm9tLWVsZW1lbnQtZHVyaW5nLWVkaXRpbmctY3Jhc2gtMi5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvdXBkYXRlLWZyb20tZWxlbWVudC1kdXJpbmctZWRp
dGluZy1jcmFzaC0yLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L3VwZGF0ZS1mcm9tLWVsZW1lbnQtZHVyaW5nLWVkaXRpbmctY3Jhc2gtMi5odG1sCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDI0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8
c3R5bGU+CitkaXYgKyAqIHt9Cis8L3N0eWxlPgorPHAgaWQ9ImNvbnRhaW5lciI+PHRleHRhcmVh
PmEKKzwvdGV4dGFyZWE+PC9wPgorPHNjcmlwdD4KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKK3ZhciB0
ZXh0YXJlYSA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCd0ZXh0YXJlYScpWzBdOwor
dGV4dGFyZWEuZm9jdXMoKTsKK3RleHRhcmVhLnNlbGVjdGlvblN0YXJ0ID0gMTsKK3RleHRhcmVh
LnNlbGVjdGlvbkVuZCA9IDE7Citkb2N1bWVudC5leGVjQ29tbWFuZCgnSW5zZXJ0TGluZUJyZWFr
JywgZmFsc2UsIG51bGwpOworCitkb2N1bWVudC5ib2R5LmlubmVyVGV4dCA9ICJUaGlzIHRlc3Qg
dmVyaWZpZXMgV2ViS2l0IGRvZXNuJ3QgY3Jhc2ggZXZlbiBpZiB0aGUgRE9NIGNoYW5nZXMgaW4g
c2hhZG93IERPTSBjYXVzZWQgdGhlIHNoYWRvdyBob3N0J3Mgc3R5bGUgdG8gY2hhbmdlLlxuUEFT
UyI7CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>
<flag name="review"
          id="102160"
          type_id="1"
          status="+"
          setter="darin"
    />
    <flag name="commit-queue"
          id="102181"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>