<?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>120069</bug_id>
          
          <creation_ts>2013-08-20 07:57:34 -0700</creation_ts>
          <short_desc>[MathML] Implement the subscriptshift and superscriptshift attributes</short_desc>
          <delta_ts>2016-07-11 07:07:42 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>MathML</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>WebExposed</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>99618</dependson>
          <blocked>159622</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter>gur.trio</reporter>
          <assigned_to>gur.trio</assigned_to>
          <cc>cfleizach</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbarton</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>gur.trio</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mrobinson</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>919046</commentid>
    <comment_count>0</comment_count>
    <who name="">gur.trio</who>
    <bug_when>2013-08-20 07:57:34 -0700</bug_when>
    <thetext>Webkit MATHML doesnot have support for subscriptshift and superscriptshift attributes.
http://www.w3.org/TR/MathML3/chapter3.html.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>919047</commentid>
    <comment_count>1</comment_count>
    <who name="">gur.trio</who>
    <bug_when>2013-08-20 07:58:21 -0700</bug_when>
    <thetext>Depends on https://bugs.webkit.org/show_bug.cgi?id=99618</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>919800</commentid>
    <comment_count>2</comment_count>
      <attachid>209346</attachid>
    <who name="">gur.trio</who>
    <bug_when>2013-08-22 04:52:34 -0700</bug_when>
    <thetext>Created attachment 209346
Attaching File to show changes related subscriptshift and superscriptshift attribute</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>919801</commentid>
    <comment_count>3</comment_count>
    <who name="">gur.trio</who>
    <bug_when>2013-08-22 04:54:56 -0700</bug_when>
    <thetext>Hi Frederic. I have done changes related to subscriptshift and superscriptshift attributes but since its dependent on 99619 I cannot submit the patch. I am attaching the .cpp file. Let me know how should I go about now?

I have also added the attributes in mathattrs.in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>919815</commentid>
    <comment_count>4</comment_count>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2013-08-22 05:26:40 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Hi Frederic. I have done changes related to subscriptshift and superscriptshift attributes but since its dependent on 99619 I cannot submit the patch. I am attaching the .cpp file. Let me know how should I go about now?
&gt; 
&gt; I have also added the attributes in mathattrs.in.

Thanks Gurpreet. Please attach a patch, that&apos;s much easier to see your changes and will be needed to ask a review anyway. I&apos;m not sure what your problem is? You can for example commit the patch of bug 99619 in a local branch, then do your changes and finally execute a diff to create your patch. See the doc of svn/git or ask help on irc if you&apos;re not familiar with these tools.

Chris is reviewing my patch for mmultiscripts but it&apos;s a bit big so it will take some time. Working on the easier bug 118904 as I suggested by email is probably a better way for you to get familiar with the WebKit review process &amp; unit test framework and it won&apos;t be blocked by other bugs.

Regarding your patch, the &quot;for&quot; loop is essentially checking all the subscript/superscript pairs (there can be many for mmultiscripts) and computing the maximum for top/bottom paddings. So I don&apos;t think incrementing these paddings by superscriptShift/subscriptShift at each step is what you want. Rather, I think the superscriptShift/subscriptShift values can be computed before entering the loop and then used in the computation of minBaseline and minExtendUnderBaseline at each step.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>920168</commentid>
    <comment_count>5</comment_count>
    <who name="">gur.trio</who>
    <bug_when>2013-08-23 04:06:40 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; Hi Frederic. I have done changes related to subscriptshift and superscriptshift attributes but since its dependent on 99619 I cannot submit the patch. I am attaching the .cpp file. Let me know how should I go about now?
&gt; &gt; 
&gt; &gt; I have also added the attributes in mathattrs.in.
&gt; 
&gt; Thanks Gurpreet. Please attach a patch, that&apos;s much easier to see your changes and will be needed to ask a review anyway. I&apos;m not sure what your problem is? You can for example commit the patch of bug 99619 in a local branch, then do your changes and finally execute a diff to create your patch. See the doc of svn/git or ask help on irc if you&apos;re not familiar with these tools.
&gt; 
&gt; Chris is reviewing my patch for mmultiscripts but it&apos;s a bit big so it will take some time. Working on the easier bug 118904 as I suggested by email is probably a better way for you to get familiar with the WebKit review process &amp; unit test framework and it won&apos;t be blocked by other bugs.
&gt; 
&gt; Regarding your patch, the &quot;for&quot; loop is essentially checking all the subscript/superscript pairs (there can be many for mmultiscripts) and computing the maximum for top/bottom paddings. So I don&apos;t think incrementing these paddings by superscriptShift/subscriptShift at each step is what you want. Rather, I think the superscriptShift/subscriptShift values can be computed before entering the loop and then used in the computation of minBaseline and minExtendUnderBaseline at each step.

Hi Frederic. I have made the changes as per your comments.

My problem is that when I merge the changes of bug 99618 to my code and on top of that do my changes, on doing svn diff/git diff it will take all the changes which I took from 99618. That diff will not have just my changes so I attached the .cpp file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>921861</commentid>
    <comment_count>6</comment_count>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2013-08-28 00:43:24 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; My problem is that when I merge the changes of bug 99618 to my code and on top of that do my changes, on doing svn diff/git diff it will take all the changes which I took from 99618. That diff will not have just my changes so I attached the .cpp file.

You can create a local git branch and commit the changes of bug 99618 on that local branch. Then make your changes and &quot;git diff&quot; will only create patch for these changes. I&apos;m not sure about svn but I guess something similar is possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>929602</commentid>
    <comment_count>7</comment_count>
      <attachid>211752</attachid>
    <who name="">gur.trio</who>
    <bug_when>2013-09-16 03:27:41 -0700</bug_when>
    <thetext>Created attachment 211752
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>929631</commentid>
    <comment_count>8</comment_count>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2013-09-16 04:31:51 -0700</bug_when>
    <thetext>Thanks Gurpreet, that looks good. A few comments:

- Check the indentation in the test files. Also the meta tag and xmlns:mml attributes are not really needed, so you can remove them.

- I think the shifts must not be negative, so you should call parseMathMLLength with allowNegative = false.

- I think setting the topPadding/bottomPadding to the shift values is not quite correct, that&apos;s likely to give too large values. Instead, you can still parse them to some superScriptShift and subScriptShift values outside the for loop. Then includes the shifts in the minBaseline/minExtendUnderBaseline computation:

            LayoutUnit minBaseline = max&lt;LayoutUnit&gt;(fontSize / 3 + 1 + superscriptBaseline, superscriptHeight + axis + superScriptShift);

and

            LayoutUnit minExtendUnderBaseline = max&lt;LayoutUnit&gt;(fontSize / 5 + 1 + subscriptUnderItsBaseline, subscriptHeight + subScriptShift - axis);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>929638</commentid>
    <comment_count>9</comment_count>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2013-09-16 04:43:06 -0700</bug_when>
    <thetext>Also, you can not group several mismatch tests in a single test (if one passes the mismatch condition, that won&apos;t guarantee that the others do too). So you should split your test into several tests i.e. test each element and attribute independently. Note that mmultiscripts also support these shifts attributes.

You may also remove the FIXME comment that refers to this bug (including the mention of TeX heuristics). Instead, say that the script shifts are also parts of the &quot;layout rules&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>929708</commentid>
    <comment_count>10</comment_count>
      <attachid>211786</attachid>
    <who name="">gur.trio</who>
    <bug_when>2013-09-16 08:25:15 -0700</bug_when>
    <thetext>Created attachment 211786
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>929710</commentid>
    <comment_count>11</comment_count>
    <who name="">gur.trio</who>
    <bug_when>2013-09-16 08:25:57 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; Also, you can not group several mismatch tests in a single test (if one passes the mismatch condition, that won&apos;t guarantee that the others do too). So you should split your test into several tests i.e. test each element and attribute independently. Note that mmultiscripts also support these shifts attributes.
&gt; 
&gt; You may also remove the FIXME comment that refers to this bug (including the mention of TeX heuristics). Instead, say that the script shifts are also parts of the &quot;layout rules&quot;.

Hi Frederic. Thanks for the review. Have done the changes as per the review comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>929775</commentid>
    <comment_count>12</comment_count>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2013-09-16 09:54:05 -0700</bug_when>
    <thetext>Thanks. The changes look OK in general, although I think you still need to test the subscriptshift and superscript shifts independently. Alternatively, you can try to write an == reftest ; that will allow you to group the tests and to make the testing to be more accurate. One technique is to use absolute positions like this:

    &lt;div style=&quot;position: absolute; top: 50px;&quot;&gt;
      &lt;math&gt;
        &lt;mspace height=&quot;100px&quot; depth=&quot;100px&quot;/&gt;
        &lt;msup subscriptshift=&quot;50px&quot;&gt;
          &lt;mspace width=&quot;20px&quot; height=&quot;10px&quot; depth=&quot;10px&quot; mathbackground=&quot;blue&quot;/&gt;
          &lt;mspace width=&quot;20px&quot; height=&quot;10px&quot; depth=&quot;10px&quot; mathbackground=&quot;red&quot;/&gt;
        &lt;/msup&gt;
      &lt;/math&gt;
    &lt;/div&gt;

    &lt;div style=&quot;position: absolute; top: 0px;&quot;&gt;
      &lt;math&gt;
        &lt;mspace height=&quot;100px&quot; depth=&quot;100px&quot;/&gt;
        &lt;mspace width=&quot;100px&quot; height=&quot;10px&quot; depth=&quot;10px&quot; mathbackground=&quot;black&quot;/&gt;
      &lt;/math&gt;
    &lt;/div&gt;

The red mspace in the first div should be shifted upwards by 50px. The second div is shift by -50px with respect to the first div. So the black rectangle should cover the red mspace (perhaps you&apos;ll need to tweak the height a bit to workaround rounding or antialiasing errors). That means that you can write an -expected file with e.g. &quot;red&quot; replaced by &quot;green&quot;. If the script is positioned as expected, the two files should be equal. Of course you can do that for the other elements too.

BTW, I&apos;m not an &quot;official&quot; WebKit reviewer, so e.g. Chris or Martin will have to review your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>929931</commentid>
    <comment_count>13</comment_count>
      <attachid>211786</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-09-16 14:41:41 -0700</bug_when>
    <thetext>Comment on attachment 211786
Patch

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

&gt; Source/WebCore/rendering/mathml/RenderMathMLScripts.cpp:296
&gt; +    LayoutUnit superScriptShiftValue = 0;
&gt; +    LayoutUnit subScriptShiftValue = 0;

superscript and subscript are single words, not pairs of words, so the s in &quot;script&quot; should not be capitalized

&gt; Source/WebCore/rendering/mathml/RenderMathMLScripts.cpp:300
&gt; +    if (m_kind == Sub || m_kind == SubSup || m_kind == Multiscripts)
&gt; +        parseMathMLLength(scriptElement-&gt;getAttribute(MathMLNames::subscriptshiftAttr), subScriptShiftValue, style(), false);
&gt; +    if (m_kind == Super || m_kind == SubSup || m_kind == Multiscripts)
&gt; +        parseMathMLLength(scriptElement-&gt;getAttribute(MathMLNames::superscriptshiftAttr), superScriptShiftValue, style(), false);

These can both be fastGetAttribute instead of just getAttribute.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>930035</commentid>
    <comment_count>14</comment_count>
    <who name="">gur.trio</who>
    <bug_when>2013-09-16 20:10:16 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; Thanks. The changes look OK in general, although I think you still need to test the subscriptshift and superscript shifts independently. Alternatively, you can try to write an == reftest ; that will allow you to group the tests and to make the testing to be more accurate. One technique is to use absolute positions like this:
&gt; 
&gt;     &lt;div style=&quot;position: absolute; top: 50px;&quot;&gt;
&gt;       &lt;math&gt;
&gt;         &lt;mspace height=&quot;100px&quot; depth=&quot;100px&quot;/&gt;
&gt;         &lt;msup subscriptshift=&quot;50px&quot;&gt;
&gt;           &lt;mspace width=&quot;20px&quot; height=&quot;10px&quot; depth=&quot;10px&quot; mathbackground=&quot;blue&quot;/&gt;
&gt;           &lt;mspace width=&quot;20px&quot; height=&quot;10px&quot; depth=&quot;10px&quot; mathbackground=&quot;red&quot;/&gt;
&gt;         &lt;/msup&gt;
&gt;       &lt;/math&gt;
&gt;     &lt;/div&gt;
&gt; 
&gt;     &lt;div style=&quot;position: absolute; top: 0px;&quot;&gt;
&gt;       &lt;math&gt;
&gt;         &lt;mspace height=&quot;100px&quot; depth=&quot;100px&quot;/&gt;
&gt;         &lt;mspace width=&quot;100px&quot; height=&quot;10px&quot; depth=&quot;10px&quot; mathbackground=&quot;black&quot;/&gt;
&gt;       &lt;/math&gt;
&gt;     &lt;/div&gt;
&gt; 
&gt; The red mspace in the first div should be shifted upwards by 50px. The second div is shift by -50px with respect to the first div. So the black rectangle should cover the red mspace (perhaps you&apos;ll need to tweak the height a bit to workaround rounding or antialiasing errors). That means that you can write an -expected file with e.g. &quot;red&quot; replaced by &quot;green&quot;. If the script is positioned as expected, the two files should be equal. Of course you can do that for the other elements too.
&gt; 
&gt; BTW, I&apos;m not an &quot;official&quot; WebKit reviewer, so e.g. Chris or Martin will have to review your patch.

&quot;although I think you still need to test the subscriptshift and superscript shifts independently.&quot;

I have separated those. For multiscripts and msubsup also need to test subscriptshift and superscript shifts independently?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>930036</commentid>
    <comment_count>15</comment_count>
    <who name="">gur.trio</who>
    <bug_when>2013-09-16 20:10:50 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 211786 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=211786&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/rendering/mathml/RenderMathMLScripts.cpp:296
&gt; &gt; +    LayoutUnit superScriptShiftValue = 0;
&gt; &gt; +    LayoutUnit subScriptShiftValue = 0;
&gt; 
&gt; superscript and subscript are single words, not pairs of words, so the s in &quot;script&quot; should not be capitalized
&gt; 
&gt; &gt; Source/WebCore/rendering/mathml/RenderMathMLScripts.cpp:300
&gt; &gt; +    if (m_kind == Sub || m_kind == SubSup || m_kind == Multiscripts)
&gt; &gt; +        parseMathMLLength(scriptElement-&gt;getAttribute(MathMLNames::subscriptshiftAttr), subScriptShiftValue, style(), false);
&gt; &gt; +    if (m_kind == Super || m_kind == SubSup || m_kind == Multiscripts)
&gt; &gt; +        parseMathMLLength(scriptElement-&gt;getAttribute(MathMLNames::superscriptshiftAttr), superScriptShiftValue, style(), false);
&gt; 
&gt; These can both be fastGetAttribute instead of just getAttribute.

Thanks Darin.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>930120</commentid>
    <comment_count>16</comment_count>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2013-09-17 02:51:08 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; I have separated those. For multiscripts and msubsup also need to test subscriptshift and superscript shifts independently?

Strictly speaking yes, since it could be that msup@superscriptshift, msub@subscriptshift, msubsup@subscriptshift work but not msubsup@superscriptshift. However, I&apos;m not sure it&apos;s really necessary here.

A more serious issue is that an &quot;expected-mismatch&quot; reftest is not really accurate. For example if you enter subscriptshift=&quot;50px&quot; and your code incorrectly interprets that as &quot;200px&quot;, then that won&apos;t be detected by your test. If you use an &quot;expected&quot; reftest like the one I proposed, then you know that the script has moved in the location delimited by the black rectangle, so that&apos;s slightly more accurate. You could also probably do some Javascript test with getBoundingClientRect to verify the value of the script shift.

