<?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>39863</bug_id>
          
          <creation_ts>2010-05-27 23:52:55 -0700</creation_ts>
          <short_desc>innerText does not include a letter with :first-letter applied</short_desc>
          <delta_ts>2011-01-27 17:27:57 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>53272</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yoshiki Hayashi">yhayashi</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aestes</cc>
    
    <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>hamaji</cc>
    
    <cc>mitz</cc>
    
    <cc>ojan</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yhayashi</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>231582</commentid>
    <comment_count>0</comment_count>
      <attachid>57297</attachid>
    <who name="Yoshiki Hayashi">yhayashi</who>
    <bug_when>2010-05-27 23:52:55 -0700</bug_when>
    <thetext>Created attachment 57297
Testcase

If :first-letter rules is applied to a block level element, innerText does not include the first letter, as can be seen by the attached test case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231587</commentid>
    <comment_count>1</comment_count>
      <attachid>57300</attachid>
    <who name="Yoshiki Hayashi">yhayashi</who>
    <bug_when>2010-05-28 00:06:41 -0700</bug_when>
    <thetext>Created attachment 57300
Proposed Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231638</commentid>
    <comment_count>2</comment_count>
    <who name="Yoshiki Hayashi">yhayashi</who>
    <bug_when>2010-05-28 04:19:32 -0700</bug_when>
    <thetext>Sorry, forgot to include one test affected by this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231639</commentid>
    <comment_count>3</comment_count>
      <attachid>57316</attachid>
    <who name="Yoshiki Hayashi">yhayashi</who>
    <bug_when>2010-05-28 04:21:06 -0700</bug_when>
    <thetext>Created attachment 57316
Proposed Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231640</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-28 04:22:50 -0700</bug_when>
    <thetext>Attachment 57316 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebCore/editing/TextIterator.cpp:379:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
Total errors found: 1 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231727</commentid>
    <comment_count>5</comment_count>
      <attachid>57316</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-05-28 08:43:38 -0700</bug_when>
    <thetext>Comment on attachment 57316
Proposed Patch

Looks good.

It&apos;s frustrating that this ends up copying and pasting so much code. I would prefer a code path that somehow reused more of what was there for things like handling collapsed space and such.

I&apos;d like to see the new logic factored out into a separate function so handleTextNode doesn&apos;t get so much bigger. That might also make it clearer how to factor this so it shares more code with the normal text node handling.

&gt; +        if (fragment-&gt;firstLetter() &amp;&amp; fragment-&gt;firstLetter()-&gt;firstChild() &amp;&amp; fragment-&gt;firstLetter()-&gt;firstChild()-&gt;isText() &amp;&amp; toRenderText(fragment-&gt;firstLetter()-&gt;firstChild())-&gt;isTextFragment()) {
&gt; +            RenderTextFragment* firstLetter = static_cast&lt;RenderTextFragment*&gt;(fragment-&gt;firstLetter()-&gt;firstChild());

Is there a way to write this more generally? It seems fragile to assume here the particular arrangement of renderers. We don&apos;t want to have to modify the text iterator any time we change the details of how RenderTextFragment works.

&gt; +                emitText(m_node, firstLetter, 0, 1);

This assumes that the first letter will be a single character at the beginning of the DOM node. That&apos;s not necessarily true. The first letter could be a surrogate pair, for example. I think the text length needs to come from a computation rather than a hard-coded 1. And perhaps the offset too. For example there could be collapsed whitespace at the beginning of the text node. We need test cases that cover this, I think.

I could almost say review+, but I think the &quot;0, 1&quot; thing here is wrong so I&apos;ll say review- and ask you to cover that case correctly. I may be mistaken, and if so, please feel free to put this same patch up for review again after explaining what I got wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231875</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-05-28 12:35:06 -0700</bug_when>
    <thetext>See also: bug 6185.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232315</commentid>
    <comment_count>7</comment_count>
    <who name="Yoshiki Hayashi">yhayashi</who>
    <bug_when>2010-05-31 04:30:14 -0700</bug_when>
    <thetext>Thank you for review!

(In reply to comment #5)

&gt; It&apos;s frustrating that this ends up copying and pasting so much code. I would prefer a code path that somehow reused more of what was there for things like handling collapsed space and such.

I created a new method named handleTextNodeFirstLetter as suggested below.  I tried to reuse as much logic as possible but I couldn&apos;t get rid of collapsed space handling code from handleTextNodeFirstLetter because there are lots of early exit code in handleTextNode and in each of them, handleTextNodeFirstLetter needs to be called and needs to handle outputting a space character when needed.

I ended up littering around lots of handleTextNodeFirstLetter calling code in handleTextNode and handleTextBox but this should be more correct with respect to right to left language than my previous patch.

&gt; I&apos;d like to see the new logic factored out into a separate function so handleTextNode doesn&apos;t get so much bigger. That might also make it clearer how to factor this so it shares more code with the normal text node handling.

This is now done.

&gt; &gt; +        if (fragment-&gt;firstLetter() &amp;&amp; fragment-&gt;firstLetter()-&gt;firstChild() &amp;&amp; fragment-&gt;firstLetter()-&gt;firstChild()-&gt;isText() &amp;&amp; toRenderText(fragment-&gt;firstLetter()-&gt;firstChild())-&gt;isTextFragment()) {
&gt; &gt; +            RenderTextFragment* firstLetter = static_cast&lt;RenderTextFragment*&gt;(fragment-&gt;firstLetter()-&gt;firstChild());
&gt; 
&gt; Is there a way to write this more generally? It seems fragile to assume here the particular arrangement of renderers. We don&apos;t want to have to modify the text iterator any time we change the details of how RenderTextFragment works.

In the new patch, I made the assumption that firstLetter is a container (either RenderBlock or RenderInline) that holds at least one RenderText in children.  I could change it to traverse the whole tree of firstLetter to output all RenderText in that tree but it looked overkill to me.  I can certainly change the code that way if you prefer it.

&gt; 
&gt; &gt; +                emitText(m_node, firstLetter, 0, 1);
&gt; 
&gt; This assumes that the first letter will be a single character at the beginning of the DOM node. That&apos;s not necessarily true. The first letter could be a surrogate pair, for example. I think the text length needs to come from a computation rather than a hard-coded 1. And perhaps the offset too. For example there could be collapsed whitespace at the beginning of the text node. We need test cases that cover this, I think.
&gt; 
&gt; I could almost say review+, but I think the &quot;0, 1&quot; thing here is wrong so I&apos;ll say review- and ask you to cover that case correctly. I may be mistaken, and if so, please feel free to put this same patch up for review again after explaining what I got wrong.

You are absolutely right about that.  In addition to surrogate pairs, the first letter object could contain multiple letters like &apos;---a&apos; because punctuations are not considered when finding the character to apply :first-letter and thus it needs to hold all previous characters until first non-punctuation letter is found.

As to bug 6185, this patch doesn&apos;t fix the problem but I&apos;ll see if I can fix that as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232316</commentid>
    <comment_count>8</comment_count>
      <attachid>57451</attachid>
    <who name="Yoshiki Hayashi">yhayashi</who>
    <bug_when>2010-05-31 04:31:07 -0700</bug_when>
    <thetext>Created attachment 57451
Proposed Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232318</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-31 04:34:56 -0700</bug_when>
    <thetext>Attachment 57451 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebCore/editing/TextIterator.cpp:379:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
Total errors found: 1 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232319</commentid>
    <comment_count>10</comment_count>
      <attachid>57452</attachid>
    <who name="Yoshiki Hayashi">yhayashi</who>
    <bug_when>2010-05-31 04:36:43 -0700</bug_when>
    <thetext>Created attachment 57452
Proposed Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232320</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-31 04:37:42 -0700</bug_when>
    <thetext>Attachment 57452 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebCore/editing/TextIterator.cpp:379:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
Total errors found: 1 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232321</commentid>
    <comment_count>12</comment_count>
    <who name="Yoshiki Hayashi">yhayashi</who>
    <bug_when>2010-05-31 04:39:51 -0700</bug_when>
    <thetext>Sorry, for some reason I can&apos;t upload new patch via webkit-patch script and it keeps uploading the previous one.  I&apos;ll try manually adding it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232322</commentid>
    <comment_count>13</comment_count>
      <attachid>57453</attachid>
    <who name="Yoshiki Hayashi">yhayashi</who>
    <bug_when>2010-05-31 04:43:06 -0700</bug_when>
    <thetext>Created attachment 57453
Proposed Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232323</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-31 04:46:45 -0700</bug_when>
    <thetext>Attachment 57453 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebCore/editing/TextIterator.cpp:578:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
WebCore/editing/TextIterator.cpp:653:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
WebCore/editing/TextIterator.cpp:654:  An else if statement should be written as an if statement when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
Total errors found: 3 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232426</commentid>
    <comment_count>15</comment_count>
      <attachid>57453</attachid>
    <who name="">mitz</who>
    <bug_when>2010-05-31 09:43:21 -0700</bug_when>
    <thetext>Comment on attachment 57453
Proposed Patch

Does this work with &quot;white-space: pre&quot; text?

WebCore/editing/TextIterator.cpp:593
 +                  while (runStart &lt; runEnd &amp;&amp; str[runStart] == &apos; &apos;)
 +                      ++runStart;

What about other kinds of whitespace and newline? The logic in &lt;http://trac.webkit.org/browser/trunk/WebCore/rendering/RenderBlock.cpp?rev=60408#L4914&gt; is different. Could you instead use the InlineTextBox’s start and end, like handleTextBox() does?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232605</commentid>
    <comment_count>16</comment_count>
    <who name="Yoshiki Hayashi">yhayashi</who>
    <bug_when>2010-05-31 21:19:54 -0700</bug_when>
    <thetext>Thank you for review!

(In reply to comment #15)
&gt; (From update of attachment 57453 [details])
&gt; Does this work with &quot;white-space: pre&quot; text?

Good point.  No, it doesn&apos;t work.  I&apos;m going to attach a new patch to fix it which just adds if (renderer-&gt;style()-&gt;collapseWhiteSpace()) in front of while loop.

&gt; WebCore/editing/TextIterator.cpp:593
&gt;  +                  while (runStart &lt; runEnd &amp;&amp; str[runStart] == &apos; &apos;)
&gt;  +                      ++runStart;
&gt; 
&gt; What about other kinds of whitespace and newline? The logic in &lt;http://trac.webkit.org/browser/trunk/WebCore/rendering/RenderBlock.cpp?rev=60408#L4914&gt; is different. Could you instead use the InlineTextBox’s start and end, like handleTextBox() does?

There are two cases when handling leading whitespaces.  One is whitespaces are collapsed and another is not collapsed.  When whitespace is not collapsed, all leading whitespaces should be preserved as you pointed out above.   So this whil e loop shouldn&apos;t be run.  When whitespaces should be collapsed, those should be already replaced to one &apos; &apos; so the above loop should correctly skip that.  The RenderBlock code you mentioned also skips punctuations when finding the first letter that could get :first-letter to be applied but here, we want to output them as text so we don&apos;t need special handling for those.  So unless I&apos;m missing something (which is quite possible as I just did in the previous patch), I think the new code should work.

As to the latter point, if I understand the code correctly, RenderTextFragment doesn&apos;t have InlineTextBox and it holds text directly.  RenderTextFragment itself has start and end but those are offset into original text which will produce the text fragment (text_fragment = original_text.substring(start, end)) so those can&apos;t be used, either.  So looking at the RenderTextFragment.cpp, I don&apos;t know if there&apos;s a better way to do it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232606</commentid>
    <comment_count>17</comment_count>
      <attachid>57515</attachid>
    <who name="Yoshiki Hayashi">yhayashi</who>
    <bug_when>2010-05-31 21:21:18 -0700</bug_when>
    <thetext>Created attachment 57515
Proposed Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232608</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-31 21:22:40 -0700</bug_when>
    <thetext>Attachment 57515 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebCore/editing/TextIterator.cpp:578:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
WebCore/editing/TextIterator.cpp:654:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
WebCore/editing/TextIterator.cpp:655:  An else if statement should be written as an if statement when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
Total errors found: 3 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232609</commentid>
    <comment_count>19</comment_count>
    <who name="Yoshiki Hayashi">yhayashi</who>
    <bug_when>2010-05-31 21:30:56 -0700</bug_when>
    <thetext>Oops.  Fixing style issues...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232610</commentid>
    <comment_count>20</comment_count>
      <attachid>57516</attachid>
    <who name="Yoshiki Hayashi">yhayashi</who>
    <bug_when>2010-05-31 21:31:55 -0700</bug_when>
    <thetext>Created attachment 57516
Proposed Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232615</commentid>
    <comment_count>21</comment_count>
    <who name="">mitz</who>
    <bug_when>2010-05-31 21:48:24 -0700</bug_when>
    <thetext>(In reply to comment #16)

&gt; There are two cases when handling leading whitespaces.  One is whitespaces are collapsed and another is not collapsed.  When whitespace is not collapsed, all leading whitespaces should be preserved as you pointed out above.   So this whil e loop shouldn&apos;t be run.  When whitespaces should be collapsed, those should be already replaced to one &apos; &apos; so the above loop should correctly skip that.  The RenderBlock code you mentioned also skips punctuations when finding the first letter that could get :first-letter to be applied but here, we want to output them as text so we don&apos;t need special handling for those.  So unless I&apos;m missing something (which is quite possible as I just did in the previous patch), I think the new code should work.

I think you’re missing the part where isSpaceOrNewline() differs from comparing to &apos; &apos;.

&gt; As to the latter point, if I understand the code correctly, RenderTextFragment doesn&apos;t have InlineTextBox and it holds text directly.  RenderTextFragment itself has start and end but those are offset into original text which will produce the text fragment (text_fragment = original_text.substring(start, end)) so those can&apos;t be used, either.  So looking at the RenderTextFragment.cpp, I don&apos;t know if there&apos;s a better way to do it.

All rendered text is rendered by InlineTextBox instances. In your patch, handleTextNodeFirstLetter() is called from handleTextBox(), where the text box has a RenderTextFragment() as its renderer. The offsets in the text box are into the RenderTextFragment’s text(), and I think you can use the RenderTextFragment’s start and end to map those into offsets in the node. Does that make sense?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232683</commentid>
    <comment_count>22</comment_count>
    <who name="Yoshiki Hayashi">yhayashi</who>
    <bug_when>2010-06-01 04:59:52 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; (In reply to comment #16)
&gt; 
&gt; &gt; There are two cases when handling leading whitespaces.  One is whitespaces are collapsed and another is not collapsed.  When whitespace is not collapsed, all leading whitespaces should be preserved as you pointed out above.   So this whil e loop shouldn&apos;t be run.  When whitespaces should be collapsed, those should be already replaced to one &apos; &apos; so the above loop should correctly skip that.  The RenderBlock code you mentioned also skips punctuations when finding the first letter that could get :first-letter to be applied but here, we want to output them as text so we don&apos;t need special handling for those.  So unless I&apos;m missing something (which is quite possible as I just did in the previous patch), I think the new code should work.
&gt; 
&gt; I think you’re missing the part where isSpaceOrNewline() differs from comparing to &apos; &apos;.

Sorry for being dense but if you have html fragment that only works with isSpaceOrNewline, I&apos;d like to add it to the testcase.  Meanwhile, I&apos;ll change it to use isSpaceOrNewline.

&gt; &gt; As to the latter point, if I understand the code correctly, RenderTextFragment doesn&apos;t have InlineTextBox and it holds text directly.  RenderTextFragment itself has start and end but those are offset into original text which will produce the text fragment (text_fragment = original_text.substring(start, end)) so those can&apos;t be used, either.  So looking at the RenderTextFragment.cpp, I don&apos;t know if there&apos;s a better way to do it.
&gt; 
&gt; All rendered text is rendered by InlineTextBox instances. In your patch, handleTextNodeFirstLetter() is called from handleTextBox(), where the text box has a RenderTextFragment() as its renderer. The offsets in the text box are into the RenderTextFragment’s text(), and I think you can use the RenderTextFragment’s start and end to map those into offsets in the node. Does that make sense?

Ah, yes, thank you for the explanation.  It means I can unify the logic more, so I&apos;ll work on rewriting my patch.  Unfortunately I was busy doing other stuff today but should be able to find some time tomorrow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233672</commentid>
    <comment_count>23</comment_count>
    <who name="Yoshiki Hayashi">yhayashi</who>
    <bug_when>2010-06-03 02:32:48 -0700</bug_when>
    <thetext>It took more time than expected but revised patch is now ready and I&apos;ll attach it shortly.  It would be nice if you could take another look.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233673</commentid>
    <comment_count>24</comment_count>
      <attachid>57747</attachid>
    <who name="Yoshiki Hayashi">yhayashi</who>
    <bug_when>2010-06-03 02:35:33 -0700</bug_when>
    <thetext>Created attachment 57747
Proposed Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233674</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-03 02:38:17 -0700</bug_when>
    <thetext>Attachment 57747 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebCore/editing/TextIterator.cpp:514:  One line control clauses should not use braces.  [whitespace/braces] [4]
Total errors found: 1 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233676</commentid>
    <comment_count>26</comment_count>
      <attachid>57748</attachid>
    <who name="Yoshiki Hayashi">yhayashi</who>
    <bug_when>2010-06-03 02:44:58 -0700</bug_when>
    <thetext>Created attachment 57748
Proposed Patch with style fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233690</commentid>
    <comment_count>27</comment_count>
      <attachid>57750</attachid>
    <who name="Yoshiki Hayashi">yhayashi</who>
    <bug_when>2010-06-03 03:41:08 -0700</bug_when>
    <thetext>Created attachment 57750
Proposed Patch without unnecessary return.  Sorry for spam.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234113</commentid>
    <comment_count>28</comment_count>
      <attachid>57854</attachid>
    <who name="Yoshiki Hayashi">yhayashi</who>
    <bug_when>2010-06-04 01:57:35 -0700</bug_when>
    <thetext>Created attachment 57854
Proposed Patch with a few bug fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234114</commentid>
    <comment_count>29</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-04 02:00:26 -0700</bug_when>
    <thetext>Attachment 57854 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebCore/editing/TextIterator.cpp:512:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 1 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235306</commentid>
    <comment_count>30</comment_count>
      <attachid>57854</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-06-08 10:10:51 -0700</bug_when>
    <thetext>Comment on attachment 57854
Proposed Patch with a few bug fixes

Could not upload patch 57854 to rietveld. Rietveld is down or there&apos;s a bug in the upload bot.

Unexpected failure when landing patch!  Please file a bug against webkit-patch.
Failed to run &quot;[&apos;/WebKit/WebKitTools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-commit-queue.appspot.com&apos;, &apos;post-attachment-to-rietveld&apos;, &apos;--force-clean&apos;, &apos;--non-interactive&apos;, &apos;--parent-command=rietveld-upload-queue&apos;, 57854]&quot; exit_code: 1
Last 500 characters of output:
/WebKitTools/Scripts/webkitpy/tool/commands/stepsequence.py&quot;, line 77, in run_and_handle_errors
    self._run(tool, options, state)
  File &quot;/WebKit/WebKitTools/Scripts/webkitpy/tool/commands/stepsequence.py&quot;, line 71, in _run
    step(tool, options).run(state)
  File &quot;/WebKit/WebKitTools/Scripts/webkitpy/tool/steps/postcodereview.py&quot;, line 69, in run
    self._tool.bugs.set_flag_on_attachment(patch.id(), &apos;in-rietveld&apos;, &apos;+&apos;)
TypeError: set_flag_on_attachment() takes exactly 6 arguments (4 given)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235308</commentid>
    <comment_count>31</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-06-08 10:11:59 -0700</bug_when>
    <thetext>(In reply to comment #30)
&gt; (From update of attachment 57854 [details])
&gt; Could not upload patch 57854 to rietveld. Rietveld is down or there&apos;s a bug in the upload bot.

This is a bug in the rietveld upload bot. Sorry for the noise.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260395</commentid>
    <comment_count>32</comment_count>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-08-04 22:19:28 -0700</bug_when>
    <thetext>Almost there? Dan, could you take another look on this patch when you have time?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262143</commentid>
    <comment_count>33</comment_count>
      <attachid>57854</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-08-09 08:21:26 -0700</bug_when>
    <thetext>Comment on attachment 57854
Proposed Patch with a few bug fixes

I&apos;m not familiar with this area, but it seems Yoshiki-san addressed all of issues from darin and mitz in the latest patch.
I&apos;ll set r+ tomorrow if no one objects.


WebCore/editing/TextIterator.cpp:512
 +      if (!m_handledFirstLetter &amp;&amp; renderer-&gt;isTextFragment() &amp;&amp; m_offset == 0)
We should write &quot; ... &amp;&amp; !m_offset)&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262528</commentid>
    <comment_count>34</comment_count>
      <attachid>57854</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-08-10 00:30:39 -0700</bug_when>
    <thetext>Comment on attachment 57854
Proposed Patch with a few bug fixes

Rejecting patch 57854 from commit-queue.

Failed to run &quot;[&apos;WebKitTools/Scripts/build-webkit&apos;, &apos;--debug&apos;]&quot; exit_code: 1
Last 500 characters of output:
 setenv YACC /Developer/usr/bin/yacc
    /bin/sh -c /Users/eseidel/Projects/CommitQueue/WebKitBuild/WebCore.build/Debug/WebCore.build/Script-5DF50887116F3077005202AB.sh
** BUILD FAILED **

The following build commands failed:
WebCore:
	Distributed-CompileC /Users/eseidel/Projects/CommitQueue/WebKitBuild/WebCore.build/Debug/WebCore.build/Objects-normal/i386/TextIterator.o /Users/eseidel/Projects/CommitQueue/WebCore/editing/TextIterator.cpp normal i386 c++ com.apple.compilers.gcc.4_2
(1 failure)


Full output: http://queues.webkit.org/results/3776008</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262587</commentid>
    <comment_count>35</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-08-10 03:09:46 -0700</bug_when>
    <thetext>Fixed the build error on Mac and the style error, and landed manually as r65062.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341170</commentid>
    <comment_count>36</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2011-01-27 17:27:57 -0800</bug_when>
    <thetext>This patch seems to have caused a regression where WebKit hangs when visiting http://www.kauppalehti.fi.

I filed https://bugs.webkit.org/show_bug.cgi?id=53272 to track this.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>57297</attachid>
            <date>2010-05-27 23:52:55 -0700</date>
            <delta_ts>2010-05-27 23:52:55 -0700</delta_ts>
            <desc>Testcase</desc>
            <filename>inner-text.html</filename>
            <type>text/html</type>
            <size>185</size>
            <attacher name="Yoshiki Hayashi">yhayashi</attacher>
            
              <data encoding="base64">PHN0eWxlPgpkaXYuZmlyc3Q6Zmlyc3QtbGV0dGVyIHsKICBmb250LXdlaWdodDogYm9sZDsKfQo8
L3N0eWxlPgo8ZGl2IGlkPSJ0ZXN0IiBjbGFzcz0iZmlyc3QiPgpUZXN0CjwvZGl2Pgo8c2NyaXB0
Pgpkb2N1bWVudC53cml0ZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdCIpLmlubmVyVGV4
dCk7Cjwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57300</attachid>
            <date>2010-05-28 00:06:41 -0700</date>
            <delta_ts>2010-05-28 04:21:01 -0700</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>bug-39863-20100528160639.patch</filename>
            <type>text/plain</type>
            <size>11412</size>
            <attacher name="Yoshiki Hayashi">yhayashi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3MDYwYjI2NDQ5NGIwYzdiZDAwZmUzMTdiZTBhNjIyOWYyNDAzNDZkLi5hNDE3Yjhm
YjNhMGI5MWIwY2QzNDlhZDE0NmZiMzBlOWJiODMwN2VhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTAtMDUtMjggIFlvc2hpa2kgSGF5YXNoaSAgPHloYXlhc2hpQGdvb2dsZS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSXRlcmF0ZSBvdmVy
IDpmaXJzdC1sZXR0ZXIgc28gdGhhdCBpdCB3aWxsIGJlIGluY2x1ZGVkIGluIGlubmVyVGV4dC4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5ODYzCisK
KyAgICAgICAgKiBmYXN0L2RvbS9pbm5lci10ZXh0LWZpcnN0LWxldHRlci1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL2lubmVyLXRleHQtZmlyc3QtbGV0dGVyLmh0bWw6
IEFkZGVkLgorCiAyMDEwLTA1LTI3ICBSb2xhbmQgU3RlaW5lciAgPHJvbGFuZHN0ZWluZXJAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFRhbXVyYSBLZW50LgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vaW5uZXItdGV4dC1maXJzdC1sZXR0ZXItZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vaW5uZXItdGV4dC1maXJzdC1sZXR0ZXItZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmYyN2RhYzg0MjQzMmE2ODA0YzM0M2FlNWI5NDIzM2FkOTgzYzE4
NzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9pbm5lci10ZXh0LWZp
cnN0LWxldHRlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyOCBAQAorVGhpcyB0ZXN0cyBhIGxl
dHRlciB3aXRoIDpmaXJzdC1sZXR0ZXIgYXBwbGllZCBpcyBwcmVzZW50IGluIGlubmVyVGV4dC4K
KworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywg
Zm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2RpdkZpcnN0JykuaW5uZXJUZXh0IGlzIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdk
aXZOb3JtYWwnKS5pbm5lclRleHQKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BGaXJz
dCcpLmlubmVyVGV4dCBpcyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncE5vcm1hbCcpLmlubmVy
VGV4dAorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29sbGFwc2VkU3BhY2VGaXJzdCcp
LmlubmVyVGV4dCBpcyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29sbGFwc2VkU3BhY2VOb3Jt
YWwnKS5pbm5lclRleHQKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbGxhcHNlZFNw
YWNlUHJlRmlyc3QnKS5pbm5lclRleHQgaXMgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbGxh
cHNlZFNwYWNlUHJlTm9ybWFsJykuaW5uZXJUZXh0CitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdjb2xsYXBzZWRTcGFjZURpdkZpcnN0JykuaW5uZXJUZXh0IGlzIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdjb2xsYXBzZWRTcGFjZURpdk5vcm1hbCcpLmlubmVyVGV4dAorUEFTUyBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnZGl2U3BhbkZpcnN0JykuaW5uZXJUZXh0IGlzIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdkaXZTcGFuTm9ybWFsJykuaW5uZXJUZXh0CitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKK2RpdgorZGl2CitwcmUKK3ByZQor
YWJjCithYmMKKyBhYmMKKyBhYmMKK2ZvbworYWJjCitmb28KK2FiYworMTIKKzEyCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9pbm5lci10ZXh0LWZpcnN0LWxldHRlci5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9kb20vaW5uZXItdGV4dC1maXJzdC1sZXR0ZXIuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5jMDM3YjFiMTE3NjMzMTgzMzM5ODg3MDBlMDI4YWMyY2RiOGRjMzdlCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vaW5uZXItdGV4dC1maXJzdC1sZXR0ZXIuaHRt
bApAQCAtMCwwICsxLDM4IEBACis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9
Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisuZmly
c3Q6Zmlyc3QtbGV0dGVyIHsKKyAgZm9udC13ZWlnaHQ6IGJvbGQ7Cit9Cis8L3N0eWxlPgorPC9o
ZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPGRpdiBpZD0iZGl2Rmlyc3QiIGNsYXNzPSJmaXJzdCI+ZGl2PC9kaXY+Cis8ZGl2
IGlkPSJkaXZOb3JtYWwiPmRpdjwvZGl2PgorPHByZSBpZD0icEZpcnN0IiBjbGFzcz0iZmlyc3Qi
PnByZTwvcHJlPgorPHByZSBpZD0icE5vcm1hbCI+cHJlPC9wcmU+Cis8ZGl2IGlkPSJjb2xsYXBz
ZWRTcGFjZUZpcnN0Ij48c3Bhbj4gPC9zcGFuPjxkaXYgY2xhc3M9ImZpcnN0Ij5hYmM8L2Rpdj48
L2Rpdj4KKzxkaXYgaWQ9ImNvbGxhcHNlZFNwYWNlTm9ybWFsIj48c3Bhbj4gPC9zcGFuPjxkaXY+
YWJjPC9kaXY+PC9kaXY+Cis8ZGl2IGlkPSJjb2xsYXBzZWRTcGFjZVByZUZpcnN0Ij48c3Bhbj4g
PC9zcGFuPjxwcmUgY2xhc3M9ImZpcnN0Ij5hYmM8L3ByZT48L2Rpdj4KKzxkaXYgaWQ9ImNvbGxh
cHNlZFNwYWNlUHJlTm9ybWFsIj48c3Bhbj4gPC9zcGFuPjxwcmU+YWJjPC9wcmU+PC9kaXY+Cis8
ZGl2IGlkPSJjb2xsYXBzZWRTcGFjZURpdkZpcnN0Ij48c3Bhbj5mb288L3NwYW4+PHNwYW4+IDwv
c3Bhbj48ZGl2IGNsYXNzPSJmaXJzdCI+YWJjPC9kaXY+PC9kaXY+Cis8ZGl2IGlkPSJjb2xsYXBz
ZWRTcGFjZURpdk5vcm1hbCI+PHNwYW4+Zm9vPC9zcGFuPjxzcGFuPiA8L3NwYW4+PGRpdj5hYmM8
L2Rpdj48L2Rpdj4KKzxkaXYgaWQ9ImRpdlNwYW5GaXJzdCIgY2xhc3M9ImZpcnN0Ij48c3BhbiBp
ZD0iZjEiPjE8L3NwYW4+PHNwYW4gaWQ9ImYyIj4yPC9zcGFuPjwvZGl2PgorPGRpdiBpZD0iZGl2
U3Bhbk5vcm1hbCI+PHNwYW4gaWQ9Im4xIj4xPC9zcGFuPjxzcGFuIGlkPSJuMiI+Mjwvc3Bhbj48
L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyBhIGxldHRlciB3aXRoIDpm
aXJzdC1sZXR0ZXIgYXBwbGllZCBpcyBwcmVzZW50IGluIGlubmVyVGV4dC4iKTsKK3Nob3VsZEJl
KCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGl2Rmlyc3QnKS5pbm5lclRleHQiLCAiZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2Rpdk5vcm1hbCcpLmlubmVyVGV4dCIpOworc2hvdWxkQmUoImRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdwRmlyc3QnKS5pbm5lclRleHQiLCAiZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ3BOb3JtYWwnKS5pbm5lclRleHQiKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJz
ZWQgPSB0cnVlOworc2hvdWxkQmUoImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb2xsYXBzZWRT
cGFjZUZpcnN0JykuaW5uZXJUZXh0IiwgImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb2xsYXBz
ZWRTcGFjZU5vcm1hbCcpLmlubmVyVGV4dCIpOworc2hvdWxkQmUoImRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdjb2xsYXBzZWRTcGFjZVByZUZpcnN0JykuaW5uZXJUZXh0IiwgImRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdjb2xsYXBzZWRTcGFjZVByZU5vcm1hbCcpLmlubmVyVGV4dCIpOworc2hv
dWxkQmUoImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb2xsYXBzZWRTcGFjZURpdkZpcnN0Jyku
aW5uZXJUZXh0IiwgImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb2xsYXBzZWRTcGFjZURpdk5v
cm1hbCcpLmlubmVyVGV4dCIpOworc2hvdWxkQmUoImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdk
aXZTcGFuRmlyc3QnKS5pbm5lclRleHQiLCAiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RpdlNw
YW5Ob3JtYWwnKS5pbm5lclRleHQiKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhOTEz
ZDYyZjhjYmU2ZWJkYjcxMTY1NGI1NWEzOTM5NTNiNmFkN2U1Li44ZTQxYTAyYzNmNDBiMjllOTM3
YjI0YjE1ZDc2NzNjNjZkM2YzZWNiIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEwLTA1LTI4ICBZb3NoaWtp
IEhheWFzaGkgIDx5aGF5YXNoaUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEl0ZXJhdGUgb3ZlciA6Zmlyc3QtbGV0dGVyIHNvIHRo
YXQgaXQgd2lsbCBiZSBpbmNsdWRlZCBpbiBpbm5lclRleHQuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTg2MworCisgICAgICAgIFRlc3Q6IGZhc3Qv
ZG9tL2lubmVyLXRleHQtZmlyc3QtbGV0dGVyLmh0bWwKKworICAgICAgICAqIGVkaXRpbmcvVGV4
dEl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6VGV4dEl0ZXJh
dG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6YWR2YW5jZSk6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHROb2RlKToKKyAgICAgICAgKFdlYkNv
cmU6OlRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dEJveCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
SXRlcmF0b3I6OmVtaXRUZXh0KToKKyAgICAgICAgKiBlZGl0aW5nL1RleHRJdGVyYXRvci5oOgor
CiAyMDEwLTA1LTI3ICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgogCiAgICAg
ICAgIE5vdCByZXZpZXdlZC4gRml4ZWQgdHlwbwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5n
L1RleHRJdGVyYXRvci5jcHAgYi9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAppbmRl
eCBmM2JkOWRmNmI5Zjk1YmYzMGRkYTJhMzBlNzI2ZDczNWYxOGY4YjFmLi44OTk2ZGZjODRhNTEx
OTk4M2U0YTc3N2Q3OWViZjk4NDI2MjIwOWJkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcv
VGV4dEl0ZXJhdG9yLmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcApA
QCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIlJlbmRlclRhYmxlQ2VsbC5oIgogI2luY2x1ZGUg
IlJlbmRlclRhYmxlUm93LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dENvbnRyb2wuaCIKKyNpbmNs
dWRlICJSZW5kZXJUZXh0RnJhZ21lbnQuaCIKICNpbmNsdWRlICJWaXNpYmxlUG9zaXRpb24uaCIK
ICNpbmNsdWRlICJ2aXNpYmxlX3VuaXRzLmgiCiAKQEAgLTI1Nyw2ICsyNTgsNyBAQCBUZXh0SXRl
cmF0b3I6OlRleHRJdGVyYXRvcigpCiAgICAgLCBtX2VtaXRzQ2hhcmFjdGVyc0JldHdlZW5BbGxW
aXNpYmxlUG9zaXRpb25zKGZhbHNlKQogICAgICwgbV9lbnRlcnNUZXh0Q29udHJvbHMoZmFsc2Up
CiAgICAgLCBtX2VtaXRzVGV4dFdpdGhvdXRUcmFuc2NvZGluZyhmYWxzZSkKKyAgICAsIG1faGFu
ZGxlZEZpcnN0TGV0dGVyKGZhbHNlKQogewogfQogCkBAIC0yNzEsNiArMjczLDcgQEAgVGV4dEl0
ZXJhdG9yOjpUZXh0SXRlcmF0b3IoY29uc3QgUmFuZ2UqIHIsIFRleHRJdGVyYXRvckJlaGF2aW9y
IGJlaGF2aW9yKQogICAgICwgbV9lbWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxsVmlzaWJsZVBvc2l0
aW9ucyhiZWhhdmlvciAmIFRleHRJdGVyYXRvckVtaXRzQ2hhcmFjdGVyc0JldHdlZW5BbGxWaXNp
YmxlUG9zaXRpb25zKQogICAgICwgbV9lbnRlcnNUZXh0Q29udHJvbHMoYmVoYXZpb3IgJiBUZXh0
SXRlcmF0b3JFbnRlcnNUZXh0Q29udHJvbHMpCiAgICAgLCBtX2VtaXRzVGV4dFdpdGhvdXRUcmFu
c2NvZGluZyhiZWhhdmlvciAmIFRleHRJdGVyYXRvckVtaXRzVGV4dHNXaXRob3V0VHJhbnNjb2Rp
bmcpCisgICAgLCBtX2hhbmRsZWRGaXJzdExldHRlcihmYWxzZSkKIHsKICAgICBpZiAoIXIpCiAg
ICAgICAgIHJldHVybjsKQEAgLTM2OSw5ICszNzIsMTEgQEAgdm9pZCBUZXh0SXRlcmF0b3I6OmFk
dmFuY2UoKQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gaGFuZGxlIGN1cnJlbnQg
bm9kZSBhY2NvcmRpbmcgdG8gaXRzIHR5cGUKICAgICAgICAgICAgIGlmICghbV9oYW5kbGVkTm9k
ZSkgewotICAgICAgICAgICAgICAgIGlmIChyZW5kZXJlci0+aXNUZXh0KCkgJiYgbV9ub2RlLT5u
b2RlVHlwZSgpID09IE5vZGU6OlRFWFRfTk9ERSkgLy8gRklYTUU6IFdoYXQgYWJvdXQgQ0RBVEFf
U0VDVElPTl9OT0RFPworICAgICAgICAgICAgICAgIGlmIChyZW5kZXJlci0+aXNUZXh0KCkgJiYg
bV9ub2RlLT5ub2RlVHlwZSgpID09IE5vZGU6OlRFWFRfTk9ERSkgeyAvLyBGSVhNRTogV2hhdCBh
Ym91dCBDREFUQV9TRUNUSU9OX05PREU/CiAgICAgICAgICAgICAgICAgICAgIG1faGFuZGxlZE5v
ZGUgPSBoYW5kbGVUZXh0Tm9kZSgpOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJlbmRlcmVy
ICYmIChyZW5kZXJlci0+aXNJbWFnZSgpIHx8IHJlbmRlcmVyLT5pc1dpZGdldCgpIHx8CisgICAg
ICAgICAgICAgICAgICAgIGlmIChtX2hhbmRsZWROb2RlKQorICAgICAgICAgICAgICAgICAgICAg
ICAgbV9oYW5kbGVkRmlyc3RMZXR0ZXIgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICB9IGVsc2Ug
aWYgKHJlbmRlcmVyICYmIChyZW5kZXJlci0+aXNJbWFnZSgpIHx8IHJlbmRlcmVyLT5pc1dpZGdl
dCgpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlbmRlcmVyLT5ub2RlKCkgJiYgcmVu
ZGVyZXItPm5vZGUoKS0+aXNFbGVtZW50Tm9kZSgpICYmCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0YXRpY19jYXN0PEVsZW1lbnQqPihyZW5kZXJlci0+bm9kZSgpKS0+aXNGb3JtQ29udHJv
bEVsZW1lbnQoKSkpKQogICAgICAgICAgICAgICAgICAgICBtX2hhbmRsZWROb2RlID0gaGFuZGxl
UmVwbGFjZWRFbGVtZW50KCk7CkBAIC00MzUsNiArNDQwLDIxIEBAIGJvb2wgVGV4dEl0ZXJhdG9y
OjpoYW5kbGVUZXh0Tm9kZSgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIFJlbmRlclRl
eHQqIHJlbmRlcmVyID0gdG9SZW5kZXJUZXh0KG1fbm9kZS0+cmVuZGVyZXIoKSk7CisgICAgaWYg
KCFtX2hhbmRsZWRGaXJzdExldHRlciAmJiByZW5kZXJlci0+aXNUZXh0RnJhZ21lbnQoKSkgewor
ICAgICAgICBSZW5kZXJUZXh0RnJhZ21lbnQqIGZyYWdtZW50ID0gc3RhdGljX2Nhc3Q8UmVuZGVy
VGV4dEZyYWdtZW50Kj4ocmVuZGVyZXIpOworICAgICAgICBpZiAoZnJhZ21lbnQtPmZpcnN0TGV0
dGVyKCkgJiYgZnJhZ21lbnQtPmZpcnN0TGV0dGVyKCktPmZpcnN0Q2hpbGQoKSAmJiBmcmFnbWVu
dC0+Zmlyc3RMZXR0ZXIoKS0+Zmlyc3RDaGlsZCgpLT5pc1RleHQoKSAmJiB0b1JlbmRlclRleHQo
ZnJhZ21lbnQtPmZpcnN0TGV0dGVyKCktPmZpcnN0Q2hpbGQoKSktPmlzVGV4dEZyYWdtZW50KCkp
IHsKKyAgICAgICAgICAgIFJlbmRlclRleHRGcmFnbWVudCogZmlyc3RMZXR0ZXIgPSBzdGF0aWNf
Y2FzdDxSZW5kZXJUZXh0RnJhZ21lbnQqPihmcmFnbWVudC0+Zmlyc3RMZXR0ZXIoKS0+Zmlyc3RD
aGlsZCgpKTsKKyAgICAgICAgICAgIGlmIChmaXJzdExldHRlci0+c3R5bGUoKS0+dmlzaWJpbGl0
eSgpID09IFZJU0lCTEUpIHsKKyAgICAgICAgICAgICAgICBpZiAobV9sYXN0VGV4dE5vZGVFbmRl
ZFdpdGhDb2xsYXBzZWRTcGFjZSAmJiAoIWZpcnN0TGV0dGVyLT5zdHlsZSgpLT5jb2xsYXBzZVdo
aXRlU3BhY2UoKSB8fCAoIWlzQ29sbGFwc2libGVXaGl0ZXNwYWNlKG1fbGFzdENoYXJhY3Rlcikg
JiYgbV9sYXN0Q2hhcmFjdGVyKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgZW1pdENoYXJhY3Rl
cignICcsIG1fbm9kZSwgMCwgbV9vZmZzZXQsIG1fb2Zmc2V0KTsKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbWl0
VGV4dChtX25vZGUsIGZpcnN0TGV0dGVyLCAwLCAxKTsKKyAgICAgICAgICAgICAgICBtX2hhbmRs
ZWRGaXJzdExldHRlciA9IHRydWU7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgfQogICAgIGlmIChyZW5kZXJlci0+c3R5bGUoKS0+
dmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
CkBAIC00OTEsOCArNTExLDcgQEAgdm9pZCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHRCb3goKQog
CiAgICAgICAgIC8vIENoZWNrIGZvciBjb2xsYXBzZWQgc3BhY2UgYXQgdGhlIHN0YXJ0IG9mIHRo
aXMgcnVuLgogICAgICAgICBJbmxpbmVUZXh0Qm94KiBmaXJzdFRleHRCb3ggPSByZW5kZXJlci0+
Y29udGFpbnNSZXZlcnNlZFRleHQoKSA/IG1fc29ydGVkVGV4dEJveGVzWzBdIDogcmVuZGVyZXIt
PmZpcnN0VGV4dEJveCgpOwotICAgICAgICBib29sIG5lZWRTcGFjZSA9IG1fbGFzdFRleHROb2Rl
RW5kZWRXaXRoQ29sbGFwc2VkU3BhY2UKLSAgICAgICAgICAgIHx8IChtX3RleHRCb3ggPT0gZmly
c3RUZXh0Qm94ICYmIHRleHRCb3hTdGFydCA9PSBydW5TdGFydCAmJiBydW5TdGFydCA+IDApOwor
ICAgICAgICBib29sIG5lZWRTcGFjZSA9ICFtX2hhbmRsZWRGaXJzdExldHRlciAmJiAobV9sYXN0
VGV4dE5vZGVFbmRlZFdpdGhDb2xsYXBzZWRTcGFjZSB8fCAobV90ZXh0Qm94ID09IGZpcnN0VGV4
dEJveCAmJiB0ZXh0Qm94U3RhcnQgPT0gcnVuU3RhcnQgJiYgcnVuU3RhcnQgPiAwKSk7CiAgICAg
ICAgIGlmIChuZWVkU3BhY2UgJiYgIWlzQ29sbGFwc2libGVXaGl0ZXNwYWNlKG1fbGFzdENoYXJh
Y3RlcikgJiYgbV9sYXN0Q2hhcmFjdGVyKSB7CiAgICAgICAgICAgICBpZiAobV9sYXN0VGV4dE5v
ZGUgPT0gbV9ub2RlICYmIHJ1blN0YXJ0ID4gMCAmJiBzdHJbcnVuU3RhcnQgLSAxXSA9PSAnICcp
IHsKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzcGFjZVJ1blN0YXJ0ID0gcnVuU3RhcnQgLSAx
OwpAQCAtODg4LDkgKzkwNyw5IEBAIHZvaWQgVGV4dEl0ZXJhdG9yOjplbWl0Q2hhcmFjdGVyKFVD
aGFyIGMsIE5vZGUqIHRleHROb2RlLCBOb2RlKiBvZmZzZXRCYXNlTm9kZSwKICAgICBtX2xhc3RD
aGFyYWN0ZXIgPSBjOwogfQogCi12b2lkIFRleHRJdGVyYXRvcjo6ZW1pdFRleHQoTm9kZSogdGV4
dE5vZGUsIGludCB0ZXh0U3RhcnRPZmZzZXQsIGludCB0ZXh0RW5kT2Zmc2V0KQordm9pZCBUZXh0
SXRlcmF0b3I6OmVtaXRUZXh0KE5vZGUqIHRleHROb2RlLCBSZW5kZXJPYmplY3QqIHJlbmRlck9i
amVjdCwgaW50IHRleHRTdGFydE9mZnNldCwgaW50IHRleHRFbmRPZmZzZXQpCiB7Ci0gICAgUmVu
ZGVyVGV4dCogcmVuZGVyZXIgPSB0b1JlbmRlclRleHQobV9ub2RlLT5yZW5kZXJlcigpKTsKKyAg
ICBSZW5kZXJUZXh0KiByZW5kZXJlciA9IHRvUmVuZGVyVGV4dChyZW5kZXJPYmplY3QpOwogICAg
IG1fdGV4dCA9IG1fZW1pdHNUZXh0V2l0aG91dFRyYW5zY29kaW5nID8gcmVuZGVyZXItPnRleHRX
aXRob3V0VHJhbnNjb2RpbmcoKSA6IHJlbmRlcmVyLT50ZXh0KCk7CiAgICAgQVNTRVJUKG1fdGV4
dC5jaGFyYWN0ZXJzKCkpOwogCkBAIC05MDYsNiArOTI1LDExIEBAIHZvaWQgVGV4dEl0ZXJhdG9y
OjplbWl0VGV4dChOb2RlKiB0ZXh0Tm9kZSwgaW50IHRleHRTdGFydE9mZnNldCwgaW50IHRleHRF
bmRPZmZzCiAgICAgbV9oYXNFbWl0dGVkID0gdHJ1ZTsKIH0KIAordm9pZCBUZXh0SXRlcmF0b3I6
OmVtaXRUZXh0KE5vZGUqIHRleHROb2RlLCBpbnQgdGV4dFN0YXJ0T2Zmc2V0LCBpbnQgdGV4dEVu
ZE9mZnNldCkKK3sKKyAgICBlbWl0VGV4dCh0ZXh0Tm9kZSwgbV9ub2RlLT5yZW5kZXJlcigpLCB0
ZXh0U3RhcnRPZmZzZXQsIHRleHRFbmRPZmZzZXQpOworfQorCiBQYXNzUmVmUHRyPFJhbmdlPiBU
ZXh0SXRlcmF0b3I6OnJhbmdlKCkgY29uc3QKIHsKICAgICAvLyB1c2UgdGhlIGN1cnJlbnQgcnVu
IGluZm9ybWF0aW9uLCBpZiB3ZSBoYXZlIGl0CmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcv
VGV4dEl0ZXJhdG9yLmggYi9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmgKaW5kZXggYmEz
ODFiOWJmYTQ0YTc5ZDEwNjQ5OTlkMmM2MDdiZTY5Zjc2YTg5My4uZTlmMDg4Y2Y2ZmFkNDMxYWUx
YzMzYzc2N2Y4ZDQyY2RmMWQ5Zjk2NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL1RleHRJ
dGVyYXRvci5oCisrKyBiL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaApAQCAtMTAzLDYg
KzEwMyw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBoYW5kbGVOb25UZXh0Tm9kZSgpOwogICAgIHZv
aWQgaGFuZGxlVGV4dEJveCgpOwogICAgIHZvaWQgZW1pdENoYXJhY3RlcihVQ2hhciwgTm9kZSog
dGV4dE5vZGUsIE5vZGUqIG9mZnNldEJhc2VOb2RlLCBpbnQgdGV4dFN0YXJ0T2Zmc2V0LCBpbnQg
dGV4dEVuZE9mZnNldCk7CisgICAgdm9pZCBlbWl0VGV4dChOb2RlKiB0ZXh0Tm9kZSwgUmVuZGVy
T2JqZWN0KiByZW5kZXJPYmplY3QsIGludCB0ZXh0U3RhcnRPZmZzZXQsIGludCB0ZXh0RW5kT2Zm
c2V0KTsKICAgICB2b2lkIGVtaXRUZXh0KE5vZGUqIHRleHROb2RlLCBpbnQgdGV4dFN0YXJ0T2Zm
c2V0LCBpbnQgdGV4dEVuZE9mZnNldCk7CiAgICAgCiAgICAgLy8gQ3VycmVudCBwb3NpdGlvbiwg
bm90IG5lY2Vzc2FyaWx5IG9mIHRoZSB0ZXh0IGJlaW5nIHJldHVybmVkLCBidXQgcG9zaXRpb24K
QEAgLTE1OSw2ICsxNjAsOCBAQCBwcml2YXRlOgogCiAgICAgLy8gVXNlZCB3aGVuIHdlIHdhbnQg
dGV4dHMgZm9yIGNvcHlpbmcsIHBhc3RpbmcsIGFuZCB0cmFuc3Bvc2luZy4KICAgICBib29sIG1f
ZW1pdHNUZXh0V2l0aG91dFRyYW5zY29kaW5nOworICAgIC8vIFVzZWQgd2hlbiBkZWNpZGluZyB0
ZXh0IGZyYWdtZW50IGNyZWF0ZWQgYnkgOmZpcnN0LWxldHRlciBzaG91bGQgYmUgbG9va2VkIGlu
dG8uCisgICAgYm9vbCBtX2hhbmRsZWRGaXJzdExldHRlcjsKIH07CiAKIC8vIEl0ZXJhdGVzIHRo
cm91Z2ggdGhlIERPTSByYW5nZSwgcmV0dXJuaW5nIGFsbCB0aGUgdGV4dCwgYW5kIDAtbGVuZ3Ro
IGJvdW5kYXJpZXMK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57316</attachid>
            <date>2010-05-28 04:21:06 -0700</date>
            <delta_ts>2010-05-31 04:31:01 -0700</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>bug-39863-20100528202104.patch</filename>
            <type>text/plain</type>
            <size>12909</size>
            <attacher name="Yoshiki Hayashi">yhayashi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3MDYwYjI2NDQ5NGIwYzdiZDAwZmUzMTdiZTBhNjIyOWYyNDAzNDZkLi5hNDE3Yjhm
YjNhMGI5MWIwY2QzNDlhZDE0NmZiMzBlOWJiODMwN2VhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTAtMDUtMjggIFlvc2hpa2kgSGF5YXNoaSAgPHloYXlhc2hpQGdvb2dsZS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSXRlcmF0ZSBvdmVy
IDpmaXJzdC1sZXR0ZXIgc28gdGhhdCBpdCB3aWxsIGJlIGluY2x1ZGVkIGluIGlubmVyVGV4dC4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5ODYzCisK
KyAgICAgICAgKiBmYXN0L2RvbS9pbm5lci10ZXh0LWZpcnN0LWxldHRlci1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL2lubmVyLXRleHQtZmlyc3QtbGV0dGVyLmh0bWw6
IEFkZGVkLgorCiAyMDEwLTA1LTI3ICBSb2xhbmQgU3RlaW5lciAgPHJvbGFuZHN0ZWluZXJAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFRhbXVyYSBLZW50LgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS9nZXRDb21wdXRlZFN0eWxl
LXdpdGgtcHNldWRvLWVsZW1lbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mv
Z2V0Q29tcHV0ZWRTdHlsZS9nZXRDb21wdXRlZFN0eWxlLXdpdGgtcHNldWRvLWVsZW1lbnQtZXhw
ZWN0ZWQudHh0CmluZGV4IDQ5NTc2ZjE4MDZjZTNiMDZiNTRhMWQ2OTE1ODRjMzU0NjYwZDA2MDUu
LjBlN2JjNTBlNGEyZWQzZDE4YmJlNDhhOTQ3ZmIyM2M4ZjhjM2U1OTEgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2Zhc3QvY3NzL2dldENvbXB1dGVkU3R5bGUvZ2V0Q29tcHV0ZWRTdHlsZS13aXRo
LXBzZXVkby1lbGVtZW50LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9n
ZXRDb21wdXRlZFN0eWxlL2dldENvbXB1dGVkU3R5bGUtd2l0aC1wc2V1ZG8tZWxlbWVudC1leHBl
Y3RlZC50eHQKQEAgLTEsNyArMSw3IEBACiBUZXN0IGZvciBXZWJLaXQgYnVnIDI0MDIxOiBwc2V1
ZG8tZWxlbWVudCBzdHlsZXMgbm90IGFjY2Vzc2libGUgLyByZXRyaWV2YWJsZSB2aWEgRE9NIG1l
dGhvZHMKIAogCi1vcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNp
Y2luZyBlbGl0LCBzZWQgZG8gZWl1c21vZCB0ZW1wb3IgaW5jaWRpZHVudCB1dCBsYWJvcmUgZXQg
ZG9sb3JlIG1hZ25hIGFsaXF1YS4gVXQgZW5pbSBhZCBtaW5pbSB2ZW5pYW0sIHF1aXMgbm9zdHJ1
ZCBleGVyY2l0YXRpb24gdWxsYW1jbyBsYWJvcmlzIG5pc2kgdXQgYWxpcXVpcCBleCBlYSBjb21t
b2RvIGNvbnNlcXVhdC4gRHVpcyBhdXRlIGlydXJlIGRvbG9yIGluIHJlcHJlaGVuZGVyaXQgaW4g
dm9sdXB0YXRlIHZlbGl0IGVzc2UgY2lsbHVtIGRvbG9yZSBldSBmdWdpYXQgbnVsbGEgcGFyaWF0
dXIuIEV4Y2VwdGV1ciBzaW50IG9jY2FlY2F0IGN1cGlkYXRhdCBub24gcHJvaWRlbnQsIHN1bnQg
aW4gY3VscGEgcXVpIG9mZmljaWEgZGVzZXJ1bnQgbW9sbGl0IGFuaW0gaWQgZXN0IGxhYm9ydW0u
CitMb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRpcGlzaWNpbmcgZWxp
dCwgc2VkIGRvIGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1bnQgdXQgbGFib3JlIGV0IGRvbG9yZSBt
YWduYSBhbGlxdWEuIFV0IGVuaW0gYWQgbWluaW0gdmVuaWFtLCBxdWlzIG5vc3RydWQgZXhlcmNp
dGF0aW9uIHVsbGFtY28gbGFib3JpcyBuaXNpIHV0IGFsaXF1aXAgZXggZWEgY29tbW9kbyBjb25z
ZXF1YXQuIER1aXMgYXV0ZSBpcnVyZSBkb2xvciBpbiByZXByZWhlbmRlcml0IGluIHZvbHVwdGF0
ZSB2ZWxpdCBlc3NlIGNpbGx1bSBkb2xvcmUgZXUgZnVnaWF0IG51bGxhIHBhcmlhdHVyLiBFeGNl
cHRldXIgc2ludCBvY2NhZWNhdCBjdXBpZGF0YXQgbm9uIHByb2lkZW50LCBzdW50IGluIGN1bHBh
IHF1aSBvZmZpY2lhIGRlc2VydW50IG1vbGxpdCBhbmltIGlkIGVzdCBsYWJvcnVtLgogCiBNaWRk
bGUKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vaW5uZXItdGV4dC1maXJzdC1s
ZXR0ZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vaW5uZXItdGV4dC1maXJz
dC1sZXR0ZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYyN2RhYzg0MjQzMmE2ODA0YzM0M2Fl
NWI5NDIzM2FkOTgzYzE4NzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9pbm5lci10ZXh0LWZpcnN0LWxldHRlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyOCBAQAor
VGhpcyB0ZXN0cyBhIGxldHRlciB3aXRoIDpmaXJzdC1sZXR0ZXIgYXBwbGllZCBpcyBwcmVzZW50
IGluIGlubmVyVGV4dC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RpdkZpcnN0JykuaW5uZXJUZXh0IGlzIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdkaXZOb3JtYWwnKS5pbm5lclRleHQKK1BBU1MgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ3BGaXJzdCcpLmlubmVyVGV4dCBpcyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
cE5vcm1hbCcpLmlubmVyVGV4dAorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29sbGFw
c2VkU3BhY2VGaXJzdCcpLmlubmVyVGV4dCBpcyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29s
bGFwc2VkU3BhY2VOb3JtYWwnKS5pbm5lclRleHQKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2NvbGxhcHNlZFNwYWNlUHJlRmlyc3QnKS5pbm5lclRleHQgaXMgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2NvbGxhcHNlZFNwYWNlUHJlTm9ybWFsJykuaW5uZXJUZXh0CitQQVNTIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdjb2xsYXBzZWRTcGFjZURpdkZpcnN0JykuaW5uZXJUZXh0IGlz
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb2xsYXBzZWRTcGFjZURpdk5vcm1hbCcpLmlubmVy
VGV4dAorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGl2U3BhbkZpcnN0JykuaW5uZXJU
ZXh0IGlzIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkaXZTcGFuTm9ybWFsJykuaW5uZXJUZXh0
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKK2Rpdgor
ZGl2CitwcmUKK3ByZQorYWJjCithYmMKKyBhYmMKKyBhYmMKK2ZvbworYWJjCitmb28KK2FiYwor
MTIKKzEyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9pbm5lci10ZXh0LWZpcnN0
LWxldHRlci5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vaW5uZXItdGV4dC1maXJzdC1sZXR0
ZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5jMDM3YjFiMTE3NjMzMTgzMzM5ODg3MDBlMDI4YWMyY2RiOGRj
MzdlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vaW5uZXItdGV4dC1m
aXJzdC1sZXR0ZXIuaHRtbApAQCAtMCwwICsxLDM4IEBACis8aHRtbD4KKzxoZWFkPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3Mi
PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c3R5bGU+CisuZmlyc3Q6Zmlyc3QtbGV0dGVyIHsKKyAgZm9udC13ZWlnaHQ6IGJvbGQ7Cit9
Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGRpdiBpZD0iZGl2Rmlyc3QiIGNsYXNzPSJmaXJzdCI+
ZGl2PC9kaXY+Cis8ZGl2IGlkPSJkaXZOb3JtYWwiPmRpdjwvZGl2PgorPHByZSBpZD0icEZpcnN0
IiBjbGFzcz0iZmlyc3QiPnByZTwvcHJlPgorPHByZSBpZD0icE5vcm1hbCI+cHJlPC9wcmU+Cis8
ZGl2IGlkPSJjb2xsYXBzZWRTcGFjZUZpcnN0Ij48c3Bhbj4gPC9zcGFuPjxkaXYgY2xhc3M9ImZp
cnN0Ij5hYmM8L2Rpdj48L2Rpdj4KKzxkaXYgaWQ9ImNvbGxhcHNlZFNwYWNlTm9ybWFsIj48c3Bh
bj4gPC9zcGFuPjxkaXY+YWJjPC9kaXY+PC9kaXY+Cis8ZGl2IGlkPSJjb2xsYXBzZWRTcGFjZVBy
ZUZpcnN0Ij48c3Bhbj4gPC9zcGFuPjxwcmUgY2xhc3M9ImZpcnN0Ij5hYmM8L3ByZT48L2Rpdj4K
KzxkaXYgaWQ9ImNvbGxhcHNlZFNwYWNlUHJlTm9ybWFsIj48c3Bhbj4gPC9zcGFuPjxwcmU+YWJj
PC9wcmU+PC9kaXY+Cis8ZGl2IGlkPSJjb2xsYXBzZWRTcGFjZURpdkZpcnN0Ij48c3Bhbj5mb288
L3NwYW4+PHNwYW4+IDwvc3Bhbj48ZGl2IGNsYXNzPSJmaXJzdCI+YWJjPC9kaXY+PC9kaXY+Cis8
ZGl2IGlkPSJjb2xsYXBzZWRTcGFjZURpdk5vcm1hbCI+PHNwYW4+Zm9vPC9zcGFuPjxzcGFuPiA8
L3NwYW4+PGRpdj5hYmM8L2Rpdj48L2Rpdj4KKzxkaXYgaWQ9ImRpdlNwYW5GaXJzdCIgY2xhc3M9
ImZpcnN0Ij48c3BhbiBpZD0iZjEiPjE8L3NwYW4+PHNwYW4gaWQ9ImYyIj4yPC9zcGFuPjwvZGl2
PgorPGRpdiBpZD0iZGl2U3Bhbk5vcm1hbCI+PHNwYW4gaWQ9Im4xIj4xPC9zcGFuPjxzcGFuIGlk
PSJuMiI+Mjwvc3Bhbj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyBh
IGxldHRlciB3aXRoIDpmaXJzdC1sZXR0ZXIgYXBwbGllZCBpcyBwcmVzZW50IGluIGlubmVyVGV4
dC4iKTsKK3Nob3VsZEJlKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGl2Rmlyc3QnKS5pbm5l
clRleHQiLCAiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Rpdk5vcm1hbCcpLmlubmVyVGV4dCIp
Oworc2hvdWxkQmUoImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwRmlyc3QnKS5pbm5lclRleHQi
LCAiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BOb3JtYWwnKS5pbm5lclRleHQiKTsKK3ZhciBz
dWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworc2hvdWxkQmUoImRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdjb2xsYXBzZWRTcGFjZUZpcnN0JykuaW5uZXJUZXh0IiwgImRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdjb2xsYXBzZWRTcGFjZU5vcm1hbCcpLmlubmVyVGV4dCIpOworc2hvdWxkQmUoImRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb2xsYXBzZWRTcGFjZVByZUZpcnN0JykuaW5uZXJUZXh0
IiwgImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb2xsYXBzZWRTcGFjZVByZU5vcm1hbCcpLmlu
bmVyVGV4dCIpOworc2hvdWxkQmUoImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb2xsYXBzZWRT
cGFjZURpdkZpcnN0JykuaW5uZXJUZXh0IiwgImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb2xs
YXBzZWRTcGFjZURpdk5vcm1hbCcpLmlubmVyVGV4dCIpOworc2hvdWxkQmUoImRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdkaXZTcGFuRmlyc3QnKS5pbm5lclRleHQiLCAiZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2RpdlNwYW5Ob3JtYWwnKS5pbm5lclRleHQiKTsKKzwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCBhOTEzZDYyZjhjYmU2ZWJkYjcxMTY1NGI1NWEzOTM5NTNiNmFkN2U1Li44ZTQx
YTAyYzNmNDBiMjllOTM3YjI0YjE1ZDc2NzNjNjZkM2YzZWNiIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEw
LTA1LTI4ICBZb3NoaWtpIEhheWFzaGkgIDx5aGF5YXNoaUBnb29nbGUuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEl0ZXJhdGUgb3ZlciA6Zmly
c3QtbGV0dGVyIHNvIHRoYXQgaXQgd2lsbCBiZSBpbmNsdWRlZCBpbiBpbm5lclRleHQuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTg2MworCisgICAg
ICAgIFRlc3Q6IGZhc3QvZG9tL2lubmVyLXRleHQtZmlyc3QtbGV0dGVyLmh0bWwKKworICAgICAg
ICAqIGVkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRJdGVy
YXRvcjo6VGV4dEl0ZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6YWR2
YW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHROb2RlKToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dEJveCk6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OmVtaXRUZXh0KToKKyAgICAgICAgKiBlZGl0aW5nL1Rl
eHRJdGVyYXRvci5oOgorCiAyMDEwLTA1LTI3ICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29n
bGUuY29tPgogCiAgICAgICAgIE5vdCByZXZpZXdlZC4gRml4ZWQgdHlwbwpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAgYi9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0
ZXJhdG9yLmNwcAppbmRleCBmM2JkOWRmNmI5Zjk1YmYzMGRkYTJhMzBlNzI2ZDczNWYxOGY4YjFm
Li44OTk2ZGZjODRhNTExOTk4M2U0YTc3N2Q3OWViZjk4NDI2MjIwOWJkIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcvVGV4
dEl0ZXJhdG9yLmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIlJlbmRlclRhYmxlQ2Vs
bC5oIgogI2luY2x1ZGUgIlJlbmRlclRhYmxlUm93LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dENv
bnRyb2wuaCIKKyNpbmNsdWRlICJSZW5kZXJUZXh0RnJhZ21lbnQuaCIKICNpbmNsdWRlICJWaXNp
YmxlUG9zaXRpb24uaCIKICNpbmNsdWRlICJ2aXNpYmxlX3VuaXRzLmgiCiAKQEAgLTI1Nyw2ICsy
NTgsNyBAQCBUZXh0SXRlcmF0b3I6OlRleHRJdGVyYXRvcigpCiAgICAgLCBtX2VtaXRzQ2hhcmFj
dGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zKGZhbHNlKQogICAgICwgbV9lbnRlcnNUZXh0
Q29udHJvbHMoZmFsc2UpCiAgICAgLCBtX2VtaXRzVGV4dFdpdGhvdXRUcmFuc2NvZGluZyhmYWxz
ZSkKKyAgICAsIG1faGFuZGxlZEZpcnN0TGV0dGVyKGZhbHNlKQogewogfQogCkBAIC0yNzEsNiAr
MjczLDcgQEAgVGV4dEl0ZXJhdG9yOjpUZXh0SXRlcmF0b3IoY29uc3QgUmFuZ2UqIHIsIFRleHRJ
dGVyYXRvckJlaGF2aW9yIGJlaGF2aW9yKQogICAgICwgbV9lbWl0c0NoYXJhY3RlcnNCZXR3ZWVu
QWxsVmlzaWJsZVBvc2l0aW9ucyhiZWhhdmlvciAmIFRleHRJdGVyYXRvckVtaXRzQ2hhcmFjdGVy
c0JldHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zKQogICAgICwgbV9lbnRlcnNUZXh0Q29udHJvbHMo
YmVoYXZpb3IgJiBUZXh0SXRlcmF0b3JFbnRlcnNUZXh0Q29udHJvbHMpCiAgICAgLCBtX2VtaXRz
VGV4dFdpdGhvdXRUcmFuc2NvZGluZyhiZWhhdmlvciAmIFRleHRJdGVyYXRvckVtaXRzVGV4dHNX
aXRob3V0VHJhbnNjb2RpbmcpCisgICAgLCBtX2hhbmRsZWRGaXJzdExldHRlcihmYWxzZSkKIHsK
ICAgICBpZiAoIXIpCiAgICAgICAgIHJldHVybjsKQEAgLTM2OSw5ICszNzIsMTEgQEAgdm9pZCBU
ZXh0SXRlcmF0b3I6OmFkdmFuY2UoKQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8g
aGFuZGxlIGN1cnJlbnQgbm9kZSBhY2NvcmRpbmcgdG8gaXRzIHR5cGUKICAgICAgICAgICAgIGlm
ICghbV9oYW5kbGVkTm9kZSkgewotICAgICAgICAgICAgICAgIGlmIChyZW5kZXJlci0+aXNUZXh0
KCkgJiYgbV9ub2RlLT5ub2RlVHlwZSgpID09IE5vZGU6OlRFWFRfTk9ERSkgLy8gRklYTUU6IFdo
YXQgYWJvdXQgQ0RBVEFfU0VDVElPTl9OT0RFPworICAgICAgICAgICAgICAgIGlmIChyZW5kZXJl
ci0+aXNUZXh0KCkgJiYgbV9ub2RlLT5ub2RlVHlwZSgpID09IE5vZGU6OlRFWFRfTk9ERSkgeyAv
LyBGSVhNRTogV2hhdCBhYm91dCBDREFUQV9TRUNUSU9OX05PREU/CiAgICAgICAgICAgICAgICAg
ICAgIG1faGFuZGxlZE5vZGUgPSBoYW5kbGVUZXh0Tm9kZSgpOwotICAgICAgICAgICAgICAgIGVs
c2UgaWYgKHJlbmRlcmVyICYmIChyZW5kZXJlci0+aXNJbWFnZSgpIHx8IHJlbmRlcmVyLT5pc1dp
ZGdldCgpIHx8CisgICAgICAgICAgICAgICAgICAgIGlmIChtX2hhbmRsZWROb2RlKQorICAgICAg
ICAgICAgICAgICAgICAgICAgbV9oYW5kbGVkRmlyc3RMZXR0ZXIgPSBmYWxzZTsKKyAgICAgICAg
ICAgICAgICB9IGVsc2UgaWYgKHJlbmRlcmVyICYmIChyZW5kZXJlci0+aXNJbWFnZSgpIHx8IHJl
bmRlcmVyLT5pc1dpZGdldCgpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlbmRlcmVy
LT5ub2RlKCkgJiYgcmVuZGVyZXItPm5vZGUoKS0+aXNFbGVtZW50Tm9kZSgpICYmCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PEVsZW1lbnQqPihyZW5kZXJlci0+bm9kZSgp
KS0+aXNGb3JtQ29udHJvbEVsZW1lbnQoKSkpKQogICAgICAgICAgICAgICAgICAgICBtX2hhbmRs
ZWROb2RlID0gaGFuZGxlUmVwbGFjZWRFbGVtZW50KCk7CkBAIC00MzUsNiArNDQwLDIxIEBAIGJv
b2wgVGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Tm9kZSgpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIFJlbmRlclRleHQqIHJlbmRlcmVyID0gdG9SZW5kZXJUZXh0KG1fbm9kZS0+cmVuZGVy
ZXIoKSk7CisgICAgaWYgKCFtX2hhbmRsZWRGaXJzdExldHRlciAmJiByZW5kZXJlci0+aXNUZXh0
RnJhZ21lbnQoKSkgeworICAgICAgICBSZW5kZXJUZXh0RnJhZ21lbnQqIGZyYWdtZW50ID0gc3Rh
dGljX2Nhc3Q8UmVuZGVyVGV4dEZyYWdtZW50Kj4ocmVuZGVyZXIpOworICAgICAgICBpZiAoZnJh
Z21lbnQtPmZpcnN0TGV0dGVyKCkgJiYgZnJhZ21lbnQtPmZpcnN0TGV0dGVyKCktPmZpcnN0Q2hp
bGQoKSAmJiBmcmFnbWVudC0+Zmlyc3RMZXR0ZXIoKS0+Zmlyc3RDaGlsZCgpLT5pc1RleHQoKSAm
JiB0b1JlbmRlclRleHQoZnJhZ21lbnQtPmZpcnN0TGV0dGVyKCktPmZpcnN0Q2hpbGQoKSktPmlz
VGV4dEZyYWdtZW50KCkpIHsKKyAgICAgICAgICAgIFJlbmRlclRleHRGcmFnbWVudCogZmlyc3RM
ZXR0ZXIgPSBzdGF0aWNfY2FzdDxSZW5kZXJUZXh0RnJhZ21lbnQqPihmcmFnbWVudC0+Zmlyc3RM
ZXR0ZXIoKS0+Zmlyc3RDaGlsZCgpKTsKKyAgICAgICAgICAgIGlmIChmaXJzdExldHRlci0+c3R5
bGUoKS0+dmlzaWJpbGl0eSgpID09IFZJU0lCTEUpIHsKKyAgICAgICAgICAgICAgICBpZiAobV9s
YXN0VGV4dE5vZGVFbmRlZFdpdGhDb2xsYXBzZWRTcGFjZSAmJiAoIWZpcnN0TGV0dGVyLT5zdHls
ZSgpLT5jb2xsYXBzZVdoaXRlU3BhY2UoKSB8fCAoIWlzQ29sbGFwc2libGVXaGl0ZXNwYWNlKG1f
bGFzdENoYXJhY3RlcikgJiYgbV9sYXN0Q2hhcmFjdGVyKSkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgZW1pdENoYXJhY3RlcignICcsIG1fbm9kZSwgMCwgbV9vZmZzZXQsIG1fb2Zmc2V0KTsKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICBlbWl0VGV4dChtX25vZGUsIGZpcnN0TGV0dGVyLCAwLCAxKTsKKyAgICAgICAg
ICAgICAgICBtX2hhbmRsZWRGaXJzdExldHRlciA9IHRydWU7CisgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQogICAgIGlmIChyZW5k
ZXJlci0+c3R5bGUoKS0+dmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgCkBAIC00OTEsOCArNTExLDcgQEAgdm9pZCBUZXh0SXRlcmF0b3I6Omhh
bmRsZVRleHRCb3goKQogCiAgICAgICAgIC8vIENoZWNrIGZvciBjb2xsYXBzZWQgc3BhY2UgYXQg
dGhlIHN0YXJ0IG9mIHRoaXMgcnVuLgogICAgICAgICBJbmxpbmVUZXh0Qm94KiBmaXJzdFRleHRC
b3ggPSByZW5kZXJlci0+Y29udGFpbnNSZXZlcnNlZFRleHQoKSA/IG1fc29ydGVkVGV4dEJveGVz
WzBdIDogcmVuZGVyZXItPmZpcnN0VGV4dEJveCgpOwotICAgICAgICBib29sIG5lZWRTcGFjZSA9
IG1fbGFzdFRleHROb2RlRW5kZWRXaXRoQ29sbGFwc2VkU3BhY2UKLSAgICAgICAgICAgIHx8ICht
X3RleHRCb3ggPT0gZmlyc3RUZXh0Qm94ICYmIHRleHRCb3hTdGFydCA9PSBydW5TdGFydCAmJiBy
dW5TdGFydCA+IDApOworICAgICAgICBib29sIG5lZWRTcGFjZSA9ICFtX2hhbmRsZWRGaXJzdExl
dHRlciAmJiAobV9sYXN0VGV4dE5vZGVFbmRlZFdpdGhDb2xsYXBzZWRTcGFjZSB8fCAobV90ZXh0
Qm94ID09IGZpcnN0VGV4dEJveCAmJiB0ZXh0Qm94U3RhcnQgPT0gcnVuU3RhcnQgJiYgcnVuU3Rh
cnQgPiAwKSk7CiAgICAgICAgIGlmIChuZWVkU3BhY2UgJiYgIWlzQ29sbGFwc2libGVXaGl0ZXNw
YWNlKG1fbGFzdENoYXJhY3RlcikgJiYgbV9sYXN0Q2hhcmFjdGVyKSB7CiAgICAgICAgICAgICBp
ZiAobV9sYXN0VGV4dE5vZGUgPT0gbV9ub2RlICYmIHJ1blN0YXJ0ID4gMCAmJiBzdHJbcnVuU3Rh
cnQgLSAxXSA9PSAnICcpIHsKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzcGFjZVJ1blN0YXJ0
ID0gcnVuU3RhcnQgLSAxOwpAQCAtODg4LDkgKzkwNyw5IEBAIHZvaWQgVGV4dEl0ZXJhdG9yOjpl
bWl0Q2hhcmFjdGVyKFVDaGFyIGMsIE5vZGUqIHRleHROb2RlLCBOb2RlKiBvZmZzZXRCYXNlTm9k
ZSwKICAgICBtX2xhc3RDaGFyYWN0ZXIgPSBjOwogfQogCi12b2lkIFRleHRJdGVyYXRvcjo6ZW1p
dFRleHQoTm9kZSogdGV4dE5vZGUsIGludCB0ZXh0U3RhcnRPZmZzZXQsIGludCB0ZXh0RW5kT2Zm
c2V0KQordm9pZCBUZXh0SXRlcmF0b3I6OmVtaXRUZXh0KE5vZGUqIHRleHROb2RlLCBSZW5kZXJP
YmplY3QqIHJlbmRlck9iamVjdCwgaW50IHRleHRTdGFydE9mZnNldCwgaW50IHRleHRFbmRPZmZz
ZXQpCiB7Ci0gICAgUmVuZGVyVGV4dCogcmVuZGVyZXIgPSB0b1JlbmRlclRleHQobV9ub2RlLT5y
ZW5kZXJlcigpKTsKKyAgICBSZW5kZXJUZXh0KiByZW5kZXJlciA9IHRvUmVuZGVyVGV4dChyZW5k
ZXJPYmplY3QpOwogICAgIG1fdGV4dCA9IG1fZW1pdHNUZXh0V2l0aG91dFRyYW5zY29kaW5nID8g
cmVuZGVyZXItPnRleHRXaXRob3V0VHJhbnNjb2RpbmcoKSA6IHJlbmRlcmVyLT50ZXh0KCk7CiAg
ICAgQVNTRVJUKG1fdGV4dC5jaGFyYWN0ZXJzKCkpOwogCkBAIC05MDYsNiArOTI1LDExIEBAIHZv
aWQgVGV4dEl0ZXJhdG9yOjplbWl0VGV4dChOb2RlKiB0ZXh0Tm9kZSwgaW50IHRleHRTdGFydE9m
ZnNldCwgaW50IHRleHRFbmRPZmZzCiAgICAgbV9oYXNFbWl0dGVkID0gdHJ1ZTsKIH0KIAordm9p
ZCBUZXh0SXRlcmF0b3I6OmVtaXRUZXh0KE5vZGUqIHRleHROb2RlLCBpbnQgdGV4dFN0YXJ0T2Zm
c2V0LCBpbnQgdGV4dEVuZE9mZnNldCkKK3sKKyAgICBlbWl0VGV4dCh0ZXh0Tm9kZSwgbV9ub2Rl
LT5yZW5kZXJlcigpLCB0ZXh0U3RhcnRPZmZzZXQsIHRleHRFbmRPZmZzZXQpOworfQorCiBQYXNz
UmVmUHRyPFJhbmdlPiBUZXh0SXRlcmF0b3I6OnJhbmdlKCkgY29uc3QKIHsKICAgICAvLyB1c2Ug
dGhlIGN1cnJlbnQgcnVuIGluZm9ybWF0aW9uLCBpZiB3ZSBoYXZlIGl0CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmggYi9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJh
dG9yLmgKaW5kZXggYmEzODFiOWJmYTQ0YTc5ZDEwNjQ5OTlkMmM2MDdiZTY5Zjc2YTg5My4uZTlm
MDg4Y2Y2ZmFkNDMxYWUxYzMzYzc2N2Y4ZDQyY2RmMWQ5Zjk2NiAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oCisrKyBiL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0
b3IuaApAQCAtMTAzLDYgKzEwMyw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBoYW5kbGVOb25UZXh0
Tm9kZSgpOwogICAgIHZvaWQgaGFuZGxlVGV4dEJveCgpOwogICAgIHZvaWQgZW1pdENoYXJhY3Rl
cihVQ2hhciwgTm9kZSogdGV4dE5vZGUsIE5vZGUqIG9mZnNldEJhc2VOb2RlLCBpbnQgdGV4dFN0
YXJ0T2Zmc2V0LCBpbnQgdGV4dEVuZE9mZnNldCk7CisgICAgdm9pZCBlbWl0VGV4dChOb2RlKiB0
ZXh0Tm9kZSwgUmVuZGVyT2JqZWN0KiByZW5kZXJPYmplY3QsIGludCB0ZXh0U3RhcnRPZmZzZXQs
IGludCB0ZXh0RW5kT2Zmc2V0KTsKICAgICB2b2lkIGVtaXRUZXh0KE5vZGUqIHRleHROb2RlLCBp
bnQgdGV4dFN0YXJ0T2Zmc2V0LCBpbnQgdGV4dEVuZE9mZnNldCk7CiAgICAgCiAgICAgLy8gQ3Vy
cmVudCBwb3NpdGlvbiwgbm90IG5lY2Vzc2FyaWx5IG9mIHRoZSB0ZXh0IGJlaW5nIHJldHVybmVk
LCBidXQgcG9zaXRpb24KQEAgLTE1OSw2ICsxNjAsOCBAQCBwcml2YXRlOgogCiAgICAgLy8gVXNl
ZCB3aGVuIHdlIHdhbnQgdGV4dHMgZm9yIGNvcHlpbmcsIHBhc3RpbmcsIGFuZCB0cmFuc3Bvc2lu
Zy4KICAgICBib29sIG1fZW1pdHNUZXh0V2l0aG91dFRyYW5zY29kaW5nOworICAgIC8vIFVzZWQg
d2hlbiBkZWNpZGluZyB0ZXh0IGZyYWdtZW50IGNyZWF0ZWQgYnkgOmZpcnN0LWxldHRlciBzaG91
bGQgYmUgbG9va2VkIGludG8uCisgICAgYm9vbCBtX2hhbmRsZWRGaXJzdExldHRlcjsKIH07CiAK
IC8vIEl0ZXJhdGVzIHRocm91Z2ggdGhlIERPTSByYW5nZSwgcmV0dXJuaW5nIGFsbCB0aGUgdGV4
dCwgYW5kIDAtbGVuZ3RoIGJvdW5kYXJpZXMK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57451</attachid>
            <date>2010-05-31 04:31:07 -0700</date>
            <delta_ts>2010-05-31 04:36:37 -0700</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>bug-39863-20100531203105.patch</filename>
            <type>text/plain</type>
            <size>12907</size>
            <attacher name="Yoshiki Hayashi">yhayashi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxYjZiMzQyODNiNTlhZDA2Y2E0NDU0NzZlN2IxNWNjMDY0MGE4MjhmLi4wNDVhMGQ5
MTlmNWJlMmE4Mzg0OTgzYzczMjZhM2RlMTAzNmM4MjBjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTAtMDUtMjggIFlvc2hpa2kgSGF5YXNoaSAgPHloYXlhc2hpQGdvb2dsZS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSXRlcmF0ZSBvdmVy
IDpmaXJzdC1sZXR0ZXIgc28gdGhhdCBpdCB3aWxsIGJlIGluY2x1ZGVkIGluIGlubmVyVGV4dC4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5ODYzCisK
KyAgICAgICAgKiBmYXN0L2RvbS9pbm5lci10ZXh0LWZpcnN0LWxldHRlci1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL2lubmVyLXRleHQtZmlyc3QtbGV0dGVyLmh0bWw6
IEFkZGVkLgorCiAyMDEwLTA1LTMwICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRAd2Via2l0Lm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL2dldENvbXB1dGVkU3R5bGUvZ2V0Q29tcHV0ZWRT
dHlsZS13aXRoLXBzZXVkby1lbGVtZW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzL2dldENvbXB1dGVkU3R5bGUvZ2V0Q29tcHV0ZWRTdHlsZS13aXRoLXBzZXVkby1lbGVtZW50
LWV4cGVjdGVkLnR4dAppbmRleCA0OTU3NmYxODA2Y2UzYjA2YjU0YTFkNjkxNTg0YzM1NDY2MGQw
NjA1Li4wZTdiYzUwZTRhMmVkM2QxOGJiZTQ4YTk0N2ZiMjNjOGY4YzNlNTkxIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9nZXRDb21wdXRlZFN0eWxlL2dldENvbXB1dGVkU3R5bGUt
d2l0aC1wc2V1ZG8tZWxlbWVudC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9j
c3MvZ2V0Q29tcHV0ZWRTdHlsZS9nZXRDb21wdXRlZFN0eWxlLXdpdGgtcHNldWRvLWVsZW1lbnQt
ZXhwZWN0ZWQudHh0CkBAIC0xLDcgKzEsNyBAQAogVGVzdCBmb3IgV2ViS2l0IGJ1ZyAyNDAyMTog
cHNldWRvLWVsZW1lbnQgc3R5bGVzIG5vdCBhY2Nlc3NpYmxlIC8gcmV0cmlldmFibGUgdmlhIERP
TSBtZXRob2RzCiAKIAotb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRp
cGlzaWNpbmcgZWxpdCwgc2VkIGRvIGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1bnQgdXQgbGFib3Jl
IGV0IGRvbG9yZSBtYWduYSBhbGlxdWEuIFV0IGVuaW0gYWQgbWluaW0gdmVuaWFtLCBxdWlzIG5v
c3RydWQgZXhlcmNpdGF0aW9uIHVsbGFtY28gbGFib3JpcyBuaXNpIHV0IGFsaXF1aXAgZXggZWEg
Y29tbW9kbyBjb25zZXF1YXQuIER1aXMgYXV0ZSBpcnVyZSBkb2xvciBpbiByZXByZWhlbmRlcml0
IGluIHZvbHVwdGF0ZSB2ZWxpdCBlc3NlIGNpbGx1bSBkb2xvcmUgZXUgZnVnaWF0IG51bGxhIHBh
cmlhdHVyLiBFeGNlcHRldXIgc2ludCBvY2NhZWNhdCBjdXBpZGF0YXQgbm9uIHByb2lkZW50LCBz
dW50IGluIGN1bHBhIHF1aSBvZmZpY2lhIGRlc2VydW50IG1vbGxpdCBhbmltIGlkIGVzdCBsYWJv
cnVtLgorTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2ljaW5n
IGVsaXQsIHNlZCBkbyBlaXVzbW9kIHRlbXBvciBpbmNpZGlkdW50IHV0IGxhYm9yZSBldCBkb2xv
cmUgbWFnbmEgYWxpcXVhLiBVdCBlbmltIGFkIG1pbmltIHZlbmlhbSwgcXVpcyBub3N0cnVkIGV4
ZXJjaXRhdGlvbiB1bGxhbWNvIGxhYm9yaXMgbmlzaSB1dCBhbGlxdWlwIGV4IGVhIGNvbW1vZG8g
Y29uc2VxdWF0LiBEdWlzIGF1dGUgaXJ1cmUgZG9sb3IgaW4gcmVwcmVoZW5kZXJpdCBpbiB2b2x1
cHRhdGUgdmVsaXQgZXNzZSBjaWxsdW0gZG9sb3JlIGV1IGZ1Z2lhdCBudWxsYSBwYXJpYXR1ci4g
RXhjZXB0ZXVyIHNpbnQgb2NjYWVjYXQgY3VwaWRhdGF0IG5vbiBwcm9pZGVudCwgc3VudCBpbiBj
dWxwYSBxdWkgb2ZmaWNpYSBkZXNlcnVudCBtb2xsaXQgYW5pbSBpZCBlc3QgbGFib3J1bS4KIAog
TWlkZGxlCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2lubmVyLXRleHQtZmly
c3QtbGV0dGVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2lubmVyLXRleHQt
Zmlyc3QtbGV0dGVyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMjdkYWM4NDI0MzJhNjgwNGMz
NDNhZTViOTQyMzNhZDk4M2MxODczCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9kb20vaW5uZXItdGV4dC1maXJzdC1sZXR0ZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjgg
QEAKK1RoaXMgdGVzdHMgYSBsZXR0ZXIgd2l0aCA6Zmlyc3QtbGV0dGVyIGFwcGxpZWQgaXMgcHJl
c2VudCBpbiBpbm5lclRleHQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNT
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkaXZGaXJzdCcpLmlubmVyVGV4dCBpcyBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnZGl2Tm9ybWFsJykuaW5uZXJUZXh0CitQQVNTIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdwRmlyc3QnKS5pbm5lclRleHQgaXMgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ3BOb3JtYWwnKS5pbm5lclRleHQKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Nv
bGxhcHNlZFNwYWNlRmlyc3QnKS5pbm5lclRleHQgaXMgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2NvbGxhcHNlZFNwYWNlTm9ybWFsJykuaW5uZXJUZXh0CitQQVNTIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdjb2xsYXBzZWRTcGFjZVByZUZpcnN0JykuaW5uZXJUZXh0IGlzIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdjb2xsYXBzZWRTcGFjZVByZU5vcm1hbCcpLmlubmVyVGV4dAorUEFTUyBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29sbGFwc2VkU3BhY2VEaXZGaXJzdCcpLmlubmVyVGV4
dCBpcyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29sbGFwc2VkU3BhY2VEaXZOb3JtYWwnKS5p
bm5lclRleHQKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RpdlNwYW5GaXJzdCcpLmlu
bmVyVGV4dCBpcyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGl2U3Bhbk5vcm1hbCcpLmlubmVy
VGV4dAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCitk
aXYKK2RpdgorcHJlCitwcmUKK2FiYworYWJjCisgYWJjCisgYWJjCitmb28KK2FiYworZm9vCith
YmMKKzEyCisxMgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vaW5uZXItdGV4dC1m
aXJzdC1sZXR0ZXIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2lubmVyLXRleHQtZmlyc3Qt
bGV0dGVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzAzN2IxYjExNzYzMzE4MzMzOTg4NzAwZTAyOGFjMmNk
YjhkYzM3ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2lubmVyLXRl
eHQtZmlyc3QtbGV0dGVyLmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPGh0bWw+Cis8aGVhZD4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUu
Y3NzIj4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHN0eWxlPgorLmZpcnN0OmZpcnN0LWxldHRlciB7CisgIGZvbnQtd2VpZ2h0OiBib2xk
OworfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxkaXYgaWQ9ImRpdkZpcnN0IiBjbGFzcz0iZmly
c3QiPmRpdjwvZGl2PgorPGRpdiBpZD0iZGl2Tm9ybWFsIj5kaXY8L2Rpdj4KKzxwcmUgaWQ9InBG
aXJzdCIgY2xhc3M9ImZpcnN0Ij5wcmU8L3ByZT4KKzxwcmUgaWQ9InBOb3JtYWwiPnByZTwvcHJl
PgorPGRpdiBpZD0iY29sbGFwc2VkU3BhY2VGaXJzdCI+PHNwYW4+IDwvc3Bhbj48ZGl2IGNsYXNz
PSJmaXJzdCI+YWJjPC9kaXY+PC9kaXY+Cis8ZGl2IGlkPSJjb2xsYXBzZWRTcGFjZU5vcm1hbCI+
PHNwYW4+IDwvc3Bhbj48ZGl2PmFiYzwvZGl2PjwvZGl2PgorPGRpdiBpZD0iY29sbGFwc2VkU3Bh
Y2VQcmVGaXJzdCI+PHNwYW4+IDwvc3Bhbj48cHJlIGNsYXNzPSJmaXJzdCI+YWJjPC9wcmU+PC9k
aXY+Cis8ZGl2IGlkPSJjb2xsYXBzZWRTcGFjZVByZU5vcm1hbCI+PHNwYW4+IDwvc3Bhbj48cHJl
PmFiYzwvcHJlPjwvZGl2PgorPGRpdiBpZD0iY29sbGFwc2VkU3BhY2VEaXZGaXJzdCI+PHNwYW4+
Zm9vPC9zcGFuPjxzcGFuPiA8L3NwYW4+PGRpdiBjbGFzcz0iZmlyc3QiPmFiYzwvZGl2PjwvZGl2
PgorPGRpdiBpZD0iY29sbGFwc2VkU3BhY2VEaXZOb3JtYWwiPjxzcGFuPmZvbzwvc3Bhbj48c3Bh
bj4gPC9zcGFuPjxkaXY+YWJjPC9kaXY+PC9kaXY+Cis8ZGl2IGlkPSJkaXZTcGFuRmlyc3QiIGNs
YXNzPSJmaXJzdCI+PHNwYW4gaWQ9ImYxIj4xPC9zcGFuPjxzcGFuIGlkPSJmMiI+Mjwvc3Bhbj48
L2Rpdj4KKzxkaXYgaWQ9ImRpdlNwYW5Ob3JtYWwiPjxzcGFuIGlkPSJuMSI+MTwvc3Bhbj48c3Bh
biBpZD0ibjIiPjI8L3NwYW4+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRoaXMgdGVz
dHMgYSBsZXR0ZXIgd2l0aCA6Zmlyc3QtbGV0dGVyIGFwcGxpZWQgaXMgcHJlc2VudCBpbiBpbm5l
clRleHQuIik7CitzaG91bGRCZSgiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RpdkZpcnN0Jyku
aW5uZXJUZXh0IiwgImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkaXZOb3JtYWwnKS5pbm5lclRl
eHQiKTsKK3Nob3VsZEJlKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncEZpcnN0JykuaW5uZXJU
ZXh0IiwgImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwTm9ybWFsJykuaW5uZXJUZXh0Iik7Cit2
YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKK3Nob3VsZEJlKCJkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnY29sbGFwc2VkU3BhY2VGaXJzdCcpLmlubmVyVGV4dCIsICJkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnY29sbGFwc2VkU3BhY2VOb3JtYWwnKS5pbm5lclRleHQiKTsKK3Nob3VsZEJl
KCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29sbGFwc2VkU3BhY2VQcmVGaXJzdCcpLmlubmVy
VGV4dCIsICJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29sbGFwc2VkU3BhY2VQcmVOb3JtYWwn
KS5pbm5lclRleHQiKTsKK3Nob3VsZEJlKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29sbGFw
c2VkU3BhY2VEaXZGaXJzdCcpLmlubmVyVGV4dCIsICJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
Y29sbGFwc2VkU3BhY2VEaXZOb3JtYWwnKS5pbm5lclRleHQiKTsKK3Nob3VsZEJlKCJkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnZGl2U3BhbkZpcnN0JykuaW5uZXJUZXh0IiwgImRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdkaXZTcGFuTm9ybWFsJykuaW5uZXJUZXh0Iik7Cis8L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggNTU3YjY1N2NmMDJkYTc5MGQ0NTdkMTJlMmExMmI3NGQwNjVlYTFlNi4u
NTNlY2JhYmNmMjY5Y2Y1MWQ5ZTExYzI1MDgyYzUwMTA0MDczYzU1YiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAor
MjAxMC0wNS0yOCAgWW9zaGlraSBIYXlhc2hpICA8eWhheWFzaGlAZ29vZ2xlLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJdGVyYXRlIG92ZXIg
OmZpcnN0LWxldHRlciBzbyB0aGF0IGl0IHdpbGwgYmUgaW5jbHVkZWQgaW4gaW5uZXJUZXh0Lgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk4NjMKKwor
ICAgICAgICBUZXN0OiBmYXN0L2RvbS9pbm5lci10ZXh0LWZpcnN0LWxldHRlci5odG1sCisKKyAg
ICAgICAgKiBlZGl0aW5nL1RleHRJdGVyYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
SXRlcmF0b3I6OlRleHRJdGVyYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6
OmFkdmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Tm9k
ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHRCb3gpOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjplbWl0VGV4dCk6CisgICAgICAgICogZWRpdGlu
Zy9UZXh0SXRlcmF0b3IuaDoKKwogMjAxMC0wNS0zMCAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KZGlmZiAtLWdpdCBhL1dl
YkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwIGIvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVy
YXRvci5jcHAKaW5kZXggZjNiZDlkZjZiOWY5NWJmMzBkZGEyYTMwZTcyNmQ3MzVmMThmOGIxZi4u
ODk5NmRmYzg0YTUxMTk5ODNlNGE3NzdkNzllYmY5ODQyNjIyMDliZCAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKKysrIGIvV2ViQ29yZS9lZGl0aW5nL1RleHRJ
dGVyYXRvci5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJSZW5kZXJUYWJsZUNlbGwu
aCIKICNpbmNsdWRlICJSZW5kZXJUYWJsZVJvdy5oIgogI2luY2x1ZGUgIlJlbmRlclRleHRDb250
cm9sLmgiCisjaW5jbHVkZSAiUmVuZGVyVGV4dEZyYWdtZW50LmgiCiAjaW5jbHVkZSAiVmlzaWJs
ZVBvc2l0aW9uLmgiCiAjaW5jbHVkZSAidmlzaWJsZV91bml0cy5oIgogCkBAIC0yNTcsNiArMjU4
LDcgQEAgVGV4dEl0ZXJhdG9yOjpUZXh0SXRlcmF0b3IoKQogICAgICwgbV9lbWl0c0NoYXJhY3Rl
cnNCZXR3ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucyhmYWxzZSkKICAgICAsIG1fZW50ZXJzVGV4dENv
bnRyb2xzKGZhbHNlKQogICAgICwgbV9lbWl0c1RleHRXaXRob3V0VHJhbnNjb2RpbmcoZmFsc2Up
CisgICAgLCBtX2hhbmRsZWRGaXJzdExldHRlcihmYWxzZSkKIHsKIH0KIApAQCAtMjcxLDYgKzI3
Myw3IEBAIFRleHRJdGVyYXRvcjo6VGV4dEl0ZXJhdG9yKGNvbnN0IFJhbmdlKiByLCBUZXh0SXRl
cmF0b3JCZWhhdmlvciBiZWhhdmlvcikKICAgICAsIG1fZW1pdHNDaGFyYWN0ZXJzQmV0d2VlbkFs
bFZpc2libGVQb3NpdGlvbnMoYmVoYXZpb3IgJiBUZXh0SXRlcmF0b3JFbWl0c0NoYXJhY3RlcnNC
ZXR3ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucykKICAgICAsIG1fZW50ZXJzVGV4dENvbnRyb2xzKGJl
aGF2aW9yICYgVGV4dEl0ZXJhdG9yRW50ZXJzVGV4dENvbnRyb2xzKQogICAgICwgbV9lbWl0c1Rl
eHRXaXRob3V0VHJhbnNjb2RpbmcoYmVoYXZpb3IgJiBUZXh0SXRlcmF0b3JFbWl0c1RleHRzV2l0
aG91dFRyYW5zY29kaW5nKQorICAgICwgbV9oYW5kbGVkRmlyc3RMZXR0ZXIoZmFsc2UpCiB7CiAg
ICAgaWYgKCFyKQogICAgICAgICByZXR1cm47CkBAIC0zNjksOSArMzcyLDExIEBAIHZvaWQgVGV4
dEl0ZXJhdG9yOjphZHZhbmNlKCkKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIGhh
bmRsZSBjdXJyZW50IG5vZGUgYWNjb3JkaW5nIHRvIGl0cyB0eXBlCiAgICAgICAgICAgICBpZiAo
IW1faGFuZGxlZE5vZGUpIHsKLSAgICAgICAgICAgICAgICBpZiAocmVuZGVyZXItPmlzVGV4dCgp
ICYmIG1fbm9kZS0+bm9kZVR5cGUoKSA9PSBOb2RlOjpURVhUX05PREUpIC8vIEZJWE1FOiBXaGF0
IGFib3V0IENEQVRBX1NFQ1RJT05fTk9ERT8KKyAgICAgICAgICAgICAgICBpZiAocmVuZGVyZXIt
PmlzVGV4dCgpICYmIG1fbm9kZS0+bm9kZVR5cGUoKSA9PSBOb2RlOjpURVhUX05PREUpIHsgLy8g
RklYTUU6IFdoYXQgYWJvdXQgQ0RBVEFfU0VDVElPTl9OT0RFPwogICAgICAgICAgICAgICAgICAg
ICBtX2hhbmRsZWROb2RlID0gaGFuZGxlVGV4dE5vZGUoKTsKLSAgICAgICAgICAgICAgICBlbHNl
IGlmIChyZW5kZXJlciAmJiAocmVuZGVyZXItPmlzSW1hZ2UoKSB8fCByZW5kZXJlci0+aXNXaWRn
ZXQoKSB8fAorICAgICAgICAgICAgICAgICAgICBpZiAobV9oYW5kbGVkTm9kZSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIG1faGFuZGxlZEZpcnN0TGV0dGVyID0gZmFsc2U7CisgICAgICAgICAg
ICAgICAgfSBlbHNlIGlmIChyZW5kZXJlciAmJiAocmVuZGVyZXItPmlzSW1hZ2UoKSB8fCByZW5k
ZXJlci0+aXNXaWRnZXQoKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgIChyZW5kZXJlci0+
bm9kZSgpICYmIHJlbmRlcmVyLT5ub2RlKCktPmlzRWxlbWVudE5vZGUoKSAmJgogICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxFbGVtZW50Kj4ocmVuZGVyZXItPm5vZGUoKSkt
PmlzRm9ybUNvbnRyb2xFbGVtZW50KCkpKSkKICAgICAgICAgICAgICAgICAgICAgbV9oYW5kbGVk
Tm9kZSA9IGhhbmRsZVJlcGxhY2VkRWxlbWVudCgpOwpAQCAtNDM1LDYgKzQ0MCwyMSBAQCBib29s
IFRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dE5vZGUoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICBSZW5kZXJUZXh0KiByZW5kZXJlciA9IHRvUmVuZGVyVGV4dChtX25vZGUtPnJlbmRlcmVy
KCkpOworICAgIGlmICghbV9oYW5kbGVkRmlyc3RMZXR0ZXIgJiYgcmVuZGVyZXItPmlzVGV4dEZy
YWdtZW50KCkpIHsKKyAgICAgICAgUmVuZGVyVGV4dEZyYWdtZW50KiBmcmFnbWVudCA9IHN0YXRp
Y19jYXN0PFJlbmRlclRleHRGcmFnbWVudCo+KHJlbmRlcmVyKTsKKyAgICAgICAgaWYgKGZyYWdt
ZW50LT5maXJzdExldHRlcigpICYmIGZyYWdtZW50LT5maXJzdExldHRlcigpLT5maXJzdENoaWxk
KCkgJiYgZnJhZ21lbnQtPmZpcnN0TGV0dGVyKCktPmZpcnN0Q2hpbGQoKS0+aXNUZXh0KCkgJiYg
dG9SZW5kZXJUZXh0KGZyYWdtZW50LT5maXJzdExldHRlcigpLT5maXJzdENoaWxkKCkpLT5pc1Rl
eHRGcmFnbWVudCgpKSB7CisgICAgICAgICAgICBSZW5kZXJUZXh0RnJhZ21lbnQqIGZpcnN0TGV0
dGVyID0gc3RhdGljX2Nhc3Q8UmVuZGVyVGV4dEZyYWdtZW50Kj4oZnJhZ21lbnQtPmZpcnN0TGV0
dGVyKCktPmZpcnN0Q2hpbGQoKSk7CisgICAgICAgICAgICBpZiAoZmlyc3RMZXR0ZXItPnN0eWxl
KCktPnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFKSB7CisgICAgICAgICAgICAgICAgaWYgKG1fbGFz
dFRleHROb2RlRW5kZWRXaXRoQ29sbGFwc2VkU3BhY2UgJiYgKCFmaXJzdExldHRlci0+c3R5bGUo
KS0+Y29sbGFwc2VXaGl0ZVNwYWNlKCkgfHwgKCFpc0NvbGxhcHNpYmxlV2hpdGVzcGFjZShtX2xh
c3RDaGFyYWN0ZXIpICYmIG1fbGFzdENoYXJhY3RlcikpKSB7CisgICAgICAgICAgICAgICAgICAg
IGVtaXRDaGFyYWN0ZXIoJyAnLCBtX25vZGUsIDAsIG1fb2Zmc2V0LCBtX29mZnNldCk7CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgZW1pdFRleHQobV9ub2RlLCBmaXJzdExldHRlciwgMCwgMSk7CisgICAgICAgICAg
ICAgICAgbV9oYW5kbGVkRmlyc3RMZXR0ZXIgPSB0cnVlOworICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KICAgICBpZiAocmVuZGVy
ZXItPnN0eWxlKCktPnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIApAQCAtNDkxLDggKzUxMSw3IEBAIHZvaWQgVGV4dEl0ZXJhdG9yOjpoYW5k
bGVUZXh0Qm94KCkKIAogICAgICAgICAvLyBDaGVjayBmb3IgY29sbGFwc2VkIHNwYWNlIGF0IHRo
ZSBzdGFydCBvZiB0aGlzIHJ1bi4KICAgICAgICAgSW5saW5lVGV4dEJveCogZmlyc3RUZXh0Qm94
ID0gcmVuZGVyZXItPmNvbnRhaW5zUmV2ZXJzZWRUZXh0KCkgPyBtX3NvcnRlZFRleHRCb3hlc1sw
XSA6IHJlbmRlcmVyLT5maXJzdFRleHRCb3goKTsKLSAgICAgICAgYm9vbCBuZWVkU3BhY2UgPSBt
X2xhc3RUZXh0Tm9kZUVuZGVkV2l0aENvbGxhcHNlZFNwYWNlCi0gICAgICAgICAgICB8fCAobV90
ZXh0Qm94ID09IGZpcnN0VGV4dEJveCAmJiB0ZXh0Qm94U3RhcnQgPT0gcnVuU3RhcnQgJiYgcnVu
U3RhcnQgPiAwKTsKKyAgICAgICAgYm9vbCBuZWVkU3BhY2UgPSAhbV9oYW5kbGVkRmlyc3RMZXR0
ZXIgJiYgKG1fbGFzdFRleHROb2RlRW5kZWRXaXRoQ29sbGFwc2VkU3BhY2UgfHwgKG1fdGV4dEJv
eCA9PSBmaXJzdFRleHRCb3ggJiYgdGV4dEJveFN0YXJ0ID09IHJ1blN0YXJ0ICYmIHJ1blN0YXJ0
ID4gMCkpOwogICAgICAgICBpZiAobmVlZFNwYWNlICYmICFpc0NvbGxhcHNpYmxlV2hpdGVzcGFj
ZShtX2xhc3RDaGFyYWN0ZXIpICYmIG1fbGFzdENoYXJhY3RlcikgewogICAgICAgICAgICAgaWYg
KG1fbGFzdFRleHROb2RlID09IG1fbm9kZSAmJiBydW5TdGFydCA+IDAgJiYgc3RyW3J1blN0YXJ0
IC0gMV0gPT0gJyAnKSB7CiAgICAgICAgICAgICAgICAgdW5zaWduZWQgc3BhY2VSdW5TdGFydCA9
IHJ1blN0YXJ0IC0gMTsKQEAgLTg4OCw5ICs5MDcsOSBAQCB2b2lkIFRleHRJdGVyYXRvcjo6ZW1p
dENoYXJhY3RlcihVQ2hhciBjLCBOb2RlKiB0ZXh0Tm9kZSwgTm9kZSogb2Zmc2V0QmFzZU5vZGUs
CiAgICAgbV9sYXN0Q2hhcmFjdGVyID0gYzsKIH0KIAotdm9pZCBUZXh0SXRlcmF0b3I6OmVtaXRU
ZXh0KE5vZGUqIHRleHROb2RlLCBpbnQgdGV4dFN0YXJ0T2Zmc2V0LCBpbnQgdGV4dEVuZE9mZnNl
dCkKK3ZvaWQgVGV4dEl0ZXJhdG9yOjplbWl0VGV4dChOb2RlKiB0ZXh0Tm9kZSwgUmVuZGVyT2Jq
ZWN0KiByZW5kZXJPYmplY3QsIGludCB0ZXh0U3RhcnRPZmZzZXQsIGludCB0ZXh0RW5kT2Zmc2V0
KQogewotICAgIFJlbmRlclRleHQqIHJlbmRlcmVyID0gdG9SZW5kZXJUZXh0KG1fbm9kZS0+cmVu
ZGVyZXIoKSk7CisgICAgUmVuZGVyVGV4dCogcmVuZGVyZXIgPSB0b1JlbmRlclRleHQocmVuZGVy
T2JqZWN0KTsKICAgICBtX3RleHQgPSBtX2VtaXRzVGV4dFdpdGhvdXRUcmFuc2NvZGluZyA/IHJl
bmRlcmVyLT50ZXh0V2l0aG91dFRyYW5zY29kaW5nKCkgOiByZW5kZXJlci0+dGV4dCgpOwogICAg
IEFTU0VSVChtX3RleHQuY2hhcmFjdGVycygpKTsKIApAQCAtOTA2LDYgKzkyNSwxMSBAQCB2b2lk
IFRleHRJdGVyYXRvcjo6ZW1pdFRleHQoTm9kZSogdGV4dE5vZGUsIGludCB0ZXh0U3RhcnRPZmZz
ZXQsIGludCB0ZXh0RW5kT2ZmcwogICAgIG1faGFzRW1pdHRlZCA9IHRydWU7CiB9CiAKK3ZvaWQg
VGV4dEl0ZXJhdG9yOjplbWl0VGV4dChOb2RlKiB0ZXh0Tm9kZSwgaW50IHRleHRTdGFydE9mZnNl
dCwgaW50IHRleHRFbmRPZmZzZXQpCit7CisgICAgZW1pdFRleHQodGV4dE5vZGUsIG1fbm9kZS0+
cmVuZGVyZXIoKSwgdGV4dFN0YXJ0T2Zmc2V0LCB0ZXh0RW5kT2Zmc2V0KTsKK30KKwogUGFzc1Jl
ZlB0cjxSYW5nZT4gVGV4dEl0ZXJhdG9yOjpyYW5nZSgpIGNvbnN0CiB7CiAgICAgLy8gdXNlIHRo
ZSBjdXJyZW50IHJ1biBpbmZvcm1hdGlvbiwgaWYgd2UgaGF2ZSBpdApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oIGIvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRv
ci5oCmluZGV4IGJhMzgxYjliZmE0NGE3OWQxMDY0OTk5ZDJjNjA3YmU2OWY3NmE4OTMuLmU5ZjA4
OGNmNmZhZDQzMWFlMWMzM2M3NjdmOGQ0MmNkZjFkOWY5NjYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
ZWRpdGluZy9UZXh0SXRlcmF0b3IuaAorKysgYi9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9y
LmgKQEAgLTEwMyw2ICsxMDMsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaGFuZGxlTm9uVGV4dE5v
ZGUoKTsKICAgICB2b2lkIGhhbmRsZVRleHRCb3goKTsKICAgICB2b2lkIGVtaXRDaGFyYWN0ZXIo
VUNoYXIsIE5vZGUqIHRleHROb2RlLCBOb2RlKiBvZmZzZXRCYXNlTm9kZSwgaW50IHRleHRTdGFy
dE9mZnNldCwgaW50IHRleHRFbmRPZmZzZXQpOworICAgIHZvaWQgZW1pdFRleHQoTm9kZSogdGV4
dE5vZGUsIFJlbmRlck9iamVjdCogcmVuZGVyT2JqZWN0LCBpbnQgdGV4dFN0YXJ0T2Zmc2V0LCBp
bnQgdGV4dEVuZE9mZnNldCk7CiAgICAgdm9pZCBlbWl0VGV4dChOb2RlKiB0ZXh0Tm9kZSwgaW50
IHRleHRTdGFydE9mZnNldCwgaW50IHRleHRFbmRPZmZzZXQpOwogICAgIAogICAgIC8vIEN1cnJl
bnQgcG9zaXRpb24sIG5vdCBuZWNlc3NhcmlseSBvZiB0aGUgdGV4dCBiZWluZyByZXR1cm5lZCwg
YnV0IHBvc2l0aW9uCkBAIC0xNTksNiArMTYwLDggQEAgcHJpdmF0ZToKIAogICAgIC8vIFVzZWQg
d2hlbiB3ZSB3YW50IHRleHRzIGZvciBjb3B5aW5nLCBwYXN0aW5nLCBhbmQgdHJhbnNwb3Npbmcu
CiAgICAgYm9vbCBtX2VtaXRzVGV4dFdpdGhvdXRUcmFuc2NvZGluZzsKKyAgICAvLyBVc2VkIHdo
ZW4gZGVjaWRpbmcgdGV4dCBmcmFnbWVudCBjcmVhdGVkIGJ5IDpmaXJzdC1sZXR0ZXIgc2hvdWxk
IGJlIGxvb2tlZCBpbnRvLgorICAgIGJvb2wgbV9oYW5kbGVkRmlyc3RMZXR0ZXI7CiB9OwogCiAv
LyBJdGVyYXRlcyB0aHJvdWdoIHRoZSBET00gcmFuZ2UsIHJldHVybmluZyBhbGwgdGhlIHRleHQs
IGFuZCAwLWxlbmd0aCBib3VuZGFyaWVzCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57452</attachid>
            <date>2010-05-31 04:36:43 -0700</date>
            <delta_ts>2010-05-31 04:43:06 -0700</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>bug-39863-20100531203641.patch</filename>
            <type>text/plain</type>
            <size>12907</size>
            <attacher name="Yoshiki Hayashi">yhayashi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxYjZiMzQyODNiNTlhZDA2Y2E0NDU0NzZlN2IxNWNjMDY0MGE4MjhmLi4wNDVhMGQ5
MTlmNWJlMmE4Mzg0OTgzYzczMjZhM2RlMTAzNmM4MjBjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTAtMDUtMjggIFlvc2hpa2kgSGF5YXNoaSAgPHloYXlhc2hpQGdvb2dsZS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSXRlcmF0ZSBvdmVy
IDpmaXJzdC1sZXR0ZXIgc28gdGhhdCBpdCB3aWxsIGJlIGluY2x1ZGVkIGluIGlubmVyVGV4dC4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5ODYzCisK
KyAgICAgICAgKiBmYXN0L2RvbS9pbm5lci10ZXh0LWZpcnN0LWxldHRlci1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL2lubmVyLXRleHQtZmlyc3QtbGV0dGVyLmh0bWw6
IEFkZGVkLgorCiAyMDEwLTA1LTMwICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRAd2Via2l0Lm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL2dldENvbXB1dGVkU3R5bGUvZ2V0Q29tcHV0ZWRT
dHlsZS13aXRoLXBzZXVkby1lbGVtZW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzL2dldENvbXB1dGVkU3R5bGUvZ2V0Q29tcHV0ZWRTdHlsZS13aXRoLXBzZXVkby1lbGVtZW50
LWV4cGVjdGVkLnR4dAppbmRleCA0OTU3NmYxODA2Y2UzYjA2YjU0YTFkNjkxNTg0YzM1NDY2MGQw
NjA1Li4wZTdiYzUwZTRhMmVkM2QxOGJiZTQ4YTk0N2ZiMjNjOGY4YzNlNTkxIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9nZXRDb21wdXRlZFN0eWxlL2dldENvbXB1dGVkU3R5bGUt
d2l0aC1wc2V1ZG8tZWxlbWVudC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9j
c3MvZ2V0Q29tcHV0ZWRTdHlsZS9nZXRDb21wdXRlZFN0eWxlLXdpdGgtcHNldWRvLWVsZW1lbnQt
ZXhwZWN0ZWQudHh0CkBAIC0xLDcgKzEsNyBAQAogVGVzdCBmb3IgV2ViS2l0IGJ1ZyAyNDAyMTog
cHNldWRvLWVsZW1lbnQgc3R5bGVzIG5vdCBhY2Nlc3NpYmxlIC8gcmV0cmlldmFibGUgdmlhIERP
TSBtZXRob2RzCiAKIAotb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRp
cGlzaWNpbmcgZWxpdCwgc2VkIGRvIGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1bnQgdXQgbGFib3Jl
IGV0IGRvbG9yZSBtYWduYSBhbGlxdWEuIFV0IGVuaW0gYWQgbWluaW0gdmVuaWFtLCBxdWlzIG5v
c3RydWQgZXhlcmNpdGF0aW9uIHVsbGFtY28gbGFib3JpcyBuaXNpIHV0IGFsaXF1aXAgZXggZWEg
Y29tbW9kbyBjb25zZXF1YXQuIER1aXMgYXV0ZSBpcnVyZSBkb2xvciBpbiByZXByZWhlbmRlcml0
IGluIHZvbHVwdGF0ZSB2ZWxpdCBlc3NlIGNpbGx1bSBkb2xvcmUgZXUgZnVnaWF0IG51bGxhIHBh
cmlhdHVyLiBFeGNlcHRldXIgc2ludCBvY2NhZWNhdCBjdXBpZGF0YXQgbm9uIHByb2lkZW50LCBz
dW50IGluIGN1bHBhIHF1aSBvZmZpY2lhIGRlc2VydW50IG1vbGxpdCBhbmltIGlkIGVzdCBsYWJv
cnVtLgorTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2ljaW5n
IGVsaXQsIHNlZCBkbyBlaXVzbW9kIHRlbXBvciBpbmNpZGlkdW50IHV0IGxhYm9yZSBldCBkb2xv
cmUgbWFnbmEgYWxpcXVhLiBVdCBlbmltIGFkIG1pbmltIHZlbmlhbSwgcXVpcyBub3N0cnVkIGV4
ZXJjaXRhdGlvbiB1bGxhbWNvIGxhYm9yaXMgbmlzaSB1dCBhbGlxdWlwIGV4IGVhIGNvbW1vZG8g
Y29uc2VxdWF0LiBEdWlzIGF1dGUgaXJ1cmUgZG9sb3IgaW4gcmVwcmVoZW5kZXJpdCBpbiB2b2x1
cHRhdGUgdmVsaXQgZXNzZSBjaWxsdW0gZG9sb3JlIGV1IGZ1Z2lhdCBudWxsYSBwYXJpYXR1ci4g
RXhjZXB0ZXVyIHNpbnQgb2NjYWVjYXQgY3VwaWRhdGF0IG5vbiBwcm9pZGVudCwgc3VudCBpbiBj
dWxwYSBxdWkgb2ZmaWNpYSBkZXNlcnVudCBtb2xsaXQgYW5pbSBpZCBlc3QgbGFib3J1bS4KIAog
TWlkZGxlCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2lubmVyLXRleHQtZmly
c3QtbGV0dGVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2lubmVyLXRleHQt
Zmlyc3QtbGV0dGVyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMjdkYWM4NDI0MzJhNjgwNGMz
NDNhZTViOTQyMzNhZDk4M2MxODczCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9kb20vaW5uZXItdGV4dC1maXJzdC1sZXR0ZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjgg
QEAKK1RoaXMgdGVzdHMgYSBsZXR0ZXIgd2l0aCA6Zmlyc3QtbGV0dGVyIGFwcGxpZWQgaXMgcHJl
c2VudCBpbiBpbm5lclRleHQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNT
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkaXZGaXJzdCcpLmlubmVyVGV4dCBpcyBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnZGl2Tm9ybWFsJykuaW5uZXJUZXh0CitQQVNTIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdwRmlyc3QnKS5pbm5lclRleHQgaXMgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ3BOb3JtYWwnKS5pbm5lclRleHQKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Nv
bGxhcHNlZFNwYWNlRmlyc3QnKS5pbm5lclRleHQgaXMgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2NvbGxhcHNlZFNwYWNlTm9ybWFsJykuaW5uZXJUZXh0CitQQVNTIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdjb2xsYXBzZWRTcGFjZVByZUZpcnN0JykuaW5uZXJUZXh0IGlzIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdjb2xsYXBzZWRTcGFjZVByZU5vcm1hbCcpLmlubmVyVGV4dAorUEFTUyBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29sbGFwc2VkU3BhY2VEaXZGaXJzdCcpLmlubmVyVGV4
dCBpcyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29sbGFwc2VkU3BhY2VEaXZOb3JtYWwnKS5p
bm5lclRleHQKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RpdlNwYW5GaXJzdCcpLmlu
bmVyVGV4dCBpcyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGl2U3Bhbk5vcm1hbCcpLmlubmVy
VGV4dAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCitk
aXYKK2RpdgorcHJlCitwcmUKK2FiYworYWJjCisgYWJjCisgYWJjCitmb28KK2FiYworZm9vCith
YmMKKzEyCisxMgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vaW5uZXItdGV4dC1m
aXJzdC1sZXR0ZXIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2lubmVyLXRleHQtZmlyc3Qt
bGV0dGVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzAzN2IxYjExNzYzMzE4MzMzOTg4NzAwZTAyOGFjMmNk
YjhkYzM3ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2lubmVyLXRl
eHQtZmlyc3QtbGV0dGVyLmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPGh0bWw+Cis8aGVhZD4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUu
Y3NzIj4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHN0eWxlPgorLmZpcnN0OmZpcnN0LWxldHRlciB7CisgIGZvbnQtd2VpZ2h0OiBib2xk
OworfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxkaXYgaWQ9ImRpdkZpcnN0IiBjbGFzcz0iZmly
c3QiPmRpdjwvZGl2PgorPGRpdiBpZD0iZGl2Tm9ybWFsIj5kaXY8L2Rpdj4KKzxwcmUgaWQ9InBG
aXJzdCIgY2xhc3M9ImZpcnN0Ij5wcmU8L3ByZT4KKzxwcmUgaWQ9InBOb3JtYWwiPnByZTwvcHJl
PgorPGRpdiBpZD0iY29sbGFwc2VkU3BhY2VGaXJzdCI+PHNwYW4+IDwvc3Bhbj48ZGl2IGNsYXNz
PSJmaXJzdCI+YWJjPC9kaXY+PC9kaXY+Cis8ZGl2IGlkPSJjb2xsYXBzZWRTcGFjZU5vcm1hbCI+
PHNwYW4+IDwvc3Bhbj48ZGl2PmFiYzwvZGl2PjwvZGl2PgorPGRpdiBpZD0iY29sbGFwc2VkU3Bh
Y2VQcmVGaXJzdCI+PHNwYW4+IDwvc3Bhbj48cHJlIGNsYXNzPSJmaXJzdCI+YWJjPC9wcmU+PC9k
aXY+Cis8ZGl2IGlkPSJjb2xsYXBzZWRTcGFjZVByZU5vcm1hbCI+PHNwYW4+IDwvc3Bhbj48cHJl
PmFiYzwvcHJlPjwvZGl2PgorPGRpdiBpZD0iY29sbGFwc2VkU3BhY2VEaXZGaXJzdCI+PHNwYW4+
Zm9vPC9zcGFuPjxzcGFuPiA8L3NwYW4+PGRpdiBjbGFzcz0iZmlyc3QiPmFiYzwvZGl2PjwvZGl2
PgorPGRpdiBpZD0iY29sbGFwc2VkU3BhY2VEaXZOb3JtYWwiPjxzcGFuPmZvbzwvc3Bhbj48c3Bh
bj4gPC9zcGFuPjxkaXY+YWJjPC9kaXY+PC9kaXY+Cis8ZGl2IGlkPSJkaXZTcGFuRmlyc3QiIGNs
YXNzPSJmaXJzdCI+PHNwYW4gaWQ9ImYxIj4xPC9zcGFuPjxzcGFuIGlkPSJmMiI+Mjwvc3Bhbj48
L2Rpdj4KKzxkaXYgaWQ9ImRpdlNwYW5Ob3JtYWwiPjxzcGFuIGlkPSJuMSI+MTwvc3Bhbj48c3Bh
biBpZD0ibjIiPjI8L3NwYW4+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRoaXMgdGVz
dHMgYSBsZXR0ZXIgd2l0aCA6Zmlyc3QtbGV0dGVyIGFwcGxpZWQgaXMgcHJlc2VudCBpbiBpbm5l
clRleHQuIik7CitzaG91bGRCZSgiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RpdkZpcnN0Jyku
aW5uZXJUZXh0IiwgImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkaXZOb3JtYWwnKS5pbm5lclRl
eHQiKTsKK3Nob3VsZEJlKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncEZpcnN0JykuaW5uZXJU
ZXh0IiwgImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwTm9ybWFsJykuaW5uZXJUZXh0Iik7Cit2
YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKK3Nob3VsZEJlKCJkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnY29sbGFwc2VkU3BhY2VGaXJzdCcpLmlubmVyVGV4dCIsICJkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnY29sbGFwc2VkU3BhY2VOb3JtYWwnKS5pbm5lclRleHQiKTsKK3Nob3VsZEJl
KCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29sbGFwc2VkU3BhY2VQcmVGaXJzdCcpLmlubmVy
VGV4dCIsICJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29sbGFwc2VkU3BhY2VQcmVOb3JtYWwn
KS5pbm5lclRleHQiKTsKK3Nob3VsZEJlKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29sbGFw
c2VkU3BhY2VEaXZGaXJzdCcpLmlubmVyVGV4dCIsICJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
Y29sbGFwc2VkU3BhY2VEaXZOb3JtYWwnKS5pbm5lclRleHQiKTsKK3Nob3VsZEJlKCJkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnZGl2U3BhbkZpcnN0JykuaW5uZXJUZXh0IiwgImRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdkaXZTcGFuTm9ybWFsJykuaW5uZXJUZXh0Iik7Cis8L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggNTU3YjY1N2NmMDJkYTc5MGQ0NTdkMTJlMmExMmI3NGQwNjVlYTFlNi4u
NTNlY2JhYmNmMjY5Y2Y1MWQ5ZTExYzI1MDgyYzUwMTA0MDczYzU1YiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAor
MjAxMC0wNS0yOCAgWW9zaGlraSBIYXlhc2hpICA8eWhheWFzaGlAZ29vZ2xlLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJdGVyYXRlIG92ZXIg
OmZpcnN0LWxldHRlciBzbyB0aGF0IGl0IHdpbGwgYmUgaW5jbHVkZWQgaW4gaW5uZXJUZXh0Lgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk4NjMKKwor
ICAgICAgICBUZXN0OiBmYXN0L2RvbS9pbm5lci10ZXh0LWZpcnN0LWxldHRlci5odG1sCisKKyAg
ICAgICAgKiBlZGl0aW5nL1RleHRJdGVyYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
SXRlcmF0b3I6OlRleHRJdGVyYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6
OmFkdmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Tm9k
ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHRCb3gpOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjplbWl0VGV4dCk6CisgICAgICAgICogZWRpdGlu
Zy9UZXh0SXRlcmF0b3IuaDoKKwogMjAxMC0wNS0zMCAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KZGlmZiAtLWdpdCBhL1dl
YkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwIGIvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVy
YXRvci5jcHAKaW5kZXggZjNiZDlkZjZiOWY5NWJmMzBkZGEyYTMwZTcyNmQ3MzVmMThmOGIxZi4u
ODk5NmRmYzg0YTUxMTk5ODNlNGE3NzdkNzllYmY5ODQyNjIyMDliZCAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKKysrIGIvV2ViQ29yZS9lZGl0aW5nL1RleHRJ
dGVyYXRvci5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJSZW5kZXJUYWJsZUNlbGwu
aCIKICNpbmNsdWRlICJSZW5kZXJUYWJsZVJvdy5oIgogI2luY2x1ZGUgIlJlbmRlclRleHRDb250
cm9sLmgiCisjaW5jbHVkZSAiUmVuZGVyVGV4dEZyYWdtZW50LmgiCiAjaW5jbHVkZSAiVmlzaWJs
ZVBvc2l0aW9uLmgiCiAjaW5jbHVkZSAidmlzaWJsZV91bml0cy5oIgogCkBAIC0yNTcsNiArMjU4
LDcgQEAgVGV4dEl0ZXJhdG9yOjpUZXh0SXRlcmF0b3IoKQogICAgICwgbV9lbWl0c0NoYXJhY3Rl
cnNCZXR3ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucyhmYWxzZSkKICAgICAsIG1fZW50ZXJzVGV4dENv
bnRyb2xzKGZhbHNlKQogICAgICwgbV9lbWl0c1RleHRXaXRob3V0VHJhbnNjb2RpbmcoZmFsc2Up
CisgICAgLCBtX2hhbmRsZWRGaXJzdExldHRlcihmYWxzZSkKIHsKIH0KIApAQCAtMjcxLDYgKzI3
Myw3IEBAIFRleHRJdGVyYXRvcjo6VGV4dEl0ZXJhdG9yKGNvbnN0IFJhbmdlKiByLCBUZXh0SXRl
cmF0b3JCZWhhdmlvciBiZWhhdmlvcikKICAgICAsIG1fZW1pdHNDaGFyYWN0ZXJzQmV0d2VlbkFs
bFZpc2libGVQb3NpdGlvbnMoYmVoYXZpb3IgJiBUZXh0SXRlcmF0b3JFbWl0c0NoYXJhY3RlcnNC
ZXR3ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucykKICAgICAsIG1fZW50ZXJzVGV4dENvbnRyb2xzKGJl
aGF2aW9yICYgVGV4dEl0ZXJhdG9yRW50ZXJzVGV4dENvbnRyb2xzKQogICAgICwgbV9lbWl0c1Rl
eHRXaXRob3V0VHJhbnNjb2RpbmcoYmVoYXZpb3IgJiBUZXh0SXRlcmF0b3JFbWl0c1RleHRzV2l0
aG91dFRyYW5zY29kaW5nKQorICAgICwgbV9oYW5kbGVkRmlyc3RMZXR0ZXIoZmFsc2UpCiB7CiAg
ICAgaWYgKCFyKQogICAgICAgICByZXR1cm47CkBAIC0zNjksOSArMzcyLDExIEBAIHZvaWQgVGV4
dEl0ZXJhdG9yOjphZHZhbmNlKCkKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIGhh
bmRsZSBjdXJyZW50IG5vZGUgYWNjb3JkaW5nIHRvIGl0cyB0eXBlCiAgICAgICAgICAgICBpZiAo
IW1faGFuZGxlZE5vZGUpIHsKLSAgICAgICAgICAgICAgICBpZiAocmVuZGVyZXItPmlzVGV4dCgp
ICYmIG1fbm9kZS0+bm9kZVR5cGUoKSA9PSBOb2RlOjpURVhUX05PREUpIC8vIEZJWE1FOiBXaGF0
IGFib3V0IENEQVRBX1NFQ1RJT05fTk9ERT8KKyAgICAgICAgICAgICAgICBpZiAocmVuZGVyZXIt
PmlzVGV4dCgpICYmIG1fbm9kZS0+bm9kZVR5cGUoKSA9PSBOb2RlOjpURVhUX05PREUpIHsgLy8g
RklYTUU6IFdoYXQgYWJvdXQgQ0RBVEFfU0VDVElPTl9OT0RFPwogICAgICAgICAgICAgICAgICAg
ICBtX2hhbmRsZWROb2RlID0gaGFuZGxlVGV4dE5vZGUoKTsKLSAgICAgICAgICAgICAgICBlbHNl
IGlmIChyZW5kZXJlciAmJiAocmVuZGVyZXItPmlzSW1hZ2UoKSB8fCByZW5kZXJlci0+aXNXaWRn
ZXQoKSB8fAorICAgICAgICAgICAgICAgICAgICBpZiAobV9oYW5kbGVkTm9kZSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIG1faGFuZGxlZEZpcnN0TGV0dGVyID0gZmFsc2U7CisgICAgICAgICAg
ICAgICAgfSBlbHNlIGlmIChyZW5kZXJlciAmJiAocmVuZGVyZXItPmlzSW1hZ2UoKSB8fCByZW5k
ZXJlci0+aXNXaWRnZXQoKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgIChyZW5kZXJlci0+
bm9kZSgpICYmIHJlbmRlcmVyLT5ub2RlKCktPmlzRWxlbWVudE5vZGUoKSAmJgogICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxFbGVtZW50Kj4ocmVuZGVyZXItPm5vZGUoKSkt
PmlzRm9ybUNvbnRyb2xFbGVtZW50KCkpKSkKICAgICAgICAgICAgICAgICAgICAgbV9oYW5kbGVk
Tm9kZSA9IGhhbmRsZVJlcGxhY2VkRWxlbWVudCgpOwpAQCAtNDM1LDYgKzQ0MCwyMSBAQCBib29s
IFRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dE5vZGUoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICBSZW5kZXJUZXh0KiByZW5kZXJlciA9IHRvUmVuZGVyVGV4dChtX25vZGUtPnJlbmRlcmVy
KCkpOworICAgIGlmICghbV9oYW5kbGVkRmlyc3RMZXR0ZXIgJiYgcmVuZGVyZXItPmlzVGV4dEZy
YWdtZW50KCkpIHsKKyAgICAgICAgUmVuZGVyVGV4dEZyYWdtZW50KiBmcmFnbWVudCA9IHN0YXRp
Y19jYXN0PFJlbmRlclRleHRGcmFnbWVudCo+KHJlbmRlcmVyKTsKKyAgICAgICAgaWYgKGZyYWdt
ZW50LT5maXJzdExldHRlcigpICYmIGZyYWdtZW50LT5maXJzdExldHRlcigpLT5maXJzdENoaWxk
KCkgJiYgZnJhZ21lbnQtPmZpcnN0TGV0dGVyKCktPmZpcnN0Q2hpbGQoKS0+aXNUZXh0KCkgJiYg
dG9SZW5kZXJUZXh0KGZyYWdtZW50LT5maXJzdExldHRlcigpLT5maXJzdENoaWxkKCkpLT5pc1Rl
eHRGcmFnbWVudCgpKSB7CisgICAgICAgICAgICBSZW5kZXJUZXh0RnJhZ21lbnQqIGZpcnN0TGV0
dGVyID0gc3RhdGljX2Nhc3Q8UmVuZGVyVGV4dEZyYWdtZW50Kj4oZnJhZ21lbnQtPmZpcnN0TGV0
dGVyKCktPmZpcnN0Q2hpbGQoKSk7CisgICAgICAgICAgICBpZiAoZmlyc3RMZXR0ZXItPnN0eWxl
KCktPnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFKSB7CisgICAgICAgICAgICAgICAgaWYgKG1fbGFz
dFRleHROb2RlRW5kZWRXaXRoQ29sbGFwc2VkU3BhY2UgJiYgKCFmaXJzdExldHRlci0+c3R5bGUo
KS0+Y29sbGFwc2VXaGl0ZVNwYWNlKCkgfHwgKCFpc0NvbGxhcHNpYmxlV2hpdGVzcGFjZShtX2xh
c3RDaGFyYWN0ZXIpICYmIG1fbGFzdENoYXJhY3RlcikpKSB7CisgICAgICAgICAgICAgICAgICAg
IGVtaXRDaGFyYWN0ZXIoJyAnLCBtX25vZGUsIDAsIG1fb2Zmc2V0LCBtX29mZnNldCk7CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgZW1pdFRleHQobV9ub2RlLCBmaXJzdExldHRlciwgMCwgMSk7CisgICAgICAgICAg
ICAgICAgbV9oYW5kbGVkRmlyc3RMZXR0ZXIgPSB0cnVlOworICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KICAgICBpZiAocmVuZGVy
ZXItPnN0eWxlKCktPnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIApAQCAtNDkxLDggKzUxMSw3IEBAIHZvaWQgVGV4dEl0ZXJhdG9yOjpoYW5k
bGVUZXh0Qm94KCkKIAogICAgICAgICAvLyBDaGVjayBmb3IgY29sbGFwc2VkIHNwYWNlIGF0IHRo
ZSBzdGFydCBvZiB0aGlzIHJ1bi4KICAgICAgICAgSW5saW5lVGV4dEJveCogZmlyc3RUZXh0Qm94
ID0gcmVuZGVyZXItPmNvbnRhaW5zUmV2ZXJzZWRUZXh0KCkgPyBtX3NvcnRlZFRleHRCb3hlc1sw
XSA6IHJlbmRlcmVyLT5maXJzdFRleHRCb3goKTsKLSAgICAgICAgYm9vbCBuZWVkU3BhY2UgPSBt
X2xhc3RUZXh0Tm9kZUVuZGVkV2l0aENvbGxhcHNlZFNwYWNlCi0gICAgICAgICAgICB8fCAobV90
ZXh0Qm94ID09IGZpcnN0VGV4dEJveCAmJiB0ZXh0Qm94U3RhcnQgPT0gcnVuU3RhcnQgJiYgcnVu
U3RhcnQgPiAwKTsKKyAgICAgICAgYm9vbCBuZWVkU3BhY2UgPSAhbV9oYW5kbGVkRmlyc3RMZXR0
ZXIgJiYgKG1fbGFzdFRleHROb2RlRW5kZWRXaXRoQ29sbGFwc2VkU3BhY2UgfHwgKG1fdGV4dEJv
eCA9PSBmaXJzdFRleHRCb3ggJiYgdGV4dEJveFN0YXJ0ID09IHJ1blN0YXJ0ICYmIHJ1blN0YXJ0
ID4gMCkpOwogICAgICAgICBpZiAobmVlZFNwYWNlICYmICFpc0NvbGxhcHNpYmxlV2hpdGVzcGFj
ZShtX2xhc3RDaGFyYWN0ZXIpICYmIG1fbGFzdENoYXJhY3RlcikgewogICAgICAgICAgICAgaWYg
KG1fbGFzdFRleHROb2RlID09IG1fbm9kZSAmJiBydW5TdGFydCA+IDAgJiYgc3RyW3J1blN0YXJ0
IC0gMV0gPT0gJyAnKSB7CiAgICAgICAgICAgICAgICAgdW5zaWduZWQgc3BhY2VSdW5TdGFydCA9
IHJ1blN0YXJ0IC0gMTsKQEAgLTg4OCw5ICs5MDcsOSBAQCB2b2lkIFRleHRJdGVyYXRvcjo6ZW1p
dENoYXJhY3RlcihVQ2hhciBjLCBOb2RlKiB0ZXh0Tm9kZSwgTm9kZSogb2Zmc2V0QmFzZU5vZGUs
CiAgICAgbV9sYXN0Q2hhcmFjdGVyID0gYzsKIH0KIAotdm9pZCBUZXh0SXRlcmF0b3I6OmVtaXRU
ZXh0KE5vZGUqIHRleHROb2RlLCBpbnQgdGV4dFN0YXJ0T2Zmc2V0LCBpbnQgdGV4dEVuZE9mZnNl
dCkKK3ZvaWQgVGV4dEl0ZXJhdG9yOjplbWl0VGV4dChOb2RlKiB0ZXh0Tm9kZSwgUmVuZGVyT2Jq
ZWN0KiByZW5kZXJPYmplY3QsIGludCB0ZXh0U3RhcnRPZmZzZXQsIGludCB0ZXh0RW5kT2Zmc2V0
KQogewotICAgIFJlbmRlclRleHQqIHJlbmRlcmVyID0gdG9SZW5kZXJUZXh0KG1fbm9kZS0+cmVu
ZGVyZXIoKSk7CisgICAgUmVuZGVyVGV4dCogcmVuZGVyZXIgPSB0b1JlbmRlclRleHQocmVuZGVy
T2JqZWN0KTsKICAgICBtX3RleHQgPSBtX2VtaXRzVGV4dFdpdGhvdXRUcmFuc2NvZGluZyA/IHJl
bmRlcmVyLT50ZXh0V2l0aG91dFRyYW5zY29kaW5nKCkgOiByZW5kZXJlci0+dGV4dCgpOwogICAg
IEFTU0VSVChtX3RleHQuY2hhcmFjdGVycygpKTsKIApAQCAtOTA2LDYgKzkyNSwxMSBAQCB2b2lk
IFRleHRJdGVyYXRvcjo6ZW1pdFRleHQoTm9kZSogdGV4dE5vZGUsIGludCB0ZXh0U3RhcnRPZmZz
ZXQsIGludCB0ZXh0RW5kT2ZmcwogICAgIG1faGFzRW1pdHRlZCA9IHRydWU7CiB9CiAKK3ZvaWQg
VGV4dEl0ZXJhdG9yOjplbWl0VGV4dChOb2RlKiB0ZXh0Tm9kZSwgaW50IHRleHRTdGFydE9mZnNl
dCwgaW50IHRleHRFbmRPZmZzZXQpCit7CisgICAgZW1pdFRleHQodGV4dE5vZGUsIG1fbm9kZS0+
cmVuZGVyZXIoKSwgdGV4dFN0YXJ0T2Zmc2V0LCB0ZXh0RW5kT2Zmc2V0KTsKK30KKwogUGFzc1Jl
ZlB0cjxSYW5nZT4gVGV4dEl0ZXJhdG9yOjpyYW5nZSgpIGNvbnN0CiB7CiAgICAgLy8gdXNlIHRo
ZSBjdXJyZW50IHJ1biBpbmZvcm1hdGlvbiwgaWYgd2UgaGF2ZSBpdApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oIGIvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRv
ci5oCmluZGV4IGJhMzgxYjliZmE0NGE3OWQxMDY0OTk5ZDJjNjA3YmU2OWY3NmE4OTMuLmU5ZjA4
OGNmNmZhZDQzMWFlMWMzM2M3NjdmOGQ0MmNkZjFkOWY5NjYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
ZWRpdGluZy9UZXh0SXRlcmF0b3IuaAorKysgYi9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9y
LmgKQEAgLTEwMyw2ICsxMDMsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaGFuZGxlTm9uVGV4dE5v
ZGUoKTsKICAgICB2b2lkIGhhbmRsZVRleHRCb3goKTsKICAgICB2b2lkIGVtaXRDaGFyYWN0ZXIo
VUNoYXIsIE5vZGUqIHRleHROb2RlLCBOb2RlKiBvZmZzZXRCYXNlTm9kZSwgaW50IHRleHRTdGFy
dE9mZnNldCwgaW50IHRleHRFbmRPZmZzZXQpOworICAgIHZvaWQgZW1pdFRleHQoTm9kZSogdGV4
dE5vZGUsIFJlbmRlck9iamVjdCogcmVuZGVyT2JqZWN0LCBpbnQgdGV4dFN0YXJ0T2Zmc2V0LCBp
bnQgdGV4dEVuZE9mZnNldCk7CiAgICAgdm9pZCBlbWl0VGV4dChOb2RlKiB0ZXh0Tm9kZSwgaW50
IHRleHRTdGFydE9mZnNldCwgaW50IHRleHRFbmRPZmZzZXQpOwogICAgIAogICAgIC8vIEN1cnJl
bnQgcG9zaXRpb24sIG5vdCBuZWNlc3NhcmlseSBvZiB0aGUgdGV4dCBiZWluZyByZXR1cm5lZCwg
YnV0IHBvc2l0aW9uCkBAIC0xNTksNiArMTYwLDggQEAgcHJpdmF0ZToKIAogICAgIC8vIFVzZWQg
d2hlbiB3ZSB3YW50IHRleHRzIGZvciBjb3B5aW5nLCBwYXN0aW5nLCBhbmQgdHJhbnNwb3Npbmcu
CiAgICAgYm9vbCBtX2VtaXRzVGV4dFdpdGhvdXRUcmFuc2NvZGluZzsKKyAgICAvLyBVc2VkIHdo
ZW4gZGVjaWRpbmcgdGV4dCBmcmFnbWVudCBjcmVhdGVkIGJ5IDpmaXJzdC1sZXR0ZXIgc2hvdWxk
IGJlIGxvb2tlZCBpbnRvLgorICAgIGJvb2wgbV9oYW5kbGVkRmlyc3RMZXR0ZXI7CiB9OwogCiAv
LyBJdGVyYXRlcyB0aHJvdWdoIHRoZSBET00gcmFuZ2UsIHJldHVybmluZyBhbGwgdGhlIHRleHQs
IGFuZCAwLWxlbmd0aCBib3VuZGFyaWVzCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57453</attachid>
            <date>2010-05-31 04:43:06 -0700</date>
            <delta_ts>2010-05-31 21:21:10 -0700</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>diff</filename>
            <type>text/plain</type>
            <size>17607</size>
            <attacher name="Yoshiki Hayashi">yhayashi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxYjZiMzQyLi4wNDVhMGQ5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMDUt
MjggIFlvc2hpa2kgSGF5YXNoaSAgPHloYXlhc2hpQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSXRlcmF0ZSBvdmVyIDpmaXJzdC1s
ZXR0ZXIgc28gdGhhdCBpdCB3aWxsIGJlIGluY2x1ZGVkIGluIGlubmVyVGV4dC4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5ODYzCisKKyAgICAgICAg
KiBmYXN0L2RvbS9pbm5lci10ZXh0LWZpcnN0LWxldHRlci1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvZG9tL2lubmVyLXRleHQtZmlyc3QtbGV0dGVyLmh0bWw6IEFkZGVkLgor
CiAyMDEwLTA1LTMwICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvY3NzL2dldENvbXB1dGVkU3R5bGUvZ2V0Q29tcHV0ZWRTdHlsZS13aXRo
LXBzZXVkby1lbGVtZW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL2dldENv
bXB1dGVkU3R5bGUvZ2V0Q29tcHV0ZWRTdHlsZS13aXRoLXBzZXVkby1lbGVtZW50LWV4cGVjdGVk
LnR4dAppbmRleCA0OTU3NmYxLi4wZTdiYzUwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0
L2Nzcy9nZXRDb21wdXRlZFN0eWxlL2dldENvbXB1dGVkU3R5bGUtd2l0aC1wc2V1ZG8tZWxlbWVu
dC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvZ2V0Q29tcHV0ZWRTdHls
ZS9nZXRDb21wdXRlZFN0eWxlLXdpdGgtcHNldWRvLWVsZW1lbnQtZXhwZWN0ZWQudHh0CkBAIC0x
LDcgKzEsNyBAQAogVGVzdCBmb3IgV2ViS2l0IGJ1ZyAyNDAyMTogcHNldWRvLWVsZW1lbnQgc3R5
bGVzIG5vdCBhY2Nlc3NpYmxlIC8gcmV0cmlldmFibGUgdmlhIERPTSBtZXRob2RzCiAKIAotb3Jl
bSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRpcGlzaWNpbmcgZWxpdCwgc2Vk
IGRvIGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1bnQgdXQgbGFib3JlIGV0IGRvbG9yZSBtYWduYSBh
bGlxdWEuIFV0IGVuaW0gYWQgbWluaW0gdmVuaWFtLCBxdWlzIG5vc3RydWQgZXhlcmNpdGF0aW9u
IHVsbGFtY28gbGFib3JpcyBuaXNpIHV0IGFsaXF1aXAgZXggZWEgY29tbW9kbyBjb25zZXF1YXQu
IER1aXMgYXV0ZSBpcnVyZSBkb2xvciBpbiByZXByZWhlbmRlcml0IGluIHZvbHVwdGF0ZSB2ZWxp
dCBlc3NlIGNpbGx1bSBkb2xvcmUgZXUgZnVnaWF0IG51bGxhIHBhcmlhdHVyLiBFeGNlcHRldXIg
c2ludCBvY2NhZWNhdCBjdXBpZGF0YXQgbm9uIHByb2lkZW50LCBzdW50IGluIGN1bHBhIHF1aSBv
ZmZpY2lhIGRlc2VydW50IG1vbGxpdCBhbmltIGlkIGVzdCBsYWJvcnVtLgorTG9yZW0gaXBzdW0g
ZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2ljaW5nIGVsaXQsIHNlZCBkbyBlaXVz
bW9kIHRlbXBvciBpbmNpZGlkdW50IHV0IGxhYm9yZSBldCBkb2xvcmUgbWFnbmEgYWxpcXVhLiBV
dCBlbmltIGFkIG1pbmltIHZlbmlhbSwgcXVpcyBub3N0cnVkIGV4ZXJjaXRhdGlvbiB1bGxhbWNv
IGxhYm9yaXMgbmlzaSB1dCBhbGlxdWlwIGV4IGVhIGNvbW1vZG8gY29uc2VxdWF0LiBEdWlzIGF1
dGUgaXJ1cmUgZG9sb3IgaW4gcmVwcmVoZW5kZXJpdCBpbiB2b2x1cHRhdGUgdmVsaXQgZXNzZSBj
aWxsdW0gZG9sb3JlIGV1IGZ1Z2lhdCBudWxsYSBwYXJpYXR1ci4gRXhjZXB0ZXVyIHNpbnQgb2Nj
YWVjYXQgY3VwaWRhdGF0IG5vbiBwcm9pZGVudCwgc3VudCBpbiBjdWxwYSBxdWkgb2ZmaWNpYSBk
ZXNlcnVudCBtb2xsaXQgYW5pbSBpZCBlc3QgbGFib3J1bS4KIAogTWlkZGxlCiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2lubmVyLXRleHQtZmlyc3QtbGV0dGVyLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2lubmVyLXRleHQtZmlyc3QtbGV0dGVyLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZTVkYjA4Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vaW5uZXItdGV4dC1maXJzdC1sZXR0
ZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNDMgQEAKK1RoaXMgdGVzdHMgYSBsZXR0ZXIgd2l0
aCA6Zmlyc3QtbGV0dGVyIGFwcGxpZWQgaXMgcHJlc2VudCBpbiBpbm5lclRleHQuCisKK09uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdk
aXZGaXJzdCcpLmlubmVyVGV4dCBpcyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGl2Tm9ybWFs
JykuaW5uZXJUZXh0CitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwRmlyc3QnKS5pbm5l
clRleHQgaXMgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BOb3JtYWwnKS5pbm5lclRleHQKK1BB
U1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbGxhcHNlZFNwYWNlRmlyc3QnKS5pbm5lclRl
eHQgaXMgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbGxhcHNlZFNwYWNlTm9ybWFsJykuaW5u
ZXJUZXh0CitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb2xsYXBzZWRTcGFjZVByZUZp
cnN0JykuaW5uZXJUZXh0IGlzIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb2xsYXBzZWRTcGFj
ZVByZU5vcm1hbCcpLmlubmVyVGV4dAorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29s
bGFwc2VkU3BhY2VEaXZGaXJzdCcpLmlubmVyVGV4dCBpcyBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnY29sbGFwc2VkU3BhY2VEaXZOb3JtYWwnKS5pbm5lclRleHQKK1BBU1MgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2NvbGxhcHNlZFNwYWNlQ29sbGFwc2VkRGl2Rmlyc3QnKS5pbm5lclRleHQg
aXMgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbGxhcHNlZFNwYWNlQ29sbGFwc2VkRGl2Tm9y
bWFsJykuaW5uZXJUZXh0CitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb2xsYXBzZWRT
cGFjZUNvbGxhcHNlZERpdkZpcnN0JykuaW5uZXJUZXh0IGlzICdmb29cbmFiY1xuJworUEFTUyBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29sbGFwc2VkU3BhY2VQdW5jdERpdkZpcnN0JykuaW5u
ZXJUZXh0IGlzIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb2xsYXBzZWRTcGFjZVB1bmN0RGl2
Tm9ybWFsJykuaW5uZXJUZXh0CitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb2xsYXBz
ZWRTcGFjZVB1bmN0RGl2Rmlyc3QnKS5pbm5lclRleHQgaXMgJ2Zvb1xufCBhYmNcbicKK1BBU1Mg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RpdlNwYW5GaXJzdCcpLmlubmVyVGV4dCBpcyBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnZGl2U3Bhbk5vcm1hbCcpLmlubmVyVGV4dAorUEFTUyBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnaW52aXNpYmxlUHJlJykuaW5uZXJUZXh0IGlzICcnCitQQVNT
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbnZpc2libGVQcmVGaXJzdCcpLmlubmVyVGV4dCBp
cyAndCcKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
ZGl2CitkaXYKK3ByZQorcHJlCithYmMKK2FiYworIGFiYworIGFiYworZm9vCithYmMKK2Zvbwor
YWJjCitmb28KK2FiYworZm9vCithYmMKK2ZvbworfCBhYmMKK2ZvbworfCBhYmMKKzEyCisxMgor
dApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vaW5uZXItdGV4dC1maXJzdC1sZXR0
ZXIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2lubmVyLXRleHQtZmlyc3QtbGV0dGVyLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTk1MDRiOAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2lubmVyLXRleHQtZmlyc3QtbGV0dGVyLmh0
bWwKQEAgLTAsMCArMSw1NiBAQAorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3Jj
PSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHN0eWxlPgorLmZp
cnN0OmZpcnN0LWxldHRlciB7CisgIGZvbnQtd2VpZ2h0OiBib2xkOworICB2aXNpYmlsaXR5OiB2
aXNpYmxlOworfQorLmludmlzaWJsZSB7CisgIHZpc2liaWxpdHk6IGhpZGRlbjsKK30KKzwvc3R5
bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8ZGl2IGlkPSJkaXZGaXJzdCIgY2xhc3M9ImZpcnN0Ij5kaXY8L2Rp
dj4KKzxkaXYgaWQ9ImRpdk5vcm1hbCI+ZGl2PC9kaXY+Cis8cHJlIGlkPSJwRmlyc3QiIGNsYXNz
PSJmaXJzdCI+cHJlPC9wcmU+Cis8cHJlIGlkPSJwTm9ybWFsIj5wcmU8L3ByZT4KKzxkaXYgaWQ9
ImNvbGxhcHNlZFNwYWNlRmlyc3QiPjxzcGFuPiA8L3NwYW4+PGRpdiBjbGFzcz0iZmlyc3QiPmFi
YzwvZGl2PjwvZGl2PgorPGRpdiBpZD0iY29sbGFwc2VkU3BhY2VOb3JtYWwiPjxzcGFuPiA8L3Nw
YW4+PGRpdj5hYmM8L2Rpdj48L2Rpdj4KKzxkaXYgaWQ9ImNvbGxhcHNlZFNwYWNlUHJlRmlyc3Qi
PjxzcGFuPiA8L3NwYW4+PHByZSBjbGFzcz0iZmlyc3QiPmFiYzwvcHJlPjwvZGl2PgorPGRpdiBp
ZD0iY29sbGFwc2VkU3BhY2VQcmVOb3JtYWwiPjxzcGFuPiA8L3NwYW4+PHByZT5hYmM8L3ByZT48
L2Rpdj4KKzxkaXYgaWQ9ImNvbGxhcHNlZFNwYWNlRGl2Rmlyc3QiPjxzcGFuPmZvbzwvc3Bhbj48
c3Bhbj4gPC9zcGFuPjxkaXYgY2xhc3M9ImZpcnN0Ij5hYmM8L2Rpdj48L2Rpdj4KKzxkaXYgaWQ9
ImNvbGxhcHNlZFNwYWNlRGl2Tm9ybWFsIj48c3Bhbj5mb288L3NwYW4+PHNwYW4+IDwvc3Bhbj48
ZGl2PmFiYzwvZGl2PjwvZGl2PgorPGRpdiBpZD0iY29sbGFwc2VkU3BhY2VDb2xsYXBzZWREaXZG
aXJzdCI+PHNwYW4+Zm9vPC9zcGFuPjxzcGFuPiA8L3NwYW4+PGRpdiBjbGFzcz0iZmlyc3QiPiAg
YWJjPC9kaXY+PC9kaXY+Cis8ZGl2IGlkPSJjb2xsYXBzZWRTcGFjZUNvbGxhcHNlZERpdk5vcm1h
bCI+PHNwYW4+Zm9vPC9zcGFuPjxzcGFuPiA8L3NwYW4+PGRpdj4gIGFiYzwvZGl2PjwvZGl2Pgor
PGRpdiBpZD0iY29sbGFwc2VkU3BhY2VQdW5jdERpdkZpcnN0Ij48c3Bhbj5mb288L3NwYW4+PHNw
YW4+IDwvc3Bhbj48ZGl2IGNsYXNzPSJmaXJzdCI+fCAgCithYmM8L2Rpdj48L2Rpdj4KKzxkaXYg
aWQ9ImNvbGxhcHNlZFNwYWNlUHVuY3REaXZOb3JtYWwiPjxzcGFuPmZvbzwvc3Bhbj48c3Bhbj4g
PC9zcGFuPjxkaXY+fCAgCithYmM8L2Rpdj48L2Rpdj4KKzxkaXYgaWQ9ImRpdlNwYW5GaXJzdCIg
Y2xhc3M9ImZpcnN0Ij48c3BhbiBpZD0iZjEiPjE8L3NwYW4+PHNwYW4gaWQ9ImYyIj4yPC9zcGFu
PjwvZGl2PgorPGRpdiBpZD0iZGl2U3Bhbk5vcm1hbCI+PHNwYW4gaWQ9Im4xIj4xPC9zcGFuPjxz
cGFuIGlkPSJuMiI+Mjwvc3Bhbj48L2Rpdj4KKzxkaXYgaWQ9ImludmlzaWJsZVByZSI+PHByZSBj
bGFzcz0iaW52aXNpYmxlIj50ZXN0PC9wcmU+PC9kaXY+Cis8ZGl2IGlkPSJpbnZpc2libGVQcmVG
aXJzdCI+PHByZSBjbGFzcz0iaW52aXNpYmxlIGZpcnN0Ij50ZXN0PC9wcmU+PC9kaXY+Cis8c2Ny
aXB0PgorZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgYSBsZXR0ZXIgd2l0aCA6Zmlyc3QtbGV0dGVy
IGFwcGxpZWQgaXMgcHJlc2VudCBpbiBpbm5lclRleHQuIik7CitzaG91bGRCZSgiZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2RpdkZpcnN0JykuaW5uZXJUZXh0IiwgImRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdkaXZOb3JtYWwnKS5pbm5lclRleHQiKTsKK3Nob3VsZEJlKCJkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgncEZpcnN0JykuaW5uZXJUZXh0IiwgImRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdwTm9ybWFsJykuaW5uZXJUZXh0Iik7CitzaG91bGRCZSgiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2NvbGxhcHNlZFNwYWNlRmlyc3QnKS5pbm5lclRleHQiLCAiZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2NvbGxhcHNlZFNwYWNlTm9ybWFsJykuaW5uZXJUZXh0Iik7CitzaG91bGRCZSgiZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbGxhcHNlZFNwYWNlUHJlRmlyc3QnKS5pbm5lclRleHQi
LCAiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbGxhcHNlZFNwYWNlUHJlTm9ybWFsJykuaW5u
ZXJUZXh0Iik7CitzaG91bGRCZSgiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbGxhcHNlZFNw
YWNlRGl2Rmlyc3QnKS5pbm5lclRleHQiLCAiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbGxh
cHNlZFNwYWNlRGl2Tm9ybWFsJykuaW5uZXJUZXh0Iik7CitzaG91bGRCZSgiZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2NvbGxhcHNlZFNwYWNlQ29sbGFwc2VkRGl2Rmlyc3QnKS5pbm5lclRleHQi
LCAiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbGxhcHNlZFNwYWNlQ29sbGFwc2VkRGl2Tm9y
bWFsJykuaW5uZXJUZXh0Iik7CitzaG91bGRCZSgiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Nv
bGxhcHNlZFNwYWNlQ29sbGFwc2VkRGl2Rmlyc3QnKS5pbm5lclRleHQiLCAiJ2Zvb1xcbmFiY1xc
biciKTsKK3Nob3VsZEJlKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29sbGFwc2VkU3BhY2VQ
dW5jdERpdkZpcnN0JykuaW5uZXJUZXh0IiwgImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb2xs
YXBzZWRTcGFjZVB1bmN0RGl2Tm9ybWFsJykuaW5uZXJUZXh0Iik7CitzaG91bGRCZSgiZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbGxhcHNlZFNwYWNlUHVuY3REaXZGaXJzdCcpLmlubmVyVGV4
dCIsICInZm9vXFxufCBhYmNcXG4nIik7CitzaG91bGRCZSgiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2RpdlNwYW5GaXJzdCcpLmlubmVyVGV4dCIsICJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
ZGl2U3Bhbk5vcm1hbCcpLmlubmVyVGV4dCIpOworc2hvdWxkQmUoImRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdpbnZpc2libGVQcmUnKS5pbm5lclRleHQiLCAiJyciKTsKK3Nob3VsZEJlKCJkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnaW52aXNpYmxlUHJlRmlyc3QnKS5pbm5lclRleHQiLCAiJ3Qn
Iik7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCA1NTdiNjU3Li41M2VjYmFiIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEwLTA1LTI4ICBZb3No
aWtpIEhheWFzaGkgIDx5aGF5YXNoaUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEl0ZXJhdGUgb3ZlciA6Zmlyc3QtbGV0dGVyIHNv
IHRoYXQgaXQgd2lsbCBiZSBpbmNsdWRlZCBpbiBpbm5lclRleHQuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTg2MworCisgICAgICAgIFRlc3Q6IGZh
c3QvZG9tL2lubmVyLXRleHQtZmlyc3QtbGV0dGVyLmh0bWwKKworICAgICAgICAqIGVkaXRpbmcv
VGV4dEl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6VGV4dEl0
ZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6YWR2YW5jZSk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHROb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6OlRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dEJveCk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0SXRlcmF0b3I6OmVtaXRUZXh0KToKKyAgICAgICAgKiBlZGl0aW5nL1RleHRJdGVyYXRvci5o
OgorCiAyMDEwLTA1LTMwICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL1Rl
eHRJdGVyYXRvci5jcHAgYi9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAppbmRleCBm
M2JkOWRmLi5lYWUwOTljIDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9y
LmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcApAQCAtMzcsNiArMzcs
NyBAQAogI2luY2x1ZGUgIlJlbmRlclRhYmxlQ2VsbC5oIgogI2luY2x1ZGUgIlJlbmRlclRhYmxl
Um93LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dENvbnRyb2wuaCIKKyNpbmNsdWRlICJSZW5kZXJU
ZXh0RnJhZ21lbnQuaCIKICNpbmNsdWRlICJWaXNpYmxlUG9zaXRpb24uaCIKICNpbmNsdWRlICJ2
aXNpYmxlX3VuaXRzLmgiCiAKQEAgLTI1Nyw2ICsyNTgsNyBAQCBUZXh0SXRlcmF0b3I6OlRleHRJ
dGVyYXRvcigpCiAgICAgLCBtX2VtaXRzQ2hhcmFjdGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRp
b25zKGZhbHNlKQogICAgICwgbV9lbnRlcnNUZXh0Q29udHJvbHMoZmFsc2UpCiAgICAgLCBtX2Vt
aXRzVGV4dFdpdGhvdXRUcmFuc2NvZGluZyhmYWxzZSkKKyAgICAsIG1faGFuZGxlZEZpcnN0TGV0
dGVyKGZhbHNlKQogewogfQogCkBAIC0yNzEsNiArMjczLDcgQEAgVGV4dEl0ZXJhdG9yOjpUZXh0
SXRlcmF0b3IoY29uc3QgUmFuZ2UqIHIsIFRleHRJdGVyYXRvckJlaGF2aW9yIGJlaGF2aW9yKQog
ICAgICwgbV9lbWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucyhiZWhhdmlv
ciAmIFRleHRJdGVyYXRvckVtaXRzQ2hhcmFjdGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRpb25z
KQogICAgICwgbV9lbnRlcnNUZXh0Q29udHJvbHMoYmVoYXZpb3IgJiBUZXh0SXRlcmF0b3JFbnRl
cnNUZXh0Q29udHJvbHMpCiAgICAgLCBtX2VtaXRzVGV4dFdpdGhvdXRUcmFuc2NvZGluZyhiZWhh
dmlvciAmIFRleHRJdGVyYXRvckVtaXRzVGV4dHNXaXRob3V0VHJhbnNjb2RpbmcpCisgICAgLCBt
X2hhbmRsZWRGaXJzdExldHRlcihmYWxzZSkKIHsKICAgICBpZiAoIXIpCiAgICAgICAgIHJldHVy
bjsKQEAgLTQxNyw2ICs0MjAsNyBAQCB2b2lkIFRleHRJdGVyYXRvcjo6YWR2YW5jZSgpCiAgICAg
ICAgICAgICBwdXNoRnVsbHlDbGlwcGVkU3RhdGUobV9mdWxseUNsaXBwZWRTdGFjaywgbV9ub2Rl
KTsKICAgICAgICAgbV9oYW5kbGVkTm9kZSA9IGZhbHNlOwogICAgICAgICBtX2hhbmRsZWRDaGls
ZHJlbiA9IGZhbHNlOworICAgICAgICBtX2hhbmRsZWRGaXJzdExldHRlciA9IGZhbHNlOwogCiAg
ICAgICAgIC8vIGhvdyB3b3VsZCB0aGlzIGV2ZXIgYmU/CiAgICAgICAgIGlmIChtX3Bvc2l0aW9u
Tm9kZSkKQEAgLTQzNSw4ICs0MzksNiBAQCBib29sIFRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dE5v
ZGUoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBSZW5kZXJUZXh0KiByZW5kZXJlciA9
IHRvUmVuZGVyVGV4dChtX25vZGUtPnJlbmRlcmVyKCkpOwotICAgIGlmIChyZW5kZXJlci0+c3R5
bGUoKS0+dmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgCiAgICAgbV9sYXN0VGV4dE5vZGUgPSBtX25vZGU7CiAgICAgU3RyaW5nIHN0ciA9IHJl
bmRlcmVyLT50ZXh0KCk7CkBAIC00NDQsMTAgKzQ0NiwxNiBAQCBib29sIFRleHRJdGVyYXRvcjo6
aGFuZGxlVGV4dE5vZGUoKQogICAgIC8vIGhhbmRsZSBwcmUtZm9ybWF0dGVkIHRleHQKICAgICBp
ZiAoIXJlbmRlcmVyLT5zdHlsZSgpLT5jb2xsYXBzZVdoaXRlU3BhY2UoKSkgewogICAgICAgICBp
bnQgcnVuU3RhcnQgPSBtX29mZnNldDsKLSAgICAgICAgaWYgKG1fbGFzdFRleHROb2RlRW5kZWRX
aXRoQ29sbGFwc2VkU3BhY2UpIHsKKyAgICAgICAgaWYgKG1fbGFzdFRleHROb2RlRW5kZWRXaXRo
Q29sbGFwc2VkU3BhY2UgJiYgaGFzVmlzaWJsZVRleHROb2RlKHJlbmRlcmVyKSkgewogICAgICAg
ICAgICAgZW1pdENoYXJhY3RlcignICcsIG1fbm9kZSwgMCwgcnVuU3RhcnQsIHJ1blN0YXJ0KTsK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQorICAgICAgICBpZiAoIW1faGFu
ZGxlZEZpcnN0TGV0dGVyICYmIHJlbmRlcmVyLT5pc1RleHRGcmFnbWVudCgpKSB7CisgICAgICAg
ICAgICBpZiAoaGFuZGxlVGV4dE5vZGVGaXJzdExldHRlcihzdGF0aWNfY2FzdDxSZW5kZXJUZXh0
RnJhZ21lbnQqPihyZW5kZXJlcikpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgfQorICAgICAgICBpZiAocmVuZGVyZXItPnN0eWxlKCktPnZpc2liaWxpdHkoKSAhPSBW
SVNJQkxFKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBpbnQgc3RyTGVuZ3Ro
ID0gc3RyLmxlbmd0aCgpOwogICAgICAgICBpbnQgZW5kID0gKG1fbm9kZSA9PSBtX2VuZENvbnRh
aW5lcikgPyBtX2VuZE9mZnNldCA6IElOVF9NQVg7CiAgICAgICAgIGludCBydW5FbmQgPSBtaW4o
c3RyTGVuZ3RoLCBlbmQpOwpAQCAtNDU5LDcgKzQ2NywxNiBAQCBib29sIFRleHRJdGVyYXRvcjo6
aGFuZGxlVGV4dE5vZGUoKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKKyAgICBpZiAo
cmVuZGVyZXItPnN0eWxlKCktPnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKSB7CisgICAgICAgIGlm
ICghbV9oYW5kbGVkRmlyc3RMZXR0ZXIgJiYgcmVuZGVyZXItPmlzVGV4dEZyYWdtZW50KCkpCisg
ICAgICAgICAgICBoYW5kbGVUZXh0Tm9kZUZpcnN0TGV0dGVyKHN0YXRpY19jYXN0PFJlbmRlclRl
eHRGcmFnbWVudCo+KHJlbmRlcmVyKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAg
ICAgaWYgKCFyZW5kZXJlci0+Zmlyc3RUZXh0Qm94KCkgJiYgc3RyLmxlbmd0aCgpID4gMCkgewor
ICAgICAgICBpZiAoIW1faGFuZGxlZEZpcnN0TGV0dGVyICYmIHJlbmRlcmVyLT5pc1RleHRGcmFn
bWVudCgpKSB7CisgICAgICAgICAgICBpZiAoaGFuZGxlVGV4dE5vZGVGaXJzdExldHRlcihzdGF0
aWNfY2FzdDxSZW5kZXJUZXh0RnJhZ21lbnQqPihyZW5kZXJlcikpKQorICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgfQogICAgICAgICBtX2xhc3RUZXh0Tm9kZUVuZGVkV2l0
aENvbGxhcHNlZFNwYWNlID0gdHJ1ZTsgLy8gZW50aXJlIGJsb2NrIGlzIGNvbGxhcHNlZCBzcGFj
ZQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC00NzUsNiArNDkyLDEwIEBAIGJvb2wg
VGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Tm9kZSgpCiAgICAgfQogICAgIAogICAgIG1fdGV4dEJv
eCA9IHJlbmRlcmVyLT5jb250YWluc1JldmVyc2VkVGV4dCgpID8gKG1fc29ydGVkVGV4dEJveGVz
LmlzRW1wdHkoKSA/IDAgOiBtX3NvcnRlZFRleHRCb3hlc1swXSkgOiByZW5kZXJlci0+Zmlyc3RU
ZXh0Qm94KCk7CisgICAgaWYgKCFtX3RleHRCb3ggJiYgIW1faGFuZGxlZEZpcnN0TGV0dGVyICYm
IHJlbmRlcmVyLT5pc1RleHRGcmFnbWVudCgpKSB7CisgICAgICAgIGlmIChoYW5kbGVUZXh0Tm9k
ZUZpcnN0TGV0dGVyKHN0YXRpY19jYXN0PFJlbmRlclRleHRGcmFnbWVudCo+KHJlbmRlcmVyKSkp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogICAgIGhhbmRsZVRleHRCb3goKTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTQ5MSw4ICs1MTIsNyBAQCB2b2lkIFRleHRJdGVyYXRv
cjo6aGFuZGxlVGV4dEJveCgpCiAKICAgICAgICAgLy8gQ2hlY2sgZm9yIGNvbGxhcHNlZCBzcGFj
ZSBhdCB0aGUgc3RhcnQgb2YgdGhpcyBydW4uCiAgICAgICAgIElubGluZVRleHRCb3gqIGZpcnN0
VGV4dEJveCA9IHJlbmRlcmVyLT5jb250YWluc1JldmVyc2VkVGV4dCgpID8gbV9zb3J0ZWRUZXh0
Qm94ZXNbMF0gOiByZW5kZXJlci0+Zmlyc3RUZXh0Qm94KCk7Ci0gICAgICAgIGJvb2wgbmVlZFNw
YWNlID0gbV9sYXN0VGV4dE5vZGVFbmRlZFdpdGhDb2xsYXBzZWRTcGFjZQotICAgICAgICAgICAg
fHwgKG1fdGV4dEJveCA9PSBmaXJzdFRleHRCb3ggJiYgdGV4dEJveFN0YXJ0ID09IHJ1blN0YXJ0
ICYmIHJ1blN0YXJ0ID4gMCk7CisgICAgICAgIGJvb2wgbmVlZFNwYWNlID0gbV9sYXN0VGV4dE5v
ZGVFbmRlZFdpdGhDb2xsYXBzZWRTcGFjZSB8fCAobV90ZXh0Qm94ID09IGZpcnN0VGV4dEJveCAm
JiB0ZXh0Qm94U3RhcnQgPT0gcnVuU3RhcnQgJiYgcnVuU3RhcnQgPiAwKTsKICAgICAgICAgaWYg
KG5lZWRTcGFjZSAmJiAhaXNDb2xsYXBzaWJsZVdoaXRlc3BhY2UobV9sYXN0Q2hhcmFjdGVyKSAm
JiBtX2xhc3RDaGFyYWN0ZXIpIHsKICAgICAgICAgICAgIGlmIChtX2xhc3RUZXh0Tm9kZSA9PSBt
X25vZGUgJiYgcnVuU3RhcnQgPiAwICYmIHN0cltydW5TdGFydCAtIDFdID09ICcgJykgewogICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIHNwYWNlUnVuU3RhcnQgPSBydW5TdGFydCAtIDE7CkBAIC01
MDMsNiArNTIzLDEwIEBAIHZvaWQgVGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Qm94KCkKICAgICAg
ICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKCcgJywgbV9ub2RlLCAwLCBydW5TdGFydCwgcnVuU3Rh
cnQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CisgICAgICAgIGlmIChtX3RleHRC
b3ggPT0gZmlyc3RUZXh0Qm94ICYmICFtX2hhbmRsZWRGaXJzdExldHRlciAmJiByZW5kZXJlci0+
aXNUZXh0RnJhZ21lbnQoKSkgeworICAgICAgICAgICAgaWYgKGhhbmRsZVRleHROb2RlRmlyc3RM
ZXR0ZXIoc3RhdGljX2Nhc3Q8UmVuZGVyVGV4dEZyYWdtZW50Kj4ocmVuZGVyZXIpKSkKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KICAgICAgICAgaW50IHRleHRCb3hFbmQgPSB0
ZXh0Qm94U3RhcnQgKyBtX3RleHRCb3gtPmxlbigpOwogICAgICAgICBpbnQgcnVuRW5kID0gbWlu
KHRleHRCb3hFbmQsIGVuZCk7CiAgICAgICAgIApAQCAtNTUxLDYgKzU3NSwzNSBAQCB2b2lkIFRl
eHRJdGVyYXRvcjo6aGFuZGxlVGV4dEJveCgpCiAgICAgfQogfQogCitib29sIFRleHRJdGVyYXRv
cjo6aGFuZGxlVGV4dE5vZGVGaXJzdExldHRlcihSZW5kZXJUZXh0RnJhZ21lbnQqIHJlbmRlcmVy
KSB7CisgICAgaWYgKHJlbmRlcmVyLT5maXJzdExldHRlcigpKSB7CisgICAgICAgIFJlbmRlck9i
amVjdCogciA9IHJlbmRlcmVyLT5maXJzdExldHRlcigpOworICAgICAgICBpZiAoci0+c3R5bGUo
KS0+dmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIGlmIChtX2xhc3RUZXh0Tm9kZUVuZGVkV2l0aENvbGxhcHNlZFNwYWNlICYmICFpc0Nv
bGxhcHNpYmxlV2hpdGVzcGFjZShtX2xhc3RDaGFyYWN0ZXIpICYmIG1fbGFzdENoYXJhY3Rlcikg
eworICAgICAgICAgICAgZW1pdENoYXJhY3RlcignICcsIG1fbm9kZSwgMCwgbV9vZmZzZXQsIG1f
b2Zmc2V0KTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIGZv
ciAoUmVuZGVyT2JqZWN0ICpjdXJyQ2hpbGQgPSByLT5maXJzdENoaWxkKCk7IGN1cnJDaGlsZDsg
Y3VyckNoaWxkLT5uZXh0U2libGluZygpKSB7CisgICAgICAgICAgICBpZiAoY3VyckNoaWxkLT5p
c1RleHQoKSkgeworICAgICAgICAgICAgICAgIFJlbmRlclRleHQqIGZpcnN0TGV0dGVyID0gdG9S
ZW5kZXJUZXh0KGN1cnJDaGlsZCk7CisgICAgICAgICAgICAgICAgaW50IHJ1blN0YXJ0ID0gbV9v
ZmZzZXQ7CisgICAgICAgICAgICAgICAgU3RyaW5nIHN0ciA9IGZpcnN0TGV0dGVyLT50ZXh0KCk7
CisgICAgICAgICAgICAgICAgaW50IHJ1bkVuZCA9IHN0ci5sZW5ndGgoKTsKKyAgICAgICAgICAg
ICAgICB3aGlsZSAocnVuU3RhcnQgPCBydW5FbmQgJiYgc3RyW3J1blN0YXJ0XSA9PSAnICcpCisg
ICAgICAgICAgICAgICAgICAgICsrcnVuU3RhcnQ7CisgICAgICAgICAgICAgICAgaWYgKHJ1blN0
YXJ0IDwgcnVuRW5kKSB7CisgICAgICAgICAgICAgICAgICAgIGVtaXRUZXh0KG1fbm9kZSwgZmly
c3RMZXR0ZXIsIHJ1blN0YXJ0LCBydW5FbmQpOworICAgICAgICAgICAgICAgICAgICBtX2hhbmRs
ZWRGaXJzdExldHRlciA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBt
X2hhbmRsZWRGaXJzdExldHRlciA9IHRydWU7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBib29s
IFRleHRJdGVyYXRvcjo6aGFuZGxlUmVwbGFjZWRFbGVtZW50KCkKIHsKICAgICBpZiAobV9mdWxs
eUNsaXBwZWRTdGFjay50b3AoKSkKQEAgLTU5Nyw2ICs2NTAsMTcgQEAgYm9vbCBUZXh0SXRlcmF0
b3I6OmhhbmRsZVJlcGxhY2VkRWxlbWVudCgpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wg
VGV4dEl0ZXJhdG9yOjpoYXNWaXNpYmxlVGV4dE5vZGUoUmVuZGVyVGV4dCogcmVuZGVyZXIpIHsK
KyAgICBpZiAocmVuZGVyZXItPnN0eWxlKCktPnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFKQorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICBlbHNlIGlmIChyZW5kZXJlci0+aXNUZXh0RnJhZ21lbnQo
KSkgeworICAgICAgICBSZW5kZXJUZXh0RnJhZ21lbnQqIGZyYWdtZW50ID0gc3RhdGljX2Nhc3Q8
UmVuZGVyVGV4dEZyYWdtZW50Kj4ocmVuZGVyZXIpOworICAgICAgICBpZiAoZnJhZ21lbnQtPmZp
cnN0TGV0dGVyKCkgJiYgZnJhZ21lbnQtPmZpcnN0TGV0dGVyKCktPnN0eWxlKCktPnZpc2liaWxp
dHkoKSA9PSBWSVNJQkxFKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJl
dHVybiBmYWxzZTsKK30KKwogc3RhdGljIGJvb2wgc2hvdWxkRW1pdFRhYkJlZm9yZU5vZGUoTm9k
ZSogbm9kZSkKIHsKICAgICBSZW5kZXJPYmplY3QqIHIgPSBub2RlLT5yZW5kZXJlcigpOwpAQCAt
ODg4LDkgKzk1Miw5IEBAIHZvaWQgVGV4dEl0ZXJhdG9yOjplbWl0Q2hhcmFjdGVyKFVDaGFyIGMs
IE5vZGUqIHRleHROb2RlLCBOb2RlKiBvZmZzZXRCYXNlTm9kZSwKICAgICBtX2xhc3RDaGFyYWN0
ZXIgPSBjOwogfQogCi12b2lkIFRleHRJdGVyYXRvcjo6ZW1pdFRleHQoTm9kZSogdGV4dE5vZGUs
IGludCB0ZXh0U3RhcnRPZmZzZXQsIGludCB0ZXh0RW5kT2Zmc2V0KQordm9pZCBUZXh0SXRlcmF0
b3I6OmVtaXRUZXh0KE5vZGUqIHRleHROb2RlLCBSZW5kZXJPYmplY3QqIHJlbmRlck9iamVjdCwg
aW50IHRleHRTdGFydE9mZnNldCwgaW50IHRleHRFbmRPZmZzZXQpCiB7Ci0gICAgUmVuZGVyVGV4
dCogcmVuZGVyZXIgPSB0b1JlbmRlclRleHQobV9ub2RlLT5yZW5kZXJlcigpKTsKKyAgICBSZW5k
ZXJUZXh0KiByZW5kZXJlciA9IHRvUmVuZGVyVGV4dChyZW5kZXJPYmplY3QpOwogICAgIG1fdGV4
dCA9IG1fZW1pdHNUZXh0V2l0aG91dFRyYW5zY29kaW5nID8gcmVuZGVyZXItPnRleHRXaXRob3V0
VHJhbnNjb2RpbmcoKSA6IHJlbmRlcmVyLT50ZXh0KCk7CiAgICAgQVNTRVJUKG1fdGV4dC5jaGFy
YWN0ZXJzKCkpOwogCkBAIC05MDYsNiArOTcwLDExIEBAIHZvaWQgVGV4dEl0ZXJhdG9yOjplbWl0
VGV4dChOb2RlKiB0ZXh0Tm9kZSwgaW50IHRleHRTdGFydE9mZnNldCwgaW50IHRleHRFbmRPZmZz
CiAgICAgbV9oYXNFbWl0dGVkID0gdHJ1ZTsKIH0KIAordm9pZCBUZXh0SXRlcmF0b3I6OmVtaXRU
ZXh0KE5vZGUqIHRleHROb2RlLCBpbnQgdGV4dFN0YXJ0T2Zmc2V0LCBpbnQgdGV4dEVuZE9mZnNl
dCkKK3sKKyAgICBlbWl0VGV4dCh0ZXh0Tm9kZSwgbV9ub2RlLT5yZW5kZXJlcigpLCB0ZXh0U3Rh
cnRPZmZzZXQsIHRleHRFbmRPZmZzZXQpOworfQorCiBQYXNzUmVmUHRyPFJhbmdlPiBUZXh0SXRl
cmF0b3I6OnJhbmdlKCkgY29uc3QKIHsKICAgICAvLyB1c2UgdGhlIGN1cnJlbnQgcnVuIGluZm9y
bWF0aW9uLCBpZiB3ZSBoYXZlIGl0CmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0
ZXJhdG9yLmggYi9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmgKaW5kZXggYmEzODFiOS4u
NDZhYzgwZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oCisrKyBi
L1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaApAQCAtMzIsNiArMzIsOSBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFJlbmRlclRleHQ7CitjbGFzcyBSZW5kZXJUZXh0RnJh
Z21lbnQ7CisKIC8vIEZJWE1FOiBDYW4ndCByZWFsbHkgYW5zd2VyIHRoaXMgcXVlc3Rpb24gY29y
cmVjdGx5IHdpdGhvdXQga25vd2luZyB0aGUgd2hpdGUtc3BhY2UgbW9kZS4KIC8vIEZJWE1FOiBN
b3ZlIHRoaXMgc29tZXdoZXJlIGVsc2UgaW4gdGhlIGVkaXRpbmcgZGlyZWN0b3J5LiBJdCBkb2Vz
bid0IGJlbG9uZyBoZXJlLgogaW5saW5lIGJvb2wgaXNDb2xsYXBzaWJsZVdoaXRlc3BhY2UoVUNo
YXIgYykKQEAgLTEwMiw3ICsxMDUsMTAgQEAgcHJpdmF0ZToKICAgICBib29sIGhhbmRsZVJlcGxh
Y2VkRWxlbWVudCgpOwogICAgIGJvb2wgaGFuZGxlTm9uVGV4dE5vZGUoKTsKICAgICB2b2lkIGhh
bmRsZVRleHRCb3goKTsKKyAgICBib29sIGhhbmRsZVRleHROb2RlRmlyc3RMZXR0ZXIoUmVuZGVy
VGV4dEZyYWdtZW50Kik7CisgICAgYm9vbCBoYXNWaXNpYmxlVGV4dE5vZGUoUmVuZGVyVGV4dCop
OwogICAgIHZvaWQgZW1pdENoYXJhY3RlcihVQ2hhciwgTm9kZSogdGV4dE5vZGUsIE5vZGUqIG9m
ZnNldEJhc2VOb2RlLCBpbnQgdGV4dFN0YXJ0T2Zmc2V0LCBpbnQgdGV4dEVuZE9mZnNldCk7Cisg
ICAgdm9pZCBlbWl0VGV4dChOb2RlKiB0ZXh0Tm9kZSwgUmVuZGVyT2JqZWN0KiByZW5kZXJPYmpl
Y3QsIGludCB0ZXh0U3RhcnRPZmZzZXQsIGludCB0ZXh0RW5kT2Zmc2V0KTsKICAgICB2b2lkIGVt
aXRUZXh0KE5vZGUqIHRleHROb2RlLCBpbnQgdGV4dFN0YXJ0T2Zmc2V0LCBpbnQgdGV4dEVuZE9m
ZnNldCk7CiAgICAgCiAgICAgLy8gQ3VycmVudCBwb3NpdGlvbiwgbm90IG5lY2Vzc2FyaWx5IG9m
IHRoZSB0ZXh0IGJlaW5nIHJldHVybmVkLCBidXQgcG9zaXRpb24KQEAgLTE1OSw2ICsxNjUsOCBA
QCBwcml2YXRlOgogCiAgICAgLy8gVXNlZCB3aGVuIHdlIHdhbnQgdGV4dHMgZm9yIGNvcHlpbmcs
IHBhc3RpbmcsIGFuZCB0cmFuc3Bvc2luZy4KICAgICBib29sIG1fZW1pdHNUZXh0V2l0aG91dFRy
YW5zY29kaW5nOworICAgIC8vIFVzZWQgd2hlbiBkZWNpZGluZyB0ZXh0IGZyYWdtZW50IGNyZWF0
ZWQgYnkgOmZpcnN0LWxldHRlciBzaG91bGQgYmUgbG9va2VkIGludG8uCisgICAgYm9vbCBtX2hh
bmRsZWRGaXJzdExldHRlcjsKIH07CiAKIC8vIEl0ZXJhdGVzIHRocm91Z2ggdGhlIERPTSByYW5n
ZSwgcmV0dXJuaW5nIGFsbCB0aGUgdGV4dCwgYW5kIDAtbGVuZ3RoIGJvdW5kYXJpZXMK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57515</attachid>
            <date>2010-05-31 21:21:18 -0700</date>
            <delta_ts>2010-05-31 21:31:48 -0700</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>bug-39863-20100601132115.patch</filename>
            <type>text/plain</type>
            <size>18698</size>
            <attacher name="Yoshiki Hayashi">yhayashi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBjMWRhNzY5YTFhYjEwZjJhMWU3OWZjNzc5MWQ1NTZkYTUwMzc3ZjI5Li42Y2M1MjE2
MTcyMDE1OGM3ZGEzZGEzZTQ3MjQ5OTNiNDNhNzk1MjVkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTAtMDUtMjggIFlvc2hpa2kgSGF5YXNoaSAgPHloYXlhc2hpQGdvb2dsZS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSXRlcmF0ZSBvdmVy
IDpmaXJzdC1sZXR0ZXIgc28gdGhhdCBpdCB3aWxsIGJlIGluY2x1ZGVkIGluIGlubmVyVGV4dC4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5ODYzCisK
KyAgICAgICAgKiBmYXN0L2RvbS9pbm5lci10ZXh0LWZpcnN0LWxldHRlci1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL2lubmVyLXRleHQtZmlyc3QtbGV0dGVyLmh0bWw6
IEFkZGVkLgorCiAyMDEwLTA1LTMxICBUb255IENoYW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgRGFuIEJlcm5zdGVpbi4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvY3NzL2dldENvbXB1dGVkU3R5bGUvZ2V0Q29tcHV0ZWRTdHlsZS13aXRoLXBzZXVk
by1lbGVtZW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL2dldENvbXB1dGVk
U3R5bGUvZ2V0Q29tcHV0ZWRTdHlsZS13aXRoLXBzZXVkby1lbGVtZW50LWV4cGVjdGVkLnR4dApp
bmRleCA0OTU3NmYxODA2Y2UzYjA2YjU0YTFkNjkxNTg0YzM1NDY2MGQwNjA1Li4wZTdiYzUwZTRh
MmVkM2QxOGJiZTQ4YTk0N2ZiMjNjOGY4YzNlNTkxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9m
YXN0L2Nzcy9nZXRDb21wdXRlZFN0eWxlL2dldENvbXB1dGVkU3R5bGUtd2l0aC1wc2V1ZG8tZWxl
bWVudC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvZ2V0Q29tcHV0ZWRT
dHlsZS9nZXRDb21wdXRlZFN0eWxlLXdpdGgtcHNldWRvLWVsZW1lbnQtZXhwZWN0ZWQudHh0CkBA
IC0xLDcgKzEsNyBAQAogVGVzdCBmb3IgV2ViS2l0IGJ1ZyAyNDAyMTogcHNldWRvLWVsZW1lbnQg
c3R5bGVzIG5vdCBhY2Nlc3NpYmxlIC8gcmV0cmlldmFibGUgdmlhIERPTSBtZXRob2RzCiAKIAot
b3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRpcGlzaWNpbmcgZWxpdCwg
c2VkIGRvIGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1bnQgdXQgbGFib3JlIGV0IGRvbG9yZSBtYWdu
YSBhbGlxdWEuIFV0IGVuaW0gYWQgbWluaW0gdmVuaWFtLCBxdWlzIG5vc3RydWQgZXhlcmNpdGF0
aW9uIHVsbGFtY28gbGFib3JpcyBuaXNpIHV0IGFsaXF1aXAgZXggZWEgY29tbW9kbyBjb25zZXF1
YXQuIER1aXMgYXV0ZSBpcnVyZSBkb2xvciBpbiByZXByZWhlbmRlcml0IGluIHZvbHVwdGF0ZSB2
ZWxpdCBlc3NlIGNpbGx1bSBkb2xvcmUgZXUgZnVnaWF0IG51bGxhIHBhcmlhdHVyLiBFeGNlcHRl
dXIgc2ludCBvY2NhZWNhdCBjdXBpZGF0YXQgbm9uIHByb2lkZW50LCBzdW50IGluIGN1bHBhIHF1
aSBvZmZpY2lhIGRlc2VydW50IG1vbGxpdCBhbmltIGlkIGVzdCBsYWJvcnVtLgorTG9yZW0gaXBz
dW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2ljaW5nIGVsaXQsIHNlZCBkbyBl
aXVzbW9kIHRlbXBvciBpbmNpZGlkdW50IHV0IGxhYm9yZSBldCBkb2xvcmUgbWFnbmEgYWxpcXVh
LiBVdCBlbmltIGFkIG1pbmltIHZlbmlhbSwgcXVpcyBub3N0cnVkIGV4ZXJjaXRhdGlvbiB1bGxh
bWNvIGxhYm9yaXMgbmlzaSB1dCBhbGlxdWlwIGV4IGVhIGNvbW1vZG8gY29uc2VxdWF0LiBEdWlz
IGF1dGUgaXJ1cmUgZG9sb3IgaW4gcmVwcmVoZW5kZXJpdCBpbiB2b2x1cHRhdGUgdmVsaXQgZXNz
ZSBjaWxsdW0gZG9sb3JlIGV1IGZ1Z2lhdCBudWxsYSBwYXJpYXR1ci4gRXhjZXB0ZXVyIHNpbnQg
b2NjYWVjYXQgY3VwaWRhdGF0IG5vbiBwcm9pZGVudCwgc3VudCBpbiBjdWxwYSBxdWkgb2ZmaWNp
YSBkZXNlcnVudCBtb2xsaXQgYW5pbSBpZCBlc3QgbGFib3J1bS4KIAogTWlkZGxlCiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2lubmVyLXRleHQtZmlyc3QtbGV0dGVyLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2lubmVyLXRleHQtZmlyc3QtbGV0dGVyLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZDcwMzUzMGU3M2FkMGU2YTExNzIwMjdmNDNlYWFhNjFh
NGE3NmRjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vaW5uZXItdGV4
dC1maXJzdC1sZXR0ZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNTIgQEAKK1RoaXMgdGVzdHMg
YSBsZXR0ZXIgd2l0aCA6Zmlyc3QtbGV0dGVyIGFwcGxpZWQgaXMgcHJlc2VudCBpbiBpbm5lclRl
eHQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdkaXZGaXJzdCcpLmlubmVyVGV4dCBpcyBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnZGl2Tm9ybWFsJykuaW5uZXJUZXh0CitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdw
Rmlyc3QnKS5pbm5lclRleHQgaXMgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BOb3JtYWwnKS5p
bm5lclRleHQKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbGxhcHNlZFNwYWNlRmly
c3QnKS5pbm5lclRleHQgaXMgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbGxhcHNlZFNwYWNl
Tm9ybWFsJykuaW5uZXJUZXh0CitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb2xsYXBz
ZWRTcGFjZVByZUZpcnN0JykuaW5uZXJUZXh0IGlzIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdj
b2xsYXBzZWRTcGFjZVByZU5vcm1hbCcpLmlubmVyVGV4dAorUEFTUyBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgncHJlU3BhY2VGaXJzdCcpLmlubmVyVGV4dCBpcyBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgncHJlU3BhY2VOb3JtYWwnKS5pbm5lclRleHQKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2NvbGxhcHNlZFNwYWNlRGl2Rmlyc3QnKS5pbm5lclRleHQgaXMgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2NvbGxhcHNlZFNwYWNlRGl2Tm9ybWFsJykuaW5uZXJUZXh0CitQQVNTIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb2xsYXBzZWRTcGFjZUNvbGxhcHNlZERpdkZpcnN0Jyku
aW5uZXJUZXh0IGlzIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb2xsYXBzZWRTcGFjZUNvbGxh
cHNlZERpdk5vcm1hbCcpLmlubmVyVGV4dAorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
Y29sbGFwc2VkU3BhY2VDb2xsYXBzZWREaXZGaXJzdCcpLmlubmVyVGV4dCBpcyAnZm9vXG5hYmNc
bicKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbGxhcHNlZFNwYWNlUHVuY3REaXZG
aXJzdCcpLmlubmVyVGV4dCBpcyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29sbGFwc2VkU3Bh
Y2VQdW5jdERpdk5vcm1hbCcpLmlubmVyVGV4dAorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnY29sbGFwc2VkU3BhY2VQdW5jdERpdkZpcnN0JykuaW5uZXJUZXh0IGlzICdmb29cbnwgYWJj
XG4nCitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkaXZTcGFuRmlyc3QnKS5pbm5lclRl
eHQgaXMgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RpdlNwYW5Ob3JtYWwnKS5pbm5lclRleHQK
K1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ludmlzaWJsZVByZScpLmlubmVyVGV4dCBp
cyAnJworUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW52aXNpYmxlUHJlRmlyc3QnKS5p
bm5lclRleHQgaXMgJ3QnCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKK2RpdgorZGl2CitwcmUKK3ByZQorYWJjCithYmMKKyBhYmMKKyBhYmMKK3Rlc3QK
KyAgYWJjCit0ZXN0CisgIGFiYwordGVzdAorYWJjCit0ZXN0CithYmMKK2ZvbworYWJjCitmb28K
K2FiYworZm9vCithYmMKK2ZvbworYWJjCitmb28KK3wgYWJjCitmb28KK3wgYWJjCisxMgorMTIK
K3QKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2lubmVyLXRleHQtZmlyc3QtbGV0
dGVyLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9pbm5lci10ZXh0LWZpcnN0LWxldHRlci5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmQzZTAzZTEzYzVkYzY0OWExY2Q5MDk4YTk0ZTQ2YWJiN2UzODk5OGEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9pbm5lci10ZXh0LWZpcnN0
LWxldHRlci5odG1sCkBAIC0wLDAgKzEsNjEgQEAKKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8
c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
dHlsZT4KKy5maXJzdDpmaXJzdC1sZXR0ZXIgeworICBmb250LXdlaWdodDogYm9sZDsKKyAgdmlz
aWJpbGl0eTogdmlzaWJsZTsKK30KKy5pbnZpc2libGUgeworICB2aXNpYmlsaXR5OiBoaWRkZW47
Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4K
KzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGRpdiBpZD0iZGl2Rmlyc3QiIGNsYXNzPSJmaXJz
dCI+ZGl2PC9kaXY+Cis8ZGl2IGlkPSJkaXZOb3JtYWwiPmRpdjwvZGl2PgorPHByZSBpZD0icEZp
cnN0IiBjbGFzcz0iZmlyc3QiPnByZTwvcHJlPgorPHByZSBpZD0icE5vcm1hbCI+cHJlPC9wcmU+
Cis8ZGl2IGlkPSJjb2xsYXBzZWRTcGFjZUZpcnN0Ij48c3Bhbj4gPC9zcGFuPjxkaXYgY2xhc3M9
ImZpcnN0Ij5hYmM8L2Rpdj48L2Rpdj4KKzxkaXYgaWQ9ImNvbGxhcHNlZFNwYWNlTm9ybWFsIj48
c3Bhbj4gPC9zcGFuPjxkaXY+YWJjPC9kaXY+PC9kaXY+Cis8ZGl2IGlkPSJjb2xsYXBzZWRTcGFj
ZVByZUZpcnN0Ij48c3Bhbj4gPC9zcGFuPjxwcmUgY2xhc3M9ImZpcnN0Ij5hYmM8L3ByZT48L2Rp
dj4KKzxkaXYgaWQ9ImNvbGxhcHNlZFNwYWNlUHJlTm9ybWFsIj48c3Bhbj4gPC9zcGFuPjxwcmU+
YWJjPC9wcmU+PC9kaXY+Cis8ZGl2IGlkPSJwcmVTcGFjZUZpcnN0Ij48c3Bhbj50ZXN0PC9zcGFu
PjxwcmUgY2xhc3M9ImZpcnN0Ij4gIGFiYzwvcHJlPjwvZGl2PgorPGRpdiBpZD0icHJlU3BhY2VO
b3JtYWwiPjxzcGFuPnRlc3Q8L3NwYW4+PHByZT4gIGFiYzwvcHJlPjwvZGl2PgorPGRpdiBpZD0i
ZGl2U3BhY2VGaXJzdCI+PHNwYW4+dGVzdDwvc3Bhbj48ZGl2IGNsYXNzPSJmaXJzdCI+ICBhYmM8
L2Rpdj48L2Rpdj4KKzxkaXYgaWQ9ImRpdlNwYWNlTm9ybWFsIj48c3Bhbj50ZXN0PC9zcGFuPjxk
aXY+ICBhYmM8L2Rpdj48L2Rpdj4KKzxkaXYgaWQ9ImNvbGxhcHNlZFNwYWNlRGl2Rmlyc3QiPjxz
cGFuPmZvbzwvc3Bhbj48c3Bhbj4gPC9zcGFuPjxkaXYgY2xhc3M9ImZpcnN0Ij5hYmM8L2Rpdj48
L2Rpdj4KKzxkaXYgaWQ9ImNvbGxhcHNlZFNwYWNlRGl2Tm9ybWFsIj48c3Bhbj5mb288L3NwYW4+
PHNwYW4+IDwvc3Bhbj48ZGl2PmFiYzwvZGl2PjwvZGl2PgorPGRpdiBpZD0iY29sbGFwc2VkU3Bh
Y2VDb2xsYXBzZWREaXZGaXJzdCI+PHNwYW4+Zm9vPC9zcGFuPjxzcGFuPiA8L3NwYW4+PGRpdiBj
bGFzcz0iZmlyc3QiPiAgYWJjPC9kaXY+PC9kaXY+Cis8ZGl2IGlkPSJjb2xsYXBzZWRTcGFjZUNv
bGxhcHNlZERpdk5vcm1hbCI+PHNwYW4+Zm9vPC9zcGFuPjxzcGFuPiA8L3NwYW4+PGRpdj4gIGFi
YzwvZGl2PjwvZGl2PgorPGRpdiBpZD0iY29sbGFwc2VkU3BhY2VQdW5jdERpdkZpcnN0Ij48c3Bh
bj5mb288L3NwYW4+PHNwYW4+IDwvc3Bhbj48ZGl2IGNsYXNzPSJmaXJzdCI+fCAgCithYmM8L2Rp
dj48L2Rpdj4KKzxkaXYgaWQ9ImNvbGxhcHNlZFNwYWNlUHVuY3REaXZOb3JtYWwiPjxzcGFuPmZv
bzwvc3Bhbj48c3Bhbj4gPC9zcGFuPjxkaXY+fCAgCithYmM8L2Rpdj48L2Rpdj4KKzxkaXYgaWQ9
ImRpdlNwYW5GaXJzdCIgY2xhc3M9ImZpcnN0Ij48c3BhbiBpZD0iZjEiPjE8L3NwYW4+PHNwYW4g
aWQ9ImYyIj4yPC9zcGFuPjwvZGl2PgorPGRpdiBpZD0iZGl2U3Bhbk5vcm1hbCI+PHNwYW4gaWQ9
Im4xIj4xPC9zcGFuPjxzcGFuIGlkPSJuMiI+Mjwvc3Bhbj48L2Rpdj4KKzxkaXYgaWQ9Imludmlz
aWJsZVByZSI+PHByZSBjbGFzcz0iaW52aXNpYmxlIj50ZXN0PC9wcmU+PC9kaXY+Cis8ZGl2IGlk
PSJpbnZpc2libGVQcmVGaXJzdCI+PHByZSBjbGFzcz0iaW52aXNpYmxlIGZpcnN0Ij50ZXN0PC9w
cmU+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgYSBsZXR0ZXIgd2l0
aCA6Zmlyc3QtbGV0dGVyIGFwcGxpZWQgaXMgcHJlc2VudCBpbiBpbm5lclRleHQuIik7CitzaG91
bGRCZSgiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RpdkZpcnN0JykuaW5uZXJUZXh0IiwgImRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdkaXZOb3JtYWwnKS5pbm5lclRleHQiKTsKK3Nob3VsZEJl
KCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncEZpcnN0JykuaW5uZXJUZXh0IiwgImRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdwTm9ybWFsJykuaW5uZXJUZXh0Iik7CitzaG91bGRCZSgiZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbGxhcHNlZFNwYWNlRmlyc3QnKS5pbm5lclRleHQiLCAiZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbGxhcHNlZFNwYWNlTm9ybWFsJykuaW5uZXJUZXh0Iik7
CitzaG91bGRCZSgiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbGxhcHNlZFNwYWNlUHJlRmly
c3QnKS5pbm5lclRleHQiLCAiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbGxhcHNlZFNwYWNl
UHJlTm9ybWFsJykuaW5uZXJUZXh0Iik7CitzaG91bGRCZSgiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ3ByZVNwYWNlRmlyc3QnKS5pbm5lclRleHQiLCAiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3ByZVNwYWNlTm9ybWFsJykuaW5uZXJUZXh0Iik7CitzaG91bGRCZSgiZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2NvbGxhcHNlZFNwYWNlRGl2Rmlyc3QnKS5pbm5lclRleHQiLCAiZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2NvbGxhcHNlZFNwYWNlRGl2Tm9ybWFsJykuaW5uZXJUZXh0Iik7Citz
aG91bGRCZSgiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbGxhcHNlZFNwYWNlQ29sbGFwc2Vk
RGl2Rmlyc3QnKS5pbm5lclRleHQiLCAiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbGxhcHNl
ZFNwYWNlQ29sbGFwc2VkRGl2Tm9ybWFsJykuaW5uZXJUZXh0Iik7CitzaG91bGRCZSgiZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbGxhcHNlZFNwYWNlQ29sbGFwc2VkRGl2Rmlyc3QnKS5pbm5l
clRleHQiLCAiJ2Zvb1xcbmFiY1xcbiciKTsKK3Nob3VsZEJlKCJkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnY29sbGFwc2VkU3BhY2VQdW5jdERpdkZpcnN0JykuaW5uZXJUZXh0IiwgImRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdjb2xsYXBzZWRTcGFjZVB1bmN0RGl2Tm9ybWFsJykuaW5uZXJUZXh0
Iik7CitzaG91bGRCZSgiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbGxhcHNlZFNwYWNlUHVu
Y3REaXZGaXJzdCcpLmlubmVyVGV4dCIsICInZm9vXFxufCBhYmNcXG4nIik7CitzaG91bGRCZSgi
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RpdlNwYW5GaXJzdCcpLmlubmVyVGV4dCIsICJkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnZGl2U3Bhbk5vcm1hbCcpLmlubmVyVGV4dCIpOworc2hvdWxk
QmUoImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbnZpc2libGVQcmUnKS5pbm5lclRleHQiLCAi
JyciKTsKK3Nob3VsZEJlKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW52aXNpYmxlUHJlRmly
c3QnKS5pbm5lclRleHQiLCAiJ3QnIik7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsK
Kzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3ZjYwODJlMGNkZDM2MTZmYjc0MjU1NWM1NzEx
ZWIyYzEyZDU0YTFmLi4yMGU2NWJjYTg0Njc5MTY5NTRmNWFmNzQ1OGVkMmM0YTJmNDczOWE1IDEw
MDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDIwIEBACisyMDEwLTA1LTI4ICBZb3NoaWtpIEhheWFzaGkgIDx5aGF5YXNoaUBnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEl0ZXJhdGUgb3ZlciA6Zmlyc3QtbGV0dGVyIHNvIHRoYXQgaXQgd2lsbCBiZSBpbmNsdWRlZCBp
biBpbm5lclRleHQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0zOTg2MworCisgICAgICAgIFRlc3Q6IGZhc3QvZG9tL2lubmVyLXRleHQtZmlyc3QtbGV0
dGVyLmh0bWwKKworICAgICAgICAqIGVkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6VGV4dEl0ZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OlRleHRJdGVyYXRvcjo6YWR2YW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6
OmhhbmRsZVRleHROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6aGFuZGxl
VGV4dEJveCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OmVtaXRUZXh0KToKKyAg
ICAgICAgKiBlZGl0aW5nL1RleHRJdGVyYXRvci5oOgorCiAyMDEwLTA1LTMxICBUb255IENoYW5n
ICA8dG9ueUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFuIEJlcm5zdGVp
bi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwIGIvV2ViQ29y
ZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKaW5kZXggZjNiZDlkZjZiOWY5NWJmMzBkZGEyYTMw
ZTcyNmQ3MzVmMThmOGIxZi4uZWE2OWVlNzJmMmI2ZjBmMzk0NjhiODcxOTVmMWM4YTcwNGRmNTdi
MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKKysrIGIvV2Vi
Q29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRl
ICJSZW5kZXJUYWJsZUNlbGwuaCIKICNpbmNsdWRlICJSZW5kZXJUYWJsZVJvdy5oIgogI2luY2x1
ZGUgIlJlbmRlclRleHRDb250cm9sLmgiCisjaW5jbHVkZSAiUmVuZGVyVGV4dEZyYWdtZW50Lmgi
CiAjaW5jbHVkZSAiVmlzaWJsZVBvc2l0aW9uLmgiCiAjaW5jbHVkZSAidmlzaWJsZV91bml0cy5o
IgogCkBAIC0yNTcsNiArMjU4LDcgQEAgVGV4dEl0ZXJhdG9yOjpUZXh0SXRlcmF0b3IoKQogICAg
ICwgbV9lbWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucyhmYWxzZSkKICAg
ICAsIG1fZW50ZXJzVGV4dENvbnRyb2xzKGZhbHNlKQogICAgICwgbV9lbWl0c1RleHRXaXRob3V0
VHJhbnNjb2RpbmcoZmFsc2UpCisgICAgLCBtX2hhbmRsZWRGaXJzdExldHRlcihmYWxzZSkKIHsK
IH0KIApAQCAtMjcxLDYgKzI3Myw3IEBAIFRleHRJdGVyYXRvcjo6VGV4dEl0ZXJhdG9yKGNvbnN0
IFJhbmdlKiByLCBUZXh0SXRlcmF0b3JCZWhhdmlvciBiZWhhdmlvcikKICAgICAsIG1fZW1pdHND
aGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMoYmVoYXZpb3IgJiBUZXh0SXRlcmF0
b3JFbWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucykKICAgICAsIG1fZW50
ZXJzVGV4dENvbnRyb2xzKGJlaGF2aW9yICYgVGV4dEl0ZXJhdG9yRW50ZXJzVGV4dENvbnRyb2xz
KQogICAgICwgbV9lbWl0c1RleHRXaXRob3V0VHJhbnNjb2RpbmcoYmVoYXZpb3IgJiBUZXh0SXRl
cmF0b3JFbWl0c1RleHRzV2l0aG91dFRyYW5zY29kaW5nKQorICAgICwgbV9oYW5kbGVkRmlyc3RM
ZXR0ZXIoZmFsc2UpCiB7CiAgICAgaWYgKCFyKQogICAgICAgICByZXR1cm47CkBAIC00MTcsNiAr
NDIwLDcgQEAgdm9pZCBUZXh0SXRlcmF0b3I6OmFkdmFuY2UoKQogICAgICAgICAgICAgcHVzaEZ1
bGx5Q2xpcHBlZFN0YXRlKG1fZnVsbHlDbGlwcGVkU3RhY2ssIG1fbm9kZSk7CiAgICAgICAgIG1f
aGFuZGxlZE5vZGUgPSBmYWxzZTsKICAgICAgICAgbV9oYW5kbGVkQ2hpbGRyZW4gPSBmYWxzZTsK
KyAgICAgICAgbV9oYW5kbGVkRmlyc3RMZXR0ZXIgPSBmYWxzZTsKIAogICAgICAgICAvLyBob3cg
d291bGQgdGhpcyBldmVyIGJlPwogICAgICAgICBpZiAobV9wb3NpdGlvbk5vZGUpCkBAIC00MzUs
OCArNDM5LDYgQEAgYm9vbCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHROb2RlKCkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgUmVuZGVyVGV4dCogcmVuZGVyZXIgPSB0b1JlbmRlclRleHQo
bV9ub2RlLT5yZW5kZXJlcigpKTsKLSAgICBpZiAocmVuZGVyZXItPnN0eWxlKCktPnZpc2liaWxp
dHkoKSAhPSBWSVNJQkxFKQotICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAogICAgIG1f
bGFzdFRleHROb2RlID0gbV9ub2RlOwogICAgIFN0cmluZyBzdHIgPSByZW5kZXJlci0+dGV4dCgp
OwpAQCAtNDQ0LDEwICs0NDYsMTYgQEAgYm9vbCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHROb2Rl
KCkKICAgICAvLyBoYW5kbGUgcHJlLWZvcm1hdHRlZCB0ZXh0CiAgICAgaWYgKCFyZW5kZXJlci0+
c3R5bGUoKS0+Y29sbGFwc2VXaGl0ZVNwYWNlKCkpIHsKICAgICAgICAgaW50IHJ1blN0YXJ0ID0g
bV9vZmZzZXQ7Ci0gICAgICAgIGlmIChtX2xhc3RUZXh0Tm9kZUVuZGVkV2l0aENvbGxhcHNlZFNw
YWNlKSB7CisgICAgICAgIGlmIChtX2xhc3RUZXh0Tm9kZUVuZGVkV2l0aENvbGxhcHNlZFNwYWNl
ICYmIGhhc1Zpc2libGVUZXh0Tm9kZShyZW5kZXJlcikpIHsKICAgICAgICAgICAgIGVtaXRDaGFy
YWN0ZXIoJyAnLCBtX25vZGUsIDAsIHJ1blN0YXJ0LCBydW5TdGFydCk7CiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KKyAgICAgICAgaWYgKCFtX2hhbmRsZWRGaXJzdExldHRl
ciAmJiByZW5kZXJlci0+aXNUZXh0RnJhZ21lbnQoKSkgeworICAgICAgICAgICAgaWYgKGhhbmRs
ZVRleHROb2RlRmlyc3RMZXR0ZXIoc3RhdGljX2Nhc3Q8UmVuZGVyVGV4dEZyYWdtZW50Kj4ocmVu
ZGVyZXIpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAg
ICAgaWYgKHJlbmRlcmVyLT5zdHlsZSgpLT52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaW50IHN0ckxlbmd0aCA9IHN0ci5sZW5ndGgo
KTsKICAgICAgICAgaW50IGVuZCA9IChtX25vZGUgPT0gbV9lbmRDb250YWluZXIpID8gbV9lbmRP
ZmZzZXQgOiBJTlRfTUFYOwogICAgICAgICBpbnQgcnVuRW5kID0gbWluKHN0ckxlbmd0aCwgZW5k
KTsKQEAgLTQ1OSw3ICs0NjcsMTYgQEAgYm9vbCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHROb2Rl
KCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCisgICAgaWYgKHJlbmRlcmVyLT5zdHls
ZSgpLT52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSkgeworICAgICAgICBpZiAoIW1faGFuZGxlZEZp
cnN0TGV0dGVyICYmIHJlbmRlcmVyLT5pc1RleHRGcmFnbWVudCgpKQorICAgICAgICAgICAgaGFu
ZGxlVGV4dE5vZGVGaXJzdExldHRlcihzdGF0aWNfY2FzdDxSZW5kZXJUZXh0RnJhZ21lbnQqPihy
ZW5kZXJlcikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogICAgIGlmICghcmVuZGVy
ZXItPmZpcnN0VGV4dEJveCgpICYmIHN0ci5sZW5ndGgoKSA+IDApIHsKKyAgICAgICAgaWYgKCFt
X2hhbmRsZWRGaXJzdExldHRlciAmJiByZW5kZXJlci0+aXNUZXh0RnJhZ21lbnQoKSkgeworICAg
ICAgICAgICAgaWYgKGhhbmRsZVRleHROb2RlRmlyc3RMZXR0ZXIoc3RhdGljX2Nhc3Q8UmVuZGVy
VGV4dEZyYWdtZW50Kj4ocmVuZGVyZXIpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIH0KICAgICAgICAgbV9sYXN0VGV4dE5vZGVFbmRlZFdpdGhDb2xsYXBzZWRTcGFj
ZSA9IHRydWU7IC8vIGVudGlyZSBibG9jayBpcyBjb2xsYXBzZWQgc3BhY2UKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQpAQCAtNDc1LDYgKzQ5MiwxMCBAQCBib29sIFRleHRJdGVyYXRvcjo6
aGFuZGxlVGV4dE5vZGUoKQogICAgIH0KICAgICAKICAgICBtX3RleHRCb3ggPSByZW5kZXJlci0+
Y29udGFpbnNSZXZlcnNlZFRleHQoKSA/IChtX3NvcnRlZFRleHRCb3hlcy5pc0VtcHR5KCkgPyAw
IDogbV9zb3J0ZWRUZXh0Qm94ZXNbMF0pIDogcmVuZGVyZXItPmZpcnN0VGV4dEJveCgpOworICAg
IGlmICghbV90ZXh0Qm94ICYmICFtX2hhbmRsZWRGaXJzdExldHRlciAmJiByZW5kZXJlci0+aXNU
ZXh0RnJhZ21lbnQoKSkgeworICAgICAgICBpZiAoaGFuZGxlVGV4dE5vZGVGaXJzdExldHRlcihz
dGF0aWNfY2FzdDxSZW5kZXJUZXh0RnJhZ21lbnQqPihyZW5kZXJlcikpKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KICAgICBoYW5kbGVUZXh0Qm94KCk7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CkBAIC00OTEsOCArNTEyLDcgQEAgdm9pZCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHRC
b3goKQogCiAgICAgICAgIC8vIENoZWNrIGZvciBjb2xsYXBzZWQgc3BhY2UgYXQgdGhlIHN0YXJ0
IG9mIHRoaXMgcnVuLgogICAgICAgICBJbmxpbmVUZXh0Qm94KiBmaXJzdFRleHRCb3ggPSByZW5k
ZXJlci0+Y29udGFpbnNSZXZlcnNlZFRleHQoKSA/IG1fc29ydGVkVGV4dEJveGVzWzBdIDogcmVu
ZGVyZXItPmZpcnN0VGV4dEJveCgpOwotICAgICAgICBib29sIG5lZWRTcGFjZSA9IG1fbGFzdFRl
eHROb2RlRW5kZWRXaXRoQ29sbGFwc2VkU3BhY2UKLSAgICAgICAgICAgIHx8IChtX3RleHRCb3gg
PT0gZmlyc3RUZXh0Qm94ICYmIHRleHRCb3hTdGFydCA9PSBydW5TdGFydCAmJiBydW5TdGFydCA+
IDApOworICAgICAgICBib29sIG5lZWRTcGFjZSA9IG1fbGFzdFRleHROb2RlRW5kZWRXaXRoQ29s
bGFwc2VkU3BhY2UgfHwgKG1fdGV4dEJveCA9PSBmaXJzdFRleHRCb3ggJiYgdGV4dEJveFN0YXJ0
ID09IHJ1blN0YXJ0ICYmIHJ1blN0YXJ0ID4gMCk7CiAgICAgICAgIGlmIChuZWVkU3BhY2UgJiYg
IWlzQ29sbGFwc2libGVXaGl0ZXNwYWNlKG1fbGFzdENoYXJhY3RlcikgJiYgbV9sYXN0Q2hhcmFj
dGVyKSB7CiAgICAgICAgICAgICBpZiAobV9sYXN0VGV4dE5vZGUgPT0gbV9ub2RlICYmIHJ1blN0
YXJ0ID4gMCAmJiBzdHJbcnVuU3RhcnQgLSAxXSA9PSAnICcpIHsKICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBzcGFjZVJ1blN0YXJ0ID0gcnVuU3RhcnQgLSAxOwpAQCAtNTAzLDYgKzUyMywxMCBA
QCB2b2lkIFRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dEJveCgpCiAgICAgICAgICAgICAgICAgZW1p
dENoYXJhY3RlcignICcsIG1fbm9kZSwgMCwgcnVuU3RhcnQsIHJ1blN0YXJ0KTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQorICAgICAgICBpZiAobV90ZXh0Qm94ID09IGZpcnN0VGV4
dEJveCAmJiAhbV9oYW5kbGVkRmlyc3RMZXR0ZXIgJiYgcmVuZGVyZXItPmlzVGV4dEZyYWdtZW50
KCkpIHsKKyAgICAgICAgICAgIGlmIChoYW5kbGVUZXh0Tm9kZUZpcnN0TGV0dGVyKHN0YXRpY19j
YXN0PFJlbmRlclRleHRGcmFnbWVudCo+KHJlbmRlcmVyKSkpCisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CiAgICAgICAgIGludCB0ZXh0Qm94RW5kID0gdGV4dEJveFN0YXJ0ICsg
bV90ZXh0Qm94LT5sZW4oKTsKICAgICAgICAgaW50IHJ1bkVuZCA9IG1pbih0ZXh0Qm94RW5kLCBl
bmQpOwogICAgICAgICAKQEAgLTU1MSw2ICs1NzUsMzYgQEAgdm9pZCBUZXh0SXRlcmF0b3I6Omhh
bmRsZVRleHRCb3goKQogICAgIH0KIH0KIAorYm9vbCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHRO
b2RlRmlyc3RMZXR0ZXIoUmVuZGVyVGV4dEZyYWdtZW50KiByZW5kZXJlcikgeworICAgIGlmIChy
ZW5kZXJlci0+Zmlyc3RMZXR0ZXIoKSkgeworICAgICAgICBSZW5kZXJPYmplY3QqIHIgPSByZW5k
ZXJlci0+Zmlyc3RMZXR0ZXIoKTsKKyAgICAgICAgaWYgKHItPnN0eWxlKCktPnZpc2liaWxpdHko
KSAhPSBWSVNJQkxFKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAobV9s
YXN0VGV4dE5vZGVFbmRlZFdpdGhDb2xsYXBzZWRTcGFjZSAmJiAhaXNDb2xsYXBzaWJsZVdoaXRl
c3BhY2UobV9sYXN0Q2hhcmFjdGVyKSAmJiBtX2xhc3RDaGFyYWN0ZXIpIHsKKyAgICAgICAgICAg
IGVtaXRDaGFyYWN0ZXIoJyAnLCBtX25vZGUsIDAsIG1fb2Zmc2V0LCBtX29mZnNldCk7CisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBmb3IgKFJlbmRlck9iamVj
dCAqY3VyckNoaWxkID0gci0+Zmlyc3RDaGlsZCgpOyBjdXJyQ2hpbGQ7IGN1cnJDaGlsZC0+bmV4
dFNpYmxpbmcoKSkgeworICAgICAgICAgICAgaWYgKGN1cnJDaGlsZC0+aXNUZXh0KCkpIHsKKyAg
ICAgICAgICAgICAgICBSZW5kZXJUZXh0KiBmaXJzdExldHRlciA9IHRvUmVuZGVyVGV4dChjdXJy
Q2hpbGQpOworICAgICAgICAgICAgICAgIGludCBydW5TdGFydCA9IG1fb2Zmc2V0OworICAgICAg
ICAgICAgICAgIFN0cmluZyBzdHIgPSBmaXJzdExldHRlci0+dGV4dCgpOworICAgICAgICAgICAg
ICAgIGludCBydW5FbmQgPSBzdHIubGVuZ3RoKCk7CisgICAgICAgICAgICAgICAgaWYgKHJlbmRl
cmVyLT5zdHlsZSgpLT5jb2xsYXBzZVdoaXRlU3BhY2UoKSkKKyAgICAgICAgICAgICAgICAgICAg
d2hpbGUgKHJ1blN0YXJ0IDwgcnVuRW5kICYmIHN0cltydW5TdGFydF0gPT0gJyAnKQorICAgICAg
ICAgICAgICAgICAgICAgICAgKytydW5TdGFydDsKKyAgICAgICAgICAgICAgICBpZiAocnVuU3Rh
cnQgPCBydW5FbmQpIHsKKyAgICAgICAgICAgICAgICAgICAgZW1pdFRleHQobV9ub2RlLCBmaXJz
dExldHRlciwgcnVuU3RhcnQsIHJ1bkVuZCk7CisgICAgICAgICAgICAgICAgICAgIG1faGFuZGxl
ZEZpcnN0TGV0dGVyID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIG1f
aGFuZGxlZEZpcnN0TGV0dGVyID0gdHJ1ZTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIGJvb2wg
VGV4dEl0ZXJhdG9yOjpoYW5kbGVSZXBsYWNlZEVsZW1lbnQoKQogewogICAgIGlmIChtX2Z1bGx5
Q2xpcHBlZFN0YWNrLnRvcCgpKQpAQCAtNTk3LDYgKzY1MSwxNyBAQCBib29sIFRleHRJdGVyYXRv
cjo6aGFuZGxlUmVwbGFjZWRFbGVtZW50KCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBU
ZXh0SXRlcmF0b3I6Omhhc1Zpc2libGVUZXh0Tm9kZShSZW5kZXJUZXh0KiByZW5kZXJlcikgewor
ICAgIGlmIChyZW5kZXJlci0+c3R5bGUoKS0+dmlzaWJpbGl0eSgpID09IFZJU0lCTEUpCisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIGVsc2UgaWYgKHJlbmRlcmVyLT5pc1RleHRGcmFnbWVudCgp
KSB7CisgICAgICAgIFJlbmRlclRleHRGcmFnbWVudCogZnJhZ21lbnQgPSBzdGF0aWNfY2FzdDxS
ZW5kZXJUZXh0RnJhZ21lbnQqPihyZW5kZXJlcik7CisgICAgICAgIGlmIChmcmFnbWVudC0+Zmly
c3RMZXR0ZXIoKSAmJiBmcmFnbWVudC0+Zmlyc3RMZXR0ZXIoKS0+c3R5bGUoKS0+dmlzaWJpbGl0
eSgpID09IFZJU0lCTEUpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0
dXJuIGZhbHNlOworfQorCiBzdGF0aWMgYm9vbCBzaG91bGRFbWl0VGFiQmVmb3JlTm9kZShOb2Rl
KiBub2RlKQogewogICAgIFJlbmRlck9iamVjdCogciA9IG5vZGUtPnJlbmRlcmVyKCk7CkBAIC04
ODgsOSArOTUzLDkgQEAgdm9pZCBUZXh0SXRlcmF0b3I6OmVtaXRDaGFyYWN0ZXIoVUNoYXIgYywg
Tm9kZSogdGV4dE5vZGUsIE5vZGUqIG9mZnNldEJhc2VOb2RlLAogICAgIG1fbGFzdENoYXJhY3Rl
ciA9IGM7CiB9CiAKLXZvaWQgVGV4dEl0ZXJhdG9yOjplbWl0VGV4dChOb2RlKiB0ZXh0Tm9kZSwg
aW50IHRleHRTdGFydE9mZnNldCwgaW50IHRleHRFbmRPZmZzZXQpCit2b2lkIFRleHRJdGVyYXRv
cjo6ZW1pdFRleHQoTm9kZSogdGV4dE5vZGUsIFJlbmRlck9iamVjdCogcmVuZGVyT2JqZWN0LCBp
bnQgdGV4dFN0YXJ0T2Zmc2V0LCBpbnQgdGV4dEVuZE9mZnNldCkKIHsKLSAgICBSZW5kZXJUZXh0
KiByZW5kZXJlciA9IHRvUmVuZGVyVGV4dChtX25vZGUtPnJlbmRlcmVyKCkpOworICAgIFJlbmRl
clRleHQqIHJlbmRlcmVyID0gdG9SZW5kZXJUZXh0KHJlbmRlck9iamVjdCk7CiAgICAgbV90ZXh0
ID0gbV9lbWl0c1RleHRXaXRob3V0VHJhbnNjb2RpbmcgPyByZW5kZXJlci0+dGV4dFdpdGhvdXRU
cmFuc2NvZGluZygpIDogcmVuZGVyZXItPnRleHQoKTsKICAgICBBU1NFUlQobV90ZXh0LmNoYXJh
Y3RlcnMoKSk7CiAKQEAgLTkwNiw2ICs5NzEsMTEgQEAgdm9pZCBUZXh0SXRlcmF0b3I6OmVtaXRU
ZXh0KE5vZGUqIHRleHROb2RlLCBpbnQgdGV4dFN0YXJ0T2Zmc2V0LCBpbnQgdGV4dEVuZE9mZnMK
ICAgICBtX2hhc0VtaXR0ZWQgPSB0cnVlOwogfQogCit2b2lkIFRleHRJdGVyYXRvcjo6ZW1pdFRl
eHQoTm9kZSogdGV4dE5vZGUsIGludCB0ZXh0U3RhcnRPZmZzZXQsIGludCB0ZXh0RW5kT2Zmc2V0
KQoreworICAgIGVtaXRUZXh0KHRleHROb2RlLCBtX25vZGUtPnJlbmRlcmVyKCksIHRleHRTdGFy
dE9mZnNldCwgdGV4dEVuZE9mZnNldCk7Cit9CisKIFBhc3NSZWZQdHI8UmFuZ2U+IFRleHRJdGVy
YXRvcjo6cmFuZ2UoKSBjb25zdAogewogICAgIC8vIHVzZSB0aGUgY3VycmVudCBydW4gaW5mb3Jt
YXRpb24sIGlmIHdlIGhhdmUgaXQKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRl
cmF0b3IuaCBiL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaAppbmRleCBiYTM4MWI5YmZh
NDRhNzlkMTA2NDk5OWQyYzYwN2JlNjlmNzZhODkzLi40NmFjODBlMjkyMzRiNTU3ZmIzYmEzYmM3
OGZiNGViODQyMzlmYjdiIDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9y
LmgKKysrIGIvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oCkBAIC0zMiw2ICszMiw5IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgUmVuZGVyVGV4dDsKK2NsYXNzIFJlbmRl
clRleHRGcmFnbWVudDsKKwogLy8gRklYTUU6IENhbid0IHJlYWxseSBhbnN3ZXIgdGhpcyBxdWVz
dGlvbiBjb3JyZWN0bHkgd2l0aG91dCBrbm93aW5nIHRoZSB3aGl0ZS1zcGFjZSBtb2RlLgogLy8g
RklYTUU6IE1vdmUgdGhpcyBzb21ld2hlcmUgZWxzZSBpbiB0aGUgZWRpdGluZyBkaXJlY3Rvcnku
IEl0IGRvZXNuJ3QgYmVsb25nIGhlcmUuCiBpbmxpbmUgYm9vbCBpc0NvbGxhcHNpYmxlV2hpdGVz
cGFjZShVQ2hhciBjKQpAQCAtMTAyLDcgKzEwNSwxMCBAQCBwcml2YXRlOgogICAgIGJvb2wgaGFu
ZGxlUmVwbGFjZWRFbGVtZW50KCk7CiAgICAgYm9vbCBoYW5kbGVOb25UZXh0Tm9kZSgpOwogICAg
IHZvaWQgaGFuZGxlVGV4dEJveCgpOworICAgIGJvb2wgaGFuZGxlVGV4dE5vZGVGaXJzdExldHRl
cihSZW5kZXJUZXh0RnJhZ21lbnQqKTsKKyAgICBib29sIGhhc1Zpc2libGVUZXh0Tm9kZShSZW5k
ZXJUZXh0Kik7CiAgICAgdm9pZCBlbWl0Q2hhcmFjdGVyKFVDaGFyLCBOb2RlKiB0ZXh0Tm9kZSwg
Tm9kZSogb2Zmc2V0QmFzZU5vZGUsIGludCB0ZXh0U3RhcnRPZmZzZXQsIGludCB0ZXh0RW5kT2Zm
c2V0KTsKKyAgICB2b2lkIGVtaXRUZXh0KE5vZGUqIHRleHROb2RlLCBSZW5kZXJPYmplY3QqIHJl
bmRlck9iamVjdCwgaW50IHRleHRTdGFydE9mZnNldCwgaW50IHRleHRFbmRPZmZzZXQpOwogICAg
IHZvaWQgZW1pdFRleHQoTm9kZSogdGV4dE5vZGUsIGludCB0ZXh0U3RhcnRPZmZzZXQsIGludCB0
ZXh0RW5kT2Zmc2V0KTsKICAgICAKICAgICAvLyBDdXJyZW50IHBvc2l0aW9uLCBub3QgbmVjZXNz
YXJpbHkgb2YgdGhlIHRleHQgYmVpbmcgcmV0dXJuZWQsIGJ1dCBwb3NpdGlvbgpAQCAtMTU5LDYg
KzE2NSw4IEBAIHByaXZhdGU6CiAKICAgICAvLyBVc2VkIHdoZW4gd2Ugd2FudCB0ZXh0cyBmb3Ig
Y29weWluZywgcGFzdGluZywgYW5kIHRyYW5zcG9zaW5nLgogICAgIGJvb2wgbV9lbWl0c1RleHRX
aXRob3V0VHJhbnNjb2Rpbmc7CisgICAgLy8gVXNlZCB3aGVuIGRlY2lkaW5nIHRleHQgZnJhZ21l
bnQgY3JlYXRlZCBieSA6Zmlyc3QtbGV0dGVyIHNob3VsZCBiZSBsb29rZWQgaW50by4KKyAgICBi
b29sIG1faGFuZGxlZEZpcnN0TGV0dGVyOwogfTsKIAogLy8gSXRlcmF0ZXMgdGhyb3VnaCB0aGUg
RE9NIHJhbmdlLCByZXR1cm5pbmcgYWxsIHRoZSB0ZXh0LCBhbmQgMC1sZW5ndGggYm91bmRhcmll
cwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57516</attachid>
            <date>2010-05-31 21:31:55 -0700</date>
            <delta_ts>2010-06-03 02:35:25 -0700</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>bug-39863-20100601133153.patch</filename>
            <type>text/plain</type>
            <size>18695</size>
            <attacher name="Yoshiki Hayashi">yhayashi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBjMWRhNzY5YTFhYjEwZjJhMWU3OWZjNzc5MWQ1NTZkYTUwMzc3ZjI5Li42Y2M1MjE2
MTcyMDE1OGM3ZGEzZGEzZTQ3MjQ5OTNiNDNhNzk1MjVkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTAtMDUtMjggIFlvc2hpa2kgSGF5YXNoaSAgPHloYXlhc2hpQGdvb2dsZS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSXRlcmF0ZSBvdmVy
IDpmaXJzdC1sZXR0ZXIgc28gdGhhdCBpdCB3aWxsIGJlIGluY2x1ZGVkIGluIGlubmVyVGV4dC4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5ODYzCisK
KyAgICAgICAgKiBmYXN0L2RvbS9pbm5lci10ZXh0LWZpcnN0LWxldHRlci1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL2lubmVyLXRleHQtZmlyc3QtbGV0dGVyLmh0bWw6
IEFkZGVkLgorCiAyMDEwLTA1LTMxICBUb255IENoYW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgRGFuIEJlcm5zdGVpbi4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvY3NzL2dldENvbXB1dGVkU3R5bGUvZ2V0Q29tcHV0ZWRTdHlsZS13aXRoLXBzZXVk
by1lbGVtZW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL2dldENvbXB1dGVk
U3R5bGUvZ2V0Q29tcHV0ZWRTdHlsZS13aXRoLXBzZXVkby1lbGVtZW50LWV4cGVjdGVkLnR4dApp
bmRleCA0OTU3NmYxODA2Y2UzYjA2YjU0YTFkNjkxNTg0YzM1NDY2MGQwNjA1Li4wZTdiYzUwZTRh
MmVkM2QxOGJiZTQ4YTk0N2ZiMjNjOGY4YzNlNTkxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9m
YXN0L2Nzcy9nZXRDb21wdXRlZFN0eWxlL2dldENvbXB1dGVkU3R5bGUtd2l0aC1wc2V1ZG8tZWxl
bWVudC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvZ2V0Q29tcHV0ZWRT
dHlsZS9nZXRDb21wdXRlZFN0eWxlLXdpdGgtcHNldWRvLWVsZW1lbnQtZXhwZWN0ZWQudHh0CkBA
IC0xLDcgKzEsNyBAQAogVGVzdCBmb3IgV2ViS2l0IGJ1ZyAyNDAyMTogcHNldWRvLWVsZW1lbnQg
c3R5bGVzIG5vdCBhY2Nlc3NpYmxlIC8gcmV0cmlldmFibGUgdmlhIERPTSBtZXRob2RzCiAKIAot
b3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRpcGlzaWNpbmcgZWxpdCwg
c2VkIGRvIGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1bnQgdXQgbGFib3JlIGV0IGRvbG9yZSBtYWdu
YSBhbGlxdWEuIFV0IGVuaW0gYWQgbWluaW0gdmVuaWFtLCBxdWlzIG5vc3RydWQgZXhlcmNpdGF0
aW9uIHVsbGFtY28gbGFib3JpcyBuaXNpIHV0IGFsaXF1aXAgZXggZWEgY29tbW9kbyBjb25zZXF1
YXQuIER1aXMgYXV0ZSBpcnVyZSBkb2xvciBpbiByZXByZWhlbmRlcml0IGluIHZvbHVwdGF0ZSB2
ZWxpdCBlc3NlIGNpbGx1bSBkb2xvcmUgZXUgZnVnaWF0IG51bGxhIHBhcmlhdHVyLiBFeGNlcHRl
dXIgc2ludCBvY2NhZWNhdCBjdXBpZGF0YXQgbm9uIHByb2lkZW50LCBzdW50IGluIGN1bHBhIHF1
aSBvZmZpY2lhIGRlc2VydW50IG1vbGxpdCBhbmltIGlkIGVzdCBsYWJvcnVtLgorTG9yZW0gaXBz
dW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2ljaW5nIGVsaXQsIHNlZCBkbyBl
aXVzbW9kIHRlbXBvciBpbmNpZGlkdW50IHV0IGxhYm9yZSBldCBkb2xvcmUgbWFnbmEgYWxpcXVh
LiBVdCBlbmltIGFkIG1pbmltIHZlbmlhbSwgcXVpcyBub3N0cnVkIGV4ZXJjaXRhdGlvbiB1bGxh
bWNvIGxhYm9yaXMgbmlzaSB1dCBhbGlxdWlwIGV4IGVhIGNvbW1vZG8gY29uc2VxdWF0LiBEdWlz
IGF1dGUgaXJ1cmUgZG9sb3IgaW4gcmVwcmVoZW5kZXJpdCBpbiB2b2x1cHRhdGUgdmVsaXQgZXNz
ZSBjaWxsdW0gZG9sb3JlIGV1IGZ1Z2lhdCBudWxsYSBwYXJpYXR1ci4gRXhjZXB0ZXVyIHNpbnQg
b2NjYWVjYXQgY3VwaWRhdGF0IG5vbiBwcm9pZGVudCwgc3VudCBpbiBjdWxwYSBxdWkgb2ZmaWNp
YSBkZXNlcnVudCBtb2xsaXQgYW5pbSBpZCBlc3QgbGFib3J1bS4KIAogTWlkZGxlCiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2lubmVyLXRleHQtZmlyc3QtbGV0dGVyLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2lubmVyLXRleHQtZmlyc3QtbGV0dGVyLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZDcwMzUzMGU3M2FkMGU2YTExNzIwMjdmNDNlYWFhNjFh
NGE3NmRjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vaW5uZXItdGV4
dC1maXJzdC1sZXR0ZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNTIgQEAKK1RoaXMgdGVzdHMg
YSBsZXR0ZXIgd2l0aCA6Zmlyc3QtbGV0dGVyIGFwcGxpZWQgaXMgcHJlc2VudCBpbiBpbm5lclRl
eHQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdkaXZGaXJzdCcpLmlubmVyVGV4dCBpcyBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnZGl2Tm9ybWFsJykuaW5uZXJUZXh0CitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdw
Rmlyc3QnKS5pbm5lclRleHQgaXMgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BOb3JtYWwnKS5p
bm5lclRleHQKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbGxhcHNlZFNwYWNlRmly
c3QnKS5pbm5lclRleHQgaXMgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbGxhcHNlZFNwYWNl
Tm9ybWFsJykuaW5uZXJUZXh0CitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb2xsYXBz
ZWRTcGFjZVByZUZpcnN0JykuaW5uZXJUZXh0IGlzIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdj
b2xsYXBzZWRTcGFjZVByZU5vcm1hbCcpLmlubmVyVGV4dAorUEFTUyBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgncHJlU3BhY2VGaXJzdCcpLmlubmVyVGV4dCBpcyBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgncHJlU3BhY2VOb3JtYWwnKS5pbm5lclRleHQKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2NvbGxhcHNlZFNwYWNlRGl2Rmlyc3QnKS5pbm5lclRleHQgaXMgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2NvbGxhcHNlZFNwYWNlRGl2Tm9ybWFsJykuaW5uZXJUZXh0CitQQVNTIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb2xsYXBzZWRTcGFjZUNvbGxhcHNlZERpdkZpcnN0Jyku
aW5uZXJUZXh0IGlzIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb2xsYXBzZWRTcGFjZUNvbGxh
cHNlZERpdk5vcm1hbCcpLmlubmVyVGV4dAorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
Y29sbGFwc2VkU3BhY2VDb2xsYXBzZWREaXZGaXJzdCcpLmlubmVyVGV4dCBpcyAnZm9vXG5hYmNc
bicKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbGxhcHNlZFNwYWNlUHVuY3REaXZG
aXJzdCcpLmlubmVyVGV4dCBpcyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29sbGFwc2VkU3Bh
Y2VQdW5jdERpdk5vcm1hbCcpLmlubmVyVGV4dAorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnY29sbGFwc2VkU3BhY2VQdW5jdERpdkZpcnN0JykuaW5uZXJUZXh0IGlzICdmb29cbnwgYWJj
XG4nCitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkaXZTcGFuRmlyc3QnKS5pbm5lclRl
eHQgaXMgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RpdlNwYW5Ob3JtYWwnKS5pbm5lclRleHQK
K1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ludmlzaWJsZVByZScpLmlubmVyVGV4dCBp
cyAnJworUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW52aXNpYmxlUHJlRmlyc3QnKS5p
bm5lclRleHQgaXMgJ3QnCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKK2RpdgorZGl2CitwcmUKK3ByZQorYWJjCithYmMKKyBhYmMKKyBhYmMKK3Rlc3QK
KyAgYWJjCit0ZXN0CisgIGFiYwordGVzdAorYWJjCit0ZXN0CithYmMKK2ZvbworYWJjCitmb28K
K2FiYworZm9vCithYmMKK2ZvbworYWJjCitmb28KK3wgYWJjCitmb28KK3wgYWJjCisxMgorMTIK
K3QKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2lubmVyLXRleHQtZmlyc3QtbGV0
dGVyLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9pbm5lci10ZXh0LWZpcnN0LWxldHRlci5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmQzZTAzZTEzYzVkYzY0OWExY2Q5MDk4YTk0ZTQ2YWJiN2UzODk5OGEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9pbm5lci10ZXh0LWZpcnN0
LWxldHRlci5odG1sCkBAIC0wLDAgKzEsNjEgQEAKKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8
c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
dHlsZT4KKy5maXJzdDpmaXJzdC1sZXR0ZXIgeworICBmb250LXdlaWdodDogYm9sZDsKKyAgdmlz
aWJpbGl0eTogdmlzaWJsZTsKK30KKy5pbnZpc2libGUgeworICB2aXNpYmlsaXR5OiBoaWRkZW47
Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4K
KzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGRpdiBpZD0iZGl2Rmlyc3QiIGNsYXNzPSJmaXJz
dCI+ZGl2PC9kaXY+Cis8ZGl2IGlkPSJkaXZOb3JtYWwiPmRpdjwvZGl2PgorPHByZSBpZD0icEZp
cnN0IiBjbGFzcz0iZmlyc3QiPnByZTwvcHJlPgorPHByZSBpZD0icE5vcm1hbCI+cHJlPC9wcmU+
Cis8ZGl2IGlkPSJjb2xsYXBzZWRTcGFjZUZpcnN0Ij48c3Bhbj4gPC9zcGFuPjxkaXYgY2xhc3M9
ImZpcnN0Ij5hYmM8L2Rpdj48L2Rpdj4KKzxkaXYgaWQ9ImNvbGxhcHNlZFNwYWNlTm9ybWFsIj48
c3Bhbj4gPC9zcGFuPjxkaXY+YWJjPC9kaXY+PC9kaXY+Cis8ZGl2IGlkPSJjb2xsYXBzZWRTcGFj
ZVByZUZpcnN0Ij48c3Bhbj4gPC9zcGFuPjxwcmUgY2xhc3M9ImZpcnN0Ij5hYmM8L3ByZT48L2Rp
dj4KKzxkaXYgaWQ9ImNvbGxhcHNlZFNwYWNlUHJlTm9ybWFsIj48c3Bhbj4gPC9zcGFuPjxwcmU+
YWJjPC9wcmU+PC9kaXY+Cis8ZGl2IGlkPSJwcmVTcGFjZUZpcnN0Ij48c3Bhbj50ZXN0PC9zcGFu
PjxwcmUgY2xhc3M9ImZpcnN0Ij4gIGFiYzwvcHJlPjwvZGl2PgorPGRpdiBpZD0icHJlU3BhY2VO
b3JtYWwiPjxzcGFuPnRlc3Q8L3NwYW4+PHByZT4gIGFiYzwvcHJlPjwvZGl2PgorPGRpdiBpZD0i
ZGl2U3BhY2VGaXJzdCI+PHNwYW4+dGVzdDwvc3Bhbj48ZGl2IGNsYXNzPSJmaXJzdCI+ICBhYmM8
L2Rpdj48L2Rpdj4KKzxkaXYgaWQ9ImRpdlNwYWNlTm9ybWFsIj48c3Bhbj50ZXN0PC9zcGFuPjxk
aXY+ICBhYmM8L2Rpdj48L2Rpdj4KKzxkaXYgaWQ9ImNvbGxhcHNlZFNwYWNlRGl2Rmlyc3QiPjxz
cGFuPmZvbzwvc3Bhbj48c3Bhbj4gPC9zcGFuPjxkaXYgY2xhc3M9ImZpcnN0Ij5hYmM8L2Rpdj48
L2Rpdj4KKzxkaXYgaWQ9ImNvbGxhcHNlZFNwYWNlRGl2Tm9ybWFsIj48c3Bhbj5mb288L3NwYW4+
PHNwYW4+IDwvc3Bhbj48ZGl2PmFiYzwvZGl2PjwvZGl2PgorPGRpdiBpZD0iY29sbGFwc2VkU3Bh
Y2VDb2xsYXBzZWREaXZGaXJzdCI+PHNwYW4+Zm9vPC9zcGFuPjxzcGFuPiA8L3NwYW4+PGRpdiBj
bGFzcz0iZmlyc3QiPiAgYWJjPC9kaXY+PC9kaXY+Cis8ZGl2IGlkPSJjb2xsYXBzZWRTcGFjZUNv
bGxhcHNlZERpdk5vcm1hbCI+PHNwYW4+Zm9vPC9zcGFuPjxzcGFuPiA8L3NwYW4+PGRpdj4gIGFi
YzwvZGl2PjwvZGl2PgorPGRpdiBpZD0iY29sbGFwc2VkU3BhY2VQdW5jdERpdkZpcnN0Ij48c3Bh
bj5mb288L3NwYW4+PHNwYW4+IDwvc3Bhbj48ZGl2IGNsYXNzPSJmaXJzdCI+fCAgCithYmM8L2Rp
dj48L2Rpdj4KKzxkaXYgaWQ9ImNvbGxhcHNlZFNwYWNlUHVuY3REaXZOb3JtYWwiPjxzcGFuPmZv
bzwvc3Bhbj48c3Bhbj4gPC9zcGFuPjxkaXY+fCAgCithYmM8L2Rpdj48L2Rpdj4KKzxkaXYgaWQ9
ImRpdlNwYW5GaXJzdCIgY2xhc3M9ImZpcnN0Ij48c3BhbiBpZD0iZjEiPjE8L3NwYW4+PHNwYW4g
aWQ9ImYyIj4yPC9zcGFuPjwvZGl2PgorPGRpdiBpZD0iZGl2U3Bhbk5vcm1hbCI+PHNwYW4gaWQ9
Im4xIj4xPC9zcGFuPjxzcGFuIGlkPSJuMiI+Mjwvc3Bhbj48L2Rpdj4KKzxkaXYgaWQ9Imludmlz
aWJsZVByZSI+PHByZSBjbGFzcz0iaW52aXNpYmxlIj50ZXN0PC9wcmU+PC9kaXY+Cis8ZGl2IGlk
PSJpbnZpc2libGVQcmVGaXJzdCI+PHByZSBjbGFzcz0iaW52aXNpYmxlIGZpcnN0Ij50ZXN0PC9w
cmU+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgYSBsZXR0ZXIgd2l0
aCA6Zmlyc3QtbGV0dGVyIGFwcGxpZWQgaXMgcHJlc2VudCBpbiBpbm5lclRleHQuIik7CitzaG91
bGRCZSgiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RpdkZpcnN0JykuaW5uZXJUZXh0IiwgImRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdkaXZOb3JtYWwnKS5pbm5lclRleHQiKTsKK3Nob3VsZEJl
KCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncEZpcnN0JykuaW5uZXJUZXh0IiwgImRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdwTm9ybWFsJykuaW5uZXJUZXh0Iik7CitzaG91bGRCZSgiZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbGxhcHNlZFNwYWNlRmlyc3QnKS5pbm5lclRleHQiLCAiZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbGxhcHNlZFNwYWNlTm9ybWFsJykuaW5uZXJUZXh0Iik7
CitzaG91bGRCZSgiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbGxhcHNlZFNwYWNlUHJlRmly
c3QnKS5pbm5lclRleHQiLCAiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbGxhcHNlZFNwYWNl
UHJlTm9ybWFsJykuaW5uZXJUZXh0Iik7CitzaG91bGRCZSgiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ3ByZVNwYWNlRmlyc3QnKS5pbm5lclRleHQiLCAiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3ByZVNwYWNlTm9ybWFsJykuaW5uZXJUZXh0Iik7CitzaG91bGRCZSgiZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2NvbGxhcHNlZFNwYWNlRGl2Rmlyc3QnKS5pbm5lclRleHQiLCAiZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2NvbGxhcHNlZFNwYWNlRGl2Tm9ybWFsJykuaW5uZXJUZXh0Iik7Citz
aG91bGRCZSgiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbGxhcHNlZFNwYWNlQ29sbGFwc2Vk
RGl2Rmlyc3QnKS5pbm5lclRleHQiLCAiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbGxhcHNl
ZFNwYWNlQ29sbGFwc2VkRGl2Tm9ybWFsJykuaW5uZXJUZXh0Iik7CitzaG91bGRCZSgiZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbGxhcHNlZFNwYWNlQ29sbGFwc2VkRGl2Rmlyc3QnKS5pbm5l
clRleHQiLCAiJ2Zvb1xcbmFiY1xcbiciKTsKK3Nob3VsZEJlKCJkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnY29sbGFwc2VkU3BhY2VQdW5jdERpdkZpcnN0JykuaW5uZXJUZXh0IiwgImRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdjb2xsYXBzZWRTcGFjZVB1bmN0RGl2Tm9ybWFsJykuaW5uZXJUZXh0
Iik7CitzaG91bGRCZSgiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbGxhcHNlZFNwYWNlUHVu
Y3REaXZGaXJzdCcpLmlubmVyVGV4dCIsICInZm9vXFxufCBhYmNcXG4nIik7CitzaG91bGRCZSgi
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RpdlNwYW5GaXJzdCcpLmlubmVyVGV4dCIsICJkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnZGl2U3Bhbk5vcm1hbCcpLmlubmVyVGV4dCIpOworc2hvdWxk
QmUoImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbnZpc2libGVQcmUnKS5pbm5lclRleHQiLCAi
JyciKTsKK3Nob3VsZEJlKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW52aXNpYmxlUHJlRmly
c3QnKS5pbm5lclRleHQiLCAiJ3QnIik7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsK
Kzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3ZjYwODJlMGNkZDM2MTZmYjc0MjU1NWM1NzEx
ZWIyYzEyZDU0YTFmLi4yMGU2NWJjYTg0Njc5MTY5NTRmNWFmNzQ1OGVkMmM0YTJmNDczOWE1IDEw
MDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDIwIEBACisyMDEwLTA1LTI4ICBZb3NoaWtpIEhheWFzaGkgIDx5aGF5YXNoaUBnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEl0ZXJhdGUgb3ZlciA6Zmlyc3QtbGV0dGVyIHNvIHRoYXQgaXQgd2lsbCBiZSBpbmNsdWRlZCBp
biBpbm5lclRleHQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0zOTg2MworCisgICAgICAgIFRlc3Q6IGZhc3QvZG9tL2lubmVyLXRleHQtZmlyc3QtbGV0
dGVyLmh0bWwKKworICAgICAgICAqIGVkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6VGV4dEl0ZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OlRleHRJdGVyYXRvcjo6YWR2YW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6
OmhhbmRsZVRleHROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6aGFuZGxl
VGV4dEJveCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OmVtaXRUZXh0KToKKyAg
ICAgICAgKiBlZGl0aW5nL1RleHRJdGVyYXRvci5oOgorCiAyMDEwLTA1LTMxICBUb255IENoYW5n
ICA8dG9ueUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFuIEJlcm5zdGVp
bi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwIGIvV2ViQ29y
ZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKaW5kZXggZjNiZDlkZjZiOWY5NWJmMzBkZGEyYTMw
ZTcyNmQ3MzVmMThmOGIxZi4uNzc0MzZmOWNjZDAzMDY3YjQ3ODViMzc3ZGE5NzA0ODY3YTA5MzEy
MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKKysrIGIvV2Vi
Q29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRl
ICJSZW5kZXJUYWJsZUNlbGwuaCIKICNpbmNsdWRlICJSZW5kZXJUYWJsZVJvdy5oIgogI2luY2x1
ZGUgIlJlbmRlclRleHRDb250cm9sLmgiCisjaW5jbHVkZSAiUmVuZGVyVGV4dEZyYWdtZW50Lmgi
CiAjaW5jbHVkZSAiVmlzaWJsZVBvc2l0aW9uLmgiCiAjaW5jbHVkZSAidmlzaWJsZV91bml0cy5o
IgogCkBAIC0yNTcsNiArMjU4LDcgQEAgVGV4dEl0ZXJhdG9yOjpUZXh0SXRlcmF0b3IoKQogICAg
ICwgbV9lbWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucyhmYWxzZSkKICAg
ICAsIG1fZW50ZXJzVGV4dENvbnRyb2xzKGZhbHNlKQogICAgICwgbV9lbWl0c1RleHRXaXRob3V0
VHJhbnNjb2RpbmcoZmFsc2UpCisgICAgLCBtX2hhbmRsZWRGaXJzdExldHRlcihmYWxzZSkKIHsK
IH0KIApAQCAtMjcxLDYgKzI3Myw3IEBAIFRleHRJdGVyYXRvcjo6VGV4dEl0ZXJhdG9yKGNvbnN0
IFJhbmdlKiByLCBUZXh0SXRlcmF0b3JCZWhhdmlvciBiZWhhdmlvcikKICAgICAsIG1fZW1pdHND
aGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMoYmVoYXZpb3IgJiBUZXh0SXRlcmF0
b3JFbWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucykKICAgICAsIG1fZW50
ZXJzVGV4dENvbnRyb2xzKGJlaGF2aW9yICYgVGV4dEl0ZXJhdG9yRW50ZXJzVGV4dENvbnRyb2xz
KQogICAgICwgbV9lbWl0c1RleHRXaXRob3V0VHJhbnNjb2RpbmcoYmVoYXZpb3IgJiBUZXh0SXRl
cmF0b3JFbWl0c1RleHRzV2l0aG91dFRyYW5zY29kaW5nKQorICAgICwgbV9oYW5kbGVkRmlyc3RM
ZXR0ZXIoZmFsc2UpCiB7CiAgICAgaWYgKCFyKQogICAgICAgICByZXR1cm47CkBAIC00MTcsNiAr
NDIwLDcgQEAgdm9pZCBUZXh0SXRlcmF0b3I6OmFkdmFuY2UoKQogICAgICAgICAgICAgcHVzaEZ1
bGx5Q2xpcHBlZFN0YXRlKG1fZnVsbHlDbGlwcGVkU3RhY2ssIG1fbm9kZSk7CiAgICAgICAgIG1f
aGFuZGxlZE5vZGUgPSBmYWxzZTsKICAgICAgICAgbV9oYW5kbGVkQ2hpbGRyZW4gPSBmYWxzZTsK
KyAgICAgICAgbV9oYW5kbGVkRmlyc3RMZXR0ZXIgPSBmYWxzZTsKIAogICAgICAgICAvLyBob3cg
d291bGQgdGhpcyBldmVyIGJlPwogICAgICAgICBpZiAobV9wb3NpdGlvbk5vZGUpCkBAIC00MzUs
OCArNDM5LDYgQEAgYm9vbCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHROb2RlKCkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgUmVuZGVyVGV4dCogcmVuZGVyZXIgPSB0b1JlbmRlclRleHQo
bV9ub2RlLT5yZW5kZXJlcigpKTsKLSAgICBpZiAocmVuZGVyZXItPnN0eWxlKCktPnZpc2liaWxp
dHkoKSAhPSBWSVNJQkxFKQotICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAogICAgIG1f
bGFzdFRleHROb2RlID0gbV9ub2RlOwogICAgIFN0cmluZyBzdHIgPSByZW5kZXJlci0+dGV4dCgp
OwpAQCAtNDQ0LDEwICs0NDYsMTYgQEAgYm9vbCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHROb2Rl
KCkKICAgICAvLyBoYW5kbGUgcHJlLWZvcm1hdHRlZCB0ZXh0CiAgICAgaWYgKCFyZW5kZXJlci0+
c3R5bGUoKS0+Y29sbGFwc2VXaGl0ZVNwYWNlKCkpIHsKICAgICAgICAgaW50IHJ1blN0YXJ0ID0g
bV9vZmZzZXQ7Ci0gICAgICAgIGlmIChtX2xhc3RUZXh0Tm9kZUVuZGVkV2l0aENvbGxhcHNlZFNw
YWNlKSB7CisgICAgICAgIGlmIChtX2xhc3RUZXh0Tm9kZUVuZGVkV2l0aENvbGxhcHNlZFNwYWNl
ICYmIGhhc1Zpc2libGVUZXh0Tm9kZShyZW5kZXJlcikpIHsKICAgICAgICAgICAgIGVtaXRDaGFy
YWN0ZXIoJyAnLCBtX25vZGUsIDAsIHJ1blN0YXJ0LCBydW5TdGFydCk7CiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KKyAgICAgICAgaWYgKCFtX2hhbmRsZWRGaXJzdExldHRl
ciAmJiByZW5kZXJlci0+aXNUZXh0RnJhZ21lbnQoKSkgeworICAgICAgICAgICAgaWYgKGhhbmRs
ZVRleHROb2RlRmlyc3RMZXR0ZXIoc3RhdGljX2Nhc3Q8UmVuZGVyVGV4dEZyYWdtZW50Kj4ocmVu
ZGVyZXIpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAg
ICAgaWYgKHJlbmRlcmVyLT5zdHlsZSgpLT52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaW50IHN0ckxlbmd0aCA9IHN0ci5sZW5ndGgo
KTsKICAgICAgICAgaW50IGVuZCA9IChtX25vZGUgPT0gbV9lbmRDb250YWluZXIpID8gbV9lbmRP
ZmZzZXQgOiBJTlRfTUFYOwogICAgICAgICBpbnQgcnVuRW5kID0gbWluKHN0ckxlbmd0aCwgZW5k
KTsKQEAgLTQ1OSw3ICs0NjcsMTYgQEAgYm9vbCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHROb2Rl
KCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCisgICAgaWYgKHJlbmRlcmVyLT5zdHls
ZSgpLT52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSkgeworICAgICAgICBpZiAoIW1faGFuZGxlZEZp
cnN0TGV0dGVyICYmIHJlbmRlcmVyLT5pc1RleHRGcmFnbWVudCgpKQorICAgICAgICAgICAgaGFu
ZGxlVGV4dE5vZGVGaXJzdExldHRlcihzdGF0aWNfY2FzdDxSZW5kZXJUZXh0RnJhZ21lbnQqPihy
ZW5kZXJlcikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogICAgIGlmICghcmVuZGVy
ZXItPmZpcnN0VGV4dEJveCgpICYmIHN0ci5sZW5ndGgoKSA+IDApIHsKKyAgICAgICAgaWYgKCFt
X2hhbmRsZWRGaXJzdExldHRlciAmJiByZW5kZXJlci0+aXNUZXh0RnJhZ21lbnQoKSkgeworICAg
ICAgICAgICAgaWYgKGhhbmRsZVRleHROb2RlRmlyc3RMZXR0ZXIoc3RhdGljX2Nhc3Q8UmVuZGVy
VGV4dEZyYWdtZW50Kj4ocmVuZGVyZXIpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIH0KICAgICAgICAgbV9sYXN0VGV4dE5vZGVFbmRlZFdpdGhDb2xsYXBzZWRTcGFj
ZSA9IHRydWU7IC8vIGVudGlyZSBibG9jayBpcyBjb2xsYXBzZWQgc3BhY2UKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQpAQCAtNDc1LDYgKzQ5MiwxMCBAQCBib29sIFRleHRJdGVyYXRvcjo6
aGFuZGxlVGV4dE5vZGUoKQogICAgIH0KICAgICAKICAgICBtX3RleHRCb3ggPSByZW5kZXJlci0+
Y29udGFpbnNSZXZlcnNlZFRleHQoKSA/IChtX3NvcnRlZFRleHRCb3hlcy5pc0VtcHR5KCkgPyAw
IDogbV9zb3J0ZWRUZXh0Qm94ZXNbMF0pIDogcmVuZGVyZXItPmZpcnN0VGV4dEJveCgpOworICAg
IGlmICghbV90ZXh0Qm94ICYmICFtX2hhbmRsZWRGaXJzdExldHRlciAmJiByZW5kZXJlci0+aXNU
ZXh0RnJhZ21lbnQoKSkgeworICAgICAgICBpZiAoaGFuZGxlVGV4dE5vZGVGaXJzdExldHRlcihz
dGF0aWNfY2FzdDxSZW5kZXJUZXh0RnJhZ21lbnQqPihyZW5kZXJlcikpKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KICAgICBoYW5kbGVUZXh0Qm94KCk7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CkBAIC00OTEsOCArNTEyLDcgQEAgdm9pZCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHRC
b3goKQogCiAgICAgICAgIC8vIENoZWNrIGZvciBjb2xsYXBzZWQgc3BhY2UgYXQgdGhlIHN0YXJ0
IG9mIHRoaXMgcnVuLgogICAgICAgICBJbmxpbmVUZXh0Qm94KiBmaXJzdFRleHRCb3ggPSByZW5k
ZXJlci0+Y29udGFpbnNSZXZlcnNlZFRleHQoKSA/IG1fc29ydGVkVGV4dEJveGVzWzBdIDogcmVu
ZGVyZXItPmZpcnN0VGV4dEJveCgpOwotICAgICAgICBib29sIG5lZWRTcGFjZSA9IG1fbGFzdFRl
eHROb2RlRW5kZWRXaXRoQ29sbGFwc2VkU3BhY2UKLSAgICAgICAgICAgIHx8IChtX3RleHRCb3gg
PT0gZmlyc3RUZXh0Qm94ICYmIHRleHRCb3hTdGFydCA9PSBydW5TdGFydCAmJiBydW5TdGFydCA+
IDApOworICAgICAgICBib29sIG5lZWRTcGFjZSA9IG1fbGFzdFRleHROb2RlRW5kZWRXaXRoQ29s
bGFwc2VkU3BhY2UgfHwgKG1fdGV4dEJveCA9PSBmaXJzdFRleHRCb3ggJiYgdGV4dEJveFN0YXJ0
ID09IHJ1blN0YXJ0ICYmIHJ1blN0YXJ0ID4gMCk7CiAgICAgICAgIGlmIChuZWVkU3BhY2UgJiYg
IWlzQ29sbGFwc2libGVXaGl0ZXNwYWNlKG1fbGFzdENoYXJhY3RlcikgJiYgbV9sYXN0Q2hhcmFj
dGVyKSB7CiAgICAgICAgICAgICBpZiAobV9sYXN0VGV4dE5vZGUgPT0gbV9ub2RlICYmIHJ1blN0
YXJ0ID4gMCAmJiBzdHJbcnVuU3RhcnQgLSAxXSA9PSAnICcpIHsKICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBzcGFjZVJ1blN0YXJ0ID0gcnVuU3RhcnQgLSAxOwpAQCAtNTAzLDYgKzUyMywxMCBA
QCB2b2lkIFRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dEJveCgpCiAgICAgICAgICAgICAgICAgZW1p
dENoYXJhY3RlcignICcsIG1fbm9kZSwgMCwgcnVuU3RhcnQsIHJ1blN0YXJ0KTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQorICAgICAgICBpZiAobV90ZXh0Qm94ID09IGZpcnN0VGV4
dEJveCAmJiAhbV9oYW5kbGVkRmlyc3RMZXR0ZXIgJiYgcmVuZGVyZXItPmlzVGV4dEZyYWdtZW50
KCkpIHsKKyAgICAgICAgICAgIGlmIChoYW5kbGVUZXh0Tm9kZUZpcnN0TGV0dGVyKHN0YXRpY19j
YXN0PFJlbmRlclRleHRGcmFnbWVudCo+KHJlbmRlcmVyKSkpCisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CiAgICAgICAgIGludCB0ZXh0Qm94RW5kID0gdGV4dEJveFN0YXJ0ICsg
bV90ZXh0Qm94LT5sZW4oKTsKICAgICAgICAgaW50IHJ1bkVuZCA9IG1pbih0ZXh0Qm94RW5kLCBl
bmQpOwogICAgICAgICAKQEAgLTU1MSw2ICs1NzUsMzcgQEAgdm9pZCBUZXh0SXRlcmF0b3I6Omhh
bmRsZVRleHRCb3goKQogICAgIH0KIH0KIAorYm9vbCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHRO
b2RlRmlyc3RMZXR0ZXIoUmVuZGVyVGV4dEZyYWdtZW50KiByZW5kZXJlcikKK3sKKyAgICBpZiAo
cmVuZGVyZXItPmZpcnN0TGV0dGVyKCkpIHsKKyAgICAgICAgUmVuZGVyT2JqZWN0KiByID0gcmVu
ZGVyZXItPmZpcnN0TGV0dGVyKCk7CisgICAgICAgIGlmIChyLT5zdHlsZSgpLT52aXNpYmlsaXR5
KCkgIT0gVklTSUJMRSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKG1f
bGFzdFRleHROb2RlRW5kZWRXaXRoQ29sbGFwc2VkU3BhY2UgJiYgIWlzQ29sbGFwc2libGVXaGl0
ZXNwYWNlKG1fbGFzdENoYXJhY3RlcikgJiYgbV9sYXN0Q2hhcmFjdGVyKSB7CisgICAgICAgICAg
ICBlbWl0Q2hhcmFjdGVyKCcgJywgbV9ub2RlLCAwLCBtX29mZnNldCwgbV9vZmZzZXQpOworICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgZm9yIChSZW5kZXJPYmpl
Y3QgKmN1cnJDaGlsZCA9IHItPmZpcnN0Q2hpbGQoKTsgY3VyckNoaWxkOyBjdXJyQ2hpbGQtPm5l
eHRTaWJsaW5nKCkpIHsKKyAgICAgICAgICAgIGlmIChjdXJyQ2hpbGQtPmlzVGV4dCgpKSB7Cisg
ICAgICAgICAgICAgICAgUmVuZGVyVGV4dCogZmlyc3RMZXR0ZXIgPSB0b1JlbmRlclRleHQoY3Vy
ckNoaWxkKTsKKyAgICAgICAgICAgICAgICBpbnQgcnVuU3RhcnQgPSBtX29mZnNldDsKKyAgICAg
ICAgICAgICAgICBTdHJpbmcgc3RyID0gZmlyc3RMZXR0ZXItPnRleHQoKTsKKyAgICAgICAgICAg
ICAgICBpbnQgcnVuRW5kID0gc3RyLmxlbmd0aCgpOworICAgICAgICAgICAgICAgIGlmIChyZW5k
ZXJlci0+c3R5bGUoKS0+Y29sbGFwc2VXaGl0ZVNwYWNlKCkpCisgICAgICAgICAgICAgICAgICAg
IHdoaWxlIChydW5TdGFydCA8IHJ1bkVuZCAmJiBzdHJbcnVuU3RhcnRdID09ICcgJykKKyAgICAg
ICAgICAgICAgICAgICAgICAgICsrcnVuU3RhcnQ7CisgICAgICAgICAgICAgICAgaWYgKHJ1blN0
YXJ0IDwgcnVuRW5kKSB7CisgICAgICAgICAgICAgICAgICAgIGVtaXRUZXh0KG1fbm9kZSwgZmly
c3RMZXR0ZXIsIHJ1blN0YXJ0LCBydW5FbmQpOworICAgICAgICAgICAgICAgICAgICBtX2hhbmRs
ZWRGaXJzdExldHRlciA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBt
X2hhbmRsZWRGaXJzdExldHRlciA9IHRydWU7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBib29s
IFRleHRJdGVyYXRvcjo6aGFuZGxlUmVwbGFjZWRFbGVtZW50KCkKIHsKICAgICBpZiAobV9mdWxs
eUNsaXBwZWRTdGFjay50b3AoKSkKQEAgLTU5Nyw2ICs2NTIsMTggQEAgYm9vbCBUZXh0SXRlcmF0
b3I6OmhhbmRsZVJlcGxhY2VkRWxlbWVudCgpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wg
VGV4dEl0ZXJhdG9yOjpoYXNWaXNpYmxlVGV4dE5vZGUoUmVuZGVyVGV4dCogcmVuZGVyZXIpCit7
CisgICAgaWYgKHJlbmRlcmVyLT5zdHlsZSgpLT52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSkKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHJlbmRlcmVyLT5pc1RleHRGcmFnbWVudCgpKSB7
CisgICAgICAgIFJlbmRlclRleHRGcmFnbWVudCogZnJhZ21lbnQgPSBzdGF0aWNfY2FzdDxSZW5k
ZXJUZXh0RnJhZ21lbnQqPihyZW5kZXJlcik7CisgICAgICAgIGlmIChmcmFnbWVudC0+Zmlyc3RM
ZXR0ZXIoKSAmJiBmcmFnbWVudC0+Zmlyc3RMZXR0ZXIoKS0+c3R5bGUoKS0+dmlzaWJpbGl0eSgp
ID09IFZJU0lCTEUpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJu
IGZhbHNlOworfQorCiBzdGF0aWMgYm9vbCBzaG91bGRFbWl0VGFiQmVmb3JlTm9kZShOb2RlKiBu
b2RlKQogewogICAgIFJlbmRlck9iamVjdCogciA9IG5vZGUtPnJlbmRlcmVyKCk7CkBAIC04ODgs
OSArOTU1LDkgQEAgdm9pZCBUZXh0SXRlcmF0b3I6OmVtaXRDaGFyYWN0ZXIoVUNoYXIgYywgTm9k
ZSogdGV4dE5vZGUsIE5vZGUqIG9mZnNldEJhc2VOb2RlLAogICAgIG1fbGFzdENoYXJhY3RlciA9
IGM7CiB9CiAKLXZvaWQgVGV4dEl0ZXJhdG9yOjplbWl0VGV4dChOb2RlKiB0ZXh0Tm9kZSwgaW50
IHRleHRTdGFydE9mZnNldCwgaW50IHRleHRFbmRPZmZzZXQpCit2b2lkIFRleHRJdGVyYXRvcjo6
ZW1pdFRleHQoTm9kZSogdGV4dE5vZGUsIFJlbmRlck9iamVjdCogcmVuZGVyT2JqZWN0LCBpbnQg
dGV4dFN0YXJ0T2Zmc2V0LCBpbnQgdGV4dEVuZE9mZnNldCkKIHsKLSAgICBSZW5kZXJUZXh0KiBy
ZW5kZXJlciA9IHRvUmVuZGVyVGV4dChtX25vZGUtPnJlbmRlcmVyKCkpOworICAgIFJlbmRlclRl
eHQqIHJlbmRlcmVyID0gdG9SZW5kZXJUZXh0KHJlbmRlck9iamVjdCk7CiAgICAgbV90ZXh0ID0g
bV9lbWl0c1RleHRXaXRob3V0VHJhbnNjb2RpbmcgPyByZW5kZXJlci0+dGV4dFdpdGhvdXRUcmFu
c2NvZGluZygpIDogcmVuZGVyZXItPnRleHQoKTsKICAgICBBU1NFUlQobV90ZXh0LmNoYXJhY3Rl
cnMoKSk7CiAKQEAgLTkwNiw2ICs5NzMsMTEgQEAgdm9pZCBUZXh0SXRlcmF0b3I6OmVtaXRUZXh0
KE5vZGUqIHRleHROb2RlLCBpbnQgdGV4dFN0YXJ0T2Zmc2V0LCBpbnQgdGV4dEVuZE9mZnMKICAg
ICBtX2hhc0VtaXR0ZWQgPSB0cnVlOwogfQogCit2b2lkIFRleHRJdGVyYXRvcjo6ZW1pdFRleHQo
Tm9kZSogdGV4dE5vZGUsIGludCB0ZXh0U3RhcnRPZmZzZXQsIGludCB0ZXh0RW5kT2Zmc2V0KQor
eworICAgIGVtaXRUZXh0KHRleHROb2RlLCBtX25vZGUtPnJlbmRlcmVyKCksIHRleHRTdGFydE9m
ZnNldCwgdGV4dEVuZE9mZnNldCk7Cit9CisKIFBhc3NSZWZQdHI8UmFuZ2U+IFRleHRJdGVyYXRv
cjo6cmFuZ2UoKSBjb25zdAogewogICAgIC8vIHVzZSB0aGUgY3VycmVudCBydW4gaW5mb3JtYXRp
b24sIGlmIHdlIGhhdmUgaXQKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0
b3IuaCBiL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaAppbmRleCBiYTM4MWI5YmZhNDRh
NzlkMTA2NDk5OWQyYzYwN2JlNjlmNzZhODkzLi40NmFjODBlMjkyMzRiNTU3ZmIzYmEzYmM3OGZi
NGViODQyMzlmYjdiIDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmgK
KysrIGIvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oCkBAIC0zMiw2ICszMiw5IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgUmVuZGVyVGV4dDsKK2NsYXNzIFJlbmRlclRl
eHRGcmFnbWVudDsKKwogLy8gRklYTUU6IENhbid0IHJlYWxseSBhbnN3ZXIgdGhpcyBxdWVzdGlv
biBjb3JyZWN0bHkgd2l0aG91dCBrbm93aW5nIHRoZSB3aGl0ZS1zcGFjZSBtb2RlLgogLy8gRklY
TUU6IE1vdmUgdGhpcyBzb21ld2hlcmUgZWxzZSBpbiB0aGUgZWRpdGluZyBkaXJlY3RvcnkuIEl0
IGRvZXNuJ3QgYmVsb25nIGhlcmUuCiBpbmxpbmUgYm9vbCBpc0NvbGxhcHNpYmxlV2hpdGVzcGFj
ZShVQ2hhciBjKQpAQCAtMTAyLDcgKzEwNSwxMCBAQCBwcml2YXRlOgogICAgIGJvb2wgaGFuZGxl
UmVwbGFjZWRFbGVtZW50KCk7CiAgICAgYm9vbCBoYW5kbGVOb25UZXh0Tm9kZSgpOwogICAgIHZv
aWQgaGFuZGxlVGV4dEJveCgpOworICAgIGJvb2wgaGFuZGxlVGV4dE5vZGVGaXJzdExldHRlcihS
ZW5kZXJUZXh0RnJhZ21lbnQqKTsKKyAgICBib29sIGhhc1Zpc2libGVUZXh0Tm9kZShSZW5kZXJU
ZXh0Kik7CiAgICAgdm9pZCBlbWl0Q2hhcmFjdGVyKFVDaGFyLCBOb2RlKiB0ZXh0Tm9kZSwgTm9k
ZSogb2Zmc2V0QmFzZU5vZGUsIGludCB0ZXh0U3RhcnRPZmZzZXQsIGludCB0ZXh0RW5kT2Zmc2V0
KTsKKyAgICB2b2lkIGVtaXRUZXh0KE5vZGUqIHRleHROb2RlLCBSZW5kZXJPYmplY3QqIHJlbmRl
ck9iamVjdCwgaW50IHRleHRTdGFydE9mZnNldCwgaW50IHRleHRFbmRPZmZzZXQpOwogICAgIHZv
aWQgZW1pdFRleHQoTm9kZSogdGV4dE5vZGUsIGludCB0ZXh0U3RhcnRPZmZzZXQsIGludCB0ZXh0
RW5kT2Zmc2V0KTsKICAgICAKICAgICAvLyBDdXJyZW50IHBvc2l0aW9uLCBub3QgbmVjZXNzYXJp
bHkgb2YgdGhlIHRleHQgYmVpbmcgcmV0dXJuZWQsIGJ1dCBwb3NpdGlvbgpAQCAtMTU5LDYgKzE2
NSw4IEBAIHByaXZhdGU6CiAKICAgICAvLyBVc2VkIHdoZW4gd2Ugd2FudCB0ZXh0cyBmb3IgY29w
eWluZywgcGFzdGluZywgYW5kIHRyYW5zcG9zaW5nLgogICAgIGJvb2wgbV9lbWl0c1RleHRXaXRo
b3V0VHJhbnNjb2Rpbmc7CisgICAgLy8gVXNlZCB3aGVuIGRlY2lkaW5nIHRleHQgZnJhZ21lbnQg
Y3JlYXRlZCBieSA6Zmlyc3QtbGV0dGVyIHNob3VsZCBiZSBsb29rZWQgaW50by4KKyAgICBib29s
IG1faGFuZGxlZEZpcnN0TGV0dGVyOwogfTsKIAogLy8gSXRlcmF0ZXMgdGhyb3VnaCB0aGUgRE9N
IHJhbmdlLCByZXR1cm5pbmcgYWxsIHRoZSB0ZXh0LCBhbmQgMC1sZW5ndGggYm91bmRhcmllcwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57747</attachid>
            <date>2010-06-03 02:35:33 -0700</date>
            <delta_ts>2010-06-03 02:44:51 -0700</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>bug-39863-20100603183531.patch</filename>
            <type>text/plain</type>
            <size>20611</size>
            <attacher name="Yoshiki Hayashi">yhayashi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBjMWRhNzY5YTFhYjEwZjJhMWU3OWZjNzc5MWQ1NTZkYTUwMzc3ZjI5Li42Y2M1MjE2
MTcyMDE1OGM3ZGEzZGEzZTQ3MjQ5OTNiNDNhNzk1MjVkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTAtMDUtMjggIFlvc2hpa2kgSGF5YXNoaSAgPHloYXlhc2hpQGdvb2dsZS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSXRlcmF0ZSBvdmVy
IDpmaXJzdC1sZXR0ZXIgc28gdGhhdCBpdCB3aWxsIGJlIGluY2x1ZGVkIGluIGlubmVyVGV4dC4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5ODYzCisK
KyAgICAgICAgKiBmYXN0L2RvbS9pbm5lci10ZXh0LWZpcnN0LWxldHRlci1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL2lubmVyLXRleHQtZmlyc3QtbGV0dGVyLmh0bWw6
IEFkZGVkLgorCiAyMDEwLTA1LTMxICBUb255IENoYW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgRGFuIEJlcm5zdGVpbi4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvY3NzL2dldENvbXB1dGVkU3R5bGUvZ2V0Q29tcHV0ZWRTdHlsZS13aXRoLXBzZXVk
by1lbGVtZW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL2dldENvbXB1dGVk
U3R5bGUvZ2V0Q29tcHV0ZWRTdHlsZS13aXRoLXBzZXVkby1lbGVtZW50LWV4cGVjdGVkLnR4dApp
bmRleCA0OTU3NmYxODA2Y2UzYjA2YjU0YTFkNjkxNTg0YzM1NDY2MGQwNjA1Li4wZTdiYzUwZTRh
MmVkM2QxOGJiZTQ4YTk0N2ZiMjNjOGY4YzNlNTkxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9m
YXN0L2Nzcy9nZXRDb21wdXRlZFN0eWxlL2dldENvbXB1dGVkU3R5bGUtd2l0aC1wc2V1ZG8tZWxl
bWVudC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvZ2V0Q29tcHV0ZWRT
dHlsZS9nZXRDb21wdXRlZFN0eWxlLXdpdGgtcHNldWRvLWVsZW1lbnQtZXhwZWN0ZWQudHh0CkBA
IC0xLDcgKzEsNyBAQAogVGVzdCBmb3IgV2ViS2l0IGJ1ZyAyNDAyMTogcHNldWRvLWVsZW1lbnQg
c3R5bGVzIG5vdCBhY2Nlc3NpYmxlIC8gcmV0cmlldmFibGUgdmlhIERPTSBtZXRob2RzCiAKIAot
b3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRpcGlzaWNpbmcgZWxpdCwg
c2VkIGRvIGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1bnQgdXQgbGFib3JlIGV0IGRvbG9yZSBtYWdu
YSBhbGlxdWEuIFV0IGVuaW0gYWQgbWluaW0gdmVuaWFtLCBxdWlzIG5vc3RydWQgZXhlcmNpdGF0
aW9uIHVsbGFtY28gbGFib3JpcyBuaXNpIHV0IGFsaXF1aXAgZXggZWEgY29tbW9kbyBjb25zZXF1
YXQuIER1aXMgYXV0ZSBpcnVyZSBkb2xvciBpbiByZXByZWhlbmRlcml0IGluIHZvbHVwdGF0ZSB2
ZWxpdCBlc3NlIGNpbGx1bSBkb2xvcmUgZXUgZnVnaWF0IG51bGxhIHBhcmlhdHVyLiBFeGNlcHRl
dXIgc2ludCBvY2NhZWNhdCBjdXBpZGF0YXQgbm9uIHByb2lkZW50LCBzdW50IGluIGN1bHBhIHF1
aSBvZmZpY2lhIGRlc2VydW50IG1vbGxpdCBhbmltIGlkIGVzdCBsYWJvcnVtLgorTG9yZW0gaXBz
dW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2ljaW5nIGVsaXQsIHNlZCBkbyBl
aXVzbW9kIHRlbXBvciBpbmNpZGlkdW50IHV0IGxhYm9yZSBldCBkb2xvcmUgbWFnbmEgYWxpcXVh
LiBVdCBlbmltIGFkIG1pbmltIHZlbmlhbSwgcXVpcyBub3N0cnVkIGV4ZXJjaXRhdGlvbiB1bGxh
bWNvIGxhYm9yaXMgbmlzaSB1dCBhbGlxdWlwIGV4IGVhIGNvbW1vZG8gY29uc2VxdWF0LiBEdWlz
IGF1dGUgaXJ1cmUgZG9sb3IgaW4gcmVwcmVoZW5kZXJpdCBpbiB2b2x1cHRhdGUgdmVsaXQgZXNz
ZSBjaWxsdW0gZG9sb3JlIGV1IGZ1Z2lhdCBudWxsYSBwYXJpYXR1ci4gRXhjZXB0ZXVyIHNpbnQg
b2NjYWVjYXQgY3VwaWRhdGF0IG5vbiBwcm9pZGVudCwgc3VudCBpbiBjdWxwYSBxdWkgb2ZmaWNp
YSBkZXNlcnVudCBtb2xsaXQgYW5pbSBpZCBlc3QgbGFib3J1bS4KIAogTWlkZGxlCiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2lubmVyLXRleHQtZmlyc3QtbGV0dGVyLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2lubmVyLXRleHQtZmlyc3QtbGV0dGVyLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMGVjOGUxZTI5ODM4Zjg2MTEyZjFhNTIyNmM3ODI0OGQw
ZDBmZmFlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vaW5uZXItdGV4
dC1maXJzdC1sZXR0ZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNzAgQEAKK1RoaXMgdGVzdHMg
YSBsZXR0ZXIgd2l0aCA6Zmlyc3QtbGV0dGVyIGFwcGxpZWQgaXMgcHJlc2VudCBpbiBpbm5lclRl
eHQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdkaXZGaXJzdCcpLmlubmVyVGV4dCBpcyBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnZGl2Tm9ybWFsJykuaW5uZXJUZXh0CitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdw
Rmlyc3QnKS5pbm5lclRleHQgaXMgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BOb3JtYWwnKS5p
bm5lclRleHQKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbGxhcHNlZFNwYWNlRmly
c3QnKS5pbm5lclRleHQgaXMgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbGxhcHNlZFNwYWNl
Tm9ybWFsJykuaW5uZXJUZXh0CitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb2xsYXBz
ZWRTcGFjZVByZUZpcnN0JykuaW5uZXJUZXh0IGlzIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdj
b2xsYXBzZWRTcGFjZVByZU5vcm1hbCcpLmlubmVyVGV4dAorUEFTUyBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgncHJlTGluZUZpcnN0JykuaW5uZXJUZXh0IGlzIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdwcmVMaW5lTm9ybWFsJykuaW5uZXJUZXh0CitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdwcmVXcmFwRmlyc3QnKS5pbm5lclRleHQgaXMgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3ByZVdyYXBOb3JtYWwnKS5pbm5lclRleHQKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3ByZVNwYWNlRmlyc3QnKS5pbm5lclRleHQgaXMgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3By
ZVNwYWNlTm9ybWFsJykuaW5uZXJUZXh0CitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdj
b2xsYXBzZWRTcGFjZURpdkZpcnN0JykuaW5uZXJUZXh0IGlzIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdjb2xsYXBzZWRTcGFjZURpdk5vcm1hbCcpLmlubmVyVGV4dAorUEFTUyBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnZmlyc3RDb2xsYXBzZWREaXZGaXJzdCcpLmlubmVyVGV4dCBpcyBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnZmlyc3RDb2xsYXBzZWREaXZOb3JtYWwnKS5pbm5lclRleHQK
K1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbGxhcHNlZFNwYWNlQ29sbGFwc2VkRGl2
Rmlyc3QnKS5pbm5lclRleHQgaXMgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbGxhcHNlZFNw
YWNlQ29sbGFwc2VkRGl2Tm9ybWFsJykuaW5uZXJUZXh0CitQQVNTIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdjb2xsYXBzZWRTcGFjZUNvbGxhcHNlZERpdkZpcnN0JykuaW5uZXJUZXh0IGlzICdm
b29cbmFiY1xuJworUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29sbGFwc2VkU3BhY2VQ
dW5jdERpdkZpcnN0JykuaW5uZXJUZXh0IGlzIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb2xs
YXBzZWRTcGFjZVB1bmN0RGl2Tm9ybWFsJykuaW5uZXJUZXh0CitQQVNTIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdjb2xsYXBzZWRTcGFjZVB1bmN0RGl2Rmlyc3QnKS5pbm5lclRleHQgaXMgJ2Zv
b1xufCBhYmNcbicKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RpdlNwYW5GaXJzdCcp
LmlubmVyVGV4dCBpcyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGl2U3Bhbk5vcm1hbCcpLmlu
bmVyVGV4dAorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW52aXNpYmxlUHJlJykuaW5u
ZXJUZXh0IGlzICcnCitGQUlMIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbnZpc2libGVQcmVG
aXJzdCcpLmlubmVyVGV4dCBzaG91bGQgYmUgdC4gV2FzIHQKKy4KK1BBU1MgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2ludmlzaWJsZScpLmlubmVyVGV4dCBpcyAndGVzdFxuJworUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCitkaXYKK2RpdgorcHJlCitw
cmUKK2FiYworYWJjCisgYWJjCisgYWJjCit0ZXN0CisgIGFiYwordGVzdAorICBhYmMKK3Rlc3QK
K2FiYwordGVzdAorYWJjCit0ZXN0Cit0ZXN0CisKK3Rlc3QKKwordGVzdAorZm9vCithYmMKK2Zv
bworYWJjCithYmMKK2RlZgorYWJjCitkZWYKK2ZvbworYWJjCitmb28KK2FiYworZm9vCit8IGFi
YworZm9vCit8IGFiYworMTIKKzEyCit0Cit0ZXN0CitSZXN1bHRzCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL2lubmVyLXRleHQtZmlyc3QtbGV0dGVyLmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9pbm5lci10ZXh0LWZpcnN0LWxldHRlci5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg2
NDc2ODEyYmY4NTkwNTJlZjM5NGVjMTViNTY3M2M5NzI3MGEwNmYKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9pbm5lci10ZXh0LWZpcnN0LWxldHRlci5odG1sCkBAIC0w
LDAgKzEsOTAgQEAKKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KKy5maXJzdDpmaXJz
dC1sZXR0ZXIgeworICBmb250LXdlaWdodDogYm9sZDsKKyAgdmlzaWJpbGl0eTogdmlzaWJsZTsK
K30KKy52aXNpYmxlIHsKKyAgdmlzaWJsaXR5OiB2aXNpYmxlOworfQorLmludmlzaWJsZSB7Cisg
IHZpc2liaWxpdHk6IGhpZGRlbjsKK30KKy5wcmVMaW5lIHsKKyAgd2hpdGUtc3BhY2U6IHByZS1s
aW5lOworfQorLnByZVdyYXAgeworICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7Cit9Cis8L3N0eWxl
PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPGRpdiBpZD0iZGl2Rmlyc3QiIGNsYXNzPSJmaXJzdCI+ZGl2PC9kaXY+
Cis8ZGl2IGlkPSJkaXZOb3JtYWwiPmRpdjwvZGl2PgorPHByZSBpZD0icEZpcnN0IiBjbGFzcz0i
Zmlyc3QiPnByZTwvcHJlPgorPHByZSBpZD0icE5vcm1hbCI+cHJlPC9wcmU+Cis8ZGl2IGlkPSJj
b2xsYXBzZWRTcGFjZUZpcnN0Ij48c3Bhbj4gPC9zcGFuPjxkaXYgY2xhc3M9ImZpcnN0Ij5hYmM8
L2Rpdj48L2Rpdj4KKzxkaXYgaWQ9ImNvbGxhcHNlZFNwYWNlTm9ybWFsIj48c3Bhbj4gPC9zcGFu
PjxkaXY+YWJjPC9kaXY+PC9kaXY+Cis8ZGl2IGlkPSJjb2xsYXBzZWRTcGFjZVByZUZpcnN0Ij48
c3Bhbj4gPC9zcGFuPjxwcmUgY2xhc3M9ImZpcnN0Ij5hYmM8L3ByZT48L2Rpdj4KKzxkaXYgaWQ9
ImNvbGxhcHNlZFNwYWNlUHJlTm9ybWFsIj48c3Bhbj4gPC9zcGFuPjxwcmU+YWJjPC9wcmU+PC9k
aXY+Cis8ZGl2IGlkPSJwcmVTcGFjZUZpcnN0Ij48c3Bhbj50ZXN0PC9zcGFuPjxwcmUgY2xhc3M9
ImZpcnN0Ij4gIGFiYzwvcHJlPjwvZGl2PgorPGRpdiBpZD0icHJlU3BhY2VOb3JtYWwiPjxzcGFu
PnRlc3Q8L3NwYW4+PHByZT4gIGFiYzwvcHJlPjwvZGl2PgorPGRpdiBpZD0iZGl2U3BhY2VGaXJz
dCI+PHNwYW4+dGVzdDwvc3Bhbj48ZGl2IGNsYXNzPSJmaXJzdCI+ICBhYmM8L2Rpdj48L2Rpdj4K
KzxkaXYgaWQ9ImRpdlNwYWNlTm9ybWFsIj48c3Bhbj50ZXN0PC9zcGFuPjxkaXY+ICBhYmM8L2Rp
dj48L2Rpdj4KKzxkaXYgaWQ9InByZUxpbmVGaXJzdCIgY2xhc3M9ImZpcnN0IHByZUxpbmUiPnRl
c3Q8L2Rpdj4KKzxkaXYgaWQ9InByZUxpbmVOb3JtYWwiIGNsYXNzPSJwcmVMaW5lIj50ZXN0PC9k
aXY+Cis8ZGl2IGlkPSJwcmVXcmFwRmlyc3QiIGNsYXNzPSJmaXJzdCBwcmVXcmFwIj4KK3Rlc3Q8
L2Rpdj4KKzxkaXYgaWQ9InByZVdyYXBOb3JtYWwiIGNsYXNzPSJwcmVXcmFwIj4KK3Rlc3Q8L2Rp
dj4KKzxkaXYgaWQ9ImNvbGxhcHNlZFNwYWNlRGl2Rmlyc3QiPjxzcGFuPmZvbzwvc3Bhbj48c3Bh
bj4gPC9zcGFuPjxkaXYgY2xhc3M9ImZpcnN0Ij5hYmM8L2Rpdj48L2Rpdj4KKzxkaXYgaWQ9ImNv
bGxhcHNlZFNwYWNlRGl2Tm9ybWFsIj48c3Bhbj5mb288L3NwYW4+PHNwYW4+IDwvc3Bhbj48ZGl2
PmFiYzwvZGl2PjwvZGl2PgorPGRpdiBpZD0iZmlyc3RDb2xsYXBzZWREaXZGaXJzdCI+PGRpdiBj
bGFzcz0iZmlyc3QiPmFiYyAgPC9kaXY+PHNwYW4+ZGVmPC9zcGFuPjwvZGl2PgorPGRpdiBpZD0i
Zmlyc3RDb2xsYXBzZWREaXZOb3JtYWwiPjxkaXY+YWJjICA8L2Rpdj48c3Bhbj5kZWY8L3NwYW4+
PC9kaXY+Cis8ZGl2IGlkPSJjb2xsYXBzZWRTcGFjZUNvbGxhcHNlZERpdkZpcnN0Ij48c3Bhbj5m
b288L3NwYW4+PHNwYW4+IDwvc3Bhbj48ZGl2IGNsYXNzPSJmaXJzdCI+ICBhYmM8L2Rpdj48L2Rp
dj4KKzxkaXYgaWQ9ImNvbGxhcHNlZFNwYWNlQ29sbGFwc2VkRGl2Tm9ybWFsIj48c3Bhbj5mb288
L3NwYW4+PHNwYW4+IDwvc3Bhbj48ZGl2PiAgYWJjPC9kaXY+PC9kaXY+Cis8ZGl2IGlkPSJjb2xs
YXBzZWRTcGFjZVB1bmN0RGl2Rmlyc3QiPjxzcGFuPmZvbzwvc3Bhbj48c3Bhbj4gPC9zcGFuPjxk
aXYgY2xhc3M9ImZpcnN0Ij58ICAKK2FiYzwvZGl2PjwvZGl2PgorPGRpdiBpZD0iY29sbGFwc2Vk
U3BhY2VQdW5jdERpdk5vcm1hbCI+PHNwYW4+Zm9vPC9zcGFuPjxzcGFuPiA8L3NwYW4+PGRpdj58
ICAKK2FiYzwvZGl2PjwvZGl2PgorPGRpdiBpZD0iZGl2U3BhbkZpcnN0IiBjbGFzcz0iZmlyc3Qi
PjxzcGFuIGlkPSJmMSI+MTwvc3Bhbj48c3BhbiBpZD0iZjIiPjI8L3NwYW4+PC9kaXY+Cis8ZGl2
IGlkPSJkaXZTcGFuTm9ybWFsIj48c3BhbiBpZD0ibjEiPjE8L3NwYW4+PHNwYW4gaWQ9Im4yIj4y
PC9zcGFuPjwvZGl2PgorPGRpdiBpZD0iaW52aXNpYmxlUHJlIj48cHJlIGNsYXNzPSJpbnZpc2li
bGUiPnRlc3Q8L3ByZT48L2Rpdj4KKzxkaXYgaWQ9ImludmlzaWJsZVByZUZpcnN0Ij48cHJlIGNs
YXNzPSJpbnZpc2libGUgZmlyc3QiPnRlc3Q8L3ByZT48L2Rpdj4KKzxkaXYgaWQ9ImludmlzaWJs
ZSI+Cis8ZGl2IGNsYXNzPSJpbnZpc2libGUiPjxpbnB1dCB2YWx1ZT0iYW4gaW5wdXQiIHR5cGU9
InRleHQiLz4gPC9kaXY+PHByZT50ZXN0PC9wcmU+Cis8L2Rpdj4KKworPHByZT4KK1Jlc3VsdHMK
KzwvcHJlPgorPC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgYSBsZXR0
ZXIgd2l0aCA6Zmlyc3QtbGV0dGVyIGFwcGxpZWQgaXMgcHJlc2VudCBpbiBpbm5lclRleHQuIik7
CitzaG91bGRCZSgiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RpdkZpcnN0JykuaW5uZXJUZXh0
IiwgImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkaXZOb3JtYWwnKS5pbm5lclRleHQiKTsKK3No
b3VsZEJlKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncEZpcnN0JykuaW5uZXJUZXh0IiwgImRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdwTm9ybWFsJykuaW5uZXJUZXh0Iik7CitzaG91bGRCZSgi
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbGxhcHNlZFNwYWNlRmlyc3QnKS5pbm5lclRleHQi
LCAiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbGxhcHNlZFNwYWNlTm9ybWFsJykuaW5uZXJU
ZXh0Iik7CitzaG91bGRCZSgiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbGxhcHNlZFNwYWNl
UHJlRmlyc3QnKS5pbm5lclRleHQiLCAiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbGxhcHNl
ZFNwYWNlUHJlTm9ybWFsJykuaW5uZXJUZXh0Iik7CitzaG91bGRCZSgiZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ3ByZUxpbmVGaXJzdCcpLmlubmVyVGV4dCIsICJkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgncHJlTGluZU5vcm1hbCcpLmlubmVyVGV4dCIpOworc2hvdWxkQmUoImRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdwcmVXcmFwRmlyc3QnKS5pbm5lclRleHQiLCAiZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ3ByZVdyYXBOb3JtYWwnKS5pbm5lclRleHQiKTsKK3Nob3VsZEJlKCJkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgncHJlU3BhY2VGaXJzdCcpLmlubmVyVGV4dCIsICJkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgncHJlU3BhY2VOb3JtYWwnKS5pbm5lclRleHQiKTsKK3Nob3VsZEJlKCJk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29sbGFwc2VkU3BhY2VEaXZGaXJzdCcpLmlubmVyVGV4
dCIsICJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29sbGFwc2VkU3BhY2VEaXZOb3JtYWwnKS5p
bm5lclRleHQiKTsKK3Nob3VsZEJlKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZmlyc3RDb2xs
YXBzZWREaXZGaXJzdCcpLmlubmVyVGV4dCIsICJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZmly
c3RDb2xsYXBzZWREaXZOb3JtYWwnKS5pbm5lclRleHQiKTsKK3Nob3VsZEJlKCJkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnY29sbGFwc2VkU3BhY2VDb2xsYXBzZWREaXZGaXJzdCcpLmlubmVyVGV4
dCIsICJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29sbGFwc2VkU3BhY2VDb2xsYXBzZWREaXZO
b3JtYWwnKS5pbm5lclRleHQiKTsKK3Nob3VsZEJlKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
Y29sbGFwc2VkU3BhY2VDb2xsYXBzZWREaXZGaXJzdCcpLmlubmVyVGV4dCIsICInZm9vXFxuYWJj
XFxuJyIpOworc2hvdWxkQmUoImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb2xsYXBzZWRTcGFj
ZVB1bmN0RGl2Rmlyc3QnKS5pbm5lclRleHQiLCAiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Nv
bGxhcHNlZFNwYWNlUHVuY3REaXZOb3JtYWwnKS5pbm5lclRleHQiKTsKK3Nob3VsZEJlKCJkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnY29sbGFwc2VkU3BhY2VQdW5jdERpdkZpcnN0JykuaW5uZXJU
ZXh0IiwgIidmb29cXG58IGFiY1xcbiciKTsKK3Nob3VsZEJlKCJkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnZGl2U3BhbkZpcnN0JykuaW5uZXJUZXh0IiwgImRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdkaXZTcGFuTm9ybWFsJykuaW5uZXJUZXh0Iik7CitzaG91bGRCZSgiZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2ludmlzaWJsZVByZScpLmlubmVyVGV4dCIsICInJyIpOworc2hvdWxkQmUoImRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbnZpc2libGVQcmVGaXJzdCcpLmlubmVyVGV4dCIsICIn
dCciKTsKK3Nob3VsZEJlKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW52aXNpYmxlJykuaW5u
ZXJUZXh0IiwgIid0ZXN0XFxuJyIpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2Y2MDgyZTBjZGQzNjE2ZmI3NDI1NTVjNTcxMWVi
MmMxMmQ1NGExZi4uMjBlNjViY2E4NDY3OTE2OTU0ZjVhZjc0NThlZDJjNGEyZjQ3MzlhNSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAxMC0wNS0yOCAgWW9zaGlraSBIYXlhc2hpICA8eWhheWFzaGlAZ29vZ2xl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJ
dGVyYXRlIG92ZXIgOmZpcnN0LWxldHRlciBzbyB0aGF0IGl0IHdpbGwgYmUgaW5jbHVkZWQgaW4g
aW5uZXJUZXh0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9Mzk4NjMKKworICAgICAgICBUZXN0OiBmYXN0L2RvbS9pbm5lci10ZXh0LWZpcnN0LWxldHRl
ci5odG1sCisKKyAgICAgICAgKiBlZGl0aW5nL1RleHRJdGVyYXRvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0SXRlcmF0b3I6OlRleHRJdGVyYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0SXRlcmF0b3I6OmFkdmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpo
YW5kbGVUZXh0Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OmhhbmRsZVRl
eHRCb3gpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjplbWl0VGV4dCk6CisgICAg
ICAgICogZWRpdGluZy9UZXh0SXRlcmF0b3IuaDoKKwogMjAxMC0wNS0zMSAgVG9ueSBDaGFuZyAg
PHRvbnlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhbiBCZXJuc3RlaW4u
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcCBiL1dlYkNvcmUv
ZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCmluZGV4IGYzYmQ5ZGY2YjlmOTViZjMwZGRhMmEzMGU3
MjZkNzM1ZjE4ZjhiMWYuLjAyMjc5OGJmMWE3YjNmODgxNTBlMWIzOWI1MjY0Yjk3N2Q5MTgxZWYg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCisrKyBiL1dlYkNv
cmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAi
UmVuZGVyVGFibGVDZWxsLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGFibGVSb3cuaCIKICNpbmNsdWRl
ICJSZW5kZXJUZXh0Q29udHJvbC5oIgorI2luY2x1ZGUgIlJlbmRlclRleHRGcmFnbWVudC5oIgog
I2luY2x1ZGUgIlZpc2libGVQb3NpdGlvbi5oIgogI2luY2x1ZGUgInZpc2libGVfdW5pdHMuaCIK
IApAQCAtMjUyLDExICsyNTMsMTQgQEAgVGV4dEl0ZXJhdG9yOjpUZXh0SXRlcmF0b3IoKQogICAg
ICwgbV9lbmRPZmZzZXQoMCkKICAgICAsIG1fcG9zaXRpb25Ob2RlKDApCiAgICAgLCBtX3RleHRD
aGFyYWN0ZXJzKDApCisgICAgLCBtX3JlbWFpbmluZ1RleHRCb3goMCkKKyAgICAsIG1fZmlyc3RM
ZXR0ZXJUZXh0KDApCiAgICAgLCBtX3RleHRMZW5ndGgoMCkKICAgICAsIG1fbGFzdENoYXJhY3Rl
cigwKQogICAgICwgbV9lbWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucyhm
YWxzZSkKICAgICAsIG1fZW50ZXJzVGV4dENvbnRyb2xzKGZhbHNlKQogICAgICwgbV9lbWl0c1Rl
eHRXaXRob3V0VHJhbnNjb2RpbmcoZmFsc2UpCisgICAgLCBtX2hhbmRsZWRGaXJzdExldHRlcihm
YWxzZSkKIHsKIH0KIApAQCAtMjY4LDkgKzI3MiwxMiBAQCBUZXh0SXRlcmF0b3I6OlRleHRJdGVy
YXRvcihjb25zdCBSYW5nZSogciwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgYmVoYXZpb3IpCiAgICAg
LCBtX3Bvc2l0aW9uTm9kZSgwKQogICAgICwgbV90ZXh0Q2hhcmFjdGVycygwKQogICAgICwgbV90
ZXh0TGVuZ3RoKDApCisgICAgLCBtX3JlbWFpbmluZ1RleHRCb3goMCkKKyAgICAsIG1fZmlyc3RM
ZXR0ZXJUZXh0KDApCiAgICAgLCBtX2VtaXRzQ2hhcmFjdGVyc0JldHdlZW5BbGxWaXNpYmxlUG9z
aXRpb25zKGJlaGF2aW9yICYgVGV4dEl0ZXJhdG9yRW1pdHNDaGFyYWN0ZXJzQmV0d2VlbkFsbFZp
c2libGVQb3NpdGlvbnMpCiAgICAgLCBtX2VudGVyc1RleHRDb250cm9scyhiZWhhdmlvciAmIFRl
eHRJdGVyYXRvckVudGVyc1RleHRDb250cm9scykKICAgICAsIG1fZW1pdHNUZXh0V2l0aG91dFRy
YW5zY29kaW5nKGJlaGF2aW9yICYgVGV4dEl0ZXJhdG9yRW1pdHNUZXh0c1dpdGhvdXRUcmFuc2Nv
ZGluZykKKyAgICAsIG1faGFuZGxlZEZpcnN0TGV0dGVyKGZhbHNlKQogewogICAgIGlmICghcikK
ICAgICAgICAgcmV0dXJuOwpAQCAtMzQ0LDYgKzM1MSwxMiBAQCB2b2lkIFRleHRJdGVyYXRvcjo6
YWR2YW5jZSgpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBpZiAoIW1fdGV4dEJveCAm
JiBtX3JlbWFpbmluZ1RleHRCb3gpIHsKKyAgICAgICAgbV90ZXh0Qm94ID0gbV9yZW1haW5pbmdU
ZXh0Qm94OworICAgICAgICBtX3JlbWFpbmluZ1RleHRCb3ggPSAwOworICAgICAgICBtX2ZpcnN0
TGV0dGVyVGV4dCA9IDA7CisgICAgICAgIG1fb2Zmc2V0ID0gMDsKKyAgICB9CiAgICAgLy8gaGFu
ZGxlIHJlbWVtYmVyZWQgdGV4dCBib3gKICAgICBpZiAobV90ZXh0Qm94KSB7CiAgICAgICAgIGhh
bmRsZVRleHRCb3goKTsKQEAgLTQxNyw2ICs0MzAsOCBAQCB2b2lkIFRleHRJdGVyYXRvcjo6YWR2
YW5jZSgpCiAgICAgICAgICAgICBwdXNoRnVsbHlDbGlwcGVkU3RhdGUobV9mdWxseUNsaXBwZWRT
dGFjaywgbV9ub2RlKTsKICAgICAgICAgbV9oYW5kbGVkTm9kZSA9IGZhbHNlOwogICAgICAgICBt
X2hhbmRsZWRDaGlsZHJlbiA9IGZhbHNlOworICAgICAgICBtX2hhbmRsZWRGaXJzdExldHRlciA9
IGZhbHNlOworICAgICAgICBtX2ZpcnN0TGV0dGVyVGV4dCA9IDA7CiAKICAgICAgICAgLy8gaG93
IHdvdWxkIHRoaXMgZXZlciBiZT8KICAgICAgICAgaWYgKG1fcG9zaXRpb25Ob2RlKQpAQCAtNDM1
LDggKzQ1MCw2IEBAIGJvb2wgVGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Tm9kZSgpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgIFJlbmRlclRleHQqIHJlbmRlcmVyID0gdG9SZW5kZXJUZXh0
KG1fbm9kZS0+cmVuZGVyZXIoKSk7Ci0gICAgaWYgKHJlbmRlcmVyLT5zdHlsZSgpLT52aXNpYmls
aXR5KCkgIT0gVklTSUJMRSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAKICAgICBt
X2xhc3RUZXh0Tm9kZSA9IG1fbm9kZTsKICAgICBTdHJpbmcgc3RyID0gcmVuZGVyZXItPnRleHQo
KTsKQEAgLTQ0NCwxMCArNDU3LDIyIEBAIGJvb2wgVGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Tm9k
ZSgpCiAgICAgLy8gaGFuZGxlIHByZS1mb3JtYXR0ZWQgdGV4dAogICAgIGlmICghcmVuZGVyZXIt
PnN0eWxlKCktPmNvbGxhcHNlV2hpdGVTcGFjZSgpKSB7CiAgICAgICAgIGludCBydW5TdGFydCA9
IG1fb2Zmc2V0OwotICAgICAgICBpZiAobV9sYXN0VGV4dE5vZGVFbmRlZFdpdGhDb2xsYXBzZWRT
cGFjZSkgeworICAgICAgICBpZiAobV9sYXN0VGV4dE5vZGVFbmRlZFdpdGhDb2xsYXBzZWRTcGFj
ZSAmJiBoYXNWaXNpYmxlVGV4dE5vZGUocmVuZGVyZXIpKSB7CiAgICAgICAgICAgICBlbWl0Q2hh
cmFjdGVyKCcgJywgbV9ub2RlLCAwLCBydW5TdGFydCwgcnVuU3RhcnQpOwogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICB9CisgICAgICAgIGlmICghbV9oYW5kbGVkRmlyc3RMZXR0
ZXIgJiYgcmVuZGVyZXItPmlzVGV4dEZyYWdtZW50KCkpIHsKKyAgICAgICAgICAgIGhhbmRsZVRl
eHROb2RlRmlyc3RMZXR0ZXIoc3RhdGljX2Nhc3Q8UmVuZGVyVGV4dEZyYWdtZW50Kj4ocmVuZGVy
ZXIpKTsKKyAgICAgICAgICAgIGlmIChtX2ZpcnN0TGV0dGVyVGV4dCkgeworICAgICAgICAgICAg
ICAgIFN0cmluZyBmaXJzdExldHRlciA9IG1fZmlyc3RMZXR0ZXJUZXh0LT50ZXh0KCk7CisgICAg
ICAgICAgICAgICAgZW1pdFRleHQobV9ub2RlLCBtX2ZpcnN0TGV0dGVyVGV4dCwgbV9vZmZzZXQs
IGZpcnN0TGV0dGVyLmxlbmd0aCgpKTsKKyAgICAgICAgICAgICAgICBtX2ZpcnN0TGV0dGVyVGV4
dCA9IDA7CisgICAgICAgICAgICAgICAgbV90ZXh0Qm94ID0gMDsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKHJlbmRl
cmVyLT5zdHlsZSgpLT52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgaW50IHN0ckxlbmd0aCA9IHN0ci5sZW5ndGgoKTsKICAgICAgICAg
aW50IGVuZCA9IChtX25vZGUgPT0gbV9lbmRDb250YWluZXIpID8gbV9lbmRPZmZzZXQgOiBJTlRf
TUFYOwogICAgICAgICBpbnQgcnVuRW5kID0gbWluKHN0ckxlbmd0aCwgZW5kKTsKQEAgLTQ2MCw2
ICs0ODUsMTUgQEAgYm9vbCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHROb2RlKCkKICAgICB9CiAK
ICAgICBpZiAoIXJlbmRlcmVyLT5maXJzdFRleHRCb3goKSAmJiBzdHIubGVuZ3RoKCkgPiAwKSB7
CisgICAgICAgIGlmICghbV9oYW5kbGVkRmlyc3RMZXR0ZXIgJiYgcmVuZGVyZXItPmlzVGV4dEZy
YWdtZW50KCkpIHsKKyAgICAgICAgICAgIGhhbmRsZVRleHROb2RlRmlyc3RMZXR0ZXIoc3RhdGlj
X2Nhc3Q8UmVuZGVyVGV4dEZyYWdtZW50Kj4ocmVuZGVyZXIpKTsKKyAgICAgICAgICAgIGlmICht
X2ZpcnN0TGV0dGVyVGV4dCkgeworICAgICAgICAgICAgICAgIGhhbmRsZVRleHRCb3goKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgaWYgKHJlbmRlcmVyLT5zdHlsZSgpLT52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgbV9sYXN0VGV4dE5vZGVFbmRlZFdpdGhD
b2xsYXBzZWRTcGFjZSA9IHRydWU7IC8vIGVudGlyZSBibG9jayBpcyBjb2xsYXBzZWQgc3BhY2UK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtNDc1LDEzICs1MDksMjAgQEAgYm9vbCBU
ZXh0SXRlcmF0b3I6OmhhbmRsZVRleHROb2RlKCkKICAgICB9CiAgICAgCiAgICAgbV90ZXh0Qm94
ID0gcmVuZGVyZXItPmNvbnRhaW5zUmV2ZXJzZWRUZXh0KCkgPyAobV9zb3J0ZWRUZXh0Qm94ZXMu
aXNFbXB0eSgpID8gMCA6IG1fc29ydGVkVGV4dEJveGVzWzBdKSA6IHJlbmRlcmVyLT5maXJzdFRl
eHRCb3goKTsKKyAgICBpZiAoIW1faGFuZGxlZEZpcnN0TGV0dGVyICYmIHJlbmRlcmVyLT5pc1Rl
eHRGcmFnbWVudCgpKSB7CisgICAgICAgIGhhbmRsZVRleHROb2RlRmlyc3RMZXR0ZXIoc3RhdGlj
X2Nhc3Q8UmVuZGVyVGV4dEZyYWdtZW50Kj4ocmVuZGVyZXIpKTsKKyAgICB9CiAgICAgaGFuZGxl
VGV4dEJveCgpOwogICAgIHJldHVybiB0cnVlOwogfQogCiB2b2lkIFRleHRJdGVyYXRvcjo6aGFu
ZGxlVGV4dEJveCgpCiB7ICAgIAotICAgIFJlbmRlclRleHQqIHJlbmRlcmVyID0gdG9SZW5kZXJU
ZXh0KG1fbm9kZS0+cmVuZGVyZXIoKSk7CisgICAgUmVuZGVyVGV4dCogcmVuZGVyZXIgPSBtX2Zp
cnN0TGV0dGVyVGV4dCA/IG1fZmlyc3RMZXR0ZXJUZXh0IDogdG9SZW5kZXJUZXh0KG1fbm9kZS0+
cmVuZGVyZXIoKSk7CisgICAgaWYgKHJlbmRlcmVyLT5zdHlsZSgpLT52aXNpYmlsaXR5KCkgIT0g
VklTSUJMRSkgeworICAgICAgICBtX3RleHRCb3ggPSAwOworICAgICAgICByZXR1cm47CisgICAg
fQogICAgIFN0cmluZyBzdHIgPSByZW5kZXJlci0+dGV4dCgpOwogICAgIGludCBzdGFydCA9IG1f
b2Zmc2V0OwogICAgIGludCBlbmQgPSAobV9ub2RlID09IG1fZW5kQ29udGFpbmVyKSA/IG1fZW5k
T2Zmc2V0IDogSU5UX01BWDsKQEAgLTUyNyw3ICs1NjgsNyBAQCB2b2lkIFRleHRJdGVyYXRvcjo6
aGFuZGxlVGV4dEJveCgpCiAgICAgICAgICAgICAgICAgICAgIHN1YnJ1bkVuZCA9IHJ1bkVuZDsK
ICAgICAKICAgICAgICAgICAgICAgICBtX29mZnNldCA9IHN1YnJ1bkVuZDsKLSAgICAgICAgICAg
ICAgICBlbWl0VGV4dChtX25vZGUsIHJ1blN0YXJ0LCBzdWJydW5FbmQpOworICAgICAgICAgICAg
ICAgIGVtaXRUZXh0KG1fbm9kZSwgcmVuZGVyZXIsIHJ1blN0YXJ0LCBzdWJydW5FbmQpOwogICAg
ICAgICAgICAgfQogCiAgICAgICAgICAgICAvLyBJZiB3ZSBhcmUgZG9pbmcgYSBzdWJydW4gdGhh
dCBkb2Vzbid0IGdvIHRvIHRoZSBlbmQgb2YgdGhlIHRleHQgYm94LApAQCAtNTUxLDYgKzU5Miwy
NyBAQCB2b2lkIFRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dEJveCgpCiAgICAgfQogfQogCit2b2lk
IFRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dE5vZGVGaXJzdExldHRlcihSZW5kZXJUZXh0RnJhZ21l
bnQqIHJlbmRlcmVyKQoreworICAgIGlmIChyZW5kZXJlci0+Zmlyc3RMZXR0ZXIoKSkgeworICAg
ICAgICBSZW5kZXJPYmplY3QqIHIgPSByZW5kZXJlci0+Zmlyc3RMZXR0ZXIoKTsKKyAgICAgICAg
aWYgKHItPnN0eWxlKCktPnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKQorICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICBmb3IgKFJlbmRlck9iamVjdCAqY3VyckNoaWxkID0gci0+Zmlyc3RDaGls
ZCgpOyBjdXJyQ2hpbGQ7IGN1cnJDaGlsZC0+bmV4dFNpYmxpbmcoKSkgeworICAgICAgICAgICAg
aWYgKGN1cnJDaGlsZC0+aXNUZXh0KCkpIHsKKyAgICAgICAgICAgICAgICBSZW5kZXJUZXh0KiBm
aXJzdExldHRlciA9IHRvUmVuZGVyVGV4dChjdXJyQ2hpbGQpOworICAgICAgICAgICAgICAgIG1f
aGFuZGxlZEZpcnN0TGV0dGVyID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBtX3JlbWFpbmluZ1Rl
eHRCb3ggPSBtX3RleHRCb3g7CisgICAgICAgICAgICAgICAgbV90ZXh0Qm94ID0gZmlyc3RMZXR0
ZXItPmZpcnN0VGV4dEJveCgpOworICAgICAgICAgICAgICAgIG1fZmlyc3RMZXR0ZXJUZXh0ID0g
Zmlyc3RMZXR0ZXI7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgfQorICAgIG1faGFuZGxlZEZpcnN0TGV0dGVyID0gdHJ1ZTsKKyAgICByZXR1
cm47Cit9CisKIGJvb2wgVGV4dEl0ZXJhdG9yOjpoYW5kbGVSZXBsYWNlZEVsZW1lbnQoKQogewog
ICAgIGlmIChtX2Z1bGx5Q2xpcHBlZFN0YWNrLnRvcCgpKQpAQCAtNTk3LDYgKzY1OSwxOCBAQCBi
b29sIFRleHRJdGVyYXRvcjo6aGFuZGxlUmVwbGFjZWRFbGVtZW50KCkKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAorYm9vbCBUZXh0SXRlcmF0b3I6Omhhc1Zpc2libGVUZXh0Tm9kZShSZW5kZXJUZXh0
KiByZW5kZXJlcikKK3sKKyAgICBpZiAocmVuZGVyZXItPnN0eWxlKCktPnZpc2liaWxpdHkoKSA9
PSBWSVNJQkxFKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAocmVuZGVyZXItPmlzVGV4
dEZyYWdtZW50KCkpIHsKKyAgICAgICAgUmVuZGVyVGV4dEZyYWdtZW50KiBmcmFnbWVudCA9IHN0
YXRpY19jYXN0PFJlbmRlclRleHRGcmFnbWVudCo+KHJlbmRlcmVyKTsKKyAgICAgICAgaWYgKGZy
YWdtZW50LT5maXJzdExldHRlcigpICYmIGZyYWdtZW50LT5maXJzdExldHRlcigpLT5zdHlsZSgp
LT52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIHN0YXRpYyBib29sIHNob3VsZEVtaXRUYWJCZWZv
cmVOb2RlKE5vZGUqIG5vZGUpCiB7CiAgICAgUmVuZGVyT2JqZWN0KiByID0gbm9kZS0+cmVuZGVy
ZXIoKTsKQEAgLTg4OCw5ICs5NjIsOSBAQCB2b2lkIFRleHRJdGVyYXRvcjo6ZW1pdENoYXJhY3Rl
cihVQ2hhciBjLCBOb2RlKiB0ZXh0Tm9kZSwgTm9kZSogb2Zmc2V0QmFzZU5vZGUsCiAgICAgbV9s
YXN0Q2hhcmFjdGVyID0gYzsKIH0KIAotdm9pZCBUZXh0SXRlcmF0b3I6OmVtaXRUZXh0KE5vZGUq
IHRleHROb2RlLCBpbnQgdGV4dFN0YXJ0T2Zmc2V0LCBpbnQgdGV4dEVuZE9mZnNldCkKK3ZvaWQg
VGV4dEl0ZXJhdG9yOjplbWl0VGV4dChOb2RlKiB0ZXh0Tm9kZSwgUmVuZGVyT2JqZWN0KiByZW5k
ZXJPYmplY3QsIGludCB0ZXh0U3RhcnRPZmZzZXQsIGludCB0ZXh0RW5kT2Zmc2V0KQogewotICAg
IFJlbmRlclRleHQqIHJlbmRlcmVyID0gdG9SZW5kZXJUZXh0KG1fbm9kZS0+cmVuZGVyZXIoKSk7
CisgICAgUmVuZGVyVGV4dCogcmVuZGVyZXIgPSB0b1JlbmRlclRleHQocmVuZGVyT2JqZWN0KTsK
ICAgICBtX3RleHQgPSBtX2VtaXRzVGV4dFdpdGhvdXRUcmFuc2NvZGluZyA/IHJlbmRlcmVyLT50
ZXh0V2l0aG91dFRyYW5zY29kaW5nKCkgOiByZW5kZXJlci0+dGV4dCgpOwogICAgIEFTU0VSVCht
X3RleHQuY2hhcmFjdGVycygpKTsKIApAQCAtOTA2LDYgKzk4MCwxMSBAQCB2b2lkIFRleHRJdGVy
YXRvcjo6ZW1pdFRleHQoTm9kZSogdGV4dE5vZGUsIGludCB0ZXh0U3RhcnRPZmZzZXQsIGludCB0
ZXh0RW5kT2ZmcwogICAgIG1faGFzRW1pdHRlZCA9IHRydWU7CiB9CiAKK3ZvaWQgVGV4dEl0ZXJh
dG9yOjplbWl0VGV4dChOb2RlKiB0ZXh0Tm9kZSwgaW50IHRleHRTdGFydE9mZnNldCwgaW50IHRl
eHRFbmRPZmZzZXQpCit7CisgICAgZW1pdFRleHQodGV4dE5vZGUsIG1fbm9kZS0+cmVuZGVyZXIo
KSwgdGV4dFN0YXJ0T2Zmc2V0LCB0ZXh0RW5kT2Zmc2V0KTsKK30KKwogUGFzc1JlZlB0cjxSYW5n
ZT4gVGV4dEl0ZXJhdG9yOjpyYW5nZSgpIGNvbnN0CiB7CiAgICAgLy8gdXNlIHRoZSBjdXJyZW50
IHJ1biBpbmZvcm1hdGlvbiwgaWYgd2UgaGF2ZSBpdApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0
aW5nL1RleHRJdGVyYXRvci5oIGIvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oCmluZGV4
IGJhMzgxYjliZmE0NGE3OWQxMDY0OTk5ZDJjNjA3YmU2OWY3NmE4OTMuLjQ0MzAzNTU0NDQ3OWU2
MzljODlkNWZkYThjNzNjMGQ5ODQ2MTJlMjMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9U
ZXh0SXRlcmF0b3IuaAorKysgYi9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmgKQEAgLTMy
LDYgKzMyLDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBSZW5kZXJUZXh0Owor
Y2xhc3MgUmVuZGVyVGV4dEZyYWdtZW50OworCiAvLyBGSVhNRTogQ2FuJ3QgcmVhbGx5IGFuc3dl
ciB0aGlzIHF1ZXN0aW9uIGNvcnJlY3RseSB3aXRob3V0IGtub3dpbmcgdGhlIHdoaXRlLXNwYWNl
IG1vZGUuCiAvLyBGSVhNRTogTW92ZSB0aGlzIHNvbWV3aGVyZSBlbHNlIGluIHRoZSBlZGl0aW5n
IGRpcmVjdG9yeS4gSXQgZG9lc24ndCBiZWxvbmcgaGVyZS4KIGlubGluZSBib29sIGlzQ29sbGFw
c2libGVXaGl0ZXNwYWNlKFVDaGFyIGMpCkBAIC0xMDIsNyArMTA1LDEwIEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBoYW5kbGVSZXBsYWNlZEVsZW1lbnQoKTsKICAgICBib29sIGhhbmRsZU5vblRleHRO
b2RlKCk7CiAgICAgdm9pZCBoYW5kbGVUZXh0Qm94KCk7CisgICAgdm9pZCBoYW5kbGVUZXh0Tm9k
ZUZpcnN0TGV0dGVyKFJlbmRlclRleHRGcmFnbWVudCopOworICAgIGJvb2wgaGFzVmlzaWJsZVRl
eHROb2RlKFJlbmRlclRleHQqKTsKICAgICB2b2lkIGVtaXRDaGFyYWN0ZXIoVUNoYXIsIE5vZGUq
IHRleHROb2RlLCBOb2RlKiBvZmZzZXRCYXNlTm9kZSwgaW50IHRleHRTdGFydE9mZnNldCwgaW50
IHRleHRFbmRPZmZzZXQpOworICAgIHZvaWQgZW1pdFRleHQoTm9kZSogdGV4dE5vZGUsIFJlbmRl
ck9iamVjdCogcmVuZGVyT2JqZWN0LCBpbnQgdGV4dFN0YXJ0T2Zmc2V0LCBpbnQgdGV4dEVuZE9m
ZnNldCk7CiAgICAgdm9pZCBlbWl0VGV4dChOb2RlKiB0ZXh0Tm9kZSwgaW50IHRleHRTdGFydE9m
ZnNldCwgaW50IHRleHRFbmRPZmZzZXQpOwogICAgIAogICAgIC8vIEN1cnJlbnQgcG9zaXRpb24s
IG5vdCBuZWNlc3NhcmlseSBvZiB0aGUgdGV4dCBiZWluZyByZXR1cm5lZCwgYnV0IHBvc2l0aW9u
CkBAIC0xMzQsNiArMTQwLDExIEBAIHByaXZhdGU6CiAgICAgLy8gYXJlIGZhbHNlIGFuZCAwLCB3
ZSBnbyBiYWNrIHRvIG5vcm1hbCBpdGVyYXRpbmcuCiAgICAgYm9vbCBtX25lZWRzQW5vdGhlck5l
d2xpbmU7CiAgICAgSW5saW5lVGV4dEJveCogbV90ZXh0Qm94OworICAgIC8vIFVzZWQgd2hlbiBp
dGVyYXRpb24gb3ZlciA6Zmlyc3QtbGV0dGVyIHRleHQgdG8gc2F2ZSBwb2ludGVyIHRvCisgICAg
Ly8gcmVtYWluaW5nIHRleHQgYm94LgorICAgIElubGluZVRleHRCb3gqIG1fcmVtYWluaW5nVGV4
dEJveDsKKyAgICAvLyBVc2VkIHRvIHBvaW50IHRvIFJlbmRlclRleHQgb2JqZWN0IGZvciA6Zmly
c3QtbGV0dGVyLgorICAgIFJlbmRlclRleHQgKm1fZmlyc3RMZXR0ZXJUZXh0OwogICAgIAogICAg
IC8vIFVzZWQgdG8gZG8gdGhlIHdoaXRlc3BhY2UgY29sbGFwc2luZyBsb2dpYy4KICAgICBOb2Rl
KiBtX2xhc3RUZXh0Tm9kZTsgICAgCkBAIC0xNTksNiArMTcwLDggQEAgcHJpdmF0ZToKIAogICAg
IC8vIFVzZWQgd2hlbiB3ZSB3YW50IHRleHRzIGZvciBjb3B5aW5nLCBwYXN0aW5nLCBhbmQgdHJh
bnNwb3NpbmcuCiAgICAgYm9vbCBtX2VtaXRzVGV4dFdpdGhvdXRUcmFuc2NvZGluZzsKKyAgICAv
LyBVc2VkIHdoZW4gZGVjaWRpbmcgdGV4dCBmcmFnbWVudCBjcmVhdGVkIGJ5IDpmaXJzdC1sZXR0
ZXIgc2hvdWxkIGJlIGxvb2tlZCBpbnRvLgorICAgIGJvb2wgbV9oYW5kbGVkRmlyc3RMZXR0ZXI7
CiB9OwogCiAvLyBJdGVyYXRlcyB0aHJvdWdoIHRoZSBET00gcmFuZ2UsIHJldHVybmluZyBhbGwg
dGhlIHRleHQsIGFuZCAwLWxlbmd0aCBib3VuZGFyaWVzCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57748</attachid>
            <date>2010-06-03 02:44:58 -0700</date>
            <delta_ts>2010-06-03 03:41:01 -0700</delta_ts>
            <desc>Proposed Patch with style fix</desc>
            <filename>bug-39863-20100603184456.patch</filename>
            <type>text/plain</type>
            <size>20602</size>
            <attacher name="Yoshiki Hayashi">yhayashi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBjMWRhNzY5YTFhYjEwZjJhMWU3OWZjNzc5MWQ1NTZkYTUwMzc3ZjI5Li42Y2M1MjE2
MTcyMDE1OGM3ZGEzZGEzZTQ3MjQ5OTNiNDNhNzk1MjVkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTAtMDUtMjggIFlvc2hpa2kgSGF5YXNoaSAgPHloYXlhc2hpQGdvb2dsZS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSXRlcmF0ZSBvdmVy
IDpmaXJzdC1sZXR0ZXIgc28gdGhhdCBpdCB3aWxsIGJlIGluY2x1ZGVkIGluIGlubmVyVGV4dC4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5ODYzCisK
KyAgICAgICAgKiBmYXN0L2RvbS9pbm5lci10ZXh0LWZpcnN0LWxldHRlci1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL2lubmVyLXRleHQtZmlyc3QtbGV0dGVyLmh0bWw6
IEFkZGVkLgorCiAyMDEwLTA1LTMxICBUb255IENoYW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgRGFuIEJlcm5zdGVpbi4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvY3NzL2dldENvbXB1dGVkU3R5bGUvZ2V0Q29tcHV0ZWRTdHlsZS13aXRoLXBzZXVk
by1lbGVtZW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL2dldENvbXB1dGVk
U3R5bGUvZ2V0Q29tcHV0ZWRTdHlsZS13aXRoLXBzZXVkby1lbGVtZW50LWV4cGVjdGVkLnR4dApp
bmRleCA0OTU3NmYxODA2Y2UzYjA2YjU0YTFkNjkxNTg0YzM1NDY2MGQwNjA1Li4wZTdiYzUwZTRh
MmVkM2QxOGJiZTQ4YTk0N2ZiMjNjOGY4YzNlNTkxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9m
YXN0L2Nzcy9nZXRDb21wdXRlZFN0eWxlL2dldENvbXB1dGVkU3R5bGUtd2l0aC1wc2V1ZG8tZWxl
bWVudC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvZ2V0Q29tcHV0ZWRT
dHlsZS9nZXRDb21wdXRlZFN0eWxlLXdpdGgtcHNldWRvLWVsZW1lbnQtZXhwZWN0ZWQudHh0CkBA
IC0xLDcgKzEsNyBAQAogVGVzdCBmb3IgV2ViS2l0IGJ1ZyAyNDAyMTogcHNldWRvLWVsZW1lbnQg
c3R5bGVzIG5vdCBhY2Nlc3NpYmxlIC8gcmV0cmlldmFibGUgdmlhIERPTSBtZXRob2RzCiAKIAot
b3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRpcGlzaWNpbmcgZWxpdCwg
c2VkIGRvIGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1bnQgdXQgbGFib3JlIGV0IGRvbG9yZSBtYWdu
YSBhbGlxdWEuIFV0IGVuaW0gYWQgbWluaW0gdmVuaWFtLCBxdWlzIG5vc3RydWQgZXhlcmNpdGF0
aW9uIHVsbGFtY28gbGFib3JpcyBuaXNpIHV0IGFsaXF1aXAgZXggZWEgY29tbW9kbyBjb25zZXF1
YXQuIER1aXMgYXV0ZSBpcnVyZSBkb2xvciBpbiByZXByZWhlbmRlcml0IGluIHZvbHVwdGF0ZSB2
ZWxpdCBlc3NlIGNpbGx1bSBkb2xvcmUgZXUgZnVnaWF0IG51bGxhIHBhcmlhdHVyLiBFeGNlcHRl
dXIgc2ludCBvY2NhZWNhdCBjdXBpZGF0YXQgbm9uIHByb2lkZW50LCBzdW50IGluIGN1bHBhIHF1
aSBvZmZpY2lhIGRlc2VydW50IG1vbGxpdCBhbmltIGlkIGVzdCBsYWJvcnVtLgorTG9yZW0gaXBz
dW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2ljaW5nIGVsaXQsIHNlZCBkbyBl
aXVzbW9kIHRlbXBvciBpbmNpZGlkdW50IHV0IGxhYm9yZSBldCBkb2xvcmUgbWFnbmEgYWxpcXVh
LiBVdCBlbmltIGFkIG1pbmltIHZlbmlhbSwgcXVpcyBub3N0cnVkIGV4ZXJjaXRhdGlvbiB1bGxh
bWNvIGxhYm9yaXMgbmlzaSB1dCBhbGlxdWlwIGV4IGVhIGNvbW1vZG8gY29uc2VxdWF0LiBEdWlz
IGF1dGUgaXJ1cmUgZG9sb3IgaW4gcmVwcmVoZW5kZXJpdCBpbiB2b2x1cHRhdGUgdmVsaXQgZXNz
ZSBjaWxsdW0gZG9sb3JlIGV1IGZ1Z2lhdCBudWxsYSBwYXJpYXR1ci4gRXhjZXB0ZXVyIHNpbnQg
b2NjYWVjYXQgY3VwaWRhdGF0IG5vbiBwcm9pZGVudCwgc3VudCBpbiBjdWxwYSBxdWkgb2ZmaWNp
YSBkZXNlcnVudCBtb2xsaXQgYW5pbSBpZCBlc3QgbGFib3J1bS4KIAogTWlkZGxlCiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2lubmVyLXRleHQtZmlyc3QtbGV0dGVyLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2lubmVyLXRleHQtZmlyc3QtbGV0dGVyLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMGVjOGUxZTI5ODM4Zjg2MTEyZjFhNTIyNmM3ODI0OGQw
ZDBmZmFlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vaW5uZXItdGV4
dC1maXJzdC1sZXR0ZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNzAgQEAKK1RoaXMgdGVzdHMg
YSBsZXR0ZXIgd2l0aCA6Zmlyc3QtbGV0dGVyIGFwcGxpZWQgaXMgcHJlc2VudCBpbiBpbm5lclRl
eHQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdkaXZGaXJzdCcpLmlubmVyVGV4dCBpcyBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnZGl2Tm9ybWFsJykuaW5uZXJUZXh0CitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdw
Rmlyc3QnKS5pbm5lclRleHQgaXMgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BOb3JtYWwnKS5p
bm5lclRleHQKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbGxhcHNlZFNwYWNlRmly
c3QnKS5pbm5lclRleHQgaXMgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbGxhcHNlZFNwYWNl
Tm9ybWFsJykuaW5uZXJUZXh0CitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb2xsYXBz
ZWRTcGFjZVByZUZpcnN0JykuaW5uZXJUZXh0IGlzIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdj
b2xsYXBzZWRTcGFjZVByZU5vcm1hbCcpLmlubmVyVGV4dAorUEFTUyBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgncHJlTGluZUZpcnN0JykuaW5uZXJUZXh0IGlzIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdwcmVMaW5lTm9ybWFsJykuaW5uZXJUZXh0CitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdwcmVXcmFwRmlyc3QnKS5pbm5lclRleHQgaXMgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3ByZVdyYXBOb3JtYWwnKS5pbm5lclRleHQKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3ByZVNwYWNlRmlyc3QnKS5pbm5lclRleHQgaXMgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3By
ZVNwYWNlTm9ybWFsJykuaW5uZXJUZXh0CitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdj
b2xsYXBzZWRTcGFjZURpdkZpcnN0JykuaW5uZXJUZXh0IGlzIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdjb2xsYXBzZWRTcGFjZURpdk5vcm1hbCcpLmlubmVyVGV4dAorUEFTUyBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnZmlyc3RDb2xsYXBzZWREaXZGaXJzdCcpLmlubmVyVGV4dCBpcyBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnZmlyc3RDb2xsYXBzZWREaXZOb3JtYWwnKS5pbm5lclRleHQK
K1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbGxhcHNlZFNwYWNlQ29sbGFwc2VkRGl2
Rmlyc3QnKS5pbm5lclRleHQgaXMgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbGxhcHNlZFNw
YWNlQ29sbGFwc2VkRGl2Tm9ybWFsJykuaW5uZXJUZXh0CitQQVNTIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdjb2xsYXBzZWRTcGFjZUNvbGxhcHNlZERpdkZpcnN0JykuaW5uZXJUZXh0IGlzICdm
b29cbmFiY1xuJworUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29sbGFwc2VkU3BhY2VQ
dW5jdERpdkZpcnN0JykuaW5uZXJUZXh0IGlzIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb2xs
YXBzZWRTcGFjZVB1bmN0RGl2Tm9ybWFsJykuaW5uZXJUZXh0CitQQVNTIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdjb2xsYXBzZWRTcGFjZVB1bmN0RGl2Rmlyc3QnKS5pbm5lclRleHQgaXMgJ2Zv
b1xufCBhYmNcbicKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RpdlNwYW5GaXJzdCcp
LmlubmVyVGV4dCBpcyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGl2U3Bhbk5vcm1hbCcpLmlu
bmVyVGV4dAorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW52aXNpYmxlUHJlJykuaW5u
ZXJUZXh0IGlzICcnCitGQUlMIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbnZpc2libGVQcmVG
aXJzdCcpLmlubmVyVGV4dCBzaG91bGQgYmUgdC4gV2FzIHQKKy4KK1BBU1MgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2ludmlzaWJsZScpLmlubmVyVGV4dCBpcyAndGVzdFxuJworUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCitkaXYKK2RpdgorcHJlCitw
cmUKK2FiYworYWJjCisgYWJjCisgYWJjCit0ZXN0CisgIGFiYwordGVzdAorICBhYmMKK3Rlc3QK
K2FiYwordGVzdAorYWJjCit0ZXN0Cit0ZXN0CisKK3Rlc3QKKwordGVzdAorZm9vCithYmMKK2Zv
bworYWJjCithYmMKK2RlZgorYWJjCitkZWYKK2ZvbworYWJjCitmb28KK2FiYworZm9vCit8IGFi
YworZm9vCit8IGFiYworMTIKKzEyCit0Cit0ZXN0CitSZXN1bHRzCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL2lubmVyLXRleHQtZmlyc3QtbGV0dGVyLmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9pbm5lci10ZXh0LWZpcnN0LWxldHRlci5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg2
NDc2ODEyYmY4NTkwNTJlZjM5NGVjMTViNTY3M2M5NzI3MGEwNmYKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9pbm5lci10ZXh0LWZpcnN0LWxldHRlci5odG1sCkBAIC0w
LDAgKzEsOTAgQEAKKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KKy5maXJzdDpmaXJz
dC1sZXR0ZXIgeworICBmb250LXdlaWdodDogYm9sZDsKKyAgdmlzaWJpbGl0eTogdmlzaWJsZTsK
K30KKy52aXNpYmxlIHsKKyAgdmlzaWJsaXR5OiB2aXNpYmxlOworfQorLmludmlzaWJsZSB7Cisg
IHZpc2liaWxpdHk6IGhpZGRlbjsKK30KKy5wcmVMaW5lIHsKKyAgd2hpdGUtc3BhY2U6IHByZS1s
aW5lOworfQorLnByZVdyYXAgeworICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7Cit9Cis8L3N0eWxl
PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPGRpdiBpZD0iZGl2Rmlyc3QiIGNsYXNzPSJmaXJzdCI+ZGl2PC9kaXY+
Cis8ZGl2IGlkPSJkaXZOb3JtYWwiPmRpdjwvZGl2PgorPHByZSBpZD0icEZpcnN0IiBjbGFzcz0i
Zmlyc3QiPnByZTwvcHJlPgorPHByZSBpZD0icE5vcm1hbCI+cHJlPC9wcmU+Cis8ZGl2IGlkPSJj
b2xsYXBzZWRTcGFjZUZpcnN0Ij48c3Bhbj4gPC9zcGFuPjxkaXYgY2xhc3M9ImZpcnN0Ij5hYmM8
L2Rpdj48L2Rpdj4KKzxkaXYgaWQ9ImNvbGxhcHNlZFNwYWNlTm9ybWFsIj48c3Bhbj4gPC9zcGFu
PjxkaXY+YWJjPC9kaXY+PC9kaXY+Cis8ZGl2IGlkPSJjb2xsYXBzZWRTcGFjZVByZUZpcnN0Ij48
c3Bhbj4gPC9zcGFuPjxwcmUgY2xhc3M9ImZpcnN0Ij5hYmM8L3ByZT48L2Rpdj4KKzxkaXYgaWQ9
ImNvbGxhcHNlZFNwYWNlUHJlTm9ybWFsIj48c3Bhbj4gPC9zcGFuPjxwcmU+YWJjPC9wcmU+PC9k
aXY+Cis8ZGl2IGlkPSJwcmVTcGFjZUZpcnN0Ij48c3Bhbj50ZXN0PC9zcGFuPjxwcmUgY2xhc3M9
ImZpcnN0Ij4gIGFiYzwvcHJlPjwvZGl2PgorPGRpdiBpZD0icHJlU3BhY2VOb3JtYWwiPjxzcGFu
PnRlc3Q8L3NwYW4+PHByZT4gIGFiYzwvcHJlPjwvZGl2PgorPGRpdiBpZD0iZGl2U3BhY2VGaXJz
dCI+PHNwYW4+dGVzdDwvc3Bhbj48ZGl2IGNsYXNzPSJmaXJzdCI+ICBhYmM8L2Rpdj48L2Rpdj4K
KzxkaXYgaWQ9ImRpdlNwYWNlTm9ybWFsIj48c3Bhbj50ZXN0PC9zcGFuPjxkaXY+ICBhYmM8L2Rp
dj48L2Rpdj4KKzxkaXYgaWQ9InByZUxpbmVGaXJzdCIgY2xhc3M9ImZpcnN0IHByZUxpbmUiPnRl
c3Q8L2Rpdj4KKzxkaXYgaWQ9InByZUxpbmVOb3JtYWwiIGNsYXNzPSJwcmVMaW5lIj50ZXN0PC9k
aXY+Cis8ZGl2IGlkPSJwcmVXcmFwRmlyc3QiIGNsYXNzPSJmaXJzdCBwcmVXcmFwIj4KK3Rlc3Q8
L2Rpdj4KKzxkaXYgaWQ9InByZVdyYXBOb3JtYWwiIGNsYXNzPSJwcmVXcmFwIj4KK3Rlc3Q8L2Rp
dj4KKzxkaXYgaWQ9ImNvbGxhcHNlZFNwYWNlRGl2Rmlyc3QiPjxzcGFuPmZvbzwvc3Bhbj48c3Bh
bj4gPC9zcGFuPjxkaXYgY2xhc3M9ImZpcnN0Ij5hYmM8L2Rpdj48L2Rpdj4KKzxkaXYgaWQ9ImNv
bGxhcHNlZFNwYWNlRGl2Tm9ybWFsIj48c3Bhbj5mb288L3NwYW4+PHNwYW4+IDwvc3Bhbj48ZGl2
PmFiYzwvZGl2PjwvZGl2PgorPGRpdiBpZD0iZmlyc3RDb2xsYXBzZWREaXZGaXJzdCI+PGRpdiBj
bGFzcz0iZmlyc3QiPmFiYyAgPC9kaXY+PHNwYW4+ZGVmPC9zcGFuPjwvZGl2PgorPGRpdiBpZD0i
Zmlyc3RDb2xsYXBzZWREaXZOb3JtYWwiPjxkaXY+YWJjICA8L2Rpdj48c3Bhbj5kZWY8L3NwYW4+
PC9kaXY+Cis8ZGl2IGlkPSJjb2xsYXBzZWRTcGFjZUNvbGxhcHNlZERpdkZpcnN0Ij48c3Bhbj5m
b288L3NwYW4+PHNwYW4+IDwvc3Bhbj48ZGl2IGNsYXNzPSJmaXJzdCI+ICBhYmM8L2Rpdj48L2Rp
dj4KKzxkaXYgaWQ9ImNvbGxhcHNlZFNwYWNlQ29sbGFwc2VkRGl2Tm9ybWFsIj48c3Bhbj5mb288
L3NwYW4+PHNwYW4+IDwvc3Bhbj48ZGl2PiAgYWJjPC9kaXY+PC9kaXY+Cis8ZGl2IGlkPSJjb2xs
YXBzZWRTcGFjZVB1bmN0RGl2Rmlyc3QiPjxzcGFuPmZvbzwvc3Bhbj48c3Bhbj4gPC9zcGFuPjxk
aXYgY2xhc3M9ImZpcnN0Ij58ICAKK2FiYzwvZGl2PjwvZGl2PgorPGRpdiBpZD0iY29sbGFwc2Vk
U3BhY2VQdW5jdERpdk5vcm1hbCI+PHNwYW4+Zm9vPC9zcGFuPjxzcGFuPiA8L3NwYW4+PGRpdj58
ICAKK2FiYzwvZGl2PjwvZGl2PgorPGRpdiBpZD0iZGl2U3BhbkZpcnN0IiBjbGFzcz0iZmlyc3Qi
PjxzcGFuIGlkPSJmMSI+MTwvc3Bhbj48c3BhbiBpZD0iZjIiPjI8L3NwYW4+PC9kaXY+Cis8ZGl2
IGlkPSJkaXZTcGFuTm9ybWFsIj48c3BhbiBpZD0ibjEiPjE8L3NwYW4+PHNwYW4gaWQ9Im4yIj4y
PC9zcGFuPjwvZGl2PgorPGRpdiBpZD0iaW52aXNpYmxlUHJlIj48cHJlIGNsYXNzPSJpbnZpc2li
bGUiPnRlc3Q8L3ByZT48L2Rpdj4KKzxkaXYgaWQ9ImludmlzaWJsZVByZUZpcnN0Ij48cHJlIGNs
YXNzPSJpbnZpc2libGUgZmlyc3QiPnRlc3Q8L3ByZT48L2Rpdj4KKzxkaXYgaWQ9ImludmlzaWJs
ZSI+Cis8ZGl2IGNsYXNzPSJpbnZpc2libGUiPjxpbnB1dCB2YWx1ZT0iYW4gaW5wdXQiIHR5cGU9
InRleHQiLz4gPC9kaXY+PHByZT50ZXN0PC9wcmU+Cis8L2Rpdj4KKworPHByZT4KK1Jlc3VsdHMK
KzwvcHJlPgorPC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgYSBsZXR0
ZXIgd2l0aCA6Zmlyc3QtbGV0dGVyIGFwcGxpZWQgaXMgcHJlc2VudCBpbiBpbm5lclRleHQuIik7
CitzaG91bGRCZSgiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RpdkZpcnN0JykuaW5uZXJUZXh0
IiwgImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkaXZOb3JtYWwnKS5pbm5lclRleHQiKTsKK3No
b3VsZEJlKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncEZpcnN0JykuaW5uZXJUZXh0IiwgImRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdwTm9ybWFsJykuaW5uZXJUZXh0Iik7CitzaG91bGRCZSgi
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbGxhcHNlZFNwYWNlRmlyc3QnKS5pbm5lclRleHQi
LCAiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbGxhcHNlZFNwYWNlTm9ybWFsJykuaW5uZXJU
ZXh0Iik7CitzaG91bGRCZSgiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbGxhcHNlZFNwYWNl
UHJlRmlyc3QnKS5pbm5lclRleHQiLCAiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbGxhcHNl
ZFNwYWNlUHJlTm9ybWFsJykuaW5uZXJUZXh0Iik7CitzaG91bGRCZSgiZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ3ByZUxpbmVGaXJzdCcpLmlubmVyVGV4dCIsICJkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgncHJlTGluZU5vcm1hbCcpLmlubmVyVGV4dCIpOworc2hvdWxkQmUoImRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdwcmVXcmFwRmlyc3QnKS5pbm5lclRleHQiLCAiZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ3ByZVdyYXBOb3JtYWwnKS5pbm5lclRleHQiKTsKK3Nob3VsZEJlKCJkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgncHJlU3BhY2VGaXJzdCcpLmlubmVyVGV4dCIsICJkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgncHJlU3BhY2VOb3JtYWwnKS5pbm5lclRleHQiKTsKK3Nob3VsZEJlKCJk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29sbGFwc2VkU3BhY2VEaXZGaXJzdCcpLmlubmVyVGV4
dCIsICJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29sbGFwc2VkU3BhY2VEaXZOb3JtYWwnKS5p
bm5lclRleHQiKTsKK3Nob3VsZEJlKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZmlyc3RDb2xs
YXBzZWREaXZGaXJzdCcpLmlubmVyVGV4dCIsICJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZmly
c3RDb2xsYXBzZWREaXZOb3JtYWwnKS5pbm5lclRleHQiKTsKK3Nob3VsZEJlKCJkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnY29sbGFwc2VkU3BhY2VDb2xsYXBzZWREaXZGaXJzdCcpLmlubmVyVGV4
dCIsICJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29sbGFwc2VkU3BhY2VDb2xsYXBzZWREaXZO
b3JtYWwnKS5pbm5lclRleHQiKTsKK3Nob3VsZEJlKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
Y29sbGFwc2VkU3BhY2VDb2xsYXBzZWREaXZGaXJzdCcpLmlubmVyVGV4dCIsICInZm9vXFxuYWJj
XFxuJyIpOworc2hvdWxkQmUoImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb2xsYXBzZWRTcGFj
ZVB1bmN0RGl2Rmlyc3QnKS5pbm5lclRleHQiLCAiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Nv
bGxhcHNlZFNwYWNlUHVuY3REaXZOb3JtYWwnKS5pbm5lclRleHQiKTsKK3Nob3VsZEJlKCJkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnY29sbGFwc2VkU3BhY2VQdW5jdERpdkZpcnN0JykuaW5uZXJU
ZXh0IiwgIidmb29cXG58IGFiY1xcbiciKTsKK3Nob3VsZEJlKCJkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnZGl2U3BhbkZpcnN0JykuaW5uZXJUZXh0IiwgImRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdkaXZTcGFuTm9ybWFsJykuaW5uZXJUZXh0Iik7CitzaG91bGRCZSgiZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2ludmlzaWJsZVByZScpLmlubmVyVGV4dCIsICInJyIpOworc2hvdWxkQmUoImRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbnZpc2libGVQcmVGaXJzdCcpLmlubmVyVGV4dCIsICIn
dCciKTsKK3Nob3VsZEJlKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW52aXNpYmxlJykuaW5u
ZXJUZXh0IiwgIid0ZXN0XFxuJyIpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2Y2MDgyZTBjZGQzNjE2ZmI3NDI1NTVjNTcxMWVi
MmMxMmQ1NGExZi4uMjBlNjViY2E4NDY3OTE2OTU0ZjVhZjc0NThlZDJjNGEyZjQ3MzlhNSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAxMC0wNS0yOCAgWW9zaGlraSBIYXlhc2hpICA8eWhheWFzaGlAZ29vZ2xl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJ
dGVyYXRlIG92ZXIgOmZpcnN0LWxldHRlciBzbyB0aGF0IGl0IHdpbGwgYmUgaW5jbHVkZWQgaW4g
aW5uZXJUZXh0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9Mzk4NjMKKworICAgICAgICBUZXN0OiBmYXN0L2RvbS9pbm5lci10ZXh0LWZpcnN0LWxldHRl
ci5odG1sCisKKyAgICAgICAgKiBlZGl0aW5nL1RleHRJdGVyYXRvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0SXRlcmF0b3I6OlRleHRJdGVyYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0SXRlcmF0b3I6OmFkdmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpo
YW5kbGVUZXh0Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OmhhbmRsZVRl
eHRCb3gpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjplbWl0VGV4dCk6CisgICAg
ICAgICogZWRpdGluZy9UZXh0SXRlcmF0b3IuaDoKKwogMjAxMC0wNS0zMSAgVG9ueSBDaGFuZyAg
PHRvbnlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhbiBCZXJuc3RlaW4u
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcCBiL1dlYkNvcmUv
ZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCmluZGV4IGYzYmQ5ZGY2YjlmOTViZjMwZGRhMmEzMGU3
MjZkNzM1ZjE4ZjhiMWYuLjYzODE3ODE2MzliYWJjOGNhZTFmZGQxM2FkNTYwYWY1NWQwN2JkZWQg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCisrKyBiL1dlYkNv
cmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAi
UmVuZGVyVGFibGVDZWxsLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGFibGVSb3cuaCIKICNpbmNsdWRl
ICJSZW5kZXJUZXh0Q29udHJvbC5oIgorI2luY2x1ZGUgIlJlbmRlclRleHRGcmFnbWVudC5oIgog
I2luY2x1ZGUgIlZpc2libGVQb3NpdGlvbi5oIgogI2luY2x1ZGUgInZpc2libGVfdW5pdHMuaCIK
IApAQCAtMjUyLDExICsyNTMsMTQgQEAgVGV4dEl0ZXJhdG9yOjpUZXh0SXRlcmF0b3IoKQogICAg
ICwgbV9lbmRPZmZzZXQoMCkKICAgICAsIG1fcG9zaXRpb25Ob2RlKDApCiAgICAgLCBtX3RleHRD
aGFyYWN0ZXJzKDApCisgICAgLCBtX3JlbWFpbmluZ1RleHRCb3goMCkKKyAgICAsIG1fZmlyc3RM
ZXR0ZXJUZXh0KDApCiAgICAgLCBtX3RleHRMZW5ndGgoMCkKICAgICAsIG1fbGFzdENoYXJhY3Rl
cigwKQogICAgICwgbV9lbWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucyhm
YWxzZSkKICAgICAsIG1fZW50ZXJzVGV4dENvbnRyb2xzKGZhbHNlKQogICAgICwgbV9lbWl0c1Rl
eHRXaXRob3V0VHJhbnNjb2RpbmcoZmFsc2UpCisgICAgLCBtX2hhbmRsZWRGaXJzdExldHRlcihm
YWxzZSkKIHsKIH0KIApAQCAtMjY4LDkgKzI3MiwxMiBAQCBUZXh0SXRlcmF0b3I6OlRleHRJdGVy
YXRvcihjb25zdCBSYW5nZSogciwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgYmVoYXZpb3IpCiAgICAg
LCBtX3Bvc2l0aW9uTm9kZSgwKQogICAgICwgbV90ZXh0Q2hhcmFjdGVycygwKQogICAgICwgbV90
ZXh0TGVuZ3RoKDApCisgICAgLCBtX3JlbWFpbmluZ1RleHRCb3goMCkKKyAgICAsIG1fZmlyc3RM
ZXR0ZXJUZXh0KDApCiAgICAgLCBtX2VtaXRzQ2hhcmFjdGVyc0JldHdlZW5BbGxWaXNpYmxlUG9z
aXRpb25zKGJlaGF2aW9yICYgVGV4dEl0ZXJhdG9yRW1pdHNDaGFyYWN0ZXJzQmV0d2VlbkFsbFZp
c2libGVQb3NpdGlvbnMpCiAgICAgLCBtX2VudGVyc1RleHRDb250cm9scyhiZWhhdmlvciAmIFRl
eHRJdGVyYXRvckVudGVyc1RleHRDb250cm9scykKICAgICAsIG1fZW1pdHNUZXh0V2l0aG91dFRy
YW5zY29kaW5nKGJlaGF2aW9yICYgVGV4dEl0ZXJhdG9yRW1pdHNUZXh0c1dpdGhvdXRUcmFuc2Nv
ZGluZykKKyAgICAsIG1faGFuZGxlZEZpcnN0TGV0dGVyKGZhbHNlKQogewogICAgIGlmICghcikK
ICAgICAgICAgcmV0dXJuOwpAQCAtMzQ0LDYgKzM1MSwxMiBAQCB2b2lkIFRleHRJdGVyYXRvcjo6
YWR2YW5jZSgpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBpZiAoIW1fdGV4dEJveCAm
JiBtX3JlbWFpbmluZ1RleHRCb3gpIHsKKyAgICAgICAgbV90ZXh0Qm94ID0gbV9yZW1haW5pbmdU
ZXh0Qm94OworICAgICAgICBtX3JlbWFpbmluZ1RleHRCb3ggPSAwOworICAgICAgICBtX2ZpcnN0
TGV0dGVyVGV4dCA9IDA7CisgICAgICAgIG1fb2Zmc2V0ID0gMDsKKyAgICB9CiAgICAgLy8gaGFu
ZGxlIHJlbWVtYmVyZWQgdGV4dCBib3gKICAgICBpZiAobV90ZXh0Qm94KSB7CiAgICAgICAgIGhh
bmRsZVRleHRCb3goKTsKQEAgLTQxNyw2ICs0MzAsOCBAQCB2b2lkIFRleHRJdGVyYXRvcjo6YWR2
YW5jZSgpCiAgICAgICAgICAgICBwdXNoRnVsbHlDbGlwcGVkU3RhdGUobV9mdWxseUNsaXBwZWRT
dGFjaywgbV9ub2RlKTsKICAgICAgICAgbV9oYW5kbGVkTm9kZSA9IGZhbHNlOwogICAgICAgICBt
X2hhbmRsZWRDaGlsZHJlbiA9IGZhbHNlOworICAgICAgICBtX2hhbmRsZWRGaXJzdExldHRlciA9
IGZhbHNlOworICAgICAgICBtX2ZpcnN0TGV0dGVyVGV4dCA9IDA7CiAKICAgICAgICAgLy8gaG93
IHdvdWxkIHRoaXMgZXZlciBiZT8KICAgICAgICAgaWYgKG1fcG9zaXRpb25Ob2RlKQpAQCAtNDM1
LDggKzQ1MCw2IEBAIGJvb2wgVGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Tm9kZSgpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgIFJlbmRlclRleHQqIHJlbmRlcmVyID0gdG9SZW5kZXJUZXh0
KG1fbm9kZS0+cmVuZGVyZXIoKSk7Ci0gICAgaWYgKHJlbmRlcmVyLT5zdHlsZSgpLT52aXNpYmls
aXR5KCkgIT0gVklTSUJMRSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAKICAgICBt
X2xhc3RUZXh0Tm9kZSA9IG1fbm9kZTsKICAgICBTdHJpbmcgc3RyID0gcmVuZGVyZXItPnRleHQo
KTsKQEAgLTQ0NCwxMCArNDU3LDIyIEBAIGJvb2wgVGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Tm9k
ZSgpCiAgICAgLy8gaGFuZGxlIHByZS1mb3JtYXR0ZWQgdGV4dAogICAgIGlmICghcmVuZGVyZXIt
PnN0eWxlKCktPmNvbGxhcHNlV2hpdGVTcGFjZSgpKSB7CiAgICAgICAgIGludCBydW5TdGFydCA9
IG1fb2Zmc2V0OwotICAgICAgICBpZiAobV9sYXN0VGV4dE5vZGVFbmRlZFdpdGhDb2xsYXBzZWRT
cGFjZSkgeworICAgICAgICBpZiAobV9sYXN0VGV4dE5vZGVFbmRlZFdpdGhDb2xsYXBzZWRTcGFj
ZSAmJiBoYXNWaXNpYmxlVGV4dE5vZGUocmVuZGVyZXIpKSB7CiAgICAgICAgICAgICBlbWl0Q2hh
cmFjdGVyKCcgJywgbV9ub2RlLCAwLCBydW5TdGFydCwgcnVuU3RhcnQpOwogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICB9CisgICAgICAgIGlmICghbV9oYW5kbGVkRmlyc3RMZXR0
ZXIgJiYgcmVuZGVyZXItPmlzVGV4dEZyYWdtZW50KCkpIHsKKyAgICAgICAgICAgIGhhbmRsZVRl
eHROb2RlRmlyc3RMZXR0ZXIoc3RhdGljX2Nhc3Q8UmVuZGVyVGV4dEZyYWdtZW50Kj4ocmVuZGVy
ZXIpKTsKKyAgICAgICAgICAgIGlmIChtX2ZpcnN0TGV0dGVyVGV4dCkgeworICAgICAgICAgICAg
ICAgIFN0cmluZyBmaXJzdExldHRlciA9IG1fZmlyc3RMZXR0ZXJUZXh0LT50ZXh0KCk7CisgICAg
ICAgICAgICAgICAgZW1pdFRleHQobV9ub2RlLCBtX2ZpcnN0TGV0dGVyVGV4dCwgbV9vZmZzZXQs
IGZpcnN0TGV0dGVyLmxlbmd0aCgpKTsKKyAgICAgICAgICAgICAgICBtX2ZpcnN0TGV0dGVyVGV4
dCA9IDA7CisgICAgICAgICAgICAgICAgbV90ZXh0Qm94ID0gMDsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKHJlbmRl
cmVyLT5zdHlsZSgpLT52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgaW50IHN0ckxlbmd0aCA9IHN0ci5sZW5ndGgoKTsKICAgICAgICAg
aW50IGVuZCA9IChtX25vZGUgPT0gbV9lbmRDb250YWluZXIpID8gbV9lbmRPZmZzZXQgOiBJTlRf
TUFYOwogICAgICAgICBpbnQgcnVuRW5kID0gbWluKHN0ckxlbmd0aCwgZW5kKTsKQEAgLTQ2MCw2
ICs0ODUsMTUgQEAgYm9vbCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHROb2RlKCkKICAgICB9CiAK
ICAgICBpZiAoIXJlbmRlcmVyLT5maXJzdFRleHRCb3goKSAmJiBzdHIubGVuZ3RoKCkgPiAwKSB7
CisgICAgICAgIGlmICghbV9oYW5kbGVkRmlyc3RMZXR0ZXIgJiYgcmVuZGVyZXItPmlzVGV4dEZy
YWdtZW50KCkpIHsKKyAgICAgICAgICAgIGhhbmRsZVRleHROb2RlRmlyc3RMZXR0ZXIoc3RhdGlj
X2Nhc3Q8UmVuZGVyVGV4dEZyYWdtZW50Kj4ocmVuZGVyZXIpKTsKKyAgICAgICAgICAgIGlmICht
X2ZpcnN0TGV0dGVyVGV4dCkgeworICAgICAgICAgICAgICAgIGhhbmRsZVRleHRCb3goKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgaWYgKHJlbmRlcmVyLT5zdHlsZSgpLT52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgbV9sYXN0VGV4dE5vZGVFbmRlZFdpdGhD
b2xsYXBzZWRTcGFjZSA9IHRydWU7IC8vIGVudGlyZSBibG9jayBpcyBjb2xsYXBzZWQgc3BhY2UK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtNDc1LDEzICs1MDksMTkgQEAgYm9vbCBU
ZXh0SXRlcmF0b3I6OmhhbmRsZVRleHROb2RlKCkKICAgICB9CiAgICAgCiAgICAgbV90ZXh0Qm94
ID0gcmVuZGVyZXItPmNvbnRhaW5zUmV2ZXJzZWRUZXh0KCkgPyAobV9zb3J0ZWRUZXh0Qm94ZXMu
aXNFbXB0eSgpID8gMCA6IG1fc29ydGVkVGV4dEJveGVzWzBdKSA6IHJlbmRlcmVyLT5maXJzdFRl
eHRCb3goKTsKKyAgICBpZiAoIW1faGFuZGxlZEZpcnN0TGV0dGVyICYmIHJlbmRlcmVyLT5pc1Rl
eHRGcmFnbWVudCgpKQorICAgICAgICBoYW5kbGVUZXh0Tm9kZUZpcnN0TGV0dGVyKHN0YXRpY19j
YXN0PFJlbmRlclRleHRGcmFnbWVudCo+KHJlbmRlcmVyKSk7CiAgICAgaGFuZGxlVGV4dEJveCgp
OwogICAgIHJldHVybiB0cnVlOwogfQogCiB2b2lkIFRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dEJv
eCgpCiB7ICAgIAotICAgIFJlbmRlclRleHQqIHJlbmRlcmVyID0gdG9SZW5kZXJUZXh0KG1fbm9k
ZS0+cmVuZGVyZXIoKSk7CisgICAgUmVuZGVyVGV4dCogcmVuZGVyZXIgPSBtX2ZpcnN0TGV0dGVy
VGV4dCA/IG1fZmlyc3RMZXR0ZXJUZXh0IDogdG9SZW5kZXJUZXh0KG1fbm9kZS0+cmVuZGVyZXIo
KSk7CisgICAgaWYgKHJlbmRlcmVyLT5zdHlsZSgpLT52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSkg
eworICAgICAgICBtX3RleHRCb3ggPSAwOworICAgICAgICByZXR1cm47CisgICAgfQogICAgIFN0
cmluZyBzdHIgPSByZW5kZXJlci0+dGV4dCgpOwogICAgIGludCBzdGFydCA9IG1fb2Zmc2V0Owog
ICAgIGludCBlbmQgPSAobV9ub2RlID09IG1fZW5kQ29udGFpbmVyKSA/IG1fZW5kT2Zmc2V0IDog
SU5UX01BWDsKQEAgLTUyNyw3ICs1NjcsNyBAQCB2b2lkIFRleHRJdGVyYXRvcjo6aGFuZGxlVGV4
dEJveCgpCiAgICAgICAgICAgICAgICAgICAgIHN1YnJ1bkVuZCA9IHJ1bkVuZDsKICAgICAKICAg
ICAgICAgICAgICAgICBtX29mZnNldCA9IHN1YnJ1bkVuZDsKLSAgICAgICAgICAgICAgICBlbWl0
VGV4dChtX25vZGUsIHJ1blN0YXJ0LCBzdWJydW5FbmQpOworICAgICAgICAgICAgICAgIGVtaXRU
ZXh0KG1fbm9kZSwgcmVuZGVyZXIsIHJ1blN0YXJ0LCBzdWJydW5FbmQpOwogICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICAvLyBJZiB3ZSBhcmUgZG9pbmcgYSBzdWJydW4gdGhhdCBkb2Vzbid0
IGdvIHRvIHRoZSBlbmQgb2YgdGhlIHRleHQgYm94LApAQCAtNTUxLDYgKzU5MSwyNyBAQCB2b2lk
IFRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dEJveCgpCiAgICAgfQogfQogCit2b2lkIFRleHRJdGVy
YXRvcjo6aGFuZGxlVGV4dE5vZGVGaXJzdExldHRlcihSZW5kZXJUZXh0RnJhZ21lbnQqIHJlbmRl
cmVyKQoreworICAgIGlmIChyZW5kZXJlci0+Zmlyc3RMZXR0ZXIoKSkgeworICAgICAgICBSZW5k
ZXJPYmplY3QqIHIgPSByZW5kZXJlci0+Zmlyc3RMZXR0ZXIoKTsKKyAgICAgICAgaWYgKHItPnN0
eWxlKCktPnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKQorICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICBmb3IgKFJlbmRlck9iamVjdCAqY3VyckNoaWxkID0gci0+Zmlyc3RDaGlsZCgpOyBjdXJy
Q2hpbGQ7IGN1cnJDaGlsZC0+bmV4dFNpYmxpbmcoKSkgeworICAgICAgICAgICAgaWYgKGN1cnJD
aGlsZC0+aXNUZXh0KCkpIHsKKyAgICAgICAgICAgICAgICBSZW5kZXJUZXh0KiBmaXJzdExldHRl
ciA9IHRvUmVuZGVyVGV4dChjdXJyQ2hpbGQpOworICAgICAgICAgICAgICAgIG1faGFuZGxlZEZp
cnN0TGV0dGVyID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBtX3JlbWFpbmluZ1RleHRCb3ggPSBt
X3RleHRCb3g7CisgICAgICAgICAgICAgICAgbV90ZXh0Qm94ID0gZmlyc3RMZXR0ZXItPmZpcnN0
VGV4dEJveCgpOworICAgICAgICAgICAgICAgIG1fZmlyc3RMZXR0ZXJUZXh0ID0gZmlyc3RMZXR0
ZXI7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgfQorICAgIG1faGFuZGxlZEZpcnN0TGV0dGVyID0gdHJ1ZTsKKyAgICByZXR1cm47Cit9CisK
IGJvb2wgVGV4dEl0ZXJhdG9yOjpoYW5kbGVSZXBsYWNlZEVsZW1lbnQoKQogewogICAgIGlmICht
X2Z1bGx5Q2xpcHBlZFN0YWNrLnRvcCgpKQpAQCAtNTk3LDYgKzY1OCwxOCBAQCBib29sIFRleHRJ
dGVyYXRvcjo6aGFuZGxlUmVwbGFjZWRFbGVtZW50KCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAor
Ym9vbCBUZXh0SXRlcmF0b3I6Omhhc1Zpc2libGVUZXh0Tm9kZShSZW5kZXJUZXh0KiByZW5kZXJl
cikKK3sKKyAgICBpZiAocmVuZGVyZXItPnN0eWxlKCktPnZpc2liaWxpdHkoKSA9PSBWSVNJQkxF
KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAocmVuZGVyZXItPmlzVGV4dEZyYWdtZW50
KCkpIHsKKyAgICAgICAgUmVuZGVyVGV4dEZyYWdtZW50KiBmcmFnbWVudCA9IHN0YXRpY19jYXN0
PFJlbmRlclRleHRGcmFnbWVudCo+KHJlbmRlcmVyKTsKKyAgICAgICAgaWYgKGZyYWdtZW50LT5m
aXJzdExldHRlcigpICYmIGZyYWdtZW50LT5maXJzdExldHRlcigpLT5zdHlsZSgpLT52aXNpYmls
aXR5KCkgPT0gVklTSUJMRSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKIHN0YXRpYyBib29sIHNob3VsZEVtaXRUYWJCZWZvcmVOb2RlKE5v
ZGUqIG5vZGUpCiB7CiAgICAgUmVuZGVyT2JqZWN0KiByID0gbm9kZS0+cmVuZGVyZXIoKTsKQEAg
LTg4OCw5ICs5NjEsOSBAQCB2b2lkIFRleHRJdGVyYXRvcjo6ZW1pdENoYXJhY3RlcihVQ2hhciBj
LCBOb2RlKiB0ZXh0Tm9kZSwgTm9kZSogb2Zmc2V0QmFzZU5vZGUsCiAgICAgbV9sYXN0Q2hhcmFj
dGVyID0gYzsKIH0KIAotdm9pZCBUZXh0SXRlcmF0b3I6OmVtaXRUZXh0KE5vZGUqIHRleHROb2Rl
LCBpbnQgdGV4dFN0YXJ0T2Zmc2V0LCBpbnQgdGV4dEVuZE9mZnNldCkKK3ZvaWQgVGV4dEl0ZXJh
dG9yOjplbWl0VGV4dChOb2RlKiB0ZXh0Tm9kZSwgUmVuZGVyT2JqZWN0KiByZW5kZXJPYmplY3Qs
IGludCB0ZXh0U3RhcnRPZmZzZXQsIGludCB0ZXh0RW5kT2Zmc2V0KQogewotICAgIFJlbmRlclRl
eHQqIHJlbmRlcmVyID0gdG9SZW5kZXJUZXh0KG1fbm9kZS0+cmVuZGVyZXIoKSk7CisgICAgUmVu
ZGVyVGV4dCogcmVuZGVyZXIgPSB0b1JlbmRlclRleHQocmVuZGVyT2JqZWN0KTsKICAgICBtX3Rl
eHQgPSBtX2VtaXRzVGV4dFdpdGhvdXRUcmFuc2NvZGluZyA/IHJlbmRlcmVyLT50ZXh0V2l0aG91
dFRyYW5zY29kaW5nKCkgOiByZW5kZXJlci0+dGV4dCgpOwogICAgIEFTU0VSVChtX3RleHQuY2hh
cmFjdGVycygpKTsKIApAQCAtOTA2LDYgKzk3OSwxMSBAQCB2b2lkIFRleHRJdGVyYXRvcjo6ZW1p
dFRleHQoTm9kZSogdGV4dE5vZGUsIGludCB0ZXh0U3RhcnRPZmZzZXQsIGludCB0ZXh0RW5kT2Zm
cwogICAgIG1faGFzRW1pdHRlZCA9IHRydWU7CiB9CiAKK3ZvaWQgVGV4dEl0ZXJhdG9yOjplbWl0
VGV4dChOb2RlKiB0ZXh0Tm9kZSwgaW50IHRleHRTdGFydE9mZnNldCwgaW50IHRleHRFbmRPZmZz
ZXQpCit7CisgICAgZW1pdFRleHQodGV4dE5vZGUsIG1fbm9kZS0+cmVuZGVyZXIoKSwgdGV4dFN0
YXJ0T2Zmc2V0LCB0ZXh0RW5kT2Zmc2V0KTsKK30KKwogUGFzc1JlZlB0cjxSYW5nZT4gVGV4dEl0
ZXJhdG9yOjpyYW5nZSgpIGNvbnN0CiB7CiAgICAgLy8gdXNlIHRoZSBjdXJyZW50IHJ1biBpbmZv
cm1hdGlvbiwgaWYgd2UgaGF2ZSBpdApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL1RleHRJ
dGVyYXRvci5oIGIvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oCmluZGV4IGJhMzgxYjli
ZmE0NGE3OWQxMDY0OTk5ZDJjNjA3YmU2OWY3NmE4OTMuLjQ0MzAzNTU0NDQ3OWU2MzljODlkNWZk
YThjNzNjMGQ5ODQ2MTJlMjMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0
b3IuaAorKysgYi9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmgKQEAgLTMyLDYgKzMyLDkg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBSZW5kZXJUZXh0OworY2xhc3MgUmVu
ZGVyVGV4dEZyYWdtZW50OworCiAvLyBGSVhNRTogQ2FuJ3QgcmVhbGx5IGFuc3dlciB0aGlzIHF1
ZXN0aW9uIGNvcnJlY3RseSB3aXRob3V0IGtub3dpbmcgdGhlIHdoaXRlLXNwYWNlIG1vZGUuCiAv
LyBGSVhNRTogTW92ZSB0aGlzIHNvbWV3aGVyZSBlbHNlIGluIHRoZSBlZGl0aW5nIGRpcmVjdG9y
eS4gSXQgZG9lc24ndCBiZWxvbmcgaGVyZS4KIGlubGluZSBib29sIGlzQ29sbGFwc2libGVXaGl0
ZXNwYWNlKFVDaGFyIGMpCkBAIC0xMDIsNyArMTA1LDEwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBo
YW5kbGVSZXBsYWNlZEVsZW1lbnQoKTsKICAgICBib29sIGhhbmRsZU5vblRleHROb2RlKCk7CiAg
ICAgdm9pZCBoYW5kbGVUZXh0Qm94KCk7CisgICAgdm9pZCBoYW5kbGVUZXh0Tm9kZUZpcnN0TGV0
dGVyKFJlbmRlclRleHRGcmFnbWVudCopOworICAgIGJvb2wgaGFzVmlzaWJsZVRleHROb2RlKFJl
bmRlclRleHQqKTsKICAgICB2b2lkIGVtaXRDaGFyYWN0ZXIoVUNoYXIsIE5vZGUqIHRleHROb2Rl
LCBOb2RlKiBvZmZzZXRCYXNlTm9kZSwgaW50IHRleHRTdGFydE9mZnNldCwgaW50IHRleHRFbmRP
ZmZzZXQpOworICAgIHZvaWQgZW1pdFRleHQoTm9kZSogdGV4dE5vZGUsIFJlbmRlck9iamVjdCog
cmVuZGVyT2JqZWN0LCBpbnQgdGV4dFN0YXJ0T2Zmc2V0LCBpbnQgdGV4dEVuZE9mZnNldCk7CiAg
ICAgdm9pZCBlbWl0VGV4dChOb2RlKiB0ZXh0Tm9kZSwgaW50IHRleHRTdGFydE9mZnNldCwgaW50
IHRleHRFbmRPZmZzZXQpOwogICAgIAogICAgIC8vIEN1cnJlbnQgcG9zaXRpb24sIG5vdCBuZWNl
c3NhcmlseSBvZiB0aGUgdGV4dCBiZWluZyByZXR1cm5lZCwgYnV0IHBvc2l0aW9uCkBAIC0xMzQs
NiArMTQwLDExIEBAIHByaXZhdGU6CiAgICAgLy8gYXJlIGZhbHNlIGFuZCAwLCB3ZSBnbyBiYWNr
IHRvIG5vcm1hbCBpdGVyYXRpbmcuCiAgICAgYm9vbCBtX25lZWRzQW5vdGhlck5ld2xpbmU7CiAg
ICAgSW5saW5lVGV4dEJveCogbV90ZXh0Qm94OworICAgIC8vIFVzZWQgd2hlbiBpdGVyYXRpb24g
b3ZlciA6Zmlyc3QtbGV0dGVyIHRleHQgdG8gc2F2ZSBwb2ludGVyIHRvCisgICAgLy8gcmVtYWlu
aW5nIHRleHQgYm94LgorICAgIElubGluZVRleHRCb3gqIG1fcmVtYWluaW5nVGV4dEJveDsKKyAg
ICAvLyBVc2VkIHRvIHBvaW50IHRvIFJlbmRlclRleHQgb2JqZWN0IGZvciA6Zmlyc3QtbGV0dGVy
LgorICAgIFJlbmRlclRleHQgKm1fZmlyc3RMZXR0ZXJUZXh0OwogICAgIAogICAgIC8vIFVzZWQg
dG8gZG8gdGhlIHdoaXRlc3BhY2UgY29sbGFwc2luZyBsb2dpYy4KICAgICBOb2RlKiBtX2xhc3RU
ZXh0Tm9kZTsgICAgCkBAIC0xNTksNiArMTcwLDggQEAgcHJpdmF0ZToKIAogICAgIC8vIFVzZWQg
d2hlbiB3ZSB3YW50IHRleHRzIGZvciBjb3B5aW5nLCBwYXN0aW5nLCBhbmQgdHJhbnNwb3Npbmcu
CiAgICAgYm9vbCBtX2VtaXRzVGV4dFdpdGhvdXRUcmFuc2NvZGluZzsKKyAgICAvLyBVc2VkIHdo
ZW4gZGVjaWRpbmcgdGV4dCBmcmFnbWVudCBjcmVhdGVkIGJ5IDpmaXJzdC1sZXR0ZXIgc2hvdWxk
IGJlIGxvb2tlZCBpbnRvLgorICAgIGJvb2wgbV9oYW5kbGVkRmlyc3RMZXR0ZXI7CiB9OwogCiAv
LyBJdGVyYXRlcyB0aHJvdWdoIHRoZSBET00gcmFuZ2UsIHJldHVybmluZyBhbGwgdGhlIHRleHQs
IGFuZCAwLWxlbmd0aCBib3VuZGFyaWVzCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57750</attachid>
            <date>2010-06-03 03:41:08 -0700</date>
            <delta_ts>2010-06-04 01:57:27 -0700</delta_ts>
            <desc>Proposed Patch without unnecessary return.  Sorry for spam.</desc>
            <filename>bug-39863-20100603194106.patch</filename>
            <type>text/plain</type>
            <size>20612</size>
            <attacher name="Yoshiki Hayashi">yhayashi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0ZDQ2N2Q0YTIwOTc5ZDk4M2E1ZmQwYjUyNTQwNThmNThjOTgzMDA0Li44NzU5ZmNh
ZTdhZTUyYTE3NzQ3NmM2NmVkZmEzYjBjY2M0ZTE5MTgyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTAtMDUtMjggIFlvc2hpa2kgSGF5YXNoaSAgPHloYXlhc2hpQGdvb2dsZS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSXRlcmF0ZSBvdmVy
IDpmaXJzdC1sZXR0ZXIgc28gdGhhdCBpdCB3aWxsIGJlIGluY2x1ZGVkIGluIGlubmVyVGV4dC4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5ODYzCisK
KyAgICAgICAgKiBmYXN0L2RvbS9pbm5lci10ZXh0LWZpcnN0LWxldHRlci1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL2lubmVyLXRleHQtZmlyc3QtbGV0dGVyLmh0bWw6
IEFkZGVkLgorCiAyMDEwLTA2LTAzICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4K
IAogICAgICAgICBVbnJldmlld2VkLiBUZXN0IGV4cGVjdGF0aW9uIHVwZGF0ZS4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL2dldENvbXB1dGVkU3R5bGUvZ2V0Q29tcHV0ZWRTdHls
ZS13aXRoLXBzZXVkby1lbGVtZW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY3Nz
L2dldENvbXB1dGVkU3R5bGUvZ2V0Q29tcHV0ZWRTdHlsZS13aXRoLXBzZXVkby1lbGVtZW50LWV4
cGVjdGVkLnR4dAppbmRleCA0OTU3NmYxODA2Y2UzYjA2YjU0YTFkNjkxNTg0YzM1NDY2MGQwNjA1
Li4wZTdiYzUwZTRhMmVkM2QxOGJiZTQ4YTk0N2ZiMjNjOGY4YzNlNTkxIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9mYXN0L2Nzcy9nZXRDb21wdXRlZFN0eWxlL2dldENvbXB1dGVkU3R5bGUtd2l0
aC1wc2V1ZG8tZWxlbWVudC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mv
Z2V0Q29tcHV0ZWRTdHlsZS9nZXRDb21wdXRlZFN0eWxlLXdpdGgtcHNldWRvLWVsZW1lbnQtZXhw
ZWN0ZWQudHh0CkBAIC0xLDcgKzEsNyBAQAogVGVzdCBmb3IgV2ViS2l0IGJ1ZyAyNDAyMTogcHNl
dWRvLWVsZW1lbnQgc3R5bGVzIG5vdCBhY2Nlc3NpYmxlIC8gcmV0cmlldmFibGUgdmlhIERPTSBt
ZXRob2RzCiAKIAotb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRpcGlz
aWNpbmcgZWxpdCwgc2VkIGRvIGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1bnQgdXQgbGFib3JlIGV0
IGRvbG9yZSBtYWduYSBhbGlxdWEuIFV0IGVuaW0gYWQgbWluaW0gdmVuaWFtLCBxdWlzIG5vc3Ry
dWQgZXhlcmNpdGF0aW9uIHVsbGFtY28gbGFib3JpcyBuaXNpIHV0IGFsaXF1aXAgZXggZWEgY29t
bW9kbyBjb25zZXF1YXQuIER1aXMgYXV0ZSBpcnVyZSBkb2xvciBpbiByZXByZWhlbmRlcml0IGlu
IHZvbHVwdGF0ZSB2ZWxpdCBlc3NlIGNpbGx1bSBkb2xvcmUgZXUgZnVnaWF0IG51bGxhIHBhcmlh
dHVyLiBFeGNlcHRldXIgc2ludCBvY2NhZWNhdCBjdXBpZGF0YXQgbm9uIHByb2lkZW50LCBzdW50
IGluIGN1bHBhIHF1aSBvZmZpY2lhIGRlc2VydW50IG1vbGxpdCBhbmltIGlkIGVzdCBsYWJvcnVt
LgorTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2ljaW5nIGVs
aXQsIHNlZCBkbyBlaXVzbW9kIHRlbXBvciBpbmNpZGlkdW50IHV0IGxhYm9yZSBldCBkb2xvcmUg
bWFnbmEgYWxpcXVhLiBVdCBlbmltIGFkIG1pbmltIHZlbmlhbSwgcXVpcyBub3N0cnVkIGV4ZXJj
aXRhdGlvbiB1bGxhbWNvIGxhYm9yaXMgbmlzaSB1dCBhbGlxdWlwIGV4IGVhIGNvbW1vZG8gY29u
c2VxdWF0LiBEdWlzIGF1dGUgaXJ1cmUgZG9sb3IgaW4gcmVwcmVoZW5kZXJpdCBpbiB2b2x1cHRh
dGUgdmVsaXQgZXNzZSBjaWxsdW0gZG9sb3JlIGV1IGZ1Z2lhdCBudWxsYSBwYXJpYXR1ci4gRXhj
ZXB0ZXVyIHNpbnQgb2NjYWVjYXQgY3VwaWRhdGF0IG5vbiBwcm9pZGVudCwgc3VudCBpbiBjdWxw
YSBxdWkgb2ZmaWNpYSBkZXNlcnVudCBtb2xsaXQgYW5pbSBpZCBlc3QgbGFib3J1bS4KIAogTWlk
ZGxlCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2lubmVyLXRleHQtZmlyc3Qt
bGV0dGVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2lubmVyLXRleHQtZmly
c3QtbGV0dGVyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMGVjOGUxZTI5ODM4Zjg2MTEyZjFh
NTIyNmM3ODI0OGQwZDBmZmFlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vaW5uZXItdGV4dC1maXJzdC1sZXR0ZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNzAgQEAK
K1RoaXMgdGVzdHMgYSBsZXR0ZXIgd2l0aCA6Zmlyc3QtbGV0dGVyIGFwcGxpZWQgaXMgcHJlc2Vu
dCBpbiBpbm5lclRleHQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdkaXZGaXJzdCcpLmlubmVyVGV4dCBpcyBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnZGl2Tm9ybWFsJykuaW5uZXJUZXh0CitQQVNTIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdwRmlyc3QnKS5pbm5lclRleHQgaXMgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3BOb3JtYWwnKS5pbm5lclRleHQKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbGxh
cHNlZFNwYWNlRmlyc3QnKS5pbm5lclRleHQgaXMgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Nv
bGxhcHNlZFNwYWNlTm9ybWFsJykuaW5uZXJUZXh0CitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdjb2xsYXBzZWRTcGFjZVByZUZpcnN0JykuaW5uZXJUZXh0IGlzIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdjb2xsYXBzZWRTcGFjZVByZU5vcm1hbCcpLmlubmVyVGV4dAorUEFTUyBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgncHJlTGluZUZpcnN0JykuaW5uZXJUZXh0IGlzIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdwcmVMaW5lTm9ybWFsJykuaW5uZXJUZXh0CitQQVNTIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdwcmVXcmFwRmlyc3QnKS5pbm5lclRleHQgaXMgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ3ByZVdyYXBOb3JtYWwnKS5pbm5lclRleHQKK1BBU1MgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ3ByZVNwYWNlRmlyc3QnKS5pbm5lclRleHQgaXMgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ3ByZVNwYWNlTm9ybWFsJykuaW5uZXJUZXh0CitQQVNTIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdjb2xsYXBzZWRTcGFjZURpdkZpcnN0JykuaW5uZXJUZXh0IGlzIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdjb2xsYXBzZWRTcGFjZURpdk5vcm1hbCcpLmlubmVyVGV4dAorUEFT
UyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZmlyc3RDb2xsYXBzZWREaXZGaXJzdCcpLmlubmVy
VGV4dCBpcyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZmlyc3RDb2xsYXBzZWREaXZOb3JtYWwn
KS5pbm5lclRleHQKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbGxhcHNlZFNwYWNl
Q29sbGFwc2VkRGl2Rmlyc3QnKS5pbm5lclRleHQgaXMgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2NvbGxhcHNlZFNwYWNlQ29sbGFwc2VkRGl2Tm9ybWFsJykuaW5uZXJUZXh0CitQQVNTIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdjb2xsYXBzZWRTcGFjZUNvbGxhcHNlZERpdkZpcnN0JykuaW5u
ZXJUZXh0IGlzICdmb29cbmFiY1xuJworUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29s
bGFwc2VkU3BhY2VQdW5jdERpdkZpcnN0JykuaW5uZXJUZXh0IGlzIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdjb2xsYXBzZWRTcGFjZVB1bmN0RGl2Tm9ybWFsJykuaW5uZXJUZXh0CitQQVNTIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb2xsYXBzZWRTcGFjZVB1bmN0RGl2Rmlyc3QnKS5pbm5l
clRleHQgaXMgJ2Zvb1xufCBhYmNcbicKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Rp
dlNwYW5GaXJzdCcpLmlubmVyVGV4dCBpcyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGl2U3Bh
bk5vcm1hbCcpLmlubmVyVGV4dAorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW52aXNp
YmxlUHJlJykuaW5uZXJUZXh0IGlzICcnCitGQUlMIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdp
bnZpc2libGVQcmVGaXJzdCcpLmlubmVyVGV4dCBzaG91bGQgYmUgdC4gV2FzIHQKKy4KK1BBU1Mg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ludmlzaWJsZScpLmlubmVyVGV4dCBpcyAndGVzdFxu
JworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCitkaXYK
K2RpdgorcHJlCitwcmUKK2FiYworYWJjCisgYWJjCisgYWJjCit0ZXN0CisgIGFiYwordGVzdAor
ICBhYmMKK3Rlc3QKK2FiYwordGVzdAorYWJjCit0ZXN0Cit0ZXN0CisKK3Rlc3QKKwordGVzdAor
Zm9vCithYmMKK2ZvbworYWJjCithYmMKK2RlZgorYWJjCitkZWYKK2ZvbworYWJjCitmb28KK2Fi
YworZm9vCit8IGFiYworZm9vCit8IGFiYworMTIKKzEyCit0Cit0ZXN0CitSZXN1bHRzCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2lubmVyLXRleHQtZmlyc3QtbGV0dGVyLmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9pbm5lci10ZXh0LWZpcnN0LWxldHRlci5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjg2NDc2ODEyYmY4NTkwNTJlZjM5NGVjMTViNTY3M2M5NzI3MGEwNmYKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9pbm5lci10ZXh0LWZpcnN0LWxldHRl
ci5odG1sCkBAIC0wLDAgKzEsOTAgQEAKKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0
IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzdHlsZT4K
Ky5maXJzdDpmaXJzdC1sZXR0ZXIgeworICBmb250LXdlaWdodDogYm9sZDsKKyAgdmlzaWJpbGl0
eTogdmlzaWJsZTsKK30KKy52aXNpYmxlIHsKKyAgdmlzaWJsaXR5OiB2aXNpYmxlOworfQorLmlu
dmlzaWJsZSB7CisgIHZpc2liaWxpdHk6IGhpZGRlbjsKK30KKy5wcmVMaW5lIHsKKyAgd2hpdGUt
c3BhY2U6IHByZS1saW5lOworfQorLnByZVdyYXAgeworICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7
Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4K
KzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGRpdiBpZD0iZGl2Rmlyc3QiIGNsYXNzPSJmaXJz
dCI+ZGl2PC9kaXY+Cis8ZGl2IGlkPSJkaXZOb3JtYWwiPmRpdjwvZGl2PgorPHByZSBpZD0icEZp
cnN0IiBjbGFzcz0iZmlyc3QiPnByZTwvcHJlPgorPHByZSBpZD0icE5vcm1hbCI+cHJlPC9wcmU+
Cis8ZGl2IGlkPSJjb2xsYXBzZWRTcGFjZUZpcnN0Ij48c3Bhbj4gPC9zcGFuPjxkaXYgY2xhc3M9
ImZpcnN0Ij5hYmM8L2Rpdj48L2Rpdj4KKzxkaXYgaWQ9ImNvbGxhcHNlZFNwYWNlTm9ybWFsIj48
c3Bhbj4gPC9zcGFuPjxkaXY+YWJjPC9kaXY+PC9kaXY+Cis8ZGl2IGlkPSJjb2xsYXBzZWRTcGFj
ZVByZUZpcnN0Ij48c3Bhbj4gPC9zcGFuPjxwcmUgY2xhc3M9ImZpcnN0Ij5hYmM8L3ByZT48L2Rp
dj4KKzxkaXYgaWQ9ImNvbGxhcHNlZFNwYWNlUHJlTm9ybWFsIj48c3Bhbj4gPC9zcGFuPjxwcmU+
YWJjPC9wcmU+PC9kaXY+Cis8ZGl2IGlkPSJwcmVTcGFjZUZpcnN0Ij48c3Bhbj50ZXN0PC9zcGFu
PjxwcmUgY2xhc3M9ImZpcnN0Ij4gIGFiYzwvcHJlPjwvZGl2PgorPGRpdiBpZD0icHJlU3BhY2VO
b3JtYWwiPjxzcGFuPnRlc3Q8L3NwYW4+PHByZT4gIGFiYzwvcHJlPjwvZGl2PgorPGRpdiBpZD0i
ZGl2U3BhY2VGaXJzdCI+PHNwYW4+dGVzdDwvc3Bhbj48ZGl2IGNsYXNzPSJmaXJzdCI+ICBhYmM8
L2Rpdj48L2Rpdj4KKzxkaXYgaWQ9ImRpdlNwYWNlTm9ybWFsIj48c3Bhbj50ZXN0PC9zcGFuPjxk
aXY+ICBhYmM8L2Rpdj48L2Rpdj4KKzxkaXYgaWQ9InByZUxpbmVGaXJzdCIgY2xhc3M9ImZpcnN0
IHByZUxpbmUiPnRlc3Q8L2Rpdj4KKzxkaXYgaWQ9InByZUxpbmVOb3JtYWwiIGNsYXNzPSJwcmVM
aW5lIj50ZXN0PC9kaXY+Cis8ZGl2IGlkPSJwcmVXcmFwRmlyc3QiIGNsYXNzPSJmaXJzdCBwcmVX
cmFwIj4KK3Rlc3Q8L2Rpdj4KKzxkaXYgaWQ9InByZVdyYXBOb3JtYWwiIGNsYXNzPSJwcmVXcmFw
Ij4KK3Rlc3Q8L2Rpdj4KKzxkaXYgaWQ9ImNvbGxhcHNlZFNwYWNlRGl2Rmlyc3QiPjxzcGFuPmZv
bzwvc3Bhbj48c3Bhbj4gPC9zcGFuPjxkaXYgY2xhc3M9ImZpcnN0Ij5hYmM8L2Rpdj48L2Rpdj4K
KzxkaXYgaWQ9ImNvbGxhcHNlZFNwYWNlRGl2Tm9ybWFsIj48c3Bhbj5mb288L3NwYW4+PHNwYW4+
IDwvc3Bhbj48ZGl2PmFiYzwvZGl2PjwvZGl2PgorPGRpdiBpZD0iZmlyc3RDb2xsYXBzZWREaXZG
aXJzdCI+PGRpdiBjbGFzcz0iZmlyc3QiPmFiYyAgPC9kaXY+PHNwYW4+ZGVmPC9zcGFuPjwvZGl2
PgorPGRpdiBpZD0iZmlyc3RDb2xsYXBzZWREaXZOb3JtYWwiPjxkaXY+YWJjICA8L2Rpdj48c3Bh
bj5kZWY8L3NwYW4+PC9kaXY+Cis8ZGl2IGlkPSJjb2xsYXBzZWRTcGFjZUNvbGxhcHNlZERpdkZp
cnN0Ij48c3Bhbj5mb288L3NwYW4+PHNwYW4+IDwvc3Bhbj48ZGl2IGNsYXNzPSJmaXJzdCI+ICBh
YmM8L2Rpdj48L2Rpdj4KKzxkaXYgaWQ9ImNvbGxhcHNlZFNwYWNlQ29sbGFwc2VkRGl2Tm9ybWFs
Ij48c3Bhbj5mb288L3NwYW4+PHNwYW4+IDwvc3Bhbj48ZGl2PiAgYWJjPC9kaXY+PC9kaXY+Cis8
ZGl2IGlkPSJjb2xsYXBzZWRTcGFjZVB1bmN0RGl2Rmlyc3QiPjxzcGFuPmZvbzwvc3Bhbj48c3Bh
bj4gPC9zcGFuPjxkaXYgY2xhc3M9ImZpcnN0Ij58ICAKK2FiYzwvZGl2PjwvZGl2PgorPGRpdiBp
ZD0iY29sbGFwc2VkU3BhY2VQdW5jdERpdk5vcm1hbCI+PHNwYW4+Zm9vPC9zcGFuPjxzcGFuPiA8
L3NwYW4+PGRpdj58ICAKK2FiYzwvZGl2PjwvZGl2PgorPGRpdiBpZD0iZGl2U3BhbkZpcnN0IiBj
bGFzcz0iZmlyc3QiPjxzcGFuIGlkPSJmMSI+MTwvc3Bhbj48c3BhbiBpZD0iZjIiPjI8L3NwYW4+
PC9kaXY+Cis8ZGl2IGlkPSJkaXZTcGFuTm9ybWFsIj48c3BhbiBpZD0ibjEiPjE8L3NwYW4+PHNw
YW4gaWQ9Im4yIj4yPC9zcGFuPjwvZGl2PgorPGRpdiBpZD0iaW52aXNpYmxlUHJlIj48cHJlIGNs
YXNzPSJpbnZpc2libGUiPnRlc3Q8L3ByZT48L2Rpdj4KKzxkaXYgaWQ9ImludmlzaWJsZVByZUZp
cnN0Ij48cHJlIGNsYXNzPSJpbnZpc2libGUgZmlyc3QiPnRlc3Q8L3ByZT48L2Rpdj4KKzxkaXYg
aWQ9ImludmlzaWJsZSI+Cis8ZGl2IGNsYXNzPSJpbnZpc2libGUiPjxpbnB1dCB2YWx1ZT0iYW4g
aW5wdXQiIHR5cGU9InRleHQiLz4gPC9kaXY+PHByZT50ZXN0PC9wcmU+Cis8L2Rpdj4KKworPHBy
ZT4KK1Jlc3VsdHMKKzwvcHJlPgorPC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRoaXMg
dGVzdHMgYSBsZXR0ZXIgd2l0aCA6Zmlyc3QtbGV0dGVyIGFwcGxpZWQgaXMgcHJlc2VudCBpbiBp
bm5lclRleHQuIik7CitzaG91bGRCZSgiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RpdkZpcnN0
JykuaW5uZXJUZXh0IiwgImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkaXZOb3JtYWwnKS5pbm5l
clRleHQiKTsKK3Nob3VsZEJlKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncEZpcnN0JykuaW5u
ZXJUZXh0IiwgImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwTm9ybWFsJykuaW5uZXJUZXh0Iik7
CitzaG91bGRCZSgiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbGxhcHNlZFNwYWNlRmlyc3Qn
KS5pbm5lclRleHQiLCAiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbGxhcHNlZFNwYWNlTm9y
bWFsJykuaW5uZXJUZXh0Iik7CitzaG91bGRCZSgiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Nv
bGxhcHNlZFNwYWNlUHJlRmlyc3QnKS5pbm5lclRleHQiLCAiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2NvbGxhcHNlZFNwYWNlUHJlTm9ybWFsJykuaW5uZXJUZXh0Iik7CitzaG91bGRCZSgiZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3ByZUxpbmVGaXJzdCcpLmlubmVyVGV4dCIsICJkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgncHJlTGluZU5vcm1hbCcpLmlubmVyVGV4dCIpOworc2hvdWxkQmUo
ImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwcmVXcmFwRmlyc3QnKS5pbm5lclRleHQiLCAiZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3ByZVdyYXBOb3JtYWwnKS5pbm5lclRleHQiKTsKK3Nob3Vs
ZEJlKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncHJlU3BhY2VGaXJzdCcpLmlubmVyVGV4dCIs
ICJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncHJlU3BhY2VOb3JtYWwnKS5pbm5lclRleHQiKTsK
K3Nob3VsZEJlKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29sbGFwc2VkU3BhY2VEaXZGaXJz
dCcpLmlubmVyVGV4dCIsICJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29sbGFwc2VkU3BhY2VE
aXZOb3JtYWwnKS5pbm5lclRleHQiKTsKK3Nob3VsZEJlKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnZmlyc3RDb2xsYXBzZWREaXZGaXJzdCcpLmlubmVyVGV4dCIsICJkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnZmlyc3RDb2xsYXBzZWREaXZOb3JtYWwnKS5pbm5lclRleHQiKTsKK3Nob3VsZEJl
KCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29sbGFwc2VkU3BhY2VDb2xsYXBzZWREaXZGaXJz
dCcpLmlubmVyVGV4dCIsICJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29sbGFwc2VkU3BhY2VD
b2xsYXBzZWREaXZOb3JtYWwnKS5pbm5lclRleHQiKTsKK3Nob3VsZEJlKCJkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnY29sbGFwc2VkU3BhY2VDb2xsYXBzZWREaXZGaXJzdCcpLmlubmVyVGV4dCIs
ICInZm9vXFxuYWJjXFxuJyIpOworc2hvdWxkQmUoImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdj
b2xsYXBzZWRTcGFjZVB1bmN0RGl2Rmlyc3QnKS5pbm5lclRleHQiLCAiZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2NvbGxhcHNlZFNwYWNlUHVuY3REaXZOb3JtYWwnKS5pbm5lclRleHQiKTsKK3No
b3VsZEJlKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29sbGFwc2VkU3BhY2VQdW5jdERpdkZp
cnN0JykuaW5uZXJUZXh0IiwgIidmb29cXG58IGFiY1xcbiciKTsKK3Nob3VsZEJlKCJkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnZGl2U3BhbkZpcnN0JykuaW5uZXJUZXh0IiwgImRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdkaXZTcGFuTm9ybWFsJykuaW5uZXJUZXh0Iik7CitzaG91bGRCZSgiZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ludmlzaWJsZVByZScpLmlubmVyVGV4dCIsICInJyIpOwor
c2hvdWxkQmUoImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbnZpc2libGVQcmVGaXJzdCcpLmlu
bmVyVGV4dCIsICIndCciKTsKK3Nob3VsZEJlKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW52
aXNpYmxlJykuaW5uZXJUZXh0IiwgIid0ZXN0XFxuJyIpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNl
ZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTU1MTg3YzY0Yjg3N2JiNWMz
ZmQ5YzVjMWNkNzRhYmM0ZjkxZWU1Yy4uZDAyYmM3Y2NjNDcwODZkYWZiZjIzOGVkZGUyNDZkMmE1
ZTgyNGJjZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMC0wNS0yOCAgWW9zaGlraSBIYXlhc2hpICA8eWhh
eWFzaGlAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBJdGVyYXRlIG92ZXIgOmZpcnN0LWxldHRlciBzbyB0aGF0IGl0IHdpbGwgYmUg
aW5jbHVkZWQgaW4gaW5uZXJUZXh0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9Mzk4NjMKKworICAgICAgICBUZXN0OiBmYXN0L2RvbS9pbm5lci10ZXh0
LWZpcnN0LWxldHRlci5odG1sCisKKyAgICAgICAgKiBlZGl0aW5nL1RleHRJdGVyYXRvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OlRleHRJdGVyYXRvcik6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OmFkdmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0
b3I6OmhhbmRsZVRleHRCb3gpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjplbWl0
VGV4dCk6CisgICAgICAgICogZWRpdGluZy9UZXh0SXRlcmF0b3IuaDoKKwogMjAxMC0wNi0wMyAg
S2ltIEdyw7ZuaG9sbSAgPGtpbS4xLmdyb25ob2xtQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9UZXh0
SXRlcmF0b3IuY3BwIGIvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKaW5kZXggZjNi
ZDlkZjZiOWY5NWJmMzBkZGEyYTMwZTcyNmQ3MzVmMThmOGIxZi4uNzk0MTZhMzc2NmM1OGJlMDdk
MzRmNGIwNmYxMjJkNjdhOWIyYjdlZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL1RleHRJ
dGVyYXRvci5jcHAKKysrIGIvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKQEAgLTM3
LDYgKzM3LDcgQEAKICNpbmNsdWRlICJSZW5kZXJUYWJsZUNlbGwuaCIKICNpbmNsdWRlICJSZW5k
ZXJUYWJsZVJvdy5oIgogI2luY2x1ZGUgIlJlbmRlclRleHRDb250cm9sLmgiCisjaW5jbHVkZSAi
UmVuZGVyVGV4dEZyYWdtZW50LmgiCiAjaW5jbHVkZSAiVmlzaWJsZVBvc2l0aW9uLmgiCiAjaW5j
bHVkZSAidmlzaWJsZV91bml0cy5oIgogCkBAIC0yNTIsMTEgKzI1MywxNCBAQCBUZXh0SXRlcmF0
b3I6OlRleHRJdGVyYXRvcigpCiAgICAgLCBtX2VuZE9mZnNldCgwKQogICAgICwgbV9wb3NpdGlv
bk5vZGUoMCkKICAgICAsIG1fdGV4dENoYXJhY3RlcnMoMCkKKyAgICAsIG1fcmVtYWluaW5nVGV4
dEJveCgwKQorICAgICwgbV9maXJzdExldHRlclRleHQoMCkKICAgICAsIG1fdGV4dExlbmd0aCgw
KQogICAgICwgbV9sYXN0Q2hhcmFjdGVyKDApCiAgICAgLCBtX2VtaXRzQ2hhcmFjdGVyc0JldHdl
ZW5BbGxWaXNpYmxlUG9zaXRpb25zKGZhbHNlKQogICAgICwgbV9lbnRlcnNUZXh0Q29udHJvbHMo
ZmFsc2UpCiAgICAgLCBtX2VtaXRzVGV4dFdpdGhvdXRUcmFuc2NvZGluZyhmYWxzZSkKKyAgICAs
IG1faGFuZGxlZEZpcnN0TGV0dGVyKGZhbHNlKQogewogfQogCkBAIC0yNjgsOSArMjcyLDEyIEBA
IFRleHRJdGVyYXRvcjo6VGV4dEl0ZXJhdG9yKGNvbnN0IFJhbmdlKiByLCBUZXh0SXRlcmF0b3JC
ZWhhdmlvciBiZWhhdmlvcikKICAgICAsIG1fcG9zaXRpb25Ob2RlKDApCiAgICAgLCBtX3RleHRD
aGFyYWN0ZXJzKDApCiAgICAgLCBtX3RleHRMZW5ndGgoMCkKKyAgICAsIG1fcmVtYWluaW5nVGV4
dEJveCgwKQorICAgICwgbV9maXJzdExldHRlclRleHQoMCkKICAgICAsIG1fZW1pdHNDaGFyYWN0
ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMoYmVoYXZpb3IgJiBUZXh0SXRlcmF0b3JFbWl0
c0NoYXJhY3RlcnNCZXR3ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucykKICAgICAsIG1fZW50ZXJzVGV4
dENvbnRyb2xzKGJlaGF2aW9yICYgVGV4dEl0ZXJhdG9yRW50ZXJzVGV4dENvbnRyb2xzKQogICAg
ICwgbV9lbWl0c1RleHRXaXRob3V0VHJhbnNjb2RpbmcoYmVoYXZpb3IgJiBUZXh0SXRlcmF0b3JF
bWl0c1RleHRzV2l0aG91dFRyYW5zY29kaW5nKQorICAgICwgbV9oYW5kbGVkRmlyc3RMZXR0ZXIo
ZmFsc2UpCiB7CiAgICAgaWYgKCFyKQogICAgICAgICByZXR1cm47CkBAIC0zNDQsNiArMzUxLDEy
IEBAIHZvaWQgVGV4dEl0ZXJhdG9yOjphZHZhbmNlKCkKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAorICAgIGlmICghbV90ZXh0Qm94ICYmIG1fcmVtYWluaW5nVGV4dEJveCkgeworICAgICAgICBt
X3RleHRCb3ggPSBtX3JlbWFpbmluZ1RleHRCb3g7CisgICAgICAgIG1fcmVtYWluaW5nVGV4dEJv
eCA9IDA7CisgICAgICAgIG1fZmlyc3RMZXR0ZXJUZXh0ID0gMDsKKyAgICAgICAgbV9vZmZzZXQg
PSAwOworICAgIH0KICAgICAvLyBoYW5kbGUgcmVtZW1iZXJlZCB0ZXh0IGJveAogICAgIGlmICht
X3RleHRCb3gpIHsKICAgICAgICAgaGFuZGxlVGV4dEJveCgpOwpAQCAtNDE3LDYgKzQzMCw4IEBA
IHZvaWQgVGV4dEl0ZXJhdG9yOjphZHZhbmNlKCkKICAgICAgICAgICAgIHB1c2hGdWxseUNsaXBw
ZWRTdGF0ZShtX2Z1bGx5Q2xpcHBlZFN0YWNrLCBtX25vZGUpOwogICAgICAgICBtX2hhbmRsZWRO
b2RlID0gZmFsc2U7CiAgICAgICAgIG1faGFuZGxlZENoaWxkcmVuID0gZmFsc2U7CisgICAgICAg
IG1faGFuZGxlZEZpcnN0TGV0dGVyID0gZmFsc2U7CisgICAgICAgIG1fZmlyc3RMZXR0ZXJUZXh0
ID0gMDsKIAogICAgICAgICAvLyBob3cgd291bGQgdGhpcyBldmVyIGJlPwogICAgICAgICBpZiAo
bV9wb3NpdGlvbk5vZGUpCkBAIC00MzUsOCArNDUwLDYgQEAgYm9vbCBUZXh0SXRlcmF0b3I6Omhh
bmRsZVRleHROb2RlKCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgUmVuZGVyVGV4dCog
cmVuZGVyZXIgPSB0b1JlbmRlclRleHQobV9ub2RlLT5yZW5kZXJlcigpKTsKLSAgICBpZiAocmVu
ZGVyZXItPnN0eWxlKCktPnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKQotICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIAogICAgIG1fbGFzdFRleHROb2RlID0gbV9ub2RlOwogICAgIFN0cmlu
ZyBzdHIgPSByZW5kZXJlci0+dGV4dCgpOwpAQCAtNDQ0LDEwICs0NTcsMjIgQEAgYm9vbCBUZXh0
SXRlcmF0b3I6OmhhbmRsZVRleHROb2RlKCkKICAgICAvLyBoYW5kbGUgcHJlLWZvcm1hdHRlZCB0
ZXh0CiAgICAgaWYgKCFyZW5kZXJlci0+c3R5bGUoKS0+Y29sbGFwc2VXaGl0ZVNwYWNlKCkpIHsK
ICAgICAgICAgaW50IHJ1blN0YXJ0ID0gbV9vZmZzZXQ7Ci0gICAgICAgIGlmIChtX2xhc3RUZXh0
Tm9kZUVuZGVkV2l0aENvbGxhcHNlZFNwYWNlKSB7CisgICAgICAgIGlmIChtX2xhc3RUZXh0Tm9k
ZUVuZGVkV2l0aENvbGxhcHNlZFNwYWNlICYmIGhhc1Zpc2libGVUZXh0Tm9kZShyZW5kZXJlcikp
IHsKICAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoJyAnLCBtX25vZGUsIDAsIHJ1blN0YXJ0LCBy
dW5TdGFydCk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KKyAgICAgICAg
aWYgKCFtX2hhbmRsZWRGaXJzdExldHRlciAmJiByZW5kZXJlci0+aXNUZXh0RnJhZ21lbnQoKSkg
eworICAgICAgICAgICAgaGFuZGxlVGV4dE5vZGVGaXJzdExldHRlcihzdGF0aWNfY2FzdDxSZW5k
ZXJUZXh0RnJhZ21lbnQqPihyZW5kZXJlcikpOworICAgICAgICAgICAgaWYgKG1fZmlyc3RMZXR0
ZXJUZXh0KSB7CisgICAgICAgICAgICAgICAgU3RyaW5nIGZpcnN0TGV0dGVyID0gbV9maXJzdExl
dHRlclRleHQtPnRleHQoKTsKKyAgICAgICAgICAgICAgICBlbWl0VGV4dChtX25vZGUsIG1fZmly
c3RMZXR0ZXJUZXh0LCBtX29mZnNldCwgZmlyc3RMZXR0ZXIubGVuZ3RoKCkpOworICAgICAgICAg
ICAgICAgIG1fZmlyc3RMZXR0ZXJUZXh0ID0gMDsKKyAgICAgICAgICAgICAgICBtX3RleHRCb3gg
PSAwOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICBpZiAocmVuZGVyZXItPnN0eWxlKCktPnZpc2liaWxpdHkoKSAhPSBWSVNJ
QkxFKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBpbnQgc3RyTGVuZ3RoID0g
c3RyLmxlbmd0aCgpOwogICAgICAgICBpbnQgZW5kID0gKG1fbm9kZSA9PSBtX2VuZENvbnRhaW5l
cikgPyBtX2VuZE9mZnNldCA6IElOVF9NQVg7CiAgICAgICAgIGludCBydW5FbmQgPSBtaW4oc3Ry
TGVuZ3RoLCBlbmQpOwpAQCAtNDYwLDYgKzQ4NSwxNSBAQCBib29sIFRleHRJdGVyYXRvcjo6aGFu
ZGxlVGV4dE5vZGUoKQogICAgIH0KIAogICAgIGlmICghcmVuZGVyZXItPmZpcnN0VGV4dEJveCgp
ICYmIHN0ci5sZW5ndGgoKSA+IDApIHsKKyAgICAgICAgaWYgKCFtX2hhbmRsZWRGaXJzdExldHRl
ciAmJiByZW5kZXJlci0+aXNUZXh0RnJhZ21lbnQoKSkgeworICAgICAgICAgICAgaGFuZGxlVGV4
dE5vZGVGaXJzdExldHRlcihzdGF0aWNfY2FzdDxSZW5kZXJUZXh0RnJhZ21lbnQqPihyZW5kZXJl
cikpOworICAgICAgICAgICAgaWYgKG1fZmlyc3RMZXR0ZXJUZXh0KSB7CisgICAgICAgICAgICAg
ICAgaGFuZGxlVGV4dEJveCgpOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAocmVuZGVyZXItPnN0eWxlKCktPnZpc2li
aWxpdHkoKSAhPSBWSVNJQkxFKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBt
X2xhc3RUZXh0Tm9kZUVuZGVkV2l0aENvbGxhcHNlZFNwYWNlID0gdHJ1ZTsgLy8gZW50aXJlIGJs
b2NrIGlzIGNvbGxhcHNlZCBzcGFjZQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC00
NzUsMTMgKzUwOSwxOSBAQCBib29sIFRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dE5vZGUoKQogICAg
IH0KICAgICAKICAgICBtX3RleHRCb3ggPSByZW5kZXJlci0+Y29udGFpbnNSZXZlcnNlZFRleHQo
KSA/IChtX3NvcnRlZFRleHRCb3hlcy5pc0VtcHR5KCkgPyAwIDogbV9zb3J0ZWRUZXh0Qm94ZXNb
MF0pIDogcmVuZGVyZXItPmZpcnN0VGV4dEJveCgpOworICAgIGlmICghbV9oYW5kbGVkRmlyc3RM
ZXR0ZXIgJiYgcmVuZGVyZXItPmlzVGV4dEZyYWdtZW50KCkpCisgICAgICAgIGhhbmRsZVRleHRO
b2RlRmlyc3RMZXR0ZXIoc3RhdGljX2Nhc3Q8UmVuZGVyVGV4dEZyYWdtZW50Kj4ocmVuZGVyZXIp
KTsKICAgICBoYW5kbGVUZXh0Qm94KCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHZvaWQgVGV4
dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Qm94KCkKIHsgICAgCi0gICAgUmVuZGVyVGV4dCogcmVuZGVy
ZXIgPSB0b1JlbmRlclRleHQobV9ub2RlLT5yZW5kZXJlcigpKTsKKyAgICBSZW5kZXJUZXh0KiBy
ZW5kZXJlciA9IG1fZmlyc3RMZXR0ZXJUZXh0ID8gbV9maXJzdExldHRlclRleHQgOiB0b1JlbmRl
clRleHQobV9ub2RlLT5yZW5kZXJlcigpKTsKKyAgICBpZiAocmVuZGVyZXItPnN0eWxlKCktPnZp
c2liaWxpdHkoKSAhPSBWSVNJQkxFKSB7CisgICAgICAgIG1fdGV4dEJveCA9IDA7CisgICAgICAg
IHJldHVybjsKKyAgICB9CiAgICAgU3RyaW5nIHN0ciA9IHJlbmRlcmVyLT50ZXh0KCk7CiAgICAg
aW50IHN0YXJ0ID0gbV9vZmZzZXQ7CiAgICAgaW50IGVuZCA9IChtX25vZGUgPT0gbV9lbmRDb250
YWluZXIpID8gbV9lbmRPZmZzZXQgOiBJTlRfTUFYOwpAQCAtNTI3LDcgKzU2Nyw3IEBAIHZvaWQg
VGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Qm94KCkKICAgICAgICAgICAgICAgICAgICAgc3VicnVu
RW5kID0gcnVuRW5kOwogICAgIAogICAgICAgICAgICAgICAgIG1fb2Zmc2V0ID0gc3VicnVuRW5k
OwotICAgICAgICAgICAgICAgIGVtaXRUZXh0KG1fbm9kZSwgcnVuU3RhcnQsIHN1YnJ1bkVuZCk7
CisgICAgICAgICAgICAgICAgZW1pdFRleHQobV9ub2RlLCByZW5kZXJlciwgcnVuU3RhcnQsIHN1
YnJ1bkVuZCk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIC8vIElmIHdlIGFyZSBkb2lu
ZyBhIHN1YnJ1biB0aGF0IGRvZXNuJ3QgZ28gdG8gdGhlIGVuZCBvZiB0aGUgdGV4dCBib3gsCkBA
IC01NTEsNiArNTkxLDI2IEBAIHZvaWQgVGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Qm94KCkKICAg
ICB9CiB9CiAKK3ZvaWQgVGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Tm9kZUZpcnN0TGV0dGVyKFJl
bmRlclRleHRGcmFnbWVudCogcmVuZGVyZXIpCit7CisgICAgaWYgKHJlbmRlcmVyLT5maXJzdExl
dHRlcigpKSB7CisgICAgICAgIFJlbmRlck9iamVjdCogciA9IHJlbmRlcmVyLT5maXJzdExldHRl
cigpOworICAgICAgICBpZiAoci0+c3R5bGUoKS0+dmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIGZvciAoUmVuZGVyT2JqZWN0ICpjdXJyQ2hpbGQg
PSByLT5maXJzdENoaWxkKCk7IGN1cnJDaGlsZDsgY3VyckNoaWxkLT5uZXh0U2libGluZygpKSB7
CisgICAgICAgICAgICBpZiAoY3VyckNoaWxkLT5pc1RleHQoKSkgeworICAgICAgICAgICAgICAg
IFJlbmRlclRleHQqIGZpcnN0TGV0dGVyID0gdG9SZW5kZXJUZXh0KGN1cnJDaGlsZCk7CisgICAg
ICAgICAgICAgICAgbV9oYW5kbGVkRmlyc3RMZXR0ZXIgPSB0cnVlOworICAgICAgICAgICAgICAg
IG1fcmVtYWluaW5nVGV4dEJveCA9IG1fdGV4dEJveDsKKyAgICAgICAgICAgICAgICBtX3RleHRC
b3ggPSBmaXJzdExldHRlci0+Zmlyc3RUZXh0Qm94KCk7CisgICAgICAgICAgICAgICAgbV9maXJz
dExldHRlclRleHQgPSBmaXJzdExldHRlcjsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgbV9oYW5kbGVkRmlyc3RMZXR0ZXIgPSB0
cnVlOworfQorCiBib29sIFRleHRJdGVyYXRvcjo6aGFuZGxlUmVwbGFjZWRFbGVtZW50KCkKIHsK
ICAgICBpZiAobV9mdWxseUNsaXBwZWRTdGFjay50b3AoKSkKQEAgLTU5Nyw2ICs2NTcsMTggQEAg
Ym9vbCBUZXh0SXRlcmF0b3I6OmhhbmRsZVJlcGxhY2VkRWxlbWVudCgpCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKK2Jvb2wgVGV4dEl0ZXJhdG9yOjpoYXNWaXNpYmxlVGV4dE5vZGUoUmVuZGVyVGV4
dCogcmVuZGVyZXIpCit7CisgICAgaWYgKHJlbmRlcmVyLT5zdHlsZSgpLT52aXNpYmlsaXR5KCkg
PT0gVklTSUJMRSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHJlbmRlcmVyLT5pc1Rl
eHRGcmFnbWVudCgpKSB7CisgICAgICAgIFJlbmRlclRleHRGcmFnbWVudCogZnJhZ21lbnQgPSBz
dGF0aWNfY2FzdDxSZW5kZXJUZXh0RnJhZ21lbnQqPihyZW5kZXJlcik7CisgICAgICAgIGlmIChm
cmFnbWVudC0+Zmlyc3RMZXR0ZXIoKSAmJiBmcmFnbWVudC0+Zmlyc3RMZXR0ZXIoKS0+c3R5bGUo
KS0+dmlzaWJpbGl0eSgpID09IFZJU0lCTEUpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBzdGF0aWMgYm9vbCBzaG91bGRFbWl0VGFiQmVm
b3JlTm9kZShOb2RlKiBub2RlKQogewogICAgIFJlbmRlck9iamVjdCogciA9IG5vZGUtPnJlbmRl
cmVyKCk7CkBAIC04ODgsOSArOTYwLDkgQEAgdm9pZCBUZXh0SXRlcmF0b3I6OmVtaXRDaGFyYWN0
ZXIoVUNoYXIgYywgTm9kZSogdGV4dE5vZGUsIE5vZGUqIG9mZnNldEJhc2VOb2RlLAogICAgIG1f
bGFzdENoYXJhY3RlciA9IGM7CiB9CiAKLXZvaWQgVGV4dEl0ZXJhdG9yOjplbWl0VGV4dChOb2Rl
KiB0ZXh0Tm9kZSwgaW50IHRleHRTdGFydE9mZnNldCwgaW50IHRleHRFbmRPZmZzZXQpCit2b2lk
IFRleHRJdGVyYXRvcjo6ZW1pdFRleHQoTm9kZSogdGV4dE5vZGUsIFJlbmRlck9iamVjdCogcmVu
ZGVyT2JqZWN0LCBpbnQgdGV4dFN0YXJ0T2Zmc2V0LCBpbnQgdGV4dEVuZE9mZnNldCkKIHsKLSAg
ICBSZW5kZXJUZXh0KiByZW5kZXJlciA9IHRvUmVuZGVyVGV4dChtX25vZGUtPnJlbmRlcmVyKCkp
OworICAgIFJlbmRlclRleHQqIHJlbmRlcmVyID0gdG9SZW5kZXJUZXh0KHJlbmRlck9iamVjdCk7
CiAgICAgbV90ZXh0ID0gbV9lbWl0c1RleHRXaXRob3V0VHJhbnNjb2RpbmcgPyByZW5kZXJlci0+
dGV4dFdpdGhvdXRUcmFuc2NvZGluZygpIDogcmVuZGVyZXItPnRleHQoKTsKICAgICBBU1NFUlQo
bV90ZXh0LmNoYXJhY3RlcnMoKSk7CiAKQEAgLTkwNiw2ICs5NzgsMTEgQEAgdm9pZCBUZXh0SXRl
cmF0b3I6OmVtaXRUZXh0KE5vZGUqIHRleHROb2RlLCBpbnQgdGV4dFN0YXJ0T2Zmc2V0LCBpbnQg
dGV4dEVuZE9mZnMKICAgICBtX2hhc0VtaXR0ZWQgPSB0cnVlOwogfQogCit2b2lkIFRleHRJdGVy
YXRvcjo6ZW1pdFRleHQoTm9kZSogdGV4dE5vZGUsIGludCB0ZXh0U3RhcnRPZmZzZXQsIGludCB0
ZXh0RW5kT2Zmc2V0KQoreworICAgIGVtaXRUZXh0KHRleHROb2RlLCBtX25vZGUtPnJlbmRlcmVy
KCksIHRleHRTdGFydE9mZnNldCwgdGV4dEVuZE9mZnNldCk7Cit9CisKIFBhc3NSZWZQdHI8UmFu
Z2U+IFRleHRJdGVyYXRvcjo6cmFuZ2UoKSBjb25zdAogewogICAgIC8vIHVzZSB0aGUgY3VycmVu
dCBydW4gaW5mb3JtYXRpb24sIGlmIHdlIGhhdmUgaXQKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRp
dGluZy9UZXh0SXRlcmF0b3IuaCBiL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaAppbmRl
eCBiYTM4MWI5YmZhNDRhNzlkMTA2NDk5OWQyYzYwN2JlNjlmNzZhODkzLi40NDMwMzU1NDQ0Nzll
NjM5Yzg5ZDVmZGE4YzczYzBkOTg0NjEyZTIzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcv
VGV4dEl0ZXJhdG9yLmgKKysrIGIvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oCkBAIC0z
Miw2ICszMiw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgUmVuZGVyVGV4dDsK
K2NsYXNzIFJlbmRlclRleHRGcmFnbWVudDsKKwogLy8gRklYTUU6IENhbid0IHJlYWxseSBhbnN3
ZXIgdGhpcyBxdWVzdGlvbiBjb3JyZWN0bHkgd2l0aG91dCBrbm93aW5nIHRoZSB3aGl0ZS1zcGFj
ZSBtb2RlLgogLy8gRklYTUU6IE1vdmUgdGhpcyBzb21ld2hlcmUgZWxzZSBpbiB0aGUgZWRpdGlu
ZyBkaXJlY3RvcnkuIEl0IGRvZXNuJ3QgYmVsb25nIGhlcmUuCiBpbmxpbmUgYm9vbCBpc0NvbGxh
cHNpYmxlV2hpdGVzcGFjZShVQ2hhciBjKQpAQCAtMTAyLDcgKzEwNSwxMCBAQCBwcml2YXRlOgog
ICAgIGJvb2wgaGFuZGxlUmVwbGFjZWRFbGVtZW50KCk7CiAgICAgYm9vbCBoYW5kbGVOb25UZXh0
Tm9kZSgpOwogICAgIHZvaWQgaGFuZGxlVGV4dEJveCgpOworICAgIHZvaWQgaGFuZGxlVGV4dE5v
ZGVGaXJzdExldHRlcihSZW5kZXJUZXh0RnJhZ21lbnQqKTsKKyAgICBib29sIGhhc1Zpc2libGVU
ZXh0Tm9kZShSZW5kZXJUZXh0Kik7CiAgICAgdm9pZCBlbWl0Q2hhcmFjdGVyKFVDaGFyLCBOb2Rl
KiB0ZXh0Tm9kZSwgTm9kZSogb2Zmc2V0QmFzZU5vZGUsIGludCB0ZXh0U3RhcnRPZmZzZXQsIGlu
dCB0ZXh0RW5kT2Zmc2V0KTsKKyAgICB2b2lkIGVtaXRUZXh0KE5vZGUqIHRleHROb2RlLCBSZW5k
ZXJPYmplY3QqIHJlbmRlck9iamVjdCwgaW50IHRleHRTdGFydE9mZnNldCwgaW50IHRleHRFbmRP
ZmZzZXQpOwogICAgIHZvaWQgZW1pdFRleHQoTm9kZSogdGV4dE5vZGUsIGludCB0ZXh0U3RhcnRP
ZmZzZXQsIGludCB0ZXh0RW5kT2Zmc2V0KTsKICAgICAKICAgICAvLyBDdXJyZW50IHBvc2l0aW9u
LCBub3QgbmVjZXNzYXJpbHkgb2YgdGhlIHRleHQgYmVpbmcgcmV0dXJuZWQsIGJ1dCBwb3NpdGlv
bgpAQCAtMTM0LDYgKzE0MCwxMSBAQCBwcml2YXRlOgogICAgIC8vIGFyZSBmYWxzZSBhbmQgMCwg
d2UgZ28gYmFjayB0byBub3JtYWwgaXRlcmF0aW5nLgogICAgIGJvb2wgbV9uZWVkc0Fub3RoZXJO
ZXdsaW5lOwogICAgIElubGluZVRleHRCb3gqIG1fdGV4dEJveDsKKyAgICAvLyBVc2VkIHdoZW4g
aXRlcmF0aW9uIG92ZXIgOmZpcnN0LWxldHRlciB0ZXh0IHRvIHNhdmUgcG9pbnRlciB0bworICAg
IC8vIHJlbWFpbmluZyB0ZXh0IGJveC4KKyAgICBJbmxpbmVUZXh0Qm94KiBtX3JlbWFpbmluZ1Rl
eHRCb3g7CisgICAgLy8gVXNlZCB0byBwb2ludCB0byBSZW5kZXJUZXh0IG9iamVjdCBmb3IgOmZp
cnN0LWxldHRlci4KKyAgICBSZW5kZXJUZXh0ICptX2ZpcnN0TGV0dGVyVGV4dDsKICAgICAKICAg
ICAvLyBVc2VkIHRvIGRvIHRoZSB3aGl0ZXNwYWNlIGNvbGxhcHNpbmcgbG9naWMuCiAgICAgTm9k
ZSogbV9sYXN0VGV4dE5vZGU7ICAgIApAQCAtMTU5LDYgKzE3MCw4IEBAIHByaXZhdGU6CiAKICAg
ICAvLyBVc2VkIHdoZW4gd2Ugd2FudCB0ZXh0cyBmb3IgY29weWluZywgcGFzdGluZywgYW5kIHRy
YW5zcG9zaW5nLgogICAgIGJvb2wgbV9lbWl0c1RleHRXaXRob3V0VHJhbnNjb2Rpbmc7CisgICAg
Ly8gVXNlZCB3aGVuIGRlY2lkaW5nIHRleHQgZnJhZ21lbnQgY3JlYXRlZCBieSA6Zmlyc3QtbGV0
dGVyIHNob3VsZCBiZSBsb29rZWQgaW50by4KKyAgICBib29sIG1faGFuZGxlZEZpcnN0TGV0dGVy
OwogfTsKIAogLy8gSXRlcmF0ZXMgdGhyb3VnaCB0aGUgRE9NIHJhbmdlLCByZXR1cm5pbmcgYWxs
IHRoZSB0ZXh0LCBhbmQgMC1sZW5ndGggYm91bmRhcmllcwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57854</attachid>
            <date>2010-06-04 01:57:35 -0700</date>
            <delta_ts>2010-08-10 03:10:14 -0700</delta_ts>
            <desc>Proposed Patch with a few bug fixes</desc>
            <filename>bug-39863-20100604175733.patch</filename>
            <type>text/plain</type>
            <size>20917</size>
            <attacher name="Yoshiki Hayashi">yhayashi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1M2IzMThjYmJkN2Y0OWI3NjcyMzViYzdhYWRkYTIyYzQ2NDJlZmRiLi40NGMzMDVk
ODY5MDA2ZWRhN2JlYTEwODZiZDgwZmQzZmYzZTY3NDk0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTAtMDUtMjggIFlvc2hpa2kgSGF5YXNoaSAgPHloYXlhc2hpQGdvb2dsZS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSXRlcmF0ZSBvdmVy
IDpmaXJzdC1sZXR0ZXIgc28gdGhhdCBpdCB3aWxsIGJlIGluY2x1ZGVkIGluIGlubmVyVGV4dC4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5ODYzCisK
KyAgICAgICAgKiBmYXN0L2RvbS9pbm5lci10ZXh0LWZpcnN0LWxldHRlci1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL2lubmVyLXRleHQtZmlyc3QtbGV0dGVyLmh0bWw6
IEFkZGVkLgorCiAyMDEwLTA2LTAzICBQZXRlciBLYXN0aW5nICA8cGthc3RpbmdAZ29vZ2xlLmNv
bT4KIAogICAgICAgICBVbnJldmlld2VkLiAgQWRkIGV4Y2VwdGlvbnMgZm9yIHNvbWUgbmV3bHkt
cGFzc2luZyB0ZXN0cyBpbiBDaHJvbWl1bS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzL2dldENvbXB1dGVkU3R5bGUvZ2V0Q29tcHV0ZWRTdHlsZS13aXRoLXBzZXVkby1lbGVtZW50
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL2dldENvbXB1dGVkU3R5bGUvZ2V0
Q29tcHV0ZWRTdHlsZS13aXRoLXBzZXVkby1lbGVtZW50LWV4cGVjdGVkLnR4dAppbmRleCA0OTU3
NmYxODA2Y2UzYjA2YjU0YTFkNjkxNTg0YzM1NDY2MGQwNjA1Li4wZTdiYzUwZTRhMmVkM2QxOGJi
ZTQ4YTk0N2ZiMjNjOGY4YzNlNTkxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9n
ZXRDb21wdXRlZFN0eWxlL2dldENvbXB1dGVkU3R5bGUtd2l0aC1wc2V1ZG8tZWxlbWVudC1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS9nZXRD
b21wdXRlZFN0eWxlLXdpdGgtcHNldWRvLWVsZW1lbnQtZXhwZWN0ZWQudHh0CkBAIC0xLDcgKzEs
NyBAQAogVGVzdCBmb3IgV2ViS2l0IGJ1ZyAyNDAyMTogcHNldWRvLWVsZW1lbnQgc3R5bGVzIG5v
dCBhY2Nlc3NpYmxlIC8gcmV0cmlldmFibGUgdmlhIERPTSBtZXRob2RzCiAKIAotb3JlbSBpcHN1
bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRpcGlzaWNpbmcgZWxpdCwgc2VkIGRvIGVp
dXNtb2QgdGVtcG9yIGluY2lkaWR1bnQgdXQgbGFib3JlIGV0IGRvbG9yZSBtYWduYSBhbGlxdWEu
IFV0IGVuaW0gYWQgbWluaW0gdmVuaWFtLCBxdWlzIG5vc3RydWQgZXhlcmNpdGF0aW9uIHVsbGFt
Y28gbGFib3JpcyBuaXNpIHV0IGFsaXF1aXAgZXggZWEgY29tbW9kbyBjb25zZXF1YXQuIER1aXMg
YXV0ZSBpcnVyZSBkb2xvciBpbiByZXByZWhlbmRlcml0IGluIHZvbHVwdGF0ZSB2ZWxpdCBlc3Nl
IGNpbGx1bSBkb2xvcmUgZXUgZnVnaWF0IG51bGxhIHBhcmlhdHVyLiBFeGNlcHRldXIgc2ludCBv
Y2NhZWNhdCBjdXBpZGF0YXQgbm9uIHByb2lkZW50LCBzdW50IGluIGN1bHBhIHF1aSBvZmZpY2lh
IGRlc2VydW50IG1vbGxpdCBhbmltIGlkIGVzdCBsYWJvcnVtLgorTG9yZW0gaXBzdW0gZG9sb3Ig
c2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2ljaW5nIGVsaXQsIHNlZCBkbyBlaXVzbW9kIHRl
bXBvciBpbmNpZGlkdW50IHV0IGxhYm9yZSBldCBkb2xvcmUgbWFnbmEgYWxpcXVhLiBVdCBlbmlt
IGFkIG1pbmltIHZlbmlhbSwgcXVpcyBub3N0cnVkIGV4ZXJjaXRhdGlvbiB1bGxhbWNvIGxhYm9y
aXMgbmlzaSB1dCBhbGlxdWlwIGV4IGVhIGNvbW1vZG8gY29uc2VxdWF0LiBEdWlzIGF1dGUgaXJ1
cmUgZG9sb3IgaW4gcmVwcmVoZW5kZXJpdCBpbiB2b2x1cHRhdGUgdmVsaXQgZXNzZSBjaWxsdW0g
ZG9sb3JlIGV1IGZ1Z2lhdCBudWxsYSBwYXJpYXR1ci4gRXhjZXB0ZXVyIHNpbnQgb2NjYWVjYXQg
Y3VwaWRhdGF0IG5vbiBwcm9pZGVudCwgc3VudCBpbiBjdWxwYSBxdWkgb2ZmaWNpYSBkZXNlcnVu
dCBtb2xsaXQgYW5pbSBpZCBlc3QgbGFib3J1bS4KIAogTWlkZGxlCiAKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL2lubmVyLXRleHQtZmlyc3QtbGV0dGVyLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2Zhc3QvZG9tL2lubmVyLXRleHQtZmlyc3QtbGV0dGVyLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5iN2RiMjkyZTQ3NjRiNDM5NjE3Y2VlNDg0N2E2Y2FhOTE5N2Q5M2U5Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vaW5uZXItdGV4dC1maXJzdC1s
ZXR0ZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNjkgQEAKK1RoaXMgdGVzdHMgYSBsZXR0ZXIg
d2l0aCA6Zmlyc3QtbGV0dGVyIGFwcGxpZWQgaXMgcHJlc2VudCBpbiBpbm5lclRleHQuCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdkaXZGaXJzdCcpLmlubmVyVGV4dCBpcyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGl2Tm9y
bWFsJykuaW5uZXJUZXh0CitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwRmlyc3QnKS5p
bm5lclRleHQgaXMgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BOb3JtYWwnKS5pbm5lclRleHQK
K1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbGxhcHNlZFNwYWNlRmlyc3QnKS5pbm5l
clRleHQgaXMgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbGxhcHNlZFNwYWNlTm9ybWFsJyku
aW5uZXJUZXh0CitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb2xsYXBzZWRTcGFjZVBy
ZUZpcnN0JykuaW5uZXJUZXh0IGlzIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb2xsYXBzZWRT
cGFjZVByZU5vcm1hbCcpLmlubmVyVGV4dAorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
cHJlTGluZUZpcnN0JykuaW5uZXJUZXh0IGlzIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwcmVM
aW5lTm9ybWFsJykuaW5uZXJUZXh0CitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwcmVX
cmFwRmlyc3QnKS5pbm5lclRleHQgaXMgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3ByZVdyYXBO
b3JtYWwnKS5pbm5lclRleHQKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3ByZVNwYWNl
Rmlyc3QnKS5pbm5lclRleHQgaXMgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3ByZVNwYWNlTm9y
bWFsJykuaW5uZXJUZXh0CitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb2xsYXBzZWRT
cGFjZURpdkZpcnN0JykuaW5uZXJUZXh0IGlzIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb2xs
YXBzZWRTcGFjZURpdk5vcm1hbCcpLmlubmVyVGV4dAorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnZmlyc3RDb2xsYXBzZWREaXZGaXJzdCcpLmlubmVyVGV4dCBpcyBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnZmlyc3RDb2xsYXBzZWREaXZOb3JtYWwnKS5pbm5lclRleHQKK1BBU1MgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbGxhcHNlZFNwYWNlQ29sbGFwc2VkRGl2Rmlyc3QnKS5p
bm5lclRleHQgaXMgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbGxhcHNlZFNwYWNlQ29sbGFw
c2VkRGl2Tm9ybWFsJykuaW5uZXJUZXh0CitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdj
b2xsYXBzZWRTcGFjZUNvbGxhcHNlZERpdkZpcnN0JykuaW5uZXJUZXh0IGlzICdmb29cbmFiY1xu
JworUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29sbGFwc2VkU3BhY2VQdW5jdERpdkZp
cnN0JykuaW5uZXJUZXh0IGlzIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb2xsYXBzZWRTcGFj
ZVB1bmN0RGl2Tm9ybWFsJykuaW5uZXJUZXh0CitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdjb2xsYXBzZWRTcGFjZVB1bmN0RGl2Rmlyc3QnKS5pbm5lclRleHQgaXMgJ2Zvb1xufCBhYmNc
bicKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RpdlNwYW5GaXJzdCcpLmlubmVyVGV4
dCBpcyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGl2U3Bhbk5vcm1hbCcpLmlubmVyVGV4dAor
UEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW52aXNpYmxlUHJlJykuaW5uZXJUZXh0IGlz
ICcnCitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbnZpc2libGVQcmVGaXJzdCcpLmlu
bmVyVGV4dCBpcyAndFxuJworUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW52aXNpYmxl
JykuaW5uZXJUZXh0IGlzICd0ZXN0XG4nCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKK2RpdgorZGl2CitwcmUKK3ByZQorYWJjCithYmMKKyBhYmMKKyBh
YmMKK3Rlc3QKKyAgYWJjCit0ZXN0CisgIGFiYwordGVzdAorYWJjCit0ZXN0CithYmMKK3Rlc3QK
K3Rlc3QKKwordGVzdAorCit0ZXN0Citmb28KK2FiYworZm9vCithYmMKK2FiYworZGVmCithYmMK
K2RlZgorZm9vCithYmMKK2ZvbworYWJjCitmb28KK3wgYWJjCitmb28KK3wgYWJjCisxMgorMTIK
K3QKK3Rlc3QKK1Jlc3VsdHMKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vaW5u
ZXItdGV4dC1maXJzdC1sZXR0ZXIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2lubmVyLXRl
eHQtZmlyc3QtbGV0dGVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODY4OTI0M2FjOTRjYzQ4NjU1ZjJmNzVm
ZDZiMTkxMGU0ZTU3NmJhMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L2lubmVyLXRleHQtZmlyc3QtbGV0dGVyLmh0bWwKQEAgLTAsMCArMSw5MCBAQAorPGh0bWw+Cis8
aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPHN0eWxlPgorLmZpcnN0OmZpcnN0LWxldHRlciB7CisgIGZvbnQtd2Vp
Z2h0OiBib2xkOworICB2aXNpYmlsaXR5OiB2aXNpYmxlOworfQorLnZpc2libGUgeworICB2aXNp
YmxpdHk6IHZpc2libGU7Cit9CisuaW52aXNpYmxlIHsKKyAgdmlzaWJpbGl0eTogaGlkZGVuOwor
fQorLnByZUxpbmUgeworICB3aGl0ZS1zcGFjZTogcHJlLWxpbmU7Cit9CisucHJlV3JhcCB7Cisg
IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKK30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxw
IGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8ZGl2IGlk
PSJkaXZGaXJzdCIgY2xhc3M9ImZpcnN0Ij5kaXY8L2Rpdj4KKzxkaXYgaWQ9ImRpdk5vcm1hbCI+
ZGl2PC9kaXY+Cis8cHJlIGlkPSJwRmlyc3QiIGNsYXNzPSJmaXJzdCI+cHJlPC9wcmU+Cis8cHJl
IGlkPSJwTm9ybWFsIj5wcmU8L3ByZT4KKzxkaXYgaWQ9ImNvbGxhcHNlZFNwYWNlRmlyc3QiPjxz
cGFuPiA8L3NwYW4+PGRpdiBjbGFzcz0iZmlyc3QiPmFiYzwvZGl2PjwvZGl2PgorPGRpdiBpZD0i
Y29sbGFwc2VkU3BhY2VOb3JtYWwiPjxzcGFuPiA8L3NwYW4+PGRpdj5hYmM8L2Rpdj48L2Rpdj4K
KzxkaXYgaWQ9ImNvbGxhcHNlZFNwYWNlUHJlRmlyc3QiPjxzcGFuPiA8L3NwYW4+PHByZSBjbGFz
cz0iZmlyc3QiPmFiYzwvcHJlPjwvZGl2PgorPGRpdiBpZD0iY29sbGFwc2VkU3BhY2VQcmVOb3Jt
YWwiPjxzcGFuPiA8L3NwYW4+PHByZT5hYmM8L3ByZT48L2Rpdj4KKzxkaXYgaWQ9InByZVNwYWNl
Rmlyc3QiPjxzcGFuPnRlc3Q8L3NwYW4+PHByZSBjbGFzcz0iZmlyc3QiPiAgYWJjPC9wcmU+PC9k
aXY+Cis8ZGl2IGlkPSJwcmVTcGFjZU5vcm1hbCI+PHNwYW4+dGVzdDwvc3Bhbj48cHJlPiAgYWJj
PC9wcmU+PC9kaXY+Cis8ZGl2IGlkPSJkaXZTcGFjZUZpcnN0Ij48c3Bhbj50ZXN0PC9zcGFuPjxk
aXYgY2xhc3M9ImZpcnN0Ij4gIGFiYzwvZGl2PjwvZGl2PgorPGRpdiBpZD0iZGl2U3BhY2VOb3Jt
YWwiPjxzcGFuPnRlc3Q8L3NwYW4+PGRpdj4gIGFiYzwvZGl2PjwvZGl2PgorPGRpdiBpZD0icHJl
TGluZUZpcnN0IiBjbGFzcz0iZmlyc3QgcHJlTGluZSI+dGVzdDwvZGl2PgorPGRpdiBpZD0icHJl
TGluZU5vcm1hbCIgY2xhc3M9InByZUxpbmUiPnRlc3Q8L2Rpdj4KKzxkaXYgaWQ9InByZVdyYXBG
aXJzdCIgY2xhc3M9ImZpcnN0IHByZVdyYXAiPgordGVzdDwvZGl2PgorPGRpdiBpZD0icHJlV3Jh
cE5vcm1hbCIgY2xhc3M9InByZVdyYXAiPgordGVzdDwvZGl2PgorPGRpdiBpZD0iY29sbGFwc2Vk
U3BhY2VEaXZGaXJzdCI+PHNwYW4+Zm9vPC9zcGFuPjxzcGFuPiA8L3NwYW4+PGRpdiBjbGFzcz0i
Zmlyc3QiPmFiYzwvZGl2PjwvZGl2PgorPGRpdiBpZD0iY29sbGFwc2VkU3BhY2VEaXZOb3JtYWwi
PjxzcGFuPmZvbzwvc3Bhbj48c3Bhbj4gPC9zcGFuPjxkaXY+YWJjPC9kaXY+PC9kaXY+Cis8ZGl2
IGlkPSJmaXJzdENvbGxhcHNlZERpdkZpcnN0Ij48ZGl2IGNsYXNzPSJmaXJzdCI+YWJjICA8L2Rp
dj48c3Bhbj5kZWY8L3NwYW4+PC9kaXY+Cis8ZGl2IGlkPSJmaXJzdENvbGxhcHNlZERpdk5vcm1h
bCI+PGRpdj5hYmMgIDwvZGl2PjxzcGFuPmRlZjwvc3Bhbj48L2Rpdj4KKzxkaXYgaWQ9ImNvbGxh
cHNlZFNwYWNlQ29sbGFwc2VkRGl2Rmlyc3QiPjxzcGFuPmZvbzwvc3Bhbj48c3Bhbj4gPC9zcGFu
PjxkaXYgY2xhc3M9ImZpcnN0Ij4gIGFiYzwvZGl2PjwvZGl2PgorPGRpdiBpZD0iY29sbGFwc2Vk
U3BhY2VDb2xsYXBzZWREaXZOb3JtYWwiPjxzcGFuPmZvbzwvc3Bhbj48c3Bhbj4gPC9zcGFuPjxk
aXY+ICBhYmM8L2Rpdj48L2Rpdj4KKzxkaXYgaWQ9ImNvbGxhcHNlZFNwYWNlUHVuY3REaXZGaXJz
dCI+PHNwYW4+Zm9vPC9zcGFuPjxzcGFuPiA8L3NwYW4+PGRpdiBjbGFzcz0iZmlyc3QiPnwgIAor
YWJjPC9kaXY+PC9kaXY+Cis8ZGl2IGlkPSJjb2xsYXBzZWRTcGFjZVB1bmN0RGl2Tm9ybWFsIj48
c3Bhbj5mb288L3NwYW4+PHNwYW4+IDwvc3Bhbj48ZGl2PnwgIAorYWJjPC9kaXY+PC9kaXY+Cis8
ZGl2IGlkPSJkaXZTcGFuRmlyc3QiIGNsYXNzPSJmaXJzdCI+PHNwYW4gaWQ9ImYxIj4xPC9zcGFu
PjxzcGFuIGlkPSJmMiI+Mjwvc3Bhbj48L2Rpdj4KKzxkaXYgaWQ9ImRpdlNwYW5Ob3JtYWwiPjxz
cGFuIGlkPSJuMSI+MTwvc3Bhbj48c3BhbiBpZD0ibjIiPjI8L3NwYW4+PC9kaXY+Cis8ZGl2IGlk
PSJpbnZpc2libGVQcmUiPjxwcmUgY2xhc3M9ImludmlzaWJsZSI+dGVzdDwvcHJlPjwvZGl2Pgor
PGRpdiBpZD0iaW52aXNpYmxlUHJlRmlyc3QiPjxwcmUgY2xhc3M9ImludmlzaWJsZSBmaXJzdCI+
dGVzdDwvcHJlPjwvZGl2PgorPGRpdiBpZD0iaW52aXNpYmxlIj4KKzxkaXYgY2xhc3M9Imludmlz
aWJsZSI+PGlucHV0IHZhbHVlPSJhbiBpbnB1dCIgdHlwZT0idGV4dCIvPiA8L2Rpdj48cHJlPnRl
c3Q8L3ByZT4KKzwvZGl2PgorCis8cHJlPgorUmVzdWx0cworPC9wcmU+Cis8L2Rpdj4KKzxzY3Jp
cHQ+CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyBhIGxldHRlciB3aXRoIDpmaXJzdC1sZXR0ZXIg
YXBwbGllZCBpcyBwcmVzZW50IGluIGlubmVyVGV4dC4iKTsKK3Nob3VsZEJlKCJkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnZGl2Rmlyc3QnKS5pbm5lclRleHQiLCAiZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2Rpdk5vcm1hbCcpLmlubmVyVGV4dCIpOworc2hvdWxkQmUoImRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdwRmlyc3QnKS5pbm5lclRleHQiLCAiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3BOb3JtYWwnKS5pbm5lclRleHQiKTsKK3Nob3VsZEJlKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnY29sbGFwc2VkU3BhY2VGaXJzdCcpLmlubmVyVGV4dCIsICJkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnY29sbGFwc2VkU3BhY2VOb3JtYWwnKS5pbm5lclRleHQiKTsKK3Nob3VsZEJlKCJkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnY29sbGFwc2VkU3BhY2VQcmVGaXJzdCcpLmlubmVyVGV4dCIs
ICJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29sbGFwc2VkU3BhY2VQcmVOb3JtYWwnKS5pbm5l
clRleHQiKTsKK3Nob3VsZEJlKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncHJlTGluZUZpcnN0
JykuaW5uZXJUZXh0IiwgImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwcmVMaW5lTm9ybWFsJyku
aW5uZXJUZXh0Iik7CitzaG91bGRCZSgiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3ByZVdyYXBG
aXJzdCcpLmlubmVyVGV4dCIsICJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncHJlV3JhcE5vcm1h
bCcpLmlubmVyVGV4dCIpOworc2hvdWxkQmUoImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwcmVT
cGFjZUZpcnN0JykuaW5uZXJUZXh0IiwgImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwcmVTcGFj
ZU5vcm1hbCcpLmlubmVyVGV4dCIpOworc2hvdWxkQmUoImRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdjb2xsYXBzZWRTcGFjZURpdkZpcnN0JykuaW5uZXJUZXh0IiwgImRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdjb2xsYXBzZWRTcGFjZURpdk5vcm1hbCcpLmlubmVyVGV4dCIpOworc2hvdWxkQmUo
ImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmaXJzdENvbGxhcHNlZERpdkZpcnN0JykuaW5uZXJU
ZXh0IiwgImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmaXJzdENvbGxhcHNlZERpdk5vcm1hbCcp
LmlubmVyVGV4dCIpOworc2hvdWxkQmUoImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb2xsYXBz
ZWRTcGFjZUNvbGxhcHNlZERpdkZpcnN0JykuaW5uZXJUZXh0IiwgImRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdjb2xsYXBzZWRTcGFjZUNvbGxhcHNlZERpdk5vcm1hbCcpLmlubmVyVGV4dCIpOwor
c2hvdWxkQmUoImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb2xsYXBzZWRTcGFjZUNvbGxhcHNl
ZERpdkZpcnN0JykuaW5uZXJUZXh0IiwgIidmb29cXG5hYmNcXG4nIik7CitzaG91bGRCZSgiZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbGxhcHNlZFNwYWNlUHVuY3REaXZGaXJzdCcpLmlubmVy
VGV4dCIsICJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29sbGFwc2VkU3BhY2VQdW5jdERpdk5v
cm1hbCcpLmlubmVyVGV4dCIpOworc2hvdWxkQmUoImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdj
b2xsYXBzZWRTcGFjZVB1bmN0RGl2Rmlyc3QnKS5pbm5lclRleHQiLCAiJ2Zvb1xcbnwgYWJjXFxu
JyIpOworc2hvdWxkQmUoImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkaXZTcGFuRmlyc3QnKS5p
bm5lclRleHQiLCAiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RpdlNwYW5Ob3JtYWwnKS5pbm5l
clRleHQiKTsKK3Nob3VsZEJlKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW52aXNpYmxlUHJl
JykuaW5uZXJUZXh0IiwgIicnIik7CitzaG91bGRCZSgiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2ludmlzaWJsZVByZUZpcnN0JykuaW5uZXJUZXh0IiwgIid0XFxuJyIpOworc2hvdWxkQmUoImRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbnZpc2libGUnKS5pbm5lclRleHQiLCAiJ3Rlc3RcXG4n
Iik7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCAzZTUyNDNkMDU1YjdkNDIxZTgyZjE2MWM4ZTZhYzRjMWQ3MTM1NDNjLi5iYTVkMGRi
NTBhZDg4Y2YxMmRiYzdkNGNjNjViMmIwNjEwMDkxYjhkIDEwMDY0NAotLS0gYS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEwLTA1
LTI4ICBZb3NoaWtpIEhheWFzaGkgIDx5aGF5YXNoaUBnb29nbGUuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEl0ZXJhdGUgb3ZlciA6Zmlyc3Qt
bGV0dGVyIHNvIHRoYXQgaXQgd2lsbCBiZSBpbmNsdWRlZCBpbiBpbm5lclRleHQuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTg2MworCisgICAgICAg
IFRlc3Q6IGZhc3QvZG9tL2lubmVyLXRleHQtZmlyc3QtbGV0dGVyLmh0bWwKKworICAgICAgICAq
IGVkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRJdGVyYXRv
cjo6VGV4dEl0ZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6YWR2YW5j
ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHROb2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dEJveCk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0SXRlcmF0b3I6OmVtaXRUZXh0KToKKyAgICAgICAgKiBlZGl0aW5nL1RleHRJ
dGVyYXRvci5oOgorCiAyMDEwLTA2LTAzICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90
QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByNjA2NDIuCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcCBiL1dlYkNvcmUvZWRp
dGluZy9UZXh0SXRlcmF0b3IuY3BwCmluZGV4IGYzYmQ5ZGY2YjlmOTViZjMwZGRhMmEzMGU3MjZk
NzM1ZjE4ZjhiMWYuLmJkODdjNDE4YzhlMmM5MTUyZjM2YzdmNGZlODNhYjYyYTI2MjQxMDYgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCisrKyBiL1dlYkNvcmUv
ZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiUmVu
ZGVyVGFibGVDZWxsLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGFibGVSb3cuaCIKICNpbmNsdWRlICJS
ZW5kZXJUZXh0Q29udHJvbC5oIgorI2luY2x1ZGUgIlJlbmRlclRleHRGcmFnbWVudC5oIgogI2lu
Y2x1ZGUgIlZpc2libGVQb3NpdGlvbi5oIgogI2luY2x1ZGUgInZpc2libGVfdW5pdHMuaCIKIApA
QCAtMjUyLDExICsyNTMsMTQgQEAgVGV4dEl0ZXJhdG9yOjpUZXh0SXRlcmF0b3IoKQogICAgICwg
bV9lbmRPZmZzZXQoMCkKICAgICAsIG1fcG9zaXRpb25Ob2RlKDApCiAgICAgLCBtX3RleHRDaGFy
YWN0ZXJzKDApCisgICAgLCBtX3JlbWFpbmluZ1RleHRCb3goMCkKKyAgICAsIG1fZmlyc3RMZXR0
ZXJUZXh0KDApCiAgICAgLCBtX3RleHRMZW5ndGgoMCkKICAgICAsIG1fbGFzdENoYXJhY3Rlcigw
KQogICAgICwgbV9lbWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucyhmYWxz
ZSkKICAgICAsIG1fZW50ZXJzVGV4dENvbnRyb2xzKGZhbHNlKQogICAgICwgbV9lbWl0c1RleHRX
aXRob3V0VHJhbnNjb2RpbmcoZmFsc2UpCisgICAgLCBtX2hhbmRsZWRGaXJzdExldHRlcihmYWxz
ZSkKIHsKIH0KIApAQCAtMjY4LDkgKzI3MiwxMiBAQCBUZXh0SXRlcmF0b3I6OlRleHRJdGVyYXRv
cihjb25zdCBSYW5nZSogciwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgYmVoYXZpb3IpCiAgICAgLCBt
X3Bvc2l0aW9uTm9kZSgwKQogICAgICwgbV90ZXh0Q2hhcmFjdGVycygwKQogICAgICwgbV90ZXh0
TGVuZ3RoKDApCisgICAgLCBtX3JlbWFpbmluZ1RleHRCb3goMCkKKyAgICAsIG1fZmlyc3RMZXR0
ZXJUZXh0KDApCiAgICAgLCBtX2VtaXRzQ2hhcmFjdGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRp
b25zKGJlaGF2aW9yICYgVGV4dEl0ZXJhdG9yRW1pdHNDaGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2li
bGVQb3NpdGlvbnMpCiAgICAgLCBtX2VudGVyc1RleHRDb250cm9scyhiZWhhdmlvciAmIFRleHRJ
dGVyYXRvckVudGVyc1RleHRDb250cm9scykKICAgICAsIG1fZW1pdHNUZXh0V2l0aG91dFRyYW5z
Y29kaW5nKGJlaGF2aW9yICYgVGV4dEl0ZXJhdG9yRW1pdHNUZXh0c1dpdGhvdXRUcmFuc2NvZGlu
ZykKKyAgICAsIG1faGFuZGxlZEZpcnN0TGV0dGVyKGZhbHNlKQogewogICAgIGlmICghcikKICAg
ICAgICAgcmV0dXJuOwpAQCAtMzQ0LDYgKzM1MSwxMiBAQCB2b2lkIFRleHRJdGVyYXRvcjo6YWR2
YW5jZSgpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBpZiAoIW1fdGV4dEJveCAmJiBt
X3JlbWFpbmluZ1RleHRCb3gpIHsKKyAgICAgICAgbV90ZXh0Qm94ID0gbV9yZW1haW5pbmdUZXh0
Qm94OworICAgICAgICBtX3JlbWFpbmluZ1RleHRCb3ggPSAwOworICAgICAgICBtX2ZpcnN0TGV0
dGVyVGV4dCA9IDA7CisgICAgICAgIG1fb2Zmc2V0ID0gMDsKKyAgICB9CiAgICAgLy8gaGFuZGxl
IHJlbWVtYmVyZWQgdGV4dCBib3gKICAgICBpZiAobV90ZXh0Qm94KSB7CiAgICAgICAgIGhhbmRs
ZVRleHRCb3goKTsKQEAgLTQxNyw2ICs0MzAsOCBAQCB2b2lkIFRleHRJdGVyYXRvcjo6YWR2YW5j
ZSgpCiAgICAgICAgICAgICBwdXNoRnVsbHlDbGlwcGVkU3RhdGUobV9mdWxseUNsaXBwZWRTdGFj
aywgbV9ub2RlKTsKICAgICAgICAgbV9oYW5kbGVkTm9kZSA9IGZhbHNlOwogICAgICAgICBtX2hh
bmRsZWRDaGlsZHJlbiA9IGZhbHNlOworICAgICAgICBtX2hhbmRsZWRGaXJzdExldHRlciA9IGZh
bHNlOworICAgICAgICBtX2ZpcnN0TGV0dGVyVGV4dCA9IDA7CiAKICAgICAgICAgLy8gaG93IHdv
dWxkIHRoaXMgZXZlciBiZT8KICAgICAgICAgaWYgKG1fcG9zaXRpb25Ob2RlKQpAQCAtNDM1LDgg
KzQ1MCw2IEBAIGJvb2wgVGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Tm9kZSgpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIFJlbmRlclRleHQqIHJlbmRlcmVyID0gdG9SZW5kZXJUZXh0KG1f
bm9kZS0+cmVuZGVyZXIoKSk7Ci0gICAgaWYgKHJlbmRlcmVyLT5zdHlsZSgpLT52aXNpYmlsaXR5
KCkgIT0gVklTSUJMRSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAKICAgICBtX2xh
c3RUZXh0Tm9kZSA9IG1fbm9kZTsKICAgICBTdHJpbmcgc3RyID0gcmVuZGVyZXItPnRleHQoKTsK
QEAgLTQ0NCwxMCArNDU3LDIyIEBAIGJvb2wgVGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Tm9kZSgp
CiAgICAgLy8gaGFuZGxlIHByZS1mb3JtYXR0ZWQgdGV4dAogICAgIGlmICghcmVuZGVyZXItPnN0
eWxlKCktPmNvbGxhcHNlV2hpdGVTcGFjZSgpKSB7CiAgICAgICAgIGludCBydW5TdGFydCA9IG1f
b2Zmc2V0OwotICAgICAgICBpZiAobV9sYXN0VGV4dE5vZGVFbmRlZFdpdGhDb2xsYXBzZWRTcGFj
ZSkgeworICAgICAgICBpZiAobV9sYXN0VGV4dE5vZGVFbmRlZFdpdGhDb2xsYXBzZWRTcGFjZSAm
JiBoYXNWaXNpYmxlVGV4dE5vZGUocmVuZGVyZXIpKSB7CiAgICAgICAgICAgICBlbWl0Q2hhcmFj
dGVyKCcgJywgbV9ub2RlLCAwLCBydW5TdGFydCwgcnVuU3RhcnQpOwogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICB9CisgICAgICAgIGlmICghbV9oYW5kbGVkRmlyc3RMZXR0ZXIg
JiYgcmVuZGVyZXItPmlzVGV4dEZyYWdtZW50KCkpIHsKKyAgICAgICAgICAgIGhhbmRsZVRleHRO
b2RlRmlyc3RMZXR0ZXIoc3RhdGljX2Nhc3Q8UmVuZGVyVGV4dEZyYWdtZW50Kj4ocmVuZGVyZXIp
KTsKKyAgICAgICAgICAgIGlmIChtX2ZpcnN0TGV0dGVyVGV4dCkgeworICAgICAgICAgICAgICAg
IFN0cmluZyBmaXJzdExldHRlciA9IG1fZmlyc3RMZXR0ZXJUZXh0LT50ZXh0KCk7CisgICAgICAg
ICAgICAgICAgZW1pdFRleHQobV9ub2RlLCBtX2ZpcnN0TGV0dGVyVGV4dCwgbV9vZmZzZXQsIGZp
cnN0TGV0dGVyLmxlbmd0aCgpKTsKKyAgICAgICAgICAgICAgICBtX2ZpcnN0TGV0dGVyVGV4dCA9
IDA7CisgICAgICAgICAgICAgICAgbV90ZXh0Qm94ID0gMDsKKyAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKHJlbmRlcmVy
LT5zdHlsZSgpLT52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgaW50IHN0ckxlbmd0aCA9IHN0ci5sZW5ndGgoKTsKICAgICAgICAgaW50
IGVuZCA9IChtX25vZGUgPT0gbV9lbmRDb250YWluZXIpID8gbV9lbmRPZmZzZXQgOiBJTlRfTUFY
OwogICAgICAgICBpbnQgcnVuRW5kID0gbWluKHN0ckxlbmd0aCwgZW5kKTsKQEAgLTQ2MCw2ICs0
ODUsMTUgQEAgYm9vbCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHROb2RlKCkKICAgICB9CiAKICAg
ICBpZiAoIXJlbmRlcmVyLT5maXJzdFRleHRCb3goKSAmJiBzdHIubGVuZ3RoKCkgPiAwKSB7Cisg
ICAgICAgIGlmICghbV9oYW5kbGVkRmlyc3RMZXR0ZXIgJiYgcmVuZGVyZXItPmlzVGV4dEZyYWdt
ZW50KCkpIHsKKyAgICAgICAgICAgIGhhbmRsZVRleHROb2RlRmlyc3RMZXR0ZXIoc3RhdGljX2Nh
c3Q8UmVuZGVyVGV4dEZyYWdtZW50Kj4ocmVuZGVyZXIpKTsKKyAgICAgICAgICAgIGlmIChtX2Zp
cnN0TGV0dGVyVGV4dCkgeworICAgICAgICAgICAgICAgIGhhbmRsZVRleHRCb3goKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgaWYgKHJlbmRlcmVyLT5zdHlsZSgpLT52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgbV9sYXN0VGV4dE5vZGVFbmRlZFdpdGhDb2xs
YXBzZWRTcGFjZSA9IHRydWU7IC8vIGVudGlyZSBibG9jayBpcyBjb2xsYXBzZWQgc3BhY2UKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtNDc1LDEzICs1MDksMTkgQEAgYm9vbCBUZXh0
SXRlcmF0b3I6OmhhbmRsZVRleHROb2RlKCkKICAgICB9CiAgICAgCiAgICAgbV90ZXh0Qm94ID0g
cmVuZGVyZXItPmNvbnRhaW5zUmV2ZXJzZWRUZXh0KCkgPyAobV9zb3J0ZWRUZXh0Qm94ZXMuaXNF
bXB0eSgpID8gMCA6IG1fc29ydGVkVGV4dEJveGVzWzBdKSA6IHJlbmRlcmVyLT5maXJzdFRleHRC
b3goKTsKKyAgICBpZiAoIW1faGFuZGxlZEZpcnN0TGV0dGVyICYmIHJlbmRlcmVyLT5pc1RleHRG
cmFnbWVudCgpICYmIG1fb2Zmc2V0ID09IDApCisgICAgICAgIGhhbmRsZVRleHROb2RlRmlyc3RM
ZXR0ZXIoc3RhdGljX2Nhc3Q8UmVuZGVyVGV4dEZyYWdtZW50Kj4ocmVuZGVyZXIpKTsKICAgICBo
YW5kbGVUZXh0Qm94KCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHZvaWQgVGV4dEl0ZXJhdG9y
OjpoYW5kbGVUZXh0Qm94KCkKIHsgICAgCi0gICAgUmVuZGVyVGV4dCogcmVuZGVyZXIgPSB0b1Jl
bmRlclRleHQobV9ub2RlLT5yZW5kZXJlcigpKTsKKyAgICBSZW5kZXJUZXh0KiByZW5kZXJlciA9
IG1fZmlyc3RMZXR0ZXJUZXh0ID8gbV9maXJzdExldHRlclRleHQgOiB0b1JlbmRlclRleHQobV9u
b2RlLT5yZW5kZXJlcigpKTsKKyAgICBpZiAocmVuZGVyZXItPnN0eWxlKCktPnZpc2liaWxpdHko
KSAhPSBWSVNJQkxFKSB7CisgICAgICAgIG1fdGV4dEJveCA9IDA7CisgICAgICAgIHJldHVybjsK
KyAgICB9CiAgICAgU3RyaW5nIHN0ciA9IHJlbmRlcmVyLT50ZXh0KCk7CiAgICAgaW50IHN0YXJ0
ID0gbV9vZmZzZXQ7CiAgICAgaW50IGVuZCA9IChtX25vZGUgPT0gbV9lbmRDb250YWluZXIpID8g
bV9lbmRPZmZzZXQgOiBJTlRfTUFYOwpAQCAtNTI3LDcgKzU2Nyw3IEBAIHZvaWQgVGV4dEl0ZXJh
dG9yOjpoYW5kbGVUZXh0Qm94KCkKICAgICAgICAgICAgICAgICAgICAgc3VicnVuRW5kID0gcnVu
RW5kOwogICAgIAogICAgICAgICAgICAgICAgIG1fb2Zmc2V0ID0gc3VicnVuRW5kOwotICAgICAg
ICAgICAgICAgIGVtaXRUZXh0KG1fbm9kZSwgcnVuU3RhcnQsIHN1YnJ1bkVuZCk7CisgICAgICAg
ICAgICAgICAgZW1pdFRleHQobV9ub2RlLCByZW5kZXJlciwgcnVuU3RhcnQsIHN1YnJ1bkVuZCk7
CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIC8vIElmIHdlIGFyZSBkb2luZyBhIHN1YnJ1
biB0aGF0IGRvZXNuJ3QgZ28gdG8gdGhlIGVuZCBvZiB0aGUgdGV4dCBib3gsCkBAIC01NDksNiAr
NTg5LDMzIEBAIHZvaWQgVGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Qm94KCkKICAgICAgICAgaWYg
KHJlbmRlcmVyLT5jb250YWluc1JldmVyc2VkVGV4dCgpKQogICAgICAgICAgICAgKyttX3NvcnRl
ZFRleHRCb3hlc1Bvc2l0aW9uOwogICAgIH0KKyAgICBpZiAoIW1fdGV4dEJveCAmJiBtX3JlbWFp
bmluZ1RleHRCb3gpIHsKKyAgICAgICAgbV90ZXh0Qm94ID0gbV9yZW1haW5pbmdUZXh0Qm94Owor
ICAgICAgICBtX3JlbWFpbmluZ1RleHRCb3ggPSAwOworICAgICAgICBtX2ZpcnN0TGV0dGVyVGV4
dCA9IDA7CisgICAgICAgIG1fb2Zmc2V0ID0gMDsKKyAgICAgICAgaGFuZGxlVGV4dEJveCgpOwor
ICAgIH0KK30KKwordm9pZCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHROb2RlRmlyc3RMZXR0ZXIo
UmVuZGVyVGV4dEZyYWdtZW50KiByZW5kZXJlcikKK3sKKyAgICBpZiAocmVuZGVyZXItPmZpcnN0
TGV0dGVyKCkpIHsKKyAgICAgICAgUmVuZGVyT2JqZWN0KiByID0gcmVuZGVyZXItPmZpcnN0TGV0
dGVyKCk7CisgICAgICAgIGlmIChyLT5zdHlsZSgpLT52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSkK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgZm9yIChSZW5kZXJPYmplY3QgKmN1cnJDaGls
ZCA9IHItPmZpcnN0Q2hpbGQoKTsgY3VyckNoaWxkOyBjdXJyQ2hpbGQtPm5leHRTaWJsaW5nKCkp
IHsKKyAgICAgICAgICAgIGlmIChjdXJyQ2hpbGQtPmlzVGV4dCgpKSB7CisgICAgICAgICAgICAg
ICAgUmVuZGVyVGV4dCogZmlyc3RMZXR0ZXIgPSB0b1JlbmRlclRleHQoY3VyckNoaWxkKTsKKyAg
ICAgICAgICAgICAgICBtX2hhbmRsZWRGaXJzdExldHRlciA9IHRydWU7CisgICAgICAgICAgICAg
ICAgbV9yZW1haW5pbmdUZXh0Qm94ID0gbV90ZXh0Qm94OworICAgICAgICAgICAgICAgIG1fdGV4
dEJveCA9IGZpcnN0TGV0dGVyLT5maXJzdFRleHRCb3goKTsKKyAgICAgICAgICAgICAgICBtX2Zp
cnN0TGV0dGVyVGV4dCA9IGZpcnN0TGV0dGVyOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBtX2hhbmRsZWRGaXJzdExldHRlciA9
IHRydWU7CiB9CiAKIGJvb2wgVGV4dEl0ZXJhdG9yOjpoYW5kbGVSZXBsYWNlZEVsZW1lbnQoKQpA
QCAtNTk3LDYgKzY2NCwxOCBAQCBib29sIFRleHRJdGVyYXRvcjo6aGFuZGxlUmVwbGFjZWRFbGVt
ZW50KCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBUZXh0SXRlcmF0b3I6Omhhc1Zpc2li
bGVUZXh0Tm9kZShSZW5kZXJUZXh0KiByZW5kZXJlcikKK3sKKyAgICBpZiAocmVuZGVyZXItPnN0
eWxlKCktPnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICBpZiAocmVuZGVyZXItPmlzVGV4dEZyYWdtZW50KCkpIHsKKyAgICAgICAgUmVuZGVyVGV4dEZy
YWdtZW50KiBmcmFnbWVudCA9IHN0YXRpY19jYXN0PFJlbmRlclRleHRGcmFnbWVudCo+KHJlbmRl
cmVyKTsKKyAgICAgICAgaWYgKGZyYWdtZW50LT5maXJzdExldHRlcigpICYmIGZyYWdtZW50LT5m
aXJzdExldHRlcigpLT5zdHlsZSgpLT52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSkKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIHN0YXRpYyBi
b29sIHNob3VsZEVtaXRUYWJCZWZvcmVOb2RlKE5vZGUqIG5vZGUpCiB7CiAgICAgUmVuZGVyT2Jq
ZWN0KiByID0gbm9kZS0+cmVuZGVyZXIoKTsKQEAgLTg4OCw5ICs5NjcsOSBAQCB2b2lkIFRleHRJ
dGVyYXRvcjo6ZW1pdENoYXJhY3RlcihVQ2hhciBjLCBOb2RlKiB0ZXh0Tm9kZSwgTm9kZSogb2Zm
c2V0QmFzZU5vZGUsCiAgICAgbV9sYXN0Q2hhcmFjdGVyID0gYzsKIH0KIAotdm9pZCBUZXh0SXRl
cmF0b3I6OmVtaXRUZXh0KE5vZGUqIHRleHROb2RlLCBpbnQgdGV4dFN0YXJ0T2Zmc2V0LCBpbnQg
dGV4dEVuZE9mZnNldCkKK3ZvaWQgVGV4dEl0ZXJhdG9yOjplbWl0VGV4dChOb2RlKiB0ZXh0Tm9k
ZSwgUmVuZGVyT2JqZWN0KiByZW5kZXJPYmplY3QsIGludCB0ZXh0U3RhcnRPZmZzZXQsIGludCB0
ZXh0RW5kT2Zmc2V0KQogewotICAgIFJlbmRlclRleHQqIHJlbmRlcmVyID0gdG9SZW5kZXJUZXh0
KG1fbm9kZS0+cmVuZGVyZXIoKSk7CisgICAgUmVuZGVyVGV4dCogcmVuZGVyZXIgPSB0b1JlbmRl
clRleHQocmVuZGVyT2JqZWN0KTsKICAgICBtX3RleHQgPSBtX2VtaXRzVGV4dFdpdGhvdXRUcmFu
c2NvZGluZyA/IHJlbmRlcmVyLT50ZXh0V2l0aG91dFRyYW5zY29kaW5nKCkgOiByZW5kZXJlci0+
dGV4dCgpOwogICAgIEFTU0VSVChtX3RleHQuY2hhcmFjdGVycygpKTsKIApAQCAtOTA2LDYgKzk4
NSwxMSBAQCB2b2lkIFRleHRJdGVyYXRvcjo6ZW1pdFRleHQoTm9kZSogdGV4dE5vZGUsIGludCB0
ZXh0U3RhcnRPZmZzZXQsIGludCB0ZXh0RW5kT2ZmcwogICAgIG1faGFzRW1pdHRlZCA9IHRydWU7
CiB9CiAKK3ZvaWQgVGV4dEl0ZXJhdG9yOjplbWl0VGV4dChOb2RlKiB0ZXh0Tm9kZSwgaW50IHRl
eHRTdGFydE9mZnNldCwgaW50IHRleHRFbmRPZmZzZXQpCit7CisgICAgZW1pdFRleHQodGV4dE5v
ZGUsIG1fbm9kZS0+cmVuZGVyZXIoKSwgdGV4dFN0YXJ0T2Zmc2V0LCB0ZXh0RW5kT2Zmc2V0KTsK
K30KKwogUGFzc1JlZlB0cjxSYW5nZT4gVGV4dEl0ZXJhdG9yOjpyYW5nZSgpIGNvbnN0CiB7CiAg
ICAgLy8gdXNlIHRoZSBjdXJyZW50IHJ1biBpbmZvcm1hdGlvbiwgaWYgd2UgaGF2ZSBpdApkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oIGIvV2ViQ29yZS9lZGl0aW5n
L1RleHRJdGVyYXRvci5oCmluZGV4IGJhMzgxYjliZmE0NGE3OWQxMDY0OTk5ZDJjNjA3YmU2OWY3
NmE4OTMuLjQ0MzAzNTU0NDQ3OWU2MzljODlkNWZkYThjNzNjMGQ5ODQ2MTJlMjMgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaAorKysgYi9XZWJDb3JlL2VkaXRpbmcv
VGV4dEl0ZXJhdG9yLmgKQEAgLTMyLDYgKzMyLDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CitjbGFzcyBSZW5kZXJUZXh0OworY2xhc3MgUmVuZGVyVGV4dEZyYWdtZW50OworCiAvLyBGSVhN
RTogQ2FuJ3QgcmVhbGx5IGFuc3dlciB0aGlzIHF1ZXN0aW9uIGNvcnJlY3RseSB3aXRob3V0IGtu
b3dpbmcgdGhlIHdoaXRlLXNwYWNlIG1vZGUuCiAvLyBGSVhNRTogTW92ZSB0aGlzIHNvbWV3aGVy
ZSBlbHNlIGluIHRoZSBlZGl0aW5nIGRpcmVjdG9yeS4gSXQgZG9lc24ndCBiZWxvbmcgaGVyZS4K
IGlubGluZSBib29sIGlzQ29sbGFwc2libGVXaGl0ZXNwYWNlKFVDaGFyIGMpCkBAIC0xMDIsNyAr
MTA1LDEwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBoYW5kbGVSZXBsYWNlZEVsZW1lbnQoKTsKICAg
ICBib29sIGhhbmRsZU5vblRleHROb2RlKCk7CiAgICAgdm9pZCBoYW5kbGVUZXh0Qm94KCk7Cisg
ICAgdm9pZCBoYW5kbGVUZXh0Tm9kZUZpcnN0TGV0dGVyKFJlbmRlclRleHRGcmFnbWVudCopOwor
ICAgIGJvb2wgaGFzVmlzaWJsZVRleHROb2RlKFJlbmRlclRleHQqKTsKICAgICB2b2lkIGVtaXRD
aGFyYWN0ZXIoVUNoYXIsIE5vZGUqIHRleHROb2RlLCBOb2RlKiBvZmZzZXRCYXNlTm9kZSwgaW50
IHRleHRTdGFydE9mZnNldCwgaW50IHRleHRFbmRPZmZzZXQpOworICAgIHZvaWQgZW1pdFRleHQo
Tm9kZSogdGV4dE5vZGUsIFJlbmRlck9iamVjdCogcmVuZGVyT2JqZWN0LCBpbnQgdGV4dFN0YXJ0
T2Zmc2V0LCBpbnQgdGV4dEVuZE9mZnNldCk7CiAgICAgdm9pZCBlbWl0VGV4dChOb2RlKiB0ZXh0
Tm9kZSwgaW50IHRleHRTdGFydE9mZnNldCwgaW50IHRleHRFbmRPZmZzZXQpOwogICAgIAogICAg
IC8vIEN1cnJlbnQgcG9zaXRpb24sIG5vdCBuZWNlc3NhcmlseSBvZiB0aGUgdGV4dCBiZWluZyBy
ZXR1cm5lZCwgYnV0IHBvc2l0aW9uCkBAIC0xMzQsNiArMTQwLDExIEBAIHByaXZhdGU6CiAgICAg
Ly8gYXJlIGZhbHNlIGFuZCAwLCB3ZSBnbyBiYWNrIHRvIG5vcm1hbCBpdGVyYXRpbmcuCiAgICAg
Ym9vbCBtX25lZWRzQW5vdGhlck5ld2xpbmU7CiAgICAgSW5saW5lVGV4dEJveCogbV90ZXh0Qm94
OworICAgIC8vIFVzZWQgd2hlbiBpdGVyYXRpb24gb3ZlciA6Zmlyc3QtbGV0dGVyIHRleHQgdG8g
c2F2ZSBwb2ludGVyIHRvCisgICAgLy8gcmVtYWluaW5nIHRleHQgYm94LgorICAgIElubGluZVRl
eHRCb3gqIG1fcmVtYWluaW5nVGV4dEJveDsKKyAgICAvLyBVc2VkIHRvIHBvaW50IHRvIFJlbmRl
clRleHQgb2JqZWN0IGZvciA6Zmlyc3QtbGV0dGVyLgorICAgIFJlbmRlclRleHQgKm1fZmlyc3RM
ZXR0ZXJUZXh0OwogICAgIAogICAgIC8vIFVzZWQgdG8gZG8gdGhlIHdoaXRlc3BhY2UgY29sbGFw
c2luZyBsb2dpYy4KICAgICBOb2RlKiBtX2xhc3RUZXh0Tm9kZTsgICAgCkBAIC0xNTksNiArMTcw
LDggQEAgcHJpdmF0ZToKIAogICAgIC8vIFVzZWQgd2hlbiB3ZSB3YW50IHRleHRzIGZvciBjb3B5
aW5nLCBwYXN0aW5nLCBhbmQgdHJhbnNwb3NpbmcuCiAgICAgYm9vbCBtX2VtaXRzVGV4dFdpdGhv
dXRUcmFuc2NvZGluZzsKKyAgICAvLyBVc2VkIHdoZW4gZGVjaWRpbmcgdGV4dCBmcmFnbWVudCBj
cmVhdGVkIGJ5IDpmaXJzdC1sZXR0ZXIgc2hvdWxkIGJlIGxvb2tlZCBpbnRvLgorICAgIGJvb2wg
bV9oYW5kbGVkRmlyc3RMZXR0ZXI7CiB9OwogCiAvLyBJdGVyYXRlcyB0aHJvdWdoIHRoZSBET00g
cmFuZ2UsIHJldHVybmluZyBhbGwgdGhlIHRleHQsIGFuZCAwLWxlbmd0aCBib3VuZGFyaWVzCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>