<?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>60673</bug_id>
          
          <creation_ts>2011-05-11 16:24:06 -0700</creation_ts>
          <short_desc>&lt;input type=number&gt; doesn&apos;t ignore size=&quot;&quot; attribute</short_desc>
          <delta_ts>2011-08-08 02:17:13 -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>Forms</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ian &apos;Hixie&apos; Hickson">ian</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>dglazkov</cc>
    
    <cc>shinyak</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>402402</commentid>
    <comment_count>0</comment_count>
    <who name="Ian &apos;Hixie&apos; Hickson">ian</who>
    <bug_when>2011-05-11 16:24:06 -0700</bug_when>
    <thetext>&lt;input type=number&gt; is supposed to size according to the min/max/step attributes so that it will be as wide as necessary to represent the longest allowed number:

# These controls are all expected to be about one line high, and about as wide as necessary to show the widest possible value.
 -- http://www.whatwg.org/specs/web-apps/current-work/complete.html#the-input-element-as-domain-specific-widgets

Currently WebKit doesn&apos;t size per the min/max/step and does support size=&quot;&quot;, which should be ignored on type=number elements.

Testcase:
http://software.hixie.ch/utilities/js/live-dom-viewer/saved/980</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442153</commentid>
    <comment_count>1</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2011-07-26 01:59:23 -0700</bug_when>
    <thetext>When the input does not have min or max value, the possible value could be very large. The default max value is currently FLOAT_MAX, i.e. 3.402823466e+38. So the length of possible value could be around 40, because the current implementation does not use scientific format in some situation. This means the input width could be very large.

What do you think about it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442157</commentid>
    <comment_count>2</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-07-26 02:16:09 -0700</bug_when>
    <thetext>IMO, We should adjust the width for the longest numer If and only if the number field have both of min= and max=. Otherwise, the number field should have the same width as the default width of type=text.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444278</commentid>
    <comment_count>3</comment_count>
      <attachid>102434</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2011-07-30 06:21:55 -0700</bug_when>
    <thetext>Created attachment 102434
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444279</commentid>
    <comment_count>4</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2011-07-30 06:23:57 -0700</bug_when>
    <thetext>Sorry, this patch is not the final version yet.

Kent, could you let me know how to check width property is defined or not?
This should be used in HTMLInputType::shouldAvoidReformat().

The other code should be reviewable though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444299</commentid>
    <comment_count>5</comment_count>
      <attachid>102434</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-07-30 10:53:45 -0700</bug_when>
    <thetext>Comment on attachment 102434
Patch

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

&gt; LayoutTests/fast/forms/input-number-size.html:19
&gt; +    text.size = size;
&gt; +    number.step = step;
&gt; +    number.min = min;
&gt; +    number.max = max;
&gt; +    shouldBe(&apos;number.offsetWidth&apos;, &apos;text.offsetWidth&apos;);

This can be structured so the test output is much nicer! The test output should include the values of size, step, min, and max. That can be done by making a function that sets up the text and number and then computes the width like this:

    shouldBe(&apos;numberWidth(&apos; + step + &apos;, &apos; + min + &apos;, &apos; + max + &apos;)&apos;, &apos;textWidth(&apos; + size + &apos;)&apos;);

Then you just write the numberWidth and textWidth functions:

    function textWidth(size)
    {
        text.size  = size;
        return text.offsetWidth;
    }

If you do that, the test output will be informative instead of just a long row of PASS PASS PASS.

&gt; Source/WebCore/html/HTMLInputElement.cpp:998
&gt; +int HTMLInputElement::possibleContentSize() const

What is &quot;possible content size&quot;? Is it the maximum size that would be needed for the largest possible allowed content? I understand that size means &quot;number of characters&quot;, and &quot;content&quot; means &quot;text in the input element&quot;, but what does the word &quot;possible&quot; mean here? This name is not clear.

&gt; Source/WebCore/html/NumberInputType.cpp:61
&gt; +    double absValue = fabs(value);

No reason to abbreviate here. How about &quot;absoluteValue&quot; instead of &quot;absValue&quot;.

&gt; Source/WebCore/html/NumberInputType.cpp:65
&gt; +    unsigned length = static_cast&lt;int&gt;(log10(floor(absValue))) + 1;

Why cast to an int and then convert to an unsigned?

&gt; Source/WebCore/html/NumberInputType.cpp:145
&gt; +    unsigned minValueDecimalPlaces, maxValueDecimalPlaces, stepValueDecimalPlaces;
&gt; +    double minValueDouble, maxValueDouble, stepValueDouble;

We don’t declare multiple variables on a single line in WebKit code.

&gt; Source/WebCore/html/NumberInputType.cpp:354
&gt; +bool NumberInputType::shouldAvoidReformat()

&quot;should avoid reformat&quot; is not good grammar. And I have no idea what it means. What is a &quot;reformat&quot;?

&gt; Source/WebCore/html/NumberInputType.cpp:356
&gt; +    // TODO:

?

&gt; Source/WebCore/platform/text/LocalizedNumber.h:54
&gt; +String getLocalizedDecimalPoint();

We don’t use get in function names like this in WebKit.

&gt; Source/WebCore/rendering/RenderTextControlSingleLine.cpp:429
&gt; +    if (RenderBox* spinRenderer = spinButton ? spinButton-&gt;renderBox() : 0)
&gt; +        result += spinRenderer-&gt;borderLeft() + spinRenderer-&gt;borderRight() +
&gt; +                  spinRenderer-&gt;paddingLeft() + spinRenderer-&gt;paddingRight();

We don’t line up subsequent lines like this. We use braces if there are multiple lines in an if statement body.

I don’t see any coverage of this code change in the test case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444534</commentid>
    <comment_count>6</comment_count>
      <attachid>102434</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-07-31 23:13:18 -0700</bug_when>
    <thetext>Comment on attachment 102434
Patch

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

&gt; LayoutTests/ChangeLog:10
&gt; +
&gt; +        * fast/forms/input-number-size-expected.txt: Added.
&gt; +        * fast/forms/input-number-size.html: Added.
&gt; +

I think we need to update some others tests in fast/forms/.

&gt; Source/WebCore/ChangeLog:8
&gt; +        The input[type=number] element should be as wide as necessary to show the widest possible value.
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=60673
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        Test: fast/forms/input-number-size.html

You should explain behaviors which the patch will introduce.

&gt; Source/WebCore/html/NumberInputType.cpp:358
&gt; +    if (element()-&gt;renderStyle() &amp;&amp; !element()-&gt;renderStyle()-&gt;width().isUndefined())
&gt; +        return true;

!element()-&gt;renderStyle()-&gt;width().isAuto() is probably what you want.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444692</commentid>
    <comment_count>7</comment_count>
      <attachid>102518</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2011-08-01 07:56:45 -0700</bug_when>
    <thetext>Created attachment 102518
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444723</commentid>
    <comment_count>8</comment_count>
      <attachid>102525</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2011-08-01 09:37:03 -0700</bug_when>
    <thetext>Created attachment 102525
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444728</commentid>
    <comment_count>9</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2011-08-01 09:47:04 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; I think we need to update some others tests in fast/forms/.

I have confirmed that all tests in fast/form/* passes with my patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445103</commentid>
    <comment_count>10</comment_count>
      <attachid>102525</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-08-01 22:15:57 -0700</bug_when>
    <thetext>Comment on attachment 102525
Patch

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

&gt; LayoutTests/fast/forms/input-number-size.html:60
&gt; +number.size = 10;
&gt; +shouldBe(&apos;number.offsetWidth&apos;, &apos;text.offsetWidth&apos;);

These lines should be:
  shouldBe(&apos;number.size = 10; number.offsetWidth&apos;, &apos;text.offsetWidth&apos;);
to show what is tested.

&gt; LayoutTests/fast/forms/input-number-size.html:63
&gt; +number.size = 100;
&gt; +shouldBe(&apos;number.offsetWidth&apos;, &apos;text.offsetWidth&apos;);

ditto.

&gt; LayoutTests/fast/forms/input-number-size.html:81
&gt; +shouldBe(&apos;numberWidth(0, 10, 1, &quot;style1&quot;)&apos;, &apos;textWidth(2) + 20&apos;);

Why +20?
- You should define variable for the style1 border width.  e.g. var style1Borders = 20;, and use it
- This test case means the text edit area of the number field doesn&apos;t have enough width for two letters because of the width of the spin button, right?

&gt; Source/WebCore/ChangeLog:9
&gt; +        The size of input[type=number] is calculated from min/max/step attributes to show the widest possible value.
&gt; +        If min or max attribute is absent, the default size is used.

You had better explain the behavior of setting min/max/step attributes while the field is shown.

&gt; Source/WebCore/html/HTMLInputElement.cpp:1004
&gt; +int HTMLInputElement::preferredSize() const
&gt; +{
&gt; +    if (m_inputType-&gt;shouldRespectSizeAttribute())
&gt; +        return size();
&gt; +
&gt; +    return m_inputType-&gt;maxNumberOfCharacters(defaultSize);
&gt; +}

It seems we don&apos;t need to introduce two new functions for InputType. We can remove shouldRespectSizeAttribute() and maxNumberOfCharacters(), and add InputType::preferredSize().

&gt; Source/WebCore/html/NumberInputType.cpp:149
&gt; +    if (minValueDouble &lt; -limit || limit &lt; minValueDouble)
&gt; +        return defaultSize;

This limit check is already done in parseToDoubleForNumberType*().

&gt; Source/WebCore/html/NumberInputType.cpp:157
&gt; +    if (maxValueDouble &lt; -limit || limit &lt; maxValueDouble)
&gt; +        return defaultSize;

ditto.

&gt; Source/WebCore/html/NumberInputType.cpp:172
&gt; +    if (stepValue.isEmpty()) {
&gt; +        stepValueDouble = 1;
&gt; +        stepValueDecimalPlaces = 0;
&gt; +    } else {
&gt; +        if (!parseToDoubleForNumberTypeWithDecimalPlaces(stepValue, &amp;stepValueDouble, &amp;stepValueDecimalPlaces))
&gt; +            return defaultSize;

if the step attribute value is an invalid string, the effective step value is &quot;1&quot;.  Returning defaultSize looks wrong.

&gt; Source/WebCore/rendering/RenderTextControlSingleLine.cpp:430
&gt; +    HTMLElement* spinButton = innerSpinButtonElement();
&gt; +    if (RenderBox* spinRenderer = spinButton ? spinButton-&gt;renderBox() : 0) {
&gt; +        result += spinRenderer-&gt;borderLeft() + spinRenderer-&gt;borderRight() +
&gt; +                  spinRenderer-&gt;paddingLeft() + spinRenderer-&gt;paddingRight();
&gt; +    }

Why you add only borders and paddings, and not the content of the spin button?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447085</commentid>
    <comment_count>11</comment_count>
      <attachid>103047</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2011-08-05 00:26:33 -0700</bug_when>
    <thetext>Created attachment 103047
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447092</commentid>
    <comment_count>12</comment_count>
      <attachid>103047</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-08-05 00:42:16 -0700</bug_when>
    <thetext>Comment on attachment 103047
Patch

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

&gt; LayoutTests/fast/forms/input-number-size.html:44
&gt; +// The width of spin button should differ by environment. So it should be calculated here.
&gt; +var spinButtonWidth = number.offsetWidth - numberWithoutSpinButton.offsetWidth;

I think spinButtonWidth is 0 because these widths are same.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447193</commentid>
    <comment_count>13</comment_count>
      <attachid>103047</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-05 07:14:20 -0700</bug_when>
    <thetext>Comment on attachment 103047
Patch

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

New failing tests:
fast/forms/input-appearance-spinbutton-layer.html
fast/speech/input-appearance-numberandspeech.html
fast/forms/input-widths.html
fast/forms/input-appearance-spinbutton-disabled-readonly.html
fast/forms/input-appearance-number-rtl.html
fast/forms/input-number-size.html
fast/forms/input-appearance-spinbutton-visibility.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447194</commentid>
    <comment_count>14</comment_count>
      <attachid>103047</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-08-05 07:15:41 -0700</bug_when>
    <thetext>Comment on attachment 103047
Patch

r- because of regressions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447864</commentid>
    <comment_count>15</comment_count>
      <attachid>103208</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2011-08-07 23:51:52 -0700</bug_when>
    <thetext>Created attachment 103208
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447873</commentid>
    <comment_count>16</comment_count>
      <attachid>103208</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-08-08 00:09:08 -0700</bug_when>
    <thetext>Comment on attachment 103208
Patch

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

&gt; Source/WebCore/html/InputType.h:146
&gt; +    virtual bool sizeShouldIncludeDecoration(int defaultSize, int* preferredSize) const;

We had better change the argument type from int* to int&amp;.  We can remove null-checks by it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447908</commentid>
    <comment_count>17</comment_count>
      <attachid>103221</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2011-08-08 01:38:25 -0700</bug_when>
    <thetext>Created attachment 103221
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447911</commentid>
    <comment_count>18</comment_count>
      <attachid>103221</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-08-08 01:42:30 -0700</bug_when>
    <thetext>Comment on attachment 103221
Patch

ok.
Thank you for woking on this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447921</commentid>
    <comment_count>19</comment_count>
      <attachid>103221</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-08 02:17:07 -0700</bug_when>
    <thetext>Comment on attachment 103221
Patch

Clearing flags on attachment: 103221

Committed r92589: &lt;http://trac.webkit.org/changeset/92589&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447922</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-08 02:17:13 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102434</attachid>
            <date>2011-07-30 06:21:55 -0700</date>
            <delta_ts>2011-08-01 07:56:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-60673-20110730222154.patch</filename>
            <type>text/plain</type>
            <size>20698</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTE5NjkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3MDI4NTY3Zjg2ZWI1NzFiNGQ5MzMx
M2JiODM4ZmUzNjdkMjQwNDE0Li4zYTgxMzkxNDUzZWRlZDM2MTJlZTVkOGJmZmU2ODc1ZDViMGQ1
ZDA5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDctMzAgIFNoaW55YSBLYXdhbmFrYSAg
PHNoaW55YWtAZ29vZ2xlLmNvbT4KKworICAgICAgICBBZGRlZCB0aGUgdGVzdCB0byBjaGVjayB0
aGUgd2lkdGggb2YgaW5wdXRbdHlwZT1udW1iZXJdLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjA2NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZm9ybXMvaW5wdXQtbnVtYmVyLXNpemUtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL2lucHV0LW51bWJlci1zaXpl
Lmh0bWw6IEFkZGVkLgorCiAyMDExLTA3LTI4ICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBbUXRdIEZpeCBzdHlsZSBlcnJvcnMgb2YgdGVzdF9leHBlY3RhdGlv
bnMudHh0LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1udW1iZXIt
c2l6ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lucHV0LW51bWJlci1z
aXplLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMjBlM2JmNzU5ZmFjMWE0ZmZkNTI2OWUzZWI0
ZjI2N2MwNmJiZDNiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9p
bnB1dC1udW1iZXItc2l6ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw3NCBAQAorVGVzdCBmb3Ig
c2l6ZSBhdHRyaWJ1dGUgb2YgaW5wdXQKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
K1RoZSBudW1iZXIgaW5wdXQgd2l0aG91dCBtaW4vbWF4L3N0ZXAgaGFzIHRoZSBzYW1lIHdpZHRo
IGFzIHRleHQgaW5wdXQKK1BBU1MgbnVtYmVyLm9mZnNldFdpZHRoIGlzIHRleHQub2Zmc2V0V2lk
dGgKKworVGhlIG51bWJlciBpbnB1dCBzaG91bGQgaWdub3JlIHNpemUgYXR0cmlidXRlIGZvciBs
YXlvdXQKK1BBU1MgbnVtYmVyLm9mZnNldFdpZHRoIGlzIHRleHQub2Zmc2V0V2lkdGgKK1BBU1Mg
bnVtYmVyLnNpemUgaXMgMTAKK1BBU1MgbnVtYmVyLm9mZnNldFdpZHRoIGlzIHRleHQub2Zmc2V0
V2lkdGgKK1BBU1MgbnVtYmVyLnNpemUgaXMgMTAwCisKK0lmIG1pbiBvciBtYXggaXMgYWJzZW50
LCB0aGUgbnVtYmVyIGlucHV0IGhhcyB0aGUgc2FtZSB3aWR0aCBhcyBpbnB1dFt0eXBlPXRleHRd
CitQQVNTIG51bWJlci5vZmZzZXRXaWR0aCBpcyB0ZXh0Lm9mZnNldFdpZHRoCitQQVNTIG51bWJl
ci5vZmZzZXRXaWR0aCBpcyB0ZXh0Lm9mZnNldFdpZHRoCitQQVNTIG51bWJlci5vZmZzZXRXaWR0
aCBpcyB0ZXh0Lm9mZnNldFdpZHRoCisKK0lmIHN0ZXAgaXMgYW55LCB0aGUgaW5wdXRbdHlwZT10
ZXh0XSBoYXMgdGhlIHNhbWUgd2lkdGggYXMgaW5wdXRbdHlwZT10ZXh0XQorUEFTUyBudW1iZXIu
b2Zmc2V0V2lkdGggaXMgdGV4dC5vZmZzZXRXaWR0aAorUEFTUyBudW1iZXIub2Zmc2V0V2lkdGgg
aXMgdGV4dC5vZmZzZXRXaWR0aAorUEFTUyBudW1iZXIub2Zmc2V0V2lkdGggaXMgdGV4dC5vZmZz
ZXRXaWR0aAorUEFTUyBudW1iZXIub2Zmc2V0V2lkdGggaXMgdGV4dC5vZmZzZXRXaWR0aAorCitU
aGUgZGVmYXVsdCBzdGVwIGRvZXMgbm90IG5lZWQgdG8gYmUgY29uc2lkZXJlZC4KK1BBU1MgbnVt
YmVyLm9mZnNldFdpZHRoIGlzIHRleHQub2Zmc2V0V2lkdGgKK1BBU1MgbnVtYmVyLm9mZnNldFdp
ZHRoIGlzIHRleHQub2Zmc2V0V2lkdGgKK1BBU1MgbnVtYmVyLm9mZnNldFdpZHRoIGlzIHRleHQu
b2Zmc2V0V2lkdGgKK1BBU1MgbnVtYmVyLm9mZnNldFdpZHRoIGlzIHRleHQub2Zmc2V0V2lkdGgK
K1BBU1MgbnVtYmVyLm9mZnNldFdpZHRoIGlzIHRleHQub2Zmc2V0V2lkdGgKK1BBU1MgbnVtYmVy
Lm9mZnNldFdpZHRoIGlzIHRleHQub2Zmc2V0V2lkdGgKK1BBU1MgbnVtYmVyLm9mZnNldFdpZHRo
IGlzIHRleHQub2Zmc2V0V2lkdGgKK1BBU1MgbnVtYmVyLm9mZnNldFdpZHRoIGlzIHRleHQub2Zm
c2V0V2lkdGgKKworQ2hlY2sgdGhlIHdpZHRoIG9mIGEgbnVtYmVyIGlucHV0IHdoZW4gbWluL21h
eC9zdGVwIGlzIGNoYW5nZWQgdmFyaW91c2x5CitQQVNTIG51bWJlci5vZmZzZXRXaWR0aCBpcyB0
ZXh0Lm9mZnNldFdpZHRoCitQQVNTIG51bWJlci5vZmZzZXRXaWR0aCBpcyB0ZXh0Lm9mZnNldFdp
ZHRoCitQQVNTIG51bWJlci5vZmZzZXRXaWR0aCBpcyB0ZXh0Lm9mZnNldFdpZHRoCitQQVNTIG51
bWJlci5vZmZzZXRXaWR0aCBpcyB0ZXh0Lm9mZnNldFdpZHRoCitQQVNTIG51bWJlci5vZmZzZXRX
aWR0aCBpcyB0ZXh0Lm9mZnNldFdpZHRoCitQQVNTIG51bWJlci5vZmZzZXRXaWR0aCBpcyB0ZXh0
Lm9mZnNldFdpZHRoCitQQVNTIG51bWJlci5vZmZzZXRXaWR0aCBpcyB0ZXh0Lm9mZnNldFdpZHRo
CitQQVNTIG51bWJlci5vZmZzZXRXaWR0aCBpcyB0ZXh0Lm9mZnNldFdpZHRoCitQQVNTIG51bWJl
ci5vZmZzZXRXaWR0aCBpcyB0ZXh0Lm9mZnNldFdpZHRoCitQQVNTIG51bWJlci5vZmZzZXRXaWR0
aCBpcyB0ZXh0Lm9mZnNldFdpZHRoCitQQVNTIG51bWJlci5vZmZzZXRXaWR0aCBpcyB0ZXh0Lm9m
ZnNldFdpZHRoCitQQVNTIG51bWJlci5vZmZzZXRXaWR0aCBpcyB0ZXh0Lm9mZnNldFdpZHRoCitQ
QVNTIG51bWJlci5vZmZzZXRXaWR0aCBpcyB0ZXh0Lm9mZnNldFdpZHRoCitQQVNTIG51bWJlci5v
ZmZzZXRXaWR0aCBpcyB0ZXh0Lm9mZnNldFdpZHRoCitQQVNTIG51bWJlci5vZmZzZXRXaWR0aCBp
cyB0ZXh0Lm9mZnNldFdpZHRoCitQQVNTIG51bWJlci5vZmZzZXRXaWR0aCBpcyB0ZXh0Lm9mZnNl
dFdpZHRoCitQQVNTIG51bWJlci5vZmZzZXRXaWR0aCBpcyB0ZXh0Lm9mZnNldFdpZHRoCitQQVNT
IG51bWJlci5vZmZzZXRXaWR0aCBpcyB0ZXh0Lm9mZnNldFdpZHRoCitQQVNTIG51bWJlci5vZmZz
ZXRXaWR0aCBpcyB0ZXh0Lm9mZnNldFdpZHRoCitQQVNTIG51bWJlci5vZmZzZXRXaWR0aCBpcyB0
ZXh0Lm9mZnNldFdpZHRoCitQQVNTIG51bWJlci5vZmZzZXRXaWR0aCBpcyB0ZXh0Lm9mZnNldFdp
ZHRoCitQQVNTIG51bWJlci5vZmZzZXRXaWR0aCBpcyB0ZXh0Lm9mZnNldFdpZHRoCitQQVNTIG51
bWJlci5vZmZzZXRXaWR0aCBpcyB0ZXh0Lm9mZnNldFdpZHRoCitQQVNTIG51bWJlci5vZmZzZXRX
aWR0aCBpcyB0ZXh0Lm9mZnNldFdpZHRoCitQQVNTIG51bWJlci5vZmZzZXRXaWR0aCBpcyB0ZXh0
Lm9mZnNldFdpZHRoCitQQVNTIG51bWJlci5vZmZzZXRXaWR0aCBpcyB0ZXh0Lm9mZnNldFdpZHRo
CitQQVNTIG51bWJlci5vZmZzZXRXaWR0aCBpcyB0ZXh0Lm9mZnNldFdpZHRoCitQQVNTIG51bWJl
ci5vZmZzZXRXaWR0aCBpcyB0ZXh0Lm9mZnNldFdpZHRoCitQQVNTIG51bWJlci5vZmZzZXRXaWR0
aCBpcyB0ZXh0Lm9mZnNldFdpZHRoCitQQVNTIG51bWJlci5vZmZzZXRXaWR0aCBpcyB0ZXh0Lm9m
ZnNldFdpZHRoCitQQVNTIG51bWJlci5vZmZzZXRXaWR0aCBpcyB0ZXh0Lm9mZnNldFdpZHRoCitQ
QVNTIG51bWJlci5vZmZzZXRXaWR0aCBpcyB0ZXh0Lm9mZnNldFdpZHRoCitQQVNTIG51bWJlci5v
ZmZzZXRXaWR0aCBpcyB0ZXh0Lm9mZnNldFdpZHRoCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL2lucHV0LW51bWJlci1zaXplLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lu
cHV0LW51bWJlci1zaXplLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODdjN2E3YjNiYTgwZTZjYmY1NjBlZGZh
NDUzZDg1NmIyNmM1NGMwYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9y
bXMvaW5wdXQtbnVtYmVyLXNpemUuaHRtbApAQCAtMCwwICsxLDEwOCBAQAorPCFET0NUWVBFIEhU
TUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1z
dHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48
L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdU
ZXN0IGZvciBzaXplIGF0dHJpYnV0ZSBvZiBpbnB1dCcpOworCitmdW5jdGlvbiBzaG91bGRCZVRo
ZVNhbWVXaWR0aChzaXplLCBtaW4sIG1heCwgc3RlcCkgeworICAgIHRleHQuc2l6ZSA9IHNpemU7
CisgICAgbnVtYmVyLnN0ZXAgPSBzdGVwOworICAgIG51bWJlci5taW4gPSBtaW47CisgICAgbnVt
YmVyLm1heCA9IG1heDsKKyAgICBzaG91bGRCZSgnbnVtYmVyLm9mZnNldFdpZHRoJywgJ3RleHQu
b2Zmc2V0V2lkdGgnKTsKK30KKwordmFyIHBhcmVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J2RpdicpOworZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChwYXJlbnQpOworcGFyZW50LmlubmVy
SFRNTCA9ICc8aW5wdXQgdHlwZT1udW1iZXIgaWQ9bnVtYmVyPjxpbnB1dCB0eXBlPXRleHQgaWQ9
dGV4dD4nCit2YXIgbnVtYmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ251bWJlcicpOwor
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGV4dCcpOworCitkZWJ1ZygnVGhl
IG51bWJlciBpbnB1dCB3aXRob3V0IG1pbi9tYXgvc3RlcCBoYXMgdGhlIHNhbWUgd2lkdGggYXMg
dGV4dCBpbnB1dCcpOworc2hvdWxkQmUoJ251bWJlci5vZmZzZXRXaWR0aCcsICd0ZXh0Lm9mZnNl
dFdpZHRoJyk7CitkZWJ1ZygnJykKKworZGVidWcoJ1RoZSBudW1iZXIgaW5wdXQgc2hvdWxkIGln
bm9yZSBzaXplIGF0dHJpYnV0ZSBmb3IgbGF5b3V0Jyk7CitudW1iZXIuc2l6ZSA9IDEwOworc2hv
dWxkQmUoJ251bWJlci5vZmZzZXRXaWR0aCcsICd0ZXh0Lm9mZnNldFdpZHRoJyk7CitzaG91bGRC
ZSgnbnVtYmVyLnNpemUnLCAnMTAnKTsKK251bWJlci5zaXplID0gMTAwOworc2hvdWxkQmUoJ251
bWJlci5vZmZzZXRXaWR0aCcsICd0ZXh0Lm9mZnNldFdpZHRoJyk7CitzaG91bGRCZSgnbnVtYmVy
LnNpemUnLCAnMTAwJyk7CitudW1iZXIuc2l6ZSA9IG51bGw7CitkZWJ1ZygnJykKKworZGVidWco
J0lmIG1pbiBvciBtYXggaXMgYWJzZW50LCB0aGUgbnVtYmVyIGlucHV0IGhhcyB0aGUgc2FtZSB3
aWR0aCBhcyBpbnB1dFt0eXBlPXRleHRdJykKK3Nob3VsZEJlVGhlU2FtZVdpZHRoKG51bGwsIDAs
IG51bGwsIG51bGwpOworc2hvdWxkQmVUaGVTYW1lV2lkdGgobnVsbCwgbnVsbCwgMTAwLCBudWxs
KTsKK3Nob3VsZEJlVGhlU2FtZVdpZHRoKG51bGwsIG51bGwsIG51bGwsIDEwMCk7CitkZWJ1Zygn
Jyk7CisKK2RlYnVnKCdJZiBzdGVwIGlzIGFueSwgdGhlIGlucHV0W3R5cGU9dGV4dF0gaGFzIHRo
ZSBzYW1lIHdpZHRoIGFzIGlucHV0W3R5cGU9dGV4dF0nKQorc2hvdWxkQmVUaGVTYW1lV2lkdGgo
bnVsbCwgMCwgMSwgJ2FueScpOworc2hvdWxkQmVUaGVTYW1lV2lkdGgobnVsbCwgMCwgMTAsICdh
bnknKTsKK3Nob3VsZEJlVGhlU2FtZVdpZHRoKG51bGwsIDAsIDEuMSwgJ2FueScpOworc2hvdWxk
QmVUaGVTYW1lV2lkdGgobnVsbCwgMCwgMSwgJ2FueScpOworZGVidWcoJycpOworCitkZWJ1Zygn
VGhlIGRlZmF1bHQgc3RlcCBkb2VzIG5vdCBuZWVkIHRvIGJlIGNvbnNpZGVyZWQuJykKK3Nob3Vs
ZEJlVGhlU2FtZVdpZHRoKDEsIDAsIDEsIG51bGwpOworc2hvdWxkQmVUaGVTYW1lV2lkdGgoMywg
MCwgMTAwLCBudWxsKTsKK3Nob3VsZEJlVGhlU2FtZVdpZHRoKDQsIC0xMDAsIDEsIG51bGwpOwor
c2hvdWxkQmVUaGVTYW1lV2lkdGgoMSwgMC4wLCAxLjAsIG51bGwpOworc2hvdWxkQmVUaGVTYW1l
V2lkdGgoMywgMC41LCAxLjUsIG51bGwpOworc2hvdWxkQmVUaGVTYW1lV2lkdGgoNCwgLTAuNSwg
MS41LCBudWxsKTsKK3Nob3VsZEJlVGhlU2FtZVdpZHRoKDExLCAxZSsxMCwgMWUrMTAgKyAxLCBu
dWxsKTsKK3Nob3VsZEJlVGhlU2FtZVdpZHRoKDEyLCAtMWUrMTAsIDFlKzEwICsgMSwgbnVsbCk7
CitkZWJ1ZygnJyk7CisKK2RlYnVnKCdDaGVjayB0aGUgd2lkdGggb2YgYSBudW1iZXIgaW5wdXQg
d2hlbiBtaW4vbWF4L3N0ZXAgaXMgY2hhbmdlZCB2YXJpb3VzbHknKQorc2hvdWxkQmVUaGVTYW1l
V2lkdGgoMSwgMCwgMSwgMSk7CitzaG91bGRCZVRoZVNhbWVXaWR0aCgyLCAwLCAxMCwgMSk7Citz
aG91bGRCZVRoZVNhbWVXaWR0aCgzLCAwLCAxMDAsIDEpOworc2hvdWxkQmVUaGVTYW1lV2lkdGgo
NCwgMCwgMTAwMCwgMSk7CitzaG91bGRCZVRoZVNhbWVXaWR0aCg1LCAwLCAxMDAwMCwgMSk7Citz
aG91bGRCZVRoZVNhbWVXaWR0aCg2LCAwLCAxMDAwMDAsIDEpOworc2hvdWxkQmVUaGVTYW1lV2lk
dGgoNywgMCwgMTAwMDAwMCwgMSk7CitzaG91bGRCZVRoZVNhbWVXaWR0aCg4LCAwLCAxMDAwMDAw
MCwgMSk7CitzaG91bGRCZVRoZVNhbWVXaWR0aCg5LCAwLCAxMDAwMDAwMDAsIDEpOworc2hvdWxk
QmVUaGVTYW1lV2lkdGgoMTAsIDAsIDEwMDAwMDAwMDAsIDEpOworc2hvdWxkQmVUaGVTYW1lV2lk
dGgoMiwgLTEsIDAsIDEpOworc2hvdWxkQmVUaGVTYW1lV2lkdGgoMywgLTEwLCAwLCAxKTsKK3No
b3VsZEJlVGhlU2FtZVdpZHRoKDQsIC0xMDAsIDAsIDEpOworc2hvdWxkQmVUaGVTYW1lV2lkdGgo
NSwgLTEwMDAsIDAsIDEpOworc2hvdWxkQmVUaGVTYW1lV2lkdGgoNiwgLTEwMDAwLCAwLCAxKTsK
K3Nob3VsZEJlVGhlU2FtZVdpZHRoKDcsIC0xMDAwMDAsIDAsIDEpOworc2hvdWxkQmVUaGVTYW1l
V2lkdGgoOCwgLTEwMDAwMDAsIDAsIDEpOworc2hvdWxkQmVUaGVTYW1lV2lkdGgoOSwgLTEwMDAw
MDAwLCAwLCAxKTsKK3Nob3VsZEJlVGhlU2FtZVdpZHRoKDEwLCAtMTAwMDAwMDAwLCAwLCAxKTsK
K3Nob3VsZEJlVGhlU2FtZVdpZHRoKDExLCAtMTAwMDAwMDAwMCwgMCwgMSk7CitzaG91bGRCZVRo
ZVNhbWVXaWR0aCgzLCAwLCAxLCAwLjUpOworc2hvdWxkQmVUaGVTYW1lV2lkdGgoNCwgMCwgMSwg
MC4wNSk7CitzaG91bGRCZVRoZVNhbWVXaWR0aCg1LCAwLCAxLCAwLjAwNSk7CitzaG91bGRCZVRo
ZVNhbWVXaWR0aCg2LCAwLCAxLCAwLjAwMDUpOworc2hvdWxkQmVUaGVTYW1lV2lkdGgoNywgMCwg
MSwgMC4wMDAwNSk7CitzaG91bGRCZVRoZVNhbWVXaWR0aCg4LCAwLCAxLCAwLjAwMDAwNSk7Citz
aG91bGRCZVRoZVNhbWVXaWR0aCg5LCAwLCAxLCAwLjAwMDAwMDUpOworc2hvdWxkQmVUaGVTYW1l
V2lkdGgoMywgMC41LCAxLCAxKTsKK3Nob3VsZEJlVGhlU2FtZVdpZHRoKDQsIDAuMDUsIDEsIDEp
Oworc2hvdWxkQmVUaGVTYW1lV2lkdGgoNSwgMC4wMDUsIDEsIDEpOworc2hvdWxkQmVUaGVTYW1l
V2lkdGgoMywgMS41LCAyLCAxKTsKK3Nob3VsZEJlVGhlU2FtZVdpZHRoKDQsIDEuMDUsIDIsIDEp
Oworc2hvdWxkQmVUaGVTYW1lV2lkdGgoNSwgMS4wMDUsIDIsIDEpOworZGVidWcoJycpCisKK3Zh
ciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+CisKKworPHNjcmlwdCBzcmM9
Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmQzMDVhMWJmYmU1ZThiZTU0YmVkNmYwYzgzMzEz
NTJlYTYwMTg2MC4uZmMyMGM0MTY1MGEyYzc2YmU3MDk3M2Y3MjEzOWQ5ZTA2MmU1ZGU5OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDExLTA3LTMwICBTaGlueWEgS2F3YW5ha2EgIDxz
aGlueWFrQGdvb2dsZS5jb20+CisKKyAgICAgICAgVGhlIGlucHV0W3R5cGU9bnVtYmVyXSBlbGVt
ZW50IHNob3VsZCBiZSBhcyB3aWRlIGFzIG5lY2Vzc2FyeSB0byBzaG93IHRoZSB3aWRlc3QgcG9z
c2libGUgdmFsdWUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02MDY3MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRlc3Q6IGZhc3QvZm9ybXMvaW5wdXQtbnVtYmVyLXNpemUuaHRtbAorCisgICAgICAgICog
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVs
ZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgICAgQWRkZWQgc3RlcEF0dHJp
YnV0ZUNoYW5nZWQgaGFuZGxlci4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6
OnBvc3NpYmxlQ29udGVudFNpemUpOgorICAgICAgICAgICBBZGRlZCB0byBnZXQgdGhlIHdpZGVz
dCBwb3NzaWJsZSBjb250ZW50IGxlbmd0aC4KKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1l
bnQuaDoKKyAgICAgICAgKiBodG1sL0lucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnB1dFR5cGU6OnBvc3NpYmxlQ29udGVudFNpemUpOgorICAgICAgICAgICBSZXR1cm5zIHRoZSB3
aWRlc3QgcG9zc2libGUgY29udGVudCBsZW5ndGguIElmIG5vdCBvdmVycmlkZW4sIHNpemUoKSBp
cyB1c2VkIGluc3RlYWQuCisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OnN0ZXBBdHRyaWJ1
dGVDaGFuZ2VkKToKKyAgICAgICAgICAgV2lsbCBiZSBjYWxsZWQgd2hlbiBzdGVwIGF0dHJpYnV0
ZSBpcyBjaGFuZ2VkLgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBlLmg6CisgICAgICAgICogaHRt
bC9OdW1iZXJJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bGVuZ3RoQmVmb3JlRGVj
aW1hbFBvaW50KToKKyAgICAgICAgICAgQWRkZWQgdG8gY2FsY3VsYXRlIHRoZSB3aWR0aCBiZWZv
cmUgdGhlIGRlY2ltYWwgcG9pbnQuCisgICAgICAgIChXZWJDb3JlOjpOdW1iZXJJbnB1dFR5cGU6
OnBvc3NpYmxlQ29udGVudFNpemUpOgorICAgICAgICAgICBSZXR1cm5zIHRoZSB3aWRlc3QgcG9z
c2libGUgY29udGVudCBsZW5ndGggaWYgbWluL21heCBhcmUgZGVmaW5lZCwgYW5kIHN0ZXAgaXMg
ZGVmaW5lZCBjb3JyZWN0bHkuCisgICAgICAgIChXZWJDb3JlOjpOdW1iZXJJbnB1dFR5cGU6Om1p
bk9yTWF4QXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICAgIFJlYXR0YWNoZXMgdGhlIHJlbmRl
cmVyIGlmIHBvc3NpYmxlLgorICAgICAgICAoV2ViQ29yZTo6TnVtYmVySW5wdXRUeXBlOjpzdGVw
QXR0cmlidXRlQ2hhbmdlZCk6IGRpdHRvLgorICAgICAgICAoV2ViQ29yZTo6TnVtYmVySW5wdXRU
eXBlOjpzaG91bGRBdm9pZFJlZm9ybWF0KToKKyAgICAgICAgICAgQ2hlY2sgdGhlIGNvbmRpdGlv
biB3aGVyZSByZWF0dGFjaGluZyBpcyBub3QgcHJlZmVycmVkLgorICAgICAgICAqIGh0bWwvTnVt
YmVySW5wdXRUeXBlLmg6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9Mb2NhbGl6ZWROdW1iZXIu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6cHJlZmVycmVk
Q29udGVudFdpZHRoKToKKyAgICAgICAgICAgVXNlcyBwb3NzaWJsZUNvbnRlbnRTaXplIGluc3Rl
YWQgb2Ygc2l6ZS4KKyAgICAgICAgICAgQWxzbywgYWRkcyBpbm5lclNwaW5CdXR0b25FbGVtZW50
IHNpemUgdG8gd2lkdGguCisKIDIwMTEtMDctMjggIEx1a2UgTWFjcGhlcnNvbiAgIDxtYWNwaGVy
c29uQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZW1vdmUgcmVtYWluaW5nIHVzZXMgb2YgQ1NT
UHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVMZW5ndGhJbnRGb3JMZW5ndGgoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXggOGQyNTY4Zjg3YTE4YmVkMGI1NTg1NTI3
MDdlYzdiMDRjYjg0ODQ2MS4uODRjMDJkMjUzM2Y0YzI0YjQyMTVlNDgxZjQ2NTdjM2NlMTI2NDJl
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC01MCw2ICs1
MCw3IEBACiAjaW5jbHVkZSAiS2V5Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUgIkxvY2FsaXplZFN0
cmluZ3MuaCIKICNpbmNsdWRlICJNb3VzZUV2ZW50LmgiCisjaW5jbHVkZSAiTnVtYmVySW5wdXRU
eXBlLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTW91c2VFdmVudC5o
IgogI2luY2x1ZGUgIlJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5oIgpAQCAtODAxLDcgKzgw
MiwxMCBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJp
YnV0ZSogYXR0cikKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBtdWx0aXBsZUF0dHIp
IHsKICAgICAgICAgbV9pbnB1dFR5cGUtPm11bHRpcGxlQXR0cmlidXRlQ2hhbmdlZCgpOwogICAg
ICAgICBzZXROZWVkc1ZhbGlkaXR5Q2hlY2soKTsKLSAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUo
KSA9PSBwYXR0ZXJuQXR0ciB8fCBhdHRyLT5uYW1lKCkgPT0gcHJlY2lzaW9uQXR0ciB8fCBhdHRy
LT5uYW1lKCkgPT0gc3RlcEF0dHIpCisgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gc3Rl
cEF0dHIpIHsKKyAgICAgICAgbV9pbnB1dFR5cGUtPnN0ZXBBdHRyaWJ1dGVDaGFuZ2VkKCk7Cisg
ICAgICAgIHNldE5lZWRzVmFsaWRpdHlDaGVjaygpOworICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFt
ZSgpID09IHBhdHRlcm5BdHRyIHx8IGF0dHItPm5hbWUoKSA9PSBwcmVjaXNpb25BdHRyKQogICAg
ICAgICBzZXROZWVkc1ZhbGlkaXR5Q2hlY2soKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkg
PT0gZGlzYWJsZWRBdHRyKSB7CiAgICAgICAgIG1faW5wdXRUeXBlLT5kaXNhYmxlZEF0dHJpYnV0
ZUNoYW5nZWQoKTsKQEAgLTk5MSw2ICs5OTUsMTEgQEAgaW50IEhUTUxJbnB1dEVsZW1lbnQ6OnNp
emUoKSBjb25zdAogICAgIHJldHVybiBtX3NpemU7CiB9CiAKK2ludCBIVE1MSW5wdXRFbGVtZW50
Ojpwb3NzaWJsZUNvbnRlbnRTaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pbnB1dFR5cGUt
PnBvc3NpYmxlQ29udGVudFNpemUoZGVmYXVsdFNpemUpOworfQorCiB2b2lkIEhUTUxJbnB1dEVs
ZW1lbnQ6OmNvcHlOb25BdHRyaWJ1dGVQcm9wZXJ0aWVzKGNvbnN0IEVsZW1lbnQqIHNvdXJjZSkK
IHsKICAgICBjb25zdCBIVE1MSW5wdXRFbGVtZW50KiBzb3VyY2VFbGVtZW50ID0gc3RhdGljX2Nh
c3Q8Y29uc3QgSFRNTElucHV0RWxlbWVudCo+KHNvdXJjZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TElucHV0RWxlbWVudC5oCmluZGV4IDkyZmE5ZjU4NTdhNzNhOTExNTBhNTU4ODhlODQ1OTJkMzQz
MWZjZWUuLjU1NzY0ZDJlOGRmNmRhNzVhNWZmMjAzYjI3ZTQ3NTVmMTA5ZDk5MmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCkBAIC0xMzEsNiArMTMxLDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgYm9vbCBpc0luZGV0ZXJtaW5hdGUoKSBjb25zdCB7IHJldHVybiBpbmRl
dGVybWluYXRlKCk7IH0KIAogICAgIGludCBzaXplKCkgY29uc3Q7CisgICAgaW50IHBvc3NpYmxl
Q29udGVudFNpemUoKSBjb25zdDsKIAogICAgIHZvaWQgc2V0VHlwZShjb25zdCBTdHJpbmcmKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCmluZGV4IDYwOTI0NjBhMDA3OGZlMjUzMGRlNjQx
N2M4N2ExNDAwZjk0ZWZlNTAuLmE4MDNkOTUyOWQ1YWExMmQ0ZTJkN2FhZTI5NzBiOWIwOTM1ZjI5
MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKQEAgLTI0OSw2ICsyNDksMTEgQEAgZG91
YmxlIElucHV0VHlwZTo6bWF4aW11bSgpIGNvbnN0CiAgICAgcmV0dXJuIDA7CiB9CiAKK2ludCBJ
bnB1dFR5cGU6OnBvc3NpYmxlQ29udGVudFNpemUoaW50IGRlZmF1bHRTaXplKSBjb25zdAorewor
ICAgIHJldHVybiBlbGVtZW50KCktPnNpemUoKTsKK30KKwogYm9vbCBJbnB1dFR5cGU6OnN0ZXBN
aXNtYXRjaChjb25zdCBTdHJpbmcmLCBkb3VibGUpIGNvbnN0CiB7CiAgICAgLy8gTm9uLXN1cHBv
cnRlZCB0eXBlcyBzaG91bGQgYmUgcmVqZWN0ZWQgYnkgSFRNTElucHV0RWxlbWVudDo6Z2V0QWxs
b3dlZFZhbHVlU3RlcCgpLgpAQCAtNDUzLDYgKzQ1OCwxMCBAQCB2b2lkIElucHV0VHlwZTo6bWlu
T3JNYXhBdHRyaWJ1dGVDaGFuZ2VkKCkKIHsKIH0KIAordm9pZCBJbnB1dFR5cGU6OnN0ZXBBdHRy
aWJ1dGVDaGFuZ2VkKCkKK3sKK30KKwogYm9vbCBJbnB1dFR5cGU6OmNhbkJlU3VjY2Vzc2Z1bFN1
Ym1pdEJ1dHRvbigpCiB7CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9JbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgK
aW5kZXggMmRmMGVmNWI4Zjk1ODhkMzJhZTcyZmI2MzJjMjI0YjdiY2JmNDY0MS4uODNjODllZDlm
NTE2YTU1ODZmNmFjMzI4MDBmNDJjZjU2OWRkMTJiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9JbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5o
CkBAIC0xNDMsNiArMTQzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgZG91YmxlIGRlZmF1bHRW
YWx1ZUZvclN0ZXBVcCgpIGNvbnN0OwogICAgIHZpcnR1YWwgZG91YmxlIG1pbmltdW0oKSBjb25z
dDsKICAgICB2aXJ0dWFsIGRvdWJsZSBtYXhpbXVtKCkgY29uc3Q7CisgICAgdmlydHVhbCBpbnQg
cG9zc2libGVDb250ZW50U2l6ZShpbnQgZGVmYXVsdFNpemUpIGNvbnN0OwogICAgIHZpcnR1YWwg
Ym9vbCBzdGVwTWlzbWF0Y2goY29uc3QgU3RyaW5nJiwgZG91YmxlIHN0ZXApIGNvbnN0OwogICAg
IHZpcnR1YWwgZG91YmxlIHN0ZXBCYXNlKCkgY29uc3Q7CiAgICAgdmlydHVhbCBkb3VibGUgc3Rl
cEJhc2VXaXRoRGVjaW1hbFBsYWNlcyh1bnNpZ25lZCopIGNvbnN0OwpAQCAtMjA2LDYgKzIwNyw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVu
ZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2go
KTsKICAgICB2aXJ0dWFsIHZvaWQgbWluT3JNYXhBdHRyaWJ1dGVDaGFuZ2VkKCk7CisgICAgdmly
dHVhbCB2b2lkIHN0ZXBBdHRyaWJ1dGVDaGFuZ2VkKCk7CiAgICAgdmlydHVhbCB2b2lkIGFsdEF0
dHJpYnV0ZUNoYW5nZWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgc3JjQXR0cmlidXRlQ2hhbmdlZCgp
OwogICAgIHZpcnR1YWwgdm9pZCB2YWx1ZUNoYW5nZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvTnVtYmVySW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTnVt
YmVySW5wdXRUeXBlLmNwcAppbmRleCBiODFlM2E0NTYyZTQ2NWMwNTU4OWU1YWRhNzUzODRiYTU2
NDIzODc4Li5mNWM4MTAxMzViMmZjZTg0NDMwMWFiMmNjOTcxNWEzMmExMGIzNTRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL051bWJlcklucHV0VHlwZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9OdW1iZXJJbnB1dFR5cGUuY3BwCkBAIC01Miw2ICs1MiwyMiBAQCB1c2lu
ZyBuYW1lc3BhY2Ugc3RkOwogCiBzdGF0aWMgY29uc3QgZG91YmxlIG51bWJlckRlZmF1bHRTdGVw
ID0gMS4wOwogc3RhdGljIGNvbnN0IGRvdWJsZSBudW1iZXJTdGVwU2NhbGVGYWN0b3IgPSAxLjA7
CitzdGF0aWMgY29uc3QgaW50IGRlZmF1bHRNYXhDb250ZW50U2l6ZSA9IDIwOworCitzdGF0aWMg
dW5zaWduZWQgbGVuZ3RoQmVmb3JlRGVjaW1hbFBvaW50KGRvdWJsZSB2YWx1ZSkKK3sKKyAgICAv
LyBJZiB2YWx1ZSBpcyBuZWdhdGl2ZSwgJy0nIHNob3VsZCBiZSBjb3VudGVkLgorCisgICAgZG91
YmxlIGFic1ZhbHVlID0gZmFicyh2YWx1ZSk7CisgICAgaWYgKGFic1ZhbHVlIDwgMSkKKyAgICAg
ICAgcmV0dXJuIHZhbHVlIDwgMCA/IDIgOiAxOworCisgICAgdW5zaWduZWQgbGVuZ3RoID0gc3Rh
dGljX2Nhc3Q8aW50Pihsb2cxMChmbG9vcihhYnNWYWx1ZSkpKSArIDE7CisgICAgaWYgKHZhbHVl
IDwgMCkKKyAgICAgICAgbGVuZ3RoICs9IDE7CisKKyAgICByZXR1cm4gbGVuZ3RoOworfQogCiBQ
YXNzT3duUHRyPElucHV0VHlwZT4gTnVtYmVySW5wdXRUeXBlOjpjcmVhdGUoSFRNTElucHV0RWxl
bWVudCogZWxlbWVudCkKIHsKQEAgLTEyMSw2ICsxMzcsNTUgQEAgZG91YmxlIE51bWJlcklucHV0
VHlwZTo6bWF4aW11bSgpIGNvbnN0CiAgICAgcmV0dXJuIHBhcnNlVG9Eb3VibGUoZWxlbWVudCgp
LT5mYXN0R2V0QXR0cmlidXRlKG1heEF0dHIpLCBudW1lcmljX2xpbWl0czxmbG9hdD46Om1heCgp
KTsKIH0KIAoraW50IE51bWJlcklucHV0VHlwZTo6cG9zc2libGVDb250ZW50U2l6ZShpbnQgZGVm
YXVsdFNpemUpIGNvbnN0Cit7CisgICAgY29uc3QgZG91YmxlIGxpbWl0ID0gbnVtZXJpY19saW1p
dHM8ZmxvYXQ+OjptYXgoKTsKKworICAgIHVuc2lnbmVkIG1pblZhbHVlRGVjaW1hbFBsYWNlcywg
bWF4VmFsdWVEZWNpbWFsUGxhY2VzLCBzdGVwVmFsdWVEZWNpbWFsUGxhY2VzOworICAgIGRvdWJs
ZSBtaW5WYWx1ZURvdWJsZSwgbWF4VmFsdWVEb3VibGUsIHN0ZXBWYWx1ZURvdWJsZTsKKworICAg
IFN0cmluZyBtaW5WYWx1ZSA9IGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShtaW5BdHRyKTsK
KyAgICBpZiAoIXBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlV2l0aERlY2ltYWxQbGFjZXMobWlu
VmFsdWUsICZtaW5WYWx1ZURvdWJsZSwgJm1pblZhbHVlRGVjaW1hbFBsYWNlcykpCisgICAgICAg
IHJldHVybiBkZWZhdWx0U2l6ZTsKKyAgICBpZiAobWluVmFsdWVEb3VibGUgPCAtbGltaXQgfHwg
bGltaXQgPCBtaW5WYWx1ZURvdWJsZSkKKyAgICAgICAgcmV0dXJuIGRlZmF1bHRTaXplOworCisg
ICAgU3RyaW5nIG1heFZhbHVlID0gZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1heEF0dHIp
OworICAgIGlmICghcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGVXaXRoRGVjaW1hbFBsYWNlcyht
YXhWYWx1ZSwgJm1heFZhbHVlRG91YmxlLCAmbWF4VmFsdWVEZWNpbWFsUGxhY2VzKSkKKyAgICAg
ICAgcmV0dXJuIGRlZmF1bHRTaXplOworICAgIGlmIChtYXhWYWx1ZURvdWJsZSA8IC1saW1pdCB8
fCBsaW1pdCA8IG1heFZhbHVlRG91YmxlKQorICAgICAgICByZXR1cm4gZGVmYXVsdFNpemU7CisK
KyAgICBpZiAobWF4VmFsdWVEb3VibGUgPCBtaW5WYWx1ZURvdWJsZSkgeworICAgICAgICBtYXhW
YWx1ZURvdWJsZSA9IG1pblZhbHVlRG91YmxlOworICAgICAgICBtYXhWYWx1ZURlY2ltYWxQbGFj
ZXMgPSBtYXhWYWx1ZURlY2ltYWxQbGFjZXM7CisgICAgfQorCisgICAgU3RyaW5nIHN0ZXBWYWx1
ZSA9IGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShzdGVwQXR0cik7CisgICAgaWYgKHN0ZXBW
YWx1ZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgc3RlcFZhbHVlRG91YmxlID0gMTsKKyAgICAgICAg
c3RlcFZhbHVlRGVjaW1hbFBsYWNlcyA9IDA7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKCFw
YXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZVdpdGhEZWNpbWFsUGxhY2VzKHN0ZXBWYWx1ZSwgJnN0
ZXBWYWx1ZURvdWJsZSwgJnN0ZXBWYWx1ZURlY2ltYWxQbGFjZXMpKQorICAgICAgICAgICAgcmV0
dXJuIGRlZmF1bHRTaXplOworICAgICAgICBpZiAoc3RlcFZhbHVlRG91YmxlIDwgLWxpbWl0IHx8
IGxpbWl0IDwgc3RlcFZhbHVlRG91YmxlKQorICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRTaXpl
OworICAgIH0KKworICAgIHVuc2lnbmVkIGxlbmd0aCA9IGxlbmd0aEJlZm9yZURlY2ltYWxQb2lu
dChtaW5WYWx1ZURvdWJsZSk7CisgICAgbGVuZ3RoID0gbWF4KGxlbmd0aCwgbGVuZ3RoQmVmb3Jl
RGVjaW1hbFBvaW50KG1heFZhbHVlRG91YmxlKSk7CisgICAgbGVuZ3RoID0gbWF4KGxlbmd0aCwg
bGVuZ3RoQmVmb3JlRGVjaW1hbFBvaW50KHN0ZXBWYWx1ZURvdWJsZSkpOworCisgICAgdW5zaWdu
ZWQgbGVuZ3RoQWZ0ZXJEZWNpbWFsUG9pbnQgPSBtaW5WYWx1ZURlY2ltYWxQbGFjZXM7CisgICAg
bGVuZ3RoQWZ0ZXJEZWNpbWFsUG9pbnQgPSBtYXgobGVuZ3RoQWZ0ZXJEZWNpbWFsUG9pbnQsIG1h
eFZhbHVlRGVjaW1hbFBsYWNlcyk7CisgICAgbGVuZ3RoQWZ0ZXJEZWNpbWFsUG9pbnQgPSBtYXgo
bGVuZ3RoQWZ0ZXJEZWNpbWFsUG9pbnQsIHN0ZXBWYWx1ZURlY2ltYWxQbGFjZXMpOworCisgICAg
aWYgKGxlbmd0aEFmdGVyRGVjaW1hbFBvaW50ID4gMCkKKyAgICAgICAgbGVuZ3RoICs9IGxlbmd0
aEFmdGVyRGVjaW1hbFBvaW50ICsgMTsKKworICAgIHJldHVybiBsZW5ndGg7Cit9CisKIGJvb2wg
TnVtYmVySW5wdXRUeXBlOjppc1N0ZXBwYWJsZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHRydWU7
CkBAIC0yNzQsNCArMzM5LDI4IEBAIGJvb2wgTnVtYmVySW5wdXRUeXBlOjppc051bWJlckZpZWxk
KCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBOdW1iZXJJbnB1dFR5cGU6Om1p
bk9yTWF4QXR0cmlidXRlQ2hhbmdlZCgpCit7CisgICAgaWYgKCFzaG91bGRBdm9pZFJlZm9ybWF0
KCkpCisgICAgICAgIGVsZW1lbnQoKS0+cmVhdHRhY2hJZkF0dGFjaGVkKCk7Cit9CisKK3ZvaWQg
TnVtYmVySW5wdXRUeXBlOjpzdGVwQXR0cmlidXRlQ2hhbmdlZCgpCit7CisgICAgaWYgKCFzaG91
bGRBdm9pZFJlZm9ybWF0KCkpCisgICAgICAgIGVsZW1lbnQoKS0+cmVhdHRhY2hJZkF0dGFjaGVk
KCk7Cit9CisKK2Jvb2wgTnVtYmVySW5wdXRUeXBlOjpzaG91bGRBdm9pZFJlZm9ybWF0KCkKK3sK
KyAgICAvLyBUT0RPOgorICAgIGlmIChlbGVtZW50KCktPnJlbmRlclN0eWxlKCkgJiYgIWVsZW1l
bnQoKS0+cmVuZGVyU3R5bGUoKS0+d2lkdGgoKS5pc1VuZGVmaW5lZCgpKQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKworICAgIGlmIChlbGVtZW50KCktPmZvY3VzZWQoKSkKKyAgICAgICAgcmV0dXJu
IHRydWU7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTnVtYmVySW5wdXRUeXBlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL051bWJlcklucHV0VHlwZS5oCmluZGV4IDU0ZWFhNjZiNDQ1YWUxMjA3
YjU5YzQ4Njg1YTEzY2ZkNWVlMGRmMTYuLmI1NTBmYTExOWQzYjMxZTFiZDA5NTFhNWVjMGY3ODc0
OGJjZWI5ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTnVtYmVySW5wdXRUeXBl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9OdW1iZXJJbnB1dFR5cGUuaApAQCAtNTEsNiAr
NTEsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1JhbmdlTGltaXRhdGlv
bigpIGNvbnN0OwogICAgIHZpcnR1YWwgZG91YmxlIG1pbmltdW0oKSBjb25zdDsKICAgICB2aXJ0
dWFsIGRvdWJsZSBtYXhpbXVtKCkgY29uc3Q7CisgICAgdmlydHVhbCBpbnQgcG9zc2libGVDb250
ZW50U2l6ZShpbnQgZGVmYXVsdFNpemUpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc1N0ZXBw
YWJsZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBzdGVwTWlzbWF0Y2goY29uc3QgU3RyaW5n
JiwgZG91YmxlKSBjb25zdDsKICAgICB2aXJ0dWFsIGRvdWJsZSBzdGVwQmFzZSgpIGNvbnN0OwpA
QCAtNzIsNiArNzMsOSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRSZXNwZWN0
U3BlZWNoQXR0cmlidXRlKCk7CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzUGxhY2Vob2xkZXIo
KSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaXNOdW1iZXJGaWVsZCgpIGNvbnN0OworICAgIHZp
cnR1YWwgdm9pZCBtaW5Pck1heEF0dHJpYnV0ZUNoYW5nZWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQg
c3RlcEF0dHJpYnV0ZUNoYW5nZWQoKTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQXZvaWRSZWZv
cm1hdCgpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGl6ZWROdW1iZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvTG9jYWxpemVkTnVtYmVyLmgKaW5kZXggMDFkMjU1M2VmMjY1ZGQ0YTJm
MWRiYmY1Y2QxYzVmMTViZjBkMGFmMy4uMTNiNGVkMGZhYzc3NWFlNjQwZjJlNmQzY2Q0ZTVhNGZl
MmFmYWYwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGl6
ZWROdW1iZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsaXplZE51
bWJlci5oCkBAIC01MSw2ICs1MSw4IEBAIGRvdWJsZSBwYXJzZUxvY2FsaXplZE51bWJlcihjb25z
dCBTdHJpbmcmKTsKIC8vIHJlc3VsdGFudCBzdHJpbmcuCiBTdHJpbmcgZm9ybWF0TG9jYWxpemVk
TnVtYmVyKGRvdWJsZSwgdW5zaWduZWQgZnJhY3Rpb25EaWdpdHMpOwogCitTdHJpbmcgZ2V0TG9j
YWxpemVkRGVjaW1hbFBvaW50KCk7CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlm
IC8vIExvY2FsaXplZE51bWJlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCmluZGV4IDUyYTVhYzhhZDE1ZTAz
OTBlNWNmZmQ0NGI0MTc0YzdhMTdlNWRlZWYuLmRjZmVlZTUwMTE3OTVjYmU5M2I4MmY0MzMyZmVj
NmYzNWZkMDdiMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
ZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCkBAIC0zODksMTAgKzM4OSwxMCBAQCBmbG9h
dCBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OmdldEF2Z0NoYXJXaWR0aChBdG9taWNTdHJp
bmcgZmFtaWx5KQogCiAgICAgcmV0dXJuIFJlbmRlclRleHRDb250cm9sOjpnZXRBdmdDaGFyV2lk
dGgoZmFtaWx5KTsKIH0KLSAgICAKKwogaW50IFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6
cHJlZmVycmVkQ29udGVudFdpZHRoKGZsb2F0IGNoYXJXaWR0aCkgY29uc3QKIHsKLSAgICBpbnQg
ZmFjdG9yID0gaW5wdXRFbGVtZW50KCktPnNpemUoKTsKKyAgICBpbnQgZmFjdG9yID0gaW5wdXRF
bGVtZW50KCktPnBvc3NpYmxlQ29udGVudFNpemUoKTsKICAgICBpZiAoZmFjdG9yIDw9IDApCiAg
ICAgICAgIGZhY3RvciA9IDIwOwogCkBAIC00MjMsNiArNDIzLDExIEBAIGludCBSZW5kZXJUZXh0
Q29udHJvbFNpbmdsZUxpbmU6OnByZWZlcnJlZENvbnRlbnRXaWR0aChmbG9hdCBjaGFyV2lkdGgp
IGNvbnN0CiAgICAgICAgIHJlc3VsdCArPSBjYW5jZWxSZW5kZXJlci0+Ym9yZGVyTGVmdCgpICsg
Y2FuY2VsUmVuZGVyZXItPmJvcmRlclJpZ2h0KCkgKwogICAgICAgICAgICAgICAgICAgY2FuY2Vs
UmVuZGVyZXItPnBhZGRpbmdMZWZ0KCkgKyBjYW5jZWxSZW5kZXJlci0+cGFkZGluZ1JpZ2h0KCk7
CiAKKyAgICBIVE1MRWxlbWVudCogc3BpbkJ1dHRvbiA9IGlubmVyU3BpbkJ1dHRvbkVsZW1lbnQo
KTsKKyAgICBpZiAoUmVuZGVyQm94KiBzcGluUmVuZGVyZXIgPSBzcGluQnV0dG9uID8gc3BpbkJ1
dHRvbi0+cmVuZGVyQm94KCkgOiAwKQorICAgICAgICByZXN1bHQgKz0gc3BpblJlbmRlcmVyLT5i
b3JkZXJMZWZ0KCkgKyBzcGluUmVuZGVyZXItPmJvcmRlclJpZ2h0KCkgKworICAgICAgICAgICAg
ICAgICAgc3BpblJlbmRlcmVyLT5wYWRkaW5nTGVmdCgpICsgc3BpblJlbmRlcmVyLT5wYWRkaW5n
UmlnaHQoKTsKKwogI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCiAgICAgSFRNTEVsZW1lbnQqIHNw
ZWVjaEJ1dHRvbiA9IHNwZWVjaEJ1dHRvbkVsZW1lbnQoKTsKICAgICBpZiAoUmVuZGVyQm94KiBz
cGVlY2hSZW5kZXJlciA9IHNwZWVjaEJ1dHRvbiA/IHNwZWVjaEJ1dHRvbi0+cmVuZGVyQm94KCkg
OiAwKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102518</attachid>
            <date>2011-08-01 07:56:45 -0700</date>
            <delta_ts>2011-08-01 08:08:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-60673-20110801235644.patch</filename>
            <type>text/plain</type>
            <size>23721</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTIwOTMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3YzUwNmZmMTg4MGQ3MmMyOTRlZTIz
OWNiZWNjNmRjNTA1MGY1YTQyLi4zMjA5YTJlNDM0NDk3MmI1NzAyZGJkYWY1MjUyZDBiYTM1MmI4
ZDI4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDgtMDEgIFNoaW55YSBLYXdhbmFrYSAg
PHNoaW55YWtAZ29vZ2xlLmNvbT4KKworICAgICAgICBBZGRlZCB0aGUgdGVzdCB0byBjaGVjayB0
aGUgd2lkdGggb2YgaW5wdXRbdHlwZT1udW1iZXJdLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjA2NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZm9ybXMvaW5wdXQtbnVtYmVyLXNpemUtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL2lucHV0LW51bWJlci1zaXpl
Lmh0bWw6IEFkZGVkLgorCiAyMDExLTA3LTMxICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xv
dWdoQGFwcGxlLmNvbT4KIAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NjQ2NzkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW5wdXQt
bnVtYmVyLXNpemUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1u
dW1iZXItc2l6ZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWI3NDNjYWRjZTFiZjc1ZThhZGNh
ODA0YjhlNzU4NmZiMWI3NjhiMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvaW5wdXQtbnVtYmVyLXNpemUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNzkgQEAKK1Rl
c3QgZm9yIHNpemUgYXR0cmlidXRlIG9mIGlucHV0CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworCitUaGUgbnVtYmVyIGlucHV0IHdpdGhvdXQgbWluL21heC9zdGVwIGhhcyB0aGUgc2Ft
ZSB3aWR0aCBhcyB0ZXh0IGlucHV0CitQQVNTIG51bWJlci5vZmZzZXRXaWR0aCBpcyB0ZXh0Lm9m
ZnNldFdpZHRoCisKK1RoZSBudW1iZXIgaW5wdXQgc2hvdWxkIGlnbm9yZSBzaXplIGF0dHJpYnV0
ZSBmb3IgbGF5b3V0CitQQVNTIG51bWJlci5vZmZzZXRXaWR0aCBpcyB0ZXh0Lm9mZnNldFdpZHRo
CitQQVNTIG51bWJlci5zaXplIGlzIDEwCitQQVNTIG51bWJlci5vZmZzZXRXaWR0aCBpcyB0ZXh0
Lm9mZnNldFdpZHRoCitQQVNTIG51bWJlci5zaXplIGlzIDEwMAorCitJZiBtaW4gb3IgbWF4IGlz
IGFic2VudCwgdGhlIG51bWJlciBpbnB1dCBoYXMgdGhlIHNhbWUgd2lkdGggYXMgaW5wdXRbdHlw
ZT10ZXh0XQorUEFTUyB0ZXh0V2lkdGgobnVsbCkgaXMgbnVtYmVyV2lkdGgoMCwgbnVsbCwgbnVs
bCkKK1BBU1MgdGV4dFdpZHRoKG51bGwpIGlzIG51bWJlcldpZHRoKG51bGwsIDEwMCwgbnVsbCkK
K1BBU1MgdGV4dFdpZHRoKG51bGwpIGlzIG51bWJlcldpZHRoKG51bGwsIG51bGwsIDEwMCkKKwor
SWYgc3RlcCBpcyBhbnksIHRoZSBpbnB1dFt0eXBlPXRleHRdIGhhcyB0aGUgc2FtZSB3aWR0aCBh
cyBpbnB1dFt0eXBlPXRleHRdCitQQVNTIHRleHRXaWR0aChudWxsKSBpcyBudW1iZXJXaWR0aCgw
LCAxLCAiYW55IikKK1BBU1MgdGV4dFdpZHRoKG51bGwpIGlzIG51bWJlcldpZHRoKDAsIDEwLCAi
YW55IikKK1BBU1MgdGV4dFdpZHRoKG51bGwpIGlzIG51bWJlcldpZHRoKDAsIDEuMSwgImFueSIp
CisKK1RoZSBjYXNlIHRoZSBpbm5lciBzcGluIGJ1dHRvbiBoYXMgYm9yZGVyIG9yIHBhZGRpbmcu
CitQQVNTIHRleHRXaWR0aCgyKSArIDIwIGlzIG51bWJlcldpZHRoKDAsIDEwLCAxLCAic3R5bGUx
IikKK1BBU1MgdGV4dFdpZHRoKDIpICsgMjAgaXMgbnVtYmVyV2lkdGgoMCwgMTAsIDEsICJzdHls
ZTIiKQorUEFTUyB0ZXh0V2lkdGgoMikgKyA0MCBpcyBudW1iZXJXaWR0aCgwLCAxMCwgMSwgInN0
eWxlMyIpCitQQVNTIHRleHRXaWR0aCgyKSArIDQwIGlzIG51bWJlcldpZHRoKDAsIDEwLCAxLCAi
c3R5bGU0IikKKworVGhlIGRlZmF1bHQgc3RlcCBkb2VzIG5vdCBuZWVkIHRvIGJlIGNvbnNpZGVy
ZWQuCitQQVNTIHRleHRXaWR0aCgxKSBpcyBudW1iZXJXaWR0aCgwLCAxLCBudWxsKQorUEFTUyB0
ZXh0V2lkdGgoMykgaXMgbnVtYmVyV2lkdGgoMCwgMTAwLCBudWxsKQorUEFTUyB0ZXh0V2lkdGgo
NCkgaXMgbnVtYmVyV2lkdGgoLTEwMCwgMSwgbnVsbCkKK1BBU1MgdGV4dFdpZHRoKDEpIGlzIG51
bWJlcldpZHRoKDAuMCwgMS4wLCBudWxsKQorUEFTUyB0ZXh0V2lkdGgoMykgaXMgbnVtYmVyV2lk
dGgoMC41LCAxLjUsIG51bGwpCitQQVNTIHRleHRXaWR0aCg0KSBpcyBudW1iZXJXaWR0aCgtMC41
LCAxLjUsIG51bGwpCitQQVNTIHRleHRXaWR0aCgxMSkgaXMgbnVtYmVyV2lkdGgoMWUrMTAsIDFl
KzEwICsgMSwgbnVsbCkKK1BBU1MgdGV4dFdpZHRoKDEyKSBpcyBudW1iZXJXaWR0aCgtMWUrMTAs
IDFlKzEwICsgMSwgbnVsbCkKKworQ2hlY2sgdGhlIHdpZHRoIG9mIGEgbnVtYmVyIGlucHV0IHdo
ZW4gbWluL21heC9zdGVwIGlzIGNoYW5nZWQgdmFyaW91c2x5CitQQVNTIHRleHRXaWR0aCgxKSBp
cyBudW1iZXJXaWR0aCgwLCAxLCAxKQorUEFTUyB0ZXh0V2lkdGgoMikgaXMgbnVtYmVyV2lkdGgo
MCwgMTAsIDEpCitQQVNTIHRleHRXaWR0aCgzKSBpcyBudW1iZXJXaWR0aCgwLCAxMDAsIDEpCitQ
QVNTIHRleHRXaWR0aCg0KSBpcyBudW1iZXJXaWR0aCgwLCAxMDAwLCAxKQorUEFTUyB0ZXh0V2lk
dGgoNSkgaXMgbnVtYmVyV2lkdGgoMCwgMTAwMDAsIDEpCitQQVNTIHRleHRXaWR0aCg2KSBpcyBu
dW1iZXJXaWR0aCgwLCAxMDAwMDAsIDEpCitQQVNTIHRleHRXaWR0aCg3KSBpcyBudW1iZXJXaWR0
aCgwLCAxMDAwMDAwLCAxKQorUEFTUyB0ZXh0V2lkdGgoOCkgaXMgbnVtYmVyV2lkdGgoMCwgMTAw
MDAwMDAsIDEpCitQQVNTIHRleHRXaWR0aCg5KSBpcyBudW1iZXJXaWR0aCgwLCAxMDAwMDAwMDAs
IDEpCitQQVNTIHRleHRXaWR0aCgxMCkgaXMgbnVtYmVyV2lkdGgoMCwgMTAwMDAwMDAwMCwgMSkK
K1BBU1MgdGV4dFdpZHRoKDIpIGlzIG51bWJlcldpZHRoKC0xLCAwLCAxKQorUEFTUyB0ZXh0V2lk
dGgoMykgaXMgbnVtYmVyV2lkdGgoLTEwLCAwLCAxKQorUEFTUyB0ZXh0V2lkdGgoNCkgaXMgbnVt
YmVyV2lkdGgoLTEwMCwgMCwgMSkKK1BBU1MgdGV4dFdpZHRoKDUpIGlzIG51bWJlcldpZHRoKC0x
MDAwLCAwLCAxKQorUEFTUyB0ZXh0V2lkdGgoNikgaXMgbnVtYmVyV2lkdGgoLTEwMDAwLCAwLCAx
KQorUEFTUyB0ZXh0V2lkdGgoNykgaXMgbnVtYmVyV2lkdGgoLTEwMDAwMCwgMCwgMSkKK1BBU1Mg
dGV4dFdpZHRoKDgpIGlzIG51bWJlcldpZHRoKC0xMDAwMDAwLCAwLCAxKQorUEFTUyB0ZXh0V2lk
dGgoOSkgaXMgbnVtYmVyV2lkdGgoLTEwMDAwMDAwLCAwLCAxKQorUEFTUyB0ZXh0V2lkdGgoMTAp
IGlzIG51bWJlcldpZHRoKC0xMDAwMDAwMDAsIDAsIDEpCitQQVNTIHRleHRXaWR0aCgxMSkgaXMg
bnVtYmVyV2lkdGgoLTEwMDAwMDAwMDAsIDAsIDEpCitQQVNTIHRleHRXaWR0aCgzKSBpcyBudW1i
ZXJXaWR0aCgwLCAxLCAwLjUpCitQQVNTIHRleHRXaWR0aCg0KSBpcyBudW1iZXJXaWR0aCgwLCAx
LCAwLjA1KQorUEFTUyB0ZXh0V2lkdGgoNSkgaXMgbnVtYmVyV2lkdGgoMCwgMSwgMC4wMDUpCitQ
QVNTIHRleHRXaWR0aCg2KSBpcyBudW1iZXJXaWR0aCgwLCAxLCAwLjAwMDUpCitQQVNTIHRleHRX
aWR0aCg3KSBpcyBudW1iZXJXaWR0aCgwLCAxLCAwLjAwMDA1KQorUEFTUyB0ZXh0V2lkdGgoOCkg
aXMgbnVtYmVyV2lkdGgoMCwgMSwgMC4wMDAwMDUpCitQQVNTIHRleHRXaWR0aCg5KSBpcyBudW1i
ZXJXaWR0aCgwLCAxLCAwLjAwMDAwMDUpCitQQVNTIHRleHRXaWR0aCgzKSBpcyBudW1iZXJXaWR0
aCgwLjUsIDEsIDEpCitQQVNTIHRleHRXaWR0aCg0KSBpcyBudW1iZXJXaWR0aCgwLjA1LCAxLCAx
KQorUEFTUyB0ZXh0V2lkdGgoNSkgaXMgbnVtYmVyV2lkdGgoMC4wMDUsIDEsIDEpCitQQVNTIHRl
eHRXaWR0aCgzKSBpcyBudW1iZXJXaWR0aCgxLjUsIDIsIDEpCitQQVNTIHRleHRXaWR0aCg0KSBp
cyBudW1iZXJXaWR0aCgxLjA1LCAyLCAxKQorUEFTUyB0ZXh0V2lkdGgoNSkgaXMgbnVtYmVyV2lk
dGgoMS4wMDUsIDIsIDEpCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lucHV0LW51
bWJlci1zaXplLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lucHV0LW51bWJlci1zaXpl
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOTBiNDQ4YjAwMDQ4MWM3Zjk1NmI2YzY3ZmFmMzQ2OWJmZmZmY2M0
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW5wdXQtbnVtYmVy
LXNpemUuaHRtbApAQCAtMCwwICsxLDE0MyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9J
RVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNj
cmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzxzdHlsZT4KK2lucHV0LnN0eWxlMTo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbiB7Cisg
ICAgIGJvcmRlcjogMTBweCBzb2xpZDsKK30KK2lucHV0LnN0eWxlMjo6LXdlYmtpdC1pbm5lci1z
cGluLWJ1dHRvbiB7CisgICAgIHBhZGRpbmc6IDAgMTBweCAwIDEwcHg7Cit9CitpbnB1dC5zdHls
ZTM6Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24geworICAgICBib3JkZXI6IDEwcHggc29saWQ7
CisgICAgIHBhZGRpbmc6IDAgMTBweCAwIDEwcHg7Cit9CitpbnB1dC5zdHlsZTQ6Oi13ZWJraXQt
aW5uZXItc3Bpbi1idXR0b24geworICAgICBib3JkZXI6IDEwcHggc29saWQ7CisgICAgIG1hcmdp
bjogMCAxMHB4IDAgMTBweDsKKyAgICAgcGFkZGluZzogMCAxMHB4IDAgMTBweDsKK30KKzwvc3R5
bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignVGVzdCBmb3Igc2l6ZSBh
dHRyaWJ1dGUgb2YgaW5wdXQnKTsKKworZnVuY3Rpb24gbnVtYmVyV2lkdGgobWluLCBtYXgsIHN0
ZXAsIGNsYXNzTmFtZSkgeworICAgIG51bWJlci5zdGVwID0gc3RlcDsKKyAgICBudW1iZXIubWlu
ID0gbWluOworICAgIG51bWJlci5tYXggPSBtYXg7CisgICAgbnVtYmVyLmNsYXNzTmFtZSA9IGNs
YXNzTmFtZTsKKyAgICByZXR1cm4gbnVtYmVyLm9mZnNldFdpZHRoOworfQorCitmdW5jdGlvbiB0
ZXh0V2lkdGgoc2l6ZSkgeworICAgIHRleHQuc2l6ZSA9IHNpemU7CisgICAgcmV0dXJuIHRleHQu
b2Zmc2V0V2lkdGg7Cit9CisKK2Z1bmN0aW9uIHNob3VsZEJlVGhlU2FtZVdpZHRoKHNpemUsIG1p
biwgbWF4LCBzdGVwKSB7CisgICAgc2hvdWxkQmUoJ3RleHRXaWR0aCgnICsgc2l6ZSArICcpJywg
J251bWJlcldpZHRoKCcgKyBtaW4gKyAnLCAnICsgbWF4ICsgJywgJyArIHN0ZXAgKyAnKScpOwor
fQorCit2YXIgcGFyZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Citkb2N1bWVu
dC5ib2R5LmFwcGVuZENoaWxkKHBhcmVudCk7CitwYXJlbnQuaW5uZXJIVE1MID0gJzxpbnB1dCB0
eXBlPW51bWJlciBpZD1udW1iZXI+PGlucHV0IHR5cGU9dGV4dCBpZD10ZXh0PicKK3ZhciBudW1i
ZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbnVtYmVyJyk7Cit2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCd0ZXh0Jyk7CisKK2RlYnVnKCdUaGUgbnVtYmVyIGlucHV0IHdp
dGhvdXQgbWluL21heC9zdGVwIGhhcyB0aGUgc2FtZSB3aWR0aCBhcyB0ZXh0IGlucHV0Jyk7Citz
aG91bGRCZSgnbnVtYmVyLm9mZnNldFdpZHRoJywgJ3RleHQub2Zmc2V0V2lkdGgnKTsKK2RlYnVn
KCcnKQorCitkZWJ1ZygnVGhlIG51bWJlciBpbnB1dCBzaG91bGQgaWdub3JlIHNpemUgYXR0cmli
dXRlIGZvciBsYXlvdXQnKTsKK251bWJlci5zaXplID0gMTA7CitzaG91bGRCZSgnbnVtYmVyLm9m
ZnNldFdpZHRoJywgJ3RleHQub2Zmc2V0V2lkdGgnKTsKK3Nob3VsZEJlKCdudW1iZXIuc2l6ZScs
ICcxMCcpOworbnVtYmVyLnNpemUgPSAxMDA7CitzaG91bGRCZSgnbnVtYmVyLm9mZnNldFdpZHRo
JywgJ3RleHQub2Zmc2V0V2lkdGgnKTsKK3Nob3VsZEJlKCdudW1iZXIuc2l6ZScsICcxMDAnKTsK
K251bWJlci5zaXplID0gbnVsbDsKK2RlYnVnKCcnKQorCitkZWJ1ZygnSWYgbWluIG9yIG1heCBp
cyBhYnNlbnQsIHRoZSBudW1iZXIgaW5wdXQgaGFzIHRoZSBzYW1lIHdpZHRoIGFzIGlucHV0W3R5
cGU9dGV4dF0nKQorc2hvdWxkQmUoJ3RleHRXaWR0aChudWxsKScsICdudW1iZXJXaWR0aCgwLCBu
dWxsLCBudWxsKScpOworc2hvdWxkQmUoJ3RleHRXaWR0aChudWxsKScsICdudW1iZXJXaWR0aChu
dWxsLCAxMDAsIG51bGwpJyk7CitzaG91bGRCZSgndGV4dFdpZHRoKG51bGwpJywgJ251bWJlcldp
ZHRoKG51bGwsIG51bGwsIDEwMCknKTsKK2RlYnVnKCcnKTsKKworZGVidWcoJ0lmIHN0ZXAgaXMg
YW55LCB0aGUgaW5wdXRbdHlwZT10ZXh0XSBoYXMgdGhlIHNhbWUgd2lkdGggYXMgaW5wdXRbdHlw
ZT10ZXh0XScpCitzaG91bGRCZSgndGV4dFdpZHRoKG51bGwpJywgJ251bWJlcldpZHRoKDAsIDEs
ICJhbnkiKScpOworc2hvdWxkQmUoJ3RleHRXaWR0aChudWxsKScsICdudW1iZXJXaWR0aCgwLCAx
MCwgImFueSIpJyk7CitzaG91bGRCZSgndGV4dFdpZHRoKG51bGwpJywgJ251bWJlcldpZHRoKDAs
IDEuMSwgImFueSIpJyk7CitkZWJ1ZygnJyk7CisKK2RlYnVnKCdUaGUgY2FzZSB0aGUgaW5uZXIg
c3BpbiBidXR0b24gaGFzIGJvcmRlciBvciBwYWRkaW5nLicpOworc2hvdWxkQmUoJ3RleHRXaWR0
aCgyKSArIDIwJywgJ251bWJlcldpZHRoKDAsIDEwLCAxLCAic3R5bGUxIiknKTsKK3Nob3VsZEJl
KCd0ZXh0V2lkdGgoMikgKyAyMCcsICdudW1iZXJXaWR0aCgwLCAxMCwgMSwgInN0eWxlMiIpJyk7
CitzaG91bGRCZSgndGV4dFdpZHRoKDIpICsgNDAnLCAnbnVtYmVyV2lkdGgoMCwgMTAsIDEsICJz
dHlsZTMiKScpOworc2hvdWxkQmUoJ3RleHRXaWR0aCgyKSArIDQwJywgJ251bWJlcldpZHRoKDAs
IDEwLCAxLCAic3R5bGU0IiknKTsKK2RlYnVnKCcnKTsKKworZGVidWcoJ1RoZSBkZWZhdWx0IHN0
ZXAgZG9lcyBub3QgbmVlZCB0byBiZSBjb25zaWRlcmVkLicpCitzaG91bGRCZSgndGV4dFdpZHRo
KDEpJywgJ251bWJlcldpZHRoKDAsIDEsIG51bGwpJyk7CitzaG91bGRCZSgndGV4dFdpZHRoKDMp
JywgJ251bWJlcldpZHRoKDAsIDEwMCwgbnVsbCknKTsKK3Nob3VsZEJlKCd0ZXh0V2lkdGgoNCkn
LCAnbnVtYmVyV2lkdGgoLTEwMCwgMSwgbnVsbCknKTsKK3Nob3VsZEJlKCd0ZXh0V2lkdGgoMSkn
LCAnbnVtYmVyV2lkdGgoMC4wLCAxLjAsIG51bGwpJyk7CitzaG91bGRCZSgndGV4dFdpZHRoKDMp
JywgJ251bWJlcldpZHRoKDAuNSwgMS41LCBudWxsKScpOworc2hvdWxkQmUoJ3RleHRXaWR0aCg0
KScsICdudW1iZXJXaWR0aCgtMC41LCAxLjUsIG51bGwpJyk7CitzaG91bGRCZSgndGV4dFdpZHRo
KDExKScsICdudW1iZXJXaWR0aCgxZSsxMCwgMWUrMTAgKyAxLCBudWxsKScpOworc2hvdWxkQmUo
J3RleHRXaWR0aCgxMiknLCAnbnVtYmVyV2lkdGgoLTFlKzEwLCAxZSsxMCArIDEsIG51bGwpJyk7
CitkZWJ1ZygnJyk7CisKK2RlYnVnKCdDaGVjayB0aGUgd2lkdGggb2YgYSBudW1iZXIgaW5wdXQg
d2hlbiBtaW4vbWF4L3N0ZXAgaXMgY2hhbmdlZCB2YXJpb3VzbHknKQorc2hvdWxkQmUoJ3RleHRX
aWR0aCgxKScsICdudW1iZXJXaWR0aCgwLCAxLCAxKScpOworc2hvdWxkQmUoJ3RleHRXaWR0aCgy
KScsICdudW1iZXJXaWR0aCgwLCAxMCwgMSknKTsKK3Nob3VsZEJlKCd0ZXh0V2lkdGgoMyknLCAn
bnVtYmVyV2lkdGgoMCwgMTAwLCAxKScpOworc2hvdWxkQmUoJ3RleHRXaWR0aCg0KScsICdudW1i
ZXJXaWR0aCgwLCAxMDAwLCAxKScpOworc2hvdWxkQmUoJ3RleHRXaWR0aCg1KScsICdudW1iZXJX
aWR0aCgwLCAxMDAwMCwgMSknKTsKK3Nob3VsZEJlKCd0ZXh0V2lkdGgoNiknLCAnbnVtYmVyV2lk
dGgoMCwgMTAwMDAwLCAxKScpOworc2hvdWxkQmUoJ3RleHRXaWR0aCg3KScsICdudW1iZXJXaWR0
aCgwLCAxMDAwMDAwLCAxKScpOworc2hvdWxkQmUoJ3RleHRXaWR0aCg4KScsICdudW1iZXJXaWR0
aCgwLCAxMDAwMDAwMCwgMSknKTsKK3Nob3VsZEJlKCd0ZXh0V2lkdGgoOSknLCAnbnVtYmVyV2lk
dGgoMCwgMTAwMDAwMDAwLCAxKScpOworc2hvdWxkQmUoJ3RleHRXaWR0aCgxMCknLCAnbnVtYmVy
V2lkdGgoMCwgMTAwMDAwMDAwMCwgMSknKTsKKworc2hvdWxkQmUoJ3RleHRXaWR0aCgyKScsICdu
dW1iZXJXaWR0aCgtMSwgMCwgMSknKTsKK3Nob3VsZEJlKCd0ZXh0V2lkdGgoMyknLCAnbnVtYmVy
V2lkdGgoLTEwLCAwLCAxKScpOworc2hvdWxkQmUoJ3RleHRXaWR0aCg0KScsICdudW1iZXJXaWR0
aCgtMTAwLCAwLCAxKScpOworc2hvdWxkQmUoJ3RleHRXaWR0aCg1KScsICdudW1iZXJXaWR0aCgt
MTAwMCwgMCwgMSknKTsKK3Nob3VsZEJlKCd0ZXh0V2lkdGgoNiknLCAnbnVtYmVyV2lkdGgoLTEw
MDAwLCAwLCAxKScpOworc2hvdWxkQmUoJ3RleHRXaWR0aCg3KScsICdudW1iZXJXaWR0aCgtMTAw
MDAwLCAwLCAxKScpOworc2hvdWxkQmUoJ3RleHRXaWR0aCg4KScsICdudW1iZXJXaWR0aCgtMTAw
MDAwMCwgMCwgMSknKTsKK3Nob3VsZEJlKCd0ZXh0V2lkdGgoOSknLCAnbnVtYmVyV2lkdGgoLTEw
MDAwMDAwLCAwLCAxKScpOworc2hvdWxkQmUoJ3RleHRXaWR0aCgxMCknLCAnbnVtYmVyV2lkdGgo
LTEwMDAwMDAwMCwgMCwgMSknKTsKK3Nob3VsZEJlKCd0ZXh0V2lkdGgoMTEpJywgJ251bWJlcldp
ZHRoKC0xMDAwMDAwMDAwLCAwLCAxKScpOworCitzaG91bGRCZSgndGV4dFdpZHRoKDMpJywgJ251
bWJlcldpZHRoKDAsIDEsIDAuNSknKTsKK3Nob3VsZEJlKCd0ZXh0V2lkdGgoNCknLCAnbnVtYmVy
V2lkdGgoMCwgMSwgMC4wNSknKTsKK3Nob3VsZEJlKCd0ZXh0V2lkdGgoNSknLCAnbnVtYmVyV2lk
dGgoMCwgMSwgMC4wMDUpJyk7CitzaG91bGRCZSgndGV4dFdpZHRoKDYpJywgJ251bWJlcldpZHRo
KDAsIDEsIDAuMDAwNSknKTsKK3Nob3VsZEJlKCd0ZXh0V2lkdGgoNyknLCAnbnVtYmVyV2lkdGgo
MCwgMSwgMC4wMDAwNSknKTsKK3Nob3VsZEJlKCd0ZXh0V2lkdGgoOCknLCAnbnVtYmVyV2lkdGgo
MCwgMSwgMC4wMDAwMDUpJyk7CitzaG91bGRCZSgndGV4dFdpZHRoKDkpJywgJ251bWJlcldpZHRo
KDAsIDEsIDAuMDAwMDAwNSknKTsKKworc2hvdWxkQmUoJ3RleHRXaWR0aCgzKScsICdudW1iZXJX
aWR0aCgwLjUsIDEsIDEpJyk7CitzaG91bGRCZSgndGV4dFdpZHRoKDQpJywgJ251bWJlcldpZHRo
KDAuMDUsIDEsIDEpJyk7CitzaG91bGRCZSgndGV4dFdpZHRoKDUpJywgJ251bWJlcldpZHRoKDAu
MDA1LCAxLCAxKScpOworc2hvdWxkQmUoJ3RleHRXaWR0aCgzKScsICdudW1iZXJXaWR0aCgxLjUs
IDIsIDEpJyk7CitzaG91bGRCZSgndGV4dFdpZHRoKDQpJywgJ251bWJlcldpZHRoKDEuMDUsIDIs
IDEpJyk7CitzaG91bGRCZSgndGV4dFdpZHRoKDUpJywgJ251bWJlcldpZHRoKDEuMDA1LCAyLCAx
KScpOworZGVidWcoJycpCisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3Jp
cHQ+CisKKworPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjBjNTc3MzNl
NTQ1NjFjZDUyMjliOGFlNjEzMGNlODZmZTQwNmJiNC4uZmM2NmZjZTgzNzlkOGQzZmI4Y2VmMzNi
NTAxZWQ2MmYxZGViMmJlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDExLTA4LTAx
ICBTaGlueWEgS2F3YW5ha2EgIDxzaGlueWFrQGdvb2dsZS5jb20+CisKKyAgICAgICAgVGhlIGlu
cHV0W3R5cGU9bnVtYmVyXSBlbGVtZW50IHNob3VsZCBiZSBhcyB3aWRlIGFzIG5lY2Vzc2FyeSB0
byBzaG93IHRoZSB3aWRlc3QgcG9zc2libGUgdmFsdWUuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDY3MworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBzaXplIG9mIGlucHV0W3R5cGU9bnVtYmVyXSBp
cyBjYWxjdWxhdGVkIGZyb20gbWluL21heC9zdGVwIGF0dHJpYnV0ZXMgdG8gc2hvdyB0aGUgd2lk
ZXN0IHBvc3NpYmxlIHZhbHVlLgorICAgICAgICBJZiBtaW4gb3IgbWF4IGF0dHJpYnV0ZSBpcyBh
YnNlbnQsIHRoZSBkZWZhdWx0IHNpemUgaXMgdXNlZC4KKworICAgICAgICBUZXN0OiBmYXN0L2Zv
cm1zL2lucHV0LW51bWJlci1zaXplLmh0bWwKKworICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpwYXJzZU1hcHBl
ZEF0dHJpYnV0ZSk6CisgICAgICAgICAgIEFkZGVkIHN0ZXBBdHRyaWJ1dGVDaGFuZ2VkIGhhbmRs
ZXIuCisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpwcmVmZXJyZWRTaXplKToK
KyAgICAgICAgICAgUmV0dXJucyB0aGUgcHJlZmVycmVkIHNpemUgb2YgdGhlIGlucHV0LgorICAg
ICAgICAgICBTYW1lIGFzIHNpemUgaWYgSW5wdXRUeXBlOjpzaG91bGRSZXNwZWN0U2l6ZUF0dHJp
YnV0ZSByZXR1cm5zIHRydWUuCisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50Lmg6Cisg
ICAgICAgICogaHRtbC9JbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBl
OjptYXhOdW1iZXJPZkNoYXJhY3RlcnMpOgorICAgICAgICAgICBSZXR1cm5zIHRoZSB3aWRlc3Qg
Y29udGVudCBsZW5ndGguCisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OnN0ZXBBdHRyaWJ1
dGVDaGFuZ2VkKToKKyAgICAgICAgICAgV2lsbCBiZSBjYWxsZWQgd2hlbiBzdGVwIGF0dHJpYnV0
ZSBpcyBjaGFuZ2VkLgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjpzaG91bGRSZXNwZWN0
U2l6ZUF0dHJpYnV0ZSk6CisgICAgICAgICAgIFJldHVybnMgdHJ1ZSBpZiBIVE1MSW5wdXRFbGVt
ZW50OjpwcmVmZXJyZWRTaXplIHJldHVybnMgdGhlIHNhbWUgdmFsdWUgYXMgc2l6ZS4KKyAgICAg
ICAgKiBodG1sL0lucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwvTnVtYmVySW5wdXRUeXBlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Omxlbmd0aEJlZm9yZURlY2ltYWxQb2ludCk6CisgICAgICAg
ICAgIENhbGN1bGF0ZXMgdGhlIHdpZHRoIGJlZm9yZSB0aGUgZGVjaW1hbCBwb2ludC4KKyAgICAg
ICAgKFdlYkNvcmU6Ok51bWJlcklucHV0VHlwZTo6bWF4TnVtYmVyT2ZDaGFyYWN0ZXJzKToKKyAg
ICAgICAgICAgUmV0dXJucyB0aGUgd2lkZXN0IGNvbnRlbnQgbGVuZ3RoLgorICAgICAgICAoV2Vi
Q29yZTo6TnVtYmVySW5wdXRUeXBlOjpzaG91bGRSZXNwZWN0U2l6ZUF0dHJpYnV0ZSk6CisgICAg
ICAgICAgIFJldHVybnMgZmFsc2UgdG8gY2FsY3VsYXRlIHNpemUuCisgICAgICAgIChXZWJDb3Jl
OjpOdW1iZXJJbnB1dFR5cGU6Om1pbk9yTWF4QXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICAg
IFJlYXR0YWNoZXMgdGhlIHJlbmRlcmVyIGlmIG5lY2Vzc2FyeS4KKyAgICAgICAgKFdlYkNvcmU6
Ok51bWJlcklucHV0VHlwZTo6c3RlcEF0dHJpYnV0ZUNoYW5nZWQpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6Ok51bWJlcklucHV0VHlwZTo6c2hvdWxkUmVhdHRhY2gpOgorICAgICAgICAgICBD
aGVja3MgcmVhdHRhY2ggaXMgbmVjZXNzYXJ5LgorICAgICAgICAqIGh0bWwvTnVtYmVySW5wdXRU
eXBlLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OnByZWZl
cnJlZENvbnRlbnRXaWR0aCk6CisgICAgICAgICAgIFVzZXMgcHJlZmVycmVkU2l6ZSBpbnN0ZWFk
IG9mIHNpemUuCisgICAgICAgICAgIEFsc28sIGFkZHMgaW5uZXJTcGluQnV0dG9uRWxlbWVudCBz
aXplIHRvIHdpZHRoLgorCiAyMDExLTA3LTMxICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgUkVHUkVTU0lPTjogZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkgbWV0aG9kIG9m
IFJhbmdlIGluY29ycmVjdGx5IHJldHVybnMgbnVsbCBmb3IgY29sbGFwc2VkIFJhbmdlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCBhZDQ5NDIzZTA4YWUwNjA1
MmI0ZjcwZTQxMTg4NTRkMTI4MWIyZjMyLi40NzljNDYxOGQ2ZDgyYjhhZjJlMmQ1YWRkN2RmY2U2
OGJiZDNhOTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKQEAg
LTUwLDYgKzUwLDcgQEAKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAiTG9j
YWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIKKyNpbmNsdWRlICJOdW1i
ZXJJbnB1dFR5cGUuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Nb3Vz
ZUV2ZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmgiCkBAIC04
MDEsNyArODAyLDEwIEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1
dGUoQXR0cmlidXRlKiBhdHRyKQogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IG11bHRp
cGxlQXR0cikgewogICAgICAgICBtX2lucHV0VHlwZS0+bXVsdGlwbGVBdHRyaWJ1dGVDaGFuZ2Vk
KCk7CiAgICAgICAgIHNldE5lZWRzVmFsaWRpdHlDaGVjaygpOwotICAgIH0gZWxzZSBpZiAoYXR0
ci0+bmFtZSgpID09IHBhdHRlcm5BdHRyIHx8IGF0dHItPm5hbWUoKSA9PSBwcmVjaXNpb25BdHRy
IHx8IGF0dHItPm5hbWUoKSA9PSBzdGVwQXR0cikKKyAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUo
KSA9PSBzdGVwQXR0cikgeworICAgICAgICBtX2lucHV0VHlwZS0+c3RlcEF0dHJpYnV0ZUNoYW5n
ZWQoKTsKKyAgICAgICAgc2V0TmVlZHNWYWxpZGl0eUNoZWNrKCk7CisgICAgfSBlbHNlIGlmIChh
dHRyLT5uYW1lKCkgPT0gcGF0dGVybkF0dHIgfHwgYXR0ci0+bmFtZSgpID09IHByZWNpc2lvbkF0
dHIpCiAgICAgICAgIHNldE5lZWRzVmFsaWRpdHlDaGVjaygpOwogICAgIGVsc2UgaWYgKGF0dHIt
Pm5hbWUoKSA9PSBkaXNhYmxlZEF0dHIpIHsKICAgICAgICAgbV9pbnB1dFR5cGUtPmRpc2FibGVk
QXR0cmlidXRlQ2hhbmdlZCgpOwpAQCAtOTkxLDYgKzk5NSwxNCBAQCBpbnQgSFRNTElucHV0RWxl
bWVudDo6c2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc2l6ZTsKIH0KIAoraW50IEhUTUxJbnB1
dEVsZW1lbnQ6OnByZWZlcnJlZFNpemUoKSBjb25zdAoreworICAgIGlmIChtX2lucHV0VHlwZS0+
c2hvdWxkUmVzcGVjdFNpemVBdHRyaWJ1dGUoKSkKKyAgICAgICAgcmV0dXJuIHNpemUoKTsKKwor
ICAgIHJldHVybiBtX2lucHV0VHlwZS0+bWF4TnVtYmVyT2ZDaGFyYWN0ZXJzKGRlZmF1bHRTaXpl
KTsKK30KKwogdm9pZCBIVE1MSW5wdXRFbGVtZW50Ojpjb3B5Tm9uQXR0cmlidXRlUHJvcGVydGll
cyhjb25zdCBFbGVtZW50KiBzb3VyY2UpCiB7CiAgICAgY29uc3QgSFRNTElucHV0RWxlbWVudCog
c291cmNlRWxlbWVudCA9IHN0YXRpY19jYXN0PGNvbnN0IEhUTUxJbnB1dEVsZW1lbnQqPihzb3Vy
Y2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAppbmRleCA5MmZhOWY1ODU3
YTczYTkxMTUwYTU1ODg4ZTg0NTkyZDM0MzFmY2VlLi5jNzExMDg2NjY5MjhkNWE2MGVjZjhiZmZk
NzdhYWQyOGUxOTk5OGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1
dEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaApA
QCAtMTMxLDYgKzEzMSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNJbmRldGVybWlu
YXRlKCkgY29uc3QgeyByZXR1cm4gaW5kZXRlcm1pbmF0ZSgpOyB9CiAKICAgICBpbnQgc2l6ZSgp
IGNvbnN0OworICAgIGludCBwcmVmZXJyZWRTaXplKCkgY29uc3Q7CiAKICAgICB2b2lkIHNldFR5
cGUoY29uc3QgU3RyaW5nJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5w
dXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAppbmRleCA2MDky
NDYwYTAwNzhmZTI1MzBkZTY0MTdjODdhMTQwMGY5NGVmZTUwLi45MjcxMWFkNzlkMGQ4YTEwNzU5
ZDMyODJhMTJkOTg1MDNjYjM4MjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lu
cHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCkBAIC0y
NDksNiArMjQ5LDEyIEBAIGRvdWJsZSBJbnB1dFR5cGU6Om1heGltdW0oKSBjb25zdAogICAgIHJl
dHVybiAwOwogfQogCitpbnQgSW5wdXRUeXBlOjptYXhOdW1iZXJPZkNoYXJhY3RlcnMoaW50IGRl
ZmF1bHRTaXplKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVy
biAyMDsKK30KKwogYm9vbCBJbnB1dFR5cGU6OnN0ZXBNaXNtYXRjaChjb25zdCBTdHJpbmcmLCBk
b3VibGUpIGNvbnN0CiB7CiAgICAgLy8gTm9uLXN1cHBvcnRlZCB0eXBlcyBzaG91bGQgYmUgcmVq
ZWN0ZWQgYnkgSFRNTElucHV0RWxlbWVudDo6Z2V0QWxsb3dlZFZhbHVlU3RlcCgpLgpAQCAtNDUz
LDYgKzQ1OSwxMCBAQCB2b2lkIElucHV0VHlwZTo6bWluT3JNYXhBdHRyaWJ1dGVDaGFuZ2VkKCkK
IHsKIH0KIAordm9pZCBJbnB1dFR5cGU6OnN0ZXBBdHRyaWJ1dGVDaGFuZ2VkKCkKK3sKK30KKwog
Ym9vbCBJbnB1dFR5cGU6OmNhbkJlU3VjY2Vzc2Z1bFN1Ym1pdEJ1dHRvbigpCiB7CiAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtNjYwLDYgKzY3MCwxMSBAQCBib29sIElucHV0VHlwZTo6c2hvdWxkUmVz
cGVjdEhlaWdodEFuZFdpZHRoQXR0cmlidXRlcygpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCiti
b29sIElucHV0VHlwZTo6c2hvdWxkUmVzcGVjdFNpemVBdHRyaWJ1dGUoKSBjb25zdAoreworICAg
IHJldHVybiB0cnVlOworfQorCiBib29sIElucHV0VHlwZTo6c3VwcG9ydHNQbGFjZWhvbGRlcigp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9JbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgKaW5kZXgg
MmRmMGVmNWI4Zjk1ODhkMzJhZTcyZmI2MzJjMjI0YjdiY2JmNDY0MS4uMmY3YzM4MGMxOGIxMzhh
NzQyNWZjY2ZkNjE5MTQ0MmFkOTBiMWM5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9JbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oCkBAIC0x
NDMsNiArMTQzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgZG91YmxlIGRlZmF1bHRWYWx1ZUZv
clN0ZXBVcCgpIGNvbnN0OwogICAgIHZpcnR1YWwgZG91YmxlIG1pbmltdW0oKSBjb25zdDsKICAg
ICB2aXJ0dWFsIGRvdWJsZSBtYXhpbXVtKCkgY29uc3Q7CisgICAgdmlydHVhbCBpbnQgbWF4TnVt
YmVyT2ZDaGFyYWN0ZXJzKGludCBkZWZhdWx0U2l6ZSkgY29uc3Q7CiAgICAgdmlydHVhbCBib29s
IHN0ZXBNaXNtYXRjaChjb25zdCBTdHJpbmcmLCBkb3VibGUgc3RlcCkgY29uc3Q7CiAgICAgdmly
dHVhbCBkb3VibGUgc3RlcEJhc2UoKSBjb25zdDsKICAgICB2aXJ0dWFsIGRvdWJsZSBzdGVwQmFz
ZVdpdGhEZWNpbWFsUGxhY2VzKHVuc2lnbmVkKikgY29uc3Q7CkBAIC0yMDYsNiArMjA3LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJB
cmVuYSosIFJlbmRlclN0eWxlKikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpOwog
ICAgIHZpcnR1YWwgdm9pZCBtaW5Pck1heEF0dHJpYnV0ZUNoYW5nZWQoKTsKKyAgICB2aXJ0dWFs
IHZvaWQgc3RlcEF0dHJpYnV0ZUNoYW5nZWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgYWx0QXR0cmli
dXRlQ2hhbmdlZCgpOwogICAgIHZpcnR1YWwgdm9pZCBzcmNBdHRyaWJ1dGVDaGFuZ2VkKCk7CiAg
ICAgdmlydHVhbCB2b2lkIHZhbHVlQ2hhbmdlZCgpOwpAQCAtMjI2LDYgKzIyOCw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIGJvb2wgaXNDaGVja2FibGUoKTsKICAgICB2aXJ0dWFsIGJvb2wgaXNT
dGVwcGFibGUoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUmVzcGVjdEhlaWdodEFu
ZFdpZHRoQXR0cmlidXRlcygpOworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRSZXNwZWN0U2l6ZUF0
dHJpYnV0ZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1BsYWNlaG9sZGVyKCkg
Y29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVBsYWNlaG9sZGVyVGV4dCgpOwogICAgIHZp
cnR1YWwgdm9pZCBtdWx0aXBsZUF0dHJpYnV0ZUNoYW5nZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvTnVtYmVySW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
TnVtYmVySW5wdXRUeXBlLmNwcAppbmRleCBiODFlM2E0NTYyZTQ2NWMwNTU4OWU1YWRhNzUzODRi
YTU2NDIzODc4Li41YTliMzZkOWE5OTQ3NzY2NTVkNTE0ZTIzMjRjNGNhMzkwYTZhMWI4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL051bWJlcklucHV0VHlwZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9OdW1iZXJJbnB1dFR5cGUuY3BwCkBAIC01Myw2ICs1MywyMSBAQCB1
c2luZyBuYW1lc3BhY2Ugc3RkOwogc3RhdGljIGNvbnN0IGRvdWJsZSBudW1iZXJEZWZhdWx0U3Rl
cCA9IDEuMDsKIHN0YXRpYyBjb25zdCBkb3VibGUgbnVtYmVyU3RlcFNjYWxlRmFjdG9yID0gMS4w
OwogCitzdGF0aWMgdW5zaWduZWQgbGVuZ3RoQmVmb3JlRGVjaW1hbFBvaW50KGRvdWJsZSB2YWx1
ZSkKK3sKKyAgICAvLyBJZiB2YWx1ZSBpcyBuZWdhdGl2ZSwgJy0nIHNob3VsZCBiZSBjb3VudGVk
LgorCisgICAgZG91YmxlIGFic29sdXRlVmFsdWUgPSBmYWJzKHZhbHVlKTsKKyAgICBpZiAoYWJz
b2x1dGVWYWx1ZSA8IDEpCisgICAgICAgIHJldHVybiB2YWx1ZSA8IDAgPyAyIDogMTsKKworICAg
IHVuc2lnbmVkIGxlbmd0aCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihsb2cxMChmbG9vcihhYnNv
bHV0ZVZhbHVlKSkpICsgMTsKKyAgICBpZiAodmFsdWUgPCAwKQorICAgICAgICBsZW5ndGggKz0g
MTsKKworICAgIHJldHVybiBsZW5ndGg7Cit9CisKIFBhc3NPd25QdHI8SW5wdXRUeXBlPiBOdW1i
ZXJJbnB1dFR5cGU6OmNyZWF0ZShIVE1MSW5wdXRFbGVtZW50KiBlbGVtZW50KQogewogICAgIHJl
dHVybiBhZG9wdFB0cihuZXcgTnVtYmVySW5wdXRUeXBlKGVsZW1lbnQpKTsKQEAgLTEyMSw2ICsx
MzYsNTkgQEAgZG91YmxlIE51bWJlcklucHV0VHlwZTo6bWF4aW11bSgpIGNvbnN0CiAgICAgcmV0
dXJuIHBhcnNlVG9Eb3VibGUoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1heEF0dHIpLCBu
dW1lcmljX2xpbWl0czxmbG9hdD46Om1heCgpKTsKIH0KIAoraW50IE51bWJlcklucHV0VHlwZTo6
bWF4TnVtYmVyT2ZDaGFyYWN0ZXJzKGludCBkZWZhdWx0U2l6ZSkgY29uc3QKK3sKKyAgICBjb25z
dCBkb3VibGUgbGltaXQgPSBudW1lcmljX2xpbWl0czxmbG9hdD46Om1heCgpOworCisgICAgdW5z
aWduZWQgbWluVmFsdWVEZWNpbWFsUGxhY2VzOworICAgIGRvdWJsZSBtaW5WYWx1ZURvdWJsZTsK
KyAgICBTdHJpbmcgbWluVmFsdWUgPSBlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUobWluQXR0
cik7CisgICAgaWYgKCFwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZVdpdGhEZWNpbWFsUGxhY2Vz
KG1pblZhbHVlLCAmbWluVmFsdWVEb3VibGUsICZtaW5WYWx1ZURlY2ltYWxQbGFjZXMpKQorICAg
ICAgICByZXR1cm4gZGVmYXVsdFNpemU7CisgICAgaWYgKG1pblZhbHVlRG91YmxlIDwgLWxpbWl0
IHx8IGxpbWl0IDwgbWluVmFsdWVEb3VibGUpCisgICAgICAgIHJldHVybiBkZWZhdWx0U2l6ZTsK
KworICAgIHVuc2lnbmVkIG1heFZhbHVlRGVjaW1hbFBsYWNlczsKKyAgICBkb3VibGUgbWF4VmFs
dWVEb3VibGU7CisgICAgU3RyaW5nIG1heFZhbHVlID0gZWxlbWVudCgpLT5mYXN0R2V0QXR0cmli
dXRlKG1heEF0dHIpOworICAgIGlmICghcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGVXaXRoRGVj
aW1hbFBsYWNlcyhtYXhWYWx1ZSwgJm1heFZhbHVlRG91YmxlLCAmbWF4VmFsdWVEZWNpbWFsUGxh
Y2VzKSkKKyAgICAgICAgcmV0dXJuIGRlZmF1bHRTaXplOworICAgIGlmIChtYXhWYWx1ZURvdWJs
ZSA8IC1saW1pdCB8fCBsaW1pdCA8IG1heFZhbHVlRG91YmxlKQorICAgICAgICByZXR1cm4gZGVm
YXVsdFNpemU7CisKKyAgICBpZiAobWF4VmFsdWVEb3VibGUgPCBtaW5WYWx1ZURvdWJsZSkgewor
ICAgICAgICBtYXhWYWx1ZURvdWJsZSA9IG1pblZhbHVlRG91YmxlOworICAgICAgICBtYXhWYWx1
ZURlY2ltYWxQbGFjZXMgPSBtYXhWYWx1ZURlY2ltYWxQbGFjZXM7CisgICAgfQorCisgICAgdW5z
aWduZWQgc3RlcFZhbHVlRGVjaW1hbFBsYWNlczsKKyAgICBkb3VibGUgc3RlcFZhbHVlRG91Ymxl
OworICAgIFN0cmluZyBzdGVwVmFsdWUgPSBlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUoc3Rl
cEF0dHIpOworICAgIGlmIChzdGVwVmFsdWUuaXNFbXB0eSgpKSB7CisgICAgICAgIHN0ZXBWYWx1
ZURvdWJsZSA9IDE7CisgICAgICAgIHN0ZXBWYWx1ZURlY2ltYWxQbGFjZXMgPSAwOworICAgIH0g
ZWxzZSB7CisgICAgICAgIGlmICghcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGVXaXRoRGVjaW1h
bFBsYWNlcyhzdGVwVmFsdWUsICZzdGVwVmFsdWVEb3VibGUsICZzdGVwVmFsdWVEZWNpbWFsUGxh
Y2VzKSkKKyAgICAgICAgICAgIHJldHVybiBkZWZhdWx0U2l6ZTsKKyAgICAgICAgaWYgKHN0ZXBW
YWx1ZURvdWJsZSA8IC1saW1pdCB8fCBsaW1pdCA8IHN0ZXBWYWx1ZURvdWJsZSkKKyAgICAgICAg
ICAgIHJldHVybiBkZWZhdWx0U2l6ZTsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBsZW5ndGggPSBs
ZW5ndGhCZWZvcmVEZWNpbWFsUG9pbnQobWluVmFsdWVEb3VibGUpOworICAgIGxlbmd0aCA9IG1h
eChsZW5ndGgsIGxlbmd0aEJlZm9yZURlY2ltYWxQb2ludChtYXhWYWx1ZURvdWJsZSkpOworICAg
IGxlbmd0aCA9IG1heChsZW5ndGgsIGxlbmd0aEJlZm9yZURlY2ltYWxQb2ludChzdGVwVmFsdWVE
b3VibGUpKTsKKworICAgIHVuc2lnbmVkIGxlbmd0aEFmdGVyRGVjaW1hbFBvaW50ID0gbWluVmFs
dWVEZWNpbWFsUGxhY2VzOworICAgIGxlbmd0aEFmdGVyRGVjaW1hbFBvaW50ID0gbWF4KGxlbmd0
aEFmdGVyRGVjaW1hbFBvaW50LCBtYXhWYWx1ZURlY2ltYWxQbGFjZXMpOworICAgIGxlbmd0aEFm
dGVyRGVjaW1hbFBvaW50ID0gbWF4KGxlbmd0aEFmdGVyRGVjaW1hbFBvaW50LCBzdGVwVmFsdWVE
ZWNpbWFsUGxhY2VzKTsKKworICAgIC8vICcuJyBzaG91bGQgYmUgY291bnRlZCBpZiB0aGUgdmFs
dWUgaGFzIGRlY2ltYWwgcGxhY2VzLgorICAgIGlmIChsZW5ndGhBZnRlckRlY2ltYWxQb2ludCA+
IDApCisgICAgICAgIGxlbmd0aCArPSBsZW5ndGhBZnRlckRlY2ltYWxQb2ludCArIDE7CisKKyAg
ICByZXR1cm4gbGVuZ3RoOworfQorCiBib29sIE51bWJlcklucHV0VHlwZTo6aXNTdGVwcGFibGUo
KSBjb25zdAogewogICAgIHJldHVybiB0cnVlOwpAQCAtMjY0LDYgKzMzMiwxMSBAQCBib29sIE51
bWJlcklucHV0VHlwZTo6c2hvdWxkUmVzcGVjdFNwZWVjaEF0dHJpYnV0ZSgpCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKK2Jvb2wgTnVtYmVySW5wdXRUeXBlOjpzaG91bGRSZXNwZWN0U2l6ZUF0dHJp
YnV0ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBib29sIE51bWJlcklucHV0
VHlwZTo6c3VwcG9ydHNQbGFjZWhvbGRlcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHRydWU7CkBA
IC0yNzQsNCArMzQ3LDIxIEBAIGJvb2wgTnVtYmVySW5wdXRUeXBlOjppc051bWJlckZpZWxkKCkg
Y29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBOdW1iZXJJbnB1dFR5cGU6Om1pbk9y
TWF4QXR0cmlidXRlQ2hhbmdlZCgpCit7CisgICAgaWYgKCFzaG91bGRSZWF0dGFjaCgpKQorICAg
ICAgICBlbGVtZW50KCktPnJlYXR0YWNoSWZBdHRhY2hlZCgpOworfQorCit2b2lkIE51bWJlcklu
cHV0VHlwZTo6c3RlcEF0dHJpYnV0ZUNoYW5nZWQoKQoreworICAgIGlmICghc2hvdWxkUmVhdHRh
Y2goKSkKKyAgICAgICAgZWxlbWVudCgpLT5yZWF0dGFjaElmQXR0YWNoZWQoKTsKK30KKworYm9v
bCBOdW1iZXJJbnB1dFR5cGU6OnNob3VsZFJlYXR0YWNoKCkKK3sKKyAgICByZXR1cm4gKChlbGVt
ZW50KCktPnJlbmRlclN0eWxlKCkgJiYgIWVsZW1lbnQoKS0+cmVuZGVyU3R5bGUoKS0+d2lkdGgo
KS5pc0F1dG8oKSkgfHwgZWxlbWVudCgpLT5mb2N1c2VkKCkpOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL051bWJlcklucHV0VHlw
ZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9OdW1iZXJJbnB1dFR5cGUuaAppbmRleCA1NGVhYTY2
YjQ0NWFlMTIwN2I1OWM0ODY4NWExM2NmZDVlZTBkZjE2Li5kMTU4MjRmMDUzYTE1OTlmMGRiMmM4
MjI5N2I5MzZmZjA0MjA3ZTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL051bWJl
cklucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTnVtYmVySW5wdXRUeXBlLmgK
QEAgLTUxLDYgKzUxLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNSYW5n
ZUxpbWl0YXRpb24oKSBjb25zdDsKICAgICB2aXJ0dWFsIGRvdWJsZSBtaW5pbXVtKCkgY29uc3Q7
CiAgICAgdmlydHVhbCBkb3VibGUgbWF4aW11bSgpIGNvbnN0OworICAgIHZpcnR1YWwgaW50IG1h
eE51bWJlck9mQ2hhcmFjdGVycyhpbnQgZGVmYXVsdFNpemUpIGNvbnN0OwogICAgIHZpcnR1YWwg
Ym9vbCBpc1N0ZXBwYWJsZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBzdGVwTWlzbWF0Y2go
Y29uc3QgU3RyaW5nJiwgZG91YmxlKSBjb25zdDsKICAgICB2aXJ0dWFsIGRvdWJsZSBzdGVwQmFz
ZSgpIGNvbnN0OwpAQCAtNzAsOCArNzEsMTIgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFN0cmlu
ZyBzYW5pdGl6ZVZhbHVlKGNvbnN0IFN0cmluZyYpOwogICAgIHZpcnR1YWwgYm9vbCBoYXNVbmFj
Y2VwdGFibGVWYWx1ZSgpOwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRSZXNwZWN0U3BlZWNoQXR0
cmlidXRlKCk7CisgICAgdmlydHVhbCBib29sIHNob3VsZFJlc3BlY3RTaXplQXR0cmlidXRlKCkg
Y29uc3Q7CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzUGxhY2Vob2xkZXIoKSBjb25zdDsKICAg
ICB2aXJ0dWFsIGJvb2wgaXNOdW1iZXJGaWVsZCgpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBt
aW5Pck1heEF0dHJpYnV0ZUNoYW5nZWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RlcEF0dHJpYnV0
ZUNoYW5nZWQoKTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUmVhdHRhY2goKTsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAKaW5kZXggNTJhNWFjOGFkMTVlMDM5
MGU1Y2ZmZDQ0YjQxNzRjN2ExN2U1ZGVlZi4uNjdkNGU3NTc5OTgwNjVmNWZlZmQ4MmI1ZDIyNTEw
M2Q2ZTI2ZjkyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRl
eHRDb250cm9sU2luZ2xlTGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAKQEAgLTM4OSwxMCArMzg5LDEwIEBAIGZsb2F0
IFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6Z2V0QXZnQ2hhcldpZHRoKEF0b21pY1N0cmlu
ZyBmYW1pbHkpCiAKICAgICByZXR1cm4gUmVuZGVyVGV4dENvbnRyb2w6OmdldEF2Z0NoYXJXaWR0
aChmYW1pbHkpOwogfQotICAgIAorCiBpbnQgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpw
cmVmZXJyZWRDb250ZW50V2lkdGgoZmxvYXQgY2hhcldpZHRoKSBjb25zdAogewotICAgIGludCBm
YWN0b3IgPSBpbnB1dEVsZW1lbnQoKS0+c2l6ZSgpOworICAgIGludCBmYWN0b3IgPSBpbnB1dEVs
ZW1lbnQoKS0+cHJlZmVycmVkU2l6ZSgpOwogICAgIGlmIChmYWN0b3IgPD0gMCkKICAgICAgICAg
ZmFjdG9yID0gMjA7CiAKQEAgLTQyMyw2ICs0MjMsMTIgQEAgaW50IFJlbmRlclRleHRDb250cm9s
U2luZ2xlTGluZTo6cHJlZmVycmVkQ29udGVudFdpZHRoKGZsb2F0IGNoYXJXaWR0aCkgY29uc3QK
ICAgICAgICAgcmVzdWx0ICs9IGNhbmNlbFJlbmRlcmVyLT5ib3JkZXJMZWZ0KCkgKyBjYW5jZWxS
ZW5kZXJlci0+Ym9yZGVyUmlnaHQoKSArCiAgICAgICAgICAgICAgICAgICBjYW5jZWxSZW5kZXJl
ci0+cGFkZGluZ0xlZnQoKSArIGNhbmNlbFJlbmRlcmVyLT5wYWRkaW5nUmlnaHQoKTsKIAorICAg
IEhUTUxFbGVtZW50KiBzcGluQnV0dG9uID0gaW5uZXJTcGluQnV0dG9uRWxlbWVudCgpOworICAg
IGlmIChSZW5kZXJCb3gqIHNwaW5SZW5kZXJlciA9IHNwaW5CdXR0b24gPyBzcGluQnV0dG9uLT5y
ZW5kZXJCb3goKSA6IDApIHsKKyAgICAgICAgcmVzdWx0ICs9IHNwaW5SZW5kZXJlci0+Ym9yZGVy
TGVmdCgpICsgc3BpblJlbmRlcmVyLT5ib3JkZXJSaWdodCgpICsKKyAgICAgICAgICAgICAgICAg
IHNwaW5SZW5kZXJlci0+cGFkZGluZ0xlZnQoKSArIHNwaW5SZW5kZXJlci0+cGFkZGluZ1JpZ2h0
KCk7CisgICAgfQorCiAjaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKICAgICBIVE1MRWxlbWVudCog
c3BlZWNoQnV0dG9uID0gc3BlZWNoQnV0dG9uRWxlbWVudCgpOwogICAgIGlmIChSZW5kZXJCb3gq
IHNwZWVjaFJlbmRlcmVyID0gc3BlZWNoQnV0dG9uID8gc3BlZWNoQnV0dG9uLT5yZW5kZXJCb3go
KSA6IDApIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102525</attachid>
            <date>2011-08-01 09:37:03 -0700</date>
            <delta_ts>2011-08-05 00:26:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-60673-20110802013701.patch</filename>
            <type>text/plain</type>
            <size>23582</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTIwOTMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3YzUwNmZmMTg4MGQ3MmMyOTRlZTIz
OWNiZWNjNmRjNTA1MGY1YTQyLi4zMjA5YTJlNDM0NDk3MmI1NzAyZGJkYWY1MjUyZDBiYTM1MmI4
ZDI4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDgtMDEgIFNoaW55YSBLYXdhbmFrYSAg
PHNoaW55YWtAZ29vZ2xlLmNvbT4KKworICAgICAgICBBZGRlZCB0aGUgdGVzdCB0byBjaGVjayB0
aGUgd2lkdGggb2YgaW5wdXRbdHlwZT1udW1iZXJdLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjA2NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZm9ybXMvaW5wdXQtbnVtYmVyLXNpemUtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL2lucHV0LW51bWJlci1zaXpl
Lmh0bWw6IEFkZGVkLgorCiAyMDExLTA3LTMxICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xv
dWdoQGFwcGxlLmNvbT4KIAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NjQ2NzkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW5wdXQt
bnVtYmVyLXNpemUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1u
dW1iZXItc2l6ZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTk0MmIyODdkZWY4OWJiYmQ0YWFm
ZDMzYjkyNGFmYzY1Nzk3OThlNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvaW5wdXQtbnVtYmVyLXNpemUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNzkgQEAKK1Rl
c3QgZm9yIHNpemUgYXR0cmlidXRlIG9mIGlucHV0CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworCitUaGUgbnVtYmVyIGlucHV0IHdpdGhvdXQgbWluL21heC9zdGVwIGhhcyB0aGUgc2Ft
ZSB3aWR0aCBhcyB0ZXh0IGlucHV0CitQQVNTIG51bWJlci5vZmZzZXRXaWR0aCBpcyB0ZXh0Lm9m
ZnNldFdpZHRoCisKK1RoZSBudW1iZXIgaW5wdXQgc2hvdWxkIGlnbm9yZSBzaXplIGF0dHJpYnV0
ZSBmb3IgbGF5b3V0CitQQVNTIG51bWJlci5vZmZzZXRXaWR0aCBpcyB0ZXh0Lm9mZnNldFdpZHRo
CitQQVNTIG51bWJlci5zaXplIGlzIDEwCitQQVNTIG51bWJlci5vZmZzZXRXaWR0aCBpcyB0ZXh0
Lm9mZnNldFdpZHRoCitQQVNTIG51bWJlci5zaXplIGlzIDEwMAorCitJZiBtaW4gb3IgbWF4IGlz
IGFic2VudCwgdGhlIG51bWJlciBpbnB1dCBoYXMgdGhlIHNhbWUgd2lkdGggYXMgaW5wdXRbdHlw
ZT10ZXh0XQorUEFTUyBudW1iZXJXaWR0aCgwLCBudWxsLCBudWxsKSBpcyB0ZXh0V2lkdGgobnVs
bCkKK1BBU1MgbnVtYmVyV2lkdGgobnVsbCwgMTAwLCBudWxsKSBpcyB0ZXh0V2lkdGgobnVsbCkK
K1BBU1MgbnVtYmVyV2lkdGgobnVsbCwgbnVsbCwgMTAwKSBpcyB0ZXh0V2lkdGgobnVsbCkKKwor
SWYgc3RlcCBpcyBhbnksIHRoZSBpbnB1dFt0eXBlPXRleHRdIGhhcyB0aGUgc2FtZSB3aWR0aCBh
cyBpbnB1dFt0eXBlPXRleHRdCitQQVNTIG51bWJlcldpZHRoKDAsIDEsICJhbnkiKSBpcyB0ZXh0
V2lkdGgobnVsbCkKK1BBU1MgbnVtYmVyV2lkdGgoMCwgMTAsICJhbnkiKSBpcyB0ZXh0V2lkdGgo
bnVsbCkKK1BBU1MgbnVtYmVyV2lkdGgoMCwgMS4xLCAiYW55IikgaXMgdGV4dFdpZHRoKG51bGwp
CisKK1RoZSBjYXNlIHRoZSBpbm5lciBzcGluIGJ1dHRvbiBoYXMgYm9yZGVyIG9yIHBhZGRpbmcu
CitQQVNTIG51bWJlcldpZHRoKDAsIDEwLCAxLCAic3R5bGUxIikgaXMgdGV4dFdpZHRoKDIpICsg
MjAKK1BBU1MgbnVtYmVyV2lkdGgoMCwgMTAsIDEsICJzdHlsZTIiKSBpcyB0ZXh0V2lkdGgoMikg
KyAyMAorUEFTUyBudW1iZXJXaWR0aCgwLCAxMCwgMSwgInN0eWxlMyIpIGlzIHRleHRXaWR0aCgy
KSArIDQwCitQQVNTIG51bWJlcldpZHRoKDAsIDEwLCAxLCAic3R5bGU0IikgaXMgdGV4dFdpZHRo
KDIpICsgNDAKKworVGhlIGRlZmF1bHQgc3RlcCBkb2VzIG5vdCBuZWVkIHRvIGJlIGNvbnNpZGVy
ZWQuCitQQVNTIG51bWJlcldpZHRoKDAsIDEsIG51bGwpIGlzIHRleHRXaWR0aCgxKQorUEFTUyBu
dW1iZXJXaWR0aCgwLCAxMDAsIG51bGwpIGlzIHRleHRXaWR0aCgzKQorUEFTUyBudW1iZXJXaWR0
aCgtMTAwLCAxLCBudWxsKSBpcyB0ZXh0V2lkdGgoNCkKK1BBU1MgbnVtYmVyV2lkdGgoMC4wLCAx
LjAsIG51bGwpIGlzIHRleHRXaWR0aCgxKQorUEFTUyBudW1iZXJXaWR0aCgwLjUsIDEuNSwgbnVs
bCkgaXMgdGV4dFdpZHRoKDMpCitQQVNTIG51bWJlcldpZHRoKC0wLjUsIDEuNSwgbnVsbCkgaXMg
dGV4dFdpZHRoKDQpCitQQVNTIG51bWJlcldpZHRoKDFlKzEwLCAxZSsxMCArIDEsIG51bGwpIGlz
IHRleHRXaWR0aCgxMSkKK1BBU1MgbnVtYmVyV2lkdGgoLTFlKzEwLCAxZSsxMCArIDEsIG51bGwp
IGlzIHRleHRXaWR0aCgxMikKKworQ2hlY2sgdGhlIHdpZHRoIG9mIGEgbnVtYmVyIGlucHV0IHdo
ZW4gbWluL21heC9zdGVwIGlzIGNoYW5nZWQgdmFyaW91c2x5CitQQVNTIG51bWJlcldpZHRoKDAs
IDEsIDEpIGlzIHRleHRXaWR0aCgxKQorUEFTUyBudW1iZXJXaWR0aCgwLCAxMCwgMSkgaXMgdGV4
dFdpZHRoKDIpCitQQVNTIG51bWJlcldpZHRoKDAsIDEwMCwgMSkgaXMgdGV4dFdpZHRoKDMpCitQ
QVNTIG51bWJlcldpZHRoKDAsIDEwMDAsIDEpIGlzIHRleHRXaWR0aCg0KQorUEFTUyBudW1iZXJX
aWR0aCgwLCAxMDAwMCwgMSkgaXMgdGV4dFdpZHRoKDUpCitQQVNTIG51bWJlcldpZHRoKDAsIDEw
MDAwMCwgMSkgaXMgdGV4dFdpZHRoKDYpCitQQVNTIG51bWJlcldpZHRoKDAsIDEwMDAwMDAsIDEp
IGlzIHRleHRXaWR0aCg3KQorUEFTUyBudW1iZXJXaWR0aCgwLCAxMDAwMDAwMCwgMSkgaXMgdGV4
dFdpZHRoKDgpCitQQVNTIG51bWJlcldpZHRoKDAsIDEwMDAwMDAwMCwgMSkgaXMgdGV4dFdpZHRo
KDkpCitQQVNTIG51bWJlcldpZHRoKDAsIDEwMDAwMDAwMDAsIDEpIGlzIHRleHRXaWR0aCgxMCkK
K1BBU1MgbnVtYmVyV2lkdGgoLTEsIDAsIDEpIGlzIHRleHRXaWR0aCgyKQorUEFTUyBudW1iZXJX
aWR0aCgtMTAsIDAsIDEpIGlzIHRleHRXaWR0aCgzKQorUEFTUyBudW1iZXJXaWR0aCgtMTAwLCAw
LCAxKSBpcyB0ZXh0V2lkdGgoNCkKK1BBU1MgbnVtYmVyV2lkdGgoLTEwMDAsIDAsIDEpIGlzIHRl
eHRXaWR0aCg1KQorUEFTUyBudW1iZXJXaWR0aCgtMTAwMDAsIDAsIDEpIGlzIHRleHRXaWR0aCg2
KQorUEFTUyBudW1iZXJXaWR0aCgtMTAwMDAwLCAwLCAxKSBpcyB0ZXh0V2lkdGgoNykKK1BBU1Mg
bnVtYmVyV2lkdGgoLTEwMDAwMDAsIDAsIDEpIGlzIHRleHRXaWR0aCg4KQorUEFTUyBudW1iZXJX
aWR0aCgtMTAwMDAwMDAsIDAsIDEpIGlzIHRleHRXaWR0aCg5KQorUEFTUyBudW1iZXJXaWR0aCgt
MTAwMDAwMDAwLCAwLCAxKSBpcyB0ZXh0V2lkdGgoMTApCitQQVNTIG51bWJlcldpZHRoKC0xMDAw
MDAwMDAwLCAwLCAxKSBpcyB0ZXh0V2lkdGgoMTEpCitQQVNTIG51bWJlcldpZHRoKDAsIDEsIDAu
NSkgaXMgdGV4dFdpZHRoKDMpCitQQVNTIG51bWJlcldpZHRoKDAsIDEsIDAuMDUpIGlzIHRleHRX
aWR0aCg0KQorUEFTUyBudW1iZXJXaWR0aCgwLCAxLCAwLjAwNSkgaXMgdGV4dFdpZHRoKDUpCitQ
QVNTIG51bWJlcldpZHRoKDAsIDEsIDAuMDAwNSkgaXMgdGV4dFdpZHRoKDYpCitQQVNTIG51bWJl
cldpZHRoKDAsIDEsIDAuMDAwMDUpIGlzIHRleHRXaWR0aCg3KQorUEFTUyBudW1iZXJXaWR0aCgw
LCAxLCAwLjAwMDAwNSkgaXMgdGV4dFdpZHRoKDgpCitQQVNTIG51bWJlcldpZHRoKDAsIDEsIDAu
MDAwMDAwNSkgaXMgdGV4dFdpZHRoKDkpCitQQVNTIG51bWJlcldpZHRoKDAuNSwgMSwgMSkgaXMg
dGV4dFdpZHRoKDMpCitQQVNTIG51bWJlcldpZHRoKDAuMDUsIDEsIDEpIGlzIHRleHRXaWR0aCg0
KQorUEFTUyBudW1iZXJXaWR0aCgwLjAwNSwgMSwgMSkgaXMgdGV4dFdpZHRoKDUpCitQQVNTIG51
bWJlcldpZHRoKDEuNSwgMiwgMSkgaXMgdGV4dFdpZHRoKDMpCitQQVNTIG51bWJlcldpZHRoKDEu
MDUsIDIsIDEpIGlzIHRleHRXaWR0aCg0KQorUEFTUyBudW1iZXJXaWR0aCgxLjAwNSwgMiwgMSkg
aXMgdGV4dFdpZHRoKDUpCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lucHV0LW51
bWJlci1zaXplLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lucHV0LW51bWJlci1zaXpl
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uY2UyOWEzYTI2NTllZTRmNTllYWFmMTRlODM4YzAzN2M1ZDg0MDZm
OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW5wdXQtbnVtYmVy
LXNpemUuaHRtbApAQCAtMCwwICsxLDE0MyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9J
RVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNj
cmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzxzdHlsZT4KK2lucHV0LnN0eWxlMTo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbiB7Cisg
ICAgIGJvcmRlcjogMTBweCBzb2xpZDsKK30KK2lucHV0LnN0eWxlMjo6LXdlYmtpdC1pbm5lci1z
cGluLWJ1dHRvbiB7CisgICAgIHBhZGRpbmc6IDAgMTBweCAwIDEwcHg7Cit9CitpbnB1dC5zdHls
ZTM6Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24geworICAgICBib3JkZXI6IDEwcHggc29saWQ7
CisgICAgIHBhZGRpbmc6IDAgMTBweCAwIDEwcHg7Cit9CitpbnB1dC5zdHlsZTQ6Oi13ZWJraXQt
aW5uZXItc3Bpbi1idXR0b24geworICAgICBib3JkZXI6IDEwcHggc29saWQ7CisgICAgIG1hcmdp
bjogMCAxMHB4IDAgMTBweDsKKyAgICAgcGFkZGluZzogMCAxMHB4IDAgMTBweDsKK30KKzwvc3R5
bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignVGVzdCBmb3Igc2l6ZSBh
dHRyaWJ1dGUgb2YgaW5wdXQnKTsKKworZnVuY3Rpb24gbnVtYmVyV2lkdGgobWluLCBtYXgsIHN0
ZXAsIGNsYXNzTmFtZSkgeworICAgIG51bWJlci5zdGVwID0gc3RlcDsKKyAgICBudW1iZXIubWlu
ID0gbWluOworICAgIG51bWJlci5tYXggPSBtYXg7CisgICAgbnVtYmVyLmNsYXNzTmFtZSA9IGNs
YXNzTmFtZTsKKyAgICByZXR1cm4gbnVtYmVyLm9mZnNldFdpZHRoOworfQorCitmdW5jdGlvbiB0
ZXh0V2lkdGgoc2l6ZSkgeworICAgIHRleHQuc2l6ZSA9IHNpemU7CisgICAgcmV0dXJuIHRleHQu
b2Zmc2V0V2lkdGg7Cit9CisKK2Z1bmN0aW9uIHNob3VsZEJlVGhlU2FtZVdpZHRoKHNpemUsIG1p
biwgbWF4LCBzdGVwKSB7CisgICAgc2hvdWxkQmUoJ3RleHRXaWR0aCgnICsgc2l6ZSArICcpJywg
J251bWJlcldpZHRoKCcgKyBtaW4gKyAnLCAnICsgbWF4ICsgJywgJyArIHN0ZXAgKyAnKScpOwor
fQorCit2YXIgcGFyZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Citkb2N1bWVu
dC5ib2R5LmFwcGVuZENoaWxkKHBhcmVudCk7CitwYXJlbnQuaW5uZXJIVE1MID0gJzxpbnB1dCB0
eXBlPW51bWJlciBpZD1udW1iZXI+PGlucHV0IHR5cGU9dGV4dCBpZD10ZXh0PicKK3ZhciBudW1i
ZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbnVtYmVyJyk7Cit2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCd0ZXh0Jyk7CisKK2RlYnVnKCdUaGUgbnVtYmVyIGlucHV0IHdp
dGhvdXQgbWluL21heC9zdGVwIGhhcyB0aGUgc2FtZSB3aWR0aCBhcyB0ZXh0IGlucHV0Jyk7Citz
aG91bGRCZSgnbnVtYmVyLm9mZnNldFdpZHRoJywgJ3RleHQub2Zmc2V0V2lkdGgnKTsKK2RlYnVn
KCcnKQorCitkZWJ1ZygnVGhlIG51bWJlciBpbnB1dCBzaG91bGQgaWdub3JlIHNpemUgYXR0cmli
dXRlIGZvciBsYXlvdXQnKTsKK251bWJlci5zaXplID0gMTA7CitzaG91bGRCZSgnbnVtYmVyLm9m
ZnNldFdpZHRoJywgJ3RleHQub2Zmc2V0V2lkdGgnKTsKK3Nob3VsZEJlKCdudW1iZXIuc2l6ZScs
ICcxMCcpOworbnVtYmVyLnNpemUgPSAxMDA7CitzaG91bGRCZSgnbnVtYmVyLm9mZnNldFdpZHRo
JywgJ3RleHQub2Zmc2V0V2lkdGgnKTsKK3Nob3VsZEJlKCdudW1iZXIuc2l6ZScsICcxMDAnKTsK
K251bWJlci5zaXplID0gbnVsbDsKK2RlYnVnKCcnKQorCitkZWJ1ZygnSWYgbWluIG9yIG1heCBp
cyBhYnNlbnQsIHRoZSBudW1iZXIgaW5wdXQgaGFzIHRoZSBzYW1lIHdpZHRoIGFzIGlucHV0W3R5
cGU9dGV4dF0nKQorc2hvdWxkQmUoJ251bWJlcldpZHRoKDAsIG51bGwsIG51bGwpJywgJ3RleHRX
aWR0aChudWxsKScpOworc2hvdWxkQmUoJ251bWJlcldpZHRoKG51bGwsIDEwMCwgbnVsbCknLCAn
dGV4dFdpZHRoKG51bGwpJyk7CitzaG91bGRCZSgnbnVtYmVyV2lkdGgobnVsbCwgbnVsbCwgMTAw
KScsICd0ZXh0V2lkdGgobnVsbCknKTsKK2RlYnVnKCcnKTsKKworZGVidWcoJ0lmIHN0ZXAgaXMg
YW55LCB0aGUgaW5wdXRbdHlwZT10ZXh0XSBoYXMgdGhlIHNhbWUgd2lkdGggYXMgaW5wdXRbdHlw
ZT10ZXh0XScpCitzaG91bGRCZSgnbnVtYmVyV2lkdGgoMCwgMSwgImFueSIpJywgJ3RleHRXaWR0
aChudWxsKScpOworc2hvdWxkQmUoJ251bWJlcldpZHRoKDAsIDEwLCAiYW55IiknLCAndGV4dFdp
ZHRoKG51bGwpJyk7CitzaG91bGRCZSgnbnVtYmVyV2lkdGgoMCwgMS4xLCAiYW55IiknLCAndGV4
dFdpZHRoKG51bGwpJyk7CitkZWJ1ZygnJyk7CisKK2RlYnVnKCdUaGUgY2FzZSB0aGUgaW5uZXIg
c3BpbiBidXR0b24gaGFzIGJvcmRlciBvciBwYWRkaW5nLicpOworc2hvdWxkQmUoJ251bWJlcldp
ZHRoKDAsIDEwLCAxLCAic3R5bGUxIiknLCAndGV4dFdpZHRoKDIpICsgMjAnKTsKK3Nob3VsZEJl
KCdudW1iZXJXaWR0aCgwLCAxMCwgMSwgInN0eWxlMiIpJywgJ3RleHRXaWR0aCgyKSArIDIwJyk7
CitzaG91bGRCZSgnbnVtYmVyV2lkdGgoMCwgMTAsIDEsICJzdHlsZTMiKScsICd0ZXh0V2lkdGgo
MikgKyA0MCcpOworc2hvdWxkQmUoJ251bWJlcldpZHRoKDAsIDEwLCAxLCAic3R5bGU0IiknLCAn
dGV4dFdpZHRoKDIpICsgNDAnKTsKK2RlYnVnKCcnKTsKKworZGVidWcoJ1RoZSBkZWZhdWx0IHN0
ZXAgZG9lcyBub3QgbmVlZCB0byBiZSBjb25zaWRlcmVkLicpCitzaG91bGRCZSgnbnVtYmVyV2lk
dGgoMCwgMSwgbnVsbCknLCAndGV4dFdpZHRoKDEpJyk7CitzaG91bGRCZSgnbnVtYmVyV2lkdGgo
MCwgMTAwLCBudWxsKScsICd0ZXh0V2lkdGgoMyknKTsKK3Nob3VsZEJlKCdudW1iZXJXaWR0aCgt
MTAwLCAxLCBudWxsKScsICd0ZXh0V2lkdGgoNCknKTsKK3Nob3VsZEJlKCdudW1iZXJXaWR0aCgw
LjAsIDEuMCwgbnVsbCknLCAndGV4dFdpZHRoKDEpJyk7CitzaG91bGRCZSgnbnVtYmVyV2lkdGgo
MC41LCAxLjUsIG51bGwpJywgJ3RleHRXaWR0aCgzKScpOworc2hvdWxkQmUoJ251bWJlcldpZHRo
KC0wLjUsIDEuNSwgbnVsbCknLCAndGV4dFdpZHRoKDQpJyk7CitzaG91bGRCZSgnbnVtYmVyV2lk
dGgoMWUrMTAsIDFlKzEwICsgMSwgbnVsbCknLCAndGV4dFdpZHRoKDExKScpOworc2hvdWxkQmUo
J251bWJlcldpZHRoKC0xZSsxMCwgMWUrMTAgKyAxLCBudWxsKScsICd0ZXh0V2lkdGgoMTIpJyk7
CitkZWJ1ZygnJyk7CisKK2RlYnVnKCdDaGVjayB0aGUgd2lkdGggb2YgYSBudW1iZXIgaW5wdXQg
d2hlbiBtaW4vbWF4L3N0ZXAgaXMgY2hhbmdlZCB2YXJpb3VzbHknKQorc2hvdWxkQmUoJ251bWJl
cldpZHRoKDAsIDEsIDEpJywgJ3RleHRXaWR0aCgxKScpOworc2hvdWxkQmUoJ251bWJlcldpZHRo
KDAsIDEwLCAxKScsICd0ZXh0V2lkdGgoMiknKTsKK3Nob3VsZEJlKCdudW1iZXJXaWR0aCgwLCAx
MDAsIDEpJywgJ3RleHRXaWR0aCgzKScpOworc2hvdWxkQmUoJ251bWJlcldpZHRoKDAsIDEwMDAs
IDEpJywgJ3RleHRXaWR0aCg0KScpOworc2hvdWxkQmUoJ251bWJlcldpZHRoKDAsIDEwMDAwLCAx
KScsICd0ZXh0V2lkdGgoNSknKTsKK3Nob3VsZEJlKCdudW1iZXJXaWR0aCgwLCAxMDAwMDAsIDEp
JywgJ3RleHRXaWR0aCg2KScpOworc2hvdWxkQmUoJ251bWJlcldpZHRoKDAsIDEwMDAwMDAsIDEp
JywgJ3RleHRXaWR0aCg3KScpOworc2hvdWxkQmUoJ251bWJlcldpZHRoKDAsIDEwMDAwMDAwLCAx
KScsICd0ZXh0V2lkdGgoOCknKTsKK3Nob3VsZEJlKCdudW1iZXJXaWR0aCgwLCAxMDAwMDAwMDAs
IDEpJywgJ3RleHRXaWR0aCg5KScpOworc2hvdWxkQmUoJ251bWJlcldpZHRoKDAsIDEwMDAwMDAw
MDAsIDEpJywgJ3RleHRXaWR0aCgxMCknKTsKKworc2hvdWxkQmUoJ251bWJlcldpZHRoKC0xLCAw
LCAxKScsICd0ZXh0V2lkdGgoMiknKTsKK3Nob3VsZEJlKCdudW1iZXJXaWR0aCgtMTAsIDAsIDEp
JywgJ3RleHRXaWR0aCgzKScpOworc2hvdWxkQmUoJ251bWJlcldpZHRoKC0xMDAsIDAsIDEpJywg
J3RleHRXaWR0aCg0KScpOworc2hvdWxkQmUoJ251bWJlcldpZHRoKC0xMDAwLCAwLCAxKScsICd0
ZXh0V2lkdGgoNSknKTsKK3Nob3VsZEJlKCdudW1iZXJXaWR0aCgtMTAwMDAsIDAsIDEpJywgJ3Rl
eHRXaWR0aCg2KScpOworc2hvdWxkQmUoJ251bWJlcldpZHRoKC0xMDAwMDAsIDAsIDEpJywgJ3Rl
eHRXaWR0aCg3KScpOworc2hvdWxkQmUoJ251bWJlcldpZHRoKC0xMDAwMDAwLCAwLCAxKScsICd0
ZXh0V2lkdGgoOCknKTsKK3Nob3VsZEJlKCdudW1iZXJXaWR0aCgtMTAwMDAwMDAsIDAsIDEpJywg
J3RleHRXaWR0aCg5KScpOworc2hvdWxkQmUoJ251bWJlcldpZHRoKC0xMDAwMDAwMDAsIDAsIDEp
JywgJ3RleHRXaWR0aCgxMCknKTsKK3Nob3VsZEJlKCdudW1iZXJXaWR0aCgtMTAwMDAwMDAwMCwg
MCwgMSknLCAndGV4dFdpZHRoKDExKScpOworCitzaG91bGRCZSgnbnVtYmVyV2lkdGgoMCwgMSwg
MC41KScsICd0ZXh0V2lkdGgoMyknKTsKK3Nob3VsZEJlKCdudW1iZXJXaWR0aCgwLCAxLCAwLjA1
KScsICd0ZXh0V2lkdGgoNCknKTsKK3Nob3VsZEJlKCdudW1iZXJXaWR0aCgwLCAxLCAwLjAwNSkn
LCAndGV4dFdpZHRoKDUpJyk7CitzaG91bGRCZSgnbnVtYmVyV2lkdGgoMCwgMSwgMC4wMDA1KScs
ICd0ZXh0V2lkdGgoNiknKTsKK3Nob3VsZEJlKCdudW1iZXJXaWR0aCgwLCAxLCAwLjAwMDA1KScs
ICd0ZXh0V2lkdGgoNyknKTsKK3Nob3VsZEJlKCdudW1iZXJXaWR0aCgwLCAxLCAwLjAwMDAwNSkn
LCAndGV4dFdpZHRoKDgpJyk7CitzaG91bGRCZSgnbnVtYmVyV2lkdGgoMCwgMSwgMC4wMDAwMDA1
KScsICd0ZXh0V2lkdGgoOSknKTsKKworc2hvdWxkQmUoJ251bWJlcldpZHRoKDAuNSwgMSwgMSkn
LCAndGV4dFdpZHRoKDMpJyk7CitzaG91bGRCZSgnbnVtYmVyV2lkdGgoMC4wNSwgMSwgMSknLCAn
dGV4dFdpZHRoKDQpJyk7CitzaG91bGRCZSgnbnVtYmVyV2lkdGgoMC4wMDUsIDEsIDEpJywgJ3Rl
eHRXaWR0aCg1KScpOworc2hvdWxkQmUoJ251bWJlcldpZHRoKDEuNSwgMiwgMSknLCAndGV4dFdp
ZHRoKDMpJyk7CitzaG91bGRCZSgnbnVtYmVyV2lkdGgoMS4wNSwgMiwgMSknLCAndGV4dFdpZHRo
KDQpJyk7CitzaG91bGRCZSgnbnVtYmVyV2lkdGgoMS4wMDUsIDIsIDEpJywgJ3RleHRXaWR0aCg1
KScpOworZGVidWcoJycpCisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3Jp
cHQ+CisKKworPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjBjNTc3MzNl
NTQ1NjFjZDUyMjliOGFlNjEzMGNlODZmZTQwNmJiNC4uZDBkYTY2ODJiNDZhMDkxZjE4ZTQyNzJi
MTQxMWIwNzI1MjNhODVlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDExLTA4LTAx
ICBTaGlueWEgS2F3YW5ha2EgIDxzaGlueWFrQGdvb2dsZS5jb20+CisKKyAgICAgICAgVGhlIGlu
cHV0W3R5cGU9bnVtYmVyXSBlbGVtZW50IHNob3VsZCBiZSBhcyB3aWRlIGFzIG5lY2Vzc2FyeSB0
byBzaG93IHRoZSB3aWRlc3QgcG9zc2libGUgdmFsdWUuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDY3MworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBzaXplIG9mIGlucHV0W3R5cGU9bnVtYmVyXSBp
cyBjYWxjdWxhdGVkIGZyb20gbWluL21heC9zdGVwIGF0dHJpYnV0ZXMgdG8gc2hvdyB0aGUgd2lk
ZXN0IHBvc3NpYmxlIHZhbHVlLgorICAgICAgICBJZiBtaW4gb3IgbWF4IGF0dHJpYnV0ZSBpcyBh
YnNlbnQsIHRoZSBkZWZhdWx0IHNpemUgaXMgdXNlZC4KKworICAgICAgICBUZXN0OiBmYXN0L2Zv
cm1zL2lucHV0LW51bWJlci1zaXplLmh0bWwKKworICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpwYXJzZU1hcHBl
ZEF0dHJpYnV0ZSk6CisgICAgICAgICAgIEFkZGVkIHN0ZXBBdHRyaWJ1dGVDaGFuZ2VkIGhhbmRs
ZXIuCisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpwcmVmZXJyZWRTaXplKToK
KyAgICAgICAgICAgUmV0dXJucyB0aGUgcHJlZmVycmVkIHNpemUgb2YgdGhlIGlucHV0LgorICAg
ICAgICAgICBTYW1lIGFzIHNpemUgaWYgSW5wdXRUeXBlOjpzaG91bGRSZXNwZWN0U2l6ZUF0dHJp
YnV0ZSByZXR1cm5zIHRydWUuCisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50Lmg6Cisg
ICAgICAgICogaHRtbC9JbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBl
OjptYXhOdW1iZXJPZkNoYXJhY3RlcnMpOgorICAgICAgICAgICBSZXR1cm5zIHRoZSB3aWRlc3Qg
Y29udGVudCBsZW5ndGguCisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OnN0ZXBBdHRyaWJ1
dGVDaGFuZ2VkKToKKyAgICAgICAgICAgV2lsbCBiZSBjYWxsZWQgd2hlbiBzdGVwIGF0dHJpYnV0
ZSBpcyBjaGFuZ2VkLgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjpzaG91bGRSZXNwZWN0
U2l6ZUF0dHJpYnV0ZSk6CisgICAgICAgICAgIFJldHVybnMgdHJ1ZSBpZiBIVE1MSW5wdXRFbGVt
ZW50OjpwcmVmZXJyZWRTaXplIHJldHVybnMgdGhlIHNhbWUgdmFsdWUgYXMgc2l6ZS4KKyAgICAg
ICAgKiBodG1sL0lucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwvTnVtYmVySW5wdXRUeXBlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Omxlbmd0aEJlZm9yZURlY2ltYWxQb2ludCk6CisgICAgICAg
ICAgIENhbGN1bGF0ZXMgdGhlIHdpZHRoIGJlZm9yZSB0aGUgZGVjaW1hbCBwb2ludC4KKyAgICAg
ICAgKFdlYkNvcmU6Ok51bWJlcklucHV0VHlwZTo6bWF4TnVtYmVyT2ZDaGFyYWN0ZXJzKToKKyAg
ICAgICAgICAgUmV0dXJucyB0aGUgd2lkZXN0IGNvbnRlbnQgbGVuZ3RoLgorICAgICAgICAoV2Vi
Q29yZTo6TnVtYmVySW5wdXRUeXBlOjpzaG91bGRSZXNwZWN0U2l6ZUF0dHJpYnV0ZSk6CisgICAg
ICAgICAgIFJldHVybnMgZmFsc2UgdG8gY2FsY3VsYXRlIHNpemUuCisgICAgICAgIChXZWJDb3Jl
OjpOdW1iZXJJbnB1dFR5cGU6Om1pbk9yTWF4QXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICAg
IENhbGxzIHNldE5lZWRzTGF5b3V0QW5kUHJlZldpZHRoc1JlY2FsYy4KKyAgICAgICAgKFdlYkNv
cmU6Ok51bWJlcklucHV0VHlwZTo6c3RlcEF0dHJpYnV0ZUNoYW5nZWQpOiBEaXR0by4KKyAgICAg
ICAgKiBodG1sL051bWJlcklucHV0VHlwZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJU
ZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dENv
bnRyb2xTaW5nbGVMaW5lOjpwcmVmZXJyZWRDb250ZW50V2lkdGgpOgorICAgICAgICAgICBVc2Vz
IHByZWZlcnJlZFNpemUgaW5zdGVhZCBvZiBzaXplLgorICAgICAgICAgICBBbHNvLCBhZGRzIGlu
bmVyU3BpbkJ1dHRvbkVsZW1lbnQgc2l6ZSB0byB3aWR0aC4KKwogMjAxMS0wNy0zMSAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJFR1JFU1NJT046IGdldEJvdW5kaW5n
Q2xpZW50UmVjdCgpIG1ldGhvZCBvZiBSYW5nZSBpbmNvcnJlY3RseSByZXR1cm5zIG51bGwgZm9y
IGNvbGxhcHNlZCBSYW5nZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5w
dXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAK
aW5kZXggYWQ0OTQyM2UwOGFlMDYwNTJiNGY3MGU0MTE4ODU0ZDEyODFiMmYzMi4uNDc5YzQ2MThk
NmQ4MmI4YWYyZTJkNWFkZDdkZmNlNjhiYmQzYTk4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxJbnB1dEVsZW1lbnQuY3BwCkBAIC01MCw2ICs1MCw3IEBACiAjaW5jbHVkZSAiS2V5Ym9hcmRF
dmVudC5oIgogI2luY2x1ZGUgIkxvY2FsaXplZFN0cmluZ3MuaCIKICNpbmNsdWRlICJNb3VzZUV2
ZW50LmgiCisjaW5jbHVkZSAiTnVtYmVySW5wdXRUeXBlLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgog
I2luY2x1ZGUgIlBsYXRmb3JtTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIlJlbmRlclRleHRDb250
cm9sU2luZ2xlTGluZS5oIgpAQCAtODAxLDcgKzgwMiwxMCBAQCB2b2lkIEhUTUxJbnB1dEVsZW1l
bnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKICAgICB9IGVsc2UgaWYg
KGF0dHItPm5hbWUoKSA9PSBtdWx0aXBsZUF0dHIpIHsKICAgICAgICAgbV9pbnB1dFR5cGUtPm11
bHRpcGxlQXR0cmlidXRlQ2hhbmdlZCgpOwogICAgICAgICBzZXROZWVkc1ZhbGlkaXR5Q2hlY2so
KTsKLSAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBwYXR0ZXJuQXR0ciB8fCBhdHRyLT5u
YW1lKCkgPT0gcHJlY2lzaW9uQXR0ciB8fCBhdHRyLT5uYW1lKCkgPT0gc3RlcEF0dHIpCisgICAg
fSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gc3RlcEF0dHIpIHsKKyAgICAgICAgbV9pbnB1dFR5
cGUtPnN0ZXBBdHRyaWJ1dGVDaGFuZ2VkKCk7CisgICAgICAgIHNldE5lZWRzVmFsaWRpdHlDaGVj
aygpOworICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IHBhdHRlcm5BdHRyIHx8IGF0dHIt
Pm5hbWUoKSA9PSBwcmVjaXNpb25BdHRyKQogICAgICAgICBzZXROZWVkc1ZhbGlkaXR5Q2hlY2so
KTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gZGlzYWJsZWRBdHRyKSB7CiAgICAgICAg
IG1faW5wdXRUeXBlLT5kaXNhYmxlZEF0dHJpYnV0ZUNoYW5nZWQoKTsKQEAgLTk5MSw2ICs5OTUs
MTQgQEAgaW50IEhUTUxJbnB1dEVsZW1lbnQ6OnNpemUoKSBjb25zdAogICAgIHJldHVybiBtX3Np
emU7CiB9CiAKK2ludCBIVE1MSW5wdXRFbGVtZW50OjpwcmVmZXJyZWRTaXplKCkgY29uc3QKK3sK
KyAgICBpZiAobV9pbnB1dFR5cGUtPnNob3VsZFJlc3BlY3RTaXplQXR0cmlidXRlKCkpCisgICAg
ICAgIHJldHVybiBzaXplKCk7CisKKyAgICByZXR1cm4gbV9pbnB1dFR5cGUtPm1heE51bWJlck9m
Q2hhcmFjdGVycyhkZWZhdWx0U2l6ZSk7Cit9CisKIHZvaWQgSFRNTElucHV0RWxlbWVudDo6Y29w
eU5vbkF0dHJpYnV0ZVByb3BlcnRpZXMoY29uc3QgRWxlbWVudCogc291cmNlKQogewogICAgIGNv
bnN0IEhUTUxJbnB1dEVsZW1lbnQqIHNvdXJjZUVsZW1lbnQgPSBzdGF0aWNfY2FzdDxjb25zdCBI
VE1MSW5wdXRFbGVtZW50Kj4oc291cmNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTElucHV0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmgKaW5kZXggOTJmYTlmNTg1N2E3M2E5MTE1MGE1NTg4OGU4NDU5MmQzNDMxZmNlZS4uYzcx
MTA4NjY2OTI4ZDVhNjBlY2Y4YmZmZDc3YWFkMjhlMTk5OThiOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW5wdXRFbGVtZW50LmgKQEAgLTEzMSw2ICsxMzEsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBib29sIGlzSW5kZXRlcm1pbmF0ZSgpIGNvbnN0IHsgcmV0dXJuIGluZGV0ZXJtaW5hdGUo
KTsgfQogCiAgICAgaW50IHNpemUoKSBjb25zdDsKKyAgICBpbnQgcHJlZmVycmVkU2l6ZSgpIGNv
bnN0OwogCiAgICAgdm9pZCBzZXRUeXBlKGNvbnN0IFN0cmluZyYpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lu
cHV0VHlwZS5jcHAKaW5kZXggNjA5MjQ2MGEwMDc4ZmUyNTMwZGU2NDE3Yzg3YTE0MDBmOTRlZmU1
MC4uOTI3MTFhZDc5ZDBkOGExMDc1OWQzMjgyYTEyZDk4NTAzY2IzODI2YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSW5wdXRUeXBlLmNwcApAQCAtMjQ5LDYgKzI0OSwxMiBAQCBkb3VibGUgSW5wdXRUeXBlOjpt
YXhpbXVtKCkgY29uc3QKICAgICByZXR1cm4gMDsKIH0KIAoraW50IElucHV0VHlwZTo6bWF4TnVt
YmVyT2ZDaGFyYWN0ZXJzKGludCBkZWZhdWx0U2l6ZSkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICByZXR1cm4gMjA7Cit9CisKIGJvb2wgSW5wdXRUeXBlOjpzdGVwTWlz
bWF0Y2goY29uc3QgU3RyaW5nJiwgZG91YmxlKSBjb25zdAogewogICAgIC8vIE5vbi1zdXBwb3J0
ZWQgdHlwZXMgc2hvdWxkIGJlIHJlamVjdGVkIGJ5IEhUTUxJbnB1dEVsZW1lbnQ6OmdldEFsbG93
ZWRWYWx1ZVN0ZXAoKS4KQEAgLTQ1Myw2ICs0NTksMTAgQEAgdm9pZCBJbnB1dFR5cGU6Om1pbk9y
TWF4QXR0cmlidXRlQ2hhbmdlZCgpCiB7CiB9CiAKK3ZvaWQgSW5wdXRUeXBlOjpzdGVwQXR0cmli
dXRlQ2hhbmdlZCgpCit7Cit9CisKIGJvb2wgSW5wdXRUeXBlOjpjYW5CZVN1Y2Nlc3NmdWxTdWJt
aXRCdXR0b24oKQogewogICAgIHJldHVybiBmYWxzZTsKQEAgLTY2MCw2ICs2NzAsMTEgQEAgYm9v
bCBJbnB1dFR5cGU6OnNob3VsZFJlc3BlY3RIZWlnaHRBbmRXaWR0aEF0dHJpYnV0ZXMoKQogICAg
IHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBJbnB1dFR5cGU6OnNob3VsZFJlc3BlY3RTaXplQXR0
cmlidXRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogYm9vbCBJbnB1dFR5cGU6
OnN1cHBvcnRzUGxhY2Vob2xkZXIoKSBjb25zdAogewogICAgIHJldHVybiBmYWxzZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0lucHV0VHlwZS5oCmluZGV4IDJkZjBlZjViOGY5NTg4ZDMyYWU3MmZiNjMyYzIyNGI3YmNi
ZjQ2NDEuLjJmN2MzODBjMThiMTM4YTc0MjVmY2NmZDYxOTE0NDJhZDkwYjFjOTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9JbnB1dFR5cGUuaApAQCAtMTQzLDYgKzE0Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IGRvdWJsZSBkZWZhdWx0VmFsdWVGb3JTdGVwVXAoKSBjb25zdDsKICAgICB2aXJ0dWFsIGRvdWJs
ZSBtaW5pbXVtKCkgY29uc3Q7CiAgICAgdmlydHVhbCBkb3VibGUgbWF4aW11bSgpIGNvbnN0Owor
ICAgIHZpcnR1YWwgaW50IG1heE51bWJlck9mQ2hhcmFjdGVycyhpbnQgZGVmYXVsdFNpemUpIGNv
bnN0OwogICAgIHZpcnR1YWwgYm9vbCBzdGVwTWlzbWF0Y2goY29uc3QgU3RyaW5nJiwgZG91Ymxl
IHN0ZXApIGNvbnN0OwogICAgIHZpcnR1YWwgZG91YmxlIHN0ZXBCYXNlKCkgY29uc3Q7CiAgICAg
dmlydHVhbCBkb3VibGUgc3RlcEJhc2VXaXRoRGVjaW1hbFBsYWNlcyh1bnNpZ25lZCopIGNvbnN0
OwpAQCAtMjA2LDYgKzIwNyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCog
Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopIGNvbnN0OwogICAgIHZp
cnR1YWwgdm9pZCBhdHRhY2goKTsKICAgICB2aXJ0dWFsIHZvaWQgbWluT3JNYXhBdHRyaWJ1dGVD
aGFuZ2VkKCk7CisgICAgdmlydHVhbCB2b2lkIHN0ZXBBdHRyaWJ1dGVDaGFuZ2VkKCk7CiAgICAg
dmlydHVhbCB2b2lkIGFsdEF0dHJpYnV0ZUNoYW5nZWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgc3Jj
QXR0cmlidXRlQ2hhbmdlZCgpOwogICAgIHZpcnR1YWwgdm9pZCB2YWx1ZUNoYW5nZWQoKTsKQEAg
LTIyNiw2ICsyMjgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzQ2hlY2thYmxlKCk7
CiAgICAgdmlydHVhbCBib29sIGlzU3RlcHBhYmxlKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29s
IHNob3VsZFJlc3BlY3RIZWlnaHRBbmRXaWR0aEF0dHJpYnV0ZXMoKTsKKyAgICB2aXJ0dWFsIGJv
b2wgc2hvdWxkUmVzcGVjdFNpemVBdHRyaWJ1dGUoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wg
c3VwcG9ydHNQbGFjZWhvbGRlcigpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVQbGFj
ZWhvbGRlclRleHQoKTsKICAgICB2aXJ0dWFsIHZvaWQgbXVsdGlwbGVBdHRyaWJ1dGVDaGFuZ2Vk
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL051bWJlcklucHV0VHlwZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL051bWJlcklucHV0VHlwZS5jcHAKaW5kZXggYjgxZTNhNDU2
MmU0NjVjMDU1ODllNWFkYTc1Mzg0YmE1NjQyMzg3OC4uYWM5YmYwNjk5OWExYzljM2E4OTc3ZTRh
YzQ2NGE5YmFiNjQyNjQyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9OdW1iZXJJ
bnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTnVtYmVySW5wdXRUeXBlLmNw
cApAQCAtNTMsNiArNTMsMjEgQEAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIHN0YXRpYyBjb25zdCBk
b3VibGUgbnVtYmVyRGVmYXVsdFN0ZXAgPSAxLjA7CiBzdGF0aWMgY29uc3QgZG91YmxlIG51bWJl
clN0ZXBTY2FsZUZhY3RvciA9IDEuMDsKIAorc3RhdGljIHVuc2lnbmVkIGxlbmd0aEJlZm9yZURl
Y2ltYWxQb2ludChkb3VibGUgdmFsdWUpCit7CisgICAgLy8gSWYgdmFsdWUgaXMgbmVnYXRpdmUs
ICctJyBzaG91bGQgYmUgY291bnRlZC4KKworICAgIGRvdWJsZSBhYnNvbHV0ZVZhbHVlID0gZmFi
cyh2YWx1ZSk7CisgICAgaWYgKGFic29sdXRlVmFsdWUgPCAxKQorICAgICAgICByZXR1cm4gdmFs
dWUgPCAwID8gMiA6IDE7CisKKyAgICB1bnNpZ25lZCBsZW5ndGggPSBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4obG9nMTAoZmxvb3IoYWJzb2x1dGVWYWx1ZSkpKSArIDE7CisgICAgaWYgKHZhbHVlIDwg
MCkKKyAgICAgICAgbGVuZ3RoICs9IDE7CisKKyAgICByZXR1cm4gbGVuZ3RoOworfQorCiBQYXNz
T3duUHRyPElucHV0VHlwZT4gTnVtYmVySW5wdXRUeXBlOjpjcmVhdGUoSFRNTElucHV0RWxlbWVu
dCogZWxlbWVudCkKIHsKICAgICByZXR1cm4gYWRvcHRQdHIobmV3IE51bWJlcklucHV0VHlwZShl
bGVtZW50KSk7CkBAIC0xMjEsNiArMTM2LDU5IEBAIGRvdWJsZSBOdW1iZXJJbnB1dFR5cGU6Om1h
eGltdW0oKSBjb25zdAogICAgIHJldHVybiBwYXJzZVRvRG91YmxlKGVsZW1lbnQoKS0+ZmFzdEdl
dEF0dHJpYnV0ZShtYXhBdHRyKSwgbnVtZXJpY19saW1pdHM8ZmxvYXQ+OjptYXgoKSk7CiB9CiAK
K2ludCBOdW1iZXJJbnB1dFR5cGU6Om1heE51bWJlck9mQ2hhcmFjdGVycyhpbnQgZGVmYXVsdFNp
emUpIGNvbnN0Cit7CisgICAgY29uc3QgZG91YmxlIGxpbWl0ID0gbnVtZXJpY19saW1pdHM8Zmxv
YXQ+OjptYXgoKTsKKworICAgIHVuc2lnbmVkIG1pblZhbHVlRGVjaW1hbFBsYWNlczsKKyAgICBk
b3VibGUgbWluVmFsdWVEb3VibGU7CisgICAgU3RyaW5nIG1pblZhbHVlID0gZWxlbWVudCgpLT5m
YXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpOworICAgIGlmICghcGFyc2VUb0RvdWJsZUZvck51bWJl
clR5cGVXaXRoRGVjaW1hbFBsYWNlcyhtaW5WYWx1ZSwgJm1pblZhbHVlRG91YmxlLCAmbWluVmFs
dWVEZWNpbWFsUGxhY2VzKSkKKyAgICAgICAgcmV0dXJuIGRlZmF1bHRTaXplOworICAgIGlmICht
aW5WYWx1ZURvdWJsZSA8IC1saW1pdCB8fCBsaW1pdCA8IG1pblZhbHVlRG91YmxlKQorICAgICAg
ICByZXR1cm4gZGVmYXVsdFNpemU7CisKKyAgICB1bnNpZ25lZCBtYXhWYWx1ZURlY2ltYWxQbGFj
ZXM7CisgICAgZG91YmxlIG1heFZhbHVlRG91YmxlOworICAgIFN0cmluZyBtYXhWYWx1ZSA9IGVs
ZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShtYXhBdHRyKTsKKyAgICBpZiAoIXBhcnNlVG9Eb3Vi
bGVGb3JOdW1iZXJUeXBlV2l0aERlY2ltYWxQbGFjZXMobWF4VmFsdWUsICZtYXhWYWx1ZURvdWJs
ZSwgJm1heFZhbHVlRGVjaW1hbFBsYWNlcykpCisgICAgICAgIHJldHVybiBkZWZhdWx0U2l6ZTsK
KyAgICBpZiAobWF4VmFsdWVEb3VibGUgPCAtbGltaXQgfHwgbGltaXQgPCBtYXhWYWx1ZURvdWJs
ZSkKKyAgICAgICAgcmV0dXJuIGRlZmF1bHRTaXplOworCisgICAgaWYgKG1heFZhbHVlRG91Ymxl
IDwgbWluVmFsdWVEb3VibGUpIHsKKyAgICAgICAgbWF4VmFsdWVEb3VibGUgPSBtaW5WYWx1ZURv
dWJsZTsKKyAgICAgICAgbWF4VmFsdWVEZWNpbWFsUGxhY2VzID0gbWF4VmFsdWVEZWNpbWFsUGxh
Y2VzOworICAgIH0KKworICAgIHVuc2lnbmVkIHN0ZXBWYWx1ZURlY2ltYWxQbGFjZXM7CisgICAg
ZG91YmxlIHN0ZXBWYWx1ZURvdWJsZTsKKyAgICBTdHJpbmcgc3RlcFZhbHVlID0gZWxlbWVudCgp
LT5mYXN0R2V0QXR0cmlidXRlKHN0ZXBBdHRyKTsKKyAgICBpZiAoc3RlcFZhbHVlLmlzRW1wdHko
KSkgeworICAgICAgICBzdGVwVmFsdWVEb3VibGUgPSAxOworICAgICAgICBzdGVwVmFsdWVEZWNp
bWFsUGxhY2VzID0gMDsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoIXBhcnNlVG9Eb3VibGVG
b3JOdW1iZXJUeXBlV2l0aERlY2ltYWxQbGFjZXMoc3RlcFZhbHVlLCAmc3RlcFZhbHVlRG91Ymxl
LCAmc3RlcFZhbHVlRGVjaW1hbFBsYWNlcykpCisgICAgICAgICAgICByZXR1cm4gZGVmYXVsdFNp
emU7CisgICAgICAgIGlmIChzdGVwVmFsdWVEb3VibGUgPCAtbGltaXQgfHwgbGltaXQgPCBzdGVw
VmFsdWVEb3VibGUpCisgICAgICAgICAgICByZXR1cm4gZGVmYXVsdFNpemU7CisgICAgfQorCisg
ICAgdW5zaWduZWQgbGVuZ3RoID0gbGVuZ3RoQmVmb3JlRGVjaW1hbFBvaW50KG1pblZhbHVlRG91
YmxlKTsKKyAgICBsZW5ndGggPSBtYXgobGVuZ3RoLCBsZW5ndGhCZWZvcmVEZWNpbWFsUG9pbnQo
bWF4VmFsdWVEb3VibGUpKTsKKyAgICBsZW5ndGggPSBtYXgobGVuZ3RoLCBsZW5ndGhCZWZvcmVE
ZWNpbWFsUG9pbnQoc3RlcFZhbHVlRG91YmxlKSk7CisKKyAgICB1bnNpZ25lZCBsZW5ndGhBZnRl
ckRlY2ltYWxQb2ludCA9IG1pblZhbHVlRGVjaW1hbFBsYWNlczsKKyAgICBsZW5ndGhBZnRlckRl
Y2ltYWxQb2ludCA9IG1heChsZW5ndGhBZnRlckRlY2ltYWxQb2ludCwgbWF4VmFsdWVEZWNpbWFs
UGxhY2VzKTsKKyAgICBsZW5ndGhBZnRlckRlY2ltYWxQb2ludCA9IG1heChsZW5ndGhBZnRlckRl
Y2ltYWxQb2ludCwgc3RlcFZhbHVlRGVjaW1hbFBsYWNlcyk7CisKKyAgICAvLyAnLicgc2hvdWxk
IGJlIGNvdW50ZWQgaWYgdGhlIHZhbHVlIGhhcyBkZWNpbWFsIHBsYWNlcy4KKyAgICBpZiAobGVu
Z3RoQWZ0ZXJEZWNpbWFsUG9pbnQgPiAwKQorICAgICAgICBsZW5ndGggKz0gbGVuZ3RoQWZ0ZXJE
ZWNpbWFsUG9pbnQgKyAxOworCisgICAgcmV0dXJuIGxlbmd0aDsKK30KKwogYm9vbCBOdW1iZXJJ
bnB1dFR5cGU6OmlzU3RlcHBhYmxlKCkgY29uc3QKIHsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTI2
NCw2ICszMzIsMTEgQEAgYm9vbCBOdW1iZXJJbnB1dFR5cGU6OnNob3VsZFJlc3BlY3RTcGVlY2hB
dHRyaWJ1dGUoKQogICAgIHJldHVybiB0cnVlOwogfQogCitib29sIE51bWJlcklucHV0VHlwZTo6
c2hvdWxkUmVzcGVjdFNpemVBdHRyaWJ1dGUoKSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsK
K30KKwogYm9vbCBOdW1iZXJJbnB1dFR5cGU6OnN1cHBvcnRzUGxhY2Vob2xkZXIoKSBjb25zdAog
ewogICAgIHJldHVybiB0cnVlOwpAQCAtMjc0LDQgKzM0NywyMCBAQCBib29sIE51bWJlcklucHV0
VHlwZTo6aXNOdW1iZXJGaWVsZCgpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQg
TnVtYmVySW5wdXRUeXBlOjptaW5Pck1heEF0dHJpYnV0ZUNoYW5nZWQoKQoreworICAgIElucHV0
VHlwZTo6bWluT3JNYXhBdHRyaWJ1dGVDaGFuZ2VkKCk7CisKKyAgICBpZiAoZWxlbWVudCgpLT5y
ZW5kZXJlcigpKQorICAgICAgICBlbGVtZW50KCktPnJlbmRlcmVyKCktPnNldE5lZWRzTGF5b3V0
QW5kUHJlZldpZHRoc1JlY2FsYygpOworfQorCit2b2lkIE51bWJlcklucHV0VHlwZTo6c3RlcEF0
dHJpYnV0ZUNoYW5nZWQoKQoreworICAgIElucHV0VHlwZTo6c3RlcEF0dHJpYnV0ZUNoYW5nZWQo
KTsKKworICAgIGlmIChlbGVtZW50KCktPnJlbmRlcmVyKCkpCisgICAgICAgIGVsZW1lbnQoKS0+
cmVuZGVyZXIoKS0+c2V0TmVlZHNMYXlvdXRBbmRQcmVmV2lkdGhzUmVjYWxjKCk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTnVt
YmVySW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL051bWJlcklucHV0VHlwZS5oCmlu
ZGV4IDU0ZWFhNjZiNDQ1YWUxMjA3YjU5YzQ4Njg1YTEzY2ZkNWVlMGRmMTYuLjUzNzM0N2Y5YjUz
NmJhODkxYTI4M2U3ODJkNmFhYzExMmNiZDk0YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvTnVtYmVySW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9OdW1iZXJJ
bnB1dFR5cGUuaApAQCAtNTEsNiArNTEsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBz
dXBwb3J0c1JhbmdlTGltaXRhdGlvbigpIGNvbnN0OwogICAgIHZpcnR1YWwgZG91YmxlIG1pbmlt
dW0oKSBjb25zdDsKICAgICB2aXJ0dWFsIGRvdWJsZSBtYXhpbXVtKCkgY29uc3Q7CisgICAgdmly
dHVhbCBpbnQgbWF4TnVtYmVyT2ZDaGFyYWN0ZXJzKGludCBkZWZhdWx0U2l6ZSkgY29uc3Q7CiAg
ICAgdmlydHVhbCBib29sIGlzU3RlcHBhYmxlKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHN0
ZXBNaXNtYXRjaChjb25zdCBTdHJpbmcmLCBkb3VibGUpIGNvbnN0OwogICAgIHZpcnR1YWwgZG91
YmxlIHN0ZXBCYXNlKCkgY29uc3Q7CkBAIC03MCw4ICs3MSwxMSBAQCBwcml2YXRlOgogICAgIHZp
cnR1YWwgU3RyaW5nIHNhbml0aXplVmFsdWUoY29uc3QgU3RyaW5nJik7CiAgICAgdmlydHVhbCBi
b29sIGhhc1VuYWNjZXB0YWJsZVZhbHVlKCk7CiAgICAgdmlydHVhbCBib29sIHNob3VsZFJlc3Bl
Y3RTcGVlY2hBdHRyaWJ1dGUoKTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUmVzcGVjdFNpemVB
dHRyaWJ1dGUoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNQbGFjZWhvbGRlcigp
IGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc051bWJlckZpZWxkKCkgY29uc3Q7CisgICAgdmly
dHVhbCB2b2lkIG1pbk9yTWF4QXR0cmlidXRlQ2hhbmdlZCgpOworICAgIHZpcnR1YWwgdm9pZCBz
dGVwQXR0cmlidXRlQ2hhbmdlZCgpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xl
TGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5n
bGVMaW5lLmNwcAppbmRleCA1MmE1YWM4YWQxNWUwMzkwZTVjZmZkNDRiNDE3NGM3YTE3ZTVkZWVm
Li42N2Q0ZTc1Nzk5ODA2NWY1ZmVmZDgyYjVkMjI1MTAzZDZlMjZmOTIyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5l
LmNwcApAQCAtMzg5LDEwICszODksMTAgQEAgZmxvYXQgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVM
aW5lOjpnZXRBdmdDaGFyV2lkdGgoQXRvbWljU3RyaW5nIGZhbWlseSkKIAogICAgIHJldHVybiBS
ZW5kZXJUZXh0Q29udHJvbDo6Z2V0QXZnQ2hhcldpZHRoKGZhbWlseSk7CiB9Ci0gICAgCisKIGlu
dCBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OnByZWZlcnJlZENvbnRlbnRXaWR0aChmbG9h
dCBjaGFyV2lkdGgpIGNvbnN0CiB7Ci0gICAgaW50IGZhY3RvciA9IGlucHV0RWxlbWVudCgpLT5z
aXplKCk7CisgICAgaW50IGZhY3RvciA9IGlucHV0RWxlbWVudCgpLT5wcmVmZXJyZWRTaXplKCk7
CiAgICAgaWYgKGZhY3RvciA8PSAwKQogICAgICAgICBmYWN0b3IgPSAyMDsKIApAQCAtNDIzLDYg
KzQyMywxMiBAQCBpbnQgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpwcmVmZXJyZWRDb250
ZW50V2lkdGgoZmxvYXQgY2hhcldpZHRoKSBjb25zdAogICAgICAgICByZXN1bHQgKz0gY2FuY2Vs
UmVuZGVyZXItPmJvcmRlckxlZnQoKSArIGNhbmNlbFJlbmRlcmVyLT5ib3JkZXJSaWdodCgpICsK
ICAgICAgICAgICAgICAgICAgIGNhbmNlbFJlbmRlcmVyLT5wYWRkaW5nTGVmdCgpICsgY2FuY2Vs
UmVuZGVyZXItPnBhZGRpbmdSaWdodCgpOwogCisgICAgSFRNTEVsZW1lbnQqIHNwaW5CdXR0b24g
PSBpbm5lclNwaW5CdXR0b25FbGVtZW50KCk7CisgICAgaWYgKFJlbmRlckJveCogc3BpblJlbmRl
cmVyID0gc3BpbkJ1dHRvbiA/IHNwaW5CdXR0b24tPnJlbmRlckJveCgpIDogMCkgeworICAgICAg
ICByZXN1bHQgKz0gc3BpblJlbmRlcmVyLT5ib3JkZXJMZWZ0KCkgKyBzcGluUmVuZGVyZXItPmJv
cmRlclJpZ2h0KCkgKworICAgICAgICAgICAgICAgICAgc3BpblJlbmRlcmVyLT5wYWRkaW5nTGVm
dCgpICsgc3BpblJlbmRlcmVyLT5wYWRkaW5nUmlnaHQoKTsKKyAgICB9CisKICNpZiBFTkFCTEUo
SU5QVVRfU1BFRUNIKQogICAgIEhUTUxFbGVtZW50KiBzcGVlY2hCdXR0b24gPSBzcGVlY2hCdXR0
b25FbGVtZW50KCk7CiAgICAgaWYgKFJlbmRlckJveCogc3BlZWNoUmVuZGVyZXIgPSBzcGVlY2hC
dXR0b24gPyBzcGVlY2hCdXR0b24tPnJlbmRlckJveCgpIDogMCkgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103047</attachid>
            <date>2011-08-05 00:26:33 -0700</date>
            <delta_ts>2011-08-07 23:51:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-60673-20110805162631.patch</filename>
            <type>text/plain</type>
            <size>25583</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTIzMzcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBkNjE3MTlhYjgxYjI5NTQ2NjQ3YzIy
M2U3MjA5Nzc0M2U0Y2M5ZDY1Li41NmU2ZmJiZDg2YjY1NjZlYzdkOTY1ZmNiODAwMWQ1NTAzMWMy
NWI0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDgtMDEgIFNoaW55YSBLYXdhbmFrYSAg
PHNoaW55YWtAZ29vZ2xlLmNvbT4KKworICAgICAgICBBZGRlZCB0aGUgdGVzdCB0byBjaGVjayB0
aGUgd2lkdGggb2YgaW5wdXRbdHlwZT1udW1iZXJdLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjA2NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZm9ybXMvaW5wdXQtbnVtYmVyLXNpemUtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL2lucHV0LW51bWJlci1zaXpl
Lmh0bWw6IEFkZGVkLgorCiAyMDExLTA4LTAzICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQu
b3JnPgogCiAgICAgICAgIENocm9taXVtIFdpbmRvd3MgYW5kIExpbnV4IHJlYmFzZWxpbmVzIGFm
dGVyIHI5MjMzMC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW5wdXQtbnVt
YmVyLXNpemUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1udW1i
ZXItc2l6ZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmI5YzMxNTk3OThhMWY3MzQyNGIxMDYw
YjY3YjVmNDVkZjc5NDFiNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9y
bXMvaW5wdXQtbnVtYmVyLXNpemUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsODIgQEAKK1Rlc3Qg
Zm9yIHNpemUgYXR0cmlidXRlIG9mIGlucHV0CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCitUaGUgY29udGVudCBhcmVhIG9mIHRoZSBudW1iZXIgaW5wdXQgd2l0aG91dCBtaW4vbWF4
L3N0ZXAgYXR0cmlidXRlIHNob3VsZCBoYXZlIHRoZSBzYW1lIHdpZHRoIGFzIHRleHQgaW5wdXQK
K1BBU1MgbnVtYmVyV2l0aG91dFNwaW5CdXR0b24ub2Zmc2V0V2lkdGggaXMgdGV4dC5vZmZzZXRX
aWR0aAorCitUaGUgbnVtYmVyIHdob3NlIHdpZHRoIGlzIHNwZWNpZmllZCBzaG91bGQgcmVzcGVj
dCB0aGUgc2V0dGluZworUEFTUyBudW1iZXJXaXRoV2lkdGgub2Zmc2V0V2lkdGggaXMgMTAwCisK
K1RoZSBudW1iZXIgaW5wdXQgc2hvdWxkIGlnbm9yZSBzaXplIGF0dHJpYnV0ZSBmb3IgbGF5b3V0
CitQQVNTIG51bWJlci5zaXplID0gMTA7IG51bWJlci5vZmZzZXRXaWR0aCBpcyB0ZXh0Lm9mZnNl
dFdpZHRoICsgc3BpbkJ1dHRvbldpZHRoCitQQVNTIG51bWJlci5zaXplIGlzIDEwCitQQVNTIG51
bWJlci5zaXplID0gMTAwOyBudW1iZXIub2Zmc2V0V2lkdGggaXMgdGV4dC5vZmZzZXRXaWR0aCAr
IHNwaW5CdXR0b25XaWR0aAorUEFTUyBudW1iZXIuc2l6ZSBpcyAxMDAKKworSWYgbWluIG9yIG1h
eCBpcyBhYnNlbnQsIHRoZSBudW1iZXIgaW5wdXQgaGFzIHRoZSBzYW1lIHdpZHRoIGFzIGlucHV0
W3R5cGU9dGV4dF0KK1BBU1MgbnVtYmVyV2lkdGgoMCwgbnVsbCwgbnVsbCkgaXMgdGV4dFdpZHRo
UGx1c1NwaW5CdXR0b25XaWR0aChudWxsKQorUEFTUyBudW1iZXJXaWR0aChudWxsLCAxMDAsIG51
bGwpIGlzIHRleHRXaWR0aFBsdXNTcGluQnV0dG9uV2lkdGgobnVsbCkKK1BBU1MgbnVtYmVyV2lk
dGgobnVsbCwgbnVsbCwgMTAwKSBpcyB0ZXh0V2lkdGhQbHVzU3BpbkJ1dHRvbldpZHRoKG51bGwp
CisKK0lmIHN0ZXAgaXMgYW55LCB0aGUgaW5wdXRbdHlwZT10ZXh0XSBoYXMgdGhlIHNhbWUgd2lk
dGggYXMgaW5wdXRbdHlwZT10ZXh0XQorUEFTUyBudW1iZXJXaWR0aCgwLCAxLCAiYW55IikgaXMg
dGV4dFdpZHRoUGx1c1NwaW5CdXR0b25XaWR0aChudWxsKQorUEFTUyBudW1iZXJXaWR0aCgwLCAx
MCwgImFueSIpIGlzIHRleHRXaWR0aFBsdXNTcGluQnV0dG9uV2lkdGgobnVsbCkKK1BBU1MgbnVt
YmVyV2lkdGgoMCwgMS4xLCAiYW55IikgaXMgdGV4dFdpZHRoUGx1c1NwaW5CdXR0b25XaWR0aChu
dWxsKQorCitUaGUgY2FzZSB0aGUgaW5uZXIgc3BpbiBidXR0b24gaGFzIGJvcmRlciBvciBwYWRk
aW5nLgorUEFTUyBudW1iZXJXaWR0aCgwLCAxMCwgMSwgIndpdGgtYm9yZGVyIikgaXMgdGV4dFdp
ZHRoUGx1c1NwaW5CdXR0b25XaWR0aCgyKSArIGJvcmRlcldpZHRoCitQQVNTIG51bWJlcldpZHRo
KDAsIDEwLCAxLCAid2l0aC1wYWRkaW5nIikgaXMgdGV4dFdpZHRoUGx1c1NwaW5CdXR0b25XaWR0
aCgyKSArIHBhZGRpbmdXaWR0aAorUEFTUyBudW1iZXJXaWR0aCgwLCAxMCwgMSwgIndpdGgtbWFy
Z2luIikgaXMgdGV4dFdpZHRoUGx1c1NwaW5CdXR0b25XaWR0aCgyKQorUEFTUyBudW1iZXJXaWR0
aCgwLCAxMCwgMSwgIndpdGgtYm9yZGVyIHdpdGgtcGFkZGluZyIpIGlzIHRleHRXaWR0aFBsdXNT
cGluQnV0dG9uV2lkdGgoMikgKyBib3JkZXJXaWR0aCArIHBhZGRpbmdXaWR0aAorCitUaGUgZGVm
YXVsdCBzdGVwIGRvZXMgbm90IG5lZWQgdG8gYmUgY29uc2lkZXJlZC4KK1BBU1MgbnVtYmVyV2lk
dGgoMCwgMSwgbnVsbCkgaXMgdGV4dFdpZHRoUGx1c1NwaW5CdXR0b25XaWR0aCgxKQorUEFTUyBu
dW1iZXJXaWR0aCgwLCAxMDAsIG51bGwpIGlzIHRleHRXaWR0aFBsdXNTcGluQnV0dG9uV2lkdGgo
MykKK1BBU1MgbnVtYmVyV2lkdGgoLTEwMCwgMSwgbnVsbCkgaXMgdGV4dFdpZHRoUGx1c1NwaW5C
dXR0b25XaWR0aCg0KQorUEFTUyBudW1iZXJXaWR0aCgwLjAsIDEuMCwgbnVsbCkgaXMgdGV4dFdp
ZHRoUGx1c1NwaW5CdXR0b25XaWR0aCgxKQorUEFTUyBudW1iZXJXaWR0aCgwLjUsIDEuNSwgbnVs
bCkgaXMgdGV4dFdpZHRoUGx1c1NwaW5CdXR0b25XaWR0aCgzKQorUEFTUyBudW1iZXJXaWR0aCgt
MC41LCAxLjUsIG51bGwpIGlzIHRleHRXaWR0aFBsdXNTcGluQnV0dG9uV2lkdGgoNCkKK1BBU1Mg
bnVtYmVyV2lkdGgoMWUrMTAsIDFlKzEwICsgMSwgbnVsbCkgaXMgdGV4dFdpZHRoUGx1c1NwaW5C
dXR0b25XaWR0aCgxMSkKK1BBU1MgbnVtYmVyV2lkdGgoLTFlKzEwLCAxZSsxMCArIDEsIG51bGwp
IGlzIHRleHRXaWR0aFBsdXNTcGluQnV0dG9uV2lkdGgoMTIpCisKK0NoZWNrIHRoZSB3aWR0aCBv
ZiBhIG51bWJlciBpbnB1dCB3aGVuIG1pbi9tYXgvc3RlcCBpcyBjaGFuZ2VkIHZhcmlvdXNseQor
UEFTUyBudW1iZXJXaWR0aCgwLCAxLCAxKSBpcyB0ZXh0V2lkdGhQbHVzU3BpbkJ1dHRvbldpZHRo
KDEpCitQQVNTIG51bWJlcldpZHRoKDAsIDEwLCAxKSBpcyB0ZXh0V2lkdGhQbHVzU3BpbkJ1dHRv
bldpZHRoKDIpCitQQVNTIG51bWJlcldpZHRoKDAsIDEwMCwgMSkgaXMgdGV4dFdpZHRoUGx1c1Nw
aW5CdXR0b25XaWR0aCgzKQorUEFTUyBudW1iZXJXaWR0aCgwLCAxMDAwLCAxKSBpcyB0ZXh0V2lk
dGhQbHVzU3BpbkJ1dHRvbldpZHRoKDQpCitQQVNTIG51bWJlcldpZHRoKDAsIDEwMDAwLCAxKSBp
cyB0ZXh0V2lkdGhQbHVzU3BpbkJ1dHRvbldpZHRoKDUpCitQQVNTIG51bWJlcldpZHRoKDAsIDEw
MDAwMCwgMSkgaXMgdGV4dFdpZHRoUGx1c1NwaW5CdXR0b25XaWR0aCg2KQorUEFTUyBudW1iZXJX
aWR0aCgwLCAxMDAwMDAwLCAxKSBpcyB0ZXh0V2lkdGhQbHVzU3BpbkJ1dHRvbldpZHRoKDcpCitQ
QVNTIG51bWJlcldpZHRoKDAsIDEwMDAwMDAwLCAxKSBpcyB0ZXh0V2lkdGhQbHVzU3BpbkJ1dHRv
bldpZHRoKDgpCitQQVNTIG51bWJlcldpZHRoKDAsIDEwMDAwMDAwMCwgMSkgaXMgdGV4dFdpZHRo
UGx1c1NwaW5CdXR0b25XaWR0aCg5KQorUEFTUyBudW1iZXJXaWR0aCgwLCAxMDAwMDAwMDAwLCAx
KSBpcyB0ZXh0V2lkdGhQbHVzU3BpbkJ1dHRvbldpZHRoKDEwKQorUEFTUyBudW1iZXJXaWR0aCgt
MSwgMCwgMSkgaXMgdGV4dFdpZHRoUGx1c1NwaW5CdXR0b25XaWR0aCgyKQorUEFTUyBudW1iZXJX
aWR0aCgtMTAsIDAsIDEpIGlzIHRleHRXaWR0aFBsdXNTcGluQnV0dG9uV2lkdGgoMykKK1BBU1Mg
bnVtYmVyV2lkdGgoLTEwMCwgMCwgMSkgaXMgdGV4dFdpZHRoUGx1c1NwaW5CdXR0b25XaWR0aCg0
KQorUEFTUyBudW1iZXJXaWR0aCgtMTAwMCwgMCwgMSkgaXMgdGV4dFdpZHRoUGx1c1NwaW5CdXR0
b25XaWR0aCg1KQorUEFTUyBudW1iZXJXaWR0aCgtMTAwMDAsIDAsIDEpIGlzIHRleHRXaWR0aFBs
dXNTcGluQnV0dG9uV2lkdGgoNikKK1BBU1MgbnVtYmVyV2lkdGgoLTEwMDAwMCwgMCwgMSkgaXMg
dGV4dFdpZHRoUGx1c1NwaW5CdXR0b25XaWR0aCg3KQorUEFTUyBudW1iZXJXaWR0aCgtMTAwMDAw
MCwgMCwgMSkgaXMgdGV4dFdpZHRoUGx1c1NwaW5CdXR0b25XaWR0aCg4KQorUEFTUyBudW1iZXJX
aWR0aCgtMTAwMDAwMDAsIDAsIDEpIGlzIHRleHRXaWR0aFBsdXNTcGluQnV0dG9uV2lkdGgoOSkK
K1BBU1MgbnVtYmVyV2lkdGgoLTEwMDAwMDAwMCwgMCwgMSkgaXMgdGV4dFdpZHRoUGx1c1NwaW5C
dXR0b25XaWR0aCgxMCkKK1BBU1MgbnVtYmVyV2lkdGgoLTEwMDAwMDAwMDAsIDAsIDEpIGlzIHRl
eHRXaWR0aFBsdXNTcGluQnV0dG9uV2lkdGgoMTEpCitQQVNTIG51bWJlcldpZHRoKDAsIDEsIDAu
NSkgaXMgdGV4dFdpZHRoUGx1c1NwaW5CdXR0b25XaWR0aCgzKQorUEFTUyBudW1iZXJXaWR0aCgw
LCAxLCAwLjA1KSBpcyB0ZXh0V2lkdGhQbHVzU3BpbkJ1dHRvbldpZHRoKDQpCitQQVNTIG51bWJl
cldpZHRoKDAsIDEsIDAuMDA1KSBpcyB0ZXh0V2lkdGhQbHVzU3BpbkJ1dHRvbldpZHRoKDUpCitQ
QVNTIG51bWJlcldpZHRoKDAsIDEsIDAuMDAwNSkgaXMgdGV4dFdpZHRoUGx1c1NwaW5CdXR0b25X
aWR0aCg2KQorUEFTUyBudW1iZXJXaWR0aCgwLCAxLCAwLjAwMDA1KSBpcyB0ZXh0V2lkdGhQbHVz
U3BpbkJ1dHRvbldpZHRoKDcpCitQQVNTIG51bWJlcldpZHRoKDAsIDEsIDAuMDAwMDA1KSBpcyB0
ZXh0V2lkdGhQbHVzU3BpbkJ1dHRvbldpZHRoKDgpCitQQVNTIG51bWJlcldpZHRoKDAsIDEsIDAu
MDAwMDAwNSkgaXMgdGV4dFdpZHRoUGx1c1NwaW5CdXR0b25XaWR0aCg5KQorUEFTUyBudW1iZXJX
aWR0aCgwLjUsIDEsIDEpIGlzIHRleHRXaWR0aFBsdXNTcGluQnV0dG9uV2lkdGgoMykKK1BBU1Mg
bnVtYmVyV2lkdGgoMC4wNSwgMSwgMSkgaXMgdGV4dFdpZHRoUGx1c1NwaW5CdXR0b25XaWR0aCg0
KQorUEFTUyBudW1iZXJXaWR0aCgwLjAwNSwgMSwgMSkgaXMgdGV4dFdpZHRoUGx1c1NwaW5CdXR0
b25XaWR0aCg1KQorUEFTUyBudW1iZXJXaWR0aCgxLjUsIDIsIDEpIGlzIHRleHRXaWR0aFBsdXNT
cGluQnV0dG9uV2lkdGgoMykKK1BBU1MgbnVtYmVyV2lkdGgoMS4wNSwgMiwgMSkgaXMgdGV4dFdp
ZHRoUGx1c1NwaW5CdXR0b25XaWR0aCg0KQorUEFTUyBudW1iZXJXaWR0aCgxLjAwNSwgMiwgMSkg
aXMgdGV4dFdpZHRoUGx1c1NwaW5CdXR0b25XaWR0aCg1KQorCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy9pbnB1dC1udW1iZXItc2l6ZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9pbnB1dC1udW1iZXItc2l6ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMxNzllNGJiZTIwYTg3YjRkNzhi
NGIwNDgzZDMxZmIxYTk5NDMwOGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL2lucHV0LW51bWJlci1zaXplLmh0bWwKQEAgLTAsMCArMSwxNTMgQEAKKzwhRE9DVFlQ
RSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisKK2lucHV0LndpdGgtYm9yZGVyOjotd2Vi
a2l0LWlubmVyLXNwaW4tYnV0dG9uIHsKKyAgICAgYm9yZGVyOiAxMHB4IHNvbGlkOworfQoraW5w
dXQud2l0aC1wYWRkaW5nOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uIHsKKyAgICAgcGFkZGlu
ZzogMCA4cHggMCA4cHg7Cit9CitpbnB1dC53aXRoLW1hcmdpbjo6LXdlYmtpdC1pbm5lci1zcGlu
LWJ1dHRvbiB7CisgICAgIG1hcmdpbjogMCAxMHB4IDAgMTBweDsKK30KKworaW5wdXQjbnVtYmVy
LXdpdGhvdXQtc3BpbmJ1dHRvbjo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbiB7CisgICAgIGRp
c3BsYXk6IG5vbmU7CisgICAgIG1hcmdpbjogMDsKK30KK2lucHV0I251bWJlci13aXRoLXdpZHRo
IHsKKyAgICAgd2lkdGg6IDEwMHB4OworfQorCis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8
cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8c2Ny
aXB0PgorZGVzY3JpcHRpb24oJ1Rlc3QgZm9yIHNpemUgYXR0cmlidXRlIG9mIGlucHV0Jyk7CisK
K3ZhciBwYXJlbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKK2RvY3VtZW50LmJv
ZHkuYXBwZW5kQ2hpbGQocGFyZW50KTsKK3BhcmVudC5pbm5lckhUTUwgPSAnPGlucHV0IHR5cGU9
bnVtYmVyIGlkPW51bWJlcj48aW5wdXQgdHlwZT0ibnVtYmVyIiBpZD0ibnVtYmVyLXdpdGhvdXQt
c3BpbmJ1dHRvbiI+PGlucHV0IHR5cGU9dGV4dCBpZD10ZXh0PjxpbnB1dCB0eXBlPW51bWJlciBp
ZD0ibnVtYmVyLXdpdGgtd2lkdGgiPicKK3ZhciBudW1iZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnbnVtYmVyJyk7Cit2YXIgbnVtYmVyV2l0aG91dFNwaW5CdXR0b24gPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnbnVtYmVyLXdpdGhvdXQtc3BpbmJ1dHRvbicpOwordmFyIG51bWJlcldp
dGhXaWR0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdudW1iZXItd2l0aC13aWR0aCcpOwor
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGV4dCcpOworCisvLyBUaGUgd2lk
dGggb2Ygc3BpbiBidXR0b24gc2hvdWxkIGRpZmZlciBieSBlbnZpcm9ubWVudC4gU28gaXQgc2hv
dWxkIGJlIGNhbGN1bGF0ZWQgaGVyZS4KK3ZhciBzcGluQnV0dG9uV2lkdGggPSBudW1iZXIub2Zm
c2V0V2lkdGggLSBudW1iZXJXaXRob3V0U3BpbkJ1dHRvbi5vZmZzZXRXaWR0aDsKKworCitkZWJ1
ZygnVGhlIGNvbnRlbnQgYXJlYSBvZiB0aGUgbnVtYmVyIGlucHV0IHdpdGhvdXQgbWluL21heC9z
dGVwIGF0dHJpYnV0ZSBzaG91bGQgaGF2ZSB0aGUgc2FtZSB3aWR0aCBhcyB0ZXh0IGlucHV0Jyk7
CitzaG91bGRCZSgnbnVtYmVyV2l0aG91dFNwaW5CdXR0b24ub2Zmc2V0V2lkdGgnLCAndGV4dC5v
ZmZzZXRXaWR0aCcpOworZGVidWcoJycpOworCitkZWJ1ZygnVGhlIG51bWJlciB3aG9zZSB3aWR0
aCBpcyBzcGVjaWZpZWQgc2hvdWxkIHJlc3BlY3QgdGhlIHNldHRpbmcnKTsKK3Nob3VsZEJlKCdu
dW1iZXJXaXRoV2lkdGgub2Zmc2V0V2lkdGgnLCAnMTAwJyk7CitkZWJ1ZygnJyk7CisKK2RlYnVn
KCdUaGUgbnVtYmVyIGlucHV0IHNob3VsZCBpZ25vcmUgc2l6ZSBhdHRyaWJ1dGUgZm9yIGxheW91
dCcpOworc2hvdWxkQmUoJ251bWJlci5zaXplID0gMTA7IG51bWJlci5vZmZzZXRXaWR0aCcsICd0
ZXh0Lm9mZnNldFdpZHRoICsgc3BpbkJ1dHRvbldpZHRoJyk7CitzaG91bGRCZSgnbnVtYmVyLnNp
emUnLCAnMTAnKTsKK3Nob3VsZEJlKCdudW1iZXIuc2l6ZSA9IDEwMDsgbnVtYmVyLm9mZnNldFdp
ZHRoJywgJ3RleHQub2Zmc2V0V2lkdGggKyBzcGluQnV0dG9uV2lkdGgnKTsKK3Nob3VsZEJlKCdu
dW1iZXIuc2l6ZScsICcxMDAnKTsKK251bWJlci5zaXplID0gbnVsbDsKK2RlYnVnKCcnKTsKKwor
ZnVuY3Rpb24gbnVtYmVyV2lkdGgobWluLCBtYXgsIHN0ZXAsIGNsYXNzTmFtZSkgeworICAgIG51
bWJlci5zdGVwID0gc3RlcDsKKyAgICBudW1iZXIubWluID0gbWluOworICAgIG51bWJlci5tYXgg
PSBtYXg7CisgICAgbnVtYmVyLmNsYXNzTmFtZSA9IGNsYXNzTmFtZTsKKyAgICByZXR1cm4gbnVt
YmVyLm9mZnNldFdpZHRoOworfQorCitmdW5jdGlvbiB0ZXh0V2lkdGhQbHVzU3BpbkJ1dHRvbldp
ZHRoKHNpemUpIHsKKyAgICB0ZXh0LnNpemUgPSBzaXplOworICAgIHJldHVybiB0ZXh0Lm9mZnNl
dFdpZHRoICsgc3BpbkJ1dHRvbldpZHRoOworfQorCitkZWJ1ZygnSWYgbWluIG9yIG1heCBpcyBh
YnNlbnQsIHRoZSBudW1iZXIgaW5wdXQgaGFzIHRoZSBzYW1lIHdpZHRoIGFzIGlucHV0W3R5cGU9
dGV4dF0nKQorc2hvdWxkQmUoJ251bWJlcldpZHRoKDAsIG51bGwsIG51bGwpJywgJ3RleHRXaWR0
aFBsdXNTcGluQnV0dG9uV2lkdGgobnVsbCknKTsKK3Nob3VsZEJlKCdudW1iZXJXaWR0aChudWxs
LCAxMDAsIG51bGwpJywgJ3RleHRXaWR0aFBsdXNTcGluQnV0dG9uV2lkdGgobnVsbCknKTsKK3No
b3VsZEJlKCdudW1iZXJXaWR0aChudWxsLCBudWxsLCAxMDApJywgJ3RleHRXaWR0aFBsdXNTcGlu
QnV0dG9uV2lkdGgobnVsbCknKTsKK2RlYnVnKCcnKTsKKworZGVidWcoJ0lmIHN0ZXAgaXMgYW55
LCB0aGUgaW5wdXRbdHlwZT10ZXh0XSBoYXMgdGhlIHNhbWUgd2lkdGggYXMgaW5wdXRbdHlwZT10
ZXh0XScpCitzaG91bGRCZSgnbnVtYmVyV2lkdGgoMCwgMSwgImFueSIpJywgJ3RleHRXaWR0aFBs
dXNTcGluQnV0dG9uV2lkdGgobnVsbCknKTsKK3Nob3VsZEJlKCdudW1iZXJXaWR0aCgwLCAxMCwg
ImFueSIpJywgJ3RleHRXaWR0aFBsdXNTcGluQnV0dG9uV2lkdGgobnVsbCknKTsKK3Nob3VsZEJl
KCdudW1iZXJXaWR0aCgwLCAxLjEsICJhbnkiKScsICd0ZXh0V2lkdGhQbHVzU3BpbkJ1dHRvbldp
ZHRoKG51bGwpJyk7CitkZWJ1ZygnJyk7CisKK2RlYnVnKCdUaGUgY2FzZSB0aGUgaW5uZXIgc3Bp
biBidXR0b24gaGFzIGJvcmRlciBvciBwYWRkaW5nLicpOwordmFyIGJvcmRlcldpZHRoID0gMjA7
Cit2YXIgcGFkZGluZ1dpZHRoID0gMTY7CitzaG91bGRCZSgnbnVtYmVyV2lkdGgoMCwgMTAsIDEs
ICJ3aXRoLWJvcmRlciIpJywgJ3RleHRXaWR0aFBsdXNTcGluQnV0dG9uV2lkdGgoMikgKyBib3Jk
ZXJXaWR0aCcpOworc2hvdWxkQmUoJ251bWJlcldpZHRoKDAsIDEwLCAxLCAid2l0aC1wYWRkaW5n
IiknLCAndGV4dFdpZHRoUGx1c1NwaW5CdXR0b25XaWR0aCgyKSArIHBhZGRpbmdXaWR0aCcpOwor
c2hvdWxkQmUoJ251bWJlcldpZHRoKDAsIDEwLCAxLCAid2l0aC1tYXJnaW4iKScsICd0ZXh0V2lk
dGhQbHVzU3BpbkJ1dHRvbldpZHRoKDIpJyk7CitzaG91bGRCZSgnbnVtYmVyV2lkdGgoMCwgMTAs
IDEsICJ3aXRoLWJvcmRlciB3aXRoLXBhZGRpbmciKScsICd0ZXh0V2lkdGhQbHVzU3BpbkJ1dHRv
bldpZHRoKDIpICsgYm9yZGVyV2lkdGggKyBwYWRkaW5nV2lkdGgnKTsKK2RlYnVnKCcnKTsKKwor
ZGVidWcoJ1RoZSBkZWZhdWx0IHN0ZXAgZG9lcyBub3QgbmVlZCB0byBiZSBjb25zaWRlcmVkLicp
CitzaG91bGRCZSgnbnVtYmVyV2lkdGgoMCwgMSwgbnVsbCknLCAndGV4dFdpZHRoUGx1c1NwaW5C
dXR0b25XaWR0aCgxKScpOworc2hvdWxkQmUoJ251bWJlcldpZHRoKDAsIDEwMCwgbnVsbCknLCAn
dGV4dFdpZHRoUGx1c1NwaW5CdXR0b25XaWR0aCgzKScpOworc2hvdWxkQmUoJ251bWJlcldpZHRo
KC0xMDAsIDEsIG51bGwpJywgJ3RleHRXaWR0aFBsdXNTcGluQnV0dG9uV2lkdGgoNCknKTsKK3No
b3VsZEJlKCdudW1iZXJXaWR0aCgwLjAsIDEuMCwgbnVsbCknLCAndGV4dFdpZHRoUGx1c1NwaW5C
dXR0b25XaWR0aCgxKScpOworc2hvdWxkQmUoJ251bWJlcldpZHRoKDAuNSwgMS41LCBudWxsKScs
ICd0ZXh0V2lkdGhQbHVzU3BpbkJ1dHRvbldpZHRoKDMpJyk7CitzaG91bGRCZSgnbnVtYmVyV2lk
dGgoLTAuNSwgMS41LCBudWxsKScsICd0ZXh0V2lkdGhQbHVzU3BpbkJ1dHRvbldpZHRoKDQpJyk7
CitzaG91bGRCZSgnbnVtYmVyV2lkdGgoMWUrMTAsIDFlKzEwICsgMSwgbnVsbCknLCAndGV4dFdp
ZHRoUGx1c1NwaW5CdXR0b25XaWR0aCgxMSknKTsKK3Nob3VsZEJlKCdudW1iZXJXaWR0aCgtMWUr
MTAsIDFlKzEwICsgMSwgbnVsbCknLCAndGV4dFdpZHRoUGx1c1NwaW5CdXR0b25XaWR0aCgxMikn
KTsKK2RlYnVnKCcnKTsKKworZGVidWcoJ0NoZWNrIHRoZSB3aWR0aCBvZiBhIG51bWJlciBpbnB1
dCB3aGVuIG1pbi9tYXgvc3RlcCBpcyBjaGFuZ2VkIHZhcmlvdXNseScpCitzaG91bGRCZSgnbnVt
YmVyV2lkdGgoMCwgMSwgMSknLCAndGV4dFdpZHRoUGx1c1NwaW5CdXR0b25XaWR0aCgxKScpOwor
c2hvdWxkQmUoJ251bWJlcldpZHRoKDAsIDEwLCAxKScsICd0ZXh0V2lkdGhQbHVzU3BpbkJ1dHRv
bldpZHRoKDIpJyk7CitzaG91bGRCZSgnbnVtYmVyV2lkdGgoMCwgMTAwLCAxKScsICd0ZXh0V2lk
dGhQbHVzU3BpbkJ1dHRvbldpZHRoKDMpJyk7CitzaG91bGRCZSgnbnVtYmVyV2lkdGgoMCwgMTAw
MCwgMSknLCAndGV4dFdpZHRoUGx1c1NwaW5CdXR0b25XaWR0aCg0KScpOworc2hvdWxkQmUoJ251
bWJlcldpZHRoKDAsIDEwMDAwLCAxKScsICd0ZXh0V2lkdGhQbHVzU3BpbkJ1dHRvbldpZHRoKDUp
Jyk7CitzaG91bGRCZSgnbnVtYmVyV2lkdGgoMCwgMTAwMDAwLCAxKScsICd0ZXh0V2lkdGhQbHVz
U3BpbkJ1dHRvbldpZHRoKDYpJyk7CitzaG91bGRCZSgnbnVtYmVyV2lkdGgoMCwgMTAwMDAwMCwg
MSknLCAndGV4dFdpZHRoUGx1c1NwaW5CdXR0b25XaWR0aCg3KScpOworc2hvdWxkQmUoJ251bWJl
cldpZHRoKDAsIDEwMDAwMDAwLCAxKScsICd0ZXh0V2lkdGhQbHVzU3BpbkJ1dHRvbldpZHRoKDgp
Jyk7CitzaG91bGRCZSgnbnVtYmVyV2lkdGgoMCwgMTAwMDAwMDAwLCAxKScsICd0ZXh0V2lkdGhQ
bHVzU3BpbkJ1dHRvbldpZHRoKDkpJyk7CitzaG91bGRCZSgnbnVtYmVyV2lkdGgoMCwgMTAwMDAw
MDAwMCwgMSknLCAndGV4dFdpZHRoUGx1c1NwaW5CdXR0b25XaWR0aCgxMCknKTsKKworc2hvdWxk
QmUoJ251bWJlcldpZHRoKC0xLCAwLCAxKScsICd0ZXh0V2lkdGhQbHVzU3BpbkJ1dHRvbldpZHRo
KDIpJyk7CitzaG91bGRCZSgnbnVtYmVyV2lkdGgoLTEwLCAwLCAxKScsICd0ZXh0V2lkdGhQbHVz
U3BpbkJ1dHRvbldpZHRoKDMpJyk7CitzaG91bGRCZSgnbnVtYmVyV2lkdGgoLTEwMCwgMCwgMSkn
LCAndGV4dFdpZHRoUGx1c1NwaW5CdXR0b25XaWR0aCg0KScpOworc2hvdWxkQmUoJ251bWJlcldp
ZHRoKC0xMDAwLCAwLCAxKScsICd0ZXh0V2lkdGhQbHVzU3BpbkJ1dHRvbldpZHRoKDUpJyk7Citz
aG91bGRCZSgnbnVtYmVyV2lkdGgoLTEwMDAwLCAwLCAxKScsICd0ZXh0V2lkdGhQbHVzU3BpbkJ1
dHRvbldpZHRoKDYpJyk7CitzaG91bGRCZSgnbnVtYmVyV2lkdGgoLTEwMDAwMCwgMCwgMSknLCAn
dGV4dFdpZHRoUGx1c1NwaW5CdXR0b25XaWR0aCg3KScpOworc2hvdWxkQmUoJ251bWJlcldpZHRo
KC0xMDAwMDAwLCAwLCAxKScsICd0ZXh0V2lkdGhQbHVzU3BpbkJ1dHRvbldpZHRoKDgpJyk7Citz
aG91bGRCZSgnbnVtYmVyV2lkdGgoLTEwMDAwMDAwLCAwLCAxKScsICd0ZXh0V2lkdGhQbHVzU3Bp
bkJ1dHRvbldpZHRoKDkpJyk7CitzaG91bGRCZSgnbnVtYmVyV2lkdGgoLTEwMDAwMDAwMCwgMCwg
MSknLCAndGV4dFdpZHRoUGx1c1NwaW5CdXR0b25XaWR0aCgxMCknKTsKK3Nob3VsZEJlKCdudW1i
ZXJXaWR0aCgtMTAwMDAwMDAwMCwgMCwgMSknLCAndGV4dFdpZHRoUGx1c1NwaW5CdXR0b25XaWR0
aCgxMSknKTsKKworc2hvdWxkQmUoJ251bWJlcldpZHRoKDAsIDEsIDAuNSknLCAndGV4dFdpZHRo
UGx1c1NwaW5CdXR0b25XaWR0aCgzKScpOworc2hvdWxkQmUoJ251bWJlcldpZHRoKDAsIDEsIDAu
MDUpJywgJ3RleHRXaWR0aFBsdXNTcGluQnV0dG9uV2lkdGgoNCknKTsKK3Nob3VsZEJlKCdudW1i
ZXJXaWR0aCgwLCAxLCAwLjAwNSknLCAndGV4dFdpZHRoUGx1c1NwaW5CdXR0b25XaWR0aCg1KScp
Oworc2hvdWxkQmUoJ251bWJlcldpZHRoKDAsIDEsIDAuMDAwNSknLCAndGV4dFdpZHRoUGx1c1Nw
aW5CdXR0b25XaWR0aCg2KScpOworc2hvdWxkQmUoJ251bWJlcldpZHRoKDAsIDEsIDAuMDAwMDUp
JywgJ3RleHRXaWR0aFBsdXNTcGluQnV0dG9uV2lkdGgoNyknKTsKK3Nob3VsZEJlKCdudW1iZXJX
aWR0aCgwLCAxLCAwLjAwMDAwNSknLCAndGV4dFdpZHRoUGx1c1NwaW5CdXR0b25XaWR0aCg4KScp
Oworc2hvdWxkQmUoJ251bWJlcldpZHRoKDAsIDEsIDAuMDAwMDAwNSknLCAndGV4dFdpZHRoUGx1
c1NwaW5CdXR0b25XaWR0aCg5KScpOworCitzaG91bGRCZSgnbnVtYmVyV2lkdGgoMC41LCAxLCAx
KScsICd0ZXh0V2lkdGhQbHVzU3BpbkJ1dHRvbldpZHRoKDMpJyk7CitzaG91bGRCZSgnbnVtYmVy
V2lkdGgoMC4wNSwgMSwgMSknLCAndGV4dFdpZHRoUGx1c1NwaW5CdXR0b25XaWR0aCg0KScpOwor
c2hvdWxkQmUoJ251bWJlcldpZHRoKDAuMDA1LCAxLCAxKScsICd0ZXh0V2lkdGhQbHVzU3BpbkJ1
dHRvbldpZHRoKDUpJyk7CitzaG91bGRCZSgnbnVtYmVyV2lkdGgoMS41LCAyLCAxKScsICd0ZXh0
V2lkdGhQbHVzU3BpbkJ1dHRvbldpZHRoKDMpJyk7CitzaG91bGRCZSgnbnVtYmVyV2lkdGgoMS4w
NSwgMiwgMSknLCAndGV4dFdpZHRoUGx1c1NwaW5CdXR0b25XaWR0aCg0KScpOworc2hvdWxkQmUo
J251bWJlcldpZHRoKDEuMDA1LCAyLCAxKScsICd0ZXh0V2lkdGhQbHVzU3BpbkJ1dHRvbldpZHRo
KDUpJyk7CitkZWJ1ZygnJykKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3Nj
cmlwdD4KKworCis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1OGZkM2E0
YzBmYWUwMjk3NWMzZTI5MWM4YjdjYTMwODUzNTBlYTgxLi43MGZkMzVhZDkyYmFkMjc2NmVhZTcx
NzBkN2IwMmE5YjE0NWRkM2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTEgQEAKKzIwMTEtMDgt
MDEgIFNoaW55YSBLYXdhbmFrYSAgPHNoaW55YWtAZ29vZ2xlLmNvbT4KKworICAgICAgICBUaGUg
aW5wdXRbdHlwZT1udW1iZXJdIGVsZW1lbnQgc2hvdWxkIGJlIGFzIHdpZGUgYXMgbmVjZXNzYXJ5
IHRvIHNob3cgdGhlIHdpZGVzdCBwb3NzaWJsZSB2YWx1ZS4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYwNjczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIHNpemUgb2YgaW5wdXRbdHlwZT1udW1iZXJd
IGlzIGNhbGN1bGF0ZWQgZnJvbSBtaW4vbWF4L3N0ZXAgYXR0cmlidXRlcyB0byBzaG93IHRoZSB3
aWRlc3QgcG9zc2libGUgdmFsdWUuCisgICAgICAgIElmIG1pbiBvciBtYXggYXR0cmlidXRlIGlz
IGFic2VudCwgdGhlIGRlZmF1bHQgc2l6ZSBpcyB1c2VkLgorICAgICAgICBBbHNvLCBpZiBpdHMg
Y3NzIHdpZHRoIGlzIG5vdCBhdXRvLCB0aGUgd2lkdGggaXMgdXNlZCB3aXRoIHByaW9yaXR5Lgor
CisgICAgICAgIElmIG1pbi9tYXgvYXR0cmlidXRlIGlzIHNldCBkeW5hbWljYWxseSwgdGhlIHNp
emUgb2YgdGhlIGlucHV0W3R5cGU9bnVtYmVyXSB3aWxsIGJlIHJlY2FsY3VsYXRlZC4KKyAgICAg
ICAgSG93ZXZlciwgYmVjYXVzZSByZWNhbGN1cmF0aW5nIGlzIGJvdGhlcmluZyB3aGVuIGl0IGhh
cyBhIGZvY3VzLAorICAgICAgICByZWNhbGN1bGF0aW9uIGlzIG5vdCBiZSBwZXJmb3JtZWQgaW4g
dGhhdCBjYXNlLgorCisgICAgICAgIFRlc3Q6IGZhc3QvZm9ybXMvaW5wdXQtbnVtYmVyLXNpemUu
aHRtbAorCisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAg
ICAgQWRkZWQgc3RlcEF0dHJpYnV0ZUNoYW5nZWQgaGFuZGxlci4KKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxJbnB1dEVsZW1lbnQ6OnByZWZlcnJlZFNpemUpOgorICAgICAgICAgICBSZXR1cm5zIHRo
ZSBwcmVmZXJyZWQgc2l6ZSBvZiB0aGUgaW5wdXQuCisgICAgICAgICAgIFNhbWUgYXMgc2l6ZSBp
ZiBJbnB1dFR5cGU6OnNob3VsZFJlc3BlY3RTaXplQXR0cmlidXRlIHJldHVybnMgdHJ1ZS4KKyAg
ICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0lucHV0VHlw
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6Om1heE51bWJlck9mQ2hhcmFjdGVy
cyk6CisgICAgICAgICAgIFJldHVybnMgdGhlIHdpZGVzdCBjb250ZW50IGxlbmd0aC4KKyAgICAg
ICAgKFdlYkNvcmU6OklucHV0VHlwZTo6c3RlcEF0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAg
ICBXaWxsIGJlIGNhbGxlZCB3aGVuIHN0ZXAgYXR0cmlidXRlIGlzIGNoYW5nZWQuCisgICAgICAg
IChXZWJDb3JlOjpJbnB1dFR5cGU6OnNob3VsZFJlc3BlY3RTaXplQXR0cmlidXRlKToKKyAgICAg
ICAgICAgUmV0dXJucyB0cnVlIGlmIEhUTUxJbnB1dEVsZW1lbnQ6OnByZWZlcnJlZFNpemUgcmV0
dXJucyB0aGUgc2FtZSB2YWx1ZSBhcyBzaXplLgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBlLmg6
CisgICAgICAgICogaHRtbC9OdW1iZXJJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
bGVuZ3RoQmVmb3JlRGVjaW1hbFBvaW50KToKKyAgICAgICAgICAgQ2FsY3VsYXRlcyB0aGUgd2lk
dGggYmVmb3JlIHRoZSBkZWNpbWFsIHBvaW50LgorICAgICAgICAoV2ViQ29yZTo6TnVtYmVySW5w
dXRUeXBlOjptYXhOdW1iZXJPZkNoYXJhY3RlcnMpOgorICAgICAgICAgICBSZXR1cm5zIHRoZSB3
aWRlc3QgY29udGVudCBsZW5ndGguCisgICAgICAgIChXZWJDb3JlOjpOdW1iZXJJbnB1dFR5cGU6
OnNob3VsZFJlc3BlY3RTaXplQXR0cmlidXRlKToKKyAgICAgICAgICAgUmV0dXJucyBmYWxzZSB0
byBjYWxjdWxhdGUgc2l6ZS4KKyAgICAgICAgKFdlYkNvcmU6Ok51bWJlcklucHV0VHlwZTo6bWlu
T3JNYXhBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgICAgTWFrZXMgdGhlIHByZWZlcnJlZCB3
aWR0aCBkaXJ0eS4KKyAgICAgICAgKFdlYkNvcmU6Ok51bWJlcklucHV0VHlwZTo6c3RlcEF0dHJp
YnV0ZUNoYW5nZWQpOiBEaXR0by4KKyAgICAgICAgKiBodG1sL051bWJlcklucHV0VHlwZS5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpwcmVmZXJyZWRDb250
ZW50V2lkdGgpOgorICAgICAgICAgICBVc2VzIHByZWZlcnJlZFNpemUgaW5zdGVhZCBvZiBzaXpl
LgorICAgICAgICAgICBBbHNvLCBhZGRzIGlubmVyU3BpbkJ1dHRvbkVsZW1lbnQgc2l6ZSB0byB3
aWR0aC4KKwogMjAxMS0wOC0wMyAgTm8nYW0gUm9zZW50aGFsICA8bm9hbS5yb3NlbnRoYWxAbm9r
aWEuY29tPgogCiAgICAgICAgIFtRdF1bVGV4bWFwXVtSRUdSRVNTSU9OXSBodHRwOi8vd2Via2l0
Lm9yZy9ibG9nLWZpbGVzL3RyYW5zZm9ybS1zdHlsZS5odG1sIGRvZXNuJ3Qgc2hvdyBjb21wb3Np
dGVkIGNvbnRlbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4
IGFkNDk0MjNlMDhhZTA2MDUyYjRmNzBlNDExODg1NGQxMjgxYjJmMzIuLmQ5N2VhZDRmMmUzMjg0
NjBjZjgyNjc2ZWM5ODNhYWU1NDBkYmNlMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5w
dXRFbGVtZW50LmNwcApAQCAtNTAsNiArNTAsNyBAQAogI2luY2x1ZGUgIktleWJvYXJkRXZlbnQu
aCIKICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAjaW5jbHVkZSAiTW91c2VFdmVudC5o
IgorI2luY2x1ZGUgIk51bWJlcklucHV0VHlwZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNs
dWRlICJQbGF0Zm9ybU1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJSZW5kZXJUZXh0Q29udHJvbFNp
bmdsZUxpbmUuaCIKQEAgLTgwMSw3ICs4MDIsMTAgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50Ojpw
YXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiAgICAgfSBlbHNlIGlmIChhdHRy
LT5uYW1lKCkgPT0gbXVsdGlwbGVBdHRyKSB7CiAgICAgICAgIG1faW5wdXRUeXBlLT5tdWx0aXBs
ZUF0dHJpYnV0ZUNoYW5nZWQoKTsKICAgICAgICAgc2V0TmVlZHNWYWxpZGl0eUNoZWNrKCk7Ci0g
ICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gcGF0dGVybkF0dHIgfHwgYXR0ci0+bmFtZSgp
ID09IHByZWNpc2lvbkF0dHIgfHwgYXR0ci0+bmFtZSgpID09IHN0ZXBBdHRyKQorICAgIH0gZWxz
ZSBpZiAoYXR0ci0+bmFtZSgpID09IHN0ZXBBdHRyKSB7CisgICAgICAgIG1faW5wdXRUeXBlLT5z
dGVwQXR0cmlidXRlQ2hhbmdlZCgpOworICAgICAgICBzZXROZWVkc1ZhbGlkaXR5Q2hlY2soKTsK
KyAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBwYXR0ZXJuQXR0ciB8fCBhdHRyLT5uYW1l
KCkgPT0gcHJlY2lzaW9uQXR0cikKICAgICAgICAgc2V0TmVlZHNWYWxpZGl0eUNoZWNrKCk7CiAg
ICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGRpc2FibGVkQXR0cikgewogICAgICAgICBtX2lu
cHV0VHlwZS0+ZGlzYWJsZWRBdHRyaWJ1dGVDaGFuZ2VkKCk7CkBAIC05OTEsNiArOTk1LDExIEBA
IGludCBIVE1MSW5wdXRFbGVtZW50OjpzaXplKCkgY29uc3QKICAgICByZXR1cm4gbV9zaXplOwog
fQogCitpbnQgSFRNTElucHV0RWxlbWVudDo6cHJlZmVycmVkU2l6ZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1faW5wdXRUeXBlLT5wcmVmZXJyZWRTaXplKGRlZmF1bHRTaXplKTsKK30KKwogdm9p
ZCBIVE1MSW5wdXRFbGVtZW50Ojpjb3B5Tm9uQXR0cmlidXRlUHJvcGVydGllcyhjb25zdCBFbGVt
ZW50KiBzb3VyY2UpCiB7CiAgICAgY29uc3QgSFRNTElucHV0RWxlbWVudCogc291cmNlRWxlbWVu
dCA9IHN0YXRpY19jYXN0PGNvbnN0IEhUTUxJbnB1dEVsZW1lbnQqPihzb3VyY2UpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAppbmRleCA5MmZhOWY1ODU3YTczYTkxMTUwYTU1
ODg4ZTg0NTkyZDM0MzFmY2VlLi5jNzExMDg2NjY5MjhkNWE2MGVjZjhiZmZkNzdhYWQyOGUxOTk5
OGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaApAQCAtMTMxLDYgKzEz
MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNJbmRldGVybWluYXRlKCkgY29uc3Qg
eyByZXR1cm4gaW5kZXRlcm1pbmF0ZSgpOyB9CiAKICAgICBpbnQgc2l6ZSgpIGNvbnN0OworICAg
IGludCBwcmVmZXJyZWRTaXplKCkgY29uc3Q7CiAKICAgICB2b2lkIHNldFR5cGUoY29uc3QgU3Ry
aW5nJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAppbmRleCA2MDkyNDYwYTAwNzhmZTI1
MzBkZTY0MTdjODdhMTQwMGY5NGVmZTUwLi4wMTM1MGM5MjNiOGQyN2M2MTMwNjI4OGNlODc5N2Vk
ODM5MWVhNTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCkBAIC0yNDksNiArMjQ5LDEx
IEBAIGRvdWJsZSBJbnB1dFR5cGU6Om1heGltdW0oKSBjb25zdAogICAgIHJldHVybiAwOwogfQog
CitpbnQgSW5wdXRUeXBlOjpwcmVmZXJyZWRTaXplKGludCBkZWZhdWx0U2l6ZSkgY29uc3QKK3sK
KyAgICByZXR1cm4gZWxlbWVudCgpLT5zaXplKCk7Cit9CisKIGJvb2wgSW5wdXRUeXBlOjpzdGVw
TWlzbWF0Y2goY29uc3QgU3RyaW5nJiwgZG91YmxlKSBjb25zdAogewogICAgIC8vIE5vbi1zdXBw
b3J0ZWQgdHlwZXMgc2hvdWxkIGJlIHJlamVjdGVkIGJ5IEhUTUxJbnB1dEVsZW1lbnQ6OmdldEFs
bG93ZWRWYWx1ZVN0ZXAoKS4KQEAgLTQ1Myw2ICs0NTgsMTAgQEAgdm9pZCBJbnB1dFR5cGU6Om1p
bk9yTWF4QXR0cmlidXRlQ2hhbmdlZCgpCiB7CiB9CiAKK3ZvaWQgSW5wdXRUeXBlOjpzdGVwQXR0
cmlidXRlQ2hhbmdlZCgpCit7Cit9CisKIGJvb2wgSW5wdXRUeXBlOjpjYW5CZVN1Y2Nlc3NmdWxT
dWJtaXRCdXR0b24oKQogewogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5o
CmluZGV4IDJkZjBlZjViOGY5NTg4ZDMyYWU3MmZiNjMyYzIyNGI3YmNiZjQ2NDEuLmI4ZDcwMmI4
MDk3YzlhMDQxODRlMjM4MjgxYWExYWI0YWJmZmUxMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUu
aApAQCAtMTQzLDYgKzE0Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGRvdWJsZSBkZWZhdWx0
VmFsdWVGb3JTdGVwVXAoKSBjb25zdDsKICAgICB2aXJ0dWFsIGRvdWJsZSBtaW5pbXVtKCkgY29u
c3Q7CiAgICAgdmlydHVhbCBkb3VibGUgbWF4aW11bSgpIGNvbnN0OworICAgIHZpcnR1YWwgaW50
IHByZWZlcnJlZFNpemUoaW50IGRlZmF1bHRTaXplKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wg
c3RlcE1pc21hdGNoKGNvbnN0IFN0cmluZyYsIGRvdWJsZSBzdGVwKSBjb25zdDsKICAgICB2aXJ0
dWFsIGRvdWJsZSBzdGVwQmFzZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgZG91YmxlIHN0ZXBCYXNl
V2l0aERlY2ltYWxQbGFjZXModW5zaWduZWQqKSBjb25zdDsKQEAgLTIwNiw2ICsyMDcsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFy
ZW5hKiwgUmVuZGVyU3R5bGUqKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7CiAg
ICAgdmlydHVhbCB2b2lkIG1pbk9yTWF4QXR0cmlidXRlQ2hhbmdlZCgpOworICAgIHZpcnR1YWwg
dm9pZCBzdGVwQXR0cmlidXRlQ2hhbmdlZCgpOwogICAgIHZpcnR1YWwgdm9pZCBhbHRBdHRyaWJ1
dGVDaGFuZ2VkKCk7CiAgICAgdmlydHVhbCB2b2lkIHNyY0F0dHJpYnV0ZUNoYW5nZWQoKTsKICAg
ICB2aXJ0dWFsIHZvaWQgdmFsdWVDaGFuZ2VkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL051bWJlcklucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL051bWJlcklu
cHV0VHlwZS5jcHAKaW5kZXggYjgxZTNhNDU2MmU0NjVjMDU1ODllNWFkYTc1Mzg0YmE1NjQyMzg3
OC4uZjZlZjc5ZmQzYjgxYjY3OGMxMjY3NTY2Y2Y0NGYyZDRlOTEzMDZlYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9OdW1iZXJJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvTnVtYmVySW5wdXRUeXBlLmNwcApAQCAtNTMsNiArNTMsMjEgQEAgdXNpbmcgbmFt
ZXNwYWNlIHN0ZDsKIHN0YXRpYyBjb25zdCBkb3VibGUgbnVtYmVyRGVmYXVsdFN0ZXAgPSAxLjA7
CiBzdGF0aWMgY29uc3QgZG91YmxlIG51bWJlclN0ZXBTY2FsZUZhY3RvciA9IDEuMDsKIAorc3Rh
dGljIHVuc2lnbmVkIGxlbmd0aEJlZm9yZURlY2ltYWxQb2ludChkb3VibGUgdmFsdWUpCit7Cisg
ICAgLy8gSWYgdmFsdWUgaXMgbmVnYXRpdmUsICctJyBzaG91bGQgYmUgY291bnRlZC4KKworICAg
IGRvdWJsZSBhYnNvbHV0ZVZhbHVlID0gZmFicyh2YWx1ZSk7CisgICAgaWYgKGFic29sdXRlVmFs
dWUgPCAxKQorICAgICAgICByZXR1cm4gdmFsdWUgPCAwID8gMiA6IDE7CisKKyAgICB1bnNpZ25l
ZCBsZW5ndGggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obG9nMTAoZmxvb3IoYWJzb2x1dGVWYWx1
ZSkpKSArIDE7CisgICAgaWYgKHZhbHVlIDwgMCkKKyAgICAgICAgbGVuZ3RoICs9IDE7CisKKyAg
ICByZXR1cm4gbGVuZ3RoOworfQorCiBQYXNzT3duUHRyPElucHV0VHlwZT4gTnVtYmVySW5wdXRU
eXBlOjpjcmVhdGUoSFRNTElucHV0RWxlbWVudCogZWxlbWVudCkKIHsKICAgICByZXR1cm4gYWRv
cHRQdHIobmV3IE51bWJlcklucHV0VHlwZShlbGVtZW50KSk7CkBAIC0xMjEsNiArMTM2LDUwIEBA
IGRvdWJsZSBOdW1iZXJJbnB1dFR5cGU6Om1heGltdW0oKSBjb25zdAogICAgIHJldHVybiBwYXJz
ZVRvRG91YmxlKGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShtYXhBdHRyKSwgbnVtZXJpY19s
aW1pdHM8ZmxvYXQ+OjptYXgoKSk7CiB9CiAKK2ludCBOdW1iZXJJbnB1dFR5cGU6OnByZWZlcnJl
ZFNpemUoaW50IGRlZmF1bHRTaXplKSBjb25zdAoreworICAgIHVuc2lnbmVkIG1pblZhbHVlRGVj
aW1hbFBsYWNlczsKKyAgICBkb3VibGUgbWluVmFsdWVEb3VibGU7CisgICAgU3RyaW5nIG1pblZh
bHVlID0gZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpOworICAgIGlmICghcGFy
c2VUb0RvdWJsZUZvck51bWJlclR5cGVXaXRoRGVjaW1hbFBsYWNlcyhtaW5WYWx1ZSwgJm1pblZh
bHVlRG91YmxlLCAmbWluVmFsdWVEZWNpbWFsUGxhY2VzKSkKKyAgICAgICAgcmV0dXJuIGRlZmF1
bHRTaXplOworCisgICAgdW5zaWduZWQgbWF4VmFsdWVEZWNpbWFsUGxhY2VzOworICAgIGRvdWJs
ZSBtYXhWYWx1ZURvdWJsZTsKKyAgICBTdHJpbmcgbWF4VmFsdWUgPSBlbGVtZW50KCktPmZhc3RH
ZXRBdHRyaWJ1dGUobWF4QXR0cik7CisgICAgaWYgKCFwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlw
ZVdpdGhEZWNpbWFsUGxhY2VzKG1heFZhbHVlLCAmbWF4VmFsdWVEb3VibGUsICZtYXhWYWx1ZURl
Y2ltYWxQbGFjZXMpKQorICAgICAgICByZXR1cm4gZGVmYXVsdFNpemU7CisKKyAgICBpZiAobWF4
VmFsdWVEb3VibGUgPCBtaW5WYWx1ZURvdWJsZSkgeworICAgICAgICBtYXhWYWx1ZURvdWJsZSA9
IG1pblZhbHVlRG91YmxlOworICAgICAgICBtYXhWYWx1ZURlY2ltYWxQbGFjZXMgPSBtYXhWYWx1
ZURlY2ltYWxQbGFjZXM7CisgICAgfQorCisgICAgdW5zaWduZWQgc3RlcFZhbHVlRGVjaW1hbFBs
YWNlczsKKyAgICBkb3VibGUgc3RlcFZhbHVlRG91YmxlOworICAgIFN0cmluZyBzdGVwVmFsdWUg
PSBlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUoc3RlcEF0dHIpOworICAgIGlmIChlcXVhbEln
bm9yaW5nQ2FzZShzdGVwVmFsdWUsICJhbnkiKSkKKyAgICAgICAgcmV0dXJuIGRlZmF1bHRTaXpl
OworICAgIGlmICghcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGVXaXRoRGVjaW1hbFBsYWNlcyhz
dGVwVmFsdWUsICZzdGVwVmFsdWVEb3VibGUsICZzdGVwVmFsdWVEZWNpbWFsUGxhY2VzKSkgewor
ICAgICAgICBzdGVwVmFsdWVEb3VibGUgPSAxOworICAgICAgICBzdGVwVmFsdWVEZWNpbWFsUGxh
Y2VzID0gMDsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBsZW5ndGggPSBsZW5ndGhCZWZvcmVEZWNp
bWFsUG9pbnQobWluVmFsdWVEb3VibGUpOworICAgIGxlbmd0aCA9IG1heChsZW5ndGgsIGxlbmd0
aEJlZm9yZURlY2ltYWxQb2ludChtYXhWYWx1ZURvdWJsZSkpOworICAgIGxlbmd0aCA9IG1heChs
ZW5ndGgsIGxlbmd0aEJlZm9yZURlY2ltYWxQb2ludChzdGVwVmFsdWVEb3VibGUpKTsKKworICAg
IHVuc2lnbmVkIGxlbmd0aEFmdGVyRGVjaW1hbFBvaW50ID0gbWluVmFsdWVEZWNpbWFsUGxhY2Vz
OworICAgIGxlbmd0aEFmdGVyRGVjaW1hbFBvaW50ID0gbWF4KGxlbmd0aEFmdGVyRGVjaW1hbFBv
aW50LCBtYXhWYWx1ZURlY2ltYWxQbGFjZXMpOworICAgIGxlbmd0aEFmdGVyRGVjaW1hbFBvaW50
ID0gbWF4KGxlbmd0aEFmdGVyRGVjaW1hbFBvaW50LCBzdGVwVmFsdWVEZWNpbWFsUGxhY2VzKTsK
KworICAgIC8vICcuJyBzaG91bGQgYmUgY291bnRlZCBpZiB0aGUgdmFsdWUgaGFzIGRlY2ltYWwg
cGxhY2VzLgorICAgIGlmIChsZW5ndGhBZnRlckRlY2ltYWxQb2ludCA+IDApCisgICAgICAgIGxl
bmd0aCArPSBsZW5ndGhBZnRlckRlY2ltYWxQb2ludCArIDE7CisKKyAgICByZXR1cm4gbGVuZ3Ro
OworfQorCiBib29sIE51bWJlcklucHV0VHlwZTo6aXNTdGVwcGFibGUoKSBjb25zdAogewogICAg
IHJldHVybiB0cnVlOwpAQCAtMjc0LDQgKzMzMywyMCBAQCBib29sIE51bWJlcklucHV0VHlwZTo6
aXNOdW1iZXJGaWVsZCgpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQgTnVtYmVy
SW5wdXRUeXBlOjptaW5Pck1heEF0dHJpYnV0ZUNoYW5nZWQoKQoreworICAgIElucHV0VHlwZTo6
bWluT3JNYXhBdHRyaWJ1dGVDaGFuZ2VkKCk7CisKKyAgICBpZiAoZWxlbWVudCgpLT5yZW5kZXJl
cigpKQorICAgICAgICBlbGVtZW50KCktPnJlbmRlcmVyKCktPnNldFByZWZlcnJlZExvZ2ljYWxX
aWR0aHNEaXJ0eSh0cnVlKTsKK30KKwordm9pZCBOdW1iZXJJbnB1dFR5cGU6OnN0ZXBBdHRyaWJ1
dGVDaGFuZ2VkKCkKK3sKKyAgICBJbnB1dFR5cGU6OnN0ZXBBdHRyaWJ1dGVDaGFuZ2VkKCk7CisK
KyAgICBpZiAoZWxlbWVudCgpLT5yZW5kZXJlcigpKQorICAgICAgICBlbGVtZW50KCktPnJlbmRl
cmVyKCktPnNldFByZWZlcnJlZExvZ2ljYWxXaWR0aHNEaXJ0eSh0cnVlKTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9OdW1iZXJJ
bnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTnVtYmVySW5wdXRUeXBlLmgKaW5kZXgg
NTRlYWE2NmI0NDVhZTEyMDdiNTljNDg2ODVhMTNjZmQ1ZWUwZGYxNi4uZGI0NjdiYTY1MGQxYWVi
YjRiZDY4N2YyNWI4NmRmMjUzYzJlZTIzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9OdW1iZXJJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL051bWJlcklucHV0
VHlwZS5oCkBAIC01MSw2ICs1MSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIHN1cHBv
cnRzUmFuZ2VMaW1pdGF0aW9uKCkgY29uc3Q7CiAgICAgdmlydHVhbCBkb3VibGUgbWluaW11bSgp
IGNvbnN0OwogICAgIHZpcnR1YWwgZG91YmxlIG1heGltdW0oKSBjb25zdDsKKyAgICB2aXJ0dWFs
IGludCBwcmVmZXJyZWRTaXplKGludCBkZWZhdWx0U2l6ZSkgY29uc3Q7CiAgICAgdmlydHVhbCBi
b29sIGlzU3RlcHBhYmxlKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHN0ZXBNaXNtYXRjaChj
b25zdCBTdHJpbmcmLCBkb3VibGUpIGNvbnN0OwogICAgIHZpcnR1YWwgZG91YmxlIHN0ZXBCYXNl
KCkgY29uc3Q7CkBAIC03Miw2ICs3Myw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIHNo
b3VsZFJlc3BlY3RTcGVlY2hBdHRyaWJ1dGUoKTsKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNQ
bGFjZWhvbGRlcigpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc051bWJlckZpZWxkKCkgY29u
c3Q7CisgICAgdmlydHVhbCB2b2lkIG1pbk9yTWF4QXR0cmlidXRlQ2hhbmdlZCgpOworICAgIHZp
cnR1YWwgdm9pZCBzdGVwQXR0cmlidXRlQ2hhbmdlZCgpOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRD
b250cm9sU2luZ2xlTGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4
dENvbnRyb2xTaW5nbGVMaW5lLmNwcAppbmRleCA1MmE1YWM4YWQxNWUwMzkwZTVjZmZkNDRiNDE3
NGM3YTE3ZTVkZWVmLi4xNTFkZmVkOGI4NTM2YmUyMmY3ZDAwNDYxMjBjN2QwY2U2NDk4MmRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5n
bGVMaW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRy
b2xTaW5nbGVMaW5lLmNwcApAQCAtMzg5LDEwICszODksMTAgQEAgZmxvYXQgUmVuZGVyVGV4dENv
bnRyb2xTaW5nbGVMaW5lOjpnZXRBdmdDaGFyV2lkdGgoQXRvbWljU3RyaW5nIGZhbWlseSkKIAog
ICAgIHJldHVybiBSZW5kZXJUZXh0Q29udHJvbDo6Z2V0QXZnQ2hhcldpZHRoKGZhbWlseSk7CiB9
Ci0gICAgCisKIGludCBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OnByZWZlcnJlZENvbnRl
bnRXaWR0aChmbG9hdCBjaGFyV2lkdGgpIGNvbnN0CiB7Ci0gICAgaW50IGZhY3RvciA9IGlucHV0
RWxlbWVudCgpLT5zaXplKCk7CisgICAgaW50IGZhY3RvciA9IGlucHV0RWxlbWVudCgpLT5wcmVm
ZXJyZWRTaXplKCk7CiAgICAgaWYgKGZhY3RvciA8PSAwKQogICAgICAgICBmYWN0b3IgPSAyMDsK
IApAQCAtNDIzLDYgKzQyMywxNSBAQCBpbnQgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpw
cmVmZXJyZWRDb250ZW50V2lkdGgoZmxvYXQgY2hhcldpZHRoKSBjb25zdAogICAgICAgICByZXN1
bHQgKz0gY2FuY2VsUmVuZGVyZXItPmJvcmRlckxlZnQoKSArIGNhbmNlbFJlbmRlcmVyLT5ib3Jk
ZXJSaWdodCgpICsKICAgICAgICAgICAgICAgICAgIGNhbmNlbFJlbmRlcmVyLT5wYWRkaW5nTGVm
dCgpICsgY2FuY2VsUmVuZGVyZXItPnBhZGRpbmdSaWdodCgpOwogCisgICAgSFRNTEVsZW1lbnQq
IHNwaW5CdXR0b24gPSBpbm5lclNwaW5CdXR0b25FbGVtZW50KCk7CisgICAgaWYgKFJlbmRlckJv
eCogc3BpblJlbmRlcmVyID0gc3BpbkJ1dHRvbiA/IHNwaW5CdXR0b24tPnJlbmRlckJveCgpIDog
MCkgeworICAgICAgICByZXN1bHQgKz0gc3BpblJlbmRlcmVyLT5ib3JkZXJMZWZ0KCkgKyBzcGlu
UmVuZGVyZXItPmJvcmRlclJpZ2h0KCkgKworICAgICAgICAgICAgICAgICAgc3BpblJlbmRlcmVy
LT5wYWRkaW5nTGVmdCgpICsgc3BpblJlbmRlcmVyLT5wYWRkaW5nUmlnaHQoKTsKKyAgICAgICAg
Ly8gU2luY2UgdGhlIHdpZHRoIG9mIHNwaW5SZW5kZXJlciBpcyBub3QgY2FsY3VsYXRlZCB5ZXQs
IHNwaW5SZW5kZXJlci0+d2lkdGgoKSByZXR1cm5zIDAuCisgICAgICAgIC8vIFNvIGNvbXB1dGVk
U3R5bGUoKS0+d2lkdGgoKSBpcyB1c2VkIGluc3RlYWQuCisgICAgICAgIHJlc3VsdCArPSBzcGlu
QnV0dG9uLT5jb21wdXRlZFN0eWxlKCktPndpZHRoKCkudmFsdWUoKTsKKyAgICB9CisKICNpZiBF
TkFCTEUoSU5QVVRfU1BFRUNIKQogICAgIEhUTUxFbGVtZW50KiBzcGVlY2hCdXR0b24gPSBzcGVl
Y2hCdXR0b25FbGVtZW50KCk7CiAgICAgaWYgKFJlbmRlckJveCogc3BlZWNoUmVuZGVyZXIgPSBz
cGVlY2hCdXR0b24gPyBzcGVlY2hCdXR0b24tPnJlbmRlckJveCgpIDogMCkgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103208</attachid>
            <date>2011-08-07 23:51:52 -0700</date>
            <delta_ts>2011-08-08 01:38:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-60673-20110808155151.patch</filename>
            <type>text/plain</type>
            <size>26151</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTI1NzUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3YWRlMDQyZDViNWM5NDM4Yzg4MGE1
ZDk5YmE2ODM0OTJiYzYxZjMwLi5mYWZjNjk1ZTcyZmEzYjQwNDI5NmZiYTM0MTc2MzFhMTk0MGVm
N2I4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDgtMDcgIFNoaW55YSBLYXdhbmFrYSAg
PHNoaW55YWtAZ29vZ2xlLmNvbT4KKworICAgICAgICBBZGRlZCB0aGUgdGVzdCB0byBjaGVjayB0
aGUgd2lkdGggb2YgaW5wdXRbdHlwZT1udW1iZXJdLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjA2NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZm9ybXMvaW5wdXQtbnVtYmVyLXNpemUtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL2lucHV0LW51bWJlci1zaXpl
Lmh0bWw6IEFkZGVkLgorCiAyMDExLTA4LTA3ICBCYWxhenMgS2VsZW1lbiAgPGtiYWxhenNAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBbUXRdIHN2Zy96b29tL3BhZ2Uvem9vbS1zdmctdGhyb3VnaC0q
IHJlc3VsdHMgZGl2ZXJnaW5nIGJldHdlZW4gYm90cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy9pbnB1dC1udW1iZXItc2l6ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL2lucHV0LW51bWJlci1zaXplLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MGFi
YjIwNjg0Zjc3NDMzOGI1NTM4NTEyOThkM2IxYjBhMDZiMGIwCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1udW1iZXItc2l6ZS1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSw4NCBAQAorVGVzdCBmb3Igc2l6ZSBhdHRyaWJ1dGUgb2YgaW5wdXQKKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgc3BpbkJ1dHRvbldpZHRoIGlzID49IDEKK1Ro
ZSBjb250ZW50IGFyZWEgb2YgdGhlIG51bWJlciBpbnB1dCB3aXRob3V0IG1pbi9tYXgvc3RlcCBh
dHRyaWJ1dGUgc2hvdWxkIGhhdmUgdGhlIHNhbWUgd2lkdGggYXMgdGV4dCBpbnB1dAorUEFTUyBu
dW1iZXIub2Zmc2V0V2lkdGggaXMgdGV4dC5vZmZzZXRXaWR0aAorCitUaGUgbnVtYmVyIHdob3Nl
IHdpZHRoIGlzIHNwZWNpZmllZCBzaG91bGQgcmVzcGVjdCB0aGUgc2V0dGluZworUEFTUyBudW1i
ZXJXaXRoV2lkdGgub2Zmc2V0V2lkdGggaXMgMTAwCitQQVNTIG51bWJlcldpdGhXaWR0aC5taW4g
PSAwOyBudW1iZXJXaXRoV2lkdGgubWF4ID0gMTAwOyBudW1iZXJXaXRoV2lkdGgub2Zmc2V0V2lk
dGggaXMgMTAwCisKK1RoZSBudW1iZXIgaW5wdXQgc2hvdWxkIGlnbm9yZSBzaXplIGF0dHJpYnV0
ZSBmb3IgbGF5b3V0CitQQVNTIG51bWJlci5zaXplID0gMTA7IG51bWJlci5vZmZzZXRXaWR0aCBp
cyB0ZXh0Lm9mZnNldFdpZHRoCitQQVNTIG51bWJlci5zaXplIGlzIDEwCitQQVNTIG51bWJlci5z
aXplID0gMTAwOyBudW1iZXIub2Zmc2V0V2lkdGggaXMgdGV4dC5vZmZzZXRXaWR0aAorUEFTUyBu
dW1iZXIuc2l6ZSBpcyAxMDAKKworSWYgbWluIG9yIG1heCBpcyBhYnNlbnQsIHRoZSBudW1iZXIg
aW5wdXQgaGFzIHRoZSBzYW1lIHdpZHRoIGFzIGlucHV0W3R5cGU9dGV4dF0KK1BBU1MgbnVtYmVy
V2lkdGgoMCwgbnVsbCwgbnVsbCkgaXMgdGV4dC5vZmZzZXRXaWR0aAorUEFTUyBudW1iZXJXaWR0
aChudWxsLCAxMDAsIG51bGwpIGlzIHRleHQub2Zmc2V0V2lkdGgKK1BBU1MgbnVtYmVyV2lkdGgo
bnVsbCwgbnVsbCwgMTAwKSBpcyB0ZXh0Lm9mZnNldFdpZHRoCisKK0lmIHN0ZXAgaXMgYW55LCB0
aGUgaW5wdXRbdHlwZT10ZXh0XSBoYXMgdGhlIHNhbWUgd2lkdGggYXMgaW5wdXRbdHlwZT10ZXh0
XQorUEFTUyBudW1iZXJXaWR0aCgwLCAxLCAiYW55IikgaXMgdGV4dC5vZmZzZXRXaWR0aAorUEFT
UyBudW1iZXJXaWR0aCgwLCAxMCwgImFueSIpIGlzIHRleHQub2Zmc2V0V2lkdGgKK1BBU1MgbnVt
YmVyV2lkdGgoMCwgMS4xLCAiYW55IikgaXMgdGV4dC5vZmZzZXRXaWR0aAorCitUaGUgY2FzZSB0
aGUgaW5uZXIgc3BpbiBidXR0b24gaGFzIGJvcmRlciBvciBwYWRkaW5nLgorUEFTUyBudW1iZXJX
aWR0aCgwLCAxMCwgMSwgIndpdGgtYm9yZGVyIikgaXMgdGV4dFdpZHRoUGx1c1NwaW5CdXR0b25X
aWR0aCgyKSArIGJvcmRlcldpZHRoCitQQVNTIG51bWJlcldpZHRoKDAsIDEwLCAxLCAid2l0aC1w
YWRkaW5nIikgaXMgdGV4dFdpZHRoUGx1c1NwaW5CdXR0b25XaWR0aCgyKSArIHBhZGRpbmdXaWR0
aAorUEFTUyBudW1iZXJXaWR0aCgwLCAxMCwgMSwgIndpdGgtbWFyZ2luIikgaXMgdGV4dFdpZHRo
UGx1c1NwaW5CdXR0b25XaWR0aCgyKQorUEFTUyBudW1iZXJXaWR0aCgwLCAxMCwgMSwgIndpdGgt
Ym9yZGVyIHdpdGgtcGFkZGluZyIpIGlzIHRleHRXaWR0aFBsdXNTcGluQnV0dG9uV2lkdGgoMikg
KyBib3JkZXJXaWR0aCArIHBhZGRpbmdXaWR0aAorCitUaGUgZGVmYXVsdCBzdGVwIGRvZXMgbm90
IG5lZWQgdG8gYmUgY29uc2lkZXJlZC4KK1BBU1MgbnVtYmVyV2lkdGgoMCwgMSwgbnVsbCkgaXMg
dGV4dFdpZHRoUGx1c1NwaW5CdXR0b25XaWR0aCgxKQorUEFTUyBudW1iZXJXaWR0aCgwLCAxMDAs
IG51bGwpIGlzIHRleHRXaWR0aFBsdXNTcGluQnV0dG9uV2lkdGgoMykKK1BBU1MgbnVtYmVyV2lk
dGgoLTEwMCwgMSwgbnVsbCkgaXMgdGV4dFdpZHRoUGx1c1NwaW5CdXR0b25XaWR0aCg0KQorUEFT
UyBudW1iZXJXaWR0aCgwLjAsIDEuMCwgbnVsbCkgaXMgdGV4dFdpZHRoUGx1c1NwaW5CdXR0b25X
aWR0aCgxKQorUEFTUyBudW1iZXJXaWR0aCgwLjUsIDEuNSwgbnVsbCkgaXMgdGV4dFdpZHRoUGx1
c1NwaW5CdXR0b25XaWR0aCgzKQorUEFTUyBudW1iZXJXaWR0aCgtMC41LCAxLjUsIG51bGwpIGlz
IHRleHRXaWR0aFBsdXNTcGluQnV0dG9uV2lkdGgoNCkKK1BBU1MgbnVtYmVyV2lkdGgoMWUrMTAs
IDFlKzEwICsgMSwgbnVsbCkgaXMgdGV4dFdpZHRoUGx1c1NwaW5CdXR0b25XaWR0aCgxMSkKK1BB
U1MgbnVtYmVyV2lkdGgoLTFlKzEwLCAxZSsxMCArIDEsIG51bGwpIGlzIHRleHRXaWR0aFBsdXNT
cGluQnV0dG9uV2lkdGgoMTIpCisKK0NoZWNrIHRoZSB3aWR0aCBvZiBhIG51bWJlciBpbnB1dCB3
aGVuIG1pbi9tYXgvc3RlcCBpcyBjaGFuZ2VkIHZhcmlvdXNseQorUEFTUyBudW1iZXJXaWR0aCgw
LCAxLCAxKSBpcyB0ZXh0V2lkdGhQbHVzU3BpbkJ1dHRvbldpZHRoKDEpCitQQVNTIG51bWJlcldp
ZHRoKDAsIDEwLCAxKSBpcyB0ZXh0V2lkdGhQbHVzU3BpbkJ1dHRvbldpZHRoKDIpCitQQVNTIG51
bWJlcldpZHRoKDAsIDEwMCwgMSkgaXMgdGV4dFdpZHRoUGx1c1NwaW5CdXR0b25XaWR0aCgzKQor
UEFTUyBudW1iZXJXaWR0aCgwLCAxMDAwLCAxKSBpcyB0ZXh0V2lkdGhQbHVzU3BpbkJ1dHRvbldp
ZHRoKDQpCitQQVNTIG51bWJlcldpZHRoKDAsIDEwMDAwLCAxKSBpcyB0ZXh0V2lkdGhQbHVzU3Bp
bkJ1dHRvbldpZHRoKDUpCitQQVNTIG51bWJlcldpZHRoKDAsIDEwMDAwMCwgMSkgaXMgdGV4dFdp
ZHRoUGx1c1NwaW5CdXR0b25XaWR0aCg2KQorUEFTUyBudW1iZXJXaWR0aCgwLCAxMDAwMDAwLCAx
KSBpcyB0ZXh0V2lkdGhQbHVzU3BpbkJ1dHRvbldpZHRoKDcpCitQQVNTIG51bWJlcldpZHRoKDAs
IDEwMDAwMDAwLCAxKSBpcyB0ZXh0V2lkdGhQbHVzU3BpbkJ1dHRvbldpZHRoKDgpCitQQVNTIG51
bWJlcldpZHRoKDAsIDEwMDAwMDAwMCwgMSkgaXMgdGV4dFdpZHRoUGx1c1NwaW5CdXR0b25XaWR0
aCg5KQorUEFTUyBudW1iZXJXaWR0aCgwLCAxMDAwMDAwMDAwLCAxKSBpcyB0ZXh0V2lkdGhQbHVz
U3BpbkJ1dHRvbldpZHRoKDEwKQorUEFTUyBudW1iZXJXaWR0aCgtMSwgMCwgMSkgaXMgdGV4dFdp
ZHRoUGx1c1NwaW5CdXR0b25XaWR0aCgyKQorUEFTUyBudW1iZXJXaWR0aCgtMTAsIDAsIDEpIGlz
IHRleHRXaWR0aFBsdXNTcGluQnV0dG9uV2lkdGgoMykKK1BBU1MgbnVtYmVyV2lkdGgoLTEwMCwg
MCwgMSkgaXMgdGV4dFdpZHRoUGx1c1NwaW5CdXR0b25XaWR0aCg0KQorUEFTUyBudW1iZXJXaWR0
aCgtMTAwMCwgMCwgMSkgaXMgdGV4dFdpZHRoUGx1c1NwaW5CdXR0b25XaWR0aCg1KQorUEFTUyBu
dW1iZXJXaWR0aCgtMTAwMDAsIDAsIDEpIGlzIHRleHRXaWR0aFBsdXNTcGluQnV0dG9uV2lkdGgo
NikKK1BBU1MgbnVtYmVyV2lkdGgoLTEwMDAwMCwgMCwgMSkgaXMgdGV4dFdpZHRoUGx1c1NwaW5C
dXR0b25XaWR0aCg3KQorUEFTUyBudW1iZXJXaWR0aCgtMTAwMDAwMCwgMCwgMSkgaXMgdGV4dFdp
ZHRoUGx1c1NwaW5CdXR0b25XaWR0aCg4KQorUEFTUyBudW1iZXJXaWR0aCgtMTAwMDAwMDAsIDAs
IDEpIGlzIHRleHRXaWR0aFBsdXNTcGluQnV0dG9uV2lkdGgoOSkKK1BBU1MgbnVtYmVyV2lkdGgo
LTEwMDAwMDAwMCwgMCwgMSkgaXMgdGV4dFdpZHRoUGx1c1NwaW5CdXR0b25XaWR0aCgxMCkKK1BB
U1MgbnVtYmVyV2lkdGgoLTEwMDAwMDAwMDAsIDAsIDEpIGlzIHRleHRXaWR0aFBsdXNTcGluQnV0
dG9uV2lkdGgoMTEpCitQQVNTIG51bWJlcldpZHRoKDAsIDEsIDAuNSkgaXMgdGV4dFdpZHRoUGx1
c1NwaW5CdXR0b25XaWR0aCgzKQorUEFTUyBudW1iZXJXaWR0aCgwLCAxLCAwLjA1KSBpcyB0ZXh0
V2lkdGhQbHVzU3BpbkJ1dHRvbldpZHRoKDQpCitQQVNTIG51bWJlcldpZHRoKDAsIDEsIDAuMDA1
KSBpcyB0ZXh0V2lkdGhQbHVzU3BpbkJ1dHRvbldpZHRoKDUpCitQQVNTIG51bWJlcldpZHRoKDAs
IDEsIDAuMDAwNSkgaXMgdGV4dFdpZHRoUGx1c1NwaW5CdXR0b25XaWR0aCg2KQorUEFTUyBudW1i
ZXJXaWR0aCgwLCAxLCAwLjAwMDA1KSBpcyB0ZXh0V2lkdGhQbHVzU3BpbkJ1dHRvbldpZHRoKDcp
CitQQVNTIG51bWJlcldpZHRoKDAsIDEsIDAuMDAwMDA1KSBpcyB0ZXh0V2lkdGhQbHVzU3BpbkJ1
dHRvbldpZHRoKDgpCitQQVNTIG51bWJlcldpZHRoKDAsIDEsIDAuMDAwMDAwNSkgaXMgdGV4dFdp
ZHRoUGx1c1NwaW5CdXR0b25XaWR0aCg5KQorUEFTUyBudW1iZXJXaWR0aCgwLjUsIDEsIDEpIGlz
IHRleHRXaWR0aFBsdXNTcGluQnV0dG9uV2lkdGgoMykKK1BBU1MgbnVtYmVyV2lkdGgoMC4wNSwg
MSwgMSkgaXMgdGV4dFdpZHRoUGx1c1NwaW5CdXR0b25XaWR0aCg0KQorUEFTUyBudW1iZXJXaWR0
aCgwLjAwNSwgMSwgMSkgaXMgdGV4dFdpZHRoUGx1c1NwaW5CdXR0b25XaWR0aCg1KQorUEFTUyBu
dW1iZXJXaWR0aCgxLjUsIDIsIDEpIGlzIHRleHRXaWR0aFBsdXNTcGluQnV0dG9uV2lkdGgoMykK
K1BBU1MgbnVtYmVyV2lkdGgoMS4wNSwgMiwgMSkgaXMgdGV4dFdpZHRoUGx1c1NwaW5CdXR0b25X
aWR0aCg0KQorUEFTUyBudW1iZXJXaWR0aCgxLjAwNSwgMiwgMSkgaXMgdGV4dFdpZHRoUGx1c1Nw
aW5CdXR0b25XaWR0aCg1KQorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1u
dW1iZXItc2l6ZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1udW1iZXItc2l6
ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjdiNTUyMDNiN2NmYTNhZDQ4MDJjZWFmYzYwMTkxMzFmYWZiNGZk
OTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lucHV0LW51bWJl
ci1zaXplLmh0bWwKQEAgLTAsMCArMSwxNjEgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8v
SUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c3R5bGU+CisKK2lucHV0LndpdGgtYm9yZGVyOjotd2Via2l0LWlubmVyLXNwaW4tYnV0
dG9uIHsKKyAgICAgYm9yZGVyOiAxMHB4IHNvbGlkOworfQoraW5wdXQud2l0aC1wYWRkaW5nOjot
d2Via2l0LWlubmVyLXNwaW4tYnV0dG9uIHsKKyAgICAgcGFkZGluZzogMCA4cHggMCA4cHg7Cit9
CitpbnB1dC53aXRoLW1hcmdpbjo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbiB7CisgICAgIG1h
cmdpbjogMCAxMHB4IDAgMTBweDsKK30KKworaW5wdXQjbnVtYmVyLXdpdGhvdXQtc3BpbmJ1dHRv
bjo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbiB7CisgICAgIGRpc3BsYXk6IG5vbmU7CisgICAg
IG1hcmdpbjogMDsKK30KK2lucHV0I251bWJlci13aXRoLXdpZHRoIHsKKyAgICAgd2lkdGg6IDEw
MHB4OworfQorCis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24i
PjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8c2NyaXB0PgorZGVzY3JpcHRpb24o
J1Rlc3QgZm9yIHNpemUgYXR0cmlidXRlIG9mIGlucHV0Jyk7CisKK3ZhciBwYXJlbnQgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKK2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQocGFy
ZW50KTsKK3BhcmVudC5pbm5lckhUTUwgPSAnPGlucHV0IHR5cGU9dGV4dCBpZD10ZXh0PicKKyAg
KyAnPGlucHV0IHR5cGU9Im51bWJlciIgaWQ9bnVtYmVyPicKKyAgKyAnPGlucHV0IHR5cGU9Im51
bWJlciIgaWQ9Im51bWJlci13aXRob3V0LXNwaW5idXR0b24iIG1pbj0iMCIgbWF4PSIxMCIgc3Rl
cD0iMSI+JworICArICc8aW5wdXQgdHlwZT0ibnVtYmVyIiBpZD0ibnVtYmVyLXdpdGgtc3BpbmJ1
dHRvbiIgbWluPSIwIiBtYXg9IjEwIiBzdGVwPSIxIj4nCisgICsgJzxpbnB1dCB0eXBlPSJudW1i
ZXIiIGlkPSJudW1iZXItd2l0aC13aWR0aCI+JwordmFyIG51bWJlciA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdudW1iZXInKTsKK3ZhciBudW1iZXJXaXRob3V0U3BpbkJ1dHRvbiA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdudW1iZXItd2l0aG91dC1zcGluYnV0dG9uJyk7Cit2YXIgbnVt
YmVyV2l0aFNwaW5CdXR0b24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbnVtYmVyLXdpdGgt
c3BpbmJ1dHRvbicpOwordmFyIG51bWJlcldpdGhXaWR0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdudW1iZXItd2l0aC13aWR0aCcpOwordmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgndGV4dCcpOworCisvLyBUaGUgd2lkdGggb2Ygc3BpbiBidXR0b24gc2hvdWxkIGRpZmZl
ciBieSBlbnZpcm9ubWVudC4gU28gaXQgc2hvdWxkIGJlIGNhbGN1bGF0ZWQgaGVyZS4KK3ZhciBz
cGluQnV0dG9uV2lkdGggPSBudW1iZXJXaXRoU3BpbkJ1dHRvbi5vZmZzZXRXaWR0aCAtIG51bWJl
cldpdGhvdXRTcGluQnV0dG9uLm9mZnNldFdpZHRoOworLy8gc3BpbkJ1dHRvbldpZHRoIHNob3Vs
ZCBoYXZlIG1lbmFuaW5nZnVsIHdpZHRoLgorc2hvdWxkQmVHcmVhdGVyVGhhbk9yRXF1YWwoJ3Nw
aW5CdXR0b25XaWR0aCcsICcxJyk7CisKK2RlYnVnKCdUaGUgY29udGVudCBhcmVhIG9mIHRoZSBu
dW1iZXIgaW5wdXQgd2l0aG91dCBtaW4vbWF4L3N0ZXAgYXR0cmlidXRlIHNob3VsZCBoYXZlIHRo
ZSBzYW1lIHdpZHRoIGFzIHRleHQgaW5wdXQnKTsKK3Nob3VsZEJlKCdudW1iZXIub2Zmc2V0V2lk
dGgnLCAndGV4dC5vZmZzZXRXaWR0aCcpOworZGVidWcoJycpOworCitkZWJ1ZygnVGhlIG51bWJl
ciB3aG9zZSB3aWR0aCBpcyBzcGVjaWZpZWQgc2hvdWxkIHJlc3BlY3QgdGhlIHNldHRpbmcnKTsK
K3Nob3VsZEJlKCdudW1iZXJXaXRoV2lkdGgub2Zmc2V0V2lkdGgnLCAnMTAwJyk7CitzaG91bGRC
ZSgnbnVtYmVyV2l0aFdpZHRoLm1pbiA9IDA7IG51bWJlcldpdGhXaWR0aC5tYXggPSAxMDA7IG51
bWJlcldpdGhXaWR0aC5vZmZzZXRXaWR0aCcsICcxMDAnKTsKK2RlYnVnKCcnKTsKKworZGVidWco
J1RoZSBudW1iZXIgaW5wdXQgc2hvdWxkIGlnbm9yZSBzaXplIGF0dHJpYnV0ZSBmb3IgbGF5b3V0
Jyk7CitzaG91bGRCZSgnbnVtYmVyLnNpemUgPSAxMDsgbnVtYmVyLm9mZnNldFdpZHRoJywgJ3Rl
eHQub2Zmc2V0V2lkdGgnKTsKK3Nob3VsZEJlKCdudW1iZXIuc2l6ZScsICcxMCcpOworc2hvdWxk
QmUoJ251bWJlci5zaXplID0gMTAwOyBudW1iZXIub2Zmc2V0V2lkdGgnLCAndGV4dC5vZmZzZXRX
aWR0aCcpOworc2hvdWxkQmUoJ251bWJlci5zaXplJywgJzEwMCcpOworbnVtYmVyLnNpemUgPSBu
dWxsOworZGVidWcoJycpOworCitmdW5jdGlvbiBudW1iZXJXaWR0aChtaW4sIG1heCwgc3RlcCwg
Y2xhc3NOYW1lKSB7CisgICAgbnVtYmVyLmNsYXNzTmFtZSA9IGNsYXNzTmFtZTsKKyAgICBudW1i
ZXIuc3RlcCA9IHN0ZXA7CisgICAgbnVtYmVyLm1pbiA9IG1pbjsKKyAgICBudW1iZXIubWF4ID0g
bWF4OworICAgIHJldHVybiBudW1iZXIub2Zmc2V0V2lkdGg7Cit9CisKK2Z1bmN0aW9uIHRleHRX
aWR0aFBsdXNTcGluQnV0dG9uV2lkdGgoc2l6ZSkgeworICAgIHRleHQuc2l6ZSA9IHNpemU7Cisg
ICAgcmV0dXJuIHRleHQub2Zmc2V0V2lkdGggKyBzcGluQnV0dG9uV2lkdGg7Cit9CisKK2RlYnVn
KCdJZiBtaW4gb3IgbWF4IGlzIGFic2VudCwgdGhlIG51bWJlciBpbnB1dCBoYXMgdGhlIHNhbWUg
d2lkdGggYXMgaW5wdXRbdHlwZT10ZXh0XScpCitzaG91bGRCZSgnbnVtYmVyV2lkdGgoMCwgbnVs
bCwgbnVsbCknLCAndGV4dC5vZmZzZXRXaWR0aCcpOworc2hvdWxkQmUoJ251bWJlcldpZHRoKG51
bGwsIDEwMCwgbnVsbCknLCAndGV4dC5vZmZzZXRXaWR0aCcpOworc2hvdWxkQmUoJ251bWJlcldp
ZHRoKG51bGwsIG51bGwsIDEwMCknLCAndGV4dC5vZmZzZXRXaWR0aCcpOworZGVidWcoJycpOwor
CitkZWJ1ZygnSWYgc3RlcCBpcyBhbnksIHRoZSBpbnB1dFt0eXBlPXRleHRdIGhhcyB0aGUgc2Ft
ZSB3aWR0aCBhcyBpbnB1dFt0eXBlPXRleHRdJykKK3Nob3VsZEJlKCdudW1iZXJXaWR0aCgwLCAx
LCAiYW55IiknLCAndGV4dC5vZmZzZXRXaWR0aCcpOworc2hvdWxkQmUoJ251bWJlcldpZHRoKDAs
IDEwLCAiYW55IiknLCAndGV4dC5vZmZzZXRXaWR0aCcpOworc2hvdWxkQmUoJ251bWJlcldpZHRo
KDAsIDEuMSwgImFueSIpJywgJ3RleHQub2Zmc2V0V2lkdGgnKTsKK2RlYnVnKCcnKTsKKworZGVi
dWcoJ1RoZSBjYXNlIHRoZSBpbm5lciBzcGluIGJ1dHRvbiBoYXMgYm9yZGVyIG9yIHBhZGRpbmcu
Jyk7Cit2YXIgYm9yZGVyV2lkdGggPSAyMDsKK3ZhciBwYWRkaW5nV2lkdGggPSAxNjsKK3Nob3Vs
ZEJlKCdudW1iZXJXaWR0aCgwLCAxMCwgMSwgIndpdGgtYm9yZGVyIiknLCAndGV4dFdpZHRoUGx1
c1NwaW5CdXR0b25XaWR0aCgyKSArIGJvcmRlcldpZHRoJyk7CitzaG91bGRCZSgnbnVtYmVyV2lk
dGgoMCwgMTAsIDEsICJ3aXRoLXBhZGRpbmciKScsICd0ZXh0V2lkdGhQbHVzU3BpbkJ1dHRvbldp
ZHRoKDIpICsgcGFkZGluZ1dpZHRoJyk7CitzaG91bGRCZSgnbnVtYmVyV2lkdGgoMCwgMTAsIDEs
ICJ3aXRoLW1hcmdpbiIpJywgJ3RleHRXaWR0aFBsdXNTcGluQnV0dG9uV2lkdGgoMiknKTsKK3No
b3VsZEJlKCdudW1iZXJXaWR0aCgwLCAxMCwgMSwgIndpdGgtYm9yZGVyIHdpdGgtcGFkZGluZyIp
JywgJ3RleHRXaWR0aFBsdXNTcGluQnV0dG9uV2lkdGgoMikgKyBib3JkZXJXaWR0aCArIHBhZGRp
bmdXaWR0aCcpOworZGVidWcoJycpOworCitkZWJ1ZygnVGhlIGRlZmF1bHQgc3RlcCBkb2VzIG5v
dCBuZWVkIHRvIGJlIGNvbnNpZGVyZWQuJykKK3Nob3VsZEJlKCdudW1iZXJXaWR0aCgwLCAxLCBu
dWxsKScsICd0ZXh0V2lkdGhQbHVzU3BpbkJ1dHRvbldpZHRoKDEpJyk7CitzaG91bGRCZSgnbnVt
YmVyV2lkdGgoMCwgMTAwLCBudWxsKScsICd0ZXh0V2lkdGhQbHVzU3BpbkJ1dHRvbldpZHRoKDMp
Jyk7CitzaG91bGRCZSgnbnVtYmVyV2lkdGgoLTEwMCwgMSwgbnVsbCknLCAndGV4dFdpZHRoUGx1
c1NwaW5CdXR0b25XaWR0aCg0KScpOworc2hvdWxkQmUoJ251bWJlcldpZHRoKDAuMCwgMS4wLCBu
dWxsKScsICd0ZXh0V2lkdGhQbHVzU3BpbkJ1dHRvbldpZHRoKDEpJyk7CitzaG91bGRCZSgnbnVt
YmVyV2lkdGgoMC41LCAxLjUsIG51bGwpJywgJ3RleHRXaWR0aFBsdXNTcGluQnV0dG9uV2lkdGgo
MyknKTsKK3Nob3VsZEJlKCdudW1iZXJXaWR0aCgtMC41LCAxLjUsIG51bGwpJywgJ3RleHRXaWR0
aFBsdXNTcGluQnV0dG9uV2lkdGgoNCknKTsKK3Nob3VsZEJlKCdudW1iZXJXaWR0aCgxZSsxMCwg
MWUrMTAgKyAxLCBudWxsKScsICd0ZXh0V2lkdGhQbHVzU3BpbkJ1dHRvbldpZHRoKDExKScpOwor
c2hvdWxkQmUoJ251bWJlcldpZHRoKC0xZSsxMCwgMWUrMTAgKyAxLCBudWxsKScsICd0ZXh0V2lk
dGhQbHVzU3BpbkJ1dHRvbldpZHRoKDEyKScpOworZGVidWcoJycpOworCitkZWJ1ZygnQ2hlY2sg
dGhlIHdpZHRoIG9mIGEgbnVtYmVyIGlucHV0IHdoZW4gbWluL21heC9zdGVwIGlzIGNoYW5nZWQg
dmFyaW91c2x5JykKK3Nob3VsZEJlKCdudW1iZXJXaWR0aCgwLCAxLCAxKScsICd0ZXh0V2lkdGhQ
bHVzU3BpbkJ1dHRvbldpZHRoKDEpJyk7CitzaG91bGRCZSgnbnVtYmVyV2lkdGgoMCwgMTAsIDEp
JywgJ3RleHRXaWR0aFBsdXNTcGluQnV0dG9uV2lkdGgoMiknKTsKK3Nob3VsZEJlKCdudW1iZXJX
aWR0aCgwLCAxMDAsIDEpJywgJ3RleHRXaWR0aFBsdXNTcGluQnV0dG9uV2lkdGgoMyknKTsKK3No
b3VsZEJlKCdudW1iZXJXaWR0aCgwLCAxMDAwLCAxKScsICd0ZXh0V2lkdGhQbHVzU3BpbkJ1dHRv
bldpZHRoKDQpJyk7CitzaG91bGRCZSgnbnVtYmVyV2lkdGgoMCwgMTAwMDAsIDEpJywgJ3RleHRX
aWR0aFBsdXNTcGluQnV0dG9uV2lkdGgoNSknKTsKK3Nob3VsZEJlKCdudW1iZXJXaWR0aCgwLCAx
MDAwMDAsIDEpJywgJ3RleHRXaWR0aFBsdXNTcGluQnV0dG9uV2lkdGgoNiknKTsKK3Nob3VsZEJl
KCdudW1iZXJXaWR0aCgwLCAxMDAwMDAwLCAxKScsICd0ZXh0V2lkdGhQbHVzU3BpbkJ1dHRvbldp
ZHRoKDcpJyk7CitzaG91bGRCZSgnbnVtYmVyV2lkdGgoMCwgMTAwMDAwMDAsIDEpJywgJ3RleHRX
aWR0aFBsdXNTcGluQnV0dG9uV2lkdGgoOCknKTsKK3Nob3VsZEJlKCdudW1iZXJXaWR0aCgwLCAx
MDAwMDAwMDAsIDEpJywgJ3RleHRXaWR0aFBsdXNTcGluQnV0dG9uV2lkdGgoOSknKTsKK3Nob3Vs
ZEJlKCdudW1iZXJXaWR0aCgwLCAxMDAwMDAwMDAwLCAxKScsICd0ZXh0V2lkdGhQbHVzU3BpbkJ1
dHRvbldpZHRoKDEwKScpOworCitzaG91bGRCZSgnbnVtYmVyV2lkdGgoLTEsIDAsIDEpJywgJ3Rl
eHRXaWR0aFBsdXNTcGluQnV0dG9uV2lkdGgoMiknKTsKK3Nob3VsZEJlKCdudW1iZXJXaWR0aCgt
MTAsIDAsIDEpJywgJ3RleHRXaWR0aFBsdXNTcGluQnV0dG9uV2lkdGgoMyknKTsKK3Nob3VsZEJl
KCdudW1iZXJXaWR0aCgtMTAwLCAwLCAxKScsICd0ZXh0V2lkdGhQbHVzU3BpbkJ1dHRvbldpZHRo
KDQpJyk7CitzaG91bGRCZSgnbnVtYmVyV2lkdGgoLTEwMDAsIDAsIDEpJywgJ3RleHRXaWR0aFBs
dXNTcGluQnV0dG9uV2lkdGgoNSknKTsKK3Nob3VsZEJlKCdudW1iZXJXaWR0aCgtMTAwMDAsIDAs
IDEpJywgJ3RleHRXaWR0aFBsdXNTcGluQnV0dG9uV2lkdGgoNiknKTsKK3Nob3VsZEJlKCdudW1i
ZXJXaWR0aCgtMTAwMDAwLCAwLCAxKScsICd0ZXh0V2lkdGhQbHVzU3BpbkJ1dHRvbldpZHRoKDcp
Jyk7CitzaG91bGRCZSgnbnVtYmVyV2lkdGgoLTEwMDAwMDAsIDAsIDEpJywgJ3RleHRXaWR0aFBs
dXNTcGluQnV0dG9uV2lkdGgoOCknKTsKK3Nob3VsZEJlKCdudW1iZXJXaWR0aCgtMTAwMDAwMDAs
IDAsIDEpJywgJ3RleHRXaWR0aFBsdXNTcGluQnV0dG9uV2lkdGgoOSknKTsKK3Nob3VsZEJlKCdu
dW1iZXJXaWR0aCgtMTAwMDAwMDAwLCAwLCAxKScsICd0ZXh0V2lkdGhQbHVzU3BpbkJ1dHRvbldp
ZHRoKDEwKScpOworc2hvdWxkQmUoJ251bWJlcldpZHRoKC0xMDAwMDAwMDAwLCAwLCAxKScsICd0
ZXh0V2lkdGhQbHVzU3BpbkJ1dHRvbldpZHRoKDExKScpOworCitzaG91bGRCZSgnbnVtYmVyV2lk
dGgoMCwgMSwgMC41KScsICd0ZXh0V2lkdGhQbHVzU3BpbkJ1dHRvbldpZHRoKDMpJyk7CitzaG91
bGRCZSgnbnVtYmVyV2lkdGgoMCwgMSwgMC4wNSknLCAndGV4dFdpZHRoUGx1c1NwaW5CdXR0b25X
aWR0aCg0KScpOworc2hvdWxkQmUoJ251bWJlcldpZHRoKDAsIDEsIDAuMDA1KScsICd0ZXh0V2lk
dGhQbHVzU3BpbkJ1dHRvbldpZHRoKDUpJyk7CitzaG91bGRCZSgnbnVtYmVyV2lkdGgoMCwgMSwg
MC4wMDA1KScsICd0ZXh0V2lkdGhQbHVzU3BpbkJ1dHRvbldpZHRoKDYpJyk7CitzaG91bGRCZSgn
bnVtYmVyV2lkdGgoMCwgMSwgMC4wMDAwNSknLCAndGV4dFdpZHRoUGx1c1NwaW5CdXR0b25XaWR0
aCg3KScpOworc2hvdWxkQmUoJ251bWJlcldpZHRoKDAsIDEsIDAuMDAwMDA1KScsICd0ZXh0V2lk
dGhQbHVzU3BpbkJ1dHRvbldpZHRoKDgpJyk7CitzaG91bGRCZSgnbnVtYmVyV2lkdGgoMCwgMSwg
MC4wMDAwMDA1KScsICd0ZXh0V2lkdGhQbHVzU3BpbkJ1dHRvbldpZHRoKDkpJyk7CisKK3Nob3Vs
ZEJlKCdudW1iZXJXaWR0aCgwLjUsIDEsIDEpJywgJ3RleHRXaWR0aFBsdXNTcGluQnV0dG9uV2lk
dGgoMyknKTsKK3Nob3VsZEJlKCdudW1iZXJXaWR0aCgwLjA1LCAxLCAxKScsICd0ZXh0V2lkdGhQ
bHVzU3BpbkJ1dHRvbldpZHRoKDQpJyk7CitzaG91bGRCZSgnbnVtYmVyV2lkdGgoMC4wMDUsIDEs
IDEpJywgJ3RleHRXaWR0aFBsdXNTcGluQnV0dG9uV2lkdGgoNSknKTsKK3Nob3VsZEJlKCdudW1i
ZXJXaWR0aCgxLjUsIDIsIDEpJywgJ3RleHRXaWR0aFBsdXNTcGluQnV0dG9uV2lkdGgoMyknKTsK
K3Nob3VsZEJlKCdudW1iZXJXaWR0aCgxLjA1LCAyLCAxKScsICd0ZXh0V2lkdGhQbHVzU3BpbkJ1
dHRvbldpZHRoKDQpJyk7CitzaG91bGRCZSgnbnVtYmVyV2lkdGgoMS4wMDUsIDIsIDEpJywgJ3Rl
eHRXaWR0aFBsdXNTcGluQnV0dG9uV2lkdGgoNSknKTsKKworZGVidWcoJycpCisKK3ZhciBzdWNj
ZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+CisKKworPHNjcmlwdCBzcmM9Ii4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKaW5kZXggN2NlNDQ1MjhmNGZmMDgwODY5MTQ4MmQ1M2NiNDAxMGEyZTAw
NjI4My4uNTllY2UxYjNmY2I1ZmRkNWMzZDEzZjE2OGY2MGI1MTJmMDE3N2JjNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDQ3IEBACisyMDExLTA4LTA3ICBTaGlueWEgS2F3YW5ha2EgIDxzaGlueWFr
QGdvb2dsZS5jb20+CisKKyAgICAgICAgVGhlIGlucHV0W3R5cGU9bnVtYmVyXSBlbGVtZW50IHNo
b3VsZCBiZSBhcyB3aWRlIGFzIG5lY2Vzc2FyeSB0byBzaG93IHRoZSB3aWRlc3QgcG9zc2libGUg
dmFsdWUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
MDY3MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
ZSBzaXplIG9mIGlucHV0W3R5cGU9bnVtYmVyXSBpcyBjYWxjdWxhdGVkIGZyb20gbWluL21heC9z
dGVwIGF0dHJpYnV0ZXMgdG8gc2hvdyB0aGUgd2lkZXN0IHBvc3NpYmxlIHZhbHVlLgorICAgICAg
ICBJZiBtaW4gb3IgbWF4IGF0dHJpYnV0ZSBpcyBhYnNlbnQsIHRoZSBkZWZhdWx0IHNpemUgaXMg
dXNlZC4KKyAgICAgICAgQWxzbywgaWYgaXRzIGNzcyB3aWR0aCBpcyBub3QgYXV0bywgdGhlIHdp
ZHRoIGlzIHVzZWQgd2l0aCBwcmlvcml0eS4KKworICAgICAgICBJZiBtaW4vbWF4L2F0dHJpYnV0
ZSBpcyBzZXQgZHluYW1pY2FsbHksIHRoZSBzaXplIG9mIHRoZSBpbnB1dFt0eXBlPW51bWJlcl0g
d2lsbCBiZSByZWNhbGN1bGF0ZWQuCisKKyAgICAgICAgVGVzdDogZmFzdC9mb3Jtcy9pbnB1dC1u
dW1iZXItc2l6ZS5odG1sCisKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUp
OgorICAgICAgICAgICBBZGRlZCBzdGVwQXR0cmlidXRlQ2hhbmdlZCBoYW5kbGVyLgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6c2l6ZVNob3VsZEluY2x1ZGVEZWNvcmF0aW9u
KToKKyAgICAgICAgICAgUmV0dXJucyB0cnVlIGlmIGEgcmVuZGVyZXIgc2hvdWxkIGluY2x1ZGUg
ZGVjb3JhdGlvbiAoZS5nLiBpbm5lciBzcGluYm94KS4KKyAgICAgICAgICAgQWxzbyByZXR1cm5z
IHRoZSBwcmVmZXJyZWQgc2l6ZSBvZiB0aGUgaW5wdXQuCisgICAgICAgICogaHRtbC9IVE1MSW5w
dXRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9JbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5wdXRUeXBlOjpzaXplU2hvdWxkSW5jbHVkZURlY29yYXRpb24pOgorICAgICAgICAg
ICBTYW1lIGFzIFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnNpemVTaG91bGRJbmNsdWRlRGVj
b3JhdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6c3RlcEF0dHJpYnV0ZUNoYW5n
ZWQpOgorICAgICAgICAgICBXaWxsIGJlIGNhbGxlZCBXaGVuIHN0ZXAgYXR0cmlidXRlIGlzIGNo
YW5nZWQuCisgICAgICAgICAgIFNldHMgYSBmbGFnIHRvIHJlY2FsY3VsYXRlIGxheW91dC4KKyAg
ICAgICAgKiBodG1sL0lucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwvTnVtYmVySW5wdXRUeXBl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omxlbmd0aEJlZm9yZURlY2ltYWxQb2ludCk6CisgICAg
ICAgICAgIENhbGN1bGF0ZXMgdGhlIHdpZHRoIGJlZm9yZSB0aGUgZGVjaW1hbCBwb2ludC4KKyAg
ICAgICAgKFdlYkNvcmU6Ok51bWJlcklucHV0VHlwZTo6c2l6ZVNob3VsZEluY2x1ZGVEZWNvcmF0
aW9uKToKKyAgICAgICAgICAgU2FtZSBhcyBXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpzaXpl
U2hvdWxkSW5jbHVkZURlY29yYXRpb24uCisgICAgICAgICAgIEhvd2V2ZXIsIHRoaXMgd2lsbCBj
YWxjdWxhdGUgdGhlIHByZWZlcnJlZCBzaXplIGZyb20gbWluL21heC9zdGVwIGF0dHJpYnV0ZS4K
KyAgICAgICAgKFdlYkNvcmU6Ok51bWJlcklucHV0VHlwZTo6bWluT3JNYXhBdHRyaWJ1dGVDaGFu
Z2VkKToKKyAgICAgICAgICAgU2V0cyBhIGZsYWcgdG8gcmVjYWxjdWxhdGUgbGF5b3V0LgorICAg
ICAgICAoV2ViQ29yZTo6TnVtYmVySW5wdXRUeXBlOjpzdGVwQXR0cmlidXRlQ2hhbmdlZCk6IGRp
dHRvLgorICAgICAgICAqIGh0bWwvTnVtYmVySW5wdXRUeXBlLmg6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OnByZWZlcnJlZENvbnRlbnRXaWR0aCk6CisgICAg
ICAgICAgIFVzZXMgcHJlZmVycmVkU2l6ZSBpbnN0ZWFkIG9mIHNpemUuCisgICAgICAgICAgIEFs
c28sIGFkZHMgaW5uZXJTcGluQnV0dG9uRWxlbWVudCBzaXplIHRvIHdpZHRoIGlmIHNpemVTaG91
bGRJbmNsdWRlRGVjb3JhdGlvbiByZXR1cm5zIHRydWUuCisKIDIwMTEtMDgtMDcgIE1hcnRpbiBS
b2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIERpc3RyaWJ1dGlvbiBm
aXggZm9yIEdUSysuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRl
eCBiNjgzZDQzZWFhZmUwMDliOTMxYmNhMzVlMDVjMWQ3ZGRlZTk1YjVlLi4xOWQyMjc3NTZhZTZl
YjZkOGI4NTNlYWFhNjQ0NDY0MzJlYTY1ZWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElu
cHV0RWxlbWVudC5jcHAKQEAgLTUwLDYgKzUwLDcgQEAKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50
LmgiCiAjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUgIk1vdXNlRXZlbnQu
aCIKKyNpbmNsdWRlICJOdW1iZXJJbnB1dFR5cGUuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5j
bHVkZSAiUGxhdGZvcm1Nb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dENvbnRyb2xT
aW5nbGVMaW5lLmgiCkBAIC04MDQsNyArODA1LDEwIEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6
cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogICAgIH0gZWxzZSBpZiAoYXR0
ci0+bmFtZSgpID09IG11bHRpcGxlQXR0cikgewogICAgICAgICBtX2lucHV0VHlwZS0+bXVsdGlw
bGVBdHRyaWJ1dGVDaGFuZ2VkKCk7CiAgICAgICAgIHNldE5lZWRzVmFsaWRpdHlDaGVjaygpOwot
ICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IHBhdHRlcm5BdHRyIHx8IGF0dHItPm5hbWUo
KSA9PSBwcmVjaXNpb25BdHRyIHx8IGF0dHItPm5hbWUoKSA9PSBzdGVwQXR0cikKKyAgICB9IGVs
c2UgaWYgKGF0dHItPm5hbWUoKSA9PSBzdGVwQXR0cikgeworICAgICAgICBtX2lucHV0VHlwZS0+
c3RlcEF0dHJpYnV0ZUNoYW5nZWQoKTsKKyAgICAgICAgc2V0TmVlZHNWYWxpZGl0eUNoZWNrKCk7
CisgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gcGF0dGVybkF0dHIgfHwgYXR0ci0+bmFt
ZSgpID09IHByZWNpc2lvbkF0dHIpCiAgICAgICAgIHNldE5lZWRzVmFsaWRpdHlDaGVjaygpOwog
ICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBkaXNhYmxlZEF0dHIpIHsKICAgICAgICAgbV9p
bnB1dFR5cGUtPmRpc2FibGVkQXR0cmlidXRlQ2hhbmdlZCgpOwpAQCAtOTk0LDYgKzk5OCwxMSBA
QCBpbnQgSFRNTElucHV0RWxlbWVudDo6c2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc2l6ZTsK
IH0KIAorYm9vbCBIVE1MSW5wdXRFbGVtZW50OjpzaXplU2hvdWxkSW5jbHVkZURlY29yYXRpb24o
aW50KiBwcmVmZXJyZWRTaXplKSBjb25zdAoreworICAgIHJldHVybiBtX2lucHV0VHlwZS0+c2l6
ZVNob3VsZEluY2x1ZGVEZWNvcmF0aW9uKGRlZmF1bHRTaXplLCBwcmVmZXJyZWRTaXplKTsKK30K
Kwogdm9pZCBIVE1MSW5wdXRFbGVtZW50Ojpjb3B5Tm9uQXR0cmlidXRlUHJvcGVydGllcyhjb25z
dCBFbGVtZW50KiBzb3VyY2UpCiB7CiAgICAgY29uc3QgSFRNTElucHV0RWxlbWVudCogc291cmNl
RWxlbWVudCA9IHN0YXRpY19jYXN0PGNvbnN0IEhUTUxJbnB1dEVsZW1lbnQqPihzb3VyY2UpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAppbmRleCA5MmZhOWY1ODU3YTczYTkx
MTUwYTU1ODg4ZTg0NTkyZDM0MzFmY2VlLi43ZTI5MDczOGM0NDUxYmIyNzdlZjZmYjk2ZDUxOWY5
MDM5ZTJhOTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaApAQCAtMTMx
LDYgKzEzMSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNJbmRldGVybWluYXRlKCkg
Y29uc3QgeyByZXR1cm4gaW5kZXRlcm1pbmF0ZSgpOyB9CiAKICAgICBpbnQgc2l6ZSgpIGNvbnN0
OworICAgIGJvb2wgc2l6ZVNob3VsZEluY2x1ZGVEZWNvcmF0aW9uKGludCogcHJlZmVycmVkU2l6
ZSkgY29uc3Q7CiAKICAgICB2b2lkIHNldFR5cGUoY29uc3QgU3RyaW5nJik7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSW5wdXRUeXBlLmNwcAppbmRleCA2MDkyNDYwYTAwNzhmZTI1MzBkZTY0MTdjODdhMTQwMGY5
NGVmZTUwLi4zZTQ4YzI5MDliMmY2Mzg1ODM5YWI2ZTExZTRmODg0NzM2ODQwMTAwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9JbnB1dFR5cGUuY3BwCkBAIC0yNDksNiArMjQ5LDEzIEBAIGRvdWJsZSBJbnB1dFR5
cGU6Om1heGltdW0oKSBjb25zdAogICAgIHJldHVybiAwOwogfQogCitib29sIElucHV0VHlwZTo6
c2l6ZVNob3VsZEluY2x1ZGVEZWNvcmF0aW9uKGludCBkZWZhdWx0U2l6ZSwgaW50KiBwcmVmZXJy
ZWRTaXplKSBjb25zdAoreworICAgIGlmIChwcmVmZXJyZWRTaXplKQorICAgICAgICAqcHJlZmVy
cmVkU2l6ZSA9IGVsZW1lbnQoKS0+c2l6ZSgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwogYm9v
bCBJbnB1dFR5cGU6OnN0ZXBNaXNtYXRjaChjb25zdCBTdHJpbmcmLCBkb3VibGUpIGNvbnN0CiB7
CiAgICAgLy8gTm9uLXN1cHBvcnRlZCB0eXBlcyBzaG91bGQgYmUgcmVqZWN0ZWQgYnkgSFRNTElu
cHV0RWxlbWVudDo6Z2V0QWxsb3dlZFZhbHVlU3RlcCgpLgpAQCAtNDUzLDYgKzQ2MCwxMCBAQCB2
b2lkIElucHV0VHlwZTo6bWluT3JNYXhBdHRyaWJ1dGVDaGFuZ2VkKCkKIHsKIH0KIAordm9pZCBJ
bnB1dFR5cGU6OnN0ZXBBdHRyaWJ1dGVDaGFuZ2VkKCkKK3sKK30KKwogYm9vbCBJbnB1dFR5cGU6
OmNhbkJlU3VjY2Vzc2Z1bFN1Ym1pdEJ1dHRvbigpCiB7CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSW5wdXRUeXBlLmgKaW5kZXggMmRmMGVmNWI4Zjk1ODhkMzJhZTcyZmI2MzJjMjI0Yjdi
Y2JmNDY0MS4uZWVlNjdkMjM4ZmNiOTg2ZTdiOTZjNmExYWQ1OTliNjI4NDFhMzk4NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0lucHV0VHlwZS5oCkBAIC0xNDMsNiArMTQzLDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgZG91YmxlIGRlZmF1bHRWYWx1ZUZvclN0ZXBVcCgpIGNvbnN0OwogICAgIHZpcnR1YWwgZG91
YmxlIG1pbmltdW0oKSBjb25zdDsKICAgICB2aXJ0dWFsIGRvdWJsZSBtYXhpbXVtKCkgY29uc3Q7
CisgICAgdmlydHVhbCBib29sIHNpemVTaG91bGRJbmNsdWRlRGVjb3JhdGlvbihpbnQgZGVmYXVs
dFNpemUsIGludCogcHJlZmVycmVkU2l6ZSkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHN0ZXBN
aXNtYXRjaChjb25zdCBTdHJpbmcmLCBkb3VibGUgc3RlcCkgY29uc3Q7CiAgICAgdmlydHVhbCBk
b3VibGUgc3RlcEJhc2UoKSBjb25zdDsKICAgICB2aXJ0dWFsIGRvdWJsZSBzdGVwQmFzZVdpdGhE
ZWNpbWFsUGxhY2VzKHVuc2lnbmVkKikgY29uc3Q7CkBAIC0yMDYsNiArMjA3LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSos
IFJlbmRlclN0eWxlKikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpOwogICAgIHZp
cnR1YWwgdm9pZCBtaW5Pck1heEF0dHJpYnV0ZUNoYW5nZWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQg
c3RlcEF0dHJpYnV0ZUNoYW5nZWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgYWx0QXR0cmlidXRlQ2hh
bmdlZCgpOwogICAgIHZpcnR1YWwgdm9pZCBzcmNBdHRyaWJ1dGVDaGFuZ2VkKCk7CiAgICAgdmly
dHVhbCB2b2lkIHZhbHVlQ2hhbmdlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9OdW1iZXJJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9OdW1iZXJJbnB1dFR5
cGUuY3BwCmluZGV4IGI4MWUzYTQ1NjJlNDY1YzA1NTg5ZTVhZGE3NTM4NGJhNTY0MjM4NzguLmM2
ZWY3MDZkNDRlNGZlOTI0ZjlmNmUyMjY5NGYwNzVlNDdmY2Q4YmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvTnVtYmVySW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL051bWJlcklucHV0VHlwZS5jcHAKQEAgLTUzLDYgKzUzLDIxIEBAIHVzaW5nIG5hbWVzcGFj
ZSBzdGQ7CiBzdGF0aWMgY29uc3QgZG91YmxlIG51bWJlckRlZmF1bHRTdGVwID0gMS4wOwogc3Rh
dGljIGNvbnN0IGRvdWJsZSBudW1iZXJTdGVwU2NhbGVGYWN0b3IgPSAxLjA7CiAKK3N0YXRpYyB1
bnNpZ25lZCBsZW5ndGhCZWZvcmVEZWNpbWFsUG9pbnQoZG91YmxlIHZhbHVlKQoreworICAgIC8v
IElmIHZhbHVlIGlzIG5lZ2F0aXZlLCAnLScgc2hvdWxkIGJlIGNvdW50ZWQuCisKKyAgICBkb3Vi
bGUgYWJzb2x1dGVWYWx1ZSA9IGZhYnModmFsdWUpOworICAgIGlmIChhYnNvbHV0ZVZhbHVlIDwg
MSkKKyAgICAgICAgcmV0dXJuIHZhbHVlIDwgMCA/IDIgOiAxOworCisgICAgdW5zaWduZWQgbGVu
Z3RoID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxvZzEwKGZsb29yKGFic29sdXRlVmFsdWUpKSkg
KyAxOworICAgIGlmICh2YWx1ZSA8IDApCisgICAgICAgIGxlbmd0aCArPSAxOworCisgICAgcmV0
dXJuIGxlbmd0aDsKK30KKwogUGFzc093blB0cjxJbnB1dFR5cGU+IE51bWJlcklucHV0VHlwZTo6
Y3JlYXRlKEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UHRy
KG5ldyBOdW1iZXJJbnB1dFR5cGUoZWxlbWVudCkpOwpAQCAtMTIxLDYgKzEzNiw1NSBAQCBkb3Vi
bGUgTnVtYmVySW5wdXRUeXBlOjptYXhpbXVtKCkgY29uc3QKICAgICByZXR1cm4gcGFyc2VUb0Rv
dWJsZShlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUobWF4QXR0ciksIG51bWVyaWNfbGltaXRz
PGZsb2F0Pjo6bWF4KCkpOwogfQogCitib29sIE51bWJlcklucHV0VHlwZTo6c2l6ZVNob3VsZElu
Y2x1ZGVEZWNvcmF0aW9uKGludCBkZWZhdWx0U2l6ZSwgaW50KiBwcmVmZXJyZWRTaXplKSBjb25z
dAoreworICAgIGlmIChwcmVmZXJyZWRTaXplKQorICAgICAgICAqcHJlZmVycmVkU2l6ZSA9IGRl
ZmF1bHRTaXplOworCisgICAgdW5zaWduZWQgbWluVmFsdWVEZWNpbWFsUGxhY2VzOworICAgIGRv
dWJsZSBtaW5WYWx1ZURvdWJsZTsKKyAgICBTdHJpbmcgbWluVmFsdWUgPSBlbGVtZW50KCktPmZh
c3RHZXRBdHRyaWJ1dGUobWluQXR0cik7CisgICAgaWYgKCFwYXJzZVRvRG91YmxlRm9yTnVtYmVy
VHlwZVdpdGhEZWNpbWFsUGxhY2VzKG1pblZhbHVlLCAmbWluVmFsdWVEb3VibGUsICZtaW5WYWx1
ZURlY2ltYWxQbGFjZXMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICB1bnNpZ25lZCBt
YXhWYWx1ZURlY2ltYWxQbGFjZXM7CisgICAgZG91YmxlIG1heFZhbHVlRG91YmxlOworICAgIFN0
cmluZyBtYXhWYWx1ZSA9IGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShtYXhBdHRyKTsKKyAg
ICBpZiAoIXBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlV2l0aERlY2ltYWxQbGFjZXMobWF4VmFs
dWUsICZtYXhWYWx1ZURvdWJsZSwgJm1heFZhbHVlRGVjaW1hbFBsYWNlcykpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGlmIChtYXhWYWx1ZURvdWJsZSA8IG1pblZhbHVlRG91YmxlKSB7
CisgICAgICAgIG1heFZhbHVlRG91YmxlID0gbWluVmFsdWVEb3VibGU7CisgICAgICAgIG1heFZh
bHVlRGVjaW1hbFBsYWNlcyA9IG1heFZhbHVlRGVjaW1hbFBsYWNlczsKKyAgICB9CisKKyAgICB1
bnNpZ25lZCBzdGVwVmFsdWVEZWNpbWFsUGxhY2VzOworICAgIGRvdWJsZSBzdGVwVmFsdWVEb3Vi
bGU7CisgICAgU3RyaW5nIHN0ZXBWYWx1ZSA9IGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShz
dGVwQXR0cik7CisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHN0ZXBWYWx1ZSwgImFueSIpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlw
ZVdpdGhEZWNpbWFsUGxhY2VzKHN0ZXBWYWx1ZSwgJnN0ZXBWYWx1ZURvdWJsZSwgJnN0ZXBWYWx1
ZURlY2ltYWxQbGFjZXMpKSB7CisgICAgICAgIHN0ZXBWYWx1ZURvdWJsZSA9IDE7CisgICAgICAg
IHN0ZXBWYWx1ZURlY2ltYWxQbGFjZXMgPSAwOworICAgIH0KKworICAgIHVuc2lnbmVkIGxlbmd0
aCA9IGxlbmd0aEJlZm9yZURlY2ltYWxQb2ludChtaW5WYWx1ZURvdWJsZSk7CisgICAgbGVuZ3Ro
ID0gbWF4KGxlbmd0aCwgbGVuZ3RoQmVmb3JlRGVjaW1hbFBvaW50KG1heFZhbHVlRG91YmxlKSk7
CisgICAgbGVuZ3RoID0gbWF4KGxlbmd0aCwgbGVuZ3RoQmVmb3JlRGVjaW1hbFBvaW50KHN0ZXBW
YWx1ZURvdWJsZSkpOworCisgICAgdW5zaWduZWQgbGVuZ3RoQWZ0ZXJEZWNpbWFsUG9pbnQgPSBt
aW5WYWx1ZURlY2ltYWxQbGFjZXM7CisgICAgbGVuZ3RoQWZ0ZXJEZWNpbWFsUG9pbnQgPSBtYXgo
bGVuZ3RoQWZ0ZXJEZWNpbWFsUG9pbnQsIG1heFZhbHVlRGVjaW1hbFBsYWNlcyk7CisgICAgbGVu
Z3RoQWZ0ZXJEZWNpbWFsUG9pbnQgPSBtYXgobGVuZ3RoQWZ0ZXJEZWNpbWFsUG9pbnQsIHN0ZXBW
YWx1ZURlY2ltYWxQbGFjZXMpOworCisgICAgLy8gJy4nIHNob3VsZCBiZSBjb3VudGVkIGlmIHRo
ZSB2YWx1ZSBoYXMgZGVjaW1hbCBwbGFjZXMuCisgICAgaWYgKGxlbmd0aEFmdGVyRGVjaW1hbFBv
aW50ID4gMCkKKyAgICAgICAgbGVuZ3RoICs9IGxlbmd0aEFmdGVyRGVjaW1hbFBvaW50ICsgMTsK
KworICAgIGlmIChwcmVmZXJyZWRTaXplKQorICAgICAgICAqcHJlZmVycmVkU2l6ZSA9IGxlbmd0
aDsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogYm9vbCBOdW1iZXJJbnB1dFR5cGU6OmlzU3RlcHBh
YmxlKCkgY29uc3QKIHsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTI3NCw0ICszMzgsMjAgQEAgYm9v
bCBOdW1iZXJJbnB1dFR5cGU6OmlzTnVtYmVyRmllbGQoKSBjb25zdAogICAgIHJldHVybiB0cnVl
OwogfQogCit2b2lkIE51bWJlcklucHV0VHlwZTo6bWluT3JNYXhBdHRyaWJ1dGVDaGFuZ2VkKCkK
K3sKKyAgICBJbnB1dFR5cGU6Om1pbk9yTWF4QXR0cmlidXRlQ2hhbmdlZCgpOworCisgICAgaWYg
KGVsZW1lbnQoKS0+cmVuZGVyZXIoKSkKKyAgICAgICAgZWxlbWVudCgpLT5yZW5kZXJlcigpLT5z
ZXROZWVkc0xheW91dEFuZFByZWZXaWR0aHNSZWNhbGMoKTsKK30KKwordm9pZCBOdW1iZXJJbnB1
dFR5cGU6OnN0ZXBBdHRyaWJ1dGVDaGFuZ2VkKCkKK3sKKyAgICBJbnB1dFR5cGU6OnN0ZXBBdHRy
aWJ1dGVDaGFuZ2VkKCk7CisKKyAgICBpZiAoZWxlbWVudCgpLT5yZW5kZXJlcigpKQorICAgICAg
ICBlbGVtZW50KCktPnJlbmRlcmVyKCktPnNldE5lZWRzTGF5b3V0QW5kUHJlZldpZHRoc1JlY2Fs
YygpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL051bWJlcklucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9OdW1iZXJJ
bnB1dFR5cGUuaAppbmRleCA1NGVhYTY2YjQ0NWFlMTIwN2I1OWM0ODY4NWExM2NmZDVlZTBkZjE2
Li5lYmQ1M2Y5YzQ5ZjMyOTk0NjgxZDM4ODZjMjgwNTczZjY2YTcxMTEyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL051bWJlcklucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvTnVtYmVySW5wdXRUeXBlLmgKQEAgLTUxLDYgKzUxLDcgQEAgcHJpdmF0ZToKICAgICB2
aXJ0dWFsIGJvb2wgc3VwcG9ydHNSYW5nZUxpbWl0YXRpb24oKSBjb25zdDsKICAgICB2aXJ0dWFs
IGRvdWJsZSBtaW5pbXVtKCkgY29uc3Q7CiAgICAgdmlydHVhbCBkb3VibGUgbWF4aW11bSgpIGNv
bnN0OworICAgIHZpcnR1YWwgYm9vbCBzaXplU2hvdWxkSW5jbHVkZURlY29yYXRpb24oaW50IGRl
ZmF1bHRTaXplLCBpbnQqIHByZWZlcnJlZFNpemUpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBp
c1N0ZXBwYWJsZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBzdGVwTWlzbWF0Y2goY29uc3Qg
U3RyaW5nJiwgZG91YmxlKSBjb25zdDsKICAgICB2aXJ0dWFsIGRvdWJsZSBzdGVwQmFzZSgpIGNv
bnN0OwpAQCAtNzIsNiArNzMsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRS
ZXNwZWN0U3BlZWNoQXR0cmlidXRlKCk7CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzUGxhY2Vo
b2xkZXIoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaXNOdW1iZXJGaWVsZCgpIGNvbnN0Owor
ICAgIHZpcnR1YWwgdm9pZCBtaW5Pck1heEF0dHJpYnV0ZUNoYW5nZWQoKTsKKyAgICB2aXJ0dWFs
IHZvaWQgc3RlcEF0dHJpYnV0ZUNoYW5nZWQoKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJv
bFNpbmdsZUxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250
cm9sU2luZ2xlTGluZS5jcHAKaW5kZXggNTJhNWFjOGFkMTVlMDM5MGU1Y2ZmZDQ0YjQxNzRjN2Ex
N2U1ZGVlZi4uY2FlNDJhZWUyMjE5OWFkM2EwYmMwM2YxNzZiMDNhZTEzOTkxMDcwNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGlu
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2lu
Z2xlTGluZS5jcHAKQEAgLTM4OSwxMCArMzg5LDExIEBAIGZsb2F0IFJlbmRlclRleHRDb250cm9s
U2luZ2xlTGluZTo6Z2V0QXZnQ2hhcldpZHRoKEF0b21pY1N0cmluZyBmYW1pbHkpCiAKICAgICBy
ZXR1cm4gUmVuZGVyVGV4dENvbnRyb2w6OmdldEF2Z0NoYXJXaWR0aChmYW1pbHkpOwogfQotICAg
IAorCiBpbnQgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpwcmVmZXJyZWRDb250ZW50V2lk
dGgoZmxvYXQgY2hhcldpZHRoKSBjb25zdAogewotICAgIGludCBmYWN0b3IgPSBpbnB1dEVsZW1l
bnQoKS0+c2l6ZSgpOworICAgIGludCBmYWN0b3I7CisgICAgYm9vbCBpbmNsdWRlc0RlY29yYXRp
b24gPSBpbnB1dEVsZW1lbnQoKS0+c2l6ZVNob3VsZEluY2x1ZGVEZWNvcmF0aW9uKCZmYWN0b3Ip
OwogICAgIGlmIChmYWN0b3IgPD0gMCkKICAgICAgICAgZmFjdG9yID0gMjA7CiAKQEAgLTQyMyw2
ICs0MjQsMTcgQEAgaW50IFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6cHJlZmVycmVkQ29u
dGVudFdpZHRoKGZsb2F0IGNoYXJXaWR0aCkgY29uc3QKICAgICAgICAgcmVzdWx0ICs9IGNhbmNl
bFJlbmRlcmVyLT5ib3JkZXJMZWZ0KCkgKyBjYW5jZWxSZW5kZXJlci0+Ym9yZGVyUmlnaHQoKSAr
CiAgICAgICAgICAgICAgICAgICBjYW5jZWxSZW5kZXJlci0+cGFkZGluZ0xlZnQoKSArIGNhbmNl
bFJlbmRlcmVyLT5wYWRkaW5nUmlnaHQoKTsKIAorICAgIGlmIChpbmNsdWRlc0RlY29yYXRpb24p
IHsKKyAgICAgICAgSFRNTEVsZW1lbnQqIHNwaW5CdXR0b24gPSBpbm5lclNwaW5CdXR0b25FbGVt
ZW50KCk7CisgICAgICAgIGlmIChSZW5kZXJCb3gqIHNwaW5SZW5kZXJlciA9IHNwaW5CdXR0b24g
PyBzcGluQnV0dG9uLT5yZW5kZXJCb3goKSA6IDApIHsKKyAgICAgICAgICAgIHJlc3VsdCArPSBz
cGluUmVuZGVyZXItPmJvcmRlckxlZnQoKSArIHNwaW5SZW5kZXJlci0+Ym9yZGVyUmlnaHQoKSAr
CisgICAgICAgICAgICAgICAgICBzcGluUmVuZGVyZXItPnBhZGRpbmdMZWZ0KCkgKyBzcGluUmVu
ZGVyZXItPnBhZGRpbmdSaWdodCgpOworICAgICAgICAgICAgLy8gU2luY2UgdGhlIHdpZHRoIG9m
IHNwaW5SZW5kZXJlciBpcyBub3QgY2FsY3VsYXRlZCB5ZXQsIHNwaW5SZW5kZXJlci0+d2lkdGgo
KSByZXR1cm5zIDAuCisgICAgICAgICAgICAvLyBTbyBjb21wdXRlZFN0eWxlKCktPndpZHRoKCkg
aXMgdXNlZCBpbnN0ZWFkLgorICAgICAgICAgICAgcmVzdWx0ICs9IHNwaW5CdXR0b24tPmNvbXB1
dGVkU3R5bGUoKS0+d2lkdGgoKS52YWx1ZSgpOworICAgICAgICB9CisgICAgfQorCiAjaWYgRU5B
QkxFKElOUFVUX1NQRUVDSCkKICAgICBIVE1MRWxlbWVudCogc3BlZWNoQnV0dG9uID0gc3BlZWNo
QnV0dG9uRWxlbWVudCgpOwogICAgIGlmIChSZW5kZXJCb3gqIHNwZWVjaFJlbmRlcmVyID0gc3Bl
ZWNoQnV0dG9uID8gc3BlZWNoQnV0dG9uLT5yZW5kZXJCb3goKSA6IDApIHsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103221</attachid>
            <date>2011-08-08 01:38:25 -0700</date>
            <delta_ts>2011-08-08 02:17:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-60673-20110808173823.patch</filename>
            <type>text/plain</type>
            <size>26063</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTI1NzUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3YWRlMDQyZDViNWM5NDM4Yzg4MGE1
ZDk5YmE2ODM0OTJiYzYxZjMwLi5mYWZjNjk1ZTcyZmEzYjQwNDI5NmZiYTM0MTc2MzFhMTk0MGVm
N2I4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDgtMDcgIFNoaW55YSBLYXdhbmFrYSAg
PHNoaW55YWtAZ29vZ2xlLmNvbT4KKworICAgICAgICBBZGRlZCB0aGUgdGVzdCB0byBjaGVjayB0
aGUgd2lkdGggb2YgaW5wdXRbdHlwZT1udW1iZXJdLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjA2NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZm9ybXMvaW5wdXQtbnVtYmVyLXNpemUtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL2lucHV0LW51bWJlci1zaXpl
Lmh0bWw6IEFkZGVkLgorCiAyMDExLTA4LTA3ICBCYWxhenMgS2VsZW1lbiAgPGtiYWxhenNAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBbUXRdIHN2Zy96b29tL3BhZ2Uvem9vbS1zdmctdGhyb3VnaC0q
IHJlc3VsdHMgZGl2ZXJnaW5nIGJldHdlZW4gYm90cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy9pbnB1dC1udW1iZXItc2l6ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL2lucHV0LW51bWJlci1zaXplLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MGFi
YjIwNjg0Zjc3NDMzOGI1NTM4NTEyOThkM2IxYjBhMDZiMGIwCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1udW1iZXItc2l6ZS1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSw4NCBAQAorVGVzdCBmb3Igc2l6ZSBhdHRyaWJ1dGUgb2YgaW5wdXQKKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgc3BpbkJ1dHRvbldpZHRoIGlzID49IDEKK1Ro
ZSBjb250ZW50IGFyZWEgb2YgdGhlIG51bWJlciBpbnB1dCB3aXRob3V0IG1pbi9tYXgvc3RlcCBh
dHRyaWJ1dGUgc2hvdWxkIGhhdmUgdGhlIHNhbWUgd2lkdGggYXMgdGV4dCBpbnB1dAorUEFTUyBu
dW1iZXIub2Zmc2V0V2lkdGggaXMgdGV4dC5vZmZzZXRXaWR0aAorCitUaGUgbnVtYmVyIHdob3Nl
IHdpZHRoIGlzIHNwZWNpZmllZCBzaG91bGQgcmVzcGVjdCB0aGUgc2V0dGluZworUEFTUyBudW1i
ZXJXaXRoV2lkdGgub2Zmc2V0V2lkdGggaXMgMTAwCitQQVNTIG51bWJlcldpdGhXaWR0aC5taW4g
PSAwOyBudW1iZXJXaXRoV2lkdGgubWF4ID0gMTAwOyBudW1iZXJXaXRoV2lkdGgub2Zmc2V0V2lk
dGggaXMgMTAwCisKK1RoZSBudW1iZXIgaW5wdXQgc2hvdWxkIGlnbm9yZSBzaXplIGF0dHJpYnV0
ZSBmb3IgbGF5b3V0CitQQVNTIG51bWJlci5zaXplID0gMTA7IG51bWJlci5vZmZzZXRXaWR0aCBp
cyB0ZXh0Lm9mZnNldFdpZHRoCitQQVNTIG51bWJlci5zaXplIGlzIDEwCitQQVNTIG51bWJlci5z
aXplID0gMTAwOyBudW1iZXIub2Zmc2V0V2lkdGggaXMgdGV4dC5vZmZzZXRXaWR0aAorUEFTUyBu
dW1iZXIuc2l6ZSBpcyAxMDAKKworSWYgbWluIG9yIG1heCBpcyBhYnNlbnQsIHRoZSBudW1iZXIg
aW5wdXQgaGFzIHRoZSBzYW1lIHdpZHRoIGFzIGlucHV0W3R5cGU9dGV4dF0KK1BBU1MgbnVtYmVy
V2lkdGgoMCwgbnVsbCwgbnVsbCkgaXMgdGV4dC5vZmZzZXRXaWR0aAorUEFTUyBudW1iZXJXaWR0
aChudWxsLCAxMDAsIG51bGwpIGlzIHRleHQub2Zmc2V0V2lkdGgKK1BBU1MgbnVtYmVyV2lkdGgo
bnVsbCwgbnVsbCwgMTAwKSBpcyB0ZXh0Lm9mZnNldFdpZHRoCisKK0lmIHN0ZXAgaXMgYW55LCB0
aGUgaW5wdXRbdHlwZT10ZXh0XSBoYXMgdGhlIHNhbWUgd2lkdGggYXMgaW5wdXRbdHlwZT10ZXh0
XQorUEFTUyBudW1iZXJXaWR0aCgwLCAxLCAiYW55IikgaXMgdGV4dC5vZmZzZXRXaWR0aAorUEFT
UyBudW1iZXJXaWR0aCgwLCAxMCwgImFueSIpIGlzIHRleHQub2Zmc2V0V2lkdGgKK1BBU1MgbnVt
YmVyV2lkdGgoMCwgMS4xLCAiYW55IikgaXMgdGV4dC5vZmZzZXRXaWR0aAorCitUaGUgY2FzZSB0
aGUgaW5uZXIgc3BpbiBidXR0b24gaGFzIGJvcmRlciBvciBwYWRkaW5nLgorUEFTUyBudW1iZXJX
aWR0aCgwLCAxMCwgMSwgIndpdGgtYm9yZGVyIikgaXMgdGV4dFdpZHRoUGx1c1NwaW5CdXR0b25X
aWR0aCgyKSArIGJvcmRlcldpZHRoCitQQVNTIG51bWJlcldpZHRoKDAsIDEwLCAxLCAid2l0aC1w
YWRkaW5nIikgaXMgdGV4dFdpZHRoUGx1c1NwaW5CdXR0b25XaWR0aCgyKSArIHBhZGRpbmdXaWR0
aAorUEFTUyBudW1iZXJXaWR0aCgwLCAxMCwgMSwgIndpdGgtbWFyZ2luIikgaXMgdGV4dFdpZHRo
UGx1c1NwaW5CdXR0b25XaWR0aCgyKQorUEFTUyBudW1iZXJXaWR0aCgwLCAxMCwgMSwgIndpdGgt
Ym9yZGVyIHdpdGgtcGFkZGluZyIpIGlzIHRleHRXaWR0aFBsdXNTcGluQnV0dG9uV2lkdGgoMikg
KyBib3JkZXJXaWR0aCArIHBhZGRpbmdXaWR0aAorCitUaGUgZGVmYXVsdCBzdGVwIGRvZXMgbm90
IG5lZWQgdG8gYmUgY29uc2lkZXJlZC4KK1BBU1MgbnVtYmVyV2lkdGgoMCwgMSwgbnVsbCkgaXMg
dGV4dFdpZHRoUGx1c1NwaW5CdXR0b25XaWR0aCgxKQorUEFTUyBudW1iZXJXaWR0aCgwLCAxMDAs
IG51bGwpIGlzIHRleHRXaWR0aFBsdXNTcGluQnV0dG9uV2lkdGgoMykKK1BBU1MgbnVtYmVyV2lk
dGgoLTEwMCwgMSwgbnVsbCkgaXMgdGV4dFdpZHRoUGx1c1NwaW5CdXR0b25XaWR0aCg0KQorUEFT
UyBudW1iZXJXaWR0aCgwLjAsIDEuMCwgbnVsbCkgaXMgdGV4dFdpZHRoUGx1c1NwaW5CdXR0b25X
aWR0aCgxKQorUEFTUyBudW1iZXJXaWR0aCgwLjUsIDEuNSwgbnVsbCkgaXMgdGV4dFdpZHRoUGx1
c1NwaW5CdXR0b25XaWR0aCgzKQorUEFTUyBudW1iZXJXaWR0aCgtMC41LCAxLjUsIG51bGwpIGlz
IHRleHRXaWR0aFBsdXNTcGluQnV0dG9uV2lkdGgoNCkKK1BBU1MgbnVtYmVyV2lkdGgoMWUrMTAs
IDFlKzEwICsgMSwgbnVsbCkgaXMgdGV4dFdpZHRoUGx1c1NwaW5CdXR0b25XaWR0aCgxMSkKK1BB
U1MgbnVtYmVyV2lkdGgoLTFlKzEwLCAxZSsxMCArIDEsIG51bGwpIGlzIHRleHRXaWR0aFBsdXNT
cGluQnV0dG9uV2lkdGgoMTIpCisKK0NoZWNrIHRoZSB3aWR0aCBvZiBhIG51bWJlciBpbnB1dCB3
aGVuIG1pbi9tYXgvc3RlcCBpcyBjaGFuZ2VkIHZhcmlvdXNseQorUEFTUyBudW1iZXJXaWR0aCgw
LCAxLCAxKSBpcyB0ZXh0V2lkdGhQbHVzU3BpbkJ1dHRvbldpZHRoKDEpCitQQVNTIG51bWJlcldp
ZHRoKDAsIDEwLCAxKSBpcyB0ZXh0V2lkdGhQbHVzU3BpbkJ1dHRvbldpZHRoKDIpCitQQVNTIG51
bWJlcldpZHRoKDAsIDEwMCwgMSkgaXMgdGV4dFdpZHRoUGx1c1NwaW5CdXR0b25XaWR0aCgzKQor
UEFTUyBudW1iZXJXaWR0aCgwLCAxMDAwLCAxKSBpcyB0ZXh0V2lkdGhQbHVzU3BpbkJ1dHRvbldp
ZHRoKDQpCitQQVNTIG51bWJlcldpZHRoKDAsIDEwMDAwLCAxKSBpcyB0ZXh0V2lkdGhQbHVzU3Bp
bkJ1dHRvbldpZHRoKDUpCitQQVNTIG51bWJlcldpZHRoKDAsIDEwMDAwMCwgMSkgaXMgdGV4dFdp
ZHRoUGx1c1NwaW5CdXR0b25XaWR0aCg2KQorUEFTUyBudW1iZXJXaWR0aCgwLCAxMDAwMDAwLCAx
KSBpcyB0ZXh0V2lkdGhQbHVzU3BpbkJ1dHRvbldpZHRoKDcpCitQQVNTIG51bWJlcldpZHRoKDAs
IDEwMDAwMDAwLCAxKSBpcyB0ZXh0V2lkdGhQbHVzU3BpbkJ1dHRvbldpZHRoKDgpCitQQVNTIG51
bWJlcldpZHRoKDAsIDEwMDAwMDAwMCwgMSkgaXMgdGV4dFdpZHRoUGx1c1NwaW5CdXR0b25XaWR0
aCg5KQorUEFTUyBudW1iZXJXaWR0aCgwLCAxMDAwMDAwMDAwLCAxKSBpcyB0ZXh0V2lkdGhQbHVz
U3BpbkJ1dHRvbldpZHRoKDEwKQorUEFTUyBudW1iZXJXaWR0aCgtMSwgMCwgMSkgaXMgdGV4dFdp
ZHRoUGx1c1NwaW5CdXR0b25XaWR0aCgyKQorUEFTUyBudW1iZXJXaWR0aCgtMTAsIDAsIDEpIGlz
IHRleHRXaWR0aFBsdXNTcGluQnV0dG9uV2lkdGgoMykKK1BBU1MgbnVtYmVyV2lkdGgoLTEwMCwg
MCwgMSkgaXMgdGV4dFdpZHRoUGx1c1NwaW5CdXR0b25XaWR0aCg0KQorUEFTUyBudW1iZXJXaWR0
aCgtMTAwMCwgMCwgMSkgaXMgdGV4dFdpZHRoUGx1c1NwaW5CdXR0b25XaWR0aCg1KQorUEFTUyBu
dW1iZXJXaWR0aCgtMTAwMDAsIDAsIDEpIGlzIHRleHRXaWR0aFBsdXNTcGluQnV0dG9uV2lkdGgo
NikKK1BBU1MgbnVtYmVyV2lkdGgoLTEwMDAwMCwgMCwgMSkgaXMgdGV4dFdpZHRoUGx1c1NwaW5C
dXR0b25XaWR0aCg3KQorUEFTUyBudW1iZXJXaWR0aCgtMTAwMDAwMCwgMCwgMSkgaXMgdGV4dFdp
ZHRoUGx1c1NwaW5CdXR0b25XaWR0aCg4KQorUEFTUyBudW1iZXJXaWR0aCgtMTAwMDAwMDAsIDAs
IDEpIGlzIHRleHRXaWR0aFBsdXNTcGluQnV0dG9uV2lkdGgoOSkKK1BBU1MgbnVtYmVyV2lkdGgo
LTEwMDAwMDAwMCwgMCwgMSkgaXMgdGV4dFdpZHRoUGx1c1NwaW5CdXR0b25XaWR0aCgxMCkKK1BB
U1MgbnVtYmVyV2lkdGgoLTEwMDAwMDAwMDAsIDAsIDEpIGlzIHRleHRXaWR0aFBsdXNTcGluQnV0
dG9uV2lkdGgoMTEpCitQQVNTIG51bWJlcldpZHRoKDAsIDEsIDAuNSkgaXMgdGV4dFdpZHRoUGx1
c1NwaW5CdXR0b25XaWR0aCgzKQorUEFTUyBudW1iZXJXaWR0aCgwLCAxLCAwLjA1KSBpcyB0ZXh0
V2lkdGhQbHVzU3BpbkJ1dHRvbldpZHRoKDQpCitQQVNTIG51bWJlcldpZHRoKDAsIDEsIDAuMDA1
KSBpcyB0ZXh0V2lkdGhQbHVzU3BpbkJ1dHRvbldpZHRoKDUpCitQQVNTIG51bWJlcldpZHRoKDAs
IDEsIDAuMDAwNSkgaXMgdGV4dFdpZHRoUGx1c1NwaW5CdXR0b25XaWR0aCg2KQorUEFTUyBudW1i
ZXJXaWR0aCgwLCAxLCAwLjAwMDA1KSBpcyB0ZXh0V2lkdGhQbHVzU3BpbkJ1dHRvbldpZHRoKDcp
CitQQVNTIG51bWJlcldpZHRoKDAsIDEsIDAuMDAwMDA1KSBpcyB0ZXh0V2lkdGhQbHVzU3BpbkJ1
dHRvbldpZHRoKDgpCitQQVNTIG51bWJlcldpZHRoKDAsIDEsIDAuMDAwMDAwNSkgaXMgdGV4dFdp
ZHRoUGx1c1NwaW5CdXR0b25XaWR0aCg5KQorUEFTUyBudW1iZXJXaWR0aCgwLjUsIDEsIDEpIGlz
IHRleHRXaWR0aFBsdXNTcGluQnV0dG9uV2lkdGgoMykKK1BBU1MgbnVtYmVyV2lkdGgoMC4wNSwg
MSwgMSkgaXMgdGV4dFdpZHRoUGx1c1NwaW5CdXR0b25XaWR0aCg0KQorUEFTUyBudW1iZXJXaWR0
aCgwLjAwNSwgMSwgMSkgaXMgdGV4dFdpZHRoUGx1c1NwaW5CdXR0b25XaWR0aCg1KQorUEFTUyBu
dW1iZXJXaWR0aCgxLjUsIDIsIDEpIGlzIHRleHRXaWR0aFBsdXNTcGluQnV0dG9uV2lkdGgoMykK
K1BBU1MgbnVtYmVyV2lkdGgoMS4wNSwgMiwgMSkgaXMgdGV4dFdpZHRoUGx1c1NwaW5CdXR0b25X
aWR0aCg0KQorUEFTUyBudW1iZXJXaWR0aCgxLjAwNSwgMiwgMSkgaXMgdGV4dFdpZHRoUGx1c1Nw
aW5CdXR0b25XaWR0aCg1KQorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1u
dW1iZXItc2l6ZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1udW1iZXItc2l6
ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjdiNTUyMDNiN2NmYTNhZDQ4MDJjZWFmYzYwMTkxMzFmYWZiNGZk
OTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lucHV0LW51bWJl
ci1zaXplLmh0bWwKQEAgLTAsMCArMSwxNjEgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8v
SUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c3R5bGU+CisKK2lucHV0LndpdGgtYm9yZGVyOjotd2Via2l0LWlubmVyLXNwaW4tYnV0
dG9uIHsKKyAgICAgYm9yZGVyOiAxMHB4IHNvbGlkOworfQoraW5wdXQud2l0aC1wYWRkaW5nOjot
d2Via2l0LWlubmVyLXNwaW4tYnV0dG9uIHsKKyAgICAgcGFkZGluZzogMCA4cHggMCA4cHg7Cit9
CitpbnB1dC53aXRoLW1hcmdpbjo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbiB7CisgICAgIG1h
cmdpbjogMCAxMHB4IDAgMTBweDsKK30KKworaW5wdXQjbnVtYmVyLXdpdGhvdXQtc3BpbmJ1dHRv
bjo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbiB7CisgICAgIGRpc3BsYXk6IG5vbmU7CisgICAg
IG1hcmdpbjogMDsKK30KK2lucHV0I251bWJlci13aXRoLXdpZHRoIHsKKyAgICAgd2lkdGg6IDEw
MHB4OworfQorCis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24i
PjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8c2NyaXB0PgorZGVzY3JpcHRpb24o
J1Rlc3QgZm9yIHNpemUgYXR0cmlidXRlIG9mIGlucHV0Jyk7CisKK3ZhciBwYXJlbnQgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKK2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQocGFy
ZW50KTsKK3BhcmVudC5pbm5lckhUTUwgPSAnPGlucHV0IHR5cGU9dGV4dCBpZD10ZXh0PicKKyAg
KyAnPGlucHV0IHR5cGU9Im51bWJlciIgaWQ9bnVtYmVyPicKKyAgKyAnPGlucHV0IHR5cGU9Im51
bWJlciIgaWQ9Im51bWJlci13aXRob3V0LXNwaW5idXR0b24iIG1pbj0iMCIgbWF4PSIxMCIgc3Rl
cD0iMSI+JworICArICc8aW5wdXQgdHlwZT0ibnVtYmVyIiBpZD0ibnVtYmVyLXdpdGgtc3BpbmJ1
dHRvbiIgbWluPSIwIiBtYXg9IjEwIiBzdGVwPSIxIj4nCisgICsgJzxpbnB1dCB0eXBlPSJudW1i
ZXIiIGlkPSJudW1iZXItd2l0aC13aWR0aCI+JwordmFyIG51bWJlciA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdudW1iZXInKTsKK3ZhciBudW1iZXJXaXRob3V0U3BpbkJ1dHRvbiA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdudW1iZXItd2l0aG91dC1zcGluYnV0dG9uJyk7Cit2YXIgbnVt
YmVyV2l0aFNwaW5CdXR0b24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbnVtYmVyLXdpdGgt
c3BpbmJ1dHRvbicpOwordmFyIG51bWJlcldpdGhXaWR0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdudW1iZXItd2l0aC13aWR0aCcpOwordmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgndGV4dCcpOworCisvLyBUaGUgd2lkdGggb2Ygc3BpbiBidXR0b24gc2hvdWxkIGRpZmZl
ciBieSBlbnZpcm9ubWVudC4gU28gaXQgc2hvdWxkIGJlIGNhbGN1bGF0ZWQgaGVyZS4KK3ZhciBz
cGluQnV0dG9uV2lkdGggPSBudW1iZXJXaXRoU3BpbkJ1dHRvbi5vZmZzZXRXaWR0aCAtIG51bWJl
cldpdGhvdXRTcGluQnV0dG9uLm9mZnNldFdpZHRoOworLy8gc3BpbkJ1dHRvbldpZHRoIHNob3Vs
ZCBoYXZlIG1lbmFuaW5nZnVsIHdpZHRoLgorc2hvdWxkQmVHcmVhdGVyVGhhbk9yRXF1YWwoJ3Nw
aW5CdXR0b25XaWR0aCcsICcxJyk7CisKK2RlYnVnKCdUaGUgY29udGVudCBhcmVhIG9mIHRoZSBu
dW1iZXIgaW5wdXQgd2l0aG91dCBtaW4vbWF4L3N0ZXAgYXR0cmlidXRlIHNob3VsZCBoYXZlIHRo
ZSBzYW1lIHdpZHRoIGFzIHRleHQgaW5wdXQnKTsKK3Nob3VsZEJlKCdudW1iZXIub2Zmc2V0V2lk
dGgnLCAndGV4dC5vZmZzZXRXaWR0aCcpOworZGVidWcoJycpOworCitkZWJ1ZygnVGhlIG51bWJl
ciB3aG9zZSB3aWR0aCBpcyBzcGVjaWZpZWQgc2hvdWxkIHJlc3BlY3QgdGhlIHNldHRpbmcnKTsK
K3Nob3VsZEJlKCdudW1iZXJXaXRoV2lkdGgub2Zmc2V0V2lkdGgnLCAnMTAwJyk7CitzaG91bGRC
ZSgnbnVtYmVyV2l0aFdpZHRoLm1pbiA9IDA7IG51bWJlcldpdGhXaWR0aC5tYXggPSAxMDA7IG51
bWJlcldpdGhXaWR0aC5vZmZzZXRXaWR0aCcsICcxMDAnKTsKK2RlYnVnKCcnKTsKKworZGVidWco
J1RoZSBudW1iZXIgaW5wdXQgc2hvdWxkIGlnbm9yZSBzaXplIGF0dHJpYnV0ZSBmb3IgbGF5b3V0
Jyk7CitzaG91bGRCZSgnbnVtYmVyLnNpemUgPSAxMDsgbnVtYmVyLm9mZnNldFdpZHRoJywgJ3Rl
eHQub2Zmc2V0V2lkdGgnKTsKK3Nob3VsZEJlKCdudW1iZXIuc2l6ZScsICcxMCcpOworc2hvdWxk
QmUoJ251bWJlci5zaXplID0gMTAwOyBudW1iZXIub2Zmc2V0V2lkdGgnLCAndGV4dC5vZmZzZXRX
aWR0aCcpOworc2hvdWxkQmUoJ251bWJlci5zaXplJywgJzEwMCcpOworbnVtYmVyLnNpemUgPSBu
dWxsOworZGVidWcoJycpOworCitmdW5jdGlvbiBudW1iZXJXaWR0aChtaW4sIG1heCwgc3RlcCwg
Y2xhc3NOYW1lKSB7CisgICAgbnVtYmVyLmNsYXNzTmFtZSA9IGNsYXNzTmFtZTsKKyAgICBudW1i
ZXIuc3RlcCA9IHN0ZXA7CisgICAgbnVtYmVyLm1pbiA9IG1pbjsKKyAgICBudW1iZXIubWF4ID0g
bWF4OworICAgIHJldHVybiBudW1iZXIub2Zmc2V0V2lkdGg7Cit9CisKK2Z1bmN0aW9uIHRleHRX
aWR0aFBsdXNTcGluQnV0dG9uV2lkdGgoc2l6ZSkgeworICAgIHRleHQuc2l6ZSA9IHNpemU7Cisg
ICAgcmV0dXJuIHRleHQub2Zmc2V0V2lkdGggKyBzcGluQnV0dG9uV2lkdGg7Cit9CisKK2RlYnVn
KCdJZiBtaW4gb3IgbWF4IGlzIGFic2VudCwgdGhlIG51bWJlciBpbnB1dCBoYXMgdGhlIHNhbWUg
d2lkdGggYXMgaW5wdXRbdHlwZT10ZXh0XScpCitzaG91bGRCZSgnbnVtYmVyV2lkdGgoMCwgbnVs
bCwgbnVsbCknLCAndGV4dC5vZmZzZXRXaWR0aCcpOworc2hvdWxkQmUoJ251bWJlcldpZHRoKG51
bGwsIDEwMCwgbnVsbCknLCAndGV4dC5vZmZzZXRXaWR0aCcpOworc2hvdWxkQmUoJ251bWJlcldp
ZHRoKG51bGwsIG51bGwsIDEwMCknLCAndGV4dC5vZmZzZXRXaWR0aCcpOworZGVidWcoJycpOwor
CitkZWJ1ZygnSWYgc3RlcCBpcyBhbnksIHRoZSBpbnB1dFt0eXBlPXRleHRdIGhhcyB0aGUgc2Ft
ZSB3aWR0aCBhcyBpbnB1dFt0eXBlPXRleHRdJykKK3Nob3VsZEJlKCdudW1iZXJXaWR0aCgwLCAx
LCAiYW55IiknLCAndGV4dC5vZmZzZXRXaWR0aCcpOworc2hvdWxkQmUoJ251bWJlcldpZHRoKDAs
IDEwLCAiYW55IiknLCAndGV4dC5vZmZzZXRXaWR0aCcpOworc2hvdWxkQmUoJ251bWJlcldpZHRo
KDAsIDEuMSwgImFueSIpJywgJ3RleHQub2Zmc2V0V2lkdGgnKTsKK2RlYnVnKCcnKTsKKworZGVi
dWcoJ1RoZSBjYXNlIHRoZSBpbm5lciBzcGluIGJ1dHRvbiBoYXMgYm9yZGVyIG9yIHBhZGRpbmcu
Jyk7Cit2YXIgYm9yZGVyV2lkdGggPSAyMDsKK3ZhciBwYWRkaW5nV2lkdGggPSAxNjsKK3Nob3Vs
ZEJlKCdudW1iZXJXaWR0aCgwLCAxMCwgMSwgIndpdGgtYm9yZGVyIiknLCAndGV4dFdpZHRoUGx1
c1NwaW5CdXR0b25XaWR0aCgyKSArIGJvcmRlcldpZHRoJyk7CitzaG91bGRCZSgnbnVtYmVyV2lk
dGgoMCwgMTAsIDEsICJ3aXRoLXBhZGRpbmciKScsICd0ZXh0V2lkdGhQbHVzU3BpbkJ1dHRvbldp
ZHRoKDIpICsgcGFkZGluZ1dpZHRoJyk7CitzaG91bGRCZSgnbnVtYmVyV2lkdGgoMCwgMTAsIDEs
ICJ3aXRoLW1hcmdpbiIpJywgJ3RleHRXaWR0aFBsdXNTcGluQnV0dG9uV2lkdGgoMiknKTsKK3No
b3VsZEJlKCdudW1iZXJXaWR0aCgwLCAxMCwgMSwgIndpdGgtYm9yZGVyIHdpdGgtcGFkZGluZyIp
JywgJ3RleHRXaWR0aFBsdXNTcGluQnV0dG9uV2lkdGgoMikgKyBib3JkZXJXaWR0aCArIHBhZGRp
bmdXaWR0aCcpOworZGVidWcoJycpOworCitkZWJ1ZygnVGhlIGRlZmF1bHQgc3RlcCBkb2VzIG5v
dCBuZWVkIHRvIGJlIGNvbnNpZGVyZWQuJykKK3Nob3VsZEJlKCdudW1iZXJXaWR0aCgwLCAxLCBu
dWxsKScsICd0ZXh0V2lkdGhQbHVzU3BpbkJ1dHRvbldpZHRoKDEpJyk7CitzaG91bGRCZSgnbnVt
YmVyV2lkdGgoMCwgMTAwLCBudWxsKScsICd0ZXh0V2lkdGhQbHVzU3BpbkJ1dHRvbldpZHRoKDMp
Jyk7CitzaG91bGRCZSgnbnVtYmVyV2lkdGgoLTEwMCwgMSwgbnVsbCknLCAndGV4dFdpZHRoUGx1
c1NwaW5CdXR0b25XaWR0aCg0KScpOworc2hvdWxkQmUoJ251bWJlcldpZHRoKDAuMCwgMS4wLCBu
dWxsKScsICd0ZXh0V2lkdGhQbHVzU3BpbkJ1dHRvbldpZHRoKDEpJyk7CitzaG91bGRCZSgnbnVt
YmVyV2lkdGgoMC41LCAxLjUsIG51bGwpJywgJ3RleHRXaWR0aFBsdXNTcGluQnV0dG9uV2lkdGgo
MyknKTsKK3Nob3VsZEJlKCdudW1iZXJXaWR0aCgtMC41LCAxLjUsIG51bGwpJywgJ3RleHRXaWR0
aFBsdXNTcGluQnV0dG9uV2lkdGgoNCknKTsKK3Nob3VsZEJlKCdudW1iZXJXaWR0aCgxZSsxMCwg
MWUrMTAgKyAxLCBudWxsKScsICd0ZXh0V2lkdGhQbHVzU3BpbkJ1dHRvbldpZHRoKDExKScpOwor
c2hvdWxkQmUoJ251bWJlcldpZHRoKC0xZSsxMCwgMWUrMTAgKyAxLCBudWxsKScsICd0ZXh0V2lk
dGhQbHVzU3BpbkJ1dHRvbldpZHRoKDEyKScpOworZGVidWcoJycpOworCitkZWJ1ZygnQ2hlY2sg
dGhlIHdpZHRoIG9mIGEgbnVtYmVyIGlucHV0IHdoZW4gbWluL21heC9zdGVwIGlzIGNoYW5nZWQg
dmFyaW91c2x5JykKK3Nob3VsZEJlKCdudW1iZXJXaWR0aCgwLCAxLCAxKScsICd0ZXh0V2lkdGhQ
bHVzU3BpbkJ1dHRvbldpZHRoKDEpJyk7CitzaG91bGRCZSgnbnVtYmVyV2lkdGgoMCwgMTAsIDEp
JywgJ3RleHRXaWR0aFBsdXNTcGluQnV0dG9uV2lkdGgoMiknKTsKK3Nob3VsZEJlKCdudW1iZXJX
aWR0aCgwLCAxMDAsIDEpJywgJ3RleHRXaWR0aFBsdXNTcGluQnV0dG9uV2lkdGgoMyknKTsKK3No
b3VsZEJlKCdudW1iZXJXaWR0aCgwLCAxMDAwLCAxKScsICd0ZXh0V2lkdGhQbHVzU3BpbkJ1dHRv
bldpZHRoKDQpJyk7CitzaG91bGRCZSgnbnVtYmVyV2lkdGgoMCwgMTAwMDAsIDEpJywgJ3RleHRX
aWR0aFBsdXNTcGluQnV0dG9uV2lkdGgoNSknKTsKK3Nob3VsZEJlKCdudW1iZXJXaWR0aCgwLCAx
MDAwMDAsIDEpJywgJ3RleHRXaWR0aFBsdXNTcGluQnV0dG9uV2lkdGgoNiknKTsKK3Nob3VsZEJl
KCdudW1iZXJXaWR0aCgwLCAxMDAwMDAwLCAxKScsICd0ZXh0V2lkdGhQbHVzU3BpbkJ1dHRvbldp
ZHRoKDcpJyk7CitzaG91bGRCZSgnbnVtYmVyV2lkdGgoMCwgMTAwMDAwMDAsIDEpJywgJ3RleHRX
aWR0aFBsdXNTcGluQnV0dG9uV2lkdGgoOCknKTsKK3Nob3VsZEJlKCdudW1iZXJXaWR0aCgwLCAx
MDAwMDAwMDAsIDEpJywgJ3RleHRXaWR0aFBsdXNTcGluQnV0dG9uV2lkdGgoOSknKTsKK3Nob3Vs
ZEJlKCdudW1iZXJXaWR0aCgwLCAxMDAwMDAwMDAwLCAxKScsICd0ZXh0V2lkdGhQbHVzU3BpbkJ1
dHRvbldpZHRoKDEwKScpOworCitzaG91bGRCZSgnbnVtYmVyV2lkdGgoLTEsIDAsIDEpJywgJ3Rl
eHRXaWR0aFBsdXNTcGluQnV0dG9uV2lkdGgoMiknKTsKK3Nob3VsZEJlKCdudW1iZXJXaWR0aCgt
MTAsIDAsIDEpJywgJ3RleHRXaWR0aFBsdXNTcGluQnV0dG9uV2lkdGgoMyknKTsKK3Nob3VsZEJl
KCdudW1iZXJXaWR0aCgtMTAwLCAwLCAxKScsICd0ZXh0V2lkdGhQbHVzU3BpbkJ1dHRvbldpZHRo
KDQpJyk7CitzaG91bGRCZSgnbnVtYmVyV2lkdGgoLTEwMDAsIDAsIDEpJywgJ3RleHRXaWR0aFBs
dXNTcGluQnV0dG9uV2lkdGgoNSknKTsKK3Nob3VsZEJlKCdudW1iZXJXaWR0aCgtMTAwMDAsIDAs
IDEpJywgJ3RleHRXaWR0aFBsdXNTcGluQnV0dG9uV2lkdGgoNiknKTsKK3Nob3VsZEJlKCdudW1i
ZXJXaWR0aCgtMTAwMDAwLCAwLCAxKScsICd0ZXh0V2lkdGhQbHVzU3BpbkJ1dHRvbldpZHRoKDcp
Jyk7CitzaG91bGRCZSgnbnVtYmVyV2lkdGgoLTEwMDAwMDAsIDAsIDEpJywgJ3RleHRXaWR0aFBs
dXNTcGluQnV0dG9uV2lkdGgoOCknKTsKK3Nob3VsZEJlKCdudW1iZXJXaWR0aCgtMTAwMDAwMDAs
IDAsIDEpJywgJ3RleHRXaWR0aFBsdXNTcGluQnV0dG9uV2lkdGgoOSknKTsKK3Nob3VsZEJlKCdu
dW1iZXJXaWR0aCgtMTAwMDAwMDAwLCAwLCAxKScsICd0ZXh0V2lkdGhQbHVzU3BpbkJ1dHRvbldp
ZHRoKDEwKScpOworc2hvdWxkQmUoJ251bWJlcldpZHRoKC0xMDAwMDAwMDAwLCAwLCAxKScsICd0
ZXh0V2lkdGhQbHVzU3BpbkJ1dHRvbldpZHRoKDExKScpOworCitzaG91bGRCZSgnbnVtYmVyV2lk
dGgoMCwgMSwgMC41KScsICd0ZXh0V2lkdGhQbHVzU3BpbkJ1dHRvbldpZHRoKDMpJyk7CitzaG91
bGRCZSgnbnVtYmVyV2lkdGgoMCwgMSwgMC4wNSknLCAndGV4dFdpZHRoUGx1c1NwaW5CdXR0b25X
aWR0aCg0KScpOworc2hvdWxkQmUoJ251bWJlcldpZHRoKDAsIDEsIDAuMDA1KScsICd0ZXh0V2lk
dGhQbHVzU3BpbkJ1dHRvbldpZHRoKDUpJyk7CitzaG91bGRCZSgnbnVtYmVyV2lkdGgoMCwgMSwg
MC4wMDA1KScsICd0ZXh0V2lkdGhQbHVzU3BpbkJ1dHRvbldpZHRoKDYpJyk7CitzaG91bGRCZSgn
bnVtYmVyV2lkdGgoMCwgMSwgMC4wMDAwNSknLCAndGV4dFdpZHRoUGx1c1NwaW5CdXR0b25XaWR0
aCg3KScpOworc2hvdWxkQmUoJ251bWJlcldpZHRoKDAsIDEsIDAuMDAwMDA1KScsICd0ZXh0V2lk
dGhQbHVzU3BpbkJ1dHRvbldpZHRoKDgpJyk7CitzaG91bGRCZSgnbnVtYmVyV2lkdGgoMCwgMSwg
MC4wMDAwMDA1KScsICd0ZXh0V2lkdGhQbHVzU3BpbkJ1dHRvbldpZHRoKDkpJyk7CisKK3Nob3Vs
ZEJlKCdudW1iZXJXaWR0aCgwLjUsIDEsIDEpJywgJ3RleHRXaWR0aFBsdXNTcGluQnV0dG9uV2lk
dGgoMyknKTsKK3Nob3VsZEJlKCdudW1iZXJXaWR0aCgwLjA1LCAxLCAxKScsICd0ZXh0V2lkdGhQ
bHVzU3BpbkJ1dHRvbldpZHRoKDQpJyk7CitzaG91bGRCZSgnbnVtYmVyV2lkdGgoMC4wMDUsIDEs
IDEpJywgJ3RleHRXaWR0aFBsdXNTcGluQnV0dG9uV2lkdGgoNSknKTsKK3Nob3VsZEJlKCdudW1i
ZXJXaWR0aCgxLjUsIDIsIDEpJywgJ3RleHRXaWR0aFBsdXNTcGluQnV0dG9uV2lkdGgoMyknKTsK
K3Nob3VsZEJlKCdudW1iZXJXaWR0aCgxLjA1LCAyLCAxKScsICd0ZXh0V2lkdGhQbHVzU3BpbkJ1
dHRvbldpZHRoKDQpJyk7CitzaG91bGRCZSgnbnVtYmVyV2lkdGgoMS4wMDUsIDIsIDEpJywgJ3Rl
eHRXaWR0aFBsdXNTcGluQnV0dG9uV2lkdGgoNSknKTsKKworZGVidWcoJycpCisKK3ZhciBzdWNj
ZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+CisKKworPHNjcmlwdCBzcmM9Ii4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKaW5kZXggN2NlNDQ1MjhmNGZmMDgwODY5MTQ4MmQ1M2NiNDAxMGEyZTAw
NjI4My4uNTllY2UxYjNmY2I1ZmRkNWMzZDEzZjE2OGY2MGI1MTJmMDE3N2JjNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDQ3IEBACisyMDExLTA4LTA3ICBTaGlueWEgS2F3YW5ha2EgIDxzaGlueWFr
QGdvb2dsZS5jb20+CisKKyAgICAgICAgVGhlIGlucHV0W3R5cGU9bnVtYmVyXSBlbGVtZW50IHNo
b3VsZCBiZSBhcyB3aWRlIGFzIG5lY2Vzc2FyeSB0byBzaG93IHRoZSB3aWRlc3QgcG9zc2libGUg
dmFsdWUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
MDY3MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
ZSBzaXplIG9mIGlucHV0W3R5cGU9bnVtYmVyXSBpcyBjYWxjdWxhdGVkIGZyb20gbWluL21heC9z
dGVwIGF0dHJpYnV0ZXMgdG8gc2hvdyB0aGUgd2lkZXN0IHBvc3NpYmxlIHZhbHVlLgorICAgICAg
ICBJZiBtaW4gb3IgbWF4IGF0dHJpYnV0ZSBpcyBhYnNlbnQsIHRoZSBkZWZhdWx0IHNpemUgaXMg
dXNlZC4KKyAgICAgICAgQWxzbywgaWYgaXRzIGNzcyB3aWR0aCBpcyBub3QgYXV0bywgdGhlIHdp
ZHRoIGlzIHVzZWQgd2l0aCBwcmlvcml0eS4KKworICAgICAgICBJZiBtaW4vbWF4L2F0dHJpYnV0
ZSBpcyBzZXQgZHluYW1pY2FsbHksIHRoZSBzaXplIG9mIHRoZSBpbnB1dFt0eXBlPW51bWJlcl0g
d2lsbCBiZSByZWNhbGN1bGF0ZWQuCisKKyAgICAgICAgVGVzdDogZmFzdC9mb3Jtcy9pbnB1dC1u
dW1iZXItc2l6ZS5odG1sCisKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUp
OgorICAgICAgICAgICBBZGRlZCBzdGVwQXR0cmlidXRlQ2hhbmdlZCBoYW5kbGVyLgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6c2l6ZVNob3VsZEluY2x1ZGVEZWNvcmF0aW9u
KToKKyAgICAgICAgICAgUmV0dXJucyB0cnVlIGlmIGEgcmVuZGVyZXIgc2hvdWxkIGluY2x1ZGUg
ZGVjb3JhdGlvbiAoZS5nLiBpbm5lciBzcGluYm94KS4KKyAgICAgICAgICAgQWxzbyByZXR1cm5z
IHRoZSBwcmVmZXJyZWQgc2l6ZSBvZiB0aGUgaW5wdXQuCisgICAgICAgICogaHRtbC9IVE1MSW5w
dXRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9JbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5wdXRUeXBlOjpzaXplU2hvdWxkSW5jbHVkZURlY29yYXRpb24pOgorICAgICAgICAg
ICBTYW1lIGFzIFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnNpemVTaG91bGRJbmNsdWRlRGVj
b3JhdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6c3RlcEF0dHJpYnV0ZUNoYW5n
ZWQpOgorICAgICAgICAgICBXaWxsIGJlIGNhbGxlZCBXaGVuIHN0ZXAgYXR0cmlidXRlIGlzIGNo
YW5nZWQuCisgICAgICAgICAgIFNldHMgYSBmbGFnIHRvIHJlY2FsY3VsYXRlIGxheW91dC4KKyAg
ICAgICAgKiBodG1sL0lucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwvTnVtYmVySW5wdXRUeXBl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omxlbmd0aEJlZm9yZURlY2ltYWxQb2ludCk6CisgICAg
ICAgICAgIENhbGN1bGF0ZXMgdGhlIHdpZHRoIGJlZm9yZSB0aGUgZGVjaW1hbCBwb2ludC4KKyAg
ICAgICAgKFdlYkNvcmU6Ok51bWJlcklucHV0VHlwZTo6c2l6ZVNob3VsZEluY2x1ZGVEZWNvcmF0
aW9uKToKKyAgICAgICAgICAgU2FtZSBhcyBXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpzaXpl
U2hvdWxkSW5jbHVkZURlY29yYXRpb24uCisgICAgICAgICAgIEhvd2V2ZXIsIHRoaXMgd2lsbCBj
YWxjdWxhdGUgdGhlIHByZWZlcnJlZCBzaXplIGZyb20gbWluL21heC9zdGVwIGF0dHJpYnV0ZS4K
KyAgICAgICAgKFdlYkNvcmU6Ok51bWJlcklucHV0VHlwZTo6bWluT3JNYXhBdHRyaWJ1dGVDaGFu
Z2VkKToKKyAgICAgICAgICAgU2V0cyBhIGZsYWcgdG8gcmVjYWxjdWxhdGUgbGF5b3V0LgorICAg
ICAgICAoV2ViQ29yZTo6TnVtYmVySW5wdXRUeXBlOjpzdGVwQXR0cmlidXRlQ2hhbmdlZCk6IGRp
dHRvLgorICAgICAgICAqIGh0bWwvTnVtYmVySW5wdXRUeXBlLmg6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OnByZWZlcnJlZENvbnRlbnRXaWR0aCk6CisgICAg
ICAgICAgIFVzZXMgcHJlZmVycmVkU2l6ZSBpbnN0ZWFkIG9mIHNpemUuCisgICAgICAgICAgIEFs
c28sIGFkZHMgaW5uZXJTcGluQnV0dG9uRWxlbWVudCBzaXplIHRvIHdpZHRoIGlmIHNpemVTaG91
bGRJbmNsdWRlRGVjb3JhdGlvbiByZXR1cm5zIHRydWUuCisKIDIwMTEtMDgtMDcgIE1hcnRpbiBS
b2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIERpc3RyaWJ1dGlvbiBm
aXggZm9yIEdUSysuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRl
eCBiNjgzZDQzZWFhZmUwMDliOTMxYmNhMzVlMDVjMWQ3ZGRlZTk1YjVlLi45OWQzMjAwOGExYmUz
NThlMGQwM2FlNDVkNGE2NDgxNDM4NzNhYjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElu
cHV0RWxlbWVudC5jcHAKQEAgLTUwLDYgKzUwLDcgQEAKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50
LmgiCiAjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUgIk1vdXNlRXZlbnQu
aCIKKyNpbmNsdWRlICJOdW1iZXJJbnB1dFR5cGUuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5j
bHVkZSAiUGxhdGZvcm1Nb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dENvbnRyb2xT
aW5nbGVMaW5lLmgiCkBAIC04MDQsNyArODA1LDEwIEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6
cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogICAgIH0gZWxzZSBpZiAoYXR0
ci0+bmFtZSgpID09IG11bHRpcGxlQXR0cikgewogICAgICAgICBtX2lucHV0VHlwZS0+bXVsdGlw
bGVBdHRyaWJ1dGVDaGFuZ2VkKCk7CiAgICAgICAgIHNldE5lZWRzVmFsaWRpdHlDaGVjaygpOwot
ICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IHBhdHRlcm5BdHRyIHx8IGF0dHItPm5hbWUo
KSA9PSBwcmVjaXNpb25BdHRyIHx8IGF0dHItPm5hbWUoKSA9PSBzdGVwQXR0cikKKyAgICB9IGVs
c2UgaWYgKGF0dHItPm5hbWUoKSA9PSBzdGVwQXR0cikgeworICAgICAgICBtX2lucHV0VHlwZS0+
c3RlcEF0dHJpYnV0ZUNoYW5nZWQoKTsKKyAgICAgICAgc2V0TmVlZHNWYWxpZGl0eUNoZWNrKCk7
CisgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gcGF0dGVybkF0dHIgfHwgYXR0ci0+bmFt
ZSgpID09IHByZWNpc2lvbkF0dHIpCiAgICAgICAgIHNldE5lZWRzVmFsaWRpdHlDaGVjaygpOwog
ICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBkaXNhYmxlZEF0dHIpIHsKICAgICAgICAgbV9p
bnB1dFR5cGUtPmRpc2FibGVkQXR0cmlidXRlQ2hhbmdlZCgpOwpAQCAtOTk0LDYgKzk5OCwxMSBA
QCBpbnQgSFRNTElucHV0RWxlbWVudDo6c2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc2l6ZTsK
IH0KIAorYm9vbCBIVE1MSW5wdXRFbGVtZW50OjpzaXplU2hvdWxkSW5jbHVkZURlY29yYXRpb24o
aW50JiBwcmVmZXJyZWRTaXplKSBjb25zdAoreworICAgIHJldHVybiBtX2lucHV0VHlwZS0+c2l6
ZVNob3VsZEluY2x1ZGVEZWNvcmF0aW9uKGRlZmF1bHRTaXplLCBwcmVmZXJyZWRTaXplKTsKK30K
Kwogdm9pZCBIVE1MSW5wdXRFbGVtZW50Ojpjb3B5Tm9uQXR0cmlidXRlUHJvcGVydGllcyhjb25z
dCBFbGVtZW50KiBzb3VyY2UpCiB7CiAgICAgY29uc3QgSFRNTElucHV0RWxlbWVudCogc291cmNl
RWxlbWVudCA9IHN0YXRpY19jYXN0PGNvbnN0IEhUTUxJbnB1dEVsZW1lbnQqPihzb3VyY2UpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAppbmRleCA5MmZhOWY1ODU3YTczYTkx
MTUwYTU1ODg4ZTg0NTkyZDM0MzFmY2VlLi5lYzRiOWM5NDJlN2Q3NjZlYjQxYTMyMDI1OGZjNDc4
ZDUzMTY2MWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaApAQCAtMTMx
LDYgKzEzMSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNJbmRldGVybWluYXRlKCkg
Y29uc3QgeyByZXR1cm4gaW5kZXRlcm1pbmF0ZSgpOyB9CiAKICAgICBpbnQgc2l6ZSgpIGNvbnN0
OworICAgIGJvb2wgc2l6ZVNob3VsZEluY2x1ZGVEZWNvcmF0aW9uKGludCYgcHJlZmVycmVkU2l6
ZSkgY29uc3Q7CiAKICAgICB2b2lkIHNldFR5cGUoY29uc3QgU3RyaW5nJik7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSW5wdXRUeXBlLmNwcAppbmRleCA2MDkyNDYwYTAwNzhmZTI1MzBkZTY0MTdjODdhMTQwMGY5
NGVmZTUwLi4zODZhYmYwODg4ZjYzZjM5MzlmNDA2OTE1MDIzODg5YTRmMTkzNGE0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9JbnB1dFR5cGUuY3BwCkBAIC0yNDksNiArMjQ5LDEyIEBAIGRvdWJsZSBJbnB1dFR5
cGU6Om1heGltdW0oKSBjb25zdAogICAgIHJldHVybiAwOwogfQogCitib29sIElucHV0VHlwZTo6
c2l6ZVNob3VsZEluY2x1ZGVEZWNvcmF0aW9uKGludCBkZWZhdWx0U2l6ZSwgaW50JiBwcmVmZXJy
ZWRTaXplKSBjb25zdAoreworICAgIHByZWZlcnJlZFNpemUgPSBlbGVtZW50KCktPnNpemUoKTsK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKIGJvb2wgSW5wdXRUeXBlOjpzdGVwTWlzbWF0Y2goY29u
c3QgU3RyaW5nJiwgZG91YmxlKSBjb25zdAogewogICAgIC8vIE5vbi1zdXBwb3J0ZWQgdHlwZXMg
c2hvdWxkIGJlIHJlamVjdGVkIGJ5IEhUTUxJbnB1dEVsZW1lbnQ6OmdldEFsbG93ZWRWYWx1ZVN0
ZXAoKS4KQEAgLTQ1Myw2ICs0NTksMTAgQEAgdm9pZCBJbnB1dFR5cGU6Om1pbk9yTWF4QXR0cmli
dXRlQ2hhbmdlZCgpCiB7CiB9CiAKK3ZvaWQgSW5wdXRUeXBlOjpzdGVwQXR0cmlidXRlQ2hhbmdl
ZCgpCit7Cit9CisKIGJvb2wgSW5wdXRUeXBlOjpjYW5CZVN1Y2Nlc3NmdWxTdWJtaXRCdXR0b24o
KQogewogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oCmluZGV4IDJkZjBl
ZjViOGY5NTg4ZDMyYWU3MmZiNjMyYzIyNGI3YmNiZjQ2NDEuLmE5YzRjMjI5MDAzYTJkZDJhOWNk
MTFiZWYxMjVkMmNiOGJiZThkZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5w
dXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaApAQCAtMTQzLDYg
KzE0Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGRvdWJsZSBkZWZhdWx0VmFsdWVGb3JTdGVw
VXAoKSBjb25zdDsKICAgICB2aXJ0dWFsIGRvdWJsZSBtaW5pbXVtKCkgY29uc3Q7CiAgICAgdmly
dHVhbCBkb3VibGUgbWF4aW11bSgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBzaXplU2hvdWxk
SW5jbHVkZURlY29yYXRpb24oaW50IGRlZmF1bHRTaXplLCBpbnQmIHByZWZlcnJlZFNpemUpIGNv
bnN0OwogICAgIHZpcnR1YWwgYm9vbCBzdGVwTWlzbWF0Y2goY29uc3QgU3RyaW5nJiwgZG91Ymxl
IHN0ZXApIGNvbnN0OwogICAgIHZpcnR1YWwgZG91YmxlIHN0ZXBCYXNlKCkgY29uc3Q7CiAgICAg
dmlydHVhbCBkb3VibGUgc3RlcEJhc2VXaXRoRGVjaW1hbFBsYWNlcyh1bnNpZ25lZCopIGNvbnN0
OwpAQCAtMjA2LDYgKzIwNyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCog
Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopIGNvbnN0OwogICAgIHZp
cnR1YWwgdm9pZCBhdHRhY2goKTsKICAgICB2aXJ0dWFsIHZvaWQgbWluT3JNYXhBdHRyaWJ1dGVD
aGFuZ2VkKCk7CisgICAgdmlydHVhbCB2b2lkIHN0ZXBBdHRyaWJ1dGVDaGFuZ2VkKCk7CiAgICAg
dmlydHVhbCB2b2lkIGFsdEF0dHJpYnV0ZUNoYW5nZWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgc3Jj
QXR0cmlidXRlQ2hhbmdlZCgpOwogICAgIHZpcnR1YWwgdm9pZCB2YWx1ZUNoYW5nZWQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTnVtYmVySW5wdXRUeXBlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvTnVtYmVySW5wdXRUeXBlLmNwcAppbmRleCBiODFlM2E0NTYyZTQ2NWMw
NTU4OWU1YWRhNzUzODRiYTU2NDIzODc4Li45NWJjY2RiZmYxMDEwMGRlZmZmMWUxYmRkNGZjYmFl
NmMzMGI5YzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL051bWJlcklucHV0VHlw
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9OdW1iZXJJbnB1dFR5cGUuY3BwCkBAIC01
Myw2ICs1MywyMSBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogc3RhdGljIGNvbnN0IGRvdWJsZSBu
dW1iZXJEZWZhdWx0U3RlcCA9IDEuMDsKIHN0YXRpYyBjb25zdCBkb3VibGUgbnVtYmVyU3RlcFNj
YWxlRmFjdG9yID0gMS4wOwogCitzdGF0aWMgdW5zaWduZWQgbGVuZ3RoQmVmb3JlRGVjaW1hbFBv
aW50KGRvdWJsZSB2YWx1ZSkKK3sKKyAgICAvLyBJZiB2YWx1ZSBpcyBuZWdhdGl2ZSwgJy0nIHNo
b3VsZCBiZSBjb3VudGVkLgorCisgICAgZG91YmxlIGFic29sdXRlVmFsdWUgPSBmYWJzKHZhbHVl
KTsKKyAgICBpZiAoYWJzb2x1dGVWYWx1ZSA8IDEpCisgICAgICAgIHJldHVybiB2YWx1ZSA8IDAg
PyAyIDogMTsKKworICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihs
b2cxMChmbG9vcihhYnNvbHV0ZVZhbHVlKSkpICsgMTsKKyAgICBpZiAodmFsdWUgPCAwKQorICAg
ICAgICBsZW5ndGggKz0gMTsKKworICAgIHJldHVybiBsZW5ndGg7Cit9CisKIFBhc3NPd25QdHI8
SW5wdXRUeXBlPiBOdW1iZXJJbnB1dFR5cGU6OmNyZWF0ZShIVE1MSW5wdXRFbGVtZW50KiBlbGVt
ZW50KQogewogICAgIHJldHVybiBhZG9wdFB0cihuZXcgTnVtYmVySW5wdXRUeXBlKGVsZW1lbnQp
KTsKQEAgLTEyMSw2ICsxMzYsNTMgQEAgZG91YmxlIE51bWJlcklucHV0VHlwZTo6bWF4aW11bSgp
IGNvbnN0CiAgICAgcmV0dXJuIHBhcnNlVG9Eb3VibGUoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmli
dXRlKG1heEF0dHIpLCBudW1lcmljX2xpbWl0czxmbG9hdD46Om1heCgpKTsKIH0KIAorYm9vbCBO
dW1iZXJJbnB1dFR5cGU6OnNpemVTaG91bGRJbmNsdWRlRGVjb3JhdGlvbihpbnQgZGVmYXVsdFNp
emUsIGludCYgcHJlZmVycmVkU2l6ZSkgY29uc3QKK3sKKyAgICBwcmVmZXJyZWRTaXplID0gZGVm
YXVsdFNpemU7CisKKyAgICB1bnNpZ25lZCBtaW5WYWx1ZURlY2ltYWxQbGFjZXM7CisgICAgZG91
YmxlIG1pblZhbHVlRG91YmxlOworICAgIFN0cmluZyBtaW5WYWx1ZSA9IGVsZW1lbnQoKS0+ZmFz
dEdldEF0dHJpYnV0ZShtaW5BdHRyKTsKKyAgICBpZiAoIXBhcnNlVG9Eb3VibGVGb3JOdW1iZXJU
eXBlV2l0aERlY2ltYWxQbGFjZXMobWluVmFsdWUsICZtaW5WYWx1ZURvdWJsZSwgJm1pblZhbHVl
RGVjaW1hbFBsYWNlcykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHVuc2lnbmVkIG1h
eFZhbHVlRGVjaW1hbFBsYWNlczsKKyAgICBkb3VibGUgbWF4VmFsdWVEb3VibGU7CisgICAgU3Ry
aW5nIG1heFZhbHVlID0gZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1heEF0dHIpOworICAg
IGlmICghcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGVXaXRoRGVjaW1hbFBsYWNlcyhtYXhWYWx1
ZSwgJm1heFZhbHVlRG91YmxlLCAmbWF4VmFsdWVEZWNpbWFsUGxhY2VzKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgaWYgKG1heFZhbHVlRG91YmxlIDwgbWluVmFsdWVEb3VibGUpIHsK
KyAgICAgICAgbWF4VmFsdWVEb3VibGUgPSBtaW5WYWx1ZURvdWJsZTsKKyAgICAgICAgbWF4VmFs
dWVEZWNpbWFsUGxhY2VzID0gbWF4VmFsdWVEZWNpbWFsUGxhY2VzOworICAgIH0KKworICAgIHVu
c2lnbmVkIHN0ZXBWYWx1ZURlY2ltYWxQbGFjZXM7CisgICAgZG91YmxlIHN0ZXBWYWx1ZURvdWJs
ZTsKKyAgICBTdHJpbmcgc3RlcFZhbHVlID0gZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKHN0
ZXBBdHRyKTsKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uoc3RlcFZhbHVlLCAiYW55IikpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIXBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBl
V2l0aERlY2ltYWxQbGFjZXMoc3RlcFZhbHVlLCAmc3RlcFZhbHVlRG91YmxlLCAmc3RlcFZhbHVl
RGVjaW1hbFBsYWNlcykpIHsKKyAgICAgICAgc3RlcFZhbHVlRG91YmxlID0gMTsKKyAgICAgICAg
c3RlcFZhbHVlRGVjaW1hbFBsYWNlcyA9IDA7CisgICAgfQorCisgICAgdW5zaWduZWQgbGVuZ3Ro
ID0gbGVuZ3RoQmVmb3JlRGVjaW1hbFBvaW50KG1pblZhbHVlRG91YmxlKTsKKyAgICBsZW5ndGgg
PSBtYXgobGVuZ3RoLCBsZW5ndGhCZWZvcmVEZWNpbWFsUG9pbnQobWF4VmFsdWVEb3VibGUpKTsK
KyAgICBsZW5ndGggPSBtYXgobGVuZ3RoLCBsZW5ndGhCZWZvcmVEZWNpbWFsUG9pbnQoc3RlcFZh
bHVlRG91YmxlKSk7CisKKyAgICB1bnNpZ25lZCBsZW5ndGhBZnRlckRlY2ltYWxQb2ludCA9IG1p
blZhbHVlRGVjaW1hbFBsYWNlczsKKyAgICBsZW5ndGhBZnRlckRlY2ltYWxQb2ludCA9IG1heChs
ZW5ndGhBZnRlckRlY2ltYWxQb2ludCwgbWF4VmFsdWVEZWNpbWFsUGxhY2VzKTsKKyAgICBsZW5n
dGhBZnRlckRlY2ltYWxQb2ludCA9IG1heChsZW5ndGhBZnRlckRlY2ltYWxQb2ludCwgc3RlcFZh
bHVlRGVjaW1hbFBsYWNlcyk7CisKKyAgICAvLyAnLicgc2hvdWxkIGJlIGNvdW50ZWQgaWYgdGhl
IHZhbHVlIGhhcyBkZWNpbWFsIHBsYWNlcy4KKyAgICBpZiAobGVuZ3RoQWZ0ZXJEZWNpbWFsUG9p
bnQgPiAwKQorICAgICAgICBsZW5ndGggKz0gbGVuZ3RoQWZ0ZXJEZWNpbWFsUG9pbnQgKyAxOwor
CisgICAgcHJlZmVycmVkU2l6ZSA9IGxlbmd0aDsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogYm9v
bCBOdW1iZXJJbnB1dFR5cGU6OmlzU3RlcHBhYmxlKCkgY29uc3QKIHsKICAgICByZXR1cm4gdHJ1
ZTsKQEAgLTI3NCw0ICszMzYsMjAgQEAgYm9vbCBOdW1iZXJJbnB1dFR5cGU6OmlzTnVtYmVyRmll
bGQoKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCit2b2lkIE51bWJlcklucHV0VHlwZTo6
bWluT3JNYXhBdHRyaWJ1dGVDaGFuZ2VkKCkKK3sKKyAgICBJbnB1dFR5cGU6Om1pbk9yTWF4QXR0
cmlidXRlQ2hhbmdlZCgpOworCisgICAgaWYgKGVsZW1lbnQoKS0+cmVuZGVyZXIoKSkKKyAgICAg
ICAgZWxlbWVudCgpLT5yZW5kZXJlcigpLT5zZXROZWVkc0xheW91dEFuZFByZWZXaWR0aHNSZWNh
bGMoKTsKK30KKwordm9pZCBOdW1iZXJJbnB1dFR5cGU6OnN0ZXBBdHRyaWJ1dGVDaGFuZ2VkKCkK
K3sKKyAgICBJbnB1dFR5cGU6OnN0ZXBBdHRyaWJ1dGVDaGFuZ2VkKCk7CisKKyAgICBpZiAoZWxl
bWVudCgpLT5yZW5kZXJlcigpKQorICAgICAgICBlbGVtZW50KCktPnJlbmRlcmVyKCktPnNldE5l
ZWRzTGF5b3V0QW5kUHJlZldpZHRoc1JlY2FsYygpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL051bWJlcklucHV0VHlwZS5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9OdW1iZXJJbnB1dFR5cGUuaAppbmRleCA1NGVhYTY2YjQ0NWFl
MTIwN2I1OWM0ODY4NWExM2NmZDVlZTBkZjE2Li40MzMzZGViZjMzZTg3YWI4ZDUwOWE2NGM4OTI0
MTg2M2UzMzk3MzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL051bWJlcklucHV0
VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTnVtYmVySW5wdXRUeXBlLmgKQEAgLTUx
LDYgKzUxLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNSYW5nZUxpbWl0
YXRpb24oKSBjb25zdDsKICAgICB2aXJ0dWFsIGRvdWJsZSBtaW5pbXVtKCkgY29uc3Q7CiAgICAg
dmlydHVhbCBkb3VibGUgbWF4aW11bSgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBzaXplU2hv
dWxkSW5jbHVkZURlY29yYXRpb24oaW50IGRlZmF1bHRTaXplLCBpbnQmIHByZWZlcnJlZFNpemUp
IGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc1N0ZXBwYWJsZSgpIGNvbnN0OwogICAgIHZpcnR1
YWwgYm9vbCBzdGVwTWlzbWF0Y2goY29uc3QgU3RyaW5nJiwgZG91YmxlKSBjb25zdDsKICAgICB2
aXJ0dWFsIGRvdWJsZSBzdGVwQmFzZSgpIGNvbnN0OwpAQCAtNzIsNiArNzMsOCBAQCBwcml2YXRl
OgogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRSZXNwZWN0U3BlZWNoQXR0cmlidXRlKCk7CiAgICAg
dmlydHVhbCBib29sIHN1cHBvcnRzUGxhY2Vob2xkZXIoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJv
b2wgaXNOdW1iZXJGaWVsZCgpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBtaW5Pck1heEF0dHJp
YnV0ZUNoYW5nZWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RlcEF0dHJpYnV0ZUNoYW5nZWQoKTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAKaW5kZXggNTJhNWFj
OGFkMTVlMDM5MGU1Y2ZmZDQ0YjQxNzRjN2ExN2U1ZGVlZi4uZjFmZTlmZTQyOTI0NjFhYjdlM2Fm
NjdlNzRjYjc5NTZjOTFkYjM4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAKQEAgLTM4OSwxMCArMzg5LDEx
IEBAIGZsb2F0IFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6Z2V0QXZnQ2hhcldpZHRoKEF0
b21pY1N0cmluZyBmYW1pbHkpCiAKICAgICByZXR1cm4gUmVuZGVyVGV4dENvbnRyb2w6OmdldEF2
Z0NoYXJXaWR0aChmYW1pbHkpOwogfQotICAgIAorCiBpbnQgUmVuZGVyVGV4dENvbnRyb2xTaW5n
bGVMaW5lOjpwcmVmZXJyZWRDb250ZW50V2lkdGgoZmxvYXQgY2hhcldpZHRoKSBjb25zdAogewot
ICAgIGludCBmYWN0b3IgPSBpbnB1dEVsZW1lbnQoKS0+c2l6ZSgpOworICAgIGludCBmYWN0b3I7
CisgICAgYm9vbCBpbmNsdWRlc0RlY29yYXRpb24gPSBpbnB1dEVsZW1lbnQoKS0+c2l6ZVNob3Vs
ZEluY2x1ZGVEZWNvcmF0aW9uKGZhY3Rvcik7CiAgICAgaWYgKGZhY3RvciA8PSAwKQogICAgICAg
ICBmYWN0b3IgPSAyMDsKIApAQCAtNDIzLDYgKzQyNCwxNyBAQCBpbnQgUmVuZGVyVGV4dENvbnRy
b2xTaW5nbGVMaW5lOjpwcmVmZXJyZWRDb250ZW50V2lkdGgoZmxvYXQgY2hhcldpZHRoKSBjb25z
dAogICAgICAgICByZXN1bHQgKz0gY2FuY2VsUmVuZGVyZXItPmJvcmRlckxlZnQoKSArIGNhbmNl
bFJlbmRlcmVyLT5ib3JkZXJSaWdodCgpICsKICAgICAgICAgICAgICAgICAgIGNhbmNlbFJlbmRl
cmVyLT5wYWRkaW5nTGVmdCgpICsgY2FuY2VsUmVuZGVyZXItPnBhZGRpbmdSaWdodCgpOwogCisg
ICAgaWYgKGluY2x1ZGVzRGVjb3JhdGlvbikgeworICAgICAgICBIVE1MRWxlbWVudCogc3BpbkJ1
dHRvbiA9IGlubmVyU3BpbkJ1dHRvbkVsZW1lbnQoKTsKKyAgICAgICAgaWYgKFJlbmRlckJveCog
c3BpblJlbmRlcmVyID0gc3BpbkJ1dHRvbiA/IHNwaW5CdXR0b24tPnJlbmRlckJveCgpIDogMCkg
eworICAgICAgICAgICAgcmVzdWx0ICs9IHNwaW5SZW5kZXJlci0+Ym9yZGVyTGVmdCgpICsgc3Bp
blJlbmRlcmVyLT5ib3JkZXJSaWdodCgpICsKKyAgICAgICAgICAgICAgICAgIHNwaW5SZW5kZXJl
ci0+cGFkZGluZ0xlZnQoKSArIHNwaW5SZW5kZXJlci0+cGFkZGluZ1JpZ2h0KCk7CisgICAgICAg
ICAgICAvLyBTaW5jZSB0aGUgd2lkdGggb2Ygc3BpblJlbmRlcmVyIGlzIG5vdCBjYWxjdWxhdGVk
IHlldCwgc3BpblJlbmRlcmVyLT53aWR0aCgpIHJldHVybnMgMC4KKyAgICAgICAgICAgIC8vIFNv
IGNvbXB1dGVkU3R5bGUoKS0+d2lkdGgoKSBpcyB1c2VkIGluc3RlYWQuCisgICAgICAgICAgICBy
ZXN1bHQgKz0gc3BpbkJ1dHRvbi0+Y29tcHV0ZWRTdHlsZSgpLT53aWR0aCgpLnZhbHVlKCk7Cisg
ICAgICAgIH0KKyAgICB9CisKICNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQogICAgIEhUTUxFbGVt
ZW50KiBzcGVlY2hCdXR0b24gPSBzcGVlY2hCdXR0b25FbGVtZW50KCk7CiAgICAgaWYgKFJlbmRl
ckJveCogc3BlZWNoUmVuZGVyZXIgPSBzcGVlY2hCdXR0b24gPyBzcGVlY2hCdXR0b24tPnJlbmRl
ckJveCgpIDogMCkgewo=
</data>

          </attachment>
      

    </bug>

</bugzilla>