Anyway, your patch is OK to me and it has been approved by Darin so you can send it to the commit-queue if you want...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>930167</commentid>
    <comment_count>17</comment_count>
      <attachid>211890</attachid>
    <who name="">gur.trio</who>
    <bug_when>2013-09-17 05:16:55 -0700</bug_when>
    <thetext>Created attachment 211890
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>930169</commentid>
    <comment_count>18</comment_count>
    <who name="">gur.trio</who>
    <bug_when>2013-09-17 05:19:12 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (In reply to comment #14)
&gt; &gt; I have separated those. For multiscripts and msubsup also need to test subscriptshift and superscript shifts independently?
&gt; 
&gt; Strictly speaking yes, since it could be that msup@superscriptshift, msub@subscriptshift, msubsup@subscriptshift work but not msubsup@superscriptshift. However, I&apos;m not sure it&apos;s really necessary here.
&gt; 
&gt; A more serious issue is that an &quot;expected-mismatch&quot; reftest is not really accurate. For example if you enter subscriptshift=&quot;50px&quot; and your code incorrectly interprets that as &quot;200px&quot;, then that won&apos;t be detected by your test. If you use an &quot;expected&quot; reftest like the one I proposed, then you know that the script has moved in the location delimited by the black rectangle, so that&apos;s slightly more accurate. You could also probably do some Javascript test with getBoundingClientRect to verify the value of the script shift.
&gt; 
&gt; Anyway, your patch is OK to me and it has been approved by Darin so you can send it to the commit-queue if you want...

Added new and modified test files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>930170</commentid>
    <comment_count>19</comment_count>
    <who name="">gur.trio</who>
    <bug_when>2013-09-17 05:20:05 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 211786 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=211786&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/rendering/mathml/RenderMathMLScripts.cpp:296
&gt; &gt; +    LayoutUnit superScriptShiftValue = 0;
&gt; &gt; +    LayoutUnit subScriptShiftValue = 0;
&gt; 
&gt; superscript and subscript are single words, not pairs of words, so the s in &quot;script&quot; should not be capitalized
&gt; 
&gt; &gt; Source/WebCore/rendering/mathml/RenderMathMLScripts.cpp:300
&gt; &gt; +    if (m_kind == Sub || m_kind == SubSup || m_kind == Multiscripts)
&gt; &gt; +        parseMathMLLength(scriptElement-&gt;getAttribute(MathMLNames::subscriptshiftAttr), subScriptShiftValue, style(), false);
&gt; &gt; +    if (m_kind == Super || m_kind == SubSup || m_kind == Multiscripts)
&gt; &gt; +        parseMathMLLength(scriptElement-&gt;getAttribute(MathMLNames::superscriptshiftAttr), superScriptShiftValue, style(), false);
&gt; 
&gt; These can both be fastGetAttribute instead of just getAttribute.

Hi Darin. Uploaded new patch. Can you please have a look?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>930587</commentid>
    <comment_count>20</comment_count>
      <attachid>211890</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-18 05:38:20 -0700</bug_when>
    <thetext>Comment on attachment 211890
Patch

Clearing flags on attachment: 211890

Committed r156036: &lt;http://trac.webkit.org/changeset/156036&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>930589</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-18 05:38:23 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>989018</commentid>
    <comment_count>22</comment_count>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2014-03-10 12:26:12 -0700</bug_when>
    <thetext>Mass change: add WebExposed keyword to help MDN documentation.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>209346</attachid>
            <date>2013-08-22 04:52:34 -0700</date>
            <delta_ts>2013-08-22 04:52:34 -0700</delta_ts>
            <desc>Attaching File to show changes related subscriptshift and superscriptshift attribute</desc>
            <filename>RenderMathMLScripts.cpp</filename>
            <type>text/plain</type>
            <size>22806</size>
            <attacher>gur.trio</attacher>
            
              <data encoding="base64">LyoNCiAqIENvcHlyaWdodCAoQykgMjAxMCBBbGV4IE1pbG93c2tpIChhbGV4QG1pbG93c2tpLmNv
bSkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQogKg0KICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0DQogKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMN
CiAqIGFyZSBtZXQ6DQogKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodA0KICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQNCiAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUNCiAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uDQogKg0KICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUw0KICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QNCiAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUg0KICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQNCiAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LA0KICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVA0KICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsDQogKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkNCiAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQNCiAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQ0KICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4NCiAqLw0KDQojaW5jbHVkZSAi
Y29uZmlnLmgiDQoNCiNpZiBFTkFCTEUoTUFUSE1MKQ0KDQojaW5jbHVkZSAiUmVuZGVyTWF0aE1M
U2NyaXB0cy5oIg0KDQojaW5jbHVkZSAiTWF0aE1MTmFtZXMuaCINCg0KbmFtZXNwYWNlIFdlYkNv
cmUgew0KICAgIA0KdXNpbmcgbmFtZXNwYWNlIE1hdGhNTE5hbWVzOw0KDQovLyBSZW5kZXJNYXRo
TUxTY3JpcHRzIGltcGxlbWVudHMgdmFyaW91cyBNYXRoTUwgZWxlbWVudHMgZHJhd2luZyBzY3Jp
cHRzIGF0dGFjaGVkIHRvIGEgYmFzZS4gRm9yIHZhbGlkIE1hdGhNTCBlbGVtZW50cyB0aGUgcmVu
ZGVyaW5nIHRyZWUgd2lsbCBiZToNCi8vDQovLyAtIG1zdWIsIG1zdXAsIG1zdWJzdXA6IEJhc2VX
cmFwcGVyIFN1YlN1cFBhaXJXcmFwcGVyDQovLyAtIG1tdWx0aXNjcmlwdHM6IEJhc2VXcmFwcGVy
IFN1YlN1cFBhaXJXcmFwcGVyKiAobXByZXNjcmlwdHMgU3ViU3VwUGFpcldyYXBwZXIqKSoNCi8v
DQovLyB3aGVyZSBCYXNlV3JhcHBlciBhbmQgU3ViU3VwUGFpcldyYXBwZXIgZG8gbm90IGNvbnRh
aW4gYW55IDxtcHJlc2NyaXB0cy8+IGNoaWxkcmVuLiBJbiBhZGRpdGlvbiwgQmFzZVdyYXBwZXIg
bXVzdCBoYXZlIG9uZSBjaGlsZCBhbmQgU3ViU3VwUGFpcldyYXBwZXIgbXVzdCBoYXZlIGVpdGhl
ciBvbmUgY2hpbGQgKG1zdWIsIG1zdXApIG9yIHR3byBjaGlsZHJlbiAobXN1YnN1cCwgbW11bHRp
c2NyaXB0cykuDQovLw0KLy8gSW4gb3JkZXIgdG8gYWNjZXB0IGludmFsaWQgbWFya3VwIGFuZCB0
byBoYW5kbGUgdGhlIHNjcmlwdCBlbGVtZW50cyBjb25zaXN0ZW50bHkgYW5kIHVuaWZvcm1seSwg
d2Ugd2lsbCByZWxheCB0aGUgY29uZGl0aW9ucyBhbmQgdXNlIHRoZSBjb21tb24gcmVuZGVyIHRy
ZWUgc3RydWN0dXJlOg0KLy8NCi8vIEJhc2VXcmFwcGVyIFN1YlN1cFBhaXJXcmFwcGVyKiAobXBy
ZXNjcmlwdHMgU3ViU3VwUGFpcldyYXBwZXIqKSoNCi8vDQovLyB3aGVyZSBCYXNlV3JhcHBlciBj
YW4gbm93IGJlIGVtcHR5IGFuZCBTdWJTdXBQYWlyV3JhcHBlciBjYW4gbm93IGhhdmUgb25lIG9y
IHR3byBlbGVtZW50cy4NCi8vDQoNCnN0YXRpYyBib29sIGlzTVByZXNjcmlwdHMoUmVuZGVyT2Jq
ZWN0ICpyZW5kZXJPYmplY3QpDQp7DQogICAgQVNTRVJUKHJlbmRlck9iamVjdCk7DQogICAgcmV0
dXJuIHJlbmRlck9iamVjdC0+bm9kZSgpICYmIHJlbmRlck9iamVjdC0+bm9kZSgpLT5oYXNUYWdO
YW1lKE1hdGhNTE5hbWVzOjptcHJlc2NyaXB0c1RhZyk7DQp9DQoNClJlbmRlck1hdGhNTFNjcmlw
dHM6OlJlbmRlck1hdGhNTFNjcmlwdHMoRWxlbWVudCogZWxlbWVudCkNCiAgICA6IFJlbmRlck1h
dGhNTEJsb2NrKGVsZW1lbnQpDQogICAgLCBtX2Jhc2VXcmFwcGVyKDApDQp7DQogICAgLy8gRGV0
ZXJtaW5lIHdoYXQga2luZCBvZiBzdWIvc3VwIGV4cHJlc3Npb24gd2UgaGF2ZSBieSBlbGVtZW50
IG5hbWUNCiAgICBpZiAoZWxlbWVudC0+aGFzTG9jYWxOYW1lKE1hdGhNTE5hbWVzOjptc3ViVGFn
KSkNCiAgICAgICAgbV9raW5kID0gU3ViOw0KICAgIGVsc2UgaWYgKGVsZW1lbnQtPmhhc0xvY2Fs
TmFtZShNYXRoTUxOYW1lczo6bXN1cFRhZykpDQogICAgICAgIG1fa2luZCA9IFN1cGVyOw0KICAg
IGVsc2UgaWYgKGVsZW1lbnQtPmhhc0xvY2FsTmFtZShNYXRoTUxOYW1lczo6bXN1YnN1cFRhZykp
DQogICAgICAgIG1fa2luZCA9IFN1YlN1cDsgICAgDQoJZWxzZSB7DQogICAgICAgIEFTU0VSVChl
bGVtZW50LT5oYXNMb2NhbE5hbWUoTWF0aE1MTmFtZXM6Om1tdWx0aXNjcmlwdHNUYWcpKTsNCiAg
ICAgICAgbV9raW5kID0gTXVsdGlzY3JpcHRzOw0KICAgIH0NCg0KfQ0KDQpSZW5kZXJCb3hNb2Rl
bE9iamVjdCogUmVuZGVyTWF0aE1MU2NyaXB0czo6YmFzZSgpIGNvbnN0DQp7DQogICAgaWYgKCFt
X2Jhc2VXcmFwcGVyKQ0KICAgICAgICByZXR1cm4gMDsNCiAgICBSZW5kZXJPYmplY3QqIGJhc2Ug
PSBtX2Jhc2VXcmFwcGVyLT5maXJzdENoaWxkKCk7DQogICAgaWYgKCFiYXNlIHx8ICFiYXNlLT5p
c0JveE1vZGVsT2JqZWN0KCkpDQogICAgICAgIHJldHVybiAwOw0KICAgIHJldHVybiB0b1JlbmRl
ckJveE1vZGVsT2JqZWN0KGJhc2UpOw0KfQ0KDQp2b2lkIFJlbmRlck1hdGhNTFNjcmlwdHM6OmZp
eEFub255bW91c1N0eWxlRm9yU3ViU3VwUGFpcihSZW5kZXJPYmplY3QqIHN1YlN1cFBhaXIsIGJv
b2wgaXNQb3N0U2NyaXB0KQ0Kew0KICAgIEFTU0VSVChzdWJTdXBQYWlyICYmIHN1YlN1cFBhaXIt
PnN0eWxlKCktPnJlZkNvdW50KCkgPT0gMSk7DQogICAgUmVuZGVyU3R5bGUqIHNjcmlwdHNTdHls
ZSA9IHN1YlN1cFBhaXItPnN0eWxlKCk7DQoNCiAgICAvLyBzdWJTdXAgcGFpcnMgYXJlIGRyYXdu
IGluIGNvbHVtbiBmcm9tIGJvdHRvbSAoc3Vic2NyaXB0KSB0byB0b3AgKHN1cGVyc2NyaXB0KS4N
CiAgICBzY3JpcHRzU3R5bGUtPnNldEZsZXhEaXJlY3Rpb24oRmxvd0NvbHVtblJldmVyc2UpOw0K
DQogICAgLy8gVGhlIE1hdGhNTCBzcGVjaWZpY2F0aW9uIGRvZXMgbm90IHNwZWNpZnkgaG9yaXpv
bnRhbCBhbGlnbm1lbnQgb2Ygc2NyaXB0cy4gV2UgYWxpZ24gdGhlIGJvdHRvbSAocmVzcGVjdGl2
ZWx5IHRvcCkgZWRnZSBvZiB0aGUgc3Vic2NyaXB0IChyZXNwZWN0aXZlbHkgc3VwZXJzY3JpcHQp
IHdpdGggdGhlIGJvdHRvbSAocmVzcGVjdGl2ZWx5IHRvcCkgZWRnZSBvZiB0aGUgZmxleCBjb250
YWluZXIuIE5vdGUgdGhhdCBmb3IgdmFsaWQgPG1zdWI+IGFuZCA8bXN1cD4gZWxlbWVudHMsIHRo
ZSBzdWJTdXBQYWlyIHNob3VsZCBhY3R1YWxseSBoYXZlIG9ubHkgb25lIHNjcmlwdC4NCiAgICBz
Y3JpcHRzU3R5bGUtPnNldEp1c3RpZnlDb250ZW50KG1fa2luZCA9PSBTdWIgPyBKdXN0aWZ5Rmxl
eFN0YXJ0IDogbV9raW5kID09IFN1cGVyID8gSnVzdGlmeUZsZXhFbmQgOiBKdXN0aWZ5U3BhY2VC
ZXR3ZWVuKTsNCg0KICAgIC8vIFRoZSBNYXRoTUwgc3BlY2lmaWNhdGlvbiBkb2VzIG5vdCBzcGVj
aWZ5IHZlcnRpY2FsIGFsaWdubWVudCBvZiBzY3JpcHRzLiBMZXQncyByaWdodCBhbGlnbiBwcmVz
Y3JpcHRzIGFuZCBsZWZ0IGFsaWduIHBvc3RzY3JpcHRzLiBTZWUgaHR0cDovL2xpc3RzLnczLm9y
Zy9BcmNoaXZlcy9QdWJsaWMvd3d3LW1hdGgvMjAxMkF1Zy8wMDA2Lmh0bWwNCiAgICBzY3JpcHRz
U3R5bGUtPnNldEFsaWduSXRlbXMoaXNQb3N0U2NyaXB0ID8gQWxpZ25GbGV4U3RhcnQgOiBBbGln
bkZsZXhFbmQpOw0KDQogICAgLy8gV2Ugc2V0IHRoZSBvcmRlciBwcm9wZXJ0eSBzbyB0aGF0IHRo
ZSBwcmVzY3JpcHRzIGFyZSBkcmF3biBiZWZvcmUgdGhlIGJhc2UuDQogICAgc2NyaXB0c1N0eWxl
LT5zZXRPcmRlcihpc1Bvc3RTY3JpcHQgPyAwIDogLTEpOw0KDQogICAgLy8gV2Ugc2V0IHRoaXMg
d3JhcHBlcidzIGZvbnQtc2l6ZSBmb3IgaXRzIGxpbmUtaGVpZ2h0Lg0KICAgIExheW91dFVuaXQg
c2NyaXB0U2l6ZSA9IHN0YXRpY19jYXN0PGludD4oMC43NSAqIHN0eWxlKCktPmZvbnRTaXplKCkp
Ow0KICAgIHNjcmlwdHNTdHlsZS0+c2V0Rm9udFNpemUoc2NyaXB0U2l6ZSk7DQp9DQoNCg0Kdm9p
ZCBSZW5kZXJNYXRoTUxTY3JpcHRzOjpmaXhBbm9ueW1vdXNTdHlsZXMoKQ0Kew0KICAgIC8vIFdl
IHNldCB0aGUgYmFzZSB3cmFwcGVyJ3Mgc3R5bGUgc28gdGhhdCBiYXNlSGVpZ2h0IGluIGxheW91
dCgpIHdpbGwgYmUgYW4gdW5zdHJldGNoZWQgaGVpZ2h0Lg0KICAgIEFTU0VSVChtX2Jhc2VXcmFw
cGVyICYmIG1fYmFzZVdyYXBwZXItPnN0eWxlKCktPmhhc09uZVJlZigpKTsNCiAgICBtX2Jhc2VX
cmFwcGVyLT5zdHlsZSgpLT5zZXRBbGlnblNlbGYoQWxpZ25GbGV4U3RhcnQpOw0KDQogICAgLy8g
VGhpcyBzZXRzIHRoZSBzdHlsZSBmb3IgcG9zdHNjcmlwdCBwYWlycy4NCiAgICBSZW5kZXJPYmpl
Y3QqIHN1YlN1cFBhaXIgPSBtX2Jhc2VXcmFwcGVyOw0KICAgIGZvciAoc3ViU3VwUGFpciA9IHN1
YlN1cFBhaXItPm5leHRTaWJsaW5nKCk7IHN1YlN1cFBhaXIgJiYgIWlzTVByZXNjcmlwdHMoc3Vi
U3VwUGFpcik7IHN1YlN1cFBhaXIgPSBzdWJTdXBQYWlyLT5uZXh0U2libGluZygpKQ0KICAgICAg
ICAgZml4QW5vbnltb3VzU3R5bGVGb3JTdWJTdXBQYWlyKHN1YlN1cFBhaXIsIHRydWUpOw0KIA0K
ICAgICBpZiAoc3ViU3VwUGFpciAmJiBtX2tpbmQgPT0gTXVsdGlzY3JpcHRzKSB7DQogICAgICAg
ICAvLyBUaGlzIHNldHMgdGhlIHN0eWxlIGZvciBwcmVzY3JpcHQgcGFpcnMuDQogICAgICAgICBm
b3IgKHN1YlN1cFBhaXIgPSBzdWJTdXBQYWlyLT5uZXh0U2libGluZygpOyBzdWJTdXBQYWlyICYm
ICFpc01QcmVzY3JpcHRzKHN1YlN1cFBhaXIpOyBzdWJTdXBQYWlyID0gc3ViU3VwUGFpci0+bmV4
dFNpYmxpbmcoKSkNCiAgICAgICAgICAgICBmaXhBbm9ueW1vdXNTdHlsZUZvclN1YlN1cFBhaXIo
c3ViU3VwUGFpciwgZmFsc2UpOw0KICAgICB9DQogDQogICAgIC8vIFRoaXMgcmVzZXRzIHN0eWxl
IGZvciBleHRyYSBzdWJTdXAgcGFpcnMuDQogICAgIGZvciAoOyBzdWJTdXBQYWlyOyBzdWJTdXBQ
YWlyID0gc3ViU3VwUGFpci0+bmV4dFNpYmxpbmcoKSkgew0KICAgICAgICAgaWYgKCFpc01QcmVz
Y3JpcHRzKHN1YlN1cFBhaXIpKSB7DQogICAgICAgICAgICAgQVNTRVJUKHN1YlN1cFBhaXIgJiYg
c3ViU3VwUGFpci0+c3R5bGUoKS0+cmVmQ291bnQoKSA9PSAxKTsNCiAgICAgICAgICAgICBSZW5k
ZXJTdHlsZSogc2NyaXB0c1N0eWxlID0gc3ViU3VwUGFpci0+c3R5bGUoKTsNCiAgICAgICAgICAg
ICBzY3JpcHRzU3R5bGUtPnNldEZsZXhEaXJlY3Rpb24oRmxvd1Jvdyk7DQogICAgICAgICAgICAg
c2NyaXB0c1N0eWxlLT5zZXRKdXN0aWZ5Q29udGVudChKdXN0aWZ5RmxleFN0YXJ0KTsNCiAgICAg
ICAgICAgICBzY3JpcHRzU3R5bGUtPnNldEFsaWduSXRlbXMoQWxpZ25DZW50ZXIpOw0KICAgICAg
ICAgICAgIHNjcmlwdHNTdHlsZS0+c2V0T3JkZXIoMCk7DQogICAgICAgICAgICAgc2NyaXB0c1N0
eWxlLT5zZXRGb250U2l6ZShzdHlsZSgpLT5mb250U2l6ZSgpKTsNCiAgICAgICAgIH0NCiAgICAg
fQ0KIH0NCg0Kdm9pZCBSZW5kZXJNYXRoTUxTY3JpcHRzOjphZGRDaGlsZEludGVybmFsKGJvb2wg
bm9ybWFsSW5zZXJ0aW9uLCBSZW5kZXJPYmplY3QqIGNoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9y
ZUNoaWxkKQ0Kew0KICAgIGlmIChub3JtYWxJbnNlcnRpb24pIHsNCiAgICAgICAgIFJlbmRlck1h
dGhNTEJsb2NrOjphZGRDaGlsZChjaGlsZCwgYmVmb3JlQ2hpbGQpOw0KICAgICAgICAgcmV0dXJu
Ow0KICAgIH0NCiANCiAgICBpZiAoYmVmb3JlQ2hpbGQpIHsNCiAgICAgICAgLy8gYmVmb3JlQ2hp
bGQgbWF5IGJlIGEgZ3JhbmRjaGlsZCwgc28gd2UgY2FsbCB0aGUgYWRkQ2hpbGQgZnVuY3Rpb24g
b2YgdGhlIGNvcnJlc3BvbmRpbmcgd3JhcHBlciBpbnN0ZWFkLg0KICAgICAgICAgUmVuZGVyT2Jq
ZWN0KiBwYXJlbnQgPSBiZWZvcmVDaGlsZC0+cGFyZW50KCk7DQogICAgICAgICBpZiAocGFyZW50
ICE9IHRoaXMpIHsNCiAgICAgICAgICAgICBSZW5kZXJNYXRoTUxTY3JpcHRzV3JhcHBlciogd3Jh
cHBlciA9IHRvUmVuZGVyTWF0aE1MU2NyaXB0c1dyYXBwZXIocGFyZW50KTsNCiAgICAgICAgICAg
ICB3cmFwcGVyLT5hZGRDaGlsZEludGVybmFsKGZhbHNlLCBjaGlsZCwgYmVmb3JlQ2hpbGQpOw0K
ICAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgIH0NCiAgICAgfQ0KIA0KICAgICBpZiAoYmVm
b3JlQ2hpbGQgPT0gbV9iYXNlV3JhcHBlcikgew0KICAgICAgICAgLy8gVGhpcyBpcyBsaWtlIGlu
c2VydGluZyB0aGUgY2hpbGQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgYmFzZSB3cmFwcGVyLg0K
ICAgICAgICAgbV9iYXNlV3JhcHBlci0+YWRkQ2hpbGRJbnRlcm5hbChmYWxzZSwgY2hpbGQsIG1f
YmFzZVdyYXBwZXItPmZpcnN0Q2hpbGQoKSk7DQogICAgICAgICByZXR1cm47DQogICAgIH0NCiAg
ICAgaWYgKGlzTVByZXNjcmlwdHMoY2hpbGQpKSB7DQogICAgICAgICAvLyBUaGUgbmV3IGNoaWxk
IGJlY29tZXMgYW4gPG1wcmVzY3JpcHRzLz4gc2VwYXJhdG9yLg0KICAgICAgICAgUmVuZGVyTWF0
aE1MQmxvY2s6OmFkZENoaWxkKGNoaWxkLCBiZWZvcmVDaGlsZCk7DQogICAgICAgICByZXR1cm47
DQogICAgIH0NCiANCiAgICAgaWYgKCFiZWZvcmVDaGlsZCB8fCBpc01QcmVzY3JpcHRzKGJlZm9y
ZUNoaWxkKSkgew0KICAgICAgICAgLy8gV2UgYXJlIGF0IHRoZSBlbmQgb2YgYSBzZXF1ZW5jZSBv
ZiBzdWJTdXAgcGFpcnMuDQogICAgICAgICBSZW5kZXJNYXRoTUxCbG9jayogcHJldmlvdXNTaWJs
aW5nID0gdG9SZW5kZXJNYXRoTUxCbG9jayhiZWZvcmVDaGlsZCA/IGJlZm9yZUNoaWxkLT5wcmV2
aW91c1NpYmxpbmcoKSA6IGxhc3RDaGlsZCgpKTsNCiAgICAgICAgIGlmIChwcmV2aW91c1NpYmxp
bmcgJiYgcHJldmlvdXNTaWJsaW5nLT5pc1JlbmRlck1hdGhNTFNjcmlwdHNXcmFwcGVyKCkpIHsN
CiAgICAgICAgICAgICBSZW5kZXJNYXRoTUxTY3JpcHRzV3JhcHBlciogd3JhcHBlciA9IHRvUmVu
ZGVyTWF0aE1MU2NyaXB0c1dyYXBwZXIocHJldmlvdXNTaWJsaW5nKTsNCiAgICAgICAgICAgICBp
ZiAoKHdyYXBwZXItPm1fa2luZCA9PSBSZW5kZXJNYXRoTUxTY3JpcHRzV3JhcHBlcjo6QmFzZSAm
JiB3cmFwcGVyLT5pc0VtcHR5KCkpIHx8ICh3cmFwcGVyLT5tX2tpbmQgPT0gUmVuZGVyTWF0aE1M
U2NyaXB0c1dyYXBwZXI6OlN1YlN1cFBhaXIgJiYgIXdyYXBwZXItPmZpcnN0Q2hpbGQoKS0+bmV4
dFNpYmxpbmcoKSkpIHsNCiAgICAgICAgICAgICAgICAgLy8gVGhlIHByZXZpb3VzIHNpYmxpbmcg
aXMgZWl0aGVyIGFuIGVtcHR5IGJhc2Ugb3IgYSBTdWJTdXAgcGFpciB3aXRoIGEgc2luZ2xlIGNo
aWxkIHNvIHdlIGNhbiBpbnNlcnQgdGhlIG5ldyBjaGlsZCBpbnRvIHRoYXQgd3JhcHBlci4NCiAg
ICAgICAgICAgICAgICAgd3JhcHBlci0+YWRkQ2hpbGRJbnRlcm5hbCh0cnVlLCBjaGlsZCk7DQog
ICAgICAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgICAgICB9DQogICAgICAgICB9DQogICAg
ICAgICAvLyBPdGhlcndpc2Ugd2UgY3JlYXRlIGEgbmV3IHN1YlN1cFBhaXIgdG8gc3RvcmUgdGhl
IG5ldyBjaGlsZC4NCiAgICAgICAgIFJlbmRlck1hdGhNTFNjcmlwdHNXcmFwcGVyKiBzdWJTdXBQ
YWlyID0gUmVuZGVyTWF0aE1MU2NyaXB0c1dyYXBwZXI6OmNyZWF0ZUFub255bW91c1dyYXBwZXIo
dGhpcywgUmVuZGVyTWF0aE1MU2NyaXB0c1dyYXBwZXI6OlN1YlN1cFBhaXIpOw0KICAgICAgICAg
c3ViU3VwUGFpci0+YWRkQ2hpbGRJbnRlcm5hbCh0cnVlLCBjaGlsZCk7DQogICAgICAgICBSZW5k
ZXJNYXRoTUxCbG9jazo6YWRkQ2hpbGQoc3ViU3VwUGFpciwgYmVmb3JlQ2hpbGQpOw0KICAgICAg
ICAgcmV0dXJuOw0KICAgICB9DQogDQogICAgIC8vIGJlZm9yZUNoaWxkIGlzIGEgc3ViU3VwIHBh
aXIuIFRoaXMgaXMgbGlrZSBpbnNlcnRpbmcgdGhlIG5ldyBjaGlsZCBhdCB0aGUgYmVnaW5uaW5n
IG9mIHRoZSBzdWJTdXAgd3JhcHBlci4NCiAgICAgUmVuZGVyTWF0aE1MU2NyaXB0c1dyYXBwZXIq
IHdyYXBwZXIgPSB0b1JlbmRlck1hdGhNTFNjcmlwdHNXcmFwcGVyKGJlZm9yZUNoaWxkKTsNCiAg
ICAgQVNTRVJUKHdyYXBwZXItPm1fa2luZCA9PSBSZW5kZXJNYXRoTUxTY3JpcHRzV3JhcHBlcjo6
U3ViU3VwUGFpcik7DQogICAgIEFTU0VSVCghKG1fYmFzZVdyYXBwZXItPmlzRW1wdHkoKSAmJiBt
X2Jhc2VXcmFwcGVyLT5uZXh0U2libGluZygpID09IGJlZm9yZUNoaWxkKSk7DQogICAgIHdyYXBw
ZXItPmFkZENoaWxkSW50ZXJuYWwoZmFsc2UsIGNoaWxkLCB3cmFwcGVyLT5maXJzdENoaWxkKCkp
Ow0KfQ0KDQp2b2lkIFJlbmRlck1hdGhNTFNjcmlwdHM6OnJlbW92ZUNoaWxkSW50ZXJuYWwoYm9v
bCBub3JtYWxSZW1vdmFsLCBSZW5kZXJPYmplY3QqIGNoaWxkKQ0Kew0KICAgIGlmIChub3JtYWxS
ZW1vdmFsKSB7DQogICAgICAgIFJlbmRlck1hdGhNTEJsb2NrOjpyZW1vdmVDaGlsZChjaGlsZCk7
DQogICAgICAgIHJldHVybjsNCiAgIH0NCg0KICAgQVNTRVJUKGlzTVByZXNjcmlwdHMoY2hpbGQp
KTsNCiAgIFJlbmRlck9iamVjdCogcHJldmlvdXNTaWJsaW5nID0gY2hpbGQtPnByZXZpb3VzU2li
bGluZygpOw0KICAgUmVuZGVyT2JqZWN0KiBuZXh0U2libGluZyA9IGNoaWxkLT5uZXh0U2libGlu
ZygpOw0KICAgQVNTRVJUKHByZXZpb3VzU2libGluZyk7DQoNCiAgIGlmIChuZXh0U2libGluZyAm
JiAhaXNNUHJlc2NyaXB0cyhwcmV2aW91c1NpYmxpbmcpICYmICFpc01QcmVzY3JpcHRzKG5leHRT
aWJsaW5nKSkgew0KICAgICAgICBSZW5kZXJNYXRoTUxTY3JpcHRzV3JhcHBlciogcHJldmlvdXNX
cmFwcGVyID0gdG9SZW5kZXJNYXRoTUxTY3JpcHRzV3JhcHBlcihwcmV2aW91c1NpYmxpbmcpOw0K
ICAgICAgICBSZW5kZXJNYXRoTUxTY3JpcHRzV3JhcHBlciogbmV4dFdyYXBwZXIgPSB0b1JlbmRl
ck1hdGhNTFNjcmlwdHNXcmFwcGVyKG5leHRTaWJsaW5nKTsNCiAgICAgICAgQVNTRVJUKG5leHRX
cmFwcGVyLT5tX2tpbmQgPT0gUmVuZGVyTWF0aE1MU2NyaXB0c1dyYXBwZXI6OlN1YlN1cFBhaXIg
JiYgIW5leHRXcmFwcGVyLT5pc0VtcHR5KCkpOw0KICAgICAgICBpZiAoKHByZXZpb3VzV3JhcHBl
ci0+bV9raW5kID09IFJlbmRlck1hdGhNTFNjcmlwdHNXcmFwcGVyOjpCYXNlICYmIHByZXZpb3Vz
V3JhcHBlci0+aXNFbXB0eSgpKSB8fCAocHJldmlvdXNXcmFwcGVyLT5tX2tpbmQgPT0gUmVuZGVy
TWF0aE1MU2NyaXB0c1dyYXBwZXI6OlN1YlN1cFBhaXIgJiYgIXByZXZpb3VzV3JhcHBlci0+Zmly
c3RDaGlsZCgpLT5uZXh0U2libGluZygpKSkgew0KICAgICAgICAgICAgUmVuZGVyT2JqZWN0KiBz
Y3JpcHQgPSBuZXh0V3JhcHBlci0+Zmlyc3RDaGlsZCgpOw0KICAgICAgICAgICAgbmV4dFdyYXBw
ZXItPnJlbW92ZUNoaWxkSW50ZXJuYWwoZmFsc2UsIHNjcmlwdCk7DQogICAgICAgICAgICBwcmV2
aW91c1dyYXBwZXItPmFkZENoaWxkSW50ZXJuYWwodHJ1ZSwgc2NyaXB0KTsNCiAgICAgICAgfQ0K
ICAgIH0NCg0KICAgUmVuZGVyTWF0aE1MQmxvY2s6OnJlbW92ZUNoaWxkKGNoaWxkKTsNCn0NCg0K
DQovLyBGSVhNRTogSGFuZGxlIGFyYml0cmFyeSBhZGRDaGlsZC9yZW1vdmVDaGlsZCBjb3JyZWN0
bHkgdGhyb3VnaG91dCBNYXRoTUwuDQp2b2lkIFJlbmRlck1hdGhNTFNjcmlwdHM6OmFkZENoaWxk
KFJlbmRlck9iamVjdCogY2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQpDQp7DQogICAg
aWYgKGlzRW1wdHkoKSkgew0KICAgICAgICBtX2Jhc2VXcmFwcGVyID0gUmVuZGVyTWF0aE1MU2Ny
aXB0c1dyYXBwZXI6OmNyZWF0ZUFub255bW91c1dyYXBwZXIodGhpcywgUmVuZGVyTWF0aE1MU2Ny
aXB0c1dyYXBwZXI6OkJhc2UpOw0KICAgICAgICBSZW5kZXJNYXRoTUxCbG9jazo6YWRkQ2hpbGQo
bV9iYXNlV3JhcHBlcik7DQogICAgfQ0KICAgIA0KICAgIGFkZENoaWxkSW50ZXJuYWwoZmFsc2Us
IGNoaWxkLCBiZWZvcmVDaGlsZCk7DQoNCglmaXhBbm9ueW1vdXNTdHlsZXMoKTsNCn0NCg0Kdm9p
ZCBSZW5kZXJNYXRoTUxTY3JpcHRzOjpyZW1vdmVDaGlsZChSZW5kZXJPYmplY3QqIGNoaWxkKQ0K
ew0KICAgIGlmIChiZWluZ0Rlc3Ryb3llZCgpIHx8IGRvY3VtZW50QmVpbmdEZXN0cm95ZWQoKSkg
ew0KICAgICAgICAvLyBUaGUgcmVuZGVyZXIgaXMgYmVpbmcgZGVzdHJveWVkIHNvIHdlIHJlbW92
ZSB0aGUgY2hpbGQgbm9ybWFsbHkuDQogICAgICAgIFJlbmRlck1hdGhNTEJsb2NrOjpyZW1vdmVD
aGlsZChjaGlsZCk7DQogICAgICAgIHJldHVybjsNCiAgICB9DQoNCiAgICByZW1vdmVDaGlsZElu
dGVybmFsKGZhbHNlLCBjaGlsZCk7DQoNCiAgICBmaXhBbm9ueW1vdXNTdHlsZXMoKTsNCn0NCg0K
dm9pZCBSZW5kZXJNYXRoTUxTY3JpcHRzOjpzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2Ug
ZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKQ0Kew0KICAgIFJlbmRlck1hdGhNTEJs
b2NrOjpzdHlsZURpZENoYW5nZShkaWZmLCBvbGRTdHlsZSk7DQogICAgDQogICAgaWYgKCFpc0Vt
cHR5KCkpDQogICAgICAgIGZpeEFub255bW91c1N0eWxlcygpOw0KfQ0KDQpSZW5kZXJNYXRoTUxP
cGVyYXRvciogUmVuZGVyTWF0aE1MU2NyaXB0czo6dW5lbWJlbGxpc2hlZE9wZXJhdG9yKCkNCnsN
CiAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogYmFzZSA9IHRoaXMtPmJhc2UoKTsNCiAgICBpZiAo
IWJhc2UgfHwgIWJhc2UtPmlzUmVuZGVyTWF0aE1MQmxvY2soKSkNCiAgICAgICAgcmV0dXJuIDA7
DQogICAgcmV0dXJuIHRvUmVuZGVyTWF0aE1MQmxvY2soYmFzZSktPnVuZW1iZWxsaXNoZWRPcGVy
YXRvcigpOw0KfQ0KDQp2b2lkIFJlbmRlck1hdGhNTFNjcmlwdHM6OmxheW91dCgpDQp7DQogICAg
UmVuZGVyTWF0aE1MQmxvY2s6OmxheW91dCgpOw0KDQogICAgUmVuZGVyTWF0aE1MQmxvY2sqIGJh
c2VXcmFwcGVyID0gdG9SZW5kZXJNYXRoTUxCbG9jayhmaXJzdENoaWxkKCkpOw0KICAgIGlmICgh
bV9iYXNlV3JhcHBlcikNCiAgICAgICAgcmV0dXJuOw0KICAgIFJlbmRlckJveCogYmFzZSA9IG1f
YmFzZVdyYXBwZXItPmZpcnN0Q2hpbGRCb3goKTsNCiAgICBpZiAoIWJhc2UpDQogICAgICAgIHJl
dHVybjsNCg0KICAgIC8vIE91ciBsYXlvdXQgcnVsZXMgaW5jbHVkZTogRG9uJ3QgbGV0IHRoZSBz
dXBlcnNjcmlwdCBnbyBiZWxvdyB0aGUgImF4aXMiIChoYWxmIHgtaGVpZ2h0IGFib3ZlIHRoZQ0K
ICAgIC8vIGJhc2VsaW5lKSwgb3IgdGhlIHN1YnNjcmlwdCBhYm92ZSB0aGUgYXhpcy4gQWxzbywg
ZG9uJ3QgbGV0IHRoZSBzdXBlcnNjcmlwdCdzIHRvcCBlZGdlIGJlDQogICAgLy8gYmVsb3cgdGhl
IGJhc2UncyB0b3AgZWRnZSwgb3IgdGhlIHN1YnNjcmlwdCdzIGJvdHRvbSBlZGdlIGFib3ZlIHRo
ZSBiYXNlJ3MgYm90dG9tIGVkZ2UuDQogICAgLy8NCiAgICAvLyBGSVhNRTogQ2hlY2sgYW55IHN1
YnNjcmlwdHNoaWZ0IG9yIHN1cGVyc2NyaXB0c2hpZnQgYXR0cmlidXRlcywgYW5kIG1heWJlIHVz
ZSBtb3JlIHNvcGhpc3RpY2F0ZWQNCiAgICAvLyBoZXVyaXN0aWNzIGZyb20gVGVYIG9yIGVsc2V3
aGVyZS4gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTI3NCNj
NS4NCg0KICAgIExheW91dFVuaXQgYmFzZUhlaWdodCA9IGJhc2UtPmxvZ2ljYWxIZWlnaHQoKTsN
CiAgICBMYXlvdXRVbml0IGJhc2VCYXNlbGluZSA9IGJhc2UtPmZpcnN0TGluZUJveEJhc2VsaW5l
KCk7DQogICAgaWYgKGJhc2VCYXNlbGluZSA9PSAtMSkNCiAgICAgICAgYmFzZUJhc2VsaW5lID0g
YmFzZUhlaWdodDsNCiAgICBMYXlvdXRVbml0IGF4aXMgPSBzdHlsZSgpLT5mb250TWV0cmljcygp
LnhIZWlnaHQoKSAvIDI7DQogICAgaW50IGZvbnRTaXplID0gc3R5bGUoKS0+Zm9udFNpemUoKTsN
Cg0KICAgIEFTU0VSVChtX2Jhc2VXcmFwcGVyLT5zdHlsZSgpLT5oYXNPbmVSZWYoKSk7DQogICAg
Ym9vbCBuZWVkc1NlY29uZExheW91dCA9IGZhbHNlOw0KDQogICAgTGF5b3V0VW5pdCB0b3BQYWRk
aW5nID0gMDsNCiAgICBMYXlvdXRVbml0IGJvdHRvbVBhZGRpbmcgPSAwOw0KCUxheW91dFVuaXQg
c3Vic2NyaXB0U2hpZnQ9MDsNCglMYXlvdXRVbml0IHN1cGVyc2NyaXB0U2hpZnQ9MDsNCg0KCVJl
bmRlck1hdGhNTEJsb2NrKiBzdWJTdXBQYWlyID0gdG9SZW5kZXJNYXRoTUxCbG9jayhtX2Jhc2VX
cmFwcGVyLT5uZXh0U2libGluZygpKTsNCiAgICBmb3IgKGJvb2wgaXNQb3N0U2NyaXB0ID0gdHJ1
ZTsgc3ViU3VwUGFpcjsgc3ViU3VwUGFpciA9IHRvUmVuZGVyTWF0aE1MQmxvY2soc3ViU3VwUGFp
ci0+bmV4dFNpYmxpbmcoKSkpIHsNCiAgICAgICAgLy8gV2Ugc2tpcCB0aGUgYmFzZSBhbmQgPG1w
cmVzY3JpcHRzLz4gZWxlbWVudHMuDQogICAgICAgIGlmIChpc01QcmVzY3JpcHRzKHN1YlN1cFBh
aXIpKSB7DQogICAgICAgICAgICBpZiAoIWlzUG9zdFNjcmlwdCkNCiAgICAgICAgICAgICAgICBi
cmVhazsNCiAgICAgICAgICAgICBpc1Bvc3RTY3JpcHQgPSBmYWxzZTsNCiAgICAgICAgICAgICBj
b250aW51ZTsNCgkJfQ0KICAgICAgICBpZiAoUmVuZGVyQm94KiBzdXBlcnNjcmlwdCA9IG1fa2lu
ZCA9PSBTdWIgPyAwIDogc3ViU3VwUGFpci0+bGFzdENoaWxkQm94KCkpIHsNCiAgICAgICAgICAg
ICBMYXlvdXRVbml0IHN1cGVyc2NyaXB0SGVpZ2h0ID0gc3VwZXJzY3JpcHQtPmxvZ2ljYWxIZWln
aHQoKTsNCiAgICAgICAgICAgICBMYXlvdXRVbml0IHN1cGVyc2NyaXB0QmFzZWxpbmUgPSBzdXBl
cnNjcmlwdC0+Zmlyc3RMaW5lQm94QmFzZWxpbmUoKTsNCiAgICAgICAgICAgICBpZiAoc3VwZXJz
Y3JpcHRCYXNlbGluZSA9PSAtMSkNCiAgICAgICAgICAgICAgICAgc3VwZXJzY3JpcHRCYXNlbGlu
ZSA9IHN1cGVyc2NyaXB0SGVpZ2h0Ow0KICAgICAgICAgICAgIExheW91dFVuaXQgbWluQmFzZWxp
bmUgPSBtYXg8TGF5b3V0VW5pdD4oZm9udFNpemUgLyAzICsgMSArIHN1cGVyc2NyaXB0QmFzZWxp
bmUsIHN1cGVyc2NyaXB0SGVpZ2h0ICsgYXhpcyk7DQoJCQkgRWxlbWVudCogc3VwZXJzY3JpcHRF
bGVtZW50ID0gdG9FbGVtZW50KG5vZGUoKSk7DQoJICAgICAgICAgcGFyc2VNYXRoTUxMZW5ndGgo
c3VwZXJzY3JpcHRFbGVtZW50LT5nZXRBdHRyaWJ1dGUoTWF0aE1MTmFtZXM6OnN1cGVyc2NyaXB0
c2hpZnRBdHRyKSwgc3VwZXJzY3JpcHRTaGlmdCwgc3R5bGUoKSk7DQoJCQkgdG9wUGFkZGluZyAr
PSBzdXBlcnNjcmlwdFNoaWZ0Ow0KICAgICAgICAgICAgIHRvcFBhZGRpbmcgPSBtYXg8TGF5b3V0
VW5pdD4odG9wUGFkZGluZywgbWluQmFzZWxpbmUgLSBiYXNlQmFzZWxpbmUpOw0KICAgICAgICB9
DQoJCWlmIChSZW5kZXJCb3gqIHN1YnNjcmlwdCA9IG1fa2luZCA9PSBTdXBlciA/IDAgOiBzdWJT
dXBQYWlyLT5maXJzdENoaWxkQm94KCkpIHsNCiAgICAgICAgICAgICBMYXlvdXRVbml0IHN1YnNj
cmlwdEhlaWdodCA9IHN1YnNjcmlwdC0+bG9naWNhbEhlaWdodCgpOw0KICAgICAgICAgICAgIExh
eW91dFVuaXQgc3Vic2NyaXB0QmFzZWxpbmUgPSBzdWJzY3JpcHQtPmZpcnN0TGluZUJveEJhc2Vs
aW5lKCk7DQogICAgICAgICAgICAgaWYgKHN1YnNjcmlwdEJhc2VsaW5lID09IC0xKQ0KICAgICAg
ICAgICAgICAgICBzdWJzY3JpcHRCYXNlbGluZSA9IHN1YnNjcmlwdEhlaWdodDsNCiAgICAgICAg
ICAgICBMYXlvdXRVbml0IGJhc2VFeHRlbmRVbmRlckJhc2VsaW5lID0gYmFzZUhlaWdodCAtIGJh
c2VCYXNlbGluZTsNCiAgICAgICAgICAgICBMYXlvdXRVbml0IHN1YnNjcmlwdFVuZGVySXRzQmFz
ZWxpbmUgPSBzdWJzY3JpcHRIZWlnaHQgLSBzdWJzY3JpcHRCYXNlbGluZTsNCiAgICAgICAgICAg
ICBMYXlvdXRVbml0IG1pbkV4dGVuZFVuZGVyQmFzZWxpbmUgPSBtYXg8TGF5b3V0VW5pdD4oZm9u
dFNpemUgLyA1ICsgMSArIHN1YnNjcmlwdFVuZGVySXRzQmFzZWxpbmUsIHN1YnNjcmlwdEhlaWdo
dCAtIGF4aXMpOw0KICAgICAgICAgICAgIEVsZW1lbnQqIHN1YnNjcmlwdEVsZW1lbnQgPSB0b0Vs
ZW1lbnQobm9kZSgpKTsNCgkgICAgICAgICBwYXJzZU1hdGhNTExlbmd0aChzdWJzY3JpcHRFbGVt
ZW50LT5nZXRBdHRyaWJ1dGUoTWF0aE1MTmFtZXM6OnN1YnNjcmlwdHNoaWZ0QXR0ciksIHN1YnNj
cmlwdFNoaWZ0LCBzdHlsZSgpKTsNCgkJCSBib3R0b21QYWRkaW5nICs9IHN1YnNjcmlwdFNoaWZ0
Ow0KICAgICAgICAgICAgIGJvdHRvbVBhZGRpbmcgPSBtYXg8TGF5b3V0VW5pdD4oYm90dG9tUGFk
ZGluZywgbWluRXh0ZW5kVW5kZXJCYXNlbGluZSAtIGJhc2VFeHRlbmRVbmRlckJhc2VsaW5lKTsN
CiAgICAgICAgfQ0KICAgIH0NCg0KICAgIExlbmd0aCBuZXdQYWRkaW5nOw0KDQogICAgbmV3UGFk
ZGluZyA9IExlbmd0aCh0b3BQYWRkaW5nLCBGaXhlZCk7DQogICAgaWYgKG5ld1BhZGRpbmcgIT0g
bV9iYXNlV3JhcHBlci0+c3R5bGUoKS0+cGFkZGluZ1RvcCgpKSB7DQogICAgICAgIG1fYmFzZVdy
YXBwZXItPnN0eWxlKCktPnNldFBhZGRpbmdUb3AobmV3UGFkZGluZyk7DQogICAgICAgIG5lZWRz
U2Vjb25kTGF5b3V0ID0gdHJ1ZTsNCiAgICB9DQoNCiAgICBuZXdQYWRkaW5nID0gTGVuZ3RoKGJv
dHRvbVBhZGRpbmcsIEZpeGVkKTsNCiAgICBpZiAobmV3UGFkZGluZyAhPSBtX2Jhc2VXcmFwcGVy
LT5zdHlsZSgpLT5wYWRkaW5nQm90dG9tKCkpIHsNCiAgICAgICAgbV9iYXNlV3JhcHBlci0+c3R5
bGUoKS0+c2V0UGFkZGluZ0JvdHRvbShuZXdQYWRkaW5nKTsNCiAgICAgICAgbmVlZHNTZWNvbmRM
YXlvdXQgPSB0cnVlOw0KICAgIH0NCg0KICAgaWYgKCFuZWVkc1NlY29uZExheW91dCkNCiAgICAg
ICAgcmV0dXJuOw0KDQogICAgc2V0TmVlZHNMYXlvdXQodHJ1ZSwgTWFya09ubHlUaGlzKTsNCiAg
ICBtX2Jhc2VXcmFwcGVyLT5zZXRDaGlsZE5lZWRzTGF5b3V0KHRydWUsIE1hcmtPbmx5VGhpcyk7
DQoNCiAgICBSZW5kZXJNYXRoTUxCbG9jazo6bGF5b3V0KCk7DQp9DQoNCmludCBSZW5kZXJNYXRo
TUxTY3JpcHRzOjpmaXJzdExpbmVCb3hCYXNlbGluZSgpIGNvbnN0DQp7DQogICAgaWYgKG1fYmFz
ZVdyYXBwZXIpIHsNCiAgICAgICAgTGF5b3V0VW5pdCBiYXNlbGluZSA9IG1fYmFzZVdyYXBwZXIt
PmZpcnN0TGluZUJveEJhc2VsaW5lKCk7DQogICAgICAgIGlmIChiYXNlbGluZSAhPSAtMSkNCiAg
ICAgICAgICAgcmV0dXJuIGJhc2VsaW5lOw0KICAgfQ0KICAgIHJldHVybiBSZW5kZXJNYXRoTUxC
bG9jazo6Zmlyc3RMaW5lQm94QmFzZWxpbmUoKTsNCn0NCg0KUmVuZGVyTWF0aE1MU2NyaXB0c1dy
YXBwZXIqIFJlbmRlck1hdGhNTFNjcmlwdHNXcmFwcGVyOjpjcmVhdGVBbm9ueW1vdXNXcmFwcGVy
KFJlbmRlck1hdGhNTFNjcmlwdHMqIHJlbmRlck9iamVjdCwgV3JhcHBlclR5cGUgdHlwZSkNCnsN
CiAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IG5ld1N0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZUFu
b255bW91c1N0eWxlV2l0aERpc3BsYXkocmVuZGVyT2JqZWN0LT5zdHlsZSgpLCBGTEVYKTsNCiAg
ICBSZW5kZXJNYXRoTUxTY3JpcHRzV3JhcHBlciogbmV3QmxvY2sgPSBuZXcgKHJlbmRlck9iamVj
dC0+cmVuZGVyQXJlbmEoKSkgUmVuZGVyTWF0aE1MU2NyaXB0c1dyYXBwZXIoMCwgdHlwZSk7DQog
ICAgbmV3QmxvY2stPnNldERvY3VtZW50Rm9yQW5vbnltb3VzKHJlbmRlck9iamVjdC0+ZG9jdW1l
bnQoKSk7DQogICAgbmV3QmxvY2stPnNldFN0eWxlKG5ld1N0eWxlLnJlbGVhc2UoKSk7DQogICAg
cmV0dXJuIG5ld0Jsb2NrOw0KfQ0KDQp2b2lkIFJlbmRlck1hdGhNTFNjcmlwdHNXcmFwcGVyOjph
ZGRDaGlsZEludGVybmFsKGJvb2wgbm9ybWFsSW5zZXJ0aW9uLCBSZW5kZXJPYmplY3QqIGNoaWxk
LCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkKQ0Kew0KICAgIGlmIChub3JtYWxJbnNlcnRpb24p
IHsNCiAgICAgICAgUmVuZGVyTWF0aE1MQmxvY2s6OmFkZENoaWxkKGNoaWxkLCBiZWZvcmVDaGls
ZCk7DQogICAgICAgIHJldHVybjsNCiAgICB9DQoNCiAgICBSZW5kZXJNYXRoTUxTY3JpcHRzKiBw
YXJlbnROb2RlID0gdG9SZW5kZXJNYXRoTUxTY3JpcHRzKHBhcmVudCgpKTsNCg0KICAgIGlmICht
X2tpbmQgPT0gQmFzZSkgew0KICAgICAgICBSZW5kZXJPYmplY3QqIHNpYmxpbmcgPSBuZXh0U2li
bGluZygpOw0KDQogICAgICAgIGlmICghaXNFbXB0eSgpICYmICFiZWZvcmVDaGlsZCkgew0KICAg
ICAgICAgICAgLy8gVGhpcyBpcyBsaWtlIGluc2VydGluZyB0aGUgY2hpbGQgYWZ0ZXIgdGhlIGJh
c2Ugd3JhcHBlci4NCiAgICAgICAgICAgIHBhcmVudE5vZGUtPmFkZENoaWxkSW50ZXJuYWwoZmFs
c2UsIHNpYmxpbmcpOw0KICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICB9DQoNCiAgICAgICAg
Ly8gVGhlIG9sZCBiYXNlIChpZiBhbnkpIGJlY29tZXMgYSBzY3JpcHQgOyB0aGUgbmV3IGNoaWxk
IGJlY29tZXMgZWl0aGVyIHRoZSBiYXNlIG9yIGFuIDxtcHJlc2NyaXB0cz4gc2VwYXJhdG9yLg0K
ICAgICAgICBSZW5kZXJPYmplY3QqIG9sZEJhc2UgPSBmaXJzdENoaWxkKCk7DQogICAgICAgIGlm
IChvbGRCYXNlKQ0KICAgICAgICAgICAgUmVuZGVyTWF0aE1MQmxvY2s6OnJlbW92ZUNoaWxkKG9s
ZEJhc2UpOw0KICAgICAgICBpZiAoaXNNUHJlc2NyaXB0cyhjaGlsZCkpDQogICAgICAgICAgICBw
YXJlbnROb2RlLT5hZGRDaGlsZEludGVybmFsKHRydWUsIGNoaWxkLCBzaWJsaW5nKTsNCiAgICAg
ICAgZWxzZQ0KICAgICAgICAgICAgUmVuZGVyTWF0aE1MQmxvY2s6OmFkZENoaWxkKGNoaWxkKTsN
CiAgICAgICAgaWYgKG9sZEJhc2UpDQogICAgICAgICAgICBwYXJlbnROb2RlLT5hZGRDaGlsZElu
dGVybmFsKGZhbHNlLCBvbGRCYXNlLCBzaWJsaW5nKTsNCiAgICAgICAgcmV0dXJuOw0KICAgIH0N
Cg0KICAgIGlmIChpc01QcmVzY3JpcHRzKGNoaWxkKSkgew0KICAgICAgICAvLyBXZSBpbnNlcnQg
YW4gPG1wcmVzY3JpcHRzPiBlbGVtZW50Lg0KICAgICAgIGlmICghYmVmb3JlQ2hpbGQpDQogICAg
ICAgICAgICBwYXJlbnROb2RlLT5hZGRDaGlsZEludGVybmFsKHRydWUsIGNoaWxkLCBuZXh0U2li
bGluZygpKTsNCiAgICAgICAgZWxzZSBpZiAoYmVmb3JlQ2hpbGQgPT0gZmlyc3RDaGlsZCgpKQ0K
ICAgICAgICAgICAgcGFyZW50Tm9kZS0+YWRkQ2hpbGRJbnRlcm5hbCh0cnVlLCBjaGlsZCwgdGhp
cyk7DQogICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgLy8gV2UgaW5zZXJ0IHRoZSA8bXByZXNj
cmlwdHM+IGluIHRoZSBtaWRkbGUgb2YgYSBzdWJTdXAgcGFpciBzbyB3ZSBtdXN0IHNwbGl0IHRo
YXQgcGFpci4NCiAgICAgICAgICAgIFJlbmRlck9iamVjdCogc2libGluZyA9IG5leHRTaWJsaW5n
KCk7DQogICAgICAgICAgICBwYXJlbnROb2RlLT5yZW1vdmVDaGlsZEludGVybmFsKHRydWUsIHRo
aXMpOw0KICAgICAgICAgICAgcGFyZW50Tm9kZS0+YWRkQ2hpbGRJbnRlcm5hbCh0cnVlLCBjaGls
ZCwgc2libGluZyk7DQoNCiAgICAgICAgICAgIFJlbmRlck9iamVjdCogc2NyaXB0ID0gZmlyc3RD
aGlsZCgpOw0KICAgICAgICAgICAgUmVuZGVyTWF0aE1MQmxvY2s6OnJlbW92ZUNoaWxkKHNjcmlw
dCk7DQogICAgICAgICAgICBwYXJlbnROb2RlLT5hZGRDaGlsZEludGVybmFsKGZhbHNlLCBzY3Jp
cHQsIGNoaWxkKTsNCg0KICAgICAgICAgICAgc2NyaXB0ID0gYmVmb3JlQ2hpbGQ7ICAgICAgICAg
ICAgDQogICAgICAgICAgIFJlbmRlck1hdGhNTEJsb2NrOjpyZW1vdmVDaGlsZChzY3JpcHQpOw0K
ICAgICAgICAgICAgcGFyZW50Tm9kZS0+YWRkQ2hpbGRJbnRlcm5hbChmYWxzZSwgc2NyaXB0LCBz
aWJsaW5nKTsNCiAgICAgICAgICAgIGRlc3Ryb3koKTsNCiAgICAgICAgfQ0KICAgICAgICByZXR1
cm47DQogICAgfQ0KDQogICAgLy8gV2UgZmlyc3QgbW92ZSB0byB0aGUgbGFzdCBzdWJTdXAgcGFp
ciBpbiB0aGUgY3VyZW50IHNlcXVlbmNlIG9mIHNjcmlwdHMuDQogICAgUmVuZGVyTWF0aE1MU2Ny
aXB0c1dyYXBwZXIqIHN1YlN1cFBhaXIgPSB0aGlzOw0KICAgIHdoaWxlIChzdWJTdXBQYWlyLT5u
ZXh0U2libGluZygpICYmICFpc01QcmVzY3JpcHRzKHN1YlN1cFBhaXItPm5leHRTaWJsaW5nKCkp
KQ0KICAgICAgICBzdWJTdXBQYWlyID0gdG9SZW5kZXJNYXRoTUxTY3JpcHRzV3JhcHBlcihzdWJT
dXBQYWlyLT5uZXh0U2libGluZygpKTsNCiAgICBpZiAoc3ViU3VwUGFpci0+Zmlyc3RDaGlsZCgp
LT5uZXh0U2libGluZygpKSB7DQogICAgICAgIC8vIFRoZSBsYXN0IHBhaXIgaGFzIHR3byBjaGls
ZHJlbiBzbyB3ZSBuZWVkIHRvIGNyZWF0ZSBhIG5ldyBwYWlyIHRvIGxlYXZlIHJvb20gZm9yIHRo
ZSBuZXcgY2hpbGQuDQogICAgICAgIFJlbmRlck1hdGhNTFNjcmlwdHNXcmFwcGVyKiBuZXdQYWly
ID0gY3JlYXRlQW5vbnltb3VzV3JhcHBlcihwYXJlbnROb2RlLCBSZW5kZXJNYXRoTUxTY3JpcHRz
V3JhcHBlcjo6U3ViU3VwUGFpcik7DQogICAgICAgIHBhcmVudE5vZGUtPmFkZENoaWxkSW50ZXJu
YWwodHJ1ZSwgbmV3UGFpciwgc3ViU3VwUGFpci0+bmV4dFNpYmxpbmcoKSk7DQogICAgICAgIHN1
YlN1cFBhaXIgPSBuZXdQYWlyOw0KICAgIH0NCiAgICANCiAgICAvLyBXZSBzaGlmdCB0aGUgc3Vj
Y2Vzc29ycyBpbiB0aGUgY3VycmVudCBzZXF1ZW5jZSBvZiBzY3JpcHRzLg0KICAgIGZvciAoUmVu
ZGVyT2JqZWN0KiBwcmV2aW91c1NpYmxpbmcgPSBzdWJTdXBQYWlyLT5wcmV2aW91c1NpYmxpbmco
KTsgc3ViU3VwUGFpciAhPSB0aGlzOyBzdWJTdXBQYWlyID0gdG9SZW5kZXJNYXRoTUxTY3JpcHRz
V3JhcHBlcihwcmV2aW91c1NpYmxpbmcpLCBwcmV2aW91c1NpYmxpbmcgPSBwcmV2aW91c1NpYmxp
bmctPnByZXZpb3VzU2libGluZygpKSB7DQogICAgICAgIFJlbmRlck1hdGhNTFNjcmlwdHNXcmFw
cGVyKiBwcmV2aW91c1N1YlN1cFBhaXIgPSB0b1JlbmRlck1hdGhNTFNjcmlwdHNXcmFwcGVyKHBy
ZXZpb3VzU2libGluZyk7DQogICAgICAgIFJlbmRlck9iamVjdCogc2NyaXB0ID0gcHJldmlvdXNT
dWJTdXBQYWlyLT5sYXN0Q2hpbGQoKTsNCiAgICAgICBwcmV2aW91c1N1YlN1cFBhaXItPnJlbW92
ZUNoaWxkSW50ZXJuYWwodHJ1ZSwgc2NyaXB0KTsNCiAgICAgICAgc3ViU3VwUGFpci0+YWRkQ2hp
bGRJbnRlcm5hbCh0cnVlLCBzY3JpcHQsIHN1YlN1cFBhaXItPmZpcnN0Q2hpbGQoKSk7DQogICAg
fQ0KDQogICAgLy8gVGhpcyBzdWJTdXAgcGFpciBub3cgY29udGFpbiBvbmUgZWxlbWVudCB3aGlj
aCBpcyBlaXRoZXIgYmVmb3JlQ2hpbGQgb3IgdGhlIHNjcmlwdCB0aGF0IHdhcyBiZWZvcmUuIEhl
bmNlIHdlIGNhbiBpbnNlcnQgdGhlIG5ldyBjaGlsZCBiZWZvcmUgb2YgYWZ0ZXIgdGhhdCBlbGVt
ZW50Lg0KICAgIFJlbmRlck1hdGhNTEJsb2NrOjphZGRDaGlsZChjaGlsZCwgZmlyc3RDaGlsZCgp
ID09IGJlZm9yZUNoaWxkID8gYmVmb3JlQ2hpbGQgOiAwKTsNCn0NCg0Kdm9pZCBSZW5kZXJNYXRo
TUxTY3JpcHRzV3JhcHBlcjo6YWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBjaGlsZCwgUmVuZGVyT2Jq
ZWN0KiBiZWZvcmVDaGlsZCkNCnsNCiAgICBSZW5kZXJNYXRoTUxTY3JpcHRzKiBwYXJlbnROb2Rl
ID0gdG9SZW5kZXJNYXRoTUxTY3JpcHRzKHBhcmVudCgpKTsNCg0KICAgIGFkZENoaWxkSW50ZXJu
YWwoZmFsc2UsIGNoaWxkLCBiZWZvcmVDaGlsZCk7DQoNCiAgICBwYXJlbnROb2RlLT5maXhBbm9u
eW1vdXNTdHlsZXMoKTsNCn0NCg0Kdm9pZCBSZW5kZXJNYXRoTUxTY3JpcHRzV3JhcHBlcjo6cmVt
b3ZlQ2hpbGRJbnRlcm5hbChib29sIG5vcm1hbFJlbW92YWwsIFJlbmRlck9iamVjdCogY2hpbGQp
DQp7DQogICAgaWYgKG5vcm1hbFJlbW92YWwpIHsNCiAgICAgICAgUmVuZGVyTWF0aE1MQmxvY2s6
OnJlbW92ZUNoaWxkKGNoaWxkKTsNCiAgICAgICAgcmV0dXJuOw0KICAgIH0NCg0KICAgIFJlbmRl
ck1hdGhNTFNjcmlwdHMqIHBhcmVudE5vZGUgPSB0b1JlbmRlck1hdGhNTFNjcmlwdHMocGFyZW50
KCkpOw0KDQogICAgaWYgKG1fa2luZCA9PSBCYXNlKSB7DQogICAgICAgIC8vIFdlIHJlbW92ZSB0
aGUgY2hpbGQgZnJvbSB0aGUgYmFzZSB3cmFwcGVyLg0KICAgICAgICBSZW5kZXJPYmplY3QqIHNp
YmxpbmcgPSBuZXh0U2libGluZygpOw0KICAgICAgIFJlbmRlck1hdGhNTEJsb2NrOjpyZW1vdmVD
aGlsZChjaGlsZCk7DQogICAgICAgIGlmIChzaWJsaW5nICYmICFpc01QcmVzY3JpcHRzKHNpYmxp
bmcpKSB7DQogICAgICAgICAgICAvLyBJZiB0aGVyZSBhcmUgcG9zdHNjcmlwdHMsIHRoZSBmaXJz
dCBvbmUgYmVjb21lcyB0aGUgYmFzZS4NCiAgICAgICAgICAgIFJlbmRlck1hdGhNTFNjcmlwdHNX
cmFwcGVyKiB3cmFwcGVyID0gdG9SZW5kZXJNYXRoTUxTY3JpcHRzV3JhcHBlcihzaWJsaW5nKTsN
CiAgICAgICAgICAgIFJlbmRlck9iamVjdCogc2NyaXB0ID0gd3JhcHBlci0+Zmlyc3RDaGlsZCgp
Ow0KICAgICAgICAgICAgd3JhcHBlci0+cmVtb3ZlQ2hpbGRJbnRlcm5hbChmYWxzZSwgc2NyaXB0
KTsNCiAgICAgICAgICAgIFJlbmRlck1hdGhNTEJsb2NrOjphZGRDaGlsZChzY3JpcHQpOw0KICAg
ICAgICB9DQogICAgICAgIHJldHVybjsNCiAgICB9DQoNCiAgICAvLyBXZSByZW1vdmUgdGhlIGNo
aWxkIGFuZCBzaGlmdCB0aGUgc3VjY2Vzc29ycyBpbiB0aGUgY3VycmVudCBzZXF1ZW5jZSBvZiBz
Y3JpcHRzLg0KICAgIFJlbmRlck1hdGhNTEJsb2NrOjpyZW1vdmVDaGlsZChjaGlsZCk7DQogICAg
UmVuZGVyTWF0aE1MU2NyaXB0c1dyYXBwZXIqIHN1YlN1cFBhaXIgPSB0aGlzOw0KICAgZm9yIChS
ZW5kZXJPYmplY3QqIG5leHRTaWJsaW5nID0gc3ViU3VwUGFpci0+bmV4dFNpYmxpbmcoKTsgbmV4
dFNpYmxpbmcgJiYgIWlzTVByZXNjcmlwdHMobmV4dFNpYmxpbmcpOyBzdWJTdXBQYWlyID0gdG9S
ZW5kZXJNYXRoTUxTY3JpcHRzV3JhcHBlcihuZXh0U2libGluZyksIG5leHRTaWJsaW5nID0gbmV4
dFNpYmxpbmctPm5leHRTaWJsaW5nKCkpIHsNCiAgICAgICBSZW5kZXJNYXRoTUxTY3JpcHRzV3Jh
cHBlciogbmV4dFN1YlN1cFBhaXIgPSB0b1JlbmRlck1hdGhNTFNjcmlwdHNXcmFwcGVyKG5leHRT
aWJsaW5nKTsNCiAgICAgICAgUmVuZGVyT2JqZWN0KiBzY3JpcHQgPSBuZXh0U3ViU3VwUGFpci0+
Zmlyc3RDaGlsZCgpOw0KICAgICAgIG5leHRTdWJTdXBQYWlyLT5yZW1vdmVDaGlsZEludGVybmFs
KHRydWUsIHNjcmlwdCk7DQogICAgICAgIHN1YlN1cFBhaXItPmFkZENoaWxkSW50ZXJuYWwodHJ1
ZSwgc2NyaXB0KTsNCiAgIH0NCiAgICANCiAgICAvLyBXZSByZW1vdmUgdGhlIGxhc3Qgc3ViU3Vw
IHBhaXIgaWYgaXQgYmVjYW1lIGVtcHR5Lg0KICAgIGlmIChzdWJTdXBQYWlyLT5pc0VtcHR5KCkp
IHsNCiAgICAgICBwYXJlbnROb2RlLT5yZW1vdmVDaGlsZEludGVybmFsKHRydWUsIHN1YlN1cFBh
aXIpOw0KICAgICAgICBzdWJTdXBQYWlyLT5kZXN0cm95KCk7DQogICAgfQ0KfQ0KDQp2b2lkIFJl
bmRlck1hdGhNTFNjcmlwdHNXcmFwcGVyOjpyZW1vdmVDaGlsZChSZW5kZXJPYmplY3QqIGNoaWxk
KQ0Kew0KICAgIGlmIChiZWluZ0Rlc3Ryb3llZCgpIHx8IGRvY3VtZW50QmVpbmdEZXN0cm95ZWQo
KSkgew0KICAgICAgICAvLyBUaGUgcmVuZGVyZXIgaXMgYmVpbmcgZGVzdHJveWVkIHNvIHdlIHJl
bW92ZSB0aGUgY2hpbGQgbm9ybWFsbHkuDQogICAgICAgIFJlbmRlck1hdGhNTEJsb2NrOjpyZW1v
dmVDaGlsZChjaGlsZCk7DQogICAgICAgIHJldHVybjsNCiAgICB9DQoNCiAgICBSZW5kZXJNYXRo
TUxTY3JpcHRzKiBwYXJlbnROb2RlID0gdG9SZW5kZXJNYXRoTUxTY3JpcHRzKHBhcmVudCgpKTsN
Cg0KICAgIHJlbW92ZUNoaWxkSW50ZXJuYWwoZmFsc2UsIGNoaWxkKTsNCiAgICBwYXJlbnROb2Rl
LT5maXhBbm9ueW1vdXNTdHlsZXMoKTsNCn0NCg0KfSAgICANCg0KI2VuZGlmIC8vIEVOQUJMRShN
QVRITUwp
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211752</attachid>
            <date>2013-09-16 03:27:41 -0700</date>
            <delta_ts>2013-09-16 08:25:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-120069-20130916155940.patch</filename>
            <type>text/plain</type>
            <size>7396</size>
            <attacher>gur.trio</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NTg0NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDEzLTA5LTE2ICBHdXJwcmVl
dCBLYXVyICA8ay5ndXJwcmVldEBzYW1zdW5nLmNvbT4KKworICAgICAgICBbTWF0aE1MXSBJbXBs
ZW1lbnQgdGhlIHN1YnNjcmlwdHNoaWZ0IGFuZCBzdXBlcnNjcmlwdHNoaWZ0IGF0dHJpYnV0ZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMDA2OQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIHN1
cHBvcnQgZm9yIHN1YnNjcmlwdHNoaWZ0IGFuZCBzdXBlcnNjcmlwdHNoaWZ0IGF0dHJpYnV0ZXMu
IFRoZQorICAgICAgICBzdWJzY3JpcHRzaGlmdCBhdHRyaWJ1dGUgaXMgZm9yIG1zdXAgZWxlbWVu
dCBhbmQgc3VwZXJzY3JpcHRzaGlmdCBmb3IgCisgICAgICAgIG1zdXAuIG1zdWJzdXAgY2FuIGhh
dmUgYm90aCBzdWJzY3JpcHRzaGlmdCBhbmQgc3VwZXJzY3JpcHRzaGlmdC4gVGhlCisgICAgICAg
IHN1YnNjcmlwdHNoaWZ0IGF0dHJpYnV0ZSBzcGVjaWZpZXMgdGhlIG1pbmltdW0gYW1vdW50IHRv
IHNoaWZ0IHRoZQorICAgICAgICBiYXNlbGluZSBvZiBzdWJzY3JpcHQgZG93bi4gVGhlIHN1cGVy
c2NyaXB0c2hpZnQgYXR0cmlidXRlIHNwZWNpZmllcworICAgICAgICB0aGUgbWluaW11bSBhbW91
bnQgdG8gc2hpZnQgdGhlIGJhc2VsaW5lIG9mIHN1cGVyc2NyaXB0IHVwLgorCisgICAgICAgIFRl
c3Q6IG1hdGhtbC9wcmVzZW50YXRpb24vc2NyaXB0LXN1YnNjcmlwdHNoaWZ0LXN1cGVyc2NyaXB0
c2hpZnQuaHRtbAorCisgICAgICAgICogbWF0aG1sL21hdGhhdHRycy5pbjoKKyAgICAgICAgQWRk
ZWQgdGhlIHN1YnNjcmlwdHNoaWZ0IGFuZCBzdXBlcnNjcmlwdHNoaWZ0IGF0dHJpYnV0ZXMuCisg
ICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFNjcmlwdHM6OmxheW91dCk6CisgICAgICAgIEZvciBh
bGlnbmluZyB0aGUgc3Vic2NyaXB0IGFuZCBzdXBlcnNjcmlwdCBwYWRkaW5nIGlzIGFkZGVkIHRv
IHRoZSBiYXNlLgorICAgICAgICBTbyBzdWJzY3JpcHRzaGlmdCBhbmQgc3VwZXJzY3JpcHRzaGlm
dCBhdHRyaWJ1dGVzIGlzIHNldCBhcyBwYWRkaW5nIGJvdHRvbQorICAgICAgICBhbmQgcGFkZGlu
ZyB0b3Agb2YgYmFzZSByZXNwZWN0aXZlbHkuIAorCiAyMDEzLTA5LTE1ICBBbmRyZWFzIEtsaW5n
ICA8YWtsaW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBDVFRFOiBSZW5kZXJDb21iaW5lVGV4dCBh
bHdheXMgaGFzIGEgVGV4dCBub2RlLgpJbmRleDogU291cmNlL1dlYkNvcmUvbWF0aG1sL21hdGhh
dHRycy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9tYXRobWwvbWF0aGF0dHJzLmlu
CShyZXZpc2lvbiAxNTU4MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9tYXRobWwvbWF0aGF0dHJzLmlu
CSh3b3JraW5nIGNvcHkpCkBAIC0yNyw0ICsyNyw2IEBAIG9wZW4KIHJvd3NwYW4KIHNlcGFyYXRv
cnMKIHN0cmV0Y2h5CitzdWJzY3JpcHRzaGlmdAorc3VwZXJzY3JpcHRzaGlmdAogd2lkdGgKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxTY3JpcHRzLmNwcAkocmV2aXNpb24gMTU1ODMyKQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
Mjk0LDYgKzI5NCwxMiBAQCB2b2lkIFJlbmRlck1hdGhNTFNjcmlwdHM6OmxheW91dCgpCiAgICAg
TGF5b3V0VW5pdCB0b3BQYWRkaW5nID0gMDsKICAgICBMYXlvdXRVbml0IGJvdHRvbVBhZGRpbmcg
PSAwOwogCisgICAgRWxlbWVudCogc2NyaXB0RWxlbWVudCA9IGVsZW1lbnQoKTsKKyAgICBpZiAo
bV9raW5kID09IFN1YiB8fCBtX2tpbmQgPT0gU3ViU3VwKQorICAgICAgICBwYXJzZU1hdGhNTExl
bmd0aChzY3JpcHRFbGVtZW50LT5nZXRBdHRyaWJ1dGUoTWF0aE1MTmFtZXM6OnN1YnNjcmlwdHNo
aWZ0QXR0ciksIGJvdHRvbVBhZGRpbmcsIHN0eWxlKCkpOworICAgIGlmIChtX2tpbmQgPT0gU3Vw
ZXIgfHwgbV9raW5kID09IFN1YlN1cCkKKyAgICAgICAgcGFyc2VNYXRoTUxMZW5ndGgoc2NyaXB0
RWxlbWVudC0+Z2V0QXR0cmlidXRlKE1hdGhNTE5hbWVzOjpzdXBlcnNjcmlwdHNoaWZ0QXR0ciks
IHRvcFBhZGRpbmcsIHN0eWxlKCkpOworCiAgICAgYm9vbCBpc1Bvc3RTY3JpcHQgPSB0cnVlOwog
ICAgIFJlbmRlck1hdGhNTEJsb2NrKiBzdWJTdXBQYWlyID0gdG9SZW5kZXJNYXRoTUxCbG9jayht
X2Jhc2VXcmFwcGVyLT5uZXh0U2libGluZygpKTsKICAgICBmb3IgKDsgc3ViU3VwUGFpcjsgc3Vi
U3VwUGFpciA9IHRvUmVuZGVyTWF0aE1MQmxvY2soc3ViU3VwUGFpci0+bmV4dFNpYmxpbmcoKSkp
IHsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NTg0NykKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDEzLTA5LTE2ICBHdXJwcmVldCBLYXVy
ICA8ay5ndXJwcmVldEBzYW1zdW5nLmNvbT4KKworICAgICAgICBbTWF0aE1MXSBJbXBsZW1lbnQg
dGhlIHN1YnNjcmlwdHNoaWZ0IGFuZCBzdXBlcnNjcmlwdHNoaWZ0IGF0dHJpYnV0ZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMDA2OQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogbWF0aG1sL3ByZXNl
bnRhdGlvbi9zY3JpcHQtc3Vic2NyaXB0c2hpZnQtc3VwZXJzY3JpcHRzaGlmdC1leHBlY3RlZC1t
aXNtYXRjaC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBtYXRobWwvcHJlc2VudGF0aW9uL3Njcmlw
dC1zdWJzY3JpcHRzaGlmdC1zdXBlcnNjcmlwdHNoaWZ0Lmh0bWw6IEFkZGVkLgorICAgICAgICBB
ZGRlZCBuZXcgdGVzdHMgZm9yIHZlcmlmeWluZyB0aGF0IHN1YnNjcmlwdHNoaWZ0IGFuZCBzdXBl
cnNjcmlwdHNoaWZ0IGFyZQorICAgICAgICBiZWluZyBhcHBsaWVkIHByb3Blcmx5IHRvIHRoZSBi
YXNlLgorCiAyMDEzLTA5LTE2ICBXb2pjaWVjaCBCaWVsYXdza2kgIDx3LmJpZWxhd3NraUBzYW1z
dW5nLmNvbT4KIAogICAgICAgICBbV0tUUl0gQWRkIGltcGxlbWVudGF0aW9uIG9mIGNsaWNrKCkg
bWV0aG9kIG9mIG9iamVjdHMgcmV0dXJuZWQgYnkgZXZlbnRTZW5kZXIuY29udGV4dENsaWNrKCku
CkluZGV4OiBMYXlvdXRUZXN0cy9tYXRobWwvcHJlc2VudGF0aW9uL3NjcmlwdC1zdWJzY3JpcHRz
aGlmdC1zdXBlcnNjcmlwdHNoaWZ0LWV4cGVjdGVkLW1pc21hdGNoLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvbWF0aG1sL3ByZXNlbnRhdGlvbi9zY3JpcHQtc3Vic2NyaXB0c2hpZnQt
c3VwZXJzY3JpcHRzaGlmdC1leHBlY3RlZC1taXNtYXRjaC5odG1sCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvbWF0aG1sL3ByZXNlbnRhdGlvbi9zY3JpcHQtc3Vic2NyaXB0c2hpZnQtc3Vw
ZXJzY3JpcHRzaGlmdC1leHBlY3RlZC1taXNtYXRjaC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMjcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAg
IDx0aXRsZT5zdWJzY3JpcHRzaGlmdCBzdXBlcnNjcmlwdHNoaWZ0IDwvdGl0bGU+CisgICAgICAg
IDxtZXRhIGNoYXJzZXQ9InV0Zi04Ii8+CisgICAgPC9oZWFkPgorICAgIDxib2R5PgorCisgICAg
ICAgIDxtYXRoIHhtbG5zOm1tbD0iaHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCI+
CisgICAgICAgICAgICA8bXN1Yj4KKyAgICAgICAgICAgICAgICA8bXNwYWNlIHdpZHRoPSI1MHB4
IiBoZWlnaHQ9IjUwcHgiIG1hdGhiYWNrZ3JvdW5kPSJncmVlbiIvPgorICAgICAgICAgICAgICAg
IDxtc3BhY2Ugd2lkdGg9IjUwcHgiIGhlaWdodD0iNTBweCIgbWF0aGJhY2tncm91bmQ9ImJsdWUi
Lz4gICAKKyAgICAgICAgICAgIDwvbXN1Yj4KKworCQkgICAgPG1zdXA+CisgICAgICAgICAgICAg
ICAgPG1zcGFjZSB3aWR0aD0iNTBweCIgaGVpZ2h0PSI1MHB4IiBtYXRoYmFja2dyb3VuZD0iZ3Jl
ZW4iLz4KKyAgICAgICAgICAgICAgICA8bXNwYWNlIHdpZHRoPSI1MHB4IiBoZWlnaHQ9IjUwcHgi
IG1hdGhiYWNrZ3JvdW5kPSJyZWQiLz4KKyAgICAgICAgICAgIDwvbXN1cD4KKworCQkgICAgPG1z
dWJzdXA+CisgICAgICAgICAgICAgICAgPG1zcGFjZSB3aWR0aD0iNTBweCIgaGVpZ2h0PSI1MHB4
IiBtYXRoYmFja2dyb3VuZD0iZ3JlZW4iLz4KKyAgICAgICAgICAgICAgICA8bXNwYWNlIHdpZHRo
PSI1MHB4IiBoZWlnaHQ9IjUwcHgiIG1hdGhiYWNrZ3JvdW5kPSJibHVlIi8+CisgICAgICAgICAg
ICAgICAgPG1zcGFjZSB3aWR0aD0iNTBweCIgaGVpZ2h0PSI1MHB4IiBtYXRoYmFja2dyb3VuZD0i
cmVkIi8+CisgICAgICAgICAgICA8L21zdWJzdXA+CisgICAgICAgIDwvbWF0aD4KKyAgICA8L2Jv
ZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQoKUHJvcGVydHkgY2hhbmdl
cyBvbjogTGF5b3V0VGVzdHMvbWF0aG1sL3ByZXNlbnRhdGlvbi9zY3JpcHQtc3Vic2NyaXB0c2hp
ZnQtc3VwZXJzY3JpcHRzaGlmdC1leHBlY3RlZC1taXNtYXRjaC5odG1sCl9fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRk
ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTAsMCArMSAjIworbmF0aXZlClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgcHJvcGVydHkKQWRkZWQ6IHN2bjpleGVjdXRhYmxlCiMjIC0wLDAgKzEgIyMKKyoKXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogTGF5b3V0VGVzdHMvbWF0aG1sL3By
ZXNlbnRhdGlvbi9zY3JpcHQtc3Vic2NyaXB0c2hpZnQtc3VwZXJzY3JpcHRzaGlmdC5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL21hdGhtbC9wcmVzZW50YXRpb24vc2NyaXB0LXN1YnNj
cmlwdHNoaWZ0LXN1cGVyc2NyaXB0c2hpZnQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL21hdGhtbC9wcmVzZW50YXRpb24vc2NyaXB0LXN1YnNjcmlwdHNoaWZ0LXN1cGVyc2NyaXB0
c2hpZnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI5IEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8dGl0bGU+c3Vic2NyaXB0c2hpZnQgc3Vw
ZXJzY3JpcHRzaGlmdCA8L3RpdGxlPgorICAgICAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCIvPgor
ICAgIDwvaGVhZD4KKyAgICA8Ym9keT4KKyAgICAgICAgPCEtLSBUaGUgYmx1ZSByZWN0YW5nbGUg
c2hvdWxkIGJlIGF0IHNvbWUgZGlzdGFuY2UgZnJvbSB0aGUgY2VudGVyIG9mIHRoZSBncmVlbiBy
ZWN0YW5nbGUtLT4KKyAgICAgICAgPG1hdGggeG1sbnM6bW1sPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk4L01hdGgvTWF0aE1MIj4KKyAgICAgICAgICAgIDxtc3ViIHN1YnNjcmlwdHNoaWZ0PSI1MHB4
Ij4KKyAgICAgICAgICAgICAgICA8bXNwYWNlIHdpZHRoPSI1MHB4IiBoZWlnaHQ9IjUwcHgiIG1h
dGhiYWNrZ3JvdW5kPSJncmVlbiIvPgorICAgICAgICAgICAgICAgIDxtc3BhY2Ugd2lkdGg9IjUw
cHgiIGhlaWdodD0iNTBweCIgbWF0aGJhY2tncm91bmQ9ImJsdWUiLz4KKyAgICAgICAgICAgIDwv
bXN1Yj4KKworICAgICAgICA8IS0tIFRoZSByZWQgcmVjdGFuZ2xlIHNob3VsZCBiZSBhdCBzb21l
IGRpc3RhbmNlIGZyb20gdGhlIGNlbnRlciBvZiB0aGUgZ3JlZW4gcmVjdGFuZ2xlLS0+CisJCSAg
ICA8bXN1cCBzdXBlcnNjcmlwdHNoaWZ0PSI1MHB4Ij4KKyAgICAgICAgICAgICAgICA8bXNwYWNl
IHdpZHRoPSI1MHB4IiBoZWlnaHQ9IjUwcHgiIG1hdGhiYWNrZ3JvdW5kPSJncmVlbiIvPgorICAg
ICAgICAgICAgICAgIDxtc3BhY2Ugd2lkdGg9IjUwcHgiIGhlaWdodD0iNTBweCIgbWF0aGJhY2tn
cm91bmQ9InJlZCIvPgorICAgICAgICAgICAgPC9tc3VwPgorCisgICAgICAgIDwhLS0gVGhlIHJl
ZCBhbmQgYmx1ZSByZWN0YW5nbGUgc2hvdWxkIGJlIGF0IHNvbWUgZGlzdGFuY2UgdGhlIGZyb20g
Y2VudGVyIG9mIHRoZSBncmVlbiByZWN0YW5nbGUtLT4KKwkJICAgIDxtc3Vic3VwIHN1cGVyc2Ny
aXB0c2hpZnQ9IjUwcHgiIHN1YnNjcmlwdHNoaWZ0PSI1MHB4Ij4KKyAgICAgICAgICAgICAgICA8
bXNwYWNlIHdpZHRoPSI1MHB4IiBoZWlnaHQ9IjUwcHgiIG1hdGhiYWNrZ3JvdW5kPSJncmVlbiIv
PgorICAgICAgICAgICAgICAgIDxtc3BhY2Ugd2lkdGg9IjUwcHgiIGhlaWdodD0iNTBweCIgbWF0
aGJhY2tncm91bmQ9ImJsdWUiLz4KKyAgICAgICAgICAgICAgICA8bXNwYWNlIHdpZHRoPSI1MHB4
IiBoZWlnaHQ9IjUwcHgiIG1hdGhiYWNrZ3JvdW5kPSJyZWQiLz4KKyAgICAgICAgICAgIDwvbXN1
YnN1cD4KKyAgICAgICAgPC9tYXRoPgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9tYXRobWwv
cHJlc2VudGF0aW9uL3NjcmlwdC1zdWJzY3JpcHRzaGlmdC1zdXBlcnNjcmlwdHNoaWZ0Lmh0bWwK
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMCwwICsxICMjCituYXRpdmUKXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpBZGRlZDogc3ZuOmV4ZWN1dGFibGUKIyMgLTAs
MCArMSAjIworKgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211786</attachid>
            <date>2013-09-16 08:25:15 -0700</date>
            <delta_ts>2013-09-17 05:16:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-120069-20130916205713.patch</filename>
            <type>text/plain</type>
            <size>16193</size>
            <attacher>gur.trio</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NTg1NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDEzLTA5LTE2ICBHdXJwcmVl
dCBLYXVyICA8ay5ndXJwcmVldEBzYW1zdW5nLmNvbT4KKworICAgICAgICBbTWF0aE1MXSBJbXBs
ZW1lbnQgdGhlIHN1YnNjcmlwdHNoaWZ0IGFuZCBzdXBlcnNjcmlwdHNoaWZ0IGF0dHJpYnV0ZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMDA2OQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIHN1
cHBvcnQgZm9yIHN1YnNjcmlwdHNoaWZ0IGFuZCBzdXBlcnNjcmlwdHNoaWZ0IGF0dHJpYnV0ZXMu
IFRoZQorICAgICAgICBzdWJzY3JpcHRzaGlmdCBhdHRyaWJ1dGUgaXMgZm9yIG1zdXAgZWxlbWVu
dCBhbmQgc3VwZXJzY3JpcHRzaGlmdCBmb3IgCisgICAgICAgIG1zdXAuIG1zdWJzdXAgY2FuIGhh
dmUgYm90aCBzdWJzY3JpcHRzaGlmdCBhbmQgc3VwZXJzY3JpcHRzaGlmdC4gVGhlCisgICAgICAg
IHN1YnNjcmlwdHNoaWZ0IGF0dHJpYnV0ZSBzcGVjaWZpZXMgdGhlIG1pbmltdW0gYW1vdW50IHRv
IHNoaWZ0IHRoZQorICAgICAgICBiYXNlbGluZSBvZiBzdWJzY3JpcHQgZG93bi4gVGhlIHN1cGVy
c2NyaXB0c2hpZnQgYXR0cmlidXRlIHNwZWNpZmllcworICAgICAgICB0aGUgbWluaW11bSBhbW91
bnQgdG8gc2hpZnQgdGhlIGJhc2VsaW5lIG9mIHN1cGVyc2NyaXB0IHVwLgorCisgICAgICAgIFRl
c3RzOiBtYXRobWwvcHJlc2VudGF0aW9uL21zdWItc3Vic2NyaXB0c2hpZnQuaHRtbAorICAgICAg
ICAgICAgICAgbWF0aG1sL3ByZXNlbnRhdGlvbi9tc3Vic3VwLXN1cGVyc2NyaXB0c2hpZnQtc3Vi
c2NyaXB0c2hpZnQuaHRtbAorICAgICAgICAgICAgICAgbWF0aG1sL3ByZXNlbnRhdGlvbi9tc3Vw
LXN1cGVyc2NyaXB0c2hpZnQuaHRtbAorICAgICAgICAgICAgICAgbWF0aG1sL3ByZXNlbnRhdGlv
bi9tdWx0aXNjcmlwdHMtc3Vic2NyaXB0c2hpZnQtc3VwZXJzY3JpcHRzaGlmdC5odG1sCisKKyAg
ICAgICAgKiBtYXRobWwvbWF0aGF0dHJzLmluOgorICAgICAgICBBZGRlZCB0aGUgc3Vic2NyaXB0
c2hpZnQgYW5kIHN1cGVyc2NyaXB0c2hpZnQgYXR0cmlidXRlcy4KKyAgICAgICAgKiByZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTWF0aE1MU2NyaXB0czo6bGF5b3V0KToKKyAgICAgICAgRm9yIGFsaWduaW5nIHRoZSBzdWJz
Y3JpcHQgYW5kIHN1cGVyc2NyaXB0IHBhZGRpbmcgaXMgYWRkZWQgdG8gdGhlIGJhc2UuCisgICAg
ICAgIFNvIHN1YnNjcmlwdHNoaWZ0IGFuZCBzdXBlcnNjcmlwdHNoaWZ0IGF0dHJpYnV0ZXMgaXMg
c2V0IGFzIHBhZGRpbmcgYm90dG9tCisgICAgICAgIGFuZCBwYWRkaW5nIHRvcCBvZiBiYXNlIHJl
c3BlY3RpdmVseS4KKwogMjAxMy0wOS0xNiAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE1NTg1MS4KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL21hdGhtbC9tYXRoYXR0cnMuaW4KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvbWF0aG1sL21hdGhhdHRycy5pbgkocmV2aXNpb24gMTU1ODMyKQorKysgU291
cmNlL1dlYkNvcmUvbWF0aG1sL21hdGhhdHRycy5pbgkod29ya2luZyBjb3B5KQpAQCAtMjcsNCAr
MjcsNiBAQCBvcGVuCiByb3dzcGFuCiBzZXBhcmF0b3JzCiBzdHJldGNoeQorc3Vic2NyaXB0c2hp
ZnQKK3N1cGVyc2NyaXB0c2hpZnQKIHdpZHRoCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5jcHAJKHJldmlzaW9u
IDE1NTgzMikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
U2NyaXB0cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3Nyw5ICsyNzcsNiBAQCB2b2lkIFJlbmRl
ck1hdGhNTFNjcmlwdHM6OmxheW91dCgpCiAgICAgLy8gT3VyIGxheW91dCBydWxlcyBpbmNsdWRl
OiBEb24ndCBsZXQgdGhlIHN1cGVyc2NyaXB0IGdvIGJlbG93IHRoZSAiYXhpcyIgKGhhbGYgeC1o
ZWlnaHQgYWJvdmUgdGhlCiAgICAgLy8gYmFzZWxpbmUpLCBvciB0aGUgc3Vic2NyaXB0IGFib3Zl
IHRoZSBheGlzLiBBbHNvLCBkb24ndCBsZXQgdGhlIHN1cGVyc2NyaXB0J3MgdG9wIGVkZ2UgYmUK
ICAgICAvLyBiZWxvdyB0aGUgYmFzZSdzIHRvcCBlZGdlLCBvciB0aGUgc3Vic2NyaXB0J3MgYm90
dG9tIGVkZ2UgYWJvdmUgdGhlIGJhc2UncyBib3R0b20gZWRnZS4KLSAgICAvLwotICAgIC8vIEZJ
WE1FOiBDaGVjayBhbnkgc3Vic2NyaXB0c2hpZnQgb3Igc3VwZXJzY3JpcHRzaGlmdCBhdHRyaWJ1
dGVzLCBhbmQgbWF5YmUgdXNlIG1vcmUgc29waGlzdGljYXRlZAotICAgIC8vIGhldXJpc3RpY3Mg
ZnJvbSBUZVggb3IgZWxzZXdoZXJlLiBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTc5Mjc0I2M1LgogCiAgICAgTGF5b3V0VW5pdCBiYXNlSGVpZ2h0ID0gYmFzZS0+
bG9naWNhbEhlaWdodCgpOwogICAgIExheW91dFVuaXQgYmFzZUJhc2VsaW5lID0gYmFzZS0+Zmly
c3RMaW5lQm94QmFzZWxpbmUoKTsKQEAgLTI5NCw2ICsyOTEsMTQgQEAgdm9pZCBSZW5kZXJNYXRo
TUxTY3JpcHRzOjpsYXlvdXQoKQogICAgIExheW91dFVuaXQgdG9wUGFkZGluZyA9IDA7CiAgICAg
TGF5b3V0VW5pdCBib3R0b21QYWRkaW5nID0gMDsKIAorICAgIEVsZW1lbnQqIHNjcmlwdEVsZW1l
bnQgPSBlbGVtZW50KCk7CisgICAgTGF5b3V0VW5pdCBzdXBlclNjcmlwdFNoaWZ0VmFsdWUgPSAw
OworICAgIExheW91dFVuaXQgc3ViU2NyaXB0U2hpZnRWYWx1ZSA9IDA7CisgICAgaWYgKG1fa2lu
ZCA9PSBTdWIgfHwgbV9raW5kID09IFN1YlN1cCB8fCBtX2tpbmQgPT0gTXVsdGlzY3JpcHRzKQor
ICAgICAgICBwYXJzZU1hdGhNTExlbmd0aChzY3JpcHRFbGVtZW50LT5nZXRBdHRyaWJ1dGUoTWF0
aE1MTmFtZXM6OnN1YnNjcmlwdHNoaWZ0QXR0ciksIHN1YlNjcmlwdFNoaWZ0VmFsdWUsIHN0eWxl
KCksIGZhbHNlKTsKKyAgICBpZiAobV9raW5kID09IFN1cGVyIHx8IG1fa2luZCA9PSBTdWJTdXAg
fHwgbV9raW5kID09IE11bHRpc2NyaXB0cykKKyAgICAgICAgcGFyc2VNYXRoTUxMZW5ndGgoc2Ny
aXB0RWxlbWVudC0+Z2V0QXR0cmlidXRlKE1hdGhNTE5hbWVzOjpzdXBlcnNjcmlwdHNoaWZ0QXR0
ciksIHN1cGVyU2NyaXB0U2hpZnRWYWx1ZSwgc3R5bGUoKSwgZmFsc2UpOworCiAgICAgYm9vbCBp
c1Bvc3RTY3JpcHQgPSB0cnVlOwogICAgIFJlbmRlck1hdGhNTEJsb2NrKiBzdWJTdXBQYWlyID0g
dG9SZW5kZXJNYXRoTUxCbG9jayhtX2Jhc2VXcmFwcGVyLT5uZXh0U2libGluZygpKTsKICAgICBm
b3IgKDsgc3ViU3VwUGFpcjsgc3ViU3VwUGFpciA9IHRvUmVuZGVyTWF0aE1MQmxvY2soc3ViU3Vw
UGFpci0+bmV4dFNpYmxpbmcoKSkpIHsKQEAgLTMxMSw3ICszMTYsNyBAQCB2b2lkIFJlbmRlck1h
dGhNTFNjcmlwdHM6OmxheW91dCgpCiAgICAgICAgICAgICBMYXlvdXRVbml0IHN1cGVyc2NyaXB0
QmFzZWxpbmUgPSBzdXBlcnNjcmlwdC0+Zmlyc3RMaW5lQm94QmFzZWxpbmUoKTsKICAgICAgICAg
ICAgIGlmIChzdXBlcnNjcmlwdEJhc2VsaW5lID09IC0xKQogICAgICAgICAgICAgICAgIHN1cGVy
c2NyaXB0QmFzZWxpbmUgPSBzdXBlcnNjcmlwdEhlaWdodDsKLSAgICAgICAgICAgIExheW91dFVu
aXQgbWluQmFzZWxpbmUgPSBtYXg8TGF5b3V0VW5pdD4oZm9udFNpemUgLyAzICsgMSArIHN1cGVy
c2NyaXB0QmFzZWxpbmUsIHN1cGVyc2NyaXB0SGVpZ2h0ICsgYXhpcyk7CisgICAgICAgICAgICBM
YXlvdXRVbml0IG1pbkJhc2VsaW5lID0gbWF4PExheW91dFVuaXQ+KGZvbnRTaXplIC8gMyArIDEg
KyBzdXBlcnNjcmlwdEJhc2VsaW5lLCBzdXBlcnNjcmlwdEhlaWdodCArIGF4aXMgKyBzdXBlclNj
cmlwdFNoaWZ0VmFsdWUpOwogCiAgICAgICAgICAgICB0b3BQYWRkaW5nID0gbWF4PExheW91dFVu
aXQ+KHRvcFBhZGRpbmcsIG1pbkJhc2VsaW5lIC0gYmFzZUJhc2VsaW5lKTsKICAgICAgICAgfQpA
QCAtMzIzLDcgKzMyOCw3IEBAIHZvaWQgUmVuZGVyTWF0aE1MU2NyaXB0czo6bGF5b3V0KCkKICAg
ICAgICAgICAgICAgICBzdWJzY3JpcHRCYXNlbGluZSA9IHN1YnNjcmlwdEhlaWdodDsKICAgICAg
ICAgICAgIExheW91dFVuaXQgYmFzZUV4dGVuZFVuZGVyQmFzZWxpbmUgPSBiYXNlSGVpZ2h0IC0g
YmFzZUJhc2VsaW5lOwogICAgICAgICAgICAgTGF5b3V0VW5pdCBzdWJzY3JpcHRVbmRlckl0c0Jh
c2VsaW5lID0gc3Vic2NyaXB0SGVpZ2h0IC0gc3Vic2NyaXB0QmFzZWxpbmU7Ci0gICAgICAgICAg
ICBMYXlvdXRVbml0IG1pbkV4dGVuZFVuZGVyQmFzZWxpbmUgPSBtYXg8TGF5b3V0VW5pdD4oZm9u
dFNpemUgLyA1ICsgMSArIHN1YnNjcmlwdFVuZGVySXRzQmFzZWxpbmUsIHN1YnNjcmlwdEhlaWdo
dCAtIGF4aXMpOworICAgICAgICAgICAgTGF5b3V0VW5pdCBtaW5FeHRlbmRVbmRlckJhc2VsaW5l
ID0gbWF4PExheW91dFVuaXQ+KGZvbnRTaXplIC8gNSArIDEgKyBzdWJzY3JpcHRVbmRlckl0c0Jh
c2VsaW5lLCBzdWJzY3JpcHRIZWlnaHQgKyBzdWJTY3JpcHRTaGlmdFZhbHVlIC0gYXhpcyk7CiAK
ICAgICAgICAgICAgIGJvdHRvbVBhZGRpbmcgPSBtYXg8TGF5b3V0VW5pdD4oYm90dG9tUGFkZGlu
ZywgbWluRXh0ZW5kVW5kZXJCYXNlbGluZSAtIGJhc2VFeHRlbmRVbmRlckJhc2VsaW5lKTsKICAg
ICAgICAgfQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTU1ODU0KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTMtMDktMTYgIEd1cnByZWV0
IEthdXIgIDxrLmd1cnByZWV0QHNhbXN1bmcuY29tPgorCisgICAgICAgIFtNYXRoTUxdIEltcGxl
bWVudCB0aGUgc3Vic2NyaXB0c2hpZnQgYW5kIHN1cGVyc2NyaXB0c2hpZnQgYXR0cmlidXRlcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIwMDY5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBtYXRobWwv
cHJlc2VudGF0aW9uL21zdWItc3Vic2NyaXB0c2hpZnQtZXhwZWN0ZWQtbWlzbWF0Y2guaHRtbDog
QWRkZWQuCisgICAgICAgICogbWF0aG1sL3ByZXNlbnRhdGlvbi9tc3ViLXN1YnNjcmlwdHNoaWZ0
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIG1hdGhtbC9wcmVzZW50YXRpb24vbXN1YnN1cC1zdXBl
cnNjcmlwdHNoaWZ0LXN1YnNjcmlwdHNoaWZ0LWV4cGVjdGVkLW1pc21hdGNoLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIG1hdGhtbC9wcmVzZW50YXRpb24vbXN1YnN1cC1zdXBlcnNjcmlwdHNoaWZ0
LXN1YnNjcmlwdHNoaWZ0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIG1hdGhtbC9wcmVzZW50YXRp
b24vbXN1cC1zdXBlcnNjcmlwdHNoaWZ0LWV4cGVjdGVkLW1pc21hdGNoLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIG1hdGhtbC9wcmVzZW50YXRpb24vbXN1cC1zdXBlcnNjcmlwdHNoaWZ0Lmh0bWw6
IEFkZGVkLgorICAgICAgICAqIG1hdGhtbC9wcmVzZW50YXRpb24vbXVsdGlzY3JpcHRzLXN1YnNj
cmlwdHNoaWZ0LXN1cGVyc2NyaXB0c2hpZnQtZXhwZWN0ZWQtbWlzbWF0Y2guaHRtbDogQWRkZWQu
CisgICAgICAgICogbWF0aG1sL3ByZXNlbnRhdGlvbi9tdWx0aXNjcmlwdHMtc3Vic2NyaXB0c2hp
ZnQtc3VwZXJzY3JpcHRzaGlmdC5odG1sOiBBZGRlZC4KKyAgICAgICAgQWRkZWQgbmV3IHRlc3Rz
IGZvciB2ZXJpZnlpbmcgdGhhdCBzdWJzY3JpcHRzaGlmdCBhbmQgc3VwZXJzY3JpcHRzaGlmdCBh
cmUKKyAgICAgICAgYmVpbmcgYXBwbGllZCBwcm9wZXJseSB0byB0aGUgYmFzZS4KKwogMjAxMy0w
OS0xNiAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
VW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE1NTg1MS4KSW5kZXg6IExheW91dFRlc3RzL21hdGht
bC9wcmVzZW50YXRpb24vbXN1Yi1zdWJzY3JpcHRzaGlmdC1leHBlY3RlZC1taXNtYXRjaC5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21hdGhtbC9wcmVzZW50YXRpb24vbXN1Yi1zdWJz
Y3JpcHRzaGlmdC1leHBlY3RlZC1taXNtYXRjaC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvbWF0aG1sL3ByZXNlbnRhdGlvbi9tc3ViLXN1YnNjcmlwdHNoaWZ0LWV4cGVjdGVkLW1p
c21hdGNoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNCBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHRpdGxlPm1zdWIgc3Vic2NyaXB0c2hp
ZnQ8L3RpdGxlPgorICAgIDwvaGVhZD4KKyAgICA8Ym9keT4KKyAgICAgICAgPG1hdGg+CisgICAg
ICAgICAgICA8bXN1Yj4KKyAgICAgICAgICAgICAgICA8bXNwYWNlIHdpZHRoPSI1MHB4IiBoZWln
aHQ9IjUwcHgiIG1hdGhiYWNrZ3JvdW5kPSJncmVlbiIvPgorICAgICAgICAgICAgICAgIDxtc3Bh
Y2Ugd2lkdGg9IjUwcHgiIGhlaWdodD0iNTBweCIgbWF0aGJhY2tncm91bmQ9ImJsdWUiLz4KKyAg
ICAgICAgICAgIDwvbXN1Yj4KKyAgICAgICAgPC9tYXRoPgorICAgIDwvYm9keT4KKzwvaHRtbD4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRU
ZXN0cy9tYXRobWwvcHJlc2VudGF0aW9uL21zdWItc3Vic2NyaXB0c2hpZnQtZXhwZWN0ZWQtbWlz
bWF0Y2guaHRtbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0wLDAgKzEgIyMK
K25hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkFkZGVkOiBzdm46ZXhlY3V0
YWJsZQojIyAtMCwwICsxICMjCisqClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5k
ZXg6IExheW91dFRlc3RzL21hdGhtbC9wcmVzZW50YXRpb24vbXN1Yi1zdWJzY3JpcHRzaGlmdC5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21hdGhtbC9wcmVzZW50YXRpb24vbXN1Yi1z
dWJzY3JpcHRzaGlmdC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvbWF0aG1sL3By
ZXNlbnRhdGlvbi9tc3ViLXN1YnNjcmlwdHNoaWZ0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwxNSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAg
PHRpdGxlPm1zdWIgc3Vic2NyaXB0c2hpZnQ8L3RpdGxlPgorICAgIDwvaGVhZD4KKyAgICA8Ym9k
eT4KKyAgICAgICAgPCEtLSBUaGUgYmx1ZSByZWN0YW5nbGUgc2hvdWxkIGJlIGF0IHNvbWUgZGlz
dGFuY2UgZnJvbSB0aGUgY2VudGVyIG9mIHRoZSBncmVlbiByZWN0YW5nbGUtLT4KKyAgICAgICAg
PG1hdGg+CisgICAgICAgICAgICA8bXN1YiBzdWJzY3JpcHRzaGlmdD0iNTBweCI+CisgICAgICAg
ICAgICAgICAgPG1zcGFjZSB3aWR0aD0iNTBweCIgaGVpZ2h0PSI1MHB4IiBtYXRoYmFja2dyb3Vu
ZD0iZ3JlZW4iLz4KKyAgICAgICAgICAgICAgICA8bXNwYWNlIHdpZHRoPSI1MHB4IiBoZWlnaHQ9
IjUwcHgiIG1hdGhiYWNrZ3JvdW5kPSJibHVlIi8+CisgICAgICAgICAgICA8L21zdWI+CisgICAg
ICAgIDwvbWF0aD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvbWF0aG1sL3ByZXNlbnRhdGlv
bi9tc3ViLXN1YnNjcmlwdHNoaWZ0Lmh0bWwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHls
ZQojIyAtMCwwICsxICMjCituYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpB
ZGRlZDogc3ZuOmV4ZWN1dGFibGUKIyMgLTAsMCArMSAjIworKgpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIHByb3BlcnR5CkluZGV4OiBMYXlvdXRUZXN0cy9tYXRobWwvcHJlc2VudGF0aW9uL21zdWJz
dXAtc3VwZXJzY3JpcHRzaGlmdC1zdWJzY3JpcHRzaGlmdC1leHBlY3RlZC1taXNtYXRjaC5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21hdGhtbC9wcmVzZW50YXRpb24vbXN1YnN1cC1z
dXBlcnNjcmlwdHNoaWZ0LXN1YnNjcmlwdHNoaWZ0LWV4cGVjdGVkLW1pc21hdGNoLmh0bWwJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9tYXRobWwvcHJlc2VudGF0aW9uL21zdWJzdXAtc3Vw
ZXJzY3JpcHRzaGlmdC1zdWJzY3JpcHRzaGlmdC1leHBlY3RlZC1taXNtYXRjaC5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMTUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAg
PGhlYWQ+CisgICAgICAgIDx0aXRsZT5tc3Vic3VwIHN1YnNjcmlwdHNoaWZ0IHN1cGVyc2NyaXB0
c2hpZnQgPC90aXRsZT4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHk+CisgICAgICAgIDxtYXRoPgor
ICAgICAgICAgICAgPG1zdWJzdXA+CisgICAgICAgICAgICAgICAgPG1zcGFjZSB3aWR0aD0iNTBw
eCIgaGVpZ2h0PSI1MHB4IiBtYXRoYmFja2dyb3VuZD0iZ3JlZW4iLz4KKyAgICAgICAgICAgICAg
ICA8bXNwYWNlIHdpZHRoPSI1MHB4IiBoZWlnaHQ9IjUwcHgiIG1hdGhiYWNrZ3JvdW5kPSJibHVl
Ii8+CisgICAgICAgICAgICAgICAgPG1zcGFjZSB3aWR0aD0iNTBweCIgaGVpZ2h0PSI1MHB4IiBt
YXRoYmFja2dyb3VuZD0icmVkIi8+CisgICAgICAgICAgICA8L21zdWJzdXA+CisgICAgICAgIDwv
bWF0aD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQoK
UHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvbWF0aG1sL3ByZXNlbnRhdGlvbi9tc3Vi
c3VwLXN1cGVyc2NyaXB0c2hpZnQtc3Vic2NyaXB0c2hpZnQtZXhwZWN0ZWQtbWlzbWF0Y2guaHRt
bApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0wLDAgKzEgIyMKK25hdGl2ZQpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkFkZGVkOiBzdm46ZXhlY3V0YWJsZQojIyAt
MCwwICsxICMjCisqClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IExheW91
dFRlc3RzL21hdGhtbC9wcmVzZW50YXRpb24vbXN1YnN1cC1zdXBlcnNjcmlwdHNoaWZ0LXN1YnNj
cmlwdHNoaWZ0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWF0aG1sL3ByZXNlbnRh
dGlvbi9tc3Vic3VwLXN1cGVyc2NyaXB0c2hpZnQtc3Vic2NyaXB0c2hpZnQuaHRtbAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL21hdGhtbC9wcmVzZW50YXRpb24vbXN1YnN1cC1zdXBlcnNj
cmlwdHNoaWZ0LXN1YnNjcmlwdHNoaWZ0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwx
NSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHRpdGxl
Pm1zdWJzdXAgc3Vic2NyaXB0c2hpZnQgc3VwZXJzY3JpcHRzaGlmdCA8L3RpdGxlPgorICAgIDwv
aGVhZD4KKyAgICA8Ym9keT4KKyAgICAgICAgPG1hdGg+CisJCSAgICA8bXN1YnN1cCBzdWJzY3Jp
cHRzaGlmdD0iNTBweCIgc3VwZXJzY3JpcHRzaGlmdD0iNTBweCI+CisgICAgICAgICAgICAgICAg
PG1zcGFjZSB3aWR0aD0iNTBweCIgaGVpZ2h0PSI1MHB4IiBtYXRoYmFja2dyb3VuZD0iZ3JlZW4i
Lz4KKyAgICAgICAgICAgICAgICA8bXNwYWNlIHdpZHRoPSI1MHB4IiBoZWlnaHQ9IjUwcHgiIG1h
dGhiYWNrZ3JvdW5kPSJibHVlIi8+CisgICAgICAgICAgICAgICAgPG1zcGFjZSB3aWR0aD0iNTBw
eCIgaGVpZ2h0PSI1MHB4IiBtYXRoYmFja2dyb3VuZD0icmVkIi8+CisgICAgICAgICAgICA8L21z
dWJzdXA+CisgICAgICAgIDwvbWF0aD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvbWF0aG1s
L3ByZXNlbnRhdGlvbi9tc3Vic3VwLXN1cGVyc2NyaXB0c2hpZnQtc3Vic2NyaXB0c2hpZnQuaHRt
bApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0wLDAgKzEgIyMKK25hdGl2ZQpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkFkZGVkOiBzdm46ZXhlY3V0YWJsZQojIyAt
MCwwICsxICMjCisqClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IExheW91
dFRlc3RzL21hdGhtbC9wcmVzZW50YXRpb24vbXN1cC1zdXBlcnNjcmlwdHNoaWZ0LWV4cGVjdGVk
LW1pc21hdGNoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWF0aG1sL3ByZXNlbnRh
dGlvbi9tc3VwLXN1cGVyc2NyaXB0c2hpZnQtZXhwZWN0ZWQtbWlzbWF0Y2guaHRtbAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL21hdGhtbC9wcmVzZW50YXRpb24vbXN1cC1zdXBlcnNjcmlw
dHNoaWZ0LWV4cGVjdGVkLW1pc21hdGNoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwx
NCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHRpdGxl
Pm1zdXAgc3VwZXJzY3JpcHRzaGlmdCA8L3RpdGxlPgorICAgIDwvaGVhZD4KKyAgICA8Ym9keT4K
KyAgICAgICAgPG1hdGg+CisJCSAgICA8bXN1cD4KKyAgICAgICAgICAgICAgICA8bXNwYWNlIHdp
ZHRoPSI1MHB4IiBoZWlnaHQ9IjUwcHgiIG1hdGhiYWNrZ3JvdW5kPSJncmVlbiIvPgorICAgICAg
ICAgICAgICAgIDxtc3BhY2Ugd2lkdGg9IjUwcHgiIGhlaWdodD0iNTBweCIgbWF0aGJhY2tncm91
bmQ9InJlZCIvPgorICAgICAgICAgICAgPC9tc3VwPgorICAgICAgICA8L21hdGg+CisgICAgPC9i
b2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKClByb3BlcnR5IGNoYW5n
ZXMgb246IExheW91dFRlc3RzL21hdGhtbC9wcmVzZW50YXRpb24vbXN1cC1zdXBlcnNjcmlwdHNo
aWZ0LWV4cGVjdGVkLW1pc21hdGNoLmh0bWwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHls
ZQojIyAtMCwwICsxICMjCitMRgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkFkZGVk
OiBzdm46ZXhlY3V0YWJsZQojIyAtMCwwICsxICMjCisqClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
cHJvcGVydHkKSW5kZXg6IExheW91dFRlc3RzL21hdGhtbC9wcmVzZW50YXRpb24vbXN1cC1zdXBl
cnNjcmlwdHNoaWZ0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWF0aG1sL3ByZXNl
bnRhdGlvbi9tc3VwLXN1cGVyc2NyaXB0c2hpZnQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL21hdGhtbC9wcmVzZW50YXRpb24vbXN1cC1zdXBlcnNjcmlwdHNoaWZ0Lmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwxNSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAg
ICA8aGVhZD4KKyAgICAgICAgPHRpdGxlPm1zdXAgc3VwZXJzY3JpcHRzaGlmdCA8L3RpdGxlPgor
ICAgIDwvaGVhZD4KKyAgICA8Ym9keT4KKyAgICAgICAgPCEtLSBUaGUgcmVkIHJlY3RhbmdsZSBz
aG91bGQgYmUgYXQgc29tZSBkaXN0YW5jZSBmcm9tIHRoZSBjZW50ZXIgb2YgdGhlIGdyZWVuIHJl
Y3RhbmdsZS0tPgorICAgICAgICA8bWF0aD4KKyAgICAgICAgICAgIDxtc3VwIHN1cGVyc2NyaXB0
c2hpZnQ9IjUwcHgiPgorICAgICAgICAgICAgICAgIDxtc3BhY2Ugd2lkdGg9IjUwcHgiIGhlaWdo
dD0iNTBweCIgbWF0aGJhY2tncm91bmQ9ImdyZWVuIi8+CisgICAgICAgICAgICAgICAgPG1zcGFj
ZSB3aWR0aD0iNTBweCIgaGVpZ2h0PSI1MHB4IiBtYXRoYmFja2dyb3VuZD0icmVkIi8+CisgICAg
ICAgICAgICA8L21zdXA+CisgICAgICAgIDwvbWF0aD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVz
dHMvbWF0aG1sL3ByZXNlbnRhdGlvbi9tc3VwLXN1cGVyc2NyaXB0c2hpZnQuaHRtbApfX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0wLDAgKzEgIyMKK0xGClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgcHJvcGVydHkKQWRkZWQ6IHN2bjpleGVjdXRhYmxlCiMjIC0wLDAgKzEgIyMKKyoK
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogTGF5b3V0VGVzdHMvbWF0aG1s
L3ByZXNlbnRhdGlvbi9tdWx0aXNjcmlwdHMtc3Vic2NyaXB0c2hpZnQtc3VwZXJzY3JpcHRzaGlm
dC1leHBlY3RlZC1taXNtYXRjaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21hdGht
bC9wcmVzZW50YXRpb24vbXVsdGlzY3JpcHRzLXN1YnNjcmlwdHNoaWZ0LXN1cGVyc2NyaXB0c2hp
ZnQtZXhwZWN0ZWQtbWlzbWF0Y2guaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL21h
dGhtbC9wcmVzZW50YXRpb24vbXVsdGlzY3JpcHRzLXN1YnNjcmlwdHNoaWZ0LXN1cGVyc2NyaXB0
c2hpZnQtZXhwZWN0ZWQtbWlzbWF0Y2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE4
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8dGl0bGU+
bW11bHRpc2NyaXB0cyBzdWJzY3JpcHRzaGlmdCBzdXBlcnNjcmlwdHNoaWZ0IDwvdGl0bGU+Cisg
ICAgPC9oZWFkPgorICAgIDxib2R5PgorICAgICAgICA8bWF0aD4KKyAgICAgICAgICAgIDxtbXVs
dGlzY3JpcHRzPgorICAgICAgICAgICAgICAgIDxtc3BhY2Ugd2lkdGg9IjUwcHgiIGhlaWdodD0i
NTBweCIgbWF0aGJhY2tncm91bmQ9ImdyZWVuIi8+CisgICAgICAgICAgICAgICAgPG1zcGFjZSB3
aWR0aD0iNTBweCIgaGVpZ2h0PSI1MHB4IiBtYXRoYmFja2dyb3VuZD0iYmx1ZSIvPgorICAgICAg
ICAgICAgICAgIDxtc3BhY2Ugd2lkdGg9IjUwcHgiIGhlaWdodD0iNTBweCIgbWF0aGJhY2tncm91
bmQ9InJlZCIvPgorICAgICAgICAgICAgICAgIDxtcHJlc2NyaXB0cyAvPgorICAgICAgICAgICAg
ICAgIDxtc3BhY2Ugd2lkdGg9IjUwcHgiIGhlaWdodD0iNTBweCIgbWF0aGJhY2tncm91bmQ9Inll
bGxvdyIvPgorICAgICAgICAgICAgICAgIDxtc3BhY2Ugd2lkdGg9IjUwcHgiIGhlaWdodD0iNTBw
eCIgbWF0aGJhY2tncm91bmQ9ImJsYWNrIi8+CisgICAgICAgICAgICA8L21tdWx0aXNjcmlwdHM+
CisgICAgICA8L21hdGg+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL21hdGhtbC9wcmVzZW50
YXRpb24vbXVsdGlzY3JpcHRzLXN1YnNjcmlwdHNoaWZ0LXN1cGVyc2NyaXB0c2hpZnQtZXhwZWN0
ZWQtbWlzbWF0Y2guaHRtbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0wLDAg
KzEgIyMKK0xGClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKQWRkZWQ6IHN2bjpleGVj
dXRhYmxlCiMjIC0wLDAgKzEgIyMKKyoKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJ
bmRleDogTGF5b3V0VGVzdHMvbWF0aG1sL3ByZXNlbnRhdGlvbi9tdWx0aXNjcmlwdHMtc3Vic2Ny
aXB0c2hpZnQtc3VwZXJzY3JpcHRzaGlmdC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L21hdGhtbC9wcmVzZW50YXRpb24vbXVsdGlzY3JpcHRzLXN1YnNjcmlwdHNoaWZ0LXN1cGVyc2Ny
aXB0c2hpZnQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL21hdGhtbC9wcmVzZW50
YXRpb24vbXVsdGlzY3JpcHRzLXN1YnNjcmlwdHNoaWZ0LXN1cGVyc2NyaXB0c2hpZnQuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
ICAgIDxoZWFkPgorICAgICAgICA8dGl0bGU+bW11bHRpc2NyaXB0cyBzdWJzY3JpcHRzaGlmdCBz
dXBlcnNjcmlwdHNoaWZ0IDwvdGl0bGU+CisgICAgPC9oZWFkPgorICAgIDxib2R5PgorICAgICAg
ICA8IS0tIFRoZSBibHVlLCByZWQsIHllbGxvdywgYmxhY2sgcmVjdGFuZ2xlIHNob3VsZCBiZSBh
dCBzb21lIGRpc3RhbmNlIGZyb20gdGhlIGNlbnRlciBvZiB0aGUgZ3JlZW4gcmVjdGFuZ2xlLS0+
CisgICAgICAgIDxtYXRoPgorICAgICAgICAgICAgPG1tdWx0aXNjcmlwdHMgc3Vic2NyaXB0c2hp
ZnQ9IjUwcHgiIHN1cGVyc2NyaXB0c2hpZnQ9IjUwcHgiPgorICAgICAgICAgICAgICAgIDxtc3Bh
Y2Ugd2lkdGg9IjUwcHgiIGhlaWdodD0iNTBweCIgbWF0aGJhY2tncm91bmQ9ImdyZWVuIi8+Cisg
ICAgICAgICAgICAgICAgPG1zcGFjZSB3aWR0aD0iNTBweCIgaGVpZ2h0PSI1MHB4IiBtYXRoYmFj
a2dyb3VuZD0iYmx1ZSIvPgorICAgICAgICAgICAgICAgIDxtc3BhY2Ugd2lkdGg9IjUwcHgiIGhl
aWdodD0iNTBweCIgbWF0aGJhY2tncm91bmQ9InJlZCIvPgorICAgICAgICAgICAgICAgIDxtcHJl
c2NyaXB0cyAvPgorICAgICAgICAgICAgICAgIDxtc3BhY2Ugd2lkdGg9IjUwcHgiIGhlaWdodD0i
NTBweCIgbWF0aGJhY2tncm91bmQ9InllbGxvdyIvPgorICAgICAgICAgICAgICAgIDxtc3BhY2Ug
d2lkdGg9IjUwcHgiIGhlaWdodD0iNTBweCIgbWF0aGJhY2tncm91bmQ9ImJsYWNrIi8+CisgICAg
ICAgICAgICA8L21tdWx0aXNjcmlwdHM+CisgICAgICA8L21hdGg+CisgICAgPC9ib2R5PgorPC9o
dG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKClByb3BlcnR5IGNoYW5nZXMgb246IExh
eW91dFRlc3RzL21hdGhtbC9wcmVzZW50YXRpb24vbXVsdGlzY3JpcHRzLXN1YnNjcmlwdHNoaWZ0
LXN1cGVyc2NyaXB0c2hpZnQuaHRtbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiMj
IC0wLDAgKzEgIyMKK0xGClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKQWRkZWQ6IHN2
bjpleGVjdXRhYmxlCiMjIC0wLDAgKzEgIyMKKyoKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9w
ZXJ0eQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211890</attachid>
            <date>2013-09-17 05:16:55 -0700</date>
            <delta_ts>2013-09-18 05:38:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-120069-20130917174850.patch</filename>
            <type>text/plain</type>
            <size>22886</size>
            <attacher>gur.trio</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NTk0NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDEzLTA5LTE3ICBHdXJwcmVl
dCBLYXVyICA8ay5ndXJwcmVldEBzYW1zdW5nLmNvbT4KKworICAgICAgICBbTWF0aE1MXSBJbXBs
ZW1lbnQgdGhlIHN1YnNjcmlwdHNoaWZ0IGFuZCBzdXBlcnNjcmlwdHNoaWZ0IGF0dHJpYnV0ZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMDA2OQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIHN1
cHBvcnQgZm9yIHN1YnNjcmlwdHNoaWZ0IGFuZCBzdXBlcnNjcmlwdHNoaWZ0IGF0dHJpYnV0ZXMu
IFRoZQorICAgICAgICBzdWJzY3JpcHRzaGlmdCBhdHRyaWJ1dGUgaXMgZm9yIG1zdXAgZWxlbWVu
dCBhbmQgc3VwZXJzY3JpcHRzaGlmdCBmb3IKKyAgICAgICAgbXN1cC4gbXN1YnN1cCBjYW4gaGF2
ZSBib3RoIHN1YnNjcmlwdHNoaWZ0IGFuZCBzdXBlcnNjcmlwdHNoaWZ0LiBUaGUKKyAgICAgICAg
c3Vic2NyaXB0c2hpZnQgYXR0cmlidXRlIHNwZWNpZmllcyB0aGUgbWluaW11bSBhbW91bnQgdG8g
c2hpZnQgdGhlCisgICAgICAgIGJhc2VsaW5lIG9mIHN1YnNjcmlwdCBkb3duLiBUaGUgc3VwZXJz
Y3JpcHRzaGlmdCBhdHRyaWJ1dGUgc3BlY2lmaWVzCisgICAgICAgIHRoZSBtaW5pbXVtIGFtb3Vu
dCB0byBzaGlmdCB0aGUgYmFzZWxpbmUgb2Ygc3VwZXJzY3JpcHQgdXAuCisKKyAgICAgICAgVGVz
dHM6IG1hdGhtbC9wcmVzZW50YXRpb24vbXN1Yi1zdWJzY3JpcHRzaGlmdC5odG1sCisgICAgICAg
ICAgICAgICBtYXRobWwvcHJlc2VudGF0aW9uL21zdWJzdXAtc3Vic2NyaXB0c2hpZnQuaHRtbAor
ICAgICAgICAgICAgICAgbWF0aG1sL3ByZXNlbnRhdGlvbi9tc3Vic3VwLXN1cGVyc2NyaXB0c2hp
ZnQuaHRtbAorICAgICAgICAgICAgICAgbWF0aG1sL3ByZXNlbnRhdGlvbi9tc3VwLXN1cGVyc2Ny
aXB0c2hpZnQuaHRtbAorICAgICAgICAgICAgICAgbWF0aG1sL3ByZXNlbnRhdGlvbi9tdWx0aXNj
cmlwdC1zdWJzY3JpcHRzaGlmdC5odG1sCisgICAgICAgICAgICAgICBtYXRobWwvcHJlc2VudGF0
aW9uL211bHRpc2NyaXB0LXN1cGVyc2NyaXB0c2hpZnQuaHRtbAorCisgICAgICAgICogbWF0aG1s
L21hdGhhdHRycy5pbjoKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNj
cmlwdHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MU2NyaXB0czo6bGF5b3V0
KToKKyAgICAgICAgRm9yIGFsaWduaW5nIHRoZSBzdWJzY3JpcHQgYW5kIHN1cGVyc2NyaXB0IHBh
ZGRpbmcgaXMgYWRkZWQgdG8gdGhlIGJhc2UuCisgICAgICAgIFNvIHN1YnNjcmlwdHNoaWZ0IGFu
ZCBzdXBlcnNjcmlwdHNoaWZ0IGF0dHJpYnV0ZXMgaXMgc2V0IGFzIHBhZGRpbmcgYm90dG9tCisg
ICAgICAgIGFuZCBwYWRkaW5nIHRvcCBvZiBiYXNlIHJlc3BlY3RpdmVseS4KKwogMjAxMy0wOS0x
NyAgTWlobmVhIE92aWRlbmllICA8bWlobmVhQGFkb2JlLmNvbT4KIAogICAgICAgICBbQ1NTUmVn
aW9uc10gUmVwbGFjZSBnZW5lcmF0aW5nTm9kZSgpIHdpdGggZ2VuZXJhdGluZ0VsZW1lbnQoKSBm
b3IgUmVuZGVyUmVnaW9uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9tYXRobWwvbWF0aGF0dHJzLmlu
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL21hdGhtbC9tYXRoYXR0cnMuaW4JKHJldmlz
aW9uIDE1NTgzMikKKysrIFNvdXJjZS9XZWJDb3JlL21hdGhtbC9tYXRoYXR0cnMuaW4JKHdvcmtp
bmcgY29weSkKQEAgLTI3LDQgKzI3LDYgQEAgb3Blbgogcm93c3Bhbgogc2VwYXJhdG9ycwogc3Ry
ZXRjaHkKK3N1YnNjcmlwdHNoaWZ0CitzdXBlcnNjcmlwdHNoaWZ0CiB3aWR0aApJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNj
cmlwdHMuY3BwCShyZXZpc2lvbiAxNTU4MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzcsOSAr
Mjc3LDYgQEAgdm9pZCBSZW5kZXJNYXRoTUxTY3JpcHRzOjpsYXlvdXQoKQogICAgIC8vIE91ciBs
YXlvdXQgcnVsZXMgaW5jbHVkZTogRG9uJ3QgbGV0IHRoZSBzdXBlcnNjcmlwdCBnbyBiZWxvdyB0
aGUgImF4aXMiIChoYWxmIHgtaGVpZ2h0IGFib3ZlIHRoZQogICAgIC8vIGJhc2VsaW5lKSwgb3Ig
dGhlIHN1YnNjcmlwdCBhYm92ZSB0aGUgYXhpcy4gQWxzbywgZG9uJ3QgbGV0IHRoZSBzdXBlcnNj
cmlwdCdzIHRvcCBlZGdlIGJlCiAgICAgLy8gYmVsb3cgdGhlIGJhc2UncyB0b3AgZWRnZSwgb3Ig
dGhlIHN1YnNjcmlwdCdzIGJvdHRvbSBlZGdlIGFib3ZlIHRoZSBiYXNlJ3MgYm90dG9tIGVkZ2Uu
Ci0gICAgLy8KLSAgICAvLyBGSVhNRTogQ2hlY2sgYW55IHN1YnNjcmlwdHNoaWZ0IG9yIHN1cGVy
c2NyaXB0c2hpZnQgYXR0cmlidXRlcywgYW5kIG1heWJlIHVzZSBtb3JlIHNvcGhpc3RpY2F0ZWQK
LSAgICAvLyBoZXVyaXN0aWNzIGZyb20gVGVYIG9yIGVsc2V3aGVyZS4gU2VlIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTI3NCNjNS4KIAogICAgIExheW91dFVuaXQg
YmFzZUhlaWdodCA9IGJhc2UtPmxvZ2ljYWxIZWlnaHQoKTsKICAgICBMYXlvdXRVbml0IGJhc2VC
YXNlbGluZSA9IGJhc2UtPmZpcnN0TGluZUJveEJhc2VsaW5lKCk7CkBAIC0yOTQsNiArMjkxLDE0
IEBAIHZvaWQgUmVuZGVyTWF0aE1MU2NyaXB0czo6bGF5b3V0KCkKICAgICBMYXlvdXRVbml0IHRv
cFBhZGRpbmcgPSAwOwogICAgIExheW91dFVuaXQgYm90dG9tUGFkZGluZyA9IDA7CiAKKyAgICBF
bGVtZW50KiBzY3JpcHRFbGVtZW50ID0gZWxlbWVudCgpOworICAgIExheW91dFVuaXQgc3VwZXJz
Y3JpcHRTaGlmdFZhbHVlID0gMDsKKyAgICBMYXlvdXRVbml0IHN1YnNjcmlwdFNoaWZ0VmFsdWUg
PSAwOworICAgIGlmIChtX2tpbmQgPT0gU3ViIHx8IG1fa2luZCA9PSBTdWJTdXAgfHwgbV9raW5k
ID09IE11bHRpc2NyaXB0cykKKyAgICAgICAgcGFyc2VNYXRoTUxMZW5ndGgoc2NyaXB0RWxlbWVu
dC0+ZmFzdEdldEF0dHJpYnV0ZShNYXRoTUxOYW1lczo6c3Vic2NyaXB0c2hpZnRBdHRyKSwgc3Vi
c2NyaXB0U2hpZnRWYWx1ZSwgc3R5bGUoKSwgZmFsc2UpOworICAgIGlmIChtX2tpbmQgPT0gU3Vw
ZXIgfHwgbV9raW5kID09IFN1YlN1cCB8fCBtX2tpbmQgPT0gTXVsdGlzY3JpcHRzKQorICAgICAg
ICBwYXJzZU1hdGhNTExlbmd0aChzY3JpcHRFbGVtZW50LT5mYXN0R2V0QXR0cmlidXRlKE1hdGhN
TE5hbWVzOjpzdXBlcnNjcmlwdHNoaWZ0QXR0ciksIHN1cGVyc2NyaXB0U2hpZnRWYWx1ZSwgc3R5
bGUoKSwgZmFsc2UpOworCiAgICAgYm9vbCBpc1Bvc3RTY3JpcHQgPSB0cnVlOwogICAgIFJlbmRl
ck1hdGhNTEJsb2NrKiBzdWJTdXBQYWlyID0gdG9SZW5kZXJNYXRoTUxCbG9jayhtX2Jhc2VXcmFw
cGVyLT5uZXh0U2libGluZygpKTsKICAgICBmb3IgKDsgc3ViU3VwUGFpcjsgc3ViU3VwUGFpciA9
IHRvUmVuZGVyTWF0aE1MQmxvY2soc3ViU3VwUGFpci0+bmV4dFNpYmxpbmcoKSkpIHsKQEAgLTMx
MSw3ICszMTYsNyBAQCB2b2lkIFJlbmRlck1hdGhNTFNjcmlwdHM6OmxheW91dCgpCiAgICAgICAg
ICAgICBMYXlvdXRVbml0IHN1cGVyc2NyaXB0QmFzZWxpbmUgPSBzdXBlcnNjcmlwdC0+Zmlyc3RM
aW5lQm94QmFzZWxpbmUoKTsKICAgICAgICAgICAgIGlmIChzdXBlcnNjcmlwdEJhc2VsaW5lID09
IC0xKQogICAgICAgICAgICAgICAgIHN1cGVyc2NyaXB0QmFzZWxpbmUgPSBzdXBlcnNjcmlwdEhl
aWdodDsKLSAgICAgICAgICAgIExheW91dFVuaXQgbWluQmFzZWxpbmUgPSBtYXg8TGF5b3V0VW5p
dD4oZm9udFNpemUgLyAzICsgMSArIHN1cGVyc2NyaXB0QmFzZWxpbmUsIHN1cGVyc2NyaXB0SGVp
Z2h0ICsgYXhpcyk7CisgICAgICAgICAgICBMYXlvdXRVbml0IG1pbkJhc2VsaW5lID0gbWF4PExh
eW91dFVuaXQ+KGZvbnRTaXplIC8gMyArIDEgKyBzdXBlcnNjcmlwdEJhc2VsaW5lLCBzdXBlcnNj
cmlwdEhlaWdodCArIGF4aXMgKyBzdXBlcnNjcmlwdFNoaWZ0VmFsdWUpOwogCiAgICAgICAgICAg
ICB0b3BQYWRkaW5nID0gbWF4PExheW91dFVuaXQ+KHRvcFBhZGRpbmcsIG1pbkJhc2VsaW5lIC0g
YmFzZUJhc2VsaW5lKTsKICAgICAgICAgfQpAQCAtMzIzLDcgKzMyOCw3IEBAIHZvaWQgUmVuZGVy
TWF0aE1MU2NyaXB0czo6bGF5b3V0KCkKICAgICAgICAgICAgICAgICBzdWJzY3JpcHRCYXNlbGlu
ZSA9IHN1YnNjcmlwdEhlaWdodDsKICAgICAgICAgICAgIExheW91dFVuaXQgYmFzZUV4dGVuZFVu
ZGVyQmFzZWxpbmUgPSBiYXNlSGVpZ2h0IC0gYmFzZUJhc2VsaW5lOwogICAgICAgICAgICAgTGF5
b3V0VW5pdCBzdWJzY3JpcHRVbmRlckl0c0Jhc2VsaW5lID0gc3Vic2NyaXB0SGVpZ2h0IC0gc3Vi
c2NyaXB0QmFzZWxpbmU7Ci0gICAgICAgICAgICBMYXlvdXRVbml0IG1pbkV4dGVuZFVuZGVyQmFz
ZWxpbmUgPSBtYXg8TGF5b3V0VW5pdD4oZm9udFNpemUgLyA1ICsgMSArIHN1YnNjcmlwdFVuZGVy
SXRzQmFzZWxpbmUsIHN1YnNjcmlwdEhlaWdodCAtIGF4aXMpOworICAgICAgICAgICAgTGF5b3V0
VW5pdCBtaW5FeHRlbmRVbmRlckJhc2VsaW5lID0gbWF4PExheW91dFVuaXQ+KGZvbnRTaXplIC8g
NSArIDEgKyBzdWJzY3JpcHRVbmRlckl0c0Jhc2VsaW5lLCBzdWJzY3JpcHRIZWlnaHQgKyBzdWJz
Y3JpcHRTaGlmdFZhbHVlIC0gYXhpcyk7CiAKICAgICAgICAgICAgIGJvdHRvbVBhZGRpbmcgPSBt
YXg8TGF5b3V0VW5pdD4oYm90dG9tUGFkZGluZywgbWluRXh0ZW5kVW5kZXJCYXNlbGluZSAtIGJh
c2VFeHRlbmRVbmRlckJhc2VsaW5lKTsKICAgICAgICAgfQpJbmRleDogTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTU1
OTQ3KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MjUgQEAKKzIwMTMtMDktMTcgIEd1cnByZWV0IEthdXIgIDxrLmd1cnByZWV0QHNhbXN1bmcuY29t
PgorCisgICAgICAgIFtNYXRoTUxdIEltcGxlbWVudCB0aGUgc3Vic2NyaXB0c2hpZnQgYW5kIHN1
cGVyc2NyaXB0c2hpZnQgYXR0cmlidXRlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTIwMDY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBtYXRobWwvcHJlc2VudGF0aW9uL21zdWItc3Vic2NyaXB0c2hp
ZnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBtYXRobWwvcHJlc2VudGF0aW9uL21z
dWItc3Vic2NyaXB0c2hpZnQuaHRtbDogQWRkZWQuCisgICAgICAgICogbWF0aG1sL3ByZXNlbnRh
dGlvbi9tc3Vic3VwLXN1YnNjcmlwdHNoaWZ0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogbWF0aG1sL3ByZXNlbnRhdGlvbi9tc3Vic3VwLXN1YnNjcmlwdHNoaWZ0Lmh0bWw6IEFkZGVk
LgorICAgICAgICAqIG1hdGhtbC9wcmVzZW50YXRpb24vbXN1YnN1cC1zdXBlcnNjcmlwdHNoaWZ0
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogbWF0aG1sL3ByZXNlbnRhdGlvbi9tc3Vi
c3VwLXN1cGVyc2NyaXB0c2hpZnQuaHRtbDogQWRkZWQuCisgICAgICAgICogbWF0aG1sL3ByZXNl
bnRhdGlvbi9tc3VwLXN1cGVyc2NyaXB0c2hpZnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBtYXRobWwvcHJlc2VudGF0aW9uL21zdXAtc3VwZXJzY3JpcHRzaGlmdC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBtYXRobWwvcHJlc2VudGF0aW9uL211bHRpc2NyaXB0LXN1YnNjcmlwdHNo
aWZ0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogbWF0aG1sL3ByZXNlbnRhdGlvbi9t
dWx0aXNjcmlwdC1zdWJzY3JpcHRzaGlmdC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBtYXRobWwv
cHJlc2VudGF0aW9uL211bHRpc2NyaXB0LXN1cGVyc2NyaXB0c2hpZnQtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBtYXRobWwvcHJlc2VudGF0aW9uL211bHRpc2NyaXB0LXN1cGVyc2Ny
aXB0c2hpZnQuaHRtbDogQWRkZWQuCisgICAgICAgIEFkZGVkIG5ldyB0ZXN0cyBmb3IgdmVyaWZ5
aW5nIHRoYXQgc3Vic2NyaXB0c2hpZnQgYW5kIHN1cGVyc2NyaXB0c2hpZnQgYXJlCisgICAgICAg
IGJlaW5nIGFwcGxpZWQgcHJvcGVybHkgdG8gdGhlIHNjcmlwdCBiYXNlLgorCiAyMDEzLTA5LTE3
ICBNaWhuZWEgT3ZpZGVuaWUgIDxtaWhuZWFAYWRvYmUuY29tPgogCiAgICAgICAgIFtDU1NSZWdp
b25zXSBGbG93ZWQgZml4ZWQgZWxlbWVudCB3aXRob3V0IGl0cyB0cmFuc2Zvcm1lZCBwYXJlbnQg
cG9zaXRpb25lZCByZWxhdGl2ZSB0byB2aWV3cG9ydApJbmRleDogTGF5b3V0VGVzdHMvbWF0aG1s
L3ByZXNlbnRhdGlvbi9tc3ViLXN1YnNjcmlwdHNoaWZ0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9tYXRobWwvcHJlc2VudGF0aW9uL21zdWItc3Vic2NyaXB0c2hpZnQt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvbWF0aG1sL3ByZXNlbnRh
dGlvbi9tc3ViLXN1YnNjcmlwdHNoaWZ0LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDEwIEBACitUZXN0cyB0aGF0IHN1YnNjcmlwdHNoaWZ0IHdvcmtzIG9uIG1zdWIuIEFm
dGVyIGFkZGluZyBzdWJzY3JpcHRzaGlmdCB0aGUgaGVpZ2h0IG9mIG1zdWIgZWxlbWVudCBzaG91
bGQgaW5jcmVhc2UKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgaGVpZ2h0
ID4gMTAwIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9tYXRobWwvcHJlc2Vu
dGF0aW9uL21zdWItc3Vic2NyaXB0c2hpZnQtZXhwZWN0ZWQudHh0Cl9fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6
IHN2bjprZXl3b3JkcwojIyAtMCwwICsxICMjCitBdXRob3IgRGF0ZSBJZCBSZXYgVVJMClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKQWRkZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTAsMCAr
MSAjIworbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKQWRkZWQ6IHN2bjpl
eGVjdXRhYmxlCiMjIC0wLDAgKzEgIyMKKyoKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0
eQpJbmRleDogTGF5b3V0VGVzdHMvbWF0aG1sL3ByZXNlbnRhdGlvbi9tc3ViLXN1YnNjcmlwdHNo
aWZ0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWF0aG1sL3ByZXNlbnRhdGlvbi9t
c3ViLXN1YnNjcmlwdHNoaWZ0Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9tYXRo
bWwvcHJlc2VudGF0aW9uL21zdWItc3Vic2NyaXB0c2hpZnQuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDI1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAg
ICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7Cisg
ICAgICAgICAgICAgICAgZGVzY3JpcHRpb24oJ1Rlc3RzIHRoYXQgc3Vic2NyaXB0c2hpZnQgd29y
a3Mgb24gbXN1Yi4gQWZ0ZXIgYWRkaW5nIHN1YnNjcmlwdHNoaWZ0IHRoZSBoZWlnaHQgb2YgbXN1
YiBlbGVtZW50IHNob3VsZCBpbmNyZWFzZScpOworCisgICAgICAgICAgICAgICAgdmFyIHJlY3Qg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibXN1YkVsZSIpLmdldEJvdW5kaW5nQ2xpZW50UmVj
dCgpOworICAgICAgICAgICAgICAgIGhlaWdodCA9IHJlY3QuYm90dG9tIC0gcmVjdC50b3A7CisK
KyAgICAgICAgICAgICAgICBzaG91bGRCZVRydWUoImhlaWdodCA+IDEwMCIpOworICAgICAgICAg
ICAgICAgIGlzU3VjY2Vzc2Z1bGx5UGFyc2VkKCk7CisgICAgICAgICAgICB9CisgICAgICAgIDwv
c2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+ICAgICAg
ICAKKyAgICAgICAgPG1hdGg+CisgICAgICAgICAgICA8bXN1YiBzdWJzY3JpcHRzaGlmdD0iNjBw
eCIgaWQ9Im1zdWJFbGUiPgorICAgICAgICAgICAgICAgIDxtc3BhY2Ugd2lkdGg9IjUwcHgiIGhl
aWdodD0iNTBweCIgbWF0aGJhY2tncm91bmQ9ImdyZWVuIi8+CisgICAgICAgICAgICAgICAgPG1z
cGFjZSB3aWR0aD0iNTBweCIgaGVpZ2h0PSI1MHB4IiBtYXRoYmFja2dyb3VuZD0iYmx1ZSIvPgor
ICAgICAgICAgICAgPC9tc3ViPgorICAgICAgICA8L21hdGg+CisgICAgPC9ib2R5PgorPC9odG1s
PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKClByb3BlcnR5IGNoYW5nZXMgb246IExheW91
dFRlc3RzL21hdGhtbC9wcmVzZW50YXRpb24vbXN1Yi1zdWJzY3JpcHRzaGlmdC5odG1sCl9fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTAsMCArMSAjIworbmF0aXZlClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKQWRkZWQ6IHN2bjpleGVjdXRhYmxlCiMjIC0wLDAgKzEg
IyMKKyoKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogTGF5b3V0VGVzdHMv
bWF0aG1sL3ByZXNlbnRhdGlvbi9tc3Vic3VwLXN1YnNjcmlwdHNoaWZ0LWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tYXRobWwvcHJlc2VudGF0aW9uL21zdWJzdXAtc3Vi
c2NyaXB0c2hpZnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvbWF0
aG1sL3ByZXNlbnRhdGlvbi9tc3Vic3VwLXN1YnNjcmlwdHNoaWZ0LWV4cGVjdGVkLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBACitUZXN0cyB0aGF0IHN1YnNjcmlwdHNoaWZ0IHdv
cmtzIG9uIG1zdWJzdXAuIEFmdGVyIGFkZGluZyBzdWJzY3JpcHRzaGlmdCB0aGUgaGVpZ2h0IG9m
IG1zdWJzdXAgZWxlbWVudCBzaG91bGQgaW5jcmVhc2UKKworT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgorCisKK1BBU1MgaGVpZ2h0ID4gMTUwIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlv
dXRUZXN0cy9tYXRobWwvcHJlc2VudGF0aW9uL21zdWJzdXAtc3Vic2NyaXB0c2hpZnQtZXhwZWN0
ZWQudHh0Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjprZXl3b3JkcwojIyAtMCwwICsxICMjCitBdXRo
b3IgRGF0ZSBJZCBSZXYgVVJMClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKQWRkZWQ6
IHN2bjplb2wtc3R5bGUKIyMgLTAsMCArMSAjIworbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgcHJvcGVydHkKQWRkZWQ6IHN2bjpleGVjdXRhYmxlCiMjIC0wLDAgKzEgIyMKKyoKXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogTGF5b3V0VGVzdHMvbWF0aG1sL3ByZXNl
bnRhdGlvbi9tc3Vic3VwLXN1YnNjcmlwdHNoaWZ0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvbWF0aG1sL3ByZXNlbnRhdGlvbi9tc3Vic3VwLXN1YnNjcmlwdHNoaWZ0Lmh0bWwJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9tYXRobWwvcHJlc2VudGF0aW9uL21zdWJzdXAtc3Vi
c2NyaXB0c2hpZnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI2IEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAg
ICAgICAgICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgICAgICAgICAgICAgZGVzY3JpcHRp
b24oJ1Rlc3RzIHRoYXQgc3Vic2NyaXB0c2hpZnQgd29ya3Mgb24gbXN1YnN1cC4gQWZ0ZXIgYWRk
aW5nIHN1YnNjcmlwdHNoaWZ0IHRoZSBoZWlnaHQgb2YgbXN1YnN1cCBlbGVtZW50IHNob3VsZCBp
bmNyZWFzZScpOworCisgICAgICAgICAgICAgICAgdmFyIHJlY3QgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgibXN1YnN1cEVsZSIpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOworICAgICAgICAg
ICAgICAgIGhlaWdodCA9IHJlY3QuYm90dG9tIC0gcmVjdC50b3A7CisKKyAgICAgICAgICAgICAg
ICBzaG91bGRCZVRydWUoImhlaWdodCA+IDE1MCIpOworICAgICAgICAgICAgICAgIGlzU3VjY2Vz
c2Z1bGx5UGFyc2VkKCk7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwv
aGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CisgICAgICAgIDxtYXRoPgorCQkg
ICAgPG1zdWJzdXAgc3Vic2NyaXB0c2hpZnQ9IjYwcHgiIGlkPSJtc3Vic3VwRWxlIj4KKyAgICAg
ICAgICAgICAgICA8bXNwYWNlIHdpZHRoPSI1MHB4IiBoZWlnaHQ9IjUwcHgiIG1hdGhiYWNrZ3Jv
dW5kPSJncmVlbiIvPgorICAgICAgICAgICAgICAgIDxtc3BhY2Ugd2lkdGg9IjUwcHgiIGhlaWdo
dD0iNTBweCIgbWF0aGJhY2tncm91bmQ9ImJsdWUiLz4KKyAgICAgICAgICAgICAgICA8bXNwYWNl
IHdpZHRoPSI1MHB4IiBoZWlnaHQ9IjUwcHgiIG1hdGhiYWNrZ3JvdW5kPSJyZWQiLz4KKyAgICAg
ICAgICAgIDwvbXN1YnN1cD4KKyAgICAgICAgPC9tYXRoPgorICAgIDwvYm9keT4KKzwvaHRtbD4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRU
ZXN0cy9tYXRobWwvcHJlc2VudGF0aW9uL21zdWJzdXAtc3Vic2NyaXB0c2hpZnQuaHRtbApfX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0wLDAgKzEgIyMKK25hdGl2ZQpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkFkZGVkOiBzdm46ZXhlY3V0YWJsZQojIyAtMCwwICsx
ICMjCisqClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IExheW91dFRlc3Rz
L21hdGhtbC9wcmVzZW50YXRpb24vbXN1YnN1cC1zdXBlcnNjcmlwdHNoaWZ0LWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tYXRobWwvcHJlc2VudGF0aW9uL21zdWJzdXAt
c3VwZXJzY3JpcHRzaGlmdC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9tYXRobWwvcHJlc2VudGF0aW9uL21zdWJzdXAtc3VwZXJzY3JpcHRzaGlmdC1leHBlY3RlZC50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMCBAQAorVGVzdHMgdGhhdCBzdXBlcnNjcmlw
dHNoaWZ0IHdvcmtzIG9uIG1zdWJzdXAuIEFmdGVyIGFkZGluZyBzdXBlcnNjcmlwdHNoaWZ0IHRo
ZSBoZWlnaHQgb2YgbXN1YnN1cCBlbGVtZW50IHNob3VsZCBpbmNyZWFzZQorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKKworUEFTUyBoZWlnaHQgPiAxNTAgaXMgdHJ1ZQorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKClByb3BlcnR5IGNoYW5n
ZXMgb246IExheW91dFRlc3RzL21hdGhtbC9wcmVzZW50YXRpb24vbXN1YnN1cC1zdXBlcnNjcmlw
dHNoaWZ0LWV4cGVjdGVkLnR4dApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0w
LDAgKzEgIyMKK25hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkFkZGVkOiBz
dm46ZXhlY3V0YWJsZQojIyAtMCwwICsxICMjCisqClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJv
cGVydHkKQWRkZWQ6IHN2bjprZXl3b3JkcwojIyAtMCwwICsxICMjCitBdXRob3IgRGF0ZSBJZCBS
ZXYgVVJMClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IExheW91dFRlc3Rz
L21hdGhtbC9wcmVzZW50YXRpb24vbXN1YnN1cC1zdXBlcnNjcmlwdHNoaWZ0Lmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvbWF0aG1sL3ByZXNlbnRhdGlvbi9tc3Vic3VwLXN1cGVyc2Ny
aXB0c2hpZnQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL21hdGhtbC9wcmVzZW50
YXRpb24vbXN1YnN1cC1zdXBlcnNjcmlwdHNoaWZ0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwyNiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAg
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cisg
ICAgICAgIDxzY3JpcHQ+CisgICAgICAgICAgICBmdW5jdGlvbiBydW5UZXN0KCkgeworICAgICAg
ICAgICAgICAgIGRlc2NyaXB0aW9uKCdUZXN0cyB0aGF0IHN1cGVyc2NyaXB0c2hpZnQgd29ya3Mg
b24gbXN1YnN1cC4gQWZ0ZXIgYWRkaW5nIHN1cGVyc2NyaXB0c2hpZnQgdGhlIGhlaWdodCBvZiBt
c3Vic3VwIGVsZW1lbnQgc2hvdWxkIGluY3JlYXNlJyk7CisKKyAgICAgICAgICAgICAgICB2YXIg
cmVjdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtc3Vic3VwRWxlIikuZ2V0Qm91bmRpbmdD
bGllbnRSZWN0KCk7CisgICAgICAgICAgICAgICAgaGVpZ2h0ID0gcmVjdC5ib3R0b20gLSByZWN0
LnRvcDsKKworICAgICAgICAgICAgICAgIHNob3VsZEJlVHJ1ZSgiaGVpZ2h0ID4gMTUwIik7Cisg
ICAgICAgICAgICAgICAgaXNTdWNjZXNzZnVsbHlQYXJzZWQoKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0icnVuVGVzdCgp
Ij4KKyAgICAgICAgPG1hdGg+CisJCSAgICA8bXN1YnN1cCBzdXBlcnNjcmlwdHNoaWZ0PSI2MHB4
IiBpZD0ibXN1YnN1cEVsZSI+CisgICAgICAgICAgICAgICAgPG1zcGFjZSB3aWR0aD0iNTBweCIg
aGVpZ2h0PSI1MHB4IiBtYXRoYmFja2dyb3VuZD0iZ3JlZW4iLz4KKyAgICAgICAgICAgICAgICA8
bXNwYWNlIHdpZHRoPSI1MHB4IiBoZWlnaHQ9IjUwcHgiIG1hdGhiYWNrZ3JvdW5kPSJibHVlIi8+
CisgICAgICAgICAgICAgICAgPG1zcGFjZSB3aWR0aD0iNTBweCIgaGVpZ2h0PSI1MHB4IiBtYXRo
YmFja2dyb3VuZD0icmVkIi8+CisgICAgICAgICAgICA8L21zdWJzdXA+CisgICAgICAgIDwvbWF0
aD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQoKUHJv
cGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvbWF0aG1sL3ByZXNlbnRhdGlvbi9tc3Vic3Vw
LXN1cGVyc2NyaXB0c2hpZnQuaHRtbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiMj
IC0wLDAgKzEgIyMKK25hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkFkZGVk
OiBzdm46ZXhlY3V0YWJsZQojIyAtMCwwICsxICMjCisqClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
cHJvcGVydHkKSW5kZXg6IExheW91dFRlc3RzL21hdGhtbC9wcmVzZW50YXRpb24vbXN1cC1zdXBl
cnNjcmlwdHNoaWZ0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tYXRo
bWwvcHJlc2VudGF0aW9uL21zdXAtc3VwZXJzY3JpcHRzaGlmdC1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9tYXRobWwvcHJlc2VudGF0aW9uL21zdXAtc3VwZXJzY3Jp
cHRzaGlmdC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMCBAQAorVGVz
dHMgdGhhdCBzdXBlcnNjcmlwdHNoaWZ0IHdvcmtzIG9uIG1zdXAuIEFmdGVyIGFkZGluZyBzdXBl
cnNjcmlwdHNoaWZ0IHRoZSBoZWlnaHQgb2YgbXN1cCBlbGVtZW50IHNob3VsZCBpbmNyZWFzZQor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBoZWlnaHQgPiAxMDAgaXMgdHJ1
ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKClBy
b3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL21hdGhtbC9wcmVzZW50YXRpb24vbXN1cC1z
dXBlcnNjcmlwdHNoaWZ0LWV4cGVjdGVkLnR4dApfX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46a2V5d29y
ZHMKIyMgLTAsMCArMSAjIworQXV0aG9yIERhdGUgSWQgUmV2IFVSTApcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIHByb3BlcnR5CkFkZGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0wLDAgKzEgIyMKK25hdGl2
ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkFkZGVkOiBzdm46ZXhlY3V0YWJsZQoj
IyAtMCwwICsxICMjCisqClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IExh
eW91dFRlc3RzL21hdGhtbC9wcmVzZW50YXRpb24vbXN1cC1zdXBlcnNjcmlwdHNoaWZ0Lmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWF0aG1sL3ByZXNlbnRhdGlvbi9tc3VwLXN1cGVy
c2NyaXB0c2hpZnQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL21hdGhtbC9wcmVz
ZW50YXRpb24vbXN1cC1zdXBlcnNjcmlwdHNoaWZ0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwyNSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAg
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cisg
ICAgICAgIDxzY3JpcHQ+CisgICAgICAgICAgICBmdW5jdGlvbiBydW5UZXN0KCkgeworICAgICAg
ICAgICAgICAgIGRlc2NyaXB0aW9uKCdUZXN0cyB0aGF0IHN1cGVyc2NyaXB0c2hpZnQgd29ya3Mg
b24gbXN1cC4gQWZ0ZXIgYWRkaW5nIHN1cGVyc2NyaXB0c2hpZnQgdGhlIGhlaWdodCBvZiBtc3Vw
IGVsZW1lbnQgc2hvdWxkIGluY3JlYXNlJyk7CisKKyAgICAgICAgICAgICAgICB2YXIgcmVjdCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtc3VwRWxlIikuZ2V0Qm91bmRpbmdDbGllbnRSZWN0
KCk7CisgICAgICAgICAgICAgICAgaGVpZ2h0ID0gcmVjdC5ib3R0b20gLSByZWN0LnRvcDsKKwor
ICAgICAgICAgICAgICAgIHNob3VsZEJlVHJ1ZSgiaGVpZ2h0ID4gMTAwIik7CisgICAgICAgICAg
ICAgICAgaXNTdWNjZXNzZnVsbHlQYXJzZWQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9z
Y3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKyAgICAg
ICAgPG1hdGg+CisJCSAgICA8bXN1cCBzdXBlcnNjcmlwdHNoaWZ0PSI2MHB4IiBpZD0ibXN1cEVs
ZSI+CisgICAgICAgICAgICAgICAgPG1zcGFjZSB3aWR0aD0iNTBweCIgaGVpZ2h0PSI1MHB4IiBt
YXRoYmFja2dyb3VuZD0iZ3JlZW4iLz4KKyAgICAgICAgICAgICAgICA8bXNwYWNlIHdpZHRoPSI1
MHB4IiBoZWlnaHQ9IjUwcHgiIG1hdGhiYWNrZ3JvdW5kPSJyZWQiLz4KKyAgICAgICAgICAgIDwv
bXN1cD4KKyAgICAgICAgPC9tYXRoPgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9tYXRobWwv
cHJlc2VudGF0aW9uL21zdXAtc3VwZXJzY3JpcHRzaGlmdC5odG1sCl9fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6
IHN2bjplb2wtc3R5bGUKIyMgLTAsMCArMSAjIworbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgcHJvcGVydHkKQWRkZWQ6IHN2bjpleGVjdXRhYmxlCiMjIC0wLDAgKzEgIyMKKyoKXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogTGF5b3V0VGVzdHMvbWF0aG1sL3ByZXNl
bnRhdGlvbi9tdWx0aXNjcmlwdC1zdWJzY3JpcHRzaGlmdC1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvbWF0aG1sL3ByZXNlbnRhdGlvbi9tdWx0aXNjcmlwdC1zdWJzY3Jp
cHRzaGlmdC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9tYXRobWwv
cHJlc2VudGF0aW9uL211bHRpc2NyaXB0LXN1YnNjcmlwdHNoaWZ0LWV4cGVjdGVkLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBACitUZXN0cyB0aGF0IHN1YnNjcmlwdHNoaWZ0IHdv
cmtzIG9uIG1tdWx0aXNjcmlwdHMuIEFmdGVyIGFkZGluZyBzdWJzY3JpcHRzaGlmdCB0aGUgaGVp
Z2h0IG9mIG1tdWx0aXNjcmlwdHMgZWxlbWVudCBzaG91bGQgaW5jcmVhc2UKKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgaGVpZ2h0ID4gMTUwIGlzIHRydWUKK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCgpQcm9wZXJ0eSBjaGFu
Z2VzIG9uOiBMYXlvdXRUZXN0cy9tYXRobWwvcHJlc2VudGF0aW9uL211bHRpc2NyaXB0LXN1YnNj
cmlwdHNoaWZ0LWV4cGVjdGVkLnR4dApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiMj
IC0wLDAgKzEgIyMKK25hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkFkZGVk
OiBzdm46ZXhlY3V0YWJsZQojIyAtMCwwICsxICMjCisqClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
cHJvcGVydHkKQWRkZWQ6IHN2bjprZXl3b3JkcwojIyAtMCwwICsxICMjCitBdXRob3IgRGF0ZSBJ
ZCBSZXYgVVJMClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IExheW91dFRl
c3RzL21hdGhtbC9wcmVzZW50YXRpb24vbXVsdGlzY3JpcHQtc3Vic2NyaXB0c2hpZnQuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tYXRobWwvcHJlc2VudGF0aW9uL211bHRpc2NyaXB0
LXN1YnNjcmlwdHNoaWZ0Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9tYXRobWwv
cHJlc2VudGF0aW9uL211bHRpc2NyaXB0LXN1YnNjcmlwdHNoaWZ0Lmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwyOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4K
KyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgICAgICBmdW5jdGlvbiBydW5UZXN0KCkg
eworICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uKCdUZXN0cyB0aGF0IHN1YnNjcmlwdHNoaWZ0
IHdvcmtzIG9uIG1tdWx0aXNjcmlwdHMuIEFmdGVyIGFkZGluZyBzdWJzY3JpcHRzaGlmdCB0aGUg
aGVpZ2h0IG9mIG1tdWx0aXNjcmlwdHMgZWxlbWVudCBzaG91bGQgaW5jcmVhc2UnKTsKKworICAg
ICAgICAgICAgICAgIHZhciByZWN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm11bHRpc2Ny
aXB0RWxlIikuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CisgICAgICAgICAgICAgICAgaGVpZ2h0
ID0gcmVjdC5ib3R0b20gLSByZWN0LnRvcDsKKworICAgICAgICAgICAgICAgIHNob3VsZEJlVHJ1
ZSgiaGVpZ2h0ID4gMTUwIik7CisgICAgICAgICAgICAgICAgaXNTdWNjZXNzZnVsbHlQYXJzZWQo
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxi
b2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKyAgICAgICAgPG1hdGg+CisgICAgICAgICAgICA8bW11
bHRpc2NyaXB0cyBzdWJzY3JpcHRzaGlmdD0iNjBweCIgaWQ9Im11bHRpc2NyaXB0RWxlIj4KKyAg
ICAgICAgICAgICAgICA8bXNwYWNlIHdpZHRoPSI1MHB4IiBoZWlnaHQ9IjUwcHgiIG1hdGhiYWNr
Z3JvdW5kPSJncmVlbiIvPgorICAgICAgICAgICAgICAgIDxtc3BhY2Ugd2lkdGg9IjUwcHgiIGhl
aWdodD0iNTBweCIgbWF0aGJhY2tncm91bmQ9ImJsdWUiLz4KKyAgICAgICAgICAgICAgICA8bXNw
YWNlIHdpZHRoPSI1MHB4IiBoZWlnaHQ9IjUwcHgiIG1hdGhiYWNrZ3JvdW5kPSJyZWQiLz4KKwkJ
CQk8bXByZXNjcmlwdHMgLz4KKwkJCQk8bXNwYWNlIHdpZHRoPSI1MHB4IiBoZWlnaHQ9IjUwcHgi
IG1hdGhiYWNrZ3JvdW5kPSJ5ZWxsb3ciLz4KKyAgICAgICAgICAgICAgICA8bXNwYWNlIHdpZHRo
PSI1MHB4IiBoZWlnaHQ9IjUwcHgiIG1hdGhiYWNrZ3JvdW5kPSJibGFjayIvPgorICAgICAgICAg
ICAgPC9tbXVsdGlzY3JpcHRzPgorICAgICAgPC9tYXRoPgorICAgIDwvYm9keT4KKzwvaHRtbD4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRU
ZXN0cy9tYXRobWwvcHJlc2VudGF0aW9uL211bHRpc2NyaXB0LXN1YnNjcmlwdHNoaWZ0Lmh0bWwK
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMCwwICsxICMjCituYXRpdmUKXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpBZGRlZDogc3ZuOmV4ZWN1dGFibGUKIyMgLTAs
MCArMSAjIworKgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBMYXlvdXRU
ZXN0cy9tYXRobWwvcHJlc2VudGF0aW9uL211bHRpc2NyaXB0LXN1cGVyc2NyaXB0c2hpZnQtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21hdGhtbC9wcmVzZW50YXRpb24v
bXVsdGlzY3JpcHQtc3VwZXJzY3JpcHRzaGlmdC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9tYXRobWwvcHJlc2VudGF0aW9uL211bHRpc2NyaXB0LXN1cGVyc2NyaXB0
c2hpZnQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAgQEAKK1Rlc3Rz
IHRoYXQgc3VwZXJzY3JpcHRzaGlmdCB3b3JrcyBvbiBtbXVsdGlzY3JpcHRzLiBBZnRlciBhZGRp
bmcgc3VwZXJzY3JpcHRzaGlmdCB0aGUgaGVpZ2h0IG9mIG1tdWx0aXNjcmlwdHMgZWxlbWVudCBz
aG91bGQgaW5jcmVhc2UKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgaGVp
Z2h0ID4gMTUwIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9tYXRobWwvcHJl
c2VudGF0aW9uL211bHRpc2NyaXB0LXN1cGVyc2NyaXB0c2hpZnQtZXhwZWN0ZWQudHh0Cl9fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX18KQWRkZWQ6IHN2bjprZXl3b3JkcwojIyAtMCwwICsxICMjCitBdXRob3IgRGF0ZSBJZCBS
ZXYgVVJMClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKQWRkZWQ6IHN2bjplb2wtc3R5
bGUKIyMgLTAsMCArMSAjIworbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkK
QWRkZWQ6IHN2bjpleGVjdXRhYmxlCiMjIC0wLDAgKzEgIyMKKyoKXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBwcm9wZXJ0eQpJbmRleDogTGF5b3V0VGVzdHMvbWF0aG1sL3ByZXNlbnRhdGlvbi9tdWx0
aXNjcmlwdC1zdXBlcnNjcmlwdHNoaWZ0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
bWF0aG1sL3ByZXNlbnRhdGlvbi9tdWx0aXNjcmlwdC1zdXBlcnNjcmlwdHNoaWZ0Lmh0bWwJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9tYXRobWwvcHJlc2VudGF0aW9uL211bHRpc2NyaXB0
LXN1cGVyc2NyaXB0c2hpZnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI5IEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlw
dD4KKyAgICAgICAgICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgICAgICAgICAgICAgZGVz
Y3JpcHRpb24oJ1Rlc3RzIHRoYXQgc3VwZXJzY3JpcHRzaGlmdCB3b3JrcyBvbiBtbXVsdGlzY3Jp
cHRzLiBBZnRlciBhZGRpbmcgc3VwZXJzY3JpcHRzaGlmdCB0aGUgaGVpZ2h0IG9mIG1tdWx0aXNj
cmlwdHMgZWxlbWVudCBzaG91bGQgaW5jcmVhc2UnKTsKKworICAgICAgICAgICAgICAgIHZhciBy
ZWN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm11bHRpc2NyaXB0RWxlIikuZ2V0Qm91bmRp
bmdDbGllbnRSZWN0KCk7CisgICAgICAgICAgICAgICAgaGVpZ2h0ID0gcmVjdC5ib3R0b20gLSBy
ZWN0LnRvcDsKKworICAgICAgICAgICAgICAgIHNob3VsZEJlVHJ1ZSgiaGVpZ2h0ID4gMTUwIik7
CisgICAgICAgICAgICAgICAgaXNTdWNjZXNzZnVsbHlQYXJzZWQoKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0icnVuVGVz
dCgpIj4KKyAgICAgICAgPG1hdGg+CisgICAgICAgICAgICA8bW11bHRpc2NyaXB0cyBzdXBlcnNj
cmlwdHNoaWZ0PSI2MHB4IiBpZD0ibXVsdGlzY3JpcHRFbGUiPgorICAgICAgICAgICAgICAgIDxt
c3BhY2Ugd2lkdGg9IjUwcHgiIGhlaWdodD0iNTBweCIgbWF0aGJhY2tncm91bmQ9ImdyZWVuIi8+
CisgICAgICAgICAgICAgICAgPG1zcGFjZSB3aWR0aD0iNTBweCIgaGVpZ2h0PSI1MHB4IiBtYXRo
YmFja2dyb3VuZD0iYmx1ZSIvPgorICAgICAgICAgICAgICAgIDxtc3BhY2Ugd2lkdGg9IjUwcHgi
IGhlaWdodD0iNTBweCIgbWF0aGJhY2tncm91bmQ9InJlZCIvPgorCQkJCTxtcHJlc2NyaXB0cyAv
PgorCQkJCTxtc3BhY2Ugd2lkdGg9IjUwcHgiIGhlaWdodD0iNTBweCIgbWF0aGJhY2tncm91bmQ9
InllbGxvdyIvPgorICAgICAgICAgICAgICAgIDxtc3BhY2Ugd2lkdGg9IjUwcHgiIGhlaWdodD0i
NTBweCIgbWF0aGJhY2tncm91bmQ9ImJsYWNrIi8+CisgICAgICAgICAgICA8L21tdWx0aXNjcmlw
dHM+CisgICAgICA8L21hdGg+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL21hdGhtbC9wcmVz
ZW50YXRpb24vbXVsdGlzY3JpcHQtc3VwZXJzY3JpcHRzaGlmdC5odG1sCl9fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRk
ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTAsMCArMSAjIworbmF0aXZlClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgcHJvcGVydHkKQWRkZWQ6IHN2bjpleGVjdXRhYmxlCiMjIC0wLDAgKzEgIyMKKyoKXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>