<?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>80009</bug_id>
          
          <creation_ts>2012-02-29 23:35:46 -0800</creation_ts>
          <short_desc>[Forms] Introduce Decimal arithmetic to fix rounding errors in number/range input types</short_desc>
          <delta_ts>2012-06-17 23:04:02 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Forms</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://jsfiddle.net/8Z5kq/</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>WebExposed</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>82034</dependson>
    
    <dependson>85959</dependson>
    
    <dependson>87077</dependson>
    
    <dependson>87360</dependson>
    
    <dependson>87941</dependson>
    
    <dependson>88044</dependson>
    
    <dependson>88220</dependson>
    
    <dependson>88275</dependson>
    
    <dependson>88383</dependson>
    
    <dependson>88746</dependson>
          <blocked>76198</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kent Tamura">tkent</reporter>
          <assigned_to>yosin</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>jonlee</cc>
    
    <cc>keishi</cc>
    
    <cc>mkrp87</cc>
    
    <cc>peter</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yosin</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>568385</commentid>
    <comment_count>0</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-02-29 23:35:46 -0800</bug_when>
    <thetext>Try:
data:text/html,&lt;input type=range step=0.1 value=0.6 &gt;&lt;script&gt;document.write(document.getElementsByTagName(&apos;input&apos;)[0].value);&lt;/script&gt;

It should show &apos;0.6&apos;, not &apos;0.6000000000000001&apos;


This was found by IE Test Center:
http://samples.msdn.microsoft.com/ietestcenter/#html5Range
&quot;Set the &apos;value&apos; to any numeric value in markup&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580332</commentid>
    <comment_count>1</comment_count>
    <who name="Sameer Patil">mkrp87</who>
    <bug_when>2012-03-16 03:27:59 -0700</bug_when>
    <thetext>This issue looks to be because of wrong step factor representation in double value. Here step factor is &quot;0.1&quot; when it is converted from string to double it is represented as &quot;0.10000000000000001&quot;.

Can anyone please confirm whether it is related to representation error mentioned here http://www.network-theory.co.uk/docs/pytut/RepresentationError.html.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580340</commentid>
    <comment_count>2</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-03-16 03:41:05 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; This issue looks to be because of wrong step factor representation in double value. Here step factor is &quot;0.1&quot; when it is converted from string to double it is represented as &quot;0.10000000000000001&quot;.
&gt; 
&gt; Can anyone please confirm whether it is related to representation error mentioned here http://www.network-theory.co.uk/docs/pytut/RepresentationError.html.

Yeah, this is caused by the representation error in IEEE754.
We should update RangeInputType::sanitizeValue() like:

  If proposedValue satisfies min/max/step restrictions,
    return proposedValue
  return serializeForNumberType(StepRange(element()).clampValue(proposedValue));</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583838</commentid>
    <comment_count>3</comment_count>
    <who name="">yosin</who>
    <bug_when>2012-03-20 23:06:12 -0700</bug_when>
    <thetext>Add another sample, it displays
0
0.1
0.2
0.30000000000000004
0.4
0.5
0.6000000000000001
0.7000000000000001
0.8
0.9

It is better to change double print function to use &quot;%.15f&quot;?

#include &lt;stdio.h&gt;
int main(int, char**) {
   for (int i = 1; i &lt;= 9; i++) {
       double x = i * 0.1;
       printf(&quot;%d %f %.15f %.16f %.17f\n&quot;, i, x, x, x, x);
   }
   return 0;
}

1 0.100000 0.100000000000000 0.1000000000000000 0.10000000000000001
2 0.200000 0.200000000000000 0.2000000000000000 0.20000000000000001
3 0.300000 0.300000000000000 0.3000000000000000 0.30000000000000004
4 0.400000 0.400000000000000 0.4000000000000000 0.40000000000000002
5 0.500000 0.500000000000000 0.5000000000000000 0.50000000000000000
6 0.600000 0.600000000000000 0.6000000000000001 0.60000000000000009
7 0.700000 0.700000000000000 0.7000000000000001 0.70000000000000007
8 0.800000 0.800000000000000 0.8000000000000000 0.80000000000000004
9 0.900000 0.900000000000000 0.9000000000000000 0.90000000000000002</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583851</commentid>
    <comment_count>4</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-03-20 23:44:20 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; It is better to change double print function to use &quot;%.15f&quot;?

I don&apos;t think so. 
A simple fix is to avoid resetting a valid value as I wrote in Comment 2.
Another fix is to use HTMLInputElement::alignValueForStep() or something like it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583864</commentid>
    <comment_count>5</comment_count>
    <who name="Sameer Patil">mkrp87</who>
    <bug_when>2012-03-21 00:06:45 -0700</bug_when>
    <thetext>&gt; Another fix is to use HTMLInputElement::alignValueForStep() or something like it.
More details on similar issue logged for number input element https://bugs.webkit.org/show_bug.cgi?id=48308</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585015</commentid>
    <comment_count>6</comment_count>
    <who name="">yosin</who>
    <bug_when>2012-03-22 00:10:57 -0700</bug_when>
    <thetext>How about using std::decimal (aka ISO C++ TR24733[1]) available GCC 4.5.
decimal128 supports 
  exponent -6143 to 6144
  digits 34

It is wider than double(float64).

[1] http://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#status.iso.tr24733

Until all compilers support decimal128, we should have third party one or implemented by ourselves, not full version.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601075</commentid>
    <comment_count>7</comment_count>
      <attachid>136870</attachid>
    <who name="">yosin</who>
    <bug_when>2012-04-12 03:38:29 -0700</bug_when>
    <thetext>Created attachment 136870
Patch 1 - for Preliminary Review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601078</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-12 03:42:17 -0700</bug_when>
    <thetext>Attachment 136870 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebKit/chromium/tests/Decimal128Test.cpp:97:  uint64_t is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/platform/Decimal128.cpp:127:  Missing spaces around /  [whitespace/operators] [3]
Source/WebCore/platform/Decimal128.cpp:129:  Missing spaces around ==  [whitespace/operators] [3]
Source/WebCore/platform/Decimal128.cpp:130:  Missing spaces around !=  [whitespace/operators] [3]
Source/WebCore/platform/Decimal128.cpp:131:  Missing spaces around &lt;  [whitespace/operators] [3]
Source/WebCore/platform/Decimal128.cpp:132:  Missing spaces around &lt;=  [whitespace/operators] [3]
Source/WebCore/platform/Decimal128.cpp:134:  Missing spaces around &gt;=  [whitespace/operators] [3]
Source/WebCore/platform/Decimal128Impl.cpp:38:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebCore/platform/Decimal128Impl.cpp:92:  uint64_t is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 9 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601174</commentid>
    <comment_count>9</comment_count>
      <attachid>136870</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-04-12 06:45:24 -0700</bug_when>
    <thetext>Comment on attachment 136870
Patch 1 - for Preliminary Review

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

Would you show how many bytes will the WebCore (or a browser) size increase by?

&gt; Source/WebCore/platform/Decimal128.cpp:13
&gt; + * 1.    Redistributions of source code must retain the above copyright
&gt; + *         notice, this list of conditions and the following disclaimer.
&gt; + * 2.    Redistributions in binary form must reproduce the above copyright
&gt; + *         notice, this list of conditions and the following disclaimer in the
&gt; + *         documentation and/or other materials provided with the distribution.
&gt; + *

This is not a copyright header which Google employees usually use.

&gt; Source/WebCore/platform/Decimal128.h:50
&gt; +    Decimal128 operator +(double) const;

I don&apos;t think we need operators for all of these types (double, int32_t, int64_t, uint32_t, uint64_t).  Please remove unnecessary operators.

&gt; Source/WebCore/platform/Decimal128Impl.cpp:37
&gt; +namespace {

We don&apos;t use anonymous namespace in WebKit.

&gt; Source/WebCore/platform/Decimal128Impl.cpp:71
&gt; +static const int kDpdBits = 10;
&gt; +static const int kDpdMask = (1 &lt;&lt; kDpdBits) - 1; // = 0x3FF

We don&apos;t use k-prefixes.
We use all-capital or all-lowercase letters for acronyms.
http://www.webkit.org/coding/coding-style.html#names-basic</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601720</commentid>
    <comment_count>10</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-04-12 18:32:00 -0700</bug_when>
    <thetext>Applying decimal arithmetic to solve this issue is probably nice, but we don&apos;t need compliance with IEEE754 decimal128 at all.  We need a small code to solve this issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>602852</commentid>
    <comment_count>11</comment_count>
      <attachid>137264</attachid>
    <who name="">yosin</who>
    <bug_when>2012-04-15 19:23:50 -0700</bug_when>
    <thetext>Created attachment 137264
Patch 2 - for Preliminary Review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>602880</commentid>
    <comment_count>12</comment_count>
      <attachid>137264</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-04-15 21:08:02 -0700</bug_when>
    <thetext>Comment on attachment 137264
Patch 2 - for Preliminary Review

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

Please do not set r? for an incomplete patch.
I hesitate to review this patch until the patch actually resolves the type=number/range issues.


&gt; Source/WebCore/platform/Decimal128Impl.cpp:42
&gt; +namespace {

We don&apos;t use anonymous namespace.

&gt; Source/WebCore/platform/Decimal128Impl.cpp:164
&gt; +class BcdNum {

This should be BCDNumber or something.
http://www.webkit.org/coding/coding-style.html#names-basic
http://www.webkit.org/coding/coding-style.html#names-full-words</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>611380</commentid>
    <comment_count>13</comment_count>
      <attachid>139169</attachid>
    <who name="">yosin</who>
    <bug_when>2012-04-27 04:44:37 -0700</bug_when>
    <thetext>Created attachment 139169
Patch 3 - for Preliminary Review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>611385</commentid>
    <comment_count>14</comment_count>
      <attachid>139169</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-04-27 04:56:52 -0700</bug_when>
    <thetext>Comment on attachment 139169
Patch 3 - for Preliminary Review

Attachment 139169 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/12554172</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>611398</commentid>
    <comment_count>15</comment_count>
      <attachid>139169</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-04-27 05:13:44 -0700</bug_when>
    <thetext>Comment on attachment 139169
Patch 3 - for Preliminary Review

Attachment 139169 did not pass win-ews (win):
Output: http://queues.webkit.org/results/12549181</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>611445</commentid>
    <comment_count>16</comment_count>
      <attachid>139169</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-04-27 06:38:14 -0700</bug_when>
    <thetext>Comment on attachment 139169
Patch 3 - for Preliminary Review

(In reply to comment #12)
&gt; Please do not set r? for an incomplete patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>611534</commentid>
    <comment_count>17</comment_count>
      <attachid>139169</attachid>
    <who name="">yosin</who>
    <bug_when>2012-04-27 08:41:49 -0700</bug_when>
    <thetext>Comment on attachment 139169
Patch 3 - for Preliminary Review

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

&gt; Source/WebCore/ChangeLog:1
&gt; +2012-04-27  Yoshifumi Inoue  &lt;yosin@chromium.org&gt;

You should add Decimal.cpp and Decimal.h to WebCore/WebCore.vcproj for Windows build.

&gt; Source/WebCore/html/RangeInputType.cpp:248
&gt; +        setValueAsNumber(parseToDouble(newValue.toString(), numeric_limits&lt;double&gt;::quiet_NaN()), eventBehavior, ec);

You should call element()-&gt;setValue rather than converting Decimal to double. RangeInputType::setValueAsNumber == element()-&gt;setValue(serialize(value), eventBehavior). Note: It doesn&apos;t pass ExcpetionCode to element()-&gt;setValue. Because of handleKeydownEvent method doesn&apos;t care about exception during setValue.

&gt; Source/WebCore/html/StepRange.cpp:44
&gt; +    maximum = Decimal::fromString(serializeForNumberType(element-&gt;maximum()));

StepRange class should retrieve maximum and minimum from HTML attribute and RangeType::maximum and minimum use StepRange class.

&gt; Source/WebCore/html/StepRange.cpp:65
&gt; +    return value.isFinite() ? clampValue(value) : clampValue((minimum + maximum) / 2);

We should use StepRange::defaultValue which is clampValue((minimum + maximum) / 2).

&gt; Source/WebCore/html/StepRange.cpp:74
&gt; +        return clampValue((minimum + maximum) / 2);

We should use StepRange::defaultValue which is clampValue((minimum + maximum) / 2).

&gt; Source/WebCore/platform/Decimal.cpp:49
&gt; +static const uint64_t MaxCoefficient = 0x16345785D89FFFF; // 999999999999999999; // 18 9&apos;s

We should add &quot;ull&quot; suffix. The compiler used in Qt build doesn&apos;t accept this.

&gt; Source/WebCore/platform/Decimal.cpp:753
&gt; +                }

We should count number of extra digits and add to result exponent.

&gt; Source/WebCore/platform/Decimal.cpp:859
&gt; +            if (ch == &apos;-&apos;) {

Leading &quot;+&quot; sign isn&apos;t not &quot;valid floating point number&quot; in HTML5 spec (2.5.4.3 Floating-pointer numbers).
However, &quot;rules for parsing floating point number values&quot; allows parse string contains &quot;+&quot; sign.
We&apos;ll file a bug about this and change Decimal::fromString and parseToDoubleForNumberType.
Note: WTFString::toDouble (StringToDoubleConverter::StringToDouble) accepts &quot;+&quot;.

&gt; Source/WebCore/platform/Decimal.cpp:903
&gt; +            return zero(0);

We should return NaN if result is not (2^-1024, 2^1024).
DBL_MIN_10_EXP=-307
least-positive-normalized-double-float=2.2250738585072014d-308
(integer-decode-float least-positive-normalized-double-float) = significand=4503599627370496(==1&lt;&lt;52), exponent=-1074=-1024-53

&gt; Source/WebCore/platform/Decimal.cpp:913
&gt; +        return Decimal(accumulator, resultExponent, minus);

We should return NaN if result is not (2^-1024, 2^1024).
DBL_MAX=1.7976931348623157e+308

&gt; Source/WebCore/platform/Decimal.cpp:956
&gt; +Decimal Decimal::roundAt(int numberOfDigits)

Please remove unused method Decimal::roundAt.

&gt; Source/WebCore/platform/Decimal.cpp:981
&gt; +        return sign() ? &quot;-Infinity&quot; : &quot;Infinity&quot;;

Terms &quot;Infinity&quot; and &quot;NaN&quot; come from IEEE 754 specification and they are also found in http://trac.webkit.org/browser/trunk/Source/WTF/wtf/dtoa/double-conversion.cc

&gt; Source/WebCore/platform/Decimal.h:122
&gt; +    Decimal roundAt(int);

Please remove unused method Decimal::roundAt.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>611545</commentid>
    <comment_count>18</comment_count>
    <who name="">yosin</who>
    <bug_when>2012-04-27 08:50:57 -0700</bug_when>
    <thetext>For Decimal::fromString, how about calling parseToDoubleForNumberType to check &quot;valid floating-point number&quot;? If so, we can share validity checking.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>611595</commentid>
    <comment_count>19</comment_count>
      <attachid>139169</attachid>
    <who name="">yosin</who>
    <bug_when>2012-04-27 09:46:04 -0700</bug_when>
    <thetext>Comment on attachment 139169
Patch 3 - for Preliminary Review

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

&gt; Source/WebCore/platform/Decimal.cpp:116
&gt; +        x /= 10;

We should use multiplication instead of division, or table look up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>613251</commentid>
    <comment_count>20</comment_count>
      <attachid>139584</attachid>
    <who name="">yosin</who>
    <bug_when>2012-04-30 22:44:17 -0700</bug_when>
    <thetext>Created attachment 139584
Patch 4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>613253</commentid>
    <comment_count>21</comment_count>
      <attachid>139584</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-04-30 23:02:43 -0700</bug_when>
    <thetext>Comment on attachment 139584
Patch 4

Attachment 139584 did not pass win-ews (win):
Output: http://queues.webkit.org/results/12584528</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>613256</commentid>
    <comment_count>22</comment_count>
      <attachid>139585</attachid>
    <who name="">yosin</who>
    <bug_when>2012-04-30 23:10:53 -0700</bug_when>
    <thetext>Created attachment 139585
Patch 5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>614010</commentid>
    <comment_count>23</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-05-01 23:07:48 -0700</bug_when>
    <thetext>Let&apos;s change the summary to match to what we do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>614029</commentid>
    <comment_count>24</comment_count>
      <attachid>139585</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-05-01 23:42:14 -0700</bug_when>
    <thetext>Comment on attachment 139585
Patch 5

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

Don&apos;t you apply Decimal to NumberInputType?

&gt; Source/WebCore/ChangeLog:62
&gt; +        * html/HTMLInputElement.cpp:
&gt; +        (WebCore::HTMLInputElement::getAllowedValueStep):
&gt; +        (WebCore):
&gt; +        * html/HTMLInputElement.h:
&gt; +        (WebCore):
&gt; +        (HTMLInputElement):
&gt; +        * html/InputType.cpp:
&gt; +        (WebCore::InputType::getAllowedValueStep):
&gt; +        (WebCore):
&gt; +        * html/InputType.h:
&gt; +        (WebCore):
&gt; +        (InputType):
&gt; +        * html/RangeInputType.cpp:
&gt; +        (WebCore::RangeInputType::getAllowedValueStep):
&gt; +        (WebCore):
&gt; +        (WebCore::RangeInputType::handleKeydownEvent):
&gt; +        (WebCore::RangeInputType::fallbackValue):
&gt; +        (WebCore::RangeInputType::maximum):
&gt; +        (WebCore::RangeInputType::minimum):
&gt; +        (WebCore::RangeInputType::sanitizeValue):
&gt; +        * html/RangeInputType.h:
&gt; +        (RangeInputType):
&gt; +        * html/StepRange.cpp:
&gt; +        (WebCore::StepRange::StepRange):
&gt; +        (WebCore::StepRange::clampValue):
&gt; +        (WebCore::StepRange::valueFromElement):
&gt; +        * html/StepRange.h:
&gt; +        (StepRange):
&gt; +        (WebCore::StepRange::defaultValue):
&gt; +        (WebCore::StepRange::proportionFromValue):
&gt; +        (WebCore::StepRange::valueFromProportion):
&gt; +        * html/shadow/SliderThumbElement.cpp:
&gt; +        (WebCore::sliderPosition):
&gt; +        (WebCore::RenderSliderThumb::layout):
&gt; +        (WebCore::SliderThumbElement::setPositionFromPoint):

Please write what you changed / why you changed, especially for existing functions/files.

&gt; Source/WebCore/WebCore.xcodeproj/project.pbxproj:20206
&gt; +				458A2810154AB5FB00004037 /* Decimal.h */,
&gt; +				458A280E154AB5E600004037 /* Decimal.cpp */,
&gt;  				49E912A40EFAC8E6009D0CAF /* animation */,
&gt;  				FD31604012B026A300C1A359 /* audio */,

I recommend inserting new files to sorted positions in order to avoid patch conflict.

&gt; Source/WebCore/WebCore.xcodeproj/project.pbxproj:27862
&gt;  				78D02BC5154A18DF00B62D05 /* CSSPropertyAnimation.cpp in Sources */,
&gt; +				458A280F154AB5E600004037 /* Decimal.cpp in Sources */,

ditto.

&gt; Source/WebCore/html/RangeInputType.cpp:114
&gt;  double RangeInputType::minimum() const
&gt;  {
&gt; -    return parseToDouble(element()-&gt;fastGetAttribute(minAttr), rangeDefaultMinimum);
&gt; +    return parseToDouble(StepRange(element()).minimum.toString(), numeric_limits&lt;double&gt;::quiet_NaN());
&gt;  }
&gt;  
&gt;  double RangeInputType::maximum() const

Do we need these functions?

&gt; Source/WebCore/html/RangeInputType.cpp:202
&gt; +    const Decimal bigStep = ::std::max((stepRange.maximum - stepRange.minimum) / 10, step);

::std::max() should be max().

&gt; Source/WebCore/html/parser/HTMLParserIdioms.cpp:76
&gt; +    if (!parseToDoubleForNumberType(string, &amp;doubleResult))
&gt; +        return false;
&gt; +    *result = Decimal::fromString(string);

Parsing twice is not reasonable.

&gt; Source/WebCore/platform/Decimal.cpp:353
&gt; +Decimal::Decimal(uint64_t coefficient, int exponent, int sign)
&gt; +    : m_data(coefficient, exponent, sign)

Passing sign as int is unreasonable.  It should be an enum.

&gt; Source/WebCore/platform/Decimal.h:120
&gt; +    static Decimal quietNaN(int);

Do we need to support negative NaN?

&gt; Source/WebKit/chromium/tests/DecimalTest.cpp:113
&gt; +TEST_F(DecimalTest, AppNumberStepUpStepDownFromRenderer)

What&apos;s &apos;App&apos;?

&gt; Source/WebKit/chromium/tests/DecimalTest.cpp:195
&gt; +}

Please add more fromString tests.  e.g.
fromString(&quot;.5&quot;)
fromString(&quot; 123 &quot;)
fromString(&quot;1,234&quot;)
fromString(&quot;+3&quot;)
fromString(&quot;INF&quot;)
...

&gt; Source/WebKit/chromium/tests/DecimalTest.cpp:216
&gt; +    const Decimal inf(Decimal::infinity(0));
&gt; +    const Decimal minf(Decimal::infinity(1));
&gt; +    const Decimal nan(Decimal::quietNaN(0));
&gt; +    const Decimal mnan(Decimal::quietNaN(1));
&gt; +    const Decimal ten(10);

They should be:
Infinity
MinusInfinity / NegativeInfinity
NaN
MinusNaN / NegativeNaN
Ten

&gt; Source/WebKit/chromium/tests/DecimalTest.cpp:255
&gt; +}

We should add tests for values with larger/smaller exponent.

&gt; Source/WebKit/chromium/tests/DecimalTest.cpp:329
&gt; +}

We should add tests for values with larger/smaller exponent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>614035</commentid>
    <comment_count>25</comment_count>
      <attachid>139585</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-05-01 23:51:36 -0700</bug_when>
    <thetext>Comment on attachment 139585
Patch 5

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

&gt; Source/WebKit/chromium/tests/DecimalTest.cpp:117
&gt; +    EXPECT_EQ(String(&quot;1&quot;), stepUp(&quot;0&quot;, &quot;1&quot;, &quot;0.33333333333333333&quot;, &quot;0&quot;, 3)); // step=1/3

We should have a similar test:
  EXPECT_EQ(String(&quot;0.01&quot;), stepUp(&quot;0&quot;, &quot;0.01&quot;, &quot;0.0033333333333333333&quot;, &quot;0&quot;, 3)); // step=1/300

&gt; Source/WebKit/chromium/tests/DecimalTest.cpp:156
&gt; +}

We should have a test for Decimal(-2147483648).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>614146</commentid>
    <comment_count>26</comment_count>
      <attachid>139585</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-05-02 03:11:27 -0700</bug_when>
    <thetext>Comment on attachment 139585
Patch 5

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

&gt; Source/WebCore/platform/Decimal.cpp:48
&gt; +static const int PrecisionOfExponentBits = 11;
&gt; +static const int PrecisionOfCoefficientBits = 64;

These are not used.

&gt; Source/WebCore/platform/Decimal.cpp:49
&gt; +static const uint64_t MaxCoefficient = 0x16345785D89FFFFull; // 999999999999999999; // 18 9&apos;s

I&apos;m afraid this is not compilable with Visual Studio 2008.
See the discussion in Bug 64522.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>631469</commentid>
    <comment_count>27</comment_count>
      <attachid>143523</attachid>
    <who name="">yosin</who>
    <bug_when>2012-05-23 03:51:52 -0700</bug_when>
    <thetext>Created attachment 143523
Patch 6 - For Makefile validation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>631558</commentid>
    <comment_count>28</comment_count>
      <attachid>143523</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-05-23 05:53:19 -0700</bug_when>
    <thetext>Comment on attachment 143523
Patch 6 - For Makefile validation

Attachment 143523 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/12773193</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>631563</commentid>
    <comment_count>29</comment_count>
      <attachid>143523</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-05-23 05:58:20 -0700</bug_when>
    <thetext>Comment on attachment 143523
Patch 6 - For Makefile validation

Attachment 143523 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/12779154</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>631564</commentid>
    <comment_count>30</comment_count>
      <attachid>143523</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-05-23 05:59:07 -0700</bug_when>
    <thetext>Comment on attachment 143523
Patch 6 - For Makefile validation

Attachment 143523 did not pass win-ews (win):
Output: http://queues.webkit.org/results/12767262</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>631570</commentid>
    <comment_count>31</comment_count>
      <attachid>143523</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-23 06:03:54 -0700</bug_when>
    <thetext>Comment on attachment 143523
Patch 6 - For Makefile validation

Attachment 143523 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/12780173</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>631576</commentid>
    <comment_count>32</comment_count>
      <attachid>143523</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-05-23 06:07:57 -0700</bug_when>
    <thetext>Comment on attachment 143523
Patch 6 - For Makefile validation

Attachment 143523 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/12778177</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632366</commentid>
    <comment_count>33</comment_count>
      <attachid>143716</attachid>
    <who name="">yosin</who>
    <bug_when>2012-05-23 20:27:16 -0700</bug_when>
    <thetext>Created attachment 143716
Patch 7 - For Makefile validation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632369</commentid>
    <comment_count>34</comment_count>
      <attachid>143716</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-05-23 20:35:54 -0700</bug_when>
    <thetext>Comment on attachment 143716
Patch 7 - For Makefile validation

Attachment 143716 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/12804017</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632379</commentid>
    <comment_count>35</comment_count>
      <attachid>143716</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-05-23 20:45:16 -0700</bug_when>
    <thetext>Comment on attachment 143716
Patch 7 - For Makefile validation

Attachment 143716 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/12805015</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632384</commentid>
    <comment_count>36</comment_count>
      <attachid>143716</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-05-23 20:48:53 -0700</bug_when>
    <thetext>Comment on attachment 143716
Patch 7 - For Makefile validation

Attachment 143716 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/12791082</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632389</commentid>
    <comment_count>37</comment_count>
      <attachid>143719</attachid>
    <who name="">yosin</who>
    <bug_when>2012-05-23 21:02:53 -0700</bug_when>
    <thetext>Created attachment 143719
Patch 8 - For Makefile validation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632396</commentid>
    <comment_count>38</comment_count>
      <attachid>143719</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-23 21:18:16 -0700</bug_when>
    <thetext>Comment on attachment 143719
Patch 8 - For Makefile validation

Attachment 143719 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/12798055</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632489</commentid>
    <comment_count>39</comment_count>
      <attachid>143753</attachid>
    <who name="">yosin</who>
    <bug_when>2012-05-24 00:48:50 -0700</bug_when>
    <thetext>Created attachment 143753
Patch 9</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632513</commentid>
    <comment_count>40</comment_count>
      <attachid>143753</attachid>
    <who name="">yosin</who>
    <bug_when>2012-05-24 01:37:18 -0700</bug_when>
    <thetext>Comment on attachment 143753
Patch 9

* Build with CR-Linux and CR-Mac
* Apply Decimal to Date/DateTime/DateTimeLocal/Month/Time/Week in addition to Number/Range.

Could you review again?
Thanks in advance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632539</commentid>
    <comment_count>41</comment_count>
      <attachid>143753</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-05-24 02:17:32 -0700</bug_when>
    <thetext>Comment on attachment 143753
Patch 9

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

I agree with this strategy, but the patch is too large. 197KB code change in one patch is not acceptable.

Please make another patch with only Decimal.h, Decimal.cpp, and DecimalTest.cpp as the first step.

&gt; Source/WebCore/html/parser/HTMLParserIdioms.cpp:92
&gt; +    // FIXME: UINT64_C(17976931348623159) should be used but it did not compile on Qt bots.
&gt; +#if COMPILER(MSVC)
&gt; +    const uint64_t leadingDigitsOf2Power1024 = 17976931348623159ui64;
&gt; +#else
&gt; +    const uint64_t leadingDigitsOf2Power1024 = 17976931348623159ull;
&gt; +#endif

You use this workaround many times.  We should fix this issue before this patch.
I think we can add UINT64_C in wtf/MathExtras.h.

&gt; LayoutTests/fast/forms/range/range-value-rounding-expected.txt:119
&gt; +PASS createSample(&quot;0.000001&quot;, &quot;0.000009&quot;, &quot;1e-5&quot;).valueAsNumber is 0.000009
&gt; +FAIL createSample(&quot;0.0000001&quot;, &quot;0.0000001&quot;, &quot;1e-6&quot;).value should be 0.0000001. Was 1e-7.
&gt; +PASS createSample(&quot;0.0000001&quot;, &quot;0.0000001&quot;, &quot;1e-6&quot;).valueAsNumber is 0.0000001
&gt; +FAIL createSample(&quot;0.0000001&quot;, &quot;0.0000002&quot;, &quot;1e-6&quot;).value should be 0.0000002. Was 2e-7.
&gt; +PASS createSample(&quot;0.0000001&quot;, &quot;0.0000002&quot;, &quot;1e-6&quot;).valueAsNumber is 0.0000002
&gt; +FAIL createSample(&quot;0.0000001&quot;, &quot;0.0000003&quot;, &quot;1e-6&quot;).value should be 0.0000003. Was 3e-7.

This has a lot of FAIL lines.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>638196</commentid>
    <comment_count>42</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-05-31 03:33:23 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Until all compilers support decimal128, we should have third party one or implemented by ourselves, not full version.

Why don&apos;t you just ensure that 0.6000000000001 shows up as 0.6 instead of adding a whole new Decimal class, just to avoid some sanitizing? I&apos;m not sure I follow your strategy here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639173</commentid>
    <comment_count>43</comment_count>
      <attachid>145264</attachid>
    <who name="">yosin</who>
    <bug_when>2012-06-01 03:49:04 -0700</bug_when>
    <thetext>Created attachment 145264
Patch 10</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639178</commentid>
    <comment_count>44</comment_count>
      <attachid>145264</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-06-01 03:55:28 -0700</bug_when>
    <thetext>Comment on attachment 145264
Patch 10

Attachment 145264 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/12873237</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639186</commentid>
    <comment_count>45</comment_count>
      <attachid>145264</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-06-01 04:21:16 -0700</bug_when>
    <thetext>Comment on attachment 145264
Patch 10

Attachment 145264 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/12875043</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639189</commentid>
    <comment_count>46</comment_count>
      <attachid>145264</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-06-01 04:27:11 -0700</bug_when>
    <thetext>Comment on attachment 145264
Patch 10

Attachment 145264 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/12863494</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639356</commentid>
    <comment_count>47</comment_count>
      <attachid>145264</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-01 08:16:33 -0700</bug_when>
    <thetext>Comment on attachment 145264
Patch 10

Attachment 145264 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/12863555</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640252</commentid>
    <comment_count>48</comment_count>
      <attachid>145498</attachid>
    <who name="">yosin</who>
    <bug_when>2012-06-03 18:18:37 -0700</bug_when>
    <thetext>Created attachment 145498
Patch 11</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640312</commentid>
    <comment_count>49</comment_count>
      <attachid>145498</attachid>
    <who name="">yosin</who>
    <bug_when>2012-06-03 22:11:50 -0700</bug_when>
    <thetext>Comment on attachment 145498
Patch 11

Could you review this patch?

Note: This patch will be landed after bug 88208 (can&apos;t enter &quot;0&quot; to number input type) with rebase.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640420</commentid>
    <comment_count>50</comment_count>
      <attachid>145498</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-06-04 02:00:01 -0700</bug_when>
    <thetext>Comment on attachment 145498
Patch 11

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

&gt; Source/WebCore/ChangeLog:1
&gt; +2012-06-03  Yoshifumi Inoue  &lt;yosin@chromium.org&gt;

This patch is still too large to be reviewed.
We should have one or more preparation patches.

I&apos;d like to proceed as follows:
 1. Introduce InputNumber type as an alias of double, and replace double with InputNumber or const InputNumber&amp; in *InputType.{cpp,h}.
 2. Actual behavior change patch.  This makes InputNumber an alias of Decimal.
 3. Replace InputNumber with Decimal.


The next patch would be a preparation of step 1.
 Rename parseToDouble() to parse().
 Rename some doubleValue to numericValue or value
 Replace &quot;static const double&quot; with &quot;static const int&quot; in *InputType.cpp.

After that, we should introduce InputNumber, convertDoubleToInputNumber(), convertInputNumberToDouble(), and replace function signature to use InputNumber/const InputNumber&amp;.

&gt; Source/WebCore/html/BaseDateAndTimeInputType.cpp:57
&gt; -    return parseToDouble(element()-&gt;value(), DateComponents::invalidMilliseconds());
&gt; +    return convertDecimalToDouble(parseToDecimal(element()-&gt;value(), convertDoubleToDecimal(DateComponents::invalidMilliseconds())));
&gt;  }

I don&apos;t think this code works because DateComponents::invalidMilliseconds() is NaN and Decimal::fromString() doesn&apos;t support NaN.

This code is inefficient. How about keeping parseToDouble() as a static function?

&gt; Source/WebCore/html/BaseDateAndTimeInputType.cpp:184
&gt;      if (!isfinite(parsedValue))
&gt;          return visibleValue;
&gt;  
&gt; -    return serializeWithMilliseconds(parsedValue);
&gt; +    const Decimal value = convertDoubleToDecimal(parsedValue);
&gt; +    return value.isFinite() ? serializeWithMilliseconds(value) : visibleValue;

Do we need to check isFinite() again?

&gt; Source/WebCore/html/parser/HTMLParserIdioms.h:74
&gt; +inline double convertDecimalToDouble(const Decimal&amp; value)
&gt; +{
&gt; +    return parseToDoubleForNumberType(serializeForNumberType(value));
&gt; +}
&gt; +
&gt; +inline Decimal convertDoubleToDecimal(double value)
&gt; +{
&gt; +    return parseToDecimalForNumberType(serializeForNumberType(value));
&gt; +}

They shouldn&apos;t be here because they&apos;re unrelated to HTML parsing.
We should move them to Decimal.{cpp,h}.  We don&apos;t need to use parseToDoubleForNumberType() and serializeForNumberType(double) to implement them.

&gt; LayoutTests/fast/forms/range/range-value-rounding-expected.txt:549
&gt; +0.1
&gt; +0.1
&gt; +0.2
&gt; +0.2
&gt; +0.3
&gt; +0.3
&gt; +0.4
&gt; +0.4
&gt; +0.5
&gt; +0.5
&gt; +0.6
&gt; +0.6
&gt; +0.7
&gt; +0.7
&gt; +0.8
&gt; +0.8
&gt; +0.9
&gt; +0.9
&gt; +0.01
&gt; +0.01
&gt; +0.02
&gt; +0.02
&gt; +0.03
&gt; +0.03
&gt; +0.04
&gt; +0.04
&gt; +0.05
&gt; +0.05
&gt; +0.06
&gt; +0.06
&gt; +0.07
&gt; +0.07
&gt; +0.08
&gt; +0.08
&gt; +0.09
&gt; +0.09
&gt; +0.001
&gt; +0.001
&gt; +0.002
&gt; +0.002
&gt; +0.003
&gt; +0.003
&gt; +0.004
&gt; +0.004
&gt; +0.005
&gt; +0.005
&gt; +0.006
&gt; +0.006
&gt; +0.007
&gt; +0.007
&gt; +0.008
&gt; +0.008
&gt; +0.009
&gt; +0.009
&gt; +0.0001
&gt; +0.0001
&gt; +0.0002
&gt; +0.0002
&gt; +0.0003
&gt; +0.0003
&gt; +0.0004
&gt; +0.0004
&gt; +0.0005
&gt; +0.0005
&gt; +0.0006
&gt; +0.0006
&gt; +0.0007
&gt; +0.0007
&gt; +0.0008
&gt; +0.0008
&gt; +0.0009
&gt; +0.0009
&gt; +0.00001
&gt; +0.00001
&gt; +0.00002
&gt; +0.00002
&gt; +0.00003
&gt; +0.00003
&gt; +0.00004
&gt; +0.00004
&gt; +0.00005
&gt; +0.00005
&gt; +0.00006
&gt; +0.00006
&gt; +0.00007
&gt; +0.00007
&gt; +0.00008
&gt; +0.00008
&gt; +0.00009
&gt; +0.00009
&gt; +0.000001
&gt; +0.000001
&gt; +0.000002
&gt; +0.000002
&gt; +0.000003
&gt; +0.000003
&gt; +0.000004
&gt; +0.000004
&gt; +0.000005
&gt; +0.000005
&gt; +0.000006
&gt; +0.000006
&gt; +0.000007
&gt; +0.000007
&gt; +0.000008
&gt; +0.000008
&gt; +0.000009
&gt; +0.000009
&gt; +0.0000001
&gt; +0.0000001
&gt; +0.0000002
&gt; +0.0000002
&gt; +0.0000003
&gt; +0.0000003
&gt; +0.0000004
&gt; +0.0000004
&gt; +0.0000005
&gt; +0.0000005
&gt; +0.0000006
&gt; +0.0000006
&gt; +0.0000007
&gt; +0.0000007
&gt; +0.0000008
&gt; +0.0000008
&gt; +0.0000009
&gt; +0.0000009
&gt; +0.00000001
&gt; +0.00000001
&gt; +0.00000002
&gt; +0.00000002
&gt; +0.00000003
&gt; +0.00000003
&gt; +0.00000004
&gt; +0.00000004
&gt; +0.00000005
&gt; +0.00000005
&gt; +0.00000006
&gt; +0.00000006
&gt; +0.00000007
&gt; +0.00000007
&gt; +0.00000008
&gt; +0.00000008
&gt; +0.00000009
&gt; +0.00000009
&gt; +0.000000001
&gt; +0.000000001
&gt; +0.000000002
&gt; +0.000000002
&gt; +0.000000003
&gt; +0.000000003
&gt; +0.000000004
&gt; +0.000000004
&gt; +0.000000005
&gt; +0.000000005
&gt; +0.000000006
&gt; +0.000000006
&gt; +0.000000007
&gt; +0.000000007
&gt; +0.000000008
&gt; +0.000000008
&gt; +0.000000009
&gt; +0.000000009
&gt; +0.0000000001
&gt; +0.0000000001
&gt; +0.0000000002
&gt; +0.0000000002
&gt; +0.0000000003
&gt; +0.0000000003
&gt; +0.0000000004
&gt; +0.0000000004
&gt; +0.0000000005
&gt; +0.0000000005
&gt; +0.0000000006
&gt; +0.0000000006
&gt; +0.0000000007
&gt; +0.0000000007
&gt; +0.0000000008
&gt; +0.0000000008
&gt; +0.0000000009
&gt; +0.0000000009
&gt; +0.00000000001
&gt; +0.00000000001
&gt; +0.00000000002
&gt; +0.00000000002
&gt; +0.00000000003
&gt; +0.00000000003
&gt; +0.00000000004
&gt; +0.00000000004
&gt; +0.00000000005
&gt; +0.00000000005
&gt; +0.00000000006
&gt; +0.00000000006
&gt; +0.00000000007
&gt; +0.00000000007
&gt; +0.00000000008
&gt; +0.00000000008
&gt; +0.00000000009
&gt; +0.00000000009
&gt; +0.000000000001
&gt; +0.000000000001
&gt; +0.000000000002
&gt; +0.000000000002
&gt; +0.000000000003
&gt; +0.000000000003
&gt; +0.000000000004
&gt; +0.000000000004
&gt; +0.000000000005
&gt; +0.000000000005
&gt; +0.000000000006
&gt; +0.000000000006
&gt; +0.000000000007
&gt; +0.000000000007
&gt; +0.000000000008
&gt; +0.000000000008
&gt; +0.000000000009
&gt; +0.000000000009
&gt; +0.0000000000001
&gt; +0.0000000000001
&gt; +0.0000000000002
&gt; +0.0000000000002
&gt; +0.0000000000003
&gt; +0.0000000000003
&gt; +0.0000000000004
&gt; +0.0000000000004
&gt; +0.0000000000005
&gt; +0.0000000000005
&gt; +0.0000000000006
&gt; +0.0000000000006
&gt; +0.0000000000007
&gt; +0.0000000000007
&gt; +0.0000000000008
&gt; +0.0000000000008
&gt; +0.0000000000009
&gt; +0.0000000000009
&gt; +0.00000000000001
&gt; +0.00000000000001
&gt; +0.00000000000002
&gt; +0.00000000000002
&gt; +0.00000000000003
&gt; +0.00000000000003
&gt; +0.00000000000004
&gt; +0.00000000000004
&gt; +0.00000000000005
&gt; +0.00000000000005
&gt; +0.00000000000006
&gt; +0.00000000000006
&gt; +0.00000000000007
&gt; +0.00000000000007
&gt; +0.00000000000008
&gt; +0.00000000000008
&gt; +0.00000000000009
&gt; +0.00000000000009
&gt; +0.000000000000001
&gt; +0.000000000000001
&gt; +0.000000000000002
&gt; +0.000000000000002
&gt; +0.000000000000003
&gt; +0.000000000000003
&gt; +0.000000000000004
&gt; +0.000000000000004
&gt; +0.000000000000005
&gt; +0.000000000000005
&gt; +0.000000000000006
&gt; +0.000000000000006
&gt; +0.000000000000007
&gt; +0.000000000000007
&gt; +0.000000000000008
&gt; +0.000000000000008
&gt; +0.000000000000009
&gt; +0.000000000000009

We had better remove these useless strings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640435</commentid>
    <comment_count>51</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-06-04 02:52:57 -0700</bug_when>
    <thetext>(In reply to comment #42)
&gt; (In reply to comment #6)
&gt; &gt; Until all compilers support decimal128, we should have third party one or implemented by ourselves, not full version.
&gt; 
&gt; Why don&apos;t you just ensure that 0.6000000000001 shows up as 0.6 instead of adding a whole new Decimal class, just to avoid some sanitizing? I&apos;m not sure I follow your strategy here.

The current code is trying to resolve such issues by rounding and passing &apos;decimalPlaces&apos; information. But
 - We need complex code to keep track decimalPlaces correctly, and one can easily forget to apply decimalPlaces.
 - decimalPlaces is not perfect. We still have bugs in the code with decimalPlaces.
 - The current code needs some precision loss because of rounding and decimalPlaces. We need to support double precision according to the standard.

If we apply decimal arithmetic, the implementation would be really simple.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>649719</commentid>
    <comment_count>52</comment_count>
    <who name="">yosin</who>
    <bug_when>2012-06-14 18:40:21 -0700</bug_when>
    <thetext>All blocking patches has been landed.

* Behavior change was started at r119948 (Jun 10 2012 19:33 PST)
* Source code cleanup was done at r120313 (Jun 14 2012, 04:54 PST)

Thanks for waiting about two month with patient.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>651185</commentid>
    <comment_count>53</comment_count>
    <who name="">yosin</who>
    <bug_when>2012-06-17 23:04:02 -0700</bug_when>
    <thetext>This bug is also reported as http://crbug.com/125500</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136870</attachid>
            <date>2012-04-12 03:38:29 -0700</date>
            <delta_ts>2012-04-15 19:23:39 -0700</delta_ts>
            <desc>Patch 1 - for Preliminary Review</desc>
            <filename>bug-80009-20120412193827.patch</filename>
            <type>text/plain</type>
            <size>195888</size>
            <attacher>yosin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzOTMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDU1MWM4MTYxNTBiYmVj
MDliZWM3Yzc2OTAxMzdmYzgyMTczYWM3MC4uNjZkMmMzNWNjODk4N2EwN2UyOTFkZTA1YzlmNmNi
NDExNjIwM2Y3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg2IEBACisyMDEyLTA0LTEyICBZb3No
aWZ1bWkgSW5vdWUgIDx5b3NpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU2V0dGluZyAnMC42
JyB0byB0aGUgdmFsdWUgb2YgYSByYW5nZSBpbnB1dCBtYWtlcyB0aGUgdmFsdWUgMC42MDAwMDAw
MDAwMDAwMDAxCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD04MDAwOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEltcGxlbWV0bmF0aW9uIG9mIDEyOGJpdCBkZWNpbWFsIGFyaXRobWV0aWMuCisKKyAgICAgICAg
VGhpcyBpcyBmb3IgcHJlbGltaW5hcnkgcmV2aWV3IGluc3RlYWQgb2YgZmluYWwgcmV2aWV3Lgor
ICAgICAgICBUbyBmaXggdGhpcyBidWcsIEkgbmVlZCB0byBjaGFuZ2UgU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSW5wdXRUeXBlRWxlbWVudC5jcHAgYW5kIFJhbmdlSW5wdXRUeXBlLmNwcC4KKwor
ICAgICAgICBXZWJLaXQvY2hyb21pdW0vdGVzdHMvRGVjaW1hbDEyOFRlc3QuY3BwCisKKyAgICAg
ICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogcGxhdGZvcm0vRGVjaW1hbDEyOC5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsMTI4OjpE
ZWNpbWFsMTI4KToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWwxMjg6Om9wZXJhdG9yIGRvdWJs
ZSk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsMTI4OjpvcGVyYXRvciA9KToKKyAgICAgICAg
KFdlYkNvcmU6OkRlY2ltYWwxMjg6OmZyb21TdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RGVj
aW1hbDEyODo6cmVtYWluZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWwxMjg6OnRvU3Ry
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWwxMjg6OnRydW5jYXRlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9EZWNpbWFsMTI4Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChEZWNpbWFsMTI4KToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWwxMjg6OnZhbHVlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9EZWNpbWFsMTI4SW1wbC5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6RGVjaW1hbDEyOEltcGw6OkVuY29kZWREYXRhOjpjb2VmZmljZW50TXNkKToKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1hbDEyOEltcGw6OkVuY29k
ZWREYXRhOjpjb21iaW5hdGlvbkZpZWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWwxMjhJ
bXBsOjpFbmNvZGVkRGF0YTo6ZHBkQXQpOgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1hbDEyOElt
cGw6OkVuY29kZWREYXRhOjpleHBvbmVudEJpYXNlZCk6CisgICAgICAgIChXZWJDb3JlOjpEZWNp
bWFsMTI4SW1wbDo6RW5jb2RlZERhdGE6OmV4cG9uZW50Q29udGludWF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkRlY2ltYWwxMjhJbXBsOjpFbmNvZGVkRGF0YTo6ZXhwb25lbnRNc2IpOgorICAg
ICAgICAoV2ViQ29yZTo6RGVjaW1hbDEyOEltcGw6OkVuY29kZWREYXRhOjpzZXRDb21iaW5hdGlv
bkZpZWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWwxMjhJbXBsOjpFbmNvZGVkRGF0YTo6
c2V0RHBkQXQpOgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1hbDEyOEltcGw6OkVuY29kZWREYXRh
OjpzZXRFeHBvbmVudCk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsMTI4SW1wbDo6RW5jb2Rl
ZERhdGE6OnNldEV4cG9uZW50Q29udGludWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2lt
YWwxMjhJbXBsOjpFbmNvZGVkRGF0YTo6c2V0U2lnbik6CisgICAgICAgIChXZWJDb3JlOjpEZWNp
bWFsMTI4SW1wbDo6RGVjaW1hbDEyOEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1hbDEy
OEltcGw6Om9wZXJhdG9yIGRvdWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsMTI4SW1w
bDo6b3BlcmF0b3IgPSk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsMTI4SW1wbDo6b3BlcmF0
b3IgKyk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsMTI4SW1wbDo6b3BlcmF0b3IgLSk6Cisg
ICAgICAgIChXZWJDb3JlOjpEZWNpbWFsMTI4SW1wbDo6b3BlcmF0b3IgKik6CisgICAgICAgIChX
ZWJDb3JlOjpEZWNpbWFsMTI4SW1wbDo6b3BlcmF0b3IgLyk6CisgICAgICAgIChXZWJDb3JlOjpE
ZWNpbWFsMTI4SW1wbDo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsMTI4
SW1wbDo6b3BlcmF0b3IhPSk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsMTI4SW1wbDo6b3Bl
cmF0b3IgPCk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsMTI4SW1wbDo6b3BlcmF0b3IgPD0p
OgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1hbDEyOEltcGw6Om9wZXJhdG9yID4pOgorICAgICAg
ICAoV2ViQ29yZTo6RGVjaW1hbDEyOEltcGw6Om9wZXJhdG9yID49KToKKyAgICAgICAgKFdlYkNv
cmU6OkRlY2ltYWwxMjhJbXBsOjpjb2VmZmljZW50TXNkKToKKyAgICAgICAgKFdlYkNvcmU6OkRl
Y2ltYWwxMjhJbXBsOjpkcGRBdCk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsMTI4SW1wbDo6
ZXhwb25lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1hbDEyOEltcGw6OmllZWVDbGFzcyk6
CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsMTI4SW1wbDo6c2lnbik6CisgICAgICAgIChXZWJD
b3JlOjpEZWNpbWFsMTI4SW1wbDo6c2V0U2lnbik6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFs
MTI4SW1wbDo6Y29tcGFyZSk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsMTI4SW1wbDo6ZGl2
aWRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWwxMjhJbXBsOjpmYXN0RXF1YWxzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRlY2ltYWwxMjhJbXBsOjpmcm9tU3RyaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OkRlY2ltYWwxMjhJbXBsOjppbmZpbml0eSk6CisgICAgICAgIChXZWJDb3JlOjpEZWNp
bWFsMTI4SW1wbDo6aXNGaW5pdGUpOgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1hbDEyOEltcGw6
OmlzU3BlY2lhbCk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsMTI4SW1wbDo6aXNaZXJvKToK
KyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWwxMjhJbXBsOjpxdWlldE5hTik6CisgICAgICAgIChX
ZWJDb3JlOjpEZWNpbWFsMTI4SW1wbDo6cmVtYWluZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRl
Y2ltYWwxMjhJbXBsOjpyb3VuZEF0KToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWwxMjhJbXBs
OjpzaWduYWxpbmdOYU4pOgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1hbDEyOEltcGw6OnRvU3Ry
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWwxMjhJbXBsOjp0cnVuY2F0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpEZWNpbWFsMTI4SW1wbDo6emVybyk6CisgICAgICAgICogcGxhdGZvcm0v
RGVjaW1hbDEyOEltcGwuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKERl
Y2ltYWwxMjhJbXBsKToKKyAgICAgICAgKEVuY29kZWREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OkRlY2ltYWwxMjhJbXBsOjp2YWx1ZSk6CisgICAgICAgICogcGxhdGZvcm0vRGVjaW1hbDEyOElt
cGxUYWJsZXMuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vRGVjaW1hbDEyOFRhYmxlcy5o
OiBBZGRlZC4KKwogMjAxMi0wNC0xMSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4K
IAogICAgICAgICBMYXlvdXQgVGVzdCB3ZWJhdWRpby8qIGlzIGZsYWt5CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IDFiYmE5NTVjOTQxMzEzMjI0NDU3NTg0ZDFhMTgwMWFmYmJiYWFlMmMu
LjMzMTBkNWU5ZGZlZjBlYTQxOTdiZjU3MjExNTE1N2JiYWRkY2I5OTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMDQtMTIgIFlvc2hpZnVtaSBJbm91
ZSAgPHlvc2luQGNocm9taXVtLm9yZz4KKworICAgICAgICBTZXR0aW5nICcwLjYnIHRvIHRoZSB2
YWx1ZSBvZiBhIHJhbmdlIGlucHV0IG1ha2VzIHRoZSB2YWx1ZSAwLjYwMDAwMDAwMDAwMDAwMDEK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwMDA5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXQu
Z3lwaToKKyAgICAgICAgKiB0ZXN0cy9EZWNpbWFsMTI4VGVzdC5jcHA6IEFkZGVkLgorCiAyMDEy
LTA0LTExICBEYXZpZCBEb3J3aW4gIDxkZG9yd2luQGNocm9taXVtLm9yZz4KIAogICAgICAgICBB
ZGQga2V5U3lzdGVtIGF0dHJpYnV0ZSB0byBjYW5QbGF5VHlwZSgpIGZvciBFbmNyeXB0ZWQgTWVk
aWEgRXh0ZW5zaW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGE5MzExZWMxZjM2MWI5YzE2NzM0MDBl
OTM3YjQ5MDdkMzZiM2M5MmQuLjVkZmViZjUyMzQ1NzQ1YmQ2ZjU5OWEyYjEzYjExMGMyODZjNmU1
NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTI2OCw2ICsyNjgsOSBAQAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL0Nvb2tpZXNTdHJhdGVneS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9DdXJzb3Iu
aCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vRGF0ZUNvbXBvbmVudHMuaCcsCisgICAgICAgICAg
ICAncGxhdGZvcm0vRGVjaW1hbDEyOC5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9EZWNpbWFs
MTI4SW1wbC5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9EZWNpbWFsMTI4SW1wbFRhYmxlcy5o
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9EcmFnRGF0YS5oJywKICAgICAgICAgICAgICdwbGF0
Zm9ybS9EcmFnSW1hZ2UuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vRmlsZUNob29zZXIuaCcs
CkBAIC0zMDg3LDYgKzMwOTAsOCBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL0Nyb3NzVGhyZWFk
Q29waWVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL0N1cnNvci5jcHAnLAogICAgICAgICAg
ICAgJ3BsYXRmb3JtL0RhdGVDb21wb25lbnRzLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0v
RGVjaW1hbDEyOC5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL0RlY2ltYWwxMjhJbXBsLmNw
cCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vRHJhZ0RhdGEuY3BwJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS9EcmFnSW1hZ2UuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9FdmVudExvb3Au
aCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EZWNpbWFsMTI4LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RlY2ltYWwxMjguY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEwZDVi
OThlZDhmOTNjZjgwNTNkOTE1NmFhMGZkZDc2ZThmNjdmMDIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EZWNpbWFsMTI4LmNwcApAQCAtMCwwICsxLDE1NiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
ICAgIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICAgIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgICAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRGVj
aW1hbDEyOC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0RlY2ltYWwxMjg6OkRlY2ltYWwx
MjgoaW50MzJfdCB2YWx1ZSkKKyAgICA6IG1fdmFsdWUoRGVjaW1hbDEyOEltcGwodmFsdWUpKQor
eworfQorCitEZWNpbWFsMTI4OjpEZWNpbWFsMTI4KGRvdWJsZSB2YWx1ZSkKKyAgICA6IG1fdmFs
dWUoRGVjaW1hbDEyOEltcGwodmFsdWUpKQoreworfQorCitEZWNpbWFsMTI4OjpEZWNpbWFsMTI4
KHVpbnQzMl90IHZhbHVlKQorICAgIDogbV92YWx1ZShEZWNpbWFsMTI4SW1wbCh2YWx1ZSkpCit7
Cit9CisKK0RlY2ltYWwxMjg6OkRlY2ltYWwxMjgoaW50NjRfdCB2YWx1ZSkKKyAgICA6IG1fdmFs
dWUoRGVjaW1hbDEyOEltcGwodmFsdWUpKQoreworfQorCitEZWNpbWFsMTI4OjpEZWNpbWFsMTI4
KHVpbnQ2NF90IHZhbHVlKQorICAgIDogbV92YWx1ZShEZWNpbWFsMTI4SW1wbCh2YWx1ZSkpCit7
Cit9CisKK0RlY2ltYWwxMjg6OkRlY2ltYWwxMjgoY29uc3QgRGVjaW1hbDEyOEltcGwmIHZhbHVl
KQorICAgIDogbV92YWx1ZSh2YWx1ZSkKK3sKK30KKworRGVjaW1hbDEyODo6b3BlcmF0b3IgZG91
YmxlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZG91YmxlKG1fdmFsdWUpOworfQorCitEZWNpbWFs
MTI4JiBEZWNpbWFsMTI4OjpvcGVyYXRvciA9KGNvbnN0IERlY2ltYWwxMjgmIG9wZXJhbmQpCit7
CisgICAgbV92YWx1ZSA9IG9wZXJhbmQubV92YWx1ZTsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisK
KyNkZWZpbmUgREVGSU5FX0FSSVRITUVUSUNfT1BFUkFUT1Iob3ApIFwKKyAgICBEZWNpbWFsMTI4
IERlY2ltYWwxMjg6Om9wZXJhdG9yIG9wKGNvbnN0IERlY2ltYWwxMjgmIG9wZXJhbmQpIGNvbnN0
IFwKKyAgICB7IFwKKyAgICAgICAgcmV0dXJuIERlY2ltYWwxMjgobV92YWx1ZSBvcCBvcGVyYW5k
Lm1fdmFsdWUpOyBcCisgICAgfSBcCisgICAgRGVjaW1hbDEyOCBEZWNpbWFsMTI4OjpvcGVyYXRv
ciBvcChkb3VibGUgb3BlcmFuZCkgY29uc3QgXAorICAgIHsgXAorICAgICAgICByZXR1cm4gRGVj
aW1hbDEyOChtX3ZhbHVlIG9wIERlY2ltYWwxMjgob3BlcmFuZCkpOyBcCisgICAgfSBcCisgICAg
RGVjaW1hbDEyOCBEZWNpbWFsMTI4OjpvcGVyYXRvciBvcChpbnQzMl90IG9wZXJhbmQpIGNvbnN0
IFwKKyAgICB7IFwKKyAgICAgICAgcmV0dXJuIERlY2ltYWwxMjgobV92YWx1ZSBvcCBEZWNpbWFs
MTI4KG9wZXJhbmQpKTsgXAorICAgIH0gXAorICAgIERlY2ltYWwxMjggRGVjaW1hbDEyODo6b3Bl
cmF0b3Igb3AoaW50NjRfdCBvcGVyYW5kKSBjb25zdCBcCisgICAgeyBcCisgICAgICAgIHJldHVy
biBEZWNpbWFsMTI4KG1fdmFsdWUgb3AgRGVjaW1hbDEyOChvcGVyYW5kKSk7IFwKKyAgICB9IFwK
KyAgICBEZWNpbWFsMTI4IERlY2ltYWwxMjg6Om9wZXJhdG9yIG9wKHVpbnQzMl90IG9wZXJhbmQp
IGNvbnN0IFwKKyAgICB7IFwKKyAgICAgICAgcmV0dXJuIERlY2ltYWwxMjgobV92YWx1ZSBvcCBE
ZWNpbWFsMTI4KG9wZXJhbmQpKTsgXAorICAgIH0gXAorICAgIERlY2ltYWwxMjggRGVjaW1hbDEy
ODo6b3BlcmF0b3Igb3AodWludDY0X3Qgb3BlcmFuZCkgY29uc3QgXAorICAgIHsgXAorICAgICAg
ICByZXR1cm4gRGVjaW1hbDEyOChtX3ZhbHVlIG9wIERlY2ltYWwxMjgob3BlcmFuZCkpOyBcCisg
ICAgfQorCisjZGVmaW5lIERFRklORV9SRUxBVElPTkFMX09QRVJBVE9SKG9wKSBcCisgICAgYm9v
bCBEZWNpbWFsMTI4OjpvcGVyYXRvciBvcChjb25zdCBEZWNpbWFsMTI4JiBvcGVyYW5kKSBjb25z
dCBcCisgICAgeyBcCisgICAgICAgIHJldHVybiBtX3ZhbHVlIG9wIG9wZXJhbmQubV92YWx1ZTsg
XAorICAgIH0gXAorICAgIGJvb2wgRGVjaW1hbDEyODo6b3BlcmF0b3Igb3AoZG91YmxlIG9wZXJh
bmQpIGNvbnN0IFwKKyAgICB7IFwKKyAgICAgICAgcmV0dXJuIG1fdmFsdWUgb3AgRGVjaW1hbDEy
OChvcGVyYW5kKTsgXAorICAgIH0gXAorICAgIGJvb2wgRGVjaW1hbDEyODo6b3BlcmF0b3Igb3Ao
aW50MzJfdCBvcGVyYW5kKSBjb25zdCBcCisgICAgeyBcCisgICAgICAgIHJldHVybiBtX3ZhbHVl
IG9wIERlY2ltYWwxMjgob3BlcmFuZCk7IFwKKyAgICB9IFwKKyAgICBib29sIERlY2ltYWwxMjg6
Om9wZXJhdG9yIG9wKGludDY0X3Qgb3BlcmFuZCkgY29uc3QgXAorICAgIHsgXAorICAgICAgICBy
ZXR1cm4gbV92YWx1ZSBvcCBEZWNpbWFsMTI4KG9wZXJhbmQpOyBcCisgICAgfSBcCisgICAgYm9v
bCBEZWNpbWFsMTI4OjpvcGVyYXRvciBvcCh1aW50MzJfdCBvcGVyYW5kKSBjb25zdCBcCisgICAg
eyBcCisgICAgICAgIHJldHVybiBtX3ZhbHVlIG9wIERlY2ltYWwxMjgob3BlcmFuZCk7IFwKKyAg
ICB9IFwKKyAgICBib29sIERlY2ltYWwxMjg6Om9wZXJhdG9yIG9wKHVpbnQ2NF90IG9wZXJhbmQp
IGNvbnN0IFwKKyAgICB7IFwKKyAgICAgICAgcmV0dXJuIG1fdmFsdWUgb3AgRGVjaW1hbDEyOChv
cGVyYW5kKTsgXAorICAgIH0KKworREVGSU5FX0FSSVRITUVUSUNfT1BFUkFUT1IoKykKK0RFRklO
RV9BUklUSE1FVElDX09QRVJBVE9SKC0pCitERUZJTkVfQVJJVEhNRVRJQ19PUEVSQVRPUigqKQor
REVGSU5FX0FSSVRITUVUSUNfT1BFUkFUT1IoLykKKworREVGSU5FX1JFTEFUSU9OQUxfT1BFUkFU
T1IoPT0pCitERUZJTkVfUkVMQVRJT05BTF9PUEVSQVRPUighPSkKK0RFRklORV9SRUxBVElPTkFM
X09QRVJBVE9SKDwpCitERUZJTkVfUkVMQVRJT05BTF9PUEVSQVRPUig8PSkKK0RFRklORV9SRUxB
VElPTkFMX09QRVJBVE9SKD4pCitERUZJTkVfUkVMQVRJT05BTF9PUEVSQVRPUig+PSkKKworRGVj
aW1hbDEyOCBEZWNpbWFsMTI4Ojpmcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQorewor
ICAgIHJldHVybiBEZWNpbWFsMTI4KERlY2ltYWwxMjhJbXBsOjpmcm9tU3RyaW5nKHN0cmluZykp
OworfQorCitEZWNpbWFsMTI4IERlY2ltYWwxMjg6OnJlbWFpbmRlcihjb25zdCBEZWNpbWFsMTI4
JiBkaXZpc29yKSBjb25zdAoreworICAgIHJldHVybiBEZWNpbWFsMTI4KG1fdmFsdWUucmVtYWlu
ZGVyKGRpdmlzb3IubV92YWx1ZSkpOworfQorCitTdHJpbmcgRGVjaW1hbDEyODo6dG9TdHJpbmco
KSBjb25zdAoreworICAgIHJldHVybiBtX3ZhbHVlLnRvU3RyaW5nKCk7Cit9CisKK0RlY2ltYWwx
MjggRGVjaW1hbDEyODo6dHJ1bmNhdGUoY29uc3QgRGVjaW1hbDEyOCYgZGl2aXNvcikgY29uc3QK
K3sKKyAgICByZXR1cm4gRGVjaW1hbDEyOChtX3ZhbHVlLnRydW5jYXRlKGRpdmlzb3IubV92YWx1
ZSkpOworfQorCit9IC8vIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0RlY2ltYWwxMjguaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RlY2ltYWwxMjguaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lYjAzMmRiYjZlZDU3M2ZhNGQ2MGJmYjNhNzQzZTdiMTZmMGE4MDUwCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGVjaW1hbDEyOC5oCkBAIC0w
LDAgKzEsMTMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gICAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gICAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMg
IkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisg
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisjaWZuZGVmIERlY2ltYWwxMjhfaAor
I2RlZmluZSBEZWNpbWFsMTI4X2gKKworI2luY2x1ZGUgIkRlY2ltYWwxMjhJbXBsLmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRGVjaW1hbDEyOCB7CitwdWJsaWM6CisgICAgRGVj
aW1hbDEyOChkb3VibGUpOworICAgIERlY2ltYWwxMjgoaW50MzJfdCk7CisgICAgRGVjaW1hbDEy
OChpbnQ2NF90KTsKKyAgICBEZWNpbWFsMTI4KHVpbnQzMl90KTsKKyAgICBEZWNpbWFsMTI4KHVp
bnQ2NF90KTsKKyAgICBEZWNpbWFsMTI4KGNvbnN0IERlY2ltYWwxMjgmKTsKKworICAgIG9wZXJh
dG9yIGRvdWJsZSgpIGNvbnN0OworCisgICAgRGVjaW1hbDEyOCYgb3BlcmF0b3IgPShjb25zdCBE
ZWNpbWFsMTI4Jik7CisKKyAgICBEZWNpbWFsMTI4IG9wZXJhdG9yICsoY29uc3QgRGVjaW1hbDEy
OCYpIGNvbnN0OworICAgIERlY2ltYWwxMjggb3BlcmF0b3IgLShjb25zdCBEZWNpbWFsMTI4Jikg
Y29uc3Q7CisgICAgRGVjaW1hbDEyOCBvcGVyYXRvciAqKGNvbnN0IERlY2ltYWwxMjgmKSBjb25z
dDsKKyAgICBEZWNpbWFsMTI4IG9wZXJhdG9yIC8oY29uc3QgRGVjaW1hbDEyOCYpIGNvbnN0Owor
CisgICAgRGVjaW1hbDEyOCBvcGVyYXRvciArKGRvdWJsZSkgY29uc3Q7CisgICAgRGVjaW1hbDEy
OCBvcGVyYXRvciAtKGRvdWJsZSkgY29uc3Q7CisgICAgRGVjaW1hbDEyOCBvcGVyYXRvciAqKGRv
dWJsZSkgY29uc3Q7CisgICAgRGVjaW1hbDEyOCBvcGVyYXRvciAvKGRvdWJsZSkgY29uc3Q7CisK
KyAgICBEZWNpbWFsMTI4IG9wZXJhdG9yICsoaW50MzJfdCkgY29uc3Q7CisgICAgRGVjaW1hbDEy
OCBvcGVyYXRvciAtKGludDMyX3QpIGNvbnN0OworICAgIERlY2ltYWwxMjggb3BlcmF0b3IgKihp
bnQzMl90KSBjb25zdDsKKyAgICBEZWNpbWFsMTI4IG9wZXJhdG9yIC8oaW50MzJfdCkgY29uc3Q7
CisKKyAgICBEZWNpbWFsMTI4IG9wZXJhdG9yICsoaW50NjRfdCkgY29uc3Q7CisgICAgRGVjaW1h
bDEyOCBvcGVyYXRvciAtKGludDY0X3QpIGNvbnN0OworICAgIERlY2ltYWwxMjggb3BlcmF0b3Ig
KihpbnQ2NF90KSBjb25zdDsKKyAgICBEZWNpbWFsMTI4IG9wZXJhdG9yIC8oaW50NjRfdCkgY29u
c3Q7CisKKyAgICBEZWNpbWFsMTI4IG9wZXJhdG9yICsodWludDMyX3QpIGNvbnN0OworICAgIERl
Y2ltYWwxMjggb3BlcmF0b3IgLSh1aW50MzJfdCkgY29uc3Q7CisgICAgRGVjaW1hbDEyOCBvcGVy
YXRvciAqKHVpbnQzMl90KSBjb25zdDsKKyAgICBEZWNpbWFsMTI4IG9wZXJhdG9yIC8odWludDMy
X3QpIGNvbnN0OworCisgICAgRGVjaW1hbDEyOCBvcGVyYXRvciArKHVpbnQ2NF90KSBjb25zdDsK
KyAgICBEZWNpbWFsMTI4IG9wZXJhdG9yIC0odWludDY0X3QpIGNvbnN0OworICAgIERlY2ltYWwx
Mjggb3BlcmF0b3IgKih1aW50NjRfdCkgY29uc3Q7CisgICAgRGVjaW1hbDEyOCBvcGVyYXRvciAv
KHVpbnQ2NF90KSBjb25zdDsKKworICAgIGJvb2wgb3BlcmF0b3IgPT0oY29uc3QgRGVjaW1hbDEy
OCYpIGNvbnN0OworICAgIGJvb2wgb3BlcmF0b3IgIT0oY29uc3QgRGVjaW1hbDEyOCYpIGNvbnN0
OworICAgIGJvb2wgb3BlcmF0b3IgPChjb25zdCBEZWNpbWFsMTI4JikgY29uc3Q7CisgICAgYm9v
bCBvcGVyYXRvciA8PShjb25zdCBEZWNpbWFsMTI4JikgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRv
ciA+KGNvbnN0IERlY2ltYWwxMjgmKSBjb25zdDsKKyAgICBib29sIG9wZXJhdG9yID49KGNvbnN0
IERlY2ltYWwxMjgmKSBjb25zdDsKKworICAgIGJvb2wgb3BlcmF0b3IgPT0oZG91YmxlKSBjb25z
dDsKKyAgICBib29sIG9wZXJhdG9yICE9KGRvdWJsZSkgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRv
ciA8KGRvdWJsZSkgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRvciA8PShkb3VibGUpIGNvbnN0Owor
ICAgIGJvb2wgb3BlcmF0b3IgPihkb3VibGUpIGNvbnN0OworICAgIGJvb2wgb3BlcmF0b3IgPj0o
ZG91YmxlKSBjb25zdDsKKworICAgIGJvb2wgb3BlcmF0b3IgPT0oaW50MzJfdCkgY29uc3Q7Cisg
ICAgYm9vbCBvcGVyYXRvciAhPShpbnQzMl90KSBjb25zdDsKKyAgICBib29sIG9wZXJhdG9yIDwo
aW50MzJfdCkgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRvciA8PShpbnQzMl90KSBjb25zdDsKKyAg
ICBib29sIG9wZXJhdG9yID4oaW50MzJfdCkgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRvciA+PShp
bnQzMl90KSBjb25zdDsKKworICAgIGJvb2wgb3BlcmF0b3IgPT0oaW50NjRfdCkgY29uc3Q7Cisg
ICAgYm9vbCBvcGVyYXRvciAhPShpbnQ2NF90KSBjb25zdDsKKyAgICBib29sIG9wZXJhdG9yIDwo
aW50NjRfdCkgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRvciA8PShpbnQ2NF90KSBjb25zdDsKKyAg
ICBib29sIG9wZXJhdG9yID4oaW50NjRfdCkgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRvciA+PShp
bnQ2NF90KSBjb25zdDsKKworICAgIGJvb2wgb3BlcmF0b3IgPT0odWludDMyX3QpIGNvbnN0Owor
ICAgIGJvb2wgb3BlcmF0b3IgIT0odWludDMyX3QpIGNvbnN0OworICAgIGJvb2wgb3BlcmF0b3Ig
PCh1aW50MzJfdCkgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRvciA8PSh1aW50MzJfdCkgY29uc3Q7
CisgICAgYm9vbCBvcGVyYXRvciA+KHVpbnQzMl90KSBjb25zdDsKKyAgICBib29sIG9wZXJhdG9y
ID49KHVpbnQzMl90KSBjb25zdDsKKworICAgIGJvb2wgb3BlcmF0b3IgPT0odWludDY0X3QpIGNv
bnN0OworICAgIGJvb2wgb3BlcmF0b3IgIT0odWludDY0X3QpIGNvbnN0OworICAgIGJvb2wgb3Bl
cmF0b3IgPCh1aW50NjRfdCkgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRvciA8PSh1aW50NjRfdCkg
Y29uc3Q7CisgICAgYm9vbCBvcGVyYXRvciA+KHVpbnQ2NF90KSBjb25zdDsKKyAgICBib29sIG9w
ZXJhdG9yID49KHVpbnQ2NF90KSBjb25zdDsKKworICAgIC8vIEV4cG9zZSB2YWx1ZSBtZXRob2Qg
Zm9yIHVuaXQgdGVzdHMuCisgICAgY29uc3QgRGVjaW1hbDEyOEltcGw6OkVuY29kZWREYXRhJiB2
YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUudmFsdWUoKTsgfQorCisgICAgc3RhdGljIERl
Y2ltYWwxMjggZnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKTsKKyAgICBEZWNpbWFsMTI4IHJlbWFp
bmRlcihjb25zdCBEZWNpbWFsMTI4JikgY29uc3Q7CisgICAgU3RyaW5nIHRvU3RyaW5nKCkgY29u
c3Q7CisgICAgRGVjaW1hbDEyOCB0cnVuY2F0ZShjb25zdCBEZWNpbWFsMTI4JikgY29uc3Q7CisK
K3ByaXZhdGU6CisgICAgRGVjaW1hbDEyOChjb25zdCBEZWNpbWFsMTI4SW1wbCYpOworICAgIERl
Y2ltYWwxMjhJbXBsIG1fdmFsdWU7Cit9OworCit9IC8vIFdlYkNvcmUKKworI2VuZGlmIC8vIERl
Y2ltYWwxMjhfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGVjaW1hbDEy
OEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGVjaW1hbDEyOEltcGwuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjgzMGNkZDc2MjRiYmIxOTU0NGJlMDUxN2MwZWNjZjllODlmNTBlMWMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EZWNpbWFsMTI4SW1wbC5jcHAK
QEAgLTAsMCArMSwyMTAwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKgorICogMS4gICAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gICAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJEZWNpbWFsMTI4LmgiCisKKyNpbmNsdWRlIDxhbGdvcml0aG0+Cisj
aW5jbHVkZSA8ZmxvYXQuaD4KKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUg
PHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgeworCisjaW5jbHVkZSAiRGVjaW1h
bDEyOFRhYmxlcy5oIgorCisvLyBXZSBjYW4gY2xhc3NpZnkgc3BlY2lhbCB2YWx1ZXMgYnkgTVNC
IDdiaXQgb2YuCitzdGF0aWMgY29uc3QgdWludDMyX3QgQ2xhc3NNYXNrID0gMHhGRXUgPDwgMjQ7
CitzdGF0aWMgY29uc3QgdWludDMyX3QgU3BlY2lhbFZhbHVlTWFzayA9IDB4NzgwMDAwMDB1Owor
CitzdGF0aWMgY29uc3QgdWludDMyX3QgTmVnYXRpdmVJbmZpbml0eVBhdHRlcm4gPSAweEY4dSA8
PCAyNDsKK3N0YXRpYyBjb25zdCB1aW50MzJfdCBQb3NpdGl2ZUluZmluaXR5UGF0dGVybiA9IDB4
Nzh1IDw8IDI0OworCitzdGF0aWMgY29uc3QgdWludDMyX3QgTmVnYXRpdmVRdWlldE5hTlBhdHRl
cm4gPSAweEZDdSA8PCAyNDsKK3N0YXRpYyBjb25zdCB1aW50MzJfdCBQb3NpdGl2ZVF1aWV0TmFO
UGF0dGVybiA9IDB4N0N1IDw8IDI0OworCitzdGF0aWMgY29uc3QgdWludDMyX3QgTmVnYXRpdmVT
aWduYWxpbmdOYU5QYXR0ZXJuID0gMHhGRXUgPDwgMjQ7CitzdGF0aWMgY29uc3QgdWludDMyX3Qg
UG9zaXRpdmVTaWduYWxpbmdOYU5QYXR0ZXJuID0gMHg3RXUgPDwgMjQ7CisKK3N0YXRpYyBjb25z
dCB1aW50MzJfdCBOZWdhdGl2ZVplcm9QYXR0ZXJuID0gMHhBMjA4MDAwMHU7CitzdGF0aWMgY29u
c3QgdWludDMyX3QgUG9zaXRpdmVaZXJvUGF0dGVybiA9IDB4MjIwODAwMDB1OworCisvLyBCaXQg
bWFzayBmb3IgY29tYmluYXRpb24gZmllbGQKK3N0YXRpYyBjb25zdCB1aW50MzJfdCBDb21iaW5h
dGlvbkZpZWxkTWFzayA9ICAoMSA8PCBEZWNpbWFsMTI4SW1wbDo6Q29tYmluYXRpb25GaWVsZEJp
dHMpIC0gMTsKKworLy8gTnVtYmVyIG9mIGJpdHMgZnJvbSAzMmJpdCB3b3JkIGJvdW5kYXJ5IG9m
IGNvbWJpbmF0aW9uIGZpZWxkCitzdGF0aWMgY29uc3QgaW50IENvbWJpbmF0aW9uRmllbGRTaGlm
dCA9IDI2OworCisvLyBCaXQgbWFzayBmb3IgZXhwb25lbnQgY29udGludWF0aW9uIGZpZWxkCitz
dGF0aWMgY29uc3QgdWludDMyX3QgRXhwb25lbnRDb250TWFzayA9ICgxIDw8IERlY2ltYWwxMjhJ
bXBsOjpFeHBvbmVudENvbnRCaXRzKSAtIDE7CisKKy8vIE51bWJlciBvZiBiaXRzIGZyb20gMzJi
aXQgd29yZCBib3VuZGFyeSBmb3IgZXhwb25lbnQgY29udGludWF0aW9uCitzdGF0aWMgY29uc3Qg
aW50IEV4cG9uZW50Q29udFNoaWZ0ID0gMTQ7CisKKy8vIE51bWJlciBvZiBiaXRzIGluIERlbnNl
bHkgUGFja2VkIERlY2ltYWwgKERQRCkuCitzdGF0aWMgY29uc3QgaW50IGtEcGRCaXRzID0gMTA7
CitzdGF0aWMgY29uc3QgaW50IGtEcGRNYXNrID0gKDEgPDwga0RwZEJpdHMpIC0gMTsgLy8gPSAw
eDNGRgorCisvLyBOdW1iZXIgb2YgRFBEIGluIElFRUU3NTQgZGVjaW1hbDEyOCBlbmNvZGVkIGRh
dGEuCitzdGF0aWMgY29uc3QgaW50IERwZEluRGF0YSA9IDExOworCisvLyBJRUVFNzU0IGJpbmFy
eTY0IGZvcm1hdAorLy8gc2lnbigxKSBleHBvbmVudCgxMSkgc2lnbmZpY2FuZCg1MykKK2NsYXNz
IEZsb2F0NjRJbXBsIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3QgaW50IFNpZ25pZmljYW5k
Qml0cyA9IDUyOworICAgIHN0YXRpYyBjb25zdCB1aW50NjRfdCBTaWduaWZpY2FuZE1hc2sgPSAo
dWludDY0X3QoMSkgPDwgU2lnbmlmaWNhbmRCaXRzKSAtIDE7CisgICAgc3RhdGljIGNvbnN0IGlu
dCBFYmlhcyA9IDEwMjM7CisgICAgc3RhdGljIGNvbnN0IGludCBFbWF4PSAyMDQ3OworICAgIHN0
YXRpYyBjb25zdCBpbnQgRXN1Ym5vcm1hbCA9IC0xMDc0OworICAgIHN0YXRpYyBjb25zdCBpbnQg
UHJlY2lzaW9uID0gU2lnbmlmaWNhbmRCaXRzICsgMTsKKyAgICBzdGF0aWMgY29uc3QgaW50IE51
bWJlck9mRGlnaXRzID0gMTY7CisKKyAgICBleHBsaWNpdCBGbG9hdDY0SW1wbChkb3VibGUgZjY0
KSB7IG1fdmFsdWUubV9mbG9hdDY0ID0gZjY0OyB9CisgICAgZXhwbGljaXQgRmxvYXQ2NEltcGwo
dWludDY0X3QgdTY0KSB7IG1fdmFsdWUubV91aW50NjQgPSB1NjQ7IH0KKworICAgIG9wZXJhdG9y
IGRvdWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUubV9mbG9hdDY0OyB9CisgICAgb3BlcmF0
b3IgdWludDY0X3QoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlLm1fdWludDY0OyB9CisgICAgaW50
IGV4cG9uZW50KCkgY29uc3QgeyByZXR1cm4gcmF3RXhwb25lbnQoKSAtIEViaWFzOyB9CisKKyAg
ICBEZWNpbWFsMTI4SW1wbDo6SWVlZUNsYXNzIGllZWVDbGFzcygpIGNvbnN0CisgICAgeworICAg
ICAgICBzd2l0Y2ggKHJhd0V4cG9uZW50KCkpIHsKKyAgICAgICAgY2FzZSBFbWF4OiB7CisgICAg
ICAgICAgICBjb25zdCB1aW50NjRfdCBzaWduZmljYW5kNTIgPSByYXdTaWduaWZpY2FuZCgpOwor
ICAgICAgICAgICAgaWYgKCFzaWduZmljYW5kNTIpCisgICAgICAgICAgICAgICAgcmV0dXJuIERl
Y2ltYWwxMjhJbXBsOjpDbGFzc2luZmluaXR5OworICAgICAgICAgICAgY29uc3QgdWludDMyX3Qg
aGlnaDQgPSB1aW50MzJfdChzaWduZmljYW5kNTIgPj4gNDgpICYgMHgwRjsKKyAgICAgICAgICAg
IHJldHVybiBoaWdoNCA+IDQgPyBEZWNpbWFsMTI4SW1wbDo6Q2xhc3NxdWlldE5hTiA6IERlY2lt
YWwxMjhJbXBsOjpDbGFzc3NpZ25hbGluZ05hTjsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2Ug
MDoKKyAgICAgICAgICAgIHJldHVybiAhbV92YWx1ZS5tX3VpbnQ2NCB8fCAhKG1fdmFsdWUubV91
aW50NjQgPDwgMSkgPyBEZWNpbWFsMTI4SW1wbDo6Q2xhc3NaZXJvIDogRGVjaW1hbDEyOEltcGw6
OkNsYXNzU3Vibm9ybWFsOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4g
RGVjaW1hbDEyOEltcGw6OkNsYXNzTm9ybWFsOworICAgICAgICB9CisgICAgfQorCisgICAgaW50
IHJhd0V4cG9uZW50KCkgY29uc3QgeyByZXR1cm4gdWludDMyX3QobV92YWx1ZS5tX3VpbnQ2NCA+
PiBTaWduaWZpY2FuZEJpdHMpICYgMHg3RkY7IH0KKyAgICB1aW50NjRfdCByYXdTaWduaWZpY2Fu
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUubV91aW50NjQgJiBTaWduaWZpY2FuZE1hc2s7IH0K
KyAgICB1aW50NjRfdCBzaWduaWZpY2FuZCgpIGNvbnN0IHsgcmV0dXJuIHJhd1NpZ25pZmljYW5k
KCkgfCAodWludDY0X3QoMSkgPDwgU2lnbmlmaWNhbmRCaXRzKTsgfQorCisgICAgLy8gVG8gYXZv
aWQgY29tcGFyaW5nIHdpdGggc2lnbmFsaW5nIE5hTiwgdXNlIHNpZ24gYml0LgorICAgIGludCBz
aWduKCkgY29uc3QgeyByZXR1cm4gaW50NjRfdChtX3ZhbHVlLm1fdWludDY0KSA8IDA7IH0KKwor
IHByaXZhdGU6CisgICAgdW5pb24geworICAgICAgICBkb3VibGUgbV9mbG9hdDY0OworICAgICAg
ICB1aW50NjRfdCBtX3VpbnQ2NDsKKyAgICB9IG1fdmFsdWU7Cit9OworCituYW1lc3BhY2UgRmxv
YXQ2NEJpdHMgeworc3RhdGljIGNvbnN0IHVpbnQ2NF90IE5lZ2F0aXZlSW5maW5pdHlQYXR0ZXJu
ID0gdWludDY0X3QoMHhGRkYwKSA8PCA0ODsKK3N0YXRpYyBjb25zdCB1aW50NjRfdCBQb3NpdGl2
ZUluZmluaXR5UGF0dGVybiA9IHVpbnQ2NF90KDB4N0ZGMCkgPDwgNDg7CisKK3N0YXRpYyBjb25z
dCB1aW50NjRfdCBOZWdhdGl2ZVF1aWV0TmFOUGF0dGVybiA9IHVpbnQ2NF90KDB4RkZGOCkgPDwg
NDg7CitzdGF0aWMgY29uc3QgdWludDY0X3QgUG9zaXRpdmVRdWlldE5hTlBhdHRlcm4gPSB1aW50
NjRfdCgweDdGRjgpIDw8IDQ4OworCitzdGF0aWMgY29uc3QgdWludDY0X3QgTmVnYXRpdmVTaWdu
YWxpbmdOYU5QYXR0ZXJuID0gdWludDY0X3QoMHhGRkY0KSA8PCA0ODsKK3N0YXRpYyBjb25zdCB1
aW50NjRfdCBQb3NpdGl2ZVNpZ25hbGluZ05hTlBhdHRlcm4gPSB1aW50NjRfdCgweDdGRjQpIDw8
IDQ4OworCitzdGF0aWMgY29uc3QgdWludDY0X3QgTmVnYXRpdmVaZXJvUGF0dGVybiA9IHVpbnQ2
NF90KDB4ODAwMCkgPDwgNDg7CitzdGF0aWMgY29uc3QgdWludDY0X3QgUG9zaXRpdmVaZXJvUGF0
dGVybiA9IDA7Cit9IC8vIEZsb2F0NjRCaXRzCisKKy8vIFJlcHJlc2VudHMgYSBzdHJpbmcgb2Yg
ZGVjaW1hbCBkaWdpdHMuIEVhY2ggZGVjaW1hbCBkaWdpdCBpcyBzdG9yZWQgaW4KKy8vIGxvd2Vy
IDRiaXQgb2YgYnl0ZSwgaGlnaGVyIDRiaXQgaXMgdXNlZCBmb3IgcHNldWRvIGNhcnJ5L2JvcnJv
dyBkdXJpbmcKKy8vIGFkZGl0aW9uL3N1YnN0cmFjdC4KKy8vCisvLyBFeGFtcGxlIG9mIEJDRCBh
ZGRpdGlvbjogMTcrOT0yNgorLy8gMDEgMDcgKyAwMCAwOSA9IDAxIDEwICAgIGFkZGl0aW9uIGlu
IGJpbmFyeQorLy8gMDEgMTIgKyA3NiBGNiA9IDc4IDA2ICAgIHByb3BhZ2F0ZSBjYXJyeSBpbiBo
aWdoIG5pYmJsZSB0byB1cHBlciBkaWdpdCBhbmQKKy8vICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYWRkIDYgZm9yIChhK2IgPj0gMTYpCisvLyA3OCAwOCAm
IDBGIDBGID0gMDggMDYgICAgY2xlYXIgY2FycmllcworLy8gNzggMDYgJiA2MCA2MCA9IDYwIDAw
ICAgIHByZXBhcmUgZm9yIHN1YnRyYWN0IDYuCisvLyAwOCAwNiAtIDA2IDAwID0gMDIgMDYgICAg
c3VidHJhY3QgNiBpZiBubyBjYXJyeQorY2xhc3MgQmNkTnVtIHsKKyBwdWJsaWM6CisgICAgQmNk
TnVtKCk7CisgICAgZXhwbGljaXQgQmNkTnVtKGNvbnN0IEJjZE51bSYpOworICAgIGV4cGxpY2l0
IEJjZE51bShjb25zdCBEZWNpbWFsMTI4SW1wbCYpOworICAgIGV4cGxpY2l0IEJjZE51bSh1aW50
MzJfdCk7CisgICAgZXhwbGljaXQgQmNkTnVtKHVpbnQ2NF90KTsKKworICAgIGludCBkaWdpdEF0
KGNvbnN0IGludCBkaWdpdEluZGV4KSBjb25zdDsKKyAgICBjaGFyIGRpZ2l0Q2hhckF0KGludCkg
Y29uc3Q7CisgICAgdm9pZCBzZXREaWdpdEF0KGludCBkaWdpdEluZGV4LCBpbnQgZGlnaXQpOwor
CisgICAgdm9pZCBhZGRPbmUoKTsKKyAgICBpbnQgY291bnREaWdpdHMoKSBjb25zdDsKKyAgICBE
ZWNpbWFsMTI4SW1wbCBmaW5hbGl6ZShpbnQgZXhwb25lbnQsIGludCBzaWduKTsKKyAgICBib29s
IHNob3VsZEJ1bXAoY29uc3QgaW50IGRpZ2l0KSBjb25zdDsKKyAgICBpbnQgcmVtb3ZlVHJhaWxp
bmdaZXJvcygpOworICAgIHZvaWQgcm91bmRBdChjb25zdCBpbnQgbnVtYmVyT2ZSZXN1bHREaWdp
dHMpOworICAgIHZvaWQgc2hpZnRMZWZ0KGludCk7CisgICAgdm9pZCBzaGlmdFJpZ2h0KGludCk7
CisgICAgdm9pZCBzaGlmdFJpZ2h0V2l0aFJvdW5kKGludCk7CisKKyAgICBzdGF0aWMgRGVjaW1h
bDEyOEltcGwgYWRkKGNvbnN0IEJjZE51bSYsIGNvbnN0IEJjZE51bSYsIGludCwgaW50KTsKKyAg
ICBzdGF0aWMgRGVjaW1hbDEyOEltcGwgc3VidHJhY3QoY29uc3QgQmNkTnVtJiwgY29uc3QgQmNk
TnVtJiwgaW50LCBpbnQpOworCisgcHJpdmF0ZToKKyAgICBzdGF0aWMgY29uc3QgaW50IE51bWJl
ck9mRGlnaXRzID0gMzY7CisgICAgc3RhdGljIGNvbnN0IGludCBOdW1iZXJPZkRpZ2l0c0luV29y
ZCA9IDQ7CisgICAgc3RhdGljIGNvbnN0IGludCBrV29yZHMgPSA5OyAvLyBSb3VuZFVwKDM2LCA0
KQorICAgIHN0YXRpYyBjb25zdCBpbnQga1RlblRob3VzZGFuZCA9IDEwICogMTAwMDsKKworICAg
IHVpbnQzMl90IG1fd29yZHNba1dvcmRzXTsKKworICAgIEJjZE51bSYgb3BlcmF0b3IgPShjb25z
dCBCY2ROdW0mIHJocyk7CisKKyAgICB2b2lkIGZpbGxaZXJvKCk7CisgICAgYm9vbCBpc0V2ZW4o
KSBjb25zdDsKKyAgICBib29sIGlzT2RkKCkgY29uc3Q7CisKKyAgICBzdGF0aWMgdWludCBtb2Qx
MCh1aW50IG4pIHsgcmV0dXJuIG4gJSAxMDsgfQorCisgICAgLy8gSGVscGVyIGZ1bmN0aW9uIHRv
IHBhY2sgZm91ciBkaWdpdHMgaW50byB1aW50MzJfdCB3aXRoIEJDRC4KKyAgICBzdGF0aWMgdWlu
dDMyX3QgcGFja0ZvdXJEaWdpdHMoY29uc3QgdWludDMyX3QgdTMyKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIG1vZDEwKHUzMikgfCAobW9kMTAodTMyIC8gMTApIDw8IDgpIHwgKG1vZDEwKHUzMiAv
IDEwMCkgPDwgMTYpIHwgKG1vZDEwKHUzMiAvIDEwMDApIDw8IDI0KTsKKyAgICB9Cit9OworCisv
LyBCaW5OdW0gcmVwcmVzZW50IHBvc2l0aXZlIGludGVnZXIgaW4gbXVsdGlwbGUgcHJlY2lzaW9u
IG51bWJlciB1c2luZworLy8gb25lIGJpbGxpb24gYmFzZSB0byBrZWVwIGF0IGxlYXN0IDM0IGRp
Z2l0cyBpbiBkZWNpbWFsMTI4LgorLy8KKy8vIFdlIHVzZSBiYXNlIG9uZSBiaWxsaW9uIG51bWJl
ciBmb3IgZmFzdGVyIGNvbnZlcnNpb24gZnJvbSBkZWNpbWFsMTI4IHRvCisvLyBCaW5OdW0gYnkg
Y29udmVydGluZyB0aHJlZSBkaWdpdHMgaW50byBlYWNoIG11bHRpcGxlIHByZWNpc2lvbiBudW1i
ZXIKKy8vIGVsZW1lbnQgdG8gYXZvaWQgY29udmVydGluZyBkZWNpbWFsMTI4IHRvIGJpbmFyeSBu
dW1iZXIuCisvLworLy8gVGhpcyBjbGFzcyBpcyB1c2VkIG9mIGNhbGN1bGF0aW5nIGRpdmlzaW9u
IGFuZCBtdWx0aXBseS4KKy8vCisvLyAgICAibHN1IiBzdGFuZHMgZm9yIGxlYXN0IHNpZ25pZmlj
YW50IHVuaXQuCisvLyAgICAibXN1IiBzdGFuZHMgZm9yIG1vc3Qgc2lnbmlmaWNhbnQgdW5pdC4K
K2NsYXNzIEJpbk51bSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQmluTnVtKTsKK3B1Ymxp
YzoKKyAgICBleHBsaWNpdCBCaW5OdW0oY29uc3QgRGVjaW1hbDEyOEltcGwmKTsKKworICAgIGlu
dCBkaWdpdEF0KGNvbnN0IGludCBkaWdpdEluZGV4KSBjb25zdDsKKyAgICB1aW50MzJfdCBtb3N0
U2lnbmlmaWNhbnRVbml0KGludCBrKSBjb25zdDsKKyAgICBpbnQgbnVtYmVyT2ZVbml0cygpIGNv
bnN0IHsgcmV0dXJuIG1fbnVtYmVyT2ZVbml0czsgfQorCisgICAgaW50IENvbnZlcnRUbyhCY2RO
dW0mKSBjb25zdDsKKworICAgIHN0YXRpYyBEZWNpbWFsMTI4SW1wbCBkaXZpZGUoY29uc3QgQmlu
TnVtJiwgY29uc3QgQmluTnVtJiwgaW50IGV4cG9uZW50LCBpbnQgcXVvdGllbnRTaWduLCBEZWNp
bWFsMTI4SW1wbDo6ZGl2aWRlUmVzdWx0KTsKKyAgICBzdGF0aWMgRGVjaW1hbDEyOEltcGwgTXVs
dGlwbHkoY29uc3QgQmluTnVtJiwgY29uc3QgQmluTnVtJiwgaW50IGV4cG9uZW50LCBpbnQgcmVz
dWx0U2lnbik7CisKK3ByaXZhdGU6CisgICAgc3RhdGljIGNvbnN0IGludCBCaWxsaW9uID0gMTAw
MCAqIDEwMDAgKiAxMDAwOworICAgIHN0YXRpYyBjb25zdCBpbnQgRm91ckJpbGxpb24gPSB1aW50
KEJpbGxpb24pICogNDsKKyAgICBzdGF0aWMgY29uc3QgaW50IE1pbGxpb24gPSAxMDAwICogMTAw
MDsKKworICAgIHN0YXRpYyBjb25zdCBpbnQgTnVtYmVyT2ZEaWdpdHNJblVuaXQgPSA5OworICAg
IHN0YXRpYyBjb25zdCBpbnQgTnVtYmVyT2ZVbml0cyA9IDQ7IC8vIFJvdW5kVXAoTnVtYmVyT2ZE
aWdpdHMsIDkpCisgICAgc3RhdGljIGNvbnN0IGludCBOdW1iZXJPZkRpZ2l0cyA9IE51bWJlck9m
RGlnaXRzSW5Vbml0ICogTnVtYmVyT2ZVbml0czsKKworICAgIC8vIFRoaXMgY2xhc3Mga2VlcHMg
aW50ZXJtZWRpYXRlIHJlc3VsdCwgd2hpY2ggd2lsbCBiZSByZW1haW5kZXIgYXQgZW5kIG9mCisg
ICAgLy8gZGl2aXNpb24uCisgICAgY2xhc3MgRGl2aXNpb25BY2N1bXVsYXRvciB7CisgICAgcHVi
bGljOgorICAgICAgICBEaXZpc2lvbkFjY3VtdWxhdG9yKGNvbnN0IEJpbk51bSYsIGNvbnN0IEJp
bk51bSYpOworCisgICAgICAgIHVpbnQzMl90KiBsZWFzdFNpZ25pZmljYW50VW5pdFBvaW50ZXIo
KSBjb25zdCB7IHJldHVybiBtX2xlYXN0U2lnbmlmaWNhbnRVbml0UG9pbnRlcjsgfQorICAgICAg
ICB1aW50MzJfdCogbW9zdFNpZ25pZmljYW50VW5pdFBvaW50ZXIoKSBjb25zdCB7IHJldHVybiBt
X21vc3RTaWduaWZpY2FudFVuaXRQb2ludGVyOyB9CisgICAgICAgIHVpbnQzMl90IG1vc3RTaWdu
aWZpY2FudFVuaXQoaW50IGspIGNvbnN0IHsgcmV0dXJuIG1fbW9zdFNpZ25pZmljYW50VW5pdFBv
aW50ZXJbLWtdOyB9CisgICAgICAgIGludCBudW1iZXJPZlVuaXRzKCkgY29uc3QgeyByZXR1cm4g
bV9tb3N0U2lnbmlmaWNhbnRVbml0UG9pbnRlciAtIG1fbGVhc3RTaWduaWZpY2FudFVuaXRQb2lu
dGVyICsgMTsgfQorICAgICAgICB2b2lkIHNldE1vc3RTaWduaWZpY2FudFVuaXQoaW50IGssIHVp
bnQzMl90IHVuaXQpIHsgbV9tb3N0U2lnbmlmaWNhbnRVbml0UG9pbnRlcltrXSA9IHVuaXQ7IH0K
KworICAgICAgICBpbnQgY29tcGFyZShjb25zdCBCaW5OdW0mKSBjb25zdDsKKyAgICAgICAgdm9p
ZCBleHRlbmQoKTsKKyAgICAgICAgYm9vbCBoYXNNb3JlVW5pdCgpIGNvbnN0IHsgcmV0dXJuIG1f
bGVhc3RTaWduaWZpY2FudFVuaXRQb2ludGVyID4gbV9mcmFjdGlvblBhcnRQb2ludGVyOyB9Cisg
ICAgICAgIGJvb2wgaXNaZXJvKCkgY29uc3QgeyByZXR1cm4gbV9tb3N0U2lnbmlmaWNhbnRVbml0
UG9pbnRlciA9PSBtX2xlYXN0U2lnbmlmaWNhbnRVbml0UG9pbnRlciAmJiAhKm1fbW9zdFNpZ25p
ZmljYW50VW5pdFBvaW50ZXI7IH0KKyAgICAgICAgdm9pZCBtdWx0aXBseUFuZFN1YnRyYWN0KGNv
bnN0IEJpbk51bSYsIHVpbnQzMl90KTsKKyAgICAgICAgaW50IG51bWJlck9mVW5pdEluRnJhY3Rp
b25QYXJ0KCkgY29uc3QgeyByZXR1cm4gbV9mcmFjdGlvblBhcnRQb2ludGVyIC0gbV9sZWFzdFNp
Z25pZmljYW50VW5pdFBvaW50ZXI7IH0KKyAgICAgICAgdm9pZCByZW1vdmVMZWFkaW5nWmVyb3Mo
KTsKKyAgICAgICAgdm9pZCB6ZXJvKCk7CisKKyAgICBwcml2YXRlOgorICAgICAgICB1aW50MzJf
dCogbV9sZWFzdFNpZ25pZmljYW50VW5pdFBvaW50ZXI7CisgICAgICAgIHVpbnQzMl90KiBtX2Zy
YWN0aW9uUGFydFBvaW50ZXI7CisgICAgICAgIHVpbnQzMl90KiBtX21vc3RTaWduaWZpY2FudFVu
aXRQb2ludGVyOworICAgICAgICB1aW50MzJfdCBtX3VuaXRzW051bWJlck9mVW5pdHMgKiAzXTsK
KyAgICB9OworCisgICAgLy8gZGl2aWRlIHF1b3RpZW50IG5lZWRzIE51bWJlck9mVW5pdHMgKyAx
LgorICAgIC8vIE11bGl0cGx5IHByb2R1Y3QgbmVlZHMgTnVtYmVyT2ZVbml0cyAqIDIuCisgICAg
Ly8gbV91bml0c1swXSBjb250YWlucyBsZWFzdCBzaWduaWZpY2FudCBkaWdpdHMuCisgICAgaW50
IG1fbnVtYmVyT2ZVbml0czsKKyAgICB1aW50MzJfdCBtX3VuaXRzW051bWJlck9mVW5pdHMgKiAy
XTsKKworICAgIEJpbk51bShpbnQpOworICAgIHZvaWQgZmlsbFplcm8oKTsKKyAgICB2b2lkIFNo
aWZ0UmlnaChpbnQgc2hpZnRBbW91bnQpOworCisgICAgc3RhdGljIHVpbnQzMl90IGNhbGN1bGF0
ZUVzdGltYXRlZERpdmlzb3IoY29uc3QgQmluTnVtJik7CisgICAgc3RhdGljIHVpbnQzMl90IGRp
dmlkZSh1aW50MzJfdCBoaWdoLCB1aW50MzJfdCBsb3csIHVpbnQ2NF90IGRpdmlzb3IpOworICAg
IHN0YXRpYyB1aW50MzJfdCBwYWNrRHBkSW5CaWxsaW9uKHVpbnQgZHBkMCwgdWludCBkcGQxLCB1
aW50IGRwZDIpOworfTsKKworLy8gVGhpcyBjbGFzcyBoYW5kbGVzIHNwZWNpYWwgdmFsdWUgb3Bl
cmFuZHMgaW4gYmluYXJ5IG9wZXJhdGlvbnMuCitjbGFzcyBTcGVjaWFsVmFsdWVIYW5kbGVyIHsK
KyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTcGVjaWFsVmFsdWVIYW5kbGVyKTsKK3B1YmxpYzoK
KyAgICBlbnVtIEhhbmRsZVJlc3VsdCB7CisgICAgICAgIEJvdGhGaW5pdGUsCisgICAgICAgIEJv
dGhpbmZpbml0eSwKKyAgICAgICAgRWl0aGVyTmFOLAorICAgICAgICBMaHNJc2luZmluaXR5LAor
ICAgICAgICBSaHNJc2luZmluaXR5LAorICAgIH07CisKKyAgICBTcGVjaWFsVmFsdWVIYW5kbGVy
KGNvbnN0IERlY2ltYWwxMjhJbXBsJiwgY29uc3QgRGVjaW1hbDEyOEltcGwmKTsKKyAgICBEZWNp
bWFsMTI4SW1wbCB2YWx1ZSgpIGNvbnN0OworICAgIEhhbmRsZVJlc3VsdCBoYW5kbGUoKTsKKwor
cHJpdmF0ZToKKyAgICBlbnVtIFJlc3VsdCB7CisgICAgICAgIFJlc3VsdElzTGhzLAorICAgICAg
ICBSZXN1bHRJc3F1aWV0TmFOV2l0aExoc1NpZ24sCisgICAgICAgIFJlc3VsdElzcXVpZXROYU5X
aXRoUmhzU2lnbiwKKyAgICAgICAgUmVzdWx0SXNSaHMsCisgICAgfTsKKworICAgIGNvbnN0IERl
Y2ltYWwxMjhJbXBsJiBtX2xoczsKKyAgICBSZXN1bHQgbV9yZXN1bHQ7CisgICAgY29uc3QgRGVj
aW1hbDEyOEltcGwmIG1fcmhzOworfTsKKworQmNkTnVtOjpCY2ROdW0oKQoreworICAgIGZpbGxa
ZXJvKCk7Cit9CisKK0JjZE51bTo6QmNkTnVtKGNvbnN0IEJjZE51bSYgb3BlcmFuZCkKK3sKKyAg
ICA6Om1lbWNweShtX3dvcmRzLCBvcGVyYW5kLm1fd29yZHMsIHNpemVvZihtX3dvcmRzKSk7Cit9
CisKKy8vIENvbnZlcnQgZGVjaW1hbDEyOCBlbmNvZGVkIGRhdGEgaW50byBCY2ROdW0uIGRlY2lt
YWwxMjggaGFzIDExIERQRCBhbmQgMQorLy8gZGlnaXQgaW4gY29tYmluYXRpb24gZmllbGQuCitC
Y2ROdW06OkJjZE51bShjb25zdCBEZWNpbWFsMTI4SW1wbCYgcmhzKQoreworICAgIGZpbGxaZXJv
KCk7CisgICAgaW50IG51bWJlck9mRGlnaXRzID0gMDsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8
IERwZEluRGF0YTsgKytpKSB7CisgICAgICAgIGNvbnN0IGludCBkcGQgPSByaHMuZHBkQXQoaSk7
CisgICAgICAgIEFTU0VSVCh1aW50KGRwZCkgPCBXVEZfQVJSQVlfTEVOR1RIKGtEcGRUb1BhY2tl
ZEJjZDMpKTsKKyAgICAgICAgdWludCBwYWNrZWRCY2QzID0ga0RwZFRvUGFja2VkQmNkM1tkcGRd
OworICAgICAgICBmb3IgKGludCBrID0gMDsgayA8IDM7ICsraykgeworICAgICAgICAgICAgY29u
c3QgaW50IHdvcmRJbmRleCA9IG51bWJlck9mRGlnaXRzIC8gTnVtYmVyT2ZEaWdpdHNJbldvcmQ7
CisgICAgICAgICAgICBjb25zdCBpbnQgc2hpZnQgPSBudW1iZXJPZkRpZ2l0cyAlIE51bWJlck9m
RGlnaXRzSW5Xb3JkICogODsKKyAgICAgICAgICAgIG1fd29yZHNbd29yZEluZGV4XSB8PSAocGFj
a2VkQmNkMyAmIDB4RikgPDwgc2hpZnQ7CisgICAgICAgICAgICBwYWNrZWRCY2QzID4+PSA0Owor
ICAgICAgICAgICAgKytudW1iZXJPZkRpZ2l0czsKKyAgICAgICAgfQorICAgIH0KKworICAgIGNv
bnN0IGludCB3b3JkSW5kZXggPSBudW1iZXJPZkRpZ2l0cyAvIE51bWJlck9mRGlnaXRzSW5Xb3Jk
OworICAgIGNvbnN0IGludCBzaGlmdCA9IG51bWJlck9mRGlnaXRzICUgTnVtYmVyT2ZEaWdpdHNJ
bldvcmQgKiA4OworICAgIG1fd29yZHNbd29yZEluZGV4XSB8PSByaHMuY29lZmZpY2VudE1zZCgp
IDw8IHNoaWZ0OworfQorCisvLyBDb25zdHJ1Y3QgQmNkTnVtIGZyb20gdW5pdDMyLgorLy8gTWF4
aW11bSB2YWx1ZSBvZiB1aW50MzJfdCBpcyA0LDI5NCw5NjcsMjk1ICgxMCBkaWdpdHMpLgorQmNk
TnVtOjpCY2ROdW0odWludDMyX3QgdTMyKQoreworICAgIGZpbGxaZXJvKCk7CisgICAgc2l6ZV90
IGkgPSAwOworICAgIHdoaWxlICh1MzIgPiAwKSB7CisgICAgICAgIEFTU0VSVChpIDw9IFdURl9B
UlJBWV9MRU5HVEgobV93b3JkcykpOworICAgICAgICBtX3dvcmRzW2ldID0gcGFja0ZvdXJEaWdp
dHModTMyKTsKKyAgICAgICAgdTMyIC89IGtUZW5UaG91c2RhbmQ7CisgICAgICAgICsraTsKKyAg
ICB9Cit9CisKKy8vIENvbnN0cnVjdCBCY2ROdW0gZnJvbSB1bml0NjQuCisvLyBNYXhpbXVtIHZh
bHVlIG9mIHVpbnQ2NF90IGlzIDE4LDQ0Niw3NDQsMDczLDcwOSw1NTEsNjE1ICgyMCBkaWdpdCku
CitCY2ROdW06OkJjZE51bSh1aW50NjRfdCB1NjQpCit7CisgICAgZmlsbFplcm8oKTsKKyAgICBz
aXplX3QgaSA9IDA7CisgICAgd2hpbGUgKHU2NCA+IDApIHsKKyAgICAgICAgQVNTRVJUKGkgPD0g
V1RGX0FSUkFZX0xFTkdUSChtX3dvcmRzKSk7CisgICAgICAgIG1fd29yZHNbaV0gPSBwYWNrRm91
ckRpZ2l0cyh1aW50MzJfdCh1NjQgJSBrVGVuVGhvdXNkYW5kKSk7CisgICAgICAgIHU2NCAvPSBr
VGVuVGhvdXNkYW5kOworICAgICAgICArK2k7CisgICAgfQorfQorCitpbnQgQmNkTnVtOjpkaWdp
dEF0KGNvbnN0IGludCBkaWdpdEluZGV4KSBjb25zdAoreworICAgIGNvbnN0IGludCB3b3JkSW5k
ZXggPSBkaWdpdEluZGV4IC8gTnVtYmVyT2ZEaWdpdHNJbldvcmQ7CisgICAgQVNTRVJUKHVpbnQo
d29yZEluZGV4KSA8IFdURl9BUlJBWV9MRU5HVEgobV93b3JkcykpOworICAgIGNvbnN0IGludCBz
aGlmdCA9IChkaWdpdEluZGV4ICUgTnVtYmVyT2ZEaWdpdHNJbldvcmQpICogODsKKyAgICByZXR1
cm4gKG1fd29yZHNbd29yZEluZGV4XSA+PiBzaGlmdCkgJiAweEY7Cit9CisKK2NoYXIgQmNkTnVt
OjpkaWdpdENoYXJBdChjb25zdCBpbnQgZGlnaXRJbmRleCkgY29uc3QKK3sKKyAgICByZXR1cm4g
Y2hhcihkaWdpdEF0KGRpZ2l0SW5kZXgpICsgJzAnKTsKK30KKwordm9pZCBCY2ROdW06OnNldERp
Z2l0QXQoY29uc3QgaW50IGRpZ2l0SW5kZXgsIGNvbnN0IGludCBkaWdpdCkKK3sKKyAgICBBU1NF
UlQodWludChkaWdpdCkgPD0gOXUpOworICAgIGNvbnN0IGludCB3b3JkSW5kZXggPSBkaWdpdElu
ZGV4IC8gTnVtYmVyT2ZEaWdpdHNJbldvcmQ7CisgICAgQVNTRVJUKHVpbnQod29yZEluZGV4KSA8
IFdURl9BUlJBWV9MRU5HVEgobV93b3JkcykpOworICAgIGNvbnN0IGludCBzaGlmdCA9IChkaWdp
dEluZGV4ICUgTnVtYmVyT2ZEaWdpdHNJbldvcmQpICogODsKKyAgICBtX3dvcmRzW3dvcmRJbmRl
eF0gJj0gfigweDBGIDw8IHNoaWZ0KTsKKyAgICBtX3dvcmRzW3dvcmRJbmRleF0gfD0gZGlnaXQg
PDwgc2hpZnQ7Cit9CisKK0RlY2ltYWwxMjhJbXBsIEJjZE51bTo6YWRkKGNvbnN0IEJjZE51bSYg
bGhzLCBjb25zdCBCY2ROdW0mIHJocywgY29uc3QgaW50IGV4cG9uZW50LCBjb25zdCBpbnQgc2ln
bikKK3sKKyAgICBCY2ROdW0gcmVzdWx0OworICAgIHVpbnQgY2FycnkgPSAwOworICAgIGZvciAo
c2l6ZV90IGkgPSAwIDsgaSA8IFdURl9BUlJBWV9MRU5HVEgocmVzdWx0Lm1fd29yZHMpOyBpKysp
IHsKKyAgICAgICAgY2FycnkgKz0gbGhzLm1fd29yZHNbaV0gKyByaHMubV93b3Jkc1tpXTsKKyAg
ICAgICAgY2FycnkgKz0gMHg3NkY2RjZGNjsgLy8gQkNEIGFkanVzdG1lbnQKKyAgICAgICAgdWlu
dDMyX3QgZGlnaXRzID0gY2FycnkgJiAweDBGMEYwRjBGOyAvLyBjbGVhciBjYXJyaWVzCisgICAg
ICAgIGRpZ2l0cyAtPSAoY2FycnkgJiAweDYwNjA2MDYwKSA+PiA0OyAvLyBCQ0QgYWRqdXN0bWVu
dAorICAgICAgICByZXN1bHQubV93b3Jkc1tpXSA9IGRpZ2l0czsKKyAgICAgICAgY2FycnkgPj49
IDMxOworICAgIH0KKyAgICAvLyBXZSBkb24ndCBjYXJlIGNhcnJ5IGhlcmUuIG1fd29yZHMgY29u
dGFpbnMgbW9yZSBkaWdpdHMgdGhhbiBuZWVkZWQuCisgICAgcmV0dXJuIHJlc3VsdC5maW5hbGl6
ZShleHBvbmVudCwgc2lnbik7Cit9CisKKy8vIERlc3RydWN0aXZlIGFkZGl0aW9uIGJ5IG9uZS4g
VGhpcyBtZXRob2QgaXMgdXNlZCBmb3Igcm91bmRpbmcuCit2b2lkIEJjZE51bTo6YWRkT25lKCkK
K3sKKyAgICB1aW50IGNhcnJ5ID0gMTsKKyAgICBmb3IgKHNpemVfdCBpID0gMCA7IGkgPCBXVEZf
QVJSQVlfTEVOR1RIKG1fd29yZHMpOyBpKyspIHsKKyAgICAgICAgY2FycnkgKz0gbV93b3Jkc1tp
XTsKKyAgICAgICAgY2FycnkgKz0gMHg3NkY2RjZGNjsgLy8gQkNEIGFkanVzdG1lbnQKKyAgICAg
ICAgdWludDMyX3QgZGlnaXRzID0gY2FycnkgJiAweDBGMEYwRjBGOyAvLyBjbGVhciBjYXJyaWVz
CisgICAgICAgIGRpZ2l0cyAtPSAoY2FycnkgJiAweDYwNjA2MDYwKSA+PiA0OyAvLyBCQ0QgYWRq
dXN0bWVudAorICAgICAgICBtX3dvcmRzW2ldID0gZGlnaXRzOworICAgICAgICBjYXJyeSA+Pj0g
MzE7CisgICAgfQorfQorCisvLyBSZXR1cm5zIG51bWJlciBvZiBkaWdpdHMgcmVwcmVzZW50ZWQg
YnkgdGhpcyBCY2ROdW0gaW5zdGFuY2UuIElmIHRoaXMKKy8vIG9iamVjdCByZXByZXNlbnRlcyAw
LCB0aGlzIG1ldGhvZCByZXR1cm5zIDAuCitpbnQgQmNkTnVtOjpjb3VudERpZ2l0cygpIGNvbnN0
Cit7CisgICAgZm9yIChpbnQgbnVtYmVyT2ZEaWdpdHMgPSBOdW1iZXJPZkRpZ2l0czsgbnVtYmVy
T2ZEaWdpdHM7IC0tbnVtYmVyT2ZEaWdpdHMpIHsKKyAgICAgICAgaWYgKGRpZ2l0QXQobnVtYmVy
T2ZEaWdpdHMgLSAxKSkKKyAgICAgICAgICAgIHJldHVybiBudW1iZXJPZkRpZ2l0czsKKyAgICB9
CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgQmNkTnVtOjpmaWxsWmVybygpCit7CisgICAgOjpt
ZW1zZXQobV93b3JkcywgMCwgc2l6ZW9mKG1fd29yZHMpKTsKK30KKworRGVjaW1hbDEyOEltcGwg
QmNkTnVtOjpmaW5hbGl6ZShjb25zdCBpbnQgZXhwb25lbnQsIGNvbnN0IGludCBzaWduKQorewor
ICAgIEFTU0VSVCh1bnNpZ25lZChzaWduKSA8PSAxdSk7CisKKyAgICBCY2ROdW0gcmVzdWx0KCp0
aGlzKTsKKyAgICBpbnQgbnVtYmVyT2ZEaWdpdHMgPSByZXN1bHQuY291bnREaWdpdHMoKTsKKyAg
ICBpbnQgcmVzdWx0RXhwb25lbnQgPSBleHBvbmVudDsKKyAgICBjb25zdCBpbnQgbnVtYmVyT2ZE
cm9wRGlnaXRzID0gc3RkOjptYXgobnVtYmVyT2ZEaWdpdHMgLSBEZWNpbWFsMTI4SW1wbDo6UHJl
Y2lzaW9uLCBEZWNpbWFsMTI4SW1wbDo6RXRpbnkgLSBleHBvbmVudCk7CisKKyAgICBpZiAobnVt
YmVyT2ZEcm9wRGlnaXRzID4gMCkgeworICAgICAgICByZXN1bHRFeHBvbmVudCArPSBudW1iZXJP
ZkRyb3BEaWdpdHM7CisgICAgICAgIGJvb2wgbmVlZEJ1bXAgPSBmYWxzZTsKKyAgICAgICAgaWYg
KG51bWJlck9mRHJvcERpZ2l0cyA8IG51bWJlck9mRGlnaXRzKSB7CisgICAgICAgICAgICBuZWVk
QnVtcCA9IHJlc3VsdC5zaG91bGRCdW1wKHJlc3VsdC5kaWdpdEF0KG51bWJlck9mRHJvcERpZ2l0
cyAtIDEpKTsKKyAgICAgICAgICAgIHJlc3VsdC5zaGlmdFJpZ2h0KG51bWJlck9mRHJvcERpZ2l0
cyk7CisKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIERpc2NhcmQgYWxsIGRpZ2l0
cy4KKyAgICAgICAgICAgIGlmIChudW1iZXJPZkRyb3BEaWdpdHMgPT0gbnVtYmVyT2ZEaWdpdHMp
CisgICAgICAgICAgICAgICAgbmVlZEJ1bXAgPSByZXN1bHQuc2hvdWxkQnVtcChyZXN1bHQuZGln
aXRBdChudW1iZXJPZkRpZ2l0cyAtIDEpKTsKKyAgICAgICAgICAgIHJlc3VsdC5zaGlmdFJpZ2h0
KG51bWJlck9mRGlnaXRzKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChuZWVkQnVtcCkgewor
ICAgICAgICAgICAgcmVzdWx0LmFkZE9uZSgpOworICAgICAgICAgICAgaWYgKHJlc3VsdC5kaWdp
dEF0KERlY2ltYWwxMjhJbXBsOjpQcmVjaXNpb24pKSB7CisgICAgICAgICAgICAgICAgKytyZXN1
bHRFeHBvbmVudDsKKyAgICAgICAgICAgICAgICByZXN1bHQuc2hpZnRSaWdodCgxKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChyZXN1bHRFeHBvbmVudCA+IERl
Y2ltYWwxMjhJbXBsOjpFYmlnKSB7CisgICAgICAgIG51bWJlck9mRGlnaXRzID0gcmVzdWx0LmNv
dW50RGlnaXRzKCk7CisgICAgICAgIGlmICghbnVtYmVyT2ZEaWdpdHMpCisgICAgICAgICAgICBy
ZXR1cm4gcmVzdWx0LmZpbmFsaXplKERlY2ltYWwxMjhJbXBsOjpFYmlnLCBzaWduKTsKKworICAg
ICAgICBpZiAocmVzdWx0RXhwb25lbnQgKyBudW1iZXJPZkRpZ2l0cyAtIDEgPiBEZWNpbWFsMTI4
SW1wbDo6RW1heCkKKyAgICAgICAgICAgIHJldHVybiBEZWNpbWFsMTI4SW1wbDo6aW5maW5pdHko
c2lnbik7CisKKyAgICAgICAgY29uc3QgaW50IHNoaWZ0QW1vdW50ID0gcmVzdWx0RXhwb25lbnQg
LSBEZWNpbWFsMTI4SW1wbDo6RWJpZzsKKyAgICAgICAgaWYgKHNoaWZ0QW1vdW50ID4gMCkgewor
ICAgICAgICAgICAgcmVzdWx0LnNoaWZ0TGVmdChzaGlmdEFtb3VudCk7CisgICAgICAgICAgICBy
ZXN1bHRFeHBvbmVudCAtPSBzaGlmdEFtb3VudDsKKyAgICAgICAgfQorICAgIH0KKworICAgIEFT
U0VSVChyZXN1bHQuY291bnREaWdpdHMoKSA8PSBEZWNpbWFsMTI4SW1wbDo6UHJlY2lzaW9uKTsK
KyAgICBBU1NFUlQodWludChyZXN1bHRFeHBvbmVudCArIERlY2ltYWwxMjhJbXBsOjpFYmlhcykg
PD0gdWludChEZWNpbWFsMTI4SW1wbDo6RWxpbWl0KSk7CisKKyAgICBEZWNpbWFsMTI4SW1wbDo6
RW5jb2RlZERhdGEgZGF0YTsKKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgRHBkSW5EYXRhICog
MzsgaSArPSAzKSB7CisgICAgICAgIGNvbnN0IHVpbnQzMl90IHBhY2tlZEJjZDMgPSByZXN1bHQu
ZGlnaXRBdChpKSB8IChyZXN1bHQuZGlnaXRBdChpICsgMSkgPDwgNCkgfCAocmVzdWx0LmRpZ2l0
QXQoaSArIDIpIDw8IDgpOworICAgICAgICBBU1NFUlQodWludChwYWNrZWRCY2QzKSA8PSAweDk5
OXUpOworICAgICAgICBjb25zdCBpbnQgZHBkID0ga1BhY2tlZEJjZDNUb0RwZFtwYWNrZWRCY2Qz
XTsKKyAgICAgICAgQVNTRVJUKHVpbnQoZHBkKSA8PSAweDNGRnUpOworICAgICAgICBBU1NFUlQo
IXBhY2tlZEJjZDMgfHwgZHBkID4gMCk7CisgICAgICAgIGRhdGEuc2V0RHBkQXQoaSAvIDMsIGRw
ZCk7CisgICAgfQorCisgICAgZGF0YS5zZXRDb21iaW5hdGlvbkZpZWxkKGtNc2RUb0NvbWJpbmF0
aW9uRmllbGRbcmVzdWx0LmRpZ2l0QXQoRGVjaW1hbDEyOEltcGw6OlByZWNpc2lvbiAtIDEpXSk7
CisgICAgZGF0YS5zZXRFeHBvbmVudChyZXN1bHRFeHBvbmVudCk7CisgICAgZGF0YS5zZXRTaWdu
KHNpZ24pOworCisgICAgcmV0dXJuIERlY2ltYWwxMjhJbXBsKGRhdGEpOworfQorCitib29sIEJj
ZE51bTo6aXNFdmVuKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIShkaWdpdEF0KDApICYgMSk7Cit9
CisKK2Jvb2wgQmNkTnVtOjppc09kZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuICFpc0V2ZW4oKTsK
K30KKworLy8gUmV0dXJucyB0cnVlIGlmIHdlIG5lZWQgdG8gYnVtcCByZXN1bHQgZm9sbG93aW5n
IElFRUU3NTQgaGFsZi1ldmVuCisvLyByb3VuZGluZyBydWxlLgorYm9vbCBCY2ROdW06OnNob3Vs
ZEJ1bXAoY29uc3QgaW50IGRpZ2l0KSBjb25zdAoreworICAgIHJldHVybiBkaWdpdCA+IDUgfHwg
KGRpZ2l0ID09IDUgJiYgaXNPZGQoKSk7Cit9CisKKy8vIFJlbW92aW5nIHRyYWlsaW5nIHplcm9z
IGFuZCByZXR1cm5zIG51bWJlciBvZiB6ZXJvcyByZW1vdmVkLgoraW50IEJjZE51bTo6cmVtb3Zl
VHJhaWxpbmdaZXJvcygpCit7CisgICAgaW50IG51bWJlck9mWmVyb3MgPSAwOworICAgIHdoaWxl
IChudW1iZXJPZlplcm9zIDwgTnVtYmVyT2ZEaWdpdHMgJiYgIWRpZ2l0QXQobnVtYmVyT2ZaZXJv
cykpCisgICAgICAgICsrbnVtYmVyT2ZaZXJvczsKKworICAgIGlmIChudW1iZXJPZlplcm9zKQor
ICAgICAgICBzaGlmdFJpZ2h0KG51bWJlck9mWmVyb3MpOworCisgICAgcmV0dXJuIG51bWJlck9m
WmVyb3M7Cit9CisKK3ZvaWQgQmNkTnVtOjpyb3VuZEF0KGNvbnN0IGludCBudW1iZXJPZlJlc3Vs
dERpZ2l0cykKK3sKKyAgICBBU1NFUlQobnVtYmVyT2ZSZXN1bHREaWdpdHMgPj0gMSk7CisgICAg
Y29uc3QgaW50IG51bWJlck9mRGlnaXRzID0gY291bnREaWdpdHMoKTsKKyAgICBjb25zdCBpbnQg
bnVtYmVyT2ZFeHRyYURpZ2l0cyA9IG51bWJlck9mRGlnaXRzIC0gbnVtYmVyT2ZSZXN1bHREaWdp
dHM7CisgICAgaWYgKG51bWJlck9mRXh0cmFEaWdpdHMgPiAwKQorICAgICAgICBzaGlmdFJpZ2h0
V2l0aFJvdW5kKG51bWJlck9mRXh0cmFEaWdpdHMpOworfQorCit2b2lkIEJjZE51bTo6c2hpZnRM
ZWZ0KGNvbnN0IGludCBzaGlmdEFtb3VudCkKK3sKKyAgICBBU1NFUlQoc2hpZnRBbW91bnQgPj0g
MCk7CisgICAgQVNTRVJUKHNoaWZ0QW1vdW50IDwgTnVtYmVyT2ZEaWdpdHMpOworCisgICAgY29u
c3QgaW50IHdvcmRDb3VudCA9IHNoaWZ0QW1vdW50IC8gTnVtYmVyT2ZEaWdpdHNJbldvcmQ7Cisg
ICAgY29uc3QgaW50IGJ5dGVDb3VudCA9IHNoaWZ0QW1vdW50ICUgTnVtYmVyT2ZEaWdpdHNJbldv
cmQ7CisKKyAgICBpZiAod29yZENvdW50KSB7CisgICAgICAgIGludCBqID0ga1dvcmRzIC0gMTsK
KyAgICAgICAgd2hpbGUgKGogPj0gd29yZENvdW50KSB7CisgICAgICAgICAgICBtX3dvcmRzW2pd
ID0gbV93b3Jkc1tqIC0gd29yZENvdW50XTsKKyAgICAgICAgICAgIC0tajsKKyAgICAgICAgfQor
ICAgICAgICB3aGlsZSAoaiA+PSAwKSB7CisgICAgICAgICAgICBtX3dvcmRzW2pdID0gMDsKKyAg
ICAgICAgICAgIC0tajsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChieXRlQ291bnQpIHsK
KyAgICAgICAgY29uc3QgaW50IGxlZnRTaGlmdEFtb3VudCA9IGJ5dGVDb3VudCAqIDg7CisgICAg
ICAgIGNvbnN0IGludCByaWdodFNoaWZ0QW1vdW50ID0gMzIgLSBsZWZ0U2hpZnRBbW91bnQ7Cisg
ICAgICAgIHVpbnQzMl90IGNhcnJ5ID0gMDsKKyAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBr
V29yZHM7IGorKykgeworICAgICAgICAgICAgY29uc3QgdWludDMyX3QgbmV3Q2FycnkgPSBtX3dv
cmRzW2pdID4+IHJpZ2h0U2hpZnRBbW91bnQ7CisgICAgICAgICAgICBtX3dvcmRzW2pdIDw8PSBs
ZWZ0U2hpZnRBbW91bnQ7CisgICAgICAgICAgICBtX3dvcmRzW2pdIHw9IGNhcnJ5OworICAgICAg
ICAgICAgY2FycnkgPSBuZXdDYXJyeTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBCY2RO
dW06OnNoaWZ0UmlnaHQoY29uc3QgaW50IHNoaWZ0QW1vdW50KQoreworICAgIEFTU0VSVChzaGlm
dEFtb3VudCA+PSAwKTsKKyAgICBBU1NFUlQoc2hpZnRBbW91bnQgPCBOdW1iZXJPZkRpZ2l0cyk7
CisKKyAgICBpZiAoIXNoaWZ0QW1vdW50KQorICAgICAgICByZXR1cm47CisKKyAgICBjb25zdCBp
bnQgd29yZENvdW50ID0gc2hpZnRBbW91bnQgLyBOdW1iZXJPZkRpZ2l0c0luV29yZDsKKyAgICBj
b25zdCBpbnQgYnl0ZUNvdW50ID0gc2hpZnRBbW91bnQgJSBOdW1iZXJPZkRpZ2l0c0luV29yZDsK
KworICAgIGlmICh3b3JkQ291bnQpIHsKKyAgICAgICAgc2l6ZV90IGogPSAwOworICAgICAgICB3
aGlsZSAoaiArIHdvcmRDb3VudCA8IFdURl9BUlJBWV9MRU5HVEgobV93b3JkcykpIHsKKyAgICAg
ICAgICAgIG1fd29yZHNbal0gPSBtX3dvcmRzW2ogKyB3b3JkQ291bnRdOworICAgICAgICAgICAg
KytqOworICAgICAgICB9CisgICAgICAgIHdoaWxlIChqIDwgV1RGX0FSUkFZX0xFTkdUSChtX3dv
cmRzKSkgeworICAgICAgICAgICAgbV93b3Jkc1tqXSA9IDA7CisgICAgICAgICAgICArK2o7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoYnl0ZUNvdW50KSB7CisgICAgICAgIGNvbnN0IGlu
dCByaWdodFNoaWZ0QW1vdW50ID0gYnl0ZUNvdW50ICogODsKKyAgICAgICAgY29uc3QgaW50IGxl
ZnRTaGlmdEFtb3VudCA9IDMyIC0gcmlnaHRTaGlmdEFtb3VudDsKKyAgICAgICAgY29uc3QgdWlu
dDMyX3QgbWFzayA9ICgxIDw8IHJpZ2h0U2hpZnRBbW91bnQpIC0gMTsKKyAgICAgICAgdWludDMy
X3QgY2FycnkgPSAwOworICAgICAgICBmb3IgKGludCBqID0ga1dvcmRzIC0gMTsgaiA+PSAwOyAt
LWopIHsKKyAgICAgICAgICAgIGNvbnN0IHVpbnQzMl90IG5ld0NhcnJ5ID0gbV93b3Jkc1tqXSAm
IG1hc2s7CisgICAgICAgICAgICBtX3dvcmRzW2pdID4+PSByaWdodFNoaWZ0QW1vdW50OworICAg
ICAgICAgICAgbV93b3Jkc1tqXSB8PSBjYXJyeSA8PCBsZWZ0U2hpZnRBbW91bnQ7CisgICAgICAg
ICAgICBjYXJyeSA9IG5ld0NhcnJ5OworICAgICAgICB9CisgICAgfQorfQorCisvLyBTaGlmdCBk
aWdpdHMgdG8gcmlnaHQgYnkgc3BlY2lmaWVkIHNoaWZ0IGFtb3VudCBhbmQgcm91bmRpbmcgYXQg
ZGlzY2FyZGVkCisvLyBkaWdpdC4KK3ZvaWQgQmNkTnVtOjpzaGlmdFJpZ2h0V2l0aFJvdW5kKGNv
bnN0IGludCBzaGlmdEFtb3VudCkKK3sKKyAgICBBU1NFUlQoc2hpZnRBbW91bnQgPj0gMCk7CisK
KyAgICBpZiAoIXNoaWZ0QW1vdW50KQorICAgICAgICByZXR1cm47CisKKyAgICBjb25zdCBpbnQg
bnVtYmVyT2ZEaWdpdHMgPSBjb3VudERpZ2l0cygpOworICAgIGNvbnN0IGludCBudW1iZXJPZk5l
d0RpZ2l0cyA9IG51bWJlck9mRGlnaXRzIC0gc2hpZnRBbW91bnQ7CisgICAgaWYgKG51bWJlck9m
TmV3RGlnaXRzID4gMCkgeworICAgICAgICBib29sIGNvbnN0IG5lZWRCdW1wID0gc2hvdWxkQnVt
cChkaWdpdEF0KHNoaWZ0QW1vdW50IC0gMSkpOworICAgICAgICBzaGlmdFJpZ2h0KHNoaWZ0QW1v
dW50KTsKKyAgICAgICAgaWYgKG5lZWRCdW1wKQorICAgICAgICAgICAgYWRkT25lKCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIW51bWJlck9mTmV3RGlnaXRzKSB7CisgICAg
ICAgIGJvb2wgY29uc3QgbmVlZEJ1bXAgPSBzaG91bGRCdW1wKGRpZ2l0QXQobnVtYmVyT2ZEaWdp
dHMgLSAxKSk7CisgICAgICAgIGZpbGxaZXJvKCk7CisgICAgICAgIGlmIChuZWVkQnVtcCkKKyAg
ICAgICAgICAgIHNldERpZ2l0QXQoMCwgMSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICAvLyBudW1iZXJPZk5ld0RpZ2l0cyA8IDAKKyAgICBmaWxsWmVybygpOworfQorCitEZWNpbWFs
MTI4SW1wbCBCY2ROdW06OnN1YnRyYWN0KGNvbnN0IEJjZE51bSYgbGhzLCBjb25zdCBCY2ROdW0m
IHJocywgY29uc3QgaW50IGV4cG9uZW50LCBjb25zdCBpbnQgc2lnbikKK3sKKyAgICB1aW50IGNh
cnJ5ID0gMTsKKyAgICBCY2ROdW0gcmVzdWx0OworICAgIGZvciAoc2l6ZV90IGkgPSAwIDsgaSA8
IFdURl9BUlJBWV9MRU5HVEgocmVzdWx0Lm1fd29yZHMpOyBpKyspIHsKKyAgICAgICAgY2Fycnkg
Kz0gbGhzLm1fd29yZHNbaV0gKyAweDA5MDkwOTA5IC0gcmhzLm1fd29yZHNbaV07CisgICAgICAg
IGNhcnJ5ICs9IDB4NzZGNkY2RjY7IC8vIEJDRCBhZGp1c3RtZW50CisgICAgICAgIHVpbnQzMl90
IGRpZ2l0cyA9IGNhcnJ5ICYgMHgwRjBGMEYwRjsgLy8gY2xlYXIgY2FycmllcworICAgICAgICBk
aWdpdHMgLT0gKGNhcnJ5ICYgMHg2MDYwNjA2MCkgPj4gNDsgLy8gQkNEIGFkanVzdG1lbnQKKyAg
ICAgICAgcmVzdWx0Lm1fd29yZHNbaV0gPSBkaWdpdHM7CisgICAgICAgIGNhcnJ5ID4+PSAzMTsK
KyAgICB9CisKKyAgICBpZiAoIWNhcnJ5KSB7CisgICAgICAgIC8vIGxocyA8IHJoczogbmVnYXRl
IHJlc3VsdAorICAgICAgICB1aW50IGNhcnJ5ID0gMTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9
IDAgOyBpIDwgV1RGX0FSUkFZX0xFTkdUSChyZXN1bHQubV93b3Jkcyk7IGkrKykgeworICAgICAg
ICAgICAgY2FycnkgKz0gMHgwOTA5MDkwOSAtIHJlc3VsdC5tX3dvcmRzW2ldOworICAgICAgICAg
ICAgY2FycnkgKz0gMHg3NkY2RjZGNjsgLy8gQkNEIGFkanVzdG1lbnQKKyAgICAgICAgICAgIHVp
bnQzMl90IGRpZ2l0cyA9IGNhcnJ5ICYgMHgwRjBGMEYwRjsgLy8gY2xlYXIgY2FycmllcworICAg
ICAgICAgICAgZGlnaXRzIC09IChjYXJyeSAmIDB4NjA2MDYwNjApID4+IDQ7IC8vIEJDRCBhZGp1
c3RtZW50CisgICAgICAgICAgICByZXN1bHQubV93b3Jkc1tpXSA9IGRpZ2l0czsKKyAgICAgICAg
ICAgIGNhcnJ5ID4+PSAzMTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0LmZpbmFs
aXplKGV4cG9uZW50LCBzaWduIF4gMSk7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdC5maW5h
bGl6ZShleHBvbmVudCwgc2lnbik7Cit9CisKK0Jpbk51bTo6RGl2aXNpb25BY2N1bXVsYXRvcjo6
RGl2aXNpb25BY2N1bXVsYXRvcihjb25zdCBCaW5OdW0mIGxocywgY29uc3QgQmluTnVtJiByaHMp
Cit7CisgICAgOjptZW1zZXQobV91bml0cywgMCwgc2l6ZW9mKG1fdW5pdHMpKTsKKyAgICBtX21v
c3RTaWduaWZpY2FudFVuaXRQb2ludGVyID0gbV91bml0cyArIFdURl9BUlJBWV9MRU5HVEgobV91
bml0cykgLSAxOworICAgIG1fZnJhY3Rpb25QYXJ0UG9pbnRlciA9IG1fbW9zdFNpZ25pZmljYW50
VW5pdFBvaW50ZXIgLSBsaHMubnVtYmVyT2ZVbml0cygpICsgMTsKKyAgICBtX2xlYXN0U2lnbmlm
aWNhbnRVbml0UG9pbnRlciA9IG1fdW5pdHMgKyBXVEZfQVJSQVlfTEVOR1RIKG1fdW5pdHMpIC0g
cmhzLm51bWJlck9mVW5pdHMoKTsKKyAgICA6Om1lbWNweShtX2ZyYWN0aW9uUGFydFBvaW50ZXIs
IGxocy5tX3VuaXRzLCBzaXplb2YoKm1fdW5pdHMpICogbGhzLm51bWJlck9mVW5pdHMoKSk7Cit9
CisKK2ludCBCaW5OdW06OkRpdmlzaW9uQWNjdW11bGF0b3I6OmNvbXBhcmUoY29uc3QgQmluTnVt
JiBvcGVyYW5kKSBjb25zdAoreworICAgIGlmIChjb25zdCBpbnQgZGlmZlVuaXRzID0gbnVtYmVy
T2ZVbml0cygpIC0gb3BlcmFuZC5udW1iZXJPZlVuaXRzKCkpCisgICAgICAgIHJldHVybiBkaWZm
VW5pdHM7CisKKyAgICB1aW50MzJfdCogYWNjdW11bGF0b3JQb2ludGVyID0gbV9tb3N0U2lnbmlm
aWNhbnRVbml0UG9pbnRlcjsKKyAgICBjb25zdCB1aW50MzJfdCogb3BlcmFuZFBvaW50ZXIgPSBv
cGVyYW5kLm1fdW5pdHMgKyBvcGVyYW5kLm51bWJlck9mVW5pdHMoKSAtIDE7CisgICAgd2hpbGUg
KG9wZXJhbmRQb2ludGVyID49IG9wZXJhbmQubV91bml0cykgeworICAgICAgICBpZiAocHRyZGlm
Zl90IGNvbnN0IGRpZmYgPSAqYWNjdW11bGF0b3JQb2ludGVyIC0gKm9wZXJhbmRQb2ludGVyKQor
ICAgICAgICAgICAgcmV0dXJuIGRpZmY7CisgICAgICAgIC0tYWNjdW11bGF0b3JQb2ludGVyOwor
ICAgICAgICAtLW9wZXJhbmRQb2ludGVyOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKwordm9p
ZCBCaW5OdW06OkRpdmlzaW9uQWNjdW11bGF0b3I6OmV4dGVuZCgpCit7CisgICAgQVNTRVJUKG1f
bGVhc3RTaWduaWZpY2FudFVuaXRQb2ludGVyID4gbV91bml0cyk7CisgICAgLS1tX2xlYXN0U2ln
bmlmaWNhbnRVbml0UG9pbnRlcjsKK30KKworLy8gRnVzZWQgbXVsdGlwbHkgYW5kIHN1YnRyYWN0
IGZvciBjYWxjdWxhdGluZworLy8gICAgIGFjY3VtdWxhdG9yIC09IGRpdmlzb3IgKiBxdW90aWVu
dAordm9pZCBCaW5OdW06OkRpdmlzaW9uQWNjdW11bGF0b3I6Om11bHRpcGx5QW5kU3VidHJhY3Qo
Y29uc3QgQmluTnVtJiBkaXZpc29yLCBjb25zdCB1aW50MzJfdCBxdW90aWVudCkKK3sKKyAgICBB
U1NFUlQocXVvdGllbnQgIT0gMHUpOworICAgIHVpbnQzMl90KiBhY2N1bXVsYXRvclBvaW50ZXIg
PSBtX2xlYXN0U2lnbmlmaWNhbnRVbml0UG9pbnRlcjsKKyAgICB1aW50MzJfdCBib3Jyb3cgPSAw
OworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZGl2aXNvci5udW1iZXJPZlVuaXRzKCk7ICsraSkg
eworICAgICAgICBjb25zdCB1aW50NjRfdCBzdWI2NCA9IHVpbnQ2NF90KGRpdmlzb3IubV91bml0
c1tpXSkgKiBxdW90aWVudCArIGJvcnJvdzsKKyAgICAgICAgYm9ycm93ID0gdWludDMyX3Qoc3Vi
NjQgLyBCaWxsaW9uKTsKKyAgICAgICAgY29uc3QgdWludDMyX3Qgc3ViMzIgPSB1aW50MzJfdChz
dWI2NCAlIEJpbGxpb24pOworICAgICAgICBBU1NFUlQoYWNjdW11bGF0b3JQb2ludGVyIDw9IG1f
bW9zdFNpZ25pZmljYW50VW5pdFBvaW50ZXIpOworICAgICAgICBpZiAoc3ViMzIgPiAqYWNjdW11
bGF0b3JQb2ludGVyKSB7CisgICAgICAgICAgICAqYWNjdW11bGF0b3JQb2ludGVyICs9IEJpbGxp
b24gLSBzdWIzMjsKKyAgICAgICAgICAgICsrYm9ycm93OworICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgICphY2N1bXVsYXRvclBvaW50ZXIgLT0gc3ViMzI7CisgICAgICAgIEFTU0VSVCgqYWNj
dW11bGF0b3JQb2ludGVyIDwgdWludChCaWxsaW9uKSk7CisgICAgICAgIGFjY3VtdWxhdG9yUG9p
bnRlcisrOworICAgIH0KKworICAgIGlmIChib3Jyb3cpIHsKKyAgICAgICAgQVNTRVJUKGFjY3Vt
dWxhdG9yUG9pbnRlciA8PSBtX21vc3RTaWduaWZpY2FudFVuaXRQb2ludGVyKTsKKyAgICAgICAg
QVNTRVJUKCphY2N1bXVsYXRvclBvaW50ZXIgPj0gYm9ycm93KTsKKyAgICAgICAgKmFjY3VtdWxh
dG9yUG9pbnRlciAtPSBib3Jyb3c7CisgICAgfQorfQorCit2b2lkIEJpbk51bTo6RGl2aXNpb25B
Y2N1bXVsYXRvcjo6cmVtb3ZlTGVhZGluZ1plcm9zKCkKK3sKKyAgICB3aGlsZSAobV9tb3N0U2ln
bmlmaWNhbnRVbml0UG9pbnRlciA+IG1fbGVhc3RTaWduaWZpY2FudFVuaXRQb2ludGVyICYmICEq
bV9tb3N0U2lnbmlmaWNhbnRVbml0UG9pbnRlcikKKyAgICAgICAgLS1tX21vc3RTaWduaWZpY2Fu
dFVuaXRQb2ludGVyOworfQorCit2b2lkIEJpbk51bTo6RGl2aXNpb25BY2N1bXVsYXRvcjo6emVy
bygpCit7CisgICAgbV9tb3N0U2lnbmlmaWNhbnRVbml0UG9pbnRlciA9IG1fbGVhc3RTaWduaWZp
Y2FudFVuaXRQb2ludGVyOworICAgICptX21vc3RTaWduaWZpY2FudFVuaXRQb2ludGVyID0gMDsK
K30KKworLy8gQ29udmVydCBhIHNpZ25pZmljYW50IG9mIElFRUU3NTQgZGVjaW1hbDEyOCBlbmNv
ZGVkIGRhdGEgaW50byBiaWxsaW9uCisvLyBiYXNlIG11bHRpcGxlIHByZWNpc2lvbiBpbnRlZ2Vy
LiBFYWNoIHVuaXQgY2FuIGhvbGQgOSBkZWNjaW1hbCBkaWdpdHMuCisvLyA0IHVuaXRzICg0eDk9
MzYgZGlnaXRzKSBjYW4gaG9sZCAzNCBkaWdpdHMgaW4gSUVFRTc1NCBkZWNpbWFsMTI4LgorQmlu
TnVtOjpCaW5OdW0oY29uc3QgRGVjaW1hbDEyOEltcGwmIGRhdGEpCit7CisgICAgZmlsbFplcm8o
KTsKKworICAgIGludCBrID0gMDsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IE51bWJlck9mVW5p
dHMgLSAxOyArK2kpIHsKKyAgICAgICAgbV91bml0c1tpXSA9IHBhY2tEcGRJbkJpbGxpb24oZGF0
YS5kcGRBdChrKSwgZGF0YS5kcGRBdChrICsgMSksIGRhdGEuZHBkQXQoayArIDIpKTsKKyAgICAg
ICAgayArPSAzOworICAgIH0KKworICAgIG1fdW5pdHNbM10gPSBrRHBkVG85OTlbZGF0YS5kcGRB
dChrKV0gKyBrRHBkVG85OTlbZGF0YS5kcGRBdChrICsgMSldICogMTAwMCArIGRhdGEuY29lZmZp
Y2VudE1zZCgpICogMTAwMCAqIDEwMDA7CisKKyAgICAvLyBSZW1vdmUgbGVhZGluZyB6ZXJvcwor
ICAgIG1fbnVtYmVyT2ZVbml0cyA9IDQ7CisgICAgd2hpbGUgKG1fbnVtYmVyT2ZVbml0cyA+IDAp
IHsKKyAgICAgICAgaWYgKG1fdW5pdHNbbV9udW1iZXJPZlVuaXRzIC0gMV0pCisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgLS1tX251bWJlck9mVW5pdHM7CisgICAgfQorfQorCisvLyBudW1i
ZXJPZlVuaXRzIGNhbiBiZSB6ZXJvIHdoZW4gMCB4IDAuCitCaW5OdW06OkJpbk51bShjb25zdCBp
bnQgbnVtYmVyT2ZVbml0cykKK3sKKyAgICBBU1NFUlQobnVtYmVyT2ZVbml0cyA+PSAwKTsKKyAg
ICBBU1NFUlQobnVtYmVyT2ZVbml0cyA8PSBpbnQoV1RGX0FSUkFZX0xFTkdUSChtX3VuaXRzKSkp
OworICAgIG1fbnVtYmVyT2ZVbml0cyA9IG51bWJlck9mVW5pdHM7CisgICAgZmlsbFplcm8oKTsK
K30KKworLy8gZGlnaXRJbmRleCA9IDAgPT0gbGVhc3Qgc2lnbmlmaWNhbnQgZGlnaXQKK2ludCBC
aW5OdW06OmRpZ2l0QXQoY29uc3QgaW50IGRpZ2l0SW5kZXgpIGNvbnN0Cit7CisgICAgQVNTRVJU
KHVpbnQoZGlnaXRJbmRleCkgPCB1aW50KG1fbnVtYmVyT2ZVbml0cyAqIE51bWJlck9mRGlnaXRz
SW5Vbml0KSk7CisgICAgY29uc3QgaW50IHVuaXRJbmRleCA9IGRpZ2l0SW5kZXggLyBOdW1iZXJP
ZkRpZ2l0c0luVW5pdDsKKyAgICBjb25zdCBpbnQgZGlnaXRDb2x1bW4gPSBkaWdpdEluZGV4ICUg
TnVtYmVyT2ZEaWdpdHNJblVuaXQ7CisgICAgcmV0dXJuIChtX3VuaXRzW3VuaXRJbmRleF0gLyBr
UG93ZXJzW2RpZ2l0Q29sdW1uXSkgJSAxMDsKK30KKworLy8gUmVhZGVyIG9mIG50aCB1bml0IGZy
b20gbW9zdCBzaWduaWZpY2FudCB1bml0LgordWludDMyX3QgQmluTnVtOjptb3N0U2lnbmlmaWNh
bnRVbml0KGNvbnN0IGludCBrKSBjb25zdAoreworICAgIEFTU0VSVChrID49IDApOworICAgIEFT
U0VSVChrIDwgbnVtYmVyT2ZVbml0cygpKTsKKyAgICByZXR1cm4gbV91bml0c1tudW1iZXJPZlVu
aXRzKCkgLSBrIC0gMV07Cit9CisKKy8vIENhbGN1bGF0ZXMgZXN0aW1hdGVkIHF1b3RpZW50IGZy
b20gbW9zdCBzaWduaWZpY2FuZCB1bml0IGFuZCBtb3N0CisvLyBzaWduZmljYW50IDJiaXQgZnJv
bSBuZXh0IHVuaXQgb2YgZGl2aXNvci4KK3VpbnQzMl90IEJpbk51bTo6Y2FsY3VsYXRlRXN0aW1h
dGVkRGl2aXNvcihjb25zdCBCaW5OdW0mIGRpdmlzb3IpCit7CisgICAgdWludDMyX3QgZXN0aW1h
dGUgPSBkaXZpc29yLm1vc3RTaWduaWZpY2FudFVuaXQoMCkgKiA0OworICAgIGlmIChkaXZpc29y
Lm51bWJlck9mVW5pdHMoKSA9PSAxKQorICAgICAgICByZXR1cm4gZXN0aW1hdGU7CisKKyAgICB1
aW50MzJfdCByZXN0ID0gZGl2aXNvci5tb3N0U2lnbmlmaWNhbnRVbml0KDEpOworICAgIGlmIChk
aXZpc29yLm1vc3RTaWduaWZpY2FudFVuaXQoMSkgPj0gNzUwICogTWlsbGlvbikgeworICAgICAg
ICBlc3RpbWF0ZSArPSAzOworICAgICAgICByZXN0IC09IDc1MCAqIE1pbGxpb247CisKKyAgICB9
IGVsc2UgaWYgKGRpdmlzb3IubW9zdFNpZ25pZmljYW50VW5pdCgxKSA+PSA1MDAgKiBNaWxsaW9u
KSB7CisgICAgICAgIGVzdGltYXRlICs9IDI7CisgICAgICAgIHJlc3QgLT0gNTAwICogTWlsbGlv
bjsKKworICAgIH0gZWxzZSBpZiAoZGl2aXNvci5tb3N0U2lnbmlmaWNhbnRVbml0KDEpID49IDI1
MCAqIE1pbGxpb24pIHsKKyAgICAgICAgKytlc3RpbWF0ZTsKKyAgICAgICAgcmVzdCAtPSAyNTAg
KiBNaWxsaW9uOworICAgIH0KKworICAgIGlmIChyZXN0KQorICAgICAgICByZXR1cm4gZXN0aW1h
dGUgKyAxOworCisgICAgZm9yIChpbnQgaSA9IGRpdmlzb3IubnVtYmVyT2ZVbml0cygpIC0gMjsg
aSA+PSAwOyAtLWkpIHsKKyAgICAgICAgaWYgKGRpdmlzb3IubV91bml0c1tpXSkgeworICAgICAg
ICAgICAgKytlc3RpbWF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQor
CisgICAgcmV0dXJuIGVzdGltYXRlOworfQorCisvLyBDb252ZXJ0IEJpbk51bSBmcm9tIG1vc3Qg
c2lnbmlmaWNhbnQgdW5pdCB0byBsZWFzdCBzaWduZmljYW50IHVuaXQgaW50bworLy8gQmNkTnVt
IGFuZCByZXR1cm5zIG51bWJlciBvZiBkaWdpdHMgbm90IHRvIHN0b3JlIGludG8gQmNkTnVtLgor
aW50IEJpbk51bTo6Q29udmVydFRvKEJjZE51bSYgcmVzdWx0KSBjb25zdAoreworICAgIC8vIFNr
aXAgbGVhZGluZyB6ZXJvcworICAgIGludCBiaW5EaWdpdEluZGV4ID0gbnVtYmVyT2ZVbml0cygp
ICogTnVtYmVyT2ZEaWdpdHNJblVuaXQgLSAxOworICAgIHdoaWxlIChiaW5EaWdpdEluZGV4ID4g
MCkgeworICAgICAgICBpZiAoZGlnaXRBdChiaW5EaWdpdEluZGV4KSkKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAtLWJpbkRpZ2l0SW5kZXg7CisgICAgfQorCisgICAgLy8gVGFrZSBrRGln
aXQrMSBmcm9tIEJpbk51bS4KKyAgICBpbnQgYmNkRGlnaXRJbmRleCA9IERlY2ltYWwxMjhJbXBs
OjpQcmVjaXNpb247CisgICAgd2hpbGUgKGJjZERpZ2l0SW5kZXggPj0gMCAmJiBiaW5EaWdpdElu
ZGV4ID49IDApIHsKKyAgICAgICAgY29uc3QgaW50IGRpZ2l0ID0gZGlnaXRBdChiaW5EaWdpdElu
ZGV4KTsKKyAgICAgICAgcmVzdWx0LnNldERpZ2l0QXQoYmNkRGlnaXRJbmRleCwgZGlnaXQpOwor
ICAgICAgICAtLWJpbkRpZ2l0SW5kZXg7CisgICAgICAgIC0tYmNkRGlnaXRJbmRleDsKKyAgICB9
CisKKyAgICBpZiAoYmluRGlnaXRJbmRleCA8IDApCisgICAgICAgIHJlc3VsdC5zaGlmdFJpZ2h0
KGJjZERpZ2l0SW5kZXggKyAxKTsKKyAgICBlbHNlCisgICAgICAgIHJlc3VsdC5zaGlmdFJpZ2h0
V2l0aFJvdW5kKGJjZERpZ2l0SW5kZXggKyAxKTsKKworICAgIHJldHVybiBiaW5EaWdpdEluZGV4
ICsgMTsKK30KKworLy8gZGl2aWRlIGJhc2UgYmlsbGlvbiBpbnRlZ2VyIGJ5IGJhc2UgYmlsbGlv
biBpbnRlZ2VyLgordWludDMyX3QgQmluTnVtOjpkaXZpZGUoY29uc3QgdWludDMyX3QgaGlnaCwg
Y29uc3QgdWludDMyX3QgbG93LCBjb25zdCB1aW50NjRfdCBkaXZpc29yKQoreworICAgIHJldHVy
biB1aW50MzJfdCgodWludDY0X3QoaGlnaCkgKiBCaWxsaW9uICsgbG93KSAvIGRpdmlzb3IpOwor
fQorCisvLyBkaXZpZGUgQmluTnVtIGJ5IEJpbk51bS4gZGl2aXNvciBtdXN0IG5vdCBiZSB6ZXJv
LgorRGVjaW1hbDEyOEltcGwgQmluTnVtOjpkaXZpZGUoY29uc3QgQmluTnVtJiBkaXZpZGVuZCwg
Y29uc3QgQmluTnVtJiBkaXZpc29yLCBjb25zdCBpbnQgcXVvdGllbnRFeHBvbmVudCwgY29uc3Qg
aW50IHF1b3RpZW50U2lnbiwgRGVjaW1hbDEyOEltcGw6OmRpdmlkZVJlc3VsdCBjb25zdCBxdW90
aWVudFR5cGUpCit7CisgICAgY29uc3QgdWludDY0X3QgZGl2aXNvcjY0ID0KKyAgICAgICAgZGl2
aXNvci5udW1iZXJPZlVuaXRzKCkgPiAyCisgICAgICAgICAgICAgICAgPyB1aW50NjRfdChkaXZp
c29yLm1vc3RTaWduaWZpY2FudFVuaXQoMCkpICogQmlsbGlvbiArIGRpdmlzb3IubW9zdFNpZ25p
ZmljYW50VW5pdCgxKSArIDEKKyAgICAgICAgICAgICAgICA6IGRpdmlzb3IubnVtYmVyT2ZVbml0
cygpID4gMSA/IHVpbnQ2NF90KGRpdmlzb3IubW9zdFNpZ25pZmljYW50VW5pdCgwKSkgKiBCaWxs
aW9uICsgZGl2aXNvci5tb3N0U2lnbmlmaWNhbnRVbml0KDEpIDogMDsKKworICAgIGNvbnN0IHVp
bnQzMl90IGVzdGltYXRlZERpdmlzb3IgPSBjYWxjdWxhdGVFc3RpbWF0ZWREaXZpc29yKGRpdmlz
b3IpOworICAgIEFTU0VSVChlc3RpbWF0ZWREaXZpc29yID4gMHUpOworICAgIGNvbnN0IHVpbnQz
Ml90IGludmVyc2VFc3RpbWF0ZWREaXZpc29yID0gRm91ckJpbGxpb24gLyBlc3RpbWF0ZWREaXZp
c29yOworCisgICAgQmluTnVtIHF1b3RpZW50KE51bWJlck9mVW5pdHMgKyAxKTsKKyAgICBpbnQg
cXVvdGllbnRVbml0SW5kZXggPSBxdW90aWVudC5udW1iZXJPZlVuaXRzKCkgLSAxOworCisgICAg
Ly8gR2VuZXJhdGUgcXVvdGllbnQgZnJvbSBtb3N0IHNpZ25pZmljYW50IHVuaXQgdG8gbGVhc3Qg
c2lnbmlmaWNhbnQgdW5pdAorICAgIC8vIHVudGlsOgorICAgIC8vICAgIG8gR2V0IGVub3VnaCB1
bml0cyBvZiBxdW90aWVudCwgb3IKKyAgICAvLyAgICBvIFRoZSBhY2N1bXVsYXRvciBpcyBzbWFs
bGVyIHRoYW4gZGl2aXNvci4KKyAgICAvLyBBdCB0aGUgZW5kIG9mIGxvb3AsIGFjY3VtdWxhdG9y
IGNvbnRhaW5zIHJlbWFpbmRlci4KKyAgICBEaXZpc2lvbkFjY3VtdWxhdG9yIGFjY3VtdWxhdG9y
KGRpdmlkZW5kLCBkaXZpc29yKTsKKyAgICBmb3IgKDs7KSB7CisgICAgICAgIC8vIHN1YnRyYWN0
IHF1b3RpZW50IHRpbWVzIGRpdmlzb3IgZnJvbSBhY2N1bWxhdG9yIHVudGlsIGFjY3VtdWxhdG9y
CisgICAgICAgIC8vIGlzIGdyZWF0ZXIgdGhhbiBkaXZpc29yLgorICAgICAgICBmb3IgKDs7KSB7
CisgICAgICAgICAgICBhY2N1bXVsYXRvci5yZW1vdmVMZWFkaW5nWmVyb3MoKTsKKyAgICAgICAg
ICAgIGlmIChhY2N1bXVsYXRvci5pc1plcm8oKSkKKyAgICAgICAgICAgICAgICBicmVhazsKKwor
ICAgICAgICAgICAgY29uc3QgaW50IGRpZmYgPSBhY2N1bXVsYXRvci5jb21wYXJlKGRpdmlzb3Ip
OworICAgICAgICAgICAgaWYgKGRpZmYgPCAwKQorICAgICAgICAgICAgICAgIGJyZWFrOworCisg
ICAgICAgICAgICBpZiAoIWRpZmYpIHsKKyAgICAgICAgICAgICAgICBxdW90aWVudC5tX3VuaXRz
W3F1b3RpZW50VW5pdEluZGV4XSArPSAxOworICAgICAgICAgICAgICAgIGFjY3VtdWxhdG9yLnpl
cm8oKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgY29uc3QgdWludDMyX3QgcGFydGlhbFF1b3RpZW50ID0KKyAgICAgICAgICAgICAgICBhY2N1
bXVsYXRvci5udW1iZXJPZlVuaXRzKCkgPT0gZGl2aXNvci5udW1iZXJPZlVuaXRzKCkKKyAgICAg
ICAgICAgICAgICAgICAgICAgID8gZGl2aXNvci5udW1iZXJPZlVuaXRzKCkgPiAxCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID8gZGl2aWRlKGFjY3VtdWxhdG9yLm1vc3RTaWduaWZp
Y2FudFVuaXQoMCksIGFjY3VtdWxhdG9yLm1vc3RTaWduaWZpY2FudFVuaXQoMSksIGRpdmlzb3I2
NCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBhY2N1bXVsYXRvci5tb3N0U2ln
bmlmaWNhbnRVbml0KDApIC8gZGl2aXNvci5tb3N0U2lnbmlmaWNhbnRVbml0KDApCisgICAgICAg
ICAgICAgICAgOiBhY2N1bXVsYXRvci5tb3N0U2lnbmlmaWNhbnRVbml0KDApICogaW52ZXJzZUVz
dGltYXRlZERpdmlzb3I7CisKKyAgICAgICAgICAgIGNvbnN0IHVpbnQzMl90IGluY3JlbWVudEFt
b3VudCA9IHN0ZDo6bWF4KHBhcnRpYWxRdW90aWVudCwgMXUpOworICAgICAgICAgICAgcXVvdGll
bnQubV91bml0c1txdW90aWVudFVuaXRJbmRleF0gKz0gaW5jcmVtZW50QW1vdW50OworICAgICAg
ICAgICAgYWNjdW11bGF0b3IubXVsdGlwbHlBbmRTdWJ0cmFjdChkaXZpc29yLCBpbmNyZW1lbnRB
bW91bnQpOworICAgICAgICB9CisKKyAgICAgICAgLy8gcXVvdGllbnQubW9zdFNpZ25pZmljYW50
VW5pdCgwKSBjYW4gYmUgemVybyBpZiBkaXZpZGVuZCBpcyBzbWFsbGVyIHRoYW4gZGl2aXNvciwK
KyAgICAgICAgLy8gZS5nLiAxLzIuCisgICAgICAgIGlmIChxdW90aWVudC5tb3N0U2lnbmlmaWNh
bnRVbml0KDApKSB7CisgICAgICAgICAgICAtLXF1b3RpZW50VW5pdEluZGV4OworICAgICAgICAg
ICAgaWYgKHF1b3RpZW50VW5pdEluZGV4IDwgMCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmICghYWNjdW11bGF0b3IubW9zdFNpZ25pZmljYW50VW5pdCgw
KSAmJiAhYWNjdW11bGF0b3IuaGFzTW9yZVVuaXQoKSkgeworICAgICAgICAgICAgYWNjdW11bGF0
b3IucmVtb3ZlTGVhZGluZ1plcm9zKCk7CisgICAgICAgICAgICBpZiAoYWNjdW11bGF0b3IuaXNa
ZXJvKCkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgYWNjdW11
bGF0b3IuZXh0ZW5kKCk7CisgICAgfQorCisgICAgcXVvdGllbnQuU2hpZnRSaWdoKHF1b3RpZW50
VW5pdEluZGV4ICsgMSk7CisKKyAgICBCY2ROdW0gcmVzdWx0OworICAgIGNvbnN0IGludCBvdmVy
ZmxvdyA9IHF1b3RpZW50LkNvbnZlcnRUbyhyZXN1bHQpOworICAgIGludCByZXN1bHRFeHBvbmVu
dCA9IHF1b3RpZW50RXhwb25lbnQgKyBvdmVyZmxvdzsKKworICAgIGNvbnN0IGludCBrID0gYWNj
dW11bGF0b3IubnVtYmVyT2ZVbml0SW5GcmFjdGlvblBhcnQoKTsKKyAgICBpZiAoayA+IDApIHsK
KyAgICAgICAgcmVzdWx0RXhwb25lbnQgLT0gayAqIE51bWJlck9mRGlnaXRzSW5Vbml0OworICAg
ICAgICBpZiAoIWFjY3VtdWxhdG9yLm1vc3RTaWduaWZpY2FudFVuaXQoMCkpIHsKKyAgICAgICAg
ICAgIC8vIFdoZW4gcXVvdGllbnQgaXMgZXhhY3QsIHRoZXJlIG1heSBiZSB1cCB0byA4IGV4dHJh
IHRyYWlsaW5nCisgICAgICAgICAgICAvLyB6ZXJvcy4KKyAgICAgICAgICAgIHJlc3VsdEV4cG9u
ZW50ICs9IHJlc3VsdC5yZW1vdmVUcmFpbGluZ1plcm9zKCk7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBzd2l0Y2ggKHF1b3RpZW50VHlwZSkgeworICAgIGNhc2UgRGVjaW1hbDEyOEltcGw6OkZs
b2F0UmVzdWx0OgorICAgICAgICByZXR1cm4gcmVzdWx0LmZpbmFsaXplKHJlc3VsdEV4cG9uZW50
LCBxdW90aWVudFNpZ24pOworCisgICAgY2FzZSBEZWNpbWFsMTI4SW1wbDo6SW50ZWdlclJlc3Vs
dDogeworICAgICAgICBjb25zdCBpbnQgbnVtYmVyT2ZRdW90aWVudERpZ2l0cyA9IHJlc3VsdC5j
b3VudERpZ2l0cygpOworICAgICAgICBpZiAobnVtYmVyT2ZRdW90aWVudERpZ2l0cyArIHJlc3Vs
dEV4cG9uZW50ID4gRGVjaW1hbDEyOEltcGw6OlByZWNpc2lvbikgeworICAgICAgICAgICAgLy8g
UXVvdGllbnQgaXMgdG9vIGxhcmdlIGZvciBpbnRlZ2VyLgorICAgICAgICAgICAgcmV0dXJuIERl
Y2ltYWwxMjhJbXBsOjpxdWlldE5hTigwKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChyZXN1
bHRFeHBvbmVudCA+PSAwKSB7CisgICAgICAgICAgICByZXN1bHQuc2hpZnRSaWdodFdpdGhSb3Vu
ZChyZXN1bHRFeHBvbmVudCk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0LmZpbmFsaXplKHJl
c3VsdEV4cG9uZW50LCBxdW90aWVudFNpZ24pOworICAgICAgICB9CisKKyAgICAgICAgLy8gRHJv
cCBmcmFjdGlvbiBvZiBxdW90aWVudC4KKyAgICAgICAgY29uc3QgaW50IG51bWJlck9mRHJvcERp
Z2l0cyA9IC1yZXN1bHRFeHBvbmVudDsKKyAgICAgICAgaWYgKG51bWJlck9mUXVvdGllbnREaWdp
dHMgPiBudW1iZXJPZkRyb3BEaWdpdHMpIHsKKyAgICAgICAgICAgIHJlc3VsdC5zaGlmdFJpZ2h0
KG51bWJlck9mRHJvcERpZ2l0cyk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0LmZpbmFsaXpl
KDAsIHF1b3RpZW50U2lnbik7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gRGVjaW1hbDEy
OEltcGw6Onplcm8ocXVvdGllbnRTaWduKTsKKyAgICB9CisKKyAgICBkZWZhdWx0OgorICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIERlY2ltYWwxMjhJbXBsOjpx
dWlldE5hTigwKTsKKyAgICB9Cit9CisKK3ZvaWQgQmluTnVtOjpmaWxsWmVybygpCit7CisgICAg
OjptZW1zZXQobV91bml0cywgMCwgc2l6ZW9mKG1fdW5pdHMpKTsKK30KKworLy8gTXVsdGlwbHkg
bGhzIGJ5IHJocyBpbnRvIHByb2R1Y3QuCitEZWNpbWFsMTI4SW1wbCBCaW5OdW06Ok11bHRpcGx5
KGNvbnN0IEJpbk51bSYgbGhzLCBjb25zdCBCaW5OdW0mIHJocywgY29uc3QgaW50IHByb2R1Y3RF
eHBvbmVudCwgY29uc3QgaW50IHJlc3VsdFNpZ24pCit7CisgICAgQmluTnVtIHByb2R1Y3QobGhz
Lm51bWJlck9mVW5pdHMoKSArIHJocy5udW1iZXJPZlVuaXRzKCkpOworICAgIGludCBwcm9kdWN0
VW5pdEluZGV4ID0gMDsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGxocy5udW1iZXJPZlVuaXRz
KCk7IGkrKykgeworICAgICAgICB1aW50MzJfdCBjYXJyeSA9IDA7CisgICAgICAgIGludCBrID0g
cHJvZHVjdFVuaXRJbmRleDsKKyAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCByaHMubnVtYmVy
T2ZVbml0cygpOyBqKyspIHsKKyAgICAgICAgICAgIGNvbnN0IHVpbnQ2NF90IHU2NCA9IHVpbnQ2
NF90KGxocy5tX3VuaXRzW2ldKSAqIHJocy5tX3VuaXRzW2pdICsgY2FycnkgKyBwcm9kdWN0Lm1f
dW5pdHNba107CisgICAgICAgICAgICBjYXJyeSA9IHVpbnQzMl90KHU2NCAvIEJpbGxpb24pOwor
ICAgICAgICAgICAgcHJvZHVjdC5tX3VuaXRzW2tdID0gdWludDMyX3QodTY0ICUgQmlsbGlvbik7
CisgICAgICAgICAgICArK2s7CisgICAgICAgIH0KKyAgICAgICAgcHJvZHVjdC5tX3VuaXRzW2td
ID0gY2Fycnk7CisgICAgICAgICsrcHJvZHVjdFVuaXRJbmRleDsKKyAgICB9CisKKyAgICBCY2RO
dW0gcmVzdWx0OworICAgIGNvbnN0IGludCBvdmVyZmxvdyA9IHByb2R1Y3QuQ29udmVydFRvKHJl
c3VsdCk7CisgICAgY29uc3QgaW50IHJlc3VsdEV4cG9uZW50ID0gcHJvZHVjdEV4cG9uZW50ICsg
b3ZlcmZsb3c7CisKKyAgICAvLyBmaW5hbGl6ZSBjYW4gcm91bmQga0RpZ2l0KzEgZGlnaXRzIHRv
IGtEaWdpdC4KKyAgICByZXR1cm4gcmVzdWx0LmZpbmFsaXplKHJlc3VsdEV4cG9uZW50LCByZXN1
bHRTaWduKTsKK30KKwordWludDMyX3QgQmluTnVtOjpwYWNrRHBkSW5CaWxsaW9uKHVpbnQgZHBk
MCwgdWludCBkcGQxLCB1aW50IGRwZDIpCit7CisgICAgY29uc3QgdWludDMyX3QgYSA9IGtEcGRU
bzk5OVtkcGQwXTsKKyAgICBjb25zdCB1aW50MzJfdCBiID0ga0RwZFRvOTk5W2RwZDFdOworICAg
IGNvbnN0IHVpbnQzMl90IGMgPSBrRHBkVG85OTlbZHBkMl07CisgICAgcmV0dXJuIGEgKyAoYiAq
IDEwMDApICsgKGMgKiBNaWxsaW9uKTsKK30KKwordm9pZCBCaW5OdW06OlNoaWZ0UmlnaChjb25z
dCBpbnQgc2hpZnRBbW91bnQpCit7CisgICAgQVNTRVJUKHNoaWZ0QW1vdW50ID49IDApOworICAg
IEFTU0VSVChzaGlmdEFtb3VudCA8PSBtX251bWJlck9mVW5pdHMpOworICAgIGludCBpID0gMDsK
KyAgICB3aGlsZSAoaSArIHNoaWZ0QW1vdW50IDwgbV9udW1iZXJPZlVuaXRzKSB7CisgICAgICAg
IG1fdW5pdHNbaV0gPSBtX3VuaXRzW2kgKyBzaGlmdEFtb3VudF07CisgICAgICAgICsraTsKKyAg
ICB9CisgICAgd2hpbGUgKGkgPCBtX251bWJlck9mVW5pdHMpIHsKKyAgICAgICAgbV91bml0c1tp
XSA9IDA7CisgICAgICAgICsraTsKKyAgICB9CisgICAgbV9udW1iZXJPZlVuaXRzIC09IHNoaWZ0
QW1vdW50OworfQorCitzdGF0aWMgZG91YmxlIFBvd2VyMTAodWludCBuKQoreworICAgIGRvdWJs
ZSB5ID0gMTsKKyAgICBkb3VibGUgeiA9IDEwOworICAgIGZvciAoOzspIHsKKyAgICAgICAgaWYg
KG4gJiAxKQorICAgICAgICAgICAgeSA9IHkgKiB6OworCisgICAgICAgIG4gPj49IDE7CisgICAg
ICAgIGlmICghbikKKyAgICAgICAgICAgIHJldHVybiB5OworCisgICAgICAgIHogPSB6ICogejsK
KyAgICB9Cit9CisKK3N0YXRpYyBEZWNpbWFsMTI4SW1wbCBQb3dlcjIodWludCBuKQoreworICAg
IERlY2ltYWwxMjhJbXBsIHkoMSk7CisgICAgRGVjaW1hbDEyOEltcGwgeigyKTsKKyAgICBmb3Ig
KDs7KSB7CisgICAgICAgIGlmIChuICYgMSkKKyAgICAgICAgICAgIHkgPSB5ICogejsKKworICAg
ICAgICBuID4+PSAxOworICAgICAgICBpZiAoIW4pCisgICAgICAgICAgICByZXR1cm4geTsKKwor
ICAgICAgICB6ID0geiAqIHo7CisgICAgfQorfQorCitTcGVjaWFsVmFsdWVIYW5kbGVyOjpTcGVj
aWFsVmFsdWVIYW5kbGVyKGNvbnN0IERlY2ltYWwxMjhJbXBsJiBsaHMsIGNvbnN0IERlY2ltYWwx
MjhJbXBsJiByaHMpCisgICAgOiBtX2xocyhsaHMpCisgICAgLCBtX3Jlc3VsdChSZXN1bHRJc0xo
cykKKyAgICAsIG1fcmhzKHJocykKK3sKK30KKworRGVjaW1hbDEyOEltcGwgU3BlY2lhbFZhbHVl
SGFuZGxlcjo6dmFsdWUoKSBjb25zdAoreworICAgIHN3aXRjaCAobV9yZXN1bHQpIHsKKyAgICBj
YXNlIFJlc3VsdElzTGhzOgorICAgICAgICByZXR1cm4gbV9saHM7CisgICAgY2FzZSBSZXN1bHRJ
c3F1aWV0TmFOV2l0aExoc1NpZ246CisgICAgICAgIHJldHVybiBEZWNpbWFsMTI4SW1wbDo6cXVp
ZXROYU4obV9saHMuc2lnbigpKTsKKyAgICBjYXNlIFJlc3VsdElzcXVpZXROYU5XaXRoUmhzU2ln
bjoKKyAgICAgICAgcmV0dXJuIERlY2ltYWwxMjhJbXBsOjpxdWlldE5hTihtX3Jocy5zaWduKCkp
OworICAgIGNhc2UgUmVzdWx0SXNSaHM6CisgICAgICAgIHJldHVybiBtX3JoczsKKyAgICBkZWZh
dWx0OgorICAgICAgICByZXR1cm4gRGVjaW1hbDEyOEltcGw6OnNpZ25hbGluZ05hTihtX2xocy5z
aWduKCkpOworICAgIH0KK30KKworU3BlY2lhbFZhbHVlSGFuZGxlcjo6SGFuZGxlUmVzdWx0IFNw
ZWNpYWxWYWx1ZUhhbmRsZXI6OmhhbmRsZSgpCit7CisgICAgaWYgKG1fbGhzLmlzRmluaXRlKCkg
JiYgbV9yaHMuaXNGaW5pdGUoKSkKKyAgICAgICAgcmV0dXJuIEJvdGhGaW5pdGU7CisKKyAgICBj
b25zdCBEZWNpbWFsMTI4SW1wbDo6SWVlZUNsYXNzIGxoc0NsYXNzID0gbV9saHMuaWVlZUNsYXNz
KCk7CisgICAgY29uc3QgRGVjaW1hbDEyOEltcGw6OkllZWVDbGFzcyByaHNDbGFzcyA9IG1fcmhz
LmllZWVDbGFzcygpOworCisgICAgaWYgKGxoc0NsYXNzID09IERlY2ltYWwxMjhJbXBsOjpDbGFz
c3NpZ25hbGluZ05hTikgeworICAgICAgICBtX3Jlc3VsdCA9IFJlc3VsdElzcXVpZXROYU5XaXRo
TGhzU2lnbjsKKyAgICAgICAgcmV0dXJuIEVpdGhlck5hTjsKKyAgICB9CisKKyAgICBpZiAocmhz
Q2xhc3MgPT0gRGVjaW1hbDEyOEltcGw6OkNsYXNzc2lnbmFsaW5nTmFOKSB7CisgICAgICAgIG1f
cmVzdWx0ID0gUmVzdWx0SXNxdWlldE5hTldpdGhSaHNTaWduOworICAgICAgICByZXR1cm4gRWl0
aGVyTmFOOworICAgIH0KKworICAgIGlmIChsaHNDbGFzcyA9PSBEZWNpbWFsMTI4SW1wbDo6Q2xh
c3NxdWlldE5hTikgeworICAgICAgICBtX3Jlc3VsdCA9IFJlc3VsdElzTGhzOworICAgICAgICBy
ZXR1cm4gRWl0aGVyTmFOOworICAgICB9CisKKyAgICBpZiAocmhzQ2xhc3MgPT0gRGVjaW1hbDEy
OEltcGw6OkNsYXNzcXVpZXROYU4pIHsKKyAgICAgICAgbV9yZXN1bHQgPSBSZXN1bHRJc1JoczsK
KyAgICAgICAgcmV0dXJuIEVpdGhlck5hTjsKKyAgICAgfQorCisgICAgIGlmIChsaHNDbGFzcyA9
PSBEZWNpbWFsMTI4SW1wbDo6Q2xhc3NpbmZpbml0eSkKKyAgICAgICAgIHJldHVybiByaHNDbGFz
cyA9PSBEZWNpbWFsMTI4SW1wbDo6Q2xhc3NpbmZpbml0eSA/IEJvdGhpbmZpbml0eSA6IExoc0lz
aW5maW5pdHk7CisKKyAgICAgaWYgKHJoc0NsYXNzID09IERlY2ltYWwxMjhJbXBsOjpDbGFzc2lu
ZmluaXR5KQorICAgICAgICAgcmV0dXJuIFJoc0lzaW5maW5pdHk7CisKKyAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgIHJldHVybiBCb3RoRmluaXRlOworfQorCit9IC8vIG5hbWVzcGFj
ZQorCisKK2ludCBEZWNpbWFsMTI4SW1wbDo6RW5jb2RlZERhdGE6OmNvZWZmaWNlbnRNc2QoKSBj
b25zdAoreworICAgIHJldHVybiBrQ29tYmluYXRpb25GaWVsZE1hcFtjb21iaW5hdGlvbkZpZWxk
KCldLmNvZWZmaWNlbnQ7Cit9CisKK2ludCBEZWNpbWFsMTI4SW1wbDo6RW5jb2RlZERhdGE6OmNv
bWJpbmF0aW9uRmllbGQoKSBjb25zdAoreworICAgIHJldHVybiAobV93b3Jkc1szXSA+PiAyNikg
JiBDb21iaW5hdGlvbkZpZWxkTWFzazsKK30KKworLy8gRXh0cmFjdCBEUEQoMTBiaXQgd29yZCkg
ZnJvbSAzMmJpdCB3b3JkIHZlY3Rvci4KK2ludCBEZWNpbWFsMTI4SW1wbDo6RW5jb2RlZERhdGE6
OmRwZEF0KGNvbnN0IGludCBkcGRJbmRleCkgY29uc3QKK3sKKyAgICBBU1NFUlQoZHBkSW5kZXgg
Pj0gMCk7CisgICAgQVNTRVJUKGRwZEluZGV4IDw9IERwZEluRGF0YSk7CisgICAgY29uc3QgaW50
IGJpdEluZGV4ID0gZHBkSW5kZXggKiBrRHBkQml0czsKKyAgICBjb25zdCBpbnQgd29yZEluZGV4
ID0gYml0SW5kZXggLyAzMjsKKyAgICBjb25zdCBpbnQgbG93U2hpZnQgPSBiaXRJbmRleCAlIDMy
OworCisgICAgaWYgKGxvd1NoaWZ0ICsga0RwZEJpdHMgPD0gMzIpIHsKKyAgICAgICAgLy8gRFBC
IGluIGEgd29yZC4KKyAgICAgICAgcmV0dXJuIChtX3dvcmRzW3dvcmRJbmRleF0gPj4gbG93U2hp
ZnQpICYga0RwZE1hc2s7CisgICAgfQorCisgICAgLy8gRFBCIGluIHR3byB3b3Jkcy4KKyAgICBj
b25zdCBpbnQgaGlnaFNoaWZ0QW1vdW50ID0gMzIgLSBsb3dTaGlmdDsKKyAgICByZXR1cm4gKCht
X3dvcmRzW3dvcmRJbmRleF0gPj4gbG93U2hpZnQpIHwgKG1fd29yZHNbd29yZEluZGV4ICsgMV0g
PDwgaGlnaFNoaWZ0QW1vdW50KSkgJiBrRHBkTWFzazsKK30KKworaW50IERlY2ltYWwxMjhJbXBs
OjpFbmNvZGVkRGF0YTo6ZXhwb25lbnRCaWFzZWQoKSBjb25zdAoreworICAgIHJldHVybiAoZXhw
b25lbnRNc2IoKSA8PCBFeHBvbmVudENvbnRCaXRzKSB8IGV4cG9uZW50Q29udGludWF0aW9uKCk7
Cit9CisKK2ludCBEZWNpbWFsMTI4SW1wbDo6RW5jb2RlZERhdGE6OmV4cG9uZW50Q29udGludWF0
aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gKG1fd29yZHNbM10gPj4gRXhwb25lbnRDb250U2hp
ZnQpICYgRXhwb25lbnRDb250TWFzazsKK30KKworaW50IERlY2ltYWwxMjhJbXBsOjpFbmNvZGVk
RGF0YTo6ZXhwb25lbnRNc2IoKSBjb25zdAoreworICAgIHJldHVybiBrQ29tYmluYXRpb25GaWVs
ZE1hcFtjb21iaW5hdGlvbkZpZWxkKCldLmV4cG9uZW50OworfQorCit2b2lkIERlY2ltYWwxMjhJ
bXBsOjpFbmNvZGVkRGF0YTo6c2V0Q29tYmluYXRpb25GaWVsZChjb25zdCBpbnQgdmFsdWUpCit7
CisgICAgQVNTRVJUKHVpbnQodmFsdWUpIDw9IDB4MUZ1KTsKKyAgICBtX3dvcmRzWzNdICY9IH4o
Q29tYmluYXRpb25GaWVsZE1hc2sgPDwgQ29tYmluYXRpb25GaWVsZFNoaWZ0KTsKKyAgICBtX3dv
cmRzWzNdIHw9IHZhbHVlIDw8IENvbWJpbmF0aW9uRmllbGRTaGlmdDsKK30KKwordm9pZCBEZWNp
bWFsMTI4SW1wbDo6RW5jb2RlZERhdGE6OnNldENvbWJpbmF0aW9uRmllbGQoY29uc3QgaW50IGV4
cG9uZW50TXNiLCBjb25zdCBpbnQgY29lZmZpY2llbnRNc2QpCit7CisgICAgQVNTRVJUKHVpbnQo
Y29lZmZpY2llbnRNc2QpIDw9IDl1KTsKKyAgICBBU1NFUlQodWludChleHBvbmVudE1zYikgPD0g
MnUpOworICAgIGNvbnN0IGludCB2YWx1ZSA9IGNvZWZmaWNpZW50TXNkIDwgOCA/IChleHBvbmVu
dE1zYiA8PCAzKSB8IGNvZWZmaWNpZW50TXNkIDogMHgxOCB8IChleHBvbmVudE1zYiA8PCAxKSB8
IGNvZWZmaWNpZW50TXNkOworICAgIHNldENvbWJpbmF0aW9uRmllbGQodmFsdWUpOworfQorCit2
b2lkIERlY2ltYWwxMjhJbXBsOjpFbmNvZGVkRGF0YTo6c2V0RHBkQXQoY29uc3QgaW50IGRwZElu
ZGV4LCBjb25zdCBpbnQgZHBkKQoreworICAgIEFTU0VSVChkcGRJbmRleCA+PSAwKTsKKyAgICBB
U1NFUlQoZHBkSW5kZXggPD0gRHBkSW5EYXRhKTsKKyAgICBBU1NFUlQodWludChkcGQpIDw9IDB4
M0ZGdSk7CisgICAgY29uc3QgaW50IGJpdEluZGV4ID0gZHBkSW5kZXggKiBrRHBkQml0czsKKyAg
ICBjb25zdCBpbnQgd29yZEluZGV4ID0gYml0SW5kZXggLyAzMjsKKyAgICBjb25zdCBpbnQgbG93
U2hpZnRBbW91bnQgPSBiaXRJbmRleCAlIDMyOworCisgICAgLy8gU2V0IGxvd2VyIHBhdHQKKyAg
ICBtX3dvcmRzW3dvcmRJbmRleF0gJj0gfihrRHBkTWFzayA8PCBsb3dTaGlmdEFtb3VudCk7Cisg
ICAgbV93b3Jkc1t3b3JkSW5kZXhdIHw9IGRwZCA8PCBsb3dTaGlmdEFtb3VudDsKKworICAgIGlm
IChsb3dTaGlmdEFtb3VudCArIGtEcGRCaXRzID4gMzIpIHsKKyAgICAgICAgLy8gU2V0IGhpZ2h0
IHBhcnQKKyAgICAgICAgY29uc3QgaW50IGhpZ2hTaGlmdEFtb3VudCA9IDMyIC0gbG93U2hpZnRB
bW91bnQ7CisgICAgICAgIG1fd29yZHNbd29yZEluZGV4ICsgMV0gJj0gfihrRHBkTWFzayA+PiBo
aWdoU2hpZnRBbW91bnQpOworICAgICAgICBtX3dvcmRzW3dvcmRJbmRleCArIDFdIHw9IGRwZCA+
PiBoaWdoU2hpZnRBbW91bnQ7CisgICAgfQorfQorCit2b2lkIERlY2ltYWwxMjhJbXBsOjpFbmNv
ZGVkRGF0YTo6c2V0RXhwb25lbnQoY29uc3QgaW50IGV4cG9uZW50KQoreworICAgIGNvbnN0IGlu
dCBiaWFzZWQgPSBleHBvbmVudCArIEViaWFzOworICAgIHNldEV4cG9uZW50Q29udGludWF0aW9u
KGJpYXNlZCAmIEV4cG9uZW50Q29udE1hc2spOworICAgIHNldENvbWJpbmF0aW9uRmllbGQoKGJp
YXNlZCA+PiBFeHBvbmVudENvbnRCaXRzKSAmIDMsIGNvZWZmaWNlbnRNc2QoKSk7Cit9CisKK3Zv
aWQgRGVjaW1hbDEyOEltcGw6OkVuY29kZWREYXRhOjpzZXRFeHBvbmVudENvbnRpbnVhdGlvbihj
b25zdCBpbnQgdmFsdWUpCit7CisgICAgQVNTRVJUKHVpbnQodmFsdWUpIDw9IEV4cG9uZW50Q29u
dE1hc2spOworICAgIG1fd29yZHNbM10gJj0gfihFeHBvbmVudENvbnRNYXNrIDw8IEV4cG9uZW50
Q29udFNoaWZ0KTsKKyAgICBtX3dvcmRzWzNdIHw9IHZhbHVlIDw8IEV4cG9uZW50Q29udFNoaWZ0
OworfQorCit2b2lkIERlY2ltYWwxMjhJbXBsOjpFbmNvZGVkRGF0YTo6c2V0U2lnbihpbnQgdmFs
dWUpCit7CisgICAgaWYgKHZhbHVlKQorICAgICAgICBtX3dvcmRzWzNdIHw9IDF1IDw8IDMxOwor
ICAgIGVsc2UKKyAgICAgICAgbV93b3Jkc1szXSAmPSAoMXUgPDwgMzEpIC0gMTsKK30KKworRGVj
aW1hbDEyOEltcGw6OkRlY2ltYWwxMjhJbXBsKCkKK3sKKyAgICA6Om1lbXNldChtX2RhdGEubV93
b3JkcywgMCwgc2l6ZW9mKG1fZGF0YS5tX3dvcmRzKSk7Cit9CisKK0RlY2ltYWwxMjhJbXBsOjpE
ZWNpbWFsMTI4SW1wbChjb25zdCBFbmNvZGVkRGF0YSYgZGF0YSkKKyAgICA6IG1fZGF0YShkYXRh
KQoreworfQorCisvLyBDb25zdHJ1Y3Qgc3BlY2lhbCB2YWx1ZS4KK0RlY2ltYWwxMjhJbXBsOjpE
ZWNpbWFsMTI4SW1wbChpbnQgY29uc3Qgc2lnbiwgdWludDMyX3QgY29uc3QgcG9zaXRpdmVfaGln
aF93b3JkLCB1aW50MzJfdCBjb25zdCBuZWdhdGl2ZV9oaWdoX3dvcmQpCit7CisgICAgbV9kYXRh
Lm1fd29yZHNbMF0gPSAwOworICAgIG1fZGF0YS5tX3dvcmRzWzFdID0gMDsKKyAgICBtX2RhdGEu
bV93b3Jkc1syXSA9IDA7CisgICAgbV9kYXRhLm1fd29yZHNbM10gPSBzaWduID8gbmVnYXRpdmVf
aGlnaF93b3JkIDogcG9zaXRpdmVfaGlnaF93b3JkOworfQorCitEZWNpbWFsMTI4SW1wbDo6RGVj
aW1hbDEyOEltcGwoY29uc3QgaW50IHNpZ24sIGNvbnN0IHVpbnQ2NF90IHU2NCkKK3sKKyAgICAq
dGhpcyA9IEJjZE51bSh1NjQpLmZpbmFsaXplKDAsIHNpZ24pOworfQorCitEZWNpbWFsMTI4SW1w
bDo6RGVjaW1hbDEyOEltcGwoZG91YmxlIGNvbnN0IGY2NCkKK3sKKyAgICBGbG9hdDY0SW1wbCB2
YWx1ZShmNjQpOworCisgICAgc3dpdGNoICh2YWx1ZS5pZWVlQ2xhc3MoKSkgeworICAgIGNhc2Ug
Q2xhc3NpbmZpbml0eToKKyAgICAgICAgKnRoaXMgPSBpbmZpbml0eSh2YWx1ZS5zaWduKCkpOwor
ICAgICAgICByZXR1cm47CisKKyAgICBjYXNlIENsYXNzTm9ybWFsOiB7CisgICAgICAgIERlY2lt
YWwxMjhJbXBsIHNpZ25maWNhbmQodmFsdWUuc2lnbigpLCB2YWx1ZS5zaWduaWZpY2FuZCgpKTsK
KyAgICAgICAgY29uc3QgaW50IGV4cG9uZW50ID0gdmFsdWUuZXhwb25lbnQoKSAtIEZsb2F0NjRJ
bXBsOjpTaWduaWZpY2FuZEJpdHM7CisgICAgICAgIGlmICghZXhwb25lbnQpIHsKKyAgICAgICAg
ICAgICp0aGlzID0gc2lnbmZpY2FuZDsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CisgICAgICAgIGlmIChleHBvbmVudCA+IDApIHsKKyAgICAgICAgICAgIGNvbnN0IERlY2ltYWwx
MjhJbXBsIHBvd2VyMihQb3dlcjIoZXhwb25lbnQpKTsKKyAgICAgICAgICAgICp0aGlzID0gKHNp
Z25maWNhbmQgKiBwb3dlcjIpLnJvdW5kQXQoRmxvYXQ2NEltcGw6Ok51bWJlck9mRGlnaXRzKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGNvbnN0IERlY2ltYWwx
MjhJbXBsIHBvd2VyMihQb3dlcjIoLWV4cG9uZW50KSk7CisgICAgICAgICp0aGlzID0gKHNpZ25m
aWNhbmQgLyBwb3dlcjIpLnJvdW5kQXQoRmxvYXQ2NEltcGw6Ok51bWJlck9mRGlnaXRzKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNhc2UgQ2xhc3NxdWlldE5hTjoKKyAgICAgICAg
KnRoaXMgPSBxdWlldE5hTih2YWx1ZS5zaWduKCkpOworICAgICAgICByZXR1cm47CisKKyAgICBj
YXNlIENsYXNzc2lnbmFsaW5nTmFOOgorICAgICAgICAqdGhpcyA9IHNpZ25hbGluZ05hTih2YWx1
ZS5zaWduKCkpOworICAgICAgICByZXR1cm47CisKKyAgICBjYXNlIENsYXNzU3Vibm9ybWFsOiB7
CisgICAgICAgIERlY2ltYWwxMjhJbXBsIHNpZ25maWNhbmQodmFsdWUuc2lnbigpLCB2YWx1ZS5y
YXdTaWduaWZpY2FuZCgpKTsKKyAgICAgICAgY29uc3QgRGVjaW1hbDEyOEltcGwgcG93ZXIyID0g
RGVjaW1hbDEyOEltcGwoUG93ZXIyKC1GbG9hdDY0SW1wbDo6RXN1Ym5vcm1hbCkpOworICAgICAg
ICAqdGhpcyA9IChzaWduZmljYW5kIC8gcG93ZXIyKS5yb3VuZEF0KEZsb2F0NjRJbXBsOjpOdW1i
ZXJPZkRpZ2l0cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjYXNlIENsYXNzWmVy
bzoKKyAgICAgICAgKnRoaXMgPSB6ZXJvKHZhbHVlLnNpZ24oKSk7CisgICAgICAgIHJldHVybjsK
KworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorfQorCitEZWNpbWFsMTI4SW1wbDo6RGVjaW1hbDEyOEltcGwoaW50MzJf
dCBjb25zdCBpMzIpCit7CisgICAgKnRoaXMgPSBpMzIgPj0gMCA/IEJjZE51bSh1aW50MzJfdChp
MzIpKS5maW5hbGl6ZSgwLCAwKSA6IEJjZE51bSh1aW50MzJfdCgtaTMyKSkuZmluYWxpemUoMCwg
MSk7Cit9CisKK0RlY2ltYWwxMjhJbXBsOjpEZWNpbWFsMTI4SW1wbChpbnQ2NF90IGNvbnN0IGk2
NCkKK3sKKyAgICAqdGhpcyA9IGk2NCA+PSAwID8gQmNkTnVtKHVpbnQ2NF90KGk2NCkpLmZpbmFs
aXplKDAsIDApIDogQmNkTnVtKHVpbnQ2NF90KC1pNjQpKS5maW5hbGl6ZSgwLCAxKTsKK30KKwor
RGVjaW1hbDEyOEltcGw6OkRlY2ltYWwxMjhJbXBsKGNvbnN0IHVpbnQzMl90IHUzMikKK3sKKyAg
ICAqdGhpcyA9IEJjZE51bSh1MzIpLmZpbmFsaXplKDAsIDApOworfQorCitEZWNpbWFsMTI4SW1w
bDo6RGVjaW1hbDEyOEltcGwoY29uc3QgdWludDY0X3QgdTY0KQoreworICAgICp0aGlzID0gQmNk
TnVtKHU2NCkuZmluYWxpemUoMCwgMCk7Cit9CisKK0RlY2ltYWwxMjhJbXBsOjpEZWNpbWFsMTI4
SW1wbChjb25zdCBEZWNpbWFsMTI4SW1wbCYgcmhzKQoreworICAgIG1fZGF0YSA9IHJocy5tX2Rh
dGE7Cit9CisKKy8vIG9wZXJhdG9ycworRGVjaW1hbDEyOEltcGw6Om9wZXJhdG9yIGRvdWJsZSgp
IGNvbnN0Cit7CisgICAgc3dpdGNoIChpZWVlQ2xhc3MoKSkgeworICAgIGNhc2UgQ2xhc3NpbmZp
bml0eToKKyAgICAgICAgcmV0dXJuIEZsb2F0NjRJbXBsKHNpZ24oKSA/IEZsb2F0NjRCaXRzOjpO
ZWdhdGl2ZUluZmluaXR5UGF0dGVybiA6IEZsb2F0NjRCaXRzOjpQb3NpdGl2ZUluZmluaXR5UGF0
dGVybik7CisKKyAgICBjYXNlIENsYXNzcXVpZXROYU46CisgICAgICAgIHJldHVybiBGbG9hdDY0
SW1wbChzaWduKCkgPyBGbG9hdDY0Qml0czo6TmVnYXRpdmVRdWlldE5hTlBhdHRlcm4gOiBGbG9h
dDY0Qml0czo6UG9zaXRpdmVRdWlldE5hTlBhdHRlcm4pOworCisgICAgY2FzZSBDbGFzc3NpZ25h
bGluZ05hTjoKKyAgICAgICAgcmV0dXJuIEZsb2F0NjRJbXBsKHNpZ24oKSA/IEZsb2F0NjRCaXRz
OjpOZWdhdGl2ZVNpZ25hbGluZ05hTlBhdHRlcm4gOiBGbG9hdDY0Qml0czo6UG9zaXRpdmVTaWdu
YWxpbmdOYU5QYXR0ZXJuKTsKKworICAgIGNhc2UgQ2xhc3NOb3JtYWw6IHsKKyAgICAgICAgY29u
c3QgaW50IGV4cCA9IGV4cG9uZW50KCk7CisgICAgICAgIGlmIChleHAgPCBEQkxfTUlOXzEwX0VY
UCkKKyAgICAgICAgICAgIHJldHVybiBGbG9hdDY0SW1wbChzaWduKCkgPyBGbG9hdDY0Qml0czo6
TmVnYXRpdmVaZXJvUGF0dGVybiA6IEZsb2F0NjRCaXRzOjpQb3NpdGl2ZVplcm9QYXR0ZXJuKTsK
KworICAgICAgICBpZiAoZXhwID4gREJMX01BWF8xMF9FWFApCisgICAgICAgICAgICByZXR1cm4g
RmxvYXQ2NEltcGwoc2lnbigpID8gRmxvYXQ2NEJpdHM6Ok5lZ2F0aXZlSW5maW5pdHlQYXR0ZXJu
IDogRmxvYXQ2NEJpdHM6OlBvc2l0aXZlSW5maW5pdHlQYXR0ZXJuKTsKKworICAgICAgICBCY2RO
dW0gYmNkTnVtKCp0aGlzKTsKKyAgICAgICAgY29uc3QgaW50IG51bWJlck9mRGlnaXRzID0gYmNk
TnVtLmNvdW50RGlnaXRzKCk7CisgICAgICAgIGRvdWJsZSB4ID0gMDsKKyAgICAgICAgZm9yIChp
bnQgaSA9IDE7IGkgPD0gbnVtYmVyT2ZEaWdpdHM7IGkrKykgeworICAgICAgICAgICAgeCAqPSAx
MDsKKyAgICAgICAgICAgIHggKz0gYmNkTnVtLmRpZ2l0QXQobnVtYmVyT2ZEaWdpdHMgLSBpKTsK
KyAgICAgICAgfQorCisgICAgICAgIGNvbnN0IGRvdWJsZSB5ID0gZXhwID49IDAgPyB4ICogUG93
ZXIxMChleHApIDogeCAvIFBvd2VyMTAoLWV4cCk7CisgICAgICAgIHJldHVybiBzaWduKCkgPyAt
eSA6IHk7CisgICAgfQorCisgICAgY2FzZSBDbGFzc1N1Ym5vcm1hbDoKKyAgICAgICAgLy8gU3Vi
bm9ybWFsIHZhbHVlIG9mIERlY2ltYWwxMjhJbXBsIGlzIHRvbyBzbWFsbCBmb3IgZG91YmxlLiBX
ZSByZXR1cm4KKyAgICAgICAgLy8gKzAgb3IgLTAuCisgICAgICAgIHJldHVybiBGbG9hdDY0SW1w
bChzaWduKCkgPyBGbG9hdDY0Qml0czo6TmVnYXRpdmVaZXJvUGF0dGVybiA6IEZsb2F0NjRCaXRz
OjpQb3NpdGl2ZVplcm9QYXR0ZXJuKTsKKworICAgIGNhc2UgQ2xhc3NaZXJvOgorICAgICAgICBy
ZXR1cm4gRmxvYXQ2NEltcGwoc2lnbigpID8gRmxvYXQ2NEJpdHM6Ok5lZ2F0aXZlWmVyb1BhdHRl
cm4gOiBGbG9hdDY0Qml0czo6UG9zaXRpdmVaZXJvUGF0dGVybik7CisKKyAgICBkZWZhdWx0Ogor
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQor
fQorCitEZWNpbWFsMTI4SW1wbCYgRGVjaW1hbDEyOEltcGw6Om9wZXJhdG9yID0oY29uc3QgRGVj
aW1hbDEyOEltcGwmIHJocykKK3sKKyAgICBtX2RhdGEgPSByaHMubV9kYXRhOworICAgIHJldHVy
biAqdGhpczsKK30KKworRGVjaW1hbDEyOEltcGwgRGVjaW1hbDEyOEltcGw6Om9wZXJhdG9yICso
Y29uc3QgRGVjaW1hbDEyOEltcGwmIHJocykgY29uc3QKK3sKKyAgICBjb25zdCBEZWNpbWFsMTI4
SW1wbCYgbGhzID0gKnRoaXM7CisgICAgY29uc3QgaW50IGxoc1NpZ24gPSBsaHMuc2lnbigpOwor
ICAgIGNvbnN0IGludCByaHNTaWduID0gcmhzLnNpZ24oKTsKKworICAgIFNwZWNpYWxWYWx1ZUhh
bmRsZXIgaGFuZGxlcihsaHMsIHJocyk7CisgICAgc3dpdGNoIChoYW5kbGVyLmhhbmRsZSgpKSB7
CisgICAgY2FzZSBTcGVjaWFsVmFsdWVIYW5kbGVyOjpCb3RoRmluaXRlOgorICAgICAgICBicmVh
azsKKworICAgIGNhc2UgU3BlY2lhbFZhbHVlSGFuZGxlcjo6Qm90aGluZmluaXR5OgorICAgICAg
ICByZXR1cm4gbGhzU2lnbiA9PSByaHNTaWduID8gbGhzIDogcXVpZXROYU4oMCk7CisKKyAgICBj
YXNlIFNwZWNpYWxWYWx1ZUhhbmRsZXI6OkVpdGhlck5hTjoKKyAgICAgICAgcmV0dXJuIGhhbmRs
ZXIudmFsdWUoKTsKKworICAgIGNhc2UgU3BlY2lhbFZhbHVlSGFuZGxlcjo6TGhzSXNpbmZpbml0
eToKKyAgICAgICAgcmV0dXJuIGxoczsKKworICAgIGNhc2UgU3BlY2lhbFZhbHVlSGFuZGxlcjo6
UmhzSXNpbmZpbml0eToKKyAgICAgICAgcmV0dXJuIHJoczsKKyAgICB9CisKKyAgICBBU1NFUlQo
bGhzLmlzRmluaXRlKCkgJiYgcmhzLmlzRmluaXRlKCkpOworCisgICAgQmNkTnVtIGxoc0JjZE51
bShsaHMpOworICAgIEJjZE51bSByaHNCY2ROdW0ocmhzKTsKKworICAgIGNvbnN0IGludCBsaHNF
eHBvbmVudCA9IGxocy5leHBvbmVudCgpOworICAgIGNvbnN0IGludCByaHNFeHBvbmVudCA9IHJo
cy5leHBvbmVudCgpOworICAgIGludCByZXN1bHRFeHBvbmVudCA9IHN0ZDo6bWluKGxoc0V4cG9u
ZW50LCByaHNFeHBvbmVudCk7CisKKyAgICAvLyBNYWtlIGNvZWZmaWNpZW50IGFsaWduZWQuCisg
ICAgaWYgKGxoc0V4cG9uZW50ID4gcmhzRXhwb25lbnQpIHsKKyAgICAgICAgY29uc3QgaW50IGxo
c051bWJlck9mRGlnaXRzID0gbGhzQmNkTnVtLmNvdW50RGlnaXRzKCk7CisgICAgICAgIGlmIChs
aHNOdW1iZXJPZkRpZ2l0cykgeworICAgICAgICAgICAgY29uc3QgaW50IGxoc1NoaWZ0QW1vdW50
ID0gbGhzRXhwb25lbnQgLSByaHNFeHBvbmVudDsKKyAgICAgICAgICAgIGNvbnN0IGludCBvdmVy
ZmxvdyA9IGxoc051bWJlck9mRGlnaXRzICsgbGhzU2hpZnRBbW91bnQgLSAoTnVtYmVyT2ZEaWdp
dHMgKyAxKTsKKyAgICAgICAgICAgIGlmIChvdmVyZmxvdyA8PSAwKQorICAgICAgICAgICAgICAg
IGxoc0JjZE51bS5zaGlmdExlZnQobGhzU2hpZnRBbW91bnQpOworICAgICAgICAgICAgZWxzZSB7
CisgICAgICAgICAgICAgICAgbGhzQmNkTnVtLnNoaWZ0TGVmdChsaHNTaGlmdEFtb3VudCAtIG92
ZXJmbG93KTsKKyAgICAgICAgICAgICAgICByaHNCY2ROdW0uc2hpZnRSaWdodFdpdGhSb3VuZChv
dmVyZmxvdyk7CisgICAgICAgICAgICAgICAgcmVzdWx0RXhwb25lbnQgKz0gb3ZlcmZsb3c7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgIH0gaWYgKGxoc0V4cG9uZW50IDwgcmhzRXhw
b25lbnQpIHsKKyAgICAgICAgY29uc3QgaW50IHJoc051bWJlck9mRGlnaXRzID0gcmhzQmNkTnVt
LmNvdW50RGlnaXRzKCk7CisgICAgICAgIGlmIChyaHNOdW1iZXJPZkRpZ2l0cykgeworICAgICAg
ICAgICAgY29uc3QgaW50IHJoc1NoaWZ0QW1vdW50ID0gcmhzRXhwb25lbnQgLSBsaHNFeHBvbmVu
dDsKKyAgICAgICAgICAgIGNvbnN0IGludCBvdmVyZmxvdyA9IHJoc051bWJlck9mRGlnaXRzICsg
cmhzU2hpZnRBbW91bnQgLSAoTnVtYmVyT2ZEaWdpdHMgKyAxKTsKKyAgICAgICAgICAgIGlmIChv
dmVyZmxvdyA8PSAwKQorICAgICAgICAgICAgICAgIHJoc0JjZE51bS5zaGlmdExlZnQocmhzU2hp
ZnRBbW91bnQpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgcmhzQmNkTnVt
LnNoaWZ0TGVmdChyaHNTaGlmdEFtb3VudCAtIG92ZXJmbG93KTsKKyAgICAgICAgICAgICAgICBs
aHNCY2ROdW0uc2hpZnRSaWdodFdpdGhSb3VuZChvdmVyZmxvdyk7CisgICAgICAgICAgICAgICAg
cmVzdWx0RXhwb25lbnQgKz0gb3ZlcmZsb3c7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICBEZWNpbWFsMTI4SW1wbCByZXN1bHQgPSBsaHNTaWduID09IHJoc1NpZ24gPyBC
Y2ROdW06OmFkZChsaHNCY2ROdW0sIHJoc0JjZE51bSwgcmVzdWx0RXhwb25lbnQsIGxoc1NpZ24p
IDogQmNkTnVtOjpzdWJ0cmFjdChsaHNCY2ROdW0sIHJoc0JjZE51bSwgcmVzdWx0RXhwb25lbnQs
IGxoc1NpZ24pOworICAgIGlmIChsaHNTaWduICYmICFyaHNTaWduICYmIHJlc3VsdC5pc1plcm8o
KSkKKyAgICAgICAgcmVzdWx0LnNldFNpZ24oMCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwor
RGVjaW1hbDEyOEltcGwgRGVjaW1hbDEyOEltcGw6Om9wZXJhdG9yIC0oY29uc3QgRGVjaW1hbDEy
OEltcGwmIHJocykgY29uc3QKK3sKKyAgICBjb25zdCBEZWNpbWFsMTI4SW1wbCBsaHMgPSAqdGhp
czsKKyAgICBjb25zdCBpbnQgbGhzU2lnbiA9IGxocy5zaWduKCk7CisgICAgY29uc3QgaW50IHJo
c1NpZ24gPSByaHMuc2lnbigpOworCisgICAgU3BlY2lhbFZhbHVlSGFuZGxlciBoYW5kbGVyKGxo
cywgcmhzKTsKKyAgICBzd2l0Y2ggKGhhbmRsZXIuaGFuZGxlKCkpIHsKKyAgICBjYXNlIFNwZWNp
YWxWYWx1ZUhhbmRsZXI6OkJvdGhGaW5pdGU6CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBT
cGVjaWFsVmFsdWVIYW5kbGVyOjpCb3RoaW5maW5pdHk6CisgICAgICAgIHJldHVybiBsaHNTaWdu
ID09IHJoc1NpZ24gPyBxdWlldE5hTigwKSA6IGxoczsKKworICAgIGNhc2UgU3BlY2lhbFZhbHVl
SGFuZGxlcjo6RWl0aGVyTmFOOgorICAgICAgICByZXR1cm4gaGFuZGxlci52YWx1ZSgpOworCisg
ICAgY2FzZSBTcGVjaWFsVmFsdWVIYW5kbGVyOjpMaHNJc2luZmluaXR5OgorICAgICAgICByZXR1
cm4gbGhzOworCisgICAgY2FzZSBTcGVjaWFsVmFsdWVIYW5kbGVyOjpSaHNJc2luZmluaXR5Ogor
ICAgICAgICByZXR1cm4gaW5maW5pdHkocmhzU2lnbiBeIDEpOworICAgIH0KKworICAgIEFTU0VS
VChsaHMuaXNGaW5pdGUoKSAmJiByaHMuaXNGaW5pdGUoKSk7CisKKyAgICBCY2ROdW0gbGhzQmNk
TnVtKGxocyk7CisgICAgQmNkTnVtIHJoc0JjZE51bShyaHMpOworCisgICAgY29uc3QgaW50IGxo
c0V4cG9uZW50ID0gbGhzLmV4cG9uZW50KCk7CisgICAgY29uc3QgaW50IHJoc0V4cG9uZW50ID0g
cmhzLmV4cG9uZW50KCk7CisgICAgaW50IHJlc3VsdEV4cG9uZW50ID0gc3RkOjptaW4obGhzRXhw
b25lbnQsIHJoc0V4cG9uZW50KTsKKworICAgIC8vIE1ha2UgY29lZmZpY2llbnQgYWxpZ25lZC4K
KyAgICBpZiAobGhzRXhwb25lbnQgPiByaHNFeHBvbmVudCkgeworICAgICAgICBjb25zdCBpbnQg
bGhzTnVtYmVyT2ZEaWdpdHMgPSBsaHNCY2ROdW0uY291bnREaWdpdHMoKTsKKyAgICAgICAgaWYg
KGxoc051bWJlck9mRGlnaXRzKSB7CisgICAgICAgICAgICBjb25zdCBpbnQgbGhzU2hpZnRBbW91
bnQgPSBsaHNFeHBvbmVudCAtIHJoc0V4cG9uZW50OworICAgICAgICAgICAgY29uc3QgaW50IG92
ZXJmbG93ID0gbGhzTnVtYmVyT2ZEaWdpdHMgKyBsaHNTaGlmdEFtb3VudCAtIChOdW1iZXJPZkRp
Z2l0cyArIDEpOworICAgICAgICAgICAgaWYgKG92ZXJmbG93IDw9IDApCisgICAgICAgICAgICAg
ICAgbGhzQmNkTnVtLnNoaWZ0TGVmdChsaHNTaGlmdEFtb3VudCk7CisgICAgICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgICAgICBsaHNCY2ROdW0uc2hpZnRMZWZ0KGxoc1NoaWZ0QW1vdW50IC0g
b3ZlcmZsb3cpOworICAgICAgICAgICAgICAgIHJoc0JjZE51bS5zaGlmdFJpZ2h0V2l0aFJvdW5k
KG92ZXJmbG93KTsKKyAgICAgICAgICAgICAgICByZXN1bHRFeHBvbmVudCArPSBvdmVyZmxvdzsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgfSBpZiAobGhzRXhwb25lbnQgPCByaHNF
eHBvbmVudCkgeworICAgICAgICBjb25zdCBpbnQgcmhzTnVtYmVyT2ZEaWdpdHMgPSByaHNCY2RO
dW0uY291bnREaWdpdHMoKTsKKyAgICAgICAgaWYgKHJoc051bWJlck9mRGlnaXRzKSB7CisgICAg
ICAgICAgICBjb25zdCBpbnQgcmhzU2hpZnRBbW91bnQgPSByaHNFeHBvbmVudCAtIGxoc0V4cG9u
ZW50OworICAgICAgICAgICAgY29uc3QgaW50IG92ZXJmbG93ID0gcmhzTnVtYmVyT2ZEaWdpdHMg
KyByaHNTaGlmdEFtb3VudCAtIChOdW1iZXJPZkRpZ2l0cyArIDEpOworICAgICAgICAgICAgaWYg
KG92ZXJmbG93IDw9IDApCisgICAgICAgICAgICAgICAgcmhzQmNkTnVtLnNoaWZ0TGVmdChyaHNT
aGlmdEFtb3VudCk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICByaHNCY2RO
dW0uc2hpZnRMZWZ0KHJoc1NoaWZ0QW1vdW50IC0gb3ZlcmZsb3cpOworICAgICAgICAgICAgICAg
IGxoc0JjZE51bS5zaGlmdFJpZ2h0V2l0aFJvdW5kKG92ZXJmbG93KTsKKyAgICAgICAgICAgICAg
ICByZXN1bHRFeHBvbmVudCArPSBvdmVyZmxvdzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgIH0KKworICAgIHJldHVybiBsaHNTaWduID09IHJoc1NpZ24gPyBCY2ROdW06OnN1YnRyYWN0
KGxoc0JjZE51bSwgcmhzQmNkTnVtLCByZXN1bHRFeHBvbmVudCwgbGhzU2lnbikgOiBCY2ROdW06
OmFkZChsaHNCY2ROdW0sIHJoc0JjZE51bSwgcmVzdWx0RXhwb25lbnQsIGxoc1NpZ24pOworfQor
CisvLyBNdWx0aXBseSBsaHMgYnkgcmhzIGludG8gcHJvZHVjdC4KK0RlY2ltYWwxMjhJbXBsIERl
Y2ltYWwxMjhJbXBsOjpvcGVyYXRvciAqKGNvbnN0IERlY2ltYWwxMjhJbXBsJiByaHMpIGNvbnN0
Cit7CisgICAgY29uc3QgRGVjaW1hbDEyOEltcGwmIGxocyA9ICp0aGlzOworICAgIGNvbnN0IGlu
dCBsaHNTaWduID0gbGhzLnNpZ24oKTsKKyAgICBjb25zdCBpbnQgcmhzU2lnbiA9IHJocy5zaWdu
KCk7CisgICAgY29uc3QgaW50IHJlc3VsdFNpZ24gPSBsaHNTaWduIF4gcmhzU2lnbjsKKworICAg
IFNwZWNpYWxWYWx1ZUhhbmRsZXIgaGFuZGxlcihsaHMsIHJocyk7CisgICAgc3dpdGNoIChoYW5k
bGVyLmhhbmRsZSgpKSB7CisgICAgY2FzZSBTcGVjaWFsVmFsdWVIYW5kbGVyOjpCb3RoRmluaXRl
OgorICAgICAgICByZXR1cm4gQmluTnVtOjpNdWx0aXBseShCaW5OdW0obGhzKSwgQmluTnVtKHJo
cyksIGxocy5leHBvbmVudCgpICsgcmhzLmV4cG9uZW50KCksIHJlc3VsdFNpZ24pOworCisgICAg
Y2FzZSBTcGVjaWFsVmFsdWVIYW5kbGVyOjpCb3RoaW5maW5pdHk6CisgICAgICAgIHJldHVybiBp
bmZpbml0eShyZXN1bHRTaWduKTsKKworICAgIGNhc2UgU3BlY2lhbFZhbHVlSGFuZGxlcjo6RWl0
aGVyTmFOOgorICAgICAgICByZXR1cm4gaGFuZGxlci52YWx1ZSgpOworCisgICAgY2FzZSBTcGVj
aWFsVmFsdWVIYW5kbGVyOjpMaHNJc2luZmluaXR5OgorICAgICAgICByZXR1cm4gcmhzLmlzWmVy
bygpID8gcXVpZXROYU4oMCkgOiBpbmZpbml0eShyZXN1bHRTaWduKTsKKworICAgIGNhc2UgU3Bl
Y2lhbFZhbHVlSGFuZGxlcjo6UmhzSXNpbmZpbml0eToKKyAgICAgICAgcmV0dXJuIGxocy5pc1pl
cm8oKSA/IHF1aWV0TmFOKDApIDogaW5maW5pdHkocmVzdWx0U2lnbik7CisKKyAgICBkZWZhdWx0
OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIHF1aWV0TmFO
KDApOworICAgIH0KK30KKworRGVjaW1hbDEyOEltcGwgRGVjaW1hbDEyOEltcGw6Om9wZXJhdG9y
IC8oY29uc3QgRGVjaW1hbDEyOEltcGwmIHJocykgY29uc3QKK3sKKyAgICByZXR1cm4gZGl2aWRl
KCp0aGlzLCByaHMsIEZsb2F0UmVzdWx0KTsKK30KKworYm9vbCBEZWNpbWFsMTI4SW1wbDo6b3Bl
cmF0b3I9PShjb25zdCBEZWNpbWFsMTI4SW1wbCYgcmhzKSBjb25zdAoreworICAgIHJldHVybiBm
YXN0RXF1YWxzKCp0aGlzLCByaHMpIHx8IGNvbXBhcmUoKnRoaXMsIHJocykuaXNaZXJvKCk7Cit9
CisKK2Jvb2wgRGVjaW1hbDEyOEltcGw6Om9wZXJhdG9yIT0oY29uc3QgRGVjaW1hbDEyOEltcGwm
IHJocykgY29uc3QKK3sKKyAgICByZXR1cm4gIW9wZXJhdG9yID09KHJocyk7Cit9CisKK2Jvb2wg
RGVjaW1hbDEyOEltcGw6Om9wZXJhdG9yIDwoY29uc3QgRGVjaW1hbDEyOEltcGwmIHJocykgY29u
c3QKK3sKKyAgICByZXR1cm4gIW9wZXJhdG9yID49KHJocyk7Cit9CisKK2Jvb2wgRGVjaW1hbDEy
OEltcGw6Om9wZXJhdG9yIDw9KGNvbnN0IERlY2ltYWwxMjhJbXBsJiByaHMpIGNvbnN0Cit7Cisg
ICAgaWYgKGZhc3RFcXVhbHMoKnRoaXMsIHJocykpCisgICAgICAgIHJldHVybiB0cnVlOworICAg
IGNvbnN0IERlY2ltYWwxMjhJbXBsIHJlc3VsdCA9IGNvbXBhcmUoKnRoaXMsIHJocyk7CisgICAg
cmV0dXJuIHJlc3VsdC5pc1plcm8oKSB8fCByZXN1bHQuc2lnbigpOworfQorCitib29sIERlY2lt
YWwxMjhJbXBsOjpvcGVyYXRvciA+KGNvbnN0IERlY2ltYWwxMjhJbXBsJiByaHMpIGNvbnN0Cit7
CisgICAgcmV0dXJuICFvcGVyYXRvciA8PShyaHMpOworfQorCitib29sIERlY2ltYWwxMjhJbXBs
OjpvcGVyYXRvciA+PShjb25zdCBEZWNpbWFsMTI4SW1wbCYgcmhzKSBjb25zdAoreworICAgIGlm
IChmYXN0RXF1YWxzKCp0aGlzLCByaHMpKQorICAgICAgcmV0dXJuIHRydWU7CisgICAgY29uc3Qg
RGVjaW1hbDEyOEltcGwgcmVzdWx0ID0gY29tcGFyZSgqdGhpcywgcmhzKTsKKyAgICByZXR1cm4g
cmVzdWx0LmlzWmVybygpIHx8ICFyZXN1bHQuc2lnbigpOworfQorCitpbnQgRGVjaW1hbDEyOElt
cGw6OmNvZWZmaWNlbnRNc2QoKSBjb25zdAoreworICAgIHJldHVybiBtX2RhdGEuY29lZmZpY2Vu
dE1zZCgpOworfQorCitpbnQgRGVjaW1hbDEyOEltcGw6OmRwZEF0KGNvbnN0IGludCBkcGRJbmRl
eCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9kYXRhLmRwZEF0KGRwZEluZGV4KTsKK30KKworaW50
IERlY2ltYWwxMjhJbXBsOjpleHBvbmVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGlzRmluaXRl
KCkgPyBtX2RhdGEuZXhwb25lbnRCaWFzZWQoKSAtIEViaWFzIDogMDsKK30KKworRGVjaW1hbDEy
OEltcGw6OkllZWVDbGFzcyBEZWNpbWFsMTI4SW1wbDo6aWVlZUNsYXNzKCkgY29uc3QKK3sKKyAg
ICBzd2l0Y2ggKG1fZGF0YS5tX3dvcmRzWzNdICYgQ2xhc3NNYXNrKSB7CisgICAgY2FzZSBQb3Np
dGl2ZUluZmluaXR5UGF0dGVybjoKKyAgICBjYXNlIE5lZ2F0aXZlSW5maW5pdHlQYXR0ZXJuOgor
ICAgICAgICByZXR1cm4gQ2xhc3NpbmZpbml0eTsKKworICAgIGNhc2UgUG9zaXRpdmVRdWlldE5h
TlBhdHRlcm46CisgICAgY2FzZSBOZWdhdGl2ZVF1aWV0TmFOUGF0dGVybjoKKyAgICAgICAgcmV0
dXJuIENsYXNzcXVpZXROYU47CisKKyAgICBjYXNlIFBvc2l0aXZlU2lnbmFsaW5nTmFOUGF0dGVy
bjoKKyAgICBjYXNlIE5lZ2F0aXZlU2lnbmFsaW5nTmFOUGF0dGVybjoKKyAgICAgICAgcmV0dXJu
IENsYXNzc2lnbmFsaW5nTmFOOworICAgIH0KKworICAgIEJjZE51bSBiY2ROdW0oKnRoaXMpOwor
ICAgIGNvbnN0IGludCBjb2VmZmljaWVudExlbmd0aCA9IGJjZE51bS5jb3VudERpZ2l0cygpOwor
ICAgIGlmICghY29lZmZpY2llbnRMZW5ndGgpCisgICAgICAgIHJldHVybiBDbGFzc1plcm87CisK
KyAgICBjb25zdCBpbnQgYWRqdXN0ZWRFeHBvbmVudCA9IGV4cG9uZW50KCkgKyBjb2VmZmljaWVu
dExlbmd0aCAtIDE7CisgICAgaWYgKGFkanVzdGVkRXhwb25lbnQgPCBFbWluKQorICAgICAgICBy
ZXR1cm4gQ2xhc3NTdWJub3JtYWw7CisKKyAgICByZXR1cm4gQ2xhc3NOb3JtYWw7Cit9CisKK2lu
dCBEZWNpbWFsMTI4SW1wbDo6c2lnbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIGludChtX2RhdGEu
bV93b3Jkc1szXSkgPCAwOworfQorCit2b2lkIERlY2ltYWwxMjhJbXBsOjpzZXRTaWduKGludCB2
YWx1ZSkKK3sKKyAgICBtX2RhdGEuc2V0U2lnbih2YWx1ZSk7Cit9CisKKy8vIGNvbXBhcmUgdHdv
IERlY2ltYWwxMjhJbXBsIG51bWJlcnMuCitEZWNpbWFsMTI4SW1wbCBEZWNpbWFsMTI4SW1wbDo6
Y29tcGFyZShjb25zdCBEZWNpbWFsMTI4SW1wbCYgbGhzLCBjb25zdCBEZWNpbWFsMTI4SW1wbCYg
cmhzKQoreworICAgIGNvbnN0IERlY2ltYWwxMjhJbXBsIHJlc3VsdCA9IGxocyAtIHJoczsKKyAg
ICByZXR1cm4gcmVzdWx0LmlzRmluaXRlKCkgPyByZXN1bHQgOiByZXN1bHQuaXNaZXJvKCkgPyB6
ZXJvKDApIDogcmVzdWx0LnNpZ24oKSA/IERlY2ltYWwxMjhJbXBsKC0xKSA6IERlY2ltYWwxMjhJ
bXBsKDEpOworfQorCisvLyBbRF0KK0RlY2ltYWwxMjhJbXBsIERlY2ltYWwxMjhJbXBsOjpkaXZp
ZGUoY29uc3QgRGVjaW1hbDEyOEltcGwmIGxocywgY29uc3QgRGVjaW1hbDEyOEltcGwmIHJocywg
ZGl2aWRlUmVzdWx0IGNvbnN0IHJlc3VsdFR5cGUpCit7CisgICAgY29uc3QgaW50IGxoc1NpZ24g
PSBsaHMuc2lnbigpOworICAgIGNvbnN0IGludCByaHNTaWduID0gcmhzLnNpZ24oKTsKKyAgICBj
b25zdCBpbnQgcmVzdWx0U2lnbiA9IGxoc1NpZ24gXiByaHNTaWduOworCisgICAgU3BlY2lhbFZh
bHVlSGFuZGxlciBoYW5kbGVyKGxocywgcmhzKTsKKyAgICBzd2l0Y2ggKGhhbmRsZXIuaGFuZGxl
KCkpIHsKKyAgICBjYXNlIFNwZWNpYWxWYWx1ZUhhbmRsZXI6OkJvdGhGaW5pdGU6CisgICAgICAg
IGJyZWFrOworCisgICAgY2FzZSBTcGVjaWFsVmFsdWVIYW5kbGVyOjpCb3RoaW5maW5pdHk6Cisg
ICAgICAgIHJldHVybiBxdWlldE5hTigwKTsKKworICAgIGNhc2UgU3BlY2lhbFZhbHVlSGFuZGxl
cjo6RWl0aGVyTmFOOgorICAgICAgICByZXR1cm4gaGFuZGxlci52YWx1ZSgpOworCisgICAgY2Fz
ZSBTcGVjaWFsVmFsdWVIYW5kbGVyOjpMaHNJc2luZmluaXR5OgorICAgICAgICByZXR1cm4gaW5m
aW5pdHkocmVzdWx0U2lnbik7CisKKyAgICBjYXNlIFNwZWNpYWxWYWx1ZUhhbmRsZXI6OlJoc0lz
aW5maW5pdHk6CisgICAgICAgIHJldHVybiB6ZXJvKHJlc3VsdFNpZ24pOworICAgIH0KKworICAg
IEFTU0VSVChsaHMuaXNGaW5pdGUoKSAmJiByaHMuaXNGaW5pdGUoKSk7CisKKyAgICBpZiAocmhz
LmlzWmVybygpKQorICAgICAgICByZXR1cm4gbGhzLmlzWmVybygpID8gcXVpZXROYU4oMCkgOiBp
bmZpbml0eShyZXN1bHRTaWduKTsKKworICAgIGNvbnN0IGludCByZXN1bHRFeHBvbmVudCA9IGxo
cy5leHBvbmVudCgpIC0gcmhzLmV4cG9uZW50KCk7CisKKyAgICBpZiAobGhzLmlzWmVybygpKSB7
CisgICAgICAgIC8vIDAvbm9uLXplcm8gPT4gMAorICAgICAgICByZXR1cm4gcmVzdWx0VHlwZSA9
PSBGbG9hdFJlc3VsdCA/IEJjZE51bSgpLmZpbmFsaXplKHJlc3VsdEV4cG9uZW50LCByZXN1bHRT
aWduKSA6IHplcm8ocmVzdWx0U2lnbik7CisgICAgfQorCisgICAgcmV0dXJuIEJpbk51bTo6ZGl2
aWRlKEJpbk51bShsaHMpLCBCaW5OdW0ocmhzKSwgcmVzdWx0RXhwb25lbnQsIHJlc3VsdFNpZ24s
IHJlc3VsdFR5cGUpOworfQorCisvLyBbRl0KKy8vIGNvbXBhcmVzIHR3byBEZWNpbWFsMTI4SW1w
bCBudW1iZXIgYXMgYmluYXJ5IHN0cmluZy4gVGhpcyBtZXRob2QgaXMKKy8vIHVzZWQgZm9yIGVx
dWFsaXR5IG9mIGluZmluaXR5IG9wZXJhbmRzIHdoaWNoIHN1YnN0cmFjdCBvcGVyYXRpb24KKy8v
IHJldHVybnMgbm9uLXplcm8uCitib29sIERlY2ltYWwxMjhJbXBsOjpmYXN0RXF1YWxzKGNvbnN0
IERlY2ltYWwxMjhJbXBsJiBsaHMsIGNvbnN0IERlY2ltYWwxMjhJbXBsJiByaHMpCit7CisgICAg
Y29uc3QgdWludDMyX3QgbGhzV29yZCA9IGxocy5tX2RhdGEubV93b3Jkc1szXTsKKyAgICBjb25z
dCB1aW50MzJfdCByaHNXb3JkID0gcmhzLm1fZGF0YS5tX3dvcmRzWzNdOworCisgICAgaWYgKGxo
c1dvcmQgIT0gcmhzV29yZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKChsaHNX
b3JkICYgU3BlY2lhbFZhbHVlTWFzaykgIT0gU3BlY2lhbFZhbHVlTWFzaykKKyAgICAgICAgcmV0
dXJuICZsaHMgPT0gJnJocyB8fCAhOjptZW1jbXAobGhzLm1fZGF0YS5tX3dvcmRzLCByaHMubV9k
YXRhLm1fd29yZHMsIHNpemVvZihsaHMubV9kYXRhLm1fd29yZHMpKTsKKworICAgIHJldHVybiBs
aHNXb3JkID09IE5lZ2F0aXZlSW5maW5pdHlQYXR0ZXJuIHx8IGxoc1dvcmQgPT0gUG9zaXRpdmVJ
bmZpbml0eVBhdHRlcm47Cit9CisKK0RlY2ltYWwxMjhJbXBsIERlY2ltYWwxMjhJbXBsOjpmcm9t
U3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyKQoreworICAgIGludCBleHBvbmVudCA9IDA7CisgICAg
aW50IGV4cG9uZW50U2lnbiA9IDA7CisgICAgYm9vbCBtaW51cyA9IGZhbHNlOworICAgIGludCBu
dW1iZXJPZkRpZ2l0cyA9IDA7CisgICAgaW50IG51bWJlck9mRGlnaXRzQWZ0ZXJEb3QgPSAwOwor
ICAgIGJvb2wgc2lnbmFsaW5nID0gZmFsc2U7CisKKyAgICBlbnVtIHsKKyAgICAgICAgU3RhdGVf
RGlnaXQsCisgICAgICAgIFN0YXRlX0RvdCwKKyAgICAgICAgU3RhdGVfRG90X0RpZ2l0LAorICAg
ICAgICBTdGF0ZV9FLAorICAgICAgICBTdGF0ZV9FX0RpZ2l0LAorICAgICAgICBTdGF0ZV9FX1Np
Z24sCisgICAgICAgIFN0YXRlX0ksCisgICAgICAgIFN0YXRlX0lOLAorICAgICAgICBTdGF0ZV9J
TkYsCisgICAgICAgIFN0YXRlX0lORkksCisgICAgICAgIFN0YXRlX0lORklOLAorICAgICAgICBT
dGF0ZV9JTkZJTkksCisgICAgICAgIFN0YXRlX0lORklOSVQsCisgICAgICAgIFN0YXRlX0lORklO
SVRZLAorICAgICAgICBTdGF0ZV9OLAorICAgICAgICBTdGF0ZV9OQSwKKyAgICAgICAgU3RhdGVf
TkFOLAorICAgICAgICBTdGF0ZV9TLAorICAgICAgICBTdGF0ZV9TaWduLAorICAgICAgICBTdGF0
ZV9TdGFydCwKKyAgICAgICAgU3RhdGVfWmVybywKKyAgICB9IHN0YXRlID0gU3RhdGVfU3RhcnQ7
CisKKyAgICAjZGVmaW5lIEhhbmRsZUNoYXIoY2gxLCBuZXh0LCAuLi4pIFwKKyAgICAgICAgaWYg
KGNoID09IGNoMSB8fCBjaCA9PSBjaDEgLSAnQScgKyAnYScpIHsgXAorICAgICAgICAgICAgX19W
QV9BUkdTX187IFwKKyAgICAgICAgICAgIHN0YXRlID0gbmV4dDsgXAorICAgICAgICAgICAgYnJl
YWs7IFwKKyAgICAgICAgfQorCisgICAgI2RlZmluZSBFeHBlY3RDaGFyKGNoMSwgbmV4dCwgLi4u
KSBcCisgICAgICAgIEhhbmRsZUNoYXIoY2gxLCBuZXh0LCBfX1ZBX0FSR1NfXyk7IFwKKyAgICAg
ICAgcmV0dXJuIHF1aWV0TmFOKDApOworCisgICAgQmNkTnVtIGFjY3VtdWxhdG9yOworICAgIGZv
ciAodWludCBpbmRleCA9IDA7IGluZGV4IDwgc3RyLmxlbmd0aCgpOyArK2luZGV4KSB7CisgICAg
ICAgIGNvbnN0IGludCBjaCA9IHN0cltpbmRleF07CisgICAgICAgIHN3aXRjaCAoc3RhdGUpIHsK
KyAgICAgICAgY2FzZSBTdGF0ZV9EaWdpdDoKKyAgICAgICAgICAgIGlmIChjaCA+PSAnMCcgJiYg
Y2ggPD0gJzknKSB7CisgICAgICAgICAgICAgICAgaWYgKG51bWJlck9mRGlnaXRzIDwgRGVjaW1h
bDEyOEltcGw6OlByZWNpc2lvbikgeworICAgICAgICAgICAgICAgICAgICArK251bWJlck9mRGln
aXRzOworICAgICAgICAgICAgICAgICAgICBhY2N1bXVsYXRvci5zZXREaWdpdEF0KE51bWJlck9m
RGlnaXRzIC0gbnVtYmVyT2ZEaWdpdHMsIHVpbnQ4X3QoY2ggLSAnMCcpKTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIGlmIChjaCA9PSAnLicpIHsKKyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlX0RvdDsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgRXhw
ZWN0Q2hhcignRScsIFN0YXRlX0UpOworCisgICAgICAgIGNhc2UgU3RhdGVfRG90OgorICAgICAg
ICAgICAgaWYgKGNoID49ICcwJyAmJiBjaCA8PSAnOScpIHsKKyAgICAgICAgICAgICAgICBpZiAo
bnVtYmVyT2ZEaWdpdHMgPCBEZWNpbWFsMTI4SW1wbDo6UHJlY2lzaW9uKSB7CisgICAgICAgICAg
ICAgICAgICAgICsrbnVtYmVyT2ZEaWdpdHM7CisgICAgICAgICAgICAgICAgICAgICsrbnVtYmVy
T2ZEaWdpdHNBZnRlckRvdDsKKyAgICAgICAgICAgICAgICAgICAgYWNjdW11bGF0b3Iuc2V0RGln
aXRBdChOdW1iZXJPZkRpZ2l0cyAtIG51bWJlck9mRGlnaXRzLCB1aW50OF90KGNoIC0gJzAnKSk7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGVfRG90X0Rp
Z2l0OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgIGNh
c2UgU3RhdGVfRG90X0RpZ2l0OgorICAgICAgICAgICAgaWYgKGNoID49ICcwJyAmJiBjaCA8PSAn
OScpIHsKKyAgICAgICAgICAgICAgICBpZiAobnVtYmVyT2ZEaWdpdHMgPCBEZWNpbWFsMTI4SW1w
bDo6UHJlY2lzaW9uKSB7CisgICAgICAgICAgICAgICAgICAgICsrbnVtYmVyT2ZEaWdpdHM7Cisg
ICAgICAgICAgICAgICAgICAgICsrbnVtYmVyT2ZEaWdpdHNBZnRlckRvdDsKKyAgICAgICAgICAg
ICAgICAgICAgYWNjdW11bGF0b3Iuc2V0RGlnaXRBdChOdW1iZXJPZkRpZ2l0cyAtIG51bWJlck9m
RGlnaXRzLCB1aW50OF90KGNoIC0gJzAnKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBFeHBlY3RDaGFyKCdF
JywgU3RhdGVfRSk7CisKKyAgICAgICAgY2FzZSBTdGF0ZV9FOgorICAgICAgICAgICAgaWYgKGNo
ID09ICcrJykgeworICAgICAgICAgICAgICAgIGV4cG9uZW50U2lnbiA9IDA7CisgICAgICAgICAg
ICAgICAgc3RhdGUgPSBTdGF0ZV9FX1NpZ247CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChjaCA9PSAnLScpIHsKKyAgICAgICAgICAgICAg
ICBleHBvbmVudFNpZ24gPSAxOworICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGVfRV9TaWdu
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBp
ZiAoY2ggPj0gJzAnICYmIGNoIDw9ICc5JykgeworICAgICAgICAgICAgICAgIGV4cG9uZW50ID0g
Y2ggLSAnMCc7CisgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZV9FX0RpZ2l0OworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcXVp
ZXROYU4oMCk7CisKKyAgICAgICAgY2FzZSBTdGF0ZV9FX0RpZ2l0OgorICAgICAgICAgICAgaWYg
KGNoID49ICcwJyAmJiBjaCA8PSAnOScpIHsKKyAgICAgICAgICAgICAgICBleHBvbmVudCAqPSAx
MDsKKyAgICAgICAgICAgICAgICBleHBvbmVudCArPSBjaCAtICcwJzsKKyAgICAgICAgICAgICAg
ICBpZiAoZXhwb25lbnQgPiBEZWNpbWFsMTI4SW1wbDo6RW1heCArIE51bWJlck9mRGlnaXRzKQor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXhwb25lbnRTaWduID8gemVybygwKSA6IGluZmlu
aXR5KG1pbnVzKTsKKyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlX0VfRGlnaXQ7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBx
dWlldE5hTigwKTsKKworICAgICAgICBjYXNlIFN0YXRlX0VfU2lnbjoKKyAgICAgICAgICAgIGlm
IChjaCA+PSAnMCcgJiYgY2ggPD0gJzknKSB7CisgICAgICAgICAgICAgICAgZXhwb25lbnQgPSBj
aCAtICcwJzsKKyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlX0VfRGlnaXQ7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBxdWll
dE5hTigwKTsKKworICAgICAgICBjYXNlIFN0YXRlX0k6IEV4cGVjdENoYXIoJ04nLCBTdGF0ZV9J
Tik7CisgICAgICAgIGNhc2UgU3RhdGVfSU46IEV4cGVjdENoYXIoJ0YnLCBTdGF0ZV9JTkYpOwor
ICAgICAgICBjYXNlIFN0YXRlX0lORjogRXhwZWN0Q2hhcignSScsIFN0YXRlX0lORkkpOworICAg
ICAgICBjYXNlIFN0YXRlX0lORkk6IEV4cGVjdENoYXIoJ04nLCBTdGF0ZV9JTkZJTik7CisgICAg
ICAgIGNhc2UgU3RhdGVfSU5GSU46IEV4cGVjdENoYXIoJ0knLCBTdGF0ZV9JTkZJTkkpOworICAg
ICAgICBjYXNlIFN0YXRlX0lORklOSTogRXhwZWN0Q2hhcignVCcsIFN0YXRlX0lORklOSVQpOwor
ICAgICAgICBjYXNlIFN0YXRlX0lORklOSVQ6IEV4cGVjdENoYXIoJ1knLCBTdGF0ZV9JTkZJTklU
WSk7CisgICAgICAgIGNhc2UgU3RhdGVfSU5GSU5JVFk6IHJldHVybiBxdWlldE5hTigwKTsKKwor
ICAgICAgICBjYXNlIFN0YXRlX046IEV4cGVjdENoYXIoJ0EnLCBTdGF0ZV9OQSk7CisgICAgICAg
IGNhc2UgU3RhdGVfTkE6IEV4cGVjdENoYXIoJ04nLCBTdGF0ZV9OQU4pOworICAgICAgICBjYXNl
IFN0YXRlX05BTjogcmV0dXJuIHF1aWV0TmFOKDApOworCisgICAgICAgIGNhc2UgU3RhdGVfUzoK
KyAgICAgICAgICAgIEhhbmRsZUNoYXIoJ04nLCBTdGF0ZV9OLCBzaWduYWxpbmcgPSB0cnVlKTsK
KworICAgICAgICBjYXNlIFN0YXRlX1NpZ246CisgICAgICAgICAgICBpZiAoY2ggPT0gJzAnKSB7
CisgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZV9aZXJvOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoY2ggPj0gJzEnICYmIGNoIDw9
ICc5JykgeworICAgICAgICAgICAgICAgIGFjY3VtdWxhdG9yLnNldERpZ2l0QXQoTnVtYmVyT2ZE
aWdpdHMgLTEsIHVpbnQ4X3QoY2ggLSAnMCcpKTsKKyAgICAgICAgICAgICAgICBudW1iZXJPZkRp
Z2l0cyA9IDE7CisgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZV9EaWdpdDsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgSGFuZGxlQ2hhcign
SScsIFN0YXRlX0kpOworICAgICAgICAgICAgSGFuZGxlQ2hhcignTicsIFN0YXRlX04pOworICAg
ICAgICAgICAgSGFuZGxlQ2hhcignUycsIFN0YXRlX1MpOworICAgICAgICAgICAgcmV0dXJuIHF1
aWV0TmFOKDApOworCisgICAgICAgIGNhc2UgU3RhdGVfU3RhcnQ6CisgICAgICAgICAgICBpZiAo
Y2ggPT0gJzAnKSB7CisgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZV9aZXJvOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoY2ggPj0g
JzEnICYmIGNoIDw9ICc5JykgeworICAgICAgICAgICAgICAgIGFjY3VtdWxhdG9yLnNldERpZ2l0
QXQoTnVtYmVyT2ZEaWdpdHMgLTEsIHVpbnQ4X3QoY2ggLSAnMCcpKTsKKyAgICAgICAgICAgICAg
ICBudW1iZXJPZkRpZ2l0cyA9IDE7CisgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZV9EaWdp
dDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
aWYgKGNoID09ICctJykgeworICAgICAgICAgICAgICAgIG1pbnVzID0gdHJ1ZTsKKyAgICAgICAg
ICAgICAgICBzdGF0ZSA9IFN0YXRlX1NpZ247CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChjaCA9PSAnKycpIHsKKyAgICAgICAgICAgICAg
ICBtaW51cyA9IGZhbHNlOworICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGVfU2lnbjsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgSGFuZGxl
Q2hhcignSScsIFN0YXRlX0kpOworICAgICAgICAgICAgSGFuZGxlQ2hhcignTicsIFN0YXRlX04p
OworICAgICAgICAgICAgSGFuZGxlQ2hhcignUycsIFN0YXRlX1MpOworICAgICAgICAgICAgcmV0
dXJuIHF1aWV0TmFOKDApOworCisgICAgICAgIGNhc2UgU3RhdGVfWmVybzoKKyAgICAgICAgICAg
IGlmIChjaCA9PSAnMCcpCisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGlm
IChjaCA+PSAnMScgJiYgY2ggPD0gJzknKSB7CisgICAgICAgICAgICAgICAgYWNjdW11bGF0b3Iu
c2V0RGlnaXRBdChOdW1iZXJPZkRpZ2l0cyAtIDEsIHVpbnQ4X3QoY2ggLSAnMCcpKTsKKyAgICAg
ICAgICAgICAgICBudW1iZXJPZkRpZ2l0cyA9IDE7CisgICAgICAgICAgICAgICAgc3RhdGUgPSBT
dGF0ZV9EaWdpdDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgaWYgKGNoID09ICcuJykgeworICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGVf
RG90OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBFeHBlY3RDaGFyKCdFJywgU3RhdGVfRSk7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKHN0
YXRlID09IFN0YXRlX0lORiB8fCBzdGF0ZSA9PSBTdGF0ZV9JTkZJTklUWSkKKyAgICAgICAgcmV0
dXJuIGluZmluaXR5KG1pbnVzKTsKKworICAgIGlmIChzdGF0ZSA9PSBTdGF0ZV9OQU4pCisgICAg
ICAgIHJldHVybiBzaWduYWxpbmcgPyBzaWduYWxpbmdOYU4obWludXMpIDogcXVpZXROYU4obWlu
dXMpOworCisgICAgaWYgKHN0YXRlID09IFN0YXRlX1plcm8pCisgICAgICAgIHJldHVybiB6ZXJv
KG1pbnVzKTsKKworICAgIGlmIChzdGF0ZSA9PSBTdGF0ZV9EaWdpdCB8fCBzdGF0ZSA9PSBTdGF0
ZV9FX0RpZ2l0IHx8IHN0YXRlID09IFN0YXRlX0RvdF9EaWdpdCkgeworICAgICAgICBhY2N1bXVs
YXRvci5zaGlmdFJpZ2h0KE51bWJlck9mRGlnaXRzIC0gbnVtYmVyT2ZEaWdpdHMpOworICAgICAg
ICBpbnQgcmVzdWx0RXhwb25lbnQgPSBleHBvbmVudCAqICgxIC0gZXhwb25lbnRTaWduICogMikK
KyAgICAgICAgICAgICAgICAtIG51bWJlck9mRGlnaXRzQWZ0ZXJEb3Q7CisKKyAgICAgICAgY29u
c3QgaW50IGJpYXNlZEV4cG9uZW50ID0gcmVzdWx0RXhwb25lbnQgKyBFYmlhczsKKyAgICAgICAg
aWYgKGJpYXNlZEV4cG9uZW50IDwgMCkKKyAgICAgICAgICAgIHJldHVybiB6ZXJvKDApOworCisg
ICAgICAgIGNvbnN0IGludCBvdmVyZmxvdyA9IGJpYXNlZEV4cG9uZW50IC0gRWxpbWl0OworICAg
ICAgICBpZiAob3ZlcmZsb3cgPiAwKSB7CisgICAgICAgICAgICBpZiAob3ZlcmZsb3cgKyBudW1i
ZXJPZkRpZ2l0cyAtIG51bWJlck9mRGlnaXRzQWZ0ZXJEb3QgPiBOdW1iZXJPZkRpZ2l0cykKKyAg
ICAgICAgICAgICAgICByZXR1cm4gaW5maW5pdHkobWludXMpOworICAgICAgICAgICAgYWNjdW11
bGF0b3Iuc2hpZnRMZWZ0KG92ZXJmbG93KTsKKyAgICAgICAgICAgIHJlc3VsdEV4cG9uZW50IC09
IG92ZXJmbG93OworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGFjY3VtdWxhdG9yLmZpbmFs
aXplKHJlc3VsdEV4cG9uZW50LCBtaW51cyk7CisgICAgfQorCisgICAgcmV0dXJuIHF1aWV0TmFO
KDApOworfQorCitEZWNpbWFsMTI4SW1wbCBEZWNpbWFsMTI4SW1wbDo6aW5maW5pdHkoY29uc3Qg
aW50IHNpZ24pCit7CisgICAgcmV0dXJuIERlY2ltYWwxMjhJbXBsKHNpZ24sIFBvc2l0aXZlSW5m
aW5pdHlQYXR0ZXJuLCBOZWdhdGl2ZUluZmluaXR5UGF0dGVybik7Cit9CisKK2Jvb2wgRGVjaW1h
bDEyOEltcGw6OmlzRmluaXRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gKG1fZGF0YS5tX3dvcmRz
WzNdICYgU3BlY2lhbFZhbHVlTWFzaykgIT0gU3BlY2lhbFZhbHVlTWFzazsKK30KKworYm9vbCBE
ZWNpbWFsMTI4SW1wbDo6aXNTcGVjaWFsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gKG1fZGF0YS5t
X3dvcmRzWzNdICYgU3BlY2lhbFZhbHVlTWFzaykgPT0gU3BlY2lhbFZhbHVlTWFzazsKK30KKwor
Ym9vbCBEZWNpbWFsMTI4SW1wbDo6aXNaZXJvKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIW1fZGF0
YS5tX3dvcmRzWzBdICYmICFtX2RhdGEubV93b3Jkc1sxXSAmJiAhbV9kYXRhLm1fd29yZHNbMl0K
KyAgICAgICAgLy8gQ2hlY2sgY29lZmZpY2llbnQgbXNkIGFuZCBub3Qgc3BlY2lhbCB2YWx1ZQor
ICAgICAgICAmJiAhKG1fZGF0YS5tX3dvcmRzWzNdICYgMHgxQzAwM0ZGRikKKyAgICAgICAgLy8g
Q2hlY2sgY29lZmZpY2llbnQgbXNkCisgICAgICAgICYmIChtX2RhdGEubV93b3Jkc1szXSAmIDB4
NjAwMDAwMDApICE9IDB4NjAwMDAwMDA7Cit9CisKKy8vIFtRXQorRGVjaW1hbDEyOEltcGwgRGVj
aW1hbDEyOEltcGw6OnF1aWV0TmFOKGNvbnN0IGludCBzaWduKQoreworICAgIHJldHVybiBEZWNp
bWFsMTI4SW1wbChzaWduLCBQb3NpdGl2ZVF1aWV0TmFOUGF0dGVybiwgTmVnYXRpdmVRdWlldE5h
TlBhdHRlcm4pOworfQorCisvLyBbUl0KK0RlY2ltYWwxMjhJbXBsIERlY2ltYWwxMjhJbXBsOjpy
ZW1haW5kZXIoY29uc3QgRGVjaW1hbDEyOEltcGwmIGRpdmlzb3IpIGNvbnN0Cit7CisgICAgY29u
c3QgRGVjaW1hbDEyOEltcGwgcXVvdGllbnQgPSBkaXZpZGUoKnRoaXMsIGRpdmlzb3IsIEludGVn
ZXJSZXN1bHQpOworICAgIGlmIChxdW90aWVudC5pc1NwZWNpYWwoKSkKKyAgICAgICAgcmV0dXJu
IHF1b3RpZW50OworCisgICAgRGVjaW1hbDEyOEltcGwgcmVtKCp0aGlzIC0gcXVvdGllbnQgKiBk
aXZpc29yKTsKKyAgICByZW0uc2V0U2lnbihzaWduKCkpOworICAgIHJldHVybiByZW07Cit9CisK
K0RlY2ltYWwxMjhJbXBsIERlY2ltYWwxMjhJbXBsOjpyb3VuZEF0KGNvbnN0IGludCBudW1iZXJP
ZkRpZ2l0cykgY29uc3QKK3sKKyAgICBCY2ROdW0gYmNkTnVtKCp0aGlzKTsKKyAgICBjb25zdCBp
bnQgY3VycnJlbnROdW1iZXJPZkRpZ2l0cyA9IGJjZE51bS5jb3VudERpZ2l0cygpOworICAgIGJj
ZE51bS5yb3VuZEF0KG51bWJlck9mRGlnaXRzKTsKKyAgICBiY2ROdW0ucmVtb3ZlVHJhaWxpbmda
ZXJvcygpOworICAgIGNvbnN0IGludCBuZXdOdW1iZXJPZkRpZ2l0cyA9IGJjZE51bS5jb3VudERp
Z2l0cygpOworICAgIHJldHVybiBiY2ROdW0uZmluYWxpemUoZXhwb25lbnQoKSAtIG5ld051bWJl
ck9mRGlnaXRzICsgY3VycnJlbnROdW1iZXJPZkRpZ2l0cywgc2lnbigpKTsKK30KKworLy8gW1Nd
CitEZWNpbWFsMTI4SW1wbCBEZWNpbWFsMTI4SW1wbDo6c2lnbmFsaW5nTmFOKGNvbnN0IGludCBz
aWduKQoreworICAgIHJldHVybiBEZWNpbWFsMTI4SW1wbChzaWduLCBQb3NpdGl2ZVNpZ25hbGlu
Z05hTlBhdHRlcm4sIE5lZ2F0aXZlU2lnbmFsaW5nTmFOUGF0dGVybik7Cit9CisKKy8vIFtUXQor
U3RyaW5nIERlY2ltYWwxMjhJbXBsOjp0b1N0cmluZygpIGNvbnN0Cit7CisgICAgc3dpdGNoIChp
ZWVlQ2xhc3MoKSkgeworICAgIGNhc2UgQ2xhc3NpbmZpbml0eToKKyAgICAgICAgcmV0dXJuIHNp
Z24oKSA/ICItaW5maW5pdHkiIDogImluZmluaXR5IjsKKworICAgIGNhc2UgQ2xhc3NxdWlldE5h
TjoKKyAgICAgICAgcmV0dXJuIHNpZ24oKSA/ICItTmFOIiA6ICJOYU4iOworCisgICAgY2FzZSBD
bGFzc3NpZ25hbGluZ05hTjoKKyAgICAgICAgcmV0dXJuIHNpZ24oKSA/ICItc05hTiIgOiAic05h
TiI7CisKKyAgICBjYXNlIENsYXNzTm9ybWFsOgorICAgIGNhc2UgQ2xhc3NTdWJub3JtYWw6Cisg
ICAgY2FzZSBDbGFzc1plcm86CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIFN0cmluZ0J1
aWxkZXIgYnVpbGRlcjsKKyAgICBpZiAoc2lnbigpKQorICAgICAgICBidWlsZGVyLmFwcGVuZCgn
LScpOworCisgICAgLy8gY29udmVydCB0byBzY2llbnRpZmljLXN0cmluZworICAgIEJjZE51bSBi
Y2ROdW0oKnRoaXMpOworICAgIGNvbnN0IGludCBjb2VmZmljaWVudExlbmd0aCA9IHN0ZDo6bWF4
KGJjZE51bS5jb3VudERpZ2l0cygpLCAxKTsKKyAgICBjb25zdCBpbnQgb3JpZ2luYWxFeHBvbmVu
dCA9IGV4cG9uZW50KCk7CisgICAgY29uc3QgaW50IGFkanVzdGVkRXhwb25lbnQgPSBvcmlnaW5h
bEV4cG9uZW50ICsgY29lZmZpY2llbnRMZW5ndGggLSAxOworICAgIGlmIChvcmlnaW5hbEV4cG9u
ZW50IDw9IDAgJiYgYWRqdXN0ZWRFeHBvbmVudCA+PSAtNikgeworICAgICAgICBpZiAoIW9yaWdp
bmFsRXhwb25lbnQpIHsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IGNvZWZmaWNp
ZW50TGVuZ3RoOyArK2kpCisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoYmNkTnVtLmRp
Z2l0Q2hhckF0KGNvZWZmaWNpZW50TGVuZ3RoIC0gaSkpOworICAgICAgICAgICAgcmV0dXJuIGJ1
aWxkZXIudG9TdHJpbmcoKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChhZGp1c3RlZEV4cG9u
ZW50ID49IDApIHsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IGNvZWZmaWNpZW50
TGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChiY2ROdW0uZGln
aXRDaGFyQXQoY29lZmZpY2llbnRMZW5ndGggLSBpKSk7CisgICAgICAgICAgICAgICAgaWYgKGkg
PT0gYWRqdXN0ZWRFeHBvbmVudCArIDEpCisgICAgICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKCcuJyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gYnVpbGRlci50b1N0
cmluZygpOworICAgICAgICB9CisKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoIjAuIik7CisgICAg
ICAgIGZvciAoaW50IGkgPSBhZGp1c3RlZEV4cG9uZW50ICsgMTsgaSA8IDA7ICsraSkKKyAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcwJyk7CisKKyAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkg
PD0gY29lZmZpY2llbnRMZW5ndGg7ICsraSkKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGJj
ZE51bS5kaWdpdENoYXJBdChjb2VmZmljaWVudExlbmd0aCAtIGkpKTsKKworICAgIH0gZWxzZSB7
CisgICAgICAgIGludCBrID0gY29lZmZpY2llbnRMZW5ndGggLSAxOworICAgICAgICBidWlsZGVy
LmFwcGVuZChiY2ROdW0uZGlnaXRDaGFyQXQoaykpOworICAgICAgICAtLWs7CisgICAgICAgIGlm
IChrID49IDApIHsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcuJyk7CisgICAgICAgICAg
ICB3aGlsZSAoayA+PSAwKSB7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoYmNkTnVt
LmRpZ2l0Q2hhckF0KGspKTsKKyAgICAgICAgICAgICAgICAtLWs7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKworICAgICAgICBidWlsZGVyLmFwcGVuZChhZGp1c3RlZEV4cG9uZW50IDwgMCA/
ICJFIiA6ICJFKyIpOworICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6Om51bWJlcihhZGp1
c3RlZEV4cG9uZW50KSk7CisgICAgfQorICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Cit9
CisKK0RlY2ltYWwxMjhJbXBsIERlY2ltYWwxMjhJbXBsOjp0cnVuY2F0ZShjb25zdCBEZWNpbWFs
MTI4SW1wbCYgcmhzKSBjb25zdAoreworICAgIHJldHVybiBkaXZpZGUoKnRoaXMsIHJocywgSW50
ZWdlclJlc3VsdCk7Cit9CisKK0RlY2ltYWwxMjhJbXBsIERlY2ltYWwxMjhJbXBsOjp6ZXJvKGlu
dCBzaWduKQoreworICAgIHJldHVybiBEZWNpbWFsMTI4SW1wbChzaWduLCBQb3NpdGl2ZVplcm9Q
YXR0ZXJuLCBOZWdhdGl2ZVplcm9QYXR0ZXJuKTsKK30KKworfSAvLyBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EZWNpbWFsMTI4SW1wbC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vRGVjaW1hbDEyOEltcGwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YjU0MjJlOGYwNTAy
ZGVjMmU2MjE1ODQwZmM4MmNhYTIzODBjOWFiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vRGVjaW1hbDEyOEltcGwuaApAQCAtMCwwICsxLDE1OSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICAgIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICAgIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQor
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICog
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworI2lmbmRlZiBEZWNpbWFsMTI4SW1wbF9oCisjZGVmaW5lIERlY2ltYWwx
MjhJbXBsX2gKKworI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIFRoaXMgY2xhc3MgaW1wbGVtZW50
cyBJRUVFNzU0IGRlY2ltYWwxMjggb3BlcmF0aW9ucy4KKy8vCisvLyBFbmNvZGVkIEZvcm1hdDoK
Ky8vIENvbWJpbmF0aW9uIFR5cGUgICAgIEV4cG9uZW50ICAgIENvZWZmaWNlbnQgRXhwb25lbnQK
Ky8vIEZpZWxkKDViaXQpICAgICAgICAgIE1TQigyYml0KSAgIE1TRCg0Yml0KSAgQ29udCgxMGJp
dCkKKy8vICBhIGIgYyBkIGUgIEZpbml0ZSAgIGEgYiAgICAgICAgIDAgYyBkIGUgICAgLQorLy8g
IDEgMSBjIGQgZSAgRmluaXRlICAgYyBkICAgICAgICAgMSAwIDAgZSAgICAtCisvLyAgMSAxIDEg
MSAwICBJbmZpbml0ZSAtIC0gICAgICAgICAtIC0gLSAtICAgIC0KKy8vICAxIDEgMSAxIDEgIE5h
TiAgICAgIC0gLSAgICAgICAgIC0gLSAtIC0gICAgMAorLy8gIDEgMSAxIDEgMSAgc05hTiAgICAg
LSAtICAgICAgICAgLSAtIC0gLSAgICAxCisKKy8vIDc2NTQzMjEwIDc2NTQzMjEwIDc2NTQzMjEw
IDc2NTQzMjEwIC4uLgorLy8gU0NDQ0NDRUUgRUVFRUVFRUUgRUVjY2NjY2MgY2NjY2NjY2MgLi4u
CisvLyAgUyA9IHNpZ24gKDEgYml0KSwgMCA9IHBsdXMsIDEgPSBtaW51cworLy8gIEMgPSBjb21i
aW5hdGlvbiBmaWVsZCAoNSBiaXQpCisvLyAgRSA9IGV4cG9uZW50IGNvbnRpbnVhdGlvbiAoMTIg
Yml0KQorLy8gIGMgPSBjb2VmZmljZW50ICgxMTAgYml0KQorLy8KKy8vICBNYXNrIG9mIGNvbWJp
bmF0aW9uIGZpZWxkICAgICAgID0gN0MwMCAwMDAwCisvLyAgTWFzayBvZiBleHBvbmVudCBjb250
aW51YXRpb24gICA9IDAzRkYgQzAwMAorLy8gIE1hc2sgb2YgY29lZmZpY2VudCBjb250aW51YXRp
b24gPSAwMDAwIDNGRkYKK2NsYXNzIERlY2ltYWwxMjhJbXBsIHsKK3B1YmxpYzoKKyAgICBlbnVt
IGRpdmlkZVJlc3VsdCB7CisgICAgICAgIEZsb2F0UmVzdWx0LAorICAgICAgICBJbnRlZ2VyUmVz
dWx0LAorICAgIH07CisKKyAgICBlbnVtIEllZWVDbGFzcyB7CisgICAgICAgIENsYXNzaW5maW5p
dHksCisgICAgICAgIENsYXNzTm9ybWFsLAorICAgICAgICBDbGFzc3F1aWV0TmFOLAorICAgICAg
ICBDbGFzc3NpZ25hbGluZ05hTiwKKyAgICAgICAgQ2xhc3NTdWJub3JtYWwsCisgICAgICAgIENs
YXNzWmVybywKKyAgICB9OworCisgICAgc3RhdGljIGNvbnN0IGludCBDb2VmZmljZW50Q29udEJp
dHMgPSAxMTA7CisgICAgc3RhdGljIGNvbnN0IGludCBDb21iaW5hdGlvbkZpZWxkQml0cyA9IDU7
CisgICAgc3RhdGljIGNvbnN0IGludCBFYmlhcyA9IDYxNzY7IC8vIHN1YnRyYWN0ZWQgZnJvbSBl
bmNvZGVkIGV4cG9uZW50CisgICAgc3RhdGljIGNvbnN0IGludCBFYmlnID0gNjExMTsKKyAgICBz
dGF0aWMgY29uc3QgaW50IEVsaW1pdCA9IDEyMjg3OyAvLyBtYXhpbXVtIGVuY29kZWQgZXhwb25l
bnQKKyAgICBzdGF0aWMgY29uc3QgaW50IEVtYXggPSA2MTQ0OyAvLyBsYXJnZXN0IGV4cG9uZW50
IHZhbHVlCisgICAgc3RhdGljIGNvbnN0IGludCBFbWluID0gLTYxNDM7IC8vIHNtYWxsZXN0IGV4
cG9uZW50IHZhbHVlCisgICAgc3RhdGljIGNvbnN0IGludCBFdGlueSA9IC02MTc2OworICAgIHN0
YXRpYyBjb25zdCBpbnQgRXhwb25lbnRDb250Qml0cyA9IDEyOworICAgIHN0YXRpYyBjb25zdCBp
bnQgTnVtYmVyT2ZEaWdpdHMgPSAzNDsKKyAgICBzdGF0aWMgY29uc3QgaW50IFByZWNpc2lvbiA9
IDM0OworICAgIHN0YXRpYyBjb25zdCBpbnQgU2lnbkJpdHMgPSAxOworCisgICAgc3RydWN0IEVu
Y29kZWREYXRhIHsKKyAgICAgICAgaW50IGNvZWZmaWNlbnRNc2QoKSBjb25zdDsKKyAgICAgICAg
aW50IGNvbWJpbmF0aW9uRmllbGQoKSBjb25zdDsKKyAgICAgICAgaW50IGRwZEF0KGludCkgY29u
c3Q7CisgICAgICAgIGludCBleHBvbmVudEJpYXNlZCgpIGNvbnN0OworICAgICAgICBpbnQgZXhw
b25lbnRDb250aW51YXRpb24oKSBjb25zdDsKKyAgICAgICAgaW50IGV4cG9uZW50TXNiKCkgY29u
c3Q7CisgICAgICAgIHZvaWQgc2V0Q29tYmluYXRpb25GaWVsZChpbnQpOworICAgICAgICB2b2lk
IHNldENvbWJpbmF0aW9uRmllbGQoaW50IGV4cG9uZW50LCBpbnQgY29lZmZpY2VudE1zZCk7Cisg
ICAgICAgIHZvaWQgc2V0RHBkQXQoY29uc3QgaW50IGRwZEluZGV4LCBjb25zdCBpbnQgZHBkKTsK
KyAgICAgICAgdm9pZCBzZXRFeHBvbmVudChpbnQpOworICAgICAgICB2b2lkIHNldEV4cG9uZW50
Q29udGludWF0aW9uKGludCk7CisgICAgICAgIHZvaWQgc2V0U2lnbihpbnQpOworICAgICAgICB1
aW50MzJfdCBtX3dvcmRzWzRdOworICAgIH07CisKKyAgICBEZWNpbWFsMTI4SW1wbCgpOworICAg
IERlY2ltYWwxMjhJbXBsKGRvdWJsZSk7CisgICAgRGVjaW1hbDEyOEltcGwoaW50MzJfdCk7Cisg
ICAgRGVjaW1hbDEyOEltcGwoaW50NjRfdCk7CisgICAgRGVjaW1hbDEyOEltcGwodWludDMyX3Qp
OworICAgIERlY2ltYWwxMjhJbXBsKHVpbnQ2NF90KTsKKyAgICBEZWNpbWFsMTI4SW1wbChjb25z
dCBEZWNpbWFsMTI4SW1wbCYpOworICAgIERlY2ltYWwxMjhJbXBsKGNvbnN0IEVuY29kZWREYXRh
Jik7CisKKyAgICBvcGVyYXRvciBkb3VibGUoKSBjb25zdDsKKworICAgIERlY2ltYWwxMjhJbXBs
JiBvcGVyYXRvciA9KGNvbnN0IERlY2ltYWwxMjhJbXBsJik7CisgICAgRGVjaW1hbDEyOEltcGwg
b3BlcmF0b3IgKyhjb25zdCBEZWNpbWFsMTI4SW1wbCYpIGNvbnN0OworICAgIERlY2ltYWwxMjhJ
bXBsIG9wZXJhdG9yIC0oY29uc3QgRGVjaW1hbDEyOEltcGwmKSBjb25zdDsKKyAgICBEZWNpbWFs
MTI4SW1wbCBvcGVyYXRvciAqKGNvbnN0IERlY2ltYWwxMjhJbXBsJikgY29uc3Q7CisgICAgRGVj
aW1hbDEyOEltcGwgb3BlcmF0b3IgLyhjb25zdCBEZWNpbWFsMTI4SW1wbCYpIGNvbnN0OworCisg
ICAgYm9vbCBvcGVyYXRvciA9PShjb25zdCBEZWNpbWFsMTI4SW1wbCYpIGNvbnN0OworICAgIGJv
b2wgb3BlcmF0b3IgIT0oY29uc3QgRGVjaW1hbDEyOEltcGwmKSBjb25zdDsKKyAgICBib29sIG9w
ZXJhdG9yIDwoY29uc3QgRGVjaW1hbDEyOEltcGwmKSBjb25zdDsKKyAgICBib29sIG9wZXJhdG9y
IDw9KGNvbnN0IERlY2ltYWwxMjhJbXBsJikgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRvciA+KGNv
bnN0IERlY2ltYWwxMjhJbXBsJikgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRvciA+PShjb25zdCBE
ZWNpbWFsMTI4SW1wbCYpIGNvbnN0OworCisgICAgaW50IGNvZWZmaWNlbnRNc2QoKSBjb25zdDsK
KyAgICBpbnQgZHBkQXQoaW50KSBjb25zdDsKKyAgICBpbnQgZXhwb25lbnQoKSBjb25zdDsKKyAg
ICBJZWVlQ2xhc3MgaWVlZUNsYXNzKCkgY29uc3Q7CisgICAgaW50IHNpZ24oKSBjb25zdDsKKyAg
ICBjb25zdCBFbmNvZGVkRGF0YSYgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KKyAg
ICB2b2lkIHNldFNpZ24oaW50KTsKKworICAgIGJvb2wgaXNGaW5pdGUoKSBjb25zdDsKKyAgICBE
ZWNpbWFsMTI4SW1wbCByZW1haW5kZXIoY29uc3QgRGVjaW1hbDEyOEltcGwmKSBjb25zdDsKKyAg
ICBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdDsKKyAgICBEZWNpbWFsMTI4SW1wbCB0cnVuY2F0ZShj
b25zdCBEZWNpbWFsMTI4SW1wbCYpIGNvbnN0OworCisgICAgc3RhdGljIERlY2ltYWwxMjhJbXBs
IGZyb21TdHJpbmcoY29uc3QgU3RyaW5nJik7CisgICAgc3RhdGljIERlY2ltYWwxMjhJbXBsIGlu
ZmluaXR5KGludCk7CisgICAgc3RhdGljIERlY2ltYWwxMjhJbXBsIHF1aWV0TmFOKGludCk7Cisg
ICAgc3RhdGljIERlY2ltYWwxMjhJbXBsIHNpZ25hbGluZ05hTihpbnQpOworICAgIHN0YXRpYyBE
ZWNpbWFsMTI4SW1wbCB6ZXJvKGludCk7CisKK3ByaXZhdGU6CisgICAgRW5jb2RlZERhdGEgbV9k
YXRhOworCisgICAgRGVjaW1hbDEyOEltcGwoaW50LCB1aW50MzJfdCwgdWludDMyX3QpOworICAg
IERlY2ltYWwxMjhJbXBsKGludCwgdWludDY0X3QpOworCisgICAgYm9vbCBpc1NwZWNpYWwoKSBj
b25zdDsKKyAgICBib29sIGlzWmVybygpIGNvbnN0OworICAgIERlY2ltYWwxMjhJbXBsIHJvdW5k
QXQoaW50KSBjb25zdDsKKworICAgIHN0YXRpYyBib29sIGZhc3RFcXVhbHMoY29uc3QgRGVjaW1h
bDEyOEltcGwmLCBjb25zdCBEZWNpbWFsMTI4SW1wbCYpOworICAgIHN0YXRpYyBEZWNpbWFsMTI4
SW1wbCBjb21wYXJlKGNvbnN0IERlY2ltYWwxMjhJbXBsJiwgY29uc3QgRGVjaW1hbDEyOEltcGwm
KTsKKyAgICBzdGF0aWMgRGVjaW1hbDEyOEltcGwgZGl2aWRlKGNvbnN0IERlY2ltYWwxMjhJbXBs
JiwgY29uc3QgRGVjaW1hbDEyOEltcGwmLCBkaXZpZGVSZXN1bHQpOworfTsKKworfSAvLyBXZWJD
b3JlCisKKyNlbmRpZiAvLyBEZWNpbWFsMTI4SW1wbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9EZWNpbWFsMTI4SW1wbFRhYmxlcy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vRGVjaW1hbDEyOEltcGxUYWJsZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZjRmMzFkYTE0YTcyMzBh
NGZmZDVhYWU1MzU0MmFiZTlhYTgzZWFlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vRGVjaW1hbDEyOEltcGxUYWJsZXMuaApAQCAtMCwwICsxLDg3MyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisg
KiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKy8vIFRoaXMgZmlsZSBjb250YWlucyBmb2xsb3dpbmcgY29uc3RhbnQgdGFibGU6CisvLyBr
Q29tYmluYXRpb25GaWVsZE1hcAorLy8gIE1hcCBjb21iaW5hdGlvbiBmaWVsZCB0byBleHBvbmVu
dCBtb3N0IHNpZ25pZmljYW50IGJpdHMgKDJiaXQsIGJ1dCAwIHRvCisvLyAyIGluY2x1c2l2ZSkg
YW5kIGNvZWZmaWNlbnQgbW9zdCBzaWduaWZpY2FudCBkaWdpdC4KKy8vIGtEcGRUb1BhY2tlZEJj
ZDNbMSA8PCAxMl07CisvLyAgIE1hcCBEUEIoMTBiaXQpIHRvIDNCQ0QoMTJiaXQpCisvLyBrRHBk
VG85OTlbMSA8PCAxMF07CisvLyAgIE1hcCBEUEQoMTJiaXQpIHRvIGJpbmFyeSAoMC4uLjk5OSkK
Ky8vIGtQYWNrZWRCY2QzVG9EcGRbMHg5OTkgKyAxXTsKKy8vICAgTWFwIEJDRCA8IDEwMDAgKDAu
Li45OTkpIHRvIERQRChEZW5zZWx5IFBhY2tlZCBEZWNpbWFsKQorLy8gICBodHRwOi8vc3BlbGVv
dHJvdmUuY29tL2RlY2ltYWwvRFBEZWNpbWFsLmh0bWwKKy8vIGtQb3dlcnNbMTBdOworLy8gICBQ
b3dlciBvZiB0ZW4gdGFibGUgZm9yIGRpdmlzaW9uLgorCisvLyBNYXAgY29tYmluYXRpb24gZmll
bGQgdG8gQmNkLgorc3RhdGljIHN0cnVjdCB7CisgICAgdWludDhfdCBleHBvbmVudDsKKyAgICB1
aW50OF90IGNvZWZmaWNlbnQ7Cit9IGNvbnN0IGtDb21iaW5hdGlvbkZpZWxkTWFwWzMyXSA9IHsK
KyAgICB7IDAsIDAgfSwgLy8gMCAwIDAgMCAwCisgICAgeyAwLCAxIH0sIC8vIDAgMCAwIDAgMQor
ICAgIHsgMCwgMiB9LCAvLyAwIDAgMCAxIDAKKyAgICB7IDAsIDMgfSwgLy8gMCAwIDAgMSAxCisg
ICAgeyAwLCA0IH0sIC8vIDAgMCAxIDAgMAorICAgIHsgMCwgNSB9LCAvLyAwIDAgMSAwIDEKKyAg
ICB7IDAsIDYgfSwgLy8gMCAwIDEgMSAwCisgICAgeyAwLCA3IH0sIC8vIDAgMCAxIDEgMQorICAg
IHsgMSwgMCB9LCAvLyAwIDEgMCAwIDAKKyAgICB7IDEsIDEgfSwgLy8gMCAxIDAgMCAxCisgICAg
eyAxLCAyIH0sIC8vIDAgMSAwIDEgMAorICAgIHsgMSwgMyB9LCAvLyAwIDEgMCAxIDEKKyAgICB7
IDEsIDQgfSwgLy8gMCAxIDEgMCAwCisgICAgeyAxLCA1IH0sIC8vIDAgMSAxIDAgMQorICAgIHsg
MSwgNiB9LCAvLyAwIDEgMSAxIDAKKyAgICB7IDEsIDcgfSwgLy8gMCAxIDEgMSAxCisgICAgeyAy
LCAwIH0sIC8vIDEgMCAwIDAgMAorICAgIHsgMiwgMSB9LCAvLyAxIDAgMCAwIDEKKyAgICB7IDIs
IDIgfSwgLy8gMSAwIDAgMSAwCisgICAgeyAyLCAzIH0sIC8vIDEgMCAwIDEgMQorICAgIHsgMiwg
NCB9LCAvLyAxIDAgMSAwIDAKKyAgICB7IDIsIDUgfSwgLy8gMSAwIDEgMCAxCisgICAgeyAyLCA2
IH0sIC8vIDEgMCAxIDEgMAorICAgIHsgMiwgNyB9LCAvLyAxIDAgMSAxIDEKKyAgICB7IDAsIDgg
fSwgLy8gMSAxIDAgMCAwCisgICAgeyAwLCA5IH0sIC8vIDEgMSAwIDAgMQorICAgIHsgMSwgOCB9
LCAvLyAxIDEgMCAxIDAKKyAgICB7IDEsIDkgfSwgLy8gMSAxIDAgMSAxCisgICAgeyAyLCA4IH0s
IC8vIDEgMSAxIDAgMAorICAgIHsgMiwgOSB9LCAvLyAxIDEgMSAwIDEKKyAgICB7IDMsIDAgfSwg
Ly8gMSAxIDEgMSAwIEluZmluaXRlCisgICAgeyAzLCAwIH0sIC8vIDEgMSAxIDEgMSBOYU4vc05h
TgorfTsKKworLy8gTWFwIE1TRChtb3N0IHNpZ25pZmljYW50IGRpZ2l0KSB0byBjb21iaW5hdGlv
biBmaWVsZC4KK3N0YXRpYyB1aW50OF90IGtNc2RUb0NvbWJpbmF0aW9uRmllbGRbMTBdID0gewor
ICAgIDAsIC8vIGEgYiAwIDAgMAorICAgIDEsIC8vIGEgYiAwIDAgMQorICAgIDIsIC8vIGEgYiAw
IDEgMAorICAgIDMsIC8vIGEgYiAwIDEgMQorICAgIDQsIC8vIGEgYiAxIDAgMAorICAgIDUsIC8v
IGEgYiAxIDAgMQorICAgIDYsIC8vIGEgYiAxIDEgMAorICAgIDcsIC8vIGEgYiAxIDEgMQorICAg
IDB4MTgsIC8vIDEgMSBjIGQgMAorICAgIDB4MTksIC8vIDEgMSBjIGQgMQorfTsKKworLy8gUG93
ZXIgb2YgMTAgZm9yIERldmlkZS4KK2NvbnN0IHVuc2lnbmVkIGtQb3dlcnNbMTBdID0geworICAg
IDEsIC8vIDAKKyAgICAxMCwgLy8gMQorICAgIDEwMCwgLy8gMgorICAgIDEwMDAsIC8vIDMKKyAg
ICAxMDAwMCwgLy8gNAorICAgIDEwMDAwMCwgLy8gNQorICAgIDEwMDAwMDAsIC8vIDYKKyAgICAx
MDAwMDAwMCwgLy8gNworICAgIDEwMDAwMDAwMCwgLy8gOAorICAgIDEwMDAwMDAwMDAsIC8vIDkK
K307CisKK3N0YXRpYyB1aW50MTZfdCBjb25zdCBrRHBkVG85OTlbMTAyNF0gPSB7CisgICAgMCwg
MSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwKKyAgICA4MCwgODEsIDgwMCwgODAxLCA4ODAsIDg4
MSwgMTAsIDExLCAxMiwgMTMsCisgICAgMTQsIDE1LCAxNiwgMTcsIDE4LCAxOSwgOTAsIDkxLCA4
MTAsIDgxMSwKKyAgICA4OTAsIDg5MSwgMjAsIDIxLCAyMiwgMjMsIDI0LCAyNSwgMjYsIDI3LAor
ICAgIDI4LCAyOSwgODIsIDgzLCA4MjAsIDgyMSwgODA4LCA4MDksIDMwLCAzMSwKKyAgICAzMiwg
MzMsIDM0LCAzNSwgMzYsIDM3LCAzOCwgMzksIDkyLCA5MywKKyAgICA4MzAsIDgzMSwgODE4LCA4
MTksIDQwLCA0MSwgNDIsIDQzLCA0NCwgNDUsCisgICAgNDYsIDQ3LCA0OCwgNDksIDg0LCA4NSwg
ODQwLCA4NDEsIDg4LCA4OSwKKyAgICA1MCwgNTEsIDUyLCA1MywgNTQsIDU1LCA1NiwgNTcsIDU4
LCA1OSwKKyAgICA5NCwgOTUsIDg1MCwgODUxLCA5OCwgOTksIDYwLCA2MSwgNjIsIDYzLAorICAg
IDY0LCA2NSwgNjYsIDY3LCA2OCwgNjksIDg2LCA4NywgODYwLCA4NjEsCisgICAgODg4LCA4ODks
IDcwLCA3MSwgNzIsIDczLCA3NCwgNzUsIDc2LCA3NywKKyAgICA3OCwgNzksIDk2LCA5NywgODcw
LCA4NzEsIDg5OCwgODk5LCAxMDAsIDEwMSwKKyAgICAxMDIsIDEwMywgMTA0LCAxMDUsIDEwNiwg
MTA3LCAxMDgsIDEwOSwgMTgwLCAxODEsCisgICAgOTAwLCA5MDEsIDk4MCwgOTgxLCAxMTAsIDEx
MSwgMTEyLCAxMTMsIDExNCwgMTE1LAorICAgIDExNiwgMTE3LCAxMTgsIDExOSwgMTkwLCAxOTEs
IDkxMCwgOTExLCA5OTAsIDk5MSwKKyAgICAxMjAsIDEyMSwgMTIyLCAxMjMsIDEyNCwgMTI1LCAx
MjYsIDEyNywgMTI4LCAxMjksCisgICAgMTgyLCAxODMsIDkyMCwgOTIxLCA5MDgsIDkwOSwgMTMw
LCAxMzEsIDEzMiwgMTMzLAorICAgIDEzNCwgMTM1LCAxMzYsIDEzNywgMTM4LCAxMzksIDE5Miwg
MTkzLCA5MzAsIDkzMSwKKyAgICA5MTgsIDkxOSwgMTQwLCAxNDEsIDE0MiwgMTQzLCAxNDQsIDE0
NSwgMTQ2LCAxNDcsCisgICAgMTQ4LCAxNDksIDE4NCwgMTg1LCA5NDAsIDk0MSwgMTg4LCAxODks
IDE1MCwgMTUxLAorICAgIDE1MiwgMTUzLCAxNTQsIDE1NSwgMTU2LCAxNTcsIDE1OCwgMTU5LCAx
OTQsIDE5NSwKKyAgICA5NTAsIDk1MSwgMTk4LCAxOTksIDE2MCwgMTYxLCAxNjIsIDE2MywgMTY0
LCAxNjUsCisgICAgMTY2LCAxNjcsIDE2OCwgMTY5LCAxODYsIDE4NywgOTYwLCA5NjEsIDk4OCwg
OTg5LAorICAgIDE3MCwgMTcxLCAxNzIsIDE3MywgMTc0LCAxNzUsIDE3NiwgMTc3LCAxNzgsIDE3
OSwKKyAgICAxOTYsIDE5NywgOTcwLCA5NzEsIDk5OCwgOTk5LCAyMDAsIDIwMSwgMjAyLCAyMDMs
CisgICAgMjA0LCAyMDUsIDIwNiwgMjA3LCAyMDgsIDIwOSwgMjgwLCAyODEsIDgwMiwgODAzLAor
ICAgIDg4MiwgODgzLCAyMTAsIDIxMSwgMjEyLCAyMTMsIDIxNCwgMjE1LCAyMTYsIDIxNywKKyAg
ICAyMTgsIDIxOSwgMjkwLCAyOTEsIDgxMiwgODEzLCA4OTIsIDg5MywgMjIwLCAyMjEsCisgICAg
MjIyLCAyMjMsIDIyNCwgMjI1LCAyMjYsIDIyNywgMjI4LCAyMjksIDI4MiwgMjgzLAorICAgIDgy
MiwgODIzLCA4MjgsIDgyOSwgMjMwLCAyMzEsIDIzMiwgMjMzLCAyMzQsIDIzNSwKKyAgICAyMzYs
IDIzNywgMjM4LCAyMzksIDI5MiwgMjkzLCA4MzIsIDgzMywgODM4LCA4MzksCisgICAgMjQwLCAy
NDEsIDI0MiwgMjQzLCAyNDQsIDI0NSwgMjQ2LCAyNDcsIDI0OCwgMjQ5LAorICAgIDI4NCwgMjg1
LCA4NDIsIDg0MywgMjg4LCAyODksIDI1MCwgMjUxLCAyNTIsIDI1MywKKyAgICAyNTQsIDI1NSwg
MjU2LCAyNTcsIDI1OCwgMjU5LCAyOTQsIDI5NSwgODUyLCA4NTMsCisgICAgMjk4LCAyOTksIDI2
MCwgMjYxLCAyNjIsIDI2MywgMjY0LCAyNjUsIDI2NiwgMjY3LAorICAgIDI2OCwgMjY5LCAyODYs
IDI4NywgODYyLCA4NjMsIDAsIDAsIDI3MCwgMjcxLAorICAgIDI3MiwgMjczLCAyNzQsIDI3NSwg
Mjc2LCAyNzcsIDI3OCwgMjc5LCAyOTYsIDI5NywKKyAgICA4NzIsIDg3MywgMCwgMCwgMzAwLCAz
MDEsIDMwMiwgMzAzLCAzMDQsIDMwNSwKKyAgICAzMDYsIDMwNywgMzA4LCAzMDksIDM4MCwgMzgx
LCA5MDIsIDkwMywgOTgyLCA5ODMsCisgICAgMzEwLCAzMTEsIDMxMiwgMzEzLCAzMTQsIDMxNSwg
MzE2LCAzMTcsIDMxOCwgMzE5LAorICAgIDM5MCwgMzkxLCA5MTIsIDkxMywgOTkyLCA5OTMsIDMy
MCwgMzIxLCAzMjIsIDMyMywKKyAgICAzMjQsIDMyNSwgMzI2LCAzMjcsIDMyOCwgMzI5LCAzODIs
IDM4MywgOTIyLCA5MjMsCisgICAgOTI4LCA5MjksIDMzMCwgMzMxLCAzMzIsIDMzMywgMzM0LCAz
MzUsIDMzNiwgMzM3LAorICAgIDMzOCwgMzM5LCAzOTIsIDM5MywgOTMyLCA5MzMsIDkzOCwgOTM5
LCAzNDAsIDM0MSwKKyAgICAzNDIsIDM0MywgMzQ0LCAzNDUsIDM0NiwgMzQ3LCAzNDgsIDM0OSwg
Mzg0LCAzODUsCisgICAgOTQyLCA5NDMsIDM4OCwgMzg5LCAzNTAsIDM1MSwgMzUyLCAzNTMsIDM1
NCwgMzU1LAorICAgIDM1NiwgMzU3LCAzNTgsIDM1OSwgMzk0LCAzOTUsIDk1MiwgOTUzLCAzOTgs
IDM5OSwKKyAgICAzNjAsIDM2MSwgMzYyLCAzNjMsIDM2NCwgMzY1LCAzNjYsIDM2NywgMzY4LCAz
NjksCisgICAgMzg2LCAzODcsIDk2MiwgOTYzLCAwLCAwLCAzNzAsIDM3MSwgMzcyLCAzNzMsCisg
ICAgMzc0LCAzNzUsIDM3NiwgMzc3LCAzNzgsIDM3OSwgMzk2LCAzOTcsIDk3MiwgOTczLAorICAg
IDAsIDAsIDQwMCwgNDAxLCA0MDIsIDQwMywgNDA0LCA0MDUsIDQwNiwgNDA3LAorICAgIDQwOCwg
NDA5LCA0ODAsIDQ4MSwgODA0LCA4MDUsIDg4NCwgODg1LCA0MTAsIDQxMSwKKyAgICA0MTIsIDQx
MywgNDE0LCA0MTUsIDQxNiwgNDE3LCA0MTgsIDQxOSwgNDkwLCA0OTEsCisgICAgODE0LCA4MTUs
IDg5NCwgODk1LCA0MjAsIDQyMSwgNDIyLCA0MjMsIDQyNCwgNDI1LAorICAgIDQyNiwgNDI3LCA0
MjgsIDQyOSwgNDgyLCA0ODMsIDgyNCwgODI1LCA4NDgsIDg0OSwKKyAgICA0MzAsIDQzMSwgNDMy
LCA0MzMsIDQzNCwgNDM1LCA0MzYsIDQzNywgNDM4LCA0MzksCisgICAgNDkyLCA0OTMsIDgzNCwg
ODM1LCA4NTgsIDg1OSwgNDQwLCA0NDEsIDQ0MiwgNDQzLAorICAgIDQ0NCwgNDQ1LCA0NDYsIDQ0
NywgNDQ4LCA0NDksIDQ4NCwgNDg1LCA4NDQsIDg0NSwKKyAgICA0ODgsIDQ4OSwgNDUwLCA0NTEs
IDQ1MiwgNDUzLCA0NTQsIDQ1NSwgNDU2LCA0NTcsCisgICAgNDU4LCA0NTksIDQ5NCwgNDk1LCA4
NTQsIDg1NSwgNDk4LCA0OTksIDQ2MCwgNDYxLAorICAgIDQ2MiwgNDYzLCA0NjQsIDQ2NSwgNDY2
LCA0NjcsIDQ2OCwgNDY5LCA0ODYsIDQ4NywKKyAgICA4NjQsIDg2NSwgMCwgMCwgNDcwLCA0NzEs
IDQ3MiwgNDczLCA0NzQsIDQ3NSwKKyAgICA0NzYsIDQ3NywgNDc4LCA0NzksIDQ5NiwgNDk3LCA4
NzQsIDg3NSwgMCwgMCwKKyAgICA1MDAsIDUwMSwgNTAyLCA1MDMsIDUwNCwgNTA1LCA1MDYsIDUw
NywgNTA4LCA1MDksCisgICAgNTgwLCA1ODEsIDkwNCwgOTA1LCA5ODQsIDk4NSwgNTEwLCA1MTEs
IDUxMiwgNTEzLAorICAgIDUxNCwgNTE1LCA1MTYsIDUxNywgNTE4LCA1MTksIDU5MCwgNTkxLCA5
MTQsIDkxNSwKKyAgICA5OTQsIDk5NSwgNTIwLCA1MjEsIDUyMiwgNTIzLCA1MjQsIDUyNSwgNTI2
LCA1MjcsCisgICAgNTI4LCA1MjksIDU4MiwgNTgzLCA5MjQsIDkyNSwgOTQ4LCA5NDksIDUzMCwg
NTMxLAorICAgIDUzMiwgNTMzLCA1MzQsIDUzNSwgNTM2LCA1MzcsIDUzOCwgNTM5LCA1OTIsIDU5
MywKKyAgICA5MzQsIDkzNSwgOTU4LCA5NTksIDU0MCwgNTQxLCA1NDIsIDU0MywgNTQ0LCA1NDUs
CisgICAgNTQ2LCA1NDcsIDU0OCwgNTQ5LCA1ODQsIDU4NSwgOTQ0LCA5NDUsIDU4OCwgNTg5LAor
ICAgIDU1MCwgNTUxLCA1NTIsIDU1MywgNTU0LCA1NTUsIDU1NiwgNTU3LCA1NTgsIDU1OSwKKyAg
ICA1OTQsIDU5NSwgOTU0LCA5NTUsIDU5OCwgNTk5LCA1NjAsIDU2MSwgNTYyLCA1NjMsCisgICAg
NTY0LCA1NjUsIDU2NiwgNTY3LCA1NjgsIDU2OSwgNTg2LCA1ODcsIDk2NCwgOTY1LAorICAgIDAs
IDAsIDU3MCwgNTcxLCA1NzIsIDU3MywgNTc0LCA1NzUsIDU3NiwgNTc3LAorICAgIDU3OCwgNTc5
LCA1OTYsIDU5NywgOTc0LCA5NzUsIDAsIDAsIDYwMCwgNjAxLAorICAgIDYwMiwgNjAzLCA2MDQs
IDYwNSwgNjA2LCA2MDcsIDYwOCwgNjA5LCA2ODAsIDY4MSwKKyAgICA4MDYsIDgwNywgODg2LCA4
ODcsIDYxMCwgNjExLCA2MTIsIDYxMywgNjE0LCA2MTUsCisgICAgNjE2LCA2MTcsIDYxOCwgNjE5
LCA2OTAsIDY5MSwgODE2LCA4MTcsIDg5NiwgODk3LAorICAgIDYyMCwgNjIxLCA2MjIsIDYyMywg
NjI0LCA2MjUsIDYyNiwgNjI3LCA2MjgsIDYyOSwKKyAgICA2ODIsIDY4MywgODI2LCA4MjcsIDg2
OCwgODY5LCA2MzAsIDYzMSwgNjMyLCA2MzMsCisgICAgNjM0LCA2MzUsIDYzNiwgNjM3LCA2Mzgs
IDYzOSwgNjkyLCA2OTMsIDgzNiwgODM3LAorICAgIDg3OCwgODc5LCA2NDAsIDY0MSwgNjQyLCA2
NDMsIDY0NCwgNjQ1LCA2NDYsIDY0NywKKyAgICA2NDgsIDY0OSwgNjg0LCA2ODUsIDg0NiwgODQ3
LCA2ODgsIDY4OSwgNjUwLCA2NTEsCisgICAgNjUyLCA2NTMsIDY1NCwgNjU1LCA2NTYsIDY1Nywg
NjU4LCA2NTksIDY5NCwgNjk1LAorICAgIDg1NiwgODU3LCA2OTgsIDY5OSwgNjYwLCA2NjEsIDY2
MiwgNjYzLCA2NjQsIDY2NSwKKyAgICA2NjYsIDY2NywgNjY4LCA2NjksIDY4NiwgNjg3LCA4NjYs
IDg2NywgMCwgMCwKKyAgICA2NzAsIDY3MSwgNjcyLCA2NzMsIDY3NCwgNjc1LCA2NzYsIDY3Nywg
Njc4LCA2NzksCisgICAgNjk2LCA2OTcsIDg3NiwgODc3LCAwLCAwLCA3MDAsIDcwMSwgNzAyLCA3
MDMsCisgICAgNzA0LCA3MDUsIDcwNiwgNzA3LCA3MDgsIDcwOSwgNzgwLCA3ODEsIDkwNiwgOTA3
LAorICAgIDk4NiwgOTg3LCA3MTAsIDcxMSwgNzEyLCA3MTMsIDcxNCwgNzE1LCA3MTYsIDcxNywK
KyAgICA3MTgsIDcxOSwgNzkwLCA3OTEsIDkxNiwgOTE3LCA5OTYsIDk5NywgNzIwLCA3MjEsCisg
ICAgNzIyLCA3MjMsIDcyNCwgNzI1LCA3MjYsIDcyNywgNzI4LCA3MjksIDc4MiwgNzgzLAorICAg
IDkyNiwgOTI3LCA5NjgsIDk2OSwgNzMwLCA3MzEsIDczMiwgNzMzLCA3MzQsIDczNSwKKyAgICA3
MzYsIDczNywgNzM4LCA3MzksIDc5MiwgNzkzLCA5MzYsIDkzNywgOTc4LCA5NzksCisgICAgNzQw
LCA3NDEsIDc0MiwgNzQzLCA3NDQsIDc0NSwgNzQ2LCA3NDcsIDc0OCwgNzQ5LAorICAgIDc4NCwg
Nzg1LCA5NDYsIDk0NywgNzg4LCA3ODksIDc1MCwgNzUxLCA3NTIsIDc1MywKKyAgICA3NTQsIDc1
NSwgNzU2LCA3NTcsIDc1OCwgNzU5LCA3OTQsIDc5NSwgOTU2LCA5NTcsCisgICAgNzk4LCA3OTks
IDc2MCwgNzYxLCA3NjIsIDc2MywgNzY0LCA3NjUsIDc2NiwgNzY3LAorICAgIDc2OCwgNzY5LCA3
ODYsIDc4NywgOTY2LCA5NjcsIDAsIDAsIDc3MCwgNzcxLAorICAgIDc3MiwgNzczLCA3NzQsIDc3
NSwgNzc2LCA3NzcsIDc3OCwgNzc5LCA3OTYsIDc5NywKKyAgICA5NzYsIDk3NywgMCwgMCwKK307
CisKK3N0YXRpYyB1aW50MTZfdCBjb25zdCBrRHBkVG9QYWNrZWRCY2QzWzQwOTZdID0geworICAg
IDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksCisgICAgMTI4LCAxMjksIDIwNDgsIDIwNDks
IDIxNzYsIDIxNzcsIDE2LCAxNywgMTgsIDE5LAorICAgIDIwLCAyMSwgMjIsIDIzLCAyNCwgMjUs
IDE0NCwgMTQ1LCAyMDY0LCAyMDY1LAorICAgIDIxOTIsIDIxOTMsIDMyLCAzMywgMzQsIDM1LCAz
NiwgMzcsIDM4LCAzOSwKKyAgICA0MCwgNDEsIDEzMCwgMTMxLCAyMDgwLCAyMDgxLCAyMDU2LCAy
MDU3LCA0OCwgNDksCisgICAgNTAsIDUxLCA1MiwgNTMsIDU0LCA1NSwgNTYsIDU3LCAxNDYsIDE0
NywKKyAgICAyMDk2LCAyMDk3LCAyMDcyLCAyMDczLCA2NCwgNjUsIDY2LCA2NywgNjgsIDY5LAor
ICAgIDcwLCA3MSwgNzIsIDczLCAxMzIsIDEzMywgMjExMiwgMjExMywgMTM2LCAxMzcsCisgICAg
ODAsIDgxLCA4MiwgODMsIDg0LCA4NSwgODYsIDg3LCA4OCwgODksCisgICAgMTQ4LCAxNDksIDIx
MjgsIDIxMjksIDE1MiwgMTUzLCA5NiwgOTcsIDk4LCA5OSwKKyAgICAxMDAsIDEwMSwgMTAyLCAx
MDMsIDEwNCwgMTA1LCAxMzQsIDEzNSwgMjE0NCwgMjE0NSwKKyAgICAyMTg0LCAyMTg1LCAxMTIs
IDExMywgMTE0LCAxMTUsIDExNiwgMTE3LCAxMTgsIDExOSwKKyAgICAxMjAsIDEyMSwgMTUwLCAx
NTEsIDIxNjAsIDIxNjEsIDIyMDAsIDIyMDEsIDI1NiwgMjU3LAorICAgIDI1OCwgMjU5LCAyNjAs
IDI2MSwgMjYyLCAyNjMsIDI2NCwgMjY1LCAzODQsIDM4NSwKKyAgICAyMzA0LCAyMzA1LCAyNDMy
LCAyNDMzLCAyNzIsIDI3MywgMjc0LCAyNzUsIDI3NiwgMjc3LAorICAgIDI3OCwgMjc5LCAyODAs
IDI4MSwgNDAwLCA0MDEsIDIzMjAsIDIzMjEsIDI0NDgsIDI0NDksCisgICAgMjg4LCAyODksIDI5
MCwgMjkxLCAyOTIsIDI5MywgMjk0LCAyOTUsIDI5NiwgMjk3LAorICAgIDM4NiwgMzg3LCAyMzM2
LCAyMzM3LCAyMzEyLCAyMzEzLCAzMDQsIDMwNSwgMzA2LCAzMDcsCisgICAgMzA4LCAzMDksIDMx
MCwgMzExLCAzMTIsIDMxMywgNDAyLCA0MDMsIDIzNTIsIDIzNTMsCisgICAgMjMyOCwgMjMyOSwg
MzIwLCAzMjEsIDMyMiwgMzIzLCAzMjQsIDMyNSwgMzI2LCAzMjcsCisgICAgMzI4LCAzMjksIDM4
OCwgMzg5LCAyMzY4LCAyMzY5LCAzOTIsIDM5MywgMzM2LCAzMzcsCisgICAgMzM4LCAzMzksIDM0
MCwgMzQxLCAzNDIsIDM0MywgMzQ0LCAzNDUsIDQwNCwgNDA1LAorICAgIDIzODQsIDIzODUsIDQw
OCwgNDA5LCAzNTIsIDM1MywgMzU0LCAzNTUsIDM1NiwgMzU3LAorICAgIDM1OCwgMzU5LCAzNjAs
IDM2MSwgMzkwLCAzOTEsIDI0MDAsIDI0MDEsIDI0NDAsIDI0NDEsCisgICAgMzY4LCAzNjksIDM3
MCwgMzcxLCAzNzIsIDM3MywgMzc0LCAzNzUsIDM3NiwgMzc3LAorICAgIDQwNiwgNDA3LCAyNDE2
LCAyNDE3LCAyNDU2LCAyNDU3LCA1MTIsIDUxMywgNTE0LCA1MTUsCisgICAgNTE2LCA1MTcsIDUx
OCwgNTE5LCA1MjAsIDUyMSwgNjQwLCA2NDEsIDIwNTAsIDIwNTEsCisgICAgMjE3OCwgMjE3OSwg
NTI4LCA1MjksIDUzMCwgNTMxLCA1MzIsIDUzMywgNTM0LCA1MzUsCisgICAgNTM2LCA1MzcsIDY1
NiwgNjU3LCAyMDY2LCAyMDY3LCAyMTk0LCAyMTk1LCA1NDQsIDU0NSwKKyAgICA1NDYsIDU0Nywg
NTQ4LCA1NDksIDU1MCwgNTUxLCA1NTIsIDU1MywgNjQyLCA2NDMsCisgICAgMjA4MiwgMjA4Mywg
MjA4OCwgMjA4OSwgNTYwLCA1NjEsIDU2MiwgNTYzLCA1NjQsIDU2NSwKKyAgICA1NjYsIDU2Nywg
NTY4LCA1NjksIDY1OCwgNjU5LCAyMDk4LCAyMDk5LCAyMTA0LCAyMTA1LAorICAgIDU3NiwgNTc3
LCA1NzgsIDU3OSwgNTgwLCA1ODEsIDU4MiwgNTgzLCA1ODQsIDU4NSwKKyAgICA2NDQsIDY0NSwg
MjExNCwgMjExNSwgNjQ4LCA2NDksIDU5MiwgNTkzLCA1OTQsIDU5NSwKKyAgICA1OTYsIDU5Nywg
NTk4LCA1OTksIDYwMCwgNjAxLCA2NjAsIDY2MSwgMjEzMCwgMjEzMSwKKyAgICA2NjQsIDY2NSwg
NjA4LCA2MDksIDYxMCwgNjExLCA2MTIsIDYxMywgNjE0LCA2MTUsCisgICAgNjE2LCA2MTcsIDY0
NiwgNjQ3LCAyMTQ2LCAyMTQ3LCAwLCAwLCA2MjQsIDYyNSwKKyAgICA2MjYsIDYyNywgNjI4LCA2
MjksIDYzMCwgNjMxLCA2MzIsIDYzMywgNjYyLCA2NjMsCisgICAgMjE2MiwgMjE2MywgMCwgMCwg
NzY4LCA3NjksIDc3MCwgNzcxLCA3NzIsIDc3MywKKyAgICA3NzQsIDc3NSwgNzc2LCA3NzcsIDg5
NiwgODk3LCAyMzA2LCAyMzA3LCAyNDM0LCAyNDM1LAorICAgIDc4NCwgNzg1LCA3ODYsIDc4Nywg
Nzg4LCA3ODksIDc5MCwgNzkxLCA3OTIsIDc5MywKKyAgICA5MTIsIDkxMywgMjMyMiwgMjMyMywg
MjQ1MCwgMjQ1MSwgODAwLCA4MDEsIDgwMiwgODAzLAorICAgIDgwNCwgODA1LCA4MDYsIDgwNywg
ODA4LCA4MDksIDg5OCwgODk5LCAyMzM4LCAyMzM5LAorICAgIDIzNDQsIDIzNDUsIDgxNiwgODE3
LCA4MTgsIDgxOSwgODIwLCA4MjEsIDgyMiwgODIzLAorICAgIDgyNCwgODI1LCA5MTQsIDkxNSwg
MjM1NCwgMjM1NSwgMjM2MCwgMjM2MSwgODMyLCA4MzMsCisgICAgODM0LCA4MzUsIDgzNiwgODM3
LCA4MzgsIDgzOSwgODQwLCA4NDEsIDkwMCwgOTAxLAorICAgIDIzNzAsIDIzNzEsIDkwNCwgOTA1
LCA4NDgsIDg0OSwgODUwLCA4NTEsIDg1MiwgODUzLAorICAgIDg1NCwgODU1LCA4NTYsIDg1Nywg
OTE2LCA5MTcsIDIzODYsIDIzODcsIDkyMCwgOTIxLAorICAgIDg2NCwgODY1LCA4NjYsIDg2Nywg
ODY4LCA4NjksIDg3MCwgODcxLCA4NzIsIDg3MywKKyAgICA5MDIsIDkwMywgMjQwMiwgMjQwMywg
MCwgMCwgODgwLCA4ODEsIDg4MiwgODgzLAorICAgIDg4NCwgODg1LCA4ODYsIDg4NywgODg4LCA4
ODksIDkxOCwgOTE5LCAyNDE4LCAyNDE5LAorICAgIDAsIDAsIDEwMjQsIDEwMjUsIDEwMjYsIDEw
MjcsIDEwMjgsIDEwMjksIDEwMzAsIDEwMzEsCisgICAgMTAzMiwgMTAzMywgMTE1MiwgMTE1Mywg
MjA1MiwgMjA1MywgMjE4MCwgMjE4MSwgMTA0MCwgMTA0MSwKKyAgICAxMDQyLCAxMDQzLCAxMDQ0
LCAxMDQ1LCAxMDQ2LCAxMDQ3LCAxMDQ4LCAxMDQ5LCAxMTY4LCAxMTY5LAorICAgIDIwNjgsIDIw
NjksIDIxOTYsIDIxOTcsIDEwNTYsIDEwNTcsIDEwNTgsIDEwNTksIDEwNjAsIDEwNjEsCisgICAg
MTA2MiwgMTA2MywgMTA2NCwgMTA2NSwgMTE1NCwgMTE1NSwgMjA4NCwgMjA4NSwgMjEyMCwgMjEy
MSwKKyAgICAxMDcyLCAxMDczLCAxMDc0LCAxMDc1LCAxMDc2LCAxMDc3LCAxMDc4LCAxMDc5LCAx
MDgwLCAxMDgxLAorICAgIDExNzAsIDExNzEsIDIxMDAsIDIxMDEsIDIxMzYsIDIxMzcsIDEwODgs
IDEwODksIDEwOTAsIDEwOTEsCisgICAgMTA5MiwgMTA5MywgMTA5NCwgMTA5NSwgMTA5NiwgMTA5
NywgMTE1NiwgMTE1NywgMjExNiwgMjExNywKKyAgICAxMTYwLCAxMTYxLCAxMTA0LCAxMTA1LCAx
MTA2LCAxMTA3LCAxMTA4LCAxMTA5LCAxMTEwLCAxMTExLAorICAgIDExMTIsIDExMTMsIDExNzIs
IDExNzMsIDIxMzIsIDIxMzMsIDExNzYsIDExNzcsIDExMjAsIDExMjEsCisgICAgMTEyMiwgMTEy
MywgMTEyNCwgMTEyNSwgMTEyNiwgMTEyNywgMTEyOCwgMTEyOSwgMTE1OCwgMTE1OSwKKyAgICAy
MTQ4LCAyMTQ5LCAwLCAwLCAxMTM2LCAxMTM3LCAxMTM4LCAxMTM5LCAxMTQwLCAxMTQxLAorICAg
IDExNDIsIDExNDMsIDExNDQsIDExNDUsIDExNzQsIDExNzUsIDIxNjQsIDIxNjUsIDAsIDAsCisg
ICAgMTI4MCwgMTI4MSwgMTI4MiwgMTI4MywgMTI4NCwgMTI4NSwgMTI4NiwgMTI4NywgMTI4OCwg
MTI4OSwKKyAgICAxNDA4LCAxNDA5LCAyMzA4LCAyMzA5LCAyNDM2LCAyNDM3LCAxMjk2LCAxMjk3
LCAxMjk4LCAxMjk5LAorICAgIDEzMDAsIDEzMDEsIDEzMDIsIDEzMDMsIDEzMDQsIDEzMDUsIDE0
MjQsIDE0MjUsIDIzMjQsIDIzMjUsCisgICAgMjQ1MiwgMjQ1MywgMTMxMiwgMTMxMywgMTMxNCwg
MTMxNSwgMTMxNiwgMTMxNywgMTMxOCwgMTMxOSwKKyAgICAxMzIwLCAxMzIxLCAxNDEwLCAxNDEx
LCAyMzQwLCAyMzQxLCAyMzc2LCAyMzc3LCAxMzI4LCAxMzI5LAorICAgIDEzMzAsIDEzMzEsIDEz
MzIsIDEzMzMsIDEzMzQsIDEzMzUsIDEzMzYsIDEzMzcsIDE0MjYsIDE0MjcsCisgICAgMjM1Niwg
MjM1NywgMjM5MiwgMjM5MywgMTM0NCwgMTM0NSwgMTM0NiwgMTM0NywgMTM0OCwgMTM0OSwKKyAg
ICAxMzUwLCAxMzUxLCAxMzUyLCAxMzUzLCAxNDEyLCAxNDEzLCAyMzcyLCAyMzczLCAxNDE2LCAx
NDE3LAorICAgIDEzNjAsIDEzNjEsIDEzNjIsIDEzNjMsIDEzNjQsIDEzNjUsIDEzNjYsIDEzNjcs
IDEzNjgsIDEzNjksCisgICAgMTQyOCwgMTQyOSwgMjM4OCwgMjM4OSwgMTQzMiwgMTQzMywgMTM3
NiwgMTM3NywgMTM3OCwgMTM3OSwKKyAgICAxMzgwLCAxMzgxLCAxMzgyLCAxMzgzLCAxMzg0LCAx
Mzg1LCAxNDE0LCAxNDE1LCAyNDA0LCAyNDA1LAorICAgIDAsIDAsIDEzOTIsIDEzOTMsIDEzOTQs
IDEzOTUsIDEzOTYsIDEzOTcsIDEzOTgsIDEzOTksCisgICAgMTQwMCwgMTQwMSwgMTQzMCwgMTQz
MSwgMjQyMCwgMjQyMSwgMCwgMCwgMTUzNiwgMTUzNywKKyAgICAxNTM4LCAxNTM5LCAxNTQwLCAx
NTQxLCAxNTQyLCAxNTQzLCAxNTQ0LCAxNTQ1LCAxNjY0LCAxNjY1LAorICAgIDIwNTQsIDIwNTUs
IDIxODIsIDIxODMsIDE1NTIsIDE1NTMsIDE1NTQsIDE1NTUsIDE1NTYsIDE1NTcsCisgICAgMTU1
OCwgMTU1OSwgMTU2MCwgMTU2MSwgMTY4MCwgMTY4MSwgMjA3MCwgMjA3MSwgMjE5OCwgMjE5OSwK
KyAgICAxNTY4LCAxNTY5LCAxNTcwLCAxNTcxLCAxNTcyLCAxNTczLCAxNTc0LCAxNTc1LCAxNTc2
LCAxNTc3LAorICAgIDE2NjYsIDE2NjcsIDIwODYsIDIwODcsIDIxNTIsIDIxNTMsIDE1ODQsIDE1
ODUsIDE1ODYsIDE1ODcsCisgICAgMTU4OCwgMTU4OSwgMTU5MCwgMTU5MSwgMTU5MiwgMTU5Mywg
MTY4MiwgMTY4MywgMjEwMiwgMjEwMywKKyAgICAyMTY4LCAyMTY5LCAxNjAwLCAxNjAxLCAxNjAy
LCAxNjAzLCAxNjA0LCAxNjA1LCAxNjA2LCAxNjA3LAorICAgIDE2MDgsIDE2MDksIDE2NjgsIDE2
NjksIDIxMTgsIDIxMTksIDE2NzIsIDE2NzMsIDE2MTYsIDE2MTcsCisgICAgMTYxOCwgMTYxOSwg
MTYyMCwgMTYyMSwgMTYyMiwgMTYyMywgMTYyNCwgMTYyNSwgMTY4NCwgMTY4NSwKKyAgICAyMTM0
LCAyMTM1LCAxNjg4LCAxNjg5LCAxNjMyLCAxNjMzLCAxNjM0LCAxNjM1LCAxNjM2LCAxNjM3LAor
ICAgIDE2MzgsIDE2MzksIDE2NDAsIDE2NDEsIDE2NzAsIDE2NzEsIDIxNTAsIDIxNTEsIDAsIDAs
CisgICAgMTY0OCwgMTY0OSwgMTY1MCwgMTY1MSwgMTY1MiwgMTY1MywgMTY1NCwgMTY1NSwgMTY1
NiwgMTY1NywKKyAgICAxNjg2LCAxNjg3LCAyMTY2LCAyMTY3LCAwLCAwLCAxNzkyLCAxNzkzLCAx
Nzk0LCAxNzk1LAorICAgIDE3OTYsIDE3OTcsIDE3OTgsIDE3OTksIDE4MDAsIDE4MDEsIDE5MjAs
IDE5MjEsIDIzMTAsIDIzMTEsCisgICAgMjQzOCwgMjQzOSwgMTgwOCwgMTgwOSwgMTgxMCwgMTgx
MSwgMTgxMiwgMTgxMywgMTgxNCwgMTgxNSwKKyAgICAxODE2LCAxODE3LCAxOTM2LCAxOTM3LCAy
MzI2LCAyMzI3LCAyNDU0LCAyNDU1LCAxODI0LCAxODI1LAorICAgIDE4MjYsIDE4MjcsIDE4Mjgs
IDE4MjksIDE4MzAsIDE4MzEsIDE4MzIsIDE4MzMsIDE5MjIsIDE5MjMsCisgICAgMjM0MiwgMjM0
MywgMjQwOCwgMjQwOSwgMTg0MCwgMTg0MSwgMTg0MiwgMTg0MywgMTg0NCwgMTg0NSwKKyAgICAx
ODQ2LCAxODQ3LCAxODQ4LCAxODQ5LCAxOTM4LCAxOTM5LCAyMzU4LCAyMzU5LCAyNDI0LCAyNDI1
LAorICAgIDE4NTYsIDE4NTcsIDE4NTgsIDE4NTksIDE4NjAsIDE4NjEsIDE4NjIsIDE4NjMsIDE4
NjQsIDE4NjUsCisgICAgMTkyNCwgMTkyNSwgMjM3NCwgMjM3NSwgMTkyOCwgMTkyOSwgMTg3Miwg
MTg3MywgMTg3NCwgMTg3NSwKKyAgICAxODc2LCAxODc3LCAxODc4LCAxODc5LCAxODgwLCAxODgx
LCAxOTQwLCAxOTQxLCAyMzkwLCAyMzkxLAorICAgIDE5NDQsIDE5NDUsIDE4ODgsIDE4ODksIDE4
OTAsIDE4OTEsIDE4OTIsIDE4OTMsIDE4OTQsIDE4OTUsCisgICAgMTg5NiwgMTg5NywgMTkyNiwg
MTkyNywgMjQwNiwgMjQwNywgMCwgMCwgMTkwNCwgMTkwNSwKKyAgICAxOTA2LCAxOTA3LCAxOTA4
LCAxOTA5LCAxOTEwLCAxOTExLCAxOTEyLCAxOTEzLCAxOTQyLCAxOTQzLAorICAgIDI0MjIsIDI0
MjMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAg
ICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
CisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAg
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwK
KyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAor
ICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisg
ICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAg
ICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
CisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAg
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwK
KyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAor
ICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisg
ICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAg
ICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
CisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAg
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwK
KyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAor
ICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisg
ICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAg
ICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
CisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAg
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwK
KyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAor
ICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisg
ICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAg
ICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
CisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAg
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwK
KyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAor
ICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisg
ICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAg
ICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
CisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAg
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwKK307CisKK3N0YXRp
YyB1aW50MTZfdCBjb25zdCBrUGFja2VkQmNkM1RvRHBkWzI0NThdID0geworICAgIDAsIDEsIDIs
IDMsIDQsIDUsIDYsIDcsIDgsIDksCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMTYsIDE3LCAxOCwg
MTksCisgICAgMjAsIDIxLCAyMiwgMjMsIDI0LCAyNSwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAz
MiwgMzMsIDM0LCAzNSwgMzYsIDM3LCAzOCwgMzksCisgICAgNDAsIDQxLCAwLCAwLCAwLCAwLCAw
LCAwLCA0OCwgNDksCisgICAgNTAsIDUxLCA1MiwgNTMsIDU0LCA1NSwgNTYsIDU3LCAwLCAwLAor
ICAgIDAsIDAsIDAsIDAsIDY0LCA2NSwgNjYsIDY3LCA2OCwgNjksCisgICAgNzAsIDcxLCA3Miwg
NzMsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgODAsIDgxLCA4MiwgODMsIDg0LCA4NSwgODYsIDg3
LCA4OCwgODksCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgOTYsIDk3LCA5OCwgOTksCisgICAgMTAw
LCAxMDEsIDEwMiwgMTAzLCAxMDQsIDEwNSwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAxMTIsIDEx
MywgMTE0LCAxMTUsIDExNiwgMTE3LCAxMTgsIDExOSwKKyAgICAxMjAsIDEyMSwgMCwgMCwgMCwg
MCwgMCwgMCwgMTAsIDExLAorICAgIDQyLCA0MywgNzQsIDc1LCAxMDYsIDEwNywgNzgsIDc5LCAw
LCAwLAorICAgIDAsIDAsIDAsIDAsIDI2LCAyNywgNTgsIDU5LCA5MCwgOTEsCisgICAgMTIyLCAx
MjMsIDk0LCA5NSwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAor
ICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAxMjgsIDEyOSwgMTMwLCAxMzEsCisgICAgMTMyLCAx
MzMsIDEzNCwgMTM1LCAxMzYsIDEzNywgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAxNDQsIDE0NSwg
MTQ2LCAxNDcsIDE0OCwgMTQ5LCAxNTAsIDE1MSwKKyAgICAxNTIsIDE1MywgMCwgMCwgMCwgMCwg
MCwgMCwgMTYwLCAxNjEsCisgICAgMTYyLCAxNjMsIDE2NCwgMTY1LCAxNjYsIDE2NywgMTY4LCAx
NjksIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMTc2LCAxNzcsIDE3OCwgMTc5LCAxODAsIDE4MSwK
KyAgICAxODIsIDE4MywgMTg0LCAxODUsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMTkyLCAxOTMs
IDE5NCwgMTk1LCAxOTYsIDE5NywgMTk4LCAxOTksIDIwMCwgMjAxLAorICAgIDAsIDAsIDAsIDAs
IDAsIDAsIDIwOCwgMjA5LCAyMTAsIDIxMSwKKyAgICAyMTIsIDIxMywgMjE0LCAyMTUsIDIxNiwg
MjE3LCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDIyNCwgMjI1LCAyMjYsIDIyNywgMjI4LCAyMjks
IDIzMCwgMjMxLAorICAgIDIzMiwgMjMzLCAwLCAwLCAwLCAwLCAwLCAwLCAyNDAsIDI0MSwKKyAg
ICAyNDIsIDI0MywgMjQ0LCAyNDUsIDI0NiwgMjQ3LCAyNDgsIDI0OSwgMCwgMCwKKyAgICAwLCAw
LCAwLCAwLCAxMzgsIDEzOSwgMTcwLCAxNzEsIDIwMiwgMjAzLAorICAgIDIzNCwgMjM1LCAyMDYs
IDIwNywgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAxNTQsIDE1NSwgMTg2LCAxODcsIDIxOCwgMjE5
LCAyNTAsIDI1MSwgMjIyLCAyMjMsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwK
KyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAyNTYsIDI1NywgMjU4LCAy
NTksIDI2MCwgMjYxLCAyNjIsIDI2MywKKyAgICAyNjQsIDI2NSwgMCwgMCwgMCwgMCwgMCwgMCwg
MjcyLCAyNzMsCisgICAgMjc0LCAyNzUsIDI3NiwgMjc3LCAyNzgsIDI3OSwgMjgwLCAyODEsIDAs
IDAsCisgICAgMCwgMCwgMCwgMCwgMjg4LCAyODksIDI5MCwgMjkxLCAyOTIsIDI5MywKKyAgICAy
OTQsIDI5NSwgMjk2LCAyOTcsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMzA0LCAzMDUsIDMwNiwg
MzA3LCAzMDgsIDMwOSwgMzEwLCAzMTEsIDMxMiwgMzEzLAorICAgIDAsIDAsIDAsIDAsIDAsIDAs
IDMyMCwgMzIxLCAzMjIsIDMyMywKKyAgICAzMjQsIDMyNSwgMzI2LCAzMjcsIDMyOCwgMzI5LCAw
LCAwLCAwLCAwLAorICAgIDAsIDAsIDMzNiwgMzM3LCAzMzgsIDMzOSwgMzQwLCAzNDEsIDM0Miwg
MzQzLAorICAgIDM0NCwgMzQ1LCAwLCAwLCAwLCAwLCAwLCAwLCAzNTIsIDM1MywKKyAgICAzNTQs
IDM1NSwgMzU2LCAzNTcsIDM1OCwgMzU5LCAzNjAsIDM2MSwgMCwgMCwKKyAgICAwLCAwLCAwLCAw
LCAzNjgsIDM2OSwgMzcwLCAzNzEsIDM3MiwgMzczLAorICAgIDM3NCwgMzc1LCAzNzYsIDM3Nywg
MCwgMCwgMCwgMCwgMCwgMCwKKyAgICAyNjYsIDI2NywgMjk4LCAyOTksIDMzMCwgMzMxLCAzNjIs
IDM2MywgMzM0LCAzMzUsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMjgyLCAyODMsIDMxNCwgMzE1
LAorICAgIDM0NiwgMzQ3LCAzNzgsIDM3OSwgMzUwLCAzNTEsIDAsIDAsIDAsIDAsCisgICAgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAg
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzg0LCAz
ODUsCisgICAgMzg2LCAzODcsIDM4OCwgMzg5LCAzOTAsIDM5MSwgMzkyLCAzOTMsIDAsIDAsCisg
ICAgMCwgMCwgMCwgMCwgNDAwLCA0MDEsIDQwMiwgNDAzLCA0MDQsIDQwNSwKKyAgICA0MDYsIDQw
NywgNDA4LCA0MDksIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgNDE2LCA0MTcsIDQxOCwgNDE5LCA0
MjAsIDQyMSwgNDIyLCA0MjMsIDQyNCwgNDI1LAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDQzMiwg
NDMzLCA0MzQsIDQzNSwKKyAgICA0MzYsIDQzNywgNDM4LCA0MzksIDQ0MCwgNDQxLCAwLCAwLCAw
LCAwLAorICAgIDAsIDAsIDQ0OCwgNDQ5LCA0NTAsIDQ1MSwgNDUyLCA0NTMsIDQ1NCwgNDU1LAor
ICAgIDQ1NiwgNDU3LCAwLCAwLCAwLCAwLCAwLCAwLCA0NjQsIDQ2NSwKKyAgICA0NjYsIDQ2Nywg
NDY4LCA0NjksIDQ3MCwgNDcxLCA0NzIsIDQ3MywgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCA0ODAs
IDQ4MSwgNDgyLCA0ODMsIDQ4NCwgNDg1LAorICAgIDQ4NiwgNDg3LCA0ODgsIDQ4OSwgMCwgMCwg
MCwgMCwgMCwgMCwKKyAgICA0OTYsIDQ5NywgNDk4LCA0OTksIDUwMCwgNTAxLCA1MDIsIDUwMywg
NTA0LCA1MDUsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMzk0LCAzOTUsIDQyNiwgNDI3LAorICAg
IDQ1OCwgNDU5LCA0OTAsIDQ5MSwgNDYyLCA0NjMsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgNDEw
LCA0MTEsIDQ0MiwgNDQzLCA0NzQsIDQ3NSwgNTA2LCA1MDcsCisgICAgNDc4LCA0NzksIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAg
ICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
CisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwg
MCwgMCwgMCwgNTEyLCA1MTMsIDUxNCwgNTE1LCA1MTYsIDUxNywKKyAgICA1MTgsIDUxOSwgNTIw
LCA1MjEsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgNTI4LCA1MjksIDUzMCwgNTMxLCA1MzIsIDUz
MywgNTM0LCA1MzUsIDUzNiwgNTM3LAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDU0NCwgNTQ1LCA1
NDYsIDU0NywKKyAgICA1NDgsIDU0OSwgNTUwLCA1NTEsIDU1MiwgNTUzLCAwLCAwLCAwLCAwLAor
ICAgIDAsIDAsIDU2MCwgNTYxLCA1NjIsIDU2MywgNTY0LCA1NjUsIDU2NiwgNTY3LAorICAgIDU2
OCwgNTY5LCAwLCAwLCAwLCAwLCAwLCAwLCA1NzYsIDU3NywKKyAgICA1NzgsIDU3OSwgNTgwLCA1
ODEsIDU4MiwgNTgzLCA1ODQsIDU4NSwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCA1OTIsIDU5Mywg
NTk0LCA1OTUsIDU5NiwgNTk3LAorICAgIDU5OCwgNTk5LCA2MDAsIDYwMSwgMCwgMCwgMCwgMCwg
MCwgMCwKKyAgICA2MDgsIDYwOSwgNjEwLCA2MTEsIDYxMiwgNjEzLCA2MTQsIDYxNSwgNjE2LCA2
MTcsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNjI0LCA2MjUsIDYyNiwgNjI3LAorICAgIDYyOCwg
NjI5LCA2MzAsIDYzMSwgNjMyLCA2MzMsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgNTIyLCA1MjMs
IDU1NCwgNTU1LCA1ODYsIDU4NywgNjE4LCA2MTksCisgICAgNTkwLCA1OTEsIDAsIDAsIDAsIDAs
IDAsIDAsIDUzOCwgNTM5LAorICAgIDU3MCwgNTcxLCA2MDIsIDYwMywgNjM0LCA2MzUsIDYwNiwg
NjA3LCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsCisgICAgNjQwLCA2NDEsIDY0MiwgNjQzLCA2NDQsIDY0NSwgNjQ2
LCA2NDcsIDY0OCwgNjQ5LAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDY1NiwgNjU3LCA2NTgsIDY1
OSwKKyAgICA2NjAsIDY2MSwgNjYyLCA2NjMsIDY2NCwgNjY1LCAwLCAwLCAwLCAwLAorICAgIDAs
IDAsIDY3MiwgNjczLCA2NzQsIDY3NSwgNjc2LCA2NzcsIDY3OCwgNjc5LAorICAgIDY4MCwgNjgx
LCAwLCAwLCAwLCAwLCAwLCAwLCA2ODgsIDY4OSwKKyAgICA2OTAsIDY5MSwgNjkyLCA2OTMsIDY5
NCwgNjk1LCA2OTYsIDY5NywgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCA3MDQsIDcwNSwgNzA2LCA3
MDcsIDcwOCwgNzA5LAorICAgIDcxMCwgNzExLCA3MTIsIDcxMywgMCwgMCwgMCwgMCwgMCwgMCwK
KyAgICA3MjAsIDcyMSwgNzIyLCA3MjMsIDcyNCwgNzI1LCA3MjYsIDcyNywgNzI4LCA3MjksCisg
ICAgMCwgMCwgMCwgMCwgMCwgMCwgNzM2LCA3MzcsIDczOCwgNzM5LAorICAgIDc0MCwgNzQxLCA3
NDIsIDc0MywgNzQ0LCA3NDUsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgNzUyLCA3NTMsIDc1NCwg
NzU1LCA3NTYsIDc1NywgNzU4LCA3NTksCisgICAgNzYwLCA3NjEsIDAsIDAsIDAsIDAsIDAsIDAs
IDY1MCwgNjUxLAorICAgIDY4MiwgNjgzLCA3MTQsIDcxNSwgNzQ2LCA3NDcsIDcxOCwgNzE5LCAw
LCAwLAorICAgIDAsIDAsIDAsIDAsIDY2NiwgNjY3LCA2OTgsIDY5OSwgNzMwLCA3MzEsCisgICAg
NzYyLCA3NjMsIDczNCwgNzM1LCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisg
ICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDc2OCwgNzY5LCA3NzAsIDc3MSwKKyAg
ICA3NzIsIDc3MywgNzc0LCA3NzUsIDc3NiwgNzc3LCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDc4
NCwgNzg1LCA3ODYsIDc4NywgNzg4LCA3ODksIDc5MCwgNzkxLAorICAgIDc5MiwgNzkzLCAwLCAw
LCAwLCAwLCAwLCAwLCA4MDAsIDgwMSwKKyAgICA4MDIsIDgwMywgODA0LCA4MDUsIDgwNiwgODA3
LCA4MDgsIDgwOSwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCA4MTYsIDgxNywgODE4LCA4MTksIDgy
MCwgODIxLAorICAgIDgyMiwgODIzLCA4MjQsIDgyNSwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICA4
MzIsIDgzMywgODM0LCA4MzUsIDgzNiwgODM3LCA4MzgsIDgzOSwgODQwLCA4NDEsCisgICAgMCwg
MCwgMCwgMCwgMCwgMCwgODQ4LCA4NDksIDg1MCwgODUxLAorICAgIDg1MiwgODUzLCA4NTQsIDg1
NSwgODU2LCA4NTcsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgODY0LCA4NjUsIDg2NiwgODY3LCA4
NjgsIDg2OSwgODcwLCA4NzEsCisgICAgODcyLCA4NzMsIDAsIDAsIDAsIDAsIDAsIDAsIDg4MCwg
ODgxLAorICAgIDg4MiwgODgzLCA4ODQsIDg4NSwgODg2LCA4ODcsIDg4OCwgODg5LCAwLCAwLAor
ICAgIDAsIDAsIDAsIDAsIDc3OCwgNzc5LCA4MTAsIDgxMSwgODQyLCA4NDMsCisgICAgODc0LCA4
NzUsIDg0NiwgODQ3LCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDc5NCwgNzk1LCA4MjYsIDgyNywg
ODU4LCA4NTksIDg5MCwgODkxLCA4NjIsIDg2MywKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAor
ICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDg5NiwgODk3
LCA4OTgsIDg5OSwgOTAwLCA5MDEsIDkwMiwgOTAzLAorICAgIDkwNCwgOTA1LCAwLCAwLCAwLCAw
LCAwLCAwLCA5MTIsIDkxMywKKyAgICA5MTQsIDkxNSwgOTE2LCA5MTcsIDkxOCwgOTE5LCA5MjAs
IDkyMSwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCA5MjgsIDkyOSwgOTMwLCA5MzEsIDkzMiwgOTMz
LAorICAgIDkzNCwgOTM1LCA5MzYsIDkzNywgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICA5NDQsIDk0
NSwgOTQ2LCA5NDcsIDk0OCwgOTQ5LCA5NTAsIDk1MSwgOTUyLCA5NTMsCisgICAgMCwgMCwgMCwg
MCwgMCwgMCwgOTYwLCA5NjEsIDk2MiwgOTYzLAorICAgIDk2NCwgOTY1LCA5NjYsIDk2NywgOTY4
LCA5NjksIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgOTc2LCA5NzcsIDk3OCwgOTc5LCA5ODAsIDk4
MSwgOTgyLCA5ODMsCisgICAgOTg0LCA5ODUsIDAsIDAsIDAsIDAsIDAsIDAsIDk5MiwgOTkzLAor
ICAgIDk5NCwgOTk1LCA5OTYsIDk5NywgOTk4LCA5OTksIDEwMDAsIDEwMDEsIDAsIDAsCisgICAg
MCwgMCwgMCwgMCwgMTAwOCwgMTAwOSwgMTAxMCwgMTAxMSwgMTAxMiwgMTAxMywKKyAgICAxMDE0
LCAxMDE1LCAxMDE2LCAxMDE3LCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDkwNiwgOTA3LCA5Mzgs
IDkzOSwgOTcwLCA5NzEsIDEwMDIsIDEwMDMsIDk3NCwgOTc1LAorICAgIDAsIDAsIDAsIDAsIDAs
IDAsIDkyMiwgOTIzLCA5NTQsIDk1NSwKKyAgICA5ODYsIDk4NywgMTAxOCwgMTAxOSwgOTkwLCA5
OTEsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisg
ICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMTIsIDEzLAorICAgIDI2OCwgMjY5LCA1MjQsIDUyNSwgNzgwLCA3
ODEsIDQ2LCA0NywgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAyOCwgMjksIDI4NCwgMjg1LCA1NDAs
IDU0MSwKKyAgICA3OTYsIDc5NywgNjIsIDYzLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDQ0LCA0
NSwgMzAwLCAzMDEsIDU1NiwgNTU3LCA4MTIsIDgxMywgMzAyLCAzMDMsCisgICAgMCwgMCwgMCwg
MCwgMCwgMCwgNjAsIDYxLCAzMTYsIDMxNywKKyAgICA1NzIsIDU3MywgODI4LCA4MjksIDMxOCwg
MzE5LCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDc2LCA3NywgMzMyLCAzMzMsIDU4OCwgNTg5LCA4
NDQsIDg0NSwKKyAgICA1NTgsIDU1OSwgMCwgMCwgMCwgMCwgMCwgMCwgOTIsIDkzLAorICAgIDM0
OCwgMzQ5LCA2MDQsIDYwNSwgODYwLCA4NjEsIDU3NCwgNTc1LCAwLCAwLAorICAgIDAsIDAsIDAs
IDAsIDEwOCwgMTA5LCAzNjQsIDM2NSwgNjIwLCA2MjEsCisgICAgODc2LCA4NzcsIDgxNCwgODE1
LCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDEyNCwgMTI1LCAzODAsIDM4MSwgNjM2LCA2MzcsIDg5
MiwgODkzLCA4MzAsIDgzMSwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAxNCwgMTUsIDI3MCwgMjcx
LAorICAgIDUyNiwgNTI3LCA3ODIsIDc4MywgMTEwLCAxMTEsIDAsIDAsIDAsIDAsCisgICAgMCwg
MCwgMzAsIDMxLCAyODYsIDI4NywgNTQyLCA1NDMsIDc5OCwgNzk5LAorICAgIDEyNiwgMTI3LCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
CisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAg
IDAsIDAsIDAsIDAsIDE0MCwgMTQxLCAzOTYsIDM5NywgNjUyLCA2NTMsCisgICAgOTA4LCA5MDks
IDE3NCwgMTc1LCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDE1NiwgMTU3LCA0MTIsIDQxMywgNjY4
LCA2NjksIDkyNCwgOTI1LCAxOTAsIDE5MSwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAxNzIsIDE3
MywgNDI4LCA0MjksCisgICAgNjg0LCA2ODUsIDk0MCwgOTQxLCA0MzAsIDQzMSwgMCwgMCwgMCwg
MCwKKyAgICAwLCAwLCAxODgsIDE4OSwgNDQ0LCA0NDUsIDcwMCwgNzAxLCA5NTYsIDk1NywKKyAg
ICA0NDYsIDQ0NywgMCwgMCwgMCwgMCwgMCwgMCwgMjA0LCAyMDUsCisgICAgNDYwLCA0NjEsIDcx
NiwgNzE3LCA5NzIsIDk3MywgNjg2LCA2ODcsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMjIwLCAy
MjEsIDQ3NiwgNDc3LCA3MzIsIDczMywKKyAgICA5ODgsIDk4OSwgNzAyLCA3MDMsIDAsIDAsIDAs
IDAsIDAsIDAsCisgICAgMjM2LCAyMzcsIDQ5MiwgNDkzLCA3NDgsIDc0OSwgMTAwNCwgMTAwNSwg
OTQyLCA5NDMsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMjUyLCAyNTMsIDUwOCwgNTA5LAorICAg
IDc2NCwgNzY1LCAxMDIwLCAxMDIxLCA5NTgsIDk1OSwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAx
NDIsIDE0MywgMzk4LCAzOTksIDY1NCwgNjU1LCA5MTAsIDkxMSwKKyAgICAyMzgsIDIzOSwgMCwg
MCwgMCwgMCwgMCwgMCwgMTU4LCAxNTksCisgICAgNDE0LCA0MTUsIDY3MCwgNjcxLCA5MjYsIDky
NywgMjU0LCAyNTUsCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGVj
aW1hbDEyOFRhYmxlcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGVjaW1hbDEyOFRhYmxl
cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmZmNGYzMWRhMTRhNzIzMGE0ZmZkNWFhZTUzNTQyYWJlOWFhODNlYWUK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EZWNpbWFsMTI4VGFi
bGVzLmgKQEAgLTAsMCArMSw4NzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJ
UyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBUaGlzIGZpbGUgY29udGFpbnMgZm9s
bG93aW5nIGNvbnN0YW50IHRhYmxlOgorLy8ga0NvbWJpbmF0aW9uRmllbGRNYXAKKy8vICBNYXAg
Y29tYmluYXRpb24gZmllbGQgdG8gZXhwb25lbnQgbW9zdCBzaWduaWZpY2FudCBiaXRzICgyYml0
LCBidXQgMCB0bworLy8gMiBpbmNsdXNpdmUpIGFuZCBjb2VmZmljZW50IG1vc3Qgc2lnbmlmaWNh
bnQgZGlnaXQuCisvLyBrRHBkVG9QYWNrZWRCY2QzWzEgPDwgMTJdOworLy8gICBNYXAgRFBCKDEw
Yml0KSB0byAzQkNEKDEyYml0KQorLy8ga0RwZFRvOTk5WzEgPDwgMTBdOworLy8gICBNYXAgRFBE
KDEyYml0KSB0byBiaW5hcnkgKDAuLi45OTkpCisvLyBrUGFja2VkQmNkM1RvRHBkWzB4OTk5ICsg
MV07CisvLyAgIE1hcCBCQ0QgPCAxMDAwICgwLi4uOTk5KSB0byBEUEQoRGVuc2VseSBQYWNrZWQg
RGVjaW1hbCkKKy8vICAgaHR0cDovL3NwZWxlb3Ryb3ZlLmNvbS9kZWNpbWFsL0RQRGVjaW1hbC5o
dG1sCisvLyBrUG93ZXJzWzEwXTsKKy8vICAgUG93ZXIgb2YgdGVuIHRhYmxlIGZvciBkaXZpc2lv
bi4KKworLy8gTWFwIGNvbWJpbmF0aW9uIGZpZWxkIHRvIEJjZC4KK3N0YXRpYyBzdHJ1Y3Qgewor
ICAgIHVpbnQ4X3QgZXhwb25lbnQ7CisgICAgdWludDhfdCBjb2VmZmljZW50OworfSBjb25zdCBr
Q29tYmluYXRpb25GaWVsZE1hcFszMl0gPSB7CisgICAgeyAwLCAwIH0sIC8vIDAgMCAwIDAgMAor
ICAgIHsgMCwgMSB9LCAvLyAwIDAgMCAwIDEKKyAgICB7IDAsIDIgfSwgLy8gMCAwIDAgMSAwCisg
ICAgeyAwLCAzIH0sIC8vIDAgMCAwIDEgMQorICAgIHsgMCwgNCB9LCAvLyAwIDAgMSAwIDAKKyAg
ICB7IDAsIDUgfSwgLy8gMCAwIDEgMCAxCisgICAgeyAwLCA2IH0sIC8vIDAgMCAxIDEgMAorICAg
IHsgMCwgNyB9LCAvLyAwIDAgMSAxIDEKKyAgICB7IDEsIDAgfSwgLy8gMCAxIDAgMCAwCisgICAg
eyAxLCAxIH0sIC8vIDAgMSAwIDAgMQorICAgIHsgMSwgMiB9LCAvLyAwIDEgMCAxIDAKKyAgICB7
IDEsIDMgfSwgLy8gMCAxIDAgMSAxCisgICAgeyAxLCA0IH0sIC8vIDAgMSAxIDAgMAorICAgIHsg
MSwgNSB9LCAvLyAwIDEgMSAwIDEKKyAgICB7IDEsIDYgfSwgLy8gMCAxIDEgMSAwCisgICAgeyAx
LCA3IH0sIC8vIDAgMSAxIDEgMQorICAgIHsgMiwgMCB9LCAvLyAxIDAgMCAwIDAKKyAgICB7IDIs
IDEgfSwgLy8gMSAwIDAgMCAxCisgICAgeyAyLCAyIH0sIC8vIDEgMCAwIDEgMAorICAgIHsgMiwg
MyB9LCAvLyAxIDAgMCAxIDEKKyAgICB7IDIsIDQgfSwgLy8gMSAwIDEgMCAwCisgICAgeyAyLCA1
IH0sIC8vIDEgMCAxIDAgMQorICAgIHsgMiwgNiB9LCAvLyAxIDAgMSAxIDAKKyAgICB7IDIsIDcg
fSwgLy8gMSAwIDEgMSAxCisgICAgeyAwLCA4IH0sIC8vIDEgMSAwIDAgMAorICAgIHsgMCwgOSB9
LCAvLyAxIDEgMCAwIDEKKyAgICB7IDEsIDggfSwgLy8gMSAxIDAgMSAwCisgICAgeyAxLCA5IH0s
IC8vIDEgMSAwIDEgMQorICAgIHsgMiwgOCB9LCAvLyAxIDEgMSAwIDAKKyAgICB7IDIsIDkgfSwg
Ly8gMSAxIDEgMCAxCisgICAgeyAzLCAwIH0sIC8vIDEgMSAxIDEgMCBJbmZpbml0ZQorICAgIHsg
MywgMCB9LCAvLyAxIDEgMSAxIDEgTmFOL3NOYU4KK307CisKKy8vIE1hcCBNU0QobW9zdCBzaWdu
aWZpY2FudCBkaWdpdCkgdG8gY29tYmluYXRpb24gZmllbGQuCitzdGF0aWMgdWludDhfdCBrTXNk
VG9Db21iaW5hdGlvbkZpZWxkWzEwXSA9IHsKKyAgICAwLCAvLyBhIGIgMCAwIDAKKyAgICAxLCAv
LyBhIGIgMCAwIDEKKyAgICAyLCAvLyBhIGIgMCAxIDAKKyAgICAzLCAvLyBhIGIgMCAxIDEKKyAg
ICA0LCAvLyBhIGIgMSAwIDAKKyAgICA1LCAvLyBhIGIgMSAwIDEKKyAgICA2LCAvLyBhIGIgMSAx
IDAKKyAgICA3LCAvLyBhIGIgMSAxIDEKKyAgICAweDE4LCAvLyAxIDEgYyBkIDAKKyAgICAweDE5
LCAvLyAxIDEgYyBkIDEKK307CisKKy8vIFBvd2VyIG9mIDEwIGZvciBEZXZpZGUuCitjb25zdCB1
bnNpZ25lZCBrUG93ZXJzWzEwXSA9IHsKKyAgICAxLCAvLyAwCisgICAgMTAsIC8vIDEKKyAgICAx
MDAsIC8vIDIKKyAgICAxMDAwLCAvLyAzCisgICAgMTAwMDAsIC8vIDQKKyAgICAxMDAwMDAsIC8v
IDUKKyAgICAxMDAwMDAwLCAvLyA2CisgICAgMTAwMDAwMDAsIC8vIDcKKyAgICAxMDAwMDAwMDAs
IC8vIDgKKyAgICAxMDAwMDAwMDAwLCAvLyA5Cit9OworCitzdGF0aWMgdWludDE2X3QgY29uc3Qg
a0RwZFRvOTk5WzEwMjRdID0geworICAgIDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksCisg
ICAgODAsIDgxLCA4MDAsIDgwMSwgODgwLCA4ODEsIDEwLCAxMSwgMTIsIDEzLAorICAgIDE0LCAx
NSwgMTYsIDE3LCAxOCwgMTksIDkwLCA5MSwgODEwLCA4MTEsCisgICAgODkwLCA4OTEsIDIwLCAy
MSwgMjIsIDIzLCAyNCwgMjUsIDI2LCAyNywKKyAgICAyOCwgMjksIDgyLCA4MywgODIwLCA4MjEs
IDgwOCwgODA5LCAzMCwgMzEsCisgICAgMzIsIDMzLCAzNCwgMzUsIDM2LCAzNywgMzgsIDM5LCA5
MiwgOTMsCisgICAgODMwLCA4MzEsIDgxOCwgODE5LCA0MCwgNDEsIDQyLCA0MywgNDQsIDQ1LAor
ICAgIDQ2LCA0NywgNDgsIDQ5LCA4NCwgODUsIDg0MCwgODQxLCA4OCwgODksCisgICAgNTAsIDUx
LCA1MiwgNTMsIDU0LCA1NSwgNTYsIDU3LCA1OCwgNTksCisgICAgOTQsIDk1LCA4NTAsIDg1MSwg
OTgsIDk5LCA2MCwgNjEsIDYyLCA2MywKKyAgICA2NCwgNjUsIDY2LCA2NywgNjgsIDY5LCA4Niwg
ODcsIDg2MCwgODYxLAorICAgIDg4OCwgODg5LCA3MCwgNzEsIDcyLCA3MywgNzQsIDc1LCA3Niwg
NzcsCisgICAgNzgsIDc5LCA5NiwgOTcsIDg3MCwgODcxLCA4OTgsIDg5OSwgMTAwLCAxMDEsCisg
ICAgMTAyLCAxMDMsIDEwNCwgMTA1LCAxMDYsIDEwNywgMTA4LCAxMDksIDE4MCwgMTgxLAorICAg
IDkwMCwgOTAxLCA5ODAsIDk4MSwgMTEwLCAxMTEsIDExMiwgMTEzLCAxMTQsIDExNSwKKyAgICAx
MTYsIDExNywgMTE4LCAxMTksIDE5MCwgMTkxLCA5MTAsIDkxMSwgOTkwLCA5OTEsCisgICAgMTIw
LCAxMjEsIDEyMiwgMTIzLCAxMjQsIDEyNSwgMTI2LCAxMjcsIDEyOCwgMTI5LAorICAgIDE4Miwg
MTgzLCA5MjAsIDkyMSwgOTA4LCA5MDksIDEzMCwgMTMxLCAxMzIsIDEzMywKKyAgICAxMzQsIDEz
NSwgMTM2LCAxMzcsIDEzOCwgMTM5LCAxOTIsIDE5MywgOTMwLCA5MzEsCisgICAgOTE4LCA5MTks
IDE0MCwgMTQxLCAxNDIsIDE0MywgMTQ0LCAxNDUsIDE0NiwgMTQ3LAorICAgIDE0OCwgMTQ5LCAx
ODQsIDE4NSwgOTQwLCA5NDEsIDE4OCwgMTg5LCAxNTAsIDE1MSwKKyAgICAxNTIsIDE1MywgMTU0
LCAxNTUsIDE1NiwgMTU3LCAxNTgsIDE1OSwgMTk0LCAxOTUsCisgICAgOTUwLCA5NTEsIDE5OCwg
MTk5LCAxNjAsIDE2MSwgMTYyLCAxNjMsIDE2NCwgMTY1LAorICAgIDE2NiwgMTY3LCAxNjgsIDE2
OSwgMTg2LCAxODcsIDk2MCwgOTYxLCA5ODgsIDk4OSwKKyAgICAxNzAsIDE3MSwgMTcyLCAxNzMs
IDE3NCwgMTc1LCAxNzYsIDE3NywgMTc4LCAxNzksCisgICAgMTk2LCAxOTcsIDk3MCwgOTcxLCA5
OTgsIDk5OSwgMjAwLCAyMDEsIDIwMiwgMjAzLAorICAgIDIwNCwgMjA1LCAyMDYsIDIwNywgMjA4
LCAyMDksIDI4MCwgMjgxLCA4MDIsIDgwMywKKyAgICA4ODIsIDg4MywgMjEwLCAyMTEsIDIxMiwg
MjEzLCAyMTQsIDIxNSwgMjE2LCAyMTcsCisgICAgMjE4LCAyMTksIDI5MCwgMjkxLCA4MTIsIDgx
MywgODkyLCA4OTMsIDIyMCwgMjIxLAorICAgIDIyMiwgMjIzLCAyMjQsIDIyNSwgMjI2LCAyMjcs
IDIyOCwgMjI5LCAyODIsIDI4MywKKyAgICA4MjIsIDgyMywgODI4LCA4MjksIDIzMCwgMjMxLCAy
MzIsIDIzMywgMjM0LCAyMzUsCisgICAgMjM2LCAyMzcsIDIzOCwgMjM5LCAyOTIsIDI5MywgODMy
LCA4MzMsIDgzOCwgODM5LAorICAgIDI0MCwgMjQxLCAyNDIsIDI0MywgMjQ0LCAyNDUsIDI0Niwg
MjQ3LCAyNDgsIDI0OSwKKyAgICAyODQsIDI4NSwgODQyLCA4NDMsIDI4OCwgMjg5LCAyNTAsIDI1
MSwgMjUyLCAyNTMsCisgICAgMjU0LCAyNTUsIDI1NiwgMjU3LCAyNTgsIDI1OSwgMjk0LCAyOTUs
IDg1MiwgODUzLAorICAgIDI5OCwgMjk5LCAyNjAsIDI2MSwgMjYyLCAyNjMsIDI2NCwgMjY1LCAy
NjYsIDI2NywKKyAgICAyNjgsIDI2OSwgMjg2LCAyODcsIDg2MiwgODYzLCAwLCAwLCAyNzAsIDI3
MSwKKyAgICAyNzIsIDI3MywgMjc0LCAyNzUsIDI3NiwgMjc3LCAyNzgsIDI3OSwgMjk2LCAyOTcs
CisgICAgODcyLCA4NzMsIDAsIDAsIDMwMCwgMzAxLCAzMDIsIDMwMywgMzA0LCAzMDUsCisgICAg
MzA2LCAzMDcsIDMwOCwgMzA5LCAzODAsIDM4MSwgOTAyLCA5MDMsIDk4MiwgOTgzLAorICAgIDMx
MCwgMzExLCAzMTIsIDMxMywgMzE0LCAzMTUsIDMxNiwgMzE3LCAzMTgsIDMxOSwKKyAgICAzOTAs
IDM5MSwgOTEyLCA5MTMsIDk5MiwgOTkzLCAzMjAsIDMyMSwgMzIyLCAzMjMsCisgICAgMzI0LCAz
MjUsIDMyNiwgMzI3LCAzMjgsIDMyOSwgMzgyLCAzODMsIDkyMiwgOTIzLAorICAgIDkyOCwgOTI5
LCAzMzAsIDMzMSwgMzMyLCAzMzMsIDMzNCwgMzM1LCAzMzYsIDMzNywKKyAgICAzMzgsIDMzOSwg
MzkyLCAzOTMsIDkzMiwgOTMzLCA5MzgsIDkzOSwgMzQwLCAzNDEsCisgICAgMzQyLCAzNDMsIDM0
NCwgMzQ1LCAzNDYsIDM0NywgMzQ4LCAzNDksIDM4NCwgMzg1LAorICAgIDk0MiwgOTQzLCAzODgs
IDM4OSwgMzUwLCAzNTEsIDM1MiwgMzUzLCAzNTQsIDM1NSwKKyAgICAzNTYsIDM1NywgMzU4LCAz
NTksIDM5NCwgMzk1LCA5NTIsIDk1MywgMzk4LCAzOTksCisgICAgMzYwLCAzNjEsIDM2MiwgMzYz
LCAzNjQsIDM2NSwgMzY2LCAzNjcsIDM2OCwgMzY5LAorICAgIDM4NiwgMzg3LCA5NjIsIDk2Mywg
MCwgMCwgMzcwLCAzNzEsIDM3MiwgMzczLAorICAgIDM3NCwgMzc1LCAzNzYsIDM3NywgMzc4LCAz
NzksIDM5NiwgMzk3LCA5NzIsIDk3MywKKyAgICAwLCAwLCA0MDAsIDQwMSwgNDAyLCA0MDMsIDQw
NCwgNDA1LCA0MDYsIDQwNywKKyAgICA0MDgsIDQwOSwgNDgwLCA0ODEsIDgwNCwgODA1LCA4ODQs
IDg4NSwgNDEwLCA0MTEsCisgICAgNDEyLCA0MTMsIDQxNCwgNDE1LCA0MTYsIDQxNywgNDE4LCA0
MTksIDQ5MCwgNDkxLAorICAgIDgxNCwgODE1LCA4OTQsIDg5NSwgNDIwLCA0MjEsIDQyMiwgNDIz
LCA0MjQsIDQyNSwKKyAgICA0MjYsIDQyNywgNDI4LCA0MjksIDQ4MiwgNDgzLCA4MjQsIDgyNSwg
ODQ4LCA4NDksCisgICAgNDMwLCA0MzEsIDQzMiwgNDMzLCA0MzQsIDQzNSwgNDM2LCA0MzcsIDQz
OCwgNDM5LAorICAgIDQ5MiwgNDkzLCA4MzQsIDgzNSwgODU4LCA4NTksIDQ0MCwgNDQxLCA0NDIs
IDQ0MywKKyAgICA0NDQsIDQ0NSwgNDQ2LCA0NDcsIDQ0OCwgNDQ5LCA0ODQsIDQ4NSwgODQ0LCA4
NDUsCisgICAgNDg4LCA0ODksIDQ1MCwgNDUxLCA0NTIsIDQ1MywgNDU0LCA0NTUsIDQ1NiwgNDU3
LAorICAgIDQ1OCwgNDU5LCA0OTQsIDQ5NSwgODU0LCA4NTUsIDQ5OCwgNDk5LCA0NjAsIDQ2MSwK
KyAgICA0NjIsIDQ2MywgNDY0LCA0NjUsIDQ2NiwgNDY3LCA0NjgsIDQ2OSwgNDg2LCA0ODcsCisg
ICAgODY0LCA4NjUsIDAsIDAsIDQ3MCwgNDcxLCA0NzIsIDQ3MywgNDc0LCA0NzUsCisgICAgNDc2
LCA0NzcsIDQ3OCwgNDc5LCA0OTYsIDQ5NywgODc0LCA4NzUsIDAsIDAsCisgICAgNTAwLCA1MDEs
IDUwMiwgNTAzLCA1MDQsIDUwNSwgNTA2LCA1MDcsIDUwOCwgNTA5LAorICAgIDU4MCwgNTgxLCA5
MDQsIDkwNSwgOTg0LCA5ODUsIDUxMCwgNTExLCA1MTIsIDUxMywKKyAgICA1MTQsIDUxNSwgNTE2
LCA1MTcsIDUxOCwgNTE5LCA1OTAsIDU5MSwgOTE0LCA5MTUsCisgICAgOTk0LCA5OTUsIDUyMCwg
NTIxLCA1MjIsIDUyMywgNTI0LCA1MjUsIDUyNiwgNTI3LAorICAgIDUyOCwgNTI5LCA1ODIsIDU4
MywgOTI0LCA5MjUsIDk0OCwgOTQ5LCA1MzAsIDUzMSwKKyAgICA1MzIsIDUzMywgNTM0LCA1MzUs
IDUzNiwgNTM3LCA1MzgsIDUzOSwgNTkyLCA1OTMsCisgICAgOTM0LCA5MzUsIDk1OCwgOTU5LCA1
NDAsIDU0MSwgNTQyLCA1NDMsIDU0NCwgNTQ1LAorICAgIDU0NiwgNTQ3LCA1NDgsIDU0OSwgNTg0
LCA1ODUsIDk0NCwgOTQ1LCA1ODgsIDU4OSwKKyAgICA1NTAsIDU1MSwgNTUyLCA1NTMsIDU1NCwg
NTU1LCA1NTYsIDU1NywgNTU4LCA1NTksCisgICAgNTk0LCA1OTUsIDk1NCwgOTU1LCA1OTgsIDU5
OSwgNTYwLCA1NjEsIDU2MiwgNTYzLAorICAgIDU2NCwgNTY1LCA1NjYsIDU2NywgNTY4LCA1Njks
IDU4NiwgNTg3LCA5NjQsIDk2NSwKKyAgICAwLCAwLCA1NzAsIDU3MSwgNTcyLCA1NzMsIDU3NCwg
NTc1LCA1NzYsIDU3NywKKyAgICA1NzgsIDU3OSwgNTk2LCA1OTcsIDk3NCwgOTc1LCAwLCAwLCA2
MDAsIDYwMSwKKyAgICA2MDIsIDYwMywgNjA0LCA2MDUsIDYwNiwgNjA3LCA2MDgsIDYwOSwgNjgw
LCA2ODEsCisgICAgODA2LCA4MDcsIDg4NiwgODg3LCA2MTAsIDYxMSwgNjEyLCA2MTMsIDYxNCwg
NjE1LAorICAgIDYxNiwgNjE3LCA2MTgsIDYxOSwgNjkwLCA2OTEsIDgxNiwgODE3LCA4OTYsIDg5
NywKKyAgICA2MjAsIDYyMSwgNjIyLCA2MjMsIDYyNCwgNjI1LCA2MjYsIDYyNywgNjI4LCA2Mjks
CisgICAgNjgyLCA2ODMsIDgyNiwgODI3LCA4NjgsIDg2OSwgNjMwLCA2MzEsIDYzMiwgNjMzLAor
ICAgIDYzNCwgNjM1LCA2MzYsIDYzNywgNjM4LCA2MzksIDY5MiwgNjkzLCA4MzYsIDgzNywKKyAg
ICA4NzgsIDg3OSwgNjQwLCA2NDEsIDY0MiwgNjQzLCA2NDQsIDY0NSwgNjQ2LCA2NDcsCisgICAg
NjQ4LCA2NDksIDY4NCwgNjg1LCA4NDYsIDg0NywgNjg4LCA2ODksIDY1MCwgNjUxLAorICAgIDY1
MiwgNjUzLCA2NTQsIDY1NSwgNjU2LCA2NTcsIDY1OCwgNjU5LCA2OTQsIDY5NSwKKyAgICA4NTYs
IDg1NywgNjk4LCA2OTksIDY2MCwgNjYxLCA2NjIsIDY2MywgNjY0LCA2NjUsCisgICAgNjY2LCA2
NjcsIDY2OCwgNjY5LCA2ODYsIDY4NywgODY2LCA4NjcsIDAsIDAsCisgICAgNjcwLCA2NzEsIDY3
MiwgNjczLCA2NzQsIDY3NSwgNjc2LCA2NzcsIDY3OCwgNjc5LAorICAgIDY5NiwgNjk3LCA4NzYs
IDg3NywgMCwgMCwgNzAwLCA3MDEsIDcwMiwgNzAzLAorICAgIDcwNCwgNzA1LCA3MDYsIDcwNywg
NzA4LCA3MDksIDc4MCwgNzgxLCA5MDYsIDkwNywKKyAgICA5ODYsIDk4NywgNzEwLCA3MTEsIDcx
MiwgNzEzLCA3MTQsIDcxNSwgNzE2LCA3MTcsCisgICAgNzE4LCA3MTksIDc5MCwgNzkxLCA5MTYs
IDkxNywgOTk2LCA5OTcsIDcyMCwgNzIxLAorICAgIDcyMiwgNzIzLCA3MjQsIDcyNSwgNzI2LCA3
MjcsIDcyOCwgNzI5LCA3ODIsIDc4MywKKyAgICA5MjYsIDkyNywgOTY4LCA5NjksIDczMCwgNzMx
LCA3MzIsIDczMywgNzM0LCA3MzUsCisgICAgNzM2LCA3MzcsIDczOCwgNzM5LCA3OTIsIDc5Mywg
OTM2LCA5MzcsIDk3OCwgOTc5LAorICAgIDc0MCwgNzQxLCA3NDIsIDc0MywgNzQ0LCA3NDUsIDc0
NiwgNzQ3LCA3NDgsIDc0OSwKKyAgICA3ODQsIDc4NSwgOTQ2LCA5NDcsIDc4OCwgNzg5LCA3NTAs
IDc1MSwgNzUyLCA3NTMsCisgICAgNzU0LCA3NTUsIDc1NiwgNzU3LCA3NTgsIDc1OSwgNzk0LCA3
OTUsIDk1NiwgOTU3LAorICAgIDc5OCwgNzk5LCA3NjAsIDc2MSwgNzYyLCA3NjMsIDc2NCwgNzY1
LCA3NjYsIDc2NywKKyAgICA3NjgsIDc2OSwgNzg2LCA3ODcsIDk2NiwgOTY3LCAwLCAwLCA3NzAs
IDc3MSwKKyAgICA3NzIsIDc3MywgNzc0LCA3NzUsIDc3NiwgNzc3LCA3NzgsIDc3OSwgNzk2LCA3
OTcsCisgICAgOTc2LCA5NzcsIDAsIDAsCit9OworCitzdGF0aWMgdWludDE2X3QgY29uc3Qga0Rw
ZFRvUGFja2VkQmNkM1s0MDk2XSA9IHsKKyAgICAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5
LAorICAgIDEyOCwgMTI5LCAyMDQ4LCAyMDQ5LCAyMTc2LCAyMTc3LCAxNiwgMTcsIDE4LCAxOSwK
KyAgICAyMCwgMjEsIDIyLCAyMywgMjQsIDI1LCAxNDQsIDE0NSwgMjA2NCwgMjA2NSwKKyAgICAy
MTkyLCAyMTkzLCAzMiwgMzMsIDM0LCAzNSwgMzYsIDM3LCAzOCwgMzksCisgICAgNDAsIDQxLCAx
MzAsIDEzMSwgMjA4MCwgMjA4MSwgMjA1NiwgMjA1NywgNDgsIDQ5LAorICAgIDUwLCA1MSwgNTIs
IDUzLCA1NCwgNTUsIDU2LCA1NywgMTQ2LCAxNDcsCisgICAgMjA5NiwgMjA5NywgMjA3MiwgMjA3
MywgNjQsIDY1LCA2NiwgNjcsIDY4LCA2OSwKKyAgICA3MCwgNzEsIDcyLCA3MywgMTMyLCAxMzMs
IDIxMTIsIDIxMTMsIDEzNiwgMTM3LAorICAgIDgwLCA4MSwgODIsIDgzLCA4NCwgODUsIDg2LCA4
NywgODgsIDg5LAorICAgIDE0OCwgMTQ5LCAyMTI4LCAyMTI5LCAxNTIsIDE1MywgOTYsIDk3LCA5
OCwgOTksCisgICAgMTAwLCAxMDEsIDEwMiwgMTAzLCAxMDQsIDEwNSwgMTM0LCAxMzUsIDIxNDQs
IDIxNDUsCisgICAgMjE4NCwgMjE4NSwgMTEyLCAxMTMsIDExNCwgMTE1LCAxMTYsIDExNywgMTE4
LCAxMTksCisgICAgMTIwLCAxMjEsIDE1MCwgMTUxLCAyMTYwLCAyMTYxLCAyMjAwLCAyMjAxLCAy
NTYsIDI1NywKKyAgICAyNTgsIDI1OSwgMjYwLCAyNjEsIDI2MiwgMjYzLCAyNjQsIDI2NSwgMzg0
LCAzODUsCisgICAgMjMwNCwgMjMwNSwgMjQzMiwgMjQzMywgMjcyLCAyNzMsIDI3NCwgMjc1LCAy
NzYsIDI3NywKKyAgICAyNzgsIDI3OSwgMjgwLCAyODEsIDQwMCwgNDAxLCAyMzIwLCAyMzIxLCAy
NDQ4LCAyNDQ5LAorICAgIDI4OCwgMjg5LCAyOTAsIDI5MSwgMjkyLCAyOTMsIDI5NCwgMjk1LCAy
OTYsIDI5NywKKyAgICAzODYsIDM4NywgMjMzNiwgMjMzNywgMjMxMiwgMjMxMywgMzA0LCAzMDUs
IDMwNiwgMzA3LAorICAgIDMwOCwgMzA5LCAzMTAsIDMxMSwgMzEyLCAzMTMsIDQwMiwgNDAzLCAy
MzUyLCAyMzUzLAorICAgIDIzMjgsIDIzMjksIDMyMCwgMzIxLCAzMjIsIDMyMywgMzI0LCAzMjUs
IDMyNiwgMzI3LAorICAgIDMyOCwgMzI5LCAzODgsIDM4OSwgMjM2OCwgMjM2OSwgMzkyLCAzOTMs
IDMzNiwgMzM3LAorICAgIDMzOCwgMzM5LCAzNDAsIDM0MSwgMzQyLCAzNDMsIDM0NCwgMzQ1LCA0
MDQsIDQwNSwKKyAgICAyMzg0LCAyMzg1LCA0MDgsIDQwOSwgMzUyLCAzNTMsIDM1NCwgMzU1LCAz
NTYsIDM1NywKKyAgICAzNTgsIDM1OSwgMzYwLCAzNjEsIDM5MCwgMzkxLCAyNDAwLCAyNDAxLCAy
NDQwLCAyNDQxLAorICAgIDM2OCwgMzY5LCAzNzAsIDM3MSwgMzcyLCAzNzMsIDM3NCwgMzc1LCAz
NzYsIDM3NywKKyAgICA0MDYsIDQwNywgMjQxNiwgMjQxNywgMjQ1NiwgMjQ1NywgNTEyLCA1MTMs
IDUxNCwgNTE1LAorICAgIDUxNiwgNTE3LCA1MTgsIDUxOSwgNTIwLCA1MjEsIDY0MCwgNjQxLCAy
MDUwLCAyMDUxLAorICAgIDIxNzgsIDIxNzksIDUyOCwgNTI5LCA1MzAsIDUzMSwgNTMyLCA1MzMs
IDUzNCwgNTM1LAorICAgIDUzNiwgNTM3LCA2NTYsIDY1NywgMjA2NiwgMjA2NywgMjE5NCwgMjE5
NSwgNTQ0LCA1NDUsCisgICAgNTQ2LCA1NDcsIDU0OCwgNTQ5LCA1NTAsIDU1MSwgNTUyLCA1NTMs
IDY0MiwgNjQzLAorICAgIDIwODIsIDIwODMsIDIwODgsIDIwODksIDU2MCwgNTYxLCA1NjIsIDU2
MywgNTY0LCA1NjUsCisgICAgNTY2LCA1NjcsIDU2OCwgNTY5LCA2NTgsIDY1OSwgMjA5OCwgMjA5
OSwgMjEwNCwgMjEwNSwKKyAgICA1NzYsIDU3NywgNTc4LCA1NzksIDU4MCwgNTgxLCA1ODIsIDU4
MywgNTg0LCA1ODUsCisgICAgNjQ0LCA2NDUsIDIxMTQsIDIxMTUsIDY0OCwgNjQ5LCA1OTIsIDU5
MywgNTk0LCA1OTUsCisgICAgNTk2LCA1OTcsIDU5OCwgNTk5LCA2MDAsIDYwMSwgNjYwLCA2NjEs
IDIxMzAsIDIxMzEsCisgICAgNjY0LCA2NjUsIDYwOCwgNjA5LCA2MTAsIDYxMSwgNjEyLCA2MTMs
IDYxNCwgNjE1LAorICAgIDYxNiwgNjE3LCA2NDYsIDY0NywgMjE0NiwgMjE0NywgMCwgMCwgNjI0
LCA2MjUsCisgICAgNjI2LCA2MjcsIDYyOCwgNjI5LCA2MzAsIDYzMSwgNjMyLCA2MzMsIDY2Miwg
NjYzLAorICAgIDIxNjIsIDIxNjMsIDAsIDAsIDc2OCwgNzY5LCA3NzAsIDc3MSwgNzcyLCA3NzMs
CisgICAgNzc0LCA3NzUsIDc3NiwgNzc3LCA4OTYsIDg5NywgMjMwNiwgMjMwNywgMjQzNCwgMjQz
NSwKKyAgICA3ODQsIDc4NSwgNzg2LCA3ODcsIDc4OCwgNzg5LCA3OTAsIDc5MSwgNzkyLCA3OTMs
CisgICAgOTEyLCA5MTMsIDIzMjIsIDIzMjMsIDI0NTAsIDI0NTEsIDgwMCwgODAxLCA4MDIsIDgw
MywKKyAgICA4MDQsIDgwNSwgODA2LCA4MDcsIDgwOCwgODA5LCA4OTgsIDg5OSwgMjMzOCwgMjMz
OSwKKyAgICAyMzQ0LCAyMzQ1LCA4MTYsIDgxNywgODE4LCA4MTksIDgyMCwgODIxLCA4MjIsIDgy
MywKKyAgICA4MjQsIDgyNSwgOTE0LCA5MTUsIDIzNTQsIDIzNTUsIDIzNjAsIDIzNjEsIDgzMiwg
ODMzLAorICAgIDgzNCwgODM1LCA4MzYsIDgzNywgODM4LCA4MzksIDg0MCwgODQxLCA5MDAsIDkw
MSwKKyAgICAyMzcwLCAyMzcxLCA5MDQsIDkwNSwgODQ4LCA4NDksIDg1MCwgODUxLCA4NTIsIDg1
MywKKyAgICA4NTQsIDg1NSwgODU2LCA4NTcsIDkxNiwgOTE3LCAyMzg2LCAyMzg3LCA5MjAsIDky
MSwKKyAgICA4NjQsIDg2NSwgODY2LCA4NjcsIDg2OCwgODY5LCA4NzAsIDg3MSwgODcyLCA4NzMs
CisgICAgOTAyLCA5MDMsIDI0MDIsIDI0MDMsIDAsIDAsIDg4MCwgODgxLCA4ODIsIDg4MywKKyAg
ICA4ODQsIDg4NSwgODg2LCA4ODcsIDg4OCwgODg5LCA5MTgsIDkxOSwgMjQxOCwgMjQxOSwKKyAg
ICAwLCAwLCAxMDI0LCAxMDI1LCAxMDI2LCAxMDI3LCAxMDI4LCAxMDI5LCAxMDMwLCAxMDMxLAor
ICAgIDEwMzIsIDEwMzMsIDExNTIsIDExNTMsIDIwNTIsIDIwNTMsIDIxODAsIDIxODEsIDEwNDAs
IDEwNDEsCisgICAgMTA0MiwgMTA0MywgMTA0NCwgMTA0NSwgMTA0NiwgMTA0NywgMTA0OCwgMTA0
OSwgMTE2OCwgMTE2OSwKKyAgICAyMDY4LCAyMDY5LCAyMTk2LCAyMTk3LCAxMDU2LCAxMDU3LCAx
MDU4LCAxMDU5LCAxMDYwLCAxMDYxLAorICAgIDEwNjIsIDEwNjMsIDEwNjQsIDEwNjUsIDExNTQs
IDExNTUsIDIwODQsIDIwODUsIDIxMjAsIDIxMjEsCisgICAgMTA3MiwgMTA3MywgMTA3NCwgMTA3
NSwgMTA3NiwgMTA3NywgMTA3OCwgMTA3OSwgMTA4MCwgMTA4MSwKKyAgICAxMTcwLCAxMTcxLCAy
MTAwLCAyMTAxLCAyMTM2LCAyMTM3LCAxMDg4LCAxMDg5LCAxMDkwLCAxMDkxLAorICAgIDEwOTIs
IDEwOTMsIDEwOTQsIDEwOTUsIDEwOTYsIDEwOTcsIDExNTYsIDExNTcsIDIxMTYsIDIxMTcsCisg
ICAgMTE2MCwgMTE2MSwgMTEwNCwgMTEwNSwgMTEwNiwgMTEwNywgMTEwOCwgMTEwOSwgMTExMCwg
MTExMSwKKyAgICAxMTEyLCAxMTEzLCAxMTcyLCAxMTczLCAyMTMyLCAyMTMzLCAxMTc2LCAxMTc3
LCAxMTIwLCAxMTIxLAorICAgIDExMjIsIDExMjMsIDExMjQsIDExMjUsIDExMjYsIDExMjcsIDEx
MjgsIDExMjksIDExNTgsIDExNTksCisgICAgMjE0OCwgMjE0OSwgMCwgMCwgMTEzNiwgMTEzNywg
MTEzOCwgMTEzOSwgMTE0MCwgMTE0MSwKKyAgICAxMTQyLCAxMTQzLCAxMTQ0LCAxMTQ1LCAxMTc0
LCAxMTc1LCAyMTY0LCAyMTY1LCAwLCAwLAorICAgIDEyODAsIDEyODEsIDEyODIsIDEyODMsIDEy
ODQsIDEyODUsIDEyODYsIDEyODcsIDEyODgsIDEyODksCisgICAgMTQwOCwgMTQwOSwgMjMwOCwg
MjMwOSwgMjQzNiwgMjQzNywgMTI5NiwgMTI5NywgMTI5OCwgMTI5OSwKKyAgICAxMzAwLCAxMzAx
LCAxMzAyLCAxMzAzLCAxMzA0LCAxMzA1LCAxNDI0LCAxNDI1LCAyMzI0LCAyMzI1LAorICAgIDI0
NTIsIDI0NTMsIDEzMTIsIDEzMTMsIDEzMTQsIDEzMTUsIDEzMTYsIDEzMTcsIDEzMTgsIDEzMTks
CisgICAgMTMyMCwgMTMyMSwgMTQxMCwgMTQxMSwgMjM0MCwgMjM0MSwgMjM3NiwgMjM3NywgMTMy
OCwgMTMyOSwKKyAgICAxMzMwLCAxMzMxLCAxMzMyLCAxMzMzLCAxMzM0LCAxMzM1LCAxMzM2LCAx
MzM3LCAxNDI2LCAxNDI3LAorICAgIDIzNTYsIDIzNTcsIDIzOTIsIDIzOTMsIDEzNDQsIDEzNDUs
IDEzNDYsIDEzNDcsIDEzNDgsIDEzNDksCisgICAgMTM1MCwgMTM1MSwgMTM1MiwgMTM1MywgMTQx
MiwgMTQxMywgMjM3MiwgMjM3MywgMTQxNiwgMTQxNywKKyAgICAxMzYwLCAxMzYxLCAxMzYyLCAx
MzYzLCAxMzY0LCAxMzY1LCAxMzY2LCAxMzY3LCAxMzY4LCAxMzY5LAorICAgIDE0MjgsIDE0Mjks
IDIzODgsIDIzODksIDE0MzIsIDE0MzMsIDEzNzYsIDEzNzcsIDEzNzgsIDEzNzksCisgICAgMTM4
MCwgMTM4MSwgMTM4MiwgMTM4MywgMTM4NCwgMTM4NSwgMTQxNCwgMTQxNSwgMjQwNCwgMjQwNSwK
KyAgICAwLCAwLCAxMzkyLCAxMzkzLCAxMzk0LCAxMzk1LCAxMzk2LCAxMzk3LCAxMzk4LCAxMzk5
LAorICAgIDE0MDAsIDE0MDEsIDE0MzAsIDE0MzEsIDI0MjAsIDI0MjEsIDAsIDAsIDE1MzYsIDE1
MzcsCisgICAgMTUzOCwgMTUzOSwgMTU0MCwgMTU0MSwgMTU0MiwgMTU0MywgMTU0NCwgMTU0NSwg
MTY2NCwgMTY2NSwKKyAgICAyMDU0LCAyMDU1LCAyMTgyLCAyMTgzLCAxNTUyLCAxNTUzLCAxNTU0
LCAxNTU1LCAxNTU2LCAxNTU3LAorICAgIDE1NTgsIDE1NTksIDE1NjAsIDE1NjEsIDE2ODAsIDE2
ODEsIDIwNzAsIDIwNzEsIDIxOTgsIDIxOTksCisgICAgMTU2OCwgMTU2OSwgMTU3MCwgMTU3MSwg
MTU3MiwgMTU3MywgMTU3NCwgMTU3NSwgMTU3NiwgMTU3NywKKyAgICAxNjY2LCAxNjY3LCAyMDg2
LCAyMDg3LCAyMTUyLCAyMTUzLCAxNTg0LCAxNTg1LCAxNTg2LCAxNTg3LAorICAgIDE1ODgsIDE1
ODksIDE1OTAsIDE1OTEsIDE1OTIsIDE1OTMsIDE2ODIsIDE2ODMsIDIxMDIsIDIxMDMsCisgICAg
MjE2OCwgMjE2OSwgMTYwMCwgMTYwMSwgMTYwMiwgMTYwMywgMTYwNCwgMTYwNSwgMTYwNiwgMTYw
NywKKyAgICAxNjA4LCAxNjA5LCAxNjY4LCAxNjY5LCAyMTE4LCAyMTE5LCAxNjcyLCAxNjczLCAx
NjE2LCAxNjE3LAorICAgIDE2MTgsIDE2MTksIDE2MjAsIDE2MjEsIDE2MjIsIDE2MjMsIDE2MjQs
IDE2MjUsIDE2ODQsIDE2ODUsCisgICAgMjEzNCwgMjEzNSwgMTY4OCwgMTY4OSwgMTYzMiwgMTYz
MywgMTYzNCwgMTYzNSwgMTYzNiwgMTYzNywKKyAgICAxNjM4LCAxNjM5LCAxNjQwLCAxNjQxLCAx
NjcwLCAxNjcxLCAyMTUwLCAyMTUxLCAwLCAwLAorICAgIDE2NDgsIDE2NDksIDE2NTAsIDE2NTEs
IDE2NTIsIDE2NTMsIDE2NTQsIDE2NTUsIDE2NTYsIDE2NTcsCisgICAgMTY4NiwgMTY4NywgMjE2
NiwgMjE2NywgMCwgMCwgMTc5MiwgMTc5MywgMTc5NCwgMTc5NSwKKyAgICAxNzk2LCAxNzk3LCAx
Nzk4LCAxNzk5LCAxODAwLCAxODAxLCAxOTIwLCAxOTIxLCAyMzEwLCAyMzExLAorICAgIDI0Mzgs
IDI0MzksIDE4MDgsIDE4MDksIDE4MTAsIDE4MTEsIDE4MTIsIDE4MTMsIDE4MTQsIDE4MTUsCisg
ICAgMTgxNiwgMTgxNywgMTkzNiwgMTkzNywgMjMyNiwgMjMyNywgMjQ1NCwgMjQ1NSwgMTgyNCwg
MTgyNSwKKyAgICAxODI2LCAxODI3LCAxODI4LCAxODI5LCAxODMwLCAxODMxLCAxODMyLCAxODMz
LCAxOTIyLCAxOTIzLAorICAgIDIzNDIsIDIzNDMsIDI0MDgsIDI0MDksIDE4NDAsIDE4NDEsIDE4
NDIsIDE4NDMsIDE4NDQsIDE4NDUsCisgICAgMTg0NiwgMTg0NywgMTg0OCwgMTg0OSwgMTkzOCwg
MTkzOSwgMjM1OCwgMjM1OSwgMjQyNCwgMjQyNSwKKyAgICAxODU2LCAxODU3LCAxODU4LCAxODU5
LCAxODYwLCAxODYxLCAxODYyLCAxODYzLCAxODY0LCAxODY1LAorICAgIDE5MjQsIDE5MjUsIDIz
NzQsIDIzNzUsIDE5MjgsIDE5MjksIDE4NzIsIDE4NzMsIDE4NzQsIDE4NzUsCisgICAgMTg3Niwg
MTg3NywgMTg3OCwgMTg3OSwgMTg4MCwgMTg4MSwgMTk0MCwgMTk0MSwgMjM5MCwgMjM5MSwKKyAg
ICAxOTQ0LCAxOTQ1LCAxODg4LCAxODg5LCAxODkwLCAxODkxLCAxODkyLCAxODkzLCAxODk0LCAx
ODk1LAorICAgIDE4OTYsIDE4OTcsIDE5MjYsIDE5MjcsIDI0MDYsIDI0MDcsIDAsIDAsIDE5MDQs
IDE5MDUsCisgICAgMTkwNiwgMTkwNywgMTkwOCwgMTkwOSwgMTkxMCwgMTkxMSwgMTkxMiwgMTkx
MywgMTk0MiwgMTk0MywKKyAgICAyNDIyLCAyNDIzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAor
ICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisg
ICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAg
ICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
CisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAg
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwK
KyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAor
ICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisg
ICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAg
ICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
CisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAg
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwK
KyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAor
ICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisg
ICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAg
ICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
CisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAg
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwK
KyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAor
ICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisg
ICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAg
ICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
CisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAg
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwK
KyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAor
ICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisg
ICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAg
ICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
CisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAg
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwK
KyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAor
ICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisg
ICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAs
IDAsIDAsIDAsIDAsIDAsCit9OworCitzdGF0aWMgdWludDE2X3QgY29uc3Qga1BhY2tlZEJjZDNU
b0RwZFsyNDU4XSA9IHsKKyAgICAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LAorICAgIDAs
IDAsIDAsIDAsIDAsIDAsIDE2LCAxNywgMTgsIDE5LAorICAgIDIwLCAyMSwgMjIsIDIzLCAyNCwg
MjUsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMzIsIDMzLCAzNCwgMzUsIDM2LCAzNywgMzgsIDM5
LAorICAgIDQwLCA0MSwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ5LAorICAgIDUwLCA1MSwgNTIs
IDUzLCA1NCwgNTUsIDU2LCA1NywgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCA2NCwgNjUsIDY2LCA2
NywgNjgsIDY5LAorICAgIDcwLCA3MSwgNzIsIDczLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDgw
LCA4MSwgODIsIDgzLCA4NCwgODUsIDg2LCA4NywgODgsIDg5LAorICAgIDAsIDAsIDAsIDAsIDAs
IDAsIDk2LCA5NywgOTgsIDk5LAorICAgIDEwMCwgMTAxLCAxMDIsIDEwMywgMTA0LCAxMDUsIDAs
IDAsIDAsIDAsCisgICAgMCwgMCwgMTEyLCAxMTMsIDExNCwgMTE1LCAxMTYsIDExNywgMTE4LCAx
MTksCisgICAgMTIwLCAxMjEsIDAsIDAsIDAsIDAsIDAsIDAsIDEwLCAxMSwKKyAgICA0MiwgNDMs
IDc0LCA3NSwgMTA2LCAxMDcsIDc4LCA3OSwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAyNiwgMjcs
IDU4LCA1OSwgOTAsIDkxLAorICAgIDEyMiwgMTIzLCA5NCwgOTUsIDAsIDAsIDAsIDAsIDAsIDAs
CisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAg
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMTI4
LCAxMjksIDEzMCwgMTMxLAorICAgIDEzMiwgMTMzLCAxMzQsIDEzNSwgMTM2LCAxMzcsIDAsIDAs
IDAsIDAsCisgICAgMCwgMCwgMTQ0LCAxNDUsIDE0NiwgMTQ3LCAxNDgsIDE0OSwgMTUwLCAxNTEs
CisgICAgMTUyLCAxNTMsIDAsIDAsIDAsIDAsIDAsIDAsIDE2MCwgMTYxLAorICAgIDE2MiwgMTYz
LCAxNjQsIDE2NSwgMTY2LCAxNjcsIDE2OCwgMTY5LCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDE3
NiwgMTc3LCAxNzgsIDE3OSwgMTgwLCAxODEsCisgICAgMTgyLCAxODMsIDE4NCwgMTg1LCAwLCAw
LCAwLCAwLCAwLCAwLAorICAgIDE5MiwgMTkzLCAxOTQsIDE5NSwgMTk2LCAxOTcsIDE5OCwgMTk5
LCAyMDAsIDIwMSwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAyMDgsIDIwOSwgMjEwLCAyMTEsCisg
ICAgMjEyLCAyMTMsIDIxNCwgMjE1LCAyMTYsIDIxNywgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAy
MjQsIDIyNSwgMjI2LCAyMjcsIDIyOCwgMjI5LCAyMzAsIDIzMSwKKyAgICAyMzIsIDIzMywgMCwg
MCwgMCwgMCwgMCwgMCwgMjQwLCAyNDEsCisgICAgMjQyLCAyNDMsIDI0NCwgMjQ1LCAyNDYsIDI0
NywgMjQ4LCAyNDksIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMTM4LCAxMzksIDE3MCwgMTcxLCAy
MDIsIDIwMywKKyAgICAyMzQsIDIzNSwgMjA2LCAyMDcsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAg
MTU0LCAxNTUsIDE4NiwgMTg3LCAyMTgsIDIxOSwgMjUwLCAyNTEsIDIyMiwgMjIzLAorICAgIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAg
ICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
CisgICAgMCwgMCwgMjU2LCAyNTcsIDI1OCwgMjU5LCAyNjAsIDI2MSwgMjYyLCAyNjMsCisgICAg
MjY0LCAyNjUsIDAsIDAsIDAsIDAsIDAsIDAsIDI3MiwgMjczLAorICAgIDI3NCwgMjc1LCAyNzYs
IDI3NywgMjc4LCAyNzksIDI4MCwgMjgxLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDI4OCwgMjg5
LCAyOTAsIDI5MSwgMjkyLCAyOTMsCisgICAgMjk0LCAyOTUsIDI5NiwgMjk3LCAwLCAwLCAwLCAw
LCAwLCAwLAorICAgIDMwNCwgMzA1LCAzMDYsIDMwNywgMzA4LCAzMDksIDMxMCwgMzExLCAzMTIs
IDMxMywKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAzMjAsIDMyMSwgMzIyLCAzMjMsCisgICAgMzI0
LCAzMjUsIDMyNiwgMzI3LCAzMjgsIDMyOSwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAzMzYsIDMz
NywgMzM4LCAzMzksIDM0MCwgMzQxLCAzNDIsIDM0MywKKyAgICAzNDQsIDM0NSwgMCwgMCwgMCwg
MCwgMCwgMCwgMzUyLCAzNTMsCisgICAgMzU0LCAzNTUsIDM1NiwgMzU3LCAzNTgsIDM1OSwgMzYw
LCAzNjEsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMzY4LCAzNjksIDM3MCwgMzcxLCAzNzIsIDM3
MywKKyAgICAzNzQsIDM3NSwgMzc2LCAzNzcsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMjY2LCAy
NjcsIDI5OCwgMjk5LCAzMzAsIDMzMSwgMzYyLCAzNjMsIDMzNCwgMzM1LAorICAgIDAsIDAsIDAs
IDAsIDAsIDAsIDI4MiwgMjgzLCAzMTQsIDMxNSwKKyAgICAzNDYsIDM0NywgMzc4LCAzNzksIDM1
MCwgMzUxLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisg
ICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM4NCwgMzg1LAorICAgIDM4NiwgMzg3LCAzODgsIDM4OSwg
MzkwLCAzOTEsIDM5MiwgMzkzLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDQwMCwgNDAxLCA0MDIs
IDQwMywgNDA0LCA0MDUsCisgICAgNDA2LCA0MDcsIDQwOCwgNDA5LCAwLCAwLCAwLCAwLCAwLCAw
LAorICAgIDQxNiwgNDE3LCA0MTgsIDQxOSwgNDIwLCA0MjEsIDQyMiwgNDIzLCA0MjQsIDQyNSwK
KyAgICAwLCAwLCAwLCAwLCAwLCAwLCA0MzIsIDQzMywgNDM0LCA0MzUsCisgICAgNDM2LCA0Mzcs
IDQzOCwgNDM5LCA0NDAsIDQ0MSwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCA0NDgsIDQ0OSwgNDUw
LCA0NTEsIDQ1MiwgNDUzLCA0NTQsIDQ1NSwKKyAgICA0NTYsIDQ1NywgMCwgMCwgMCwgMCwgMCwg
MCwgNDY0LCA0NjUsCisgICAgNDY2LCA0NjcsIDQ2OCwgNDY5LCA0NzAsIDQ3MSwgNDcyLCA0NzMs
IDAsIDAsCisgICAgMCwgMCwgMCwgMCwgNDgwLCA0ODEsIDQ4MiwgNDgzLCA0ODQsIDQ4NSwKKyAg
ICA0ODYsIDQ4NywgNDg4LCA0ODksIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgNDk2LCA0OTcsIDQ5
OCwgNDk5LCA1MDAsIDUwMSwgNTAyLCA1MDMsIDUwNCwgNTA1LAorICAgIDAsIDAsIDAsIDAsIDAs
IDAsIDM5NCwgMzk1LCA0MjYsIDQyNywKKyAgICA0NTgsIDQ1OSwgNDkwLCA0OTEsIDQ2MiwgNDYz
LCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDQxMCwgNDExLCA0NDIsIDQ0MywgNDc0LCA0NzUsIDUw
NiwgNTA3LAorICAgIDQ3OCwgNDc5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDUxMiwgNTEzLCA1MTQsIDUxNSwg
NTE2LCA1MTcsCisgICAgNTE4LCA1MTksIDUyMCwgNTIxLCAwLCAwLCAwLCAwLCAwLCAwLAorICAg
IDUyOCwgNTI5LCA1MzAsIDUzMSwgNTMyLCA1MzMsIDUzNCwgNTM1LCA1MzYsIDUzNywKKyAgICAw
LCAwLCAwLCAwLCAwLCAwLCA1NDQsIDU0NSwgNTQ2LCA1NDcsCisgICAgNTQ4LCA1NDksIDU1MCwg
NTUxLCA1NTIsIDU1MywgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCA1NjAsIDU2MSwgNTYyLCA1NjMs
IDU2NCwgNTY1LCA1NjYsIDU2NywKKyAgICA1NjgsIDU2OSwgMCwgMCwgMCwgMCwgMCwgMCwgNTc2
LCA1NzcsCisgICAgNTc4LCA1NzksIDU4MCwgNTgxLCA1ODIsIDU4MywgNTg0LCA1ODUsIDAsIDAs
CisgICAgMCwgMCwgMCwgMCwgNTkyLCA1OTMsIDU5NCwgNTk1LCA1OTYsIDU5NywKKyAgICA1OTgs
IDU5OSwgNjAwLCA2MDEsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgNjA4LCA2MDksIDYxMCwgNjEx
LCA2MTIsIDYxMywgNjE0LCA2MTUsIDYxNiwgNjE3LAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDYy
NCwgNjI1LCA2MjYsIDYyNywKKyAgICA2MjgsIDYyOSwgNjMwLCA2MzEsIDYzMiwgNjMzLCAwLCAw
LCAwLCAwLAorICAgIDAsIDAsIDUyMiwgNTIzLCA1NTQsIDU1NSwgNTg2LCA1ODcsIDYxOCwgNjE5
LAorICAgIDU5MCwgNTkxLCAwLCAwLCAwLCAwLCAwLCAwLCA1MzgsIDUzOSwKKyAgICA1NzAsIDU3
MSwgNjAyLCA2MDMsIDYzNCwgNjM1LCA2MDYsIDYwNywgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAor
ICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDY0MCwg
NjQxLCA2NDIsIDY0MywgNjQ0LCA2NDUsIDY0NiwgNjQ3LCA2NDgsIDY0OSwKKyAgICAwLCAwLCAw
LCAwLCAwLCAwLCA2NTYsIDY1NywgNjU4LCA2NTksCisgICAgNjYwLCA2NjEsIDY2MiwgNjYzLCA2
NjQsIDY2NSwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCA2NzIsIDY3MywgNjc0LCA2NzUsIDY3Niwg
Njc3LCA2NzgsIDY3OSwKKyAgICA2ODAsIDY4MSwgMCwgMCwgMCwgMCwgMCwgMCwgNjg4LCA2ODks
CisgICAgNjkwLCA2OTEsIDY5MiwgNjkzLCA2OTQsIDY5NSwgNjk2LCA2OTcsIDAsIDAsCisgICAg
MCwgMCwgMCwgMCwgNzA0LCA3MDUsIDcwNiwgNzA3LCA3MDgsIDcwOSwKKyAgICA3MTAsIDcxMSwg
NzEyLCA3MTMsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgNzIwLCA3MjEsIDcyMiwgNzIzLCA3MjQs
IDcyNSwgNzI2LCA3MjcsIDcyOCwgNzI5LAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDczNiwgNzM3
LCA3MzgsIDczOSwKKyAgICA3NDAsIDc0MSwgNzQyLCA3NDMsIDc0NCwgNzQ1LCAwLCAwLCAwLCAw
LAorICAgIDAsIDAsIDc1MiwgNzUzLCA3NTQsIDc1NSwgNzU2LCA3NTcsIDc1OCwgNzU5LAorICAg
IDc2MCwgNzYxLCAwLCAwLCAwLCAwLCAwLCAwLCA2NTAsIDY1MSwKKyAgICA2ODIsIDY4MywgNzE0
LCA3MTUsIDc0NiwgNzQ3LCA3MTgsIDcxOSwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCA2NjYsIDY2
NywgNjk4LCA2OTksIDczMCwgNzMxLAorICAgIDc2MiwgNzYzLCA3MzQsIDczNSwgMCwgMCwgMCwg
MCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwK
KyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAw
LCAwLCA3NjgsIDc2OSwgNzcwLCA3NzEsCisgICAgNzcyLCA3NzMsIDc3NCwgNzc1LCA3NzYsIDc3
NywgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCA3ODQsIDc4NSwgNzg2LCA3ODcsIDc4OCwgNzg5LCA3
OTAsIDc5MSwKKyAgICA3OTIsIDc5MywgMCwgMCwgMCwgMCwgMCwgMCwgODAwLCA4MDEsCisgICAg
ODAyLCA4MDMsIDgwNCwgODA1LCA4MDYsIDgwNywgODA4LCA4MDksIDAsIDAsCisgICAgMCwgMCwg
MCwgMCwgODE2LCA4MTcsIDgxOCwgODE5LCA4MjAsIDgyMSwKKyAgICA4MjIsIDgyMywgODI0LCA4
MjUsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgODMyLCA4MzMsIDgzNCwgODM1LCA4MzYsIDgzNywg
ODM4LCA4MzksIDg0MCwgODQxLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDg0OCwgODQ5LCA4NTAs
IDg1MSwKKyAgICA4NTIsIDg1MywgODU0LCA4NTUsIDg1NiwgODU3LCAwLCAwLCAwLCAwLAorICAg
IDAsIDAsIDg2NCwgODY1LCA4NjYsIDg2NywgODY4LCA4NjksIDg3MCwgODcxLAorICAgIDg3Miwg
ODczLCAwLCAwLCAwLCAwLCAwLCAwLCA4ODAsIDg4MSwKKyAgICA4ODIsIDg4MywgODg0LCA4ODUs
IDg4NiwgODg3LCA4ODgsIDg4OSwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCA3NzgsIDc3OSwgODEw
LCA4MTEsIDg0MiwgODQzLAorICAgIDg3NCwgODc1LCA4NDYsIDg0NywgMCwgMCwgMCwgMCwgMCwg
MCwKKyAgICA3OTQsIDc5NSwgODI2LCA4MjcsIDg1OCwgODU5LCA4OTAsIDg5MSwgODYyLCA4NjMs
CisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAg
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwKKyAgICAwLCAwLCA4OTYsIDg5NywgODk4LCA4OTksIDkwMCwgOTAxLCA5MDIsIDkw
MywKKyAgICA5MDQsIDkwNSwgMCwgMCwgMCwgMCwgMCwgMCwgOTEyLCA5MTMsCisgICAgOTE0LCA5
MTUsIDkxNiwgOTE3LCA5MTgsIDkxOSwgOTIwLCA5MjEsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwg
OTI4LCA5MjksIDkzMCwgOTMxLCA5MzIsIDkzMywKKyAgICA5MzQsIDkzNSwgOTM2LCA5MzcsIDAs
IDAsIDAsIDAsIDAsIDAsCisgICAgOTQ0LCA5NDUsIDk0NiwgOTQ3LCA5NDgsIDk0OSwgOTUwLCA5
NTEsIDk1MiwgOTUzLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDk2MCwgOTYxLCA5NjIsIDk2MywK
KyAgICA5NjQsIDk2NSwgOTY2LCA5NjcsIDk2OCwgOTY5LCAwLCAwLCAwLCAwLAorICAgIDAsIDAs
IDk3NiwgOTc3LCA5NzgsIDk3OSwgOTgwLCA5ODEsIDk4MiwgOTgzLAorICAgIDk4NCwgOTg1LCAw
LCAwLCAwLCAwLCAwLCAwLCA5OTIsIDk5MywKKyAgICA5OTQsIDk5NSwgOTk2LCA5OTcsIDk5OCwg
OTk5LCAxMDAwLCAxMDAxLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDEwMDgsIDEwMDksIDEwMTAs
IDEwMTEsIDEwMTIsIDEwMTMsCisgICAgMTAxNCwgMTAxNSwgMTAxNiwgMTAxNywgMCwgMCwgMCwg
MCwgMCwgMCwKKyAgICA5MDYsIDkwNywgOTM4LCA5MzksIDk3MCwgOTcxLCAxMDAyLCAxMDAzLCA5
NzQsIDk3NSwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA5MjIsIDkyMywgOTU0LCA5NTUsCisgICAg
OTg2LCA5ODcsIDEwMTgsIDEwMTksIDk5MCwgOTkxLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwK
KyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyLCAxMywKKyAg
ICAyNjgsIDI2OSwgNTI0LCA1MjUsIDc4MCwgNzgxLCA0NiwgNDcsIDAsIDAsCisgICAgMCwgMCwg
MCwgMCwgMjgsIDI5LCAyODQsIDI4NSwgNTQwLCA1NDEsCisgICAgNzk2LCA3OTcsIDYyLCA2Mywg
MCwgMCwgMCwgMCwgMCwgMCwKKyAgICA0NCwgNDUsIDMwMCwgMzAxLCA1NTYsIDU1NywgODEyLCA4
MTMsIDMwMiwgMzAzLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDYwLCA2MSwgMzE2LCAzMTcsCisg
ICAgNTcyLCA1NzMsIDgyOCwgODI5LCAzMTgsIDMxOSwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCA3
NiwgNzcsIDMzMiwgMzMzLCA1ODgsIDU4OSwgODQ0LCA4NDUsCisgICAgNTU4LCA1NTksIDAsIDAs
IDAsIDAsIDAsIDAsIDkyLCA5MywKKyAgICAzNDgsIDM0OSwgNjA0LCA2MDUsIDg2MCwgODYxLCA1
NzQsIDU3NSwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAxMDgsIDEwOSwgMzY0LCAzNjUsIDYyMCwg
NjIxLAorICAgIDg3NiwgODc3LCA4MTQsIDgxNSwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAxMjQs
IDEyNSwgMzgwLCAzODEsIDYzNiwgNjM3LCA4OTIsIDg5MywgODMwLCA4MzEsCisgICAgMCwgMCwg
MCwgMCwgMCwgMCwgMTQsIDE1LCAyNzAsIDI3MSwKKyAgICA1MjYsIDUyNywgNzgyLCA3ODMsIDEx
MCwgMTExLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDMwLCAzMSwgMjg2LCAyODcsIDU0MiwgNTQz
LCA3OTgsIDc5OSwKKyAgICAxMjYsIDEyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisg
ICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAxNDAsIDE0MSwgMzk2LCAz
OTcsIDY1MiwgNjUzLAorICAgIDkwOCwgOTA5LCAxNzQsIDE3NSwgMCwgMCwgMCwgMCwgMCwgMCwK
KyAgICAxNTYsIDE1NywgNDEyLCA0MTMsIDY2OCwgNjY5LCA5MjQsIDkyNSwgMTkwLCAxOTEsCisg
ICAgMCwgMCwgMCwgMCwgMCwgMCwgMTcyLCAxNzMsIDQyOCwgNDI5LAorICAgIDY4NCwgNjg1LCA5
NDAsIDk0MSwgNDMwLCA0MzEsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMTg4LCAxODksIDQ0NCwg
NDQ1LCA3MDAsIDcwMSwgOTU2LCA5NTcsCisgICAgNDQ2LCA0NDcsIDAsIDAsIDAsIDAsIDAsIDAs
IDIwNCwgMjA1LAorICAgIDQ2MCwgNDYxLCA3MTYsIDcxNywgOTcyLCA5NzMsIDY4NiwgNjg3LCAw
LCAwLAorICAgIDAsIDAsIDAsIDAsIDIyMCwgMjIxLCA0NzYsIDQ3NywgNzMyLCA3MzMsCisgICAg
OTg4LCA5ODksIDcwMiwgNzAzLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDIzNiwgMjM3LCA0OTIs
IDQ5MywgNzQ4LCA3NDksIDEwMDQsIDEwMDUsIDk0MiwgOTQzLAorICAgIDAsIDAsIDAsIDAsIDAs
IDAsIDI1MiwgMjUzLCA1MDgsIDUwOSwKKyAgICA3NjQsIDc2NSwgMTAyMCwgMTAyMSwgOTU4LCA5
NTksIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMTQyLCAxNDMsIDM5OCwgMzk5LCA2NTQsIDY1NSwg
OTEwLCA5MTEsCisgICAgMjM4LCAyMzksIDAsIDAsIDAsIDAsIDAsIDAsIDE1OCwgMTU5LAorICAg
IDQxNCwgNDE1LCA2NzAsIDY3MSwgOTI2LCA5MjcsIDI1NCwgMjU1LAorfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL1dlYktpdC5neXBpCmluZGV4IDlhYmMxZjhlNGE0ZGI3ZmU2MDA0M2FkMThlNzAwZDVkNzE3
ZmYyYjkuLjkzZjAyY2JmNGFkZDU3ZDUzYmFjYWIyYWQyN2E4OTM1Y2UxNzFmMzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQpAQCAtOTQsNiArOTQsNyBAQAogICAgICAgICAgICAgJ3Rl
c3RzL0NsaXBib2FyZENocm9taXVtVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0NvbXBv
c2l0b3JGYWtlR3JhcGhpY3NDb250ZXh0M0QuaCcsCiAgICAgICAgICAgICAndGVzdHMvQ29tcG9z
aXRvckZha2VXZWJHcmFwaGljc0NvbnRleHQzRC5oJywKKyAgICAgICAgICAgICd0ZXN0cy9EZWNp
bWFsMTI4VGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0RyYWdJbWFnZVRlc3QuY3BwJywK
ICAgICAgICAgICAgICd0ZXN0cy9GYWtlQ0NMYXllclRyZWVIb3N0Q2xpZW50LmgnLAogICAgICAg
ICAgICAgJ3Rlc3RzL0Zha2VHcmFwaGljc0NvbnRleHQzRFRlc3QuY3BwJywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRGVjaW1hbDEyOFRlc3QuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9EZWNpbWFsMTI4VGVzdC5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzVi
OTRlM2NhYmRlODc0NWUyMWY3NTRjZjEyY2FiMGQyMTA3YTcwMQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRGVjaW1hbDEyOFRlc3QuY3BwCkBAIC0wLDAg
KzEsODE4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKgorICogMS4gICAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gICAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiRGVjaW1hbDEyOC5oIgorCisjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK25hbWVzcGFjZSB7CisKK3VzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOworCituYW1lc3BhY2UgRmxvYXQ2NEJpdHMgeworc3RhdGljIGNvbnN0IHVpbnQ2NF90
IFBvc2l0aXZlSW5maW5pdHlQYXR0ZXJuID0gdWludDY0X3QoMHg3RkYwKSA8PCA0ODsKK3N0YXRp
YyBjb25zdCB1aW50NjRfdCBQb3NpdGl2ZXF1aWV0TmFOUGF0dGVybiA9IHVpbnQ2NF90KDB4N0ZG
OCkgPDwgNDg7Cit9IC8vIEZsb2F0NjRCaXRzCisKKzo6c3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8
KDo6c3RkOjpvc3RyZWFtJiBvcywgY29uc3QgRGVjaW1hbDEyOCYgZCkKK3sKKyAgICByZXR1cm4g
b3MgPDwgZC50b1N0cmluZygpLmFzY2lpKCkuZGF0YSgpOworfQorCitjbGFzcyBEZWNpbWFsMTI4
VGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeworcHJvdGVjdGVkOgorICAgIGNsYXNzIEJp
bjEyOCB7CisgICAgIHB1YmxpYzoKKyAgICAgICAgQmluMTI4KHVpbnQzMl90IGEpCisgICAgICAg
IHsKKyAgICAgICAgICAgIG1fd29yZHNbM10gPSBhOworICAgICAgICAgICAgbV93b3Jkc1syXSA9
IDA7CisgICAgICAgICAgICBtX3dvcmRzWzFdID0gMDsKKyAgICAgICAgICAgIG1fd29yZHNbMF0g
PSAwOworICAgICAgICB9CisKKyAgICAgICAgQmluMTI4KHVpbnQzMl90IGEsIHVpbnQzMl90IGIs
IHVpbnQzMl90IGMsIHVpbnQgZCkKKyAgICAgICAgeworICAgICAgICAgICAgbV93b3Jkc1szXSA9
IGE7CisgICAgICAgICAgICBtX3dvcmRzWzJdID0gYjsKKyAgICAgICAgICAgIG1fd29yZHNbMV0g
PSBjOworICAgICAgICAgICAgbV93b3Jkc1swXSA9IGQ7CisgICAgICAgIH0KKworICAgICAgICBC
aW4xMjgoY29uc3QgRGVjaW1hbDEyOCYgZDEyOCkKKyAgICAgICAgeworICAgICAgICAgICAgOjpt
ZW1jcHkobV93b3JkcywgZDEyOC52YWx1ZSgpLm1fd29yZHMsIHNpemVvZihtX3dvcmRzKSk7Cisg
ICAgICAgIH0KKworICAgICAgICBCaW4xMjgoY29uc3QgU3RyaW5nJiBzdHIpCisgICAgICAgIHsK
KyAgICAgICAgICAgIERlY2ltYWwxMjggZDEyOCA9IERlY2ltYWwxMjg6OmZyb21TdHJpbmcoc3Ry
KTsKKyAgICAgICAgICAgIDo6bWVtY3B5KG1fd29yZHMsIGQxMjgudmFsdWUoKS5tX3dvcmRzLCBz
aXplb2YobV93b3JkcykpOworICAgICAgICB9CisKKyAgICAgICAgYm9vbCBvcGVyYXRvciA9PShj
b25zdCBCaW4xMjgmIHJocykgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuICE6
Om1lbWNtcChtX3dvcmRzLCByaHMubV93b3Jkcywgc2l6ZW9mKG1fd29yZHMpKTsKKyAgICAgICAg
fQorCisgICAgICAgIG9wZXJhdG9yIERlY2ltYWwxMjgoKSBjb25zdAorICAgICAgICB7CisgICAg
ICAgICAgICBEZWNpbWFsMTI4IGQxMjgoMCk7CisgICAgICAgICAgICA6Om1lbWNweShjb25zdF9j
YXN0PHVpbnQzMl90Kj4oZDEyOC52YWx1ZSgpLm1fd29yZHMpLCBtX3dvcmRzLCBzaXplb2YobV93
b3JkcykpOworICAgICAgICAgICAgcmV0dXJuIGQxMjg7CisgICAgICAgIH0KKworICAgICBwcml2
YXRlOgorICAgICAgICB1aW50MzJfdCBtX3dvcmRzWzRdOworICAgIH07CisKKyAgICBjbGFzcyBG
bG9hdDY0IHsKKyAgICAgcHVibGljOgorICAgICAgICBleHBsaWNpdCBGbG9hdDY0KGRvdWJsZSBm
NjQpIHsgbV92YWx1ZS5tX2Zsb2F0NjQgPSBmNjQ7IH0KKyAgICAgICAgZXhwbGljaXQgRmxvYXQ2
NCh1aW50NjRfdCB1NjQpIHsgbV92YWx1ZS5tX3VpbnQ2NCA9IHU2NDsgfQorICAgICAgICBvcGVy
YXRvciBkb3VibGUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlLm1fZmxvYXQ2NDsgfQorICAgICAg
ICBvcGVyYXRvciB1aW50NjRfdCgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUubV91aW50NjQ7IH0K
KworICAgICAgICBGbG9hdDY0KGNvbnN0IHVpbnQgc2lnbiwgY29uc3QgdWludDY0X3QgcmF3X3Np
Z25pZmljYW5kLCBjb25zdCB1aW50IHJhd19leHBvbmVudCkKKyAgICAgICAgeworICAgICAgICAg
ICAgQVNTRVJUKHJhd19leHBvbmVudCA8PSAyMDQ3KTsKKyAgICAgICAgICAgIEFTU0VSVChyYXdf
c2lnbmlmaWNhbmQgPD0gKHVpbnQ2NF90KDEpIDw8IDUyKSAtIDEpOworICAgICAgICAgICAgbV92
YWx1ZS5tX3VpbnQ2NCA9ICh1aW50NjRfdChzaWduKSA8PCA2MykgfCAodWludDY0X3QocmF3X2V4
cG9uZW50KSA8PCA1MikgfCByYXdfc2lnbmlmaWNhbmQ7CisgICAgICAgIH0KKworICAgICAgICBz
dGF0aWMgYm9vbCBpc1F1aWV0TmFOKGRvdWJsZSB4LCBpbnQgc2lnbikKKyAgICAgICAgeworICAg
ICAgICAgICAgRmxvYXQ2NCBmdTY0KHgpOworICAgICAgICAgICAgY29uc3QgdWludDMyX3QgaGln
aDE2ID0gdWludDMyX3QodWludDY0X3QoZnU2NCkgPj4gNDgpOworICAgICAgICAgICAgcmV0dXJu
IHNpZ24gPyBoaWdoMTYgPT0gMHhGRkY4IDogaGlnaDE2ID09IDB4N0ZGODsKKyAgICAgICAgfQor
CisgICAgIHByaXZhdGU6CisgICAgICAgIHVuaW9uIHsKKyAgICAgICAgICAgIGRvdWJsZSBtX2Zs
b2F0NjQ7CisgICAgICAgICAgICB1aW50NjRfdCBtX3VpbnQ2NDsKKyAgICAgICAgfSBtX3ZhbHVl
OworICAgIH07CisKKyAgICBTdHJpbmcgYWRkKGNvbnN0IERlY2ltYWwxMjgmIGxocywgY29uc3Qg
RGVjaW1hbDEyOCYgcmhzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIChsaHMgKyByaHMpLnRvU3Ry
aW5nKCk7CisgICAgfQorCisgICAgU3RyaW5nIGFkZChjb25zdCBTdHJpbmcgbGhzU3RyLCBjb25z
dCBTdHJpbmcgcmhzU3RyKQorICAgIHsKKyAgICAgICAgY29uc3QgRGVjaW1hbDEyOCBsaHMgPSBm
cm9tU3RyaW5nKGxoc1N0cik7CisgICAgICAgIGNvbnN0IERlY2ltYWwxMjggcmhzID0gZnJvbVN0
cmluZyhyaHNTdHIpOworICAgICAgICBjb25zdCBEZWNpbWFsMTI4IHJlc3VsdCA9IGxocyArIHJo
czsKKyAgICAgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOworICAgIH0KKworICAgIFN0cmlu
ZyBkaXYoY29uc3QgRGVjaW1hbDEyOCYgbGhzLCBjb25zdCBEZWNpbWFsMTI4JiByaHMpCisgICAg
eworICAgICAgICByZXR1cm4gKGxocyAvIHJocykudG9TdHJpbmcoKTsKKyAgICB9CisKKyAgICBT
dHJpbmcgZGl2KGNvbnN0IFN0cmluZyBsaHNTdHIsIGNvbnN0IFN0cmluZyByaHNTdHIpCisgICAg
eworICAgICAgICBjb25zdCBEZWNpbWFsMTI4IGxocyA9IGZyb21TdHJpbmcobGhzU3RyKTsKKyAg
ICAgICAgY29uc3QgRGVjaW1hbDEyOCByaHMgPSBmcm9tU3RyaW5nKHJoc1N0cik7CisgICAgICAg
IGNvbnN0IERlY2ltYWwxMjggcmVzdWx0ID0gbGhzIC8gcmhzOworICAgICAgICByZXR1cm4gcmVz
dWx0LnRvU3RyaW5nKCk7CisgICAgfQorCisgICAgU3RyaW5nIGRpdkludChjb25zdCBTdHJpbmcg
bGhzU3RyLCBjb25zdCBTdHJpbmcgcmhzU3RyKQorICAgIHsKKyAgICAgICAgY29uc3QgRGVjaW1h
bDEyOCBsaHMgPSBmcm9tU3RyaW5nKGxoc1N0cik7CisgICAgICAgIGNvbnN0IERlY2ltYWwxMjgg
cmhzID0gZnJvbVN0cmluZyhyaHNTdHIpOworICAgICAgICBjb25zdCBEZWNpbWFsMTI4IHJlc3Vs
dCA9IGxocy50cnVuY2F0ZShyaHMpOworICAgICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7
CisgICAgfQorCisgICAgYm9vbCBlcXVhbChjb25zdCBTdHJpbmcgbGhzU3RyLCBjb25zdCBTdHJp
bmcgcmhzU3RyKQorICAgIHsKKyAgICAgICAgY29uc3QgRGVjaW1hbDEyOCBsaHMgPSBmcm9tU3Ry
aW5nKGxoc1N0cik7CisgICAgICAgIGNvbnN0IERlY2ltYWwxMjggcmhzID0gZnJvbVN0cmluZyhy
aHNTdHIpOworICAgICAgICByZXR1cm4gbGhzID09IHJoczsKKyAgICB9CisKKyAgICBTdHJpbmcg
ZnJvbUZsb2F0NjQoZG91YmxlIGY2NCkKKyAgICB7CisgICAgICAgIHJldHVybiBEZWNpbWFsMTI4
KGY2NCkudG9TdHJpbmcoKTsKKyAgICB9CisKKyAgICBTdHJpbmcgZnJvbUZsb2F0NjQodWludDY0
X3QgdTY0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERlY2ltYWwxMjgoZG91YmxlKEZsb2F0NjQo
dTY0KSkpLnRvU3RyaW5nKCk7CisgICAgfQorCisgICAgU3RyaW5nIGZyb21GbG9hdDY0KHVpbnQg
c2lnbiwgdWludDY0X3Qgc2lnbmlmaWNhbmQsIHVpbnQgZXhwb25lbnQpCisgICAgeworICAgICAg
ICByZXR1cm4gRGVjaW1hbDEyOChkb3VibGUoRmxvYXQ2NChzaWduLCBzaWduaWZpY2FuZCwgZXhw
b25lbnQpKSkudG9TdHJpbmcoKTsKKyAgICB9CisKKyAgICBEZWNpbWFsMTI4IGZyb21TdHJpbmco
Y29uc3QgU3RyaW5nIHN0cikKKyAgICB7CisgICAgICAgIHJldHVybiBEZWNpbWFsMTI4Ojpmcm9t
U3RyaW5nKHN0cik7CisgICAgfQorCisgICAgYm9vbCBHcmVhdGVyVGhhbihjb25zdCBTdHJpbmcg
bGhzU3RyLCBjb25zdCBTdHJpbmcgcmhzU3RyKQorICAgIHsKKyAgICAgICAgY29uc3QgRGVjaW1h
bDEyOCBsaHMgPSBmcm9tU3RyaW5nKGxoc1N0cik7CisgICAgICAgIGNvbnN0IERlY2ltYWwxMjgg
cmhzID0gZnJvbVN0cmluZyhyaHNTdHIpOworICAgICAgICByZXR1cm4gbGhzID4gcmhzOworICAg
IH0KKworICAgIERlY2ltYWwxMjggaW5maW5pdHkoaW50IHNpZ24gPSAwKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHNpZ24gPyBmcm9tU3RyaW5nKCItSW5mIikgOiBmcm9tU3RyaW5nKCJJbmYiKTsK
KyAgICB9CisKKyAgICBib29sIExlc3NUaGFuKGNvbnN0IFN0cmluZyBsaHNTdHIsIGNvbnN0IFN0
cmluZyByaHNTdHIpCisgICAgeworICAgICAgICBjb25zdCBEZWNpbWFsMTI4IGxocyA9IGZyb21T
dHJpbmcobGhzU3RyKTsKKyAgICAgICAgY29uc3QgRGVjaW1hbDEyOCByaHMgPSBmcm9tU3RyaW5n
KHJoc1N0cik7CisgICAgICAgIHJldHVybiBsaHMgPCByaHM7CisgICAgfQorCisgICAgU3RyaW5n
IG11bChjb25zdCBEZWNpbWFsMTI4JiBsaHMsIGNvbnN0IERlY2ltYWwxMjgmIHJocykKKyAgICB7
CisgICAgICAgIHJldHVybiAobGhzICogcmhzKS50b1N0cmluZygpOworICAgIH0KKworICAgIFN0
cmluZyBtdWwoY29uc3QgU3RyaW5nIGxoc1N0ciwgY29uc3QgU3RyaW5nIHJoc1N0cikKKyAgICB7
CisgICAgICAgIGNvbnN0IERlY2ltYWwxMjggbGhzID0gZnJvbVN0cmluZyhsaHNTdHIpOworICAg
ICAgICBjb25zdCBEZWNpbWFsMTI4IHJocyA9IGZyb21TdHJpbmcocmhzU3RyKTsKKyAgICAgICAg
Y29uc3QgRGVjaW1hbDEyOCByZXN1bHQgPSBsaHMgKiByaHM7CisgICAgICAgIHJldHVybiByZXN1
bHQudG9TdHJpbmcoKTsKKyAgICB9CisKKyAgICBib29sIG5vdEVxdWFsKGNvbnN0IFN0cmluZyBs
aHNTdHIsIGNvbnN0IFN0cmluZyByaHNTdHIpCisgICAgeworICAgICAgICBjb25zdCBEZWNpbWFs
MTI4IGxocyA9IGZyb21TdHJpbmcobGhzU3RyKTsKKyAgICAgICAgY29uc3QgRGVjaW1hbDEyOCBy
aHMgPSBmcm9tU3RyaW5nKHJoc1N0cik7CisgICAgICAgIHJldHVybiBsaHMgIT0gcmhzOworICAg
IH0KKworICAgIERlY2ltYWwxMjggcXVpZXROYU4oaW50IHNpZ24pCisgICAgeworICAgICAgICBy
ZXR1cm4gc2lnbiA/IERlY2ltYWwxMjg6OmZyb21TdHJpbmcoIi1OYU4iKSA6IERlY2ltYWwxMjg6
OmZyb21TdHJpbmcoIk5hTiIpOworICAgIH0KKworICAgIFN0cmluZyByZW1haW5kZXIoY29uc3Qg
U3RyaW5nIGxoc1N0ciwgY29uc3QgU3RyaW5nIHJoc1N0cikKKyAgICB7CisgICAgICAgIGNvbnN0
IERlY2ltYWwxMjggbGhzID0gZnJvbVN0cmluZyhsaHNTdHIpOworICAgICAgICBjb25zdCBEZWNp
bWFsMTI4IHJocyA9IGZyb21TdHJpbmcocmhzU3RyKTsKKyAgICAgICAgY29uc3QgRGVjaW1hbDEy
OCByZXN1bHQgPSBsaHMucmVtYWluZGVyKHJocyk7CisgICAgICAgIHJldHVybiByZXN1bHQudG9T
dHJpbmcoKTsKKyAgICB9CisKKyAgICBEZWNpbWFsMTI4IHNpZ25hbGluZ05hTihpbnQgc2lnbiA9
IDApCisgICAgeworICAgICAgICByZXR1cm4gc2lnbiA/IERlY2ltYWwxMjg6OmZyb21TdHJpbmco
Ii1zTmFOIikgOiBEZWNpbWFsMTI4Ojpmcm9tU3RyaW5nKCJzTmFOIik7CisgICAgfQorCisgICAg
U3RyaW5nIHN1Yihjb25zdCBEZWNpbWFsMTI4JiBsaHMsIGNvbnN0IERlY2ltYWwxMjgmIHJocykK
KyAgICB7CisgICAgICAgIHJldHVybiAobGhzIC0gcmhzKS50b1N0cmluZygpOworICAgIH0KKwor
ICAgIFN0cmluZyBzdWIoY29uc3QgU3RyaW5nIGxoc1N0ciwgY29uc3QgU3RyaW5nIHJoc1N0cikK
KyAgICB7CisgICAgICAgIGNvbnN0IERlY2ltYWwxMjggbGhzID0gZnJvbVN0cmluZyhsaHNTdHIp
OworICAgICAgICBjb25zdCBEZWNpbWFsMTI4IHJocyA9IGZyb21TdHJpbmcocmhzU3RyKTsKKyAg
ICAgICAgY29uc3QgRGVjaW1hbDEyOCByZXN1bHQgPSBsaHMgLSByaHM7CisgICAgICAgIHJldHVy
biByZXN1bHQudG9TdHJpbmcoKTsKKyAgICB9CisKKyAgICBTdHJpbmcgdG9TdHJpbmcodWludDMy
X3QgYSwgdWludDMyX3QgYiwgdWludDMyX3QgYywgdWludDMyX3QgZCkKKyAgICB7CisgICAgICAg
IHJldHVybiBEZWNpbWFsMTI4KEJpbjEyOChhLCBiLCBjLCBkKSkudG9TdHJpbmcoKTsKKyAgICB9
CisKKyAgICBTdHJpbmcgdHJ1bmNhdGUoY29uc3QgU3RyaW5nIGxoc1N0ciwgY29uc3QgU3RyaW5n
IHJoc1N0cikKKyAgICB7CisgICAgICAgIGNvbnN0IERlY2ltYWwxMjggbGhzID0gZnJvbVN0cmlu
ZyhsaHNTdHIpOworICAgICAgICBjb25zdCBEZWNpbWFsMTI4IHJocyA9IGZyb21TdHJpbmcocmhz
U3RyKTsKKyAgICAgICAgY29uc3QgRGVjaW1hbDEyOCByZXN1bHQgPSBsaHMudHJ1bmNhdGUocmhz
KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOworICAgIH0KKworICAgIERlY2lt
YWwxMjggemVybyhpbnQgc2lnbiA9IDApCisgICAgeworICAgICAgICByZXR1cm4gc2lnbiA/IERl
Y2ltYWwxMjg6OmZyb21TdHJpbmcoIi0wIikgOiBEZWNpbWFsMTI4Ojpmcm9tU3RyaW5nKCIwIik7
CisgICAgfQorfTsKKworVEVTVF9GKERlY2ltYWwxMjhUZXN0LCBDb21wYXJlKQoreworICAgIEVY
UEVDVF9UUlVFKExlc3NUaGFuKCIyLjEiLCAiMyIpKTsKKyAgICBFWFBFQ1RfVFJVRShlcXVhbCgi
Mi4xIiwgIjIuMSIpKTsKKyAgICBFWFBFQ1RfVFJVRShlcXVhbCgiMi4xIiwgIjIuMTAiKSk7Cisg
ICAgRVhQRUNUX1RSVUUoR3JlYXRlclRoYW4oIjMiLCAiMi4xIikpOworICAgIEVYUEVDVF9UUlVF
KEdyZWF0ZXJUaGFuKCIyLjEiLCAiLTMiKSk7CisgICAgRVhQRUNUX1RSVUUoTGVzc1RoYW4oIi0z
IiwgIjIuMSIpKTsKKyAgICBFWFBFQ1RfVFJVRShub3RFcXVhbCgiMS4wIiwgIjIuMCIpKTsKKyAg
ICBFWFBFQ1RfRkFMU0Uobm90RXF1YWwoIjEuMCIsICIxLjAiKSk7Cit9CisKK1RFU1RfRihEZWNp
bWFsMTI4VGVzdCwgQ29tcGFyZVNwZWNpYWxWYWx1ZXMpCit7CisgICAgRVhQRUNUX1RSVUUoZXF1
YWwoIkluZiIsICJJbmYiKSk7CisgICAgRVhQRUNUX1RSVUUoZXF1YWwoIi1JbmYiLCAiLUluZiIp
KTsKKworICAgIEVYUEVDVF9UUlVFKEdyZWF0ZXJUaGFuKCJJbmYiLCAiMSIpKTsKKyAgICBFWFBF
Q1RfVFJVRShMZXNzVGhhbigiLUluZiIsICItMSIpKTsKKworICAgIEVYUEVDVF9GQUxTRShlcXVh
bCgiTmFOIiwgIk5hTiIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoZXF1YWwoIi1OYU4iLCAiLU5hTiIp
KTsKKworICAgIEVYUEVDVF9UUlVFKGVxdWFsKCIrMCIsICItMCIpKTsKK30KKworVEVTVF9GKERl
Y2ltYWwxMjhUZXN0LCBGcm9taW50MzJfdCkKK3sKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCIwIiks
IERlY2ltYWwxMjgoMCkudG9TdHJpbmcoKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiMTIzNDUi
KSwgRGVjaW1hbDEyOCgxMjM0NSkudG9TdHJpbmcoKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygi
LTEyMzQ1IiksIERlY2ltYWwxMjgoLTEyMzQ1KS50b1N0cmluZygpKTsKKyAgICBFWFBFQ1RfRVEo
U3RyaW5nKCIyMTQ3NDgzNjQ3IiksIERlY2ltYWwxMjgoMHg3RkZGRkZGRikudG9TdHJpbmcoKSk7
CisgICAgRVhQRUNUX0VRKFN0cmluZygiLTIxNDc0ODM2NDgiKSwgRGVjaW1hbDEyOCgtMSA8PCAz
MSkudG9TdHJpbmcoKSk7Cit9CisKK1RFU1RfRihEZWNpbWFsMTI4VGVzdCwgQ3Ryb3VpbnQzMl90
KQoreworICAgIEVYUEVDVF9FUShTdHJpbmcoIjAiKSwgRGVjaW1hbDEyOCgwdSkudG9TdHJpbmco
KSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiMTIzNDUiKSwgRGVjaW1hbDEyOCgxMjM0NXUpLnRv
U3RyaW5nKCkpOworICAgIEVYUEVDVF9FUShTdHJpbmcoIjIxNDc0ODM2NDciKSwgRGVjaW1hbDEy
OCgweDdGRkZGRkZGdSkudG9TdHJpbmcoKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiMjE0NzQ4
MzY0OCIpLCBEZWNpbWFsMTI4KDB4ODAwMDAwMDB1KS50b1N0cmluZygpKTsKK30KKworVEVTVF9G
KERlY2ltYWwxMjhUZXN0LCBGcm9taW50NjRfdCkKK3sKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCIx
MTI1ODk5OTA2ODQyNjI0IiksIERlY2ltYWwxMjgoaW50NjRfdCgxKSA8PCA1MCkudG9TdHJpbmco
KSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiOTIyMzM3MjAzNjg1NDc3NTgwNyIpLCBEZWNpbWFs
MTI4KHVpbnQ2NF90KDB4N0ZGRkZGRkZGRkZGRkZGRikpLnRvU3RyaW5nKCkpOworICAgIEVYUEVD
VF9FUShTdHJpbmcoIi05MjIzMzcyMDM2ODU0Nzc1ODA4IiksIERlY2ltYWwxMjgoaW50NjRfdCgt
MSkgPDwgNjMpLnRvU3RyaW5nKCkpOworfQorCitURVNUX0YoRGVjaW1hbDEyOFRlc3QsIGZyb21G
bG9hdDY0KQoreworICAgIEVYUEVDVF9FUShTdHJpbmcoIjAiKSwgZnJvbUZsb2F0NjQoMC4wKSk7
CisgICAgRVhQRUNUX0VRKFN0cmluZygiMSIpLCBmcm9tRmxvYXQ2NCgxLjApKTsKKyAgICBFWFBF
Q1RfRVEoU3RyaW5nKCI1IiksIGZyb21GbG9hdDY0KDUuMCkpOworICAgIEVYUEVDVF9FUShTdHJp
bmcoIi02IiksIGZyb21GbG9hdDY0KC02LjApKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCIxLjIz
IiksIGZyb21GbG9hdDY0KDEuMjMpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCItNTY3Ljg5Iiks
IGZyb21GbG9hdDY0KC01NjcuODkpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCIwLjEiKSwgZnJv
bUZsb2F0NjQoMC4xKSk7CisKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCI0NTAzNTk5NjI3MzcwNDk2
IiksIGZyb21GbG9hdDY0KDAsIDAsIDEwNzUpKTsKKworICAgIEVYUEVDVF9FUShTdHJpbmcoIi0w
IiksIGZyb21GbG9hdDY0KDEsIDAsIDApKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCJpbmZpbml0
eSIpLCBmcm9tRmxvYXQ2NCgwLCAwLCAyMDQ3KSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiTmFO
IiksIGZyb21GbG9hdDY0KEZsb2F0NjRCaXRzOjpQb3NpdGl2ZXF1aWV0TmFOUGF0dGVybikpOwor
CisgICAgLy8gMi43MTgyODE4Mjg0NTkwNDUyMzUzNjAyODc0NzEzNTI2NjI0OTc3NTcyNDcwOTM2
OTk5NTk1CisgICAgRVhQRUNUX0VRKFN0cmluZygiMi43MTgyODE4Mjg0NTkwNDUiKSwgZnJvbUZs
b2F0NjQodWludDY0X3QoMHg0MDA1YmYwYThiMTQ1NzY5dSkpKTsKKworICAgIC8vIDMuMTQxNTky
NjUzNTg5NzkzMjM4NDYyNjQzMzgzMjc5NTAyODg0MTk3MTY5Mzk5Mzc1MTA1OAorICAgIEVYUEVD
VF9FUShTdHJpbmcoIjMuMTQxNTkyNjUzNTg5NzkzIiksIGZyb21GbG9hdDY0KHVpbnQ2NF90KDB4
NDAwOTIxRkI1NDQ0MkQxOHUpKSk7CisKKyAgICAvLyBsZWFzdC1wb3NpdGl2ZS1ub3JtYWxpemVk
LWRvdWJsZS1mbG9hdAorICAgIEVYUEVDVF9FUShTdHJpbmcoIjIuMjI1MDczODU4NTA3MjAxRS0z
MDgiKSwgZnJvbUZsb2F0NjQoMCwgMCwgMSkpOworCisgICAgLy8gbW9zdC1wb3NpdGl2ZS1kb3Vi
bGUtZmxvYXQKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCIxLjc5NzY5MzEzNDg2MjMxNkUrMzA4Iiks
IGZyb21GbG9hdDY0KDAsICh1aW50NjRfdCgxKSA8PCA1MikgLSAxLCAyMDQ2KSk7CisKKyAgICAv
LyAgICBkb3VibGUtZmxvYXQtZXBzaWxvbgorICAgIEVYUEVDVF9FUShTdHJpbmcoIjEuMTEwMjIz
MDI0NjI1MTU3RS0xNiIpLCBmcm9tRmxvYXQ2NCgwLCAxLCA5NzApKTsKKworICAgIC8vIFN1Ym5v
cm1hbAorICAgIC8vIGxlYXN0LXBvc2l0aXZlLWRvdWJsZS1mbG9hdCg1RS0zMjQpCisgICAgLy8g
TVNWUzIwMTAgNC45NDA2NTY0NTg0MTJlLTMyNCNERU4KKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCI0
Ljk0MDY1NjQ1ODQxMjQ2NUUtMzI0IiksIGZyb21GbG9hdDY0KDAsIDEsIDApKTsKK30KKworLy8g
Tm90ZTogQWxsIGNvbXBhcmlzb24gbXVzdCBiZSBkb25lIGluIGJpbmFyeSBmb3JtYXQuIERlY2lt
YWwxMjggb3BlcmF0b3IgPT0KKy8vIGNoZWNrZXMgbnVtZXJpYyBlcXVhbGl0eS4KK1RFU1RfRihE
ZWNpbWFsMTI4VGVzdCwgZnJvbVN0cmluZykKK3sKKyAgICBFWFBFQ1RfRVEoQmluMTI4KDB4MjIw
MzQwMDAsIDAsIDAsIDApLCBCaW4xMjgoIjBFLTE5IikpOworICAgIEVYUEVDVF9FUShCaW4xMjgo
MHgyMjA4QzAwMCwgMCwgMCwgMCksIEJpbjEyOCgiMEUrMyIpKTsKKyAgICBFWFBFQ1RfRVEoQmlu
MTI4KDB4MjIwNzAwMDAsIDAsIDAsIDB4MTQwMCksIEJpbjEyOCgiMC41MDAwIikpOworICAgIEVY
UEVDVF9FUShCaW4xMjgoMHhBMjA3ODAwMCwgMCwgMCwgMHgzRDApLCBCaW4xMjgoIi03LjUwIikp
OworICAgIEVYUEVDVF9FUShCaW4xMjgoMHhBMjA4MDAwMCwgMCwgMCwgMHgzRDApLCBCaW4xMjgo
Ii03NTAiKSk7CisKKyAgICBFWFBFQ1RfRVEoQmluMTI4KDB4MjIwODAwMDAsIDAsIDAsIDB4MDAp
LCBCaW4xMjgoIjAiKSk7CisgICAgRVhQRUNUX0VRKEJpbjEyOCgweDIyMDgwMDAwLCAwLCAwLCAw
eDAwKSwgQmluMTI4KCIwMCIpKTsKKyAgICBFWFBFQ1RfRVEoQmluMTI4KDB4MjIwODAwMDAsIDAs
IDAsIDB4MDUpLCBCaW4xMjgoIjUiKSk7CisgICAgRVhQRUNUX0VRKEJpbjEyOCgweDIyMDgwMDAw
LCAwLCAwLCAweDA1KSwgQmluMTI4KCIwNSIpKTsKKyAgICBFWFBFQ1RfRVEoQmluMTI4KDB4MjIw
ODAwMDAsIDAsIDAsIDB4MTApLCBCaW4xMjgoIjEwIikpOworICAgIEVYUEVDVF9FUShCaW4xMjgo
MHgyMjA4MDAwMCwgMCwgMCwgMHg3NyksIEJpbjEyOCgiNzciKSk7CisKKyAgICBFWFBFQ1RfRVEo
QmluMTI4KDB4MjIwODAwMDAsIDAsIDAsIDB4MkEwKSwgQmluMTI4KCI1MjAiKSk7CisgICAgRVhQ
RUNUX0VRKEJpbjEyOCgweDIyMDgwMDAwLCAwLCAwLCAweDA2RSksIEJpbjEyOCgiODg4IikpOwor
ICAgIEVYUEVDVF9FUShCaW4xMjgoMHgyMjA4MDAwMCwgMCwgMCwgMHgyOUUpLCBCaW4xMjgoIjk5
NCIpKTsKKyAgICBFWFBFQ1RfRVEoQmluMTI4KDB4MjIwODAwMDAsIDAsIDAsIDB4MEZGKSwgQmlu
MTI4KCI5OTkiKSk7CisKKyAgICBFWFBFQ1RfRVEoQmluMTI4KDB4QTIwODQwMDAsIDAsIDAsIDUp
LCBCaW4xMjgoIi01RTEiKSk7CisKKyAgICAvLyBOZWFyIEVtYXgKKyAgICBFWFBFQ1RfRVEoQmlu
MTI4KDB4NDdGRkMwMDAsIDAsIDAsIDApLCBCaW4xMjgoIjFFNjE0NCIpKTsKKyAgICBFWFBFQ1Rf
RVEoCisgICAgICAgIEJpbjEyOCgweDc3RkZDRkYzLCAweEZDRkYzRkNGLCAweEYzRkNGRjNGLCAw
eENGRjNGQ0ZGKSwKKyAgICAgICAgQmluMTI4KCI5Ljk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OUUrNjE0NCIpKTsKKworICAgIEVYUEVDVF9FUShCaW4xMjgoMHg0N0ZGQzAwMCwgMCwg
MCwgMHgwMCksIEJpbjEyOCgiMUU2MTQ0IikpOworICAgIEVYUEVDVF9FUShCaW4xMjgoMHg0M0ZG
QzgwMCwgMCwgMCwgMHgwMCksIEJpbjEyOCgiMUU2MTQzIikpOworICAgIEVYUEVDVF9FUShCaW4x
MjgoMHg0M0ZGQzAwMCwgMCwgMCwgMHg4MCksIEJpbjEyOCgiMUU2MTEzIikpOworICAgIEVYUEVD
VF9FUShCaW4xMjgoMHg0M0ZGQzAwMCwgMCwgMCwgMHgxMCksIEJpbjEyOCgiMUU2MTEyIikpOwor
ICAgIEVYUEVDVF9FUShCaW4xMjgoMHg0M0ZGQzAwMCwgMCwgMCwgMHgwMSksIEJpbjEyOCgiMUU2
MTExIikpOworCisgICAgRVhQRUNUX0VRKGluZmluaXR5KDApLCBmcm9tU3RyaW5nKCIxRTk5OTk5
IikpOworICAgIEVYUEVDVF9FUShpbmZpbml0eSgwKSwgZnJvbVN0cmluZygiMzAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEU2MTQ0IikpOworCisgICAgLy8gTmVhciBFbWlu
CisgICAgRVhQRUNUX0VRKEJpbjEyOCgweDAwMDg0MDAwLCAwLCAwLCAxKSwgQmluMTI4KCIxRS02
MTQzIikpOworICAgIEVYUEVDVF9FUSgKKyAgICAgICAgQmluMTI4KDB4MDQwMDAwMDAsIDAsIDAs
IDApLCBCaW4xMjgoIjEuMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRS02MTQzIikp
OworICAgIEVYUEVDVF9FUShCaW4xMjgoMHgwMDAwMDgwMCwgMCwgMCwgMCksIEJpbjEyOCgiMC4x
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBFLTYxNDMiKSk7CisKKyAgICBFWFBFQ1Rf
RVEoemVybygwKSwgZnJvbVN0cmluZygiMC4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDFFLTYxNDQiKSk7CisKKyAgICAvLyBOb3JtYWwKKyAgICBFWFBFQ1RfRVEoQmluMTI4
KDB4MjIwQjAwMDAsIDAsIDAsIDUpLCBCaW4xMjgoIjVFMTIiKSk7CisgICAgRVhQRUNUX0VRKEJp
bjEyOCgweDIyMEIwMDAwLCAwLCAwLCA1KSwgQmluMTI4KCI1RSsxMiIpKTsKKyAgICBFWFBFQ1Rf
RVEoQmluMTI4KDB4MjYwODEzNEIsIDB4OUMxRTI4RTUsIDB4NkYzQzEyNzEsIDB4Nzc4MjM1MzQp
LCBCaW4xMjgoIjEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQiKSk7CisgICAgRVhQ
RUNUX0VRKEJpbjEyOCgweEE2MDgxMzRCLCAweDlDMUUyOEU1LCAweDZGM0MxMjcxLCAweDc3ODIz
NTM0KSwgQmluMTI4KCItMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNCIpKTsKKwor
ICAgIEVYUEVDVF9FUShCaW4xMjgoMHgyNjA4MDkxMiwgMHg0NDkxMjQ0OSwgMHgxMjQ0OTEyNCwg
MHg0OTEyNDQ5MSksIEJpbjEyOCgiMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMSIp
KTsKKworICAgIC8vIFN1Ym5vcm1hbAorICAgIEVYUEVDVF9FUShCaW4xMjgoMCwgMCwgMCwgMSks
IEJpbjEyOCgiMWUtNjE3NiIpKTsKKyAgICBFWFBFQ1RfRVEoQmluMTI4KDB4MDAwMDBGRjMsIDB4
RkNGRjNGQ0YsIDB4RjNGQ0ZGM0YsIDB4Q0ZGM0ZDRkYpLCBCaW4xMjgoIjk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OWUtNjE3NiIpKTsKKworICAgIC8vIFNwZWNpYWwgdmFsdWVzCisg
ICAgRVhQRUNUX0VRKEJpbjEyOCgweDc4MDAwMDAwKSwgQmluMTI4KCJpbmZpbml0eSIpKTsKKyAg
ICBFWFBFQ1RfRVEoQmluMTI4KDB4NzgwMDAwMDApLCBCaW4xMjgoIkluZiIpKTsKKyAgICBFWFBF
Q1RfRVEoQmluMTI4KDB4N0MwMDAwMDApLCBCaW4xMjgoIk5hTiIpKTsKKyAgICBFWFBFQ1RfRVEo
QmluMTI4KDB4N0UwMDAwMDApLCBCaW4xMjgoInNOYU4iKSk7CisKKyAgICBFWFBFQ1RfRVEoQmlu
MTI4KDB4RjgwMDAwMDApLCBCaW4xMjgoIi1pbmZpbml0eSIpKTsKKyAgICBFWFBFQ1RfRVEoQmlu
MTI4KDB4RjgwMDAwMDApLCBCaW4xMjgoIi1JbmYiKSk7CisgICAgRVhQRUNUX0VRKEJpbjEyOCgw
eEZDMDAwMDAwKSwgQmluMTI4KCItTmFOIikpOworICAgIEVYUEVDVF9FUShCaW4xMjgoMHhGRTAw
MDAwMCksIEJpbjEyOCgiLXNOYU4iKSk7CisKKyAgICAvLyBQYXJzZSBlcnJvcgorICAgIEVYUEVD
VF9FUShTdHJpbmcoIk5hTiIpLCBmcm9tU3RyaW5nKCJ4IikudG9TdHJpbmcoKSk7CisgICAgRVhQ
RUNUX0VRKFN0cmluZygiTmFOIiksIGZyb21TdHJpbmcoIjAuIikudG9TdHJpbmcoKSk7CisgICAg
RVhQRUNUX0VRKFN0cmluZygiTmFOIiksIGZyb21TdHJpbmcoIjF4IikudG9TdHJpbmcoKSk7CisK
KyAgICBFWFBFQ1RfRVEoU3RyaW5nKCJOYU4iKSwgZnJvbVN0cmluZygiMUV4IikudG9TdHJpbmco
KSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiTmFOIiksIGZyb21TdHJpbmcoIjFFMngiKS50b1N0
cmluZygpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCJOYU4iKSwgZnJvbVN0cmluZygiMUUreCIp
LnRvU3RyaW5nKCkpOworCisgICAgRVhQRUNUX0VRKFN0cmluZygiTmFOIiksIGZyb21TdHJpbmco
IitJeCIpLnRvU3RyaW5nKCkpOworICAgIEVYUEVDVF9FUShTdHJpbmcoIk5hTiIpLCBmcm9tU3Ry
aW5nKCIrTngiKS50b1N0cmluZygpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCJOYU4iKSwgZnJv
bVN0cmluZygiK1N4IikudG9TdHJpbmcoKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiTmFOIiks
IGZyb21TdHJpbmcoIit4IikudG9TdHJpbmcoKSk7CisKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCJO
YU4iKSwgZnJvbVN0cmluZygiU3giKS50b1N0cmluZygpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5n
KCJOYU4iKSwgZnJvbVN0cmluZygiTngiKS50b1N0cmluZygpKTsKKyAgICBFWFBFQ1RfRVEoU3Ry
aW5nKCJOYU4iKSwgZnJvbVN0cmluZygiTmF4IikudG9TdHJpbmcoKSk7CisgICAgRVhQRUNUX0VR
KFN0cmluZygiTmFOIiksIGZyb21TdHJpbmcoIk5hTngiKS50b1N0cmluZygpKTsKKworICAgIEVY
UEVDVF9FUShTdHJpbmcoIk5hTiIpLCBmcm9tU3RyaW5nKCJJeCIpLnRvU3RyaW5nKCkpOworICAg
IEVYUEVDVF9FUShTdHJpbmcoIk5hTiIpLCBmcm9tU3RyaW5nKCJJbngiKS50b1N0cmluZygpKTsK
KyAgICBFWFBFQ1RfRVEoU3RyaW5nKCJOYU4iKSwgZnJvbVN0cmluZygiSW5meCIpLnRvU3RyaW5n
KCkpOworICAgIEVYUEVDVF9FUShTdHJpbmcoIk5hTiIpLCBmcm9tU3RyaW5nKCJJbmZpeCIpLnRv
U3RyaW5nKCkpOworICAgIEVYUEVDVF9FUShTdHJpbmcoIk5hTiIpLCBmcm9tU3RyaW5nKCJJbmZp
bngiKS50b1N0cmluZygpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCJOYU4iKSwgZnJvbVN0cmlu
ZygiSW5maW5peCIpLnRvU3RyaW5nKCkpOworICAgIEVYUEVDVF9FUShTdHJpbmcoIk5hTiIpLCBm
cm9tU3RyaW5nKCJJbmZpbml0eCIpLnRvU3RyaW5nKCkpOworICAgIEVYUEVDVF9FUShTdHJpbmco
Ik5hTiIpLCBmcm9tU3RyaW5nKCJJbmZpbml0eXgiKS50b1N0cmluZygpKTsKK30KKworVEVTVF9G
KERlY2ltYWwxMjhUZXN0LCBPcEFkZCkKK3sKKyAgICBEZWNpbWFsMTI4IG9uZSgxKTsKKyAgICBE
ZWNpbWFsMTI4IHR3bygyKTsKKyAgICBFWFBFQ1RfRVEoRGVjaW1hbDEyOCgyKSwgb25lICsgb25l
KTsKKyAgICBFWFBFQ1RfRVEoRGVjaW1hbDEyOCgwKSwgb25lIC0gb25lKTsKKyAgICBFWFBFQ1Rf
RVEoRGVjaW1hbDEyOCgzKSwgb25lICsgdHdvKTsKKyAgICBFWFBFQ1RfRVEoRGVjaW1hbDEyOCgt
MSksIG9uZSAtIHR3byk7CisKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCItMC4wIiksIGFkZCgiLTAu
MCIsICItMC4wIikpOworICAgIEVYUEVDVF9FUShTdHJpbmcoIjAuMCIpLCBhZGQoIi0wLjAiLCAi
KzAuMCIpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCIwLjAiKSwgYWRkKCIrMC4wIiwgIi0wLjAi
KSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiMC4wIiksIGFkZCgiKzAuMCIsICIrMC4wIikpOwor
CisgICAgRVhQRUNUX0VRKFN0cmluZygiMS4wMUUrNCIpLCBhZGQoIjFFKzIiLCAiMUUrNCIpKTsK
KyAgICBFWFBFQ1RfRVEoU3RyaW5nKCIyIiksIGFkZCgiNSIsICItMyIpKTsKKyAgICBFWFBFQ1Rf
RVEoU3RyaW5nKCIxOS4wMCIpLCBhZGQoIjEyIiwgIjcuMDAiKSk7CisKKyAgICBFWFBFQ1RfRVEo
U3RyaW5nKCI5LjA1IiksIGFkZCgiNS43NSIsICIzLjMiKSk7CisgICAgRVhQRUNUX0VRKFN0cmlu
ZygiLTgiKSwgYWRkKCItNSIsICItMyIpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCIxLjAiKSwg
YWRkKCIwLjciLCAiMC4zIikpOworICAgIEVYUEVDVF9FUShTdHJpbmcoIjIuNTAiKSwgYWRkKCIx
LjI1IiwgIjEuMjUiKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiMi4yMzQ1Njc4OSIpLCBhZGQo
IjEuMjM0NTY3ODkiLCAiMS4wMDAwMDAwMCIpKTsKKworICAgIEVYUEVDVF9FUShTdHJpbmcoIjMu
MzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzRSsxMzMiKSwgYWRkKCIzMzMzMzMzMzMz
MzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzRTEwMCIsICI0IikpOworICAgIEVYUEVDVF9FUShTdHJp
bmcoIjAuOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OSIpLCBhZGQoIjAuNDQ0NDQ0
NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NCIsICIwLjU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1
NTU1NTU1NTU1NTUiKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiMS4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDBFKzM0IiksIGFkZCgiOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5IiwgIjAuNyIpKTsKK30KKworVEVTVF9GKERlY2ltYWwxMjhUZXN0LCBPcEFkZFNw
ZWNpYWxWYWx1ZXMpCit7CisgICAgY29uc3QgRGVjaW1hbDEyOCBpbmYgPSBpbmZpbml0eSgpOwor
ICAgIGNvbnN0IERlY2ltYWwxMjggbWluZiA9IGluZmluaXR5KDEpOworICAgIGNvbnN0IERlY2lt
YWwxMjggbmFuID0gcXVpZXROYU4oMCk7CisgICAgY29uc3QgRGVjaW1hbDEyOCBtbmFuID0gcXVp
ZXROYU4oMSk7CisgICAgRGVjaW1hbDEyOCB0ZW4oMTApOworCisgICAgRVhQRUNUX0VRKFN0cmlu
ZygiaW5maW5pdHkiKSwgYWRkKGluZiwgaW5mKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiTmFO
IiksIGFkZChpbmYsIG1pbmYpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCJOYU4iKSwgYWRkKG1p
bmYsIGluZikpOworICAgIEVYUEVDVF9FUShTdHJpbmcoIi1pbmZpbml0eSIpLCBhZGQobWluZiwg
bWluZikpOworCisgICAgRVhQRUNUX0VRKFN0cmluZygiaW5maW5pdHkiKSwgYWRkKGluZiwgdGVu
KSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiaW5maW5pdHkiKSwgYWRkKHRlbiwgaW5mKSk7Cisg
ICAgRVhQRUNUX0VRKFN0cmluZygiLWluZmluaXR5IiksIGFkZChtaW5mLCB0ZW4pKTsKKyAgICBF
WFBFQ1RfRVEoU3RyaW5nKCItaW5maW5pdHkiKSwgYWRkKHRlbiwgbWluZikpOworCisgICAgRVhQ
RUNUX0VRKFN0cmluZygiTmFOIiksIGFkZChuYW4sIG5hbikpOworICAgIEVYUEVDVF9FUShTdHJp
bmcoIk5hTiIpLCBhZGQobmFuLCBtbmFuKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiTmFOIiks
IGFkZChuYW4sIHRlbikpOworCisgICAgRVhQRUNUX0VRKFN0cmluZygiLU5hTiIpLCBhZGQobW5h
biwgbmFuKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiLU5hTiIpLCBhZGQobW5hbiwgbW5hbikp
OworICAgIEVYUEVDVF9FUShTdHJpbmcoIi1OYU4iKSwgYWRkKG1uYW4sIHRlbikpOworCisgICAg
RVhQRUNUX0VRKFN0cmluZygiTmFOIiksIGFkZCh0ZW4sIG5hbikpOworICAgIEVYUEVDVF9FUShT
dHJpbmcoIi1OYU4iKSwgYWRkKHRlbiwgbW5hbikpOworfQorCitURVNUX0YoRGVjaW1hbDEyOFRl
c3QsIE9wRGl2KQoreworICAgIEVYUEVDVF9FUShTdHJpbmcoIjAiKSwgZGl2KCIwIiwgIjEiKSk7
CisgICAgRVhQRUNUX0VRKFN0cmluZygiMC4wMCIpLCBkaXYoIjAuMDAiLCAiMSIpKTsKKyAgICBF
WFBFQ1RfRVEoU3RyaW5nKCIxMDAwIiksIGRpdigiMTAwMCIsICIxIikpOworICAgIEVYUEVDVF9F
UShTdHJpbmcoIjEiKSwgZGl2KCIxMiIsICIxMiIpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCI0
LjAwIiksIGRpdigiOC4wMCIsICIyIikpOworICAgIEVYUEVDVF9FUShTdHJpbmcoIjEuMjAiKSwg
ZGl2KCIyLjQwMCIsICIyLjAiKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiMTAiKSwgZGl2KCIx
MDAwIiwgIjEwMCIpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCIyLjUiKSwgZGl2KCI1IiwgIjIi
KSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiMC4xIiksIGRpdigiMSIsICIxMCIpKTsKKyAgICBF
WFBFQ1RfRVEoU3RyaW5nKCIxLjIwRSs2IiksIGRpdigiMi40MEUrNiIsICIyIikpOworICAgIEVY
UEVDVF9FUShTdHJpbmcoIjAuNjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NyIpLCBk
aXYoIjIiLCAiMyIpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCIwLjMzMzMzMzMzMzMzMzMzMzMz
MzMzMzMzMzMzMzMzMzMzMzMiKSwgZGl2KCIxIiwgIjMiKSk7CisKKyAgICBFWFBFQ1RfRVEoU3Ry
aW5nKCIzRS02MTc2IiksIGRpdigiMi41RS02MTcyIiwgIjFlKzQiKSk7CisgICAgRVhQRUNUX05F
KFN0cmluZygiMEUtNjE3NiIpLCBkaXYoIjVFLTYxNzIiLCAiMWUrNSIpKTsKKworICAgIC8vIE1h
a2UgaW5jcmVtZW50YWwgcXVvdGllbnQgdW5pdCB0byB6ZXJvLgorICAgIEVYUEVDVF9FUShTdHJp
bmcoIjEuMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEzNTE3IiksIGRpdigiMjAwMzEwMDM1
Mjc3MDc1Mzk2OTg3ODkyNTY2NDUyNDkwMCIsICIyMDAzMTAwMzUyNzcwNzUzOTY5ODc4OTI1NjY0
NDk3ODI0IikpOworCisgICAgLy8gRm9yOiBDYWxjdWxhdGVFc3RpbWF0ZWREaXZpc29yOiBkaXZp
c29yX21zdSgxKSA+PSAyNTAgKiBrTWlsbGlvbgorICAgIEVYUEVDVF9FUShTdHJpbmcoIjIiKSwg
ZGl2KCIyNjAwMDAwMDAwIiwgIjEzMDAwMDAwMDAiKSk7CisKKyAgICAvLyBGb3I6IENhbGN1bGF0
ZUVzdGltYXRlZERpdmlzb3I6IEZpbmlkaW5nIG5vbi16ZXJvIHVuaXQKKyAgICBFWFBFQ1RfRVEo
U3RyaW5nKCIzIiksIGRpdigiNzUwMDAwMDAwMDMwMDAwMDAwMCIsICIyNTAwMDAwMDAwMTAwMDAw
MDAwIikpOworfQorCitURVNUX0YoRGVjaW1hbDEyOFRlc3QsIE9wRGl2U3BlY2lhbFZhbHVlcykK
K3sKKyAgICBjb25zdCBEZWNpbWFsMTI4IGluZiA9IGluZmluaXR5KCk7CisgICAgY29uc3QgRGVj
aW1hbDEyOCBtaW5mID0gaW5maW5pdHkoMSk7CisgICAgY29uc3QgRGVjaW1hbDEyOCBuYW4gPSBx
dWlldE5hTigwKTsKKyAgICBjb25zdCBEZWNpbWFsMTI4IG1uYW4gPSBxdWlldE5hTigxKTsKKyAg
ICBjb25zdCBEZWNpbWFsMTI4IHB6ZXJvID0gemVybygpOworICAgIGNvbnN0IERlY2ltYWwxMjgg
bXplcm8gPSB6ZXJvKDEpOworICAgIERlY2ltYWwxMjggdGVuKDEwKTsKKyAgICBEZWNpbWFsMTI4
IG10ZW4oLTEwKTsKKworICAgIEVYUEVDVF9FUShTdHJpbmcoIk5hTiIpLCBkaXYocHplcm8sIHB6
ZXJvKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiTmFOIiksIGRpdihwemVybywgbXplcm8pKTsK
KyAgICBFWFBFQ1RfRVEoU3RyaW5nKCJOYU4iKSwgZGl2KG16ZXJvLCBwemVybykpOworICAgIEVY
UEVDVF9FUShTdHJpbmcoIk5hTiIpLCBkaXYobXplcm8sIG16ZXJvKSk7CisKKyAgICBFWFBFQ1Rf
RVEoU3RyaW5nKCJpbmZpbml0eSIpLCBkaXYodGVuLCBwemVybykpOworICAgIEVYUEVDVF9FUShT
dHJpbmcoIi1pbmZpbml0eSIpLCBkaXYodGVuLCBtemVybykpOworICAgIEVYUEVDVF9FUShTdHJp
bmcoIi1pbmZpbml0eSIpLCBkaXYobXRlbiwgcHplcm8pKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5n
KCJpbmZpbml0eSIpLCBkaXYobXRlbiwgbXplcm8pKTsKKworICAgIEVYUEVDVF9FUShTdHJpbmco
ImluZmluaXR5IiksIGRpdihpbmYsIHB6ZXJvKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiLWlu
ZmluaXR5IiksIGRpdihpbmYsIG16ZXJvKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiaW5maW5p
dHkiKSwgZGl2KGluZiwgdGVuKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiLWluZmluaXR5Iiks
IGRpdihpbmYsIG10ZW4pKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCItaW5maW5pdHkiKSwgZGl2
KG1pbmYsIHB6ZXJvKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiaW5maW5pdHkiKSwgZGl2KG1p
bmYsIG16ZXJvKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiLWluZmluaXR5IiksIGRpdihtaW5m
LCB0ZW4pKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCJpbmZpbml0eSIpLCBkaXYobWluZiwgbXRl
bikpOworCisgICAgRVhQRUNUX0VRKFN0cmluZygiTmFOIiksIGRpdihpbmYsIGluZikpOworICAg
IEVYUEVDVF9FUShTdHJpbmcoIk5hTiIpLCBkaXYoaW5mLCBtaW5mKSk7CisgICAgRVhQRUNUX0VR
KFN0cmluZygiTmFOIiksIGRpdihtaW5mLCBpbmYpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCJO
YU4iKSwgZGl2KG1pbmYsIG1pbmYpKTsKKworICAgIEVYUEVDVF9FUShTdHJpbmcoIjAiKSwgZGl2
KHRlbiwgaW5mKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiLTAiKSwgZGl2KHRlbiwgbWluZikp
OworICAgIEVYUEVDVF9FUShTdHJpbmcoIi0wIiksIGRpdihtdGVuLCBpbmYpKTsKKyAgICBFWFBF
Q1RfRVEoU3RyaW5nKCIwIiksIGRpdihtdGVuLCBtaW5mKSk7CisKKyAgICBFWFBFQ1RfRVEoU3Ry
aW5nKCJOYU4iKSwgZGl2KG5hbiwgbmFuKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiTmFOIiks
IGRpdihuYW4sIG1uYW4pKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCJOYU4iKSwgZGl2KG5hbiwg
dGVuKSk7CisKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCItTmFOIiksIGRpdihtbmFuLCBuYW4pKTsK
KyAgICBFWFBFQ1RfRVEoU3RyaW5nKCItTmFOIiksIGRpdihtbmFuLCBtbmFuKSk7CisgICAgRVhQ
RUNUX0VRKFN0cmluZygiLU5hTiIpLCBkaXYobW5hbiwgdGVuKSk7CisKKyAgICBFWFBFQ1RfRVEo
U3RyaW5nKCJOYU4iKSwgZGl2KHRlbiwgbmFuKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiLU5h
TiIpLCBkaXYodGVuLCBtbmFuKSk7Cit9CisKK1RFU1RfRihEZWNpbWFsMTI4VGVzdCwgT3BNdWwp
Cit7CisgICAgRVhQRUNUX0VRKFN0cmluZygiNDI4MTM1OTcxMDQxIiksIG11bCgiNjU0MzIxIiwg
IjY1NDMyMSIpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCIzLjYwIiksIG11bCgiMS4yMCIsICIz
IikpOworICAgIEVYUEVDVF9FUShTdHJpbmcoIjIxIiksIG11bCgiNyIsICIzIikpOworICAgIEVY
UEVDVF9FUShTdHJpbmcoIjAuNzIiKSwgbXVsKCIwLjkiLCAiMC44IikpOworICAgIEVYUEVDVF9F
UShTdHJpbmcoIjAuNiIpLCBtdWwoIjYiLCAiMC4xIikpOworCisgICAgRVhQRUNUX0VRKFN0cmlu
ZygiMS4wMDAwMDAwMDAwMDAwMDAwMDAwMEUrNjEzMSIpLCBtdWwoIjFFNjExMSIsICIxRTIwIikp
OworICAgIEVYUEVDVF9FUShTdHJpbmcoIjBFKzYxMTEiKSwgbXVsKCIxRTYxMTIiLCAiMEUyMCIp
KTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCJpbmZpbml0eSIpLCBtdWwoIjMzMzMzMzMzMzMzMzMz
MzMzMzMzMzMzMzMzMzMzMzMzMzNFNjExMSIsICIxMDAwMCIpKTsKKyAgICBFWFBFQ1RfRVEoU3Ry
aW5nKCIxLjUyNDE1Nzg3NTMyMzg4MzY3NTA0OTUzNTE1NjI1NjY2N0UrNjYiKSwgbXVsKCIxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0IiwgIjEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQiKSk7Cit9CisKK1RFU1RfRihEZWNpbWFsMTI4VGVzdCwgT3BNdWxTcGVjaWFs
VmFsdWVzKQoreworICAgIGNvbnN0IERlY2ltYWwxMjggaW5mID0gaW5maW5pdHkoKTsKKyAgICBj
b25zdCBEZWNpbWFsMTI4IG1pbmYgPSBpbmZpbml0eSgxKTsKKyAgICBjb25zdCBEZWNpbWFsMTI4
IG5hbiA9IHF1aWV0TmFOKDApOworICAgIGNvbnN0IERlY2ltYWwxMjggbW5hbiA9IHF1aWV0TmFO
KDEpOworICAgIERlY2ltYWwxMjggdGVuKDEwKTsKKyAgICBEZWNpbWFsMTI4IG10ZW4oLTEwKTsK
KyAgICBjb25zdCBEZWNpbWFsMTI4IHB6ZXJvID0gemVybygpOworICAgIGNvbnN0IERlY2ltYWwx
MjggbXplcm8gPSB6ZXJvKDEpOworCisgICAgRVhQRUNUX0VRKFN0cmluZygiaW5maW5pdHkiKSwg
bXVsKGluZiwgaW5mKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiLWluZmluaXR5IiksIG11bChp
bmYsIG1pbmYpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCItaW5maW5pdHkiKSwgbXVsKG1pbmYs
IGluZikpOworICAgIEVYUEVDVF9FUShTdHJpbmcoImluZmluaXR5IiksIG11bChtaW5mLCBtaW5m
KSk7CisKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCJOYU4iKSwgbXVsKGluZiwgcHplcm8pKTsKKyAg
ICBFWFBFQ1RfRVEoU3RyaW5nKCJOYU4iKSwgbXVsKHB6ZXJvLCBtaW5mKSk7CisgICAgRVhQRUNU
X0VRKFN0cmluZygiTmFOIiksIG11bChtaW5mLCBwemVybykpOworICAgIEVYUEVDVF9FUShTdHJp
bmcoIk5hTiIpLCBtdWwobWluZiwgcHplcm8pKTsKKworICAgIEVYUEVDVF9FUShTdHJpbmcoIk5h
TiIpLCBtdWwoaW5mLCBtemVybykpOworICAgIEVYUEVDVF9FUShTdHJpbmcoIk5hTiIpLCBtdWwo
bXplcm8sIG1pbmYpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCJOYU4iKSwgbXVsKG1pbmYsIG16
ZXJvKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiTmFOIiksIG11bChtaW5mLCBtemVybykpOwor
CisgICAgRVhQRUNUX0VRKFN0cmluZygiaW5maW5pdHkiKSwgbXVsKGluZiwgdGVuKSk7CisgICAg
RVhQRUNUX0VRKFN0cmluZygiaW5maW5pdHkiKSwgbXVsKHRlbiwgaW5mKSk7CisgICAgRVhQRUNU
X0VRKFN0cmluZygiLWluZmluaXR5IiksIG11bChtaW5mLCB0ZW4pKTsKKyAgICBFWFBFQ1RfRVEo
U3RyaW5nKCItaW5maW5pdHkiKSwgbXVsKHRlbiwgbWluZikpOworCisgICAgRVhQRUNUX0VRKFN0
cmluZygiLWluZmluaXR5IiksIG11bChpbmYsIG10ZW4pKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5n
KCItaW5maW5pdHkiKSwgbXVsKG10ZW4sIGluZikpOworICAgIEVYUEVDVF9FUShTdHJpbmcoImlu
ZmluaXR5IiksIG11bChtaW5mLCBtdGVuKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiaW5maW5p
dHkiKSwgbXVsKG10ZW4sIG1pbmYpKTsKKworICAgIEVYUEVDVF9FUShTdHJpbmcoIk5hTiIpLCBt
dWwobmFuLCBuYW4pKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCJOYU4iKSwgbXVsKG5hbiwgbW5h
bikpOworICAgIEVYUEVDVF9FUShTdHJpbmcoIk5hTiIpLCBtdWwobmFuLCB0ZW4pKTsKKworICAg
IEVYUEVDVF9FUShTdHJpbmcoIi1OYU4iKSwgbXVsKG1uYW4sIG5hbikpOworICAgIEVYUEVDVF9F
UShTdHJpbmcoIi1OYU4iKSwgbXVsKG1uYW4sIG1uYW4pKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5n
KCItTmFOIiksIG11bChtbmFuLCB0ZW4pKTsKKworICAgIEVYUEVDVF9FUShTdHJpbmcoIk5hTiIp
LCBtdWwodGVuLCBuYW4pKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCItTmFOIiksIG11bCh0ZW4s
IG1uYW4pKTsKK30KKworVEVTVF9GKERlY2ltYWwxMjhUZXN0LCBPcFN1YikKK3sKKyAgICBFWFBF
Q1RfRVEoU3RyaW5nKCItMC4wIiksIHN1YigiLTAuMCIsICIwLjAiKSk7CisgICAgRVhQRUNUX0VR
KFN0cmluZygiMC4wIiksIHN1YigiMC4wIiwgIjAuMCIpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5n
KCIwLjIzIiksIHN1YigiMS4zIiwgIjEuMDciKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiMC4w
MCIpLCBzdWIoIjEuMyIsICIxLjMwIikpOworICAgIEVYUEVDVF9FUShTdHJpbmcoIi0wLjc3Iiks
IHN1YigiMS4zIiwgIjIuMDciKSk7CisKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCItOS45OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTlFKzM3IiksIHN1YigiNzAwMCIsICIxMDAwMGUrMzQi
KSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiLTkuOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTkzRSszNyIpLCBzdWIoIjcwMDAwIiwgIjEwMDAwZSszNCIpKTsKKyAgICBFWFBFQ1RfRVEo
U3RyaW5nKCItOS45OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5MzBFKzM3IiksIHN1Yigi
NzAwMDAwIiwgIjEwMDAwZSszNCIpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCI5Ljk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OUUrMzciKSwgc3ViKCIxMDAwMGUrMzQiLCAiNzAwMCIp
KTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCI5Ljk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5M0UrMzciKSwgc3ViKCIxMDAwMGUrMzQiLCAiNzAwMDAiKSk7CisgICAgRVhQRUNUX0VRKFN0
cmluZygiOS45OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5MzBFKzM3IiksIHN1YigiMTAw
MDBlKzM0IiwgIjcwMDAwMCIpKTsKKworICAgIEVYUEVDVF9FUShTdHJpbmcoIjAuOTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OSIpLCBzdWIoIjEiLCAiMC4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAxIikpOworICAgIEVYUEVDVF9FUShTdHJpbmcoIjMwMC4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiksIHN1YigiMzMzLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAxMjM0NTYiLCAiMzMuMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEyMzQ1NjUiKSk7Cisg
ICAgRVhQRUNUX0VRKFN0cmluZygiOTkuOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTUi
KSwgc3ViKCIxMzMuMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEyMzQ1NiIsICIzMy4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMTIzNDU2NSIpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCI5OS45
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5NiIpLCBzdWIoIjEzMy4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMTIzNDU2IiwgIjMzLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMjM0NTY0
IikpOworICAgIEVYUEVDVF9FUShTdHJpbmcoIjkwLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwIiksIHN1YigiMTMzLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMjM0NTYiLCAiNDMu
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEyMzQ1NjAiKSk7CisgICAgRVhQRUNUX0VRKFN0cmlu
ZygiODkuOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTkiKSwgc3ViKCIxMzMuMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDEyMzQ1NiIsICI0My4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MTIzNDU2MSIpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCI4OS45OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5NCIpLCBzdWIoIjEzMy4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTIzNDU2
IiwgIjQzLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMjM0NTY2IikpOworICAgIEVYUEVDVF9F
UShTdHJpbmcoIjkuOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTQiKSwgc3ViKCIxMDEu
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEyMzQ1NiIsICI5MS4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMTIzNDU2NiIpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCIxLjk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk0IiksIHN1YigiMTAxLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAx
MjM0NTYiLCAiOTkuMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEyMzQ1NjYiKSk7CisgICAgRVhQ
RUNUX05FKFN0cmluZygiMS4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiKSwgc3Vi
KCIwLjQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQiLCAiLTAuNTU1NTU1NTU1NTU1
NTU1NTU1NTU1NTU1NTU1NTU1NTU2MSIpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCIxMjMxMjM0
NTU1NTU1NTU1NTU1NTU1NTU1NTY3NDU2Nzg4IiksIHN1YigiMTIzMTIzNDU1NTU1NTU1NTU1NTU1
NTU1NTU2NzQ1Njc4OCIsICIwLjUiKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiLTEyMzEyMzQ1
NTU1NTU1NTU1NTU1NTU1NTU1Njc0NTY3ODgiKSwgc3ViKCIwLjUiLCAiMTIzMTIzNDU1NTU1NTU1
NTU1NTU1NTU1NTU2NzQ1Njc4OCIpKTsKK30KKworVEVTVF9GKERlY2ltYWwxMjhUZXN0LCBPcFN1
YlNwZWNpYWxWYWx1ZXMpCit7CisgICAgY29uc3QgRGVjaW1hbDEyOCBpbmYgPSBpbmZpbml0eSgp
OworICAgIGNvbnN0IERlY2ltYWwxMjggbWluZiA9IGluZmluaXR5KDEpOworICAgIGNvbnN0IERl
Y2ltYWwxMjggbmFuID0gcXVpZXROYU4oMCk7CisgICAgY29uc3QgRGVjaW1hbDEyOCBtbmFuID0g
cXVpZXROYU4oMSk7CisgICAgRGVjaW1hbDEyOCB0ZW4oMTApOworCisgICAgRVhQRUNUX0VRKFN0
cmluZygiTmFOIiksIHN1YihpbmYsIGluZikpOworICAgIEVYUEVDVF9FUShTdHJpbmcoImluZmlu
aXR5IiksIHN1YihpbmYsIG1pbmYpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCItaW5maW5pdHki
KSwgc3ViKG1pbmYsIGluZikpOworICAgIEVYUEVDVF9FUShTdHJpbmcoIk5hTiIpLCBzdWIobWlu
ZiwgbWluZikpOworCisgICAgRVhQRUNUX0VRKFN0cmluZygiaW5maW5pdHkiKSwgc3ViKGluZiwg
dGVuKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiLWluZmluaXR5IiksIHN1Yih0ZW4sIGluZikp
OworICAgIEVYUEVDVF9FUShTdHJpbmcoIi1pbmZpbml0eSIpLCBzdWIobWluZiwgdGVuKSk7Cisg
ICAgRVhQRUNUX0VRKFN0cmluZygiaW5maW5pdHkiKSwgc3ViKHRlbiwgbWluZikpOworCisgICAg
RVhQRUNUX0VRKFN0cmluZygiTmFOIiksIHN1YihuYW4sIG5hbikpOworICAgIEVYUEVDVF9FUShT
dHJpbmcoIk5hTiIpLCBzdWIobmFuLCBtbmFuKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiTmFO
IiksIHN1YihuYW4sIHRlbikpOworCisgICAgRVhQRUNUX0VRKFN0cmluZygiLU5hTiIpLCBzdWIo
bW5hbiwgbmFuKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiLU5hTiIpLCBzdWIobW5hbiwgbW5h
bikpOworICAgIEVYUEVDVF9FUShTdHJpbmcoIi1OYU4iKSwgc3ViKG1uYW4sIHRlbikpOworCisg
ICAgRVhQRUNUX0VRKFN0cmluZygiTmFOIiksIHN1Yih0ZW4sIG5hbikpOworICAgIEVYUEVDVF9F
UShTdHJpbmcoIi1OYU4iKSwgc3ViKHRlbiwgbW5hbikpOworfQorCitURVNUX0YoRGVjaW1hbDEy
OFRlc3QsIHJlbWFpbmRlcikKK3sKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCIyLjEiKSwgcmVtYWlu
ZGVyKCIyLjEiLCAiMyIpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCIxIiksIHJlbWFpbmRlcigi
MTAiLCAiMyIpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCItMSIpLCByZW1haW5kZXIoIi0xMCIs
ICIzIikpOworICAgIEVYUEVDVF9FUShTdHJpbmcoIjAuMiIpLCByZW1haW5kZXIoIjEwLjIiLCAi
MSIpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCIwLjEiKSwgcmVtYWluZGVyKCIxMCIsICIwLjMi
KSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiMS4wIiksIHJlbWFpbmRlcigiMy42IiwgIjEuMyIp
KTsKK30KKworVEVTVF9GKERlY2ltYWwxMjhUZXN0LCByZW1haW5kZXJTcGVpY2FsVmFsdWVzKQor
eworICAgIEVYUEVDVF9FUSgiTmFOIiwgcXVpZXROYU4oMCkucmVtYWluZGVyKERlY2ltYWwxMjgo
MykpLnRvU3RyaW5nKCkpOworfQorCitURVNUX0YoRGVjaW1hbDEyOFRlc3QsIFRvRmxvYXQ2NCkK
K3sKKyAgICBFWFBFQ1RfRVEoMC4wLCBkb3VibGUoemVybygpKSk7CisgICAgRVhQRUNUX0VRKC0w
LjAsIGRvdWJsZSh6ZXJvKDEpKSk7CisKKyAgICBFWFBFQ1RfRVEoMS4wLCBkb3VibGUoRGVjaW1h
bDEyOCgxKSkpOworICAgIEVYUEVDVF9FUSgtMS4wLCBkb3VibGUoRGVjaW1hbDEyOCgtMSkpKTsK
KworICAgIEVYUEVDVF9FUSgxMjMuNDUsIGRvdWJsZShEZWNpbWFsMTI4KDEyMy40NSkpKTsKKyAg
ICBFWFBFQ1RfRVEoLTEyMy40NSwgZG91YmxlKERlY2ltYWwxMjgoLTEyMy40NSkpKTsKKworICAg
IEVYUEVDVF9FUSgwLjAsIGRvdWJsZShmcm9tU3RyaW5nKCIxRS00MDAiKSkpOworCisgICAgLy8g
U3Vibm9ybWFsCisgICAgRVhQRUNUX0VRKDAuMCwgZG91YmxlKERlY2ltYWwxMjgoQmluMTI4KDAs
IDAsIDAsIDEpKSkpOworCisgICAgRmxvYXQ2NCBpbmY2NChGbG9hdDY0Qml0czo6UG9zaXRpdmVJ
bmZpbml0eVBhdHRlcm4pOworCisgICAgRVhQRUNUX0VRKGRvdWJsZShpbmY2NCksIGRvdWJsZShm
cm9tU3RyaW5nKCIxRTQwMCIpKSk7CisgICAgRVhQRUNUX0VRKGRvdWJsZShpbmY2NCksIGRvdWJs
ZShpbmZpbml0eSgpKSk7CisgICAgRVhQRUNUX1RSVUUoRmxvYXQ2NDo6aXNRdWlldE5hTihkb3Vi
bGUocXVpZXROYU4oMCkpLCAwKSk7CisKKyAgICBFWFBFQ1RfRVEoLWRvdWJsZShpbmY2NCksIGRv
dWJsZShmcm9tU3RyaW5nKCItMUU0MDAiKSkpOworICAgIEVYUEVDVF9FUSgtZG91YmxlKGluZjY0
KSwgZG91YmxlKGluZmluaXR5KDEpKSk7CisgICAgRVhQRUNUX1RSVUUoRmxvYXQ2NDo6aXNRdWll
dE5hTihkb3VibGUocXVpZXROYU4oMSkpLCAxKSk7Cit9CisKK1RFU1RfRihEZWNpbWFsMTI4VGVz
dCwgdG9TdHJpbmcpCit7CisgICAgLy8gTm9ybWFsCisgICAgRVhQRUNUX0VRKFN0cmluZygiMCIp
LCBEZWNpbWFsMTI4KDApLnRvU3RyaW5nKCkpOworICAgIEVYUEVDVF9FUShTdHJpbmcoIi0wIiks
IHRvU3RyaW5nKDB4QTIwODAwMDAsIDAsIDAsIDApKTsKKworICAgIEVYUEVDVF9FUShTdHJpbmco
IjEiKSwgRGVjaW1hbDEyOCgxKS50b1N0cmluZygpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCIt
MSIpLCBEZWNpbWFsMTI4KC0xKS50b1N0cmluZygpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCIx
MjMiKSwgRGVjaW1hbDEyOCgxMjMpLnRvU3RyaW5nKCkpOworICAgIEVYUEVDVF9FUShTdHJpbmco
Ii0xMjMiKSwgRGVjaW1hbDEyOCgtMTIzKS50b1N0cmluZygpKTsKKworICAgIEVYUEVDVF9FUShT
dHJpbmcoIjEuNSIpLCBEZWNpbWFsMTI4KDEuNSkudG9TdHJpbmcoKSk7CisgICAgRVhQRUNUX0VR
KFN0cmluZygiLTEuNSIpLCBEZWNpbWFsMTI4KC0xLjUpLnRvU3RyaW5nKCkpOworCisgICAgRVhQ
RUNUX0VRKFN0cmluZygiLTUwIiksIERlY2ltYWwxMjgoLTUwKS50b1N0cmluZygpKTsKKworICAg
IEVYUEVDVF9FUShTdHJpbmcoIjAuNTAwMCIpLCB0b1N0cmluZygweDIyMDcwMDAwLCAwLCAwLCAw
eDE0MDApKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCIwRS0xOSIpLCB0b1N0cmluZygweDIyMDM0
MDAwLCAwLCAwLCAwKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiMEUtNjE3NiIpLCB0b1N0cmlu
ZygwLCAwLCAwLCAwKSk7CisKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCIxLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMEUrNjE0NCIpLCB0b1N0cmluZygweDQ3RkZDMDAwLCAwLCAwLCAw
KSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiMS4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMEUrNjE0MyIpLCB0b1N0cmluZygweDQzRkZDODAwLCAwLCAwLCAwKSk7CisgICAgRVhQRUNU
X0VRKFN0cmluZygiMS4wMDAwMDAwMDAwMEUrNjEyMiIpLCB0b1N0cmluZygweDQzRkZDMDAwLCAw
LCAgICAweDIwLCAwKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiMS4wMEUrNjExMyIpLCB0b1N0
cmluZygweDQzRkZDMDAwLCAwLCAwLCAweDgwKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiMS4w
RSs2MTEyIiksIHRvU3RyaW5nKDB4NDNGRkMwMDAsIDAsIDAsIDB4MTApKTsKKyAgICBFWFBFQ1Rf
RVEoU3RyaW5nKCIxRSs2MTExIiksIHRvU3RyaW5nKDB4NDNGRkMwMDAsIDAsIDAsIDEpKTsKK30K
KworVEVTVF9GKERlY2ltYWwxMjhUZXN0LCB0b1N0cmluZ1NwZWNpYWwpCit7CisgICAgRVhQRUNU
X0VRKFN0cmluZygiaW5maW5pdHkiKSwgaW5maW5pdHkoMCkudG9TdHJpbmcoKSk7CisgICAgRVhQ
RUNUX0VRKFN0cmluZygiLWluZmluaXR5IiksIGluZmluaXR5KDEpLnRvU3RyaW5nKCkpOworICAg
IEVYUEVDVF9FUShTdHJpbmcoIk5hTiIpLCBxdWlldE5hTigwKS50b1N0cmluZygpKTsKKyAgICBF
WFBFQ1RfRVEoU3RyaW5nKCItTmFOIiksIHF1aWV0TmFOKDEpLnRvU3RyaW5nKCkpOworICAgIEVY
UEVDVF9FUShTdHJpbmcoInNOYU4iKSwgc2lnbmFsaW5nTmFOKDApLnRvU3RyaW5nKCkpOworICAg
IEVYUEVDVF9FUShTdHJpbmcoIi1zTmFOIiksIHNpZ25hbGluZ05hTigxKS50b1N0cmluZygpKTsK
K30KKworVEVTVF9GKERlY2ltYWwxMjhUZXN0LCB0b1N0cmluZ1N1Ym5vcm1hbCkKK3sKKyAgICBF
WFBFQ1RfRVEoU3RyaW5nKCIxLjBFLTYxNzUiKSwgdG9TdHJpbmcoMCwgMCwgMCwgMHgxMCkpOwor
ICAgIEVYUEVDVF9FUShTdHJpbmcoIjFFLTYxNzUiKSwgdG9TdHJpbmcoMHgwMDAwNDAwMCwgMCwg
MCwgMSkpOworICAgIEVYUEVDVF9FUShTdHJpbmcoIjFFLTYxNzYiKSwgdG9TdHJpbmcoMCwgMCwg
MCwgMSkpOworICAgIEVYUEVDVF9FUShTdHJpbmcoIjEuMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDBFLTYxNDQiKSwgdG9TdHJpbmcoMHgwMDAwMDgwMCwgMCwgMCwgMCkpOworICAgIEVY
UEVDVF9FUShTdHJpbmcoIjkuOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTlFLTYxNDQi
KSwgdG9TdHJpbmcoMHgwMDAwMEZGMywgMHhGQ0ZGM0ZDRiwgMHhGM0ZDRkYzRiwgMHhDRkYzRkNG
RikpOworfQorCitURVNUX0YoRGVjaW1hbDEyOFRlc3QsIHRydW5jYXRlKQoreworICAgIEVYUEVD
VF9FUShTdHJpbmcoIjAiKSwgdHJ1bmNhdGUoIjAiLCAiMSIpKTsKKyAgICBFWFBFQ1RfRVEoU3Ry
aW5nKCIyNSIpLCB0cnVuY2F0ZSgiNSIsICIwLjIwMCIpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5n
KCIyIiksIHRydW5jYXRlKCI1IiwgIjIiKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiMCIpLCB0
cnVuY2F0ZSgiMiIsICIzIikpOworICAgIEVYUEVDVF9FUShTdHJpbmcoIjMiKSwgdHJ1bmNhdGUo
IjEwIiwgIjMiKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiMyIpLCB0cnVuY2F0ZSgiMSIsICIw
LjMiKSk7CisKKyAgICAvLyBSZXN1bHQgcXVvdGllbnQgaXMgdG9vIGxhcmdlIGZvciBpbnRlZ2Vy
IHJlcHJlc2VudGF0aW9uLgorICAgIEVYUEVDVF9FUShTdHJpbmcoIk5hTiIpLCB0cnVuY2F0ZSgi
MUUxMDAiLCAiMSIpKTsKK30KKworfSAvLyBuYW1lc3BhY2UK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137264</attachid>
            <date>2012-04-15 19:23:50 -0700</date>
            <delta_ts>2012-04-27 04:44:31 -0700</delta_ts>
            <desc>Patch 2 - for Preliminary Review</desc>
            <filename>bug-80009-20120416112348.patch</filename>
            <type>text/plain</type>
            <size>109604</size>
            <attacher>yosin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzOTMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDU1MWM4MTYxNTBiYmVj
MDliZWM3Yzc2OTAxMzdmYzgyMTczYWM3MC4uMDlhNGY3ZjA3ZTY4YWVlMzJiZDg1ZjQyNzY3Y2Zl
YmQ1MzFmYWRmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg0IEBACisyMDEyLTA0LTEyICBZb3No
aWZ1bWkgSW5vdWUgIDx5b3NpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU2V0dGluZyAnMC42
JyB0byB0aGUgdmFsdWUgb2YgYSByYW5nZSBpbnB1dCBtYWtlcyB0aGUgdmFsdWUgMC42MDAwMDAw
MDAwMDAwMDAxCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD04MDAwOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEltcGxlbWV0bmF0aW9uIG9mIDEyOGJpdCBkZWNpbWFsIGFyaXRobWV0aWMuCisKKyAgICAgICAg
VGhpcyBpcyBmb3IgcHJlbGltaW5hcnkgcmV2aWV3IGluc3RlYWQgb2YgZmluYWwgcmV2aWV3Lgor
ICAgICAgICBUbyBmaXggdGhpcyBidWcsIEkgbmVlZCB0byBjaGFuZ2UgU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSW5wdXRUeXBlRWxlbWVudC5jcHAgYW5kIFJhbmdlSW5wdXRUeXBlLmNwcC4KKwor
ICAgICAgICBXZWJLaXQvY2hyb21pdW0vdGVzdHMvRGVjaW1hbDEyOFRlc3QuY3BwCisKKyAgICAg
ICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogcGxhdGZvcm0vRGVjaW1hbDEyOC5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsMTI4OjpE
ZWNpbWFsMTI4KToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWwxMjg6Om9wZXJhdG9yIGRvdWJs
ZSk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsMTI4OjpvcGVyYXRvciA9KToKKyAgICAgICAg
KFdlYkNvcmU6OkRlY2ltYWwxMjg6OmZyb21TdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RGVj
aW1hbDEyODo6cmVtYWluZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWwxMjg6OnRvU3Ry
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWwxMjg6OnRydW5jYXRlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9EZWNpbWFsMTI4Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChEZWNpbWFsMTI4KToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWwxMjg6OnZhbHVlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9EZWNpbWFsMTI4SW1wbC5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6RGVjaW1hbDEyOEltcGw6OkVuY29kZWREYXRhOjpjb2VmZmljZW50TXNkKToKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1hbDEyOEltcGw6OkVuY29k
ZWREYXRhOjpjb21iaW5hdGlvbkZpZWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWwxMjhJ
bXBsOjpFbmNvZGVkRGF0YTo6ZHBkQXQpOgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1hbDEyOElt
cGw6OkVuY29kZWREYXRhOjpleHBvbmVudEJpYXNlZCk6CisgICAgICAgIChXZWJDb3JlOjpEZWNp
bWFsMTI4SW1wbDo6RW5jb2RlZERhdGE6OmV4cG9uZW50Q29udGludWF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkRlY2ltYWwxMjhJbXBsOjpFbmNvZGVkRGF0YTo6ZXhwb25lbnRNc2IpOgorICAg
ICAgICAoV2ViQ29yZTo6RGVjaW1hbDEyOEltcGw6OkVuY29kZWREYXRhOjpzZXRDb21iaW5hdGlv
bkZpZWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWwxMjhJbXBsOjpFbmNvZGVkRGF0YTo6
c2V0RHBkQXQpOgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1hbDEyOEltcGw6OkVuY29kZWREYXRh
OjpzZXRFeHBvbmVudCk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsMTI4SW1wbDo6RW5jb2Rl
ZERhdGE6OnNldEV4cG9uZW50Q29udGludWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2lt
YWwxMjhJbXBsOjpFbmNvZGVkRGF0YTo6c2V0U2lnbik6CisgICAgICAgIChXZWJDb3JlOjpEZWNp
bWFsMTI4SW1wbDo6RGVjaW1hbDEyOEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1hbDEy
OEltcGw6Om9wZXJhdG9yIGRvdWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsMTI4SW1w
bDo6b3BlcmF0b3IgPSk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsMTI4SW1wbDo6b3BlcmF0
b3IgKyk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsMTI4SW1wbDo6b3BlcmF0b3IgLSk6Cisg
ICAgICAgIChXZWJDb3JlOjpEZWNpbWFsMTI4SW1wbDo6b3BlcmF0b3IgKik6CisgICAgICAgIChX
ZWJDb3JlOjpEZWNpbWFsMTI4SW1wbDo6b3BlcmF0b3IgLyk6CisgICAgICAgIChXZWJDb3JlOjpE
ZWNpbWFsMTI4SW1wbDo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsMTI4
SW1wbDo6b3BlcmF0b3IhPSk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsMTI4SW1wbDo6b3Bl
cmF0b3IgPCk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsMTI4SW1wbDo6b3BlcmF0b3IgPD0p
OgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1hbDEyOEltcGw6Om9wZXJhdG9yID4pOgorICAgICAg
ICAoV2ViQ29yZTo6RGVjaW1hbDEyOEltcGw6Om9wZXJhdG9yID49KToKKyAgICAgICAgKFdlYkNv
cmU6OkRlY2ltYWwxMjhJbXBsOjpjb2VmZmljZW50TXNkKToKKyAgICAgICAgKFdlYkNvcmU6OkRl
Y2ltYWwxMjhJbXBsOjpkcGRBdCk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsMTI4SW1wbDo6
ZXhwb25lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1hbDEyOEltcGw6OmllZWVDbGFzcyk6
CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsMTI4SW1wbDo6c2lnbik6CisgICAgICAgIChXZWJD
b3JlOjpEZWNpbWFsMTI4SW1wbDo6c2V0U2lnbik6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFs
MTI4SW1wbDo6Y29tcGFyZSk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsMTI4SW1wbDo6ZGl2
aWRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWwxMjhJbXBsOjpmYXN0RXF1YWxzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRlY2ltYWwxMjhJbXBsOjpmcm9tU3RyaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OkRlY2ltYWwxMjhJbXBsOjppbmZpbml0eSk6CisgICAgICAgIChXZWJDb3JlOjpEZWNp
bWFsMTI4SW1wbDo6aXNGaW5pdGUpOgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1hbDEyOEltcGw6
OmlzU3BlY2lhbCk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsMTI4SW1wbDo6aXNaZXJvKToK
KyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWwxMjhJbXBsOjpxdWlldE5hTik6CisgICAgICAgIChX
ZWJDb3JlOjpEZWNpbWFsMTI4SW1wbDo6cmVtYWluZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRl
Y2ltYWwxMjhJbXBsOjpyb3VuZEF0KToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWwxMjhJbXBs
OjpzaWduYWxpbmdOYU4pOgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1hbDEyOEltcGw6OnRvU3Ry
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWwxMjhJbXBsOjp0cnVuY2F0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpEZWNpbWFsMTI4SW1wbDo6emVybyk6CisgICAgICAgICogcGxhdGZvcm0v
RGVjaW1hbDEyOEltcGwuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKERl
Y2ltYWwxMjhJbXBsKToKKyAgICAgICAgKEVuY29kZWREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OkRlY2ltYWwxMjhJbXBsOjp2YWx1ZSk6CisKIDIwMTItMDQtMTEgIEplciBOb2JsZSAgPGplci5u
b2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgTGF5b3V0IFRlc3Qgd2ViYXVkaW8vKiBpcyBmbGFr
eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAxYmJhOTU1Yzk0MTMxMzIyNDQ1NzU4NGQx
YTE4MDFhZmJiYmFhZTJjLi4zMzEwZDVlOWRmZWYwZWE0MTk3YmY1NzIxMTUxNTdiYmFkZGNiOTkx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEyLTA0LTEy
ICBZb3NoaWZ1bWkgSW5vdWUgIDx5b3NpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU2V0dGlu
ZyAnMC42JyB0byB0aGUgdmFsdWUgb2YgYSByYW5nZSBpbnB1dCBtYWtlcyB0aGUgdmFsdWUgMC42
MDAwMDAwMDAwMDAwMDAxCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD04MDAwOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogV2ViS2l0Lmd5cGk6CisgICAgICAgICogdGVzdHMvRGVjaW1hbDEyOFRlc3QuY3Bw
OiBBZGRlZC4KKwogMjAxMi0wNC0xMSAgRGF2aWQgRG9yd2luICA8ZGRvcndpbkBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgQWRkIGtleVN5c3RlbSBhdHRyaWJ1dGUgdG8gY2FuUGxheVR5cGUoKSBm
b3IgRW5jcnlwdGVkIE1lZGlhIEV4dGVuc2lvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBhOTMxMWVj
MWYzNjFiOWMxNjczNDAwZTkzN2I0OTA3ZDM2YjNjOTJkLi5lNzYzMTY5ZWExOTlhNzFjYjVjNTI4
MzQ0Mjc5NmFjYzcyNjU0MGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0yNjgsNiArMjY4LDggQEAK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9Db29raWVzU3RyYXRlZ3kuaCcsCiAgICAgICAgICAgICAn
cGxhdGZvcm0vQ3Vyc29yLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL0RhdGVDb21wb25lbnRz
LmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL0RlY2ltYWwxMjguaCcsCisgICAgICAgICAgICAn
cGxhdGZvcm0vRGVjaW1hbDEyOEltcGwuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vRHJhZ0Rh
dGEuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vRHJhZ0ltYWdlLmgnLAogICAgICAgICAgICAg
J3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmgnLApAQCAtMzA4Nyw2ICszMDg5LDggQEAKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5oJywKICAgICAgICAgICAgICdwbGF0Zm9y
bS9DdXJzb3IuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9EYXRlQ29tcG9uZW50cy5jcHAn
LAorICAgICAgICAgICAgJ3BsYXRmb3JtL0RlY2ltYWwxMjguY3BwJywKKyAgICAgICAgICAgICdw
bGF0Zm9ybS9EZWNpbWFsMTI4SW1wbC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL0RyYWdE
YXRhLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vRHJhZ0ltYWdlLmNwcCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vRXZlbnRMb29wLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vRGVjaW1hbDEyOC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EZWNpbWFs
MTI4LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5kN2NiZTMzMzkwOGY4NTlkY2M0ZDUwY2M0NjBlMTU0MzBlNmVh
MTMxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGVjaW1hbDEy
OC5jcHAKQEAgLTAsMCArMSwxMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRGVj
aW1hbDEyOC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0RlY2ltYWwxMjg6OkRlY2ltYWwx
MjgoY29uc3QgRGVjaW1hbDEyOCYgdmFsdWUpCisgICAgOiBtX3ZhbHVlKHZhbHVlLm1fdmFsdWUp
Cit7Cit9CisKK0RlY2ltYWwxMjg6OkRlY2ltYWwxMjgoZG91YmxlIHZhbHVlKQorICAgIDogbV92
YWx1ZShEZWNpbWFsMTI4SW1wbCh2YWx1ZSkpCit7Cit9CisKK0RlY2ltYWwxMjg6OkRlY2ltYWwx
MjgoY29uc3QgRGVjaW1hbDEyOEltcGwmIHZhbHVlKQorICAgIDogbV92YWx1ZSh2YWx1ZSkKK3sK
K30KKworRGVjaW1hbDEyODo6b3BlcmF0b3IgZG91YmxlKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
ZG91YmxlKG1fdmFsdWUpOworfQorCitEZWNpbWFsMTI4JiBEZWNpbWFsMTI4OjpvcGVyYXRvciA9
KGNvbnN0IERlY2ltYWwxMjgmIG9wZXJhbmQpCit7CisgICAgbV92YWx1ZSA9IG9wZXJhbmQubV92
YWx1ZTsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK0RlY2ltYWwxMjggRGVjaW1hbDEyODo6b3Bl
cmF0b3IgKyhjb25zdCBEZWNpbWFsMTI4JiBvcGVyYW5kKSBjb25zdAoreworICAgIHJldHVybiBE
ZWNpbWFsMTI4KG1fdmFsdWUgKyBvcGVyYW5kLm1fdmFsdWUpOworfQorCitEZWNpbWFsMTI4IERl
Y2ltYWwxMjg6Om9wZXJhdG9yIC0oY29uc3QgRGVjaW1hbDEyOCYgb3BlcmFuZCkgY29uc3QKK3sK
KyAgICByZXR1cm4gRGVjaW1hbDEyOChtX3ZhbHVlIC0gb3BlcmFuZC5tX3ZhbHVlKTsKK30KKwor
RGVjaW1hbDEyOCBEZWNpbWFsMTI4OjpvcGVyYXRvciAqKGNvbnN0IERlY2ltYWwxMjgmIG9wZXJh
bmQpIGNvbnN0Cit7CisgICAgcmV0dXJuIERlY2ltYWwxMjgobV92YWx1ZSAqIG9wZXJhbmQubV92
YWx1ZSk7Cit9CisKK0RlY2ltYWwxMjggRGVjaW1hbDEyODo6b3BlcmF0b3IgLyhjb25zdCBEZWNp
bWFsMTI4JiBvcGVyYW5kKSBjb25zdAoreworICAgIHJldHVybiBEZWNpbWFsMTI4KG1fdmFsdWUg
LyBvcGVyYW5kLm1fdmFsdWUpOworfQorCitib29sIERlY2ltYWwxMjg6Om9wZXJhdG9yID09KGNv
bnN0IERlY2ltYWwxMjgmIG9wZXJhbmQpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdmFsdWUgPT0g
b3BlcmFuZC5tX3ZhbHVlOworfQorCitib29sIERlY2ltYWwxMjg6Om9wZXJhdG9yICE9KGNvbnN0
IERlY2ltYWwxMjgmIG9wZXJhbmQpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdmFsdWUgIT0gb3Bl
cmFuZC5tX3ZhbHVlOworfQorCitib29sIERlY2ltYWwxMjg6Om9wZXJhdG9yIDwoY29uc3QgRGVj
aW1hbDEyOCYgb3BlcmFuZCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV92YWx1ZSA8IG9wZXJhbmQu
bV92YWx1ZTsKK30KKworYm9vbCBEZWNpbWFsMTI4OjpvcGVyYXRvciA8PShjb25zdCBEZWNpbWFs
MTI4JiBvcGVyYW5kKSBjb25zdAoreworICAgIHJldHVybiBtX3ZhbHVlIDw9IG9wZXJhbmQubV92
YWx1ZTsKK30KKworYm9vbCBEZWNpbWFsMTI4OjpvcGVyYXRvciA+KGNvbnN0IERlY2ltYWwxMjgm
IG9wZXJhbmQpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdmFsdWUgPiBvcGVyYW5kLm1fdmFsdWU7
Cit9CisKK2Jvb2wgRGVjaW1hbDEyODo6b3BlcmF0b3IgPj0oY29uc3QgRGVjaW1hbDEyOCYgb3Bl
cmFuZCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV92YWx1ZSA+PSBvcGVyYW5kLm1fdmFsdWU7Cit9
CisKK0RlY2ltYWwxMjggRGVjaW1hbDEyODo6ZnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmlu
ZykKK3sKKyAgICByZXR1cm4gRGVjaW1hbDEyOChEZWNpbWFsMTI4SW1wbDo6ZnJvbVN0cmluZyhz
dHJpbmcpKTsKK30KKworRGVjaW1hbDEyOCBEZWNpbWFsMTI4OjpyZW1haW5kZXIoY29uc3QgRGVj
aW1hbDEyOCYgZGl2aXNvcikgY29uc3QKK3sKKyAgICByZXR1cm4gRGVjaW1hbDEyOChtX3ZhbHVl
LnJlbWFpbmRlcihkaXZpc29yLm1fdmFsdWUpKTsKK30KKworU3RyaW5nIERlY2ltYWwxMjg6OnRv
U3RyaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV92YWx1ZS50b1N0cmluZygpOworfQorCitE
ZWNpbWFsMTI4IERlY2ltYWwxMjg6OnRydW5jYXRlKGNvbnN0IERlY2ltYWwxMjgmIGRpdmlzb3Ip
IGNvbnN0Cit7CisgICAgcmV0dXJuIERlY2ltYWwxMjgobV92YWx1ZS5kaXZpZGUoZGl2aXNvci5t
X3ZhbHVlLCBEZWNpbWFsMTI4SW1wbDo6SW50ZWdlclJlc3VsdCkpOworfQorCit9IC8vIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RlY2ltYWwxMjguaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RlY2ltYWwxMjguaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZjlhMmMzNzI5
YjljNjcyYWY5NGQ3YzM4MzdjMzJiY2I2MmI2ZWI2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vRGVjaW1hbDEyOC5oCkBAIC0wLDAgKzEsODUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJp
YnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworI2lmbmRlZiBEZWNp
bWFsMTI4X2gKKyNkZWZpbmUgRGVjaW1hbDEyOF9oCisKKyNpbmNsdWRlICJEZWNpbWFsMTI4SW1w
bC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIERlY2ltYWwxMjggeworcHVibGlj
OgorICAgIERlY2ltYWwxMjgoZG91YmxlKTsKKyAgICBEZWNpbWFsMTI4KGNvbnN0IERlY2ltYWwx
MjgmKTsKKworICAgIG9wZXJhdG9yIGRvdWJsZSgpIGNvbnN0OworCisgICAgRGVjaW1hbDEyOCYg
b3BlcmF0b3IgPShjb25zdCBEZWNpbWFsMTI4Jik7CisKKyAgICBEZWNpbWFsMTI4IG9wZXJhdG9y
ICsoY29uc3QgRGVjaW1hbDEyOCYpIGNvbnN0OworICAgIERlY2ltYWwxMjggb3BlcmF0b3IgLShj
b25zdCBEZWNpbWFsMTI4JikgY29uc3Q7CisgICAgRGVjaW1hbDEyOCBvcGVyYXRvciAqKGNvbnN0
IERlY2ltYWwxMjgmKSBjb25zdDsKKyAgICBEZWNpbWFsMTI4IG9wZXJhdG9yIC8oY29uc3QgRGVj
aW1hbDEyOCYpIGNvbnN0OworCisgICAgRGVjaW1hbDEyOCBvcGVyYXRvciArKGRvdWJsZSkgY29u
c3Q7CisgICAgRGVjaW1hbDEyOCBvcGVyYXRvciAtKGRvdWJsZSkgY29uc3Q7CisgICAgRGVjaW1h
bDEyOCBvcGVyYXRvciAqKGRvdWJsZSkgY29uc3Q7CisgICAgRGVjaW1hbDEyOCBvcGVyYXRvciAv
KGRvdWJsZSkgY29uc3Q7CisKKyAgICBib29sIG9wZXJhdG9yID09KGNvbnN0IERlY2ltYWwxMjgm
KSBjb25zdDsKKyAgICBib29sIG9wZXJhdG9yICE9KGNvbnN0IERlY2ltYWwxMjgmKSBjb25zdDsK
KyAgICBib29sIG9wZXJhdG9yIDwoY29uc3QgRGVjaW1hbDEyOCYpIGNvbnN0OworICAgIGJvb2wg
b3BlcmF0b3IgPD0oY29uc3QgRGVjaW1hbDEyOCYpIGNvbnN0OworICAgIGJvb2wgb3BlcmF0b3Ig
Pihjb25zdCBEZWNpbWFsMTI4JikgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRvciA+PShjb25zdCBE
ZWNpbWFsMTI4JikgY29uc3Q7CisKKyAgICBib29sIG9wZXJhdG9yID09KGRvdWJsZSkgY29uc3Q7
CisgICAgYm9vbCBvcGVyYXRvciAhPShkb3VibGUpIGNvbnN0OworICAgIGJvb2wgb3BlcmF0b3Ig
PChkb3VibGUpIGNvbnN0OworICAgIGJvb2wgb3BlcmF0b3IgPD0oZG91YmxlKSBjb25zdDsKKyAg
ICBib29sIG9wZXJhdG9yID4oZG91YmxlKSBjb25zdDsKKyAgICBib29sIG9wZXJhdG9yID49KGRv
dWJsZSkgY29uc3Q7CisKKyAgICAvLyBFeHBvc2UgdmFsdWUgbWV0aG9kIGZvciB1bml0IHRlc3Rz
LgorICAgIGNvbnN0IERlY2ltYWwxMjhJbXBsOjpFbmNvZGVkRGF0YSYgdmFsdWUoKSBjb25zdCB7
IHJldHVybiBtX3ZhbHVlLnZhbHVlKCk7IH0KKworICAgIHN0YXRpYyBEZWNpbWFsMTI4IGZyb21T
dHJpbmcoY29uc3QgU3RyaW5nJik7CisgICAgRGVjaW1hbDEyOCByZW1haW5kZXIoY29uc3QgRGVj
aW1hbDEyOCYpIGNvbnN0OworICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0OworICAgIERlY2lt
YWwxMjggdHJ1bmNhdGUoY29uc3QgRGVjaW1hbDEyOCYpIGNvbnN0OworCitwcml2YXRlOgorICAg
IERlY2ltYWwxMjgoY29uc3QgRGVjaW1hbDEyOEltcGwmKTsKKyAgICBEZWNpbWFsMTI4SW1wbCBt
X3ZhbHVlOworfTsKKworfSAvLyBXZWJDb3JlCisKKyNlbmRpZiAvLyBEZWNpbWFsMTI4X2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RlY2ltYWwxMjhJbXBsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RlY2ltYWwxMjhJbXBsLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMDk0
NzA1MzdjYWRhZGZmOGIyOGEzZDg0ODM4NTJkZTI4OTczOGExCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGVjaW1hbDEyOEltcGwuY3BwCkBAIC0wLDAgKzEsMTg1
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoK
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJEZWNpbWFsMTI4LmgiCisKKyNpbmNs
dWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8ZmxvYXQuaD4KKyNpbmNsdWRlIDx3dGYvQXNzZXJ0
aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0J1aWxkZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2Ugewor
CitzdGF0aWMgY29uc3QgdWludDMyX3QgQ2xhc3NNYXNrID0gMHg3RkZGdSA8PCAxNjsKK3N0YXRp
YyBjb25zdCB1aW50MzJfdCBFeHBvbmVudE1hc2sgPSAweDdGRjB1IDw8IDE2Oworc3RhdGljIGNv
bnN0IHVpbnQzMl90IFNwZWNpYWxWYWx1ZU1hc2sgPSAweDdGRjB1IDw8IDE2Oworc3RhdGljIGNv
bnN0IHVpbnQzMl90IFplcm9NYXNrID0gMHhGRkYwdSA8PCAxNjsKKworc3RhdGljIGNvbnN0IHVp
bnQzMl90IE5lZ2F0aXZlSW5maW5pdHlQYXR0ZXJuID0gMHhGRkYwdSA8PCAxNjsKK3N0YXRpYyBj
b25zdCB1aW50MzJfdCBQb3NpdGl2ZUluZmluaXR5UGF0dGVybiA9IDB4N0ZGMHUgPDwgMTY7CisK
K3N0YXRpYyBjb25zdCB1aW50MzJfdCBOZWdhdGl2ZVF1aWV0TmFOUGF0dGVybiA9IDB4RkZGMXUg
PDwgMTY7CitzdGF0aWMgY29uc3QgdWludDMyX3QgUG9zaXRpdmVRdWlldE5hTlBhdHRlcm4gPSAw
eDdGRjF1IDw8IDE2OworCitzdGF0aWMgY29uc3QgdWludDMyX3QgTmVnYXRpdmVaZXJvUGF0dGVy
biA9IDB4QkZGMHUgPDwgMTY7CitzdGF0aWMgY29uc3QgdWludDMyX3QgUG9zaXRpdmVaZXJvUGF0
dGVybiA9IDB4M0ZGMHUgPDwgMTY7CisKK3N0YXRpYyBjb25zdCBpbnQgRXhwb25lbnRTaGlmdCA9
IDIwOworCisvLyBJRUVFNzU0IGJpbmFyeTY0IGZvcm1hdAorLy8gc2lnbigxKSBleHBvbmVudCgx
MSkgc2lnbmZpY2FuZCg1MykKK2NsYXNzIEZsb2F0NjRJbXBsIHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgY29uc3QgaW50IFNpZ25pZmljYW5kQml0cyA9IDUyOworICAgIHN0YXRpYyBjb25zdCB1aW50
NjRfdCBTaWduaWZpY2FuZE1hc2sgPSAodWludDY0X3QoMSkgPDwgU2lnbmlmaWNhbmRCaXRzKSAt
IDE7CisgICAgc3RhdGljIGNvbnN0IGludCBFYmlhcyA9IDEwMjM7CisgICAgc3RhdGljIGNvbnN0
IGludCBFbWF4PSAyMDQ3OworICAgIHN0YXRpYyBjb25zdCBpbnQgRXN1Ym5vcm1hbCA9IC0xMDc0
OworICAgIHN0YXRpYyBjb25zdCBpbnQgUHJlY2lzaW9uID0gU2lnbmlmaWNhbmRCaXRzICsgMTsK
KyAgICBzdGF0aWMgY29uc3QgaW50IE51bWJlck9mRGlnaXRzID0gMTY7CisKKyAgICBleHBsaWNp
dCBGbG9hdDY0SW1wbChkb3VibGUgZjY0KSB7IG1fdmFsdWUubV9mbG9hdDY0ID0gZjY0OyB9Cisg
ICAgZXhwbGljaXQgRmxvYXQ2NEltcGwodWludDY0X3QgdTY0KSB7IG1fdmFsdWUubV91aW50NjQg
PSB1NjQ7IH0KKworICAgIG9wZXJhdG9yIGRvdWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUu
bV9mbG9hdDY0OyB9CisKKyAgICAvLyBGSVhNRTogVGhpcyB0eXBlZGVmIGlzIHdvcmthcm91bmQg
Zm9yIEJVRyA4Mzg2NC4gT25jZSBjaGVjay13ZWJraXQtc3R5bGUKKyAgICAvLyBzdG9wIGNvbXBs
YWluZyBhYm91dCAib3BlcmF0b3IgWFhYX3QiLCB3ZSBjYW4gcmVtb3ZlIHRoaXMgdHlwZWRlZiBh
bmQKKyAgICAvLyBjaGFuZ2UgbWV0aG9kIHNpZ25hdHVyZS4KKyAgICB0eXBlZGVmIHVpbnQ2NF90
IHVpbnQ2NDsKKyAgICBvcGVyYXRvciB1aW50NjQoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlLm1f
dWludDY0OyB9CisgICAgaW50IGV4cG9uZW50KCkgY29uc3QgeyByZXR1cm4gcmF3RXhwb25lbnQo
KSAtIEViaWFzOyB9CisKKyAgICBEZWNpbWFsMTI4SW1wbDo6SWVlZUNsYXNzIGllZWVDbGFzcygp
IGNvbnN0CisgICAgeworICAgICAgICBzd2l0Y2ggKHJhd0V4cG9uZW50KCkpIHsKKyAgICAgICAg
Y2FzZSBFbWF4OiB7CisgICAgICAgICAgICBjb25zdCB1aW50NjRfdCBzaWduZmljYW5kNTIgPSBy
YXdTaWduaWZpY2FuZCgpOworICAgICAgICAgICAgaWYgKCFzaWduZmljYW5kNTIpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIERlY2ltYWwxMjhJbXBsOjpDbGFzc0luZmluaXR5OworICAgICAgICAg
ICAgY29uc3QgdWludDMyX3QgaGlnaDQgPSB1aW50MzJfdChzaWduZmljYW5kNTIgPj4gNDgpICYg
MHgwRjsKKyAgICAgICAgICAgIHJldHVybiBoaWdoNCA+IDQgPyBEZWNpbWFsMTI4SW1wbDo6Q2xh
c3NRdWlldE5hTiA6IERlY2ltYWwxMjhJbXBsOjpDbGFzc1NpZ25hbGluZ05hTjsKKyAgICAgICAg
fQorCisgICAgICAgIGNhc2UgMDoKKyAgICAgICAgICAgIHJldHVybiAhbV92YWx1ZS5tX3VpbnQ2
NCB8fCAhKG1fdmFsdWUubV91aW50NjQgPDwgMSkgPyBEZWNpbWFsMTI4SW1wbDo6Q2xhc3NaZXJv
IDogRGVjaW1hbDEyOEltcGw6OkNsYXNzU3Vibm9ybWFsOworCisgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICByZXR1cm4gRGVjaW1hbDEyOEltcGw6OkNsYXNzTm9ybWFsOworICAgICAgICB9
CisgICAgfQorCisgICAgdWludDMyX3QgcmF3RXhwb25lbnQoKSBjb25zdCB7IHJldHVybiB1aW50
MzJfdChtX3ZhbHVlLm1fdWludDY0ID4+IFNpZ25pZmljYW5kQml0cykgJiAweDdGRjsgfQorICAg
IHVpbnQ2NF90IHJhd1NpZ25pZmljYW5kKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZS5tX3VpbnQ2
NCAmIFNpZ25pZmljYW5kTWFzazsgfQorICAgIHVpbnQ2NF90IHNpZ25pZmljYW5kKCkgY29uc3Qg
eyByZXR1cm4gcmF3U2lnbmlmaWNhbmQoKSB8ICh1aW50NjRfdCgxKSA8PCBTaWduaWZpY2FuZEJp
dHMpOyB9CisKKyAgICAvLyBUbyBhdm9pZCBjb21wYXJpbmcgd2l0aCBzaWduYWxpbmcgTmFOLCB1
c2Ugc2lnbiBiaXQuCisgICAgaW50IHNpZ24oKSBjb25zdCB7IHJldHVybiBpbnQ2NF90KG1fdmFs
dWUubV91aW50NjQpIDwgMDsgfQorCisgcHJpdmF0ZToKKyAgICB1bmlvbiB7CisgICAgICAgIGRv
dWJsZSBtX2Zsb2F0NjQ7CisgICAgICAgIHVpbnQ2NF90IG1fdWludDY0OworICAgIH0gbV92YWx1
ZTsKK307CisKK25hbWVzcGFjZSBGbG9hdDY0Qml0cyB7CitzdGF0aWMgY29uc3QgdWludDY0X3Qg
TmVnYXRpdmVJbmZpbml0eVBhdHRlcm4gPSB1aW50NjRfdCgweEZGRjApIDw8IDQ4Oworc3RhdGlj
IGNvbnN0IHVpbnQ2NF90IFBvc2l0aXZlSW5maW5pdHlQYXR0ZXJuID0gdWludDY0X3QoMHg3RkYw
KSA8PCA0ODsKKworc3RhdGljIGNvbnN0IHVpbnQ2NF90IE5lZ2F0aXZlUXVpZXROYU5QYXR0ZXJu
ID0gdWludDY0X3QoMHhGRkY4KSA8PCA0ODsKK3N0YXRpYyBjb25zdCB1aW50NjRfdCBQb3NpdGl2
ZVF1aWV0TmFOUGF0dGVybiA9IHVpbnQ2NF90KDB4N0ZGOCkgPDwgNDg7CisKK3N0YXRpYyBjb25z
dCB1aW50NjRfdCBOZWdhdGl2ZVNpZ25hbGluZ05hTlBhdHRlcm4gPSB1aW50NjRfdCgweEZGRjQp
IDw8IDQ4Oworc3RhdGljIGNvbnN0IHVpbnQ2NF90IFBvc2l0aXZlU2lnbmFsaW5nTmFOUGF0dGVy
biA9IHVpbnQ2NF90KDB4N0ZGNCkgPDwgNDg7CisKK3N0YXRpYyBjb25zdCB1aW50NjRfdCBOZWdh
dGl2ZVplcm9QYXR0ZXJuID0gdWludDY0X3QoMHg4MDAwKSA8PCA0ODsKK3N0YXRpYyBjb25zdCB1
aW50NjRfdCBQb3NpdGl2ZVplcm9QYXR0ZXJuID0gMDsKK30gLy8gRmxvYXQ2NEJpdHMKKwordGVt
cGxhdGU8dHlwZW5hbWUgVD4KK3N0YXRpYyBUIFBvd2VyKFQgeCwgdWludCBuKQoreworICAgIFQg
eSA9IDE7CisgICAgVCB6ID0geDsKKyAgICBmb3IgKDs7KSB7CisgICAgICAgIGlmIChuICYgMSkK
KyAgICAgICAgICAgIHkgPSB5ICogejsKKworICAgICAgICBuID4+PSAxOworICAgICAgICBpZiAo
IW4pCisgICAgICAgICAgICByZXR1cm4geTsKKworICAgICAgICB6ID0geiAqIHo7CisgICAgfQor
fQorCisvLyBSZXByZXNlbnRzIGEgc3RyaW5nIG9mIGRlY2ltYWwgZGlnaXRzLiBFYWNoIGRlY2lt
YWwgZGlnaXQgaXMgc3RvcmVkIGluCisvLyBsb3dlciA0Yml0IG9mIGJ5dGUsIGhpZ2hlciA0Yml0
IGlzIHVzZWQgZm9yIHBzZXVkbyBjYXJyeS9ib3Jyb3cgZHVyaW5nCisvLyBhZGRpdGlvbi9zdWJz
dHJhY3QuIFRoaXMgcmVwcmVzZW50YXRpb24gaXMgYWxzbyBrbm93biBhcyBCaW5hcnkgQ29kZWQK
Ky8vIERlY2ltYWwgKEJDRCkuCisvLworLy8gVGhpcyBjbGFzcyBpcyB1c2VkIGZvcgorLy8gIG8g
YWRkaXRpb24vc3VidHJhY3Rpb24KKy8vICBvIGNvZWZmaWNpZW50IGFsaWdubWVudCBvbiBhZGRp
dGlvbi9zdWJ0cmFjdGlvbgorLy8gIG8gc2NhbGluZyBvbiByb3VuZGluZworLy8KKy8vIEV4YW1w
bGUgb2YgQkNEIGFkZGl0aW9uOiAxNys5PTI2CisvLyAgMDEgMDcgKyAwMCAwOSA9IDAxIDEwICAg
IGFkZGl0aW9uIGluIGJpbmFyeQorLy8gIDAxIDEyICsgNzYgRjYgPSA3OCAwNiAgICBwcm9wYWdh
dGUgY2FycnkgaW4gaGlnaCBuaWJibGUgdG8gdXBwZXIgZGlnaXQgYW5kIGFkZCA2IGZvciAoYSti
ID49IDE2KQorLy8gIDc4IDA4ICYgMEYgMEYgPSAwOCAwNiAgICBjbGVhciBjYXJyaWVzCisvLyAg
NzggMDYgJiA2MCA2MCA9IDYwIDAwICAgIHByZXBhcmUgZm9yIHN1YnRyYWN0IDYuCisvLyAgMDgg
MDYgLSAwNiAwMCA9IDAyIDA2ICAgIHN1YnRyYWN0IDYgaWYgbm8gY2FycnkKK2NsYXNzIEJjZE51
bSB7CisgcHVibGljOgorICAgIEJjZE51bSgpOworICAgIGV4cGxpY2l0IEJjZE51bShjb25zdCBC
Y2ROdW0mKTsKKyAgICBleHBsaWNpdCBCY2ROdW0oY29uc3QgRGVjaW1hbDEyOEltcGw6OkVuY29k
ZWREYXRhJik7CisgICAgZXhwbGljaXQgQmNkTnVtKHVpbnQ2NF90KTsKKworICAgIGludCBkaWdp
dEF0KGludCkgY29uc3Q7CisgICAgY2hhciBkaWdpdENoYXJBdChpbnQpIGNvbnN0OworICAgIHZv
aWQgc2V0RGlnaXRBdChpbnQgZGlnaXRJbmRleCwgaW50IGRpZ2l0KTsKKworICAgIERlY2ltYWwx
MjhJbXBsIGFkZChjb25zdCBCY2ROdW0mLCBpbnQsIGludCkgY29uc3Q7CisgICAgdm9pZCBhZGRP
bmUoKTsKKyAgICBpbnQgY291bnREaWdpdHMoKSBjb25zdDsKKyAgICBEZWNpbWFsMTI4SW1wbDo6
RW5jb2RlZERhdGEgZW5jb2RlKGludCBleHBvbmVudCwgaW50IHNpZ24pIGNvbnN0OworICAgIGJv
b2wgc2hvdWxkQnVtcChpbnQpIGNvbnN0OworICAgIGludCByZW1vdmVUcmFpbGluZ1plcm9zKCk7
CisgICAgdm9pZCByb3VuZEF0KGludCk7CisgICAgdm9pZCBzaGlmdExlZnQoaW50KTsKKyAgICB2
b2lkIHNoaWZ0UmlnaHQoaW50KTsKKyAgICB2b2lkIHNoaWZ0UmlnaHRXaXRoUm91bmQoaW50KTsK
KyAgICBEZWNpbWFsMTI4SW1wbCBzdWJ0cmFjdChjb25zdCBCY2ROdW0mLCBpbnQsIGludCkgY29u
c3Q7CisKKyBwcml2YXRlOgorICAgIHN0YXRpYyBjb25zdCBpbnQgTnVtYmVyT2ZEaWdpdHNJblVu
aXQzMiA9IDQ7CisgICAgc3RhdGljIGNvbnN0IGludCBOdW1iZXJPZlVuaXQzMnMgPSA4OworICAg
IHN0YXRpYyBjb25zdCBpbnQgTnVtYmVyT2ZEaWdpdHMgPSBOdW1iZXJPZkRpZ2l0c0luVW5pdDMy
ICogTnVtYmVyT2ZVbml0MzJzOworCisgICAgdWludDMyX3QgbV93b3Jkc1tOdW1iZXJPZlVuaXQz
MnNdOworCisgICAgQmNkTnVtJiBvcGVyYXRvciA9KGNvbnN0IEJjZE51bSYpOworCisgICAgdm9p
ZCBmaWxsWmVybygpOworICAgIGJvb2wgaXNPZGQoKSBjb25zdDsKK307CisKKy8vIEJpbk51bSBy
ZXByZXNlbnQgcG9zaXRpdmUgaW50ZWdlciBpbiBtdWx0aXBsZSBwcmVjaXNpb24gbnVtYmVyIHVz
aW5nCisvLyBvbmUgYmlsbGlvbiBiYXNlLgorLy8KKy8vIFRoaXMgY2xhc3MgaXMgdXNlZCBvZiBj
YWxjdWxhdGluZyBkaXZpc2lvbiBhbmQgbXVsdGlwbHkuCitjbGFzcyBCaW5OdW0geworICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKEJpbk51bSk7CitwdWJsaWM6CisgICAgZXhwbGljaXQgQmluTnVt
KGNvbnN0IERlY2ltYWwxMjhJbXBsOjpFbmNvZGVkRGF0YSYpOworCisgICAgaW50IGRpZ2l0QXQo
aW50KSBjb25zdDsKKyAgICB1aW50MzJfdCBtb3N0U2lnbmlmaWNhbnRVbml0KGludCkgY29uc3Q7
CisgICAgaW50IG51bWJlck9mVW5pdHMoKSBjb25zdCB7IHJldHVybiBtX251bWJlck9mVW5pdHM7
IH0KKworICAgIGludCBjb252ZXJ0VG8oQmNkTnVtJikgY29uc3Q7CisgICAgRGVjaW1hbDEyOElt
cGwgZGl2aWRlKGNvbnN0IEJpbk51bSYsIGludCBleHBvbmVudCwgaW50IHNpZ24sIERlY2ltYWwx
MjhJbXBsOjpkaXZpZGVSZXN1bHQpIGNvbnN0OworICAgIERlY2ltYWwxMjhJbXBsIG11bHRpcGx5
KGNvbnN0IEJpbk51bSYsIGludCBleHBvbmVudCwgaW50IHNpZ24pIGNvbnN0OworCitwcml2YXRl
OgorICAgIHN0YXRpYyBjb25zdCBpbnQgQmlsbGlvbiA9IDEwMDAgKiAxMDAwICogMTAwMDsKKyAg
ICBzdGF0aWMgY29uc3QgaW50IEZvdXJCaWxsaW9uID0gdWludChCaWxsaW9uKSAqIDQ7CisgICAg
c3RhdGljIGNvbnN0IGludCBNaWxsaW9uID0gMTAwMCAqIDEwMDA7CisgICAgc3RhdGljIGNvbnN0
IGludCBUaG91c2FuZCA9IDEwMDA7CisKKyAgICBzdGF0aWMgY29uc3QgaW50IE51bWJlck9mRGln
aXRzSW5VaW50MzIgPSA5OworICAgIHN0YXRpYyBjb25zdCBpbnQgTnVtYmVyT2ZVbml0cyA9IDQ7
CisgICAgc3RhdGljIGNvbnN0IGludCBOdW1iZXJPZkRpZ2l0cyA9IE51bWJlck9mRGlnaXRzSW5V
aW50MzIgKiBOdW1iZXJPZlVuaXRzOworCisgICAgLy8gVGhpcyBjbGFzcyBrZWVwcyBpbnRlcm1l
ZGlhdGUgcmVzdWx0LCB3aGljaCB3aWxsIGJlIHJlbWFpbmRlciBhdCBlbmQgb2YKKyAgICAvLyBk
aXZpc2lvbi4KKyAgICBjbGFzcyBEaXZpc2lvbkFjY3VtdWxhdG9yIHsKKyAgICBwdWJsaWM6Cisg
ICAgICAgIERpdmlzaW9uQWNjdW11bGF0b3IoY29uc3QgQmluTnVtJiwgY29uc3QgQmluTnVtJik7
CisKKyAgICAgICAgdWludDMyX3QqIGxlYXN0U2lnbmlmaWNhbnRVbml0UG9pbnRlcigpIGNvbnN0
IHsgcmV0dXJuIG1fbGVhc3RTaWduaWZpY2FudFVuaXRQb2ludGVyOyB9CisgICAgICAgIHVpbnQz
Ml90KiBtb3N0U2lnbmlmaWNhbnRVbml0UG9pbnRlcigpIGNvbnN0IHsgcmV0dXJuIG1fbW9zdFNp
Z25pZmljYW50VW5pdFBvaW50ZXI7IH0KKyAgICAgICAgdWludDMyX3QgbW9zdFNpZ25pZmljYW50
VW5pdChpbnQgaykgY29uc3QgeyByZXR1cm4gbV9tb3N0U2lnbmlmaWNhbnRVbml0UG9pbnRlclst
a107IH0KKyAgICAgICAgaW50IG51bWJlck9mVW5pdHMoKSBjb25zdCB7IHJldHVybiBtX21vc3RT
aWduaWZpY2FudFVuaXRQb2ludGVyIC0gbV9sZWFzdFNpZ25pZmljYW50VW5pdFBvaW50ZXIgKyAx
OyB9CisgICAgICAgIHZvaWQgc2V0TW9zdFNpZ25pZmljYW50VW5pdChpbnQgaywgdWludDMyX3Qg
dW5pdCkgeyBtX21vc3RTaWduaWZpY2FudFVuaXRQb2ludGVyW2tdID0gdW5pdDsgfQorCisgICAg
ICAgIGludCBjb21wYXJlVG8oY29uc3QgQmluTnVtJikgY29uc3Q7CisgICAgICAgIHZvaWQgZXh0
ZW5kKCk7CisgICAgICAgIGJvb2wgaGFzTW9yZVVuaXQoKSBjb25zdCB7IHJldHVybiBtX2xlYXN0
U2lnbmlmaWNhbnRVbml0UG9pbnRlciA+IG1fZnJhY3Rpb25QYXJ0UG9pbnRlcjsgfQorICAgICAg
ICBib29sIGlzWmVybygpIGNvbnN0IHsgcmV0dXJuIG1fbW9zdFNpZ25pZmljYW50VW5pdFBvaW50
ZXIgPT0gbV9sZWFzdFNpZ25pZmljYW50VW5pdFBvaW50ZXIgJiYgISptX21vc3RTaWduaWZpY2Fu
dFVuaXRQb2ludGVyOyB9CisgICAgICAgIHZvaWQgbXVsdGlwbHlBbmRTdWJ0cmFjdChjb25zdCBC
aW5OdW0mLCB1aW50MzJfdCk7CisgICAgICAgIGludCBudW1iZXJPZlVuaXRJbkZyYWN0aW9uUGFy
dCgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhY3Rpb25QYXJ0UG9pbnRlciAtIG1fbGVhc3RTaWduaWZp
Y2FudFVuaXRQb2ludGVyOyB9CisgICAgICAgIHZvaWQgcmVtb3ZlTGVhZGluZ1plcm9zKCk7Cisg
ICAgICAgIHZvaWQgemVybygpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgdWludDMyX3QqIG1f
bGVhc3RTaWduaWZpY2FudFVuaXRQb2ludGVyOworICAgICAgICB1aW50MzJfdCogbV9mcmFjdGlv
blBhcnRQb2ludGVyOworICAgICAgICB1aW50MzJfdCogbV9tb3N0U2lnbmlmaWNhbnRVbml0UG9p
bnRlcjsKKyAgICAgICAgdWludDMyX3QgbV91bml0c1tOdW1iZXJPZlVuaXRzICogM107CisgICAg
fTsKKworICAgIC8vIGRpdmlkZSBxdW90aWVudCBuZWVkcyBOdW1iZXJPZlVuaXRzICsgMS4KKyAg
ICAvLyBNdWxpdHBseSBwcm9kdWN0IG5lZWRzIE51bWJlck9mVW5pdHMgKiAyLgorICAgIC8vIG1f
dW5pdHNbMF0gY29udGFpbnMgbGVhc3Qgc2lnbmlmaWNhbnQgZGlnaXRzLgorICAgIGludCBtX251
bWJlck9mVW5pdHM7CisgICAgdWludDMyX3QgbV91bml0c1tOdW1iZXJPZlVuaXRzICogMl07CisK
KyAgICBCaW5OdW0oaW50KTsKKyAgICB2b2lkIGZpbGxaZXJvKCk7CisgICAgdm9pZCBTaGlmdFJp
Z2goaW50IHNoaWZ0QW1vdW50KTsKKworICAgIHN0YXRpYyB1aW50MzJfdCBjYWxjdWxhdGVFc3Rp
bWF0ZWREaXZpc29yKGNvbnN0IEJpbk51bSYpOworICAgIHN0YXRpYyB1aW50MzJfdCBkaXZpZGUo
dWludDMyX3QgaGlnaCwgdWludDMyX3QgbG93LCB1aW50NjRfdCBkaXZpc29yKTsKK307CisKKy8v
IFRoaXMgY2xhc3MgaGFuZGxlcyBzcGVjaWFsIHZhbHVlIG9wZXJhbmRzIGluIGJpbmFyeSBvcGVy
YXRpb25zLgorY2xhc3MgU3BlY2lhbFZhbHVlSGFuZGxlciB7CisgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoU3BlY2lhbFZhbHVlSGFuZGxlcik7CitwdWJsaWM6CisgICAgZW51bSBIYW5kbGVSZXN1
bHQgeworICAgICAgICBCb3RoRmluaXRlLAorICAgICAgICBCb3RoaW5maW5pdHksCisgICAgICAg
IEVpdGhlck5hTiwKKyAgICAgICAgTEhTSXNpbmZpbml0eSwKKyAgICAgICAgUkhTSXNpbmZpbml0
eSwKKyAgICB9OworCisgICAgU3BlY2lhbFZhbHVlSGFuZGxlcihjb25zdCBEZWNpbWFsMTI4SW1w
bCYsIGNvbnN0IERlY2ltYWwxMjhJbXBsJik7CisgICAgRGVjaW1hbDEyOEltcGwgdmFsdWUoKSBj
b25zdDsKKyAgICBIYW5kbGVSZXN1bHQgaGFuZGxlKCk7CisKK3ByaXZhdGU6CisgICAgZW51bSBS
ZXN1bHQgeworICAgICAgICBSZXN1bHRJc0xIUywKKyAgICAgICAgUmVzdWx0SXNSSFMsCisgICAg
fTsKKworICAgIGNvbnN0IERlY2ltYWwxMjhJbXBsJiBtX2xoczsKKyAgICBSZXN1bHQgbV9yZXN1
bHQ7CisgICAgY29uc3QgRGVjaW1hbDEyOEltcGwmIG1fcmhzOworfTsKKworQmNkTnVtOjpCY2RO
dW0oKQoreworICAgIGZpbGxaZXJvKCk7Cit9CisKK0JjZE51bTo6QmNkTnVtKGNvbnN0IEJjZE51
bSYgb3BlcmFuZCkKK3sKKyAgICA6Om1lbWNweShtX3dvcmRzLCBvcGVyYW5kLm1fd29yZHMsIHNp
emVvZihtX3dvcmRzKSk7Cit9CisKKy8vIENvbnZlcnQgZGVjaW1hbDEyOCBlbmNvZGVkIGRhdGEg
aW50byBCY2ROdW0uIGRlY2ltYWwxMjggaGFzIDExIERQRCBhbmQgMQorLy8gZGlnaXQgaW4gY29t
YmluYXRpb24gZmllbGQuCitCY2ROdW06OkJjZE51bShjb25zdCBEZWNpbWFsMTI4SW1wbDo6RW5j
b2RlZERhdGEmIGRhdGEpCit7CisgICAgZmlsbFplcm8oKTsKKyAgICBmb3IgKGludCBpID0gMDsg
aSA8IERlY2ltYWwxMjhJbXBsOjpQcmVjaXNpb247ICsraSkKKyAgICAgICAgc2V0RGlnaXRBdChp
LCBkYXRhLmRpZ2l0QXQoaSkpOworfQorCisvLyBDb25zdHJ1Y3QgQmNkTnVtIGZyb20gdW5pdDY0
LgorLy8gTWF4aW11bSB2YWx1ZSBvZiB1aW50NjRfdCBpcyAxOCw0NDYsNzQ0LDA3Myw3MDksNTUx
LDYxNSAoMjAgZGlnaXQpLgorQmNkTnVtOjpCY2ROdW0odWludDY0X3QgdTY0KQoreworICAgIGZp
bGxaZXJvKCk7CisgICAgc2l6ZV90IGkgPSAwOworICAgIHdoaWxlICh1NjQgPiAwKSB7CisgICAg
ICAgIHNldERpZ2l0QXQoaSwgdTY0ICUgMTApOworICAgICAgICB1NjQgLz0gMTA7CisgICAgICAg
ICsraTsKKyAgICB9Cit9CisKK2ludCBCY2ROdW06OmRpZ2l0QXQoY29uc3QgaW50IGRpZ2l0SW5k
ZXgpIGNvbnN0Cit7CisgICAgY29uc3QgaW50IHdvcmRJbmRleCA9IGRpZ2l0SW5kZXggLyBOdW1i
ZXJPZkRpZ2l0c0luVW5pdDMyOworICAgIEFTU0VSVCh1aW50KHdvcmRJbmRleCkgPCBXVEZfQVJS
QVlfTEVOR1RIKG1fd29yZHMpKTsKKyAgICBjb25zdCBpbnQgc2hpZnQgPSAoZGlnaXRJbmRleCAl
IE51bWJlck9mRGlnaXRzSW5Vbml0MzIpICogODsKKyAgICByZXR1cm4gKG1fd29yZHNbd29yZElu
ZGV4XSA+PiBzaGlmdCkgJiAweEY7Cit9CisKK2NoYXIgQmNkTnVtOjpkaWdpdENoYXJBdChjb25z
dCBpbnQgZGlnaXRJbmRleCkgY29uc3QKK3sKKyAgICByZXR1cm4gY2hhcihkaWdpdEF0KGRpZ2l0
SW5kZXgpICsgJzAnKTsKK30KKwordm9pZCBCY2ROdW06OnNldERpZ2l0QXQoY29uc3QgaW50IGRp
Z2l0SW5kZXgsIGNvbnN0IGludCBkaWdpdCkKK3sKKyAgICBBU1NFUlQodWludChkaWdpdCkgPD0g
OXUpOworICAgIGNvbnN0IGludCB3b3JkSW5kZXggPSBkaWdpdEluZGV4IC8gTnVtYmVyT2ZEaWdp
dHNJblVuaXQzMjsKKyAgICBBU1NFUlQodWludCh3b3JkSW5kZXgpIDwgV1RGX0FSUkFZX0xFTkdU
SChtX3dvcmRzKSk7CisgICAgY29uc3QgaW50IHNoaWZ0ID0gKGRpZ2l0SW5kZXggJSBOdW1iZXJP
ZkRpZ2l0c0luVW5pdDMyKSAqIDg7CisgICAgbV93b3Jkc1t3b3JkSW5kZXhdICY9IH4oMHgwRiA8
PCBzaGlmdCk7CisgICAgbV93b3Jkc1t3b3JkSW5kZXhdIHw9IGRpZ2l0IDw8IHNoaWZ0OworfQor
CitEZWNpbWFsMTI4SW1wbCBCY2ROdW06OmFkZChjb25zdCBCY2ROdW0mIHJocywgY29uc3QgaW50
IGV4cG9uZW50LCBjb25zdCBpbnQgc2lnbikgY29uc3QKK3sKKyAgICBCY2ROdW0gcmVzdWx0Owor
ICAgIHVpbnQgY2FycnkgPSAwOworICAgIGZvciAoc2l6ZV90IGkgPSAwIDsgaSA8IFdURl9BUlJB
WV9MRU5HVEgocmVzdWx0Lm1fd29yZHMpOyBpKyspIHsKKyAgICAgICAgY2FycnkgKz0gbV93b3Jk
c1tpXSArIHJocy5tX3dvcmRzW2ldOworICAgICAgICBjYXJyeSArPSAweDc2RjZGNkY2OyAvLyBC
Q0QgYWRqdXN0bWVudAorICAgICAgICB1aW50MzJfdCBkaWdpdHMgPSBjYXJyeSAmIDB4MEYwRjBG
MEY7IC8vIGNsZWFyIGNhcnJpZXMKKyAgICAgICAgZGlnaXRzIC09IChjYXJyeSAmIDB4NjA2MDYw
NjApID4+IDQ7IC8vIEJDRCBhZGp1c3RtZW50CisgICAgICAgIHJlc3VsdC5tX3dvcmRzW2ldID0g
ZGlnaXRzOworICAgICAgICBjYXJyeSA+Pj0gMzE7CisgICAgfQorICAgIC8vIFdlIGRvbid0IGNh
cmUgY2FycnkgaGVyZS4gbV93b3JkcyBjb250YWlucyBtb3JlIGRpZ2l0cyB0aGFuIG5lZWRlZC4K
KyAgICByZXR1cm4gRGVjaW1hbDEyOEltcGwocmVzdWx0LmVuY29kZShleHBvbmVudCwgc2lnbikp
OworfQorCisvLyBEZXN0cnVjdGl2ZSBhZGRpdGlvbiBieSBvbmUuIFRoaXMgbWV0aG9kIGlzIHVz
ZWQgZm9yIHJvdW5kaW5nLgordm9pZCBCY2ROdW06OmFkZE9uZSgpCit7CisgICAgdWludCBjYXJy
eSA9IDE7CisgICAgZm9yIChzaXplX3QgaSA9IDAgOyBpIDwgV1RGX0FSUkFZX0xFTkdUSChtX3dv
cmRzKTsgaSsrKSB7CisgICAgICAgIGNhcnJ5ICs9IG1fd29yZHNbaV07CisgICAgICAgIGNhcnJ5
ICs9IDB4NzZGNkY2RjY7IC8vIEJDRCBhZGp1c3RtZW50CisgICAgICAgIHVpbnQzMl90IGRpZ2l0
cyA9IGNhcnJ5ICYgMHgwRjBGMEYwRjsgLy8gY2xlYXIgY2FycmllcworICAgICAgICBkaWdpdHMg
LT0gKGNhcnJ5ICYgMHg2MDYwNjA2MCkgPj4gNDsgLy8gQkNEIGFkanVzdG1lbnQKKyAgICAgICAg
bV93b3Jkc1tpXSA9IGRpZ2l0czsKKyAgICAgICAgY2FycnkgPj49IDMxOworICAgIH0KK30KKwor
Ly8gUmV0dXJucyBudW1iZXIgb2YgZGlnaXRzIHJlcHJlc2VudGVkIGJ5IHRoaXMgQmNkTnVtIGlu
c3RhbmNlLiBJZiB0aGlzCisvLyBvYmplY3QgcmVwcmVzZW50ZXMgMCwgdGhpcyBtZXRob2QgcmV0
dXJucyAwLgoraW50IEJjZE51bTo6Y291bnREaWdpdHMoKSBjb25zdAoreworICAgIGZvciAoaW50
IG51bWJlck9mRGlnaXRzID0gTnVtYmVyT2ZEaWdpdHM7IG51bWJlck9mRGlnaXRzOyAtLW51bWJl
ck9mRGlnaXRzKSB7CisgICAgICAgIGlmIChkaWdpdEF0KG51bWJlck9mRGlnaXRzIC0gMSkpCisg
ICAgICAgICAgICByZXR1cm4gbnVtYmVyT2ZEaWdpdHM7CisgICAgfQorICAgIHJldHVybiAwOwor
fQorCit2b2lkIEJjZE51bTo6ZmlsbFplcm8oKQoreworICAgIDo6bWVtc2V0KG1fd29yZHMsIDAs
IHNpemVvZihtX3dvcmRzKSk7Cit9CisKK0RlY2ltYWwxMjhJbXBsOjpFbmNvZGVkRGF0YSBCY2RO
dW06OmVuY29kZShjb25zdCBpbnQgZXhwb25lbnQsIGNvbnN0IGludCBzaWduKSBjb25zdAorewor
ICAgIEFTU0VSVCh1bnNpZ25lZChzaWduKSA8PSAxdSk7CisKKyAgICBCY2ROdW0gcmVzdWx0KCp0
aGlzKTsKKyAgICBjb25zdCBpbnQgbnVtYmVyT2ZEaWdpdHMgPSByZXN1bHQuY291bnREaWdpdHMo
KTsKKyAgICBpbnQgcmVzdWx0RXhwb25lbnQgPSBleHBvbmVudDsKKyAgICBjb25zdCBpbnQgbnVt
YmVyT2ZEcm9wRGlnaXRzID0gc3RkOjptYXgobnVtYmVyT2ZEaWdpdHMgLSBEZWNpbWFsMTI4SW1w
bDo6UHJlY2lzaW9uLCAtRGVjaW1hbDEyOEltcGw6OkViaWFzIC0gZXhwb25lbnQpOworCisgICAg
aWYgKG51bWJlck9mRHJvcERpZ2l0cyA+IDApIHsKKyAgICAgICAgcmVzdWx0RXhwb25lbnQgKz0g
bnVtYmVyT2ZEcm9wRGlnaXRzOworICAgICAgICBib29sIG5lZWRCdW1wID0gZmFsc2U7CisgICAg
ICAgIGlmIChudW1iZXJPZkRyb3BEaWdpdHMgPCBudW1iZXJPZkRpZ2l0cykgeworICAgICAgICAg
ICAgbmVlZEJ1bXAgPSByZXN1bHQuc2hvdWxkQnVtcChyZXN1bHQuZGlnaXRBdChudW1iZXJPZkRy
b3BEaWdpdHMgLSAxKSk7CisgICAgICAgICAgICByZXN1bHQuc2hpZnRSaWdodChudW1iZXJPZkRy
b3BEaWdpdHMpOworCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBEaXNjYXJkIGFs
bCBkaWdpdHMuCisgICAgICAgICAgICBpZiAobnVtYmVyT2ZEcm9wRGlnaXRzID09IG51bWJlck9m
RGlnaXRzKQorICAgICAgICAgICAgICAgIG5lZWRCdW1wID0gcmVzdWx0LnNob3VsZEJ1bXAocmVz
dWx0LmRpZ2l0QXQobnVtYmVyT2ZEaWdpdHMgLSAxKSk7CisgICAgICAgICAgICByZXN1bHQuc2hp
ZnRSaWdodChudW1iZXJPZkRpZ2l0cyk7CisgICAgICAgIH0KKworICAgICAgICBpZiAobmVlZEJ1
bXApIHsKKyAgICAgICAgICAgIHJlc3VsdC5hZGRPbmUoKTsKKyAgICAgICAgICAgIGlmIChyZXN1
bHQuZGlnaXRBdChEZWNpbWFsMTI4SW1wbDo6UHJlY2lzaW9uKSkgeworICAgICAgICAgICAgICAg
ICsrcmVzdWx0RXhwb25lbnQ7CisgICAgICAgICAgICAgICAgcmVzdWx0LnNoaWZ0UmlnaHQoMSk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjb25zdCBpbnQgZGlmZkV4
cG9uZW50ID0gcmVzdWx0RXhwb25lbnQgKyBEZWNpbWFsMTI4SW1wbDo6RWJpYXMgLSBEZWNpbWFs
MTI4SW1wbDo6RW1heCArIDE7CisgICAgaWYgKGRpZmZFeHBvbmVudCA+IDApIHsKKyAgICAgICAg
Y29uc3QgaW50IG51bWJlck9mRGlnaXRzID0gcmVzdWx0LmNvdW50RGlnaXRzKCk7CisgICAgICAg
IGlmICghbnVtYmVyT2ZEaWdpdHMpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0LmVuY29kZShE
ZWNpbWFsMTI4SW1wbDo6RW1heCAtIERlY2ltYWwxMjhJbXBsOjpFYmlhcyAtIDEsIHNpZ24pOwor
CisgICAgICAgIGlmIChkaWZmRXhwb25lbnQgKyBudW1iZXJPZkRpZ2l0cyA+IERlY2ltYWwxMjhJ
bXBsOjpQcmVjaXNpb24pCisgICAgICAgICAgICByZXR1cm4gRGVjaW1hbDEyOEltcGw6OmluZmlu
aXR5KHNpZ24pLnZhbHVlKCk7CisKKyAgICAgICAgcmVzdWx0LnNoaWZ0TGVmdChkaWZmRXhwb25l
bnQpOworICAgICAgICByZXN1bHRFeHBvbmVudCAtPSBkaWZmRXhwb25lbnQ7CisgICAgfQorCisg
ICAgQVNTRVJUKHJlc3VsdC5jb3VudERpZ2l0cygpIDw9IERlY2ltYWwxMjhJbXBsOjpQcmVjaXNp
b24pOworICAgIEFTU0VSVCh1aW50KHJlc3VsdEV4cG9uZW50ICsgRGVjaW1hbDEyOEltcGw6OkVi
aWFzKSA8PSB1aW50KERlY2ltYWwxMjhJbXBsOjpFbWF4KSk7CisKKyAgICBEZWNpbWFsMTI4SW1w
bDo6RW5jb2RlZERhdGEgZGF0YTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IERlY2ltYWwxMjhJ
bXBsOjpQcmVjaXNpb247ICsraSkKKyAgICAgICAgZGF0YS5zZXREaWdpdEF0KGksIHJlc3VsdC5k
aWdpdEF0KGkpKTsKKworICAgIGRhdGEuc2V0RXhwb25lbnQocmVzdWx0RXhwb25lbnQpOworICAg
IGRhdGEuc2V0U2lnbihzaWduKTsKKworICAgIHJldHVybiBkYXRhOworfQorCitib29sIEJjZE51
bTo6aXNPZGQoKSBjb25zdAoreworICAgIHJldHVybiBkaWdpdEF0KDApICYgMTsKK30KKworLy8g
UmV0dXJucyB0cnVlIGlmIHdlIG5lZWQgdG8gYnVtcCByZXN1bHQgZm9sbG93aW5nIElFRUU3NTQg
aGFsZi1ldmVuCisvLyByb3VuZGluZyBydWxlLgorYm9vbCBCY2ROdW06OnNob3VsZEJ1bXAoY29u
c3QgaW50IGRpZ2l0KSBjb25zdAoreworICAgIHJldHVybiBkaWdpdCA+IDUgfHwgKGRpZ2l0ID09
IDUgJiYgaXNPZGQoKSk7Cit9CisKKy8vIFJlbW92aW5nIHRyYWlsaW5nIHplcm9zIGFuZCByZXR1
cm5zIG51bWJlciBvZiB6ZXJvcyByZW1vdmVkLgoraW50IEJjZE51bTo6cmVtb3ZlVHJhaWxpbmda
ZXJvcygpCit7CisgICAgaW50IG51bWJlck9mWmVyb3MgPSAwOworICAgIHdoaWxlIChudW1iZXJP
Zlplcm9zIDwgTnVtYmVyT2ZEaWdpdHMgJiYgIWRpZ2l0QXQobnVtYmVyT2ZaZXJvcykpCisgICAg
ICAgICsrbnVtYmVyT2ZaZXJvczsKKworICAgIGlmIChudW1iZXJPZlplcm9zKQorICAgICAgICBz
aGlmdFJpZ2h0KG51bWJlck9mWmVyb3MpOworCisgICAgcmV0dXJuIG51bWJlck9mWmVyb3M7Cit9
CisKK3ZvaWQgQmNkTnVtOjpyb3VuZEF0KGNvbnN0IGludCBudW1iZXJPZlJlc3VsdERpZ2l0cykK
K3sKKyAgICBBU1NFUlQobnVtYmVyT2ZSZXN1bHREaWdpdHMgPj0gMSk7CisgICAgY29uc3QgaW50
IG51bWJlck9mRGlnaXRzID0gY291bnREaWdpdHMoKTsKKyAgICBjb25zdCBpbnQgbnVtYmVyT2ZF
eHRyYURpZ2l0cyA9IG51bWJlck9mRGlnaXRzIC0gbnVtYmVyT2ZSZXN1bHREaWdpdHM7CisgICAg
aWYgKG51bWJlck9mRXh0cmFEaWdpdHMgPiAwKQorICAgICAgICBzaGlmdFJpZ2h0V2l0aFJvdW5k
KG51bWJlck9mRXh0cmFEaWdpdHMpOworfQorCit2b2lkIEJjZE51bTo6c2hpZnRMZWZ0KGNvbnN0
IGludCBzaGlmdEFtb3VudCkKK3sKKyAgICBBU1NFUlQoc2hpZnRBbW91bnQgPj0gMCk7CisgICAg
QVNTRVJUKHNoaWZ0QW1vdW50IDwgTnVtYmVyT2ZEaWdpdHMpOworCisgICAgY29uc3QgaW50IHdv
cmRDb3VudCA9IHNoaWZ0QW1vdW50IC8gTnVtYmVyT2ZEaWdpdHNJblVuaXQzMjsKKyAgICBjb25z
dCBpbnQgYnl0ZUNvdW50ID0gc2hpZnRBbW91bnQgJSBOdW1iZXJPZkRpZ2l0c0luVW5pdDMyOwor
CisgICAgaWYgKHdvcmRDb3VudCkgeworICAgICAgICBpbnQgaiA9IE51bWJlck9mVW5pdDMycyAt
IDE7CisgICAgICAgIHdoaWxlIChqID49IHdvcmRDb3VudCkgeworICAgICAgICAgICAgbV93b3Jk
c1tqXSA9IG1fd29yZHNbaiAtIHdvcmRDb3VudF07CisgICAgICAgICAgICAtLWo7CisgICAgICAg
IH0KKyAgICAgICAgd2hpbGUgKGogPj0gMCkgeworICAgICAgICAgICAgbV93b3Jkc1tqXSA9IDA7
CisgICAgICAgICAgICAtLWo7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoYnl0ZUNvdW50
KSB7CisgICAgICAgIGNvbnN0IGludCBsZWZ0U2hpZnRBbW91bnQgPSBieXRlQ291bnQgKiA4Owor
ICAgICAgICBjb25zdCBpbnQgcmlnaHRTaGlmdEFtb3VudCA9IDMyIC0gbGVmdFNoaWZ0QW1vdW50
OworICAgICAgICB1aW50MzJfdCBjYXJyeSA9IDA7CisgICAgICAgIGZvciAoaW50IGogPSAwOyBq
IDwgTnVtYmVyT2ZVbml0MzJzOyBqKyspIHsKKyAgICAgICAgICAgIGNvbnN0IHVpbnQzMl90IG5l
d0NhcnJ5ID0gbV93b3Jkc1tqXSA+PiByaWdodFNoaWZ0QW1vdW50OworICAgICAgICAgICAgbV93
b3Jkc1tqXSA8PD0gbGVmdFNoaWZ0QW1vdW50OworICAgICAgICAgICAgbV93b3Jkc1tqXSB8PSBj
YXJyeTsKKyAgICAgICAgICAgIGNhcnJ5ID0gbmV3Q2Fycnk7CisgICAgICAgIH0KKyAgICB9Cit9
CisKK3ZvaWQgQmNkTnVtOjpzaGlmdFJpZ2h0KGNvbnN0IGludCBzaGlmdEFtb3VudCkKK3sKKyAg
ICBBU1NFUlQoc2hpZnRBbW91bnQgPj0gMCk7CisKKyAgICBpZiAoIXNoaWZ0QW1vdW50KQorICAg
ICAgICByZXR1cm47CisKKyAgICBpZiAoc2hpZnRBbW91bnQgPj0gTnVtYmVyT2ZEaWdpdHMpIHsK
KyAgICAgICAgZmlsbFplcm8oKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNvbnN0
IGludCB3b3JkQ291bnQgPSBzaGlmdEFtb3VudCAvIE51bWJlck9mRGlnaXRzSW5Vbml0MzI7Cisg
ICAgY29uc3QgaW50IGJ5dGVDb3VudCA9IHNoaWZ0QW1vdW50ICUgTnVtYmVyT2ZEaWdpdHNJblVu
aXQzMjsKKworICAgIGlmICh3b3JkQ291bnQpIHsKKyAgICAgICAgc2l6ZV90IGogPSAwOworICAg
ICAgICB3aGlsZSAoaiArIHdvcmRDb3VudCA8IFdURl9BUlJBWV9MRU5HVEgobV93b3JkcykpIHsK
KyAgICAgICAgICAgIG1fd29yZHNbal0gPSBtX3dvcmRzW2ogKyB3b3JkQ291bnRdOworICAgICAg
ICAgICAgKytqOworICAgICAgICB9CisgICAgICAgIHdoaWxlIChqIDwgV1RGX0FSUkFZX0xFTkdU
SChtX3dvcmRzKSkgeworICAgICAgICAgICAgbV93b3Jkc1tqXSA9IDA7CisgICAgICAgICAgICAr
K2o7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoYnl0ZUNvdW50KSB7CisgICAgICAgIGNv
bnN0IGludCByaWdodFNoaWZ0QW1vdW50ID0gYnl0ZUNvdW50ICogODsKKyAgICAgICAgY29uc3Qg
aW50IGxlZnRTaGlmdEFtb3VudCA9IDMyIC0gcmlnaHRTaGlmdEFtb3VudDsKKyAgICAgICAgY29u
c3QgdWludDMyX3QgbWFzayA9ICgxIDw8IHJpZ2h0U2hpZnRBbW91bnQpIC0gMTsKKyAgICAgICAg
dWludDMyX3QgY2FycnkgPSAwOworICAgICAgICBmb3IgKGludCBqID0gTnVtYmVyT2ZVbml0MzJz
IC0gMTsgaiA+PSAwOyAtLWopIHsKKyAgICAgICAgICAgIGNvbnN0IHVpbnQzMl90IG5ld0NhcnJ5
ID0gbV93b3Jkc1tqXSAmIG1hc2s7CisgICAgICAgICAgICBtX3dvcmRzW2pdID4+PSByaWdodFNo
aWZ0QW1vdW50OworICAgICAgICAgICAgbV93b3Jkc1tqXSB8PSBjYXJyeSA8PCBsZWZ0U2hpZnRB
bW91bnQ7CisgICAgICAgICAgICBjYXJyeSA9IG5ld0NhcnJ5OworICAgICAgICB9CisgICAgfQor
fQorCisvLyBTaGlmdCBkaWdpdHMgdG8gcmlnaHQgYnkgc3BlY2lmaWVkIHNoaWZ0IGFtb3VudCBh
bmQgcm91bmRpbmcgYXQgZGlzY2FyZGVkCisvLyBkaWdpdC4KK3ZvaWQgQmNkTnVtOjpzaGlmdFJp
Z2h0V2l0aFJvdW5kKGNvbnN0IGludCBzaGlmdEFtb3VudCkKK3sKKyAgICBBU1NFUlQoc2hpZnRB
bW91bnQgPj0gMCk7CisKKyAgICBpZiAoIXNoaWZ0QW1vdW50KQorICAgICAgICByZXR1cm47CisK
KyAgICBjb25zdCBpbnQgbnVtYmVyT2ZEaWdpdHMgPSBjb3VudERpZ2l0cygpOworICAgIGNvbnN0
IGludCBudW1iZXJPZk5ld0RpZ2l0cyA9IG51bWJlck9mRGlnaXRzIC0gc2hpZnRBbW91bnQ7Cisg
ICAgaWYgKG51bWJlck9mTmV3RGlnaXRzID4gMCkgeworICAgICAgICBib29sIGNvbnN0IG5lZWRC
dW1wID0gc2hvdWxkQnVtcChkaWdpdEF0KHNoaWZ0QW1vdW50IC0gMSkpOworICAgICAgICBzaGlm
dFJpZ2h0KHNoaWZ0QW1vdW50KTsKKyAgICAgICAgaWYgKG5lZWRCdW1wKQorICAgICAgICAgICAg
YWRkT25lKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIW51bWJlck9mTmV3
RGlnaXRzKSB7CisgICAgICAgIGJvb2wgY29uc3QgbmVlZEJ1bXAgPSBzaG91bGRCdW1wKGRpZ2l0
QXQobnVtYmVyT2ZEaWdpdHMgLSAxKSk7CisgICAgICAgIGZpbGxaZXJvKCk7CisgICAgICAgIGlm
IChuZWVkQnVtcCkKKyAgICAgICAgICAgIHNldERpZ2l0QXQoMCwgMSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICAvLyBudW1iZXJPZk5ld0RpZ2l0cyA8IDAKKyAgICBmaWxsWmVybygp
OworfQorCitEZWNpbWFsMTI4SW1wbCBCY2ROdW06OnN1YnRyYWN0KGNvbnN0IEJjZE51bSYgcmhz
LCBjb25zdCBpbnQgZXhwb25lbnQsIGNvbnN0IGludCBzaWduKSBjb25zdAoreworICAgIHVpbnQg
Y2FycnkgPSAxOworICAgIEJjZE51bSByZXN1bHQ7CisgICAgZm9yIChzaXplX3QgaSA9IDAgOyBp
IDwgV1RGX0FSUkFZX0xFTkdUSChyZXN1bHQubV93b3Jkcyk7IGkrKykgeworICAgICAgICBjYXJy
eSArPSBtX3dvcmRzW2ldICsgMHgwOTA5MDkwOSAtIHJocy5tX3dvcmRzW2ldOworICAgICAgICBj
YXJyeSArPSAweDc2RjZGNkY2OyAvLyBCQ0QgYWRqdXN0bWVudAorICAgICAgICB1aW50MzJfdCBk
aWdpdHMgPSBjYXJyeSAmIDB4MEYwRjBGMEY7IC8vIGNsZWFyIGNhcnJpZXMKKyAgICAgICAgZGln
aXRzIC09IChjYXJyeSAmIDB4NjA2MDYwNjApID4+IDQ7IC8vIEJDRCBhZGp1c3RtZW50CisgICAg
ICAgIHJlc3VsdC5tX3dvcmRzW2ldID0gZGlnaXRzOworICAgICAgICBjYXJyeSA+Pj0gMzE7Cisg
ICAgfQorCisgICAgaWYgKCFjYXJyeSkgeworICAgICAgICAvLyBOZWdhdGUgcmVzdWx0LCBzaW5j
ZSBMSFMgaXMgc21hbGxlciB0aGFuIFJIUy4KKyAgICAgICAgdWludCBjYXJyeSA9IDE7CisgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwIDsgaSA8IFdURl9BUlJBWV9MRU5HVEgocmVzdWx0Lm1fd29y
ZHMpOyBpKyspIHsKKyAgICAgICAgICAgIGNhcnJ5ICs9IDB4MDkwOTA5MDkgLSByZXN1bHQubV93
b3Jkc1tpXTsKKyAgICAgICAgICAgIGNhcnJ5ICs9IDB4NzZGNkY2RjY7IC8vIEJDRCBhZGp1c3Rt
ZW50CisgICAgICAgICAgICB1aW50MzJfdCBkaWdpdHMgPSBjYXJyeSAmIDB4MEYwRjBGMEY7IC8v
IGNsZWFyIGNhcnJpZXMKKyAgICAgICAgICAgIGRpZ2l0cyAtPSAoY2FycnkgJiAweDYwNjA2MDYw
KSA+PiA0OyAvLyBCQ0QgYWRqdXN0bWVudAorICAgICAgICAgICAgcmVzdWx0Lm1fd29yZHNbaV0g
PSBkaWdpdHM7CisgICAgICAgICAgICBjYXJyeSA+Pj0gMzE7CisgICAgICAgIH0KKyAgICAgICAg
cmV0dXJuIERlY2ltYWwxMjhJbXBsKHJlc3VsdC5lbmNvZGUoZXhwb25lbnQsIHNpZ24gXiAxKSk7
CisgICAgfQorCisgICAgcmV0dXJuIERlY2ltYWwxMjhJbXBsKHJlc3VsdC5lbmNvZGUoZXhwb25l
bnQsIHNpZ24pKTsKK30KKworQmluTnVtOjpEaXZpc2lvbkFjY3VtdWxhdG9yOjpEaXZpc2lvbkFj
Y3VtdWxhdG9yKGNvbnN0IEJpbk51bSYgbGhzLCBjb25zdCBCaW5OdW0mIHJocykKK3sKKyAgICA6
Om1lbXNldChtX3VuaXRzLCAwLCBzaXplb2YobV91bml0cykpOworICAgIG1fbW9zdFNpZ25pZmlj
YW50VW5pdFBvaW50ZXIgPSBtX3VuaXRzICsgV1RGX0FSUkFZX0xFTkdUSChtX3VuaXRzKSAtIDE7
CisgICAgbV9mcmFjdGlvblBhcnRQb2ludGVyID0gbV9tb3N0U2lnbmlmaWNhbnRVbml0UG9pbnRl
ciAtIGxocy5udW1iZXJPZlVuaXRzKCkgKyAxOworICAgIG1fbGVhc3RTaWduaWZpY2FudFVuaXRQ
b2ludGVyID0gbV91bml0cyArIFdURl9BUlJBWV9MRU5HVEgobV91bml0cykgLSByaHMubnVtYmVy
T2ZVbml0cygpOworICAgIDo6bWVtY3B5KG1fZnJhY3Rpb25QYXJ0UG9pbnRlciwgbGhzLm1fdW5p
dHMsIHNpemVvZigqbV91bml0cykgKiBsaHMubnVtYmVyT2ZVbml0cygpKTsKK30KKworaW50IEJp
bk51bTo6RGl2aXNpb25BY2N1bXVsYXRvcjo6Y29tcGFyZVRvKGNvbnN0IEJpbk51bSYgb3BlcmFu
ZCkgY29uc3QKK3sKKyAgICBpZiAoY29uc3QgaW50IGRpZmZVbml0cyA9IG51bWJlck9mVW5pdHMo
KSAtIG9wZXJhbmQubnVtYmVyT2ZVbml0cygpKQorICAgICAgICByZXR1cm4gZGlmZlVuaXRzOwor
CisgICAgdWludDMyX3QqIGFjY3VtdWxhdG9yUG9pbnRlciA9IG1fbW9zdFNpZ25pZmljYW50VW5p
dFBvaW50ZXI7CisgICAgY29uc3QgdWludDMyX3QqIG9wZXJhbmRQb2ludGVyID0gb3BlcmFuZC5t
X3VuaXRzICsgb3BlcmFuZC5udW1iZXJPZlVuaXRzKCkgLSAxOworICAgIHdoaWxlIChvcGVyYW5k
UG9pbnRlciA+PSBvcGVyYW5kLm1fdW5pdHMpIHsKKyAgICAgICAgaWYgKHB0cmRpZmZfdCBjb25z
dCBkaWZmID0gKmFjY3VtdWxhdG9yUG9pbnRlciAtICpvcGVyYW5kUG9pbnRlcikKKyAgICAgICAg
ICAgIHJldHVybiBkaWZmOworICAgICAgICAtLWFjY3VtdWxhdG9yUG9pbnRlcjsKKyAgICAgICAg
LS1vcGVyYW5kUG9pbnRlcjsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgQmluTnVt
OjpEaXZpc2lvbkFjY3VtdWxhdG9yOjpleHRlbmQoKQoreworICAgIEFTU0VSVChtX2xlYXN0U2ln
bmlmaWNhbnRVbml0UG9pbnRlciA+IG1fdW5pdHMpOworICAgIC0tbV9sZWFzdFNpZ25pZmljYW50
VW5pdFBvaW50ZXI7Cit9CisKKy8vIEZ1c2VkIG11bHRpcGx5IGFuZCBzdWJ0cmFjdCBmb3IgY2Fs
Y3VsYXRpbmcKKy8vICAgICBhY2N1bXVsYXRvciAtPSBkaXZpc29yICogcXVvdGllbnQKK3ZvaWQg
QmluTnVtOjpEaXZpc2lvbkFjY3VtdWxhdG9yOjptdWx0aXBseUFuZFN1YnRyYWN0KGNvbnN0IEJp
bk51bSYgZGl2aXNvciwgY29uc3QgdWludDMyX3QgcXVvdGllbnQpCit7CisgICAgQVNTRVJUKHF1
b3RpZW50ICE9IDB1KTsKKyAgICB1aW50MzJfdCogYWNjdW11bGF0b3JQb2ludGVyID0gbV9sZWFz
dFNpZ25pZmljYW50VW5pdFBvaW50ZXI7CisgICAgdWludDMyX3QgYm9ycm93ID0gMDsKKyAgICBm
b3IgKGludCBpID0gMDsgaSA8IGRpdmlzb3IubnVtYmVyT2ZVbml0cygpOyArK2kpIHsKKyAgICAg
ICAgY29uc3QgdWludDY0X3Qgc3ViNjQgPSB1aW50NjRfdChkaXZpc29yLm1fdW5pdHNbaV0pICog
cXVvdGllbnQgKyBib3Jyb3c7CisgICAgICAgIGJvcnJvdyA9IHVpbnQzMl90KHN1YjY0IC8gQmls
bGlvbik7CisgICAgICAgIGNvbnN0IHVpbnQzMl90IHN1YjMyID0gdWludDMyX3Qoc3ViNjQgJSBC
aWxsaW9uKTsKKyAgICAgICAgQVNTRVJUKGFjY3VtdWxhdG9yUG9pbnRlciA8PSBtX21vc3RTaWdu
aWZpY2FudFVuaXRQb2ludGVyKTsKKyAgICAgICAgaWYgKHN1YjMyID4gKmFjY3VtdWxhdG9yUG9p
bnRlcikgeworICAgICAgICAgICAgKmFjY3VtdWxhdG9yUG9pbnRlciArPSBCaWxsaW9uIC0gc3Vi
MzI7CisgICAgICAgICAgICArK2JvcnJvdzsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAq
YWNjdW11bGF0b3JQb2ludGVyIC09IHN1YjMyOworICAgICAgICBBU1NFUlQoKmFjY3VtdWxhdG9y
UG9pbnRlciA8IHVpbnQoQmlsbGlvbikpOworICAgICAgICBhY2N1bXVsYXRvclBvaW50ZXIrKzsK
KyAgICB9CisKKyAgICBpZiAoYm9ycm93KSB7CisgICAgICAgIEFTU0VSVChhY2N1bXVsYXRvclBv
aW50ZXIgPD0gbV9tb3N0U2lnbmlmaWNhbnRVbml0UG9pbnRlcik7CisgICAgICAgIEFTU0VSVCgq
YWNjdW11bGF0b3JQb2ludGVyID49IGJvcnJvdyk7CisgICAgICAgICphY2N1bXVsYXRvclBvaW50
ZXIgLT0gYm9ycm93OworICAgIH0KK30KKwordm9pZCBCaW5OdW06OkRpdmlzaW9uQWNjdW11bGF0
b3I6OnJlbW92ZUxlYWRpbmdaZXJvcygpCit7CisgICAgd2hpbGUgKG1fbW9zdFNpZ25pZmljYW50
VW5pdFBvaW50ZXIgPiBtX2xlYXN0U2lnbmlmaWNhbnRVbml0UG9pbnRlciAmJiAhKm1fbW9zdFNp
Z25pZmljYW50VW5pdFBvaW50ZXIpCisgICAgICAgIC0tbV9tb3N0U2lnbmlmaWNhbnRVbml0UG9p
bnRlcjsKK30KKwordm9pZCBCaW5OdW06OkRpdmlzaW9uQWNjdW11bGF0b3I6Onplcm8oKQorewor
ICAgIG1fbW9zdFNpZ25pZmljYW50VW5pdFBvaW50ZXIgPSBtX2xlYXN0U2lnbmlmaWNhbnRVbml0
UG9pbnRlcjsKKyAgICAqbV9tb3N0U2lnbmlmaWNhbnRVbml0UG9pbnRlciA9IDA7Cit9CisKK0Jp
bk51bTo6QmluTnVtKGNvbnN0IERlY2ltYWwxMjhJbXBsOjpFbmNvZGVkRGF0YSYgZGF0YSkKK3sK
KyAgICBmaWxsWmVybygpOworCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBEZWNpbWFsMTI4SW1w
bDo6UHJlY2lzaW9uOyArK2kpCisgICAgICAgIG1fdW5pdHNbaSAvIE51bWJlck9mRGlnaXRzSW5V
aW50MzJdICs9IGRhdGEuZGlnaXRBdChpKSAqIFBvd2VyKDEwLCBpICUgTnVtYmVyT2ZEaWdpdHNJ
blVpbnQzMik7CisKKyAgICAvLyBSZW1vdmUgbGVhZGluZyB6ZXJvcworICAgIG1fbnVtYmVyT2ZV
bml0cyA9IDQ7CisgICAgd2hpbGUgKG1fbnVtYmVyT2ZVbml0cyA+IDAgJiYgIW1fdW5pdHNbbV9u
dW1iZXJPZlVuaXRzIC0gMV0pCisgICAgICAgIC0tbV9udW1iZXJPZlVuaXRzOworfQorCisvLyBu
dW1iZXJPZlVuaXRzIGNhbiBiZSB6ZXJvIHdoZW4gMCB4IDAuCitCaW5OdW06OkJpbk51bShjb25z
dCBpbnQgbnVtYmVyT2ZVbml0cykKK3sKKyAgICBBU1NFUlQobnVtYmVyT2ZVbml0cyA+PSAwKTsK
KyAgICBBU1NFUlQobnVtYmVyT2ZVbml0cyA8PSBpbnQoV1RGX0FSUkFZX0xFTkdUSChtX3VuaXRz
KSkpOworICAgIG1fbnVtYmVyT2ZVbml0cyA9IG51bWJlck9mVW5pdHM7CisgICAgZmlsbFplcm8o
KTsKK30KKworLy8gZGlnaXRJbmRleCA9IDAgPT0gbGVhc3Qgc2lnbmlmaWNhbnQgZGlnaXQKK2lu
dCBCaW5OdW06OmRpZ2l0QXQoY29uc3QgaW50IGRpZ2l0SW5kZXgpIGNvbnN0Cit7CisgICAgQVNT
RVJUKHVpbnQoZGlnaXRJbmRleCkgPCB1aW50KG1fbnVtYmVyT2ZVbml0cyAqIE51bWJlck9mRGln
aXRzSW5VaW50MzIpKTsKKyAgICBjb25zdCBpbnQgdW5pdEluZGV4ID0gZGlnaXRJbmRleCAvIE51
bWJlck9mRGlnaXRzSW5VaW50MzI7CisgICAgY29uc3QgaW50IGRpZ2l0Q29sdW1uID0gZGlnaXRJ
bmRleCAlIE51bWJlck9mRGlnaXRzSW5VaW50MzI7CisgICAgcmV0dXJuIChtX3VuaXRzW3VuaXRJ
bmRleF0gLyBQb3dlcigxMCwgZGlnaXRDb2x1bW4pKSAlIDEwOworfQorCisvLyBSZWFkZXIgb2Yg
bnRoIHVuaXQgZnJvbSBtb3N0IHNpZ25pZmljYW50IHVuaXQuCit1aW50MzJfdCBCaW5OdW06Om1v
c3RTaWduaWZpY2FudFVuaXQoY29uc3QgaW50IGspIGNvbnN0Cit7CisgICAgQVNTRVJUKGsgPj0g
MCk7CisgICAgQVNTRVJUKGsgPCBudW1iZXJPZlVuaXRzKCkpOworICAgIHJldHVybiBtX3VuaXRz
W251bWJlck9mVW5pdHMoKSAtIGsgLSAxXTsKK30KKworLy8gQ2FsY3VsYXRlcyBlc3RpbWF0ZWQg
cXVvdGllbnQgZnJvbSBtb3N0IHNpZ25pZmljYW5kIHVuaXQgYW5kIG1vc3QKKy8vIHNpZ25maWNh
bnQgMmJpdCBmcm9tIG5leHQgdW5pdCBvZiBkaXZpc29yLgordWludDMyX3QgQmluTnVtOjpjYWxj
dWxhdGVFc3RpbWF0ZWREaXZpc29yKGNvbnN0IEJpbk51bSYgZGl2aXNvcikKK3sKKyAgICB1aW50
MzJfdCBlc3RpbWF0ZSA9IGRpdmlzb3IubW9zdFNpZ25pZmljYW50VW5pdCgwKSAqIDQ7CisgICAg
aWYgKGRpdmlzb3IubnVtYmVyT2ZVbml0cygpID09IDEpCisgICAgICAgIHJldHVybiBlc3RpbWF0
ZTsKKworICAgIHVpbnQzMl90IHJlc3QgPSBkaXZpc29yLm1vc3RTaWduaWZpY2FudFVuaXQoMSk7
CisgICAgaWYgKGRpdmlzb3IubW9zdFNpZ25pZmljYW50VW5pdCgxKSA+PSA3NTAgKiBNaWxsaW9u
KSB7CisgICAgICAgIGVzdGltYXRlICs9IDM7CisgICAgICAgIHJlc3QgLT0gNzUwICogTWlsbGlv
bjsKKworICAgIH0gZWxzZSBpZiAoZGl2aXNvci5tb3N0U2lnbmlmaWNhbnRVbml0KDEpID49IDUw
MCAqIE1pbGxpb24pIHsKKyAgICAgICAgZXN0aW1hdGUgKz0gMjsKKyAgICAgICAgcmVzdCAtPSA1
MDAgKiBNaWxsaW9uOworCisgICAgfSBlbHNlIGlmIChkaXZpc29yLm1vc3RTaWduaWZpY2FudFVu
aXQoMSkgPj0gMjUwICogTWlsbGlvbikgeworICAgICAgICArK2VzdGltYXRlOworICAgICAgICBy
ZXN0IC09IDI1MCAqIE1pbGxpb247CisgICAgfQorCisgICAgaWYgKHJlc3QpCisgICAgICAgIHJl
dHVybiBlc3RpbWF0ZSArIDE7CisKKyAgICBmb3IgKGludCBpID0gZGl2aXNvci5udW1iZXJPZlVu
aXRzKCkgLSAyOyBpID49IDA7IC0taSkgeworICAgICAgICBpZiAoZGl2aXNvci5tX3VuaXRzW2ld
KSB7CisgICAgICAgICAgICArK2VzdGltYXRlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICByZXR1cm4gZXN0aW1hdGU7Cit9CisKKy8vIENvbnZlcnQgQmluTnVt
IGZyb20gbW9zdCBzaWduaWZpY2FudCB1bml0IHRvIGxlYXN0IHNpZ25maWNhbnQgdW5pdCBpbnRv
CisvLyBCY2ROdW0gYW5kIHJldHVybnMgbnVtYmVyIG9mIGRpZ2l0cyBub3QgdG8gc3RvcmUgaW50
byBCY2ROdW0uCitpbnQgQmluTnVtOjpjb252ZXJ0VG8oQmNkTnVtJiByZXN1bHQpIGNvbnN0Cit7
CisgICAgLy8gU2tpcCBsZWFkaW5nIHplcm9zCisgICAgaW50IGJpbkRpZ2l0SW5kZXggPSBudW1i
ZXJPZlVuaXRzKCkgKiBOdW1iZXJPZkRpZ2l0c0luVWludDMyIC0gMTsKKyAgICB3aGlsZSAoYmlu
RGlnaXRJbmRleCA+IDApIHsKKyAgICAgICAgaWYgKGRpZ2l0QXQoYmluRGlnaXRJbmRleCkpCisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgLS1iaW5EaWdpdEluZGV4OworICAgIH0KKworICAg
IC8vIFRha2Uga0RpZ2l0KzEgZnJvbSBCaW5OdW0uCisgICAgaW50IGJjZERpZ2l0SW5kZXggPSBE
ZWNpbWFsMTI4SW1wbDo6UHJlY2lzaW9uOworICAgIHdoaWxlIChiY2REaWdpdEluZGV4ID49IDAg
JiYgYmluRGlnaXRJbmRleCA+PSAwKSB7CisgICAgICAgIGNvbnN0IGludCBkaWdpdCA9IGRpZ2l0
QXQoYmluRGlnaXRJbmRleCk7CisgICAgICAgIHJlc3VsdC5zZXREaWdpdEF0KGJjZERpZ2l0SW5k
ZXgsIGRpZ2l0KTsKKyAgICAgICAgLS1iaW5EaWdpdEluZGV4OworICAgICAgICAtLWJjZERpZ2l0
SW5kZXg7CisgICAgfQorCisgICAgaWYgKGJpbkRpZ2l0SW5kZXggPCAwKQorICAgICAgICByZXN1
bHQuc2hpZnRSaWdodChiY2REaWdpdEluZGV4ICsgMSk7CisgICAgZWxzZQorICAgICAgICByZXN1
bHQuc2hpZnRSaWdodFdpdGhSb3VuZChiY2REaWdpdEluZGV4ICsgMSk7CisKKyAgICByZXR1cm4g
YmluRGlnaXRJbmRleCArIDE7Cit9CisKKy8vIGRpdmlkZSBiYXNlIGJpbGxpb24gaW50ZWdlciBi
eSBiYXNlIGJpbGxpb24gaW50ZWdlci4KK3VpbnQzMl90IEJpbk51bTo6ZGl2aWRlKGNvbnN0IHVp
bnQzMl90IGhpZ2gsIGNvbnN0IHVpbnQzMl90IGxvdywgY29uc3QgdWludDY0X3QgZGl2aXNvcikK
K3sKKyAgICByZXR1cm4gdWludDMyX3QoKHVpbnQ2NF90KGhpZ2gpICogQmlsbGlvbiArIGxvdykg
LyBkaXZpc29yKTsKK30KKworLy8gZGl2aWRlIEJpbk51bSBieSBCaW5OdW0uIGRpdmlzb3IgbXVz
dCBub3QgYmUgemVyby4KK0RlY2ltYWwxMjhJbXBsIEJpbk51bTo6ZGl2aWRlKGNvbnN0IEJpbk51
bSYgZGl2aXNvciwgY29uc3QgaW50IHF1b3RpZW50RXhwb25lbnQsIGNvbnN0IGludCBxdW90aWVu
dFNpZ24sIERlY2ltYWwxMjhJbXBsOjpkaXZpZGVSZXN1bHQgY29uc3QgcXVvdGllbnRUeXBlKSBj
b25zdAoreworICAgIGNvbnN0IEJpbk51bSYgZGl2aWRlbmQgPSAqdGhpczsKKyAgICBjb25zdCB1
aW50NjRfdCBkaXZpc29yNjQgPQorICAgICAgICBkaXZpc29yLm51bWJlck9mVW5pdHMoKSA+IDIK
KyAgICAgICAgICAgICAgICA/IHVpbnQ2NF90KGRpdmlzb3IubW9zdFNpZ25pZmljYW50VW5pdCgw
KSkgKiBCaWxsaW9uICsgZGl2aXNvci5tb3N0U2lnbmlmaWNhbnRVbml0KDEpICsgMQorICAgICAg
ICAgICAgICAgIDogZGl2aXNvci5udW1iZXJPZlVuaXRzKCkgPiAxID8gdWludDY0X3QoZGl2aXNv
ci5tb3N0U2lnbmlmaWNhbnRVbml0KDApKSAqIEJpbGxpb24gKyBkaXZpc29yLm1vc3RTaWduaWZp
Y2FudFVuaXQoMSkgOiAwOworCisgICAgY29uc3QgdWludDMyX3QgZXN0aW1hdGVkRGl2aXNvciA9
IGNhbGN1bGF0ZUVzdGltYXRlZERpdmlzb3IoZGl2aXNvcik7CisgICAgQVNTRVJUKGVzdGltYXRl
ZERpdmlzb3IgPiAwdSk7CisgICAgY29uc3QgdWludDMyX3QgaW52ZXJzZUVzdGltYXRlZERpdmlz
b3IgPSBGb3VyQmlsbGlvbiAvIGVzdGltYXRlZERpdmlzb3I7CisKKyAgICBCaW5OdW0gcXVvdGll
bnQoTnVtYmVyT2ZVbml0cyArIDEpOworICAgIGludCBxdW90aWVudFVuaXRJbmRleCA9IHF1b3Rp
ZW50Lm51bWJlck9mVW5pdHMoKSAtIDE7CisKKyAgICAvLyBHZW5lcmF0ZSBxdW90aWVudCBmcm9t
IG1vc3Qgc2lnbmlmaWNhbnQgdW5pdCB0byBsZWFzdCBzaWduaWZpY2FudCB1bml0CisgICAgLy8g
dW50aWw6CisgICAgLy8gICAgbyBHZXQgZW5vdWdoIHVuaXRzIG9mIHF1b3RpZW50LCBvcgorICAg
IC8vICAgIG8gVGhlIGFjY3VtdWxhdG9yIGlzIHNtYWxsZXIgdGhhbiBkaXZpc29yLgorICAgIC8v
IEF0IHRoZSBlbmQgb2YgbG9vcCwgYWNjdW11bGF0b3IgY29udGFpbnMgcmVtYWluZGVyLgorICAg
IERpdmlzaW9uQWNjdW11bGF0b3IgYWNjdW11bGF0b3IoZGl2aWRlbmQsIGRpdmlzb3IpOworICAg
IGZvciAoOzspIHsKKyAgICAgICAgLy8gc3VidHJhY3QgcXVvdGllbnQgdGltZXMgZGl2aXNvciBm
cm9tIGFjY3VtbGF0b3IgdW50aWwgYWNjdW11bGF0b3IKKyAgICAgICAgLy8gaXMgZ3JlYXRlciB0
aGFuIGRpdmlzb3IuCisgICAgICAgIGZvciAoOzspIHsKKyAgICAgICAgICAgIGFjY3VtdWxhdG9y
LnJlbW92ZUxlYWRpbmdaZXJvcygpOworICAgICAgICAgICAgaWYgKGFjY3VtdWxhdG9yLmlzWmVy
bygpKQorICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjb25zdCBpbnQgZGlm
ZiA9IGFjY3VtdWxhdG9yLmNvbXBhcmVUbyhkaXZpc29yKTsKKyAgICAgICAgICAgIGlmIChkaWZm
IDwgMCkKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgaWYgKCFkaWZmKSB7
CisgICAgICAgICAgICAgICAgcXVvdGllbnQubV91bml0c1txdW90aWVudFVuaXRJbmRleF0gKz0g
MTsKKyAgICAgICAgICAgICAgICBhY2N1bXVsYXRvci56ZXJvKCk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNvbnN0IHVpbnQzMl90IHBhcnRp
YWxRdW90aWVudCA9CisgICAgICAgICAgICAgICAgYWNjdW11bGF0b3IubnVtYmVyT2ZVbml0cygp
ID09IGRpdmlzb3IubnVtYmVyT2ZVbml0cygpCisgICAgICAgICAgICAgICAgICAgICAgICA/IGRp
dmlzb3IubnVtYmVyT2ZVbml0cygpID4gMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA/IGRpdmlkZShhY2N1bXVsYXRvci5tb3N0U2lnbmlmaWNhbnRVbml0KDApLCBhY2N1bXVsYXRv
ci5tb3N0U2lnbmlmaWNhbnRVbml0KDEpLCBkaXZpc29yNjQpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDogYWNjdW11bGF0b3IubW9zdFNpZ25pZmljYW50VW5pdCgwKSAvIGRpdmlz
b3IubW9zdFNpZ25pZmljYW50VW5pdCgwKQorICAgICAgICAgICAgICAgIDogYWNjdW11bGF0b3Iu
bW9zdFNpZ25pZmljYW50VW5pdCgwKSAqIGludmVyc2VFc3RpbWF0ZWREaXZpc29yOworCisgICAg
ICAgICAgICBjb25zdCB1aW50MzJfdCBpbmNyZW1lbnRBbW91bnQgPSBzdGQ6Om1heChwYXJ0aWFs
UXVvdGllbnQsIDF1KTsKKyAgICAgICAgICAgIHF1b3RpZW50Lm1fdW5pdHNbcXVvdGllbnRVbml0
SW5kZXhdICs9IGluY3JlbWVudEFtb3VudDsKKyAgICAgICAgICAgIGFjY3VtdWxhdG9yLm11bHRp
cGx5QW5kU3VidHJhY3QoZGl2aXNvciwgaW5jcmVtZW50QW1vdW50KTsKKyAgICAgICAgfQorCisg
ICAgICAgIC8vIHF1b3RpZW50Lm1vc3RTaWduaWZpY2FudFVuaXQoMCkgY2FuIGJlIHplcm8gaWYg
ZGl2aWRlbmQgaXMgc21hbGxlciB0aGFuIGRpdmlzb3IsCisgICAgICAgIC8vIGUuZy4gMS8yLgor
ICAgICAgICBpZiAocXVvdGllbnQubW9zdFNpZ25pZmljYW50VW5pdCgwKSkgeworICAgICAgICAg
ICAgLS1xdW90aWVudFVuaXRJbmRleDsKKyAgICAgICAgICAgIGlmIChxdW90aWVudFVuaXRJbmRl
eCA8IDApCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBpZiAo
IWFjY3VtdWxhdG9yLm1vc3RTaWduaWZpY2FudFVuaXQoMCkgJiYgIWFjY3VtdWxhdG9yLmhhc01v
cmVVbml0KCkpIHsKKyAgICAgICAgICAgIGFjY3VtdWxhdG9yLnJlbW92ZUxlYWRpbmdaZXJvcygp
OworICAgICAgICAgICAgaWYgKGFjY3VtdWxhdG9yLmlzWmVybygpKQorICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisgICAgICAgIGFjY3VtdWxhdG9yLmV4dGVuZCgpOworICAgIH0K
KworICAgIHF1b3RpZW50LlNoaWZ0UmlnaChxdW90aWVudFVuaXRJbmRleCArIDEpOworCisgICAg
QmNkTnVtIHJlc3VsdDsKKyAgICBjb25zdCBpbnQgb3ZlcmZsb3cgPSBxdW90aWVudC5jb252ZXJ0
VG8ocmVzdWx0KTsKKyAgICBpbnQgcmVzdWx0RXhwb25lbnQgPSBxdW90aWVudEV4cG9uZW50ICsg
b3ZlcmZsb3c7CisKKyAgICBjb25zdCBpbnQgayA9IGFjY3VtdWxhdG9yLm51bWJlck9mVW5pdElu
RnJhY3Rpb25QYXJ0KCk7CisgICAgaWYgKGsgPiAwKSB7CisgICAgICAgIHJlc3VsdEV4cG9uZW50
IC09IGsgKiBOdW1iZXJPZkRpZ2l0c0luVWludDMyOworICAgICAgICBpZiAoIWFjY3VtdWxhdG9y
Lm1vc3RTaWduaWZpY2FudFVuaXQoMCkpIHsKKyAgICAgICAgICAgIC8vIFdoZW4gcXVvdGllbnQg
aXMgZXhhY3QsIHRoZXJlIG1heSBiZSB1cCB0byA4IGV4dHJhIHRyYWlsaW5nCisgICAgICAgICAg
ICAvLyB6ZXJvcy4KKyAgICAgICAgICAgIHJlc3VsdEV4cG9uZW50ICs9IHJlc3VsdC5yZW1vdmVU
cmFpbGluZ1plcm9zKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzd2l0Y2ggKHF1b3RpZW50
VHlwZSkgeworICAgIGNhc2UgRGVjaW1hbDEyOEltcGw6OkZsb2F0UmVzdWx0OgorICAgICAgICBy
ZXR1cm4gRGVjaW1hbDEyOEltcGwocmVzdWx0LmVuY29kZShyZXN1bHRFeHBvbmVudCwgcXVvdGll
bnRTaWduKSk7CisKKyAgICBjYXNlIERlY2ltYWwxMjhJbXBsOjpJbnRlZ2VyUmVzdWx0OiB7Cisg
ICAgICAgIGNvbnN0IGludCBudW1iZXJPZlF1b3RpZW50RGlnaXRzID0gcmVzdWx0LmNvdW50RGln
aXRzKCk7CisgICAgICAgIGlmIChudW1iZXJPZlF1b3RpZW50RGlnaXRzICsgcmVzdWx0RXhwb25l
bnQgPiBEZWNpbWFsMTI4SW1wbDo6UHJlY2lzaW9uKSB7CisgICAgICAgICAgICAvLyBRdW90aWVu
dCBpcyB0b28gbGFyZ2UgZm9yIGludGVnZXIuCisgICAgICAgICAgICByZXR1cm4gRGVjaW1hbDEy
OEltcGw6OnF1aWV0TmFOKDApOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHJlc3VsdEV4cG9u
ZW50ID49IDApIHsKKyAgICAgICAgICAgIHJlc3VsdC5zaGlmdFJpZ2h0V2l0aFJvdW5kKHJlc3Vs
dEV4cG9uZW50KTsKKyAgICAgICAgICAgIHJldHVybiBEZWNpbWFsMTI4SW1wbChyZXN1bHQuZW5j
b2RlKHJlc3VsdEV4cG9uZW50LCBxdW90aWVudFNpZ24pKTsKKyAgICAgICAgfQorCisgICAgICAg
IC8vIERyb3AgZnJhY3Rpb24gb2YgcXVvdGllbnQuCisgICAgICAgIGNvbnN0IGludCBudW1iZXJP
ZkRyb3BEaWdpdHMgPSAtcmVzdWx0RXhwb25lbnQ7CisgICAgICAgIGlmIChudW1iZXJPZlF1b3Rp
ZW50RGlnaXRzID4gbnVtYmVyT2ZEcm9wRGlnaXRzKSB7CisgICAgICAgICAgICByZXN1bHQuc2hp
ZnRSaWdodChudW1iZXJPZkRyb3BEaWdpdHMpOworICAgICAgICAgICAgcmV0dXJuIERlY2ltYWwx
MjhJbXBsKHJlc3VsdC5lbmNvZGUoMCwgcXVvdGllbnRTaWduKSk7CisgICAgICAgIH0KKworICAg
ICAgICByZXR1cm4gRGVjaW1hbDEyOEltcGw6Onplcm8ocXVvdGllbnRTaWduKTsKKyAgICB9CisK
KyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0
dXJuIERlY2ltYWwxMjhJbXBsOjpxdWlldE5hTigwKTsKKyAgICB9Cit9CisKK3ZvaWQgQmluTnVt
OjpmaWxsWmVybygpCit7CisgICAgOjptZW1zZXQobV91bml0cywgMCwgc2l6ZW9mKG1fdW5pdHMp
KTsKK30KKworLy8gbXVsdGlwbHkgbGhzIGJ5IHJocyBpbnRvIHByb2R1Y3QuCitEZWNpbWFsMTI4
SW1wbCBCaW5OdW06Om11bHRpcGx5KGNvbnN0IEJpbk51bSYgcmhzLCBjb25zdCBpbnQgcHJvZHVj
dEV4cG9uZW50LCBjb25zdCBpbnQgcmVzdWx0U2lnbikgY29uc3QKK3sKKyAgICBCaW5OdW0gcHJv
ZHVjdChudW1iZXJPZlVuaXRzKCkgKyByaHMubnVtYmVyT2ZVbml0cygpKTsKKyAgICBpbnQgcHJv
ZHVjdFVuaXRJbmRleCA9IDA7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1iZXJPZlVuaXRz
KCk7IGkrKykgeworICAgICAgICB1aW50MzJfdCBjYXJyeSA9IDA7CisgICAgICAgIGludCBrID0g
cHJvZHVjdFVuaXRJbmRleDsKKyAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCByaHMubnVtYmVy
T2ZVbml0cygpOyBqKyspIHsKKyAgICAgICAgICAgIGNvbnN0IHVpbnQ2NF90IHU2NCA9IHVpbnQ2
NF90KG1fdW5pdHNbaV0pICogcmhzLm1fdW5pdHNbal0gKyBjYXJyeSArIHByb2R1Y3QubV91bml0
c1trXTsKKyAgICAgICAgICAgIGNhcnJ5ID0gdWludDMyX3QodTY0IC8gQmlsbGlvbik7CisgICAg
ICAgICAgICBwcm9kdWN0Lm1fdW5pdHNba10gPSB1aW50MzJfdCh1NjQgJSBCaWxsaW9uKTsKKyAg
ICAgICAgICAgICsrazsKKyAgICAgICAgfQorICAgICAgICBwcm9kdWN0Lm1fdW5pdHNba10gPSBj
YXJyeTsKKyAgICAgICAgKytwcm9kdWN0VW5pdEluZGV4OworICAgIH0KKworICAgIEJjZE51bSBy
ZXN1bHQ7CisgICAgY29uc3QgaW50IG92ZXJmbG93ID0gcHJvZHVjdC5jb252ZXJ0VG8ocmVzdWx0
KTsKKyAgICBjb25zdCBpbnQgcmVzdWx0RXhwb25lbnQgPSBwcm9kdWN0RXhwb25lbnQgKyBvdmVy
ZmxvdzsKKyAgICByZXR1cm4gRGVjaW1hbDEyOEltcGwocmVzdWx0LmVuY29kZShyZXN1bHRFeHBv
bmVudCwgcmVzdWx0U2lnbikpOworfQorCit2b2lkIEJpbk51bTo6U2hpZnRSaWdoKGNvbnN0IGlu
dCBzaGlmdEFtb3VudCkKK3sKKyAgICBBU1NFUlQoc2hpZnRBbW91bnQgPj0gMCk7CisgICAgQVNT
RVJUKHNoaWZ0QW1vdW50IDw9IG1fbnVtYmVyT2ZVbml0cyk7CisgICAgaW50IGkgPSAwOworICAg
IHdoaWxlIChpICsgc2hpZnRBbW91bnQgPCBtX251bWJlck9mVW5pdHMpIHsKKyAgICAgICAgbV91
bml0c1tpXSA9IG1fdW5pdHNbaSArIHNoaWZ0QW1vdW50XTsKKyAgICAgICAgKytpOworICAgIH0K
KyAgICB3aGlsZSAoaSA8IG1fbnVtYmVyT2ZVbml0cykgeworICAgICAgICBtX3VuaXRzW2ldID0g
MDsKKyAgICAgICAgKytpOworICAgIH0KKyAgICBtX251bWJlck9mVW5pdHMgLT0gc2hpZnRBbW91
bnQ7Cit9CisKK1NwZWNpYWxWYWx1ZUhhbmRsZXI6OlNwZWNpYWxWYWx1ZUhhbmRsZXIoY29uc3Qg
RGVjaW1hbDEyOEltcGwmIGxocywgY29uc3QgRGVjaW1hbDEyOEltcGwmIHJocykKKyAgICA6IG1f
bGhzKGxocykKKyAgICAsIG1fcmVzdWx0KFJlc3VsdElzTEhTKQorICAgICwgbV9yaHMocmhzKQor
eworfQorCitEZWNpbWFsMTI4SW1wbCBTcGVjaWFsVmFsdWVIYW5kbGVyOjp2YWx1ZSgpIGNvbnN0
Cit7CisgICAgc3dpdGNoIChtX3Jlc3VsdCkgeworICAgIGNhc2UgUmVzdWx0SXNMSFM6CisgICAg
ICAgIHJldHVybiBtX2xoczsKKyAgICBjYXNlIFJlc3VsdElzUkhTOgorICAgICAgICByZXR1cm4g
bV9yaHM7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgIHJldHVybiBEZWNpbWFsMTI4SW1wbDo6cXVpZXROYU4obV9saHMuc2lnbigpKTsKKyAgICB9
Cit9CisKK1NwZWNpYWxWYWx1ZUhhbmRsZXI6OkhhbmRsZVJlc3VsdCBTcGVjaWFsVmFsdWVIYW5k
bGVyOjpoYW5kbGUoKQoreworICAgIGlmIChtX2xocy5pc0Zpbml0ZSgpICYmIG1fcmhzLmlzRmlu
aXRlKCkpCisgICAgICAgIHJldHVybiBCb3RoRmluaXRlOworCisgICAgY29uc3QgRGVjaW1hbDEy
OEltcGw6OkllZWVDbGFzcyBsaHNDbGFzcyA9IG1fbGhzLmllZWVDbGFzcygpOworICAgIGNvbnN0
IERlY2ltYWwxMjhJbXBsOjpJZWVlQ2xhc3MgcmhzQ2xhc3MgPSBtX3Jocy5pZWVlQ2xhc3MoKTsK
KworICAgIGlmIChsaHNDbGFzcyA9PSBEZWNpbWFsMTI4SW1wbDo6Q2xhc3NRdWlldE5hTikgewor
ICAgICAgICBtX3Jlc3VsdCA9IFJlc3VsdElzTEhTOworICAgICAgICByZXR1cm4gRWl0aGVyTmFO
OworICAgICB9CisKKyAgICBpZiAocmhzQ2xhc3MgPT0gRGVjaW1hbDEyOEltcGw6OkNsYXNzUXVp
ZXROYU4pIHsKKyAgICAgICAgbV9yZXN1bHQgPSBSZXN1bHRJc1JIUzsKKyAgICAgICAgcmV0dXJu
IEVpdGhlck5hTjsKKyAgICAgfQorCisgICAgIGlmIChsaHNDbGFzcyA9PSBEZWNpbWFsMTI4SW1w
bDo6Q2xhc3NJbmZpbml0eSkKKyAgICAgICAgIHJldHVybiByaHNDbGFzcyA9PSBEZWNpbWFsMTI4
SW1wbDo6Q2xhc3NJbmZpbml0eSA/IEJvdGhpbmZpbml0eSA6IExIU0lzaW5maW5pdHk7CisKKyAg
ICAgaWYgKHJoc0NsYXNzID09IERlY2ltYWwxMjhJbXBsOjpDbGFzc0luZmluaXR5KQorICAgICAg
ICAgcmV0dXJuIFJIU0lzaW5maW5pdHk7CisKKyAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgIHJldHVybiBCb3RoRmluaXRlOworfQorCit9IC8vIG5hbWVzcGFjZQorCitpbnQgRGVjaW1h
bDEyOEltcGw6OkVuY29kZWREYXRhOjpkaWdpdEF0KGNvbnN0IGludCBkaWdpdEluZGV4KSBjb25z
dAoreworICAgIEFTU0VSVChkaWdpdEluZGV4ID49IDApOworICAgIEFTU0VSVChkaWdpdEluZGV4
IDwgUHJlY2lzaW9uKTsKKyAgICBjb25zdCBpbnQgd29yZEluZGV4ID0gZGlnaXRJbmRleCAvIE51
bWJlck9mRGlnaXRzSW5VaW50MzI7CisgICAgY29uc3QgaW50IHNoaWZ0QW1vdW50ID0gKGRpZ2l0
SW5kZXggJSBOdW1iZXJPZkRpZ2l0c0luVWludDMyKSAqIDQ7CisgICAgcmV0dXJuIChtX3dvcmRz
W3dvcmRJbmRleF0gPj4gc2hpZnRBbW91bnQpICYgMHhGOworfQorCitpbnQgRGVjaW1hbDEyOElt
cGw6OkVuY29kZWREYXRhOjpleHBvbmVudEJpYXNlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuICht
X3dvcmRzWzNdICYgRXhwb25lbnRNYXNrKSA+PiBFeHBvbmVudFNoaWZ0OworfQorCit2b2lkIERl
Y2ltYWwxMjhJbXBsOjpFbmNvZGVkRGF0YTo6c2V0RGlnaXRBdChjb25zdCBpbnQgZGlnaXRJbmRl
eCwgY29uc3QgaW50IGRpZ2l0KQoreworICAgIEFTU0VSVChkaWdpdEluZGV4ID49IDApOworICAg
IEFTU0VSVChkaWdpdEluZGV4IDw9IFByZWNpc2lvbik7CisgICAgQVNTRVJUKHVuc2lnbmVkKGRp
Z2l0KSA8PSA5KTsKKyAgICBjb25zdCBpbnQgd29yZEluZGV4ID0gZGlnaXRJbmRleCAvIE51bWJl
ck9mRGlnaXRzSW5VaW50MzI7CisgICAgY29uc3QgaW50IHNoaWZ0QW1vdW50ID0gKGRpZ2l0SW5k
ZXggJSBOdW1iZXJPZkRpZ2l0c0luVWludDMyKSAqIDQ7CisKKyAgICBtX3dvcmRzW3dvcmRJbmRl
eF0gJj0gfigweEYgPDwgc2hpZnRBbW91bnQpOworICAgIG1fd29yZHNbd29yZEluZGV4XSB8PSBk
aWdpdCA8PCBzaGlmdEFtb3VudDsKK30KKwordm9pZCBEZWNpbWFsMTI4SW1wbDo6RW5jb2RlZERh
dGE6OnNldEV4cG9uZW50KGNvbnN0IGludCBleHBvbmVudCkKK3sKKyAgICBjb25zdCBpbnQgYmlh
c2VkRXhwb25lbnQgPSBleHBvbmVudCArIEViaWFzOworICAgIEFTU0VSVCh1aW50KGJpYXNlZEV4
cG9uZW50KSA8PSB1aW50KEVtYXgpKTsKKyAgICBtX3dvcmRzWzNdICY9IH5FeHBvbmVudE1hc2s7
CisgICAgbV93b3Jkc1szXSB8PSBiaWFzZWRFeHBvbmVudCA8PCBFeHBvbmVudFNoaWZ0OworfQor
Cit2b2lkIERlY2ltYWwxMjhJbXBsOjpFbmNvZGVkRGF0YTo6c2V0U2lnbihpbnQgdmFsdWUpCit7
CisgICAgaWYgKHZhbHVlKQorICAgICAgICBtX3dvcmRzWzNdIHw9IDF1IDw8IDMxOworICAgIGVs
c2UKKyAgICAgICAgbV93b3Jkc1szXSAmPSAoMXUgPDwgMzEpIC0gMTsKK30KKworRGVjaW1hbDEy
OEltcGw6OkRlY2ltYWwxMjhJbXBsKCkKK3sKKyAgICA6Om1lbXNldChtX2RhdGEubV93b3Jkcywg
MCwgc2l6ZW9mKG1fZGF0YS5tX3dvcmRzKSk7Cit9CisKK0RlY2ltYWwxMjhJbXBsOjpEZWNpbWFs
MTI4SW1wbChjb25zdCBFbmNvZGVkRGF0YSYgZGF0YSkKKyAgICA6IG1fZGF0YShkYXRhKQorewor
fQorCisvLyBDb25zdHJ1Y3Qgc3BlY2lhbCB2YWx1ZS4KK0RlY2ltYWwxMjhJbXBsOjpEZWNpbWFs
MTI4SW1wbChpbnQgY29uc3Qgc2lnbiwgdWludDMyX3QgY29uc3QgcG9zaXRpdmVfaGlnaF93b3Jk
LCB1aW50MzJfdCBjb25zdCBuZWdhdGl2ZV9oaWdoX3dvcmQpCit7CisgICAgbV9kYXRhLm1fd29y
ZHNbMF0gPSAwOworICAgIG1fZGF0YS5tX3dvcmRzWzFdID0gMDsKKyAgICBtX2RhdGEubV93b3Jk
c1syXSA9IDA7CisgICAgbV9kYXRhLm1fd29yZHNbM10gPSBzaWduID8gbmVnYXRpdmVfaGlnaF93
b3JkIDogcG9zaXRpdmVfaGlnaF93b3JkOworfQorCitEZWNpbWFsMTI4SW1wbDo6RGVjaW1hbDEy
OEltcGwoY29uc3QgaW50IHNpZ24sIGNvbnN0IHVpbnQ2NF90IHU2NCkKKyAgICA6IG1fZGF0YShC
Y2ROdW0odTY0KS5lbmNvZGUoMCwgc2lnbikpCit7Cit9CisKK0RlY2ltYWwxMjhJbXBsOjpEZWNp
bWFsMTI4SW1wbChpbnQzMl90IHZhbHVlKQorICAgIDogbV9kYXRhKHZhbHVlID49IDAgPyBCY2RO
dW0odWludDY0X3QodmFsdWUpKS5lbmNvZGUoMCwgMCkgOiBCY2ROdW0odWludDY0X3QoLXZhbHVl
KSkuZW5jb2RlKDAsIDEpKQoreworfQorCitEZWNpbWFsMTI4SW1wbDo6RGVjaW1hbDEyOEltcGwo
ZG91YmxlIGNvbnN0IGY2NCkKK3sKKyAgICBGbG9hdDY0SW1wbCB2YWx1ZShmNjQpOworCisgICAg
c3dpdGNoICh2YWx1ZS5pZWVlQ2xhc3MoKSkgeworICAgIGNhc2UgQ2xhc3NJbmZpbml0eToKKyAg
ICAgICAgKnRoaXMgPSBpbmZpbml0eSh2YWx1ZS5zaWduKCkpOworICAgICAgICByZXR1cm47CisK
KyAgICBjYXNlIENsYXNzTm9ybWFsOiB7CisgICAgICAgIERlY2ltYWwxMjhJbXBsIHNpZ25maWNh
bmQodmFsdWUuc2lnbigpLCB2YWx1ZS5zaWduaWZpY2FuZCgpKTsKKyAgICAgICAgY29uc3QgaW50
IGV4cG9uZW50ID0gdmFsdWUuZXhwb25lbnQoKSAtIEZsb2F0NjRJbXBsOjpTaWduaWZpY2FuZEJp
dHM7CisgICAgICAgIGlmICghZXhwb25lbnQpIHsKKyAgICAgICAgICAgICp0aGlzID0gc2lnbmZp
Y2FuZDsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChleHBv
bmVudCA+IDApIHsKKyAgICAgICAgICAgIGNvbnN0IERlY2ltYWwxMjhJbXBsIHBvd2VyMihQb3dl
cihEZWNpbWFsMTI4SW1wbCgyKSwgZXhwb25lbnQpKTsKKyAgICAgICAgICAgICp0aGlzID0gKHNp
Z25maWNhbmQgKiBwb3dlcjIpLnJvdW5kQXQoRmxvYXQ2NEltcGw6Ok51bWJlck9mRGlnaXRzKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGNvbnN0IERlY2ltYWwx
MjhJbXBsIHBvd2VyMihQb3dlcihEZWNpbWFsMTI4SW1wbCgyKSwgLWV4cG9uZW50KSk7CisgICAg
ICAgICp0aGlzID0gKHNpZ25maWNhbmQgLyBwb3dlcjIpLnJvdW5kQXQoRmxvYXQ2NEltcGw6Ok51
bWJlck9mRGlnaXRzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNhc2UgQ2xhc3NR
dWlldE5hTjoKKyAgICBjYXNlIENsYXNzU2lnbmFsaW5nTmFOOgorICAgICAgICAqdGhpcyA9IHF1
aWV0TmFOKHZhbHVlLnNpZ24oKSk7CisgICAgICAgIHJldHVybjsKKworICAgIGNhc2UgQ2xhc3NT
dWJub3JtYWw6IHsKKyAgICAgICAgRGVjaW1hbDEyOEltcGwgc2lnbmZpY2FuZCh2YWx1ZS5zaWdu
KCksIHZhbHVlLnJhd1NpZ25pZmljYW5kKCkpOworICAgICAgICBjb25zdCBEZWNpbWFsMTI4SW1w
bCBwb3dlcjIoUG93ZXIoRGVjaW1hbDEyOEltcGwoMiksIC1GbG9hdDY0SW1wbDo6RXN1Ym5vcm1h
bCkpOworICAgICAgICAqdGhpcyA9IChzaWduZmljYW5kIC8gcG93ZXIyKS5yb3VuZEF0KEZsb2F0
NjRJbXBsOjpOdW1iZXJPZkRpZ2l0cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBj
YXNlIENsYXNzWmVybzoKKyAgICAgICAgKnRoaXMgPSB6ZXJvKHZhbHVlLnNpZ24oKSk7CisgICAg
ICAgIHJldHVybjsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICByZXR1cm47CisgICAgfQorfQorCitEZWNpbWFsMTI4SW1wbDo6RGVjaW1hbDEy
OEltcGwoY29uc3QgRGVjaW1hbDEyOEltcGwmIG9wZXJhbmQpCisgICAgOiBtX2RhdGEob3BlcmFu
ZC5tX2RhdGEpCit7Cit9CisKKy8vIG9wZXJhdG9ycworRGVjaW1hbDEyOEltcGw6Om9wZXJhdG9y
IGRvdWJsZSgpIGNvbnN0Cit7CisgICAgc3dpdGNoIChpZWVlQ2xhc3MoKSkgeworICAgIGNhc2Ug
Q2xhc3NJbmZpbml0eToKKyAgICAgICAgcmV0dXJuIEZsb2F0NjRJbXBsKHNpZ24oKSA/IEZsb2F0
NjRCaXRzOjpOZWdhdGl2ZUluZmluaXR5UGF0dGVybiA6IEZsb2F0NjRCaXRzOjpQb3NpdGl2ZUlu
ZmluaXR5UGF0dGVybik7CisKKyAgICBjYXNlIENsYXNzUXVpZXROYU46CisgICAgICAgIHJldHVy
biBGbG9hdDY0SW1wbChzaWduKCkgPyBGbG9hdDY0Qml0czo6TmVnYXRpdmVRdWlldE5hTlBhdHRl
cm4gOiBGbG9hdDY0Qml0czo6UG9zaXRpdmVRdWlldE5hTlBhdHRlcm4pOworCisgICAgY2FzZSBD
bGFzc1NpZ25hbGluZ05hTjoKKyAgICAgICAgcmV0dXJuIEZsb2F0NjRJbXBsKHNpZ24oKSA/IEZs
b2F0NjRCaXRzOjpOZWdhdGl2ZVNpZ25hbGluZ05hTlBhdHRlcm4gOiBGbG9hdDY0Qml0czo6UG9z
aXRpdmVTaWduYWxpbmdOYU5QYXR0ZXJuKTsKKworICAgIGNhc2UgQ2xhc3NOb3JtYWw6IHsKKyAg
ICAgICAgY29uc3QgaW50IGV4cCA9IGV4cG9uZW50KCk7CisgICAgICAgIGlmIChleHAgPCBEQkxf
TUlOXzEwX0VYUCkKKyAgICAgICAgICAgIHJldHVybiBGbG9hdDY0SW1wbChzaWduKCkgPyBGbG9h
dDY0Qml0czo6TmVnYXRpdmVaZXJvUGF0dGVybiA6IEZsb2F0NjRCaXRzOjpQb3NpdGl2ZVplcm9Q
YXR0ZXJuKTsKKworICAgICAgICBpZiAoZXhwID4gREJMX01BWF8xMF9FWFApCisgICAgICAgICAg
ICByZXR1cm4gRmxvYXQ2NEltcGwoc2lnbigpID8gRmxvYXQ2NEJpdHM6Ok5lZ2F0aXZlSW5maW5p
dHlQYXR0ZXJuIDogRmxvYXQ2NEJpdHM6OlBvc2l0aXZlSW5maW5pdHlQYXR0ZXJuKTsKKworICAg
ICAgICBCY2ROdW0gYmNkTnVtKG1fZGF0YSk7CisgICAgICAgIGNvbnN0IGludCBudW1iZXJPZkRp
Z2l0cyA9IGJjZE51bS5jb3VudERpZ2l0cygpOworICAgICAgICBkb3VibGUgeCA9IDA7CisgICAg
ICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG51bWJlck9mRGlnaXRzOyBpKyspIHsKKyAgICAgICAg
ICAgIHggKj0gMTA7CisgICAgICAgICAgICB4ICs9IGJjZE51bS5kaWdpdEF0KG51bWJlck9mRGln
aXRzIC0gaSk7CisgICAgICAgIH0KKworICAgICAgICBjb25zdCBkb3VibGUgeSA9IGV4cCA+PSAw
ID8geCAqIFBvd2VyKDEwLjAsIGV4cCkgOiB4IC8gUG93ZXIoMTAuMCwgLWV4cCk7CisgICAgICAg
IHJldHVybiBzaWduKCkgPyAteSA6IHk7CisgICAgfQorCisgICAgY2FzZSBDbGFzc1N1Ym5vcm1h
bDoKKyAgICAgICAgLy8gU3Vibm9ybWFsIHZhbHVlIG9mIERlY2ltYWwxMjhJbXBsIGlzIHRvbyBz
bWFsbCBmb3IgZG91YmxlLiBXZSByZXR1cm4KKyAgICAgICAgLy8gKzAgb3IgLTAuCisgICAgICAg
IHJldHVybiBGbG9hdDY0SW1wbChzaWduKCkgPyBGbG9hdDY0Qml0czo6TmVnYXRpdmVaZXJvUGF0
dGVybiA6IEZsb2F0NjRCaXRzOjpQb3NpdGl2ZVplcm9QYXR0ZXJuKTsKKworICAgIGNhc2UgQ2xh
c3NaZXJvOgorICAgICAgICByZXR1cm4gRmxvYXQ2NEltcGwoc2lnbigpID8gRmxvYXQ2NEJpdHM6
Ok5lZ2F0aXZlWmVyb1BhdHRlcm4gOiBGbG9hdDY0Qml0czo6UG9zaXRpdmVaZXJvUGF0dGVybik7
CisKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgfQorfQorCitEZWNpbWFsMTI4SW1wbCYgRGVjaW1hbDEyOEltcGw6Om9w
ZXJhdG9yID0oY29uc3QgRGVjaW1hbDEyOEltcGwmIG9wZXJhbmQpCit7CisgICAgbV9kYXRhID0g
b3BlcmFuZC5tX2RhdGE7CisgICAgcmV0dXJuICp0aGlzOworfQorCitEZWNpbWFsMTI4SW1wbCBE
ZWNpbWFsMTI4SW1wbDo6b3BlcmF0b3IgKyhjb25zdCBEZWNpbWFsMTI4SW1wbCYgcmhzKSBjb25z
dAoreworICAgIGNvbnN0IERlY2ltYWwxMjhJbXBsJiBsaHMgPSAqdGhpczsKKyAgICBjb25zdCBp
bnQgbGhzU2lnbiA9IGxocy5zaWduKCk7CisgICAgY29uc3QgaW50IHJoc1NpZ24gPSByaHMuc2ln
bigpOworCisgICAgU3BlY2lhbFZhbHVlSGFuZGxlciBoYW5kbGVyKGxocywgcmhzKTsKKyAgICBz
d2l0Y2ggKGhhbmRsZXIuaGFuZGxlKCkpIHsKKyAgICBjYXNlIFNwZWNpYWxWYWx1ZUhhbmRsZXI6
OkJvdGhGaW5pdGU6CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBTcGVjaWFsVmFsdWVIYW5k
bGVyOjpCb3RoaW5maW5pdHk6CisgICAgICAgIHJldHVybiBsaHNTaWduID09IHJoc1NpZ24gPyBs
aHMgOiBxdWlldE5hTigwKTsKKworICAgIGNhc2UgU3BlY2lhbFZhbHVlSGFuZGxlcjo6RWl0aGVy
TmFOOgorICAgICAgICByZXR1cm4gaGFuZGxlci52YWx1ZSgpOworCisgICAgY2FzZSBTcGVjaWFs
VmFsdWVIYW5kbGVyOjpMSFNJc2luZmluaXR5OgorICAgICAgICByZXR1cm4gbGhzOworCisgICAg
Y2FzZSBTcGVjaWFsVmFsdWVIYW5kbGVyOjpSSFNJc2luZmluaXR5OgorICAgICAgICByZXR1cm4g
cmhzOworICAgIH0KKworICAgIEFTU0VSVChsaHMuaXNGaW5pdGUoKSAmJiByaHMuaXNGaW5pdGUo
KSk7CisKKyAgICBCY2ROdW0gbGhzQmNkTnVtKGxocy5tX2RhdGEpOworICAgIEJjZE51bSByaHNC
Y2ROdW0ocmhzLm1fZGF0YSk7CisKKyAgICBjb25zdCBpbnQgbGhzRXhwb25lbnQgPSBsaHMuZXhw
b25lbnQoKTsKKyAgICBjb25zdCBpbnQgcmhzRXhwb25lbnQgPSByaHMuZXhwb25lbnQoKTsKKyAg
ICBpbnQgcmVzdWx0RXhwb25lbnQgPSBzdGQ6Om1pbihsaHNFeHBvbmVudCwgcmhzRXhwb25lbnQp
OworCisgICAgLy8gTWFrZSBjb2VmZmljaWVudCBhbGlnbmVkLgorICAgIGlmIChsaHNFeHBvbmVu
dCA+IHJoc0V4cG9uZW50KSB7CisgICAgICAgIGNvbnN0IGludCBsaHNOdW1iZXJPZkRpZ2l0cyA9
IGxoc0JjZE51bS5jb3VudERpZ2l0cygpOworICAgICAgICBpZiAobGhzTnVtYmVyT2ZEaWdpdHMp
IHsKKyAgICAgICAgICAgIGNvbnN0IGludCBsaHNTaGlmdEFtb3VudCA9IGxoc0V4cG9uZW50IC0g
cmhzRXhwb25lbnQ7CisgICAgICAgICAgICBjb25zdCBpbnQgb3ZlcmZsb3cgPSBsaHNOdW1iZXJP
ZkRpZ2l0cyArIGxoc1NoaWZ0QW1vdW50IC0gKE51bWJlck9mRGlnaXRzICsgMSk7CisgICAgICAg
ICAgICBpZiAob3ZlcmZsb3cgPD0gMCkKKyAgICAgICAgICAgICAgICBsaHNCY2ROdW0uc2hpZnRM
ZWZ0KGxoc1NoaWZ0QW1vdW50KTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAg
IGxoc0JjZE51bS5zaGlmdExlZnQobGhzU2hpZnRBbW91bnQgLSBvdmVyZmxvdyk7CisgICAgICAg
ICAgICAgICAgcmhzQmNkTnVtLnNoaWZ0UmlnaHRXaXRoUm91bmQob3ZlcmZsb3cpOworICAgICAg
ICAgICAgICAgIHJlc3VsdEV4cG9uZW50ICs9IG92ZXJmbG93OworICAgICAgICAgICAgfQorICAg
ICAgICB9CisKKyAgICB9IGlmIChsaHNFeHBvbmVudCA8IHJoc0V4cG9uZW50KSB7CisgICAgICAg
IGNvbnN0IGludCByaHNOdW1iZXJPZkRpZ2l0cyA9IHJoc0JjZE51bS5jb3VudERpZ2l0cygpOwor
ICAgICAgICBpZiAocmhzTnVtYmVyT2ZEaWdpdHMpIHsKKyAgICAgICAgICAgIGNvbnN0IGludCBy
aHNTaGlmdEFtb3VudCA9IHJoc0V4cG9uZW50IC0gbGhzRXhwb25lbnQ7CisgICAgICAgICAgICBj
b25zdCBpbnQgb3ZlcmZsb3cgPSByaHNOdW1iZXJPZkRpZ2l0cyArIHJoc1NoaWZ0QW1vdW50IC0g
KE51bWJlck9mRGlnaXRzICsgMSk7CisgICAgICAgICAgICBpZiAob3ZlcmZsb3cgPD0gMCkKKyAg
ICAgICAgICAgICAgICByaHNCY2ROdW0uc2hpZnRMZWZ0KHJoc1NoaWZ0QW1vdW50KTsKKyAgICAg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHJoc0JjZE51bS5zaGlmdExlZnQocmhzU2hp
ZnRBbW91bnQgLSBvdmVyZmxvdyk7CisgICAgICAgICAgICAgICAgbGhzQmNkTnVtLnNoaWZ0Umln
aHRXaXRoUm91bmQob3ZlcmZsb3cpOworICAgICAgICAgICAgICAgIHJlc3VsdEV4cG9uZW50ICs9
IG92ZXJmbG93OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgRGVjaW1h
bDEyOEltcGwgcmVzdWx0ID0gbGhzU2lnbiA9PSByaHNTaWduID8gbGhzQmNkTnVtLmFkZChyaHNC
Y2ROdW0sIHJlc3VsdEV4cG9uZW50LCBsaHNTaWduKSA6IGxoc0JjZE51bS5zdWJ0cmFjdChyaHNC
Y2ROdW0sIHJlc3VsdEV4cG9uZW50LCBsaHNTaWduKTsKKyAgICBpZiAobGhzU2lnbiAmJiAhcmhz
U2lnbiAmJiByZXN1bHQuaXNaZXJvKCkpCisgICAgICAgIHJlc3VsdC5zZXRTaWduKDApOworICAg
IHJldHVybiByZXN1bHQ7Cit9CisKK0RlY2ltYWwxMjhJbXBsIERlY2ltYWwxMjhJbXBsOjpvcGVy
YXRvciAtKGNvbnN0IERlY2ltYWwxMjhJbXBsJiByaHMpIGNvbnN0Cit7CisgICAgY29uc3QgRGVj
aW1hbDEyOEltcGwgbGhzID0gKnRoaXM7CisgICAgY29uc3QgaW50IGxoc1NpZ24gPSBsaHMuc2ln
bigpOworICAgIGNvbnN0IGludCByaHNTaWduID0gcmhzLnNpZ24oKTsKKworICAgIFNwZWNpYWxW
YWx1ZUhhbmRsZXIgaGFuZGxlcihsaHMsIHJocyk7CisgICAgc3dpdGNoIChoYW5kbGVyLmhhbmRs
ZSgpKSB7CisgICAgY2FzZSBTcGVjaWFsVmFsdWVIYW5kbGVyOjpCb3RoRmluaXRlOgorICAgICAg
ICBicmVhazsKKworICAgIGNhc2UgU3BlY2lhbFZhbHVlSGFuZGxlcjo6Qm90aGluZmluaXR5Ogor
ICAgICAgICByZXR1cm4gbGhzU2lnbiA9PSByaHNTaWduID8gcXVpZXROYU4oMCkgOiBsaHM7CisK
KyAgICBjYXNlIFNwZWNpYWxWYWx1ZUhhbmRsZXI6OkVpdGhlck5hTjoKKyAgICAgICAgcmV0dXJu
IGhhbmRsZXIudmFsdWUoKTsKKworICAgIGNhc2UgU3BlY2lhbFZhbHVlSGFuZGxlcjo6TEhTSXNp
bmZpbml0eToKKyAgICAgICAgcmV0dXJuIGxoczsKKworICAgIGNhc2UgU3BlY2lhbFZhbHVlSGFu
ZGxlcjo6UkhTSXNpbmZpbml0eToKKyAgICAgICAgcmV0dXJuIGluZmluaXR5KHJoc1NpZ24gXiAx
KTsKKyAgICB9CisKKyAgICBBU1NFUlQobGhzLmlzRmluaXRlKCkgJiYgcmhzLmlzRmluaXRlKCkp
OworCisgICAgQmNkTnVtIGxoc0JjZE51bShsaHMubV9kYXRhKTsKKyAgICBCY2ROdW0gcmhzQmNk
TnVtKHJocy5tX2RhdGEpOworCisgICAgY29uc3QgaW50IGxoc0V4cG9uZW50ID0gbGhzLmV4cG9u
ZW50KCk7CisgICAgY29uc3QgaW50IHJoc0V4cG9uZW50ID0gcmhzLmV4cG9uZW50KCk7CisgICAg
aW50IHJlc3VsdEV4cG9uZW50ID0gc3RkOjptaW4obGhzRXhwb25lbnQsIHJoc0V4cG9uZW50KTsK
KworICAgIC8vIE1ha2UgY29lZmZpY2llbnQgYWxpZ25lZC4KKyAgICBpZiAobGhzRXhwb25lbnQg
PiByaHNFeHBvbmVudCkgeworICAgICAgICBjb25zdCBpbnQgbGhzTnVtYmVyT2ZEaWdpdHMgPSBs
aHNCY2ROdW0uY291bnREaWdpdHMoKTsKKyAgICAgICAgaWYgKGxoc051bWJlck9mRGlnaXRzKSB7
CisgICAgICAgICAgICBjb25zdCBpbnQgbGhzU2hpZnRBbW91bnQgPSBsaHNFeHBvbmVudCAtIHJo
c0V4cG9uZW50OworICAgICAgICAgICAgY29uc3QgaW50IG92ZXJmbG93ID0gbGhzTnVtYmVyT2ZE
aWdpdHMgKyBsaHNTaGlmdEFtb3VudCAtIChOdW1iZXJPZkRpZ2l0cyArIDEpOworICAgICAgICAg
ICAgaWYgKG92ZXJmbG93IDw9IDApCisgICAgICAgICAgICAgICAgbGhzQmNkTnVtLnNoaWZ0TGVm
dChsaHNTaGlmdEFtb3VudCk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBs
aHNCY2ROdW0uc2hpZnRMZWZ0KGxoc1NoaWZ0QW1vdW50IC0gb3ZlcmZsb3cpOworICAgICAgICAg
ICAgICAgIHJoc0JjZE51bS5zaGlmdFJpZ2h0V2l0aFJvdW5kKG92ZXJmbG93KTsKKyAgICAgICAg
ICAgICAgICByZXN1bHRFeHBvbmVudCArPSBvdmVyZmxvdzsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorCisgICAgfSBpZiAobGhzRXhwb25lbnQgPCByaHNFeHBvbmVudCkgeworICAgICAgICBj
b25zdCBpbnQgcmhzTnVtYmVyT2ZEaWdpdHMgPSByaHNCY2ROdW0uY291bnREaWdpdHMoKTsKKyAg
ICAgICAgaWYgKHJoc051bWJlck9mRGlnaXRzKSB7CisgICAgICAgICAgICBjb25zdCBpbnQgcmhz
U2hpZnRBbW91bnQgPSByaHNFeHBvbmVudCAtIGxoc0V4cG9uZW50OworICAgICAgICAgICAgY29u
c3QgaW50IG92ZXJmbG93ID0gcmhzTnVtYmVyT2ZEaWdpdHMgKyByaHNTaGlmdEFtb3VudCAtIChO
dW1iZXJPZkRpZ2l0cyArIDEpOworICAgICAgICAgICAgaWYgKG92ZXJmbG93IDw9IDApCisgICAg
ICAgICAgICAgICAgcmhzQmNkTnVtLnNoaWZ0TGVmdChyaHNTaGlmdEFtb3VudCk7CisgICAgICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICByaHNCY2ROdW0uc2hpZnRMZWZ0KHJoc1NoaWZ0
QW1vdW50IC0gb3ZlcmZsb3cpOworICAgICAgICAgICAgICAgIGxoc0JjZE51bS5zaGlmdFJpZ2h0
V2l0aFJvdW5kKG92ZXJmbG93KTsKKyAgICAgICAgICAgICAgICByZXN1bHRFeHBvbmVudCArPSBv
dmVyZmxvdzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBs
aHNTaWduID09IHJoc1NpZ24gPyBsaHNCY2ROdW0uc3VidHJhY3QocmhzQmNkTnVtLCByZXN1bHRF
eHBvbmVudCwgbGhzU2lnbikgOiBsaHNCY2ROdW0uYWRkKHJoc0JjZE51bSwgcmVzdWx0RXhwb25l
bnQsIGxoc1NpZ24pOworfQorCisvLyBtdWx0aXBseSBsaHMgYnkgcmhzIGludG8gcHJvZHVjdC4K
K0RlY2ltYWwxMjhJbXBsIERlY2ltYWwxMjhJbXBsOjpvcGVyYXRvciAqKGNvbnN0IERlY2ltYWwx
MjhJbXBsJiByaHMpIGNvbnN0Cit7CisgICAgY29uc3QgRGVjaW1hbDEyOEltcGwmIGxocyA9ICp0
aGlzOworICAgIGNvbnN0IGludCBsaHNTaWduID0gbGhzLnNpZ24oKTsKKyAgICBjb25zdCBpbnQg
cmhzU2lnbiA9IHJocy5zaWduKCk7CisgICAgY29uc3QgaW50IHJlc3VsdFNpZ24gPSBsaHNTaWdu
IF4gcmhzU2lnbjsKKworICAgIFNwZWNpYWxWYWx1ZUhhbmRsZXIgaGFuZGxlcihsaHMsIHJocyk7
CisgICAgc3dpdGNoIChoYW5kbGVyLmhhbmRsZSgpKSB7CisgICAgY2FzZSBTcGVjaWFsVmFsdWVI
YW5kbGVyOjpCb3RoRmluaXRlOgorICAgICAgICByZXR1cm4gQmluTnVtKGxocy5tX2RhdGEpLm11
bHRpcGx5KEJpbk51bShyaHMubV9kYXRhKSwgbGhzLmV4cG9uZW50KCkgKyByaHMuZXhwb25lbnQo
KSwgcmVzdWx0U2lnbik7CisKKyAgICBjYXNlIFNwZWNpYWxWYWx1ZUhhbmRsZXI6OkJvdGhpbmZp
bml0eToKKyAgICAgICAgcmV0dXJuIGluZmluaXR5KHJlc3VsdFNpZ24pOworCisgICAgY2FzZSBT
cGVjaWFsVmFsdWVIYW5kbGVyOjpFaXRoZXJOYU46CisgICAgICAgIHJldHVybiBoYW5kbGVyLnZh
bHVlKCk7CisKKyAgICBjYXNlIFNwZWNpYWxWYWx1ZUhhbmRsZXI6OkxIU0lzaW5maW5pdHk6Cisg
ICAgICAgIHJldHVybiByaHMuaXNaZXJvKCkgPyBxdWlldE5hTigwKSA6IGluZmluaXR5KHJlc3Vs
dFNpZ24pOworCisgICAgY2FzZSBTcGVjaWFsVmFsdWVIYW5kbGVyOjpSSFNJc2luZmluaXR5Ogor
ICAgICAgICByZXR1cm4gbGhzLmlzWmVybygpID8gcXVpZXROYU4oMCkgOiBpbmZpbml0eShyZXN1
bHRTaWduKTsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICByZXR1cm4gcXVpZXROYU4oMCk7CisgICAgfQorfQorCitEZWNpbWFsMTI4SW1wbCBE
ZWNpbWFsMTI4SW1wbDo6b3BlcmF0b3IgLyhjb25zdCBEZWNpbWFsMTI4SW1wbCYgcmhzKSBjb25z
dAoreworICAgIHJldHVybiBkaXZpZGUocmhzLCBGbG9hdFJlc3VsdCk7Cit9CisKK2Jvb2wgRGVj
aW1hbDEyOEltcGw6Om9wZXJhdG9yPT0oY29uc3QgRGVjaW1hbDEyOEltcGwmIHJocykgY29uc3QK
K3sKKyAgICByZXR1cm4gZmFzdEVxdWFscyhyaHMpIHx8IGNvbXBhcmVUbyhyaHMpLmlzWmVybygp
OworfQorCitib29sIERlY2ltYWwxMjhJbXBsOjpvcGVyYXRvciA8PShjb25zdCBEZWNpbWFsMTI4
SW1wbCYgcmhzKSBjb25zdAoreworICAgIGlmIChmYXN0RXF1YWxzKHJocykpCisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIGNvbnN0IERlY2ltYWwxMjhJbXBsIHJlc3VsdCA9IGNvbXBhcmVUbyhy
aHMpOworICAgIHJldHVybiByZXN1bHQuaXNaZXJvKCkgfHwgcmVzdWx0LnNpZ24oKTsKK30KKwor
Ym9vbCBEZWNpbWFsMTI4SW1wbDo6b3BlcmF0b3IgPj0oY29uc3QgRGVjaW1hbDEyOEltcGwmIHJo
cykgY29uc3QKK3sKKyAgICBpZiAoZmFzdEVxdWFscyhyaHMpKQorICAgICAgcmV0dXJuIHRydWU7
CisgICAgY29uc3QgRGVjaW1hbDEyOEltcGwgcmVzdWx0ID0gY29tcGFyZVRvKHJocyk7CisgICAg
cmV0dXJuIHJlc3VsdC5pc1plcm8oKSB8fCAhcmVzdWx0LnNpZ24oKTsKK30KKworaW50IERlY2lt
YWwxMjhJbXBsOjpleHBvbmVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGlzRmluaXRlKCkgPyBt
X2RhdGEuZXhwb25lbnRCaWFzZWQoKSAtIEViaWFzIDogMDsKK30KKworRGVjaW1hbDEyOEltcGw6
OkllZWVDbGFzcyBEZWNpbWFsMTI4SW1wbDo6aWVlZUNsYXNzKCkgY29uc3QKK3sKKyAgICBzd2l0
Y2ggKG1fZGF0YS5tX3dvcmRzWzNdICYgQ2xhc3NNYXNrKSB7CisgICAgY2FzZSBQb3NpdGl2ZUlu
ZmluaXR5UGF0dGVybjoKKyAgICBjYXNlIE5lZ2F0aXZlSW5maW5pdHlQYXR0ZXJuOgorICAgICAg
ICByZXR1cm4gQ2xhc3NJbmZpbml0eTsKKworICAgIGNhc2UgUG9zaXRpdmVRdWlldE5hTlBhdHRl
cm46CisgICAgY2FzZSBOZWdhdGl2ZVF1aWV0TmFOUGF0dGVybjoKKyAgICAgICAgcmV0dXJuIENs
YXNzUXVpZXROYU47CisgICAgfQorCisgICAgQmNkTnVtIGJjZE51bShtX2RhdGEpOworICAgIGNv
bnN0IGludCBjb2VmZmljaWVudExlbmd0aCA9IGJjZE51bS5jb3VudERpZ2l0cygpOworICAgIGlm
ICghY29lZmZpY2llbnRMZW5ndGgpCisgICAgICAgIHJldHVybiBDbGFzc1plcm87CisKKyAgICBj
b25zdCBpbnQgYWRqdXN0ZWRFeHBvbmVudCA9IGV4cG9uZW50KCkgKyBjb2VmZmljaWVudExlbmd0
aCAtIDE7CisgICAgaWYgKGFkanVzdGVkRXhwb25lbnQgPCAwKQorICAgICAgICByZXR1cm4gQ2xh
c3NTdWJub3JtYWw7CisKKyAgICByZXR1cm4gQ2xhc3NOb3JtYWw7Cit9CisKK2ludCBEZWNpbWFs
MTI4SW1wbDo6c2lnbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIGludChtX2RhdGEubV93b3Jkc1sz
XSkgPCAwOworfQorCit2b2lkIERlY2ltYWwxMjhJbXBsOjpzZXRTaWduKGludCB2YWx1ZSkKK3sK
KyAgICBtX2RhdGEuc2V0U2lnbih2YWx1ZSk7Cit9CisKKy8vIGNvbXBhcmUgdHdvIERlY2ltYWwx
MjhJbXBsIG51bWJlcnMuCitEZWNpbWFsMTI4SW1wbCBEZWNpbWFsMTI4SW1wbDo6Y29tcGFyZVRv
KGNvbnN0IERlY2ltYWwxMjhJbXBsJiByaHMpIGNvbnN0Cit7CisgICAgY29uc3QgRGVjaW1hbDEy
OEltcGwgcmVzdWx0ID0gKnRoaXMgLSByaHM7CisgICAgcmV0dXJuIHJlc3VsdC5pc0Zpbml0ZSgp
ID8gcmVzdWx0IDogcmVzdWx0LmlzWmVybygpID8gemVybygwKSA6IHJlc3VsdC5zaWduKCkgPyBE
ZWNpbWFsMTI4SW1wbCgtMSkgOiBEZWNpbWFsMTI4SW1wbCgxKTsKK30KKworRGVjaW1hbDEyOElt
cGwgRGVjaW1hbDEyOEltcGw6OmRpdmlkZShjb25zdCBEZWNpbWFsMTI4SW1wbCYgcmhzLCBkaXZp
ZGVSZXN1bHQgY29uc3QgcmVzdWx0VHlwZSkgY29uc3QKK3sKKyAgICBjb25zdCBEZWNpbWFsMTI4
SW1wbCYgbGhzID0gKnRoaXM7CisgICAgY29uc3QgaW50IGxoc1NpZ24gPSBsaHMuc2lnbigpOwor
ICAgIGNvbnN0IGludCByaHNTaWduID0gcmhzLnNpZ24oKTsKKyAgICBjb25zdCBpbnQgcmVzdWx0
U2lnbiA9IGxoc1NpZ24gXiByaHNTaWduOworCisgICAgU3BlY2lhbFZhbHVlSGFuZGxlciBoYW5k
bGVyKGxocywgcmhzKTsKKyAgICBzd2l0Y2ggKGhhbmRsZXIuaGFuZGxlKCkpIHsKKyAgICBjYXNl
IFNwZWNpYWxWYWx1ZUhhbmRsZXI6OkJvdGhGaW5pdGU6CisgICAgICAgIGJyZWFrOworCisgICAg
Y2FzZSBTcGVjaWFsVmFsdWVIYW5kbGVyOjpCb3RoaW5maW5pdHk6CisgICAgICAgIHJldHVybiBx
dWlldE5hTigwKTsKKworICAgIGNhc2UgU3BlY2lhbFZhbHVlSGFuZGxlcjo6RWl0aGVyTmFOOgor
ICAgICAgICByZXR1cm4gaGFuZGxlci52YWx1ZSgpOworCisgICAgY2FzZSBTcGVjaWFsVmFsdWVI
YW5kbGVyOjpMSFNJc2luZmluaXR5OgorICAgICAgICByZXR1cm4gaW5maW5pdHkocmVzdWx0U2ln
bik7CisKKyAgICBjYXNlIFNwZWNpYWxWYWx1ZUhhbmRsZXI6OlJIU0lzaW5maW5pdHk6CisgICAg
ICAgIHJldHVybiB6ZXJvKHJlc3VsdFNpZ24pOworICAgIH0KKworICAgIEFTU0VSVChsaHMuaXNG
aW5pdGUoKSAmJiByaHMuaXNGaW5pdGUoKSk7CisKKyAgICBpZiAocmhzLmlzWmVybygpKQorICAg
ICAgICByZXR1cm4gbGhzLmlzWmVybygpID8gcXVpZXROYU4oMCkgOiBpbmZpbml0eShyZXN1bHRT
aWduKTsKKworICAgIGNvbnN0IGludCByZXN1bHRFeHBvbmVudCA9IGxocy5leHBvbmVudCgpIC0g
cmhzLmV4cG9uZW50KCk7CisKKyAgICBpZiAobGhzLmlzWmVybygpKSB7CisgICAgICAgIC8vIDAv
bm9uLXplcm8gPT4gMAorICAgICAgICByZXR1cm4gcmVzdWx0VHlwZSA9PSBGbG9hdFJlc3VsdCA/
IERlY2ltYWwxMjhJbXBsKEJjZE51bSgpLmVuY29kZShyZXN1bHRFeHBvbmVudCwgcmVzdWx0U2ln
bikpIDogemVybyhyZXN1bHRTaWduKTsKKyAgICB9CisKKyAgICByZXR1cm4gQmluTnVtKGxocy5t
X2RhdGEpLmRpdmlkZShCaW5OdW0ocmhzLm1fZGF0YSksIHJlc3VsdEV4cG9uZW50LCByZXN1bHRT
aWduLCByZXN1bHRUeXBlKTsKK30KKworLy8gY29tcGFyZXMgdHdvIERlY2ltYWwxMjhJbXBsIG51
bWJlciBhcyBiaW5hcnkgc3RyaW5nLiBUaGlzIG1ldGhvZCBpcworLy8gdXNlZCBmb3IgZXF1YWxp
dHkgb2YgaW5maW5pdHkgb3BlcmFuZHMgd2hpY2ggc3Vic3RyYWN0IG9wZXJhdGlvbgorLy8gcmV0
dXJucyBub24temVyby4KK2Jvb2wgRGVjaW1hbDEyOEltcGw6OmZhc3RFcXVhbHMoY29uc3QgRGVj
aW1hbDEyOEltcGwmIHJocykgY29uc3QKK3sKKyAgICBjb25zdCB1aW50MzJfdCBsaHNXb3JkID0g
bV9kYXRhLm1fd29yZHNbM107CisgICAgY29uc3QgdWludDMyX3QgcmhzV29yZCA9IHJocy5tX2Rh
dGEubV93b3Jkc1szXTsKKworICAgIGlmIChsaHNXb3JkICE9IHJoc1dvcmQpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGlmICgobGhzV29yZCAmIFNwZWNpYWxWYWx1ZU1hc2spICE9IFNw
ZWNpYWxWYWx1ZU1hc2spCisgICAgICAgIHJldHVybiB0aGlzID09ICZyaHMgfHwgITo6bWVtY21w
KG1fZGF0YS5tX3dvcmRzLCByaHMubV9kYXRhLm1fd29yZHMsIHNpemVvZihtX2RhdGEubV93b3Jk
cykpOworCisgICAgcmV0dXJuIGxoc1dvcmQgPT0gTmVnYXRpdmVJbmZpbml0eVBhdHRlcm4gfHwg
bGhzV29yZCA9PSBQb3NpdGl2ZUluZmluaXR5UGF0dGVybjsKK30KKworRGVjaW1hbDEyOEltcGwg
RGVjaW1hbDEyOEltcGw6OmZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBzdHIpCit7CisgICAgaW50
IGV4cG9uZW50ID0gMDsKKyAgICBpbnQgZXhwb25lbnRTaWduID0gMDsKKyAgICBib29sIG1pbnVz
ID0gZmFsc2U7CisgICAgaW50IG51bWJlck9mRGlnaXRzID0gMDsKKyAgICBpbnQgbnVtYmVyT2ZE
aWdpdHNBZnRlckRvdCA9IDA7CisKKyAgICBlbnVtIHsKKyAgICAgICAgU3RhdGVEaWdpdCwKKyAg
ICAgICAgU3RhdGVEb3QsCisgICAgICAgIFN0YXRlRG90RGlnaXQsCisgICAgICAgIFN0YXRlRSwK
KyAgICAgICAgU3RhdGVFRGlnaXQsCisgICAgICAgIFN0YXRlRVNpZ24sCisgICAgICAgIFN0YXRl
SSwKKyAgICAgICAgU3RhdGVJTiwKKyAgICAgICAgU3RhdGVJTkYsCisgICAgICAgIFN0YXRlSU5G
SSwKKyAgICAgICAgU3RhdGVJTkZJTiwKKyAgICAgICAgU3RhdGVJTkZJTkksCisgICAgICAgIFN0
YXRlSU5GSU5JVCwKKyAgICAgICAgU3RhdGVJTkZJTklUWSwKKyAgICAgICAgU3RhdGVOLAorICAg
ICAgICBTdGF0ZU5BLAorICAgICAgICBTdGF0ZU5BTiwKKyAgICAgICAgU3RhdGVTLAorICAgICAg
ICBTdGF0ZVNpZ24sCisgICAgICAgIFN0YXRlU3RhcnQsCisgICAgICAgIFN0YXRlWmVybywKKyAg
ICB9IHN0YXRlID0gU3RhdGVTdGFydDsKKworICAgICNkZWZpbmUgSGFuZGxlQ2hhcihjaDEsIG5l
eHQsIC4uLikgXAorICAgICAgICBpZiAoY2ggPT0gY2gxIHx8IGNoID09IGNoMSAtICdBJyArICdh
JykgeyBcCisgICAgICAgICAgICBfX1ZBX0FSR1NfXzsgXAorICAgICAgICAgICAgc3RhdGUgPSBu
ZXh0OyBcCisgICAgICAgICAgICBicmVhazsgXAorICAgICAgICB9CisKKyAgICAjZGVmaW5lIEV4
cGVjdENoYXIoY2gxLCBuZXh0LCAuLi4pIFwKKyAgICAgICAgSGFuZGxlQ2hhcihjaDEsIG5leHQs
IF9fVkFfQVJHU19fKTsgXAorICAgICAgICByZXR1cm4gcXVpZXROYU4oMCk7CisKKyAgICBCY2RO
dW0gYWNjdW11bGF0b3I7CisgICAgZm9yICh1aW50IGluZGV4ID0gMDsgaW5kZXggPCBzdHIubGVu
Z3RoKCk7ICsraW5kZXgpIHsKKyAgICAgICAgY29uc3QgaW50IGNoID0gc3RyW2luZGV4XTsKKyAg
ICAgICAgc3dpdGNoIChzdGF0ZSkgeworICAgICAgICBjYXNlIFN0YXRlRGlnaXQ6CisgICAgICAg
ICAgICBpZiAoY2ggPj0gJzAnICYmIGNoIDw9ICc5JykgeworICAgICAgICAgICAgICAgIGlmIChu
dW1iZXJPZkRpZ2l0cyA8IERlY2ltYWwxMjhJbXBsOjpQcmVjaXNpb24pIHsKKyAgICAgICAgICAg
ICAgICAgICAgKytudW1iZXJPZkRpZ2l0czsKKyAgICAgICAgICAgICAgICAgICAgYWNjdW11bGF0
b3Iuc2V0RGlnaXRBdChOdW1iZXJPZkRpZ2l0cyAtIG51bWJlck9mRGlnaXRzLCB1aW50OF90KGNo
IC0gJzAnKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoY2ggPT0gJy4nKSB7CisgICAgICAgICAgICAg
ICAgc3RhdGUgPSBTdGF0ZURvdDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgRXhwZWN0Q2hhcignRScsIFN0YXRlRSk7CisKKyAgICAgICAgY2Fz
ZSBTdGF0ZURvdDoKKyAgICAgICAgICAgIGlmIChjaCA+PSAnMCcgJiYgY2ggPD0gJzknKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKG51bWJlck9mRGlnaXRzIDwgRGVjaW1hbDEyOEltcGw6OlByZWNp
c2lvbikgeworICAgICAgICAgICAgICAgICAgICArK251bWJlck9mRGlnaXRzOworICAgICAgICAg
ICAgICAgICAgICArK251bWJlck9mRGlnaXRzQWZ0ZXJEb3Q7CisgICAgICAgICAgICAgICAgICAg
IGFjY3VtdWxhdG9yLnNldERpZ2l0QXQoTnVtYmVyT2ZEaWdpdHMgLSBudW1iZXJPZkRpZ2l0cywg
dWludDhfdChjaCAtICcwJykpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBz
dGF0ZSA9IFN0YXRlRG90RGlnaXQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgY2FzZSBTdGF0ZURvdERpZ2l0OgorICAgICAgICAgICAgaWYgKGNoID49
ICcwJyAmJiBjaCA8PSAnOScpIHsKKyAgICAgICAgICAgICAgICBpZiAobnVtYmVyT2ZEaWdpdHMg
PCBEZWNpbWFsMTI4SW1wbDo6UHJlY2lzaW9uKSB7CisgICAgICAgICAgICAgICAgICAgICsrbnVt
YmVyT2ZEaWdpdHM7CisgICAgICAgICAgICAgICAgICAgICsrbnVtYmVyT2ZEaWdpdHNBZnRlckRv
dDsKKyAgICAgICAgICAgICAgICAgICAgYWNjdW11bGF0b3Iuc2V0RGlnaXRBdChOdW1iZXJPZkRp
Z2l0cyAtIG51bWJlck9mRGlnaXRzLCB1aW50OF90KGNoIC0gJzAnKSk7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBFeHBlY3RDaGFyKCdFJywgU3RhdGVFKTsKKworICAgICAgICBjYXNlIFN0YXRlRToKKyAgICAg
ICAgICAgIGlmIChjaCA9PSAnKycpIHsKKyAgICAgICAgICAgICAgICBleHBvbmVudFNpZ24gPSAw
OworICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGVFU2lnbjsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGNoID09ICctJykgeworICAg
ICAgICAgICAgICAgIGV4cG9uZW50U2lnbiA9IDE7CisgICAgICAgICAgICAgICAgc3RhdGUgPSBT
dGF0ZUVTaWduOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBpZiAoY2ggPj0gJzAnICYmIGNoIDw9ICc5JykgeworICAgICAgICAgICAgICAgIGV4
cG9uZW50ID0gY2ggLSAnMCc7CisgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZUVEaWdpdDsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0
dXJuIHF1aWV0TmFOKDApOworCisgICAgICAgIGNhc2UgU3RhdGVFRGlnaXQ6CisgICAgICAgICAg
ICBpZiAoY2ggPj0gJzAnICYmIGNoIDw9ICc5JykgeworICAgICAgICAgICAgICAgIGV4cG9uZW50
ICo9IDEwOworICAgICAgICAgICAgICAgIGV4cG9uZW50ICs9IGNoIC0gJzAnOworICAgICAgICAg
ICAgICAgIGlmIChleHBvbmVudCArIEViaWFzID4gRW1heCArIFByZWNpc2lvbikKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGV4cG9uZW50U2lnbiA/IHplcm8obWludXMpIDogaW5maW5pdHko
bWludXMpOworICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGVFRGlnaXQ7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBxdWlldE5h
TigwKTsKKworICAgICAgICBjYXNlIFN0YXRlRVNpZ246CisgICAgICAgICAgICBpZiAoY2ggPj0g
JzAnICYmIGNoIDw9ICc5JykgeworICAgICAgICAgICAgICAgIGV4cG9uZW50ID0gY2ggLSAnMCc7
CisgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZUVEaWdpdDsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHF1aWV0TmFOKDApOwor
CisgICAgICAgIGNhc2UgU3RhdGVJOiBFeHBlY3RDaGFyKCdOJywgU3RhdGVJTik7CisgICAgICAg
IGNhc2UgU3RhdGVJTjogRXhwZWN0Q2hhcignRicsIFN0YXRlSU5GKTsKKyAgICAgICAgY2FzZSBT
dGF0ZUlORjogRXhwZWN0Q2hhcignSScsIFN0YXRlSU5GSSk7CisgICAgICAgIGNhc2UgU3RhdGVJ
TkZJOiBFeHBlY3RDaGFyKCdOJywgU3RhdGVJTkZJTik7CisgICAgICAgIGNhc2UgU3RhdGVJTkZJ
TjogRXhwZWN0Q2hhcignSScsIFN0YXRlSU5GSU5JKTsKKyAgICAgICAgY2FzZSBTdGF0ZUlORklO
STogRXhwZWN0Q2hhcignVCcsIFN0YXRlSU5GSU5JVCk7CisgICAgICAgIGNhc2UgU3RhdGVJTkZJ
TklUOiBFeHBlY3RDaGFyKCdZJywgU3RhdGVJTkZJTklUWSk7CisgICAgICAgIGNhc2UgU3RhdGVJ
TkZJTklUWTogcmV0dXJuIHF1aWV0TmFOKDApOworCisgICAgICAgIGNhc2UgU3RhdGVOOiBFeHBl
Y3RDaGFyKCdBJywgU3RhdGVOQSk7CisgICAgICAgIGNhc2UgU3RhdGVOQTogRXhwZWN0Q2hhcign
TicsIFN0YXRlTkFOKTsKKyAgICAgICAgY2FzZSBTdGF0ZU5BTjogcmV0dXJuIHF1aWV0TmFOKDAp
OworCisgICAgICAgIGNhc2UgU3RhdGVTOgorICAgICAgICAgICAgSGFuZGxlQ2hhcignTicsIFN0
YXRlTik7CisKKyAgICAgICAgY2FzZSBTdGF0ZVNpZ246CisgICAgICAgICAgICBpZiAoY2ggPT0g
JzAnKSB7CisgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZVplcm87CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChjaCA+PSAnMScgJiYg
Y2ggPD0gJzknKSB7CisgICAgICAgICAgICAgICAgYWNjdW11bGF0b3Iuc2V0RGlnaXRBdChOdW1i
ZXJPZkRpZ2l0cyAtMSwgdWludDhfdChjaCAtICcwJykpOworICAgICAgICAgICAgICAgIG51bWJl
ck9mRGlnaXRzID0gMTsKKyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlRGlnaXQ7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIEhhbmRsZUNo
YXIoJ0knLCBTdGF0ZUkpOworICAgICAgICAgICAgSGFuZGxlQ2hhcignTicsIFN0YXRlTik7Cisg
ICAgICAgICAgICBIYW5kbGVDaGFyKCdTJywgU3RhdGVTKTsKKyAgICAgICAgICAgIHJldHVybiBx
dWlldE5hTigwKTsKKworICAgICAgICBjYXNlIFN0YXRlU3RhcnQ6CisgICAgICAgICAgICBpZiAo
Y2ggPT0gJzAnKSB7CisgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZVplcm87CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChjaCA+PSAn
MScgJiYgY2ggPD0gJzknKSB7CisgICAgICAgICAgICAgICAgYWNjdW11bGF0b3Iuc2V0RGlnaXRB
dChOdW1iZXJPZkRpZ2l0cyAtMSwgdWludDhfdChjaCAtICcwJykpOworICAgICAgICAgICAgICAg
IG51bWJlck9mRGlnaXRzID0gMTsKKyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlRGlnaXQ7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlm
IChjaCA9PSAnLScpIHsKKyAgICAgICAgICAgICAgICBtaW51cyA9IHRydWU7CisgICAgICAgICAg
ICAgICAgc3RhdGUgPSBTdGF0ZVNpZ247CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGlmIChjaCA9PSAnKycpIHsKKyAgICAgICAgICAgICAgICBt
aW51cyA9IGZhbHNlOworICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGVTaWduOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBIYW5kbGVDaGFy
KCdJJywgU3RhdGVJKTsKKyAgICAgICAgICAgIEhhbmRsZUNoYXIoJ04nLCBTdGF0ZU4pOworICAg
ICAgICAgICAgSGFuZGxlQ2hhcignUycsIFN0YXRlUyk7CisgICAgICAgICAgICByZXR1cm4gcXVp
ZXROYU4oMCk7CisKKyAgICAgICAgY2FzZSBTdGF0ZVplcm86CisgICAgICAgICAgICBpZiAoY2gg
PT0gJzAnKQorICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBpZiAoY2ggPj0g
JzEnICYmIGNoIDw9ICc5JykgeworICAgICAgICAgICAgICAgIGFjY3VtdWxhdG9yLnNldERpZ2l0
QXQoTnVtYmVyT2ZEaWdpdHMgLSAxLCB1aW50OF90KGNoIC0gJzAnKSk7CisgICAgICAgICAgICAg
ICAgbnVtYmVyT2ZEaWdpdHMgPSAxOworICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGVEaWdp
dDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
aWYgKGNoID09ICcuJykgeworICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGVEb3Q7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIEV4cGVjdENo
YXIoJ0UnLCBTdGF0ZUUpOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChzdGF0ZSA9PSBTdGF0
ZUlORiB8fCBzdGF0ZSA9PSBTdGF0ZUlORklOSVRZKQorICAgICAgICByZXR1cm4gaW5maW5pdHko
bWludXMpOworCisgICAgaWYgKHN0YXRlID09IFN0YXRlTkFOKQorICAgICAgICByZXR1cm4gcXVp
ZXROYU4obWludXMpOworCisgICAgaWYgKHN0YXRlID09IFN0YXRlWmVybykKKyAgICAgICAgcmV0
dXJuIHplcm8obWludXMpOworCisgICAgaWYgKHN0YXRlID09IFN0YXRlRGlnaXQgfHwgc3RhdGUg
PT0gU3RhdGVFRGlnaXQgfHwgc3RhdGUgPT0gU3RhdGVEb3REaWdpdCkgeworICAgICAgICBhY2N1
bXVsYXRvci5zaGlmdFJpZ2h0KE51bWJlck9mRGlnaXRzIC0gbnVtYmVyT2ZEaWdpdHMpOworICAg
ICAgICBpbnQgcmVzdWx0RXhwb25lbnQgPSBleHBvbmVudCAqICgxIC0gZXhwb25lbnRTaWduICog
MikgLSBudW1iZXJPZkRpZ2l0c0FmdGVyRG90OworICAgICAgICBjb25zdCBpbnQgYmlhc2VkRXhw
b25lbnQgPSByZXN1bHRFeHBvbmVudCArIEViaWFzOworICAgICAgICBpZiAoYmlhc2VkRXhwb25l
bnQgPCAwKQorICAgICAgICAgICAgcmV0dXJuIHplcm8oMCk7CisKKyAgICAgICAgY29uc3QgaW50
IG92ZXJmbG93ID0gYmlhc2VkRXhwb25lbnQgLSBFbWF4OworICAgICAgICBpZiAob3ZlcmZsb3cg
PiAwKSB7CisgICAgICAgICAgICBpZiAob3ZlcmZsb3cgKyBudW1iZXJPZkRpZ2l0cyAtIG51bWJl
ck9mRGlnaXRzQWZ0ZXJEb3QgPiBOdW1iZXJPZkRpZ2l0cykKKyAgICAgICAgICAgICAgICByZXR1
cm4gaW5maW5pdHkobWludXMpOworICAgICAgICAgICAgYWNjdW11bGF0b3Iuc2hpZnRMZWZ0KG92
ZXJmbG93KTsKKyAgICAgICAgICAgIHJlc3VsdEV4cG9uZW50IC09IG92ZXJmbG93OworICAgICAg
ICB9CisKKyAgICAgICAgcmV0dXJuIERlY2ltYWwxMjhJbXBsKGFjY3VtdWxhdG9yLmVuY29kZShy
ZXN1bHRFeHBvbmVudCwgbWludXMpKTsKKyAgICB9CisKKyAgICByZXR1cm4gcXVpZXROYU4oMCk7
Cit9CisKK0RlY2ltYWwxMjhJbXBsIERlY2ltYWwxMjhJbXBsOjppbmZpbml0eShjb25zdCBpbnQg
c2lnbikKK3sKKyAgICByZXR1cm4gRGVjaW1hbDEyOEltcGwoc2lnbiwgUG9zaXRpdmVJbmZpbml0
eVBhdHRlcm4sIE5lZ2F0aXZlSW5maW5pdHlQYXR0ZXJuKTsKK30KKworYm9vbCBEZWNpbWFsMTI4
SW1wbDo6aXNGaW5pdGUoKSBjb25zdAoreworICAgIHJldHVybiAobV9kYXRhLm1fd29yZHNbM10g
JiBTcGVjaWFsVmFsdWVNYXNrKSAhPSBTcGVjaWFsVmFsdWVNYXNrOworfQorCitib29sIERlY2lt
YWwxMjhJbXBsOjppc1NwZWNpYWwoKSBjb25zdAoreworICAgIHJldHVybiAobV9kYXRhLm1fd29y
ZHNbM10gJiBTcGVjaWFsVmFsdWVNYXNrKSA9PSBTcGVjaWFsVmFsdWVNYXNrOworfQorCitib29s
IERlY2ltYWwxMjhJbXBsOjppc1plcm8oKSBjb25zdAoreworICAgIHJldHVybiAhbV9kYXRhLm1f
d29yZHNbMF0gJiYgIW1fZGF0YS5tX3dvcmRzWzFdICYmICFtX2RhdGEubV93b3Jkc1syXQorICAg
ICAgICAmJiAobV9kYXRhLm1fd29yZHNbM10gJiBFeHBvbmVudE1hc2spICE9IEV4cG9uZW50TWFz
aworICAgICAgICAmJiAhKG1fZGF0YS5tX3dvcmRzWzNdICYgflplcm9NYXNrKTsKK30KKworRGVj
aW1hbDEyOEltcGwgRGVjaW1hbDEyOEltcGw6OnF1aWV0TmFOKGNvbnN0IGludCBzaWduKQorewor
ICAgIHJldHVybiBEZWNpbWFsMTI4SW1wbChzaWduLCBQb3NpdGl2ZVF1aWV0TmFOUGF0dGVybiwg
TmVnYXRpdmVRdWlldE5hTlBhdHRlcm4pOworfQorCitEZWNpbWFsMTI4SW1wbCBEZWNpbWFsMTI4
SW1wbDo6cmVtYWluZGVyKGNvbnN0IERlY2ltYWwxMjhJbXBsJiBkaXZpc29yKSBjb25zdAorewor
ICAgIGNvbnN0IERlY2ltYWwxMjhJbXBsIHF1b3RpZW50ID0gZGl2aWRlKGRpdmlzb3IsIEludGVn
ZXJSZXN1bHQpOworICAgIGlmIChxdW90aWVudC5pc1NwZWNpYWwoKSkKKyAgICAgICAgcmV0dXJu
IHF1b3RpZW50OworCisgICAgRGVjaW1hbDEyOEltcGwgcmVtKCp0aGlzIC0gcXVvdGllbnQgKiBk
aXZpc29yKTsKKyAgICByZW0uc2V0U2lnbihzaWduKCkpOworICAgIHJldHVybiByZW07Cit9CisK
K0RlY2ltYWwxMjhJbXBsIERlY2ltYWwxMjhJbXBsOjpyb3VuZEF0KGNvbnN0IGludCBudW1iZXJP
ZkRpZ2l0cykgY29uc3QKK3sKKyAgICBCY2ROdW0gYmNkTnVtKG1fZGF0YSk7CisgICAgY29uc3Qg
aW50IGN1cnJyZW50TnVtYmVyT2ZEaWdpdHMgPSBiY2ROdW0uY291bnREaWdpdHMoKTsKKyAgICBi
Y2ROdW0ucm91bmRBdChudW1iZXJPZkRpZ2l0cyk7CisgICAgaWYgKGV4cG9uZW50KCkgPCAwKQor
ICAgICAgICBiY2ROdW0ucmVtb3ZlVHJhaWxpbmdaZXJvcygpOworICAgIGNvbnN0IGludCBuZXdO
dW1iZXJPZkRpZ2l0cyA9IGJjZE51bS5jb3VudERpZ2l0cygpOworICAgIHJldHVybiBEZWNpbWFs
MTI4SW1wbChiY2ROdW0uZW5jb2RlKGV4cG9uZW50KCkgLSBuZXdOdW1iZXJPZkRpZ2l0cyArIGN1
cnJyZW50TnVtYmVyT2ZEaWdpdHMsIHNpZ24oKSkpOworfQorCitTdHJpbmcgRGVjaW1hbDEyOElt
cGw6OnRvU3RyaW5nKCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKGllZWVDbGFzcygpKSB7CisgICAg
Y2FzZSBDbGFzc0luZmluaXR5OgorICAgICAgICByZXR1cm4gc2lnbigpID8gIi1pbmZpbml0eSIg
OiAiaW5maW5pdHkiOworCisgICAgY2FzZSBDbGFzc1F1aWV0TmFOOgorICAgICAgICByZXR1cm4g
c2lnbigpID8gIi1OYU4iIDogIk5hTiI7CisKKyAgICBjYXNlIENsYXNzU2lnbmFsaW5nTmFOOgor
ICAgICAgICByZXR1cm4gc2lnbigpID8gIi1zTmFOIiA6ICJzTmFOIjsKKworICAgIGNhc2UgQ2xh
c3NOb3JtYWw6CisgICAgY2FzZSBDbGFzc1N1Ym5vcm1hbDoKKyAgICBjYXNlIENsYXNzWmVybzoK
KyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAg
IGlmIChzaWduKCkpCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCctJyk7CisKKyAgICAvLyBjb252
ZXJ0IHRvIHNjaWVudGlmaWMtc3RyaW5nCisgICAgQmNkTnVtIGJjZE51bShtX2RhdGEpOworICAg
IGNvbnN0IGludCBjb2VmZmljaWVudExlbmd0aCA9IHN0ZDo6bWF4KGJjZE51bS5jb3VudERpZ2l0
cygpLCAxKTsKKyAgICBjb25zdCBpbnQgb3JpZ2luYWxFeHBvbmVudCA9IGV4cG9uZW50KCk7Cisg
ICAgY29uc3QgaW50IGFkanVzdGVkRXhwb25lbnQgPSBvcmlnaW5hbEV4cG9uZW50ICsgY29lZmZp
Y2llbnRMZW5ndGggLSAxOworICAgIGlmIChvcmlnaW5hbEV4cG9uZW50IDw9IDAgJiYgYWRqdXN0
ZWRFeHBvbmVudCA+PSAtNikgeworICAgICAgICBpZiAoIW9yaWdpbmFsRXhwb25lbnQpIHsKKyAg
ICAgICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IGNvZWZmaWNpZW50TGVuZ3RoOyArK2kpCisg
ICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoYmNkTnVtLmRpZ2l0Q2hhckF0KGNvZWZmaWNp
ZW50TGVuZ3RoIC0gaSkpOworICAgICAgICAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsK
KyAgICAgICAgfQorCisgICAgICAgIGlmIChhZGp1c3RlZEV4cG9uZW50ID49IDApIHsKKyAgICAg
ICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IGNvZWZmaWNpZW50TGVuZ3RoOyArK2kpIHsKKyAg
ICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChiY2ROdW0uZGlnaXRDaGFyQXQoY29lZmZpY2ll
bnRMZW5ndGggLSBpKSk7CisgICAgICAgICAgICAgICAgaWYgKGkgPT0gYWRqdXN0ZWRFeHBvbmVu
dCArIDEpCisgICAgICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcuJyk7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworICAgICAgICB9
CisKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoIjAuIik7CisgICAgICAgIGZvciAoaW50IGkgPSBh
ZGp1c3RlZEV4cG9uZW50ICsgMTsgaSA8IDA7ICsraSkKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKCcwJyk7CisKKyAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gY29lZmZpY2llbnRMZW5n
dGg7ICsraSkKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGJjZE51bS5kaWdpdENoYXJBdChj
b2VmZmljaWVudExlbmd0aCAtIGkpKTsKKworICAgIH0gZWxzZSB7CisgICAgICAgIGludCBrID0g
Y29lZmZpY2llbnRMZW5ndGggLSAxOworICAgICAgICBidWlsZGVyLmFwcGVuZChiY2ROdW0uZGln
aXRDaGFyQXQoaykpOworICAgICAgICAtLWs7CisgICAgICAgIGlmIChrID49IDApIHsKKyAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcuJyk7CisgICAgICAgICAgICB3aGlsZSAoayA+PSAwKSB7
CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoYmNkTnVtLmRpZ2l0Q2hhckF0KGspKTsK
KyAgICAgICAgICAgICAgICAtLWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAg
ICBidWlsZGVyLmFwcGVuZChhZGp1c3RlZEV4cG9uZW50IDwgMCA/ICJFIiA6ICJFKyIpOworICAg
ICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6Om51bWJlcihhZGp1c3RlZEV4cG9uZW50KSk7Cisg
ICAgfQorICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Cit9CisKK0RlY2ltYWwxMjhJbXBs
IERlY2ltYWwxMjhJbXBsOjp6ZXJvKGludCBzaWduKQoreworICAgIHJldHVybiBEZWNpbWFsMTI4
SW1wbChzaWduLCBQb3NpdGl2ZVplcm9QYXR0ZXJuLCBOZWdhdGl2ZVplcm9QYXR0ZXJuKTsKK30K
KworfSAvLyBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EZWNp
bWFsMTI4SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGVjaW1hbDEyOEltcGwuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40Y2QyMDc2MGE3NGQwYzk2NTNjY2VmMGRiZjFjYTY2YTczMDE0N2U1Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGVjaW1hbDEyOEltcGwuaApA
QCAtMCwwICsxLDEzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
ICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisjaWZuZGVmIERlY2ltYWwxMjhJbXBsX2gKKyNkZWZpbmUgRGVjaW1hbDEy
OEltcGxfaAorCisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gVGhpcyBjbGFzcyBpbXBsZW1lbnRz
IDI5IGRpZ2l0cyBmbG9hdGluZyBwb2ludCBkZWNpbWFsIG51bWJlciB1c2luZworLy8gMTI4IGJp
dCBlbmNvZGVkIGRhdGEuCisvLworLy8gNzY1NDMyMTAgNzY1NDMyMTAgNzY1NDMyMTAgNzY1NDMy
MTAgLi4uCisvLyBTRUVFRUVFRSBFRUVFY2NjYyBjY2NjY2NjYyBjY2NjY2NjYyAuLi4KKy8vICBT
ID0gc2lnbiAoMSBiaXQpLCAwID0gcGx1cywgMSA9IG1pbnVzCisvLyAgRSA9IGV4cG9uZW50IGNv
bnRpbnVhdGlvbiAoMTEgYml0KQorLy8gIGMgPSBjb2VmZmljZW50ICgxMTYgYml0KSwgZWFjaCA0
Yml0IHJlcHJlc2VudCBkZWNpbWFsIGRpZ2l0IFswLDldCisvLworLy8gIE1hc2sgb2YgZXhwb25l
bnQgICAgIDdGRjAgMDAwMAorLy8gIE1hc2sgb2YgY29lZmZpY2VudCAgIDAwMEYgRkZGRgorLy8g
IEluZmluaXR5IGJpdCBwYXR0ZXJuIDdGRjAgMDAwMAorLy8gIFF1aWV0IE5hTiAgICAgICAgICAg
IDdGRjEgMDAwMAorY2xhc3MgRGVjaW1hbDEyOEltcGwgeworcHVibGljOgorICAgIGVudW0gZGl2
aWRlUmVzdWx0IHsKKyAgICAgICAgRmxvYXRSZXN1bHQsCisgICAgICAgIEludGVnZXJSZXN1bHQs
CisgICAgfTsKKworICAgIGVudW0gSWVlZUNsYXNzIHsKKyAgICAgICAgQ2xhc3NJbmZpbml0eSwK
KyAgICAgICAgQ2xhc3NOb3JtYWwsCisgICAgICAgIENsYXNzUXVpZXROYU4sCisgICAgICAgIENs
YXNzU2lnbmFsaW5nTmFOLAorICAgICAgICBDbGFzc1N1Ym5vcm1hbCwKKyAgICAgICAgQ2xhc3Na
ZXJvLAorICAgIH07CisKKyAgICBzdGF0aWMgY29uc3QgaW50IEViaWFzID0gMTAyMzsgLy8gc3Vi
dHJhY3RlZCBmcm9tIGVuY29kZWQgZXhwb25lbnQKKyAgICBzdGF0aWMgY29uc3QgaW50IEVtYXgg
PSAyMDQ3OworICAgIHN0YXRpYyBjb25zdCBpbnQgTnVtYmVyT2ZEaWdpdHMgPSAyOTsKKyAgICBz
dGF0aWMgY29uc3QgaW50IE51bWJlck9mRGlnaXRzSW5VaW50MzIgPSA4OworICAgIHN0YXRpYyBj
b25zdCBpbnQgUHJlY2lzaW9uID0gMjk7CisKKyAgICBzdHJ1Y3QgRW5jb2RlZERhdGEgeworICAg
ICAgICBpbnQgZGlnaXRBdChpbnQpIGNvbnN0OworICAgICAgICBpbnQgZXhwb25lbnRCaWFzZWQo
KSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXREaWdpdEF0KGNvbnN0IGludCBkcGRJbmRleCwgY29u
c3QgaW50IGRpZ2l0KTsKKyAgICAgICAgdm9pZCBzZXRFeHBvbmVudChpbnQpOworICAgICAgICB2
b2lkIHNldFNpZ24oaW50KTsKKyAgICAgICAgdWludDMyX3QgbV93b3Jkc1s0XTsKKyAgICB9Owor
CisgICAgRGVjaW1hbDEyOEltcGwoKTsKKyAgICBEZWNpbWFsMTI4SW1wbChpbnQzMl90KTsKKyAg
ICBEZWNpbWFsMTI4SW1wbChkb3VibGUpOworICAgIERlY2ltYWwxMjhJbXBsKGNvbnN0IERlY2lt
YWwxMjhJbXBsJik7CisgICAgZXhwbGljaXQgRGVjaW1hbDEyOEltcGwoY29uc3QgRW5jb2RlZERh
dGEmKTsKKworICAgIG9wZXJhdG9yIGRvdWJsZSgpIGNvbnN0OworCisgICAgRGVjaW1hbDEyOElt
cGwmIG9wZXJhdG9yID0oY29uc3QgRGVjaW1hbDEyOEltcGwmKTsKKyAgICBEZWNpbWFsMTI4SW1w
bCBvcGVyYXRvciArKGNvbnN0IERlY2ltYWwxMjhJbXBsJikgY29uc3Q7CisgICAgRGVjaW1hbDEy
OEltcGwgb3BlcmF0b3IgLShjb25zdCBEZWNpbWFsMTI4SW1wbCYpIGNvbnN0OworICAgIERlY2lt
YWwxMjhJbXBsIG9wZXJhdG9yICooY29uc3QgRGVjaW1hbDEyOEltcGwmKSBjb25zdDsKKyAgICBE
ZWNpbWFsMTI4SW1wbCBvcGVyYXRvciAvKGNvbnN0IERlY2ltYWwxMjhJbXBsJikgY29uc3Q7CisK
KyAgICBib29sIG9wZXJhdG9yID09KGNvbnN0IERlY2ltYWwxMjhJbXBsJikgY29uc3Q7CisgICAg
Ym9vbCBvcGVyYXRvciAhPShjb25zdCBEZWNpbWFsMTI4SW1wbCYgb3BlcmFuZCkgY29uc3QgeyBy
ZXR1cm4gIW9wZXJhdG9yID09KG9wZXJhbmQpOyB9CisgICAgYm9vbCBvcGVyYXRvciA8KGNvbnN0
IERlY2ltYWwxMjhJbXBsJiBvcGVyYW5kKSBjb25zdCB7IHJldHVybiAhb3BlcmF0b3IgPj0ob3Bl
cmFuZCk7IH0KKyAgICBib29sIG9wZXJhdG9yIDw9KGNvbnN0IERlY2ltYWwxMjhJbXBsJikgY29u
c3Q7CisgICAgYm9vbCBvcGVyYXRvciA+KGNvbnN0IERlY2ltYWwxMjhJbXBsJiBvcGVyYW5kKSBj
b25zdCB7IHJldHVybiAhb3BlcmF0b3IgPD0ob3BlcmFuZCk7IH0KKyAgICBib29sIG9wZXJhdG9y
ID49KGNvbnN0IERlY2ltYWwxMjhJbXBsJikgY29uc3Q7CisKKyAgICBpbnQgZXhwb25lbnQoKSBj
b25zdDsKKyAgICBJZWVlQ2xhc3MgaWVlZUNsYXNzKCkgY29uc3Q7CisgICAgaW50IHNpZ24oKSBj
b25zdDsKKyAgICBjb25zdCBFbmNvZGVkRGF0YSYgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2Rh
dGE7IH0KKyAgICB2b2lkIHNldFNpZ24oaW50KTsKKworICAgIERlY2ltYWwxMjhJbXBsIGRpdmlk
ZShjb25zdCBEZWNpbWFsMTI4SW1wbCYsIGRpdmlkZVJlc3VsdCkgY29uc3Q7CisgICAgYm9vbCBp
c0Zpbml0ZSgpIGNvbnN0OworICAgIERlY2ltYWwxMjhJbXBsIHJlbWFpbmRlcihjb25zdCBEZWNp
bWFsMTI4SW1wbCYpIGNvbnN0OworICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0OworCisgICAg
c3RhdGljIERlY2ltYWwxMjhJbXBsIGZyb21TdHJpbmcoY29uc3QgU3RyaW5nJik7CisgICAgc3Rh
dGljIERlY2ltYWwxMjhJbXBsIGluZmluaXR5KGludCk7CisgICAgc3RhdGljIERlY2ltYWwxMjhJ
bXBsIHF1aWV0TmFOKGludCk7CisgICAgc3RhdGljIERlY2ltYWwxMjhJbXBsIHplcm8oaW50KTsK
KworcHJpdmF0ZToKKyAgICBFbmNvZGVkRGF0YSBtX2RhdGE7CisKKyAgICBEZWNpbWFsMTI4SW1w
bChpbnQsIHVpbnQzMl90LCB1aW50MzJfdCk7CisgICAgRGVjaW1hbDEyOEltcGwoaW50LCB1aW50
NjRfdCk7CisKKyAgICBib29sIGlzU3BlY2lhbCgpIGNvbnN0OworICAgIGJvb2wgaXNaZXJvKCkg
Y29uc3Q7CisgICAgRGVjaW1hbDEyOEltcGwgcm91bmRBdChpbnQpIGNvbnN0OworCisgICAgRGVj
aW1hbDEyOEltcGwgY29tcGFyZVRvKGNvbnN0IERlY2ltYWwxMjhJbXBsJikgY29uc3Q7CisgICAg
Ym9vbCBmYXN0RXF1YWxzKGNvbnN0IERlY2ltYWwxMjhJbXBsJikgY29uc3Q7Cit9OworCit9IC8v
IFdlYkNvcmUKKworI2VuZGlmIC8vIERlY2ltYWwxMjhJbXBsX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dl
YktpdC5neXBpCmluZGV4IDlhYmMxZjhlNGE0ZGI3ZmU2MDA0M2FkMThlNzAwZDVkNzE3ZmYyYjku
LjkzZjAyY2JmNGFkZDU3ZDUzYmFjYWIyYWQyN2E4OTM1Y2UxNzFmMzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9XZWJLaXQuZ3lwaQpAQCAtOTQsNiArOTQsNyBAQAogICAgICAgICAgICAgJ3Rlc3RzL0Ns
aXBib2FyZENocm9taXVtVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0NvbXBvc2l0b3JG
YWtlR3JhcGhpY3NDb250ZXh0M0QuaCcsCiAgICAgICAgICAgICAndGVzdHMvQ29tcG9zaXRvckZh
a2VXZWJHcmFwaGljc0NvbnRleHQzRC5oJywKKyAgICAgICAgICAgICd0ZXN0cy9EZWNpbWFsMTI4
VGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0RyYWdJbWFnZVRlc3QuY3BwJywKICAgICAg
ICAgICAgICd0ZXN0cy9GYWtlQ0NMYXllclRyZWVIb3N0Q2xpZW50LmgnLAogICAgICAgICAgICAg
J3Rlc3RzL0Zha2VHcmFwaGljc0NvbnRleHQzRFRlc3QuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRGVjaW1hbDEyOFRlc3QuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9EZWNpbWFsMTI4VGVzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzM0OGMwZDIw
Y2Y1ODNmZWQzZTRjZjk4NjEyOGU4MDVjM2VjODAxZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRGVjaW1hbDEyOFRlc3QuY3BwCkBAIC0wLDAgKzEsODM1
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisg
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRlY2ltYWwxMjguaCIKKworI2luY2x1
ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSA8d3RmL0hleE51bWJlci5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+
CisKK25hbWVzcGFjZSBXVEYgeworOjpzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoOjpzdGQ6Om9z
dHJlYW0mIG9zLCBjb25zdCBTdHJpbmcmIHN0cmluZyk7Cit9IC8vIFdURgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7Cis6OnN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PCg6OnN0ZDo6b3N0cmVhbSYgb3Ms
IGNvbnN0IERlY2ltYWwxMjgmIGRlY2ltYWwpCit7CisgICAgcmV0dXJuIG9zIDw8IGRlY2ltYWwu
dG9TdHJpbmcoKS5hc2NpaSgpLmRhdGEoKTsKK30KK30gLy8gV2ViQ29yZQorCituYW1lc3BhY2Ug
eworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIEZsb2F0NjRCaXRzIHsK
K3N0YXRpYyBjb25zdCB1aW50NjRfdCBQb3NpdGl2ZUluZmluaXR5UGF0dGVybiA9IHVpbnQ2NF90
KDB4N0ZGMCkgPDwgNDg7CitzdGF0aWMgY29uc3QgdWludDY0X3QgUG9zaXRpdmVxdWlldE5hTlBh
dHRlcm4gPSB1aW50NjRfdCgweDdGRjgpIDw8IDQ4OworfSAvLyBGbG9hdDY0Qml0cworCitjbGFz
cyBCaW4xMjggeworcHVibGljOgorICAgIEJpbjEyOCh1aW50MzJfdCBhKQorICAgIHsKKyAgICAg
ICAgbV93b3Jkc1szXSA9IGE7CisgICAgICAgIG1fd29yZHNbMl0gPSAwOworICAgICAgICBtX3dv
cmRzWzFdID0gMDsKKyAgICAgICAgbV93b3Jkc1swXSA9IDA7CisgICAgfQorCisgICAgQmluMTI4
KHVpbnQzMl90IGEsIHVpbnQzMl90IGIsIHVpbnQzMl90IGMsIHVpbnQgZCkKKyAgICB7CisgICAg
ICAgIG1fd29yZHNbM10gPSBhOworICAgICAgICBtX3dvcmRzWzJdID0gYjsKKyAgICAgICAgbV93
b3Jkc1sxXSA9IGM7CisgICAgICAgIG1fd29yZHNbMF0gPSBkOworICAgIH0KKworICAgIEJpbjEy
OChjb25zdCBEZWNpbWFsMTI4JiBkMTI4KQorICAgIHsKKyAgICAgICAgOjptZW1jcHkobV93b3Jk
cywgZDEyOC52YWx1ZSgpLm1fd29yZHMsIHNpemVvZihtX3dvcmRzKSk7CisgICAgfQorCisgICAg
QmluMTI4KGNvbnN0IFN0cmluZyYgc3RyKQorICAgIHsKKyAgICAgICAgRGVjaW1hbDEyOCBkMTI4
ID0gRGVjaW1hbDEyODo6ZnJvbVN0cmluZyhzdHIpOworICAgICAgICA6Om1lbWNweShtX3dvcmRz
LCBkMTI4LnZhbHVlKCkubV93b3Jkcywgc2l6ZW9mKG1fd29yZHMpKTsKKyAgICB9CisKKyAgICBi
b29sIG9wZXJhdG9yID09KGNvbnN0IEJpbjEyOCYgcmhzKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuICE6Om1lbWNtcChtX3dvcmRzLCByaHMubV93b3Jkcywgc2l6ZW9mKG1fd29yZHMpKTsK
KyAgICB9CisKKyAgICBvcGVyYXRvciBEZWNpbWFsMTI4KCkgY29uc3QKKyAgICB7CisgICAgICAg
IERlY2ltYWwxMjggZDEyOCgwKTsKKyAgICAgICAgOjptZW1jcHkoY29uc3RfY2FzdDx1aW50MzJf
dCo+KGQxMjgudmFsdWUoKS5tX3dvcmRzKSwgbV93b3Jkcywgc2l6ZW9mKG1fd29yZHMpKTsKKyAg
ICAgICAgcmV0dXJuIGQxMjg7CisgICAgfQorCisgICAgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3QK
KyAgICB7CisgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICAgICAgYnVpbGRlci5h
cHBlbmQoIkJpbjEyOCgweCIpOworICAgICAgICBhcHBlbmRVbnNpZ25lZEFzSGV4Rml4ZWRTaXpl
KG1fd29yZHNbM10sIGJ1aWxkZXIsIDgpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgiLCAweCIp
OworICAgICAgICBhcHBlbmRVbnNpZ25lZEFzSGV4Rml4ZWRTaXplKG1fd29yZHNbMl0sIGJ1aWxk
ZXIsIDgpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgiLCAweCIpOworICAgICAgICBhcHBlbmRV
bnNpZ25lZEFzSGV4Rml4ZWRTaXplKG1fd29yZHNbMV0sIGJ1aWxkZXIsIDgpOworICAgICAgICBi
dWlsZGVyLmFwcGVuZCgiLCAweCIpOworICAgICAgICBhcHBlbmRVbnNpZ25lZEFzSGV4Rml4ZWRT
aXplKG1fd29yZHNbMF0sIGJ1aWxkZXIsIDgpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgiKSIp
OworICAgICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworICAgIH0KKworcHJpdmF0ZToK
KyAgICB1aW50MzJfdCBtX3dvcmRzWzRdOworfTsKKwordm9pZCBQcmludFRvKGNvbnN0IEJpbjEy
OCYgYmluMTI4LCBzdGQ6Om9zdHJlYW0qIG9zKQoreworICAgICpvcyA8PCBiaW4xMjgudG9TdHJp
bmcoKTsKK30KKworY2xhc3MgRGVjaW1hbDEyOFRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0
IHsKK3Byb3RlY3RlZDoKKyAgICBjbGFzcyBGbG9hdDY0IHsKKyAgICAgcHVibGljOgorICAgICAg
ICBleHBsaWNpdCBGbG9hdDY0KGRvdWJsZSBmNjQpIHsgbV92YWx1ZS5tX2Zsb2F0NjQgPSBmNjQ7
IH0KKyAgICAgICAgZXhwbGljaXQgRmxvYXQ2NCh1aW50NjRfdCB1NjQpIHsgbV92YWx1ZS5tX3Vp
bnQ2NCA9IHU2NDsgfQorICAgICAgICBvcGVyYXRvciBkb3VibGUoKSBjb25zdCB7IHJldHVybiBt
X3ZhbHVlLm1fZmxvYXQ2NDsgfQorCisgICAgICAgIC8vIEZJWE1FOiBUaGlzIHR5cGVkZWYgaXMg
d29ya2Fyb3VuZCBmb3IgQlVHIDgzODY0LiBPbmNlIGNoZWNrLXdlYmtpdC1zdHlsZQorICAgICAg
ICAvLyBzdG9wIGNvbXBsYWluZyBhYm91dCAib3BlcmF0b3IgWFhYX3QiLCB3ZSBjYW4gcmVtb3Zl
IHRoaXMgdHlwZWRlZiBhbmQKKyAgICAgICAgLy8gY2hhbmdlIG1ldGhvZCBzaWduYXR1cmUuCisg
ICAgICAgIHR5cGVkZWYgdWludDY0X3QgdWludDY0OworICAgICAgICBvcGVyYXRvciB1aW50NjQo
KSBjb25zdCB7IHJldHVybiBtX3ZhbHVlLm1fdWludDY0OyB9CisKKyAgICAgICAgRmxvYXQ2NChj
b25zdCB1aW50IHNpZ24sIGNvbnN0IHVpbnQ2NF90IHJhd19zaWduaWZpY2FuZCwgY29uc3QgdWlu
dCByYXdfZXhwb25lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChyYXdfZXhwb25l
bnQgPD0gMjA0Nyk7CisgICAgICAgICAgICBBU1NFUlQocmF3X3NpZ25pZmljYW5kIDw9ICh1aW50
NjRfdCgxKSA8PCA1MikgLSAxKTsKKyAgICAgICAgICAgIG1fdmFsdWUubV91aW50NjQgPSAodWlu
dDY0X3Qoc2lnbikgPDwgNjMpIHwgKHVpbnQ2NF90KHJhd19leHBvbmVudCkgPDwgNTIpIHwgcmF3
X3NpZ25pZmljYW5kOworICAgICAgICB9CisKKyAgICAgICAgc3RhdGljIGJvb2wgaXNRdWlldE5h
Tihkb3VibGUgeCwgaW50IHNpZ24pCisgICAgICAgIHsKKyAgICAgICAgICAgIEZsb2F0NjQgZnU2
NCh4KTsKKyAgICAgICAgICAgIGNvbnN0IHVpbnQzMl90IGhpZ2gxNiA9IHVpbnQzMl90KHVpbnQ2
NF90KGZ1NjQpID4+IDQ4KTsKKyAgICAgICAgICAgIHJldHVybiBzaWduID8gaGlnaDE2ID09IDB4
RkZGOCA6IGhpZ2gxNiA9PSAweDdGRjg7CisgICAgICAgIH0KKworICAgICBwcml2YXRlOgorICAg
ICAgICB1bmlvbiB7CisgICAgICAgICAgICBkb3VibGUgbV9mbG9hdDY0OworICAgICAgICAgICAg
dWludDY0X3QgbV91aW50NjQ7CisgICAgICAgIH0gbV92YWx1ZTsKKyAgICB9OworCisgICAgU3Ry
aW5nIGFkZChjb25zdCBEZWNpbWFsMTI4JiBsaHMsIGNvbnN0IERlY2ltYWwxMjgmIHJocykKKyAg
ICB7CisgICAgICAgIHJldHVybiAobGhzICsgcmhzKS50b1N0cmluZygpOworICAgIH0KKworICAg
IFN0cmluZyBhZGQoY29uc3QgU3RyaW5nIGxoc1N0ciwgY29uc3QgU3RyaW5nIHJoc1N0cikKKyAg
ICB7CisgICAgICAgIGNvbnN0IERlY2ltYWwxMjggbGhzID0gZnJvbVN0cmluZyhsaHNTdHIpOwor
ICAgICAgICBjb25zdCBEZWNpbWFsMTI4IHJocyA9IGZyb21TdHJpbmcocmhzU3RyKTsKKyAgICAg
ICAgY29uc3QgRGVjaW1hbDEyOCByZXN1bHQgPSBsaHMgKyByaHM7CisgICAgICAgIHJldHVybiBy
ZXN1bHQudG9TdHJpbmcoKTsKKyAgICB9CisKKyAgICBTdHJpbmcgZGl2KGNvbnN0IERlY2ltYWwx
MjgmIGxocywgY29uc3QgRGVjaW1hbDEyOCYgcmhzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIChs
aHMgLyByaHMpLnRvU3RyaW5nKCk7CisgICAgfQorCisgICAgU3RyaW5nIGRpdihjb25zdCBTdHJp
bmcgbGhzU3RyLCBjb25zdCBTdHJpbmcgcmhzU3RyKQorICAgIHsKKyAgICAgICAgY29uc3QgRGVj
aW1hbDEyOCBsaHMgPSBmcm9tU3RyaW5nKGxoc1N0cik7CisgICAgICAgIGNvbnN0IERlY2ltYWwx
MjggcmhzID0gZnJvbVN0cmluZyhyaHNTdHIpOworICAgICAgICBjb25zdCBEZWNpbWFsMTI4IHJl
c3VsdCA9IGxocyAvIHJoczsKKyAgICAgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOworICAg
IH0KKworICAgIFN0cmluZyBkaXZJbnQoY29uc3QgU3RyaW5nIGxoc1N0ciwgY29uc3QgU3RyaW5n
IHJoc1N0cikKKyAgICB7CisgICAgICAgIGNvbnN0IERlY2ltYWwxMjggbGhzID0gZnJvbVN0cmlu
ZyhsaHNTdHIpOworICAgICAgICBjb25zdCBEZWNpbWFsMTI4IHJocyA9IGZyb21TdHJpbmcocmhz
U3RyKTsKKyAgICAgICAgY29uc3QgRGVjaW1hbDEyOCByZXN1bHQgPSBsaHMudHJ1bmNhdGUocmhz
KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOworICAgIH0KKworICAgIGJvb2wg
ZXF1YWwoY29uc3QgU3RyaW5nIGxoc1N0ciwgY29uc3QgU3RyaW5nIHJoc1N0cikKKyAgICB7Cisg
ICAgICAgIGNvbnN0IERlY2ltYWwxMjggbGhzID0gZnJvbVN0cmluZyhsaHNTdHIpOworICAgICAg
ICBjb25zdCBEZWNpbWFsMTI4IHJocyA9IGZyb21TdHJpbmcocmhzU3RyKTsKKyAgICAgICAgcmV0
dXJuIGxocyA9PSByaHM7CisgICAgfQorCisgICAgU3RyaW5nIGZyb21GbG9hdDY0KGRvdWJsZSBm
NjQpCisgICAgeworICAgICAgICByZXR1cm4gRGVjaW1hbDEyOChmNjQpLnRvU3RyaW5nKCk7Cisg
ICAgfQorCisgICAgU3RyaW5nIGZyb21GbG9hdDY0KHVpbnQ2NF90IHU2NCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBEZWNpbWFsMTI4KGRvdWJsZShGbG9hdDY0KHU2NCkpKS50b1N0cmluZygpOwor
ICAgIH0KKworICAgIFN0cmluZyBmcm9tRmxvYXQ2NCh1aW50IHNpZ24sIHVpbnQ2NF90IHNpZ25p
ZmljYW5kLCB1aW50IGV4cG9uZW50KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERlY2ltYWwxMjgo
ZG91YmxlKEZsb2F0NjQoc2lnbiwgc2lnbmlmaWNhbmQsIGV4cG9uZW50KSkpLnRvU3RyaW5nKCk7
CisgICAgfQorCisgICAgRGVjaW1hbDEyOCBmcm9tU3RyaW5nKGNvbnN0IFN0cmluZyBzdHIpCisg
ICAgeworICAgICAgICByZXR1cm4gRGVjaW1hbDEyODo6ZnJvbVN0cmluZyhzdHIpOworICAgIH0K
KworICAgIGJvb2wgZ3JlYXRlclRoYW4oY29uc3QgU3RyaW5nIGxoc1N0ciwgY29uc3QgU3RyaW5n
IHJoc1N0cikKKyAgICB7CisgICAgICAgIGNvbnN0IERlY2ltYWwxMjggbGhzID0gZnJvbVN0cmlu
ZyhsaHNTdHIpOworICAgICAgICBjb25zdCBEZWNpbWFsMTI4IHJocyA9IGZyb21TdHJpbmcocmhz
U3RyKTsKKyAgICAgICAgcmV0dXJuIGxocyA+IHJoczsKKyAgICB9CisKKyAgICBEZWNpbWFsMTI4
IGluZmluaXR5KGludCBzaWduID0gMCkKKyAgICB7CisgICAgICAgIHJldHVybiBzaWduID8gZnJv
bVN0cmluZygiLUluZiIpIDogZnJvbVN0cmluZygiSW5mIik7CisgICAgfQorCisgICAgYm9vbCBs
ZXNzVGhhbihjb25zdCBTdHJpbmcgbGhzU3RyLCBjb25zdCBTdHJpbmcgcmhzU3RyKQorICAgIHsK
KyAgICAgICAgY29uc3QgRGVjaW1hbDEyOCBsaHMgPSBmcm9tU3RyaW5nKGxoc1N0cik7CisgICAg
ICAgIGNvbnN0IERlY2ltYWwxMjggcmhzID0gZnJvbVN0cmluZyhyaHNTdHIpOworICAgICAgICBy
ZXR1cm4gbGhzIDwgcmhzOworICAgIH0KKworICAgIFN0cmluZyBtdWwoY29uc3QgRGVjaW1hbDEy
OCYgbGhzLCBjb25zdCBEZWNpbWFsMTI4JiByaHMpCisgICAgeworICAgICAgICByZXR1cm4gKGxo
cyAqIHJocykudG9TdHJpbmcoKTsKKyAgICB9CisKKyAgICBTdHJpbmcgbXVsKGNvbnN0IFN0cmlu
ZyBsaHNTdHIsIGNvbnN0IFN0cmluZyByaHNTdHIpCisgICAgeworICAgICAgICBjb25zdCBEZWNp
bWFsMTI4IGxocyA9IGZyb21TdHJpbmcobGhzU3RyKTsKKyAgICAgICAgY29uc3QgRGVjaW1hbDEy
OCByaHMgPSBmcm9tU3RyaW5nKHJoc1N0cik7CisgICAgICAgIGNvbnN0IERlY2ltYWwxMjggcmVz
dWx0ID0gbGhzICogcmhzOworICAgICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CisgICAg
fQorCisgICAgYm9vbCBub3RFcXVhbChjb25zdCBTdHJpbmcgbGhzU3RyLCBjb25zdCBTdHJpbmcg
cmhzU3RyKQorICAgIHsKKyAgICAgICAgY29uc3QgRGVjaW1hbDEyOCBsaHMgPSBmcm9tU3RyaW5n
KGxoc1N0cik7CisgICAgICAgIGNvbnN0IERlY2ltYWwxMjggcmhzID0gZnJvbVN0cmluZyhyaHNT
dHIpOworICAgICAgICByZXR1cm4gbGhzICE9IHJoczsKKyAgICB9CisKKyAgICBEZWNpbWFsMTI4
IHF1aWV0TmFOKGludCBzaWduKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHNpZ24gPyBEZWNpbWFs
MTI4Ojpmcm9tU3RyaW5nKCItTmFOIikgOiBEZWNpbWFsMTI4Ojpmcm9tU3RyaW5nKCJOYU4iKTsK
KyAgICB9CisKKyAgICBTdHJpbmcgcmVtYWluZGVyKGNvbnN0IFN0cmluZyBsaHNTdHIsIGNvbnN0
IFN0cmluZyByaHNTdHIpCisgICAgeworICAgICAgICBjb25zdCBEZWNpbWFsMTI4IGxocyA9IGZy
b21TdHJpbmcobGhzU3RyKTsKKyAgICAgICAgY29uc3QgRGVjaW1hbDEyOCByaHMgPSBmcm9tU3Ry
aW5nKHJoc1N0cik7CisgICAgICAgIGNvbnN0IERlY2ltYWwxMjggcmVzdWx0ID0gbGhzLnJlbWFp
bmRlcihyaHMpOworICAgICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CisgICAgfQorCisg
ICAgRGVjaW1hbDEyOCBzaWduYWxpbmdOYU4oaW50IHNpZ24gPSAwKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIHNpZ24gPyBEZWNpbWFsMTI4Ojpmcm9tU3RyaW5nKCItc05hTiIpIDogRGVjaW1hbDEy
ODo6ZnJvbVN0cmluZygic05hTiIpOworICAgIH0KKworICAgIFN0cmluZyBzdWIoY29uc3QgRGVj
aW1hbDEyOCYgbGhzLCBjb25zdCBEZWNpbWFsMTI4JiByaHMpCisgICAgeworICAgICAgICByZXR1
cm4gKGxocyAtIHJocykudG9TdHJpbmcoKTsKKyAgICB9CisKKyAgICBTdHJpbmcgc3ViKGNvbnN0
IFN0cmluZyBsaHNTdHIsIGNvbnN0IFN0cmluZyByaHNTdHIpCisgICAgeworICAgICAgICBjb25z
dCBEZWNpbWFsMTI4IGxocyA9IGZyb21TdHJpbmcobGhzU3RyKTsKKyAgICAgICAgY29uc3QgRGVj
aW1hbDEyOCByaHMgPSBmcm9tU3RyaW5nKHJoc1N0cik7CisgICAgICAgIGNvbnN0IERlY2ltYWwx
MjggcmVzdWx0ID0gbGhzIC0gcmhzOworICAgICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7
CisgICAgfQorCisgICAgU3RyaW5nIHRvU3RyaW5nKHVpbnQzMl90IGEsIHVpbnQzMl90IGIsIHVp
bnQzMl90IGMsIHVpbnQzMl90IGQpCisgICAgeworICAgICAgICByZXR1cm4gRGVjaW1hbDEyOChC
aW4xMjgoYSwgYiwgYywgZCkpLnRvU3RyaW5nKCk7CisgICAgfQorCisgICAgU3RyaW5nIHRydW5j
YXRlKGNvbnN0IFN0cmluZyBsaHNTdHIsIGNvbnN0IFN0cmluZyByaHNTdHIpCisgICAgeworICAg
ICAgICBjb25zdCBEZWNpbWFsMTI4IGxocyA9IGZyb21TdHJpbmcobGhzU3RyKTsKKyAgICAgICAg
Y29uc3QgRGVjaW1hbDEyOCByaHMgPSBmcm9tU3RyaW5nKHJoc1N0cik7CisgICAgICAgIGNvbnN0
IERlY2ltYWwxMjggcmVzdWx0ID0gbGhzLnRydW5jYXRlKHJocyk7CisgICAgICAgIHJldHVybiBy
ZXN1bHQudG9TdHJpbmcoKTsKKyAgICB9CisKKyAgICBEZWNpbWFsMTI4IHplcm8oaW50IHNpZ24g
PSAwKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHNpZ24gPyBEZWNpbWFsMTI4Ojpmcm9tU3RyaW5n
KCItMCIpIDogRGVjaW1hbDEyODo6ZnJvbVN0cmluZygiMCIpOworICAgIH0KK307CisKK1RFU1Rf
RihEZWNpbWFsMTI4VGVzdCwgQ29tcGFyZSkKK3sKKyAgICBFWFBFQ1RfVFJVRShsZXNzVGhhbigi
Mi4xIiwgIjMiKSk7CisgICAgRVhQRUNUX1RSVUUoZXF1YWwoIjIuMSIsICIyLjEiKSk7CisgICAg
RVhQRUNUX1RSVUUoZXF1YWwoIjIuMSIsICIyLjEwIikpOworICAgIEVYUEVDVF9UUlVFKGdyZWF0
ZXJUaGFuKCIzIiwgIjIuMSIpKTsKKyAgICBFWFBFQ1RfVFJVRShncmVhdGVyVGhhbigiMi4xIiwg
Ii0zIikpOworICAgIEVYUEVDVF9UUlVFKGxlc3NUaGFuKCItMyIsICIyLjEiKSk7CisgICAgRVhQ
RUNUX1RSVUUobm90RXF1YWwoIjEuMCIsICIyLjAiKSk7CisgICAgRVhQRUNUX0ZBTFNFKG5vdEVx
dWFsKCIxLjAiLCAiMS4wIikpOworfQorCitURVNUX0YoRGVjaW1hbDEyOFRlc3QsIENvbXBhcmVT
cGVjaWFsVmFsdWVzKQoreworICAgIEVYUEVDVF9UUlVFKGVxdWFsKCJJbmYiLCAiSW5mIikpOwor
ICAgIEVYUEVDVF9UUlVFKGVxdWFsKCItSW5mIiwgIi1JbmYiKSk7CisKKyAgICBFWFBFQ1RfVFJV
RShncmVhdGVyVGhhbigiSW5mIiwgIjEiKSk7CisgICAgRVhQRUNUX1RSVUUobGVzc1RoYW4oIi1J
bmYiLCAiLTEiKSk7CisKKyAgICBFWFBFQ1RfRkFMU0UoZXF1YWwoIk5hTiIsICJOYU4iKSk7Cisg
ICAgRVhQRUNUX0ZBTFNFKGVxdWFsKCItTmFOIiwgIi1OYU4iKSk7CisKKyAgICBFWFBFQ1RfVFJV
RShlcXVhbCgiKzAiLCAiLTAiKSk7Cit9CisKK1RFU1RfRihEZWNpbWFsMTI4VGVzdCwgZnJvbUlu
dDMyKQoreworICAgIEVYUEVDVF9FUShTdHJpbmcoIjAiKSwgRGVjaW1hbDEyOCgwKS50b1N0cmlu
ZygpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCIxMjM0NSIpLCBEZWNpbWFsMTI4KDEyMzQ1KS50
b1N0cmluZygpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCItMTIzNDUiKSwgRGVjaW1hbDEyOCgt
MTIzNDUpLnRvU3RyaW5nKCkpOworICAgIEVYUEVDVF9FUShTdHJpbmcoIjIxNDc0ODM2NDciKSwg
RGVjaW1hbDEyOCgweDdGRkZGRkZGKS50b1N0cmluZygpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5n
KCItMjE0NzQ4MzY0OCIpLCBEZWNpbWFsMTI4KC0xIDw8IDMxKS50b1N0cmluZygpKTsKKyAgICBF
WFBFQ1RfRVEoQmluMTI4KDB4M0ZGMDAwMDAsIDAsIDAsIDB4NTApLCBEZWNpbWFsMTI4KDUwKSk7
Cit9CisKK1RFU1RfRihEZWNpbWFsMTI4VGVzdCwgZnJvbUZsb2F0NjQpCit7CisgICAgRVhQRUNU
X0VRKFN0cmluZygiMCIpLCBmcm9tRmxvYXQ2NCgwLjApKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5n
KCIxIiksIGZyb21GbG9hdDY0KDEuMCkpOworICAgIEVYUEVDVF9FUShTdHJpbmcoIjUiKSwgZnJv
bUZsb2F0NjQoNS4wKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiLTYiKSwgZnJvbUZsb2F0NjQo
LTYuMCkpOworICAgIEVYUEVDVF9FUShTdHJpbmcoIjEuMjMiKSwgZnJvbUZsb2F0NjQoMS4yMykp
OworICAgIEVYUEVDVF9FUShTdHJpbmcoIi01NjcuODkiKSwgZnJvbUZsb2F0NjQoLTU2Ny44OSkp
OworICAgIEVYUEVDVF9FUShTdHJpbmcoIjAuMSIpLCBmcm9tRmxvYXQ2NCgwLjEpKTsKKworICAg
IEVYUEVDVF9FUShCaW4xMjgoMHgzRkUwMDAwMCwgMCwgMCwgMSksIERlY2ltYWwxMjgoMC4xKSk7
CisgICAgRVhQRUNUX0VRKEJpbjEyOCgweDNGRDAwMDAwLCAwLCAwLCAxKSwgRGVjaW1hbDEyOCgw
LjAxKSk7CisgICAgRVhQRUNUX0VRKEJpbjEyOCgweDNGQzAwMDAwLCAwLCAwLCAxKSwgRGVjaW1h
bDEyOCgwLjAwMSkpOworICAgIEVYUEVDVF9FUShCaW4xMjgoMHgzRkIwMDAwMCwgMCwgMCwgMSks
IERlY2ltYWwxMjgoMC4wMDAxKSk7CisKKyAgICBFWFBFQ1RfRVEoQmluMTI4KDB4M0ZGMDAwMDAs
IDAsIDAsIDB4NTApLCBEZWNpbWFsMTI4KDUwLjApKTsKKworICAgIEVYUEVDVF9FUShTdHJpbmco
IjQ1MDM1OTk2MjczNzA0OTYiKSwgZnJvbUZsb2F0NjQoMCwgMCwgMTA3NSkpOworCisgICAgRVhQ
RUNUX0VRKFN0cmluZygiLTAiKSwgZnJvbUZsb2F0NjQoMSwgMCwgMCkpOworICAgIEVYUEVDVF9F
UShTdHJpbmcoImluZmluaXR5IiksIGZyb21GbG9hdDY0KDAsIDAsIDIwNDcpKTsKKyAgICBFWFBF
Q1RfRVEoU3RyaW5nKCJOYU4iKSwgZnJvbUZsb2F0NjQoRmxvYXQ2NEJpdHM6OlBvc2l0aXZlcXVp
ZXROYU5QYXR0ZXJuKSk7CisKKyAgICAvLyAyLjcxODI4MTgyODQ1OTA0NTIzNTM2MDI4NzQ3MTM1
MjY2MjQ5Nzc1NzI0NzA5MzY5OTk1OTUKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCIyLjcxODI4MTgy
ODQ1OTA0NSIpLCBmcm9tRmxvYXQ2NCh1aW50NjRfdCgweDQwMDViZjBhOGIxNDU3Njl1KSkpOwor
CisgICAgLy8gMy4xNDE1OTI2NTM1ODk3OTMyMzg0NjI2NDMzODMyNzk1MDI4ODQxOTcxNjkzOTkz
NzUxMDU4CisgICAgRVhQRUNUX0VRKFN0cmluZygiMy4xNDE1OTI2NTM1ODk3OTMiKSwgZnJvbUZs
b2F0NjQodWludDY0X3QoMHg0MDA5MjFGQjU0NDQyRDE4dSkpKTsKKworICAgIC8vIGxlYXN0LXBv
c2l0aXZlLW5vcm1hbGl6ZWQtZG91YmxlLWZsb2F0CisgICAgRVhQRUNUX0VRKFN0cmluZygiMi4y
MjUwNzM4NTg1MDcyMDFFLTMwOCIpLCBmcm9tRmxvYXQ2NCgwLCAwLCAxKSk7CisKKyAgICAvLyBt
b3N0LXBvc2l0aXZlLWRvdWJsZS1mbG9hdAorICAgIEVYUEVDVF9FUShTdHJpbmcoIjEuNzk3Njkz
MTM0ODYyMzE2RSszMDgiKSwgZnJvbUZsb2F0NjQoMCwgKHVpbnQ2NF90KDEpIDw8IDUyKSAtIDEs
IDIwNDYpKTsKKworICAgIC8vICAgIGRvdWJsZS1mbG9hdC1lcHNpbG9uCisgICAgRVhQRUNUX0VR
KFN0cmluZygiMS4xMTAyMjMwMjQ2MjUxNTdFLTE2IiksIGZyb21GbG9hdDY0KDAsIDEsIDk3MCkp
OworCisgICAgLy8gU3Vibm9ybWFsCisgICAgLy8gbGVhc3QtcG9zaXRpdmUtZG91YmxlLWZsb2F0
KDVFLTMyNCkKKyAgICAvLyBNU1ZTMjAxMCA0Ljk0MDY1NjQ1ODQxMmUtMzI0I0RFTgorICAgIEVY
UEVDVF9FUShTdHJpbmcoIjQuOTQwNjU2NDU4NDEyNDY1RS0zMjQiKSwgZnJvbUZsb2F0NjQoMCwg
MSwgMCkpOworfQorCisvLyBOb3RlOiBBbGwgY29tcGFyaXNvbiBtdXN0IGJlIGRvbmUgaW4gYmlu
YXJ5IGZvcm1hdC4gRGVjaW1hbDEyOCBvcGVyYXRvciA9PQorLy8gY2hlY2tlcyBudW1lcmljIGVx
dWFsaXR5LgorVEVTVF9GKERlY2ltYWwxMjhUZXN0LCBmcm9tU3RyaW5nKQoreworICAgIEVYUEVD
VF9FUShCaW4xMjgoMHgzRkYwMDAwMCwgMCwgMCwgMHgwMCksIEJpbjEyOCgiMCIpKTsKKyAgICBF
WFBFQ1RfRVEoQmluMTI4KDB4QkZGMDAwMDAsIDAsIDAsIDB4MDApLCBCaW4xMjgoIi0wIikpOwor
CisgICAgRVhQRUNUX0VRKEJpbjEyOCgweDNGRjAwMDAwLCAwLCAwLCAweDAwKSwgQmluMTI4KCIw
MCIpKTsKKyAgICBFWFBFQ1RfRVEoQmluMTI4KDB4M0ZGMDAwMDAsIDAsIDAsIDB4MDUpLCBCaW4x
MjgoIjUiKSk7CisgICAgRVhQRUNUX0VRKEJpbjEyOCgweDNGRjAwMDAwLCAwLCAwLCAweDA1KSwg
QmluMTI4KCIwNSIpKTsKKyAgICBFWFBFQ1RfRVEoQmluMTI4KDB4M0ZGMDAwMDAsIDAsIDAsIDB4
MTApLCBCaW4xMjgoIjEwIikpOworICAgIEVYUEVDVF9FUShCaW4xMjgoMHgzRkYwMDAwMCwgMCwg
MCwgMHg1MCksIEJpbjEyOCgiNTAiKSk7CisgICAgRVhQRUNUX0VRKEJpbjEyOCgweDNGRjAwMDAw
LCAwLCAwLCAweDc3KSwgQmluMTI4KCI3NyIpKTsKKworICAgIEVYUEVDVF9FUShCaW4xMjgoMHgz
RUMwMDAwMCwgMCwgMCwgMCksIEJpbjEyOCgiMEUtMTkiKSk7CisgICAgRVhQRUNUX0VRKEJpbjEy
OCgweDQwMjAwMDAwLCAwLCAwLCAwKSwgQmluMTI4KCIwRSszIikpOworICAgIEVYUEVDVF9FUShC
aW4xMjgoMHgzRkIwMDAwMCwgMCwgMCwgMHg1MDAwKSwgQmluMTI4KCIwLjUwMDAiKSk7CisgICAg
RVhQRUNUX0VRKEJpbjEyOCgweEJGRDAwMDAwLCAwLCAwLCAweDc1MCksIEJpbjEyOCgiLTcuNTAi
KSk7CisgICAgRVhQRUNUX0VRKEJpbjEyOCgweEJGRjAwMDAwLCAwLCAwLCAweDc1MCksIEJpbjEy
OCgiLTc1MCIpKTsKKworICAgIEVYUEVDVF9FUShCaW4xMjgoMHhDMDAwMDAwMCwgMCwgMCwgNSks
IEJpbjEyOCgiLTVFMSIpKTsKKworICAgIEVYUEVDVF9FUShCaW4xMjgoMHgzRkYxMjM0NSwgMHg2
Nzg5MDEyMywgMHg0NTY3ODkwMSwgMHgyMzQ1Njc4OXUpLCBCaW4xMjgoIisxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OSIpKTsKKyAgICBFWFBFQ1RfRVEoQmluMTI4KDB4QkZGMTIzNDUsIDB4
Njc4OTAxMjMsIDB4NDU2Nzg5MDEsIDB4MjM0NTY3ODl1KSwgQmluMTI4KCItMTIzNDU2Nzg5MDEy
MzQ1Njc4OTAxMjM0NTY3ODkiKSk7CisKKyAgICBFWFBFQ1RfRVEoQmluMTI4KDAsIDAsIDAsIDAp
LCBCaW4xMjgoIjBFLTEwMjMiKSk7CisgICAgRVhQRUNUX0VRKEJpbjEyOCgweDgwMDAwMDAwLCAw
LCAwLCAwKSwgQmluMTI4KCItMEUtMTAyMyIpKTsKKworICAgIEVYUEVDVF9FUShCaW4xMjgoMHg3
RkUxMDAwMCwgMCwgMCwgMCksIEJpbjEyOCgiMS4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
RSsxMDUxIikpOworICAgIEVYUEVDVF9FUShCaW4xMjgoMHhGRkUxMDAwMCwgMCwgMCwgMCksIEJp
bjEyOCgiLTEuMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEUrMTA1MSIpKTsKKworICAgIEVY
UEVDVF9FUShCaW4xMjgoMHg3RkUwMDAwMCwgMCwgMCwgMSksIEJpbjEyOCgiMUUrMTAyMyIpKTsK
KyAgICBFWFBFQ1RfRVEoQmluMTI4KDB4RkZFMDAwMDAsIDAsIDAsIDEpLCBCaW4xMjgoIi0xRSsx
MDIzIikpOworCisgICAgRVhQRUNUX0VRKEJpbjEyOCgweDdGRTk5OTk5LCAweDk5OTk5OTk5LCAw
eDk5OTk5OTk5LCAweDk5OTk5OTk5KSwgQmluMTI4KCI5Ljk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTlFKzEwNTEiKSk7CisgICAgRVhQRUNUX0VRKEJpbjEyOCgweEZGRTk5OTk5LCAweDk5OTk5
OTk5LCAweDk5OTk5OTk5LCAweDk5OTk5OTk5KSwgQmluMTI4KCItOS45OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5RSsxMDUxIikpOworCisgICAgRVhQRUNUX0VRKEJpbjEyOCgweDAwMTAwMDAw
LCAwLCAwLCAwKSwgQmluMTI4KCIwRS0xMDIyIikpOworICAgIEVYUEVDVF9FUShCaW4xMjgoMHg4
MDEwMDAwMCwgMCwgMCwgMCksIEJpbjEyOCgiLTBFLTEwMjIiKSk7CisKKyAgICBFWFBFQ1RfRVEo
QmluMTI4KDB4MDAxMDAwMDAsIDAsIDAsIDEpLCBCaW4xMjgoIjFFLTEwMjIiKSk7CisgICAgRVhQ
RUNUX0VRKEJpbjEyOCgweDgwMTAwMDAwLCAwLCAwLCAxKSwgQmluMTI4KCItMUUtMTAyMiIpKTsK
K30KKworVEVTVF9GKERlY2ltYWwxMjhUZXN0LCBmcm9tU3RyaW5nU3Vibm9ybWFsKQoreworICAg
IEVYUEVDVF9FUShCaW4xMjgoMCwgMCwgMCwgMCksIEJpbjEyOCgiMEUtMTAyMyIpKTsKKyAgICBF
WFBFQ1RfRVEoQmluMTI4KDAsIDAsIDAsIDEpLCBCaW4xMjgoIjFFLTEwMjMiKSk7CisgICAgRVhQ
RUNUX0VRKEJpbjEyOCgwLCAwLCAwLCAweDEwKSwgQmluMTI4KCIxLjBFLTEwMjIiKSk7CisgICAg
RVhQRUNUX0VRKEJpbjEyOCgweDAwMDEwMDAwLCAwLCAwLCAwKSwgQmluMTI4KCIxLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDBFLTk5NSIpKTsKKyAgICBFWFBFQ1RfRVEoQmluMTI4KDB4MDAw
OTk5OTksIDB4OTk5OTk5OTksIDB4OTk5OTk5OTksIDB4OTk5OTk5OTkpLCBCaW4xMjgoIjkuOTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OUUtOTk1IikpOworfQorCitURVNUX0YoRGVjaW1hbDEy
OFRlc3QsIGZyb21TdHJpbmdTcGVjaWFsVmFsdWVzKQoreworICAgIEVYUEVDVF9FUShCaW4xMjgo
MHg3RkYwMDAwMCksIEJpbjEyOCgiaW5maW5pdHkiKSk7CisgICAgRVhQRUNUX0VRKEJpbjEyOCgw
eDdGRjAwMDAwKSwgQmluMTI4KCJJbmYiKSk7CisgICAgRVhQRUNUX0VRKEJpbjEyOCgweDdGRjEw
MDAwKSwgQmluMTI4KCJOYU4iKSk7CisKKyAgICBFWFBFQ1RfRVEoQmluMTI4KDB4RkZGMDAwMDAp
LCBCaW4xMjgoIi1pbmZpbml0eSIpKTsKKyAgICBFWFBFQ1RfRVEoQmluMTI4KDB4RkZGMDAwMDAp
LCBCaW4xMjgoIi1JbmYiKSk7CisgICAgRVhQRUNUX0VRKEJpbjEyOCgweEZGRjEwMDAwKSwgQmlu
MTI4KCItTmFOIikpOworfQorCitURVNUX0YoRGVjaW1hbDEyOFRlc3QsIGZyb21TdHJpbmdFcnJv
cikKK3sKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCJOYU4iKSwgZnJvbVN0cmluZygieCIpLnRvU3Ry
aW5nKCkpOworICAgIEVYUEVDVF9FUShTdHJpbmcoIk5hTiIpLCBmcm9tU3RyaW5nKCIwLiIpLnRv
U3RyaW5nKCkpOworICAgIEVYUEVDVF9FUShTdHJpbmcoIk5hTiIpLCBmcm9tU3RyaW5nKCIxeCIp
LnRvU3RyaW5nKCkpOworCisgICAgRVhQRUNUX0VRKFN0cmluZygiTmFOIiksIGZyb21TdHJpbmco
IjFFeCIpLnRvU3RyaW5nKCkpOworICAgIEVYUEVDVF9FUShTdHJpbmcoIk5hTiIpLCBmcm9tU3Ry
aW5nKCIxRTJ4IikudG9TdHJpbmcoKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiTmFOIiksIGZy
b21TdHJpbmcoIjFFK3giKS50b1N0cmluZygpKTsKKworICAgIEVYUEVDVF9FUShTdHJpbmcoIk5h
TiIpLCBmcm9tU3RyaW5nKCIrSXgiKS50b1N0cmluZygpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5n
KCJOYU4iKSwgZnJvbVN0cmluZygiK054IikudG9TdHJpbmcoKSk7CisgICAgRVhQRUNUX0VRKFN0
cmluZygiTmFOIiksIGZyb21TdHJpbmcoIitTeCIpLnRvU3RyaW5nKCkpOworICAgIEVYUEVDVF9F
UShTdHJpbmcoIk5hTiIpLCBmcm9tU3RyaW5nKCIreCIpLnRvU3RyaW5nKCkpOworCisgICAgRVhQ
RUNUX0VRKFN0cmluZygiTmFOIiksIGZyb21TdHJpbmcoIlN4IikudG9TdHJpbmcoKSk7CisgICAg
RVhQRUNUX0VRKFN0cmluZygiTmFOIiksIGZyb21TdHJpbmcoIk54IikudG9TdHJpbmcoKSk7Cisg
ICAgRVhQRUNUX0VRKFN0cmluZygiTmFOIiksIGZyb21TdHJpbmcoIk5heCIpLnRvU3RyaW5nKCkp
OworICAgIEVYUEVDVF9FUShTdHJpbmcoIk5hTiIpLCBmcm9tU3RyaW5nKCJOYU54IikudG9TdHJp
bmcoKSk7CisKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCJOYU4iKSwgZnJvbVN0cmluZygiSXgiKS50
b1N0cmluZygpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCJOYU4iKSwgZnJvbVN0cmluZygiSW54
IikudG9TdHJpbmcoKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiTmFOIiksIGZyb21TdHJpbmco
IkluZngiKS50b1N0cmluZygpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCJOYU4iKSwgZnJvbVN0
cmluZygiSW5maXgiKS50b1N0cmluZygpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCJOYU4iKSwg
ZnJvbVN0cmluZygiSW5maW54IikudG9TdHJpbmcoKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygi
TmFOIiksIGZyb21TdHJpbmcoIkluZmluaXgiKS50b1N0cmluZygpKTsKKyAgICBFWFBFQ1RfRVEo
U3RyaW5nKCJOYU4iKSwgZnJvbVN0cmluZygiSW5maW5pdHgiKS50b1N0cmluZygpKTsKKyAgICBF
WFBFQ1RfRVEoU3RyaW5nKCJOYU4iKSwgZnJvbVN0cmluZygiSW5maW5pdHl4IikudG9TdHJpbmco
KSk7Cit9CisKK1RFU1RfRihEZWNpbWFsMTI4VGVzdCwgT3BBZGQpCit7CisgICAgY29uc3QgRGVj
aW1hbDEyOCYgbXplcm8gPSB6ZXJvKDEpOworICAgIGNvbnN0IERlY2ltYWwxMjgmIHB6ZXJvID0g
emVybygpOworCisgICAgY29uc3QgRGVjaW1hbDEyOCBvbmUoMSk7CisgICAgY29uc3QgRGVjaW1h
bDEyOCB0d28oMik7CisKKyAgICBFWFBFQ1RfRVEoRGVjaW1hbDEyOCgyKSwgb25lICsgb25lKTsK
KyAgICBFWFBFQ1RfRVEoRGVjaW1hbDEyOCgwKSwgb25lIC0gb25lKTsKKyAgICBFWFBFQ1RfRVEo
RGVjaW1hbDEyOCgzKSwgb25lICsgdHdvKTsKKyAgICBFWFBFQ1RfRVEoRGVjaW1hbDEyOCgtMSks
IG9uZSAtIHR3byk7CisKKyAgICBFWFBFQ1RfRVEobXplcm8sIG16ZXJvICsgbXplcm8pOworICAg
IEVYUEVDVF9FUShwemVybywgbXplcm8gKyBwemVybyk7CisgICAgRVhQRUNUX0VRKHB6ZXJvLCBw
emVybyArIG16ZXJvKTsKKyAgICBFWFBFQ1RfRVEocHplcm8sIHB6ZXJvICsgcHplcm8pOworCisg
ICAgRVhQRUNUX0VRKFN0cmluZygiMS4wMUUrNCIpLCBhZGQoIjFFKzIiLCAiMUUrNCIpKTsKKyAg
ICBFWFBFQ1RfRVEoU3RyaW5nKCIyIiksIGFkZCgiNSIsICItMyIpKTsKKyAgICBFWFBFQ1RfRVEo
U3RyaW5nKCIxOS4wMCIpLCBhZGQoIjEyIiwgIjcuMDAiKSk7CisKKyAgICBFWFBFQ1RfRVEoU3Ry
aW5nKCI5LjA1IiksIGFkZCgiNS43NSIsICIzLjMiKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygi
LTgiKSwgYWRkKCItNSIsICItMyIpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCIxLjAiKSwgYWRk
KCIwLjciLCAiMC4zIikpOworICAgIEVYUEVDVF9FUShTdHJpbmcoIjIuNTAiKSwgYWRkKCIxLjI1
IiwgIjEuMjUiKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiMi4yMzQ1Njc4OSIpLCBhZGQoIjEu
MjM0NTY3ODkiLCAiMS4wMDAwMDAwMCIpKTsKKworICAgIEVYUEVDVF9FUShTdHJpbmcoIjMuMzMz
MzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM0UrMTI4IiksIGFkZCgiMzMzMzMzMzMzMzMzMzMzMzMz
MzMzMzMzMzMzMzMzRTEwMCIsICI0IikpOworICAgIEVYUEVDVF9FUShTdHJpbmcoIjAuOTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTkiKSwgYWRkKCIwLjQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0
NDQ0NDQ0IiwgIjAuNTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTUiKSk7CisgICAgRVhQRUNU
X0VRKFN0cmluZygiMS4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRSsyOSIpLCBhZGQoIjk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTkiLCAiMC43IikpOworfQorCitURVNUX0YoRGVj
aW1hbDEyOFRlc3QsIE9wQWRkU3BlY2lhbFZhbHVlcykKK3sKKyAgICBjb25zdCBEZWNpbWFsMTI4
IGluZiA9IGluZmluaXR5KCk7CisgICAgY29uc3QgRGVjaW1hbDEyOCBtaW5mID0gaW5maW5pdHko
MSk7CisgICAgY29uc3QgRGVjaW1hbDEyOCBuYW4gPSBxdWlldE5hTigwKTsKKyAgICBjb25zdCBE
ZWNpbWFsMTI4IG1uYW4gPSBxdWlldE5hTigxKTsKKyAgICBEZWNpbWFsMTI4IHRlbigxMCk7CisK
KyAgICBFWFBFQ1RfRVEoU3RyaW5nKCJpbmZpbml0eSIpLCBhZGQoaW5mLCBpbmYpKTsKKyAgICBF
WFBFQ1RfRVEoU3RyaW5nKCJOYU4iKSwgYWRkKGluZiwgbWluZikpOworICAgIEVYUEVDVF9FUShT
dHJpbmcoIk5hTiIpLCBhZGQobWluZiwgaW5mKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiLWlu
ZmluaXR5IiksIGFkZChtaW5mLCBtaW5mKSk7CisKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCJpbmZp
bml0eSIpLCBhZGQoaW5mLCB0ZW4pKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCJpbmZpbml0eSIp
LCBhZGQodGVuLCBpbmYpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCItaW5maW5pdHkiKSwgYWRk
KG1pbmYsIHRlbikpOworICAgIEVYUEVDVF9FUShTdHJpbmcoIi1pbmZpbml0eSIpLCBhZGQodGVu
LCBtaW5mKSk7CisKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCJOYU4iKSwgYWRkKG5hbiwgbmFuKSk7
CisgICAgRVhQRUNUX0VRKFN0cmluZygiTmFOIiksIGFkZChuYW4sIG1uYW4pKTsKKyAgICBFWFBF
Q1RfRVEoU3RyaW5nKCJOYU4iKSwgYWRkKG5hbiwgdGVuKSk7CisKKyAgICBFWFBFQ1RfRVEoU3Ry
aW5nKCItTmFOIiksIGFkZChtbmFuLCBuYW4pKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCItTmFO
IiksIGFkZChtbmFuLCBtbmFuKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiLU5hTiIpLCBhZGQo
bW5hbiwgdGVuKSk7CisKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCJOYU4iKSwgYWRkKHRlbiwgbmFu
KSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiLU5hTiIpLCBhZGQodGVuLCBtbmFuKSk7Cit9CisK
K1RFU1RfRihEZWNpbWFsMTI4VGVzdCwgT3BEaXYpCit7CisgICAgRVhQRUNUX0VRKFN0cmluZygi
MCIpLCBkaXYoIjAiLCAiMSIpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCIwLjAwIiksIGRpdigi
MC4wMCIsICIxIikpOworICAgIEVYUEVDVF9FUShTdHJpbmcoIjEwMDAiKSwgZGl2KCIxMDAwIiwg
IjEiKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiMSIpLCBkaXYoIjEyIiwgIjEyIikpOworICAg
IEVYUEVDVF9FUShTdHJpbmcoIjQuMDAiKSwgZGl2KCI4LjAwIiwgIjIiKSk7CisgICAgRVhQRUNU
X0VRKFN0cmluZygiMS4yMCIpLCBkaXYoIjIuNDAwIiwgIjIuMCIpKTsKKyAgICBFWFBFQ1RfRVEo
U3RyaW5nKCIxMCIpLCBkaXYoIjEwMDAiLCAiMTAwIikpOworICAgIEVYUEVDVF9FUShTdHJpbmco
IjIuNSIpLCBkaXYoIjUiLCAiMiIpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCIwLjEiKSwgZGl2
KCIxIiwgIjEwIikpOworICAgIEVYUEVDVF9FUShTdHJpbmcoIjEuMjBFKzYiKSwgZGl2KCIyLjQw
RSs2IiwgIjIiKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiMC42NjY2NjY2NjY2NjY2NjY2NjY2
NjY2NjY2NjY2NyIpLCBkaXYoIjIiLCAiMyIpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCIwLjMz
MzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzIiksIGRpdigiMSIsICIzIikpOworCisgICAgRVhQ
RUNUX0VRKFN0cmluZygiM0UtMTAyMyIpLCBkaXYoIjIuNUUtMTAxOSIsICIxZSs0IikpOworICAg
IEVYUEVDVF9ORShTdHJpbmcoIjBFLTEwMjIiKSwgZGl2KCI1RS0xMDE3IiwgIjFlKzUiKSk7Cit9
CisKK1RFU1RfRihEZWNpbWFsMTI4VGVzdCwgT3BEaXZTcGVjaWFsVmFsdWVzKQoreworICAgIGNv
bnN0IERlY2ltYWwxMjggaW5mID0gaW5maW5pdHkoKTsKKyAgICBjb25zdCBEZWNpbWFsMTI4IG1p
bmYgPSBpbmZpbml0eSgxKTsKKyAgICBjb25zdCBEZWNpbWFsMTI4IG5hbiA9IHF1aWV0TmFOKDAp
OworICAgIGNvbnN0IERlY2ltYWwxMjggbW5hbiA9IHF1aWV0TmFOKDEpOworICAgIGNvbnN0IERl
Y2ltYWwxMjggcHplcm8gPSB6ZXJvKCk7CisgICAgY29uc3QgRGVjaW1hbDEyOCBtemVybyA9IHpl
cm8oMSk7CisgICAgRGVjaW1hbDEyOCB0ZW4oMTApOworICAgIERlY2ltYWwxMjggbXRlbigtMTAp
OworCisgICAgRVhQRUNUX0VRKFN0cmluZygiTmFOIiksIGRpdihwemVybywgcHplcm8pKTsKKyAg
ICBFWFBFQ1RfRVEoU3RyaW5nKCJOYU4iKSwgZGl2KHB6ZXJvLCBtemVybykpOworICAgIEVYUEVD
VF9FUShTdHJpbmcoIk5hTiIpLCBkaXYobXplcm8sIHB6ZXJvKSk7CisgICAgRVhQRUNUX0VRKFN0
cmluZygiTmFOIiksIGRpdihtemVybywgbXplcm8pKTsKKworICAgIEVYUEVDVF9FUShTdHJpbmco
ImluZmluaXR5IiksIGRpdih0ZW4sIHB6ZXJvKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiLWlu
ZmluaXR5IiksIGRpdih0ZW4sIG16ZXJvKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiLWluZmlu
aXR5IiksIGRpdihtdGVuLCBwemVybykpOworICAgIEVYUEVDVF9FUShTdHJpbmcoImluZmluaXR5
IiksIGRpdihtdGVuLCBtemVybykpOworCisgICAgRVhQRUNUX0VRKFN0cmluZygiaW5maW5pdHki
KSwgZGl2KGluZiwgcHplcm8pKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCItaW5maW5pdHkiKSwg
ZGl2KGluZiwgbXplcm8pKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCJpbmZpbml0eSIpLCBkaXYo
aW5mLCB0ZW4pKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCItaW5maW5pdHkiKSwgZGl2KGluZiwg
bXRlbikpOworICAgIEVYUEVDVF9FUShTdHJpbmcoIi1pbmZpbml0eSIpLCBkaXYobWluZiwgcHpl
cm8pKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCJpbmZpbml0eSIpLCBkaXYobWluZiwgbXplcm8p
KTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCItaW5maW5pdHkiKSwgZGl2KG1pbmYsIHRlbikpOwor
ICAgIEVYUEVDVF9FUShTdHJpbmcoImluZmluaXR5IiksIGRpdihtaW5mLCBtdGVuKSk7CisKKyAg
ICBFWFBFQ1RfRVEoU3RyaW5nKCJOYU4iKSwgZGl2KGluZiwgaW5mKSk7CisgICAgRVhQRUNUX0VR
KFN0cmluZygiTmFOIiksIGRpdihpbmYsIG1pbmYpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCJO
YU4iKSwgZGl2KG1pbmYsIGluZikpOworICAgIEVYUEVDVF9FUShTdHJpbmcoIk5hTiIpLCBkaXYo
bWluZiwgbWluZikpOworCisgICAgRVhQRUNUX0VRKFN0cmluZygiMCIpLCBkaXYodGVuLCBpbmYp
KTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCItMCIpLCBkaXYodGVuLCBtaW5mKSk7CisgICAgRVhQ
RUNUX0VRKFN0cmluZygiLTAiKSwgZGl2KG10ZW4sIGluZikpOworICAgIEVYUEVDVF9FUShTdHJp
bmcoIjAiKSwgZGl2KG10ZW4sIG1pbmYpKTsKKworICAgIEVYUEVDVF9FUShTdHJpbmcoIk5hTiIp
LCBkaXYobmFuLCBuYW4pKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCJOYU4iKSwgZGl2KG5hbiwg
bW5hbikpOworICAgIEVYUEVDVF9FUShTdHJpbmcoIk5hTiIpLCBkaXYobmFuLCB0ZW4pKTsKKwor
ICAgIEVYUEVDVF9FUShTdHJpbmcoIi1OYU4iKSwgZGl2KG1uYW4sIG5hbikpOworICAgIEVYUEVD
VF9FUShTdHJpbmcoIi1OYU4iKSwgZGl2KG1uYW4sIG1uYW4pKTsKKyAgICBFWFBFQ1RfRVEoU3Ry
aW5nKCItTmFOIiksIGRpdihtbmFuLCB0ZW4pKTsKKworICAgIEVYUEVDVF9FUShTdHJpbmcoIk5h
TiIpLCBkaXYodGVuLCBuYW4pKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCItTmFOIiksIGRpdih0
ZW4sIG1uYW4pKTsKK30KKworVEVTVF9GKERlY2ltYWwxMjhUZXN0LCBPcE11bCkKK3sKKyAgICBF
WFBFQ1RfRVEoU3RyaW5nKCI0MjgxMzU5NzEwNDEiKSwgbXVsKCI2NTQzMjEiLCAiNjU0MzIxIikp
OworICAgIEVYUEVDVF9FUShTdHJpbmcoIjMuNjAiKSwgbXVsKCIxLjIwIiwgIjMiKSk7CisgICAg
RVhQRUNUX0VRKFN0cmluZygiMjEiKSwgbXVsKCI3IiwgIjMiKSk7CisgICAgRVhQRUNUX0VRKFN0
cmluZygiMC43MiIpLCBtdWwoIjAuOSIsICIwLjgiKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygi
MC42IiksIG11bCgiNiIsICIwLjEiKSk7CisKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCIxLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBFKzEwNTEiKSwgbXVsKCIxRTEwMjYiLCAiMUUyNSIpKTsK
KyAgICBFWFBFQ1RfRVEoU3RyaW5nKCIwRSsxMDIzIiksIG11bCgiMUUxMDI2IiwgIjBFMjUiKSk7
CisgICAgRVhQRUNUX0VRKFN0cmluZygiaW5maW5pdHkiKSwgbXVsKCIzMzMzMzMzMzMzMzMzMzMz
MzMzMzMzMzMzMzMzMzMzMzMzRTYxMTEiLCAiMTAwMDAiKSk7CisgICAgRVhQRUNUX0VRKFN0cmlu
ZygiMS41MjQxNTc4NzUzMjM4ODM2NzUwNDk1MzUxNTYzRSs1NiIpLCBtdWwoIjEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5IiwgIjEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQi
KSk7Cit9CisKK1RFU1RfRihEZWNpbWFsMTI4VGVzdCwgT3BNdWxTcGVjaWFsVmFsdWVzKQorewor
ICAgIGNvbnN0IERlY2ltYWwxMjggaW5mID0gaW5maW5pdHkoKTsKKyAgICBjb25zdCBEZWNpbWFs
MTI4IG1pbmYgPSBpbmZpbml0eSgxKTsKKyAgICBjb25zdCBEZWNpbWFsMTI4IG5hbiA9IHF1aWV0
TmFOKDApOworICAgIGNvbnN0IERlY2ltYWwxMjggbW5hbiA9IHF1aWV0TmFOKDEpOworICAgIERl
Y2ltYWwxMjggdGVuKDEwKTsKKyAgICBEZWNpbWFsMTI4IG10ZW4oLTEwKTsKKyAgICBjb25zdCBE
ZWNpbWFsMTI4IHB6ZXJvID0gemVybygpOworICAgIGNvbnN0IERlY2ltYWwxMjggbXplcm8gPSB6
ZXJvKDEpOworCisgICAgRVhQRUNUX0VRKFN0cmluZygiaW5maW5pdHkiKSwgbXVsKGluZiwgaW5m
KSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiLWluZmluaXR5IiksIG11bChpbmYsIG1pbmYpKTsK
KyAgICBFWFBFQ1RfRVEoU3RyaW5nKCItaW5maW5pdHkiKSwgbXVsKG1pbmYsIGluZikpOworICAg
IEVYUEVDVF9FUShTdHJpbmcoImluZmluaXR5IiksIG11bChtaW5mLCBtaW5mKSk7CisKKyAgICBF
WFBFQ1RfRVEoU3RyaW5nKCJOYU4iKSwgbXVsKGluZiwgcHplcm8pKTsKKyAgICBFWFBFQ1RfRVEo
U3RyaW5nKCJOYU4iKSwgbXVsKHB6ZXJvLCBtaW5mKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygi
TmFOIiksIG11bChtaW5mLCBwemVybykpOworICAgIEVYUEVDVF9FUShTdHJpbmcoIk5hTiIpLCBt
dWwobWluZiwgcHplcm8pKTsKKworICAgIEVYUEVDVF9FUShTdHJpbmcoIk5hTiIpLCBtdWwoaW5m
LCBtemVybykpOworICAgIEVYUEVDVF9FUShTdHJpbmcoIk5hTiIpLCBtdWwobXplcm8sIG1pbmYp
KTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCJOYU4iKSwgbXVsKG1pbmYsIG16ZXJvKSk7CisgICAg
RVhQRUNUX0VRKFN0cmluZygiTmFOIiksIG11bChtaW5mLCBtemVybykpOworCisgICAgRVhQRUNU
X0VRKFN0cmluZygiaW5maW5pdHkiKSwgbXVsKGluZiwgdGVuKSk7CisgICAgRVhQRUNUX0VRKFN0
cmluZygiaW5maW5pdHkiKSwgbXVsKHRlbiwgaW5mKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygi
LWluZmluaXR5IiksIG11bChtaW5mLCB0ZW4pKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCItaW5m
aW5pdHkiKSwgbXVsKHRlbiwgbWluZikpOworCisgICAgRVhQRUNUX0VRKFN0cmluZygiLWluZmlu
aXR5IiksIG11bChpbmYsIG10ZW4pKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCItaW5maW5pdHki
KSwgbXVsKG10ZW4sIGluZikpOworICAgIEVYUEVDVF9FUShTdHJpbmcoImluZmluaXR5IiksIG11
bChtaW5mLCBtdGVuKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiaW5maW5pdHkiKSwgbXVsKG10
ZW4sIG1pbmYpKTsKKworICAgIEVYUEVDVF9FUShTdHJpbmcoIk5hTiIpLCBtdWwobmFuLCBuYW4p
KTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCJOYU4iKSwgbXVsKG5hbiwgbW5hbikpOworICAgIEVY
UEVDVF9FUShTdHJpbmcoIk5hTiIpLCBtdWwobmFuLCB0ZW4pKTsKKworICAgIEVYUEVDVF9FUShT
dHJpbmcoIi1OYU4iKSwgbXVsKG1uYW4sIG5hbikpOworICAgIEVYUEVDVF9FUShTdHJpbmcoIi1O
YU4iKSwgbXVsKG1uYW4sIG1uYW4pKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCItTmFOIiksIG11
bChtbmFuLCB0ZW4pKTsKKworICAgIEVYUEVDVF9FUShTdHJpbmcoIk5hTiIpLCBtdWwodGVuLCBu
YW4pKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCItTmFOIiksIG11bCh0ZW4sIG1uYW4pKTsKK30K
KworVEVTVF9GKERlY2ltYWwxMjhUZXN0LCBPcFN1YikKK3sKKyAgICBFWFBFQ1RfRVEoU3RyaW5n
KCItMC4wIiksIHN1YigiLTAuMCIsICIwLjAiKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiMC4w
IiksIHN1YigiMC4wIiwgIjAuMCIpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCIwLjIzIiksIHN1
YigiMS4zIiwgIjEuMDciKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiMC4wMCIpLCBzdWIoIjEu
MyIsICIxLjMwIikpOworICAgIEVYUEVDVF9FUShTdHJpbmcoIi0wLjc3IiksIHN1YigiMS4zIiwg
IjIuMDciKSk7Cit9CisKK1RFU1RfRihEZWNpbWFsMTI4VGVzdCwgT3BTdWJTcGVjaWFsVmFsdWVz
KQoreworICAgIGNvbnN0IERlY2ltYWwxMjggaW5mID0gaW5maW5pdHkoKTsKKyAgICBjb25zdCBE
ZWNpbWFsMTI4IG1pbmYgPSBpbmZpbml0eSgxKTsKKyAgICBjb25zdCBEZWNpbWFsMTI4IG5hbiA9
IHF1aWV0TmFOKDApOworICAgIGNvbnN0IERlY2ltYWwxMjggbW5hbiA9IHF1aWV0TmFOKDEpOwor
ICAgIERlY2ltYWwxMjggdGVuKDEwKTsKKworICAgIEVYUEVDVF9FUShTdHJpbmcoIk5hTiIpLCBz
dWIoaW5mLCBpbmYpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCJpbmZpbml0eSIpLCBzdWIoaW5m
LCBtaW5mKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiLWluZmluaXR5IiksIHN1YihtaW5mLCBp
bmYpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCJOYU4iKSwgc3ViKG1pbmYsIG1pbmYpKTsKKwor
ICAgIEVYUEVDVF9FUShTdHJpbmcoImluZmluaXR5IiksIHN1YihpbmYsIHRlbikpOworICAgIEVY
UEVDVF9FUShTdHJpbmcoIi1pbmZpbml0eSIpLCBzdWIodGVuLCBpbmYpKTsKKyAgICBFWFBFQ1Rf
RVEoU3RyaW5nKCItaW5maW5pdHkiKSwgc3ViKG1pbmYsIHRlbikpOworICAgIEVYUEVDVF9FUShT
dHJpbmcoImluZmluaXR5IiksIHN1Yih0ZW4sIG1pbmYpKTsKKworICAgIEVYUEVDVF9FUShTdHJp
bmcoIk5hTiIpLCBzdWIobmFuLCBuYW4pKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCJOYU4iKSwg
c3ViKG5hbiwgbW5hbikpOworICAgIEVYUEVDVF9FUShTdHJpbmcoIk5hTiIpLCBzdWIobmFuLCB0
ZW4pKTsKKworICAgIEVYUEVDVF9FUShTdHJpbmcoIi1OYU4iKSwgc3ViKG1uYW4sIG5hbikpOwor
ICAgIEVYUEVDVF9FUShTdHJpbmcoIi1OYU4iKSwgc3ViKG1uYW4sIG1uYW4pKTsKKyAgICBFWFBF
Q1RfRVEoU3RyaW5nKCItTmFOIiksIHN1YihtbmFuLCB0ZW4pKTsKKworICAgIEVYUEVDVF9FUShT
dHJpbmcoIk5hTiIpLCBzdWIodGVuLCBuYW4pKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCItTmFO
IiksIHN1Yih0ZW4sIG1uYW4pKTsKK30KKworVEVTVF9GKERlY2ltYWwxMjhUZXN0LCByZW1haW5k
ZXIpCit7CisgICAgRVhQRUNUX0VRKFN0cmluZygiMi4xIiksIHJlbWFpbmRlcigiMi4xIiwgIjMi
KSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiMSIpLCByZW1haW5kZXIoIjEwIiwgIjMiKSk7Cisg
ICAgRVhQRUNUX0VRKFN0cmluZygiLTEiKSwgcmVtYWluZGVyKCItMTAiLCAiMyIpKTsKKyAgICBF
WFBFQ1RfRVEoU3RyaW5nKCIwLjIiKSwgcmVtYWluZGVyKCIxMC4yIiwgIjEiKSk7CisgICAgRVhQ
RUNUX0VRKFN0cmluZygiMC4xIiksIHJlbWFpbmRlcigiMTAiLCAiMC4zIikpOworICAgIEVYUEVD
VF9FUShTdHJpbmcoIjEuMCIpLCByZW1haW5kZXIoIjMuNiIsICIxLjMiKSk7Cit9CisKK1RFU1Rf
RihEZWNpbWFsMTI4VGVzdCwgcmVtYWluZGVyU3BlaWNhbFZhbHVlcykKK3sKKyAgICBFWFBFQ1Rf
RVEoU3RyaW5nKCJOYU4iKSwgcXVpZXROYU4oMCkucmVtYWluZGVyKERlY2ltYWwxMjgoMykpLnRv
U3RyaW5nKCkpOworfQorCitURVNUX0YoRGVjaW1hbDEyOFRlc3QsIFRvRmxvYXQ2NCkKK3sKKyAg
ICBFWFBFQ1RfRVEoMC4wLCBkb3VibGUoemVybygpKSk7CisgICAgRVhQRUNUX0VRKC0wLjAsIGRv
dWJsZSh6ZXJvKDEpKSk7CisKKyAgICBFWFBFQ1RfRVEoMS4wLCBkb3VibGUoRGVjaW1hbDEyOCgx
KSkpOworICAgIEVYUEVDVF9FUSgtMS4wLCBkb3VibGUoRGVjaW1hbDEyOCgtMSkpKTsKKworICAg
IEVYUEVDVF9FUSgxMjMuNDUsIGRvdWJsZShEZWNpbWFsMTI4KDEyMy40NSkpKTsKKyAgICBFWFBF
Q1RfRVEoLTEyMy40NSwgZG91YmxlKERlY2ltYWwxMjgoLTEyMy40NSkpKTsKKworICAgIEVYUEVD
VF9FUSgwLjAsIGRvdWJsZShmcm9tU3RyaW5nKCIxRS00MDAiKSkpOworCisgICAgLy8gU3Vibm9y
bWFsCisgICAgRVhQRUNUX0VRKDAuMCwgZG91YmxlKERlY2ltYWwxMjgoQmluMTI4KDAsIDAsIDAs
IDEpKSkpOworCisgICAgRmxvYXQ2NCBpbmY2NChGbG9hdDY0Qml0czo6UG9zaXRpdmVJbmZpbml0
eVBhdHRlcm4pOworCisgICAgRVhQRUNUX0VRKGRvdWJsZShpbmY2NCksIGRvdWJsZShmcm9tU3Ry
aW5nKCIxRTQwMCIpKSk7CisgICAgRVhQRUNUX0VRKGRvdWJsZShpbmY2NCksIGRvdWJsZShpbmZp
bml0eSgpKSk7CisgICAgRVhQRUNUX1RSVUUoRmxvYXQ2NDo6aXNRdWlldE5hTihkb3VibGUocXVp
ZXROYU4oMCkpLCAwKSk7CisKKyAgICBFWFBFQ1RfRVEoLWRvdWJsZShpbmY2NCksIGRvdWJsZShm
cm9tU3RyaW5nKCItMUU0MDAiKSkpOworICAgIEVYUEVDVF9FUSgtZG91YmxlKGluZjY0KSwgZG91
YmxlKGluZmluaXR5KDEpKSk7CisgICAgRVhQRUNUX1RSVUUoRmxvYXQ2NDo6aXNRdWlldE5hTihk
b3VibGUocXVpZXROYU4oMSkpLCAxKSk7Cit9CisKK1RFU1RfRihEZWNpbWFsMTI4VGVzdCwgdG9T
dHJpbmcpCit7CisgICAgRVhQRUNUX0VRKFN0cmluZygiMCIpLCBEZWNpbWFsMTI4KDApLnRvU3Ry
aW5nKCkpOworICAgIEVYUEVDVF9FUShTdHJpbmcoIi0wIiksIHRvU3RyaW5nKDB4QkZGMDAwMDAs
IDAsIDAsIDApKTsKKworICAgIEVYUEVDVF9FUShTdHJpbmcoIjEiKSwgRGVjaW1hbDEyOCgxKS50
b1N0cmluZygpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCItMSIpLCBEZWNpbWFsMTI4KC0xKS50
b1N0cmluZygpKTsKKworICAgIEVYUEVDVF9FUShTdHJpbmcoIjEyMyIpLCBEZWNpbWFsMTI4KDEy
MykudG9TdHJpbmcoKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiLTEyMyIpLCBEZWNpbWFsMTI4
KC0xMjMpLnRvU3RyaW5nKCkpOworCisgICAgRVhQRUNUX0VRKFN0cmluZygiMS41IiksIERlY2lt
YWwxMjgoMS41KS50b1N0cmluZygpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCItMS41IiksIERl
Y2ltYWwxMjgoLTEuNSkudG9TdHJpbmcoKSk7CisKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCI1MCIp
LCBEZWNpbWFsMTI4KDUwKS50b1N0cmluZygpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCItNTAi
KSwgRGVjaW1hbDEyOCgtNTApLnRvU3RyaW5nKCkpOworCisgICAgRVhQRUNUX0VRKFN0cmluZygi
NTAiKSwgRGVjaW1hbDEyOCg1MC4wKS50b1N0cmluZygpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5n
KCItNTAiKSwgRGVjaW1hbDEyOCgtNTAuMCkudG9TdHJpbmcoKSk7CisKKyAgICBFWFBFQ1RfRVEo
U3RyaW5nKCIwLjUwMDAiKSwgdG9TdHJpbmcoMHgzRkIwMDAwMCwgMCwgMCwgMHg1MDAwKSk7Cisg
ICAgRVhQRUNUX0VRKFN0cmluZygiLTAuNTAwMCIpLCB0b1N0cmluZygweEJGQjAwMDAwLCAwLCAw
LCAweDUwMDApKTsKKworICAgIEVYUEVDVF9FUShTdHJpbmcoIjBFLTE5IiksIHRvU3RyaW5nKDB4
M0VDMDAwMDAsIDAsIDAsIDApKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCItMEUtMTkiKSwgdG9T
dHJpbmcoMHhCRUMwMDAwMCwgMCwgMCwgMCkpOworCisgICAgRVhQRUNUX0VRKFN0cmluZygiMEUt
MTAyMyIpLCB0b1N0cmluZygwLCAwLCAwLCAwKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiLTBF
LTEwMjMiKSwgdG9TdHJpbmcoMHg4MDAwMDAwMCwgMCwgMCwgMCkpOworCisgICAgRVhQRUNUX0VR
KFN0cmluZygiMS4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRSsxMDUxIiksIHRvU3RyaW5n
KDB4N0ZFMTAwMDAsIDAsIDAsIDApKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCItMS4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwRSsxMDUxIiksIHRvU3RyaW5nKDB4RkZFMTAwMDAsIDAsIDAs
IDApKTsKKworICAgIEVYUEVDVF9FUShTdHJpbmcoIjFFKzEwMjMiKSwgdG9TdHJpbmcoMHg3RkUw
MDAwMCwgMCwgMCwgMSkpOworICAgIEVYUEVDVF9FUShTdHJpbmcoIi0xRSsxMDIzIiksIHRvU3Ry
aW5nKDB4RkZFMDAwMDAsIDAsIDAsIDEpKTsKKworICAgIEVYUEVDVF9FUShTdHJpbmcoIjkuOTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OUUrMTA1MSIpLCB0b1N0cmluZygweDdGRTk5OTk5LCAw
eDk5OTk5OTk5LCAweDk5OTk5OTk5LCAweDk5OTk5OTk5KSk7CisgICAgRVhQRUNUX0VRKFN0cmlu
ZygiLTkuOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OUUrMTA1MSIpLCB0b1N0cmluZygweEZG
RTk5OTk5LCAweDk5OTk5OTk5LCAweDk5OTk5OTk5LCAweDk5OTk5OTk5KSk7CisKKyAgICBFWFBF
Q1RfRVEoU3RyaW5nKCIwRS0xMDIyIiksIHRvU3RyaW5nKDB4MDAxMDAwMDAsIDAsIDAsIDApKTsK
KyAgICBFWFBFQ1RfRVEoU3RyaW5nKCItMEUtMTAyMiIpLCB0b1N0cmluZygweDgwMTAwMDAwLCAw
LCAwLCAwKSk7CisKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCIxRS0xMDIyIiksIHRvU3RyaW5nKDB4
MDAxMDAwMDAsIDAsIDAsIDEpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCItMUUtMTAyMiIpLCB0
b1N0cmluZygweDgwMTAwMDAwLCAwLCAwLCAxKSk7Cit9CisKK1RFU1RfRihEZWNpbWFsMTI4VGVz
dCwgdG9TdHJpbmdTcGVjaWFsVmFsdWVzKQoreworICAgIEVYUEVDVF9FUShTdHJpbmcoImluZmlu
aXR5IiksIGluZmluaXR5KDApLnRvU3RyaW5nKCkpOworICAgIEVYUEVDVF9FUShTdHJpbmcoIi1p
bmZpbml0eSIpLCBpbmZpbml0eSgxKS50b1N0cmluZygpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5n
KCJOYU4iKSwgcXVpZXROYU4oMCkudG9TdHJpbmcoKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygi
LU5hTiIpLCBxdWlldE5hTigxKS50b1N0cmluZygpKTsKK30KKworVEVTVF9GKERlY2ltYWwxMjhU
ZXN0LCB0b1N0cmluZ1N1Ym5vcm1hbCkKK3sKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCIwRS0xMDIz
IiksIHRvU3RyaW5nKDAsIDAsIDAsIDApKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCIxRS0xMDIz
IiksIHRvU3RyaW5nKDAsIDAsIDAsIDEpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCIxLjBFLTEw
MjIiKSwgdG9TdHJpbmcoMCwgMCwgMCwgMHgxMCkpOworICAgIEVYUEVDVF9FUShTdHJpbmcoIjEu
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEUtOTk1IiksIHRvU3RyaW5nKDB4MDAwMTAwMDAs
IDAsIDAsIDApKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCI5Ljk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTlFLTk5NSIpLCB0b1N0cmluZygweDAwMDk5OTk5LCAweDk5OTk5OTk5LCAweDk5OTk5
OTk5LCAweDk5OTk5OTk5KSk7Cit9CisKK1RFU1RfRihEZWNpbWFsMTI4VGVzdCwgdHJ1bmNhdGUp
Cit7CisgICAgRVhQRUNUX0VRKFN0cmluZygiMCIpLCB0cnVuY2F0ZSgiMCIsICIxIikpOworICAg
IEVYUEVDVF9FUShTdHJpbmcoIjI1IiksIHRydW5jYXRlKCI1IiwgIjAuMjAwIikpOworICAgIEVY
UEVDVF9FUShTdHJpbmcoIjIiKSwgdHJ1bmNhdGUoIjUiLCAiMiIpKTsKKyAgICBFWFBFQ1RfRVEo
U3RyaW5nKCIwIiksIHRydW5jYXRlKCIyIiwgIjMiKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygi
MyIpLCB0cnVuY2F0ZSgiMTAiLCAiMyIpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCIzIiksIHRy
dW5jYXRlKCIxIiwgIjAuMyIpKTsKKworICAgIC8vIFJlc3VsdCBxdW90aWVudCBpcyB0b28gbGFy
Z2UgZm9yIGludGVnZXIgcmVwcmVzZW50YXRpb24uCisgICAgRVhQRUNUX0VRKFN0cmluZygiTmFO
IiksIHRydW5jYXRlKCIxRTEwMCIsICIxIikpOworfQorCit9IC8vIG5hbWVzcGFjZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>139169</attachid>
            <date>2012-04-27 04:44:37 -0700</date>
            <delta_ts>2012-04-30 22:44:09 -0700</delta_ts>
            <desc>Patch 3 - for Preliminary Review</desc>
            <filename>bug-80009-20120427204436.patch</filename>
            <type>text/plain</type>
            <size>82289</size>
            <attacher>yosin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE1NDE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWY0ZTg1N2RhOTRhZGNh
Yzk5MTJiNDRmNGE4YzA3MjFhZjRmYTlhZS4uYTg5N2M5NDg4YmEyMGYxMmJiMTY5YjE5OTU0OTA2
OTk0YmUzMTk0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyNSBAQAorMjAxMi0wNC0yNyAgWW9z
aGlmdW1pIElub3VlICA8eW9zaW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFNldHRpbmcgJzAu
NicgdG8gdGhlIHZhbHVlIG9mIGEgcmFuZ2UgaW5wdXQgbWFrZXMgdGhlIHZhbHVlIDAuNjAwMDAw
MDAwMDAwMDAwMQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODAwMDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBOT1RFOiBUaGlzIGlzIE5PVCBmaW5hbC4gRGVjaW1hbC5jcHAgYW5kIERlY2ltYWwuaCByZXF1
aXJlIG1vcmUgY29tbWVudHMuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2UgZGVjaW1h
bCBhcml0aG1ldGljIHRvIGF2b2lkIHJvdW5kaW5nIGVycm9yIGluIGRvdWJsZS4KKworICAgICAg
ICBBbGwgY2FsY3VsYXRpb25zIHJlbGF0ZWQgdG8gaW5wdXQgZWxlbWVudCB2YWx1ZSBpbiBTdGVw
UmFuZ2UsIFJhbmdlSW5wdXRUeXBlCisgICAgICAgIGFuZCBTbGlkZXJUaHVtYm5haWwgYXJlIGRv
bmUgaW4gZGVjaW1hbCBhcml0aG1ldGljLgorCisgICAgICAgIFRlc3Q6IGZhc3QvZm9ybXMvcmFu
Z2UvcmFuZ2UtdmFsdWUtcm91bmRpbmcuaHRtbAorICAgICAgICBUZXN0IGZvciBEZWNpbWFsIGNs
YXNzIGlzIGltcGxlbWVudGVkIHVzaW5nIGdUZXN0IGFuZCByZXNpZGVzIGluIFdlYktpdC9jaHJv
bWl1bS90ZXN0cy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1h
a2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3Jl
Lmd5cGk6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
SW5wdXRFbGVtZW50OjpnZXRBbGxvd2VkVmFsdWVTdGVwKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChIVE1MSW5wdXRFbGVtZW50KToKKyAgICAgICAgKiBodG1sL0lucHV0VHlwZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OmdldEFsbG93ZWRWYWx1ZVN0ZXApOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgICogaHRtbC9JbnB1dFR5cGUuaDoKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoSW5wdXRUeXBlKToKKyAgICAgICAgKiBodG1sL1JhbmdlSW5wdXRU
eXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlSW5wdXRUeXBlOjpnZXRBbGxvd2VkVmFs
dWVTdGVwKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VJbnB1
dFR5cGU6OmhhbmRsZUtleWRvd25FdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZUlucHV0
VHlwZTo6ZmFsbGJhY2tWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6
c2FuaXRpemVWYWx1ZSk6CisgICAgICAgICogaHRtbC9SYW5nZUlucHV0VHlwZS5oOgorICAgICAg
ICAoUmFuZ2VJbnB1dFR5cGUpOgorICAgICAgICAqIGh0bWwvU3RlcFJhbmdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlN0ZXBSYW5nZTo6U3RlcFJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0
ZXBSYW5nZTo6Y2xhbXBWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdGVwUmFuZ2U6OnZhbHVl
RnJvbUVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvU3RlcFJhbmdlLmg6CisgICAgICAgIChTdGVw
UmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U3RlcFJhbmdlOjpkZWZhdWx0VmFsdWUpOgorICAg
ICAgICAoV2ViQ29yZTo6U3RlcFJhbmdlOjpwcm9wb3J0aW9uRnJvbVZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OlN0ZXBSYW5nZTo6dmFsdWVGcm9tUHJvcG9ydGlvbik6CisgICAgICAgICogaHRt
bC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNsaWRl
clBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNsaWRlclRodW1iOjpsYXlvdXQp
OgorICAgICAgICAoV2ViQ29yZTo6U2xpZGVyVGh1bWJFbGVtZW50OjpzZXRQb3NpdGlvbkZyb21Q
b2ludCk6CisgICAgICAgICogcGxhdGZvcm0vRGVjaW1hbC5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChEZWNpbWFsUHJpdmF0ZSk6CisgICAgICAgIChTcGVjaWFsVmFs
dWVIYW5kbGVyKToKKyAgICAgICAgKFVJbnQxMjgpOgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1h
bFByaXZhdGU6OlVJbnQxMjg6OmhpZ2gpOgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1hbFByaXZh
dGU6OlVJbnQxMjg6Omxvdyk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsUHJpdmF0ZTo6VUlu
dDEyODo6aXNaZXJvKToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWxQcml2YXRlOjpjb3VudERp
Z2l0cyk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsUHJpdmF0ZTo6bXVsdGlwbHlIaWdoKToK
KyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWxQcml2YXRlOjpwb3dlcik6CisgICAgICAgIChXZWJD
b3JlOjpEZWNpbWFsUHJpdmF0ZTo6c2NhbGVEb3duKToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2lt
YWxQcml2YXRlOjpzY2FsZVVwKToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWxQcml2YXRlOjpT
cGVjaWFsVmFsdWVIYW5kbGVyOjpTcGVjaWFsVmFsdWVIYW5kbGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkRlY2ltYWxQcml2YXRlOjpTcGVjaWFsVmFsdWVIYW5kbGVyOjpoYW5kbGUpOgorICAgICAg
ICAoV2ViQ29yZTo6RGVjaW1hbFByaXZhdGU6OlNwZWNpYWxWYWx1ZUhhbmRsZXI6OnZhbHVlKToK
KyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWxQcml2YXRlOjpVSW50MTI4OjpVSW50MTI4KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRlY2ltYWxQcml2YXRlOjpVSW50MTI4OjpvcGVyYXRvciAvPSk6Cisg
ICAgICAgIChXZWJDb3JlOjpEZWNpbWFsUHJpdmF0ZTo6VUludDEyODo6bXVsdGlwbHkpOgorICAg
ICAgICAoV2ViQ29yZTo6RGVjaW1hbDo6RW5jb2RlZERhdGE6OkVuY29kZWREYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRlY2ltYWw6OkVuY29kZWREYXRhOjpjb2VmZmljaWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpEZWNpbWFsOjpFbmNvZGVkRGF0YTo6ZXhwb25lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6RGVjaW1hbDo6RW5jb2RlZERhdGE6OmlzRmluaXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkRlY2ltYWw6OkVuY29kZWREYXRhOjppc1NwZWNpYWwpOgorICAgICAgICAoV2ViQ29yZTo6RGVj
aW1hbDo6RW5jb2RlZERhdGE6OmlzWmVybyk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjpF
bmNvZGVkRGF0YTo6cmF3RXhwb25lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1hbDo6RW5j
b2RlZERhdGE6OnNpZ24pOgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1hbDo6RW5jb2RlZERhdGE6
OnNldFNpZ24pOgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1hbDo6RGVjaW1hbCk6CisgICAgICAg
IChXZWJDb3JlOjpEZWNpbWFsOjpvcGVyYXRvciA9KToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2lt
YWw6Om9wZXJhdG9yICs9KToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWw6Om9wZXJhdG9yIC09
KToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWw6Om9wZXJhdG9yICo9KToKKyAgICAgICAgKFdl
YkNvcmU6OkRlY2ltYWw6Om9wZXJhdG9yIC89KToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWw6
Om9wZXJhdG9yICspOgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1hbDo6b3BlcmF0b3IgLSk6Cisg
ICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjpvcGVyYXRvciAqKToKKyAgICAgICAgKFdlYkNvcmU6
OkRlY2ltYWw6Om9wZXJhdG9yIC8pOgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1hbDo6b3BlcmF0
b3I9PSk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjpvcGVyYXRvciE9KToKKyAgICAgICAg
KFdlYkNvcmU6OkRlY2ltYWw6Om9wZXJhdG9yIDwpOgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1h
bDo6b3BlcmF0b3IgPD0pOgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1hbDo6b3BlcmF0b3IgPik6
CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjpvcGVyYXRvciA+PSk6CisgICAgICAgIChXZWJD
b3JlOjpEZWNpbWFsOjpleHBvbmVudCk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjppZWVl
Q2xhc3MpOgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1hbDo6c2lnbik6CisgICAgICAgIChXZWJD
b3JlOjpEZWNpbWFsOjpjb21wYXJlVG8pOgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1hbDo6ZmFz
dEVxdWFscyk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjpmcm9tU3RyaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRlY2ltYWw6OmluZmluaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2lt
YWw6OnF1aWV0TmFOKToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWw6OnJlbWFpbmRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjpyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpEZWNp
bWFsOjpyb3VuZEF0KToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWw6OnRvU3RyaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRlY2ltYWw6Onplcm8pOgorICAgICAgICAqIHBsYXRmb3JtL0RlY2lt
YWwuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKERlY2ltYWwpOgorICAg
ICAgICAoRW5jb2RlZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1hbDo6aXNGaW5pdGUp
OgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1hbDo6aXNTcGVjaWFsKToKKyAgICAgICAgKFdlYkNv
cmU6OkRlY2ltYWw6OmlzWmVybyk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjp2YWx1ZSk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNsaWRlci5jcHA6CisKIDIwMTItMDQtMjYgIEFs
ZXhhbmRlciBQYXZsb3YgIDxhcGF2bG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5z
cGVjdG9yOiBJbXBsZW1lbnQgdGhlICJEaXNhYmxlIEphdmFTY3JpcHQiIG9wdGlvbiBpbiB0aGUg
c2V0dGluZ3MgZGlhbG9nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDY2YjQ3NWYwODNm
YmU5YTIzZjg5OTBkNWUxNjcxMTcwMzM1YjY3ODcuLmMyYjA3ZGU5ZmE1Mjg3OGY3NmVjZTQ5YjA5
NGYyOTA0OGMwM2U2M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYg
QEAKKzIwMTItMDQtMjcgIFlvc2hpZnVtaSBJbm91ZSAgPHlvc2luQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBTZXR0aW5nICcwLjYnIHRvIHRoZSB2YWx1ZSBvZiBhIHJhbmdlIGlucHV0IG1ha2Vz
IHRoZSB2YWx1ZSAwLjYwMDAwMDAwMDAwMDAwMDEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTgwMDA5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgRGVjaW1hbFRlc3QgaXN0ZXN0IHNjcmlwdHMgZm9yIERlY2lt
YWwgY2xhc3MgaW4gV2ViQ29yZS9wbGF0Zm9ybS4KKworICAgICAgICAqIFdlYktpdC5neXBpOgor
ICAgICAgICAqIHRlc3RzL0RlY2ltYWxUZXN0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPDwpOgorICAgICAgICAoRGVjaW1hbFRlc3Qp
OgorICAgICAgICAoRGVjaW1hbFN0ZXBSYW5nZSk6CisgICAgICAgIChEZWNpbWFsVGVzdDo6RGVj
aW1hbFN0ZXBSYW5nZTo6RGVjaW1hbFN0ZXBSYW5nZSk6CisgICAgICAgIChEZWNpbWFsVGVzdDo6
RGVjaW1hbFN0ZXBSYW5nZTo6Y2xhbXBWYWx1ZSk6CisgICAgICAgIChEZWNpbWFsVGVzdDo6RGVj
aW1hbFRlc3Q6OmVuY29kZSk6CisgICAgICAgIChEZWNpbWFsVGVzdDo6RGVjaW1hbFRlc3Q6OmZy
b21TdHJpbmcpOgorICAgICAgICAoRGVjaW1hbFRlc3Q6OkRlY2ltYWxUZXN0OjpzdGVwRG93bik6
CisgICAgICAgIChEZWNpbWFsVGVzdDo6RGVjaW1hbFRlc3Q6OnN0ZXBVcCk6CisgICAgICAgIChE
ZWNpbWFsVGVzdDo6VEVTVF9GKToKKwogMjAxMi0wNC0yNCAgSmFtZXMgUm9iaW5zb24gIDxqYW1l
c3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gTW92ZSBQcm9ncmFtQmluZGlu
ZyBkZWZpbml0aW9ucyB0byBMYXllclJlbmRlcmVyQ2hyb21pdW0gYW5kIG5vcm1hbGl6ZSBuYW1p
bmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggN2Q5NmM3NjkyZTU0M2ZhNTA2MWU3ZmEyMDVjMTcx
YzMyMWI3Y2ExYi4uOTg2NzVkNDJmOWE0NTBkMzU5MTQyY2Q3MDRlMjlkNTcyNmZkZjI5MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKQEAgLTEwOTEsNiArMTA5MSw3IEBAIFNFVChXZWJDb3JlX1NPVVJD
RVMKICAgICBwbGF0Zm9ybS9Db250ZW50VHlwZS5jcHAKICAgICBwbGF0Zm9ybS9Dcm9zc1RocmVh
ZENvcGllci5jcHAKICAgICBwbGF0Zm9ybS9EYXRlQ29tcG9uZW50cy5jcHAKKyAgICBwbGF0Zm9y
bS9EZWNpbWFsLmNwcAogICAgIHBsYXRmb3JtL0RyYWdEYXRhLmNwcAogICAgIHBsYXRmb3JtL0Ry
YWdJbWFnZS5jcHAKICAgICBwbGF0Zm9ybS9GaWxlQ2hvb3Nlci5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCmluZGV4IGUxMmE1NzJhOTM1NDM4NDk4OTE5MjRlMWU3MmU2NWUwMTI3MWJm
NzAuLmI0NmIxZDI0MWViNDM0OTU5MmIxMGUyYTkwNDY5ZmRjYjkxNWUzNjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMzA3OSw2ICszMDc5LDggQEAgd2ViY29yZV9zb3VyY2Vz
ICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DdXJzb3IuaCBcCiAJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vRGF0ZUNvbXBvbmVudHMuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9EYXRlQ29tcG9uZW50cy5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EZWNpbWFsLmNw
cCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGVjaW1hbC5oIFwKIAlTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9EcmFnRGF0YS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdE
YXRhLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5jcHAgXApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5w
cmkKaW5kZXggZGE5MzZlMzQ3MjA1NjIzNGRjMGE1ZmQwNDlmYjIzOTU3ZGQwNzkwMi4uZDc5YmZk
M2M5OWE4OWVkNjNmY2Y1OWQ4NDgzMzgyZjg2MDY0NWU1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC0xMDcw
LDYgKzEwNzAsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBwbGF0Zm9ybS9Db250ZW50VHlwZS5jcHAg
XAogICAgIHBsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVyLmNwcCBcCiAgICAgcGxhdGZvcm0vRGF0
ZUNvbXBvbmVudHMuY3BwIFwKKyAgICBwbGF0Zm9ybS9EZWNpbWFsLmNwcCBcCiAgICAgcGxhdGZv
cm0vRHJhZ0RhdGEuY3BwIFwKICAgICBwbGF0Zm9ybS9EcmFnSW1hZ2UuY3BwIFwKICAgICBwbGF0
Zm9ybS9GaWxlQ2hvb3Nlci5jcHAgXApAQCAtMjE3Nyw2ICsyMTc4LDcgQEAgSEVBREVSUyArPSBc
CiAgICAgcGxhdGZvcm0vQ29udGV4dE1lbnUuaCBcCiAgICAgcGxhdGZvcm0vQ3Jvc3NUaHJlYWRD
b3BpZXIuaCBcCiAgICAgcGxhdGZvcm0vRGF0ZUNvbXBvbmVudHMuaCBcCisgICAgcGxhdGZvcm0v
RGVjaW1hbC5oIFwKICAgICBwbGF0Zm9ybS9EcmFnRGF0YS5oIFwKICAgICBwbGF0Zm9ybS9EcmFn
SW1hZ2UuaCBcCiAgICAgcGxhdGZvcm0vRmlsZUNob29zZXIuaCBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5k
ZXggZjEzNzk4Y2ZhOWIxYjcyMmQyNmQ0NDBiYjczNDUzZDEwNTA3ODJhOS4uNmM1MDA2ZWYyNTA2
NDI1ZmU0NDlhMjE2YWI0NWEwZjNjNzQ2MDRkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMjcxLDYg
KzI3MSw3IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vQ29va2llc1N0cmF0ZWd5LmgnLAogICAg
ICAgICAgICAgJ3BsYXRmb3JtL0N1cnNvci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9EYXRl
Q29tcG9uZW50cy5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9EZWNpbWFsLmgnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL0RyYWdEYXRhLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL0RyYWdJ
bWFnZS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9GaWxlQ2hvb3Nlci5oJywKQEAgLTMxMDks
NiArMzExMCw3IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuaCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vQ3Vyc29yLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vRGF0ZUNvbXBvbmVudHMuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9EZWNpbWFsLmNw
cCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vRHJhZ0RhdGEuY3BwJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS9EcmFnSW1hZ2UuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9FdmVudExvb3Au
aCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggYTc5YzEzNWIwNWM5Y2IyZmZmOGEyOTM4Nzg3NzYzYmQ2MDk5YmUzMS4uNmFjYjNm
OWE3MmE1ZTRlYjk0NWY3MzlkNjhjMGJkZDhkM2E4NDk1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTE4Miw2ICsxMTgyLDgg
QEAKIAkJNDUwOTlDNDExMzcwQTc4MDAwNThENTEzIC8qIEljb25VUkwuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDUwOTlDNDAxMzcwQTc4MDAwNThE
NTEzIC8qIEljb25VUkwuY3BwICovOyB9OwogCQk0NTBDRUJGMDE1MDczQkJFMDAyQkIxNDkgLyog
TGFiZWxhYmxlRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0NTBDRUJFRTE1MDczQkJFMDAyQkIxNDkgLyogTGFiZWxhYmxlRWxlbWVudC5j
cHAgKi87IH07CiAJCTQ1MENFQkYxMTUwNzNCQkUwMDJCQjE0OSAvKiBMYWJlbGFibGVFbGVtZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NTBDRUJF
RjE1MDczQkJFMDAyQkIxNDkgLyogTGFiZWxhYmxlRWxlbWVudC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ1OEEyODBGMTU0QUI1RTYwMDAwNDAz
NyAvKiBEZWNpbWFsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ1OEEyODBFMTU0QUI1RTYwMDAwNDAzNyAvKiBEZWNpbWFsLmNwcCAqLzsgfTsKKwkJ
NDU4QTI4MTExNTRBQjVGQjAwMDA0MDM3IC8qIERlY2ltYWwuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ1OEEyODEwMTU0QUI1RkIwMDAwNDAzNyAvKiBE
ZWNpbWFsLmggKi87IH07CiAJCTQ1QkFDMkIwMTM2MEJCQUIwMDVEQTI1OCAvKiBJY29uVVJMLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NUJBQzJBRjEz
NjBCQkFCMDA1REEyNTggLyogSWNvblVSTC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTQ2MTRBMUZFMEIyM0E4RDYwMDQ0NkUxQyAvKiBjb3B5Q3Vy
c29yLnBuZyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDYxNEExRkQwQjIzQThENjAwNDQ2RTFDIC8qIGNvcHlDdXJzb3IucG5nICovOyB9OwogCQk0Njcw
MEVEMDEyN0I5NkNCMDBGNUQ1RDYgLyogRmlsZVdyaXRlclN5bmMuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY3MDBFQ0UxMjdCOTZDQjAwRjVENUQ2
IC8qIEZpbGVXcml0ZXJTeW5jLmNwcCAqLzsgfTsKQEAgLTgxNDUsNiArODE0Nyw4IEBACiAJCTQ1
MDk5QzQwMTM3MEE3ODAwMDU4RDUxMyAvKiBJY29uVVJMLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEljb25VUkwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0NTBDRUJFRTE1MDczQkJFMDAyQkIxNDkgLyogTGFiZWxhYmxlRWxlbWVudC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMYWJlbGFibGVFbGVtZW50LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDUwQ0VCRUYxNTA3M0JCRTAwMkJCMTQ5IC8q
IExhYmVsYWJsZUVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGFi
ZWxhYmxlRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NThBMjgwRTE1
NEFCNUU2MDAwMDQwMzcgLyogRGVjaW1hbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBEZWNpbWFsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDU4
QTI4MTAxNTRBQjVGQjAwMDA0MDM3IC8qIERlY2ltYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRGVjaW1hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NUJB
QzJBRjEzNjBCQkFCMDA1REEyNTggLyogSWNvblVSTC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBJY29uVVJMLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2MTRB
MUZEMEIyM0E4RDYwMDQ0NkUxQyAvKiBjb3B5Q3Vyc29yLnBuZyAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGltYWdlLnBuZzsgcGF0aCA9IGNvcHlDdXJz
b3IucG5nOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjcwMEVDRTEyN0I5NkNCMDBG
NUQ1RDYgLyogRmlsZVdyaXRlclN5bmMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gRmlsZVdyaXRlclN5bmMuY3BwOyBwYXRoID0gTW9kdWxlcy9maWxlc3lzdGVtL0Zp
bGVXcml0ZXJTeW5jLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwMTg2LDYg
KzIwMTkwLDggQEAKIAkJQkNGMUE1QkEwOTc4MzIwOTAwNjFBMTIzIC8qIHBsYXRmb3JtICovID0g
ewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk0NThBMjgxMDE1NEFC
NUZCMDAwMDQwMzcgLyogRGVjaW1hbC5oICovLAorCQkJCTQ1OEEyODBFMTU0QUI1RTYwMDAwNDAz
NyAvKiBEZWNpbWFsLmNwcCAqLywKIAkJCQk0OUU5MTJBNDBFRkFDOEU2MDA5RDBDQUYgLyogYW5p
bWF0aW9uICovLAogCQkJCUZEMzE2MDQwMTJCMDI2QTMwMEMxQTM1OSAvKiBhdWRpbyAqLywKIAkJ
CQkxQUU0MkY2NzBBQTRCOENCMDBDODYxMkQgLyogY2YgKi8sCkBAIC0yNDgyMyw2ICsyNDgyOSw3
IEBACiAJCQkJRTFCRTUxMkUwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTc3RTJFMEYxMkYwRkM5QzAwQzEzMzc5IC8qIFhTU0F1ZGl0b3Iu
aCBpbiBIZWFkZXJzICovLAogCQkJCUZENTM3MzUzMTM3QjY1MTgwMDAwOERDRSAvKiBaZXJvUG9s
ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDU4QTI4MTExNTRBQjVGQjAwMDA0MDM3IC8qIERlY2lt
YWwuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHBy
b2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjc4MzcsNiArMjc4NDQsNyBAQAogCQkJCUUxQkU1MTJE
MENGNkM1MTIwMDJFQTk1OSAvKiBYU0xUVW5pY29kZVNvcnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJOTc3RTJFMEUxMkYwRkM5QzAwQzEzMzc5IC8qIFhTU0F1ZGl0b3IuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRkQ1MzczNTIxMzdCNjUxODAwMDA4RENFIC8qIFplcm9Qb2xlLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTQ1OEEyODBGMTU0QUI1RTYwMDAwNDAzNyAvKiBEZWNpbWFsLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXgg
YTMyZmIyM2I4ZjZmY2NhMjlhNDJhNWY1ZjQ3OTVlNTgxNmQxY2MzNy4uODQ2M2RlNzRkMjkxZjY4
ZTc5MGY3YTE2MDYyYWE1NWZiZDkxZmExNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1
dEVsZW1lbnQuY3BwCkBAIC0zMDAsNiArMzAwLDExIEBAIGJvb2wgSFRNTElucHV0RWxlbWVudDo6
Z2V0QWxsb3dlZFZhbHVlU3RlcChkb3VibGUqIHN0ZXApIGNvbnN0CiAgICAgcmV0dXJuIGdldEFs
bG93ZWRWYWx1ZVN0ZXBXaXRoRGVjaW1hbFBsYWNlcyhSZWplY3RBbnksIHN0ZXAsIDApOwogfQog
Citib29sIEhUTUxJbnB1dEVsZW1lbnQ6OmdldEFsbG93ZWRWYWx1ZVN0ZXAoRGVjaW1hbCogc3Rl
cCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pbnB1dFR5cGUtPmdldEFsbG93ZWRWYWx1ZVN0ZXAo
c3RlcCk7Cit9CisKIGJvb2wgSFRNTElucHV0RWxlbWVudDo6Z2V0QWxsb3dlZFZhbHVlU3RlcFdp
dGhEZWNpbWFsUGxhY2VzKEFueVN0ZXBIYW5kbGluZyBhbnlTdGVwSGFuZGxpbmcsIGRvdWJsZSog
c3RlcCwgdW5zaWduZWQqIGRlY2ltYWxQbGFjZXMpIGNvbnN0CiB7CiAgICAgQVNTRVJUKHN0ZXAp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAppbmRleCAzYWJmMTkzZWYyYWQ1
ZTNlMmZmOGZmNTQzNjk4ZjFkNGQ2Y2U3MWM4Li5lMGI1YmNjYjE1Y2FmNGU3YjEwYjIwOTk2MTc2
NWJmOTBmYjYyMDFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaApAQCAt
MjgsNiArMjgsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIERlY2ltYWw7CiBj
bGFzcyBGaWxlTGlzdDsKIGNsYXNzIEhUTUxEYXRhTGlzdEVsZW1lbnQ7CiBjbGFzcyBIVE1MT3B0
aW9uRWxlbWVudDsKQEAgLTYyLDYgKzYzLDcgQEAgcHVibGljOgogICAgIC8vIFNldHMgdGhlICJh
bGxvd2VkIHZhbHVlIHN0ZXAiIGRlZmluZWQgaW4gdGhlIEhUTUwgc3BlYyB0byB0aGUgc3BlY2lm
aWVkIGRvdWJsZSBwb2ludGVyLgogICAgIC8vIFJldHVybnMgZmFsc2UgaWYgdGhlcmUgaXMgbm8g
ImFsbG93ZWQgdmFsdWUgc3RlcC4iCiAgICAgYm9vbCBnZXRBbGxvd2VkVmFsdWVTdGVwKGRvdWJs
ZSopIGNvbnN0OworICAgIGJvb2wgZ2V0QWxsb3dlZFZhbHVlU3RlcChEZWNpbWFsKikgY29uc3Q7
CiAKICAgICAvLyBGb3IgVmFsaWRpdHlTdGF0ZS4KICAgICBib29sIHN0ZXBNaXNtYXRjaChjb25z
dCBTdHJpbmcmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRU
eXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAppbmRleCA5YTNkYTRk
ZWVhYzhmNzZkMzJjZjVjYmY1MDBjZjRmYmY0OGI1OWNlLi45MzAxZWI3NGUwYzBlNWQzMGM2YjNm
MDVlN2FlMTAyODk4OWI0YzIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0
VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCkBAIC0yNTMs
NiArMjUzLDEyIEBAIGRvdWJsZSBJbnB1dFR5cGU6OmRlZmF1bHRWYWx1ZUZvclN0ZXBVcCgpIGNv
bnN0CiAgICAgcmV0dXJuIDA7CiB9CiAKK2Jvb2wgSW5wdXRUeXBlOjpnZXRBbGxvd2VkVmFsdWVT
dGVwKERlY2ltYWwqKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJl
dHVybiBmYWxzZTsKK30KKwogZG91YmxlIElucHV0VHlwZTo6bWluaW11bSgpIGNvbnN0CiB7CiAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0lucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaAppbmRleCA3MzE2
ZmZkMTlmZDJlNDEzM2ZkNDI1N2YwMjIzYWQyNzIxMmI5ZGQ0Li43ZjY1YWY0NzQ1NjhkNDgxZTVi
ZTMwN2ExODRiNDE0NWY1YzU2MjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lu
cHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgKQEAgLTQ1LDYg
KzQ1LDcgQEAgY2xhc3MgQmVmb3JlVGV4dEluc2VydGVkRXZlbnQ7CiBjbGFzcyBDaHJvbWU7CiBj
bGFzcyBDb2xvcjsKIGNsYXNzIERhdGVDb21wb25lbnRzOworY2xhc3MgRGVjaW1hbDsKIGNsYXNz
IEV2ZW50OwogY2xhc3MgRmlsZUxpc3Q7CiBjbGFzcyBGb3JtRGF0YUxpc3Q7CkBAIC0xNjYsNiAr
MTY3LDcgQEAgcHVibGljOgogICAgIC8vIFRoaXMgZnVuY3Rpb24gbXVzdCBiZSBjYWxsZWQgb25s
eSBieSBIVE1MSW5wdXRFbGVtZW50OjpzYW5pdGl6ZVZhbHVlKCkuCiAgICAgdmlydHVhbCBTdHJp
bmcgc2FuaXRpemVWYWx1ZShjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wg
aGFzVW5hY2NlcHRhYmxlVmFsdWUoKTsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0QWxsb3dlZFZhbHVl
U3RlcChEZWNpbWFsKikgY29uc3Q7CiAKICAgICAvLyBFdmVudCBoYW5kbGVycwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwCmluZGV4IDRmYWY3ODZlNjU1YmMzNzg5NzMyZjhj
NzhmZDU3MDA4YTJmMzdhNDUuLjU3MWViZTIyZjk5NzRkNjcwYWVkMTM1MTM4NDhlOGIyYjVmN2Qz
YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwCkBAIC0xNTIsNiArMTUy
LDI2IEBAIGRvdWJsZSBSYW5nZUlucHV0VHlwZTo6c3RlcFNjYWxlRmFjdG9yKCkgY29uc3QKICAg
ICByZXR1cm4gcmFuZ2VTdGVwU2NhbGVGYWN0b3I7CiB9CiAKK2Jvb2wgUmFuZ2VJbnB1dFR5cGU6
OmdldEFsbG93ZWRWYWx1ZVN0ZXAoRGVjaW1hbCogc3RlcCkgY29uc3QKK3sKKyAgICBBU1NFUlQo
c3RlcCk7CisgICAgKnN0ZXAgPSAxOworCisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBzdGVwU3Ry
aW5nID0gZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKHN0ZXBBdHRyKTsKKyAgICBpZiAoc3Rl
cFN0cmluZy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKGVxdWFs
SWdub3JpbmdDYXNlKHN0ZXBTdHJpbmcsICJhbnkiKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgY29uc3QgRGVjaW1hbCBwYXJzZWQgPSBEZWNpbWFsOjpmcm9tU3RyaW5nKHN0ZXBTdHJp
bmcpOworICAgIGlmICghcGFyc2VkLmlzRmluaXRlKCkgfHwgcGFyc2VkIDw9IDApCisgICAgICAg
IHJldHVybiB0cnVlOworCisgICAgKnN0ZXAgPSBwYXJzZWQ7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKIHZvaWQgUmFuZ2VJbnB1dFR5cGU6OmhhbmRsZU1vdXNlRG93bkV2ZW50KE1vdXNlRXZlbnQq
IGV2ZW50KQogewogICAgIGlmIChlbGVtZW50KCktPmRpc2FibGVkKCkgfHwgZWxlbWVudCgpLT5y
ZWFkT25seSgpKQpAQCAtMTc2LDEwICsxOTYsMTAgQEAgdm9pZCBSYW5nZUlucHV0VHlwZTo6aGFu
ZGxlS2V5ZG93bkV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQogCiAgICAgY29uc3QgU3RyaW5n
JiBrZXkgPSBldmVudC0+a2V5SWRlbnRpZmllcigpOwogCi0gICAgZG91YmxlIGN1cnJlbnQgPSBw
YXJzZVRvRG91YmxlKGVsZW1lbnQoKS0+dmFsdWUoKSwgbnVtZXJpY19saW1pdHM8ZG91YmxlPjo6
cXVpZXRfTmFOKCkpOwotICAgIEFTU0VSVChpc2Zpbml0ZShjdXJyZW50KSk7CisgICAgRGVjaW1h
bCBjdXJyZW50ID0gRGVjaW1hbDo6ZnJvbVN0cmluZyhlbGVtZW50KCktPnZhbHVlKCkpOworICAg
IEFTU0VSVChjdXJyZW50LmlzRmluaXRlKCkpOwogCi0gICAgZG91YmxlIHN0ZXAsIGJpZ1N0ZXA7
CisgICAgRGVjaW1hbCBzdGVwLCBiaWdTdGVwOwogICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShl
bGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUoc3RlcEF0dHIpLCAiYW55IikpIHsKICAgICAgICAg
Ly8gRklYTUU6IFdlIGNhbid0IHVzZSBzdGVwVXAoKSBmb3IgdGhlIHN0ZXAgdmFsdWUgImFueSIu
IFNvLCB3ZSBpbmNyZWFzZQogICAgICAgICAvLyBvciBkZWNyZWFzZSB0aGUgdmFsdWUgYnkgMS8x
MDAgb2YgdGhlIHZhbHVlIHJhbmdlLiBJcyBpdCByZWFzb25hYmxlPwpAQCAtMjAwLDcgKzIyMCw3
IEBAIHZvaWQgUmFuZ2VJbnB1dFR5cGU6OmhhbmRsZUtleWRvd25FdmVudChLZXlib2FyZEV2ZW50
KiBldmVudCkKICAgICAgICAgaXNWZXJ0aWNhbCA9IHBhcnQgPT0gU2xpZGVyVmVydGljYWxQYXJ0
IHx8IHBhcnQgPT0gTWVkaWFWb2x1bWVTbGlkZXJQYXJ0OwogICAgIH0KIAotICAgIGRvdWJsZSBu
ZXdWYWx1ZTsKKyAgICBEZWNpbWFsIG5ld1ZhbHVlOwogICAgIGlmIChrZXkgPT0gIlVwIikKICAg
ICAgICAgbmV3VmFsdWUgPSBjdXJyZW50ICsgc3RlcDsKICAgICBlbHNlIGlmIChrZXkgPT0gIkRv
d24iKQpAQCAtMjI1LDcgKzI0NSw3IEBAIHZvaWQgUmFuZ2VJbnB1dFR5cGU6OmhhbmRsZUtleWRv
d25FdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKICAgICBpZiAobmV3VmFsdWUgIT0gY3VycmVu
dCkgewogICAgICAgICBFeGNlcHRpb25Db2RlIGVjOwogICAgICAgICBUZXh0RmllbGRFdmVudEJl
aGF2aW9yIGV2ZW50QmVoYXZpb3IgPSBEaXNwYXRjaENoYW5nZUV2ZW50OwotICAgICAgICBzZXRW
YWx1ZUFzTnVtYmVyKG5ld1ZhbHVlLCBldmVudEJlaGF2aW9yLCBlYyk7CisgICAgICAgIHNldFZh
bHVlQXNOdW1iZXIocGFyc2VUb0RvdWJsZShuZXdWYWx1ZS50b1N0cmluZygpLCBudW1lcmljX2xp
bWl0czxkb3VibGU+OjpxdWlldF9OYU4oKSksIGV2ZW50QmVoYXZpb3IsIGVjKTsKIAogICAgICAg
ICBpZiAoQVhPYmplY3RDYWNoZTo6YWNjZXNzaWJpbGl0eUVuYWJsZWQoKSkKICAgICAgICAgICAg
IGVsZW1lbnQoKS0+ZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNoZSgpLT5wb3N0Tm90aWZpY2F0aW9u
KGVsZW1lbnQoKS0+cmVuZGVyZXIoKSwgQVhPYmplY3RDYWNoZTo6QVhWYWx1ZUNoYW5nZWQsIHRy
dWUpOwpAQCAtMzAzLDEyICszMjMsMTIgQEAgdm9pZCBSYW5nZUlucHV0VHlwZTo6c2V0VmFsdWUo
Y29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCB2YWx1ZUNoYW5nZWQsIFRleHRGaWVsZEUKIAogU3Ry
aW5nIFJhbmdlSW5wdXRUeXBlOjpmYWxsYmFja1ZhbHVlKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
c2VyaWFsaXplRm9yTnVtYmVyVHlwZShTdGVwUmFuZ2UoZWxlbWVudCgpKS5kZWZhdWx0VmFsdWUo
KSk7CisgICAgcmV0dXJuIFN0ZXBSYW5nZShlbGVtZW50KCkpLmRlZmF1bHRWYWx1ZSgpLnRvU3Ry
aW5nKCk7CiB9CiAKIFN0cmluZyBSYW5nZUlucHV0VHlwZTo6c2FuaXRpemVWYWx1ZShjb25zdCBT
dHJpbmcmIHByb3Bvc2VkVmFsdWUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHNlcmlhbGl6ZUZvck51
bWJlclR5cGUoU3RlcFJhbmdlKGVsZW1lbnQoKSkuY2xhbXBWYWx1ZShwcm9wb3NlZFZhbHVlKSk7
CisgICAgcmV0dXJuIFN0ZXBSYW5nZShlbGVtZW50KCkpLmNsYW1wVmFsdWUocHJvcG9zZWRWYWx1
ZSkudG9TdHJpbmcoKTsKIH0KIAogYm9vbCBSYW5nZUlucHV0VHlwZTo6c2hvdWxkUmVzcGVjdExp
c3RBdHRyaWJ1dGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0
VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5oCmluZGV4IGFiZjJl
YTY3NDgyN2YxODMwYTYxMTBjZjAwOTg0Y2Y0MGZkMzhmYzUuLjlmNjg4MGEzNTllYWU0MzY3NWVk
MWViYTQ4Nzg2NzA1MmM5ZmU2YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFu
Z2VJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmgK
QEAgLTUzLDYgKzUzLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNSYW5n
ZUxpbWl0YXRpb24oKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGRvdWJsZSBtaW5pbXVt
KCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBkb3VibGUgbWF4aW11bSgpIGNvbnN0IE9W
RVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBnZXRBbGxvd2VkVmFsdWVTdGVwKERlY2ltYWwqKSBj
b25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgaXNTdGVwcGFibGUoKSBjb25zdCBPVkVS
UklERTsKICAgICB2aXJ0dWFsIGJvb2wgc3RlcE1pc21hdGNoKGNvbnN0IFN0cmluZyYsIGRvdWJs
ZSkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBkb3VibGUgc3RlcEJhc2UoKSBjb25zdCBP
VkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvU3RlcFJhbmdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvU3RlcFJhbmdlLmNwcAppbmRleCA3OTQ4MDIwZDA3Y2Y3N2Uy
ODc1M2Q5YWQ3ZWY4NDM3MjI0NDk2ZjZhLi5iMTk5YTUwNGQyMWRiNjdhZGEzMzNhNTk2MDEzNjVh
NjVkZmYyZTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1N0ZXBSYW5nZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9TdGVwUmFuZ2UuY3BwCkBAIC00MSwxNyArNDEsMTcg
QEAgU3RlcFJhbmdlOjpTdGVwUmFuZ2UoY29uc3QgSFRNTElucHV0RWxlbWVudCogZWxlbWVudCkK
ICAgICBlbHNlCiAgICAgICAgIGhhc1N0ZXAgPSBlbGVtZW50LT5nZXRBbGxvd2VkVmFsdWVTdGVw
KCZzdGVwKTsKIAotICAgIG1heGltdW0gPSBlbGVtZW50LT5tYXhpbXVtKCk7Ci0gICAgbWluaW11
bSA9IGVsZW1lbnQtPm1pbmltdW0oKTsKKyAgICBtYXhpbXVtID0gRGVjaW1hbDo6ZnJvbVN0cmlu
ZyhzZXJpYWxpemVGb3JOdW1iZXJUeXBlKGVsZW1lbnQtPm1heGltdW0oKSkpOworICAgIG1pbmlt
dW0gPSBEZWNpbWFsOjpmcm9tU3RyaW5nKHNlcmlhbGl6ZUZvck51bWJlclR5cGUoZWxlbWVudC0+
bWluaW11bSgpKSk7CiB9CiAKLWRvdWJsZSBTdGVwUmFuZ2U6OmNsYW1wVmFsdWUoZG91YmxlIHZh
bHVlKQorRGVjaW1hbCBTdGVwUmFuZ2U6OmNsYW1wVmFsdWUoY29uc3QgRGVjaW1hbCYgdmFsdWUp
CiB7Ci0gICAgZG91YmxlIGNsYW1wZWRWYWx1ZSA9IG1heChtaW5pbXVtLCBtaW4odmFsdWUsIG1h
eGltdW0pKTsKKyAgICBEZWNpbWFsIGNsYW1wZWRWYWx1ZSA9IG1heChtaW5pbXVtLCBtaW4odmFs
dWUsIG1heGltdW0pKTsKICAgICBpZiAoIWhhc1N0ZXApCiAgICAgICAgIHJldHVybiBjbGFtcGVk
VmFsdWU7CiAgICAgLy8gUm91bmRzIGNsYW1wZWRWYWx1ZSB0byBtaW5pbXVtICsgTiAqIHN0ZXAu
Ci0gICAgY2xhbXBlZFZhbHVlID0gbWluaW11bSArIHJvdW5kKChjbGFtcGVkVmFsdWUgLSBtaW5p
bXVtKSAvIHN0ZXApICogc3RlcDsKKyAgICBjbGFtcGVkVmFsdWUgPSBtaW5pbXVtICsgKChjbGFt
cGVkVmFsdWUgLSBtaW5pbXVtKSAvIHN0ZXApLnJvdW5kKCkgKiBzdGVwOwogICAgIGlmIChjbGFt
cGVkVmFsdWUgPiBtYXhpbXVtKQogICAgICAgIGNsYW1wZWRWYWx1ZSAtPSBzdGVwOwogICAgIEFT
U0VSVChjbGFtcGVkVmFsdWUgPj0gbWluaW11bSk7CkBAIC01OSwyNiArNTksMjQgQEAgZG91Ymxl
IFN0ZXBSYW5nZTo6Y2xhbXBWYWx1ZShkb3VibGUgdmFsdWUpCiAgICAgcmV0dXJuIGNsYW1wZWRW
YWx1ZTsKIH0KIAotZG91YmxlIFN0ZXBSYW5nZTo6Y2xhbXBWYWx1ZShjb25zdCBTdHJpbmcmIHN0
cmluZ1ZhbHVlKQorRGVjaW1hbCBTdGVwUmFuZ2U6OmNsYW1wVmFsdWUoY29uc3QgU3RyaW5nJiBz
dHJpbmdWYWx1ZSkKIHsKLSAgICBkb3VibGUgdmFsdWU7Ci0gICAgYm9vbCBwYXJzZVN1Y2Nlc3Mg
PSBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZShzdHJpbmdWYWx1ZSwgJnZhbHVlKTsKLSAgICBp
ZiAoIXBhcnNlU3VjY2VzcykKLSAgICAgICAgdmFsdWUgPSAobWluaW11bSArIG1heGltdW0pIC8g
MjsKLSAgICByZXR1cm4gY2xhbXBWYWx1ZSh2YWx1ZSk7CisgICAgY29uc3QgRGVjaW1hbCB2YWx1
ZSA9IERlY2ltYWw6OmZyb21TdHJpbmcoc3RyaW5nVmFsdWUpOworICAgIHJldHVybiB2YWx1ZS5p
c0Zpbml0ZSgpID8gY2xhbXBWYWx1ZSh2YWx1ZSkgOiBjbGFtcFZhbHVlKChtaW5pbXVtICsgbWF4
aW11bSkgLyAyKTsKIH0KIAotZG91YmxlIFN0ZXBSYW5nZTo6dmFsdWVGcm9tRWxlbWVudChIVE1M
SW5wdXRFbGVtZW50KiBlbGVtZW50LCBib29sKiB3YXNDbGFtcGVkKQorRGVjaW1hbCBTdGVwUmFu
Z2U6OnZhbHVlRnJvbUVsZW1lbnQoSFRNTElucHV0RWxlbWVudCogZWxlbWVudCwgYm9vbCogd2Fz
Q2xhbXBlZCkKIHsKLSAgICBkb3VibGUgb2xkVmFsdWU7Ci0gICAgYm9vbCBwYXJzZVN1Y2Nlc3Mg
PSBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZShlbGVtZW50LT52YWx1ZSgpLCAmb2xkVmFsdWUp
OwotICAgIGlmICghcGFyc2VTdWNjZXNzKQotICAgICAgICBvbGRWYWx1ZSA9IChtaW5pbXVtICsg
bWF4aW11bSkgLyAyOwotICAgIGRvdWJsZSBuZXdWYWx1ZSA9IGNsYW1wVmFsdWUob2xkVmFsdWUp
OworICAgIGNvbnN0IERlY2ltYWwgb2xkVmFsdWUgPSBEZWNpbWFsOjpmcm9tU3RyaW5nKGVsZW1l
bnQtPnZhbHVlKCkpOworICAgIGlmICghb2xkVmFsdWUuaXNGaW5pdGUoKSkgeworICAgICAgICBp
ZiAod2FzQ2xhbXBlZCkKKyAgICAgICAgICAgICp3YXNDbGFtcGVkID0gdHJ1ZTsKKyAgICAgICAg
cmV0dXJuIGNsYW1wVmFsdWUoKG1pbmltdW0gKyBtYXhpbXVtKSAvIDIpOworICAgIH0KIAorICAg
IGNvbnN0IERlY2ltYWwgbmV3VmFsdWUgPSBjbGFtcFZhbHVlKG9sZFZhbHVlKTsKICAgICBpZiAo
d2FzQ2xhbXBlZCkKLSAgICAgICAgKndhc0NsYW1wZWQgPSAhcGFyc2VTdWNjZXNzIHx8IG5ld1Zh
bHVlICE9IG9sZFZhbHVlOwotCisgICAgICAgICp3YXNDbGFtcGVkID0gbmV3VmFsdWUgIT0gb2xk
VmFsdWU7CiAgICAgcmV0dXJuIG5ld1ZhbHVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1N0ZXBSYW5nZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9TdGVwUmFuZ2UuaApp
bmRleCAyZmExMzkzYzU1MmFlMTAwMmU3NDQ0MWQ2ZmFkMTJkZWU0Y2JkYmM2Li44MWI5MmRjMjI3
NjMxNWI2Y2FjM2I3ODcyYTJmMGUwNWVkNmZlNWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1N0ZXBSYW5nZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvU3RlcFJhbmdlLmgK
QEAgLTIxLDYgKzIxLDcgQEAKICNpZm5kZWYgU3RlcFJhbmdlX2gKICNkZWZpbmUgU3RlcFJhbmdl
X2gKIAorI2luY2x1ZGUgPERlY2ltYWwuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCkBAIC0zMiwyMiArMzMsMjIgQEAgY2xhc3MgU3Rl
cFJhbmdlIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTdGVwUmFuZ2UpOwogcHVibGljOgog
ICAgIGJvb2wgaGFzU3RlcDsKLSAgICBkb3VibGUgc3RlcDsKLSAgICBkb3VibGUgbWluaW11bTsK
LSAgICBkb3VibGUgbWF4aW11bTsgLy8gbWF4aW11bSBtdXN0IGJlID49IG1pbmltdW0uCisgICAg
RGVjaW1hbCBzdGVwOworICAgIERlY2ltYWwgbWluaW11bTsKKyAgICBEZWNpbWFsIG1heGltdW07
IC8vIG1heGltdW0gbXVzdCBiZSA+PSBtaW5pbXVtLgogCiAgICAgZXhwbGljaXQgU3RlcFJhbmdl
KGNvbnN0IEhUTUxJbnB1dEVsZW1lbnQqKTsKLSAgICBkb3VibGUgY2xhbXBWYWx1ZShkb3VibGUg
dmFsdWUpOwotICAgIGRvdWJsZSBjbGFtcFZhbHVlKGNvbnN0IFN0cmluZyYgc3RyaW5nVmFsdWUp
OworICAgIERlY2ltYWwgY2xhbXBWYWx1ZShjb25zdCBEZWNpbWFsJiB2YWx1ZSk7CisgICAgRGVj
aW1hbCBjbGFtcFZhbHVlKGNvbnN0IFN0cmluZyYgc3RyaW5nVmFsdWUpOwogCiAgICAgLy8gQ2xh
bXAgdGhlIG1pZGRsZSB2YWx1ZSBhY2NvcmRpbmcgdG8gdGhlIHN0ZXAKLSAgICBkb3VibGUgZGVm
YXVsdFZhbHVlKCkKKyAgICBEZWNpbWFsIGRlZmF1bHRWYWx1ZSgpCiAgICAgewogICAgICAgICBy
ZXR1cm4gY2xhbXBWYWx1ZSgobWluaW11bSArIG1heGltdW0pIC8gMik7CiAgICAgfQogCiAgICAg
Ly8gTWFwIHZhbHVlIGludG8gMC0xIHJhbmdlCi0gICAgZG91YmxlIHByb3BvcnRpb25Gcm9tVmFs
dWUoZG91YmxlIHZhbHVlKQorICAgIERlY2ltYWwgcHJvcG9ydGlvbkZyb21WYWx1ZShjb25zdCBE
ZWNpbWFsJiB2YWx1ZSkKICAgICB7CiAgICAgICAgIGlmIChtaW5pbXVtID09IG1heGltdW0pCiAg
ICAgICAgICAgICByZXR1cm4gMDsKQEAgLTU2LDEyICs1NywxMiBAQCBwdWJsaWM6CiAgICAgfQog
CiAgICAgLy8gTWFwIGZyb20gMC0xIHJhbmdlIHRvIHZhbHVlCi0gICAgZG91YmxlIHZhbHVlRnJv
bVByb3BvcnRpb24oZG91YmxlIHByb3BvcnRpb24pCisgICAgRGVjaW1hbCB2YWx1ZUZyb21Qcm9w
b3J0aW9uKGNvbnN0IERlY2ltYWwmIHByb3BvcnRpb24pCiAgICAgewogICAgICAgICByZXR1cm4g
bWluaW11bSArIHByb3BvcnRpb24gKiAobWF4aW11bSAtIG1pbmltdW0pOwogICAgIH0KIAotICAg
IGRvdWJsZSB2YWx1ZUZyb21FbGVtZW50KEhUTUxJbnB1dEVsZW1lbnQqLCBib29sKiB3YXNDbGFt
cGVkID0gMCk7CisgICAgRGVjaW1hbCB2YWx1ZUZyb21FbGVtZW50KEhUTUxJbnB1dEVsZW1lbnQq
LCBib29sKiB3YXNDbGFtcGVkID0gMCk7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcAppbmRleCBmOGFmMzlmNTEwNDBkZGQ1
YWU5MTg0N2VhMjk1MzVkZmZiNzY3YTk5Li4yY2NkNjJjNWU2NmJjOTA1NGEwMmRmNmZkNWFjM2Uy
YWRiNDdkYzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJU
aHVtYkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRo
dW1iRWxlbWVudC5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1pbmxpbmUgc3RhdGljIGRvdWJsZSBzbGlkZXJQb3NpdGlv
bihIVE1MSW5wdXRFbGVtZW50KiBlbGVtZW50KQoraW5saW5lIHN0YXRpYyBEZWNpbWFsIHNsaWRl
clBvc2l0aW9uKEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQpCiB7CiAgICAgU3RlcFJhbmdlIHJh
bmdlKGVsZW1lbnQpOwogICAgIHJldHVybiByYW5nZS5wcm9wb3J0aW9uRnJvbVZhbHVlKHJhbmdl
LnZhbHVlRnJvbUVsZW1lbnQoZWxlbWVudCkpOwpAQCAtMTA5LDcgKzEwOSw5IEBAIHZvaWQgUmVu
ZGVyU2xpZGVyVGh1bWI6OmxheW91dCgpCiAgICAgSFRNTElucHV0RWxlbWVudCogaW5wdXQgPSBu
b2RlKCktPnNoYWRvd0FuY2VzdG9yTm9kZSgpLT50b0lucHV0RWxlbWVudCgpOwogICAgIGJvb2wg
aXNWZXJ0aWNhbCA9IHN0eWxlKCktPmFwcGVhcmFuY2UoKSA9PSBTbGlkZXJUaHVtYlZlcnRpY2Fs
UGFydCB8fCBzdHlsZSgpLT5hcHBlYXJhbmNlKCkgPT0gTWVkaWFWb2x1bWVTbGlkZXJUaHVtYlBh
cnQ7CiAKLSAgICBkb3VibGUgZnJhY3Rpb24gPSBzbGlkZXJQb3NpdGlvbihpbnB1dCkgKiAxMDA7
CisgICAgZG91YmxlIGZyYWN0aW9uOworICAgIHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKChz
bGlkZXJQb3NpdGlvbihpbnB1dCkgKiAxMDApLnRvU3RyaW5nKCksICZmcmFjdGlvbik7CisgICAg
QVNTRVJUKGlzZmluaXRlKGZyYWN0aW9uKSk7CiAgICAgaWYgKGlzVmVydGljYWwpCiAgICAgICAg
IHN0eWxlKCktPnNldFRvcChMZW5ndGgoMTAwIC0gZnJhY3Rpb24sIFBlcmNlbnQpKTsKICAgICBl
bHNlIGlmIChzdHlsZSgpLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkpCkBAIC0yMzYsMTMgKzIz
OCwxMyBAQCB2b2lkIFNsaWRlclRodW1iRWxlbWVudDo6c2V0UG9zaXRpb25Gcm9tUG9pbnQoY29u
c3QgTGF5b3V0UG9pbnQmIHBvaW50KQogICAgICAgICByZXR1cm47CiAKICAgICBTdGVwUmFuZ2Ug
cmFuZ2UoaW5wdXQpOwotICAgIGRvdWJsZSBmcmFjdGlvbiA9IHN0YXRpY19jYXN0PGRvdWJsZT4o
cG9zaXRpb24pIC8gdHJhY2tTaXplOworICAgIERlY2ltYWwgZnJhY3Rpb24gPSBEZWNpbWFsKHBv
c2l0aW9uKSAvIHRyYWNrU2l6ZTsKICAgICBpZiAoaXNWZXJ0aWNhbCB8fCAhcmVuZGVyQm94KCkt
PnN0eWxlKCktPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkKLSAgICAgICAgZnJhY3Rpb24gPSAx
IC0gZnJhY3Rpb247Ci0gICAgZG91YmxlIHZhbHVlID0gcmFuZ2UuY2xhbXBWYWx1ZShyYW5nZS52
YWx1ZUZyb21Qcm9wb3J0aW9uKGZyYWN0aW9uKSk7CisgICAgICAgIGZyYWN0aW9uID0gRGVjaW1h
bCgxKSAtIGZyYWN0aW9uOworICAgIGNvbnN0IERlY2ltYWwgdmFsdWUgPSByYW5nZS5jbGFtcFZh
bHVlKHJhbmdlLnZhbHVlRnJvbVByb3BvcnRpb24oZnJhY3Rpb24pKTsKIAogICAgIC8vIEZJWE1F
OiBUaGlzIGlzIG5vIGxvbmdlciBiZWluZyBzZXQgZnJvbSByZW5kZXJlci4gQ29uc2lkZXIgdXBk
YXRpbmcgdGhlIG1ldGhvZCBuYW1lLgotICAgIGlucHV0LT5zZXRWYWx1ZUZyb21SZW5kZXJlcihz
ZXJpYWxpemVGb3JOdW1iZXJUeXBlKHZhbHVlKSk7CisgICAgaW5wdXQtPnNldFZhbHVlRnJvbVJl
bmRlcmVyKHZhbHVlLnRvU3RyaW5nKCkpOwogICAgIHJlbmRlcmVyKCktPnNldE5lZWRzTGF5b3V0
KHRydWUpOwogICAgIGlucHV0LT5kaXNwYXRjaEZvcm1Db250cm9sQ2hhbmdlRXZlbnQoKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RlY2ltYWwuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vRGVjaW1hbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWYxYzI1OTM5ZTU2ZWU3
YjcxN2Y2NmRjZDI1Yjc1ZmJmZGIzOTA1YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0RlY2ltYWwuY3BwCkBAIC0wLDAgKzEsMTA2NSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRp
b24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJEZWNpbWFsLmgiCisKKyNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5j
bHVkZSA8ZmxvYXQuaD4KKworI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8
d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBEZWNpbWFsUHJpdmF0ZSB7CisKK3Vz
aW5nIG5hbWVzcGFjZSBzdGQ7CisKK3N0YXRpYyBjb25zdCBpbnQgUHJlY2lzaW9uT2ZFeHBvbmVu
dEJpdHMgPSAxMTsKK3N0YXRpYyBjb25zdCBpbnQgUHJlY2lzaW9uT2ZDb2VmZmljaWVudEJpdHMg
PSA2NDsKK3N0YXRpYyBjb25zdCB1aW50NjRfdCBNYXhDb2VmZmljaWVudCA9IDB4MTYzNDU3ODVE
ODlGRkZGOyAvLyA5OTk5OTk5OTk5OTk5OTk5OTk7IC8vIDE4IDkncworCitzdGF0aWMgY29uc3Qg
dWludDMyX3QgRXhwb25lbnRNYXNrID0gMHg3RkY7CisKK3N0YXRpYyBjb25zdCB1aW50MzJfdCBO
ZWdhdGl2ZUluZmluaXR5UGF0dGVybiA9IHVpbnQzMl90KDB4ODAwMDA3RkYpOworc3RhdGljIGNv
bnN0IHVpbnQzMl90IFBvc2l0aXZlSW5maW5pdHlQYXR0ZXJuID0gdWludDMyX3QoMHgwMDAwMDdG
Rik7CisKK3N0YXRpYyBjb25zdCB1aW50MzJfdCBOZWdhdGl2ZVF1aWV0TmFOUGF0dGVybiA9IHVp
bnQzMl90KDB4ODAwMDBGRkYpOworc3RhdGljIGNvbnN0IHVpbnQzMl90IFBvc2l0aXZlUXVpZXRO
YU5QYXR0ZXJuID0gdWludDMyX3QoMHgwMDAwMEZGRik7CisKK3N0YXRpYyBjb25zdCB1aW50MzJf
dCBOZWdhdGl2ZVplcm9QYXR0ZXJuID0gdWludDMyX3QoMHg4MDAwMDNGRik7CitzdGF0aWMgY29u
c3QgdWludDMyX3QgUG9zaXRpdmVaZXJvUGF0dGVybiA9IHVpbnQzMl90KDB4MDAwMDAzRkYpOwor
CitzdGF0aWMgY29uc3QgdWludDMyX3QgTmVnYXRpdmVQYXR0ZXJuID0gdWludDMyX3QoMHg4MDAw
MDAwMCk7CitzdGF0aWMgY29uc3QgdWludDMyX3QgUG9zaXRpdmVQYXR0ZXJuID0gMDsKKworLy8g
VGhpcyBjbGFzcyBoYW5kbGVzIERlY2ltYWwgc3BlY2lhbCB2YWx1ZXMuCitjbGFzcyBTcGVjaWFs
VmFsdWVIYW5kbGVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTcGVjaWFsVmFsdWVIYW5k
bGVyKTsKK3B1YmxpYzoKKyAgICBlbnVtIEhhbmRsZVJlc3VsdCB7CisgICAgICAgIEJvdGhGaW5p
dGUsCisgICAgICAgIEJvdGhpbmZpbml0eSwKKyAgICAgICAgRWl0aGVyTmFOLAorICAgICAgICBM
aHNJc2luZmluaXR5LAorICAgICAgICBSaHNJc2luZmluaXR5LAorICAgIH07CisKKyAgICBTcGVj
aWFsVmFsdWVIYW5kbGVyKGNvbnN0IERlY2ltYWwmLCBjb25zdCBEZWNpbWFsJik7CisgICAgSGFu
ZGxlUmVzdWx0IGhhbmRsZSgpOworICAgIERlY2ltYWwgdmFsdWUoKSBjb25zdDsKKworcHJpdmF0
ZToKKyAgICBlbnVtIFJlc3VsdCB7CisgICAgICAgIFJlc3VsdElzTGhzLAorICAgICAgICBSZXN1
bHRJc1JocywKKyAgICAgICAgUmVzdWx0SXNVbmtub3duLAorICAgIH07CisKKyAgICBjb25zdCBE
ZWNpbWFsJiBtX2xoczsKKyAgICBSZXN1bHQgbV9yZXN1bHQ7CisgICAgY29uc3QgRGVjaW1hbCYg
bV9yaHM7Cit9OworCisvLyBUaGlzIGNsYXNzIGlzIHVzZWQgZm9yIDEyOCBiaXQgdW5zaWduZWQg
aW50ZWdlciBhcml0aG1ldGljLgorY2xhc3MgVUludDEyOCB7CitwdWJsaWM6CisgICAgVUludDEy
OCh1aW50NjRfdCwgdWludDY0X3QpOworCisgICAgVUludDEyOCYgb3BlcmF0b3IgLz0odWludDMy
X3QpOworCisgICAgdWludDY0X3QgaGlnaCgpIGNvbnN0IHsgcmV0dXJuIG1faGlnaDsgfQorICAg
IHVpbnQ2NF90IGxvdygpIGNvbnN0IHsgcmV0dXJuIG1fbG93OyB9CisKKyAgICBzdGF0aWMgVUlu
dDEyOCBtdWx0aXBseSh1aW50NjRfdCwgdWludDY0X3QpOworCitwcml2YXRlOgorICAgIGJvb2wg
aXNaZXJvKCkgY29uc3QgeyByZXR1cm4gIW1fbG93ICYmICFtX2hpZ2g7IH0KKworICAgIHVpbnQ2
NF90IG1faGlnaDsKKyAgICB1aW50NjRfdCBtX2xvdzsKK307CisKK3N0YXRpYyBpbnQgY291bnRE
aWdpdHModWludDY0X3QgeCkKK3sKKyAgICBpbnQgbnVtYmVyT2ZEaWdpdHMgPSAwOworICAgIHdo
aWxlICh4ID4gMCkgeworICAgICAgICB4IC89IDEwOworICAgICAgICArK251bWJlck9mRGlnaXRz
OworICAgIH0KKyAgICByZXR1cm4gbnVtYmVyT2ZEaWdpdHM7Cit9CisKK3N0YXRpYyB1aW50NjRf
dCBtdWx0aXBseUhpZ2godWludDY0X3QgdSwgdWludDY0X3QgdikKK3sKKyAgICBjb25zdCBpbnQg
biA9IDY0OworICAgIGNvbnN0IGludCBuMiA9IG4gLyAyOworICAgIGNvbnN0IHVpbnQ2NF90IG1h
c2sgPSAodWludDY0X3QoMSkgPDwgbjIpIC0gMTsKKyAgICB1aW50NjRfdCB1MCA9IHUgJiBtYXNr
OworICAgIHVpbnQ2NF90IHUxID0gdSA+PiBuMjsKKyAgICB1aW50NjRfdCB2MCA9IHYgJiBtYXNr
OworICAgIHVpbnQ2NF90IHYxID0gdiA+PiBuMjsKKyAgICB1aW50NjRfdCB3MCA9IHUwICogdjA7
CisgICAgdWludDY0X3QgdHQgPSB1MSAqIHYwICsgKHcwID4+IG4yKTsKKyAgICB1aW50NjRfdCB3
MSA9IHR0ICYgbWFzazsKKyAgICB1aW50NjRfdCB3MiA9IHR0ID4+IG4yOworICAgIHcxID0gdTAg
KiB2MSArIHcxOworICAgIHJldHVybiB1MSAqIHYxICsgdzIgKyAodzEgPj4gbjIpOworfQorCit0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgorc3RhdGljIFQgcG93ZXIoVCBjb25zdCB4LCB1aW50IG4pCit7
CisgICAgVCB5ID0gMTsKKyAgICBUIHogPSB4OworICAgIGZvciAoOzspIHsKKyAgICAgICAgaWYg
KG4gJiAxKSB7CisgICAgICAgICAgICB5ID0geSAqIHo7CisgICAgICAgICAgICBBU1NFUlQoeSA+
PSB6KTsKKyAgICAgICAgfQorCisgICAgICAgIG4gPj49IDE7CisgICAgICAgIGlmICghbikKKyAg
ICAgICAgICAgIHJldHVybiB5OworCisgICAgICAgIHogPSB6ICogejsKKyAgICB9Cit9CisKK3N0
YXRpYyB1aW50NjRfdCBzY2FsZURvd24odWludDY0X3QgeCwgaW50IG4pCit7CisgICAgQVNTRVJU
KG4gPj0gMCk7CisgICAgd2hpbGUgKG4gPiAwICYmIHgpIHsKKyAgICAgICAgeCAvPSAxMDsKKyAg
ICAgICAgLS1uOworICAgIH0KKyAgICByZXR1cm4geDsKK30KKworc3RhdGljIHVpbnQ2NF90IHNj
YWxlVXAodWludDY0X3QgeCwgaW50IG4pCit7CisgICAgQVNTRVJUKG4gPj0gMCk7CisgICAgQVNT
RVJUKG4gPCBEZWNpbWFsOjpQcmVjaXNpb24pOworICAgIHVpbnQ2NF90IHJlc3VsdCA9IHggKiBw
b3dlcih1aW50NjRfdCgxMCksIG4pOworICAgIEFTU0VSVChyZXN1bHQgPj0geCk7CisgICAgcmV0
dXJuIHJlc3VsdDsKK30KKworU3BlY2lhbFZhbHVlSGFuZGxlcjo6U3BlY2lhbFZhbHVlSGFuZGxl
cihjb25zdCBEZWNpbWFsJiBsaHMsIGNvbnN0IERlY2ltYWwmIHJocykKKyAgICA6IG1fbGhzKGxo
cyksIG1fcmVzdWx0KFJlc3VsdElzVW5rbm93biksIG1fcmhzKHJocykKK3sKK30KKworU3BlY2lh
bFZhbHVlSGFuZGxlcjo6SGFuZGxlUmVzdWx0IFNwZWNpYWxWYWx1ZUhhbmRsZXI6OmhhbmRsZSgp
Cit7CisgICAgaWYgKG1fbGhzLmlzRmluaXRlKCkgJiYgbV9yaHMuaXNGaW5pdGUoKSkKKyAgICAg
ICAgcmV0dXJuIEJvdGhGaW5pdGU7CisKKyAgICBjb25zdCBEZWNpbWFsOjpJZWVlQ2xhc3MgbGhz
Q2xhc3MgPSBtX2xocy5pZWVlQ2xhc3MoKTsKKyAgICBjb25zdCBEZWNpbWFsOjpJZWVlQ2xhc3Mg
cmhzQ2xhc3MgPSBtX3Jocy5pZWVlQ2xhc3MoKTsKKyAgICBpZiAobGhzQ2xhc3MgPT0gRGVjaW1h
bDo6Q2xhc3NRdWlldE5hTikgeworICAgICAgICBtX3Jlc3VsdCA9IFJlc3VsdElzTGhzOworICAg
ICAgICByZXR1cm4gRWl0aGVyTmFOOworICAgICB9CisKKyAgICBpZiAocmhzQ2xhc3MgPT0gRGVj
aW1hbDo6Q2xhc3NRdWlldE5hTikgeworICAgICAgICBtX3Jlc3VsdCA9IFJlc3VsdElzUmhzOwor
ICAgICAgICByZXR1cm4gRWl0aGVyTmFOOworICAgICB9CisKKyAgICBpZiAobGhzQ2xhc3MgPT0g
RGVjaW1hbDo6Q2xhc3NJbmZpbml0eSkKKyAgICAgICAgcmV0dXJuIHJoc0NsYXNzID09IERlY2lt
YWw6OkNsYXNzSW5maW5pdHkgPyBCb3RoaW5maW5pdHkgOiBMaHNJc2luZmluaXR5OworCisgICAg
aWYgKHJoc0NsYXNzID09IERlY2ltYWw6OkNsYXNzSW5maW5pdHkpCisgICAgICAgIHJldHVybiBS
aHNJc2luZmluaXR5OworCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIEJv
dGhGaW5pdGU7Cit9CisKK0RlY2ltYWwgU3BlY2lhbFZhbHVlSGFuZGxlcjo6dmFsdWUoKSBjb25z
dAoreworICAgIHN3aXRjaCAobV9yZXN1bHQpIHsKKyAgICBjYXNlIFJlc3VsdElzTGhzOgorICAg
ICAgICByZXR1cm4gbV9saHM7CisgICAgY2FzZSBSZXN1bHRJc1JoczoKKyAgICAgICAgcmV0dXJu
IG1fcmhzOworICAgIGNhc2UgUmVzdWx0SXNVbmtub3duOgorICAgIGRlZmF1bHQ6CisgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gbV9saHM7CisgICAgfQorfQor
CitVSW50MTI4OjpVSW50MTI4KHVpbnQ2NF90IGxvdywgdWludDY0X3QgaGlnaCkKKyAgICA6IG1f
aGlnaChoaWdoKSwgbV9sb3cobG93KQoreworfQorCitVSW50MTI4JiBVSW50MTI4OjpvcGVyYXRv
ciAvPShjb25zdCB1aW50MzJfdCBkaXZpc29yKQoreworICAgIGlmICghbV9oaWdoKSB7CisgICAg
ICAgIG1fbG93IC89IGRpdmlzb3I7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAg
ICB1aW50MzJfdCBkaXZpZGVuZFs0XTsKKyAgICBkaXZpZGVuZFswXSA9IHVpbnQzMl90KG1fbG93
ICYgdWludDMyX3QoLTEpKTsKKyAgICBkaXZpZGVuZFsxXSA9IHVpbnQzMl90KG1fbG93ID4+IDMy
KTsKKyAgICBkaXZpZGVuZFsyXSA9IHVpbnQzMl90KG1faGlnaCAmIHVpbnQzMl90KC0xKSk7Cisg
ICAgZGl2aWRlbmRbM10gPSB1aW50MzJfdChtX2hpZ2ggPj4gMzIpOworCisgICAgdWludDMyX3Qg
cXVvdGllbnRbNF07CisgICAgdWludDMyX3QgcmVtYWluZGVyID0gMDsKKyAgICBmb3IgKGludCBp
ID0gMzsgaSA+PSAwOyAtLWkpIHsKKyAgICAgICAgY29uc3QgdWludDY0X3Qgd29yayA9ICh1aW50
NjRfdChyZW1haW5kZXIpIDw8IDMyKSB8IGRpdmlkZW5kW2ldOworICAgICAgICByZW1haW5kZXIg
PSB1aW50MzJfdCh3b3JrICUgZGl2aXNvcik7CisgICAgICAgIHF1b3RpZW50W2ldID0gdWludDMy
X3Qod29yayAvIGRpdmlzb3IpOworICAgIH0KKyAgICBtX2xvdyA9IHF1b3RpZW50WzBdIHwgKHVp
bnQ2NF90KHF1b3RpZW50WzFdKSA8PCAzMik7CisgICAgbV9oaWdoID0gcXVvdGllbnRbMl0gfCAo
dWludDY0X3QocXVvdGllbnRbM10pIDw8IDMyKTsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK1VJ
bnQxMjggVUludDEyODo6bXVsdGlwbHkodWludDY0X3QgdSwgdWludDY0X3QgdikKK3sKKyAgICBy
ZXR1cm4gVUludDEyOCh1ICogdiwgbXVsdGlwbHlIaWdoKHUsIHYpKTsKK30KKworfSAvLyBEZWNp
bWFsUHJpdmF0ZQorCit1c2luZyBuYW1lc3BhY2UgRGVjaW1hbFByaXZhdGU7CisKK0RlY2ltYWw6
OkVuY29kZWREYXRhOjpFbmNvZGVkRGF0YSh1aW50MzJfdCBwYXR0ZXJuKQorICAgIDogbV9jb2Vm
ZmljaWVudCgwKQorICAgICwgbV9wYWNrZWRGaWVsZChwYXR0ZXJuKQoreworICAgIEFTU0VSVCgo
cGF0dGVybiAmIFBvc2l0aXZlWmVyb1BhdHRlcm4pID09IFBvc2l0aXZlWmVyb1BhdHRlcm4pOwor
fQorCitEZWNpbWFsOjpFbmNvZGVkRGF0YTo6RW5jb2RlZERhdGEodWludDY0X3QgY29lZmZpY2ll
bnQsIGNvbnN0IGludCBleHBvbmVudCwgY29uc3QgaW50IHNpZ24pCit7CisgICAgaW50IHJhd0V4
cG9uZW50ID0gZXhwb25lbnQgKyBFYmlhczsKKyAgICBpZiAodWludChyYXdFeHBvbmVudCkgPCB1
aW50KEVtYXgpKSB7CisgICAgICAgIHdoaWxlIChjb2VmZmljaWVudCA+PSBNYXhDb2VmZmljaWVu
dCkgeworICAgICAgICAgICAgY29lZmZpY2llbnQgLz0gMTA7CisgICAgICAgICAgICArK3Jhd0V4
cG9uZW50OworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKHJhd0V4cG9uZW50ID49IEVtYXgp
IHsKKyAgICAgICAgbV9jb2VmZmljaWVudCA9IDA7CisgICAgICAgIG1fcGFja2VkRmllbGQgPSBz
aWduID8gTmVnYXRpdmVJbmZpbml0eVBhdHRlcm4gOiBQb3NpdGl2ZUluZmluaXR5UGF0dGVybjsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChyYXdFeHBvbmVudCA8IDApIHsKKyAg
ICAgICAgbV9jb2VmZmljaWVudCA9IDA7CisgICAgICAgIG1fcGFja2VkRmllbGQgPSBzaWduID8g
TmVnYXRpdmVaZXJvUGF0dGVybiA6IFBvc2l0aXZlWmVyb1BhdHRlcm47CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBtX2NvZWZmaWNpZW50ID0gY29lZmZpY2llbnQ7CisgICAgbV9wYWNr
ZWRGaWVsZCA9IHJhd0V4cG9uZW50IHwgKHNpZ24gPyBOZWdhdGl2ZVBhdHRlcm4gOiBQb3NpdGl2
ZVBhdHRlcm4pOworfQorCit1aW50NjRfdCBEZWNpbWFsOjpFbmNvZGVkRGF0YTo6Y29lZmZpY2ll
bnQoKSBjb25zdAoreworICAgIHJldHVybiBtX2NvZWZmaWNpZW50OworfQorCitpbnQgRGVjaW1h
bDo6RW5jb2RlZERhdGE6OmV4cG9uZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gcmF3RXhwb25l
bnQoKSAtIERlY2ltYWw6OkViaWFzOworfQorCitib29sIERlY2ltYWw6OkVuY29kZWREYXRhOjpp
c0Zpbml0ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICFpc1NwZWNpYWwoKTsKK30KKworYm9vbCBE
ZWNpbWFsOjpFbmNvZGVkRGF0YTo6aXNTcGVjaWFsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gcmF3
RXhwb25lbnQoKSA9PSBEZWNpbWFsOjpFbWF4OworfQorCitib29sIERlY2ltYWw6OkVuY29kZWRE
YXRhOjppc1plcm8oKSBjb25zdAoreworICAgIHJldHVybiBpc0Zpbml0ZSgpICYmICFtX2NvZWZm
aWNpZW50OworfQorCitpbnQgRGVjaW1hbDo6RW5jb2RlZERhdGE6OnJhd0V4cG9uZW50KCkgY29u
c3QKK3sKKyAgICByZXR1cm4gaW50KG1fcGFja2VkRmllbGQgJiBFeHBvbmVudE1hc2spOworfQor
CitpbnQgRGVjaW1hbDo6RW5jb2RlZERhdGE6OnNpZ24oKSBjb25zdAoreworICAgIHJldHVybiBp
bnQobV9wYWNrZWRGaWVsZCkgPCAwOworfQorCit2b2lkIERlY2ltYWw6OkVuY29kZWREYXRhOjpz
ZXRTaWduKGNvbnN0IGludCBzaWduKQoreworICAgIEFTU0VSVCh1aW50KHNpZ24pIDw9IHVpbnQo
MSkpOworICAgIGlmIChzaWduKQorICAgICAgICBtX3BhY2tlZEZpZWxkIHw9IHVpbnQzMl90KDEp
IDw8IDMxOworICAgIGVsc2UKKyAgICAgICAgbV9wYWNrZWRGaWVsZCAmPSB+KHVpbnQzMl90KDEp
IDw8IDMxKTsKK30KKworRGVjaW1hbDo6RGVjaW1hbCgpCisgICAgOiBtX2RhdGEoMCwgMCwgMCkK
K3sKK30KKworRGVjaW1hbDo6RGVjaW1hbChpbnQzMl90IGkzMikKKyAgICA6IG1fZGF0YShpMzIg
PCAwID8gLWkzMiA6IGkzMiwgMCwgaTMyIDwgMCkKK3sKK30KKworRGVjaW1hbDo6RGVjaW1hbCh1
aW50NjRfdCBjb2VmZmljaWVudCwgaW50IGV4cG9uZW50LCBpbnQgc2lnbikKKyAgICA6IG1fZGF0
YShjb2VmZmljaWVudCwgZXhwb25lbnQsIHNpZ24pCit7Cit9CisKK0RlY2ltYWw6OkRlY2ltYWwo
Y29uc3QgRW5jb2RlZERhdGEmIGRhdGEpCisgICAgOiBtX2RhdGEoZGF0YSkKK3sKK30KKworRGVj
aW1hbDo6RGVjaW1hbChjb25zdCBEZWNpbWFsJiBvdGhlcikKKyAgICA6IG1fZGF0YShvdGhlci5t
X2RhdGEpCit7Cit9CisKK0RlY2ltYWwmIERlY2ltYWw6Om9wZXJhdG9yID0oY29uc3QgRGVjaW1h
bCYgb3RoZXIpCit7CisgICAgbV9kYXRhID0gb3RoZXIubV9kYXRhOworICAgIHJldHVybiAqdGhp
czsKK30KKworRGVjaW1hbCYgRGVjaW1hbDo6b3BlcmF0b3IgKz0oY29uc3QgRGVjaW1hbCYgb3Ro
ZXIpCit7CisgICAgbV9kYXRhID0gKCp0aGlzICsgb3RoZXIpLm1fZGF0YTsKKyAgICByZXR1cm4g
KnRoaXM7Cit9CisKK0RlY2ltYWwmIERlY2ltYWw6Om9wZXJhdG9yIC09KGNvbnN0IERlY2ltYWwm
IG90aGVyKQoreworICAgIG1fZGF0YSA9ICgqdGhpcyAtIG90aGVyKS5tX2RhdGE7CisgICAgcmV0
dXJuICp0aGlzOworfQorCitEZWNpbWFsJiBEZWNpbWFsOjpvcGVyYXRvciAqPShjb25zdCBEZWNp
bWFsJiBvdGhlcikKK3sKKyAgICBtX2RhdGEgPSAoKnRoaXMgKiBvdGhlcikubV9kYXRhOworICAg
IHJldHVybiAqdGhpczsKK30KKworRGVjaW1hbCYgRGVjaW1hbDo6b3BlcmF0b3IgLz0oY29uc3Qg
RGVjaW1hbCYgb3RoZXIpCit7CisgICAgbV9kYXRhID0gKCp0aGlzIC8gb3RoZXIpLm1fZGF0YTsK
KyAgICByZXR1cm4gKnRoaXM7Cit9CisKK0RlY2ltYWwgRGVjaW1hbDo6b3BlcmF0b3IgKyhjb25z
dCBEZWNpbWFsJiByaHMpIGNvbnN0Cit7CisgICAgY29uc3QgRGVjaW1hbCYgbGhzID0gKnRoaXM7
CisgICAgY29uc3QgaW50IGxoc1NpZ24gPSBsaHMuc2lnbigpOworICAgIGNvbnN0IGludCByaHNT
aWduID0gcmhzLnNpZ24oKTsKKworICAgIFNwZWNpYWxWYWx1ZUhhbmRsZXIgaGFuZGxlcihsaHMs
IHJocyk7CisgICAgc3dpdGNoIChoYW5kbGVyLmhhbmRsZSgpKSB7CisgICAgY2FzZSBTcGVjaWFs
VmFsdWVIYW5kbGVyOjpCb3RoRmluaXRlOgorICAgICAgICBicmVhazsKKworICAgIGNhc2UgU3Bl
Y2lhbFZhbHVlSGFuZGxlcjo6Qm90aGluZmluaXR5OgorICAgICAgICByZXR1cm4gbGhzU2lnbiA9
PSByaHNTaWduID8gbGhzIDogcXVpZXROYU4oMCk7CisKKyAgICBjYXNlIFNwZWNpYWxWYWx1ZUhh
bmRsZXI6OkVpdGhlck5hTjoKKyAgICAgICAgcmV0dXJuIGhhbmRsZXIudmFsdWUoKTsKKworICAg
IGNhc2UgU3BlY2lhbFZhbHVlSGFuZGxlcjo6TGhzSXNpbmZpbml0eToKKyAgICAgICAgcmV0dXJu
IGxoczsKKworICAgIGNhc2UgU3BlY2lhbFZhbHVlSGFuZGxlcjo6UmhzSXNpbmZpbml0eToKKyAg
ICAgICAgcmV0dXJuIHJoczsKKyAgICB9CisKKyAgICBBU1NFUlQobGhzLmlzRmluaXRlKCkpOwor
ICAgIEFTU0VSVChyaHMuaXNGaW5pdGUoKSk7CisKKyAgICBjb25zdCBpbnQgbGhzRXhwb25lbnQg
PSBsaHMuZXhwb25lbnQoKTsKKyAgICBjb25zdCBpbnQgcmhzRXhwb25lbnQgPSByaHMuZXhwb25l
bnQoKTsKKyAgICBpbnQgcmVzdWx0RXhwb25lbnQgPSBtaW4obGhzRXhwb25lbnQsIHJoc0V4cG9u
ZW50KTsKKyAgICB1aW50NjRfdCBsaHNDb2VmZmljaWVudCA9IGxocy5tX2RhdGEuY29lZmZpY2ll
bnQoKTsKKyAgICB1aW50NjRfdCByaHNDb2VmZmljaWVudCA9IHJocy5tX2RhdGEuY29lZmZpY2ll
bnQoKTsKKworICAgIC8vIE1ha2UgY29lZmZpY2llbnQgYWxpZ25lZC4KKyAgICBpZiAobGhzRXhw
b25lbnQgPiByaHNFeHBvbmVudCkgeworICAgICAgICBjb25zdCBpbnQgbnVtYmVyT2ZMSFNEaWdp
dHMgPSBjb3VudERpZ2l0cyhsaHNDb2VmZmljaWVudCk7CisgICAgICAgIGlmIChudW1iZXJPZkxI
U0RpZ2l0cykgeworICAgICAgICAgICAgY29uc3QgaW50IGxoc1NoaWZ0QW1vdW50ID0gbGhzRXhw
b25lbnQgLSByaHNFeHBvbmVudDsKKyAgICAgICAgICAgIGNvbnN0IGludCBvdmVyZmxvdyA9IG51
bWJlck9mTEhTRGlnaXRzICsgbGhzU2hpZnRBbW91bnQgLSBQcmVjaXNpb247CisgICAgICAgICAg
ICBpZiAob3ZlcmZsb3cgPD0gMCkKKyAgICAgICAgICAgICAgICBsaHNDb2VmZmljaWVudCA9IHNj
YWxlVXAobGhzQ29lZmZpY2llbnQsIGxoc1NoaWZ0QW1vdW50KTsKKyAgICAgICAgICAgIGVsc2Ug
eworICAgICAgICAgICAgICAgIGxoc0NvZWZmaWNpZW50ID0gc2NhbGVVcChsaHNDb2VmZmljaWVu
dCwgbGhzU2hpZnRBbW91bnQgLSBvdmVyZmxvdyk7CisgICAgICAgICAgICAgICAgcmhzQ29lZmZp
Y2llbnQgPSBzY2FsZURvd24ocmhzQ29lZmZpY2llbnQsIG92ZXJmbG93KTsKKyAgICAgICAgICAg
ICAgICByZXN1bHRFeHBvbmVudCArPSBvdmVyZmxvdzsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorCisgICAgfSBpZiAobGhzRXhwb25lbnQgPCByaHNFeHBvbmVudCkgeworICAgICAgICBjb25z
dCBpbnQgbnVtYmVyT2ZSSFNEaWdpdHMgPSBjb3VudERpZ2l0cyhyaHNDb2VmZmljaWVudCk7Cisg
ICAgICAgIGlmIChudW1iZXJPZlJIU0RpZ2l0cykgeworICAgICAgICAgICAgY29uc3QgaW50IHJo
c1NoaWZ0QW1vdW50ID0gcmhzRXhwb25lbnQgLSBsaHNFeHBvbmVudDsKKyAgICAgICAgICAgIGNv
bnN0IGludCBvdmVyZmxvdyA9IG51bWJlck9mUkhTRGlnaXRzICsgcmhzU2hpZnRBbW91bnQgLSBQ
cmVjaXNpb247CisgICAgICAgICAgICBpZiAob3ZlcmZsb3cgPD0gMCkKKyAgICAgICAgICAgICAg
ICByaHNDb2VmZmljaWVudCA9IHNjYWxlVXAocmhzQ29lZmZpY2llbnQsIHJoc1NoaWZ0QW1vdW50
KTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHJoc0NvZWZmaWNpZW50ID0g
c2NhbGVVcChyaHNDb2VmZmljaWVudCwgcmhzU2hpZnRBbW91bnQgLSBvdmVyZmxvdyk7CisgICAg
ICAgICAgICAgICAgbGhzQ29lZmZpY2llbnQgPSBzY2FsZURvd24obGhzQ29lZmZpY2llbnQsIG92
ZXJmbG93KTsKKyAgICAgICAgICAgICAgICByZXN1bHRFeHBvbmVudCArPSBvdmVyZmxvdzsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHVpbnQ2NF90IGNvbnN0IHJlc3Vs
dCA9IGxoc1NpZ24gPT0gcmhzU2lnbiA/IGxoc0NvZWZmaWNpZW50ICsgcmhzQ29lZmZpY2llbnQg
OiBsaHNDb2VmZmljaWVudCAtIHJoc0NvZWZmaWNpZW50OworICAgIHJldHVybiBsaHNTaWduICYm
ICFyaHNTaWduICYmICFyZXN1bHQKKyAgICAgICAgICAgID8gRGVjaW1hbCgwLCByZXN1bHRFeHBv
bmVudCwgMCkKKyAgICAgICAgICAgIDogaW50NjRfdChyZXN1bHQpID49IDAKKyAgICAgICAgICAg
ICAgICA/IERlY2ltYWwocmVzdWx0LCByZXN1bHRFeHBvbmVudCwgbGhzU2lnbikKKyAgICAgICAg
ICAgICAgICA6IERlY2ltYWwoLWludDY0X3QocmVzdWx0KSwgcmVzdWx0RXhwb25lbnQsIGxoc1Np
Z24gXiAxKTsKK30KKworRGVjaW1hbCBEZWNpbWFsOjpvcGVyYXRvciAtKGNvbnN0IERlY2ltYWwm
IHJocykgY29uc3QKK3sKKyAgICBjb25zdCBEZWNpbWFsJiBsaHMgPSAqdGhpczsKKyAgICBjb25z
dCBpbnQgbGhzU2lnbiA9IGxocy5zaWduKCk7CisgICAgY29uc3QgaW50IHJoc1NpZ24gPSByaHMu
c2lnbigpOworCisgICAgU3BlY2lhbFZhbHVlSGFuZGxlciBoYW5kbGVyKGxocywgcmhzKTsKKyAg
ICBzd2l0Y2ggKGhhbmRsZXIuaGFuZGxlKCkpIHsKKyAgICBjYXNlIFNwZWNpYWxWYWx1ZUhhbmRs
ZXI6OkJvdGhGaW5pdGU6CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBTcGVjaWFsVmFsdWVI
YW5kbGVyOjpCb3RoaW5maW5pdHk6CisgICAgICAgIHJldHVybiBsaHNTaWduID09IHJoc1NpZ24g
PyBxdWlldE5hTigwKSA6IGxoczsKKworICAgIGNhc2UgU3BlY2lhbFZhbHVlSGFuZGxlcjo6RWl0
aGVyTmFOOgorICAgICAgICByZXR1cm4gaGFuZGxlci52YWx1ZSgpOworCisgICAgY2FzZSBTcGVj
aWFsVmFsdWVIYW5kbGVyOjpMaHNJc2luZmluaXR5OgorICAgICAgICByZXR1cm4gbGhzOworCisg
ICAgY2FzZSBTcGVjaWFsVmFsdWVIYW5kbGVyOjpSaHNJc2luZmluaXR5OgorICAgICAgICByZXR1
cm4gaW5maW5pdHkocmhzU2lnbiBeIDEpOworICAgIH0KKworICAgIEFTU0VSVChsaHMuaXNGaW5p
dGUoKSk7CisgICAgQVNTRVJUKHJocy5pc0Zpbml0ZSgpKTsKKworICAgIHVpbnQ2NF90IGxoc0Nv
ZWZmaWNpZW50ID0gbGhzLm1fZGF0YS5jb2VmZmljaWVudCgpOworICAgIHVpbnQ2NF90IHJoc0Nv
ZWZmaWNpZW50ID0gcmhzLm1fZGF0YS5jb2VmZmljaWVudCgpOworCisgICAgY29uc3QgaW50IGxo
c0V4cG9uZW50ID0gbGhzLmV4cG9uZW50KCk7CisgICAgY29uc3QgaW50IHJoc0V4cG9uZW50ID0g
cmhzLmV4cG9uZW50KCk7CisgICAgaW50IHJlc3VsdEV4cG9uZW50ID0gbWluKGxoc0V4cG9uZW50
LCByaHNFeHBvbmVudCk7CisKKyAgICBpZiAobGhzRXhwb25lbnQgPiByaHNFeHBvbmVudCkgewor
ICAgICAgICBjb25zdCBpbnQgbnVtYmVyT2ZMSFNEaWdpdHMgPSBjb3VudERpZ2l0cyhsaHNDb2Vm
ZmljaWVudCk7CisgICAgICAgIGlmIChudW1iZXJPZkxIU0RpZ2l0cykgeworICAgICAgICAgICAg
Y29uc3QgaW50IGxoc1NoaWZ0QW1vdW50ID0gbGhzRXhwb25lbnQgLSByaHNFeHBvbmVudDsKKyAg
ICAgICAgICAgIGNvbnN0IGludCBvdmVyZmxvdyA9IG51bWJlck9mTEhTRGlnaXRzICsgbGhzU2hp
ZnRBbW91bnQgLSBQcmVjaXNpb247CisgICAgICAgICAgICBpZiAob3ZlcmZsb3cgPD0gMCkKKyAg
ICAgICAgICAgICAgICBsaHNDb2VmZmljaWVudCA9IHNjYWxlVXAobGhzQ29lZmZpY2llbnQsIGxo
c1NoaWZ0QW1vdW50KTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGxoc0Nv
ZWZmaWNpZW50ID0gc2NhbGVVcChsaHNDb2VmZmljaWVudCwgbGhzU2hpZnRBbW91bnQgLSBvdmVy
Zmxvdyk7CisgICAgICAgICAgICAgICAgcmhzQ29lZmZpY2llbnQgPSBzY2FsZURvd24ocmhzQ29l
ZmZpY2llbnQsIG92ZXJmbG93KTsKKyAgICAgICAgICAgICAgICByZXN1bHRFeHBvbmVudCArPSBv
dmVyZmxvdzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgfSBpZiAobGhzRXhwb25l
bnQgPCByaHNFeHBvbmVudCkgeworICAgICAgICBjb25zdCBpbnQgbnVtYmVyT2ZSSFNEaWdpdHMg
PSBjb3VudERpZ2l0cyhyaHNDb2VmZmljaWVudCk7CisgICAgICAgIGlmIChudW1iZXJPZlJIU0Rp
Z2l0cykgeworICAgICAgICAgICAgY29uc3QgaW50IHJoc1NoaWZ0QW1vdW50ID0gcmhzRXhwb25l
bnQgLSBsaHNFeHBvbmVudDsKKyAgICAgICAgICAgIGNvbnN0IGludCBvdmVyZmxvdyA9IG51bWJl
ck9mUkhTRGlnaXRzICsgcmhzU2hpZnRBbW91bnQgLSBQcmVjaXNpb247CisgICAgICAgICAgICBp
ZiAob3ZlcmZsb3cgPD0gMCkKKyAgICAgICAgICAgICAgICByaHNDb2VmZmljaWVudCA9IHNjYWxl
VXAocmhzQ29lZmZpY2llbnQsIHJoc1NoaWZ0QW1vdW50KTsKKyAgICAgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgICAgIHJoc0NvZWZmaWNpZW50ID0gc2NhbGVVcChyaHNDb2VmZmljaWVudCwg
cmhzU2hpZnRBbW91bnQgLSBvdmVyZmxvdyk7CisgICAgICAgICAgICAgICAgbGhzQ29lZmZpY2ll
bnQgPSBzY2FsZURvd24obGhzQ29lZmZpY2llbnQsIG92ZXJmbG93KTsKKyAgICAgICAgICAgICAg
ICByZXN1bHRFeHBvbmVudCArPSBvdmVyZmxvdzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgIH0KKworICAgIHVpbnQ2NF90IHJlc3VsdCA9IGxoc1NpZ24gPT0gcmhzU2lnbiA/IGxoc0Nv
ZWZmaWNpZW50IC0gcmhzQ29lZmZpY2llbnQgOiBsaHNDb2VmZmljaWVudCArIHJoc0NvZWZmaWNp
ZW50OworICAgIHJldHVybiBsaHNTaWduICYmIHJoc1NpZ24gJiYgIXJlc3VsdAorICAgICAgICAg
ICAgPyBEZWNpbWFsKDAsIHJlc3VsdEV4cG9uZW50LCAwKQorICAgICAgICAgICAgOiBpbnQ2NF90
KHJlc3VsdCkgPj0gMAorICAgICAgICAgICAgICAgID8gRGVjaW1hbChyZXN1bHQsIHJlc3VsdEV4
cG9uZW50LCBsaHNTaWduKQorICAgICAgICAgICAgICAgIDogRGVjaW1hbCgtaW50NjRfdChyZXN1
bHQpLCByZXN1bHRFeHBvbmVudCwgbGhzU2lnbiBeIDEpOworfQorCitEZWNpbWFsIERlY2ltYWw6
Om9wZXJhdG9yICooY29uc3QgRGVjaW1hbCYgcmhzKSBjb25zdAoreworICAgIGNvbnN0IERlY2lt
YWwmIGxocyA9ICp0aGlzOworICAgIGNvbnN0IGludCBsaHNTaWduID0gbGhzLnNpZ24oKTsKKyAg
ICBjb25zdCBpbnQgcmhzU2lnbiA9IHJocy5zaWduKCk7CisgICAgaW50IHJlc3VsdFNpZ24gPSBs
aHNTaWduIF4gcmhzU2lnbjsKKworICAgIFNwZWNpYWxWYWx1ZUhhbmRsZXIgaGFuZGxlcihsaHMs
IHJocyk7CisgICAgc3dpdGNoIChoYW5kbGVyLmhhbmRsZSgpKSB7CisgICAgY2FzZSBTcGVjaWFs
VmFsdWVIYW5kbGVyOjpCb3RoRmluaXRlOiB7CisgICAgICAgIGNvbnN0IHVpbnQ2NF90IGxoc0Nv
ZWZmaWNpZW50ID0gbGhzLm1fZGF0YS5jb2VmZmljaWVudCgpOworICAgICAgICBjb25zdCB1aW50
NjRfdCByaHNDb2VmZmljaWVudCA9IHJocy5tX2RhdGEuY29lZmZpY2llbnQoKTsKKyAgICAgICAg
aW50IHJlc3VsdEV4cG9uZW50ID0gbGhzLmV4cG9uZW50KCkgKyByaHMuZXhwb25lbnQoKTsKKyAg
ICAgICAgVUludDEyOCB3b3JrKFVJbnQxMjg6Om11bHRpcGx5KGxoc0NvZWZmaWNpZW50LCByaHND
b2VmZmljaWVudCkpOworICAgICAgICB3aGlsZSAod29yay5oaWdoKCkpIHsKKyAgICAgICAgICB3
b3JrIC89IDEwOworICAgICAgICAgICsrcmVzdWx0RXhwb25lbnQ7CisgICAgICAgIH0KKyAgICAg
ICAgcmV0dXJuIERlY2ltYWwod29yay5sb3coKSwgcmVzdWx0RXhwb25lbnQsIHJlc3VsdFNpZ24p
OworICAgIH0KKworICAgIGNhc2UgU3BlY2lhbFZhbHVlSGFuZGxlcjo6Qm90aGluZmluaXR5Ogor
ICAgICAgICByZXR1cm4gaW5maW5pdHkocmVzdWx0U2lnbik7CisKKyAgICBjYXNlIFNwZWNpYWxW
YWx1ZUhhbmRsZXI6OkVpdGhlck5hTjoKKyAgICAgICAgcmV0dXJuIGhhbmRsZXIudmFsdWUoKTsK
KworICAgIGNhc2UgU3BlY2lhbFZhbHVlSGFuZGxlcjo6TGhzSXNpbmZpbml0eToKKyAgICAgICAg
cmV0dXJuIHJocy5pc1plcm8oKSA/IHF1aWV0TmFOKDApIDogaW5maW5pdHkocmVzdWx0U2lnbik7
CisKKyAgICBjYXNlIFNwZWNpYWxWYWx1ZUhhbmRsZXI6OlJoc0lzaW5maW5pdHk6CisgICAgICAg
IHJldHVybiBsaHMuaXNaZXJvKCkgPyBxdWlldE5hTigwKSA6IGluZmluaXR5KHJlc3VsdFNpZ24p
OworICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBxdWlldE5h
TigwKTsKK30KKworRGVjaW1hbCBEZWNpbWFsOjpvcGVyYXRvciAvKGNvbnN0IERlY2ltYWwmIHJo
cykgY29uc3QKK3sKKyAgICBjb25zdCBEZWNpbWFsJiBsaHMgPSAqdGhpczsKKyAgICBjb25zdCBp
bnQgbGhzU2lnbiA9IGxocy5zaWduKCk7CisgICAgY29uc3QgaW50IHJoc1NpZ24gPSByaHMuc2ln
bigpOworICAgIGludCByZXN1bHRTaWduID0gbGhzU2lnbiBeIHJoc1NpZ247CisKKyAgICBTcGVj
aWFsVmFsdWVIYW5kbGVyIGhhbmRsZXIobGhzLCByaHMpOworICAgIHN3aXRjaCAoaGFuZGxlci5o
YW5kbGUoKSkgeworICAgIGNhc2UgU3BlY2lhbFZhbHVlSGFuZGxlcjo6Qm90aEZpbml0ZToKKyAg
ICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFNwZWNpYWxWYWx1ZUhhbmRsZXI6OkJvdGhpbmZpbml0
eToKKyAgICAgICAgcmV0dXJuIHF1aWV0TmFOKDApOworCisgICAgY2FzZSBTcGVjaWFsVmFsdWVI
YW5kbGVyOjpFaXRoZXJOYU46CisgICAgICAgIHJldHVybiBoYW5kbGVyLnZhbHVlKCk7CisKKyAg
ICBjYXNlIFNwZWNpYWxWYWx1ZUhhbmRsZXI6Okxoc0lzaW5maW5pdHk6CisgICAgICAgIHJldHVy
biBpbmZpbml0eShyZXN1bHRTaWduKTsKKworICAgIGNhc2UgU3BlY2lhbFZhbHVlSGFuZGxlcjo6
UmhzSXNpbmZpbml0eToKKyAgICAgICAgcmV0dXJuIHplcm8ocmVzdWx0U2lnbik7CisgICAgfQor
CisgICAgQVNTRVJUKGxocy5pc0Zpbml0ZSgpKTsKKyAgICBBU1NFUlQocmhzLmlzRmluaXRlKCkp
OworCisgICAgaWYgKHJocy5pc1plcm8oKSkKKyAgICAgICAgcmV0dXJuIGxocy5pc1plcm8oKSA/
IHF1aWV0TmFOKDApIDogaW5maW5pdHkocmVzdWx0U2lnbik7CisKKyAgICBpbnQgcmVzdWx0RXhw
b25lbnQgPSBsaHMuZXhwb25lbnQoKSAtIHJocy5leHBvbmVudCgpOworCisgICAgaWYgKGxocy5p
c1plcm8oKSkgeworICAgICAgICAvLyAwL25vbi16ZXJvID0+IDAKKyAgICAgICAgcmV0dXJuIERl
Y2ltYWwoMCwgcmVzdWx0RXhwb25lbnQsIHJlc3VsdFNpZ24pOworICAgIH0KKworICAgIHVpbnQ2
NF90IHJlbWFpbmRlciA9IGxocy5tX2RhdGEuY29lZmZpY2llbnQoKTsKKyAgICBjb25zdCB1aW50
NjRfdCBkaXZpc29yID0gcmhzLm1fZGF0YS5jb2VmZmljaWVudCgpOworICAgIHVpbnQ2NF90IHJl
c3VsdCA9IDA7CisgICAgd2hpbGUgKHJlc3VsdCA8IE1heENvZWZmaWNpZW50IC8gMTAwKSB7Cisg
ICAgICAgIHdoaWxlIChyZW1haW5kZXIgPCBkaXZpc29yKSB7CisgICAgICAgICAgICByZW1haW5k
ZXIgKj0gMTA7CisgICAgICAgICAgICByZXN1bHQgKj0gMTA7CisgICAgICAgICAgICAtLXJlc3Vs
dEV4cG9uZW50OworICAgICAgICB9CisgICAgICAgIHJlc3VsdCArPSByZW1haW5kZXIgLyBkaXZp
c29yOworICAgICAgICByZW1haW5kZXIgJT0gZGl2aXNvcjsKKyAgICAgICAgaWYgKCFyZW1haW5k
ZXIpCisgICAgICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBpZiAocmVtYWluZGVyID4gZGl2
aXNvciAvIDIpCisgICAgICAgICsrcmVzdWx0OworCisgICAgcmV0dXJuIERlY2ltYWwocmVzdWx0
LCByZXN1bHRFeHBvbmVudCwgcmVzdWx0U2lnbik7Cit9CisKK2Jvb2wgRGVjaW1hbDo6b3BlcmF0
b3I9PShjb25zdCBEZWNpbWFsJiByaHMpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhc3RFcXVhbHMo
cmhzKSB8fCBjb21wYXJlVG8ocmhzKS5pc1plcm8oKTsKK30KKworYm9vbCBEZWNpbWFsOjpvcGVy
YXRvciE9KGNvbnN0IERlY2ltYWwmIHJocykgY29uc3QKK3sKKyAgICByZXR1cm4gIW9wZXJhdG9y
ID09KHJocyk7Cit9CisKK2Jvb2wgRGVjaW1hbDo6b3BlcmF0b3IgPChjb25zdCBEZWNpbWFsJiBy
aHMpIGNvbnN0Cit7CisgICAgcmV0dXJuICFvcGVyYXRvciA+PShyaHMpOworfQorCitib29sIERl
Y2ltYWw6Om9wZXJhdG9yIDw9KGNvbnN0IERlY2ltYWwmIHJocykgY29uc3QKK3sKKyAgICBpZiAo
ZmFzdEVxdWFscyhyaHMpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBjb25zdCBEZWNpbWFs
IHJlc3VsdCA9IGNvbXBhcmVUbyhyaHMpOworICAgIHJldHVybiByZXN1bHQuaXNaZXJvKCkgfHwg
cmVzdWx0LnNpZ24oKTsKK30KKworYm9vbCBEZWNpbWFsOjpvcGVyYXRvciA+KGNvbnN0IERlY2lt
YWwmIHJocykgY29uc3QKK3sKKyAgICByZXR1cm4gIW9wZXJhdG9yIDw9KHJocyk7Cit9CisKK2Jv
b2wgRGVjaW1hbDo6b3BlcmF0b3IgPj0oY29uc3QgRGVjaW1hbCYgcmhzKSBjb25zdAoreworICAg
IGlmIChmYXN0RXF1YWxzKHJocykpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGNvbnN0IERl
Y2ltYWwgcmVzdWx0ID0gY29tcGFyZVRvKHJocyk7CisgICAgcmV0dXJuIHJlc3VsdC5pc1plcm8o
KSB8fCAhcmVzdWx0LnNpZ24oKTsKK30KKworaW50IERlY2ltYWw6OmV4cG9uZW50KCkgY29uc3QK
K3sKKyAgICByZXR1cm4gaXNGaW5pdGUoKSA/IG1fZGF0YS5leHBvbmVudCgpIDogMDsKK30KKwor
RGVjaW1hbDo6SWVlZUNsYXNzIERlY2ltYWw6OmllZWVDbGFzcygpIGNvbnN0Cit7CisgICAgc3dp
dGNoIChtX2RhdGEubV9wYWNrZWRGaWVsZCkgeworICAgIGNhc2UgUG9zaXRpdmVJbmZpbml0eVBh
dHRlcm46CisgICAgY2FzZSBOZWdhdGl2ZUluZmluaXR5UGF0dGVybjoKKyAgICAgICAgcmV0dXJu
IENsYXNzSW5maW5pdHk7CisgICAgY2FzZSBQb3NpdGl2ZVF1aWV0TmFOUGF0dGVybjoKKyAgICBj
YXNlIE5lZ2F0aXZlUXVpZXROYU5QYXR0ZXJuOgorICAgICAgICByZXR1cm4gQ2xhc3NRdWlldE5h
TjsKKyAgICB9CisKKyAgICByZXR1cm4gbV9kYXRhLmlzWmVybygpID8gQ2xhc3NaZXJvIDogQ2xh
c3NOb3JtYWw7Cit9CisKK2ludCBEZWNpbWFsOjpzaWduKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9kYXRhLnNpZ24oKTsKK30KKworRGVjaW1hbCBEZWNpbWFsOjpjb21wYXJlVG8oY29uc3QgRGVj
aW1hbCYgcmhzKSBjb25zdAoreworICAgIGNvbnN0IERlY2ltYWwgcmVzdWx0KCp0aGlzIC0gcmhz
KTsKKyAgICByZXR1cm4gcmVzdWx0LmlzWmVybygpCisgICAgICAgICAgICA/IHplcm8oMCkKKyAg
ICAgICAgICAgIDogcmVzdWx0LmlzRmluaXRlKCkKKyAgICAgICAgICAgICAgICAgICAgPyByZXN1
bHQKKyAgICAgICAgICAgICAgICAgICAgOiByZXN1bHQuc2lnbigpID8gRGVjaW1hbCgtMSkgOiBE
ZWNpbWFsKDEpOworfQorCisvLyBDb21wYXJlcyB0d28gRGVjaW1hbCBudW1iZXIgYXMgYmluYXJ5
IGRhdGEuIFRoaXMgbWV0aG9kIGlzCisvLyB1c2VkIGZvciBlcXVhbGl0eSBvZiBpbmZpbml0eSBv
cGVyYW5kcyB3aGljaCBzdWJzdHJhY3Qgb3BlcmF0aW9uCisvLyByZXR1cm5zIG5vbi16ZXJvLgor
Ym9vbCBEZWNpbWFsOjpmYXN0RXF1YWxzKGNvbnN0IERlY2ltYWwmIHJocykgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9kYXRhLm1fcGFja2VkRmllbGQgPT0gcmhzLm1fZGF0YS5tX3BhY2tlZEZpZWxk
CisgICAgICAgICYmIG1fZGF0YS5tX2NvZWZmaWNpZW50ID09IHJocy5tX2RhdGEubV9jb2VmZmlj
aWVudDsKK30KKworRGVjaW1hbCBEZWNpbWFsOjpmcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgc3Ry
KQoreworICAgIGludCBleHBvbmVudCA9IDA7CisgICAgaW50IGV4cG9uZW50U2lnbiA9IDA7Cisg
ICAgYm9vbCBtaW51cyA9IGZhbHNlOworICAgIGludCBudW1iZXJPZkRpZ2l0cyA9IDA7CisgICAg
aW50IG51bWJlck9mRGlnaXRzQWZ0ZXJEb3QgPSAwOworCisgICAgZW51bSB7CisgICAgICAgIFN0
YXRlRGlnaXQsCisgICAgICAgIFN0YXRlRG90LAorICAgICAgICBTdGF0ZURvdERpZ2l0LAorICAg
ICAgICBTdGF0ZUUsCisgICAgICAgIFN0YXRlRURpZ2l0LAorICAgICAgICBTdGF0ZUVTaWduLAor
ICAgICAgICBTdGF0ZVNpZ24sCisgICAgICAgIFN0YXRlU3RhcnQsCisgICAgICAgIFN0YXRlWmVy
bywKKyAgICB9IHN0YXRlID0gU3RhdGVTdGFydDsKKworICAgICNkZWZpbmUgSGFuZGxlQ2hhcihj
aDEsIG5leHQsIC4uLikgXAorICAgICAgICBpZiAoY2ggPT0gY2gxIHx8IGNoID09IGNoMSAtICdB
JyArICdhJykgeyBcCisgICAgICAgICAgICBfX1ZBX0FSR1NfXzsgXAorICAgICAgICAgICAgc3Rh
dGUgPSBuZXh0OyBcCisgICAgICAgICAgICBicmVhazsgXAorICAgICAgICB9CisKKyAgICAjZGVm
aW5lIEV4cGVjdENoYXIoY2gxLCBuZXh0LCAuLi4pIFwKKyAgICAgICAgSGFuZGxlQ2hhcihjaDEs
IG5leHQsIF9fVkFfQVJHU19fKTsgXAorICAgICAgICByZXR1cm4gcXVpZXROYU4oMCk7CisKKyAg
ICB1aW50NjRfdCBhY2N1bXVsYXRvciA9IDA7CisgICAgZm9yICh1aW50IGluZGV4ID0gMDsgaW5k
ZXggPCBzdHIubGVuZ3RoKCk7ICsraW5kZXgpIHsKKyAgICAgICAgY29uc3QgaW50IGNoID0gc3Ry
W2luZGV4XTsKKyAgICAgICAgc3dpdGNoIChzdGF0ZSkgeworICAgICAgICBjYXNlIFN0YXRlRGln
aXQ6CisgICAgICAgICAgICBpZiAoY2ggPj0gJzAnICYmIGNoIDw9ICc5JykgeworICAgICAgICAg
ICAgICAgIGlmIChudW1iZXJPZkRpZ2l0cyA8IERlY2ltYWw6OlByZWNpc2lvbikgeworICAgICAg
ICAgICAgICAgICAgICArK251bWJlck9mRGlnaXRzOworICAgICAgICAgICAgICAgICAgICBhY2N1
bXVsYXRvciAqPSAxMDsKKyAgICAgICAgICAgICAgICAgICAgYWNjdW11bGF0b3IgKz0gY2ggLSAn
MCc7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBpZiAoY2ggPT0gJy4nKSB7CisgICAgICAgICAgICAgICAgc3Rh
dGUgPSBTdGF0ZURvdDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgRXhwZWN0Q2hhcignRScsIFN0YXRlRSk7CisKKyAgICAgICAgY2FzZSBTdGF0
ZURvdDoKKyAgICAgICAgICAgIGlmIChjaCA+PSAnMCcgJiYgY2ggPD0gJzknKSB7CisgICAgICAg
ICAgICAgICAgaWYgKG51bWJlck9mRGlnaXRzIDwgRGVjaW1hbDo6UHJlY2lzaW9uKSB7CisgICAg
ICAgICAgICAgICAgICAgICsrbnVtYmVyT2ZEaWdpdHM7CisgICAgICAgICAgICAgICAgICAgICsr
bnVtYmVyT2ZEaWdpdHNBZnRlckRvdDsKKyAgICAgICAgICAgICAgICAgICAgYWNjdW11bGF0b3Ig
Kj0gMTA7CisgICAgICAgICAgICAgICAgICAgIGFjY3VtdWxhdG9yICs9IGNoIC0gJzAnOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlRG90RGlnaXQ7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgY2FzZSBTdGF0
ZURvdERpZ2l0OgorICAgICAgICAgICAgaWYgKGNoID49ICcwJyAmJiBjaCA8PSAnOScpIHsKKyAg
ICAgICAgICAgICAgICBpZiAobnVtYmVyT2ZEaWdpdHMgPCBEZWNpbWFsOjpQcmVjaXNpb24pIHsK
KyAgICAgICAgICAgICAgICAgICAgKytudW1iZXJPZkRpZ2l0czsKKyAgICAgICAgICAgICAgICAg
ICAgKytudW1iZXJPZkRpZ2l0c0FmdGVyRG90OworICAgICAgICAgICAgICAgICAgICBhY2N1bXVs
YXRvciAqPSAxMDsKKyAgICAgICAgICAgICAgICAgICAgYWNjdW11bGF0b3IgKz0gY2ggLSAnMCc7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBFeHBlY3RDaGFyKCdFJywgU3RhdGVFKTsKKworICAgICAgICBjYXNl
IFN0YXRlRToKKyAgICAgICAgICAgIGlmIChjaCA9PSAnKycpIHsKKyAgICAgICAgICAgICAgICBl
eHBvbmVudFNpZ24gPSAwOworICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGVFU2lnbjsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGNo
ID09ICctJykgeworICAgICAgICAgICAgICAgIGV4cG9uZW50U2lnbiA9IDE7CisgICAgICAgICAg
ICAgICAgc3RhdGUgPSBTdGF0ZUVTaWduOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBpZiAoY2ggPj0gJzAnICYmIGNoIDw9ICc5JykgeworICAg
ICAgICAgICAgICAgIGV4cG9uZW50ID0gY2ggLSAnMCc7CisgICAgICAgICAgICAgICAgc3RhdGUg
PSBTdGF0ZUVEaWdpdDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgcmV0dXJuIHF1aWV0TmFOKDApOworCisgICAgICAgIGNhc2UgU3RhdGVFRGln
aXQ6CisgICAgICAgICAgICBpZiAoY2ggPj0gJzAnICYmIGNoIDw9ICc5JykgeworICAgICAgICAg
ICAgICAgIGV4cG9uZW50ICo9IDEwOworICAgICAgICAgICAgICAgIGV4cG9uZW50ICs9IGNoIC0g
JzAnOworICAgICAgICAgICAgICAgIGlmIChleHBvbmVudCA+IERlY2ltYWw6OkVtYXggKyBQcmVj
aXNpb24pCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBleHBvbmVudFNpZ24gPyB6ZXJvKDAp
IDogaW5maW5pdHkobWludXMpOworICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGVFRGlnaXQ7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJl
dHVybiBxdWlldE5hTigwKTsKKworICAgICAgICBjYXNlIFN0YXRlRVNpZ246CisgICAgICAgICAg
ICBpZiAoY2ggPj0gJzAnICYmIGNoIDw9ICc5JykgeworICAgICAgICAgICAgICAgIGV4cG9uZW50
ID0gY2ggLSAnMCc7CisgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZUVEaWdpdDsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHF1
aWV0TmFOKDApOworCisgICAgICAgIGNhc2UgU3RhdGVTaWduOgorICAgICAgICAgICAgaWYgKGNo
ID09ICcwJykgeworICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGVaZXJvOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoY2ggPj0gJzEn
ICYmIGNoIDw9ICc5JykgeworICAgICAgICAgICAgICAgIGFjY3VtdWxhdG9yID0gY2ggLSAnMCc7
CisgICAgICAgICAgICAgICAgbnVtYmVyT2ZEaWdpdHMgPSAxOworICAgICAgICAgICAgICAgIHN0
YXRlID0gU3RhdGVEaWdpdDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgcmV0dXJuIHF1aWV0TmFOKDApOworCisgICAgICAgIGNhc2UgU3RhdGVT
dGFydDoKKyAgICAgICAgICAgIGlmIChjaCA9PSAnMCcpIHsKKyAgICAgICAgICAgICAgICBzdGF0
ZSA9IFN0YXRlWmVybzsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgaWYgKGNoID49ICcxJyAmJiBjaCA8PSAnOScpIHsKKyAgICAgICAgICAgICAg
ICBhY2N1bXVsYXRvciA9IGNoIC0gJzAnOworICAgICAgICAgICAgICAgIG51bWJlck9mRGlnaXRz
ID0gMTsKKyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlRGlnaXQ7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChjaCA9PSAnLScpIHsK
KyAgICAgICAgICAgICAgICBtaW51cyA9IHRydWU7CisgICAgICAgICAgICAgICAgc3RhdGUgPSBT
dGF0ZVNpZ247CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGlmIChjaCA9PSAnLicpIHsKKyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlRG90
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBy
ZXR1cm4gcXVpZXROYU4oMCk7CisKKyAgICAgICAgY2FzZSBTdGF0ZVplcm86CisgICAgICAgICAg
ICBpZiAoY2ggPT0gJzAnKQorICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBp
ZiAoY2ggPj0gJzEnICYmIGNoIDw9ICc5JykgeworICAgICAgICAgICAgICAgIGFjY3VtdWxhdG9y
ID0gY2ggLSAnMCc7CisgICAgICAgICAgICAgICAgbnVtYmVyT2ZEaWdpdHMgPSAxOworICAgICAg
ICAgICAgICAgIHN0YXRlID0gU3RhdGVEaWdpdDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGNoID09ICcuJykgeworICAgICAgICAgICAg
ICAgIHN0YXRlID0gU3RhdGVEb3Q7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIEV4cGVjdENoYXIoJ0UnLCBTdGF0ZUUpOworCisgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJl
dHVybiBxdWlldE5hTigwKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChzdGF0ZSA9PSBT
dGF0ZVplcm8pCisgICAgICAgIHJldHVybiB6ZXJvKG1pbnVzKTsKKworICAgIGlmIChzdGF0ZSA9
PSBTdGF0ZURpZ2l0IHx8IHN0YXRlID09IFN0YXRlRURpZ2l0IHx8IHN0YXRlID09IFN0YXRlRG90
RGlnaXQpIHsKKyAgICAgICAgaW50IHJlc3VsdEV4cG9uZW50ID0gZXhwb25lbnQgKiAoMSAtIGV4
cG9uZW50U2lnbiAqIDIpIC0gbnVtYmVyT2ZEaWdpdHNBZnRlckRvdDsKKyAgICAgICAgY29uc3Qg
aW50IGJpYXNlZEV4cG9uZW50ID0gcmVzdWx0RXhwb25lbnQgKyBFYmlhczsKKyAgICAgICAgaWYg
KGJpYXNlZEV4cG9uZW50IDwgMCkKKyAgICAgICAgICAgIHJldHVybiB6ZXJvKDApOworCisgICAg
ICAgIGNvbnN0IGludCBvdmVyZmxvdyA9IGJpYXNlZEV4cG9uZW50IC0gRW1heCArIDE7CisgICAg
ICAgIGlmIChvdmVyZmxvdyA+IDApIHsKKyAgICAgICAgICAgIGlmIChvdmVyZmxvdyArIG51bWJl
ck9mRGlnaXRzIC0gbnVtYmVyT2ZEaWdpdHNBZnRlckRvdCA+IFByZWNpc2lvbikKKyAgICAgICAg
ICAgICAgICByZXR1cm4gaW5maW5pdHkobWludXMpOworICAgICAgICAgICAgYWNjdW11bGF0b3Ig
PSBzY2FsZVVwKGFjY3VtdWxhdG9yLCBvdmVyZmxvdyk7CisgICAgICAgICAgICByZXN1bHRFeHBv
bmVudCAtPSBvdmVyZmxvdzsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBEZWNpbWFsKGFj
Y3VtdWxhdG9yLCByZXN1bHRFeHBvbmVudCwgbWludXMpOworICAgIH0KKworICAgIHJldHVybiBx
dWlldE5hTigwKTsKK30KKworRGVjaW1hbCBEZWNpbWFsOjppbmZpbml0eShjb25zdCBpbnQgc2ln
bikKK3sKKyAgICByZXR1cm4gRGVjaW1hbChFbmNvZGVkRGF0YShzaWduID8gTmVnYXRpdmVJbmZp
bml0eVBhdHRlcm4gOiBQb3NpdGl2ZUluZmluaXR5UGF0dGVybikpOworfQorCitEZWNpbWFsIERl
Y2ltYWw6OnF1aWV0TmFOKGNvbnN0IGludCBzaWduKQoreworICAgIHJldHVybiBEZWNpbWFsKEVu
Y29kZWREYXRhKHNpZ24gPyBOZWdhdGl2ZVF1aWV0TmFOUGF0dGVybiA6IFBvc2l0aXZlUXVpZXRO
YU5QYXR0ZXJuKSk7Cit9CisKK0RlY2ltYWwgRGVjaW1hbDo6cmVtYWluZGVyKGNvbnN0IERlY2lt
YWwmIHJocykgY29uc3QKK3sKKyAgICBjb25zdCBEZWNpbWFsIHF1b3RpZW50ID0gKCp0aGlzIC8g
cmhzKS5yb3VuZCgpOworICAgIHJldHVybiBxdW90aWVudC5pc1NwZWNpYWwoKSA/IHF1b3RpZW50
IDogKnRoaXMgLSBxdW90aWVudCAqIHJoczsKK30KKworRGVjaW1hbCBEZWNpbWFsOjpyb3VuZCgp
IGNvbnN0Cit7CisgICAgaWYgKGlzU3BlY2lhbCgpKQorICAgICAgICByZXR1cm4gKnRoaXM7CisK
KyAgICBpZiAoZXhwb25lbnQoKSA+PSAwKQorICAgICAgICByZXR1cm4gKnRoaXM7CisKKyAgICB1
aW50NjRfdCByZXN1bHQgPSBtX2RhdGEuY29lZmZpY2llbnQoKTsKKyAgICBjb25zdCBpbnQgbnVt
YmVyT2ZEaWdpdHMgPSBjb3VudERpZ2l0cyhyZXN1bHQpOworICAgIGNvbnN0IGludCBudW1iZXJP
ZkRyb3BEaWdpdHMgPSAtZXhwb25lbnQoKTsKKyAgICBpZiAobnVtYmVyT2ZEaWdpdHMgPCBudW1i
ZXJPZkRyb3BEaWdpdHMpCisgICAgICAgIHJldHVybiB6ZXJvKDApOworCisgICAgcmVzdWx0ID0g
c2NhbGVEb3duKHJlc3VsdCwgbnVtYmVyT2ZEcm9wRGlnaXRzIC0gMSk7CisgICAgaWYgKHJlc3Vs
dCAlIDEwID49IDUpCisgICAgICAgIHJlc3VsdCArPSAxMDsKKyAgICByZXN1bHQgLz0gMTA7Cisg
ICAgcmV0dXJuIERlY2ltYWwocmVzdWx0LCAwLCBzaWduKCkpOworfQorCitEZWNpbWFsIERlY2lt
YWw6OnJvdW5kQXQoaW50IG51bWJlck9mRGlnaXRzKQoreworICAgIHVpbnQ2NF90IGNvZWZmaWNp
ZW50ID0gbV9kYXRhLmNvZWZmaWNpZW50KCk7CisgICAgaW50IGV4cG9uZW50ID0gbV9kYXRhLmV4
cG9uZW50KCk7CisgICAgY29uc3QgaW50IG51bWJlck9mRHJvcHMgPSBjb3VudERpZ2l0cyhjb2Vm
ZmljaWVudCkgLSBudW1iZXJPZkRpZ2l0czsKKyAgICBpZiAobnVtYmVyT2ZEcm9wcyA+IDApIHsK
KyAgICAgICAgY29lZmZpY2llbnQgLz0gcG93ZXIodWludDY0X3QoMTApLCBudW1iZXJPZkRyb3Bz
IC0gMSk7CisgICAgICAgIGV4cG9uZW50ICs9IG51bWJlck9mRHJvcHM7CisgICAgICAgIGlmIChj
b2VmZmljaWVudCAlIDEwID49IDUpCisgICAgICAgICAgICBjb2VmZmljaWVudCArPSAxMDsKKyAg
ICAgICAgY29lZmZpY2llbnQgLz0gMTA7CisgICAgfQorCisgICAgd2hpbGUgKGNvZWZmaWNpZW50
ICYmICEoY29lZmZpY2llbnQgJSAxMCkpIHsKKyAgICAgICAgY29lZmZpY2llbnQgLz0gMTA7Cisg
ICAgICAgICsrZXhwb25lbnQ7CisgICAgfQorCisgICAgcmV0dXJuIERlY2ltYWwoY29lZmZpY2ll
bnQsIGV4cG9uZW50LCBtX2RhdGEuc2lnbigpKTsKK30KKworU3RyaW5nIERlY2ltYWw6OnRvU3Ry
aW5nKCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKGllZWVDbGFzcygpKSB7CisgICAgY2FzZSBDbGFz
c0luZmluaXR5OgorICAgICAgICByZXR1cm4gc2lnbigpID8gIi1JbmZpbml0eSIgOiAiSW5maW5p
dHkiOworCisgICAgY2FzZSBDbGFzc1F1aWV0TmFOOgorICAgICAgICByZXR1cm4gc2lnbigpID8g
Ii1OYU4iIDogIk5hTiI7CisKKyAgICBjYXNlIENsYXNzTm9ybWFsOgorICAgIGNhc2UgQ2xhc3Na
ZXJvOgorICAgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gIiI7CisgICAgfQorCisgICAgU3RyaW5nQnVpbGRl
ciBidWlsZGVyOworICAgIGlmIChzaWduKCkpCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCctJyk7
CisKKyAgICBpbnQgb3JpZ2luYWxFeHBvbmVudCA9IGV4cG9uZW50KCk7CisKKyAgICBjb25zdCBp
bnQgbWF4RGlnaXRzID0gREJMX0RJRzsKKyAgICB1aW50NjRfdCBjb2VmZmljaWVudCA9IG1fZGF0
YS5jb2VmZmljaWVudCgpOworICAgIGludCBsYXN0RGlnaXQgPSAwOworICAgIHdoaWxlIChjb3Vu
dERpZ2l0cyhjb2VmZmljaWVudCkgPiBtYXhEaWdpdHMpIHsKKyAgICAgICAgbGFzdERpZ2l0ID0g
Y29lZmZpY2llbnQgJSAxMDsKKyAgICAgICAgY29lZmZpY2llbnQgLz0gMTA7CisgICAgICAgICsr
b3JpZ2luYWxFeHBvbmVudDsKKyAgICB9CisKKyAgICBpZiAobGFzdERpZ2l0ID49IDUpCisgICAg
ICAgICsrY29lZmZpY2llbnQ7CisKKyAgICB3aGlsZSAob3JpZ2luYWxFeHBvbmVudCA8IDAgJiYg
Y29lZmZpY2llbnQgJiYgIShjb2VmZmljaWVudCAlIDEwKSkgeworICAgICAgICBjb2VmZmljaWVu
dCAvPSAxMDsKKyAgICAgICAgKytvcmlnaW5hbEV4cG9uZW50OworICAgIH0KKworICAgIGNvbnN0
IFN0cmluZyBkaWdpdHMgPSBTdHJpbmc6Om51bWJlcihjb2VmZmljaWVudCk7CisgICAgaW50IGNv
ZWZmaWNpZW50TGVuZ3RoID0gaW50KGRpZ2l0cy5sZW5ndGgoKSk7CisgICAgY29uc3QgaW50IGFk
anVzdGVkRXhwb25lbnQgPSBvcmlnaW5hbEV4cG9uZW50ICsgY29lZmZpY2llbnRMZW5ndGggLSAx
OworICAgIGlmIChvcmlnaW5hbEV4cG9uZW50IDw9IDAgJiYgYWRqdXN0ZWRFeHBvbmVudCA+PSAt
NikgeworICAgICAgICBpZiAoIW9yaWdpbmFsRXhwb25lbnQpIHsKKyAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKGRpZ2l0cyk7CisgICAgICAgICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygp
OworICAgICAgICB9CisKKyAgICAgICAgaWYgKGFkanVzdGVkRXhwb25lbnQgPj0gMCkgeworICAg
ICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb2VmZmljaWVudExlbmd0aDsgKytpKSB7Cisg
ICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoZGlnaXRzW2ldKTsKKyAgICAgICAgICAgICAg
ICBpZiAoaSA9PSBhZGp1c3RlZEV4cG9uZW50KQorICAgICAgICAgICAgICAgICAgICBidWlsZGVy
LmFwcGVuZCgnLicpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIGJ1aWxkZXIu
dG9TdHJpbmcoKTsKKyAgICAgICAgfQorCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIwLiIpOwor
ICAgICAgICBmb3IgKGludCBpID0gYWRqdXN0ZWRFeHBvbmVudCArIDE7IGkgPCAwOyArK2kpCisg
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnMCcpOworCisgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KGRpZ2l0cyk7CisKKyAgICB9IGVsc2UgeworICAgICAgICBidWlsZGVyLmFwcGVuZChkaWdpdHNb
MF0pOworICAgICAgICB3aGlsZSAoY29lZmZpY2llbnRMZW5ndGggPj0gMiAmJiBkaWdpdHNbY29l
ZmZpY2llbnRMZW5ndGggLSAxXSA9PSAnMCcpCisgICAgICAgICAgICAtLWNvZWZmaWNpZW50TGVu
Z3RoOworICAgICAgICBpZiAoY29lZmZpY2llbnRMZW5ndGggPj0gMikgeworICAgICAgICAgICAg
YnVpbGRlci5hcHBlbmQoJy4nKTsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDwgY29l
ZmZpY2llbnRMZW5ndGg7ICsraSkKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChkaWdp
dHNbaV0pOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGFkanVzdGVkRXhwb25lbnQpIHsKKyAg
ICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGFkanVzdGVkRXhwb25lbnQgPCAwID8gImUiIDogImUr
Iik7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6Om51bWJlcihhZGp1c3RlZEV4
cG9uZW50KSk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmco
KTsKK30KKworRGVjaW1hbCBEZWNpbWFsOjp6ZXJvKGludCBzaWduKQoreworICAgIHJldHVybiBE
ZWNpbWFsKEVuY29kZWREYXRhKHNpZ24gPyBOZWdhdGl2ZVplcm9QYXR0ZXJuIDogUG9zaXRpdmVa
ZXJvUGF0dGVybikpOworfQorCit9IC8vIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0RlY2ltYWwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RlY2ltYWwu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi44OWNlODc3MmI4MjQ5Y2Y3MDcyOGYyZGU2Yzc3NDYzOWJlNzRkMDU1Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGVjaW1hbC5oCkBAIC0w
LDAgKzEsMTMwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBt
ZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKyNpZm5kZWYgRGVjaW1hbF9oCisjZGVmaW5lIERlY2ltYWxfaAorCisjaW5jbHVk
ZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworLy8gVGhpcyBjbGFzcyByZXByZXNlbnRzIGRlY2ltYWwgYmFzZSBmbG9h
dGluZyBwb2ludGVyIG51bWJlci4KKy8vCisvLyBFbmNvZGVkIEZvcm1hdDoKKy8vIDc2NTQzMjEw
IDc2NTQzMjEwIDc2NTQzMjEwIDc2NTQzMjEwIC4uLgorLy8gUzAwMDAwMDAgMDAwME1FRUUgY2Nj
Y2NjY2MgY2NjY2NjY2MgLi4uCisvLyAgUyA9IHNpZ24gKDEgYml0KSwgMCA9IHBsdXMsIDEgPSBt
aW51cworLy8gIEUgPSBleHBvbmVudCAoMTEgYml0KQorLy8gIGMgPSBjb2VmZmljaWVudCAoNjQg
Yml0KQorY2xhc3MgRGVjaW1hbCB7CitwdWJsaWM6CisgICAgc3RhdGljIGludCBjb25zdCBFbWF4
ID0gMjA0NzsgLy8gbGFyZ2VzdCBleHBvbmVudCB2YWx1ZQorICAgIHN0YXRpYyBpbnQgY29uc3Qg
RWJpYXMgPSAxMDIzOyAvLyBzdWJ0cmFjdGVkIGZyb20gZW5jb2RlZCBleHBvbmVudAorICAgIHN0
YXRpYyBpbnQgY29uc3QgUHJlY2lzaW9uID0gMTg7CisKKyAgICBlbnVtIEllZWVDbGFzcyB7Cisg
ICAgICAgIENsYXNzSW5maW5pdHksCisgICAgICAgIENsYXNzTm9ybWFsLAorICAgICAgICBDbGFz
c1F1aWV0TmFOLAorICAgICAgICBDbGFzc1plcm8sCisgICAgfTsKKworICAgIHN0cnVjdCBFbmNv
ZGVkRGF0YSB7CisgICAgICAgIGV4cGxpY2l0IEVuY29kZWREYXRhKHVpbnQzMl90KTsKKyAgICAg
ICAgRW5jb2RlZERhdGEodWludDY0X3QsIGludCwgaW50KTsKKworICAgICAgICB1aW50NjRfdCBj
b2VmZmljaWVudCgpIGNvbnN0OworICAgICAgICBpbnQgZXhwb25lbnQoKSBjb25zdDsKKyAgICAg
ICAgYm9vbCBpc0Zpbml0ZSgpIGNvbnN0OworICAgICAgICBib29sIGlzU3BlY2lhbCgpIGNvbnN0
OworICAgICAgICBib29sIGlzWmVybygpIGNvbnN0OworICAgICAgICBpbnQgcmF3RXhwb25lbnQo
KSBjb25zdDsKKyAgICAgICAgaW50IHNpZ24oKSBjb25zdDsKKworICAgICAgICB2b2lkIHNldFNp
Z24oaW50KTsKKworICAgICAgICBpbnQgY291bnREaWdpdHMoKSBjb25zdDsKKworICAgICAgICB1
aW50NjRfdCBtX2NvZWZmaWNpZW50OworICAgICAgICB1aW50MzJfdCBtX3BhY2tlZEZpZWxkOwor
ICAgIH07CisKKyAgICBEZWNpbWFsKCk7CisgICAgRGVjaW1hbChpbnQzMl90KTsKKyAgICBEZWNp
bWFsKHVpbnQ2NF90LCBpbnQsIGludCk7CisgICAgRGVjaW1hbChjb25zdCBEZWNpbWFsJik7Cisg
ICAgZXhwbGljaXQgRGVjaW1hbChjb25zdCBFbmNvZGVkRGF0YSYpOworCisgICAgRGVjaW1hbCYg
b3BlcmF0b3IgPShjb25zdCBEZWNpbWFsJik7CisgICAgRGVjaW1hbCYgb3BlcmF0b3IgKz0oY29u
c3QgRGVjaW1hbCYpOworICAgIERlY2ltYWwmIG9wZXJhdG9yIC09KGNvbnN0IERlY2ltYWwmKTsK
KyAgICBEZWNpbWFsJiBvcGVyYXRvciAqPShjb25zdCBEZWNpbWFsJik7CisgICAgRGVjaW1hbCYg
b3BlcmF0b3IgLz0oY29uc3QgRGVjaW1hbCYpOworCisgICAgYm9vbCBvcGVyYXRvciA9PShjb25z
dCBEZWNpbWFsJikgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRvciAhPShjb25zdCBEZWNpbWFsJikg
Y29uc3Q7CisgICAgYm9vbCBvcGVyYXRvciA8KGNvbnN0IERlY2ltYWwmKSBjb25zdDsKKyAgICBi
b29sIG9wZXJhdG9yIDw9KGNvbnN0IERlY2ltYWwmKSBjb25zdDsKKyAgICBib29sIG9wZXJhdG9y
ID4oY29uc3QgRGVjaW1hbCYpIGNvbnN0OworICAgIGJvb2wgb3BlcmF0b3IgPj0oY29uc3QgRGVj
aW1hbCYpIGNvbnN0OworCisgICAgRGVjaW1hbCBvcGVyYXRvciArKGNvbnN0IERlY2ltYWwmKSBj
b25zdDsKKyAgICBEZWNpbWFsIG9wZXJhdG9yIC0oY29uc3QgRGVjaW1hbCYpIGNvbnN0OworICAg
IERlY2ltYWwgb3BlcmF0b3IgKihjb25zdCBEZWNpbWFsJikgY29uc3Q7CisgICAgRGVjaW1hbCBv
cGVyYXRvciAvKGNvbnN0IERlY2ltYWwmKSBjb25zdDsKKworICAgIEllZWVDbGFzcyBpZWVlQ2xh
c3MoKSBjb25zdDsKKyAgICBib29sIGlzRmluaXRlKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmlz
RmluaXRlKCk7IH0KKyAgICBib29sIGlzU3BlY2lhbCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5p
c1NwZWNpYWwoKTsgfQorICAgIGJvb2wgaXNaZXJvKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmlz
WmVybygpOyB9CisgICAgY29uc3QgRW5jb2RlZERhdGEmIHZhbHVlKCkgY29uc3QgeyByZXR1cm4g
bV9kYXRhOyB9CisKKyAgICBEZWNpbWFsIHJlbWFpbmRlcihjb25zdCBEZWNpbWFsJikgY29uc3Q7
CisgICAgRGVjaW1hbCByb3VuZCgpIGNvbnN0OworICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0
OworCisgICAgc3RhdGljIERlY2ltYWwgZnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKTsKKyAgICBz
dGF0aWMgRGVjaW1hbCBpbmZpbml0eShpbnQpOworICAgIHN0YXRpYyBEZWNpbWFsIHF1aWV0TmFO
KGludCk7CisgICAgc3RhdGljIERlY2ltYWwgemVybyhpbnQpOworCitwcml2YXRlOgorICAgIERl
Y2ltYWwgY29tcGFyZVRvKGNvbnN0IERlY2ltYWwmKSBjb25zdDsKKyAgICBpbnQgZXhwb25lbnQo
KSBjb25zdDsKKyAgICBib29sIGZhc3RFcXVhbHMoY29uc3QgRGVjaW1hbCYpIGNvbnN0OworICAg
IERlY2ltYWwgcm91bmRBdChpbnQpOworICAgIGludCBzaWduKCkgY29uc3Q7CisKKyAgICBFbmNv
ZGVkRGF0YSBtX2RhdGE7Cit9OworCit9IC8vIFdlYkNvcmUKKworI2VuZGlmIC8vIERlY2ltYWxf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaSBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKaW5kZXggMGU4MjI4YTZlODkwZDVmMzc0MDQ3
ZmMzYTgxNzFiODlkMTM4OWFhOS4uMjUwYjczMzY4NmU1MGZjMWJhMjUxODQ2Y2QwYTY4NmFkOTJh
ZmQ5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCkBAIC05NSw2ICs5NSw3IEBACiAg
ICAgICAgICAgICAndGVzdHMvQ2xpcGJvYXJkQ2hyb21pdW1UZXN0LmNwcCcsCiAgICAgICAgICAg
ICAndGVzdHMvQ29tcG9zaXRvckZha2VHcmFwaGljc0NvbnRleHQzRC5oJywKICAgICAgICAgICAg
ICd0ZXN0cy9Db21wb3NpdG9yRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNELmgnLAorICAgICAgICAg
ICAgJ3Rlc3RzL0RlY2ltYWxUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvRHJhZ0ltYWdl
VGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0RyYXdpbmdCdWZmZXJDaHJvbWl1bVRlc3Qu
Y3BwJywKICAgICAgICAgICAgICd0ZXN0cy9GYWtlQ0NMYXllclRyZWVIb3N0Q2xpZW50LmgnLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9EZWNpbWFsVGVzdC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0RlY2ltYWxUZXN0LmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40NGJiYjYzMzI2MGFjNWNjMjk2NzkwYTgxOTJjMmU1ZjQxYmExNDVmCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9EZWNpbWFsVGVzdC5jcHAKQEAgLTAs
MCArMSw1MDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1l
dDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRGVjaW1hbC5oIgorCisj
aW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworOjpzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoOjpzdGQ6
Om9zdHJlYW0mIG9zLCBjb25zdCBEZWNpbWFsJiBkZWNpbWFsKQoreworICAgIERlY2ltYWw6OkVu
Y29kZWREYXRhIGRhdGEgPSBkZWNpbWFsLnZhbHVlKCk7CisgICAgcmV0dXJuIG9zIAorICAgICAg
ICA8PCAiRGVjaW1hbCgiIDw8IFN0cmluZzo6bnVtYmVyKGRhdGEuY29lZmZpY2llbnQoKSkuYXNj
aWkoKS5kYXRhKCkKKyAgICAgICAgPDwgIiwgIiA8PCBTdHJpbmc6Om51bWJlcihkYXRhLmV4cG9u
ZW50KCkpLmFzY2lpKCkuZGF0YSgpCisgICAgICAgIDw8ICIsICIgPDwgU3RyaW5nOjpudW1iZXIo
ZGF0YS5zaWduKCkpLmFzY2lpKCkuZGF0YSgpCisgICAgICAgIDw8ICIpPSIgPDwgZGVjaW1hbC50
b1N0cmluZygpLmFzY2lpKCkuZGF0YSgpOworfQorCit9IC8vIFdlYkNvcmUKKworbmFtZXNwYWNl
IERlY2ltYWxUZXN0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKKy8vIFNpbXVsYXRl
IFdlYkNvcmUvaHRtbC9TdGVwUmFuZ2UKK2NsYXNzIERlY2ltYWxTdGVwUmFuZ2UgeworcHVibGlj
OgorICAgIERlY2ltYWwgbWF4aW11bTsKKyAgICBEZWNpbWFsIG1pbmltdW07CisgICAgRGVjaW1h
bCBzdGVwOworCisgICAgRGVjaW1hbFN0ZXBSYW5nZShjb25zdCBEZWNpbWFsJiBtaW5pbXVtLCBj
b25zdCBEZWNpbWFsJiBtYXhpbXVtLCBjb25zdCBEZWNpbWFsJiBzdGVwKQorICAgICAgICA6IG1h
eGltdW0obWF4aW11bSkKKyAgICAgICAgLCBtaW5pbXVtKG1pbmltdW0pCisgICAgICAgICwgc3Rl
cChzdGVwKQorICAgIHsKKyAgICB9CisKKyAgICBEZWNpbWFsIGNsYW1wVmFsdWUoRGVjaW1hbCB2
YWx1ZSkgY29uc3QKKyAgICB7CisgICAgICAgIGNvbnN0IERlY2ltYWwgcmVzdWx0ID0gbWluaW11
bSArICgodmFsdWUgLSBtaW5pbXVtKSAvIHN0ZXApLnJvdW5kKCkgKiBzdGVwOworICAgICAgICBB
U1NFUlQocmVzdWx0LmlzRmluaXRlKCkpOworICAgICAgICByZXR1cm4gcmVzdWx0ID4gbWF4aW11
bSA/IHJlc3VsdCAtIHN0ZXAgOiByZXN1bHQ7CisgICAgfQorfTsKKworY2xhc3MgRGVjaW1hbFRl
c3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKK3Byb3RlY3RlZDoKKyAgICBEZWNpbWFsIGVu
Y29kZSh1aW50NjRfdCBjb2VmZmljaWVudCwgaW50IGV4cG9uZW50LCBpbnQgc2lnbikKKyAgICB7
CisgICAgICAgIHJldHVybiBEZWNpbWFsKGNvZWZmaWNpZW50LCBleHBvbmVudCwgc2lnbik7Cisg
ICAgfQorCisgICAgcHJvdGVjdGVkOiBEZWNpbWFsIGZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBz
dHJpbmcpCisgICAgeworICAgICAgICByZXR1cm4gRGVjaW1hbDo6ZnJvbVN0cmluZyhzdHJpbmcp
OworICAgIH0KKworICAgIHByb3RlY3RlZDogU3RyaW5nIHN0ZXBEb3duKGNvbnN0IFN0cmluZyYg
bWluaW11bSwgY29uc3QgU3RyaW5nJiBtYXhpbXVtLCBjb25zdCBTdHJpbmcmIHN0ZXAsIGNvbnN0
IFN0cmluZyYgdmFsdWVTdHJpbmcsIGludCBudW1iZXJPZlN0ZXBUaW1lcykKKyAgICB7CisgICAg
ICAgIERlY2ltYWxTdGVwUmFuZ2Ugc3RlcFJhbmdlKGZyb21TdHJpbmcobWluaW11bSksIGZyb21T
dHJpbmcobWF4aW11bSksIGZyb21TdHJpbmcoc3RlcCkpOworICAgICAgICBEZWNpbWFsIHZhbHVl
ID0gZnJvbVN0cmluZyh2YWx1ZVN0cmluZyk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
bnVtYmVyT2ZTdGVwVGltZXM7ICsraSkgeworICAgICAgICAgIHZhbHVlIC09IHN0ZXBSYW5nZS5z
dGVwOworICAgICAgICAgIHZhbHVlID0gc3RlcFJhbmdlLmNsYW1wVmFsdWUodmFsdWUpOworICAg
ICAgICB9CisgICAgICAgIHJldHVybiB2YWx1ZS50b1N0cmluZygpOworICAgIH0KKworICAgIHBy
b3RlY3RlZDogU3RyaW5nIHN0ZXBVcChjb25zdCBTdHJpbmcmIG1pbmltdW0sIGNvbnN0IFN0cmlu
ZyYgbWF4aW11bSwgY29uc3QgU3RyaW5nJiBzdGVwLCBjb25zdCBTdHJpbmcmIHZhbHVlU3RyaW5n
LCBpbnQgbnVtYmVyT2ZTdGVwVGltZXMpCisgICAgeworICAgICAgICBEZWNpbWFsU3RlcFJhbmdl
IHN0ZXBSYW5nZShmcm9tU3RyaW5nKG1pbmltdW0pLCBmcm9tU3RyaW5nKG1heGltdW0pLCBmcm9t
U3RyaW5nKHN0ZXApKTsKKyAgICAgICAgRGVjaW1hbCB2YWx1ZSA9IGZyb21TdHJpbmcodmFsdWVT
dHJpbmcpOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bWJlck9mU3RlcFRpbWVzOyAr
K2kpIHsKKyAgICAgICAgICB2YWx1ZSArPSBzdGVwUmFuZ2Uuc3RlcDsKKyAgICAgICAgICB2YWx1
ZSA9IHN0ZXBSYW5nZS5jbGFtcFZhbHVlKHZhbHVlKTsKKyAgICAgICAgfQorICAgICAgICByZXR1
cm4gdmFsdWUudG9TdHJpbmcoKTsKKyAgICB9Cit9OworCisvLyBMYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL251bWJlci9udW1iZXItc3RlcHVwLXN0ZXBkb3duLWZyb20tcmVuZGVyZXIKK1RFU1RfRihE
ZWNpbWFsVGVzdCwgQXBwTnVtYmVyU3RlcFVwU3RlcERvd25Gcm9tUmVuZGVyZXIpCit7CisgICAg
RVhQRUNUX0VRKFN0cmluZygiMTAiKSwgc3RlcERvd24oIjAiLCAiMTAwIiwgIjEwIiwgIjE5Iiwg
MSkpOworICAgIEVYUEVDVF9FUShTdHJpbmcoIjkwIiksIHN0ZXBVcCgiMCIsICI5OSIsICIxMCIs
ICI4OSIsIDEpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCIxIiksIHN0ZXBVcCgiMCIsICIxIiwg
IjAuMzMzMzMzMzMzMzMzMzMzMzMiLCAiMCIsIDMpKTsgLy8gc3RlcD0xLzMKKyAgICBFWFBFQ1Rf
RVEoU3RyaW5nKCIxIiksIHN0ZXBVcCgiMCIsICIxIiwgIjAuMDAzOTIxNTY4NjI3NDUwOTgwIiwg
IjAiLCAyNTUpKTsgLy8gc3RlcD0xLzI1NQorICAgIEVYUEVDVF9FUShTdHJpbmcoIjEiKSwgc3Rl
cFVwKCIwIiwgIjEiLCAiMC4xIiwgIjAiLCAxMCkpOworfQorCitURVNUX0YoRGVjaW1hbFRlc3Qs
IEFwcE51bWJlclN0ZXBVcFN0ZXBEb3duRnJvbVJlbmRlcmVyUm91bmRpbmcpCit7CisgICAgRVhQ
RUNUX0VRKFN0cmluZygiNS4wMTUiKSwgc3RlcFVwKCIwIiwgIjEwMCIsICIwLjAwNSIsICI1LjAw
NSIsIDIpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCI1LjA2IiksIHN0ZXBVcCgiMCIsICIxMDAi
LCAiMC4wMDUiLCAiNS4wMDUiLCAxMSkpOworICAgIEVYUEVDVF9FUShTdHJpbmcoIjUuMDY1Iiks
IHN0ZXBVcCgiMCIsICIxMDAiLCAiMC4wMDUiLCAiNS4wMDUiLCAxMikpOworCisgICAgRVhQRUNU
X0VRKFN0cmluZygiNS4wMTUiKSwgc3RlcFVwKCI0IiwgIjkiLCAiMC4wMDUiLCAiNS4wMDUiLCAy
KSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiNS4wNiIpLCBzdGVwVXAoIjQiLCAiOSIsICIwLjAw
NSIsICI1LjAwNSIsIDExKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiNS4wNjUiKSwgc3RlcFVw
KCI0IiwgIjkiLCAiMC4wMDUiLCAiNS4wMDUiLCAxMikpOworfQorCitURVNUX0YoRGVjaW1hbFRl
c3QsIEFwcFJhbmdlU3RlcFVwU3RlcERvd24pCit7CisgICAgRVhQRUNUX0VRKFN0cmluZygiMWUr
MzgiKSwgc3RlcFVwKCIwIiwgIjFFMzgiLCAiMSIsICIxRTM4IiwgOSkpOworICAgIEVYUEVDVF9F
UShTdHJpbmcoIjFlKzM4IiksIHN0ZXBEb3duKCIwIiwgIjFFMzgiLCAiMSIsICIxRTM4IiwgOSkp
OworfQorCitURVNUX0YoRGVjaW1hbFRlc3QsIEVuY29kZWREYXRhKQoreworICAgIEVYUEVDVF9F
UShlbmNvZGUoMCwgMCwgMCksIGVuY29kZSgwLCAwLCAwKSk7CisgICAgRVhQRUNUX0VRKGVuY29k
ZSgwLCAwLCAxKSwgZW5jb2RlKDAsIDAsIDEpKTsKKyAgICBFWFBFQ1RfRVEoRGVjaW1hbCgxKSwg
RGVjaW1hbCgxKSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSgxLCAwLCAxKSwgZW5jb2RlKDEsIDAs
IDEpKTsKKyAgICBFWFBFQ1RfRVEoRGVjaW1hbDo6aW5maW5pdHkoMCksIGVuY29kZSgxLCAyMDAw
LCAwKSk7CisgICAgRVhQRUNUX0VRKERlY2ltYWw6Onplcm8oMCksIGVuY29kZSgxLCAtMjAwMCwg
MCkpOworfQorCitURVNUX0YoRGVjaW1hbFRlc3QsIEZyb21JbnQzMikKK3sKKyAgICBFWFBFQ1Rf
RVEoZW5jb2RlKDAsIDAsIDApLCBEZWNpbWFsKDApKTsKKyAgICBFWFBFQ1RfRVEoRGVjaW1hbCgx
KSwgRGVjaW1hbCgxKSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSgxLCAwLCAxKSwgRGVjaW1hbCgt
MSkpOworICAgIEVYUEVDVF9FUShlbmNvZGUoMTAwLCAwLCAwKSwgRGVjaW1hbCgxMDApKTsKKyAg
ICBFWFBFQ1RfRVEoZW5jb2RlKDEwMCwgMCwgMSksIERlY2ltYWwoLTEwMCkpOworfQorCitURVNU
X0YoRGVjaW1hbFRlc3QsIEZyb21TdHJpbmcpCit7CisgICAgRVhQRUNUX0VRKGVuY29kZSgwLCAw
LCAwKSwgZnJvbVN0cmluZygiMCIpKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDAsIDAsIDEpLCBm
cm9tU3RyaW5nKCItMCIpKTsKKyAgICBFWFBFQ1RfRVEoRGVjaW1hbCgxKSwgZnJvbVN0cmluZygi
MSIpKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDEsIDAsIDEpLCBmcm9tU3RyaW5nKCItMSIpKTsK
KyAgICBFWFBFQ1RfRVEoRGVjaW1hbCgxKSwgZnJvbVN0cmluZygiMDEiKSk7CisgICAgRVhQRUNU
X0VRKGVuY29kZSgwLCAzLCAwKSwgZnJvbVN0cmluZygiMEUzIikpOworICAgIEVYUEVDVF9FUShl
bmNvZGUoMTAwLCAwLCAwKSwgZnJvbVN0cmluZygiMTAwIikpOworICAgIEVYUEVDVF9FUShlbmNv
ZGUoMTAwLCAwLCAxKSwgZnJvbVN0cmluZygiLTEwMCIpKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2Rl
KDEyMywgMCAtIDIsIDApLCBmcm9tU3RyaW5nKCIxLjIzIikpOworICAgIEVYUEVDVF9FUShlbmNv
ZGUoMTIzLCAwIC0gMiwgMSksIGZyb21TdHJpbmcoIi0xLjIzIikpOworICAgIEVYUEVDVF9FUShl
bmNvZGUoMTIzLCA4LCAwKSwgZnJvbVN0cmluZygiMS4yM0UxMCIpKTsKKyAgICBFWFBFQ1RfRVEo
ZW5jb2RlKDEyMywgOCwgMSksIGZyb21TdHJpbmcoIi0xLjIzRTEwIikpOworICAgIEVYUEVDVF9F
UShlbmNvZGUoMTIzLCA4LCAwKSwgZnJvbVN0cmluZygiMS4yM0UrMTAiKSk7CisgICAgRVhQRUNU
X0VRKGVuY29kZSgxMjMsIDgsIDEpLCBmcm9tU3RyaW5nKCItMS4yM0UrMTAiKSk7CisgICAgRVhQ
RUNUX0VRKGVuY29kZSgxMjMsIC0xMiwgMCksIGZyb21TdHJpbmcoIjEuMjNFLTEwIikpOworICAg
IEVYUEVDVF9FUShlbmNvZGUoMTIzLCAtMTIsIDEpLCBmcm9tU3RyaW5nKCItMS4yM0UtMTAiKSk7
CisgICAgRVhQRUNUX0VRKGVuY29kZSgxMjMsIC0zLCAwKSwgZnJvbVN0cmluZygiMC4xMjMiKSk7
CisgICAgRVhQRUNUX0VRKGVuY29kZSgwLCAtMiwgMCksIGZyb21TdHJpbmcoIjAwLjAwIikpOwor
ICAgIEVYUEVDVF9FUShlbmNvZGUoMSwgMiwgMCksIGZyb21TdHJpbmcoIjFFMiIpKTsKKyAgICBF
WFBFQ1RfRVEoRGVjaW1hbDo6aW5maW5pdHkoMCksIGZyb21TdHJpbmcoIjFFMjAwMDAiKSk7Cisg
ICAgRVhQRUNUX0VRKERlY2ltYWw6Onplcm8oMCksIGZyb21TdHJpbmcoIjFFLTIwMDAwIikpOwor
ICAgIEVYUEVDVF9FUShlbmNvZGUoMTAwMCwgMTAyMywgMCksIGZyb21TdHJpbmcoIjFFMTAyNiIp
KTsKKyAgICBFWFBFQ1RfRVEoRGVjaW1hbDo6emVybygwKSwgZnJvbVN0cmluZygiMUUtMTAyNiIp
KTsKKyAgICBFWFBFQ1RfRVEoRGVjaW1hbDo6aW5maW5pdHkoMCksIGZyb21TdHJpbmcoIjEyMzQ1
Njc4OTBFMTAzNiIpKTsKK30KKworVEVTVF9GKERlY2ltYWxUZXN0LCBmcm9tU3RyaW5nVHJ1bmNh
dGVkKQoreworICAgIEVYUEVDVF9FUShEZWNpbWFsOjpxdWlldE5hTigwKSwgZnJvbVN0cmluZygi
eCIpKTsKKyAgICBFWFBFQ1RfRVEoRGVjaW1hbDo6cXVpZXROYU4oMCksIGZyb21TdHJpbmcoIjAu
IikpOworICAgIEVYUEVDVF9FUShEZWNpbWFsOjpxdWlldE5hTigwKSwgZnJvbVN0cmluZygiMXgi
KSk7CisKKyAgICBFWFBFQ1RfRVEoRGVjaW1hbDo6cXVpZXROYU4oMCksIGZyb21TdHJpbmcoIjFF
eCIpKTsKKyAgICBFWFBFQ1RfRVEoRGVjaW1hbDo6cXVpZXROYU4oMCksIGZyb21TdHJpbmcoIjFF
MngiKSk7CisgICAgRVhQRUNUX0VRKERlY2ltYWw6OnF1aWV0TmFOKDApLCBmcm9tU3RyaW5nKCIx
RSt4IikpOworfQorCitURVNUX0YoRGVjaW1hbFRlc3QsIE9wQWRkKQoreworICAgIEVYUEVDVF9F
UShlbmNvZGUoMCwgMCwgMCksIERlY2ltYWwoMCkgKyBEZWNpbWFsKDApKTsKKyAgICBFWFBFQ1Rf
RVEoRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSArIERlY2ltYWwoLTEpKTsKKyAgICBFWFBFQ1RfRVEo
RGVjaW1hbCgxKSwgRGVjaW1hbCgtMSkgKyBEZWNpbWFsKDIpKTsKKyAgICBFWFBFQ1RfRVEoZW5j
b2RlKDEwMCwgMCwgMCksIERlY2ltYWwoOTkpICsgRGVjaW1hbCgxKSk7CisgICAgRVhQRUNUX0VR
KGVuY29kZSgxMDAsIDAsIDEpLCBEZWNpbWFsKC01MCkgKyBEZWNpbWFsKC01MCkpOworICAgIEVY
UEVDVF9FUShlbmNvZGUoMTAwMDAwMDAwMDAwMDAwMCwgMzUsIDApLCBlbmNvZGUoMSwgNTAsIDAp
ICsgRGVjaW1hbCgxKSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSgxMDAwMDAwMDAwMDAwMDAwLCAz
NSwgMCksIERlY2ltYWwoMSkgKyBlbmNvZGUoMSwgNTAsIDApKTsKKyAgICBFWFBFQ1RfRVEoZW5j
b2RlKDEwMDAwMDAwMDAxLCAwLCAwKSwgZW5jb2RlKDEsIDEwLCAwKSArIERlY2ltYWwoMSkpOwor
ICAgIEVYUEVDVF9FUShlbmNvZGUoMTAwMDAwMDAwMDEsIDAsIDApLCBEZWNpbWFsKDEpICsgZW5j
b2RlKDEsIDEwLCAwKSk7Cit9CisKK1RFU1RfRihEZWNpbWFsVGVzdCwgT3BBZGRTcGVjaWFsVmFs
dWVzKQoreworICAgIGNvbnN0IERlY2ltYWwgaW5mKERlY2ltYWw6OmluZmluaXR5KDApKTsKKyAg
ICBjb25zdCBEZWNpbWFsIG1pbmYoRGVjaW1hbDo6aW5maW5pdHkoMSkpOworICAgIGNvbnN0IERl
Y2ltYWwgbmFuKERlY2ltYWw6OnF1aWV0TmFOKDApKTsKKyAgICBjb25zdCBEZWNpbWFsIG1uYW4o
RGVjaW1hbDo6cXVpZXROYU4oMSkpOworICAgIGNvbnN0IERlY2ltYWwgdGVuKDEwKTsKKworICAg
IEVYUEVDVF9FUShpbmYsIGluZiArIGluZik7CisgICAgRVhQRUNUX0VRKG5hbiwgaW5mICsgbWlu
Zik7CisgICAgRVhQRUNUX0VRKG5hbiwgbWluZiArIGluZik7CisgICAgRVhQRUNUX0VRKG1pbmYs
IG1pbmYgKyBtaW5mKTsKKworICAgIEVYUEVDVF9FUShpbmYsIGluZiArIHRlbik7CisgICAgRVhQ
RUNUX0VRKGluZiwgdGVuICsgaW5mKTsKKyAgICBFWFBFQ1RfRVEobWluZiwgbWluZiArIHRlbik7
CisgICAgRVhQRUNUX0VRKG1pbmYsIHRlbiArIG1pbmYpOworCisgICAgRVhQRUNUX0VRKG5hbiwg
bmFuICsgbmFuKTsKKyAgICBFWFBFQ1RfRVEobmFuLCBuYW4gKyBtbmFuKTsKKyAgICBFWFBFQ1Rf
RVEobmFuLCBuYW4gKyB0ZW4pOworCisgICAgRVhQRUNUX0VRKG1uYW4sIG1uYW4gKyBuYW4pOwor
ICAgIEVYUEVDVF9FUShtbmFuLCBtbmFuICsgbW5hbik7CisgICAgRVhQRUNUX0VRKG1uYW4sIG1u
YW4gKyB0ZW4pOworCisgICAgRVhQRUNUX0VRKG5hbiwgdGVuICsgbmFuKTsKKyAgICBFWFBFQ1Rf
RVEobW5hbiwgdGVuICsgbW5hbik7Cit9CisKK1RFU1RfRihEZWNpbWFsVGVzdCwgT3BDb21wYXJl
KQoreworICAgIEVYUEVDVF9UUlVFKERlY2ltYWwoMCkgPT0gRGVjaW1hbCgwKSk7CisgICAgRVhQ
RUNUX1RSVUUoRGVjaW1hbCgwKSAhPSBEZWNpbWFsKDEpKTsKKyAgICBFWFBFQ1RfVFJVRShEZWNp
bWFsKDApIDwgRGVjaW1hbCgxKSk7CisgICAgRVhQRUNUX1RSVUUoRGVjaW1hbCgwKSA8PSBEZWNp
bWFsKDApKTsKKyAgICBFWFBFQ1RfVFJVRShEZWNpbWFsKDApID4gRGVjaW1hbCgtMSkpOworICAg
IEVYUEVDVF9UUlVFKERlY2ltYWwoMCkgPj0gRGVjaW1hbCgwKSk7CisKKyAgICBFWFBFQ1RfRkFM
U0UoRGVjaW1hbCgxKSA9PSBEZWNpbWFsKDIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoRGVjaW1hbCgx
KSAhPSBEZWNpbWFsKDEpKTsKKyAgICBFWFBFQ1RfRkFMU0UoRGVjaW1hbCgxKSA8IERlY2ltYWwo
MCkpOworICAgIEVYUEVDVF9GQUxTRShEZWNpbWFsKDEpIDw9IERlY2ltYWwoMCkpOworICAgIEVY
UEVDVF9GQUxTRShEZWNpbWFsKDEpID4gRGVjaW1hbCgyKSk7CisgICAgRVhQRUNUX0ZBTFNFKERl
Y2ltYWwoMSkgPj0gRGVjaW1hbCgyKSk7Cit9CisKK1RFU1RfRihEZWNpbWFsVGVzdCwgT3BDb21w
YXJlU3BlY2lhbFZhbHVlcykKK3sKKyAgICBFWFBFQ1RfVFJVRShEZWNpbWFsKDEpIDwgRGVjaW1h
bDo6aW5maW5pdHkoMCkpOworICAgIEVYUEVDVF9UUlVFKERlY2ltYWwoMSkgPiBEZWNpbWFsOjpp
bmZpbml0eSgxKSk7Cit9CisKK1RFU1RfRihEZWNpbWFsVGVzdCwgT3BEaXYpCit7CisgICAgRVhQ
RUNUX0VRKGVuY29kZSgwLCAwLCAwKSwgRGVjaW1hbCgwKSAvIERlY2ltYWwoMSkpOworICAgIEVY
UEVDVF9FUShlbmNvZGUoMiwgMCwgMSksIERlY2ltYWwoMikgLyBEZWNpbWFsKC0xKSk7CisgICAg
RVhQRUNUX0VRKGVuY29kZSg1LCAtMSwgMSksIERlY2ltYWwoLTEpIC8gRGVjaW1hbCgyKSk7Cisg
ICAgRVhQRUNUX0VRKGVuY29kZSg5OSwgMCwgMCksIERlY2ltYWwoOTkpIC8gRGVjaW1hbCgxKSk7
CisgICAgRVhQRUNUX0VRKERlY2ltYWwoMSksIERlY2ltYWwoLTUwKSAvIERlY2ltYWwoLTUwKSk7
CisgICAgRVhQRUNUX0VRKGVuY29kZSgzMzMzMzMzMzMzMzMzMzMzLCAtMTYsIDApLCBEZWNpbWFs
KDEpIC8gRGVjaW1hbCgzKSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSgxMjM0NTY3ODkwMTIzNCwg
LTEsIDApLCBlbmNvZGUoMTIzNDU2Nzg5MDEyMzQsIDAsIDApIC8gRGVjaW1hbCgxMCkpOworfQor
CitURVNUX0YoRGVjaW1hbFRlc3QsIE9wRGl2U3BlY2lhbFZhbHVlcykKK3sKKyAgICBjb25zdCBE
ZWNpbWFsIGluZihEZWNpbWFsOjppbmZpbml0eSgwKSk7CisgICAgY29uc3QgRGVjaW1hbCBtaW5m
KERlY2ltYWw6OmluZmluaXR5KDEpKTsKKyAgICBjb25zdCBEZWNpbWFsIG5hbihEZWNpbWFsOjpx
dWlldE5hTigwKSk7CisgICAgY29uc3QgRGVjaW1hbCBtbmFuKERlY2ltYWw6OnF1aWV0TmFOKDEp
KTsKKyAgICBjb25zdCBEZWNpbWFsIHplcm8oRGVjaW1hbDo6emVybygwKSk7CisgICAgY29uc3Qg
RGVjaW1hbCBtemVybyhEZWNpbWFsOjp6ZXJvKDEpKTsKKyAgICBjb25zdCBEZWNpbWFsIHRlbigx
MCk7CisgICAgY29uc3QgRGVjaW1hbCBtdGVuKC0xMCk7CisKKyAgICBFWFBFQ1RfRVEobmFuLCB6
ZXJvIC8gemVybyk7CisgICAgRVhQRUNUX0VRKG5hbiwgemVybyAvIG16ZXJvKTsKKyAgICBFWFBF
Q1RfRVEobmFuLCBtemVybyAvIHplcm8pOworICAgIEVYUEVDVF9FUShuYW4sIG16ZXJvIC8gbXpl
cm8pOworCisgICAgRVhQRUNUX0VRKGluZiwgdGVuIC8gemVybyk7CisgICAgRVhQRUNUX0VRKG1p
bmYsIHRlbiAvIG16ZXJvKTsKKyAgICBFWFBFQ1RfRVEobWluZiwgbXRlbiAvIHplcm8pOworICAg
IEVYUEVDVF9FUShpbmYsIG10ZW4gLyBtemVybyk7CisKKyAgICBFWFBFQ1RfRVEoaW5mLCBpbmYg
LyB6ZXJvKTsKKyAgICBFWFBFQ1RfRVEobWluZiwgaW5mIC8gbXplcm8pOworICAgIEVYUEVDVF9F
UShtaW5mLCBtaW5mIC8gemVybyk7CisgICAgRVhQRUNUX0VRKGluZiwgbWluZiAvIG16ZXJvKTsK
KworICAgIEVYUEVDVF9FUShuYW4sIGluZiAvIGluZik7CisgICAgRVhQRUNUX0VRKG5hbiwgaW5m
IC8gbWluZik7CisgICAgRVhQRUNUX0VRKG5hbiwgbWluZiAvIGluZik7CisgICAgRVhQRUNUX0VR
KG5hbiwgbWluZiAvIG1pbmYpOworCisgICAgRVhQRUNUX0VRKHplcm8sIHRlbiAvIGluZik7Cisg
ICAgRVhQRUNUX0VRKG16ZXJvLCB0ZW4gLyBtaW5mKTsKKyAgICBFWFBFQ1RfRVEobXplcm8sIG10
ZW4gLyBpbmYpOworICAgIEVYUEVDVF9FUSh6ZXJvLCBtdGVuIC8gbWluZik7CisKKyAgICBFWFBF
Q1RfRVEobmFuLCBuYW4gLyBuYW4pOworICAgIEVYUEVDVF9FUShuYW4sIG5hbiAvIG1uYW4pOwor
ICAgIEVYUEVDVF9FUShuYW4sIG5hbiAvIHRlbik7CisKKyAgICBFWFBFQ1RfRVEobW5hbiwgbW5h
biAvIG5hbik7CisgICAgRVhQRUNUX0VRKG1uYW4sIG1uYW4gLyBtbmFuKTsKKyAgICBFWFBFQ1Rf
RVEobW5hbiwgbW5hbiAvIHRlbik7CisKKyAgICBFWFBFQ1RfRVEobmFuLCB0ZW4gLyBuYW4pOwor
ICAgIEVYUEVDVF9FUShtbmFuLCB0ZW4gLyBtbmFuKTsKK30KKworVEVTVF9GKERlY2ltYWxUZXN0
LCBPcE11bCkKK3sKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDAsIDAsIDApLCBEZWNpbWFsKDApICog
RGVjaW1hbCgwKSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSgyLCAwLCAxKSwgRGVjaW1hbCgyKSAq
IERlY2ltYWwoLTEpKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDIsIDAsIDEpLCBEZWNpbWFsKC0x
KSAqIERlY2ltYWwoMikpOworICAgIEVYUEVDVF9FUShlbmNvZGUoOTksIDAsIDApLCBEZWNpbWFs
KDk5KSAqIERlY2ltYWwoMSkpOworICAgIEVYUEVDVF9FUShlbmNvZGUoMjUwMCwgMCwgMCksIERl
Y2ltYWwoLTUwKSAqIERlY2ltYWwoLTUwKSk7Cit9CisKK1RFU1RfRihEZWNpbWFsVGVzdCwgT3BN
dWxTcGVjaWFsVmFsdWVzKQoreworICAgIGNvbnN0IERlY2ltYWwgaW5mKERlY2ltYWw6OmluZmlu
aXR5KDApKTsKKyAgICBjb25zdCBEZWNpbWFsIG1pbmYoRGVjaW1hbDo6aW5maW5pdHkoMSkpOwor
ICAgIGNvbnN0IERlY2ltYWwgbmFuKERlY2ltYWw6OnF1aWV0TmFOKDApKTsKKyAgICBjb25zdCBE
ZWNpbWFsIG1uYW4oRGVjaW1hbDo6cXVpZXROYU4oMSkpOworICAgIGNvbnN0IERlY2ltYWwgdGVu
KDEwKTsKKyAgICBjb25zdCBEZWNpbWFsIG10ZW4oLTEwKTsKKyAgICBjb25zdCBEZWNpbWFsIHpl
cm8oRGVjaW1hbDo6emVybygwKSk7CisgICAgY29uc3QgRGVjaW1hbCBtemVybyhEZWNpbWFsOjp6
ZXJvKDEpKTsKKworICAgIEVYUEVDVF9FUShpbmYsIGluZiAqIGluZik7CisgICAgRVhQRUNUX0VR
KG1pbmYsIGluZiAqIG1pbmYpOworICAgIEVYUEVDVF9FUShtaW5mLCBtaW5mICogaW5mKTsKKyAg
ICBFWFBFQ1RfRVEoaW5mLCBtaW5mICogbWluZik7CisKKyAgICBFWFBFQ1RfRVEobmFuLCBpbmYg
KiB6ZXJvKTsKKyAgICBFWFBFQ1RfRVEobmFuLCB6ZXJvICogbWluZik7CisgICAgRVhQRUNUX0VR
KG5hbiwgbWluZiAqIHplcm8pOworICAgIEVYUEVDVF9FUShuYW4sIG1pbmYgKiB6ZXJvKTsKKwor
ICAgIEVYUEVDVF9FUShuYW4sIGluZiAqIG16ZXJvKTsKKyAgICBFWFBFQ1RfRVEobmFuLCBtemVy
byAqIG1pbmYpOworICAgIEVYUEVDVF9FUShuYW4sIG1pbmYgKiBtemVybyk7CisgICAgRVhQRUNU
X0VRKG5hbiwgbWluZiAqIG16ZXJvKTsKKworICAgIEVYUEVDVF9FUShpbmYsIGluZiAqIHRlbik7
CisgICAgRVhQRUNUX0VRKGluZiwgdGVuICogaW5mKTsKKyAgICBFWFBFQ1RfRVEobWluZiwgbWlu
ZiAqIHRlbik7CisgICAgRVhQRUNUX0VRKG1pbmYsIHRlbiAqIG1pbmYpOworCisgICAgRVhQRUNU
X0VRKG1pbmYsIGluZiAqIG10ZW4pOworICAgIEVYUEVDVF9FUShtaW5mLCBtdGVuICogaW5mKTsK
KyAgICBFWFBFQ1RfRVEoaW5mLCBtaW5mICogbXRlbik7CisgICAgRVhQRUNUX0VRKGluZiwgbXRl
biAqIG1pbmYpOworCisgICAgRVhQRUNUX0VRKG5hbiwgbmFuICogbmFuKTsKKyAgICBFWFBFQ1Rf
RVEobmFuLCBuYW4gKiBtbmFuKTsKKyAgICBFWFBFQ1RfRVEobmFuLCBuYW4gKiB0ZW4pOworCisg
ICAgRVhQRUNUX0VRKG1uYW4sIG1uYW4gKiBuYW4pOworICAgIEVYUEVDVF9FUShtbmFuLCBtbmFu
ICogbW5hbik7CisgICAgRVhQRUNUX0VRKG1uYW4sIG1uYW4gKiB0ZW4pOworCisgICAgRVhQRUNU
X0VRKG5hbiwgdGVuICogbmFuKTsKKyAgICBFWFBFQ1RfRVEobW5hbiwgdGVuICogbW5hbik7Cit9
CisKK1RFU1RfRihEZWNpbWFsVGVzdCwgT3BTdWIpCit7CisgICAgRVhQRUNUX0VRKGVuY29kZSgw
LCAwLCAwKSwgRGVjaW1hbCgwKSAtIERlY2ltYWwoMCkpOworICAgIEVYUEVDVF9FUShlbmNvZGUo
MywgMCwgMCksIERlY2ltYWwoMikgLSBEZWNpbWFsKC0xKSk7CisgICAgRVhQRUNUX0VRKGVuY29k
ZSgzLCAwLCAxKSwgRGVjaW1hbCgtMSkgLSBEZWNpbWFsKDIpKTsKKyAgICBFWFBFQ1RfRVEoZW5j
b2RlKDk4LCAwLCAwKSwgRGVjaW1hbCg5OSkgLSBEZWNpbWFsKDEpKTsKKyAgICBFWFBFQ1RfRVEo
ZW5jb2RlKDAsIDAsIDApLCBEZWNpbWFsKC01MCkgLSBEZWNpbWFsKC01MCkpOworICAgIEVYUEVD
VF9FUShlbmNvZGUoMTAwMDAwMDAwMDAwMDAwMCwgMzUsIDApLCBlbmNvZGUoMSwgNTAsIDApIC0g
RGVjaW1hbCgxKSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSgxMDAwMDAwMDAwMDAwMDAwLCAzNSwg
MSksIERlY2ltYWwoMSkgLSBlbmNvZGUoMSwgNTAsIDApKTsKK30KKworVEVTVF9GKERlY2ltYWxU
ZXN0LCBPcFN1YlNwZWNpYWxWYWx1ZXMpCit7CisgICAgY29uc3QgRGVjaW1hbCBpbmYoRGVjaW1h
bDo6aW5maW5pdHkoMCkpOworICAgIGNvbnN0IERlY2ltYWwgbWluZihEZWNpbWFsOjppbmZpbml0
eSgxKSk7CisgICAgY29uc3QgRGVjaW1hbCBuYW4oRGVjaW1hbDo6cXVpZXROYU4oMCkpOworICAg
IGNvbnN0IERlY2ltYWwgbW5hbihEZWNpbWFsOjpxdWlldE5hTigxKSk7CisgICAgY29uc3QgRGVj
aW1hbCB0ZW4oMTApOworCisgICAgRVhQRUNUX0VRKG5hbiwgaW5mIC0gaW5mKTsKKyAgICBFWFBF
Q1RfRVEoaW5mLCBpbmYgLSBtaW5mKTsKKyAgICBFWFBFQ1RfRVEobWluZiwgbWluZiAtIGluZik7
CisgICAgRVhQRUNUX0VRKG5hbiwgbWluZiAtIG1pbmYpOworCisgICAgRVhQRUNUX0VRKGluZiwg
aW5mIC0gdGVuKTsKKyAgICBFWFBFQ1RfRVEobWluZiwgdGVuIC0gaW5mKTsKKyAgICBFWFBFQ1Rf
RVEobWluZiwgbWluZiAtIHRlbik7CisgICAgRVhQRUNUX0VRKGluZiwgdGVuIC0gbWluZik7CisK
KyAgICBFWFBFQ1RfRVEobmFuLCBuYW4gLSBuYW4pOworICAgIEVYUEVDVF9FUShuYW4sIG5hbiAt
IG1uYW4pOworICAgIEVYUEVDVF9FUShuYW4sIG5hbiAtIHRlbik7CisKKyAgICBFWFBFQ1RfRVEo
bW5hbiwgbW5hbiAtIG5hbik7CisgICAgRVhQRUNUX0VRKG1uYW4sIG1uYW4gLSBtbmFuKTsKKyAg
ICBFWFBFQ1RfRVEobW5hbiwgbW5hbiAtIHRlbik7CisKKyAgICBFWFBFQ1RfRVEobmFuLCB0ZW4g
LSBuYW4pOworICAgIEVYUEVDVF9FUShtbmFuLCB0ZW4gLSBtbmFuKTsKK30KKworVEVTVF9GKERl
Y2ltYWxUZXN0LCBQcm9wZXJ0aWVzKQoreworICAgIEVYUEVDVF9UUlVFKERlY2ltYWwoMCkuaXNG
aW5pdGUoKSk7CisgICAgRVhQRUNUX0ZBTFNFKERlY2ltYWwoMCkuaXNTcGVjaWFsKCkpOworfQor
CitURVNUX0YoRGVjaW1hbFRlc3QsIFByb3BlcnRpZXNTcGVjaWFsKQoreworICAgIEVYUEVDVF9U
UlVFKERlY2ltYWw6OmluZmluaXR5KDApLmlzU3BlY2lhbCgpKTsKKyAgICBFWFBFQ1RfRkFMU0Uo
RGVjaW1hbDo6aW5maW5pdHkoMCkuaXNGaW5pdGUoKSk7CisKKyAgICBFWFBFQ1RfVFJVRShEZWNp
bWFsOjppbmZpbml0eSgxKS5pc1NwZWNpYWwoKSk7CisgICAgRVhQRUNUX0ZBTFNFKERlY2ltYWw6
OmluZmluaXR5KDEpLmlzRmluaXRlKCkpOworCisgICAgRVhQRUNUX1RSVUUoRGVjaW1hbDo6cXVp
ZXROYU4oMCkuaXNTcGVjaWFsKCkpOworICAgIEVYUEVDVF9GQUxTRShEZWNpbWFsOjpxdWlldE5h
TigwKS5pc0Zpbml0ZSgpKTsKKworICAgIEVYUEVDVF9UUlVFKERlY2ltYWw6OnF1aWV0TmFOKDEp
LmlzU3BlY2lhbCgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoRGVjaW1hbDo6cXVpZXROYU4oMSkuaXNG
aW5pdGUoKSk7Cit9CisKK1RFU1RfRihEZWNpbWFsVGVzdCwgUmVtYWluZGVyKQoreworICAgIEVY
UEVDVF9FUShlbmNvZGUoOSwgLTEsIDEpLCBlbmNvZGUoMjEsIC0xLCAwKS5yZW1haW5kZXIoMykp
OworICAgIEVYUEVDVF9FUShEZWNpbWFsKDEpLCBEZWNpbWFsKDEwKS5yZW1haW5kZXIoMykpOwor
ICAgIEVYUEVDVF9FUShlbmNvZGUoMSwgMCwgMSksIERlY2ltYWwoLTEwKS5yZW1haW5kZXIoMykp
OworICAgIEVYUEVDVF9FUShlbmNvZGUoMiwgLTEsIDApLCBlbmNvZGUoMTAyLCAtMSwgMCkucmVt
YWluZGVyKDEpKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDEsIC0xLCAwKSwgRGVjaW1hbCgxMCku
cmVtYWluZGVyKGVuY29kZSgzLCAtMSwgMCkpKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDMsIC0x
LCAtMSksIGVuY29kZSgzNiwgLTEsIDApLnJlbWFpbmRlcihlbmNvZGUoMTMsIC0xLCAwKSkpOwor
fQorCitURVNUX0YoRGVjaW1hbFRlc3QsIFJlbWFpbmRlclNwZWNpYWxWYWx1ZXMpCit7CisgICAg
RVhQRUNUX0VRKERlY2ltYWw6OmluZmluaXR5KDApLCBEZWNpbWFsOjppbmZpbml0eSgwKS5yZW1h
aW5kZXIoMSkpOworICAgIEVYUEVDVF9FUShEZWNpbWFsOjpxdWlldE5hTigwKSwgRGVjaW1hbDo6
cXVpZXROYU4oMCkucmVtYWluZGVyKDEpKTsKK30KKworVEVTVF9GKERlY2ltYWxUZXN0LCBSb3Vu
ZCkKK3sKKyAgICBFWFBFQ1RfRVEoRGVjaW1hbCgxKSwgKERlY2ltYWwoOSkgLyBEZWNpbWFsKDEw
KSkucm91bmQoKSk7CisgICAgRVhQRUNUX0VRKERlY2ltYWwoMjUpLCAoRGVjaW1hbCg1KSAvIGZy
b21TdHJpbmcoIjAuMjAwIikpLnJvdW5kKCkpOworICAgIEVYUEVDVF9FUShEZWNpbWFsKDMpLCAo
RGVjaW1hbCg1KSAvIERlY2ltYWwoMikpLnJvdW5kKCkpOworICAgIEVYUEVDVF9FUShEZWNpbWFs
KDEpLCAoRGVjaW1hbCgyKSAvIERlY2ltYWwoMykpLnJvdW5kKCkpOworICAgIEVYUEVDVF9FUShE
ZWNpbWFsKDMpLCAoRGVjaW1hbCgxMCkgLyBEZWNpbWFsKDMpKS5yb3VuZCgpKTsKKyAgICBFWFBF
Q1RfRVEoRGVjaW1hbCgzKSwgKERlY2ltYWwoMSkgLyBmcm9tU3RyaW5nKCIwLjMiKSkucm91bmQo
KSk7CisgICAgRVhQRUNUX0VRKERlY2ltYWwoMTApLCAoRGVjaW1hbCgxKSAvIGZyb21TdHJpbmco
IjAuMSIpKS5yb3VuZCgpKTsKKyAgICBFWFBFQ1RfRVEoRGVjaW1hbCg1KSwgKERlY2ltYWwoMSkg
LyBmcm9tU3RyaW5nKCIwLjIiKSkucm91bmQoKSk7CisgICAgRVhQRUNUX0VRKERlY2ltYWwoMTAp
LCAoZnJvbVN0cmluZygiMTAuMiIpIC8gMSkucm91bmQoKSk7Cit9CisKK1RFU1RfRihEZWNpbWFs
VGVzdCwgUm91bmRTZXBjaWFsVmFsdWVzKQoreworICAgIEVYUEVDVF9FUShEZWNpbWFsOjppbmZp
bml0eSgwKSwgRGVjaW1hbDo6aW5maW5pdHkoMCkucm91bmQoKSk7CisgICAgRVhQRUNUX0VRKERl
Y2ltYWw6OnF1aWV0TmFOKDApLCBEZWNpbWFsOjpxdWlldE5hTigwKS5yb3VuZCgpKTsKK30KKwor
VEVTVF9GKERlY2ltYWxUZXN0LCBUb1N0cmluZykKK3sKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCIw
IiksIERlY2ltYWwoMCkudG9TdHJpbmcoKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiMSIpLCBE
ZWNpbWFsKDEpLnRvU3RyaW5nKCkpOworICAgIEVYUEVDVF9FUShTdHJpbmcoIjAuMDAxIiksIGVu
Y29kZSgxLCAtMywgMCkudG9TdHJpbmcoKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiLTEiKSwg
RGVjaW1hbCgtMSkudG9TdHJpbmcoKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiMWUrMTAiKSwg
ZW5jb2RlKDEsIDEwLCAwKS50b1N0cmluZygpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCItMWUr
MTAiKSwgZW5jb2RlKDEsIDEwLCAxKS50b1N0cmluZygpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5n
KCIxZS0xMCIpLCBlbmNvZGUoMSwgLTEwLCAwKS50b1N0cmluZygpKTsKKyAgICBFWFBFQ1RfRVEo
U3RyaW5nKCItMWUtMTAiKSwgZW5jb2RlKDEsIC0xMCwgMSkudG9TdHJpbmcoKSk7CisgICAgRVhQ
RUNUX0VRKFN0cmluZygiMTIuMzQiKSwgZW5jb2RlKDEyMzQsIC0yLCAwKS50b1N0cmluZygpKTsK
KyAgICBFWFBFQ1RfRVEoU3RyaW5nKCItMTIuMzQiKSwgZW5jb2RlKDEyMzQsIC0yLCAxKS50b1N0
cmluZygpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCIzLjQ1NmUrNyIpLCBlbmNvZGUoMzQ1Niwg
NCwgMCkudG9TdHJpbmcoKSk7Cit9CisKK1RFU1RfRihEZWNpbWFsVGVzdCwgVG9TdHJpbmdTcGVj
aWFsKQoreworICAgIEVYUEVDVF9FUShTdHJpbmcoIkluZmluaXR5IiksIERlY2ltYWw6OmluZmlu
aXR5KDApLnRvU3RyaW5nKCkpOworICAgIEVYUEVDVF9FUShTdHJpbmcoIi1JbmZpbml0eSIpLCBE
ZWNpbWFsOjppbmZpbml0eSgxKS50b1N0cmluZygpKTsKKworICAgIEVYUEVDVF9FUShTdHJpbmco
Ik5hTiIpLCBEZWNpbWFsOjpxdWlldE5hTigwKS50b1N0cmluZygpKTsKKyAgICBFWFBFQ1RfRVEo
U3RyaW5nKCItTmFOIiksIERlY2ltYWw6OnF1aWV0TmFOKDEpLnRvU3RyaW5nKCkpOworfQorCit9
IC8vIERlY2ltYWxUZXN0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZjQxNmQxYWE3NWNhNDJlMzNlMzEwZTA5ZmZhMDg3NzU3
MDc2ZDlhOC4uNTNjNTFkZDVmZTRiM2M4Y2Y2YjU4ZjlhM2Y1ZjBjZjQ3NzcwYzBmZCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDEzIEBACisyMDEyLTA0LTI3ICBZb3NoaWZ1bWkgSW5vdWUgIDx5b3NpbkBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgU2V0dGluZyAnMC42JyB0byB0aGUgdmFsdWUgb2YgYSByYW5n
ZSBpbnB1dCBtYWtlcyB0aGUgdmFsdWUgMC42MDAwMDAwMDAwMDAwMDAxCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDAwOQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9mb3Jtcy9yYW5nZS9yYW5n
ZS12YWx1ZS1yb3VuZGluZy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9y
bXMvcmFuZ2UvcmFuZ2UtdmFsdWUtcm91bmRpbmcuaHRtbDogQWRkZWQuCisKIDIwMTItMDQtMjYg
IEFsZXhhbmRlciBQYXZsb3YgIDxhcGF2bG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIg
SW5zcGVjdG9yOiBJbXBsZW1lbnQgdGhlICJEaXNhYmxlIEphdmFTY3JpcHQiIG9wdGlvbiBpbiB0
aGUgc2V0dGluZ3MgZGlhbG9nCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Jh
bmdlL3JhbmdlLXZhbHVlLXJvdW5kaW5nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvcmFuZ2UvcmFuZ2UtdmFsdWUtcm91bmRpbmctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmQ3YmI1MTA2MGNhNzg5YzFmYTE4NmVlYzQ3NDZhYmNiZTZmMDZjNjAKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3JhbmdlL3JhbmdlLXZhbHVlLXJvdW5kaW5nLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDE5IEBACisgICAgICAgIAorU2V0dGluZyAnMC42JyB0byB0
aGUgdmFsdWUgb2YgYSByYW5nZSBpbnB1dCBtYWtlcyB0aGUgdmFsdWUgMC42MDAwMDAwMDAwMDAw
MDAxCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHJhbmdlMS52YWx1ZS50
b1N0cmluZygpIGlzICIwLjEiCitQQVNTIHJhbmdlMi52YWx1ZS50b1N0cmluZygpIGlzICIwLjIi
CitQQVNTIHJhbmdlMy52YWx1ZS50b1N0cmluZygpIGlzICIwLjMiCitQQVNTIHJhbmdlNC52YWx1
ZS50b1N0cmluZygpIGlzICIwLjQiCitQQVNTIHJhbmdlNS52YWx1ZS50b1N0cmluZygpIGlzICIw
LjUiCitQQVNTIHJhbmdlNi52YWx1ZS50b1N0cmluZygpIGlzICIwLjYiCitQQVNTIHJhbmdlNy52
YWx1ZS50b1N0cmluZygpIGlzICIwLjciCitQQVNTIHJhbmdlOC52YWx1ZS50b1N0cmluZygpIGlz
ICIwLjgiCitQQVNTIHJhbmdlOS52YWx1ZS50b1N0cmluZygpIGlzICIwLjkiCitQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9yYW5nZS9yYW5nZS12YWx1ZS1yb3VuZGluZy5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9yYW5nZS9yYW5nZS12YWx1ZS1yb3VuZGluZy5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjMyZTJjNGVkM2FmYTEzNDEyNWVkYWMzNzE0NjJiNzdjNzdmNzkzNTAKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3JhbmdlL3JhbmdlLXZhbHVlLXJvdW5k
aW5nLmh0bWwKQEAgLTAsMCArMSwyNCBAQAorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGlu
cHV0IHR5cGU9cmFuZ2Ugc3RlcD0wLjEgdmFsdWU9MC4xIGlkPXJhbmdlMT4KKzxpbnB1dCB0eXBl
PXJhbmdlIHN0ZXA9MC4xIHZhbHVlPTAuMiBpZD1yYW5nZTI+Cis8aW5wdXQgdHlwZT1yYW5nZSBz
dGVwPTAuMSB2YWx1ZT0wLjMgaWQ9cmFuZ2UzPgorPGlucHV0IHR5cGU9cmFuZ2Ugc3RlcD0wLjEg
dmFsdWU9MC40IGlkPXJhbmdlND4KKzxpbnB1dCB0eXBlPXJhbmdlIHN0ZXA9MC4xIHZhbHVlPTAu
NSBpZD1yYW5nZTU+Cis8aW5wdXQgdHlwZT1yYW5nZSBzdGVwPTAuMSB2YWx1ZT0wLjYgaWQ9cmFu
Z2U2PgorPGlucHV0IHR5cGU9cmFuZ2Ugc3RlcD0wLjEgdmFsdWU9MC43IGlkPXJhbmdlNz4KKzxp
bnB1dCB0eXBlPXJhbmdlIHN0ZXA9MC4xIHZhbHVlPTAuOCBpZD1yYW5nZTg+Cis8aW5wdXQgdHlw
ZT1yYW5nZSBzdGVwPTAuMSB2YWx1ZT0wLjkgaWQ9cmFuZ2U5PgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIjxhIGhyZWY9J2h0dHA6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTgwMDA5Jz5TZXR0aW5nICcwLjYnIHRvIHRoZSB2YWx1ZSBv
ZiBhIHJhbmdlIGlucHV0IG1ha2VzIHRoZSB2YWx1ZSAwLjYwMDAwMDAwMDAwMDAwMDE8L2E+Iik7
Citmb3IgKHZhciBpID0gMTsgaSA8PSA5OyArK2kpIHsKKyAgICBzaG91bGRCZSgncmFuZ2UnICsg
aS50b1N0cmluZygpICsgJy52YWx1ZS50b1N0cmluZygpJywgJyIwLicgKyBpLnRvU3RyaW5nKCkg
KyAnIicpOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+CisKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>139584</attachid>
            <date>2012-04-30 22:44:17 -0700</date>
            <delta_ts>2012-04-30 23:10:46 -0700</delta_ts>
            <desc>Patch 4</desc>
            <filename>bug-80009-20120501144415.patch</filename>
            <type>text/plain</type>
            <size>88097</size>
            <attacher>yosin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE1Njk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTA4MmNlMjdiODgyYjIw
ZWYzYTE4NWViMDYxNDgzMTAzN2M4YzNjZi4uNWExMDgzZmY4ZDhhMTA4NTJiMDYzZDY3YTVkN2E3
NjQ1NjFiYTdiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzNSBAQAorMjAxMi0wNC0yNyAgWW9z
aGlmdW1pIElub3VlICA8eW9zaW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFNldHRpbmcgJzAu
NicgdG8gdGhlIHZhbHVlIG9mIGEgcmFuZ2UgaW5wdXQgbWFrZXMgdGhlIHZhbHVlIDAuNjAwMDAw
MDAwMDAwMDAwMQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODAwMDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIHBhdGNoIGludHJvZHVjZSBkZWNpbWFsIGFyaXRobWV0aWMgZm9yIHJhbmdlIHR5cGUg
aW5wdXQgZWxlbWVudCB0byBhdm9pZCAKKyAgICAgICAgcm91bmRpbmcgZXJyb3IgaW4gZG91Ymxl
LiBCZWNhdXNlIG9mIGRvdWJsZSBjYW4ndCByZXByZXNlbnQgMC4xIGV4YWN0bGx5IGR1ZQorICAg
ICAgICBieSBiYXNlIDIgZXhwb25lbnQuCisKKyAgICAgICAgQWxsIGNhbGN1bGF0aW9ucyByZWxh
dGVkIHRvIGlucHV0IGVsZW1lbnQgdmFsdWUgaW4gU3RlcFJhbmdlLCBSYW5nZUlucHV0VHlwZQor
ICAgICAgICBhbmQgU2xpZGVyVGh1bWJuYWlsIGFyZSBkb25lIGluIGRlY2ltYWwgYXJpdGhtZXRp
YyBleGNlcHQgZm9yIEFQSXMgcmV0dXJuaW5nIG9yCisgICAgICAgIHRha2luZyBkb3VibGUgdmFs
dWUuCisKKyAgICAgICAgQW4gaW1wbG1lbnRhdGlvbiBvZiBkZWNpbWFsIGFyaXRobWV0aWMgcmVz
aWRlcyBpbiBuZXdseSBhZGRlZCBmaWxlcyBEZWNpbWFsLmNwcAorICAgICAgICBhbmQgRGVjaW1h
bC5oLgorCisgICAgICAgIFRlc3Q6IGZhc3QvZm9ybXMvcmFuZ2UvcmFuZ2UtdmFsdWUtcm91bmRp
bmcuaHRtbAorICAgICAgICBUZXN0IGZvciBEZWNpbWFsIGNsYXNzIGlzIGltcGxlbWVudGVkIHVz
aW5nIGdUZXN0IGFuZCByZXNpZGVzIGluIFdlYktpdC9jaHJvbWl1bS90ZXN0cy4KKworICAgICAg
ICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAg
ICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpnZXRBbGxv
d2VkVmFsdWVTdGVwKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGh0bWwvSFRNTElu
cHV0RWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChIVE1MSW5wdXRFbGVt
ZW50KToKKyAgICAgICAgKiBodG1sL0lucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnB1dFR5cGU6OmdldEFsbG93ZWRWYWx1ZVN0ZXApOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgICogaHRtbC9JbnB1dFR5cGUuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSW5w
dXRUeXBlKToKKyAgICAgICAgKiBodG1sL1JhbmdlSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJhbmdlSW5wdXRUeXBlOjpnZXRBbGxvd2VkVmFsdWVTdGVwKToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VJbnB1dFR5cGU6OmhhbmRsZUtleWRvd25F
dmVudCk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6ZmFsbGJhY2tWYWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6bWF4aW11bSk6CisgICAgICAgIChX
ZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6bWluaW11bSk6CisgICAgICAgIChXZWJDb3JlOjpSYW5n
ZUlucHV0VHlwZTo6c2FuaXRpemVWYWx1ZSk6CisgICAgICAgICogaHRtbC9SYW5nZUlucHV0VHlw
ZS5oOgorICAgICAgICAoUmFuZ2VJbnB1dFR5cGUpOgorICAgICAgICAqIGh0bWwvU3RlcFJhbmdl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0ZXBSYW5nZTo6U3RlcFJhbmdlKToKKyAgICAgICAg
KFdlYkNvcmU6OlN0ZXBSYW5nZTo6Y2xhbXBWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdGVw
UmFuZ2U6OnZhbHVlRnJvbUVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvU3RlcFJhbmdlLmg6Cisg
ICAgICAgIChTdGVwUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U3RlcFJhbmdlOjpkZWZhdWx0
VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U3RlcFJhbmdlOjpwcm9wb3J0aW9uRnJvbVZhbHVl
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0ZXBSYW5nZTo6dmFsdWVGcm9tUHJvcG9ydGlvbik6Cisg
ICAgICAgICogaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnNsaWRlclBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNsaWRlclRo
dW1iOjpsYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6U2xpZGVyVGh1bWJFbGVtZW50OjpzZXRQ
b3NpdGlvbkZyb21Qb2ludCk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9t
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZVRvRGVjaW1hbEZvck51bWJlclR5cGUpIEFk
ZGVkLgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuaDoKKyAgICAgICAg
KFdlYkNvcmU6OnBhcnNlVG9EZWNpbWFsRm9yTnVtYmVyVHlwZSkgQWRkZWQuCisgICAgICAgICAq
IHBsYXRmb3JtL0RlY2ltYWwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoRGVjaW1hbFByaXZhdGUpOgorICAgICAgICAoU3BlY2lhbFZhbHVlSGFuZGxlcik6CisgICAg
ICAgIChVSW50MTI4KToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWxQcml2YXRlOjpVSW50MTI4
OjpoaWdoKToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWxQcml2YXRlOjpVSW50MTI4Ojpsb3cp
OgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1hbFByaXZhdGU6OlVJbnQxMjg6OmlzWmVybyk6Cisg
ICAgICAgIChXZWJDb3JlOjpEZWNpbWFsUHJpdmF0ZTo6Y291bnREaWdpdHMpOgorICAgICAgICAo
V2ViQ29yZTo6RGVjaW1hbFByaXZhdGU6Om11bHRpcGx5SGlnaCk6CisgICAgICAgIChXZWJDb3Jl
OjpEZWNpbWFsUHJpdmF0ZTo6cG93ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1hbFByaXZh
dGU6OnNjYWxlRG93bik6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsUHJpdmF0ZTo6c2NhbGVV
cCk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsUHJpdmF0ZTo6U3BlY2lhbFZhbHVlSGFuZGxl
cjo6U3BlY2lhbFZhbHVlSGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsUHJpdmF0
ZTo6U3BlY2lhbFZhbHVlSGFuZGxlcjo6aGFuZGxlKToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2lt
YWxQcml2YXRlOjpTcGVjaWFsVmFsdWVIYW5kbGVyOjp2YWx1ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpEZWNpbWFsUHJpdmF0ZTo6VUludDEyODo6VUludDEyOCk6CisgICAgICAgIChXZWJDb3JlOjpE
ZWNpbWFsUHJpdmF0ZTo6VUludDEyODo6b3BlcmF0b3IgLz0pOgorICAgICAgICAoV2ViQ29yZTo6
RGVjaW1hbFByaXZhdGU6OlVJbnQxMjg6Om11bHRpcGx5KToKKyAgICAgICAgKFdlYkNvcmU6OkRl
Y2ltYWw6OkVuY29kZWREYXRhOjpFbmNvZGVkRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpEZWNp
bWFsOjpFbmNvZGVkRGF0YTo6Y29lZmZpY2llbnQpOgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1h
bDo6RW5jb2RlZERhdGE6OmV4cG9uZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWw6OkVu
Y29kZWREYXRhOjppc0Zpbml0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjpFbmNvZGVk
RGF0YTo6aXNTcGVjaWFsKToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWw6OkVuY29kZWREYXRh
Ojppc1plcm8pOgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1hbDo6RW5jb2RlZERhdGE6OnJhd0V4
cG9uZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWw6OkVuY29kZWREYXRhOjpzaWduKToK
KyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWw6OkVuY29kZWREYXRhOjpzZXRTaWduKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRlY2ltYWw6OkRlY2ltYWwpOgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1h
bDo6b3BlcmF0b3IgPSk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjpvcGVyYXRvciArPSk6
CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjpvcGVyYXRvciAtPSk6CisgICAgICAgIChXZWJD
b3JlOjpEZWNpbWFsOjpvcGVyYXRvciAqPSk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjpv
cGVyYXRvciAvPSk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjpvcGVyYXRvciArKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRlY2ltYWw6Om9wZXJhdG9yIC0pOgorICAgICAgICAoV2ViQ29yZTo6
RGVjaW1hbDo6b3BlcmF0b3IgKik6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjpvcGVyYXRv
ciAvKToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWw6Om9wZXJhdG9yPT0pOgorICAgICAgICAo
V2ViQ29yZTo6RGVjaW1hbDo6b3BlcmF0b3IhPSk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFs
OjpvcGVyYXRvciA8KToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWw6Om9wZXJhdG9yIDw9KToK
KyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWw6Om9wZXJhdG9yID4pOgorICAgICAgICAoV2ViQ29y
ZTo6RGVjaW1hbDo6b3BlcmF0b3IgPj0pOgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1hbDo6ZXhw
b25lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1hbDo6aWVlZUNsYXNzKToKKyAgICAgICAg
KFdlYkNvcmU6OkRlY2ltYWw6OnNpZ24pOgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1hbDo6Y29t
cGFyZVRvKToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWw6OmZhc3RFcXVhbHMpOgorICAgICAg
ICAoV2ViQ29yZTo6RGVjaW1hbDo6ZnJvbVN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpEZWNp
bWFsOjppbmZpbml0eSk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjpxdWlldE5hTik6Cisg
ICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjpyZW1haW5kZXIpOgorICAgICAgICAoV2ViQ29yZTo6
RGVjaW1hbDo6cm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1hbDo6cm91bmRBdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjp0b1N0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpE
ZWNpbWFsOjp6ZXJvKToKKyAgICAgICAgKiBwbGF0Zm9ybS9EZWNpbWFsLmg6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChEZWNpbWFsKToKKyAgICAgICAgKEVuY29kZWREYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWw6OmlzRmluaXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkRlY2ltYWw6OmlzU3BlY2lhbCk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjppc1pl
cm8pOgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1hbDo6dmFsdWUpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJTbGlkZXIuY3BwOgorCiAyMDEyLTA0LTMwICBPbGl2ZXIgSHVudCAgPG9saXZl
ckBhcHBsZS5jb20+CiAKICAgICAgICAgSGFyZGVuIGFyaXRobWV0aWMgaW4gSW1hZ2VCdWZmZXJE
YXRhQ0cKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNzhiMWY3ZGJmMjljN2I1YjBkZTFm
MWYxZmUzNjRlNzkwNDY1YjJjZS4uYWM3YWVjMGRmYjg2NmE3ZjRkZTRlMjQ0ZjMxZDNkYjBmOWRm
ZWU4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAxMi0w
NC0yNyAgWW9zaGlmdW1pIElub3VlICA8eW9zaW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFNl
dHRpbmcgJzAuNicgdG8gdGhlIHZhbHVlIG9mIGEgcmFuZ2UgaW5wdXQgbWFrZXMgdGhlIHZhbHVl
IDAuNjAwMDAwMDAwMDAwMDAwMQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODAwMDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBEZWNpbWFsVGVzdCBpc3Rlc3Qgc2NyaXB0cyBmb3IgRGVjaW1hbCBjbGFzcyBp
biBXZWJDb3JlL3BsYXRmb3JtLgorCisgICAgICAgICogV2ViS2l0Lmd5cGk6CisgICAgICAgICog
dGVzdHMvRGVjaW1hbFRlc3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAgIChEZWNpbWFsVGVzdCk6CisgICAgICAg
IChEZWNpbWFsU3RlcFJhbmdlKToKKyAgICAgICAgKERlY2ltYWxUZXN0OjpEZWNpbWFsU3RlcFJh
bmdlOjpEZWNpbWFsU3RlcFJhbmdlKToKKyAgICAgICAgKERlY2ltYWxUZXN0OjpEZWNpbWFsU3Rl
cFJhbmdlOjpjbGFtcFZhbHVlKToKKyAgICAgICAgKERlY2ltYWxUZXN0OjpEZWNpbWFsVGVzdDo6
ZW5jb2RlKToKKyAgICAgICAgKERlY2ltYWxUZXN0OjpEZWNpbWFsVGVzdDo6ZnJvbVN0cmluZyk6
CisgICAgICAgIChEZWNpbWFsVGVzdDo6RGVjaW1hbFRlc3Q6OnN0ZXBEb3duKToKKyAgICAgICAg
KERlY2ltYWxUZXN0OjpEZWNpbWFsVGVzdDo6c3RlcFVwKToKKyAgICAgICAgKERlY2ltYWxUZXN0
OjpURVNUX0YpOgorCiAyMDEyLTA0LTMwICBTYWRydWwgSGFiaWIgQ2hvd2RodXJ5ICA8c2FkcnVs
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIERpc2FibGUgYmF0dGVyeS1zdGF0
dXMgQVBJIHN1cHBvcnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGVlNjgyYmJkNDg3NmZhOWQy
YTE3YWI3YmVjNzFmZDI4MDFjM2M2ODUuLjBhZTA4YjE2NjVhODQyNDgwZTg0ODA1MmU3M2Y5Yjdk
NTY5MmI5OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xMDkyLDYgKzEwOTIsNyBAQCBTRVQo
V2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vQ29udGVudFR5cGUuY3BwCiAgICAgcGxhdGZv
cm0vQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwCiAgICAgcGxhdGZvcm0vRGF0ZUNvbXBvbmVudHMuY3Bw
CisgICAgcGxhdGZvcm0vRGVjaW1hbC5jcHAKICAgICBwbGF0Zm9ybS9EcmFnRGF0YS5jcHAKICAg
ICBwbGF0Zm9ybS9EcmFnSW1hZ2UuY3BwCiAgICAgcGxhdGZvcm0vRmlsZUNob29zZXIuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCAyZjUzMjgyMzlkYjNkNmU3MTJmYWQ3ZmE0
NTM0ODEwYzk0YTZkMDAwLi41OTE0NTdjZjUxZjZkNzQ2YWJiYTgzYTkxZDRjYWYyYjkwNzhmYmE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTMwODEsNiArMzA4MSw4IEBAIHdl
YmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Vyc29yLmggXAog
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGVDb21wb25lbnRzLmNwcCBcCiAJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vRGF0ZUNvbXBvbmVudHMuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vRGVjaW1hbC5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RlY2ltYWwuaCBcCiAJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9EcmFnRGF0YS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2Uu
Y3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2Vi
Q29yZS9UYXJnZXQucHJpCmluZGV4IDhlOGM3MTQ2MGFkYzE5ODE2NGFkY2FmY2M4MDkwNWYxYjVj
MWVhMmQuLjllNjcyYzQxMzM1YmM4Mzg4YTBlY2E0ZmZkMGU4MTUyY2VkMjYzNDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0
LnByaQpAQCAtMTA3MSw2ICsxMDcxLDcgQEAgU09VUkNFUyArPSBcCiAgICAgcGxhdGZvcm0vQ29u
dGVudFR5cGUuY3BwIFwKICAgICBwbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5jcHAgXAogICAg
IHBsYXRmb3JtL0RhdGVDb21wb25lbnRzLmNwcCBcCisgICAgcGxhdGZvcm0vRGVjaW1hbC5jcHAg
XAogICAgIHBsYXRmb3JtL0RyYWdEYXRhLmNwcCBcCiAgICAgcGxhdGZvcm0vRHJhZ0ltYWdlLmNw
cCBcCiAgICAgcGxhdGZvcm0vRmlsZUNob29zZXIuY3BwIFwKQEAgLTIxNzgsNiArMjE3OSw3IEBA
IEhFQURFUlMgKz0gXAogICAgIHBsYXRmb3JtL0NvbnRleHRNZW51LmggXAogICAgIHBsYXRmb3Jt
L0Nyb3NzVGhyZWFkQ29waWVyLmggXAogICAgIHBsYXRmb3JtL0RhdGVDb21wb25lbnRzLmggXAor
ICAgIHBsYXRmb3JtL0RlY2ltYWwuaCBcCiAgICAgcGxhdGZvcm0vRHJhZ0RhdGEuaCBcCiAgICAg
cGxhdGZvcm0vRHJhZ0ltYWdlLmggXAogICAgIHBsYXRmb3JtL0ZpbGVDaG9vc2VyLmggXApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCmluZGV4IDgyM2Y2ODJhMzI1ZGViNTExNzk2YWJjYjVjOGFlZmY1OGMzODJkNTgu
LjYwZjhlZTM2YzIzYzUwNDRkODBlNjU2NzI0YWM4MDcyMWQ4NjMzZDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKQEAgLTI3MSw2ICsyNzEsNyBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL0Nvb2tpZXNTdHJh
dGVneS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9DdXJzb3IuaCcsCiAgICAgICAgICAgICAn
cGxhdGZvcm0vRGF0ZUNvbXBvbmVudHMuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vRGVjaW1h
bC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9EcmFnRGF0YS5oJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS9EcmFnSW1hZ2UuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vRmlsZUNob29zZXIu
aCcsCkBAIC0zMTEzLDYgKzMxMTQsNyBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL0Nyb3NzVGhy
ZWFkQ29waWVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL0N1cnNvci5jcHAnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL0RhdGVDb21wb25lbnRzLmNwcCcsCisgICAgICAgICAgICAncGxhdGZv
cm0vRGVjaW1hbC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL0RyYWdEYXRhLmNwcCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vRHJhZ0ltYWdlLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vRXZlbnRMb29wLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvagppbmRleCA1Yzc4Y2E5MTVlNmVhYmU5M2IzZjllOGMxMmM2YWQzYzhhMWI2OWVmLi5l
NDVlZTE3MWUwMzJkZWU0ZjQ5NDQzYzVmNjhmOGM0Njk4OGVmNzk0IDEwMDc1NQotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtMjc1OTAsNiArMjc1OTAsMTQg
QEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxh
dGZvcm1cRGVjaW1hbC5jcHAiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXERlY2ltYWwuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8
RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cRHJhZ0RhdGEuY3BwIgogCQkJCT4K
IAkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCBkMjU1NTVhM2I1NGU4NWVjYTZhYmU0NjQ0ZmYyZTIzYjMyZTZmYTll
Li40ODUzNjUyNTcyMTY4YjdjMTY2ZTM5MzcyNmRkMTE3MWJiY2EyNmU4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTgyLDYg
KzExODIsOCBAQAogCQk0NTA5OUM0MTEzNzBBNzgwMDA1OEQ1MTMgLyogSWNvblVSTC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NTA5OUM0MDEzNzBB
NzgwMDA1OEQ1MTMgLyogSWNvblVSTC5jcHAgKi87IH07CiAJCTQ1MENFQkYwMTUwNzNCQkUwMDJC
QjE0OSAvKiBMYWJlbGFibGVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ1MENFQkVFMTUwNzNCQkUwMDJCQjE0OSAvKiBMYWJlbGFibGVF
bGVtZW50LmNwcCAqLzsgfTsKIAkJNDUwQ0VCRjExNTA3M0JCRTAwMkJCMTQ5IC8qIExhYmVsYWJs
ZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ1MENFQkVGMTUwNzNCQkUwMDJCQjE0OSAvKiBMYWJlbGFibGVFbGVtZW50LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDU4QTI4MEYxNTRBQjVF
NjAwMDA0MDM3IC8qIERlY2ltYWwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDU4QTI4MEUxNTRBQjVFNjAwMDA0MDM3IC8qIERlY2ltYWwuY3BwICov
OyB9OworCQk0NThBMjgxMTE1NEFCNUZCMDAwMDQwMzcgLyogRGVjaW1hbC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDU4QTI4MTAxNTRBQjVGQjAwMDA0
MDM3IC8qIERlY2ltYWwuaCAqLzsgfTsKIAkJNDVCQUMyQjAxMzYwQkJBQjAwNURBMjU4IC8qIElj
b25VUkwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ1
QkFDMkFGMTM2MEJCQUIwMDVEQTI1OCAvKiBJY29uVVJMLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDYxNEExRkUwQjIzQThENjAwNDQ2RTFDIC8q
IGNvcHlDdXJzb3IucG5nIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NjE0QTFGRDBCMjNBOEQ2MDA0NDZFMUMgLyogY29weUN1cnNvci5wbmcgKi87IH07
CiAJCTQ2NzAwRUQwMTI3Qjk2Q0IwMEY1RDVENiAvKiBGaWxlV3JpdGVyU3luYy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjcwMEVDRTEyN0I5NkNC
MDBGNUQ1RDYgLyogRmlsZVdyaXRlclN5bmMuY3BwICovOyB9OwpAQCAtODE0OSw2ICs4MTUxLDgg
QEAKIAkJNDUwOTlDNDAxMzcwQTc4MDAwNThENTEzIC8qIEljb25VUkwuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSWNvblVSTC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQ1MENFQkVFMTUwNzNCQkUwMDJCQjE0OSAvKiBMYWJlbGFibGVFbGVtZW50
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExhYmVsYWJsZUVsZW1l
bnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NTBDRUJFRjE1MDczQkJFMDAy
QkIxNDkgLyogTGFiZWxhYmxlRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBMYWJlbGFibGVFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ1
OEEyODBFMTU0QUI1RTYwMDAwNDAzNyAvKiBEZWNpbWFsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IERlY2ltYWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0NThBMjgxMDE1NEFCNUZCMDAwMDQwMzcgLyogRGVjaW1hbC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBEZWNpbWFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQ1QkFDMkFGMTM2MEJCQUIwMDVEQTI1OCAvKiBJY29uVVJMLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEljb25VUkwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDYxNEExRkQwQjIzQThENjAwNDQ2RTFDIC8qIGNvcHlDdXJzb3IucG5nICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gaW1hZ2UucG5nOyBwYXRoID0g
Y29weUN1cnNvci5wbmc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2NzAwRUNFMTI3
Qjk2Q0IwMEY1RDVENiAvKiBGaWxlV3JpdGVyU3luYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBGaWxlV3JpdGVyU3luYy5jcHA7IHBhdGggPSBNb2R1bGVzL2ZpbGVz
eXN0ZW0vRmlsZVdyaXRlclN5bmMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MjAxOTYsNiArMjAyMDAsOCBAQAogCQlCQ0YxQTVCQTA5NzgzMjA5MDA2MUExMjMgLyogcGxhdGZv
cm0gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTQ1OEEy
ODEwMTU0QUI1RkIwMDAwNDAzNyAvKiBEZWNpbWFsLmggKi8sCisJCQkJNDU4QTI4MEUxNTRBQjVF
NjAwMDA0MDM3IC8qIERlY2ltYWwuY3BwICovLAogCQkJCTQ5RTkxMkE0MEVGQUM4RTYwMDlEMENB
RiAvKiBhbmltYXRpb24gKi8sCiAJCQkJRkQzMTYwNDAxMkIwMjZBMzAwQzFBMzU5IC8qIGF1ZGlv
ICovLAogCQkJCTFBRTQyRjY3MEFBNEI4Q0IwMEM4NjEyRCAvKiBjZiAqLywKQEAgLTI3ODUzLDYg
KzI3ODU5LDcgQEAKIAkJCQlGRDhDNDZFQjE1NDYwOEU3MDBBNTkxMEMgLyogQXVkaW9TY2hlZHVs
ZWRTb3VyY2VOb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTcxQTU3REYxMTU0QkUyNUMwMDA5
RDEyMCAvKiBTVkdQYXRoVXRpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTc4RDAyQkM1
MTU0QTE4REYwMEI2MkQwNSAvKiBDU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk0NThBMjgwRjE1NEFCNUU2MDAwMDQwMzcgLyogRGVjaW1hbC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsK
IAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IGIzYjBh
NzIwNDJlOWM3ZDRjNzVmMzNiN2Q3ZmFjZmRkNzJkMTkwNmYuLjU2NTRjMjQ0YTI4NmFjNDlkODNl
MzVjZDBiODQxOWYyZjZjMmQ1MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TElucHV0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmNwcApAQCAtMzAwLDYgKzMwMCwxMSBAQCBib29sIEhUTUxJbnB1dEVsZW1lbnQ6OmdldEFs
bG93ZWRWYWx1ZVN0ZXAoZG91YmxlKiBzdGVwKSBjb25zdAogICAgIHJldHVybiBnZXRBbGxvd2Vk
VmFsdWVTdGVwV2l0aERlY2ltYWxQbGFjZXMoUmVqZWN0QW55LCBzdGVwLCAwKTsKIH0KIAorYm9v
bCBIVE1MSW5wdXRFbGVtZW50OjpnZXRBbGxvd2VkVmFsdWVTdGVwKERlY2ltYWwqIHN0ZXApIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1faW5wdXRUeXBlLT5nZXRBbGxvd2VkVmFsdWVTdGVwKHN0ZXAp
OworfQorCiBib29sIEhUTUxJbnB1dEVsZW1lbnQ6OmdldEFsbG93ZWRWYWx1ZVN0ZXBXaXRoRGVj
aW1hbFBsYWNlcyhBbnlTdGVwSGFuZGxpbmcgYW55U3RlcEhhbmRsaW5nLCBkb3VibGUqIHN0ZXAs
IHVuc2lnbmVkKiBkZWNpbWFsUGxhY2VzKSBjb25zdAogewogICAgIEFTU0VSVChzdGVwKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKaW5kZXggM2FiZjE5M2VmMmFkNWUzZTJm
ZjhmZjU0MzY5OGYxZDRkNmNlNzFjOC4uZTBiNWJjY2IxNWNhZjRlN2IxMGIyMDk5NjE3NjViZjkw
ZmI2MjAxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKQEAgLTI4LDYg
KzI4LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBEZWNpbWFsOwogY2xhc3Mg
RmlsZUxpc3Q7CiBjbGFzcyBIVE1MRGF0YUxpc3RFbGVtZW50OwogY2xhc3MgSFRNTE9wdGlvbkVs
ZW1lbnQ7CkBAIC02Miw2ICs2Myw3IEBAIHB1YmxpYzoKICAgICAvLyBTZXRzIHRoZSAiYWxsb3dl
ZCB2YWx1ZSBzdGVwIiBkZWZpbmVkIGluIHRoZSBIVE1MIHNwZWMgdG8gdGhlIHNwZWNpZmllZCBk
b3VibGUgcG9pbnRlci4KICAgICAvLyBSZXR1cm5zIGZhbHNlIGlmIHRoZXJlIGlzIG5vICJhbGxv
d2VkIHZhbHVlIHN0ZXAuIgogICAgIGJvb2wgZ2V0QWxsb3dlZFZhbHVlU3RlcChkb3VibGUqKSBj
b25zdDsKKyAgICBib29sIGdldEFsbG93ZWRWYWx1ZVN0ZXAoRGVjaW1hbCopIGNvbnN0OwogCiAg
ICAgLy8gRm9yIFZhbGlkaXR5U3RhdGUuCiAgICAgYm9vbCBzdGVwTWlzbWF0Y2goY29uc3QgU3Ry
aW5nJikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKaW5kZXggOWEzZGE0ZGVlYWM4
Zjc2ZDMyY2Y1Y2JmNTAwY2Y0ZmJmNDhiNTljZS4uOTMwMWViNzRlMGMwZTVkMzBjNmIzZjA1ZTdh
ZTEwMjg5ODliNGMyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcApAQCAtMjUzLDYgKzI1
MywxMiBAQCBkb3VibGUgSW5wdXRUeXBlOjpkZWZhdWx0VmFsdWVGb3JTdGVwVXAoKSBjb25zdAog
ICAgIHJldHVybiAwOwogfQogCitib29sIElucHV0VHlwZTo6Z2V0QWxsb3dlZFZhbHVlU3RlcChE
ZWNpbWFsKikgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKIGRvdWJsZSBJbnB1dFR5cGU6Om1pbmltdW0oKSBjb25zdAogewogICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1
dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgKaW5kZXggNzMxNmZmZDE5
ZmQyZTQxMzNmZDQyNTdmMDIyM2FkMjcyMTJiOWRkNC4uN2Y2NWFmNDc0NTY4ZDQ4MWU1YmUzMDdh
MTg0YjQxNDVmNWM1NjIxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5
cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oCkBAIC00NSw2ICs0NSw3
IEBAIGNsYXNzIEJlZm9yZVRleHRJbnNlcnRlZEV2ZW50OwogY2xhc3MgQ2hyb21lOwogY2xhc3Mg
Q29sb3I7CiBjbGFzcyBEYXRlQ29tcG9uZW50czsKK2NsYXNzIERlY2ltYWw7CiBjbGFzcyBFdmVu
dDsKIGNsYXNzIEZpbGVMaXN0OwogY2xhc3MgRm9ybURhdGFMaXN0OwpAQCAtMTY2LDYgKzE2Nyw3
IEBAIHB1YmxpYzoKICAgICAvLyBUaGlzIGZ1bmN0aW9uIG11c3QgYmUgY2FsbGVkIG9ubHkgYnkg
SFRNTElucHV0RWxlbWVudDo6c2FuaXRpemVWYWx1ZSgpLgogICAgIHZpcnR1YWwgU3RyaW5nIHNh
bml0aXplVmFsdWUoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGhhc1Vu
YWNjZXB0YWJsZVZhbHVlKCk7CisgICAgdmlydHVhbCBib29sIGdldEFsbG93ZWRWYWx1ZVN0ZXAo
RGVjaW1hbCopIGNvbnN0OwogCiAgICAgLy8gRXZlbnQgaGFuZGxlcnMKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL1JhbmdlSW5wdXRUeXBlLmNwcAppbmRleCA0ZmFmNzg2ZTY1NWJjMzc4OTczMmY4Yzc4ZmQ1
NzAwOGEyZjM3YTQ1Li5hMzg5ODQwM2JiYzFjM2JjZDM4NTE1NGNjMTMzYWFmMmUxMzYxNzA3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmNwcApAQCAtNTQsOCArNTQsNiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogdXNpbmcgbmFt
ZXNwYWNlIHN0ZDsKIAotc3RhdGljIGNvbnN0IGRvdWJsZSByYW5nZURlZmF1bHRNaW5pbXVtID0g
MC4wOwotc3RhdGljIGNvbnN0IGRvdWJsZSByYW5nZURlZmF1bHRNYXhpbXVtID0gMTAwLjA7CiBz
dGF0aWMgY29uc3QgZG91YmxlIHJhbmdlRGVmYXVsdFN0ZXAgPSAxLjA7CiBzdGF0aWMgY29uc3Qg
ZG91YmxlIHJhbmdlU3RlcFNjYWxlRmFjdG9yID0gMS4wOwogCkBAIC0xMTAsMTggKzEwOCwxMiBA
QCBib29sIFJhbmdlSW5wdXRUeXBlOjpzdXBwb3J0c1JhbmdlTGltaXRhdGlvbigpIGNvbnN0CiAK
IGRvdWJsZSBSYW5nZUlucHV0VHlwZTo6bWluaW11bSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHBh
cnNlVG9Eb3VibGUoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpLCByYW5nZURl
ZmF1bHRNaW5pbXVtKTsKKyAgICByZXR1cm4gcGFyc2VUb0RvdWJsZShTdGVwUmFuZ2UoZWxlbWVu
dCgpKS5taW5pbXVtLnRvU3RyaW5nKCksIG51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05h
TigpKTsKIH0KIAogZG91YmxlIFJhbmdlSW5wdXRUeXBlOjptYXhpbXVtKCkgY29uc3QKIHsKLSAg
ICBkb3VibGUgbWF4ID0gcGFyc2VUb0RvdWJsZShlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUo
bWF4QXR0ciksIHJhbmdlRGVmYXVsdE1heGltdW0pOwotICAgIC8vIEEgcmVtZWR5IGZvciB0aGUg
aW5jb25zaXN0ZW50IG1pbi9tYXggdmFsdWVzLgotICAgIC8vIFNldHMgdGhlIG1heGltdW0gdG8g
dGhlIGRlZmF1bHQgb3IgdGhlIG1pbmltdW0gdmFsdWUuCi0gICAgZG91YmxlIG1pbiA9IG1pbmlt
dW0oKTsKLSAgICBpZiAobWF4IDwgbWluKQotICAgICAgICBtYXggPSBzdGQ6Om1heChtaW4sIHJh
bmdlRGVmYXVsdE1heGltdW0pOwotICAgIHJldHVybiBtYXg7CisgICAgcmV0dXJuIHBhcnNlVG9E
b3VibGUoU3RlcFJhbmdlKGVsZW1lbnQoKSkubWF4aW11bS50b1N0cmluZygpLCBudW1lcmljX2xp
bWl0czxkb3VibGU+OjpxdWlldF9OYU4oKSk7CiB9CiAKIGJvb2wgUmFuZ2VJbnB1dFR5cGU6Omlz
U3RlcHBhYmxlKCkgY29uc3QKQEAgLTE1Miw2ICsxNDQsMjkgQEAgZG91YmxlIFJhbmdlSW5wdXRU
eXBlOjpzdGVwU2NhbGVGYWN0b3IoKSBjb25zdAogICAgIHJldHVybiByYW5nZVN0ZXBTY2FsZUZh
Y3RvcjsKIH0KIAorYm9vbCBSYW5nZUlucHV0VHlwZTo6Z2V0QWxsb3dlZFZhbHVlU3RlcChEZWNp
bWFsKiBzdGVwKSBjb25zdAoreworICAgIEFTU0VSVChzdGVwKTsKKyAgICAqc3RlcCA9IDE7CisK
KyAgICBjb25zdCBBdG9taWNTdHJpbmcmIHN0ZXBTdHJpbmcgPSBlbGVtZW50KCktPmZhc3RHZXRB
dHRyaWJ1dGUoc3RlcEF0dHIpOworICAgIGlmIChzdGVwU3RyaW5nLmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uoc3RlcFN0cmluZywg
ImFueSIpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBEZWNpbWFsIHBhcnNlZDsKKyAg
ICBpZiAoIXBhcnNlVG9EZWNpbWFsRm9yTnVtYmVyVHlwZShzdGVwU3RyaW5nLCAmcGFyc2VkKSkK
KyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAocGFyc2VkIDw9IDApCisgICAgICAgIHJl
dHVybiB0cnVlOworCisgICAgKnN0ZXAgPSBwYXJzZWQ7CisgICAgcmV0dXJuIHRydWU7Cit9CisK
IHZvaWQgUmFuZ2VJbnB1dFR5cGU6OmhhbmRsZU1vdXNlRG93bkV2ZW50KE1vdXNlRXZlbnQqIGV2
ZW50KQogewogICAgIGlmIChlbGVtZW50KCktPmRpc2FibGVkKCkgfHwgZWxlbWVudCgpLT5yZWFk
T25seSgpKQpAQCAtMTc2LDIzICsxOTEsMTUgQEAgdm9pZCBSYW5nZUlucHV0VHlwZTo6aGFuZGxl
S2V5ZG93bkV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQogCiAgICAgY29uc3QgU3RyaW5nJiBr
ZXkgPSBldmVudC0+a2V5SWRlbnRpZmllcigpOwogCi0gICAgZG91YmxlIGN1cnJlbnQgPSBwYXJz
ZVRvRG91YmxlKGVsZW1lbnQoKS0+dmFsdWUoKSwgbnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVp
ZXRfTmFOKCkpOwotICAgIEFTU0VSVChpc2Zpbml0ZShjdXJyZW50KSk7Ci0KLSAgICBkb3VibGUg
c3RlcCwgYmlnU3RlcDsKLSAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZWxlbWVudCgpLT5mYXN0
R2V0QXR0cmlidXRlKHN0ZXBBdHRyKSwgImFueSIpKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBXZSBj
YW4ndCB1c2Ugc3RlcFVwKCkgZm9yIHRoZSBzdGVwIHZhbHVlICJhbnkiLiBTbywgd2UgaW5jcmVh
c2UKLSAgICAgICAgLy8gb3IgZGVjcmVhc2UgdGhlIHZhbHVlIGJ5IDEvMTAwIG9mIHRoZSB2YWx1
ZSByYW5nZS4gSXMgaXQgcmVhc29uYWJsZT8KLSAgICAgICAgc3RlcCA9IChtYXhpbXVtKCkgLSBt
aW5pbXVtKCkpIC8gMTAwOwotICAgICAgICBiaWdTdGVwID0gc3RlcCAqIDEwOwotICAgIH0gZWxz
ZSB7Ci0gICAgICAgIGlmICghZWxlbWVudCgpLT5nZXRBbGxvd2VkVmFsdWVTdGVwKCZzdGVwKSkK
LSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotCi0gICAgICAgIGJpZ1N0ZXAgPSAo
bWF4aW11bSgpIC0gbWluaW11bSgpKSAvIDEwOwotICAgICAgICBpZiAoYmlnU3RlcCA8IHN0ZXAp
Ci0gICAgICAgICAgICBiaWdTdGVwID0gc3RlcDsKLSAgICB9CisgICAgRGVjaW1hbCBjdXJyZW50
OworICAgIHBhcnNlVG9EZWNpbWFsRm9yTnVtYmVyVHlwZShlbGVtZW50KCktPnZhbHVlKCksICZj
dXJyZW50KTsKKworICAgIFN0ZXBSYW5nZSBzdGVwUmFuZ2UoZWxlbWVudCgpKTsKKworICAgIC8v
IEZJWE1FOiBXZSBjYW4ndCB1c2Ugc3RlcFVwKCkgZm9yIHRoZSBzdGVwIHZhbHVlICJhbnkiLiBT
bywgd2UgaW5jcmVhc2UKKyAgICAvLyBvciBkZWNyZWFzZSB0aGUgdmFsdWUgYnkgMS8xMDAgb2Yg
dGhlIHZhbHVlIHJhbmdlLiBJcyBpdCByZWFzb25hYmxlPworICAgIGNvbnN0IERlY2ltYWwgc3Rl
cCA9IGVxdWFsSWdub3JpbmdDYXNlKGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShzdGVwQXR0
ciksICJhbnkiKSA/IChzdGVwUmFuZ2UubWF4aW11bSAtIHN0ZXBSYW5nZS5taW5pbXVtKSAvIDEw
MCA6IHN0ZXBSYW5nZS5zdGVwOworICAgIGNvbnN0IERlY2ltYWwgYmlnU3RlcCA9IDo6c3RkOjpt
YXgoKHN0ZXBSYW5nZS5tYXhpbXVtIC0gc3RlcFJhbmdlLm1pbmltdW0pIC8gMTAsIHN0ZXApOwog
CiAgICAgYm9vbCBpc1ZlcnRpY2FsID0gZmFsc2U7CiAgICAgaWYgKGVsZW1lbnQoKS0+cmVuZGVy
ZXIoKSkgewpAQCAtMjAwLDcgKzIwNyw3IEBAIHZvaWQgUmFuZ2VJbnB1dFR5cGU6OmhhbmRsZUtl
eWRvd25FdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKICAgICAgICAgaXNWZXJ0aWNhbCA9IHBh
cnQgPT0gU2xpZGVyVmVydGljYWxQYXJ0IHx8IHBhcnQgPT0gTWVkaWFWb2x1bWVTbGlkZXJQYXJ0
OwogICAgIH0KIAotICAgIGRvdWJsZSBuZXdWYWx1ZTsKKyAgICBEZWNpbWFsIG5ld1ZhbHVlOwog
ICAgIGlmIChrZXkgPT0gIlVwIikKICAgICAgICAgbmV3VmFsdWUgPSBjdXJyZW50ICsgc3RlcDsK
ICAgICBlbHNlIGlmIChrZXkgPT0gIkRvd24iKQpAQCAtMjE0LDE4ICsyMjEsMTYgQEAgdm9pZCBS
YW5nZUlucHV0VHlwZTo6aGFuZGxlS2V5ZG93bkV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQog
ICAgIGVsc2UgaWYgKGtleSA9PSAiUGFnZURvd24iKQogICAgICAgICBuZXdWYWx1ZSA9IGN1cnJl
bnQgLSBiaWdTdGVwOwogICAgIGVsc2UgaWYgKGtleSA9PSAiSG9tZSIpCi0gICAgICAgIG5ld1Zh
bHVlID0gaXNWZXJ0aWNhbCA/IG1heGltdW0oKSA6IG1pbmltdW0oKTsKKyAgICAgICAgbmV3VmFs
dWUgPSBpc1ZlcnRpY2FsID8gc3RlcFJhbmdlLm1heGltdW0gOiBzdGVwUmFuZ2UubWluaW11bTsK
ICAgICBlbHNlIGlmIChrZXkgPT0gIkVuZCIpCi0gICAgICAgIG5ld1ZhbHVlID0gaXNWZXJ0aWNh
bCA/IG1pbmltdW0oKSA6IG1heGltdW0oKTsKKyAgICAgICAgbmV3VmFsdWUgPSBpc1ZlcnRpY2Fs
ID8gc3RlcFJhbmdlLm1pbmltdW0gOiBzdGVwUmFuZ2UubWF4aW11bTsKICAgICBlbHNlCiAgICAg
ICAgIHJldHVybjsgLy8gRGlkIG5vdCBtYXRjaCBhbnkga2V5IGJpbmRpbmcuCiAKICAgICBuZXdW
YWx1ZSA9IFN0ZXBSYW5nZShlbGVtZW50KCkpLmNsYW1wVmFsdWUobmV3VmFsdWUpOwogCiAgICAg
aWYgKG5ld1ZhbHVlICE9IGN1cnJlbnQpIHsKLSAgICAgICAgRXhjZXB0aW9uQ29kZSBlYzsKLSAg
ICAgICAgVGV4dEZpZWxkRXZlbnRCZWhhdmlvciBldmVudEJlaGF2aW9yID0gRGlzcGF0Y2hDaGFu
Z2VFdmVudDsKLSAgICAgICAgc2V0VmFsdWVBc051bWJlcihuZXdWYWx1ZSwgZXZlbnRCZWhhdmlv
ciwgZWMpOworICAgICAgICBlbGVtZW50KCktPnNldFZhbHVlKG5ld1ZhbHVlLnRvU3RyaW5nKCks
IERpc3BhdGNoQ2hhbmdlRXZlbnQpOwogCiAgICAgICAgIGlmIChBWE9iamVjdENhY2hlOjphY2Nl
c3NpYmlsaXR5RW5hYmxlZCgpKQogICAgICAgICAgICAgZWxlbWVudCgpLT5kb2N1bWVudCgpLT5h
eE9iamVjdENhY2hlKCktPnBvc3ROb3RpZmljYXRpb24oZWxlbWVudCgpLT5yZW5kZXJlcigpLCBB
WE9iamVjdENhY2hlOjpBWFZhbHVlQ2hhbmdlZCwgdHJ1ZSk7CkBAIC0zMDMsMTIgKzMwOCwxMiBA
QCB2b2lkIFJhbmdlSW5wdXRUeXBlOjpzZXRWYWx1ZShjb25zdCBTdHJpbmcmIHZhbHVlLCBib29s
IHZhbHVlQ2hhbmdlZCwgVGV4dEZpZWxkRQogCiBTdHJpbmcgUmFuZ2VJbnB1dFR5cGU6OmZhbGxi
YWNrVmFsdWUoKSBjb25zdAogewotICAgIHJldHVybiBzZXJpYWxpemVGb3JOdW1iZXJUeXBlKFN0
ZXBSYW5nZShlbGVtZW50KCkpLmRlZmF1bHRWYWx1ZSgpKTsKKyAgICByZXR1cm4gU3RlcFJhbmdl
KGVsZW1lbnQoKSkuZGVmYXVsdFZhbHVlKCkudG9TdHJpbmcoKTsKIH0KIAogU3RyaW5nIFJhbmdl
SW5wdXRUeXBlOjpzYW5pdGl6ZVZhbHVlKGNvbnN0IFN0cmluZyYgcHJvcG9zZWRWYWx1ZSkgY29u
c3QKIHsKLSAgICByZXR1cm4gc2VyaWFsaXplRm9yTnVtYmVyVHlwZShTdGVwUmFuZ2UoZWxlbWVu
dCgpKS5jbGFtcFZhbHVlKHByb3Bvc2VkVmFsdWUpKTsKKyAgICByZXR1cm4gU3RlcFJhbmdlKGVs
ZW1lbnQoKSkuY2xhbXBWYWx1ZShwcm9wb3NlZFZhbHVlKS50b1N0cmluZygpOwogfQogCiBib29s
IFJhbmdlSW5wdXRUeXBlOjpzaG91bGRSZXNwZWN0TGlzdEF0dHJpYnV0ZSgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL1JhbmdlSW5wdXRUeXBlLmgKaW5kZXggYWJmMmVhNjc0ODI3ZjE4MzBhNjExMGNmMDA5ODRj
ZjQwZmQzOGZjNS4uOWY2ODgwYTM1OWVhZTQzNjc1ZWQxZWJhNDg3ODY3MDUyYzlmZTZjMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuaApAQCAtNTMsNiArNTMsNyBAQCBwcml2YXRl
OgogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1JhbmdlTGltaXRhdGlvbigpIGNvbnN0IE9WRVJS
SURFOwogICAgIHZpcnR1YWwgZG91YmxlIG1pbmltdW0oKSBjb25zdCBPVkVSUklERTsKICAgICB2
aXJ0dWFsIGRvdWJsZSBtYXhpbXVtKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29s
IGdldEFsbG93ZWRWYWx1ZVN0ZXAoRGVjaW1hbCopIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1
YWwgYm9vbCBpc1N0ZXBwYWJsZSgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBz
dGVwTWlzbWF0Y2goY29uc3QgU3RyaW5nJiwgZG91YmxlKSBjb25zdCBPVkVSUklERTsKICAgICB2
aXJ0dWFsIGRvdWJsZSBzdGVwQmFzZSgpIGNvbnN0IE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9TdGVwUmFuZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9TdGVw
UmFuZ2UuY3BwCmluZGV4IDZiN2M3NjM2OTAwMmY4MDNjN2IxNTg2OGE2Y2U3MzMwZjY3Mjg1ZDQu
LjVjMWFkOGUwZmY3MDQzMDZiYzUzYmRhMWRlNWEzNzY0NDM0ZWMwYjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvU3RlcFJhbmdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L1N0ZXBSYW5nZS5jcHAKQEAgLTMzLDI2ICszMywzOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKK3N0YXRpYyBjb25zdCBpbnQgcmFuZ2VEZWZh
dWx0TWluaW11bSA9IDA7CitzdGF0aWMgY29uc3QgaW50IHJhbmdlRGVmYXVsdE1heGltdW0gPSAx
MDA7CitzdGF0aWMgY29uc3QgaW50IHJhbmdlRGVmYXVsdFN0ZXAgPSAxOworCiBTdGVwUmFuZ2U6
OlN0ZXBSYW5nZShjb25zdCBIVE1MSW5wdXRFbGVtZW50KiBlbGVtZW50KQogewotICAgIHN0ZXAg
PSAxOworICAgIHN0ZXAgPSByYW5nZURlZmF1bHRTdGVwOwogICAgIGNvbnN0IEF0b21pY1N0cmlu
ZyYgcHJlY2lzaW9uVmFsdWUgPSBlbGVtZW50LT5mYXN0R2V0QXR0cmlidXRlKHByZWNpc2lvbkF0
dHIpOwogICAgIGlmICghcHJlY2lzaW9uVmFsdWUuaXNOdWxsKCkpCiAgICAgICAgIGhhc1N0ZXAg
PSAhZXF1YWxJZ25vcmluZ0Nhc2UocHJlY2lzaW9uVmFsdWUsICJmbG9hdCIpOwogICAgIGVsc2UK
ICAgICAgICAgaGFzU3RlcCA9IGVsZW1lbnQtPmdldEFsbG93ZWRWYWx1ZVN0ZXAoJnN0ZXApOwog
Ci0gICAgbWF4aW11bSA9IGVsZW1lbnQtPm1heGltdW0oKTsKLSAgICBtaW5pbXVtID0gZWxlbWVu
dC0+bWluaW11bSgpOworICAgIGlmICghcGFyc2VUb0RlY2ltYWxGb3JOdW1iZXJUeXBlKGVsZW1l
bnQtPmZhc3RHZXRBdHRyaWJ1dGUobWluQXR0ciksICZtaW5pbXVtKSkKKyAgICAgICAgbWluaW11
bSA9IHJhbmdlRGVmYXVsdE1pbmltdW07CisKKyAgICBpZiAoIXBhcnNlVG9EZWNpbWFsRm9yTnVt
YmVyVHlwZShlbGVtZW50LT5mYXN0R2V0QXR0cmlidXRlKG1heEF0dHIpLCAmbWF4aW11bSkpCisg
ICAgICAgIG1heGltdW0gPSByYW5nZURlZmF1bHRNYXhpbXVtOworCisgICAgLy8gQSByZW1lZHkg
Zm9yIHRoZSBpbmNvbnNpc3RlbnQgbWluL21heCB2YWx1ZXMuCisgICAgLy8gU2V0cyB0aGUgbWF4
aW11bSB0byB0aGUgZGVmYXVsdCBvciB0aGUgbWluaW11bSB2YWx1ZS4KKyAgICBpZiAobWF4aW11
bSA8IG1pbmltdW0pCisgICAgICAgIG1heGltdW0gPSBzdGQ6Om1heChtaW5pbXVtLCBEZWNpbWFs
KHJhbmdlRGVmYXVsdE1heGltdW0pKTsKIH0KIAotZG91YmxlIFN0ZXBSYW5nZTo6Y2xhbXBWYWx1
ZShkb3VibGUgdmFsdWUpCitEZWNpbWFsIFN0ZXBSYW5nZTo6Y2xhbXBWYWx1ZShjb25zdCBEZWNp
bWFsJiB2YWx1ZSkKIHsKLSAgICBkb3VibGUgY2xhbXBlZFZhbHVlID0gbWF4KG1pbmltdW0sIG1p
bih2YWx1ZSwgbWF4aW11bSkpOworICAgIERlY2ltYWwgY2xhbXBlZFZhbHVlID0gbWF4KG1pbmlt
dW0sIG1pbih2YWx1ZSwgbWF4aW11bSkpOwogICAgIGlmICghaGFzU3RlcCkKICAgICAgICAgcmV0
dXJuIGNsYW1wZWRWYWx1ZTsKICAgICAvLyBSb3VuZHMgY2xhbXBlZFZhbHVlIHRvIG1pbmltdW0g
KyBOICogc3RlcC4KLSAgICBjbGFtcGVkVmFsdWUgPSBtaW5pbXVtICsgcm91bmQoKGNsYW1wZWRW
YWx1ZSAtIG1pbmltdW0pIC8gc3RlcCkgKiBzdGVwOworICAgIGNsYW1wZWRWYWx1ZSA9IG1pbmlt
dW0gKyAoKGNsYW1wZWRWYWx1ZSAtIG1pbmltdW0pIC8gc3RlcCkucm91bmQoKSAqIHN0ZXA7CiAg
ICAgaWYgKGNsYW1wZWRWYWx1ZSA+IG1heGltdW0pCiAgICAgICAgY2xhbXBlZFZhbHVlIC09IHN0
ZXA7CiAgICAgQVNTRVJUKGNsYW1wZWRWYWx1ZSA+PSBtaW5pbXVtKTsKQEAgLTYwLDI2ICs3Miwy
NCBAQCBkb3VibGUgU3RlcFJhbmdlOjpjbGFtcFZhbHVlKGRvdWJsZSB2YWx1ZSkKICAgICByZXR1
cm4gY2xhbXBlZFZhbHVlOwogfQogCi1kb3VibGUgU3RlcFJhbmdlOjpjbGFtcFZhbHVlKGNvbnN0
IFN0cmluZyYgc3RyaW5nVmFsdWUpCitEZWNpbWFsIFN0ZXBSYW5nZTo6Y2xhbXBWYWx1ZShjb25z
dCBTdHJpbmcmIHN0cmluZ1ZhbHVlKQogewotICAgIGRvdWJsZSB2YWx1ZTsKLSAgICBib29sIHBh
cnNlU3VjY2VzcyA9IHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKHN0cmluZ1ZhbHVlLCAmdmFs
dWUpOwotICAgIGlmICghcGFyc2VTdWNjZXNzKQotICAgICAgICB2YWx1ZSA9IChtaW5pbXVtICsg
bWF4aW11bSkgLyAyOwotICAgIHJldHVybiBjbGFtcFZhbHVlKHZhbHVlKTsKKyAgICBEZWNpbWFs
IHZhbHVlOworICAgIHJldHVybiBwYXJzZVRvRGVjaW1hbEZvck51bWJlclR5cGUoc3RyaW5nVmFs
dWUsICZ2YWx1ZSkgPyBjbGFtcFZhbHVlKHZhbHVlKSA6IGRlZmF1bHRWYWx1ZSgpOwogfQogCi1k
b3VibGUgU3RlcFJhbmdlOjp2YWx1ZUZyb21FbGVtZW50KEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1l
bnQsIGJvb2wqIHdhc0NsYW1wZWQpCitEZWNpbWFsIFN0ZXBSYW5nZTo6dmFsdWVGcm9tRWxlbWVu
dChIVE1MSW5wdXRFbGVtZW50KiBlbGVtZW50LCBib29sKiB3YXNDbGFtcGVkKQogewotICAgIGRv
dWJsZSBvbGRWYWx1ZTsKLSAgICBib29sIHBhcnNlU3VjY2VzcyA9IHBhcnNlVG9Eb3VibGVGb3JO
dW1iZXJUeXBlKGVsZW1lbnQtPnZhbHVlKCksICZvbGRWYWx1ZSk7Ci0gICAgaWYgKCFwYXJzZVN1
Y2Nlc3MpCi0gICAgICAgIG9sZFZhbHVlID0gKG1pbmltdW0gKyBtYXhpbXVtKSAvIDI7Ci0gICAg
ZG91YmxlIG5ld1ZhbHVlID0gY2xhbXBWYWx1ZShvbGRWYWx1ZSk7CisgICAgRGVjaW1hbCBvbGRW
YWx1ZTsKKyAgICBpZiAoIXBhcnNlVG9EZWNpbWFsRm9yTnVtYmVyVHlwZShlbGVtZW50LT52YWx1
ZSgpLCAmb2xkVmFsdWUpKSB7CisgICAgICAgIGlmICh3YXNDbGFtcGVkKQorICAgICAgICAgICAg
Kndhc0NsYW1wZWQgPSB0cnVlOworICAgICAgICByZXR1cm4gZGVmYXVsdFZhbHVlKCk7CisgICAg
fQogCisgICAgY29uc3QgRGVjaW1hbCBuZXdWYWx1ZSA9IGNsYW1wVmFsdWUob2xkVmFsdWUpOwog
ICAgIGlmICh3YXNDbGFtcGVkKQotICAgICAgICAqd2FzQ2xhbXBlZCA9ICFwYXJzZVN1Y2Nlc3Mg
fHwgbmV3VmFsdWUgIT0gb2xkVmFsdWU7Ci0KKyAgICAgICAgKndhc0NsYW1wZWQgPSBuZXdWYWx1
ZSAhPSBvbGRWYWx1ZTsKICAgICByZXR1cm4gbmV3VmFsdWU7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvU3RlcFJhbmdlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1N0ZXBS
YW5nZS5oCmluZGV4IDJmYTEzOTNjNTUyYWUxMDAyZTc0NDQxZDZmYWQxMmRlZTRjYmRiYzYuLjgx
YjkyZGMyMjc2MzE1YjZjYWMzYjc4NzJhMmYwZTA1ZWQ2ZmU1ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvU3RlcFJhbmdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9TdGVw
UmFuZ2UuaApAQCAtMjEsNiArMjEsNyBAQAogI2lmbmRlZiBTdGVwUmFuZ2VfaAogI2RlZmluZSBT
dGVwUmFuZ2VfaAogCisjaW5jbHVkZSA8RGVjaW1hbC5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKQEAgLTMyLDIyICszMywyMiBAQCBj
bGFzcyBTdGVwUmFuZ2UgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFN0ZXBSYW5nZSk7CiBw
dWJsaWM6CiAgICAgYm9vbCBoYXNTdGVwOwotICAgIGRvdWJsZSBzdGVwOwotICAgIGRvdWJsZSBt
aW5pbXVtOwotICAgIGRvdWJsZSBtYXhpbXVtOyAvLyBtYXhpbXVtIG11c3QgYmUgPj0gbWluaW11
bS4KKyAgICBEZWNpbWFsIHN0ZXA7CisgICAgRGVjaW1hbCBtaW5pbXVtOworICAgIERlY2ltYWwg
bWF4aW11bTsgLy8gbWF4aW11bSBtdXN0IGJlID49IG1pbmltdW0uCiAKICAgICBleHBsaWNpdCBT
dGVwUmFuZ2UoY29uc3QgSFRNTElucHV0RWxlbWVudCopOwotICAgIGRvdWJsZSBjbGFtcFZhbHVl
KGRvdWJsZSB2YWx1ZSk7Ci0gICAgZG91YmxlIGNsYW1wVmFsdWUoY29uc3QgU3RyaW5nJiBzdHJp
bmdWYWx1ZSk7CisgICAgRGVjaW1hbCBjbGFtcFZhbHVlKGNvbnN0IERlY2ltYWwmIHZhbHVlKTsK
KyAgICBEZWNpbWFsIGNsYW1wVmFsdWUoY29uc3QgU3RyaW5nJiBzdHJpbmdWYWx1ZSk7CiAKICAg
ICAvLyBDbGFtcCB0aGUgbWlkZGxlIHZhbHVlIGFjY29yZGluZyB0byB0aGUgc3RlcAotICAgIGRv
dWJsZSBkZWZhdWx0VmFsdWUoKQorICAgIERlY2ltYWwgZGVmYXVsdFZhbHVlKCkKICAgICB7CiAg
ICAgICAgIHJldHVybiBjbGFtcFZhbHVlKChtaW5pbXVtICsgbWF4aW11bSkgLyAyKTsKICAgICB9
CiAKICAgICAvLyBNYXAgdmFsdWUgaW50byAwLTEgcmFuZ2UKLSAgICBkb3VibGUgcHJvcG9ydGlv
bkZyb21WYWx1ZShkb3VibGUgdmFsdWUpCisgICAgRGVjaW1hbCBwcm9wb3J0aW9uRnJvbVZhbHVl
KGNvbnN0IERlY2ltYWwmIHZhbHVlKQogICAgIHsKICAgICAgICAgaWYgKG1pbmltdW0gPT0gbWF4
aW11bSkKICAgICAgICAgICAgIHJldHVybiAwOwpAQCAtNTYsMTIgKzU3LDEyIEBAIHB1YmxpYzoK
ICAgICB9CiAKICAgICAvLyBNYXAgZnJvbSAwLTEgcmFuZ2UgdG8gdmFsdWUKLSAgICBkb3VibGUg
dmFsdWVGcm9tUHJvcG9ydGlvbihkb3VibGUgcHJvcG9ydGlvbikKKyAgICBEZWNpbWFsIHZhbHVl
RnJvbVByb3BvcnRpb24oY29uc3QgRGVjaW1hbCYgcHJvcG9ydGlvbikKICAgICB7CiAgICAgICAg
IHJldHVybiBtaW5pbXVtICsgcHJvcG9ydGlvbiAqIChtYXhpbXVtIC0gbWluaW11bSk7CiAgICAg
fQogCi0gICAgZG91YmxlIHZhbHVlRnJvbUVsZW1lbnQoSFRNTElucHV0RWxlbWVudCosIGJvb2wq
IHdhc0NsYW1wZWQgPSAwKTsKKyAgICBEZWNpbWFsIHZhbHVlRnJvbUVsZW1lbnQoSFRNTElucHV0
RWxlbWVudCosIGJvb2wqIHdhc0NsYW1wZWQgPSAwKTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAKaW5kZXggYjg2MDIwMjVlOGEy
ZDM4MjI1ODFkZGUwM2ZlNTgxZDY1Y2M2OTBjOS4uNzU0ZTI5ZjcwYWJjZDYxMTM3ZDUzOTgyODc2
ZjRjMDkzZGU2MjkyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRN
TFBhcnNlcklkaW9tcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBh
cnNlcklkaW9tcy5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAKKyNpbmNsdWRlICJEZWNpbWFsLmgiCiAjaW5j
bHVkZSA8bGltaXRzPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3Rm
L2R0b2EuaD4KQEAgLTY2LDYgKzY3LDE2IEBAIFN0cmluZyBzZXJpYWxpemVGb3JOdW1iZXJUeXBl
KGRvdWJsZSBudW1iZXIpCiAgICAgcmV0dXJuIFN0cmluZyhudW1iZXJUb1N0cmluZyhudW1iZXIs
IGJ1ZmZlcikpOwogfQogCitib29sIHBhcnNlVG9EZWNpbWFsRm9yTnVtYmVyVHlwZShjb25zdCBT
dHJpbmcmIHN0cmluZywgRGVjaW1hbCogcmVzdWx0KQoreworICAgIC8vIFBhcnNlIHN0cmluZyB3
aXRoIEhUTUw1IHNwZWNpZmljYXRpb24gZm9yIHN5bnRheCBhbmQgcmFuZ2Ugb2YgdmFsdWUuCisg
ICAgZG91YmxlIGRvdWJsZVJlc3VsdDsKKyAgICBpZiAoIXBhcnNlVG9Eb3VibGVGb3JOdW1iZXJU
eXBlKHN0cmluZywgJmRvdWJsZVJlc3VsdCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAq
cmVzdWx0ID0gRGVjaW1hbDo6ZnJvbVN0cmluZyhzdHJpbmcpOworICAgIHJldHVybiB0cnVlOwor
fQorCiBib29sIHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKGNvbnN0IFN0cmluZyYgc3RyaW5n
LCBkb3VibGUqIHJlc3VsdCkKIHsKICAgICAvLyBTZWUgSFRNTDUgMi41LjQuMyBgUmVhbCBudW1i
ZXJzLicKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJ
ZGlvbXMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuaApp
bmRleCAxOWNkMjc2OTM5ZWNhNjNiOWRkMzcxNTllMzU1NzdhZTdkZDFiYWY5Li4zNjI1NDdiNTBi
ZDFjZTZjOTQ4NzhmNmJlYTQxMWI0ZWExZDMyMDE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oCkBAIC0zMCw2ICszMCw4IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorY2xhc3MgRGVjaW1hbDsKKwogLy8gU3BhY2UgY2hhcmFjdGVycyBhcyBk
ZWZpbmVkIGJ5IHRoZSBIVE1MIHNwZWNpZmljYXRpb24uCiBib29sIGlzSFRNTFNwYWNlKFVDaGFy
KTsKIGJvb2wgaXNIVE1MTGluZUJyZWFrKFVDaGFyKTsKQEAgLTQ3LDYgKzQ5LDkgQEAgU3RyaW5n
IHNlcmlhbGl6ZUZvck51bWJlclR5cGUoZG91YmxlKTsKIGJvb2wgcGFyc2VUb0RvdWJsZUZvck51
bWJlclR5cGUoY29uc3QgU3RyaW5nJiwgZG91YmxlKik7CiBib29sIHBhcnNlVG9Eb3VibGVGb3JO
dW1iZXJUeXBlV2l0aERlY2ltYWxQbGFjZXMoY29uc3QgU3RyaW5nJiwgZG91YmxlKiwgdW5zaWdu
ZWQqKTsKIAorLy8gQ29udmVydCB0aGUgc3BlY2lmaWVkIHN0cmluZyB0byBEZWNpbWFsIGFzIHNp
bWlsYXIgdG8gcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUuCitib29sIHBhcnNlVG9EZWNpbWFs
Rm9yTnVtYmVyVHlwZShjb25zdCBTdHJpbmcmLCBEZWNpbWFsKik7CisKIC8vIGh0dHA6Ly93d3cu
d2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvI3J1bGVzLWZvci1wYXJzaW5n
LWludGVnZXJzCiBib29sIHBhcnNlSFRNTEludGVnZXIoY29uc3QgU3RyaW5nJiwgaW50Jik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3Bw
CmluZGV4IGY4YWYzOWY1MTA0MGRkZDVhZTkxODQ3ZWEyOTUzNWRmZmI3NjdhOTkuLjJjY2Q2MmM1
ZTY2YmM5MDU0YTAyZGY2ZmQ1YWMzZTJhZGI0N2RjNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcApAQCAtNTEsNyArNTEsNyBAQCB1
c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWlubGluZSBzdGF0
aWMgZG91YmxlIHNsaWRlclBvc2l0aW9uKEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQpCitpbmxp
bmUgc3RhdGljIERlY2ltYWwgc2xpZGVyUG9zaXRpb24oSFRNTElucHV0RWxlbWVudCogZWxlbWVu
dCkKIHsKICAgICBTdGVwUmFuZ2UgcmFuZ2UoZWxlbWVudCk7CiAgICAgcmV0dXJuIHJhbmdlLnBy
b3BvcnRpb25Gcm9tVmFsdWUocmFuZ2UudmFsdWVGcm9tRWxlbWVudChlbGVtZW50KSk7CkBAIC0x
MDksNyArMTA5LDkgQEAgdm9pZCBSZW5kZXJTbGlkZXJUaHVtYjo6bGF5b3V0KCkKICAgICBIVE1M
SW5wdXRFbGVtZW50KiBpbnB1dCA9IG5vZGUoKS0+c2hhZG93QW5jZXN0b3JOb2RlKCktPnRvSW5w
dXRFbGVtZW50KCk7CiAgICAgYm9vbCBpc1ZlcnRpY2FsID0gc3R5bGUoKS0+YXBwZWFyYW5jZSgp
ID09IFNsaWRlclRodW1iVmVydGljYWxQYXJ0IHx8IHN0eWxlKCktPmFwcGVhcmFuY2UoKSA9PSBN
ZWRpYVZvbHVtZVNsaWRlclRodW1iUGFydDsKIAotICAgIGRvdWJsZSBmcmFjdGlvbiA9IHNsaWRl
clBvc2l0aW9uKGlucHV0KSAqIDEwMDsKKyAgICBkb3VibGUgZnJhY3Rpb247CisgICAgcGFyc2VU
b0RvdWJsZUZvck51bWJlclR5cGUoKHNsaWRlclBvc2l0aW9uKGlucHV0KSAqIDEwMCkudG9TdHJp
bmcoKSwgJmZyYWN0aW9uKTsKKyAgICBBU1NFUlQoaXNmaW5pdGUoZnJhY3Rpb24pKTsKICAgICBp
ZiAoaXNWZXJ0aWNhbCkKICAgICAgICAgc3R5bGUoKS0+c2V0VG9wKExlbmd0aCgxMDAgLSBmcmFj
dGlvbiwgUGVyY2VudCkpOwogICAgIGVsc2UgaWYgKHN0eWxlKCktPmlzTGVmdFRvUmlnaHREaXJl
Y3Rpb24oKSkKQEAgLTIzNiwxMyArMjM4LDEzIEBAIHZvaWQgU2xpZGVyVGh1bWJFbGVtZW50Ojpz
ZXRQb3NpdGlvbkZyb21Qb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIFN0ZXBSYW5nZSByYW5nZShpbnB1dCk7Ci0gICAgZG91YmxlIGZyYWN0aW9u
ID0gc3RhdGljX2Nhc3Q8ZG91YmxlPihwb3NpdGlvbikgLyB0cmFja1NpemU7CisgICAgRGVjaW1h
bCBmcmFjdGlvbiA9IERlY2ltYWwocG9zaXRpb24pIC8gdHJhY2tTaXplOwogICAgIGlmIChpc1Zl
cnRpY2FsIHx8ICFyZW5kZXJCb3goKS0+c3R5bGUoKS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigp
KQotICAgICAgICBmcmFjdGlvbiA9IDEgLSBmcmFjdGlvbjsKLSAgICBkb3VibGUgdmFsdWUgPSBy
YW5nZS5jbGFtcFZhbHVlKHJhbmdlLnZhbHVlRnJvbVByb3BvcnRpb24oZnJhY3Rpb24pKTsKKyAg
ICAgICAgZnJhY3Rpb24gPSBEZWNpbWFsKDEpIC0gZnJhY3Rpb247CisgICAgY29uc3QgRGVjaW1h
bCB2YWx1ZSA9IHJhbmdlLmNsYW1wVmFsdWUocmFuZ2UudmFsdWVGcm9tUHJvcG9ydGlvbihmcmFj
dGlvbikpOwogCiAgICAgLy8gRklYTUU6IFRoaXMgaXMgbm8gbG9uZ2VyIGJlaW5nIHNldCBmcm9t
IHJlbmRlcmVyLiBDb25zaWRlciB1cGRhdGluZyB0aGUgbWV0aG9kIG5hbWUuCi0gICAgaW5wdXQt
PnNldFZhbHVlRnJvbVJlbmRlcmVyKHNlcmlhbGl6ZUZvck51bWJlclR5cGUodmFsdWUpKTsKKyAg
ICBpbnB1dC0+c2V0VmFsdWVGcm9tUmVuZGVyZXIodmFsdWUudG9TdHJpbmcoKSk7CiAgICAgcmVu
ZGVyZXIoKS0+c2V0TmVlZHNMYXlvdXQodHJ1ZSk7CiAgICAgaW5wdXQtPmRpc3BhdGNoRm9ybUNv
bnRyb2xDaGFuZ2VFdmVudCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vRGVjaW1hbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EZWNpbWFsLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5hYjI4MzczM2U0ZGUxMzQ4OGU1MWE2NTExNTNiOWVjODYxMzY0NTk4Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGVjaW1hbC5jcHAKQEAgLTAsMCAr
MSwxMDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRlY2ltYWwuaCIKKworI2lu
Y2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDxmbG9hdC5oPgorCisjaW5jbHVkZSA8d3RmL0Fz
c2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdCdWlsZGVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNl
IERlY2ltYWxQcml2YXRlIHsKKwordXNpbmcgbmFtZXNwYWNlIHN0ZDsKKworc3RhdGljIGNvbnN0
IGludCBQcmVjaXNpb25PZkV4cG9uZW50Qml0cyA9IDExOworc3RhdGljIGNvbnN0IGludCBQcmVj
aXNpb25PZkNvZWZmaWNpZW50Qml0cyA9IDY0Oworc3RhdGljIGNvbnN0IHVpbnQ2NF90IE1heENv
ZWZmaWNpZW50ID0gMHgxNjM0NTc4NUQ4OUZGRkZ1bGw7IC8vIDk5OTk5OTk5OTk5OTk5OTk5OTsg
Ly8gMTggOSdzCisKK3N0YXRpYyBjb25zdCB1aW50MzJfdCBFeHBvbmVudE1hc2sgPSAweDdGRjsK
Kworc3RhdGljIGNvbnN0IHVpbnQzMl90IE5lZ2F0aXZlSW5maW5pdHlQYXR0ZXJuID0gdWludDMy
X3QoMHg4MDAwMDdGRik7CitzdGF0aWMgY29uc3QgdWludDMyX3QgUG9zaXRpdmVJbmZpbml0eVBh
dHRlcm4gPSB1aW50MzJfdCgweDAwMDAwN0ZGKTsKKworc3RhdGljIGNvbnN0IHVpbnQzMl90IE5l
Z2F0aXZlUXVpZXROYU5QYXR0ZXJuID0gdWludDMyX3QoMHg4MDAwMEZGRik7CitzdGF0aWMgY29u
c3QgdWludDMyX3QgUG9zaXRpdmVRdWlldE5hTlBhdHRlcm4gPSB1aW50MzJfdCgweDAwMDAwRkZG
KTsKKworc3RhdGljIGNvbnN0IHVpbnQzMl90IE5lZ2F0aXZlWmVyb1BhdHRlcm4gPSB1aW50MzJf
dCgweDgwMDAwM0ZGKTsKK3N0YXRpYyBjb25zdCB1aW50MzJfdCBQb3NpdGl2ZVplcm9QYXR0ZXJu
ID0gdWludDMyX3QoMHgwMDAwMDNGRik7CisKK3N0YXRpYyBjb25zdCB1aW50MzJfdCBOZWdhdGl2
ZVBhdHRlcm4gPSB1aW50MzJfdCgweDgwMDAwMDAwKTsKK3N0YXRpYyBjb25zdCB1aW50MzJfdCBQ
b3NpdGl2ZVBhdHRlcm4gPSAwOworCisvLyBUaGlzIGNsYXNzIGhhbmRsZXMgRGVjaW1hbCBzcGVj
aWFsIHZhbHVlcy4KK2NsYXNzIFNwZWNpYWxWYWx1ZUhhbmRsZXIgeworICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKFNwZWNpYWxWYWx1ZUhhbmRsZXIpOworcHVibGljOgorICAgIGVudW0gSGFuZGxl
UmVzdWx0IHsKKyAgICAgICAgQm90aEZpbml0ZSwKKyAgICAgICAgQm90aGluZmluaXR5LAorICAg
ICAgICBFaXRoZXJOYU4sCisgICAgICAgIExoc0lzaW5maW5pdHksCisgICAgICAgIFJoc0lzaW5m
aW5pdHksCisgICAgfTsKKworICAgIFNwZWNpYWxWYWx1ZUhhbmRsZXIoY29uc3QgRGVjaW1hbCYs
IGNvbnN0IERlY2ltYWwmKTsKKyAgICBIYW5kbGVSZXN1bHQgaGFuZGxlKCk7CisgICAgRGVjaW1h
bCB2YWx1ZSgpIGNvbnN0OworCitwcml2YXRlOgorICAgIGVudW0gUmVzdWx0IHsKKyAgICAgICAg
UmVzdWx0SXNMaHMsCisgICAgICAgIFJlc3VsdElzUmhzLAorICAgICAgICBSZXN1bHRJc1Vua25v
d24sCisgICAgfTsKKworICAgIGNvbnN0IERlY2ltYWwmIG1fbGhzOworICAgIFJlc3VsdCBtX3Jl
c3VsdDsKKyAgICBjb25zdCBEZWNpbWFsJiBtX3JoczsKK307CisKKy8vIFRoaXMgY2xhc3MgaXMg
dXNlZCBmb3IgMTI4IGJpdCB1bnNpZ25lZCBpbnRlZ2VyIGFyaXRobWV0aWMuCitjbGFzcyBVSW50
MTI4IHsKK3B1YmxpYzoKKyAgICBVSW50MTI4KHVpbnQ2NF90LCB1aW50NjRfdCk7CisKKyAgICBV
SW50MTI4JiBvcGVyYXRvciAvPSh1aW50MzJfdCk7CisKKyAgICB1aW50NjRfdCBoaWdoKCkgY29u
c3QgeyByZXR1cm4gbV9oaWdoOyB9CisgICAgdWludDY0X3QgbG93KCkgY29uc3QgeyByZXR1cm4g
bV9sb3c7IH0KKworICAgIHN0YXRpYyBVSW50MTI4IG11bHRpcGx5KHVpbnQ2NF90LCB1aW50NjRf
dCk7CisKK3ByaXZhdGU6CisgICAgYm9vbCBpc1plcm8oKSBjb25zdCB7IHJldHVybiAhbV9sb3cg
JiYgIW1faGlnaDsgfQorCisgICAgdWludDY0X3QgbV9oaWdoOworICAgIHVpbnQ2NF90IG1fbG93
OworfTsKKworc3RhdGljIGludCBjb3VudERpZ2l0cyh1aW50NjRfdCB4KQoreworICAgIGludCBu
dW1iZXJPZkRpZ2l0cyA9IDA7CisgICAgdWludDY0X3QgcG93ZXJPZjEwID0gMTsKKyAgICB3aGls
ZSAoeCA+PSBwb3dlck9mMTApIHsKKyAgICAgICAgKytudW1iZXJPZkRpZ2l0czsKKyAgICAgICAg
aWYgKHBvd2VyT2YxMCA+PSB1aW50NjRfdCgtMSkgLyAxMCkKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBwb3dlck9mMTAgKj0gMTA7CisgICAgfQorICAgIHJldHVybiBudW1iZXJPZkRpZ2l0
czsKK30KKworc3RhdGljIHVpbnQ2NF90IG11bHRpcGx5SGlnaCh1aW50NjRfdCB1LCB1aW50NjRf
dCB2KQoreworICAgIGNvbnN0IGludCBuID0gNjQ7CisgICAgY29uc3QgaW50IG4yID0gbiAvIDI7
CisgICAgY29uc3QgdWludDY0X3QgbWFzayA9ICh1aW50NjRfdCgxKSA8PCBuMikgLSAxOworICAg
IHVpbnQ2NF90IHUwID0gdSAmIG1hc2s7CisgICAgdWludDY0X3QgdTEgPSB1ID4+IG4yOworICAg
IHVpbnQ2NF90IHYwID0gdiAmIG1hc2s7CisgICAgdWludDY0X3QgdjEgPSB2ID4+IG4yOworICAg
IHVpbnQ2NF90IHcwID0gdTAgKiB2MDsKKyAgICB1aW50NjRfdCB0dCA9IHUxICogdjAgKyAodzAg
Pj4gbjIpOworICAgIHVpbnQ2NF90IHcxID0gdHQgJiBtYXNrOworICAgIHVpbnQ2NF90IHcyID0g
dHQgPj4gbjI7CisgICAgdzEgPSB1MCAqIHYxICsgdzE7CisgICAgcmV0dXJuIHUxICogdjEgKyB3
MiArICh3MSA+PiBuMik7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdGF0aWMgVCBwb3dl
cihUIGNvbnN0IHgsIHVpbnQgbikKK3sKKyAgICBUIHkgPSAxOworICAgIFQgeiA9IHg7CisgICAg
Zm9yICg7OykgeworICAgICAgICBpZiAobiAmIDEpIHsKKyAgICAgICAgICAgIHkgPSB5ICogejsK
KyAgICAgICAgICAgIEFTU0VSVCh5ID49IHopOworICAgICAgICB9CisKKyAgICAgICAgbiA+Pj0g
MTsKKyAgICAgICAgaWYgKCFuKQorICAgICAgICAgICAgcmV0dXJuIHk7CisKKyAgICAgICAgeiA9
IHogKiB6OworICAgIH0KK30KKworc3RhdGljIHVpbnQ2NF90IHNjYWxlRG93bih1aW50NjRfdCB4
LCBpbnQgbikKK3sKKyAgICBBU1NFUlQobiA+PSAwKTsKKyAgICB3aGlsZSAobiA+IDAgJiYgeCkg
eworICAgICAgICB4IC89IDEwOworICAgICAgICAtLW47CisgICAgfQorICAgIHJldHVybiB4Owor
fQorCitzdGF0aWMgdWludDY0X3Qgc2NhbGVVcCh1aW50NjRfdCB4LCBpbnQgbikKK3sKKyAgICBB
U1NFUlQobiA+PSAwKTsKKyAgICBBU1NFUlQobiA8IERlY2ltYWw6OlByZWNpc2lvbik7CisgICAg
dWludDY0X3QgcmVzdWx0ID0geCAqIHBvd2VyKHVpbnQ2NF90KDEwKSwgbik7CisgICAgQVNTRVJU
KHJlc3VsdCA+PSB4KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitTcGVjaWFsVmFsdWVIYW5k
bGVyOjpTcGVjaWFsVmFsdWVIYW5kbGVyKGNvbnN0IERlY2ltYWwmIGxocywgY29uc3QgRGVjaW1h
bCYgcmhzKQorICAgIDogbV9saHMobGhzKSwgbV9yZXN1bHQoUmVzdWx0SXNVbmtub3duKSwgbV9y
aHMocmhzKQoreworfQorCitTcGVjaWFsVmFsdWVIYW5kbGVyOjpIYW5kbGVSZXN1bHQgU3BlY2lh
bFZhbHVlSGFuZGxlcjo6aGFuZGxlKCkKK3sKKyAgICBpZiAobV9saHMuaXNGaW5pdGUoKSAmJiBt
X3Jocy5pc0Zpbml0ZSgpKQorICAgICAgICByZXR1cm4gQm90aEZpbml0ZTsKKworICAgIGNvbnN0
IERlY2ltYWw6OkllZWVDbGFzcyBsaHNDbGFzcyA9IG1fbGhzLmllZWVDbGFzcygpOworICAgIGNv
bnN0IERlY2ltYWw6OkllZWVDbGFzcyByaHNDbGFzcyA9IG1fcmhzLmllZWVDbGFzcygpOworICAg
IGlmIChsaHNDbGFzcyA9PSBEZWNpbWFsOjpDbGFzc1F1aWV0TmFOKSB7CisgICAgICAgIG1fcmVz
dWx0ID0gUmVzdWx0SXNMaHM7CisgICAgICAgIHJldHVybiBFaXRoZXJOYU47CisgICAgIH0KKwor
ICAgIGlmIChyaHNDbGFzcyA9PSBEZWNpbWFsOjpDbGFzc1F1aWV0TmFOKSB7CisgICAgICAgIG1f
cmVzdWx0ID0gUmVzdWx0SXNSaHM7CisgICAgICAgIHJldHVybiBFaXRoZXJOYU47CisgICAgIH0K
KworICAgIGlmIChsaHNDbGFzcyA9PSBEZWNpbWFsOjpDbGFzc0luZmluaXR5KQorICAgICAgICBy
ZXR1cm4gcmhzQ2xhc3MgPT0gRGVjaW1hbDo6Q2xhc3NJbmZpbml0eSA/IEJvdGhpbmZpbml0eSA6
IExoc0lzaW5maW5pdHk7CisKKyAgICBpZiAocmhzQ2xhc3MgPT0gRGVjaW1hbDo6Q2xhc3NJbmZp
bml0eSkKKyAgICAgICAgcmV0dXJuIFJoc0lzaW5maW5pdHk7CisKKyAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICByZXR1cm4gQm90aEZpbml0ZTsKK30KKworRGVjaW1hbCBTcGVjaWFsVmFs
dWVIYW5kbGVyOjp2YWx1ZSgpIGNvbnN0Cit7CisgICAgc3dpdGNoIChtX3Jlc3VsdCkgeworICAg
IGNhc2UgUmVzdWx0SXNMaHM6CisgICAgICAgIHJldHVybiBtX2xoczsKKyAgICBjYXNlIFJlc3Vs
dElzUmhzOgorICAgICAgICByZXR1cm4gbV9yaHM7CisgICAgY2FzZSBSZXN1bHRJc1Vua25vd246
CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJl
dHVybiBtX2xoczsKKyAgICB9Cit9CisKK1VJbnQxMjg6OlVJbnQxMjgodWludDY0X3QgbG93LCB1
aW50NjRfdCBoaWdoKQorICAgIDogbV9oaWdoKGhpZ2gpLCBtX2xvdyhsb3cpCit7Cit9CisKK1VJ
bnQxMjgmIFVJbnQxMjg6Om9wZXJhdG9yIC89KGNvbnN0IHVpbnQzMl90IGRpdmlzb3IpCit7Cisg
ICAgaWYgKCFtX2hpZ2gpIHsKKyAgICAgICAgbV9sb3cgLz0gZGl2aXNvcjsKKyAgICAgICAgcmV0
dXJuICp0aGlzOworICAgIH0KKworICAgIHVpbnQzMl90IGRpdmlkZW5kWzRdOworICAgIGRpdmlk
ZW5kWzBdID0gdWludDMyX3QobV9sb3cgJiB1aW50MzJfdCgtMSkpOworICAgIGRpdmlkZW5kWzFd
ID0gdWludDMyX3QobV9sb3cgPj4gMzIpOworICAgIGRpdmlkZW5kWzJdID0gdWludDMyX3QobV9o
aWdoICYgdWludDMyX3QoLTEpKTsKKyAgICBkaXZpZGVuZFszXSA9IHVpbnQzMl90KG1faGlnaCA+
PiAzMik7CisKKyAgICB1aW50MzJfdCBxdW90aWVudFs0XTsKKyAgICB1aW50MzJfdCByZW1haW5k
ZXIgPSAwOworICAgIGZvciAoaW50IGkgPSAzOyBpID49IDA7IC0taSkgeworICAgICAgICBjb25z
dCB1aW50NjRfdCB3b3JrID0gKHVpbnQ2NF90KHJlbWFpbmRlcikgPDwgMzIpIHwgZGl2aWRlbmRb
aV07CisgICAgICAgIHJlbWFpbmRlciA9IHVpbnQzMl90KHdvcmsgJSBkaXZpc29yKTsKKyAgICAg
ICAgcXVvdGllbnRbaV0gPSB1aW50MzJfdCh3b3JrIC8gZGl2aXNvcik7CisgICAgfQorICAgIG1f
bG93ID0gcXVvdGllbnRbMF0gfCAodWludDY0X3QocXVvdGllbnRbMV0pIDw8IDMyKTsKKyAgICBt
X2hpZ2ggPSBxdW90aWVudFsyXSB8ICh1aW50NjRfdChxdW90aWVudFszXSkgPDwgMzIpOworICAg
IHJldHVybiAqdGhpczsKK30KKworVUludDEyOCBVSW50MTI4OjptdWx0aXBseSh1aW50NjRfdCB1
LCB1aW50NjRfdCB2KQoreworICAgIHJldHVybiBVSW50MTI4KHUgKiB2LCBtdWx0aXBseUhpZ2go
dSwgdikpOworfQorCit9IC8vIERlY2ltYWxQcml2YXRlCisKK3VzaW5nIG5hbWVzcGFjZSBEZWNp
bWFsUHJpdmF0ZTsKKworRGVjaW1hbDo6RW5jb2RlZERhdGE6OkVuY29kZWREYXRhKHVpbnQzMl90
IHBhdHRlcm4pCisgICAgOiBtX2NvZWZmaWNpZW50KDApCisgICAgLCBtX3BhY2tlZEZpZWxkKHBh
dHRlcm4pCit7CisgICAgQVNTRVJUKChwYXR0ZXJuICYgUG9zaXRpdmVaZXJvUGF0dGVybikgPT0g
UG9zaXRpdmVaZXJvUGF0dGVybik7Cit9CisKK0RlY2ltYWw6OkVuY29kZWREYXRhOjpFbmNvZGVk
RGF0YSh1aW50NjRfdCBjb2VmZmljaWVudCwgY29uc3QgaW50IGV4cG9uZW50LCBjb25zdCBpbnQg
c2lnbikKK3sKKyAgICBpbnQgcmF3RXhwb25lbnQgPSBleHBvbmVudCArIEViaWFzOworICAgIGlm
ICh1aW50KHJhd0V4cG9uZW50KSA8IHVpbnQoRW1heCkpIHsKKyAgICAgICAgd2hpbGUgKGNvZWZm
aWNpZW50ID49IE1heENvZWZmaWNpZW50KSB7CisgICAgICAgICAgICBjb2VmZmljaWVudCAvPSAx
MDsKKyAgICAgICAgICAgICsrcmF3RXhwb25lbnQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBp
ZiAocmF3RXhwb25lbnQgPj0gRW1heCkgeworICAgICAgICBtX2NvZWZmaWNpZW50ID0gMDsKKyAg
ICAgICAgbV9wYWNrZWRGaWVsZCA9IHNpZ24gPyBOZWdhdGl2ZUluZmluaXR5UGF0dGVybiA6IFBv
c2l0aXZlSW5maW5pdHlQYXR0ZXJuOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYg
KHJhd0V4cG9uZW50IDwgMCkgeworICAgICAgICBtX2NvZWZmaWNpZW50ID0gMDsKKyAgICAgICAg
bV9wYWNrZWRGaWVsZCA9IHNpZ24gPyBOZWdhdGl2ZVplcm9QYXR0ZXJuIDogUG9zaXRpdmVaZXJv
UGF0dGVybjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fY29lZmZpY2llbnQgPSBj
b2VmZmljaWVudDsKKyAgICBtX3BhY2tlZEZpZWxkID0gcmF3RXhwb25lbnQgfCAoc2lnbiA/IE5l
Z2F0aXZlUGF0dGVybiA6IFBvc2l0aXZlUGF0dGVybik7Cit9CisKK3VpbnQ2NF90IERlY2ltYWw6
OkVuY29kZWREYXRhOjpjb2VmZmljaWVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29lZmZp
Y2llbnQ7Cit9CisKK2ludCBEZWNpbWFsOjpFbmNvZGVkRGF0YTo6ZXhwb25lbnQoKSBjb25zdAor
eworICAgIHJldHVybiByYXdFeHBvbmVudCgpIC0gRGVjaW1hbDo6RWJpYXM7Cit9CisKK2Jvb2wg
RGVjaW1hbDo6RW5jb2RlZERhdGE6OmlzRmluaXRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIWlz
U3BlY2lhbCgpOworfQorCitib29sIERlY2ltYWw6OkVuY29kZWREYXRhOjppc1NwZWNpYWwoKSBj
b25zdAoreworICAgIHJldHVybiByYXdFeHBvbmVudCgpID09IERlY2ltYWw6OkVtYXg7Cit9CisK
K2Jvb2wgRGVjaW1hbDo6RW5jb2RlZERhdGE6OmlzWmVybygpIGNvbnN0Cit7CisgICAgcmV0dXJu
IGlzRmluaXRlKCkgJiYgIW1fY29lZmZpY2llbnQ7Cit9CisKK2ludCBEZWNpbWFsOjpFbmNvZGVk
RGF0YTo6cmF3RXhwb25lbnQoKSBjb25zdAoreworICAgIHJldHVybiBpbnQobV9wYWNrZWRGaWVs
ZCAmIEV4cG9uZW50TWFzayk7Cit9CisKK2ludCBEZWNpbWFsOjpFbmNvZGVkRGF0YTo6c2lnbigp
IGNvbnN0Cit7CisgICAgcmV0dXJuIGludChtX3BhY2tlZEZpZWxkKSA8IDA7Cit9CisKK3ZvaWQg
RGVjaW1hbDo6RW5jb2RlZERhdGE6OnNldFNpZ24oY29uc3QgaW50IHNpZ24pCit7CisgICAgQVNT
RVJUKHVpbnQoc2lnbikgPD0gdWludCgxKSk7CisgICAgaWYgKHNpZ24pCisgICAgICAgIG1fcGFj
a2VkRmllbGQgfD0gdWludDMyX3QoMSkgPDwgMzE7CisgICAgZWxzZQorICAgICAgICBtX3BhY2tl
ZEZpZWxkICY9IH4odWludDMyX3QoMSkgPDwgMzEpOworfQorCitEZWNpbWFsOjpEZWNpbWFsKCkK
KyAgICA6IG1fZGF0YSgwLCAwLCAwKQoreworfQorCitEZWNpbWFsOjpEZWNpbWFsKGludDMyX3Qg
aTMyKQorICAgIDogbV9kYXRhKGkzMiA8IDAgPyAtaTMyIDogaTMyLCAwLCBpMzIgPCAwKQorewor
fQorCitEZWNpbWFsOjpEZWNpbWFsKHVpbnQ2NF90IGNvZWZmaWNpZW50LCBpbnQgZXhwb25lbnQs
IGludCBzaWduKQorICAgIDogbV9kYXRhKGNvZWZmaWNpZW50LCBleHBvbmVudCwgc2lnbikKK3sK
K30KKworRGVjaW1hbDo6RGVjaW1hbChjb25zdCBFbmNvZGVkRGF0YSYgZGF0YSkKKyAgICA6IG1f
ZGF0YShkYXRhKQoreworfQorCitEZWNpbWFsOjpEZWNpbWFsKGNvbnN0IERlY2ltYWwmIG90aGVy
KQorICAgIDogbV9kYXRhKG90aGVyLm1fZGF0YSkKK3sKK30KKworRGVjaW1hbCYgRGVjaW1hbDo6
b3BlcmF0b3IgPShjb25zdCBEZWNpbWFsJiBvdGhlcikKK3sKKyAgICBtX2RhdGEgPSBvdGhlci5t
X2RhdGE7CisgICAgcmV0dXJuICp0aGlzOworfQorCitEZWNpbWFsJiBEZWNpbWFsOjpvcGVyYXRv
ciArPShjb25zdCBEZWNpbWFsJiBvdGhlcikKK3sKKyAgICBtX2RhdGEgPSAoKnRoaXMgKyBvdGhl
cikubV9kYXRhOworICAgIHJldHVybiAqdGhpczsKK30KKworRGVjaW1hbCYgRGVjaW1hbDo6b3Bl
cmF0b3IgLT0oY29uc3QgRGVjaW1hbCYgb3RoZXIpCit7CisgICAgbV9kYXRhID0gKCp0aGlzIC0g
b3RoZXIpLm1fZGF0YTsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK0RlY2ltYWwmIERlY2ltYWw6
Om9wZXJhdG9yICo9KGNvbnN0IERlY2ltYWwmIG90aGVyKQoreworICAgIG1fZGF0YSA9ICgqdGhp
cyAqIG90aGVyKS5tX2RhdGE7CisgICAgcmV0dXJuICp0aGlzOworfQorCitEZWNpbWFsJiBEZWNp
bWFsOjpvcGVyYXRvciAvPShjb25zdCBEZWNpbWFsJiBvdGhlcikKK3sKKyAgICBtX2RhdGEgPSAo
KnRoaXMgLyBvdGhlcikubV9kYXRhOworICAgIHJldHVybiAqdGhpczsKK30KKworRGVjaW1hbCBE
ZWNpbWFsOjpvcGVyYXRvciArKGNvbnN0IERlY2ltYWwmIHJocykgY29uc3QKK3sKKyAgICBjb25z
dCBEZWNpbWFsJiBsaHMgPSAqdGhpczsKKyAgICBjb25zdCBpbnQgbGhzU2lnbiA9IGxocy5zaWdu
KCk7CisgICAgY29uc3QgaW50IHJoc1NpZ24gPSByaHMuc2lnbigpOworCisgICAgU3BlY2lhbFZh
bHVlSGFuZGxlciBoYW5kbGVyKGxocywgcmhzKTsKKyAgICBzd2l0Y2ggKGhhbmRsZXIuaGFuZGxl
KCkpIHsKKyAgICBjYXNlIFNwZWNpYWxWYWx1ZUhhbmRsZXI6OkJvdGhGaW5pdGU6CisgICAgICAg
IGJyZWFrOworCisgICAgY2FzZSBTcGVjaWFsVmFsdWVIYW5kbGVyOjpCb3RoaW5maW5pdHk6Cisg
ICAgICAgIHJldHVybiBsaHNTaWduID09IHJoc1NpZ24gPyBsaHMgOiBxdWlldE5hTigwKTsKKwor
ICAgIGNhc2UgU3BlY2lhbFZhbHVlSGFuZGxlcjo6RWl0aGVyTmFOOgorICAgICAgICByZXR1cm4g
aGFuZGxlci52YWx1ZSgpOworCisgICAgY2FzZSBTcGVjaWFsVmFsdWVIYW5kbGVyOjpMaHNJc2lu
ZmluaXR5OgorICAgICAgICByZXR1cm4gbGhzOworCisgICAgY2FzZSBTcGVjaWFsVmFsdWVIYW5k
bGVyOjpSaHNJc2luZmluaXR5OgorICAgICAgICByZXR1cm4gcmhzOworICAgIH0KKworICAgIEFT
U0VSVChsaHMuaXNGaW5pdGUoKSk7CisgICAgQVNTRVJUKHJocy5pc0Zpbml0ZSgpKTsKKworICAg
IGNvbnN0IGludCBsaHNFeHBvbmVudCA9IGxocy5leHBvbmVudCgpOworICAgIGNvbnN0IGludCBy
aHNFeHBvbmVudCA9IHJocy5leHBvbmVudCgpOworICAgIGludCByZXN1bHRFeHBvbmVudCA9IG1p
bihsaHNFeHBvbmVudCwgcmhzRXhwb25lbnQpOworICAgIHVpbnQ2NF90IGxoc0NvZWZmaWNpZW50
ID0gbGhzLm1fZGF0YS5jb2VmZmljaWVudCgpOworICAgIHVpbnQ2NF90IHJoc0NvZWZmaWNpZW50
ID0gcmhzLm1fZGF0YS5jb2VmZmljaWVudCgpOworCisgICAgLy8gTWFrZSBjb2VmZmljaWVudCBh
bGlnbmVkLgorICAgIGlmIChsaHNFeHBvbmVudCA+IHJoc0V4cG9uZW50KSB7CisgICAgICAgIGNv
bnN0IGludCBudW1iZXJPZkxIU0RpZ2l0cyA9IGNvdW50RGlnaXRzKGxoc0NvZWZmaWNpZW50KTsK
KyAgICAgICAgaWYgKG51bWJlck9mTEhTRGlnaXRzKSB7CisgICAgICAgICAgICBjb25zdCBpbnQg
bGhzU2hpZnRBbW91bnQgPSBsaHNFeHBvbmVudCAtIHJoc0V4cG9uZW50OworICAgICAgICAgICAg
Y29uc3QgaW50IG92ZXJmbG93ID0gbnVtYmVyT2ZMSFNEaWdpdHMgKyBsaHNTaGlmdEFtb3VudCAt
IFByZWNpc2lvbjsKKyAgICAgICAgICAgIGlmIChvdmVyZmxvdyA8PSAwKQorICAgICAgICAgICAg
ICAgIGxoc0NvZWZmaWNpZW50ID0gc2NhbGVVcChsaHNDb2VmZmljaWVudCwgbGhzU2hpZnRBbW91
bnQpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgbGhzQ29lZmZpY2llbnQg
PSBzY2FsZVVwKGxoc0NvZWZmaWNpZW50LCBsaHNTaGlmdEFtb3VudCAtIG92ZXJmbG93KTsKKyAg
ICAgICAgICAgICAgICByaHNDb2VmZmljaWVudCA9IHNjYWxlRG93bihyaHNDb2VmZmljaWVudCwg
b3ZlcmZsb3cpOworICAgICAgICAgICAgICAgIHJlc3VsdEV4cG9uZW50ICs9IG92ZXJmbG93Owor
ICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICB9IGlmIChsaHNFeHBvbmVudCA8IHJoc0V4
cG9uZW50KSB7CisgICAgICAgIGNvbnN0IGludCBudW1iZXJPZlJIU0RpZ2l0cyA9IGNvdW50RGln
aXRzKHJoc0NvZWZmaWNpZW50KTsKKyAgICAgICAgaWYgKG51bWJlck9mUkhTRGlnaXRzKSB7Cisg
ICAgICAgICAgICBjb25zdCBpbnQgcmhzU2hpZnRBbW91bnQgPSByaHNFeHBvbmVudCAtIGxoc0V4
cG9uZW50OworICAgICAgICAgICAgY29uc3QgaW50IG92ZXJmbG93ID0gbnVtYmVyT2ZSSFNEaWdp
dHMgKyByaHNTaGlmdEFtb3VudCAtIFByZWNpc2lvbjsKKyAgICAgICAgICAgIGlmIChvdmVyZmxv
dyA8PSAwKQorICAgICAgICAgICAgICAgIHJoc0NvZWZmaWNpZW50ID0gc2NhbGVVcChyaHNDb2Vm
ZmljaWVudCwgcmhzU2hpZnRBbW91bnQpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICAgICAgcmhzQ29lZmZpY2llbnQgPSBzY2FsZVVwKHJoc0NvZWZmaWNpZW50LCByaHNTaGlmdEFt
b3VudCAtIG92ZXJmbG93KTsKKyAgICAgICAgICAgICAgICBsaHNDb2VmZmljaWVudCA9IHNjYWxl
RG93bihsaHNDb2VmZmljaWVudCwgb3ZlcmZsb3cpOworICAgICAgICAgICAgICAgIHJlc3VsdEV4
cG9uZW50ICs9IG92ZXJmbG93OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisg
ICAgdWludDY0X3QgY29uc3QgcmVzdWx0ID0gbGhzU2lnbiA9PSByaHNTaWduID8gbGhzQ29lZmZp
Y2llbnQgKyByaHNDb2VmZmljaWVudCA6IGxoc0NvZWZmaWNpZW50IC0gcmhzQ29lZmZpY2llbnQ7
CisgICAgcmV0dXJuIGxoc1NpZ24gJiYgIXJoc1NpZ24gJiYgIXJlc3VsdAorICAgICAgICAgICAg
PyBEZWNpbWFsKDAsIHJlc3VsdEV4cG9uZW50LCAwKQorICAgICAgICAgICAgOiBpbnQ2NF90KHJl
c3VsdCkgPj0gMAorICAgICAgICAgICAgICAgID8gRGVjaW1hbChyZXN1bHQsIHJlc3VsdEV4cG9u
ZW50LCBsaHNTaWduKQorICAgICAgICAgICAgICAgIDogRGVjaW1hbCgtaW50NjRfdChyZXN1bHQp
LCByZXN1bHRFeHBvbmVudCwgbGhzU2lnbiBeIDEpOworfQorCitEZWNpbWFsIERlY2ltYWw6Om9w
ZXJhdG9yIC0oY29uc3QgRGVjaW1hbCYgcmhzKSBjb25zdAoreworICAgIGNvbnN0IERlY2ltYWwm
IGxocyA9ICp0aGlzOworICAgIGNvbnN0IGludCBsaHNTaWduID0gbGhzLnNpZ24oKTsKKyAgICBj
b25zdCBpbnQgcmhzU2lnbiA9IHJocy5zaWduKCk7CisKKyAgICBTcGVjaWFsVmFsdWVIYW5kbGVy
IGhhbmRsZXIobGhzLCByaHMpOworICAgIHN3aXRjaCAoaGFuZGxlci5oYW5kbGUoKSkgeworICAg
IGNhc2UgU3BlY2lhbFZhbHVlSGFuZGxlcjo6Qm90aEZpbml0ZToKKyAgICAgICAgYnJlYWs7CisK
KyAgICBjYXNlIFNwZWNpYWxWYWx1ZUhhbmRsZXI6OkJvdGhpbmZpbml0eToKKyAgICAgICAgcmV0
dXJuIGxoc1NpZ24gPT0gcmhzU2lnbiA/IHF1aWV0TmFOKDApIDogbGhzOworCisgICAgY2FzZSBT
cGVjaWFsVmFsdWVIYW5kbGVyOjpFaXRoZXJOYU46CisgICAgICAgIHJldHVybiBoYW5kbGVyLnZh
bHVlKCk7CisKKyAgICBjYXNlIFNwZWNpYWxWYWx1ZUhhbmRsZXI6Okxoc0lzaW5maW5pdHk6Cisg
ICAgICAgIHJldHVybiBsaHM7CisKKyAgICBjYXNlIFNwZWNpYWxWYWx1ZUhhbmRsZXI6OlJoc0lz
aW5maW5pdHk6CisgICAgICAgIHJldHVybiBpbmZpbml0eShyaHNTaWduIF4gMSk7CisgICAgfQor
CisgICAgQVNTRVJUKGxocy5pc0Zpbml0ZSgpKTsKKyAgICBBU1NFUlQocmhzLmlzRmluaXRlKCkp
OworCisgICAgdWludDY0X3QgbGhzQ29lZmZpY2llbnQgPSBsaHMubV9kYXRhLmNvZWZmaWNpZW50
KCk7CisgICAgdWludDY0X3QgcmhzQ29lZmZpY2llbnQgPSByaHMubV9kYXRhLmNvZWZmaWNpZW50
KCk7CisKKyAgICBjb25zdCBpbnQgbGhzRXhwb25lbnQgPSBsaHMuZXhwb25lbnQoKTsKKyAgICBj
b25zdCBpbnQgcmhzRXhwb25lbnQgPSByaHMuZXhwb25lbnQoKTsKKyAgICBpbnQgcmVzdWx0RXhw
b25lbnQgPSBtaW4obGhzRXhwb25lbnQsIHJoc0V4cG9uZW50KTsKKworICAgIC8vIE1ha2UgY29l
ZmZpY2llbnQgYWxpZ25lZC4KKyAgICBpZiAobGhzRXhwb25lbnQgPiByaHNFeHBvbmVudCkgewor
ICAgICAgICBjb25zdCBpbnQgbnVtYmVyT2ZMSFNEaWdpdHMgPSBjb3VudERpZ2l0cyhsaHNDb2Vm
ZmljaWVudCk7CisgICAgICAgIGlmIChudW1iZXJPZkxIU0RpZ2l0cykgeworICAgICAgICAgICAg
Y29uc3QgaW50IGxoc1NoaWZ0QW1vdW50ID0gbGhzRXhwb25lbnQgLSByaHNFeHBvbmVudDsKKyAg
ICAgICAgICAgIGNvbnN0IGludCBvdmVyZmxvdyA9IG51bWJlck9mTEhTRGlnaXRzICsgbGhzU2hp
ZnRBbW91bnQgLSBQcmVjaXNpb247CisgICAgICAgICAgICBpZiAob3ZlcmZsb3cgPD0gMCkKKyAg
ICAgICAgICAgICAgICBsaHNDb2VmZmljaWVudCA9IHNjYWxlVXAobGhzQ29lZmZpY2llbnQsIGxo
c1NoaWZ0QW1vdW50KTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGxoc0Nv
ZWZmaWNpZW50ID0gc2NhbGVVcChsaHNDb2VmZmljaWVudCwgbGhzU2hpZnRBbW91bnQgLSBvdmVy
Zmxvdyk7CisgICAgICAgICAgICAgICAgcmhzQ29lZmZpY2llbnQgPSBzY2FsZURvd24ocmhzQ29l
ZmZpY2llbnQsIG92ZXJmbG93KTsKKyAgICAgICAgICAgICAgICByZXN1bHRFeHBvbmVudCArPSBv
dmVyZmxvdzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgfSBpZiAobGhzRXhwb25l
bnQgPCByaHNFeHBvbmVudCkgeworICAgICAgICBjb25zdCBpbnQgbnVtYmVyT2ZSSFNEaWdpdHMg
PSBjb3VudERpZ2l0cyhyaHNDb2VmZmljaWVudCk7CisgICAgICAgIGlmIChudW1iZXJPZlJIU0Rp
Z2l0cykgeworICAgICAgICAgICAgY29uc3QgaW50IHJoc1NoaWZ0QW1vdW50ID0gcmhzRXhwb25l
bnQgLSBsaHNFeHBvbmVudDsKKyAgICAgICAgICAgIGNvbnN0IGludCBvdmVyZmxvdyA9IG51bWJl
ck9mUkhTRGlnaXRzICsgcmhzU2hpZnRBbW91bnQgLSBQcmVjaXNpb247CisgICAgICAgICAgICBp
ZiAob3ZlcmZsb3cgPD0gMCkKKyAgICAgICAgICAgICAgICByaHNDb2VmZmljaWVudCA9IHNjYWxl
VXAocmhzQ29lZmZpY2llbnQsIHJoc1NoaWZ0QW1vdW50KTsKKyAgICAgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgICAgIHJoc0NvZWZmaWNpZW50ID0gc2NhbGVVcChyaHNDb2VmZmljaWVudCwg
cmhzU2hpZnRBbW91bnQgLSBvdmVyZmxvdyk7CisgICAgICAgICAgICAgICAgbGhzQ29lZmZpY2ll
bnQgPSBzY2FsZURvd24obGhzQ29lZmZpY2llbnQsIG92ZXJmbG93KTsKKyAgICAgICAgICAgICAg
ICByZXN1bHRFeHBvbmVudCArPSBvdmVyZmxvdzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgIH0KKworICAgIHVpbnQ2NF90IHJlc3VsdCA9IGxoc1NpZ24gPT0gcmhzU2lnbiA/IGxoc0Nv
ZWZmaWNpZW50IC0gcmhzQ29lZmZpY2llbnQgOiBsaHNDb2VmZmljaWVudCArIHJoc0NvZWZmaWNp
ZW50OworICAgIHJldHVybiBsaHNTaWduICYmIHJoc1NpZ24gJiYgIXJlc3VsdAorICAgICAgICAg
ICAgPyBEZWNpbWFsKDAsIHJlc3VsdEV4cG9uZW50LCAwKQorICAgICAgICAgICAgOiBpbnQ2NF90
KHJlc3VsdCkgPj0gMAorICAgICAgICAgICAgICAgID8gRGVjaW1hbChyZXN1bHQsIHJlc3VsdEV4
cG9uZW50LCBsaHNTaWduKQorICAgICAgICAgICAgICAgIDogRGVjaW1hbCgtaW50NjRfdChyZXN1
bHQpLCByZXN1bHRFeHBvbmVudCwgbGhzU2lnbiBeIDEpOworfQorCitEZWNpbWFsIERlY2ltYWw6
Om9wZXJhdG9yICooY29uc3QgRGVjaW1hbCYgcmhzKSBjb25zdAoreworICAgIGNvbnN0IERlY2lt
YWwmIGxocyA9ICp0aGlzOworICAgIGNvbnN0IGludCBsaHNTaWduID0gbGhzLnNpZ24oKTsKKyAg
ICBjb25zdCBpbnQgcmhzU2lnbiA9IHJocy5zaWduKCk7CisgICAgaW50IHJlc3VsdFNpZ24gPSBs
aHNTaWduIF4gcmhzU2lnbjsKKworICAgIFNwZWNpYWxWYWx1ZUhhbmRsZXIgaGFuZGxlcihsaHMs
IHJocyk7CisgICAgc3dpdGNoIChoYW5kbGVyLmhhbmRsZSgpKSB7CisgICAgY2FzZSBTcGVjaWFs
VmFsdWVIYW5kbGVyOjpCb3RoRmluaXRlOiB7CisgICAgICAgIGNvbnN0IHVpbnQ2NF90IGxoc0Nv
ZWZmaWNpZW50ID0gbGhzLm1fZGF0YS5jb2VmZmljaWVudCgpOworICAgICAgICBjb25zdCB1aW50
NjRfdCByaHNDb2VmZmljaWVudCA9IHJocy5tX2RhdGEuY29lZmZpY2llbnQoKTsKKyAgICAgICAg
aW50IHJlc3VsdEV4cG9uZW50ID0gbGhzLmV4cG9uZW50KCkgKyByaHMuZXhwb25lbnQoKTsKKyAg
ICAgICAgVUludDEyOCB3b3JrKFVJbnQxMjg6Om11bHRpcGx5KGxoc0NvZWZmaWNpZW50LCByaHND
b2VmZmljaWVudCkpOworICAgICAgICB3aGlsZSAod29yay5oaWdoKCkpIHsKKyAgICAgICAgICB3
b3JrIC89IDEwOworICAgICAgICAgICsrcmVzdWx0RXhwb25lbnQ7CisgICAgICAgIH0KKyAgICAg
ICAgcmV0dXJuIERlY2ltYWwod29yay5sb3coKSwgcmVzdWx0RXhwb25lbnQsIHJlc3VsdFNpZ24p
OworICAgIH0KKworICAgIGNhc2UgU3BlY2lhbFZhbHVlSGFuZGxlcjo6Qm90aGluZmluaXR5Ogor
ICAgICAgICByZXR1cm4gaW5maW5pdHkocmVzdWx0U2lnbik7CisKKyAgICBjYXNlIFNwZWNpYWxW
YWx1ZUhhbmRsZXI6OkVpdGhlck5hTjoKKyAgICAgICAgcmV0dXJuIGhhbmRsZXIudmFsdWUoKTsK
KworICAgIGNhc2UgU3BlY2lhbFZhbHVlSGFuZGxlcjo6TGhzSXNpbmZpbml0eToKKyAgICAgICAg
cmV0dXJuIHJocy5pc1plcm8oKSA/IHF1aWV0TmFOKDApIDogaW5maW5pdHkocmVzdWx0U2lnbik7
CisKKyAgICBjYXNlIFNwZWNpYWxWYWx1ZUhhbmRsZXI6OlJoc0lzaW5maW5pdHk6CisgICAgICAg
IHJldHVybiBsaHMuaXNaZXJvKCkgPyBxdWlldE5hTigwKSA6IGluZmluaXR5KHJlc3VsdFNpZ24p
OworICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBxdWlldE5h
TigwKTsKK30KKworRGVjaW1hbCBEZWNpbWFsOjpvcGVyYXRvciAvKGNvbnN0IERlY2ltYWwmIHJo
cykgY29uc3QKK3sKKyAgICBjb25zdCBEZWNpbWFsJiBsaHMgPSAqdGhpczsKKyAgICBjb25zdCBp
bnQgbGhzU2lnbiA9IGxocy5zaWduKCk7CisgICAgY29uc3QgaW50IHJoc1NpZ24gPSByaHMuc2ln
bigpOworICAgIGludCByZXN1bHRTaWduID0gbGhzU2lnbiBeIHJoc1NpZ247CisKKyAgICBTcGVj
aWFsVmFsdWVIYW5kbGVyIGhhbmRsZXIobGhzLCByaHMpOworICAgIHN3aXRjaCAoaGFuZGxlci5o
YW5kbGUoKSkgeworICAgIGNhc2UgU3BlY2lhbFZhbHVlSGFuZGxlcjo6Qm90aEZpbml0ZToKKyAg
ICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFNwZWNpYWxWYWx1ZUhhbmRsZXI6OkJvdGhpbmZpbml0
eToKKyAgICAgICAgcmV0dXJuIHF1aWV0TmFOKDApOworCisgICAgY2FzZSBTcGVjaWFsVmFsdWVI
YW5kbGVyOjpFaXRoZXJOYU46CisgICAgICAgIHJldHVybiBoYW5kbGVyLnZhbHVlKCk7CisKKyAg
ICBjYXNlIFNwZWNpYWxWYWx1ZUhhbmRsZXI6Okxoc0lzaW5maW5pdHk6CisgICAgICAgIHJldHVy
biBpbmZpbml0eShyZXN1bHRTaWduKTsKKworICAgIGNhc2UgU3BlY2lhbFZhbHVlSGFuZGxlcjo6
UmhzSXNpbmZpbml0eToKKyAgICAgICAgcmV0dXJuIHplcm8ocmVzdWx0U2lnbik7CisgICAgfQor
CisgICAgQVNTRVJUKGxocy5pc0Zpbml0ZSgpKTsKKyAgICBBU1NFUlQocmhzLmlzRmluaXRlKCkp
OworCisgICAgaWYgKHJocy5pc1plcm8oKSkKKyAgICAgICAgcmV0dXJuIGxocy5pc1plcm8oKSA/
IHF1aWV0TmFOKDApIDogaW5maW5pdHkocmVzdWx0U2lnbik7CisKKyAgICBpbnQgcmVzdWx0RXhw
b25lbnQgPSBsaHMuZXhwb25lbnQoKSAtIHJocy5leHBvbmVudCgpOworCisgICAgaWYgKGxocy5p
c1plcm8oKSkgeworICAgICAgICAvLyAwL25vbi16ZXJvID0+IDAKKyAgICAgICAgcmV0dXJuIERl
Y2ltYWwoMCwgcmVzdWx0RXhwb25lbnQsIHJlc3VsdFNpZ24pOworICAgIH0KKworICAgIHVpbnQ2
NF90IHJlbWFpbmRlciA9IGxocy5tX2RhdGEuY29lZmZpY2llbnQoKTsKKyAgICBjb25zdCB1aW50
NjRfdCBkaXZpc29yID0gcmhzLm1fZGF0YS5jb2VmZmljaWVudCgpOworICAgIHVpbnQ2NF90IHJl
c3VsdCA9IDA7CisgICAgd2hpbGUgKHJlc3VsdCA8IE1heENvZWZmaWNpZW50IC8gMTAwKSB7Cisg
ICAgICAgIHdoaWxlIChyZW1haW5kZXIgPCBkaXZpc29yKSB7CisgICAgICAgICAgICByZW1haW5k
ZXIgKj0gMTA7CisgICAgICAgICAgICByZXN1bHQgKj0gMTA7CisgICAgICAgICAgICAtLXJlc3Vs
dEV4cG9uZW50OworICAgICAgICB9CisgICAgICAgIHJlc3VsdCArPSByZW1haW5kZXIgLyBkaXZp
c29yOworICAgICAgICByZW1haW5kZXIgJT0gZGl2aXNvcjsKKyAgICAgICAgaWYgKCFyZW1haW5k
ZXIpCisgICAgICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBpZiAocmVtYWluZGVyID4gZGl2
aXNvciAvIDIpCisgICAgICAgICsrcmVzdWx0OworCisgICAgcmV0dXJuIERlY2ltYWwocmVzdWx0
LCByZXN1bHRFeHBvbmVudCwgcmVzdWx0U2lnbik7Cit9CisKK2Jvb2wgRGVjaW1hbDo6b3BlcmF0
b3I9PShjb25zdCBEZWNpbWFsJiByaHMpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhc3RFcXVhbHMo
cmhzKSB8fCBjb21wYXJlVG8ocmhzKS5pc1plcm8oKTsKK30KKworYm9vbCBEZWNpbWFsOjpvcGVy
YXRvciE9KGNvbnN0IERlY2ltYWwmIHJocykgY29uc3QKK3sKKyAgICByZXR1cm4gIW9wZXJhdG9y
ID09KHJocyk7Cit9CisKK2Jvb2wgRGVjaW1hbDo6b3BlcmF0b3IgPChjb25zdCBEZWNpbWFsJiBy
aHMpIGNvbnN0Cit7CisgICAgcmV0dXJuICFvcGVyYXRvciA+PShyaHMpOworfQorCitib29sIERl
Y2ltYWw6Om9wZXJhdG9yIDw9KGNvbnN0IERlY2ltYWwmIHJocykgY29uc3QKK3sKKyAgICBpZiAo
ZmFzdEVxdWFscyhyaHMpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBjb25zdCBEZWNpbWFs
IHJlc3VsdCA9IGNvbXBhcmVUbyhyaHMpOworICAgIHJldHVybiByZXN1bHQuaXNaZXJvKCkgfHwg
cmVzdWx0LnNpZ24oKTsKK30KKworYm9vbCBEZWNpbWFsOjpvcGVyYXRvciA+KGNvbnN0IERlY2lt
YWwmIHJocykgY29uc3QKK3sKKyAgICByZXR1cm4gIW9wZXJhdG9yIDw9KHJocyk7Cit9CisKK2Jv
b2wgRGVjaW1hbDo6b3BlcmF0b3IgPj0oY29uc3QgRGVjaW1hbCYgcmhzKSBjb25zdAoreworICAg
IGlmIChmYXN0RXF1YWxzKHJocykpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGNvbnN0IERl
Y2ltYWwgcmVzdWx0ID0gY29tcGFyZVRvKHJocyk7CisgICAgcmV0dXJuIHJlc3VsdC5pc1plcm8o
KSB8fCAhcmVzdWx0LnNpZ24oKTsKK30KKworaW50IERlY2ltYWw6OmV4cG9uZW50KCkgY29uc3QK
K3sKKyAgICByZXR1cm4gaXNGaW5pdGUoKSA/IG1fZGF0YS5leHBvbmVudCgpIDogMDsKK30KKwor
RGVjaW1hbDo6SWVlZUNsYXNzIERlY2ltYWw6OmllZWVDbGFzcygpIGNvbnN0Cit7CisgICAgc3dp
dGNoIChtX2RhdGEubV9wYWNrZWRGaWVsZCkgeworICAgIGNhc2UgUG9zaXRpdmVJbmZpbml0eVBh
dHRlcm46CisgICAgY2FzZSBOZWdhdGl2ZUluZmluaXR5UGF0dGVybjoKKyAgICAgICAgcmV0dXJu
IENsYXNzSW5maW5pdHk7CisgICAgY2FzZSBQb3NpdGl2ZVF1aWV0TmFOUGF0dGVybjoKKyAgICBj
YXNlIE5lZ2F0aXZlUXVpZXROYU5QYXR0ZXJuOgorICAgICAgICByZXR1cm4gQ2xhc3NRdWlldE5h
TjsKKyAgICB9CisKKyAgICByZXR1cm4gbV9kYXRhLmlzWmVybygpID8gQ2xhc3NaZXJvIDogQ2xh
c3NOb3JtYWw7Cit9CisKK2ludCBEZWNpbWFsOjpzaWduKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9kYXRhLnNpZ24oKTsKK30KKworRGVjaW1hbCBEZWNpbWFsOjpjb21wYXJlVG8oY29uc3QgRGVj
aW1hbCYgcmhzKSBjb25zdAoreworICAgIGNvbnN0IERlY2ltYWwgcmVzdWx0KCp0aGlzIC0gcmhz
KTsKKyAgICByZXR1cm4gcmVzdWx0LmlzWmVybygpCisgICAgICAgICAgICA/IHplcm8oMCkKKyAg
ICAgICAgICAgIDogcmVzdWx0LmlzRmluaXRlKCkKKyAgICAgICAgICAgICAgICAgICAgPyByZXN1
bHQKKyAgICAgICAgICAgICAgICAgICAgOiByZXN1bHQuc2lnbigpID8gRGVjaW1hbCgtMSkgOiBE
ZWNpbWFsKDEpOworfQorCisvLyBDb21wYXJlcyB0d28gRGVjaW1hbCBudW1iZXIgYXMgYmluYXJ5
IGRhdGEuIFRoaXMgbWV0aG9kIGlzCisvLyB1c2VkIGZvciBlcXVhbGl0eSBvZiBpbmZpbml0eSBv
cGVyYW5kcyB3aGljaCBzdWJzdHJhY3Qgb3BlcmF0aW9uCisvLyByZXR1cm5zIG5vbi16ZXJvLgor
Ym9vbCBEZWNpbWFsOjpmYXN0RXF1YWxzKGNvbnN0IERlY2ltYWwmIHJocykgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9kYXRhLm1fcGFja2VkRmllbGQgPT0gcmhzLm1fZGF0YS5tX3BhY2tlZEZpZWxk
CisgICAgICAgICYmIG1fZGF0YS5tX2NvZWZmaWNpZW50ID09IHJocy5tX2RhdGEubV9jb2VmZmlj
aWVudDsKK30KKworRGVjaW1hbCBEZWNpbWFsOjpmcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgc3Ry
KQoreworICAgIGludCBleHBvbmVudCA9IDA7CisgICAgaW50IGV4cG9uZW50U2lnbiA9IDA7Cisg
ICAgYm9vbCBtaW51cyA9IGZhbHNlOworICAgIGludCBudW1iZXJPZkRpZ2l0cyA9IDA7CisgICAg
aW50IG51bWJlck9mRGlnaXRzQWZ0ZXJEb3QgPSAwOworICAgIGludCBudW1iZXJPZkV4dHJhRGln
aXRzID0gMDsKKworICAgIGVudW0geworICAgICAgICBTdGF0ZURpZ2l0LAorICAgICAgICBTdGF0
ZURvdCwKKyAgICAgICAgU3RhdGVEb3REaWdpdCwKKyAgICAgICAgU3RhdGVFLAorICAgICAgICBT
dGF0ZUVEaWdpdCwKKyAgICAgICAgU3RhdGVFU2lnbiwKKyAgICAgICAgU3RhdGVTaWduLAorICAg
ICAgICBTdGF0ZVN0YXJ0LAorICAgICAgICBTdGF0ZVplcm8sCisgICAgfSBzdGF0ZSA9IFN0YXRl
U3RhcnQ7CisKKyAgICAjZGVmaW5lIEhhbmRsZUNoYXIoY2gxLCBuZXh0LCAuLi4pIFwKKyAgICAg
ICAgaWYgKGNoID09IGNoMSB8fCBjaCA9PSBjaDEgLSAnQScgKyAnYScpIHsgXAorICAgICAgICAg
ICAgX19WQV9BUkdTX187IFwKKyAgICAgICAgICAgIHN0YXRlID0gbmV4dDsgXAorICAgICAgICAg
ICAgYnJlYWs7IFwKKyAgICAgICAgfQorCisgICAgI2RlZmluZSBFeHBlY3RDaGFyKGNoMSwgbmV4
dCwgLi4uKSBcCisgICAgICAgIEhhbmRsZUNoYXIoY2gxLCBuZXh0LCBfX1ZBX0FSR1NfXyk7IFwK
KyAgICAgICAgcmV0dXJuIHF1aWV0TmFOKDApOworCisgICAgdWludDY0X3QgYWNjdW11bGF0b3Ig
PSAwOworICAgIGZvciAodWludCBpbmRleCA9IDA7IGluZGV4IDwgc3RyLmxlbmd0aCgpOyArK2lu
ZGV4KSB7CisgICAgICAgIGNvbnN0IGludCBjaCA9IHN0cltpbmRleF07CisgICAgICAgIHN3aXRj
aCAoc3RhdGUpIHsKKyAgICAgICAgY2FzZSBTdGF0ZURpZ2l0OgorICAgICAgICAgICAgaWYgKGNo
ID49ICcwJyAmJiBjaCA8PSAnOScpIHsKKyAgICAgICAgICAgICAgICBpZiAobnVtYmVyT2ZEaWdp
dHMgPCBEZWNpbWFsOjpQcmVjaXNpb24pIHsKKyAgICAgICAgICAgICAgICAgICAgKytudW1iZXJP
ZkRpZ2l0czsKKyAgICAgICAgICAgICAgICAgICAgYWNjdW11bGF0b3IgKj0gMTA7CisgICAgICAg
ICAgICAgICAgICAgIGFjY3VtdWxhdG9yICs9IGNoIC0gJzAnOworICAgICAgICAgICAgICAgIH0g
ZWxzZQorICAgICAgICAgICAgICAgICAgICArK251bWJlck9mRXh0cmFEaWdpdHM7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChjaCA9PSAn
LicpIHsKKyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlRG90OworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBFeHBlY3RDaGFyKCdFJywgU3Rh
dGVFKTsKKworICAgICAgICBjYXNlIFN0YXRlRG90OgorICAgICAgICAgICAgaWYgKGNoID49ICcw
JyAmJiBjaCA8PSAnOScpIHsKKyAgICAgICAgICAgICAgICBpZiAobnVtYmVyT2ZEaWdpdHMgPCBE
ZWNpbWFsOjpQcmVjaXNpb24pIHsKKyAgICAgICAgICAgICAgICAgICAgKytudW1iZXJPZkRpZ2l0
czsKKyAgICAgICAgICAgICAgICAgICAgKytudW1iZXJPZkRpZ2l0c0FmdGVyRG90OworICAgICAg
ICAgICAgICAgICAgICBhY2N1bXVsYXRvciAqPSAxMDsKKyAgICAgICAgICAgICAgICAgICAgYWNj
dW11bGF0b3IgKz0gY2ggLSAnMCc7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IHN0YXRlID0gU3RhdGVEb3REaWdpdDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICBjYXNlIFN0YXRlRG90RGlnaXQ6CisgICAgICAgICAgICBpZiAoY2gg
Pj0gJzAnICYmIGNoIDw9ICc5JykgeworICAgICAgICAgICAgICAgIGlmIChudW1iZXJPZkRpZ2l0
cyA8IERlY2ltYWw6OlByZWNpc2lvbikgeworICAgICAgICAgICAgICAgICAgICArK251bWJlck9m
RGlnaXRzOworICAgICAgICAgICAgICAgICAgICArK251bWJlck9mRGlnaXRzQWZ0ZXJEb3Q7Cisg
ICAgICAgICAgICAgICAgICAgIGFjY3VtdWxhdG9yICo9IDEwOworICAgICAgICAgICAgICAgICAg
ICBhY2N1bXVsYXRvciArPSBjaCAtICcwJzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIEV4cGVjdENoYXIoJ0Un
LCBTdGF0ZUUpOworCisgICAgICAgIGNhc2UgU3RhdGVFOgorICAgICAgICAgICAgaWYgKGNoID09
ICcrJykgeworICAgICAgICAgICAgICAgIGV4cG9uZW50U2lnbiA9IDA7CisgICAgICAgICAgICAg
ICAgc3RhdGUgPSBTdGF0ZUVTaWduOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBpZiAoY2ggPT0gJy0nKSB7CisgICAgICAgICAgICAgICAgZXhw
b25lbnRTaWduID0gMTsKKyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlRVNpZ247CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChjaCA+
PSAnMCcgJiYgY2ggPD0gJzknKSB7CisgICAgICAgICAgICAgICAgZXhwb25lbnQgPSBjaCAtICcw
JzsKKyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlRURpZ2l0OworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcXVpZXROYU4oMCk7
CisKKyAgICAgICAgY2FzZSBTdGF0ZUVEaWdpdDoKKyAgICAgICAgICAgIGlmIChjaCA+PSAnMCcg
JiYgY2ggPD0gJzknKSB7CisgICAgICAgICAgICAgICAgZXhwb25lbnQgKj0gMTA7CisgICAgICAg
ICAgICAgICAgZXhwb25lbnQgKz0gY2ggLSAnMCc7CisgICAgICAgICAgICAgICAgaWYgKGV4cG9u
ZW50ID4gRGVjaW1hbDo6RW1heCArIFByZWNpc2lvbikKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGV4cG9uZW50U2lnbiA/IHplcm8oMCkgOiBpbmZpbml0eShtaW51cyk7CisgICAgICAgICAg
ICAgICAgc3RhdGUgPSBTdGF0ZUVEaWdpdDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHF1aWV0TmFOKDApOworCisgICAgICAgIGNh
c2UgU3RhdGVFU2lnbjoKKyAgICAgICAgICAgIGlmIChjaCA+PSAnMCcgJiYgY2ggPD0gJzknKSB7
CisgICAgICAgICAgICAgICAgZXhwb25lbnQgPSBjaCAtICcwJzsKKyAgICAgICAgICAgICAgICBz
dGF0ZSA9IFN0YXRlRURpZ2l0OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICByZXR1cm4gcXVpZXROYU4oMCk7CisKKyAgICAgICAgY2FzZSBTdGF0
ZVNpZ246CisgICAgICAgICAgICBpZiAoY2ggPT0gJzAnKSB7CisgICAgICAgICAgICAgICAgc3Rh
dGUgPSBTdGF0ZVplcm87CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGlmIChjaCA+PSAnMScgJiYgY2ggPD0gJzknKSB7CisgICAgICAgICAgICAg
ICAgYWNjdW11bGF0b3IgPSBjaCAtICcwJzsKKyAgICAgICAgICAgICAgICBudW1iZXJPZkRpZ2l0
cyA9IDE7CisgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZURpZ2l0OworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcXVpZXROYU4o
MCk7CisKKyAgICAgICAgY2FzZSBTdGF0ZVN0YXJ0OgorICAgICAgICAgICAgaWYgKGNoID09ICcw
JykgeworICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGVaZXJvOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoY2ggPj0gJzEnICYmIGNo
IDw9ICc5JykgeworICAgICAgICAgICAgICAgIGFjY3VtdWxhdG9yID0gY2ggLSAnMCc7CisgICAg
ICAgICAgICAgICAgbnVtYmVyT2ZEaWdpdHMgPSAxOworICAgICAgICAgICAgICAgIHN0YXRlID0g
U3RhdGVEaWdpdDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgaWYgKGNoID09ICctJykgeworICAgICAgICAgICAgICAgIG1pbnVzID0gdHJ1ZTsK
KyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlU2lnbjsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGNoID09ICcrJykgeworICAgICAg
ICAgICAgICAgIG1pbnVzID0gZmFsc2U7CisgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZVNp
Z247CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGlmIChjaCA9PSAnLicpIHsKKyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlRG90OworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4g
cXVpZXROYU4oMCk7CisKKyAgICAgICAgY2FzZSBTdGF0ZVplcm86CisgICAgICAgICAgICBpZiAo
Y2ggPT0gJzAnKQorICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBpZiAoY2gg
Pj0gJzEnICYmIGNoIDw9ICc5JykgeworICAgICAgICAgICAgICAgIGFjY3VtdWxhdG9yID0gY2gg
LSAnMCc7CisgICAgICAgICAgICAgICAgbnVtYmVyT2ZEaWdpdHMgPSAxOworICAgICAgICAgICAg
ICAgIHN0YXRlID0gU3RhdGVEaWdpdDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgaWYgKGNoID09ICcuJykgeworICAgICAgICAgICAgICAgIHN0
YXRlID0gU3RhdGVEb3Q7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIEV4cGVjdENoYXIoJ0UnLCBTdGF0ZUUpOworCisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiBx
dWlldE5hTigwKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChzdGF0ZSA9PSBTdGF0ZVpl
cm8pCisgICAgICAgIHJldHVybiB6ZXJvKG1pbnVzKTsKKworICAgIGlmIChzdGF0ZSA9PSBTdGF0
ZURpZ2l0IHx8IHN0YXRlID09IFN0YXRlRURpZ2l0IHx8IHN0YXRlID09IFN0YXRlRG90RGlnaXQp
IHsKKyAgICAgICAgaW50IHJlc3VsdEV4cG9uZW50ID0gZXhwb25lbnQgKiAoMSAtIGV4cG9uZW50
U2lnbiAqIDIpIC0gbnVtYmVyT2ZEaWdpdHNBZnRlckRvdCArIG51bWJlck9mRXh0cmFEaWdpdHM7
CisgICAgICAgIGNvbnN0IGludCBiaWFzZWRFeHBvbmVudCA9IHJlc3VsdEV4cG9uZW50ICsgRWJp
YXM7CisgICAgICAgIGlmIChiaWFzZWRFeHBvbmVudCA8IDApCisgICAgICAgICAgICByZXR1cm4g
emVybygwKTsKKworICAgICAgICBjb25zdCBpbnQgb3ZlcmZsb3cgPSBiaWFzZWRFeHBvbmVudCAt
IEVtYXggKyAxOworICAgICAgICBpZiAob3ZlcmZsb3cgPiAwKSB7CisgICAgICAgICAgICBpZiAo
b3ZlcmZsb3cgKyBudW1iZXJPZkRpZ2l0cyAtIG51bWJlck9mRGlnaXRzQWZ0ZXJEb3QgPiBQcmVj
aXNpb24pCisgICAgICAgICAgICAgICAgcmV0dXJuIGluZmluaXR5KG1pbnVzKTsKKyAgICAgICAg
ICAgIGFjY3VtdWxhdG9yID0gc2NhbGVVcChhY2N1bXVsYXRvciwgb3ZlcmZsb3cpOworICAgICAg
ICAgICAgcmVzdWx0RXhwb25lbnQgLT0gb3ZlcmZsb3c7CisgICAgICAgIH0KKworICAgICAgICBy
ZXR1cm4gRGVjaW1hbChhY2N1bXVsYXRvciwgcmVzdWx0RXhwb25lbnQsIG1pbnVzKTsKKyAgICB9
CisKKyAgICByZXR1cm4gcXVpZXROYU4oMCk7Cit9CisKK0RlY2ltYWwgRGVjaW1hbDo6aW5maW5p
dHkoY29uc3QgaW50IHNpZ24pCit7CisgICAgcmV0dXJuIERlY2ltYWwoRW5jb2RlZERhdGEoc2ln
biA/IE5lZ2F0aXZlSW5maW5pdHlQYXR0ZXJuIDogUG9zaXRpdmVJbmZpbml0eVBhdHRlcm4pKTsK
K30KKworRGVjaW1hbCBEZWNpbWFsOjpxdWlldE5hTihjb25zdCBpbnQgc2lnbikKK3sKKyAgICBy
ZXR1cm4gRGVjaW1hbChFbmNvZGVkRGF0YShzaWduID8gTmVnYXRpdmVRdWlldE5hTlBhdHRlcm4g
OiBQb3NpdGl2ZVF1aWV0TmFOUGF0dGVybikpOworfQorCitEZWNpbWFsIERlY2ltYWw6OnJlbWFp
bmRlcihjb25zdCBEZWNpbWFsJiByaHMpIGNvbnN0Cit7CisgICAgY29uc3QgRGVjaW1hbCBxdW90
aWVudCA9ICgqdGhpcyAvIHJocykucm91bmQoKTsKKyAgICByZXR1cm4gcXVvdGllbnQuaXNTcGVj
aWFsKCkgPyBxdW90aWVudCA6ICp0aGlzIC0gcXVvdGllbnQgKiByaHM7Cit9CisKK0RlY2ltYWwg
RGVjaW1hbDo6cm91bmQoKSBjb25zdAoreworICAgIGlmIChpc1NwZWNpYWwoKSkKKyAgICAgICAg
cmV0dXJuICp0aGlzOworCisgICAgaWYgKGV4cG9uZW50KCkgPj0gMCkKKyAgICAgICAgcmV0dXJu
ICp0aGlzOworCisgICAgdWludDY0X3QgcmVzdWx0ID0gbV9kYXRhLmNvZWZmaWNpZW50KCk7Cisg
ICAgY29uc3QgaW50IG51bWJlck9mRGlnaXRzID0gY291bnREaWdpdHMocmVzdWx0KTsKKyAgICBj
b25zdCBpbnQgbnVtYmVyT2ZEcm9wRGlnaXRzID0gLWV4cG9uZW50KCk7CisgICAgaWYgKG51bWJl
ck9mRGlnaXRzIDwgbnVtYmVyT2ZEcm9wRGlnaXRzKQorICAgICAgICByZXR1cm4gemVybygwKTsK
KworICAgIHJlc3VsdCA9IHNjYWxlRG93bihyZXN1bHQsIG51bWJlck9mRHJvcERpZ2l0cyAtIDEp
OworICAgIGlmIChyZXN1bHQgJSAxMCA+PSA1KQorICAgICAgICByZXN1bHQgKz0gMTA7CisgICAg
cmVzdWx0IC89IDEwOworICAgIHJldHVybiBEZWNpbWFsKHJlc3VsdCwgMCwgc2lnbigpKTsKK30K
KworU3RyaW5nIERlY2ltYWw6OnRvU3RyaW5nKCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKGllZWVD
bGFzcygpKSB7CisgICAgY2FzZSBDbGFzc0luZmluaXR5OgorICAgICAgICByZXR1cm4gc2lnbigp
ID8gIi1JbmZpbml0eSIgOiAiSW5maW5pdHkiOworCisgICAgY2FzZSBDbGFzc1F1aWV0TmFOOgor
ICAgICAgICByZXR1cm4gc2lnbigpID8gIi1OYU4iIDogIk5hTiI7CisKKyAgICBjYXNlIENsYXNz
Tm9ybWFsOgorICAgIGNhc2UgQ2xhc3NaZXJvOgorICAgICAgICBicmVhazsKKworICAgIGRlZmF1
bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gIiI7Cisg
ICAgfQorCisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgIGlmIChzaWduKCkpCisgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKCctJyk7CisKKyAgICBpbnQgb3JpZ2luYWxFeHBvbmVudCA9IGV4
cG9uZW50KCk7CisKKyAgICBjb25zdCBpbnQgbWF4RGlnaXRzID0gREJMX0RJRzsKKyAgICB1aW50
NjRfdCBjb2VmZmljaWVudCA9IG1fZGF0YS5jb2VmZmljaWVudCgpOworICAgIGludCBsYXN0RGln
aXQgPSAwOworICAgIHdoaWxlIChjb3VudERpZ2l0cyhjb2VmZmljaWVudCkgPiBtYXhEaWdpdHMp
IHsKKyAgICAgICAgbGFzdERpZ2l0ID0gY29lZmZpY2llbnQgJSAxMDsKKyAgICAgICAgY29lZmZp
Y2llbnQgLz0gMTA7CisgICAgICAgICsrb3JpZ2luYWxFeHBvbmVudDsKKyAgICB9CisKKyAgICBp
ZiAobGFzdERpZ2l0ID49IDUpCisgICAgICAgICsrY29lZmZpY2llbnQ7CisKKyAgICB3aGlsZSAo
b3JpZ2luYWxFeHBvbmVudCA8IDAgJiYgY29lZmZpY2llbnQgJiYgIShjb2VmZmljaWVudCAlIDEw
KSkgeworICAgICAgICBjb2VmZmljaWVudCAvPSAxMDsKKyAgICAgICAgKytvcmlnaW5hbEV4cG9u
ZW50OworICAgIH0KKworICAgIGNvbnN0IFN0cmluZyBkaWdpdHMgPSBTdHJpbmc6Om51bWJlcihj
b2VmZmljaWVudCk7CisgICAgaW50IGNvZWZmaWNpZW50TGVuZ3RoID0gaW50KGRpZ2l0cy5sZW5n
dGgoKSk7CisgICAgY29uc3QgaW50IGFkanVzdGVkRXhwb25lbnQgPSBvcmlnaW5hbEV4cG9uZW50
ICsgY29lZmZpY2llbnRMZW5ndGggLSAxOworICAgIGlmIChvcmlnaW5hbEV4cG9uZW50IDw9IDAg
JiYgYWRqdXN0ZWRFeHBvbmVudCA+PSAtNikgeworICAgICAgICBpZiAoIW9yaWdpbmFsRXhwb25l
bnQpIHsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGRpZ2l0cyk7CisgICAgICAgICAgICBy
ZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGFkanVz
dGVkRXhwb25lbnQgPj0gMCkgeworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb2Vm
ZmljaWVudExlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoZGln
aXRzW2ldKTsKKyAgICAgICAgICAgICAgICBpZiAoaSA9PSBhZGp1c3RlZEV4cG9uZW50KQorICAg
ICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnLicpOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKKyAgICAgICAgfQorCisgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKCIwLiIpOworICAgICAgICBmb3IgKGludCBpID0gYWRqdXN0ZWRFeHBv
bmVudCArIDE7IGkgPCAwOyArK2kpCisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnMCcpOwor
CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGRpZ2l0cyk7CisKKyAgICB9IGVsc2UgeworICAgICAg
ICBidWlsZGVyLmFwcGVuZChkaWdpdHNbMF0pOworICAgICAgICB3aGlsZSAoY29lZmZpY2llbnRM
ZW5ndGggPj0gMiAmJiBkaWdpdHNbY29lZmZpY2llbnRMZW5ndGggLSAxXSA9PSAnMCcpCisgICAg
ICAgICAgICAtLWNvZWZmaWNpZW50TGVuZ3RoOworICAgICAgICBpZiAoY29lZmZpY2llbnRMZW5n
dGggPj0gMikgeworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJy4nKTsKKyAgICAgICAgICAg
IGZvciAoaW50IGkgPSAxOyBpIDwgY29lZmZpY2llbnRMZW5ndGg7ICsraSkKKyAgICAgICAgICAg
ICAgICBidWlsZGVyLmFwcGVuZChkaWdpdHNbaV0pOworICAgICAgICB9CisKKyAgICAgICAgaWYg
KGFkanVzdGVkRXhwb25lbnQpIHsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGFkanVzdGVk
RXhwb25lbnQgPCAwID8gImUiIDogImUrIik7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChT
dHJpbmc6Om51bWJlcihhZGp1c3RlZEV4cG9uZW50KSk7CisgICAgICAgIH0KKyAgICB9CisgICAg
cmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKK30KKworRGVjaW1hbCBEZWNpbWFsOjp6ZXJvKGlu
dCBzaWduKQoreworICAgIHJldHVybiBEZWNpbWFsKEVuY29kZWREYXRhKHNpZ24gPyBOZWdhdGl2
ZVplcm9QYXR0ZXJuIDogUG9zaXRpdmVaZXJvUGF0dGVybikpOworfQorCit9IC8vIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RlY2ltYWwuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0RlY2ltYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zOGIxMTdkNWQ2NzM3YzQ2ZWNk
MWYwMmI1Njg3NWU2N2ZjYmM2ZWM2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vRGVjaW1hbC5oCkBAIC0wLDAgKzEsMTM0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKyNpZm5kZWYgRGVjaW1hbF9oCisjZGVm
aW5lIERlY2ltYWxfaAorCisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gVGhpcyBjbGFzcyByZXBy
ZXNlbnRzIGRlY2ltYWwgYmFzZSBmbG9hdGluZyBwb2ludGVyIG51bWJlciB3aXRoIDMyIGJpdAor
Ly8gIHVuc2lnZW5kIGludGVnZXIgYW5kIDY0IGJpdCB1bnNpZ25lZCBpbnRlZ2VyLgorLy8gIG8g
MSBiaXQgc2lnbiAoMCA9IHBvc2l0aXZlIG51bWJlciwgMSA9IG5lZ2F0aXZlIG51bWJlcikKKy8v
ICBvIDExIGJpdCBiaWFzZWQgZXhwb25lbnQsIDEwIGJhc2VkLgorLy8gIG8gNjQgYml0IGNvZWZm
aWNpZW50LgorLy8KKy8vIEV4cG9uZW50IGFuZCBzaWduIGJpdCBhcmUgZW5jb2RlZCBhczoKKy8v
IDc2NTQzMjEwIDc2NTQzMjEwCisvLyBTMDAwMDAwMCAwMDAwTUVFRQorLy8gIFMgPSBzaWduICgx
IGJpdCksIDAgPSBwb3NpdGl2ZSwgMSA9IG5lZ2F0aXZlCisvLyAgRSA9IGV4cG9uZW50ICgxMSBi
aXQpCisvLworLy8gRklYTUU6IE9uY2UgYWxsIEMrKyBjb21waWxlciBzdXBwb3J0IGRlY2ltYWwg
dHlwZSwgd2Ugc2hvdWxkIHJlcGxhY2UgdGhpcworLy8gY2xhc3MgdG8gY29tcGlsZXIgc3VwcG9y
dGVkIG9uZS4gU2VlIGJlbG93IFVSSSBmb3IgY3VycmVudCBzdGF0dXMgb2YgZGVjaW1hbAorLy8g
dHlwZSBmb3IgQysrOiAvLyBodHRwOi8vd3d3Lm9wZW4tc3RkLm9yZy9qdGMxL3NjMjIvd2cyMS9k
b2NzL3BhcGVycy8yMDA2L24xOTc3Lmh0bWwKK2NsYXNzIERlY2ltYWwgeworcHVibGljOgorICAg
IHN0YXRpYyBpbnQgY29uc3QgRW1heCA9IDIwNDc7IC8vIGxhcmdlc3QgZXhwb25lbnQgdmFsdWUK
KyAgICBzdGF0aWMgaW50IGNvbnN0IEViaWFzID0gMTAyMzsgLy8gc3VidHJhY3RlZCBmcm9tIGVu
Y29kZWQgZXhwb25lbnQKKyAgICBzdGF0aWMgaW50IGNvbnN0IFByZWNpc2lvbiA9IDE4OworCisg
ICAgZW51bSBJZWVlQ2xhc3MgeworICAgICAgICBDbGFzc0luZmluaXR5LAorICAgICAgICBDbGFz
c05vcm1hbCwKKyAgICAgICAgQ2xhc3NRdWlldE5hTiwKKyAgICAgICAgQ2xhc3NaZXJvLAorICAg
IH07CisKKyAgICBzdHJ1Y3QgRW5jb2RlZERhdGEgeworICAgICAgICBleHBsaWNpdCBFbmNvZGVk
RGF0YSh1aW50MzJfdCk7CisgICAgICAgIEVuY29kZWREYXRhKHVpbnQ2NF90LCBpbnQsIGludCk7
CisKKyAgICAgICAgdWludDY0X3QgY29lZmZpY2llbnQoKSBjb25zdDsKKyAgICAgICAgaW50IGNv
dW50RGlnaXRzKCkgY29uc3Q7CisgICAgICAgIGludCBleHBvbmVudCgpIGNvbnN0OworICAgICAg
ICBib29sIGlzRmluaXRlKCkgY29uc3Q7CisgICAgICAgIGJvb2wgaXNTcGVjaWFsKCkgY29uc3Q7
CisgICAgICAgIGJvb2wgaXNaZXJvKCkgY29uc3Q7CisgICAgICAgIGludCByYXdFeHBvbmVudCgp
IGNvbnN0OworICAgICAgICBpbnQgc2lnbigpIGNvbnN0OworICAgICAgICB2b2lkIHNldFNpZ24o
aW50KTsKKworICAgICAgICB1aW50NjRfdCBtX2NvZWZmaWNpZW50OworICAgICAgICB1aW50MzJf
dCBtX3BhY2tlZEZpZWxkOworICAgIH07CisKKyAgICBEZWNpbWFsKCk7CisgICAgRGVjaW1hbChp
bnQzMl90KTsKKyAgICBEZWNpbWFsKHVpbnQ2NF90LCBpbnQsIGludCk7CisgICAgRGVjaW1hbChj
b25zdCBEZWNpbWFsJik7CisgICAgZXhwbGljaXQgRGVjaW1hbChjb25zdCBFbmNvZGVkRGF0YSYp
OworCisgICAgRGVjaW1hbCYgb3BlcmF0b3IgPShjb25zdCBEZWNpbWFsJik7CisgICAgRGVjaW1h
bCYgb3BlcmF0b3IgKz0oY29uc3QgRGVjaW1hbCYpOworICAgIERlY2ltYWwmIG9wZXJhdG9yIC09
KGNvbnN0IERlY2ltYWwmKTsKKyAgICBEZWNpbWFsJiBvcGVyYXRvciAqPShjb25zdCBEZWNpbWFs
Jik7CisgICAgRGVjaW1hbCYgb3BlcmF0b3IgLz0oY29uc3QgRGVjaW1hbCYpOworCisgICAgYm9v
bCBvcGVyYXRvciA9PShjb25zdCBEZWNpbWFsJikgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRvciAh
PShjb25zdCBEZWNpbWFsJikgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRvciA8KGNvbnN0IERlY2lt
YWwmKSBjb25zdDsKKyAgICBib29sIG9wZXJhdG9yIDw9KGNvbnN0IERlY2ltYWwmKSBjb25zdDsK
KyAgICBib29sIG9wZXJhdG9yID4oY29uc3QgRGVjaW1hbCYpIGNvbnN0OworICAgIGJvb2wgb3Bl
cmF0b3IgPj0oY29uc3QgRGVjaW1hbCYpIGNvbnN0OworCisgICAgRGVjaW1hbCBvcGVyYXRvciAr
KGNvbnN0IERlY2ltYWwmKSBjb25zdDsKKyAgICBEZWNpbWFsIG9wZXJhdG9yIC0oY29uc3QgRGVj
aW1hbCYpIGNvbnN0OworICAgIERlY2ltYWwgb3BlcmF0b3IgKihjb25zdCBEZWNpbWFsJikgY29u
c3Q7CisgICAgRGVjaW1hbCBvcGVyYXRvciAvKGNvbnN0IERlY2ltYWwmKSBjb25zdDsKKworICAg
IEllZWVDbGFzcyBpZWVlQ2xhc3MoKSBjb25zdDsKKyAgICBib29sIGlzRmluaXRlKCkgY29uc3Qg
eyByZXR1cm4gbV9kYXRhLmlzRmluaXRlKCk7IH0KKyAgICBib29sIGlzU3BlY2lhbCgpIGNvbnN0
IHsgcmV0dXJuIG1fZGF0YS5pc1NwZWNpYWwoKTsgfQorICAgIGJvb2wgaXNaZXJvKCkgY29uc3Qg
eyByZXR1cm4gbV9kYXRhLmlzWmVybygpOyB9CisgICAgY29uc3QgRW5jb2RlZERhdGEmIHZhbHVl
KCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CisKKyAgICBEZWNpbWFsIHJlbWFpbmRlcihjb25z
dCBEZWNpbWFsJikgY29uc3Q7CisgICAgRGVjaW1hbCByb3VuZCgpIGNvbnN0OworICAgIFN0cmlu
ZyB0b1N0cmluZygpIGNvbnN0OworCisgICAgc3RhdGljIERlY2ltYWwgZnJvbVN0cmluZyhjb25z
dCBTdHJpbmcmKTsKKyAgICBzdGF0aWMgRGVjaW1hbCBpbmZpbml0eShpbnQpOworICAgIHN0YXRp
YyBEZWNpbWFsIHF1aWV0TmFOKGludCk7CisgICAgc3RhdGljIERlY2ltYWwgemVybyhpbnQpOwor
Citwcml2YXRlOgorICAgIERlY2ltYWwgY29tcGFyZVRvKGNvbnN0IERlY2ltYWwmKSBjb25zdDsK
KyAgICBpbnQgZXhwb25lbnQoKSBjb25zdDsKKyAgICBib29sIGZhc3RFcXVhbHMoY29uc3QgRGVj
aW1hbCYpIGNvbnN0OworICAgIGludCBzaWduKCkgY29uc3Q7CisKKyAgICBFbmNvZGVkRGF0YSBt
X2RhdGE7Cit9OworCit9IC8vIFdlYkNvcmUKKworI2VuZGlmIC8vIERlY2ltYWxfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaSBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vV2ViS2l0Lmd5cGkKaW5kZXggMGU4MjI4YTZlODkwZDVmMzc0MDQ3ZmMzYTgxNzFi
ODlkMTM4OWFhOS4uMjUwYjczMzY4NmU1MGZjMWJhMjUxODQ2Y2QwYTY4NmFkOTJhZmQ5NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCkBAIC05NSw2ICs5NSw3IEBACiAgICAgICAgICAg
ICAndGVzdHMvQ2xpcGJvYXJkQ2hyb21pdW1UZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMv
Q29tcG9zaXRvckZha2VHcmFwaGljc0NvbnRleHQzRC5oJywKICAgICAgICAgICAgICd0ZXN0cy9D
b21wb3NpdG9yRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNELmgnLAorICAgICAgICAgICAgJ3Rlc3Rz
L0RlY2ltYWxUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvRHJhZ0ltYWdlVGVzdC5jcHAn
LAogICAgICAgICAgICAgJ3Rlc3RzL0RyYXdpbmdCdWZmZXJDaHJvbWl1bVRlc3QuY3BwJywKICAg
ICAgICAgICAgICd0ZXN0cy9GYWtlQ0NMYXllclRyZWVIb3N0Q2xpZW50LmgnLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9EZWNpbWFsVGVzdC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0RlY2ltYWxUZXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NGJiYjYz
MzI2MGFjNWNjMjk2NzkwYTgxOTJjMmU1ZjQxYmExNDVmCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9EZWNpbWFsVGVzdC5jcHAKQEAgLTAsMCArMSw1MDAg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRGVjaW1hbC5oIgorCisjaW5jbHVkZSA8
Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworOjpzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoOjpzdGQ6Om9zdHJlYW0m
IG9zLCBjb25zdCBEZWNpbWFsJiBkZWNpbWFsKQoreworICAgIERlY2ltYWw6OkVuY29kZWREYXRh
IGRhdGEgPSBkZWNpbWFsLnZhbHVlKCk7CisgICAgcmV0dXJuIG9zIAorICAgICAgICA8PCAiRGVj
aW1hbCgiIDw8IFN0cmluZzo6bnVtYmVyKGRhdGEuY29lZmZpY2llbnQoKSkuYXNjaWkoKS5kYXRh
KCkKKyAgICAgICAgPDwgIiwgIiA8PCBTdHJpbmc6Om51bWJlcihkYXRhLmV4cG9uZW50KCkpLmFz
Y2lpKCkuZGF0YSgpCisgICAgICAgIDw8ICIsICIgPDwgU3RyaW5nOjpudW1iZXIoZGF0YS5zaWdu
KCkpLmFzY2lpKCkuZGF0YSgpCisgICAgICAgIDw8ICIpPSIgPDwgZGVjaW1hbC50b1N0cmluZygp
LmFzY2lpKCkuZGF0YSgpOworfQorCit9IC8vIFdlYkNvcmUKKworbmFtZXNwYWNlIERlY2ltYWxU
ZXN0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKKy8vIFNpbXVsYXRlIFdlYkNvcmUv
aHRtbC9TdGVwUmFuZ2UKK2NsYXNzIERlY2ltYWxTdGVwUmFuZ2UgeworcHVibGljOgorICAgIERl
Y2ltYWwgbWF4aW11bTsKKyAgICBEZWNpbWFsIG1pbmltdW07CisgICAgRGVjaW1hbCBzdGVwOwor
CisgICAgRGVjaW1hbFN0ZXBSYW5nZShjb25zdCBEZWNpbWFsJiBtaW5pbXVtLCBjb25zdCBEZWNp
bWFsJiBtYXhpbXVtLCBjb25zdCBEZWNpbWFsJiBzdGVwKQorICAgICAgICA6IG1heGltdW0obWF4
aW11bSkKKyAgICAgICAgLCBtaW5pbXVtKG1pbmltdW0pCisgICAgICAgICwgc3RlcChzdGVwKQor
ICAgIHsKKyAgICB9CisKKyAgICBEZWNpbWFsIGNsYW1wVmFsdWUoRGVjaW1hbCB2YWx1ZSkgY29u
c3QKKyAgICB7CisgICAgICAgIGNvbnN0IERlY2ltYWwgcmVzdWx0ID0gbWluaW11bSArICgodmFs
dWUgLSBtaW5pbXVtKSAvIHN0ZXApLnJvdW5kKCkgKiBzdGVwOworICAgICAgICBBU1NFUlQocmVz
dWx0LmlzRmluaXRlKCkpOworICAgICAgICByZXR1cm4gcmVzdWx0ID4gbWF4aW11bSA/IHJlc3Vs
dCAtIHN0ZXAgOiByZXN1bHQ7CisgICAgfQorfTsKKworY2xhc3MgRGVjaW1hbFRlc3QgOiBwdWJs
aWMgOjp0ZXN0aW5nOjpUZXN0IHsKK3Byb3RlY3RlZDoKKyAgICBEZWNpbWFsIGVuY29kZSh1aW50
NjRfdCBjb2VmZmljaWVudCwgaW50IGV4cG9uZW50LCBpbnQgc2lnbikKKyAgICB7CisgICAgICAg
IHJldHVybiBEZWNpbWFsKGNvZWZmaWNpZW50LCBleHBvbmVudCwgc2lnbik7CisgICAgfQorCisg
ICAgcHJvdGVjdGVkOiBEZWNpbWFsIGZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpCisg
ICAgeworICAgICAgICByZXR1cm4gRGVjaW1hbDo6ZnJvbVN0cmluZyhzdHJpbmcpOworICAgIH0K
KworICAgIHByb3RlY3RlZDogU3RyaW5nIHN0ZXBEb3duKGNvbnN0IFN0cmluZyYgbWluaW11bSwg
Y29uc3QgU3RyaW5nJiBtYXhpbXVtLCBjb25zdCBTdHJpbmcmIHN0ZXAsIGNvbnN0IFN0cmluZyYg
dmFsdWVTdHJpbmcsIGludCBudW1iZXJPZlN0ZXBUaW1lcykKKyAgICB7CisgICAgICAgIERlY2lt
YWxTdGVwUmFuZ2Ugc3RlcFJhbmdlKGZyb21TdHJpbmcobWluaW11bSksIGZyb21TdHJpbmcobWF4
aW11bSksIGZyb21TdHJpbmcoc3RlcCkpOworICAgICAgICBEZWNpbWFsIHZhbHVlID0gZnJvbVN0
cmluZyh2YWx1ZVN0cmluZyk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtYmVyT2ZT
dGVwVGltZXM7ICsraSkgeworICAgICAgICAgIHZhbHVlIC09IHN0ZXBSYW5nZS5zdGVwOworICAg
ICAgICAgIHZhbHVlID0gc3RlcFJhbmdlLmNsYW1wVmFsdWUodmFsdWUpOworICAgICAgICB9Cisg
ICAgICAgIHJldHVybiB2YWx1ZS50b1N0cmluZygpOworICAgIH0KKworICAgIHByb3RlY3RlZDog
U3RyaW5nIHN0ZXBVcChjb25zdCBTdHJpbmcmIG1pbmltdW0sIGNvbnN0IFN0cmluZyYgbWF4aW11
bSwgY29uc3QgU3RyaW5nJiBzdGVwLCBjb25zdCBTdHJpbmcmIHZhbHVlU3RyaW5nLCBpbnQgbnVt
YmVyT2ZTdGVwVGltZXMpCisgICAgeworICAgICAgICBEZWNpbWFsU3RlcFJhbmdlIHN0ZXBSYW5n
ZShmcm9tU3RyaW5nKG1pbmltdW0pLCBmcm9tU3RyaW5nKG1heGltdW0pLCBmcm9tU3RyaW5nKHN0
ZXApKTsKKyAgICAgICAgRGVjaW1hbCB2YWx1ZSA9IGZyb21TdHJpbmcodmFsdWVTdHJpbmcpOwor
ICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bWJlck9mU3RlcFRpbWVzOyArK2kpIHsKKyAg
ICAgICAgICB2YWx1ZSArPSBzdGVwUmFuZ2Uuc3RlcDsKKyAgICAgICAgICB2YWx1ZSA9IHN0ZXBS
YW5nZS5jbGFtcFZhbHVlKHZhbHVlKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdmFsdWUu
dG9TdHJpbmcoKTsKKyAgICB9Cit9OworCisvLyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL251bWJl
ci9udW1iZXItc3RlcHVwLXN0ZXBkb3duLWZyb20tcmVuZGVyZXIKK1RFU1RfRihEZWNpbWFsVGVz
dCwgQXBwTnVtYmVyU3RlcFVwU3RlcERvd25Gcm9tUmVuZGVyZXIpCit7CisgICAgRVhQRUNUX0VR
KFN0cmluZygiMTAiKSwgc3RlcERvd24oIjAiLCAiMTAwIiwgIjEwIiwgIjE5IiwgMSkpOworICAg
IEVYUEVDVF9FUShTdHJpbmcoIjkwIiksIHN0ZXBVcCgiMCIsICI5OSIsICIxMCIsICI4OSIsIDEp
KTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCIxIiksIHN0ZXBVcCgiMCIsICIxIiwgIjAuMzMzMzMz
MzMzMzMzMzMzMzMiLCAiMCIsIDMpKTsgLy8gc3RlcD0xLzMKKyAgICBFWFBFQ1RfRVEoU3RyaW5n
KCIxIiksIHN0ZXBVcCgiMCIsICIxIiwgIjAuMDAzOTIxNTY4NjI3NDUwOTgwIiwgIjAiLCAyNTUp
KTsgLy8gc3RlcD0xLzI1NQorICAgIEVYUEVDVF9FUShTdHJpbmcoIjEiKSwgc3RlcFVwKCIwIiwg
IjEiLCAiMC4xIiwgIjAiLCAxMCkpOworfQorCitURVNUX0YoRGVjaW1hbFRlc3QsIEFwcE51bWJl
clN0ZXBVcFN0ZXBEb3duRnJvbVJlbmRlcmVyUm91bmRpbmcpCit7CisgICAgRVhQRUNUX0VRKFN0
cmluZygiNS4wMTUiKSwgc3RlcFVwKCIwIiwgIjEwMCIsICIwLjAwNSIsICI1LjAwNSIsIDIpKTsK
KyAgICBFWFBFQ1RfRVEoU3RyaW5nKCI1LjA2IiksIHN0ZXBVcCgiMCIsICIxMDAiLCAiMC4wMDUi
LCAiNS4wMDUiLCAxMSkpOworICAgIEVYUEVDVF9FUShTdHJpbmcoIjUuMDY1IiksIHN0ZXBVcCgi
MCIsICIxMDAiLCAiMC4wMDUiLCAiNS4wMDUiLCAxMikpOworCisgICAgRVhQRUNUX0VRKFN0cmlu
ZygiNS4wMTUiKSwgc3RlcFVwKCI0IiwgIjkiLCAiMC4wMDUiLCAiNS4wMDUiLCAyKSk7CisgICAg
RVhQRUNUX0VRKFN0cmluZygiNS4wNiIpLCBzdGVwVXAoIjQiLCAiOSIsICIwLjAwNSIsICI1LjAw
NSIsIDExKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiNS4wNjUiKSwgc3RlcFVwKCI0IiwgIjki
LCAiMC4wMDUiLCAiNS4wMDUiLCAxMikpOworfQorCitURVNUX0YoRGVjaW1hbFRlc3QsIEFwcFJh
bmdlU3RlcFVwU3RlcERvd24pCit7CisgICAgRVhQRUNUX0VRKFN0cmluZygiMWUrMzgiKSwgc3Rl
cFVwKCIwIiwgIjFFMzgiLCAiMSIsICIxRTM4IiwgOSkpOworICAgIEVYUEVDVF9FUShTdHJpbmco
IjFlKzM4IiksIHN0ZXBEb3duKCIwIiwgIjFFMzgiLCAiMSIsICIxRTM4IiwgOSkpOworfQorCitU
RVNUX0YoRGVjaW1hbFRlc3QsIEVuY29kZWREYXRhKQoreworICAgIEVYUEVDVF9FUShlbmNvZGUo
MCwgMCwgMCksIGVuY29kZSgwLCAwLCAwKSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSgwLCAwLCAx
KSwgZW5jb2RlKDAsIDAsIDEpKTsKKyAgICBFWFBFQ1RfRVEoRGVjaW1hbCgxKSwgRGVjaW1hbCgx
KSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSgxLCAwLCAxKSwgZW5jb2RlKDEsIDAsIDEpKTsKKyAg
ICBFWFBFQ1RfRVEoRGVjaW1hbDo6aW5maW5pdHkoMCksIGVuY29kZSgxLCAyMDAwLCAwKSk7Cisg
ICAgRVhQRUNUX0VRKERlY2ltYWw6Onplcm8oMCksIGVuY29kZSgxLCAtMjAwMCwgMCkpOworfQor
CitURVNUX0YoRGVjaW1hbFRlc3QsIEZyb21JbnQzMikKK3sKKyAgICBFWFBFQ1RfRVEoZW5jb2Rl
KDAsIDAsIDApLCBEZWNpbWFsKDApKTsKKyAgICBFWFBFQ1RfRVEoRGVjaW1hbCgxKSwgRGVjaW1h
bCgxKSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSgxLCAwLCAxKSwgRGVjaW1hbCgtMSkpOworICAg
IEVYUEVDVF9FUShlbmNvZGUoMTAwLCAwLCAwKSwgRGVjaW1hbCgxMDApKTsKKyAgICBFWFBFQ1Rf
RVEoZW5jb2RlKDEwMCwgMCwgMSksIERlY2ltYWwoLTEwMCkpOworfQorCitURVNUX0YoRGVjaW1h
bFRlc3QsIEZyb21TdHJpbmcpCit7CisgICAgRVhQRUNUX0VRKGVuY29kZSgwLCAwLCAwKSwgZnJv
bVN0cmluZygiMCIpKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDAsIDAsIDEpLCBmcm9tU3RyaW5n
KCItMCIpKTsKKyAgICBFWFBFQ1RfRVEoRGVjaW1hbCgxKSwgZnJvbVN0cmluZygiMSIpKTsKKyAg
ICBFWFBFQ1RfRVEoZW5jb2RlKDEsIDAsIDEpLCBmcm9tU3RyaW5nKCItMSIpKTsKKyAgICBFWFBF
Q1RfRVEoRGVjaW1hbCgxKSwgZnJvbVN0cmluZygiMDEiKSk7CisgICAgRVhQRUNUX0VRKGVuY29k
ZSgwLCAzLCAwKSwgZnJvbVN0cmluZygiMEUzIikpOworICAgIEVYUEVDVF9FUShlbmNvZGUoMTAw
LCAwLCAwKSwgZnJvbVN0cmluZygiMTAwIikpOworICAgIEVYUEVDVF9FUShlbmNvZGUoMTAwLCAw
LCAxKSwgZnJvbVN0cmluZygiLTEwMCIpKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDEyMywgMCAt
IDIsIDApLCBmcm9tU3RyaW5nKCIxLjIzIikpOworICAgIEVYUEVDVF9FUShlbmNvZGUoMTIzLCAw
IC0gMiwgMSksIGZyb21TdHJpbmcoIi0xLjIzIikpOworICAgIEVYUEVDVF9FUShlbmNvZGUoMTIz
LCA4LCAwKSwgZnJvbVN0cmluZygiMS4yM0UxMCIpKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDEy
MywgOCwgMSksIGZyb21TdHJpbmcoIi0xLjIzRTEwIikpOworICAgIEVYUEVDVF9FUShlbmNvZGUo
MTIzLCA4LCAwKSwgZnJvbVN0cmluZygiMS4yM0UrMTAiKSk7CisgICAgRVhQRUNUX0VRKGVuY29k
ZSgxMjMsIDgsIDEpLCBmcm9tU3RyaW5nKCItMS4yM0UrMTAiKSk7CisgICAgRVhQRUNUX0VRKGVu
Y29kZSgxMjMsIC0xMiwgMCksIGZyb21TdHJpbmcoIjEuMjNFLTEwIikpOworICAgIEVYUEVDVF9F
UShlbmNvZGUoMTIzLCAtMTIsIDEpLCBmcm9tU3RyaW5nKCItMS4yM0UtMTAiKSk7CisgICAgRVhQ
RUNUX0VRKGVuY29kZSgxMjMsIC0zLCAwKSwgZnJvbVN0cmluZygiMC4xMjMiKSk7CisgICAgRVhQ
RUNUX0VRKGVuY29kZSgwLCAtMiwgMCksIGZyb21TdHJpbmcoIjAwLjAwIikpOworICAgIEVYUEVD
VF9FUShlbmNvZGUoMSwgMiwgMCksIGZyb21TdHJpbmcoIjFFMiIpKTsKKyAgICBFWFBFQ1RfRVEo
RGVjaW1hbDo6aW5maW5pdHkoMCksIGZyb21TdHJpbmcoIjFFMjAwMDAiKSk7CisgICAgRVhQRUNU
X0VRKERlY2ltYWw6Onplcm8oMCksIGZyb21TdHJpbmcoIjFFLTIwMDAwIikpOworICAgIEVYUEVD
VF9FUShlbmNvZGUoMTAwMCwgMTAyMywgMCksIGZyb21TdHJpbmcoIjFFMTAyNiIpKTsKKyAgICBF
WFBFQ1RfRVEoRGVjaW1hbDo6emVybygwKSwgZnJvbVN0cmluZygiMUUtMTAyNiIpKTsKKyAgICBF
WFBFQ1RfRVEoRGVjaW1hbDo6aW5maW5pdHkoMCksIGZyb21TdHJpbmcoIjEyMzQ1Njc4OTBFMTAz
NiIpKTsKK30KKworVEVTVF9GKERlY2ltYWxUZXN0LCBmcm9tU3RyaW5nVHJ1bmNhdGVkKQorewor
ICAgIEVYUEVDVF9FUShEZWNpbWFsOjpxdWlldE5hTigwKSwgZnJvbVN0cmluZygieCIpKTsKKyAg
ICBFWFBFQ1RfRVEoRGVjaW1hbDo6cXVpZXROYU4oMCksIGZyb21TdHJpbmcoIjAuIikpOworICAg
IEVYUEVDVF9FUShEZWNpbWFsOjpxdWlldE5hTigwKSwgZnJvbVN0cmluZygiMXgiKSk7CisKKyAg
ICBFWFBFQ1RfRVEoRGVjaW1hbDo6cXVpZXROYU4oMCksIGZyb21TdHJpbmcoIjFFeCIpKTsKKyAg
ICBFWFBFQ1RfRVEoRGVjaW1hbDo6cXVpZXROYU4oMCksIGZyb21TdHJpbmcoIjFFMngiKSk7Cisg
ICAgRVhQRUNUX0VRKERlY2ltYWw6OnF1aWV0TmFOKDApLCBmcm9tU3RyaW5nKCIxRSt4IikpOwor
fQorCitURVNUX0YoRGVjaW1hbFRlc3QsIE9wQWRkKQoreworICAgIEVYUEVDVF9FUShlbmNvZGUo
MCwgMCwgMCksIERlY2ltYWwoMCkgKyBEZWNpbWFsKDApKTsKKyAgICBFWFBFQ1RfRVEoRGVjaW1h
bCgxKSwgRGVjaW1hbCgyKSArIERlY2ltYWwoLTEpKTsKKyAgICBFWFBFQ1RfRVEoRGVjaW1hbCgx
KSwgRGVjaW1hbCgtMSkgKyBEZWNpbWFsKDIpKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDEwMCwg
MCwgMCksIERlY2ltYWwoOTkpICsgRGVjaW1hbCgxKSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSgx
MDAsIDAsIDEpLCBEZWNpbWFsKC01MCkgKyBEZWNpbWFsKC01MCkpOworICAgIEVYUEVDVF9FUShl
bmNvZGUoMTAwMDAwMDAwMDAwMDAwMCwgMzUsIDApLCBlbmNvZGUoMSwgNTAsIDApICsgRGVjaW1h
bCgxKSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSgxMDAwMDAwMDAwMDAwMDAwLCAzNSwgMCksIERl
Y2ltYWwoMSkgKyBlbmNvZGUoMSwgNTAsIDApKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDEwMDAw
MDAwMDAxLCAwLCAwKSwgZW5jb2RlKDEsIDEwLCAwKSArIERlY2ltYWwoMSkpOworICAgIEVYUEVD
VF9FUShlbmNvZGUoMTAwMDAwMDAwMDEsIDAsIDApLCBEZWNpbWFsKDEpICsgZW5jb2RlKDEsIDEw
LCAwKSk7Cit9CisKK1RFU1RfRihEZWNpbWFsVGVzdCwgT3BBZGRTcGVjaWFsVmFsdWVzKQorewor
ICAgIGNvbnN0IERlY2ltYWwgaW5mKERlY2ltYWw6OmluZmluaXR5KDApKTsKKyAgICBjb25zdCBE
ZWNpbWFsIG1pbmYoRGVjaW1hbDo6aW5maW5pdHkoMSkpOworICAgIGNvbnN0IERlY2ltYWwgbmFu
KERlY2ltYWw6OnF1aWV0TmFOKDApKTsKKyAgICBjb25zdCBEZWNpbWFsIG1uYW4oRGVjaW1hbDo6
cXVpZXROYU4oMSkpOworICAgIGNvbnN0IERlY2ltYWwgdGVuKDEwKTsKKworICAgIEVYUEVDVF9F
UShpbmYsIGluZiArIGluZik7CisgICAgRVhQRUNUX0VRKG5hbiwgaW5mICsgbWluZik7CisgICAg
RVhQRUNUX0VRKG5hbiwgbWluZiArIGluZik7CisgICAgRVhQRUNUX0VRKG1pbmYsIG1pbmYgKyBt
aW5mKTsKKworICAgIEVYUEVDVF9FUShpbmYsIGluZiArIHRlbik7CisgICAgRVhQRUNUX0VRKGlu
ZiwgdGVuICsgaW5mKTsKKyAgICBFWFBFQ1RfRVEobWluZiwgbWluZiArIHRlbik7CisgICAgRVhQ
RUNUX0VRKG1pbmYsIHRlbiArIG1pbmYpOworCisgICAgRVhQRUNUX0VRKG5hbiwgbmFuICsgbmFu
KTsKKyAgICBFWFBFQ1RfRVEobmFuLCBuYW4gKyBtbmFuKTsKKyAgICBFWFBFQ1RfRVEobmFuLCBu
YW4gKyB0ZW4pOworCisgICAgRVhQRUNUX0VRKG1uYW4sIG1uYW4gKyBuYW4pOworICAgIEVYUEVD
VF9FUShtbmFuLCBtbmFuICsgbW5hbik7CisgICAgRVhQRUNUX0VRKG1uYW4sIG1uYW4gKyB0ZW4p
OworCisgICAgRVhQRUNUX0VRKG5hbiwgdGVuICsgbmFuKTsKKyAgICBFWFBFQ1RfRVEobW5hbiwg
dGVuICsgbW5hbik7Cit9CisKK1RFU1RfRihEZWNpbWFsVGVzdCwgT3BDb21wYXJlKQoreworICAg
IEVYUEVDVF9UUlVFKERlY2ltYWwoMCkgPT0gRGVjaW1hbCgwKSk7CisgICAgRVhQRUNUX1RSVUUo
RGVjaW1hbCgwKSAhPSBEZWNpbWFsKDEpKTsKKyAgICBFWFBFQ1RfVFJVRShEZWNpbWFsKDApIDwg
RGVjaW1hbCgxKSk7CisgICAgRVhQRUNUX1RSVUUoRGVjaW1hbCgwKSA8PSBEZWNpbWFsKDApKTsK
KyAgICBFWFBFQ1RfVFJVRShEZWNpbWFsKDApID4gRGVjaW1hbCgtMSkpOworICAgIEVYUEVDVF9U
UlVFKERlY2ltYWwoMCkgPj0gRGVjaW1hbCgwKSk7CisKKyAgICBFWFBFQ1RfRkFMU0UoRGVjaW1h
bCgxKSA9PSBEZWNpbWFsKDIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoRGVjaW1hbCgxKSAhPSBEZWNp
bWFsKDEpKTsKKyAgICBFWFBFQ1RfRkFMU0UoRGVjaW1hbCgxKSA8IERlY2ltYWwoMCkpOworICAg
IEVYUEVDVF9GQUxTRShEZWNpbWFsKDEpIDw9IERlY2ltYWwoMCkpOworICAgIEVYUEVDVF9GQUxT
RShEZWNpbWFsKDEpID4gRGVjaW1hbCgyKSk7CisgICAgRVhQRUNUX0ZBTFNFKERlY2ltYWwoMSkg
Pj0gRGVjaW1hbCgyKSk7Cit9CisKK1RFU1RfRihEZWNpbWFsVGVzdCwgT3BDb21wYXJlU3BlY2lh
bFZhbHVlcykKK3sKKyAgICBFWFBFQ1RfVFJVRShEZWNpbWFsKDEpIDwgRGVjaW1hbDo6aW5maW5p
dHkoMCkpOworICAgIEVYUEVDVF9UUlVFKERlY2ltYWwoMSkgPiBEZWNpbWFsOjppbmZpbml0eSgx
KSk7Cit9CisKK1RFU1RfRihEZWNpbWFsVGVzdCwgT3BEaXYpCit7CisgICAgRVhQRUNUX0VRKGVu
Y29kZSgwLCAwLCAwKSwgRGVjaW1hbCgwKSAvIERlY2ltYWwoMSkpOworICAgIEVYUEVDVF9FUShl
bmNvZGUoMiwgMCwgMSksIERlY2ltYWwoMikgLyBEZWNpbWFsKC0xKSk7CisgICAgRVhQRUNUX0VR
KGVuY29kZSg1LCAtMSwgMSksIERlY2ltYWwoLTEpIC8gRGVjaW1hbCgyKSk7CisgICAgRVhQRUNU
X0VRKGVuY29kZSg5OSwgMCwgMCksIERlY2ltYWwoOTkpIC8gRGVjaW1hbCgxKSk7CisgICAgRVhQ
RUNUX0VRKERlY2ltYWwoMSksIERlY2ltYWwoLTUwKSAvIERlY2ltYWwoLTUwKSk7CisgICAgRVhQ
RUNUX0VRKGVuY29kZSgzMzMzMzMzMzMzMzMzMzMzLCAtMTYsIDApLCBEZWNpbWFsKDEpIC8gRGVj
aW1hbCgzKSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSgxMjM0NTY3ODkwMTIzNCwgLTEsIDApLCBl
bmNvZGUoMTIzNDU2Nzg5MDEyMzQsIDAsIDApIC8gRGVjaW1hbCgxMCkpOworfQorCitURVNUX0Yo
RGVjaW1hbFRlc3QsIE9wRGl2U3BlY2lhbFZhbHVlcykKK3sKKyAgICBjb25zdCBEZWNpbWFsIGlu
ZihEZWNpbWFsOjppbmZpbml0eSgwKSk7CisgICAgY29uc3QgRGVjaW1hbCBtaW5mKERlY2ltYWw6
OmluZmluaXR5KDEpKTsKKyAgICBjb25zdCBEZWNpbWFsIG5hbihEZWNpbWFsOjpxdWlldE5hTigw
KSk7CisgICAgY29uc3QgRGVjaW1hbCBtbmFuKERlY2ltYWw6OnF1aWV0TmFOKDEpKTsKKyAgICBj
b25zdCBEZWNpbWFsIHplcm8oRGVjaW1hbDo6emVybygwKSk7CisgICAgY29uc3QgRGVjaW1hbCBt
emVybyhEZWNpbWFsOjp6ZXJvKDEpKTsKKyAgICBjb25zdCBEZWNpbWFsIHRlbigxMCk7CisgICAg
Y29uc3QgRGVjaW1hbCBtdGVuKC0xMCk7CisKKyAgICBFWFBFQ1RfRVEobmFuLCB6ZXJvIC8gemVy
byk7CisgICAgRVhQRUNUX0VRKG5hbiwgemVybyAvIG16ZXJvKTsKKyAgICBFWFBFQ1RfRVEobmFu
LCBtemVybyAvIHplcm8pOworICAgIEVYUEVDVF9FUShuYW4sIG16ZXJvIC8gbXplcm8pOworCisg
ICAgRVhQRUNUX0VRKGluZiwgdGVuIC8gemVybyk7CisgICAgRVhQRUNUX0VRKG1pbmYsIHRlbiAv
IG16ZXJvKTsKKyAgICBFWFBFQ1RfRVEobWluZiwgbXRlbiAvIHplcm8pOworICAgIEVYUEVDVF9F
UShpbmYsIG10ZW4gLyBtemVybyk7CisKKyAgICBFWFBFQ1RfRVEoaW5mLCBpbmYgLyB6ZXJvKTsK
KyAgICBFWFBFQ1RfRVEobWluZiwgaW5mIC8gbXplcm8pOworICAgIEVYUEVDVF9FUShtaW5mLCBt
aW5mIC8gemVybyk7CisgICAgRVhQRUNUX0VRKGluZiwgbWluZiAvIG16ZXJvKTsKKworICAgIEVY
UEVDVF9FUShuYW4sIGluZiAvIGluZik7CisgICAgRVhQRUNUX0VRKG5hbiwgaW5mIC8gbWluZik7
CisgICAgRVhQRUNUX0VRKG5hbiwgbWluZiAvIGluZik7CisgICAgRVhQRUNUX0VRKG5hbiwgbWlu
ZiAvIG1pbmYpOworCisgICAgRVhQRUNUX0VRKHplcm8sIHRlbiAvIGluZik7CisgICAgRVhQRUNU
X0VRKG16ZXJvLCB0ZW4gLyBtaW5mKTsKKyAgICBFWFBFQ1RfRVEobXplcm8sIG10ZW4gLyBpbmYp
OworICAgIEVYUEVDVF9FUSh6ZXJvLCBtdGVuIC8gbWluZik7CisKKyAgICBFWFBFQ1RfRVEobmFu
LCBuYW4gLyBuYW4pOworICAgIEVYUEVDVF9FUShuYW4sIG5hbiAvIG1uYW4pOworICAgIEVYUEVD
VF9FUShuYW4sIG5hbiAvIHRlbik7CisKKyAgICBFWFBFQ1RfRVEobW5hbiwgbW5hbiAvIG5hbik7
CisgICAgRVhQRUNUX0VRKG1uYW4sIG1uYW4gLyBtbmFuKTsKKyAgICBFWFBFQ1RfRVEobW5hbiwg
bW5hbiAvIHRlbik7CisKKyAgICBFWFBFQ1RfRVEobmFuLCB0ZW4gLyBuYW4pOworICAgIEVYUEVD
VF9FUShtbmFuLCB0ZW4gLyBtbmFuKTsKK30KKworVEVTVF9GKERlY2ltYWxUZXN0LCBPcE11bCkK
K3sKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDAsIDAsIDApLCBEZWNpbWFsKDApICogRGVjaW1hbCgw
KSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSgyLCAwLCAxKSwgRGVjaW1hbCgyKSAqIERlY2ltYWwo
LTEpKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDIsIDAsIDEpLCBEZWNpbWFsKC0xKSAqIERlY2lt
YWwoMikpOworICAgIEVYUEVDVF9FUShlbmNvZGUoOTksIDAsIDApLCBEZWNpbWFsKDk5KSAqIERl
Y2ltYWwoMSkpOworICAgIEVYUEVDVF9FUShlbmNvZGUoMjUwMCwgMCwgMCksIERlY2ltYWwoLTUw
KSAqIERlY2ltYWwoLTUwKSk7Cit9CisKK1RFU1RfRihEZWNpbWFsVGVzdCwgT3BNdWxTcGVjaWFs
VmFsdWVzKQoreworICAgIGNvbnN0IERlY2ltYWwgaW5mKERlY2ltYWw6OmluZmluaXR5KDApKTsK
KyAgICBjb25zdCBEZWNpbWFsIG1pbmYoRGVjaW1hbDo6aW5maW5pdHkoMSkpOworICAgIGNvbnN0
IERlY2ltYWwgbmFuKERlY2ltYWw6OnF1aWV0TmFOKDApKTsKKyAgICBjb25zdCBEZWNpbWFsIG1u
YW4oRGVjaW1hbDo6cXVpZXROYU4oMSkpOworICAgIGNvbnN0IERlY2ltYWwgdGVuKDEwKTsKKyAg
ICBjb25zdCBEZWNpbWFsIG10ZW4oLTEwKTsKKyAgICBjb25zdCBEZWNpbWFsIHplcm8oRGVjaW1h
bDo6emVybygwKSk7CisgICAgY29uc3QgRGVjaW1hbCBtemVybyhEZWNpbWFsOjp6ZXJvKDEpKTsK
KworICAgIEVYUEVDVF9FUShpbmYsIGluZiAqIGluZik7CisgICAgRVhQRUNUX0VRKG1pbmYsIGlu
ZiAqIG1pbmYpOworICAgIEVYUEVDVF9FUShtaW5mLCBtaW5mICogaW5mKTsKKyAgICBFWFBFQ1Rf
RVEoaW5mLCBtaW5mICogbWluZik7CisKKyAgICBFWFBFQ1RfRVEobmFuLCBpbmYgKiB6ZXJvKTsK
KyAgICBFWFBFQ1RfRVEobmFuLCB6ZXJvICogbWluZik7CisgICAgRVhQRUNUX0VRKG5hbiwgbWlu
ZiAqIHplcm8pOworICAgIEVYUEVDVF9FUShuYW4sIG1pbmYgKiB6ZXJvKTsKKworICAgIEVYUEVD
VF9FUShuYW4sIGluZiAqIG16ZXJvKTsKKyAgICBFWFBFQ1RfRVEobmFuLCBtemVybyAqIG1pbmYp
OworICAgIEVYUEVDVF9FUShuYW4sIG1pbmYgKiBtemVybyk7CisgICAgRVhQRUNUX0VRKG5hbiwg
bWluZiAqIG16ZXJvKTsKKworICAgIEVYUEVDVF9FUShpbmYsIGluZiAqIHRlbik7CisgICAgRVhQ
RUNUX0VRKGluZiwgdGVuICogaW5mKTsKKyAgICBFWFBFQ1RfRVEobWluZiwgbWluZiAqIHRlbik7
CisgICAgRVhQRUNUX0VRKG1pbmYsIHRlbiAqIG1pbmYpOworCisgICAgRVhQRUNUX0VRKG1pbmYs
IGluZiAqIG10ZW4pOworICAgIEVYUEVDVF9FUShtaW5mLCBtdGVuICogaW5mKTsKKyAgICBFWFBF
Q1RfRVEoaW5mLCBtaW5mICogbXRlbik7CisgICAgRVhQRUNUX0VRKGluZiwgbXRlbiAqIG1pbmYp
OworCisgICAgRVhQRUNUX0VRKG5hbiwgbmFuICogbmFuKTsKKyAgICBFWFBFQ1RfRVEobmFuLCBu
YW4gKiBtbmFuKTsKKyAgICBFWFBFQ1RfRVEobmFuLCBuYW4gKiB0ZW4pOworCisgICAgRVhQRUNU
X0VRKG1uYW4sIG1uYW4gKiBuYW4pOworICAgIEVYUEVDVF9FUShtbmFuLCBtbmFuICogbW5hbik7
CisgICAgRVhQRUNUX0VRKG1uYW4sIG1uYW4gKiB0ZW4pOworCisgICAgRVhQRUNUX0VRKG5hbiwg
dGVuICogbmFuKTsKKyAgICBFWFBFQ1RfRVEobW5hbiwgdGVuICogbW5hbik7Cit9CisKK1RFU1Rf
RihEZWNpbWFsVGVzdCwgT3BTdWIpCit7CisgICAgRVhQRUNUX0VRKGVuY29kZSgwLCAwLCAwKSwg
RGVjaW1hbCgwKSAtIERlY2ltYWwoMCkpOworICAgIEVYUEVDVF9FUShlbmNvZGUoMywgMCwgMCks
IERlY2ltYWwoMikgLSBEZWNpbWFsKC0xKSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSgzLCAwLCAx
KSwgRGVjaW1hbCgtMSkgLSBEZWNpbWFsKDIpKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDk4LCAw
LCAwKSwgRGVjaW1hbCg5OSkgLSBEZWNpbWFsKDEpKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDAs
IDAsIDApLCBEZWNpbWFsKC01MCkgLSBEZWNpbWFsKC01MCkpOworICAgIEVYUEVDVF9FUShlbmNv
ZGUoMTAwMDAwMDAwMDAwMDAwMCwgMzUsIDApLCBlbmNvZGUoMSwgNTAsIDApIC0gRGVjaW1hbCgx
KSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSgxMDAwMDAwMDAwMDAwMDAwLCAzNSwgMSksIERlY2lt
YWwoMSkgLSBlbmNvZGUoMSwgNTAsIDApKTsKK30KKworVEVTVF9GKERlY2ltYWxUZXN0LCBPcFN1
YlNwZWNpYWxWYWx1ZXMpCit7CisgICAgY29uc3QgRGVjaW1hbCBpbmYoRGVjaW1hbDo6aW5maW5p
dHkoMCkpOworICAgIGNvbnN0IERlY2ltYWwgbWluZihEZWNpbWFsOjppbmZpbml0eSgxKSk7Cisg
ICAgY29uc3QgRGVjaW1hbCBuYW4oRGVjaW1hbDo6cXVpZXROYU4oMCkpOworICAgIGNvbnN0IERl
Y2ltYWwgbW5hbihEZWNpbWFsOjpxdWlldE5hTigxKSk7CisgICAgY29uc3QgRGVjaW1hbCB0ZW4o
MTApOworCisgICAgRVhQRUNUX0VRKG5hbiwgaW5mIC0gaW5mKTsKKyAgICBFWFBFQ1RfRVEoaW5m
LCBpbmYgLSBtaW5mKTsKKyAgICBFWFBFQ1RfRVEobWluZiwgbWluZiAtIGluZik7CisgICAgRVhQ
RUNUX0VRKG5hbiwgbWluZiAtIG1pbmYpOworCisgICAgRVhQRUNUX0VRKGluZiwgaW5mIC0gdGVu
KTsKKyAgICBFWFBFQ1RfRVEobWluZiwgdGVuIC0gaW5mKTsKKyAgICBFWFBFQ1RfRVEobWluZiwg
bWluZiAtIHRlbik7CisgICAgRVhQRUNUX0VRKGluZiwgdGVuIC0gbWluZik7CisKKyAgICBFWFBF
Q1RfRVEobmFuLCBuYW4gLSBuYW4pOworICAgIEVYUEVDVF9FUShuYW4sIG5hbiAtIG1uYW4pOwor
ICAgIEVYUEVDVF9FUShuYW4sIG5hbiAtIHRlbik7CisKKyAgICBFWFBFQ1RfRVEobW5hbiwgbW5h
biAtIG5hbik7CisgICAgRVhQRUNUX0VRKG1uYW4sIG1uYW4gLSBtbmFuKTsKKyAgICBFWFBFQ1Rf
RVEobW5hbiwgbW5hbiAtIHRlbik7CisKKyAgICBFWFBFQ1RfRVEobmFuLCB0ZW4gLSBuYW4pOwor
ICAgIEVYUEVDVF9FUShtbmFuLCB0ZW4gLSBtbmFuKTsKK30KKworVEVTVF9GKERlY2ltYWxUZXN0
LCBQcm9wZXJ0aWVzKQoreworICAgIEVYUEVDVF9UUlVFKERlY2ltYWwoMCkuaXNGaW5pdGUoKSk7
CisgICAgRVhQRUNUX0ZBTFNFKERlY2ltYWwoMCkuaXNTcGVjaWFsKCkpOworfQorCitURVNUX0Yo
RGVjaW1hbFRlc3QsIFByb3BlcnRpZXNTcGVjaWFsKQoreworICAgIEVYUEVDVF9UUlVFKERlY2lt
YWw6OmluZmluaXR5KDApLmlzU3BlY2lhbCgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoRGVjaW1hbDo6
aW5maW5pdHkoMCkuaXNGaW5pdGUoKSk7CisKKyAgICBFWFBFQ1RfVFJVRShEZWNpbWFsOjppbmZp
bml0eSgxKS5pc1NwZWNpYWwoKSk7CisgICAgRVhQRUNUX0ZBTFNFKERlY2ltYWw6OmluZmluaXR5
KDEpLmlzRmluaXRlKCkpOworCisgICAgRVhQRUNUX1RSVUUoRGVjaW1hbDo6cXVpZXROYU4oMCku
aXNTcGVjaWFsKCkpOworICAgIEVYUEVDVF9GQUxTRShEZWNpbWFsOjpxdWlldE5hTigwKS5pc0Zp
bml0ZSgpKTsKKworICAgIEVYUEVDVF9UUlVFKERlY2ltYWw6OnF1aWV0TmFOKDEpLmlzU3BlY2lh
bCgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoRGVjaW1hbDo6cXVpZXROYU4oMSkuaXNGaW5pdGUoKSk7
Cit9CisKK1RFU1RfRihEZWNpbWFsVGVzdCwgUmVtYWluZGVyKQoreworICAgIEVYUEVDVF9FUShl
bmNvZGUoOSwgLTEsIDEpLCBlbmNvZGUoMjEsIC0xLCAwKS5yZW1haW5kZXIoMykpOworICAgIEVY
UEVDVF9FUShEZWNpbWFsKDEpLCBEZWNpbWFsKDEwKS5yZW1haW5kZXIoMykpOworICAgIEVYUEVD
VF9FUShlbmNvZGUoMSwgMCwgMSksIERlY2ltYWwoLTEwKS5yZW1haW5kZXIoMykpOworICAgIEVY
UEVDVF9FUShlbmNvZGUoMiwgLTEsIDApLCBlbmNvZGUoMTAyLCAtMSwgMCkucmVtYWluZGVyKDEp
KTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDEsIC0xLCAwKSwgRGVjaW1hbCgxMCkucmVtYWluZGVy
KGVuY29kZSgzLCAtMSwgMCkpKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDMsIC0xLCAtMSksIGVu
Y29kZSgzNiwgLTEsIDApLnJlbWFpbmRlcihlbmNvZGUoMTMsIC0xLCAwKSkpOworfQorCitURVNU
X0YoRGVjaW1hbFRlc3QsIFJlbWFpbmRlclNwZWNpYWxWYWx1ZXMpCit7CisgICAgRVhQRUNUX0VR
KERlY2ltYWw6OmluZmluaXR5KDApLCBEZWNpbWFsOjppbmZpbml0eSgwKS5yZW1haW5kZXIoMSkp
OworICAgIEVYUEVDVF9FUShEZWNpbWFsOjpxdWlldE5hTigwKSwgRGVjaW1hbDo6cXVpZXROYU4o
MCkucmVtYWluZGVyKDEpKTsKK30KKworVEVTVF9GKERlY2ltYWxUZXN0LCBSb3VuZCkKK3sKKyAg
ICBFWFBFQ1RfRVEoRGVjaW1hbCgxKSwgKERlY2ltYWwoOSkgLyBEZWNpbWFsKDEwKSkucm91bmQo
KSk7CisgICAgRVhQRUNUX0VRKERlY2ltYWwoMjUpLCAoRGVjaW1hbCg1KSAvIGZyb21TdHJpbmco
IjAuMjAwIikpLnJvdW5kKCkpOworICAgIEVYUEVDVF9FUShEZWNpbWFsKDMpLCAoRGVjaW1hbCg1
KSAvIERlY2ltYWwoMikpLnJvdW5kKCkpOworICAgIEVYUEVDVF9FUShEZWNpbWFsKDEpLCAoRGVj
aW1hbCgyKSAvIERlY2ltYWwoMykpLnJvdW5kKCkpOworICAgIEVYUEVDVF9FUShEZWNpbWFsKDMp
LCAoRGVjaW1hbCgxMCkgLyBEZWNpbWFsKDMpKS5yb3VuZCgpKTsKKyAgICBFWFBFQ1RfRVEoRGVj
aW1hbCgzKSwgKERlY2ltYWwoMSkgLyBmcm9tU3RyaW5nKCIwLjMiKSkucm91bmQoKSk7CisgICAg
RVhQRUNUX0VRKERlY2ltYWwoMTApLCAoRGVjaW1hbCgxKSAvIGZyb21TdHJpbmcoIjAuMSIpKS5y
b3VuZCgpKTsKKyAgICBFWFBFQ1RfRVEoRGVjaW1hbCg1KSwgKERlY2ltYWwoMSkgLyBmcm9tU3Ry
aW5nKCIwLjIiKSkucm91bmQoKSk7CisgICAgRVhQRUNUX0VRKERlY2ltYWwoMTApLCAoZnJvbVN0
cmluZygiMTAuMiIpIC8gMSkucm91bmQoKSk7Cit9CisKK1RFU1RfRihEZWNpbWFsVGVzdCwgUm91
bmRTZXBjaWFsVmFsdWVzKQoreworICAgIEVYUEVDVF9FUShEZWNpbWFsOjppbmZpbml0eSgwKSwg
RGVjaW1hbDo6aW5maW5pdHkoMCkucm91bmQoKSk7CisgICAgRVhQRUNUX0VRKERlY2ltYWw6OnF1
aWV0TmFOKDApLCBEZWNpbWFsOjpxdWlldE5hTigwKS5yb3VuZCgpKTsKK30KKworVEVTVF9GKERl
Y2ltYWxUZXN0LCBUb1N0cmluZykKK3sKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCIwIiksIERlY2lt
YWwoMCkudG9TdHJpbmcoKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiMSIpLCBEZWNpbWFsKDEp
LnRvU3RyaW5nKCkpOworICAgIEVYUEVDVF9FUShTdHJpbmcoIjAuMDAxIiksIGVuY29kZSgxLCAt
MywgMCkudG9TdHJpbmcoKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiLTEiKSwgRGVjaW1hbCgt
MSkudG9TdHJpbmcoKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiMWUrMTAiKSwgZW5jb2RlKDEs
IDEwLCAwKS50b1N0cmluZygpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCItMWUrMTAiKSwgZW5j
b2RlKDEsIDEwLCAxKS50b1N0cmluZygpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCIxZS0xMCIp
LCBlbmNvZGUoMSwgLTEwLCAwKS50b1N0cmluZygpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCIt
MWUtMTAiKSwgZW5jb2RlKDEsIC0xMCwgMSkudG9TdHJpbmcoKSk7CisgICAgRVhQRUNUX0VRKFN0
cmluZygiMTIuMzQiKSwgZW5jb2RlKDEyMzQsIC0yLCAwKS50b1N0cmluZygpKTsKKyAgICBFWFBF
Q1RfRVEoU3RyaW5nKCItMTIuMzQiKSwgZW5jb2RlKDEyMzQsIC0yLCAxKS50b1N0cmluZygpKTsK
KyAgICBFWFBFQ1RfRVEoU3RyaW5nKCIzLjQ1NmUrNyIpLCBlbmNvZGUoMzQ1NiwgNCwgMCkudG9T
dHJpbmcoKSk7Cit9CisKK1RFU1RfRihEZWNpbWFsVGVzdCwgVG9TdHJpbmdTcGVjaWFsKQorewor
ICAgIEVYUEVDVF9FUShTdHJpbmcoIkluZmluaXR5IiksIERlY2ltYWw6OmluZmluaXR5KDApLnRv
U3RyaW5nKCkpOworICAgIEVYUEVDVF9FUShTdHJpbmcoIi1JbmZpbml0eSIpLCBEZWNpbWFsOjpp
bmZpbml0eSgxKS50b1N0cmluZygpKTsKKworICAgIEVYUEVDVF9FUShTdHJpbmcoIk5hTiIpLCBE
ZWNpbWFsOjpxdWlldE5hTigwKS50b1N0cmluZygpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCIt
TmFOIiksIERlY2ltYWw6OnF1aWV0TmFOKDEpLnRvU3RyaW5nKCkpOworfQorCit9IC8vIERlY2lt
YWxUZXN0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggZjg1OTlhOWY1OGUyY2ZkODdlODAxZjYwNmVmMTZkMjNiOGEzYzUxOS4u
NjIwNzFkNzRjM2M5MjA2NTkwNzE1MmYwZDBlNTZhNDdlNjg1ZmZhNyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDEzIEBACisyMDEyLTA0LTI3ICBZb3NoaWZ1bWkgSW5vdWUgIDx5b3NpbkBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgU2V0dGluZyAnMC42JyB0byB0aGUgdmFsdWUgb2YgYSByYW5nZSBpbnB1dCBt
YWtlcyB0aGUgdmFsdWUgMC42MDAwMDAwMDAwMDAwMDAxCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDAwOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9mb3Jtcy9yYW5nZS9yYW5nZS12YWx1ZS1y
b3VuZGluZy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvcmFuZ2Uv
cmFuZ2UtdmFsdWUtcm91bmRpbmcuaHRtbDogQWRkZWQuCisKIDIwMTItMDQtMzAgIFpoZW55YW8g
TW8gIDx6bW9AZ29vZ2xlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCB0ZXN0IGV4cGVjdGF0
aW9ucyB1cGRhdGUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3JhbmdlL3Jh
bmdlLXZhbHVlLXJvdW5kaW5nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMv
cmFuZ2UvcmFuZ2UtdmFsdWUtcm91bmRpbmctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ3YmI1
MTA2MGNhNzg5YzFmYTE4NmVlYzQ3NDZhYmNiZTZmMDZjNjAKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3JhbmdlL3JhbmdlLXZhbHVlLXJvdW5kaW5nLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDE5IEBACisgICAgICAgIAorU2V0dGluZyAnMC42JyB0byB0aGUgdmFs
dWUgb2YgYSByYW5nZSBpbnB1dCBtYWtlcyB0aGUgdmFsdWUgMC42MDAwMDAwMDAwMDAwMDAxCisK
K09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHJhbmdlMS52YWx1ZS50b1N0cmlu
ZygpIGlzICIwLjEiCitQQVNTIHJhbmdlMi52YWx1ZS50b1N0cmluZygpIGlzICIwLjIiCitQQVNT
IHJhbmdlMy52YWx1ZS50b1N0cmluZygpIGlzICIwLjMiCitQQVNTIHJhbmdlNC52YWx1ZS50b1N0
cmluZygpIGlzICIwLjQiCitQQVNTIHJhbmdlNS52YWx1ZS50b1N0cmluZygpIGlzICIwLjUiCitQ
QVNTIHJhbmdlNi52YWx1ZS50b1N0cmluZygpIGlzICIwLjYiCitQQVNTIHJhbmdlNy52YWx1ZS50
b1N0cmluZygpIGlzICIwLjciCitQQVNTIHJhbmdlOC52YWx1ZS50b1N0cmluZygpIGlzICIwLjgi
CitQQVNTIHJhbmdlOS52YWx1ZS50b1N0cmluZygpIGlzICIwLjkiCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9yYW5nZS9yYW5nZS12YWx1ZS1yb3VuZGluZy5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9yYW5nZS9yYW5nZS12YWx1ZS1yb3VuZGluZy5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjMyZTJjNGVkM2FmYTEzNDEyNWVkYWMzNzE0NjJiNzdjNzdmNzkzNTAKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3JhbmdlL3JhbmdlLXZhbHVlLXJvdW5kaW5nLmh0
bWwKQEAgLTAsMCArMSwyNCBAQAorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGlucHV0IHR5
cGU9cmFuZ2Ugc3RlcD0wLjEgdmFsdWU9MC4xIGlkPXJhbmdlMT4KKzxpbnB1dCB0eXBlPXJhbmdl
IHN0ZXA9MC4xIHZhbHVlPTAuMiBpZD1yYW5nZTI+Cis8aW5wdXQgdHlwZT1yYW5nZSBzdGVwPTAu
MSB2YWx1ZT0wLjMgaWQ9cmFuZ2UzPgorPGlucHV0IHR5cGU9cmFuZ2Ugc3RlcD0wLjEgdmFsdWU9
MC40IGlkPXJhbmdlND4KKzxpbnB1dCB0eXBlPXJhbmdlIHN0ZXA9MC4xIHZhbHVlPTAuNSBpZD1y
YW5nZTU+Cis8aW5wdXQgdHlwZT1yYW5nZSBzdGVwPTAuMSB2YWx1ZT0wLjYgaWQ9cmFuZ2U2Pgor
PGlucHV0IHR5cGU9cmFuZ2Ugc3RlcD0wLjEgdmFsdWU9MC43IGlkPXJhbmdlNz4KKzxpbnB1dCB0
eXBlPXJhbmdlIHN0ZXA9MC4xIHZhbHVlPTAuOCBpZD1yYW5nZTg+Cis8aW5wdXQgdHlwZT1yYW5n
ZSBzdGVwPTAuMSB2YWx1ZT0wLjkgaWQ9cmFuZ2U5PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIjxhIGhyZWY9J2h0dHA6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTgwMDA5Jz5TZXR0aW5nICcwLjYnIHRvIHRoZSB2YWx1ZSBvZiBhIHJh
bmdlIGlucHV0IG1ha2VzIHRoZSB2YWx1ZSAwLjYwMDAwMDAwMDAwMDAwMDE8L2E+Iik7Citmb3Ig
KHZhciBpID0gMTsgaSA8PSA5OyArK2kpIHsKKyAgICBzaG91bGRCZSgncmFuZ2UnICsgaS50b1N0
cmluZygpICsgJy52YWx1ZS50b1N0cmluZygpJywgJyIwLicgKyBpLnRvU3RyaW5nKCkgKyAnIicp
OworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+CisKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>139585</attachid>
            <date>2012-04-30 23:10:53 -0700</date>
            <delta_ts>2012-05-23 03:51:34 -0700</delta_ts>
            <desc>Patch 5</desc>
            <filename>bug-80009-20120501151051.patch</filename>
            <type>text/plain</type>
            <size>88286</size>
            <attacher>yosin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE1Njk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTA4MmNlMjdiODgyYjIw
ZWYzYTE4NWViMDYxNDgzMTAzN2M4YzNjZi4uZTNmMTIzMTgyZmMxNWY5MDZkMzA4MGRmZGQ1Njg0
ZWVlZmJhMTVmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzNiBAQAorMjAxMi0wNC0yNyAgWW9z
aGlmdW1pIElub3VlICA8eW9zaW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFNldHRpbmcgJzAu
NicgdG8gdGhlIHZhbHVlIG9mIGEgcmFuZ2UgaW5wdXQgbWFrZXMgdGhlIHZhbHVlIDAuNjAwMDAw
MDAwMDAwMDAwMQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODAwMDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIHBhdGNoIGludHJvZHVjZSBkZWNpbWFsIGFyaXRobWV0aWMgZm9yIHJhbmdlIHR5cGUg
aW5wdXQgZWxlbWVudCB0byBhdm9pZCAKKyAgICAgICAgcm91bmRpbmcgZXJyb3IgaW4gZG91Ymxl
LiBCZWNhdXNlIG9mIGRvdWJsZSBjYW4ndCByZXByZXNlbnQgMC4xIGV4YWN0bGx5IGR1ZQorICAg
ICAgICBieSBiYXNlIDIgZXhwb25lbnQuCisKKyAgICAgICAgQWxsIGNhbGN1bGF0aW9ucyByZWxh
dGVkIHRvIGlucHV0IGVsZW1lbnQgdmFsdWUgaW4gU3RlcFJhbmdlLCBSYW5nZUlucHV0VHlwZQor
ICAgICAgICBhbmQgU2xpZGVyVGh1bWJuYWlsIGFyZSBkb25lIGluIGRlY2ltYWwgYXJpdGhtZXRp
YyBleGNlcHQgZm9yIEFQSXMgcmV0dXJuaW5nIG9yCisgICAgICAgIHRha2luZyBkb3VibGUgdmFs
dWUuCisKKyAgICAgICAgQW4gaW1wbG1lbnRhdGlvbiBvZiBkZWNpbWFsIGFyaXRobWV0aWMgcmVz
aWRlcyBpbiBuZXdseSBhZGRlZCBmaWxlcyBEZWNpbWFsLmNwcAorICAgICAgICBhbmQgRGVjaW1h
bC5oLgorCisgICAgICAgIFRlc3Q6IGZhc3QvZm9ybXMvcmFuZ2UvcmFuZ2UtdmFsdWUtcm91bmRp
bmcuaHRtbAorICAgICAgICBUZXN0IGZvciBEZWNpbWFsIGNsYXNzIGlzIGltcGxlbWVudGVkIHVz
aW5nIGdUZXN0IGFuZCByZXNpZGVzIGluIFdlYktpdC9jaHJvbWl1bS90ZXN0cy4KKworICAgICAg
ICAqIENNYWtlTGlzdHMudHh0OiBBZGRlZCBEZWNpbWFsLmNwcC4KKyAgICAgICAgKiBHTlVtYWtl
ZmlsZS5saXN0LmFtOiBBZGRlZCBEZWNpbWFsLmNwcC4KKyAgICAgICAgKiBUYXJnZXQucHJpOiBB
ZGRlZCBEZWNpbWFsLmNwcC4KKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6IEFkZGVkIERlY2ltYWwu
Y3BwLgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOiBBZGRlZCBEZWNp
bWFsLmNwcC4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFk
ZGVkIERlY2ltYWwuY3BwLgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpnZXRBbGxvd2VkVmFsdWVTdGVwKToK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5oOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChIVE1MSW5wdXRFbGVtZW50KToKKyAgICAgICAg
KiBodG1sL0lucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OmdldEFs
bG93ZWRWYWx1ZVN0ZXApOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogaHRtbC9JbnB1
dFR5cGUuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSW5wdXRUeXBlKToKKyAgICAg
ICAgKiBodG1sL1JhbmdlSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlSW5w
dXRUeXBlOjpnZXRBbGxvd2VkVmFsdWVTdGVwKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6UmFuZ2VJbnB1dFR5cGU6OmhhbmRsZUtleWRvd25FdmVudCk6CisgICAgICAg
IChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6ZmFsbGJhY2tWYWx1ZSk6CisgICAgICAgIChXZWJD
b3JlOjpSYW5nZUlucHV0VHlwZTo6bWF4aW11bSk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZUlu
cHV0VHlwZTo6bWluaW11bSk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6c2Fu
aXRpemVWYWx1ZSk6CisgICAgICAgICogaHRtbC9SYW5nZUlucHV0VHlwZS5oOgorICAgICAgICAo
UmFuZ2VJbnB1dFR5cGUpOgorICAgICAgICAqIGh0bWwvU3RlcFJhbmdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlN0ZXBSYW5nZTo6U3RlcFJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0ZXBS
YW5nZTo6Y2xhbXBWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdGVwUmFuZ2U6OnZhbHVlRnJv
bUVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvU3RlcFJhbmdlLmg6CisgICAgICAgIChTdGVwUmFu
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6U3RlcFJhbmdlOjpkZWZhdWx0VmFsdWUpOgorICAgICAg
ICAoV2ViQ29yZTo6U3RlcFJhbmdlOjpwcm9wb3J0aW9uRnJvbVZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6OlN0ZXBSYW5nZTo6dmFsdWVGcm9tUHJvcG9ydGlvbik6CisgICAgICAgICogaHRtbC9z
aGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNsaWRlclBv
c2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNsaWRlclRodW1iOjpsYXlvdXQpOgor
ICAgICAgICAoV2ViQ29yZTo6U2xpZGVyVGh1bWJFbGVtZW50OjpzZXRQb3NpdGlvbkZyb21Qb2lu
dCk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpwYXJzZVRvRGVjaW1hbEZvck51bWJlclR5cGUpIEFkZGVkLgorICAgICAgICAq
IGh0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNl
VG9EZWNpbWFsRm9yTnVtYmVyVHlwZSkgQWRkZWQuCisgICAgICAgICAqIHBsYXRmb3JtL0RlY2lt
YWwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoRGVjaW1hbFByaXZh
dGUpOgorICAgICAgICAoU3BlY2lhbFZhbHVlSGFuZGxlcik6CisgICAgICAgIChVSW50MTI4KToK
KyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWxQcml2YXRlOjpVSW50MTI4OjpoaWdoKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRlY2ltYWxQcml2YXRlOjpVSW50MTI4Ojpsb3cpOgorICAgICAgICAoV2Vi
Q29yZTo6RGVjaW1hbFByaXZhdGU6OlVJbnQxMjg6OmlzWmVybyk6CisgICAgICAgIChXZWJDb3Jl
OjpEZWNpbWFsUHJpdmF0ZTo6Y291bnREaWdpdHMpOgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1h
bFByaXZhdGU6Om11bHRpcGx5SGlnaCk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsUHJpdmF0
ZTo6cG93ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1hbFByaXZhdGU6OnNjYWxlRG93bik6
CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsUHJpdmF0ZTo6c2NhbGVVcCk6CisgICAgICAgIChX
ZWJDb3JlOjpEZWNpbWFsUHJpdmF0ZTo6U3BlY2lhbFZhbHVlSGFuZGxlcjo6U3BlY2lhbFZhbHVl
SGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsUHJpdmF0ZTo6U3BlY2lhbFZhbHVl
SGFuZGxlcjo6aGFuZGxlKToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWxQcml2YXRlOjpTcGVj
aWFsVmFsdWVIYW5kbGVyOjp2YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsUHJpdmF0
ZTo6VUludDEyODo6VUludDEyOCk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsUHJpdmF0ZTo6
VUludDEyODo6b3BlcmF0b3IgLz0pOgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1hbFByaXZhdGU6
OlVJbnQxMjg6Om11bHRpcGx5KToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWw6OkVuY29kZWRE
YXRhOjpFbmNvZGVkRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjpFbmNvZGVkRGF0
YTo6Y29lZmZpY2llbnQpOgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1hbDo6RW5jb2RlZERhdGE6
OmV4cG9uZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWw6OkVuY29kZWREYXRhOjppc0Zp
bml0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjpFbmNvZGVkRGF0YTo6aXNTcGVjaWFs
KToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWw6OkVuY29kZWREYXRhOjppc1plcm8pOgorICAg
ICAgICAoV2ViQ29yZTo6RGVjaW1hbDo6RW5jb2RlZERhdGE6OnJhd0V4cG9uZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRlY2ltYWw6OkVuY29kZWREYXRhOjpzaWduKToKKyAgICAgICAgKFdlYkNv
cmU6OkRlY2ltYWw6OkVuY29kZWREYXRhOjpzZXRTaWduKToKKyAgICAgICAgKFdlYkNvcmU6OkRl
Y2ltYWw6OkRlY2ltYWwpOgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1hbDo6b3BlcmF0b3IgPSk6
CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjpvcGVyYXRvciArPSk6CisgICAgICAgIChXZWJD
b3JlOjpEZWNpbWFsOjpvcGVyYXRvciAtPSk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjpv
cGVyYXRvciAqPSk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjpvcGVyYXRvciAvPSk6Cisg
ICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjpvcGVyYXRvciArKToKKyAgICAgICAgKFdlYkNvcmU6
OkRlY2ltYWw6Om9wZXJhdG9yIC0pOgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1hbDo6b3BlcmF0
b3IgKik6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjpvcGVyYXRvciAvKToKKyAgICAgICAg
KFdlYkNvcmU6OkRlY2ltYWw6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1h
bDo6b3BlcmF0b3IhPSk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjpvcGVyYXRvciA8KToK
KyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWw6Om9wZXJhdG9yIDw9KToKKyAgICAgICAgKFdlYkNv
cmU6OkRlY2ltYWw6Om9wZXJhdG9yID4pOgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1hbDo6b3Bl
cmF0b3IgPj0pOgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1hbDo6ZXhwb25lbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6RGVjaW1hbDo6aWVlZUNsYXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2lt
YWw6OnNpZ24pOgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1hbDo6Y29tcGFyZVRvKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRlY2ltYWw6OmZhc3RFcXVhbHMpOgorICAgICAgICAoV2ViQ29yZTo6RGVj
aW1hbDo6ZnJvbVN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjppbmZpbml0eSk6
CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjpxdWlldE5hTik6CisgICAgICAgIChXZWJDb3Jl
OjpEZWNpbWFsOjpyZW1haW5kZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1hbDo6cm91bmQp
OgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1hbDo6cm91bmRBdCk6CisgICAgICAgIChXZWJDb3Jl
OjpEZWNpbWFsOjp0b1N0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjp6ZXJvKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9EZWNpbWFsLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChEZWNpbWFsKToKKyAgICAgICAgKEVuY29kZWREYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OkRlY2ltYWw6OmlzRmluaXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWw6Omlz
U3BlY2lhbCk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjppc1plcm8pOgorICAgICAgICAo
V2ViQ29yZTo6RGVjaW1hbDo6dmFsdWUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTbGlk
ZXIuY3BwOgorCiAyMDEyLTA0LTMwICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CiAK
ICAgICAgICAgSGFyZGVuIGFyaXRobWV0aWMgaW4gSW1hZ2VCdWZmZXJEYXRhQ0cKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKaW5kZXggNzhiMWY3ZGJmMjljN2I1YjBkZTFmMWYxZmUzNjRlNzkwNDY1
YjJjZS4uYWM3YWVjMGRmYjg2NmE3ZjRkZTRlMjQ0ZjMxZDNkYjBmOWRmZWU4OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAxMi0wNC0yNyAgWW9zaGlmdW1p
IElub3VlICA8eW9zaW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFNldHRpbmcgJzAuNicgdG8g
dGhlIHZhbHVlIG9mIGEgcmFuZ2UgaW5wdXQgbWFrZXMgdGhlIHZhbHVlIDAuNjAwMDAwMDAwMDAw
MDAwMQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODAw
MDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEZWNp
bWFsVGVzdCBpc3Rlc3Qgc2NyaXB0cyBmb3IgRGVjaW1hbCBjbGFzcyBpbiBXZWJDb3JlL3BsYXRm
b3JtLgorCisgICAgICAgICogV2ViS2l0Lmd5cGk6CisgICAgICAgICogdGVzdHMvRGVjaW1hbFRl
c3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6b3Bl
cmF0b3I8PCk6CisgICAgICAgIChEZWNpbWFsVGVzdCk6CisgICAgICAgIChEZWNpbWFsU3RlcFJh
bmdlKToKKyAgICAgICAgKERlY2ltYWxUZXN0OjpEZWNpbWFsU3RlcFJhbmdlOjpEZWNpbWFsU3Rl
cFJhbmdlKToKKyAgICAgICAgKERlY2ltYWxUZXN0OjpEZWNpbWFsU3RlcFJhbmdlOjpjbGFtcFZh
bHVlKToKKyAgICAgICAgKERlY2ltYWxUZXN0OjpEZWNpbWFsVGVzdDo6ZW5jb2RlKToKKyAgICAg
ICAgKERlY2ltYWxUZXN0OjpEZWNpbWFsVGVzdDo6ZnJvbVN0cmluZyk6CisgICAgICAgIChEZWNp
bWFsVGVzdDo6RGVjaW1hbFRlc3Q6OnN0ZXBEb3duKToKKyAgICAgICAgKERlY2ltYWxUZXN0OjpE
ZWNpbWFsVGVzdDo6c3RlcFVwKToKKyAgICAgICAgKERlY2ltYWxUZXN0OjpURVNUX0YpOgorCiAy
MDEyLTA0LTMwICBTYWRydWwgSGFiaWIgQ2hvd2RodXJ5ICA8c2FkcnVsQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBbY2hyb21pdW1dIERpc2FibGUgYmF0dGVyeS1zdGF0dXMgQVBJIHN1cHBvcnQu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGVlNjgyYmJkNDg3NmZhOWQyYTE3YWI3YmVjNzFmZDI4
MDFjM2M2ODUuLjBhZTA4YjE2NjVhODQyNDgwZTg0ODA1MmU3M2Y5YjdkNTY5MmI5OWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0CkBAIC0xMDkyLDYgKzEwOTIsNyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VT
CiAgICAgcGxhdGZvcm0vQ29udGVudFR5cGUuY3BwCiAgICAgcGxhdGZvcm0vQ3Jvc3NUaHJlYWRD
b3BpZXIuY3BwCiAgICAgcGxhdGZvcm0vRGF0ZUNvbXBvbmVudHMuY3BwCisgICAgcGxhdGZvcm0v
RGVjaW1hbC5jcHAKICAgICBwbGF0Zm9ybS9EcmFnRGF0YS5jcHAKICAgICBwbGF0Zm9ybS9EcmFn
SW1hZ2UuY3BwCiAgICAgcGxhdGZvcm0vRmlsZUNob29zZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbQppbmRleCAyZjUzMjgyMzlkYjNkNmU3MTJmYWQ3ZmE0NTM0ODEwYzk0YTZkMDAw
Li41OTE0NTdjZjUxZjZkNzQ2YWJiYTgzYTkxZDRjYWYyYjkwNzhmYmE4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0KQEAgLTMwODEsNiArMzA4MSw4IEBAIHdlYmNvcmVfc291cmNlcyAr
PSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Vyc29yLmggXAogCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0RhdGVDb21wb25lbnRzLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
RGF0ZUNvbXBvbmVudHMuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGVjaW1hbC5jcHAg
XAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RlY2ltYWwuaCBcCiAJU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vRHJhZ0RhdGEuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0
YS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuY3BwIFwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJp
CmluZGV4IDhlOGM3MTQ2MGFkYzE5ODE2NGFkY2FmY2M4MDkwNWYxYjVjMWVhMmQuLjllNjcyYzQx
MzM1YmM4Mzg4YTBlY2E0ZmZkMGU4MTUyY2VkMjYzNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtMTA3MSw2
ICsxMDcxLDcgQEAgU09VUkNFUyArPSBcCiAgICAgcGxhdGZvcm0vQ29udGVudFR5cGUuY3BwIFwK
ICAgICBwbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5jcHAgXAogICAgIHBsYXRmb3JtL0RhdGVD
b21wb25lbnRzLmNwcCBcCisgICAgcGxhdGZvcm0vRGVjaW1hbC5jcHAgXAogICAgIHBsYXRmb3Jt
L0RyYWdEYXRhLmNwcCBcCiAgICAgcGxhdGZvcm0vRHJhZ0ltYWdlLmNwcCBcCiAgICAgcGxhdGZv
cm0vRmlsZUNob29zZXIuY3BwIFwKQEAgLTIxNzgsNiArMjE3OSw3IEBAIEhFQURFUlMgKz0gXAog
ICAgIHBsYXRmb3JtL0NvbnRleHRNZW51LmggXAogICAgIHBsYXRmb3JtL0Nyb3NzVGhyZWFkQ29w
aWVyLmggXAogICAgIHBsYXRmb3JtL0RhdGVDb21wb25lbnRzLmggXAorICAgIHBsYXRmb3JtL0Rl
Y2ltYWwuaCBcCiAgICAgcGxhdGZvcm0vRHJhZ0RhdGEuaCBcCiAgICAgcGxhdGZvcm0vRHJhZ0lt
YWdlLmggXAogICAgIHBsYXRmb3JtL0ZpbGVDaG9vc2VyLmggXApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4
IDgyM2Y2ODJhMzI1ZGViNTExNzk2YWJjYjVjOGFlZmY1OGMzODJkNTguLjYwZjhlZTM2YzIzYzUw
NDRkODBlNjU2NzI0YWM4MDcyMWQ4NjMzZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTI3MSw2ICsy
NzEsNyBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL0Nvb2tpZXNTdHJhdGVneS5oJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9DdXJzb3IuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vRGF0ZUNv
bXBvbmVudHMuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vRGVjaW1hbC5oJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9EcmFnRGF0YS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9EcmFnSW1h
Z2UuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vRmlsZUNob29zZXIuaCcsCkBAIC0zMTEzLDYg
KzMxMTQsNyBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVyLmgnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL0N1cnNvci5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L0RhdGVDb21wb25lbnRzLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vRGVjaW1hbC5jcHAn
LAogICAgICAgICAgICAgJ3BsYXRmb3JtL0RyYWdEYXRhLmNwcCcsCiAgICAgICAgICAgICAncGxh
dGZvcm0vRHJhZ0ltYWdlLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vRXZlbnRMb29wLmgn
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCA1
Yzc4Y2E5MTVlNmVhYmU5M2IzZjllOGMxMmM2YWQzYzhhMWI2OWVmLi5lNDVlZTE3MWUwMzJkZWU0
ZjQ5NDQzYzVmNjhmOGM0Njk4OGVmNzk0IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvagpAQCAtMjc1OTAsNiArMjc1OTAsMTQgQEAKIAkJCQk+CiAJCQk8
L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cRGVjaW1hbC5j
cHAiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBs
YXRmb3JtXERlY2ltYWwuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0
aXZlUGF0aD0iLi5ccGxhdGZvcm1cRHJhZ0RhdGEuY3BwIgogCQkJCT4KIAkJCTwvRmlsZT4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCBkMjU1NTVhM2I1NGU4NWVjYTZhYmU0NjQ0ZmYyZTIzYjMyZTZmYTllLi40ODUzNjUyNTcyMTY4
YjdjMTY2ZTM5MzcyNmRkMTE3MWJiY2EyNmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTgyLDYgKzExODIsOCBAQAogCQk0
NTA5OUM0MTEzNzBBNzgwMDA1OEQ1MTMgLyogSWNvblVSTC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NTA5OUM0MDEzNzBBNzgwMDA1OEQ1MTMgLyog
SWNvblVSTC5jcHAgKi87IH07CiAJCTQ1MENFQkYwMTUwNzNCQkUwMDJCQjE0OSAvKiBMYWJlbGFi
bGVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ1MENFQkVFMTUwNzNCQkUwMDJCQjE0OSAvKiBMYWJlbGFibGVFbGVtZW50LmNwcCAqLzsg
fTsKIAkJNDUwQ0VCRjExNTA3M0JCRTAwMkJCMTQ5IC8qIExhYmVsYWJsZUVsZW1lbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ1MENFQkVGMTUwNzNC
QkUwMDJCQjE0OSAvKiBMYWJlbGFibGVFbGVtZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDU4QTI4MEYxNTRBQjVFNjAwMDA0MDM3IC8qIERl
Y2ltYWwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDU4QTI4MEUxNTRBQjVFNjAwMDA0MDM3IC8qIERlY2ltYWwuY3BwICovOyB9OworCQk0NThBMjgx
MTE1NEFCNUZCMDAwMDQwMzcgLyogRGVjaW1hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDU4QTI4MTAxNTRBQjVGQjAwMDA0MDM3IC8qIERlY2ltYWwu
aCAqLzsgfTsKIAkJNDVCQUMyQjAxMzYwQkJBQjAwNURBMjU4IC8qIEljb25VUkwuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ1QkFDMkFGMTM2MEJCQUIw
MDVEQTI1OCAvKiBJY29uVVJMLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNDYxNEExRkUwQjIzQThENjAwNDQ2RTFDIC8qIGNvcHlDdXJzb3IucG5n
IGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjE0QTFG
RDBCMjNBOEQ2MDA0NDZFMUMgLyogY29weUN1cnNvci5wbmcgKi87IH07CiAJCTQ2NzAwRUQwMTI3
Qjk2Q0IwMEY1RDVENiAvKiBGaWxlV3JpdGVyU3luYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjcwMEVDRTEyN0I5NkNCMDBGNUQ1RDYgLyogRmls
ZVdyaXRlclN5bmMuY3BwICovOyB9OwpAQCAtODE0OSw2ICs4MTUxLDggQEAKIAkJNDUwOTlDNDAx
MzcwQTc4MDAwNThENTEzIC8qIEljb25VUkwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSWNvblVSTC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ1
MENFQkVFMTUwNzNCQkUwMDJCQjE0OSAvKiBMYWJlbGFibGVFbGVtZW50LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExhYmVsYWJsZUVsZW1lbnQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0NTBDRUJFRjE1MDczQkJFMDAyQkIxNDkgLyogTGFiZWxh
YmxlRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMYWJlbGFibGVF
bGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ1OEEyODBFMTU0QUI1RTYw
MDAwNDAzNyAvKiBEZWNpbWFsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IERlY2ltYWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NThBMjgxMDE1
NEFCNUZCMDAwMDQwMzcgLyogRGVjaW1hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBEZWNpbWFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ1QkFDMkFGMTM2
MEJCQUIwMDVEQTI1OCAvKiBJY29uVVJMLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEljb25VUkwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYxNEExRkQwQjIz
QThENjAwNDQ2RTFDIC8qIGNvcHlDdXJzb3IucG5nICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gaW1hZ2UucG5nOyBwYXRoID0gY29weUN1cnNvci5wbmc7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2NzAwRUNFMTI3Qjk2Q0IwMEY1RDVENiAv
KiBGaWxlV3JpdGVyU3luYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBGaWxlV3JpdGVyU3luYy5jcHA7IHBhdGggPSBNb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVdyaXRl
clN5bmMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjAxOTYsNiArMjAyMDAs
OCBAQAogCQlCQ0YxQTVCQTA5NzgzMjA5MDA2MUExMjMgLyogcGxhdGZvcm0gKi8gPSB7CiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTQ1OEEyODEwMTU0QUI1RkIwMDAw
NDAzNyAvKiBEZWNpbWFsLmggKi8sCisJCQkJNDU4QTI4MEUxNTRBQjVFNjAwMDA0MDM3IC8qIERl
Y2ltYWwuY3BwICovLAogCQkJCTQ5RTkxMkE0MEVGQUM4RTYwMDlEMENBRiAvKiBhbmltYXRpb24g
Ki8sCiAJCQkJRkQzMTYwNDAxMkIwMjZBMzAwQzFBMzU5IC8qIGF1ZGlvICovLAogCQkJCTFBRTQy
RjY3MEFBNEI4Q0IwMEM4NjEyRCAvKiBjZiAqLywKQEAgLTI3ODUzLDYgKzI3ODU5LDcgQEAKIAkJ
CQlGRDhDNDZFQjE1NDYwOEU3MDBBNTkxMEMgLyogQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTcxQTU3REYxMTU0QkUyNUMwMDA5RDEyMCAvKiBTVkdQYXRo
VXRpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTc4RDAyQkM1MTU0QTE4REYwMEI2MkQw
NSAvKiBDU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0NThBMjgw
RjE1NEFCNUU2MDAwMDQwMzcgLyogRGVjaW1hbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IGIzYjBhNzIwNDJlOWM3ZDRjNzVm
MzNiN2Q3ZmFjZmRkNzJkMTkwNmYuLjU2NTRjMjQ0YTI4NmFjNDlkODNlMzVjZDBiODQxOWYyZjZj
MmQ1MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApAQCAtMzAw
LDYgKzMwMCwxMSBAQCBib29sIEhUTUxJbnB1dEVsZW1lbnQ6OmdldEFsbG93ZWRWYWx1ZVN0ZXAo
ZG91YmxlKiBzdGVwKSBjb25zdAogICAgIHJldHVybiBnZXRBbGxvd2VkVmFsdWVTdGVwV2l0aERl
Y2ltYWxQbGFjZXMoUmVqZWN0QW55LCBzdGVwLCAwKTsKIH0KIAorYm9vbCBIVE1MSW5wdXRFbGVt
ZW50OjpnZXRBbGxvd2VkVmFsdWVTdGVwKERlY2ltYWwqIHN0ZXApIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1faW5wdXRUeXBlLT5nZXRBbGxvd2VkVmFsdWVTdGVwKHN0ZXApOworfQorCiBib29sIEhU
TUxJbnB1dEVsZW1lbnQ6OmdldEFsbG93ZWRWYWx1ZVN0ZXBXaXRoRGVjaW1hbFBsYWNlcyhBbnlT
dGVwSGFuZGxpbmcgYW55U3RlcEhhbmRsaW5nLCBkb3VibGUqIHN0ZXAsIHVuc2lnbmVkKiBkZWNp
bWFsUGxhY2VzKSBjb25zdAogewogICAgIEFTU0VSVChzdGVwKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSW5wdXRFbGVtZW50LmgKaW5kZXggM2FiZjE5M2VmMmFkNWUzZTJmZjhmZjU0MzY5OGYxZDRk
NmNlNzFjOC4uZTBiNWJjY2IxNWNhZjRlN2IxMGIyMDk5NjE3NjViZjkwZmI2MjAxYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBEZWNpbWFsOwogY2xhc3MgRmlsZUxpc3Q7CiBjbGFz
cyBIVE1MRGF0YUxpc3RFbGVtZW50OwogY2xhc3MgSFRNTE9wdGlvbkVsZW1lbnQ7CkBAIC02Miw2
ICs2Myw3IEBAIHB1YmxpYzoKICAgICAvLyBTZXRzIHRoZSAiYWxsb3dlZCB2YWx1ZSBzdGVwIiBk
ZWZpbmVkIGluIHRoZSBIVE1MIHNwZWMgdG8gdGhlIHNwZWNpZmllZCBkb3VibGUgcG9pbnRlci4K
ICAgICAvLyBSZXR1cm5zIGZhbHNlIGlmIHRoZXJlIGlzIG5vICJhbGxvd2VkIHZhbHVlIHN0ZXAu
IgogICAgIGJvb2wgZ2V0QWxsb3dlZFZhbHVlU3RlcChkb3VibGUqKSBjb25zdDsKKyAgICBib29s
IGdldEFsbG93ZWRWYWx1ZVN0ZXAoRGVjaW1hbCopIGNvbnN0OwogCiAgICAgLy8gRm9yIFZhbGlk
aXR5U3RhdGUuCiAgICAgYm9vbCBzdGVwTWlzbWF0Y2goY29uc3QgU3RyaW5nJikgY29uc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0lucHV0VHlwZS5jcHAKaW5kZXggOWEzZGE0ZGVlYWM4Zjc2ZDMyY2Y1Y2JmNTAw
Y2Y0ZmJmNDhiNTljZS4uOTMwMWViNzRlMGMwZTVkMzBjNmIzZjA1ZTdhZTEwMjg5ODliNGMyMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcApAQCAtMjUzLDYgKzI1MywxMiBAQCBkb3VibGUg
SW5wdXRUeXBlOjpkZWZhdWx0VmFsdWVGb3JTdGVwVXAoKSBjb25zdAogICAgIHJldHVybiAwOwog
fQogCitib29sIElucHV0VHlwZTo6Z2V0QWxsb3dlZFZhbHVlU3RlcChEZWNpbWFsKikgY29uc3QK
K3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIGRv
dWJsZSBJbnB1dFR5cGU6Om1pbmltdW0oKSBjb25zdAogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgKaW5kZXggNzMxNmZmZDE5ZmQyZTQxMzNmZDQyNTdm
MDIyM2FkMjcyMTJiOWRkNC4uN2Y2NWFmNDc0NTY4ZDQ4MWU1YmUzMDdhMTg0YjQxNDVmNWM1NjIx
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oCkBAIC00NSw2ICs0NSw3IEBAIGNsYXNzIEJlZm9y
ZVRleHRJbnNlcnRlZEV2ZW50OwogY2xhc3MgQ2hyb21lOwogY2xhc3MgQ29sb3I7CiBjbGFzcyBE
YXRlQ29tcG9uZW50czsKK2NsYXNzIERlY2ltYWw7CiBjbGFzcyBFdmVudDsKIGNsYXNzIEZpbGVM
aXN0OwogY2xhc3MgRm9ybURhdGFMaXN0OwpAQCAtMTY2LDYgKzE2Nyw3IEBAIHB1YmxpYzoKICAg
ICAvLyBUaGlzIGZ1bmN0aW9uIG11c3QgYmUgY2FsbGVkIG9ubHkgYnkgSFRNTElucHV0RWxlbWVu
dDo6c2FuaXRpemVWYWx1ZSgpLgogICAgIHZpcnR1YWwgU3RyaW5nIHNhbml0aXplVmFsdWUoY29u
c3QgU3RyaW5nJikgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGhhc1VuYWNjZXB0YWJsZVZhbHVl
KCk7CisgICAgdmlydHVhbCBib29sIGdldEFsbG93ZWRWYWx1ZVN0ZXAoRGVjaW1hbCopIGNvbnN0
OwogCiAgICAgLy8gRXZlbnQgaGFuZGxlcnMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9SYW5nZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRU
eXBlLmNwcAppbmRleCA0ZmFmNzg2ZTY1NWJjMzc4OTczMmY4Yzc4ZmQ1NzAwOGEyZjM3YTQ1Li5h
Mzg5ODQwM2JiYzFjM2JjZDM4NTE1NGNjMTMzYWFmMmUxMzYxNzA3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL1JhbmdlSW5wdXRUeXBlLmNwcApAQCAtNTQsOCArNTQsNiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAot
c3RhdGljIGNvbnN0IGRvdWJsZSByYW5nZURlZmF1bHRNaW5pbXVtID0gMC4wOwotc3RhdGljIGNv
bnN0IGRvdWJsZSByYW5nZURlZmF1bHRNYXhpbXVtID0gMTAwLjA7CiBzdGF0aWMgY29uc3QgZG91
YmxlIHJhbmdlRGVmYXVsdFN0ZXAgPSAxLjA7CiBzdGF0aWMgY29uc3QgZG91YmxlIHJhbmdlU3Rl
cFNjYWxlRmFjdG9yID0gMS4wOwogCkBAIC0xMTAsMTggKzEwOCwxMiBAQCBib29sIFJhbmdlSW5w
dXRUeXBlOjpzdXBwb3J0c1JhbmdlTGltaXRhdGlvbigpIGNvbnN0CiAKIGRvdWJsZSBSYW5nZUlu
cHV0VHlwZTo6bWluaW11bSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHBhcnNlVG9Eb3VibGUoZWxl
bWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpLCByYW5nZURlZmF1bHRNaW5pbXVtKTsK
KyAgICByZXR1cm4gcGFyc2VUb0RvdWJsZShTdGVwUmFuZ2UoZWxlbWVudCgpKS5taW5pbXVtLnRv
U3RyaW5nKCksIG51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpKTsKIH0KIAogZG91
YmxlIFJhbmdlSW5wdXRUeXBlOjptYXhpbXVtKCkgY29uc3QKIHsKLSAgICBkb3VibGUgbWF4ID0g
cGFyc2VUb0RvdWJsZShlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUobWF4QXR0ciksIHJhbmdl
RGVmYXVsdE1heGltdW0pOwotICAgIC8vIEEgcmVtZWR5IGZvciB0aGUgaW5jb25zaXN0ZW50IG1p
bi9tYXggdmFsdWVzLgotICAgIC8vIFNldHMgdGhlIG1heGltdW0gdG8gdGhlIGRlZmF1bHQgb3Ig
dGhlIG1pbmltdW0gdmFsdWUuCi0gICAgZG91YmxlIG1pbiA9IG1pbmltdW0oKTsKLSAgICBpZiAo
bWF4IDwgbWluKQotICAgICAgICBtYXggPSBzdGQ6Om1heChtaW4sIHJhbmdlRGVmYXVsdE1heGlt
dW0pOwotICAgIHJldHVybiBtYXg7CisgICAgcmV0dXJuIHBhcnNlVG9Eb3VibGUoU3RlcFJhbmdl
KGVsZW1lbnQoKSkubWF4aW11bS50b1N0cmluZygpLCBudW1lcmljX2xpbWl0czxkb3VibGU+Ojpx
dWlldF9OYU4oKSk7CiB9CiAKIGJvb2wgUmFuZ2VJbnB1dFR5cGU6OmlzU3RlcHBhYmxlKCkgY29u
c3QKQEAgLTE1Miw2ICsxNDQsMjkgQEAgZG91YmxlIFJhbmdlSW5wdXRUeXBlOjpzdGVwU2NhbGVG
YWN0b3IoKSBjb25zdAogICAgIHJldHVybiByYW5nZVN0ZXBTY2FsZUZhY3RvcjsKIH0KIAorYm9v
bCBSYW5nZUlucHV0VHlwZTo6Z2V0QWxsb3dlZFZhbHVlU3RlcChEZWNpbWFsKiBzdGVwKSBjb25z
dAoreworICAgIEFTU0VSVChzdGVwKTsKKyAgICAqc3RlcCA9IDE7CisKKyAgICBjb25zdCBBdG9t
aWNTdHJpbmcmIHN0ZXBTdHJpbmcgPSBlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUoc3RlcEF0
dHIpOworICAgIGlmIChzdGVwU3RyaW5nLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7
CisKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uoc3RlcFN0cmluZywgImFueSIpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBEZWNpbWFsIHBhcnNlZDsKKyAgICBpZiAoIXBhcnNlVG9E
ZWNpbWFsRm9yTnVtYmVyVHlwZShzdGVwU3RyaW5nLCAmcGFyc2VkKSkKKyAgICAgICAgcmV0dXJu
IHRydWU7CisKKyAgICBpZiAocGFyc2VkIDw9IDApCisgICAgICAgIHJldHVybiB0cnVlOworCisg
ICAgKnN0ZXAgPSBwYXJzZWQ7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgUmFuZ2VJbnB1
dFR5cGU6OmhhbmRsZU1vdXNlRG93bkV2ZW50KE1vdXNlRXZlbnQqIGV2ZW50KQogewogICAgIGlm
IChlbGVtZW50KCktPmRpc2FibGVkKCkgfHwgZWxlbWVudCgpLT5yZWFkT25seSgpKQpAQCAtMTc2
LDIzICsxOTEsMTUgQEAgdm9pZCBSYW5nZUlucHV0VHlwZTo6aGFuZGxlS2V5ZG93bkV2ZW50KEtl
eWJvYXJkRXZlbnQqIGV2ZW50KQogCiAgICAgY29uc3QgU3RyaW5nJiBrZXkgPSBldmVudC0+a2V5
SWRlbnRpZmllcigpOwogCi0gICAgZG91YmxlIGN1cnJlbnQgPSBwYXJzZVRvRG91YmxlKGVsZW1l
bnQoKS0+dmFsdWUoKSwgbnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCkpOwotICAg
IEFTU0VSVChpc2Zpbml0ZShjdXJyZW50KSk7Ci0KLSAgICBkb3VibGUgc3RlcCwgYmlnU3RlcDsK
LSAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKHN0
ZXBBdHRyKSwgImFueSIpKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBXZSBjYW4ndCB1c2Ugc3RlcFVw
KCkgZm9yIHRoZSBzdGVwIHZhbHVlICJhbnkiLiBTbywgd2UgaW5jcmVhc2UKLSAgICAgICAgLy8g
b3IgZGVjcmVhc2UgdGhlIHZhbHVlIGJ5IDEvMTAwIG9mIHRoZSB2YWx1ZSByYW5nZS4gSXMgaXQg
cmVhc29uYWJsZT8KLSAgICAgICAgc3RlcCA9IChtYXhpbXVtKCkgLSBtaW5pbXVtKCkpIC8gMTAw
OwotICAgICAgICBiaWdTdGVwID0gc3RlcCAqIDEwOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlm
ICghZWxlbWVudCgpLT5nZXRBbGxvd2VkVmFsdWVTdGVwKCZzdGVwKSkKLSAgICAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotCi0gICAgICAgIGJpZ1N0ZXAgPSAobWF4aW11bSgpIC0gbWlu
aW11bSgpKSAvIDEwOwotICAgICAgICBpZiAoYmlnU3RlcCA8IHN0ZXApCi0gICAgICAgICAgICBi
aWdTdGVwID0gc3RlcDsKLSAgICB9CisgICAgRGVjaW1hbCBjdXJyZW50OworICAgIHBhcnNlVG9E
ZWNpbWFsRm9yTnVtYmVyVHlwZShlbGVtZW50KCktPnZhbHVlKCksICZjdXJyZW50KTsKKworICAg
IFN0ZXBSYW5nZSBzdGVwUmFuZ2UoZWxlbWVudCgpKTsKKworICAgIC8vIEZJWE1FOiBXZSBjYW4n
dCB1c2Ugc3RlcFVwKCkgZm9yIHRoZSBzdGVwIHZhbHVlICJhbnkiLiBTbywgd2UgaW5jcmVhc2UK
KyAgICAvLyBvciBkZWNyZWFzZSB0aGUgdmFsdWUgYnkgMS8xMDAgb2YgdGhlIHZhbHVlIHJhbmdl
LiBJcyBpdCByZWFzb25hYmxlPworICAgIGNvbnN0IERlY2ltYWwgc3RlcCA9IGVxdWFsSWdub3Jp
bmdDYXNlKGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShzdGVwQXR0ciksICJhbnkiKSA/IChz
dGVwUmFuZ2UubWF4aW11bSAtIHN0ZXBSYW5nZS5taW5pbXVtKSAvIDEwMCA6IHN0ZXBSYW5nZS5z
dGVwOworICAgIGNvbnN0IERlY2ltYWwgYmlnU3RlcCA9IDo6c3RkOjptYXgoKHN0ZXBSYW5nZS5t
YXhpbXVtIC0gc3RlcFJhbmdlLm1pbmltdW0pIC8gMTAsIHN0ZXApOwogCiAgICAgYm9vbCBpc1Zl
cnRpY2FsID0gZmFsc2U7CiAgICAgaWYgKGVsZW1lbnQoKS0+cmVuZGVyZXIoKSkgewpAQCAtMjAw
LDcgKzIwNyw3IEBAIHZvaWQgUmFuZ2VJbnB1dFR5cGU6OmhhbmRsZUtleWRvd25FdmVudChLZXli
b2FyZEV2ZW50KiBldmVudCkKICAgICAgICAgaXNWZXJ0aWNhbCA9IHBhcnQgPT0gU2xpZGVyVmVy
dGljYWxQYXJ0IHx8IHBhcnQgPT0gTWVkaWFWb2x1bWVTbGlkZXJQYXJ0OwogICAgIH0KIAotICAg
IGRvdWJsZSBuZXdWYWx1ZTsKKyAgICBEZWNpbWFsIG5ld1ZhbHVlOwogICAgIGlmIChrZXkgPT0g
IlVwIikKICAgICAgICAgbmV3VmFsdWUgPSBjdXJyZW50ICsgc3RlcDsKICAgICBlbHNlIGlmIChr
ZXkgPT0gIkRvd24iKQpAQCAtMjE0LDE4ICsyMjEsMTYgQEAgdm9pZCBSYW5nZUlucHV0VHlwZTo6
aGFuZGxlS2V5ZG93bkV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQogICAgIGVsc2UgaWYgKGtl
eSA9PSAiUGFnZURvd24iKQogICAgICAgICBuZXdWYWx1ZSA9IGN1cnJlbnQgLSBiaWdTdGVwOwog
ICAgIGVsc2UgaWYgKGtleSA9PSAiSG9tZSIpCi0gICAgICAgIG5ld1ZhbHVlID0gaXNWZXJ0aWNh
bCA/IG1heGltdW0oKSA6IG1pbmltdW0oKTsKKyAgICAgICAgbmV3VmFsdWUgPSBpc1ZlcnRpY2Fs
ID8gc3RlcFJhbmdlLm1heGltdW0gOiBzdGVwUmFuZ2UubWluaW11bTsKICAgICBlbHNlIGlmIChr
ZXkgPT0gIkVuZCIpCi0gICAgICAgIG5ld1ZhbHVlID0gaXNWZXJ0aWNhbCA/IG1pbmltdW0oKSA6
IG1heGltdW0oKTsKKyAgICAgICAgbmV3VmFsdWUgPSBpc1ZlcnRpY2FsID8gc3RlcFJhbmdlLm1p
bmltdW0gOiBzdGVwUmFuZ2UubWF4aW11bTsKICAgICBlbHNlCiAgICAgICAgIHJldHVybjsgLy8g
RGlkIG5vdCBtYXRjaCBhbnkga2V5IGJpbmRpbmcuCiAKICAgICBuZXdWYWx1ZSA9IFN0ZXBSYW5n
ZShlbGVtZW50KCkpLmNsYW1wVmFsdWUobmV3VmFsdWUpOwogCiAgICAgaWYgKG5ld1ZhbHVlICE9
IGN1cnJlbnQpIHsKLSAgICAgICAgRXhjZXB0aW9uQ29kZSBlYzsKLSAgICAgICAgVGV4dEZpZWxk
RXZlbnRCZWhhdmlvciBldmVudEJlaGF2aW9yID0gRGlzcGF0Y2hDaGFuZ2VFdmVudDsKLSAgICAg
ICAgc2V0VmFsdWVBc051bWJlcihuZXdWYWx1ZSwgZXZlbnRCZWhhdmlvciwgZWMpOworICAgICAg
ICBlbGVtZW50KCktPnNldFZhbHVlKG5ld1ZhbHVlLnRvU3RyaW5nKCksIERpc3BhdGNoQ2hhbmdl
RXZlbnQpOwogCiAgICAgICAgIGlmIChBWE9iamVjdENhY2hlOjphY2Nlc3NpYmlsaXR5RW5hYmxl
ZCgpKQogICAgICAgICAgICAgZWxlbWVudCgpLT5kb2N1bWVudCgpLT5heE9iamVjdENhY2hlKCkt
PnBvc3ROb3RpZmljYXRpb24oZWxlbWVudCgpLT5yZW5kZXJlcigpLCBBWE9iamVjdENhY2hlOjpB
WFZhbHVlQ2hhbmdlZCwgdHJ1ZSk7CkBAIC0zMDMsMTIgKzMwOCwxMiBAQCB2b2lkIFJhbmdlSW5w
dXRUeXBlOjpzZXRWYWx1ZShjb25zdCBTdHJpbmcmIHZhbHVlLCBib29sIHZhbHVlQ2hhbmdlZCwg
VGV4dEZpZWxkRQogCiBTdHJpbmcgUmFuZ2VJbnB1dFR5cGU6OmZhbGxiYWNrVmFsdWUoKSBjb25z
dAogewotICAgIHJldHVybiBzZXJpYWxpemVGb3JOdW1iZXJUeXBlKFN0ZXBSYW5nZShlbGVtZW50
KCkpLmRlZmF1bHRWYWx1ZSgpKTsKKyAgICByZXR1cm4gU3RlcFJhbmdlKGVsZW1lbnQoKSkuZGVm
YXVsdFZhbHVlKCkudG9TdHJpbmcoKTsKIH0KIAogU3RyaW5nIFJhbmdlSW5wdXRUeXBlOjpzYW5p
dGl6ZVZhbHVlKGNvbnN0IFN0cmluZyYgcHJvcG9zZWRWYWx1ZSkgY29uc3QKIHsKLSAgICByZXR1
cm4gc2VyaWFsaXplRm9yTnVtYmVyVHlwZShTdGVwUmFuZ2UoZWxlbWVudCgpKS5jbGFtcFZhbHVl
KHByb3Bvc2VkVmFsdWUpKTsKKyAgICByZXR1cm4gU3RlcFJhbmdlKGVsZW1lbnQoKSkuY2xhbXBW
YWx1ZShwcm9wb3NlZFZhbHVlKS50b1N0cmluZygpOwogfQogCiBib29sIFJhbmdlSW5wdXRUeXBl
OjpzaG91bGRSZXNwZWN0TGlzdEF0dHJpYnV0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1JhbmdlSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRU
eXBlLmgKaW5kZXggYWJmMmVhNjc0ODI3ZjE4MzBhNjExMGNmMDA5ODRjZjQwZmQzOGZjNS4uOWY2
ODgwYTM1OWVhZTQzNjc1ZWQxZWJhNDg3ODY3MDUyYzlmZTZjMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
UmFuZ2VJbnB1dFR5cGUuaApAQCAtNTMsNiArNTMsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwg
Ym9vbCBzdXBwb3J0c1JhbmdlTGltaXRhdGlvbigpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1
YWwgZG91YmxlIG1pbmltdW0oKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGRvdWJsZSBt
YXhpbXVtKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGdldEFsbG93ZWRWYWx1
ZVN0ZXAoRGVjaW1hbCopIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBpc1N0ZXBw
YWJsZSgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBzdGVwTWlzbWF0Y2goY29u
c3QgU3RyaW5nJiwgZG91YmxlKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGRvdWJsZSBz
dGVwQmFzZSgpIGNvbnN0IE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9TdGVwUmFuZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9TdGVwUmFuZ2UuY3BwCmluZGV4
IDZiN2M3NjM2OTAwMmY4MDNjN2IxNTg2OGE2Y2U3MzMwZjY3Mjg1ZDQuLjVjMWFkOGUwZmY3MDQz
MDZiYzUzYmRhMWRlNWEzNzY0NDM0ZWMwYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvU3RlcFJhbmdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1N0ZXBSYW5nZS5jcHAK
QEAgLTMzLDI2ICszMywzOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFj
ZSBIVE1MTmFtZXM7CiAKK3N0YXRpYyBjb25zdCBpbnQgcmFuZ2VEZWZhdWx0TWluaW11bSA9IDA7
CitzdGF0aWMgY29uc3QgaW50IHJhbmdlRGVmYXVsdE1heGltdW0gPSAxMDA7CitzdGF0aWMgY29u
c3QgaW50IHJhbmdlRGVmYXVsdFN0ZXAgPSAxOworCiBTdGVwUmFuZ2U6OlN0ZXBSYW5nZShjb25z
dCBIVE1MSW5wdXRFbGVtZW50KiBlbGVtZW50KQogewotICAgIHN0ZXAgPSAxOworICAgIHN0ZXAg
PSByYW5nZURlZmF1bHRTdGVwOwogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgcHJlY2lzaW9uVmFs
dWUgPSBlbGVtZW50LT5mYXN0R2V0QXR0cmlidXRlKHByZWNpc2lvbkF0dHIpOwogICAgIGlmICgh
cHJlY2lzaW9uVmFsdWUuaXNOdWxsKCkpCiAgICAgICAgIGhhc1N0ZXAgPSAhZXF1YWxJZ25vcmlu
Z0Nhc2UocHJlY2lzaW9uVmFsdWUsICJmbG9hdCIpOwogICAgIGVsc2UKICAgICAgICAgaGFzU3Rl
cCA9IGVsZW1lbnQtPmdldEFsbG93ZWRWYWx1ZVN0ZXAoJnN0ZXApOwogCi0gICAgbWF4aW11bSA9
IGVsZW1lbnQtPm1heGltdW0oKTsKLSAgICBtaW5pbXVtID0gZWxlbWVudC0+bWluaW11bSgpOwor
ICAgIGlmICghcGFyc2VUb0RlY2ltYWxGb3JOdW1iZXJUeXBlKGVsZW1lbnQtPmZhc3RHZXRBdHRy
aWJ1dGUobWluQXR0ciksICZtaW5pbXVtKSkKKyAgICAgICAgbWluaW11bSA9IHJhbmdlRGVmYXVs
dE1pbmltdW07CisKKyAgICBpZiAoIXBhcnNlVG9EZWNpbWFsRm9yTnVtYmVyVHlwZShlbGVtZW50
LT5mYXN0R2V0QXR0cmlidXRlKG1heEF0dHIpLCAmbWF4aW11bSkpCisgICAgICAgIG1heGltdW0g
PSByYW5nZURlZmF1bHRNYXhpbXVtOworCisgICAgLy8gQSByZW1lZHkgZm9yIHRoZSBpbmNvbnNp
c3RlbnQgbWluL21heCB2YWx1ZXMuCisgICAgLy8gU2V0cyB0aGUgbWF4aW11bSB0byB0aGUgZGVm
YXVsdCBvciB0aGUgbWluaW11bSB2YWx1ZS4KKyAgICBpZiAobWF4aW11bSA8IG1pbmltdW0pCisg
ICAgICAgIG1heGltdW0gPSBzdGQ6Om1heChtaW5pbXVtLCBEZWNpbWFsKHJhbmdlRGVmYXVsdE1h
eGltdW0pKTsKIH0KIAotZG91YmxlIFN0ZXBSYW5nZTo6Y2xhbXBWYWx1ZShkb3VibGUgdmFsdWUp
CitEZWNpbWFsIFN0ZXBSYW5nZTo6Y2xhbXBWYWx1ZShjb25zdCBEZWNpbWFsJiB2YWx1ZSkKIHsK
LSAgICBkb3VibGUgY2xhbXBlZFZhbHVlID0gbWF4KG1pbmltdW0sIG1pbih2YWx1ZSwgbWF4aW11
bSkpOworICAgIERlY2ltYWwgY2xhbXBlZFZhbHVlID0gbWF4KG1pbmltdW0sIG1pbih2YWx1ZSwg
bWF4aW11bSkpOwogICAgIGlmICghaGFzU3RlcCkKICAgICAgICAgcmV0dXJuIGNsYW1wZWRWYWx1
ZTsKICAgICAvLyBSb3VuZHMgY2xhbXBlZFZhbHVlIHRvIG1pbmltdW0gKyBOICogc3RlcC4KLSAg
ICBjbGFtcGVkVmFsdWUgPSBtaW5pbXVtICsgcm91bmQoKGNsYW1wZWRWYWx1ZSAtIG1pbmltdW0p
IC8gc3RlcCkgKiBzdGVwOworICAgIGNsYW1wZWRWYWx1ZSA9IG1pbmltdW0gKyAoKGNsYW1wZWRW
YWx1ZSAtIG1pbmltdW0pIC8gc3RlcCkucm91bmQoKSAqIHN0ZXA7CiAgICAgaWYgKGNsYW1wZWRW
YWx1ZSA+IG1heGltdW0pCiAgICAgICAgY2xhbXBlZFZhbHVlIC09IHN0ZXA7CiAgICAgQVNTRVJU
KGNsYW1wZWRWYWx1ZSA+PSBtaW5pbXVtKTsKQEAgLTYwLDI2ICs3MiwyNCBAQCBkb3VibGUgU3Rl
cFJhbmdlOjpjbGFtcFZhbHVlKGRvdWJsZSB2YWx1ZSkKICAgICByZXR1cm4gY2xhbXBlZFZhbHVl
OwogfQogCi1kb3VibGUgU3RlcFJhbmdlOjpjbGFtcFZhbHVlKGNvbnN0IFN0cmluZyYgc3RyaW5n
VmFsdWUpCitEZWNpbWFsIFN0ZXBSYW5nZTo6Y2xhbXBWYWx1ZShjb25zdCBTdHJpbmcmIHN0cmlu
Z1ZhbHVlKQogewotICAgIGRvdWJsZSB2YWx1ZTsKLSAgICBib29sIHBhcnNlU3VjY2VzcyA9IHBh
cnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKHN0cmluZ1ZhbHVlLCAmdmFsdWUpOwotICAgIGlmICgh
cGFyc2VTdWNjZXNzKQotICAgICAgICB2YWx1ZSA9IChtaW5pbXVtICsgbWF4aW11bSkgLyAyOwot
ICAgIHJldHVybiBjbGFtcFZhbHVlKHZhbHVlKTsKKyAgICBEZWNpbWFsIHZhbHVlOworICAgIHJl
dHVybiBwYXJzZVRvRGVjaW1hbEZvck51bWJlclR5cGUoc3RyaW5nVmFsdWUsICZ2YWx1ZSkgPyBj
bGFtcFZhbHVlKHZhbHVlKSA6IGRlZmF1bHRWYWx1ZSgpOwogfQogCi1kb3VibGUgU3RlcFJhbmdl
Ojp2YWx1ZUZyb21FbGVtZW50KEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQsIGJvb2wqIHdhc0Ns
YW1wZWQpCitEZWNpbWFsIFN0ZXBSYW5nZTo6dmFsdWVGcm9tRWxlbWVudChIVE1MSW5wdXRFbGVt
ZW50KiBlbGVtZW50LCBib29sKiB3YXNDbGFtcGVkKQogewotICAgIGRvdWJsZSBvbGRWYWx1ZTsK
LSAgICBib29sIHBhcnNlU3VjY2VzcyA9IHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKGVsZW1l
bnQtPnZhbHVlKCksICZvbGRWYWx1ZSk7Ci0gICAgaWYgKCFwYXJzZVN1Y2Nlc3MpCi0gICAgICAg
IG9sZFZhbHVlID0gKG1pbmltdW0gKyBtYXhpbXVtKSAvIDI7Ci0gICAgZG91YmxlIG5ld1ZhbHVl
ID0gY2xhbXBWYWx1ZShvbGRWYWx1ZSk7CisgICAgRGVjaW1hbCBvbGRWYWx1ZTsKKyAgICBpZiAo
IXBhcnNlVG9EZWNpbWFsRm9yTnVtYmVyVHlwZShlbGVtZW50LT52YWx1ZSgpLCAmb2xkVmFsdWUp
KSB7CisgICAgICAgIGlmICh3YXNDbGFtcGVkKQorICAgICAgICAgICAgKndhc0NsYW1wZWQgPSB0
cnVlOworICAgICAgICByZXR1cm4gZGVmYXVsdFZhbHVlKCk7CisgICAgfQogCisgICAgY29uc3Qg
RGVjaW1hbCBuZXdWYWx1ZSA9IGNsYW1wVmFsdWUob2xkVmFsdWUpOwogICAgIGlmICh3YXNDbGFt
cGVkKQotICAgICAgICAqd2FzQ2xhbXBlZCA9ICFwYXJzZVN1Y2Nlc3MgfHwgbmV3VmFsdWUgIT0g
b2xkVmFsdWU7Ci0KKyAgICAgICAgKndhc0NsYW1wZWQgPSBuZXdWYWx1ZSAhPSBvbGRWYWx1ZTsK
ICAgICByZXR1cm4gbmV3VmFsdWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvU3RlcFJhbmdlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1N0ZXBSYW5nZS5oCmluZGV4IDJm
YTEzOTNjNTUyYWUxMDAyZTc0NDQxZDZmYWQxMmRlZTRjYmRiYzYuLjgxYjkyZGMyMjc2MzE1YjZj
YWMzYjc4NzJhMmYwZTA1ZWQ2ZmU1ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
U3RlcFJhbmdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9TdGVwUmFuZ2UuaApAQCAtMjEs
NiArMjEsNyBAQAogI2lmbmRlZiBTdGVwUmFuZ2VfaAogI2RlZmluZSBTdGVwUmFuZ2VfaAogCisj
aW5jbHVkZSA8RGVjaW1hbC5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8
d3RmL05vbmNvcHlhYmxlLmg+CiAKQEAgLTMyLDIyICszMywyMiBAQCBjbGFzcyBTdGVwUmFuZ2Ug
ewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFN0ZXBSYW5nZSk7CiBwdWJsaWM6CiAgICAgYm9v
bCBoYXNTdGVwOwotICAgIGRvdWJsZSBzdGVwOwotICAgIGRvdWJsZSBtaW5pbXVtOwotICAgIGRv
dWJsZSBtYXhpbXVtOyAvLyBtYXhpbXVtIG11c3QgYmUgPj0gbWluaW11bS4KKyAgICBEZWNpbWFs
IHN0ZXA7CisgICAgRGVjaW1hbCBtaW5pbXVtOworICAgIERlY2ltYWwgbWF4aW11bTsgLy8gbWF4
aW11bSBtdXN0IGJlID49IG1pbmltdW0uCiAKICAgICBleHBsaWNpdCBTdGVwUmFuZ2UoY29uc3Qg
SFRNTElucHV0RWxlbWVudCopOwotICAgIGRvdWJsZSBjbGFtcFZhbHVlKGRvdWJsZSB2YWx1ZSk7
Ci0gICAgZG91YmxlIGNsYW1wVmFsdWUoY29uc3QgU3RyaW5nJiBzdHJpbmdWYWx1ZSk7CisgICAg
RGVjaW1hbCBjbGFtcFZhbHVlKGNvbnN0IERlY2ltYWwmIHZhbHVlKTsKKyAgICBEZWNpbWFsIGNs
YW1wVmFsdWUoY29uc3QgU3RyaW5nJiBzdHJpbmdWYWx1ZSk7CiAKICAgICAvLyBDbGFtcCB0aGUg
bWlkZGxlIHZhbHVlIGFjY29yZGluZyB0byB0aGUgc3RlcAotICAgIGRvdWJsZSBkZWZhdWx0VmFs
dWUoKQorICAgIERlY2ltYWwgZGVmYXVsdFZhbHVlKCkKICAgICB7CiAgICAgICAgIHJldHVybiBj
bGFtcFZhbHVlKChtaW5pbXVtICsgbWF4aW11bSkgLyAyKTsKICAgICB9CiAKICAgICAvLyBNYXAg
dmFsdWUgaW50byAwLTEgcmFuZ2UKLSAgICBkb3VibGUgcHJvcG9ydGlvbkZyb21WYWx1ZShkb3Vi
bGUgdmFsdWUpCisgICAgRGVjaW1hbCBwcm9wb3J0aW9uRnJvbVZhbHVlKGNvbnN0IERlY2ltYWwm
IHZhbHVlKQogICAgIHsKICAgICAgICAgaWYgKG1pbmltdW0gPT0gbWF4aW11bSkKICAgICAgICAg
ICAgIHJldHVybiAwOwpAQCAtNTYsMTIgKzU3LDEyIEBAIHB1YmxpYzoKICAgICB9CiAKICAgICAv
LyBNYXAgZnJvbSAwLTEgcmFuZ2UgdG8gdmFsdWUKLSAgICBkb3VibGUgdmFsdWVGcm9tUHJvcG9y
dGlvbihkb3VibGUgcHJvcG9ydGlvbikKKyAgICBEZWNpbWFsIHZhbHVlRnJvbVByb3BvcnRpb24o
Y29uc3QgRGVjaW1hbCYgcHJvcG9ydGlvbikKICAgICB7CiAgICAgICAgIHJldHVybiBtaW5pbXVt
ICsgcHJvcG9ydGlvbiAqIChtYXhpbXVtIC0gbWluaW11bSk7CiAgICAgfQogCi0gICAgZG91Ymxl
IHZhbHVlRnJvbUVsZW1lbnQoSFRNTElucHV0RWxlbWVudCosIGJvb2wqIHdhc0NsYW1wZWQgPSAw
KTsKKyAgICBEZWNpbWFsIHZhbHVlRnJvbUVsZW1lbnQoSFRNTElucHV0RWxlbWVudCosIGJvb2wq
IHdhc0NsYW1wZWQgPSAwKTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAKaW5kZXggYjg2MDIwMjVlOGEyZDM4MjI1ODFkZGUwM2Zl
NTgxZDY1Y2M2OTBjOS4uMGQxMmQ3MDQ1NDk1YzFlNzE1ZTYyN2ZmNWY3MzM0OTUwY2Q1NjEyMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAK
QEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJIVE1MUGFy
c2VySWRpb21zLmgiCiAKKyNpbmNsdWRlICJEZWNpbWFsLmgiCiAjaW5jbHVkZSA8bGltaXRzPgog
I2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL2R0b2EuaD4KQEAgLTY2
LDYgKzY3LDE2IEBAIFN0cmluZyBzZXJpYWxpemVGb3JOdW1iZXJUeXBlKGRvdWJsZSBudW1iZXIp
CiAgICAgcmV0dXJuIFN0cmluZyhudW1iZXJUb1N0cmluZyhudW1iZXIsIGJ1ZmZlcikpOwogfQog
Citib29sIHBhcnNlVG9EZWNpbWFsRm9yTnVtYmVyVHlwZShjb25zdCBTdHJpbmcmIHN0cmluZywg
RGVjaW1hbCogcmVzdWx0KQoreworICAgIC8vIFBhcnNlIHN0cmluZyB3aXRoIEhUTUw1IHNwZWNp
ZmljYXRpb24gZm9yIGNoZWNraW5nIHN5bnRheCBhbmQgcmFuZ2Ugb2YgdmFsdWUuCisgICAgZG91
YmxlIGRvdWJsZVJlc3VsdDsKKyAgICBpZiAoIXBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKHN0
cmluZywgJmRvdWJsZVJlc3VsdCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAqcmVzdWx0
ID0gRGVjaW1hbDo6ZnJvbVN0cmluZyhzdHJpbmcpOworICAgIHJldHVybiB0cnVlOworfQorCiBi
b29sIHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBkb3Vi
bGUqIHJlc3VsdCkKIHsKICAgICAvLyBTZWUgSFRNTDUgMi41LjQuMyBgUmVhbCBudW1iZXJzLicK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuaAppbmRleCAx
OWNkMjc2OTM5ZWNhNjNiOWRkMzcxNTllMzU1NzdhZTdkZDFiYWY5Li4zNjI1NDdiNTBiZDFjZTZj
OTQ4NzhmNmJlYTQxMWI0ZWExZDMyMDE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTFBhcnNlcklkaW9tcy5oCkBAIC0zMCw2ICszMCw4IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorY2xhc3MgRGVjaW1hbDsKKwogLy8gU3BhY2UgY2hhcmFjdGVycyBhcyBkZWZpbmVk
IGJ5IHRoZSBIVE1MIHNwZWNpZmljYXRpb24uCiBib29sIGlzSFRNTFNwYWNlKFVDaGFyKTsKIGJv
b2wgaXNIVE1MTGluZUJyZWFrKFVDaGFyKTsKQEAgLTQ3LDYgKzQ5LDkgQEAgU3RyaW5nIHNlcmlh
bGl6ZUZvck51bWJlclR5cGUoZG91YmxlKTsKIGJvb2wgcGFyc2VUb0RvdWJsZUZvck51bWJlclR5
cGUoY29uc3QgU3RyaW5nJiwgZG91YmxlKik7CiBib29sIHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJU
eXBlV2l0aERlY2ltYWxQbGFjZXMoY29uc3QgU3RyaW5nJiwgZG91YmxlKiwgdW5zaWduZWQqKTsK
IAorLy8gQ29udmVydCB0aGUgc3BlY2lmaWVkIHN0cmluZyB0byBEZWNpbWFsIGFzIHNpbWlsYXIg
dG8gcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUuCitib29sIHBhcnNlVG9EZWNpbWFsRm9yTnVt
YmVyVHlwZShjb25zdCBTdHJpbmcmLCBEZWNpbWFsKik7CisKIC8vIGh0dHA6Ly93d3cud2hhdHdn
Lm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvI3J1bGVzLWZvci1wYXJzaW5nLWludGVn
ZXJzCiBib29sIHBhcnNlSFRNTEludGVnZXIoY29uc3QgU3RyaW5nJiwgaW50Jik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwCmluZGV4
IGY4YWYzOWY1MTA0MGRkZDVhZTkxODQ3ZWEyOTUzNWRmZmI3NjdhOTkuLjJjY2Q2MmM1ZTY2YmM5
MDU0YTAyZGY2ZmQ1YWMzZTJhZGI0N2RjNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcApAQCAtNTEsNyArNTEsNyBAQCB1c2luZyBu
YW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWlubGluZSBzdGF0aWMgZG91
YmxlIHNsaWRlclBvc2l0aW9uKEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQpCitpbmxpbmUgc3Rh
dGljIERlY2ltYWwgc2xpZGVyUG9zaXRpb24oSFRNTElucHV0RWxlbWVudCogZWxlbWVudCkKIHsK
ICAgICBTdGVwUmFuZ2UgcmFuZ2UoZWxlbWVudCk7CiAgICAgcmV0dXJuIHJhbmdlLnByb3BvcnRp
b25Gcm9tVmFsdWUocmFuZ2UudmFsdWVGcm9tRWxlbWVudChlbGVtZW50KSk7CkBAIC0xMDksNyAr
MTA5LDkgQEAgdm9pZCBSZW5kZXJTbGlkZXJUaHVtYjo6bGF5b3V0KCkKICAgICBIVE1MSW5wdXRF
bGVtZW50KiBpbnB1dCA9IG5vZGUoKS0+c2hhZG93QW5jZXN0b3JOb2RlKCktPnRvSW5wdXRFbGVt
ZW50KCk7CiAgICAgYm9vbCBpc1ZlcnRpY2FsID0gc3R5bGUoKS0+YXBwZWFyYW5jZSgpID09IFNs
aWRlclRodW1iVmVydGljYWxQYXJ0IHx8IHN0eWxlKCktPmFwcGVhcmFuY2UoKSA9PSBNZWRpYVZv
bHVtZVNsaWRlclRodW1iUGFydDsKIAotICAgIGRvdWJsZSBmcmFjdGlvbiA9IHNsaWRlclBvc2l0
aW9uKGlucHV0KSAqIDEwMDsKKyAgICBkb3VibGUgZnJhY3Rpb247CisgICAgcGFyc2VUb0RvdWJs
ZUZvck51bWJlclR5cGUoKHNsaWRlclBvc2l0aW9uKGlucHV0KSAqIDEwMCkudG9TdHJpbmcoKSwg
JmZyYWN0aW9uKTsKKyAgICBBU1NFUlQoaXNmaW5pdGUoZnJhY3Rpb24pKTsKICAgICBpZiAoaXNW
ZXJ0aWNhbCkKICAgICAgICAgc3R5bGUoKS0+c2V0VG9wKExlbmd0aCgxMDAgLSBmcmFjdGlvbiwg
UGVyY2VudCkpOwogICAgIGVsc2UgaWYgKHN0eWxlKCktPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24o
KSkKQEAgLTIzNiwxMyArMjM4LDEzIEBAIHZvaWQgU2xpZGVyVGh1bWJFbGVtZW50OjpzZXRQb3Np
dGlvbkZyb21Qb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQpCiAgICAgICAgIHJldHVybjsK
IAogICAgIFN0ZXBSYW5nZSByYW5nZShpbnB1dCk7Ci0gICAgZG91YmxlIGZyYWN0aW9uID0gc3Rh
dGljX2Nhc3Q8ZG91YmxlPihwb3NpdGlvbikgLyB0cmFja1NpemU7CisgICAgRGVjaW1hbCBmcmFj
dGlvbiA9IERlY2ltYWwocG9zaXRpb24pIC8gdHJhY2tTaXplOwogICAgIGlmIChpc1ZlcnRpY2Fs
IHx8ICFyZW5kZXJCb3goKS0+c3R5bGUoKS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKQotICAg
ICAgICBmcmFjdGlvbiA9IDEgLSBmcmFjdGlvbjsKLSAgICBkb3VibGUgdmFsdWUgPSByYW5nZS5j
bGFtcFZhbHVlKHJhbmdlLnZhbHVlRnJvbVByb3BvcnRpb24oZnJhY3Rpb24pKTsKKyAgICAgICAg
ZnJhY3Rpb24gPSBEZWNpbWFsKDEpIC0gZnJhY3Rpb247CisgICAgY29uc3QgRGVjaW1hbCB2YWx1
ZSA9IHJhbmdlLmNsYW1wVmFsdWUocmFuZ2UudmFsdWVGcm9tUHJvcG9ydGlvbihmcmFjdGlvbikp
OwogCiAgICAgLy8gRklYTUU6IFRoaXMgaXMgbm8gbG9uZ2VyIGJlaW5nIHNldCBmcm9tIHJlbmRl
cmVyLiBDb25zaWRlciB1cGRhdGluZyB0aGUgbWV0aG9kIG5hbWUuCi0gICAgaW5wdXQtPnNldFZh
bHVlRnJvbVJlbmRlcmVyKHNlcmlhbGl6ZUZvck51bWJlclR5cGUodmFsdWUpKTsKKyAgICBpbnB1
dC0+c2V0VmFsdWVGcm9tUmVuZGVyZXIodmFsdWUudG9TdHJpbmcoKSk7CiAgICAgcmVuZGVyZXIo
KS0+c2V0TmVlZHNMYXlvdXQodHJ1ZSk7CiAgICAgaW5wdXQtPmRpc3BhdGNoRm9ybUNvbnRyb2xD
aGFuZ2VFdmVudCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGVj
aW1hbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EZWNpbWFsLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li45NWNmZTZiYmZjYzRjNmY3MzE2Yjc0MDE4YzlhNGI4ODcxMGY2YTJiCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGVjaW1hbC5jcHAKQEAgLTAsMCArMSwxMDU2
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisg
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRlY2ltYWwuaCIKKworI2luY2x1ZGUg
PGFsZ29yaXRobT4KKyNpbmNsdWRlIDxmbG9hdC5oPgorCisjaW5jbHVkZSA8d3RmL0Fzc2VydGlv
bnMuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdCdWlsZGVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIERlY2lt
YWxQcml2YXRlIHsKKwordXNpbmcgbmFtZXNwYWNlIHN0ZDsKKworc3RhdGljIGNvbnN0IGludCBQ
cmVjaXNpb25PZkV4cG9uZW50Qml0cyA9IDExOworc3RhdGljIGNvbnN0IGludCBQcmVjaXNpb25P
ZkNvZWZmaWNpZW50Qml0cyA9IDY0Oworc3RhdGljIGNvbnN0IHVpbnQ2NF90IE1heENvZWZmaWNp
ZW50ID0gMHgxNjM0NTc4NUQ4OUZGRkZ1bGw7IC8vIDk5OTk5OTk5OTk5OTk5OTk5OTsgLy8gMTgg
OSdzCisKK3N0YXRpYyBjb25zdCB1aW50MzJfdCBFeHBvbmVudE1hc2sgPSAweDdGRjsKKworc3Rh
dGljIGNvbnN0IHVpbnQzMl90IE5lZ2F0aXZlSW5maW5pdHlQYXR0ZXJuID0gdWludDMyX3QoMHg4
MDAwMDdGRik7CitzdGF0aWMgY29uc3QgdWludDMyX3QgUG9zaXRpdmVJbmZpbml0eVBhdHRlcm4g
PSB1aW50MzJfdCgweDAwMDAwN0ZGKTsKKworc3RhdGljIGNvbnN0IHVpbnQzMl90IE5lZ2F0aXZl
UXVpZXROYU5QYXR0ZXJuID0gdWludDMyX3QoMHg4MDAwMEZGRik7CitzdGF0aWMgY29uc3QgdWlu
dDMyX3QgUG9zaXRpdmVRdWlldE5hTlBhdHRlcm4gPSB1aW50MzJfdCgweDAwMDAwRkZGKTsKKwor
c3RhdGljIGNvbnN0IHVpbnQzMl90IE5lZ2F0aXZlWmVyb1BhdHRlcm4gPSB1aW50MzJfdCgweDgw
MDAwM0ZGKTsKK3N0YXRpYyBjb25zdCB1aW50MzJfdCBQb3NpdGl2ZVplcm9QYXR0ZXJuID0gdWlu
dDMyX3QoMHgwMDAwMDNGRik7CisKK3N0YXRpYyBjb25zdCB1aW50MzJfdCBOZWdhdGl2ZVBhdHRl
cm4gPSB1aW50MzJfdCgweDgwMDAwMDAwKTsKK3N0YXRpYyBjb25zdCB1aW50MzJfdCBQb3NpdGl2
ZVBhdHRlcm4gPSAwOworCisvLyBUaGlzIGNsYXNzIGhhbmRsZXMgRGVjaW1hbCBzcGVjaWFsIHZh
bHVlcy4KK2NsYXNzIFNwZWNpYWxWYWx1ZUhhbmRsZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKFNwZWNpYWxWYWx1ZUhhbmRsZXIpOworcHVibGljOgorICAgIGVudW0gSGFuZGxlUmVzdWx0
IHsKKyAgICAgICAgQm90aEZpbml0ZSwKKyAgICAgICAgQm90aGluZmluaXR5LAorICAgICAgICBF
aXRoZXJOYU4sCisgICAgICAgIExoc0lzaW5maW5pdHksCisgICAgICAgIFJoc0lzaW5maW5pdHks
CisgICAgfTsKKworICAgIFNwZWNpYWxWYWx1ZUhhbmRsZXIoY29uc3QgRGVjaW1hbCYsIGNvbnN0
IERlY2ltYWwmKTsKKyAgICBIYW5kbGVSZXN1bHQgaGFuZGxlKCk7CisgICAgRGVjaW1hbCB2YWx1
ZSgpIGNvbnN0OworCitwcml2YXRlOgorICAgIGVudW0gUmVzdWx0IHsKKyAgICAgICAgUmVzdWx0
SXNMaHMsCisgICAgICAgIFJlc3VsdElzUmhzLAorICAgICAgICBSZXN1bHRJc1Vua25vd24sCisg
ICAgfTsKKworICAgIGNvbnN0IERlY2ltYWwmIG1fbGhzOworICAgIFJlc3VsdCBtX3Jlc3VsdDsK
KyAgICBjb25zdCBEZWNpbWFsJiBtX3JoczsKK307CisKKy8vIFRoaXMgY2xhc3MgaXMgdXNlZCBm
b3IgMTI4IGJpdCB1bnNpZ25lZCBpbnRlZ2VyIGFyaXRobWV0aWMuCitjbGFzcyBVSW50MTI4IHsK
K3B1YmxpYzoKKyAgICBVSW50MTI4KHVpbnQ2NF90LCB1aW50NjRfdCk7CisKKyAgICBVSW50MTI4
JiBvcGVyYXRvciAvPSh1aW50MzJfdCk7CisKKyAgICB1aW50NjRfdCBoaWdoKCkgY29uc3QgeyBy
ZXR1cm4gbV9oaWdoOyB9CisgICAgdWludDY0X3QgbG93KCkgY29uc3QgeyByZXR1cm4gbV9sb3c7
IH0KKworICAgIHN0YXRpYyBVSW50MTI4IG11bHRpcGx5KHVpbnQ2NF90LCB1aW50NjRfdCk7CisK
K3ByaXZhdGU6CisgICAgYm9vbCBpc1plcm8oKSBjb25zdCB7IHJldHVybiAhbV9sb3cgJiYgIW1f
aGlnaDsgfQorCisgICAgdWludDY0X3QgbV9oaWdoOworICAgIHVpbnQ2NF90IG1fbG93OworfTsK
Kworc3RhdGljIGludCBjb3VudERpZ2l0cyh1aW50NjRfdCB4KQoreworICAgIGludCBudW1iZXJP
ZkRpZ2l0cyA9IDA7CisgICAgdWludDY0X3QgcG93ZXJPZjEwID0gMTsKKyAgICB3aGlsZSAoeCA+
PSBwb3dlck9mMTApIHsKKyAgICAgICAgKytudW1iZXJPZkRpZ2l0czsKKyAgICAgICAgaWYgKHBv
d2VyT2YxMCA+PSB1aW50NjRfdCgtMSkgLyAxMCkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBwb3dlck9mMTAgKj0gMTA7CisgICAgfQorICAgIHJldHVybiBudW1iZXJPZkRpZ2l0czsKK30K
Kworc3RhdGljIHVpbnQ2NF90IG11bHRpcGx5SGlnaCh1aW50NjRfdCB1LCB1aW50NjRfdCB2KQor
eworICAgIGNvbnN0IGludCBuID0gNjQ7CisgICAgY29uc3QgaW50IG4yID0gbiAvIDI7CisgICAg
Y29uc3QgdWludDY0X3QgbWFzayA9ICh1aW50NjRfdCgxKSA8PCBuMikgLSAxOworICAgIHVpbnQ2
NF90IHUwID0gdSAmIG1hc2s7CisgICAgdWludDY0X3QgdTEgPSB1ID4+IG4yOworICAgIHVpbnQ2
NF90IHYwID0gdiAmIG1hc2s7CisgICAgdWludDY0X3QgdjEgPSB2ID4+IG4yOworICAgIHVpbnQ2
NF90IHcwID0gdTAgKiB2MDsKKyAgICB1aW50NjRfdCB0dCA9IHUxICogdjAgKyAodzAgPj4gbjIp
OworICAgIHVpbnQ2NF90IHcxID0gdHQgJiBtYXNrOworICAgIHVpbnQ2NF90IHcyID0gdHQgPj4g
bjI7CisgICAgdzEgPSB1MCAqIHYxICsgdzE7CisgICAgcmV0dXJuIHUxICogdjEgKyB3MiArICh3
MSA+PiBuMik7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdGF0aWMgVCBwb3dlcihUIGNv
bnN0IHgsIHVuc2lnbmVkIG4pCit7CisgICAgVCB5ID0gMTsKKyAgICBUIHogPSB4OworICAgIGZv
ciAoOzspIHsKKyAgICAgICAgaWYgKG4gJiAxKSB7CisgICAgICAgICAgICB5ID0geSAqIHo7Cisg
ICAgICAgICAgICBBU1NFUlQoeSA+PSB6KTsKKyAgICAgICAgfQorCisgICAgICAgIG4gPj49IDE7
CisgICAgICAgIGlmICghbikKKyAgICAgICAgICAgIHJldHVybiB5OworCisgICAgICAgIHogPSB6
ICogejsKKyAgICB9Cit9CisKK3N0YXRpYyB1aW50NjRfdCBzY2FsZURvd24odWludDY0X3QgeCwg
aW50IG4pCit7CisgICAgQVNTRVJUKG4gPj0gMCk7CisgICAgd2hpbGUgKG4gPiAwICYmIHgpIHsK
KyAgICAgICAgeCAvPSAxMDsKKyAgICAgICAgLS1uOworICAgIH0KKyAgICByZXR1cm4geDsKK30K
Kworc3RhdGljIHVpbnQ2NF90IHNjYWxlVXAodWludDY0X3QgeCwgaW50IG4pCit7CisgICAgQVNT
RVJUKG4gPj0gMCk7CisgICAgQVNTRVJUKG4gPCBEZWNpbWFsOjpQcmVjaXNpb24pOworICAgIHVp
bnQ2NF90IHJlc3VsdCA9IHggKiBwb3dlcih1aW50NjRfdCgxMCksIG4pOworICAgIEFTU0VSVChy
ZXN1bHQgPj0geCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworU3BlY2lhbFZhbHVlSGFuZGxl
cjo6U3BlY2lhbFZhbHVlSGFuZGxlcihjb25zdCBEZWNpbWFsJiBsaHMsIGNvbnN0IERlY2ltYWwm
IHJocykKKyAgICA6IG1fbGhzKGxocyksIG1fcmVzdWx0KFJlc3VsdElzVW5rbm93biksIG1fcmhz
KHJocykKK3sKK30KKworU3BlY2lhbFZhbHVlSGFuZGxlcjo6SGFuZGxlUmVzdWx0IFNwZWNpYWxW
YWx1ZUhhbmRsZXI6OmhhbmRsZSgpCit7CisgICAgaWYgKG1fbGhzLmlzRmluaXRlKCkgJiYgbV9y
aHMuaXNGaW5pdGUoKSkKKyAgICAgICAgcmV0dXJuIEJvdGhGaW5pdGU7CisKKyAgICBjb25zdCBE
ZWNpbWFsOjpJZWVlQ2xhc3MgbGhzQ2xhc3MgPSBtX2xocy5pZWVlQ2xhc3MoKTsKKyAgICBjb25z
dCBEZWNpbWFsOjpJZWVlQ2xhc3MgcmhzQ2xhc3MgPSBtX3Jocy5pZWVlQ2xhc3MoKTsKKyAgICBp
ZiAobGhzQ2xhc3MgPT0gRGVjaW1hbDo6Q2xhc3NRdWlldE5hTikgeworICAgICAgICBtX3Jlc3Vs
dCA9IFJlc3VsdElzTGhzOworICAgICAgICByZXR1cm4gRWl0aGVyTmFOOworICAgICB9CisKKyAg
ICBpZiAocmhzQ2xhc3MgPT0gRGVjaW1hbDo6Q2xhc3NRdWlldE5hTikgeworICAgICAgICBtX3Jl
c3VsdCA9IFJlc3VsdElzUmhzOworICAgICAgICByZXR1cm4gRWl0aGVyTmFOOworICAgICB9CisK
KyAgICBpZiAobGhzQ2xhc3MgPT0gRGVjaW1hbDo6Q2xhc3NJbmZpbml0eSkKKyAgICAgICAgcmV0
dXJuIHJoc0NsYXNzID09IERlY2ltYWw6OkNsYXNzSW5maW5pdHkgPyBCb3RoaW5maW5pdHkgOiBM
aHNJc2luZmluaXR5OworCisgICAgaWYgKHJoc0NsYXNzID09IERlY2ltYWw6OkNsYXNzSW5maW5p
dHkpCisgICAgICAgIHJldHVybiBSaHNJc2luZmluaXR5OworCisgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgcmV0dXJuIEJvdGhGaW5pdGU7Cit9CisKK0RlY2ltYWwgU3BlY2lhbFZhbHVl
SGFuZGxlcjo6dmFsdWUoKSBjb25zdAoreworICAgIHN3aXRjaCAobV9yZXN1bHQpIHsKKyAgICBj
YXNlIFJlc3VsdElzTGhzOgorICAgICAgICByZXR1cm4gbV9saHM7CisgICAgY2FzZSBSZXN1bHRJ
c1JoczoKKyAgICAgICAgcmV0dXJuIG1fcmhzOworICAgIGNhc2UgUmVzdWx0SXNVbmtub3duOgor
ICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1
cm4gbV9saHM7CisgICAgfQorfQorCitVSW50MTI4OjpVSW50MTI4KHVpbnQ2NF90IGxvdywgdWlu
dDY0X3QgaGlnaCkKKyAgICA6IG1faGlnaChoaWdoKSwgbV9sb3cobG93KQoreworfQorCitVSW50
MTI4JiBVSW50MTI4OjpvcGVyYXRvciAvPShjb25zdCB1aW50MzJfdCBkaXZpc29yKQoreworICAg
IGlmICghbV9oaWdoKSB7CisgICAgICAgIG1fbG93IC89IGRpdmlzb3I7CisgICAgICAgIHJldHVy
biAqdGhpczsKKyAgICB9CisKKyAgICB1aW50MzJfdCBkaXZpZGVuZFs0XTsKKyAgICBkaXZpZGVu
ZFswXSA9IHVpbnQzMl90KG1fbG93ICYgdWludDMyX3QoLTEpKTsKKyAgICBkaXZpZGVuZFsxXSA9
IHVpbnQzMl90KG1fbG93ID4+IDMyKTsKKyAgICBkaXZpZGVuZFsyXSA9IHVpbnQzMl90KG1faGln
aCAmIHVpbnQzMl90KC0xKSk7CisgICAgZGl2aWRlbmRbM10gPSB1aW50MzJfdChtX2hpZ2ggPj4g
MzIpOworCisgICAgdWludDMyX3QgcXVvdGllbnRbNF07CisgICAgdWludDMyX3QgcmVtYWluZGVy
ID0gMDsKKyAgICBmb3IgKGludCBpID0gMzsgaSA+PSAwOyAtLWkpIHsKKyAgICAgICAgY29uc3Qg
dWludDY0X3Qgd29yayA9ICh1aW50NjRfdChyZW1haW5kZXIpIDw8IDMyKSB8IGRpdmlkZW5kW2ld
OworICAgICAgICByZW1haW5kZXIgPSB1aW50MzJfdCh3b3JrICUgZGl2aXNvcik7CisgICAgICAg
IHF1b3RpZW50W2ldID0gdWludDMyX3Qod29yayAvIGRpdmlzb3IpOworICAgIH0KKyAgICBtX2xv
dyA9IHF1b3RpZW50WzBdIHwgKHVpbnQ2NF90KHF1b3RpZW50WzFdKSA8PCAzMik7CisgICAgbV9o
aWdoID0gcXVvdGllbnRbMl0gfCAodWludDY0X3QocXVvdGllbnRbM10pIDw8IDMyKTsKKyAgICBy
ZXR1cm4gKnRoaXM7Cit9CisKK1VJbnQxMjggVUludDEyODo6bXVsdGlwbHkodWludDY0X3QgdSwg
dWludDY0X3QgdikKK3sKKyAgICByZXR1cm4gVUludDEyOCh1ICogdiwgbXVsdGlwbHlIaWdoKHUs
IHYpKTsKK30KKworfSAvLyBEZWNpbWFsUHJpdmF0ZQorCit1c2luZyBuYW1lc3BhY2UgRGVjaW1h
bFByaXZhdGU7CisKK0RlY2ltYWw6OkVuY29kZWREYXRhOjpFbmNvZGVkRGF0YSh1aW50MzJfdCBw
YXR0ZXJuKQorICAgIDogbV9jb2VmZmljaWVudCgwKQorICAgICwgbV9wYWNrZWRGaWVsZChwYXR0
ZXJuKQoreworICAgIEFTU0VSVCgocGF0dGVybiAmIFBvc2l0aXZlWmVyb1BhdHRlcm4pID09IFBv
c2l0aXZlWmVyb1BhdHRlcm4pOworfQorCitEZWNpbWFsOjpFbmNvZGVkRGF0YTo6RW5jb2RlZERh
dGEodWludDY0X3QgY29lZmZpY2llbnQsIGNvbnN0IGludCBleHBvbmVudCwgY29uc3QgaW50IHNp
Z24pCit7CisgICAgaW50IHJhd0V4cG9uZW50ID0gZXhwb25lbnQgKyBFYmlhczsKKyAgICBpZiAo
dW5zaWduZWQocmF3RXhwb25lbnQpIDwgdW5zaWduZWQoRW1heCkpIHsKKyAgICAgICAgd2hpbGUg
KGNvZWZmaWNpZW50ID49IE1heENvZWZmaWNpZW50KSB7CisgICAgICAgICAgICBjb2VmZmljaWVu
dCAvPSAxMDsKKyAgICAgICAgICAgICsrcmF3RXhwb25lbnQ7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBpZiAocmF3RXhwb25lbnQgPj0gRW1heCkgeworICAgICAgICBtX2NvZWZmaWNpZW50ID0g
MDsKKyAgICAgICAgbV9wYWNrZWRGaWVsZCA9IHNpZ24gPyBOZWdhdGl2ZUluZmluaXR5UGF0dGVy
biA6IFBvc2l0aXZlSW5maW5pdHlQYXR0ZXJuOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgaWYgKHJhd0V4cG9uZW50IDwgMCkgeworICAgICAgICBtX2NvZWZmaWNpZW50ID0gMDsKKyAg
ICAgICAgbV9wYWNrZWRGaWVsZCA9IHNpZ24gPyBOZWdhdGl2ZVplcm9QYXR0ZXJuIDogUG9zaXRp
dmVaZXJvUGF0dGVybjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fY29lZmZpY2ll
bnQgPSBjb2VmZmljaWVudDsKKyAgICBtX3BhY2tlZEZpZWxkID0gcmF3RXhwb25lbnQgfCAoc2ln
biA/IE5lZ2F0aXZlUGF0dGVybiA6IFBvc2l0aXZlUGF0dGVybik7Cit9CisKK3VpbnQ2NF90IERl
Y2ltYWw6OkVuY29kZWREYXRhOjpjb2VmZmljaWVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
Y29lZmZpY2llbnQ7Cit9CisKK2ludCBEZWNpbWFsOjpFbmNvZGVkRGF0YTo6ZXhwb25lbnQoKSBj
b25zdAoreworICAgIHJldHVybiByYXdFeHBvbmVudCgpIC0gRGVjaW1hbDo6RWJpYXM7Cit9CisK
K2Jvb2wgRGVjaW1hbDo6RW5jb2RlZERhdGE6OmlzRmluaXRlKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gIWlzU3BlY2lhbCgpOworfQorCitib29sIERlY2ltYWw6OkVuY29kZWREYXRhOjppc1NwZWNp
YWwoKSBjb25zdAoreworICAgIHJldHVybiByYXdFeHBvbmVudCgpID09IERlY2ltYWw6OkVtYXg7
Cit9CisKK2Jvb2wgRGVjaW1hbDo6RW5jb2RlZERhdGE6OmlzWmVybygpIGNvbnN0Cit7CisgICAg
cmV0dXJuIGlzRmluaXRlKCkgJiYgIW1fY29lZmZpY2llbnQ7Cit9CisKK2ludCBEZWNpbWFsOjpF
bmNvZGVkRGF0YTo6cmF3RXhwb25lbnQoKSBjb25zdAoreworICAgIHJldHVybiBpbnQobV9wYWNr
ZWRGaWVsZCAmIEV4cG9uZW50TWFzayk7Cit9CisKK2ludCBEZWNpbWFsOjpFbmNvZGVkRGF0YTo6
c2lnbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIGludChtX3BhY2tlZEZpZWxkKSA8IDA7Cit9CisK
K3ZvaWQgRGVjaW1hbDo6RW5jb2RlZERhdGE6OnNldFNpZ24oY29uc3QgaW50IHNpZ24pCit7Cisg
ICAgQVNTRVJUKHVuc2lnbmVkKHNpZ24pIDw9IHVuc2lnbmVkKDEpKTsKKyAgICBpZiAoc2lnbikK
KyAgICAgICAgbV9wYWNrZWRGaWVsZCB8PSB1aW50MzJfdCgxKSA8PCAzMTsKKyAgICBlbHNlCisg
ICAgICAgIG1fcGFja2VkRmllbGQgJj0gfih1aW50MzJfdCgxKSA8PCAzMSk7Cit9CisKK0RlY2lt
YWw6OkRlY2ltYWwoKQorICAgIDogbV9kYXRhKDAsIDAsIDApCit7Cit9CisKK0RlY2ltYWw6OkRl
Y2ltYWwoaW50MzJfdCBpMzIpCisgICAgOiBtX2RhdGEoaTMyIDwgMCA/IC1pMzIgOiBpMzIsIDAs
IGkzMiA8IDApCit7Cit9CisKK0RlY2ltYWw6OkRlY2ltYWwodWludDY0X3QgY29lZmZpY2llbnQs
IGludCBleHBvbmVudCwgaW50IHNpZ24pCisgICAgOiBtX2RhdGEoY29lZmZpY2llbnQsIGV4cG9u
ZW50LCBzaWduKQoreworfQorCitEZWNpbWFsOjpEZWNpbWFsKGNvbnN0IEVuY29kZWREYXRhJiBk
YXRhKQorICAgIDogbV9kYXRhKGRhdGEpCit7Cit9CisKK0RlY2ltYWw6OkRlY2ltYWwoY29uc3Qg
RGVjaW1hbCYgb3RoZXIpCisgICAgOiBtX2RhdGEob3RoZXIubV9kYXRhKQoreworfQorCitEZWNp
bWFsJiBEZWNpbWFsOjpvcGVyYXRvciA9KGNvbnN0IERlY2ltYWwmIG90aGVyKQoreworICAgIG1f
ZGF0YSA9IG90aGVyLm1fZGF0YTsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK0RlY2ltYWwmIERl
Y2ltYWw6Om9wZXJhdG9yICs9KGNvbnN0IERlY2ltYWwmIG90aGVyKQoreworICAgIG1fZGF0YSA9
ICgqdGhpcyArIG90aGVyKS5tX2RhdGE7CisgICAgcmV0dXJuICp0aGlzOworfQorCitEZWNpbWFs
JiBEZWNpbWFsOjpvcGVyYXRvciAtPShjb25zdCBEZWNpbWFsJiBvdGhlcikKK3sKKyAgICBtX2Rh
dGEgPSAoKnRoaXMgLSBvdGhlcikubV9kYXRhOworICAgIHJldHVybiAqdGhpczsKK30KKworRGVj
aW1hbCYgRGVjaW1hbDo6b3BlcmF0b3IgKj0oY29uc3QgRGVjaW1hbCYgb3RoZXIpCit7CisgICAg
bV9kYXRhID0gKCp0aGlzICogb3RoZXIpLm1fZGF0YTsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisK
K0RlY2ltYWwmIERlY2ltYWw6Om9wZXJhdG9yIC89KGNvbnN0IERlY2ltYWwmIG90aGVyKQorewor
ICAgIG1fZGF0YSA9ICgqdGhpcyAvIG90aGVyKS5tX2RhdGE7CisgICAgcmV0dXJuICp0aGlzOwor
fQorCitEZWNpbWFsIERlY2ltYWw6Om9wZXJhdG9yICsoY29uc3QgRGVjaW1hbCYgcmhzKSBjb25z
dAoreworICAgIGNvbnN0IERlY2ltYWwmIGxocyA9ICp0aGlzOworICAgIGNvbnN0IGludCBsaHNT
aWduID0gbGhzLnNpZ24oKTsKKyAgICBjb25zdCBpbnQgcmhzU2lnbiA9IHJocy5zaWduKCk7CisK
KyAgICBTcGVjaWFsVmFsdWVIYW5kbGVyIGhhbmRsZXIobGhzLCByaHMpOworICAgIHN3aXRjaCAo
aGFuZGxlci5oYW5kbGUoKSkgeworICAgIGNhc2UgU3BlY2lhbFZhbHVlSGFuZGxlcjo6Qm90aEZp
bml0ZToKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFNwZWNpYWxWYWx1ZUhhbmRsZXI6OkJv
dGhpbmZpbml0eToKKyAgICAgICAgcmV0dXJuIGxoc1NpZ24gPT0gcmhzU2lnbiA/IGxocyA6IHF1
aWV0TmFOKDApOworCisgICAgY2FzZSBTcGVjaWFsVmFsdWVIYW5kbGVyOjpFaXRoZXJOYU46Cisg
ICAgICAgIHJldHVybiBoYW5kbGVyLnZhbHVlKCk7CisKKyAgICBjYXNlIFNwZWNpYWxWYWx1ZUhh
bmRsZXI6Okxoc0lzaW5maW5pdHk6CisgICAgICAgIHJldHVybiBsaHM7CisKKyAgICBjYXNlIFNw
ZWNpYWxWYWx1ZUhhbmRsZXI6OlJoc0lzaW5maW5pdHk6CisgICAgICAgIHJldHVybiByaHM7Cisg
ICAgfQorCisgICAgQVNTRVJUKGxocy5pc0Zpbml0ZSgpKTsKKyAgICBBU1NFUlQocmhzLmlzRmlu
aXRlKCkpOworCisgICAgY29uc3QgaW50IGxoc0V4cG9uZW50ID0gbGhzLmV4cG9uZW50KCk7Cisg
ICAgY29uc3QgaW50IHJoc0V4cG9uZW50ID0gcmhzLmV4cG9uZW50KCk7CisgICAgaW50IHJlc3Vs
dEV4cG9uZW50ID0gbWluKGxoc0V4cG9uZW50LCByaHNFeHBvbmVudCk7CisgICAgdWludDY0X3Qg
bGhzQ29lZmZpY2llbnQgPSBsaHMubV9kYXRhLmNvZWZmaWNpZW50KCk7CisgICAgdWludDY0X3Qg
cmhzQ29lZmZpY2llbnQgPSByaHMubV9kYXRhLmNvZWZmaWNpZW50KCk7CisKKyAgICAvLyBNYWtl
IGNvZWZmaWNpZW50IGFsaWduZWQuCisgICAgaWYgKGxoc0V4cG9uZW50ID4gcmhzRXhwb25lbnQp
IHsKKyAgICAgICAgY29uc3QgaW50IG51bWJlck9mTEhTRGlnaXRzID0gY291bnREaWdpdHMobGhz
Q29lZmZpY2llbnQpOworICAgICAgICBpZiAobnVtYmVyT2ZMSFNEaWdpdHMpIHsKKyAgICAgICAg
ICAgIGNvbnN0IGludCBsaHNTaGlmdEFtb3VudCA9IGxoc0V4cG9uZW50IC0gcmhzRXhwb25lbnQ7
CisgICAgICAgICAgICBjb25zdCBpbnQgb3ZlcmZsb3cgPSBudW1iZXJPZkxIU0RpZ2l0cyArIGxo
c1NoaWZ0QW1vdW50IC0gUHJlY2lzaW9uOworICAgICAgICAgICAgaWYgKG92ZXJmbG93IDw9IDAp
CisgICAgICAgICAgICAgICAgbGhzQ29lZmZpY2llbnQgPSBzY2FsZVVwKGxoc0NvZWZmaWNpZW50
LCBsaHNTaGlmdEFtb3VudCk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBs
aHNDb2VmZmljaWVudCA9IHNjYWxlVXAobGhzQ29lZmZpY2llbnQsIGxoc1NoaWZ0QW1vdW50IC0g
b3ZlcmZsb3cpOworICAgICAgICAgICAgICAgIHJoc0NvZWZmaWNpZW50ID0gc2NhbGVEb3duKHJo
c0NvZWZmaWNpZW50LCBvdmVyZmxvdyk7CisgICAgICAgICAgICAgICAgcmVzdWx0RXhwb25lbnQg
Kz0gb3ZlcmZsb3c7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgIH0gaWYgKGxoc0V4
cG9uZW50IDwgcmhzRXhwb25lbnQpIHsKKyAgICAgICAgY29uc3QgaW50IG51bWJlck9mUkhTRGln
aXRzID0gY291bnREaWdpdHMocmhzQ29lZmZpY2llbnQpOworICAgICAgICBpZiAobnVtYmVyT2ZS
SFNEaWdpdHMpIHsKKyAgICAgICAgICAgIGNvbnN0IGludCByaHNTaGlmdEFtb3VudCA9IHJoc0V4
cG9uZW50IC0gbGhzRXhwb25lbnQ7CisgICAgICAgICAgICBjb25zdCBpbnQgb3ZlcmZsb3cgPSBu
dW1iZXJPZlJIU0RpZ2l0cyArIHJoc1NoaWZ0QW1vdW50IC0gUHJlY2lzaW9uOworICAgICAgICAg
ICAgaWYgKG92ZXJmbG93IDw9IDApCisgICAgICAgICAgICAgICAgcmhzQ29lZmZpY2llbnQgPSBz
Y2FsZVVwKHJoc0NvZWZmaWNpZW50LCByaHNTaGlmdEFtb3VudCk7CisgICAgICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgICAgICByaHNDb2VmZmljaWVudCA9IHNjYWxlVXAocmhzQ29lZmZpY2ll
bnQsIHJoc1NoaWZ0QW1vdW50IC0gb3ZlcmZsb3cpOworICAgICAgICAgICAgICAgIGxoc0NvZWZm
aWNpZW50ID0gc2NhbGVEb3duKGxoc0NvZWZmaWNpZW50LCBvdmVyZmxvdyk7CisgICAgICAgICAg
ICAgICAgcmVzdWx0RXhwb25lbnQgKz0gb3ZlcmZsb3c7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICB9CisKKyAgICB1aW50NjRfdCBjb25zdCByZXN1bHQgPSBsaHNTaWduID09IHJoc1Np
Z24gPyBsaHNDb2VmZmljaWVudCArIHJoc0NvZWZmaWNpZW50IDogbGhzQ29lZmZpY2llbnQgLSBy
aHNDb2VmZmljaWVudDsKKyAgICByZXR1cm4gbGhzU2lnbiAmJiAhcmhzU2lnbiAmJiAhcmVzdWx0
CisgICAgICAgICAgICA/IERlY2ltYWwoMCwgcmVzdWx0RXhwb25lbnQsIDApCisgICAgICAgICAg
ICA6IGludDY0X3QocmVzdWx0KSA+PSAwCisgICAgICAgICAgICAgICAgPyBEZWNpbWFsKHJlc3Vs
dCwgcmVzdWx0RXhwb25lbnQsIGxoc1NpZ24pCisgICAgICAgICAgICAgICAgOiBEZWNpbWFsKC1p
bnQ2NF90KHJlc3VsdCksIHJlc3VsdEV4cG9uZW50LCBsaHNTaWduIF4gMSk7Cit9CisKK0RlY2lt
YWwgRGVjaW1hbDo6b3BlcmF0b3IgLShjb25zdCBEZWNpbWFsJiByaHMpIGNvbnN0Cit7CisgICAg
Y29uc3QgRGVjaW1hbCYgbGhzID0gKnRoaXM7CisgICAgY29uc3QgaW50IGxoc1NpZ24gPSBsaHMu
c2lnbigpOworICAgIGNvbnN0IGludCByaHNTaWduID0gcmhzLnNpZ24oKTsKKworICAgIFNwZWNp
YWxWYWx1ZUhhbmRsZXIgaGFuZGxlcihsaHMsIHJocyk7CisgICAgc3dpdGNoIChoYW5kbGVyLmhh
bmRsZSgpKSB7CisgICAgY2FzZSBTcGVjaWFsVmFsdWVIYW5kbGVyOjpCb3RoRmluaXRlOgorICAg
ICAgICBicmVhazsKKworICAgIGNhc2UgU3BlY2lhbFZhbHVlSGFuZGxlcjo6Qm90aGluZmluaXR5
OgorICAgICAgICByZXR1cm4gbGhzU2lnbiA9PSByaHNTaWduID8gcXVpZXROYU4oMCkgOiBsaHM7
CisKKyAgICBjYXNlIFNwZWNpYWxWYWx1ZUhhbmRsZXI6OkVpdGhlck5hTjoKKyAgICAgICAgcmV0
dXJuIGhhbmRsZXIudmFsdWUoKTsKKworICAgIGNhc2UgU3BlY2lhbFZhbHVlSGFuZGxlcjo6TGhz
SXNpbmZpbml0eToKKyAgICAgICAgcmV0dXJuIGxoczsKKworICAgIGNhc2UgU3BlY2lhbFZhbHVl
SGFuZGxlcjo6UmhzSXNpbmZpbml0eToKKyAgICAgICAgcmV0dXJuIGluZmluaXR5KHJoc1NpZ24g
XiAxKTsKKyAgICB9CisKKyAgICBBU1NFUlQobGhzLmlzRmluaXRlKCkpOworICAgIEFTU0VSVChy
aHMuaXNGaW5pdGUoKSk7CisKKyAgICB1aW50NjRfdCBsaHNDb2VmZmljaWVudCA9IGxocy5tX2Rh
dGEuY29lZmZpY2llbnQoKTsKKyAgICB1aW50NjRfdCByaHNDb2VmZmljaWVudCA9IHJocy5tX2Rh
dGEuY29lZmZpY2llbnQoKTsKKworICAgIGNvbnN0IGludCBsaHNFeHBvbmVudCA9IGxocy5leHBv
bmVudCgpOworICAgIGNvbnN0IGludCByaHNFeHBvbmVudCA9IHJocy5leHBvbmVudCgpOworICAg
IGludCByZXN1bHRFeHBvbmVudCA9IG1pbihsaHNFeHBvbmVudCwgcmhzRXhwb25lbnQpOworCisg
ICAgLy8gTWFrZSBjb2VmZmljaWVudCBhbGlnbmVkLgorICAgIGlmIChsaHNFeHBvbmVudCA+IHJo
c0V4cG9uZW50KSB7CisgICAgICAgIGNvbnN0IGludCBudW1iZXJPZkxIU0RpZ2l0cyA9IGNvdW50
RGlnaXRzKGxoc0NvZWZmaWNpZW50KTsKKyAgICAgICAgaWYgKG51bWJlck9mTEhTRGlnaXRzKSB7
CisgICAgICAgICAgICBjb25zdCBpbnQgbGhzU2hpZnRBbW91bnQgPSBsaHNFeHBvbmVudCAtIHJo
c0V4cG9uZW50OworICAgICAgICAgICAgY29uc3QgaW50IG92ZXJmbG93ID0gbnVtYmVyT2ZMSFNE
aWdpdHMgKyBsaHNTaGlmdEFtb3VudCAtIFByZWNpc2lvbjsKKyAgICAgICAgICAgIGlmIChvdmVy
ZmxvdyA8PSAwKQorICAgICAgICAgICAgICAgIGxoc0NvZWZmaWNpZW50ID0gc2NhbGVVcChsaHND
b2VmZmljaWVudCwgbGhzU2hpZnRBbW91bnQpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICAgICAgbGhzQ29lZmZpY2llbnQgPSBzY2FsZVVwKGxoc0NvZWZmaWNpZW50LCBsaHNTaGlm
dEFtb3VudCAtIG92ZXJmbG93KTsKKyAgICAgICAgICAgICAgICByaHNDb2VmZmljaWVudCA9IHNj
YWxlRG93bihyaHNDb2VmZmljaWVudCwgb3ZlcmZsb3cpOworICAgICAgICAgICAgICAgIHJlc3Vs
dEV4cG9uZW50ICs9IG92ZXJmbG93OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICB9
IGlmIChsaHNFeHBvbmVudCA8IHJoc0V4cG9uZW50KSB7CisgICAgICAgIGNvbnN0IGludCBudW1i
ZXJPZlJIU0RpZ2l0cyA9IGNvdW50RGlnaXRzKHJoc0NvZWZmaWNpZW50KTsKKyAgICAgICAgaWYg
KG51bWJlck9mUkhTRGlnaXRzKSB7CisgICAgICAgICAgICBjb25zdCBpbnQgcmhzU2hpZnRBbW91
bnQgPSByaHNFeHBvbmVudCAtIGxoc0V4cG9uZW50OworICAgICAgICAgICAgY29uc3QgaW50IG92
ZXJmbG93ID0gbnVtYmVyT2ZSSFNEaWdpdHMgKyByaHNTaGlmdEFtb3VudCAtIFByZWNpc2lvbjsK
KyAgICAgICAgICAgIGlmIChvdmVyZmxvdyA8PSAwKQorICAgICAgICAgICAgICAgIHJoc0NvZWZm
aWNpZW50ID0gc2NhbGVVcChyaHNDb2VmZmljaWVudCwgcmhzU2hpZnRBbW91bnQpOworICAgICAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgcmhzQ29lZmZpY2llbnQgPSBzY2FsZVVwKHJo
c0NvZWZmaWNpZW50LCByaHNTaGlmdEFtb3VudCAtIG92ZXJmbG93KTsKKyAgICAgICAgICAgICAg
ICBsaHNDb2VmZmljaWVudCA9IHNjYWxlRG93bihsaHNDb2VmZmljaWVudCwgb3ZlcmZsb3cpOwor
ICAgICAgICAgICAgICAgIHJlc3VsdEV4cG9uZW50ICs9IG92ZXJmbG93OworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgfQorCisgICAgdWludDY0X3QgcmVzdWx0ID0gbGhzU2lnbiA9PSBy
aHNTaWduID8gbGhzQ29lZmZpY2llbnQgLSByaHNDb2VmZmljaWVudCA6IGxoc0NvZWZmaWNpZW50
ICsgcmhzQ29lZmZpY2llbnQ7CisgICAgcmV0dXJuIGxoc1NpZ24gJiYgcmhzU2lnbiAmJiAhcmVz
dWx0CisgICAgICAgICAgICA/IERlY2ltYWwoMCwgcmVzdWx0RXhwb25lbnQsIDApCisgICAgICAg
ICAgICA6IGludDY0X3QocmVzdWx0KSA+PSAwCisgICAgICAgICAgICAgICAgPyBEZWNpbWFsKHJl
c3VsdCwgcmVzdWx0RXhwb25lbnQsIGxoc1NpZ24pCisgICAgICAgICAgICAgICAgOiBEZWNpbWFs
KC1pbnQ2NF90KHJlc3VsdCksIHJlc3VsdEV4cG9uZW50LCBsaHNTaWduIF4gMSk7Cit9CisKK0Rl
Y2ltYWwgRGVjaW1hbDo6b3BlcmF0b3IgKihjb25zdCBEZWNpbWFsJiByaHMpIGNvbnN0Cit7Cisg
ICAgY29uc3QgRGVjaW1hbCYgbGhzID0gKnRoaXM7CisgICAgY29uc3QgaW50IGxoc1NpZ24gPSBs
aHMuc2lnbigpOworICAgIGNvbnN0IGludCByaHNTaWduID0gcmhzLnNpZ24oKTsKKyAgICBpbnQg
cmVzdWx0U2lnbiA9IGxoc1NpZ24gXiByaHNTaWduOworCisgICAgU3BlY2lhbFZhbHVlSGFuZGxl
ciBoYW5kbGVyKGxocywgcmhzKTsKKyAgICBzd2l0Y2ggKGhhbmRsZXIuaGFuZGxlKCkpIHsKKyAg
ICBjYXNlIFNwZWNpYWxWYWx1ZUhhbmRsZXI6OkJvdGhGaW5pdGU6IHsKKyAgICAgICAgY29uc3Qg
dWludDY0X3QgbGhzQ29lZmZpY2llbnQgPSBsaHMubV9kYXRhLmNvZWZmaWNpZW50KCk7CisgICAg
ICAgIGNvbnN0IHVpbnQ2NF90IHJoc0NvZWZmaWNpZW50ID0gcmhzLm1fZGF0YS5jb2VmZmljaWVu
dCgpOworICAgICAgICBpbnQgcmVzdWx0RXhwb25lbnQgPSBsaHMuZXhwb25lbnQoKSArIHJocy5l
eHBvbmVudCgpOworICAgICAgICBVSW50MTI4IHdvcmsoVUludDEyODo6bXVsdGlwbHkobGhzQ29l
ZmZpY2llbnQsIHJoc0NvZWZmaWNpZW50KSk7CisgICAgICAgIHdoaWxlICh3b3JrLmhpZ2goKSkg
eworICAgICAgICAgIHdvcmsgLz0gMTA7CisgICAgICAgICAgKytyZXN1bHRFeHBvbmVudDsKKyAg
ICAgICAgfQorICAgICAgICByZXR1cm4gRGVjaW1hbCh3b3JrLmxvdygpLCByZXN1bHRFeHBvbmVu
dCwgcmVzdWx0U2lnbik7CisgICAgfQorCisgICAgY2FzZSBTcGVjaWFsVmFsdWVIYW5kbGVyOjpC
b3RoaW5maW5pdHk6CisgICAgICAgIHJldHVybiBpbmZpbml0eShyZXN1bHRTaWduKTsKKworICAg
IGNhc2UgU3BlY2lhbFZhbHVlSGFuZGxlcjo6RWl0aGVyTmFOOgorICAgICAgICByZXR1cm4gaGFu
ZGxlci52YWx1ZSgpOworCisgICAgY2FzZSBTcGVjaWFsVmFsdWVIYW5kbGVyOjpMaHNJc2luZmlu
aXR5OgorICAgICAgICByZXR1cm4gcmhzLmlzWmVybygpID8gcXVpZXROYU4oMCkgOiBpbmZpbml0
eShyZXN1bHRTaWduKTsKKworICAgIGNhc2UgU3BlY2lhbFZhbHVlSGFuZGxlcjo6UmhzSXNpbmZp
bml0eToKKyAgICAgICAgcmV0dXJuIGxocy5pc1plcm8oKSA/IHF1aWV0TmFOKDApIDogaW5maW5p
dHkocmVzdWx0U2lnbik7CisgICAgfQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
cmV0dXJuIHF1aWV0TmFOKDApOworfQorCitEZWNpbWFsIERlY2ltYWw6Om9wZXJhdG9yIC8oY29u
c3QgRGVjaW1hbCYgcmhzKSBjb25zdAoreworICAgIGNvbnN0IERlY2ltYWwmIGxocyA9ICp0aGlz
OworICAgIGNvbnN0IGludCBsaHNTaWduID0gbGhzLnNpZ24oKTsKKyAgICBjb25zdCBpbnQgcmhz
U2lnbiA9IHJocy5zaWduKCk7CisgICAgaW50IHJlc3VsdFNpZ24gPSBsaHNTaWduIF4gcmhzU2ln
bjsKKworICAgIFNwZWNpYWxWYWx1ZUhhbmRsZXIgaGFuZGxlcihsaHMsIHJocyk7CisgICAgc3dp
dGNoIChoYW5kbGVyLmhhbmRsZSgpKSB7CisgICAgY2FzZSBTcGVjaWFsVmFsdWVIYW5kbGVyOjpC
b3RoRmluaXRlOgorICAgICAgICBicmVhazsKKworICAgIGNhc2UgU3BlY2lhbFZhbHVlSGFuZGxl
cjo6Qm90aGluZmluaXR5OgorICAgICAgICByZXR1cm4gcXVpZXROYU4oMCk7CisKKyAgICBjYXNl
IFNwZWNpYWxWYWx1ZUhhbmRsZXI6OkVpdGhlck5hTjoKKyAgICAgICAgcmV0dXJuIGhhbmRsZXIu
dmFsdWUoKTsKKworICAgIGNhc2UgU3BlY2lhbFZhbHVlSGFuZGxlcjo6TGhzSXNpbmZpbml0eToK
KyAgICAgICAgcmV0dXJuIGluZmluaXR5KHJlc3VsdFNpZ24pOworCisgICAgY2FzZSBTcGVjaWFs
VmFsdWVIYW5kbGVyOjpSaHNJc2luZmluaXR5OgorICAgICAgICByZXR1cm4gemVybyhyZXN1bHRT
aWduKTsKKyAgICB9CisKKyAgICBBU1NFUlQobGhzLmlzRmluaXRlKCkpOworICAgIEFTU0VSVChy
aHMuaXNGaW5pdGUoKSk7CisKKyAgICBpZiAocmhzLmlzWmVybygpKQorICAgICAgICByZXR1cm4g
bGhzLmlzWmVybygpID8gcXVpZXROYU4oMCkgOiBpbmZpbml0eShyZXN1bHRTaWduKTsKKworICAg
IGludCByZXN1bHRFeHBvbmVudCA9IGxocy5leHBvbmVudCgpIC0gcmhzLmV4cG9uZW50KCk7CisK
KyAgICBpZiAobGhzLmlzWmVybygpKSB7CisgICAgICAgIC8vIDAvbm9uLXplcm8gPT4gMAorICAg
ICAgICByZXR1cm4gRGVjaW1hbCgwLCByZXN1bHRFeHBvbmVudCwgcmVzdWx0U2lnbik7CisgICAg
fQorCisgICAgdWludDY0X3QgcmVtYWluZGVyID0gbGhzLm1fZGF0YS5jb2VmZmljaWVudCgpOwor
ICAgIGNvbnN0IHVpbnQ2NF90IGRpdmlzb3IgPSByaHMubV9kYXRhLmNvZWZmaWNpZW50KCk7Cisg
ICAgdWludDY0X3QgcmVzdWx0ID0gMDsKKyAgICB3aGlsZSAocmVzdWx0IDwgTWF4Q29lZmZpY2ll
bnQgLyAxMDApIHsKKyAgICAgICAgd2hpbGUgKHJlbWFpbmRlciA8IGRpdmlzb3IpIHsKKyAgICAg
ICAgICAgIHJlbWFpbmRlciAqPSAxMDsKKyAgICAgICAgICAgIHJlc3VsdCAqPSAxMDsKKyAgICAg
ICAgICAgIC0tcmVzdWx0RXhwb25lbnQ7CisgICAgICAgIH0KKyAgICAgICAgcmVzdWx0ICs9IHJl
bWFpbmRlciAvIGRpdmlzb3I7CisgICAgICAgIHJlbWFpbmRlciAlPSBkaXZpc29yOworICAgICAg
ICBpZiAoIXJlbWFpbmRlcikKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGlmIChy
ZW1haW5kZXIgPiBkaXZpc29yIC8gMikKKyAgICAgICAgKytyZXN1bHQ7CisKKyAgICByZXR1cm4g
RGVjaW1hbChyZXN1bHQsIHJlc3VsdEV4cG9uZW50LCByZXN1bHRTaWduKTsKK30KKworYm9vbCBE
ZWNpbWFsOjpvcGVyYXRvcj09KGNvbnN0IERlY2ltYWwmIHJocykgY29uc3QKK3sKKyAgICByZXR1
cm4gZmFzdEVxdWFscyhyaHMpIHx8IGNvbXBhcmVUbyhyaHMpLmlzWmVybygpOworfQorCitib29s
IERlY2ltYWw6Om9wZXJhdG9yIT0oY29uc3QgRGVjaW1hbCYgcmhzKSBjb25zdAoreworICAgIHJl
dHVybiAhb3BlcmF0b3IgPT0ocmhzKTsKK30KKworYm9vbCBEZWNpbWFsOjpvcGVyYXRvciA8KGNv
bnN0IERlY2ltYWwmIHJocykgY29uc3QKK3sKKyAgICByZXR1cm4gIW9wZXJhdG9yID49KHJocyk7
Cit9CisKK2Jvb2wgRGVjaW1hbDo6b3BlcmF0b3IgPD0oY29uc3QgRGVjaW1hbCYgcmhzKSBjb25z
dAoreworICAgIGlmIChmYXN0RXF1YWxzKHJocykpCisgICAgICAgIHJldHVybiB0cnVlOworICAg
IGNvbnN0IERlY2ltYWwgcmVzdWx0ID0gY29tcGFyZVRvKHJocyk7CisgICAgcmV0dXJuIHJlc3Vs
dC5pc1plcm8oKSB8fCByZXN1bHQuc2lnbigpOworfQorCitib29sIERlY2ltYWw6Om9wZXJhdG9y
ID4oY29uc3QgRGVjaW1hbCYgcmhzKSBjb25zdAoreworICAgIHJldHVybiAhb3BlcmF0b3IgPD0o
cmhzKTsKK30KKworYm9vbCBEZWNpbWFsOjpvcGVyYXRvciA+PShjb25zdCBEZWNpbWFsJiByaHMp
IGNvbnN0Cit7CisgICAgaWYgKGZhc3RFcXVhbHMocmhzKSkKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgY29uc3QgRGVjaW1hbCByZXN1bHQgPSBjb21wYXJlVG8ocmhzKTsKKyAgICByZXR1cm4g
cmVzdWx0LmlzWmVybygpIHx8ICFyZXN1bHQuc2lnbigpOworfQorCitpbnQgRGVjaW1hbDo6ZXhw
b25lbnQoKSBjb25zdAoreworICAgIHJldHVybiBpc0Zpbml0ZSgpID8gbV9kYXRhLmV4cG9uZW50
KCkgOiAwOworfQorCitEZWNpbWFsOjpJZWVlQ2xhc3MgRGVjaW1hbDo6aWVlZUNsYXNzKCkgY29u
c3QKK3sKKyAgICBzd2l0Y2ggKG1fZGF0YS5tX3BhY2tlZEZpZWxkKSB7CisgICAgY2FzZSBQb3Np
dGl2ZUluZmluaXR5UGF0dGVybjoKKyAgICBjYXNlIE5lZ2F0aXZlSW5maW5pdHlQYXR0ZXJuOgor
ICAgICAgICByZXR1cm4gQ2xhc3NJbmZpbml0eTsKKyAgICBjYXNlIFBvc2l0aXZlUXVpZXROYU5Q
YXR0ZXJuOgorICAgIGNhc2UgTmVnYXRpdmVRdWlldE5hTlBhdHRlcm46CisgICAgICAgIHJldHVy
biBDbGFzc1F1aWV0TmFOOworICAgIH0KKworICAgIHJldHVybiBtX2RhdGEuaXNaZXJvKCkgPyBD
bGFzc1plcm8gOiBDbGFzc05vcm1hbDsKK30KKworaW50IERlY2ltYWw6OnNpZ24oKSBjb25zdAor
eworICAgIHJldHVybiBtX2RhdGEuc2lnbigpOworfQorCitEZWNpbWFsIERlY2ltYWw6OmNvbXBh
cmVUbyhjb25zdCBEZWNpbWFsJiByaHMpIGNvbnN0Cit7CisgICAgY29uc3QgRGVjaW1hbCByZXN1
bHQoKnRoaXMgLSByaHMpOworICAgIHJldHVybiByZXN1bHQuaXNaZXJvKCkKKyAgICAgICAgICAg
ID8gemVybygwKQorICAgICAgICAgICAgOiByZXN1bHQuaXNGaW5pdGUoKQorICAgICAgICAgICAg
ICAgICAgICA/IHJlc3VsdAorICAgICAgICAgICAgICAgICAgICA6IHJlc3VsdC5zaWduKCkgPyBE
ZWNpbWFsKC0xKSA6IERlY2ltYWwoMSk7Cit9CisKKy8vIENvbXBhcmVzIHR3byBEZWNpbWFsIG51
bWJlciBhcyBiaW5hcnkgZGF0YS4gVGhpcyBtZXRob2QgaXMKKy8vIHVzZWQgZm9yIGVxdWFsaXR5
IG9mIGluZmluaXR5IG9wZXJhbmRzIHdoaWNoIHN1YnN0cmFjdCBvcGVyYXRpb24KKy8vIHJldHVy
bnMgbm9uLXplcm8uCitib29sIERlY2ltYWw6OmZhc3RFcXVhbHMoY29uc3QgRGVjaW1hbCYgcmhz
KSBjb25zdAoreworICAgIHJldHVybiBtX2RhdGEubV9wYWNrZWRGaWVsZCA9PSByaHMubV9kYXRh
Lm1fcGFja2VkRmllbGQKKyAgICAgICAgJiYgbV9kYXRhLm1fY29lZmZpY2llbnQgPT0gcmhzLm1f
ZGF0YS5tX2NvZWZmaWNpZW50OworfQorCitEZWNpbWFsIERlY2ltYWw6OmZyb21TdHJpbmcoY29u
c3QgU3RyaW5nJiBzdHIpCit7CisgICAgaW50IGV4cG9uZW50ID0gMDsKKyAgICBpbnQgZXhwb25l
bnRTaWduID0gMDsKKyAgICBib29sIG1pbnVzID0gZmFsc2U7CisgICAgaW50IG51bWJlck9mRGln
aXRzID0gMDsKKyAgICBpbnQgbnVtYmVyT2ZEaWdpdHNBZnRlckRvdCA9IDA7CisgICAgaW50IG51
bWJlck9mRXh0cmFEaWdpdHMgPSAwOworCisgICAgZW51bSB7CisgICAgICAgIFN0YXRlRGlnaXQs
CisgICAgICAgIFN0YXRlRG90LAorICAgICAgICBTdGF0ZURvdERpZ2l0LAorICAgICAgICBTdGF0
ZUUsCisgICAgICAgIFN0YXRlRURpZ2l0LAorICAgICAgICBTdGF0ZUVTaWduLAorICAgICAgICBT
dGF0ZVNpZ24sCisgICAgICAgIFN0YXRlU3RhcnQsCisgICAgICAgIFN0YXRlWmVybywKKyAgICB9
IHN0YXRlID0gU3RhdGVTdGFydDsKKworICAgICNkZWZpbmUgSGFuZGxlQ2hhcihjaDEsIG5leHQs
IC4uLikgXAorICAgICAgICBpZiAoY2ggPT0gY2gxIHx8IGNoID09IGNoMSAtICdBJyArICdhJykg
eyBcCisgICAgICAgICAgICBfX1ZBX0FSR1NfXzsgXAorICAgICAgICAgICAgc3RhdGUgPSBuZXh0
OyBcCisgICAgICAgICAgICBicmVhazsgXAorICAgICAgICB9CisKKyAgICAjZGVmaW5lIEV4cGVj
dENoYXIoY2gxLCBuZXh0LCAuLi4pIFwKKyAgICAgICAgSGFuZGxlQ2hhcihjaDEsIG5leHQsIF9f
VkFfQVJHU19fKTsgXAorICAgICAgICByZXR1cm4gcXVpZXROYU4oMCk7CisKKyAgICB1aW50NjRf
dCBhY2N1bXVsYXRvciA9IDA7CisgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwg
c3RyLmxlbmd0aCgpOyArK2luZGV4KSB7CisgICAgICAgIGNvbnN0IGludCBjaCA9IHN0cltpbmRl
eF07CisgICAgICAgIHN3aXRjaCAoc3RhdGUpIHsKKyAgICAgICAgY2FzZSBTdGF0ZURpZ2l0Ogor
ICAgICAgICAgICAgaWYgKGNoID49ICcwJyAmJiBjaCA8PSAnOScpIHsKKyAgICAgICAgICAgICAg
ICBpZiAobnVtYmVyT2ZEaWdpdHMgPCBEZWNpbWFsOjpQcmVjaXNpb24pIHsKKyAgICAgICAgICAg
ICAgICAgICAgKytudW1iZXJPZkRpZ2l0czsKKyAgICAgICAgICAgICAgICAgICAgYWNjdW11bGF0
b3IgKj0gMTA7CisgICAgICAgICAgICAgICAgICAgIGFjY3VtdWxhdG9yICs9IGNoIC0gJzAnOwor
ICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICArK251bWJlck9mRXh0
cmFEaWdpdHM7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGlmIChjaCA9PSAnLicpIHsKKyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlRG90
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBF
eHBlY3RDaGFyKCdFJywgU3RhdGVFKTsKKworICAgICAgICBjYXNlIFN0YXRlRG90OgorICAgICAg
ICAgICAgaWYgKGNoID49ICcwJyAmJiBjaCA8PSAnOScpIHsKKyAgICAgICAgICAgICAgICBpZiAo
bnVtYmVyT2ZEaWdpdHMgPCBEZWNpbWFsOjpQcmVjaXNpb24pIHsKKyAgICAgICAgICAgICAgICAg
ICAgKytudW1iZXJPZkRpZ2l0czsKKyAgICAgICAgICAgICAgICAgICAgKytudW1iZXJPZkRpZ2l0
c0FmdGVyRG90OworICAgICAgICAgICAgICAgICAgICBhY2N1bXVsYXRvciAqPSAxMDsKKyAgICAg
ICAgICAgICAgICAgICAgYWNjdW11bGF0b3IgKz0gY2ggLSAnMCc7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGVEb3REaWdpdDsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICBjYXNlIFN0YXRlRG90RGlnaXQ6Cisg
ICAgICAgICAgICBpZiAoY2ggPj0gJzAnICYmIGNoIDw9ICc5JykgeworICAgICAgICAgICAgICAg
IGlmIChudW1iZXJPZkRpZ2l0cyA8IERlY2ltYWw6OlByZWNpc2lvbikgeworICAgICAgICAgICAg
ICAgICAgICArK251bWJlck9mRGlnaXRzOworICAgICAgICAgICAgICAgICAgICArK251bWJlck9m
RGlnaXRzQWZ0ZXJEb3Q7CisgICAgICAgICAgICAgICAgICAgIGFjY3VtdWxhdG9yICo9IDEwOwor
ICAgICAgICAgICAgICAgICAgICBhY2N1bXVsYXRvciArPSBjaCAtICcwJzsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIEV4cGVjdENoYXIoJ0UnLCBTdGF0ZUUpOworCisgICAgICAgIGNhc2UgU3RhdGVFOgorICAg
ICAgICAgICAgaWYgKGNoID09ICcrJykgeworICAgICAgICAgICAgICAgIGV4cG9uZW50U2lnbiA9
IDA7CisgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZUVTaWduOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoY2ggPT0gJy0nKSB7Cisg
ICAgICAgICAgICAgICAgZXhwb25lbnRTaWduID0gMTsKKyAgICAgICAgICAgICAgICBzdGF0ZSA9
IFN0YXRlRVNpZ247CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGlmIChjaCA+PSAnMCcgJiYgY2ggPD0gJzknKSB7CisgICAgICAgICAgICAgICAg
ZXhwb25lbnQgPSBjaCAtICcwJzsKKyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlRURpZ2l0
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBy
ZXR1cm4gcXVpZXROYU4oMCk7CisKKyAgICAgICAgY2FzZSBTdGF0ZUVEaWdpdDoKKyAgICAgICAg
ICAgIGlmIChjaCA+PSAnMCcgJiYgY2ggPD0gJzknKSB7CisgICAgICAgICAgICAgICAgZXhwb25l
bnQgKj0gMTA7CisgICAgICAgICAgICAgICAgZXhwb25lbnQgKz0gY2ggLSAnMCc7CisgICAgICAg
ICAgICAgICAgaWYgKGV4cG9uZW50ID4gRGVjaW1hbDo6RW1heCArIFByZWNpc2lvbikKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGV4cG9uZW50U2lnbiA/IHplcm8oMCkgOiBpbmZpbml0eSht
aW51cyk7CisgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZUVEaWdpdDsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHF1aWV0TmFO
KDApOworCisgICAgICAgIGNhc2UgU3RhdGVFU2lnbjoKKyAgICAgICAgICAgIGlmIChjaCA+PSAn
MCcgJiYgY2ggPD0gJzknKSB7CisgICAgICAgICAgICAgICAgZXhwb25lbnQgPSBjaCAtICcwJzsK
KyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlRURpZ2l0OworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcXVpZXROYU4oMCk7CisK
KyAgICAgICAgY2FzZSBTdGF0ZVNpZ246CisgICAgICAgICAgICBpZiAoY2ggPT0gJzAnKSB7Cisg
ICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZVplcm87CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChjaCA+PSAnMScgJiYgY2ggPD0gJzkn
KSB7CisgICAgICAgICAgICAgICAgYWNjdW11bGF0b3IgPSBjaCAtICcwJzsKKyAgICAgICAgICAg
ICAgICBudW1iZXJPZkRpZ2l0cyA9IDE7CisgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZURp
Z2l0OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICByZXR1cm4gcXVpZXROYU4oMCk7CisKKyAgICAgICAgY2FzZSBTdGF0ZVN0YXJ0OgorICAgICAg
ICAgICAgaWYgKGNoID09ICcwJykgeworICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGVaZXJv
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBp
ZiAoY2ggPj0gJzEnICYmIGNoIDw9ICc5JykgeworICAgICAgICAgICAgICAgIGFjY3VtdWxhdG9y
ID0gY2ggLSAnMCc7CisgICAgICAgICAgICAgICAgbnVtYmVyT2ZEaWdpdHMgPSAxOworICAgICAg
ICAgICAgICAgIHN0YXRlID0gU3RhdGVEaWdpdDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGNoID09ICctJykgeworICAgICAgICAgICAg
ICAgIG1pbnVzID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlU2lnbjsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGNo
ID09ICcrJykgeworICAgICAgICAgICAgICAgIG1pbnVzID0gZmFsc2U7CisgICAgICAgICAgICAg
ICAgc3RhdGUgPSBTdGF0ZVNpZ247CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGlmIChjaCA9PSAnLicpIHsKKyAgICAgICAgICAgICAgICBzdGF0
ZSA9IFN0YXRlRG90OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICByZXR1cm4gcXVpZXROYU4oMCk7CisKKyAgICAgICAgY2FzZSBTdGF0ZVplcm86
CisgICAgICAgICAgICBpZiAoY2ggPT0gJzAnKQorICAgICAgICAgICAgICAgIGJyZWFrOworCisg
ICAgICAgICAgICBpZiAoY2ggPj0gJzEnICYmIGNoIDw9ICc5JykgeworICAgICAgICAgICAgICAg
IGFjY3VtdWxhdG9yID0gY2ggLSAnMCc7CisgICAgICAgICAgICAgICAgbnVtYmVyT2ZEaWdpdHMg
PSAxOworICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGVEaWdpdDsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGNoID09ICcuJykgewor
ICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGVEb3Q7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIEV4cGVjdENoYXIoJ0UnLCBTdGF0ZUUpOwor
CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgICAgIHJldHVybiBxdWlldE5hTigwKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlm
IChzdGF0ZSA9PSBTdGF0ZVplcm8pCisgICAgICAgIHJldHVybiB6ZXJvKG1pbnVzKTsKKworICAg
IGlmIChzdGF0ZSA9PSBTdGF0ZURpZ2l0IHx8IHN0YXRlID09IFN0YXRlRURpZ2l0IHx8IHN0YXRl
ID09IFN0YXRlRG90RGlnaXQpIHsKKyAgICAgICAgaW50IHJlc3VsdEV4cG9uZW50ID0gZXhwb25l
bnQgKiAoMSAtIGV4cG9uZW50U2lnbiAqIDIpIC0gbnVtYmVyT2ZEaWdpdHNBZnRlckRvdCArIG51
bWJlck9mRXh0cmFEaWdpdHM7CisgICAgICAgIGNvbnN0IGludCBiaWFzZWRFeHBvbmVudCA9IHJl
c3VsdEV4cG9uZW50ICsgRWJpYXM7CisgICAgICAgIGlmIChiaWFzZWRFeHBvbmVudCA8IDApCisg
ICAgICAgICAgICByZXR1cm4gemVybygwKTsKKworICAgICAgICBjb25zdCBpbnQgb3ZlcmZsb3cg
PSBiaWFzZWRFeHBvbmVudCAtIEVtYXggKyAxOworICAgICAgICBpZiAob3ZlcmZsb3cgPiAwKSB7
CisgICAgICAgICAgICBpZiAob3ZlcmZsb3cgKyBudW1iZXJPZkRpZ2l0cyAtIG51bWJlck9mRGln
aXRzQWZ0ZXJEb3QgPiBQcmVjaXNpb24pCisgICAgICAgICAgICAgICAgcmV0dXJuIGluZmluaXR5
KG1pbnVzKTsKKyAgICAgICAgICAgIGFjY3VtdWxhdG9yID0gc2NhbGVVcChhY2N1bXVsYXRvciwg
b3ZlcmZsb3cpOworICAgICAgICAgICAgcmVzdWx0RXhwb25lbnQgLT0gb3ZlcmZsb3c7CisgICAg
ICAgIH0KKworICAgICAgICByZXR1cm4gRGVjaW1hbChhY2N1bXVsYXRvciwgcmVzdWx0RXhwb25l
bnQsIG1pbnVzKTsKKyAgICB9CisKKyAgICByZXR1cm4gcXVpZXROYU4oMCk7Cit9CisKK0RlY2lt
YWwgRGVjaW1hbDo6aW5maW5pdHkoY29uc3QgaW50IHNpZ24pCit7CisgICAgcmV0dXJuIERlY2lt
YWwoRW5jb2RlZERhdGEoc2lnbiA/IE5lZ2F0aXZlSW5maW5pdHlQYXR0ZXJuIDogUG9zaXRpdmVJ
bmZpbml0eVBhdHRlcm4pKTsKK30KKworRGVjaW1hbCBEZWNpbWFsOjpxdWlldE5hTihjb25zdCBp
bnQgc2lnbikKK3sKKyAgICByZXR1cm4gRGVjaW1hbChFbmNvZGVkRGF0YShzaWduID8gTmVnYXRp
dmVRdWlldE5hTlBhdHRlcm4gOiBQb3NpdGl2ZVF1aWV0TmFOUGF0dGVybikpOworfQorCitEZWNp
bWFsIERlY2ltYWw6OnJlbWFpbmRlcihjb25zdCBEZWNpbWFsJiByaHMpIGNvbnN0Cit7CisgICAg
Y29uc3QgRGVjaW1hbCBxdW90aWVudCA9ICgqdGhpcyAvIHJocykucm91bmQoKTsKKyAgICByZXR1
cm4gcXVvdGllbnQuaXNTcGVjaWFsKCkgPyBxdW90aWVudCA6ICp0aGlzIC0gcXVvdGllbnQgKiBy
aHM7Cit9CisKK0RlY2ltYWwgRGVjaW1hbDo6cm91bmQoKSBjb25zdAoreworICAgIGlmIChpc1Nw
ZWNpYWwoKSkKKyAgICAgICAgcmV0dXJuICp0aGlzOworCisgICAgaWYgKGV4cG9uZW50KCkgPj0g
MCkKKyAgICAgICAgcmV0dXJuICp0aGlzOworCisgICAgdWludDY0X3QgcmVzdWx0ID0gbV9kYXRh
LmNvZWZmaWNpZW50KCk7CisgICAgY29uc3QgaW50IG51bWJlck9mRGlnaXRzID0gY291bnREaWdp
dHMocmVzdWx0KTsKKyAgICBjb25zdCBpbnQgbnVtYmVyT2ZEcm9wRGlnaXRzID0gLWV4cG9uZW50
KCk7CisgICAgaWYgKG51bWJlck9mRGlnaXRzIDwgbnVtYmVyT2ZEcm9wRGlnaXRzKQorICAgICAg
ICByZXR1cm4gemVybygwKTsKKworICAgIHJlc3VsdCA9IHNjYWxlRG93bihyZXN1bHQsIG51bWJl
ck9mRHJvcERpZ2l0cyAtIDEpOworICAgIGlmIChyZXN1bHQgJSAxMCA+PSA1KQorICAgICAgICBy
ZXN1bHQgKz0gMTA7CisgICAgcmVzdWx0IC89IDEwOworICAgIHJldHVybiBEZWNpbWFsKHJlc3Vs
dCwgMCwgc2lnbigpKTsKK30KKworU3RyaW5nIERlY2ltYWw6OnRvU3RyaW5nKCkgY29uc3QKK3sK
KyAgICBzd2l0Y2ggKGllZWVDbGFzcygpKSB7CisgICAgY2FzZSBDbGFzc0luZmluaXR5OgorICAg
ICAgICByZXR1cm4gc2lnbigpID8gIi1JbmZpbml0eSIgOiAiSW5maW5pdHkiOworCisgICAgY2Fz
ZSBDbGFzc1F1aWV0TmFOOgorICAgICAgICByZXR1cm4gc2lnbigpID8gIi1OYU4iIDogIk5hTiI7
CisKKyAgICBjYXNlIENsYXNzTm9ybWFsOgorICAgIGNhc2UgQ2xhc3NaZXJvOgorICAgICAgICBi
cmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICByZXR1cm4gIiI7CisgICAgfQorCisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAg
IGlmIChzaWduKCkpCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCctJyk7CisKKyAgICBpbnQgb3Jp
Z2luYWxFeHBvbmVudCA9IGV4cG9uZW50KCk7CisKKyAgICBjb25zdCBpbnQgbWF4RGlnaXRzID0g
REJMX0RJRzsKKyAgICB1aW50NjRfdCBjb2VmZmljaWVudCA9IG1fZGF0YS5jb2VmZmljaWVudCgp
OworICAgIGludCBsYXN0RGlnaXQgPSAwOworICAgIHdoaWxlIChjb3VudERpZ2l0cyhjb2VmZmlj
aWVudCkgPiBtYXhEaWdpdHMpIHsKKyAgICAgICAgbGFzdERpZ2l0ID0gY29lZmZpY2llbnQgJSAx
MDsKKyAgICAgICAgY29lZmZpY2llbnQgLz0gMTA7CisgICAgICAgICsrb3JpZ2luYWxFeHBvbmVu
dDsKKyAgICB9CisKKyAgICBpZiAobGFzdERpZ2l0ID49IDUpCisgICAgICAgICsrY29lZmZpY2ll
bnQ7CisKKyAgICB3aGlsZSAob3JpZ2luYWxFeHBvbmVudCA8IDAgJiYgY29lZmZpY2llbnQgJiYg
IShjb2VmZmljaWVudCAlIDEwKSkgeworICAgICAgICBjb2VmZmljaWVudCAvPSAxMDsKKyAgICAg
ICAgKytvcmlnaW5hbEV4cG9uZW50OworICAgIH0KKworICAgIGNvbnN0IFN0cmluZyBkaWdpdHMg
PSBTdHJpbmc6Om51bWJlcihjb2VmZmljaWVudCk7CisgICAgaW50IGNvZWZmaWNpZW50TGVuZ3Ro
ID0gaW50KGRpZ2l0cy5sZW5ndGgoKSk7CisgICAgY29uc3QgaW50IGFkanVzdGVkRXhwb25lbnQg
PSBvcmlnaW5hbEV4cG9uZW50ICsgY29lZmZpY2llbnRMZW5ndGggLSAxOworICAgIGlmIChvcmln
aW5hbEV4cG9uZW50IDw9IDAgJiYgYWRqdXN0ZWRFeHBvbmVudCA+PSAtNikgeworICAgICAgICBp
ZiAoIW9yaWdpbmFsRXhwb25lbnQpIHsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGRpZ2l0
cyk7CisgICAgICAgICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworICAgICAgICB9CisK
KyAgICAgICAgaWYgKGFkanVzdGVkRXhwb25lbnQgPj0gMCkgeworICAgICAgICAgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBjb2VmZmljaWVudExlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAg
YnVpbGRlci5hcHBlbmQoZGlnaXRzW2ldKTsKKyAgICAgICAgICAgICAgICBpZiAoaSA9PSBhZGp1
c3RlZEV4cG9uZW50KQorICAgICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnLicpOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIwLiIpOworICAgICAgICBmb3IgKGlu
dCBpID0gYWRqdXN0ZWRFeHBvbmVudCArIDE7IGkgPCAwOyArK2kpCisgICAgICAgICAgICBidWls
ZGVyLmFwcGVuZCgnMCcpOworCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGRpZ2l0cyk7CisKKyAg
ICB9IGVsc2UgeworICAgICAgICBidWlsZGVyLmFwcGVuZChkaWdpdHNbMF0pOworICAgICAgICB3
aGlsZSAoY29lZmZpY2llbnRMZW5ndGggPj0gMiAmJiBkaWdpdHNbY29lZmZpY2llbnRMZW5ndGgg
LSAxXSA9PSAnMCcpCisgICAgICAgICAgICAtLWNvZWZmaWNpZW50TGVuZ3RoOworICAgICAgICBp
ZiAoY29lZmZpY2llbnRMZW5ndGggPj0gMikgeworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQo
Jy4nKTsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDwgY29lZmZpY2llbnRMZW5ndGg7
ICsraSkKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChkaWdpdHNbaV0pOworICAgICAg
ICB9CisKKyAgICAgICAgaWYgKGFkanVzdGVkRXhwb25lbnQpIHsKKyAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKGFkanVzdGVkRXhwb25lbnQgPCAwID8gImUiIDogImUrIik7CisgICAgICAgICAg
ICBidWlsZGVyLmFwcGVuZChTdHJpbmc6Om51bWJlcihhZGp1c3RlZEV4cG9uZW50KSk7CisgICAg
ICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKK30KKworRGVjaW1h
bCBEZWNpbWFsOjp6ZXJvKGludCBzaWduKQoreworICAgIHJldHVybiBEZWNpbWFsKEVuY29kZWRE
YXRhKHNpZ24gPyBOZWdhdGl2ZVplcm9QYXR0ZXJuIDogUG9zaXRpdmVaZXJvUGF0dGVybikpOwor
fQorCit9IC8vIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Rl
Y2ltYWwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RlY2ltYWwuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4z
OGIxMTdkNWQ2NzM3YzQ2ZWNkMWYwMmI1Njg3NWU2N2ZjYmM2ZWM2Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGVjaW1hbC5oCkBAIC0wLDAgKzEsMTM0IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAq
IGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKyNpZm5k
ZWYgRGVjaW1hbF9oCisjZGVmaW5lIERlY2ltYWxfaAorCisjaW5jbHVkZSA8c3RkaW50Lmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Ly8gVGhpcyBjbGFzcyByZXByZXNlbnRzIGRlY2ltYWwgYmFzZSBmbG9hdGluZyBwb2ludGVyIG51
bWJlciB3aXRoIDMyIGJpdAorLy8gIHVuc2lnZW5kIGludGVnZXIgYW5kIDY0IGJpdCB1bnNpZ25l
ZCBpbnRlZ2VyLgorLy8gIG8gMSBiaXQgc2lnbiAoMCA9IHBvc2l0aXZlIG51bWJlciwgMSA9IG5l
Z2F0aXZlIG51bWJlcikKKy8vICBvIDExIGJpdCBiaWFzZWQgZXhwb25lbnQsIDEwIGJhc2VkLgor
Ly8gIG8gNjQgYml0IGNvZWZmaWNpZW50LgorLy8KKy8vIEV4cG9uZW50IGFuZCBzaWduIGJpdCBh
cmUgZW5jb2RlZCBhczoKKy8vIDc2NTQzMjEwIDc2NTQzMjEwCisvLyBTMDAwMDAwMCAwMDAwTUVF
RQorLy8gIFMgPSBzaWduICgxIGJpdCksIDAgPSBwb3NpdGl2ZSwgMSA9IG5lZ2F0aXZlCisvLyAg
RSA9IGV4cG9uZW50ICgxMSBiaXQpCisvLworLy8gRklYTUU6IE9uY2UgYWxsIEMrKyBjb21waWxl
ciBzdXBwb3J0IGRlY2ltYWwgdHlwZSwgd2Ugc2hvdWxkIHJlcGxhY2UgdGhpcworLy8gY2xhc3Mg
dG8gY29tcGlsZXIgc3VwcG9ydGVkIG9uZS4gU2VlIGJlbG93IFVSSSBmb3IgY3VycmVudCBzdGF0
dXMgb2YgZGVjaW1hbAorLy8gdHlwZSBmb3IgQysrOiAvLyBodHRwOi8vd3d3Lm9wZW4tc3RkLm9y
Zy9qdGMxL3NjMjIvd2cyMS9kb2NzL3BhcGVycy8yMDA2L24xOTc3Lmh0bWwKK2NsYXNzIERlY2lt
YWwgeworcHVibGljOgorICAgIHN0YXRpYyBpbnQgY29uc3QgRW1heCA9IDIwNDc7IC8vIGxhcmdl
c3QgZXhwb25lbnQgdmFsdWUKKyAgICBzdGF0aWMgaW50IGNvbnN0IEViaWFzID0gMTAyMzsgLy8g
c3VidHJhY3RlZCBmcm9tIGVuY29kZWQgZXhwb25lbnQKKyAgICBzdGF0aWMgaW50IGNvbnN0IFBy
ZWNpc2lvbiA9IDE4OworCisgICAgZW51bSBJZWVlQ2xhc3MgeworICAgICAgICBDbGFzc0luZmlu
aXR5LAorICAgICAgICBDbGFzc05vcm1hbCwKKyAgICAgICAgQ2xhc3NRdWlldE5hTiwKKyAgICAg
ICAgQ2xhc3NaZXJvLAorICAgIH07CisKKyAgICBzdHJ1Y3QgRW5jb2RlZERhdGEgeworICAgICAg
ICBleHBsaWNpdCBFbmNvZGVkRGF0YSh1aW50MzJfdCk7CisgICAgICAgIEVuY29kZWREYXRhKHVp
bnQ2NF90LCBpbnQsIGludCk7CisKKyAgICAgICAgdWludDY0X3QgY29lZmZpY2llbnQoKSBjb25z
dDsKKyAgICAgICAgaW50IGNvdW50RGlnaXRzKCkgY29uc3Q7CisgICAgICAgIGludCBleHBvbmVu
dCgpIGNvbnN0OworICAgICAgICBib29sIGlzRmluaXRlKCkgY29uc3Q7CisgICAgICAgIGJvb2wg
aXNTcGVjaWFsKCkgY29uc3Q7CisgICAgICAgIGJvb2wgaXNaZXJvKCkgY29uc3Q7CisgICAgICAg
IGludCByYXdFeHBvbmVudCgpIGNvbnN0OworICAgICAgICBpbnQgc2lnbigpIGNvbnN0OworICAg
ICAgICB2b2lkIHNldFNpZ24oaW50KTsKKworICAgICAgICB1aW50NjRfdCBtX2NvZWZmaWNpZW50
OworICAgICAgICB1aW50MzJfdCBtX3BhY2tlZEZpZWxkOworICAgIH07CisKKyAgICBEZWNpbWFs
KCk7CisgICAgRGVjaW1hbChpbnQzMl90KTsKKyAgICBEZWNpbWFsKHVpbnQ2NF90LCBpbnQsIGlu
dCk7CisgICAgRGVjaW1hbChjb25zdCBEZWNpbWFsJik7CisgICAgZXhwbGljaXQgRGVjaW1hbChj
b25zdCBFbmNvZGVkRGF0YSYpOworCisgICAgRGVjaW1hbCYgb3BlcmF0b3IgPShjb25zdCBEZWNp
bWFsJik7CisgICAgRGVjaW1hbCYgb3BlcmF0b3IgKz0oY29uc3QgRGVjaW1hbCYpOworICAgIERl
Y2ltYWwmIG9wZXJhdG9yIC09KGNvbnN0IERlY2ltYWwmKTsKKyAgICBEZWNpbWFsJiBvcGVyYXRv
ciAqPShjb25zdCBEZWNpbWFsJik7CisgICAgRGVjaW1hbCYgb3BlcmF0b3IgLz0oY29uc3QgRGVj
aW1hbCYpOworCisgICAgYm9vbCBvcGVyYXRvciA9PShjb25zdCBEZWNpbWFsJikgY29uc3Q7Cisg
ICAgYm9vbCBvcGVyYXRvciAhPShjb25zdCBEZWNpbWFsJikgY29uc3Q7CisgICAgYm9vbCBvcGVy
YXRvciA8KGNvbnN0IERlY2ltYWwmKSBjb25zdDsKKyAgICBib29sIG9wZXJhdG9yIDw9KGNvbnN0
IERlY2ltYWwmKSBjb25zdDsKKyAgICBib29sIG9wZXJhdG9yID4oY29uc3QgRGVjaW1hbCYpIGNv
bnN0OworICAgIGJvb2wgb3BlcmF0b3IgPj0oY29uc3QgRGVjaW1hbCYpIGNvbnN0OworCisgICAg
RGVjaW1hbCBvcGVyYXRvciArKGNvbnN0IERlY2ltYWwmKSBjb25zdDsKKyAgICBEZWNpbWFsIG9w
ZXJhdG9yIC0oY29uc3QgRGVjaW1hbCYpIGNvbnN0OworICAgIERlY2ltYWwgb3BlcmF0b3IgKihj
b25zdCBEZWNpbWFsJikgY29uc3Q7CisgICAgRGVjaW1hbCBvcGVyYXRvciAvKGNvbnN0IERlY2lt
YWwmKSBjb25zdDsKKworICAgIEllZWVDbGFzcyBpZWVlQ2xhc3MoKSBjb25zdDsKKyAgICBib29s
IGlzRmluaXRlKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmlzRmluaXRlKCk7IH0KKyAgICBib29s
IGlzU3BlY2lhbCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5pc1NwZWNpYWwoKTsgfQorICAgIGJv
b2wgaXNaZXJvKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmlzWmVybygpOyB9CisgICAgY29uc3Qg
RW5jb2RlZERhdGEmIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CisKKyAgICBEZWNp
bWFsIHJlbWFpbmRlcihjb25zdCBEZWNpbWFsJikgY29uc3Q7CisgICAgRGVjaW1hbCByb3VuZCgp
IGNvbnN0OworICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0OworCisgICAgc3RhdGljIERlY2lt
YWwgZnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKTsKKyAgICBzdGF0aWMgRGVjaW1hbCBpbmZpbml0
eShpbnQpOworICAgIHN0YXRpYyBEZWNpbWFsIHF1aWV0TmFOKGludCk7CisgICAgc3RhdGljIERl
Y2ltYWwgemVybyhpbnQpOworCitwcml2YXRlOgorICAgIERlY2ltYWwgY29tcGFyZVRvKGNvbnN0
IERlY2ltYWwmKSBjb25zdDsKKyAgICBpbnQgZXhwb25lbnQoKSBjb25zdDsKKyAgICBib29sIGZh
c3RFcXVhbHMoY29uc3QgRGVjaW1hbCYpIGNvbnN0OworICAgIGludCBzaWduKCkgY29uc3Q7CisK
KyAgICBFbmNvZGVkRGF0YSBtX2RhdGE7Cit9OworCit9IC8vIFdlYkNvcmUKKworI2VuZGlmIC8v
IERlY2ltYWxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lw
aSBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKaW5kZXggMGU4MjI4YTZlODkw
ZDVmMzc0MDQ3ZmMzYTgxNzFiODlkMTM4OWFhOS4uMjUwYjczMzY4NmU1MGZjMWJhMjUxODQ2Y2Qw
YTY4NmFkOTJhZmQ5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQu
Z3lwaQorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCkBAIC05NSw2ICs5
NSw3IEBACiAgICAgICAgICAgICAndGVzdHMvQ2xpcGJvYXJkQ2hyb21pdW1UZXN0LmNwcCcsCiAg
ICAgICAgICAgICAndGVzdHMvQ29tcG9zaXRvckZha2VHcmFwaGljc0NvbnRleHQzRC5oJywKICAg
ICAgICAgICAgICd0ZXN0cy9Db21wb3NpdG9yRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNELmgnLAor
ICAgICAgICAgICAgJ3Rlc3RzL0RlY2ltYWxUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMv
RHJhZ0ltYWdlVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0RyYXdpbmdCdWZmZXJDaHJv
bWl1bVRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9GYWtlQ0NMYXllclRyZWVIb3N0Q2xp
ZW50LmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9EZWNpbWFs
VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0RlY2ltYWxUZXN0LmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40NGJiYjYzMzI2MGFjNWNjMjk2NzkwYTgxOTJjMmU1ZjQxYmExNDVmCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9EZWNpbWFsVGVzdC5j
cHAKQEAgLTAsMCArMSw1MDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRGVjaW1h
bC5oIgorCisjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworOjpzdGQ6Om9zdHJlYW0mIG9wZXJhdG9y
PDwoOjpzdGQ6Om9zdHJlYW0mIG9zLCBjb25zdCBEZWNpbWFsJiBkZWNpbWFsKQoreworICAgIERl
Y2ltYWw6OkVuY29kZWREYXRhIGRhdGEgPSBkZWNpbWFsLnZhbHVlKCk7CisgICAgcmV0dXJuIG9z
IAorICAgICAgICA8PCAiRGVjaW1hbCgiIDw8IFN0cmluZzo6bnVtYmVyKGRhdGEuY29lZmZpY2ll
bnQoKSkuYXNjaWkoKS5kYXRhKCkKKyAgICAgICAgPDwgIiwgIiA8PCBTdHJpbmc6Om51bWJlcihk
YXRhLmV4cG9uZW50KCkpLmFzY2lpKCkuZGF0YSgpCisgICAgICAgIDw8ICIsICIgPDwgU3RyaW5n
OjpudW1iZXIoZGF0YS5zaWduKCkpLmFzY2lpKCkuZGF0YSgpCisgICAgICAgIDw8ICIpPSIgPDwg
ZGVjaW1hbC50b1N0cmluZygpLmFzY2lpKCkuZGF0YSgpOworfQorCit9IC8vIFdlYkNvcmUKKwor
bmFtZXNwYWNlIERlY2ltYWxUZXN0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKKy8v
IFNpbXVsYXRlIFdlYkNvcmUvaHRtbC9TdGVwUmFuZ2UKK2NsYXNzIERlY2ltYWxTdGVwUmFuZ2Ug
eworcHVibGljOgorICAgIERlY2ltYWwgbWF4aW11bTsKKyAgICBEZWNpbWFsIG1pbmltdW07Cisg
ICAgRGVjaW1hbCBzdGVwOworCisgICAgRGVjaW1hbFN0ZXBSYW5nZShjb25zdCBEZWNpbWFsJiBt
aW5pbXVtLCBjb25zdCBEZWNpbWFsJiBtYXhpbXVtLCBjb25zdCBEZWNpbWFsJiBzdGVwKQorICAg
ICAgICA6IG1heGltdW0obWF4aW11bSkKKyAgICAgICAgLCBtaW5pbXVtKG1pbmltdW0pCisgICAg
ICAgICwgc3RlcChzdGVwKQorICAgIHsKKyAgICB9CisKKyAgICBEZWNpbWFsIGNsYW1wVmFsdWUo
RGVjaW1hbCB2YWx1ZSkgY29uc3QKKyAgICB7CisgICAgICAgIGNvbnN0IERlY2ltYWwgcmVzdWx0
ID0gbWluaW11bSArICgodmFsdWUgLSBtaW5pbXVtKSAvIHN0ZXApLnJvdW5kKCkgKiBzdGVwOwor
ICAgICAgICBBU1NFUlQocmVzdWx0LmlzRmluaXRlKCkpOworICAgICAgICByZXR1cm4gcmVzdWx0
ID4gbWF4aW11bSA/IHJlc3VsdCAtIHN0ZXAgOiByZXN1bHQ7CisgICAgfQorfTsKKworY2xhc3Mg
RGVjaW1hbFRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKK3Byb3RlY3RlZDoKKyAgICBE
ZWNpbWFsIGVuY29kZSh1aW50NjRfdCBjb2VmZmljaWVudCwgaW50IGV4cG9uZW50LCBpbnQgc2ln
bikKKyAgICB7CisgICAgICAgIHJldHVybiBEZWNpbWFsKGNvZWZmaWNpZW50LCBleHBvbmVudCwg
c2lnbik7CisgICAgfQorCisgICAgcHJvdGVjdGVkOiBEZWNpbWFsIGZyb21TdHJpbmcoY29uc3Qg
U3RyaW5nJiBzdHJpbmcpCisgICAgeworICAgICAgICByZXR1cm4gRGVjaW1hbDo6ZnJvbVN0cmlu
ZyhzdHJpbmcpOworICAgIH0KKworICAgIHByb3RlY3RlZDogU3RyaW5nIHN0ZXBEb3duKGNvbnN0
IFN0cmluZyYgbWluaW11bSwgY29uc3QgU3RyaW5nJiBtYXhpbXVtLCBjb25zdCBTdHJpbmcmIHN0
ZXAsIGNvbnN0IFN0cmluZyYgdmFsdWVTdHJpbmcsIGludCBudW1iZXJPZlN0ZXBUaW1lcykKKyAg
ICB7CisgICAgICAgIERlY2ltYWxTdGVwUmFuZ2Ugc3RlcFJhbmdlKGZyb21TdHJpbmcobWluaW11
bSksIGZyb21TdHJpbmcobWF4aW11bSksIGZyb21TdHJpbmcoc3RlcCkpOworICAgICAgICBEZWNp
bWFsIHZhbHVlID0gZnJvbVN0cmluZyh2YWx1ZVN0cmluZyk7CisgICAgICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgbnVtYmVyT2ZTdGVwVGltZXM7ICsraSkgeworICAgICAgICAgIHZhbHVlIC09IHN0
ZXBSYW5nZS5zdGVwOworICAgICAgICAgIHZhbHVlID0gc3RlcFJhbmdlLmNsYW1wVmFsdWUodmFs
dWUpOworICAgICAgICB9CisgICAgICAgIHJldHVybiB2YWx1ZS50b1N0cmluZygpOworICAgIH0K
KworICAgIHByb3RlY3RlZDogU3RyaW5nIHN0ZXBVcChjb25zdCBTdHJpbmcmIG1pbmltdW0sIGNv
bnN0IFN0cmluZyYgbWF4aW11bSwgY29uc3QgU3RyaW5nJiBzdGVwLCBjb25zdCBTdHJpbmcmIHZh
bHVlU3RyaW5nLCBpbnQgbnVtYmVyT2ZTdGVwVGltZXMpCisgICAgeworICAgICAgICBEZWNpbWFs
U3RlcFJhbmdlIHN0ZXBSYW5nZShmcm9tU3RyaW5nKG1pbmltdW0pLCBmcm9tU3RyaW5nKG1heGlt
dW0pLCBmcm9tU3RyaW5nKHN0ZXApKTsKKyAgICAgICAgRGVjaW1hbCB2YWx1ZSA9IGZyb21TdHJp
bmcodmFsdWVTdHJpbmcpOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bWJlck9mU3Rl
cFRpbWVzOyArK2kpIHsKKyAgICAgICAgICB2YWx1ZSArPSBzdGVwUmFuZ2Uuc3RlcDsKKyAgICAg
ICAgICB2YWx1ZSA9IHN0ZXBSYW5nZS5jbGFtcFZhbHVlKHZhbHVlKTsKKyAgICAgICAgfQorICAg
ICAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoKTsKKyAgICB9Cit9OworCisvLyBMYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL251bWJlci9udW1iZXItc3RlcHVwLXN0ZXBkb3duLWZyb20tcmVuZGVyZXIK
K1RFU1RfRihEZWNpbWFsVGVzdCwgQXBwTnVtYmVyU3RlcFVwU3RlcERvd25Gcm9tUmVuZGVyZXIp
Cit7CisgICAgRVhQRUNUX0VRKFN0cmluZygiMTAiKSwgc3RlcERvd24oIjAiLCAiMTAwIiwgIjEw
IiwgIjE5IiwgMSkpOworICAgIEVYUEVDVF9FUShTdHJpbmcoIjkwIiksIHN0ZXBVcCgiMCIsICI5
OSIsICIxMCIsICI4OSIsIDEpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCIxIiksIHN0ZXBVcCgi
MCIsICIxIiwgIjAuMzMzMzMzMzMzMzMzMzMzMzMiLCAiMCIsIDMpKTsgLy8gc3RlcD0xLzMKKyAg
ICBFWFBFQ1RfRVEoU3RyaW5nKCIxIiksIHN0ZXBVcCgiMCIsICIxIiwgIjAuMDAzOTIxNTY4NjI3
NDUwOTgwIiwgIjAiLCAyNTUpKTsgLy8gc3RlcD0xLzI1NQorICAgIEVYUEVDVF9FUShTdHJpbmco
IjEiKSwgc3RlcFVwKCIwIiwgIjEiLCAiMC4xIiwgIjAiLCAxMCkpOworfQorCitURVNUX0YoRGVj
aW1hbFRlc3QsIEFwcE51bWJlclN0ZXBVcFN0ZXBEb3duRnJvbVJlbmRlcmVyUm91bmRpbmcpCit7
CisgICAgRVhQRUNUX0VRKFN0cmluZygiNS4wMTUiKSwgc3RlcFVwKCIwIiwgIjEwMCIsICIwLjAw
NSIsICI1LjAwNSIsIDIpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCI1LjA2IiksIHN0ZXBVcCgi
MCIsICIxMDAiLCAiMC4wMDUiLCAiNS4wMDUiLCAxMSkpOworICAgIEVYUEVDVF9FUShTdHJpbmco
IjUuMDY1IiksIHN0ZXBVcCgiMCIsICIxMDAiLCAiMC4wMDUiLCAiNS4wMDUiLCAxMikpOworCisg
ICAgRVhQRUNUX0VRKFN0cmluZygiNS4wMTUiKSwgc3RlcFVwKCI0IiwgIjkiLCAiMC4wMDUiLCAi
NS4wMDUiLCAyKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiNS4wNiIpLCBzdGVwVXAoIjQiLCAi
OSIsICIwLjAwNSIsICI1LjAwNSIsIDExKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiNS4wNjUi
KSwgc3RlcFVwKCI0IiwgIjkiLCAiMC4wMDUiLCAiNS4wMDUiLCAxMikpOworfQorCitURVNUX0Yo
RGVjaW1hbFRlc3QsIEFwcFJhbmdlU3RlcFVwU3RlcERvd24pCit7CisgICAgRVhQRUNUX0VRKFN0
cmluZygiMWUrMzgiKSwgc3RlcFVwKCIwIiwgIjFFMzgiLCAiMSIsICIxRTM4IiwgOSkpOworICAg
IEVYUEVDVF9FUShTdHJpbmcoIjFlKzM4IiksIHN0ZXBEb3duKCIwIiwgIjFFMzgiLCAiMSIsICIx
RTM4IiwgOSkpOworfQorCitURVNUX0YoRGVjaW1hbFRlc3QsIEVuY29kZWREYXRhKQoreworICAg
IEVYUEVDVF9FUShlbmNvZGUoMCwgMCwgMCksIGVuY29kZSgwLCAwLCAwKSk7CisgICAgRVhQRUNU
X0VRKGVuY29kZSgwLCAwLCAxKSwgZW5jb2RlKDAsIDAsIDEpKTsKKyAgICBFWFBFQ1RfRVEoRGVj
aW1hbCgxKSwgRGVjaW1hbCgxKSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSgxLCAwLCAxKSwgZW5j
b2RlKDEsIDAsIDEpKTsKKyAgICBFWFBFQ1RfRVEoRGVjaW1hbDo6aW5maW5pdHkoMCksIGVuY29k
ZSgxLCAyMDAwLCAwKSk7CisgICAgRVhQRUNUX0VRKERlY2ltYWw6Onplcm8oMCksIGVuY29kZSgx
LCAtMjAwMCwgMCkpOworfQorCitURVNUX0YoRGVjaW1hbFRlc3QsIEZyb21JbnQzMikKK3sKKyAg
ICBFWFBFQ1RfRVEoZW5jb2RlKDAsIDAsIDApLCBEZWNpbWFsKDApKTsKKyAgICBFWFBFQ1RfRVEo
RGVjaW1hbCgxKSwgRGVjaW1hbCgxKSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSgxLCAwLCAxKSwg
RGVjaW1hbCgtMSkpOworICAgIEVYUEVDVF9FUShlbmNvZGUoMTAwLCAwLCAwKSwgRGVjaW1hbCgx
MDApKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDEwMCwgMCwgMSksIERlY2ltYWwoLTEwMCkpOwor
fQorCitURVNUX0YoRGVjaW1hbFRlc3QsIEZyb21TdHJpbmcpCit7CisgICAgRVhQRUNUX0VRKGVu
Y29kZSgwLCAwLCAwKSwgZnJvbVN0cmluZygiMCIpKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDAs
IDAsIDEpLCBmcm9tU3RyaW5nKCItMCIpKTsKKyAgICBFWFBFQ1RfRVEoRGVjaW1hbCgxKSwgZnJv
bVN0cmluZygiMSIpKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDEsIDAsIDEpLCBmcm9tU3RyaW5n
KCItMSIpKTsKKyAgICBFWFBFQ1RfRVEoRGVjaW1hbCgxKSwgZnJvbVN0cmluZygiMDEiKSk7Cisg
ICAgRVhQRUNUX0VRKGVuY29kZSgwLCAzLCAwKSwgZnJvbVN0cmluZygiMEUzIikpOworICAgIEVY
UEVDVF9FUShlbmNvZGUoMTAwLCAwLCAwKSwgZnJvbVN0cmluZygiMTAwIikpOworICAgIEVYUEVD
VF9FUShlbmNvZGUoMTAwLCAwLCAxKSwgZnJvbVN0cmluZygiLTEwMCIpKTsKKyAgICBFWFBFQ1Rf
RVEoZW5jb2RlKDEyMywgMCAtIDIsIDApLCBmcm9tU3RyaW5nKCIxLjIzIikpOworICAgIEVYUEVD
VF9FUShlbmNvZGUoMTIzLCAwIC0gMiwgMSksIGZyb21TdHJpbmcoIi0xLjIzIikpOworICAgIEVY
UEVDVF9FUShlbmNvZGUoMTIzLCA4LCAwKSwgZnJvbVN0cmluZygiMS4yM0UxMCIpKTsKKyAgICBF
WFBFQ1RfRVEoZW5jb2RlKDEyMywgOCwgMSksIGZyb21TdHJpbmcoIi0xLjIzRTEwIikpOworICAg
IEVYUEVDVF9FUShlbmNvZGUoMTIzLCA4LCAwKSwgZnJvbVN0cmluZygiMS4yM0UrMTAiKSk7Cisg
ICAgRVhQRUNUX0VRKGVuY29kZSgxMjMsIDgsIDEpLCBmcm9tU3RyaW5nKCItMS4yM0UrMTAiKSk7
CisgICAgRVhQRUNUX0VRKGVuY29kZSgxMjMsIC0xMiwgMCksIGZyb21TdHJpbmcoIjEuMjNFLTEw
IikpOworICAgIEVYUEVDVF9FUShlbmNvZGUoMTIzLCAtMTIsIDEpLCBmcm9tU3RyaW5nKCItMS4y
M0UtMTAiKSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSgxMjMsIC0zLCAwKSwgZnJvbVN0cmluZygi
MC4xMjMiKSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSgwLCAtMiwgMCksIGZyb21TdHJpbmcoIjAw
LjAwIikpOworICAgIEVYUEVDVF9FUShlbmNvZGUoMSwgMiwgMCksIGZyb21TdHJpbmcoIjFFMiIp
KTsKKyAgICBFWFBFQ1RfRVEoRGVjaW1hbDo6aW5maW5pdHkoMCksIGZyb21TdHJpbmcoIjFFMjAw
MDAiKSk7CisgICAgRVhQRUNUX0VRKERlY2ltYWw6Onplcm8oMCksIGZyb21TdHJpbmcoIjFFLTIw
MDAwIikpOworICAgIEVYUEVDVF9FUShlbmNvZGUoMTAwMCwgMTAyMywgMCksIGZyb21TdHJpbmco
IjFFMTAyNiIpKTsKKyAgICBFWFBFQ1RfRVEoRGVjaW1hbDo6emVybygwKSwgZnJvbVN0cmluZygi
MUUtMTAyNiIpKTsKKyAgICBFWFBFQ1RfRVEoRGVjaW1hbDo6aW5maW5pdHkoMCksIGZyb21TdHJp
bmcoIjEyMzQ1Njc4OTBFMTAzNiIpKTsKK30KKworVEVTVF9GKERlY2ltYWxUZXN0LCBmcm9tU3Ry
aW5nVHJ1bmNhdGVkKQoreworICAgIEVYUEVDVF9FUShEZWNpbWFsOjpxdWlldE5hTigwKSwgZnJv
bVN0cmluZygieCIpKTsKKyAgICBFWFBFQ1RfRVEoRGVjaW1hbDo6cXVpZXROYU4oMCksIGZyb21T
dHJpbmcoIjAuIikpOworICAgIEVYUEVDVF9FUShEZWNpbWFsOjpxdWlldE5hTigwKSwgZnJvbVN0
cmluZygiMXgiKSk7CisKKyAgICBFWFBFQ1RfRVEoRGVjaW1hbDo6cXVpZXROYU4oMCksIGZyb21T
dHJpbmcoIjFFeCIpKTsKKyAgICBFWFBFQ1RfRVEoRGVjaW1hbDo6cXVpZXROYU4oMCksIGZyb21T
dHJpbmcoIjFFMngiKSk7CisgICAgRVhQRUNUX0VRKERlY2ltYWw6OnF1aWV0TmFOKDApLCBmcm9t
U3RyaW5nKCIxRSt4IikpOworfQorCitURVNUX0YoRGVjaW1hbFRlc3QsIE9wQWRkKQoreworICAg
IEVYUEVDVF9FUShlbmNvZGUoMCwgMCwgMCksIERlY2ltYWwoMCkgKyBEZWNpbWFsKDApKTsKKyAg
ICBFWFBFQ1RfRVEoRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSArIERlY2ltYWwoLTEpKTsKKyAgICBF
WFBFQ1RfRVEoRGVjaW1hbCgxKSwgRGVjaW1hbCgtMSkgKyBEZWNpbWFsKDIpKTsKKyAgICBFWFBF
Q1RfRVEoZW5jb2RlKDEwMCwgMCwgMCksIERlY2ltYWwoOTkpICsgRGVjaW1hbCgxKSk7CisgICAg
RVhQRUNUX0VRKGVuY29kZSgxMDAsIDAsIDEpLCBEZWNpbWFsKC01MCkgKyBEZWNpbWFsKC01MCkp
OworICAgIEVYUEVDVF9FUShlbmNvZGUoMTAwMDAwMDAwMDAwMDAwMCwgMzUsIDApLCBlbmNvZGUo
MSwgNTAsIDApICsgRGVjaW1hbCgxKSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSgxMDAwMDAwMDAw
MDAwMDAwLCAzNSwgMCksIERlY2ltYWwoMSkgKyBlbmNvZGUoMSwgNTAsIDApKTsKKyAgICBFWFBF
Q1RfRVEoZW5jb2RlKDEwMDAwMDAwMDAxLCAwLCAwKSwgZW5jb2RlKDEsIDEwLCAwKSArIERlY2lt
YWwoMSkpOworICAgIEVYUEVDVF9FUShlbmNvZGUoMTAwMDAwMDAwMDEsIDAsIDApLCBEZWNpbWFs
KDEpICsgZW5jb2RlKDEsIDEwLCAwKSk7Cit9CisKK1RFU1RfRihEZWNpbWFsVGVzdCwgT3BBZGRT
cGVjaWFsVmFsdWVzKQoreworICAgIGNvbnN0IERlY2ltYWwgaW5mKERlY2ltYWw6OmluZmluaXR5
KDApKTsKKyAgICBjb25zdCBEZWNpbWFsIG1pbmYoRGVjaW1hbDo6aW5maW5pdHkoMSkpOworICAg
IGNvbnN0IERlY2ltYWwgbmFuKERlY2ltYWw6OnF1aWV0TmFOKDApKTsKKyAgICBjb25zdCBEZWNp
bWFsIG1uYW4oRGVjaW1hbDo6cXVpZXROYU4oMSkpOworICAgIGNvbnN0IERlY2ltYWwgdGVuKDEw
KTsKKworICAgIEVYUEVDVF9FUShpbmYsIGluZiArIGluZik7CisgICAgRVhQRUNUX0VRKG5hbiwg
aW5mICsgbWluZik7CisgICAgRVhQRUNUX0VRKG5hbiwgbWluZiArIGluZik7CisgICAgRVhQRUNU
X0VRKG1pbmYsIG1pbmYgKyBtaW5mKTsKKworICAgIEVYUEVDVF9FUShpbmYsIGluZiArIHRlbik7
CisgICAgRVhQRUNUX0VRKGluZiwgdGVuICsgaW5mKTsKKyAgICBFWFBFQ1RfRVEobWluZiwgbWlu
ZiArIHRlbik7CisgICAgRVhQRUNUX0VRKG1pbmYsIHRlbiArIG1pbmYpOworCisgICAgRVhQRUNU
X0VRKG5hbiwgbmFuICsgbmFuKTsKKyAgICBFWFBFQ1RfRVEobmFuLCBuYW4gKyBtbmFuKTsKKyAg
ICBFWFBFQ1RfRVEobmFuLCBuYW4gKyB0ZW4pOworCisgICAgRVhQRUNUX0VRKG1uYW4sIG1uYW4g
KyBuYW4pOworICAgIEVYUEVDVF9FUShtbmFuLCBtbmFuICsgbW5hbik7CisgICAgRVhQRUNUX0VR
KG1uYW4sIG1uYW4gKyB0ZW4pOworCisgICAgRVhQRUNUX0VRKG5hbiwgdGVuICsgbmFuKTsKKyAg
ICBFWFBFQ1RfRVEobW5hbiwgdGVuICsgbW5hbik7Cit9CisKK1RFU1RfRihEZWNpbWFsVGVzdCwg
T3BDb21wYXJlKQoreworICAgIEVYUEVDVF9UUlVFKERlY2ltYWwoMCkgPT0gRGVjaW1hbCgwKSk7
CisgICAgRVhQRUNUX1RSVUUoRGVjaW1hbCgwKSAhPSBEZWNpbWFsKDEpKTsKKyAgICBFWFBFQ1Rf
VFJVRShEZWNpbWFsKDApIDwgRGVjaW1hbCgxKSk7CisgICAgRVhQRUNUX1RSVUUoRGVjaW1hbCgw
KSA8PSBEZWNpbWFsKDApKTsKKyAgICBFWFBFQ1RfVFJVRShEZWNpbWFsKDApID4gRGVjaW1hbCgt
MSkpOworICAgIEVYUEVDVF9UUlVFKERlY2ltYWwoMCkgPj0gRGVjaW1hbCgwKSk7CisKKyAgICBF
WFBFQ1RfRkFMU0UoRGVjaW1hbCgxKSA9PSBEZWNpbWFsKDIpKTsKKyAgICBFWFBFQ1RfRkFMU0Uo
RGVjaW1hbCgxKSAhPSBEZWNpbWFsKDEpKTsKKyAgICBFWFBFQ1RfRkFMU0UoRGVjaW1hbCgxKSA8
IERlY2ltYWwoMCkpOworICAgIEVYUEVDVF9GQUxTRShEZWNpbWFsKDEpIDw9IERlY2ltYWwoMCkp
OworICAgIEVYUEVDVF9GQUxTRShEZWNpbWFsKDEpID4gRGVjaW1hbCgyKSk7CisgICAgRVhQRUNU
X0ZBTFNFKERlY2ltYWwoMSkgPj0gRGVjaW1hbCgyKSk7Cit9CisKK1RFU1RfRihEZWNpbWFsVGVz
dCwgT3BDb21wYXJlU3BlY2lhbFZhbHVlcykKK3sKKyAgICBFWFBFQ1RfVFJVRShEZWNpbWFsKDEp
IDwgRGVjaW1hbDo6aW5maW5pdHkoMCkpOworICAgIEVYUEVDVF9UUlVFKERlY2ltYWwoMSkgPiBE
ZWNpbWFsOjppbmZpbml0eSgxKSk7Cit9CisKK1RFU1RfRihEZWNpbWFsVGVzdCwgT3BEaXYpCit7
CisgICAgRVhQRUNUX0VRKGVuY29kZSgwLCAwLCAwKSwgRGVjaW1hbCgwKSAvIERlY2ltYWwoMSkp
OworICAgIEVYUEVDVF9FUShlbmNvZGUoMiwgMCwgMSksIERlY2ltYWwoMikgLyBEZWNpbWFsKC0x
KSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSg1LCAtMSwgMSksIERlY2ltYWwoLTEpIC8gRGVjaW1h
bCgyKSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSg5OSwgMCwgMCksIERlY2ltYWwoOTkpIC8gRGVj
aW1hbCgxKSk7CisgICAgRVhQRUNUX0VRKERlY2ltYWwoMSksIERlY2ltYWwoLTUwKSAvIERlY2lt
YWwoLTUwKSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSgzMzMzMzMzMzMzMzMzMzMzLCAtMTYsIDAp
LCBEZWNpbWFsKDEpIC8gRGVjaW1hbCgzKSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSgxMjM0NTY3
ODkwMTIzNCwgLTEsIDApLCBlbmNvZGUoMTIzNDU2Nzg5MDEyMzQsIDAsIDApIC8gRGVjaW1hbCgx
MCkpOworfQorCitURVNUX0YoRGVjaW1hbFRlc3QsIE9wRGl2U3BlY2lhbFZhbHVlcykKK3sKKyAg
ICBjb25zdCBEZWNpbWFsIGluZihEZWNpbWFsOjppbmZpbml0eSgwKSk7CisgICAgY29uc3QgRGVj
aW1hbCBtaW5mKERlY2ltYWw6OmluZmluaXR5KDEpKTsKKyAgICBjb25zdCBEZWNpbWFsIG5hbihE
ZWNpbWFsOjpxdWlldE5hTigwKSk7CisgICAgY29uc3QgRGVjaW1hbCBtbmFuKERlY2ltYWw6OnF1
aWV0TmFOKDEpKTsKKyAgICBjb25zdCBEZWNpbWFsIHplcm8oRGVjaW1hbDo6emVybygwKSk7Cisg
ICAgY29uc3QgRGVjaW1hbCBtemVybyhEZWNpbWFsOjp6ZXJvKDEpKTsKKyAgICBjb25zdCBEZWNp
bWFsIHRlbigxMCk7CisgICAgY29uc3QgRGVjaW1hbCBtdGVuKC0xMCk7CisKKyAgICBFWFBFQ1Rf
RVEobmFuLCB6ZXJvIC8gemVybyk7CisgICAgRVhQRUNUX0VRKG5hbiwgemVybyAvIG16ZXJvKTsK
KyAgICBFWFBFQ1RfRVEobmFuLCBtemVybyAvIHplcm8pOworICAgIEVYUEVDVF9FUShuYW4sIG16
ZXJvIC8gbXplcm8pOworCisgICAgRVhQRUNUX0VRKGluZiwgdGVuIC8gemVybyk7CisgICAgRVhQ
RUNUX0VRKG1pbmYsIHRlbiAvIG16ZXJvKTsKKyAgICBFWFBFQ1RfRVEobWluZiwgbXRlbiAvIHpl
cm8pOworICAgIEVYUEVDVF9FUShpbmYsIG10ZW4gLyBtemVybyk7CisKKyAgICBFWFBFQ1RfRVEo
aW5mLCBpbmYgLyB6ZXJvKTsKKyAgICBFWFBFQ1RfRVEobWluZiwgaW5mIC8gbXplcm8pOworICAg
IEVYUEVDVF9FUShtaW5mLCBtaW5mIC8gemVybyk7CisgICAgRVhQRUNUX0VRKGluZiwgbWluZiAv
IG16ZXJvKTsKKworICAgIEVYUEVDVF9FUShuYW4sIGluZiAvIGluZik7CisgICAgRVhQRUNUX0VR
KG5hbiwgaW5mIC8gbWluZik7CisgICAgRVhQRUNUX0VRKG5hbiwgbWluZiAvIGluZik7CisgICAg
RVhQRUNUX0VRKG5hbiwgbWluZiAvIG1pbmYpOworCisgICAgRVhQRUNUX0VRKHplcm8sIHRlbiAv
IGluZik7CisgICAgRVhQRUNUX0VRKG16ZXJvLCB0ZW4gLyBtaW5mKTsKKyAgICBFWFBFQ1RfRVEo
bXplcm8sIG10ZW4gLyBpbmYpOworICAgIEVYUEVDVF9FUSh6ZXJvLCBtdGVuIC8gbWluZik7CisK
KyAgICBFWFBFQ1RfRVEobmFuLCBuYW4gLyBuYW4pOworICAgIEVYUEVDVF9FUShuYW4sIG5hbiAv
IG1uYW4pOworICAgIEVYUEVDVF9FUShuYW4sIG5hbiAvIHRlbik7CisKKyAgICBFWFBFQ1RfRVEo
bW5hbiwgbW5hbiAvIG5hbik7CisgICAgRVhQRUNUX0VRKG1uYW4sIG1uYW4gLyBtbmFuKTsKKyAg
ICBFWFBFQ1RfRVEobW5hbiwgbW5hbiAvIHRlbik7CisKKyAgICBFWFBFQ1RfRVEobmFuLCB0ZW4g
LyBuYW4pOworICAgIEVYUEVDVF9FUShtbmFuLCB0ZW4gLyBtbmFuKTsKK30KKworVEVTVF9GKERl
Y2ltYWxUZXN0LCBPcE11bCkKK3sKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDAsIDAsIDApLCBEZWNp
bWFsKDApICogRGVjaW1hbCgwKSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSgyLCAwLCAxKSwgRGVj
aW1hbCgyKSAqIERlY2ltYWwoLTEpKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDIsIDAsIDEpLCBE
ZWNpbWFsKC0xKSAqIERlY2ltYWwoMikpOworICAgIEVYUEVDVF9FUShlbmNvZGUoOTksIDAsIDAp
LCBEZWNpbWFsKDk5KSAqIERlY2ltYWwoMSkpOworICAgIEVYUEVDVF9FUShlbmNvZGUoMjUwMCwg
MCwgMCksIERlY2ltYWwoLTUwKSAqIERlY2ltYWwoLTUwKSk7Cit9CisKK1RFU1RfRihEZWNpbWFs
VGVzdCwgT3BNdWxTcGVjaWFsVmFsdWVzKQoreworICAgIGNvbnN0IERlY2ltYWwgaW5mKERlY2lt
YWw6OmluZmluaXR5KDApKTsKKyAgICBjb25zdCBEZWNpbWFsIG1pbmYoRGVjaW1hbDo6aW5maW5p
dHkoMSkpOworICAgIGNvbnN0IERlY2ltYWwgbmFuKERlY2ltYWw6OnF1aWV0TmFOKDApKTsKKyAg
ICBjb25zdCBEZWNpbWFsIG1uYW4oRGVjaW1hbDo6cXVpZXROYU4oMSkpOworICAgIGNvbnN0IERl
Y2ltYWwgdGVuKDEwKTsKKyAgICBjb25zdCBEZWNpbWFsIG10ZW4oLTEwKTsKKyAgICBjb25zdCBE
ZWNpbWFsIHplcm8oRGVjaW1hbDo6emVybygwKSk7CisgICAgY29uc3QgRGVjaW1hbCBtemVybyhE
ZWNpbWFsOjp6ZXJvKDEpKTsKKworICAgIEVYUEVDVF9FUShpbmYsIGluZiAqIGluZik7CisgICAg
RVhQRUNUX0VRKG1pbmYsIGluZiAqIG1pbmYpOworICAgIEVYUEVDVF9FUShtaW5mLCBtaW5mICog
aW5mKTsKKyAgICBFWFBFQ1RfRVEoaW5mLCBtaW5mICogbWluZik7CisKKyAgICBFWFBFQ1RfRVEo
bmFuLCBpbmYgKiB6ZXJvKTsKKyAgICBFWFBFQ1RfRVEobmFuLCB6ZXJvICogbWluZik7CisgICAg
RVhQRUNUX0VRKG5hbiwgbWluZiAqIHplcm8pOworICAgIEVYUEVDVF9FUShuYW4sIG1pbmYgKiB6
ZXJvKTsKKworICAgIEVYUEVDVF9FUShuYW4sIGluZiAqIG16ZXJvKTsKKyAgICBFWFBFQ1RfRVEo
bmFuLCBtemVybyAqIG1pbmYpOworICAgIEVYUEVDVF9FUShuYW4sIG1pbmYgKiBtemVybyk7Cisg
ICAgRVhQRUNUX0VRKG5hbiwgbWluZiAqIG16ZXJvKTsKKworICAgIEVYUEVDVF9FUShpbmYsIGlu
ZiAqIHRlbik7CisgICAgRVhQRUNUX0VRKGluZiwgdGVuICogaW5mKTsKKyAgICBFWFBFQ1RfRVEo
bWluZiwgbWluZiAqIHRlbik7CisgICAgRVhQRUNUX0VRKG1pbmYsIHRlbiAqIG1pbmYpOworCisg
ICAgRVhQRUNUX0VRKG1pbmYsIGluZiAqIG10ZW4pOworICAgIEVYUEVDVF9FUShtaW5mLCBtdGVu
ICogaW5mKTsKKyAgICBFWFBFQ1RfRVEoaW5mLCBtaW5mICogbXRlbik7CisgICAgRVhQRUNUX0VR
KGluZiwgbXRlbiAqIG1pbmYpOworCisgICAgRVhQRUNUX0VRKG5hbiwgbmFuICogbmFuKTsKKyAg
ICBFWFBFQ1RfRVEobmFuLCBuYW4gKiBtbmFuKTsKKyAgICBFWFBFQ1RfRVEobmFuLCBuYW4gKiB0
ZW4pOworCisgICAgRVhQRUNUX0VRKG1uYW4sIG1uYW4gKiBuYW4pOworICAgIEVYUEVDVF9FUSht
bmFuLCBtbmFuICogbW5hbik7CisgICAgRVhQRUNUX0VRKG1uYW4sIG1uYW4gKiB0ZW4pOworCisg
ICAgRVhQRUNUX0VRKG5hbiwgdGVuICogbmFuKTsKKyAgICBFWFBFQ1RfRVEobW5hbiwgdGVuICog
bW5hbik7Cit9CisKK1RFU1RfRihEZWNpbWFsVGVzdCwgT3BTdWIpCit7CisgICAgRVhQRUNUX0VR
KGVuY29kZSgwLCAwLCAwKSwgRGVjaW1hbCgwKSAtIERlY2ltYWwoMCkpOworICAgIEVYUEVDVF9F
UShlbmNvZGUoMywgMCwgMCksIERlY2ltYWwoMikgLSBEZWNpbWFsKC0xKSk7CisgICAgRVhQRUNU
X0VRKGVuY29kZSgzLCAwLCAxKSwgRGVjaW1hbCgtMSkgLSBEZWNpbWFsKDIpKTsKKyAgICBFWFBF
Q1RfRVEoZW5jb2RlKDk4LCAwLCAwKSwgRGVjaW1hbCg5OSkgLSBEZWNpbWFsKDEpKTsKKyAgICBF
WFBFQ1RfRVEoZW5jb2RlKDAsIDAsIDApLCBEZWNpbWFsKC01MCkgLSBEZWNpbWFsKC01MCkpOwor
ICAgIEVYUEVDVF9FUShlbmNvZGUoMTAwMDAwMDAwMDAwMDAwMCwgMzUsIDApLCBlbmNvZGUoMSwg
NTAsIDApIC0gRGVjaW1hbCgxKSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSgxMDAwMDAwMDAwMDAw
MDAwLCAzNSwgMSksIERlY2ltYWwoMSkgLSBlbmNvZGUoMSwgNTAsIDApKTsKK30KKworVEVTVF9G
KERlY2ltYWxUZXN0LCBPcFN1YlNwZWNpYWxWYWx1ZXMpCit7CisgICAgY29uc3QgRGVjaW1hbCBp
bmYoRGVjaW1hbDo6aW5maW5pdHkoMCkpOworICAgIGNvbnN0IERlY2ltYWwgbWluZihEZWNpbWFs
OjppbmZpbml0eSgxKSk7CisgICAgY29uc3QgRGVjaW1hbCBuYW4oRGVjaW1hbDo6cXVpZXROYU4o
MCkpOworICAgIGNvbnN0IERlY2ltYWwgbW5hbihEZWNpbWFsOjpxdWlldE5hTigxKSk7CisgICAg
Y29uc3QgRGVjaW1hbCB0ZW4oMTApOworCisgICAgRVhQRUNUX0VRKG5hbiwgaW5mIC0gaW5mKTsK
KyAgICBFWFBFQ1RfRVEoaW5mLCBpbmYgLSBtaW5mKTsKKyAgICBFWFBFQ1RfRVEobWluZiwgbWlu
ZiAtIGluZik7CisgICAgRVhQRUNUX0VRKG5hbiwgbWluZiAtIG1pbmYpOworCisgICAgRVhQRUNU
X0VRKGluZiwgaW5mIC0gdGVuKTsKKyAgICBFWFBFQ1RfRVEobWluZiwgdGVuIC0gaW5mKTsKKyAg
ICBFWFBFQ1RfRVEobWluZiwgbWluZiAtIHRlbik7CisgICAgRVhQRUNUX0VRKGluZiwgdGVuIC0g
bWluZik7CisKKyAgICBFWFBFQ1RfRVEobmFuLCBuYW4gLSBuYW4pOworICAgIEVYUEVDVF9FUShu
YW4sIG5hbiAtIG1uYW4pOworICAgIEVYUEVDVF9FUShuYW4sIG5hbiAtIHRlbik7CisKKyAgICBF
WFBFQ1RfRVEobW5hbiwgbW5hbiAtIG5hbik7CisgICAgRVhQRUNUX0VRKG1uYW4sIG1uYW4gLSBt
bmFuKTsKKyAgICBFWFBFQ1RfRVEobW5hbiwgbW5hbiAtIHRlbik7CisKKyAgICBFWFBFQ1RfRVEo
bmFuLCB0ZW4gLSBuYW4pOworICAgIEVYUEVDVF9FUShtbmFuLCB0ZW4gLSBtbmFuKTsKK30KKwor
VEVTVF9GKERlY2ltYWxUZXN0LCBQcm9wZXJ0aWVzKQoreworICAgIEVYUEVDVF9UUlVFKERlY2lt
YWwoMCkuaXNGaW5pdGUoKSk7CisgICAgRVhQRUNUX0ZBTFNFKERlY2ltYWwoMCkuaXNTcGVjaWFs
KCkpOworfQorCitURVNUX0YoRGVjaW1hbFRlc3QsIFByb3BlcnRpZXNTcGVjaWFsKQoreworICAg
IEVYUEVDVF9UUlVFKERlY2ltYWw6OmluZmluaXR5KDApLmlzU3BlY2lhbCgpKTsKKyAgICBFWFBF
Q1RfRkFMU0UoRGVjaW1hbDo6aW5maW5pdHkoMCkuaXNGaW5pdGUoKSk7CisKKyAgICBFWFBFQ1Rf
VFJVRShEZWNpbWFsOjppbmZpbml0eSgxKS5pc1NwZWNpYWwoKSk7CisgICAgRVhQRUNUX0ZBTFNF
KERlY2ltYWw6OmluZmluaXR5KDEpLmlzRmluaXRlKCkpOworCisgICAgRVhQRUNUX1RSVUUoRGVj
aW1hbDo6cXVpZXROYU4oMCkuaXNTcGVjaWFsKCkpOworICAgIEVYUEVDVF9GQUxTRShEZWNpbWFs
OjpxdWlldE5hTigwKS5pc0Zpbml0ZSgpKTsKKworICAgIEVYUEVDVF9UUlVFKERlY2ltYWw6OnF1
aWV0TmFOKDEpLmlzU3BlY2lhbCgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoRGVjaW1hbDo6cXVpZXRO
YU4oMSkuaXNGaW5pdGUoKSk7Cit9CisKK1RFU1RfRihEZWNpbWFsVGVzdCwgUmVtYWluZGVyKQor
eworICAgIEVYUEVDVF9FUShlbmNvZGUoOSwgLTEsIDEpLCBlbmNvZGUoMjEsIC0xLCAwKS5yZW1h
aW5kZXIoMykpOworICAgIEVYUEVDVF9FUShEZWNpbWFsKDEpLCBEZWNpbWFsKDEwKS5yZW1haW5k
ZXIoMykpOworICAgIEVYUEVDVF9FUShlbmNvZGUoMSwgMCwgMSksIERlY2ltYWwoLTEwKS5yZW1h
aW5kZXIoMykpOworICAgIEVYUEVDVF9FUShlbmNvZGUoMiwgLTEsIDApLCBlbmNvZGUoMTAyLCAt
MSwgMCkucmVtYWluZGVyKDEpKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDEsIC0xLCAwKSwgRGVj
aW1hbCgxMCkucmVtYWluZGVyKGVuY29kZSgzLCAtMSwgMCkpKTsKKyAgICBFWFBFQ1RfRVEoZW5j
b2RlKDMsIC0xLCAtMSksIGVuY29kZSgzNiwgLTEsIDApLnJlbWFpbmRlcihlbmNvZGUoMTMsIC0x
LCAwKSkpOworfQorCitURVNUX0YoRGVjaW1hbFRlc3QsIFJlbWFpbmRlclNwZWNpYWxWYWx1ZXMp
Cit7CisgICAgRVhQRUNUX0VRKERlY2ltYWw6OmluZmluaXR5KDApLCBEZWNpbWFsOjppbmZpbml0
eSgwKS5yZW1haW5kZXIoMSkpOworICAgIEVYUEVDVF9FUShEZWNpbWFsOjpxdWlldE5hTigwKSwg
RGVjaW1hbDo6cXVpZXROYU4oMCkucmVtYWluZGVyKDEpKTsKK30KKworVEVTVF9GKERlY2ltYWxU
ZXN0LCBSb3VuZCkKK3sKKyAgICBFWFBFQ1RfRVEoRGVjaW1hbCgxKSwgKERlY2ltYWwoOSkgLyBE
ZWNpbWFsKDEwKSkucm91bmQoKSk7CisgICAgRVhQRUNUX0VRKERlY2ltYWwoMjUpLCAoRGVjaW1h
bCg1KSAvIGZyb21TdHJpbmcoIjAuMjAwIikpLnJvdW5kKCkpOworICAgIEVYUEVDVF9FUShEZWNp
bWFsKDMpLCAoRGVjaW1hbCg1KSAvIERlY2ltYWwoMikpLnJvdW5kKCkpOworICAgIEVYUEVDVF9F
UShEZWNpbWFsKDEpLCAoRGVjaW1hbCgyKSAvIERlY2ltYWwoMykpLnJvdW5kKCkpOworICAgIEVY
UEVDVF9FUShEZWNpbWFsKDMpLCAoRGVjaW1hbCgxMCkgLyBEZWNpbWFsKDMpKS5yb3VuZCgpKTsK
KyAgICBFWFBFQ1RfRVEoRGVjaW1hbCgzKSwgKERlY2ltYWwoMSkgLyBmcm9tU3RyaW5nKCIwLjMi
KSkucm91bmQoKSk7CisgICAgRVhQRUNUX0VRKERlY2ltYWwoMTApLCAoRGVjaW1hbCgxKSAvIGZy
b21TdHJpbmcoIjAuMSIpKS5yb3VuZCgpKTsKKyAgICBFWFBFQ1RfRVEoRGVjaW1hbCg1KSwgKERl
Y2ltYWwoMSkgLyBmcm9tU3RyaW5nKCIwLjIiKSkucm91bmQoKSk7CisgICAgRVhQRUNUX0VRKERl
Y2ltYWwoMTApLCAoZnJvbVN0cmluZygiMTAuMiIpIC8gMSkucm91bmQoKSk7Cit9CisKK1RFU1Rf
RihEZWNpbWFsVGVzdCwgUm91bmRTZXBjaWFsVmFsdWVzKQoreworICAgIEVYUEVDVF9FUShEZWNp
bWFsOjppbmZpbml0eSgwKSwgRGVjaW1hbDo6aW5maW5pdHkoMCkucm91bmQoKSk7CisgICAgRVhQ
RUNUX0VRKERlY2ltYWw6OnF1aWV0TmFOKDApLCBEZWNpbWFsOjpxdWlldE5hTigwKS5yb3VuZCgp
KTsKK30KKworVEVTVF9GKERlY2ltYWxUZXN0LCBUb1N0cmluZykKK3sKKyAgICBFWFBFQ1RfRVEo
U3RyaW5nKCIwIiksIERlY2ltYWwoMCkudG9TdHJpbmcoKSk7CisgICAgRVhQRUNUX0VRKFN0cmlu
ZygiMSIpLCBEZWNpbWFsKDEpLnRvU3RyaW5nKCkpOworICAgIEVYUEVDVF9FUShTdHJpbmcoIjAu
MDAxIiksIGVuY29kZSgxLCAtMywgMCkudG9TdHJpbmcoKSk7CisgICAgRVhQRUNUX0VRKFN0cmlu
ZygiLTEiKSwgRGVjaW1hbCgtMSkudG9TdHJpbmcoKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygi
MWUrMTAiKSwgZW5jb2RlKDEsIDEwLCAwKS50b1N0cmluZygpKTsKKyAgICBFWFBFQ1RfRVEoU3Ry
aW5nKCItMWUrMTAiKSwgZW5jb2RlKDEsIDEwLCAxKS50b1N0cmluZygpKTsKKyAgICBFWFBFQ1Rf
RVEoU3RyaW5nKCIxZS0xMCIpLCBlbmNvZGUoMSwgLTEwLCAwKS50b1N0cmluZygpKTsKKyAgICBF
WFBFQ1RfRVEoU3RyaW5nKCItMWUtMTAiKSwgZW5jb2RlKDEsIC0xMCwgMSkudG9TdHJpbmcoKSk7
CisgICAgRVhQRUNUX0VRKFN0cmluZygiMTIuMzQiKSwgZW5jb2RlKDEyMzQsIC0yLCAwKS50b1N0
cmluZygpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCItMTIuMzQiKSwgZW5jb2RlKDEyMzQsIC0y
LCAxKS50b1N0cmluZygpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCIzLjQ1NmUrNyIpLCBlbmNv
ZGUoMzQ1NiwgNCwgMCkudG9TdHJpbmcoKSk7Cit9CisKK1RFU1RfRihEZWNpbWFsVGVzdCwgVG9T
dHJpbmdTcGVjaWFsKQoreworICAgIEVYUEVDVF9FUShTdHJpbmcoIkluZmluaXR5IiksIERlY2lt
YWw6OmluZmluaXR5KDApLnRvU3RyaW5nKCkpOworICAgIEVYUEVDVF9FUShTdHJpbmcoIi1JbmZp
bml0eSIpLCBEZWNpbWFsOjppbmZpbml0eSgxKS50b1N0cmluZygpKTsKKworICAgIEVYUEVDVF9F
UShTdHJpbmcoIk5hTiIpLCBEZWNpbWFsOjpxdWlldE5hTigwKS50b1N0cmluZygpKTsKKyAgICBF
WFBFQ1RfRVEoU3RyaW5nKCItTmFOIiksIERlY2ltYWw6OnF1aWV0TmFOKDEpLnRvU3RyaW5nKCkp
OworfQorCit9IC8vIERlY2ltYWxUZXN0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZjg1OTlhOWY1OGUyY2ZkODdlODAxZjYw
NmVmMTZkMjNiOGEzYzUxOS4uNjIwNzFkNzRjM2M5MjA2NTkwNzE1MmYwZDBlNTZhNDdlNjg1ZmZh
NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEyLTA0LTI3ICBZb3NoaWZ1bWkgSW5vdWUgIDx5
b3NpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU2V0dGluZyAnMC42JyB0byB0aGUgdmFsdWUg
b2YgYSByYW5nZSBpbnB1dCBtYWtlcyB0aGUgdmFsdWUgMC42MDAwMDAwMDAwMDAwMDAxCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDAwOQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9mb3Jtcy9y
YW5nZS9yYW5nZS12YWx1ZS1yb3VuZGluZy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvZm9ybXMvcmFuZ2UvcmFuZ2UtdmFsdWUtcm91bmRpbmcuaHRtbDogQWRkZWQuCisKIDIw
MTItMDQtMzAgIFpoZW55YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4KIAogICAgICAgICBVbnJldmll
d2VkLCB0ZXN0IGV4cGVjdGF0aW9ucyB1cGRhdGUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL3JhbmdlL3JhbmdlLXZhbHVlLXJvdW5kaW5nLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvcmFuZ2UvcmFuZ2UtdmFsdWUtcm91bmRpbmctZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmQ3YmI1MTA2MGNhNzg5YzFmYTE4NmVlYzQ3NDZhYmNiZTZmMDZjNjAKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3JhbmdlL3JhbmdlLXZhbHVl
LXJvdW5kaW5nLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE5IEBACisgICAgICAgIAorU2V0dGlu
ZyAnMC42JyB0byB0aGUgdmFsdWUgb2YgYSByYW5nZSBpbnB1dCBtYWtlcyB0aGUgdmFsdWUgMC42
MDAwMDAwMDAwMDAwMDAxCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHJh
bmdlMS52YWx1ZS50b1N0cmluZygpIGlzICIwLjEiCitQQVNTIHJhbmdlMi52YWx1ZS50b1N0cmlu
ZygpIGlzICIwLjIiCitQQVNTIHJhbmdlMy52YWx1ZS50b1N0cmluZygpIGlzICIwLjMiCitQQVNT
IHJhbmdlNC52YWx1ZS50b1N0cmluZygpIGlzICIwLjQiCitQQVNTIHJhbmdlNS52YWx1ZS50b1N0
cmluZygpIGlzICIwLjUiCitQQVNTIHJhbmdlNi52YWx1ZS50b1N0cmluZygpIGlzICIwLjYiCitQ
QVNTIHJhbmdlNy52YWx1ZS50b1N0cmluZygpIGlzICIwLjciCitQQVNTIHJhbmdlOC52YWx1ZS50
b1N0cmluZygpIGlzICIwLjgiCitQQVNTIHJhbmdlOS52YWx1ZS50b1N0cmluZygpIGlzICIwLjki
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yYW5nZS9yYW5nZS12YWx1ZS1yb3VuZGlu
Zy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yYW5nZS9yYW5nZS12YWx1ZS1yb3VuZGlu
Zy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjMyZTJjNGVkM2FmYTEzNDEyNWVkYWMzNzE0NjJiNzdjNzdmNzkz
NTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3JhbmdlL3Jhbmdl
LXZhbHVlLXJvdW5kaW5nLmh0bWwKQEAgLTAsMCArMSwyNCBAQAorPGhlYWQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPGlucHV0IHR5cGU9cmFuZ2Ugc3RlcD0wLjEgdmFsdWU9MC4xIGlkPXJhbmdlMT4K
KzxpbnB1dCB0eXBlPXJhbmdlIHN0ZXA9MC4xIHZhbHVlPTAuMiBpZD1yYW5nZTI+Cis8aW5wdXQg
dHlwZT1yYW5nZSBzdGVwPTAuMSB2YWx1ZT0wLjMgaWQ9cmFuZ2UzPgorPGlucHV0IHR5cGU9cmFu
Z2Ugc3RlcD0wLjEgdmFsdWU9MC40IGlkPXJhbmdlND4KKzxpbnB1dCB0eXBlPXJhbmdlIHN0ZXA9
MC4xIHZhbHVlPTAuNSBpZD1yYW5nZTU+Cis8aW5wdXQgdHlwZT1yYW5nZSBzdGVwPTAuMSB2YWx1
ZT0wLjYgaWQ9cmFuZ2U2PgorPGlucHV0IHR5cGU9cmFuZ2Ugc3RlcD0wLjEgdmFsdWU9MC43IGlk
PXJhbmdlNz4KKzxpbnB1dCB0eXBlPXJhbmdlIHN0ZXA9MC4xIHZhbHVlPTAuOCBpZD1yYW5nZTg+
Cis8aW5wdXQgdHlwZT1yYW5nZSBzdGVwPTAuMSB2YWx1ZT0wLjkgaWQ9cmFuZ2U5PgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIjxhIGhyZWY9J2h0dHA6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwMDA5Jz5TZXR0aW5nICcwLjYnIHRv
IHRoZSB2YWx1ZSBvZiBhIHJhbmdlIGlucHV0IG1ha2VzIHRoZSB2YWx1ZSAwLjYwMDAwMDAwMDAw
MDAwMDE8L2E+Iik7Citmb3IgKHZhciBpID0gMTsgaSA8PSA5OyArK2kpIHsKKyAgICBzaG91bGRC
ZSgncmFuZ2UnICsgaS50b1N0cmluZygpICsgJy52YWx1ZS50b1N0cmluZygpJywgJyIwLicgKyBp
LnRvU3RyaW5nKCkgKyAnIicpOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+CisKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>143523</attachid>
            <date>2012-05-23 03:51:52 -0700</date>
            <delta_ts>2012-05-23 20:27:09 -0700</delta_ts>
            <desc>Patch 6 - For Makefile validation</desc>
            <filename>bug-80009-20120523195147.patch</filename>
            <type>text/plain</type>
            <size>154977</size>
            <attacher>yosin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4MTUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2EwZjc2MjgxMThiZDZk
ZTYzNDU3ZmM5NTkzZWZjNTIyZTU2NjkzOS4uODJjOGIwMzA4Y2UxYWZlOGExNDQ4ODEyYTE5NzQz
ZjcwZDI2ZGJlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5MyBAQAorMjAxMi0wNS0yMyAgWW9z
aGlmdW1pIElub3VlICA8eW9zaW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEludHJvZHVjZSBE
ZWNpbWFsIGFyaXRobWV0aWMgdG8gZml4IHJvdW5kaW5nIGVycm9ycyBpbiBudW1iZXIvcmFuZ2Ug
aW5wdXQgdHlwZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTgwMDA5CisKKyAgICAgICAgV0lQOiBDaGVjayBtYWtlZmlsZXMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBmYXN0L2Zvcm1zL3Jhbmdl
L3JhbmdlLXZhbHVlLXJvdW5kaW5nLmh0bWwKKworICAgICAgICAqIENNYWtlTGlzdHMudHh0Ogor
ICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAg
ICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIGh0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydERlY2ltYWxUb0RvdWJsZSk6CisgICAgICAg
IChXZWJDb3JlOjpjb252ZXJ0RG91YmxlVG9EZWNpbWFsKToKKyAgICAgICAgKFdlYkNvcmU6OkJh
c2VEYXRlQW5kVGltZUlucHV0VHlwZTo6dmFsdWVBc0RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
QmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpzZXRWYWx1ZUFzRGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OnZhbHVlQXNOdW1iZXIpOgorICAgICAgICAo
V2ViQ29yZTo6QmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpzZXRWYWx1ZUFzTnVtYmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6ZGVmYXVsdFZhbHVlRm9y
U3RlcFVwKToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6cGFy
c2VUb0RlY2ltYWwpOgorICAgICAgICAoV2ViQ29yZTo6QmFzZURhdGVBbmRUaW1lSW5wdXRUeXBl
OjpzZXJpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6QmFzZURhdGVBbmRUaW1lSW5wdXRUeXBl
OjpzZXJpYWxpemVXaXRoQ29tcG9uZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpCYXNlRGF0ZUFu
ZFRpbWVJbnB1dFR5cGU6OnNlcmlhbGl6ZVdpdGhNaWxsaXNlY29uZHMpOgorICAgICAgICAoV2Vi
Q29yZTo6QmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpjb252ZXJ0RnJvbVZpc2libGVWYWx1ZSk6
CisgICAgICAgICogaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuaDoKKyAgICAgICAgKEJh
c2VEYXRlQW5kVGltZUlucHV0VHlwZSk6CisgICAgICAgICogaHRtbC9EYXRlSW5wdXRUeXBlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RGF0ZUlucHV0VHlwZTo6
Y3JlYXRlU3RlcFJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGVJbnB1dFR5cGU6OnNldE1p
bGxpc2Vjb25kVG9EYXRlQ29tcG9uZW50cyk6CisgICAgICAgICogaHRtbC9EYXRlSW5wdXRUeXBl
Lmg6CisgICAgICAgIChEYXRlSW5wdXRUeXBlKToKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6Z2V0QWxsb3dl
ZFZhbHVlU3RlcCk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50Lmg6CisgICAgICAg
IChIVE1MSW5wdXRFbGVtZW50KToKKyAgICAgICAgKiBodG1sL0lucHV0VHlwZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OnJhbmdlVW5kZXJmbG93KToKKyAgICAgICAgKFdlYkNv
cmU6OklucHV0VHlwZTo6cmFuZ2VPdmVyZmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5
cGU6OmRlZmF1bHRWYWx1ZUZvclN0ZXBVcCk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6
Om1pbmltdW0pOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjptYXhpbXVtKToKKyAgICAg
ICAgKFdlYkNvcmU6OklucHV0VHlwZTo6aXNJblJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
cHV0VHlwZTo6aXNPdXRPZlJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6c3Rl
cE1pc21hdGNoKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6dmFsaWRhdGlvbk1lc3Nh
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjpwYXJzZVRvRGVjaW1hbCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OnNlcmlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnB1dFR5cGU6OmFwcGx5U3RlcCk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OmdldEFs
bG93ZWRWYWx1ZVN0ZXApOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjpzdGVwVXBGcm9t
UmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBlLmg6CisgICAgICAgIChJbnB1dFR5
cGUpOgorICAgICAgICAqIGh0bWwvTnVtYmVySW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6Y2FsY3VsYXRlUmVuZGVyU2l6ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpOdW1iZXJJbnB1dFR5cGU6OnZhbHVlQXNOdW1iZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6TnVtYmVySW5wdXRUeXBlOjpzZXRWYWx1ZUFzTnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6
Ok51bWJlcklucHV0VHlwZTo6Y3JlYXRlU3RlcFJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok51
bWJlcklucHV0VHlwZTo6c2l6ZVNob3VsZEluY2x1ZGVEZWNvcmF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6Ok51bWJlcklucHV0VHlwZTo6cGFyc2VUb0RlY2ltYWwpOgorICAgICAgICAoV2ViQ29y
ZTo6TnVtYmVySW5wdXRUeXBlOjpzZXJpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6TnVtYmVy
SW5wdXRUeXBlOjp2aXNpYmxlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6TnVtYmVySW5wdXRU
eXBlOjppc0FjY2VwdGFibGVWYWx1ZSk6CisgICAgICAgICogaHRtbC9OdW1iZXJJbnB1dFR5cGUu
aDoKKyAgICAgICAgKE51bWJlcklucHV0VHlwZSk6CisgICAgICAgICogaHRtbC9SYW5nZUlucHV0
VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlSW5w
dXRUeXBlOjp2YWx1ZUFzTnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlSW5wdXRUeXBl
OjpzZXRWYWx1ZUFzTnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlSW5wdXRUeXBlOjpj
cmVhdGVTdGVwUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VJbnB1dFR5cGU6OmhhbmRs
ZUtleWRvd25FdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6cGFyc2VU
b0RlY2ltYWwpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VJbnB1dFR5cGU6OnNlcmlhbGl6ZSk6
CisgICAgICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6c2FuaXRpemVWYWx1ZSk6CisgICAg
ICAgICogaHRtbC9SYW5nZUlucHV0VHlwZS5oOgorICAgICAgICAoUmFuZ2VJbnB1dFR5cGUpOgor
ICAgICAgICAqIGh0bWwvU3RlcFJhbmdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0ZXBSYW5n
ZTo6U3RlcFJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0ZXBSYW5nZTo6YWNjZXB0YWJsZUVy
cm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlN0ZXBSYW5nZTo6YWxpZ25WYWx1ZUZvclN0ZXApOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTdGVwUmFuZ2U6OmNsYW1wVmFs
dWUpOgorICAgICAgICAoV2ViQ29yZTo6U3RlcFJhbmdlOjpwYXJzZVN0ZXApOgorICAgICAgICAo
V2ViQ29yZTo6U3RlcFJhbmdlOjpzdGVwTWlzbWF0Y2gpOgorICAgICAgICAqIGh0bWwvU3RlcFJh
bmdlLmg6CisgICAgICAgIChEZWNpbWFsT3JNaXNzaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlN0
ZXBSYW5nZTo6RGVjaW1hbE9yTWlzc2luZzo6RGVjaW1hbE9yTWlzc2luZyk6CisgICAgICAgIChX
ZWJDb3JlOjpTdGVwUmFuZ2U6OlN0ZXBEZXNjcmlwdGlvbjo6ZGVmYXVsdFZhbHVlKToKKyAgICAg
ICAgKFN0ZXBSYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpTdGVwUmFuZ2U6Om1heGltdW0pOgor
ICAgICAgICAoV2ViQ29yZTo6U3RlcFJhbmdlOjptaW5pbXVtKToKKyAgICAgICAgKFdlYkNvcmU6
OlN0ZXBSYW5nZTo6c3RlcCk6CisgICAgICAgIChXZWJDb3JlOjpTdGVwUmFuZ2U6OnN0ZXBCYXNl
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0ZXBSYW5nZTo6ZGVmYXVsdFZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OlN0ZXBSYW5nZTo6ZW5zdXJlTWF4aW11bSk6CisgICAgICAgIChXZWJDb3JlOjpT
dGVwUmFuZ2U6OnByb3BvcnRpb25Gcm9tVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U3RlcFJh
bmdlOjp2YWx1ZUZyb21Qcm9wb3J0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlN0ZXBSYW5nZTo6
cm91bmRCeVN0ZXApOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6c2VyaWFsaXplRm9yTnVtYmVyVHlwZSk6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlVG9EZWNpbWFsRm9yTnVtYmVyVHlwZSk6
CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvQ2FsZW5kYXJQaWNrZXJFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNhbGVuZGFyUGlja2VyRWxlbWVudDo6d3JpdGVEb2N1bWVudCk6
CisgICAgICAgICogaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnNsaWRlclBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNsaWRl
clRodW1iOjpsYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6U2xpZGVyVGh1bWJFbGVtZW50Ojpz
ZXRQb3NpdGlvbkZyb21Qb2ludCk6CisgICAgICAgICogcGxhdGZvcm0vRGVjaW1hbC5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChEZWNpbWFsUHJpdmF0ZSk6CisgICAg
ICAgIChTcGVjaWFsVmFsdWVIYW5kbGVyKToKKyAgICAgICAgKFVJbnQxMjgpOgorICAgICAgICAo
V2ViQ29yZTo6RGVjaW1hbFByaXZhdGU6OlVJbnQxMjg6OmhpZ2gpOgorICAgICAgICAoV2ViQ29y
ZTo6RGVjaW1hbFByaXZhdGU6OlVJbnQxMjg6Omxvdyk6CisgICAgICAgIChXZWJDb3JlOjpEZWNp
bWFsUHJpdmF0ZTo6VUludDEyODo6aXNaZXJvKToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWxQ
cml2YXRlOjpjb3VudERpZ2l0cyk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsUHJpdmF0ZTo6
bXVsdGlwbHlIaWdoKToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWxQcml2YXRlOjpwb3dlcik6
CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsUHJpdmF0ZTo6c2NhbGVEb3duKToKKyAgICAgICAg
KFdlYkNvcmU6OkRlY2ltYWxQcml2YXRlOjpzY2FsZVVwKToKKyAgICAgICAgKFdlYkNvcmU6OkRl
Y2ltYWxQcml2YXRlOjpTcGVjaWFsVmFsdWVIYW5kbGVyOjpTcGVjaWFsVmFsdWVIYW5kbGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWxQcml2YXRlOjpTcGVjaWFsVmFsdWVIYW5kbGVyOjpo
YW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1hbFByaXZhdGU6OlNwZWNpYWxWYWx1ZUhh
bmRsZXI6OnZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWxQcml2YXRlOjpVSW50MTI4
OjpVSW50MTI4KToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWxQcml2YXRlOjpVSW50MTI4Ojpv
cGVyYXRvciAvPSk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsUHJpdmF0ZTo6VUludDEyODo6
bXVsdGlwbHkpOgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1hbDo6RW5jb2RlZERhdGE6OkVuY29k
ZWREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWw6OkVuY29kZWREYXRhOjpjb2VmZmlj
aWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjpFbmNvZGVkRGF0YTo6ZXhwb25lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1hbDo6RW5jb2RlZERhdGE6OmlzRmluaXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRlY2ltYWw6OkVuY29kZWREYXRhOjppc1NwZWNpYWwpOgorICAgICAg
ICAoV2ViQ29yZTo6RGVjaW1hbDo6RW5jb2RlZERhdGE6OmlzWmVybyk6CisgICAgICAgIChXZWJD
b3JlOjpEZWNpbWFsOjpFbmNvZGVkRGF0YTo6cmF3RXhwb25lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6RGVjaW1hbDo6RW5jb2RlZERhdGE6OnNpZ24pOgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1h
bDo6RW5jb2RlZERhdGE6OnNldFNpZ24pOgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1hbDo6RGVj
aW1hbCk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjpvcGVyYXRvciA9KToKKyAgICAgICAg
KFdlYkNvcmU6OkRlY2ltYWw6Om9wZXJhdG9yICs9KToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2lt
YWw6Om9wZXJhdG9yIC09KToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWw6Om9wZXJhdG9yICo9
KToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWw6Om9wZXJhdG9yIC89KToKKyAgICAgICAgKFdl
YkNvcmU6OkRlY2ltYWw6Om9wZXJhdG9yIC0pOgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1hbDo6
b3BlcmF0b3IgKyk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjpvcGVyYXRvciAqKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRlY2ltYWw6Om9wZXJhdG9yIC8pOgorICAgICAgICAoV2ViQ29yZTo6
RGVjaW1hbDo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjpvcGVyYXRv
ciE9KToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWw6Om9wZXJhdG9yIDwpOgorICAgICAgICAo
V2ViQ29yZTo6RGVjaW1hbDo6b3BlcmF0b3IgPD0pOgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1h
bDo6b3BlcmF0b3IgPik6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjpvcGVyYXRvciA+PSk6
CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjpleHBvbmVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpEZWNpbWFsOjpmb3JtYXRDbGFzcyk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjpzaWdu
KToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWw6OmFicyk6CisgICAgICAgIChXZWJDb3JlOjpE
ZWNpbWFsOjpjZWlsKToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWw6OmNvbXBhcmVUbyk6Cisg
ICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjpmYXN0RXF1YWxzKToKKyAgICAgICAgKFdlYkNvcmU6
OkRlY2ltYWw6OmZsb29yKToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWw6OmZyb21TdHJpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1hbDo6aW5maW5pdHkpOgorICAgICAgICAoV2ViQ29y
ZTo6RGVjaW1hbDo6bmFuKToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWw6OnBvdyk6CisgICAg
ICAgIChXZWJDb3JlOjpEZWNpbWFsOjpyZW1haW5kZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGVj
aW1hbDo6cm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1hbDo6dG9TdHJpbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6RGVjaW1hbDo6emVybyk6CisgICAgICAgICogcGxhdGZvcm0vRGVjaW1h
bC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoRGVjaW1hbCk6CisgICAg
ICAgIChFbmNvZGVkRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjppc0Zpbml0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjppc01pbnVzKToKKyAgICAgICAgKFdlYkNvcmU6
OkRlY2ltYWw6OmlzUGx1cyk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjppc1NwZWNpYWwp
OgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1hbDo6aXNaZXJvKToKKyAgICAgICAgKFdlYkNvcmU6
OkRlY2ltYWw6OnZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWw6OmludmVydFNpZ24p
OgorCiAyMDEyLTA1LTIzICAnUGF2ZWwgRmVsZG1hbicgIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgTm90IHJldmlld2VkOiBpbnNwZWN0b3IncyBGaW5kIGlzIG5vdCBjb25zdW1p
bmcgZXZlbnQgYXMgb2YgcjExNzk3NC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggZjU5
Zjg0N2E2MTVmNDU0NzgyM2M1YThhYTVhMDRjNzI1ZThmMjAyYi4uNTJlMzI5NmQ1ZjQwOTk3YTdm
YmM2M2ZjNmE2Yzk5MDgzOTA1MjlkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNCBAQAorMjAxMi0wNS0yMyAgWW9zaGlmdW1pIElub3VlICA8eW9zaW5AY2hyb21pdW0u
b3JnPgorCisgICAgICAgIEludHJvZHVjZSBEZWNpbWFsIGFyaXRobWV0aWMgdG8gZml4IHJvdW5k
aW5nIGVycm9ycyBpbiBudW1iZXIvcmFuZ2UgaW5wdXQgdHlwZXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwMDA5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwaToKKyAgICAgICAgKiB0
ZXN0cy9EZWNpbWFsVGVzdC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpvcGVyYXRvcjw8KToKKyAgICAgICAgKERlY2ltYWxUZXN0KToKKyAgICAgICAg
KERlY2ltYWxTdGVwUmFuZ2UpOgorICAgICAgICAoRGVjaW1hbFRlc3Q6OkRlY2ltYWxTdGVwUmFu
Z2U6OkRlY2ltYWxTdGVwUmFuZ2UpOgorICAgICAgICAoRGVjaW1hbFRlc3Q6OkRlY2ltYWxTdGVw
UmFuZ2U6OmNsYW1wVmFsdWUpOgorICAgICAgICAoRGVjaW1hbFRlc3Q6OkRlY2ltYWxUZXN0Ojpl
bmNvZGUpOgorICAgICAgICAoRGVjaW1hbFRlc3Q6OkRlY2ltYWxUZXN0Ojpmcm9tU3RyaW5nKToK
KyAgICAgICAgKERlY2ltYWxUZXN0OjpEZWNpbWFsVGVzdDo6c3RlcERvd24pOgorICAgICAgICAo
RGVjaW1hbFRlc3Q6OkRlY2ltYWxUZXN0OjpzdGVwVXApOgorICAgICAgICAoRGVjaW1hbFRlc3Q6
OlRFU1RfRik6CisKIDIwMTItMDUtMjIgIEFsZXhhbmRyZSBFbGlhcyAgPGFlbGlhc0Bnb29nbGUu
Y29tPgogCiAgICAgICAgIFtjaHJvbWl1bV0gQXBwbHkgdmlld3BvcnQgdGFnIGluaXRpYWwtc2Nh
bGUgb25seSBvbmNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBi
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDM0NDg0ZThjNTJmM2UwMGEwNmM1
YTJhZjI5MjEzNTVmNGFlOWJhYzUuLmVhNjM3YWE4NmUzNTE2MWMzN2ZkNjE5OTljMDRiNjY2NmY0
NzU2MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xMTAzLDYgKzExMDMsNyBAQCBTRVQoV2Vi
Q29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vQ29udGVudFR5cGUuY3BwCiAgICAgcGxhdGZvcm0v
Q3Jvc3NUaHJlYWRDb3BpZXIuY3BwCiAgICAgcGxhdGZvcm0vRGF0ZUNvbXBvbmVudHMuY3BwCisg
ICAgcGxhdGZvcm0vRGVjaW1hbC5jcHAKICAgICBwbGF0Zm9ybS9EcmFnRGF0YS5jcHAKICAgICBw
bGF0Zm9ybS9EcmFnSW1hZ2UuY3BwCiAgICAgcGxhdGZvcm0vRXZlbnRUcmFjZXIuY3BwCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA2YTA2YzBkZjdhNjhmZmRlMGQwNzc0YjZlNjVk
Njk0NDg0NDZlNmZlLi45NGZmNjk2OWY2YjFlNzhkNTZkZjlhM2RhNjI4YjQ3ZTE3MjI3OGI5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTMxMDcsNiArMzEwNyw4IEBAIHdlYmNv
cmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Vyc29yLmggXAogCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGVDb21wb25lbnRzLmNwcCBcCiAJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vRGF0ZUNvbXBvbmVudHMuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
RGVjaW1hbC5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RlY2ltYWwuaCBcCiAJU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9EcmFnRGF0YS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuY3Bw
IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29y
ZS9UYXJnZXQucHJpCmluZGV4IDA2ODIyODZhYjEyOWE5OGU5ZDdiMWNjZmNjZjVkNzgyMmNkNTQy
MjYuLjVhMGY3OGFhODk1NmM2YjZmNDY3MTQ5YWJjOWZkNmY1MWIwOTYyMDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnBy
aQpAQCAtMTA4MCw2ICsxMDgwLDcgQEAgU09VUkNFUyArPSBcCiAgICAgcGxhdGZvcm0vQ29udGVu
dFR5cGUuY3BwIFwKICAgICBwbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5jcHAgXAogICAgIHBs
YXRmb3JtL0RhdGVDb21wb25lbnRzLmNwcCBcCisgICAgcGxhdGZyb20vRGVjaW1hbC5jcHAgXAog
ICAgIHBsYXRmb3JtL0RyYWdEYXRhLmNwcCBcCiAgICAgcGxhdGZvcm0vRHJhZ0ltYWdlLmNwcCBc
CiAgICAgcGxhdGZvcm0vRXZlbnRUcmFjZXIuY3BwIFwKQEAgLTIxOTMsNiArMjE5NCw3IEBAIEhF
QURFUlMgKz0gXAogICAgIHBsYXRmb3JtL0NvbnRleHRNZW51LmggXAogICAgIHBsYXRmb3JtL0Ny
b3NzVGhyZWFkQ29waWVyLmggXAogICAgIHBsYXRmb3JtL0RhdGVDb21wb25lbnRzLmggXAorICAg
IHBsYXRmb3JtL0RlY2ltYWwuaCBcCiAgICAgcGxhdGZvcm0vRHJhZ0RhdGEuaCBcCiAgICAgcGxh
dGZvcm0vRHJhZ0ltYWdlLmggXAogICAgIHBsYXRmb3JtL0V2ZW50VHJhY2VyLmggXApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCmluZGV4IDQ4MmFjODJjNGMxOTExNGIwNGZjZGVlZmIzNTU1ODdkMmY4ZTk2NDguLmEz
YjVmZDM5ZjU5MTc5NjgyNGU5OTM3NzhjYjhhZTZiMDFlMzVlMTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
QEAgLTI3MSw2ICsyNzEsNyBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL0Nvb2tpZXNTdHJhdGVn
eS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9DdXJzb3IuaCcsCiAgICAgICAgICAgICAncGxh
dGZvcm0vRGF0ZUNvbXBvbmVudHMuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vRGVjaW1hbC5o
JwogICAgICAgICAgICAgJ3BsYXRmb3JtL0RyYWdEYXRhLmgnLAogICAgICAgICAgICAgJ3BsYXRm
b3JtL0RyYWdJbWFnZS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9FdmVudFRyYWNlci5oJywK
QEAgLTMxNDEsNiArMzE0Miw3IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vQ3Jvc3NUaHJlYWRD
b3BpZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vQ3Vyc29yLmNwcCcsCiAgICAgICAgICAg
ICAncGxhdGZvcm0vRGF0ZUNvbXBvbmVudHMuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9E
ZWNpbWFsLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vRHJhZ0RhdGEuY3BwJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9EcmFnSW1hZ2UuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9F
dmVudExvb3AuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qCmluZGV4IDg0NmU2MzFmMDEzNzc4OTlhNWE3MGE0M2U1YjUzOWI1NjEyMTFmYTUuLmRhZDM0
MWIyZThjNjVkNmUyYzI2YzA3YzkyNmI5NzEzYzYwMTFiNjMgMTAwNzU1Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0yNzcyMiw2ICsyNzcyMiwxNCBAQAog
CQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9y
bVxEZWNpbWFsLmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZl
UGF0aD0iLi5ccGxhdGZvcm1cRGVjaW1hbC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxl
CiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxEcmFnRGF0YS5jcHAiCiAJCQkJPgogCQkJ
PC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDViZjJlNzU3ZmE3MGUzMzBlODgzYmQ5YzJiZGVkODJiNmQzYmE0MjAuLjMx
NzhkMjI5ZDhiNmY5ZGFhZGQ2ZDA0ZDgyNjBhMTY0YjE2MjllOGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM3MTEsNiArMzcx
MSw4IEBACiAJCUE1NEE4MkYxMTUyMjhERjYwMEM3MkJBNiAvKiBET01Ob2RlUHJpdmF0ZS5oIGlu
IENvcHkgR2VuZXJhdGVkIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTU0QTgyRUExNTIyOENBMzAwQzcyQkE2IC8qIERPTU5vZGVQcml2YXRlLmggKi87IH07CiAJ
CUE1NzMyQjBBMTM2QTE2MUQwMDVDOEQ3QyAvKiBEYXRlQ29tcG9uZW50cy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTczMkIwODEzNkExNjFEMDA1
QzhEN0MgLyogRGF0ZUNvbXBvbmVudHMuY3BwICovOyB9OwogCQlBNTczMkIwQjEzNkExNjFEMDA1
QzhEN0MgLyogRGF0ZUNvbXBvbmVudHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE1NzMyQjA5MTM2QTE2MUQwMDVDOEQ3QyAvKiBEYXRlQ29tcG9uZW50
cy5oICovOyB9OworCQk0NThBMjgwRjE1NEFCNUU2MDAwMDQwMzcgLyogRGVjaW1hbC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NThBMjgwRjE1NEFC
NUU2MDAwMDQwMzcgLyogRGVjaW1hbC5jcHAgKi87IH07CisJCTQ1OEEyODExMTU0QUI1RkIwMDAw
NDAzNyAvKiBEZWNpbWFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NThBMjgxMTE1NEFCNUZCMDAwMDQwMzcgLyogRGVjaW1hbC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE1NzMyQjBEMTM2QTE2QzQw
MDVDOEQ3QyAvKiBMb2NhbGl6ZWREYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBNTczMkIwQzEzNkExNkM0MDA1QzhEN0MgLyogTG9jYWxpemVkRGF0
ZS5oICovOyB9OwogCQlBNTczMkIwRjEzNkExNzE1MDA1QzhEN0MgLyogTG9jYWxpemVkRGF0ZU5v
bmUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3
MzJCMEUxMzZBMTcxNTAwNUM4RDdDIC8qIExvY2FsaXplZERhdGVOb25lLmNwcCAqLzsgfTsKIAkJ
QTVBQkI3ODcxM0I5MDRCQzAwRjE5N0UzIC8qIExpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVBQkI3ODYxM0I5
MDRCQzAwRjE5N0UzIC8qIExpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5oICovOyB9OwpAQCAtMTA3
NzgsNiArMTA3ODAsOCBAQAogCQlBNTRBODJFQTE1MjI4Q0EzMDBDNzJCQTYgLyogRE9NTm9kZVBy
aXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NTm9kZVByaXZhdGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU3MzJCMDgxMzZBMTYxRDAwNUM4RDdD
IC8qIERhdGVDb21wb25lbnRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IERhdGVDb21wb25lbnRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU3
MzJCMDkxMzZBMTYxRDAwNUM4RDdDIC8qIERhdGVDb21wb25lbnRzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERhdGVDb21wb25lbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTQ1OEEyODBGMTU0QUI1RTYwMDAwNDAzNyAvKiBEZWNpbWFsLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERlY2ltYWwuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0NThBMjgxMTE1NEFCNUZCMDAwMDQwMzcgLyogRGVjaW1hbC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEZWNpbWFsLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUE1NzMyQjBDMTM2QTE2QzQwMDVDOEQ3QyAvKiBMb2NhbGl6ZWREYXRl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExvY2FsaXplZERhdGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU3MzJCMEUxMzZBMTcxNTAwNUM4RDdDIC8qIExv
Y2FsaXplZERhdGVOb25lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IExvY2FsaXplZERhdGVOb25lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTVB
QkI3ODYxM0I5MDRCQzAwRjE5N0UzIC8qIExpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwMzA0LDYgKzIwMzA4LDggQEAKIAkJCQlG
NTg3ODY4NDAyREUzQjg2MDFFQTQxMjIgLyogQ3Vyc29yLmggKi8sCiAJCQkJQTU3MzJCMDgxMzZB
MTYxRDAwNUM4RDdDIC8qIERhdGVDb21wb25lbnRzLmNwcCAqLywKIAkJCQlBNTczMkIwOTEzNkEx
NjFEMDA1QzhEN0MgLyogRGF0ZUNvbXBvbmVudHMuaCAqLywKKwkJCQk0NThBMjgwRTE1NEFCNUU2
MDAwMDQwMzcgLyogRGVjaW1hbC5jcHAgKi8sCisJCQkJNDU4QTI4MTAxNTRBQjVGQjAwMDA0MDM3
IC8qIERlY2ltYWwuaCAqLywKIAkJCQlBNzk1NDY0MjBCNUM0Q0I0MDA3QjQzOEYgLyogRHJhZ0Rh
dGEuY3BwICovLAogCQkJCUE3QjZFNjlEMEIyOTFBOTYwMEQwNTI5RiAvKiBEcmFnRGF0YS5oICov
LAogCQkJCUE3Q0ZCM0NGMEI3RUQxMEEwMDcwQzMyRCAvKiBEcmFnSW1hZ2UuY3BwICovLApAQCAt
Mjc5NDAsNiArMjc5NDYsNyBAQAogCQkJCUZEOEM0NkVCMTU0NjA4RTcwMEE1OTEwQyAvKiBBdWRp
b1NjaGVkdWxlZFNvdXJjZU5vZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNzFBNTdERjExNTRC
RTI1QzAwMDlEMTIwIC8qIFNWR1BhdGhVdGlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NzhEMDJCQzUxNTRBMThERjAwQjYyRDA1IC8qIENTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTQ1OEEyODBGMTU0QUI1RTYwMDAwNDAzNyAvKiBEZWNpbWFsLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUZENjI5RUE0MTU0QjQ3MTYwMDA2RDAyNiAvKiBBdWRpb0Jhc2lj
SW5zcGVjdG9yTm9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMUVDMUUyODE0RkY2MEVFMDBD
OTQ2NjIgLyogSlNOb3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMzFGRTZFNkQxNTAxQTNCRjAwMDRFQkM0IC8qIEpTTm90aWZpY2F0aW9uQ3VzdG9t
LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNl
RGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFu
ZFRpbWVJbnB1dFR5cGUuY3BwCmluZGV4IDc4MmU2NjE5OWQ0ZGEwMjRkNmYyMTIxNGE4MjQ3NWE5
MTEyMmNlMWYuLmI4MmViMWVhZmY3ZGFkMTY1ZmQwOWNiNDQ0NTYyZjI2ZDgwMmVlYWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAKQEAg
LTMzLDYgKzMzLDcgQEAKIAogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVkZSAi
S2V5Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUgIkxvY2FsaXplZERhdGUuaCIKICNpbmNsdWRlIDxs
aW1pdHM+CkBAIC00NywyNyArNDgsMzcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFt
ZXNwYWNlIEhUTUxOYW1lczsKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKLXN0YXRpYyBjb25zdCBk
b3VibGUgbXNlY1Blck1pbnV0ZSA9IDYwICogMTAwMDsKLXN0YXRpYyBjb25zdCBkb3VibGUgbXNl
Y1BlclNlY29uZCA9IDEwMDA7CitzdGF0aWMgY29uc3QgaW50IG1zZWNQZXJNaW51dGUgPSA2MCAq
IDEwMDA7CitzdGF0aWMgY29uc3QgaW50IG1zZWNQZXJTZWNvbmQgPSAxMDAwOworCitzdGF0aWMg
ZG91YmxlIGNvbnZlcnREZWNpbWFsVG9Eb3VibGUoY29uc3QgRGVjaW1hbCYgdmFsdWUpCit7Cisg
ICAgcmV0dXJuIHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKHNlcmlhbGl6ZUZvck51bWJlclR5
cGUodmFsdWUpKTsKK30KKworc3RhdGljIERlY2ltYWwgY29udmVydERvdWJsZVRvRGVjaW1hbChk
b3VibGUgdmFsdWUpCit7CisgICAgcmV0dXJuIHBhcnNlVG9EZWNpbWFsRm9yTnVtYmVyVHlwZShz
ZXJpYWxpemVGb3JOdW1iZXJUeXBlKHZhbHVlKSk7Cit9CiAKIGRvdWJsZSBCYXNlRGF0ZUFuZFRp
bWVJbnB1dFR5cGU6OnZhbHVlQXNEYXRlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gcGFyc2VUb0Rv
dWJsZShlbGVtZW50KCktPnZhbHVlKCksIERhdGVDb21wb25lbnRzOjppbnZhbGlkTWlsbGlzZWNv
bmRzKCkpOworICAgIHJldHVybiBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZShwYXJzZVRvRGVj
aW1hbChlbGVtZW50KCktPnZhbHVlKCksIGNvbnZlcnREb3VibGVUb0RlY2ltYWwoRGF0ZUNvbXBv
bmVudHM6OmludmFsaWRNaWxsaXNlY29uZHMoKSkpLnRvU3RyaW5nKCkpOwogfQogCiB2b2lkIEJh
c2VEYXRlQW5kVGltZUlucHV0VHlwZTo6c2V0VmFsdWVBc0RhdGUoZG91YmxlIHZhbHVlLCBFeGNl
cHRpb25Db2RlJikgY29uc3QKIHsKLSAgICBlbGVtZW50KCktPnNldFZhbHVlKHNlcmlhbGl6ZVdp
dGhNaWxsaXNlY29uZHModmFsdWUpKTsKKyAgICBlbGVtZW50KCktPnNldFZhbHVlKHNlcmlhbGl6
ZVdpdGhNaWxsaXNlY29uZHMoY29udmVydERvdWJsZVRvRGVjaW1hbCh2YWx1ZSkpKTsKIH0KIAog
ZG91YmxlIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6dmFsdWVBc051bWJlcigpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIHBhcnNlVG9Eb3VibGUoZWxlbWVudCgpLT52YWx1ZSgpLCBudW1lcmljX2xp
bWl0czxkb3VibGU+OjpxdWlldF9OYU4oKSk7CisgICAgcmV0dXJuIHBhcnNlVG9Eb3VibGVGb3JO
dW1iZXJUeXBlKHBhcnNlVG9EZWNpbWFsKGVsZW1lbnQoKS0+dmFsdWUoKSwgRGVjaW1hbDo6bmFu
KCkpLnRvU3RyaW5nKCkpOwogfQogCiB2b2lkIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6c2V0
VmFsdWVBc051bWJlcihkb3VibGUgbmV3VmFsdWUsIFRleHRGaWVsZEV2ZW50QmVoYXZpb3IgZXZl
bnRCZWhhdmlvciwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0CiB7Ci0gICAgZWxlbWVudCgpLT5zZXRW
YWx1ZShzZXJpYWxpemUobmV3VmFsdWUpLCBldmVudEJlaGF2aW9yKTsKKyAgICBlbGVtZW50KCkt
PnNldFZhbHVlKHNlcmlhbGl6ZShjb252ZXJ0RG91YmxlVG9EZWNpbWFsKG5ld1ZhbHVlKSksIGV2
ZW50QmVoYXZpb3IpOwogfQogCiBib29sIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6dHlwZU1p
c21hdGNoRm9yKGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0CkBAIC04MCwxMyArOTEsMTMgQEAg
Ym9vbCBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OnR5cGVNaXNtYXRjaCgpIGNvbnN0CiAgICAg
cmV0dXJuIHR5cGVNaXNtYXRjaEZvcihlbGVtZW50KCktPnZhbHVlKCkpOwogfQogCi1kb3VibGUg
QmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpkZWZhdWx0VmFsdWVGb3JTdGVwVXAoKSBjb25zdAor
RGVjaW1hbCBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmRlZmF1bHRWYWx1ZUZvclN0ZXBVcCgp
IGNvbnN0CiB7CiAgICAgZG91YmxlIG1zID0gY3VycmVudFRpbWVNUygpOwogICAgIGRvdWJsZSB1
dGNPZmZzZXQgPSBjYWxjdWxhdGVVVENPZmZzZXQoKTsKICAgICBkb3VibGUgZHN0T2Zmc2V0ID0g
Y2FsY3VsYXRlRFNUT2Zmc2V0KG1zLCB1dGNPZmZzZXQpOwogICAgIGludCBvZmZzZXQgPSBzdGF0
aWNfY2FzdDxpbnQ+KCh1dGNPZmZzZXQgKyBkc3RPZmZzZXQpIC8gbXNQZXJNaW51dGUpOwotICAg
IHJldHVybiBtcyArIChvZmZzZXQgKiBtc1Blck1pbnV0ZSk7CisgICAgcmV0dXJuIGNvbnZlcnRE
b3VibGVUb0RlY2ltYWwobXMgKyAob2Zmc2V0ICogbXNQZXJNaW51dGUpKTsKIH0KIAogYm9vbCBC
YXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmlzU3RlcHBhYmxlKCkgY29uc3QKQEAgLTEwOCwxNCAr
MTE5LDE0IEBAIHZvaWQgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpoYW5kbGVXaGVlbEV2ZW50
KFdoZWVsRXZlbnQqIGV2ZW50KQogICAgICAgICBoYW5kbGVXaGVlbEV2ZW50Rm9yU3BpbkJ1dHRv
bihldmVudCk7CiB9CiAKLWRvdWJsZSBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OnBhcnNlVG9E
b3VibGUoY29uc3QgU3RyaW5nJiBzcmMsIGRvdWJsZSBkZWZhdWx0VmFsdWUpIGNvbnN0CitEZWNp
bWFsIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6cGFyc2VUb0RlY2ltYWwoY29uc3QgU3RyaW5n
JiBzcmMsIGNvbnN0IERlY2ltYWwmIGRlZmF1bHRWYWx1ZSkgY29uc3QKIHsKICAgICBEYXRlQ29t
cG9uZW50cyBkYXRlOwogICAgIGlmICghcGFyc2VUb0RhdGVDb21wb25lbnRzKHNyYywgJmRhdGUp
KQogICAgICAgICByZXR1cm4gZGVmYXVsdFZhbHVlOwogICAgIGRvdWJsZSBtc2VjID0gZGF0ZS5t
aWxsaXNlY29uZHNTaW5jZUVwb2NoKCk7CiAgICAgQVNTRVJUKGlzZmluaXRlKG1zZWMpKTsKLSAg
ICByZXR1cm4gbXNlYzsKKyAgICByZXR1cm4gY29udmVydERvdWJsZVRvRGVjaW1hbChtc2VjKTsK
IH0KIAogYm9vbCBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OnBhcnNlVG9EYXRlQ29tcG9uZW50
cyhjb25zdCBTdHJpbmcmIHNvdXJjZSwgRGF0ZUNvbXBvbmVudHMqIG91dCkgY29uc3QKQEAgLTEy
OCw5ICsxMzksOSBAQCBib29sIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6cGFyc2VUb0RhdGVD
b21wb25lbnRzKGNvbnN0IFN0cmluZyYgc291cmNlLCBEYXRlQwogICAgIHJldHVybiBwYXJzZVRv
RGF0ZUNvbXBvbmVudHNJbnRlcm5hbChzb3VyY2UuY2hhcmFjdGVycygpLCBzb3VyY2UubGVuZ3Ro
KCksIG91dCk7CiB9CiAKLVN0cmluZyBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OnNlcmlhbGl6
ZShkb3VibGUgdmFsdWUpIGNvbnN0CitTdHJpbmcgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpz
ZXJpYWxpemUoY29uc3QgRGVjaW1hbCYgdmFsdWUpIGNvbnN0CiB7Ci0gICAgaWYgKCFpc2Zpbml0
ZSh2YWx1ZSkpCisgICAgaWYgKCF2YWx1ZS5pc0Zpbml0ZSgpKQogICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7CiAgICAgRGF0ZUNvbXBvbmVudHMgZGF0ZTsKICAgICBpZiAoIXNldE1pbGxpc2Vjb25k
VG9EYXRlQ29tcG9uZW50cyh2YWx1ZSwgJmRhdGUpKQpAQCAtMTQwLDE3ICsxNTEsMTcgQEAgU3Ry
aW5nIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6c2VyaWFsaXplKGRvdWJsZSB2YWx1ZSkgY29u
c3QKIAogU3RyaW5nIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6c2VyaWFsaXplV2l0aENvbXBv
bmVudHMoY29uc3QgRGF0ZUNvbXBvbmVudHMmIGRhdGUpIGNvbnN0CiB7Ci0gICAgZG91YmxlIHN0
ZXA7CisgICAgRGVjaW1hbCBzdGVwOwogICAgIGlmICghZWxlbWVudCgpLT5nZXRBbGxvd2VkVmFs
dWVTdGVwKCZzdGVwKSkKICAgICAgICAgcmV0dXJuIGRhdGUudG9TdHJpbmcoKTsKLSAgICBpZiAo
IWZtb2Qoc3RlcCwgbXNlY1Blck1pbnV0ZSkpCisgICAgaWYgKHN0ZXAucmVtYWluZGVyKG1zZWNQ
ZXJNaW51dGUpLmlzWmVybygpKQogICAgICAgICByZXR1cm4gZGF0ZS50b1N0cmluZyhEYXRlQ29t
cG9uZW50czo6Tm9uZSk7Ci0gICAgaWYgKCFmbW9kKHN0ZXAsIG1zZWNQZXJTZWNvbmQpKQorICAg
IGlmIChzdGVwLnJlbWFpbmRlcihtc2VjUGVyU2Vjb25kKS5pc1plcm8oKSkKICAgICAgICAgcmV0
dXJuIGRhdGUudG9TdHJpbmcoRGF0ZUNvbXBvbmVudHM6OlNlY29uZCk7CiAgICAgcmV0dXJuIGRh
dGUudG9TdHJpbmcoRGF0ZUNvbXBvbmVudHM6Ok1pbGxpc2Vjb25kKTsKIH0KIAotU3RyaW5nIEJh
c2VEYXRlQW5kVGltZUlucHV0VHlwZTo6c2VyaWFsaXplV2l0aE1pbGxpc2Vjb25kcyhkb3VibGUg
dmFsdWUpIGNvbnN0CitTdHJpbmcgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpzZXJpYWxpemVX
aXRoTWlsbGlzZWNvbmRzKGNvbnN0IERlY2ltYWwmIHZhbHVlKSBjb25zdAogewogICAgIHJldHVy
biBzZXJpYWxpemUodmFsdWUpOwogfQpAQCAtMTc1LDcgKzE4Niw4IEBAIFN0cmluZyBCYXNlRGF0
ZUFuZFRpbWVJbnB1dFR5cGU6OmNvbnZlcnRGcm9tVmlzaWJsZVZhbHVlKGNvbnN0IFN0cmluZyYg
dmlzaWJsZVZhCiAgICAgaWYgKCFpc2Zpbml0ZShwYXJzZWRWYWx1ZSkpCiAgICAgICAgIHJldHVy
biB2aXNpYmxlVmFsdWU7CiAKLSAgICByZXR1cm4gc2VyaWFsaXplV2l0aE1pbGxpc2Vjb25kcyhw
YXJzZWRWYWx1ZSk7CisgICAgY29uc3QgRGVjaW1hbCB2YWx1ZSA9IGNvbnZlcnREb3VibGVUb0Rl
Y2ltYWwocGFyc2VkVmFsdWUpOworICAgIHJldHVybiB2YWx1ZS5pc0Zpbml0ZSgpID8gc2VyaWFs
aXplV2l0aE1pbGxpc2Vjb25kcyh2YWx1ZSkgOiB2aXNpYmxlVmFsdWU7CiB9CiAKIFN0cmluZyBC
YXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OnNhbml0aXplVmFsdWUoY29uc3QgU3RyaW5nJiBwcm9w
b3NlZFZhbHVlKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0
ZUFuZFRpbWVJbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1l
SW5wdXRUeXBlLmgKaW5kZXggZTkxY2Y2MDg4ZDg1ODliZmQ2MmVmM2Y4NjY1NTQ4OThiMjA4MjUw
Ni4uYTc4YjRjZDI2NWQ3ZDBlZTE4ODg2NDgxMmJjYzA0MmY3MTYyYmRhYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5oCkBAIC00MiwxMyArNDIs
MTMgQEAgY2xhc3MgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlIDogcHVibGljIFRleHRGaWVsZElu
cHV0VHlwZSB7CiBwcm90ZWN0ZWQ6CiAgICAgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlKEhUTUxJ
bnB1dEVsZW1lbnQqIGVsZW1lbnQpIDogVGV4dEZpZWxkSW5wdXRUeXBlKGVsZW1lbnQpIHsgfQog
ICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVLZXlkb3duRXZlbnQoS2V5Ym9hcmRFdmVudCopIE9WRVJS
SURFOwotICAgIHZpcnR1YWwgZG91YmxlIHBhcnNlVG9Eb3VibGUoY29uc3QgU3RyaW5nJiwgZG91
YmxlKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIERlY2ltYWwgcGFyc2VUb0RlY2ltYWwo
Y29uc3QgU3RyaW5nJiwgY29uc3QgRGVjaW1hbCYpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1
YWwgYm9vbCBwYXJzZVRvRGF0ZUNvbXBvbmVudHMoY29uc3QgU3RyaW5nJiwgRGF0ZUNvbXBvbmVu
dHMqKSBjb25zdCBPVkVSUklERTsKICAgICBTdHJpbmcgc2VyaWFsaXplV2l0aENvbXBvbmVudHMo
Y29uc3QgRGF0ZUNvbXBvbmVudHMmKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJv
b2wgcGFyc2VUb0RhdGVDb21wb25lbnRzSW50ZXJuYWwoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBs
ZW5ndGgsIERhdGVDb21wb25lbnRzKikgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBzZXRN
aWxsaXNlY29uZFRvRGF0ZUNvbXBvbmVudHMoZG91YmxlLCBEYXRlQ29tcG9uZW50cyopIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc2V0TWlsbGlzZWNvbmRUb0RhdGVDb21wb25lbnRzKGNv
bnN0IERlY2ltYWwmLCBEYXRlQ29tcG9uZW50cyopIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIERh
dGVDb21wb25lbnRzOjpUeXBlIGRhdGVUeXBlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgZG91
YmxlIHZhbHVlQXNEYXRlKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldFZh
bHVlQXNEYXRlKGRvdWJsZSwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0IE9WRVJSSURFOwpAQCAtNTYs
MTEgKzU2LDExIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHNldFZhbHVlQXNOdW1iZXIo
ZG91YmxlLCBUZXh0RmllbGRFdmVudEJlaGF2aW9yLCBFeGNlcHRpb25Db2RlJikgY29uc3QgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCBib29sIHR5cGVNaXNtYXRjaEZvcihjb25zdCBTdHJpbmcmKSBj
b25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgdHlwZU1pc21hdGNoKCkgY29uc3QgT1ZF
UlJJREU7Ci0gICAgdmlydHVhbCBkb3VibGUgZGVmYXVsdFZhbHVlRm9yU3RlcFVwKCkgY29uc3Qg
T1ZFUlJJREU7CisgICAgdmlydHVhbCBEZWNpbWFsIGRlZmF1bHRWYWx1ZUZvclN0ZXBVcCgpIGNv
bnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBpc1N0ZXBwYWJsZSgpIGNvbnN0IE9WRVJS
SURFOwogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVXaGVlbEV2ZW50KFdoZWVsRXZlbnQqKSBPVkVS
UklERTsKLSAgICB2aXJ0dWFsIFN0cmluZyBzZXJpYWxpemUoZG91YmxlKSBjb25zdCBPVkVSUklE
RTsKLSAgICB2aXJ0dWFsIFN0cmluZyBzZXJpYWxpemVXaXRoTWlsbGlzZWNvbmRzKGRvdWJsZSkg
Y29uc3Q7CisgICAgdmlydHVhbCBTdHJpbmcgc2VyaWFsaXplKGNvbnN0IERlY2ltYWwmKSBjb25z
dCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFN0cmluZyBzZXJpYWxpemVXaXRoTWlsbGlzZWNvbmRz
KGNvbnN0IERlY2ltYWwmKSBjb25zdDsKICAgICB2aXJ0dWFsIFN0cmluZyB2aXNpYmxlVmFsdWUo
KSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIFN0cmluZyBjb252ZXJ0RnJvbVZpc2libGVW
YWx1ZShjb25zdCBTdHJpbmcmKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIFN0cmluZyBz
YW5pdGl6ZVZhbHVlKGNvbnN0IFN0cmluZyYpIGNvbnN0IE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9EYXRlSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvRGF0ZUlucHV0VHlwZS5jcHAKaW5kZXggODhiMzEyMDY1NTQyZjI4YmYwZjlkOGQ2MTMzZWUx
YjkxZWJiMjYxOS4uZDhkNjI2OTU1MjRiODQxYTNmZjBhZTVmYTU1MTVmNDhhNjNmOGEyOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlSW5wdXRUeXBlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0RhdGVJbnB1dFR5cGUuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5j
bHVkZSAiRGF0ZUNvbXBvbmVudHMuaCIKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCiAj
aW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2lu
Y2x1ZGUgIktleWJvYXJkRXZlbnQuaCIKICNpbmNsdWRlICJMb2NhbGl6ZWREYXRlLmgiCiAjaW5j
bHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KQEAgLTQ1LDkgKzQ2LDkgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1zdGF0aWMgY29uc3QgZG91Ymxl
IGRhdGVEZWZhdWx0U3RlcCA9IDEuMDsKLXN0YXRpYyBjb25zdCBkb3VibGUgZGF0ZURlZmF1bHRT
dGVwQmFzZSA9IDAuMDsKLXN0YXRpYyBjb25zdCBkb3VibGUgZGF0ZVN0ZXBTY2FsZUZhY3RvciA9
IDg2NDAwMDAwLjA7CitzdGF0aWMgY29uc3QgaW50ICBkYXRlRGVmYXVsdFN0ZXAgPSAxOworc3Rh
dGljIGNvbnN0IGludCAgZGF0ZURlZmF1bHRTdGVwQmFzZSA9IDA7CitzdGF0aWMgY29uc3QgaW50
ICBkYXRlU3RlcFNjYWxlRmFjdG9yID0gODY0MDAwMDA7CiAKIGlubGluZSBEYXRlSW5wdXRUeXBl
OjpEYXRlSW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgOiBCYXNlRGF0
ZUFuZFRpbWVJbnB1dFR5cGUoZWxlbWVudCkKQEAgLTczLDEwICs3NCwxMCBAQCBTdGVwUmFuZ2Ug
RGF0ZUlucHV0VHlwZTo6Y3JlYXRlU3RlcFJhbmdlKEFueVN0ZXBIYW5kbGluZyBhbnlTdGVwSGFu
ZGxpbmcpIGNvbnN0CiB7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdGVwUmFuZ2U6
OlN0ZXBEZXNjcmlwdGlvbiwgc3RlcERlc2NyaXB0aW9uLCAoZGF0ZURlZmF1bHRTdGVwLCBkYXRl
RGVmYXVsdFN0ZXBCYXNlLCBkYXRlU3RlcFNjYWxlRmFjdG9yLCBTdGVwUmFuZ2U6OlBhcnNlZFN0
ZXBWYWx1ZVNob3VsZEJlSW50ZWdlcikpOwogCi0gICAgZG91YmxlIHN0ZXBCYXNlID0gcGFyc2VU
b0RvdWJsZShlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUobWluQXR0ciksIDApOwotICAgIGRv
dWJsZSBtaW5pbXVtID0gcGFyc2VUb0RvdWJsZShlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUo
bWluQXR0ciksIERhdGVDb21wb25lbnRzOjptaW5pbXVtRGF0ZSgpKTsKLSAgICBkb3VibGUgbWF4
aW11bSA9IHBhcnNlVG9Eb3VibGUoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1heEF0dHIp
LCBEYXRlQ29tcG9uZW50czo6bWF4aW11bURhdGUoKSk7Ci0gICAgU3RlcFJhbmdlOjpEb3VibGVX
aXRoRGVjaW1hbFBsYWNlc09yTWlzc2luZyBzdGVwID0gU3RlcFJhbmdlOjpwYXJzZVN0ZXAoYW55
U3RlcEhhbmRsaW5nLCBzdGVwRGVzY3JpcHRpb24sIGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0
ZShzdGVwQXR0cikpOworICAgIGNvbnN0IERlY2ltYWwgc3RlcEJhc2UgPSBwYXJzZVRvRGVjaW1h
bChlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUobWluQXR0ciksIDApOworICAgIGNvbnN0IERl
Y2ltYWwgbWluaW11bSA9IHBhcnNlVG9EZWNpbWFsKGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0
ZShtaW5BdHRyKSwgcGFyc2VUb0RlY2ltYWxGb3JOdW1iZXJUeXBlKHNlcmlhbGl6ZUZvck51bWJl
clR5cGUoRGF0ZUNvbXBvbmVudHM6Om1pbmltdW1EYXRlKCkpKSk7CisgICAgY29uc3QgRGVjaW1h
bCBtYXhpbXVtID0gcGFyc2VUb0RlY2ltYWwoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1h
eEF0dHIpLCBwYXJzZVRvRGVjaW1hbEZvck51bWJlclR5cGUoc2VyaWFsaXplRm9yTnVtYmVyVHlw
ZShEYXRlQ29tcG9uZW50czo6bWF4aW11bURhdGUoKSkpKTsKKyAgICBjb25zdCBTdGVwUmFuZ2U6
OkRlY2ltYWxPck1pc3Npbmcgc3RlcCA9IFN0ZXBSYW5nZTo6cGFyc2VTdGVwKGFueVN0ZXBIYW5k
bGluZywgc3RlcERlc2NyaXB0aW9uLCBlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUoc3RlcEF0
dHIpKTsKICAgICByZXR1cm4gU3RlcFJhbmdlKHN0ZXBCYXNlLCBtaW5pbXVtLCBtYXhpbXVtLCBz
dGVwLCBzdGVwRGVzY3JpcHRpb24pOwogfQogCkBAIC04NywxMCArODgsMTAgQEAgYm9vbCBEYXRl
SW5wdXRUeXBlOjpwYXJzZVRvRGF0ZUNvbXBvbmVudHNJbnRlcm5hbChjb25zdCBVQ2hhciogY2hh
cmFjdGVycywgdW5zaWcKICAgICByZXR1cm4gb3V0LT5wYXJzZURhdGUoY2hhcmFjdGVycywgbGVu
Z3RoLCAwLCBlbmQpICYmIGVuZCA9PSBsZW5ndGg7CiB9CiAKLWJvb2wgRGF0ZUlucHV0VHlwZTo6
c2V0TWlsbGlzZWNvbmRUb0RhdGVDb21wb25lbnRzKGRvdWJsZSB2YWx1ZSwgRGF0ZUNvbXBvbmVu
dHMqIGRhdGUpIGNvbnN0Citib29sIERhdGVJbnB1dFR5cGU6OnNldE1pbGxpc2Vjb25kVG9EYXRl
Q29tcG9uZW50cyhjb25zdCBEZWNpbWFsJiB2YWx1ZSwgRGF0ZUNvbXBvbmVudHMqIGRhdGUpIGNv
bnN0CiB7CiAgICAgQVNTRVJUKGRhdGUpOwotICAgIHJldHVybiBkYXRlLT5zZXRNaWxsaXNlY29u
ZHNTaW5jZUVwb2NoRm9yRGF0ZSh2YWx1ZSk7CisgICAgcmV0dXJuIGRhdGUtPnNldE1pbGxpc2Vj
b25kc1NpbmNlRXBvY2hGb3JEYXRlKHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKHNlcmlhbGl6
ZUZvck51bWJlclR5cGUodmFsdWUpKSk7CiB9CiAKIGJvb2wgRGF0ZUlucHV0VHlwZTo6aXNEYXRl
RmllbGQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlSW5wdXRU
eXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVJbnB1dFR5cGUuaAppbmRleCAyZmFkYzQ3
YjQ4Y2QwYTM5ZTAwZjQzYjNiZjExYmEwYTliMjFjMDFmLi44Mzg0M2ExZGFkYjU1YWQ0OWI4ZTU1
Njc3MTFhNWFmMTgzY2RlYWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVJ
bnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVJbnB1dFR5cGUuaApAQCAt
NTAsNyArNTAsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgRGF0ZUNvbXBvbmVudHM6OlR5cGUg
ZGF0ZVR5cGUoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIFN0ZXBSYW5nZSBjcmVhdGVT
dGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5nKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJv
b2wgcGFyc2VUb0RhdGVDb21wb25lbnRzSW50ZXJuYWwoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBs
ZW5ndGgsIERhdGVDb21wb25lbnRzKikgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29s
IHNldE1pbGxpc2Vjb25kVG9EYXRlQ29tcG9uZW50cyhkb3VibGUsIERhdGVDb21wb25lbnRzKikg
Y29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHNldE1pbGxpc2Vjb25kVG9EYXRlQ29t
cG9uZW50cyhjb25zdCBEZWNpbWFsJiwgRGF0ZUNvbXBvbmVudHMqKSBjb25zdCBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIGJvb2wgaXNEYXRlRmllbGQoKSBjb25zdCBPVkVSUklERTsKICNpZiBFTkFC
TEUoQ0FMRU5EQVJfUElDS0VSKQogICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVTaGFkb3dTdWJ0cmVl
KCkgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRl
eCA0NzhkZTQzOGRmYzhiNGY1ZDZkNzgyYjBlNzQyM2ZmOWJjMzM4OGI2Li4zODI2ODM4YzNhNDYx
NzE0ZWRkMGM2ODdiYTk0ZTZmNmE3N2VmN2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElu
cHV0RWxlbWVudC5jcHAKQEAgLTI3Myw3ICsyNzMsNyBAQCBib29sIEhUTUxJbnB1dEVsZW1lbnQ6
OnN0ZXBNaXNtYXRjaCgpIGNvbnN0CiAgICAgcmV0dXJuIHdpbGxWYWxpZGF0ZSgpICYmIG1faW5w
dXRUeXBlLT5zdGVwTWlzbWF0Y2godmFsdWUoKSk7CiB9CiAKLWJvb2wgSFRNTElucHV0RWxlbWVu
dDo6Z2V0QWxsb3dlZFZhbHVlU3RlcChkb3VibGUqIHN0ZXApIGNvbnN0Citib29sIEhUTUxJbnB1
dEVsZW1lbnQ6OmdldEFsbG93ZWRWYWx1ZVN0ZXAoRGVjaW1hbCogc3RlcCkgY29uc3QKIHsKICAg
ICByZXR1cm4gbV9pbnB1dFR5cGUtPmdldEFsbG93ZWRWYWx1ZVN0ZXAoc3RlcCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCmluZGV4IDY5ZDBmMTdkNjE0ZmE1ODFmZDZj
ZGJmYzU4ZGZmYjE1NTljNGMwYmQuLjA4NmQ4ZGM0ZjBiOTNlODA2ZGVkOTIwNDA2MGRjMzVkZDll
NDM5OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCkBAIC02NSw3ICs2
NSw3IEBAIHB1YmxpYzoKICAgICBkb3VibGUgbWF4aW11bSgpIGNvbnN0OwogICAgIC8vIFNldHMg
dGhlICJhbGxvd2VkIHZhbHVlIHN0ZXAiIGRlZmluZWQgaW4gdGhlIEhUTUwgc3BlYyB0byB0aGUg
c3BlY2lmaWVkIGRvdWJsZSBwb2ludGVyLgogICAgIC8vIFJldHVybnMgZmFsc2UgaWYgdGhlcmUg
aXMgbm8gImFsbG93ZWQgdmFsdWUgc3RlcC4iCi0gICAgYm9vbCBnZXRBbGxvd2VkVmFsdWVTdGVw
KGRvdWJsZSopIGNvbnN0OworICAgIGJvb2wgZ2V0QWxsb3dlZFZhbHVlU3RlcChEZWNpbWFsKikg
Y29uc3Q7CiAgICAgU3RlcFJhbmdlIGNyZWF0ZVN0ZXBSYW5nZShBbnlTdGVwSGFuZGxpbmcpIGNv
bnN0OwogCiAgICAgLy8gSW1wbGVtZW50YXRpb25zIG9mIEhUTUxJbnB1dEVsZW1lbnQ6OnN0ZXBV
cCgpIGFuZCBzdGVwRG93bigpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1
dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCmluZGV4IDU2YTdh
YTEzNzFkNjBiZTE1ZTQ2NjIwNzU4MTEzN2FlMjc2OTRjZWUuLjIyMzM1Zjg0MTIyOTExMGNjZGZh
MGJkNDI1NTA4MmU2NGU5ODQxZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5w
dXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKQEAgLTI1
MCwxMSArMjUwLDggQEAgYm9vbCBJbnB1dFR5cGU6OnJhbmdlVW5kZXJmbG93KGNvbnN0IFN0cmlu
ZyYgdmFsdWUpIGNvbnN0CiAgICAgaWYgKCFpc1N0ZXBwYWJsZSgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICBkb3VibGUgZG91YmxlVmFsdWUgPSBwYXJzZVRvRG91YmxlKHZhbHVlLCBu
dW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKSk7Ci0gICAgaWYgKGlzbmFuKGRvdWJs
ZVZhbHVlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIGRvdWJsZVZhbHVl
IDwgY3JlYXRlU3RlcFJhbmdlKFJlamVjdEFueSkubWluaW11bSgpOworICAgIGNvbnN0IERlY2lt
YWwgbnVtZXJpY1ZhbHVlID0gcGFyc2VUb0RlY2ltYWwodmFsdWUpOworICAgIHJldHVybiBudW1l
cmljVmFsdWUuaXNGaW5pdGUoKSAmJiBudW1lcmljVmFsdWUgPCBjcmVhdGVTdGVwUmFuZ2UoUmVq
ZWN0QW55KS5taW5pbXVtKCk7CiB9CiAKIGJvb2wgSW5wdXRUeXBlOjpyYW5nZU92ZXJmbG93KGNv
bnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0CkBAIC0yNjIsMjYgKzI1OSwyMyBAQCBib29sIElucHV0
VHlwZTo6cmFuZ2VPdmVyZmxvdyhjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAogICAgIGlmICgh
aXNTdGVwcGFibGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgZG91YmxlIGRvdWJs
ZVZhbHVlID0gcGFyc2VUb0RvdWJsZSh2YWx1ZSwgbnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVp
ZXRfTmFOKCkpOwotICAgIGlmIChpc25hbihkb3VibGVWYWx1ZSkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIHJldHVybiBkb3VibGVWYWx1ZSA+IGNyZWF0ZVN0ZXBSYW5nZShSZWplY3RB
bnkpLm1heGltdW0oKTsKKyAgICBjb25zdCBEZWNpbWFsIG51bWVyaWNWYWx1ZSA9IHBhcnNlVG9E
ZWNpbWFsKHZhbHVlKTsKKyAgICByZXR1cm4gbnVtZXJpY1ZhbHVlLmlzRmluaXRlKCkgJiYgbnVt
ZXJpY1ZhbHVlID4gY3JlYXRlU3RlcFJhbmdlKFJlamVjdEFueSkubWF4aW11bSgpOwogfQogCi1k
b3VibGUgSW5wdXRUeXBlOjpkZWZhdWx0VmFsdWVGb3JTdGVwVXAoKSBjb25zdAorRGVjaW1hbCBJ
bnB1dFR5cGU6OmRlZmF1bHRWYWx1ZUZvclN0ZXBVcCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIDA7
CiB9CiAKIGRvdWJsZSBJbnB1dFR5cGU6Om1pbmltdW0oKSBjb25zdAogewotICAgIHJldHVybiBj
cmVhdGVTdGVwUmFuZ2UoUmVqZWN0QW55KS5taW5pbXVtKCk7CisgICAgcmV0dXJuIHBhcnNlVG9E
b3VibGVGb3JOdW1iZXJUeXBlKGNyZWF0ZVN0ZXBSYW5nZShSZWplY3RBbnkpLm1pbmltdW0oKS50
b1N0cmluZygpKTsKIH0KIAogZG91YmxlIElucHV0VHlwZTo6bWF4aW11bSgpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIGNyZWF0ZVN0ZXBSYW5nZShSZWplY3RBbnkpLm1heGltdW0oKTsKKyAgICByZXR1
cm4gcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUoY3JlYXRlU3RlcFJhbmdlKFJlamVjdEFueSku
bWF4aW11bSgpLnRvU3RyaW5nKCkpOwogfQogCiBib29sIElucHV0VHlwZTo6c2l6ZVNob3VsZElu
Y2x1ZGVEZWNvcmF0aW9uKGludCwgaW50JiBwcmVmZXJyZWRTaXplKSBjb25zdApAQCAtMjk1LDEy
ICsyODksMTIgQEAgYm9vbCBJbnB1dFR5cGU6OmlzSW5SYW5nZShjb25zdCBTdHJpbmcmIHZhbHVl
KSBjb25zdAogICAgIGlmICghaXNTdGVwcGFibGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgZG91YmxlIGRvdWJsZVZhbHVlID0gcGFyc2VUb0RvdWJsZSh2YWx1ZSwgbnVtZXJpY19s
aW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCkpOwotICAgIGlmIChpc25hbihkb3VibGVWYWx1ZSkp
CisgICAgY29uc3QgRGVjaW1hbCYgbnVtZXJpY1ZhbHVlID0gcGFyc2VUb0RlY2ltYWwodmFsdWUp
OworICAgIGlmICghbnVtZXJpY1ZhbHVlLmlzRmluaXRlKCkpCiAgICAgICAgIHJldHVybiB0cnVl
OwogCi0gICAgU3RlcFJhbmdlIHN0ZXBSYW5nZShjcmVhdGVTdGVwUmFuZ2UoUmVqZWN0QW55KSk7
Ci0gICAgcmV0dXJuIGRvdWJsZVZhbHVlID49IHN0ZXBSYW5nZS5taW5pbXVtKCkgJiYgZG91Ymxl
VmFsdWUgPD0gc3RlcFJhbmdlLm1heGltdW0oKTsKKyAgICBjb25zdCBTdGVwUmFuZ2Ugc3RlcFJh
bmdlKGNyZWF0ZVN0ZXBSYW5nZShSZWplY3RBbnkpKTsKKyAgICByZXR1cm4gbnVtZXJpY1ZhbHVl
ID49IHN0ZXBSYW5nZS5taW5pbXVtKCkgJiYgbnVtZXJpY1ZhbHVlIDw9IHN0ZXBSYW5nZS5tYXhp
bXVtKCk7CiB9CiAKIGJvb2wgSW5wdXRUeXBlOjppc091dE9mUmFuZ2UoY29uc3QgU3RyaW5nJiB2
YWx1ZSkgY29uc3QKQEAgLTMwOCwxMiArMzAyLDEyIEBAIGJvb2wgSW5wdXRUeXBlOjppc091dE9m
UmFuZ2UoY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKICAgICBpZiAoIWlzU3RlcHBhYmxlKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGRvdWJsZSBkb3VibGVWYWx1ZSA9IHBhcnNl
VG9Eb3VibGUodmFsdWUsIG51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpKTsKLSAg
ICBpZiAoaXNuYW4oZG91YmxlVmFsdWUpKQorICAgIGNvbnN0IERlY2ltYWwmIG51bWVyaWNWYWx1
ZSA9IHBhcnNlVG9EZWNpbWFsKHZhbHVlKTsKKyAgICBpZiAoIW51bWVyaWNWYWx1ZS5pc0Zpbml0
ZSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIFN0ZXBSYW5nZSBzdGVwUmFuZ2UoY3Jl
YXRlU3RlcFJhbmdlKFJlamVjdEFueSkpOwotICAgIHJldHVybiBkb3VibGVWYWx1ZSA8IHN0ZXBS
YW5nZS5taW5pbXVtKCkgfHwgZG91YmxlVmFsdWUgPiBzdGVwUmFuZ2UubWF4aW11bSgpOworICAg
IGNvbnN0IFN0ZXBSYW5nZSBzdGVwUmFuZ2UoY3JlYXRlU3RlcFJhbmdlKFJlamVjdEFueSkpOwor
ICAgIHJldHVybiBudW1lcmljVmFsdWUgPCBzdGVwUmFuZ2UubWluaW11bSgpIHx8IG51bWVyaWNW
YWx1ZSA+IHN0ZXBSYW5nZS5tYXhpbXVtKCk7CiB9CiAKIGJvb2wgSW5wdXRUeXBlOjpzdGVwTWlz
bWF0Y2goY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKQEAgLTMyMSwxMSArMzE1LDExIEBAIGJv
b2wgSW5wdXRUeXBlOjpzdGVwTWlzbWF0Y2goY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKICAg
ICBpZiAoIWlzU3RlcHBhYmxlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGRvdWJs
ZSBkb3VibGVWYWx1ZSA9IHBhcnNlVG9Eb3VibGUodmFsdWUsIG51bWVyaWNfbGltaXRzPGRvdWJs
ZT46OnF1aWV0X05hTigpKTsKLSAgICBpZiAoaXNuYW4oZG91YmxlVmFsdWUpKQorICAgIGNvbnN0
IERlY2ltYWwmIG51bWVyaWNWYWx1ZSA9IHBhcnNlVG9EZWNpbWFsKHZhbHVlKTsKKyAgICBpZiAo
IW51bWVyaWNWYWx1ZS5pc0Zpbml0ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBy
ZXR1cm4gY3JlYXRlU3RlcFJhbmdlKFJlamVjdEFueSkuc3RlcE1pc21hdGNoKGRvdWJsZVZhbHVl
KTsKKyAgICByZXR1cm4gY3JlYXRlU3RlcFJhbmdlKFJlamVjdEFueSkuc3RlcE1pc21hdGNoKG51
bWVyaWNWYWx1ZSk7CiB9CiAKIFN0cmluZyBJbnB1dFR5cGU6OnR5cGVNaXNtYXRjaFRleHQoKSBj
b25zdApAQCAtMzU5LDIxICszNTMsMjEgQEAgU3RyaW5nIElucHV0VHlwZTo6dmFsaWRhdGlvbk1l
c3NhZ2UoKSBjb25zdAogICAgIGlmICghaXNTdGVwcGFibGUoKSkKICAgICAgICAgcmV0dXJuIGVt
cHR5U3RyaW5nKCk7CiAKLSAgICBkb3VibGUgZG91YmxlVmFsdWUgPSBwYXJzZVRvRG91YmxlKHZh
bHVlLCBudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKSk7Ci0gICAgaWYgKGlzbmFu
KGRvdWJsZVZhbHVlKSkKKyAgICBjb25zdCBEZWNpbWFsJiBudW1lcmljVmFsdWUgPSBwYXJzZVRv
RGVjaW1hbCh2YWx1ZSk7CisgICAgaWYgKCFudW1lcmljVmFsdWUuaXNGaW5pdGUoKSkKICAgICAg
ICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKLSAgICBTdGVwUmFuZ2Ugc3RlcFJhbmdlKGNyZWF0
ZVN0ZXBSYW5nZShSZWplY3RBbnkpKTsKKyAgICBjb25zdCBTdGVwUmFuZ2Ugc3RlcFJhbmdlKGNy
ZWF0ZVN0ZXBSYW5nZShSZWplY3RBbnkpKTsKIAotICAgIGlmIChkb3VibGVWYWx1ZSA8IHN0ZXBS
YW5nZS5taW5pbXVtKCkpCisgICAgaWYgKG51bWVyaWNWYWx1ZSA8IHN0ZXBSYW5nZS5taW5pbXVt
KCkpCiAgICAgICAgIHJldHVybiB2YWxpZGF0aW9uTWVzc2FnZVJhbmdlVW5kZXJmbG93VGV4dChz
ZXJpYWxpemUoc3RlcFJhbmdlLm1pbmltdW0oKSkpOwogCi0gICAgaWYgKGRvdWJsZVZhbHVlIDwg
c3RlcFJhbmdlLm1heGltdW0oKSkKKyAgICBpZiAobnVtZXJpY1ZhbHVlIDwgc3RlcFJhbmdlLm1h
eGltdW0oKSkKICAgICAgICAgcmV0dXJuIHZhbGlkYXRpb25NZXNzYWdlUmFuZ2VPdmVyZmxvd1Rl
eHQoc2VyaWFsaXplKHN0ZXBSYW5nZS5tYXhpbXVtKCkpKTsKIAotICAgIGlmIChzdGVwUmFuZ2Uu
c3RlcE1pc21hdGNoKGRvdWJsZVZhbHVlKSkgeworICAgIGlmIChzdGVwUmFuZ2Uuc3RlcE1pc21h
dGNoKG51bWVyaWNWYWx1ZSkpIHsKICAgICAgICAgY29uc3QgU3RyaW5nIHN0ZXBTdHJpbmcgPSBz
dGVwUmFuZ2UuaGFzU3RlcCgpID8gc2VyaWFsaXplRm9yTnVtYmVyVHlwZShzdGVwUmFuZ2Uuc3Rl
cCgpIC8gc3RlcFJhbmdlLnN0ZXBTY2FsZUZhY3RvcigpKSA6IGVtcHR5U3RyaW5nKCk7Ci0gICAg
ICAgIHJldHVybiB2YWxpZGF0aW9uTWVzc2FnZVN0ZXBNaXNtYXRjaFRleHQoc2VyaWFsaXplKHN0
ZXBSYW5nZS5zdGVwQmFzZSgpKSwgc3RlcFN0cmluZyk7CisgICAgICAgIHJldHVybiB2YWxpZGF0
aW9uTWVzc2FnZVN0ZXBNaXNtYXRjaFRleHQoc3RlcFJhbmdlLnN0ZXBCYXNlKCkudG9TdHJpbmco
KSwgc3RlcFN0cmluZyk7CiAgICAgfQogCiAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CkBAIC00
NTIsMTcgKzQ0NiwxNSBAQCB2b2lkIElucHV0VHlwZTo6ZGVzdHJveVNoYWRvd1N1YnRyZWUoKQog
ICAgIH0KIH0KIAotZG91YmxlIElucHV0VHlwZTo6cGFyc2VUb0RvdWJsZShjb25zdCBTdHJpbmcm
LCBkb3VibGUgZGVmYXVsdFZhbHVlKSBjb25zdAorRGVjaW1hbCBJbnB1dFR5cGU6OnBhcnNlVG9E
ZWNpbWFsKGNvbnN0IFN0cmluZyYsIGNvbnN0IERlY2ltYWwmIGRlZmF1bHRWYWx1ZSkgY29uc3QK
IHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gZGVmYXVsdFZhbHVlOwog
fQogCi1kb3VibGUgSW5wdXRUeXBlOjpwYXJzZVRvRG91YmxlV2l0aERlY2ltYWxQbGFjZXMoY29u
c3QgU3RyaW5nJiBzcmMsIGRvdWJsZSBkZWZhdWx0VmFsdWUsIHVuc2lnbmVkICpkZWNpbWFsUGxh
Y2VzKSBjb25zdAorRGVjaW1hbCBJbnB1dFR5cGU6OnBhcnNlVG9EZWNpbWFsKGNvbnN0IFN0cmlu
ZyYgc3RyaW5nKSBjb25zdAogewotICAgIGlmIChkZWNpbWFsUGxhY2VzKQotICAgICAgICAqZGVj
aW1hbFBsYWNlcyA9IDA7Ci0gICAgcmV0dXJuIHBhcnNlVG9Eb3VibGUoc3JjLCBkZWZhdWx0VmFs
dWUpOworICAgIHJldHVybiBwYXJzZVRvRGVjaW1hbChzdHJpbmcsIERlY2ltYWw6Om5hbigpKTsK
IH0KIAogYm9vbCBJbnB1dFR5cGU6OnBhcnNlVG9EYXRlQ29tcG9uZW50cyhjb25zdCBTdHJpbmcm
LCBEYXRlQ29tcG9uZW50cyopIGNvbnN0CkBAIC00NzEsNyArNDYzLDcgQEAgYm9vbCBJbnB1dFR5
cGU6OnBhcnNlVG9EYXRlQ29tcG9uZW50cyhjb25zdCBTdHJpbmcmLCBEYXRlQ29tcG9uZW50cyop
IGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1TdHJpbmcgSW5wdXRUeXBlOjpzZXJpYWxp
emUoZG91YmxlKSBjb25zdAorU3RyaW5nIElucHV0VHlwZTo6c2VyaWFsaXplKGNvbnN0IERlY2lt
YWwmKSBjb25zdAogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBTdHJp
bmcoKTsKQEAgLTg1OCwyOCArODUwLDI2IEBAIHVuc2lnbmVkIElucHV0VHlwZTo6d2lkdGgoKSBj
b25zdAogICAgIHJldHVybiAwOwogfQogCi12b2lkIElucHV0VHlwZTo6YXBwbHlTdGVwKGRvdWJs
ZSBjb3VudCwgQW55U3RlcEhhbmRsaW5nIGFueVN0ZXBIYW5kbGluZywgVGV4dEZpZWxkRXZlbnRC
ZWhhdmlvciBldmVudEJlaGF2aW9yLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgSW5wdXRUeXBl
OjphcHBseVN0ZXAoaW50IGNvdW50LCBBbnlTdGVwSGFuZGxpbmcgYW55U3RlcEhhbmRsaW5nLCBU
ZXh0RmllbGRFdmVudEJlaGF2aW9yIGV2ZW50QmVoYXZpb3IsIEV4Y2VwdGlvbkNvZGUmIGVjKQog
ewotICAgIFN0ZXBSYW5nZSBzdGVwUmFuZ2UoY3JlYXRlU3RlcFJhbmdlKGFueVN0ZXBIYW5kbGlu
ZykpOworICAgIGNvbnN0IFN0ZXBSYW5nZSBzdGVwUmFuZ2UoY3JlYXRlU3RlcFJhbmdlKGFueVN0
ZXBIYW5kbGluZykpOwogICAgIGlmICghc3RlcFJhbmdlLmhhc1N0ZXAoKSkgewogICAgICAgICBl
YyA9IElOVkFMSURfU1RBVEVfRVJSOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgY29u
c3QgZG91YmxlIG5hbiA9IG51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpOwotICAg
IHVuc2lnbmVkIGN1cnJlbnREZWNpbWFsUGxhY2VzOwotICAgIGRvdWJsZSBjdXJyZW50ID0gcGFy
c2VUb0RvdWJsZVdpdGhEZWNpbWFsUGxhY2VzKGVsZW1lbnQoKS0+dmFsdWUoKSwgbmFuLCAmY3Vy
cmVudERlY2ltYWxQbGFjZXMpOwotICAgIGlmICghaXNmaW5pdGUoY3VycmVudCkpIHsKKyAgICBj
b25zdCBEZWNpbWFsIGN1cnJlbnQgPSBwYXJzZVRvRGVjaW1hbChlbGVtZW50KCktPnZhbHVlKCkp
OworICAgIGlmICghY3VycmVudC5pc0Zpbml0ZSgpKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9T
VEFURV9FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgZG91YmxlIG5ld1ZhbHVlID0g
Y3VycmVudCArIHN0ZXBSYW5nZS5zdGVwKCkgKiBjb3VudDsKLSAgICBpZiAoaXNpbmYobmV3VmFs
dWUpKSB7CisgICAgRGVjaW1hbCBuZXdWYWx1ZSA9IGN1cnJlbnQgKyBzdGVwUmFuZ2Uuc3RlcCgp
ICogY291bnQ7CisgICAgaWYgKCFuZXdWYWx1ZS5pc0Zpbml0ZSgpKSB7CiAgICAgICAgIGVjID0g
SU5WQUxJRF9TVEFURV9FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBkb3VibGUg
YWNjZXB0YWJsZUVycm9yVmFsdWUgPSBzdGVwUmFuZ2UuYWNjZXB0YWJsZUVycm9yKCk7CisgICAg
Y29uc3QgRGVjaW1hbCBhY2NlcHRhYmxlRXJyb3JWYWx1ZSA9IHN0ZXBSYW5nZS5hY2NlcHRhYmxl
RXJyb3IoKTsKICAgICBpZiAobmV3VmFsdWUgLSBzdGVwUmFuZ2UubWluaW11bSgpIDwgLWFjY2Vw
dGFibGVFcnJvclZhbHVlKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CiAgICAg
ICAgIHJldHVybjsKQEAgLTg4OSw3ICs4NzksNyBAQCB2b2lkIElucHV0VHlwZTo6YXBwbHlTdGVw
KGRvdWJsZSBjb3VudCwgQW55U3RlcEhhbmRsaW5nIGFueVN0ZXBIYW5kbGluZywgVGV4dEZpZQog
CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBzdGVwU3RyaW5nID0gZWxlbWVudCgpLT5mYXN0R2V0
QXR0cmlidXRlKHN0ZXBBdHRyKTsKICAgICBpZiAoIWVxdWFsSWdub3JpbmdDYXNlKHN0ZXBTdHJp
bmcsICJhbnkiKSkKLSAgICAgICAgbmV3VmFsdWUgPSBzdGVwUmFuZ2UuYWxpZ25WYWx1ZUZvclN0
ZXAoY3VycmVudCwgY3VycmVudERlY2ltYWxQbGFjZXMsIG5ld1ZhbHVlKTsKKyAgICAgICAgbmV3
VmFsdWUgPSBzdGVwUmFuZ2UuYWxpZ25WYWx1ZUZvclN0ZXAoY3VycmVudCwgbmV3VmFsdWUpOwog
CiAgICAgaWYgKG5ld1ZhbHVlIC0gc3RlcFJhbmdlLm1heGltdW0oKSA+IGFjY2VwdGFibGVFcnJv
clZhbHVlKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CkBAIC04OTgsMTMgKzg4
OCwxMyBAQCB2b2lkIElucHV0VHlwZTo6YXBwbHlTdGVwKGRvdWJsZSBjb3VudCwgQW55U3RlcEhh
bmRsaW5nIGFueVN0ZXBIYW5kbGluZywgVGV4dEZpZQogICAgIGlmIChuZXdWYWx1ZSA+IHN0ZXBS
YW5nZS5tYXhpbXVtKCkpCiAgICAgICAgIG5ld1ZhbHVlID0gc3RlcFJhbmdlLm1heGltdW0oKTsK
IAotICAgIGVsZW1lbnQoKS0+c2V0VmFsdWVBc051bWJlcihuZXdWYWx1ZSwgZWMsIGV2ZW50QmVo
YXZpb3IpOworICAgIGVsZW1lbnQoKS0+c2V0VmFsdWVBc051bWJlcihwYXJzZVRvRG91YmxlRm9y
TnVtYmVyVHlwZShuZXdWYWx1ZS50b1N0cmluZygpKSwgZWMsIGV2ZW50QmVoYXZpb3IpOwogCiAg
ICAgaWYgKEFYT2JqZWN0Q2FjaGU6OmFjY2Vzc2liaWxpdHlFbmFibGVkKCkpCiAgICAgICAgICBl
bGVtZW50KCktPmRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUoKS0+cG9zdE5vdGlmaWNhdGlvbihl
bGVtZW50KCktPnJlbmRlcmVyKCksIEFYT2JqZWN0Q2FjaGU6OkFYVmFsdWVDaGFuZ2VkLCB0cnVl
KTsKIH0KIAotYm9vbCBJbnB1dFR5cGU6OmdldEFsbG93ZWRWYWx1ZVN0ZXAoZG91YmxlKiBzdGVw
KSBjb25zdAorYm9vbCBJbnB1dFR5cGU6OmdldEFsbG93ZWRWYWx1ZVN0ZXAoRGVjaW1hbCogc3Rl
cCkgY29uc3QKIHsKICAgICBTdGVwUmFuZ2Ugc3RlcFJhbmdlKGNyZWF0ZVN0ZXBSYW5nZShSZWpl
Y3RBbnkpKTsKICAgICAqc3RlcCA9IHN0ZXBSYW5nZS5zdGVwKCk7CkBAIC05NzAsMTQgKzk2MCwx
NCBAQCB2b2lkIElucHV0VHlwZTo6c3RlcFVwRnJvbVJlbmRlcmVyKGludCBuKQogICAgIGlmICgh
bikKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3RlcFJhbmdlIHN0ZXBSYW5nZShjcmVhdGVTdGVw
UmFuZ2UoQW55SXNEZWZhdWx0U3RlcCkpOworICAgIGNvbnN0IFN0ZXBSYW5nZSBzdGVwUmFuZ2Uo
Y3JlYXRlU3RlcFJhbmdlKEFueUlzRGVmYXVsdFN0ZXApKTsKIAogICAgIC8vIEZJWE1FOiBOb3Qg
YW55IGNoYW5nZXMgYWZ0ZXIgc3RlcHBpbmcsIGV2ZW4gaWYgaXQgaXMgYW4gaW52YWxpZCB2YWx1
ZSwgbWF5IGJlIGJldHRlci4KICAgICAvLyAoZS5nLiBTdGVwcGluZy11cCBmb3IgPGlucHV0IHR5
cGU9Im51bWJlciIgdmFsdWU9ImZvbyIgc3RlcD0iYW55IiAvPiA9PiAiZm9vIikKICAgICBpZiAo
IXN0ZXBSYW5nZS5oYXNTdGVwKCkpCiAgICAgICByZXR1cm47CiAKLSAgICBkb3VibGUgc3RlcCA9
IHN0ZXBSYW5nZS5zdGVwKCk7CisgICAgY29uc3QgRGVjaW1hbCBzdGVwID0gc3RlcFJhbmdlLnN0
ZXAoKTsKIAogICAgIGludCBzaWduOwogICAgIGlmIChzdGVwID4gMCkKQEAgLTk4NywzMyArOTc3
LDI5IEBAIHZvaWQgSW5wdXRUeXBlOjpzdGVwVXBGcm9tUmVuZGVyZXIoaW50IG4pCiAgICAgZWxz
ZQogICAgICAgICBzaWduID0gMDsKIAotICAgIGNvbnN0IGRvdWJsZSBuYW4gPSBudW1lcmljX2xp
bWl0czxkb3VibGU+OjpxdWlldF9OYU4oKTsKLSAgICBTdHJpbmcgY3VycmVudFN0cmluZ1ZhbHVl
ID0gZWxlbWVudCgpLT52YWx1ZSgpOwotICAgIGRvdWJsZSBjdXJyZW50ID0gcGFyc2VUb0RvdWJs
ZShjdXJyZW50U3RyaW5nVmFsdWUsIG5hbik7Ci0gICAgaWYgKCFpc2Zpbml0ZShjdXJyZW50KSkg
eworICAgIERlY2ltYWwgY3VycmVudCA9IHBhcnNlVG9EZWNpbWFsKGVsZW1lbnQoKS0+dmFsdWUo
KSk7CisgICAgaWYgKCFjdXJyZW50LmlzRmluaXRlKCkpIHsKICAgICAgICAgRXhjZXB0aW9uQ29k
ZSBlYzsKICAgICAgICAgY3VycmVudCA9IGRlZmF1bHRWYWx1ZUZvclN0ZXBVcCgpOwotICAgICAg
ICBkb3VibGUgbmV4dERpZmYgPSBzdGVwICogbjsKKyAgICAgICAgY29uc3QgRGVjaW1hbCBuZXh0
RGlmZiA9IHN0ZXAgKiBuOwogICAgICAgICBpZiAoY3VycmVudCA8IHN0ZXBSYW5nZS5taW5pbXVt
KCkgLSBuZXh0RGlmZikKICAgICAgICAgICAgIGN1cnJlbnQgPSBzdGVwUmFuZ2UubWluaW11bSgp
IC0gbmV4dERpZmY7CiAgICAgICAgIGlmIChjdXJyZW50ID4gc3RlcFJhbmdlLm1heGltdW0oKSAt
IG5leHREaWZmKQogICAgICAgICAgICAgY3VycmVudCA9IHN0ZXBSYW5nZS5tYXhpbXVtKCkgLSBu
ZXh0RGlmZjsKLSAgICAgICAgZWxlbWVudCgpLT5zZXRWYWx1ZUFzTnVtYmVyKGN1cnJlbnQsIGVj
LCBEaXNwYXRjaElucHV0QW5kQ2hhbmdlRXZlbnQpOworICAgICAgICBlbGVtZW50KCktPnNldFZh
bHVlQXNOdW1iZXIocGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUoY3VycmVudC50b1N0cmluZygp
KSwgZWMsIERpc3BhdGNoSW5wdXRBbmRDaGFuZ2VFdmVudCk7CiAgICAgfQogICAgIGlmICgoc2ln
biA+IDAgJiYgY3VycmVudCA8IHN0ZXBSYW5nZS5taW5pbXVtKCkpIHx8IChzaWduIDwgMCAmJiBj
dXJyZW50ID4gc3RlcFJhbmdlLm1heGltdW0oKSkpCi0gICAgICAgIGVsZW1lbnQoKS0+c2V0VmFs
dWUoc2VyaWFsaXplKHNpZ24gPiAwID8gc3RlcFJhbmdlLm1pbmltdW0oKSA6IHN0ZXBSYW5nZS5t
YXhpbXVtKCkpLCBEaXNwYXRjaElucHV0QW5kQ2hhbmdlRXZlbnQpOworICAgICAgICBlbGVtZW50
KCktPnNldFZhbHVlKHNlcmlhbGl6ZUZvck51bWJlclR5cGUoc2lnbiA+IDAgPyBzdGVwUmFuZ2Uu
bWluaW11bSgpIDogc3RlcFJhbmdlLm1heGltdW0oKSksIERpc3BhdGNoSW5wdXRBbmRDaGFuZ2VF
dmVudCk7CiAgICAgZWxzZSB7CiAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWM7CiAgICAgICAgIGlm
IChzdGVwTWlzbWF0Y2goZWxlbWVudCgpLT52YWx1ZSgpKSkgewotICAgICAgICAgICAgQVNTRVJU
KHN0ZXApOwotICAgICAgICAgICAgZG91YmxlIG5ld1ZhbHVlOwotICAgICAgICAgICAgZG91Ymxl
IHNjYWxlID0gcG93KDEwLjAsIHN0YXRpY19jYXN0PGRvdWJsZT4obWF4KHN0ZXBSYW5nZS5zdGVw
RGVjaW1hbFBsYWNlcygpLCBzdGVwUmFuZ2Uuc3RlcEJhc2VEZWNpbWFsUGxhY2VzKCkpKSk7Ci0g
ICAgICAgICAgICBkb3VibGUgYmFzZSA9IHN0ZXBSYW5nZS5zdGVwQmFzZSgpOwotCisgICAgICAg
ICAgICBBU1NFUlQoIXN0ZXAuaXNaZXJvKCkpOworICAgICAgICAgICAgY29uc3QgRGVjaW1hbCBi
YXNlID0gc3RlcFJhbmdlLnN0ZXBCYXNlKCk7CisgICAgICAgICAgICBEZWNpbWFsIG5ld1ZhbHVl
OwogICAgICAgICAgICAgaWYgKHNpZ24gPCAwKQotICAgICAgICAgICAgICAgIG5ld1ZhbHVlID0g
cm91bmQoKGJhc2UgKyBmbG9vcigoY3VycmVudCAtIGJhc2UpIC8gc3RlcCkgKiBzdGVwKSAqIHNj
YWxlKSAvIHNjYWxlOworICAgICAgICAgICAgICAgIG5ld1ZhbHVlID0gYmFzZSArICgoY3VycmVu
dCAtIGJhc2UpIC8gc3RlcCkuZmxvb3IoKSAqIHN0ZXA7CiAgICAgICAgICAgICBlbHNlIGlmIChz
aWduID4gMCkKLSAgICAgICAgICAgICAgICBuZXdWYWx1ZSA9IHJvdW5kKChiYXNlICsgY2VpbCgo
Y3VycmVudCAtIGJhc2UpIC8gc3RlcCkgKiBzdGVwKSAqIHNjYWxlKSAvIHNjYWxlOworICAgICAg
ICAgICAgICAgIG5ld1ZhbHVlID0gYmFzZSArICgoY3VycmVudCAtIGJhc2UpIC8gc3RlcCkuY2Vp
bCgpICogc3RlcDsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBuZXdWYWx1ZSA9
IGN1cnJlbnQ7CiAKQEAgLTEwMjIsOCArMTAwOCw3IEBAIHZvaWQgSW5wdXRUeXBlOjpzdGVwVXBG
cm9tUmVuZGVyZXIoaW50IG4pCiAgICAgICAgICAgICBpZiAobmV3VmFsdWUgPiBzdGVwUmFuZ2Uu
bWF4aW11bSgpKQogICAgICAgICAgICAgICAgIG5ld1ZhbHVlID0gc3RlcFJhbmdlLm1heGltdW0o
KTsKIAotICAgICAgICAgICAgZWxlbWVudCgpLT5zZXRWYWx1ZUFzTnVtYmVyKG5ld1ZhbHVlLCBl
YywgbiA9PSAxIHx8IG4gPT0gLTEgPyBEaXNwYXRjaElucHV0QW5kQ2hhbmdlRXZlbnQgOiBEaXNw
YXRjaE5vRXZlbnQpOwotICAgICAgICAgICAgY3VycmVudCA9IG5ld1ZhbHVlOworICAgICAgICAg
ICAgZWxlbWVudCgpLT5zZXRWYWx1ZUFzTnVtYmVyKHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBl
KG5ld1ZhbHVlLnRvU3RyaW5nKCkpLCBlYywgbiA9PSAxIHx8IG4gPT0gLTEgPyBEaXNwYXRjaElu
cHV0QW5kQ2hhbmdlRXZlbnQgOiBEaXNwYXRjaE5vRXZlbnQpOwogICAgICAgICAgICAgaWYgKG4g
PiAxKQogICAgICAgICAgICAgICAgIGFwcGx5U3RlcChuIC0gMSwgQW55SXNEZWZhdWx0U3RlcCwg
RGlzcGF0Y2hJbnB1dEFuZENoYW5nZUV2ZW50LCBlYyk7CiAgICAgICAgICAgICBlbHNlIGlmIChu
IDwgLTEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaAppbmRleCA1NDE2N2YzZTQ1OWM5YWYzZjQxZDM5
ZDdiMWY4YjIyNDBhYzYwMzAyLi41NGZhMGFmNGMzMzgzYzM0Njc4ZmI4NTVmZjhlYjY3YTZhNGY4
ZjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgKQEAgLTE1NSwxMiArMTU1LDEyIEBAIHB1Ymxp
YzoKICAgICBib29sIHJhbmdlT3ZlcmZsb3coY29uc3QgU3RyaW5nJikgY29uc3Q7CiAgICAgYm9v
bCBpc0luUmFuZ2UoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAgICAgYm9vbCBpc091dE9mUmFuZ2Uo
Y29uc3QgU3RyaW5nJikgY29uc3Q7Ci0gICAgdmlydHVhbCBkb3VibGUgZGVmYXVsdFZhbHVlRm9y
U3RlcFVwKCkgY29uc3Q7CisgICAgdmlydHVhbCBEZWNpbWFsIGRlZmF1bHRWYWx1ZUZvclN0ZXBV
cCgpIGNvbnN0OwogICAgIGRvdWJsZSBtaW5pbXVtKCkgY29uc3Q7CiAgICAgZG91YmxlIG1heGlt
dW0oKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgc2l6ZVNob3VsZEluY2x1ZGVEZWNvcmF0aW9u
KGludCBkZWZhdWx0U2l6ZSwgaW50JiBwcmVmZXJyZWRTaXplKSBjb25zdDsKICAgICBib29sIHN0
ZXBNaXNtYXRjaChjb25zdCBTdHJpbmcmKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgZ2V0QWxs
b3dlZFZhbHVlU3RlcChkb3VibGUqKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0QWxsb3dl
ZFZhbHVlU3RlcChEZWNpbWFsKikgY29uc3Q7CiAgICAgdmlydHVhbCBTdGVwUmFuZ2UgY3JlYXRl
U3RlcFJhbmdlKEFueVN0ZXBIYW5kbGluZykgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHN0ZXBV
cChpbnQsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RlcFVwRnJvbVJlbmRl
cmVyKGludCk7CkBAIC0yNTgsMTUgKzI1OCwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJp
bmcgZGVmYXVsdFRvb2xUaXAoKSBjb25zdDsKIAogICAgIC8vIFBhcnNlcyB0aGUgc3BlY2lmaWVk
IHN0cmluZyBmb3IgdGhlIHR5cGUsIGFuZCByZXR1cm4KLSAgICAvLyB0aGUgZG91YmxlIHZhbHVl
IGZvciB0aGUgcGFyc2luZyByZXN1bHQgaWYgdGhlIHBhcnNpbmcKKyAgICAvLyB0aGUgZGVjaW1h
bCB2YWx1ZSBmb3IgdGhlIHBhcnNpbmcgcmVzdWx0IGlmIHRoZSBwYXJzaW5nCiAgICAgLy8gc3Vj
Y2VlZHM7IFJldHVybnMgZGVmYXVsdFZhbHVlIG90aGVyd2lzZS4gVGhpcyBmdW5jdGlvbiBjYW4K
ICAgICAvLyByZXR1cm4gTmFOIG9yIEluZmluaXR5IG9ubHkgaWYgZGVmYXVsdFZhbHVlIGlzIE5h
TiBvciBJbmZpbml0eS4KLSAgICB2aXJ0dWFsIGRvdWJsZSBwYXJzZVRvRG91YmxlKGNvbnN0IFN0
cmluZyYsIGRvdWJsZSBkZWZhdWx0VmFsdWUpIGNvbnN0OwotCi0gICAgLy8gUGFyc2VzIHRoZSBz
cGVjaWZpZWQgc3RyaW5nIGZvciB0aGUgdHlwZSBhcyBwYXJzZVRvRG91YmxlKCkgZG9lcy4KLSAg
ICAvLyBJbiBhZGRpdGlvbiwgaXQgc3RvcmVzIHRoZSBudW1iZXIgb2YgZGlnaXRzIGFmdGVyIHRo
ZSBkZWNpbWFsIHBvaW50Ci0gICAgLy8gaW50byAqZGVjaW1hbFBsYWNlcy4KLSAgICB2aXJ0dWFs
IGRvdWJsZSBwYXJzZVRvRG91YmxlV2l0aERlY2ltYWxQbGFjZXMoY29uc3QgU3RyaW5nJiwgZG91
YmxlIGRlZmF1bHRWYWx1ZSwgdW5zaWduZWQqIGRlY2ltYWxQbGFjZXMpIGNvbnN0OworICAgIHZp
cnR1YWwgRGVjaW1hbCBwYXJzZVRvRGVjaW1hbChjb25zdCBTdHJpbmcmLCBjb25zdCBEZWNpbWFs
JiBkZWZhdWx0VmFsdWUpIGNvbnN0OwogCiAgICAgLy8gUGFyc2VzIHRoZSBzcGVjaWZpZWQgc3Ry
aW5nIGZvciB0aGlzIElucHV0VHlwZSwgYW5kIHJldHVybnMgdHJ1ZSBpZiBpdAogICAgIC8vIGlz
IHN1Y2Nlc3NmdWxseSBwYXJzZWQuIEFuIGluc3RhbmNlIHBvaW50ZWQgYnkgdGhlIERhdGVDb21w
b25lbnRzKgpAQCAtMjc3LDcgKzI3Miw3IEBAIHB1YmxpYzoKICAgICAvLyBDcmVhdGUgYSBzdHJp
bmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIHNwZWNpZmllZCBkb3VibGUgdmFsdWUgZm9yIHRoZQog
ICAgIC8vIGlucHV0IHR5cGUuIElmIE5hTiBvciBJbmZpbml0eSBpcyBzcGVjaWZpZWQsIHRoaXMg
cmV0dXJucyBhbiBlbXB0eQogICAgIC8vIHN0cmluZy4gVGhpcyBzaG91bGQgbm90IGJlIGNhbGxl
ZCBmb3IgdHlwZXMgd2l0aG91dCB2YWx1ZUFzTnVtYmVyLgotICAgIHZpcnR1YWwgU3RyaW5nIHNl
cmlhbGl6ZShkb3VibGUpIGNvbnN0OworICAgIHZpcnR1YWwgU3RyaW5nIHNlcmlhbGl6ZShjb25z
dCBEZWNpbWFsJikgY29uc3Q7CiAKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNJbmRldGVybWlu
YXRlQXBwZWFyYW5jZSgpIGNvbnN0OwogCkBAIC0yOTEsMTAgKzI4NiwxMSBAQCBwcm90ZWN0ZWQ6
CiAgICAgSFRNTElucHV0RWxlbWVudCogZWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVu
dDsgfQogICAgIHZvaWQgZGlzcGF0Y2hTaW11bGF0ZWRDbGlja0lmQWN0aXZlKEtleWJvYXJkRXZl
bnQqKSBjb25zdDsKICAgICBDaHJvbWUqIGNocm9tZSgpIGNvbnN0OworICAgIERlY2ltYWwgcGFy
c2VUb0RlY2ltYWwoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgLy8gSGVs
cGVyIGZvciBzdGVwVXAoKS9zdGVwRG93bigpLiBBZGRzIHN0ZXAgdmFsdWUgKiBjb3VudCB0byB0
aGUgY3VycmVudCB2YWx1ZS4KLSAgICB2b2lkIGFwcGx5U3RlcChkb3VibGUgY291bnQsIEFueVN0
ZXBIYW5kbGluZywgVGV4dEZpZWxkRXZlbnRCZWhhdmlvciwgRXhjZXB0aW9uQ29kZSYpOworICAg
IHZvaWQgYXBwbHlTdGVwKGludCBjb3VudCwgQW55U3RlcEhhbmRsaW5nLCBUZXh0RmllbGRFdmVu
dEJlaGF2aW9yLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICAvLyBSYXcgcG9pbnRlciBiZWNhdXNl
IHRoZSBIVE1MSW5wdXRFbGVtZW50IG9iamVjdCBvd25zIHRoaXMgSW5wdXRUeXBlIG9iamVjdC4K
ICAgICBIVE1MSW5wdXRFbGVtZW50KiBtX2VsZW1lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL051bWJlcklucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL051bWJl
cklucHV0VHlwZS5jcHAKaW5kZXggOTQxZDI1MmQ0YzJkYTIwZTJmYjAwYjVkOGE4YTY5YmYyOTlm
NWJlMC4uZjhmNjQ3NWIyZDQ5NWViNmUwNTYwYTA0MGJjZTkwNTY0NjAxNWI5OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9OdW1iZXJJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvTnVtYmVySW5wdXRUeXBlLmNwcApAQCAtNTAsMjMgKzUwLDI4IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiB1c2luZyBuYW1lc3Bh
Y2Ugc3RkOwogCi1zdGF0aWMgY29uc3QgZG91YmxlIG51bWJlckRlZmF1bHRTdGVwID0gMS4wOwot
c3RhdGljIGNvbnN0IGRvdWJsZSBudW1iZXJEZWZhdWx0U3RlcEJhc2UgPSAwLjA7Ci1zdGF0aWMg
Y29uc3QgZG91YmxlIG51bWJlclN0ZXBTY2FsZUZhY3RvciA9IDEuMDsKK3N0YXRpYyBjb25zdCBp
bnQgbnVtYmVyRGVmYXVsdFN0ZXAgPSAxOworc3RhdGljIGNvbnN0IGludCBudW1iZXJEZWZhdWx0
U3RlcEJhc2UgPSAwOworc3RhdGljIGNvbnN0IGludCBudW1iZXJTdGVwU2NhbGVGYWN0b3IgPSAx
OwogCi1zdGF0aWMgdW5zaWduZWQgbGVuZ3RoQmVmb3JlRGVjaW1hbFBvaW50KGRvdWJsZSB2YWx1
ZSkKK3N0YXRpYyB1bnNpZ25lZCBjYWxjdWxhdGVSZW5kZXJTaXplKGNvbnN0IERlY2ltYWwmIHZh
bHVlKQogewotICAgIC8vIElmIHZhbHVlIGlzIG5lZ2F0aXZlLCAnLScgc2hvdWxkIGJlIGNvdW50
ZWQuCi0KLSAgICBkb3VibGUgYWJzb2x1dGVWYWx1ZSA9IGZhYnModmFsdWUpOwotICAgIGlmIChh
YnNvbHV0ZVZhbHVlIDwgMSkKLSAgICAgICAgcmV0dXJuIHZhbHVlIDwgMCA/IDIgOiAxOwotCi0g
ICAgdW5zaWduZWQgbGVuZ3RoID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxvZzEwKGZsb29yKGFi
c29sdXRlVmFsdWUpKSkgKyAxOwotICAgIGlmICh2YWx1ZSA8IDApCi0gICAgICAgIGxlbmd0aCAr
PSAxOworICAgIEFTU0VSVCh2YWx1ZS5pc0Zpbml0ZSgpKTsKKyAgICBjb25zdCB1bnNpZ25lZCBk
aWdpdHNTaXplID0gU3RyaW5nOjpudW1iZXIodmFsdWUudmFsdWUoKS5jb2VmZmljaWVudCgpKS5s
ZW5ndGgoKTsKKyAgICBjb25zdCB1bnNpZ25lZCBzaWduU2l6ZSA9IHZhbHVlLmlzTWludXMoKSA/
IDEgOiAwOworICAgIGlmICghdmFsdWUuZXhwb25lbnQoKSkKKyAgICAgICAgcmV0dXJuIHNpZ25T
aXplICsgZGlnaXRzU2l6ZTsKKyAgICBjb25zdCBpbnQgYWRqdXN0ZWRFeHBvbmVudCA9IHZhbHVl
LmV4cG9uZW50KCkgKyBkaWdpdHNTaXplIC0gMTsKKyAgICBpZiAoYWRqdXN0ZWRFeHBvbmVudCA+
PSAwKSB7CisgICAgICAgIC8vIEluIGNhc2Ugb2YgIjEyMy40NTYiCisgICAgICAgIGNvbnN0IHVu
c2lnbmVkIGRvdFNpemUgPSAxOworICAgICAgICByZXR1cm4gc2lnblNpemUgKyBkaWdpdHNTaXpl
ICsgZG90U2l6ZTsKKyAgICB9CiAKLSAgICByZXR1cm4gbGVuZ3RoOworICAgIC8vIEluIGNhc2Ug
b2YgIjAuMDAwMTIzNDUiCisgICAgY29uc3QgdW5zaWduZWQgbGVhZGluZ1plcm9BbmREb3QgPSAy
OworICAgIGNvbnN0IHVuc2lnbmVkIG51bWJlck9mWmVyb0FmdGVyRG90ID0gLWFkanVzdGVkRXhw
b25lbnQgLSAxOworICAgIHJldHVybiBzaWduU2l6ZSArIGxlYWRpbmdaZXJvQW5kRG90ICsgbnVt
YmVyT2ZaZXJvQWZ0ZXJEb3QgKyBkaWdpdHNTaXplOwogfQogCiBQYXNzT3duUHRyPElucHV0VHlw
ZT4gTnVtYmVySW5wdXRUeXBlOjpjcmVhdGUoSFRNTElucHV0RWxlbWVudCogZWxlbWVudCkKQEAg
LTgxLDcgKzg2LDcgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBOdW1iZXJJbnB1dFR5cGU6OmZvcm1D
b250cm9sVHlwZSgpIGNvbnN0CiAKIGRvdWJsZSBOdW1iZXJJbnB1dFR5cGU6OnZhbHVlQXNOdW1i
ZXIoKSBjb25zdAogewotICAgIHJldHVybiBwYXJzZVRvRG91YmxlKGVsZW1lbnQoKS0+dmFsdWUo
KSwgbnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCkpOworICAgIHJldHVybiBwYXJz
ZVRvRG91YmxlRm9yTnVtYmVyVHlwZShlbGVtZW50KCktPnZhbHVlKCkpOwogfQogCiB2b2lkIE51
bWJlcklucHV0VHlwZTo6c2V0VmFsdWVBc051bWJlcihkb3VibGUgbmV3VmFsdWUsIFRleHRGaWVs
ZEV2ZW50QmVoYXZpb3IgZXZlbnRCZWhhdmlvciwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CkBA
IC05NCw3ICs5OSw3IEBAIHZvaWQgTnVtYmVySW5wdXRUeXBlOjpzZXRWYWx1ZUFzTnVtYmVyKGRv
dWJsZSBuZXdWYWx1ZSwgVGV4dEZpZWxkRXZlbnRCZWhhdmlvciBlCiAgICAgICAgIGVjID0gSU5W
QUxJRF9TVEFURV9FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgZWxlbWVudCgpLT5z
ZXRWYWx1ZShzZXJpYWxpemUobmV3VmFsdWUpLCBldmVudEJlaGF2aW9yKTsKKyAgICBlbGVtZW50
KCktPnNldFZhbHVlKHNlcmlhbGl6ZUZvck51bWJlclR5cGUobmV3VmFsdWUpLCBldmVudEJlaGF2
aW9yKTsKIH0KIAogYm9vbCBOdW1iZXJJbnB1dFR5cGU6OnR5cGVNaXNtYXRjaEZvcihjb25zdCBT
dHJpbmcmIHZhbHVlKSBjb25zdApAQCAtMTExLDE0ICsxMTYsMTEgQEAgYm9vbCBOdW1iZXJJbnB1
dFR5cGU6OnR5cGVNaXNtYXRjaCgpIGNvbnN0CiBTdGVwUmFuZ2UgTnVtYmVySW5wdXRUeXBlOjpj
cmVhdGVTdGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5nIGFueVN0ZXBIYW5kbGluZykgY29uc3QKIHsK
ICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0ZXBSYW5nZTo6U3RlcERlc2NyaXB0aW9u
LCBzdGVwRGVzY3JpcHRpb24sIChudW1iZXJEZWZhdWx0U3RlcCwgbnVtYmVyRGVmYXVsdFN0ZXBC
YXNlLCBudW1iZXJTdGVwU2NhbGVGYWN0b3IpKTsKLQotICAgIHVuc2lnbmVkIHN0ZXBCYXNlRGVj
aW1hbFBsYWNlczsKLSAgICBkb3VibGUgc3RlcEJhc2VWYWx1ZSA9IHBhcnNlVG9Eb3VibGVXaXRo
RGVjaW1hbFBsYWNlcyhlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUobWluQXR0ciksIG51bWJl
ckRlZmF1bHRTdGVwQmFzZSwgJnN0ZXBCYXNlRGVjaW1hbFBsYWNlcyk7Ci0gICAgU3RlcFJhbmdl
OjpEb3VibGVXaXRoRGVjaW1hbFBsYWNlcyBzdGVwQmFzZShzdGVwQmFzZVZhbHVlLCBtaW4oc3Rl
cEJhc2VEZWNpbWFsUGxhY2VzLCAxNnUpKTsKLSAgICBkb3VibGUgbWluaW11bSA9IHBhcnNlVG9E
b3VibGUoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpLCAtbnVtZXJpY19saW1p
dHM8ZmxvYXQ+OjptYXgoKSk7Ci0gICAgZG91YmxlIG1heGltdW0gPSBwYXJzZVRvRG91YmxlKGVs
ZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShtYXhBdHRyKSwgbnVtZXJpY19saW1pdHM8ZmxvYXQ+
OjptYXgoKSk7Ci0KLSAgICBTdGVwUmFuZ2U6OkRvdWJsZVdpdGhEZWNpbWFsUGxhY2VzT3JNaXNz
aW5nIHN0ZXAgPSBTdGVwUmFuZ2U6OnBhcnNlU3RlcChhbnlTdGVwSGFuZGxpbmcsIHN0ZXBEZXNj
cmlwdGlvbiwgZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKHN0ZXBBdHRyKSk7CisgICAgY29u
c3QgRGVjaW1hbCBmbG9hdE1heCA9IHBhcnNlVG9EZWNpbWFsRm9yTnVtYmVyVHlwZShzZXJpYWxp
emVGb3JOdW1iZXJUeXBlKG51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4KCkpKTsKKyAgICBjb25z
dCBEZWNpbWFsIHN0ZXBCYXNlID0gcGFyc2VUb0RlY2ltYWxGb3JOdW1iZXJUeXBlKGVsZW1lbnQo
KS0+ZmFzdEdldEF0dHJpYnV0ZShtaW5BdHRyKSwgbnVtYmVyRGVmYXVsdFN0ZXBCYXNlKTsKKyAg
ICBjb25zdCBEZWNpbWFsIG1pbmltdW0gPSBwYXJzZVRvRGVjaW1hbEZvck51bWJlclR5cGUoZWxl
bWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpLCAtZmxvYXRNYXgpOworICAgIGNvbnN0
IERlY2ltYWwgbWF4aW11bSA9IHBhcnNlVG9EZWNpbWFsRm9yTnVtYmVyVHlwZShlbGVtZW50KCkt
PmZhc3RHZXRBdHRyaWJ1dGUobWF4QXR0ciksIGZsb2F0TWF4KTsKKyAgICBjb25zdCBTdGVwUmFu
Z2U6OkRlY2ltYWxPck1pc3Npbmcgc3RlcCA9IFN0ZXBSYW5nZTo6cGFyc2VTdGVwKGFueVN0ZXBI
YW5kbGluZywgc3RlcERlc2NyaXB0aW9uLCBlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUoc3Rl
cEF0dHIpKTsKICAgICByZXR1cm4gU3RlcFJhbmdlKHN0ZXBCYXNlLCBtaW5pbXVtLCBtYXhpbXVt
LCBzdGVwLCBzdGVwRGVzY3JpcHRpb24pOwogfQogCkBAIC0xMjYsNDcgKzEyOCwxOSBAQCBib29s
IE51bWJlcklucHV0VHlwZTo6c2l6ZVNob3VsZEluY2x1ZGVEZWNvcmF0aW9uKGludCBkZWZhdWx0
U2l6ZSwgaW50JiBwcmVmZXJyZQogewogICAgIHByZWZlcnJlZFNpemUgPSBkZWZhdWx0U2l6ZTsK
IAotICAgIHVuc2lnbmVkIG1pblZhbHVlRGVjaW1hbFBsYWNlczsKLSAgICBTdHJpbmcgbWluVmFs
dWUgPSBlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUobWluQXR0cik7Ci0gICAgZG91YmxlIG1p
blZhbHVlRG91YmxlID0gcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGVXaXRoRGVjaW1hbFBsYWNl
cyhtaW5WYWx1ZSwgJm1pblZhbHVlRGVjaW1hbFBsYWNlcyk7Ci0gICAgaWYgKCFpc2Zpbml0ZSht
aW5WYWx1ZURvdWJsZSkpCisgICAgU3RyaW5nIHN0ZXBTdHJpbmcgPSBlbGVtZW50KCktPmZhc3RH
ZXRBdHRyaWJ1dGUoc3RlcEF0dHIpOworICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShzdGVwU3Ry
aW5nLCAiYW55IikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHVuc2lnbmVkIG1heFZh
bHVlRGVjaW1hbFBsYWNlczsKLSAgICBTdHJpbmcgbWF4VmFsdWUgPSBlbGVtZW50KCktPmZhc3RH
ZXRBdHRyaWJ1dGUobWF4QXR0cik7Ci0gICAgZG91YmxlIG1heFZhbHVlRG91YmxlID0gcGFyc2VU
b0RvdWJsZUZvck51bWJlclR5cGVXaXRoRGVjaW1hbFBsYWNlcyhtYXhWYWx1ZSwgJm1heFZhbHVl
RGVjaW1hbFBsYWNlcyk7Ci0gICAgaWYgKCFpc2Zpbml0ZShtYXhWYWx1ZURvdWJsZSkpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmIChtYXhWYWx1ZURvdWJsZSA8IG1pblZhbHVlRG91
YmxlKSB7Ci0gICAgICAgIG1heFZhbHVlRG91YmxlID0gbWluVmFsdWVEb3VibGU7Ci0gICAgICAg
IG1heFZhbHVlRGVjaW1hbFBsYWNlcyA9IG1pblZhbHVlRGVjaW1hbFBsYWNlczsKLSAgICB9Ci0K
LSAgICBTdHJpbmcgc3RlcFZhbHVlID0gZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKHN0ZXBB
dHRyKTsKLSAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uoc3RlcFZhbHVlLCAiYW55IikpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICB1bnNpZ25lZCBzdGVwVmFsdWVEZWNpbWFsUGxhY2VzOwot
ICAgIGRvdWJsZSBzdGVwVmFsdWVEb3VibGUgPSBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZVdp
dGhEZWNpbWFsUGxhY2VzKHN0ZXBWYWx1ZSwgJnN0ZXBWYWx1ZURlY2ltYWxQbGFjZXMpOwotICAg
IGlmICghaXNmaW5pdGUoc3RlcFZhbHVlRG91YmxlKSkgewotICAgICAgICBzdGVwVmFsdWVEb3Vi
bGUgPSAxOwotICAgICAgICBzdGVwVmFsdWVEZWNpbWFsUGxhY2VzID0gMDsKKyAgICBjb25zdCBE
ZWNpbWFsIG1pbmltdW0gPSBwYXJzZVRvRGVjaW1hbEZvck51bWJlclR5cGUoZWxlbWVudCgpLT5m
YXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpKTsKKyAgICBjb25zdCBEZWNpbWFsIG1heGltdW0gPSBw
YXJzZVRvRGVjaW1hbEZvck51bWJlclR5cGUoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1h
eEF0dHIpKTsKKyAgICBjb25zdCBEZWNpbWFsIHN0ZXAgPSBwYXJzZVRvRGVjaW1hbEZvck51bWJl
clR5cGUoc3RlcFN0cmluZywgMSk7CisgICAgaWYgKG1pbmltdW0uaXNGaW5pdGUoKSAmJiBtYXhp
bXVtLmlzRmluaXRlKCkgJiYgc3RlcC5pc0Zpbml0ZSgpKSB7CisgICAgICAgIHByZWZlcnJlZFNp
emUgPSBtYXgobWF4KGNhbGN1bGF0ZVJlbmRlclNpemUobWluaW11bSksIGNhbGN1bGF0ZVJlbmRl
clNpemUobWF4aW11bSkpLCBjYWxjdWxhdGVSZW5kZXJTaXplKHN0ZXApKTsKKyAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQogCi0gICAgdW5zaWduZWQgbGVuZ3RoID0gbGVuZ3RoQmVmb3JlRGVj
aW1hbFBvaW50KG1pblZhbHVlRG91YmxlKTsKLSAgICBsZW5ndGggPSBtYXgobGVuZ3RoLCBsZW5n
dGhCZWZvcmVEZWNpbWFsUG9pbnQobWF4VmFsdWVEb3VibGUpKTsKLSAgICBsZW5ndGggPSBtYXgo
bGVuZ3RoLCBsZW5ndGhCZWZvcmVEZWNpbWFsUG9pbnQoc3RlcFZhbHVlRG91YmxlKSk7Ci0KLSAg
ICB1bnNpZ25lZCBsZW5ndGhBZnRlckRlY2ltYWxQb2ludCA9IG1pblZhbHVlRGVjaW1hbFBsYWNl
czsKLSAgICBsZW5ndGhBZnRlckRlY2ltYWxQb2ludCA9IG1heChsZW5ndGhBZnRlckRlY2ltYWxQ
b2ludCwgbWF4VmFsdWVEZWNpbWFsUGxhY2VzKTsKLSAgICBsZW5ndGhBZnRlckRlY2ltYWxQb2lu
dCA9IG1heChsZW5ndGhBZnRlckRlY2ltYWxQb2ludCwgc3RlcFZhbHVlRGVjaW1hbFBsYWNlcyk7
Ci0KLSAgICAvLyAnLicgc2hvdWxkIGJlIGNvdW50ZWQgaWYgdGhlIHZhbHVlIGhhcyBkZWNpbWFs
IHBsYWNlcy4KLSAgICBpZiAobGVuZ3RoQWZ0ZXJEZWNpbWFsUG9pbnQgPiAwKQotICAgICAgICBs
ZW5ndGggKz0gbGVuZ3RoQWZ0ZXJEZWNpbWFsUG9pbnQgKyAxOwotCi0gICAgcHJlZmVycmVkU2l6
ZSA9IGxlbmd0aDsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIGJv
b2wgTnVtYmVySW5wdXRUeXBlOjppc1N0ZXBwYWJsZSgpIGNvbnN0CkBAIC0xODYsMjEgKzE2MCwx
NCBAQCB2b2lkIE51bWJlcklucHV0VHlwZTo6aGFuZGxlV2hlZWxFdmVudChXaGVlbEV2ZW50KiBl
dmVudCkKICAgICBoYW5kbGVXaGVlbEV2ZW50Rm9yU3BpbkJ1dHRvbihldmVudCk7CiB9CiAKLWRv
dWJsZSBOdW1iZXJJbnB1dFR5cGU6OnBhcnNlVG9Eb3VibGUoY29uc3QgU3RyaW5nJiBzcmMsIGRv
dWJsZSBkZWZhdWx0VmFsdWUpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHBhcnNlVG9Eb3VibGVGb3JO
dW1iZXJUeXBlKHNyYywgZGVmYXVsdFZhbHVlKTsKLX0KLQotZG91YmxlIE51bWJlcklucHV0VHlw
ZTo6cGFyc2VUb0RvdWJsZVdpdGhEZWNpbWFsUGxhY2VzKGNvbnN0IFN0cmluZyYgc3JjLCBkb3Vi
bGUgZGVmYXVsdFZhbHVlLCB1bnNpZ25lZCAqZGVjaW1hbFBsYWNlcykgY29uc3QKK0RlY2ltYWwg
TnVtYmVySW5wdXRUeXBlOjpwYXJzZVRvRGVjaW1hbChjb25zdCBTdHJpbmcmIHN0cmluZywgY29u
c3QgRGVjaW1hbCYgZGVmYXVsdFZhbHVlKSBjb25zdAogewotICAgIHJldHVybiBwYXJzZVRvRG91
YmxlRm9yTnVtYmVyVHlwZVdpdGhEZWNpbWFsUGxhY2VzKHNyYywgZGVjaW1hbFBsYWNlcywgZGVm
YXVsdFZhbHVlKTsKKyAgICByZXR1cm4gcGFyc2VUb0RlY2ltYWxGb3JOdW1iZXJUeXBlKHN0cmlu
ZywgZGVmYXVsdFZhbHVlKTsKIH0KIAotU3RyaW5nIE51bWJlcklucHV0VHlwZTo6c2VyaWFsaXpl
KGRvdWJsZSB2YWx1ZSkgY29uc3QKK1N0cmluZyBOdW1iZXJJbnB1dFR5cGU6OnNlcmlhbGl6ZShj
b25zdCBEZWNpbWFsJiB2YWx1ZSkgY29uc3QKIHsKLSAgICBpZiAoIWlzZmluaXRlKHZhbHVlKSkK
LSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIHJldHVybiBzZXJpYWxpemVGb3JOdW1iZXJU
eXBlKHZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWUuaXNGaW5pdGUoKSA/IHNlcmlhbGl6ZUZvck51
bWJlclR5cGUodmFsdWUpIDogZW1wdHlTdHJpbmcoKTsKIH0KIAogdm9pZCBOdW1iZXJJbnB1dFR5
cGU6OmhhbmRsZUJsdXJFdmVudCgpCkBAIC0yMjYsMTMgKzE5Myw3IEBAIFN0cmluZyBOdW1iZXJJ
bnB1dFR5cGU6OnZpc2libGVWYWx1ZSgpIGNvbnN0CiAgICAgLy8gV2UgZG9uJ3QgbG9jYWxpemUg
c2NpZW50aWZpYyBub3RhdGlvbnMuCiAgICAgaWYgKGN1cnJlbnRWYWx1ZS5maW5kKGlzRSkgIT0g
bm90Rm91bmQpCiAgICAgICAgIHJldHVybiBjdXJyZW50VmFsdWU7Ci0gICAgLy8gRklYTUU6IFRo
ZSBmb2xsb3dpbmcgdGhyZWUgbGluZXMgc2hvdWxkIGJlIHJlbW92ZWQgd2hlbiB3ZQotICAgIC8v
IHJlbW92ZSB0aGUgc2Vjb25kIGFyZ3VtZW50IG9mIGNvbnZlcnRUb0xvY2FsaXplZE51bWJlcigp
LgotICAgIC8vIE5vdGU6IHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlV2l0aERlY2ltYWxQbGFj
ZXMgc2V0IHplcm8gdG8gZGVjaW1hbFBsYWNlcwotICAgIC8vIGlmIGN1cnJlbnRWYWx1ZSBpc24n
dCB2YWxpZCBmbG9hdGluZyBwb2ludGVyIG51bWJlci4KLSAgICB1bnNpZ25lZCBkZWNpbWFsUGxh
Y2U7Ci0gICAgcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGVXaXRoRGVjaW1hbFBsYWNlcyhjdXJy
ZW50VmFsdWUsICZkZWNpbWFsUGxhY2UpOwotICAgIHJldHVybiBjb252ZXJ0VG9Mb2NhbGl6ZWRO
dW1iZXIoY3VycmVudFZhbHVlLCBkZWNpbWFsUGxhY2UpOworICAgIHJldHVybiBjb252ZXJ0VG9M
b2NhbGl6ZWROdW1iZXIoY3VycmVudFZhbHVlLCAwKTsKIH0KIAogU3RyaW5nIE51bWJlcklucHV0
VHlwZTo6Y29udmVydEZyb21WaXNpYmxlVmFsdWUoY29uc3QgU3RyaW5nJiB2aXNpYmxlVmFsdWUp
IGNvbnN0CkBAIC0yNDgsNyArMjA5LDcgQEAgU3RyaW5nIE51bWJlcklucHV0VHlwZTo6Y29udmVy
dEZyb21WaXNpYmxlVmFsdWUoY29uc3QgU3RyaW5nJiB2aXNpYmxlVmFsdWUpIGNvbnMKIGJvb2wg
TnVtYmVySW5wdXRUeXBlOjppc0FjY2VwdGFibGVWYWx1ZShjb25zdCBTdHJpbmcmIHByb3Bvc2Vk
VmFsdWUpCiB7CiAgICAgU3RyaW5nIHN0YW5kYXJkVmFsdWUgPSBjb252ZXJ0RnJvbVZpc2libGVW
YWx1ZShwcm9wb3NlZFZhbHVlKTsKLSAgICByZXR1cm4gc3RhbmRhcmRWYWx1ZS5pc0VtcHR5KCkg
fHwgcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUoc3RhbmRhcmRWYWx1ZSwgMCk7CisgICAgcmV0
dXJuIHN0YW5kYXJkVmFsdWUuaXNFbXB0eSgpIHx8IGlzZmluaXRlKHBhcnNlVG9Eb3VibGVGb3JO
dW1iZXJUeXBlKHN0YW5kYXJkVmFsdWUpKTsKIH0KIAogU3RyaW5nIE51bWJlcklucHV0VHlwZTo6
c2FuaXRpemVWYWx1ZShjb25zdCBTdHJpbmcmIHByb3Bvc2VkVmFsdWUpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL051bWJlcklucHV0VHlwZS5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9OdW1iZXJJbnB1dFR5cGUuaAppbmRleCAwMWJkZGVlNDgxNTdkZWNhYzQ5MzA5Yjk0
Njc3MTYwMzNhZjBlZjliLi5jZjY5MDgxMjM3YjQzMGU5ODI4YzQxMTBhNjc4NTZhMzBiYjExNTc4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL051bWJlcklucHV0VHlwZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvTnVtYmVySW5wdXRUeXBlLmgKQEAgLTUxLDkgKzUxLDggQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIFN0ZXBSYW5nZSBjcmVhdGVTdGVwUmFuZ2UoQW55U3RlcEhh
bmRsaW5nKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlS2V5ZG93bkV2
ZW50KEtleWJvYXJkRXZlbnQqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlV2hl
ZWxFdmVudChXaGVlbEV2ZW50KikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBkb3VibGUgcGFyc2VU
b0RvdWJsZShjb25zdCBTdHJpbmcmLCBkb3VibGUpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1
YWwgZG91YmxlIHBhcnNlVG9Eb3VibGVXaXRoRGVjaW1hbFBsYWNlcyhjb25zdCBTdHJpbmcmLCBk
b3VibGUsIHVuc2lnbmVkKikgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBTdHJpbmcgc2Vy
aWFsaXplKGRvdWJsZSkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBEZWNpbWFsIHBhcnNl
VG9EZWNpbWFsKGNvbnN0IFN0cmluZyYsIGNvbnN0IERlY2ltYWwmKSBjb25zdCBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIFN0cmluZyBzZXJpYWxpemUoY29uc3QgRGVjaW1hbCYpIGNvbnN0IE9WRVJS
SURFOwogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVCbHVyRXZlbnQoKSBPVkVSUklERTsKICAgICB2
aXJ0dWFsIFN0cmluZyB2aXNpYmxlVmFsdWUoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFs
IFN0cmluZyBjb252ZXJ0RnJvbVZpc2libGVWYWx1ZShjb25zdCBTdHJpbmcmKSBjb25zdCBPVkVS
UklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5jcHAKaW5kZXggYjQxN2RjMzIw
M2I4NDdhZDVjNmNhMjVkYTUxZmQ5YzdkNDYwNWNjYi4uZmMyYmRmMWZmMWRhODkxOWRmODRiNzNk
M2M2MmE1YTRkNmEzZWJkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlu
cHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5jcHAK
QEAgLTU0LDExICs1NCwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2Ug
SFRNTE5hbWVzOwogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAotc3RhdGljIGNvbnN0IGRvdWJsZSBy
YW5nZURlZmF1bHRNaW5pbXVtID0gMC4wOwotc3RhdGljIGNvbnN0IGRvdWJsZSByYW5nZURlZmF1
bHRNYXhpbXVtID0gMTAwLjA7Ci1zdGF0aWMgY29uc3QgZG91YmxlIHJhbmdlRGVmYXVsdFN0ZXAg
PSAxLjA7Ci1zdGF0aWMgY29uc3QgZG91YmxlIHJhbmdlRGVmYXVsdFN0ZXBCYXNlID0gMC4wOwot
c3RhdGljIGNvbnN0IGRvdWJsZSByYW5nZVN0ZXBTY2FsZUZhY3RvciA9IDEuMDsKK3N0YXRpYyBj
b25zdCBpbnQgcmFuZ2VEZWZhdWx0TWluaW11bSA9IDA7CitzdGF0aWMgY29uc3QgaW50IHJhbmdl
RGVmYXVsdE1heGltdW0gPSAxMDA7CitzdGF0aWMgY29uc3QgaW50IHJhbmdlRGVmYXVsdFN0ZXAg
PSAxOworc3RhdGljIGNvbnN0IGludCByYW5nZURlZmF1bHRTdGVwQmFzZSA9IDA7CitzdGF0aWMg
Y29uc3QgaW50IHJhbmdlU3RlcFNjYWxlRmFjdG9yID0gMTsKIAogUGFzc093blB0cjxJbnB1dFR5
cGU+IFJhbmdlSW5wdXRUeXBlOjpjcmVhdGUoSFRNTElucHV0RWxlbWVudCogZWxlbWVudCkKIHsK
QEAgLTc3LDEyICs3NywxMiBAQCBjb25zdCBBdG9taWNTdHJpbmcmIFJhbmdlSW5wdXRUeXBlOjpm
b3JtQ29udHJvbFR5cGUoKSBjb25zdAogCiBkb3VibGUgUmFuZ2VJbnB1dFR5cGU6OnZhbHVlQXNO
dW1iZXIoKSBjb25zdAogewotICAgIHJldHVybiBwYXJzZVRvRG91YmxlKGVsZW1lbnQoKS0+dmFs
dWUoKSwgbnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCkpOworICAgIHJldHVybiBw
YXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZShlbGVtZW50KCktPnZhbHVlKCkpOwogfQogCiB2b2lk
IFJhbmdlSW5wdXRUeXBlOjpzZXRWYWx1ZUFzTnVtYmVyKGRvdWJsZSBuZXdWYWx1ZSwgVGV4dEZp
ZWxkRXZlbnRCZWhhdmlvciBldmVudEJlaGF2aW9yLCBFeGNlcHRpb25Db2RlJikgY29uc3QKIHsK
LSAgICBlbGVtZW50KCktPnNldFZhbHVlKHNlcmlhbGl6ZShuZXdWYWx1ZSksIGV2ZW50QmVoYXZp
b3IpOworICAgIGVsZW1lbnQoKS0+c2V0VmFsdWUoc2VyaWFsaXplRm9yTnVtYmVyVHlwZShuZXdW
YWx1ZSksIGV2ZW50QmVoYXZpb3IpOwogfQogCiBib29sIFJhbmdlSW5wdXRUeXBlOjpzdXBwb3J0
c1JlcXVpcmVkKCkgY29uc3QKQEAgLTk0LDE4ICs5NCwxNiBAQCBTdGVwUmFuZ2UgUmFuZ2VJbnB1
dFR5cGU6OmNyZWF0ZVN0ZXBSYW5nZShBbnlTdGVwSGFuZGxpbmcgYW55U3RlcEhhbmRsaW5nKSBj
b25zdAogewogICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RlcFJhbmdlOjpTdGVwRGVz
Y3JpcHRpb24sIHN0ZXBEZXNjcmlwdGlvbiwgKHJhbmdlRGVmYXVsdFN0ZXAsIHJhbmdlRGVmYXVs
dFN0ZXBCYXNlLCByYW5nZVN0ZXBTY2FsZUZhY3RvcikpOwogCi0gICAgZG91YmxlIG1pbmltdW0g
PSBwYXJzZVRvRG91YmxlKGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShtaW5BdHRyKSwgcmFu
Z2VEZWZhdWx0TWluaW11bSk7Ci0gICAgZG91YmxlIG1heGltdW0gPSBwYXJzZVRvRG91YmxlKGVs
ZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShtYXhBdHRyKSwgcmFuZ2VEZWZhdWx0TWF4aW11bSk7
Ci0gICAgaWYgKG1heGltdW0gPCBtaW5pbXVtKQotICAgICAgICBtYXhpbXVtID0gbWF4KG1pbmlt
dW0sIHJhbmdlRGVmYXVsdE1heGltdW0pOworICAgIGNvbnN0IERlY2ltYWwgbWluaW11bSA9IHBh
cnNlVG9EZWNpbWFsKGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShtaW5BdHRyKSwgcmFuZ2VE
ZWZhdWx0TWluaW11bSk7CisgICAgY29uc3QgRGVjaW1hbCBtYXhpbXVtID0gU3RlcFJhbmdlOjpl
bnN1cmVNYXhpbXVtKHBhcnNlVG9EZWNpbWFsKGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZSht
YXhBdHRyKSwgcmFuZ2VEZWZhdWx0TWF4aW11bSksIG1pbmltdW0sIHJhbmdlRGVmYXVsdE1heGlt
dW0pOwogCiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBwcmVjaXNpb25WYWx1ZSA9IGVsZW1lbnQo
KS0+ZmFzdEdldEF0dHJpYnV0ZShwcmVjaXNpb25BdHRyKTsKICAgICBpZiAoIXByZWNpc2lvblZh
bHVlLmlzTnVsbCgpKSB7Ci0gICAgICAgIFN0ZXBSYW5nZTo6RG91YmxlV2l0aERlY2ltYWxQbGFj
ZXNPck1pc3Npbmcgc3RlcCgxLCAhZXF1YWxJZ25vcmluZ0Nhc2UocHJlY2lzaW9uVmFsdWUsICJm
bG9hdCIpKTsKKyAgICAgICAgU3RlcFJhbmdlOjpEZWNpbWFsT3JNaXNzaW5nIHN0ZXAoMSwgIWVx
dWFsSWdub3JpbmdDYXNlKHByZWNpc2lvblZhbHVlLCAiZmxvYXQiKSk7CiAgICAgICAgIHJldHVy
biBTdGVwUmFuZ2UobWluaW11bSwgbWluaW11bSwgbWF4aW11bSwgc3RlcCwgc3RlcERlc2NyaXB0
aW9uKTsKICAgICB9CiAKLSAgICBTdGVwUmFuZ2U6OkRvdWJsZVdpdGhEZWNpbWFsUGxhY2VzT3JN
aXNzaW5nIHN0ZXAgPSBTdGVwUmFuZ2U6OnBhcnNlU3RlcChhbnlTdGVwSGFuZGxpbmcsIHN0ZXBE
ZXNjcmlwdGlvbiwgZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKHN0ZXBBdHRyKSk7CisgICAg
Y29uc3QgU3RlcFJhbmdlOjpEZWNpbWFsT3JNaXNzaW5nIHN0ZXAoU3RlcFJhbmdlOjpwYXJzZVN0
ZXAoYW55U3RlcEhhbmRsaW5nLCBzdGVwRGVzY3JpcHRpb24sIGVsZW1lbnQoKS0+ZmFzdEdldEF0
dHJpYnV0ZShzdGVwQXR0cikpKTsKICAgICByZXR1cm4gU3RlcFJhbmdlKG1pbmltdW0sIG1pbmlt
dW0sIG1heGltdW0sIHN0ZXAsIHN0ZXBEZXNjcmlwdGlvbik7CiB9CiAKQEAgLTEzOCwyNSArMTM2
LDE1IEBAIHZvaWQgUmFuZ2VJbnB1dFR5cGU6OmhhbmRsZUtleWRvd25FdmVudChLZXlib2FyZEV2
ZW50KiBldmVudCkKIAogICAgIGNvbnN0IFN0cmluZyYga2V5ID0gZXZlbnQtPmtleUlkZW50aWZp
ZXIoKTsKIAotICAgIGRvdWJsZSBjdXJyZW50ID0gcGFyc2VUb0RvdWJsZShlbGVtZW50KCktPnZh
bHVlKCksIG51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpKTsKLSAgICBBU1NFUlQo
aXNmaW5pdGUoY3VycmVudCkpOworICAgIGNvbnN0IERlY2ltYWwgY3VycmVudCA9IHBhcnNlVG9E
ZWNpbWFsRm9yTnVtYmVyVHlwZShlbGVtZW50KCktPnZhbHVlKCkpOworICAgIEFTU0VSVChjdXJy
ZW50LmlzRmluaXRlKCkpOwogCi0gICAgU3RlcFJhbmdlIHN0ZXBSYW5nZShjcmVhdGVTdGVwUmFu
Z2UoUmVqZWN0QW55KSk7CisgICAgY29uc3QgU3RlcFJhbmdlIHN0ZXBSYW5nZShjcmVhdGVTdGVw
UmFuZ2UoUmVqZWN0QW55KSk7CiAKLSAgICBkb3VibGUgc3RlcCwgYmlnU3RlcDsKLSAgICBpZiAo
ZXF1YWxJZ25vcmluZ0Nhc2UoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKHN0ZXBBdHRyKSwg
ImFueSIpKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBXZSBjYW4ndCB1c2Ugc3RlcFVwKCkgZm9yIHRo
ZSBzdGVwIHZhbHVlICJhbnkiLiBTbywgd2UgaW5jcmVhc2UKLSAgICAgICAgLy8gb3IgZGVjcmVh
c2UgdGhlIHZhbHVlIGJ5IDEvMTAwIG9mIHRoZSB2YWx1ZSByYW5nZS4gSXMgaXQgcmVhc29uYWJs
ZT8KLSAgICAgICAgc3RlcCA9IChzdGVwUmFuZ2UubWF4aW11bSgpIC0gc3RlcFJhbmdlLm1pbmlt
dW0oKSkgLyAxMDA7Ci0gICAgICAgIGJpZ1N0ZXAgPSBzdGVwICogMTA7Ci0gICAgfSBlbHNlIHsK
LSAgICAgICAgaWYgKCFlbGVtZW50KCktPmdldEFsbG93ZWRWYWx1ZVN0ZXAoJnN0ZXApKQotICAg
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0KLSAgICAgICAgYmlnU3RlcCA9IChzdGVw
UmFuZ2UubWF4aW11bSgpIC0gc3RlcFJhbmdlLm1pbmltdW0oKSkgLyAxMDsKLSAgICAgICAgaWYg
KGJpZ1N0ZXAgPCBzdGVwKQotICAgICAgICAgICAgYmlnU3RlcCA9IHN0ZXA7Ci0gICAgfQorICAg
IC8vIEZJWE1FOiBXZSBjYW4ndCB1c2Ugc3RlcFVwKCkgZm9yIHRoZSBzdGVwIHZhbHVlICJhbnki
LiBTbywgd2UgaW5jcmVhc2UKKyAgICAvLyBvciBkZWNyZWFzZSB0aGUgdmFsdWUgYnkgMS8xMDAg
b2YgdGhlIHZhbHVlIHJhbmdlLiBJcyBpdCByZWFzb25hYmxlPworICAgIGNvbnN0IERlY2ltYWwg
c3RlcCA9IGVxdWFsSWdub3JpbmdDYXNlKGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShzdGVw
QXR0ciksICJhbnkiKSA/IChzdGVwUmFuZ2UubWF4aW11bSgpIC0gc3RlcFJhbmdlLm1pbmltdW0o
KSkgLyAxMDAgOiBzdGVwUmFuZ2Uuc3RlcCgpOworICAgIGNvbnN0IERlY2ltYWwgYmlnU3RlcCA9
IG1heCgoc3RlcFJhbmdlLm1heGltdW0oKSAtIHN0ZXBSYW5nZS5taW5pbXVtKCkpIC8gMTAsIHN0
ZXApOwogCiAgICAgYm9vbCBpc1ZlcnRpY2FsID0gZmFsc2U7CiAgICAgaWYgKGVsZW1lbnQoKS0+
cmVuZGVyZXIoKSkgewpAQCAtMTY0LDcgKzE1Miw3IEBAIHZvaWQgUmFuZ2VJbnB1dFR5cGU6Omhh
bmRsZUtleWRvd25FdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKICAgICAgICAgaXNWZXJ0aWNh
bCA9IHBhcnQgPT0gU2xpZGVyVmVydGljYWxQYXJ0IHx8IHBhcnQgPT0gTWVkaWFWb2x1bWVTbGlk
ZXJQYXJ0OwogICAgIH0KIAotICAgIGRvdWJsZSBuZXdWYWx1ZTsKKyAgICBEZWNpbWFsIG5ld1Zh
bHVlOwogICAgIGlmIChrZXkgPT0gIlVwIikKICAgICAgICAgbmV3VmFsdWUgPSBjdXJyZW50ICsg
c3RlcDsKICAgICBlbHNlIGlmIChrZXkgPT0gIkRvd24iKQpAQCAtMTg5LDcgKzE3Nyw3IEBAIHZv
aWQgUmFuZ2VJbnB1dFR5cGU6OmhhbmRsZUtleWRvd25FdmVudChLZXlib2FyZEV2ZW50KiBldmVu
dCkKICAgICBpZiAobmV3VmFsdWUgIT0gY3VycmVudCkgewogICAgICAgICBFeGNlcHRpb25Db2Rl
IGVjOwogICAgICAgICBUZXh0RmllbGRFdmVudEJlaGF2aW9yIGV2ZW50QmVoYXZpb3IgPSBEaXNw
YXRjaENoYW5nZUV2ZW50OwotICAgICAgICBzZXRWYWx1ZUFzTnVtYmVyKG5ld1ZhbHVlLCBldmVu
dEJlaGF2aW9yLCBlYyk7CisgICAgICAgIHNldFZhbHVlQXNOdW1iZXIocGFyc2VUb0RvdWJsZUZv
ck51bWJlclR5cGUobmV3VmFsdWUudG9TdHJpbmcoKSksIGV2ZW50QmVoYXZpb3IsIGVjKTsKIAog
ICAgICAgICBpZiAoQVhPYmplY3RDYWNoZTo6YWNjZXNzaWJpbGl0eUVuYWJsZWQoKSkKICAgICAg
ICAgICAgIGVsZW1lbnQoKS0+ZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNoZSgpLT5wb3N0Tm90aWZp
Y2F0aW9uKGVsZW1lbnQoKS0+cmVuZGVyZXIoKSwgQVhPYmplY3RDYWNoZTo6QVhWYWx1ZUNoYW5n
ZWQsIHRydWUpOwpAQCAtMjE5LDE2ICsyMDcsMTQgQEAgUmVuZGVyT2JqZWN0KiBSYW5nZUlucHV0
VHlwZTo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopIGMK
ICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyU2xpZGVyKGVsZW1lbnQoKSk7CiB9CiAKLWRv
dWJsZSBSYW5nZUlucHV0VHlwZTo6cGFyc2VUb0RvdWJsZShjb25zdCBTdHJpbmcmIHNyYywgZG91
YmxlIGRlZmF1bHRWYWx1ZSkgY29uc3QKK0RlY2ltYWwgUmFuZ2VJbnB1dFR5cGU6OnBhcnNlVG9E
ZWNpbWFsKGNvbnN0IFN0cmluZyYgc3JjLCBjb25zdCBEZWNpbWFsJiBkZWZhdWx0VmFsdWUpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKHNyYywgZGVmYXVs
dFZhbHVlKTsKKyAgICByZXR1cm4gcGFyc2VUb0RlY2ltYWxGb3JOdW1iZXJUeXBlKHNyYywgZGVm
YXVsdFZhbHVlKTsKIH0KIAotU3RyaW5nIFJhbmdlSW5wdXRUeXBlOjpzZXJpYWxpemUoZG91Ymxl
IHZhbHVlKSBjb25zdAorU3RyaW5nIFJhbmdlSW5wdXRUeXBlOjpzZXJpYWxpemUoY29uc3QgRGVj
aW1hbCYgdmFsdWUpIGNvbnN0CiB7Ci0gICAgaWYgKCFpc2Zpbml0ZSh2YWx1ZSkpCi0gICAgICAg
IHJldHVybiBTdHJpbmcoKTsKLSAgICByZXR1cm4gc2VyaWFsaXplRm9yTnVtYmVyVHlwZSh2YWx1
ZSk7CisgICAgcmV0dXJuIHZhbHVlLmlzRmluaXRlKCkgPyBzZXJpYWxpemVGb3JOdW1iZXJUeXBl
KHZhbHVlKSA6IGVtcHR5U3RyaW5nKCk7CiB9CiAKIC8vIEZJWE1FOiBDb3VsZCBzaGFyZSB0aGlz
IHdpdGggQmFzZUNsaWNrYWJsZVdpdGhLZXlJbnB1dFR5cGUgYW5kIEJhc2VDaGVja2FibGVJbnB1
dFR5cGUgaWYgd2UgaGFkIGEgY29tbW9uIGJhc2UgY2xhc3MuCkBAIC0yNjgsOCArMjU0LDggQEAg
U3RyaW5nIFJhbmdlSW5wdXRUeXBlOjpmYWxsYmFja1ZhbHVlKCkgY29uc3QKIAogU3RyaW5nIFJh
bmdlSW5wdXRUeXBlOjpzYW5pdGl6ZVZhbHVlKGNvbnN0IFN0cmluZyYgcHJvcG9zZWRWYWx1ZSkg
Y29uc3QKIHsKLSAgICBTdGVwUmFuZ2Ugc3RlcFJhbmdlKGNyZWF0ZVN0ZXBSYW5nZShSZWplY3RB
bnkpKTsKLSAgICBkb3VibGUgcHJvcG9zZWREb3VibGVWYWx1ZSA9IHBhcnNlVG9Eb3VibGUocHJv
cG9zZWRWYWx1ZSwgc3RlcFJhbmdlLmRlZmF1bHRWYWx1ZSgpKTsKKyAgICBjb25zdCBTdGVwUmFu
Z2Ugc3RlcFJhbmdlKGNyZWF0ZVN0ZXBSYW5nZShSZWplY3RBbnkpKTsKKyAgICBjb25zdCBEZWNp
bWFsIHByb3Bvc2VkRG91YmxlVmFsdWUgPSBwYXJzZVRvRGVjaW1hbChwcm9wb3NlZFZhbHVlLCBz
dGVwUmFuZ2UuZGVmYXVsdFZhbHVlKCkpOwogICAgIHJldHVybiBzZXJpYWxpemVGb3JOdW1iZXJU
eXBlKHN0ZXBSYW5nZS5jbGFtcFZhbHVlKHByb3Bvc2VkRG91YmxlVmFsdWUpKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5oCmluZGV4IDQ1ZmI0YWZhM2E5NTRkMzRjNzgxODU5
OWUzMWRiNTM0ODQ3OWQxZjMuLjdjZDg3YThiYjU3YzFjZThhMjA0NWFjZTA3YzdlYTJmNjMxOGNl
NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmgKQEAgLTU0LDggKzU0LDggQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlS2V5ZG93bkV2ZW50KEtleWJvYXJkRXZl
bnQqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIo
UmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwg
dm9pZCBjcmVhdGVTaGFkb3dTdWJ0cmVlKCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBkb3VibGUg
cGFyc2VUb0RvdWJsZShjb25zdCBTdHJpbmcmLCBkb3VibGUpIGNvbnN0IE9WRVJSSURFOwotICAg
IHZpcnR1YWwgU3RyaW5nIHNlcmlhbGl6ZShkb3VibGUpIGNvbnN0IE9WRVJSSURFOworICAgIHZp
cnR1YWwgRGVjaW1hbCBwYXJzZVRvRGVjaW1hbChjb25zdCBTdHJpbmcmLCBjb25zdCBEZWNpbWFs
JikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBTdHJpbmcgc2VyaWFsaXplKGNvbnN0IERl
Y2ltYWwmKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgYWNjZXNzS2V5QWN0aW9u
KGJvb2wgc2VuZE1vdXNlRXZlbnRzKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgbWluT3JN
YXhBdHRyaWJ1dGVDaGFuZ2VkKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldFZhbHVl
KGNvbnN0IFN0cmluZyYsIGJvb2wgdmFsdWVDaGFuZ2VkLCBUZXh0RmllbGRFdmVudEJlaGF2aW9y
KSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvU3RlcFJhbmdlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvU3RlcFJhbmdlLmNwcAppbmRleCA5YjliN2RjYzk0OWNj
NzVkNTUwYjA4MDdhOTNiNzYwNDU3ODg3YTg5Li5kY2EzYWUyMTE1NTUzNGRkNTc1N2YwNjM2NDJh
MTdlNmY3ODFlMmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1N0ZXBSYW5nZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9TdGVwUmFuZ2UuY3BwCkBAIC0zNyw4ICszNyw2
IEBAIFN0ZXBSYW5nZTo6U3RlcFJhbmdlKCkKICAgICAsIG1fbWluaW11bSgwKQogICAgICwgbV9z
dGVwKDEpCiAgICAgLCBtX3N0ZXBCYXNlKDApCi0gICAgLCBtX3N0ZXBCYXNlRGVjaW1hbFBsYWNl
cygwKQotICAgICwgbV9zdGVwRGVjaW1hbFBsYWNlcygwKQogICAgICwgbV9oYXNTdGVwKGZhbHNl
KQogewogfQpAQCAtNDksNTUgKzQ3LDQ0IEBAIFN0ZXBSYW5nZTo6U3RlcFJhbmdlKGNvbnN0IFN0
ZXBSYW5nZSYgc3RlcFJhbmdlKQogICAgICwgbV9zdGVwKHN0ZXBSYW5nZS5tX3N0ZXApCiAgICAg
LCBtX3N0ZXBCYXNlKHN0ZXBSYW5nZS5tX3N0ZXBCYXNlKQogICAgICwgbV9zdGVwRGVzY3JpcHRp
b24oc3RlcFJhbmdlLm1fc3RlcERlc2NyaXB0aW9uKQotICAgICwgbV9zdGVwQmFzZURlY2ltYWxQ
bGFjZXMoc3RlcFJhbmdlLm1fc3RlcEJhc2VEZWNpbWFsUGxhY2VzKQotICAgICwgbV9zdGVwRGVj
aW1hbFBsYWNlcyhzdGVwUmFuZ2UubV9zdGVwRGVjaW1hbFBsYWNlcykKICAgICAsIG1faGFzU3Rl
cChzdGVwUmFuZ2UubV9oYXNTdGVwKQogewogfQogCi1TdGVwUmFuZ2U6OlN0ZXBSYW5nZShjb25z
dCBEb3VibGVXaXRoRGVjaW1hbFBsYWNlcyYgc3RlcEJhc2UsIGRvdWJsZSBtaW5pbXVtLCBkb3Vi
bGUgbWF4aW11bSwgY29uc3QgRG91YmxlV2l0aERlY2ltYWxQbGFjZXNPck1pc3NpbmcmIHN0ZXAs
IGNvbnN0IFN0ZXBEZXNjcmlwdGlvbiYgc3RlcERlc2NyaXB0aW9uKQorU3RlcFJhbmdlOjpTdGVw
UmFuZ2UoY29uc3QgRGVjaW1hbCYgc3RlcEJhc2UsIGNvbnN0IERlY2ltYWwmIG1pbmltdW0sIGNv
bnN0IERlY2ltYWwmIG1heGltdW0sIGNvbnN0IERlY2ltYWxPck1pc3NpbmcmIHN0ZXAsIGNvbnN0
IFN0ZXBEZXNjcmlwdGlvbiYgc3RlcERlc2NyaXB0aW9uKQogICAgIDogbV9tYXhpbXVtKG1heGlt
dW0pCiAgICAgLCBtX21pbmltdW0obWluaW11bSkKLSAgICAsIG1fc3RlcChzdGVwLnZhbHVlLnZh
bHVlKQotICAgICwgbV9zdGVwQmFzZShzdGVwQmFzZS52YWx1ZSkKKyAgICAsIG1fc3RlcChzdGVw
LnZhbHVlKQorICAgICwgbV9zdGVwQmFzZShzdGVwQmFzZSkKICAgICAsIG1fc3RlcERlc2NyaXB0
aW9uKHN0ZXBEZXNjcmlwdGlvbikKLSAgICAsIG1fc3RlcEJhc2VEZWNpbWFsUGxhY2VzKHN0ZXBC
YXNlLmRlY2ltYWxQbGFjZXMpCi0gICAgLCBtX3N0ZXBEZWNpbWFsUGxhY2VzKHN0ZXAudmFsdWUu
ZGVjaW1hbFBsYWNlcykKICAgICAsIG1faGFzU3RlcChzdGVwLmhhc1ZhbHVlKQogewotICAgIEFT
U0VSVChpc2Zpbml0ZShtX21heGltdW0pKTsKLSAgICBBU1NFUlQoaXNmaW5pdGUobV9taW5pbXVt
KSk7Ci0gICAgQVNTRVJUKGlzZmluaXRlKG1fc3RlcCkpOwotICAgIEFTU0VSVChpc2Zpbml0ZSht
X3N0ZXBCYXNlKSk7CisgICAgQVNTRVJUKG1fbWF4aW11bS5pc0Zpbml0ZSgpKTsKKyAgICBBU1NF
UlQobV9taW5pbXVtLmlzRmluaXRlKCkpOworICAgIEFTU0VSVChtX3N0ZXAuaXNGaW5pdGUoKSk7
CisgICAgQVNTRVJUKG1fc3RlcEJhc2UuaXNGaW5pdGUoKSk7CiB9CiAKLWRvdWJsZSBTdGVwUmFu
Z2U6OmFjY2VwdGFibGVFcnJvcigpIGNvbnN0CitEZWNpbWFsIFN0ZXBSYW5nZTo6YWNjZXB0YWJs
ZUVycm9yKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9zdGVwIC8gcG93KDIuMCwgRkxUX01BTlRf
RElHKTsKKyAgICByZXR1cm4gbV9zdGVwIC8gRGVjaW1hbCgyKS5wb3coRkxUX01BTlRfRElHKTsK
IH0KIAotZG91YmxlIFN0ZXBSYW5nZTo6YWxpZ25WYWx1ZUZvclN0ZXAoZG91YmxlIGN1cnJlbnRW
YWx1ZSwgdW5zaWduZWQgY3VycmVudERlY2ltYWxQbGFjZXMsIGRvdWJsZSBuZXdWYWx1ZSkgY29u
c3QKK0RlY2ltYWwgU3RlcFJhbmdlOjphbGlnblZhbHVlRm9yU3RlcChjb25zdCBEZWNpbWFsJiBj
dXJyZW50VmFsdWUsIGNvbnN0IERlY2ltYWwmIG5ld1ZhbHVlKSBjb25zdAogewotICAgIGlmIChu
ZXdWYWx1ZSA+PSBwb3coMTAuMCwgMjEuMCkpCisgICAgaWYgKG5ld1ZhbHVlID49IERlY2ltYWwo
MTApLnBvdygyMSkpCiAgICAgICAgIHJldHVybiBuZXdWYWx1ZTsKIAotICAgIGlmIChzdGVwTWlz
bWF0Y2goY3VycmVudFZhbHVlKSkgewotICAgICAgICBkb3VibGUgc2NhbGUgPSBwb3coMTAuMCwg
c3RhdGljX2Nhc3Q8ZG91YmxlPihtYXgobV9zdGVwRGVjaW1hbFBsYWNlcywgY3VycmVudERlY2lt
YWxQbGFjZXMpKSk7Ci0gICAgICAgIG5ld1ZhbHVlID0gcm91bmQobmV3VmFsdWUgKiBzY2FsZSkg
LyBzY2FsZTsKLSAgICB9IGVsc2UgewotICAgICAgICBkb3VibGUgc2NhbGUgPSBwb3coMTAuMCwg
c3RhdGljX2Nhc3Q8ZG91YmxlPihtYXgobV9zdGVwRGVjaW1hbFBsYWNlcywgbV9zdGVwQmFzZURl
Y2ltYWxQbGFjZXMpKSk7Ci0gICAgICAgIG5ld1ZhbHVlID0gcm91bmQoKG1fc3RlcEJhc2UgKyBy
b3VuZCgobmV3VmFsdWUgLSBtX3N0ZXBCYXNlKSAvIG1fc3RlcCkgKiBtX3N0ZXApICogc2NhbGUp
IC8gc2NhbGU7Ci0gICAgfQotCi0gICAgcmV0dXJuIG5ld1ZhbHVlOworICAgIHJldHVybiBzdGVw
TWlzbWF0Y2goY3VycmVudFZhbHVlKSA/IG5ld1ZhbHVlIDogcm91bmRCeVN0ZXAobmV3VmFsdWUs
IG1fc3RlcEJhc2UpOwogfQotZG91YmxlIFN0ZXBSYW5nZTo6Y2xhbXBWYWx1ZShkb3VibGUgdmFs
dWUpIGNvbnN0CisKK0RlY2ltYWwgU3RlcFJhbmdlOjpjbGFtcFZhbHVlKGNvbnN0IERlY2ltYWwm
IHZhbHVlKSBjb25zdAogewotICAgIGRvdWJsZSBjbGFtcGVkVmFsdWUgPSBtYXgobV9taW5pbXVt
LCBtaW4odmFsdWUsIG1fbWF4aW11bSkpOworICAgIERlY2ltYWwgY2xhbXBlZFZhbHVlID0gbWF4
KG1fbWluaW11bSwgbWluKHZhbHVlLCBtX21heGltdW0pKTsKICAgICBpZiAoIW1faGFzU3RlcCkK
ICAgICAgICAgcmV0dXJuIGNsYW1wZWRWYWx1ZTsKICAgICAvLyBSb3VuZHMgY2xhbXBlZFZhbHVl
IHRvIG1pbmltdW0gKyBOICogc3RlcC4KLSAgICBjbGFtcGVkVmFsdWUgPSBtX21pbmltdW0gKyBy
b3VuZCgoY2xhbXBlZFZhbHVlIC0gbV9taW5pbXVtKSAvIG1fc3RlcCkgKiBtX3N0ZXA7CisgICAg
Y2xhbXBlZFZhbHVlID0gcm91bmRCeVN0ZXAoY2xhbXBlZFZhbHVlLCBtX21pbmltdW0pOwogICAg
IGlmIChjbGFtcGVkVmFsdWUgPiBtX21heGltdW0pCiAgICAgICAgY2xhbXBlZFZhbHVlIC09IG1f
c3RlcDsKICAgICBBU1NFUlQoY2xhbXBlZFZhbHVlID49IG1fbWluaW11bSk7CkBAIC0xMDUsNzAg
KzkyLDY5IEBAIGRvdWJsZSBTdGVwUmFuZ2U6OmNsYW1wVmFsdWUoZG91YmxlIHZhbHVlKSBjb25z
dAogICAgIHJldHVybiBjbGFtcGVkVmFsdWU7CiB9CiAKLVN0ZXBSYW5nZTo6RG91YmxlV2l0aERl
Y2ltYWxQbGFjZXNPck1pc3NpbmcgU3RlcFJhbmdlOjpwYXJzZVN0ZXAoQW55U3RlcEhhbmRsaW5n
IGFueVN0ZXBIYW5kbGluZywgY29uc3QgU3RlcERlc2NyaXB0aW9uJiBzdGVwRGVzY3JpcHRpb24s
IGNvbnN0IFN0cmluZyYgc3RlcFN0cmluZykKK1N0ZXBSYW5nZTo6RGVjaW1hbE9yTWlzc2luZyBT
dGVwUmFuZ2U6OnBhcnNlU3RlcChBbnlTdGVwSGFuZGxpbmcgYW55U3RlcEhhbmRsaW5nLCBjb25z
dCBTdGVwRGVzY3JpcHRpb24mIHN0ZXBEZXNjcmlwdGlvbiwgY29uc3QgU3RyaW5nJiBzdGVwU3Ry
aW5nKQogewogICAgIGlmIChzdGVwU3RyaW5nLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIERv
dWJsZVdpdGhEZWNpbWFsUGxhY2VzT3JNaXNzaW5nKHN0ZXBEZXNjcmlwdGlvbi5kZWZhdWx0VmFs
dWUoKSk7CisgICAgICAgIHJldHVybiBEZWNpbWFsT3JNaXNzaW5nKHN0ZXBEZXNjcmlwdGlvbi5k
ZWZhdWx0VmFsdWUoKSk7CiAKICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uoc3RlcFN0cmluZywg
ImFueSIpKSB7CiAgICAgICAgIHN3aXRjaCAoYW55U3RlcEhhbmRsaW5nKSB7CiAgICAgICAgIGNh
c2UgUmVqZWN0QW55OgotICAgICAgICAgICAgcmV0dXJuIERvdWJsZVdpdGhEZWNpbWFsUGxhY2Vz
T3JNaXNzaW5nKERvdWJsZVdpdGhEZWNpbWFsUGxhY2VzKDEpLCBmYWxzZSk7CisgICAgICAgICAg
ICByZXR1cm4gRGVjaW1hbE9yTWlzc2luZyhEZWNpbWFsKDEpLCBmYWxzZSk7CiAgICAgICAgIGNh
c2UgQW55SXNEZWZhdWx0U3RlcDoKLSAgICAgICAgICAgIHJldHVybiBEb3VibGVXaXRoRGVjaW1h
bFBsYWNlc09yTWlzc2luZyhzdGVwRGVzY3JpcHRpb24uZGVmYXVsdFZhbHVlKCkpOworICAgICAg
ICAgICAgcmV0dXJuIERlY2ltYWxPck1pc3Npbmcoc3RlcERlc2NyaXB0aW9uLmRlZmF1bHRWYWx1
ZSgpKTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgICAgICB9CiAgICAgfQogCi0gICAgRG91YmxlV2l0aERlY2ltYWxQbGFjZXNPck1pc3Np
bmcgc3RlcCgwKTsKLSAgICBzdGVwLnZhbHVlLnZhbHVlID0gcGFyc2VUb0RvdWJsZUZvck51bWJl
clR5cGVXaXRoRGVjaW1hbFBsYWNlcyhzdGVwU3RyaW5nLCAmc3RlcC52YWx1ZS5kZWNpbWFsUGxh
Y2VzKTsKLSAgICBpZiAoIWlzZmluaXRlKHN0ZXAudmFsdWUudmFsdWUpIHx8IHN0ZXAudmFsdWUu
dmFsdWUgPD0gMC4wKQotICAgICAgICByZXR1cm4gRG91YmxlV2l0aERlY2ltYWxQbGFjZXNPck1p
c3Npbmcoc3RlcERlc2NyaXB0aW9uLmRlZmF1bHRWYWx1ZSgpKTsKKyAgICBEZWNpbWFsIHN0ZXAo
cGFyc2VUb0RlY2ltYWxGb3JOdW1iZXJUeXBlKHN0ZXBTdHJpbmcpKTsKKyAgICBpZiAoIXN0ZXAu
aXNGaW5pdGUoKSB8fCBzdGVwIDw9IDApCisgICAgICAgIHJldHVybiBEZWNpbWFsT3JNaXNzaW5n
KHN0ZXBEZXNjcmlwdGlvbi5kZWZhdWx0VmFsdWUoKSk7CiAKICAgICBzd2l0Y2ggKHN0ZXBEZXNj
cmlwdGlvbi5zdGVwVmFsdWVTaG91bGRCZSkgewogICAgIGNhc2UgU3RlcFZhbHVlU2hvdWxkQmVS
ZWFsOgotICAgICAgICBzdGVwLnZhbHVlLnZhbHVlICo9IHN0ZXBEZXNjcmlwdGlvbi5zdGVwU2Nh
bGVGYWN0b3I7CisgICAgICAgIHN0ZXAgKj0gc3RlcERlc2NyaXB0aW9uLnN0ZXBTY2FsZUZhY3Rv
cjsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQYXJzZWRTdGVwVmFsdWVTaG91bGRCZUludGVn
ZXI6CiAgICAgICAgIC8vIEZvciBkYXRlLCBtb250aCwgYW5kIHdlZWssIHRoZSBwYXJzZWQgdmFs
dWUgc2hvdWxkIGJlIGFuIGludGVnZXIgZm9yIHNvbWUgdHlwZXMuCi0gICAgICAgIHN0ZXAudmFs
dWUudmFsdWUgPSBtYXgocm91bmQoc3RlcC52YWx1ZS52YWx1ZSksIDEuMCk7Ci0gICAgICAgIHN0
ZXAudmFsdWUudmFsdWUgKj0gc3RlcERlc2NyaXB0aW9uLnN0ZXBTY2FsZUZhY3RvcjsKKyAgICAg
ICAgc3RlcCA9IG1heChzdGVwLnJvdW5kKCksIERlY2ltYWwoMSkpOworICAgICAgICBzdGVwICo9
IHN0ZXBEZXNjcmlwdGlvbi5zdGVwU2NhbGVGYWN0b3I7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgU2NhbGVkU3RlcFZhbHVlU2hvdWxkQmVJbnRlZ2VyOgogICAgICAgICAvLyBGb3IgZGF0ZXRp
bWUsIGRhdGV0aW1lLWxvY2FsLCB0aW1lLCB0aGUgcmVzdWx0IHNob3VsZCBiZSBhbiBpbnRlZ2Vy
LgotICAgICAgICBzdGVwLnZhbHVlLnZhbHVlICo9IHN0ZXBEZXNjcmlwdGlvbi5zdGVwU2NhbGVG
YWN0b3I7Ci0gICAgICAgIHN0ZXAudmFsdWUudmFsdWUgPSBtYXgocm91bmQoc3RlcC52YWx1ZS52
YWx1ZSksIDEuMCk7CisgICAgICAgIHN0ZXAgKj0gc3RlcERlc2NyaXB0aW9uLnN0ZXBTY2FsZUZh
Y3RvcjsKKyAgICAgICAgc3RlcCA9IG1heChzdGVwLnJvdW5kKCksIERlY2ltYWwoMSkpOwogICAg
ICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICB9CiAKLSAgICBBU1NFUlQoc3RlcC52YWx1ZS52YWx1ZSA+IDApOwotICAgIHJldHVybiBz
dGVwOworICAgIEFTU0VSVChzdGVwID4gMCk7CisgICAgcmV0dXJuIERlY2ltYWxPck1pc3Npbmco
c3RlcCk7CiB9CiAKLWJvb2wgU3RlcFJhbmdlOjpzdGVwTWlzbWF0Y2goZG91YmxlIGRvdWJsZVZh
bHVlKSBjb25zdAorYm9vbCBTdGVwUmFuZ2U6OnN0ZXBNaXNtYXRjaChjb25zdCBEZWNpbWFsJiB2
YWx1ZUZvckNoZWNrKSBjb25zdAogewogICAgIGlmICghbV9oYXNTdGVwKQogICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgaWYgKCFpc2Zpbml0ZShkb3VibGVWYWx1ZSkpCisgICAgaWYgKCF2YWx1
ZUZvckNoZWNrLmlzRmluaXRlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBkb3VibGVW
YWx1ZSA9IGZhYnMoZG91YmxlVmFsdWUgLSBtX3N0ZXBCYXNlKTsKLSAgICBpZiAoaXNpbmYoZG91
YmxlVmFsdWUpKQorICAgIERlY2ltYWwgdmFsdWUgPSAodmFsdWVGb3JDaGVjayAtIG1fc3RlcEJh
c2UpLmFicygpOworICAgIGlmICghdmFsdWUuaXNGaW5pdGUoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIC8vIGRvdWJsZSdzIGZyYWN0aW9uYWwgcGFydCBzaXplIGlzIERCTF9NQU5fRElH
LWJpdC4gSWYgdGhlIGN1cnJlbnQgdmFsdWUKKyAgICAvLyBEZWNpbWFsJ3MgZnJhY3Rpb25hbCBw
YXJ0IHNpemUgaXMgREJMX01BTl9ESUctYml0LiBJZiB0aGUgY3VycmVudCB2YWx1ZQogICAgIC8v
IGlzIGdyZWF0ZXIgdGhhbiBzdGVwKjJeREJMX01BTlRfRElHLCB0aGUgZm9sbG93aW5nIGNvbXB1
dGF0aW9uIGZvcgogICAgIC8vIHJlbWFpbmRlciBtYWtlcyBubyBzZW5zZS4KLSAgICBpZiAoZG91
YmxlVmFsdWUgLyBwb3coMi4wLCBEQkxfTUFOVF9ESUcpID4gbV9zdGVwKQorICAgIGlmICh2YWx1
ZSAvIERlY2ltYWwoMikucG93KERCTF9NQU5UX0RJRykgPiBtX3N0ZXApCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAvLyBUaGUgY29tcHV0YXRpb24gZm9sbG93cyBIVE1MNSA0LjEwLjcuMi4x
MCBgVGhlIHN0ZXAgYXR0cmlidXRlJyA6CiAgICAgLy8gLi4uIHRoYXQgbnVtYmVyIHN1YnRyYWN0
ZWQgZnJvbSB0aGUgc3RlcCBiYXNlIGlzIG5vdCBhbiBpbnRlZ3JhbCBtdWx0aXBsZQogICAgIC8v
IG9mIHRoZSBhbGxvd2VkIHZhbHVlIHN0ZXAsIHRoZSBlbGVtZW50IGlzIHN1ZmZlcmluZyBmcm9t
IGEgc3RlcCBtaXNtYXRjaC4KLSAgICBkb3VibGUgcmVtYWluZGVyID0gZmFicyhkb3VibGVWYWx1
ZSAtIG1fc3RlcCAqIHJvdW5kKGRvdWJsZVZhbHVlIC8gbV9zdGVwKSk7CisgICAgY29uc3QgRGVj
aW1hbCByZW1haW5kZXIgPSAodmFsdWUgLSBtX3N0ZXAgKiAodmFsdWUgLyBtX3N0ZXApLnJvdW5k
KCkpLmFicygpOwogICAgIC8vIEFjY2VwdHMgZXJyb3MgaW4gbG93ZXIgZnJhY3Rpb25hbCBwYXJ0
IHdoaWNoIElFRUUgNzU0IHNpbmdsZS1wcmVjaXNpb24KICAgICAvLyBjYW4ndCByZXByZXNlbnQu
Ci0gICAgZG91YmxlIGNvbXB1dGVkQWNjZXB0YWJsZUVycm9yID0gYWNjZXB0YWJsZUVycm9yKCk7
CisgICAgY29uc3QgRGVjaW1hbCBjb21wdXRlZEFjY2VwdGFibGVFcnJvciA9IGFjY2VwdGFibGVF
cnJvcigpOwogICAgIHJldHVybiBjb21wdXRlZEFjY2VwdGFibGVFcnJvciA8IHJlbWFpbmRlciAm
JiByZW1haW5kZXIgPCAobV9zdGVwIC0gY29tcHV0ZWRBY2NlcHRhYmxlRXJyb3IpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1N0ZXBSYW5nZS5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9TdGVwUmFuZ2UuaAppbmRleCAwYWRiZmQ4NTdhNTA2OTk5MzFjYmQzOTEwNmY2YjA0
YTZlNzQyYzhkLi4zMGE2MzBmYjk5YzBkMWU0NTdlMDNmYWFmOTkxMDI4OGQ2Mjc1MzhkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1N0ZXBSYW5nZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvU3RlcFJhbmdlLmgKQEAgLTIxLDYgKzIxLDcgQEAKICNpZm5kZWYgU3RlcFJhbmdl
X2gKICNkZWZpbmUgU3RlcFJhbmdlX2gKIAorI2luY2x1ZGUgIkRlY2ltYWwuaCIKICNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCkBAIC0zMiwy
MiArMzMsMTEgQEAgZW51bSBBbnlTdGVwSGFuZGxpbmcgeyBSZWplY3RBbnksIEFueUlzRGVmYXVs
dFN0ZXAgfTsKIAogY2xhc3MgU3RlcFJhbmdlIHsKIHB1YmxpYzoKLSAgICBzdHJ1Y3QgRG91Ymxl
V2l0aERlY2ltYWxQbGFjZXMgewotICAgICAgICB1bnNpZ25lZCBkZWNpbWFsUGxhY2VzOwotICAg
ICAgICBkb3VibGUgdmFsdWU7Ci0KLSAgICAgICAgRG91YmxlV2l0aERlY2ltYWxQbGFjZXMoZG91
YmxlIHZhbHVlID0gMCwgdW5zaWduZWQgZGVjaW1hbFBsYWNlcyA9IDApCi0gICAgICAgICAgICA6
IGRlY2ltYWxQbGFjZXMoZGVjaW1hbFBsYWNlcykKLSAgICAgICAgICAgICwgdmFsdWUodmFsdWUp
Ci0gICAgICAgIHsKLSAgICAgICAgfQotICAgIH07Ci0KLSAgICBzdHJ1Y3QgRG91YmxlV2l0aERl
Y2ltYWxQbGFjZXNPck1pc3NpbmcgeworICAgIHN0cnVjdCBEZWNpbWFsT3JNaXNzaW5nIHsKICAg
ICAgICAgYm9vbCBoYXNWYWx1ZTsKLSAgICAgICAgRG91YmxlV2l0aERlY2ltYWxQbGFjZXMgdmFs
dWU7CisgICAgICAgIERlY2ltYWwgdmFsdWU7CiAKLSAgICAgICAgRG91YmxlV2l0aERlY2ltYWxQ
bGFjZXNPck1pc3NpbmcoRG91YmxlV2l0aERlY2ltYWxQbGFjZXMgdmFsdWUsIGJvb2wgaGFzVmFs
dWUgPSB0cnVlKQorICAgICAgICBEZWNpbWFsT3JNaXNzaW5nKGNvbnN0IERlY2ltYWwmIHZhbHVl
LCBib29sIGhhc1ZhbHVlID0gdHJ1ZSkKICAgICAgICAgICAgIDogaGFzVmFsdWUoaGFzVmFsdWUp
CiAgICAgICAgICAgICAsIHZhbHVlKHZhbHVlKQogICAgICAgICB7CkBAIC04Miw3ICs3Miw3IEBA
IHB1YmxpYzoKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgZG91YmxlIGRlZmF1bHRW
YWx1ZSgpIGNvbnN0CisgICAgICAgIERlY2ltYWwgZGVmYXVsdFZhbHVlKCkgY29uc3QKICAgICAg
ICAgewogICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRTdGVwICogc3RlcFNjYWxlRmFjdG9yOwog
ICAgICAgICB9CkBAIC05MCwyOSArODAsMzIgQEAgcHVibGljOgogCiAgICAgU3RlcFJhbmdlKCk7
CiAgICAgU3RlcFJhbmdlKGNvbnN0IFN0ZXBSYW5nZSYpOwotICAgIFN0ZXBSYW5nZShjb25zdCBE
b3VibGVXaXRoRGVjaW1hbFBsYWNlcyYgc3RlcEJhc2UsIGRvdWJsZSBtaW5pbXVtLCBkb3VibGUg
bWF4aW11bSwgY29uc3QgRG91YmxlV2l0aERlY2ltYWxQbGFjZXNPck1pc3NpbmcmIHN0ZXAsIGNv
bnN0IFN0ZXBEZXNjcmlwdGlvbiYpOwotICAgIGRvdWJsZSBhY2NlcHRhYmxlRXJyb3IoKSBjb25z
dDsKLSAgICBkb3VibGUgYWxpZ25WYWx1ZUZvclN0ZXAoZG91YmxlIGN1cnJlbnRWYWx1ZSwgdW5z
aWduZWQgY3VycmVudERlY2ltYWxQbGFjZXMsIGRvdWJsZSBuZXdWYWx1ZSkgY29uc3Q7Ci0gICAg
ZG91YmxlIGNsYW1wVmFsdWUoZG91YmxlIHZhbHVlKSBjb25zdDsKKyAgICBTdGVwUmFuZ2UoY29u
c3QgRGVjaW1hbCYgc3RlcEJhc2UsIGNvbnN0IERlY2ltYWwmIG1pbmltdW0sIGNvbnN0IERlY2lt
YWwmIG1heGltdW0sIGNvbnN0IERlY2ltYWxPck1pc3NpbmcmIHN0ZXAsIGNvbnN0IFN0ZXBEZXNj
cmlwdGlvbiYpOworICAgIERlY2ltYWwgYWNjZXB0YWJsZUVycm9yKCkgY29uc3Q7CisgICAgRGVj
aW1hbCBhbGlnblZhbHVlRm9yU3RlcChjb25zdCBEZWNpbWFsJiBjdXJyZW50VmFsdWUsIGNvbnN0
IERlY2ltYWwmIG5ld1ZhbHVlKSBjb25zdDsKKyAgICBEZWNpbWFsIGNsYW1wVmFsdWUoY29uc3Qg
RGVjaW1hbCYpIGNvbnN0OwogICAgIGJvb2wgaGFzU3RlcCgpIGNvbnN0IHsgcmV0dXJuIG1faGFz
U3RlcDsgfQotICAgIGRvdWJsZSBtYXhpbXVtKCkgY29uc3QgeyByZXR1cm4gbV9tYXhpbXVtOyB9
Ci0gICAgZG91YmxlIG1pbmltdW0oKSBjb25zdCB7IHJldHVybiBtX21pbmltdW07IH0KLSAgICBz
dGF0aWMgRG91YmxlV2l0aERlY2ltYWxQbGFjZXNPck1pc3NpbmcgcGFyc2VTdGVwKEFueVN0ZXBI
YW5kbGluZywgY29uc3QgU3RlcERlc2NyaXB0aW9uJiwgY29uc3QgU3RyaW5nJik7Ci0gICAgZG91
YmxlIHN0ZXAoKSBjb25zdCB7IHJldHVybiBtX3N0ZXA7IH0KLSAgICBkb3VibGUgc3RlcEJhc2Uo
KSBjb25zdCB7IHJldHVybiBtX3N0ZXBCYXNlOyB9Ci0gICAgdW5zaWduZWQgc3RlcEJhc2VEZWNp
bWFsUGxhY2VzKCkgY29uc3QgeyByZXR1cm4gbV9zdGVwQmFzZURlY2ltYWxQbGFjZXM7IH0KLSAg
ICB1bnNpZ25lZCBzdGVwRGVjaW1hbFBsYWNlcygpIGNvbnN0IHsgcmV0dXJuIG1fc3RlcERlY2lt
YWxQbGFjZXM7IH0KKyAgICBEZWNpbWFsIG1heGltdW0oKSBjb25zdCB7IHJldHVybiBtX21heGlt
dW07IH0KKyAgICBEZWNpbWFsIG1pbmltdW0oKSBjb25zdCB7IHJldHVybiBtX21pbmltdW07IH0K
KyAgICBzdGF0aWMgRGVjaW1hbE9yTWlzc2luZyBwYXJzZVN0ZXAoQW55U3RlcEhhbmRsaW5nLCBj
b25zdCBTdGVwRGVzY3JpcHRpb24mLCBjb25zdCBTdHJpbmcmKTsKKyAgICBEZWNpbWFsIHN0ZXAo
KSBjb25zdCB7IHJldHVybiBtX3N0ZXA7IH0KKyAgICBEZWNpbWFsIHN0ZXBCYXNlKCkgY29uc3Qg
eyByZXR1cm4gbV9zdGVwQmFzZTsgfQogICAgIGludCBzdGVwU2NhbGVGYWN0b3IoKSBjb25zdCB7
IHJldHVybiBtX3N0ZXBEZXNjcmlwdGlvbi5zdGVwU2NhbGVGYWN0b3I7IH0KLSAgICBib29sIHN0
ZXBNaXNtYXRjaChkb3VibGUpIGNvbnN0OworICAgIGJvb2wgc3RlcE1pc21hdGNoKGNvbnN0IERl
Y2ltYWwmKSBjb25zdDsKIAogICAgIC8vIENsYW1wIHRoZSBtaWRkbGUgdmFsdWUgYWNjb3JkaW5n
IHRvIHRoZSBzdGVwCi0gICAgZG91YmxlIGRlZmF1bHRWYWx1ZSgpIGNvbnN0CisgICAgRGVjaW1h
bCBkZWZhdWx0VmFsdWUoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIGNsYW1wVmFsdWUo
KG1fbWluaW11bSArIG1fbWF4aW11bSkgLyAyKTsKICAgICB9CiAKKyAgICBzdGF0aWMgRGVjaW1h
bCBlbnN1cmVNYXhpbXVtKGNvbnN0IERlY2ltYWwgcHJvcG9zZWRWYWx1ZSwgY29uc3QgRGVjaW1h
bCYgbWluaW11bSwgY29uc3QgRGVjaW1hbCYgZmFsbGJhY2tWYWx1ZSkKKyAgICB7CisgICAgICAg
IHJldHVybiBwcm9wb3NlZFZhbHVlID49IG1pbmltdW0gPyBwcm9wb3NlZFZhbHVlIDogc3RkOjpt
YXgobWluaW11bSwgZmFsbGJhY2tWYWx1ZSk7CisgICAgfQorCiAgICAgLy8gTWFwIHZhbHVlIGlu
dG8gMC0xIHJhbmdlCi0gICAgZG91YmxlIHByb3BvcnRpb25Gcm9tVmFsdWUoZG91YmxlIHZhbHVl
KSBjb25zdAorICAgIERlY2ltYWwgcHJvcG9ydGlvbkZyb21WYWx1ZShjb25zdCBEZWNpbWFsJiB2
YWx1ZSkgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChtX21pbmltdW0gPT0gbV9tYXhpbXVtKQog
ICAgICAgICAgICAgcmV0dXJuIDA7CkBAIC0xMjEsNyArMTE0LDcgQEAgcHVibGljOgogICAgIH0K
IAogICAgIC8vIE1hcCBmcm9tIDAtMSByYW5nZSB0byB2YWx1ZQotICAgIGRvdWJsZSB2YWx1ZUZy
b21Qcm9wb3J0aW9uKGRvdWJsZSBwcm9wb3J0aW9uKSBjb25zdAorICAgIERlY2ltYWwgdmFsdWVG
cm9tUHJvcG9ydGlvbihjb25zdCBEZWNpbWFsJiBwcm9wb3J0aW9uKSBjb25zdAogICAgIHsKICAg
ICAgICAgcmV0dXJuIG1fbWluaW11bSArIHByb3BvcnRpb24gKiAobV9tYXhpbXVtIC0gbV9taW5p
bXVtKTsKICAgICB9CkBAIC0xMjksMTMgKzEyMiwxNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAg
IFN0ZXBSYW5nZSYgb3BlcmF0b3IgPShjb25zdCBTdGVwUmFuZ2UmKTsKIAotICAgIGNvbnN0IGRv
dWJsZSBtX21heGltdW07IC8vIG1heGltdW0gbXVzdCBiZSA+PSBtaW5pbXVtLgotICAgIGNvbnN0
IGRvdWJsZSBtX21pbmltdW07Ci0gICAgY29uc3QgZG91YmxlIG1fc3RlcDsKLSAgICBjb25zdCBk
b3VibGUgbV9zdGVwQmFzZTsKKyAgICBEZWNpbWFsIHJvdW5kQnlTdGVwKGNvbnN0IERlY2ltYWwm
IHZhbHVlLCBjb25zdCBEZWNpbWFsJiBiYXNlKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IGJhc2UgKyAoKHZhbHVlIC0gYmFzZSkgLyBtX3N0ZXApLnJvdW5kKCkgKiBtX3N0ZXA7CisgICAg
fQorCisgICAgY29uc3QgRGVjaW1hbCBtX21heGltdW07IC8vIG1heGltdW0gbXVzdCBiZSA+PSBt
aW5pbXVtLgorICAgIGNvbnN0IERlY2ltYWwgbV9taW5pbXVtOworICAgIGNvbnN0IERlY2ltYWwg
bV9zdGVwOworICAgIGNvbnN0IERlY2ltYWwgbV9zdGVwQmFzZTsKICAgICBjb25zdCBTdGVwRGVz
Y3JpcHRpb24gbV9zdGVwRGVzY3JpcHRpb247Ci0gICAgY29uc3QgdW5zaWduZWQgbV9zdGVwQmFz
ZURlY2ltYWxQbGFjZXM7Ci0gICAgY29uc3QgdW5zaWduZWQgbV9zdGVwRGVjaW1hbFBsYWNlczsK
ICAgICBjb25zdCBib29sIG1faGFzU3RlcDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAKaW5kZXggYTk5YTIxYTA4ZTViZGQwODY1ZmEz
M2M3Mzk1NTA0MDE3MmMzOGIzMS4uNWJkMGUzMzBmZDI0NTAyM2VjNzdiZmJkMTgzYmRiNTliODZl
N2U2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklk
aW9tcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9t
cy5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJI
VE1MUGFyc2VySWRpb21zLmgiCiAKKyNpbmNsdWRlICJEZWNpbWFsLmgiCiAjaW5jbHVkZSA8bGlt
aXRzPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL2R0b2EuaD4K
QEAgLTU4LDYgKzU5LDExIEBAIFN0cmluZyBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFj
ZXMoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgcmV0dXJuIHN0cmluZy5zdWJzdHJpbmcobnVt
TGVhZGluZ1NwYWNlcywgbGVuZ3RoIC0gKG51bUxlYWRpbmdTcGFjZXMgKyBudW1UcmFpbGluZ1Nw
YWNlcykpOwogfQogCitTdHJpbmcgc2VyaWFsaXplRm9yTnVtYmVyVHlwZShjb25zdCBEZWNpbWFs
JiBudW1iZXIpCit7CisgICAgcmV0dXJuIG51bWJlci50b1N0cmluZygpOworfQorCiBTdHJpbmcg
c2VyaWFsaXplRm9yTnVtYmVyVHlwZShkb3VibGUgbnVtYmVyKQogewogICAgIC8vIEFjY29yZGlu
ZyB0byBIVE1MNSwgInRoZSBiZXN0IHJlcHJlc2VudGF0aW9uIG9mIHRoZSBudW1iZXIgbiBhcyBh
IGZsb2F0aW5nCkBAIC02Niw2ICs3Miw0MCBAQCBTdHJpbmcgc2VyaWFsaXplRm9yTnVtYmVyVHlw
ZShkb3VibGUgbnVtYmVyKQogICAgIHJldHVybiBTdHJpbmcobnVtYmVyVG9TdHJpbmcobnVtYmVy
LCBidWZmZXIpKTsKIH0KIAorRGVjaW1hbCBwYXJzZVRvRGVjaW1hbEZvck51bWJlclR5cGUoY29u
c3QgU3RyaW5nJiBzdHJpbmcsIGNvbnN0IERlY2ltYWwmIGZhbGxiYWNrVmFsdWUpCit7CisgICAg
Ly8gU2VlIEhUTUw1IDIuNS40LjMgYFJlYWwgbnVtYmVycy4nIGFuZCBwYXJzZVRvRG91YmxlRm9y
TnVtYmVyVHlwZQorCisgICAgLy8gU3RyaW5nOjp0b0RvdWJsZSgpIGFjY2VwdHMgbGVhZGluZyAr
IGFuZCB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMsIHdoaWNoIGFyZSBub3QgdmFsaWQgaGVyZS4KKyAg
ICBVQ2hhciBmaXJzdENoYXJhY3RlciA9IHN0cmluZ1swXTsKKyAgICBpZiAoZmlyc3RDaGFyYWN0
ZXIgIT0gJy0nICYmIGZpcnN0Q2hhcmFjdGVyICE9ICcuJyAmJiAhaXNBU0NJSURpZ2l0KGZpcnN0
Q2hhcmFjdGVyKSkKKyAgICAgICAgcmV0dXJuIGZhbGxiYWNrVmFsdWU7CisKKyAgICBEZWNpbWFs
IHZhbHVlID0gRGVjaW1hbDo6ZnJvbVN0cmluZyhzdHJpbmcpOworICAgIGlmICghdmFsdWUuaXNG
aW5pdGUoKSkKKyAgICAgICAgcmV0dXJuIGZhbGxiYWNrVmFsdWU7CisKKyAgICAvLyBGSVhNRTog
VUlOVDY0X0MoMTc5NzY5MzEzNDg2MjMxNTkpIHNob3VsZCBiZSB1c2VkIGJ1dCBpdCBkaWQgbm90
IGNvbXBpbGUgb24gUXQgYm90cy4KKyNpZiBDT01QSUxFUihNU1ZDKQorICAgIGNvbnN0IHVpbnQ2
NF90IGxlYWRpbmdEaWdpdHNPZjJQb3dlcjEwMjQgPSAxNzk3NjkzMTM0ODYyMzE1OXVpNjQ7Cisj
ZWxzZQorICAgIGNvbnN0IHVpbnQ2NF90IGxlYWRpbmdEaWdpdHNPZjJQb3dlcjEwMjQgPSAxNzk3
NjkzMTM0ODYyMzE1OXVsbDsKKyNlbmRpZgorICAgIERlY2ltYWwgaHRtbE1heChEZWNpbWFsOjpF
bmNvZGVkRGF0YShsZWFkaW5nRGlnaXRzT2YyUG93ZXIxMDI0LCAyOTIsIERlY2ltYWw6OlBsdXMp
KTsKKyAgICBEZWNpbWFsIGh0bWxNaW4oRGVjaW1hbDo6RW5jb2RlZERhdGEobGVhZGluZ0RpZ2l0
c09mMlBvd2VyMTAyNCwgMjkyLCBEZWNpbWFsOjpNaW51cykpOworCisgICAgaWYgKHZhbHVlIDwg
aHRtbE1pbiB8fCB2YWx1ZSA+IGh0bWxNYXgpCisgICAgICAgIHJldHVybiBmYWxsYmFja1ZhbHVl
OworCisgICAgLy8gV2UgcmV0dXJuICswIGZvciAtMCBjYXNlLgorICAgIHJldHVybiB2YWx1ZS5p
c1plcm8oKSA/IERlY2ltYWwoMCkgOiB2YWx1ZTsKK30KKworRGVjaW1hbCBwYXJzZVRvRGVjaW1h
bEZvck51bWJlclR5cGUoY29uc3QgU3RyaW5nJiBzdHJpbmcpCit7CisgICAgcmV0dXJuIHBhcnNl
VG9EZWNpbWFsRm9yTnVtYmVyVHlwZShzdHJpbmcsIERlY2ltYWw6Om5hbigpKTsKK30KKwogZG91
YmxlIHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBkb3Vi
bGUgZmFsbGJhY2tWYWx1ZSkKIHsKICAgICAvLyBTZWUgSFRNTDUgMi41LjQuMyBgUmVhbCBudW1i
ZXJzLicKQEAgLTk4LDg0ICsxMzgsNiBAQCBkb3VibGUgcGFyc2VUb0RvdWJsZUZvck51bWJlclR5
cGUoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgcmV0dXJuIHBhcnNlVG9Eb3VibGVGb3JOdW1i
ZXJUeXBlKHN0cmluZywgc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKSk7
CiB9CiAKLWRvdWJsZSBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZVdpdGhEZWNpbWFsUGxhY2Vz
KGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1bnNpZ25lZCAqZGVjaW1hbFBsYWNlcywgZG91YmxlIGZh
bGxiYWNrVmFsdWUpCi17Ci0gICAgaWYgKGRlY2ltYWxQbGFjZXMpCi0gICAgICAgICpkZWNpbWFs
UGxhY2VzID0gMDsKLQotICAgIGRvdWJsZSB2YWx1ZSA9IHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJU
eXBlKHN0cmluZywgc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKSk7Ci0g
ICAgaWYgKCFpc2Zpbml0ZSh2YWx1ZSkpCi0gICAgICAgIHJldHVybiBmYWxsYmFja1ZhbHVlOwot
Ci0gICAgaWYgKCFkZWNpbWFsUGxhY2VzKQotICAgICAgICByZXR1cm4gdmFsdWU7Ci0KLSAgICBz
aXplX3QgZG90SW5kZXggPSBzdHJpbmcuZmluZCgnLicpOwotICAgIHNpemVfdCBlSW5kZXggPSBz
dHJpbmcuZmluZCgnZScpOwotICAgIGlmIChlSW5kZXggPT0gbm90Rm91bmQpIAotICAgICAgICBl
SW5kZXggPSBzdHJpbmcuZmluZCgnRScpOwotCi0gICAgdW5zaWduZWQgYmFzZURlY2ltYWxQbGFj
ZXMgPSAwOwotICAgIGlmIChkb3RJbmRleCAhPSBub3RGb3VuZCkgewotICAgICAgICBpZiAoZUlu
ZGV4ID09IG5vdEZvdW5kKQotICAgICAgICAgICAgYmFzZURlY2ltYWxQbGFjZXMgPSBzdHJpbmcu
bGVuZ3RoKCkgLSBkb3RJbmRleCAtIDE7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGJhc2VE
ZWNpbWFsUGxhY2VzID0gZUluZGV4IC0gZG90SW5kZXggLSAxOwotICAgIH0KLQotICAgIGludCBl
eHBvbmVudCA9IDA7Ci0gICAgaWYgKGVJbmRleCAhPSBub3RGb3VuZCkgewotICAgICAgICB1bnNp
Z25lZCBjdXJzb3IgPSBlSW5kZXggKyAxLCBjdXJzb3JTYXZlZDsKLSAgICAgICAgaW50IGRpZ2l0
LCBleHBvbmVudFNpZ247Ci0gICAgICAgIGludDMyX3QgZXhwb25lbnQzMjsKLSAgICAgICAgc2l6
ZV90IGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKLQotICAgICAgICAvLyBOb3QgdXNpbmcgU3Ry
aW5nLnRvSW50KCkgaW4gb3JkZXIgdG8gcGVyZm9ybSB0aGUgc2FtZSBjb21wdXRhdGlvbiBhcyBk
dG9hKCkgZG9lcy4KLSAgICAgICAgZXhwb25lbnRTaWduID0gMDsKLSAgICAgICAgc3dpdGNoIChk
aWdpdCA9IHN0cmluZ1tjdXJzb3JdKSB7Ci0gICAgICAgIGNhc2UgJy0nOgotICAgICAgICAgICAg
ZXhwb25lbnRTaWduID0gMTsKLSAgICAgICAgY2FzZSAnKyc6Ci0gICAgICAgICAgICBkaWdpdCA9
IHN0cmluZ1srK2N1cnNvcl07Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGRpZ2l0ID49ICcwJyAm
JiBkaWdpdCA8PSAnOScpIHsKLSAgICAgICAgICAgIHdoaWxlIChjdXJzb3IgPCBsZW5ndGggJiYg
ZGlnaXQgPT0gJzAnKQotICAgICAgICAgICAgICAgIGRpZ2l0ID0gc3RyaW5nWysrY3Vyc29yXTsK
LSAgICAgICAgICAgIGlmIChkaWdpdCA+ICcwJyAmJiBkaWdpdCA8PSAnOScpIHsKLSAgICAgICAg
ICAgICAgICBleHBvbmVudDMyID0gZGlnaXQgLSAnMCc7Ci0gICAgICAgICAgICAgICAgY3Vyc29y
U2F2ZWQgPSBjdXJzb3I7Ci0gICAgICAgICAgICAgICAgd2hpbGUgKGN1cnNvciA8IGxlbmd0aCAm
JiAoZGlnaXQgPSBzdHJpbmdbKytjdXJzb3JdKSA+PSAnMCcgJiYgZGlnaXQgPD0gJzknKQotICAg
ICAgICAgICAgICAgICAgICBleHBvbmVudDMyID0gKDEwICogZXhwb25lbnQzMikgKyBkaWdpdCAt
ICcwJzsKLSAgICAgICAgICAgICAgICBpZiAoY3Vyc29yIC0gY3Vyc29yU2F2ZWQgPiA4IHx8IGV4
cG9uZW50MzIgPiAxOTk5OSkKLSAgICAgICAgICAgICAgICAgICAgLyogQXZvaWQgY29uZnVzaW9u
IGZyb20gZXhwb25lbnRzCi0gICAgICAgICAgICAgICAgICAgICAqIHNvIGxhcmdlIHRoYXQgZSBt
aWdodCBvdmVyZmxvdy4KLSAgICAgICAgICAgICAgICAgICAgICovCi0gICAgICAgICAgICAgICAg
ICAgIGV4cG9uZW50ID0gMTk5OTk7IC8qIHNhZmUgZm9yIDE2IGJpdCBpbnRzICovCi0gICAgICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBleHBvbmVudCA9IHN0YXRpY19jYXN0
PGludD4oZXhwb25lbnQzMik7Ci0gICAgICAgICAgICAgICAgaWYgKGV4cG9uZW50U2lnbikKLSAg
ICAgICAgICAgICAgICAgICAgZXhwb25lbnQgPSAtZXhwb25lbnQ7Ci0gICAgICAgICAgICB9IGVs
c2UKLSAgICAgICAgICAgICAgICBleHBvbmVudCA9IDA7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAg
ICBpbnQgaW50RGVjaW1hbFBsYWNlcyA9IGJhc2VEZWNpbWFsUGxhY2VzIC0gZXhwb25lbnQ7Ci0g
ICAgaWYgKGludERlY2ltYWxQbGFjZXMgPCAwKQotICAgICAgICAqZGVjaW1hbFBsYWNlcyA9IDA7
Ci0gICAgZWxzZSBpZiAoaW50RGVjaW1hbFBsYWNlcyA+IDE5OTk5KQotICAgICAgICAqZGVjaW1h
bFBsYWNlcyA9IDE5OTk5OwotICAgIGVsc2UKLSAgICAgICAgKmRlY2ltYWxQbGFjZXMgPSBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oaW50RGVjaW1hbFBsYWNlcyk7Ci0KLSAgICByZXR1cm4gdmFsdWU7
Ci19Ci0KLWRvdWJsZSBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZVdpdGhEZWNpbWFsUGxhY2Vz
KGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1bnNpZ25lZCAqZGVjaW1hbFBsYWNlcykKLXsKLSAgICBy
ZXR1cm4gcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGVXaXRoRGVjaW1hbFBsYWNlcyhzdHJpbmcs
IGRlY2ltYWxQbGFjZXMsIHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCkp
OwotfQotCiAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13
b3JrLyNydWxlcy1mb3ItcGFyc2luZy1pbnRlZ2VycwogYm9vbCBwYXJzZUhUTUxJbnRlZ2VyKGNv
bnN0IFN0cmluZyYgaW5wdXQsIGludCYgdmFsdWUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmgKaW5kZXggOGE3NzRmOWVlNDMyNWY3OTk2ZGNlZTgw
MmU3ODU5MjFmMTIwMDcyMS4uZThlYmJlM2QwNjBlMWEzOGM0YjQ4YTRjMDJhYjM1NTcxOWYyYWVi
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9t
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuaApA
QCAtMzAsNiArMzAsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIERlY2ltYWw7
CisKIC8vIFNwYWNlIGNoYXJhY3RlcnMgYXMgZGVmaW5lZCBieSB0aGUgSFRNTCBzcGVjaWZpY2F0
aW9uLgogYm9vbCBpc0hUTUxTcGFjZShVQ2hhcik7CiBib29sIGlzSFRNTExpbmVCcmVhayhVQ2hh
cik7CkBAIC0zOSwxNSArNDEsMTggQEAgYm9vbCBpc05vdEhUTUxTcGFjZShVQ2hhcik7CiBTdHJp
bmcgc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKGNvbnN0IFN0cmluZyYpOwogCiAv
LyBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgSFRNTCBzcGVjaWZpY2F0aW9uJ3MgYWxnb3JpdGht
IHRvIGNvbnZlcnQgYSBudW1iZXIgdG8gYSBzdHJpbmcgZm9yIG51bWJlciBhbmQgcmFuZ2UgdHlw
ZXMuCitTdHJpbmcgc2VyaWFsaXplRm9yTnVtYmVyVHlwZShjb25zdCBEZWNpbWFsJik7CiBTdHJp
bmcgc2VyaWFsaXplRm9yTnVtYmVyVHlwZShkb3VibGUpOwogCisvLyBDb252ZXJ0IHRoZSBzcGVj
aWZpZWQgc3RyaW5nIHRvIGEgZGVjaW1hbC4gSWYgdGhlIGNvbnZlcnNpb24gZmFpbHMsIHRoZSBy
ZXR1cm4gdmFsdWUgaXMgZmFsc2UuCisvLyBMZWFkaW5nIG9yIHRyYWlsaW5nIGlsbGVnYWwgY2hh
cmFjdGVycyBjYXVzZSBmYWlsdXJlLCBhcyBkb2VzIHBhc3NpbmcgYW4gZW1wdHkgc3RyaW5nLgor
RGVjaW1hbCBwYXJzZVRvRGVjaW1hbEZvck51bWJlclR5cGUoY29uc3QgU3RyaW5nJik7CitEZWNp
bWFsIHBhcnNlVG9EZWNpbWFsRm9yTnVtYmVyVHlwZShjb25zdCBTdHJpbmcmLCBjb25zdCBEZWNp
bWFsJiBmYWxsYmFja1ZhbHVlKTsKKwogLy8gQ29udmVydCB0aGUgc3BlY2lmaWVkIHN0cmluZyB0
byBhIGRvdWJsZS4gSWYgdGhlIGNvbnZlcnNpb24gZmFpbHMsIHRoZSByZXR1cm4gdmFsdWUgaXMg
ZmFsc2UuCiAvLyBMZWFkaW5nIG9yIHRyYWlsaW5nIGlsbGVnYWwgY2hhcmFjdGVycyBjYXVzZSBm
YWlsdXJlLCBhcyBkb2VzIHBhc3NpbmcgYW4gZW1wdHkgc3RyaW5nLgotLy8gVGhlIGRvdWJsZSog
cGFyYW1ldGVyIG1heSBiZSAwIHRvIGNoZWNrIGlmIHRoZSBzdHJpbmcgY2FuIGJlIHBhcnNlZCB3
aXRob3V0IGdldHRpbmcgdGhlIHJlc3VsdC4KIGRvdWJsZSBwYXJzZVRvRG91YmxlRm9yTnVtYmVy
VHlwZShjb25zdCBTdHJpbmcmKTsKIGRvdWJsZSBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZShj
b25zdCBTdHJpbmcmLCBkb3VibGUgZmFsbGJhY2tWYWx1ZSk7Ci1kb3VibGUgcGFyc2VUb0RvdWJs
ZUZvck51bWJlclR5cGVXaXRoRGVjaW1hbFBsYWNlcyhjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCop
OwotZG91YmxlIHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlV2l0aERlY2ltYWxQbGFjZXMoY29u
c3QgU3RyaW5nJiwgdW5zaWduZWQqLCBkb3VibGUgZmFsbGJhY2tWYWx1ZSk7CiAKIC8vIGh0dHA6
Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvI3J1bGVzLWZvci1w
YXJzaW5nLWludGVnZXJzCiBib29sIHBhcnNlSFRNTEludGVnZXIoY29uc3QgU3RyaW5nJiwgaW50
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9DYWxlbmRhclBpY2tl
ckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ2FsZW5kYXJQaWNrZXJF
bGVtZW50LmNwcAppbmRleCAxYTdiNDlmYTY0OGY5ZWUzNzgxNDk5NTRlNGE2N2JlZTE2NjJjZDU4
Li41MzU4Y2NhZjdhM2RmMmUzM2EwM2ViZjBjODg5MTFiMGMwODgyYmM1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9DYWxlbmRhclBpY2tlckVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NhbGVuZGFyUGlja2VyRWxlbWVudC5jcHAKQEAg
LTIwOCw3ICsyMDgsNyBAQCB2b2lkIENhbGVuZGFyUGlja2VyRWxlbWVudDo6d3JpdGVEb2N1bWVu
dChEb2N1bWVudFdyaXRlciYgd3JpdGVyKQogICAgIFN0cmluZyBtaW5TdHJpbmcgPSBkYXRlLnRv
U3RyaW5nKCk7CiAgICAgZGF0ZS5zZXRNaWxsaXNlY29uZHNTaW5jZUVwb2NoRm9yRGF0ZShpbnB1
dC0+bWF4aW11bSgpKTsKICAgICBTdHJpbmcgbWF4U3RyaW5nID0gZGF0ZS50b1N0cmluZygpOwot
ICAgIGRvdWJsZSBzdGVwOworICAgIERlY2ltYWwgc3RlcDsKICAgICBTdHJpbmcgc3RlcFN0cmlu
ZyA9IGlucHV0LT5mYXN0R2V0QXR0cmlidXRlKHN0ZXBBdHRyKTsKICAgICBpZiAoc3RlcFN0cmlu
Zy5pc0VtcHR5KCkgfHwgIWlucHV0LT5nZXRBbGxvd2VkVmFsdWVTdGVwKCZzdGVwKSkKICAgICAg
ICAgc3RlcFN0cmluZyA9ICIxIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9T
bGlkZXJUaHVtYkVsZW1lbnQuY3BwCmluZGV4IDg0MjJhMzAxOTkwMjI5OTExYjU4YjYwMDc4ZGQx
ODA5NjQ1ZDlkN2MuLmYyMGRmYWRjYTYwYjIwZDZiZTAwYzM5MTk3YTgyYTc1NTAxYWEwYjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNw
cApAQCAtNTEsMTAgKzUxLDEwIEBAIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotaW5saW5lIHN0YXRpYyBkb3VibGUgc2xpZGVyUG9zaXRpb24oSFRNTElucHV0
RWxlbWVudCogZWxlbWVudCkKK2lubGluZSBzdGF0aWMgRGVjaW1hbCBzbGlkZXJQb3NpdGlvbihI
VE1MSW5wdXRFbGVtZW50KiBlbGVtZW50KQogewogICAgIGNvbnN0IFN0ZXBSYW5nZSBzdGVwUmFu
Z2UoZWxlbWVudC0+Y3JlYXRlU3RlcFJhbmdlKFJlamVjdEFueSkpOwotICAgIGNvbnN0IGRvdWJs
ZSBvbGRWYWx1ZSA9IHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKGVsZW1lbnQtPnZhbHVlKCks
IHN0ZXBSYW5nZS5kZWZhdWx0VmFsdWUoKSk7CisgICAgY29uc3QgRGVjaW1hbCBvbGRWYWx1ZSA9
IHBhcnNlVG9EZWNpbWFsRm9yTnVtYmVyVHlwZShlbGVtZW50LT52YWx1ZSgpLCBzdGVwUmFuZ2Uu
ZGVmYXVsdFZhbHVlKCkpOwogICAgIHJldHVybiBzdGVwUmFuZ2UucHJvcG9ydGlvbkZyb21WYWx1
ZShzdGVwUmFuZ2UuY2xhbXBWYWx1ZShvbGRWYWx1ZSkpOwogfQogCkBAIC0xMTAsNyArMTEwLDcg
QEAgdm9pZCBSZW5kZXJTbGlkZXJUaHVtYjo6bGF5b3V0KCkKICAgICBIVE1MSW5wdXRFbGVtZW50
KiBpbnB1dCA9IG5vZGUoKS0+c2hhZG93QW5jZXN0b3JOb2RlKCktPnRvSW5wdXRFbGVtZW50KCk7
CiAgICAgYm9vbCBpc1ZlcnRpY2FsID0gc3R5bGUoKS0+YXBwZWFyYW5jZSgpID09IFNsaWRlclRo
dW1iVmVydGljYWxQYXJ0IHx8IHN0eWxlKCktPmFwcGVhcmFuY2UoKSA9PSBNZWRpYVZvbHVtZVNs
aWRlclRodW1iUGFydDsKIAotICAgIGRvdWJsZSBmcmFjdGlvbiA9IHNsaWRlclBvc2l0aW9uKGlu
cHV0KSAqIDEwMDsKKyAgICBkb3VibGUgZnJhY3Rpb24gPSBwYXJzZVRvRG91YmxlRm9yTnVtYmVy
VHlwZSgoc2xpZGVyUG9zaXRpb24oaW5wdXQpICogMTAwKS50b1N0cmluZygpKTsKICAgICBpZiAo
aXNWZXJ0aWNhbCkKICAgICAgICAgc3R5bGUoKS0+c2V0VG9wKExlbmd0aCgxMDAgLSBmcmFjdGlv
biwgUGVyY2VudCkpOwogICAgIGVsc2UgaWYgKHN0eWxlKCktPmlzTGVmdFRvUmlnaHREaXJlY3Rp
b24oKSkKQEAgLTIzNiwxMSArMjM2LDEwIEBAIHZvaWQgU2xpZGVyVGh1bWJFbGVtZW50OjpzZXRQ
b3NpdGlvbkZyb21Qb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQpCiAgICAgaWYgKHBvc2l0
aW9uID09IGN1cnJlbnRQb3NpdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgZG91YmxlIGZy
YWN0aW9uID0gc3RhdGljX2Nhc3Q8ZG91YmxlPihwb3NpdGlvbikgLyB0cmFja1NpemU7Ci0gICAg
aWYgKGlzVmVydGljYWwgfHwgIXJlbmRlckJveCgpLT5zdHlsZSgpLT5pc0xlZnRUb1JpZ2h0RGly
ZWN0aW9uKCkpCi0gICAgICAgIGZyYWN0aW9uID0gMSAtIGZyYWN0aW9uOwotICAgIFN0ZXBSYW5n
ZSBzdGVwUmFuZ2UoaW5wdXQtPmNyZWF0ZVN0ZXBSYW5nZShSZWplY3RBbnkpKTsKLSAgICBkb3Vi
bGUgdmFsdWUgPSBzdGVwUmFuZ2UuY2xhbXBWYWx1ZShzdGVwUmFuZ2UudmFsdWVGcm9tUHJvcG9y
dGlvbihmcmFjdGlvbikpOworICAgIGNvbnN0IERlY2ltYWwgcmF0aW8gPSBwYXJzZVRvRGVjaW1h
bEZvck51bWJlclR5cGUoc2VyaWFsaXplRm9yTnVtYmVyVHlwZShzdGF0aWNfY2FzdDxkb3VibGU+
KHBvc2l0aW9uKSAvIHRyYWNrU2l6ZSkpOworICAgIGNvbnN0IERlY2ltYWwgZnJhY3Rpb24gPSBp
c1ZlcnRpY2FsIHx8ICFyZW5kZXJCb3goKS0+c3R5bGUoKS0+aXNMZWZ0VG9SaWdodERpcmVjdGlv
bigpID8gIERlY2ltYWwoMSkgLSByYXRpbyA6IHJhdGlvOworICAgIGNvbnN0IFN0ZXBSYW5nZSBz
dGVwUmFuZ2UoaW5wdXQtPmNyZWF0ZVN0ZXBSYW5nZShSZWplY3RBbnkpKTsKKyAgICBjb25zdCBE
ZWNpbWFsIHZhbHVlID0gc3RlcFJhbmdlLmNsYW1wVmFsdWUoc3RlcFJhbmdlLnZhbHVlRnJvbVBy
b3BvcnRpb24oZnJhY3Rpb24pKTsKIAogICAgIC8vIEZJWE1FOiBUaGlzIGlzIG5vIGxvbmdlciBi
ZWluZyBzZXQgZnJvbSByZW5kZXJlci4gQ29uc2lkZXIgdXBkYXRpbmcgdGhlIG1ldGhvZCBuYW1l
LgogICAgIGlucHV0LT5zZXRWYWx1ZUZyb21SZW5kZXJlcihzZXJpYWxpemVGb3JOdW1iZXJUeXBl
KHZhbHVlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EZWNpbWFsLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RlY2ltYWwuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIyMWEx
OGU4NzMzZjdlZDYxZTJjMjg2MjJiMGM5Nzk3YmU2YzczNzUKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EZWNpbWFsLmNwcApAQCAtMCwwICsxLDExNjUgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICog
ZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRGVjaW1hbC5oIgorCisjaW5jbHVkZSA8YWxnb3Jp
dGhtPgorI2luY2x1ZGUgPGZsb2F0Lmg+CisKKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgor
I2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1
aWxkZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgRGVjaW1hbFByaXZh
dGUgeworCit1c2luZyBuYW1lc3BhY2Ugc3RkOworCisvLyBGSVhNRTogVUlOVDY0X0MoMHgxNjM0
NTc4NUQ4OUZGRkYpIHNob3VsZCBiZSB1c2VkIGJ1dCBpdCBkaWQgbm90IGNvbXBpbGUgb24gUXQg
Ym90cy4KKyNpZiBDT01QSUxFUihNU1ZDKQorc3RhdGljIGNvbnN0IHVpbnQ2NF90IE1heENvZWZm
aWNpZW50ID0gMHgxNjM0NTc4NUQ4OUZGRkZ1aTY0OyAvLyA5OTk5OTk5OTk5OTk5OTk5OTk7IC8v
IDE4IDkncworI2Vsc2UKK3N0YXRpYyBjb25zdCB1aW50NjRfdCBNYXhDb2VmZmljaWVudCA9IDB4
MTYzNDU3ODVEODlGRkZGdWxsOyAvLyA5OTk5OTk5OTk5OTk5OTk5OTk7IC8vIDE4IDkncworI2Vu
ZGlmCisKK3N0YXRpYyBjb25zdCB1aW50MzJfdCBFeHBvbmVudE1hc2sgPSAweDdGRjsKKworc3Rh
dGljIGNvbnN0IHVpbnQzMl90IE5lZ2F0aXZlSW5maW5pdHlQYXR0ZXJuID0gdWludDMyX3QoMHg4
MDAwMDdGRik7CitzdGF0aWMgY29uc3QgdWludDMyX3QgUG9zaXRpdmVJbmZpbml0eVBhdHRlcm4g
PSB1aW50MzJfdCgweDAwMDAwN0ZGKTsKKworc3RhdGljIGNvbnN0IHVpbnQzMl90IE5hTlBhdHRl
cm4gPSB1aW50MzJfdCgweDAwMDAwRkZGKTsKKworc3RhdGljIGNvbnN0IHVpbnQzMl90IE5lZ2F0
aXZlWmVyb1BhdHRlcm4gPSB1aW50MzJfdCgweDgwMDAwM0ZGKTsKK3N0YXRpYyBjb25zdCB1aW50
MzJfdCBQb3NpdGl2ZVplcm9QYXR0ZXJuID0gdWludDMyX3QoMHgwMDAwMDNGRik7CisKK3N0YXRp
YyBjb25zdCB1aW50MzJfdCBOZWdhdGl2ZVBhdHRlcm4gPSB1aW50MzJfdCgweDgwMDAwMDAwKTsK
K3N0YXRpYyBjb25zdCB1aW50MzJfdCBQb3NpdGl2ZVBhdHRlcm4gPSAwOworCisvLyBUaGlzIGNs
YXNzIGhhbmRsZXMgRGVjaW1hbCBzcGVjaWFsIHZhbHVlcy4KK2NsYXNzIFNwZWNpYWxWYWx1ZUhh
bmRsZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNwZWNpYWxWYWx1ZUhhbmRsZXIpOwor
cHVibGljOgorICAgIGVudW0gSGFuZGxlUmVzdWx0IHsKKyAgICAgICAgQm90aEZpbml0ZSwKKyAg
ICAgICAgQm90aGluZmluaXR5LAorICAgICAgICBFaXRoZXJOYU4sCisgICAgICAgIExoc0lzaW5m
aW5pdHksCisgICAgICAgIFJoc0lzaW5maW5pdHksCisgICAgfTsKKworICAgIFNwZWNpYWxWYWx1
ZUhhbmRsZXIoY29uc3QgRGVjaW1hbCYsIGNvbnN0IERlY2ltYWwmKTsKKyAgICBIYW5kbGVSZXN1
bHQgaGFuZGxlKCk7CisgICAgRGVjaW1hbCB2YWx1ZSgpIGNvbnN0OworCitwcml2YXRlOgorICAg
IGVudW0gUmVzdWx0IHsKKyAgICAgICAgUmVzdWx0SXNMaHMsCisgICAgICAgIFJlc3VsdElzUmhz
LAorICAgICAgICBSZXN1bHRJc1Vua25vd24sCisgICAgfTsKKworICAgIGNvbnN0IERlY2ltYWwm
IG1fbGhzOworICAgIFJlc3VsdCBtX3Jlc3VsdDsKKyAgICBjb25zdCBEZWNpbWFsJiBtX3JoczsK
K307CisKKy8vIFRoaXMgY2xhc3MgaXMgdXNlZCBmb3IgMTI4IGJpdCB1bnNpZ25lZCBpbnRlZ2Vy
IGFyaXRobWV0aWMuCitjbGFzcyBVSW50MTI4IHsKK3B1YmxpYzoKKyAgICBVSW50MTI4KHVpbnQ2
NF90LCB1aW50NjRfdCk7CisKKyAgICBVSW50MTI4JiBvcGVyYXRvciAvPSh1aW50MzJfdCk7CisK
KyAgICB1aW50NjRfdCBoaWdoKCkgY29uc3QgeyByZXR1cm4gbV9oaWdoOyB9CisgICAgdWludDY0
X3QgbG93KCkgY29uc3QgeyByZXR1cm4gbV9sb3c7IH0KKworICAgIHN0YXRpYyBVSW50MTI4IG11
bHRpcGx5KHVpbnQ2NF90LCB1aW50NjRfdCk7CisKK3ByaXZhdGU6CisgICAgYm9vbCBpc1plcm8o
KSBjb25zdCB7IHJldHVybiAhbV9sb3cgJiYgIW1faGlnaDsgfQorCisgICAgdWludDY0X3QgbV9o
aWdoOworICAgIHVpbnQ2NF90IG1fbG93OworfTsKKworc3RhdGljIGludCBjb3VudERpZ2l0cyh1
aW50NjRfdCB4KQoreworICAgIGludCBudW1iZXJPZkRpZ2l0cyA9IDA7CisgICAgdWludDY0X3Qg
cG93ZXJPZjEwID0gMTsKKyAgICB3aGlsZSAoeCA+PSBwb3dlck9mMTApIHsKKyAgICAgICAgKytu
dW1iZXJPZkRpZ2l0czsKKyAgICAgICAgaWYgKHBvd2VyT2YxMCA+PSB1aW50NjRfdCgtMSkgLyAx
MCkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBwb3dlck9mMTAgKj0gMTA7CisgICAgfQor
ICAgIHJldHVybiBudW1iZXJPZkRpZ2l0czsKK30KKworc3RhdGljIHVpbnQ2NF90IG11bHRpcGx5
SGlnaCh1aW50NjRfdCB1LCB1aW50NjRfdCB2KQoreworICAgIGNvbnN0IGludCBuID0gNjQ7Cisg
ICAgY29uc3QgaW50IG4yID0gbiAvIDI7CisgICAgY29uc3QgdWludDY0X3QgbWFzayA9ICh1aW50
NjRfdCgxKSA8PCBuMikgLSAxOworICAgIHVpbnQ2NF90IHUwID0gdSAmIG1hc2s7CisgICAgdWlu
dDY0X3QgdTEgPSB1ID4+IG4yOworICAgIHVpbnQ2NF90IHYwID0gdiAmIG1hc2s7CisgICAgdWlu
dDY0X3QgdjEgPSB2ID4+IG4yOworICAgIHVpbnQ2NF90IHcwID0gdTAgKiB2MDsKKyAgICB1aW50
NjRfdCB0dCA9IHUxICogdjAgKyAodzAgPj4gbjIpOworICAgIHVpbnQ2NF90IHcxID0gdHQgJiBt
YXNrOworICAgIHVpbnQ2NF90IHcyID0gdHQgPj4gbjI7CisgICAgdzEgPSB1MCAqIHYxICsgdzE7
CisgICAgcmV0dXJuIHUxICogdjEgKyB3MiArICh3MSA+PiBuMik7Cit9CisKK3N0YXRpYyB1aW50
NjRfdCBwb3dlcih1aW50NjRfdCBjb25zdCB4LCB1bnNpZ25lZCBuKQoreworICAgIHVpbnQ2NF90
IHkgPSAxOworICAgIHVpbnQ2NF90IHogPSB4OworICAgIGZvciAoOzspIHsKKyAgICAgICAgaWYg
KG4gJiAxKQorICAgICAgICAgICAgeSA9IHkgKiB6OworCisgICAgICAgIG4gPj49IDE7CisgICAg
ICAgIGlmICghbikKKyAgICAgICAgICAgIHJldHVybiB5OworCisgICAgICAgIHogPSB6ICogejsK
KyAgICB9Cit9CisKK3N0YXRpYyBEZWNpbWFsIHBvd2VyKGNvbnN0IERlY2ltYWwmIHgsIHVuc2ln
bmVkIG4pCit7CisgICAgQVNTRVJUKHguaXNGaW5pdGUoKSk7CisgICAgRGVjaW1hbCB5ID0gMTsK
KyAgICBEZWNpbWFsIHogPSB4OworICAgIGZvciAoOzspIHsKKyAgICAgICAgaWYgKG4gJiAxKSB7
CisgICAgICAgICAgICB5ID0geSAqIHo7CisgICAgICAgICAgICBpZiAoIXkuaXNGaW5pdGUoKSkK
KyAgICAgICAgICAgICAgICByZXR1cm4geTsKKyAgICAgICAgfQorCisgICAgICAgIG4gPj49IDE7
CisgICAgICAgIGlmICghbikKKyAgICAgICAgICAgIHJldHVybiB5OworCisgICAgICAgIHogPSB6
ICogejsKKyAgICAgICAgaWYgKCF6LmlzRmluaXRlKCkpCisgICAgICAgICAgICByZXR1cm4gejsK
KyAgICB9Cit9CisKK3N0YXRpYyB1aW50NjRfdCBzY2FsZURvd24odWludDY0X3QgeCwgaW50IG4p
Cit7CisgICAgQVNTRVJUKG4gPj0gMCk7CisgICAgd2hpbGUgKG4gPiAwICYmIHgpIHsKKyAgICAg
ICAgeCAvPSAxMDsKKyAgICAgICAgLS1uOworICAgIH0KKyAgICByZXR1cm4geDsKK30KKworc3Rh
dGljIHVpbnQ2NF90IHNjYWxlVXAodWludDY0X3QgeCwgaW50IG4pCit7CisgICAgQVNTRVJUKG4g
Pj0gMCk7CisgICAgQVNTRVJUKG4gPCBEZWNpbWFsOjpQcmVjaXNpb24pOworICAgIHVpbnQ2NF90
IHJlc3VsdCA9IHggKiBwb3dlcih1aW50NjRfdCgxMCksIG4pOworICAgIEFTU0VSVChyZXN1bHQg
Pj0geCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworU3BlY2lhbFZhbHVlSGFuZGxlcjo6U3Bl
Y2lhbFZhbHVlSGFuZGxlcihjb25zdCBEZWNpbWFsJiBsaHMsIGNvbnN0IERlY2ltYWwmIHJocykK
KyAgICA6IG1fbGhzKGxocyksIG1fcmVzdWx0KFJlc3VsdElzVW5rbm93biksIG1fcmhzKHJocykK
K3sKK30KKworU3BlY2lhbFZhbHVlSGFuZGxlcjo6SGFuZGxlUmVzdWx0IFNwZWNpYWxWYWx1ZUhh
bmRsZXI6OmhhbmRsZSgpCit7CisgICAgaWYgKG1fbGhzLmlzRmluaXRlKCkgJiYgbV9yaHMuaXNG
aW5pdGUoKSkKKyAgICAgICAgcmV0dXJuIEJvdGhGaW5pdGU7CisKKyAgICBjb25zdCBEZWNpbWFs
OjpGb3JtYXRDbGFzcyBsaHNDbGFzcyA9IG1fbGhzLmZvcm1hdENsYXNzKCk7CisgICAgY29uc3Qg
RGVjaW1hbDo6Rm9ybWF0Q2xhc3MgcmhzQ2xhc3MgPSBtX3Jocy5mb3JtYXRDbGFzcygpOworICAg
IGlmIChsaHNDbGFzcyA9PSBEZWNpbWFsOjpDbGFzc05hTikgeworICAgICAgICBtX3Jlc3VsdCA9
IFJlc3VsdElzTGhzOworICAgICAgICByZXR1cm4gRWl0aGVyTmFOOworICAgICB9CisKKyAgICBp
ZiAocmhzQ2xhc3MgPT0gRGVjaW1hbDo6Q2xhc3NOYU4pIHsKKyAgICAgICAgbV9yZXN1bHQgPSBS
ZXN1bHRJc1JoczsKKyAgICAgICAgcmV0dXJuIEVpdGhlck5hTjsKKyAgICAgfQorCisgICAgaWYg
KGxoc0NsYXNzID09IERlY2ltYWw6OkNsYXNzSW5maW5pdHkpCisgICAgICAgIHJldHVybiByaHND
bGFzcyA9PSBEZWNpbWFsOjpDbGFzc0luZmluaXR5ID8gQm90aGluZmluaXR5IDogTGhzSXNpbmZp
bml0eTsKKworICAgIGlmIChyaHNDbGFzcyA9PSBEZWNpbWFsOjpDbGFzc0luZmluaXR5KQorICAg
ICAgICByZXR1cm4gUmhzSXNpbmZpbml0eTsKKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgIHJldHVybiBCb3RoRmluaXRlOworfQorCitEZWNpbWFsIFNwZWNpYWxWYWx1ZUhhbmRsZXI6
OnZhbHVlKCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKG1fcmVzdWx0KSB7CisgICAgY2FzZSBSZXN1
bHRJc0xoczoKKyAgICAgICAgcmV0dXJuIG1fbGhzOworICAgIGNhc2UgUmVzdWx0SXNSaHM6Cisg
ICAgICAgIHJldHVybiBtX3JoczsKKyAgICBjYXNlIFJlc3VsdElzVW5rbm93bjoKKyAgICBkZWZh
dWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIG1fbGhz
OworICAgIH0KK30KKworVUludDEyODo6VUludDEyOCh1aW50NjRfdCBsb3csIHVpbnQ2NF90IGhp
Z2gpCisgICAgOiBtX2hpZ2goaGlnaCksIG1fbG93KGxvdykKK3sKK30KKworVUludDEyOCYgVUlu
dDEyODo6b3BlcmF0b3IgLz0oY29uc3QgdWludDMyX3QgZGl2aXNvcikKK3sKKyAgICBpZiAoIW1f
aGlnaCkgeworICAgICAgICBtX2xvdyAvPSBkaXZpc29yOworICAgICAgICByZXR1cm4gKnRoaXM7
CisgICAgfQorCisgICAgdWludDMyX3QgZGl2aWRlbmRbNF07CisgICAgZGl2aWRlbmRbMF0gPSB1
aW50MzJfdChtX2xvdyAmIHVpbnQzMl90KC0xKSk7CisgICAgZGl2aWRlbmRbMV0gPSB1aW50MzJf
dChtX2xvdyA+PiAzMik7CisgICAgZGl2aWRlbmRbMl0gPSB1aW50MzJfdChtX2hpZ2ggJiB1aW50
MzJfdCgtMSkpOworICAgIGRpdmlkZW5kWzNdID0gdWludDMyX3QobV9oaWdoID4+IDMyKTsKKwor
ICAgIHVpbnQzMl90IHF1b3RpZW50WzRdOworICAgIHVpbnQzMl90IHJlbWFpbmRlciA9IDA7Cisg
ICAgZm9yIChpbnQgaSA9IDM7IGkgPj0gMDsgLS1pKSB7CisgICAgICAgIGNvbnN0IHVpbnQ2NF90
IHdvcmsgPSAodWludDY0X3QocmVtYWluZGVyKSA8PCAzMikgfCBkaXZpZGVuZFtpXTsKKyAgICAg
ICAgcmVtYWluZGVyID0gdWludDMyX3Qod29yayAlIGRpdmlzb3IpOworICAgICAgICBxdW90aWVu
dFtpXSA9IHVpbnQzMl90KHdvcmsgLyBkaXZpc29yKTsKKyAgICB9CisgICAgbV9sb3cgPSBxdW90
aWVudFswXSB8ICh1aW50NjRfdChxdW90aWVudFsxXSkgPDwgMzIpOworICAgIG1faGlnaCA9IHF1
b3RpZW50WzJdIHwgKHVpbnQ2NF90KHF1b3RpZW50WzNdKSA8PCAzMik7CisgICAgcmV0dXJuICp0
aGlzOworfQorCitVSW50MTI4IFVJbnQxMjg6Om11bHRpcGx5KHVpbnQ2NF90IHUsIHVpbnQ2NF90
IHYpCit7CisgICAgcmV0dXJuIFVJbnQxMjgodSAqIHYsIG11bHRpcGx5SGlnaCh1LCB2KSk7Cit9
CisKK30gLy8gRGVjaW1hbFByaXZhdGUKKwordXNpbmcgbmFtZXNwYWNlIERlY2ltYWxQcml2YXRl
OworCitEZWNpbWFsOjpFbmNvZGVkRGF0YTo6RW5jb2RlZERhdGEodWludDMyX3QgcGF0dGVybikK
KyAgICA6IG1fY29lZmZpY2llbnQoMCkKKyAgICAsIG1fcGFja2VkRmllbGQocGF0dGVybikKK3sK
KyAgICBBU1NFUlQoKHBhdHRlcm4gJiBQb3NpdGl2ZVplcm9QYXR0ZXJuKSA9PSBQb3NpdGl2ZVpl
cm9QYXR0ZXJuKTsKK30KKworRGVjaW1hbDo6RW5jb2RlZERhdGE6OkVuY29kZWREYXRhKHVpbnQ2
NF90IGNvZWZmaWNpZW50LCBjb25zdCBpbnQgZXhwb25lbnQsIGNvbnN0IFNpZ24gc2lnbikKK3sK
KyAgICBpbnQgcmF3RXhwb25lbnQgPSBleHBvbmVudCArIEViaWFzOworICAgIGlmICh1bnNpZ25l
ZChyYXdFeHBvbmVudCkgPCB1bnNpZ25lZChFbWF4KSkgeworICAgICAgICB3aGlsZSAoY29lZmZp
Y2llbnQgPj0gTWF4Q29lZmZpY2llbnQpIHsKKyAgICAgICAgICAgIGNvZWZmaWNpZW50IC89IDEw
OworICAgICAgICAgICAgKytyYXdFeHBvbmVudDsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlm
IChyYXdFeHBvbmVudCA+PSBFbWF4KSB7CisgICAgICAgIG1fY29lZmZpY2llbnQgPSAwOworICAg
ICAgICBtX3BhY2tlZEZpZWxkID0gc2lnbiA9PSBNaW51cyA/IE5lZ2F0aXZlSW5maW5pdHlQYXR0
ZXJuIDogUG9zaXRpdmVJbmZpbml0eVBhdHRlcm47CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBpZiAocmF3RXhwb25lbnQgPCAwKSB7CisgICAgICAgIG1fY29lZmZpY2llbnQgPSAwOwor
ICAgICAgICBtX3BhY2tlZEZpZWxkID0gc2lnbiA9PSBNaW51cyA/IE5lZ2F0aXZlWmVyb1BhdHRl
cm4gOiBQb3NpdGl2ZVplcm9QYXR0ZXJuOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
bV9jb2VmZmljaWVudCA9IGNvZWZmaWNpZW50OworICAgIG1fcGFja2VkRmllbGQgPSByYXdFeHBv
bmVudCB8IChzaWduID09IE1pbnVzID8gTmVnYXRpdmVQYXR0ZXJuIDogUG9zaXRpdmVQYXR0ZXJu
KTsKK30KKwordWludDY0X3QgRGVjaW1hbDo6RW5jb2RlZERhdGE6OmNvZWZmaWNpZW50KCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9jb2VmZmljaWVudDsKK30KKworaW50IERlY2ltYWw6OkVuY29k
ZWREYXRhOjpleHBvbmVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHJhd0V4cG9uZW50KCkgLSBE
ZWNpbWFsOjpFYmlhczsKK30KKworYm9vbCBEZWNpbWFsOjpFbmNvZGVkRGF0YTo6aXNGaW5pdGUo
KSBjb25zdAoreworICAgIHJldHVybiAhaXNTcGVjaWFsKCk7Cit9CisKK2Jvb2wgRGVjaW1hbDo6
RW5jb2RlZERhdGE6OmlzU3BlY2lhbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHJhd0V4cG9uZW50
KCkgPT0gRGVjaW1hbDo6RW1heDsKK30KKworYm9vbCBEZWNpbWFsOjpFbmNvZGVkRGF0YTo6aXNa
ZXJvKCkgY29uc3QKK3sKKyAgICByZXR1cm4gaXNGaW5pdGUoKSAmJiAhbV9jb2VmZmljaWVudDsK
K30KKworaW50IERlY2ltYWw6OkVuY29kZWREYXRhOjpyYXdFeHBvbmVudCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIGludChtX3BhY2tlZEZpZWxkICYgRXhwb25lbnRNYXNrKTsKK30KKworRGVjaW1h
bDo6U2lnbiBEZWNpbWFsOjpFbmNvZGVkRGF0YTo6c2lnbigpIGNvbnN0Cit7CisgICAgcmV0dXJu
IGludChtX3BhY2tlZEZpZWxkKSA8IDAgPyBNaW51cyA6IFBsdXM7Cit9CisKK3ZvaWQgRGVjaW1h
bDo6RW5jb2RlZERhdGE6OnNldFNpZ24oY29uc3QgU2lnbiBzaWduKQoreworICAgIGlmIChzaWdu
ID09IE1pbnVzKQorICAgICAgICBtX3BhY2tlZEZpZWxkIHw9IHVpbnQzMl90KDEpIDw8IDMxOwor
ICAgIGVsc2UKKyAgICAgICAgbV9wYWNrZWRGaWVsZCAmPSB+KHVpbnQzMl90KDEpIDw8IDMxKTsK
K30KKworRGVjaW1hbDo6RGVjaW1hbCgpCisgICAgOiBtX2RhdGEoMCwgMCwgUGx1cykKK3sKK30K
KworRGVjaW1hbDo6RGVjaW1hbChpbnQzMl90IGkzMikKKyAgICA6IG1fZGF0YShpMzIgPCAwID8g
dWludDMyX3QoLWkzMikgOiBpMzIsIDAsIGkzMiA8IDAgPyBNaW51cyA6IFBsdXMpCit7Cit9CisK
K0RlY2ltYWw6OkRlY2ltYWwodWludDY0X3QgY29lZmZpY2llbnQsIGludCBleHBvbmVudCwgU2ln
biBzaWduKQorICAgIDogbV9kYXRhKGNvZWZmaWNpZW50LCBleHBvbmVudCwgc2lnbikKK3sKK30K
KworRGVjaW1hbDo6RGVjaW1hbChjb25zdCBFbmNvZGVkRGF0YSYgZGF0YSkKKyAgICA6IG1fZGF0
YShkYXRhKQoreworfQorCitEZWNpbWFsOjpEZWNpbWFsKGNvbnN0IERlY2ltYWwmIG90aGVyKQor
ICAgIDogbV9kYXRhKG90aGVyLm1fZGF0YSkKK3sKK30KKworRGVjaW1hbCYgRGVjaW1hbDo6b3Bl
cmF0b3IgPShjb25zdCBEZWNpbWFsJiBvdGhlcikKK3sKKyAgICBtX2RhdGEgPSBvdGhlci5tX2Rh
dGE7CisgICAgcmV0dXJuICp0aGlzOworfQorCitEZWNpbWFsJiBEZWNpbWFsOjpvcGVyYXRvciAr
PShjb25zdCBEZWNpbWFsJiBvdGhlcikKK3sKKyAgICBtX2RhdGEgPSAoKnRoaXMgKyBvdGhlciku
bV9kYXRhOworICAgIHJldHVybiAqdGhpczsKK30KKworRGVjaW1hbCYgRGVjaW1hbDo6b3BlcmF0
b3IgLT0oY29uc3QgRGVjaW1hbCYgb3RoZXIpCit7CisgICAgbV9kYXRhID0gKCp0aGlzIC0gb3Ro
ZXIpLm1fZGF0YTsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK0RlY2ltYWwmIERlY2ltYWw6Om9w
ZXJhdG9yICo9KGNvbnN0IERlY2ltYWwmIG90aGVyKQoreworICAgIG1fZGF0YSA9ICgqdGhpcyAq
IG90aGVyKS5tX2RhdGE7CisgICAgcmV0dXJuICp0aGlzOworfQorCitEZWNpbWFsJiBEZWNpbWFs
OjpvcGVyYXRvciAvPShjb25zdCBEZWNpbWFsJiBvdGhlcikKK3sKKyAgICBtX2RhdGEgPSAoKnRo
aXMgLyBvdGhlcikubV9kYXRhOworICAgIHJldHVybiAqdGhpczsKK30KKworRGVjaW1hbCBEZWNp
bWFsOjpvcGVyYXRvciAtKCkgY29uc3QKK3sKKyAgICBEZWNpbWFsIHJlc3VsdCgqdGhpcyk7Cisg
ICAgcmVzdWx0Lm1fZGF0YS5zZXRTaWduKGludmVydFNpZ24obV9kYXRhLnNpZ24oKSkpOworICAg
IHJldHVybiByZXN1bHQ7Cit9CisKK0RlY2ltYWwgRGVjaW1hbDo6b3BlcmF0b3IgKyhjb25zdCBE
ZWNpbWFsJiByaHMpIGNvbnN0Cit7CisgICAgY29uc3QgRGVjaW1hbCYgbGhzID0gKnRoaXM7Cisg
ICAgY29uc3QgU2lnbiBsaHNTaWduID0gbGhzLnNpZ24oKTsKKyAgICBjb25zdCBTaWduIHJoc1Np
Z24gPSByaHMuc2lnbigpOworCisgICAgU3BlY2lhbFZhbHVlSGFuZGxlciBoYW5kbGVyKGxocywg
cmhzKTsKKyAgICBzd2l0Y2ggKGhhbmRsZXIuaGFuZGxlKCkpIHsKKyAgICBjYXNlIFNwZWNpYWxW
YWx1ZUhhbmRsZXI6OkJvdGhGaW5pdGU6CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBTcGVj
aWFsVmFsdWVIYW5kbGVyOjpCb3RoaW5maW5pdHk6CisgICAgICAgIHJldHVybiBsaHNTaWduID09
IHJoc1NpZ24gPyBsaHMgOiBuYW4oKTsKKworICAgIGNhc2UgU3BlY2lhbFZhbHVlSGFuZGxlcjo6
RWl0aGVyTmFOOgorICAgICAgICByZXR1cm4gaGFuZGxlci52YWx1ZSgpOworCisgICAgY2FzZSBT
cGVjaWFsVmFsdWVIYW5kbGVyOjpMaHNJc2luZmluaXR5OgorICAgICAgICByZXR1cm4gbGhzOwor
CisgICAgY2FzZSBTcGVjaWFsVmFsdWVIYW5kbGVyOjpSaHNJc2luZmluaXR5OgorICAgICAgICBy
ZXR1cm4gcmhzOworICAgIH0KKworICAgIEFTU0VSVChsaHMuaXNGaW5pdGUoKSk7CisgICAgQVNT
RVJUKHJocy5pc0Zpbml0ZSgpKTsKKworICAgIGNvbnN0IGludCBsaHNFeHBvbmVudCA9IGxocy5l
eHBvbmVudCgpOworICAgIGNvbnN0IGludCByaHNFeHBvbmVudCA9IHJocy5leHBvbmVudCgpOwor
ICAgIGludCByZXN1bHRFeHBvbmVudCA9IG1pbihsaHNFeHBvbmVudCwgcmhzRXhwb25lbnQpOwor
ICAgIHVpbnQ2NF90IGxoc0NvZWZmaWNpZW50ID0gbGhzLm1fZGF0YS5jb2VmZmljaWVudCgpOwor
ICAgIHVpbnQ2NF90IHJoc0NvZWZmaWNpZW50ID0gcmhzLm1fZGF0YS5jb2VmZmljaWVudCgpOwor
CisgICAgLy8gTWFrZSBjb2VmZmljaWVudCBhbGlnbmVkLgorICAgIGlmIChsaHNFeHBvbmVudCA+
IHJoc0V4cG9uZW50KSB7CisgICAgICAgIGNvbnN0IGludCBudW1iZXJPZkxIU0RpZ2l0cyA9IGNv
dW50RGlnaXRzKGxoc0NvZWZmaWNpZW50KTsKKyAgICAgICAgaWYgKG51bWJlck9mTEhTRGlnaXRz
KSB7CisgICAgICAgICAgICBjb25zdCBpbnQgbGhzU2hpZnRBbW91bnQgPSBsaHNFeHBvbmVudCAt
IHJoc0V4cG9uZW50OworICAgICAgICAgICAgY29uc3QgaW50IG92ZXJmbG93ID0gbnVtYmVyT2ZM
SFNEaWdpdHMgKyBsaHNTaGlmdEFtb3VudCAtIFByZWNpc2lvbjsKKyAgICAgICAgICAgIGlmIChv
dmVyZmxvdyA8PSAwKQorICAgICAgICAgICAgICAgIGxoc0NvZWZmaWNpZW50ID0gc2NhbGVVcChs
aHNDb2VmZmljaWVudCwgbGhzU2hpZnRBbW91bnQpOworICAgICAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICAgICAgbGhzQ29lZmZpY2llbnQgPSBzY2FsZVVwKGxoc0NvZWZmaWNpZW50LCBsaHNT
aGlmdEFtb3VudCAtIG92ZXJmbG93KTsKKyAgICAgICAgICAgICAgICByaHNDb2VmZmljaWVudCA9
IHNjYWxlRG93bihyaHNDb2VmZmljaWVudCwgb3ZlcmZsb3cpOworICAgICAgICAgICAgICAgIHJl
c3VsdEV4cG9uZW50ICs9IG92ZXJmbG93OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAg
ICB9IGlmIChsaHNFeHBvbmVudCA8IHJoc0V4cG9uZW50KSB7CisgICAgICAgIGNvbnN0IGludCBu
dW1iZXJPZlJIU0RpZ2l0cyA9IGNvdW50RGlnaXRzKHJoc0NvZWZmaWNpZW50KTsKKyAgICAgICAg
aWYgKG51bWJlck9mUkhTRGlnaXRzKSB7CisgICAgICAgICAgICBjb25zdCBpbnQgcmhzU2hpZnRB
bW91bnQgPSByaHNFeHBvbmVudCAtIGxoc0V4cG9uZW50OworICAgICAgICAgICAgY29uc3QgaW50
IG92ZXJmbG93ID0gbnVtYmVyT2ZSSFNEaWdpdHMgKyByaHNTaGlmdEFtb3VudCAtIFByZWNpc2lv
bjsKKyAgICAgICAgICAgIGlmIChvdmVyZmxvdyA8PSAwKQorICAgICAgICAgICAgICAgIHJoc0Nv
ZWZmaWNpZW50ID0gc2NhbGVVcChyaHNDb2VmZmljaWVudCwgcmhzU2hpZnRBbW91bnQpOworICAg
ICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgcmhzQ29lZmZpY2llbnQgPSBzY2FsZVVw
KHJoc0NvZWZmaWNpZW50LCByaHNTaGlmdEFtb3VudCAtIG92ZXJmbG93KTsKKyAgICAgICAgICAg
ICAgICBsaHNDb2VmZmljaWVudCA9IHNjYWxlRG93bihsaHNDb2VmZmljaWVudCwgb3ZlcmZsb3cp
OworICAgICAgICAgICAgICAgIHJlc3VsdEV4cG9uZW50ICs9IG92ZXJmbG93OworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgdWludDY0X3QgY29uc3QgcmVzdWx0ID0gbGhz
U2lnbiA9PSByaHNTaWduID8gbGhzQ29lZmZpY2llbnQgKyByaHNDb2VmZmljaWVudCA6IGxoc0Nv
ZWZmaWNpZW50IC0gcmhzQ29lZmZpY2llbnQ7CisgICAgcmV0dXJuIGxoc1NpZ24gPT0gTWludXMg
JiYgcmhzU2lnbiA9PSBQbHVzICYmICFyZXN1bHQKKyAgICAgICAgICAgID8gRGVjaW1hbCgwLCBy
ZXN1bHRFeHBvbmVudCwgUGx1cykKKyAgICAgICAgICAgIDogaW50NjRfdChyZXN1bHQpID49IDAK
KyAgICAgICAgICAgICAgICA/IERlY2ltYWwocmVzdWx0LCByZXN1bHRFeHBvbmVudCwgbGhzU2ln
bikKKyAgICAgICAgICAgICAgICA6IERlY2ltYWwoLWludDY0X3QocmVzdWx0KSwgcmVzdWx0RXhw
b25lbnQsIGludmVydFNpZ24obGhzU2lnbikpOworfQorCitEZWNpbWFsIERlY2ltYWw6Om9wZXJh
dG9yIC0oY29uc3QgRGVjaW1hbCYgcmhzKSBjb25zdAoreworICAgIGNvbnN0IERlY2ltYWwmIGxo
cyA9ICp0aGlzOworICAgIGNvbnN0IFNpZ24gbGhzU2lnbiA9IGxocy5zaWduKCk7CisgICAgY29u
c3QgU2lnbiByaHNTaWduID0gcmhzLnNpZ24oKTsKKworICAgIFNwZWNpYWxWYWx1ZUhhbmRsZXIg
aGFuZGxlcihsaHMsIHJocyk7CisgICAgc3dpdGNoIChoYW5kbGVyLmhhbmRsZSgpKSB7CisgICAg
Y2FzZSBTcGVjaWFsVmFsdWVIYW5kbGVyOjpCb3RoRmluaXRlOgorICAgICAgICBicmVhazsKKwor
ICAgIGNhc2UgU3BlY2lhbFZhbHVlSGFuZGxlcjo6Qm90aGluZmluaXR5OgorICAgICAgICByZXR1
cm4gbGhzU2lnbiA9PSByaHNTaWduID8gbmFuKCkgOiBsaHM7CisKKyAgICBjYXNlIFNwZWNpYWxW
YWx1ZUhhbmRsZXI6OkVpdGhlck5hTjoKKyAgICAgICAgcmV0dXJuIGhhbmRsZXIudmFsdWUoKTsK
KworICAgIGNhc2UgU3BlY2lhbFZhbHVlSGFuZGxlcjo6TGhzSXNpbmZpbml0eToKKyAgICAgICAg
cmV0dXJuIGxoczsKKworICAgIGNhc2UgU3BlY2lhbFZhbHVlSGFuZGxlcjo6UmhzSXNpbmZpbml0
eToKKyAgICAgICAgcmV0dXJuIGluZmluaXR5KGludmVydFNpZ24ocmhzU2lnbikpOworICAgIH0K
KworICAgIEFTU0VSVChsaHMuaXNGaW5pdGUoKSk7CisgICAgQVNTRVJUKHJocy5pc0Zpbml0ZSgp
KTsKKworICAgIHVpbnQ2NF90IGxoc0NvZWZmaWNpZW50ID0gbGhzLm1fZGF0YS5jb2VmZmljaWVu
dCgpOworICAgIHVpbnQ2NF90IHJoc0NvZWZmaWNpZW50ID0gcmhzLm1fZGF0YS5jb2VmZmljaWVu
dCgpOworCisgICAgY29uc3QgaW50IGxoc0V4cG9uZW50ID0gbGhzLmV4cG9uZW50KCk7CisgICAg
Y29uc3QgaW50IHJoc0V4cG9uZW50ID0gcmhzLmV4cG9uZW50KCk7CisgICAgaW50IHJlc3VsdEV4
cG9uZW50ID0gbWluKGxoc0V4cG9uZW50LCByaHNFeHBvbmVudCk7CisKKyAgICAvLyBNYWtlIGNv
ZWZmaWNpZW50IGFsaWduZWQuCisgICAgaWYgKGxoc0V4cG9uZW50ID4gcmhzRXhwb25lbnQpIHsK
KyAgICAgICAgY29uc3QgaW50IG51bWJlck9mTEhTRGlnaXRzID0gY291bnREaWdpdHMobGhzQ29l
ZmZpY2llbnQpOworICAgICAgICBpZiAobnVtYmVyT2ZMSFNEaWdpdHMpIHsKKyAgICAgICAgICAg
IGNvbnN0IGludCBsaHNTaGlmdEFtb3VudCA9IGxoc0V4cG9uZW50IC0gcmhzRXhwb25lbnQ7Cisg
ICAgICAgICAgICBjb25zdCBpbnQgb3ZlcmZsb3cgPSBudW1iZXJPZkxIU0RpZ2l0cyArIGxoc1No
aWZ0QW1vdW50IC0gUHJlY2lzaW9uOworICAgICAgICAgICAgaWYgKG92ZXJmbG93IDw9IDApCisg
ICAgICAgICAgICAgICAgbGhzQ29lZmZpY2llbnQgPSBzY2FsZVVwKGxoc0NvZWZmaWNpZW50LCBs
aHNTaGlmdEFtb3VudCk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBsaHND
b2VmZmljaWVudCA9IHNjYWxlVXAobGhzQ29lZmZpY2llbnQsIGxoc1NoaWZ0QW1vdW50IC0gb3Zl
cmZsb3cpOworICAgICAgICAgICAgICAgIHJoc0NvZWZmaWNpZW50ID0gc2NhbGVEb3duKHJoc0Nv
ZWZmaWNpZW50LCBvdmVyZmxvdyk7CisgICAgICAgICAgICAgICAgcmVzdWx0RXhwb25lbnQgKz0g
b3ZlcmZsb3c7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgIH0gaWYgKGxoc0V4cG9u
ZW50IDwgcmhzRXhwb25lbnQpIHsKKyAgICAgICAgY29uc3QgaW50IG51bWJlck9mUkhTRGlnaXRz
ID0gY291bnREaWdpdHMocmhzQ29lZmZpY2llbnQpOworICAgICAgICBpZiAobnVtYmVyT2ZSSFNE
aWdpdHMpIHsKKyAgICAgICAgICAgIGNvbnN0IGludCByaHNTaGlmdEFtb3VudCA9IHJoc0V4cG9u
ZW50IC0gbGhzRXhwb25lbnQ7CisgICAgICAgICAgICBjb25zdCBpbnQgb3ZlcmZsb3cgPSBudW1i
ZXJPZlJIU0RpZ2l0cyArIHJoc1NoaWZ0QW1vdW50IC0gUHJlY2lzaW9uOworICAgICAgICAgICAg
aWYgKG92ZXJmbG93IDw9IDApCisgICAgICAgICAgICAgICAgcmhzQ29lZmZpY2llbnQgPSBzY2Fs
ZVVwKHJoc0NvZWZmaWNpZW50LCByaHNTaGlmdEFtb3VudCk7CisgICAgICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgICAgICByaHNDb2VmZmljaWVudCA9IHNjYWxlVXAocmhzQ29lZmZpY2llbnQs
IHJoc1NoaWZ0QW1vdW50IC0gb3ZlcmZsb3cpOworICAgICAgICAgICAgICAgIGxoc0NvZWZmaWNp
ZW50ID0gc2NhbGVEb3duKGxoc0NvZWZmaWNpZW50LCBvdmVyZmxvdyk7CisgICAgICAgICAgICAg
ICAgcmVzdWx0RXhwb25lbnQgKz0gb3ZlcmZsb3c7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9CisKKyAgICB1aW50NjRfdCByZXN1bHQgPSBsaHNTaWduID09IHJoc1NpZ24gPyBsaHND
b2VmZmljaWVudCAtIHJoc0NvZWZmaWNpZW50IDogbGhzQ29lZmZpY2llbnQgKyByaHNDb2VmZmlj
aWVudDsKKyAgICByZXR1cm4gbGhzU2lnbiA9PSBNaW51cyAmJiByaHNTaWduID09IE1pbnVzICYm
ICFyZXN1bHQKKyAgICAgICAgICAgID8gRGVjaW1hbCgwLCByZXN1bHRFeHBvbmVudCwgUGx1cykK
KyAgICAgICAgICAgIDogaW50NjRfdChyZXN1bHQpID49IDAKKyAgICAgICAgICAgICAgICA/IERl
Y2ltYWwocmVzdWx0LCByZXN1bHRFeHBvbmVudCwgbGhzU2lnbikKKyAgICAgICAgICAgICAgICA6
IERlY2ltYWwoLWludDY0X3QocmVzdWx0KSwgcmVzdWx0RXhwb25lbnQsIGludmVydFNpZ24obGhz
U2lnbikpOworfQorCitEZWNpbWFsIERlY2ltYWw6Om9wZXJhdG9yICooY29uc3QgRGVjaW1hbCYg
cmhzKSBjb25zdAoreworICAgIGNvbnN0IERlY2ltYWwmIGxocyA9ICp0aGlzOworICAgIGNvbnN0
IFNpZ24gbGhzU2lnbiA9IGxocy5zaWduKCk7CisgICAgY29uc3QgU2lnbiByaHNTaWduID0gcmhz
LnNpZ24oKTsKKyAgICBTaWduIHJlc3VsdFNpZ24gPSBsaHNTaWduID09IHJoc1NpZ24gPyBQbHVz
IDogTWludXM7CisKKyAgICBTcGVjaWFsVmFsdWVIYW5kbGVyIGhhbmRsZXIobGhzLCByaHMpOwor
ICAgIHN3aXRjaCAoaGFuZGxlci5oYW5kbGUoKSkgeworICAgIGNhc2UgU3BlY2lhbFZhbHVlSGFu
ZGxlcjo6Qm90aEZpbml0ZTogeworICAgICAgICBjb25zdCB1aW50NjRfdCBsaHNDb2VmZmljaWVu
dCA9IGxocy5tX2RhdGEuY29lZmZpY2llbnQoKTsKKyAgICAgICAgY29uc3QgdWludDY0X3Qgcmhz
Q29lZmZpY2llbnQgPSByaHMubV9kYXRhLmNvZWZmaWNpZW50KCk7CisgICAgICAgIGludCByZXN1
bHRFeHBvbmVudCA9IGxocy5leHBvbmVudCgpICsgcmhzLmV4cG9uZW50KCk7CisgICAgICAgIFVJ
bnQxMjggd29yayhVSW50MTI4OjptdWx0aXBseShsaHNDb2VmZmljaWVudCwgcmhzQ29lZmZpY2ll
bnQpKTsKKyAgICAgICAgd2hpbGUgKHdvcmsuaGlnaCgpKSB7CisgICAgICAgICAgd29yayAvPSAx
MDsKKyAgICAgICAgICArK3Jlc3VsdEV4cG9uZW50OworICAgICAgICB9CisgICAgICAgIHJldHVy
biBEZWNpbWFsKHdvcmsubG93KCksIHJlc3VsdEV4cG9uZW50LCByZXN1bHRTaWduKTsKKyAgICB9
CisKKyAgICBjYXNlIFNwZWNpYWxWYWx1ZUhhbmRsZXI6OkJvdGhpbmZpbml0eToKKyAgICAgICAg
cmV0dXJuIGluZmluaXR5KHJlc3VsdFNpZ24pOworCisgICAgY2FzZSBTcGVjaWFsVmFsdWVIYW5k
bGVyOjpFaXRoZXJOYU46CisgICAgICAgIHJldHVybiBoYW5kbGVyLnZhbHVlKCk7CisKKyAgICBj
YXNlIFNwZWNpYWxWYWx1ZUhhbmRsZXI6Okxoc0lzaW5maW5pdHk6CisgICAgICAgIHJldHVybiBy
aHMuaXNaZXJvKCkgPyBuYW4oKSA6IGluZmluaXR5KHJlc3VsdFNpZ24pOworCisgICAgY2FzZSBT
cGVjaWFsVmFsdWVIYW5kbGVyOjpSaHNJc2luZmluaXR5OgorICAgICAgICByZXR1cm4gbGhzLmlz
WmVybygpID8gbmFuKCkgOiBpbmZpbml0eShyZXN1bHRTaWduKTsKKyAgICB9CisKKyAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gbmFuKCk7Cit9CisKK0RlY2ltYWwgRGVjaW1h
bDo6b3BlcmF0b3IgLyhjb25zdCBEZWNpbWFsJiByaHMpIGNvbnN0Cit7CisgICAgY29uc3QgRGVj
aW1hbCYgbGhzID0gKnRoaXM7CisgICAgY29uc3QgU2lnbiBsaHNTaWduID0gbGhzLnNpZ24oKTsK
KyAgICBjb25zdCBTaWduIHJoc1NpZ24gPSByaHMuc2lnbigpOworICAgIFNpZ24gcmVzdWx0U2ln
biA9IGxoc1NpZ24gPT0gcmhzU2lnbiA/IFBsdXMgOiBNaW51czsKKworICAgIFNwZWNpYWxWYWx1
ZUhhbmRsZXIgaGFuZGxlcihsaHMsIHJocyk7CisgICAgc3dpdGNoIChoYW5kbGVyLmhhbmRsZSgp
KSB7CisgICAgY2FzZSBTcGVjaWFsVmFsdWVIYW5kbGVyOjpCb3RoRmluaXRlOgorICAgICAgICBi
cmVhazsKKworICAgIGNhc2UgU3BlY2lhbFZhbHVlSGFuZGxlcjo6Qm90aGluZmluaXR5OgorICAg
ICAgICByZXR1cm4gbmFuKCk7CisKKyAgICBjYXNlIFNwZWNpYWxWYWx1ZUhhbmRsZXI6OkVpdGhl
ck5hTjoKKyAgICAgICAgcmV0dXJuIGhhbmRsZXIudmFsdWUoKTsKKworICAgIGNhc2UgU3BlY2lh
bFZhbHVlSGFuZGxlcjo6TGhzSXNpbmZpbml0eToKKyAgICAgICAgcmV0dXJuIGluZmluaXR5KHJl
c3VsdFNpZ24pOworCisgICAgY2FzZSBTcGVjaWFsVmFsdWVIYW5kbGVyOjpSaHNJc2luZmluaXR5
OgorICAgICAgICByZXR1cm4gemVybyhyZXN1bHRTaWduKTsKKyAgICB9CisKKyAgICBBU1NFUlQo
bGhzLmlzRmluaXRlKCkpOworICAgIEFTU0VSVChyaHMuaXNGaW5pdGUoKSk7CisKKyAgICBpZiAo
cmhzLmlzWmVybygpKQorICAgICAgICByZXR1cm4gbGhzLmlzWmVybygpID8gbmFuKCkgOiBpbmZp
bml0eShyZXN1bHRTaWduKTsKKworICAgIGludCByZXN1bHRFeHBvbmVudCA9IGxocy5leHBvbmVu
dCgpIC0gcmhzLmV4cG9uZW50KCk7CisKKyAgICBpZiAobGhzLmlzWmVybygpKSB7CisgICAgICAg
IC8vIDAvbm9uLXplcm8gPT4gMAorICAgICAgICByZXR1cm4gRGVjaW1hbCgwLCByZXN1bHRFeHBv
bmVudCwgcmVzdWx0U2lnbik7CisgICAgfQorCisgICAgdWludDY0X3QgcmVtYWluZGVyID0gbGhz
Lm1fZGF0YS5jb2VmZmljaWVudCgpOworICAgIGNvbnN0IHVpbnQ2NF90IGRpdmlzb3IgPSByaHMu
bV9kYXRhLmNvZWZmaWNpZW50KCk7CisgICAgdWludDY0X3QgcmVzdWx0ID0gMDsKKyAgICB3aGls
ZSAocmVzdWx0IDwgTWF4Q29lZmZpY2llbnQgLyAxMDApIHsKKyAgICAgICAgd2hpbGUgKHJlbWFp
bmRlciA8IGRpdmlzb3IpIHsKKyAgICAgICAgICAgIHJlbWFpbmRlciAqPSAxMDsKKyAgICAgICAg
ICAgIHJlc3VsdCAqPSAxMDsKKyAgICAgICAgICAgIC0tcmVzdWx0RXhwb25lbnQ7CisgICAgICAg
IH0KKyAgICAgICAgcmVzdWx0ICs9IHJlbWFpbmRlciAvIGRpdmlzb3I7CisgICAgICAgIHJlbWFp
bmRlciAlPSBkaXZpc29yOworICAgICAgICBpZiAoIXJlbWFpbmRlcikKKyAgICAgICAgICAgIGJy
ZWFrOworICAgIH0KKworICAgIGlmIChyZW1haW5kZXIgPiBkaXZpc29yIC8gMikKKyAgICAgICAg
KytyZXN1bHQ7CisKKyAgICByZXR1cm4gRGVjaW1hbChyZXN1bHQsIHJlc3VsdEV4cG9uZW50LCBy
ZXN1bHRTaWduKTsKK30KKworYm9vbCBEZWNpbWFsOjpvcGVyYXRvcj09KGNvbnN0IERlY2ltYWwm
IHJocykgY29uc3QKK3sKKyAgICByZXR1cm4gZmFzdEVxdWFscyhyaHMpIHx8IGNvbXBhcmVUbyhy
aHMpLmlzWmVybygpOworfQorCitib29sIERlY2ltYWw6Om9wZXJhdG9yIT0oY29uc3QgRGVjaW1h
bCYgcmhzKSBjb25zdAoreworICAgIHJldHVybiAhb3BlcmF0b3IgPT0ocmhzKTsKK30KKworYm9v
bCBEZWNpbWFsOjpvcGVyYXRvciA8KGNvbnN0IERlY2ltYWwmIHJocykgY29uc3QKK3sKKyAgICBy
ZXR1cm4gIW9wZXJhdG9yID49KHJocyk7Cit9CisKK2Jvb2wgRGVjaW1hbDo6b3BlcmF0b3IgPD0o
Y29uc3QgRGVjaW1hbCYgcmhzKSBjb25zdAoreworICAgIGlmIChmYXN0RXF1YWxzKHJocykpCisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIGNvbnN0IERlY2ltYWwgcmVzdWx0ID0gY29tcGFyZVRv
KHJocyk7CisgICAgcmV0dXJuIHJlc3VsdC5pc1plcm8oKSB8fCByZXN1bHQuaXNNaW51cygpOwor
fQorCitib29sIERlY2ltYWw6Om9wZXJhdG9yID4oY29uc3QgRGVjaW1hbCYgcmhzKSBjb25zdAor
eworICAgIHJldHVybiAhb3BlcmF0b3IgPD0ocmhzKTsKK30KKworYm9vbCBEZWNpbWFsOjpvcGVy
YXRvciA+PShjb25zdCBEZWNpbWFsJiByaHMpIGNvbnN0Cit7CisgICAgaWYgKGZhc3RFcXVhbHMo
cmhzKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgY29uc3QgRGVjaW1hbCByZXN1bHQgPSBj
b21wYXJlVG8ocmhzKTsKKyAgICByZXR1cm4gcmVzdWx0LmlzWmVybygpIHx8ICFyZXN1bHQuaXNN
aW51cygpOworfQorCitpbnQgRGVjaW1hbDo6ZXhwb25lbnQoKSBjb25zdAoreworICAgIHJldHVy
biBpc0Zpbml0ZSgpID8gbV9kYXRhLmV4cG9uZW50KCkgOiAwOworfQorCitEZWNpbWFsOjpGb3Jt
YXRDbGFzcyBEZWNpbWFsOjpmb3JtYXRDbGFzcygpIGNvbnN0Cit7CisgICAgc3dpdGNoIChtX2Rh
dGEubV9wYWNrZWRGaWVsZCkgeworICAgIGNhc2UgUG9zaXRpdmVJbmZpbml0eVBhdHRlcm46Cisg
ICAgY2FzZSBOZWdhdGl2ZUluZmluaXR5UGF0dGVybjoKKyAgICAgICAgcmV0dXJuIENsYXNzSW5m
aW5pdHk7CisgICAgY2FzZSBOYU5QYXR0ZXJuOgorICAgICAgICByZXR1cm4gQ2xhc3NOYU47Cisg
ICAgfQorCisgICAgcmV0dXJuIG1fZGF0YS5pc1plcm8oKSA/IENsYXNzWmVybyA6IENsYXNzTm9y
bWFsOworfQorCitEZWNpbWFsOjpTaWduIERlY2ltYWw6OnNpZ24oKSBjb25zdAoreworICAgIHJl
dHVybiBtX2RhdGEuc2lnbigpOworfQorCitEZWNpbWFsIERlY2ltYWw6OmFicygpIGNvbnN0Cit7
CisgICAgRGVjaW1hbCByZXN1bHQoKnRoaXMpOworICAgIHJlc3VsdC5tX2RhdGEuc2V0U2lnbihQ
bHVzKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisvLyBSb3VuZCB0b3dhcmQgcG9zaXRpdmUg
aW5maW5pdHkuCitEZWNpbWFsIERlY2ltYWw6OmNlaWwoKSBjb25zdAoreworICAgIGlmIChpc1Nw
ZWNpYWwoKSkKKyAgICAgICAgcmV0dXJuICp0aGlzOworCisgICAgaWYgKGV4cG9uZW50KCkgPj0g
MCkKKyAgICAgICAgcmV0dXJuICp0aGlzOworCisgICAgdWludDY0X3QgcmVzdWx0ID0gbV9kYXRh
LmNvZWZmaWNpZW50KCk7CisgICAgY29uc3QgaW50IG51bWJlck9mRGlnaXRzID0gY291bnREaWdp
dHMocmVzdWx0KTsKKyAgICBjb25zdCBpbnQgbnVtYmVyT2ZEcm9wRGlnaXRzID0gLWV4cG9uZW50
KCk7CisgICAgaWYgKG51bWJlck9mRGlnaXRzIDwgbnVtYmVyT2ZEcm9wRGlnaXRzKQorICAgICAg
ICByZXR1cm4gemVybyhQbHVzKTsKKworICAgIHJlc3VsdCA9IHNjYWxlRG93bihyZXN1bHQsIG51
bWJlck9mRHJvcERpZ2l0cyAtIDEpOworICAgIGlmIChzaWduKCkgPT0gUGx1cyAmJiByZXN1bHQg
JSAxMCA+IDApCisgICAgICAgIHJlc3VsdCArPSAxMDsKKyAgICByZXN1bHQgLz0gMTA7CisgICAg
cmV0dXJuIERlY2ltYWwocmVzdWx0LCAwLCBzaWduKCkpOworfQorCitEZWNpbWFsIERlY2ltYWw6
OmNvbXBhcmVUbyhjb25zdCBEZWNpbWFsJiByaHMpIGNvbnN0Cit7CisgICAgY29uc3QgRGVjaW1h
bCByZXN1bHQoKnRoaXMgLSByaHMpOworICAgIHJldHVybiByZXN1bHQuaXNaZXJvKCkKKyAgICAg
ICAgICAgID8gemVybyhQbHVzKQorICAgICAgICAgICAgOiByZXN1bHQuaXNGaW5pdGUoKQorICAg
ICAgICAgICAgICAgICAgICA/IHJlc3VsdAorICAgICAgICAgICAgICAgICAgICA6IHJlc3VsdC5p
c01pbnVzKCkgPyBEZWNpbWFsKC0xKSA6IERlY2ltYWwoMSk7Cit9CisKKy8vIENvbXBhcmVzIHR3
byBEZWNpbWFsIG51bWJlciBhcyBiaW5hcnkgZGF0YS4gVGhpcyBtZXRob2QgaXMKKy8vIHVzZWQg
Zm9yIGVxdWFsaXR5IG9mIGluZmluaXR5IG9wZXJhbmRzIHdoaWNoIHN1YnN0cmFjdCBvcGVyYXRp
b24KKy8vIHJldHVybnMgbm9uLXplcm8uCitib29sIERlY2ltYWw6OmZhc3RFcXVhbHMoY29uc3Qg
RGVjaW1hbCYgcmhzKSBjb25zdAoreworICAgIHJldHVybiBtX2RhdGEubV9wYWNrZWRGaWVsZCA9
PSByaHMubV9kYXRhLm1fcGFja2VkRmllbGQKKyAgICAgICAgJiYgbV9kYXRhLm1fY29lZmZpY2ll
bnQgPT0gcmhzLm1fZGF0YS5tX2NvZWZmaWNpZW50OworfQorCisvLyBSb3VuZCB0b3dhcmQgbmVn
YXRpdmUgaW5maW5pdHkuCitEZWNpbWFsIERlY2ltYWw6OmZsb29yKCkgY29uc3QKK3sKKyAgICBp
ZiAoaXNTcGVjaWFsKCkpCisgICAgICAgIHJldHVybiAqdGhpczsKKworICAgIGlmIChleHBvbmVu
dCgpID49IDApCisgICAgICAgIHJldHVybiAqdGhpczsKKworICAgIHVpbnQ2NF90IHJlc3VsdCA9
IG1fZGF0YS5jb2VmZmljaWVudCgpOworICAgIGNvbnN0IGludCBudW1iZXJPZkRpZ2l0cyA9IGNv
dW50RGlnaXRzKHJlc3VsdCk7CisgICAgY29uc3QgaW50IG51bWJlck9mRHJvcERpZ2l0cyA9IC1l
eHBvbmVudCgpOworICAgIGlmIChudW1iZXJPZkRpZ2l0cyA8IG51bWJlck9mRHJvcERpZ2l0cykK
KyAgICAgICAgcmV0dXJuIHplcm8oUGx1cyk7CisKKyAgICByZXN1bHQgPSBzY2FsZURvd24ocmVz
dWx0LCBudW1iZXJPZkRyb3BEaWdpdHMgLSAxKTsKKyAgICBpZiAoaXNNaW51cygpICYmIHJlc3Vs
dCAlIDEwID4gMCkKKyAgICAgICAgcmVzdWx0ICs9IDEwOworICAgIHJlc3VsdCAvPSAxMDsKKyAg
ICByZXR1cm4gRGVjaW1hbChyZXN1bHQsIDAsIHNpZ24oKSk7Cit9CisKK0RlY2ltYWwgRGVjaW1h
bDo6ZnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cikKK3sKKyAgICBpbnQgZXhwb25lbnQgPSAw
OworICAgIFNpZ24gZXhwb25lbnRTaWduID0gUGx1czsKKyAgICBpbnQgbnVtYmVyT2ZEaWdpdHMg
PSAwOworICAgIGludCBudW1iZXJPZkRpZ2l0c0FmdGVyRG90ID0gMDsKKyAgICBpbnQgbnVtYmVy
T2ZFeHRyYURpZ2l0cyA9IDA7CisgICAgU2lnbiBzaWduID0gUGx1czsKKworICAgIGVudW0gewor
ICAgICAgICBTdGF0ZURpZ2l0LAorICAgICAgICBTdGF0ZURvdCwKKyAgICAgICAgU3RhdGVEb3RE
aWdpdCwKKyAgICAgICAgU3RhdGVFLAorICAgICAgICBTdGF0ZUVEaWdpdCwKKyAgICAgICAgU3Rh
dGVFU2lnbiwKKyAgICAgICAgU3RhdGVTaWduLAorICAgICAgICBTdGF0ZVN0YXJ0LAorICAgICAg
ICBTdGF0ZVplcm8sCisgICAgfSBzdGF0ZSA9IFN0YXRlU3RhcnQ7CisKKyAgICAjZGVmaW5lIEhh
bmRsZUNoYXIoY2gxLCBuZXh0LCAuLi4pIFwKKyAgICAgICAgaWYgKGNoID09IGNoMSB8fCBjaCA9
PSBjaDEgLSAnQScgKyAnYScpIHsgXAorICAgICAgICAgICAgX19WQV9BUkdTX187IFwKKyAgICAg
ICAgICAgIHN0YXRlID0gbmV4dDsgXAorICAgICAgICAgICAgYnJlYWs7IFwKKyAgICAgICAgfQor
CisgICAgI2RlZmluZSBFeHBlY3RDaGFyKGNoMSwgbmV4dCwgLi4uKSBcCisgICAgICAgIEhhbmRs
ZUNoYXIoY2gxLCBuZXh0LCBfX1ZBX0FSR1NfXyk7IFwKKyAgICAgICAgcmV0dXJuIG5hbigpOwor
CisgICAgdWludDY0X3QgYWNjdW11bGF0b3IgPSAwOworICAgIGZvciAodW5zaWduZWQgaW5kZXgg
PSAwOyBpbmRleCA8IHN0ci5sZW5ndGgoKTsgKytpbmRleCkgeworICAgICAgICBjb25zdCBpbnQg
Y2ggPSBzdHJbaW5kZXhdOworICAgICAgICBzd2l0Y2ggKHN0YXRlKSB7CisgICAgICAgIGNhc2Ug
U3RhdGVEaWdpdDoKKyAgICAgICAgICAgIGlmIChjaCA+PSAnMCcgJiYgY2ggPD0gJzknKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKG51bWJlck9mRGlnaXRzIDwgRGVjaW1hbDo6UHJlY2lzaW9uKSB7
CisgICAgICAgICAgICAgICAgICAgICsrbnVtYmVyT2ZEaWdpdHM7CisgICAgICAgICAgICAgICAg
ICAgIGFjY3VtdWxhdG9yICo9IDEwOworICAgICAgICAgICAgICAgICAgICBhY2N1bXVsYXRvciAr
PSBjaCAtICcwJzsKKyAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAg
KytudW1iZXJPZkV4dHJhRGlnaXRzOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBpZiAoY2ggPT0gJy4nKSB7CisgICAgICAgICAgICAgICAgc3Rh
dGUgPSBTdGF0ZURvdDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgRXhwZWN0Q2hhcignRScsIFN0YXRlRSk7CisKKyAgICAgICAgY2FzZSBTdGF0
ZURvdDoKKyAgICAgICAgICAgIGlmIChjaCA+PSAnMCcgJiYgY2ggPD0gJzknKSB7CisgICAgICAg
ICAgICAgICAgaWYgKG51bWJlck9mRGlnaXRzIDwgRGVjaW1hbDo6UHJlY2lzaW9uKSB7CisgICAg
ICAgICAgICAgICAgICAgICsrbnVtYmVyT2ZEaWdpdHM7CisgICAgICAgICAgICAgICAgICAgICsr
bnVtYmVyT2ZEaWdpdHNBZnRlckRvdDsKKyAgICAgICAgICAgICAgICAgICAgYWNjdW11bGF0b3Ig
Kj0gMTA7CisgICAgICAgICAgICAgICAgICAgIGFjY3VtdWxhdG9yICs9IGNoIC0gJzAnOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlRG90RGlnaXQ7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgY2FzZSBTdGF0
ZURvdERpZ2l0OgorICAgICAgICAgICAgaWYgKGNoID49ICcwJyAmJiBjaCA8PSAnOScpIHsKKyAg
ICAgICAgICAgICAgICBpZiAobnVtYmVyT2ZEaWdpdHMgPCBEZWNpbWFsOjpQcmVjaXNpb24pIHsK
KyAgICAgICAgICAgICAgICAgICAgKytudW1iZXJPZkRpZ2l0czsKKyAgICAgICAgICAgICAgICAg
ICAgKytudW1iZXJPZkRpZ2l0c0FmdGVyRG90OworICAgICAgICAgICAgICAgICAgICBhY2N1bXVs
YXRvciAqPSAxMDsKKyAgICAgICAgICAgICAgICAgICAgYWNjdW11bGF0b3IgKz0gY2ggLSAnMCc7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBFeHBlY3RDaGFyKCdFJywgU3RhdGVFKTsKKworICAgICAgICBjYXNl
IFN0YXRlRToKKyAgICAgICAgICAgIGlmIChjaCA9PSAnKycpIHsKKyAgICAgICAgICAgICAgICBl
eHBvbmVudFNpZ24gPSBQbHVzOworICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGVFU2lnbjsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYg
KGNoID09ICctJykgeworICAgICAgICAgICAgICAgIGV4cG9uZW50U2lnbiA9IE1pbnVzOworICAg
ICAgICAgICAgICAgIHN0YXRlID0gU3RhdGVFU2lnbjsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGNoID49ICcwJyAmJiBjaCA8PSAnOScp
IHsKKyAgICAgICAgICAgICAgICBleHBvbmVudCA9IGNoIC0gJzAnOworICAgICAgICAgICAgICAg
IHN0YXRlID0gU3RhdGVFRGlnaXQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHJldHVybiBuYW4oKTsKKworICAgICAgICBjYXNlIFN0YXRlRURp
Z2l0OgorICAgICAgICAgICAgaWYgKGNoID49ICcwJyAmJiBjaCA8PSAnOScpIHsKKyAgICAgICAg
ICAgICAgICBleHBvbmVudCAqPSAxMDsKKyAgICAgICAgICAgICAgICBleHBvbmVudCArPSBjaCAt
ICcwJzsKKyAgICAgICAgICAgICAgICBpZiAoZXhwb25lbnQgPiBEZWNpbWFsOjpFbWF4ICsgUHJl
Y2lzaW9uKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXhwb25lbnRTaWduID09IE1pbnVz
ID8gemVybyhQbHVzKSA6IGluZmluaXR5KHNpZ24pOworICAgICAgICAgICAgICAgIHN0YXRlID0g
U3RhdGVFRGlnaXQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHJldHVybiBuYW4oKTsKKworICAgICAgICBjYXNlIFN0YXRlRVNpZ246CisgICAg
ICAgICAgICBpZiAoY2ggPj0gJzAnICYmIGNoIDw9ICc5JykgeworICAgICAgICAgICAgICAgIGV4
cG9uZW50ID0gY2ggLSAnMCc7CisgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZUVEaWdpdDsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0
dXJuIG5hbigpOworCisgICAgICAgIGNhc2UgU3RhdGVTaWduOgorICAgICAgICAgICAgaWYgKGNo
ID09ICcwJykgeworICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGVaZXJvOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoY2ggPj0gJzEn
ICYmIGNoIDw9ICc5JykgeworICAgICAgICAgICAgICAgIGFjY3VtdWxhdG9yID0gY2ggLSAnMCc7
CisgICAgICAgICAgICAgICAgbnVtYmVyT2ZEaWdpdHMgPSAxOworICAgICAgICAgICAgICAgIHN0
YXRlID0gU3RhdGVEaWdpdDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgcmV0dXJuIG5hbigpOworCisgICAgICAgIGNhc2UgU3RhdGVTdGFydDoK
KyAgICAgICAgICAgIGlmIChjaCA9PSAnMCcpIHsKKyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0
YXRlWmVybzsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgaWYgKGNoID49ICcxJyAmJiBjaCA8PSAnOScpIHsKKyAgICAgICAgICAgICAgICBhY2N1
bXVsYXRvciA9IGNoIC0gJzAnOworICAgICAgICAgICAgICAgIG51bWJlck9mRGlnaXRzID0gMTsK
KyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlRGlnaXQ7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChjaCA9PSAnLScpIHsKKyAgICAg
ICAgICAgICAgICBzaWduID0gTWludXM7CisgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZVNp
Z247CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGlmIChjaCA9PSAnKycpIHsKKyAgICAgICAgICAgICAgICBzaWduID0gUGx1czsKKyAgICAgICAg
ICAgICAgICBzdGF0ZSA9IFN0YXRlU2lnbjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGNoID09ICcuJykgeworICAgICAgICAgICAgICAg
IHN0YXRlID0gU3RhdGVEb3Q7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHJldHVybiBuYW4oKTsKKworICAgICAgICBjYXNlIFN0YXRlWmVybzoK
KyAgICAgICAgICAgIGlmIChjaCA9PSAnMCcpCisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgICAgIGlmIChjaCA+PSAnMScgJiYgY2ggPD0gJzknKSB7CisgICAgICAgICAgICAgICAg
YWNjdW11bGF0b3IgPSBjaCAtICcwJzsKKyAgICAgICAgICAgICAgICBudW1iZXJPZkRpZ2l0cyA9
IDE7CisgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZURpZ2l0OworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoY2ggPT0gJy4nKSB7Cisg
ICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZURvdDsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgRXhwZWN0Q2hhcignRScsIFN0YXRlRSk7CisK
KyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICAgICAgcmV0dXJuIG5hbigpOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKHN0YXRl
ID09IFN0YXRlWmVybykKKyAgICAgICAgcmV0dXJuIHplcm8oc2lnbik7CisKKyAgICBpZiAoc3Rh
dGUgPT0gU3RhdGVEaWdpdCB8fCBzdGF0ZSA9PSBTdGF0ZUVEaWdpdCB8fCBzdGF0ZSA9PSBTdGF0
ZURvdERpZ2l0KSB7CisgICAgICAgIGludCByZXN1bHRFeHBvbmVudCA9IGV4cG9uZW50ICogKGV4
cG9uZW50U2lnbiA9PSBNaW51cyA/IC0xIDogMSkgLSBudW1iZXJPZkRpZ2l0c0FmdGVyRG90ICsg
bnVtYmVyT2ZFeHRyYURpZ2l0czsKKyAgICAgICAgY29uc3QgaW50IGJpYXNlZEV4cG9uZW50ID0g
cmVzdWx0RXhwb25lbnQgKyBFYmlhczsKKyAgICAgICAgaWYgKGJpYXNlZEV4cG9uZW50IDwgMCkK
KyAgICAgICAgICAgIHJldHVybiB6ZXJvKFBsdXMpOworCisgICAgICAgIGNvbnN0IGludCBvdmVy
ZmxvdyA9IGJpYXNlZEV4cG9uZW50IC0gRW1heCArIDE7CisgICAgICAgIGlmIChvdmVyZmxvdyA+
IDApIHsKKyAgICAgICAgICAgIGlmIChvdmVyZmxvdyArIG51bWJlck9mRGlnaXRzIC0gbnVtYmVy
T2ZEaWdpdHNBZnRlckRvdCA+IFByZWNpc2lvbikKKyAgICAgICAgICAgICAgICByZXR1cm4gaW5m
aW5pdHkoc2lnbik7CisgICAgICAgICAgICBhY2N1bXVsYXRvciA9IHNjYWxlVXAoYWNjdW11bGF0
b3IsIG92ZXJmbG93KTsKKyAgICAgICAgICAgIHJlc3VsdEV4cG9uZW50IC09IG92ZXJmbG93Owor
ICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIERlY2ltYWwoYWNjdW11bGF0b3IsIHJlc3VsdEV4
cG9uZW50LCBzaWduKTsKKyAgICB9CisKKyAgICByZXR1cm4gbmFuKCk7Cit9CisKK0RlY2ltYWwg
RGVjaW1hbDo6aW5maW5pdHkoY29uc3QgU2lnbiBzaWduKQoreworICAgIHJldHVybiBEZWNpbWFs
KEVuY29kZWREYXRhKHNpZ24gPT0gTWludXMgPyBOZWdhdGl2ZUluZmluaXR5UGF0dGVybiA6IFBv
c2l0aXZlSW5maW5pdHlQYXR0ZXJuKSk7Cit9CisKK0RlY2ltYWwgRGVjaW1hbDo6bmFuKCkKK3sK
KyAgICByZXR1cm4gRGVjaW1hbChFbmNvZGVkRGF0YShOYU5QYXR0ZXJuKSk7Cit9CisKK0RlY2lt
YWwgRGVjaW1hbDo6cG93KGludCBuKSBjb25zdAoreworICAgIGlmICghbikKKyAgICAgICAgcmV0
dXJuIERlY2ltYWwoMSk7CisKKyAgICBzd2l0Y2ggKGZvcm1hdENsYXNzKCkpIHsKKyAgICBjYXNl
IENsYXNzSW5maW5pdHk6CisgICAgICAgIGlmIChuID4gMCkKKyAgICAgICAgICAgIHJldHVybiBp
c01pbnVzKCkgPyBpbmZpbml0eShuICYgMSA/IE1pbnVzIDogUGx1cykgOiBpbmZpbml0eShQbHVz
KTsKKyAgICAgICAgcmV0dXJuIGlzTWludXMoKSA/IHplcm8obiAmIDEgPyBNaW51cyA6IFBsdXMp
IDogemVybyhQbHVzKTsKKworICAgIGNhc2UgQ2xhc3NOYU46CisgICAgICAgIHJldHVybiAqdGhp
czsKKworICAgIGNhc2UgQ2xhc3NOb3JtYWw6CisgICAgICAgIGlmICgqdGhpcyA9PSAxKQorICAg
ICAgICAgICAgcmV0dXJuICp0aGlzOworCisgICAgICAgIGlmICgqdGhpcyA9PSAtMSkKKyAgICAg
ICAgICAgIHJldHVybiBuICYgMSA/ICp0aGlzIDogMTsKKworICAgICAgICByZXR1cm4gbiA+IDAg
PyBwb3dlcigqdGhpcywgbikgOiBEZWNpbWFsKDEpIC8gcG93ZXIoKnRoaXMsIHVuc2lnbmVkKC1u
KSk7CisKKyAgICBjYXNlIENsYXNzWmVybzoKKyAgICAgICAgcmV0dXJuIGlzTWludXMoKSA/IHpl
cm8obiAmIDEgPyBNaW51cyA6IFBsdXMpIDogemVybyhQbHVzKTsKKworICAgIGRlZmF1bHQ6Cisg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gbmFuKCk7CisgICAg
fQorfQorCitEZWNpbWFsIERlY2ltYWw6OnJlbWFpbmRlcihjb25zdCBEZWNpbWFsJiByaHMpIGNv
bnN0Cit7CisgICAgY29uc3QgRGVjaW1hbCBxdW90aWVudCA9ICgqdGhpcyAvIHJocykucm91bmQo
KTsKKyAgICByZXR1cm4gcXVvdGllbnQuaXNTcGVjaWFsKCkgPyBxdW90aWVudCA6ICp0aGlzIC0g
cXVvdGllbnQgKiByaHM7Cit9CisKK0RlY2ltYWwgRGVjaW1hbDo6cm91bmQoKSBjb25zdAorewor
ICAgIGlmIChpc1NwZWNpYWwoKSkKKyAgICAgICAgcmV0dXJuICp0aGlzOworCisgICAgaWYgKGV4
cG9uZW50KCkgPj0gMCkKKyAgICAgICAgcmV0dXJuICp0aGlzOworCisgICAgdWludDY0X3QgcmVz
dWx0ID0gbV9kYXRhLmNvZWZmaWNpZW50KCk7CisgICAgY29uc3QgaW50IG51bWJlck9mRGlnaXRz
ID0gY291bnREaWdpdHMocmVzdWx0KTsKKyAgICBjb25zdCBpbnQgbnVtYmVyT2ZEcm9wRGlnaXRz
ID0gLWV4cG9uZW50KCk7CisgICAgaWYgKG51bWJlck9mRGlnaXRzIDwgbnVtYmVyT2ZEcm9wRGln
aXRzKQorICAgICAgICByZXR1cm4gemVybyhQbHVzKTsKKworICAgIHJlc3VsdCA9IHNjYWxlRG93
bihyZXN1bHQsIG51bWJlck9mRHJvcERpZ2l0cyAtIDEpOworICAgIGlmIChyZXN1bHQgJSAxMCA+
PSA1KQorICAgICAgICByZXN1bHQgKz0gMTA7CisgICAgcmVzdWx0IC89IDEwOworICAgIHJldHVy
biBEZWNpbWFsKHJlc3VsdCwgMCwgc2lnbigpKTsKK30KKworU3RyaW5nIERlY2ltYWw6OnRvU3Ry
aW5nKCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKGZvcm1hdENsYXNzKCkpIHsKKyAgICBjYXNlIENs
YXNzSW5maW5pdHk6CisgICAgICAgIHJldHVybiBzaWduKCkgPyAiLUluZmluaXR5IiA6ICJJbmZp
bml0eSI7CisKKyAgICBjYXNlIENsYXNzTmFOOgorICAgICAgICByZXR1cm4gc2lnbigpID8gIi1O
YU4iIDogIk5hTiI7CisKKyAgICBjYXNlIENsYXNzTm9ybWFsOgorICAgIGNhc2UgQ2xhc3NaZXJv
OgorICAgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICByZXR1cm4gIiI7CisgICAgfQorCisgICAgU3RyaW5nQnVpbGRlciBi
dWlsZGVyOworICAgIGlmIChzaWduKCkpCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCctJyk7CisK
KyAgICBpbnQgb3JpZ2luYWxFeHBvbmVudCA9IGV4cG9uZW50KCk7CisKKyAgICBjb25zdCBpbnQg
bWF4RGlnaXRzID0gREJMX0RJRzsKKyAgICB1aW50NjRfdCBjb2VmZmljaWVudCA9IG1fZGF0YS5j
b2VmZmljaWVudCgpOworICAgIGludCBsYXN0RGlnaXQgPSAwOworICAgIHdoaWxlIChjb3VudERp
Z2l0cyhjb2VmZmljaWVudCkgPiBtYXhEaWdpdHMpIHsKKyAgICAgICAgbGFzdERpZ2l0ID0gY29l
ZmZpY2llbnQgJSAxMDsKKyAgICAgICAgY29lZmZpY2llbnQgLz0gMTA7CisgICAgICAgICsrb3Jp
Z2luYWxFeHBvbmVudDsKKyAgICB9CisKKyAgICBpZiAobGFzdERpZ2l0ID49IDUpCisgICAgICAg
ICsrY29lZmZpY2llbnQ7CisKKyAgICB3aGlsZSAob3JpZ2luYWxFeHBvbmVudCA8IDAgJiYgY29l
ZmZpY2llbnQgJiYgIShjb2VmZmljaWVudCAlIDEwKSkgeworICAgICAgICBjb2VmZmljaWVudCAv
PSAxMDsKKyAgICAgICAgKytvcmlnaW5hbEV4cG9uZW50OworICAgIH0KKworICAgIGNvbnN0IFN0
cmluZyBkaWdpdHMgPSBTdHJpbmc6Om51bWJlcihjb2VmZmljaWVudCk7CisgICAgaW50IGNvZWZm
aWNpZW50TGVuZ3RoID0gaW50KGRpZ2l0cy5sZW5ndGgoKSk7CisgICAgY29uc3QgaW50IGFkanVz
dGVkRXhwb25lbnQgPSBvcmlnaW5hbEV4cG9uZW50ICsgY29lZmZpY2llbnRMZW5ndGggLSAxOwor
ICAgIGlmIChvcmlnaW5hbEV4cG9uZW50IDw9IDAgJiYgYWRqdXN0ZWRFeHBvbmVudCA+PSAtNikg
eworICAgICAgICBpZiAoIW9yaWdpbmFsRXhwb25lbnQpIHsKKyAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKGRpZ2l0cyk7CisgICAgICAgICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwor
ICAgICAgICB9CisKKyAgICAgICAgaWYgKGFkanVzdGVkRXhwb25lbnQgPj0gMCkgeworICAgICAg
ICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb2VmZmljaWVudExlbmd0aDsgKytpKSB7CisgICAg
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoZGlnaXRzW2ldKTsKKyAgICAgICAgICAgICAgICBp
ZiAoaSA9PSBhZGp1c3RlZEV4cG9uZW50KQorICAgICAgICAgICAgICAgICAgICBidWlsZGVyLmFw
cGVuZCgnLicpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIGJ1aWxkZXIudG9T
dHJpbmcoKTsKKyAgICAgICAgfQorCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIwLiIpOworICAg
ICAgICBmb3IgKGludCBpID0gYWRqdXN0ZWRFeHBvbmVudCArIDE7IGkgPCAwOyArK2kpCisgICAg
ICAgICAgICBidWlsZGVyLmFwcGVuZCgnMCcpOworCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGRp
Z2l0cyk7CisKKyAgICB9IGVsc2UgeworICAgICAgICBidWlsZGVyLmFwcGVuZChkaWdpdHNbMF0p
OworICAgICAgICB3aGlsZSAoY29lZmZpY2llbnRMZW5ndGggPj0gMiAmJiBkaWdpdHNbY29lZmZp
Y2llbnRMZW5ndGggLSAxXSA9PSAnMCcpCisgICAgICAgICAgICAtLWNvZWZmaWNpZW50TGVuZ3Ro
OworICAgICAgICBpZiAoY29lZmZpY2llbnRMZW5ndGggPj0gMikgeworICAgICAgICAgICAgYnVp
bGRlci5hcHBlbmQoJy4nKTsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDwgY29lZmZp
Y2llbnRMZW5ndGg7ICsraSkKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChkaWdpdHNb
aV0pOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGFkanVzdGVkRXhwb25lbnQpIHsKKyAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKGFkanVzdGVkRXhwb25lbnQgPCAwID8gImUiIDogImUrIik7
CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6Om51bWJlcihhZGp1c3RlZEV4cG9u
ZW50KSk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsK
K30KKworRGVjaW1hbCBEZWNpbWFsOjp6ZXJvKFNpZ24gc2lnbikKK3sKKyAgICByZXR1cm4gRGVj
aW1hbChFbmNvZGVkRGF0YShzaWduID09IE1pbnVzID8gTmVnYXRpdmVaZXJvUGF0dGVybiA6IFBv
c2l0aXZlWmVyb1BhdHRlcm4pKTsKK30KKworfSAvLyBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9EZWNpbWFsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9E
ZWNpbWFsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMzFmY2YyZDIwNDdlNmVkMzkzODNmZmE0ODg1YWQxM2NmNzI0
M2Q5OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RlY2ltYWwu
aApAQCAtMCwwICsxLDE1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisjaWZuZGVmIERlY2ltYWxfaAorI2RlZmluZSBEZWNpbWFsX2gKKwor
I2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIFRoaXMgY2xhc3MgcmVwcmVzZW50cyBkZWNpbWFsIGJh
c2UgZmxvYXRpbmcgcG9pbnRlciBudW1iZXIgd2l0aCAzMiBiaXQKKy8vICB1bnNpZ2VuZCBpbnRl
Z2VyIGFuZCA2NCBiaXQgdW5zaWduZWQgaW50ZWdlci4KKy8vICBvIDEgYml0IHNpZ24gKDAgPSBw
b3NpdGl2ZSBudW1iZXIsIDEgPSBuZWdhdGl2ZSBudW1iZXIpCisvLyAgbyAxMSBiaXQgYmlhc2Vk
IGV4cG9uZW50LCAxMCBiYXNlZC4KKy8vICBvIDY0IGJpdCBjb2VmZmljaWVudC4KKy8vCisvLyBF
eHBvbmVudCBhbmQgc2lnbiBiaXQgYXJlIGVuY29kZWQgYXM6CisvLyA3NjU0MzIxMCA3NjU0MzIx
MAorLy8gUzAwMDAwMDAgMDAwME1FRUUKKy8vICBTID0gc2lnbiAoMSBiaXQpLCAwID0gcG9zaXRp
dmUsIDEgPSBuZWdhdGl2ZQorLy8gIEUgPSBleHBvbmVudCAoMTEgYml0KQorLy8KKy8vIEZJWE1F
OiBPbmNlIGFsbCBDKysgY29tcGlsZXIgc3VwcG9ydCBkZWNpbWFsIHR5cGUsIHdlIHNob3VsZCBy
ZXBsYWNlIHRoaXMKKy8vIGNsYXNzIHRvIGNvbXBpbGVyIHN1cHBvcnRlZCBvbmUuIFNlZSBiZWxv
dyBVUkkgZm9yIGN1cnJlbnQgc3RhdHVzIG9mIGRlY2ltYWwKKy8vIHR5cGUgZm9yIEMrKzogLy8g
aHR0cDovL3d3dy5vcGVuLXN0ZC5vcmcvanRjMS9zYzIyL3dnMjEvZG9jcy9wYXBlcnMvMjAwNi9u
MTk3Ny5odG1sCitjbGFzcyBEZWNpbWFsIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgaW50IGNvbnN0
IEVtYXggPSAyMDQ3OyAvLyBsYXJnZXN0IGV4cG9uZW50IHZhbHVlCisgICAgc3RhdGljIGludCBj
b25zdCBFYmlhcyA9IDEwMjM7IC8vIHN1YnRyYWN0ZWQgZnJvbSBlbmNvZGVkIGV4cG9uZW50Cisg
ICAgc3RhdGljIGludCBjb25zdCBQcmVjaXNpb24gPSAxODsKKworICAgIGVudW0gRm9ybWF0Q2xh
c3MgeworICAgICAgICBDbGFzc0luZmluaXR5LAorICAgICAgICBDbGFzc05vcm1hbCwKKyAgICAg
ICAgQ2xhc3NOYU4sCisgICAgICAgIENsYXNzWmVybywKKyAgICB9OworCisgICAgZW51bSBTaWdu
IHsKKyAgICAgICAgUGx1cywKKyAgICAgICAgTWludXMsCisgICAgfTsKKworICAgIHN0cnVjdCBF
bmNvZGVkRGF0YSB7CisgICAgICAgIGV4cGxpY2l0IEVuY29kZWREYXRhKHVpbnQzMl90KTsKKyAg
ICAgICAgRW5jb2RlZERhdGEodWludDY0X3QsIGludCwgU2lnbik7CisKKyAgICAgICAgdWludDY0
X3QgY29lZmZpY2llbnQoKSBjb25zdDsKKyAgICAgICAgaW50IGNvdW50RGlnaXRzKCkgY29uc3Q7
CisgICAgICAgIGludCBleHBvbmVudCgpIGNvbnN0OworICAgICAgICBib29sIGlzRmluaXRlKCkg
Y29uc3Q7CisgICAgICAgIGJvb2wgaXNTcGVjaWFsKCkgY29uc3Q7CisgICAgICAgIGJvb2wgaXNa
ZXJvKCkgY29uc3Q7CisgICAgICAgIGludCByYXdFeHBvbmVudCgpIGNvbnN0OworICAgICAgICBT
aWduIHNpZ24oKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRTaWduKFNpZ24pOworCisgICAgICAg
IHVpbnQ2NF90IG1fY29lZmZpY2llbnQ7CisgICAgICAgIHVpbnQzMl90IG1fcGFja2VkRmllbGQ7
CisgICAgfTsKKworICAgIERlY2ltYWwoKTsKKyAgICBEZWNpbWFsKGludDMyX3QpOworICAgIERl
Y2ltYWwodWludDY0X3QsIGludCwgU2lnbik7CisgICAgRGVjaW1hbChjb25zdCBEZWNpbWFsJik7
CisgICAgZXhwbGljaXQgRGVjaW1hbChjb25zdCBFbmNvZGVkRGF0YSYpOworCisgICAgRGVjaW1h
bCYgb3BlcmF0b3IgPShjb25zdCBEZWNpbWFsJik7CisgICAgRGVjaW1hbCYgb3BlcmF0b3IgKz0o
Y29uc3QgRGVjaW1hbCYpOworICAgIERlY2ltYWwmIG9wZXJhdG9yIC09KGNvbnN0IERlY2ltYWwm
KTsKKyAgICBEZWNpbWFsJiBvcGVyYXRvciAqPShjb25zdCBEZWNpbWFsJik7CisgICAgRGVjaW1h
bCYgb3BlcmF0b3IgLz0oY29uc3QgRGVjaW1hbCYpOworCisgICAgRGVjaW1hbCBvcGVyYXRvciAt
KCkgY29uc3Q7CisKKyAgICBib29sIG9wZXJhdG9yID09KGNvbnN0IERlY2ltYWwmKSBjb25zdDsK
KyAgICBib29sIG9wZXJhdG9yICE9KGNvbnN0IERlY2ltYWwmKSBjb25zdDsKKyAgICBib29sIG9w
ZXJhdG9yIDwoY29uc3QgRGVjaW1hbCYpIGNvbnN0OworICAgIGJvb2wgb3BlcmF0b3IgPD0oY29u
c3QgRGVjaW1hbCYpIGNvbnN0OworICAgIGJvb2wgb3BlcmF0b3IgPihjb25zdCBEZWNpbWFsJikg
Y29uc3Q7CisgICAgYm9vbCBvcGVyYXRvciA+PShjb25zdCBEZWNpbWFsJikgY29uc3Q7CisKKyAg
ICBEZWNpbWFsIG9wZXJhdG9yICsoY29uc3QgRGVjaW1hbCYpIGNvbnN0OworICAgIERlY2ltYWwg
b3BlcmF0b3IgLShjb25zdCBEZWNpbWFsJikgY29uc3Q7CisgICAgRGVjaW1hbCBvcGVyYXRvciAq
KGNvbnN0IERlY2ltYWwmKSBjb25zdDsKKyAgICBEZWNpbWFsIG9wZXJhdG9yIC8oY29uc3QgRGVj
aW1hbCYpIGNvbnN0OworCisgICAgaW50IGV4cG9uZW50KCkgY29uc3Q7CisgICAgRm9ybWF0Q2xh
c3MgZm9ybWF0Q2xhc3MoKSBjb25zdDsKKyAgICBib29sIGlzRmluaXRlKCkgY29uc3QgeyByZXR1
cm4gbV9kYXRhLmlzRmluaXRlKCk7IH0KKyAgICBib29sIGlzTWludXMoKSBjb25zdCB7IHJldHVy
biBzaWduKCkgPT0gTWludXM7IH0KKyAgICBib29sIGlzUGx1cygpIGNvbnN0IHsgcmV0dXJuIHNp
Z24oKSA9PSBQbHVzOyB9CisgICAgYm9vbCBpc1NwZWNpYWwoKSBjb25zdCB7IHJldHVybiBtX2Rh
dGEuaXNTcGVjaWFsKCk7IH0KKyAgICBib29sIGlzWmVybygpIGNvbnN0IHsgcmV0dXJuIG1fZGF0
YS5pc1plcm8oKTsgfQorICAgIGNvbnN0IEVuY29kZWREYXRhJiB2YWx1ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZGF0YTsgfQorCisgICAgRGVjaW1hbCBhYnMoKSBjb25zdDsKKyAgICBEZWNpbWFsIGNl
aWwoKSBjb25zdDsKKyAgICBEZWNpbWFsIGZsb29yKCkgY29uc3Q7CisgICAgRGVjaW1hbCByZW1h
aW5kZXIoY29uc3QgRGVjaW1hbCYpIGNvbnN0OworICAgIERlY2ltYWwgcG93KGludCkgY29uc3Q7
CisgICAgRGVjaW1hbCByb3VuZCgpIGNvbnN0OworICAgIGRvdWJsZSB0b0RvdWJsZSgpIGNvbnN0
OworICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0OworCisgICAgc3RhdGljIERlY2ltYWwgZnJv
bVN0cmluZyhjb25zdCBTdHJpbmcmKTsKKyAgICBzdGF0aWMgRGVjaW1hbCBpbmZpbml0eShTaWdu
KTsKKyAgICBzdGF0aWMgRGVjaW1hbCBuYW4oKTsKKyAgICBzdGF0aWMgRGVjaW1hbCB6ZXJvKFNp
Z24pOworCitwcml2YXRlOgorICAgIERlY2ltYWwoZG91YmxlKTsKKyAgICBEZWNpbWFsIGNvbXBh
cmVUbyhjb25zdCBEZWNpbWFsJikgY29uc3Q7CisgICAgYm9vbCBmYXN0RXF1YWxzKGNvbnN0IERl
Y2ltYWwmKSBjb25zdDsKKworICAgIHN0YXRpYyBpbmxpbmUgU2lnbiBpbnZlcnRTaWduKFNpZ24g
c2lnbikKKyAgICB7CisgICAgICAgIHJldHVybiBzaWduID09IE1pbnVzID8gUGx1cyA6IE1pbnVz
OworICAgIH0KKworICAgIFNpZ24gc2lnbigpIGNvbnN0OworCisgICAgRW5jb2RlZERhdGEgbV9k
YXRhOworfTsKKworfSAvLyBXZWJDb3JlCisKKyNlbmRpZiAvLyBEZWNpbWFsX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL1dlYktpdC5neXBpCmluZGV4IDc4NTRlZGYwYTk5ZDZjYmQ4MjE1NzRjZTZmNDE1NGJj
MTEwYjAzODQuLmRjODc1NmVkNmEzZWI1Zjc5ZTIzOGEwZWM1NGE5N2Y0MjEzMGQwZmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQpAQCAtOTUsNiArOTUsNyBAQAogICAgICAgICAgICAg
J3Rlc3RzL0NsaXBib2FyZENocm9taXVtVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0Nv
bXBvc2l0b3JGYWtlR3JhcGhpY3NDb250ZXh0M0QuaCcsCiAgICAgICAgICAgICAndGVzdHMvQ29t
cG9zaXRvckZha2VXZWJHcmFwaGljc0NvbnRleHQzRC5oJywKKyAgICAgICAgICAgICd0ZXN0cy9E
ZWNpbWFsVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0RyYWdJbWFnZVRlc3QuY3BwJywK
ICAgICAgICAgICAgICd0ZXN0cy9EcmF3aW5nQnVmZmVyQ2hyb21pdW1UZXN0LmNwcCcsCiAgICAg
ICAgICAgICAndGVzdHMvRXZlbnRMaXN0ZW5lclRlc3QuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRGVjaW1hbFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9EZWNpbWFsVGVzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2VlY2M4OTIxNGEwN2Q4
ZWFiOTU2ZWQ1N2E1MTBjZjY0YjhjM2E0NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvRGVjaW1hbFRlc3QuY3BwCkBAIC0wLDAgKzEsNjc4IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRp
c3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRlY2ltYWwuaCIKKworI2luY2x1ZGUgPGd0ZXN0L2d0
ZXN0Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKKzo6c3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KDo6c3RkOjpvc3RyZWFtJiBvcywgY29u
c3QgRGVjaW1hbCYgZGVjaW1hbCkKK3sKKyAgICBEZWNpbWFsOjpFbmNvZGVkRGF0YSBkYXRhID0g
ZGVjaW1hbC52YWx1ZSgpOworICAgIHJldHVybiBvcyAKKyAgICAgICAgPDwgIkRlY2ltYWwoIiA8
PCBTdHJpbmc6Om51bWJlcihkYXRhLmNvZWZmaWNpZW50KCkpLmFzY2lpKCkuZGF0YSgpCisgICAg
ICAgIDw8ICIsICIgPDwgU3RyaW5nOjpudW1iZXIoZGF0YS5leHBvbmVudCgpKS5hc2NpaSgpLmRh
dGEoKQorICAgICAgICA8PCAiLCAiIDw8IChkYXRhLnNpZ24oKSA9PSBEZWNpbWFsOjpNaW51cyA/
ICJNaW51cyIgOiAiUGx1cyIpCisgICAgICAgIDw8ICIpPSIgPDwgZGVjaW1hbC50b1N0cmluZygp
LmFzY2lpKCkuZGF0YSgpOworfQorCit9IC8vIFdlYkNvcmUKKworbmFtZXNwYWNlIERlY2ltYWxU
ZXN0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKKy8vIFNpbXVsYXRlIFdlYkNvcmUv
aHRtbC9TdGVwUmFuZ2UKK2NsYXNzIERlY2ltYWxTdGVwUmFuZ2UgeworcHVibGljOgorICAgIERl
Y2ltYWwgbWF4aW11bTsKKyAgICBEZWNpbWFsIG1pbmltdW07CisgICAgRGVjaW1hbCBzdGVwOwor
CisgICAgRGVjaW1hbFN0ZXBSYW5nZShjb25zdCBEZWNpbWFsJiBtaW5pbXVtLCBjb25zdCBEZWNp
bWFsJiBtYXhpbXVtLCBjb25zdCBEZWNpbWFsJiBzdGVwKQorICAgICAgICA6IG1heGltdW0obWF4
aW11bSkKKyAgICAgICAgLCBtaW5pbXVtKG1pbmltdW0pCisgICAgICAgICwgc3RlcChzdGVwKQor
ICAgIHsKKyAgICB9CisKKyAgICBEZWNpbWFsIGNsYW1wVmFsdWUoRGVjaW1hbCB2YWx1ZSkgY29u
c3QKKyAgICB7CisgICAgICAgIGNvbnN0IERlY2ltYWwgcmVzdWx0ID0gbWluaW11bSArICgodmFs
dWUgLSBtaW5pbXVtKSAvIHN0ZXApLnJvdW5kKCkgKiBzdGVwOworICAgICAgICBBU1NFUlQocmVz
dWx0LmlzRmluaXRlKCkpOworICAgICAgICByZXR1cm4gcmVzdWx0ID4gbWF4aW11bSA/IHJlc3Vs
dCAtIHN0ZXAgOiByZXN1bHQ7CisgICAgfQorfTsKKworY2xhc3MgRGVjaW1hbFRlc3QgOiBwdWJs
aWMgOjp0ZXN0aW5nOjpUZXN0IHsKK3Byb3RlY3RlZDoKKyAgICB0eXBlZGVmIERlY2ltYWw6OlNp
Z24gU2lnbjsKKyAgICBwcm90ZWN0ZWQ6IHN0YXRpYyBjb25zdCBTaWduIFBsdXMgPSBEZWNpbWFs
OjpQbHVzOworICAgIHByb3RlY3RlZDogc3RhdGljIGNvbnN0IFNpZ24gTWludXMgPSBEZWNpbWFs
OjpNaW51czsKKworICAgIERlY2ltYWwgZW5jb2RlKHVpbnQ2NF90IGNvZWZmaWNpZW50LCBpbnQg
ZXhwb25lbnQsIFNpZ24gc2lnbikKKyAgICB7CisgICAgICAgIHJldHVybiBEZWNpbWFsKGNvZWZm
aWNpZW50LCBleHBvbmVudCwgc2lnbik7CisgICAgfQorCisgICAgcHJvdGVjdGVkOiBEZWNpbWFs
IGZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpCisgICAgeworICAgICAgICByZXR1cm4g
RGVjaW1hbDo6ZnJvbVN0cmluZyhzdHJpbmcpOworICAgIH0KKworICAgIHByb3RlY3RlZDogU3Ry
aW5nIHN0ZXBEb3duKGNvbnN0IFN0cmluZyYgbWluaW11bSwgY29uc3QgU3RyaW5nJiBtYXhpbXVt
LCBjb25zdCBTdHJpbmcmIHN0ZXAsIGNvbnN0IFN0cmluZyYgdmFsdWVTdHJpbmcsIGludCBudW1i
ZXJPZlN0ZXBUaW1lcykKKyAgICB7CisgICAgICAgIERlY2ltYWxTdGVwUmFuZ2Ugc3RlcFJhbmdl
KGZyb21TdHJpbmcobWluaW11bSksIGZyb21TdHJpbmcobWF4aW11bSksIGZyb21TdHJpbmcoc3Rl
cCkpOworICAgICAgICBEZWNpbWFsIHZhbHVlID0gZnJvbVN0cmluZyh2YWx1ZVN0cmluZyk7Cisg
ICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtYmVyT2ZTdGVwVGltZXM7ICsraSkgeworICAg
ICAgICAgIHZhbHVlIC09IHN0ZXBSYW5nZS5zdGVwOworICAgICAgICAgIHZhbHVlID0gc3RlcFJh
bmdlLmNsYW1wVmFsdWUodmFsdWUpOworICAgICAgICB9CisgICAgICAgIHJldHVybiB2YWx1ZS50
b1N0cmluZygpOworICAgIH0KKworICAgIHByb3RlY3RlZDogU3RyaW5nIHN0ZXBVcChjb25zdCBT
dHJpbmcmIG1pbmltdW0sIGNvbnN0IFN0cmluZyYgbWF4aW11bSwgY29uc3QgU3RyaW5nJiBzdGVw
LCBjb25zdCBTdHJpbmcmIHZhbHVlU3RyaW5nLCBpbnQgbnVtYmVyT2ZTdGVwVGltZXMpCisgICAg
eworICAgICAgICBEZWNpbWFsU3RlcFJhbmdlIHN0ZXBSYW5nZShmcm9tU3RyaW5nKG1pbmltdW0p
LCBmcm9tU3RyaW5nKG1heGltdW0pLCBmcm9tU3RyaW5nKHN0ZXApKTsKKyAgICAgICAgRGVjaW1h
bCB2YWx1ZSA9IGZyb21TdHJpbmcodmFsdWVTdHJpbmcpOworICAgICAgICBmb3IgKGludCBpID0g
MDsgaSA8IG51bWJlck9mU3RlcFRpbWVzOyArK2kpIHsKKyAgICAgICAgICB2YWx1ZSArPSBzdGVw
UmFuZ2Uuc3RlcDsKKyAgICAgICAgICB2YWx1ZSA9IHN0ZXBSYW5nZS5jbGFtcFZhbHVlKHZhbHVl
KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoKTsKKyAgICB9Cit9
OworCitURVNUX0YoRGVjaW1hbFRlc3QsIEFicykKK3sKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDAs
IDAsIFBsdXMpLCBlbmNvZGUoMCwgMCwgUGx1cykuYWJzKCkpOworICAgIEVYUEVDVF9FUShlbmNv
ZGUoMCwgMCwgUGx1cyksIGVuY29kZSgwLCAwLCBNaW51cykuYWJzKCkpOworCisgICAgRVhQRUNU
X0VRKGVuY29kZSgwLCAxMCwgUGx1cyksIGVuY29kZSgwLCAxMCwgUGx1cykuYWJzKCkpOworICAg
IEVYUEVDVF9FUShlbmNvZGUoMCwgMTAsIFBsdXMpLCBlbmNvZGUoMCwgMTAsIE1pbnVzKS5hYnMo
KSk7CisKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDAsIC0xMCwgUGx1cyksIGVuY29kZSgwLCAtMTAs
IFBsdXMpLmFicygpKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDAsIC0xMCwgUGx1cyksIGVuY29k
ZSgwLCAtMTAsIE1pbnVzKS5hYnMoKSk7CisKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDEsIDAsIFBs
dXMpLCBlbmNvZGUoMSwgMCwgUGx1cykuYWJzKCkpOworICAgIEVYUEVDVF9FUShlbmNvZGUoMSwg
MCwgUGx1cyksIGVuY29kZSgxLCAwLCBNaW51cykuYWJzKCkpOworCisgICAgRVhQRUNUX0VRKGVu
Y29kZSgxLCAxMCwgUGx1cyksIGVuY29kZSgxLCAxMCwgUGx1cykuYWJzKCkpOworICAgIEVYUEVD
VF9FUShlbmNvZGUoMSwgMTAsIFBsdXMpLCBlbmNvZGUoMSwgMTAsIE1pbnVzKS5hYnMoKSk7CisK
KyAgICBFWFBFQ1RfRVEoZW5jb2RlKDEsIC0xMCwgUGx1cyksIGVuY29kZSgxLCAtMTAsIFBsdXMp
LmFicygpKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDEsIC0xMCwgUGx1cyksIGVuY29kZSgxLCAt
MTAsIE1pbnVzKS5hYnMoKSk7Cit9CisKK1RFU1RfRihEZWNpbWFsVGVzdCwgQ2VpbGluZykKK3sK
KyAgICBFWFBFQ1RfRVEoRGVjaW1hbCgxKSwgRGVjaW1hbCgxKS5jZWlsKCkpOworICAgIEVYUEVD
VF9FUShEZWNpbWFsKDIpLCBlbmNvZGUoMTEsIC0xLCBQbHVzKS5jZWlsKCkpOworICAgIEVYUEVD
VF9FUShEZWNpbWFsKDIpLCBlbmNvZGUoMTMsIC0xLCBQbHVzKS5jZWlsKCkpOworICAgIEVYUEVD
VF9FUShEZWNpbWFsKDIpLCBlbmNvZGUoMTUsIC0xLCBQbHVzKS5jZWlsKCkpOworICAgIEVYUEVD
VF9FUShEZWNpbWFsKDIpLCBlbmNvZGUoMTksIC0xLCBQbHVzKS5jZWlsKCkpOworCisgICAgRVhQ
RUNUX0VRKERlY2ltYWwoLTEpLCBEZWNpbWFsKC0xKS5jZWlsKCkpOworICAgIEVYUEVDVF9FUShE
ZWNpbWFsKC0xKSwgZW5jb2RlKDExLCAtMSwgTWludXMpLmNlaWwoKSk7CisgICAgRVhQRUNUX0VR
KERlY2ltYWwoLTEpLCBlbmNvZGUoMTMsIC0xLCBNaW51cykuY2VpbCgpKTsKKyAgICBFWFBFQ1Rf
RVEoRGVjaW1hbCgtMSksIGVuY29kZSgxNSwgLTEsIE1pbnVzKS5jZWlsKCkpOworICAgIEVYUEVD
VF9FUShEZWNpbWFsKC0xKSwgZW5jb2RlKDE5LCAtMSwgTWludXMpLmNlaWwoKSk7Cit9CisKK1RF
U1RfRihEZWNpbWFsVGVzdCwgRW5jb2RlZERhdGEpCit7CisgICAgRVhQRUNUX0VRKGVuY29kZSgw
LCAwLCBQbHVzKSwgZW5jb2RlKDAsIDAsIFBsdXMpKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDAs
IDAsIE1pbnVzKSwgZW5jb2RlKDAsIDAsIE1pbnVzKSk7CisgICAgRVhQRUNUX0VRKERlY2ltYWwo
MSksIERlY2ltYWwoMSkpOworICAgIEVYUEVDVF9FUShlbmNvZGUoMSwgMCwgTWludXMpLCBlbmNv
ZGUoMSwgMCwgTWludXMpKTsKKyAgICBFWFBFQ1RfRVEoRGVjaW1hbDo6aW5maW5pdHkoUGx1cyks
IGVuY29kZSgxLCAyMDAwLCBQbHVzKSk7CisgICAgRVhQRUNUX0VRKERlY2ltYWw6Onplcm8oUGx1
cyksIGVuY29kZSgxLCAtMjAwMCwgUGx1cykpOworfQorCitURVNUX0YoRGVjaW1hbFRlc3QsIEZs
b29yKQoreworICAgIEVYUEVDVF9FUShEZWNpbWFsKDEpLCBEZWNpbWFsKDEpLmZsb29yKCkpOwor
ICAgIEVYUEVDVF9FUShEZWNpbWFsKDEpLCBlbmNvZGUoMTEsIC0xLCBQbHVzKS5mbG9vcigpKTsK
KyAgICBFWFBFQ1RfRVEoRGVjaW1hbCgxKSwgZW5jb2RlKDEzLCAtMSwgUGx1cykuZmxvb3IoKSk7
CisgICAgRVhQRUNUX0VRKERlY2ltYWwoMSksIGVuY29kZSgxNSwgLTEsIFBsdXMpLmZsb29yKCkp
OworICAgIEVYUEVDVF9FUShEZWNpbWFsKDEpLCBlbmNvZGUoMTksIC0xLCBQbHVzKS5mbG9vcigp
KTsKKworICAgIEVYUEVDVF9FUShEZWNpbWFsKC0xKSwgRGVjaW1hbCgtMSkuZmxvb3IoKSk7Cisg
ICAgRVhQRUNUX0VRKERlY2ltYWwoLTIpLCBlbmNvZGUoMTEsIC0xLCBNaW51cykuZmxvb3IoKSk7
CisgICAgRVhQRUNUX0VRKERlY2ltYWwoLTIpLCBlbmNvZGUoMTMsIC0xLCBNaW51cykuZmxvb3Io
KSk7CisgICAgRVhQRUNUX0VRKERlY2ltYWwoLTIpLCBlbmNvZGUoMTUsIC0xLCBNaW51cykuZmxv
b3IoKSk7CisgICAgRVhQRUNUX0VRKERlY2ltYWwoLTIpLCBlbmNvZGUoMTksIC0xLCBNaW51cyku
Zmxvb3IoKSk7Cit9CisKK1RFU1RfRihEZWNpbWFsVGVzdCwgRnJvbUludDMyKQoreworICAgIEVY
UEVDVF9FUShlbmNvZGUoMCwgMCwgUGx1cyksIERlY2ltYWwoMCkpOworICAgIEVYUEVDVF9FUShE
ZWNpbWFsKDEpLCBEZWNpbWFsKDEpKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDEsIDAsIE1pbnVz
KSwgRGVjaW1hbCgtMSkpOworICAgIEVYUEVDVF9FUShlbmNvZGUoMTAwLCAwLCBQbHVzKSwgRGVj
aW1hbCgxMDApKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDEwMCwgMCwgTWludXMpLCBEZWNpbWFs
KC0xMDApKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDB4N0ZGRkZGRkYsIDAsIFBsdXMpLCBEZWNp
bWFsKElOVF9NQVgpKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDB4ODAwMDAwMDB1LCAwLCBNaW51
cyksIERlY2ltYWwoSU5UX01JTikpOworfQorCitURVNUX0YoRGVjaW1hbFRlc3QsIEZyb21TdHJp
bmcpCit7CisgICAgRVhQRUNUX0VRKGVuY29kZSgwLCAwLCBQbHVzKSwgZnJvbVN0cmluZygiMCIp
KTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDAsIDAsIE1pbnVzKSwgZnJvbVN0cmluZygiLTAiKSk7
CisgICAgRVhQRUNUX0VRKERlY2ltYWwoMSksIGZyb21TdHJpbmcoIjEiKSk7CisgICAgRVhQRUNU
X0VRKGVuY29kZSgxLCAwLCBNaW51cyksIGZyb21TdHJpbmcoIi0xIikpOworICAgIEVYUEVDVF9F
UShEZWNpbWFsKDEpLCBmcm9tU3RyaW5nKCIwMSIpKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDMs
IDAsIFBsdXMpLCBmcm9tU3RyaW5nKCIrMyIpKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDAsIDMs
IFBsdXMpLCBmcm9tU3RyaW5nKCIwRTMiKSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSg1LCAtMSwg
UGx1cyksIGZyb21TdHJpbmcoIi41IikpOworICAgIEVYUEVDVF9FUShlbmNvZGUoMTAwLCAwLCBQ
bHVzKSwgZnJvbVN0cmluZygiMTAwIikpOworICAgIEVYUEVDVF9FUShlbmNvZGUoMTAwLCAwLCBN
aW51cyksIGZyb21TdHJpbmcoIi0xMDAiKSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSgxMjMsIC0y
LCBQbHVzKSwgZnJvbVN0cmluZygiMS4yMyIpKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDEyMywg
LTIsIE1pbnVzKSwgZnJvbVN0cmluZygiLTEuMjMiKSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSgx
MjMsIDgsIFBsdXMpLCBmcm9tU3RyaW5nKCIxLjIzRTEwIikpOworICAgIEVYUEVDVF9FUShlbmNv
ZGUoMTIzLCA4LCBNaW51cyksIGZyb21TdHJpbmcoIi0xLjIzRTEwIikpOworICAgIEVYUEVDVF9F
UShlbmNvZGUoMTIzLCA4LCBQbHVzKSwgZnJvbVN0cmluZygiMS4yM0UrMTAiKSk7CisgICAgRVhQ
RUNUX0VRKGVuY29kZSgxMjMsIDgsIE1pbnVzKSwgZnJvbVN0cmluZygiLTEuMjNFKzEwIikpOwor
ICAgIEVYUEVDVF9FUShlbmNvZGUoMTIzLCAtMTIsIFBsdXMpLCBmcm9tU3RyaW5nKCIxLjIzRS0x
MCIpKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDEyMywgLTEyLCBNaW51cyksIGZyb21TdHJpbmco
Ii0xLjIzRS0xMCIpKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDEyMywgLTMsIFBsdXMpLCBmcm9t
U3RyaW5nKCIwLjEyMyIpKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDAsIC0yLCBQbHVzKSwgZnJv
bVN0cmluZygiMDAuMDAiKSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSgxLCAyLCBQbHVzKSwgZnJv
bVN0cmluZygiMUUyIikpOworICAgIEVYUEVDVF9FUShEZWNpbWFsOjppbmZpbml0eShQbHVzKSwg
ZnJvbVN0cmluZygiMUUyMDAwMCIpKTsKKyAgICBFWFBFQ1RfRVEoRGVjaW1hbDo6emVybyhQbHVz
KSwgZnJvbVN0cmluZygiMUUtMjAwMDAiKSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSgxMDAwLCAx
MDIzLCBQbHVzKSwgZnJvbVN0cmluZygiMUUxMDI2IikpOworICAgIEVYUEVDVF9FUShEZWNpbWFs
Ojp6ZXJvKFBsdXMpLCBmcm9tU3RyaW5nKCIxRS0xMDI2IikpOworICAgIEVYUEVDVF9FUShEZWNp
bWFsOjppbmZpbml0eShQbHVzKSwgZnJvbVN0cmluZygiMTIzNDU2Nzg5MEUxMDM2IikpOworCisg
ICAgLy8gMl4xMDI0CisvLyBGSVhNRTogVUlOVDY0X0MoMTc5NzY5MzEzNDg2MjMxNTkpIHNob3Vs
ZCBiZSB1c2VkIGJ1dCBpdCBkaWQgbm90IGNvbXBpbGUgb24gUXQgYm90cy4KKyNpZiBDT01QSUxF
UihNU1ZDKQorICAgIGNvbnN0IHVpbnQ2NF90IGxlYWRpbmdEaWdpdHNPZjJQb3dlck9mMTAyNCA9
IDE3OTc2OTMxMzQ4NjIzMTU5dWk2NDsKKyNlbHNlCisgICAgY29uc3QgdWludDY0X3QgbGVhZGlu
Z0RpZ2l0c09mMlBvd2VyT2YxMDI0ID0gMTc5NzY5MzEzNDg2MjMxNTl1bGw7CisjZW5kaWYKKyAg
ICBFWFBFQ1RfRVEoZW5jb2RlKGxlYWRpbmdEaWdpdHNPZjJQb3dlck9mMTAyNCwgMjkyLCBQbHVz
KSwgZnJvbVN0cmluZygiMTc5NzY5MzEzNDg2MjMxNTkwNzcyOTMwNTE5MDc4OTAyNDczMzYxNzk3
Njk3ODk0MjMwNjU3MjczNDMwMDgxMTU3NzMyNjc1ODA1NTAwOTYzMTMyNzA4NDc3MzIyNDA3NTM2
MDIxMTIwMTEzODc5ODcxMzkzMzU3NjU4Nzg5NzY4ODE0NDE2NjIyNDkyODQ3NDMwNjM5NDc0MTI0
Mzc3NzY3ODkzNDI0ODY1NDg1Mjc2MzAyMjE5NjAxMjQ2MDk0MTE5NDUzMDgyOTUyMDg1MDA1NzY4
ODM4MTUwNjgyMzQyNDYyODgxNDczOTEzMTEwNTQwODI3MjM3MTYzMzUwNTEwNjg0NTg2Mjk4MjM5
OTQ3MjQ1OTM4NDc5NzE2MzA0ODM1MzU2MzI5NjI0MjI0MTM3MjE2IikpOworfQorCisvLyBUaGVz
ZSBzdHJpbmdzIGFyZSBsb29rIGxpa2UgcHJvcGVyIG51bWJlciwgYnV0IHdlIGRvbid0IGFjY2Vw
dCB0aGVtLgorVEVTVF9GKERlY2ltYWxUZXN0LCBGcm9tU3RyaW5nTGlrZU51bWJlcikKK3sKKyAg
ICBFWFBFQ1RfRVEoRGVjaW1hbDo6bmFuKCksIGZyb21TdHJpbmcoIiAxMjMgIikpOworICAgIEVY
UEVDVF9FUShEZWNpbWFsOjpuYW4oKSwgZnJvbVN0cmluZygiMSwyMzQiKSk7CisgICAgRVhQRUNU
X0VRKERlY2ltYWw6Om5hbigpLCBmcm9tU3RyaW5nKCJJTkYiKSk7Cit9CisKK1RFU1RfRihEZWNp
bWFsVGVzdCwgZnJvbVN0cmluZ1RydW5jYXRlZCkKK3sKKyAgICBFWFBFQ1RfRVEoRGVjaW1hbDo6
bmFuKCksIGZyb21TdHJpbmcoIngiKSk7CisgICAgRVhQRUNUX0VRKERlY2ltYWw6Om5hbigpLCBm
cm9tU3RyaW5nKCIwLiIpKTsKKyAgICBFWFBFQ1RfRVEoRGVjaW1hbDo6bmFuKCksIGZyb21TdHJp
bmcoIjF4IikpOworCisgICAgRVhQRUNUX0VRKERlY2ltYWw6Om5hbigpLCBmcm9tU3RyaW5nKCIx
RXgiKSk7CisgICAgRVhQRUNUX0VRKERlY2ltYWw6Om5hbigpLCBmcm9tU3RyaW5nKCIxRTJ4Iikp
OworICAgIEVYUEVDVF9FUShEZWNpbWFsOjpuYW4oKSwgZnJvbVN0cmluZygiMUUreCIpKTsKK30K
KworVEVTVF9GKERlY2ltYWxUZXN0LCBPcEFkZCkKK3sKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDAs
IDAsIFBsdXMpLCBEZWNpbWFsKDApICsgRGVjaW1hbCgwKSk7CisgICAgRVhQRUNUX0VRKERlY2lt
YWwoMSksIERlY2ltYWwoMikgKyBEZWNpbWFsKC0xKSk7CisgICAgRVhQRUNUX0VRKERlY2ltYWwo
MSksIERlY2ltYWwoLTEpICsgRGVjaW1hbCgyKSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSgxMDAs
IDAsIFBsdXMpLCBEZWNpbWFsKDk5KSArIERlY2ltYWwoMSkpOworICAgIEVYUEVDVF9FUShlbmNv
ZGUoMTAwLCAwLCBNaW51cyksIERlY2ltYWwoLTUwKSArIERlY2ltYWwoLTUwKSk7CisgICAgRVhQ
RUNUX0VRKGVuY29kZSgxMDAwMDAwMDAwMDAwMDAwLCAzNSwgUGx1cyksIGVuY29kZSgxLCA1MCwg
UGx1cykgKyBEZWNpbWFsKDEpKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDEwMDAwMDAwMDAwMDAw
MDAsIDM1LCBQbHVzKSwgRGVjaW1hbCgxKSArIGVuY29kZSgxLCA1MCwgUGx1cykpOworICAgIEVY
UEVDVF9FUShlbmNvZGUoMTAwMDAwMDAwMDEsIDAsIFBsdXMpLCBlbmNvZGUoMSwgMTAsIFBsdXMp
ICsgRGVjaW1hbCgxKSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSgxMDAwMDAwMDAwMSwgMCwgUGx1
cyksIERlY2ltYWwoMSkgKyBlbmNvZGUoMSwgMTAsIFBsdXMpKTsKKyAgICBFWFBFQ1RfRVEoZW5j
b2RlKDEsIDAsIFBsdXMpLCBlbmNvZGUoMSwgLTEwMjIsIFBsdXMpICsgZW5jb2RlKDEsIDAsIFBs
dXMpKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDIsIC0xMDIyLCBQbHVzKSwgZW5jb2RlKDEsIC0x
MDIyLCBQbHVzKSArIGVuY29kZSgxLCAtMTAyMiwgUGx1cykpOworfQorCitURVNUX0YoRGVjaW1h
bFRlc3QsIE9wQWRkQmlnRSkKK3sKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDEsIDEwMjIsIFBsdXMp
LCBlbmNvZGUoMSwgMTAyMiwgUGx1cykgKyBlbmNvZGUoMSwgMCwgUGx1cykpOworICAgIEVYUEVD
VF9FUShlbmNvZGUoMiwgMTAyMiwgUGx1cyksIGVuY29kZSgxLCAxMDIyLCBQbHVzKSArIGVuY29k
ZSgxLCAxMDIyLCBQbHVzKSk7CisgICAgRVhQRUNUX0VRKERlY2ltYWw6OmluZmluaXR5KFBsdXMp
LCBlbmNvZGUodWludDY0X3QoLTEpLCAxMDIyLCBQbHVzKSArIGVuY29kZSgxLCAwLCBQbHVzKSk7
Cit9CisKK1RFU1RfRihEZWNpbWFsVGVzdCwgT3BBZGRTbWFsbEUpCit7CisgICAgRVhQRUNUX0VR
KGVuY29kZSgxLCAwLCBQbHVzKSwgZW5jb2RlKDEsIC0xMDIyLCBQbHVzKSArIGVuY29kZSgxLCAw
LCBQbHVzKSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSgyLCAtMTAyMiwgUGx1cyksIGVuY29kZSgx
LCAtMTAyMiwgUGx1cykgKyBlbmNvZGUoMSwgLTEwMjIsIFBsdXMpKTsKK30KKworVEVTVF9GKERl
Y2ltYWxUZXN0LCBPcEFkZFNwZWNpYWxWYWx1ZXMpCit7CisgICAgY29uc3QgRGVjaW1hbCBJbmZp
bml0eShEZWNpbWFsOjppbmZpbml0eShQbHVzKSk7CisgICAgY29uc3QgRGVjaW1hbCBNaW51c0lu
ZmluaXR5KERlY2ltYWw6OmluZmluaXR5KE1pbnVzKSk7CisgICAgY29uc3QgRGVjaW1hbCBOYU4o
RGVjaW1hbDo6bmFuKCkpOworICAgIGNvbnN0IERlY2ltYWwgVGVuKDEwKTsKKworICAgIEVYUEVD
VF9FUShJbmZpbml0eSwgSW5maW5pdHkgKyBJbmZpbml0eSk7CisgICAgRVhQRUNUX0VRKE5hTiwg
SW5maW5pdHkgKyBNaW51c0luZmluaXR5KTsKKyAgICBFWFBFQ1RfRVEoTmFOLCBNaW51c0luZmlu
aXR5ICsgSW5maW5pdHkpOworICAgIEVYUEVDVF9FUShNaW51c0luZmluaXR5LCBNaW51c0luZmlu
aXR5ICsgTWludXNJbmZpbml0eSk7CisKKyAgICBFWFBFQ1RfRVEoSW5maW5pdHksIEluZmluaXR5
ICsgVGVuKTsKKyAgICBFWFBFQ1RfRVEoSW5maW5pdHksIFRlbiArIEluZmluaXR5KTsKKyAgICBF
WFBFQ1RfRVEoTWludXNJbmZpbml0eSwgTWludXNJbmZpbml0eSArIFRlbik7CisgICAgRVhQRUNU
X0VRKE1pbnVzSW5maW5pdHksIFRlbiArIE1pbnVzSW5maW5pdHkpOworCisgICAgRVhQRUNUX0VR
KE5hTiwgTmFOICsgTmFOKTsKKyAgICBFWFBFQ1RfRVEoTmFOLCBOYU4gKyBUZW4pOworICAgIEVY
UEVDVF9FUShOYU4sIFRlbiArIE5hTik7Cit9CisKK1RFU1RfRihEZWNpbWFsVGVzdCwgT3BDb21w
YXJlKQoreworICAgIEVYUEVDVF9UUlVFKERlY2ltYWwoMCkgPT0gRGVjaW1hbCgwKSk7CisgICAg
RVhQRUNUX1RSVUUoRGVjaW1hbCgwKSAhPSBEZWNpbWFsKDEpKTsKKyAgICBFWFBFQ1RfVFJVRShE
ZWNpbWFsKDApIDwgRGVjaW1hbCgxKSk7CisgICAgRVhQRUNUX1RSVUUoRGVjaW1hbCgwKSA8PSBE
ZWNpbWFsKDApKTsKKyAgICBFWFBFQ1RfVFJVRShEZWNpbWFsKDApID4gRGVjaW1hbCgtMSkpOwor
ICAgIEVYUEVDVF9UUlVFKERlY2ltYWwoMCkgPj0gRGVjaW1hbCgwKSk7CisKKyAgICBFWFBFQ1Rf
RkFMU0UoRGVjaW1hbCgxKSA9PSBEZWNpbWFsKDIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoRGVjaW1h
bCgxKSAhPSBEZWNpbWFsKDEpKTsKKyAgICBFWFBFQ1RfRkFMU0UoRGVjaW1hbCgxKSA8IERlY2lt
YWwoMCkpOworICAgIEVYUEVDVF9GQUxTRShEZWNpbWFsKDEpIDw9IERlY2ltYWwoMCkpOworICAg
IEVYUEVDVF9GQUxTRShEZWNpbWFsKDEpID4gRGVjaW1hbCgyKSk7CisgICAgRVhQRUNUX0ZBTFNF
KERlY2ltYWwoMSkgPj0gRGVjaW1hbCgyKSk7Cit9CisKK1RFU1RfRihEZWNpbWFsVGVzdCwgT3BD
b21wYXJlU3BlY2lhbFZhbHVlcykKK3sKKyAgICBFWFBFQ1RfVFJVRShEZWNpbWFsKDEpIDwgRGVj
aW1hbDo6aW5maW5pdHkoUGx1cykpOworICAgIEVYUEVDVF9UUlVFKERlY2ltYWwoMSkgPiBEZWNp
bWFsOjppbmZpbml0eShNaW51cykpOworfQorCitURVNUX0YoRGVjaW1hbFRlc3QsIE9wRGl2KQor
eworICAgIEVYUEVDVF9FUShlbmNvZGUoMCwgMCwgUGx1cyksIERlY2ltYWwoMCkgLyBEZWNpbWFs
KDEpKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDIsIDAsIE1pbnVzKSwgRGVjaW1hbCgyKSAvIERl
Y2ltYWwoLTEpKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDUsIC0xLCBNaW51cyksIERlY2ltYWwo
LTEpIC8gRGVjaW1hbCgyKSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSg5OSwgMCwgUGx1cyksIERl
Y2ltYWwoOTkpIC8gRGVjaW1hbCgxKSk7CisgICAgRVhQRUNUX0VRKERlY2ltYWwoMSksIERlY2lt
YWwoLTUwKSAvIERlY2ltYWwoLTUwKSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSgzMzMzMzMzMzMz
MzMzMzMzLCAtMTYsIFBsdXMpLCBEZWNpbWFsKDEpIC8gRGVjaW1hbCgzKSk7CisgICAgRVhQRUNU
X0VRKGVuY29kZSgxMjM0NTY3ODkwMTIzNCwgLTEsIFBsdXMpLCBlbmNvZGUoMTIzNDU2Nzg5MDEy
MzQsIDAsIFBsdXMpIC8gRGVjaW1hbCgxMCkpOworfQorCitURVNUX0YoRGVjaW1hbFRlc3QsIE9w
RGl2QmlnRSkKK3sKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDEsIDEwMjIsIFBsdXMpLCBlbmNvZGUo
MSwgMTAyMiwgUGx1cykgLyBlbmNvZGUoMSwgMCwgUGx1cykpOworICAgIEVYUEVDVF9FUShlbmNv
ZGUoMSwgMCwgUGx1cyksIGVuY29kZSgxLCAxMDIyLCBQbHVzKSAvIGVuY29kZSgxLCAxMDIyLCBQ
bHVzKSk7Cit9CisKK1RFU1RfRihEZWNpbWFsVGVzdCwgT3BEaXZTbWFsbEUpCit7CisgICAgRVhQ
RUNUX0VRKGVuY29kZSgxLCAtMTAyMiwgUGx1cyksIGVuY29kZSgxLCAtMTAyMiwgUGx1cykgLyBl
bmNvZGUoMSwgMCwgUGx1cykpOworICAgIEVYUEVDVF9FUShlbmNvZGUoMSwgMCwgUGx1cyksIGVu
Y29kZSgxLCAtMTAyMiwgUGx1cykgLyBlbmNvZGUoMSwgLTEwMjIsIFBsdXMpKTsKK30KKworVEVT
VF9GKERlY2ltYWxUZXN0LCBPcERpdlNwZWNpYWxWYWx1ZXMpCit7CisgICAgY29uc3QgRGVjaW1h
bCBJbmZpbml0eShEZWNpbWFsOjppbmZpbml0eShQbHVzKSk7CisgICAgY29uc3QgRGVjaW1hbCBN
aW51c0luZmluaXR5KERlY2ltYWw6OmluZmluaXR5KE1pbnVzKSk7CisgICAgY29uc3QgRGVjaW1h
bCBOYU4oRGVjaW1hbDo6bmFuKCkpOworICAgIGNvbnN0IERlY2ltYWwgWmVybyhEZWNpbWFsOjp6
ZXJvKFBsdXMpKTsKKyAgICBjb25zdCBEZWNpbWFsIE1pbnVzWmVybyhEZWNpbWFsOjp6ZXJvKE1p
bnVzKSk7CisgICAgY29uc3QgRGVjaW1hbCBUZW4oMTApOworICAgIGNvbnN0IERlY2ltYWwgTWlu
dXNUZW4oLTEwKTsKKworICAgIEVYUEVDVF9FUShOYU4sIFplcm8gLyBaZXJvKTsKKyAgICBFWFBF
Q1RfRVEoTmFOLCBaZXJvIC8gTWludXNaZXJvKTsKKyAgICBFWFBFQ1RfRVEoTmFOLCBNaW51c1pl
cm8gLyBaZXJvKTsKKyAgICBFWFBFQ1RfRVEoTmFOLCBNaW51c1plcm8gLyBNaW51c1plcm8pOwor
CisgICAgRVhQRUNUX0VRKEluZmluaXR5LCBUZW4gLyBaZXJvKTsKKyAgICBFWFBFQ1RfRVEoTWlu
dXNJbmZpbml0eSwgVGVuIC8gTWludXNaZXJvKTsKKyAgICBFWFBFQ1RfRVEoTWludXNJbmZpbml0
eSwgTWludXNUZW4gLyBaZXJvKTsKKyAgICBFWFBFQ1RfRVEoSW5maW5pdHksIE1pbnVzVGVuIC8g
TWludXNaZXJvKTsKKworICAgIEVYUEVDVF9FUShJbmZpbml0eSwgSW5maW5pdHkgLyBaZXJvKTsK
KyAgICBFWFBFQ1RfRVEoTWludXNJbmZpbml0eSwgSW5maW5pdHkgLyBNaW51c1plcm8pOworICAg
IEVYUEVDVF9FUShNaW51c0luZmluaXR5LCBNaW51c0luZmluaXR5IC8gWmVybyk7CisgICAgRVhQ
RUNUX0VRKEluZmluaXR5LCBNaW51c0luZmluaXR5IC8gTWludXNaZXJvKTsKKworICAgIEVYUEVD
VF9FUShOYU4sIEluZmluaXR5IC8gSW5maW5pdHkpOworICAgIEVYUEVDVF9FUShOYU4sIEluZmlu
aXR5IC8gTWludXNJbmZpbml0eSk7CisgICAgRVhQRUNUX0VRKE5hTiwgTWludXNJbmZpbml0eSAv
IEluZmluaXR5KTsKKyAgICBFWFBFQ1RfRVEoTmFOLCBNaW51c0luZmluaXR5IC8gTWludXNJbmZp
bml0eSk7CisKKyAgICBFWFBFQ1RfRVEoWmVybywgVGVuIC8gSW5maW5pdHkpOworICAgIEVYUEVD
VF9FUShNaW51c1plcm8sIFRlbiAvIE1pbnVzSW5maW5pdHkpOworICAgIEVYUEVDVF9FUShNaW51
c1plcm8sIE1pbnVzVGVuIC8gSW5maW5pdHkpOworICAgIEVYUEVDVF9FUShaZXJvLCBNaW51c1Rl
biAvIE1pbnVzSW5maW5pdHkpOworCisgICAgRVhQRUNUX0VRKE5hTiwgTmFOIC8gTmFOKTsKKyAg
ICBFWFBFQ1RfRVEoTmFOLCBOYU4gLyBUZW4pOworICAgIEVYUEVDVF9FUShOYU4sIFRlbiAvIE5h
Tik7Cit9CisKK1RFU1RfRihEZWNpbWFsVGVzdCwgT3BNdWwpCit7CisgICAgRVhQRUNUX0VRKGVu
Y29kZSgwLCAwLCBQbHVzKSwgRGVjaW1hbCgwKSAqIERlY2ltYWwoMCkpOworICAgIEVYUEVDVF9F
UShlbmNvZGUoMiwgMCwgTWludXMpLCBEZWNpbWFsKDIpICogRGVjaW1hbCgtMSkpOworICAgIEVY
UEVDVF9FUShlbmNvZGUoMiwgMCwgTWludXMpLCBEZWNpbWFsKC0xKSAqIERlY2ltYWwoMikpOwor
ICAgIEVYUEVDVF9FUShlbmNvZGUoOTksIDAsIFBsdXMpLCBEZWNpbWFsKDk5KSAqIERlY2ltYWwo
MSkpOworICAgIEVYUEVDVF9FUShlbmNvZGUoMjUwMCwgMCwgUGx1cyksIERlY2ltYWwoLTUwKSAq
IERlY2ltYWwoLTUwKSk7Cit9CisKK1RFU1RfRihEZWNpbWFsVGVzdCwgT3BNdWxCaWdFKQorewor
ICAgIEVYUEVDVF9FUShlbmNvZGUoMSwgMTAyMiwgUGx1cyksIGVuY29kZSgxLCAxMDIyLCBQbHVz
KSAqIGVuY29kZSgxLCAwLCBQbHVzKSk7CisgICAgRVhQRUNUX0VRKERlY2ltYWw6OmluZmluaXR5
KFBsdXMpLCBlbmNvZGUoMSwgMTAyMiwgUGx1cykgKiBlbmNvZGUoMSwgMTAyMiwgUGx1cykpOwor
fQorCitURVNUX0YoRGVjaW1hbFRlc3QsIE9wTXVsU21hbGxFKQoreworICAgIEVYUEVDVF9FUShl
bmNvZGUoMSwgLTEwMjIsIFBsdXMpLCBlbmNvZGUoMSwgLTEwMjIsIFBsdXMpICogZW5jb2RlKDEs
IDAsIFBsdXMpKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDAsIDAsIFBsdXMpLCBlbmNvZGUoMSwg
LTEwMjIsIFBsdXMpICogZW5jb2RlKDEsIC0xMDIyLCBQbHVzKSk7Cit9CisKK1RFU1RfRihEZWNp
bWFsVGVzdCwgT3BNdWxTcGVjaWFsVmFsdWVzKQoreworICAgIGNvbnN0IERlY2ltYWwgSW5maW5p
dHkoRGVjaW1hbDo6aW5maW5pdHkoUGx1cykpOworICAgIGNvbnN0IERlY2ltYWwgTWludXNJbmZp
bml0eShEZWNpbWFsOjppbmZpbml0eShNaW51cykpOworICAgIGNvbnN0IERlY2ltYWwgTmFOKERl
Y2ltYWw6Om5hbigpKTsKKyAgICBjb25zdCBEZWNpbWFsIFRlbigxMCk7CisgICAgY29uc3QgRGVj
aW1hbCBNaW51c1RlbigtMTApOworICAgIGNvbnN0IERlY2ltYWwgWmVybyhEZWNpbWFsOjp6ZXJv
KFBsdXMpKTsKKyAgICBjb25zdCBEZWNpbWFsIE1pbnVzWmVybyhEZWNpbWFsOjp6ZXJvKE1pbnVz
KSk7CisKKyAgICBFWFBFQ1RfRVEoSW5maW5pdHksIEluZmluaXR5ICogSW5maW5pdHkpOworICAg
IEVYUEVDVF9FUShNaW51c0luZmluaXR5LCBJbmZpbml0eSAqIE1pbnVzSW5maW5pdHkpOworICAg
IEVYUEVDVF9FUShNaW51c0luZmluaXR5LCBNaW51c0luZmluaXR5ICogSW5maW5pdHkpOworICAg
IEVYUEVDVF9FUShJbmZpbml0eSwgTWludXNJbmZpbml0eSAqIE1pbnVzSW5maW5pdHkpOworCisg
ICAgRVhQRUNUX0VRKE5hTiwgSW5maW5pdHkgKiBaZXJvKTsKKyAgICBFWFBFQ1RfRVEoTmFOLCBa
ZXJvICogTWludXNJbmZpbml0eSk7CisgICAgRVhQRUNUX0VRKE5hTiwgTWludXNJbmZpbml0eSAq
IFplcm8pOworICAgIEVYUEVDVF9FUShOYU4sIE1pbnVzSW5maW5pdHkgKiBaZXJvKTsKKworICAg
IEVYUEVDVF9FUShOYU4sIEluZmluaXR5ICogTWludXNaZXJvKTsKKyAgICBFWFBFQ1RfRVEoTmFO
LCBNaW51c1plcm8gKiBNaW51c0luZmluaXR5KTsKKyAgICBFWFBFQ1RfRVEoTmFOLCBNaW51c0lu
ZmluaXR5ICogTWludXNaZXJvKTsKKyAgICBFWFBFQ1RfRVEoTmFOLCBNaW51c0luZmluaXR5ICog
TWludXNaZXJvKTsKKworICAgIEVYUEVDVF9FUShJbmZpbml0eSwgSW5maW5pdHkgKiBUZW4pOwor
ICAgIEVYUEVDVF9FUShJbmZpbml0eSwgVGVuICogSW5maW5pdHkpOworICAgIEVYUEVDVF9FUShN
aW51c0luZmluaXR5LCBNaW51c0luZmluaXR5ICogVGVuKTsKKyAgICBFWFBFQ1RfRVEoTWludXNJ
bmZpbml0eSwgVGVuICogTWludXNJbmZpbml0eSk7CisKKyAgICBFWFBFQ1RfRVEoTWludXNJbmZp
bml0eSwgSW5maW5pdHkgKiBNaW51c1Rlbik7CisgICAgRVhQRUNUX0VRKE1pbnVzSW5maW5pdHks
IE1pbnVzVGVuICogSW5maW5pdHkpOworICAgIEVYUEVDVF9FUShJbmZpbml0eSwgTWludXNJbmZp
bml0eSAqIE1pbnVzVGVuKTsKKyAgICBFWFBFQ1RfRVEoSW5maW5pdHksIE1pbnVzVGVuICogTWlu
dXNJbmZpbml0eSk7CisKKyAgICBFWFBFQ1RfRVEoTmFOLCBOYU4gKiBOYU4pOworICAgIEVYUEVD
VF9FUShOYU4sIE5hTiAqIFRlbik7CisgICAgRVhQRUNUX0VRKE5hTiwgVGVuICogTmFOKTsKK30K
KworVEVTVF9GKERlY2ltYWxUZXN0LCBPcFN1YikKK3sKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDAs
IDAsIFBsdXMpLCBEZWNpbWFsKDApIC0gRGVjaW1hbCgwKSk7CisgICAgRVhQRUNUX0VRKGVuY29k
ZSgzLCAwLCBQbHVzKSwgRGVjaW1hbCgyKSAtIERlY2ltYWwoLTEpKTsKKyAgICBFWFBFQ1RfRVEo
ZW5jb2RlKDMsIDAsIE1pbnVzKSwgRGVjaW1hbCgtMSkgLSBEZWNpbWFsKDIpKTsKKyAgICBFWFBF
Q1RfRVEoZW5jb2RlKDk4LCAwLCBQbHVzKSwgRGVjaW1hbCg5OSkgLSBEZWNpbWFsKDEpKTsKKyAg
ICBFWFBFQ1RfRVEoZW5jb2RlKDAsIDAsIFBsdXMpLCBEZWNpbWFsKC01MCkgLSBEZWNpbWFsKC01
MCkpOworICAgIEVYUEVDVF9FUShlbmNvZGUoMTAwMDAwMDAwMDAwMDAwMCwgMzUsIFBsdXMpLCBl
bmNvZGUoMSwgNTAsIFBsdXMpIC0gRGVjaW1hbCgxKSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSgx
MDAwMDAwMDAwMDAwMDAwLCAzNSwgTWludXMpLCBEZWNpbWFsKDEpIC0gZW5jb2RlKDEsIDUwLCBQ
bHVzKSk7Cit9CisKK1RFU1RfRihEZWNpbWFsVGVzdCwgT3BTdWJCaWdFKQoreworICAgIEVYUEVD
VF9FUShlbmNvZGUoMSwgMTAyMiwgUGx1cyksIGVuY29kZSgxLCAxMDIyLCBQbHVzKSAtIGVuY29k
ZSgxLCAwLCBQbHVzKSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSgwLCAwLCBQbHVzKSwgZW5jb2Rl
KDEsIDEwMjIsIFBsdXMpIC0gZW5jb2RlKDEsIDEwMjIsIFBsdXMpKTsKK30KKworVEVTVF9GKERl
Y2ltYWxUZXN0LCBPcFN1YlNtYWxsRSkKK3sKKyAgICAvLyBGSVhNRTogVUlOVDY0X0MoMTAwMDAw
MDAwMDAwMDAwMDApIHNob3VsZCBiZSB1c2VkIGJ1dCBpdCBkaWQgbm90IGNvbXBpbGUgb24gUXQg
Ym90cy4KKyAgICAjaWYgQ09NUElMRVIoTVNWQykKKyAgICAgICAgY29uc3QgdWludDY0X3QgdWlu
dDEwMDAwMDAwMDAwMDAwMDAwID0gMTAwMDAwMDAwMDAwMDAwMDB1aTY0OworICAgICNlbHNlCisg
ICAgICAgIGNvbnN0IHVpbnQ2NF90IHVpbnQxMDAwMDAwMDAwMDAwMDAwMCA9IDEwMDAwMDAwMDAw
MDAwMDAwdWxsOworICAgICNlbmRpZgorCisgICAgRVhQRUNUX0VRKGVuY29kZSh1aW50MTAwMDAw
MDAwMDAwMDAwMDAsIC0xNiwgTWludXMpLCBlbmNvZGUoMSwgLTEwMjIsIFBsdXMpIC0gZW5jb2Rl
KDEsIDAsIFBsdXMpKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDAsIDAsIFBsdXMpLCBlbmNvZGUo
MSwgLTEwMjIsIFBsdXMpIC0gZW5jb2RlKDEsIC0xMDIyLCBQbHVzKSk7Cit9CisKK1RFU1RfRihE
ZWNpbWFsVGVzdCwgT3BTdWJTcGVjaWFsVmFsdWVzKQoreworICAgIGNvbnN0IERlY2ltYWwgSW5m
aW5pdHkoRGVjaW1hbDo6aW5maW5pdHkoUGx1cykpOworICAgIGNvbnN0IERlY2ltYWwgTWludXNJ
bmZpbml0eShEZWNpbWFsOjppbmZpbml0eShNaW51cykpOworICAgIGNvbnN0IERlY2ltYWwgTmFO
KERlY2ltYWw6Om5hbigpKTsKKyAgICBjb25zdCBEZWNpbWFsIFRlbigxMCk7CisKKyAgICBFWFBF
Q1RfRVEoTmFOLCBJbmZpbml0eSAtIEluZmluaXR5KTsKKyAgICBFWFBFQ1RfRVEoSW5maW5pdHks
IEluZmluaXR5IC0gTWludXNJbmZpbml0eSk7CisgICAgRVhQRUNUX0VRKE1pbnVzSW5maW5pdHks
IE1pbnVzSW5maW5pdHkgLSBJbmZpbml0eSk7CisgICAgRVhQRUNUX0VRKE5hTiwgTWludXNJbmZp
bml0eSAtIE1pbnVzSW5maW5pdHkpOworCisgICAgRVhQRUNUX0VRKEluZmluaXR5LCBJbmZpbml0
eSAtIFRlbik7CisgICAgRVhQRUNUX0VRKE1pbnVzSW5maW5pdHksIFRlbiAtIEluZmluaXR5KTsK
KyAgICBFWFBFQ1RfRVEoTWludXNJbmZpbml0eSwgTWludXNJbmZpbml0eSAtIFRlbik7CisgICAg
RVhQRUNUX0VRKEluZmluaXR5LCBUZW4gLSBNaW51c0luZmluaXR5KTsKKworICAgIEVYUEVDVF9F
UShOYU4sIE5hTiAtIE5hTik7CisgICAgRVhQRUNUX0VRKE5hTiwgTmFOIC0gVGVuKTsKKyAgICBF
WFBFQ1RfRVEoTmFOLCBUZW4gLSBOYU4pOworfQorCitURVNUX0YoRGVjaW1hbFRlc3QsIFBvdykK
K3sKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDEsIDAsIFBsdXMpLCBEZWNpbWFsOjp6ZXJvKFBsdXMp
LnBvdygwKSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSgwLCAwLCBQbHVzKSwgRGVjaW1hbDo6emVy
byhQbHVzKS5wb3coMSkpOworICAgIEVYUEVDVF9FUShlbmNvZGUoMCwgMCwgUGx1cyksIERlY2lt
YWw6Onplcm8oUGx1cykucG93KDIpKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDAsIDAsIFBsdXMp
LCBEZWNpbWFsOjp6ZXJvKFBsdXMpLnBvdygzKSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSgwLCAw
LCBQbHVzKSwgRGVjaW1hbDo6emVybyhQbHVzKS5wb3coMTAwMCkpOworICAgIEVYUEVDVF9FUShl
bmNvZGUoMCwgMCwgUGx1cyksIERlY2ltYWw6Onplcm8oUGx1cykucG93KDEwMDAwKSk7CisgICAg
RVhQRUNUX0VRKGVuY29kZSgwLCAwLCBQbHVzKSwgRGVjaW1hbDo6emVybyhQbHVzKS5wb3coLTEp
KTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDAsIDAsIFBsdXMpLCBEZWNpbWFsOjp6ZXJvKFBsdXMp
LnBvdygtMikpOworICAgIEVYUEVDVF9FUShlbmNvZGUoMCwgMCwgUGx1cyksIERlY2ltYWw6Onpl
cm8oUGx1cykucG93KC0zKSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSgwLCAwLCBQbHVzKSwgRGVj
aW1hbDo6emVybyhQbHVzKS5wb3coLTEwMDApKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDAsIDAs
IFBsdXMpLCBEZWNpbWFsOjp6ZXJvKFBsdXMpLnBvdygtMTAwMDApKTsKKworICAgIEVYUEVDVF9F
UShlbmNvZGUoMSwgMCwgUGx1cyksIERlY2ltYWw6Onplcm8oTWludXMpLnBvdygwKSk7CisgICAg
RVhQRUNUX0VRKGVuY29kZSgwLCAwLCBNaW51cyksIERlY2ltYWw6Onplcm8oTWludXMpLnBvdygx
KSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSgwLCAwLCBQbHVzKSwgRGVjaW1hbDo6emVybyhNaW51
cykucG93KDIpKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDAsIDAsIE1pbnVzKSwgRGVjaW1hbDo6
emVybyhNaW51cykucG93KDMpKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDAsIDAsIFBsdXMpLCBE
ZWNpbWFsOjp6ZXJvKE1pbnVzKS5wb3coMTAwMCkpOworICAgIEVYUEVDVF9FUShlbmNvZGUoMCwg
MCwgTWludXMpLCBEZWNpbWFsOjp6ZXJvKE1pbnVzKS5wb3coLTEpKTsKKyAgICBFWFBFQ1RfRVEo
ZW5jb2RlKDAsIDAsIFBsdXMpLCBEZWNpbWFsOjp6ZXJvKE1pbnVzKS5wb3coLTIpKTsKKyAgICBF
WFBFQ1RfRVEoZW5jb2RlKDAsIDAsIE1pbnVzKSwgRGVjaW1hbDo6emVybyhNaW51cykucG93KC0z
KSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSgwLCAwLCBQbHVzKSwgRGVjaW1hbDo6emVybyhNaW51
cykucG93KC0xMDAwKSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSgwLCAwLCBQbHVzKSwgRGVjaW1h
bDo6emVybyhNaW51cykucG93KC0xMDAwMCkpOworCisgICAgRVhQRUNUX0VRKGVuY29kZSgxLCAw
LCBQbHVzKSwgRGVjaW1hbCgxKS5wb3coMCkpOworICAgIEVYUEVDVF9FUShlbmNvZGUoMSwgMCwg
UGx1cyksIERlY2ltYWwoMSkucG93KDEpKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDEsIDAsIFBs
dXMpLCBEZWNpbWFsKDEpLnBvdygyKSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSgxLCAwLCBQbHVz
KSwgRGVjaW1hbCgxKS5wb3coMykpOworICAgIEVYUEVDVF9FUShlbmNvZGUoMSwgMCwgUGx1cyks
IERlY2ltYWwoMSkucG93KDEwMDApKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDEsIDAsIFBsdXMp
LCBEZWNpbWFsKDEpLnBvdygxMDAwMCkpOworICAgIEVYUEVDVF9FUShlbmNvZGUoMSwgMCwgUGx1
cyksIERlY2ltYWwoMSkucG93KC0xKSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSgxLCAwLCBQbHVz
KSwgRGVjaW1hbCgxKS5wb3coLTIpKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDEsIDAsIFBsdXMp
LCBEZWNpbWFsKDEpLnBvdygtMykpOworICAgIEVYUEVDVF9FUShlbmNvZGUoMSwgMCwgUGx1cyks
IERlY2ltYWwoMSkucG93KC0xMDAwKSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSgxLCAwLCBQbHVz
KSwgRGVjaW1hbCgxKS5wb3coLTEwMDAwKSk7CisKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDEsIDAs
IFBsdXMpLCBEZWNpbWFsKC0xKS5wb3coMCkpOworICAgIEVYUEVDVF9FUShlbmNvZGUoMSwgMCwg
TWludXMpLCBEZWNpbWFsKC0xKS5wb3coMSkpOworICAgIEVYUEVDVF9FUShlbmNvZGUoMSwgMCwg
UGx1cyksIERlY2ltYWwoLTEpLnBvdygyKSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSgxLCAwLCBN
aW51cyksIERlY2ltYWwoLTEpLnBvdygzKSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSgxLCAwLCBQ
bHVzKSwgRGVjaW1hbCgtMSkucG93KDEwMDApKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDEsIDAs
IE1pbnVzKSwgRGVjaW1hbCgtMSkucG93KC0xKSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSgxLCAw
LCBQbHVzKSwgRGVjaW1hbCgtMSkucG93KC0yKSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSgxLCAw
LCBNaW51cyksIERlY2ltYWwoLTEpLnBvdygtMykpOworICAgIEVYUEVDVF9FUShlbmNvZGUoMSwg
MCwgUGx1cyksIERlY2ltYWwoLTEpLnBvdygtMTAwMCkpOworCisgICAgRVhQRUNUX0VRKGVuY29k
ZSgxLCAwLCBQbHVzKSwgRGVjaW1hbCgyKS5wb3coMCkpOworICAgIEVYUEVDVF9FUShlbmNvZGUo
MiwgMCwgUGx1cyksIERlY2ltYWwoMikucG93KDEpKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDQs
IDAsIFBsdXMpLCBEZWNpbWFsKDIpLnBvdygyKSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSg4LCAw
LCBQbHVzKSwgRGVjaW1hbCgyKS5wb3coMykpOworICAgIEVYUEVDVF9FUShEZWNpbWFsKDEwNzE1
MDg2MDcxODYyNjY0LCAyODUsIFBsdXMpLCBEZWNpbWFsKDIpLnBvdygxMDAwKSk7CisgICAgRVhQ
RUNUX0VRKERlY2ltYWw6OmluZmluaXR5KFBsdXMpLCBEZWNpbWFsKDIpLnBvdygxMDAwMCkpOwor
ICAgIEVYUEVDVF9FUShlbmNvZGUoNSwgLTEsIFBsdXMpLCBEZWNpbWFsKDIpLnBvdygtMSkpOwor
ICAgIEVYUEVDVF9FUShlbmNvZGUoMjUsIC0yLCBQbHVzKSwgRGVjaW1hbCgyKS5wb3coLTIpKTsK
KyAgICBFWFBFQ1RfRVEoZW5jb2RlKDEyNSwgLTMsIFBsdXMpLCBEZWNpbWFsKDIpLnBvdygtMykp
OworICAgIEVYUEVDVF9FUShEZWNpbWFsKDkzMzI2MzYxODUwMzIxOTcsIC0zMTcsIFBsdXMpLCBE
ZWNpbWFsKDIpLnBvdygtMTAwMCkpOworICAgIEVYUEVDVF9FUShEZWNpbWFsOjp6ZXJvKFBsdXMp
LCBEZWNpbWFsKDIpLnBvdygtMTAwMDApKTsKKworICAgIEVYUEVDVF9FUShlbmNvZGUoMSwgMCwg
UGx1cyksIERlY2ltYWwoLTIpLnBvdygwKSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSgyLCAwLCBN
aW51cyksIERlY2ltYWwoLTIpLnBvdygxKSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSg0LCAwLCBQ
bHVzKSwgRGVjaW1hbCgtMikucG93KDIpKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDgsIDAsIE1p
bnVzKSwgRGVjaW1hbCgtMikucG93KDMpKTsKKyAgICBFWFBFQ1RfRVEoRGVjaW1hbCgxMDcxNTA4
NjA3MTg2MjY2NCwgMjg1LCBQbHVzKSwgRGVjaW1hbCgtMikucG93KDEwMDApKTsKKyAgICBFWFBF
Q1RfRVEoRGVjaW1hbDo6aW5maW5pdHkoUGx1cyksIERlY2ltYWwoLTIpLnBvdygxMDAwMCkpOwor
ICAgIEVYUEVDVF9FUShlbmNvZGUoNSwgLTEsIE1pbnVzKSwgRGVjaW1hbCgtMikucG93KC0xKSk7
CisgICAgRVhQRUNUX0VRKGVuY29kZSgyNSwgLTIsIFBsdXMpLCBEZWNpbWFsKC0yKS5wb3coLTIp
KTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDEyNSwgLTMsIE1pbnVzKSwgRGVjaW1hbCgtMikucG93
KC0zKSk7CisgICAgRVhQRUNUX0VRKERlY2ltYWwoOTMzMjYzNjE4NTAzMjE5NywgLTMxNywgUGx1
cyksIERlY2ltYWwoLTIpLnBvdygtMTAwMCkpOworICAgIEVYUEVDVF9FUShEZWNpbWFsOjp6ZXJv
KFBsdXMpLCBEZWNpbWFsKC0yKS5wb3coLTEwMDAwKSk7Cit9CisKK1RFU1RfRihEZWNpbWFsVGVz
dCwgUG93U3BlY2lhbFZhbHVlcykKK3sKKyAgICBFWFBFQ1RfRVEoRGVjaW1hbCgxKSwgRGVjaW1h
bDo6aW5maW5pdHkoUGx1cykucG93KDApKTsKKyAgICBFWFBFQ1RfRVEoRGVjaW1hbCgxKSwgRGVj
aW1hbDo6aW5maW5pdHkoTWludXMpLnBvdygwKSk7CisgICAgRVhQRUNUX0VRKERlY2ltYWwoMSks
IERlY2ltYWw6Om5hbigpLnBvdygwKSk7CisKKyAgICBFWFBFQ1RfRVEoRGVjaW1hbDo6aW5maW5p
dHkoUGx1cyksIERlY2ltYWw6OmluZmluaXR5KFBsdXMpLnBvdygxKSk7CisgICAgRVhQRUNUX0VR
KERlY2ltYWw6OmluZmluaXR5KE1pbnVzKSwgRGVjaW1hbDo6aW5maW5pdHkoTWludXMpLnBvdygx
KSk7CisgICAgRVhQRUNUX0VRKERlY2ltYWw6Om5hbigpLCBEZWNpbWFsOjpuYW4oKS5wb3coMSkp
OworCisgICAgRVhQRUNUX0VRKERlY2ltYWw6OmluZmluaXR5KFBsdXMpLCBEZWNpbWFsOjppbmZp
bml0eShQbHVzKS5wb3coMikpOworICAgIEVYUEVDVF9FUShEZWNpbWFsOjppbmZpbml0eShQbHVz
KSwgRGVjaW1hbDo6aW5maW5pdHkoTWludXMpLnBvdygyKSk7CisgICAgRVhQRUNUX0VRKERlY2lt
YWw6Om5hbigpLCBEZWNpbWFsOjpuYW4oKS5wb3coMikpOworCisgICAgRVhQRUNUX0VRKERlY2lt
YWw6Onplcm8oUGx1cyksIERlY2ltYWw6OmluZmluaXR5KFBsdXMpLnBvdygtMSkpOworICAgIEVY
UEVDVF9FUShEZWNpbWFsOjp6ZXJvKFBsdXMpLCBEZWNpbWFsOjppbmZpbml0eShNaW51cykucG93
KC0xKSk7CisgICAgRVhQRUNUX0VRKERlY2ltYWw6Om5hbigpLCBEZWNpbWFsOjpuYW4oKS5wb3co
LTEpKTsKKworICAgIEVYUEVDVF9FUShEZWNpbWFsOjp6ZXJvKFBsdXMpLCBEZWNpbWFsOjppbmZp
bml0eShQbHVzKS5wb3coLTIpKTsKKyAgICBFWFBFQ1RfRVEoRGVjaW1hbDo6emVybyhQbHVzKSwg
RGVjaW1hbDo6aW5maW5pdHkoTWludXMpLnBvdygtMikpOworICAgIEVYUEVDVF9FUShEZWNpbWFs
OjpuYW4oKSwgRGVjaW1hbDo6bmFuKCkucG93KC0yKSk7Cit9CisKK1RFU1RfRihEZWNpbWFsVGVz
dCwgUHJvcGVydGllcykKK3sKKyAgICBFWFBFQ1RfVFJVRShEZWNpbWFsKDApLmlzRmluaXRlKCkp
OworICAgIEVYUEVDVF9GQUxTRShEZWNpbWFsKDApLmlzU3BlY2lhbCgpKTsKK30KKworVEVTVF9G
KERlY2ltYWxUZXN0LCBQcm9wZXJ0aWVzU3BlY2lhbCkKK3sKKyAgICBFWFBFQ1RfVFJVRShEZWNp
bWFsOjppbmZpbml0eShQbHVzKS5pc1NwZWNpYWwoKSk7CisgICAgRVhQRUNUX0ZBTFNFKERlY2lt
YWw6OmluZmluaXR5KFBsdXMpLmlzRmluaXRlKCkpOworCisgICAgRVhQRUNUX1RSVUUoRGVjaW1h
bDo6aW5maW5pdHkoTWludXMpLmlzU3BlY2lhbCgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoRGVjaW1h
bDo6aW5maW5pdHkoTWludXMpLmlzRmluaXRlKCkpOworCisgICAgRVhQRUNUX1RSVUUoRGVjaW1h
bDo6bmFuKCkuaXNTcGVjaWFsKCkpOworICAgIEVYUEVDVF9GQUxTRShEZWNpbWFsOjpuYW4oKS5p
c0Zpbml0ZSgpKTsKK30KKworLy8gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9udW1iZXIvbnVtYmVy
LXN0ZXB1cC1zdGVwZG93bi1mcm9tLXJlbmRlcmVyCitURVNUX0YoRGVjaW1hbFRlc3QsIFJlYWxX
b3JsZEV4YW1wbGVOdW1iZXJTdGVwVXBTdGVwRG93bkZyb21SZW5kZXJlcikKK3sKKyAgICBFWFBF
Q1RfRVEoU3RyaW5nKCIxMCIpLCBzdGVwRG93bigiMCIsICIxMDAiLCAiMTAiLCAiMTkiLCAxKSk7
CisgICAgRVhQRUNUX0VRKFN0cmluZygiOTAiKSwgc3RlcFVwKCIwIiwgIjk5IiwgIjEwIiwgIjg5
IiwgMSkpOworICAgIEVYUEVDVF9FUShTdHJpbmcoIjEiKSwgc3RlcFVwKCIwIiwgIjEiLCAiMC4z
MzMzMzMzMzMzMzMzMzMzMyIsICIwIiwgMykpOyAvLyBzdGVwPTEvMworICAgIEVYUEVDVF9FUShT
dHJpbmcoIjAuMDEiKSwgc3RlcFVwKCIwIiwgIjAuMDEiLCAiMC4wMDMzMzMzMzMzMzMzMzMzMzMz
IiwgIjAiLCAzKSk7IC8vIHN0ZXA9MS8zMDAKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCIxIiksIHN0
ZXBVcCgiMCIsICIxIiwgIjAuMDAzOTIxNTY4NjI3NDUwOTgwIiwgIjAiLCAyNTUpKTsgLy8gc3Rl
cD0xLzI1NQorICAgIEVYUEVDVF9FUShTdHJpbmcoIjEiKSwgc3RlcFVwKCIwIiwgIjEiLCAiMC4x
IiwgIjAiLCAxMCkpOworfQorCitURVNUX0YoRGVjaW1hbFRlc3QsIFJlYWxXb3JsZEV4YW1wbGVO
dW1iZXJTdGVwVXBTdGVwRG93bkZyb21SZW5kZXJlclJvdW5kaW5nKQoreworICAgIEVYUEVDVF9F
UShTdHJpbmcoIjUuMDE1IiksIHN0ZXBVcCgiMCIsICIxMDAiLCAiMC4wMDUiLCAiNS4wMDUiLCAy
KSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiNS4wNiIpLCBzdGVwVXAoIjAiLCAiMTAwIiwgIjAu
MDA1IiwgIjUuMDA1IiwgMTEpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCI1LjA2NSIpLCBzdGVw
VXAoIjAiLCAiMTAwIiwgIjAuMDA1IiwgIjUuMDA1IiwgMTIpKTsKKworICAgIEVYUEVDVF9FUShT
dHJpbmcoIjUuMDE1IiksIHN0ZXBVcCgiNCIsICI5IiwgIjAuMDA1IiwgIjUuMDA1IiwgMikpOwor
ICAgIEVYUEVDVF9FUShTdHJpbmcoIjUuMDYiKSwgc3RlcFVwKCI0IiwgIjkiLCAiMC4wMDUiLCAi
NS4wMDUiLCAxMSkpOworICAgIEVYUEVDVF9FUShTdHJpbmcoIjUuMDY1IiksIHN0ZXBVcCgiNCIs
ICI5IiwgIjAuMDA1IiwgIjUuMDA1IiwgMTIpKTsKK30KKworVEVTVF9GKERlY2ltYWxUZXN0LCBS
ZWFsV29ybGRFeGFtcGxlUmFuZ2VTdGVwVXBTdGVwRG93bikKK3sKKyAgICBFWFBFQ1RfRVEoU3Ry
aW5nKCIxZSszOCIpLCBzdGVwVXAoIjAiLCAiMUUzOCIsICIxIiwgIjFFMzgiLCA5KSk7CisgICAg
RVhQRUNUX0VRKFN0cmluZygiMWUrMzgiKSwgc3RlcERvd24oIjAiLCAiMUUzOCIsICIxIiwgIjFF
MzgiLCA5KSk7Cit9CisKK1RFU1RfRihEZWNpbWFsVGVzdCwgUmVtYWluZGVyKQoreworICAgIEVY
UEVDVF9FUShlbmNvZGUoOSwgLTEsIE1pbnVzKSwgZW5jb2RlKDIxLCAtMSwgUGx1cykucmVtYWlu
ZGVyKDMpKTsKKyAgICBFWFBFQ1RfRVEoRGVjaW1hbCgxKSwgRGVjaW1hbCgxMCkucmVtYWluZGVy
KDMpKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDEsIDAsIE1pbnVzKSwgRGVjaW1hbCgtMTApLnJl
bWFpbmRlcigzKSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSgyLCAtMSwgUGx1cyksIGVuY29kZSgx
MDIsIC0xLCBQbHVzKS5yZW1haW5kZXIoMSkpOworICAgIEVYUEVDVF9FUShlbmNvZGUoMSwgLTEs
IFBsdXMpLCBEZWNpbWFsKDEwKS5yZW1haW5kZXIoZW5jb2RlKDMsIC0xLCBQbHVzKSkpOworICAg
IEVYUEVDVF9FUShlbmNvZGUoMywgLTEsIE1pbnVzKSwgZW5jb2RlKDM2LCAtMSwgUGx1cykucmVt
YWluZGVyKGVuY29kZSgxMywgLTEsIFBsdXMpKSk7Cit9CisKK1RFU1RfRihEZWNpbWFsVGVzdCwg
UmVtYWluZGVyU3BlY2lhbFZhbHVlcykKK3sKKyAgICBFWFBFQ1RfRVEoRGVjaW1hbDo6aW5maW5p
dHkoUGx1cyksIERlY2ltYWw6OmluZmluaXR5KFBsdXMpLnJlbWFpbmRlcigxKSk7CisgICAgRVhQ
RUNUX0VRKERlY2ltYWw6Om5hbigpLCBEZWNpbWFsOjpuYW4oKS5yZW1haW5kZXIoMSkpOworfQor
CitURVNUX0YoRGVjaW1hbFRlc3QsIFJvdW5kKQoreworICAgIEVYUEVDVF9FUShEZWNpbWFsKDEp
LCAoRGVjaW1hbCg5KSAvIERlY2ltYWwoMTApKS5yb3VuZCgpKTsKKyAgICBFWFBFQ1RfRVEoRGVj
aW1hbCgyNSksIChEZWNpbWFsKDUpIC8gZnJvbVN0cmluZygiMC4yMDAiKSkucm91bmQoKSk7Cisg
ICAgRVhQRUNUX0VRKERlY2ltYWwoMyksIChEZWNpbWFsKDUpIC8gRGVjaW1hbCgyKSkucm91bmQo
KSk7CisgICAgRVhQRUNUX0VRKERlY2ltYWwoMSksIChEZWNpbWFsKDIpIC8gRGVjaW1hbCgzKSku
cm91bmQoKSk7CisgICAgRVhQRUNUX0VRKERlY2ltYWwoMyksIChEZWNpbWFsKDEwKSAvIERlY2lt
YWwoMykpLnJvdW5kKCkpOworICAgIEVYUEVDVF9FUShEZWNpbWFsKDMpLCAoRGVjaW1hbCgxKSAv
IGZyb21TdHJpbmcoIjAuMyIpKS5yb3VuZCgpKTsKKyAgICBFWFBFQ1RfRVEoRGVjaW1hbCgxMCks
IChEZWNpbWFsKDEpIC8gZnJvbVN0cmluZygiMC4xIikpLnJvdW5kKCkpOworICAgIEVYUEVDVF9F
UShEZWNpbWFsKDUpLCAoRGVjaW1hbCgxKSAvIGZyb21TdHJpbmcoIjAuMiIpKS5yb3VuZCgpKTsK
KyAgICBFWFBFQ1RfRVEoRGVjaW1hbCgxMCksIChmcm9tU3RyaW5nKCIxMC4yIikgLyAxKS5yb3Vu
ZCgpKTsKK30KKworVEVTVF9GKERlY2ltYWxUZXN0LCBSb3VuZFNlcGNpYWxWYWx1ZXMpCit7Cisg
ICAgRVhQRUNUX0VRKERlY2ltYWw6OmluZmluaXR5KFBsdXMpLCBEZWNpbWFsOjppbmZpbml0eShQ
bHVzKS5yb3VuZCgpKTsKKyAgICBFWFBFQ1RfRVEoRGVjaW1hbDo6bmFuKCksIERlY2ltYWw6Om5h
bigpLnJvdW5kKCkpOworfQorCitURVNUX0YoRGVjaW1hbFRlc3QsIFRvU3RyaW5nU3BlY2lhbCkK
K3sKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCJJbmZpbml0eSIpLCBEZWNpbWFsOjppbmZpbml0eShQ
bHVzKS50b1N0cmluZygpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCItSW5maW5pdHkiKSwgRGVj
aW1hbDo6aW5maW5pdHkoTWludXMpLnRvU3RyaW5nKCkpOworICAgIEVYUEVDVF9FUShTdHJpbmco
Ik5hTiIpLCBEZWNpbWFsOjpuYW4oKS50b1N0cmluZygpKTsKK30KKworfSAvLyBEZWNpbWFsVGVz
dApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IGI1ZTU1YmNhOGI5ZTdkZjcyYzcwMTc2NmQ2OTYwOWVmOGQwMzliZWQuLjYwYWZl
NDcxMGY5MWFiNjlhOWRhOGMwNDdlOWYxZjlmODkxMjdiZDYgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBA
QAorMjAxMi0wNS0yMyAgWW9zaGlmdW1pIElub3VlICA8eW9zaW5AY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIEludHJvZHVjZSBEZWNpbWFsIGFyaXRobWV0aWMgdG8gZml4IHJvdW5kaW5nIGVycm9y
cyBpbiBudW1iZXIvcmFuZ2UgaW5wdXQgdHlwZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTgwMDA5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2Zvcm1zL3JhbmdlL3JhbmdlLXZhbHVlLXJvdW5k
aW5nLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9yYW5nZS9yYW5n
ZS12YWx1ZS1yb3VuZGluZy5odG1sOiBBZGRlZC4KKwogMjAxMi0wNS0yMyAgTWlraGFpbCBQb3pk
bnlha292ICA8bWlraGFpbC5wb3pkbnlha292QGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXVtE
UlRdIFdlYmFyY2hpdmVzIHRlc3RzIGdhcmRlbmluZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy9yYW5nZS9yYW5nZS12YWx1ZS1yb3VuZGluZy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL3JhbmdlL3JhbmdlLXZhbHVlLXJvdW5kaW5nLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5kN2JiNTEwNjBjYTc4OWMxZmExODZlZWM0NzQ2YWJjYmU2ZjA2YzYwCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yYW5nZS9yYW5nZS12YWx1
ZS1yb3VuZGluZy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxOSBAQAorICAgICAgICAKK1NldHRp
bmcgJzAuNicgdG8gdGhlIHZhbHVlIG9mIGEgcmFuZ2UgaW5wdXQgbWFrZXMgdGhlIHZhbHVlIDAu
NjAwMDAwMDAwMDAwMDAwMQorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBy
YW5nZTEudmFsdWUudG9TdHJpbmcoKSBpcyAiMC4xIgorUEFTUyByYW5nZTIudmFsdWUudG9TdHJp
bmcoKSBpcyAiMC4yIgorUEFTUyByYW5nZTMudmFsdWUudG9TdHJpbmcoKSBpcyAiMC4zIgorUEFT
UyByYW5nZTQudmFsdWUudG9TdHJpbmcoKSBpcyAiMC40IgorUEFTUyByYW5nZTUudmFsdWUudG9T
dHJpbmcoKSBpcyAiMC41IgorUEFTUyByYW5nZTYudmFsdWUudG9TdHJpbmcoKSBpcyAiMC42Igor
UEFTUyByYW5nZTcudmFsdWUudG9TdHJpbmcoKSBpcyAiMC43IgorUEFTUyByYW5nZTgudmFsdWUu
dG9TdHJpbmcoKSBpcyAiMC44IgorUEFTUyByYW5nZTkudmFsdWUudG9TdHJpbmcoKSBpcyAiMC45
IgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmFuZ2UvcmFuZ2UtdmFsdWUtcm91bmRp
bmcuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmFuZ2UvcmFuZ2UtdmFsdWUtcm91bmRp
bmcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4zMmUyYzRlZDNhZmExMzQxMjVlZGFjMzcxNDYyYjc3Yzc3Zjc5
MzUwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yYW5nZS9yYW5n
ZS12YWx1ZS1yb3VuZGluZy5odG1sCkBAIC0wLDAgKzEsMjQgQEAKKzxoZWFkPgorPHNjcmlwdCBz
cmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxpbnB1dCB0eXBlPXJhbmdlIHN0ZXA9MC4xIHZhbHVlPTAuMSBpZD1yYW5nZTE+
Cis8aW5wdXQgdHlwZT1yYW5nZSBzdGVwPTAuMSB2YWx1ZT0wLjIgaWQ9cmFuZ2UyPgorPGlucHV0
IHR5cGU9cmFuZ2Ugc3RlcD0wLjEgdmFsdWU9MC4zIGlkPXJhbmdlMz4KKzxpbnB1dCB0eXBlPXJh
bmdlIHN0ZXA9MC4xIHZhbHVlPTAuNCBpZD1yYW5nZTQ+Cis8aW5wdXQgdHlwZT1yYW5nZSBzdGVw
PTAuMSB2YWx1ZT0wLjUgaWQ9cmFuZ2U1PgorPGlucHV0IHR5cGU9cmFuZ2Ugc3RlcD0wLjEgdmFs
dWU9MC42IGlkPXJhbmdlNj4KKzxpbnB1dCB0eXBlPXJhbmdlIHN0ZXA9MC4xIHZhbHVlPTAuNyBp
ZD1yYW5nZTc+Cis8aW5wdXQgdHlwZT1yYW5nZSBzdGVwPTAuMSB2YWx1ZT0wLjggaWQ9cmFuZ2U4
PgorPGlucHV0IHR5cGU9cmFuZ2Ugc3RlcD0wLjEgdmFsdWU9MC45IGlkPXJhbmdlOT4KKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCI8YSBocmVmPSdodHRw
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDAwOSc+U2V0dGluZyAnMC42JyB0
byB0aGUgdmFsdWUgb2YgYSByYW5nZSBpbnB1dCBtYWtlcyB0aGUgdmFsdWUgMC42MDAwMDAwMDAw
MDAwMDAxPC9hPiIpOworZm9yICh2YXIgaSA9IDE7IGkgPD0gOTsgKytpKSB7CisgICAgc2hvdWxk
QmUoJ3JhbmdlJyArIGkudG9TdHJpbmcoKSArICcudmFsdWUudG9TdHJpbmcoKScsICciMC4nICsg
aS50b1N0cmluZygpICsgJyInKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorCisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>143716</attachid>
            <date>2012-05-23 20:27:16 -0700</date>
            <delta_ts>2012-05-23 21:02:45 -0700</delta_ts>
            <desc>Patch 7 - For Makefile validation</desc>
            <filename>bug-80009-20120524122714.patch</filename>
            <type>text/plain</type>
            <size>149753</size>
            <attacher>yosin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4MjkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzIyY2JkOWY4NTU4NjYw
ZTExNzkxMTllMDg4MzdjZjNmYjY4MGRiMS4uZjA0NTA4YThkMWM1ZTM5OGFmYTJhY2VhODIzOTQ3
MTAzNDQ4NmQwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5MyBAQAorMjAxMi0wNS0yMyAgWW9z
aGlmdW1pIElub3VlICA8eW9zaW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEludHJvZHVjZSBE
ZWNpbWFsIGFyaXRobWV0aWMgdG8gZml4IHJvdW5kaW5nIGVycm9ycyBpbiBudW1iZXIvcmFuZ2Ug
aW5wdXQgdHlwZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTgwMDA5CisKKyAgICAgICAgV0lQOiBDaGVjayBtYWtlZmlsZXMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBmYXN0L2Zvcm1zL3Jhbmdl
L3JhbmdlLXZhbHVlLXJvdW5kaW5nLmh0bWwKKworICAgICAgICAqIENNYWtlTGlzdHMudHh0Ogor
ICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAg
ICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIGh0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydERlY2ltYWxUb0RvdWJsZSk6CisgICAgICAg
IChXZWJDb3JlOjpjb252ZXJ0RG91YmxlVG9EZWNpbWFsKToKKyAgICAgICAgKFdlYkNvcmU6OkJh
c2VEYXRlQW5kVGltZUlucHV0VHlwZTo6dmFsdWVBc0RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
QmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpzZXRWYWx1ZUFzRGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OnZhbHVlQXNOdW1iZXIpOgorICAgICAgICAo
V2ViQ29yZTo6QmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpzZXRWYWx1ZUFzTnVtYmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6ZGVmYXVsdFZhbHVlRm9y
U3RlcFVwKToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6cGFy
c2VUb0RlY2ltYWwpOgorICAgICAgICAoV2ViQ29yZTo6QmFzZURhdGVBbmRUaW1lSW5wdXRUeXBl
OjpzZXJpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6QmFzZURhdGVBbmRUaW1lSW5wdXRUeXBl
OjpzZXJpYWxpemVXaXRoQ29tcG9uZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpCYXNlRGF0ZUFu
ZFRpbWVJbnB1dFR5cGU6OnNlcmlhbGl6ZVdpdGhNaWxsaXNlY29uZHMpOgorICAgICAgICAoV2Vi
Q29yZTo6QmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpjb252ZXJ0RnJvbVZpc2libGVWYWx1ZSk6
CisgICAgICAgICogaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuaDoKKyAgICAgICAgKEJh
c2VEYXRlQW5kVGltZUlucHV0VHlwZSk6CisgICAgICAgICogaHRtbC9EYXRlSW5wdXRUeXBlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RGF0ZUlucHV0VHlwZTo6
Y3JlYXRlU3RlcFJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGVJbnB1dFR5cGU6OnNldE1p
bGxpc2Vjb25kVG9EYXRlQ29tcG9uZW50cyk6CisgICAgICAgICogaHRtbC9EYXRlSW5wdXRUeXBl
Lmg6CisgICAgICAgIChEYXRlSW5wdXRUeXBlKToKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6Z2V0QWxsb3dl
ZFZhbHVlU3RlcCk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50Lmg6CisgICAgICAg
IChIVE1MSW5wdXRFbGVtZW50KToKKyAgICAgICAgKiBodG1sL0lucHV0VHlwZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OnJhbmdlVW5kZXJmbG93KToKKyAgICAgICAgKFdlYkNv
cmU6OklucHV0VHlwZTo6cmFuZ2VPdmVyZmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5
cGU6OmRlZmF1bHRWYWx1ZUZvclN0ZXBVcCk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6
Om1pbmltdW0pOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjptYXhpbXVtKToKKyAgICAg
ICAgKFdlYkNvcmU6OklucHV0VHlwZTo6aXNJblJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
cHV0VHlwZTo6aXNPdXRPZlJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6c3Rl
cE1pc21hdGNoKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6dmFsaWRhdGlvbk1lc3Nh
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjpwYXJzZVRvRGVjaW1hbCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OnNlcmlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnB1dFR5cGU6OmFwcGx5U3RlcCk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OmdldEFs
bG93ZWRWYWx1ZVN0ZXApOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjpzdGVwVXBGcm9t
UmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBlLmg6CisgICAgICAgIChJbnB1dFR5
cGUpOgorICAgICAgICAqIGh0bWwvTnVtYmVySW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6Y2FsY3VsYXRlUmVuZGVyU2l6ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpOdW1iZXJJbnB1dFR5cGU6OnZhbHVlQXNOdW1iZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6TnVtYmVySW5wdXRUeXBlOjpzZXRWYWx1ZUFzTnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6
Ok51bWJlcklucHV0VHlwZTo6Y3JlYXRlU3RlcFJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok51
bWJlcklucHV0VHlwZTo6c2l6ZVNob3VsZEluY2x1ZGVEZWNvcmF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6Ok51bWJlcklucHV0VHlwZTo6cGFyc2VUb0RlY2ltYWwpOgorICAgICAgICAoV2ViQ29y
ZTo6TnVtYmVySW5wdXRUeXBlOjpzZXJpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6TnVtYmVy
SW5wdXRUeXBlOjp2aXNpYmxlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6TnVtYmVySW5wdXRU
eXBlOjppc0FjY2VwdGFibGVWYWx1ZSk6CisgICAgICAgICogaHRtbC9OdW1iZXJJbnB1dFR5cGUu
aDoKKyAgICAgICAgKE51bWJlcklucHV0VHlwZSk6CisgICAgICAgICogaHRtbC9SYW5nZUlucHV0
VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlSW5w
dXRUeXBlOjp2YWx1ZUFzTnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlSW5wdXRUeXBl
OjpzZXRWYWx1ZUFzTnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlSW5wdXRUeXBlOjpj
cmVhdGVTdGVwUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VJbnB1dFR5cGU6OmhhbmRs
ZUtleWRvd25FdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6cGFyc2VU
b0RlY2ltYWwpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VJbnB1dFR5cGU6OnNlcmlhbGl6ZSk6
CisgICAgICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6c2FuaXRpemVWYWx1ZSk6CisgICAg
ICAgICogaHRtbC9SYW5nZUlucHV0VHlwZS5oOgorICAgICAgICAoUmFuZ2VJbnB1dFR5cGUpOgor
ICAgICAgICAqIGh0bWwvU3RlcFJhbmdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0ZXBSYW5n
ZTo6U3RlcFJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0ZXBSYW5nZTo6YWNjZXB0YWJsZUVy
cm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlN0ZXBSYW5nZTo6YWxpZ25WYWx1ZUZvclN0ZXApOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTdGVwUmFuZ2U6OmNsYW1wVmFs
dWUpOgorICAgICAgICAoV2ViQ29yZTo6U3RlcFJhbmdlOjpwYXJzZVN0ZXApOgorICAgICAgICAo
V2ViQ29yZTo6U3RlcFJhbmdlOjpzdGVwTWlzbWF0Y2gpOgorICAgICAgICAqIGh0bWwvU3RlcFJh
bmdlLmg6CisgICAgICAgIChEZWNpbWFsT3JNaXNzaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlN0
ZXBSYW5nZTo6RGVjaW1hbE9yTWlzc2luZzo6RGVjaW1hbE9yTWlzc2luZyk6CisgICAgICAgIChX
ZWJDb3JlOjpTdGVwUmFuZ2U6OlN0ZXBEZXNjcmlwdGlvbjo6ZGVmYXVsdFZhbHVlKToKKyAgICAg
ICAgKFN0ZXBSYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpTdGVwUmFuZ2U6Om1heGltdW0pOgor
ICAgICAgICAoV2ViQ29yZTo6U3RlcFJhbmdlOjptaW5pbXVtKToKKyAgICAgICAgKFdlYkNvcmU6
OlN0ZXBSYW5nZTo6c3RlcCk6CisgICAgICAgIChXZWJDb3JlOjpTdGVwUmFuZ2U6OnN0ZXBCYXNl
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0ZXBSYW5nZTo6ZGVmYXVsdFZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OlN0ZXBSYW5nZTo6ZW5zdXJlTWF4aW11bSk6CisgICAgICAgIChXZWJDb3JlOjpT
dGVwUmFuZ2U6OnByb3BvcnRpb25Gcm9tVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U3RlcFJh
bmdlOjp2YWx1ZUZyb21Qcm9wb3J0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlN0ZXBSYW5nZTo6
cm91bmRCeVN0ZXApOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6c2VyaWFsaXplRm9yTnVtYmVyVHlwZSk6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlVG9EZWNpbWFsRm9yTnVtYmVyVHlwZSk6
CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvQ2FsZW5kYXJQaWNrZXJFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNhbGVuZGFyUGlja2VyRWxlbWVudDo6d3JpdGVEb2N1bWVudCk6
CisgICAgICAgICogaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnNsaWRlclBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNsaWRl
clRodW1iOjpsYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6U2xpZGVyVGh1bWJFbGVtZW50Ojpz
ZXRQb3NpdGlvbkZyb21Qb2ludCk6CisgICAgICAgICogcGxhdGZvcm0vRGVjaW1hbC5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChEZWNpbWFsUHJpdmF0ZSk6CisgICAg
ICAgIChTcGVjaWFsVmFsdWVIYW5kbGVyKToKKyAgICAgICAgKFVJbnQxMjgpOgorICAgICAgICAo
V2ViQ29yZTo6RGVjaW1hbFByaXZhdGU6OlVJbnQxMjg6OmhpZ2gpOgorICAgICAgICAoV2ViQ29y
ZTo6RGVjaW1hbFByaXZhdGU6OlVJbnQxMjg6Omxvdyk6CisgICAgICAgIChXZWJDb3JlOjpEZWNp
bWFsUHJpdmF0ZTo6VUludDEyODo6aXNaZXJvKToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWxQ
cml2YXRlOjpjb3VudERpZ2l0cyk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsUHJpdmF0ZTo6
bXVsdGlwbHlIaWdoKToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWxQcml2YXRlOjpwb3dlcik6
CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsUHJpdmF0ZTo6c2NhbGVEb3duKToKKyAgICAgICAg
KFdlYkNvcmU6OkRlY2ltYWxQcml2YXRlOjpzY2FsZVVwKToKKyAgICAgICAgKFdlYkNvcmU6OkRl
Y2ltYWxQcml2YXRlOjpTcGVjaWFsVmFsdWVIYW5kbGVyOjpTcGVjaWFsVmFsdWVIYW5kbGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWxQcml2YXRlOjpTcGVjaWFsVmFsdWVIYW5kbGVyOjpo
YW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1hbFByaXZhdGU6OlNwZWNpYWxWYWx1ZUhh
bmRsZXI6OnZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWxQcml2YXRlOjpVSW50MTI4
OjpVSW50MTI4KToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWxQcml2YXRlOjpVSW50MTI4Ojpv
cGVyYXRvciAvPSk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsUHJpdmF0ZTo6VUludDEyODo6
bXVsdGlwbHkpOgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1hbDo6RW5jb2RlZERhdGE6OkVuY29k
ZWREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWw6OkVuY29kZWREYXRhOjpjb2VmZmlj
aWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjpFbmNvZGVkRGF0YTo6ZXhwb25lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1hbDo6RW5jb2RlZERhdGE6OmlzRmluaXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRlY2ltYWw6OkVuY29kZWREYXRhOjppc1NwZWNpYWwpOgorICAgICAg
ICAoV2ViQ29yZTo6RGVjaW1hbDo6RW5jb2RlZERhdGE6OmlzWmVybyk6CisgICAgICAgIChXZWJD
b3JlOjpEZWNpbWFsOjpFbmNvZGVkRGF0YTo6cmF3RXhwb25lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6RGVjaW1hbDo6RW5jb2RlZERhdGE6OnNpZ24pOgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1h
bDo6RW5jb2RlZERhdGE6OnNldFNpZ24pOgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1hbDo6RGVj
aW1hbCk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjpvcGVyYXRvciA9KToKKyAgICAgICAg
KFdlYkNvcmU6OkRlY2ltYWw6Om9wZXJhdG9yICs9KToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2lt
YWw6Om9wZXJhdG9yIC09KToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWw6Om9wZXJhdG9yICo9
KToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWw6Om9wZXJhdG9yIC89KToKKyAgICAgICAgKFdl
YkNvcmU6OkRlY2ltYWw6Om9wZXJhdG9yIC0pOgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1hbDo6
b3BlcmF0b3IgKyk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjpvcGVyYXRvciAqKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRlY2ltYWw6Om9wZXJhdG9yIC8pOgorICAgICAgICAoV2ViQ29yZTo6
RGVjaW1hbDo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjpvcGVyYXRv
ciE9KToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWw6Om9wZXJhdG9yIDwpOgorICAgICAgICAo
V2ViQ29yZTo6RGVjaW1hbDo6b3BlcmF0b3IgPD0pOgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1h
bDo6b3BlcmF0b3IgPik6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjpvcGVyYXRvciA+PSk6
CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjpleHBvbmVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpEZWNpbWFsOjpmb3JtYXRDbGFzcyk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjpzaWdu
KToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWw6OmFicyk6CisgICAgICAgIChXZWJDb3JlOjpE
ZWNpbWFsOjpjZWlsKToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWw6OmNvbXBhcmVUbyk6Cisg
ICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjpmYXN0RXF1YWxzKToKKyAgICAgICAgKFdlYkNvcmU6
OkRlY2ltYWw6OmZsb29yKToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWw6OmZyb21TdHJpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1hbDo6aW5maW5pdHkpOgorICAgICAgICAoV2ViQ29y
ZTo6RGVjaW1hbDo6bmFuKToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWw6OnBvdyk6CisgICAg
ICAgIChXZWJDb3JlOjpEZWNpbWFsOjpyZW1haW5kZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGVj
aW1hbDo6cm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1hbDo6dG9TdHJpbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6RGVjaW1hbDo6emVybyk6CisgICAgICAgICogcGxhdGZvcm0vRGVjaW1h
bC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoRGVjaW1hbCk6CisgICAg
ICAgIChFbmNvZGVkRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjppc0Zpbml0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjppc01pbnVzKToKKyAgICAgICAgKFdlYkNvcmU6
OkRlY2ltYWw6OmlzUGx1cyk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjppc1NwZWNpYWwp
OgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1hbDo6aXNaZXJvKToKKyAgICAgICAgKFdlYkNvcmU6
OkRlY2ltYWw6OnZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWw6OmludmVydFNpZ24p
OgorCiAyMDEyLTA1LTIzICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0
PgogCiAgICAgICAgIFJlbW92ZSB1bnVzZWQgZGVjbGFyYXRpb25zIGluIE1lbW9yeUNhY2hlLmgK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMDc5MDdkZTcyMjk2NzlmNmQwN2Q5N2ZjM2Q2
N2VjOWYwMDBmNDZjOC4uNWIzNjI4ODUxM2NmMTY5OTU3OThmOTk3ODY2NjYxZDQyNzM5ODVhZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAxMi0wNS0yMyAg
WW9zaGlmdW1pIElub3VlICA8eW9zaW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEludHJvZHVj
ZSBEZWNpbWFsIGFyaXRobWV0aWMgdG8gZml4IHJvdW5kaW5nIGVycm9ycyBpbiBudW1iZXIvcmFu
Z2UgaW5wdXQgdHlwZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTgwMDA5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBXZWJLaXQuZ3lwaToKKyAgICAgICAgKiB0ZXN0cy9EZWNpbWFsVGVzdC5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcjw8KToK
KyAgICAgICAgKERlY2ltYWxUZXN0KToKKyAgICAgICAgKERlY2ltYWxTdGVwUmFuZ2UpOgorICAg
ICAgICAoRGVjaW1hbFRlc3Q6OkRlY2ltYWxTdGVwUmFuZ2U6OkRlY2ltYWxTdGVwUmFuZ2UpOgor
ICAgICAgICAoRGVjaW1hbFRlc3Q6OkRlY2ltYWxTdGVwUmFuZ2U6OmNsYW1wVmFsdWUpOgorICAg
ICAgICAoRGVjaW1hbFRlc3Q6OkRlY2ltYWxUZXN0OjplbmNvZGUpOgorICAgICAgICAoRGVjaW1h
bFRlc3Q6OkRlY2ltYWxUZXN0Ojpmcm9tU3RyaW5nKToKKyAgICAgICAgKERlY2ltYWxUZXN0OjpE
ZWNpbWFsVGVzdDo6c3RlcERvd24pOgorICAgICAgICAoRGVjaW1hbFRlc3Q6OkRlY2ltYWxUZXN0
OjpzdGVwVXApOgorICAgICAgICAoRGVjaW1hbFRlc3Q6OlRFU1RfRik6CisKIDIwMTItMDUtMjMg
IERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVt
XSBFbmFibGUgdGhlIENDTGF5ZXJUcmVlSG9zdFRlc3RDYW5EcmF3QmxvY2tzRHJhd2luZyB0ZXN0
IGluIHNpbmdsZS10aHJlYWRlZCBtb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGY5NWU4M2Zl
N2I3M2QzYzRhMDZjZjRmZGYxMGE2N2Y1Y2MwYWE2NWQuLjdkZTMzNmE5YjQ3NDM4MTgwYWM2YjA4
OTlhMWYxYmVmOGFkMDQxZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xMTA1LDYgKzExMDUs
NyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vQ29udGVudFR5cGUuY3BwCiAg
ICAgcGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwCiAgICAgcGxhdGZvcm0vRGF0ZUNvbXBv
bmVudHMuY3BwCisgICAgcGxhdGZvcm0vRGVjaW1hbC5jcHAKICAgICBwbGF0Zm9ybS9EcmFnRGF0
YS5jcHAKICAgICBwbGF0Zm9ybS9EcmFnSW1hZ2UuY3BwCiAgICAgcGxhdGZvcm0vRXZlbnRUcmFj
ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIv
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA4YzI0MTA3NWYxMDY4Zjg0
NjNiN2Q4NjZkMjhjM2ExNmRhOThlNWM5Li5iYmEwMDVmMzNkZWY4OWE4YTY2ZTk5NDE1NDY0Y2Ux
MGM1ZWU4MjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTMxMTIsNiArMzEx
Miw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Vy
c29yLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGVDb21wb25lbnRzLmNwcCBcCiAJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGF0ZUNvbXBvbmVudHMuaCBcCisJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vRGVjaW1hbC5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RlY2lt
YWwuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuY3BwIFwKIAlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9E
cmFnSW1hZ2UuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9T
b3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IDVhODBhZTFkNjA5YTMyZjk2OWI4NGMyNzI5
NDMxOGUxMTA2MDQ2NDYuLjNiNmYwMDZjNGY4ZjI5NTQ1NjYxMzUyN2VhZWU3YTc4ZTgxMjlmOGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNv
cmUvVGFyZ2V0LnByaQpAQCAtMTA4MSw2ICsxMDgxLDcgQEAgU09VUkNFUyArPSBcCiAgICAgcGxh
dGZvcm0vQ29udGVudFR5cGUuY3BwIFwKICAgICBwbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5j
cHAgXAogICAgIHBsYXRmb3JtL0RhdGVDb21wb25lbnRzLmNwcCBcCisgICAgcGxhdGZyb20vRGVj
aW1hbC5jcHAgXAogICAgIHBsYXRmb3JtL0RyYWdEYXRhLmNwcCBcCiAgICAgcGxhdGZvcm0vRHJh
Z0ltYWdlLmNwcCBcCiAgICAgcGxhdGZvcm0vRXZlbnRUcmFjZXIuY3BwIFwKQEAgLTIxOTUsNiAr
MjE5Niw3IEBAIEhFQURFUlMgKz0gXAogICAgIHBsYXRmb3JtL0NvbnRleHRNZW51LmggXAogICAg
IHBsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVyLmggXAogICAgIHBsYXRmb3JtL0RhdGVDb21wb25l
bnRzLmggXAorICAgIHBsYXRmb3JtL0RlY2ltYWwuaCBcCiAgICAgcGxhdGZvcm0vRHJhZ0RhdGEu
aCBcCiAgICAgcGxhdGZvcm0vRHJhZ0ltYWdlLmggXAogICAgIHBsYXRmb3JtL0V2ZW50VHJhY2Vy
LmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGRhZTQxYWY3ZmU2MDFhMmY4OGJlNjI4ODMzYjQ1NDVk
OGNhM2NlMmUuLjcxZGIxYzRiNjE1ZDAxM2YxMGM4MGEyNDJmYzRiY2ZlMTY5ZjMzZGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKQEAgLTI3MSw2ICsyNzEsNyBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL0Nv
b2tpZXNTdHJhdGVneS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9DdXJzb3IuaCcsCiAgICAg
ICAgICAgICAncGxhdGZvcm0vRGF0ZUNvbXBvbmVudHMuaCcsCisgICAgICAgICAgICAncGxhdGZv
cm0vRGVjaW1hbC5oJwogICAgICAgICAgICAgJ3BsYXRmb3JtL0RyYWdEYXRhLmgnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL0RyYWdJbWFnZS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9FdmVu
dFRyYWNlci5oJywKQEAgLTMxNDIsNiArMzE0Myw3IEBACiAgICAgICAgICAgICAncGxhdGZvcm0v
Q3Jvc3NUaHJlYWRDb3BpZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vQ3Vyc29yLmNwcCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vRGF0ZUNvbXBvbmVudHMuY3BwJywKKyAgICAgICAgICAg
ICdwbGF0Zm9ybS9EZWNpbWFsLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vRHJhZ0RhdGEu
Y3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9EcmFnSW1hZ2UuY3BwJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9FdmVudExvb3AuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCmluZGV4IGVmY2U0YTA3YWJmOTdhMGJhOGE2ZTdkZTkyOTFjODYxM2M3
YTc4ZWQuLmU4ZWY2MTEwNWU4ZjUwZTFkNTgzZGUxNzUzMmM4ZWZlYWM3MTg3ODIgMTAwNzU1Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0yNzc3OCw2ICsy
Nzc3OCwxNCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRo
PSIuLlxwbGF0Zm9ybVxEZWNpbWFsLmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQor
CQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cRGVjaW1hbC5oIgorCQkJCT4KKwkJCTwvRmls
ZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxEcmFnRGF0YS5jcHAi
CiAJCQkJPgogCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDBjMGRlMTE3NWQ3YTY1NzdkYTY3MzQ0MTYyOGVjMGE5
MWY1MTYyNTEuLjI5N2RiY2ZlNDg2OGYzN2YwOWMzMDAxZTFlMjU5ZTgwNDVmYmY3OWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTExOTMsNiArMTE5Myw4IEBACiAJCTQ1MENFQkYwMTUwNzNCQkUwMDJCQjE0OSAvKiBMYWJlbGFi
bGVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ1MENFQkVFMTUwNzNCQkUwMDJCQjE0OSAvKiBMYWJlbGFibGVFbGVtZW50LmNwcCAqLzsg
fTsKIAkJNDUwQ0VCRjExNTA3M0JCRTAwMkJCMTQ5IC8qIExhYmVsYWJsZUVsZW1lbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ1MENFQkVGMTUwNzNC
QkUwMDJCQjE0OSAvKiBMYWJlbGFibGVFbGVtZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDVCQUMyQjAxMzYwQkJBQjAwNURBMjU4IC8qIElj
b25VUkwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ1
QkFDMkFGMTM2MEJCQUIwMDVEQTI1OCAvKiBJY29uVVJMLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDVGRUE1Q0YxNTZEREU4QzAwNjU0MTAxIC8q
IERlY2ltYWwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDVGRUE1Q0QxNTZEREU4QzAwNjU0MTAxIC8qIERlY2ltYWwuY3BwICovOyB9OworCQk0NUZF
QTVEMDE1NkRERThDMDA2NTQxMDEgLyogRGVjaW1hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDVGRUE1Q0UxNTZEREU4QzAwNjU0MTAxIC8qIERlY2lt
YWwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0
NjE0QTFGRTBCMjNBOEQ2MDA0NDZFMUMgLyogY29weUN1cnNvci5wbmcgaW4gUmVzb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2MTRBMUZEMEIyM0E4RDYwMDQ0NkUx
QyAvKiBjb3B5Q3Vyc29yLnBuZyAqLzsgfTsKIAkJNDY3MDBFRDAxMjdCOTZDQjAwRjVENUQ2IC8q
IEZpbGVXcml0ZXJTeW5jLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ2NzAwRUNFMTI3Qjk2Q0IwMEY1RDVENiAvKiBGaWxlV3JpdGVyU3luYy5jcHAg
Ki87IH07CiAJCTQ2NzAwRUQxMTI3Qjk2Q0IwMEY1RDVENiAvKiBGaWxlV3JpdGVyU3luYy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY3MDBFQ0YxMjdC
OTZDQjAwRjVENUQ2IC8qIEZpbGVXcml0ZXJTeW5jLmggKi87IH07CkBAIC04MTg3LDYgKzgxODks
OCBAQAogCQk0NTBDRUJFRTE1MDczQkJFMDAyQkIxNDkgLyogTGFiZWxhYmxlRWxlbWVudC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMYWJlbGFibGVFbGVtZW50LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDUwQ0VCRUYxNTA3M0JCRTAwMkJCMTQ5
IC8qIExhYmVsYWJsZUVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TGFiZWxhYmxlRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NUJBQzJB
RjEzNjBCQkFCMDA1REEyNTggLyogSWNvblVSTC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBJY29uVVJMLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ1RkVBNUNE
MTU2RERFOEMwMDY1NDEwMSAvKiBEZWNpbWFsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IERlY2ltYWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0
NUZFQTVDRTE1NkRERThDMDA2NTQxMDEgLyogRGVjaW1hbC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBEZWNpbWFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2
MTRBMUZEMEIyM0E4RDYwMDQ0NkUxQyAvKiBjb3B5Q3Vyc29yLnBuZyAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGltYWdlLnBuZzsgcGF0aCA9IGNvcHlD
dXJzb3IucG5nOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjcwMEVDRTEyN0I5NkNC
MDBGNUQ1RDYgLyogRmlsZVdyaXRlclN5bmMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gRmlsZVdyaXRlclN5bmMuY3BwOyBwYXRoID0gTW9kdWxlcy9maWxlc3lzdGVt
L0ZpbGVXcml0ZXJTeW5jLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY3MDBF
Q0YxMjdCOTZDQjAwRjVENUQ2IC8qIEZpbGVXcml0ZXJTeW5jLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IEZpbGVXcml0ZXJTeW5jLmg7IHBhdGggPSBNb2R1bGVzL2ZpbGVzeXN0
ZW0vRmlsZVdyaXRlclN5bmMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwMzA5
LDYgKzIwMzEzLDggQEAKIAkJCQlGNTg3ODY4NDAyREUzQjg2MDFFQTQxMjIgLyogQ3Vyc29yLmgg
Ki8sCiAJCQkJQTU3MzJCMDgxMzZBMTYxRDAwNUM4RDdDIC8qIERhdGVDb21wb25lbnRzLmNwcCAq
LywKIAkJCQlBNTczMkIwOTEzNkExNjFEMDA1QzhEN0MgLyogRGF0ZUNvbXBvbmVudHMuaCAqLywK
KwkJCQk0NUZFQTVDRDE1NkRERThDMDA2NTQxMDEgLyogRGVjaW1hbC5jcHAgKi8sCisJCQkJNDVG
RUE1Q0UxNTZEREU4QzAwNjU0MTAxIC8qIERlY2ltYWwuaCAqLywKIAkJCQlBNzk1NDY0MjBCNUM0
Q0I0MDA3QjQzOEYgLyogRHJhZ0RhdGEuY3BwICovLAogCQkJCUE3QjZFNjlEMEIyOTFBOTYwMEQw
NTI5RiAvKiBEcmFnRGF0YS5oICovLAogCQkJCUE3Q0ZCM0NGMEI3RUQxMEEwMDcwQzMyRCAvKiBE
cmFnSW1hZ2UuY3BwICovLApAQCAtMjIwNjIsNiArMjIwNjgsNyBAQAogCQkJCUY1NUIzREI2MTI1
MUYxMkQwMDNFRjI2OSAvKiBEYXRlSW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTVC
M0RCODEyNTFGMTJEMDAzRUYyNjkgLyogRGF0ZVRpbWVJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCUY1NUIzREJBMTI1MUYxMkQwMDNFRjI2OSAvKiBEYXRlVGltZUxvY2FsSW5wdXRUeXBl
LmggaW4gSGVhZGVycyAqLywKKwkJCQk0NUZFQTVEMDE1NkRERThDMDA2NTQxMDEgLyogRGVjaW1h
bC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThDMjI4QTExMUQ1NzIyRTAwRDVBN0QzIC8qIERlY29k
ZWREYXRhRG9jdW1lbnRQYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFQ0NGQzNCMTQxOTcz
RDUwMDJBMEFDMSAvKiBEZWNvZGVFc2NhcGVTZXF1ZW5jZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTQxNjJBNDUxMTAxMTQ1QUUwMERGRjNFRCAvKiBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmggaW4g
SGVhZGVycyAqLywKQEAgLTI1NTUzLDYgKzI1NTYwLDcgQEAKIAkJCQlGNTVCM0RCNTEyNTFGMTJE
MDAzRUYyNjkgLyogRGF0ZUlucHV0VHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGNTVCM0RC
NzEyNTFGMTJEMDAzRUYyNjkgLyogRGF0ZVRpbWVJbnB1dFR5cGUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJRjU1QjNEQjkxMjUxRjEyRDAwM0VGMjY5IC8qIERhdGVUaW1lTG9jYWxJbnB1dFR5cGUu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDVGRUE1Q0YxNTZEREU4QzAwNjU0MTAxIC8qIERlY2lt
YWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThDMjI4QTIxMUQ1NzIyRTAwRDVBN0QzIC8qIERl
Y29kZWREYXRhRG9jdW1lbnRQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE2MkE0NTAx
MDExNDVBRTAwREZGM0VEIC8qIERlZGljYXRlZFdvcmtlckNvbnRleHQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNDFBM0Q1OEUxMDFDMTUyRDAwMzE2RDA3IC8qIERlZGljYXRlZFdvcmtlclRocmVh
ZC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFz
ZURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVB
bmRUaW1lSW5wdXRUeXBlLmNwcAppbmRleCA3ODJlNjYxOTlkNGRhMDI0ZDZmMjEyMTRhODI0NzVh
OTExMjJjZTFmLi4zMGNjYTNmZGIyMDcxMmFkNzc5MTMzZTNkOTA1ZjljYTRmYTI0MThmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwCkBA
IC0zMyw2ICszMyw3IEBACiAKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUg
IktleWJvYXJkRXZlbnQuaCIKICNpbmNsdWRlICJMb2NhbGl6ZWREYXRlLmgiCiAjaW5jbHVkZSA8
bGltaXRzPgpAQCAtNDcsMjcgKzQ4LDMyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5h
bWVzcGFjZSBIVE1MTmFtZXM7CiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCi1zdGF0aWMgY29uc3Qg
ZG91YmxlIG1zZWNQZXJNaW51dGUgPSA2MCAqIDEwMDA7Ci1zdGF0aWMgY29uc3QgZG91YmxlIG1z
ZWNQZXJTZWNvbmQgPSAxMDAwOworc3RhdGljIGNvbnN0IGludCBtc2VjUGVyTWludXRlID0gNjAg
KiAxMDAwOworc3RhdGljIGNvbnN0IGludCBtc2VjUGVyU2Vjb25kID0gMTAwMDsKKworc3RhdGlj
IERlY2ltYWwgY29udmVydERvdWJsZVRvRGVjaW1hbChkb3VibGUgdmFsdWUpCit7CisgICAgcmV0
dXJuIHBhcnNlVG9EZWNpbWFsRm9yTnVtYmVyVHlwZShzZXJpYWxpemVGb3JOdW1iZXJUeXBlKHZh
bHVlKSk7Cit9CiAKIGRvdWJsZSBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OnZhbHVlQXNEYXRl
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gcGFyc2VUb0RvdWJsZShlbGVtZW50KCktPnZhbHVlKCks
IERhdGVDb21wb25lbnRzOjppbnZhbGlkTWlsbGlzZWNvbmRzKCkpOworICAgIHJldHVybiBwYXJz
ZVRvRG91YmxlRm9yTnVtYmVyVHlwZShwYXJzZVRvRGVjaW1hbChlbGVtZW50KCktPnZhbHVlKCks
IGNvbnZlcnREb3VibGVUb0RlY2ltYWwoRGF0ZUNvbXBvbmVudHM6OmludmFsaWRNaWxsaXNlY29u
ZHMoKSkpLnRvU3RyaW5nKCkpOwogfQogCiB2b2lkIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6
c2V0VmFsdWVBc0RhdGUoZG91YmxlIHZhbHVlLCBFeGNlcHRpb25Db2RlJikgY29uc3QKIHsKLSAg
ICBlbGVtZW50KCktPnNldFZhbHVlKHNlcmlhbGl6ZVdpdGhNaWxsaXNlY29uZHModmFsdWUpKTsK
KyAgICBlbGVtZW50KCktPnNldFZhbHVlKHNlcmlhbGl6ZVdpdGhNaWxsaXNlY29uZHMoY29udmVy
dERvdWJsZVRvRGVjaW1hbCh2YWx1ZSkpKTsKIH0KIAogZG91YmxlIEJhc2VEYXRlQW5kVGltZUlu
cHV0VHlwZTo6dmFsdWVBc051bWJlcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHBhcnNlVG9Eb3Vi
bGUoZWxlbWVudCgpLT52YWx1ZSgpLCBudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4o
KSk7CisgICAgcmV0dXJuIHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKHBhcnNlVG9EZWNpbWFs
KGVsZW1lbnQoKS0+dmFsdWUoKSwgRGVjaW1hbDo6bmFuKCkpLnRvU3RyaW5nKCkpOwogfQogCiB2
b2lkIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6c2V0VmFsdWVBc051bWJlcihkb3VibGUgbmV3
VmFsdWUsIFRleHRGaWVsZEV2ZW50QmVoYXZpb3IgZXZlbnRCZWhhdmlvciwgRXhjZXB0aW9uQ29k
ZSYpIGNvbnN0CiB7Ci0gICAgZWxlbWVudCgpLT5zZXRWYWx1ZShzZXJpYWxpemUobmV3VmFsdWUp
LCBldmVudEJlaGF2aW9yKTsKKyAgICBlbGVtZW50KCktPnNldFZhbHVlKHNlcmlhbGl6ZShjb252
ZXJ0RG91YmxlVG9EZWNpbWFsKG5ld1ZhbHVlKSksIGV2ZW50QmVoYXZpb3IpOwogfQogCiBib29s
IEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6dHlwZU1pc21hdGNoRm9yKGNvbnN0IFN0cmluZyYg
dmFsdWUpIGNvbnN0CkBAIC04MCwxMyArODYsMTMgQEAgYm9vbCBCYXNlRGF0ZUFuZFRpbWVJbnB1
dFR5cGU6OnR5cGVNaXNtYXRjaCgpIGNvbnN0CiAgICAgcmV0dXJuIHR5cGVNaXNtYXRjaEZvcihl
bGVtZW50KCktPnZhbHVlKCkpOwogfQogCi1kb3VibGUgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBl
OjpkZWZhdWx0VmFsdWVGb3JTdGVwVXAoKSBjb25zdAorRGVjaW1hbCBCYXNlRGF0ZUFuZFRpbWVJ
bnB1dFR5cGU6OmRlZmF1bHRWYWx1ZUZvclN0ZXBVcCgpIGNvbnN0CiB7CiAgICAgZG91YmxlIG1z
ID0gY3VycmVudFRpbWVNUygpOwogICAgIGRvdWJsZSB1dGNPZmZzZXQgPSBjYWxjdWxhdGVVVENP
ZmZzZXQoKTsKICAgICBkb3VibGUgZHN0T2Zmc2V0ID0gY2FsY3VsYXRlRFNUT2Zmc2V0KG1zLCB1
dGNPZmZzZXQpOwogICAgIGludCBvZmZzZXQgPSBzdGF0aWNfY2FzdDxpbnQ+KCh1dGNPZmZzZXQg
KyBkc3RPZmZzZXQpIC8gbXNQZXJNaW51dGUpOwotICAgIHJldHVybiBtcyArIChvZmZzZXQgKiBt
c1Blck1pbnV0ZSk7CisgICAgcmV0dXJuIGNvbnZlcnREb3VibGVUb0RlY2ltYWwobXMgKyAob2Zm
c2V0ICogbXNQZXJNaW51dGUpKTsKIH0KIAogYm9vbCBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6
OmlzU3RlcHBhYmxlKCkgY29uc3QKQEAgLTEwOCwxNCArMTE0LDE0IEBAIHZvaWQgQmFzZURhdGVB
bmRUaW1lSW5wdXRUeXBlOjpoYW5kbGVXaGVlbEV2ZW50KFdoZWVsRXZlbnQqIGV2ZW50KQogICAg
ICAgICBoYW5kbGVXaGVlbEV2ZW50Rm9yU3BpbkJ1dHRvbihldmVudCk7CiB9CiAKLWRvdWJsZSBC
YXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OnBhcnNlVG9Eb3VibGUoY29uc3QgU3RyaW5nJiBzcmMs
IGRvdWJsZSBkZWZhdWx0VmFsdWUpIGNvbnN0CitEZWNpbWFsIEJhc2VEYXRlQW5kVGltZUlucHV0
VHlwZTo6cGFyc2VUb0RlY2ltYWwoY29uc3QgU3RyaW5nJiBzcmMsIGNvbnN0IERlY2ltYWwmIGRl
ZmF1bHRWYWx1ZSkgY29uc3QKIHsKICAgICBEYXRlQ29tcG9uZW50cyBkYXRlOwogICAgIGlmICgh
cGFyc2VUb0RhdGVDb21wb25lbnRzKHNyYywgJmRhdGUpKQogICAgICAgICByZXR1cm4gZGVmYXVs
dFZhbHVlOwogICAgIGRvdWJsZSBtc2VjID0gZGF0ZS5taWxsaXNlY29uZHNTaW5jZUVwb2NoKCk7
CiAgICAgQVNTRVJUKGlzZmluaXRlKG1zZWMpKTsKLSAgICByZXR1cm4gbXNlYzsKKyAgICByZXR1
cm4gY29udmVydERvdWJsZVRvRGVjaW1hbChtc2VjKTsKIH0KIAogYm9vbCBCYXNlRGF0ZUFuZFRp
bWVJbnB1dFR5cGU6OnBhcnNlVG9EYXRlQ29tcG9uZW50cyhjb25zdCBTdHJpbmcmIHNvdXJjZSwg
RGF0ZUNvbXBvbmVudHMqIG91dCkgY29uc3QKQEAgLTEyOCw5ICsxMzQsOSBAQCBib29sIEJhc2VE
YXRlQW5kVGltZUlucHV0VHlwZTo6cGFyc2VUb0RhdGVDb21wb25lbnRzKGNvbnN0IFN0cmluZyYg
c291cmNlLCBEYXRlQwogICAgIHJldHVybiBwYXJzZVRvRGF0ZUNvbXBvbmVudHNJbnRlcm5hbChz
b3VyY2UuY2hhcmFjdGVycygpLCBzb3VyY2UubGVuZ3RoKCksIG91dCk7CiB9CiAKLVN0cmluZyBC
YXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OnNlcmlhbGl6ZShkb3VibGUgdmFsdWUpIGNvbnN0CitT
dHJpbmcgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpzZXJpYWxpemUoY29uc3QgRGVjaW1hbCYg
dmFsdWUpIGNvbnN0CiB7Ci0gICAgaWYgKCFpc2Zpbml0ZSh2YWx1ZSkpCisgICAgaWYgKCF2YWx1
ZS5pc0Zpbml0ZSgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgRGF0ZUNvbXBvbmVu
dHMgZGF0ZTsKICAgICBpZiAoIXNldE1pbGxpc2Vjb25kVG9EYXRlQ29tcG9uZW50cyh2YWx1ZSwg
JmRhdGUpKQpAQCAtMTQwLDE3ICsxNDYsMTcgQEAgU3RyaW5nIEJhc2VEYXRlQW5kVGltZUlucHV0
VHlwZTo6c2VyaWFsaXplKGRvdWJsZSB2YWx1ZSkgY29uc3QKIAogU3RyaW5nIEJhc2VEYXRlQW5k
VGltZUlucHV0VHlwZTo6c2VyaWFsaXplV2l0aENvbXBvbmVudHMoY29uc3QgRGF0ZUNvbXBvbmVu
dHMmIGRhdGUpIGNvbnN0CiB7Ci0gICAgZG91YmxlIHN0ZXA7CisgICAgRGVjaW1hbCBzdGVwOwog
ICAgIGlmICghZWxlbWVudCgpLT5nZXRBbGxvd2VkVmFsdWVTdGVwKCZzdGVwKSkKICAgICAgICAg
cmV0dXJuIGRhdGUudG9TdHJpbmcoKTsKLSAgICBpZiAoIWZtb2Qoc3RlcCwgbXNlY1Blck1pbnV0
ZSkpCisgICAgaWYgKHN0ZXAucmVtYWluZGVyKG1zZWNQZXJNaW51dGUpLmlzWmVybygpKQogICAg
ICAgICByZXR1cm4gZGF0ZS50b1N0cmluZyhEYXRlQ29tcG9uZW50czo6Tm9uZSk7Ci0gICAgaWYg
KCFmbW9kKHN0ZXAsIG1zZWNQZXJTZWNvbmQpKQorICAgIGlmIChzdGVwLnJlbWFpbmRlcihtc2Vj
UGVyU2Vjb25kKS5pc1plcm8oKSkKICAgICAgICAgcmV0dXJuIGRhdGUudG9TdHJpbmcoRGF0ZUNv
bXBvbmVudHM6OlNlY29uZCk7CiAgICAgcmV0dXJuIGRhdGUudG9TdHJpbmcoRGF0ZUNvbXBvbmVu
dHM6Ok1pbGxpc2Vjb25kKTsKIH0KIAotU3RyaW5nIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6
c2VyaWFsaXplV2l0aE1pbGxpc2Vjb25kcyhkb3VibGUgdmFsdWUpIGNvbnN0CitTdHJpbmcgQmFz
ZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpzZXJpYWxpemVXaXRoTWlsbGlzZWNvbmRzKGNvbnN0IERl
Y2ltYWwmIHZhbHVlKSBjb25zdAogewogICAgIHJldHVybiBzZXJpYWxpemUodmFsdWUpOwogfQpA
QCAtMTc1LDcgKzE4MSw4IEBAIFN0cmluZyBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmNvbnZl
cnRGcm9tVmlzaWJsZVZhbHVlKGNvbnN0IFN0cmluZyYgdmlzaWJsZVZhCiAgICAgaWYgKCFpc2Zp
bml0ZShwYXJzZWRWYWx1ZSkpCiAgICAgICAgIHJldHVybiB2aXNpYmxlVmFsdWU7CiAKLSAgICBy
ZXR1cm4gc2VyaWFsaXplV2l0aE1pbGxpc2Vjb25kcyhwYXJzZWRWYWx1ZSk7CisgICAgY29uc3Qg
RGVjaW1hbCB2YWx1ZSA9IGNvbnZlcnREb3VibGVUb0RlY2ltYWwocGFyc2VkVmFsdWUpOworICAg
IHJldHVybiB2YWx1ZS5pc0Zpbml0ZSgpID8gc2VyaWFsaXplV2l0aE1pbGxpc2Vjb25kcyh2YWx1
ZSkgOiB2aXNpYmxlVmFsdWU7CiB9CiAKIFN0cmluZyBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6
OnNhbml0aXplVmFsdWUoY29uc3QgU3RyaW5nJiBwcm9wb3NlZFZhbHVlKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmgKaW5kZXggZTkxY2Y2
MDg4ZDg1ODliZmQ2MmVmM2Y4NjY1NTQ4OThiMjA4MjUwNi4uYTc4YjRjZDI2NWQ3ZDBlZTE4ODg2
NDgxMmJjYzA0MmY3MTYyYmRhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNl
RGF0ZUFuZFRpbWVJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VEYXRl
QW5kVGltZUlucHV0VHlwZS5oCkBAIC00MiwxMyArNDIsMTMgQEAgY2xhc3MgQmFzZURhdGVBbmRU
aW1lSW5wdXRUeXBlIDogcHVibGljIFRleHRGaWVsZElucHV0VHlwZSB7CiBwcm90ZWN0ZWQ6CiAg
ICAgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQpIDog
VGV4dEZpZWxkSW5wdXRUeXBlKGVsZW1lbnQpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVL
ZXlkb3duRXZlbnQoS2V5Ym9hcmRFdmVudCopIE9WRVJSSURFOwotICAgIHZpcnR1YWwgZG91Ymxl
IHBhcnNlVG9Eb3VibGUoY29uc3QgU3RyaW5nJiwgZG91YmxlKSBjb25zdCBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIERlY2ltYWwgcGFyc2VUb0RlY2ltYWwoY29uc3QgU3RyaW5nJiwgY29uc3QgRGVj
aW1hbCYpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBwYXJzZVRvRGF0ZUNvbXBv
bmVudHMoY29uc3QgU3RyaW5nJiwgRGF0ZUNvbXBvbmVudHMqKSBjb25zdCBPVkVSUklERTsKICAg
ICBTdHJpbmcgc2VyaWFsaXplV2l0aENvbXBvbmVudHMoY29uc3QgRGF0ZUNvbXBvbmVudHMmKSBj
b25zdDsKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgcGFyc2VUb0RhdGVDb21wb25lbnRz
SW50ZXJuYWwoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgsIERhdGVDb21wb25lbnRzKikg
Y29uc3QgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBzZXRNaWxsaXNlY29uZFRvRGF0ZUNvbXBvbmVu
dHMoZG91YmxlLCBEYXRlQ29tcG9uZW50cyopIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wg
c2V0TWlsbGlzZWNvbmRUb0RhdGVDb21wb25lbnRzKGNvbnN0IERlY2ltYWwmLCBEYXRlQ29tcG9u
ZW50cyopIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIERhdGVDb21wb25lbnRzOjpUeXBlIGRhdGVU
eXBlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgZG91YmxlIHZhbHVlQXNEYXRlKCkgY29uc3Qg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldFZhbHVlQXNEYXRlKGRvdWJsZSwgRXhjZXB0
aW9uQ29kZSYpIGNvbnN0IE9WRVJSSURFOwpAQCAtNTYsMTEgKzU2LDExIEBAIHByaXZhdGU6CiAg
ICAgdmlydHVhbCB2b2lkIHNldFZhbHVlQXNOdW1iZXIoZG91YmxlLCBUZXh0RmllbGRFdmVudEJl
aGF2aW9yLCBFeGNlcHRpb25Db2RlJikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29s
IHR5cGVNaXNtYXRjaEZvcihjb25zdCBTdHJpbmcmKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0
dWFsIGJvb2wgdHlwZU1pc21hdGNoKCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBkb3Vi
bGUgZGVmYXVsdFZhbHVlRm9yU3RlcFVwKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBE
ZWNpbWFsIGRlZmF1bHRWYWx1ZUZvclN0ZXBVcCgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1
YWwgYm9vbCBpc1N0ZXBwYWJsZSgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBo
YW5kbGVXaGVlbEV2ZW50KFdoZWVsRXZlbnQqKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIFN0cmlu
ZyBzZXJpYWxpemUoZG91YmxlKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIFN0cmluZyBz
ZXJpYWxpemVXaXRoTWlsbGlzZWNvbmRzKGRvdWJsZSkgY29uc3Q7CisgICAgdmlydHVhbCBTdHJp
bmcgc2VyaWFsaXplKGNvbnN0IERlY2ltYWwmKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IFN0cmluZyBzZXJpYWxpemVXaXRoTWlsbGlzZWNvbmRzKGNvbnN0IERlY2ltYWwmKSBjb25zdDsK
ICAgICB2aXJ0dWFsIFN0cmluZyB2aXNpYmxlVmFsdWUoKSBjb25zdCBPVkVSUklERTsKICAgICB2
aXJ0dWFsIFN0cmluZyBjb252ZXJ0RnJvbVZpc2libGVWYWx1ZShjb25zdCBTdHJpbmcmKSBjb25z
dCBPVkVSUklERTsKICAgICB2aXJ0dWFsIFN0cmluZyBzYW5pdGl6ZVZhbHVlKGNvbnN0IFN0cmlu
ZyYpIGNvbnN0IE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRl
SW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZUlucHV0VHlwZS5jcHAKaW5k
ZXggODhiMzEyMDY1NTQyZjI4YmYwZjlkOGQ2MTMzZWUxYjkxZWJiMjYxOS4uZDhkNjI2OTU1MjRi
ODQxYTNmZjBhZTVmYTU1MTVmNDhhNjNmOGEyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9EYXRlSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVJbnB1
dFR5cGUuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiRGF0ZUNvbXBvbmVudHMuaCIK
ICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisj
aW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIktleWJvYXJkRXZlbnQuaCIK
ICNpbmNsdWRlICJMb2NhbGl6ZWREYXRlLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4K
QEAgLTQ1LDkgKzQ2LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2Ug
SFRNTE5hbWVzOwogCi1zdGF0aWMgY29uc3QgZG91YmxlIGRhdGVEZWZhdWx0U3RlcCA9IDEuMDsK
LXN0YXRpYyBjb25zdCBkb3VibGUgZGF0ZURlZmF1bHRTdGVwQmFzZSA9IDAuMDsKLXN0YXRpYyBj
b25zdCBkb3VibGUgZGF0ZVN0ZXBTY2FsZUZhY3RvciA9IDg2NDAwMDAwLjA7CitzdGF0aWMgY29u
c3QgaW50ICBkYXRlRGVmYXVsdFN0ZXAgPSAxOworc3RhdGljIGNvbnN0IGludCAgZGF0ZURlZmF1
bHRTdGVwQmFzZSA9IDA7CitzdGF0aWMgY29uc3QgaW50ICBkYXRlU3RlcFNjYWxlRmFjdG9yID0g
ODY0MDAwMDA7CiAKIGlubGluZSBEYXRlSW5wdXRUeXBlOjpEYXRlSW5wdXRUeXBlKEhUTUxJbnB1
dEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgOiBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUoZWxlbWVu
dCkKQEAgLTczLDEwICs3NCwxMCBAQCBTdGVwUmFuZ2UgRGF0ZUlucHV0VHlwZTo6Y3JlYXRlU3Rl
cFJhbmdlKEFueVN0ZXBIYW5kbGluZyBhbnlTdGVwSGFuZGxpbmcpIGNvbnN0CiB7CiAgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdGVwUmFuZ2U6OlN0ZXBEZXNjcmlwdGlvbiwgc3RlcERl
c2NyaXB0aW9uLCAoZGF0ZURlZmF1bHRTdGVwLCBkYXRlRGVmYXVsdFN0ZXBCYXNlLCBkYXRlU3Rl
cFNjYWxlRmFjdG9yLCBTdGVwUmFuZ2U6OlBhcnNlZFN0ZXBWYWx1ZVNob3VsZEJlSW50ZWdlcikp
OwogCi0gICAgZG91YmxlIHN0ZXBCYXNlID0gcGFyc2VUb0RvdWJsZShlbGVtZW50KCktPmZhc3RH
ZXRBdHRyaWJ1dGUobWluQXR0ciksIDApOwotICAgIGRvdWJsZSBtaW5pbXVtID0gcGFyc2VUb0Rv
dWJsZShlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUobWluQXR0ciksIERhdGVDb21wb25lbnRz
OjptaW5pbXVtRGF0ZSgpKTsKLSAgICBkb3VibGUgbWF4aW11bSA9IHBhcnNlVG9Eb3VibGUoZWxl
bWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1heEF0dHIpLCBEYXRlQ29tcG9uZW50czo6bWF4aW11
bURhdGUoKSk7Ci0gICAgU3RlcFJhbmdlOjpEb3VibGVXaXRoRGVjaW1hbFBsYWNlc09yTWlzc2lu
ZyBzdGVwID0gU3RlcFJhbmdlOjpwYXJzZVN0ZXAoYW55U3RlcEhhbmRsaW5nLCBzdGVwRGVzY3Jp
cHRpb24sIGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShzdGVwQXR0cikpOworICAgIGNvbnN0
IERlY2ltYWwgc3RlcEJhc2UgPSBwYXJzZVRvRGVjaW1hbChlbGVtZW50KCktPmZhc3RHZXRBdHRy
aWJ1dGUobWluQXR0ciksIDApOworICAgIGNvbnN0IERlY2ltYWwgbWluaW11bSA9IHBhcnNlVG9E
ZWNpbWFsKGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShtaW5BdHRyKSwgcGFyc2VUb0RlY2lt
YWxGb3JOdW1iZXJUeXBlKHNlcmlhbGl6ZUZvck51bWJlclR5cGUoRGF0ZUNvbXBvbmVudHM6Om1p
bmltdW1EYXRlKCkpKSk7CisgICAgY29uc3QgRGVjaW1hbCBtYXhpbXVtID0gcGFyc2VUb0RlY2lt
YWwoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1heEF0dHIpLCBwYXJzZVRvRGVjaW1hbEZv
ck51bWJlclR5cGUoc2VyaWFsaXplRm9yTnVtYmVyVHlwZShEYXRlQ29tcG9uZW50czo6bWF4aW11
bURhdGUoKSkpKTsKKyAgICBjb25zdCBTdGVwUmFuZ2U6OkRlY2ltYWxPck1pc3Npbmcgc3RlcCA9
IFN0ZXBSYW5nZTo6cGFyc2VTdGVwKGFueVN0ZXBIYW5kbGluZywgc3RlcERlc2NyaXB0aW9uLCBl
bGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUoc3RlcEF0dHIpKTsKICAgICByZXR1cm4gU3RlcFJh
bmdlKHN0ZXBCYXNlLCBtaW5pbXVtLCBtYXhpbXVtLCBzdGVwLCBzdGVwRGVzY3JpcHRpb24pOwog
fQogCkBAIC04NywxMCArODgsMTAgQEAgYm9vbCBEYXRlSW5wdXRUeXBlOjpwYXJzZVRvRGF0ZUNv
bXBvbmVudHNJbnRlcm5hbChjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWcKICAgICByZXR1
cm4gb3V0LT5wYXJzZURhdGUoY2hhcmFjdGVycywgbGVuZ3RoLCAwLCBlbmQpICYmIGVuZCA9PSBs
ZW5ndGg7CiB9CiAKLWJvb2wgRGF0ZUlucHV0VHlwZTo6c2V0TWlsbGlzZWNvbmRUb0RhdGVDb21w
b25lbnRzKGRvdWJsZSB2YWx1ZSwgRGF0ZUNvbXBvbmVudHMqIGRhdGUpIGNvbnN0Citib29sIERh
dGVJbnB1dFR5cGU6OnNldE1pbGxpc2Vjb25kVG9EYXRlQ29tcG9uZW50cyhjb25zdCBEZWNpbWFs
JiB2YWx1ZSwgRGF0ZUNvbXBvbmVudHMqIGRhdGUpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGRhdGUp
OwotICAgIHJldHVybiBkYXRlLT5zZXRNaWxsaXNlY29uZHNTaW5jZUVwb2NoRm9yRGF0ZSh2YWx1
ZSk7CisgICAgcmV0dXJuIGRhdGUtPnNldE1pbGxpc2Vjb25kc1NpbmNlRXBvY2hGb3JEYXRlKHBh
cnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKHNlcmlhbGl6ZUZvck51bWJlclR5cGUodmFsdWUpKSk7
CiB9CiAKIGJvb2wgRGF0ZUlucHV0VHlwZTo6aXNEYXRlRmllbGQoKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0RhdGVJbnB1dFR5cGUuaAppbmRleCAyZmFkYzQ3YjQ4Y2QwYTM5ZTAwZjQzYjNiZjExYmEw
YTliMjFjMDFmLi44Mzg0M2ExZGFkYjU1YWQ0OWI4ZTU1Njc3MTFhNWFmMTgzY2RlYWQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0RhdGVJbnB1dFR5cGUuaApAQCAtNTAsNyArNTAsNyBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgRGF0ZUNvbXBvbmVudHM6OlR5cGUgZGF0ZVR5cGUoKSBjb25zdCBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIFN0ZXBSYW5nZSBjcmVhdGVTdGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5n
KSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgcGFyc2VUb0RhdGVDb21wb25lbnRz
SW50ZXJuYWwoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgsIERhdGVDb21wb25lbnRzKikg
Y29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIHNldE1pbGxpc2Vjb25kVG9EYXRlQ29t
cG9uZW50cyhkb3VibGUsIERhdGVDb21wb25lbnRzKikgY29uc3QgT1ZFUlJJREU7CisgICAgdmly
dHVhbCBib29sIHNldE1pbGxpc2Vjb25kVG9EYXRlQ29tcG9uZW50cyhjb25zdCBEZWNpbWFsJiwg
RGF0ZUNvbXBvbmVudHMqKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgaXNEYXRl
RmllbGQoKSBjb25zdCBPVkVSUklERTsKICNpZiBFTkFCTEUoQ0FMRU5EQVJfUElDS0VSKQogICAg
IHZpcnR1YWwgdm9pZCBjcmVhdGVTaGFkb3dTdWJ0cmVlKCkgT1ZFUlJJREU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCA3MzJjYWI0MWQzODNkNjZlMWY1YzIx
OTY0NWE5YjAzZDI3N2EyOWM5Li5hMTVkNTIwOGRjZmFjNTRjMzJmZTcwMTM0ZjA1ZTE2YTAzNjVh
NmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTI3Myw3
ICsyNzMsNyBAQCBib29sIEhUTUxJbnB1dEVsZW1lbnQ6OnN0ZXBNaXNtYXRjaCgpIGNvbnN0CiAg
ICAgcmV0dXJuIHdpbGxWYWxpZGF0ZSgpICYmIG1faW5wdXRUeXBlLT5zdGVwTWlzbWF0Y2godmFs
dWUoKSk7CiB9CiAKLWJvb2wgSFRNTElucHV0RWxlbWVudDo6Z2V0QWxsb3dlZFZhbHVlU3RlcChk
b3VibGUqIHN0ZXApIGNvbnN0Citib29sIEhUTUxJbnB1dEVsZW1lbnQ6OmdldEFsbG93ZWRWYWx1
ZVN0ZXAoRGVjaW1hbCogc3RlcCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9pbnB1dFR5cGUtPmdl
dEFsbG93ZWRWYWx1ZVN0ZXAoc3RlcCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxJbnB1dEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxl
bWVudC5oCmluZGV4IDU2MTMzNGUyMzZkMjg1YzYyODMxMzVhM2ZmZDU3OGE0ZDczYzNlOGYuLmU3
NGU0MzUzOGJlOWU2ZmM2YzcwYjRmMjllMWI4YWExOThmMDBlODIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTElucHV0RWxlbWVudC5oCkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICBkb3Vi
bGUgbWF4aW11bSgpIGNvbnN0OwogICAgIC8vIFNldHMgdGhlICJhbGxvd2VkIHZhbHVlIHN0ZXAi
IGRlZmluZWQgaW4gdGhlIEhUTUwgc3BlYyB0byB0aGUgc3BlY2lmaWVkIGRvdWJsZSBwb2ludGVy
LgogICAgIC8vIFJldHVybnMgZmFsc2UgaWYgdGhlcmUgaXMgbm8gImFsbG93ZWQgdmFsdWUgc3Rl
cC4iCi0gICAgYm9vbCBnZXRBbGxvd2VkVmFsdWVTdGVwKGRvdWJsZSopIGNvbnN0OworICAgIGJv
b2wgZ2V0QWxsb3dlZFZhbHVlU3RlcChEZWNpbWFsKikgY29uc3Q7CiAgICAgU3RlcFJhbmdlIGNy
ZWF0ZVN0ZXBSYW5nZShBbnlTdGVwSGFuZGxpbmcpIGNvbnN0OwogCiAgICAgLy8gSW1wbGVtZW50
YXRpb25zIG9mIEhUTUxJbnB1dEVsZW1lbnQ6OnN0ZXBVcCgpIGFuZCBzdGVwRG93bigpLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9JbnB1dFR5cGUuY3BwCmluZGV4IDU2YTdhYTEzNzFkNjBiZTE1ZTQ2NjIwNzU4MTEz
N2FlMjc2OTRjZWUuLjIyMzM1Zjg0MTIyOTExMGNjZGZhMGJkNDI1NTA4MmU2NGU5ODQxZTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKQEAgLTI1MCwxMSArMjUwLDggQEAgYm9vbCBJbnB1
dFR5cGU6OnJhbmdlVW5kZXJmbG93KGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0CiAgICAgaWYg
KCFpc1N0ZXBwYWJsZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBkb3VibGUgZG91
YmxlVmFsdWUgPSBwYXJzZVRvRG91YmxlKHZhbHVlLCBudW1lcmljX2xpbWl0czxkb3VibGU+Ojpx
dWlldF9OYU4oKSk7Ci0gICAgaWYgKGlzbmFuKGRvdWJsZVZhbHVlKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgcmV0dXJuIGRvdWJsZVZhbHVlIDwgY3JlYXRlU3RlcFJhbmdlKFJlamVj
dEFueSkubWluaW11bSgpOworICAgIGNvbnN0IERlY2ltYWwgbnVtZXJpY1ZhbHVlID0gcGFyc2VU
b0RlY2ltYWwodmFsdWUpOworICAgIHJldHVybiBudW1lcmljVmFsdWUuaXNGaW5pdGUoKSAmJiBu
dW1lcmljVmFsdWUgPCBjcmVhdGVTdGVwUmFuZ2UoUmVqZWN0QW55KS5taW5pbXVtKCk7CiB9CiAK
IGJvb2wgSW5wdXRUeXBlOjpyYW5nZU92ZXJmbG93KGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0
CkBAIC0yNjIsMjYgKzI1OSwyMyBAQCBib29sIElucHV0VHlwZTo6cmFuZ2VPdmVyZmxvdyhjb25z
dCBTdHJpbmcmIHZhbHVlKSBjb25zdAogICAgIGlmICghaXNTdGVwcGFibGUoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgZG91YmxlIGRvdWJsZVZhbHVlID0gcGFyc2VUb0RvdWJsZSh2
YWx1ZSwgbnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCkpOwotICAgIGlmIChpc25h
bihkb3VibGVWYWx1ZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBkb3Vi
bGVWYWx1ZSA+IGNyZWF0ZVN0ZXBSYW5nZShSZWplY3RBbnkpLm1heGltdW0oKTsKKyAgICBjb25z
dCBEZWNpbWFsIG51bWVyaWNWYWx1ZSA9IHBhcnNlVG9EZWNpbWFsKHZhbHVlKTsKKyAgICByZXR1
cm4gbnVtZXJpY1ZhbHVlLmlzRmluaXRlKCkgJiYgbnVtZXJpY1ZhbHVlID4gY3JlYXRlU3RlcFJh
bmdlKFJlamVjdEFueSkubWF4aW11bSgpOwogfQogCi1kb3VibGUgSW5wdXRUeXBlOjpkZWZhdWx0
VmFsdWVGb3JTdGVwVXAoKSBjb25zdAorRGVjaW1hbCBJbnB1dFR5cGU6OmRlZmF1bHRWYWx1ZUZv
clN0ZXBVcCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIDA7CiB9CiAKIGRvdWJsZSBJbnB1dFR5cGU6
Om1pbmltdW0oKSBjb25zdAogewotICAgIHJldHVybiBjcmVhdGVTdGVwUmFuZ2UoUmVqZWN0QW55
KS5taW5pbXVtKCk7CisgICAgcmV0dXJuIHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKGNyZWF0
ZVN0ZXBSYW5nZShSZWplY3RBbnkpLm1pbmltdW0oKS50b1N0cmluZygpKTsKIH0KIAogZG91Ymxl
IElucHV0VHlwZTo6bWF4aW11bSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNyZWF0ZVN0ZXBSYW5n
ZShSZWplY3RBbnkpLm1heGltdW0oKTsKKyAgICByZXR1cm4gcGFyc2VUb0RvdWJsZUZvck51bWJl
clR5cGUoY3JlYXRlU3RlcFJhbmdlKFJlamVjdEFueSkubWF4aW11bSgpLnRvU3RyaW5nKCkpOwog
fQogCiBib29sIElucHV0VHlwZTo6c2l6ZVNob3VsZEluY2x1ZGVEZWNvcmF0aW9uKGludCwgaW50
JiBwcmVmZXJyZWRTaXplKSBjb25zdApAQCAtMjk1LDEyICsyODksMTIgQEAgYm9vbCBJbnB1dFR5
cGU6OmlzSW5SYW5nZShjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAogICAgIGlmICghaXNTdGVw
cGFibGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgZG91YmxlIGRvdWJsZVZhbHVl
ID0gcGFyc2VUb0RvdWJsZSh2YWx1ZSwgbnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFO
KCkpOwotICAgIGlmIChpc25hbihkb3VibGVWYWx1ZSkpCisgICAgY29uc3QgRGVjaW1hbCYgbnVt
ZXJpY1ZhbHVlID0gcGFyc2VUb0RlY2ltYWwodmFsdWUpOworICAgIGlmICghbnVtZXJpY1ZhbHVl
LmlzRmluaXRlKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgU3RlcFJhbmdlIHN0ZXBS
YW5nZShjcmVhdGVTdGVwUmFuZ2UoUmVqZWN0QW55KSk7Ci0gICAgcmV0dXJuIGRvdWJsZVZhbHVl
ID49IHN0ZXBSYW5nZS5taW5pbXVtKCkgJiYgZG91YmxlVmFsdWUgPD0gc3RlcFJhbmdlLm1heGlt
dW0oKTsKKyAgICBjb25zdCBTdGVwUmFuZ2Ugc3RlcFJhbmdlKGNyZWF0ZVN0ZXBSYW5nZShSZWpl
Y3RBbnkpKTsKKyAgICByZXR1cm4gbnVtZXJpY1ZhbHVlID49IHN0ZXBSYW5nZS5taW5pbXVtKCkg
JiYgbnVtZXJpY1ZhbHVlIDw9IHN0ZXBSYW5nZS5tYXhpbXVtKCk7CiB9CiAKIGJvb2wgSW5wdXRU
eXBlOjppc091dE9mUmFuZ2UoY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKQEAgLTMwOCwxMiAr
MzAyLDEyIEBAIGJvb2wgSW5wdXRUeXBlOjppc091dE9mUmFuZ2UoY29uc3QgU3RyaW5nJiB2YWx1
ZSkgY29uc3QKICAgICBpZiAoIWlzU3RlcHBhYmxlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIGRvdWJsZSBkb3VibGVWYWx1ZSA9IHBhcnNlVG9Eb3VibGUodmFsdWUsIG51bWVyaWNf
bGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpKTsKLSAgICBpZiAoaXNuYW4oZG91YmxlVmFsdWUp
KQorICAgIGNvbnN0IERlY2ltYWwmIG51bWVyaWNWYWx1ZSA9IHBhcnNlVG9EZWNpbWFsKHZhbHVl
KTsKKyAgICBpZiAoIW51bWVyaWNWYWx1ZS5pc0Zpbml0ZSgpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKIAotICAgIFN0ZXBSYW5nZSBzdGVwUmFuZ2UoY3JlYXRlU3RlcFJhbmdlKFJlamVjdEFueSkp
OwotICAgIHJldHVybiBkb3VibGVWYWx1ZSA8IHN0ZXBSYW5nZS5taW5pbXVtKCkgfHwgZG91Ymxl
VmFsdWUgPiBzdGVwUmFuZ2UubWF4aW11bSgpOworICAgIGNvbnN0IFN0ZXBSYW5nZSBzdGVwUmFu
Z2UoY3JlYXRlU3RlcFJhbmdlKFJlamVjdEFueSkpOworICAgIHJldHVybiBudW1lcmljVmFsdWUg
PCBzdGVwUmFuZ2UubWluaW11bSgpIHx8IG51bWVyaWNWYWx1ZSA+IHN0ZXBSYW5nZS5tYXhpbXVt
KCk7CiB9CiAKIGJvb2wgSW5wdXRUeXBlOjpzdGVwTWlzbWF0Y2goY29uc3QgU3RyaW5nJiB2YWx1
ZSkgY29uc3QKQEAgLTMyMSwxMSArMzE1LDExIEBAIGJvb2wgSW5wdXRUeXBlOjpzdGVwTWlzbWF0
Y2goY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKICAgICBpZiAoIWlzU3RlcHBhYmxlKCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGRvdWJsZSBkb3VibGVWYWx1ZSA9IHBhcnNlVG9E
b3VibGUodmFsdWUsIG51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpKTsKLSAgICBp
ZiAoaXNuYW4oZG91YmxlVmFsdWUpKQorICAgIGNvbnN0IERlY2ltYWwmIG51bWVyaWNWYWx1ZSA9
IHBhcnNlVG9EZWNpbWFsKHZhbHVlKTsKKyAgICBpZiAoIW51bWVyaWNWYWx1ZS5pc0Zpbml0ZSgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gY3JlYXRlU3RlcFJhbmdlKFJl
amVjdEFueSkuc3RlcE1pc21hdGNoKGRvdWJsZVZhbHVlKTsKKyAgICByZXR1cm4gY3JlYXRlU3Rl
cFJhbmdlKFJlamVjdEFueSkuc3RlcE1pc21hdGNoKG51bWVyaWNWYWx1ZSk7CiB9CiAKIFN0cmlu
ZyBJbnB1dFR5cGU6OnR5cGVNaXNtYXRjaFRleHQoKSBjb25zdApAQCAtMzU5LDIxICszNTMsMjEg
QEAgU3RyaW5nIElucHV0VHlwZTo6dmFsaWRhdGlvbk1lc3NhZ2UoKSBjb25zdAogICAgIGlmICgh
aXNTdGVwcGFibGUoKSkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKLSAgICBkb3Vi
bGUgZG91YmxlVmFsdWUgPSBwYXJzZVRvRG91YmxlKHZhbHVlLCBudW1lcmljX2xpbWl0czxkb3Vi
bGU+OjpxdWlldF9OYU4oKSk7Ci0gICAgaWYgKGlzbmFuKGRvdWJsZVZhbHVlKSkKKyAgICBjb25z
dCBEZWNpbWFsJiBudW1lcmljVmFsdWUgPSBwYXJzZVRvRGVjaW1hbCh2YWx1ZSk7CisgICAgaWYg
KCFudW1lcmljVmFsdWUuaXNGaW5pdGUoKSkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7
CiAKLSAgICBTdGVwUmFuZ2Ugc3RlcFJhbmdlKGNyZWF0ZVN0ZXBSYW5nZShSZWplY3RBbnkpKTsK
KyAgICBjb25zdCBTdGVwUmFuZ2Ugc3RlcFJhbmdlKGNyZWF0ZVN0ZXBSYW5nZShSZWplY3RBbnkp
KTsKIAotICAgIGlmIChkb3VibGVWYWx1ZSA8IHN0ZXBSYW5nZS5taW5pbXVtKCkpCisgICAgaWYg
KG51bWVyaWNWYWx1ZSA8IHN0ZXBSYW5nZS5taW5pbXVtKCkpCiAgICAgICAgIHJldHVybiB2YWxp
ZGF0aW9uTWVzc2FnZVJhbmdlVW5kZXJmbG93VGV4dChzZXJpYWxpemUoc3RlcFJhbmdlLm1pbmlt
dW0oKSkpOwogCi0gICAgaWYgKGRvdWJsZVZhbHVlIDwgc3RlcFJhbmdlLm1heGltdW0oKSkKKyAg
ICBpZiAobnVtZXJpY1ZhbHVlIDwgc3RlcFJhbmdlLm1heGltdW0oKSkKICAgICAgICAgcmV0dXJu
IHZhbGlkYXRpb25NZXNzYWdlUmFuZ2VPdmVyZmxvd1RleHQoc2VyaWFsaXplKHN0ZXBSYW5nZS5t
YXhpbXVtKCkpKTsKIAotICAgIGlmIChzdGVwUmFuZ2Uuc3RlcE1pc21hdGNoKGRvdWJsZVZhbHVl
KSkgeworICAgIGlmIChzdGVwUmFuZ2Uuc3RlcE1pc21hdGNoKG51bWVyaWNWYWx1ZSkpIHsKICAg
ICAgICAgY29uc3QgU3RyaW5nIHN0ZXBTdHJpbmcgPSBzdGVwUmFuZ2UuaGFzU3RlcCgpID8gc2Vy
aWFsaXplRm9yTnVtYmVyVHlwZShzdGVwUmFuZ2Uuc3RlcCgpIC8gc3RlcFJhbmdlLnN0ZXBTY2Fs
ZUZhY3RvcigpKSA6IGVtcHR5U3RyaW5nKCk7Ci0gICAgICAgIHJldHVybiB2YWxpZGF0aW9uTWVz
c2FnZVN0ZXBNaXNtYXRjaFRleHQoc2VyaWFsaXplKHN0ZXBSYW5nZS5zdGVwQmFzZSgpKSwgc3Rl
cFN0cmluZyk7CisgICAgICAgIHJldHVybiB2YWxpZGF0aW9uTWVzc2FnZVN0ZXBNaXNtYXRjaFRl
eHQoc3RlcFJhbmdlLnN0ZXBCYXNlKCkudG9TdHJpbmcoKSwgc3RlcFN0cmluZyk7CiAgICAgfQog
CiAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CkBAIC00NTIsMTcgKzQ0NiwxNSBAQCB2b2lkIElu
cHV0VHlwZTo6ZGVzdHJveVNoYWRvd1N1YnRyZWUoKQogICAgIH0KIH0KIAotZG91YmxlIElucHV0
VHlwZTo6cGFyc2VUb0RvdWJsZShjb25zdCBTdHJpbmcmLCBkb3VibGUgZGVmYXVsdFZhbHVlKSBj
b25zdAorRGVjaW1hbCBJbnB1dFR5cGU6OnBhcnNlVG9EZWNpbWFsKGNvbnN0IFN0cmluZyYsIGNv
bnN0IERlY2ltYWwmIGRlZmF1bHRWYWx1ZSkgY29uc3QKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICByZXR1cm4gZGVmYXVsdFZhbHVlOwogfQogCi1kb3VibGUgSW5wdXRUeXBlOjpw
YXJzZVRvRG91YmxlV2l0aERlY2ltYWxQbGFjZXMoY29uc3QgU3RyaW5nJiBzcmMsIGRvdWJsZSBk
ZWZhdWx0VmFsdWUsIHVuc2lnbmVkICpkZWNpbWFsUGxhY2VzKSBjb25zdAorRGVjaW1hbCBJbnB1
dFR5cGU6OnBhcnNlVG9EZWNpbWFsKGNvbnN0IFN0cmluZyYgc3RyaW5nKSBjb25zdAogewotICAg
IGlmIChkZWNpbWFsUGxhY2VzKQotICAgICAgICAqZGVjaW1hbFBsYWNlcyA9IDA7Ci0gICAgcmV0
dXJuIHBhcnNlVG9Eb3VibGUoc3JjLCBkZWZhdWx0VmFsdWUpOworICAgIHJldHVybiBwYXJzZVRv
RGVjaW1hbChzdHJpbmcsIERlY2ltYWw6Om5hbigpKTsKIH0KIAogYm9vbCBJbnB1dFR5cGU6OnBh
cnNlVG9EYXRlQ29tcG9uZW50cyhjb25zdCBTdHJpbmcmLCBEYXRlQ29tcG9uZW50cyopIGNvbnN0
CkBAIC00NzEsNyArNDYzLDcgQEAgYm9vbCBJbnB1dFR5cGU6OnBhcnNlVG9EYXRlQ29tcG9uZW50
cyhjb25zdCBTdHJpbmcmLCBEYXRlQ29tcG9uZW50cyopIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi1TdHJpbmcgSW5wdXRUeXBlOjpzZXJpYWxpemUoZG91YmxlKSBjb25zdAorU3RyaW5n
IElucHV0VHlwZTo6c2VyaWFsaXplKGNvbnN0IERlY2ltYWwmKSBjb25zdAogewogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBTdHJpbmcoKTsKQEAgLTg1OCwyOCArODUwLDI2
IEBAIHVuc2lnbmVkIElucHV0VHlwZTo6d2lkdGgoKSBjb25zdAogICAgIHJldHVybiAwOwogfQog
Ci12b2lkIElucHV0VHlwZTo6YXBwbHlTdGVwKGRvdWJsZSBjb3VudCwgQW55U3RlcEhhbmRsaW5n
IGFueVN0ZXBIYW5kbGluZywgVGV4dEZpZWxkRXZlbnRCZWhhdmlvciBldmVudEJlaGF2aW9yLCBF
eGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgSW5wdXRUeXBlOjphcHBseVN0ZXAoaW50IGNvdW50LCBB
bnlTdGVwSGFuZGxpbmcgYW55U3RlcEhhbmRsaW5nLCBUZXh0RmllbGRFdmVudEJlaGF2aW9yIGV2
ZW50QmVoYXZpb3IsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIFN0ZXBSYW5nZSBzdGVwUmFu
Z2UoY3JlYXRlU3RlcFJhbmdlKGFueVN0ZXBIYW5kbGluZykpOworICAgIGNvbnN0IFN0ZXBSYW5n
ZSBzdGVwUmFuZ2UoY3JlYXRlU3RlcFJhbmdlKGFueVN0ZXBIYW5kbGluZykpOwogICAgIGlmICgh
c3RlcFJhbmdlLmhhc1N0ZXAoKSkgewogICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgY29uc3QgZG91YmxlIG5hbiA9IG51bWVyaWNf
bGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpOwotICAgIHVuc2lnbmVkIGN1cnJlbnREZWNpbWFs
UGxhY2VzOwotICAgIGRvdWJsZSBjdXJyZW50ID0gcGFyc2VUb0RvdWJsZVdpdGhEZWNpbWFsUGxh
Y2VzKGVsZW1lbnQoKS0+dmFsdWUoKSwgbmFuLCAmY3VycmVudERlY2ltYWxQbGFjZXMpOwotICAg
IGlmICghaXNmaW5pdGUoY3VycmVudCkpIHsKKyAgICBjb25zdCBEZWNpbWFsIGN1cnJlbnQgPSBw
YXJzZVRvRGVjaW1hbChlbGVtZW50KCktPnZhbHVlKCkpOworICAgIGlmICghY3VycmVudC5pc0Zp
bml0ZSgpKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CiAgICAgICAgIHJldHVy
bjsKICAgICB9Ci0gICAgZG91YmxlIG5ld1ZhbHVlID0gY3VycmVudCArIHN0ZXBSYW5nZS5zdGVw
KCkgKiBjb3VudDsKLSAgICBpZiAoaXNpbmYobmV3VmFsdWUpKSB7CisgICAgRGVjaW1hbCBuZXdW
YWx1ZSA9IGN1cnJlbnQgKyBzdGVwUmFuZ2Uuc3RlcCgpICogY291bnQ7CisgICAgaWYgKCFuZXdW
YWx1ZS5pc0Zpbml0ZSgpKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBkb3VibGUgYWNjZXB0YWJsZUVycm9yVmFsdWUgPSBz
dGVwUmFuZ2UuYWNjZXB0YWJsZUVycm9yKCk7CisgICAgY29uc3QgRGVjaW1hbCBhY2NlcHRhYmxl
RXJyb3JWYWx1ZSA9IHN0ZXBSYW5nZS5hY2NlcHRhYmxlRXJyb3IoKTsKICAgICBpZiAobmV3VmFs
dWUgLSBzdGVwUmFuZ2UubWluaW11bSgpIDwgLWFjY2VwdGFibGVFcnJvclZhbHVlKSB7CiAgICAg
ICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CiAgICAgICAgIHJldHVybjsKQEAgLTg4OSw3ICs4
NzksNyBAQCB2b2lkIElucHV0VHlwZTo6YXBwbHlTdGVwKGRvdWJsZSBjb3VudCwgQW55U3RlcEhh
bmRsaW5nIGFueVN0ZXBIYW5kbGluZywgVGV4dEZpZQogCiAgICAgY29uc3QgQXRvbWljU3RyaW5n
JiBzdGVwU3RyaW5nID0gZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKHN0ZXBBdHRyKTsKICAg
ICBpZiAoIWVxdWFsSWdub3JpbmdDYXNlKHN0ZXBTdHJpbmcsICJhbnkiKSkKLSAgICAgICAgbmV3
VmFsdWUgPSBzdGVwUmFuZ2UuYWxpZ25WYWx1ZUZvclN0ZXAoY3VycmVudCwgY3VycmVudERlY2lt
YWxQbGFjZXMsIG5ld1ZhbHVlKTsKKyAgICAgICAgbmV3VmFsdWUgPSBzdGVwUmFuZ2UuYWxpZ25W
YWx1ZUZvclN0ZXAoY3VycmVudCwgbmV3VmFsdWUpOwogCiAgICAgaWYgKG5ld1ZhbHVlIC0gc3Rl
cFJhbmdlLm1heGltdW0oKSA+IGFjY2VwdGFibGVFcnJvclZhbHVlKSB7CiAgICAgICAgIGVjID0g
SU5WQUxJRF9TVEFURV9FUlI7CkBAIC04OTgsMTMgKzg4OCwxMyBAQCB2b2lkIElucHV0VHlwZTo6
YXBwbHlTdGVwKGRvdWJsZSBjb3VudCwgQW55U3RlcEhhbmRsaW5nIGFueVN0ZXBIYW5kbGluZywg
VGV4dEZpZQogICAgIGlmIChuZXdWYWx1ZSA+IHN0ZXBSYW5nZS5tYXhpbXVtKCkpCiAgICAgICAg
IG5ld1ZhbHVlID0gc3RlcFJhbmdlLm1heGltdW0oKTsKIAotICAgIGVsZW1lbnQoKS0+c2V0VmFs
dWVBc051bWJlcihuZXdWYWx1ZSwgZWMsIGV2ZW50QmVoYXZpb3IpOworICAgIGVsZW1lbnQoKS0+
c2V0VmFsdWVBc051bWJlcihwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZShuZXdWYWx1ZS50b1N0
cmluZygpKSwgZWMsIGV2ZW50QmVoYXZpb3IpOwogCiAgICAgaWYgKEFYT2JqZWN0Q2FjaGU6OmFj
Y2Vzc2liaWxpdHlFbmFibGVkKCkpCiAgICAgICAgICBlbGVtZW50KCktPmRvY3VtZW50KCktPmF4
T2JqZWN0Q2FjaGUoKS0+cG9zdE5vdGlmaWNhdGlvbihlbGVtZW50KCktPnJlbmRlcmVyKCksIEFY
T2JqZWN0Q2FjaGU6OkFYVmFsdWVDaGFuZ2VkLCB0cnVlKTsKIH0KIAotYm9vbCBJbnB1dFR5cGU6
OmdldEFsbG93ZWRWYWx1ZVN0ZXAoZG91YmxlKiBzdGVwKSBjb25zdAorYm9vbCBJbnB1dFR5cGU6
OmdldEFsbG93ZWRWYWx1ZVN0ZXAoRGVjaW1hbCogc3RlcCkgY29uc3QKIHsKICAgICBTdGVwUmFu
Z2Ugc3RlcFJhbmdlKGNyZWF0ZVN0ZXBSYW5nZShSZWplY3RBbnkpKTsKICAgICAqc3RlcCA9IHN0
ZXBSYW5nZS5zdGVwKCk7CkBAIC05NzAsMTQgKzk2MCwxNCBAQCB2b2lkIElucHV0VHlwZTo6c3Rl
cFVwRnJvbVJlbmRlcmVyKGludCBuKQogICAgIGlmICghbikKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgU3RlcFJhbmdlIHN0ZXBSYW5nZShjcmVhdGVTdGVwUmFuZ2UoQW55SXNEZWZhdWx0U3RlcCkp
OworICAgIGNvbnN0IFN0ZXBSYW5nZSBzdGVwUmFuZ2UoY3JlYXRlU3RlcFJhbmdlKEFueUlzRGVm
YXVsdFN0ZXApKTsKIAogICAgIC8vIEZJWE1FOiBOb3QgYW55IGNoYW5nZXMgYWZ0ZXIgc3RlcHBp
bmcsIGV2ZW4gaWYgaXQgaXMgYW4gaW52YWxpZCB2YWx1ZSwgbWF5IGJlIGJldHRlci4KICAgICAv
LyAoZS5nLiBTdGVwcGluZy11cCBmb3IgPGlucHV0IHR5cGU9Im51bWJlciIgdmFsdWU9ImZvbyIg
c3RlcD0iYW55IiAvPiA9PiAiZm9vIikKICAgICBpZiAoIXN0ZXBSYW5nZS5oYXNTdGVwKCkpCiAg
ICAgICByZXR1cm47CiAKLSAgICBkb3VibGUgc3RlcCA9IHN0ZXBSYW5nZS5zdGVwKCk7CisgICAg
Y29uc3QgRGVjaW1hbCBzdGVwID0gc3RlcFJhbmdlLnN0ZXAoKTsKIAogICAgIGludCBzaWduOwog
ICAgIGlmIChzdGVwID4gMCkKQEAgLTk4NywzMyArOTc3LDI5IEBAIHZvaWQgSW5wdXRUeXBlOjpz
dGVwVXBGcm9tUmVuZGVyZXIoaW50IG4pCiAgICAgZWxzZQogICAgICAgICBzaWduID0gMDsKIAot
ICAgIGNvbnN0IGRvdWJsZSBuYW4gPSBudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4o
KTsKLSAgICBTdHJpbmcgY3VycmVudFN0cmluZ1ZhbHVlID0gZWxlbWVudCgpLT52YWx1ZSgpOwot
ICAgIGRvdWJsZSBjdXJyZW50ID0gcGFyc2VUb0RvdWJsZShjdXJyZW50U3RyaW5nVmFsdWUsIG5h
bik7Ci0gICAgaWYgKCFpc2Zpbml0ZShjdXJyZW50KSkgeworICAgIERlY2ltYWwgY3VycmVudCA9
IHBhcnNlVG9EZWNpbWFsKGVsZW1lbnQoKS0+dmFsdWUoKSk7CisgICAgaWYgKCFjdXJyZW50Lmlz
RmluaXRlKCkpIHsKICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYzsKICAgICAgICAgY3VycmVudCA9
IGRlZmF1bHRWYWx1ZUZvclN0ZXBVcCgpOwotICAgICAgICBkb3VibGUgbmV4dERpZmYgPSBzdGVw
ICogbjsKKyAgICAgICAgY29uc3QgRGVjaW1hbCBuZXh0RGlmZiA9IHN0ZXAgKiBuOwogICAgICAg
ICBpZiAoY3VycmVudCA8IHN0ZXBSYW5nZS5taW5pbXVtKCkgLSBuZXh0RGlmZikKICAgICAgICAg
ICAgIGN1cnJlbnQgPSBzdGVwUmFuZ2UubWluaW11bSgpIC0gbmV4dERpZmY7CiAgICAgICAgIGlm
IChjdXJyZW50ID4gc3RlcFJhbmdlLm1heGltdW0oKSAtIG5leHREaWZmKQogICAgICAgICAgICAg
Y3VycmVudCA9IHN0ZXBSYW5nZS5tYXhpbXVtKCkgLSBuZXh0RGlmZjsKLSAgICAgICAgZWxlbWVu
dCgpLT5zZXRWYWx1ZUFzTnVtYmVyKGN1cnJlbnQsIGVjLCBEaXNwYXRjaElucHV0QW5kQ2hhbmdl
RXZlbnQpOworICAgICAgICBlbGVtZW50KCktPnNldFZhbHVlQXNOdW1iZXIocGFyc2VUb0RvdWJs
ZUZvck51bWJlclR5cGUoY3VycmVudC50b1N0cmluZygpKSwgZWMsIERpc3BhdGNoSW5wdXRBbmRD
aGFuZ2VFdmVudCk7CiAgICAgfQogICAgIGlmICgoc2lnbiA+IDAgJiYgY3VycmVudCA8IHN0ZXBS
YW5nZS5taW5pbXVtKCkpIHx8IChzaWduIDwgMCAmJiBjdXJyZW50ID4gc3RlcFJhbmdlLm1heGlt
dW0oKSkpCi0gICAgICAgIGVsZW1lbnQoKS0+c2V0VmFsdWUoc2VyaWFsaXplKHNpZ24gPiAwID8g
c3RlcFJhbmdlLm1pbmltdW0oKSA6IHN0ZXBSYW5nZS5tYXhpbXVtKCkpLCBEaXNwYXRjaElucHV0
QW5kQ2hhbmdlRXZlbnQpOworICAgICAgICBlbGVtZW50KCktPnNldFZhbHVlKHNlcmlhbGl6ZUZv
ck51bWJlclR5cGUoc2lnbiA+IDAgPyBzdGVwUmFuZ2UubWluaW11bSgpIDogc3RlcFJhbmdlLm1h
eGltdW0oKSksIERpc3BhdGNoSW5wdXRBbmRDaGFuZ2VFdmVudCk7CiAgICAgZWxzZSB7CiAgICAg
ICAgIEV4Y2VwdGlvbkNvZGUgZWM7CiAgICAgICAgIGlmIChzdGVwTWlzbWF0Y2goZWxlbWVudCgp
LT52YWx1ZSgpKSkgewotICAgICAgICAgICAgQVNTRVJUKHN0ZXApOwotICAgICAgICAgICAgZG91
YmxlIG5ld1ZhbHVlOwotICAgICAgICAgICAgZG91YmxlIHNjYWxlID0gcG93KDEwLjAsIHN0YXRp
Y19jYXN0PGRvdWJsZT4obWF4KHN0ZXBSYW5nZS5zdGVwRGVjaW1hbFBsYWNlcygpLCBzdGVwUmFu
Z2Uuc3RlcEJhc2VEZWNpbWFsUGxhY2VzKCkpKSk7Ci0gICAgICAgICAgICBkb3VibGUgYmFzZSA9
IHN0ZXBSYW5nZS5zdGVwQmFzZSgpOwotCisgICAgICAgICAgICBBU1NFUlQoIXN0ZXAuaXNaZXJv
KCkpOworICAgICAgICAgICAgY29uc3QgRGVjaW1hbCBiYXNlID0gc3RlcFJhbmdlLnN0ZXBCYXNl
KCk7CisgICAgICAgICAgICBEZWNpbWFsIG5ld1ZhbHVlOwogICAgICAgICAgICAgaWYgKHNpZ24g
PCAwKQotICAgICAgICAgICAgICAgIG5ld1ZhbHVlID0gcm91bmQoKGJhc2UgKyBmbG9vcigoY3Vy
cmVudCAtIGJhc2UpIC8gc3RlcCkgKiBzdGVwKSAqIHNjYWxlKSAvIHNjYWxlOworICAgICAgICAg
ICAgICAgIG5ld1ZhbHVlID0gYmFzZSArICgoY3VycmVudCAtIGJhc2UpIC8gc3RlcCkuZmxvb3Io
KSAqIHN0ZXA7CiAgICAgICAgICAgICBlbHNlIGlmIChzaWduID4gMCkKLSAgICAgICAgICAgICAg
ICBuZXdWYWx1ZSA9IHJvdW5kKChiYXNlICsgY2VpbCgoY3VycmVudCAtIGJhc2UpIC8gc3RlcCkg
KiBzdGVwKSAqIHNjYWxlKSAvIHNjYWxlOworICAgICAgICAgICAgICAgIG5ld1ZhbHVlID0gYmFz
ZSArICgoY3VycmVudCAtIGJhc2UpIC8gc3RlcCkuY2VpbCgpICogc3RlcDsKICAgICAgICAgICAg
IGVsc2UKICAgICAgICAgICAgICAgICBuZXdWYWx1ZSA9IGN1cnJlbnQ7CiAKQEAgLTEwMjIsOCAr
MTAwOCw3IEBAIHZvaWQgSW5wdXRUeXBlOjpzdGVwVXBGcm9tUmVuZGVyZXIoaW50IG4pCiAgICAg
ICAgICAgICBpZiAobmV3VmFsdWUgPiBzdGVwUmFuZ2UubWF4aW11bSgpKQogICAgICAgICAgICAg
ICAgIG5ld1ZhbHVlID0gc3RlcFJhbmdlLm1heGltdW0oKTsKIAotICAgICAgICAgICAgZWxlbWVu
dCgpLT5zZXRWYWx1ZUFzTnVtYmVyKG5ld1ZhbHVlLCBlYywgbiA9PSAxIHx8IG4gPT0gLTEgPyBE
aXNwYXRjaElucHV0QW5kQ2hhbmdlRXZlbnQgOiBEaXNwYXRjaE5vRXZlbnQpOwotICAgICAgICAg
ICAgY3VycmVudCA9IG5ld1ZhbHVlOworICAgICAgICAgICAgZWxlbWVudCgpLT5zZXRWYWx1ZUFz
TnVtYmVyKHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKG5ld1ZhbHVlLnRvU3RyaW5nKCkpLCBl
YywgbiA9PSAxIHx8IG4gPT0gLTEgPyBEaXNwYXRjaElucHV0QW5kQ2hhbmdlRXZlbnQgOiBEaXNw
YXRjaE5vRXZlbnQpOwogICAgICAgICAgICAgaWYgKG4gPiAxKQogICAgICAgICAgICAgICAgIGFw
cGx5U3RlcChuIC0gMSwgQW55SXNEZWZhdWx0U3RlcCwgRGlzcGF0Y2hJbnB1dEFuZENoYW5nZUV2
ZW50LCBlYyk7CiAgICAgICAgICAgICBlbHNlIGlmIChuIDwgLTEpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5
cGUuaAppbmRleCA1NDE2N2YzZTQ1OWM5YWYzZjQxZDM5ZDdiMWY4YjIyNDBhYzYwMzAyLi41NGZh
MGFmNGMzMzgzYzM0Njc4ZmI4NTVmZjhlYjY3YTZhNGY4ZjM3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0lucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRU
eXBlLmgKQEAgLTE1NSwxMiArMTU1LDEyIEBAIHB1YmxpYzoKICAgICBib29sIHJhbmdlT3ZlcmZs
b3coY29uc3QgU3RyaW5nJikgY29uc3Q7CiAgICAgYm9vbCBpc0luUmFuZ2UoY29uc3QgU3RyaW5n
JikgY29uc3Q7CiAgICAgYm9vbCBpc091dE9mUmFuZ2UoY29uc3QgU3RyaW5nJikgY29uc3Q7Ci0g
ICAgdmlydHVhbCBkb3VibGUgZGVmYXVsdFZhbHVlRm9yU3RlcFVwKCkgY29uc3Q7CisgICAgdmly
dHVhbCBEZWNpbWFsIGRlZmF1bHRWYWx1ZUZvclN0ZXBVcCgpIGNvbnN0OwogICAgIGRvdWJsZSBt
aW5pbXVtKCkgY29uc3Q7CiAgICAgZG91YmxlIG1heGltdW0oKSBjb25zdDsKICAgICB2aXJ0dWFs
IGJvb2wgc2l6ZVNob3VsZEluY2x1ZGVEZWNvcmF0aW9uKGludCBkZWZhdWx0U2l6ZSwgaW50JiBw
cmVmZXJyZWRTaXplKSBjb25zdDsKICAgICBib29sIHN0ZXBNaXNtYXRjaChjb25zdCBTdHJpbmcm
KSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgZ2V0QWxsb3dlZFZhbHVlU3RlcChkb3VibGUqKSBj
b25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0QWxsb3dlZFZhbHVlU3RlcChEZWNpbWFsKikgY29u
c3Q7CiAgICAgdmlydHVhbCBTdGVwUmFuZ2UgY3JlYXRlU3RlcFJhbmdlKEFueVN0ZXBIYW5kbGlu
ZykgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHN0ZXBVcChpbnQsIEV4Y2VwdGlvbkNvZGUmKTsK
ICAgICB2aXJ0dWFsIHZvaWQgc3RlcFVwRnJvbVJlbmRlcmVyKGludCk7CkBAIC0yNTgsMTUgKzI1
OCwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgZGVmYXVsdFRvb2xUaXAoKSBjb25z
dDsKIAogICAgIC8vIFBhcnNlcyB0aGUgc3BlY2lmaWVkIHN0cmluZyBmb3IgdGhlIHR5cGUsIGFu
ZCByZXR1cm4KLSAgICAvLyB0aGUgZG91YmxlIHZhbHVlIGZvciB0aGUgcGFyc2luZyByZXN1bHQg
aWYgdGhlIHBhcnNpbmcKKyAgICAvLyB0aGUgZGVjaW1hbCB2YWx1ZSBmb3IgdGhlIHBhcnNpbmcg
cmVzdWx0IGlmIHRoZSBwYXJzaW5nCiAgICAgLy8gc3VjY2VlZHM7IFJldHVybnMgZGVmYXVsdFZh
bHVlIG90aGVyd2lzZS4gVGhpcyBmdW5jdGlvbiBjYW4KICAgICAvLyByZXR1cm4gTmFOIG9yIElu
ZmluaXR5IG9ubHkgaWYgZGVmYXVsdFZhbHVlIGlzIE5hTiBvciBJbmZpbml0eS4KLSAgICB2aXJ0
dWFsIGRvdWJsZSBwYXJzZVRvRG91YmxlKGNvbnN0IFN0cmluZyYsIGRvdWJsZSBkZWZhdWx0VmFs
dWUpIGNvbnN0OwotCi0gICAgLy8gUGFyc2VzIHRoZSBzcGVjaWZpZWQgc3RyaW5nIGZvciB0aGUg
dHlwZSBhcyBwYXJzZVRvRG91YmxlKCkgZG9lcy4KLSAgICAvLyBJbiBhZGRpdGlvbiwgaXQgc3Rv
cmVzIHRoZSBudW1iZXIgb2YgZGlnaXRzIGFmdGVyIHRoZSBkZWNpbWFsIHBvaW50Ci0gICAgLy8g
aW50byAqZGVjaW1hbFBsYWNlcy4KLSAgICB2aXJ0dWFsIGRvdWJsZSBwYXJzZVRvRG91YmxlV2l0
aERlY2ltYWxQbGFjZXMoY29uc3QgU3RyaW5nJiwgZG91YmxlIGRlZmF1bHRWYWx1ZSwgdW5zaWdu
ZWQqIGRlY2ltYWxQbGFjZXMpIGNvbnN0OworICAgIHZpcnR1YWwgRGVjaW1hbCBwYXJzZVRvRGVj
aW1hbChjb25zdCBTdHJpbmcmLCBjb25zdCBEZWNpbWFsJiBkZWZhdWx0VmFsdWUpIGNvbnN0Owog
CiAgICAgLy8gUGFyc2VzIHRoZSBzcGVjaWZpZWQgc3RyaW5nIGZvciB0aGlzIElucHV0VHlwZSwg
YW5kIHJldHVybnMgdHJ1ZSBpZiBpdAogICAgIC8vIGlzIHN1Y2Nlc3NmdWxseSBwYXJzZWQuIEFu
IGluc3RhbmNlIHBvaW50ZWQgYnkgdGhlIERhdGVDb21wb25lbnRzKgpAQCAtMjc3LDcgKzI3Miw3
IEBAIHB1YmxpYzoKICAgICAvLyBDcmVhdGUgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhl
IHNwZWNpZmllZCBkb3VibGUgdmFsdWUgZm9yIHRoZQogICAgIC8vIGlucHV0IHR5cGUuIElmIE5h
TiBvciBJbmZpbml0eSBpcyBzcGVjaWZpZWQsIHRoaXMgcmV0dXJucyBhbiBlbXB0eQogICAgIC8v
IHN0cmluZy4gVGhpcyBzaG91bGQgbm90IGJlIGNhbGxlZCBmb3IgdHlwZXMgd2l0aG91dCB2YWx1
ZUFzTnVtYmVyLgotICAgIHZpcnR1YWwgU3RyaW5nIHNlcmlhbGl6ZShkb3VibGUpIGNvbnN0Owor
ICAgIHZpcnR1YWwgU3RyaW5nIHNlcmlhbGl6ZShjb25zdCBEZWNpbWFsJikgY29uc3Q7CiAKICAg
ICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNJbmRldGVybWluYXRlQXBwZWFyYW5jZSgpIGNvbnN0Owog
CkBAIC0yOTEsMTAgKzI4NiwxMSBAQCBwcm90ZWN0ZWQ6CiAgICAgSFRNTElucHV0RWxlbWVudCog
ZWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudDsgfQogICAgIHZvaWQgZGlzcGF0Y2hT
aW11bGF0ZWRDbGlja0lmQWN0aXZlKEtleWJvYXJkRXZlbnQqKSBjb25zdDsKICAgICBDaHJvbWUq
IGNocm9tZSgpIGNvbnN0OworICAgIERlY2ltYWwgcGFyc2VUb0RlY2ltYWwoY29uc3QgU3RyaW5n
JikgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgLy8gSGVscGVyIGZvciBzdGVwVXAoKS9zdGVwRG93
bigpLiBBZGRzIHN0ZXAgdmFsdWUgKiBjb3VudCB0byB0aGUgY3VycmVudCB2YWx1ZS4KLSAgICB2
b2lkIGFwcGx5U3RlcChkb3VibGUgY291bnQsIEFueVN0ZXBIYW5kbGluZywgVGV4dEZpZWxkRXZl
bnRCZWhhdmlvciwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgYXBwbHlTdGVwKGludCBjb3Vu
dCwgQW55U3RlcEhhbmRsaW5nLCBUZXh0RmllbGRFdmVudEJlaGF2aW9yLCBFeGNlcHRpb25Db2Rl
Jik7CiAKICAgICAvLyBSYXcgcG9pbnRlciBiZWNhdXNlIHRoZSBIVE1MSW5wdXRFbGVtZW50IG9i
amVjdCBvd25zIHRoaXMgSW5wdXRUeXBlIG9iamVjdC4KICAgICBIVE1MSW5wdXRFbGVtZW50KiBt
X2VsZW1lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL051bWJlcklucHV0VHlw
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL051bWJlcklucHV0VHlwZS5jcHAKaW5kZXggOTQx
ZDI1MmQ0YzJkYTIwZTJmYjAwYjVkOGE4YTY5YmYyOTlmNWJlMC4uZjhmNjQ3NWIyZDQ5NWViNmUw
NTYwYTA0MGJjZTkwNTY0NjAxNWI5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9O
dW1iZXJJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTnVtYmVySW5wdXRU
eXBlLmNwcApAQCAtNTAsMjMgKzUwLDI4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5h
bWVzcGFjZSBIVE1MTmFtZXM7CiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCi1zdGF0aWMgY29uc3Qg
ZG91YmxlIG51bWJlckRlZmF1bHRTdGVwID0gMS4wOwotc3RhdGljIGNvbnN0IGRvdWJsZSBudW1i
ZXJEZWZhdWx0U3RlcEJhc2UgPSAwLjA7Ci1zdGF0aWMgY29uc3QgZG91YmxlIG51bWJlclN0ZXBT
Y2FsZUZhY3RvciA9IDEuMDsKK3N0YXRpYyBjb25zdCBpbnQgbnVtYmVyRGVmYXVsdFN0ZXAgPSAx
Oworc3RhdGljIGNvbnN0IGludCBudW1iZXJEZWZhdWx0U3RlcEJhc2UgPSAwOworc3RhdGljIGNv
bnN0IGludCBudW1iZXJTdGVwU2NhbGVGYWN0b3IgPSAxOwogCi1zdGF0aWMgdW5zaWduZWQgbGVu
Z3RoQmVmb3JlRGVjaW1hbFBvaW50KGRvdWJsZSB2YWx1ZSkKK3N0YXRpYyB1bnNpZ25lZCBjYWxj
dWxhdGVSZW5kZXJTaXplKGNvbnN0IERlY2ltYWwmIHZhbHVlKQogewotICAgIC8vIElmIHZhbHVl
IGlzIG5lZ2F0aXZlLCAnLScgc2hvdWxkIGJlIGNvdW50ZWQuCi0KLSAgICBkb3VibGUgYWJzb2x1
dGVWYWx1ZSA9IGZhYnModmFsdWUpOwotICAgIGlmIChhYnNvbHV0ZVZhbHVlIDwgMSkKLSAgICAg
ICAgcmV0dXJuIHZhbHVlIDwgMCA/IDIgOiAxOwotCi0gICAgdW5zaWduZWQgbGVuZ3RoID0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGxvZzEwKGZsb29yKGFic29sdXRlVmFsdWUpKSkgKyAxOwotICAg
IGlmICh2YWx1ZSA8IDApCi0gICAgICAgIGxlbmd0aCArPSAxOworICAgIEFTU0VSVCh2YWx1ZS5p
c0Zpbml0ZSgpKTsKKyAgICBjb25zdCB1bnNpZ25lZCBkaWdpdHNTaXplID0gU3RyaW5nOjpudW1i
ZXIodmFsdWUudmFsdWUoKS5jb2VmZmljaWVudCgpKS5sZW5ndGgoKTsKKyAgICBjb25zdCB1bnNp
Z25lZCBzaWduU2l6ZSA9IHZhbHVlLmlzTWludXMoKSA/IDEgOiAwOworICAgIGlmICghdmFsdWUu
ZXhwb25lbnQoKSkKKyAgICAgICAgcmV0dXJuIHNpZ25TaXplICsgZGlnaXRzU2l6ZTsKKyAgICBj
b25zdCBpbnQgYWRqdXN0ZWRFeHBvbmVudCA9IHZhbHVlLmV4cG9uZW50KCkgKyBkaWdpdHNTaXpl
IC0gMTsKKyAgICBpZiAoYWRqdXN0ZWRFeHBvbmVudCA+PSAwKSB7CisgICAgICAgIC8vIEluIGNh
c2Ugb2YgIjEyMy40NTYiCisgICAgICAgIGNvbnN0IHVuc2lnbmVkIGRvdFNpemUgPSAxOworICAg
ICAgICByZXR1cm4gc2lnblNpemUgKyBkaWdpdHNTaXplICsgZG90U2l6ZTsKKyAgICB9CiAKLSAg
ICByZXR1cm4gbGVuZ3RoOworICAgIC8vIEluIGNhc2Ugb2YgIjAuMDAwMTIzNDUiCisgICAgY29u
c3QgdW5zaWduZWQgbGVhZGluZ1plcm9BbmREb3QgPSAyOworICAgIGNvbnN0IHVuc2lnbmVkIG51
bWJlck9mWmVyb0FmdGVyRG90ID0gLWFkanVzdGVkRXhwb25lbnQgLSAxOworICAgIHJldHVybiBz
aWduU2l6ZSArIGxlYWRpbmdaZXJvQW5kRG90ICsgbnVtYmVyT2ZaZXJvQWZ0ZXJEb3QgKyBkaWdp
dHNTaXplOwogfQogCiBQYXNzT3duUHRyPElucHV0VHlwZT4gTnVtYmVySW5wdXRUeXBlOjpjcmVh
dGUoSFRNTElucHV0RWxlbWVudCogZWxlbWVudCkKQEAgLTgxLDcgKzg2LDcgQEAgY29uc3QgQXRv
bWljU3RyaW5nJiBOdW1iZXJJbnB1dFR5cGU6OmZvcm1Db250cm9sVHlwZSgpIGNvbnN0CiAKIGRv
dWJsZSBOdW1iZXJJbnB1dFR5cGU6OnZhbHVlQXNOdW1iZXIoKSBjb25zdAogewotICAgIHJldHVy
biBwYXJzZVRvRG91YmxlKGVsZW1lbnQoKS0+dmFsdWUoKSwgbnVtZXJpY19saW1pdHM8ZG91Ymxl
Pjo6cXVpZXRfTmFOKCkpOworICAgIHJldHVybiBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZShl
bGVtZW50KCktPnZhbHVlKCkpOwogfQogCiB2b2lkIE51bWJlcklucHV0VHlwZTo6c2V0VmFsdWVB
c051bWJlcihkb3VibGUgbmV3VmFsdWUsIFRleHRGaWVsZEV2ZW50QmVoYXZpb3IgZXZlbnRCZWhh
dmlvciwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CkBAIC05NCw3ICs5OSw3IEBAIHZvaWQgTnVt
YmVySW5wdXRUeXBlOjpzZXRWYWx1ZUFzTnVtYmVyKGRvdWJsZSBuZXdWYWx1ZSwgVGV4dEZpZWxk
RXZlbnRCZWhhdmlvciBlCiAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CiAgICAgICAg
IHJldHVybjsKICAgICB9Ci0gICAgZWxlbWVudCgpLT5zZXRWYWx1ZShzZXJpYWxpemUobmV3VmFs
dWUpLCBldmVudEJlaGF2aW9yKTsKKyAgICBlbGVtZW50KCktPnNldFZhbHVlKHNlcmlhbGl6ZUZv
ck51bWJlclR5cGUobmV3VmFsdWUpLCBldmVudEJlaGF2aW9yKTsKIH0KIAogYm9vbCBOdW1iZXJJ
bnB1dFR5cGU6OnR5cGVNaXNtYXRjaEZvcihjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdApAQCAt
MTExLDE0ICsxMTYsMTEgQEAgYm9vbCBOdW1iZXJJbnB1dFR5cGU6OnR5cGVNaXNtYXRjaCgpIGNv
bnN0CiBTdGVwUmFuZ2UgTnVtYmVySW5wdXRUeXBlOjpjcmVhdGVTdGVwUmFuZ2UoQW55U3RlcEhh
bmRsaW5nIGFueVN0ZXBIYW5kbGluZykgY29uc3QKIHsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KGNvbnN0IFN0ZXBSYW5nZTo6U3RlcERlc2NyaXB0aW9uLCBzdGVwRGVzY3JpcHRpb24sIChudW1i
ZXJEZWZhdWx0U3RlcCwgbnVtYmVyRGVmYXVsdFN0ZXBCYXNlLCBudW1iZXJTdGVwU2NhbGVGYWN0
b3IpKTsKLQotICAgIHVuc2lnbmVkIHN0ZXBCYXNlRGVjaW1hbFBsYWNlczsKLSAgICBkb3VibGUg
c3RlcEJhc2VWYWx1ZSA9IHBhcnNlVG9Eb3VibGVXaXRoRGVjaW1hbFBsYWNlcyhlbGVtZW50KCkt
PmZhc3RHZXRBdHRyaWJ1dGUobWluQXR0ciksIG51bWJlckRlZmF1bHRTdGVwQmFzZSwgJnN0ZXBC
YXNlRGVjaW1hbFBsYWNlcyk7Ci0gICAgU3RlcFJhbmdlOjpEb3VibGVXaXRoRGVjaW1hbFBsYWNl
cyBzdGVwQmFzZShzdGVwQmFzZVZhbHVlLCBtaW4oc3RlcEJhc2VEZWNpbWFsUGxhY2VzLCAxNnUp
KTsKLSAgICBkb3VibGUgbWluaW11bSA9IHBhcnNlVG9Eb3VibGUoZWxlbWVudCgpLT5mYXN0R2V0
QXR0cmlidXRlKG1pbkF0dHIpLCAtbnVtZXJpY19saW1pdHM8ZmxvYXQ+OjptYXgoKSk7Ci0gICAg
ZG91YmxlIG1heGltdW0gPSBwYXJzZVRvRG91YmxlKGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0
ZShtYXhBdHRyKSwgbnVtZXJpY19saW1pdHM8ZmxvYXQ+OjptYXgoKSk7Ci0KLSAgICBTdGVwUmFu
Z2U6OkRvdWJsZVdpdGhEZWNpbWFsUGxhY2VzT3JNaXNzaW5nIHN0ZXAgPSBTdGVwUmFuZ2U6OnBh
cnNlU3RlcChhbnlTdGVwSGFuZGxpbmcsIHN0ZXBEZXNjcmlwdGlvbiwgZWxlbWVudCgpLT5mYXN0
R2V0QXR0cmlidXRlKHN0ZXBBdHRyKSk7CisgICAgY29uc3QgRGVjaW1hbCBmbG9hdE1heCA9IHBh
cnNlVG9EZWNpbWFsRm9yTnVtYmVyVHlwZShzZXJpYWxpemVGb3JOdW1iZXJUeXBlKG51bWVyaWNf
bGltaXRzPGZsb2F0Pjo6bWF4KCkpKTsKKyAgICBjb25zdCBEZWNpbWFsIHN0ZXBCYXNlID0gcGFy
c2VUb0RlY2ltYWxGb3JOdW1iZXJUeXBlKGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShtaW5B
dHRyKSwgbnVtYmVyRGVmYXVsdFN0ZXBCYXNlKTsKKyAgICBjb25zdCBEZWNpbWFsIG1pbmltdW0g
PSBwYXJzZVRvRGVjaW1hbEZvck51bWJlclR5cGUoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRl
KG1pbkF0dHIpLCAtZmxvYXRNYXgpOworICAgIGNvbnN0IERlY2ltYWwgbWF4aW11bSA9IHBhcnNl
VG9EZWNpbWFsRm9yTnVtYmVyVHlwZShlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUobWF4QXR0
ciksIGZsb2F0TWF4KTsKKyAgICBjb25zdCBTdGVwUmFuZ2U6OkRlY2ltYWxPck1pc3Npbmcgc3Rl
cCA9IFN0ZXBSYW5nZTo6cGFyc2VTdGVwKGFueVN0ZXBIYW5kbGluZywgc3RlcERlc2NyaXB0aW9u
LCBlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUoc3RlcEF0dHIpKTsKICAgICByZXR1cm4gU3Rl
cFJhbmdlKHN0ZXBCYXNlLCBtaW5pbXVtLCBtYXhpbXVtLCBzdGVwLCBzdGVwRGVzY3JpcHRpb24p
OwogfQogCkBAIC0xMjYsNDcgKzEyOCwxOSBAQCBib29sIE51bWJlcklucHV0VHlwZTo6c2l6ZVNo
b3VsZEluY2x1ZGVEZWNvcmF0aW9uKGludCBkZWZhdWx0U2l6ZSwgaW50JiBwcmVmZXJyZQogewog
ICAgIHByZWZlcnJlZFNpemUgPSBkZWZhdWx0U2l6ZTsKIAotICAgIHVuc2lnbmVkIG1pblZhbHVl
RGVjaW1hbFBsYWNlczsKLSAgICBTdHJpbmcgbWluVmFsdWUgPSBlbGVtZW50KCktPmZhc3RHZXRB
dHRyaWJ1dGUobWluQXR0cik7Ci0gICAgZG91YmxlIG1pblZhbHVlRG91YmxlID0gcGFyc2VUb0Rv
dWJsZUZvck51bWJlclR5cGVXaXRoRGVjaW1hbFBsYWNlcyhtaW5WYWx1ZSwgJm1pblZhbHVlRGVj
aW1hbFBsYWNlcyk7Ci0gICAgaWYgKCFpc2Zpbml0ZShtaW5WYWx1ZURvdWJsZSkpCisgICAgU3Ry
aW5nIHN0ZXBTdHJpbmcgPSBlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUoc3RlcEF0dHIpOwor
ICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShzdGVwU3RyaW5nLCAiYW55IikpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIHVuc2lnbmVkIG1heFZhbHVlRGVjaW1hbFBsYWNlczsKLSAgICBT
dHJpbmcgbWF4VmFsdWUgPSBlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUobWF4QXR0cik7Ci0g
ICAgZG91YmxlIG1heFZhbHVlRG91YmxlID0gcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGVXaXRo
RGVjaW1hbFBsYWNlcyhtYXhWYWx1ZSwgJm1heFZhbHVlRGVjaW1hbFBsYWNlcyk7Ci0gICAgaWYg
KCFpc2Zpbml0ZShtYXhWYWx1ZURvdWJsZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
IGlmIChtYXhWYWx1ZURvdWJsZSA8IG1pblZhbHVlRG91YmxlKSB7Ci0gICAgICAgIG1heFZhbHVl
RG91YmxlID0gbWluVmFsdWVEb3VibGU7Ci0gICAgICAgIG1heFZhbHVlRGVjaW1hbFBsYWNlcyA9
IG1pblZhbHVlRGVjaW1hbFBsYWNlczsKLSAgICB9Ci0KLSAgICBTdHJpbmcgc3RlcFZhbHVlID0g
ZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKHN0ZXBBdHRyKTsKLSAgICBpZiAoZXF1YWxJZ25v
cmluZ0Nhc2Uoc3RlcFZhbHVlLCAiYW55IikpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB1
bnNpZ25lZCBzdGVwVmFsdWVEZWNpbWFsUGxhY2VzOwotICAgIGRvdWJsZSBzdGVwVmFsdWVEb3Vi
bGUgPSBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZVdpdGhEZWNpbWFsUGxhY2VzKHN0ZXBWYWx1
ZSwgJnN0ZXBWYWx1ZURlY2ltYWxQbGFjZXMpOwotICAgIGlmICghaXNmaW5pdGUoc3RlcFZhbHVl
RG91YmxlKSkgewotICAgICAgICBzdGVwVmFsdWVEb3VibGUgPSAxOwotICAgICAgICBzdGVwVmFs
dWVEZWNpbWFsUGxhY2VzID0gMDsKKyAgICBjb25zdCBEZWNpbWFsIG1pbmltdW0gPSBwYXJzZVRv
RGVjaW1hbEZvck51bWJlclR5cGUoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1pbkF0dHIp
KTsKKyAgICBjb25zdCBEZWNpbWFsIG1heGltdW0gPSBwYXJzZVRvRGVjaW1hbEZvck51bWJlclR5
cGUoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1heEF0dHIpKTsKKyAgICBjb25zdCBEZWNp
bWFsIHN0ZXAgPSBwYXJzZVRvRGVjaW1hbEZvck51bWJlclR5cGUoc3RlcFN0cmluZywgMSk7Cisg
ICAgaWYgKG1pbmltdW0uaXNGaW5pdGUoKSAmJiBtYXhpbXVtLmlzRmluaXRlKCkgJiYgc3RlcC5p
c0Zpbml0ZSgpKSB7CisgICAgICAgIHByZWZlcnJlZFNpemUgPSBtYXgobWF4KGNhbGN1bGF0ZVJl
bmRlclNpemUobWluaW11bSksIGNhbGN1bGF0ZVJlbmRlclNpemUobWF4aW11bSkpLCBjYWxjdWxh
dGVSZW5kZXJTaXplKHN0ZXApKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAg
dW5zaWduZWQgbGVuZ3RoID0gbGVuZ3RoQmVmb3JlRGVjaW1hbFBvaW50KG1pblZhbHVlRG91Ymxl
KTsKLSAgICBsZW5ndGggPSBtYXgobGVuZ3RoLCBsZW5ndGhCZWZvcmVEZWNpbWFsUG9pbnQobWF4
VmFsdWVEb3VibGUpKTsKLSAgICBsZW5ndGggPSBtYXgobGVuZ3RoLCBsZW5ndGhCZWZvcmVEZWNp
bWFsUG9pbnQoc3RlcFZhbHVlRG91YmxlKSk7Ci0KLSAgICB1bnNpZ25lZCBsZW5ndGhBZnRlckRl
Y2ltYWxQb2ludCA9IG1pblZhbHVlRGVjaW1hbFBsYWNlczsKLSAgICBsZW5ndGhBZnRlckRlY2lt
YWxQb2ludCA9IG1heChsZW5ndGhBZnRlckRlY2ltYWxQb2ludCwgbWF4VmFsdWVEZWNpbWFsUGxh
Y2VzKTsKLSAgICBsZW5ndGhBZnRlckRlY2ltYWxQb2ludCA9IG1heChsZW5ndGhBZnRlckRlY2lt
YWxQb2ludCwgc3RlcFZhbHVlRGVjaW1hbFBsYWNlcyk7Ci0KLSAgICAvLyAnLicgc2hvdWxkIGJl
IGNvdW50ZWQgaWYgdGhlIHZhbHVlIGhhcyBkZWNpbWFsIHBsYWNlcy4KLSAgICBpZiAobGVuZ3Ro
QWZ0ZXJEZWNpbWFsUG9pbnQgPiAwKQotICAgICAgICBsZW5ndGggKz0gbGVuZ3RoQWZ0ZXJEZWNp
bWFsUG9pbnQgKyAxOwotCi0gICAgcHJlZmVycmVkU2l6ZSA9IGxlbmd0aDsKLSAgICByZXR1cm4g
dHJ1ZTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIGJvb2wgTnVtYmVySW5wdXRUeXBlOjppc1N0
ZXBwYWJsZSgpIGNvbnN0CkBAIC0xODYsMjEgKzE2MCwxNCBAQCB2b2lkIE51bWJlcklucHV0VHlw
ZTo6aGFuZGxlV2hlZWxFdmVudChXaGVlbEV2ZW50KiBldmVudCkKICAgICBoYW5kbGVXaGVlbEV2
ZW50Rm9yU3BpbkJ1dHRvbihldmVudCk7CiB9CiAKLWRvdWJsZSBOdW1iZXJJbnB1dFR5cGU6OnBh
cnNlVG9Eb3VibGUoY29uc3QgU3RyaW5nJiBzcmMsIGRvdWJsZSBkZWZhdWx0VmFsdWUpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKHNyYywgZGVmYXVsdFZh
bHVlKTsKLX0KLQotZG91YmxlIE51bWJlcklucHV0VHlwZTo6cGFyc2VUb0RvdWJsZVdpdGhEZWNp
bWFsUGxhY2VzKGNvbnN0IFN0cmluZyYgc3JjLCBkb3VibGUgZGVmYXVsdFZhbHVlLCB1bnNpZ25l
ZCAqZGVjaW1hbFBsYWNlcykgY29uc3QKK0RlY2ltYWwgTnVtYmVySW5wdXRUeXBlOjpwYXJzZVRv
RGVjaW1hbChjb25zdCBTdHJpbmcmIHN0cmluZywgY29uc3QgRGVjaW1hbCYgZGVmYXVsdFZhbHVl
KSBjb25zdAogewotICAgIHJldHVybiBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZVdpdGhEZWNp
bWFsUGxhY2VzKHNyYywgZGVjaW1hbFBsYWNlcywgZGVmYXVsdFZhbHVlKTsKKyAgICByZXR1cm4g
cGFyc2VUb0RlY2ltYWxGb3JOdW1iZXJUeXBlKHN0cmluZywgZGVmYXVsdFZhbHVlKTsKIH0KIAot
U3RyaW5nIE51bWJlcklucHV0VHlwZTo6c2VyaWFsaXplKGRvdWJsZSB2YWx1ZSkgY29uc3QKK1N0
cmluZyBOdW1iZXJJbnB1dFR5cGU6OnNlcmlhbGl6ZShjb25zdCBEZWNpbWFsJiB2YWx1ZSkgY29u
c3QKIHsKLSAgICBpZiAoIWlzZmluaXRlKHZhbHVlKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygp
OwotICAgIHJldHVybiBzZXJpYWxpemVGb3JOdW1iZXJUeXBlKHZhbHVlKTsKKyAgICByZXR1cm4g
dmFsdWUuaXNGaW5pdGUoKSA/IHNlcmlhbGl6ZUZvck51bWJlclR5cGUodmFsdWUpIDogZW1wdHlT
dHJpbmcoKTsKIH0KIAogdm9pZCBOdW1iZXJJbnB1dFR5cGU6OmhhbmRsZUJsdXJFdmVudCgpCkBA
IC0yMjYsMTMgKzE5Myw3IEBAIFN0cmluZyBOdW1iZXJJbnB1dFR5cGU6OnZpc2libGVWYWx1ZSgp
IGNvbnN0CiAgICAgLy8gV2UgZG9uJ3QgbG9jYWxpemUgc2NpZW50aWZpYyBub3RhdGlvbnMuCiAg
ICAgaWYgKGN1cnJlbnRWYWx1ZS5maW5kKGlzRSkgIT0gbm90Rm91bmQpCiAgICAgICAgIHJldHVy
biBjdXJyZW50VmFsdWU7Ci0gICAgLy8gRklYTUU6IFRoZSBmb2xsb3dpbmcgdGhyZWUgbGluZXMg
c2hvdWxkIGJlIHJlbW92ZWQgd2hlbiB3ZQotICAgIC8vIHJlbW92ZSB0aGUgc2Vjb25kIGFyZ3Vt
ZW50IG9mIGNvbnZlcnRUb0xvY2FsaXplZE51bWJlcigpLgotICAgIC8vIE5vdGU6IHBhcnNlVG9E
b3VibGVGb3JOdW1iZXJUeXBlV2l0aERlY2ltYWxQbGFjZXMgc2V0IHplcm8gdG8gZGVjaW1hbFBs
YWNlcwotICAgIC8vIGlmIGN1cnJlbnRWYWx1ZSBpc24ndCB2YWxpZCBmbG9hdGluZyBwb2ludGVy
IG51bWJlci4KLSAgICB1bnNpZ25lZCBkZWNpbWFsUGxhY2U7Ci0gICAgcGFyc2VUb0RvdWJsZUZv
ck51bWJlclR5cGVXaXRoRGVjaW1hbFBsYWNlcyhjdXJyZW50VmFsdWUsICZkZWNpbWFsUGxhY2Up
OwotICAgIHJldHVybiBjb252ZXJ0VG9Mb2NhbGl6ZWROdW1iZXIoY3VycmVudFZhbHVlLCBkZWNp
bWFsUGxhY2UpOworICAgIHJldHVybiBjb252ZXJ0VG9Mb2NhbGl6ZWROdW1iZXIoY3VycmVudFZh
bHVlLCAwKTsKIH0KIAogU3RyaW5nIE51bWJlcklucHV0VHlwZTo6Y29udmVydEZyb21WaXNpYmxl
VmFsdWUoY29uc3QgU3RyaW5nJiB2aXNpYmxlVmFsdWUpIGNvbnN0CkBAIC0yNDgsNyArMjA5LDcg
QEAgU3RyaW5nIE51bWJlcklucHV0VHlwZTo6Y29udmVydEZyb21WaXNpYmxlVmFsdWUoY29uc3Qg
U3RyaW5nJiB2aXNpYmxlVmFsdWUpIGNvbnMKIGJvb2wgTnVtYmVySW5wdXRUeXBlOjppc0FjY2Vw
dGFibGVWYWx1ZShjb25zdCBTdHJpbmcmIHByb3Bvc2VkVmFsdWUpCiB7CiAgICAgU3RyaW5nIHN0
YW5kYXJkVmFsdWUgPSBjb252ZXJ0RnJvbVZpc2libGVWYWx1ZShwcm9wb3NlZFZhbHVlKTsKLSAg
ICByZXR1cm4gc3RhbmRhcmRWYWx1ZS5pc0VtcHR5KCkgfHwgcGFyc2VUb0RvdWJsZUZvck51bWJl
clR5cGUoc3RhbmRhcmRWYWx1ZSwgMCk7CisgICAgcmV0dXJuIHN0YW5kYXJkVmFsdWUuaXNFbXB0
eSgpIHx8IGlzZmluaXRlKHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKHN0YW5kYXJkVmFsdWUp
KTsKIH0KIAogU3RyaW5nIE51bWJlcklucHV0VHlwZTo6c2FuaXRpemVWYWx1ZShjb25zdCBTdHJp
bmcmIHByb3Bvc2VkVmFsdWUpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L051bWJlcklucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9OdW1iZXJJbnB1dFR5cGUu
aAppbmRleCAwMWJkZGVlNDgxNTdkZWNhYzQ5MzA5Yjk0Njc3MTYwMzNhZjBlZjliLi5jZjY5MDgx
MjM3YjQzMGU5ODI4YzQxMTBhNjc4NTZhMzBiYjExNTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL051bWJlcklucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTnVt
YmVySW5wdXRUeXBlLmgKQEAgLTUxLDkgKzUxLDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFN0
ZXBSYW5nZSBjcmVhdGVTdGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5nKSBjb25zdCBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlS2V5ZG93bkV2ZW50KEtleWJvYXJkRXZlbnQqKSBPVkVS
UklERTsKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlV2hlZWxFdmVudChXaGVlbEV2ZW50KikgT1ZF
UlJJREU7Ci0gICAgdmlydHVhbCBkb3VibGUgcGFyc2VUb0RvdWJsZShjb25zdCBTdHJpbmcmLCBk
b3VibGUpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgZG91YmxlIHBhcnNlVG9Eb3VibGVX
aXRoRGVjaW1hbFBsYWNlcyhjb25zdCBTdHJpbmcmLCBkb3VibGUsIHVuc2lnbmVkKikgY29uc3Qg
T1ZFUlJJREU7Ci0gICAgdmlydHVhbCBTdHJpbmcgc2VyaWFsaXplKGRvdWJsZSkgY29uc3QgT1ZF
UlJJREU7CisgICAgdmlydHVhbCBEZWNpbWFsIHBhcnNlVG9EZWNpbWFsKGNvbnN0IFN0cmluZyYs
IGNvbnN0IERlY2ltYWwmKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFN0cmluZyBzZXJp
YWxpemUoY29uc3QgRGVjaW1hbCYpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBo
YW5kbGVCbHVyRXZlbnQoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFN0cmluZyB2aXNpYmxlVmFs
dWUoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIFN0cmluZyBjb252ZXJ0RnJvbVZpc2li
bGVWYWx1ZShjb25zdCBTdHJpbmcmKSBjb25zdCBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9S
YW5nZUlucHV0VHlwZS5jcHAKaW5kZXggYjQxN2RjMzIwM2I4NDdhZDVjNmNhMjVkYTUxZmQ5Yzdk
NDYwNWNjYi4uZmMyYmRmMWZmMWRhODkxOWRmODRiNzNkM2M2MmE1YTRkNmEzZWJkNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5jcHAKQEAgLTU0LDExICs1NCwxMSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogdXNpbmcgbmFtZXNw
YWNlIHN0ZDsKIAotc3RhdGljIGNvbnN0IGRvdWJsZSByYW5nZURlZmF1bHRNaW5pbXVtID0gMC4w
Owotc3RhdGljIGNvbnN0IGRvdWJsZSByYW5nZURlZmF1bHRNYXhpbXVtID0gMTAwLjA7Ci1zdGF0
aWMgY29uc3QgZG91YmxlIHJhbmdlRGVmYXVsdFN0ZXAgPSAxLjA7Ci1zdGF0aWMgY29uc3QgZG91
YmxlIHJhbmdlRGVmYXVsdFN0ZXBCYXNlID0gMC4wOwotc3RhdGljIGNvbnN0IGRvdWJsZSByYW5n
ZVN0ZXBTY2FsZUZhY3RvciA9IDEuMDsKK3N0YXRpYyBjb25zdCBpbnQgcmFuZ2VEZWZhdWx0TWlu
aW11bSA9IDA7CitzdGF0aWMgY29uc3QgaW50IHJhbmdlRGVmYXVsdE1heGltdW0gPSAxMDA7Citz
dGF0aWMgY29uc3QgaW50IHJhbmdlRGVmYXVsdFN0ZXAgPSAxOworc3RhdGljIGNvbnN0IGludCBy
YW5nZURlZmF1bHRTdGVwQmFzZSA9IDA7CitzdGF0aWMgY29uc3QgaW50IHJhbmdlU3RlcFNjYWxl
RmFjdG9yID0gMTsKIAogUGFzc093blB0cjxJbnB1dFR5cGU+IFJhbmdlSW5wdXRUeXBlOjpjcmVh
dGUoSFRNTElucHV0RWxlbWVudCogZWxlbWVudCkKIHsKQEAgLTc3LDEyICs3NywxMiBAQCBjb25z
dCBBdG9taWNTdHJpbmcmIFJhbmdlSW5wdXRUeXBlOjpmb3JtQ29udHJvbFR5cGUoKSBjb25zdAog
CiBkb3VibGUgUmFuZ2VJbnB1dFR5cGU6OnZhbHVlQXNOdW1iZXIoKSBjb25zdAogewotICAgIHJl
dHVybiBwYXJzZVRvRG91YmxlKGVsZW1lbnQoKS0+dmFsdWUoKSwgbnVtZXJpY19saW1pdHM8ZG91
YmxlPjo6cXVpZXRfTmFOKCkpOworICAgIHJldHVybiBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlw
ZShlbGVtZW50KCktPnZhbHVlKCkpOwogfQogCiB2b2lkIFJhbmdlSW5wdXRUeXBlOjpzZXRWYWx1
ZUFzTnVtYmVyKGRvdWJsZSBuZXdWYWx1ZSwgVGV4dEZpZWxkRXZlbnRCZWhhdmlvciBldmVudEJl
aGF2aW9yLCBFeGNlcHRpb25Db2RlJikgY29uc3QKIHsKLSAgICBlbGVtZW50KCktPnNldFZhbHVl
KHNlcmlhbGl6ZShuZXdWYWx1ZSksIGV2ZW50QmVoYXZpb3IpOworICAgIGVsZW1lbnQoKS0+c2V0
VmFsdWUoc2VyaWFsaXplRm9yTnVtYmVyVHlwZShuZXdWYWx1ZSksIGV2ZW50QmVoYXZpb3IpOwog
fQogCiBib29sIFJhbmdlSW5wdXRUeXBlOjpzdXBwb3J0c1JlcXVpcmVkKCkgY29uc3QKQEAgLTk0
LDE4ICs5NCwxNiBAQCBTdGVwUmFuZ2UgUmFuZ2VJbnB1dFR5cGU6OmNyZWF0ZVN0ZXBSYW5nZShB
bnlTdGVwSGFuZGxpbmcgYW55U3RlcEhhbmRsaW5nKSBjb25zdAogewogICAgIERFRklORV9TVEFU
SUNfTE9DQUwoY29uc3QgU3RlcFJhbmdlOjpTdGVwRGVzY3JpcHRpb24sIHN0ZXBEZXNjcmlwdGlv
biwgKHJhbmdlRGVmYXVsdFN0ZXAsIHJhbmdlRGVmYXVsdFN0ZXBCYXNlLCByYW5nZVN0ZXBTY2Fs
ZUZhY3RvcikpOwogCi0gICAgZG91YmxlIG1pbmltdW0gPSBwYXJzZVRvRG91YmxlKGVsZW1lbnQo
KS0+ZmFzdEdldEF0dHJpYnV0ZShtaW5BdHRyKSwgcmFuZ2VEZWZhdWx0TWluaW11bSk7Ci0gICAg
ZG91YmxlIG1heGltdW0gPSBwYXJzZVRvRG91YmxlKGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0
ZShtYXhBdHRyKSwgcmFuZ2VEZWZhdWx0TWF4aW11bSk7Ci0gICAgaWYgKG1heGltdW0gPCBtaW5p
bXVtKQotICAgICAgICBtYXhpbXVtID0gbWF4KG1pbmltdW0sIHJhbmdlRGVmYXVsdE1heGltdW0p
OworICAgIGNvbnN0IERlY2ltYWwgbWluaW11bSA9IHBhcnNlVG9EZWNpbWFsKGVsZW1lbnQoKS0+
ZmFzdEdldEF0dHJpYnV0ZShtaW5BdHRyKSwgcmFuZ2VEZWZhdWx0TWluaW11bSk7CisgICAgY29u
c3QgRGVjaW1hbCBtYXhpbXVtID0gU3RlcFJhbmdlOjplbnN1cmVNYXhpbXVtKHBhcnNlVG9EZWNp
bWFsKGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShtYXhBdHRyKSwgcmFuZ2VEZWZhdWx0TWF4
aW11bSksIG1pbmltdW0sIHJhbmdlRGVmYXVsdE1heGltdW0pOwogCiAgICAgY29uc3QgQXRvbWlj
U3RyaW5nJiBwcmVjaXNpb25WYWx1ZSA9IGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShwcmVj
aXNpb25BdHRyKTsKICAgICBpZiAoIXByZWNpc2lvblZhbHVlLmlzTnVsbCgpKSB7Ci0gICAgICAg
IFN0ZXBSYW5nZTo6RG91YmxlV2l0aERlY2ltYWxQbGFjZXNPck1pc3Npbmcgc3RlcCgxLCAhZXF1
YWxJZ25vcmluZ0Nhc2UocHJlY2lzaW9uVmFsdWUsICJmbG9hdCIpKTsKKyAgICAgICAgU3RlcFJh
bmdlOjpEZWNpbWFsT3JNaXNzaW5nIHN0ZXAoMSwgIWVxdWFsSWdub3JpbmdDYXNlKHByZWNpc2lv
blZhbHVlLCAiZmxvYXQiKSk7CiAgICAgICAgIHJldHVybiBTdGVwUmFuZ2UobWluaW11bSwgbWlu
aW11bSwgbWF4aW11bSwgc3RlcCwgc3RlcERlc2NyaXB0aW9uKTsKICAgICB9CiAKLSAgICBTdGVw
UmFuZ2U6OkRvdWJsZVdpdGhEZWNpbWFsUGxhY2VzT3JNaXNzaW5nIHN0ZXAgPSBTdGVwUmFuZ2U6
OnBhcnNlU3RlcChhbnlTdGVwSGFuZGxpbmcsIHN0ZXBEZXNjcmlwdGlvbiwgZWxlbWVudCgpLT5m
YXN0R2V0QXR0cmlidXRlKHN0ZXBBdHRyKSk7CisgICAgY29uc3QgU3RlcFJhbmdlOjpEZWNpbWFs
T3JNaXNzaW5nIHN0ZXAoU3RlcFJhbmdlOjpwYXJzZVN0ZXAoYW55U3RlcEhhbmRsaW5nLCBzdGVw
RGVzY3JpcHRpb24sIGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShzdGVwQXR0cikpKTsKICAg
ICByZXR1cm4gU3RlcFJhbmdlKG1pbmltdW0sIG1pbmltdW0sIG1heGltdW0sIHN0ZXAsIHN0ZXBE
ZXNjcmlwdGlvbik7CiB9CiAKQEAgLTEzOCwyNSArMTM2LDE1IEBAIHZvaWQgUmFuZ2VJbnB1dFR5
cGU6OmhhbmRsZUtleWRvd25FdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKIAogICAgIGNvbnN0
IFN0cmluZyYga2V5ID0gZXZlbnQtPmtleUlkZW50aWZpZXIoKTsKIAotICAgIGRvdWJsZSBjdXJy
ZW50ID0gcGFyc2VUb0RvdWJsZShlbGVtZW50KCktPnZhbHVlKCksIG51bWVyaWNfbGltaXRzPGRv
dWJsZT46OnF1aWV0X05hTigpKTsKLSAgICBBU1NFUlQoaXNmaW5pdGUoY3VycmVudCkpOworICAg
IGNvbnN0IERlY2ltYWwgY3VycmVudCA9IHBhcnNlVG9EZWNpbWFsRm9yTnVtYmVyVHlwZShlbGVt
ZW50KCktPnZhbHVlKCkpOworICAgIEFTU0VSVChjdXJyZW50LmlzRmluaXRlKCkpOwogCi0gICAg
U3RlcFJhbmdlIHN0ZXBSYW5nZShjcmVhdGVTdGVwUmFuZ2UoUmVqZWN0QW55KSk7CisgICAgY29u
c3QgU3RlcFJhbmdlIHN0ZXBSYW5nZShjcmVhdGVTdGVwUmFuZ2UoUmVqZWN0QW55KSk7CiAKLSAg
ICBkb3VibGUgc3RlcCwgYmlnU3RlcDsKLSAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZWxlbWVu
dCgpLT5mYXN0R2V0QXR0cmlidXRlKHN0ZXBBdHRyKSwgImFueSIpKSB7Ci0gICAgICAgIC8vIEZJ
WE1FOiBXZSBjYW4ndCB1c2Ugc3RlcFVwKCkgZm9yIHRoZSBzdGVwIHZhbHVlICJhbnkiLiBTbywg
d2UgaW5jcmVhc2UKLSAgICAgICAgLy8gb3IgZGVjcmVhc2UgdGhlIHZhbHVlIGJ5IDEvMTAwIG9m
IHRoZSB2YWx1ZSByYW5nZS4gSXMgaXQgcmVhc29uYWJsZT8KLSAgICAgICAgc3RlcCA9IChzdGVw
UmFuZ2UubWF4aW11bSgpIC0gc3RlcFJhbmdlLm1pbmltdW0oKSkgLyAxMDA7Ci0gICAgICAgIGJp
Z1N0ZXAgPSBzdGVwICogMTA7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKCFlbGVtZW50KCkt
PmdldEFsbG93ZWRWYWx1ZVN0ZXAoJnN0ZXApKQotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0KLSAgICAgICAgYmlnU3RlcCA9IChzdGVwUmFuZ2UubWF4aW11bSgpIC0gc3RlcFJh
bmdlLm1pbmltdW0oKSkgLyAxMDsKLSAgICAgICAgaWYgKGJpZ1N0ZXAgPCBzdGVwKQotICAgICAg
ICAgICAgYmlnU3RlcCA9IHN0ZXA7Ci0gICAgfQorICAgIC8vIEZJWE1FOiBXZSBjYW4ndCB1c2Ug
c3RlcFVwKCkgZm9yIHRoZSBzdGVwIHZhbHVlICJhbnkiLiBTbywgd2UgaW5jcmVhc2UKKyAgICAv
LyBvciBkZWNyZWFzZSB0aGUgdmFsdWUgYnkgMS8xMDAgb2YgdGhlIHZhbHVlIHJhbmdlLiBJcyBp
dCByZWFzb25hYmxlPworICAgIGNvbnN0IERlY2ltYWwgc3RlcCA9IGVxdWFsSWdub3JpbmdDYXNl
KGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShzdGVwQXR0ciksICJhbnkiKSA/IChzdGVwUmFu
Z2UubWF4aW11bSgpIC0gc3RlcFJhbmdlLm1pbmltdW0oKSkgLyAxMDAgOiBzdGVwUmFuZ2Uuc3Rl
cCgpOworICAgIGNvbnN0IERlY2ltYWwgYmlnU3RlcCA9IG1heCgoc3RlcFJhbmdlLm1heGltdW0o
KSAtIHN0ZXBSYW5nZS5taW5pbXVtKCkpIC8gMTAsIHN0ZXApOwogCiAgICAgYm9vbCBpc1ZlcnRp
Y2FsID0gZmFsc2U7CiAgICAgaWYgKGVsZW1lbnQoKS0+cmVuZGVyZXIoKSkgewpAQCAtMTY0LDcg
KzE1Miw3IEBAIHZvaWQgUmFuZ2VJbnB1dFR5cGU6OmhhbmRsZUtleWRvd25FdmVudChLZXlib2Fy
ZEV2ZW50KiBldmVudCkKICAgICAgICAgaXNWZXJ0aWNhbCA9IHBhcnQgPT0gU2xpZGVyVmVydGlj
YWxQYXJ0IHx8IHBhcnQgPT0gTWVkaWFWb2x1bWVTbGlkZXJQYXJ0OwogICAgIH0KIAotICAgIGRv
dWJsZSBuZXdWYWx1ZTsKKyAgICBEZWNpbWFsIG5ld1ZhbHVlOwogICAgIGlmIChrZXkgPT0gIlVw
IikKICAgICAgICAgbmV3VmFsdWUgPSBjdXJyZW50ICsgc3RlcDsKICAgICBlbHNlIGlmIChrZXkg
PT0gIkRvd24iKQpAQCAtMTg5LDcgKzE3Nyw3IEBAIHZvaWQgUmFuZ2VJbnB1dFR5cGU6OmhhbmRs
ZUtleWRvd25FdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKICAgICBpZiAobmV3VmFsdWUgIT0g
Y3VycmVudCkgewogICAgICAgICBFeGNlcHRpb25Db2RlIGVjOwogICAgICAgICBUZXh0RmllbGRF
dmVudEJlaGF2aW9yIGV2ZW50QmVoYXZpb3IgPSBEaXNwYXRjaENoYW5nZUV2ZW50OwotICAgICAg
ICBzZXRWYWx1ZUFzTnVtYmVyKG5ld1ZhbHVlLCBldmVudEJlaGF2aW9yLCBlYyk7CisgICAgICAg
IHNldFZhbHVlQXNOdW1iZXIocGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUobmV3VmFsdWUudG9T
dHJpbmcoKSksIGV2ZW50QmVoYXZpb3IsIGVjKTsKIAogICAgICAgICBpZiAoQVhPYmplY3RDYWNo
ZTo6YWNjZXNzaWJpbGl0eUVuYWJsZWQoKSkKICAgICAgICAgICAgIGVsZW1lbnQoKS0+ZG9jdW1l
bnQoKS0+YXhPYmplY3RDYWNoZSgpLT5wb3N0Tm90aWZpY2F0aW9uKGVsZW1lbnQoKS0+cmVuZGVy
ZXIoKSwgQVhPYmplY3RDYWNoZTo6QVhWYWx1ZUNoYW5nZWQsIHRydWUpOwpAQCAtMjE5LDE2ICsy
MDcsMTQgQEAgUmVuZGVyT2JqZWN0KiBSYW5nZUlucHV0VHlwZTo6Y3JlYXRlUmVuZGVyZXIoUmVu
ZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopIGMKICAgICByZXR1cm4gbmV3IChhcmVuYSkg
UmVuZGVyU2xpZGVyKGVsZW1lbnQoKSk7CiB9CiAKLWRvdWJsZSBSYW5nZUlucHV0VHlwZTo6cGFy
c2VUb0RvdWJsZShjb25zdCBTdHJpbmcmIHNyYywgZG91YmxlIGRlZmF1bHRWYWx1ZSkgY29uc3QK
K0RlY2ltYWwgUmFuZ2VJbnB1dFR5cGU6OnBhcnNlVG9EZWNpbWFsKGNvbnN0IFN0cmluZyYgc3Jj
LCBjb25zdCBEZWNpbWFsJiBkZWZhdWx0VmFsdWUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHBhcnNl
VG9Eb3VibGVGb3JOdW1iZXJUeXBlKHNyYywgZGVmYXVsdFZhbHVlKTsKKyAgICByZXR1cm4gcGFy
c2VUb0RlY2ltYWxGb3JOdW1iZXJUeXBlKHNyYywgZGVmYXVsdFZhbHVlKTsKIH0KIAotU3RyaW5n
IFJhbmdlSW5wdXRUeXBlOjpzZXJpYWxpemUoZG91YmxlIHZhbHVlKSBjb25zdAorU3RyaW5nIFJh
bmdlSW5wdXRUeXBlOjpzZXJpYWxpemUoY29uc3QgRGVjaW1hbCYgdmFsdWUpIGNvbnN0CiB7Ci0g
ICAgaWYgKCFpc2Zpbml0ZSh2YWx1ZSkpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICBy
ZXR1cm4gc2VyaWFsaXplRm9yTnVtYmVyVHlwZSh2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlLmlz
RmluaXRlKCkgPyBzZXJpYWxpemVGb3JOdW1iZXJUeXBlKHZhbHVlKSA6IGVtcHR5U3RyaW5nKCk7
CiB9CiAKIC8vIEZJWE1FOiBDb3VsZCBzaGFyZSB0aGlzIHdpdGggQmFzZUNsaWNrYWJsZVdpdGhL
ZXlJbnB1dFR5cGUgYW5kIEJhc2VDaGVja2FibGVJbnB1dFR5cGUgaWYgd2UgaGFkIGEgY29tbW9u
IGJhc2UgY2xhc3MuCkBAIC0yNjgsOCArMjU0LDggQEAgU3RyaW5nIFJhbmdlSW5wdXRUeXBlOjpm
YWxsYmFja1ZhbHVlKCkgY29uc3QKIAogU3RyaW5nIFJhbmdlSW5wdXRUeXBlOjpzYW5pdGl6ZVZh
bHVlKGNvbnN0IFN0cmluZyYgcHJvcG9zZWRWYWx1ZSkgY29uc3QKIHsKLSAgICBTdGVwUmFuZ2Ug
c3RlcFJhbmdlKGNyZWF0ZVN0ZXBSYW5nZShSZWplY3RBbnkpKTsKLSAgICBkb3VibGUgcHJvcG9z
ZWREb3VibGVWYWx1ZSA9IHBhcnNlVG9Eb3VibGUocHJvcG9zZWRWYWx1ZSwgc3RlcFJhbmdlLmRl
ZmF1bHRWYWx1ZSgpKTsKKyAgICBjb25zdCBTdGVwUmFuZ2Ugc3RlcFJhbmdlKGNyZWF0ZVN0ZXBS
YW5nZShSZWplY3RBbnkpKTsKKyAgICBjb25zdCBEZWNpbWFsIHByb3Bvc2VkRG91YmxlVmFsdWUg
PSBwYXJzZVRvRGVjaW1hbChwcm9wb3NlZFZhbHVlLCBzdGVwUmFuZ2UuZGVmYXVsdFZhbHVlKCkp
OwogICAgIHJldHVybiBzZXJpYWxpemVGb3JOdW1iZXJUeXBlKHN0ZXBSYW5nZS5jbGFtcFZhbHVl
KHByb3Bvc2VkRG91YmxlVmFsdWUpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9SYW5nZUlucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlw
ZS5oCmluZGV4IDQ1ZmI0YWZhM2E5NTRkMzRjNzgxODU5OWUzMWRiNTM0ODQ3OWQxZjMuLjdjZDg3
YThiYjU3YzFjZThhMjA0NWFjZTA3YzdlYTJmNjMxOGNlNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1Jh
bmdlSW5wdXRUeXBlLmgKQEAgLTU0LDggKzU0LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZv
aWQgaGFuZGxlS2V5ZG93bkV2ZW50KEtleWJvYXJkRXZlbnQqKSBPVkVSUklERTsKICAgICB2aXJ0
dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHls
ZSopIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVTaGFkb3dTdWJ0cmVl
KCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBkb3VibGUgcGFyc2VUb0RvdWJsZShjb25zdCBTdHJp
bmcmLCBkb3VibGUpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgU3RyaW5nIHNlcmlhbGl6
ZShkb3VibGUpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgRGVjaW1hbCBwYXJzZVRvRGVj
aW1hbChjb25zdCBTdHJpbmcmLCBjb25zdCBEZWNpbWFsJikgY29uc3QgT1ZFUlJJREU7CisgICAg
dmlydHVhbCBTdHJpbmcgc2VyaWFsaXplKGNvbnN0IERlY2ltYWwmKSBjb25zdCBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIHZvaWQgYWNjZXNzS2V5QWN0aW9uKGJvb2wgc2VuZE1vdXNlRXZlbnRzKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgbWluT3JNYXhBdHRyaWJ1dGVDaGFuZ2VkKCkgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldFZhbHVlKGNvbnN0IFN0cmluZyYsIGJvb2wgdmFs
dWVDaGFuZ2VkLCBUZXh0RmllbGRFdmVudEJlaGF2aW9yKSBPVkVSUklERTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvU3RlcFJhbmdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
U3RlcFJhbmdlLmNwcAppbmRleCA5YjliN2RjYzk0OWNjNzVkNTUwYjA4MDdhOTNiNzYwNDU3ODg3
YTg5Li4zMjRlZWRiM2U3ZmI4ZDZmNjFmOTMyN2EwOWZmNTcyNWY5ZDE4N2Q2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL1N0ZXBSYW5nZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9TdGVwUmFuZ2UuY3BwCkBAIC0zMCw2ICszMCwyMyBAQCB1c2luZyBuYW1lc3BhY2Ugc3Rk
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKy8vIE5vdGU6IFdlIGNhbid0IHVzZSBuYW1lICJw
b3ciIGJlY2F1c2UgV2luIHBvcnQgZGVmaW5lcyBtYWNybyAicG93Ii4KK3N0YXRpYyBEZWNpbWFs
IHBvd2VyKGNvbnN0IERlY2ltYWwmIHgsIHVuc2lnbmVkIG4pCit7CisgICAgRGVjaW1hbCB5ID0g
MTsKKyAgICBEZWNpbWFsIHogPSB4OworICAgIGZvciAoOzspIHsKKyAgICAgICAgaWYgKG4gJiAx
KQorICAgICAgICAgICAgeSA9IHkgKiB6OworCisgICAgICAgIG4gPj49IDE7CisgICAgICAgIGlm
ICghbikKKyAgICAgICAgICAgIHJldHVybiB5OworCisgICAgICAgIHogPSB6ICogejsKKyAgICB9
Cit9CisKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIFN0ZXBSYW5nZTo6U3RlcFJhbmdl
KCkKQEAgLTM3LDggKzU0LDYgQEAgU3RlcFJhbmdlOjpTdGVwUmFuZ2UoKQogICAgICwgbV9taW5p
bXVtKDApCiAgICAgLCBtX3N0ZXAoMSkKICAgICAsIG1fc3RlcEJhc2UoMCkKLSAgICAsIG1fc3Rl
cEJhc2VEZWNpbWFsUGxhY2VzKDApCi0gICAgLCBtX3N0ZXBEZWNpbWFsUGxhY2VzKDApCiAgICAg
LCBtX2hhc1N0ZXAoZmFsc2UpCiB7CiB9CkBAIC00OSw1NSArNjQsNDQgQEAgU3RlcFJhbmdlOjpT
dGVwUmFuZ2UoY29uc3QgU3RlcFJhbmdlJiBzdGVwUmFuZ2UpCiAgICAgLCBtX3N0ZXAoc3RlcFJh
bmdlLm1fc3RlcCkKICAgICAsIG1fc3RlcEJhc2Uoc3RlcFJhbmdlLm1fc3RlcEJhc2UpCiAgICAg
LCBtX3N0ZXBEZXNjcmlwdGlvbihzdGVwUmFuZ2UubV9zdGVwRGVzY3JpcHRpb24pCi0gICAgLCBt
X3N0ZXBCYXNlRGVjaW1hbFBsYWNlcyhzdGVwUmFuZ2UubV9zdGVwQmFzZURlY2ltYWxQbGFjZXMp
Ci0gICAgLCBtX3N0ZXBEZWNpbWFsUGxhY2VzKHN0ZXBSYW5nZS5tX3N0ZXBEZWNpbWFsUGxhY2Vz
KQogICAgICwgbV9oYXNTdGVwKHN0ZXBSYW5nZS5tX2hhc1N0ZXApCiB7CiB9CiAKLVN0ZXBSYW5n
ZTo6U3RlcFJhbmdlKGNvbnN0IERvdWJsZVdpdGhEZWNpbWFsUGxhY2VzJiBzdGVwQmFzZSwgZG91
YmxlIG1pbmltdW0sIGRvdWJsZSBtYXhpbXVtLCBjb25zdCBEb3VibGVXaXRoRGVjaW1hbFBsYWNl
c09yTWlzc2luZyYgc3RlcCwgY29uc3QgU3RlcERlc2NyaXB0aW9uJiBzdGVwRGVzY3JpcHRpb24p
CitTdGVwUmFuZ2U6OlN0ZXBSYW5nZShjb25zdCBEZWNpbWFsJiBzdGVwQmFzZSwgY29uc3QgRGVj
aW1hbCYgbWluaW11bSwgY29uc3QgRGVjaW1hbCYgbWF4aW11bSwgY29uc3QgRGVjaW1hbE9yTWlz
c2luZyYgc3RlcCwgY29uc3QgU3RlcERlc2NyaXB0aW9uJiBzdGVwRGVzY3JpcHRpb24pCiAgICAg
OiBtX21heGltdW0obWF4aW11bSkKICAgICAsIG1fbWluaW11bShtaW5pbXVtKQotICAgICwgbV9z
dGVwKHN0ZXAudmFsdWUudmFsdWUpCi0gICAgLCBtX3N0ZXBCYXNlKHN0ZXBCYXNlLnZhbHVlKQor
ICAgICwgbV9zdGVwKHN0ZXAudmFsdWUpCisgICAgLCBtX3N0ZXBCYXNlKHN0ZXBCYXNlKQogICAg
ICwgbV9zdGVwRGVzY3JpcHRpb24oc3RlcERlc2NyaXB0aW9uKQotICAgICwgbV9zdGVwQmFzZURl
Y2ltYWxQbGFjZXMoc3RlcEJhc2UuZGVjaW1hbFBsYWNlcykKLSAgICAsIG1fc3RlcERlY2ltYWxQ
bGFjZXMoc3RlcC52YWx1ZS5kZWNpbWFsUGxhY2VzKQogICAgICwgbV9oYXNTdGVwKHN0ZXAuaGFz
VmFsdWUpCiB7Ci0gICAgQVNTRVJUKGlzZmluaXRlKG1fbWF4aW11bSkpOwotICAgIEFTU0VSVChp
c2Zpbml0ZShtX21pbmltdW0pKTsKLSAgICBBU1NFUlQoaXNmaW5pdGUobV9zdGVwKSk7Ci0gICAg
QVNTRVJUKGlzZmluaXRlKG1fc3RlcEJhc2UpKTsKKyAgICBBU1NFUlQobV9tYXhpbXVtLmlzRmlu
aXRlKCkpOworICAgIEFTU0VSVChtX21pbmltdW0uaXNGaW5pdGUoKSk7CisgICAgQVNTRVJUKG1f
c3RlcC5pc0Zpbml0ZSgpKTsKKyAgICBBU1NFUlQobV9zdGVwQmFzZS5pc0Zpbml0ZSgpKTsKIH0K
IAotZG91YmxlIFN0ZXBSYW5nZTo6YWNjZXB0YWJsZUVycm9yKCkgY29uc3QKK0RlY2ltYWwgU3Rl
cFJhbmdlOjphY2NlcHRhYmxlRXJyb3IoKSBjb25zdAogewotICAgIHJldHVybiBtX3N0ZXAgLyBw
b3coMi4wLCBGTFRfTUFOVF9ESUcpOworICAgIHJldHVybiBtX3N0ZXAgLyBwb3dlcigyLCBGTFRf
TUFOVF9ESUcpOwogfQogCi1kb3VibGUgU3RlcFJhbmdlOjphbGlnblZhbHVlRm9yU3RlcChkb3Vi
bGUgY3VycmVudFZhbHVlLCB1bnNpZ25lZCBjdXJyZW50RGVjaW1hbFBsYWNlcywgZG91YmxlIG5l
d1ZhbHVlKSBjb25zdAorRGVjaW1hbCBTdGVwUmFuZ2U6OmFsaWduVmFsdWVGb3JTdGVwKGNvbnN0
IERlY2ltYWwmIGN1cnJlbnRWYWx1ZSwgY29uc3QgRGVjaW1hbCYgbmV3VmFsdWUpIGNvbnN0CiB7
Ci0gICAgaWYgKG5ld1ZhbHVlID49IHBvdygxMC4wLCAyMS4wKSkKKyAgICBpZiAobmV3VmFsdWUg
Pj0gcG93ZXIoMTAsIDIxKSkKICAgICAgICAgcmV0dXJuIG5ld1ZhbHVlOwogCi0gICAgaWYgKHN0
ZXBNaXNtYXRjaChjdXJyZW50VmFsdWUpKSB7Ci0gICAgICAgIGRvdWJsZSBzY2FsZSA9IHBvdygx
MC4wLCBzdGF0aWNfY2FzdDxkb3VibGU+KG1heChtX3N0ZXBEZWNpbWFsUGxhY2VzLCBjdXJyZW50
RGVjaW1hbFBsYWNlcykpKTsKLSAgICAgICAgbmV3VmFsdWUgPSByb3VuZChuZXdWYWx1ZSAqIHNj
YWxlKSAvIHNjYWxlOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGRvdWJsZSBzY2FsZSA9IHBvdygx
MC4wLCBzdGF0aWNfY2FzdDxkb3VibGU+KG1heChtX3N0ZXBEZWNpbWFsUGxhY2VzLCBtX3N0ZXBC
YXNlRGVjaW1hbFBsYWNlcykpKTsKLSAgICAgICAgbmV3VmFsdWUgPSByb3VuZCgobV9zdGVwQmFz
ZSArIHJvdW5kKChuZXdWYWx1ZSAtIG1fc3RlcEJhc2UpIC8gbV9zdGVwKSAqIG1fc3RlcCkgKiBz
Y2FsZSkgLyBzY2FsZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gbmV3VmFsdWU7CisgICAgcmV0dXJu
IHN0ZXBNaXNtYXRjaChjdXJyZW50VmFsdWUpID8gbmV3VmFsdWUgOiByb3VuZEJ5U3RlcChuZXdW
YWx1ZSwgbV9zdGVwQmFzZSk7CiB9Ci1kb3VibGUgU3RlcFJhbmdlOjpjbGFtcFZhbHVlKGRvdWJs
ZSB2YWx1ZSkgY29uc3QKKworRGVjaW1hbCBTdGVwUmFuZ2U6OmNsYW1wVmFsdWUoY29uc3QgRGVj
aW1hbCYgdmFsdWUpIGNvbnN0CiB7Ci0gICAgZG91YmxlIGNsYW1wZWRWYWx1ZSA9IG1heChtX21p
bmltdW0sIG1pbih2YWx1ZSwgbV9tYXhpbXVtKSk7CisgICAgRGVjaW1hbCBjbGFtcGVkVmFsdWUg
PSBtYXgobV9taW5pbXVtLCBtaW4odmFsdWUsIG1fbWF4aW11bSkpOwogICAgIGlmICghbV9oYXNT
dGVwKQogICAgICAgICByZXR1cm4gY2xhbXBlZFZhbHVlOwogICAgIC8vIFJvdW5kcyBjbGFtcGVk
VmFsdWUgdG8gbWluaW11bSArIE4gKiBzdGVwLgotICAgIGNsYW1wZWRWYWx1ZSA9IG1fbWluaW11
bSArIHJvdW5kKChjbGFtcGVkVmFsdWUgLSBtX21pbmltdW0pIC8gbV9zdGVwKSAqIG1fc3RlcDsK
KyAgICBjbGFtcGVkVmFsdWUgPSByb3VuZEJ5U3RlcChjbGFtcGVkVmFsdWUsIG1fbWluaW11bSk7
CiAgICAgaWYgKGNsYW1wZWRWYWx1ZSA+IG1fbWF4aW11bSkKICAgICAgICBjbGFtcGVkVmFsdWUg
LT0gbV9zdGVwOwogICAgIEFTU0VSVChjbGFtcGVkVmFsdWUgPj0gbV9taW5pbXVtKTsKQEAgLTEw
NSw3MCArMTA5LDY5IEBAIGRvdWJsZSBTdGVwUmFuZ2U6OmNsYW1wVmFsdWUoZG91YmxlIHZhbHVl
KSBjb25zdAogICAgIHJldHVybiBjbGFtcGVkVmFsdWU7CiB9CiAKLVN0ZXBSYW5nZTo6RG91Ymxl
V2l0aERlY2ltYWxQbGFjZXNPck1pc3NpbmcgU3RlcFJhbmdlOjpwYXJzZVN0ZXAoQW55U3RlcEhh
bmRsaW5nIGFueVN0ZXBIYW5kbGluZywgY29uc3QgU3RlcERlc2NyaXB0aW9uJiBzdGVwRGVzY3Jp
cHRpb24sIGNvbnN0IFN0cmluZyYgc3RlcFN0cmluZykKK1N0ZXBSYW5nZTo6RGVjaW1hbE9yTWlz
c2luZyBTdGVwUmFuZ2U6OnBhcnNlU3RlcChBbnlTdGVwSGFuZGxpbmcgYW55U3RlcEhhbmRsaW5n
LCBjb25zdCBTdGVwRGVzY3JpcHRpb24mIHN0ZXBEZXNjcmlwdGlvbiwgY29uc3QgU3RyaW5nJiBz
dGVwU3RyaW5nKQogewogICAgIGlmIChzdGVwU3RyaW5nLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0
dXJuIERvdWJsZVdpdGhEZWNpbWFsUGxhY2VzT3JNaXNzaW5nKHN0ZXBEZXNjcmlwdGlvbi5kZWZh
dWx0VmFsdWUoKSk7CisgICAgICAgIHJldHVybiBEZWNpbWFsT3JNaXNzaW5nKHN0ZXBEZXNjcmlw
dGlvbi5kZWZhdWx0VmFsdWUoKSk7CiAKICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uoc3RlcFN0
cmluZywgImFueSIpKSB7CiAgICAgICAgIHN3aXRjaCAoYW55U3RlcEhhbmRsaW5nKSB7CiAgICAg
ICAgIGNhc2UgUmVqZWN0QW55OgotICAgICAgICAgICAgcmV0dXJuIERvdWJsZVdpdGhEZWNpbWFs
UGxhY2VzT3JNaXNzaW5nKERvdWJsZVdpdGhEZWNpbWFsUGxhY2VzKDEpLCBmYWxzZSk7CisgICAg
ICAgICAgICByZXR1cm4gRGVjaW1hbE9yTWlzc2luZyhEZWNpbWFsKDEpLCBmYWxzZSk7CiAgICAg
ICAgIGNhc2UgQW55SXNEZWZhdWx0U3RlcDoKLSAgICAgICAgICAgIHJldHVybiBEb3VibGVXaXRo
RGVjaW1hbFBsYWNlc09yTWlzc2luZyhzdGVwRGVzY3JpcHRpb24uZGVmYXVsdFZhbHVlKCkpOwor
ICAgICAgICAgICAgcmV0dXJuIERlY2ltYWxPck1pc3Npbmcoc3RlcERlc2NyaXB0aW9uLmRlZmF1
bHRWYWx1ZSgpKTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgRG91YmxlV2l0aERlY2ltYWxQbGFjZXNP
ck1pc3Npbmcgc3RlcCgwKTsKLSAgICBzdGVwLnZhbHVlLnZhbHVlID0gcGFyc2VUb0RvdWJsZUZv
ck51bWJlclR5cGVXaXRoRGVjaW1hbFBsYWNlcyhzdGVwU3RyaW5nLCAmc3RlcC52YWx1ZS5kZWNp
bWFsUGxhY2VzKTsKLSAgICBpZiAoIWlzZmluaXRlKHN0ZXAudmFsdWUudmFsdWUpIHx8IHN0ZXAu
dmFsdWUudmFsdWUgPD0gMC4wKQotICAgICAgICByZXR1cm4gRG91YmxlV2l0aERlY2ltYWxQbGFj
ZXNPck1pc3Npbmcoc3RlcERlc2NyaXB0aW9uLmRlZmF1bHRWYWx1ZSgpKTsKKyAgICBEZWNpbWFs
IHN0ZXAocGFyc2VUb0RlY2ltYWxGb3JOdW1iZXJUeXBlKHN0ZXBTdHJpbmcpKTsKKyAgICBpZiAo
IXN0ZXAuaXNGaW5pdGUoKSB8fCBzdGVwIDw9IDApCisgICAgICAgIHJldHVybiBEZWNpbWFsT3JN
aXNzaW5nKHN0ZXBEZXNjcmlwdGlvbi5kZWZhdWx0VmFsdWUoKSk7CiAKICAgICBzd2l0Y2ggKHN0
ZXBEZXNjcmlwdGlvbi5zdGVwVmFsdWVTaG91bGRCZSkgewogICAgIGNhc2UgU3RlcFZhbHVlU2hv
dWxkQmVSZWFsOgotICAgICAgICBzdGVwLnZhbHVlLnZhbHVlICo9IHN0ZXBEZXNjcmlwdGlvbi5z
dGVwU2NhbGVGYWN0b3I7CisgICAgICAgIHN0ZXAgKj0gc3RlcERlc2NyaXB0aW9uLnN0ZXBTY2Fs
ZUZhY3RvcjsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQYXJzZWRTdGVwVmFsdWVTaG91bGRC
ZUludGVnZXI6CiAgICAgICAgIC8vIEZvciBkYXRlLCBtb250aCwgYW5kIHdlZWssIHRoZSBwYXJz
ZWQgdmFsdWUgc2hvdWxkIGJlIGFuIGludGVnZXIgZm9yIHNvbWUgdHlwZXMuCi0gICAgICAgIHN0
ZXAudmFsdWUudmFsdWUgPSBtYXgocm91bmQoc3RlcC52YWx1ZS52YWx1ZSksIDEuMCk7Ci0gICAg
ICAgIHN0ZXAudmFsdWUudmFsdWUgKj0gc3RlcERlc2NyaXB0aW9uLnN0ZXBTY2FsZUZhY3RvcjsK
KyAgICAgICAgc3RlcCA9IG1heChzdGVwLnJvdW5kKCksIERlY2ltYWwoMSkpOworICAgICAgICBz
dGVwICo9IHN0ZXBEZXNjcmlwdGlvbi5zdGVwU2NhbGVGYWN0b3I7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgU2NhbGVkU3RlcFZhbHVlU2hvdWxkQmVJbnRlZ2VyOgogICAgICAgICAvLyBGb3Ig
ZGF0ZXRpbWUsIGRhdGV0aW1lLWxvY2FsLCB0aW1lLCB0aGUgcmVzdWx0IHNob3VsZCBiZSBhbiBp
bnRlZ2VyLgotICAgICAgICBzdGVwLnZhbHVlLnZhbHVlICo9IHN0ZXBEZXNjcmlwdGlvbi5zdGVw
U2NhbGVGYWN0b3I7Ci0gICAgICAgIHN0ZXAudmFsdWUudmFsdWUgPSBtYXgocm91bmQoc3RlcC52
YWx1ZS52YWx1ZSksIDEuMCk7CisgICAgICAgIHN0ZXAgKj0gc3RlcERlc2NyaXB0aW9uLnN0ZXBT
Y2FsZUZhY3RvcjsKKyAgICAgICAgc3RlcCA9IG1heChzdGVwLnJvdW5kKCksIERlY2ltYWwoMSkp
OwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICB9CiAKLSAgICBBU1NFUlQoc3RlcC52YWx1ZS52YWx1ZSA+IDApOwotICAgIHJl
dHVybiBzdGVwOworICAgIEFTU0VSVChzdGVwID4gMCk7CisgICAgcmV0dXJuIERlY2ltYWxPck1p
c3Npbmcoc3RlcCk7CiB9CiAKLWJvb2wgU3RlcFJhbmdlOjpzdGVwTWlzbWF0Y2goZG91YmxlIGRv
dWJsZVZhbHVlKSBjb25zdAorYm9vbCBTdGVwUmFuZ2U6OnN0ZXBNaXNtYXRjaChjb25zdCBEZWNp
bWFsJiB2YWx1ZUZvckNoZWNrKSBjb25zdAogewogICAgIGlmICghbV9oYXNTdGVwKQogICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFpc2Zpbml0ZShkb3VibGVWYWx1ZSkpCisgICAgaWYg
KCF2YWx1ZUZvckNoZWNrLmlzRmluaXRlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBk
b3VibGVWYWx1ZSA9IGZhYnMoZG91YmxlVmFsdWUgLSBtX3N0ZXBCYXNlKTsKLSAgICBpZiAoaXNp
bmYoZG91YmxlVmFsdWUpKQorICAgIERlY2ltYWwgdmFsdWUgPSAodmFsdWVGb3JDaGVjayAtIG1f
c3RlcEJhc2UpLmFicygpOworICAgIGlmICghdmFsdWUuaXNGaW5pdGUoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIC8vIGRvdWJsZSdzIGZyYWN0aW9uYWwgcGFydCBzaXplIGlzIERCTF9N
QU5fRElHLWJpdC4gSWYgdGhlIGN1cnJlbnQgdmFsdWUKKyAgICAvLyBEZWNpbWFsJ3MgZnJhY3Rp
b25hbCBwYXJ0IHNpemUgaXMgREJMX01BTl9ESUctYml0LiBJZiB0aGUgY3VycmVudCB2YWx1ZQog
ICAgIC8vIGlzIGdyZWF0ZXIgdGhhbiBzdGVwKjJeREJMX01BTlRfRElHLCB0aGUgZm9sbG93aW5n
IGNvbXB1dGF0aW9uIGZvcgogICAgIC8vIHJlbWFpbmRlciBtYWtlcyBubyBzZW5zZS4KLSAgICBp
ZiAoZG91YmxlVmFsdWUgLyBwb3coMi4wLCBEQkxfTUFOVF9ESUcpID4gbV9zdGVwKQorICAgIGlm
ICh2YWx1ZSAvIHBvd2VyKDIsIERCTF9NQU5UX0RJRykgPiBtX3N0ZXApCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAvLyBUaGUgY29tcHV0YXRpb24gZm9sbG93cyBIVE1MNSA0LjEwLjcuMi4x
MCBgVGhlIHN0ZXAgYXR0cmlidXRlJyA6CiAgICAgLy8gLi4uIHRoYXQgbnVtYmVyIHN1YnRyYWN0
ZWQgZnJvbSB0aGUgc3RlcCBiYXNlIGlzIG5vdCBhbiBpbnRlZ3JhbCBtdWx0aXBsZQogICAgIC8v
IG9mIHRoZSBhbGxvd2VkIHZhbHVlIHN0ZXAsIHRoZSBlbGVtZW50IGlzIHN1ZmZlcmluZyBmcm9t
IGEgc3RlcCBtaXNtYXRjaC4KLSAgICBkb3VibGUgcmVtYWluZGVyID0gZmFicyhkb3VibGVWYWx1
ZSAtIG1fc3RlcCAqIHJvdW5kKGRvdWJsZVZhbHVlIC8gbV9zdGVwKSk7CisgICAgY29uc3QgRGVj
aW1hbCByZW1haW5kZXIgPSAodmFsdWUgLSBtX3N0ZXAgKiAodmFsdWUgLyBtX3N0ZXApLnJvdW5k
KCkpLmFicygpOwogICAgIC8vIEFjY2VwdHMgZXJyb3MgaW4gbG93ZXIgZnJhY3Rpb25hbCBwYXJ0
IHdoaWNoIElFRUUgNzU0IHNpbmdsZS1wcmVjaXNpb24KICAgICAvLyBjYW4ndCByZXByZXNlbnQu
Ci0gICAgZG91YmxlIGNvbXB1dGVkQWNjZXB0YWJsZUVycm9yID0gYWNjZXB0YWJsZUVycm9yKCk7
CisgICAgY29uc3QgRGVjaW1hbCBjb21wdXRlZEFjY2VwdGFibGVFcnJvciA9IGFjY2VwdGFibGVF
cnJvcigpOwogICAgIHJldHVybiBjb21wdXRlZEFjY2VwdGFibGVFcnJvciA8IHJlbWFpbmRlciAm
JiByZW1haW5kZXIgPCAobV9zdGVwIC0gY29tcHV0ZWRBY2NlcHRhYmxlRXJyb3IpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1N0ZXBSYW5nZS5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9TdGVwUmFuZ2UuaAppbmRleCAwYWRiZmQ4NTdhNTA2OTk5MzFjYmQzOTEwNmY2YjA0
YTZlNzQyYzhkLi4zMGE2MzBmYjk5YzBkMWU0NTdlMDNmYWFmOTkxMDI4OGQ2Mjc1MzhkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1N0ZXBSYW5nZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvU3RlcFJhbmdlLmgKQEAgLTIxLDYgKzIxLDcgQEAKICNpZm5kZWYgU3RlcFJhbmdl
X2gKICNkZWZpbmUgU3RlcFJhbmdlX2gKIAorI2luY2x1ZGUgIkRlY2ltYWwuaCIKICNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCkBAIC0zMiwy
MiArMzMsMTEgQEAgZW51bSBBbnlTdGVwSGFuZGxpbmcgeyBSZWplY3RBbnksIEFueUlzRGVmYXVs
dFN0ZXAgfTsKIAogY2xhc3MgU3RlcFJhbmdlIHsKIHB1YmxpYzoKLSAgICBzdHJ1Y3QgRG91Ymxl
V2l0aERlY2ltYWxQbGFjZXMgewotICAgICAgICB1bnNpZ25lZCBkZWNpbWFsUGxhY2VzOwotICAg
ICAgICBkb3VibGUgdmFsdWU7Ci0KLSAgICAgICAgRG91YmxlV2l0aERlY2ltYWxQbGFjZXMoZG91
YmxlIHZhbHVlID0gMCwgdW5zaWduZWQgZGVjaW1hbFBsYWNlcyA9IDApCi0gICAgICAgICAgICA6
IGRlY2ltYWxQbGFjZXMoZGVjaW1hbFBsYWNlcykKLSAgICAgICAgICAgICwgdmFsdWUodmFsdWUp
Ci0gICAgICAgIHsKLSAgICAgICAgfQotICAgIH07Ci0KLSAgICBzdHJ1Y3QgRG91YmxlV2l0aERl
Y2ltYWxQbGFjZXNPck1pc3NpbmcgeworICAgIHN0cnVjdCBEZWNpbWFsT3JNaXNzaW5nIHsKICAg
ICAgICAgYm9vbCBoYXNWYWx1ZTsKLSAgICAgICAgRG91YmxlV2l0aERlY2ltYWxQbGFjZXMgdmFs
dWU7CisgICAgICAgIERlY2ltYWwgdmFsdWU7CiAKLSAgICAgICAgRG91YmxlV2l0aERlY2ltYWxQ
bGFjZXNPck1pc3NpbmcoRG91YmxlV2l0aERlY2ltYWxQbGFjZXMgdmFsdWUsIGJvb2wgaGFzVmFs
dWUgPSB0cnVlKQorICAgICAgICBEZWNpbWFsT3JNaXNzaW5nKGNvbnN0IERlY2ltYWwmIHZhbHVl
LCBib29sIGhhc1ZhbHVlID0gdHJ1ZSkKICAgICAgICAgICAgIDogaGFzVmFsdWUoaGFzVmFsdWUp
CiAgICAgICAgICAgICAsIHZhbHVlKHZhbHVlKQogICAgICAgICB7CkBAIC04Miw3ICs3Miw3IEBA
IHB1YmxpYzoKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgZG91YmxlIGRlZmF1bHRW
YWx1ZSgpIGNvbnN0CisgICAgICAgIERlY2ltYWwgZGVmYXVsdFZhbHVlKCkgY29uc3QKICAgICAg
ICAgewogICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRTdGVwICogc3RlcFNjYWxlRmFjdG9yOwog
ICAgICAgICB9CkBAIC05MCwyOSArODAsMzIgQEAgcHVibGljOgogCiAgICAgU3RlcFJhbmdlKCk7
CiAgICAgU3RlcFJhbmdlKGNvbnN0IFN0ZXBSYW5nZSYpOwotICAgIFN0ZXBSYW5nZShjb25zdCBE
b3VibGVXaXRoRGVjaW1hbFBsYWNlcyYgc3RlcEJhc2UsIGRvdWJsZSBtaW5pbXVtLCBkb3VibGUg
bWF4aW11bSwgY29uc3QgRG91YmxlV2l0aERlY2ltYWxQbGFjZXNPck1pc3NpbmcmIHN0ZXAsIGNv
bnN0IFN0ZXBEZXNjcmlwdGlvbiYpOwotICAgIGRvdWJsZSBhY2NlcHRhYmxlRXJyb3IoKSBjb25z
dDsKLSAgICBkb3VibGUgYWxpZ25WYWx1ZUZvclN0ZXAoZG91YmxlIGN1cnJlbnRWYWx1ZSwgdW5z
aWduZWQgY3VycmVudERlY2ltYWxQbGFjZXMsIGRvdWJsZSBuZXdWYWx1ZSkgY29uc3Q7Ci0gICAg
ZG91YmxlIGNsYW1wVmFsdWUoZG91YmxlIHZhbHVlKSBjb25zdDsKKyAgICBTdGVwUmFuZ2UoY29u
c3QgRGVjaW1hbCYgc3RlcEJhc2UsIGNvbnN0IERlY2ltYWwmIG1pbmltdW0sIGNvbnN0IERlY2lt
YWwmIG1heGltdW0sIGNvbnN0IERlY2ltYWxPck1pc3NpbmcmIHN0ZXAsIGNvbnN0IFN0ZXBEZXNj
cmlwdGlvbiYpOworICAgIERlY2ltYWwgYWNjZXB0YWJsZUVycm9yKCkgY29uc3Q7CisgICAgRGVj
aW1hbCBhbGlnblZhbHVlRm9yU3RlcChjb25zdCBEZWNpbWFsJiBjdXJyZW50VmFsdWUsIGNvbnN0
IERlY2ltYWwmIG5ld1ZhbHVlKSBjb25zdDsKKyAgICBEZWNpbWFsIGNsYW1wVmFsdWUoY29uc3Qg
RGVjaW1hbCYpIGNvbnN0OwogICAgIGJvb2wgaGFzU3RlcCgpIGNvbnN0IHsgcmV0dXJuIG1faGFz
U3RlcDsgfQotICAgIGRvdWJsZSBtYXhpbXVtKCkgY29uc3QgeyByZXR1cm4gbV9tYXhpbXVtOyB9
Ci0gICAgZG91YmxlIG1pbmltdW0oKSBjb25zdCB7IHJldHVybiBtX21pbmltdW07IH0KLSAgICBz
dGF0aWMgRG91YmxlV2l0aERlY2ltYWxQbGFjZXNPck1pc3NpbmcgcGFyc2VTdGVwKEFueVN0ZXBI
YW5kbGluZywgY29uc3QgU3RlcERlc2NyaXB0aW9uJiwgY29uc3QgU3RyaW5nJik7Ci0gICAgZG91
YmxlIHN0ZXAoKSBjb25zdCB7IHJldHVybiBtX3N0ZXA7IH0KLSAgICBkb3VibGUgc3RlcEJhc2Uo
KSBjb25zdCB7IHJldHVybiBtX3N0ZXBCYXNlOyB9Ci0gICAgdW5zaWduZWQgc3RlcEJhc2VEZWNp
bWFsUGxhY2VzKCkgY29uc3QgeyByZXR1cm4gbV9zdGVwQmFzZURlY2ltYWxQbGFjZXM7IH0KLSAg
ICB1bnNpZ25lZCBzdGVwRGVjaW1hbFBsYWNlcygpIGNvbnN0IHsgcmV0dXJuIG1fc3RlcERlY2lt
YWxQbGFjZXM7IH0KKyAgICBEZWNpbWFsIG1heGltdW0oKSBjb25zdCB7IHJldHVybiBtX21heGlt
dW07IH0KKyAgICBEZWNpbWFsIG1pbmltdW0oKSBjb25zdCB7IHJldHVybiBtX21pbmltdW07IH0K
KyAgICBzdGF0aWMgRGVjaW1hbE9yTWlzc2luZyBwYXJzZVN0ZXAoQW55U3RlcEhhbmRsaW5nLCBj
b25zdCBTdGVwRGVzY3JpcHRpb24mLCBjb25zdCBTdHJpbmcmKTsKKyAgICBEZWNpbWFsIHN0ZXAo
KSBjb25zdCB7IHJldHVybiBtX3N0ZXA7IH0KKyAgICBEZWNpbWFsIHN0ZXBCYXNlKCkgY29uc3Qg
eyByZXR1cm4gbV9zdGVwQmFzZTsgfQogICAgIGludCBzdGVwU2NhbGVGYWN0b3IoKSBjb25zdCB7
IHJldHVybiBtX3N0ZXBEZXNjcmlwdGlvbi5zdGVwU2NhbGVGYWN0b3I7IH0KLSAgICBib29sIHN0
ZXBNaXNtYXRjaChkb3VibGUpIGNvbnN0OworICAgIGJvb2wgc3RlcE1pc21hdGNoKGNvbnN0IERl
Y2ltYWwmKSBjb25zdDsKIAogICAgIC8vIENsYW1wIHRoZSBtaWRkbGUgdmFsdWUgYWNjb3JkaW5n
IHRvIHRoZSBzdGVwCi0gICAgZG91YmxlIGRlZmF1bHRWYWx1ZSgpIGNvbnN0CisgICAgRGVjaW1h
bCBkZWZhdWx0VmFsdWUoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIGNsYW1wVmFsdWUo
KG1fbWluaW11bSArIG1fbWF4aW11bSkgLyAyKTsKICAgICB9CiAKKyAgICBzdGF0aWMgRGVjaW1h
bCBlbnN1cmVNYXhpbXVtKGNvbnN0IERlY2ltYWwgcHJvcG9zZWRWYWx1ZSwgY29uc3QgRGVjaW1h
bCYgbWluaW11bSwgY29uc3QgRGVjaW1hbCYgZmFsbGJhY2tWYWx1ZSkKKyAgICB7CisgICAgICAg
IHJldHVybiBwcm9wb3NlZFZhbHVlID49IG1pbmltdW0gPyBwcm9wb3NlZFZhbHVlIDogc3RkOjpt
YXgobWluaW11bSwgZmFsbGJhY2tWYWx1ZSk7CisgICAgfQorCiAgICAgLy8gTWFwIHZhbHVlIGlu
dG8gMC0xIHJhbmdlCi0gICAgZG91YmxlIHByb3BvcnRpb25Gcm9tVmFsdWUoZG91YmxlIHZhbHVl
KSBjb25zdAorICAgIERlY2ltYWwgcHJvcG9ydGlvbkZyb21WYWx1ZShjb25zdCBEZWNpbWFsJiB2
YWx1ZSkgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChtX21pbmltdW0gPT0gbV9tYXhpbXVtKQog
ICAgICAgICAgICAgcmV0dXJuIDA7CkBAIC0xMjEsNyArMTE0LDcgQEAgcHVibGljOgogICAgIH0K
IAogICAgIC8vIE1hcCBmcm9tIDAtMSByYW5nZSB0byB2YWx1ZQotICAgIGRvdWJsZSB2YWx1ZUZy
b21Qcm9wb3J0aW9uKGRvdWJsZSBwcm9wb3J0aW9uKSBjb25zdAorICAgIERlY2ltYWwgdmFsdWVG
cm9tUHJvcG9ydGlvbihjb25zdCBEZWNpbWFsJiBwcm9wb3J0aW9uKSBjb25zdAogICAgIHsKICAg
ICAgICAgcmV0dXJuIG1fbWluaW11bSArIHByb3BvcnRpb24gKiAobV9tYXhpbXVtIC0gbV9taW5p
bXVtKTsKICAgICB9CkBAIC0xMjksMTMgKzEyMiwxNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAg
IFN0ZXBSYW5nZSYgb3BlcmF0b3IgPShjb25zdCBTdGVwUmFuZ2UmKTsKIAotICAgIGNvbnN0IGRv
dWJsZSBtX21heGltdW07IC8vIG1heGltdW0gbXVzdCBiZSA+PSBtaW5pbXVtLgotICAgIGNvbnN0
IGRvdWJsZSBtX21pbmltdW07Ci0gICAgY29uc3QgZG91YmxlIG1fc3RlcDsKLSAgICBjb25zdCBk
b3VibGUgbV9zdGVwQmFzZTsKKyAgICBEZWNpbWFsIHJvdW5kQnlTdGVwKGNvbnN0IERlY2ltYWwm
IHZhbHVlLCBjb25zdCBEZWNpbWFsJiBiYXNlKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IGJhc2UgKyAoKHZhbHVlIC0gYmFzZSkgLyBtX3N0ZXApLnJvdW5kKCkgKiBtX3N0ZXA7CisgICAg
fQorCisgICAgY29uc3QgRGVjaW1hbCBtX21heGltdW07IC8vIG1heGltdW0gbXVzdCBiZSA+PSBt
aW5pbXVtLgorICAgIGNvbnN0IERlY2ltYWwgbV9taW5pbXVtOworICAgIGNvbnN0IERlY2ltYWwg
bV9zdGVwOworICAgIGNvbnN0IERlY2ltYWwgbV9zdGVwQmFzZTsKICAgICBjb25zdCBTdGVwRGVz
Y3JpcHRpb24gbV9zdGVwRGVzY3JpcHRpb247Ci0gICAgY29uc3QgdW5zaWduZWQgbV9zdGVwQmFz
ZURlY2ltYWxQbGFjZXM7Ci0gICAgY29uc3QgdW5zaWduZWQgbV9zdGVwRGVjaW1hbFBsYWNlczsK
ICAgICBjb25zdCBib29sIG1faGFzU3RlcDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAKaW5kZXggYTk5YTIxYTA4ZTViZGQwODY1ZmEz
M2M3Mzk1NTA0MDE3MmMzOGIzMS4uNWJkMGUzMzBmZDI0NTAyM2VjNzdiZmJkMTgzYmRiNTliODZl
N2U2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklk
aW9tcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9t
cy5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJI
VE1MUGFyc2VySWRpb21zLmgiCiAKKyNpbmNsdWRlICJEZWNpbWFsLmgiCiAjaW5jbHVkZSA8bGlt
aXRzPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL2R0b2EuaD4K
QEAgLTU4LDYgKzU5LDExIEBAIFN0cmluZyBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFj
ZXMoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgcmV0dXJuIHN0cmluZy5zdWJzdHJpbmcobnVt
TGVhZGluZ1NwYWNlcywgbGVuZ3RoIC0gKG51bUxlYWRpbmdTcGFjZXMgKyBudW1UcmFpbGluZ1Nw
YWNlcykpOwogfQogCitTdHJpbmcgc2VyaWFsaXplRm9yTnVtYmVyVHlwZShjb25zdCBEZWNpbWFs
JiBudW1iZXIpCit7CisgICAgcmV0dXJuIG51bWJlci50b1N0cmluZygpOworfQorCiBTdHJpbmcg
c2VyaWFsaXplRm9yTnVtYmVyVHlwZShkb3VibGUgbnVtYmVyKQogewogICAgIC8vIEFjY29yZGlu
ZyB0byBIVE1MNSwgInRoZSBiZXN0IHJlcHJlc2VudGF0aW9uIG9mIHRoZSBudW1iZXIgbiBhcyBh
IGZsb2F0aW5nCkBAIC02Niw2ICs3Miw0MCBAQCBTdHJpbmcgc2VyaWFsaXplRm9yTnVtYmVyVHlw
ZShkb3VibGUgbnVtYmVyKQogICAgIHJldHVybiBTdHJpbmcobnVtYmVyVG9TdHJpbmcobnVtYmVy
LCBidWZmZXIpKTsKIH0KIAorRGVjaW1hbCBwYXJzZVRvRGVjaW1hbEZvck51bWJlclR5cGUoY29u
c3QgU3RyaW5nJiBzdHJpbmcsIGNvbnN0IERlY2ltYWwmIGZhbGxiYWNrVmFsdWUpCit7CisgICAg
Ly8gU2VlIEhUTUw1IDIuNS40LjMgYFJlYWwgbnVtYmVycy4nIGFuZCBwYXJzZVRvRG91YmxlRm9y
TnVtYmVyVHlwZQorCisgICAgLy8gU3RyaW5nOjp0b0RvdWJsZSgpIGFjY2VwdHMgbGVhZGluZyAr
IGFuZCB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMsIHdoaWNoIGFyZSBub3QgdmFsaWQgaGVyZS4KKyAg
ICBVQ2hhciBmaXJzdENoYXJhY3RlciA9IHN0cmluZ1swXTsKKyAgICBpZiAoZmlyc3RDaGFyYWN0
ZXIgIT0gJy0nICYmIGZpcnN0Q2hhcmFjdGVyICE9ICcuJyAmJiAhaXNBU0NJSURpZ2l0KGZpcnN0
Q2hhcmFjdGVyKSkKKyAgICAgICAgcmV0dXJuIGZhbGxiYWNrVmFsdWU7CisKKyAgICBEZWNpbWFs
IHZhbHVlID0gRGVjaW1hbDo6ZnJvbVN0cmluZyhzdHJpbmcpOworICAgIGlmICghdmFsdWUuaXNG
aW5pdGUoKSkKKyAgICAgICAgcmV0dXJuIGZhbGxiYWNrVmFsdWU7CisKKyAgICAvLyBGSVhNRTog
VUlOVDY0X0MoMTc5NzY5MzEzNDg2MjMxNTkpIHNob3VsZCBiZSB1c2VkIGJ1dCBpdCBkaWQgbm90
IGNvbXBpbGUgb24gUXQgYm90cy4KKyNpZiBDT01QSUxFUihNU1ZDKQorICAgIGNvbnN0IHVpbnQ2
NF90IGxlYWRpbmdEaWdpdHNPZjJQb3dlcjEwMjQgPSAxNzk3NjkzMTM0ODYyMzE1OXVpNjQ7Cisj
ZWxzZQorICAgIGNvbnN0IHVpbnQ2NF90IGxlYWRpbmdEaWdpdHNPZjJQb3dlcjEwMjQgPSAxNzk3
NjkzMTM0ODYyMzE1OXVsbDsKKyNlbmRpZgorICAgIERlY2ltYWwgaHRtbE1heChEZWNpbWFsOjpF
bmNvZGVkRGF0YShsZWFkaW5nRGlnaXRzT2YyUG93ZXIxMDI0LCAyOTIsIERlY2ltYWw6OlBsdXMp
KTsKKyAgICBEZWNpbWFsIGh0bWxNaW4oRGVjaW1hbDo6RW5jb2RlZERhdGEobGVhZGluZ0RpZ2l0
c09mMlBvd2VyMTAyNCwgMjkyLCBEZWNpbWFsOjpNaW51cykpOworCisgICAgaWYgKHZhbHVlIDwg
aHRtbE1pbiB8fCB2YWx1ZSA+IGh0bWxNYXgpCisgICAgICAgIHJldHVybiBmYWxsYmFja1ZhbHVl
OworCisgICAgLy8gV2UgcmV0dXJuICswIGZvciAtMCBjYXNlLgorICAgIHJldHVybiB2YWx1ZS5p
c1plcm8oKSA/IERlY2ltYWwoMCkgOiB2YWx1ZTsKK30KKworRGVjaW1hbCBwYXJzZVRvRGVjaW1h
bEZvck51bWJlclR5cGUoY29uc3QgU3RyaW5nJiBzdHJpbmcpCit7CisgICAgcmV0dXJuIHBhcnNl
VG9EZWNpbWFsRm9yTnVtYmVyVHlwZShzdHJpbmcsIERlY2ltYWw6Om5hbigpKTsKK30KKwogZG91
YmxlIHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBkb3Vi
bGUgZmFsbGJhY2tWYWx1ZSkKIHsKICAgICAvLyBTZWUgSFRNTDUgMi41LjQuMyBgUmVhbCBudW1i
ZXJzLicKQEAgLTk4LDg0ICsxMzgsNiBAQCBkb3VibGUgcGFyc2VUb0RvdWJsZUZvck51bWJlclR5
cGUoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgcmV0dXJuIHBhcnNlVG9Eb3VibGVGb3JOdW1i
ZXJUeXBlKHN0cmluZywgc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKSk7
CiB9CiAKLWRvdWJsZSBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZVdpdGhEZWNpbWFsUGxhY2Vz
KGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1bnNpZ25lZCAqZGVjaW1hbFBsYWNlcywgZG91YmxlIGZh
bGxiYWNrVmFsdWUpCi17Ci0gICAgaWYgKGRlY2ltYWxQbGFjZXMpCi0gICAgICAgICpkZWNpbWFs
UGxhY2VzID0gMDsKLQotICAgIGRvdWJsZSB2YWx1ZSA9IHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJU
eXBlKHN0cmluZywgc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKSk7Ci0g
ICAgaWYgKCFpc2Zpbml0ZSh2YWx1ZSkpCi0gICAgICAgIHJldHVybiBmYWxsYmFja1ZhbHVlOwot
Ci0gICAgaWYgKCFkZWNpbWFsUGxhY2VzKQotICAgICAgICByZXR1cm4gdmFsdWU7Ci0KLSAgICBz
aXplX3QgZG90SW5kZXggPSBzdHJpbmcuZmluZCgnLicpOwotICAgIHNpemVfdCBlSW5kZXggPSBz
dHJpbmcuZmluZCgnZScpOwotICAgIGlmIChlSW5kZXggPT0gbm90Rm91bmQpIAotICAgICAgICBl
SW5kZXggPSBzdHJpbmcuZmluZCgnRScpOwotCi0gICAgdW5zaWduZWQgYmFzZURlY2ltYWxQbGFj
ZXMgPSAwOwotICAgIGlmIChkb3RJbmRleCAhPSBub3RGb3VuZCkgewotICAgICAgICBpZiAoZUlu
ZGV4ID09IG5vdEZvdW5kKQotICAgICAgICAgICAgYmFzZURlY2ltYWxQbGFjZXMgPSBzdHJpbmcu
bGVuZ3RoKCkgLSBkb3RJbmRleCAtIDE7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGJhc2VE
ZWNpbWFsUGxhY2VzID0gZUluZGV4IC0gZG90SW5kZXggLSAxOwotICAgIH0KLQotICAgIGludCBl
eHBvbmVudCA9IDA7Ci0gICAgaWYgKGVJbmRleCAhPSBub3RGb3VuZCkgewotICAgICAgICB1bnNp
Z25lZCBjdXJzb3IgPSBlSW5kZXggKyAxLCBjdXJzb3JTYXZlZDsKLSAgICAgICAgaW50IGRpZ2l0
LCBleHBvbmVudFNpZ247Ci0gICAgICAgIGludDMyX3QgZXhwb25lbnQzMjsKLSAgICAgICAgc2l6
ZV90IGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKLQotICAgICAgICAvLyBOb3QgdXNpbmcgU3Ry
aW5nLnRvSW50KCkgaW4gb3JkZXIgdG8gcGVyZm9ybSB0aGUgc2FtZSBjb21wdXRhdGlvbiBhcyBk
dG9hKCkgZG9lcy4KLSAgICAgICAgZXhwb25lbnRTaWduID0gMDsKLSAgICAgICAgc3dpdGNoIChk
aWdpdCA9IHN0cmluZ1tjdXJzb3JdKSB7Ci0gICAgICAgIGNhc2UgJy0nOgotICAgICAgICAgICAg
ZXhwb25lbnRTaWduID0gMTsKLSAgICAgICAgY2FzZSAnKyc6Ci0gICAgICAgICAgICBkaWdpdCA9
IHN0cmluZ1srK2N1cnNvcl07Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGRpZ2l0ID49ICcwJyAm
JiBkaWdpdCA8PSAnOScpIHsKLSAgICAgICAgICAgIHdoaWxlIChjdXJzb3IgPCBsZW5ndGggJiYg
ZGlnaXQgPT0gJzAnKQotICAgICAgICAgICAgICAgIGRpZ2l0ID0gc3RyaW5nWysrY3Vyc29yXTsK
LSAgICAgICAgICAgIGlmIChkaWdpdCA+ICcwJyAmJiBkaWdpdCA8PSAnOScpIHsKLSAgICAgICAg
ICAgICAgICBleHBvbmVudDMyID0gZGlnaXQgLSAnMCc7Ci0gICAgICAgICAgICAgICAgY3Vyc29y
U2F2ZWQgPSBjdXJzb3I7Ci0gICAgICAgICAgICAgICAgd2hpbGUgKGN1cnNvciA8IGxlbmd0aCAm
JiAoZGlnaXQgPSBzdHJpbmdbKytjdXJzb3JdKSA+PSAnMCcgJiYgZGlnaXQgPD0gJzknKQotICAg
ICAgICAgICAgICAgICAgICBleHBvbmVudDMyID0gKDEwICogZXhwb25lbnQzMikgKyBkaWdpdCAt
ICcwJzsKLSAgICAgICAgICAgICAgICBpZiAoY3Vyc29yIC0gY3Vyc29yU2F2ZWQgPiA4IHx8IGV4
cG9uZW50MzIgPiAxOTk5OSkKLSAgICAgICAgICAgICAgICAgICAgLyogQXZvaWQgY29uZnVzaW9u
IGZyb20gZXhwb25lbnRzCi0gICAgICAgICAgICAgICAgICAgICAqIHNvIGxhcmdlIHRoYXQgZSBt
aWdodCBvdmVyZmxvdy4KLSAgICAgICAgICAgICAgICAgICAgICovCi0gICAgICAgICAgICAgICAg
ICAgIGV4cG9uZW50ID0gMTk5OTk7IC8qIHNhZmUgZm9yIDE2IGJpdCBpbnRzICovCi0gICAgICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBleHBvbmVudCA9IHN0YXRpY19jYXN0
PGludD4oZXhwb25lbnQzMik7Ci0gICAgICAgICAgICAgICAgaWYgKGV4cG9uZW50U2lnbikKLSAg
ICAgICAgICAgICAgICAgICAgZXhwb25lbnQgPSAtZXhwb25lbnQ7Ci0gICAgICAgICAgICB9IGVs
c2UKLSAgICAgICAgICAgICAgICBleHBvbmVudCA9IDA7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAg
ICBpbnQgaW50RGVjaW1hbFBsYWNlcyA9IGJhc2VEZWNpbWFsUGxhY2VzIC0gZXhwb25lbnQ7Ci0g
ICAgaWYgKGludERlY2ltYWxQbGFjZXMgPCAwKQotICAgICAgICAqZGVjaW1hbFBsYWNlcyA9IDA7
Ci0gICAgZWxzZSBpZiAoaW50RGVjaW1hbFBsYWNlcyA+IDE5OTk5KQotICAgICAgICAqZGVjaW1h
bFBsYWNlcyA9IDE5OTk5OwotICAgIGVsc2UKLSAgICAgICAgKmRlY2ltYWxQbGFjZXMgPSBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oaW50RGVjaW1hbFBsYWNlcyk7Ci0KLSAgICByZXR1cm4gdmFsdWU7
Ci19Ci0KLWRvdWJsZSBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZVdpdGhEZWNpbWFsUGxhY2Vz
KGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1bnNpZ25lZCAqZGVjaW1hbFBsYWNlcykKLXsKLSAgICBy
ZXR1cm4gcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGVXaXRoRGVjaW1hbFBsYWNlcyhzdHJpbmcs
IGRlY2ltYWxQbGFjZXMsIHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCkp
OwotfQotCiAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13
b3JrLyNydWxlcy1mb3ItcGFyc2luZy1pbnRlZ2VycwogYm9vbCBwYXJzZUhUTUxJbnRlZ2VyKGNv
bnN0IFN0cmluZyYgaW5wdXQsIGludCYgdmFsdWUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmgKaW5kZXggOGE3NzRmOWVlNDMyNWY3OTk2ZGNlZTgw
MmU3ODU5MjFmMTIwMDcyMS4uZThlYmJlM2QwNjBlMWEzOGM0YjQ4YTRjMDJhYjM1NTcxOWYyYWVi
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9t
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuaApA
QCAtMzAsNiArMzAsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIERlY2ltYWw7
CisKIC8vIFNwYWNlIGNoYXJhY3RlcnMgYXMgZGVmaW5lZCBieSB0aGUgSFRNTCBzcGVjaWZpY2F0
aW9uLgogYm9vbCBpc0hUTUxTcGFjZShVQ2hhcik7CiBib29sIGlzSFRNTExpbmVCcmVhayhVQ2hh
cik7CkBAIC0zOSwxNSArNDEsMTggQEAgYm9vbCBpc05vdEhUTUxTcGFjZShVQ2hhcik7CiBTdHJp
bmcgc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKGNvbnN0IFN0cmluZyYpOwogCiAv
LyBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgSFRNTCBzcGVjaWZpY2F0aW9uJ3MgYWxnb3JpdGht
IHRvIGNvbnZlcnQgYSBudW1iZXIgdG8gYSBzdHJpbmcgZm9yIG51bWJlciBhbmQgcmFuZ2UgdHlw
ZXMuCitTdHJpbmcgc2VyaWFsaXplRm9yTnVtYmVyVHlwZShjb25zdCBEZWNpbWFsJik7CiBTdHJp
bmcgc2VyaWFsaXplRm9yTnVtYmVyVHlwZShkb3VibGUpOwogCisvLyBDb252ZXJ0IHRoZSBzcGVj
aWZpZWQgc3RyaW5nIHRvIGEgZGVjaW1hbC4gSWYgdGhlIGNvbnZlcnNpb24gZmFpbHMsIHRoZSBy
ZXR1cm4gdmFsdWUgaXMgZmFsc2UuCisvLyBMZWFkaW5nIG9yIHRyYWlsaW5nIGlsbGVnYWwgY2hh
cmFjdGVycyBjYXVzZSBmYWlsdXJlLCBhcyBkb2VzIHBhc3NpbmcgYW4gZW1wdHkgc3RyaW5nLgor
RGVjaW1hbCBwYXJzZVRvRGVjaW1hbEZvck51bWJlclR5cGUoY29uc3QgU3RyaW5nJik7CitEZWNp
bWFsIHBhcnNlVG9EZWNpbWFsRm9yTnVtYmVyVHlwZShjb25zdCBTdHJpbmcmLCBjb25zdCBEZWNp
bWFsJiBmYWxsYmFja1ZhbHVlKTsKKwogLy8gQ29udmVydCB0aGUgc3BlY2lmaWVkIHN0cmluZyB0
byBhIGRvdWJsZS4gSWYgdGhlIGNvbnZlcnNpb24gZmFpbHMsIHRoZSByZXR1cm4gdmFsdWUgaXMg
ZmFsc2UuCiAvLyBMZWFkaW5nIG9yIHRyYWlsaW5nIGlsbGVnYWwgY2hhcmFjdGVycyBjYXVzZSBm
YWlsdXJlLCBhcyBkb2VzIHBhc3NpbmcgYW4gZW1wdHkgc3RyaW5nLgotLy8gVGhlIGRvdWJsZSog
cGFyYW1ldGVyIG1heSBiZSAwIHRvIGNoZWNrIGlmIHRoZSBzdHJpbmcgY2FuIGJlIHBhcnNlZCB3
aXRob3V0IGdldHRpbmcgdGhlIHJlc3VsdC4KIGRvdWJsZSBwYXJzZVRvRG91YmxlRm9yTnVtYmVy
VHlwZShjb25zdCBTdHJpbmcmKTsKIGRvdWJsZSBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZShj
b25zdCBTdHJpbmcmLCBkb3VibGUgZmFsbGJhY2tWYWx1ZSk7Ci1kb3VibGUgcGFyc2VUb0RvdWJs
ZUZvck51bWJlclR5cGVXaXRoRGVjaW1hbFBsYWNlcyhjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCop
OwotZG91YmxlIHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlV2l0aERlY2ltYWxQbGFjZXMoY29u
c3QgU3RyaW5nJiwgdW5zaWduZWQqLCBkb3VibGUgZmFsbGJhY2tWYWx1ZSk7CiAKIC8vIGh0dHA6
Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvI3J1bGVzLWZvci1w
YXJzaW5nLWludGVnZXJzCiBib29sIHBhcnNlSFRNTEludGVnZXIoY29uc3QgU3RyaW5nJiwgaW50
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9DYWxlbmRhclBpY2tl
ckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ2FsZW5kYXJQaWNrZXJF
bGVtZW50LmNwcAppbmRleCAxYTdiNDlmYTY0OGY5ZWUzNzgxNDk5NTRlNGE2N2JlZTE2NjJjZDU4
Li41MzU4Y2NhZjdhM2RmMmUzM2EwM2ViZjBjODg5MTFiMGMwODgyYmM1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9DYWxlbmRhclBpY2tlckVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NhbGVuZGFyUGlja2VyRWxlbWVudC5jcHAKQEAg
LTIwOCw3ICsyMDgsNyBAQCB2b2lkIENhbGVuZGFyUGlja2VyRWxlbWVudDo6d3JpdGVEb2N1bWVu
dChEb2N1bWVudFdyaXRlciYgd3JpdGVyKQogICAgIFN0cmluZyBtaW5TdHJpbmcgPSBkYXRlLnRv
U3RyaW5nKCk7CiAgICAgZGF0ZS5zZXRNaWxsaXNlY29uZHNTaW5jZUVwb2NoRm9yRGF0ZShpbnB1
dC0+bWF4aW11bSgpKTsKICAgICBTdHJpbmcgbWF4U3RyaW5nID0gZGF0ZS50b1N0cmluZygpOwot
ICAgIGRvdWJsZSBzdGVwOworICAgIERlY2ltYWwgc3RlcDsKICAgICBTdHJpbmcgc3RlcFN0cmlu
ZyA9IGlucHV0LT5mYXN0R2V0QXR0cmlidXRlKHN0ZXBBdHRyKTsKICAgICBpZiAoc3RlcFN0cmlu
Zy5pc0VtcHR5KCkgfHwgIWlucHV0LT5nZXRBbGxvd2VkVmFsdWVTdGVwKCZzdGVwKSkKICAgICAg
ICAgc3RlcFN0cmluZyA9ICIxIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9T
bGlkZXJUaHVtYkVsZW1lbnQuY3BwCmluZGV4IDg0MjJhMzAxOTkwMjI5OTExYjU4YjYwMDc4ZGQx
ODA5NjQ1ZDlkN2MuLmYyMGRmYWRjYTYwYjIwZDZiZTAwYzM5MTk3YTgyYTc1NTAxYWEwYjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNw
cApAQCAtNTEsMTAgKzUxLDEwIEBAIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotaW5saW5lIHN0YXRpYyBkb3VibGUgc2xpZGVyUG9zaXRpb24oSFRNTElucHV0
RWxlbWVudCogZWxlbWVudCkKK2lubGluZSBzdGF0aWMgRGVjaW1hbCBzbGlkZXJQb3NpdGlvbihI
VE1MSW5wdXRFbGVtZW50KiBlbGVtZW50KQogewogICAgIGNvbnN0IFN0ZXBSYW5nZSBzdGVwUmFu
Z2UoZWxlbWVudC0+Y3JlYXRlU3RlcFJhbmdlKFJlamVjdEFueSkpOwotICAgIGNvbnN0IGRvdWJs
ZSBvbGRWYWx1ZSA9IHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKGVsZW1lbnQtPnZhbHVlKCks
IHN0ZXBSYW5nZS5kZWZhdWx0VmFsdWUoKSk7CisgICAgY29uc3QgRGVjaW1hbCBvbGRWYWx1ZSA9
IHBhcnNlVG9EZWNpbWFsRm9yTnVtYmVyVHlwZShlbGVtZW50LT52YWx1ZSgpLCBzdGVwUmFuZ2Uu
ZGVmYXVsdFZhbHVlKCkpOwogICAgIHJldHVybiBzdGVwUmFuZ2UucHJvcG9ydGlvbkZyb21WYWx1
ZShzdGVwUmFuZ2UuY2xhbXBWYWx1ZShvbGRWYWx1ZSkpOwogfQogCkBAIC0xMTAsNyArMTEwLDcg
QEAgdm9pZCBSZW5kZXJTbGlkZXJUaHVtYjo6bGF5b3V0KCkKICAgICBIVE1MSW5wdXRFbGVtZW50
KiBpbnB1dCA9IG5vZGUoKS0+c2hhZG93QW5jZXN0b3JOb2RlKCktPnRvSW5wdXRFbGVtZW50KCk7
CiAgICAgYm9vbCBpc1ZlcnRpY2FsID0gc3R5bGUoKS0+YXBwZWFyYW5jZSgpID09IFNsaWRlclRo
dW1iVmVydGljYWxQYXJ0IHx8IHN0eWxlKCktPmFwcGVhcmFuY2UoKSA9PSBNZWRpYVZvbHVtZVNs
aWRlclRodW1iUGFydDsKIAotICAgIGRvdWJsZSBmcmFjdGlvbiA9IHNsaWRlclBvc2l0aW9uKGlu
cHV0KSAqIDEwMDsKKyAgICBkb3VibGUgZnJhY3Rpb24gPSBwYXJzZVRvRG91YmxlRm9yTnVtYmVy
VHlwZSgoc2xpZGVyUG9zaXRpb24oaW5wdXQpICogMTAwKS50b1N0cmluZygpKTsKICAgICBpZiAo
aXNWZXJ0aWNhbCkKICAgICAgICAgc3R5bGUoKS0+c2V0VG9wKExlbmd0aCgxMDAgLSBmcmFjdGlv
biwgUGVyY2VudCkpOwogICAgIGVsc2UgaWYgKHN0eWxlKCktPmlzTGVmdFRvUmlnaHREaXJlY3Rp
b24oKSkKQEAgLTIzNiwxMSArMjM2LDEwIEBAIHZvaWQgU2xpZGVyVGh1bWJFbGVtZW50OjpzZXRQ
b3NpdGlvbkZyb21Qb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQpCiAgICAgaWYgKHBvc2l0
aW9uID09IGN1cnJlbnRQb3NpdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgZG91YmxlIGZy
YWN0aW9uID0gc3RhdGljX2Nhc3Q8ZG91YmxlPihwb3NpdGlvbikgLyB0cmFja1NpemU7Ci0gICAg
aWYgKGlzVmVydGljYWwgfHwgIXJlbmRlckJveCgpLT5zdHlsZSgpLT5pc0xlZnRUb1JpZ2h0RGly
ZWN0aW9uKCkpCi0gICAgICAgIGZyYWN0aW9uID0gMSAtIGZyYWN0aW9uOwotICAgIFN0ZXBSYW5n
ZSBzdGVwUmFuZ2UoaW5wdXQtPmNyZWF0ZVN0ZXBSYW5nZShSZWplY3RBbnkpKTsKLSAgICBkb3Vi
bGUgdmFsdWUgPSBzdGVwUmFuZ2UuY2xhbXBWYWx1ZShzdGVwUmFuZ2UudmFsdWVGcm9tUHJvcG9y
dGlvbihmcmFjdGlvbikpOworICAgIGNvbnN0IERlY2ltYWwgcmF0aW8gPSBwYXJzZVRvRGVjaW1h
bEZvck51bWJlclR5cGUoc2VyaWFsaXplRm9yTnVtYmVyVHlwZShzdGF0aWNfY2FzdDxkb3VibGU+
KHBvc2l0aW9uKSAvIHRyYWNrU2l6ZSkpOworICAgIGNvbnN0IERlY2ltYWwgZnJhY3Rpb24gPSBp
c1ZlcnRpY2FsIHx8ICFyZW5kZXJCb3goKS0+c3R5bGUoKS0+aXNMZWZ0VG9SaWdodERpcmVjdGlv
bigpID8gIERlY2ltYWwoMSkgLSByYXRpbyA6IHJhdGlvOworICAgIGNvbnN0IFN0ZXBSYW5nZSBz
dGVwUmFuZ2UoaW5wdXQtPmNyZWF0ZVN0ZXBSYW5nZShSZWplY3RBbnkpKTsKKyAgICBjb25zdCBE
ZWNpbWFsIHZhbHVlID0gc3RlcFJhbmdlLmNsYW1wVmFsdWUoc3RlcFJhbmdlLnZhbHVlRnJvbVBy
b3BvcnRpb24oZnJhY3Rpb24pKTsKIAogICAgIC8vIEZJWE1FOiBUaGlzIGlzIG5vIGxvbmdlciBi
ZWluZyBzZXQgZnJvbSByZW5kZXJlci4gQ29uc2lkZXIgdXBkYXRpbmcgdGhlIG1ldGhvZCBuYW1l
LgogICAgIGlucHV0LT5zZXRWYWx1ZUZyb21SZW5kZXJlcihzZXJpYWxpemVGb3JOdW1iZXJUeXBl
KHZhbHVlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EZWNpbWFsLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RlY2ltYWwuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgxNDBk
YzU1MTY3ZWMxYTYxZWRmNTNiNDZlMDYwNDJjYTg1NGEzNTIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EZWNpbWFsLmNwcApAQCAtMCwwICsxLDExMTIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICog
ZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRGVjaW1hbC5oIgorCisjaW5jbHVkZSA8YWxnb3Jp
dGhtPgorI2luY2x1ZGUgPGZsb2F0Lmg+CisKKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgor
I2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1
aWxkZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgRGVjaW1hbFByaXZh
dGUgeworCit1c2luZyBuYW1lc3BhY2Ugc3RkOworCisvLyBGSVhNRTogVUlOVDY0X0MoMHgxNjM0
NTc4NUQ4OUZGRkYpIHNob3VsZCBiZSB1c2VkIGJ1dCBpdCBkaWQgbm90IGNvbXBpbGUgb24gUXQg
Ym90cy4KKyNpZiBDT01QSUxFUihNU1ZDKQorc3RhdGljIGNvbnN0IHVpbnQ2NF90IE1heENvZWZm
aWNpZW50ID0gMHgxNjM0NTc4NUQ4OUZGRkZ1aTY0OyAvLyA5OTk5OTk5OTk5OTk5OTk5OTk7IC8v
IDE4IDkncworI2Vsc2UKK3N0YXRpYyBjb25zdCB1aW50NjRfdCBNYXhDb2VmZmljaWVudCA9IDB4
MTYzNDU3ODVEODlGRkZGdWxsOyAvLyA5OTk5OTk5OTk5OTk5OTk5OTk7IC8vIDE4IDkncworI2Vu
ZGlmCisKK3N0YXRpYyBjb25zdCB1aW50MzJfdCBFeHBvbmVudE1hc2sgPSAweDdGRjsKKworc3Rh
dGljIGNvbnN0IHVpbnQzMl90IE5lZ2F0aXZlSW5maW5pdHlQYXR0ZXJuID0gdWludDMyX3QoMHg4
MDAwMDdGRik7CitzdGF0aWMgY29uc3QgdWludDMyX3QgUG9zaXRpdmVJbmZpbml0eVBhdHRlcm4g
PSB1aW50MzJfdCgweDAwMDAwN0ZGKTsKKworc3RhdGljIGNvbnN0IHVpbnQzMl90IE5hTlBhdHRl
cm4gPSB1aW50MzJfdCgweDAwMDAwRkZGKTsKKworc3RhdGljIGNvbnN0IHVpbnQzMl90IE5lZ2F0
aXZlWmVyb1BhdHRlcm4gPSB1aW50MzJfdCgweDgwMDAwM0ZGKTsKK3N0YXRpYyBjb25zdCB1aW50
MzJfdCBQb3NpdGl2ZVplcm9QYXR0ZXJuID0gdWludDMyX3QoMHgwMDAwMDNGRik7CisKK3N0YXRp
YyBjb25zdCB1aW50MzJfdCBOZWdhdGl2ZVBhdHRlcm4gPSB1aW50MzJfdCgweDgwMDAwMDAwKTsK
K3N0YXRpYyBjb25zdCB1aW50MzJfdCBQb3NpdGl2ZVBhdHRlcm4gPSAwOworCisvLyBUaGlzIGNs
YXNzIGhhbmRsZXMgRGVjaW1hbCBzcGVjaWFsIHZhbHVlcy4KK2NsYXNzIFNwZWNpYWxWYWx1ZUhh
bmRsZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNwZWNpYWxWYWx1ZUhhbmRsZXIpOwor
cHVibGljOgorICAgIGVudW0gSGFuZGxlUmVzdWx0IHsKKyAgICAgICAgQm90aEZpbml0ZSwKKyAg
ICAgICAgQm90aGluZmluaXR5LAorICAgICAgICBFaXRoZXJOYU4sCisgICAgICAgIExoc0lzaW5m
aW5pdHksCisgICAgICAgIFJoc0lzaW5maW5pdHksCisgICAgfTsKKworICAgIFNwZWNpYWxWYWx1
ZUhhbmRsZXIoY29uc3QgRGVjaW1hbCYsIGNvbnN0IERlY2ltYWwmKTsKKyAgICBIYW5kbGVSZXN1
bHQgaGFuZGxlKCk7CisgICAgRGVjaW1hbCB2YWx1ZSgpIGNvbnN0OworCitwcml2YXRlOgorICAg
IGVudW0gUmVzdWx0IHsKKyAgICAgICAgUmVzdWx0SXNMaHMsCisgICAgICAgIFJlc3VsdElzUmhz
LAorICAgICAgICBSZXN1bHRJc1Vua25vd24sCisgICAgfTsKKworICAgIGNvbnN0IERlY2ltYWwm
IG1fbGhzOworICAgIFJlc3VsdCBtX3Jlc3VsdDsKKyAgICBjb25zdCBEZWNpbWFsJiBtX3JoczsK
K307CisKKy8vIFRoaXMgY2xhc3MgaXMgdXNlZCBmb3IgMTI4IGJpdCB1bnNpZ25lZCBpbnRlZ2Vy
IGFyaXRobWV0aWMuCitjbGFzcyBVSW50MTI4IHsKK3B1YmxpYzoKKyAgICBVSW50MTI4KHVpbnQ2
NF90LCB1aW50NjRfdCk7CisKKyAgICBVSW50MTI4JiBvcGVyYXRvciAvPSh1aW50MzJfdCk7CisK
KyAgICB1aW50NjRfdCBoaWdoKCkgY29uc3QgeyByZXR1cm4gbV9oaWdoOyB9CisgICAgdWludDY0
X3QgbG93KCkgY29uc3QgeyByZXR1cm4gbV9sb3c7IH0KKworICAgIHN0YXRpYyBVSW50MTI4IG11
bHRpcGx5KHVpbnQ2NF90LCB1aW50NjRfdCk7CisKK3ByaXZhdGU6CisgICAgYm9vbCBpc1plcm8o
KSBjb25zdCB7IHJldHVybiAhbV9sb3cgJiYgIW1faGlnaDsgfQorCisgICAgdWludDY0X3QgbV9o
aWdoOworICAgIHVpbnQ2NF90IG1fbG93OworfTsKKworc3RhdGljIGludCBjb3VudERpZ2l0cyh1
aW50NjRfdCB4KQoreworICAgIGludCBudW1iZXJPZkRpZ2l0cyA9IDA7CisgICAgdWludDY0X3Qg
cG93ZXJPZjEwID0gMTsKKyAgICB3aGlsZSAoeCA+PSBwb3dlck9mMTApIHsKKyAgICAgICAgKytu
dW1iZXJPZkRpZ2l0czsKKyAgICAgICAgaWYgKHBvd2VyT2YxMCA+PSB1aW50NjRfdCgtMSkgLyAx
MCkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBwb3dlck9mMTAgKj0gMTA7CisgICAgfQor
ICAgIHJldHVybiBudW1iZXJPZkRpZ2l0czsKK30KKworc3RhdGljIHVpbnQ2NF90IG11bHRpcGx5
SGlnaCh1aW50NjRfdCB1LCB1aW50NjRfdCB2KQoreworICAgIGNvbnN0IGludCBuID0gNjQ7Cisg
ICAgY29uc3QgaW50IG4yID0gbiAvIDI7CisgICAgY29uc3QgdWludDY0X3QgbWFzayA9ICh1aW50
NjRfdCgxKSA8PCBuMikgLSAxOworICAgIHVpbnQ2NF90IHUwID0gdSAmIG1hc2s7CisgICAgdWlu
dDY0X3QgdTEgPSB1ID4+IG4yOworICAgIHVpbnQ2NF90IHYwID0gdiAmIG1hc2s7CisgICAgdWlu
dDY0X3QgdjEgPSB2ID4+IG4yOworICAgIHVpbnQ2NF90IHcwID0gdTAgKiB2MDsKKyAgICB1aW50
NjRfdCB0dCA9IHUxICogdjAgKyAodzAgPj4gbjIpOworICAgIHVpbnQ2NF90IHcxID0gdHQgJiBt
YXNrOworICAgIHVpbnQ2NF90IHcyID0gdHQgPj4gbjI7CisgICAgdzEgPSB1MCAqIHYxICsgdzE7
CisgICAgcmV0dXJuIHUxICogdjEgKyB3MiArICh3MSA+PiBuMik7Cit9CisKK3RlbXBsYXRlPHR5
cGVuYW1lIFQ+CitzdGF0aWMgVCBwb3dlcihUIGNvbnN0IHgsIHVuc2lnbmVkIG4pCit7CisgICAg
VCB5ID0gMTsKKyAgICBUIHogPSB4OworICAgIGZvciAoOzspIHsKKyAgICAgICAgaWYgKG4gJiAx
KQorICAgICAgICAgICAgeSA9IHkgKiB6OworCisgICAgICAgIG4gPj49IDE7CisgICAgICAgIGlm
ICghbikKKyAgICAgICAgICAgIHJldHVybiB5OworCisgICAgICAgIHogPSB6ICogejsKKyAgICB9
Cit9CisKK3N0YXRpYyB1aW50NjRfdCBzY2FsZURvd24odWludDY0X3QgeCwgaW50IG4pCit7Cisg
ICAgQVNTRVJUKG4gPj0gMCk7CisgICAgd2hpbGUgKG4gPiAwICYmIHgpIHsKKyAgICAgICAgeCAv
PSAxMDsKKyAgICAgICAgLS1uOworICAgIH0KKyAgICByZXR1cm4geDsKK30KKworc3RhdGljIHVp
bnQ2NF90IHNjYWxlVXAodWludDY0X3QgeCwgaW50IG4pCit7CisgICAgQVNTRVJUKG4gPj0gMCk7
CisgICAgQVNTRVJUKG4gPCBEZWNpbWFsOjpQcmVjaXNpb24pOworICAgIHVpbnQ2NF90IHJlc3Vs
dCA9IHggKiBwb3dlcih1aW50NjRfdCgxMCksIG4pOworICAgIEFTU0VSVChyZXN1bHQgPj0geCk7
CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworU3BlY2lhbFZhbHVlSGFuZGxlcjo6U3BlY2lhbFZh
bHVlSGFuZGxlcihjb25zdCBEZWNpbWFsJiBsaHMsIGNvbnN0IERlY2ltYWwmIHJocykKKyAgICA6
IG1fbGhzKGxocyksIG1fcmVzdWx0KFJlc3VsdElzVW5rbm93biksIG1fcmhzKHJocykKK3sKK30K
KworU3BlY2lhbFZhbHVlSGFuZGxlcjo6SGFuZGxlUmVzdWx0IFNwZWNpYWxWYWx1ZUhhbmRsZXI6
OmhhbmRsZSgpCit7CisgICAgaWYgKG1fbGhzLmlzRmluaXRlKCkgJiYgbV9yaHMuaXNGaW5pdGUo
KSkKKyAgICAgICAgcmV0dXJuIEJvdGhGaW5pdGU7CisKKyAgICBjb25zdCBEZWNpbWFsOjpGb3Jt
YXRDbGFzcyBsaHNDbGFzcyA9IG1fbGhzLmZvcm1hdENsYXNzKCk7CisgICAgY29uc3QgRGVjaW1h
bDo6Rm9ybWF0Q2xhc3MgcmhzQ2xhc3MgPSBtX3Jocy5mb3JtYXRDbGFzcygpOworICAgIGlmIChs
aHNDbGFzcyA9PSBEZWNpbWFsOjpDbGFzc05hTikgeworICAgICAgICBtX3Jlc3VsdCA9IFJlc3Vs
dElzTGhzOworICAgICAgICByZXR1cm4gRWl0aGVyTmFOOworICAgICB9CisKKyAgICBpZiAocmhz
Q2xhc3MgPT0gRGVjaW1hbDo6Q2xhc3NOYU4pIHsKKyAgICAgICAgbV9yZXN1bHQgPSBSZXN1bHRJ
c1JoczsKKyAgICAgICAgcmV0dXJuIEVpdGhlck5hTjsKKyAgICAgfQorCisgICAgaWYgKGxoc0Ns
YXNzID09IERlY2ltYWw6OkNsYXNzSW5maW5pdHkpCisgICAgICAgIHJldHVybiByaHNDbGFzcyA9
PSBEZWNpbWFsOjpDbGFzc0luZmluaXR5ID8gQm90aGluZmluaXR5IDogTGhzSXNpbmZpbml0eTsK
KworICAgIGlmIChyaHNDbGFzcyA9PSBEZWNpbWFsOjpDbGFzc0luZmluaXR5KQorICAgICAgICBy
ZXR1cm4gUmhzSXNpbmZpbml0eTsKKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJl
dHVybiBCb3RoRmluaXRlOworfQorCitEZWNpbWFsIFNwZWNpYWxWYWx1ZUhhbmRsZXI6OnZhbHVl
KCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKG1fcmVzdWx0KSB7CisgICAgY2FzZSBSZXN1bHRJc0xo
czoKKyAgICAgICAgcmV0dXJuIG1fbGhzOworICAgIGNhc2UgUmVzdWx0SXNSaHM6CisgICAgICAg
IHJldHVybiBtX3JoczsKKyAgICBjYXNlIFJlc3VsdElzVW5rbm93bjoKKyAgICBkZWZhdWx0Ogor
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIG1fbGhzOworICAg
IH0KK30KKworVUludDEyODo6VUludDEyOCh1aW50NjRfdCBsb3csIHVpbnQ2NF90IGhpZ2gpCisg
ICAgOiBtX2hpZ2goaGlnaCksIG1fbG93KGxvdykKK3sKK30KKworVUludDEyOCYgVUludDEyODo6
b3BlcmF0b3IgLz0oY29uc3QgdWludDMyX3QgZGl2aXNvcikKK3sKKyAgICBpZiAoIW1faGlnaCkg
eworICAgICAgICBtX2xvdyAvPSBkaXZpc29yOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAg
fQorCisgICAgdWludDMyX3QgZGl2aWRlbmRbNF07CisgICAgZGl2aWRlbmRbMF0gPSB1aW50MzJf
dChtX2xvdyAmIHVpbnQzMl90KC0xKSk7CisgICAgZGl2aWRlbmRbMV0gPSB1aW50MzJfdChtX2xv
dyA+PiAzMik7CisgICAgZGl2aWRlbmRbMl0gPSB1aW50MzJfdChtX2hpZ2ggJiB1aW50MzJfdCgt
MSkpOworICAgIGRpdmlkZW5kWzNdID0gdWludDMyX3QobV9oaWdoID4+IDMyKTsKKworICAgIHVp
bnQzMl90IHF1b3RpZW50WzRdOworICAgIHVpbnQzMl90IHJlbWFpbmRlciA9IDA7CisgICAgZm9y
IChpbnQgaSA9IDM7IGkgPj0gMDsgLS1pKSB7CisgICAgICAgIGNvbnN0IHVpbnQ2NF90IHdvcmsg
PSAodWludDY0X3QocmVtYWluZGVyKSA8PCAzMikgfCBkaXZpZGVuZFtpXTsKKyAgICAgICAgcmVt
YWluZGVyID0gdWludDMyX3Qod29yayAlIGRpdmlzb3IpOworICAgICAgICBxdW90aWVudFtpXSA9
IHVpbnQzMl90KHdvcmsgLyBkaXZpc29yKTsKKyAgICB9CisgICAgbV9sb3cgPSBxdW90aWVudFsw
XSB8ICh1aW50NjRfdChxdW90aWVudFsxXSkgPDwgMzIpOworICAgIG1faGlnaCA9IHF1b3RpZW50
WzJdIHwgKHVpbnQ2NF90KHF1b3RpZW50WzNdKSA8PCAzMik7CisgICAgcmV0dXJuICp0aGlzOwor
fQorCitVSW50MTI4IFVJbnQxMjg6Om11bHRpcGx5KHVpbnQ2NF90IHUsIHVpbnQ2NF90IHYpCit7
CisgICAgcmV0dXJuIFVJbnQxMjgodSAqIHYsIG11bHRpcGx5SGlnaCh1LCB2KSk7Cit9CisKK30g
Ly8gRGVjaW1hbFByaXZhdGUKKwordXNpbmcgbmFtZXNwYWNlIERlY2ltYWxQcml2YXRlOworCitE
ZWNpbWFsOjpFbmNvZGVkRGF0YTo6RW5jb2RlZERhdGEodWludDMyX3QgcGF0dGVybikKKyAgICA6
IG1fY29lZmZpY2llbnQoMCkKKyAgICAsIG1fcGFja2VkRmllbGQocGF0dGVybikKK3sKKyAgICBB
U1NFUlQoKHBhdHRlcm4gJiBQb3NpdGl2ZVplcm9QYXR0ZXJuKSA9PSBQb3NpdGl2ZVplcm9QYXR0
ZXJuKTsKK30KKworRGVjaW1hbDo6RW5jb2RlZERhdGE6OkVuY29kZWREYXRhKHVpbnQ2NF90IGNv
ZWZmaWNpZW50LCBjb25zdCBpbnQgZXhwb25lbnQsIGNvbnN0IFNpZ24gc2lnbikKK3sKKyAgICBp
bnQgcmF3RXhwb25lbnQgPSBleHBvbmVudCArIEViaWFzOworICAgIGlmICh1bnNpZ25lZChyYXdF
eHBvbmVudCkgPCB1bnNpZ25lZChFbWF4KSkgeworICAgICAgICB3aGlsZSAoY29lZmZpY2llbnQg
Pj0gTWF4Q29lZmZpY2llbnQpIHsKKyAgICAgICAgICAgIGNvZWZmaWNpZW50IC89IDEwOworICAg
ICAgICAgICAgKytyYXdFeHBvbmVudDsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChyYXdF
eHBvbmVudCA+PSBFbWF4KSB7CisgICAgICAgIG1fY29lZmZpY2llbnQgPSAwOworICAgICAgICBt
X3BhY2tlZEZpZWxkID0gc2lnbiA9PSBNaW51cyA/IE5lZ2F0aXZlSW5maW5pdHlQYXR0ZXJuIDog
UG9zaXRpdmVJbmZpbml0eVBhdHRlcm47CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBp
ZiAocmF3RXhwb25lbnQgPCAwKSB7CisgICAgICAgIG1fY29lZmZpY2llbnQgPSAwOworICAgICAg
ICBtX3BhY2tlZEZpZWxkID0gc2lnbiA9PSBNaW51cyA/IE5lZ2F0aXZlWmVyb1BhdHRlcm4gOiBQ
b3NpdGl2ZVplcm9QYXR0ZXJuOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9jb2Vm
ZmljaWVudCA9IGNvZWZmaWNpZW50OworICAgIG1fcGFja2VkRmllbGQgPSByYXdFeHBvbmVudCB8
IChzaWduID09IE1pbnVzID8gTmVnYXRpdmVQYXR0ZXJuIDogUG9zaXRpdmVQYXR0ZXJuKTsKK30K
KwordWludDY0X3QgRGVjaW1hbDo6RW5jb2RlZERhdGE6OmNvZWZmaWNpZW50KCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9jb2VmZmljaWVudDsKK30KKworaW50IERlY2ltYWw6OkVuY29kZWREYXRh
OjpleHBvbmVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHJhd0V4cG9uZW50KCkgLSBEZWNpbWFs
OjpFYmlhczsKK30KKworYm9vbCBEZWNpbWFsOjpFbmNvZGVkRGF0YTo6aXNGaW5pdGUoKSBjb25z
dAoreworICAgIHJldHVybiAhaXNTcGVjaWFsKCk7Cit9CisKK2Jvb2wgRGVjaW1hbDo6RW5jb2Rl
ZERhdGE6OmlzU3BlY2lhbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHJhd0V4cG9uZW50KCkgPT0g
RGVjaW1hbDo6RW1heDsKK30KKworYm9vbCBEZWNpbWFsOjpFbmNvZGVkRGF0YTo6aXNaZXJvKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gaXNGaW5pdGUoKSAmJiAhbV9jb2VmZmljaWVudDsKK30KKwor
aW50IERlY2ltYWw6OkVuY29kZWREYXRhOjpyYXdFeHBvbmVudCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIGludChtX3BhY2tlZEZpZWxkICYgRXhwb25lbnRNYXNrKTsKK30KKworRGVjaW1hbDo6U2ln
biBEZWNpbWFsOjpFbmNvZGVkRGF0YTo6c2lnbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIGludCht
X3BhY2tlZEZpZWxkKSA8IDAgPyBNaW51cyA6IFBsdXM7Cit9CisKK3ZvaWQgRGVjaW1hbDo6RW5j
b2RlZERhdGE6OnNldFNpZ24oY29uc3QgU2lnbiBzaWduKQoreworICAgIGlmIChzaWduID09IE1p
bnVzKQorICAgICAgICBtX3BhY2tlZEZpZWxkIHw9IHVpbnQzMl90KDEpIDw8IDMxOworICAgIGVs
c2UKKyAgICAgICAgbV9wYWNrZWRGaWVsZCAmPSB+KHVpbnQzMl90KDEpIDw8IDMxKTsKK30KKwor
RGVjaW1hbDo6RGVjaW1hbCgpCisgICAgOiBtX2RhdGEoMCwgMCwgUGx1cykKK3sKK30KKworRGVj
aW1hbDo6RGVjaW1hbChpbnQzMl90IGkzMikKKyAgICA6IG1fZGF0YShpMzIgPCAwID8gdWludDMy
X3QoLWkzMikgOiBpMzIsIDAsIGkzMiA8IDAgPyBNaW51cyA6IFBsdXMpCit7Cit9CisKK0RlY2lt
YWw6OkRlY2ltYWwodWludDY0X3QgY29lZmZpY2llbnQsIGludCBleHBvbmVudCwgU2lnbiBzaWdu
KQorICAgIDogbV9kYXRhKGNvZWZmaWNpZW50LCBleHBvbmVudCwgc2lnbikKK3sKK30KKworRGVj
aW1hbDo6RGVjaW1hbChjb25zdCBFbmNvZGVkRGF0YSYgZGF0YSkKKyAgICA6IG1fZGF0YShkYXRh
KQoreworfQorCitEZWNpbWFsOjpEZWNpbWFsKGNvbnN0IERlY2ltYWwmIG90aGVyKQorICAgIDog
bV9kYXRhKG90aGVyLm1fZGF0YSkKK3sKK30KKworRGVjaW1hbCYgRGVjaW1hbDo6b3BlcmF0b3Ig
PShjb25zdCBEZWNpbWFsJiBvdGhlcikKK3sKKyAgICBtX2RhdGEgPSBvdGhlci5tX2RhdGE7Cisg
ICAgcmV0dXJuICp0aGlzOworfQorCitEZWNpbWFsJiBEZWNpbWFsOjpvcGVyYXRvciArPShjb25z
dCBEZWNpbWFsJiBvdGhlcikKK3sKKyAgICBtX2RhdGEgPSAoKnRoaXMgKyBvdGhlcikubV9kYXRh
OworICAgIHJldHVybiAqdGhpczsKK30KKworRGVjaW1hbCYgRGVjaW1hbDo6b3BlcmF0b3IgLT0o
Y29uc3QgRGVjaW1hbCYgb3RoZXIpCit7CisgICAgbV9kYXRhID0gKCp0aGlzIC0gb3RoZXIpLm1f
ZGF0YTsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK0RlY2ltYWwmIERlY2ltYWw6Om9wZXJhdG9y
ICo9KGNvbnN0IERlY2ltYWwmIG90aGVyKQoreworICAgIG1fZGF0YSA9ICgqdGhpcyAqIG90aGVy
KS5tX2RhdGE7CisgICAgcmV0dXJuICp0aGlzOworfQorCitEZWNpbWFsJiBEZWNpbWFsOjpvcGVy
YXRvciAvPShjb25zdCBEZWNpbWFsJiBvdGhlcikKK3sKKyAgICBtX2RhdGEgPSAoKnRoaXMgLyBv
dGhlcikubV9kYXRhOworICAgIHJldHVybiAqdGhpczsKK30KKworRGVjaW1hbCBEZWNpbWFsOjpv
cGVyYXRvciAtKCkgY29uc3QKK3sKKyAgICBEZWNpbWFsIHJlc3VsdCgqdGhpcyk7CisgICAgcmVz
dWx0Lm1fZGF0YS5zZXRTaWduKGludmVydFNpZ24obV9kYXRhLnNpZ24oKSkpOworICAgIHJldHVy
biByZXN1bHQ7Cit9CisKK0RlY2ltYWwgRGVjaW1hbDo6b3BlcmF0b3IgKyhjb25zdCBEZWNpbWFs
JiByaHMpIGNvbnN0Cit7CisgICAgY29uc3QgRGVjaW1hbCYgbGhzID0gKnRoaXM7CisgICAgY29u
c3QgU2lnbiBsaHNTaWduID0gbGhzLnNpZ24oKTsKKyAgICBjb25zdCBTaWduIHJoc1NpZ24gPSBy
aHMuc2lnbigpOworCisgICAgU3BlY2lhbFZhbHVlSGFuZGxlciBoYW5kbGVyKGxocywgcmhzKTsK
KyAgICBzd2l0Y2ggKGhhbmRsZXIuaGFuZGxlKCkpIHsKKyAgICBjYXNlIFNwZWNpYWxWYWx1ZUhh
bmRsZXI6OkJvdGhGaW5pdGU6CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBTcGVjaWFsVmFs
dWVIYW5kbGVyOjpCb3RoaW5maW5pdHk6CisgICAgICAgIHJldHVybiBsaHNTaWduID09IHJoc1Np
Z24gPyBsaHMgOiBuYW4oKTsKKworICAgIGNhc2UgU3BlY2lhbFZhbHVlSGFuZGxlcjo6RWl0aGVy
TmFOOgorICAgICAgICByZXR1cm4gaGFuZGxlci52YWx1ZSgpOworCisgICAgY2FzZSBTcGVjaWFs
VmFsdWVIYW5kbGVyOjpMaHNJc2luZmluaXR5OgorICAgICAgICByZXR1cm4gbGhzOworCisgICAg
Y2FzZSBTcGVjaWFsVmFsdWVIYW5kbGVyOjpSaHNJc2luZmluaXR5OgorICAgICAgICByZXR1cm4g
cmhzOworICAgIH0KKworICAgIEFTU0VSVChsaHMuaXNGaW5pdGUoKSk7CisgICAgQVNTRVJUKHJo
cy5pc0Zpbml0ZSgpKTsKKworICAgIGNvbnN0IGludCBsaHNFeHBvbmVudCA9IGxocy5leHBvbmVu
dCgpOworICAgIGNvbnN0IGludCByaHNFeHBvbmVudCA9IHJocy5leHBvbmVudCgpOworICAgIGlu
dCByZXN1bHRFeHBvbmVudCA9IG1pbihsaHNFeHBvbmVudCwgcmhzRXhwb25lbnQpOworICAgIHVp
bnQ2NF90IGxoc0NvZWZmaWNpZW50ID0gbGhzLm1fZGF0YS5jb2VmZmljaWVudCgpOworICAgIHVp
bnQ2NF90IHJoc0NvZWZmaWNpZW50ID0gcmhzLm1fZGF0YS5jb2VmZmljaWVudCgpOworCisgICAg
Ly8gTWFrZSBjb2VmZmljaWVudCBhbGlnbmVkLgorICAgIGlmIChsaHNFeHBvbmVudCA+IHJoc0V4
cG9uZW50KSB7CisgICAgICAgIGNvbnN0IGludCBudW1iZXJPZkxIU0RpZ2l0cyA9IGNvdW50RGln
aXRzKGxoc0NvZWZmaWNpZW50KTsKKyAgICAgICAgaWYgKG51bWJlck9mTEhTRGlnaXRzKSB7Cisg
ICAgICAgICAgICBjb25zdCBpbnQgbGhzU2hpZnRBbW91bnQgPSBsaHNFeHBvbmVudCAtIHJoc0V4
cG9uZW50OworICAgICAgICAgICAgY29uc3QgaW50IG92ZXJmbG93ID0gbnVtYmVyT2ZMSFNEaWdp
dHMgKyBsaHNTaGlmdEFtb3VudCAtIFByZWNpc2lvbjsKKyAgICAgICAgICAgIGlmIChvdmVyZmxv
dyA8PSAwKQorICAgICAgICAgICAgICAgIGxoc0NvZWZmaWNpZW50ID0gc2NhbGVVcChsaHNDb2Vm
ZmljaWVudCwgbGhzU2hpZnRBbW91bnQpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICAgICAgbGhzQ29lZmZpY2llbnQgPSBzY2FsZVVwKGxoc0NvZWZmaWNpZW50LCBsaHNTaGlmdEFt
b3VudCAtIG92ZXJmbG93KTsKKyAgICAgICAgICAgICAgICByaHNDb2VmZmljaWVudCA9IHNjYWxl
RG93bihyaHNDb2VmZmljaWVudCwgb3ZlcmZsb3cpOworICAgICAgICAgICAgICAgIHJlc3VsdEV4
cG9uZW50ICs9IG92ZXJmbG93OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICB9IGlm
IChsaHNFeHBvbmVudCA8IHJoc0V4cG9uZW50KSB7CisgICAgICAgIGNvbnN0IGludCBudW1iZXJP
ZlJIU0RpZ2l0cyA9IGNvdW50RGlnaXRzKHJoc0NvZWZmaWNpZW50KTsKKyAgICAgICAgaWYgKG51
bWJlck9mUkhTRGlnaXRzKSB7CisgICAgICAgICAgICBjb25zdCBpbnQgcmhzU2hpZnRBbW91bnQg
PSByaHNFeHBvbmVudCAtIGxoc0V4cG9uZW50OworICAgICAgICAgICAgY29uc3QgaW50IG92ZXJm
bG93ID0gbnVtYmVyT2ZSSFNEaWdpdHMgKyByaHNTaGlmdEFtb3VudCAtIFByZWNpc2lvbjsKKyAg
ICAgICAgICAgIGlmIChvdmVyZmxvdyA8PSAwKQorICAgICAgICAgICAgICAgIHJoc0NvZWZmaWNp
ZW50ID0gc2NhbGVVcChyaHNDb2VmZmljaWVudCwgcmhzU2hpZnRBbW91bnQpOworICAgICAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICAgICAgcmhzQ29lZmZpY2llbnQgPSBzY2FsZVVwKHJoc0Nv
ZWZmaWNpZW50LCByaHNTaGlmdEFtb3VudCAtIG92ZXJmbG93KTsKKyAgICAgICAgICAgICAgICBs
aHNDb2VmZmljaWVudCA9IHNjYWxlRG93bihsaHNDb2VmZmljaWVudCwgb3ZlcmZsb3cpOworICAg
ICAgICAgICAgICAgIHJlc3VsdEV4cG9uZW50ICs9IG92ZXJmbG93OworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgfQorCisgICAgdWludDY0X3QgY29uc3QgcmVzdWx0ID0gbGhzU2lnbiA9
PSByaHNTaWduID8gbGhzQ29lZmZpY2llbnQgKyByaHNDb2VmZmljaWVudCA6IGxoc0NvZWZmaWNp
ZW50IC0gcmhzQ29lZmZpY2llbnQ7CisgICAgcmV0dXJuIGxoc1NpZ24gPT0gTWludXMgJiYgcmhz
U2lnbiA9PSBQbHVzICYmICFyZXN1bHQKKyAgICAgICAgICAgID8gRGVjaW1hbCgwLCByZXN1bHRF
eHBvbmVudCwgUGx1cykKKyAgICAgICAgICAgIDogaW50NjRfdChyZXN1bHQpID49IDAKKyAgICAg
ICAgICAgICAgICA/IERlY2ltYWwocmVzdWx0LCByZXN1bHRFeHBvbmVudCwgbGhzU2lnbikKKyAg
ICAgICAgICAgICAgICA6IERlY2ltYWwoLWludDY0X3QocmVzdWx0KSwgcmVzdWx0RXhwb25lbnQs
IGludmVydFNpZ24obGhzU2lnbikpOworfQorCitEZWNpbWFsIERlY2ltYWw6Om9wZXJhdG9yIC0o
Y29uc3QgRGVjaW1hbCYgcmhzKSBjb25zdAoreworICAgIGNvbnN0IERlY2ltYWwmIGxocyA9ICp0
aGlzOworICAgIGNvbnN0IFNpZ24gbGhzU2lnbiA9IGxocy5zaWduKCk7CisgICAgY29uc3QgU2ln
biByaHNTaWduID0gcmhzLnNpZ24oKTsKKworICAgIFNwZWNpYWxWYWx1ZUhhbmRsZXIgaGFuZGxl
cihsaHMsIHJocyk7CisgICAgc3dpdGNoIChoYW5kbGVyLmhhbmRsZSgpKSB7CisgICAgY2FzZSBT
cGVjaWFsVmFsdWVIYW5kbGVyOjpCb3RoRmluaXRlOgorICAgICAgICBicmVhazsKKworICAgIGNh
c2UgU3BlY2lhbFZhbHVlSGFuZGxlcjo6Qm90aGluZmluaXR5OgorICAgICAgICByZXR1cm4gbGhz
U2lnbiA9PSByaHNTaWduID8gbmFuKCkgOiBsaHM7CisKKyAgICBjYXNlIFNwZWNpYWxWYWx1ZUhh
bmRsZXI6OkVpdGhlck5hTjoKKyAgICAgICAgcmV0dXJuIGhhbmRsZXIudmFsdWUoKTsKKworICAg
IGNhc2UgU3BlY2lhbFZhbHVlSGFuZGxlcjo6TGhzSXNpbmZpbml0eToKKyAgICAgICAgcmV0dXJu
IGxoczsKKworICAgIGNhc2UgU3BlY2lhbFZhbHVlSGFuZGxlcjo6UmhzSXNpbmZpbml0eToKKyAg
ICAgICAgcmV0dXJuIGluZmluaXR5KGludmVydFNpZ24ocmhzU2lnbikpOworICAgIH0KKworICAg
IEFTU0VSVChsaHMuaXNGaW5pdGUoKSk7CisgICAgQVNTRVJUKHJocy5pc0Zpbml0ZSgpKTsKKwor
ICAgIHVpbnQ2NF90IGxoc0NvZWZmaWNpZW50ID0gbGhzLm1fZGF0YS5jb2VmZmljaWVudCgpOwor
ICAgIHVpbnQ2NF90IHJoc0NvZWZmaWNpZW50ID0gcmhzLm1fZGF0YS5jb2VmZmljaWVudCgpOwor
CisgICAgY29uc3QgaW50IGxoc0V4cG9uZW50ID0gbGhzLmV4cG9uZW50KCk7CisgICAgY29uc3Qg
aW50IHJoc0V4cG9uZW50ID0gcmhzLmV4cG9uZW50KCk7CisgICAgaW50IHJlc3VsdEV4cG9uZW50
ID0gbWluKGxoc0V4cG9uZW50LCByaHNFeHBvbmVudCk7CisKKyAgICAvLyBNYWtlIGNvZWZmaWNp
ZW50IGFsaWduZWQuCisgICAgaWYgKGxoc0V4cG9uZW50ID4gcmhzRXhwb25lbnQpIHsKKyAgICAg
ICAgY29uc3QgaW50IG51bWJlck9mTEhTRGlnaXRzID0gY291bnREaWdpdHMobGhzQ29lZmZpY2ll
bnQpOworICAgICAgICBpZiAobnVtYmVyT2ZMSFNEaWdpdHMpIHsKKyAgICAgICAgICAgIGNvbnN0
IGludCBsaHNTaGlmdEFtb3VudCA9IGxoc0V4cG9uZW50IC0gcmhzRXhwb25lbnQ7CisgICAgICAg
ICAgICBjb25zdCBpbnQgb3ZlcmZsb3cgPSBudW1iZXJPZkxIU0RpZ2l0cyArIGxoc1NoaWZ0QW1v
dW50IC0gUHJlY2lzaW9uOworICAgICAgICAgICAgaWYgKG92ZXJmbG93IDw9IDApCisgICAgICAg
ICAgICAgICAgbGhzQ29lZmZpY2llbnQgPSBzY2FsZVVwKGxoc0NvZWZmaWNpZW50LCBsaHNTaGlm
dEFtb3VudCk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBsaHNDb2VmZmlj
aWVudCA9IHNjYWxlVXAobGhzQ29lZmZpY2llbnQsIGxoc1NoaWZ0QW1vdW50IC0gb3ZlcmZsb3cp
OworICAgICAgICAgICAgICAgIHJoc0NvZWZmaWNpZW50ID0gc2NhbGVEb3duKHJoc0NvZWZmaWNp
ZW50LCBvdmVyZmxvdyk7CisgICAgICAgICAgICAgICAgcmVzdWx0RXhwb25lbnQgKz0gb3ZlcmZs
b3c7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgIH0gaWYgKGxoc0V4cG9uZW50IDwg
cmhzRXhwb25lbnQpIHsKKyAgICAgICAgY29uc3QgaW50IG51bWJlck9mUkhTRGlnaXRzID0gY291
bnREaWdpdHMocmhzQ29lZmZpY2llbnQpOworICAgICAgICBpZiAobnVtYmVyT2ZSSFNEaWdpdHMp
IHsKKyAgICAgICAgICAgIGNvbnN0IGludCByaHNTaGlmdEFtb3VudCA9IHJoc0V4cG9uZW50IC0g
bGhzRXhwb25lbnQ7CisgICAgICAgICAgICBjb25zdCBpbnQgb3ZlcmZsb3cgPSBudW1iZXJPZlJI
U0RpZ2l0cyArIHJoc1NoaWZ0QW1vdW50IC0gUHJlY2lzaW9uOworICAgICAgICAgICAgaWYgKG92
ZXJmbG93IDw9IDApCisgICAgICAgICAgICAgICAgcmhzQ29lZmZpY2llbnQgPSBzY2FsZVVwKHJo
c0NvZWZmaWNpZW50LCByaHNTaGlmdEFtb3VudCk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgICAgICByaHNDb2VmZmljaWVudCA9IHNjYWxlVXAocmhzQ29lZmZpY2llbnQsIHJoc1No
aWZ0QW1vdW50IC0gb3ZlcmZsb3cpOworICAgICAgICAgICAgICAgIGxoc0NvZWZmaWNpZW50ID0g
c2NhbGVEb3duKGxoc0NvZWZmaWNpZW50LCBvdmVyZmxvdyk7CisgICAgICAgICAgICAgICAgcmVz
dWx0RXhwb25lbnQgKz0gb3ZlcmZsb3c7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9
CisKKyAgICB1aW50NjRfdCByZXN1bHQgPSBsaHNTaWduID09IHJoc1NpZ24gPyBsaHNDb2VmZmlj
aWVudCAtIHJoc0NvZWZmaWNpZW50IDogbGhzQ29lZmZpY2llbnQgKyByaHNDb2VmZmljaWVudDsK
KyAgICByZXR1cm4gbGhzU2lnbiA9PSBNaW51cyAmJiByaHNTaWduID09IE1pbnVzICYmICFyZXN1
bHQKKyAgICAgICAgICAgID8gRGVjaW1hbCgwLCByZXN1bHRFeHBvbmVudCwgUGx1cykKKyAgICAg
ICAgICAgIDogaW50NjRfdChyZXN1bHQpID49IDAKKyAgICAgICAgICAgICAgICA/IERlY2ltYWwo
cmVzdWx0LCByZXN1bHRFeHBvbmVudCwgbGhzU2lnbikKKyAgICAgICAgICAgICAgICA6IERlY2lt
YWwoLWludDY0X3QocmVzdWx0KSwgcmVzdWx0RXhwb25lbnQsIGludmVydFNpZ24obGhzU2lnbikp
OworfQorCitEZWNpbWFsIERlY2ltYWw6Om9wZXJhdG9yICooY29uc3QgRGVjaW1hbCYgcmhzKSBj
b25zdAoreworICAgIGNvbnN0IERlY2ltYWwmIGxocyA9ICp0aGlzOworICAgIGNvbnN0IFNpZ24g
bGhzU2lnbiA9IGxocy5zaWduKCk7CisgICAgY29uc3QgU2lnbiByaHNTaWduID0gcmhzLnNpZ24o
KTsKKyAgICBTaWduIHJlc3VsdFNpZ24gPSBsaHNTaWduID09IHJoc1NpZ24gPyBQbHVzIDogTWlu
dXM7CisKKyAgICBTcGVjaWFsVmFsdWVIYW5kbGVyIGhhbmRsZXIobGhzLCByaHMpOworICAgIHN3
aXRjaCAoaGFuZGxlci5oYW5kbGUoKSkgeworICAgIGNhc2UgU3BlY2lhbFZhbHVlSGFuZGxlcjo6
Qm90aEZpbml0ZTogeworICAgICAgICBjb25zdCB1aW50NjRfdCBsaHNDb2VmZmljaWVudCA9IGxo
cy5tX2RhdGEuY29lZmZpY2llbnQoKTsKKyAgICAgICAgY29uc3QgdWludDY0X3QgcmhzQ29lZmZp
Y2llbnQgPSByaHMubV9kYXRhLmNvZWZmaWNpZW50KCk7CisgICAgICAgIGludCByZXN1bHRFeHBv
bmVudCA9IGxocy5leHBvbmVudCgpICsgcmhzLmV4cG9uZW50KCk7CisgICAgICAgIFVJbnQxMjgg
d29yayhVSW50MTI4OjptdWx0aXBseShsaHNDb2VmZmljaWVudCwgcmhzQ29lZmZpY2llbnQpKTsK
KyAgICAgICAgd2hpbGUgKHdvcmsuaGlnaCgpKSB7CisgICAgICAgICAgd29yayAvPSAxMDsKKyAg
ICAgICAgICArK3Jlc3VsdEV4cG9uZW50OworICAgICAgICB9CisgICAgICAgIHJldHVybiBEZWNp
bWFsKHdvcmsubG93KCksIHJlc3VsdEV4cG9uZW50LCByZXN1bHRTaWduKTsKKyAgICB9CisKKyAg
ICBjYXNlIFNwZWNpYWxWYWx1ZUhhbmRsZXI6OkJvdGhpbmZpbml0eToKKyAgICAgICAgcmV0dXJu
IGluZmluaXR5KHJlc3VsdFNpZ24pOworCisgICAgY2FzZSBTcGVjaWFsVmFsdWVIYW5kbGVyOjpF
aXRoZXJOYU46CisgICAgICAgIHJldHVybiBoYW5kbGVyLnZhbHVlKCk7CisKKyAgICBjYXNlIFNw
ZWNpYWxWYWx1ZUhhbmRsZXI6Okxoc0lzaW5maW5pdHk6CisgICAgICAgIHJldHVybiByaHMuaXNa
ZXJvKCkgPyBuYW4oKSA6IGluZmluaXR5KHJlc3VsdFNpZ24pOworCisgICAgY2FzZSBTcGVjaWFs
VmFsdWVIYW5kbGVyOjpSaHNJc2luZmluaXR5OgorICAgICAgICByZXR1cm4gbGhzLmlzWmVybygp
ID8gbmFuKCkgOiBpbmZpbml0eShyZXN1bHRTaWduKTsKKyAgICB9CisKKyAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICByZXR1cm4gbmFuKCk7Cit9CisKK0RlY2ltYWwgRGVjaW1hbDo6b3Bl
cmF0b3IgLyhjb25zdCBEZWNpbWFsJiByaHMpIGNvbnN0Cit7CisgICAgY29uc3QgRGVjaW1hbCYg
bGhzID0gKnRoaXM7CisgICAgY29uc3QgU2lnbiBsaHNTaWduID0gbGhzLnNpZ24oKTsKKyAgICBj
b25zdCBTaWduIHJoc1NpZ24gPSByaHMuc2lnbigpOworICAgIFNpZ24gcmVzdWx0U2lnbiA9IGxo
c1NpZ24gPT0gcmhzU2lnbiA/IFBsdXMgOiBNaW51czsKKworICAgIFNwZWNpYWxWYWx1ZUhhbmRs
ZXIgaGFuZGxlcihsaHMsIHJocyk7CisgICAgc3dpdGNoIChoYW5kbGVyLmhhbmRsZSgpKSB7Cisg
ICAgY2FzZSBTcGVjaWFsVmFsdWVIYW5kbGVyOjpCb3RoRmluaXRlOgorICAgICAgICBicmVhazsK
KworICAgIGNhc2UgU3BlY2lhbFZhbHVlSGFuZGxlcjo6Qm90aGluZmluaXR5OgorICAgICAgICBy
ZXR1cm4gbmFuKCk7CisKKyAgICBjYXNlIFNwZWNpYWxWYWx1ZUhhbmRsZXI6OkVpdGhlck5hTjoK
KyAgICAgICAgcmV0dXJuIGhhbmRsZXIudmFsdWUoKTsKKworICAgIGNhc2UgU3BlY2lhbFZhbHVl
SGFuZGxlcjo6TGhzSXNpbmZpbml0eToKKyAgICAgICAgcmV0dXJuIGluZmluaXR5KHJlc3VsdFNp
Z24pOworCisgICAgY2FzZSBTcGVjaWFsVmFsdWVIYW5kbGVyOjpSaHNJc2luZmluaXR5OgorICAg
ICAgICByZXR1cm4gemVybyhyZXN1bHRTaWduKTsKKyAgICB9CisKKyAgICBBU1NFUlQobGhzLmlz
RmluaXRlKCkpOworICAgIEFTU0VSVChyaHMuaXNGaW5pdGUoKSk7CisKKyAgICBpZiAocmhzLmlz
WmVybygpKQorICAgICAgICByZXR1cm4gbGhzLmlzWmVybygpID8gbmFuKCkgOiBpbmZpbml0eShy
ZXN1bHRTaWduKTsKKworICAgIGludCByZXN1bHRFeHBvbmVudCA9IGxocy5leHBvbmVudCgpIC0g
cmhzLmV4cG9uZW50KCk7CisKKyAgICBpZiAobGhzLmlzWmVybygpKSB7CisgICAgICAgIC8vIDAv
bm9uLXplcm8gPT4gMAorICAgICAgICByZXR1cm4gRGVjaW1hbCgwLCByZXN1bHRFeHBvbmVudCwg
cmVzdWx0U2lnbik7CisgICAgfQorCisgICAgdWludDY0X3QgcmVtYWluZGVyID0gbGhzLm1fZGF0
YS5jb2VmZmljaWVudCgpOworICAgIGNvbnN0IHVpbnQ2NF90IGRpdmlzb3IgPSByaHMubV9kYXRh
LmNvZWZmaWNpZW50KCk7CisgICAgdWludDY0X3QgcmVzdWx0ID0gMDsKKyAgICB3aGlsZSAocmVz
dWx0IDwgTWF4Q29lZmZpY2llbnQgLyAxMDApIHsKKyAgICAgICAgd2hpbGUgKHJlbWFpbmRlciA8
IGRpdmlzb3IpIHsKKyAgICAgICAgICAgIHJlbWFpbmRlciAqPSAxMDsKKyAgICAgICAgICAgIHJl
c3VsdCAqPSAxMDsKKyAgICAgICAgICAgIC0tcmVzdWx0RXhwb25lbnQ7CisgICAgICAgIH0KKyAg
ICAgICAgcmVzdWx0ICs9IHJlbWFpbmRlciAvIGRpdmlzb3I7CisgICAgICAgIHJlbWFpbmRlciAl
PSBkaXZpc29yOworICAgICAgICBpZiAoIXJlbWFpbmRlcikKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgIH0KKworICAgIGlmIChyZW1haW5kZXIgPiBkaXZpc29yIC8gMikKKyAgICAgICAgKytyZXN1
bHQ7CisKKyAgICByZXR1cm4gRGVjaW1hbChyZXN1bHQsIHJlc3VsdEV4cG9uZW50LCByZXN1bHRT
aWduKTsKK30KKworYm9vbCBEZWNpbWFsOjpvcGVyYXRvcj09KGNvbnN0IERlY2ltYWwmIHJocykg
Y29uc3QKK3sKKyAgICByZXR1cm4gZmFzdEVxdWFscyhyaHMpIHx8IGNvbXBhcmVUbyhyaHMpLmlz
WmVybygpOworfQorCitib29sIERlY2ltYWw6Om9wZXJhdG9yIT0oY29uc3QgRGVjaW1hbCYgcmhz
KSBjb25zdAoreworICAgIHJldHVybiAhb3BlcmF0b3IgPT0ocmhzKTsKK30KKworYm9vbCBEZWNp
bWFsOjpvcGVyYXRvciA8KGNvbnN0IERlY2ltYWwmIHJocykgY29uc3QKK3sKKyAgICByZXR1cm4g
IW9wZXJhdG9yID49KHJocyk7Cit9CisKK2Jvb2wgRGVjaW1hbDo6b3BlcmF0b3IgPD0oY29uc3Qg
RGVjaW1hbCYgcmhzKSBjb25zdAoreworICAgIGlmIChmYXN0RXF1YWxzKHJocykpCisgICAgICAg
IHJldHVybiB0cnVlOworICAgIGNvbnN0IERlY2ltYWwgcmVzdWx0ID0gY29tcGFyZVRvKHJocyk7
CisgICAgcmV0dXJuIHJlc3VsdC5pc1plcm8oKSB8fCByZXN1bHQuaXNNaW51cygpOworfQorCiti
b29sIERlY2ltYWw6Om9wZXJhdG9yID4oY29uc3QgRGVjaW1hbCYgcmhzKSBjb25zdAoreworICAg
IHJldHVybiAhb3BlcmF0b3IgPD0ocmhzKTsKK30KKworYm9vbCBEZWNpbWFsOjpvcGVyYXRvciA+
PShjb25zdCBEZWNpbWFsJiByaHMpIGNvbnN0Cit7CisgICAgaWYgKGZhc3RFcXVhbHMocmhzKSkK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgY29uc3QgRGVjaW1hbCByZXN1bHQgPSBjb21wYXJl
VG8ocmhzKTsKKyAgICByZXR1cm4gcmVzdWx0LmlzWmVybygpIHx8ICFyZXN1bHQuaXNNaW51cygp
OworfQorCitpbnQgRGVjaW1hbDo6ZXhwb25lbnQoKSBjb25zdAoreworICAgIHJldHVybiBpc0Zp
bml0ZSgpID8gbV9kYXRhLmV4cG9uZW50KCkgOiAwOworfQorCitEZWNpbWFsOjpGb3JtYXRDbGFz
cyBEZWNpbWFsOjpmb3JtYXRDbGFzcygpIGNvbnN0Cit7CisgICAgc3dpdGNoIChtX2RhdGEubV9w
YWNrZWRGaWVsZCkgeworICAgIGNhc2UgUG9zaXRpdmVJbmZpbml0eVBhdHRlcm46CisgICAgY2Fz
ZSBOZWdhdGl2ZUluZmluaXR5UGF0dGVybjoKKyAgICAgICAgcmV0dXJuIENsYXNzSW5maW5pdHk7
CisgICAgY2FzZSBOYU5QYXR0ZXJuOgorICAgICAgICByZXR1cm4gQ2xhc3NOYU47CisgICAgfQor
CisgICAgcmV0dXJuIG1fZGF0YS5pc1plcm8oKSA/IENsYXNzWmVybyA6IENsYXNzTm9ybWFsOwor
fQorCitEZWNpbWFsOjpTaWduIERlY2ltYWw6OnNpZ24oKSBjb25zdAoreworICAgIHJldHVybiBt
X2RhdGEuc2lnbigpOworfQorCitEZWNpbWFsIERlY2ltYWw6OmFicygpIGNvbnN0Cit7CisgICAg
RGVjaW1hbCByZXN1bHQoKnRoaXMpOworICAgIHJlc3VsdC5tX2RhdGEuc2V0U2lnbihQbHVzKTsK
KyAgICByZXR1cm4gcmVzdWx0OworfQorCisvLyBSb3VuZCB0b3dhcmQgcG9zaXRpdmUgaW5maW5p
dHkuCitEZWNpbWFsIERlY2ltYWw6OmNlaWwoKSBjb25zdAoreworICAgIGlmIChpc1NwZWNpYWwo
KSkKKyAgICAgICAgcmV0dXJuICp0aGlzOworCisgICAgaWYgKGV4cG9uZW50KCkgPj0gMCkKKyAg
ICAgICAgcmV0dXJuICp0aGlzOworCisgICAgdWludDY0X3QgcmVzdWx0ID0gbV9kYXRhLmNvZWZm
aWNpZW50KCk7CisgICAgY29uc3QgaW50IG51bWJlck9mRGlnaXRzID0gY291bnREaWdpdHMocmVz
dWx0KTsKKyAgICBjb25zdCBpbnQgbnVtYmVyT2ZEcm9wRGlnaXRzID0gLWV4cG9uZW50KCk7Cisg
ICAgaWYgKG51bWJlck9mRGlnaXRzIDwgbnVtYmVyT2ZEcm9wRGlnaXRzKQorICAgICAgICByZXR1
cm4gemVybyhQbHVzKTsKKworICAgIHJlc3VsdCA9IHNjYWxlRG93bihyZXN1bHQsIG51bWJlck9m
RHJvcERpZ2l0cyAtIDEpOworICAgIGlmIChzaWduKCkgPT0gUGx1cyAmJiByZXN1bHQgJSAxMCA+
IDApCisgICAgICAgIHJlc3VsdCArPSAxMDsKKyAgICByZXN1bHQgLz0gMTA7CisgICAgcmV0dXJu
IERlY2ltYWwocmVzdWx0LCAwLCBzaWduKCkpOworfQorCitEZWNpbWFsIERlY2ltYWw6OmNvbXBh
cmVUbyhjb25zdCBEZWNpbWFsJiByaHMpIGNvbnN0Cit7CisgICAgY29uc3QgRGVjaW1hbCByZXN1
bHQoKnRoaXMgLSByaHMpOworICAgIHJldHVybiByZXN1bHQuaXNaZXJvKCkKKyAgICAgICAgICAg
ID8gemVybyhQbHVzKQorICAgICAgICAgICAgOiByZXN1bHQuaXNGaW5pdGUoKQorICAgICAgICAg
ICAgICAgICAgICA/IHJlc3VsdAorICAgICAgICAgICAgICAgICAgICA6IHJlc3VsdC5pc01pbnVz
KCkgPyBEZWNpbWFsKC0xKSA6IERlY2ltYWwoMSk7Cit9CisKKy8vIENvbXBhcmVzIHR3byBEZWNp
bWFsIG51bWJlciBhcyBiaW5hcnkgZGF0YS4gVGhpcyBtZXRob2QgaXMKKy8vIHVzZWQgZm9yIGVx
dWFsaXR5IG9mIGluZmluaXR5IG9wZXJhbmRzIHdoaWNoIHN1YnN0cmFjdCBvcGVyYXRpb24KKy8v
IHJldHVybnMgbm9uLXplcm8uCitib29sIERlY2ltYWw6OmZhc3RFcXVhbHMoY29uc3QgRGVjaW1h
bCYgcmhzKSBjb25zdAoreworICAgIHJldHVybiBtX2RhdGEubV9wYWNrZWRGaWVsZCA9PSByaHMu
bV9kYXRhLm1fcGFja2VkRmllbGQKKyAgICAgICAgJiYgbV9kYXRhLm1fY29lZmZpY2llbnQgPT0g
cmhzLm1fZGF0YS5tX2NvZWZmaWNpZW50OworfQorCisvLyBSb3VuZCB0b3dhcmQgbmVnYXRpdmUg
aW5maW5pdHkuCitEZWNpbWFsIERlY2ltYWw6OmZsb29yKCkgY29uc3QKK3sKKyAgICBpZiAoaXNT
cGVjaWFsKCkpCisgICAgICAgIHJldHVybiAqdGhpczsKKworICAgIGlmIChleHBvbmVudCgpID49
IDApCisgICAgICAgIHJldHVybiAqdGhpczsKKworICAgIHVpbnQ2NF90IHJlc3VsdCA9IG1fZGF0
YS5jb2VmZmljaWVudCgpOworICAgIGNvbnN0IGludCBudW1iZXJPZkRpZ2l0cyA9IGNvdW50RGln
aXRzKHJlc3VsdCk7CisgICAgY29uc3QgaW50IG51bWJlck9mRHJvcERpZ2l0cyA9IC1leHBvbmVu
dCgpOworICAgIGlmIChudW1iZXJPZkRpZ2l0cyA8IG51bWJlck9mRHJvcERpZ2l0cykKKyAgICAg
ICAgcmV0dXJuIHplcm8oUGx1cyk7CisKKyAgICByZXN1bHQgPSBzY2FsZURvd24ocmVzdWx0LCBu
dW1iZXJPZkRyb3BEaWdpdHMgLSAxKTsKKyAgICBpZiAoaXNNaW51cygpICYmIHJlc3VsdCAlIDEw
ID4gMCkKKyAgICAgICAgcmVzdWx0ICs9IDEwOworICAgIHJlc3VsdCAvPSAxMDsKKyAgICByZXR1
cm4gRGVjaW1hbChyZXN1bHQsIDAsIHNpZ24oKSk7Cit9CisKK0RlY2ltYWwgRGVjaW1hbDo6ZnJv
bVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cikKK3sKKyAgICBpbnQgZXhwb25lbnQgPSAwOworICAg
IFNpZ24gZXhwb25lbnRTaWduID0gUGx1czsKKyAgICBpbnQgbnVtYmVyT2ZEaWdpdHMgPSAwOwor
ICAgIGludCBudW1iZXJPZkRpZ2l0c0FmdGVyRG90ID0gMDsKKyAgICBpbnQgbnVtYmVyT2ZFeHRy
YURpZ2l0cyA9IDA7CisgICAgU2lnbiBzaWduID0gUGx1czsKKworICAgIGVudW0geworICAgICAg
ICBTdGF0ZURpZ2l0LAorICAgICAgICBTdGF0ZURvdCwKKyAgICAgICAgU3RhdGVEb3REaWdpdCwK
KyAgICAgICAgU3RhdGVFLAorICAgICAgICBTdGF0ZUVEaWdpdCwKKyAgICAgICAgU3RhdGVFU2ln
biwKKyAgICAgICAgU3RhdGVTaWduLAorICAgICAgICBTdGF0ZVN0YXJ0LAorICAgICAgICBTdGF0
ZVplcm8sCisgICAgfSBzdGF0ZSA9IFN0YXRlU3RhcnQ7CisKKyAgICAjZGVmaW5lIEhhbmRsZUNo
YXIoY2gxLCBuZXh0LCAuLi4pIFwKKyAgICAgICAgaWYgKGNoID09IGNoMSB8fCBjaCA9PSBjaDEg
LSAnQScgKyAnYScpIHsgXAorICAgICAgICAgICAgX19WQV9BUkdTX187IFwKKyAgICAgICAgICAg
IHN0YXRlID0gbmV4dDsgXAorICAgICAgICAgICAgYnJlYWs7IFwKKyAgICAgICAgfQorCisgICAg
I2RlZmluZSBFeHBlY3RDaGFyKGNoMSwgbmV4dCwgLi4uKSBcCisgICAgICAgIEhhbmRsZUNoYXIo
Y2gxLCBuZXh0LCBfX1ZBX0FSR1NfXyk7IFwKKyAgICAgICAgcmV0dXJuIG5hbigpOworCisgICAg
dWludDY0X3QgYWNjdW11bGF0b3IgPSAwOworICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBp
bmRleCA8IHN0ci5sZW5ndGgoKTsgKytpbmRleCkgeworICAgICAgICBjb25zdCBpbnQgY2ggPSBz
dHJbaW5kZXhdOworICAgICAgICBzd2l0Y2ggKHN0YXRlKSB7CisgICAgICAgIGNhc2UgU3RhdGVE
aWdpdDoKKyAgICAgICAgICAgIGlmIChjaCA+PSAnMCcgJiYgY2ggPD0gJzknKSB7CisgICAgICAg
ICAgICAgICAgaWYgKG51bWJlck9mRGlnaXRzIDwgRGVjaW1hbDo6UHJlY2lzaW9uKSB7CisgICAg
ICAgICAgICAgICAgICAgICsrbnVtYmVyT2ZEaWdpdHM7CisgICAgICAgICAgICAgICAgICAgIGFj
Y3VtdWxhdG9yICo9IDEwOworICAgICAgICAgICAgICAgICAgICBhY2N1bXVsYXRvciArPSBjaCAt
ICcwJzsKKyAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgKytudW1i
ZXJPZkV4dHJhRGlnaXRzOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBpZiAoY2ggPT0gJy4nKSB7CisgICAgICAgICAgICAgICAgc3RhdGUgPSBT
dGF0ZURvdDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgRXhwZWN0Q2hhcignRScsIFN0YXRlRSk7CisKKyAgICAgICAgY2FzZSBTdGF0ZURvdDoK
KyAgICAgICAgICAgIGlmIChjaCA+PSAnMCcgJiYgY2ggPD0gJzknKSB7CisgICAgICAgICAgICAg
ICAgaWYgKG51bWJlck9mRGlnaXRzIDwgRGVjaW1hbDo6UHJlY2lzaW9uKSB7CisgICAgICAgICAg
ICAgICAgICAgICsrbnVtYmVyT2ZEaWdpdHM7CisgICAgICAgICAgICAgICAgICAgICsrbnVtYmVy
T2ZEaWdpdHNBZnRlckRvdDsKKyAgICAgICAgICAgICAgICAgICAgYWNjdW11bGF0b3IgKj0gMTA7
CisgICAgICAgICAgICAgICAgICAgIGFjY3VtdWxhdG9yICs9IGNoIC0gJzAnOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlRG90RGlnaXQ7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgY2FzZSBTdGF0ZURvdERp
Z2l0OgorICAgICAgICAgICAgaWYgKGNoID49ICcwJyAmJiBjaCA8PSAnOScpIHsKKyAgICAgICAg
ICAgICAgICBpZiAobnVtYmVyT2ZEaWdpdHMgPCBEZWNpbWFsOjpQcmVjaXNpb24pIHsKKyAgICAg
ICAgICAgICAgICAgICAgKytudW1iZXJPZkRpZ2l0czsKKyAgICAgICAgICAgICAgICAgICAgKytu
dW1iZXJPZkRpZ2l0c0FmdGVyRG90OworICAgICAgICAgICAgICAgICAgICBhY2N1bXVsYXRvciAq
PSAxMDsKKyAgICAgICAgICAgICAgICAgICAgYWNjdW11bGF0b3IgKz0gY2ggLSAnMCc7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBFeHBlY3RDaGFyKCdFJywgU3RhdGVFKTsKKworICAgICAgICBjYXNlIFN0YXRl
RToKKyAgICAgICAgICAgIGlmIChjaCA9PSAnKycpIHsKKyAgICAgICAgICAgICAgICBleHBvbmVu
dFNpZ24gPSBQbHVzOworICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGVFU2lnbjsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGNoID09
ICctJykgeworICAgICAgICAgICAgICAgIGV4cG9uZW50U2lnbiA9IE1pbnVzOworICAgICAgICAg
ICAgICAgIHN0YXRlID0gU3RhdGVFU2lnbjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGNoID49ICcwJyAmJiBjaCA8PSAnOScpIHsKKyAg
ICAgICAgICAgICAgICBleHBvbmVudCA9IGNoIC0gJzAnOworICAgICAgICAgICAgICAgIHN0YXRl
ID0gU3RhdGVFRGlnaXQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHJldHVybiBuYW4oKTsKKworICAgICAgICBjYXNlIFN0YXRlRURpZ2l0Ogor
ICAgICAgICAgICAgaWYgKGNoID49ICcwJyAmJiBjaCA8PSAnOScpIHsKKyAgICAgICAgICAgICAg
ICBleHBvbmVudCAqPSAxMDsKKyAgICAgICAgICAgICAgICBleHBvbmVudCArPSBjaCAtICcwJzsK
KyAgICAgICAgICAgICAgICBpZiAoZXhwb25lbnQgPiBEZWNpbWFsOjpFbWF4ICsgUHJlY2lzaW9u
KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXhwb25lbnRTaWduID09IE1pbnVzID8gemVy
byhQbHVzKSA6IGluZmluaXR5KHNpZ24pOworICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGVF
RGlnaXQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHJldHVybiBuYW4oKTsKKworICAgICAgICBjYXNlIFN0YXRlRVNpZ246CisgICAgICAgICAg
ICBpZiAoY2ggPj0gJzAnICYmIGNoIDw9ICc5JykgeworICAgICAgICAgICAgICAgIGV4cG9uZW50
ID0gY2ggLSAnMCc7CisgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZUVEaWdpdDsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIG5h
bigpOworCisgICAgICAgIGNhc2UgU3RhdGVTaWduOgorICAgICAgICAgICAgaWYgKGNoID09ICcw
JykgeworICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGVaZXJvOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoY2ggPj0gJzEnICYmIGNo
IDw9ICc5JykgeworICAgICAgICAgICAgICAgIGFjY3VtdWxhdG9yID0gY2ggLSAnMCc7CisgICAg
ICAgICAgICAgICAgbnVtYmVyT2ZEaWdpdHMgPSAxOworICAgICAgICAgICAgICAgIHN0YXRlID0g
U3RhdGVEaWdpdDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgcmV0dXJuIG5hbigpOworCisgICAgICAgIGNhc2UgU3RhdGVTdGFydDoKKyAgICAg
ICAgICAgIGlmIChjaCA9PSAnMCcpIHsKKyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlWmVy
bzsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
aWYgKGNoID49ICcxJyAmJiBjaCA8PSAnOScpIHsKKyAgICAgICAgICAgICAgICBhY2N1bXVsYXRv
ciA9IGNoIC0gJzAnOworICAgICAgICAgICAgICAgIG51bWJlck9mRGlnaXRzID0gMTsKKyAgICAg
ICAgICAgICAgICBzdGF0ZSA9IFN0YXRlRGlnaXQ7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChjaCA9PSAnLScpIHsKKyAgICAgICAgICAg
ICAgICBzaWduID0gTWludXM7CisgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZVNpZ247Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChj
aCA9PSAnKycpIHsKKyAgICAgICAgICAgICAgICBzaWduID0gUGx1czsKKyAgICAgICAgICAgICAg
ICBzdGF0ZSA9IFN0YXRlU2lnbjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgaWYgKGNoID09ICcuJykgeworICAgICAgICAgICAgICAgIHN0YXRl
ID0gU3RhdGVEb3Q7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHJldHVybiBuYW4oKTsKKworICAgICAgICBjYXNlIFN0YXRlWmVybzoKKyAgICAg
ICAgICAgIGlmIChjaCA9PSAnMCcpCisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
ICAgIGlmIChjaCA+PSAnMScgJiYgY2ggPD0gJzknKSB7CisgICAgICAgICAgICAgICAgYWNjdW11
bGF0b3IgPSBjaCAtICcwJzsKKyAgICAgICAgICAgICAgICBudW1iZXJPZkRpZ2l0cyA9IDE7Cisg
ICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZURpZ2l0OworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoY2ggPT0gJy4nKSB7CisgICAgICAg
ICAgICAgICAgc3RhdGUgPSBTdGF0ZURvdDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgRXhwZWN0Q2hhcignRScsIFN0YXRlRSk7CisKKyAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAg
ICAgcmV0dXJuIG5hbigpOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKHN0YXRlID09IFN0
YXRlWmVybykKKyAgICAgICAgcmV0dXJuIHplcm8oc2lnbik7CisKKyAgICBpZiAoc3RhdGUgPT0g
U3RhdGVEaWdpdCB8fCBzdGF0ZSA9PSBTdGF0ZUVEaWdpdCB8fCBzdGF0ZSA9PSBTdGF0ZURvdERp
Z2l0KSB7CisgICAgICAgIGludCByZXN1bHRFeHBvbmVudCA9IGV4cG9uZW50ICogKGV4cG9uZW50
U2lnbiA9PSBNaW51cyA/IC0xIDogMSkgLSBudW1iZXJPZkRpZ2l0c0FmdGVyRG90ICsgbnVtYmVy
T2ZFeHRyYURpZ2l0czsKKyAgICAgICAgY29uc3QgaW50IGJpYXNlZEV4cG9uZW50ID0gcmVzdWx0
RXhwb25lbnQgKyBFYmlhczsKKyAgICAgICAgaWYgKGJpYXNlZEV4cG9uZW50IDwgMCkKKyAgICAg
ICAgICAgIHJldHVybiB6ZXJvKFBsdXMpOworCisgICAgICAgIGNvbnN0IGludCBvdmVyZmxvdyA9
IGJpYXNlZEV4cG9uZW50IC0gRW1heCArIDE7CisgICAgICAgIGlmIChvdmVyZmxvdyA+IDApIHsK
KyAgICAgICAgICAgIGlmIChvdmVyZmxvdyArIG51bWJlck9mRGlnaXRzIC0gbnVtYmVyT2ZEaWdp
dHNBZnRlckRvdCA+IFByZWNpc2lvbikKKyAgICAgICAgICAgICAgICByZXR1cm4gaW5maW5pdHko
c2lnbik7CisgICAgICAgICAgICBhY2N1bXVsYXRvciA9IHNjYWxlVXAoYWNjdW11bGF0b3IsIG92
ZXJmbG93KTsKKyAgICAgICAgICAgIHJlc3VsdEV4cG9uZW50IC09IG92ZXJmbG93OworICAgICAg
ICB9CisKKyAgICAgICAgcmV0dXJuIERlY2ltYWwoYWNjdW11bGF0b3IsIHJlc3VsdEV4cG9uZW50
LCBzaWduKTsKKyAgICB9CisKKyAgICByZXR1cm4gbmFuKCk7Cit9CisKK0RlY2ltYWwgRGVjaW1h
bDo6aW5maW5pdHkoY29uc3QgU2lnbiBzaWduKQoreworICAgIHJldHVybiBEZWNpbWFsKEVuY29k
ZWREYXRhKHNpZ24gPT0gTWludXMgPyBOZWdhdGl2ZUluZmluaXR5UGF0dGVybiA6IFBvc2l0aXZl
SW5maW5pdHlQYXR0ZXJuKSk7Cit9CisKK0RlY2ltYWwgRGVjaW1hbDo6bmFuKCkKK3sKKyAgICBy
ZXR1cm4gRGVjaW1hbChFbmNvZGVkRGF0YShOYU5QYXR0ZXJuKSk7Cit9CisKK0RlY2ltYWwgRGVj
aW1hbDo6cmVtYWluZGVyKGNvbnN0IERlY2ltYWwmIHJocykgY29uc3QKK3sKKyAgICBjb25zdCBE
ZWNpbWFsIHF1b3RpZW50ID0gKCp0aGlzIC8gcmhzKS5yb3VuZCgpOworICAgIHJldHVybiBxdW90
aWVudC5pc1NwZWNpYWwoKSA/IHF1b3RpZW50IDogKnRoaXMgLSBxdW90aWVudCAqIHJoczsKK30K
KworRGVjaW1hbCBEZWNpbWFsOjpyb3VuZCgpIGNvbnN0Cit7CisgICAgaWYgKGlzU3BlY2lhbCgp
KQorICAgICAgICByZXR1cm4gKnRoaXM7CisKKyAgICBpZiAoZXhwb25lbnQoKSA+PSAwKQorICAg
ICAgICByZXR1cm4gKnRoaXM7CisKKyAgICB1aW50NjRfdCByZXN1bHQgPSBtX2RhdGEuY29lZmZp
Y2llbnQoKTsKKyAgICBjb25zdCBpbnQgbnVtYmVyT2ZEaWdpdHMgPSBjb3VudERpZ2l0cyhyZXN1
bHQpOworICAgIGNvbnN0IGludCBudW1iZXJPZkRyb3BEaWdpdHMgPSAtZXhwb25lbnQoKTsKKyAg
ICBpZiAobnVtYmVyT2ZEaWdpdHMgPCBudW1iZXJPZkRyb3BEaWdpdHMpCisgICAgICAgIHJldHVy
biB6ZXJvKFBsdXMpOworCisgICAgcmVzdWx0ID0gc2NhbGVEb3duKHJlc3VsdCwgbnVtYmVyT2ZE
cm9wRGlnaXRzIC0gMSk7CisgICAgaWYgKHJlc3VsdCAlIDEwID49IDUpCisgICAgICAgIHJlc3Vs
dCArPSAxMDsKKyAgICByZXN1bHQgLz0gMTA7CisgICAgcmV0dXJuIERlY2ltYWwocmVzdWx0LCAw
LCBzaWduKCkpOworfQorCitTdHJpbmcgRGVjaW1hbDo6dG9TdHJpbmcoKSBjb25zdAoreworICAg
IHN3aXRjaCAoZm9ybWF0Q2xhc3MoKSkgeworICAgIGNhc2UgQ2xhc3NJbmZpbml0eToKKyAgICAg
ICAgcmV0dXJuIHNpZ24oKSA/ICItSW5maW5pdHkiIDogIkluZmluaXR5IjsKKworICAgIGNhc2Ug
Q2xhc3NOYU46CisgICAgICAgIHJldHVybiBzaWduKCkgPyAiLU5hTiIgOiAiTmFOIjsKKworICAg
IGNhc2UgQ2xhc3NOb3JtYWw6CisgICAgY2FzZSBDbGFzc1plcm86CisgICAgICAgIGJyZWFrOwor
CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJl
dHVybiAiIjsKKyAgICB9CisKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgaWYgKHNp
Z24oKSkKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJy0nKTsKKworICAgIGludCBvcmlnaW5hbEV4
cG9uZW50ID0gZXhwb25lbnQoKTsKKworICAgIGNvbnN0IGludCBtYXhEaWdpdHMgPSBEQkxfRElH
OworICAgIHVpbnQ2NF90IGNvZWZmaWNpZW50ID0gbV9kYXRhLmNvZWZmaWNpZW50KCk7CisgICAg
aW50IGxhc3REaWdpdCA9IDA7CisgICAgd2hpbGUgKGNvdW50RGlnaXRzKGNvZWZmaWNpZW50KSA+
IG1heERpZ2l0cykgeworICAgICAgICBsYXN0RGlnaXQgPSBjb2VmZmljaWVudCAlIDEwOworICAg
ICAgICBjb2VmZmljaWVudCAvPSAxMDsKKyAgICAgICAgKytvcmlnaW5hbEV4cG9uZW50OworICAg
IH0KKworICAgIGlmIChsYXN0RGlnaXQgPj0gNSkKKyAgICAgICAgKytjb2VmZmljaWVudDsKKwor
ICAgIHdoaWxlIChvcmlnaW5hbEV4cG9uZW50IDwgMCAmJiBjb2VmZmljaWVudCAmJiAhKGNvZWZm
aWNpZW50ICUgMTApKSB7CisgICAgICAgIGNvZWZmaWNpZW50IC89IDEwOworICAgICAgICArK29y
aWdpbmFsRXhwb25lbnQ7CisgICAgfQorCisgICAgY29uc3QgU3RyaW5nIGRpZ2l0cyA9IFN0cmlu
Zzo6bnVtYmVyKGNvZWZmaWNpZW50KTsKKyAgICBpbnQgY29lZmZpY2llbnRMZW5ndGggPSBpbnQo
ZGlnaXRzLmxlbmd0aCgpKTsKKyAgICBjb25zdCBpbnQgYWRqdXN0ZWRFeHBvbmVudCA9IG9yaWdp
bmFsRXhwb25lbnQgKyBjb2VmZmljaWVudExlbmd0aCAtIDE7CisgICAgaWYgKG9yaWdpbmFsRXhw
b25lbnQgPD0gMCAmJiBhZGp1c3RlZEV4cG9uZW50ID49IC02KSB7CisgICAgICAgIGlmICghb3Jp
Z2luYWxFeHBvbmVudCkgeworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoZGlnaXRzKTsKKyAg
ICAgICAgICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CisgICAgICAgIH0KKworICAgICAg
ICBpZiAoYWRqdXN0ZWRFeHBvbmVudCA+PSAwKSB7CisgICAgICAgICAgICBmb3IgKGludCBpID0g
MDsgaSA8IGNvZWZmaWNpZW50TGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICBidWlsZGVy
LmFwcGVuZChkaWdpdHNbaV0pOworICAgICAgICAgICAgICAgIGlmIChpID09IGFkanVzdGVkRXhw
b25lbnQpCisgICAgICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcuJyk7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworICAgICAgICB9
CisKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoIjAuIik7CisgICAgICAgIGZvciAoaW50IGkgPSBh
ZGp1c3RlZEV4cG9uZW50ICsgMTsgaSA8IDA7ICsraSkKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKCcwJyk7CisKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoZGlnaXRzKTsKKworICAgIH0gZWxz
ZSB7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGRpZ2l0c1swXSk7CisgICAgICAgIHdoaWxlIChj
b2VmZmljaWVudExlbmd0aCA+PSAyICYmIGRpZ2l0c1tjb2VmZmljaWVudExlbmd0aCAtIDFdID09
ICcwJykKKyAgICAgICAgICAgIC0tY29lZmZpY2llbnRMZW5ndGg7CisgICAgICAgIGlmIChjb2Vm
ZmljaWVudExlbmd0aCA+PSAyKSB7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnLicpOwor
ICAgICAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPCBjb2VmZmljaWVudExlbmd0aDsgKytpKQor
ICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGRpZ2l0c1tpXSk7CisgICAgICAgIH0KKwor
ICAgICAgICBpZiAoYWRqdXN0ZWRFeHBvbmVudCkgeworICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmQoYWRqdXN0ZWRFeHBvbmVudCA8IDAgPyAiZSIgOiAiZSsiKTsKKyAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKFN0cmluZzo6bnVtYmVyKGFkanVzdGVkRXhwb25lbnQpKTsKKyAgICAgICAgfQor
ICAgIH0KKyAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworfQorCitEZWNpbWFsIERlY2lt
YWw6Onplcm8oU2lnbiBzaWduKQoreworICAgIHJldHVybiBEZWNpbWFsKEVuY29kZWREYXRhKHNp
Z24gPT0gTWludXMgPyBOZWdhdGl2ZVplcm9QYXR0ZXJuIDogUG9zaXRpdmVaZXJvUGF0dGVybikp
OworfQorCit9IC8vIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0RlY2ltYWwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RlY2ltYWwuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li43MmJhOWFlNmY0Mzg1Zjc2MTY3NzFmYzk1Yzk1OTFkZTlhZWMyN2E0Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGVjaW1hbC5oCkBAIC0wLDAgKzEsMTU0IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKyNp
Zm5kZWYgRGVjaW1hbF9oCisjZGVmaW5lIERlY2ltYWxfaAorCisjaW5jbHVkZSA8c3RkaW50Lmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworLy8gVGhpcyBjbGFzcyByZXByZXNlbnRzIGRlY2ltYWwgYmFzZSBmbG9hdGluZyBwb2ludGVy
IG51bWJlciB3aXRoIDMyIGJpdAorLy8gIHVuc2lnZW5kIGludGVnZXIgYW5kIDY0IGJpdCB1bnNp
Z25lZCBpbnRlZ2VyLgorLy8gIG8gMSBiaXQgc2lnbiAoMCA9IHBvc2l0aXZlIG51bWJlciwgMSA9
IG5lZ2F0aXZlIG51bWJlcikKKy8vICBvIDExIGJpdCBiaWFzZWQgZXhwb25lbnQsIDEwIGJhc2Vk
LgorLy8gIG8gNjQgYml0IGNvZWZmaWNpZW50LgorLy8KKy8vIEV4cG9uZW50IGFuZCBzaWduIGJp
dCBhcmUgZW5jb2RlZCBhczoKKy8vIDc2NTQzMjEwIDc2NTQzMjEwCisvLyBTMDAwMDAwMCAwMDAw
TUVFRQorLy8gIFMgPSBzaWduICgxIGJpdCksIDAgPSBwb3NpdGl2ZSwgMSA9IG5lZ2F0aXZlCisv
LyAgRSA9IGV4cG9uZW50ICgxMSBiaXQpCisvLworLy8gRklYTUU6IE9uY2UgYWxsIEMrKyBjb21w
aWxlciBzdXBwb3J0IGRlY2ltYWwgdHlwZSwgd2Ugc2hvdWxkIHJlcGxhY2UgdGhpcworLy8gY2xh
c3MgdG8gY29tcGlsZXIgc3VwcG9ydGVkIG9uZS4gU2VlIGJlbG93IFVSSSBmb3IgY3VycmVudCBz
dGF0dXMgb2YgZGVjaW1hbAorLy8gdHlwZSBmb3IgQysrOiAvLyBodHRwOi8vd3d3Lm9wZW4tc3Rk
Lm9yZy9qdGMxL3NjMjIvd2cyMS9kb2NzL3BhcGVycy8yMDA2L24xOTc3Lmh0bWwKK2NsYXNzIERl
Y2ltYWwgeworcHVibGljOgorICAgIHN0YXRpYyBpbnQgY29uc3QgRW1heCA9IDIwNDc7IC8vIGxh
cmdlc3QgZXhwb25lbnQgdmFsdWUKKyAgICBzdGF0aWMgaW50IGNvbnN0IEViaWFzID0gMTAyMzsg
Ly8gc3VidHJhY3RlZCBmcm9tIGVuY29kZWQgZXhwb25lbnQKKyAgICBzdGF0aWMgaW50IGNvbnN0
IFByZWNpc2lvbiA9IDE4OworCisgICAgZW51bSBGb3JtYXRDbGFzcyB7CisgICAgICAgIENsYXNz
SW5maW5pdHksCisgICAgICAgIENsYXNzTm9ybWFsLAorICAgICAgICBDbGFzc05hTiwKKyAgICAg
ICAgQ2xhc3NaZXJvLAorICAgIH07CisKKyAgICBlbnVtIFNpZ24geworICAgICAgICBQbHVzLAor
ICAgICAgICBNaW51cywKKyAgICB9OworCisgICAgc3RydWN0IEVuY29kZWREYXRhIHsKKyAgICAg
ICAgZXhwbGljaXQgRW5jb2RlZERhdGEodWludDMyX3QpOworICAgICAgICBFbmNvZGVkRGF0YSh1
aW50NjRfdCwgaW50LCBTaWduKTsKKworICAgICAgICB1aW50NjRfdCBjb2VmZmljaWVudCgpIGNv
bnN0OworICAgICAgICBpbnQgY291bnREaWdpdHMoKSBjb25zdDsKKyAgICAgICAgaW50IGV4cG9u
ZW50KCkgY29uc3Q7CisgICAgICAgIGJvb2wgaXNGaW5pdGUoKSBjb25zdDsKKyAgICAgICAgYm9v
bCBpc1NwZWNpYWwoKSBjb25zdDsKKyAgICAgICAgYm9vbCBpc1plcm8oKSBjb25zdDsKKyAgICAg
ICAgaW50IHJhd0V4cG9uZW50KCkgY29uc3Q7CisgICAgICAgIFNpZ24gc2lnbigpIGNvbnN0Owor
ICAgICAgICB2b2lkIHNldFNpZ24oU2lnbik7CisKKyAgICAgICAgdWludDY0X3QgbV9jb2VmZmlj
aWVudDsKKyAgICAgICAgdWludDMyX3QgbV9wYWNrZWRGaWVsZDsKKyAgICB9OworCisgICAgRGVj
aW1hbCgpOworICAgIERlY2ltYWwoaW50MzJfdCk7CisgICAgRGVjaW1hbCh1aW50NjRfdCwgaW50
LCBTaWduKTsKKyAgICBEZWNpbWFsKGNvbnN0IERlY2ltYWwmKTsKKyAgICBleHBsaWNpdCBEZWNp
bWFsKGNvbnN0IEVuY29kZWREYXRhJik7CisKKyAgICBEZWNpbWFsJiBvcGVyYXRvciA9KGNvbnN0
IERlY2ltYWwmKTsKKyAgICBEZWNpbWFsJiBvcGVyYXRvciArPShjb25zdCBEZWNpbWFsJik7Cisg
ICAgRGVjaW1hbCYgb3BlcmF0b3IgLT0oY29uc3QgRGVjaW1hbCYpOworICAgIERlY2ltYWwmIG9w
ZXJhdG9yICo9KGNvbnN0IERlY2ltYWwmKTsKKyAgICBEZWNpbWFsJiBvcGVyYXRvciAvPShjb25z
dCBEZWNpbWFsJik7CisKKyAgICBEZWNpbWFsIG9wZXJhdG9yIC0oKSBjb25zdDsKKworICAgIGJv
b2wgb3BlcmF0b3IgPT0oY29uc3QgRGVjaW1hbCYpIGNvbnN0OworICAgIGJvb2wgb3BlcmF0b3Ig
IT0oY29uc3QgRGVjaW1hbCYpIGNvbnN0OworICAgIGJvb2wgb3BlcmF0b3IgPChjb25zdCBEZWNp
bWFsJikgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRvciA8PShjb25zdCBEZWNpbWFsJikgY29uc3Q7
CisgICAgYm9vbCBvcGVyYXRvciA+KGNvbnN0IERlY2ltYWwmKSBjb25zdDsKKyAgICBib29sIG9w
ZXJhdG9yID49KGNvbnN0IERlY2ltYWwmKSBjb25zdDsKKworICAgIERlY2ltYWwgb3BlcmF0b3Ig
Kyhjb25zdCBEZWNpbWFsJikgY29uc3Q7CisgICAgRGVjaW1hbCBvcGVyYXRvciAtKGNvbnN0IERl
Y2ltYWwmKSBjb25zdDsKKyAgICBEZWNpbWFsIG9wZXJhdG9yICooY29uc3QgRGVjaW1hbCYpIGNv
bnN0OworICAgIERlY2ltYWwgb3BlcmF0b3IgLyhjb25zdCBEZWNpbWFsJikgY29uc3Q7CisKKyAg
ICBpbnQgZXhwb25lbnQoKSBjb25zdDsKKyAgICBGb3JtYXRDbGFzcyBmb3JtYXRDbGFzcygpIGNv
bnN0OworICAgIGJvb2wgaXNGaW5pdGUoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuaXNGaW5pdGUo
KTsgfQorICAgIGJvb2wgaXNNaW51cygpIGNvbnN0IHsgcmV0dXJuIHNpZ24oKSA9PSBNaW51czsg
fQorICAgIGJvb2wgaXNQbHVzKCkgY29uc3QgeyByZXR1cm4gc2lnbigpID09IFBsdXM7IH0KKyAg
ICBib29sIGlzU3BlY2lhbCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5pc1NwZWNpYWwoKTsgfQor
ICAgIGJvb2wgaXNaZXJvKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmlzWmVybygpOyB9CisgICAg
Y29uc3QgRW5jb2RlZERhdGEmIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CisKKyAg
ICBEZWNpbWFsIGFicygpIGNvbnN0OworICAgIERlY2ltYWwgY2VpbCgpIGNvbnN0OworICAgIERl
Y2ltYWwgZmxvb3IoKSBjb25zdDsKKyAgICBEZWNpbWFsIHJlbWFpbmRlcihjb25zdCBEZWNpbWFs
JikgY29uc3Q7CisgICAgRGVjaW1hbCByb3VuZCgpIGNvbnN0OworICAgIGRvdWJsZSB0b0RvdWJs
ZSgpIGNvbnN0OworICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0OworCisgICAgc3RhdGljIERl
Y2ltYWwgZnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKTsKKyAgICBzdGF0aWMgRGVjaW1hbCBpbmZp
bml0eShTaWduKTsKKyAgICBzdGF0aWMgRGVjaW1hbCBuYW4oKTsKKyAgICBzdGF0aWMgRGVjaW1h
bCB6ZXJvKFNpZ24pOworCitwcml2YXRlOgorICAgIERlY2ltYWwoZG91YmxlKTsKKyAgICBEZWNp
bWFsIGNvbXBhcmVUbyhjb25zdCBEZWNpbWFsJikgY29uc3Q7CisgICAgYm9vbCBmYXN0RXF1YWxz
KGNvbnN0IERlY2ltYWwmKSBjb25zdDsKKworICAgIHN0YXRpYyBpbmxpbmUgU2lnbiBpbnZlcnRT
aWduKFNpZ24gc2lnbikKKyAgICB7CisgICAgICAgIHJldHVybiBzaWduID09IE1pbnVzID8gUGx1
cyA6IE1pbnVzOworICAgIH0KKworICAgIFNpZ24gc2lnbigpIGNvbnN0OworCisgICAgRW5jb2Rl
ZERhdGEgbV9kYXRhOworfTsKKworfSAvLyBXZWJDb3JlCisKKyNlbmRpZiAvLyBEZWNpbWFsX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCmluZGV4IDc4NTRlZGYwYTk5ZDZjYmQ4MjE1NzRj
ZTZmNDE1NGJjMTEwYjAzODQuLmRjODc1NmVkNmEzZWI1Zjc5ZTIzOGEwZWM1NGE5N2Y0MjEzMGQw
ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQpAQCAtOTUsNiArOTUsNyBAQAogICAg
ICAgICAgICAgJ3Rlc3RzL0NsaXBib2FyZENocm9taXVtVGVzdC5jcHAnLAogICAgICAgICAgICAg
J3Rlc3RzL0NvbXBvc2l0b3JGYWtlR3JhcGhpY3NDb250ZXh0M0QuaCcsCiAgICAgICAgICAgICAn
dGVzdHMvQ29tcG9zaXRvckZha2VXZWJHcmFwaGljc0NvbnRleHQzRC5oJywKKyAgICAgICAgICAg
ICd0ZXN0cy9EZWNpbWFsVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0RyYWdJbWFnZVRl
c3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9EcmF3aW5nQnVmZmVyQ2hyb21pdW1UZXN0LmNw
cCcsCiAgICAgICAgICAgICAndGVzdHMvRXZlbnRMaXN0ZW5lclRlc3QuY3BwJywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRGVjaW1hbFRlc3QuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9EZWNpbWFsVGVzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzlkNzhk
YWUxOGQ3MDZlMWYyMjRkZDBjYjExNzY3ZmU0NmU4MWVjNQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRGVjaW1hbFRlc3QuY3BwCkBAIC0wLDAgKzEsNTg0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisg
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRlY2ltYWwuaCIKKworI2luY2x1ZGUg
PGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKKzo6c3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KDo6c3RkOjpvc3RyZWFt
JiBvcywgY29uc3QgRGVjaW1hbCYgZGVjaW1hbCkKK3sKKyAgICBEZWNpbWFsOjpFbmNvZGVkRGF0
YSBkYXRhID0gZGVjaW1hbC52YWx1ZSgpOworICAgIHJldHVybiBvcyAKKyAgICAgICAgPDwgIkRl
Y2ltYWwoIiA8PCBTdHJpbmc6Om51bWJlcihkYXRhLmNvZWZmaWNpZW50KCkpLmFzY2lpKCkuZGF0
YSgpCisgICAgICAgIDw8ICIsICIgPDwgU3RyaW5nOjpudW1iZXIoZGF0YS5leHBvbmVudCgpKS5h
c2NpaSgpLmRhdGEoKQorICAgICAgICA8PCAiLCAiIDw8IChkYXRhLnNpZ24oKSA9PSBEZWNpbWFs
OjpNaW51cyA/ICJNaW51cyIgOiAiUGx1cyIpCisgICAgICAgIDw8ICIpPSIgPDwgZGVjaW1hbC50
b1N0cmluZygpLmFzY2lpKCkuZGF0YSgpOworfQorCit9IC8vIFdlYkNvcmUKKworbmFtZXNwYWNl
IERlY2ltYWxUZXN0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKKy8vIFNpbXVsYXRl
IFdlYkNvcmUvaHRtbC9TdGVwUmFuZ2UKK2NsYXNzIERlY2ltYWxTdGVwUmFuZ2UgeworcHVibGlj
OgorICAgIERlY2ltYWwgbWF4aW11bTsKKyAgICBEZWNpbWFsIG1pbmltdW07CisgICAgRGVjaW1h
bCBzdGVwOworCisgICAgRGVjaW1hbFN0ZXBSYW5nZShjb25zdCBEZWNpbWFsJiBtaW5pbXVtLCBj
b25zdCBEZWNpbWFsJiBtYXhpbXVtLCBjb25zdCBEZWNpbWFsJiBzdGVwKQorICAgICAgICA6IG1h
eGltdW0obWF4aW11bSkKKyAgICAgICAgLCBtaW5pbXVtKG1pbmltdW0pCisgICAgICAgICwgc3Rl
cChzdGVwKQorICAgIHsKKyAgICB9CisKKyAgICBEZWNpbWFsIGNsYW1wVmFsdWUoRGVjaW1hbCB2
YWx1ZSkgY29uc3QKKyAgICB7CisgICAgICAgIGNvbnN0IERlY2ltYWwgcmVzdWx0ID0gbWluaW11
bSArICgodmFsdWUgLSBtaW5pbXVtKSAvIHN0ZXApLnJvdW5kKCkgKiBzdGVwOworICAgICAgICBB
U1NFUlQocmVzdWx0LmlzRmluaXRlKCkpOworICAgICAgICByZXR1cm4gcmVzdWx0ID4gbWF4aW11
bSA/IHJlc3VsdCAtIHN0ZXAgOiByZXN1bHQ7CisgICAgfQorfTsKKworY2xhc3MgRGVjaW1hbFRl
c3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKK3Byb3RlY3RlZDoKKyAgICB0eXBlZGVmIERl
Y2ltYWw6OlNpZ24gU2lnbjsKKyAgICBwcm90ZWN0ZWQ6IHN0YXRpYyBjb25zdCBTaWduIFBsdXMg
PSBEZWNpbWFsOjpQbHVzOworICAgIHByb3RlY3RlZDogc3RhdGljIGNvbnN0IFNpZ24gTWludXMg
PSBEZWNpbWFsOjpNaW51czsKKworICAgIERlY2ltYWwgZW5jb2RlKHVpbnQ2NF90IGNvZWZmaWNp
ZW50LCBpbnQgZXhwb25lbnQsIFNpZ24gc2lnbikKKyAgICB7CisgICAgICAgIHJldHVybiBEZWNp
bWFsKGNvZWZmaWNpZW50LCBleHBvbmVudCwgc2lnbik7CisgICAgfQorCisgICAgcHJvdGVjdGVk
OiBEZWNpbWFsIGZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpCisgICAgeworICAgICAg
ICByZXR1cm4gRGVjaW1hbDo6ZnJvbVN0cmluZyhzdHJpbmcpOworICAgIH0KKworICAgIHByb3Rl
Y3RlZDogU3RyaW5nIHN0ZXBEb3duKGNvbnN0IFN0cmluZyYgbWluaW11bSwgY29uc3QgU3RyaW5n
JiBtYXhpbXVtLCBjb25zdCBTdHJpbmcmIHN0ZXAsIGNvbnN0IFN0cmluZyYgdmFsdWVTdHJpbmcs
IGludCBudW1iZXJPZlN0ZXBUaW1lcykKKyAgICB7CisgICAgICAgIERlY2ltYWxTdGVwUmFuZ2Ug
c3RlcFJhbmdlKGZyb21TdHJpbmcobWluaW11bSksIGZyb21TdHJpbmcobWF4aW11bSksIGZyb21T
dHJpbmcoc3RlcCkpOworICAgICAgICBEZWNpbWFsIHZhbHVlID0gZnJvbVN0cmluZyh2YWx1ZVN0
cmluZyk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtYmVyT2ZTdGVwVGltZXM7ICsr
aSkgeworICAgICAgICAgIHZhbHVlIC09IHN0ZXBSYW5nZS5zdGVwOworICAgICAgICAgIHZhbHVl
ID0gc3RlcFJhbmdlLmNsYW1wVmFsdWUodmFsdWUpOworICAgICAgICB9CisgICAgICAgIHJldHVy
biB2YWx1ZS50b1N0cmluZygpOworICAgIH0KKworICAgIHByb3RlY3RlZDogU3RyaW5nIHN0ZXBV
cChjb25zdCBTdHJpbmcmIG1pbmltdW0sIGNvbnN0IFN0cmluZyYgbWF4aW11bSwgY29uc3QgU3Ry
aW5nJiBzdGVwLCBjb25zdCBTdHJpbmcmIHZhbHVlU3RyaW5nLCBpbnQgbnVtYmVyT2ZTdGVwVGlt
ZXMpCisgICAgeworICAgICAgICBEZWNpbWFsU3RlcFJhbmdlIHN0ZXBSYW5nZShmcm9tU3RyaW5n
KG1pbmltdW0pLCBmcm9tU3RyaW5nKG1heGltdW0pLCBmcm9tU3RyaW5nKHN0ZXApKTsKKyAgICAg
ICAgRGVjaW1hbCB2YWx1ZSA9IGZyb21TdHJpbmcodmFsdWVTdHJpbmcpOworICAgICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IG51bWJlck9mU3RlcFRpbWVzOyArK2kpIHsKKyAgICAgICAgICB2YWx1
ZSArPSBzdGVwUmFuZ2Uuc3RlcDsKKyAgICAgICAgICB2YWx1ZSA9IHN0ZXBSYW5nZS5jbGFtcFZh
bHVlKHZhbHVlKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoKTsK
KyAgICB9Cit9OworCitURVNUX0YoRGVjaW1hbFRlc3QsIEFicykKK3sKKyAgICBFWFBFQ1RfRVEo
ZW5jb2RlKDAsIDAsIFBsdXMpLCBlbmNvZGUoMCwgMCwgUGx1cykuYWJzKCkpOworICAgIEVYUEVD
VF9FUShlbmNvZGUoMCwgMCwgUGx1cyksIGVuY29kZSgwLCAwLCBNaW51cykuYWJzKCkpOworCisg
ICAgRVhQRUNUX0VRKGVuY29kZSgwLCAxMCwgUGx1cyksIGVuY29kZSgwLCAxMCwgUGx1cykuYWJz
KCkpOworICAgIEVYUEVDVF9FUShlbmNvZGUoMCwgMTAsIFBsdXMpLCBlbmNvZGUoMCwgMTAsIE1p
bnVzKS5hYnMoKSk7CisKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDAsIC0xMCwgUGx1cyksIGVuY29k
ZSgwLCAtMTAsIFBsdXMpLmFicygpKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDAsIC0xMCwgUGx1
cyksIGVuY29kZSgwLCAtMTAsIE1pbnVzKS5hYnMoKSk7CisKKyAgICBFWFBFQ1RfRVEoZW5jb2Rl
KDEsIDAsIFBsdXMpLCBlbmNvZGUoMSwgMCwgUGx1cykuYWJzKCkpOworICAgIEVYUEVDVF9FUShl
bmNvZGUoMSwgMCwgUGx1cyksIGVuY29kZSgxLCAwLCBNaW51cykuYWJzKCkpOworCisgICAgRVhQ
RUNUX0VRKGVuY29kZSgxLCAxMCwgUGx1cyksIGVuY29kZSgxLCAxMCwgUGx1cykuYWJzKCkpOwor
ICAgIEVYUEVDVF9FUShlbmNvZGUoMSwgMTAsIFBsdXMpLCBlbmNvZGUoMSwgMTAsIE1pbnVzKS5h
YnMoKSk7CisKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDEsIC0xMCwgUGx1cyksIGVuY29kZSgxLCAt
MTAsIFBsdXMpLmFicygpKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDEsIC0xMCwgUGx1cyksIGVu
Y29kZSgxLCAtMTAsIE1pbnVzKS5hYnMoKSk7Cit9CisKK1RFU1RfRihEZWNpbWFsVGVzdCwgQ2Vp
bGluZykKK3sKKyAgICBFWFBFQ1RfRVEoRGVjaW1hbCgxKSwgRGVjaW1hbCgxKS5jZWlsKCkpOwor
ICAgIEVYUEVDVF9FUShEZWNpbWFsKDIpLCBlbmNvZGUoMTEsIC0xLCBQbHVzKS5jZWlsKCkpOwor
ICAgIEVYUEVDVF9FUShEZWNpbWFsKDIpLCBlbmNvZGUoMTMsIC0xLCBQbHVzKS5jZWlsKCkpOwor
ICAgIEVYUEVDVF9FUShEZWNpbWFsKDIpLCBlbmNvZGUoMTUsIC0xLCBQbHVzKS5jZWlsKCkpOwor
ICAgIEVYUEVDVF9FUShEZWNpbWFsKDIpLCBlbmNvZGUoMTksIC0xLCBQbHVzKS5jZWlsKCkpOwor
CisgICAgRVhQRUNUX0VRKERlY2ltYWwoLTEpLCBEZWNpbWFsKC0xKS5jZWlsKCkpOworICAgIEVY
UEVDVF9FUShEZWNpbWFsKC0xKSwgZW5jb2RlKDExLCAtMSwgTWludXMpLmNlaWwoKSk7CisgICAg
RVhQRUNUX0VRKERlY2ltYWwoLTEpLCBlbmNvZGUoMTMsIC0xLCBNaW51cykuY2VpbCgpKTsKKyAg
ICBFWFBFQ1RfRVEoRGVjaW1hbCgtMSksIGVuY29kZSgxNSwgLTEsIE1pbnVzKS5jZWlsKCkpOwor
ICAgIEVYUEVDVF9FUShEZWNpbWFsKC0xKSwgZW5jb2RlKDE5LCAtMSwgTWludXMpLmNlaWwoKSk7
Cit9CisKK1RFU1RfRihEZWNpbWFsVGVzdCwgRW5jb2RlZERhdGEpCit7CisgICAgRVhQRUNUX0VR
KGVuY29kZSgwLCAwLCBQbHVzKSwgZW5jb2RlKDAsIDAsIFBsdXMpKTsKKyAgICBFWFBFQ1RfRVEo
ZW5jb2RlKDAsIDAsIE1pbnVzKSwgZW5jb2RlKDAsIDAsIE1pbnVzKSk7CisgICAgRVhQRUNUX0VR
KERlY2ltYWwoMSksIERlY2ltYWwoMSkpOworICAgIEVYUEVDVF9FUShlbmNvZGUoMSwgMCwgTWlu
dXMpLCBlbmNvZGUoMSwgMCwgTWludXMpKTsKKyAgICBFWFBFQ1RfRVEoRGVjaW1hbDo6aW5maW5p
dHkoUGx1cyksIGVuY29kZSgxLCAyMDAwLCBQbHVzKSk7CisgICAgRVhQRUNUX0VRKERlY2ltYWw6
Onplcm8oUGx1cyksIGVuY29kZSgxLCAtMjAwMCwgUGx1cykpOworfQorCitURVNUX0YoRGVjaW1h
bFRlc3QsIEZsb29yKQoreworICAgIEVYUEVDVF9FUShEZWNpbWFsKDEpLCBEZWNpbWFsKDEpLmZs
b29yKCkpOworICAgIEVYUEVDVF9FUShEZWNpbWFsKDEpLCBlbmNvZGUoMTEsIC0xLCBQbHVzKS5m
bG9vcigpKTsKKyAgICBFWFBFQ1RfRVEoRGVjaW1hbCgxKSwgZW5jb2RlKDEzLCAtMSwgUGx1cyku
Zmxvb3IoKSk7CisgICAgRVhQRUNUX0VRKERlY2ltYWwoMSksIGVuY29kZSgxNSwgLTEsIFBsdXMp
LmZsb29yKCkpOworICAgIEVYUEVDVF9FUShEZWNpbWFsKDEpLCBlbmNvZGUoMTksIC0xLCBQbHVz
KS5mbG9vcigpKTsKKworICAgIEVYUEVDVF9FUShEZWNpbWFsKC0xKSwgRGVjaW1hbCgtMSkuZmxv
b3IoKSk7CisgICAgRVhQRUNUX0VRKERlY2ltYWwoLTIpLCBlbmNvZGUoMTEsIC0xLCBNaW51cyku
Zmxvb3IoKSk7CisgICAgRVhQRUNUX0VRKERlY2ltYWwoLTIpLCBlbmNvZGUoMTMsIC0xLCBNaW51
cykuZmxvb3IoKSk7CisgICAgRVhQRUNUX0VRKERlY2ltYWwoLTIpLCBlbmNvZGUoMTUsIC0xLCBN
aW51cykuZmxvb3IoKSk7CisgICAgRVhQRUNUX0VRKERlY2ltYWwoLTIpLCBlbmNvZGUoMTksIC0x
LCBNaW51cykuZmxvb3IoKSk7Cit9CisKK1RFU1RfRihEZWNpbWFsVGVzdCwgRnJvbUludDMyKQor
eworICAgIEVYUEVDVF9FUShlbmNvZGUoMCwgMCwgUGx1cyksIERlY2ltYWwoMCkpOworICAgIEVY
UEVDVF9FUShEZWNpbWFsKDEpLCBEZWNpbWFsKDEpKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDEs
IDAsIE1pbnVzKSwgRGVjaW1hbCgtMSkpOworICAgIEVYUEVDVF9FUShlbmNvZGUoMTAwLCAwLCBQ
bHVzKSwgRGVjaW1hbCgxMDApKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDEwMCwgMCwgTWludXMp
LCBEZWNpbWFsKC0xMDApKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDB4N0ZGRkZGRkYsIDAsIFBs
dXMpLCBEZWNpbWFsKElOVF9NQVgpKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDB4ODAwMDAwMDB1
LCAwLCBNaW51cyksIERlY2ltYWwoSU5UX01JTikpOworfQorCitURVNUX0YoRGVjaW1hbFRlc3Qs
IEZyb21TdHJpbmcpCit7CisgICAgRVhQRUNUX0VRKGVuY29kZSgwLCAwLCBQbHVzKSwgZnJvbVN0
cmluZygiMCIpKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDAsIDAsIE1pbnVzKSwgZnJvbVN0cmlu
ZygiLTAiKSk7CisgICAgRVhQRUNUX0VRKERlY2ltYWwoMSksIGZyb21TdHJpbmcoIjEiKSk7Cisg
ICAgRVhQRUNUX0VRKGVuY29kZSgxLCAwLCBNaW51cyksIGZyb21TdHJpbmcoIi0xIikpOworICAg
IEVYUEVDVF9FUShEZWNpbWFsKDEpLCBmcm9tU3RyaW5nKCIwMSIpKTsKKyAgICBFWFBFQ1RfRVEo
ZW5jb2RlKDMsIDAsIFBsdXMpLCBmcm9tU3RyaW5nKCIrMyIpKTsKKyAgICBFWFBFQ1RfRVEoZW5j
b2RlKDAsIDMsIFBsdXMpLCBmcm9tU3RyaW5nKCIwRTMiKSk7CisgICAgRVhQRUNUX0VRKGVuY29k
ZSg1LCAtMSwgUGx1cyksIGZyb21TdHJpbmcoIi41IikpOworICAgIEVYUEVDVF9FUShlbmNvZGUo
MTAwLCAwLCBQbHVzKSwgZnJvbVN0cmluZygiMTAwIikpOworICAgIEVYUEVDVF9FUShlbmNvZGUo
MTAwLCAwLCBNaW51cyksIGZyb21TdHJpbmcoIi0xMDAiKSk7CisgICAgRVhQRUNUX0VRKGVuY29k
ZSgxMjMsIC0yLCBQbHVzKSwgZnJvbVN0cmluZygiMS4yMyIpKTsKKyAgICBFWFBFQ1RfRVEoZW5j
b2RlKDEyMywgLTIsIE1pbnVzKSwgZnJvbVN0cmluZygiLTEuMjMiKSk7CisgICAgRVhQRUNUX0VR
KGVuY29kZSgxMjMsIDgsIFBsdXMpLCBmcm9tU3RyaW5nKCIxLjIzRTEwIikpOworICAgIEVYUEVD
VF9FUShlbmNvZGUoMTIzLCA4LCBNaW51cyksIGZyb21TdHJpbmcoIi0xLjIzRTEwIikpOworICAg
IEVYUEVDVF9FUShlbmNvZGUoMTIzLCA4LCBQbHVzKSwgZnJvbVN0cmluZygiMS4yM0UrMTAiKSk7
CisgICAgRVhQRUNUX0VRKGVuY29kZSgxMjMsIDgsIE1pbnVzKSwgZnJvbVN0cmluZygiLTEuMjNF
KzEwIikpOworICAgIEVYUEVDVF9FUShlbmNvZGUoMTIzLCAtMTIsIFBsdXMpLCBmcm9tU3RyaW5n
KCIxLjIzRS0xMCIpKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDEyMywgLTEyLCBNaW51cyksIGZy
b21TdHJpbmcoIi0xLjIzRS0xMCIpKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDUsIC03LCBQbHVz
KSwgZnJvbVN0cmluZygiMC4wMDAwMDA1IikpOworICAgIEVYUEVDVF9FUShlbmNvZGUoMTIzLCAt
MywgUGx1cyksIGZyb21TdHJpbmcoIjAuMTIzIikpOworICAgIEVYUEVDVF9FUShlbmNvZGUoMCwg
LTIsIFBsdXMpLCBmcm9tU3RyaW5nKCIwMC4wMCIpKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDEs
IDIsIFBsdXMpLCBmcm9tU3RyaW5nKCIxRTIiKSk7CisgICAgRVhQRUNUX0VRKERlY2ltYWw6Omlu
ZmluaXR5KFBsdXMpLCBmcm9tU3RyaW5nKCIxRTIwMDAwIikpOworICAgIEVYUEVDVF9FUShEZWNp
bWFsOjp6ZXJvKFBsdXMpLCBmcm9tU3RyaW5nKCIxRS0yMDAwMCIpKTsKKyAgICBFWFBFQ1RfRVEo
ZW5jb2RlKDEwMDAsIDEwMjMsIFBsdXMpLCBmcm9tU3RyaW5nKCIxRTEwMjYiKSk7CisgICAgRVhQ
RUNUX0VRKERlY2ltYWw6Onplcm8oUGx1cyksIGZyb21TdHJpbmcoIjFFLTEwMjYiKSk7CisgICAg
RVhQRUNUX0VRKERlY2ltYWw6OmluZmluaXR5KFBsdXMpLCBmcm9tU3RyaW5nKCIxMjM0NTY3ODkw
RTEwMzYiKSk7CisKKyAgICAvLyAyXjEwMjQKKy8vIEZJWE1FOiBVSU5UNjRfQygxNzk3NjkzMTM0
ODYyMzE1OSkgc2hvdWxkIGJlIHVzZWQgYnV0IGl0IGRpZCBub3QgY29tcGlsZSBvbiBRdCBib3Rz
LgorI2lmIENPTVBJTEVSKE1TVkMpCisgICAgY29uc3QgdWludDY0X3QgbGVhZGluZ0RpZ2l0c09m
MlBvd2VyT2YxMDI0ID0gMTc5NzY5MzEzNDg2MjMxNTl1aTY0OworI2Vsc2UKKyAgICBjb25zdCB1
aW50NjRfdCBsZWFkaW5nRGlnaXRzT2YyUG93ZXJPZjEwMjQgPSAxNzk3NjkzMTM0ODYyMzE1OXVs
bDsKKyNlbmRpZgorICAgIEVYUEVDVF9FUShlbmNvZGUobGVhZGluZ0RpZ2l0c09mMlBvd2VyT2Yx
MDI0LCAyOTIsIFBsdXMpLCBmcm9tU3RyaW5nKCIxNzk3NjkzMTM0ODYyMzE1OTA3NzI5MzA1MTkw
Nzg5MDI0NzMzNjE3OTc2OTc4OTQyMzA2NTcyNzM0MzAwODExNTc3MzI2NzU4MDU1MDA5NjMxMzI3
MDg0NzczMjI0MDc1MzYwMjExMjAxMTM4Nzk4NzEzOTMzNTc2NTg3ODk3Njg4MTQ0MTY2MjI0OTI4
NDc0MzA2Mzk0NzQxMjQzNzc3Njc4OTM0MjQ4NjU0ODUyNzYzMDIyMTk2MDEyNDYwOTQxMTk0NTMw
ODI5NTIwODUwMDU3Njg4MzgxNTA2ODIzNDI0NjI4ODE0NzM5MTMxMTA1NDA4MjcyMzcxNjMzNTA1
MTA2ODQ1ODYyOTgyMzk5NDcyNDU5Mzg0Nzk3MTYzMDQ4MzUzNTYzMjk2MjQyMjQxMzcyMTYiKSk7
Cit9CisKKy8vIFRoZXNlIHN0cmluZ3MgYXJlIGxvb2sgbGlrZSBwcm9wZXIgbnVtYmVyLCBidXQg
d2UgZG9uJ3QgYWNjZXB0IHRoZW0uCitURVNUX0YoRGVjaW1hbFRlc3QsIEZyb21TdHJpbmdMaWtl
TnVtYmVyKQoreworICAgIEVYUEVDVF9FUShEZWNpbWFsOjpuYW4oKSwgZnJvbVN0cmluZygiIDEy
MyAiKSk7CisgICAgRVhQRUNUX0VRKERlY2ltYWw6Om5hbigpLCBmcm9tU3RyaW5nKCIxLDIzNCIp
KTsKKyAgICBFWFBFQ1RfRVEoRGVjaW1hbDo6bmFuKCksIGZyb21TdHJpbmcoIklORiIpKTsKK30K
KworVEVTVF9GKERlY2ltYWxUZXN0LCBmcm9tU3RyaW5nVHJ1bmNhdGVkKQoreworICAgIEVYUEVD
VF9FUShEZWNpbWFsOjpuYW4oKSwgZnJvbVN0cmluZygieCIpKTsKKyAgICBFWFBFQ1RfRVEoRGVj
aW1hbDo6bmFuKCksIGZyb21TdHJpbmcoIjAuIikpOworICAgIEVYUEVDVF9FUShEZWNpbWFsOjpu
YW4oKSwgZnJvbVN0cmluZygiMXgiKSk7CisKKyAgICBFWFBFQ1RfRVEoRGVjaW1hbDo6bmFuKCks
IGZyb21TdHJpbmcoIjFFeCIpKTsKKyAgICBFWFBFQ1RfRVEoRGVjaW1hbDo6bmFuKCksIGZyb21T
dHJpbmcoIjFFMngiKSk7CisgICAgRVhQRUNUX0VRKERlY2ltYWw6Om5hbigpLCBmcm9tU3RyaW5n
KCIxRSt4IikpOworfQorCitURVNUX0YoRGVjaW1hbFRlc3QsIE9wQWRkKQoreworICAgIEVYUEVD
VF9FUShlbmNvZGUoMCwgMCwgUGx1cyksIERlY2ltYWwoMCkgKyBEZWNpbWFsKDApKTsKKyAgICBF
WFBFQ1RfRVEoRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSArIERlY2ltYWwoLTEpKTsKKyAgICBFWFBF
Q1RfRVEoRGVjaW1hbCgxKSwgRGVjaW1hbCgtMSkgKyBEZWNpbWFsKDIpKTsKKyAgICBFWFBFQ1Rf
RVEoZW5jb2RlKDEwMCwgMCwgUGx1cyksIERlY2ltYWwoOTkpICsgRGVjaW1hbCgxKSk7CisgICAg
RVhQRUNUX0VRKGVuY29kZSgxMDAsIDAsIE1pbnVzKSwgRGVjaW1hbCgtNTApICsgRGVjaW1hbCgt
NTApKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDEwMDAwMDAwMDAwMDAwMDAsIDM1LCBQbHVzKSwg
ZW5jb2RlKDEsIDUwLCBQbHVzKSArIERlY2ltYWwoMSkpOworICAgIEVYUEVDVF9FUShlbmNvZGUo
MTAwMDAwMDAwMDAwMDAwMCwgMzUsIFBsdXMpLCBEZWNpbWFsKDEpICsgZW5jb2RlKDEsIDUwLCBQ
bHVzKSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSgxMDAwMDAwMDAwMSwgMCwgUGx1cyksIGVuY29k
ZSgxLCAxMCwgUGx1cykgKyBEZWNpbWFsKDEpKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDEwMDAw
MDAwMDAxLCAwLCBQbHVzKSwgRGVjaW1hbCgxKSArIGVuY29kZSgxLCAxMCwgUGx1cykpOworICAg
IEVYUEVDVF9FUShlbmNvZGUoMSwgMCwgUGx1cyksIGVuY29kZSgxLCAtMTAyMiwgUGx1cykgKyBl
bmNvZGUoMSwgMCwgUGx1cykpOworICAgIEVYUEVDVF9FUShlbmNvZGUoMiwgLTEwMjIsIFBsdXMp
LCBlbmNvZGUoMSwgLTEwMjIsIFBsdXMpICsgZW5jb2RlKDEsIC0xMDIyLCBQbHVzKSk7Cit9CisK
K1RFU1RfRihEZWNpbWFsVGVzdCwgT3BBZGRCaWdFKQoreworICAgIEVYUEVDVF9FUShlbmNvZGUo
MSwgMTAyMiwgUGx1cyksIGVuY29kZSgxLCAxMDIyLCBQbHVzKSArIGVuY29kZSgxLCAwLCBQbHVz
KSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSgyLCAxMDIyLCBQbHVzKSwgZW5jb2RlKDEsIDEwMjIs
IFBsdXMpICsgZW5jb2RlKDEsIDEwMjIsIFBsdXMpKTsKKyAgICBFWFBFQ1RfRVEoRGVjaW1hbDo6
aW5maW5pdHkoUGx1cyksIGVuY29kZSh1aW50NjRfdCgtMSksIDEwMjIsIFBsdXMpICsgZW5jb2Rl
KDEsIDAsIFBsdXMpKTsKK30KKworVEVTVF9GKERlY2ltYWxUZXN0LCBPcEFkZFNtYWxsRSkKK3sK
KyAgICBFWFBFQ1RfRVEoZW5jb2RlKDEsIDAsIFBsdXMpLCBlbmNvZGUoMSwgLTEwMjIsIFBsdXMp
ICsgZW5jb2RlKDEsIDAsIFBsdXMpKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDIsIC0xMDIyLCBQ
bHVzKSwgZW5jb2RlKDEsIC0xMDIyLCBQbHVzKSArIGVuY29kZSgxLCAtMTAyMiwgUGx1cykpOwor
fQorCitURVNUX0YoRGVjaW1hbFRlc3QsIE9wQWRkU3BlY2lhbFZhbHVlcykKK3sKKyAgICBjb25z
dCBEZWNpbWFsIEluZmluaXR5KERlY2ltYWw6OmluZmluaXR5KFBsdXMpKTsKKyAgICBjb25zdCBE
ZWNpbWFsIE1pbnVzSW5maW5pdHkoRGVjaW1hbDo6aW5maW5pdHkoTWludXMpKTsKKyAgICBjb25z
dCBEZWNpbWFsIE5hTihEZWNpbWFsOjpuYW4oKSk7CisgICAgY29uc3QgRGVjaW1hbCBUZW4oMTAp
OworCisgICAgRVhQRUNUX0VRKEluZmluaXR5LCBJbmZpbml0eSArIEluZmluaXR5KTsKKyAgICBF
WFBFQ1RfRVEoTmFOLCBJbmZpbml0eSArIE1pbnVzSW5maW5pdHkpOworICAgIEVYUEVDVF9FUShO
YU4sIE1pbnVzSW5maW5pdHkgKyBJbmZpbml0eSk7CisgICAgRVhQRUNUX0VRKE1pbnVzSW5maW5p
dHksIE1pbnVzSW5maW5pdHkgKyBNaW51c0luZmluaXR5KTsKKworICAgIEVYUEVDVF9FUShJbmZp
bml0eSwgSW5maW5pdHkgKyBUZW4pOworICAgIEVYUEVDVF9FUShJbmZpbml0eSwgVGVuICsgSW5m
aW5pdHkpOworICAgIEVYUEVDVF9FUShNaW51c0luZmluaXR5LCBNaW51c0luZmluaXR5ICsgVGVu
KTsKKyAgICBFWFBFQ1RfRVEoTWludXNJbmZpbml0eSwgVGVuICsgTWludXNJbmZpbml0eSk7CisK
KyAgICBFWFBFQ1RfRVEoTmFOLCBOYU4gKyBOYU4pOworICAgIEVYUEVDVF9FUShOYU4sIE5hTiAr
IFRlbik7CisgICAgRVhQRUNUX0VRKE5hTiwgVGVuICsgTmFOKTsKK30KKworVEVTVF9GKERlY2lt
YWxUZXN0LCBPcENvbXBhcmUpCit7CisgICAgRVhQRUNUX1RSVUUoRGVjaW1hbCgwKSA9PSBEZWNp
bWFsKDApKTsKKyAgICBFWFBFQ1RfVFJVRShEZWNpbWFsKDApICE9IERlY2ltYWwoMSkpOworICAg
IEVYUEVDVF9UUlVFKERlY2ltYWwoMCkgPCBEZWNpbWFsKDEpKTsKKyAgICBFWFBFQ1RfVFJVRShE
ZWNpbWFsKDApIDw9IERlY2ltYWwoMCkpOworICAgIEVYUEVDVF9UUlVFKERlY2ltYWwoMCkgPiBE
ZWNpbWFsKC0xKSk7CisgICAgRVhQRUNUX1RSVUUoRGVjaW1hbCgwKSA+PSBEZWNpbWFsKDApKTsK
KworICAgIEVYUEVDVF9GQUxTRShEZWNpbWFsKDEpID09IERlY2ltYWwoMikpOworICAgIEVYUEVD
VF9GQUxTRShEZWNpbWFsKDEpICE9IERlY2ltYWwoMSkpOworICAgIEVYUEVDVF9GQUxTRShEZWNp
bWFsKDEpIDwgRGVjaW1hbCgwKSk7CisgICAgRVhQRUNUX0ZBTFNFKERlY2ltYWwoMSkgPD0gRGVj
aW1hbCgwKSk7CisgICAgRVhQRUNUX0ZBTFNFKERlY2ltYWwoMSkgPiBEZWNpbWFsKDIpKTsKKyAg
ICBFWFBFQ1RfRkFMU0UoRGVjaW1hbCgxKSA+PSBEZWNpbWFsKDIpKTsKK30KKworVEVTVF9GKERl
Y2ltYWxUZXN0LCBPcENvbXBhcmVTcGVjaWFsVmFsdWVzKQoreworICAgIEVYUEVDVF9UUlVFKERl
Y2ltYWwoMSkgPCBEZWNpbWFsOjppbmZpbml0eShQbHVzKSk7CisgICAgRVhQRUNUX1RSVUUoRGVj
aW1hbCgxKSA+IERlY2ltYWw6OmluZmluaXR5KE1pbnVzKSk7Cit9CisKK1RFU1RfRihEZWNpbWFs
VGVzdCwgT3BEaXYpCit7CisgICAgRVhQRUNUX0VRKGVuY29kZSgwLCAwLCBQbHVzKSwgRGVjaW1h
bCgwKSAvIERlY2ltYWwoMSkpOworICAgIEVYUEVDVF9FUShlbmNvZGUoMiwgMCwgTWludXMpLCBE
ZWNpbWFsKDIpIC8gRGVjaW1hbCgtMSkpOworICAgIEVYUEVDVF9FUShlbmNvZGUoNSwgLTEsIE1p
bnVzKSwgRGVjaW1hbCgtMSkgLyBEZWNpbWFsKDIpKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDk5
LCAwLCBQbHVzKSwgRGVjaW1hbCg5OSkgLyBEZWNpbWFsKDEpKTsKKyAgICBFWFBFQ1RfRVEoRGVj
aW1hbCgxKSwgRGVjaW1hbCgtNTApIC8gRGVjaW1hbCgtNTApKTsKKyAgICBFWFBFQ1RfRVEoZW5j
b2RlKDMzMzMzMzMzMzMzMzMzMzMsIC0xNiwgUGx1cyksIERlY2ltYWwoMSkgLyBEZWNpbWFsKDMp
KTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDEyMzQ1Njc4OTAxMjM0LCAtMSwgUGx1cyksIGVuY29k
ZSgxMjM0NTY3ODkwMTIzNCwgMCwgUGx1cykgLyBEZWNpbWFsKDEwKSk7Cit9CisKK1RFU1RfRihE
ZWNpbWFsVGVzdCwgT3BEaXZCaWdFKQoreworICAgIEVYUEVDVF9FUShlbmNvZGUoMSwgMTAyMiwg
UGx1cyksIGVuY29kZSgxLCAxMDIyLCBQbHVzKSAvIGVuY29kZSgxLCAwLCBQbHVzKSk7CisgICAg
RVhQRUNUX0VRKGVuY29kZSgxLCAwLCBQbHVzKSwgZW5jb2RlKDEsIDEwMjIsIFBsdXMpIC8gZW5j
b2RlKDEsIDEwMjIsIFBsdXMpKTsKK30KKworVEVTVF9GKERlY2ltYWxUZXN0LCBPcERpdlNtYWxs
RSkKK3sKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDEsIC0xMDIyLCBQbHVzKSwgZW5jb2RlKDEsIC0x
MDIyLCBQbHVzKSAvIGVuY29kZSgxLCAwLCBQbHVzKSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSgx
LCAwLCBQbHVzKSwgZW5jb2RlKDEsIC0xMDIyLCBQbHVzKSAvIGVuY29kZSgxLCAtMTAyMiwgUGx1
cykpOworfQorCitURVNUX0YoRGVjaW1hbFRlc3QsIE9wRGl2U3BlY2lhbFZhbHVlcykKK3sKKyAg
ICBjb25zdCBEZWNpbWFsIEluZmluaXR5KERlY2ltYWw6OmluZmluaXR5KFBsdXMpKTsKKyAgICBj
b25zdCBEZWNpbWFsIE1pbnVzSW5maW5pdHkoRGVjaW1hbDo6aW5maW5pdHkoTWludXMpKTsKKyAg
ICBjb25zdCBEZWNpbWFsIE5hTihEZWNpbWFsOjpuYW4oKSk7CisgICAgY29uc3QgRGVjaW1hbCBa
ZXJvKERlY2ltYWw6Onplcm8oUGx1cykpOworICAgIGNvbnN0IERlY2ltYWwgTWludXNaZXJvKERl
Y2ltYWw6Onplcm8oTWludXMpKTsKKyAgICBjb25zdCBEZWNpbWFsIFRlbigxMCk7CisgICAgY29u
c3QgRGVjaW1hbCBNaW51c1RlbigtMTApOworCisgICAgRVhQRUNUX0VRKE5hTiwgWmVybyAvIFpl
cm8pOworICAgIEVYUEVDVF9FUShOYU4sIFplcm8gLyBNaW51c1plcm8pOworICAgIEVYUEVDVF9F
UShOYU4sIE1pbnVzWmVybyAvIFplcm8pOworICAgIEVYUEVDVF9FUShOYU4sIE1pbnVzWmVybyAv
IE1pbnVzWmVybyk7CisKKyAgICBFWFBFQ1RfRVEoSW5maW5pdHksIFRlbiAvIFplcm8pOworICAg
IEVYUEVDVF9FUShNaW51c0luZmluaXR5LCBUZW4gLyBNaW51c1plcm8pOworICAgIEVYUEVDVF9F
UShNaW51c0luZmluaXR5LCBNaW51c1RlbiAvIFplcm8pOworICAgIEVYUEVDVF9FUShJbmZpbml0
eSwgTWludXNUZW4gLyBNaW51c1plcm8pOworCisgICAgRVhQRUNUX0VRKEluZmluaXR5LCBJbmZp
bml0eSAvIFplcm8pOworICAgIEVYUEVDVF9FUShNaW51c0luZmluaXR5LCBJbmZpbml0eSAvIE1p
bnVzWmVybyk7CisgICAgRVhQRUNUX0VRKE1pbnVzSW5maW5pdHksIE1pbnVzSW5maW5pdHkgLyBa
ZXJvKTsKKyAgICBFWFBFQ1RfRVEoSW5maW5pdHksIE1pbnVzSW5maW5pdHkgLyBNaW51c1plcm8p
OworCisgICAgRVhQRUNUX0VRKE5hTiwgSW5maW5pdHkgLyBJbmZpbml0eSk7CisgICAgRVhQRUNU
X0VRKE5hTiwgSW5maW5pdHkgLyBNaW51c0luZmluaXR5KTsKKyAgICBFWFBFQ1RfRVEoTmFOLCBN
aW51c0luZmluaXR5IC8gSW5maW5pdHkpOworICAgIEVYUEVDVF9FUShOYU4sIE1pbnVzSW5maW5p
dHkgLyBNaW51c0luZmluaXR5KTsKKworICAgIEVYUEVDVF9FUShaZXJvLCBUZW4gLyBJbmZpbml0
eSk7CisgICAgRVhQRUNUX0VRKE1pbnVzWmVybywgVGVuIC8gTWludXNJbmZpbml0eSk7CisgICAg
RVhQRUNUX0VRKE1pbnVzWmVybywgTWludXNUZW4gLyBJbmZpbml0eSk7CisgICAgRVhQRUNUX0VR
KFplcm8sIE1pbnVzVGVuIC8gTWludXNJbmZpbml0eSk7CisKKyAgICBFWFBFQ1RfRVEoTmFOLCBO
YU4gLyBOYU4pOworICAgIEVYUEVDVF9FUShOYU4sIE5hTiAvIFRlbik7CisgICAgRVhQRUNUX0VR
KE5hTiwgVGVuIC8gTmFOKTsKK30KKworVEVTVF9GKERlY2ltYWxUZXN0LCBPcE11bCkKK3sKKyAg
ICBFWFBFQ1RfRVEoZW5jb2RlKDAsIDAsIFBsdXMpLCBEZWNpbWFsKDApICogRGVjaW1hbCgwKSk7
CisgICAgRVhQRUNUX0VRKGVuY29kZSgyLCAwLCBNaW51cyksIERlY2ltYWwoMikgKiBEZWNpbWFs
KC0xKSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSgyLCAwLCBNaW51cyksIERlY2ltYWwoLTEpICog
RGVjaW1hbCgyKSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSg5OSwgMCwgUGx1cyksIERlY2ltYWwo
OTkpICogRGVjaW1hbCgxKSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSgyNTAwLCAwLCBQbHVzKSwg
RGVjaW1hbCgtNTApICogRGVjaW1hbCgtNTApKTsKK30KKworVEVTVF9GKERlY2ltYWxUZXN0LCBP
cE11bEJpZ0UpCit7CisgICAgRVhQRUNUX0VRKGVuY29kZSgxLCAxMDIyLCBQbHVzKSwgZW5jb2Rl
KDEsIDEwMjIsIFBsdXMpICogZW5jb2RlKDEsIDAsIFBsdXMpKTsKKyAgICBFWFBFQ1RfRVEoRGVj
aW1hbDo6aW5maW5pdHkoUGx1cyksIGVuY29kZSgxLCAxMDIyLCBQbHVzKSAqIGVuY29kZSgxLCAx
MDIyLCBQbHVzKSk7Cit9CisKK1RFU1RfRihEZWNpbWFsVGVzdCwgT3BNdWxTbWFsbEUpCit7Cisg
ICAgRVhQRUNUX0VRKGVuY29kZSgxLCAtMTAyMiwgUGx1cyksIGVuY29kZSgxLCAtMTAyMiwgUGx1
cykgKiBlbmNvZGUoMSwgMCwgUGx1cykpOworICAgIEVYUEVDVF9FUShlbmNvZGUoMCwgMCwgUGx1
cyksIGVuY29kZSgxLCAtMTAyMiwgUGx1cykgKiBlbmNvZGUoMSwgLTEwMjIsIFBsdXMpKTsKK30K
KworVEVTVF9GKERlY2ltYWxUZXN0LCBPcE11bFNwZWNpYWxWYWx1ZXMpCit7CisgICAgY29uc3Qg
RGVjaW1hbCBJbmZpbml0eShEZWNpbWFsOjppbmZpbml0eShQbHVzKSk7CisgICAgY29uc3QgRGVj
aW1hbCBNaW51c0luZmluaXR5KERlY2ltYWw6OmluZmluaXR5KE1pbnVzKSk7CisgICAgY29uc3Qg
RGVjaW1hbCBOYU4oRGVjaW1hbDo6bmFuKCkpOworICAgIGNvbnN0IERlY2ltYWwgVGVuKDEwKTsK
KyAgICBjb25zdCBEZWNpbWFsIE1pbnVzVGVuKC0xMCk7CisgICAgY29uc3QgRGVjaW1hbCBaZXJv
KERlY2ltYWw6Onplcm8oUGx1cykpOworICAgIGNvbnN0IERlY2ltYWwgTWludXNaZXJvKERlY2lt
YWw6Onplcm8oTWludXMpKTsKKworICAgIEVYUEVDVF9FUShJbmZpbml0eSwgSW5maW5pdHkgKiBJ
bmZpbml0eSk7CisgICAgRVhQRUNUX0VRKE1pbnVzSW5maW5pdHksIEluZmluaXR5ICogTWludXNJ
bmZpbml0eSk7CisgICAgRVhQRUNUX0VRKE1pbnVzSW5maW5pdHksIE1pbnVzSW5maW5pdHkgKiBJ
bmZpbml0eSk7CisgICAgRVhQRUNUX0VRKEluZmluaXR5LCBNaW51c0luZmluaXR5ICogTWludXNJ
bmZpbml0eSk7CisKKyAgICBFWFBFQ1RfRVEoTmFOLCBJbmZpbml0eSAqIFplcm8pOworICAgIEVY
UEVDVF9FUShOYU4sIFplcm8gKiBNaW51c0luZmluaXR5KTsKKyAgICBFWFBFQ1RfRVEoTmFOLCBN
aW51c0luZmluaXR5ICogWmVybyk7CisgICAgRVhQRUNUX0VRKE5hTiwgTWludXNJbmZpbml0eSAq
IFplcm8pOworCisgICAgRVhQRUNUX0VRKE5hTiwgSW5maW5pdHkgKiBNaW51c1plcm8pOworICAg
IEVYUEVDVF9FUShOYU4sIE1pbnVzWmVybyAqIE1pbnVzSW5maW5pdHkpOworICAgIEVYUEVDVF9F
UShOYU4sIE1pbnVzSW5maW5pdHkgKiBNaW51c1plcm8pOworICAgIEVYUEVDVF9FUShOYU4sIE1p
bnVzSW5maW5pdHkgKiBNaW51c1plcm8pOworCisgICAgRVhQRUNUX0VRKEluZmluaXR5LCBJbmZp
bml0eSAqIFRlbik7CisgICAgRVhQRUNUX0VRKEluZmluaXR5LCBUZW4gKiBJbmZpbml0eSk7Cisg
ICAgRVhQRUNUX0VRKE1pbnVzSW5maW5pdHksIE1pbnVzSW5maW5pdHkgKiBUZW4pOworICAgIEVY
UEVDVF9FUShNaW51c0luZmluaXR5LCBUZW4gKiBNaW51c0luZmluaXR5KTsKKworICAgIEVYUEVD
VF9FUShNaW51c0luZmluaXR5LCBJbmZpbml0eSAqIE1pbnVzVGVuKTsKKyAgICBFWFBFQ1RfRVEo
TWludXNJbmZpbml0eSwgTWludXNUZW4gKiBJbmZpbml0eSk7CisgICAgRVhQRUNUX0VRKEluZmlu
aXR5LCBNaW51c0luZmluaXR5ICogTWludXNUZW4pOworICAgIEVYUEVDVF9FUShJbmZpbml0eSwg
TWludXNUZW4gKiBNaW51c0luZmluaXR5KTsKKworICAgIEVYUEVDVF9FUShOYU4sIE5hTiAqIE5h
Tik7CisgICAgRVhQRUNUX0VRKE5hTiwgTmFOICogVGVuKTsKKyAgICBFWFBFQ1RfRVEoTmFOLCBU
ZW4gKiBOYU4pOworfQorCitURVNUX0YoRGVjaW1hbFRlc3QsIE9wU3ViKQoreworICAgIEVYUEVD
VF9FUShlbmNvZGUoMCwgMCwgUGx1cyksIERlY2ltYWwoMCkgLSBEZWNpbWFsKDApKTsKKyAgICBF
WFBFQ1RfRVEoZW5jb2RlKDMsIDAsIFBsdXMpLCBEZWNpbWFsKDIpIC0gRGVjaW1hbCgtMSkpOwor
ICAgIEVYUEVDVF9FUShlbmNvZGUoMywgMCwgTWludXMpLCBEZWNpbWFsKC0xKSAtIERlY2ltYWwo
MikpOworICAgIEVYUEVDVF9FUShlbmNvZGUoOTgsIDAsIFBsdXMpLCBEZWNpbWFsKDk5KSAtIERl
Y2ltYWwoMSkpOworICAgIEVYUEVDVF9FUShlbmNvZGUoMCwgMCwgUGx1cyksIERlY2ltYWwoLTUw
KSAtIERlY2ltYWwoLTUwKSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSgxMDAwMDAwMDAwMDAwMDAw
LCAzNSwgUGx1cyksIGVuY29kZSgxLCA1MCwgUGx1cykgLSBEZWNpbWFsKDEpKTsKKyAgICBFWFBF
Q1RfRVEoZW5jb2RlKDEwMDAwMDAwMDAwMDAwMDAsIDM1LCBNaW51cyksIERlY2ltYWwoMSkgLSBl
bmNvZGUoMSwgNTAsIFBsdXMpKTsKK30KKworVEVTVF9GKERlY2ltYWxUZXN0LCBPcFN1YkJpZ0Up
Cit7CisgICAgRVhQRUNUX0VRKGVuY29kZSgxLCAxMDIyLCBQbHVzKSwgZW5jb2RlKDEsIDEwMjIs
IFBsdXMpIC0gZW5jb2RlKDEsIDAsIFBsdXMpKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDAsIDAs
IFBsdXMpLCBlbmNvZGUoMSwgMTAyMiwgUGx1cykgLSBlbmNvZGUoMSwgMTAyMiwgUGx1cykpOwor
fQorCitURVNUX0YoRGVjaW1hbFRlc3QsIE9wU3ViU21hbGxFKQoreworICAgIC8vIEZJWE1FOiBV
SU5UNjRfQygxMDAwMDAwMDAwMDAwMDAwMCkgc2hvdWxkIGJlIHVzZWQgYnV0IGl0IGRpZCBub3Qg
Y29tcGlsZSBvbiBRdCBib3RzLgorICAgICNpZiBDT01QSUxFUihNU1ZDKQorICAgICAgICBjb25z
dCB1aW50NjRfdCB1aW50MTAwMDAwMDAwMDAwMDAwMDAgPSAxMDAwMDAwMDAwMDAwMDAwMHVpNjQ7
CisgICAgI2Vsc2UKKyAgICAgICAgY29uc3QgdWludDY0X3QgdWludDEwMDAwMDAwMDAwMDAwMDAw
ID0gMTAwMDAwMDAwMDAwMDAwMDB1bGw7CisgICAgI2VuZGlmCisKKyAgICBFWFBFQ1RfRVEoZW5j
b2RlKHVpbnQxMDAwMDAwMDAwMDAwMDAwMCwgLTE2LCBNaW51cyksIGVuY29kZSgxLCAtMTAyMiwg
UGx1cykgLSBlbmNvZGUoMSwgMCwgUGx1cykpOworICAgIEVYUEVDVF9FUShlbmNvZGUoMCwgMCwg
UGx1cyksIGVuY29kZSgxLCAtMTAyMiwgUGx1cykgLSBlbmNvZGUoMSwgLTEwMjIsIFBsdXMpKTsK
K30KKworVEVTVF9GKERlY2ltYWxUZXN0LCBPcFN1YlNwZWNpYWxWYWx1ZXMpCit7CisgICAgY29u
c3QgRGVjaW1hbCBJbmZpbml0eShEZWNpbWFsOjppbmZpbml0eShQbHVzKSk7CisgICAgY29uc3Qg
RGVjaW1hbCBNaW51c0luZmluaXR5KERlY2ltYWw6OmluZmluaXR5KE1pbnVzKSk7CisgICAgY29u
c3QgRGVjaW1hbCBOYU4oRGVjaW1hbDo6bmFuKCkpOworICAgIGNvbnN0IERlY2ltYWwgVGVuKDEw
KTsKKworICAgIEVYUEVDVF9FUShOYU4sIEluZmluaXR5IC0gSW5maW5pdHkpOworICAgIEVYUEVD
VF9FUShJbmZpbml0eSwgSW5maW5pdHkgLSBNaW51c0luZmluaXR5KTsKKyAgICBFWFBFQ1RfRVEo
TWludXNJbmZpbml0eSwgTWludXNJbmZpbml0eSAtIEluZmluaXR5KTsKKyAgICBFWFBFQ1RfRVEo
TmFOLCBNaW51c0luZmluaXR5IC0gTWludXNJbmZpbml0eSk7CisKKyAgICBFWFBFQ1RfRVEoSW5m
aW5pdHksIEluZmluaXR5IC0gVGVuKTsKKyAgICBFWFBFQ1RfRVEoTWludXNJbmZpbml0eSwgVGVu
IC0gSW5maW5pdHkpOworICAgIEVYUEVDVF9FUShNaW51c0luZmluaXR5LCBNaW51c0luZmluaXR5
IC0gVGVuKTsKKyAgICBFWFBFQ1RfRVEoSW5maW5pdHksIFRlbiAtIE1pbnVzSW5maW5pdHkpOwor
CisgICAgRVhQRUNUX0VRKE5hTiwgTmFOIC0gTmFOKTsKKyAgICBFWFBFQ1RfRVEoTmFOLCBOYU4g
LSBUZW4pOworICAgIEVYUEVDVF9FUShOYU4sIFRlbiAtIE5hTik7Cit9CisKK1RFU1RfRihEZWNp
bWFsVGVzdCwgUHJvcGVydGllcykKK3sKKyAgICBFWFBFQ1RfVFJVRShEZWNpbWFsKDApLmlzRmlu
aXRlKCkpOworICAgIEVYUEVDVF9GQUxTRShEZWNpbWFsKDApLmlzU3BlY2lhbCgpKTsKK30KKwor
VEVTVF9GKERlY2ltYWxUZXN0LCBQcm9wZXJ0aWVzU3BlY2lhbCkKK3sKKyAgICBFWFBFQ1RfVFJV
RShEZWNpbWFsOjppbmZpbml0eShQbHVzKS5pc1NwZWNpYWwoKSk7CisgICAgRVhQRUNUX0ZBTFNF
KERlY2ltYWw6OmluZmluaXR5KFBsdXMpLmlzRmluaXRlKCkpOworCisgICAgRVhQRUNUX1RSVUUo
RGVjaW1hbDo6aW5maW5pdHkoTWludXMpLmlzU3BlY2lhbCgpKTsKKyAgICBFWFBFQ1RfRkFMU0Uo
RGVjaW1hbDo6aW5maW5pdHkoTWludXMpLmlzRmluaXRlKCkpOworCisgICAgRVhQRUNUX1RSVUUo
RGVjaW1hbDo6bmFuKCkuaXNTcGVjaWFsKCkpOworICAgIEVYUEVDVF9GQUxTRShEZWNpbWFsOjpu
YW4oKS5pc0Zpbml0ZSgpKTsKK30KKworLy8gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9udW1iZXIv
bnVtYmVyLXN0ZXB1cC1zdGVwZG93bi1mcm9tLXJlbmRlcmVyCitURVNUX0YoRGVjaW1hbFRlc3Qs
IFJlYWxXb3JsZEV4YW1wbGVOdW1iZXJTdGVwVXBTdGVwRG93bkZyb21SZW5kZXJlcikKK3sKKyAg
ICBFWFBFQ1RfRVEoU3RyaW5nKCIxMCIpLCBzdGVwRG93bigiMCIsICIxMDAiLCAiMTAiLCAiMTki
LCAxKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiOTAiKSwgc3RlcFVwKCIwIiwgIjk5IiwgIjEw
IiwgIjg5IiwgMSkpOworICAgIEVYUEVDVF9FUShTdHJpbmcoIjEiKSwgc3RlcFVwKCIwIiwgIjEi
LCAiMC4zMzMzMzMzMzMzMzMzMzMzMyIsICIwIiwgMykpOyAvLyBzdGVwPTEvMworICAgIEVYUEVD
VF9FUShTdHJpbmcoIjAuMDEiKSwgc3RlcFVwKCIwIiwgIjAuMDEiLCAiMC4wMDMzMzMzMzMzMzMz
MzMzMzMzIiwgIjAiLCAzKSk7IC8vIHN0ZXA9MS8zMDAKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCIx
IiksIHN0ZXBVcCgiMCIsICIxIiwgIjAuMDAzOTIxNTY4NjI3NDUwOTgwIiwgIjAiLCAyNTUpKTsg
Ly8gc3RlcD0xLzI1NQorICAgIEVYUEVDVF9FUShTdHJpbmcoIjEiKSwgc3RlcFVwKCIwIiwgIjEi
LCAiMC4xIiwgIjAiLCAxMCkpOworfQorCitURVNUX0YoRGVjaW1hbFRlc3QsIFJlYWxXb3JsZEV4
YW1wbGVOdW1iZXJTdGVwVXBTdGVwRG93bkZyb21SZW5kZXJlclJvdW5kaW5nKQoreworICAgIEVY
UEVDVF9FUShTdHJpbmcoIjUuMDE1IiksIHN0ZXBVcCgiMCIsICIxMDAiLCAiMC4wMDUiLCAiNS4w
MDUiLCAyKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiNS4wNiIpLCBzdGVwVXAoIjAiLCAiMTAw
IiwgIjAuMDA1IiwgIjUuMDA1IiwgMTEpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCI1LjA2NSIp
LCBzdGVwVXAoIjAiLCAiMTAwIiwgIjAuMDA1IiwgIjUuMDA1IiwgMTIpKTsKKworICAgIEVYUEVD
VF9FUShTdHJpbmcoIjUuMDE1IiksIHN0ZXBVcCgiNCIsICI5IiwgIjAuMDA1IiwgIjUuMDA1Iiwg
MikpOworICAgIEVYUEVDVF9FUShTdHJpbmcoIjUuMDYiKSwgc3RlcFVwKCI0IiwgIjkiLCAiMC4w
MDUiLCAiNS4wMDUiLCAxMSkpOworICAgIEVYUEVDVF9FUShTdHJpbmcoIjUuMDY1IiksIHN0ZXBV
cCgiNCIsICI5IiwgIjAuMDA1IiwgIjUuMDA1IiwgMTIpKTsKK30KKworVEVTVF9GKERlY2ltYWxU
ZXN0LCBSZWFsV29ybGRFeGFtcGxlUmFuZ2VTdGVwVXBTdGVwRG93bikKK3sKKyAgICBFWFBFQ1Rf
RVEoU3RyaW5nKCIxZSszOCIpLCBzdGVwVXAoIjAiLCAiMUUzOCIsICIxIiwgIjFFMzgiLCA5KSk7
CisgICAgRVhQRUNUX0VRKFN0cmluZygiMWUrMzgiKSwgc3RlcERvd24oIjAiLCAiMUUzOCIsICIx
IiwgIjFFMzgiLCA5KSk7Cit9CisKK1RFU1RfRihEZWNpbWFsVGVzdCwgUmVtYWluZGVyKQorewor
ICAgIEVYUEVDVF9FUShlbmNvZGUoOSwgLTEsIE1pbnVzKSwgZW5jb2RlKDIxLCAtMSwgUGx1cyku
cmVtYWluZGVyKDMpKTsKKyAgICBFWFBFQ1RfRVEoRGVjaW1hbCgxKSwgRGVjaW1hbCgxMCkucmVt
YWluZGVyKDMpKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDEsIDAsIE1pbnVzKSwgRGVjaW1hbCgt
MTApLnJlbWFpbmRlcigzKSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSgyLCAtMSwgUGx1cyksIGVu
Y29kZSgxMDIsIC0xLCBQbHVzKS5yZW1haW5kZXIoMSkpOworICAgIEVYUEVDVF9FUShlbmNvZGUo
MSwgLTEsIFBsdXMpLCBEZWNpbWFsKDEwKS5yZW1haW5kZXIoZW5jb2RlKDMsIC0xLCBQbHVzKSkp
OworICAgIEVYUEVDVF9FUShlbmNvZGUoMywgLTEsIE1pbnVzKSwgZW5jb2RlKDM2LCAtMSwgUGx1
cykucmVtYWluZGVyKGVuY29kZSgxMywgLTEsIFBsdXMpKSk7Cit9CisKK1RFU1RfRihEZWNpbWFs
VGVzdCwgUmVtYWluZGVyU3BlY2lhbFZhbHVlcykKK3sKKyAgICBFWFBFQ1RfRVEoRGVjaW1hbDo6
aW5maW5pdHkoUGx1cyksIERlY2ltYWw6OmluZmluaXR5KFBsdXMpLnJlbWFpbmRlcigxKSk7Cisg
ICAgRVhQRUNUX0VRKERlY2ltYWw6Om5hbigpLCBEZWNpbWFsOjpuYW4oKS5yZW1haW5kZXIoMSkp
OworfQorCitURVNUX0YoRGVjaW1hbFRlc3QsIFJvdW5kKQoreworICAgIEVYUEVDVF9FUShEZWNp
bWFsKDEpLCAoRGVjaW1hbCg5KSAvIERlY2ltYWwoMTApKS5yb3VuZCgpKTsKKyAgICBFWFBFQ1Rf
RVEoRGVjaW1hbCgyNSksIChEZWNpbWFsKDUpIC8gZnJvbVN0cmluZygiMC4yMDAiKSkucm91bmQo
KSk7CisgICAgRVhQRUNUX0VRKERlY2ltYWwoMyksIChEZWNpbWFsKDUpIC8gRGVjaW1hbCgyKSku
cm91bmQoKSk7CisgICAgRVhQRUNUX0VRKERlY2ltYWwoMSksIChEZWNpbWFsKDIpIC8gRGVjaW1h
bCgzKSkucm91bmQoKSk7CisgICAgRVhQRUNUX0VRKERlY2ltYWwoMyksIChEZWNpbWFsKDEwKSAv
IERlY2ltYWwoMykpLnJvdW5kKCkpOworICAgIEVYUEVDVF9FUShEZWNpbWFsKDMpLCAoRGVjaW1h
bCgxKSAvIGZyb21TdHJpbmcoIjAuMyIpKS5yb3VuZCgpKTsKKyAgICBFWFBFQ1RfRVEoRGVjaW1h
bCgxMCksIChEZWNpbWFsKDEpIC8gZnJvbVN0cmluZygiMC4xIikpLnJvdW5kKCkpOworICAgIEVY
UEVDVF9FUShEZWNpbWFsKDUpLCAoRGVjaW1hbCgxKSAvIGZyb21TdHJpbmcoIjAuMiIpKS5yb3Vu
ZCgpKTsKKyAgICBFWFBFQ1RfRVEoRGVjaW1hbCgxMCksIChmcm9tU3RyaW5nKCIxMC4yIikgLyAx
KS5yb3VuZCgpKTsKK30KKworVEVTVF9GKERlY2ltYWxUZXN0LCBSb3VuZFNlcGNpYWxWYWx1ZXMp
Cit7CisgICAgRVhQRUNUX0VRKERlY2ltYWw6OmluZmluaXR5KFBsdXMpLCBEZWNpbWFsOjppbmZp
bml0eShQbHVzKS5yb3VuZCgpKTsKKyAgICBFWFBFQ1RfRVEoRGVjaW1hbDo6bmFuKCksIERlY2lt
YWw6Om5hbigpLnJvdW5kKCkpOworfQorCitURVNUX0YoRGVjaW1hbFRlc3QsIFRvU3RyaW5nU3Bl
Y2lhbCkKK3sKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCJJbmZpbml0eSIpLCBEZWNpbWFsOjppbmZp
bml0eShQbHVzKS50b1N0cmluZygpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCItSW5maW5pdHki
KSwgRGVjaW1hbDo6aW5maW5pdHkoTWludXMpLnRvU3RyaW5nKCkpOworICAgIEVYUEVDVF9FUShT
dHJpbmcoIk5hTiIpLCBEZWNpbWFsOjpuYW4oKS50b1N0cmluZygpKTsKK30KKworfSAvLyBEZWNp
bWFsVGVzdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCmluZGV4IGJkNDM3ODA4ODI3MzgyYTUyNGEyOTNhYmIxMThlNWM3MzZmNTQwNmMu
LmZiYjFkZDg0OTAxOGFlZmExY2E1Mzk5MGQyNzgyMDAxMWRiMWI5YjYgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMyBAQAorMjAxMi0wNS0yMyAgWW9zaGlmdW1pIElub3VlICA8eW9zaW5AY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIEludHJvZHVjZSBEZWNpbWFsIGFyaXRobWV0aWMgdG8gZml4IHJvdW5kaW5n
IGVycm9ycyBpbiBudW1iZXIvcmFuZ2UgaW5wdXQgdHlwZXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwMDA5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2Zvcm1zL3JhbmdlL3JhbmdlLXZhbHVl
LXJvdW5kaW5nLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9yYW5n
ZS9yYW5nZS12YWx1ZS1yb3VuZGluZy5odG1sOiBBZGRlZC4KKwogMjAxMi0wNS0yMyAgRXJpYyBT
ZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIHNlYW1sZXNzIGxheW91dCBj
b2RlIChhbmQgcGFzcyBtb3N0IG9mIHRoZSByZW1haW5pbmcgc2VhbWxlc3MgdGVzdHMpCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3JhbmdlL3JhbmdlLXZhbHVlLXJvdW5kaW5n
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmFuZ2UvcmFuZ2UtdmFsdWUt
cm91bmRpbmctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ3YmI1MTA2MGNhNzg5YzFmYTE4NmVl
YzQ3NDZhYmNiZTZmMDZjNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL3JhbmdlL3JhbmdlLXZhbHVlLXJvdW5kaW5nLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE5
IEBACisgICAgICAgIAorU2V0dGluZyAnMC42JyB0byB0aGUgdmFsdWUgb2YgYSByYW5nZSBpbnB1
dCBtYWtlcyB0aGUgdmFsdWUgMC42MDAwMDAwMDAwMDAwMDAxCisKK09uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KKworCitQQVNTIHJhbmdlMS52YWx1ZS50b1N0cmluZygpIGlzICIwLjEiCitQQVNT
IHJhbmdlMi52YWx1ZS50b1N0cmluZygpIGlzICIwLjIiCitQQVNTIHJhbmdlMy52YWx1ZS50b1N0
cmluZygpIGlzICIwLjMiCitQQVNTIHJhbmdlNC52YWx1ZS50b1N0cmluZygpIGlzICIwLjQiCitQ
QVNTIHJhbmdlNS52YWx1ZS50b1N0cmluZygpIGlzICIwLjUiCitQQVNTIHJhbmdlNi52YWx1ZS50
b1N0cmluZygpIGlzICIwLjYiCitQQVNTIHJhbmdlNy52YWx1ZS50b1N0cmluZygpIGlzICIwLjci
CitQQVNTIHJhbmdlOC52YWx1ZS50b1N0cmluZygpIGlzICIwLjgiCitQQVNTIHJhbmdlOS52YWx1
ZS50b1N0cmluZygpIGlzICIwLjkiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yYW5n
ZS9yYW5nZS12YWx1ZS1yb3VuZGluZy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yYW5n
ZS9yYW5nZS12YWx1ZS1yb3VuZGluZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMyZTJjNGVkM2FmYTEzNDEy
NWVkYWMzNzE0NjJiNzdjNzdmNzkzNTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL3JhbmdlL3JhbmdlLXZhbHVlLXJvdW5kaW5nLmh0bWwKQEAgLTAsMCArMSwyNCBA
QAorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGlucHV0IHR5cGU9cmFuZ2Ugc3RlcD0wLjEg
dmFsdWU9MC4xIGlkPXJhbmdlMT4KKzxpbnB1dCB0eXBlPXJhbmdlIHN0ZXA9MC4xIHZhbHVlPTAu
MiBpZD1yYW5nZTI+Cis8aW5wdXQgdHlwZT1yYW5nZSBzdGVwPTAuMSB2YWx1ZT0wLjMgaWQ9cmFu
Z2UzPgorPGlucHV0IHR5cGU9cmFuZ2Ugc3RlcD0wLjEgdmFsdWU9MC40IGlkPXJhbmdlND4KKzxp
bnB1dCB0eXBlPXJhbmdlIHN0ZXA9MC4xIHZhbHVlPTAuNSBpZD1yYW5nZTU+Cis8aW5wdXQgdHlw
ZT1yYW5nZSBzdGVwPTAuMSB2YWx1ZT0wLjYgaWQ9cmFuZ2U2PgorPGlucHV0IHR5cGU9cmFuZ2Ug
c3RlcD0wLjEgdmFsdWU9MC43IGlkPXJhbmdlNz4KKzxpbnB1dCB0eXBlPXJhbmdlIHN0ZXA9MC4x
IHZhbHVlPTAuOCBpZD1yYW5nZTg+Cis8aW5wdXQgdHlwZT1yYW5nZSBzdGVwPTAuMSB2YWx1ZT0w
LjkgaWQ9cmFuZ2U5PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3Jp
cHRpb24oIjxhIGhyZWY9J2h0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgw
MDA5Jz5TZXR0aW5nICcwLjYnIHRvIHRoZSB2YWx1ZSBvZiBhIHJhbmdlIGlucHV0IG1ha2VzIHRo
ZSB2YWx1ZSAwLjYwMDAwMDAwMDAwMDAwMDE8L2E+Iik7Citmb3IgKHZhciBpID0gMTsgaSA8PSA5
OyArK2kpIHsKKyAgICBzaG91bGRCZSgncmFuZ2UnICsgaS50b1N0cmluZygpICsgJy52YWx1ZS50
b1N0cmluZygpJywgJyIwLicgKyBpLnRvU3RyaW5nKCkgKyAnIicpOworfQorPC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Cis8L2JvZHk+CisKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>143719</attachid>
            <date>2012-05-23 21:02:53 -0700</date>
            <delta_ts>2012-05-24 00:48:43 -0700</delta_ts>
            <desc>Patch 8 - For Makefile validation</desc>
            <filename>bug-80009-20120524130252.patch</filename>
            <type>text/plain</type>
            <size>149783</size>
            <attacher>yosin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4MzE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGNkZWNhNDAxMGEwYTc3
Yjk2M2U4ZTQ4MjE2N2IyNmRmMWVlYTI2Yi4uMzUxNjhmNjU4NmU0NGZhOTk2ODZhYmUwMjQ3NjUx
OGE5MzExODliMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5MyBAQAorMjAxMi0wNS0yMyAgWW9z
aGlmdW1pIElub3VlICA8eW9zaW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEludHJvZHVjZSBE
ZWNpbWFsIGFyaXRobWV0aWMgdG8gZml4IHJvdW5kaW5nIGVycm9ycyBpbiBudW1iZXIvcmFuZ2Ug
aW5wdXQgdHlwZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTgwMDA5CisKKyAgICAgICAgV0lQOiBDaGVjayBtYWtlZmlsZXMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBmYXN0L2Zvcm1zL3Jhbmdl
L3JhbmdlLXZhbHVlLXJvdW5kaW5nLmh0bWwKKworICAgICAgICAqIENNYWtlTGlzdHMudHh0Ogor
ICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAg
ICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIGh0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydERlY2ltYWxUb0RvdWJsZSk6CisgICAgICAg
IChXZWJDb3JlOjpjb252ZXJ0RG91YmxlVG9EZWNpbWFsKToKKyAgICAgICAgKFdlYkNvcmU6OkJh
c2VEYXRlQW5kVGltZUlucHV0VHlwZTo6dmFsdWVBc0RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
QmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpzZXRWYWx1ZUFzRGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OnZhbHVlQXNOdW1iZXIpOgorICAgICAgICAo
V2ViQ29yZTo6QmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpzZXRWYWx1ZUFzTnVtYmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6ZGVmYXVsdFZhbHVlRm9y
U3RlcFVwKToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6cGFy
c2VUb0RlY2ltYWwpOgorICAgICAgICAoV2ViQ29yZTo6QmFzZURhdGVBbmRUaW1lSW5wdXRUeXBl
OjpzZXJpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6QmFzZURhdGVBbmRUaW1lSW5wdXRUeXBl
OjpzZXJpYWxpemVXaXRoQ29tcG9uZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpCYXNlRGF0ZUFu
ZFRpbWVJbnB1dFR5cGU6OnNlcmlhbGl6ZVdpdGhNaWxsaXNlY29uZHMpOgorICAgICAgICAoV2Vi
Q29yZTo6QmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpjb252ZXJ0RnJvbVZpc2libGVWYWx1ZSk6
CisgICAgICAgICogaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuaDoKKyAgICAgICAgKEJh
c2VEYXRlQW5kVGltZUlucHV0VHlwZSk6CisgICAgICAgICogaHRtbC9EYXRlSW5wdXRUeXBlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RGF0ZUlucHV0VHlwZTo6
Y3JlYXRlU3RlcFJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGVJbnB1dFR5cGU6OnNldE1p
bGxpc2Vjb25kVG9EYXRlQ29tcG9uZW50cyk6CisgICAgICAgICogaHRtbC9EYXRlSW5wdXRUeXBl
Lmg6CisgICAgICAgIChEYXRlSW5wdXRUeXBlKToKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6Z2V0QWxsb3dl
ZFZhbHVlU3RlcCk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50Lmg6CisgICAgICAg
IChIVE1MSW5wdXRFbGVtZW50KToKKyAgICAgICAgKiBodG1sL0lucHV0VHlwZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OnJhbmdlVW5kZXJmbG93KToKKyAgICAgICAgKFdlYkNv
cmU6OklucHV0VHlwZTo6cmFuZ2VPdmVyZmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5
cGU6OmRlZmF1bHRWYWx1ZUZvclN0ZXBVcCk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6
Om1pbmltdW0pOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjptYXhpbXVtKToKKyAgICAg
ICAgKFdlYkNvcmU6OklucHV0VHlwZTo6aXNJblJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
cHV0VHlwZTo6aXNPdXRPZlJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6c3Rl
cE1pc21hdGNoKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6dmFsaWRhdGlvbk1lc3Nh
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjpwYXJzZVRvRGVjaW1hbCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OnNlcmlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnB1dFR5cGU6OmFwcGx5U3RlcCk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OmdldEFs
bG93ZWRWYWx1ZVN0ZXApOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjpzdGVwVXBGcm9t
UmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBlLmg6CisgICAgICAgIChJbnB1dFR5
cGUpOgorICAgICAgICAqIGh0bWwvTnVtYmVySW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6Y2FsY3VsYXRlUmVuZGVyU2l6ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpOdW1iZXJJbnB1dFR5cGU6OnZhbHVlQXNOdW1iZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6TnVtYmVySW5wdXRUeXBlOjpzZXRWYWx1ZUFzTnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6
Ok51bWJlcklucHV0VHlwZTo6Y3JlYXRlU3RlcFJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok51
bWJlcklucHV0VHlwZTo6c2l6ZVNob3VsZEluY2x1ZGVEZWNvcmF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6Ok51bWJlcklucHV0VHlwZTo6cGFyc2VUb0RlY2ltYWwpOgorICAgICAgICAoV2ViQ29y
ZTo6TnVtYmVySW5wdXRUeXBlOjpzZXJpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6TnVtYmVy
SW5wdXRUeXBlOjp2aXNpYmxlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6TnVtYmVySW5wdXRU
eXBlOjppc0FjY2VwdGFibGVWYWx1ZSk6CisgICAgICAgICogaHRtbC9OdW1iZXJJbnB1dFR5cGUu
aDoKKyAgICAgICAgKE51bWJlcklucHV0VHlwZSk6CisgICAgICAgICogaHRtbC9SYW5nZUlucHV0
VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlSW5w
dXRUeXBlOjp2YWx1ZUFzTnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlSW5wdXRUeXBl
OjpzZXRWYWx1ZUFzTnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlSW5wdXRUeXBlOjpj
cmVhdGVTdGVwUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VJbnB1dFR5cGU6OmhhbmRs
ZUtleWRvd25FdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6cGFyc2VU
b0RlY2ltYWwpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VJbnB1dFR5cGU6OnNlcmlhbGl6ZSk6
CisgICAgICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6c2FuaXRpemVWYWx1ZSk6CisgICAg
ICAgICogaHRtbC9SYW5nZUlucHV0VHlwZS5oOgorICAgICAgICAoUmFuZ2VJbnB1dFR5cGUpOgor
ICAgICAgICAqIGh0bWwvU3RlcFJhbmdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0ZXBSYW5n
ZTo6U3RlcFJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0ZXBSYW5nZTo6YWNjZXB0YWJsZUVy
cm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlN0ZXBSYW5nZTo6YWxpZ25WYWx1ZUZvclN0ZXApOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTdGVwUmFuZ2U6OmNsYW1wVmFs
dWUpOgorICAgICAgICAoV2ViQ29yZTo6U3RlcFJhbmdlOjpwYXJzZVN0ZXApOgorICAgICAgICAo
V2ViQ29yZTo6U3RlcFJhbmdlOjpzdGVwTWlzbWF0Y2gpOgorICAgICAgICAqIGh0bWwvU3RlcFJh
bmdlLmg6CisgICAgICAgIChEZWNpbWFsT3JNaXNzaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlN0
ZXBSYW5nZTo6RGVjaW1hbE9yTWlzc2luZzo6RGVjaW1hbE9yTWlzc2luZyk6CisgICAgICAgIChX
ZWJDb3JlOjpTdGVwUmFuZ2U6OlN0ZXBEZXNjcmlwdGlvbjo6ZGVmYXVsdFZhbHVlKToKKyAgICAg
ICAgKFN0ZXBSYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpTdGVwUmFuZ2U6Om1heGltdW0pOgor
ICAgICAgICAoV2ViQ29yZTo6U3RlcFJhbmdlOjptaW5pbXVtKToKKyAgICAgICAgKFdlYkNvcmU6
OlN0ZXBSYW5nZTo6c3RlcCk6CisgICAgICAgIChXZWJDb3JlOjpTdGVwUmFuZ2U6OnN0ZXBCYXNl
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0ZXBSYW5nZTo6ZGVmYXVsdFZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OlN0ZXBSYW5nZTo6ZW5zdXJlTWF4aW11bSk6CisgICAgICAgIChXZWJDb3JlOjpT
dGVwUmFuZ2U6OnByb3BvcnRpb25Gcm9tVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U3RlcFJh
bmdlOjp2YWx1ZUZyb21Qcm9wb3J0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlN0ZXBSYW5nZTo6
cm91bmRCeVN0ZXApOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6c2VyaWFsaXplRm9yTnVtYmVyVHlwZSk6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlVG9EZWNpbWFsRm9yTnVtYmVyVHlwZSk6
CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvQ2FsZW5kYXJQaWNrZXJFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNhbGVuZGFyUGlja2VyRWxlbWVudDo6d3JpdGVEb2N1bWVudCk6
CisgICAgICAgICogaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnNsaWRlclBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNsaWRl
clRodW1iOjpsYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6U2xpZGVyVGh1bWJFbGVtZW50Ojpz
ZXRQb3NpdGlvbkZyb21Qb2ludCk6CisgICAgICAgICogcGxhdGZvcm0vRGVjaW1hbC5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChEZWNpbWFsUHJpdmF0ZSk6CisgICAg
ICAgIChTcGVjaWFsVmFsdWVIYW5kbGVyKToKKyAgICAgICAgKFVJbnQxMjgpOgorICAgICAgICAo
V2ViQ29yZTo6RGVjaW1hbFByaXZhdGU6OlVJbnQxMjg6OmhpZ2gpOgorICAgICAgICAoV2ViQ29y
ZTo6RGVjaW1hbFByaXZhdGU6OlVJbnQxMjg6Omxvdyk6CisgICAgICAgIChXZWJDb3JlOjpEZWNp
bWFsUHJpdmF0ZTo6VUludDEyODo6aXNaZXJvKToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWxQ
cml2YXRlOjpjb3VudERpZ2l0cyk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsUHJpdmF0ZTo6
bXVsdGlwbHlIaWdoKToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWxQcml2YXRlOjpwb3dlcik6
CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsUHJpdmF0ZTo6c2NhbGVEb3duKToKKyAgICAgICAg
KFdlYkNvcmU6OkRlY2ltYWxQcml2YXRlOjpzY2FsZVVwKToKKyAgICAgICAgKFdlYkNvcmU6OkRl
Y2ltYWxQcml2YXRlOjpTcGVjaWFsVmFsdWVIYW5kbGVyOjpTcGVjaWFsVmFsdWVIYW5kbGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWxQcml2YXRlOjpTcGVjaWFsVmFsdWVIYW5kbGVyOjpo
YW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1hbFByaXZhdGU6OlNwZWNpYWxWYWx1ZUhh
bmRsZXI6OnZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWxQcml2YXRlOjpVSW50MTI4
OjpVSW50MTI4KToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWxQcml2YXRlOjpVSW50MTI4Ojpv
cGVyYXRvciAvPSk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsUHJpdmF0ZTo6VUludDEyODo6
bXVsdGlwbHkpOgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1hbDo6RW5jb2RlZERhdGE6OkVuY29k
ZWREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWw6OkVuY29kZWREYXRhOjpjb2VmZmlj
aWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjpFbmNvZGVkRGF0YTo6ZXhwb25lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1hbDo6RW5jb2RlZERhdGE6OmlzRmluaXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRlY2ltYWw6OkVuY29kZWREYXRhOjppc1NwZWNpYWwpOgorICAgICAg
ICAoV2ViQ29yZTo6RGVjaW1hbDo6RW5jb2RlZERhdGE6OmlzWmVybyk6CisgICAgICAgIChXZWJD
b3JlOjpEZWNpbWFsOjpFbmNvZGVkRGF0YTo6cmF3RXhwb25lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6RGVjaW1hbDo6RW5jb2RlZERhdGE6OnNpZ24pOgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1h
bDo6RW5jb2RlZERhdGE6OnNldFNpZ24pOgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1hbDo6RGVj
aW1hbCk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjpvcGVyYXRvciA9KToKKyAgICAgICAg
KFdlYkNvcmU6OkRlY2ltYWw6Om9wZXJhdG9yICs9KToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2lt
YWw6Om9wZXJhdG9yIC09KToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWw6Om9wZXJhdG9yICo9
KToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWw6Om9wZXJhdG9yIC89KToKKyAgICAgICAgKFdl
YkNvcmU6OkRlY2ltYWw6Om9wZXJhdG9yIC0pOgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1hbDo6
b3BlcmF0b3IgKyk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjpvcGVyYXRvciAqKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRlY2ltYWw6Om9wZXJhdG9yIC8pOgorICAgICAgICAoV2ViQ29yZTo6
RGVjaW1hbDo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjpvcGVyYXRv
ciE9KToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWw6Om9wZXJhdG9yIDwpOgorICAgICAgICAo
V2ViQ29yZTo6RGVjaW1hbDo6b3BlcmF0b3IgPD0pOgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1h
bDo6b3BlcmF0b3IgPik6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjpvcGVyYXRvciA+PSk6
CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjpleHBvbmVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpEZWNpbWFsOjpmb3JtYXRDbGFzcyk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjpzaWdu
KToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWw6OmFicyk6CisgICAgICAgIChXZWJDb3JlOjpE
ZWNpbWFsOjpjZWlsKToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWw6OmNvbXBhcmVUbyk6Cisg
ICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjpmYXN0RXF1YWxzKToKKyAgICAgICAgKFdlYkNvcmU6
OkRlY2ltYWw6OmZsb29yKToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWw6OmZyb21TdHJpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1hbDo6aW5maW5pdHkpOgorICAgICAgICAoV2ViQ29y
ZTo6RGVjaW1hbDo6bmFuKToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWw6OnBvdyk6CisgICAg
ICAgIChXZWJDb3JlOjpEZWNpbWFsOjpyZW1haW5kZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGVj
aW1hbDo6cm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1hbDo6dG9TdHJpbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6RGVjaW1hbDo6emVybyk6CisgICAgICAgICogcGxhdGZvcm0vRGVjaW1h
bC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoRGVjaW1hbCk6CisgICAg
ICAgIChFbmNvZGVkRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjppc0Zpbml0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjppc01pbnVzKToKKyAgICAgICAgKFdlYkNvcmU6
OkRlY2ltYWw6OmlzUGx1cyk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjppc1NwZWNpYWwp
OgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1hbDo6aXNaZXJvKToKKyAgICAgICAgKFdlYkNvcmU6
OkRlY2ltYWw6OnZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWw6OmludmVydFNpZ24p
OgorCiAyMDEyLTA1LTIzICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJFR1JFU1NJT046IGNvbXBvc2l0aW5nL3ZpZGVvL3ZpZGVvLXBvc3Rlci5odG1sIGZhaWxz
IG9uIE1hYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA5ZTY2YzliZjRhMjEyMWVlMGMx
Yjc2MTg3YzQ3MWZiOTBlYTgzNjRmLi43NzUxMmYyOTllMTE3MDIyZTM0NTk5MmNjMzQyMjdhOWNk
MzRiOWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEy
LTA1LTIzICBZb3NoaWZ1bWkgSW5vdWUgIDx5b3NpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
SW50cm9kdWNlIERlY2ltYWwgYXJpdGhtZXRpYyB0byBmaXggcm91bmRpbmcgZXJyb3JzIGluIG51
bWJlci9yYW5nZSBpbnB1dCB0eXBlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODAwMDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFdlYktpdC5neXBpOgorICAgICAgICAqIHRlc3RzL0RlY2ltYWxUZXN0
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJh
dG9yPDwpOgorICAgICAgICAoRGVjaW1hbFRlc3QpOgorICAgICAgICAoRGVjaW1hbFN0ZXBSYW5n
ZSk6CisgICAgICAgIChEZWNpbWFsVGVzdDo6RGVjaW1hbFN0ZXBSYW5nZTo6RGVjaW1hbFN0ZXBS
YW5nZSk6CisgICAgICAgIChEZWNpbWFsVGVzdDo6RGVjaW1hbFN0ZXBSYW5nZTo6Y2xhbXBWYWx1
ZSk6CisgICAgICAgIChEZWNpbWFsVGVzdDo6RGVjaW1hbFRlc3Q6OmVuY29kZSk6CisgICAgICAg
IChEZWNpbWFsVGVzdDo6RGVjaW1hbFRlc3Q6OmZyb21TdHJpbmcpOgorICAgICAgICAoRGVjaW1h
bFRlc3Q6OkRlY2ltYWxUZXN0OjpzdGVwRG93bik6CisgICAgICAgIChEZWNpbWFsVGVzdDo6RGVj
aW1hbFRlc3Q6OnN0ZXBVcCk6CisgICAgICAgIChEZWNpbWFsVGVzdDo6VEVTVF9GKToKKwogMjAx
Mi0wNS0yMyAgT2phbiBWYWZhaSAgPG9qYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIGFkZCBi
YWNrIHRoZSBhYmlsaXR5IHRvIGRpc2FibGUgZmxleGJveApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRl
eCBmOTVlODNmZTdiNzNkM2M0YTA2Y2Y0ZmRmMTBhNjdmNWNjMGFhNjVkLi43ZGUzMzZhOWI0NzQz
ODE4MGFjNmIwODk5YTFmMWJlZjhhZDA0MWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTEw
NSw2ICsxMTA1LDcgQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL0NvbnRlbnRU
eXBlLmNwcAogICAgIHBsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVyLmNwcAogICAgIHBsYXRmb3Jt
L0RhdGVDb21wb25lbnRzLmNwcAorICAgIHBsYXRmb3JtL0RlY2ltYWwuY3BwCiAgICAgcGxhdGZv
cm0vRHJhZ0RhdGEuY3BwCiAgICAgcGxhdGZvcm0vRHJhZ0ltYWdlLmNwcAogICAgIHBsYXRmb3Jt
L0V2ZW50VHJhY2VyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggOGMyNDEw
NzVmMTA2OGY4NDYzYjdkODY2ZDI4YzNhMTZkYTk4ZTVjOS4uYmJhMDA1ZjMzZGVmODlhOGE2NmU5
OTQxNTQ2NGNlMTBjNWVlODI4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0z
MTEyLDYgKzMxMTIsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0N1cnNvci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EYXRlQ29tcG9uZW50
cy5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGVDb21wb25lbnRzLmggXAorCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RlY2ltYWwuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9EZWNpbWFsLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmNwcCBc
CiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuaCBcCiAJU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vRHJhZ0ltYWdlLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJn
ZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCA1YTgwYWUxZDYwOWEzMmY5
NjliODRjMjcyOTQzMThlMTEwNjA0NjQ2Li5kMzdlMDY5OWIxODhiNjg2ZmMwMTg3NDczOWE5NDY1
OWRiNWMzZTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTEwODEsNiArMTA4MSw3IEBAIFNPVVJDRVMgKz0g
XAogICAgIHBsYXRmb3JtL0NvbnRlbnRUeXBlLmNwcCBcCiAgICAgcGxhdGZvcm0vQ3Jvc3NUaHJl
YWRDb3BpZXIuY3BwIFwKICAgICBwbGF0Zm9ybS9EYXRlQ29tcG9uZW50cy5jcHAgXAorICAgIHBs
YXRmb3JtL0RlY2ltYWwuY3BwIFwKICAgICBwbGF0Zm9ybS9EcmFnRGF0YS5jcHAgXAogICAgIHBs
YXRmb3JtL0RyYWdJbWFnZS5jcHAgXAogICAgIHBsYXRmb3JtL0V2ZW50VHJhY2VyLmNwcCBcCkBA
IC0yMTk1LDYgKzIxOTYsNyBAQCBIRUFERVJTICs9IFwKICAgICBwbGF0Zm9ybS9Db250ZXh0TWVu
dS5oIFwKICAgICBwbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5oIFwKICAgICBwbGF0Zm9ybS9E
YXRlQ29tcG9uZW50cy5oIFwKKyAgICBwbGF0Zm9ybS9EZWNpbWFsLmggXAogICAgIHBsYXRmb3Jt
L0RyYWdEYXRhLmggXAogICAgIHBsYXRmb3JtL0RyYWdJbWFnZS5oIFwKICAgICBwbGF0Zm9ybS9F
dmVudFRyYWNlci5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBkYWU0MWFmN2ZlNjAxYTJmODhiZTYy
ODgzM2I0NTQ1ZDhjYTNjZTJlLi43MWRiMWM0YjYxNWQwMTNmMTBjODBhMjQyZmM0YmNmZTE2OWYz
M2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0yNzEsNiArMjcxLDcgQEAKICAgICAgICAgICAgICdw
bGF0Zm9ybS9Db29raWVzU3RyYXRlZ3kuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vQ3Vyc29y
LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL0RhdGVDb21wb25lbnRzLmgnLAorICAgICAgICAg
ICAgJ3BsYXRmb3JtL0RlY2ltYWwuaCcKICAgICAgICAgICAgICdwbGF0Zm9ybS9EcmFnRGF0YS5o
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9EcmFnSW1hZ2UuaCcsCiAgICAgICAgICAgICAncGxh
dGZvcm0vRXZlbnRUcmFjZXIuaCcsCkBAIC0zMTQyLDYgKzMxNDMsNyBAQAogICAgICAgICAgICAg
J3BsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL0N1
cnNvci5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL0RhdGVDb21wb25lbnRzLmNwcCcsCisg
ICAgICAgICAgICAncGxhdGZvcm0vRGVjaW1hbC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L0RyYWdEYXRhLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vRHJhZ0ltYWdlLmNwcCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vRXZlbnRMb29wLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCBlZmNlNGEwN2FiZjk3YTBiYThhNmU3ZGU5
MjkxYzg2MTNjN2E3OGVkLi5lOGVmNjExMDVlOGY1MGUxZDU4M2RlMTc1MzJjOGVmZWFjNzE4Nzgy
IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAt
Mjc3NzgsNiArMjc3NzgsMTQgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJl
bGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cRGVjaW1hbC5jcHAiCisJCQkJPgorCQkJPC9GaWxlPgor
CQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXERlY2ltYWwuaCIKKwkJCQk+
CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cRHJh
Z0RhdGEuY3BwIgogCQkJCT4KIAkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwYzBkZTExNzVkN2E2NTc3ZGE2NzM0
NDE2MjhlYzBhOTFmNTE2MjUxLi4yOTdkYmNmZTQ4NjhmMzdmMDljMzAwMWUxZTI1OWU4MDQ1ZmJm
NzllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0xMTkzLDYgKzExOTMsOCBAQAogCQk0NTBDRUJGMDE1MDczQkJFMDAyQkIxNDkg
LyogTGFiZWxhYmxlRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0NTBDRUJFRTE1MDczQkJFMDAyQkIxNDkgLyogTGFiZWxhYmxlRWxlbWVu
dC5jcHAgKi87IH07CiAJCTQ1MENFQkYxMTUwNzNCQkUwMDJCQjE0OSAvKiBMYWJlbGFibGVFbGVt
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NTBD
RUJFRjE1MDczQkJFMDAyQkIxNDkgLyogTGFiZWxhYmxlRWxlbWVudC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ1QkFDMkIwMTM2MEJCQUIwMDVE
QTI1OCAvKiBJY29uVVJMLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NUJBQzJBRjEzNjBCQkFCMDA1REEyNTggLyogSWNvblVSTC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ1RkVBNUNGMTU2RERFOEMw
MDY1NDEwMSAvKiBEZWNpbWFsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ1RkVBNUNEMTU2RERFOEMwMDY1NDEwMSAvKiBEZWNpbWFsLmNwcCAqLzsg
fTsKKwkJNDVGRUE1RDAxNTZEREU4QzAwNjU0MTAxIC8qIERlY2ltYWwuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ1RkVBNUNFMTU2RERFOEMwMDY1NDEw
MSAvKiBEZWNpbWFsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNDYxNEExRkUwQjIzQThENjAwNDQ2RTFDIC8qIGNvcHlDdXJzb3IucG5nIGluIFJl
c291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjE0QTFGRDBCMjNB
OEQ2MDA0NDZFMUMgLyogY29weUN1cnNvci5wbmcgKi87IH07CiAJCTQ2NzAwRUQwMTI3Qjk2Q0Iw
MEY1RDVENiAvKiBGaWxlV3JpdGVyU3luYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NjcwMEVDRTEyN0I5NkNCMDBGNUQ1RDYgLyogRmlsZVdyaXRl
clN5bmMuY3BwICovOyB9OwogCQk0NjcwMEVEMTEyN0I5NkNCMDBGNUQ1RDYgLyogRmlsZVdyaXRl
clN5bmMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2
NzAwRUNGMTI3Qjk2Q0IwMEY1RDVENiAvKiBGaWxlV3JpdGVyU3luYy5oICovOyB9OwpAQCAtODE4
Nyw2ICs4MTg5LDggQEAKIAkJNDUwQ0VCRUUxNTA3M0JCRTAwMkJCMTQ5IC8qIExhYmVsYWJsZUVs
ZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGFiZWxhYmxl
RWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ1MENFQkVGMTUwNzNC
QkUwMDJCQjE0OSAvKiBMYWJlbGFibGVFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IExhYmVsYWJsZUVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDVCQUMyQUYxMzYwQkJBQjAwNURBMjU4IC8qIEljb25VUkwuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSWNvblVSTC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk0NUZFQTVDRDE1NkRERThDMDA2NTQxMDEgLyogRGVjaW1hbC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZWNpbWFsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNDVGRUE1Q0UxNTZEREU4QzAwNjU0MTAxIC8qIERlY2ltYWwuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVjaW1hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0NjE0QTFGRDBCMjNBOEQ2MDA0NDZFMUMgLyogY29weUN1cnNvci5wbmcgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS5wbmc7IHBh
dGggPSBjb3B5Q3Vyc29yLnBuZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY3MDBF
Q0UxMjdCOTZDQjAwRjVENUQ2IC8qIEZpbGVXcml0ZXJTeW5jLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEZpbGVXcml0ZXJTeW5jLmNwcDsgcGF0aCA9IE1vZHVsZXMv
ZmlsZXN5c3RlbS9GaWxlV3JpdGVyU3luYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQ2NzAwRUNGMTI3Qjk2Q0IwMEY1RDVENiAvKiBGaWxlV3JpdGVyU3luYy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGaWxlV3JpdGVyU3luYy5oOyBwYXRoID0gTW9kdWxl
cy9maWxlc3lzdGVtL0ZpbGVXcml0ZXJTeW5jLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0yMDMwOSw2ICsyMDMxMyw4IEBACiAJCQkJRjU4Nzg2ODQwMkRFM0I4NjAxRUE0MTIyIC8q
IEN1cnNvci5oICovLAogCQkJCUE1NzMyQjA4MTM2QTE2MUQwMDVDOEQ3QyAvKiBEYXRlQ29tcG9u
ZW50cy5jcHAgKi8sCiAJCQkJQTU3MzJCMDkxMzZBMTYxRDAwNUM4RDdDIC8qIERhdGVDb21wb25l
bnRzLmggKi8sCisJCQkJNDVGRUE1Q0QxNTZEREU4QzAwNjU0MTAxIC8qIERlY2ltYWwuY3BwICov
LAorCQkJCTQ1RkVBNUNFMTU2RERFOEMwMDY1NDEwMSAvKiBEZWNpbWFsLmggKi8sCiAJCQkJQTc5
NTQ2NDIwQjVDNENCNDAwN0I0MzhGIC8qIERyYWdEYXRhLmNwcCAqLywKIAkJCQlBN0I2RTY5RDBC
MjkxQTk2MDBEMDUyOUYgLyogRHJhZ0RhdGEuaCAqLywKIAkJCQlBN0NGQjNDRjBCN0VEMTBBMDA3
MEMzMkQgLyogRHJhZ0ltYWdlLmNwcCAqLywKQEAgLTIyMDYyLDYgKzIyMDY4LDcgQEAKIAkJCQlG
NTVCM0RCNjEyNTFGMTJEMDAzRUYyNjkgLyogRGF0ZUlucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRjU1QjNEQjgxMjUxRjEyRDAwM0VGMjY5IC8qIERhdGVUaW1lSW5wdXRUeXBlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlGNTVCM0RCQTEyNTFGMTJEMDAzRUYyNjkgLyogRGF0ZVRpbWVMb2Nh
bElucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDVGRUE1RDAxNTZEREU4QzAwNjU0MTAx
IC8qIERlY2ltYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QzIyOEExMTFENTcyMkUwMEQ1QTdE
MyAvKiBEZWNvZGVkRGF0YURvY3VtZW50UGFyc2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRUND
RkMzQjE0MTk3M0Q1MDAyQTBBQzEgLyogRGVjb2RlRXNjYXBlU2VxdWVuY2VzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0MTYyQTQ1MTEwMTE0NUFFMDBERkYzRUQgLyogRGVkaWNhdGVkV29ya2VyQ29u
dGV4dC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTU1Myw2ICsyNTU2MCw3IEBACiAJCQkJRjU1QjNE
QjUxMjUxRjEyRDAwM0VGMjY5IC8qIERhdGVJbnB1dFR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJRjU1QjNEQjcxMjUxRjEyRDAwM0VGMjY5IC8qIERhdGVUaW1lSW5wdXRUeXBlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUY1NUIzREI5MTI1MUYxMkQwMDNFRjI2OSAvKiBEYXRlVGltZUxvY2Fs
SW5wdXRUeXBlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQ1RkVBNUNGMTU2RERFOEMwMDY1NDEw
MSAvKiBEZWNpbWFsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QzIyOEEyMTFENTcyMkUwMEQ1
QTdEMyAvKiBEZWNvZGVkRGF0YURvY3VtZW50UGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTQxNjJBNDUwMTAxMTQ1QUUwMERGRjNFRCAvKiBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTQxQTNENThFMTAxQzE1MkQwMDMxNkQwNyAvKiBEZWRpY2F0ZWRX
b3JrZXJUaHJlYWQuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAKaW5kZXggNzgyZTY2MTk5ZDRkYTAyNGQ2ZjIx
MjE0YTgyNDc1YTkxMTIyY2UxZi4uMzBjY2EzZmRiMjA3MTJhZDc3OTEzM2UzZDkwNWY5Y2E0ZmEy
NDE4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1
dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRU
eXBlLmNwcApAQCAtMzMsNiArMzMsNyBAQAogCiAjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5o
IgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIK
ICNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAiTG9jYWxpemVkRGF0ZS5oIgog
I2luY2x1ZGUgPGxpbWl0cz4KQEAgLTQ3LDI3ICs0OCwzMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAotc3Rh
dGljIGNvbnN0IGRvdWJsZSBtc2VjUGVyTWludXRlID0gNjAgKiAxMDAwOwotc3RhdGljIGNvbnN0
IGRvdWJsZSBtc2VjUGVyU2Vjb25kID0gMTAwMDsKK3N0YXRpYyBjb25zdCBpbnQgbXNlY1Blck1p
bnV0ZSA9IDYwICogMTAwMDsKK3N0YXRpYyBjb25zdCBpbnQgbXNlY1BlclNlY29uZCA9IDEwMDA7
CisKK3N0YXRpYyBEZWNpbWFsIGNvbnZlcnREb3VibGVUb0RlY2ltYWwoZG91YmxlIHZhbHVlKQor
eworICAgIHJldHVybiBwYXJzZVRvRGVjaW1hbEZvck51bWJlclR5cGUoc2VyaWFsaXplRm9yTnVt
YmVyVHlwZSh2YWx1ZSkpOworfQogCiBkb3VibGUgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjp2
YWx1ZUFzRGF0ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHBhcnNlVG9Eb3VibGUoZWxlbWVudCgp
LT52YWx1ZSgpLCBEYXRlQ29tcG9uZW50czo6aW52YWxpZE1pbGxpc2Vjb25kcygpKTsKKyAgICBy
ZXR1cm4gcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUocGFyc2VUb0RlY2ltYWwoZWxlbWVudCgp
LT52YWx1ZSgpLCBjb252ZXJ0RG91YmxlVG9EZWNpbWFsKERhdGVDb21wb25lbnRzOjppbnZhbGlk
TWlsbGlzZWNvbmRzKCkpKS50b1N0cmluZygpKTsKIH0KIAogdm9pZCBCYXNlRGF0ZUFuZFRpbWVJ
bnB1dFR5cGU6OnNldFZhbHVlQXNEYXRlKGRvdWJsZSB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYpIGNv
bnN0CiB7Ci0gICAgZWxlbWVudCgpLT5zZXRWYWx1ZShzZXJpYWxpemVXaXRoTWlsbGlzZWNvbmRz
KHZhbHVlKSk7CisgICAgZWxlbWVudCgpLT5zZXRWYWx1ZShzZXJpYWxpemVXaXRoTWlsbGlzZWNv
bmRzKGNvbnZlcnREb3VibGVUb0RlY2ltYWwodmFsdWUpKSk7CiB9CiAKIGRvdWJsZSBCYXNlRGF0
ZUFuZFRpbWVJbnB1dFR5cGU6OnZhbHVlQXNOdW1iZXIoKSBjb25zdAogewotICAgIHJldHVybiBw
YXJzZVRvRG91YmxlKGVsZW1lbnQoKS0+dmFsdWUoKSwgbnVtZXJpY19saW1pdHM8ZG91YmxlPjo6
cXVpZXRfTmFOKCkpOworICAgIHJldHVybiBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZShwYXJz
ZVRvRGVjaW1hbChlbGVtZW50KCktPnZhbHVlKCksIERlY2ltYWw6Om5hbigpKS50b1N0cmluZygp
KTsKIH0KIAogdm9pZCBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OnNldFZhbHVlQXNOdW1iZXIo
ZG91YmxlIG5ld1ZhbHVlLCBUZXh0RmllbGRFdmVudEJlaGF2aW9yIGV2ZW50QmVoYXZpb3IsIEV4
Y2VwdGlvbkNvZGUmKSBjb25zdAogewotICAgIGVsZW1lbnQoKS0+c2V0VmFsdWUoc2VyaWFsaXpl
KG5ld1ZhbHVlKSwgZXZlbnRCZWhhdmlvcik7CisgICAgZWxlbWVudCgpLT5zZXRWYWx1ZShzZXJp
YWxpemUoY29udmVydERvdWJsZVRvRGVjaW1hbChuZXdWYWx1ZSkpLCBldmVudEJlaGF2aW9yKTsK
IH0KIAogYm9vbCBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OnR5cGVNaXNtYXRjaEZvcihjb25z
dCBTdHJpbmcmIHZhbHVlKSBjb25zdApAQCAtODAsMTMgKzg2LDEzIEBAIGJvb2wgQmFzZURhdGVB
bmRUaW1lSW5wdXRUeXBlOjp0eXBlTWlzbWF0Y2goKSBjb25zdAogICAgIHJldHVybiB0eXBlTWlz
bWF0Y2hGb3IoZWxlbWVudCgpLT52YWx1ZSgpKTsKIH0KIAotZG91YmxlIEJhc2VEYXRlQW5kVGlt
ZUlucHV0VHlwZTo6ZGVmYXVsdFZhbHVlRm9yU3RlcFVwKCkgY29uc3QKK0RlY2ltYWwgQmFzZURh
dGVBbmRUaW1lSW5wdXRUeXBlOjpkZWZhdWx0VmFsdWVGb3JTdGVwVXAoKSBjb25zdAogewogICAg
IGRvdWJsZSBtcyA9IGN1cnJlbnRUaW1lTVMoKTsKICAgICBkb3VibGUgdXRjT2Zmc2V0ID0gY2Fs
Y3VsYXRlVVRDT2Zmc2V0KCk7CiAgICAgZG91YmxlIGRzdE9mZnNldCA9IGNhbGN1bGF0ZURTVE9m
ZnNldChtcywgdXRjT2Zmc2V0KTsKICAgICBpbnQgb2Zmc2V0ID0gc3RhdGljX2Nhc3Q8aW50Pigo
dXRjT2Zmc2V0ICsgZHN0T2Zmc2V0KSAvIG1zUGVyTWludXRlKTsKLSAgICByZXR1cm4gbXMgKyAo
b2Zmc2V0ICogbXNQZXJNaW51dGUpOworICAgIHJldHVybiBjb252ZXJ0RG91YmxlVG9EZWNpbWFs
KG1zICsgKG9mZnNldCAqIG1zUGVyTWludXRlKSk7CiB9CiAKIGJvb2wgQmFzZURhdGVBbmRUaW1l
SW5wdXRUeXBlOjppc1N0ZXBwYWJsZSgpIGNvbnN0CkBAIC0xMDgsMTQgKzExNCwxNCBAQCB2b2lk
IEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6aGFuZGxlV2hlZWxFdmVudChXaGVlbEV2ZW50KiBl
dmVudCkKICAgICAgICAgaGFuZGxlV2hlZWxFdmVudEZvclNwaW5CdXR0b24oZXZlbnQpOwogfQog
Ci1kb3VibGUgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpwYXJzZVRvRG91YmxlKGNvbnN0IFN0
cmluZyYgc3JjLCBkb3VibGUgZGVmYXVsdFZhbHVlKSBjb25zdAorRGVjaW1hbCBCYXNlRGF0ZUFu
ZFRpbWVJbnB1dFR5cGU6OnBhcnNlVG9EZWNpbWFsKGNvbnN0IFN0cmluZyYgc3JjLCBjb25zdCBE
ZWNpbWFsJiBkZWZhdWx0VmFsdWUpIGNvbnN0CiB7CiAgICAgRGF0ZUNvbXBvbmVudHMgZGF0ZTsK
ICAgICBpZiAoIXBhcnNlVG9EYXRlQ29tcG9uZW50cyhzcmMsICZkYXRlKSkKICAgICAgICAgcmV0
dXJuIGRlZmF1bHRWYWx1ZTsKICAgICBkb3VibGUgbXNlYyA9IGRhdGUubWlsbGlzZWNvbmRzU2lu
Y2VFcG9jaCgpOwogICAgIEFTU0VSVChpc2Zpbml0ZShtc2VjKSk7Ci0gICAgcmV0dXJuIG1zZWM7
CisgICAgcmV0dXJuIGNvbnZlcnREb3VibGVUb0RlY2ltYWwobXNlYyk7CiB9CiAKIGJvb2wgQmFz
ZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpwYXJzZVRvRGF0ZUNvbXBvbmVudHMoY29uc3QgU3RyaW5n
JiBzb3VyY2UsIERhdGVDb21wb25lbnRzKiBvdXQpIGNvbnN0CkBAIC0xMjgsOSArMTM0LDkgQEAg
Ym9vbCBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OnBhcnNlVG9EYXRlQ29tcG9uZW50cyhjb25z
dCBTdHJpbmcmIHNvdXJjZSwgRGF0ZUMKICAgICByZXR1cm4gcGFyc2VUb0RhdGVDb21wb25lbnRz
SW50ZXJuYWwoc291cmNlLmNoYXJhY3RlcnMoKSwgc291cmNlLmxlbmd0aCgpLCBvdXQpOwogfQog
Ci1TdHJpbmcgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpzZXJpYWxpemUoZG91YmxlIHZhbHVl
KSBjb25zdAorU3RyaW5nIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6c2VyaWFsaXplKGNvbnN0
IERlY2ltYWwmIHZhbHVlKSBjb25zdAogewotICAgIGlmICghaXNmaW5pdGUodmFsdWUpKQorICAg
IGlmICghdmFsdWUuaXNGaW5pdGUoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIERh
dGVDb21wb25lbnRzIGRhdGU7CiAgICAgaWYgKCFzZXRNaWxsaXNlY29uZFRvRGF0ZUNvbXBvbmVu
dHModmFsdWUsICZkYXRlKSkKQEAgLTE0MCwxNyArMTQ2LDE3IEBAIFN0cmluZyBCYXNlRGF0ZUFu
ZFRpbWVJbnB1dFR5cGU6OnNlcmlhbGl6ZShkb3VibGUgdmFsdWUpIGNvbnN0CiAKIFN0cmluZyBC
YXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OnNlcmlhbGl6ZVdpdGhDb21wb25lbnRzKGNvbnN0IERh
dGVDb21wb25lbnRzJiBkYXRlKSBjb25zdAogewotICAgIGRvdWJsZSBzdGVwOworICAgIERlY2lt
YWwgc3RlcDsKICAgICBpZiAoIWVsZW1lbnQoKS0+Z2V0QWxsb3dlZFZhbHVlU3RlcCgmc3RlcCkp
CiAgICAgICAgIHJldHVybiBkYXRlLnRvU3RyaW5nKCk7Ci0gICAgaWYgKCFmbW9kKHN0ZXAsIG1z
ZWNQZXJNaW51dGUpKQorICAgIGlmIChzdGVwLnJlbWFpbmRlcihtc2VjUGVyTWludXRlKS5pc1pl
cm8oKSkKICAgICAgICAgcmV0dXJuIGRhdGUudG9TdHJpbmcoRGF0ZUNvbXBvbmVudHM6Ok5vbmUp
OwotICAgIGlmICghZm1vZChzdGVwLCBtc2VjUGVyU2Vjb25kKSkKKyAgICBpZiAoc3RlcC5yZW1h
aW5kZXIobXNlY1BlclNlY29uZCkuaXNaZXJvKCkpCiAgICAgICAgIHJldHVybiBkYXRlLnRvU3Ry
aW5nKERhdGVDb21wb25lbnRzOjpTZWNvbmQpOwogICAgIHJldHVybiBkYXRlLnRvU3RyaW5nKERh
dGVDb21wb25lbnRzOjpNaWxsaXNlY29uZCk7CiB9CiAKLVN0cmluZyBCYXNlRGF0ZUFuZFRpbWVJ
bnB1dFR5cGU6OnNlcmlhbGl6ZVdpdGhNaWxsaXNlY29uZHMoZG91YmxlIHZhbHVlKSBjb25zdAor
U3RyaW5nIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6c2VyaWFsaXplV2l0aE1pbGxpc2Vjb25k
cyhjb25zdCBEZWNpbWFsJiB2YWx1ZSkgY29uc3QKIHsKICAgICByZXR1cm4gc2VyaWFsaXplKHZh
bHVlKTsKIH0KQEAgLTE3NSw3ICsxODEsOCBAQCBTdHJpbmcgQmFzZURhdGVBbmRUaW1lSW5wdXRU
eXBlOjpjb252ZXJ0RnJvbVZpc2libGVWYWx1ZShjb25zdCBTdHJpbmcmIHZpc2libGVWYQogICAg
IGlmICghaXNmaW5pdGUocGFyc2VkVmFsdWUpKQogICAgICAgICByZXR1cm4gdmlzaWJsZVZhbHVl
OwogCi0gICAgcmV0dXJuIHNlcmlhbGl6ZVdpdGhNaWxsaXNlY29uZHMocGFyc2VkVmFsdWUpOwor
ICAgIGNvbnN0IERlY2ltYWwgdmFsdWUgPSBjb252ZXJ0RG91YmxlVG9EZWNpbWFsKHBhcnNlZFZh
bHVlKTsKKyAgICByZXR1cm4gdmFsdWUuaXNGaW5pdGUoKSA/IHNlcmlhbGl6ZVdpdGhNaWxsaXNl
Y29uZHModmFsdWUpIDogdmlzaWJsZVZhbHVlOwogfQogCiBTdHJpbmcgQmFzZURhdGVBbmRUaW1l
SW5wdXRUeXBlOjpzYW5pdGl6ZVZhbHVlKGNvbnN0IFN0cmluZyYgcHJvcG9zZWRWYWx1ZSkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRU
eXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5oCmlu
ZGV4IGU5MWNmNjA4OGQ4NTg5YmZkNjJlZjNmODY2NTU0ODk4YjIwODI1MDYuLmE3OGI0Y2QyNjVk
N2QwZWUxODg4NjQ4MTJiY2MwNDJmNzE2MmJkYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuaApAQCAtNDIsMTMgKzQyLDEzIEBAIGNsYXNzIEJh
c2VEYXRlQW5kVGltZUlucHV0VHlwZSA6IHB1YmxpYyBUZXh0RmllbGRJbnB1dFR5cGUgewogcHJv
dGVjdGVkOgogICAgIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50KiBl
bGVtZW50KSA6IFRleHRGaWVsZElucHV0VHlwZShlbGVtZW50KSB7IH0KICAgICB2aXJ0dWFsIHZv
aWQgaGFuZGxlS2V5ZG93bkV2ZW50KEtleWJvYXJkRXZlbnQqKSBPVkVSUklERTsKLSAgICB2aXJ0
dWFsIGRvdWJsZSBwYXJzZVRvRG91YmxlKGNvbnN0IFN0cmluZyYsIGRvdWJsZSkgY29uc3QgT1ZF
UlJJREU7CisgICAgdmlydHVhbCBEZWNpbWFsIHBhcnNlVG9EZWNpbWFsKGNvbnN0IFN0cmluZyYs
IGNvbnN0IERlY2ltYWwmKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgcGFyc2VU
b0RhdGVDb21wb25lbnRzKGNvbnN0IFN0cmluZyYsIERhdGVDb21wb25lbnRzKikgY29uc3QgT1ZF
UlJJREU7CiAgICAgU3RyaW5nIHNlcmlhbGl6ZVdpdGhDb21wb25lbnRzKGNvbnN0IERhdGVDb21w
b25lbnRzJikgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIHBhcnNlVG9EYXRl
Q29tcG9uZW50c0ludGVybmFsKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoLCBEYXRlQ29t
cG9uZW50cyopIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgc2V0TWlsbGlzZWNvbmRUb0Rh
dGVDb21wb25lbnRzKGRvdWJsZSwgRGF0ZUNvbXBvbmVudHMqKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBib29sIHNldE1pbGxpc2Vjb25kVG9EYXRlQ29tcG9uZW50cyhjb25zdCBEZWNpbWFsJiwg
RGF0ZUNvbXBvbmVudHMqKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBEYXRlQ29tcG9uZW50czo6
VHlwZSBkYXRlVHlwZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGRvdWJsZSB2YWx1ZUFzRGF0
ZSgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZUFzRGF0ZShkb3Vi
bGUsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdCBPVkVSUklERTsKQEAgLTU2LDExICs1NiwxMSBAQCBw
cml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZUFzTnVtYmVyKGRvdWJsZSwgVGV4dEZp
ZWxkRXZlbnRCZWhhdmlvciwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0IE9WRVJSSURFOwogICAgIHZp
cnR1YWwgYm9vbCB0eXBlTWlzbWF0Y2hGb3IoY29uc3QgU3RyaW5nJikgY29uc3QgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCBib29sIHR5cGVNaXNtYXRjaCgpIGNvbnN0IE9WRVJSSURFOwotICAgIHZp
cnR1YWwgZG91YmxlIGRlZmF1bHRWYWx1ZUZvclN0ZXBVcCgpIGNvbnN0IE9WRVJSSURFOworICAg
IHZpcnR1YWwgRGVjaW1hbCBkZWZhdWx0VmFsdWVGb3JTdGVwVXAoKSBjb25zdCBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIGJvb2wgaXNTdGVwcGFibGUoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0
dWFsIHZvaWQgaGFuZGxlV2hlZWxFdmVudChXaGVlbEV2ZW50KikgT1ZFUlJJREU7Ci0gICAgdmly
dHVhbCBTdHJpbmcgc2VyaWFsaXplKGRvdWJsZSkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVh
bCBTdHJpbmcgc2VyaWFsaXplV2l0aE1pbGxpc2Vjb25kcyhkb3VibGUpIGNvbnN0OworICAgIHZp
cnR1YWwgU3RyaW5nIHNlcmlhbGl6ZShjb25zdCBEZWNpbWFsJikgY29uc3QgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCBTdHJpbmcgc2VyaWFsaXplV2l0aE1pbGxpc2Vjb25kcyhjb25zdCBEZWNpbWFs
JikgY29uc3Q7CiAgICAgdmlydHVhbCBTdHJpbmcgdmlzaWJsZVZhbHVlKCkgY29uc3QgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCBTdHJpbmcgY29udmVydEZyb21WaXNpYmxlVmFsdWUoY29uc3QgU3Ry
aW5nJikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBTdHJpbmcgc2FuaXRpemVWYWx1ZShj
b25zdCBTdHJpbmcmKSBjb25zdCBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRGF0ZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVJbnB1dFR5
cGUuY3BwCmluZGV4IDg4YjMxMjA2NTU0MmYyOGJmMGY5ZDhkNjEzM2VlMWI5MWViYjI2MTkuLmQ4
ZDYyNjk1NTI0Yjg0MWEzZmYwYWU1ZmE1NTE1ZjQ4YTYzZjhhMjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvRGF0ZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9EYXRlSW5wdXRUeXBlLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkRhdGVDb21w
b25lbnRzLmgiCiAjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxO
YW1lcy5oIgorI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKICNpbmNsdWRlICJLZXlib2Fy
ZEV2ZW50LmgiCiAjaW5jbHVkZSAiTG9jYWxpemVkRGF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNz
T3duUHRyLmg+CkBAIC00NSw5ICs0Niw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcg
bmFtZXNwYWNlIEhUTUxOYW1lczsKIAotc3RhdGljIGNvbnN0IGRvdWJsZSBkYXRlRGVmYXVsdFN0
ZXAgPSAxLjA7Ci1zdGF0aWMgY29uc3QgZG91YmxlIGRhdGVEZWZhdWx0U3RlcEJhc2UgPSAwLjA7
Ci1zdGF0aWMgY29uc3QgZG91YmxlIGRhdGVTdGVwU2NhbGVGYWN0b3IgPSA4NjQwMDAwMC4wOwor
c3RhdGljIGNvbnN0IGludCAgZGF0ZURlZmF1bHRTdGVwID0gMTsKK3N0YXRpYyBjb25zdCBpbnQg
IGRhdGVEZWZhdWx0U3RlcEJhc2UgPSAwOworc3RhdGljIGNvbnN0IGludCAgZGF0ZVN0ZXBTY2Fs
ZUZhY3RvciA9IDg2NDAwMDAwOwogCiBpbmxpbmUgRGF0ZUlucHV0VHlwZTo6RGF0ZUlucHV0VHlw
ZShIVE1MSW5wdXRFbGVtZW50KiBlbGVtZW50KQogICAgIDogQmFzZURhdGVBbmRUaW1lSW5wdXRU
eXBlKGVsZW1lbnQpCkBAIC03MywxMCArNzQsMTAgQEAgU3RlcFJhbmdlIERhdGVJbnB1dFR5cGU6
OmNyZWF0ZVN0ZXBSYW5nZShBbnlTdGVwSGFuZGxpbmcgYW55U3RlcEhhbmRsaW5nKSBjb25zdAog
ewogICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RlcFJhbmdlOjpTdGVwRGVzY3JpcHRp
b24sIHN0ZXBEZXNjcmlwdGlvbiwgKGRhdGVEZWZhdWx0U3RlcCwgZGF0ZURlZmF1bHRTdGVwQmFz
ZSwgZGF0ZVN0ZXBTY2FsZUZhY3RvciwgU3RlcFJhbmdlOjpQYXJzZWRTdGVwVmFsdWVTaG91bGRC
ZUludGVnZXIpKTsKIAotICAgIGRvdWJsZSBzdGVwQmFzZSA9IHBhcnNlVG9Eb3VibGUoZWxlbWVu
dCgpLT5mYXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpLCAwKTsKLSAgICBkb3VibGUgbWluaW11bSA9
IHBhcnNlVG9Eb3VibGUoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpLCBEYXRl
Q29tcG9uZW50czo6bWluaW11bURhdGUoKSk7Ci0gICAgZG91YmxlIG1heGltdW0gPSBwYXJzZVRv
RG91YmxlKGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShtYXhBdHRyKSwgRGF0ZUNvbXBvbmVu
dHM6Om1heGltdW1EYXRlKCkpOwotICAgIFN0ZXBSYW5nZTo6RG91YmxlV2l0aERlY2ltYWxQbGFj
ZXNPck1pc3Npbmcgc3RlcCA9IFN0ZXBSYW5nZTo6cGFyc2VTdGVwKGFueVN0ZXBIYW5kbGluZywg
c3RlcERlc2NyaXB0aW9uLCBlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUoc3RlcEF0dHIpKTsK
KyAgICBjb25zdCBEZWNpbWFsIHN0ZXBCYXNlID0gcGFyc2VUb0RlY2ltYWwoZWxlbWVudCgpLT5m
YXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpLCAwKTsKKyAgICBjb25zdCBEZWNpbWFsIG1pbmltdW0g
PSBwYXJzZVRvRGVjaW1hbChlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUobWluQXR0ciksIHBh
cnNlVG9EZWNpbWFsRm9yTnVtYmVyVHlwZShzZXJpYWxpemVGb3JOdW1iZXJUeXBlKERhdGVDb21w
b25lbnRzOjptaW5pbXVtRGF0ZSgpKSkpOworICAgIGNvbnN0IERlY2ltYWwgbWF4aW11bSA9IHBh
cnNlVG9EZWNpbWFsKGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShtYXhBdHRyKSwgcGFyc2VU
b0RlY2ltYWxGb3JOdW1iZXJUeXBlKHNlcmlhbGl6ZUZvck51bWJlclR5cGUoRGF0ZUNvbXBvbmVu
dHM6Om1heGltdW1EYXRlKCkpKSk7CisgICAgY29uc3QgU3RlcFJhbmdlOjpEZWNpbWFsT3JNaXNz
aW5nIHN0ZXAgPSBTdGVwUmFuZ2U6OnBhcnNlU3RlcChhbnlTdGVwSGFuZGxpbmcsIHN0ZXBEZXNj
cmlwdGlvbiwgZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKHN0ZXBBdHRyKSk7CiAgICAgcmV0
dXJuIFN0ZXBSYW5nZShzdGVwQmFzZSwgbWluaW11bSwgbWF4aW11bSwgc3RlcCwgc3RlcERlc2Ny
aXB0aW9uKTsKIH0KIApAQCAtODcsMTAgKzg4LDEwIEBAIGJvb2wgRGF0ZUlucHV0VHlwZTo6cGFy
c2VUb0RhdGVDb21wb25lbnRzSW50ZXJuYWwoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2ln
CiAgICAgcmV0dXJuIG91dC0+cGFyc2VEYXRlKGNoYXJhY3RlcnMsIGxlbmd0aCwgMCwgZW5kKSAm
JiBlbmQgPT0gbGVuZ3RoOwogfQogCi1ib29sIERhdGVJbnB1dFR5cGU6OnNldE1pbGxpc2Vjb25k
VG9EYXRlQ29tcG9uZW50cyhkb3VibGUgdmFsdWUsIERhdGVDb21wb25lbnRzKiBkYXRlKSBjb25z
dAorYm9vbCBEYXRlSW5wdXRUeXBlOjpzZXRNaWxsaXNlY29uZFRvRGF0ZUNvbXBvbmVudHMoY29u
c3QgRGVjaW1hbCYgdmFsdWUsIERhdGVDb21wb25lbnRzKiBkYXRlKSBjb25zdAogewogICAgIEFT
U0VSVChkYXRlKTsKLSAgICByZXR1cm4gZGF0ZS0+c2V0TWlsbGlzZWNvbmRzU2luY2VFcG9jaEZv
ckRhdGUodmFsdWUpOworICAgIHJldHVybiBkYXRlLT5zZXRNaWxsaXNlY29uZHNTaW5jZUVwb2No
Rm9yRGF0ZShwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZShzZXJpYWxpemVGb3JOdW1iZXJUeXBl
KHZhbHVlKSkpOwogfQogCiBib29sIERhdGVJbnB1dFR5cGU6OmlzRGF0ZUZpZWxkKCkgY29uc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZUlucHV0VHlwZS5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9EYXRlSW5wdXRUeXBlLmgKaW5kZXggMmZhZGM0N2I0OGNkMGEzOWUwMGY0
M2IzYmYxMWJhMGE5YjIxYzAxZi4uODM4NDNhMWRhZGI1NWFkNDliOGU1NTY3NzExYTVhZjE4M2Nk
ZWFkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlSW5wdXRUeXBlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlSW5wdXRUeXBlLmgKQEAgLTUwLDcgKzUwLDcgQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIERhdGVDb21wb25lbnRzOjpUeXBlIGRhdGVUeXBlKCkgY29u
c3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBTdGVwUmFuZ2UgY3JlYXRlU3RlcFJhbmdlKEFueVN0
ZXBIYW5kbGluZykgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIHBhcnNlVG9EYXRl
Q29tcG9uZW50c0ludGVybmFsKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoLCBEYXRlQ29t
cG9uZW50cyopIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBzZXRNaWxsaXNlY29u
ZFRvRGF0ZUNvbXBvbmVudHMoZG91YmxlLCBEYXRlQ29tcG9uZW50cyopIGNvbnN0IE9WRVJSSURF
OworICAgIHZpcnR1YWwgYm9vbCBzZXRNaWxsaXNlY29uZFRvRGF0ZUNvbXBvbmVudHMoY29uc3Qg
RGVjaW1hbCYsIERhdGVDb21wb25lbnRzKikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBi
b29sIGlzRGF0ZUZpZWxkKCkgY29uc3QgT1ZFUlJJREU7CiAjaWYgRU5BQkxFKENBTEVOREFSX1BJ
Q0tFUikKICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlU2hhZG93U3VidHJlZSgpIE9WRVJSSURFOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXggNzMyY2FiNDFkMzgz
ZDY2ZTFmNWMyMTk2NDVhOWIwM2QyNzdhMjljOS4uYTE1ZDUyMDhkY2ZhYzU0YzMyZmU3MDEzNGYw
NWUxNmEwMzY1YTZkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3Bw
CkBAIC0yNzMsNyArMjczLDcgQEAgYm9vbCBIVE1MSW5wdXRFbGVtZW50OjpzdGVwTWlzbWF0Y2go
KSBjb25zdAogICAgIHJldHVybiB3aWxsVmFsaWRhdGUoKSAmJiBtX2lucHV0VHlwZS0+c3RlcE1p
c21hdGNoKHZhbHVlKCkpOwogfQogCi1ib29sIEhUTUxJbnB1dEVsZW1lbnQ6OmdldEFsbG93ZWRW
YWx1ZVN0ZXAoZG91YmxlKiBzdGVwKSBjb25zdAorYm9vbCBIVE1MSW5wdXRFbGVtZW50OjpnZXRB
bGxvd2VkVmFsdWVTdGVwKERlY2ltYWwqIHN0ZXApIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1faW5w
dXRUeXBlLT5nZXRBbGxvd2VkVmFsdWVTdGVwKHN0ZXApOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxJbnB1dEVsZW1lbnQuaAppbmRleCA1NjEzMzRlMjM2ZDI4NWM2MjgzMTM1YTNmZmQ1NzhhNGQ3
M2MzZThmLi5lNzRlNDM1MzhiZTllNmZjNmM3MGI0ZjI5ZTFiOGFhMTk4ZjAwZTgyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaApAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6
CiAgICAgZG91YmxlIG1heGltdW0oKSBjb25zdDsKICAgICAvLyBTZXRzIHRoZSAiYWxsb3dlZCB2
YWx1ZSBzdGVwIiBkZWZpbmVkIGluIHRoZSBIVE1MIHNwZWMgdG8gdGhlIHNwZWNpZmllZCBkb3Vi
bGUgcG9pbnRlci4KICAgICAvLyBSZXR1cm5zIGZhbHNlIGlmIHRoZXJlIGlzIG5vICJhbGxvd2Vk
IHZhbHVlIHN0ZXAuIgotICAgIGJvb2wgZ2V0QWxsb3dlZFZhbHVlU3RlcChkb3VibGUqKSBjb25z
dDsKKyAgICBib29sIGdldEFsbG93ZWRWYWx1ZVN0ZXAoRGVjaW1hbCopIGNvbnN0OwogICAgIFN0
ZXBSYW5nZSBjcmVhdGVTdGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5nKSBjb25zdDsKIAogICAgIC8v
IEltcGxlbWVudGF0aW9ucyBvZiBIVE1MSW5wdXRFbGVtZW50OjpzdGVwVXAoKSBhbmQgc3RlcERv
d24oKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAppbmRleCA1NmE3YWExMzcxZDYwYmUxNWU0
NjYyMDc1ODExMzdhZTI3Njk0Y2VlLi41NGRiNDQ1ZjQwZmRmOWMzN2MzOGIyOWQ3NzU2ZDg3N2Q3
M2FhMzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCkBAIC0yNTAsMTEgKzI1MCw4IEBA
IGJvb2wgSW5wdXRUeXBlOjpyYW5nZVVuZGVyZmxvdyhjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25z
dAogICAgIGlmICghaXNTdGVwcGFibGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
ZG91YmxlIGRvdWJsZVZhbHVlID0gcGFyc2VUb0RvdWJsZSh2YWx1ZSwgbnVtZXJpY19saW1pdHM8
ZG91YmxlPjo6cXVpZXRfTmFOKCkpOwotICAgIGlmIChpc25hbihkb3VibGVWYWx1ZSkpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBkb3VibGVWYWx1ZSA8IGNyZWF0ZVN0ZXBS
YW5nZShSZWplY3RBbnkpLm1pbmltdW0oKTsKKyAgICBjb25zdCBEZWNpbWFsIG51bWVyaWNWYWx1
ZSA9IHBhcnNlVG9EZWNpbWFsKHZhbHVlKTsKKyAgICByZXR1cm4gbnVtZXJpY1ZhbHVlLmlzRmlu
aXRlKCkgJiYgbnVtZXJpY1ZhbHVlIDwgY3JlYXRlU3RlcFJhbmdlKFJlamVjdEFueSkubWluaW11
bSgpOwogfQogCiBib29sIElucHV0VHlwZTo6cmFuZ2VPdmVyZmxvdyhjb25zdCBTdHJpbmcmIHZh
bHVlKSBjb25zdApAQCAtMjYyLDI2ICsyNTksMjMgQEAgYm9vbCBJbnB1dFR5cGU6OnJhbmdlT3Zl
cmZsb3coY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKICAgICBpZiAoIWlzU3RlcHBhYmxlKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGRvdWJsZSBkb3VibGVWYWx1ZSA9IHBhcnNl
VG9Eb3VibGUodmFsdWUsIG51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpKTsKLSAg
ICBpZiAoaXNuYW4oZG91YmxlVmFsdWUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBy
ZXR1cm4gZG91YmxlVmFsdWUgPiBjcmVhdGVTdGVwUmFuZ2UoUmVqZWN0QW55KS5tYXhpbXVtKCk7
CisgICAgY29uc3QgRGVjaW1hbCBudW1lcmljVmFsdWUgPSBwYXJzZVRvRGVjaW1hbCh2YWx1ZSk7
CisgICAgcmV0dXJuIG51bWVyaWNWYWx1ZS5pc0Zpbml0ZSgpICYmIG51bWVyaWNWYWx1ZSA+IGNy
ZWF0ZVN0ZXBSYW5nZShSZWplY3RBbnkpLm1heGltdW0oKTsKIH0KIAotZG91YmxlIElucHV0VHlw
ZTo6ZGVmYXVsdFZhbHVlRm9yU3RlcFVwKCkgY29uc3QKK0RlY2ltYWwgSW5wdXRUeXBlOjpkZWZh
dWx0VmFsdWVGb3JTdGVwVXAoKSBjb25zdAogewogICAgIHJldHVybiAwOwogfQogCiBkb3VibGUg
SW5wdXRUeXBlOjptaW5pbXVtKCkgY29uc3QKIHsKLSAgICByZXR1cm4gY3JlYXRlU3RlcFJhbmdl
KFJlamVjdEFueSkubWluaW11bSgpOworICAgIHJldHVybiBwYXJzZVRvRG91YmxlRm9yTnVtYmVy
VHlwZShjcmVhdGVTdGVwUmFuZ2UoUmVqZWN0QW55KS5taW5pbXVtKCkudG9TdHJpbmcoKSk7CiB9
CiAKIGRvdWJsZSBJbnB1dFR5cGU6Om1heGltdW0oKSBjb25zdAogewotICAgIHJldHVybiBjcmVh
dGVTdGVwUmFuZ2UoUmVqZWN0QW55KS5tYXhpbXVtKCk7CisgICAgcmV0dXJuIHBhcnNlVG9Eb3Vi
bGVGb3JOdW1iZXJUeXBlKGNyZWF0ZVN0ZXBSYW5nZShSZWplY3RBbnkpLm1heGltdW0oKS50b1N0
cmluZygpKTsKIH0KIAogYm9vbCBJbnB1dFR5cGU6OnNpemVTaG91bGRJbmNsdWRlRGVjb3JhdGlv
bihpbnQsIGludCYgcHJlZmVycmVkU2l6ZSkgY29uc3QKQEAgLTI5NSwxMiArMjg5LDEyIEBAIGJv
b2wgSW5wdXRUeXBlOjppc0luUmFuZ2UoY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKICAgICBp
ZiAoIWlzU3RlcHBhYmxlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGRvdWJsZSBk
b3VibGVWYWx1ZSA9IHBhcnNlVG9Eb3VibGUodmFsdWUsIG51bWVyaWNfbGltaXRzPGRvdWJsZT46
OnF1aWV0X05hTigpKTsKLSAgICBpZiAoaXNuYW4oZG91YmxlVmFsdWUpKQorICAgIGNvbnN0IERl
Y2ltYWwmIG51bWVyaWNWYWx1ZSA9IHBhcnNlVG9EZWNpbWFsKHZhbHVlKTsKKyAgICBpZiAoIW51
bWVyaWNWYWx1ZS5pc0Zpbml0ZSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIFN0ZXBS
YW5nZSBzdGVwUmFuZ2UoY3JlYXRlU3RlcFJhbmdlKFJlamVjdEFueSkpOwotICAgIHJldHVybiBk
b3VibGVWYWx1ZSA+PSBzdGVwUmFuZ2UubWluaW11bSgpICYmIGRvdWJsZVZhbHVlIDw9IHN0ZXBS
YW5nZS5tYXhpbXVtKCk7CisgICAgY29uc3QgU3RlcFJhbmdlIHN0ZXBSYW5nZShjcmVhdGVTdGVw
UmFuZ2UoUmVqZWN0QW55KSk7CisgICAgcmV0dXJuIG51bWVyaWNWYWx1ZSA+PSBzdGVwUmFuZ2Uu
bWluaW11bSgpICYmIG51bWVyaWNWYWx1ZSA8PSBzdGVwUmFuZ2UubWF4aW11bSgpOwogfQogCiBi
b29sIElucHV0VHlwZTo6aXNPdXRPZlJhbmdlKGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0CkBA
IC0zMDgsMTIgKzMwMiwxMiBAQCBib29sIElucHV0VHlwZTo6aXNPdXRPZlJhbmdlKGNvbnN0IFN0
cmluZyYgdmFsdWUpIGNvbnN0CiAgICAgaWYgKCFpc1N0ZXBwYWJsZSgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICBkb3VibGUgZG91YmxlVmFsdWUgPSBwYXJzZVRvRG91YmxlKHZhbHVl
LCBudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKSk7Ci0gICAgaWYgKGlzbmFuKGRv
dWJsZVZhbHVlKSkKKyAgICBjb25zdCBEZWNpbWFsJiBudW1lcmljVmFsdWUgPSBwYXJzZVRvRGVj
aW1hbCh2YWx1ZSk7CisgICAgaWYgKCFudW1lcmljVmFsdWUuaXNGaW5pdGUoKSkKICAgICAgICAg
cmV0dXJuIHRydWU7CiAKLSAgICBTdGVwUmFuZ2Ugc3RlcFJhbmdlKGNyZWF0ZVN0ZXBSYW5nZShS
ZWplY3RBbnkpKTsKLSAgICByZXR1cm4gZG91YmxlVmFsdWUgPCBzdGVwUmFuZ2UubWluaW11bSgp
IHx8IGRvdWJsZVZhbHVlID4gc3RlcFJhbmdlLm1heGltdW0oKTsKKyAgICBjb25zdCBTdGVwUmFu
Z2Ugc3RlcFJhbmdlKGNyZWF0ZVN0ZXBSYW5nZShSZWplY3RBbnkpKTsKKyAgICByZXR1cm4gbnVt
ZXJpY1ZhbHVlIDwgc3RlcFJhbmdlLm1pbmltdW0oKSB8fCBudW1lcmljVmFsdWUgPiBzdGVwUmFu
Z2UubWF4aW11bSgpOwogfQogCiBib29sIElucHV0VHlwZTo6c3RlcE1pc21hdGNoKGNvbnN0IFN0
cmluZyYgdmFsdWUpIGNvbnN0CkBAIC0zMjEsMTEgKzMxNSwxMSBAQCBib29sIElucHV0VHlwZTo6
c3RlcE1pc21hdGNoKGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0CiAgICAgaWYgKCFpc1N0ZXBw
YWJsZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBkb3VibGUgZG91YmxlVmFsdWUg
PSBwYXJzZVRvRG91YmxlKHZhbHVlLCBudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4o
KSk7Ci0gICAgaWYgKGlzbmFuKGRvdWJsZVZhbHVlKSkKKyAgICBjb25zdCBEZWNpbWFsJiBudW1l
cmljVmFsdWUgPSBwYXJzZVRvRGVjaW1hbCh2YWx1ZSk7CisgICAgaWYgKCFudW1lcmljVmFsdWUu
aXNGaW5pdGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIGNyZWF0ZVN0
ZXBSYW5nZShSZWplY3RBbnkpLnN0ZXBNaXNtYXRjaChkb3VibGVWYWx1ZSk7CisgICAgcmV0dXJu
IGNyZWF0ZVN0ZXBSYW5nZShSZWplY3RBbnkpLnN0ZXBNaXNtYXRjaChudW1lcmljVmFsdWUpOwog
fQogCiBTdHJpbmcgSW5wdXRUeXBlOjp0eXBlTWlzbWF0Y2hUZXh0KCkgY29uc3QKQEAgLTM1OSwy
MSArMzUzLDIxIEBAIFN0cmluZyBJbnB1dFR5cGU6OnZhbGlkYXRpb25NZXNzYWdlKCkgY29uc3QK
ICAgICBpZiAoIWlzU3RlcHBhYmxlKCkpCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwog
Ci0gICAgZG91YmxlIGRvdWJsZVZhbHVlID0gcGFyc2VUb0RvdWJsZSh2YWx1ZSwgbnVtZXJpY19s
aW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCkpOwotICAgIGlmIChpc25hbihkb3VibGVWYWx1ZSkp
CisgICAgY29uc3QgRGVjaW1hbCYgbnVtZXJpY1ZhbHVlID0gcGFyc2VUb0RlY2ltYWwodmFsdWUp
OworICAgIGlmICghbnVtZXJpY1ZhbHVlLmlzRmluaXRlKCkpCiAgICAgICAgIHJldHVybiBlbXB0
eVN0cmluZygpOwogCi0gICAgU3RlcFJhbmdlIHN0ZXBSYW5nZShjcmVhdGVTdGVwUmFuZ2UoUmVq
ZWN0QW55KSk7CisgICAgY29uc3QgU3RlcFJhbmdlIHN0ZXBSYW5nZShjcmVhdGVTdGVwUmFuZ2Uo
UmVqZWN0QW55KSk7CiAKLSAgICBpZiAoZG91YmxlVmFsdWUgPCBzdGVwUmFuZ2UubWluaW11bSgp
KQorICAgIGlmIChudW1lcmljVmFsdWUgPCBzdGVwUmFuZ2UubWluaW11bSgpKQogICAgICAgICBy
ZXR1cm4gdmFsaWRhdGlvbk1lc3NhZ2VSYW5nZVVuZGVyZmxvd1RleHQoc2VyaWFsaXplKHN0ZXBS
YW5nZS5taW5pbXVtKCkpKTsKIAotICAgIGlmIChkb3VibGVWYWx1ZSA8IHN0ZXBSYW5nZS5tYXhp
bXVtKCkpCisgICAgaWYgKG51bWVyaWNWYWx1ZSA8IHN0ZXBSYW5nZS5tYXhpbXVtKCkpCiAgICAg
ICAgIHJldHVybiB2YWxpZGF0aW9uTWVzc2FnZVJhbmdlT3ZlcmZsb3dUZXh0KHNlcmlhbGl6ZShz
dGVwUmFuZ2UubWF4aW11bSgpKSk7CiAKLSAgICBpZiAoc3RlcFJhbmdlLnN0ZXBNaXNtYXRjaChk
b3VibGVWYWx1ZSkpIHsKKyAgICBpZiAoc3RlcFJhbmdlLnN0ZXBNaXNtYXRjaChudW1lcmljVmFs
dWUpKSB7CiAgICAgICAgIGNvbnN0IFN0cmluZyBzdGVwU3RyaW5nID0gc3RlcFJhbmdlLmhhc1N0
ZXAoKSA/IHNlcmlhbGl6ZUZvck51bWJlclR5cGUoc3RlcFJhbmdlLnN0ZXAoKSAvIHN0ZXBSYW5n
ZS5zdGVwU2NhbGVGYWN0b3IoKSkgOiBlbXB0eVN0cmluZygpOwotICAgICAgICByZXR1cm4gdmFs
aWRhdGlvbk1lc3NhZ2VTdGVwTWlzbWF0Y2hUZXh0KHNlcmlhbGl6ZShzdGVwUmFuZ2Uuc3RlcEJh
c2UoKSksIHN0ZXBTdHJpbmcpOworICAgICAgICByZXR1cm4gdmFsaWRhdGlvbk1lc3NhZ2VTdGVw
TWlzbWF0Y2hUZXh0KHN0ZXBSYW5nZS5zdGVwQmFzZSgpLnRvU3RyaW5nKCksIHN0ZXBTdHJpbmcp
OwogICAgIH0KIAogICAgIHJldHVybiBlbXB0eVN0cmluZygpOwpAQCAtNDUyLDE3ICs0NDYsMTUg
QEAgdm9pZCBJbnB1dFR5cGU6OmRlc3Ryb3lTaGFkb3dTdWJ0cmVlKCkKICAgICB9CiB9CiAKLWRv
dWJsZSBJbnB1dFR5cGU6OnBhcnNlVG9Eb3VibGUoY29uc3QgU3RyaW5nJiwgZG91YmxlIGRlZmF1
bHRWYWx1ZSkgY29uc3QKK0RlY2ltYWwgSW5wdXRUeXBlOjpwYXJzZVRvRGVjaW1hbChjb25zdCBT
dHJpbmcmLCBjb25zdCBEZWNpbWFsJiBkZWZhdWx0VmFsdWUpIGNvbnN0CiB7CiAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTsKIH0KIAotZG91YmxlIElu
cHV0VHlwZTo6cGFyc2VUb0RvdWJsZVdpdGhEZWNpbWFsUGxhY2VzKGNvbnN0IFN0cmluZyYgc3Jj
LCBkb3VibGUgZGVmYXVsdFZhbHVlLCB1bnNpZ25lZCAqZGVjaW1hbFBsYWNlcykgY29uc3QKK0Rl
Y2ltYWwgSW5wdXRUeXBlOjpwYXJzZVRvRGVjaW1hbChjb25zdCBTdHJpbmcmIHN0cmluZykgY29u
c3QKIHsKLSAgICBpZiAoZGVjaW1hbFBsYWNlcykKLSAgICAgICAgKmRlY2ltYWxQbGFjZXMgPSAw
OwotICAgIHJldHVybiBwYXJzZVRvRG91YmxlKHNyYywgZGVmYXVsdFZhbHVlKTsKKyAgICByZXR1
cm4gcGFyc2VUb0RlY2ltYWwoc3RyaW5nLCBEZWNpbWFsOjpuYW4oKSk7CiB9CiAKIGJvb2wgSW5w
dXRUeXBlOjpwYXJzZVRvRGF0ZUNvbXBvbmVudHMoY29uc3QgU3RyaW5nJiwgRGF0ZUNvbXBvbmVu
dHMqKSBjb25zdApAQCAtNDcxLDcgKzQ2Myw3IEBAIGJvb2wgSW5wdXRUeXBlOjpwYXJzZVRvRGF0
ZUNvbXBvbmVudHMoY29uc3QgU3RyaW5nJiwgRGF0ZUNvbXBvbmVudHMqKSBjb25zdAogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAotU3RyaW5nIElucHV0VHlwZTo6c2VyaWFsaXplKGRvdWJsZSkgY29u
c3QKK1N0cmluZyBJbnB1dFR5cGU6OnNlcmlhbGl6ZShjb25zdCBEZWNpbWFsJikgY29uc3QKIHsK
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gU3RyaW5nKCk7CkBAIC04NTgs
MjggKzg1MCwyNiBAQCB1bnNpZ25lZCBJbnB1dFR5cGU6OndpZHRoKCkgY29uc3QKICAgICByZXR1
cm4gMDsKIH0KIAotdm9pZCBJbnB1dFR5cGU6OmFwcGx5U3RlcChkb3VibGUgY291bnQsIEFueVN0
ZXBIYW5kbGluZyBhbnlTdGVwSGFuZGxpbmcsIFRleHRGaWVsZEV2ZW50QmVoYXZpb3IgZXZlbnRC
ZWhhdmlvciwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIElucHV0VHlwZTo6YXBwbHlTdGVwKGlu
dCBjb3VudCwgQW55U3RlcEhhbmRsaW5nIGFueVN0ZXBIYW5kbGluZywgVGV4dEZpZWxkRXZlbnRC
ZWhhdmlvciBldmVudEJlaGF2aW9yLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBTdGVwUmFu
Z2Ugc3RlcFJhbmdlKGNyZWF0ZVN0ZXBSYW5nZShhbnlTdGVwSGFuZGxpbmcpKTsKKyAgICBjb25z
dCBTdGVwUmFuZ2Ugc3RlcFJhbmdlKGNyZWF0ZVN0ZXBSYW5nZShhbnlTdGVwSGFuZGxpbmcpKTsK
ICAgICBpZiAoIXN0ZXBSYW5nZS5oYXNTdGVwKCkpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX1NU
QVRFX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGNvbnN0IGRvdWJsZSBuYW4g
PSBudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKTsKLSAgICB1bnNpZ25lZCBjdXJy
ZW50RGVjaW1hbFBsYWNlczsKLSAgICBkb3VibGUgY3VycmVudCA9IHBhcnNlVG9Eb3VibGVXaXRo
RGVjaW1hbFBsYWNlcyhlbGVtZW50KCktPnZhbHVlKCksIG5hbiwgJmN1cnJlbnREZWNpbWFsUGxh
Y2VzKTsKLSAgICBpZiAoIWlzZmluaXRlKGN1cnJlbnQpKSB7CisgICAgY29uc3QgRGVjaW1hbCBj
dXJyZW50ID0gcGFyc2VUb0RlY2ltYWwoZWxlbWVudCgpLT52YWx1ZSgpKTsKKyAgICBpZiAoIWN1
cnJlbnQuaXNGaW5pdGUoKSkgewogICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwogICAg
ICAgICByZXR1cm47CiAgICAgfQotICAgIGRvdWJsZSBuZXdWYWx1ZSA9IGN1cnJlbnQgKyBzdGVw
UmFuZ2Uuc3RlcCgpICogY291bnQ7Ci0gICAgaWYgKGlzaW5mKG5ld1ZhbHVlKSkgeworICAgIERl
Y2ltYWwgbmV3VmFsdWUgPSBjdXJyZW50ICsgc3RlcFJhbmdlLnN0ZXAoKSAqIGNvdW50OworICAg
IGlmICghbmV3VmFsdWUuaXNGaW5pdGUoKSkgewogICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVf
RVJSOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgZG91YmxlIGFjY2VwdGFibGVFcnJv
clZhbHVlID0gc3RlcFJhbmdlLmFjY2VwdGFibGVFcnJvcigpOworICAgIGNvbnN0IERlY2ltYWwg
YWNjZXB0YWJsZUVycm9yVmFsdWUgPSBzdGVwUmFuZ2UuYWNjZXB0YWJsZUVycm9yKCk7CiAgICAg
aWYgKG5ld1ZhbHVlIC0gc3RlcFJhbmdlLm1pbmltdW0oKSA8IC1hY2NlcHRhYmxlRXJyb3JWYWx1
ZSkgewogICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwogICAgICAgICByZXR1cm47CkBA
IC04ODksNyArODc5LDcgQEAgdm9pZCBJbnB1dFR5cGU6OmFwcGx5U3RlcChkb3VibGUgY291bnQs
IEFueVN0ZXBIYW5kbGluZyBhbnlTdGVwSGFuZGxpbmcsIFRleHRGaWUKIAogICAgIGNvbnN0IEF0
b21pY1N0cmluZyYgc3RlcFN0cmluZyA9IGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShzdGVw
QXR0cik7CiAgICAgaWYgKCFlcXVhbElnbm9yaW5nQ2FzZShzdGVwU3RyaW5nLCAiYW55IikpCi0g
ICAgICAgIG5ld1ZhbHVlID0gc3RlcFJhbmdlLmFsaWduVmFsdWVGb3JTdGVwKGN1cnJlbnQsIGN1
cnJlbnREZWNpbWFsUGxhY2VzLCBuZXdWYWx1ZSk7CisgICAgICAgIG5ld1ZhbHVlID0gc3RlcFJh
bmdlLmFsaWduVmFsdWVGb3JTdGVwKGN1cnJlbnQsIG5ld1ZhbHVlKTsKIAogICAgIGlmIChuZXdW
YWx1ZSAtIHN0ZXBSYW5nZS5tYXhpbXVtKCkgPiBhY2NlcHRhYmxlRXJyb3JWYWx1ZSkgewogICAg
ICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwpAQCAtODk4LDEzICs4ODgsMTMgQEAgdm9pZCBJ
bnB1dFR5cGU6OmFwcGx5U3RlcChkb3VibGUgY291bnQsIEFueVN0ZXBIYW5kbGluZyBhbnlTdGVw
SGFuZGxpbmcsIFRleHRGaWUKICAgICBpZiAobmV3VmFsdWUgPiBzdGVwUmFuZ2UubWF4aW11bSgp
KQogICAgICAgICBuZXdWYWx1ZSA9IHN0ZXBSYW5nZS5tYXhpbXVtKCk7CiAKLSAgICBlbGVtZW50
KCktPnNldFZhbHVlQXNOdW1iZXIobmV3VmFsdWUsIGVjLCBldmVudEJlaGF2aW9yKTsKKyAgICBl
bGVtZW50KCktPnNldFZhbHVlQXNOdW1iZXIocGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUobmV3
VmFsdWUudG9TdHJpbmcoKSksIGVjLCBldmVudEJlaGF2aW9yKTsKIAogICAgIGlmIChBWE9iamVj
dENhY2hlOjphY2Nlc3NpYmlsaXR5RW5hYmxlZCgpKQogICAgICAgICAgZWxlbWVudCgpLT5kb2N1
bWVudCgpLT5heE9iamVjdENhY2hlKCktPnBvc3ROb3RpZmljYXRpb24oZWxlbWVudCgpLT5yZW5k
ZXJlcigpLCBBWE9iamVjdENhY2hlOjpBWFZhbHVlQ2hhbmdlZCwgdHJ1ZSk7CiB9CiAKLWJvb2wg
SW5wdXRUeXBlOjpnZXRBbGxvd2VkVmFsdWVTdGVwKGRvdWJsZSogc3RlcCkgY29uc3QKK2Jvb2wg
SW5wdXRUeXBlOjpnZXRBbGxvd2VkVmFsdWVTdGVwKERlY2ltYWwqIHN0ZXApIGNvbnN0CiB7CiAg
ICAgU3RlcFJhbmdlIHN0ZXBSYW5nZShjcmVhdGVTdGVwUmFuZ2UoUmVqZWN0QW55KSk7CiAgICAg
KnN0ZXAgPSBzdGVwUmFuZ2Uuc3RlcCgpOwpAQCAtOTcwLDE0ICs5NjAsMTQgQEAgdm9pZCBJbnB1
dFR5cGU6OnN0ZXBVcEZyb21SZW5kZXJlcihpbnQgbikKICAgICBpZiAoIW4pCiAgICAgICAgIHJl
dHVybjsKIAotICAgIFN0ZXBSYW5nZSBzdGVwUmFuZ2UoY3JlYXRlU3RlcFJhbmdlKEFueUlzRGVm
YXVsdFN0ZXApKTsKKyAgICBjb25zdCBTdGVwUmFuZ2Ugc3RlcFJhbmdlKGNyZWF0ZVN0ZXBSYW5n
ZShBbnlJc0RlZmF1bHRTdGVwKSk7CiAKICAgICAvLyBGSVhNRTogTm90IGFueSBjaGFuZ2VzIGFm
dGVyIHN0ZXBwaW5nLCBldmVuIGlmIGl0IGlzIGFuIGludmFsaWQgdmFsdWUsIG1heSBiZSBiZXR0
ZXIuCiAgICAgLy8gKGUuZy4gU3RlcHBpbmctdXAgZm9yIDxpbnB1dCB0eXBlPSJudW1iZXIiIHZh
bHVlPSJmb28iIHN0ZXA9ImFueSIgLz4gPT4gImZvbyIpCiAgICAgaWYgKCFzdGVwUmFuZ2UuaGFz
U3RlcCgpKQogICAgICAgcmV0dXJuOwogCi0gICAgZG91YmxlIHN0ZXAgPSBzdGVwUmFuZ2Uuc3Rl
cCgpOworICAgIGNvbnN0IERlY2ltYWwgc3RlcCA9IHN0ZXBSYW5nZS5zdGVwKCk7CiAKICAgICBp
bnQgc2lnbjsKICAgICBpZiAoc3RlcCA+IDApCkBAIC05ODcsMzMgKzk3NywyOSBAQCB2b2lkIElu
cHV0VHlwZTo6c3RlcFVwRnJvbVJlbmRlcmVyKGludCBuKQogICAgIGVsc2UKICAgICAgICAgc2ln
biA9IDA7CiAKLSAgICBjb25zdCBkb3VibGUgbmFuID0gbnVtZXJpY19saW1pdHM8ZG91YmxlPjo6
cXVpZXRfTmFOKCk7Ci0gICAgU3RyaW5nIGN1cnJlbnRTdHJpbmdWYWx1ZSA9IGVsZW1lbnQoKS0+
dmFsdWUoKTsKLSAgICBkb3VibGUgY3VycmVudCA9IHBhcnNlVG9Eb3VibGUoY3VycmVudFN0cmlu
Z1ZhbHVlLCBuYW4pOwotICAgIGlmICghaXNmaW5pdGUoY3VycmVudCkpIHsKKyAgICBEZWNpbWFs
IGN1cnJlbnQgPSBwYXJzZVRvRGVjaW1hbChlbGVtZW50KCktPnZhbHVlKCkpOworICAgIGlmICgh
Y3VycmVudC5pc0Zpbml0ZSgpKSB7CiAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWM7CiAgICAgICAg
IGN1cnJlbnQgPSBkZWZhdWx0VmFsdWVGb3JTdGVwVXAoKTsKLSAgICAgICAgZG91YmxlIG5leHRE
aWZmID0gc3RlcCAqIG47CisgICAgICAgIGNvbnN0IERlY2ltYWwgbmV4dERpZmYgPSBzdGVwICog
bjsKICAgICAgICAgaWYgKGN1cnJlbnQgPCBzdGVwUmFuZ2UubWluaW11bSgpIC0gbmV4dERpZmYp
CiAgICAgICAgICAgICBjdXJyZW50ID0gc3RlcFJhbmdlLm1pbmltdW0oKSAtIG5leHREaWZmOwog
ICAgICAgICBpZiAoY3VycmVudCA+IHN0ZXBSYW5nZS5tYXhpbXVtKCkgLSBuZXh0RGlmZikKICAg
ICAgICAgICAgIGN1cnJlbnQgPSBzdGVwUmFuZ2UubWF4aW11bSgpIC0gbmV4dERpZmY7Ci0gICAg
ICAgIGVsZW1lbnQoKS0+c2V0VmFsdWVBc051bWJlcihjdXJyZW50LCBlYywgRGlzcGF0Y2hJbnB1
dEFuZENoYW5nZUV2ZW50KTsKKyAgICAgICAgZWxlbWVudCgpLT5zZXRWYWx1ZUFzTnVtYmVyKHBh
cnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKGN1cnJlbnQudG9TdHJpbmcoKSksIGVjLCBEaXNwYXRj
aElucHV0QW5kQ2hhbmdlRXZlbnQpOwogICAgIH0KICAgICBpZiAoKHNpZ24gPiAwICYmIGN1cnJl
bnQgPCBzdGVwUmFuZ2UubWluaW11bSgpKSB8fCAoc2lnbiA8IDAgJiYgY3VycmVudCA+IHN0ZXBS
YW5nZS5tYXhpbXVtKCkpKQotICAgICAgICBlbGVtZW50KCktPnNldFZhbHVlKHNlcmlhbGl6ZShz
aWduID4gMCA/IHN0ZXBSYW5nZS5taW5pbXVtKCkgOiBzdGVwUmFuZ2UubWF4aW11bSgpKSwgRGlz
cGF0Y2hJbnB1dEFuZENoYW5nZUV2ZW50KTsKKyAgICAgICAgZWxlbWVudCgpLT5zZXRWYWx1ZShz
ZXJpYWxpemVGb3JOdW1iZXJUeXBlKHNpZ24gPiAwID8gc3RlcFJhbmdlLm1pbmltdW0oKSA6IHN0
ZXBSYW5nZS5tYXhpbXVtKCkpLCBEaXNwYXRjaElucHV0QW5kQ2hhbmdlRXZlbnQpOwogICAgIGVs
c2UgewogICAgICAgICBFeGNlcHRpb25Db2RlIGVjOwogICAgICAgICBpZiAoc3RlcE1pc21hdGNo
KGVsZW1lbnQoKS0+dmFsdWUoKSkpIHsKLSAgICAgICAgICAgIEFTU0VSVChzdGVwKTsKLSAgICAg
ICAgICAgIGRvdWJsZSBuZXdWYWx1ZTsKLSAgICAgICAgICAgIGRvdWJsZSBzY2FsZSA9IHBvdygx
MC4wLCBzdGF0aWNfY2FzdDxkb3VibGU+KG1heChzdGVwUmFuZ2Uuc3RlcERlY2ltYWxQbGFjZXMo
KSwgc3RlcFJhbmdlLnN0ZXBCYXNlRGVjaW1hbFBsYWNlcygpKSkpOwotICAgICAgICAgICAgZG91
YmxlIGJhc2UgPSBzdGVwUmFuZ2Uuc3RlcEJhc2UoKTsKLQorICAgICAgICAgICAgQVNTRVJUKCFz
dGVwLmlzWmVybygpKTsKKyAgICAgICAgICAgIGNvbnN0IERlY2ltYWwgYmFzZSA9IHN0ZXBSYW5n
ZS5zdGVwQmFzZSgpOworICAgICAgICAgICAgRGVjaW1hbCBuZXdWYWx1ZTsKICAgICAgICAgICAg
IGlmIChzaWduIDwgMCkKLSAgICAgICAgICAgICAgICBuZXdWYWx1ZSA9IHJvdW5kKChiYXNlICsg
Zmxvb3IoKGN1cnJlbnQgLSBiYXNlKSAvIHN0ZXApICogc3RlcCkgKiBzY2FsZSkgLyBzY2FsZTsK
KyAgICAgICAgICAgICAgICBuZXdWYWx1ZSA9IGJhc2UgKyAoKGN1cnJlbnQgLSBiYXNlKSAvIHN0
ZXApLmZsb29yKCkgKiBzdGVwOwogICAgICAgICAgICAgZWxzZSBpZiAoc2lnbiA+IDApCi0gICAg
ICAgICAgICAgICAgbmV3VmFsdWUgPSByb3VuZCgoYmFzZSArIGNlaWwoKGN1cnJlbnQgLSBiYXNl
KSAvIHN0ZXApICogc3RlcCkgKiBzY2FsZSkgLyBzY2FsZTsKKyAgICAgICAgICAgICAgICBuZXdW
YWx1ZSA9IGJhc2UgKyAoKGN1cnJlbnQgLSBiYXNlKSAvIHN0ZXApLmNlaWxpbmcoKSAqIHN0ZXA7
CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgbmV3VmFsdWUgPSBjdXJyZW50Owog
CkBAIC0xMDIyLDggKzEwMDgsNyBAQCB2b2lkIElucHV0VHlwZTo6c3RlcFVwRnJvbVJlbmRlcmVy
KGludCBuKQogICAgICAgICAgICAgaWYgKG5ld1ZhbHVlID4gc3RlcFJhbmdlLm1heGltdW0oKSkK
ICAgICAgICAgICAgICAgICBuZXdWYWx1ZSA9IHN0ZXBSYW5nZS5tYXhpbXVtKCk7CiAKLSAgICAg
ICAgICAgIGVsZW1lbnQoKS0+c2V0VmFsdWVBc051bWJlcihuZXdWYWx1ZSwgZWMsIG4gPT0gMSB8
fCBuID09IC0xID8gRGlzcGF0Y2hJbnB1dEFuZENoYW5nZUV2ZW50IDogRGlzcGF0Y2hOb0V2ZW50
KTsKLSAgICAgICAgICAgIGN1cnJlbnQgPSBuZXdWYWx1ZTsKKyAgICAgICAgICAgIGVsZW1lbnQo
KS0+c2V0VmFsdWVBc051bWJlcihwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZShuZXdWYWx1ZS50
b1N0cmluZygpKSwgZWMsIG4gPT0gMSB8fCBuID09IC0xID8gRGlzcGF0Y2hJbnB1dEFuZENoYW5n
ZUV2ZW50IDogRGlzcGF0Y2hOb0V2ZW50KTsKICAgICAgICAgICAgIGlmIChuID4gMSkKICAgICAg
ICAgICAgICAgICBhcHBseVN0ZXAobiAtIDEsIEFueUlzRGVmYXVsdFN0ZXAsIERpc3BhdGNoSW5w
dXRBbmRDaGFuZ2VFdmVudCwgZWMpOwogICAgICAgICAgICAgZWxzZSBpZiAobiA8IC0xKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSW5wdXRUeXBlLmgKaW5kZXggNTQxNjdmM2U0NTljOWFmM2Y0MWQzOWQ3YjFmOGIyMjQw
YWM2MDMwMi4uNTRmYTBhZjRjMzM4M2MzNDY3OGZiODU1ZmY4ZWI2N2E2YTRmOGYzNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0lucHV0VHlwZS5oCkBAIC0xNTUsMTIgKzE1NSwxMiBAQCBwdWJsaWM6CiAgICAgYm9v
bCByYW5nZU92ZXJmbG93KGNvbnN0IFN0cmluZyYpIGNvbnN0OwogICAgIGJvb2wgaXNJblJhbmdl
KGNvbnN0IFN0cmluZyYpIGNvbnN0OwogICAgIGJvb2wgaXNPdXRPZlJhbmdlKGNvbnN0IFN0cmlu
ZyYpIGNvbnN0OwotICAgIHZpcnR1YWwgZG91YmxlIGRlZmF1bHRWYWx1ZUZvclN0ZXBVcCgpIGNv
bnN0OworICAgIHZpcnR1YWwgRGVjaW1hbCBkZWZhdWx0VmFsdWVGb3JTdGVwVXAoKSBjb25zdDsK
ICAgICBkb3VibGUgbWluaW11bSgpIGNvbnN0OwogICAgIGRvdWJsZSBtYXhpbXVtKCkgY29uc3Q7
CiAgICAgdmlydHVhbCBib29sIHNpemVTaG91bGRJbmNsdWRlRGVjb3JhdGlvbihpbnQgZGVmYXVs
dFNpemUsIGludCYgcHJlZmVycmVkU2l6ZSkgY29uc3Q7CiAgICAgYm9vbCBzdGVwTWlzbWF0Y2go
Y29uc3QgU3RyaW5nJikgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGdldEFsbG93ZWRWYWx1ZVN0
ZXAoZG91YmxlKikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGdldEFsbG93ZWRWYWx1ZVN0ZXAo
RGVjaW1hbCopIGNvbnN0OwogICAgIHZpcnR1YWwgU3RlcFJhbmdlIGNyZWF0ZVN0ZXBSYW5nZShB
bnlTdGVwSGFuZGxpbmcpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBzdGVwVXAoaW50LCBFeGNl
cHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIHN0ZXBVcEZyb21SZW5kZXJlcihpbnQpOwpA
QCAtMjU4LDE1ICsyNTgsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIGRlZmF1bHRU
b29sVGlwKCkgY29uc3Q7CiAKICAgICAvLyBQYXJzZXMgdGhlIHNwZWNpZmllZCBzdHJpbmcgZm9y
IHRoZSB0eXBlLCBhbmQgcmV0dXJuCi0gICAgLy8gdGhlIGRvdWJsZSB2YWx1ZSBmb3IgdGhlIHBh
cnNpbmcgcmVzdWx0IGlmIHRoZSBwYXJzaW5nCisgICAgLy8gdGhlIGRlY2ltYWwgdmFsdWUgZm9y
IHRoZSBwYXJzaW5nIHJlc3VsdCBpZiB0aGUgcGFyc2luZwogICAgIC8vIHN1Y2NlZWRzOyBSZXR1
cm5zIGRlZmF1bHRWYWx1ZSBvdGhlcndpc2UuIFRoaXMgZnVuY3Rpb24gY2FuCiAgICAgLy8gcmV0
dXJuIE5hTiBvciBJbmZpbml0eSBvbmx5IGlmIGRlZmF1bHRWYWx1ZSBpcyBOYU4gb3IgSW5maW5p
dHkuCi0gICAgdmlydHVhbCBkb3VibGUgcGFyc2VUb0RvdWJsZShjb25zdCBTdHJpbmcmLCBkb3Vi
bGUgZGVmYXVsdFZhbHVlKSBjb25zdDsKLQotICAgIC8vIFBhcnNlcyB0aGUgc3BlY2lmaWVkIHN0
cmluZyBmb3IgdGhlIHR5cGUgYXMgcGFyc2VUb0RvdWJsZSgpIGRvZXMuCi0gICAgLy8gSW4gYWRk
aXRpb24sIGl0IHN0b3JlcyB0aGUgbnVtYmVyIG9mIGRpZ2l0cyBhZnRlciB0aGUgZGVjaW1hbCBw
b2ludAotICAgIC8vIGludG8gKmRlY2ltYWxQbGFjZXMuCi0gICAgdmlydHVhbCBkb3VibGUgcGFy
c2VUb0RvdWJsZVdpdGhEZWNpbWFsUGxhY2VzKGNvbnN0IFN0cmluZyYsIGRvdWJsZSBkZWZhdWx0
VmFsdWUsIHVuc2lnbmVkKiBkZWNpbWFsUGxhY2VzKSBjb25zdDsKKyAgICB2aXJ0dWFsIERlY2lt
YWwgcGFyc2VUb0RlY2ltYWwoY29uc3QgU3RyaW5nJiwgY29uc3QgRGVjaW1hbCYgZGVmYXVsdFZh
bHVlKSBjb25zdDsKIAogICAgIC8vIFBhcnNlcyB0aGUgc3BlY2lmaWVkIHN0cmluZyBmb3IgdGhp
cyBJbnB1dFR5cGUsIGFuZCByZXR1cm5zIHRydWUgaWYgaXQKICAgICAvLyBpcyBzdWNjZXNzZnVs
bHkgcGFyc2VkLiBBbiBpbnN0YW5jZSBwb2ludGVkIGJ5IHRoZSBEYXRlQ29tcG9uZW50cyoKQEAg
LTI3Nyw3ICsyNzIsNyBAQCBwdWJsaWM6CiAgICAgLy8gQ3JlYXRlIGEgc3RyaW5nIHJlcHJlc2Vu
dGF0aW9uIG9mIHRoZSBzcGVjaWZpZWQgZG91YmxlIHZhbHVlIGZvciB0aGUKICAgICAvLyBpbnB1
dCB0eXBlLiBJZiBOYU4gb3IgSW5maW5pdHkgaXMgc3BlY2lmaWVkLCB0aGlzIHJldHVybnMgYW4g
ZW1wdHkKICAgICAvLyBzdHJpbmcuIFRoaXMgc2hvdWxkIG5vdCBiZSBjYWxsZWQgZm9yIHR5cGVz
IHdpdGhvdXQgdmFsdWVBc051bWJlci4KLSAgICB2aXJ0dWFsIFN0cmluZyBzZXJpYWxpemUoZG91
YmxlKSBjb25zdDsKKyAgICB2aXJ0dWFsIFN0cmluZyBzZXJpYWxpemUoY29uc3QgRGVjaW1hbCYp
IGNvbnN0OwogCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzSW5kZXRlcm1pbmF0ZUFwcGVhcmFu
Y2UoKSBjb25zdDsKIApAQCAtMjkxLDEwICsyODYsMTEgQEAgcHJvdGVjdGVkOgogICAgIEhUTUxJ
bnB1dEVsZW1lbnQqIGVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnQ7IH0KICAgICB2
b2lkIGRpc3BhdGNoU2ltdWxhdGVkQ2xpY2tJZkFjdGl2ZShLZXlib2FyZEV2ZW50KikgY29uc3Q7
CiAgICAgQ2hyb21lKiBjaHJvbWUoKSBjb25zdDsKKyAgICBEZWNpbWFsIHBhcnNlVG9EZWNpbWFs
KGNvbnN0IFN0cmluZyYpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIC8vIEhlbHBlciBmb3Igc3Rl
cFVwKCkvc3RlcERvd24oKS4gQWRkcyBzdGVwIHZhbHVlICogY291bnQgdG8gdGhlIGN1cnJlbnQg
dmFsdWUuCi0gICAgdm9pZCBhcHBseVN0ZXAoZG91YmxlIGNvdW50LCBBbnlTdGVwSGFuZGxpbmcs
IFRleHRGaWVsZEV2ZW50QmVoYXZpb3IsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIGFwcGx5
U3RlcChpbnQgY291bnQsIEFueVN0ZXBIYW5kbGluZywgVGV4dEZpZWxkRXZlbnRCZWhhdmlvciwg
RXhjZXB0aW9uQ29kZSYpOwogCiAgICAgLy8gUmF3IHBvaW50ZXIgYmVjYXVzZSB0aGUgSFRNTElu
cHV0RWxlbWVudCBvYmplY3Qgb3ducyB0aGlzIElucHV0VHlwZSBvYmplY3QuCiAgICAgSFRNTElu
cHV0RWxlbWVudCogbV9lbGVtZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9O
dW1iZXJJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9OdW1iZXJJbnB1dFR5cGUu
Y3BwCmluZGV4IDk0MWQyNTJkNGMyZGEyMGUyZmIwMGI1ZDhhOGE2OWJmMjk5ZjViZTAuLmY4ZjY0
NzViMmQ0OTVlYjZlMDU2MGEwNDBiY2U5MDU2NDYwMTViOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvTnVtYmVySW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L051bWJlcklucHV0VHlwZS5jcHAKQEAgLTUwLDIzICs1MCwyOCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAot
c3RhdGljIGNvbnN0IGRvdWJsZSBudW1iZXJEZWZhdWx0U3RlcCA9IDEuMDsKLXN0YXRpYyBjb25z
dCBkb3VibGUgbnVtYmVyRGVmYXVsdFN0ZXBCYXNlID0gMC4wOwotc3RhdGljIGNvbnN0IGRvdWJs
ZSBudW1iZXJTdGVwU2NhbGVGYWN0b3IgPSAxLjA7CitzdGF0aWMgY29uc3QgaW50IG51bWJlckRl
ZmF1bHRTdGVwID0gMTsKK3N0YXRpYyBjb25zdCBpbnQgbnVtYmVyRGVmYXVsdFN0ZXBCYXNlID0g
MDsKK3N0YXRpYyBjb25zdCBpbnQgbnVtYmVyU3RlcFNjYWxlRmFjdG9yID0gMTsKIAotc3RhdGlj
IHVuc2lnbmVkIGxlbmd0aEJlZm9yZURlY2ltYWxQb2ludChkb3VibGUgdmFsdWUpCitzdGF0aWMg
dW5zaWduZWQgY2FsY3VsYXRlUmVuZGVyU2l6ZShjb25zdCBEZWNpbWFsJiB2YWx1ZSkKIHsKLSAg
ICAvLyBJZiB2YWx1ZSBpcyBuZWdhdGl2ZSwgJy0nIHNob3VsZCBiZSBjb3VudGVkLgotCi0gICAg
ZG91YmxlIGFic29sdXRlVmFsdWUgPSBmYWJzKHZhbHVlKTsKLSAgICBpZiAoYWJzb2x1dGVWYWx1
ZSA8IDEpCi0gICAgICAgIHJldHVybiB2YWx1ZSA8IDAgPyAyIDogMTsKLQotICAgIHVuc2lnbmVk
IGxlbmd0aCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihsb2cxMChmbG9vcihhYnNvbHV0ZVZhbHVl
KSkpICsgMTsKLSAgICBpZiAodmFsdWUgPCAwKQotICAgICAgICBsZW5ndGggKz0gMTsKKyAgICBB
U1NFUlQodmFsdWUuaXNGaW5pdGUoKSk7CisgICAgY29uc3QgdW5zaWduZWQgZGlnaXRzU2l6ZSA9
IFN0cmluZzo6bnVtYmVyKHZhbHVlLnZhbHVlKCkuY29lZmZpY2llbnQoKSkubGVuZ3RoKCk7Cisg
ICAgY29uc3QgdW5zaWduZWQgc2lnblNpemUgPSB2YWx1ZS5pc01pbnVzKCkgPyAxIDogMDsKKyAg
ICBpZiAoIXZhbHVlLmV4cG9uZW50KCkpCisgICAgICAgIHJldHVybiBzaWduU2l6ZSArIGRpZ2l0
c1NpemU7CisgICAgY29uc3QgaW50IGFkanVzdGVkRXhwb25lbnQgPSB2YWx1ZS5leHBvbmVudCgp
ICsgZGlnaXRzU2l6ZSAtIDE7CisgICAgaWYgKGFkanVzdGVkRXhwb25lbnQgPj0gMCkgeworICAg
ICAgICAvLyBJbiBjYXNlIG9mICIxMjMuNDU2IgorICAgICAgICBjb25zdCB1bnNpZ25lZCBkb3RT
aXplID0gMTsKKyAgICAgICAgcmV0dXJuIHNpZ25TaXplICsgZGlnaXRzU2l6ZSArIGRvdFNpemU7
CisgICAgfQogCi0gICAgcmV0dXJuIGxlbmd0aDsKKyAgICAvLyBJbiBjYXNlIG9mICIwLjAwMDEy
MzQ1IgorICAgIGNvbnN0IHVuc2lnbmVkIGxlYWRpbmdaZXJvQW5kRG90ID0gMjsKKyAgICBjb25z
dCB1bnNpZ25lZCBudW1iZXJPZlplcm9BZnRlckRvdCA9IC1hZGp1c3RlZEV4cG9uZW50IC0gMTsK
KyAgICByZXR1cm4gc2lnblNpemUgKyBsZWFkaW5nWmVyb0FuZERvdCArIG51bWJlck9mWmVyb0Fm
dGVyRG90ICsgZGlnaXRzU2l6ZTsKIH0KIAogUGFzc093blB0cjxJbnB1dFR5cGU+IE51bWJlcklu
cHV0VHlwZTo6Y3JlYXRlKEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQpCkBAIC04MSw3ICs4Niw3
IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgTnVtYmVySW5wdXRUeXBlOjpmb3JtQ29udHJvbFR5cGUo
KSBjb25zdAogCiBkb3VibGUgTnVtYmVySW5wdXRUeXBlOjp2YWx1ZUFzTnVtYmVyKCkgY29uc3QK
IHsKLSAgICByZXR1cm4gcGFyc2VUb0RvdWJsZShlbGVtZW50KCktPnZhbHVlKCksIG51bWVyaWNf
bGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpKTsKKyAgICByZXR1cm4gcGFyc2VUb0RvdWJsZUZv
ck51bWJlclR5cGUoZWxlbWVudCgpLT52YWx1ZSgpKTsKIH0KIAogdm9pZCBOdW1iZXJJbnB1dFR5
cGU6OnNldFZhbHVlQXNOdW1iZXIoZG91YmxlIG5ld1ZhbHVlLCBUZXh0RmllbGRFdmVudEJlaGF2
aW9yIGV2ZW50QmVoYXZpb3IsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdApAQCAtOTQsNyArOTks
NyBAQCB2b2lkIE51bWJlcklucHV0VHlwZTo6c2V0VmFsdWVBc051bWJlcihkb3VibGUgbmV3VmFs
dWUsIFRleHRGaWVsZEV2ZW50QmVoYXZpb3IgZQogICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVf
RVJSOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGVsZW1lbnQoKS0+c2V0VmFsdWUoc2Vy
aWFsaXplKG5ld1ZhbHVlKSwgZXZlbnRCZWhhdmlvcik7CisgICAgZWxlbWVudCgpLT5zZXRWYWx1
ZShzZXJpYWxpemVGb3JOdW1iZXJUeXBlKG5ld1ZhbHVlKSwgZXZlbnRCZWhhdmlvcik7CiB9CiAK
IGJvb2wgTnVtYmVySW5wdXRUeXBlOjp0eXBlTWlzbWF0Y2hGb3IoY29uc3QgU3RyaW5nJiB2YWx1
ZSkgY29uc3QKQEAgLTExMSwxNCArMTE2LDExIEBAIGJvb2wgTnVtYmVySW5wdXRUeXBlOjp0eXBl
TWlzbWF0Y2goKSBjb25zdAogU3RlcFJhbmdlIE51bWJlcklucHV0VHlwZTo6Y3JlYXRlU3RlcFJh
bmdlKEFueVN0ZXBIYW5kbGluZyBhbnlTdGVwSGFuZGxpbmcpIGNvbnN0CiB7CiAgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChjb25zdCBTdGVwUmFuZ2U6OlN0ZXBEZXNjcmlwdGlvbiwgc3RlcERlc2Ny
aXB0aW9uLCAobnVtYmVyRGVmYXVsdFN0ZXAsIG51bWJlckRlZmF1bHRTdGVwQmFzZSwgbnVtYmVy
U3RlcFNjYWxlRmFjdG9yKSk7Ci0KLSAgICB1bnNpZ25lZCBzdGVwQmFzZURlY2ltYWxQbGFjZXM7
Ci0gICAgZG91YmxlIHN0ZXBCYXNlVmFsdWUgPSBwYXJzZVRvRG91YmxlV2l0aERlY2ltYWxQbGFj
ZXMoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpLCBudW1iZXJEZWZhdWx0U3Rl
cEJhc2UsICZzdGVwQmFzZURlY2ltYWxQbGFjZXMpOwotICAgIFN0ZXBSYW5nZTo6RG91YmxlV2l0
aERlY2ltYWxQbGFjZXMgc3RlcEJhc2Uoc3RlcEJhc2VWYWx1ZSwgbWluKHN0ZXBCYXNlRGVjaW1h
bFBsYWNlcywgMTZ1KSk7Ci0gICAgZG91YmxlIG1pbmltdW0gPSBwYXJzZVRvRG91YmxlKGVsZW1l
bnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShtaW5BdHRyKSwgLW51bWVyaWNfbGltaXRzPGZsb2F0Pjo6
bWF4KCkpOwotICAgIGRvdWJsZSBtYXhpbXVtID0gcGFyc2VUb0RvdWJsZShlbGVtZW50KCktPmZh
c3RHZXRBdHRyaWJ1dGUobWF4QXR0ciksIG51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4KCkpOwot
Ci0gICAgU3RlcFJhbmdlOjpEb3VibGVXaXRoRGVjaW1hbFBsYWNlc09yTWlzc2luZyBzdGVwID0g
U3RlcFJhbmdlOjpwYXJzZVN0ZXAoYW55U3RlcEhhbmRsaW5nLCBzdGVwRGVzY3JpcHRpb24sIGVs
ZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShzdGVwQXR0cikpOworICAgIGNvbnN0IERlY2ltYWwg
ZmxvYXRNYXggPSBwYXJzZVRvRGVjaW1hbEZvck51bWJlclR5cGUoc2VyaWFsaXplRm9yTnVtYmVy
VHlwZShudW1lcmljX2xpbWl0czxmbG9hdD46Om1heCgpKSk7CisgICAgY29uc3QgRGVjaW1hbCBz
dGVwQmFzZSA9IHBhcnNlVG9EZWNpbWFsRm9yTnVtYmVyVHlwZShlbGVtZW50KCktPmZhc3RHZXRB
dHRyaWJ1dGUobWluQXR0ciksIG51bWJlckRlZmF1bHRTdGVwQmFzZSk7CisgICAgY29uc3QgRGVj
aW1hbCBtaW5pbXVtID0gcGFyc2VUb0RlY2ltYWxGb3JOdW1iZXJUeXBlKGVsZW1lbnQoKS0+ZmFz
dEdldEF0dHJpYnV0ZShtaW5BdHRyKSwgLWZsb2F0TWF4KTsKKyAgICBjb25zdCBEZWNpbWFsIG1h
eGltdW0gPSBwYXJzZVRvRGVjaW1hbEZvck51bWJlclR5cGUoZWxlbWVudCgpLT5mYXN0R2V0QXR0
cmlidXRlKG1heEF0dHIpLCBmbG9hdE1heCk7CisgICAgY29uc3QgU3RlcFJhbmdlOjpEZWNpbWFs
T3JNaXNzaW5nIHN0ZXAgPSBTdGVwUmFuZ2U6OnBhcnNlU3RlcChhbnlTdGVwSGFuZGxpbmcsIHN0
ZXBEZXNjcmlwdGlvbiwgZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKHN0ZXBBdHRyKSk7CiAg
ICAgcmV0dXJuIFN0ZXBSYW5nZShzdGVwQmFzZSwgbWluaW11bSwgbWF4aW11bSwgc3RlcCwgc3Rl
cERlc2NyaXB0aW9uKTsKIH0KIApAQCAtMTI2LDQ3ICsxMjgsMTkgQEAgYm9vbCBOdW1iZXJJbnB1
dFR5cGU6OnNpemVTaG91bGRJbmNsdWRlRGVjb3JhdGlvbihpbnQgZGVmYXVsdFNpemUsIGludCYg
cHJlZmVycmUKIHsKICAgICBwcmVmZXJyZWRTaXplID0gZGVmYXVsdFNpemU7CiAKLSAgICB1bnNp
Z25lZCBtaW5WYWx1ZURlY2ltYWxQbGFjZXM7Ci0gICAgU3RyaW5nIG1pblZhbHVlID0gZWxlbWVu
dCgpLT5mYXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpOwotICAgIGRvdWJsZSBtaW5WYWx1ZURvdWJs
ZSA9IHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlV2l0aERlY2ltYWxQbGFjZXMobWluVmFsdWUs
ICZtaW5WYWx1ZURlY2ltYWxQbGFjZXMpOwotICAgIGlmICghaXNmaW5pdGUobWluVmFsdWVEb3Vi
bGUpKQorICAgIFN0cmluZyBzdGVwU3RyaW5nID0gZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRl
KHN0ZXBBdHRyKTsKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uoc3RlcFN0cmluZywgImFueSIp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICB1bnNpZ25lZCBtYXhWYWx1ZURlY2ltYWxQ
bGFjZXM7Ci0gICAgU3RyaW5nIG1heFZhbHVlID0gZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRl
KG1heEF0dHIpOwotICAgIGRvdWJsZSBtYXhWYWx1ZURvdWJsZSA9IHBhcnNlVG9Eb3VibGVGb3JO
dW1iZXJUeXBlV2l0aERlY2ltYWxQbGFjZXMobWF4VmFsdWUsICZtYXhWYWx1ZURlY2ltYWxQbGFj
ZXMpOwotICAgIGlmICghaXNmaW5pdGUobWF4VmFsdWVEb3VibGUpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICBpZiAobWF4VmFsdWVEb3VibGUgPCBtaW5WYWx1ZURvdWJsZSkgewotICAg
ICAgICBtYXhWYWx1ZURvdWJsZSA9IG1pblZhbHVlRG91YmxlOwotICAgICAgICBtYXhWYWx1ZURl
Y2ltYWxQbGFjZXMgPSBtaW5WYWx1ZURlY2ltYWxQbGFjZXM7Ci0gICAgfQotCi0gICAgU3RyaW5n
IHN0ZXBWYWx1ZSA9IGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShzdGVwQXR0cik7Ci0gICAg
aWYgKGVxdWFsSWdub3JpbmdDYXNlKHN0ZXBWYWx1ZSwgImFueSIpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgdW5zaWduZWQgc3RlcFZhbHVlRGVjaW1hbFBsYWNlczsKLSAgICBkb3VibGUg
c3RlcFZhbHVlRG91YmxlID0gcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGVXaXRoRGVjaW1hbFBs
YWNlcyhzdGVwVmFsdWUsICZzdGVwVmFsdWVEZWNpbWFsUGxhY2VzKTsKLSAgICBpZiAoIWlzZmlu
aXRlKHN0ZXBWYWx1ZURvdWJsZSkpIHsKLSAgICAgICAgc3RlcFZhbHVlRG91YmxlID0gMTsKLSAg
ICAgICAgc3RlcFZhbHVlRGVjaW1hbFBsYWNlcyA9IDA7CisgICAgY29uc3QgRGVjaW1hbCBtaW5p
bXVtID0gcGFyc2VUb0RlY2ltYWxGb3JOdW1iZXJUeXBlKGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJp
YnV0ZShtaW5BdHRyKSk7CisgICAgY29uc3QgRGVjaW1hbCBtYXhpbXVtID0gcGFyc2VUb0RlY2lt
YWxGb3JOdW1iZXJUeXBlKGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShtYXhBdHRyKSk7Cisg
ICAgY29uc3QgRGVjaW1hbCBzdGVwID0gcGFyc2VUb0RlY2ltYWxGb3JOdW1iZXJUeXBlKHN0ZXBT
dHJpbmcsIDEpOworICAgIGlmIChtaW5pbXVtLmlzRmluaXRlKCkgJiYgbWF4aW11bS5pc0Zpbml0
ZSgpICYmIHN0ZXAuaXNGaW5pdGUoKSkgeworICAgICAgICBwcmVmZXJyZWRTaXplID0gbWF4KG1h
eChjYWxjdWxhdGVSZW5kZXJTaXplKG1pbmltdW0pLCBjYWxjdWxhdGVSZW5kZXJTaXplKG1heGlt
dW0pKSwgY2FsY3VsYXRlUmVuZGVyU2l6ZShzdGVwKSk7CisgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KIAotICAgIHVuc2lnbmVkIGxlbmd0aCA9IGxlbmd0aEJlZm9yZURlY2ltYWxQb2ludCht
aW5WYWx1ZURvdWJsZSk7Ci0gICAgbGVuZ3RoID0gbWF4KGxlbmd0aCwgbGVuZ3RoQmVmb3JlRGVj
aW1hbFBvaW50KG1heFZhbHVlRG91YmxlKSk7Ci0gICAgbGVuZ3RoID0gbWF4KGxlbmd0aCwgbGVu
Z3RoQmVmb3JlRGVjaW1hbFBvaW50KHN0ZXBWYWx1ZURvdWJsZSkpOwotCi0gICAgdW5zaWduZWQg
bGVuZ3RoQWZ0ZXJEZWNpbWFsUG9pbnQgPSBtaW5WYWx1ZURlY2ltYWxQbGFjZXM7Ci0gICAgbGVu
Z3RoQWZ0ZXJEZWNpbWFsUG9pbnQgPSBtYXgobGVuZ3RoQWZ0ZXJEZWNpbWFsUG9pbnQsIG1heFZh
bHVlRGVjaW1hbFBsYWNlcyk7Ci0gICAgbGVuZ3RoQWZ0ZXJEZWNpbWFsUG9pbnQgPSBtYXgobGVu
Z3RoQWZ0ZXJEZWNpbWFsUG9pbnQsIHN0ZXBWYWx1ZURlY2ltYWxQbGFjZXMpOwotCi0gICAgLy8g
Jy4nIHNob3VsZCBiZSBjb3VudGVkIGlmIHRoZSB2YWx1ZSBoYXMgZGVjaW1hbCBwbGFjZXMuCi0g
ICAgaWYgKGxlbmd0aEFmdGVyRGVjaW1hbFBvaW50ID4gMCkKLSAgICAgICAgbGVuZ3RoICs9IGxl
bmd0aEFmdGVyRGVjaW1hbFBvaW50ICsgMTsKLQotICAgIHByZWZlcnJlZFNpemUgPSBsZW5ndGg7
Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiBib29sIE51bWJlcklu
cHV0VHlwZTo6aXNTdGVwcGFibGUoKSBjb25zdApAQCAtMTg2LDIxICsxNjAsMTQgQEAgdm9pZCBO
dW1iZXJJbnB1dFR5cGU6OmhhbmRsZVdoZWVsRXZlbnQoV2hlZWxFdmVudCogZXZlbnQpCiAgICAg
aGFuZGxlV2hlZWxFdmVudEZvclNwaW5CdXR0b24oZXZlbnQpOwogfQogCi1kb3VibGUgTnVtYmVy
SW5wdXRUeXBlOjpwYXJzZVRvRG91YmxlKGNvbnN0IFN0cmluZyYgc3JjLCBkb3VibGUgZGVmYXVs
dFZhbHVlKSBjb25zdAotewotICAgIHJldHVybiBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZShz
cmMsIGRlZmF1bHRWYWx1ZSk7Ci19Ci0KLWRvdWJsZSBOdW1iZXJJbnB1dFR5cGU6OnBhcnNlVG9E
b3VibGVXaXRoRGVjaW1hbFBsYWNlcyhjb25zdCBTdHJpbmcmIHNyYywgZG91YmxlIGRlZmF1bHRW
YWx1ZSwgdW5zaWduZWQgKmRlY2ltYWxQbGFjZXMpIGNvbnN0CitEZWNpbWFsIE51bWJlcklucHV0
VHlwZTo6cGFyc2VUb0RlY2ltYWwoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNvbnN0IERlY2ltYWwm
IGRlZmF1bHRWYWx1ZSkgY29uc3QKIHsKLSAgICByZXR1cm4gcGFyc2VUb0RvdWJsZUZvck51bWJl
clR5cGVXaXRoRGVjaW1hbFBsYWNlcyhzcmMsIGRlY2ltYWxQbGFjZXMsIGRlZmF1bHRWYWx1ZSk7
CisgICAgcmV0dXJuIHBhcnNlVG9EZWNpbWFsRm9yTnVtYmVyVHlwZShzdHJpbmcsIGRlZmF1bHRW
YWx1ZSk7CiB9CiAKLVN0cmluZyBOdW1iZXJJbnB1dFR5cGU6OnNlcmlhbGl6ZShkb3VibGUgdmFs
dWUpIGNvbnN0CitTdHJpbmcgTnVtYmVySW5wdXRUeXBlOjpzZXJpYWxpemUoY29uc3QgRGVjaW1h
bCYgdmFsdWUpIGNvbnN0CiB7Ci0gICAgaWYgKCFpc2Zpbml0ZSh2YWx1ZSkpCi0gICAgICAgIHJl
dHVybiBTdHJpbmcoKTsKLSAgICByZXR1cm4gc2VyaWFsaXplRm9yTnVtYmVyVHlwZSh2YWx1ZSk7
CisgICAgcmV0dXJuIHZhbHVlLmlzRmluaXRlKCkgPyBzZXJpYWxpemVGb3JOdW1iZXJUeXBlKHZh
bHVlKSA6IGVtcHR5U3RyaW5nKCk7CiB9CiAKIHZvaWQgTnVtYmVySW5wdXRUeXBlOjpoYW5kbGVC
bHVyRXZlbnQoKQpAQCAtMjI2LDEzICsxOTMsNyBAQCBTdHJpbmcgTnVtYmVySW5wdXRUeXBlOjp2
aXNpYmxlVmFsdWUoKSBjb25zdAogICAgIC8vIFdlIGRvbid0IGxvY2FsaXplIHNjaWVudGlmaWMg
bm90YXRpb25zLgogICAgIGlmIChjdXJyZW50VmFsdWUuZmluZChpc0UpICE9IG5vdEZvdW5kKQog
ICAgICAgICByZXR1cm4gY3VycmVudFZhbHVlOwotICAgIC8vIEZJWE1FOiBUaGUgZm9sbG93aW5n
IHRocmVlIGxpbmVzIHNob3VsZCBiZSByZW1vdmVkIHdoZW4gd2UKLSAgICAvLyByZW1vdmUgdGhl
IHNlY29uZCBhcmd1bWVudCBvZiBjb252ZXJ0VG9Mb2NhbGl6ZWROdW1iZXIoKS4KLSAgICAvLyBO
b3RlOiBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZVdpdGhEZWNpbWFsUGxhY2VzIHNldCB6ZXJv
IHRvIGRlY2ltYWxQbGFjZXMKLSAgICAvLyBpZiBjdXJyZW50VmFsdWUgaXNuJ3QgdmFsaWQgZmxv
YXRpbmcgcG9pbnRlciBudW1iZXIuCi0gICAgdW5zaWduZWQgZGVjaW1hbFBsYWNlOwotICAgIHBh
cnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlV2l0aERlY2ltYWxQbGFjZXMoY3VycmVudFZhbHVlLCAm
ZGVjaW1hbFBsYWNlKTsKLSAgICByZXR1cm4gY29udmVydFRvTG9jYWxpemVkTnVtYmVyKGN1cnJl
bnRWYWx1ZSwgZGVjaW1hbFBsYWNlKTsKKyAgICByZXR1cm4gY29udmVydFRvTG9jYWxpemVkTnVt
YmVyKGN1cnJlbnRWYWx1ZSwgMCk7CiB9CiAKIFN0cmluZyBOdW1iZXJJbnB1dFR5cGU6OmNvbnZl
cnRGcm9tVmlzaWJsZVZhbHVlKGNvbnN0IFN0cmluZyYgdmlzaWJsZVZhbHVlKSBjb25zdApAQCAt
MjQ4LDcgKzIwOSw3IEBAIFN0cmluZyBOdW1iZXJJbnB1dFR5cGU6OmNvbnZlcnRGcm9tVmlzaWJs
ZVZhbHVlKGNvbnN0IFN0cmluZyYgdmlzaWJsZVZhbHVlKSBjb25zCiBib29sIE51bWJlcklucHV0
VHlwZTo6aXNBY2NlcHRhYmxlVmFsdWUoY29uc3QgU3RyaW5nJiBwcm9wb3NlZFZhbHVlKQogewog
ICAgIFN0cmluZyBzdGFuZGFyZFZhbHVlID0gY29udmVydEZyb21WaXNpYmxlVmFsdWUocHJvcG9z
ZWRWYWx1ZSk7Ci0gICAgcmV0dXJuIHN0YW5kYXJkVmFsdWUuaXNFbXB0eSgpIHx8IHBhcnNlVG9E
b3VibGVGb3JOdW1iZXJUeXBlKHN0YW5kYXJkVmFsdWUsIDApOworICAgIHJldHVybiBzdGFuZGFy
ZFZhbHVlLmlzRW1wdHkoKSB8fCBpc2Zpbml0ZShwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZShz
dGFuZGFyZFZhbHVlKSk7CiB9CiAKIFN0cmluZyBOdW1iZXJJbnB1dFR5cGU6OnNhbml0aXplVmFs
dWUoY29uc3QgU3RyaW5nJiBwcm9wb3NlZFZhbHVlKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9OdW1iZXJJbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTnVt
YmVySW5wdXRUeXBlLmgKaW5kZXggMDFiZGRlZTQ4MTU3ZGVjYWM0OTMwOWI5NDY3NzE2MDMzYWYw
ZWY5Yi4uY2Y2OTA4MTIzN2I0MzBlOTgyOGM0MTEwYTY3ODU2YTMwYmIxMTU3OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9OdW1iZXJJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL051bWJlcklucHV0VHlwZS5oCkBAIC01MSw5ICs1MSw4IEBAIHByaXZhdGU6CiAg
ICAgdmlydHVhbCBTdGVwUmFuZ2UgY3JlYXRlU3RlcFJhbmdlKEFueVN0ZXBIYW5kbGluZykgY29u
c3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUtleWRvd25FdmVudChLZXlib2Fy
ZEV2ZW50KikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZVdoZWVsRXZlbnQoV2hl
ZWxFdmVudCopIE9WRVJSSURFOwotICAgIHZpcnR1YWwgZG91YmxlIHBhcnNlVG9Eb3VibGUoY29u
c3QgU3RyaW5nJiwgZG91YmxlKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGRvdWJsZSBw
YXJzZVRvRG91YmxlV2l0aERlY2ltYWxQbGFjZXMoY29uc3QgU3RyaW5nJiwgZG91YmxlLCB1bnNp
Z25lZCopIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgU3RyaW5nIHNlcmlhbGl6ZShkb3Vi
bGUpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgRGVjaW1hbCBwYXJzZVRvRGVjaW1hbChj
b25zdCBTdHJpbmcmLCBjb25zdCBEZWNpbWFsJikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVh
bCBTdHJpbmcgc2VyaWFsaXplKGNvbnN0IERlY2ltYWwmKSBjb25zdCBPVkVSUklERTsKICAgICB2
aXJ0dWFsIHZvaWQgaGFuZGxlQmx1ckV2ZW50KCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBTdHJp
bmcgdmlzaWJsZVZhbHVlKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBTdHJpbmcgY29u
dmVydEZyb21WaXNpYmxlVmFsdWUoY29uc3QgU3RyaW5nJikgY29uc3QgT1ZFUlJJREU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwCmluZGV4IGI0MTdkYzMyMDNiODQ3YWQ1YzZj
YTI1ZGE1MWZkOWM3ZDQ2MDVjY2IuLmZjMmJkZjFmZjFkYTg5MTlkZjg0YjczZDNjNjJhNWE0ZDZh
M2ViZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwCkBAIC01NCwxMSAr
NTQsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsK
IHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKLXN0YXRpYyBjb25zdCBkb3VibGUgcmFuZ2VEZWZhdWx0
TWluaW11bSA9IDAuMDsKLXN0YXRpYyBjb25zdCBkb3VibGUgcmFuZ2VEZWZhdWx0TWF4aW11bSA9
IDEwMC4wOwotc3RhdGljIGNvbnN0IGRvdWJsZSByYW5nZURlZmF1bHRTdGVwID0gMS4wOwotc3Rh
dGljIGNvbnN0IGRvdWJsZSByYW5nZURlZmF1bHRTdGVwQmFzZSA9IDAuMDsKLXN0YXRpYyBjb25z
dCBkb3VibGUgcmFuZ2VTdGVwU2NhbGVGYWN0b3IgPSAxLjA7CitzdGF0aWMgY29uc3QgaW50IHJh
bmdlRGVmYXVsdE1pbmltdW0gPSAwOworc3RhdGljIGNvbnN0IGludCByYW5nZURlZmF1bHRNYXhp
bXVtID0gMTAwOworc3RhdGljIGNvbnN0IGludCByYW5nZURlZmF1bHRTdGVwID0gMTsKK3N0YXRp
YyBjb25zdCBpbnQgcmFuZ2VEZWZhdWx0U3RlcEJhc2UgPSAwOworc3RhdGljIGNvbnN0IGludCBy
YW5nZVN0ZXBTY2FsZUZhY3RvciA9IDE7CiAKIFBhc3NPd25QdHI8SW5wdXRUeXBlPiBSYW5nZUlu
cHV0VHlwZTo6Y3JlYXRlKEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQpCiB7CkBAIC03NywxMiAr
NzcsMTIgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBSYW5nZUlucHV0VHlwZTo6Zm9ybUNvbnRyb2xU
eXBlKCkgY29uc3QKIAogZG91YmxlIFJhbmdlSW5wdXRUeXBlOjp2YWx1ZUFzTnVtYmVyKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gcGFyc2VUb0RvdWJsZShlbGVtZW50KCktPnZhbHVlKCksIG51bWVy
aWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpKTsKKyAgICByZXR1cm4gcGFyc2VUb0RvdWJs
ZUZvck51bWJlclR5cGUoZWxlbWVudCgpLT52YWx1ZSgpKTsKIH0KIAogdm9pZCBSYW5nZUlucHV0
VHlwZTo6c2V0VmFsdWVBc051bWJlcihkb3VibGUgbmV3VmFsdWUsIFRleHRGaWVsZEV2ZW50QmVo
YXZpb3IgZXZlbnRCZWhhdmlvciwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0CiB7Ci0gICAgZWxlbWVu
dCgpLT5zZXRWYWx1ZShzZXJpYWxpemUobmV3VmFsdWUpLCBldmVudEJlaGF2aW9yKTsKKyAgICBl
bGVtZW50KCktPnNldFZhbHVlKHNlcmlhbGl6ZUZvck51bWJlclR5cGUobmV3VmFsdWUpLCBldmVu
dEJlaGF2aW9yKTsKIH0KIAogYm9vbCBSYW5nZUlucHV0VHlwZTo6c3VwcG9ydHNSZXF1aXJlZCgp
IGNvbnN0CkBAIC05NCwxOCArOTQsMTYgQEAgU3RlcFJhbmdlIFJhbmdlSW5wdXRUeXBlOjpjcmVh
dGVTdGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5nIGFueVN0ZXBIYW5kbGluZykgY29uc3QKIHsKICAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0ZXBSYW5nZTo6U3RlcERlc2NyaXB0aW9uLCBz
dGVwRGVzY3JpcHRpb24sIChyYW5nZURlZmF1bHRTdGVwLCByYW5nZURlZmF1bHRTdGVwQmFzZSwg
cmFuZ2VTdGVwU2NhbGVGYWN0b3IpKTsKIAotICAgIGRvdWJsZSBtaW5pbXVtID0gcGFyc2VUb0Rv
dWJsZShlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUobWluQXR0ciksIHJhbmdlRGVmYXVsdE1p
bmltdW0pOwotICAgIGRvdWJsZSBtYXhpbXVtID0gcGFyc2VUb0RvdWJsZShlbGVtZW50KCktPmZh
c3RHZXRBdHRyaWJ1dGUobWF4QXR0ciksIHJhbmdlRGVmYXVsdE1heGltdW0pOwotICAgIGlmICht
YXhpbXVtIDwgbWluaW11bSkKLSAgICAgICAgbWF4aW11bSA9IG1heChtaW5pbXVtLCByYW5nZURl
ZmF1bHRNYXhpbXVtKTsKKyAgICBjb25zdCBEZWNpbWFsIG1pbmltdW0gPSBwYXJzZVRvRGVjaW1h
bChlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUobWluQXR0ciksIHJhbmdlRGVmYXVsdE1pbmlt
dW0pOworICAgIGNvbnN0IERlY2ltYWwgbWF4aW11bSA9IFN0ZXBSYW5nZTo6ZW5zdXJlTWF4aW11
bShwYXJzZVRvRGVjaW1hbChlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUobWF4QXR0ciksIHJh
bmdlRGVmYXVsdE1heGltdW0pLCBtaW5pbXVtLCByYW5nZURlZmF1bHRNYXhpbXVtKTsKIAogICAg
IGNvbnN0IEF0b21pY1N0cmluZyYgcHJlY2lzaW9uVmFsdWUgPSBlbGVtZW50KCktPmZhc3RHZXRB
dHRyaWJ1dGUocHJlY2lzaW9uQXR0cik7CiAgICAgaWYgKCFwcmVjaXNpb25WYWx1ZS5pc051bGwo
KSkgewotICAgICAgICBTdGVwUmFuZ2U6OkRvdWJsZVdpdGhEZWNpbWFsUGxhY2VzT3JNaXNzaW5n
IHN0ZXAoMSwgIWVxdWFsSWdub3JpbmdDYXNlKHByZWNpc2lvblZhbHVlLCAiZmxvYXQiKSk7Cisg
ICAgICAgIFN0ZXBSYW5nZTo6RGVjaW1hbE9yTWlzc2luZyBzdGVwKDEsICFlcXVhbElnbm9yaW5n
Q2FzZShwcmVjaXNpb25WYWx1ZSwgImZsb2F0IikpOwogICAgICAgICByZXR1cm4gU3RlcFJhbmdl
KG1pbmltdW0sIG1pbmltdW0sIG1heGltdW0sIHN0ZXAsIHN0ZXBEZXNjcmlwdGlvbik7CiAgICAg
fQogCi0gICAgU3RlcFJhbmdlOjpEb3VibGVXaXRoRGVjaW1hbFBsYWNlc09yTWlzc2luZyBzdGVw
ID0gU3RlcFJhbmdlOjpwYXJzZVN0ZXAoYW55U3RlcEhhbmRsaW5nLCBzdGVwRGVzY3JpcHRpb24s
IGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShzdGVwQXR0cikpOworICAgIGNvbnN0IFN0ZXBS
YW5nZTo6RGVjaW1hbE9yTWlzc2luZyBzdGVwKFN0ZXBSYW5nZTo6cGFyc2VTdGVwKGFueVN0ZXBI
YW5kbGluZywgc3RlcERlc2NyaXB0aW9uLCBlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUoc3Rl
cEF0dHIpKSk7CiAgICAgcmV0dXJuIFN0ZXBSYW5nZShtaW5pbXVtLCBtaW5pbXVtLCBtYXhpbXVt
LCBzdGVwLCBzdGVwRGVzY3JpcHRpb24pOwogfQogCkBAIC0xMzgsMjUgKzEzNiwxNSBAQCB2b2lk
IFJhbmdlSW5wdXRUeXBlOjpoYW5kbGVLZXlkb3duRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZlbnQp
CiAKICAgICBjb25zdCBTdHJpbmcmIGtleSA9IGV2ZW50LT5rZXlJZGVudGlmaWVyKCk7CiAKLSAg
ICBkb3VibGUgY3VycmVudCA9IHBhcnNlVG9Eb3VibGUoZWxlbWVudCgpLT52YWx1ZSgpLCBudW1l
cmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKSk7Ci0gICAgQVNTRVJUKGlzZmluaXRlKGN1
cnJlbnQpKTsKKyAgICBjb25zdCBEZWNpbWFsIGN1cnJlbnQgPSBwYXJzZVRvRGVjaW1hbEZvck51
bWJlclR5cGUoZWxlbWVudCgpLT52YWx1ZSgpKTsKKyAgICBBU1NFUlQoY3VycmVudC5pc0Zpbml0
ZSgpKTsKIAotICAgIFN0ZXBSYW5nZSBzdGVwUmFuZ2UoY3JlYXRlU3RlcFJhbmdlKFJlamVjdEFu
eSkpOworICAgIGNvbnN0IFN0ZXBSYW5nZSBzdGVwUmFuZ2UoY3JlYXRlU3RlcFJhbmdlKFJlamVj
dEFueSkpOwogCi0gICAgZG91YmxlIHN0ZXAsIGJpZ1N0ZXA7Ci0gICAgaWYgKGVxdWFsSWdub3Jp
bmdDYXNlKGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShzdGVwQXR0ciksICJhbnkiKSkgewot
ICAgICAgICAvLyBGSVhNRTogV2UgY2FuJ3QgdXNlIHN0ZXBVcCgpIGZvciB0aGUgc3RlcCB2YWx1
ZSAiYW55Ii4gU28sIHdlIGluY3JlYXNlCi0gICAgICAgIC8vIG9yIGRlY3JlYXNlIHRoZSB2YWx1
ZSBieSAxLzEwMCBvZiB0aGUgdmFsdWUgcmFuZ2UuIElzIGl0IHJlYXNvbmFibGU/Ci0gICAgICAg
IHN0ZXAgPSAoc3RlcFJhbmdlLm1heGltdW0oKSAtIHN0ZXBSYW5nZS5taW5pbXVtKCkpIC8gMTAw
OwotICAgICAgICBiaWdTdGVwID0gc3RlcCAqIDEwOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlm
ICghZWxlbWVudCgpLT5nZXRBbGxvd2VkVmFsdWVTdGVwKCZzdGVwKSkKLSAgICAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotCi0gICAgICAgIGJpZ1N0ZXAgPSAoc3RlcFJhbmdlLm1heGlt
dW0oKSAtIHN0ZXBSYW5nZS5taW5pbXVtKCkpIC8gMTA7Ci0gICAgICAgIGlmIChiaWdTdGVwIDwg
c3RlcCkKLSAgICAgICAgICAgIGJpZ1N0ZXAgPSBzdGVwOwotICAgIH0KKyAgICAvLyBGSVhNRTog
V2UgY2FuJ3QgdXNlIHN0ZXBVcCgpIGZvciB0aGUgc3RlcCB2YWx1ZSAiYW55Ii4gU28sIHdlIGlu
Y3JlYXNlCisgICAgLy8gb3IgZGVjcmVhc2UgdGhlIHZhbHVlIGJ5IDEvMTAwIG9mIHRoZSB2YWx1
ZSByYW5nZS4gSXMgaXQgcmVhc29uYWJsZT8KKyAgICBjb25zdCBEZWNpbWFsIHN0ZXAgPSBlcXVh
bElnbm9yaW5nQ2FzZShlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUoc3RlcEF0dHIpLCAiYW55
IikgPyAoc3RlcFJhbmdlLm1heGltdW0oKSAtIHN0ZXBSYW5nZS5taW5pbXVtKCkpIC8gMTAwIDog
c3RlcFJhbmdlLnN0ZXAoKTsKKyAgICBjb25zdCBEZWNpbWFsIGJpZ1N0ZXAgPSBtYXgoKHN0ZXBS
YW5nZS5tYXhpbXVtKCkgLSBzdGVwUmFuZ2UubWluaW11bSgpKSAvIDEwLCBzdGVwKTsKIAogICAg
IGJvb2wgaXNWZXJ0aWNhbCA9IGZhbHNlOwogICAgIGlmIChlbGVtZW50KCktPnJlbmRlcmVyKCkp
IHsKQEAgLTE2NCw3ICsxNTIsNyBAQCB2b2lkIFJhbmdlSW5wdXRUeXBlOjpoYW5kbGVLZXlkb3du
RXZlbnQoS2V5Ym9hcmRFdmVudCogZXZlbnQpCiAgICAgICAgIGlzVmVydGljYWwgPSBwYXJ0ID09
IFNsaWRlclZlcnRpY2FsUGFydCB8fCBwYXJ0ID09IE1lZGlhVm9sdW1lU2xpZGVyUGFydDsKICAg
ICB9CiAKLSAgICBkb3VibGUgbmV3VmFsdWU7CisgICAgRGVjaW1hbCBuZXdWYWx1ZTsKICAgICBp
ZiAoa2V5ID09ICJVcCIpCiAgICAgICAgIG5ld1ZhbHVlID0gY3VycmVudCArIHN0ZXA7CiAgICAg
ZWxzZSBpZiAoa2V5ID09ICJEb3duIikKQEAgLTE4OSw3ICsxNzcsNyBAQCB2b2lkIFJhbmdlSW5w
dXRUeXBlOjpoYW5kbGVLZXlkb3duRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZlbnQpCiAgICAgaWYg
KG5ld1ZhbHVlICE9IGN1cnJlbnQpIHsKICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYzsKICAgICAg
ICAgVGV4dEZpZWxkRXZlbnRCZWhhdmlvciBldmVudEJlaGF2aW9yID0gRGlzcGF0Y2hDaGFuZ2VF
dmVudDsKLSAgICAgICAgc2V0VmFsdWVBc051bWJlcihuZXdWYWx1ZSwgZXZlbnRCZWhhdmlvciwg
ZWMpOworICAgICAgICBzZXRWYWx1ZUFzTnVtYmVyKHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBl
KG5ld1ZhbHVlLnRvU3RyaW5nKCkpLCBldmVudEJlaGF2aW9yLCBlYyk7CiAKICAgICAgICAgaWYg
KEFYT2JqZWN0Q2FjaGU6OmFjY2Vzc2liaWxpdHlFbmFibGVkKCkpCiAgICAgICAgICAgICBlbGVt
ZW50KCktPmRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUoKS0+cG9zdE5vdGlmaWNhdGlvbihlbGVt
ZW50KCktPnJlbmRlcmVyKCksIEFYT2JqZWN0Q2FjaGU6OkFYVmFsdWVDaGFuZ2VkLCB0cnVlKTsK
QEAgLTIxOSwxNiArMjA3LDE0IEBAIFJlbmRlck9iamVjdCogUmFuZ2VJbnB1dFR5cGU6OmNyZWF0
ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKSBjCiAgICAgcmV0dXJu
IG5ldyAoYXJlbmEpIFJlbmRlclNsaWRlcihlbGVtZW50KCkpOwogfQogCi1kb3VibGUgUmFuZ2VJ
bnB1dFR5cGU6OnBhcnNlVG9Eb3VibGUoY29uc3QgU3RyaW5nJiBzcmMsIGRvdWJsZSBkZWZhdWx0
VmFsdWUpIGNvbnN0CitEZWNpbWFsIFJhbmdlSW5wdXRUeXBlOjpwYXJzZVRvRGVjaW1hbChjb25z
dCBTdHJpbmcmIHNyYywgY29uc3QgRGVjaW1hbCYgZGVmYXVsdFZhbHVlKSBjb25zdAogewotICAg
IHJldHVybiBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZShzcmMsIGRlZmF1bHRWYWx1ZSk7Cisg
ICAgcmV0dXJuIHBhcnNlVG9EZWNpbWFsRm9yTnVtYmVyVHlwZShzcmMsIGRlZmF1bHRWYWx1ZSk7
CiB9CiAKLVN0cmluZyBSYW5nZUlucHV0VHlwZTo6c2VyaWFsaXplKGRvdWJsZSB2YWx1ZSkgY29u
c3QKK1N0cmluZyBSYW5nZUlucHV0VHlwZTo6c2VyaWFsaXplKGNvbnN0IERlY2ltYWwmIHZhbHVl
KSBjb25zdAogewotICAgIGlmICghaXNmaW5pdGUodmFsdWUpKQotICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7Ci0gICAgcmV0dXJuIHNlcmlhbGl6ZUZvck51bWJlclR5cGUodmFsdWUpOworICAgIHJl
dHVybiB2YWx1ZS5pc0Zpbml0ZSgpID8gc2VyaWFsaXplRm9yTnVtYmVyVHlwZSh2YWx1ZSkgOiBl
bXB0eVN0cmluZygpOwogfQogCiAvLyBGSVhNRTogQ291bGQgc2hhcmUgdGhpcyB3aXRoIEJhc2VD
bGlja2FibGVXaXRoS2V5SW5wdXRUeXBlIGFuZCBCYXNlQ2hlY2thYmxlSW5wdXRUeXBlIGlmIHdl
IGhhZCBhIGNvbW1vbiBiYXNlIGNsYXNzLgpAQCAtMjY4LDggKzI1NCw4IEBAIFN0cmluZyBSYW5n
ZUlucHV0VHlwZTo6ZmFsbGJhY2tWYWx1ZSgpIGNvbnN0CiAKIFN0cmluZyBSYW5nZUlucHV0VHlw
ZTo6c2FuaXRpemVWYWx1ZShjb25zdCBTdHJpbmcmIHByb3Bvc2VkVmFsdWUpIGNvbnN0CiB7Ci0g
ICAgU3RlcFJhbmdlIHN0ZXBSYW5nZShjcmVhdGVTdGVwUmFuZ2UoUmVqZWN0QW55KSk7Ci0gICAg
ZG91YmxlIHByb3Bvc2VkRG91YmxlVmFsdWUgPSBwYXJzZVRvRG91YmxlKHByb3Bvc2VkVmFsdWUs
IHN0ZXBSYW5nZS5kZWZhdWx0VmFsdWUoKSk7CisgICAgY29uc3QgU3RlcFJhbmdlIHN0ZXBSYW5n
ZShjcmVhdGVTdGVwUmFuZ2UoUmVqZWN0QW55KSk7CisgICAgY29uc3QgRGVjaW1hbCBwcm9wb3Nl
ZERvdWJsZVZhbHVlID0gcGFyc2VUb0RlY2ltYWwocHJvcG9zZWRWYWx1ZSwgc3RlcFJhbmdlLmRl
ZmF1bHRWYWx1ZSgpKTsKICAgICByZXR1cm4gc2VyaWFsaXplRm9yTnVtYmVyVHlwZShzdGVwUmFu
Z2UuY2xhbXBWYWx1ZShwcm9wb3NlZERvdWJsZVZhbHVlKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
UmFuZ2VJbnB1dFR5cGUuaAppbmRleCA0NWZiNGFmYTNhOTU0ZDM0Yzc4MTg1OTllMzFkYjUzNDg0
NzlkMWYzLi43Y2Q4N2E4YmI1N2MxY2U4YTIwNDVhY2UwN2M3ZWEyZjYzMThjZTRmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5oCkBAIC01NCw4ICs1NCw4IEBAIHByaXZhdGU6CiAg
ICAgdmlydHVhbCB2b2lkIGhhbmRsZUtleWRvd25FdmVudChLZXlib2FyZEV2ZW50KikgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5h
KiwgUmVuZGVyU3R5bGUqKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRl
U2hhZG93U3VidHJlZSgpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgZG91YmxlIHBhcnNlVG9Eb3Vi
bGUoY29uc3QgU3RyaW5nJiwgZG91YmxlKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIFN0
cmluZyBzZXJpYWxpemUoZG91YmxlKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIERlY2lt
YWwgcGFyc2VUb0RlY2ltYWwoY29uc3QgU3RyaW5nJiwgY29uc3QgRGVjaW1hbCYpIGNvbnN0IE9W
RVJSSURFOworICAgIHZpcnR1YWwgU3RyaW5nIHNlcmlhbGl6ZShjb25zdCBEZWNpbWFsJikgY29u
c3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGFjY2Vzc0tleUFjdGlvbihib29sIHNlbmRN
b3VzZUV2ZW50cykgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIG1pbk9yTWF4QXR0cmlidXRl
Q2hhbmdlZCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZShjb25zdCBTdHJp
bmcmLCBib29sIHZhbHVlQ2hhbmdlZCwgVGV4dEZpZWxkRXZlbnRCZWhhdmlvcikgT1ZFUlJJREU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1N0ZXBSYW5nZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL1N0ZXBSYW5nZS5jcHAKaW5kZXggOWI5YjdkY2M5NDljYzc1ZDU1MGIwODA3
YTkzYjc2MDQ1Nzg4N2E4OS4uMzI0ZWVkYjNlN2ZiOGQ2ZjYxZjkzMjdhMDlmZjU3MjVmOWQxODdk
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9TdGVwUmFuZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvU3RlcFJhbmdlLmNwcApAQCAtMzAsNiArMzAsMjMgQEAgdXNpbmcg
bmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisvLyBOb3RlOiBXZSBjYW4n
dCB1c2UgbmFtZSAicG93IiBiZWNhdXNlIFdpbiBwb3J0IGRlZmluZXMgbWFjcm8gInBvdyIuCitz
dGF0aWMgRGVjaW1hbCBwb3dlcihjb25zdCBEZWNpbWFsJiB4LCB1bnNpZ25lZCBuKQoreworICAg
IERlY2ltYWwgeSA9IDE7CisgICAgRGVjaW1hbCB6ID0geDsKKyAgICBmb3IgKDs7KSB7CisgICAg
ICAgIGlmIChuICYgMSkKKyAgICAgICAgICAgIHkgPSB5ICogejsKKworICAgICAgICBuID4+PSAx
OworICAgICAgICBpZiAoIW4pCisgICAgICAgICAgICByZXR1cm4geTsKKworICAgICAgICB6ID0g
eiAqIHo7CisgICAgfQorfQorCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBTdGVwUmFu
Z2U6OlN0ZXBSYW5nZSgpCkBAIC0zNyw4ICs1NCw2IEBAIFN0ZXBSYW5nZTo6U3RlcFJhbmdlKCkK
ICAgICAsIG1fbWluaW11bSgwKQogICAgICwgbV9zdGVwKDEpCiAgICAgLCBtX3N0ZXBCYXNlKDAp
Ci0gICAgLCBtX3N0ZXBCYXNlRGVjaW1hbFBsYWNlcygwKQotICAgICwgbV9zdGVwRGVjaW1hbFBs
YWNlcygwKQogICAgICwgbV9oYXNTdGVwKGZhbHNlKQogewogfQpAQCAtNDksNTUgKzY0LDQ0IEBA
IFN0ZXBSYW5nZTo6U3RlcFJhbmdlKGNvbnN0IFN0ZXBSYW5nZSYgc3RlcFJhbmdlKQogICAgICwg
bV9zdGVwKHN0ZXBSYW5nZS5tX3N0ZXApCiAgICAgLCBtX3N0ZXBCYXNlKHN0ZXBSYW5nZS5tX3N0
ZXBCYXNlKQogICAgICwgbV9zdGVwRGVzY3JpcHRpb24oc3RlcFJhbmdlLm1fc3RlcERlc2NyaXB0
aW9uKQotICAgICwgbV9zdGVwQmFzZURlY2ltYWxQbGFjZXMoc3RlcFJhbmdlLm1fc3RlcEJhc2VE
ZWNpbWFsUGxhY2VzKQotICAgICwgbV9zdGVwRGVjaW1hbFBsYWNlcyhzdGVwUmFuZ2UubV9zdGVw
RGVjaW1hbFBsYWNlcykKICAgICAsIG1faGFzU3RlcChzdGVwUmFuZ2UubV9oYXNTdGVwKQogewog
fQogCi1TdGVwUmFuZ2U6OlN0ZXBSYW5nZShjb25zdCBEb3VibGVXaXRoRGVjaW1hbFBsYWNlcyYg
c3RlcEJhc2UsIGRvdWJsZSBtaW5pbXVtLCBkb3VibGUgbWF4aW11bSwgY29uc3QgRG91YmxlV2l0
aERlY2ltYWxQbGFjZXNPck1pc3NpbmcmIHN0ZXAsIGNvbnN0IFN0ZXBEZXNjcmlwdGlvbiYgc3Rl
cERlc2NyaXB0aW9uKQorU3RlcFJhbmdlOjpTdGVwUmFuZ2UoY29uc3QgRGVjaW1hbCYgc3RlcEJh
c2UsIGNvbnN0IERlY2ltYWwmIG1pbmltdW0sIGNvbnN0IERlY2ltYWwmIG1heGltdW0sIGNvbnN0
IERlY2ltYWxPck1pc3NpbmcmIHN0ZXAsIGNvbnN0IFN0ZXBEZXNjcmlwdGlvbiYgc3RlcERlc2Ny
aXB0aW9uKQogICAgIDogbV9tYXhpbXVtKG1heGltdW0pCiAgICAgLCBtX21pbmltdW0obWluaW11
bSkKLSAgICAsIG1fc3RlcChzdGVwLnZhbHVlLnZhbHVlKQotICAgICwgbV9zdGVwQmFzZShzdGVw
QmFzZS52YWx1ZSkKKyAgICAsIG1fc3RlcChzdGVwLnZhbHVlKQorICAgICwgbV9zdGVwQmFzZShz
dGVwQmFzZSkKICAgICAsIG1fc3RlcERlc2NyaXB0aW9uKHN0ZXBEZXNjcmlwdGlvbikKLSAgICAs
IG1fc3RlcEJhc2VEZWNpbWFsUGxhY2VzKHN0ZXBCYXNlLmRlY2ltYWxQbGFjZXMpCi0gICAgLCBt
X3N0ZXBEZWNpbWFsUGxhY2VzKHN0ZXAudmFsdWUuZGVjaW1hbFBsYWNlcykKICAgICAsIG1faGFz
U3RlcChzdGVwLmhhc1ZhbHVlKQogewotICAgIEFTU0VSVChpc2Zpbml0ZShtX21heGltdW0pKTsK
LSAgICBBU1NFUlQoaXNmaW5pdGUobV9taW5pbXVtKSk7Ci0gICAgQVNTRVJUKGlzZmluaXRlKG1f
c3RlcCkpOwotICAgIEFTU0VSVChpc2Zpbml0ZShtX3N0ZXBCYXNlKSk7CisgICAgQVNTRVJUKG1f
bWF4aW11bS5pc0Zpbml0ZSgpKTsKKyAgICBBU1NFUlQobV9taW5pbXVtLmlzRmluaXRlKCkpOwor
ICAgIEFTU0VSVChtX3N0ZXAuaXNGaW5pdGUoKSk7CisgICAgQVNTRVJUKG1fc3RlcEJhc2UuaXNG
aW5pdGUoKSk7CiB9CiAKLWRvdWJsZSBTdGVwUmFuZ2U6OmFjY2VwdGFibGVFcnJvcigpIGNvbnN0
CitEZWNpbWFsIFN0ZXBSYW5nZTo6YWNjZXB0YWJsZUVycm9yKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gbV9zdGVwIC8gcG93KDIuMCwgRkxUX01BTlRfRElHKTsKKyAgICByZXR1cm4gbV9zdGVwIC8g
cG93ZXIoMiwgRkxUX01BTlRfRElHKTsKIH0KIAotZG91YmxlIFN0ZXBSYW5nZTo6YWxpZ25WYWx1
ZUZvclN0ZXAoZG91YmxlIGN1cnJlbnRWYWx1ZSwgdW5zaWduZWQgY3VycmVudERlY2ltYWxQbGFj
ZXMsIGRvdWJsZSBuZXdWYWx1ZSkgY29uc3QKK0RlY2ltYWwgU3RlcFJhbmdlOjphbGlnblZhbHVl
Rm9yU3RlcChjb25zdCBEZWNpbWFsJiBjdXJyZW50VmFsdWUsIGNvbnN0IERlY2ltYWwmIG5ld1Zh
bHVlKSBjb25zdAogewotICAgIGlmIChuZXdWYWx1ZSA+PSBwb3coMTAuMCwgMjEuMCkpCisgICAg
aWYgKG5ld1ZhbHVlID49IHBvd2VyKDEwLCAyMSkpCiAgICAgICAgIHJldHVybiBuZXdWYWx1ZTsK
IAotICAgIGlmIChzdGVwTWlzbWF0Y2goY3VycmVudFZhbHVlKSkgewotICAgICAgICBkb3VibGUg
c2NhbGUgPSBwb3coMTAuMCwgc3RhdGljX2Nhc3Q8ZG91YmxlPihtYXgobV9zdGVwRGVjaW1hbFBs
YWNlcywgY3VycmVudERlY2ltYWxQbGFjZXMpKSk7Ci0gICAgICAgIG5ld1ZhbHVlID0gcm91bmQo
bmV3VmFsdWUgKiBzY2FsZSkgLyBzY2FsZTsKLSAgICB9IGVsc2UgewotICAgICAgICBkb3VibGUg
c2NhbGUgPSBwb3coMTAuMCwgc3RhdGljX2Nhc3Q8ZG91YmxlPihtYXgobV9zdGVwRGVjaW1hbFBs
YWNlcywgbV9zdGVwQmFzZURlY2ltYWxQbGFjZXMpKSk7Ci0gICAgICAgIG5ld1ZhbHVlID0gcm91
bmQoKG1fc3RlcEJhc2UgKyByb3VuZCgobmV3VmFsdWUgLSBtX3N0ZXBCYXNlKSAvIG1fc3RlcCkg
KiBtX3N0ZXApICogc2NhbGUpIC8gc2NhbGU7Ci0gICAgfQotCi0gICAgcmV0dXJuIG5ld1ZhbHVl
OworICAgIHJldHVybiBzdGVwTWlzbWF0Y2goY3VycmVudFZhbHVlKSA/IG5ld1ZhbHVlIDogcm91
bmRCeVN0ZXAobmV3VmFsdWUsIG1fc3RlcEJhc2UpOwogfQotZG91YmxlIFN0ZXBSYW5nZTo6Y2xh
bXBWYWx1ZShkb3VibGUgdmFsdWUpIGNvbnN0CisKK0RlY2ltYWwgU3RlcFJhbmdlOjpjbGFtcFZh
bHVlKGNvbnN0IERlY2ltYWwmIHZhbHVlKSBjb25zdAogewotICAgIGRvdWJsZSBjbGFtcGVkVmFs
dWUgPSBtYXgobV9taW5pbXVtLCBtaW4odmFsdWUsIG1fbWF4aW11bSkpOworICAgIERlY2ltYWwg
Y2xhbXBlZFZhbHVlID0gbWF4KG1fbWluaW11bSwgbWluKHZhbHVlLCBtX21heGltdW0pKTsKICAg
ICBpZiAoIW1faGFzU3RlcCkKICAgICAgICAgcmV0dXJuIGNsYW1wZWRWYWx1ZTsKICAgICAvLyBS
b3VuZHMgY2xhbXBlZFZhbHVlIHRvIG1pbmltdW0gKyBOICogc3RlcC4KLSAgICBjbGFtcGVkVmFs
dWUgPSBtX21pbmltdW0gKyByb3VuZCgoY2xhbXBlZFZhbHVlIC0gbV9taW5pbXVtKSAvIG1fc3Rl
cCkgKiBtX3N0ZXA7CisgICAgY2xhbXBlZFZhbHVlID0gcm91bmRCeVN0ZXAoY2xhbXBlZFZhbHVl
LCBtX21pbmltdW0pOwogICAgIGlmIChjbGFtcGVkVmFsdWUgPiBtX21heGltdW0pCiAgICAgICAg
Y2xhbXBlZFZhbHVlIC09IG1fc3RlcDsKICAgICBBU1NFUlQoY2xhbXBlZFZhbHVlID49IG1fbWlu
aW11bSk7CkBAIC0xMDUsNzAgKzEwOSw2OSBAQCBkb3VibGUgU3RlcFJhbmdlOjpjbGFtcFZhbHVl
KGRvdWJsZSB2YWx1ZSkgY29uc3QKICAgICByZXR1cm4gY2xhbXBlZFZhbHVlOwogfQogCi1TdGVw
UmFuZ2U6OkRvdWJsZVdpdGhEZWNpbWFsUGxhY2VzT3JNaXNzaW5nIFN0ZXBSYW5nZTo6cGFyc2VT
dGVwKEFueVN0ZXBIYW5kbGluZyBhbnlTdGVwSGFuZGxpbmcsIGNvbnN0IFN0ZXBEZXNjcmlwdGlv
biYgc3RlcERlc2NyaXB0aW9uLCBjb25zdCBTdHJpbmcmIHN0ZXBTdHJpbmcpCitTdGVwUmFuZ2U6
OkRlY2ltYWxPck1pc3NpbmcgU3RlcFJhbmdlOjpwYXJzZVN0ZXAoQW55U3RlcEhhbmRsaW5nIGFu
eVN0ZXBIYW5kbGluZywgY29uc3QgU3RlcERlc2NyaXB0aW9uJiBzdGVwRGVzY3JpcHRpb24sIGNv
bnN0IFN0cmluZyYgc3RlcFN0cmluZykKIHsKICAgICBpZiAoc3RlcFN0cmluZy5pc0VtcHR5KCkp
Ci0gICAgICAgIHJldHVybiBEb3VibGVXaXRoRGVjaW1hbFBsYWNlc09yTWlzc2luZyhzdGVwRGVz
Y3JpcHRpb24uZGVmYXVsdFZhbHVlKCkpOworICAgICAgICByZXR1cm4gRGVjaW1hbE9yTWlzc2lu
ZyhzdGVwRGVzY3JpcHRpb24uZGVmYXVsdFZhbHVlKCkpOwogCiAgICAgaWYgKGVxdWFsSWdub3Jp
bmdDYXNlKHN0ZXBTdHJpbmcsICJhbnkiKSkgewogICAgICAgICBzd2l0Y2ggKGFueVN0ZXBIYW5k
bGluZykgewogICAgICAgICBjYXNlIFJlamVjdEFueToKLSAgICAgICAgICAgIHJldHVybiBEb3Vi
bGVXaXRoRGVjaW1hbFBsYWNlc09yTWlzc2luZyhEb3VibGVXaXRoRGVjaW1hbFBsYWNlcygxKSwg
ZmFsc2UpOworICAgICAgICAgICAgcmV0dXJuIERlY2ltYWxPck1pc3NpbmcoRGVjaW1hbCgxKSwg
ZmFsc2UpOwogICAgICAgICBjYXNlIEFueUlzRGVmYXVsdFN0ZXA6Ci0gICAgICAgICAgICByZXR1
cm4gRG91YmxlV2l0aERlY2ltYWxQbGFjZXNPck1pc3Npbmcoc3RlcERlc2NyaXB0aW9uLmRlZmF1
bHRWYWx1ZSgpKTsKKyAgICAgICAgICAgIHJldHVybiBEZWNpbWFsT3JNaXNzaW5nKHN0ZXBEZXNj
cmlwdGlvbi5kZWZhdWx0VmFsdWUoKSk7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogICAgIH0KIAotICAgIERvdWJsZVdpdGhE
ZWNpbWFsUGxhY2VzT3JNaXNzaW5nIHN0ZXAoMCk7Ci0gICAgc3RlcC52YWx1ZS52YWx1ZSA9IHBh
cnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlV2l0aERlY2ltYWxQbGFjZXMoc3RlcFN0cmluZywgJnN0
ZXAudmFsdWUuZGVjaW1hbFBsYWNlcyk7Ci0gICAgaWYgKCFpc2Zpbml0ZShzdGVwLnZhbHVlLnZh
bHVlKSB8fCBzdGVwLnZhbHVlLnZhbHVlIDw9IDAuMCkKLSAgICAgICAgcmV0dXJuIERvdWJsZVdp
dGhEZWNpbWFsUGxhY2VzT3JNaXNzaW5nKHN0ZXBEZXNjcmlwdGlvbi5kZWZhdWx0VmFsdWUoKSk7
CisgICAgRGVjaW1hbCBzdGVwKHBhcnNlVG9EZWNpbWFsRm9yTnVtYmVyVHlwZShzdGVwU3RyaW5n
KSk7CisgICAgaWYgKCFzdGVwLmlzRmluaXRlKCkgfHwgc3RlcCA8PSAwKQorICAgICAgICByZXR1
cm4gRGVjaW1hbE9yTWlzc2luZyhzdGVwRGVzY3JpcHRpb24uZGVmYXVsdFZhbHVlKCkpOwogCiAg
ICAgc3dpdGNoIChzdGVwRGVzY3JpcHRpb24uc3RlcFZhbHVlU2hvdWxkQmUpIHsKICAgICBjYXNl
IFN0ZXBWYWx1ZVNob3VsZEJlUmVhbDoKLSAgICAgICAgc3RlcC52YWx1ZS52YWx1ZSAqPSBzdGVw
RGVzY3JpcHRpb24uc3RlcFNjYWxlRmFjdG9yOworICAgICAgICBzdGVwICo9IHN0ZXBEZXNjcmlw
dGlvbi5zdGVwU2NhbGVGYWN0b3I7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUGFyc2VkU3Rl
cFZhbHVlU2hvdWxkQmVJbnRlZ2VyOgogICAgICAgICAvLyBGb3IgZGF0ZSwgbW9udGgsIGFuZCB3
ZWVrLCB0aGUgcGFyc2VkIHZhbHVlIHNob3VsZCBiZSBhbiBpbnRlZ2VyIGZvciBzb21lIHR5cGVz
LgotICAgICAgICBzdGVwLnZhbHVlLnZhbHVlID0gbWF4KHJvdW5kKHN0ZXAudmFsdWUudmFsdWUp
LCAxLjApOwotICAgICAgICBzdGVwLnZhbHVlLnZhbHVlICo9IHN0ZXBEZXNjcmlwdGlvbi5zdGVw
U2NhbGVGYWN0b3I7CisgICAgICAgIHN0ZXAgPSBtYXgoc3RlcC5yb3VuZCgpLCBEZWNpbWFsKDEp
KTsKKyAgICAgICAgc3RlcCAqPSBzdGVwRGVzY3JpcHRpb24uc3RlcFNjYWxlRmFjdG9yOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIFNjYWxlZFN0ZXBWYWx1ZVNob3VsZEJlSW50ZWdlcjoKICAg
ICAgICAgLy8gRm9yIGRhdGV0aW1lLCBkYXRldGltZS1sb2NhbCwgdGltZSwgdGhlIHJlc3VsdCBz
aG91bGQgYmUgYW4gaW50ZWdlci4KLSAgICAgICAgc3RlcC52YWx1ZS52YWx1ZSAqPSBzdGVwRGVz
Y3JpcHRpb24uc3RlcFNjYWxlRmFjdG9yOwotICAgICAgICBzdGVwLnZhbHVlLnZhbHVlID0gbWF4
KHJvdW5kKHN0ZXAudmFsdWUudmFsdWUpLCAxLjApOworICAgICAgICBzdGVwICo9IHN0ZXBEZXNj
cmlwdGlvbi5zdGVwU2NhbGVGYWN0b3I7CisgICAgICAgIHN0ZXAgPSBtYXgoc3RlcC5yb3VuZCgp
LCBEZWNpbWFsKDEpKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCi0gICAgQVNTRVJUKHN0ZXAudmFsdWUudmFsdWUg
PiAwKTsKLSAgICByZXR1cm4gc3RlcDsKKyAgICBBU1NFUlQoc3RlcCA+IDApOworICAgIHJldHVy
biBEZWNpbWFsT3JNaXNzaW5nKHN0ZXApOwogfQogCi1ib29sIFN0ZXBSYW5nZTo6c3RlcE1pc21h
dGNoKGRvdWJsZSBkb3VibGVWYWx1ZSkgY29uc3QKK2Jvb2wgU3RlcFJhbmdlOjpzdGVwTWlzbWF0
Y2goY29uc3QgRGVjaW1hbCYgdmFsdWVGb3JDaGVjaykgY29uc3QKIHsKICAgICBpZiAoIW1faGFz
U3RlcCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghaXNmaW5pdGUoZG91YmxlVmFs
dWUpKQorICAgIGlmICghdmFsdWVGb3JDaGVjay5pc0Zpbml0ZSgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgZG91YmxlVmFsdWUgPSBmYWJzKGRvdWJsZVZhbHVlIC0gbV9zdGVwQmFzZSk7
Ci0gICAgaWYgKGlzaW5mKGRvdWJsZVZhbHVlKSkKKyAgICBEZWNpbWFsIHZhbHVlID0gKHZhbHVl
Rm9yQ2hlY2sgLSBtX3N0ZXBCYXNlKS5hYnMoKTsKKyAgICBpZiAoIXZhbHVlLmlzRmluaXRlKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAvLyBkb3VibGUncyBmcmFjdGlvbmFsIHBhcnQg
c2l6ZSBpcyBEQkxfTUFOX0RJRy1iaXQuIElmIHRoZSBjdXJyZW50IHZhbHVlCisgICAgLy8gRGVj
aW1hbCdzIGZyYWN0aW9uYWwgcGFydCBzaXplIGlzIERCTF9NQU5fRElHLWJpdC4gSWYgdGhlIGN1
cnJlbnQgdmFsdWUKICAgICAvLyBpcyBncmVhdGVyIHRoYW4gc3RlcCoyXkRCTF9NQU5UX0RJRywg
dGhlIGZvbGxvd2luZyBjb21wdXRhdGlvbiBmb3IKICAgICAvLyByZW1haW5kZXIgbWFrZXMgbm8g
c2Vuc2UuCi0gICAgaWYgKGRvdWJsZVZhbHVlIC8gcG93KDIuMCwgREJMX01BTlRfRElHKSA+IG1f
c3RlcCkKKyAgICBpZiAodmFsdWUgLyBwb3dlcigyLCBEQkxfTUFOVF9ESUcpID4gbV9zdGVwKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgLy8gVGhlIGNvbXB1dGF0aW9uIGZvbGxvd3MgSFRN
TDUgNC4xMC43LjIuMTAgYFRoZSBzdGVwIGF0dHJpYnV0ZScgOgogICAgIC8vIC4uLiB0aGF0IG51
bWJlciBzdWJ0cmFjdGVkIGZyb20gdGhlIHN0ZXAgYmFzZSBpcyBub3QgYW4gaW50ZWdyYWwgbXVs
dGlwbGUKICAgICAvLyBvZiB0aGUgYWxsb3dlZCB2YWx1ZSBzdGVwLCB0aGUgZWxlbWVudCBpcyBz
dWZmZXJpbmcgZnJvbSBhIHN0ZXAgbWlzbWF0Y2guCi0gICAgZG91YmxlIHJlbWFpbmRlciA9IGZh
YnMoZG91YmxlVmFsdWUgLSBtX3N0ZXAgKiByb3VuZChkb3VibGVWYWx1ZSAvIG1fc3RlcCkpOwor
ICAgIGNvbnN0IERlY2ltYWwgcmVtYWluZGVyID0gKHZhbHVlIC0gbV9zdGVwICogKHZhbHVlIC8g
bV9zdGVwKS5yb3VuZCgpKS5hYnMoKTsKICAgICAvLyBBY2NlcHRzIGVycm9zIGluIGxvd2VyIGZy
YWN0aW9uYWwgcGFydCB3aGljaCBJRUVFIDc1NCBzaW5nbGUtcHJlY2lzaW9uCiAgICAgLy8gY2Fu
J3QgcmVwcmVzZW50LgotICAgIGRvdWJsZSBjb21wdXRlZEFjY2VwdGFibGVFcnJvciA9IGFjY2Vw
dGFibGVFcnJvcigpOworICAgIGNvbnN0IERlY2ltYWwgY29tcHV0ZWRBY2NlcHRhYmxlRXJyb3Ig
PSBhY2NlcHRhYmxlRXJyb3IoKTsKICAgICByZXR1cm4gY29tcHV0ZWRBY2NlcHRhYmxlRXJyb3Ig
PCByZW1haW5kZXIgJiYgcmVtYWluZGVyIDwgKG1fc3RlcCAtIGNvbXB1dGVkQWNjZXB0YWJsZUVy
cm9yKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9TdGVwUmFuZ2UuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvU3RlcFJhbmdlLmgKaW5kZXggMGFkYmZkODU3YTUwNjk5OTMx
Y2JkMzkxMDZmNmIwNGE2ZTc0MmM4ZC4uMzBhNjMwZmI5OWMwZDFlNDU3ZTAzZmFhZjk5MTAyODhk
NjI3NTM4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9TdGVwUmFuZ2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL1N0ZXBSYW5nZS5oCkBAIC0yMSw2ICsyMSw3IEBACiAjaWZu
ZGVmIFN0ZXBSYW5nZV9oCiAjZGVmaW5lIFN0ZXBSYW5nZV9oCiAKKyNpbmNsdWRlICJEZWNpbWFs
LmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUu
aD4KIApAQCAtMzIsMjIgKzMzLDExIEBAIGVudW0gQW55U3RlcEhhbmRsaW5nIHsgUmVqZWN0QW55
LCBBbnlJc0RlZmF1bHRTdGVwIH07CiAKIGNsYXNzIFN0ZXBSYW5nZSB7CiBwdWJsaWM6Ci0gICAg
c3RydWN0IERvdWJsZVdpdGhEZWNpbWFsUGxhY2VzIHsKLSAgICAgICAgdW5zaWduZWQgZGVjaW1h
bFBsYWNlczsKLSAgICAgICAgZG91YmxlIHZhbHVlOwotCi0gICAgICAgIERvdWJsZVdpdGhEZWNp
bWFsUGxhY2VzKGRvdWJsZSB2YWx1ZSA9IDAsIHVuc2lnbmVkIGRlY2ltYWxQbGFjZXMgPSAwKQot
ICAgICAgICAgICAgOiBkZWNpbWFsUGxhY2VzKGRlY2ltYWxQbGFjZXMpCi0gICAgICAgICAgICAs
IHZhbHVlKHZhbHVlKQotICAgICAgICB7Ci0gICAgICAgIH0KLSAgICB9OwotCi0gICAgc3RydWN0
IERvdWJsZVdpdGhEZWNpbWFsUGxhY2VzT3JNaXNzaW5nIHsKKyAgICBzdHJ1Y3QgRGVjaW1hbE9y
TWlzc2luZyB7CiAgICAgICAgIGJvb2wgaGFzVmFsdWU7Ci0gICAgICAgIERvdWJsZVdpdGhEZWNp
bWFsUGxhY2VzIHZhbHVlOworICAgICAgICBEZWNpbWFsIHZhbHVlOwogCi0gICAgICAgIERvdWJs
ZVdpdGhEZWNpbWFsUGxhY2VzT3JNaXNzaW5nKERvdWJsZVdpdGhEZWNpbWFsUGxhY2VzIHZhbHVl
LCBib29sIGhhc1ZhbHVlID0gdHJ1ZSkKKyAgICAgICAgRGVjaW1hbE9yTWlzc2luZyhjb25zdCBE
ZWNpbWFsJiB2YWx1ZSwgYm9vbCBoYXNWYWx1ZSA9IHRydWUpCiAgICAgICAgICAgICA6IGhhc1Zh
bHVlKGhhc1ZhbHVlKQogICAgICAgICAgICAgLCB2YWx1ZSh2YWx1ZSkKICAgICAgICAgewpAQCAt
ODIsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIGRv
dWJsZSBkZWZhdWx0VmFsdWUoKSBjb25zdAorICAgICAgICBEZWNpbWFsIGRlZmF1bHRWYWx1ZSgp
IGNvbnN0CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBkZWZhdWx0U3RlcCAqIHN0ZXBT
Y2FsZUZhY3RvcjsKICAgICAgICAgfQpAQCAtOTAsMjkgKzgwLDMyIEBAIHB1YmxpYzoKIAogICAg
IFN0ZXBSYW5nZSgpOwogICAgIFN0ZXBSYW5nZShjb25zdCBTdGVwUmFuZ2UmKTsKLSAgICBTdGVw
UmFuZ2UoY29uc3QgRG91YmxlV2l0aERlY2ltYWxQbGFjZXMmIHN0ZXBCYXNlLCBkb3VibGUgbWlu
aW11bSwgZG91YmxlIG1heGltdW0sIGNvbnN0IERvdWJsZVdpdGhEZWNpbWFsUGxhY2VzT3JNaXNz
aW5nJiBzdGVwLCBjb25zdCBTdGVwRGVzY3JpcHRpb24mKTsKLSAgICBkb3VibGUgYWNjZXB0YWJs
ZUVycm9yKCkgY29uc3Q7Ci0gICAgZG91YmxlIGFsaWduVmFsdWVGb3JTdGVwKGRvdWJsZSBjdXJy
ZW50VmFsdWUsIHVuc2lnbmVkIGN1cnJlbnREZWNpbWFsUGxhY2VzLCBkb3VibGUgbmV3VmFsdWUp
IGNvbnN0OwotICAgIGRvdWJsZSBjbGFtcFZhbHVlKGRvdWJsZSB2YWx1ZSkgY29uc3Q7CisgICAg
U3RlcFJhbmdlKGNvbnN0IERlY2ltYWwmIHN0ZXBCYXNlLCBjb25zdCBEZWNpbWFsJiBtaW5pbXVt
LCBjb25zdCBEZWNpbWFsJiBtYXhpbXVtLCBjb25zdCBEZWNpbWFsT3JNaXNzaW5nJiBzdGVwLCBj
b25zdCBTdGVwRGVzY3JpcHRpb24mKTsKKyAgICBEZWNpbWFsIGFjY2VwdGFibGVFcnJvcigpIGNv
bnN0OworICAgIERlY2ltYWwgYWxpZ25WYWx1ZUZvclN0ZXAoY29uc3QgRGVjaW1hbCYgY3VycmVu
dFZhbHVlLCBjb25zdCBEZWNpbWFsJiBuZXdWYWx1ZSkgY29uc3Q7CisgICAgRGVjaW1hbCBjbGFt
cFZhbHVlKGNvbnN0IERlY2ltYWwmKSBjb25zdDsKICAgICBib29sIGhhc1N0ZXAoKSBjb25zdCB7
IHJldHVybiBtX2hhc1N0ZXA7IH0KLSAgICBkb3VibGUgbWF4aW11bSgpIGNvbnN0IHsgcmV0dXJu
IG1fbWF4aW11bTsgfQotICAgIGRvdWJsZSBtaW5pbXVtKCkgY29uc3QgeyByZXR1cm4gbV9taW5p
bXVtOyB9Ci0gICAgc3RhdGljIERvdWJsZVdpdGhEZWNpbWFsUGxhY2VzT3JNaXNzaW5nIHBhcnNl
U3RlcChBbnlTdGVwSGFuZGxpbmcsIGNvbnN0IFN0ZXBEZXNjcmlwdGlvbiYsIGNvbnN0IFN0cmlu
ZyYpOwotICAgIGRvdWJsZSBzdGVwKCkgY29uc3QgeyByZXR1cm4gbV9zdGVwOyB9Ci0gICAgZG91
YmxlIHN0ZXBCYXNlKCkgY29uc3QgeyByZXR1cm4gbV9zdGVwQmFzZTsgfQotICAgIHVuc2lnbmVk
IHN0ZXBCYXNlRGVjaW1hbFBsYWNlcygpIGNvbnN0IHsgcmV0dXJuIG1fc3RlcEJhc2VEZWNpbWFs
UGxhY2VzOyB9Ci0gICAgdW5zaWduZWQgc3RlcERlY2ltYWxQbGFjZXMoKSBjb25zdCB7IHJldHVy
biBtX3N0ZXBEZWNpbWFsUGxhY2VzOyB9CisgICAgRGVjaW1hbCBtYXhpbXVtKCkgY29uc3QgeyBy
ZXR1cm4gbV9tYXhpbXVtOyB9CisgICAgRGVjaW1hbCBtaW5pbXVtKCkgY29uc3QgeyByZXR1cm4g
bV9taW5pbXVtOyB9CisgICAgc3RhdGljIERlY2ltYWxPck1pc3NpbmcgcGFyc2VTdGVwKEFueVN0
ZXBIYW5kbGluZywgY29uc3QgU3RlcERlc2NyaXB0aW9uJiwgY29uc3QgU3RyaW5nJik7CisgICAg
RGVjaW1hbCBzdGVwKCkgY29uc3QgeyByZXR1cm4gbV9zdGVwOyB9CisgICAgRGVjaW1hbCBzdGVw
QmFzZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RlcEJhc2U7IH0KICAgICBpbnQgc3RlcFNjYWxlRmFj
dG9yKCkgY29uc3QgeyByZXR1cm4gbV9zdGVwRGVzY3JpcHRpb24uc3RlcFNjYWxlRmFjdG9yOyB9
Ci0gICAgYm9vbCBzdGVwTWlzbWF0Y2goZG91YmxlKSBjb25zdDsKKyAgICBib29sIHN0ZXBNaXNt
YXRjaChjb25zdCBEZWNpbWFsJikgY29uc3Q7CiAKICAgICAvLyBDbGFtcCB0aGUgbWlkZGxlIHZh
bHVlIGFjY29yZGluZyB0byB0aGUgc3RlcAotICAgIGRvdWJsZSBkZWZhdWx0VmFsdWUoKSBjb25z
dAorICAgIERlY2ltYWwgZGVmYXVsdFZhbHVlKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVy
biBjbGFtcFZhbHVlKChtX21pbmltdW0gKyBtX21heGltdW0pIC8gMik7CiAgICAgfQogCisgICAg
c3RhdGljIERlY2ltYWwgZW5zdXJlTWF4aW11bShjb25zdCBEZWNpbWFsIHByb3Bvc2VkVmFsdWUs
IGNvbnN0IERlY2ltYWwmIG1pbmltdW0sIGNvbnN0IERlY2ltYWwmIGZhbGxiYWNrVmFsdWUpCisg
ICAgeworICAgICAgICByZXR1cm4gcHJvcG9zZWRWYWx1ZSA+PSBtaW5pbXVtID8gcHJvcG9zZWRW
YWx1ZSA6IHN0ZDo6bWF4KG1pbmltdW0sIGZhbGxiYWNrVmFsdWUpOworICAgIH0KKwogICAgIC8v
IE1hcCB2YWx1ZSBpbnRvIDAtMSByYW5nZQotICAgIGRvdWJsZSBwcm9wb3J0aW9uRnJvbVZhbHVl
KGRvdWJsZSB2YWx1ZSkgY29uc3QKKyAgICBEZWNpbWFsIHByb3BvcnRpb25Gcm9tVmFsdWUoY29u
c3QgRGVjaW1hbCYgdmFsdWUpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAobV9taW5pbXVtID09
IG1fbWF4aW11bSkKICAgICAgICAgICAgIHJldHVybiAwOwpAQCAtMTIxLDcgKzExNCw3IEBAIHB1
YmxpYzoKICAgICB9CiAKICAgICAvLyBNYXAgZnJvbSAwLTEgcmFuZ2UgdG8gdmFsdWUKLSAgICBk
b3VibGUgdmFsdWVGcm9tUHJvcG9ydGlvbihkb3VibGUgcHJvcG9ydGlvbikgY29uc3QKKyAgICBE
ZWNpbWFsIHZhbHVlRnJvbVByb3BvcnRpb24oY29uc3QgRGVjaW1hbCYgcHJvcG9ydGlvbikgY29u
c3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX21pbmltdW0gKyBwcm9wb3J0aW9uICogKG1fbWF4
aW11bSAtIG1fbWluaW11bSk7CiAgICAgfQpAQCAtMTI5LDEzICsxMjIsMTYgQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICBTdGVwUmFuZ2UmIG9wZXJhdG9yID0oY29uc3QgU3RlcFJhbmdlJik7CiAK
LSAgICBjb25zdCBkb3VibGUgbV9tYXhpbXVtOyAvLyBtYXhpbXVtIG11c3QgYmUgPj0gbWluaW11
bS4KLSAgICBjb25zdCBkb3VibGUgbV9taW5pbXVtOwotICAgIGNvbnN0IGRvdWJsZSBtX3N0ZXA7
Ci0gICAgY29uc3QgZG91YmxlIG1fc3RlcEJhc2U7CisgICAgRGVjaW1hbCByb3VuZEJ5U3RlcChj
b25zdCBEZWNpbWFsJiB2YWx1ZSwgY29uc3QgRGVjaW1hbCYgYmFzZSkgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiBiYXNlICsgKCh2YWx1ZSAtIGJhc2UpIC8gbV9zdGVwKS5yb3VuZCgpICog
bV9zdGVwOworICAgIH0KKworICAgIGNvbnN0IERlY2ltYWwgbV9tYXhpbXVtOyAvLyBtYXhpbXVt
IG11c3QgYmUgPj0gbWluaW11bS4KKyAgICBjb25zdCBEZWNpbWFsIG1fbWluaW11bTsKKyAgICBj
b25zdCBEZWNpbWFsIG1fc3RlcDsKKyAgICBjb25zdCBEZWNpbWFsIG1fc3RlcEJhc2U7CiAgICAg
Y29uc3QgU3RlcERlc2NyaXB0aW9uIG1fc3RlcERlc2NyaXB0aW9uOwotICAgIGNvbnN0IHVuc2ln
bmVkIG1fc3RlcEJhc2VEZWNpbWFsUGxhY2VzOwotICAgIGNvbnN0IHVuc2lnbmVkIG1fc3RlcERl
Y2ltYWxQbGFjZXM7CiAgICAgY29uc3QgYm9vbCBtX2hhc1N0ZXA7CiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwCmluZGV4IGE5OWEyMWEw
OGU1YmRkMDg2NWZhMzNjNzM5NTUwNDAxNzJjMzhiMzEuLjViZDBlMzMwZmQyNDUwMjNlYzc3YmZi
ZDE4M2JkYjU5Yjg2ZTdlNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxQYXJzZXJJZGlvbXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxQYXJzZXJJZGlvbXMuY3BwCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogCisjaW5jbHVkZSAiRGVjaW1hbC5oIgog
I2luY2x1ZGUgPGxpbWl0cz4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUg
PHd0Zi9kdG9hLmg+CkBAIC01OCw2ICs1OSwxMSBAQCBTdHJpbmcgc3RyaXBMZWFkaW5nQW5kVHJh
aWxpbmdIVE1MU3BhY2VzKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIHJldHVybiBzdHJpbmcu
c3Vic3RyaW5nKG51bUxlYWRpbmdTcGFjZXMsIGxlbmd0aCAtIChudW1MZWFkaW5nU3BhY2VzICsg
bnVtVHJhaWxpbmdTcGFjZXMpKTsKIH0KIAorU3RyaW5nIHNlcmlhbGl6ZUZvck51bWJlclR5cGUo
Y29uc3QgRGVjaW1hbCYgbnVtYmVyKQoreworICAgIHJldHVybiBudW1iZXIudG9TdHJpbmcoKTsK
K30KKwogU3RyaW5nIHNlcmlhbGl6ZUZvck51bWJlclR5cGUoZG91YmxlIG51bWJlcikKIHsKICAg
ICAvLyBBY2NvcmRpbmcgdG8gSFRNTDUsICJ0aGUgYmVzdCByZXByZXNlbnRhdGlvbiBvZiB0aGUg
bnVtYmVyIG4gYXMgYSBmbG9hdGluZwpAQCAtNjYsNiArNzIsNDAgQEAgU3RyaW5nIHNlcmlhbGl6
ZUZvck51bWJlclR5cGUoZG91YmxlIG51bWJlcikKICAgICByZXR1cm4gU3RyaW5nKG51bWJlclRv
U3RyaW5nKG51bWJlciwgYnVmZmVyKSk7CiB9CiAKK0RlY2ltYWwgcGFyc2VUb0RlY2ltYWxGb3JO
dW1iZXJUeXBlKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBjb25zdCBEZWNpbWFsJiBmYWxsYmFja1Zh
bHVlKQoreworICAgIC8vIFNlZSBIVE1MNSAyLjUuNC4zIGBSZWFsIG51bWJlcnMuJyBhbmQgcGFy
c2VUb0RvdWJsZUZvck51bWJlclR5cGUKKworICAgIC8vIFN0cmluZzo6dG9Eb3VibGUoKSBhY2Nl
cHRzIGxlYWRpbmcgKyBhbmQgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzLCB3aGljaCBhcmUgbm90IHZh
bGlkIGhlcmUuCisgICAgVUNoYXIgZmlyc3RDaGFyYWN0ZXIgPSBzdHJpbmdbMF07CisgICAgaWYg
KGZpcnN0Q2hhcmFjdGVyICE9ICctJyAmJiBmaXJzdENoYXJhY3RlciAhPSAnLicgJiYgIWlzQVND
SUlEaWdpdChmaXJzdENoYXJhY3RlcikpCisgICAgICAgIHJldHVybiBmYWxsYmFja1ZhbHVlOwor
CisgICAgRGVjaW1hbCB2YWx1ZSA9IERlY2ltYWw6OmZyb21TdHJpbmcoc3RyaW5nKTsKKyAgICBp
ZiAoIXZhbHVlLmlzRmluaXRlKCkpCisgICAgICAgIHJldHVybiBmYWxsYmFja1ZhbHVlOworCisg
ICAgLy8gRklYTUU6IFVJTlQ2NF9DKDE3OTc2OTMxMzQ4NjIzMTU5KSBzaG91bGQgYmUgdXNlZCBi
dXQgaXQgZGlkIG5vdCBjb21waWxlIG9uIFF0IGJvdHMuCisjaWYgQ09NUElMRVIoTVNWQykKKyAg
ICBjb25zdCB1aW50NjRfdCBsZWFkaW5nRGlnaXRzT2YyUG93ZXIxMDI0ID0gMTc5NzY5MzEzNDg2
MjMxNTl1aTY0OworI2Vsc2UKKyAgICBjb25zdCB1aW50NjRfdCBsZWFkaW5nRGlnaXRzT2YyUG93
ZXIxMDI0ID0gMTc5NzY5MzEzNDg2MjMxNTl1bGw7CisjZW5kaWYKKyAgICBEZWNpbWFsIGh0bWxN
YXgoRGVjaW1hbDo6RW5jb2RlZERhdGEobGVhZGluZ0RpZ2l0c09mMlBvd2VyMTAyNCwgMjkyLCBE
ZWNpbWFsOjpQbHVzKSk7CisgICAgRGVjaW1hbCBodG1sTWluKERlY2ltYWw6OkVuY29kZWREYXRh
KGxlYWRpbmdEaWdpdHNPZjJQb3dlcjEwMjQsIDI5MiwgRGVjaW1hbDo6TWludXMpKTsKKworICAg
IGlmICh2YWx1ZSA8IGh0bWxNaW4gfHwgdmFsdWUgPiBodG1sTWF4KQorICAgICAgICByZXR1cm4g
ZmFsbGJhY2tWYWx1ZTsKKworICAgIC8vIFdlIHJldHVybiArMCBmb3IgLTAgY2FzZS4KKyAgICBy
ZXR1cm4gdmFsdWUuaXNaZXJvKCkgPyBEZWNpbWFsKDApIDogdmFsdWU7Cit9CisKK0RlY2ltYWwg
cGFyc2VUb0RlY2ltYWxGb3JOdW1iZXJUeXBlKGNvbnN0IFN0cmluZyYgc3RyaW5nKQoreworICAg
IHJldHVybiBwYXJzZVRvRGVjaW1hbEZvck51bWJlclR5cGUoc3RyaW5nLCBEZWNpbWFsOjpuYW4o
KSk7Cit9CisKIGRvdWJsZSBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZShjb25zdCBTdHJpbmcm
IHN0cmluZywgZG91YmxlIGZhbGxiYWNrVmFsdWUpCiB7CiAgICAgLy8gU2VlIEhUTUw1IDIuNS40
LjMgYFJlYWwgbnVtYmVycy4nCkBAIC05OCw4NCArMTM4LDYgQEAgZG91YmxlIHBhcnNlVG9Eb3Vi
bGVGb3JOdW1iZXJUeXBlKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIHJldHVybiBwYXJzZVRv
RG91YmxlRm9yTnVtYmVyVHlwZShzdHJpbmcsIHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6
cXVpZXRfTmFOKCkpOwogfQogCi1kb3VibGUgcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGVXaXRo
RGVjaW1hbFBsYWNlcyhjb25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgKmRlY2ltYWxQbGFj
ZXMsIGRvdWJsZSBmYWxsYmFja1ZhbHVlKQotewotICAgIGlmIChkZWNpbWFsUGxhY2VzKQotICAg
ICAgICAqZGVjaW1hbFBsYWNlcyA9IDA7Ci0KLSAgICBkb3VibGUgdmFsdWUgPSBwYXJzZVRvRG91
YmxlRm9yTnVtYmVyVHlwZShzdHJpbmcsIHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVp
ZXRfTmFOKCkpOwotICAgIGlmICghaXNmaW5pdGUodmFsdWUpKQotICAgICAgICByZXR1cm4gZmFs
bGJhY2tWYWx1ZTsKLQotICAgIGlmICghZGVjaW1hbFBsYWNlcykKLSAgICAgICAgcmV0dXJuIHZh
bHVlOwotCi0gICAgc2l6ZV90IGRvdEluZGV4ID0gc3RyaW5nLmZpbmQoJy4nKTsKLSAgICBzaXpl
X3QgZUluZGV4ID0gc3RyaW5nLmZpbmQoJ2UnKTsKLSAgICBpZiAoZUluZGV4ID09IG5vdEZvdW5k
KSAKLSAgICAgICAgZUluZGV4ID0gc3RyaW5nLmZpbmQoJ0UnKTsKLQotICAgIHVuc2lnbmVkIGJh
c2VEZWNpbWFsUGxhY2VzID0gMDsKLSAgICBpZiAoZG90SW5kZXggIT0gbm90Rm91bmQpIHsKLSAg
ICAgICAgaWYgKGVJbmRleCA9PSBub3RGb3VuZCkKLSAgICAgICAgICAgIGJhc2VEZWNpbWFsUGxh
Y2VzID0gc3RyaW5nLmxlbmd0aCgpIC0gZG90SW5kZXggLSAxOwotICAgICAgICBlbHNlCi0gICAg
ICAgICAgICBiYXNlRGVjaW1hbFBsYWNlcyA9IGVJbmRleCAtIGRvdEluZGV4IC0gMTsKLSAgICB9
Ci0KLSAgICBpbnQgZXhwb25lbnQgPSAwOwotICAgIGlmIChlSW5kZXggIT0gbm90Rm91bmQpIHsK
LSAgICAgICAgdW5zaWduZWQgY3Vyc29yID0gZUluZGV4ICsgMSwgY3Vyc29yU2F2ZWQ7Ci0gICAg
ICAgIGludCBkaWdpdCwgZXhwb25lbnRTaWduOwotICAgICAgICBpbnQzMl90IGV4cG9uZW50MzI7
Ci0gICAgICAgIHNpemVfdCBsZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7Ci0KLSAgICAgICAgLy8g
Tm90IHVzaW5nIFN0cmluZy50b0ludCgpIGluIG9yZGVyIHRvIHBlcmZvcm0gdGhlIHNhbWUgY29t
cHV0YXRpb24gYXMgZHRvYSgpIGRvZXMuCi0gICAgICAgIGV4cG9uZW50U2lnbiA9IDA7Ci0gICAg
ICAgIHN3aXRjaCAoZGlnaXQgPSBzdHJpbmdbY3Vyc29yXSkgewotICAgICAgICBjYXNlICctJzoK
LSAgICAgICAgICAgIGV4cG9uZW50U2lnbiA9IDE7Ci0gICAgICAgIGNhc2UgJysnOgotICAgICAg
ICAgICAgZGlnaXQgPSBzdHJpbmdbKytjdXJzb3JdOwotICAgICAgICB9Ci0gICAgICAgIGlmIChk
aWdpdCA+PSAnMCcgJiYgZGlnaXQgPD0gJzknKSB7Ci0gICAgICAgICAgICB3aGlsZSAoY3Vyc29y
IDwgbGVuZ3RoICYmIGRpZ2l0ID09ICcwJykKLSAgICAgICAgICAgICAgICBkaWdpdCA9IHN0cmlu
Z1srK2N1cnNvcl07Ci0gICAgICAgICAgICBpZiAoZGlnaXQgPiAnMCcgJiYgZGlnaXQgPD0gJzkn
KSB7Ci0gICAgICAgICAgICAgICAgZXhwb25lbnQzMiA9IGRpZ2l0IC0gJzAnOwotICAgICAgICAg
ICAgICAgIGN1cnNvclNhdmVkID0gY3Vyc29yOwotICAgICAgICAgICAgICAgIHdoaWxlIChjdXJz
b3IgPCBsZW5ndGggJiYgKGRpZ2l0ID0gc3RyaW5nWysrY3Vyc29yXSkgPj0gJzAnICYmIGRpZ2l0
IDw9ICc5JykKLSAgICAgICAgICAgICAgICAgICAgZXhwb25lbnQzMiA9ICgxMCAqIGV4cG9uZW50
MzIpICsgZGlnaXQgLSAnMCc7Ci0gICAgICAgICAgICAgICAgaWYgKGN1cnNvciAtIGN1cnNvclNh
dmVkID4gOCB8fCBleHBvbmVudDMyID4gMTk5OTkpCi0gICAgICAgICAgICAgICAgICAgIC8qIEF2
b2lkIGNvbmZ1c2lvbiBmcm9tIGV4cG9uZW50cwotICAgICAgICAgICAgICAgICAgICAgKiBzbyBs
YXJnZSB0aGF0IGUgbWlnaHQgb3ZlcmZsb3cuCi0gICAgICAgICAgICAgICAgICAgICAqLwotICAg
ICAgICAgICAgICAgICAgICBleHBvbmVudCA9IDE5OTk5OyAvKiBzYWZlIGZvciAxNiBiaXQgaW50
cyAqLwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgZXhwb25lbnQg
PSBzdGF0aWNfY2FzdDxpbnQ+KGV4cG9uZW50MzIpOwotICAgICAgICAgICAgICAgIGlmIChleHBv
bmVudFNpZ24pCi0gICAgICAgICAgICAgICAgICAgIGV4cG9uZW50ID0gLWV4cG9uZW50OwotICAg
ICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgZXhwb25lbnQgPSAwOwotICAgICAgICB9
Ci0gICAgfQotCi0gICAgaW50IGludERlY2ltYWxQbGFjZXMgPSBiYXNlRGVjaW1hbFBsYWNlcyAt
IGV4cG9uZW50OwotICAgIGlmIChpbnREZWNpbWFsUGxhY2VzIDwgMCkKLSAgICAgICAgKmRlY2lt
YWxQbGFjZXMgPSAwOwotICAgIGVsc2UgaWYgKGludERlY2ltYWxQbGFjZXMgPiAxOTk5OSkKLSAg
ICAgICAgKmRlY2ltYWxQbGFjZXMgPSAxOTk5OTsKLSAgICBlbHNlCi0gICAgICAgICpkZWNpbWFs
UGxhY2VzID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGludERlY2ltYWxQbGFjZXMpOwotCi0gICAg
cmV0dXJuIHZhbHVlOwotfQotCi1kb3VibGUgcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGVXaXRo
RGVjaW1hbFBsYWNlcyhjb25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgKmRlY2ltYWxQbGFj
ZXMpCi17Ci0gICAgcmV0dXJuIHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlV2l0aERlY2ltYWxQ
bGFjZXMoc3RyaW5nLCBkZWNpbWFsUGxhY2VzLCBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46
OnF1aWV0X05hTigpKTsKLX0KLQogLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1h
cHBzL2N1cnJlbnQtd29yay8jcnVsZXMtZm9yLXBhcnNpbmctaW50ZWdlcnMKIGJvb2wgcGFyc2VI
VE1MSW50ZWdlcihjb25zdCBTdHJpbmcmIGlucHV0LCBpbnQmIHZhbHVlKQogewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oCmluZGV4IDhhNzc0ZjllZTQz
MjVmNzk5NmRjZWU4MDJlNzg1OTIxZjEyMDA3MjEuLmU4ZWJiZTNkMDYwZTFhMzhjNGI0OGE0YzAy
YWIzNTU3MTlmMmFlYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxQYXJzZXJJZGlvbXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFy
c2VySWRpb21zLmgKQEAgLTMwLDYgKzMwLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitj
bGFzcyBEZWNpbWFsOworCiAvLyBTcGFjZSBjaGFyYWN0ZXJzIGFzIGRlZmluZWQgYnkgdGhlIEhU
TUwgc3BlY2lmaWNhdGlvbi4KIGJvb2wgaXNIVE1MU3BhY2UoVUNoYXIpOwogYm9vbCBpc0hUTUxM
aW5lQnJlYWsoVUNoYXIpOwpAQCAtMzksMTUgKzQxLDE4IEBAIGJvb2wgaXNOb3RIVE1MU3BhY2Uo
VUNoYXIpOwogU3RyaW5nIHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhjb25zdCBT
dHJpbmcmKTsKIAogLy8gQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIEhUTUwgc3BlY2lmaWNhdGlv
bidzIGFsZ29yaXRobSB0byBjb252ZXJ0IGEgbnVtYmVyIHRvIGEgc3RyaW5nIGZvciBudW1iZXIg
YW5kIHJhbmdlIHR5cGVzLgorU3RyaW5nIHNlcmlhbGl6ZUZvck51bWJlclR5cGUoY29uc3QgRGVj
aW1hbCYpOwogU3RyaW5nIHNlcmlhbGl6ZUZvck51bWJlclR5cGUoZG91YmxlKTsKIAorLy8gQ29u
dmVydCB0aGUgc3BlY2lmaWVkIHN0cmluZyB0byBhIGRlY2ltYWwuIElmIHRoZSBjb252ZXJzaW9u
IGZhaWxzLCB0aGUgcmV0dXJuIHZhbHVlIGlzIGZhbHNlLgorLy8gTGVhZGluZyBvciB0cmFpbGlu
ZyBpbGxlZ2FsIGNoYXJhY3RlcnMgY2F1c2UgZmFpbHVyZSwgYXMgZG9lcyBwYXNzaW5nIGFuIGVt
cHR5IHN0cmluZy4KK0RlY2ltYWwgcGFyc2VUb0RlY2ltYWxGb3JOdW1iZXJUeXBlKGNvbnN0IFN0
cmluZyYpOworRGVjaW1hbCBwYXJzZVRvRGVjaW1hbEZvck51bWJlclR5cGUoY29uc3QgU3RyaW5n
JiwgY29uc3QgRGVjaW1hbCYgZmFsbGJhY2tWYWx1ZSk7CisKIC8vIENvbnZlcnQgdGhlIHNwZWNp
ZmllZCBzdHJpbmcgdG8gYSBkb3VibGUuIElmIHRoZSBjb252ZXJzaW9uIGZhaWxzLCB0aGUgcmV0
dXJuIHZhbHVlIGlzIGZhbHNlLgogLy8gTGVhZGluZyBvciB0cmFpbGluZyBpbGxlZ2FsIGNoYXJh
Y3RlcnMgY2F1c2UgZmFpbHVyZSwgYXMgZG9lcyBwYXNzaW5nIGFuIGVtcHR5IHN0cmluZy4KLS8v
IFRoZSBkb3VibGUqIHBhcmFtZXRlciBtYXkgYmUgMCB0byBjaGVjayBpZiB0aGUgc3RyaW5nIGNh
biBiZSBwYXJzZWQgd2l0aG91dCBnZXR0aW5nIHRoZSByZXN1bHQuCiBkb3VibGUgcGFyc2VUb0Rv
dWJsZUZvck51bWJlclR5cGUoY29uc3QgU3RyaW5nJik7CiBkb3VibGUgcGFyc2VUb0RvdWJsZUZv
ck51bWJlclR5cGUoY29uc3QgU3RyaW5nJiwgZG91YmxlIGZhbGxiYWNrVmFsdWUpOwotZG91Ymxl
IHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlV2l0aERlY2ltYWxQbGFjZXMoY29uc3QgU3RyaW5n
JiwgdW5zaWduZWQqKTsKLWRvdWJsZSBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZVdpdGhEZWNp
bWFsUGxhY2VzKGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkKiwgZG91YmxlIGZhbGxiYWNrVmFsdWUp
OwogCiAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3Jr
LyNydWxlcy1mb3ItcGFyc2luZy1pbnRlZ2VycwogYm9vbCBwYXJzZUhUTUxJbnRlZ2VyKGNvbnN0
IFN0cmluZyYsIGludCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
Q2FsZW5kYXJQaWNrZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0Nh
bGVuZGFyUGlja2VyRWxlbWVudC5jcHAKaW5kZXggMWE3YjQ5ZmE2NDhmOWVlMzc4MTQ5OTU0ZTRh
NjdiZWUxNjYyY2Q1OC4uNTM1OGNjYWY3YTNkZjJlMzNhMDNlYmYwYzg4OTExYjBjMDg4MmJjNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ2FsZW5kYXJQaWNrZXJFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9DYWxlbmRhclBpY2tlckVs
ZW1lbnQuY3BwCkBAIC0yMDgsNyArMjA4LDcgQEAgdm9pZCBDYWxlbmRhclBpY2tlckVsZW1lbnQ6
OndyaXRlRG9jdW1lbnQoRG9jdW1lbnRXcml0ZXImIHdyaXRlcikKICAgICBTdHJpbmcgbWluU3Ry
aW5nID0gZGF0ZS50b1N0cmluZygpOwogICAgIGRhdGUuc2V0TWlsbGlzZWNvbmRzU2luY2VFcG9j
aEZvckRhdGUoaW5wdXQtPm1heGltdW0oKSk7CiAgICAgU3RyaW5nIG1heFN0cmluZyA9IGRhdGUu
dG9TdHJpbmcoKTsKLSAgICBkb3VibGUgc3RlcDsKKyAgICBEZWNpbWFsIHN0ZXA7CiAgICAgU3Ry
aW5nIHN0ZXBTdHJpbmcgPSBpbnB1dC0+ZmFzdEdldEF0dHJpYnV0ZShzdGVwQXR0cik7CiAgICAg
aWYgKHN0ZXBTdHJpbmcuaXNFbXB0eSgpIHx8ICFpbnB1dC0+Z2V0QWxsb3dlZFZhbHVlU3RlcCgm
c3RlcCkpCiAgICAgICAgIHN0ZXBTdHJpbmcgPSAiMSI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcAppbmRleCA4NDIyYTMwMTk5MDIyOTkx
MWI1OGI2MDA3OGRkMTgwOTY0NWQ5ZDdjLi5mMjBkZmFkY2E2MGIyMGQ2YmUwMGMzOTE5N2E4MmE3
NTUwMWFhMGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJU
aHVtYkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRo
dW1iRWxlbWVudC5jcHAKQEAgLTUxLDEwICs1MSwxMCBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWlubGluZSBzdGF0aWMgZG91YmxlIHNsaWRlclBvc2l0
aW9uKEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQpCitpbmxpbmUgc3RhdGljIERlY2ltYWwgc2xp
ZGVyUG9zaXRpb24oSFRNTElucHV0RWxlbWVudCogZWxlbWVudCkKIHsKICAgICBjb25zdCBTdGVw
UmFuZ2Ugc3RlcFJhbmdlKGVsZW1lbnQtPmNyZWF0ZVN0ZXBSYW5nZShSZWplY3RBbnkpKTsKLSAg
ICBjb25zdCBkb3VibGUgb2xkVmFsdWUgPSBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZShlbGVt
ZW50LT52YWx1ZSgpLCBzdGVwUmFuZ2UuZGVmYXVsdFZhbHVlKCkpOworICAgIGNvbnN0IERlY2lt
YWwgb2xkVmFsdWUgPSBwYXJzZVRvRGVjaW1hbEZvck51bWJlclR5cGUoZWxlbWVudC0+dmFsdWUo
KSwgc3RlcFJhbmdlLmRlZmF1bHRWYWx1ZSgpKTsKICAgICByZXR1cm4gc3RlcFJhbmdlLnByb3Bv
cnRpb25Gcm9tVmFsdWUoc3RlcFJhbmdlLmNsYW1wVmFsdWUob2xkVmFsdWUpKTsKIH0KIApAQCAt
MTEwLDcgKzExMCw3IEBAIHZvaWQgUmVuZGVyU2xpZGVyVGh1bWI6OmxheW91dCgpCiAgICAgSFRN
TElucHV0RWxlbWVudCogaW5wdXQgPSBub2RlKCktPnNoYWRvd0FuY2VzdG9yTm9kZSgpLT50b0lu
cHV0RWxlbWVudCgpOwogICAgIGJvb2wgaXNWZXJ0aWNhbCA9IHN0eWxlKCktPmFwcGVhcmFuY2Uo
KSA9PSBTbGlkZXJUaHVtYlZlcnRpY2FsUGFydCB8fCBzdHlsZSgpLT5hcHBlYXJhbmNlKCkgPT0g
TWVkaWFWb2x1bWVTbGlkZXJUaHVtYlBhcnQ7CiAKLSAgICBkb3VibGUgZnJhY3Rpb24gPSBzbGlk
ZXJQb3NpdGlvbihpbnB1dCkgKiAxMDA7CisgICAgZG91YmxlIGZyYWN0aW9uID0gcGFyc2VUb0Rv
dWJsZUZvck51bWJlclR5cGUoKHNsaWRlclBvc2l0aW9uKGlucHV0KSAqIDEwMCkudG9TdHJpbmco
KSk7CiAgICAgaWYgKGlzVmVydGljYWwpCiAgICAgICAgIHN0eWxlKCktPnNldFRvcChMZW5ndGgo
MTAwIC0gZnJhY3Rpb24sIFBlcmNlbnQpKTsKICAgICBlbHNlIGlmIChzdHlsZSgpLT5pc0xlZnRU
b1JpZ2h0RGlyZWN0aW9uKCkpCkBAIC0yMzYsMTEgKzIzNiwxMCBAQCB2b2lkIFNsaWRlclRodW1i
RWxlbWVudDo6c2V0UG9zaXRpb25Gcm9tUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50KQog
ICAgIGlmIChwb3NpdGlvbiA9PSBjdXJyZW50UG9zaXRpb24pCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGRvdWJsZSBmcmFjdGlvbiA9IHN0YXRpY19jYXN0PGRvdWJsZT4ocG9zaXRpb24pIC8gdHJh
Y2tTaXplOwotICAgIGlmIChpc1ZlcnRpY2FsIHx8ICFyZW5kZXJCb3goKS0+c3R5bGUoKS0+aXNM
ZWZ0VG9SaWdodERpcmVjdGlvbigpKQotICAgICAgICBmcmFjdGlvbiA9IDEgLSBmcmFjdGlvbjsK
LSAgICBTdGVwUmFuZ2Ugc3RlcFJhbmdlKGlucHV0LT5jcmVhdGVTdGVwUmFuZ2UoUmVqZWN0QW55
KSk7Ci0gICAgZG91YmxlIHZhbHVlID0gc3RlcFJhbmdlLmNsYW1wVmFsdWUoc3RlcFJhbmdlLnZh
bHVlRnJvbVByb3BvcnRpb24oZnJhY3Rpb24pKTsKKyAgICBjb25zdCBEZWNpbWFsIHJhdGlvID0g
cGFyc2VUb0RlY2ltYWxGb3JOdW1iZXJUeXBlKHNlcmlhbGl6ZUZvck51bWJlclR5cGUoc3RhdGlj
X2Nhc3Q8ZG91YmxlPihwb3NpdGlvbikgLyB0cmFja1NpemUpKTsKKyAgICBjb25zdCBEZWNpbWFs
IGZyYWN0aW9uID0gaXNWZXJ0aWNhbCB8fCAhcmVuZGVyQm94KCktPnN0eWxlKCktPmlzTGVmdFRv
UmlnaHREaXJlY3Rpb24oKSA/ICBEZWNpbWFsKDEpIC0gcmF0aW8gOiByYXRpbzsKKyAgICBjb25z
dCBTdGVwUmFuZ2Ugc3RlcFJhbmdlKGlucHV0LT5jcmVhdGVTdGVwUmFuZ2UoUmVqZWN0QW55KSk7
CisgICAgY29uc3QgRGVjaW1hbCB2YWx1ZSA9IHN0ZXBSYW5nZS5jbGFtcFZhbHVlKHN0ZXBSYW5n
ZS52YWx1ZUZyb21Qcm9wb3J0aW9uKGZyYWN0aW9uKSk7CiAKICAgICAvLyBGSVhNRTogVGhpcyBp
cyBubyBsb25nZXIgYmVpbmcgc2V0IGZyb20gcmVuZGVyZXIuIENvbnNpZGVyIHVwZGF0aW5nIHRo
ZSBtZXRob2QgbmFtZS4KICAgICBpbnB1dC0+c2V0VmFsdWVGcm9tUmVuZGVyZXIoc2VyaWFsaXpl
Rm9yTnVtYmVyVHlwZSh2YWx1ZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vRGVjaW1hbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EZWNpbWFsLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42YWI4MjY1ZWI3ODU5MzU3YjY4MDM2Mjc5NmY5ODM4ZTczNmIyZWQ4Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGVjaW1hbC5jcHAKQEAgLTAsMCAr
MSwxMTEzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRlY2ltYWwuaCIKKworI2lu
Y2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDxmbG9hdC5oPgorCisjaW5jbHVkZSA8d3RmL0Fz
c2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdCdWlsZGVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNl
IERlY2ltYWxQcml2YXRlIHsKKwordXNpbmcgbmFtZXNwYWNlIHN0ZDsKKworLy8gRklYTUU6IFVJ
TlQ2NF9DKDB4MTYzNDU3ODVEODlGRkZGKSBzaG91bGQgYmUgdXNlZCBidXQgaXQgZGlkIG5vdCBj
b21waWxlIG9uIFF0IGJvdHMuCisjaWYgQ09NUElMRVIoTVNWQykKK3N0YXRpYyBjb25zdCB1aW50
NjRfdCBNYXhDb2VmZmljaWVudCA9IDB4MTYzNDU3ODVEODlGRkZGdWk2NDsgLy8gOTk5OTk5OTk5
OTk5OTk5OTk5OyAvLyAxOCA5J3MKKyNlbHNlCitzdGF0aWMgY29uc3QgdWludDY0X3QgTWF4Q29l
ZmZpY2llbnQgPSAweDE2MzQ1Nzg1RDg5RkZGRnVsbDsgLy8gOTk5OTk5OTk5OTk5OTk5OTk5OyAv
LyAxOCA5J3MKKyNlbmRpZgorCitzdGF0aWMgY29uc3QgdWludDMyX3QgRXhwb25lbnRNYXNrID0g
MHg3RkY7CisKK3N0YXRpYyBjb25zdCB1aW50MzJfdCBOZWdhdGl2ZUluZmluaXR5UGF0dGVybiA9
IHVpbnQzMl90KDB4ODAwMDA3RkYpOworc3RhdGljIGNvbnN0IHVpbnQzMl90IFBvc2l0aXZlSW5m
aW5pdHlQYXR0ZXJuID0gdWludDMyX3QoMHgwMDAwMDdGRik7CisKK3N0YXRpYyBjb25zdCB1aW50
MzJfdCBOYU5QYXR0ZXJuID0gdWludDMyX3QoMHgwMDAwMEZGRik7CisKK3N0YXRpYyBjb25zdCB1
aW50MzJfdCBOZWdhdGl2ZVplcm9QYXR0ZXJuID0gdWludDMyX3QoMHg4MDAwMDNGRik7CitzdGF0
aWMgY29uc3QgdWludDMyX3QgUG9zaXRpdmVaZXJvUGF0dGVybiA9IHVpbnQzMl90KDB4MDAwMDAz
RkYpOworCitzdGF0aWMgY29uc3QgdWludDMyX3QgTmVnYXRpdmVQYXR0ZXJuID0gdWludDMyX3Qo
MHg4MDAwMDAwMCk7CitzdGF0aWMgY29uc3QgdWludDMyX3QgUG9zaXRpdmVQYXR0ZXJuID0gMDsK
KworLy8gVGhpcyBjbGFzcyBoYW5kbGVzIERlY2ltYWwgc3BlY2lhbCB2YWx1ZXMuCitjbGFzcyBT
cGVjaWFsVmFsdWVIYW5kbGVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTcGVjaWFsVmFs
dWVIYW5kbGVyKTsKK3B1YmxpYzoKKyAgICBlbnVtIEhhbmRsZVJlc3VsdCB7CisgICAgICAgIEJv
dGhGaW5pdGUsCisgICAgICAgIEJvdGhpbmZpbml0eSwKKyAgICAgICAgRWl0aGVyTmFOLAorICAg
ICAgICBMaHNJc2luZmluaXR5LAorICAgICAgICBSaHNJc2luZmluaXR5LAorICAgIH07CisKKyAg
ICBTcGVjaWFsVmFsdWVIYW5kbGVyKGNvbnN0IERlY2ltYWwmLCBjb25zdCBEZWNpbWFsJik7Cisg
ICAgSGFuZGxlUmVzdWx0IGhhbmRsZSgpOworICAgIERlY2ltYWwgdmFsdWUoKSBjb25zdDsKKwor
cHJpdmF0ZToKKyAgICBlbnVtIFJlc3VsdCB7CisgICAgICAgIFJlc3VsdElzTGhzLAorICAgICAg
ICBSZXN1bHRJc1JocywKKyAgICAgICAgUmVzdWx0SXNVbmtub3duLAorICAgIH07CisKKyAgICBj
b25zdCBEZWNpbWFsJiBtX2xoczsKKyAgICBSZXN1bHQgbV9yZXN1bHQ7CisgICAgY29uc3QgRGVj
aW1hbCYgbV9yaHM7Cit9OworCisvLyBUaGlzIGNsYXNzIGlzIHVzZWQgZm9yIDEyOCBiaXQgdW5z
aWduZWQgaW50ZWdlciBhcml0aG1ldGljLgorY2xhc3MgVUludDEyOCB7CitwdWJsaWM6CisgICAg
VUludDEyOCh1aW50NjRfdCwgdWludDY0X3QpOworCisgICAgVUludDEyOCYgb3BlcmF0b3IgLz0o
dWludDMyX3QpOworCisgICAgdWludDY0X3QgaGlnaCgpIGNvbnN0IHsgcmV0dXJuIG1faGlnaDsg
fQorICAgIHVpbnQ2NF90IGxvdygpIGNvbnN0IHsgcmV0dXJuIG1fbG93OyB9CisKKyAgICBzdGF0
aWMgVUludDEyOCBtdWx0aXBseSh1aW50NjRfdCwgdWludDY0X3QpOworCitwcml2YXRlOgorICAg
IGJvb2wgaXNaZXJvKCkgY29uc3QgeyByZXR1cm4gIW1fbG93ICYmICFtX2hpZ2g7IH0KKworICAg
IHVpbnQ2NF90IG1faGlnaDsKKyAgICB1aW50NjRfdCBtX2xvdzsKK307CisKK3N0YXRpYyBpbnQg
Y291bnREaWdpdHModWludDY0X3QgeCkKK3sKKyAgICBpbnQgbnVtYmVyT2ZEaWdpdHMgPSAwOwor
ICAgIHVpbnQ2NF90IHBvd2VyT2YxMCA9IDE7CisgICAgd2hpbGUgKHggPj0gcG93ZXJPZjEwKSB7
CisgICAgICAgICsrbnVtYmVyT2ZEaWdpdHM7CisgICAgICAgIGlmIChwb3dlck9mMTAgPj0gdWlu
dDY0X3QoLTEpIC8gMTApCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgcG93ZXJPZjEwICo9
IDEwOworICAgIH0KKyAgICByZXR1cm4gbnVtYmVyT2ZEaWdpdHM7Cit9CisKK3N0YXRpYyB1aW50
NjRfdCBtdWx0aXBseUhpZ2godWludDY0X3QgdSwgdWludDY0X3QgdikKK3sKKyAgICBjb25zdCBp
bnQgbiA9IDY0OworICAgIGNvbnN0IGludCBuMiA9IG4gLyAyOworICAgIGNvbnN0IHVpbnQ2NF90
IG1hc2sgPSAodWludDY0X3QoMSkgPDwgbjIpIC0gMTsKKyAgICB1aW50NjRfdCB1MCA9IHUgJiBt
YXNrOworICAgIHVpbnQ2NF90IHUxID0gdSA+PiBuMjsKKyAgICB1aW50NjRfdCB2MCA9IHYgJiBt
YXNrOworICAgIHVpbnQ2NF90IHYxID0gdiA+PiBuMjsKKyAgICB1aW50NjRfdCB3MCA9IHUwICog
djA7CisgICAgdWludDY0X3QgdHQgPSB1MSAqIHYwICsgKHcwID4+IG4yKTsKKyAgICB1aW50NjRf
dCB3MSA9IHR0ICYgbWFzazsKKyAgICB1aW50NjRfdCB3MiA9IHR0ID4+IG4yOworICAgIHcxID0g
dTAgKiB2MSArIHcxOworICAgIHJldHVybiB1MSAqIHYxICsgdzIgKyAodzEgPj4gbjIpOworfQor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorc3RhdGljIFQgcG93ZXIoVCBjb25zdCB4LCB1bnNpZ25l
ZCBuKQoreworICAgIFQgeSA9IDE7CisgICAgVCB6ID0geDsKKyAgICBmb3IgKDs7KSB7CisgICAg
ICAgIGlmIChuICYgMSkKKyAgICAgICAgICAgIHkgPSB5ICogejsKKworICAgICAgICBuID4+PSAx
OworICAgICAgICBpZiAoIW4pCisgICAgICAgICAgICByZXR1cm4geTsKKworICAgICAgICB6ID0g
eiAqIHo7CisgICAgfQorfQorCitzdGF0aWMgdWludDY0X3Qgc2NhbGVEb3duKHVpbnQ2NF90IHgs
IGludCBuKQoreworICAgIEFTU0VSVChuID49IDApOworICAgIHdoaWxlIChuID4gMCAmJiB4KSB7
CisgICAgICAgIHggLz0gMTA7CisgICAgICAgIC0tbjsKKyAgICB9CisgICAgcmV0dXJuIHg7Cit9
CisKK3N0YXRpYyB1aW50NjRfdCBzY2FsZVVwKHVpbnQ2NF90IHgsIGludCBuKQoreworICAgIEFT
U0VSVChuID49IDApOworICAgIEFTU0VSVChuIDwgRGVjaW1hbDo6UHJlY2lzaW9uKTsKKyAgICB1
aW50NjRfdCByZXN1bHQgPSB4ICogcG93ZXIodWludDY0X3QoMTApLCBuKTsKKyAgICBBU1NFUlQo
cmVzdWx0ID49IHgpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK1NwZWNpYWxWYWx1ZUhhbmRs
ZXI6OlNwZWNpYWxWYWx1ZUhhbmRsZXIoY29uc3QgRGVjaW1hbCYgbGhzLCBjb25zdCBEZWNpbWFs
JiByaHMpCisgICAgOiBtX2xocyhsaHMpLCBtX3Jlc3VsdChSZXN1bHRJc1Vua25vd24pLCBtX3Jo
cyhyaHMpCit7Cit9CisKK1NwZWNpYWxWYWx1ZUhhbmRsZXI6OkhhbmRsZVJlc3VsdCBTcGVjaWFs
VmFsdWVIYW5kbGVyOjpoYW5kbGUoKQoreworICAgIGlmIChtX2xocy5pc0Zpbml0ZSgpICYmIG1f
cmhzLmlzRmluaXRlKCkpCisgICAgICAgIHJldHVybiBCb3RoRmluaXRlOworCisgICAgY29uc3Qg
RGVjaW1hbDo6Rm9ybWF0Q2xhc3MgbGhzQ2xhc3MgPSBtX2xocy5mb3JtYXRDbGFzcygpOworICAg
IGNvbnN0IERlY2ltYWw6OkZvcm1hdENsYXNzIHJoc0NsYXNzID0gbV9yaHMuZm9ybWF0Q2xhc3Mo
KTsKKyAgICBpZiAobGhzQ2xhc3MgPT0gRGVjaW1hbDo6Q2xhc3NOYU4pIHsKKyAgICAgICAgbV9y
ZXN1bHQgPSBSZXN1bHRJc0xoczsKKyAgICAgICAgcmV0dXJuIEVpdGhlck5hTjsKKyAgICAgfQor
CisgICAgaWYgKHJoc0NsYXNzID09IERlY2ltYWw6OkNsYXNzTmFOKSB7CisgICAgICAgIG1fcmVz
dWx0ID0gUmVzdWx0SXNSaHM7CisgICAgICAgIHJldHVybiBFaXRoZXJOYU47CisgICAgIH0KKwor
ICAgIGlmIChsaHNDbGFzcyA9PSBEZWNpbWFsOjpDbGFzc0luZmluaXR5KQorICAgICAgICByZXR1
cm4gcmhzQ2xhc3MgPT0gRGVjaW1hbDo6Q2xhc3NJbmZpbml0eSA/IEJvdGhpbmZpbml0eSA6IExo
c0lzaW5maW5pdHk7CisKKyAgICBpZiAocmhzQ2xhc3MgPT0gRGVjaW1hbDo6Q2xhc3NJbmZpbml0
eSkKKyAgICAgICAgcmV0dXJuIFJoc0lzaW5maW5pdHk7CisKKyAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICByZXR1cm4gQm90aEZpbml0ZTsKK30KKworRGVjaW1hbCBTcGVjaWFsVmFsdWVI
YW5kbGVyOjp2YWx1ZSgpIGNvbnN0Cit7CisgICAgc3dpdGNoIChtX3Jlc3VsdCkgeworICAgIGNh
c2UgUmVzdWx0SXNMaHM6CisgICAgICAgIHJldHVybiBtX2xoczsKKyAgICBjYXNlIFJlc3VsdElz
UmhzOgorICAgICAgICByZXR1cm4gbV9yaHM7CisgICAgY2FzZSBSZXN1bHRJc1Vua25vd246Cisg
ICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVy
biBtX2xoczsKKyAgICB9Cit9CisKK1VJbnQxMjg6OlVJbnQxMjgodWludDY0X3QgbG93LCB1aW50
NjRfdCBoaWdoKQorICAgIDogbV9oaWdoKGhpZ2gpLCBtX2xvdyhsb3cpCit7Cit9CisKK1VJbnQx
MjgmIFVJbnQxMjg6Om9wZXJhdG9yIC89KGNvbnN0IHVpbnQzMl90IGRpdmlzb3IpCit7CisgICAg
aWYgKCFtX2hpZ2gpIHsKKyAgICAgICAgbV9sb3cgLz0gZGl2aXNvcjsKKyAgICAgICAgcmV0dXJu
ICp0aGlzOworICAgIH0KKworICAgIHVpbnQzMl90IGRpdmlkZW5kWzRdOworICAgIGRpdmlkZW5k
WzBdID0gdWludDMyX3QobV9sb3cgJiB1aW50MzJfdCgtMSkpOworICAgIGRpdmlkZW5kWzFdID0g
dWludDMyX3QobV9sb3cgPj4gMzIpOworICAgIGRpdmlkZW5kWzJdID0gdWludDMyX3QobV9oaWdo
ICYgdWludDMyX3QoLTEpKTsKKyAgICBkaXZpZGVuZFszXSA9IHVpbnQzMl90KG1faGlnaCA+PiAz
Mik7CisKKyAgICB1aW50MzJfdCBxdW90aWVudFs0XTsKKyAgICB1aW50MzJfdCByZW1haW5kZXIg
PSAwOworICAgIGZvciAoaW50IGkgPSAzOyBpID49IDA7IC0taSkgeworICAgICAgICBjb25zdCB1
aW50NjRfdCB3b3JrID0gKHVpbnQ2NF90KHJlbWFpbmRlcikgPDwgMzIpIHwgZGl2aWRlbmRbaV07
CisgICAgICAgIHJlbWFpbmRlciA9IHVpbnQzMl90KHdvcmsgJSBkaXZpc29yKTsKKyAgICAgICAg
cXVvdGllbnRbaV0gPSB1aW50MzJfdCh3b3JrIC8gZGl2aXNvcik7CisgICAgfQorICAgIG1fbG93
ID0gcXVvdGllbnRbMF0gfCAodWludDY0X3QocXVvdGllbnRbMV0pIDw8IDMyKTsKKyAgICBtX2hp
Z2ggPSBxdW90aWVudFsyXSB8ICh1aW50NjRfdChxdW90aWVudFszXSkgPDwgMzIpOworICAgIHJl
dHVybiAqdGhpczsKK30KKworVUludDEyOCBVSW50MTI4OjptdWx0aXBseSh1aW50NjRfdCB1LCB1
aW50NjRfdCB2KQoreworICAgIHJldHVybiBVSW50MTI4KHUgKiB2LCBtdWx0aXBseUhpZ2godSwg
dikpOworfQorCit9IC8vIERlY2ltYWxQcml2YXRlCisKK3VzaW5nIG5hbWVzcGFjZSBEZWNpbWFs
UHJpdmF0ZTsKKworRGVjaW1hbDo6RW5jb2RlZERhdGE6OkVuY29kZWREYXRhKHVpbnQzMl90IHBh
dHRlcm4pCisgICAgOiBtX2NvZWZmaWNpZW50KDApCisgICAgLCBtX3BhY2tlZEZpZWxkKHBhdHRl
cm4pCit7CisgICAgQVNTRVJUKChwYXR0ZXJuICYgUG9zaXRpdmVaZXJvUGF0dGVybikgPT0gUG9z
aXRpdmVaZXJvUGF0dGVybik7Cit9CisKK0RlY2ltYWw6OkVuY29kZWREYXRhOjpFbmNvZGVkRGF0
YSh1aW50NjRfdCBjb2VmZmljaWVudCwgY29uc3QgaW50IGV4cG9uZW50LCBjb25zdCBTaWduIHNp
Z24pCit7CisgICAgaW50IHJhd0V4cG9uZW50ID0gZXhwb25lbnQgKyBFYmlhczsKKyAgICBpZiAo
dW5zaWduZWQocmF3RXhwb25lbnQpIDwgdW5zaWduZWQoRW1heCkpIHsKKyAgICAgICAgd2hpbGUg
KGNvZWZmaWNpZW50ID49IE1heENvZWZmaWNpZW50KSB7CisgICAgICAgICAgICBjb2VmZmljaWVu
dCAvPSAxMDsKKyAgICAgICAgICAgICsrcmF3RXhwb25lbnQ7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBpZiAocmF3RXhwb25lbnQgPj0gRW1heCkgeworICAgICAgICBtX2NvZWZmaWNpZW50ID0g
MDsKKyAgICAgICAgbV9wYWNrZWRGaWVsZCA9IHNpZ24gPT0gTWludXMgPyBOZWdhdGl2ZUluZmlu
aXR5UGF0dGVybiA6IFBvc2l0aXZlSW5maW5pdHlQYXR0ZXJuOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgaWYgKHJhd0V4cG9uZW50IDwgMCkgeworICAgICAgICBtX2NvZWZmaWNpZW50
ID0gMDsKKyAgICAgICAgbV9wYWNrZWRGaWVsZCA9IHNpZ24gPT0gTWludXMgPyBOZWdhdGl2ZVpl
cm9QYXR0ZXJuIDogUG9zaXRpdmVaZXJvUGF0dGVybjsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIG1fY29lZmZpY2llbnQgPSBjb2VmZmljaWVudDsKKyAgICBtX3BhY2tlZEZpZWxkID0g
cmF3RXhwb25lbnQgfCAoc2lnbiA9PSBNaW51cyA/IE5lZ2F0aXZlUGF0dGVybiA6IFBvc2l0aXZl
UGF0dGVybik7Cit9CisKK3VpbnQ2NF90IERlY2ltYWw6OkVuY29kZWREYXRhOjpjb2VmZmljaWVu
dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29lZmZpY2llbnQ7Cit9CisKK2ludCBEZWNpbWFs
OjpFbmNvZGVkRGF0YTo6ZXhwb25lbnQoKSBjb25zdAoreworICAgIHJldHVybiByYXdFeHBvbmVu
dCgpIC0gRGVjaW1hbDo6RWJpYXM7Cit9CisKK2Jvb2wgRGVjaW1hbDo6RW5jb2RlZERhdGE6Omlz
RmluaXRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIWlzU3BlY2lhbCgpOworfQorCitib29sIERl
Y2ltYWw6OkVuY29kZWREYXRhOjppc1NwZWNpYWwoKSBjb25zdAoreworICAgIHJldHVybiByYXdF
eHBvbmVudCgpID09IERlY2ltYWw6OkVtYXg7Cit9CisKK2Jvb2wgRGVjaW1hbDo6RW5jb2RlZERh
dGE6OmlzWmVybygpIGNvbnN0Cit7CisgICAgcmV0dXJuIGlzRmluaXRlKCkgJiYgIW1fY29lZmZp
Y2llbnQ7Cit9CisKK2ludCBEZWNpbWFsOjpFbmNvZGVkRGF0YTo6cmF3RXhwb25lbnQoKSBjb25z
dAoreworICAgIHJldHVybiBpbnQobV9wYWNrZWRGaWVsZCAmIEV4cG9uZW50TWFzayk7Cit9CisK
K0RlY2ltYWw6OlNpZ24gRGVjaW1hbDo6RW5jb2RlZERhdGE6OnNpZ24oKSBjb25zdAoreworICAg
IHJldHVybiBpbnQobV9wYWNrZWRGaWVsZCkgPCAwID8gTWludXMgOiBQbHVzOworfQorCit2b2lk
IERlY2ltYWw6OkVuY29kZWREYXRhOjpzZXRTaWduKGNvbnN0IFNpZ24gc2lnbikKK3sKKyAgICBp
ZiAoc2lnbiA9PSBNaW51cykKKyAgICAgICAgbV9wYWNrZWRGaWVsZCB8PSB1aW50MzJfdCgxKSA8
PCAzMTsKKyAgICBlbHNlCisgICAgICAgIG1fcGFja2VkRmllbGQgJj0gfih1aW50MzJfdCgxKSA8
PCAzMSk7Cit9CisKK0RlY2ltYWw6OkRlY2ltYWwoKQorICAgIDogbV9kYXRhKDAsIDAsIFBsdXMp
Cit7Cit9CisKK0RlY2ltYWw6OkRlY2ltYWwoaW50MzJfdCBpMzIpCisgICAgOiBtX2RhdGEoaTMy
IDwgMCA/IHVpbnQzMl90KC1pMzIpIDogaTMyLCAwLCBpMzIgPCAwID8gTWludXMgOiBQbHVzKQor
eworfQorCitEZWNpbWFsOjpEZWNpbWFsKHVpbnQ2NF90IGNvZWZmaWNpZW50LCBpbnQgZXhwb25l
bnQsIFNpZ24gc2lnbikKKyAgICA6IG1fZGF0YShjb2VmZmljaWVudCwgZXhwb25lbnQsIHNpZ24p
Cit7Cit9CisKK0RlY2ltYWw6OkRlY2ltYWwoY29uc3QgRW5jb2RlZERhdGEmIGRhdGEpCisgICAg
OiBtX2RhdGEoZGF0YSkKK3sKK30KKworRGVjaW1hbDo6RGVjaW1hbChjb25zdCBEZWNpbWFsJiBv
dGhlcikKKyAgICA6IG1fZGF0YShvdGhlci5tX2RhdGEpCit7Cit9CisKK0RlY2ltYWwmIERlY2lt
YWw6Om9wZXJhdG9yID0oY29uc3QgRGVjaW1hbCYgb3RoZXIpCit7CisgICAgbV9kYXRhID0gb3Ro
ZXIubV9kYXRhOworICAgIHJldHVybiAqdGhpczsKK30KKworRGVjaW1hbCYgRGVjaW1hbDo6b3Bl
cmF0b3IgKz0oY29uc3QgRGVjaW1hbCYgb3RoZXIpCit7CisgICAgbV9kYXRhID0gKCp0aGlzICsg
b3RoZXIpLm1fZGF0YTsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK0RlY2ltYWwmIERlY2ltYWw6
Om9wZXJhdG9yIC09KGNvbnN0IERlY2ltYWwmIG90aGVyKQoreworICAgIG1fZGF0YSA9ICgqdGhp
cyAtIG90aGVyKS5tX2RhdGE7CisgICAgcmV0dXJuICp0aGlzOworfQorCitEZWNpbWFsJiBEZWNp
bWFsOjpvcGVyYXRvciAqPShjb25zdCBEZWNpbWFsJiBvdGhlcikKK3sKKyAgICBtX2RhdGEgPSAo
KnRoaXMgKiBvdGhlcikubV9kYXRhOworICAgIHJldHVybiAqdGhpczsKK30KKworRGVjaW1hbCYg
RGVjaW1hbDo6b3BlcmF0b3IgLz0oY29uc3QgRGVjaW1hbCYgb3RoZXIpCit7CisgICAgbV9kYXRh
ID0gKCp0aGlzIC8gb3RoZXIpLm1fZGF0YTsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK0RlY2lt
YWwgRGVjaW1hbDo6b3BlcmF0b3IgLSgpIGNvbnN0Cit7CisgICAgRGVjaW1hbCByZXN1bHQoKnRo
aXMpOworICAgIHJlc3VsdC5tX2RhdGEuc2V0U2lnbihpbnZlcnRTaWduKG1fZGF0YS5zaWduKCkp
KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitEZWNpbWFsIERlY2ltYWw6Om9wZXJhdG9yICso
Y29uc3QgRGVjaW1hbCYgcmhzKSBjb25zdAoreworICAgIGNvbnN0IERlY2ltYWwmIGxocyA9ICp0
aGlzOworICAgIGNvbnN0IFNpZ24gbGhzU2lnbiA9IGxocy5zaWduKCk7CisgICAgY29uc3QgU2ln
biByaHNTaWduID0gcmhzLnNpZ24oKTsKKworICAgIFNwZWNpYWxWYWx1ZUhhbmRsZXIgaGFuZGxl
cihsaHMsIHJocyk7CisgICAgc3dpdGNoIChoYW5kbGVyLmhhbmRsZSgpKSB7CisgICAgY2FzZSBT
cGVjaWFsVmFsdWVIYW5kbGVyOjpCb3RoRmluaXRlOgorICAgICAgICBicmVhazsKKworICAgIGNh
c2UgU3BlY2lhbFZhbHVlSGFuZGxlcjo6Qm90aGluZmluaXR5OgorICAgICAgICByZXR1cm4gbGhz
U2lnbiA9PSByaHNTaWduID8gbGhzIDogbmFuKCk7CisKKyAgICBjYXNlIFNwZWNpYWxWYWx1ZUhh
bmRsZXI6OkVpdGhlck5hTjoKKyAgICAgICAgcmV0dXJuIGhhbmRsZXIudmFsdWUoKTsKKworICAg
IGNhc2UgU3BlY2lhbFZhbHVlSGFuZGxlcjo6TGhzSXNpbmZpbml0eToKKyAgICAgICAgcmV0dXJu
IGxoczsKKworICAgIGNhc2UgU3BlY2lhbFZhbHVlSGFuZGxlcjo6UmhzSXNpbmZpbml0eToKKyAg
ICAgICAgcmV0dXJuIHJoczsKKyAgICB9CisKKyAgICBBU1NFUlQobGhzLmlzRmluaXRlKCkpOwor
ICAgIEFTU0VSVChyaHMuaXNGaW5pdGUoKSk7CisKKyAgICBjb25zdCBpbnQgbGhzRXhwb25lbnQg
PSBsaHMuZXhwb25lbnQoKTsKKyAgICBjb25zdCBpbnQgcmhzRXhwb25lbnQgPSByaHMuZXhwb25l
bnQoKTsKKyAgICBpbnQgcmVzdWx0RXhwb25lbnQgPSBtaW4obGhzRXhwb25lbnQsIHJoc0V4cG9u
ZW50KTsKKyAgICB1aW50NjRfdCBsaHNDb2VmZmljaWVudCA9IGxocy5tX2RhdGEuY29lZmZpY2ll
bnQoKTsKKyAgICB1aW50NjRfdCByaHNDb2VmZmljaWVudCA9IHJocy5tX2RhdGEuY29lZmZpY2ll
bnQoKTsKKworICAgIC8vIE1ha2UgY29lZmZpY2llbnQgYWxpZ25lZC4KKyAgICBpZiAobGhzRXhw
b25lbnQgPiByaHNFeHBvbmVudCkgeworICAgICAgICBjb25zdCBpbnQgbnVtYmVyT2ZMSFNEaWdp
dHMgPSBjb3VudERpZ2l0cyhsaHNDb2VmZmljaWVudCk7CisgICAgICAgIGlmIChudW1iZXJPZkxI
U0RpZ2l0cykgeworICAgICAgICAgICAgY29uc3QgaW50IGxoc1NoaWZ0QW1vdW50ID0gbGhzRXhw
b25lbnQgLSByaHNFeHBvbmVudDsKKyAgICAgICAgICAgIGNvbnN0IGludCBvdmVyZmxvdyA9IG51
bWJlck9mTEhTRGlnaXRzICsgbGhzU2hpZnRBbW91bnQgLSBQcmVjaXNpb247CisgICAgICAgICAg
ICBpZiAob3ZlcmZsb3cgPD0gMCkKKyAgICAgICAgICAgICAgICBsaHNDb2VmZmljaWVudCA9IHNj
YWxlVXAobGhzQ29lZmZpY2llbnQsIGxoc1NoaWZ0QW1vdW50KTsKKyAgICAgICAgICAgIGVsc2Ug
eworICAgICAgICAgICAgICAgIGxoc0NvZWZmaWNpZW50ID0gc2NhbGVVcChsaHNDb2VmZmljaWVu
dCwgbGhzU2hpZnRBbW91bnQgLSBvdmVyZmxvdyk7CisgICAgICAgICAgICAgICAgcmhzQ29lZmZp
Y2llbnQgPSBzY2FsZURvd24ocmhzQ29lZmZpY2llbnQsIG92ZXJmbG93KTsKKyAgICAgICAgICAg
ICAgICByZXN1bHRFeHBvbmVudCArPSBvdmVyZmxvdzsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorCisgICAgfSBpZiAobGhzRXhwb25lbnQgPCByaHNFeHBvbmVudCkgeworICAgICAgICBjb25z
dCBpbnQgbnVtYmVyT2ZSSFNEaWdpdHMgPSBjb3VudERpZ2l0cyhyaHNDb2VmZmljaWVudCk7Cisg
ICAgICAgIGlmIChudW1iZXJPZlJIU0RpZ2l0cykgeworICAgICAgICAgICAgY29uc3QgaW50IHJo
c1NoaWZ0QW1vdW50ID0gcmhzRXhwb25lbnQgLSBsaHNFeHBvbmVudDsKKyAgICAgICAgICAgIGNv
bnN0IGludCBvdmVyZmxvdyA9IG51bWJlck9mUkhTRGlnaXRzICsgcmhzU2hpZnRBbW91bnQgLSBQ
cmVjaXNpb247CisgICAgICAgICAgICBpZiAob3ZlcmZsb3cgPD0gMCkKKyAgICAgICAgICAgICAg
ICByaHNDb2VmZmljaWVudCA9IHNjYWxlVXAocmhzQ29lZmZpY2llbnQsIHJoc1NoaWZ0QW1vdW50
KTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHJoc0NvZWZmaWNpZW50ID0g
c2NhbGVVcChyaHNDb2VmZmljaWVudCwgcmhzU2hpZnRBbW91bnQgLSBvdmVyZmxvdyk7CisgICAg
ICAgICAgICAgICAgbGhzQ29lZmZpY2llbnQgPSBzY2FsZURvd24obGhzQ29lZmZpY2llbnQsIG92
ZXJmbG93KTsKKyAgICAgICAgICAgICAgICByZXN1bHRFeHBvbmVudCArPSBvdmVyZmxvdzsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHVpbnQ2NF90IGNvbnN0IHJlc3Vs
dCA9IGxoc1NpZ24gPT0gcmhzU2lnbiA/IGxoc0NvZWZmaWNpZW50ICsgcmhzQ29lZmZpY2llbnQg
OiBsaHNDb2VmZmljaWVudCAtIHJoc0NvZWZmaWNpZW50OworICAgIHJldHVybiBsaHNTaWduID09
IE1pbnVzICYmIHJoc1NpZ24gPT0gUGx1cyAmJiAhcmVzdWx0CisgICAgICAgICAgICA/IERlY2lt
YWwoMCwgcmVzdWx0RXhwb25lbnQsIFBsdXMpCisgICAgICAgICAgICA6IGludDY0X3QocmVzdWx0
KSA+PSAwCisgICAgICAgICAgICAgICAgPyBEZWNpbWFsKHJlc3VsdCwgcmVzdWx0RXhwb25lbnQs
IGxoc1NpZ24pCisgICAgICAgICAgICAgICAgOiBEZWNpbWFsKC1pbnQ2NF90KHJlc3VsdCksIHJl
c3VsdEV4cG9uZW50LCBpbnZlcnRTaWduKGxoc1NpZ24pKTsKK30KKworRGVjaW1hbCBEZWNpbWFs
OjpvcGVyYXRvciAtKGNvbnN0IERlY2ltYWwmIHJocykgY29uc3QKK3sKKyAgICBjb25zdCBEZWNp
bWFsJiBsaHMgPSAqdGhpczsKKyAgICBjb25zdCBTaWduIGxoc1NpZ24gPSBsaHMuc2lnbigpOwor
ICAgIGNvbnN0IFNpZ24gcmhzU2lnbiA9IHJocy5zaWduKCk7CisKKyAgICBTcGVjaWFsVmFsdWVI
YW5kbGVyIGhhbmRsZXIobGhzLCByaHMpOworICAgIHN3aXRjaCAoaGFuZGxlci5oYW5kbGUoKSkg
eworICAgIGNhc2UgU3BlY2lhbFZhbHVlSGFuZGxlcjo6Qm90aEZpbml0ZToKKyAgICAgICAgYnJl
YWs7CisKKyAgICBjYXNlIFNwZWNpYWxWYWx1ZUhhbmRsZXI6OkJvdGhpbmZpbml0eToKKyAgICAg
ICAgcmV0dXJuIGxoc1NpZ24gPT0gcmhzU2lnbiA/IG5hbigpIDogbGhzOworCisgICAgY2FzZSBT
cGVjaWFsVmFsdWVIYW5kbGVyOjpFaXRoZXJOYU46CisgICAgICAgIHJldHVybiBoYW5kbGVyLnZh
bHVlKCk7CisKKyAgICBjYXNlIFNwZWNpYWxWYWx1ZUhhbmRsZXI6Okxoc0lzaW5maW5pdHk6Cisg
ICAgICAgIHJldHVybiBsaHM7CisKKyAgICBjYXNlIFNwZWNpYWxWYWx1ZUhhbmRsZXI6OlJoc0lz
aW5maW5pdHk6CisgICAgICAgIHJldHVybiBpbmZpbml0eShpbnZlcnRTaWduKHJoc1NpZ24pKTsK
KyAgICB9CisKKyAgICBBU1NFUlQobGhzLmlzRmluaXRlKCkpOworICAgIEFTU0VSVChyaHMuaXNG
aW5pdGUoKSk7CisKKyAgICB1aW50NjRfdCBsaHNDb2VmZmljaWVudCA9IGxocy5tX2RhdGEuY29l
ZmZpY2llbnQoKTsKKyAgICB1aW50NjRfdCByaHNDb2VmZmljaWVudCA9IHJocy5tX2RhdGEuY29l
ZmZpY2llbnQoKTsKKworICAgIGNvbnN0IGludCBsaHNFeHBvbmVudCA9IGxocy5leHBvbmVudCgp
OworICAgIGNvbnN0IGludCByaHNFeHBvbmVudCA9IHJocy5leHBvbmVudCgpOworICAgIGludCBy
ZXN1bHRFeHBvbmVudCA9IG1pbihsaHNFeHBvbmVudCwgcmhzRXhwb25lbnQpOworCisgICAgLy8g
TWFrZSBjb2VmZmljaWVudCBhbGlnbmVkLgorICAgIGlmIChsaHNFeHBvbmVudCA+IHJoc0V4cG9u
ZW50KSB7CisgICAgICAgIGNvbnN0IGludCBudW1iZXJPZkxIU0RpZ2l0cyA9IGNvdW50RGlnaXRz
KGxoc0NvZWZmaWNpZW50KTsKKyAgICAgICAgaWYgKG51bWJlck9mTEhTRGlnaXRzKSB7CisgICAg
ICAgICAgICBjb25zdCBpbnQgbGhzU2hpZnRBbW91bnQgPSBsaHNFeHBvbmVudCAtIHJoc0V4cG9u
ZW50OworICAgICAgICAgICAgY29uc3QgaW50IG92ZXJmbG93ID0gbnVtYmVyT2ZMSFNEaWdpdHMg
KyBsaHNTaGlmdEFtb3VudCAtIFByZWNpc2lvbjsKKyAgICAgICAgICAgIGlmIChvdmVyZmxvdyA8
PSAwKQorICAgICAgICAgICAgICAgIGxoc0NvZWZmaWNpZW50ID0gc2NhbGVVcChsaHNDb2VmZmlj
aWVudCwgbGhzU2hpZnRBbW91bnQpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAg
ICAgbGhzQ29lZmZpY2llbnQgPSBzY2FsZVVwKGxoc0NvZWZmaWNpZW50LCBsaHNTaGlmdEFtb3Vu
dCAtIG92ZXJmbG93KTsKKyAgICAgICAgICAgICAgICByaHNDb2VmZmljaWVudCA9IHNjYWxlRG93
bihyaHNDb2VmZmljaWVudCwgb3ZlcmZsb3cpOworICAgICAgICAgICAgICAgIHJlc3VsdEV4cG9u
ZW50ICs9IG92ZXJmbG93OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICB9IGlmIChs
aHNFeHBvbmVudCA8IHJoc0V4cG9uZW50KSB7CisgICAgICAgIGNvbnN0IGludCBudW1iZXJPZlJI
U0RpZ2l0cyA9IGNvdW50RGlnaXRzKHJoc0NvZWZmaWNpZW50KTsKKyAgICAgICAgaWYgKG51bWJl
ck9mUkhTRGlnaXRzKSB7CisgICAgICAgICAgICBjb25zdCBpbnQgcmhzU2hpZnRBbW91bnQgPSBy
aHNFeHBvbmVudCAtIGxoc0V4cG9uZW50OworICAgICAgICAgICAgY29uc3QgaW50IG92ZXJmbG93
ID0gbnVtYmVyT2ZSSFNEaWdpdHMgKyByaHNTaGlmdEFtb3VudCAtIFByZWNpc2lvbjsKKyAgICAg
ICAgICAgIGlmIChvdmVyZmxvdyA8PSAwKQorICAgICAgICAgICAgICAgIHJoc0NvZWZmaWNpZW50
ID0gc2NhbGVVcChyaHNDb2VmZmljaWVudCwgcmhzU2hpZnRBbW91bnQpOworICAgICAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgICAgICAgcmhzQ29lZmZpY2llbnQgPSBzY2FsZVVwKHJoc0NvZWZm
aWNpZW50LCByaHNTaGlmdEFtb3VudCAtIG92ZXJmbG93KTsKKyAgICAgICAgICAgICAgICBsaHND
b2VmZmljaWVudCA9IHNjYWxlRG93bihsaHNDb2VmZmljaWVudCwgb3ZlcmZsb3cpOworICAgICAg
ICAgICAgICAgIHJlc3VsdEV4cG9uZW50ICs9IG92ZXJmbG93OworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgfQorCisgICAgdWludDY0X3QgcmVzdWx0ID0gbGhzU2lnbiA9PSByaHNTaWdu
ID8gbGhzQ29lZmZpY2llbnQgLSByaHNDb2VmZmljaWVudCA6IGxoc0NvZWZmaWNpZW50ICsgcmhz
Q29lZmZpY2llbnQ7CisgICAgcmV0dXJuIGxoc1NpZ24gPT0gTWludXMgJiYgcmhzU2lnbiA9PSBN
aW51cyAmJiAhcmVzdWx0CisgICAgICAgICAgICA/IERlY2ltYWwoMCwgcmVzdWx0RXhwb25lbnQs
IFBsdXMpCisgICAgICAgICAgICA6IGludDY0X3QocmVzdWx0KSA+PSAwCisgICAgICAgICAgICAg
ICAgPyBEZWNpbWFsKHJlc3VsdCwgcmVzdWx0RXhwb25lbnQsIGxoc1NpZ24pCisgICAgICAgICAg
ICAgICAgOiBEZWNpbWFsKC1pbnQ2NF90KHJlc3VsdCksIHJlc3VsdEV4cG9uZW50LCBpbnZlcnRT
aWduKGxoc1NpZ24pKTsKK30KKworRGVjaW1hbCBEZWNpbWFsOjpvcGVyYXRvciAqKGNvbnN0IERl
Y2ltYWwmIHJocykgY29uc3QKK3sKKyAgICBjb25zdCBEZWNpbWFsJiBsaHMgPSAqdGhpczsKKyAg
ICBjb25zdCBTaWduIGxoc1NpZ24gPSBsaHMuc2lnbigpOworICAgIGNvbnN0IFNpZ24gcmhzU2ln
biA9IHJocy5zaWduKCk7CisgICAgU2lnbiByZXN1bHRTaWduID0gbGhzU2lnbiA9PSByaHNTaWdu
ID8gUGx1cyA6IE1pbnVzOworCisgICAgU3BlY2lhbFZhbHVlSGFuZGxlciBoYW5kbGVyKGxocywg
cmhzKTsKKyAgICBzd2l0Y2ggKGhhbmRsZXIuaGFuZGxlKCkpIHsKKyAgICBjYXNlIFNwZWNpYWxW
YWx1ZUhhbmRsZXI6OkJvdGhGaW5pdGU6IHsKKyAgICAgICAgY29uc3QgdWludDY0X3QgbGhzQ29l
ZmZpY2llbnQgPSBsaHMubV9kYXRhLmNvZWZmaWNpZW50KCk7CisgICAgICAgIGNvbnN0IHVpbnQ2
NF90IHJoc0NvZWZmaWNpZW50ID0gcmhzLm1fZGF0YS5jb2VmZmljaWVudCgpOworICAgICAgICBp
bnQgcmVzdWx0RXhwb25lbnQgPSBsaHMuZXhwb25lbnQoKSArIHJocy5leHBvbmVudCgpOworICAg
ICAgICBVSW50MTI4IHdvcmsoVUludDEyODo6bXVsdGlwbHkobGhzQ29lZmZpY2llbnQsIHJoc0Nv
ZWZmaWNpZW50KSk7CisgICAgICAgIHdoaWxlICh3b3JrLmhpZ2goKSkgeworICAgICAgICAgIHdv
cmsgLz0gMTA7CisgICAgICAgICAgKytyZXN1bHRFeHBvbmVudDsKKyAgICAgICAgfQorICAgICAg
ICByZXR1cm4gRGVjaW1hbCh3b3JrLmxvdygpLCByZXN1bHRFeHBvbmVudCwgcmVzdWx0U2lnbik7
CisgICAgfQorCisgICAgY2FzZSBTcGVjaWFsVmFsdWVIYW5kbGVyOjpCb3RoaW5maW5pdHk6Cisg
ICAgICAgIHJldHVybiBpbmZpbml0eShyZXN1bHRTaWduKTsKKworICAgIGNhc2UgU3BlY2lhbFZh
bHVlSGFuZGxlcjo6RWl0aGVyTmFOOgorICAgICAgICByZXR1cm4gaGFuZGxlci52YWx1ZSgpOwor
CisgICAgY2FzZSBTcGVjaWFsVmFsdWVIYW5kbGVyOjpMaHNJc2luZmluaXR5OgorICAgICAgICBy
ZXR1cm4gcmhzLmlzWmVybygpID8gbmFuKCkgOiBpbmZpbml0eShyZXN1bHRTaWduKTsKKworICAg
IGNhc2UgU3BlY2lhbFZhbHVlSGFuZGxlcjo6UmhzSXNpbmZpbml0eToKKyAgICAgICAgcmV0dXJu
IGxocy5pc1plcm8oKSA/IG5hbigpIDogaW5maW5pdHkocmVzdWx0U2lnbik7CisgICAgfQorCisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIG5hbigpOworfQorCitEZWNpbWFs
IERlY2ltYWw6Om9wZXJhdG9yIC8oY29uc3QgRGVjaW1hbCYgcmhzKSBjb25zdAoreworICAgIGNv
bnN0IERlY2ltYWwmIGxocyA9ICp0aGlzOworICAgIGNvbnN0IFNpZ24gbGhzU2lnbiA9IGxocy5z
aWduKCk7CisgICAgY29uc3QgU2lnbiByaHNTaWduID0gcmhzLnNpZ24oKTsKKyAgICBTaWduIHJl
c3VsdFNpZ24gPSBsaHNTaWduID09IHJoc1NpZ24gPyBQbHVzIDogTWludXM7CisKKyAgICBTcGVj
aWFsVmFsdWVIYW5kbGVyIGhhbmRsZXIobGhzLCByaHMpOworICAgIHN3aXRjaCAoaGFuZGxlci5o
YW5kbGUoKSkgeworICAgIGNhc2UgU3BlY2lhbFZhbHVlSGFuZGxlcjo6Qm90aEZpbml0ZToKKyAg
ICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFNwZWNpYWxWYWx1ZUhhbmRsZXI6OkJvdGhpbmZpbml0
eToKKyAgICAgICAgcmV0dXJuIG5hbigpOworCisgICAgY2FzZSBTcGVjaWFsVmFsdWVIYW5kbGVy
OjpFaXRoZXJOYU46CisgICAgICAgIHJldHVybiBoYW5kbGVyLnZhbHVlKCk7CisKKyAgICBjYXNl
IFNwZWNpYWxWYWx1ZUhhbmRsZXI6Okxoc0lzaW5maW5pdHk6CisgICAgICAgIHJldHVybiBpbmZp
bml0eShyZXN1bHRTaWduKTsKKworICAgIGNhc2UgU3BlY2lhbFZhbHVlSGFuZGxlcjo6UmhzSXNp
bmZpbml0eToKKyAgICAgICAgcmV0dXJuIHplcm8ocmVzdWx0U2lnbik7CisgICAgfQorCisgICAg
QVNTRVJUKGxocy5pc0Zpbml0ZSgpKTsKKyAgICBBU1NFUlQocmhzLmlzRmluaXRlKCkpOworCisg
ICAgaWYgKHJocy5pc1plcm8oKSkKKyAgICAgICAgcmV0dXJuIGxocy5pc1plcm8oKSA/IG5hbigp
IDogaW5maW5pdHkocmVzdWx0U2lnbik7CisKKyAgICBpbnQgcmVzdWx0RXhwb25lbnQgPSBsaHMu
ZXhwb25lbnQoKSAtIHJocy5leHBvbmVudCgpOworCisgICAgaWYgKGxocy5pc1plcm8oKSkgewor
ICAgICAgICAvLyAwL25vbi16ZXJvID0+IDAKKyAgICAgICAgcmV0dXJuIERlY2ltYWwoMCwgcmVz
dWx0RXhwb25lbnQsIHJlc3VsdFNpZ24pOworICAgIH0KKworICAgIHVpbnQ2NF90IHJlbWFpbmRl
ciA9IGxocy5tX2RhdGEuY29lZmZpY2llbnQoKTsKKyAgICBjb25zdCB1aW50NjRfdCBkaXZpc29y
ID0gcmhzLm1fZGF0YS5jb2VmZmljaWVudCgpOworICAgIHVpbnQ2NF90IHJlc3VsdCA9IDA7Cisg
ICAgd2hpbGUgKHJlc3VsdCA8IE1heENvZWZmaWNpZW50IC8gMTAwKSB7CisgICAgICAgIHdoaWxl
IChyZW1haW5kZXIgPCBkaXZpc29yKSB7CisgICAgICAgICAgICByZW1haW5kZXIgKj0gMTA7Cisg
ICAgICAgICAgICByZXN1bHQgKj0gMTA7CisgICAgICAgICAgICAtLXJlc3VsdEV4cG9uZW50Owor
ICAgICAgICB9CisgICAgICAgIHJlc3VsdCArPSByZW1haW5kZXIgLyBkaXZpc29yOworICAgICAg
ICByZW1haW5kZXIgJT0gZGl2aXNvcjsKKyAgICAgICAgaWYgKCFyZW1haW5kZXIpCisgICAgICAg
ICAgICBicmVhazsKKyAgICB9CisKKyAgICBpZiAocmVtYWluZGVyID4gZGl2aXNvciAvIDIpCisg
ICAgICAgICsrcmVzdWx0OworCisgICAgcmV0dXJuIERlY2ltYWwocmVzdWx0LCByZXN1bHRFeHBv
bmVudCwgcmVzdWx0U2lnbik7Cit9CisKK2Jvb2wgRGVjaW1hbDo6b3BlcmF0b3I9PShjb25zdCBE
ZWNpbWFsJiByaHMpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhc3RFcXVhbHMocmhzKSB8fCBjb21w
YXJlVG8ocmhzKS5pc1plcm8oKTsKK30KKworYm9vbCBEZWNpbWFsOjpvcGVyYXRvciE9KGNvbnN0
IERlY2ltYWwmIHJocykgY29uc3QKK3sKKyAgICByZXR1cm4gIW9wZXJhdG9yID09KHJocyk7Cit9
CisKK2Jvb2wgRGVjaW1hbDo6b3BlcmF0b3IgPChjb25zdCBEZWNpbWFsJiByaHMpIGNvbnN0Cit7
CisgICAgcmV0dXJuICFvcGVyYXRvciA+PShyaHMpOworfQorCitib29sIERlY2ltYWw6Om9wZXJh
dG9yIDw9KGNvbnN0IERlY2ltYWwmIHJocykgY29uc3QKK3sKKyAgICBpZiAoZmFzdEVxdWFscyhy
aHMpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBjb25zdCBEZWNpbWFsIHJlc3VsdCA9IGNv
bXBhcmVUbyhyaHMpOworICAgIHJldHVybiByZXN1bHQuaXNaZXJvKCkgfHwgcmVzdWx0LmlzTWlu
dXMoKTsKK30KKworYm9vbCBEZWNpbWFsOjpvcGVyYXRvciA+KGNvbnN0IERlY2ltYWwmIHJocykg
Y29uc3QKK3sKKyAgICByZXR1cm4gIW9wZXJhdG9yIDw9KHJocyk7Cit9CisKK2Jvb2wgRGVjaW1h
bDo6b3BlcmF0b3IgPj0oY29uc3QgRGVjaW1hbCYgcmhzKSBjb25zdAoreworICAgIGlmIChmYXN0
RXF1YWxzKHJocykpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGNvbnN0IERlY2ltYWwgcmVz
dWx0ID0gY29tcGFyZVRvKHJocyk7CisgICAgcmV0dXJuIHJlc3VsdC5pc1plcm8oKSB8fCAhcmVz
dWx0LmlzTWludXMoKTsKK30KKworaW50IERlY2ltYWw6OmV4cG9uZW50KCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gaXNGaW5pdGUoKSA/IG1fZGF0YS5leHBvbmVudCgpIDogMDsKK30KKworRGVjaW1h
bDo6Rm9ybWF0Q2xhc3MgRGVjaW1hbDo6Zm9ybWF0Q2xhc3MoKSBjb25zdAoreworICAgIHN3aXRj
aCAobV9kYXRhLm1fcGFja2VkRmllbGQpIHsKKyAgICBjYXNlIFBvc2l0aXZlSW5maW5pdHlQYXR0
ZXJuOgorICAgIGNhc2UgTmVnYXRpdmVJbmZpbml0eVBhdHRlcm46CisgICAgICAgIHJldHVybiBD
bGFzc0luZmluaXR5OworICAgIGNhc2UgTmFOUGF0dGVybjoKKyAgICAgICAgcmV0dXJuIENsYXNz
TmFOOworICAgIH0KKworICAgIHJldHVybiBtX2RhdGEuaXNaZXJvKCkgPyBDbGFzc1plcm8gOiBD
bGFzc05vcm1hbDsKK30KKworRGVjaW1hbDo6U2lnbiBEZWNpbWFsOjpzaWduKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9kYXRhLnNpZ24oKTsKK30KKworRGVjaW1hbCBEZWNpbWFsOjphYnMoKSBj
b25zdAoreworICAgIERlY2ltYWwgcmVzdWx0KCp0aGlzKTsKKyAgICByZXN1bHQubV9kYXRhLnNl
dFNpZ24oUGx1cyk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLy8gUm91bmQgdG93YXJkIHBv
c2l0aXZlIGluZmluaXR5LgorLy8gTm90ZTogTWFjIHBvcnRzIGRlZmluZXMgY2VpbCh4KSBhcyB3
dGZfY2VpbCh4KSwgc28gd2UgY2FuJ3QgdXNlIG5hbWUgImNlaWwiIGhlcmUuCitEZWNpbWFsIERl
Y2ltYWw6OmNlaWxpbmcoKSBjb25zdAoreworICAgIGlmIChpc1NwZWNpYWwoKSkKKyAgICAgICAg
cmV0dXJuICp0aGlzOworCisgICAgaWYgKGV4cG9uZW50KCkgPj0gMCkKKyAgICAgICAgcmV0dXJu
ICp0aGlzOworCisgICAgdWludDY0X3QgcmVzdWx0ID0gbV9kYXRhLmNvZWZmaWNpZW50KCk7Cisg
ICAgY29uc3QgaW50IG51bWJlck9mRGlnaXRzID0gY291bnREaWdpdHMocmVzdWx0KTsKKyAgICBj
b25zdCBpbnQgbnVtYmVyT2ZEcm9wRGlnaXRzID0gLWV4cG9uZW50KCk7CisgICAgaWYgKG51bWJl
ck9mRGlnaXRzIDwgbnVtYmVyT2ZEcm9wRGlnaXRzKQorICAgICAgICByZXR1cm4gemVybyhQbHVz
KTsKKworICAgIHJlc3VsdCA9IHNjYWxlRG93bihyZXN1bHQsIG51bWJlck9mRHJvcERpZ2l0cyAt
IDEpOworICAgIGlmIChzaWduKCkgPT0gUGx1cyAmJiByZXN1bHQgJSAxMCA+IDApCisgICAgICAg
IHJlc3VsdCArPSAxMDsKKyAgICByZXN1bHQgLz0gMTA7CisgICAgcmV0dXJuIERlY2ltYWwocmVz
dWx0LCAwLCBzaWduKCkpOworfQorCitEZWNpbWFsIERlY2ltYWw6OmNvbXBhcmVUbyhjb25zdCBE
ZWNpbWFsJiByaHMpIGNvbnN0Cit7CisgICAgY29uc3QgRGVjaW1hbCByZXN1bHQoKnRoaXMgLSBy
aHMpOworICAgIHJldHVybiByZXN1bHQuaXNaZXJvKCkKKyAgICAgICAgICAgID8gemVybyhQbHVz
KQorICAgICAgICAgICAgOiByZXN1bHQuaXNGaW5pdGUoKQorICAgICAgICAgICAgICAgICAgICA/
IHJlc3VsdAorICAgICAgICAgICAgICAgICAgICA6IHJlc3VsdC5pc01pbnVzKCkgPyBEZWNpbWFs
KC0xKSA6IERlY2ltYWwoMSk7Cit9CisKKy8vIENvbXBhcmVzIHR3byBEZWNpbWFsIG51bWJlciBh
cyBiaW5hcnkgZGF0YS4gVGhpcyBtZXRob2QgaXMKKy8vIHVzZWQgZm9yIGVxdWFsaXR5IG9mIGlu
ZmluaXR5IG9wZXJhbmRzIHdoaWNoIHN1YnN0cmFjdCBvcGVyYXRpb24KKy8vIHJldHVybnMgbm9u
LXplcm8uCitib29sIERlY2ltYWw6OmZhc3RFcXVhbHMoY29uc3QgRGVjaW1hbCYgcmhzKSBjb25z
dAoreworICAgIHJldHVybiBtX2RhdGEubV9wYWNrZWRGaWVsZCA9PSByaHMubV9kYXRhLm1fcGFj
a2VkRmllbGQKKyAgICAgICAgJiYgbV9kYXRhLm1fY29lZmZpY2llbnQgPT0gcmhzLm1fZGF0YS5t
X2NvZWZmaWNpZW50OworfQorCisvLyBSb3VuZCB0b3dhcmQgbmVnYXRpdmUgaW5maW5pdHkuCitE
ZWNpbWFsIERlY2ltYWw6OmZsb29yKCkgY29uc3QKK3sKKyAgICBpZiAoaXNTcGVjaWFsKCkpCisg
ICAgICAgIHJldHVybiAqdGhpczsKKworICAgIGlmIChleHBvbmVudCgpID49IDApCisgICAgICAg
IHJldHVybiAqdGhpczsKKworICAgIHVpbnQ2NF90IHJlc3VsdCA9IG1fZGF0YS5jb2VmZmljaWVu
dCgpOworICAgIGNvbnN0IGludCBudW1iZXJPZkRpZ2l0cyA9IGNvdW50RGlnaXRzKHJlc3VsdCk7
CisgICAgY29uc3QgaW50IG51bWJlck9mRHJvcERpZ2l0cyA9IC1leHBvbmVudCgpOworICAgIGlm
IChudW1iZXJPZkRpZ2l0cyA8IG51bWJlck9mRHJvcERpZ2l0cykKKyAgICAgICAgcmV0dXJuIHpl
cm8oUGx1cyk7CisKKyAgICByZXN1bHQgPSBzY2FsZURvd24ocmVzdWx0LCBudW1iZXJPZkRyb3BE
aWdpdHMgLSAxKTsKKyAgICBpZiAoaXNNaW51cygpICYmIHJlc3VsdCAlIDEwID4gMCkKKyAgICAg
ICAgcmVzdWx0ICs9IDEwOworICAgIHJlc3VsdCAvPSAxMDsKKyAgICByZXR1cm4gRGVjaW1hbChy
ZXN1bHQsIDAsIHNpZ24oKSk7Cit9CisKK0RlY2ltYWwgRGVjaW1hbDo6ZnJvbVN0cmluZyhjb25z
dCBTdHJpbmcmIHN0cikKK3sKKyAgICBpbnQgZXhwb25lbnQgPSAwOworICAgIFNpZ24gZXhwb25l
bnRTaWduID0gUGx1czsKKyAgICBpbnQgbnVtYmVyT2ZEaWdpdHMgPSAwOworICAgIGludCBudW1i
ZXJPZkRpZ2l0c0FmdGVyRG90ID0gMDsKKyAgICBpbnQgbnVtYmVyT2ZFeHRyYURpZ2l0cyA9IDA7
CisgICAgU2lnbiBzaWduID0gUGx1czsKKworICAgIGVudW0geworICAgICAgICBTdGF0ZURpZ2l0
LAorICAgICAgICBTdGF0ZURvdCwKKyAgICAgICAgU3RhdGVEb3REaWdpdCwKKyAgICAgICAgU3Rh
dGVFLAorICAgICAgICBTdGF0ZUVEaWdpdCwKKyAgICAgICAgU3RhdGVFU2lnbiwKKyAgICAgICAg
U3RhdGVTaWduLAorICAgICAgICBTdGF0ZVN0YXJ0LAorICAgICAgICBTdGF0ZVplcm8sCisgICAg
fSBzdGF0ZSA9IFN0YXRlU3RhcnQ7CisKKyAgICAjZGVmaW5lIEhhbmRsZUNoYXIoY2gxLCBuZXh0
LCAuLi4pIFwKKyAgICAgICAgaWYgKGNoID09IGNoMSB8fCBjaCA9PSBjaDEgLSAnQScgKyAnYScp
IHsgXAorICAgICAgICAgICAgX19WQV9BUkdTX187IFwKKyAgICAgICAgICAgIHN0YXRlID0gbmV4
dDsgXAorICAgICAgICAgICAgYnJlYWs7IFwKKyAgICAgICAgfQorCisgICAgI2RlZmluZSBFeHBl
Y3RDaGFyKGNoMSwgbmV4dCwgLi4uKSBcCisgICAgICAgIEhhbmRsZUNoYXIoY2gxLCBuZXh0LCBf
X1ZBX0FSR1NfXyk7IFwKKyAgICAgICAgcmV0dXJuIG5hbigpOworCisgICAgdWludDY0X3QgYWNj
dW11bGF0b3IgPSAwOworICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IHN0ci5s
ZW5ndGgoKTsgKytpbmRleCkgeworICAgICAgICBjb25zdCBpbnQgY2ggPSBzdHJbaW5kZXhdOwor
ICAgICAgICBzd2l0Y2ggKHN0YXRlKSB7CisgICAgICAgIGNhc2UgU3RhdGVEaWdpdDoKKyAgICAg
ICAgICAgIGlmIChjaCA+PSAnMCcgJiYgY2ggPD0gJzknKSB7CisgICAgICAgICAgICAgICAgaWYg
KG51bWJlck9mRGlnaXRzIDwgRGVjaW1hbDo6UHJlY2lzaW9uKSB7CisgICAgICAgICAgICAgICAg
ICAgICsrbnVtYmVyT2ZEaWdpdHM7CisgICAgICAgICAgICAgICAgICAgIGFjY3VtdWxhdG9yICo9
IDEwOworICAgICAgICAgICAgICAgICAgICBhY2N1bXVsYXRvciArPSBjaCAtICcwJzsKKyAgICAg
ICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgKytudW1iZXJPZkV4dHJhRGln
aXRzOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBpZiAoY2ggPT0gJy4nKSB7CisgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZURvdDsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgRXhwZWN0
Q2hhcignRScsIFN0YXRlRSk7CisKKyAgICAgICAgY2FzZSBTdGF0ZURvdDoKKyAgICAgICAgICAg
IGlmIChjaCA+PSAnMCcgJiYgY2ggPD0gJzknKSB7CisgICAgICAgICAgICAgICAgaWYgKG51bWJl
ck9mRGlnaXRzIDwgRGVjaW1hbDo6UHJlY2lzaW9uKSB7CisgICAgICAgICAgICAgICAgICAgICsr
bnVtYmVyT2ZEaWdpdHM7CisgICAgICAgICAgICAgICAgICAgICsrbnVtYmVyT2ZEaWdpdHNBZnRl
ckRvdDsKKyAgICAgICAgICAgICAgICAgICAgYWNjdW11bGF0b3IgKj0gMTA7CisgICAgICAgICAg
ICAgICAgICAgIGFjY3VtdWxhdG9yICs9IGNoIC0gJzAnOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlRG90RGlnaXQ7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgY2FzZSBTdGF0ZURvdERpZ2l0OgorICAgICAg
ICAgICAgaWYgKGNoID49ICcwJyAmJiBjaCA8PSAnOScpIHsKKyAgICAgICAgICAgICAgICBpZiAo
bnVtYmVyT2ZEaWdpdHMgPCBEZWNpbWFsOjpQcmVjaXNpb24pIHsKKyAgICAgICAgICAgICAgICAg
ICAgKytudW1iZXJPZkRpZ2l0czsKKyAgICAgICAgICAgICAgICAgICAgKytudW1iZXJPZkRpZ2l0
c0FmdGVyRG90OworICAgICAgICAgICAgICAgICAgICBhY2N1bXVsYXRvciAqPSAxMDsKKyAgICAg
ICAgICAgICAgICAgICAgYWNjdW11bGF0b3IgKz0gY2ggLSAnMCc7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBF
eHBlY3RDaGFyKCdFJywgU3RhdGVFKTsKKworICAgICAgICBjYXNlIFN0YXRlRToKKyAgICAgICAg
ICAgIGlmIChjaCA9PSAnKycpIHsKKyAgICAgICAgICAgICAgICBleHBvbmVudFNpZ24gPSBQbHVz
OworICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGVFU2lnbjsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGNoID09ICctJykgeworICAg
ICAgICAgICAgICAgIGV4cG9uZW50U2lnbiA9IE1pbnVzOworICAgICAgICAgICAgICAgIHN0YXRl
ID0gU3RhdGVFU2lnbjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgaWYgKGNoID49ICcwJyAmJiBjaCA8PSAnOScpIHsKKyAgICAgICAgICAgICAg
ICBleHBvbmVudCA9IGNoIC0gJzAnOworICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGVFRGln
aXQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IHJldHVybiBuYW4oKTsKKworICAgICAgICBjYXNlIFN0YXRlRURpZ2l0OgorICAgICAgICAgICAg
aWYgKGNoID49ICcwJyAmJiBjaCA8PSAnOScpIHsKKyAgICAgICAgICAgICAgICBleHBvbmVudCAq
PSAxMDsKKyAgICAgICAgICAgICAgICBleHBvbmVudCArPSBjaCAtICcwJzsKKyAgICAgICAgICAg
ICAgICBpZiAoZXhwb25lbnQgPiBEZWNpbWFsOjpFbWF4ICsgUHJlY2lzaW9uKQorICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZXhwb25lbnRTaWduID09IE1pbnVzID8gemVybyhQbHVzKSA6IGlu
ZmluaXR5KHNpZ24pOworICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGVFRGlnaXQ7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBu
YW4oKTsKKworICAgICAgICBjYXNlIFN0YXRlRVNpZ246CisgICAgICAgICAgICBpZiAoY2ggPj0g
JzAnICYmIGNoIDw9ICc5JykgeworICAgICAgICAgICAgICAgIGV4cG9uZW50ID0gY2ggLSAnMCc7
CisgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZUVEaWdpdDsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIG5hbigpOworCisgICAg
ICAgIGNhc2UgU3RhdGVTaWduOgorICAgICAgICAgICAgaWYgKGNoID09ICcwJykgeworICAgICAg
ICAgICAgICAgIHN0YXRlID0gU3RhdGVaZXJvOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoY2ggPj0gJzEnICYmIGNoIDw9ICc5Jykgewor
ICAgICAgICAgICAgICAgIGFjY3VtdWxhdG9yID0gY2ggLSAnMCc7CisgICAgICAgICAgICAgICAg
bnVtYmVyT2ZEaWdpdHMgPSAxOworICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGVEaWdpdDsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0
dXJuIG5hbigpOworCisgICAgICAgIGNhc2UgU3RhdGVTdGFydDoKKyAgICAgICAgICAgIGlmIChj
aCA9PSAnMCcpIHsKKyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlWmVybzsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGNoID49ICcx
JyAmJiBjaCA8PSAnOScpIHsKKyAgICAgICAgICAgICAgICBhY2N1bXVsYXRvciA9IGNoIC0gJzAn
OworICAgICAgICAgICAgICAgIG51bWJlck9mRGlnaXRzID0gMTsKKyAgICAgICAgICAgICAgICBz
dGF0ZSA9IFN0YXRlRGlnaXQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIGlmIChjaCA9PSAnLScpIHsKKyAgICAgICAgICAgICAgICBzaWduID0g
TWludXM7CisgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZVNpZ247CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChjaCA9PSAnKycpIHsK
KyAgICAgICAgICAgICAgICBzaWduID0gUGx1czsKKyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0
YXRlU2lnbjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgaWYgKGNoID09ICcuJykgeworICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGVEb3Q7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJl
dHVybiBuYW4oKTsKKworICAgICAgICBjYXNlIFN0YXRlWmVybzoKKyAgICAgICAgICAgIGlmIChj
aCA9PSAnMCcpCisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGlmIChjaCA+
PSAnMScgJiYgY2ggPD0gJzknKSB7CisgICAgICAgICAgICAgICAgYWNjdW11bGF0b3IgPSBjaCAt
ICcwJzsKKyAgICAgICAgICAgICAgICBudW1iZXJPZkRpZ2l0cyA9IDE7CisgICAgICAgICAgICAg
ICAgc3RhdGUgPSBTdGF0ZURpZ2l0OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBpZiAoY2ggPT0gJy4nKSB7CisgICAgICAgICAgICAgICAgc3Rh
dGUgPSBTdGF0ZURvdDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgRXhwZWN0Q2hhcignRScsIFN0YXRlRSk7CisKKyAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuIG5h
bigpOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKHN0YXRlID09IFN0YXRlWmVybykKKyAg
ICAgICAgcmV0dXJuIHplcm8oc2lnbik7CisKKyAgICBpZiAoc3RhdGUgPT0gU3RhdGVEaWdpdCB8
fCBzdGF0ZSA9PSBTdGF0ZUVEaWdpdCB8fCBzdGF0ZSA9PSBTdGF0ZURvdERpZ2l0KSB7CisgICAg
ICAgIGludCByZXN1bHRFeHBvbmVudCA9IGV4cG9uZW50ICogKGV4cG9uZW50U2lnbiA9PSBNaW51
cyA/IC0xIDogMSkgLSBudW1iZXJPZkRpZ2l0c0FmdGVyRG90ICsgbnVtYmVyT2ZFeHRyYURpZ2l0
czsKKyAgICAgICAgY29uc3QgaW50IGJpYXNlZEV4cG9uZW50ID0gcmVzdWx0RXhwb25lbnQgKyBF
YmlhczsKKyAgICAgICAgaWYgKGJpYXNlZEV4cG9uZW50IDwgMCkKKyAgICAgICAgICAgIHJldHVy
biB6ZXJvKFBsdXMpOworCisgICAgICAgIGNvbnN0IGludCBvdmVyZmxvdyA9IGJpYXNlZEV4cG9u
ZW50IC0gRW1heCArIDE7CisgICAgICAgIGlmIChvdmVyZmxvdyA+IDApIHsKKyAgICAgICAgICAg
IGlmIChvdmVyZmxvdyArIG51bWJlck9mRGlnaXRzIC0gbnVtYmVyT2ZEaWdpdHNBZnRlckRvdCA+
IFByZWNpc2lvbikKKyAgICAgICAgICAgICAgICByZXR1cm4gaW5maW5pdHkoc2lnbik7CisgICAg
ICAgICAgICBhY2N1bXVsYXRvciA9IHNjYWxlVXAoYWNjdW11bGF0b3IsIG92ZXJmbG93KTsKKyAg
ICAgICAgICAgIHJlc3VsdEV4cG9uZW50IC09IG92ZXJmbG93OworICAgICAgICB9CisKKyAgICAg
ICAgcmV0dXJuIERlY2ltYWwoYWNjdW11bGF0b3IsIHJlc3VsdEV4cG9uZW50LCBzaWduKTsKKyAg
ICB9CisKKyAgICByZXR1cm4gbmFuKCk7Cit9CisKK0RlY2ltYWwgRGVjaW1hbDo6aW5maW5pdHko
Y29uc3QgU2lnbiBzaWduKQoreworICAgIHJldHVybiBEZWNpbWFsKEVuY29kZWREYXRhKHNpZ24g
PT0gTWludXMgPyBOZWdhdGl2ZUluZmluaXR5UGF0dGVybiA6IFBvc2l0aXZlSW5maW5pdHlQYXR0
ZXJuKSk7Cit9CisKK0RlY2ltYWwgRGVjaW1hbDo6bmFuKCkKK3sKKyAgICByZXR1cm4gRGVjaW1h
bChFbmNvZGVkRGF0YShOYU5QYXR0ZXJuKSk7Cit9CisKK0RlY2ltYWwgRGVjaW1hbDo6cmVtYWlu
ZGVyKGNvbnN0IERlY2ltYWwmIHJocykgY29uc3QKK3sKKyAgICBjb25zdCBEZWNpbWFsIHF1b3Rp
ZW50ID0gKCp0aGlzIC8gcmhzKS5yb3VuZCgpOworICAgIHJldHVybiBxdW90aWVudC5pc1NwZWNp
YWwoKSA/IHF1b3RpZW50IDogKnRoaXMgLSBxdW90aWVudCAqIHJoczsKK30KKworRGVjaW1hbCBE
ZWNpbWFsOjpyb3VuZCgpIGNvbnN0Cit7CisgICAgaWYgKGlzU3BlY2lhbCgpKQorICAgICAgICBy
ZXR1cm4gKnRoaXM7CisKKyAgICBpZiAoZXhwb25lbnQoKSA+PSAwKQorICAgICAgICByZXR1cm4g
KnRoaXM7CisKKyAgICB1aW50NjRfdCByZXN1bHQgPSBtX2RhdGEuY29lZmZpY2llbnQoKTsKKyAg
ICBjb25zdCBpbnQgbnVtYmVyT2ZEaWdpdHMgPSBjb3VudERpZ2l0cyhyZXN1bHQpOworICAgIGNv
bnN0IGludCBudW1iZXJPZkRyb3BEaWdpdHMgPSAtZXhwb25lbnQoKTsKKyAgICBpZiAobnVtYmVy
T2ZEaWdpdHMgPCBudW1iZXJPZkRyb3BEaWdpdHMpCisgICAgICAgIHJldHVybiB6ZXJvKFBsdXMp
OworCisgICAgcmVzdWx0ID0gc2NhbGVEb3duKHJlc3VsdCwgbnVtYmVyT2ZEcm9wRGlnaXRzIC0g
MSk7CisgICAgaWYgKHJlc3VsdCAlIDEwID49IDUpCisgICAgICAgIHJlc3VsdCArPSAxMDsKKyAg
ICByZXN1bHQgLz0gMTA7CisgICAgcmV0dXJuIERlY2ltYWwocmVzdWx0LCAwLCBzaWduKCkpOwor
fQorCitTdHJpbmcgRGVjaW1hbDo6dG9TdHJpbmcoKSBjb25zdAoreworICAgIHN3aXRjaCAoZm9y
bWF0Q2xhc3MoKSkgeworICAgIGNhc2UgQ2xhc3NJbmZpbml0eToKKyAgICAgICAgcmV0dXJuIHNp
Z24oKSA/ICItSW5maW5pdHkiIDogIkluZmluaXR5IjsKKworICAgIGNhc2UgQ2xhc3NOYU46Cisg
ICAgICAgIHJldHVybiBzaWduKCkgPyAiLU5hTiIgOiAiTmFOIjsKKworICAgIGNhc2UgQ2xhc3NO
b3JtYWw6CisgICAgY2FzZSBDbGFzc1plcm86CisgICAgICAgIGJyZWFrOworCisgICAgZGVmYXVs
dDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAiIjsKKyAg
ICB9CisKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgaWYgKHNpZ24oKSkKKyAgICAg
ICAgYnVpbGRlci5hcHBlbmQoJy0nKTsKKworICAgIGludCBvcmlnaW5hbEV4cG9uZW50ID0gZXhw
b25lbnQoKTsKKworICAgIGNvbnN0IGludCBtYXhEaWdpdHMgPSBEQkxfRElHOworICAgIHVpbnQ2
NF90IGNvZWZmaWNpZW50ID0gbV9kYXRhLmNvZWZmaWNpZW50KCk7CisgICAgaW50IGxhc3REaWdp
dCA9IDA7CisgICAgd2hpbGUgKGNvdW50RGlnaXRzKGNvZWZmaWNpZW50KSA+IG1heERpZ2l0cykg
eworICAgICAgICBsYXN0RGlnaXQgPSBjb2VmZmljaWVudCAlIDEwOworICAgICAgICBjb2VmZmlj
aWVudCAvPSAxMDsKKyAgICAgICAgKytvcmlnaW5hbEV4cG9uZW50OworICAgIH0KKworICAgIGlm
IChsYXN0RGlnaXQgPj0gNSkKKyAgICAgICAgKytjb2VmZmljaWVudDsKKworICAgIHdoaWxlIChv
cmlnaW5hbEV4cG9uZW50IDwgMCAmJiBjb2VmZmljaWVudCAmJiAhKGNvZWZmaWNpZW50ICUgMTAp
KSB7CisgICAgICAgIGNvZWZmaWNpZW50IC89IDEwOworICAgICAgICArK29yaWdpbmFsRXhwb25l
bnQ7CisgICAgfQorCisgICAgY29uc3QgU3RyaW5nIGRpZ2l0cyA9IFN0cmluZzo6bnVtYmVyKGNv
ZWZmaWNpZW50KTsKKyAgICBpbnQgY29lZmZpY2llbnRMZW5ndGggPSBpbnQoZGlnaXRzLmxlbmd0
aCgpKTsKKyAgICBjb25zdCBpbnQgYWRqdXN0ZWRFeHBvbmVudCA9IG9yaWdpbmFsRXhwb25lbnQg
KyBjb2VmZmljaWVudExlbmd0aCAtIDE7CisgICAgaWYgKG9yaWdpbmFsRXhwb25lbnQgPD0gMCAm
JiBhZGp1c3RlZEV4cG9uZW50ID49IC02KSB7CisgICAgICAgIGlmICghb3JpZ2luYWxFeHBvbmVu
dCkgeworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoZGlnaXRzKTsKKyAgICAgICAgICAgIHJl
dHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoYWRqdXN0
ZWRFeHBvbmVudCA+PSAwKSB7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvZWZm
aWNpZW50TGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChkaWdp
dHNbaV0pOworICAgICAgICAgICAgICAgIGlmIChpID09IGFkanVzdGVkRXhwb25lbnQpCisgICAg
ICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcuJyk7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworICAgICAgICB9CisKKyAgICAgICAg
YnVpbGRlci5hcHBlbmQoIjAuIik7CisgICAgICAgIGZvciAoaW50IGkgPSBhZGp1c3RlZEV4cG9u
ZW50ICsgMTsgaSA8IDA7ICsraSkKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcwJyk7CisK
KyAgICAgICAgYnVpbGRlci5hcHBlbmQoZGlnaXRzKTsKKworICAgIH0gZWxzZSB7CisgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKGRpZ2l0c1swXSk7CisgICAgICAgIHdoaWxlIChjb2VmZmljaWVudExl
bmd0aCA+PSAyICYmIGRpZ2l0c1tjb2VmZmljaWVudExlbmd0aCAtIDFdID09ICcwJykKKyAgICAg
ICAgICAgIC0tY29lZmZpY2llbnRMZW5ndGg7CisgICAgICAgIGlmIChjb2VmZmljaWVudExlbmd0
aCA+PSAyKSB7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnLicpOworICAgICAgICAgICAg
Zm9yIChpbnQgaSA9IDE7IGkgPCBjb2VmZmljaWVudExlbmd0aDsgKytpKQorICAgICAgICAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKGRpZ2l0c1tpXSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAo
YWRqdXN0ZWRFeHBvbmVudCkgeworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoYWRqdXN0ZWRF
eHBvbmVudCA8IDAgPyAiZSIgOiAiZSsiKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0
cmluZzo6bnVtYmVyKGFkanVzdGVkRXhwb25lbnQpKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBy
ZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworfQorCitEZWNpbWFsIERlY2ltYWw6Onplcm8oU2ln
biBzaWduKQoreworICAgIHJldHVybiBEZWNpbWFsKEVuY29kZWREYXRhKHNpZ24gPT0gTWludXMg
PyBOZWdhdGl2ZVplcm9QYXR0ZXJuIDogUG9zaXRpdmVaZXJvUGF0dGVybikpOworfQorCit9IC8v
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RlY2ltYWwuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RlY2ltYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NmRmMjlhNzM2
MTk1OTMyMWFiNjY3ODg5ZmU4NjQ1OGU4NzM0MjczCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vRGVjaW1hbC5oCkBAIC0wLDAgKzEsMTU0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1
dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKyNpZm5kZWYgRGVjaW1h
bF9oCisjZGVmaW5lIERlY2ltYWxfaAorCisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gVGhpcyBj
bGFzcyByZXByZXNlbnRzIGRlY2ltYWwgYmFzZSBmbG9hdGluZyBwb2ludGVyIG51bWJlciB3aXRo
IDMyIGJpdAorLy8gIHVuc2lnZW5kIGludGVnZXIgYW5kIDY0IGJpdCB1bnNpZ25lZCBpbnRlZ2Vy
LgorLy8gIG8gMSBiaXQgc2lnbiAoMCA9IHBvc2l0aXZlIG51bWJlciwgMSA9IG5lZ2F0aXZlIG51
bWJlcikKKy8vICBvIDExIGJpdCBiaWFzZWQgZXhwb25lbnQsIDEwIGJhc2VkLgorLy8gIG8gNjQg
Yml0IGNvZWZmaWNpZW50LgorLy8KKy8vIEV4cG9uZW50IGFuZCBzaWduIGJpdCBhcmUgZW5jb2Rl
ZCBhczoKKy8vIDc2NTQzMjEwIDc2NTQzMjEwCisvLyBTMDAwMDAwMCAwMDAwTUVFRQorLy8gIFMg
PSBzaWduICgxIGJpdCksIDAgPSBwb3NpdGl2ZSwgMSA9IG5lZ2F0aXZlCisvLyAgRSA9IGV4cG9u
ZW50ICgxMSBiaXQpCisvLworLy8gRklYTUU6IE9uY2UgYWxsIEMrKyBjb21waWxlciBzdXBwb3J0
IGRlY2ltYWwgdHlwZSwgd2Ugc2hvdWxkIHJlcGxhY2UgdGhpcworLy8gY2xhc3MgdG8gY29tcGls
ZXIgc3VwcG9ydGVkIG9uZS4gU2VlIGJlbG93IFVSSSBmb3IgY3VycmVudCBzdGF0dXMgb2YgZGVj
aW1hbAorLy8gdHlwZSBmb3IgQysrOiAvLyBodHRwOi8vd3d3Lm9wZW4tc3RkLm9yZy9qdGMxL3Nj
MjIvd2cyMS9kb2NzL3BhcGVycy8yMDA2L24xOTc3Lmh0bWwKK2NsYXNzIERlY2ltYWwgeworcHVi
bGljOgorICAgIHN0YXRpYyBpbnQgY29uc3QgRW1heCA9IDIwNDc7IC8vIGxhcmdlc3QgZXhwb25l
bnQgdmFsdWUKKyAgICBzdGF0aWMgaW50IGNvbnN0IEViaWFzID0gMTAyMzsgLy8gc3VidHJhY3Rl
ZCBmcm9tIGVuY29kZWQgZXhwb25lbnQKKyAgICBzdGF0aWMgaW50IGNvbnN0IFByZWNpc2lvbiA9
IDE4OworCisgICAgZW51bSBGb3JtYXRDbGFzcyB7CisgICAgICAgIENsYXNzSW5maW5pdHksCisg
ICAgICAgIENsYXNzTm9ybWFsLAorICAgICAgICBDbGFzc05hTiwKKyAgICAgICAgQ2xhc3NaZXJv
LAorICAgIH07CisKKyAgICBlbnVtIFNpZ24geworICAgICAgICBQbHVzLAorICAgICAgICBNaW51
cywKKyAgICB9OworCisgICAgc3RydWN0IEVuY29kZWREYXRhIHsKKyAgICAgICAgZXhwbGljaXQg
RW5jb2RlZERhdGEodWludDMyX3QpOworICAgICAgICBFbmNvZGVkRGF0YSh1aW50NjRfdCwgaW50
LCBTaWduKTsKKworICAgICAgICB1aW50NjRfdCBjb2VmZmljaWVudCgpIGNvbnN0OworICAgICAg
ICBpbnQgY291bnREaWdpdHMoKSBjb25zdDsKKyAgICAgICAgaW50IGV4cG9uZW50KCkgY29uc3Q7
CisgICAgICAgIGJvb2wgaXNGaW5pdGUoKSBjb25zdDsKKyAgICAgICAgYm9vbCBpc1NwZWNpYWwo
KSBjb25zdDsKKyAgICAgICAgYm9vbCBpc1plcm8oKSBjb25zdDsKKyAgICAgICAgaW50IHJhd0V4
cG9uZW50KCkgY29uc3Q7CisgICAgICAgIFNpZ24gc2lnbigpIGNvbnN0OworICAgICAgICB2b2lk
IHNldFNpZ24oU2lnbik7CisKKyAgICAgICAgdWludDY0X3QgbV9jb2VmZmljaWVudDsKKyAgICAg
ICAgdWludDMyX3QgbV9wYWNrZWRGaWVsZDsKKyAgICB9OworCisgICAgRGVjaW1hbCgpOworICAg
IERlY2ltYWwoaW50MzJfdCk7CisgICAgRGVjaW1hbCh1aW50NjRfdCwgaW50LCBTaWduKTsKKyAg
ICBEZWNpbWFsKGNvbnN0IERlY2ltYWwmKTsKKyAgICBleHBsaWNpdCBEZWNpbWFsKGNvbnN0IEVu
Y29kZWREYXRhJik7CisKKyAgICBEZWNpbWFsJiBvcGVyYXRvciA9KGNvbnN0IERlY2ltYWwmKTsK
KyAgICBEZWNpbWFsJiBvcGVyYXRvciArPShjb25zdCBEZWNpbWFsJik7CisgICAgRGVjaW1hbCYg
b3BlcmF0b3IgLT0oY29uc3QgRGVjaW1hbCYpOworICAgIERlY2ltYWwmIG9wZXJhdG9yICo9KGNv
bnN0IERlY2ltYWwmKTsKKyAgICBEZWNpbWFsJiBvcGVyYXRvciAvPShjb25zdCBEZWNpbWFsJik7
CisKKyAgICBEZWNpbWFsIG9wZXJhdG9yIC0oKSBjb25zdDsKKworICAgIGJvb2wgb3BlcmF0b3Ig
PT0oY29uc3QgRGVjaW1hbCYpIGNvbnN0OworICAgIGJvb2wgb3BlcmF0b3IgIT0oY29uc3QgRGVj
aW1hbCYpIGNvbnN0OworICAgIGJvb2wgb3BlcmF0b3IgPChjb25zdCBEZWNpbWFsJikgY29uc3Q7
CisgICAgYm9vbCBvcGVyYXRvciA8PShjb25zdCBEZWNpbWFsJikgY29uc3Q7CisgICAgYm9vbCBv
cGVyYXRvciA+KGNvbnN0IERlY2ltYWwmKSBjb25zdDsKKyAgICBib29sIG9wZXJhdG9yID49KGNv
bnN0IERlY2ltYWwmKSBjb25zdDsKKworICAgIERlY2ltYWwgb3BlcmF0b3IgKyhjb25zdCBEZWNp
bWFsJikgY29uc3Q7CisgICAgRGVjaW1hbCBvcGVyYXRvciAtKGNvbnN0IERlY2ltYWwmKSBjb25z
dDsKKyAgICBEZWNpbWFsIG9wZXJhdG9yICooY29uc3QgRGVjaW1hbCYpIGNvbnN0OworICAgIERl
Y2ltYWwgb3BlcmF0b3IgLyhjb25zdCBEZWNpbWFsJikgY29uc3Q7CisKKyAgICBpbnQgZXhwb25l
bnQoKSBjb25zdDsKKyAgICBGb3JtYXRDbGFzcyBmb3JtYXRDbGFzcygpIGNvbnN0OworICAgIGJv
b2wgaXNGaW5pdGUoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuaXNGaW5pdGUoKTsgfQorICAgIGJv
b2wgaXNNaW51cygpIGNvbnN0IHsgcmV0dXJuIHNpZ24oKSA9PSBNaW51czsgfQorICAgIGJvb2wg
aXNQbHVzKCkgY29uc3QgeyByZXR1cm4gc2lnbigpID09IFBsdXM7IH0KKyAgICBib29sIGlzU3Bl
Y2lhbCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5pc1NwZWNpYWwoKTsgfQorICAgIGJvb2wgaXNa
ZXJvKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmlzWmVybygpOyB9CisgICAgY29uc3QgRW5jb2Rl
ZERhdGEmIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CisKKyAgICBEZWNpbWFsIGFi
cygpIGNvbnN0OworICAgIERlY2ltYWwgY2VpbGluZygpIGNvbnN0OworICAgIERlY2ltYWwgZmxv
b3IoKSBjb25zdDsKKyAgICBEZWNpbWFsIHJlbWFpbmRlcihjb25zdCBEZWNpbWFsJikgY29uc3Q7
CisgICAgRGVjaW1hbCByb3VuZCgpIGNvbnN0OworICAgIGRvdWJsZSB0b0RvdWJsZSgpIGNvbnN0
OworICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0OworCisgICAgc3RhdGljIERlY2ltYWwgZnJv
bVN0cmluZyhjb25zdCBTdHJpbmcmKTsKKyAgICBzdGF0aWMgRGVjaW1hbCBpbmZpbml0eShTaWdu
KTsKKyAgICBzdGF0aWMgRGVjaW1hbCBuYW4oKTsKKyAgICBzdGF0aWMgRGVjaW1hbCB6ZXJvKFNp
Z24pOworCitwcml2YXRlOgorICAgIERlY2ltYWwoZG91YmxlKTsKKyAgICBEZWNpbWFsIGNvbXBh
cmVUbyhjb25zdCBEZWNpbWFsJikgY29uc3Q7CisgICAgYm9vbCBmYXN0RXF1YWxzKGNvbnN0IERl
Y2ltYWwmKSBjb25zdDsKKworICAgIHN0YXRpYyBpbmxpbmUgU2lnbiBpbnZlcnRTaWduKFNpZ24g
c2lnbikKKyAgICB7CisgICAgICAgIHJldHVybiBzaWduID09IE1pbnVzID8gUGx1cyA6IE1pbnVz
OworICAgIH0KKworICAgIFNpZ24gc2lnbigpIGNvbnN0OworCisgICAgRW5jb2RlZERhdGEgbV9k
YXRhOworfTsKKworfSAvLyBXZWJDb3JlCisKKyNlbmRpZiAvLyBEZWNpbWFsX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL1dlYktpdC5neXBpCmluZGV4IDc4NTRlZGYwYTk5ZDZjYmQ4MjE1NzRjZTZmNDE1NGJj
MTEwYjAzODQuLmRjODc1NmVkNmEzZWI1Zjc5ZTIzOGEwZWM1NGE5N2Y0MjEzMGQwZmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQpAQCAtOTUsNiArOTUsNyBAQAogICAgICAgICAgICAg
J3Rlc3RzL0NsaXBib2FyZENocm9taXVtVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0Nv
bXBvc2l0b3JGYWtlR3JhcGhpY3NDb250ZXh0M0QuaCcsCiAgICAgICAgICAgICAndGVzdHMvQ29t
cG9zaXRvckZha2VXZWJHcmFwaGljc0NvbnRleHQzRC5oJywKKyAgICAgICAgICAgICd0ZXN0cy9E
ZWNpbWFsVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0RyYWdJbWFnZVRlc3QuY3BwJywK
ICAgICAgICAgICAgICd0ZXN0cy9EcmF3aW5nQnVmZmVyQ2hyb21pdW1UZXN0LmNwcCcsCiAgICAg
ICAgICAgICAndGVzdHMvRXZlbnRMaXN0ZW5lclRlc3QuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRGVjaW1hbFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9EZWNpbWFsVGVzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzlkNzhkYWUxOGQ3MDZl
MWYyMjRkZDBjYjExNzY3ZmU0NmU4MWVjNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvRGVjaW1hbFRlc3QuY3BwCkBAIC0wLDAgKzEsNTg0IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRp
c3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRlY2ltYWwuaCIKKworI2luY2x1ZGUgPGd0ZXN0L2d0
ZXN0Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKKzo6c3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KDo6c3RkOjpvc3RyZWFtJiBvcywgY29u
c3QgRGVjaW1hbCYgZGVjaW1hbCkKK3sKKyAgICBEZWNpbWFsOjpFbmNvZGVkRGF0YSBkYXRhID0g
ZGVjaW1hbC52YWx1ZSgpOworICAgIHJldHVybiBvcyAKKyAgICAgICAgPDwgIkRlY2ltYWwoIiA8
PCBTdHJpbmc6Om51bWJlcihkYXRhLmNvZWZmaWNpZW50KCkpLmFzY2lpKCkuZGF0YSgpCisgICAg
ICAgIDw8ICIsICIgPDwgU3RyaW5nOjpudW1iZXIoZGF0YS5leHBvbmVudCgpKS5hc2NpaSgpLmRh
dGEoKQorICAgICAgICA8PCAiLCAiIDw8IChkYXRhLnNpZ24oKSA9PSBEZWNpbWFsOjpNaW51cyA/
ICJNaW51cyIgOiAiUGx1cyIpCisgICAgICAgIDw8ICIpPSIgPDwgZGVjaW1hbC50b1N0cmluZygp
LmFzY2lpKCkuZGF0YSgpOworfQorCit9IC8vIFdlYkNvcmUKKworbmFtZXNwYWNlIERlY2ltYWxU
ZXN0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKKy8vIFNpbXVsYXRlIFdlYkNvcmUv
aHRtbC9TdGVwUmFuZ2UKK2NsYXNzIERlY2ltYWxTdGVwUmFuZ2UgeworcHVibGljOgorICAgIERl
Y2ltYWwgbWF4aW11bTsKKyAgICBEZWNpbWFsIG1pbmltdW07CisgICAgRGVjaW1hbCBzdGVwOwor
CisgICAgRGVjaW1hbFN0ZXBSYW5nZShjb25zdCBEZWNpbWFsJiBtaW5pbXVtLCBjb25zdCBEZWNp
bWFsJiBtYXhpbXVtLCBjb25zdCBEZWNpbWFsJiBzdGVwKQorICAgICAgICA6IG1heGltdW0obWF4
aW11bSkKKyAgICAgICAgLCBtaW5pbXVtKG1pbmltdW0pCisgICAgICAgICwgc3RlcChzdGVwKQor
ICAgIHsKKyAgICB9CisKKyAgICBEZWNpbWFsIGNsYW1wVmFsdWUoRGVjaW1hbCB2YWx1ZSkgY29u
c3QKKyAgICB7CisgICAgICAgIGNvbnN0IERlY2ltYWwgcmVzdWx0ID0gbWluaW11bSArICgodmFs
dWUgLSBtaW5pbXVtKSAvIHN0ZXApLnJvdW5kKCkgKiBzdGVwOworICAgICAgICBBU1NFUlQocmVz
dWx0LmlzRmluaXRlKCkpOworICAgICAgICByZXR1cm4gcmVzdWx0ID4gbWF4aW11bSA/IHJlc3Vs
dCAtIHN0ZXAgOiByZXN1bHQ7CisgICAgfQorfTsKKworY2xhc3MgRGVjaW1hbFRlc3QgOiBwdWJs
aWMgOjp0ZXN0aW5nOjpUZXN0IHsKK3Byb3RlY3RlZDoKKyAgICB0eXBlZGVmIERlY2ltYWw6OlNp
Z24gU2lnbjsKKyAgICBwcm90ZWN0ZWQ6IHN0YXRpYyBjb25zdCBTaWduIFBsdXMgPSBEZWNpbWFs
OjpQbHVzOworICAgIHByb3RlY3RlZDogc3RhdGljIGNvbnN0IFNpZ24gTWludXMgPSBEZWNpbWFs
OjpNaW51czsKKworICAgIERlY2ltYWwgZW5jb2RlKHVpbnQ2NF90IGNvZWZmaWNpZW50LCBpbnQg
ZXhwb25lbnQsIFNpZ24gc2lnbikKKyAgICB7CisgICAgICAgIHJldHVybiBEZWNpbWFsKGNvZWZm
aWNpZW50LCBleHBvbmVudCwgc2lnbik7CisgICAgfQorCisgICAgcHJvdGVjdGVkOiBEZWNpbWFs
IGZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpCisgICAgeworICAgICAgICByZXR1cm4g
RGVjaW1hbDo6ZnJvbVN0cmluZyhzdHJpbmcpOworICAgIH0KKworICAgIHByb3RlY3RlZDogU3Ry
aW5nIHN0ZXBEb3duKGNvbnN0IFN0cmluZyYgbWluaW11bSwgY29uc3QgU3RyaW5nJiBtYXhpbXVt
LCBjb25zdCBTdHJpbmcmIHN0ZXAsIGNvbnN0IFN0cmluZyYgdmFsdWVTdHJpbmcsIGludCBudW1i
ZXJPZlN0ZXBUaW1lcykKKyAgICB7CisgICAgICAgIERlY2ltYWxTdGVwUmFuZ2Ugc3RlcFJhbmdl
KGZyb21TdHJpbmcobWluaW11bSksIGZyb21TdHJpbmcobWF4aW11bSksIGZyb21TdHJpbmcoc3Rl
cCkpOworICAgICAgICBEZWNpbWFsIHZhbHVlID0gZnJvbVN0cmluZyh2YWx1ZVN0cmluZyk7Cisg
ICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtYmVyT2ZTdGVwVGltZXM7ICsraSkgeworICAg
ICAgICAgIHZhbHVlIC09IHN0ZXBSYW5nZS5zdGVwOworICAgICAgICAgIHZhbHVlID0gc3RlcFJh
bmdlLmNsYW1wVmFsdWUodmFsdWUpOworICAgICAgICB9CisgICAgICAgIHJldHVybiB2YWx1ZS50
b1N0cmluZygpOworICAgIH0KKworICAgIHByb3RlY3RlZDogU3RyaW5nIHN0ZXBVcChjb25zdCBT
dHJpbmcmIG1pbmltdW0sIGNvbnN0IFN0cmluZyYgbWF4aW11bSwgY29uc3QgU3RyaW5nJiBzdGVw
LCBjb25zdCBTdHJpbmcmIHZhbHVlU3RyaW5nLCBpbnQgbnVtYmVyT2ZTdGVwVGltZXMpCisgICAg
eworICAgICAgICBEZWNpbWFsU3RlcFJhbmdlIHN0ZXBSYW5nZShmcm9tU3RyaW5nKG1pbmltdW0p
LCBmcm9tU3RyaW5nKG1heGltdW0pLCBmcm9tU3RyaW5nKHN0ZXApKTsKKyAgICAgICAgRGVjaW1h
bCB2YWx1ZSA9IGZyb21TdHJpbmcodmFsdWVTdHJpbmcpOworICAgICAgICBmb3IgKGludCBpID0g
MDsgaSA8IG51bWJlck9mU3RlcFRpbWVzOyArK2kpIHsKKyAgICAgICAgICB2YWx1ZSArPSBzdGVw
UmFuZ2Uuc3RlcDsKKyAgICAgICAgICB2YWx1ZSA9IHN0ZXBSYW5nZS5jbGFtcFZhbHVlKHZhbHVl
KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoKTsKKyAgICB9Cit9
OworCitURVNUX0YoRGVjaW1hbFRlc3QsIEFicykKK3sKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDAs
IDAsIFBsdXMpLCBlbmNvZGUoMCwgMCwgUGx1cykuYWJzKCkpOworICAgIEVYUEVDVF9FUShlbmNv
ZGUoMCwgMCwgUGx1cyksIGVuY29kZSgwLCAwLCBNaW51cykuYWJzKCkpOworCisgICAgRVhQRUNU
X0VRKGVuY29kZSgwLCAxMCwgUGx1cyksIGVuY29kZSgwLCAxMCwgUGx1cykuYWJzKCkpOworICAg
IEVYUEVDVF9FUShlbmNvZGUoMCwgMTAsIFBsdXMpLCBlbmNvZGUoMCwgMTAsIE1pbnVzKS5hYnMo
KSk7CisKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDAsIC0xMCwgUGx1cyksIGVuY29kZSgwLCAtMTAs
IFBsdXMpLmFicygpKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDAsIC0xMCwgUGx1cyksIGVuY29k
ZSgwLCAtMTAsIE1pbnVzKS5hYnMoKSk7CisKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDEsIDAsIFBs
dXMpLCBlbmNvZGUoMSwgMCwgUGx1cykuYWJzKCkpOworICAgIEVYUEVDVF9FUShlbmNvZGUoMSwg
MCwgUGx1cyksIGVuY29kZSgxLCAwLCBNaW51cykuYWJzKCkpOworCisgICAgRVhQRUNUX0VRKGVu
Y29kZSgxLCAxMCwgUGx1cyksIGVuY29kZSgxLCAxMCwgUGx1cykuYWJzKCkpOworICAgIEVYUEVD
VF9FUShlbmNvZGUoMSwgMTAsIFBsdXMpLCBlbmNvZGUoMSwgMTAsIE1pbnVzKS5hYnMoKSk7CisK
KyAgICBFWFBFQ1RfRVEoZW5jb2RlKDEsIC0xMCwgUGx1cyksIGVuY29kZSgxLCAtMTAsIFBsdXMp
LmFicygpKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDEsIC0xMCwgUGx1cyksIGVuY29kZSgxLCAt
MTAsIE1pbnVzKS5hYnMoKSk7Cit9CisKK1RFU1RfRihEZWNpbWFsVGVzdCwgQ2VpbGluZykKK3sK
KyAgICBFWFBFQ1RfRVEoRGVjaW1hbCgxKSwgRGVjaW1hbCgxKS5jZWlsKCkpOworICAgIEVYUEVD
VF9FUShEZWNpbWFsKDIpLCBlbmNvZGUoMTEsIC0xLCBQbHVzKS5jZWlsKCkpOworICAgIEVYUEVD
VF9FUShEZWNpbWFsKDIpLCBlbmNvZGUoMTMsIC0xLCBQbHVzKS5jZWlsKCkpOworICAgIEVYUEVD
VF9FUShEZWNpbWFsKDIpLCBlbmNvZGUoMTUsIC0xLCBQbHVzKS5jZWlsKCkpOworICAgIEVYUEVD
VF9FUShEZWNpbWFsKDIpLCBlbmNvZGUoMTksIC0xLCBQbHVzKS5jZWlsKCkpOworCisgICAgRVhQ
RUNUX0VRKERlY2ltYWwoLTEpLCBEZWNpbWFsKC0xKS5jZWlsKCkpOworICAgIEVYUEVDVF9FUShE
ZWNpbWFsKC0xKSwgZW5jb2RlKDExLCAtMSwgTWludXMpLmNlaWwoKSk7CisgICAgRVhQRUNUX0VR
KERlY2ltYWwoLTEpLCBlbmNvZGUoMTMsIC0xLCBNaW51cykuY2VpbCgpKTsKKyAgICBFWFBFQ1Rf
RVEoRGVjaW1hbCgtMSksIGVuY29kZSgxNSwgLTEsIE1pbnVzKS5jZWlsKCkpOworICAgIEVYUEVD
VF9FUShEZWNpbWFsKC0xKSwgZW5jb2RlKDE5LCAtMSwgTWludXMpLmNlaWwoKSk7Cit9CisKK1RF
U1RfRihEZWNpbWFsVGVzdCwgRW5jb2RlZERhdGEpCit7CisgICAgRVhQRUNUX0VRKGVuY29kZSgw
LCAwLCBQbHVzKSwgZW5jb2RlKDAsIDAsIFBsdXMpKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDAs
IDAsIE1pbnVzKSwgZW5jb2RlKDAsIDAsIE1pbnVzKSk7CisgICAgRVhQRUNUX0VRKERlY2ltYWwo
MSksIERlY2ltYWwoMSkpOworICAgIEVYUEVDVF9FUShlbmNvZGUoMSwgMCwgTWludXMpLCBlbmNv
ZGUoMSwgMCwgTWludXMpKTsKKyAgICBFWFBFQ1RfRVEoRGVjaW1hbDo6aW5maW5pdHkoUGx1cyks
IGVuY29kZSgxLCAyMDAwLCBQbHVzKSk7CisgICAgRVhQRUNUX0VRKERlY2ltYWw6Onplcm8oUGx1
cyksIGVuY29kZSgxLCAtMjAwMCwgUGx1cykpOworfQorCitURVNUX0YoRGVjaW1hbFRlc3QsIEZs
b29yKQoreworICAgIEVYUEVDVF9FUShEZWNpbWFsKDEpLCBEZWNpbWFsKDEpLmZsb29yKCkpOwor
ICAgIEVYUEVDVF9FUShEZWNpbWFsKDEpLCBlbmNvZGUoMTEsIC0xLCBQbHVzKS5mbG9vcigpKTsK
KyAgICBFWFBFQ1RfRVEoRGVjaW1hbCgxKSwgZW5jb2RlKDEzLCAtMSwgUGx1cykuZmxvb3IoKSk7
CisgICAgRVhQRUNUX0VRKERlY2ltYWwoMSksIGVuY29kZSgxNSwgLTEsIFBsdXMpLmZsb29yKCkp
OworICAgIEVYUEVDVF9FUShEZWNpbWFsKDEpLCBlbmNvZGUoMTksIC0xLCBQbHVzKS5mbG9vcigp
KTsKKworICAgIEVYUEVDVF9FUShEZWNpbWFsKC0xKSwgRGVjaW1hbCgtMSkuZmxvb3IoKSk7Cisg
ICAgRVhQRUNUX0VRKERlY2ltYWwoLTIpLCBlbmNvZGUoMTEsIC0xLCBNaW51cykuZmxvb3IoKSk7
CisgICAgRVhQRUNUX0VRKERlY2ltYWwoLTIpLCBlbmNvZGUoMTMsIC0xLCBNaW51cykuZmxvb3Io
KSk7CisgICAgRVhQRUNUX0VRKERlY2ltYWwoLTIpLCBlbmNvZGUoMTUsIC0xLCBNaW51cykuZmxv
b3IoKSk7CisgICAgRVhQRUNUX0VRKERlY2ltYWwoLTIpLCBlbmNvZGUoMTksIC0xLCBNaW51cyku
Zmxvb3IoKSk7Cit9CisKK1RFU1RfRihEZWNpbWFsVGVzdCwgRnJvbUludDMyKQoreworICAgIEVY
UEVDVF9FUShlbmNvZGUoMCwgMCwgUGx1cyksIERlY2ltYWwoMCkpOworICAgIEVYUEVDVF9FUShE
ZWNpbWFsKDEpLCBEZWNpbWFsKDEpKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDEsIDAsIE1pbnVz
KSwgRGVjaW1hbCgtMSkpOworICAgIEVYUEVDVF9FUShlbmNvZGUoMTAwLCAwLCBQbHVzKSwgRGVj
aW1hbCgxMDApKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDEwMCwgMCwgTWludXMpLCBEZWNpbWFs
KC0xMDApKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDB4N0ZGRkZGRkYsIDAsIFBsdXMpLCBEZWNp
bWFsKElOVF9NQVgpKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDB4ODAwMDAwMDB1LCAwLCBNaW51
cyksIERlY2ltYWwoSU5UX01JTikpOworfQorCitURVNUX0YoRGVjaW1hbFRlc3QsIEZyb21TdHJp
bmcpCit7CisgICAgRVhQRUNUX0VRKGVuY29kZSgwLCAwLCBQbHVzKSwgZnJvbVN0cmluZygiMCIp
KTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDAsIDAsIE1pbnVzKSwgZnJvbVN0cmluZygiLTAiKSk7
CisgICAgRVhQRUNUX0VRKERlY2ltYWwoMSksIGZyb21TdHJpbmcoIjEiKSk7CisgICAgRVhQRUNU
X0VRKGVuY29kZSgxLCAwLCBNaW51cyksIGZyb21TdHJpbmcoIi0xIikpOworICAgIEVYUEVDVF9F
UShEZWNpbWFsKDEpLCBmcm9tU3RyaW5nKCIwMSIpKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDMs
IDAsIFBsdXMpLCBmcm9tU3RyaW5nKCIrMyIpKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDAsIDMs
IFBsdXMpLCBmcm9tU3RyaW5nKCIwRTMiKSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSg1LCAtMSwg
UGx1cyksIGZyb21TdHJpbmcoIi41IikpOworICAgIEVYUEVDVF9FUShlbmNvZGUoMTAwLCAwLCBQ
bHVzKSwgZnJvbVN0cmluZygiMTAwIikpOworICAgIEVYUEVDVF9FUShlbmNvZGUoMTAwLCAwLCBN
aW51cyksIGZyb21TdHJpbmcoIi0xMDAiKSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSgxMjMsIC0y
LCBQbHVzKSwgZnJvbVN0cmluZygiMS4yMyIpKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDEyMywg
LTIsIE1pbnVzKSwgZnJvbVN0cmluZygiLTEuMjMiKSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSgx
MjMsIDgsIFBsdXMpLCBmcm9tU3RyaW5nKCIxLjIzRTEwIikpOworICAgIEVYUEVDVF9FUShlbmNv
ZGUoMTIzLCA4LCBNaW51cyksIGZyb21TdHJpbmcoIi0xLjIzRTEwIikpOworICAgIEVYUEVDVF9F
UShlbmNvZGUoMTIzLCA4LCBQbHVzKSwgZnJvbVN0cmluZygiMS4yM0UrMTAiKSk7CisgICAgRVhQ
RUNUX0VRKGVuY29kZSgxMjMsIDgsIE1pbnVzKSwgZnJvbVN0cmluZygiLTEuMjNFKzEwIikpOwor
ICAgIEVYUEVDVF9FUShlbmNvZGUoMTIzLCAtMTIsIFBsdXMpLCBmcm9tU3RyaW5nKCIxLjIzRS0x
MCIpKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDEyMywgLTEyLCBNaW51cyksIGZyb21TdHJpbmco
Ii0xLjIzRS0xMCIpKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDUsIC03LCBQbHVzKSwgZnJvbVN0
cmluZygiMC4wMDAwMDA1IikpOworICAgIEVYUEVDVF9FUShlbmNvZGUoMTIzLCAtMywgUGx1cyks
IGZyb21TdHJpbmcoIjAuMTIzIikpOworICAgIEVYUEVDVF9FUShlbmNvZGUoMCwgLTIsIFBsdXMp
LCBmcm9tU3RyaW5nKCIwMC4wMCIpKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDEsIDIsIFBsdXMp
LCBmcm9tU3RyaW5nKCIxRTIiKSk7CisgICAgRVhQRUNUX0VRKERlY2ltYWw6OmluZmluaXR5KFBs
dXMpLCBmcm9tU3RyaW5nKCIxRTIwMDAwIikpOworICAgIEVYUEVDVF9FUShEZWNpbWFsOjp6ZXJv
KFBsdXMpLCBmcm9tU3RyaW5nKCIxRS0yMDAwMCIpKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDEw
MDAsIDEwMjMsIFBsdXMpLCBmcm9tU3RyaW5nKCIxRTEwMjYiKSk7CisgICAgRVhQRUNUX0VRKERl
Y2ltYWw6Onplcm8oUGx1cyksIGZyb21TdHJpbmcoIjFFLTEwMjYiKSk7CisgICAgRVhQRUNUX0VR
KERlY2ltYWw6OmluZmluaXR5KFBsdXMpLCBmcm9tU3RyaW5nKCIxMjM0NTY3ODkwRTEwMzYiKSk7
CisKKyAgICAvLyAyXjEwMjQKKy8vIEZJWE1FOiBVSU5UNjRfQygxNzk3NjkzMTM0ODYyMzE1OSkg
c2hvdWxkIGJlIHVzZWQgYnV0IGl0IGRpZCBub3QgY29tcGlsZSBvbiBRdCBib3RzLgorI2lmIENP
TVBJTEVSKE1TVkMpCisgICAgY29uc3QgdWludDY0X3QgbGVhZGluZ0RpZ2l0c09mMlBvd2VyT2Yx
MDI0ID0gMTc5NzY5MzEzNDg2MjMxNTl1aTY0OworI2Vsc2UKKyAgICBjb25zdCB1aW50NjRfdCBs
ZWFkaW5nRGlnaXRzT2YyUG93ZXJPZjEwMjQgPSAxNzk3NjkzMTM0ODYyMzE1OXVsbDsKKyNlbmRp
ZgorICAgIEVYUEVDVF9FUShlbmNvZGUobGVhZGluZ0RpZ2l0c09mMlBvd2VyT2YxMDI0LCAyOTIs
IFBsdXMpLCBmcm9tU3RyaW5nKCIxNzk3NjkzMTM0ODYyMzE1OTA3NzI5MzA1MTkwNzg5MDI0NzMz
NjE3OTc2OTc4OTQyMzA2NTcyNzM0MzAwODExNTc3MzI2NzU4MDU1MDA5NjMxMzI3MDg0NzczMjI0
MDc1MzYwMjExMjAxMTM4Nzk4NzEzOTMzNTc2NTg3ODk3Njg4MTQ0MTY2MjI0OTI4NDc0MzA2Mzk0
NzQxMjQzNzc3Njc4OTM0MjQ4NjU0ODUyNzYzMDIyMTk2MDEyNDYwOTQxMTk0NTMwODI5NTIwODUw
MDU3Njg4MzgxNTA2ODIzNDI0NjI4ODE0NzM5MTMxMTA1NDA4MjcyMzcxNjMzNTA1MTA2ODQ1ODYy
OTgyMzk5NDcyNDU5Mzg0Nzk3MTYzMDQ4MzUzNTYzMjk2MjQyMjQxMzcyMTYiKSk7Cit9CisKKy8v
IFRoZXNlIHN0cmluZ3MgYXJlIGxvb2sgbGlrZSBwcm9wZXIgbnVtYmVyLCBidXQgd2UgZG9uJ3Qg
YWNjZXB0IHRoZW0uCitURVNUX0YoRGVjaW1hbFRlc3QsIEZyb21TdHJpbmdMaWtlTnVtYmVyKQor
eworICAgIEVYUEVDVF9FUShEZWNpbWFsOjpuYW4oKSwgZnJvbVN0cmluZygiIDEyMyAiKSk7Cisg
ICAgRVhQRUNUX0VRKERlY2ltYWw6Om5hbigpLCBmcm9tU3RyaW5nKCIxLDIzNCIpKTsKKyAgICBF
WFBFQ1RfRVEoRGVjaW1hbDo6bmFuKCksIGZyb21TdHJpbmcoIklORiIpKTsKK30KKworVEVTVF9G
KERlY2ltYWxUZXN0LCBmcm9tU3RyaW5nVHJ1bmNhdGVkKQoreworICAgIEVYUEVDVF9FUShEZWNp
bWFsOjpuYW4oKSwgZnJvbVN0cmluZygieCIpKTsKKyAgICBFWFBFQ1RfRVEoRGVjaW1hbDo6bmFu
KCksIGZyb21TdHJpbmcoIjAuIikpOworICAgIEVYUEVDVF9FUShEZWNpbWFsOjpuYW4oKSwgZnJv
bVN0cmluZygiMXgiKSk7CisKKyAgICBFWFBFQ1RfRVEoRGVjaW1hbDo6bmFuKCksIGZyb21TdHJp
bmcoIjFFeCIpKTsKKyAgICBFWFBFQ1RfRVEoRGVjaW1hbDo6bmFuKCksIGZyb21TdHJpbmcoIjFF
MngiKSk7CisgICAgRVhQRUNUX0VRKERlY2ltYWw6Om5hbigpLCBmcm9tU3RyaW5nKCIxRSt4Iikp
OworfQorCitURVNUX0YoRGVjaW1hbFRlc3QsIE9wQWRkKQoreworICAgIEVYUEVDVF9FUShlbmNv
ZGUoMCwgMCwgUGx1cyksIERlY2ltYWwoMCkgKyBEZWNpbWFsKDApKTsKKyAgICBFWFBFQ1RfRVEo
RGVjaW1hbCgxKSwgRGVjaW1hbCgyKSArIERlY2ltYWwoLTEpKTsKKyAgICBFWFBFQ1RfRVEoRGVj
aW1hbCgxKSwgRGVjaW1hbCgtMSkgKyBEZWNpbWFsKDIpKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2Rl
KDEwMCwgMCwgUGx1cyksIERlY2ltYWwoOTkpICsgRGVjaW1hbCgxKSk7CisgICAgRVhQRUNUX0VR
KGVuY29kZSgxMDAsIDAsIE1pbnVzKSwgRGVjaW1hbCgtNTApICsgRGVjaW1hbCgtNTApKTsKKyAg
ICBFWFBFQ1RfRVEoZW5jb2RlKDEwMDAwMDAwMDAwMDAwMDAsIDM1LCBQbHVzKSwgZW5jb2RlKDEs
IDUwLCBQbHVzKSArIERlY2ltYWwoMSkpOworICAgIEVYUEVDVF9FUShlbmNvZGUoMTAwMDAwMDAw
MDAwMDAwMCwgMzUsIFBsdXMpLCBEZWNpbWFsKDEpICsgZW5jb2RlKDEsIDUwLCBQbHVzKSk7Cisg
ICAgRVhQRUNUX0VRKGVuY29kZSgxMDAwMDAwMDAwMSwgMCwgUGx1cyksIGVuY29kZSgxLCAxMCwg
UGx1cykgKyBEZWNpbWFsKDEpKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDEwMDAwMDAwMDAxLCAw
LCBQbHVzKSwgRGVjaW1hbCgxKSArIGVuY29kZSgxLCAxMCwgUGx1cykpOworICAgIEVYUEVDVF9F
UShlbmNvZGUoMSwgMCwgUGx1cyksIGVuY29kZSgxLCAtMTAyMiwgUGx1cykgKyBlbmNvZGUoMSwg
MCwgUGx1cykpOworICAgIEVYUEVDVF9FUShlbmNvZGUoMiwgLTEwMjIsIFBsdXMpLCBlbmNvZGUo
MSwgLTEwMjIsIFBsdXMpICsgZW5jb2RlKDEsIC0xMDIyLCBQbHVzKSk7Cit9CisKK1RFU1RfRihE
ZWNpbWFsVGVzdCwgT3BBZGRCaWdFKQoreworICAgIEVYUEVDVF9FUShlbmNvZGUoMSwgMTAyMiwg
UGx1cyksIGVuY29kZSgxLCAxMDIyLCBQbHVzKSArIGVuY29kZSgxLCAwLCBQbHVzKSk7CisgICAg
RVhQRUNUX0VRKGVuY29kZSgyLCAxMDIyLCBQbHVzKSwgZW5jb2RlKDEsIDEwMjIsIFBsdXMpICsg
ZW5jb2RlKDEsIDEwMjIsIFBsdXMpKTsKKyAgICBFWFBFQ1RfRVEoRGVjaW1hbDo6aW5maW5pdHko
UGx1cyksIGVuY29kZSh1aW50NjRfdCgtMSksIDEwMjIsIFBsdXMpICsgZW5jb2RlKDEsIDAsIFBs
dXMpKTsKK30KKworVEVTVF9GKERlY2ltYWxUZXN0LCBPcEFkZFNtYWxsRSkKK3sKKyAgICBFWFBF
Q1RfRVEoZW5jb2RlKDEsIDAsIFBsdXMpLCBlbmNvZGUoMSwgLTEwMjIsIFBsdXMpICsgZW5jb2Rl
KDEsIDAsIFBsdXMpKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDIsIC0xMDIyLCBQbHVzKSwgZW5j
b2RlKDEsIC0xMDIyLCBQbHVzKSArIGVuY29kZSgxLCAtMTAyMiwgUGx1cykpOworfQorCitURVNU
X0YoRGVjaW1hbFRlc3QsIE9wQWRkU3BlY2lhbFZhbHVlcykKK3sKKyAgICBjb25zdCBEZWNpbWFs
IEluZmluaXR5KERlY2ltYWw6OmluZmluaXR5KFBsdXMpKTsKKyAgICBjb25zdCBEZWNpbWFsIE1p
bnVzSW5maW5pdHkoRGVjaW1hbDo6aW5maW5pdHkoTWludXMpKTsKKyAgICBjb25zdCBEZWNpbWFs
IE5hTihEZWNpbWFsOjpuYW4oKSk7CisgICAgY29uc3QgRGVjaW1hbCBUZW4oMTApOworCisgICAg
RVhQRUNUX0VRKEluZmluaXR5LCBJbmZpbml0eSArIEluZmluaXR5KTsKKyAgICBFWFBFQ1RfRVEo
TmFOLCBJbmZpbml0eSArIE1pbnVzSW5maW5pdHkpOworICAgIEVYUEVDVF9FUShOYU4sIE1pbnVz
SW5maW5pdHkgKyBJbmZpbml0eSk7CisgICAgRVhQRUNUX0VRKE1pbnVzSW5maW5pdHksIE1pbnVz
SW5maW5pdHkgKyBNaW51c0luZmluaXR5KTsKKworICAgIEVYUEVDVF9FUShJbmZpbml0eSwgSW5m
aW5pdHkgKyBUZW4pOworICAgIEVYUEVDVF9FUShJbmZpbml0eSwgVGVuICsgSW5maW5pdHkpOwor
ICAgIEVYUEVDVF9FUShNaW51c0luZmluaXR5LCBNaW51c0luZmluaXR5ICsgVGVuKTsKKyAgICBF
WFBFQ1RfRVEoTWludXNJbmZpbml0eSwgVGVuICsgTWludXNJbmZpbml0eSk7CisKKyAgICBFWFBF
Q1RfRVEoTmFOLCBOYU4gKyBOYU4pOworICAgIEVYUEVDVF9FUShOYU4sIE5hTiArIFRlbik7Cisg
ICAgRVhQRUNUX0VRKE5hTiwgVGVuICsgTmFOKTsKK30KKworVEVTVF9GKERlY2ltYWxUZXN0LCBP
cENvbXBhcmUpCit7CisgICAgRVhQRUNUX1RSVUUoRGVjaW1hbCgwKSA9PSBEZWNpbWFsKDApKTsK
KyAgICBFWFBFQ1RfVFJVRShEZWNpbWFsKDApICE9IERlY2ltYWwoMSkpOworICAgIEVYUEVDVF9U
UlVFKERlY2ltYWwoMCkgPCBEZWNpbWFsKDEpKTsKKyAgICBFWFBFQ1RfVFJVRShEZWNpbWFsKDAp
IDw9IERlY2ltYWwoMCkpOworICAgIEVYUEVDVF9UUlVFKERlY2ltYWwoMCkgPiBEZWNpbWFsKC0x
KSk7CisgICAgRVhQRUNUX1RSVUUoRGVjaW1hbCgwKSA+PSBEZWNpbWFsKDApKTsKKworICAgIEVY
UEVDVF9GQUxTRShEZWNpbWFsKDEpID09IERlY2ltYWwoMikpOworICAgIEVYUEVDVF9GQUxTRShE
ZWNpbWFsKDEpICE9IERlY2ltYWwoMSkpOworICAgIEVYUEVDVF9GQUxTRShEZWNpbWFsKDEpIDwg
RGVjaW1hbCgwKSk7CisgICAgRVhQRUNUX0ZBTFNFKERlY2ltYWwoMSkgPD0gRGVjaW1hbCgwKSk7
CisgICAgRVhQRUNUX0ZBTFNFKERlY2ltYWwoMSkgPiBEZWNpbWFsKDIpKTsKKyAgICBFWFBFQ1Rf
RkFMU0UoRGVjaW1hbCgxKSA+PSBEZWNpbWFsKDIpKTsKK30KKworVEVTVF9GKERlY2ltYWxUZXN0
LCBPcENvbXBhcmVTcGVjaWFsVmFsdWVzKQoreworICAgIEVYUEVDVF9UUlVFKERlY2ltYWwoMSkg
PCBEZWNpbWFsOjppbmZpbml0eShQbHVzKSk7CisgICAgRVhQRUNUX1RSVUUoRGVjaW1hbCgxKSA+
IERlY2ltYWw6OmluZmluaXR5KE1pbnVzKSk7Cit9CisKK1RFU1RfRihEZWNpbWFsVGVzdCwgT3BE
aXYpCit7CisgICAgRVhQRUNUX0VRKGVuY29kZSgwLCAwLCBQbHVzKSwgRGVjaW1hbCgwKSAvIERl
Y2ltYWwoMSkpOworICAgIEVYUEVDVF9FUShlbmNvZGUoMiwgMCwgTWludXMpLCBEZWNpbWFsKDIp
IC8gRGVjaW1hbCgtMSkpOworICAgIEVYUEVDVF9FUShlbmNvZGUoNSwgLTEsIE1pbnVzKSwgRGVj
aW1hbCgtMSkgLyBEZWNpbWFsKDIpKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDk5LCAwLCBQbHVz
KSwgRGVjaW1hbCg5OSkgLyBEZWNpbWFsKDEpKTsKKyAgICBFWFBFQ1RfRVEoRGVjaW1hbCgxKSwg
RGVjaW1hbCgtNTApIC8gRGVjaW1hbCgtNTApKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDMzMzMz
MzMzMzMzMzMzMzMsIC0xNiwgUGx1cyksIERlY2ltYWwoMSkgLyBEZWNpbWFsKDMpKTsKKyAgICBF
WFBFQ1RfRVEoZW5jb2RlKDEyMzQ1Njc4OTAxMjM0LCAtMSwgUGx1cyksIGVuY29kZSgxMjM0NTY3
ODkwMTIzNCwgMCwgUGx1cykgLyBEZWNpbWFsKDEwKSk7Cit9CisKK1RFU1RfRihEZWNpbWFsVGVz
dCwgT3BEaXZCaWdFKQoreworICAgIEVYUEVDVF9FUShlbmNvZGUoMSwgMTAyMiwgUGx1cyksIGVu
Y29kZSgxLCAxMDIyLCBQbHVzKSAvIGVuY29kZSgxLCAwLCBQbHVzKSk7CisgICAgRVhQRUNUX0VR
KGVuY29kZSgxLCAwLCBQbHVzKSwgZW5jb2RlKDEsIDEwMjIsIFBsdXMpIC8gZW5jb2RlKDEsIDEw
MjIsIFBsdXMpKTsKK30KKworVEVTVF9GKERlY2ltYWxUZXN0LCBPcERpdlNtYWxsRSkKK3sKKyAg
ICBFWFBFQ1RfRVEoZW5jb2RlKDEsIC0xMDIyLCBQbHVzKSwgZW5jb2RlKDEsIC0xMDIyLCBQbHVz
KSAvIGVuY29kZSgxLCAwLCBQbHVzKSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSgxLCAwLCBQbHVz
KSwgZW5jb2RlKDEsIC0xMDIyLCBQbHVzKSAvIGVuY29kZSgxLCAtMTAyMiwgUGx1cykpOworfQor
CitURVNUX0YoRGVjaW1hbFRlc3QsIE9wRGl2U3BlY2lhbFZhbHVlcykKK3sKKyAgICBjb25zdCBE
ZWNpbWFsIEluZmluaXR5KERlY2ltYWw6OmluZmluaXR5KFBsdXMpKTsKKyAgICBjb25zdCBEZWNp
bWFsIE1pbnVzSW5maW5pdHkoRGVjaW1hbDo6aW5maW5pdHkoTWludXMpKTsKKyAgICBjb25zdCBE
ZWNpbWFsIE5hTihEZWNpbWFsOjpuYW4oKSk7CisgICAgY29uc3QgRGVjaW1hbCBaZXJvKERlY2lt
YWw6Onplcm8oUGx1cykpOworICAgIGNvbnN0IERlY2ltYWwgTWludXNaZXJvKERlY2ltYWw6Onpl
cm8oTWludXMpKTsKKyAgICBjb25zdCBEZWNpbWFsIFRlbigxMCk7CisgICAgY29uc3QgRGVjaW1h
bCBNaW51c1RlbigtMTApOworCisgICAgRVhQRUNUX0VRKE5hTiwgWmVybyAvIFplcm8pOworICAg
IEVYUEVDVF9FUShOYU4sIFplcm8gLyBNaW51c1plcm8pOworICAgIEVYUEVDVF9FUShOYU4sIE1p
bnVzWmVybyAvIFplcm8pOworICAgIEVYUEVDVF9FUShOYU4sIE1pbnVzWmVybyAvIE1pbnVzWmVy
byk7CisKKyAgICBFWFBFQ1RfRVEoSW5maW5pdHksIFRlbiAvIFplcm8pOworICAgIEVYUEVDVF9F
UShNaW51c0luZmluaXR5LCBUZW4gLyBNaW51c1plcm8pOworICAgIEVYUEVDVF9FUShNaW51c0lu
ZmluaXR5LCBNaW51c1RlbiAvIFplcm8pOworICAgIEVYUEVDVF9FUShJbmZpbml0eSwgTWludXNU
ZW4gLyBNaW51c1plcm8pOworCisgICAgRVhQRUNUX0VRKEluZmluaXR5LCBJbmZpbml0eSAvIFpl
cm8pOworICAgIEVYUEVDVF9FUShNaW51c0luZmluaXR5LCBJbmZpbml0eSAvIE1pbnVzWmVybyk7
CisgICAgRVhQRUNUX0VRKE1pbnVzSW5maW5pdHksIE1pbnVzSW5maW5pdHkgLyBaZXJvKTsKKyAg
ICBFWFBFQ1RfRVEoSW5maW5pdHksIE1pbnVzSW5maW5pdHkgLyBNaW51c1plcm8pOworCisgICAg
RVhQRUNUX0VRKE5hTiwgSW5maW5pdHkgLyBJbmZpbml0eSk7CisgICAgRVhQRUNUX0VRKE5hTiwg
SW5maW5pdHkgLyBNaW51c0luZmluaXR5KTsKKyAgICBFWFBFQ1RfRVEoTmFOLCBNaW51c0luZmlu
aXR5IC8gSW5maW5pdHkpOworICAgIEVYUEVDVF9FUShOYU4sIE1pbnVzSW5maW5pdHkgLyBNaW51
c0luZmluaXR5KTsKKworICAgIEVYUEVDVF9FUShaZXJvLCBUZW4gLyBJbmZpbml0eSk7CisgICAg
RVhQRUNUX0VRKE1pbnVzWmVybywgVGVuIC8gTWludXNJbmZpbml0eSk7CisgICAgRVhQRUNUX0VR
KE1pbnVzWmVybywgTWludXNUZW4gLyBJbmZpbml0eSk7CisgICAgRVhQRUNUX0VRKFplcm8sIE1p
bnVzVGVuIC8gTWludXNJbmZpbml0eSk7CisKKyAgICBFWFBFQ1RfRVEoTmFOLCBOYU4gLyBOYU4p
OworICAgIEVYUEVDVF9FUShOYU4sIE5hTiAvIFRlbik7CisgICAgRVhQRUNUX0VRKE5hTiwgVGVu
IC8gTmFOKTsKK30KKworVEVTVF9GKERlY2ltYWxUZXN0LCBPcE11bCkKK3sKKyAgICBFWFBFQ1Rf
RVEoZW5jb2RlKDAsIDAsIFBsdXMpLCBEZWNpbWFsKDApICogRGVjaW1hbCgwKSk7CisgICAgRVhQ
RUNUX0VRKGVuY29kZSgyLCAwLCBNaW51cyksIERlY2ltYWwoMikgKiBEZWNpbWFsKC0xKSk7Cisg
ICAgRVhQRUNUX0VRKGVuY29kZSgyLCAwLCBNaW51cyksIERlY2ltYWwoLTEpICogRGVjaW1hbCgy
KSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSg5OSwgMCwgUGx1cyksIERlY2ltYWwoOTkpICogRGVj
aW1hbCgxKSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSgyNTAwLCAwLCBQbHVzKSwgRGVjaW1hbCgt
NTApICogRGVjaW1hbCgtNTApKTsKK30KKworVEVTVF9GKERlY2ltYWxUZXN0LCBPcE11bEJpZ0Up
Cit7CisgICAgRVhQRUNUX0VRKGVuY29kZSgxLCAxMDIyLCBQbHVzKSwgZW5jb2RlKDEsIDEwMjIs
IFBsdXMpICogZW5jb2RlKDEsIDAsIFBsdXMpKTsKKyAgICBFWFBFQ1RfRVEoRGVjaW1hbDo6aW5m
aW5pdHkoUGx1cyksIGVuY29kZSgxLCAxMDIyLCBQbHVzKSAqIGVuY29kZSgxLCAxMDIyLCBQbHVz
KSk7Cit9CisKK1RFU1RfRihEZWNpbWFsVGVzdCwgT3BNdWxTbWFsbEUpCit7CisgICAgRVhQRUNU
X0VRKGVuY29kZSgxLCAtMTAyMiwgUGx1cyksIGVuY29kZSgxLCAtMTAyMiwgUGx1cykgKiBlbmNv
ZGUoMSwgMCwgUGx1cykpOworICAgIEVYUEVDVF9FUShlbmNvZGUoMCwgMCwgUGx1cyksIGVuY29k
ZSgxLCAtMTAyMiwgUGx1cykgKiBlbmNvZGUoMSwgLTEwMjIsIFBsdXMpKTsKK30KKworVEVTVF9G
KERlY2ltYWxUZXN0LCBPcE11bFNwZWNpYWxWYWx1ZXMpCit7CisgICAgY29uc3QgRGVjaW1hbCBJ
bmZpbml0eShEZWNpbWFsOjppbmZpbml0eShQbHVzKSk7CisgICAgY29uc3QgRGVjaW1hbCBNaW51
c0luZmluaXR5KERlY2ltYWw6OmluZmluaXR5KE1pbnVzKSk7CisgICAgY29uc3QgRGVjaW1hbCBO
YU4oRGVjaW1hbDo6bmFuKCkpOworICAgIGNvbnN0IERlY2ltYWwgVGVuKDEwKTsKKyAgICBjb25z
dCBEZWNpbWFsIE1pbnVzVGVuKC0xMCk7CisgICAgY29uc3QgRGVjaW1hbCBaZXJvKERlY2ltYWw6
Onplcm8oUGx1cykpOworICAgIGNvbnN0IERlY2ltYWwgTWludXNaZXJvKERlY2ltYWw6Onplcm8o
TWludXMpKTsKKworICAgIEVYUEVDVF9FUShJbmZpbml0eSwgSW5maW5pdHkgKiBJbmZpbml0eSk7
CisgICAgRVhQRUNUX0VRKE1pbnVzSW5maW5pdHksIEluZmluaXR5ICogTWludXNJbmZpbml0eSk7
CisgICAgRVhQRUNUX0VRKE1pbnVzSW5maW5pdHksIE1pbnVzSW5maW5pdHkgKiBJbmZpbml0eSk7
CisgICAgRVhQRUNUX0VRKEluZmluaXR5LCBNaW51c0luZmluaXR5ICogTWludXNJbmZpbml0eSk7
CisKKyAgICBFWFBFQ1RfRVEoTmFOLCBJbmZpbml0eSAqIFplcm8pOworICAgIEVYUEVDVF9FUShO
YU4sIFplcm8gKiBNaW51c0luZmluaXR5KTsKKyAgICBFWFBFQ1RfRVEoTmFOLCBNaW51c0luZmlu
aXR5ICogWmVybyk7CisgICAgRVhQRUNUX0VRKE5hTiwgTWludXNJbmZpbml0eSAqIFplcm8pOwor
CisgICAgRVhQRUNUX0VRKE5hTiwgSW5maW5pdHkgKiBNaW51c1plcm8pOworICAgIEVYUEVDVF9F
UShOYU4sIE1pbnVzWmVybyAqIE1pbnVzSW5maW5pdHkpOworICAgIEVYUEVDVF9FUShOYU4sIE1p
bnVzSW5maW5pdHkgKiBNaW51c1plcm8pOworICAgIEVYUEVDVF9FUShOYU4sIE1pbnVzSW5maW5p
dHkgKiBNaW51c1plcm8pOworCisgICAgRVhQRUNUX0VRKEluZmluaXR5LCBJbmZpbml0eSAqIFRl
bik7CisgICAgRVhQRUNUX0VRKEluZmluaXR5LCBUZW4gKiBJbmZpbml0eSk7CisgICAgRVhQRUNU
X0VRKE1pbnVzSW5maW5pdHksIE1pbnVzSW5maW5pdHkgKiBUZW4pOworICAgIEVYUEVDVF9FUShN
aW51c0luZmluaXR5LCBUZW4gKiBNaW51c0luZmluaXR5KTsKKworICAgIEVYUEVDVF9FUShNaW51
c0luZmluaXR5LCBJbmZpbml0eSAqIE1pbnVzVGVuKTsKKyAgICBFWFBFQ1RfRVEoTWludXNJbmZp
bml0eSwgTWludXNUZW4gKiBJbmZpbml0eSk7CisgICAgRVhQRUNUX0VRKEluZmluaXR5LCBNaW51
c0luZmluaXR5ICogTWludXNUZW4pOworICAgIEVYUEVDVF9FUShJbmZpbml0eSwgTWludXNUZW4g
KiBNaW51c0luZmluaXR5KTsKKworICAgIEVYUEVDVF9FUShOYU4sIE5hTiAqIE5hTik7CisgICAg
RVhQRUNUX0VRKE5hTiwgTmFOICogVGVuKTsKKyAgICBFWFBFQ1RfRVEoTmFOLCBUZW4gKiBOYU4p
OworfQorCitURVNUX0YoRGVjaW1hbFRlc3QsIE9wU3ViKQoreworICAgIEVYUEVDVF9FUShlbmNv
ZGUoMCwgMCwgUGx1cyksIERlY2ltYWwoMCkgLSBEZWNpbWFsKDApKTsKKyAgICBFWFBFQ1RfRVEo
ZW5jb2RlKDMsIDAsIFBsdXMpLCBEZWNpbWFsKDIpIC0gRGVjaW1hbCgtMSkpOworICAgIEVYUEVD
VF9FUShlbmNvZGUoMywgMCwgTWludXMpLCBEZWNpbWFsKC0xKSAtIERlY2ltYWwoMikpOworICAg
IEVYUEVDVF9FUShlbmNvZGUoOTgsIDAsIFBsdXMpLCBEZWNpbWFsKDk5KSAtIERlY2ltYWwoMSkp
OworICAgIEVYUEVDVF9FUShlbmNvZGUoMCwgMCwgUGx1cyksIERlY2ltYWwoLTUwKSAtIERlY2lt
YWwoLTUwKSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSgxMDAwMDAwMDAwMDAwMDAwLCAzNSwgUGx1
cyksIGVuY29kZSgxLCA1MCwgUGx1cykgLSBEZWNpbWFsKDEpKTsKKyAgICBFWFBFQ1RfRVEoZW5j
b2RlKDEwMDAwMDAwMDAwMDAwMDAsIDM1LCBNaW51cyksIERlY2ltYWwoMSkgLSBlbmNvZGUoMSwg
NTAsIFBsdXMpKTsKK30KKworVEVTVF9GKERlY2ltYWxUZXN0LCBPcFN1YkJpZ0UpCit7CisgICAg
RVhQRUNUX0VRKGVuY29kZSgxLCAxMDIyLCBQbHVzKSwgZW5jb2RlKDEsIDEwMjIsIFBsdXMpIC0g
ZW5jb2RlKDEsIDAsIFBsdXMpKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDAsIDAsIFBsdXMpLCBl
bmNvZGUoMSwgMTAyMiwgUGx1cykgLSBlbmNvZGUoMSwgMTAyMiwgUGx1cykpOworfQorCitURVNU
X0YoRGVjaW1hbFRlc3QsIE9wU3ViU21hbGxFKQoreworICAgIC8vIEZJWE1FOiBVSU5UNjRfQygx
MDAwMDAwMDAwMDAwMDAwMCkgc2hvdWxkIGJlIHVzZWQgYnV0IGl0IGRpZCBub3QgY29tcGlsZSBv
biBRdCBib3RzLgorICAgICNpZiBDT01QSUxFUihNU1ZDKQorICAgICAgICBjb25zdCB1aW50NjRf
dCB1aW50MTAwMDAwMDAwMDAwMDAwMDAgPSAxMDAwMDAwMDAwMDAwMDAwMHVpNjQ7CisgICAgI2Vs
c2UKKyAgICAgICAgY29uc3QgdWludDY0X3QgdWludDEwMDAwMDAwMDAwMDAwMDAwID0gMTAwMDAw
MDAwMDAwMDAwMDB1bGw7CisgICAgI2VuZGlmCisKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKHVpbnQx
MDAwMDAwMDAwMDAwMDAwMCwgLTE2LCBNaW51cyksIGVuY29kZSgxLCAtMTAyMiwgUGx1cykgLSBl
bmNvZGUoMSwgMCwgUGx1cykpOworICAgIEVYUEVDVF9FUShlbmNvZGUoMCwgMCwgUGx1cyksIGVu
Y29kZSgxLCAtMTAyMiwgUGx1cykgLSBlbmNvZGUoMSwgLTEwMjIsIFBsdXMpKTsKK30KKworVEVT
VF9GKERlY2ltYWxUZXN0LCBPcFN1YlNwZWNpYWxWYWx1ZXMpCit7CisgICAgY29uc3QgRGVjaW1h
bCBJbmZpbml0eShEZWNpbWFsOjppbmZpbml0eShQbHVzKSk7CisgICAgY29uc3QgRGVjaW1hbCBN
aW51c0luZmluaXR5KERlY2ltYWw6OmluZmluaXR5KE1pbnVzKSk7CisgICAgY29uc3QgRGVjaW1h
bCBOYU4oRGVjaW1hbDo6bmFuKCkpOworICAgIGNvbnN0IERlY2ltYWwgVGVuKDEwKTsKKworICAg
IEVYUEVDVF9FUShOYU4sIEluZmluaXR5IC0gSW5maW5pdHkpOworICAgIEVYUEVDVF9FUShJbmZp
bml0eSwgSW5maW5pdHkgLSBNaW51c0luZmluaXR5KTsKKyAgICBFWFBFQ1RfRVEoTWludXNJbmZp
bml0eSwgTWludXNJbmZpbml0eSAtIEluZmluaXR5KTsKKyAgICBFWFBFQ1RfRVEoTmFOLCBNaW51
c0luZmluaXR5IC0gTWludXNJbmZpbml0eSk7CisKKyAgICBFWFBFQ1RfRVEoSW5maW5pdHksIElu
ZmluaXR5IC0gVGVuKTsKKyAgICBFWFBFQ1RfRVEoTWludXNJbmZpbml0eSwgVGVuIC0gSW5maW5p
dHkpOworICAgIEVYUEVDVF9FUShNaW51c0luZmluaXR5LCBNaW51c0luZmluaXR5IC0gVGVuKTsK
KyAgICBFWFBFQ1RfRVEoSW5maW5pdHksIFRlbiAtIE1pbnVzSW5maW5pdHkpOworCisgICAgRVhQ
RUNUX0VRKE5hTiwgTmFOIC0gTmFOKTsKKyAgICBFWFBFQ1RfRVEoTmFOLCBOYU4gLSBUZW4pOwor
ICAgIEVYUEVDVF9FUShOYU4sIFRlbiAtIE5hTik7Cit9CisKK1RFU1RfRihEZWNpbWFsVGVzdCwg
UHJvcGVydGllcykKK3sKKyAgICBFWFBFQ1RfVFJVRShEZWNpbWFsKDApLmlzRmluaXRlKCkpOwor
ICAgIEVYUEVDVF9GQUxTRShEZWNpbWFsKDApLmlzU3BlY2lhbCgpKTsKK30KKworVEVTVF9GKERl
Y2ltYWxUZXN0LCBQcm9wZXJ0aWVzU3BlY2lhbCkKK3sKKyAgICBFWFBFQ1RfVFJVRShEZWNpbWFs
OjppbmZpbml0eShQbHVzKS5pc1NwZWNpYWwoKSk7CisgICAgRVhQRUNUX0ZBTFNFKERlY2ltYWw6
OmluZmluaXR5KFBsdXMpLmlzRmluaXRlKCkpOworCisgICAgRVhQRUNUX1RSVUUoRGVjaW1hbDo6
aW5maW5pdHkoTWludXMpLmlzU3BlY2lhbCgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoRGVjaW1hbDo6
aW5maW5pdHkoTWludXMpLmlzRmluaXRlKCkpOworCisgICAgRVhQRUNUX1RSVUUoRGVjaW1hbDo6
bmFuKCkuaXNTcGVjaWFsKCkpOworICAgIEVYUEVDVF9GQUxTRShEZWNpbWFsOjpuYW4oKS5pc0Zp
bml0ZSgpKTsKK30KKworLy8gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9udW1iZXIvbnVtYmVyLXN0
ZXB1cC1zdGVwZG93bi1mcm9tLXJlbmRlcmVyCitURVNUX0YoRGVjaW1hbFRlc3QsIFJlYWxXb3Js
ZEV4YW1wbGVOdW1iZXJTdGVwVXBTdGVwRG93bkZyb21SZW5kZXJlcikKK3sKKyAgICBFWFBFQ1Rf
RVEoU3RyaW5nKCIxMCIpLCBzdGVwRG93bigiMCIsICIxMDAiLCAiMTAiLCAiMTkiLCAxKSk7Cisg
ICAgRVhQRUNUX0VRKFN0cmluZygiOTAiKSwgc3RlcFVwKCIwIiwgIjk5IiwgIjEwIiwgIjg5Iiwg
MSkpOworICAgIEVYUEVDVF9FUShTdHJpbmcoIjEiKSwgc3RlcFVwKCIwIiwgIjEiLCAiMC4zMzMz
MzMzMzMzMzMzMzMzMyIsICIwIiwgMykpOyAvLyBzdGVwPTEvMworICAgIEVYUEVDVF9FUShTdHJp
bmcoIjAuMDEiKSwgc3RlcFVwKCIwIiwgIjAuMDEiLCAiMC4wMDMzMzMzMzMzMzMzMzMzMzMzIiwg
IjAiLCAzKSk7IC8vIHN0ZXA9MS8zMDAKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCIxIiksIHN0ZXBV
cCgiMCIsICIxIiwgIjAuMDAzOTIxNTY4NjI3NDUwOTgwIiwgIjAiLCAyNTUpKTsgLy8gc3RlcD0x
LzI1NQorICAgIEVYUEVDVF9FUShTdHJpbmcoIjEiKSwgc3RlcFVwKCIwIiwgIjEiLCAiMC4xIiwg
IjAiLCAxMCkpOworfQorCitURVNUX0YoRGVjaW1hbFRlc3QsIFJlYWxXb3JsZEV4YW1wbGVOdW1i
ZXJTdGVwVXBTdGVwRG93bkZyb21SZW5kZXJlclJvdW5kaW5nKQoreworICAgIEVYUEVDVF9FUShT
dHJpbmcoIjUuMDE1IiksIHN0ZXBVcCgiMCIsICIxMDAiLCAiMC4wMDUiLCAiNS4wMDUiLCAyKSk7
CisgICAgRVhQRUNUX0VRKFN0cmluZygiNS4wNiIpLCBzdGVwVXAoIjAiLCAiMTAwIiwgIjAuMDA1
IiwgIjUuMDA1IiwgMTEpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCI1LjA2NSIpLCBzdGVwVXAo
IjAiLCAiMTAwIiwgIjAuMDA1IiwgIjUuMDA1IiwgMTIpKTsKKworICAgIEVYUEVDVF9FUShTdHJp
bmcoIjUuMDE1IiksIHN0ZXBVcCgiNCIsICI5IiwgIjAuMDA1IiwgIjUuMDA1IiwgMikpOworICAg
IEVYUEVDVF9FUShTdHJpbmcoIjUuMDYiKSwgc3RlcFVwKCI0IiwgIjkiLCAiMC4wMDUiLCAiNS4w
MDUiLCAxMSkpOworICAgIEVYUEVDVF9FUShTdHJpbmcoIjUuMDY1IiksIHN0ZXBVcCgiNCIsICI5
IiwgIjAuMDA1IiwgIjUuMDA1IiwgMTIpKTsKK30KKworVEVTVF9GKERlY2ltYWxUZXN0LCBSZWFs
V29ybGRFeGFtcGxlUmFuZ2VTdGVwVXBTdGVwRG93bikKK3sKKyAgICBFWFBFQ1RfRVEoU3RyaW5n
KCIxZSszOCIpLCBzdGVwVXAoIjAiLCAiMUUzOCIsICIxIiwgIjFFMzgiLCA5KSk7CisgICAgRVhQ
RUNUX0VRKFN0cmluZygiMWUrMzgiKSwgc3RlcERvd24oIjAiLCAiMUUzOCIsICIxIiwgIjFFMzgi
LCA5KSk7Cit9CisKK1RFU1RfRihEZWNpbWFsVGVzdCwgUmVtYWluZGVyKQoreworICAgIEVYUEVD
VF9FUShlbmNvZGUoOSwgLTEsIE1pbnVzKSwgZW5jb2RlKDIxLCAtMSwgUGx1cykucmVtYWluZGVy
KDMpKTsKKyAgICBFWFBFQ1RfRVEoRGVjaW1hbCgxKSwgRGVjaW1hbCgxMCkucmVtYWluZGVyKDMp
KTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDEsIDAsIE1pbnVzKSwgRGVjaW1hbCgtMTApLnJlbWFp
bmRlcigzKSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSgyLCAtMSwgUGx1cyksIGVuY29kZSgxMDIs
IC0xLCBQbHVzKS5yZW1haW5kZXIoMSkpOworICAgIEVYUEVDVF9FUShlbmNvZGUoMSwgLTEsIFBs
dXMpLCBEZWNpbWFsKDEwKS5yZW1haW5kZXIoZW5jb2RlKDMsIC0xLCBQbHVzKSkpOworICAgIEVY
UEVDVF9FUShlbmNvZGUoMywgLTEsIE1pbnVzKSwgZW5jb2RlKDM2LCAtMSwgUGx1cykucmVtYWlu
ZGVyKGVuY29kZSgxMywgLTEsIFBsdXMpKSk7Cit9CisKK1RFU1RfRihEZWNpbWFsVGVzdCwgUmVt
YWluZGVyU3BlY2lhbFZhbHVlcykKK3sKKyAgICBFWFBFQ1RfRVEoRGVjaW1hbDo6aW5maW5pdHko
UGx1cyksIERlY2ltYWw6OmluZmluaXR5KFBsdXMpLnJlbWFpbmRlcigxKSk7CisgICAgRVhQRUNU
X0VRKERlY2ltYWw6Om5hbigpLCBEZWNpbWFsOjpuYW4oKS5yZW1haW5kZXIoMSkpOworfQorCitU
RVNUX0YoRGVjaW1hbFRlc3QsIFJvdW5kKQoreworICAgIEVYUEVDVF9FUShEZWNpbWFsKDEpLCAo
RGVjaW1hbCg5KSAvIERlY2ltYWwoMTApKS5yb3VuZCgpKTsKKyAgICBFWFBFQ1RfRVEoRGVjaW1h
bCgyNSksIChEZWNpbWFsKDUpIC8gZnJvbVN0cmluZygiMC4yMDAiKSkucm91bmQoKSk7CisgICAg
RVhQRUNUX0VRKERlY2ltYWwoMyksIChEZWNpbWFsKDUpIC8gRGVjaW1hbCgyKSkucm91bmQoKSk7
CisgICAgRVhQRUNUX0VRKERlY2ltYWwoMSksIChEZWNpbWFsKDIpIC8gRGVjaW1hbCgzKSkucm91
bmQoKSk7CisgICAgRVhQRUNUX0VRKERlY2ltYWwoMyksIChEZWNpbWFsKDEwKSAvIERlY2ltYWwo
MykpLnJvdW5kKCkpOworICAgIEVYUEVDVF9FUShEZWNpbWFsKDMpLCAoRGVjaW1hbCgxKSAvIGZy
b21TdHJpbmcoIjAuMyIpKS5yb3VuZCgpKTsKKyAgICBFWFBFQ1RfRVEoRGVjaW1hbCgxMCksIChE
ZWNpbWFsKDEpIC8gZnJvbVN0cmluZygiMC4xIikpLnJvdW5kKCkpOworICAgIEVYUEVDVF9FUShE
ZWNpbWFsKDUpLCAoRGVjaW1hbCgxKSAvIGZyb21TdHJpbmcoIjAuMiIpKS5yb3VuZCgpKTsKKyAg
ICBFWFBFQ1RfRVEoRGVjaW1hbCgxMCksIChmcm9tU3RyaW5nKCIxMC4yIikgLyAxKS5yb3VuZCgp
KTsKK30KKworVEVTVF9GKERlY2ltYWxUZXN0LCBSb3VuZFNlcGNpYWxWYWx1ZXMpCit7CisgICAg
RVhQRUNUX0VRKERlY2ltYWw6OmluZmluaXR5KFBsdXMpLCBEZWNpbWFsOjppbmZpbml0eShQbHVz
KS5yb3VuZCgpKTsKKyAgICBFWFBFQ1RfRVEoRGVjaW1hbDo6bmFuKCksIERlY2ltYWw6Om5hbigp
LnJvdW5kKCkpOworfQorCitURVNUX0YoRGVjaW1hbFRlc3QsIFRvU3RyaW5nU3BlY2lhbCkKK3sK
KyAgICBFWFBFQ1RfRVEoU3RyaW5nKCJJbmZpbml0eSIpLCBEZWNpbWFsOjppbmZpbml0eShQbHVz
KS50b1N0cmluZygpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCItSW5maW5pdHkiKSwgRGVjaW1h
bDo6aW5maW5pdHkoTWludXMpLnRvU3RyaW5nKCkpOworICAgIEVYUEVDVF9FUShTdHJpbmcoIk5h
TiIpLCBEZWNpbWFsOjpuYW4oKS50b1N0cmluZygpKTsKK30KKworfSAvLyBEZWNpbWFsVGVzdApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IGM2MTYxM2VmMzZjMGJmYTdkZTk3ZTRjMWI2NWNlYTc0NTJkOTVkYjcuLmI2NmU5YWI1
ZjE0ZGUwNDI1MTQxNDJjOTYxNmUyMjVlNWRkNTZjNzIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAor
MjAxMi0wNS0yMyAgWW9zaGlmdW1pIElub3VlICA8eW9zaW5AY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIEludHJvZHVjZSBEZWNpbWFsIGFyaXRobWV0aWMgdG8gZml4IHJvdW5kaW5nIGVycm9ycyBp
biBudW1iZXIvcmFuZ2UgaW5wdXQgdHlwZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTgwMDA5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBmYXN0L2Zvcm1zL3JhbmdlL3JhbmdlLXZhbHVlLXJvdW5kaW5n
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9yYW5nZS9yYW5nZS12
YWx1ZS1yb3VuZGluZy5odG1sOiBBZGRlZC4KKwogMjAxMi0wNS0yMyAgUmFwaGFlbCBLdWJvIGRh
IENvc3RhICA8cmFrdWNvQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW0VGTF0gR2FyZGVuaW5nIGFm
dGVyIHIxMTgyMDMgYW5kIHIxMTgxNzEuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL3JhbmdlL3JhbmdlLXZhbHVlLXJvdW5kaW5nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvcmFuZ2UvcmFuZ2UtdmFsdWUtcm91bmRpbmctZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmQ3YmI1MTA2MGNhNzg5YzFmYTE4NmVlYzQ3NDZhYmNiZTZmMDZjNjAKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3JhbmdlL3JhbmdlLXZhbHVlLXJvdW5k
aW5nLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE5IEBACisgICAgICAgIAorU2V0dGluZyAnMC42
JyB0byB0aGUgdmFsdWUgb2YgYSByYW5nZSBpbnB1dCBtYWtlcyB0aGUgdmFsdWUgMC42MDAwMDAw
MDAwMDAwMDAxCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHJhbmdlMS52
YWx1ZS50b1N0cmluZygpIGlzICIwLjEiCitQQVNTIHJhbmdlMi52YWx1ZS50b1N0cmluZygpIGlz
ICIwLjIiCitQQVNTIHJhbmdlMy52YWx1ZS50b1N0cmluZygpIGlzICIwLjMiCitQQVNTIHJhbmdl
NC52YWx1ZS50b1N0cmluZygpIGlzICIwLjQiCitQQVNTIHJhbmdlNS52YWx1ZS50b1N0cmluZygp
IGlzICIwLjUiCitQQVNTIHJhbmdlNi52YWx1ZS50b1N0cmluZygpIGlzICIwLjYiCitQQVNTIHJh
bmdlNy52YWx1ZS50b1N0cmluZygpIGlzICIwLjciCitQQVNTIHJhbmdlOC52YWx1ZS50b1N0cmlu
ZygpIGlzICIwLjgiCitQQVNTIHJhbmdlOS52YWx1ZS50b1N0cmluZygpIGlzICIwLjkiCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yYW5nZS9yYW5nZS12YWx1ZS1yb3VuZGluZy5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yYW5nZS9yYW5nZS12YWx1ZS1yb3VuZGluZy5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjMyZTJjNGVkM2FmYTEzNDEyNWVkYWMzNzE0NjJiNzdjNzdmNzkzNTAKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3JhbmdlL3JhbmdlLXZhbHVl
LXJvdW5kaW5nLmh0bWwKQEAgLTAsMCArMSwyNCBAQAorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGlucHV0IHR5cGU9cmFuZ2Ugc3RlcD0wLjEgdmFsdWU9MC4xIGlkPXJhbmdlMT4KKzxpbnB1
dCB0eXBlPXJhbmdlIHN0ZXA9MC4xIHZhbHVlPTAuMiBpZD1yYW5nZTI+Cis8aW5wdXQgdHlwZT1y
YW5nZSBzdGVwPTAuMSB2YWx1ZT0wLjMgaWQ9cmFuZ2UzPgorPGlucHV0IHR5cGU9cmFuZ2Ugc3Rl
cD0wLjEgdmFsdWU9MC40IGlkPXJhbmdlND4KKzxpbnB1dCB0eXBlPXJhbmdlIHN0ZXA9MC4xIHZh
bHVlPTAuNSBpZD1yYW5nZTU+Cis8aW5wdXQgdHlwZT1yYW5nZSBzdGVwPTAuMSB2YWx1ZT0wLjYg
aWQ9cmFuZ2U2PgorPGlucHV0IHR5cGU9cmFuZ2Ugc3RlcD0wLjEgdmFsdWU9MC43IGlkPXJhbmdl
Nz4KKzxpbnB1dCB0eXBlPXJhbmdlIHN0ZXA9MC4xIHZhbHVlPTAuOCBpZD1yYW5nZTg+Cis8aW5w
dXQgdHlwZT1yYW5nZSBzdGVwPTAuMSB2YWx1ZT0wLjkgaWQ9cmFuZ2U5PgorPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIjxhIGhyZWY9J2h0dHA6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwMDA5Jz5TZXR0aW5nICcwLjYnIHRvIHRoZSB2
YWx1ZSBvZiBhIHJhbmdlIGlucHV0IG1ha2VzIHRoZSB2YWx1ZSAwLjYwMDAwMDAwMDAwMDAwMDE8
L2E+Iik7Citmb3IgKHZhciBpID0gMTsgaSA8PSA5OyArK2kpIHsKKyAgICBzaG91bGRCZSgncmFu
Z2UnICsgaS50b1N0cmluZygpICsgJy52YWx1ZS50b1N0cmluZygpJywgJyIwLicgKyBpLnRvU3Ry
aW5nKCkgKyAnIicpOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+CisKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>143753</attachid>
            <date>2012-05-24 00:48:50 -0700</date>
            <delta_ts>2012-06-01 03:48:56 -0700</delta_ts>
            <desc>Patch 9</desc>
            <filename>bug-80009-20120524164848.patch</filename>
            <type>text/plain</type>
            <size>202467</size>
            <attacher>yosin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4MzIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDI5NmViYmQ1YzE5ZDhh
NGQ2ODJlNjRlMmQ5ZjBiNzY4ODY0NjQxOC4uOTY0MzAxYjc4NmIzNWQ4YmQ4ODg0OTI1Zjk4M2Mw
YWExYzc4NDdkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxNiBAQAorMjAxMi0wNS0yMyAgWW9z
aGlmdW1pIElub3VlICA8eW9zaW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtGb3Jtc10gSW50
cm9kdWNlIERlY2ltYWwgYXJpdGhtZXRpYyB0byBmaXggcm91bmRpbmcgZXJyb3JzIGluIG51bWJl
ci9yYW5nZSBpbnB1dCB0eXBlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODAwMDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgZGVjaW1hbCBhcml0aG1hdGljIGZvciBz
dGVwcGFibGUgaW5wdXQgdHlwZXMsCisgICAgICAgIGUuZy4gZGF0ZSwgZGF0ZXRpbWUsIG51bWJl
ciwgcmFuZ2UsIGFuZCBzbyBvbiwgdG8gYXZvaWQgcm91bmRpbmcgZXJyb3IKKyAgICAgICAgY2F1
c2VkIGJ5IGJhc2UgMiBmbG9hdGluZyBwb2ludCByZXByZXNlbnRhdGlvbiwgZS5nLiBDL0MrKyBk
b3VibGUgdHlwZS4KKworICAgICAgICBNb3N0IG9mIGRlY2ltYWwgYXJpdGhtYXRpYyBjYWxjdWxh
dGlvbnMgYXJlIGltcGxlbWVudGVkIGluIFN0ZXBSYW5nZQorICAgICAgICBjbGFzcywgcmVwbGFj
aW5nICJkb3VibGUiIHdpdGggIkRlY2ltYWwiLCBJbnB1dFR5cGU6OmFwcGx5U3RlcCwgYW5kCisg
ICAgICAgIElucHV0VHlwZTo6c3RlcEZyb21SZW5kZXJlci4KKworICAgICAgICBUZXN0OiBmYXN0
L2Zvcm1zL3JhbmdlL3JhbmdlLXZhbHVlLXJvdW5kaW5nLmh0bWwKKyAgICAgICAgVGVzdCBmb3Ig
RGVjaW1hbCBjbGFzcyBpcyBpbXBsZW1lbnRlZCB1c2luZyBnVGVzdCBhbmQgcmVzaWRlcyBpbiBX
ZWJLaXQvY2hyb21pdW0vdGVzdHMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogQWRkZWQg
RGVjaW1hbC5jcHAuCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbTogQWRkZWQgRGVjaW1h
bC5jcHAgYW5kIERlY2ltYWwuaC4KKyAgICAgICAgKiBUYXJnZXQucHJpOiBBZGRlZCBEZWNpbWFs
LmNwcCBhbmQgRGVjaW1hbC5oLgorICAgICAgICAqIFdlYkNvcmUuZ3lwaTogQWRkZWQgRGVjaW1h
bC5jcHAgYW5kIERlY2ltYWwuaC4KKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvajogQWRkZWQgRGVjaW1hbC5jcHAgYW5kIERlY2ltYWwuaC4KKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFkZGVkIERlY2ltYWwuY3BwIGFuZCBEZWNpbWFs
LmguCisgICAgICAgICogaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjp2YWx1ZUFzRGF0ZSk6IENvbnZl
cnRpbmcgRGVjaW1hbCB0byBkb3VibGUuCisgICAgICAgIChXZWJDb3JlOjpCYXNlRGF0ZUFuZFRp
bWVJbnB1dFR5cGU6OnNldFZhbHVlQXNEYXRlKTogQ29udmVydGluZyBkb3VibGUgdG8gRGVjaW1h
bC4KKyAgICAgICAgKFdlYkNvcmU6OkJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6dmFsdWVBc051
bWJlcik6IENvbnZlcnRpbmcgRGVjaW1hbCB0byBkb3VibGUuCisgICAgICAgIChXZWJDb3JlOjpC
YXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OnNldFZhbHVlQXNOdW1iZXIpOiBDb252ZXJ0aW5nIGRv
dWJsZSB0byBEZWNpbWFsLgorICAgICAgICAoV2ViQ29yZTo6QmFzZURhdGVBbmRUaW1lSW5wdXRU
eXBlOjpkZWZhdWx0VmFsdWVGb3JTdGVwVXApOiBDb252ZXJ0aW5nIGRvdWJsZSB0byBEZWNpbWFs
LgorICAgICAgICAoV2ViQ29yZTo6QmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpwYXJzZVRvRGVj
aW1hbCk6IFJlcGxhY2VtZW50IG9mICJwYXJzZVRvRG91YmxlIgorICAgICAgICAoV2ViQ29yZTo6
QmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpzZXJpYWxpemUpOiBDaGFuZ2VkIHRvIHRha2UgRGVj
aW1hbCBpbnN0ZWFkIG9mIGRvdWJsZS4KKyAgICAgICAgKFdlYkNvcmU6OkJhc2VEYXRlQW5kVGlt
ZUlucHV0VHlwZTo6c2VyaWFsaXplV2l0aENvbXBvbmVudHMpOiBDaGFuZ2VkIGZvciBnZXRBbGxv
d2VkVmFsdWVTdGVwIHdpdGggRGVjaW1hbC4KKyAgICAgICAgKFdlYkNvcmU6OkJhc2VEYXRlQW5k
VGltZUlucHV0VHlwZTo6c2VyaWFsaXplV2l0aE1pbGxpc2Vjb25kcyk6IENoYW5nZWQgdG8gdGFr
ZSBEZWNpbWFsIGluc3RlYWQgb2YgZG91YmxlLgorICAgICAgICAoV2ViQ29yZTo6QmFzZURhdGVB
bmRUaW1lSW5wdXRUeXBlOjpjb252ZXJ0RnJvbVZpc2libGVWYWx1ZSk6IENoYW5nZWQgZm9yIHNl
cmlhbGl6ZVdpdGhNaWxsaXNlY29uZHMgd2l0aCBEZWNpbWFsLgorICAgICAgICAqIGh0bWwvQmFz
ZURhdGVBbmRUaW1lSW5wdXRUeXBlLmg6CisgICAgICAgIChCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5
cGUpOiBDaGFuZ2VkIGZvciB1c2luZyBEZWNpbWFsLgorICAgICAgICAqIGh0bWwvRGF0ZUlucHV0
VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRlSW5wdXRUeXBlOjpjcmVhdGVTdGVwUmFu
Z2UpOiBDaGFuZ2VkIGZvciB1c2luZyBEZWNpbWFsIGluIFN0ZXBSYW5nZS4KKyAgICAgICAgKFdl
YkNvcmU6OkRhdGVJbnB1dFR5cGU6OnNldE1pbGxpc2Vjb25kVG9EYXRlQ29tcG9uZW50cyk6IENo
YW5nZWQgZm9yIHVzaW5nIERlY2ltYWwuCisgICAgICAgICogaHRtbC9EYXRlSW5wdXRUeXBlLmg6
CisgICAgICAgIChEYXRlSW5wdXRUeXBlKToKKyAgICAgICAgKiBodG1sL0RhdGVUaW1lSW5wdXRU
eXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RGF0ZVRpbWVJ
bnB1dFR5cGU6OmRlZmF1bHRWYWx1ZUZvclN0ZXBVcCk6IENoYW5nZWQgZm9yIHVzaW5nIERlY2lt
YWwuCisgICAgICAgIChXZWJDb3JlOjpEYXRlVGltZUlucHV0VHlwZTo6Y3JlYXRlU3RlcFJhbmdl
KTogQ2hhbmdlZCBmb3IgdXNpbmcgRGVjaW1hbCBpbiBTdGVwUmFuZ2UuCisgICAgICAgIChXZWJD
b3JlOjpEYXRlVGltZUlucHV0VHlwZTo6c2V0TWlsbGlzZWNvbmRUb0RhdGVDb21wb25lbnRzKTog
Q2hhbmdlZCBmb3IgdXNpbmcgRGVjaW1hbC4KKyAgICAgICAgKiBodG1sL0RhdGVUaW1lSW5wdXRU
eXBlLmg6CisgICAgICAgIChEYXRlVGltZUlucHV0VHlwZSk6IENoYW5nZWQgZm9yIHVzaW5nIERl
Y2ltYWwuCisgICAgICAgICogaHRtbC9EYXRlVGltZUxvY2FsSW5wdXRUeXBlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGVUaW1lTG9jYWxJbnB1dFR5cGU6OmNyZWF0ZVN0ZXBSYW5nZSk6IENo
YW5nZWQgZm9yIHVzaW5nIERlY2ltYWwgaW4gU3RlcFJhbmdlLgorICAgICAgICAoV2ViQ29yZTo6
RGF0ZVRpbWVMb2NhbElucHV0VHlwZTo6c2V0TWlsbGlzZWNvbmRUb0RhdGVDb21wb25lbnRzKTog
Q2hhbmdlZCBmb3IgdXNpbmcgRGVjaW1hbC4KKyAgICAgICAgKiBodG1sL0RhdGVUaW1lTG9jYWxJ
bnB1dFR5cGUuaDoKKyAgICAgICAgKERhdGVUaW1lTG9jYWxJbnB1dFR5cGUpOiBDaGFuZ2VkIGZv
ciB1c2luZyBEZWNpbWFsLgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpnZXRBbGxvd2VkVmFsdWVTdGVwKTog
Q2hhbmdlZCBmb3IgdXNpbmcgRGVjaW1hbC4KKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1l
bnQuaDoKKyAgICAgICAgKEhUTUxJbnB1dEVsZW1lbnQpOiBDaGFuZ2VkIGZvciB1c2luZyBEZWNp
bWFsLgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
cHV0VHlwZTo6cmFuZ2VVbmRlcmZsb3cpOiBDaGFuZ2VkIGZvciB1c2luZyBEZWNpbWFsLgorICAg
ICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjpyYW5nZU92ZXJmbG93KTogQ2hhbmdlZCBmb3IgdXNp
bmcgRGVjaW1hbC4KKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6ZGVmYXVsdFZhbHVlRm9y
U3RlcFVwKTogQ2hhbmdlZCBmb3IgdXNpbmcgRGVjaW1hbC4KKyAgICAgICAgKFdlYkNvcmU6Oklu
cHV0VHlwZTo6bWluaW11bSk6IENoYW5nZWQgZm9yIHVzaW5nIERlY2ltYWwuCisgICAgICAgIChX
ZWJDb3JlOjpJbnB1dFR5cGU6Om1heGltdW0pOiBDaGFuZ2VkIGZvciB1c2luZyBEZWNpbWFsLgor
ICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjppc0luUmFuZ2UpOiBDaGFuZ2VkIGZvciB1c2lu
ZyBEZWNpbWFsLgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjppc091dE9mUmFuZ2UpOiBD
aGFuZ2VkIGZvciB1c2luZyBEZWNpbWFsLgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjpz
dGVwTWlzbWF0Y2gpOiBDaGFuZ2VkIGZvciB1c2luZyBEZWNpbWFsLgorICAgICAgICAoV2ViQ29y
ZTo6SW5wdXRUeXBlOjp2YWxpZGF0aW9uTWVzc2FnZSk6IENoYW5nZWQgZm9yIHVzaW5nIERlY2lt
YWwuCisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OnBhcnNlVG9EZWNpbWFsKTogUmVwbGFj
ZW1lbnQgb2YgcGFyc2VUb0RvdWJsZS4KKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6c2Vy
aWFsaXplKTogQ2hhbmdlZCBmb3IgdXNpbmcgRGVjaW1hbC4KKyAgICAgICAgKFdlYkNvcmU6Oklu
cHV0VHlwZTo6YXBwbHlTdGVwKTogQ2hhbmdlZCBmb3IgdXNpbmcgRGVjaW1hbC4KKyAgICAgICAg
KFdlYkNvcmU6OklucHV0VHlwZTo6Z2V0QWxsb3dlZFZhbHVlU3RlcCk6IENoYW5nZWQgZm9yIHVz
aW5nIERlY2ltYWwuCisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OnN0ZXBVcEZyb21SZW5k
ZXJlcik6IENoYW5nZWQgZm9yIHVzaW5nIERlY2ltYWwuCisgICAgICAgICogaHRtbC9JbnB1dFR5
cGUuaDoKKyAgICAgICAgKElucHV0VHlwZSk6IENoYW5nZWQgZm9yIHVzaW5nIERlY2ltYWwuCisg
ICAgICAgICogaHRtbC9Nb250aElucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb250
aElucHV0VHlwZTo6c2VyaWFsaXplV2l0aE1pbGxpc2Vjb25kcyk6IENoYW5nZWQgZm9yIHVzaW5n
IERlY2ltYWwuCisgICAgICAgIChXZWJDb3JlOjpNb250aElucHV0VHlwZTo6ZGVmYXVsdFZhbHVl
Rm9yU3RlcFVwKTogQ2hhbmdlZCBmb3IgdXNpbmcgRGVjaW1hbC4KKyAgICAgICAgKFdlYkNvcmU6
Ok1vbnRoSW5wdXRUeXBlOjpjcmVhdGVTdGVwUmFuZ2UpOiBDaGFuZ2VkIGZvciB1c2luZyBEZWNp
bWFsLgorICAgICAgICAoV2ViQ29yZTo6TW9udGhJbnB1dFR5cGU6OnBhcnNlVG9EZWNpbWFsKTog
Q2hhbmdlZCBmb3IgdXNpbmcgRGVjaW1hbC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vbnRoSW5wdXRU
eXBlOjpzZXRNaWxsaXNlY29uZFRvRGF0ZUNvbXBvbmVudHMpOiBDaGFuZ2VkIGZvciB1c2luZyBE
ZWNpbWFsLgorICAgICAgICAqIGh0bWwvTW9udGhJbnB1dFR5cGUuaDoKKyAgICAgICAgKE1vbnRo
SW5wdXRUeXBlKTogQ2hhbmdlZCBmb3IgdXNpbmcgRGVjaW1hbC4KKyAgICAgICAgKiBodG1sL051
bWJlcklucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYWxjdWxhdGVSZW5kZXJTaXpl
KTogQWRkZWQuIFRoaXMgZnVuY3Rpb24gcmVwbGFjZXMgbGVuZ3RoQmVmb3JlRGVjaW1hbFBvaW50
LgorICAgICAgICAoV2ViQ29yZTo6TnVtYmVySW5wdXRUeXBlOjp2YWx1ZUFzTnVtYmVyKTogQ2hh
bmdlZCBmb3IgdXNpbmcgRGVjaW1hbC4KKyAgICAgICAgKFdlYkNvcmU6Ok51bWJlcklucHV0VHlw
ZTo6c2V0VmFsdWVBc051bWJlcik6IENoYW5nZWQgZm9yIHVzaW5nIERlY2ltYWwuCisgICAgICAg
IChXZWJDb3JlOjpOdW1iZXJJbnB1dFR5cGU6OmNyZWF0ZVN0ZXBSYW5nZSk6IENoYW5nZWQgZm9y
IHVzaW5nIERlY2ltYWwuCisgICAgICAgIChXZWJDb3JlOjpOdW1iZXJJbnB1dFR5cGU6OnNpemVT
aG91bGRJbmNsdWRlRGVjb3JhdGlvbik6IENoYW5nZWQgZm9yIHVzaW5nIERlY2ltYWwuCisgICAg
ICAgIChXZWJDb3JlOjpOdW1iZXJJbnB1dFR5cGU6OnBhcnNlVG9EZWNpbWFsKTogUmVwbGFjZW1l
bnQgb2YgcGFyc2VUb0RvdWJsZS4KKyAgICAgICAgKFdlYkNvcmU6Ok51bWJlcklucHV0VHlwZTo6
c2VyaWFsaXplKTogQ2hhbmdlZCBmb3IgdXNpbmcgRGVjaW1hbC4KKyAgICAgICAgKFdlYkNvcmU6
Ok51bWJlcklucHV0VHlwZTo6dmlzaWJsZVZhbHVlKTogQ2hhbmdlZCBmb3IgdXNpbmcgRGVjaW1h
bC4KKyAgICAgICAgKFdlYkNvcmU6Ok51bWJlcklucHV0VHlwZTo6aXNBY2NlcHRhYmxlVmFsdWUp
OiBDaGFuZ2VkIGZvciB1c2luZyBEZWNpbWFsLgorICAgICAgICAqIGh0bWwvTnVtYmVySW5wdXRU
eXBlLmg6CisgICAgICAgIChOdW1iZXJJbnB1dFR5cGUpOiBDaGFuZ2VkIGZvciB1c2luZyBEZWNp
bWFsLgorICAgICAgICAqIGh0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmFuZ2VJbnB1dFR5cGU6OnZhbHVlQXNOdW1iZXIpOiBDaGFuZ2VkIGZvciB1c2luZyBEZWNp
bWFsLgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VJbnB1dFR5cGU6OnNldFZhbHVlQXNOdW1iZXIp
OiBDaGFuZ2VkIGZvciB1c2luZyBEZWNpbWFsLgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VJbnB1
dFR5cGU6OmNyZWF0ZVN0ZXBSYW5nZSk6IENoYW5nZWQgZm9yIHVzaW5nIERlY2ltYWwuCisgICAg
ICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6aGFuZGxlS2V5ZG93bkV2ZW50KTogQ2hhbmdl
ZCBmb3IgdXNpbmcgRGVjaW1hbC4KKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlSW5wdXRUeXBlOjpw
YXJzZVRvRGVjaW1hbCk6IFJlcGxhY2VtZW50IG9mIHBhcnNlVG9Eb3VibGUuCisgICAgICAgIChX
ZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6c2VyaWFsaXplKTogQ2hhbmdlZCBmb3IgdXNpbmcgRGVj
aW1hbC4KKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlSW5wdXRUeXBlOjpzYW5pdGl6ZVZhbHVlKTog
Q2hhbmdlZCBmb3IgdXNpbmcgRGVjaW1hbC4KKyAgICAgICAgKiBodG1sL1JhbmdlSW5wdXRUeXBl
Lmg6IENoYW5nZWQgZm9yIHVzaW5nIERlY2ltYWwuCisgICAgICAgIChSYW5nZUlucHV0VHlwZSk6
CisgICAgICAgICogaHRtbC9TdGVwUmFuZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cG93ZXIp
OiBEZWNpbWFsIHZlcnNpb24gb2YgZnVuY3Rpb24gcG93KGRvdWJsZSkKKyAgICAgICAgKFdlYkNv
cmU6OlN0ZXBSYW5nZTo6U3RlcFJhbmdlKTogUmVtb3ZlIGRlY2ltYWwgcGxhY2VzLgorICAgICAg
ICAoV2ViQ29yZTo6U3RlcFJhbmdlOjphY2NlcHRhYmxlRXJyb3IpOiBDaGFuZ2VkIGZvciB1c2lu
ZyBEZWNpbWFsLgorICAgICAgICAoV2ViQ29yZTo6U3RlcFJhbmdlOjphbGlnblZhbHVlRm9yU3Rl
cCk6IENoYW5nZWQgZm9yIHVzaW5nIERlY2ltYWwuCisgICAgICAgIChXZWJDb3JlOjpTdGVwUmFu
Z2U6OmNsYW1wVmFsdWUpOiBDaGFuZ2VkIGZvciB1c2luZyBEZWNpbWFsLgorICAgICAgICAoV2Vi
Q29yZTo6U3RlcFJhbmdlOjpwYXJzZVN0ZXApOiBDaGFuZ2VkIGZvciB1c2luZyBEZWNpbWFsLgor
ICAgICAgICAoV2ViQ29yZTo6U3RlcFJhbmdlOjpzdGVwTWlzbWF0Y2gpOiBDaGFuZ2VkIGZvciB1
c2luZyBEZWNpbWFsLgorICAgICAgICAqIGh0bWwvU3RlcFJhbmdlLmg6CisgICAgICAgIChEZWNp
bWFsT3JNaXNzaW5nKTogUmVwbGFjZW1lbnQgb2YgRG91YmxlV2l0aERlY2ltYWxQbGFjZU9yTWlz
c2luZy4KKyAgICAgICAgKFdlYkNvcmU6OlN0ZXBSYW5nZTo6RGVjaW1hbE9yTWlzc2luZzo6RGVj
aW1hbE9yTWlzc2luZyk6IENoYW5nZWQgZm9yIHVzaW5nIERlY2ltYWwuCisgICAgICAgIChXZWJD
b3JlOjpTdGVwUmFuZ2U6OlN0ZXBEZXNjcmlwdGlvbjo6ZGVmYXVsdFZhbHVlKTogQ2hhbmdlZCBm
b3IgdXNpbmcgRGVjaW1hbC4KKyAgICAgICAgKFdlYkNvcmU6OlN0ZXBSYW5nZTo6bWF4aW11bSk6
IENoYW5nZWQgZm9yIHVzaW5nIERlY2ltYWwuCisgICAgICAgIChXZWJDb3JlOjpTdGVwUmFuZ2U6
Om1pbmltdW0pOiBDaGFuZ2VkIGZvciB1c2luZyBEZWNpbWFsLgorICAgICAgICAoV2ViQ29yZTo6
U3RlcFJhbmdlOjpzdGVwKTogQ2hhbmdlZCBmb3IgdXNpbmcgRGVjaW1hbC4KKyAgICAgICAgKFdl
YkNvcmU6OlN0ZXBSYW5nZTo6c3RlcEJhc2UpOiBDaGFuZ2VkIGZvciB1c2luZyBEZWNpbWFsLgor
ICAgICAgICAoV2ViQ29yZTo6U3RlcFJhbmdlOjpkZWZhdWx0VmFsdWUpOiBDaGFuZ2VkIGZvciB1
c2luZyBEZWNpbWFsLgorICAgICAgICAoV2ViQ29yZTo6U3RlcFJhbmdlOjplbnN1cmVNYXhpbXVt
KTogQWRkZWQgdG8gaGVscCBjYWxjdWxhdGluZyBtYXhpbXVtLgorICAgICAgICAoV2ViQ29yZTo6
U3RlcFJhbmdlOjpwcm9wb3J0aW9uRnJvbVZhbHVlKTogQ2hhbmdlZCBmb3IgdXNpbmcgRGVjaW1h
bC4KKyAgICAgICAgKFdlYkNvcmU6OlN0ZXBSYW5nZTo6dmFsdWVGcm9tUHJvcG9ydGlvbik6IENo
YW5nZWQgZm9yIHVzaW5nIERlY2ltYWwuCisgICAgICAgIChXZWJDb3JlOjpTdGVwUmFuZ2U6OnJv
dW5kQnlTdGVwKTogQWRkZWQgdG8gaGVscCByb3VuZGluZyBieSBzdGVwLgorICAgICAgICAqIGh0
bWwvVGltZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaW1lSW5wdXRUeXBlOjpk
ZWZhdWx0VmFsdWVGb3JTdGVwVXApOiBDaGFuZ2VkIGZvciB1c2luZyBEZWNpbWFsLgorICAgICAg
ICAoV2ViQ29yZTo6VGltZUlucHV0VHlwZTo6Y3JlYXRlU3RlcFJhbmdlKTogQ2hhbmdlZCBmb3Ig
dXNpbmcgRGVjaW1hbC4KKyAgICAgICAgKFdlYkNvcmU6OlRpbWVJbnB1dFR5cGU6OnNldE1pbGxp
c2Vjb25kVG9EYXRlQ29tcG9uZW50cyk6IENoYW5nZWQgZm9yIHVzaW5nIERlY2ltYWwuCisgICAg
ICAgICogaHRtbC9UaW1lSW5wdXRUeXBlLmg6CisgICAgICAgIChUaW1lSW5wdXRUeXBlKTogQ2hh
bmdlZCBmb3IgdXNpbmcgRGVjaW1hbC4KKyAgICAgICAgKiBodG1sL1dlZWtJbnB1dFR5cGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V2Vla0lucHV0VHlwZTo6Y3JlYXRlU3RlcFJhbmdlKTogQ2hh
bmdlZCBmb3IgdXNpbmcgRGVjaW1hbC4KKyAgICAgICAgKFdlYkNvcmU6OldlZWtJbnB1dFR5cGU6
OnNldE1pbGxpc2Vjb25kVG9EYXRlQ29tcG9uZW50cyk6IENoYW5nZWQgZm9yIHVzaW5nIERlY2lt
YWwuCisgICAgICAgICogaHRtbC9XZWVrSW5wdXRUeXBlLmg6CisgICAgICAgIChXZWVrSW5wdXRU
eXBlKTogQ2hhbmdlZCBmb3IgdXNpbmcgRGVjaW1hbC4KKyAgICAgICAgKiBodG1sL3BhcnNlci9I
VE1MUGFyc2VySWRpb21zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNlcmlhbGl6ZUZvck51bWJl
clR5cGUpOiBBZGRlZCBEZWNpbWFsIHZlcnNpb24uCisgICAgICAgIChXZWJDb3JlOjpwYXJzZVRv
RGVjaW1hbEZvck51bWJlclR5cGUpOiBBZGRlZC4KKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1M
UGFyc2VySWRpb21zLmg6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0RGVjaW1hbFRvRG91Ymxl
KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0RG91YmxlVG9EZWNpbWFsKTogQWRk
ZWQuCisgICAgICAgICogaHRtbC9zaGFkb3cvQ2FsZW5kYXJQaWNrZXJFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhbGVuZGFyUGlja2VyRWxlbWVudDo6d3JpdGVEb2N1bWVudCk6IENo
YW5nZWQgZm9yIHVzaW5nIERlY2ltYWwuCisgICAgICAgICogaHRtbC9zaGFkb3cvU2xpZGVyVGh1
bWJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNsaWRlclBvc2l0aW9uKTogQ2hhbmdl
ZCBmb3IgdXNpbmcgRGVjaW1hbC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNsaWRlclRodW1i
OjpsYXlvdXQpOiBDaGFuZ2VkIGZvciB1c2luZyBEZWNpbWFsLgorICAgICAgICAoV2ViQ29yZTo6
U2xpZGVyVGh1bWJFbGVtZW50OjpzZXRQb3NpdGlvbkZyb21Qb2ludCk6IENoYW5nZWQgZm9yIHVz
aW5nIERlY2ltYWwuCisgICAgICAgICogcGxhdGZvcm0vRGVjaW1hbC5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6RGVjaW1hbFByaXZhdGU6OlVJbnQxMjg6OmhpZ2gpOgorICAgICAgICAo
V2ViQ29yZTo6RGVjaW1hbFByaXZhdGU6OlVJbnQxMjg6Omxvdyk6CisgICAgICAgIChXZWJDb3Jl
OjpEZWNpbWFsUHJpdmF0ZTo6VUludDEyODo6aXNaZXJvKToKKyAgICAgICAgKFdlYkNvcmU6OkRl
Y2ltYWxQcml2YXRlOjpjb3VudERpZ2l0cyk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsUHJp
dmF0ZTo6bXVsdGlwbHlIaWdoKToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWxQcml2YXRlOjpw
b3dlcik6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsUHJpdmF0ZTo6c2NhbGVEb3duKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRlY2ltYWxQcml2YXRlOjpzY2FsZVVwKToKKyAgICAgICAgKFdlYkNv
cmU6OkRlY2ltYWxQcml2YXRlOjpTcGVjaWFsVmFsdWVIYW5kbGVyOjpTcGVjaWFsVmFsdWVIYW5k
bGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWxQcml2YXRlOjpTcGVjaWFsVmFsdWVIYW5k
bGVyOjpoYW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1hbFByaXZhdGU6OlNwZWNpYWxW
YWx1ZUhhbmRsZXI6OnZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWxQcml2YXRlOjpV
SW50MTI4OjpVSW50MTI4KToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWxQcml2YXRlOjpVSW50
MTI4OjpvcGVyYXRvciAvPSk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsUHJpdmF0ZTo6VUlu
dDEyODo6bXVsdGlwbHkpOgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1hbDo6RW5jb2RlZERhdGE6
OkVuY29kZWREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWw6OkVuY29kZWREYXRhOjpj
b2VmZmljaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjpFbmNvZGVkRGF0YTo6ZXhw
b25lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1hbDo6RW5jb2RlZERhdGE6OmlzRmluaXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWw6OkVuY29kZWREYXRhOjppc1NwZWNpYWwpOgor
ICAgICAgICAoV2ViQ29yZTo6RGVjaW1hbDo6RW5jb2RlZERhdGE6OmlzWmVybyk6CisgICAgICAg
IChXZWJDb3JlOjpEZWNpbWFsOjpFbmNvZGVkRGF0YTo6cmF3RXhwb25lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6RGVjaW1hbDo6RW5jb2RlZERhdGE6OnNpZ24pOgorICAgICAgICAoV2ViQ29yZTo6
RGVjaW1hbDo6RW5jb2RlZERhdGE6OnNldFNpZ24pOgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1h
bDo6RGVjaW1hbCk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjpvcGVyYXRvciA9KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRlY2ltYWw6Om9wZXJhdG9yICs9KToKKyAgICAgICAgKFdlYkNvcmU6
OkRlY2ltYWw6Om9wZXJhdG9yIC09KToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWw6Om9wZXJh
dG9yICo9KToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWw6Om9wZXJhdG9yIC89KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRlY2ltYWw6Om9wZXJhdG9yIC0pOgorICAgICAgICAoV2ViQ29yZTo6RGVj
aW1hbDo6b3BlcmF0b3IgKyk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjpvcGVyYXRvciAq
KToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWw6Om9wZXJhdG9yIC8pOgorICAgICAgICAoV2Vi
Q29yZTo6RGVjaW1hbDo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjpv
cGVyYXRvciE9KToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWw6Om9wZXJhdG9yIDwpOgorICAg
ICAgICAoV2ViQ29yZTo6RGVjaW1hbDo6b3BlcmF0b3IgPD0pOgorICAgICAgICAoV2ViQ29yZTo6
RGVjaW1hbDo6b3BlcmF0b3IgPik6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjpvcGVyYXRv
ciA+PSk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjpleHBvbmVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpEZWNpbWFsOjpmb3JtYXRDbGFzcyk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFs
OjpzaWduKToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWw6OmFicyk6CisgICAgICAgIChXZWJD
b3JlOjpEZWNpbWFsOjpjZWlsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWw6OmNvbXBh
cmVUbyk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjpmYXN0RXF1YWxzKToKKyAgICAgICAg
KFdlYkNvcmU6OkRlY2ltYWw6OmZsb29yKToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWw6OmZy
b21TdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1hbDo6aW5maW5pdHkpOgorICAgICAg
ICAoV2ViQ29yZTo6RGVjaW1hbDo6bmFuKToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWw6OnJl
bWFpbmRlcik6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjpyb3VuZCk6CisgICAgICAgIChX
ZWJDb3JlOjpEZWNpbWFsOjp0b1N0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjp6
ZXJvKToKKyAgICAgICAgKiBwbGF0Zm9ybS9EZWNpbWFsLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RGVjaW1hbDo6aXNGaW5pdGUpOgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1hbDo6aXNN
aW51cyk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjppc1BsdXMpOgorICAgICAgICAoV2Vi
Q29yZTo6RGVjaW1hbDo6aXNTcGVjaWFsKToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWw6Omlz
WmVybyk6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjp2YWx1ZSk6CisgICAgICAgIChXZWJD
b3JlOjpEZWNpbWFsOjppbnZlcnRTaWduKToKKwogMjAxMi0wNS0yMyAgU2hpbnlhIEthd2FuYWth
ICA8c2hpbnlha0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgRG9jdW1lbnQuZWxlbWVudEZyb21Q
b2ludCBleHBvc2VzIGlubmVyIGVsZW1lbnQgb2YgU2hhZG93IERPTS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKaW5kZXggOWU2NmM5YmY0YTIxMjFlZTBjMWI3NjE4N2M0NzFmYjkwZWE4MzY0Zi4u
MzU1ZTgxMWI4NWZkY2M1MzlhZTg4NzI2NGY5NjA1NjkwNmI0MzAwYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAxMi0wNS0yMyAgWW9zaGlmdW1pIElub3Vl
ICA8eW9zaW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtGb3Jtc10gSW50cm9kdWNlIERlY2lt
YWwgYXJpdGhtZXRpYyB0byBmaXggcm91bmRpbmcgZXJyb3JzIGluIG51bWJlci9yYW5nZSBpbnB1
dCB0eXBlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODAwMDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGlzIHBhdGNoIGFkZGVkIHVuaXQgdGVzdCBmb3IgRGVjaW1hbCBjbGFzcy4KKworICAgICAgICAq
IFdlYktpdC5neXBpOgorICAgICAgICAqIHRlc3RzL0RlY2ltYWxUZXN0LmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPDwpOgorICAgICAg
ICAoRGVjaW1hbFRlc3QpOgorICAgICAgICAoRGVjaW1hbFN0ZXBSYW5nZSk6CisgICAgICAgIChE
ZWNpbWFsVGVzdDo6RGVjaW1hbFN0ZXBSYW5nZTo6RGVjaW1hbFN0ZXBSYW5nZSk6CisgICAgICAg
IChEZWNpbWFsVGVzdDo6RGVjaW1hbFN0ZXBSYW5nZTo6Y2xhbXBWYWx1ZSk6CisgICAgICAgIChE
ZWNpbWFsVGVzdDo6RGVjaW1hbFRlc3Q6OmVuY29kZSk6CisgICAgICAgIChEZWNpbWFsVGVzdDo6
RGVjaW1hbFRlc3Q6OmZyb21TdHJpbmcpOgorICAgICAgICAoRGVjaW1hbFRlc3Q6OkRlY2ltYWxU
ZXN0OjpzdGVwRG93bik6CisgICAgICAgIChEZWNpbWFsVGVzdDo6RGVjaW1hbFRlc3Q6OnN0ZXBV
cCk6CisgICAgICAgIChEZWNpbWFsVGVzdDo6VEVTVF9GKToKKwogMjAxMi0wNS0yMyAgT2phbiBW
YWZhaSAgPG9qYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIGFkZCBiYWNrIHRoZSBhYmlsaXR5
IHRvIGRpc2FibGUgZmxleGJveApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBmOTVlODNmZTdiNzNk
M2M0YTA2Y2Y0ZmRmMTBhNjdmNWNjMGFhNjVkLi43ZGUzMzZhOWI0NzQzODE4MGFjNmIwODk5YTFm
MWJlZjhhZDA0MWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTEwNSw2ICsxMTA1LDcgQEAg
U0VUKFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL0NvbnRlbnRUeXBlLmNwcAogICAgIHBs
YXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVyLmNwcAogICAgIHBsYXRmb3JtL0RhdGVDb21wb25lbnRz
LmNwcAorICAgIHBsYXRmb3JtL0RlY2ltYWwuY3BwCiAgICAgcGxhdGZvcm0vRHJhZ0RhdGEuY3Bw
CiAgICAgcGxhdGZvcm0vRHJhZ0ltYWdlLmNwcAogICAgIHBsYXRmb3JtL0V2ZW50VHJhY2VyLmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggOGMyNDEwNzVmMTA2OGY4NDYzYjdk
ODY2ZDI4YzNhMTZkYTk4ZTVjOS4uYmJhMDA1ZjMzZGVmODlhOGE2NmU5OTQxNTQ2NGNlMTBjNWVl
ODI4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0zMTEyLDYgKzMxMTIsOCBA
QCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0N1cnNvci5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EYXRlQ29tcG9uZW50cy5jcHAgXAogCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGVDb21wb25lbnRzLmggXAorCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0RlY2ltYWwuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EZWNpbWFsLmgg
XAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmNwcCBcCiAJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vRHJhZ0RhdGEuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0lt
YWdlLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNl
L1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCA1YTgwYWUxZDYwOWEzMmY5NjliODRjMjcyOTQzMThl
MTEwNjA0NjQ2Li5kMzdlMDY5OWIxODhiNjg2ZmMwMTg3NDczOWE5NDY1OWRiNWMzZTJiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1Rh
cmdldC5wcmkKQEAgLTEwODEsNiArMTA4MSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIHBsYXRmb3Jt
L0NvbnRlbnRUeXBlLmNwcCBcCiAgICAgcGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwIFwK
ICAgICBwbGF0Zm9ybS9EYXRlQ29tcG9uZW50cy5jcHAgXAorICAgIHBsYXRmb3JtL0RlY2ltYWwu
Y3BwIFwKICAgICBwbGF0Zm9ybS9EcmFnRGF0YS5jcHAgXAogICAgIHBsYXRmb3JtL0RyYWdJbWFn
ZS5jcHAgXAogICAgIHBsYXRmb3JtL0V2ZW50VHJhY2VyLmNwcCBcCkBAIC0yMTk1LDYgKzIxOTYs
NyBAQCBIRUFERVJTICs9IFwKICAgICBwbGF0Zm9ybS9Db250ZXh0TWVudS5oIFwKICAgICBwbGF0
Zm9ybS9Dcm9zc1RocmVhZENvcGllci5oIFwKICAgICBwbGF0Zm9ybS9EYXRlQ29tcG9uZW50cy5o
IFwKKyAgICBwbGF0Zm9ybS9EZWNpbWFsLmggXAogICAgIHBsYXRmb3JtL0RyYWdEYXRhLmggXAog
ICAgIHBsYXRmb3JtL0RyYWdJbWFnZS5oIFwKICAgICBwbGF0Zm9ybS9FdmVudFRyYWNlci5oIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQppbmRleCBkYWU0MWFmN2ZlNjAxYTJmODhiZTYyODgzM2I0NTQ1ZDhjYTNj
ZTJlLi43MWRiMWM0YjYxNWQwMTNmMTBjODBhMjQyZmM0YmNmZTE2OWYzM2RmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCkBAIC0yNzEsNiArMjcxLDcgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9Db29raWVz
U3RyYXRlZ3kuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vQ3Vyc29yLmgnLAogICAgICAgICAg
ICAgJ3BsYXRmb3JtL0RhdGVDb21wb25lbnRzLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL0Rl
Y2ltYWwuaCcKICAgICAgICAgICAgICdwbGF0Zm9ybS9EcmFnRGF0YS5oJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9EcmFnSW1hZ2UuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vRXZlbnRUcmFj
ZXIuaCcsCkBAIC0zMTQyLDYgKzMxNDMsNyBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL0Nyb3Nz
VGhyZWFkQ29waWVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL0N1cnNvci5jcHAnLAogICAg
ICAgICAgICAgJ3BsYXRmb3JtL0RhdGVDb21wb25lbnRzLmNwcCcsCisgICAgICAgICAgICAncGxh
dGZvcm0vRGVjaW1hbC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL0RyYWdEYXRhLmNwcCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vRHJhZ0ltYWdlLmNwcCcsCiAgICAgICAgICAgICAncGxh
dGZvcm0vRXZlbnRMb29wLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvagppbmRleCBlZmNlNGEwN2FiZjk3YTBiYThhNmU3ZGU5MjkxYzg2MTNjN2E3OGVk
Li5lOGVmNjExMDVlOGY1MGUxZDU4M2RlMTc1MzJjOGVmZWFjNzE4NzgyIDEwMDc1NQotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtMjc3NzgsNiArMjc3Nzgs
MTQgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5c
cGxhdGZvcm1cRGVjaW1hbC5jcHAiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXERlY2ltYWwuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJ
CQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cRHJhZ0RhdGEuY3BwIgogCQkJ
CT4KIAkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCAwYzBkZTExNzVkN2E2NTc3ZGE2NzM0NDE2MjhlYzBhOTFmNTE2
MjUxLi4yOTdkYmNmZTQ4NjhmMzdmMDljMzAwMWUxZTI1OWU4MDQ1ZmJmNzllIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTkz
LDYgKzExOTMsOCBAQAogCQk0NTBDRUJGMDE1MDczQkJFMDAyQkIxNDkgLyogTGFiZWxhYmxlRWxl
bWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
NTBDRUJFRTE1MDczQkJFMDAyQkIxNDkgLyogTGFiZWxhYmxlRWxlbWVudC5jcHAgKi87IH07CiAJ
CTQ1MENFQkYxMTUwNzNCQkUwMDJCQjE0OSAvKiBMYWJlbGFibGVFbGVtZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NTBDRUJFRjE1MDczQkJFMDAy
QkIxNDkgLyogTGFiZWxhYmxlRWxlbWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTQ1QkFDMkIwMTM2MEJCQUIwMDVEQTI1OCAvKiBJY29uVVJM
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NUJBQzJB
RjEzNjBCQkFCMDA1REEyNTggLyogSWNvblVSTC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ1RkVBNUNGMTU2RERFOEMwMDY1NDEwMSAvKiBEZWNp
bWFsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ1
RkVBNUNEMTU2RERFOEMwMDY1NDEwMSAvKiBEZWNpbWFsLmNwcCAqLzsgfTsKKwkJNDVGRUE1RDAx
NTZEREU4QzAwNjU0MTAxIC8qIERlY2ltYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ1RkVBNUNFMTU2RERFOEMwMDY1NDEwMSAvKiBEZWNpbWFsLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDYxNEEx
RkUwQjIzQThENjAwNDQ2RTFDIC8qIGNvcHlDdXJzb3IucG5nIGluIFJlc291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjE0QTFGRDBCMjNBOEQ2MDA0NDZFMUMgLyog
Y29weUN1cnNvci5wbmcgKi87IH07CiAJCTQ2NzAwRUQwMTI3Qjk2Q0IwMEY1RDVENiAvKiBGaWxl
V3JpdGVyU3luYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0NjcwMEVDRTEyN0I5NkNCMDBGNUQ1RDYgLyogRmlsZVdyaXRlclN5bmMuY3BwICovOyB9
OwogCQk0NjcwMEVEMTEyN0I5NkNCMDBGNUQ1RDYgLyogRmlsZVdyaXRlclN5bmMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NzAwRUNGMTI3Qjk2Q0Iw
MEY1RDVENiAvKiBGaWxlV3JpdGVyU3luYy5oICovOyB9OwpAQCAtODE4Nyw2ICs4MTg5LDggQEAK
IAkJNDUwQ0VCRUUxNTA3M0JCRTAwMkJCMTQ5IC8qIExhYmVsYWJsZUVsZW1lbnQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGFiZWxhYmxlRWxlbWVudC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ1MENFQkVGMTUwNzNCQkUwMDJCQjE0OSAvKiBM
YWJlbGFibGVFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExhYmVs
YWJsZUVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDVCQUMyQUYxMzYw
QkJBQjAwNURBMjU4IC8qIEljb25VUkwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSWNvblVSTC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NUZFQTVDRDE1NkRE
RThDMDA2NTQxMDEgLyogRGVjaW1hbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBEZWNpbWFsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDVGRUE1
Q0UxNTZEREU4QzAwNjU0MTAxIC8qIERlY2ltYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRGVjaW1hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjE0QTFG
RDBCMjNBOEQ2MDA0NDZFMUMgLyogY29weUN1cnNvci5wbmcgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS5wbmc7IHBhdGggPSBjb3B5Q3Vyc29y
LnBuZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY3MDBFQ0UxMjdCOTZDQjAwRjVE
NUQ2IC8qIEZpbGVXcml0ZXJTeW5jLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IEZpbGVXcml0ZXJTeW5jLmNwcDsgcGF0aCA9IE1vZHVsZXMvZmlsZXN5c3RlbS9GaWxl
V3JpdGVyU3luYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2NzAwRUNGMTI3
Qjk2Q0IwMEY1RDVENiAvKiBGaWxlV3JpdGVyU3luYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBGaWxlV3JpdGVyU3luYy5oOyBwYXRoID0gTW9kdWxlcy9maWxlc3lzdGVtL0Zp
bGVXcml0ZXJTeW5jLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDMwOSw2ICsy
MDMxMyw4IEBACiAJCQkJRjU4Nzg2ODQwMkRFM0I4NjAxRUE0MTIyIC8qIEN1cnNvci5oICovLAog
CQkJCUE1NzMyQjA4MTM2QTE2MUQwMDVDOEQ3QyAvKiBEYXRlQ29tcG9uZW50cy5jcHAgKi8sCiAJ
CQkJQTU3MzJCMDkxMzZBMTYxRDAwNUM4RDdDIC8qIERhdGVDb21wb25lbnRzLmggKi8sCisJCQkJ
NDVGRUE1Q0QxNTZEREU4QzAwNjU0MTAxIC8qIERlY2ltYWwuY3BwICovLAorCQkJCTQ1RkVBNUNF
MTU2RERFOEMwMDY1NDEwMSAvKiBEZWNpbWFsLmggKi8sCiAJCQkJQTc5NTQ2NDIwQjVDNENCNDAw
N0I0MzhGIC8qIERyYWdEYXRhLmNwcCAqLywKIAkJCQlBN0I2RTY5RDBCMjkxQTk2MDBEMDUyOUYg
LyogRHJhZ0RhdGEuaCAqLywKIAkJCQlBN0NGQjNDRjBCN0VEMTBBMDA3MEMzMkQgLyogRHJhZ0lt
YWdlLmNwcCAqLywKQEAgLTIyMDYyLDYgKzIyMDY4LDcgQEAKIAkJCQlGNTVCM0RCNjEyNTFGMTJE
MDAzRUYyNjkgLyogRGF0ZUlucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjU1QjNEQjgx
MjUxRjEyRDAwM0VGMjY5IC8qIERhdGVUaW1lSW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlGNTVCM0RCQTEyNTFGMTJEMDAzRUYyNjkgLyogRGF0ZVRpbWVMb2NhbElucHV0VHlwZS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNDVGRUE1RDAxNTZEREU4QzAwNjU0MTAxIC8qIERlY2ltYWwuaCBp
biBIZWFkZXJzICovLAogCQkJCUE4QzIyOEExMTFENTcyMkUwMEQ1QTdEMyAvKiBEZWNvZGVkRGF0
YURvY3VtZW50UGFyc2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRUNDRkMzQjE0MTk3M0Q1MDAy
QTBBQzEgLyogRGVjb2RlRXNjYXBlU2VxdWVuY2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTYy
QTQ1MTEwMTE0NUFFMDBERkYzRUQgLyogRGVkaWNhdGVkV29ya2VyQ29udGV4dC5oIGluIEhlYWRl
cnMgKi8sCkBAIC0yNTU1Myw2ICsyNTU2MCw3IEBACiAJCQkJRjU1QjNEQjUxMjUxRjEyRDAwM0VG
MjY5IC8qIERhdGVJbnB1dFR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjU1QjNEQjcxMjUx
RjEyRDAwM0VGMjY5IC8qIERhdGVUaW1lSW5wdXRUeXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUY1NUIzREI5MTI1MUYxMkQwMDNFRjI2OSAvKiBEYXRlVGltZUxvY2FsSW5wdXRUeXBlLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTQ1RkVBNUNGMTU2RERFOEMwMDY1NDEwMSAvKiBEZWNpbWFsLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUE4QzIyOEEyMTFENTcyMkUwMEQ1QTdEMyAvKiBEZWNvZGVk
RGF0YURvY3VtZW50UGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxNjJBNDUwMTAxMTQ1
QUUwMERGRjNFRCAvKiBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTQxQTNENThFMTAxQzE1MkQwMDMxNkQwNyAvKiBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQuY3Bw
IGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VEYXRl
QW5kVGltZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5kVGlt
ZUlucHV0VHlwZS5jcHAKaW5kZXggNzgyZTY2MTk5ZDRkYTAyNGQ2ZjIxMjE0YTgyNDc1YTkxMTIy
Y2UxZi4uMDc5NmRhYjUwMTZmZmFiZTNkM2EwMTNmNTZlZGIyYzNlZmIzNjU2OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcApAQCAtMzMs
NiArMzMsNyBAQAogCiAjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhU
TUxOYW1lcy5oIgorI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKICNpbmNsdWRlICJLZXli
b2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAiTG9jYWxpemVkRGF0ZS5oIgogI2luY2x1ZGUgPGxpbWl0
cz4KQEAgLTQ3LDI3ICs0OCwyNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3Bh
Y2UgSFRNTE5hbWVzOwogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAotc3RhdGljIGNvbnN0IGRvdWJs
ZSBtc2VjUGVyTWludXRlID0gNjAgKiAxMDAwOwotc3RhdGljIGNvbnN0IGRvdWJsZSBtc2VjUGVy
U2Vjb25kID0gMTAwMDsKK3N0YXRpYyBjb25zdCBpbnQgbXNlY1Blck1pbnV0ZSA9IDYwICogMTAw
MDsKK3N0YXRpYyBjb25zdCBpbnQgbXNlY1BlclNlY29uZCA9IDEwMDA7CiAKIGRvdWJsZSBCYXNl
RGF0ZUFuZFRpbWVJbnB1dFR5cGU6OnZhbHVlQXNEYXRlKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
cGFyc2VUb0RvdWJsZShlbGVtZW50KCktPnZhbHVlKCksIERhdGVDb21wb25lbnRzOjppbnZhbGlk
TWlsbGlzZWNvbmRzKCkpOworICAgIHJldHVybiBjb252ZXJ0RGVjaW1hbFRvRG91YmxlKHBhcnNl
VG9EZWNpbWFsKGVsZW1lbnQoKS0+dmFsdWUoKSwgY29udmVydERvdWJsZVRvRGVjaW1hbChEYXRl
Q29tcG9uZW50czo6aW52YWxpZE1pbGxpc2Vjb25kcygpKSkpOwogfQogCiB2b2lkIEJhc2VEYXRl
QW5kVGltZUlucHV0VHlwZTo6c2V0VmFsdWVBc0RhdGUoZG91YmxlIHZhbHVlLCBFeGNlcHRpb25D
b2RlJikgY29uc3QKIHsKLSAgICBlbGVtZW50KCktPnNldFZhbHVlKHNlcmlhbGl6ZVdpdGhNaWxs
aXNlY29uZHModmFsdWUpKTsKKyAgICBlbGVtZW50KCktPnNldFZhbHVlKHNlcmlhbGl6ZVdpdGhN
aWxsaXNlY29uZHMoY29udmVydERvdWJsZVRvRGVjaW1hbCh2YWx1ZSkpKTsKIH0KIAogZG91Ymxl
IEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6dmFsdWVBc051bWJlcigpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIHBhcnNlVG9Eb3VibGUoZWxlbWVudCgpLT52YWx1ZSgpLCBudW1lcmljX2xpbWl0czxk
b3VibGU+OjpxdWlldF9OYU4oKSk7CisgICAgcmV0dXJuIGNvbnZlcnREZWNpbWFsVG9Eb3VibGUo
cGFyc2VUb0RlY2ltYWwoZWxlbWVudCgpLT52YWx1ZSgpLCBEZWNpbWFsOjpuYW4oKSkpOwogfQog
CiB2b2lkIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6c2V0VmFsdWVBc051bWJlcihkb3VibGUg
bmV3VmFsdWUsIFRleHRGaWVsZEV2ZW50QmVoYXZpb3IgZXZlbnRCZWhhdmlvciwgRXhjZXB0aW9u
Q29kZSYpIGNvbnN0CiB7Ci0gICAgZWxlbWVudCgpLT5zZXRWYWx1ZShzZXJpYWxpemUobmV3VmFs
dWUpLCBldmVudEJlaGF2aW9yKTsKKyAgICBlbGVtZW50KCktPnNldFZhbHVlKHNlcmlhbGl6ZShj
b252ZXJ0RG91YmxlVG9EZWNpbWFsKG5ld1ZhbHVlKSksIGV2ZW50QmVoYXZpb3IpOwogfQogCiBi
b29sIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6dHlwZU1pc21hdGNoRm9yKGNvbnN0IFN0cmlu
ZyYgdmFsdWUpIGNvbnN0CkBAIC04MCwxMyArODEsMTMgQEAgYm9vbCBCYXNlRGF0ZUFuZFRpbWVJ
bnB1dFR5cGU6OnR5cGVNaXNtYXRjaCgpIGNvbnN0CiAgICAgcmV0dXJuIHR5cGVNaXNtYXRjaEZv
cihlbGVtZW50KCktPnZhbHVlKCkpOwogfQogCi1kb3VibGUgQmFzZURhdGVBbmRUaW1lSW5wdXRU
eXBlOjpkZWZhdWx0VmFsdWVGb3JTdGVwVXAoKSBjb25zdAorRGVjaW1hbCBCYXNlRGF0ZUFuZFRp
bWVJbnB1dFR5cGU6OmRlZmF1bHRWYWx1ZUZvclN0ZXBVcCgpIGNvbnN0CiB7CiAgICAgZG91Ymxl
IG1zID0gY3VycmVudFRpbWVNUygpOwogICAgIGRvdWJsZSB1dGNPZmZzZXQgPSBjYWxjdWxhdGVV
VENPZmZzZXQoKTsKICAgICBkb3VibGUgZHN0T2Zmc2V0ID0gY2FsY3VsYXRlRFNUT2Zmc2V0KG1z
LCB1dGNPZmZzZXQpOwogICAgIGludCBvZmZzZXQgPSBzdGF0aWNfY2FzdDxpbnQ+KCh1dGNPZmZz
ZXQgKyBkc3RPZmZzZXQpIC8gbXNQZXJNaW51dGUpOwotICAgIHJldHVybiBtcyArIChvZmZzZXQg
KiBtc1Blck1pbnV0ZSk7CisgICAgcmV0dXJuIGNvbnZlcnREb3VibGVUb0RlY2ltYWwobXMgKyAo
b2Zmc2V0ICogbXNQZXJNaW51dGUpKTsKIH0KIAogYm9vbCBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5
cGU6OmlzU3RlcHBhYmxlKCkgY29uc3QKQEAgLTEwOCwxNCArMTA5LDE0IEBAIHZvaWQgQmFzZURh
dGVBbmRUaW1lSW5wdXRUeXBlOjpoYW5kbGVXaGVlbEV2ZW50KFdoZWVsRXZlbnQqIGV2ZW50KQog
ICAgICAgICBoYW5kbGVXaGVlbEV2ZW50Rm9yU3BpbkJ1dHRvbihldmVudCk7CiB9CiAKLWRvdWJs
ZSBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OnBhcnNlVG9Eb3VibGUoY29uc3QgU3RyaW5nJiBz
cmMsIGRvdWJsZSBkZWZhdWx0VmFsdWUpIGNvbnN0CitEZWNpbWFsIEJhc2VEYXRlQW5kVGltZUlu
cHV0VHlwZTo6cGFyc2VUb0RlY2ltYWwoY29uc3QgU3RyaW5nJiBzcmMsIGNvbnN0IERlY2ltYWwm
IGRlZmF1bHRWYWx1ZSkgY29uc3QKIHsKICAgICBEYXRlQ29tcG9uZW50cyBkYXRlOwogICAgIGlm
ICghcGFyc2VUb0RhdGVDb21wb25lbnRzKHNyYywgJmRhdGUpKQogICAgICAgICByZXR1cm4gZGVm
YXVsdFZhbHVlOwogICAgIGRvdWJsZSBtc2VjID0gZGF0ZS5taWxsaXNlY29uZHNTaW5jZUVwb2No
KCk7CiAgICAgQVNTRVJUKGlzZmluaXRlKG1zZWMpKTsKLSAgICByZXR1cm4gbXNlYzsKKyAgICBy
ZXR1cm4gY29udmVydERvdWJsZVRvRGVjaW1hbChtc2VjKTsKIH0KIAogYm9vbCBCYXNlRGF0ZUFu
ZFRpbWVJbnB1dFR5cGU6OnBhcnNlVG9EYXRlQ29tcG9uZW50cyhjb25zdCBTdHJpbmcmIHNvdXJj
ZSwgRGF0ZUNvbXBvbmVudHMqIG91dCkgY29uc3QKQEAgLTEyOCw5ICsxMjksOSBAQCBib29sIEJh
c2VEYXRlQW5kVGltZUlucHV0VHlwZTo6cGFyc2VUb0RhdGVDb21wb25lbnRzKGNvbnN0IFN0cmlu
ZyYgc291cmNlLCBEYXRlQwogICAgIHJldHVybiBwYXJzZVRvRGF0ZUNvbXBvbmVudHNJbnRlcm5h
bChzb3VyY2UuY2hhcmFjdGVycygpLCBzb3VyY2UubGVuZ3RoKCksIG91dCk7CiB9CiAKLVN0cmlu
ZyBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OnNlcmlhbGl6ZShkb3VibGUgdmFsdWUpIGNvbnN0
CitTdHJpbmcgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpzZXJpYWxpemUoY29uc3QgRGVjaW1h
bCYgdmFsdWUpIGNvbnN0CiB7Ci0gICAgaWYgKCFpc2Zpbml0ZSh2YWx1ZSkpCisgICAgaWYgKCF2
YWx1ZS5pc0Zpbml0ZSgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgRGF0ZUNvbXBv
bmVudHMgZGF0ZTsKICAgICBpZiAoIXNldE1pbGxpc2Vjb25kVG9EYXRlQ29tcG9uZW50cyh2YWx1
ZSwgJmRhdGUpKQpAQCAtMTQwLDE3ICsxNDEsMTcgQEAgU3RyaW5nIEJhc2VEYXRlQW5kVGltZUlu
cHV0VHlwZTo6c2VyaWFsaXplKGRvdWJsZSB2YWx1ZSkgY29uc3QKIAogU3RyaW5nIEJhc2VEYXRl
QW5kVGltZUlucHV0VHlwZTo6c2VyaWFsaXplV2l0aENvbXBvbmVudHMoY29uc3QgRGF0ZUNvbXBv
bmVudHMmIGRhdGUpIGNvbnN0CiB7Ci0gICAgZG91YmxlIHN0ZXA7CisgICAgRGVjaW1hbCBzdGVw
OwogICAgIGlmICghZWxlbWVudCgpLT5nZXRBbGxvd2VkVmFsdWVTdGVwKCZzdGVwKSkKICAgICAg
ICAgcmV0dXJuIGRhdGUudG9TdHJpbmcoKTsKLSAgICBpZiAoIWZtb2Qoc3RlcCwgbXNlY1Blck1p
bnV0ZSkpCisgICAgaWYgKHN0ZXAucmVtYWluZGVyKG1zZWNQZXJNaW51dGUpLmlzWmVybygpKQog
ICAgICAgICByZXR1cm4gZGF0ZS50b1N0cmluZyhEYXRlQ29tcG9uZW50czo6Tm9uZSk7Ci0gICAg
aWYgKCFmbW9kKHN0ZXAsIG1zZWNQZXJTZWNvbmQpKQorICAgIGlmIChzdGVwLnJlbWFpbmRlciht
c2VjUGVyU2Vjb25kKS5pc1plcm8oKSkKICAgICAgICAgcmV0dXJuIGRhdGUudG9TdHJpbmcoRGF0
ZUNvbXBvbmVudHM6OlNlY29uZCk7CiAgICAgcmV0dXJuIGRhdGUudG9TdHJpbmcoRGF0ZUNvbXBv
bmVudHM6Ok1pbGxpc2Vjb25kKTsKIH0KIAotU3RyaW5nIEJhc2VEYXRlQW5kVGltZUlucHV0VHlw
ZTo6c2VyaWFsaXplV2l0aE1pbGxpc2Vjb25kcyhkb3VibGUgdmFsdWUpIGNvbnN0CitTdHJpbmcg
QmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpzZXJpYWxpemVXaXRoTWlsbGlzZWNvbmRzKGNvbnN0
IERlY2ltYWwmIHZhbHVlKSBjb25zdAogewogICAgIHJldHVybiBzZXJpYWxpemUodmFsdWUpOwog
fQpAQCAtMTc1LDcgKzE3Niw4IEBAIFN0cmluZyBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmNv
bnZlcnRGcm9tVmlzaWJsZVZhbHVlKGNvbnN0IFN0cmluZyYgdmlzaWJsZVZhCiAgICAgaWYgKCFp
c2Zpbml0ZShwYXJzZWRWYWx1ZSkpCiAgICAgICAgIHJldHVybiB2aXNpYmxlVmFsdWU7CiAKLSAg
ICByZXR1cm4gc2VyaWFsaXplV2l0aE1pbGxpc2Vjb25kcyhwYXJzZWRWYWx1ZSk7CisgICAgY29u
c3QgRGVjaW1hbCB2YWx1ZSA9IGNvbnZlcnREb3VibGVUb0RlY2ltYWwocGFyc2VkVmFsdWUpOwor
ICAgIHJldHVybiB2YWx1ZS5pc0Zpbml0ZSgpID8gc2VyaWFsaXplV2l0aE1pbGxpc2Vjb25kcyh2
YWx1ZSkgOiB2aXNpYmxlVmFsdWU7CiB9CiAKIFN0cmluZyBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5
cGU6OnNhbml0aXplVmFsdWUoY29uc3QgU3RyaW5nJiBwcm9wb3NlZFZhbHVlKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmgKaW5kZXggZTkx
Y2Y2MDg4ZDg1ODliZmQ2MmVmM2Y4NjY1NTQ4OThiMjA4MjUwNi4uYTc4YjRjZDI2NWQ3ZDBlZTE4
ODg2NDgxMmJjYzA0MmY3MTYyYmRhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9C
YXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VE
YXRlQW5kVGltZUlucHV0VHlwZS5oCkBAIC00MiwxMyArNDIsMTMgQEAgY2xhc3MgQmFzZURhdGVB
bmRUaW1lSW5wdXRUeXBlIDogcHVibGljIFRleHRGaWVsZElucHV0VHlwZSB7CiBwcm90ZWN0ZWQ6
CiAgICAgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQp
IDogVGV4dEZpZWxkSW5wdXRUeXBlKGVsZW1lbnQpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBoYW5k
bGVLZXlkb3duRXZlbnQoS2V5Ym9hcmRFdmVudCopIE9WRVJSSURFOwotICAgIHZpcnR1YWwgZG91
YmxlIHBhcnNlVG9Eb3VibGUoY29uc3QgU3RyaW5nJiwgZG91YmxlKSBjb25zdCBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIERlY2ltYWwgcGFyc2VUb0RlY2ltYWwoY29uc3QgU3RyaW5nJiwgY29uc3Qg
RGVjaW1hbCYpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBwYXJzZVRvRGF0ZUNv
bXBvbmVudHMoY29uc3QgU3RyaW5nJiwgRGF0ZUNvbXBvbmVudHMqKSBjb25zdCBPVkVSUklERTsK
ICAgICBTdHJpbmcgc2VyaWFsaXplV2l0aENvbXBvbmVudHMoY29uc3QgRGF0ZUNvbXBvbmVudHMm
KSBjb25zdDsKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgcGFyc2VUb0RhdGVDb21wb25l
bnRzSW50ZXJuYWwoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgsIERhdGVDb21wb25lbnRz
KikgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBzZXRNaWxsaXNlY29uZFRvRGF0ZUNvbXBv
bmVudHMoZG91YmxlLCBEYXRlQ29tcG9uZW50cyopIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgc2V0TWlsbGlzZWNvbmRUb0RhdGVDb21wb25lbnRzKGNvbnN0IERlY2ltYWwmLCBEYXRlQ29t
cG9uZW50cyopIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIERhdGVDb21wb25lbnRzOjpUeXBlIGRh
dGVUeXBlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgZG91YmxlIHZhbHVlQXNEYXRlKCkgY29u
c3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldFZhbHVlQXNEYXRlKGRvdWJsZSwgRXhj
ZXB0aW9uQ29kZSYpIGNvbnN0IE9WRVJSSURFOwpAQCAtNTYsMTEgKzU2LDExIEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCB2b2lkIHNldFZhbHVlQXNOdW1iZXIoZG91YmxlLCBUZXh0RmllbGRFdmVu
dEJlaGF2aW9yLCBFeGNlcHRpb25Db2RlJikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBi
b29sIHR5cGVNaXNtYXRjaEZvcihjb25zdCBTdHJpbmcmKSBjb25zdCBPVkVSUklERTsKICAgICB2
aXJ0dWFsIGJvb2wgdHlwZU1pc21hdGNoKCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBk
b3VibGUgZGVmYXVsdFZhbHVlRm9yU3RlcFVwKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVh
bCBEZWNpbWFsIGRlZmF1bHRWYWx1ZUZvclN0ZXBVcCgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZp
cnR1YWwgYm9vbCBpc1N0ZXBwYWJsZSgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9p
ZCBoYW5kbGVXaGVlbEV2ZW50KFdoZWVsRXZlbnQqKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIFN0
cmluZyBzZXJpYWxpemUoZG91YmxlKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIFN0cmlu
ZyBzZXJpYWxpemVXaXRoTWlsbGlzZWNvbmRzKGRvdWJsZSkgY29uc3Q7CisgICAgdmlydHVhbCBT
dHJpbmcgc2VyaWFsaXplKGNvbnN0IERlY2ltYWwmKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIFN0cmluZyBzZXJpYWxpemVXaXRoTWlsbGlzZWNvbmRzKGNvbnN0IERlY2ltYWwmKSBjb25z
dDsKICAgICB2aXJ0dWFsIFN0cmluZyB2aXNpYmxlVmFsdWUoKSBjb25zdCBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIFN0cmluZyBjb252ZXJ0RnJvbVZpc2libGVWYWx1ZShjb25zdCBTdHJpbmcmKSBj
b25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIFN0cmluZyBzYW5pdGl6ZVZhbHVlKGNvbnN0IFN0
cmluZyYpIGNvbnN0IE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9E
YXRlSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZUlucHV0VHlwZS5jcHAK
aW5kZXggODhiMzEyMDY1NTQyZjI4YmYwZjlkOGQ2MTMzZWUxYjkxZWJiMjYxOS4uZDhlMTEzMmVl
ZmYyYTlkOTc2YzhjNGVkOTk5Y2JlM2Q2M2E1Njc3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9EYXRlSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVJ
bnB1dFR5cGUuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiRGF0ZUNvbXBvbmVudHMu
aCIKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgi
CisjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIktleWJvYXJkRXZlbnQu
aCIKICNpbmNsdWRlICJMb2NhbGl6ZWREYXRlLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIu
aD4KQEAgLTQ1LDkgKzQ2LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3Bh
Y2UgSFRNTE5hbWVzOwogCi1zdGF0aWMgY29uc3QgZG91YmxlIGRhdGVEZWZhdWx0U3RlcCA9IDEu
MDsKLXN0YXRpYyBjb25zdCBkb3VibGUgZGF0ZURlZmF1bHRTdGVwQmFzZSA9IDAuMDsKLXN0YXRp
YyBjb25zdCBkb3VibGUgZGF0ZVN0ZXBTY2FsZUZhY3RvciA9IDg2NDAwMDAwLjA7CitzdGF0aWMg
Y29uc3QgaW50ICBkYXRlRGVmYXVsdFN0ZXAgPSAxOworc3RhdGljIGNvbnN0IGludCAgZGF0ZURl
ZmF1bHRTdGVwQmFzZSA9IDA7CitzdGF0aWMgY29uc3QgaW50ICBkYXRlU3RlcFNjYWxlRmFjdG9y
ID0gODY0MDAwMDA7CiAKIGlubGluZSBEYXRlSW5wdXRUeXBlOjpEYXRlSW5wdXRUeXBlKEhUTUxJ
bnB1dEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgOiBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUoZWxl
bWVudCkKQEAgLTczLDEwICs3NCwxMCBAQCBTdGVwUmFuZ2UgRGF0ZUlucHV0VHlwZTo6Y3JlYXRl
U3RlcFJhbmdlKEFueVN0ZXBIYW5kbGluZyBhbnlTdGVwSGFuZGxpbmcpIGNvbnN0CiB7CiAgICAg
REVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdGVwUmFuZ2U6OlN0ZXBEZXNjcmlwdGlvbiwgc3Rl
cERlc2NyaXB0aW9uLCAoZGF0ZURlZmF1bHRTdGVwLCBkYXRlRGVmYXVsdFN0ZXBCYXNlLCBkYXRl
U3RlcFNjYWxlRmFjdG9yLCBTdGVwUmFuZ2U6OlBhcnNlZFN0ZXBWYWx1ZVNob3VsZEJlSW50ZWdl
cikpOwogCi0gICAgZG91YmxlIHN0ZXBCYXNlID0gcGFyc2VUb0RvdWJsZShlbGVtZW50KCktPmZh
c3RHZXRBdHRyaWJ1dGUobWluQXR0ciksIDApOwotICAgIGRvdWJsZSBtaW5pbXVtID0gcGFyc2VU
b0RvdWJsZShlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUobWluQXR0ciksIERhdGVDb21wb25l
bnRzOjptaW5pbXVtRGF0ZSgpKTsKLSAgICBkb3VibGUgbWF4aW11bSA9IHBhcnNlVG9Eb3VibGUo
ZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1heEF0dHIpLCBEYXRlQ29tcG9uZW50czo6bWF4
aW11bURhdGUoKSk7Ci0gICAgU3RlcFJhbmdlOjpEb3VibGVXaXRoRGVjaW1hbFBsYWNlc09yTWlz
c2luZyBzdGVwID0gU3RlcFJhbmdlOjpwYXJzZVN0ZXAoYW55U3RlcEhhbmRsaW5nLCBzdGVwRGVz
Y3JpcHRpb24sIGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShzdGVwQXR0cikpOworICAgIGNv
bnN0IERlY2ltYWwgc3RlcEJhc2UgPSBwYXJzZVRvRGVjaW1hbChlbGVtZW50KCktPmZhc3RHZXRB
dHRyaWJ1dGUobWluQXR0ciksIDApOworICAgIGNvbnN0IERlY2ltYWwgbWluaW11bSA9IHBhcnNl
VG9EZWNpbWFsKGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShtaW5BdHRyKSwgY29udmVydERv
dWJsZVRvRGVjaW1hbChEYXRlQ29tcG9uZW50czo6bWluaW11bURhdGUoKSkpOworICAgIGNvbnN0
IERlY2ltYWwgbWF4aW11bSA9IHBhcnNlVG9EZWNpbWFsKGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJp
YnV0ZShtYXhBdHRyKSwgY29udmVydERvdWJsZVRvRGVjaW1hbChEYXRlQ29tcG9uZW50czo6bWF4
aW11bURhdGUoKSkpOworICAgIGNvbnN0IFN0ZXBSYW5nZTo6RGVjaW1hbE9yTWlzc2luZyBzdGVw
ID0gU3RlcFJhbmdlOjpwYXJzZVN0ZXAoYW55U3RlcEhhbmRsaW5nLCBzdGVwRGVzY3JpcHRpb24s
IGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShzdGVwQXR0cikpOwogICAgIHJldHVybiBTdGVw
UmFuZ2Uoc3RlcEJhc2UsIG1pbmltdW0sIG1heGltdW0sIHN0ZXAsIHN0ZXBEZXNjcmlwdGlvbik7
CiB9CiAKQEAgLTg3LDEwICs4OCwxMCBAQCBib29sIERhdGVJbnB1dFR5cGU6OnBhcnNlVG9EYXRl
Q29tcG9uZW50c0ludGVybmFsKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZwogICAgIHJl
dHVybiBvdXQtPnBhcnNlRGF0ZShjaGFyYWN0ZXJzLCBsZW5ndGgsIDAsIGVuZCkgJiYgZW5kID09
IGxlbmd0aDsKIH0KIAotYm9vbCBEYXRlSW5wdXRUeXBlOjpzZXRNaWxsaXNlY29uZFRvRGF0ZUNv
bXBvbmVudHMoZG91YmxlIHZhbHVlLCBEYXRlQ29tcG9uZW50cyogZGF0ZSkgY29uc3QKK2Jvb2wg
RGF0ZUlucHV0VHlwZTo6c2V0TWlsbGlzZWNvbmRUb0RhdGVDb21wb25lbnRzKGNvbnN0IERlY2lt
YWwmIHZhbHVlLCBEYXRlQ29tcG9uZW50cyogZGF0ZSkgY29uc3QKIHsKICAgICBBU1NFUlQoZGF0
ZSk7Ci0gICAgcmV0dXJuIGRhdGUtPnNldE1pbGxpc2Vjb25kc1NpbmNlRXBvY2hGb3JEYXRlKHZh
bHVlKTsKKyAgICByZXR1cm4gZGF0ZS0+c2V0TWlsbGlzZWNvbmRzU2luY2VFcG9jaEZvckRhdGUo
Y29udmVydERlY2ltYWxUb0RvdWJsZSh2YWx1ZSkpOwogfQogCiBib29sIERhdGVJbnB1dFR5cGU6
OmlzRGF0ZUZpZWxkKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0
ZUlucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlSW5wdXRUeXBlLmgKaW5kZXgg
MmZhZGM0N2I0OGNkMGEzOWUwMGY0M2IzYmYxMWJhMGE5YjIxYzAxZi4uODM4NDNhMWRhZGI1NWFk
NDliOGU1NTY3NzExYTVhZjE4M2NkZWFkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9EYXRlSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlSW5wdXRUeXBl
LmgKQEAgLTUwLDcgKzUwLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIERhdGVDb21wb25lbnRz
OjpUeXBlIGRhdGVUeXBlKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBTdGVwUmFuZ2Ug
Y3JlYXRlU3RlcFJhbmdlKEFueVN0ZXBIYW5kbGluZykgY29uc3QgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCBib29sIHBhcnNlVG9EYXRlQ29tcG9uZW50c0ludGVybmFsKGNvbnN0IFVDaGFyKiwgdW5z
aWduZWQgbGVuZ3RoLCBEYXRlQ29tcG9uZW50cyopIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1
YWwgYm9vbCBzZXRNaWxsaXNlY29uZFRvRGF0ZUNvbXBvbmVudHMoZG91YmxlLCBEYXRlQ29tcG9u
ZW50cyopIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBzZXRNaWxsaXNlY29uZFRv
RGF0ZUNvbXBvbmVudHMoY29uc3QgRGVjaW1hbCYsIERhdGVDb21wb25lbnRzKikgY29uc3QgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCBib29sIGlzRGF0ZUZpZWxkKCkgY29uc3QgT1ZFUlJJREU7CiAj
aWYgRU5BQkxFKENBTEVOREFSX1BJQ0tFUikKICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlU2hhZG93
U3VidHJlZSgpIE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRl
VGltZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVUaW1lSW5wdXRUeXBl
LmNwcAppbmRleCA2Y2VmZDlkOGQ4OGE0YWNiZWE3NDlhYTJkMWY2ZGQwYWI0M2RhNzgyLi4xMmJj
NzZiYzBiYmU3M2Y1NTg3NjA0NTdhMjUxNzZjN2JjOWQ5ZTljIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0RhdGVUaW1lSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0RhdGVUaW1lSW5wdXRUeXBlLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkRh
dGVDb21wb25lbnRzLmgiCiAjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgogI2luY2x1ZGUg
IkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKICNpbmNsdWRlIDx3
dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCkBAIC00Myw5
ICs0NCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1l
czsKIAotc3RhdGljIGNvbnN0IGRvdWJsZSBkYXRlVGltZURlZmF1bHRTdGVwID0gNjAuMDsKLXN0
YXRpYyBjb25zdCBkb3VibGUgZGF0ZVRpbWVEZWZhdWx0U3RlcEJhc2UgPSAwLjA7Ci1zdGF0aWMg
Y29uc3QgZG91YmxlIGRhdGVUaW1lU3RlcFNjYWxlRmFjdG9yID0gMTAwMC4wOworc3RhdGljIGNv
bnN0IGludCBkYXRlVGltZURlZmF1bHRTdGVwID0gNjA7CitzdGF0aWMgY29uc3QgaW50IGRhdGVU
aW1lRGVmYXVsdFN0ZXBCYXNlID0gMDsKK3N0YXRpYyBjb25zdCBpbnQgZGF0ZVRpbWVTdGVwU2Nh
bGVGYWN0b3IgPSAxMDAwOwogCiBQYXNzT3duUHRyPElucHV0VHlwZT4gRGF0ZVRpbWVJbnB1dFR5
cGU6OmNyZWF0ZShIVE1MSW5wdXRFbGVtZW50KiBlbGVtZW50KQogewpAQCAtNjIsMTkgKzYzLDE5
IEBAIERhdGVDb21wb25lbnRzOjpUeXBlIERhdGVUaW1lSW5wdXRUeXBlOjpkYXRlVHlwZSgpIGNv
bnN0CiAgICAgcmV0dXJuIERhdGVDb21wb25lbnRzOjpEYXRlVGltZTsKIH0KIAotZG91YmxlIERh
dGVUaW1lSW5wdXRUeXBlOjpkZWZhdWx0VmFsdWVGb3JTdGVwVXAoKSBjb25zdAorRGVjaW1hbCBE
YXRlVGltZUlucHV0VHlwZTo6ZGVmYXVsdFZhbHVlRm9yU3RlcFVwKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gY3VycmVudFRpbWVNUygpOworICAgIHJldHVybiBjb252ZXJ0RG91YmxlVG9EZWNpbWFs
KGN1cnJlbnRUaW1lTVMoKSk7CiB9CiAKIFN0ZXBSYW5nZSBEYXRlVGltZUlucHV0VHlwZTo6Y3Jl
YXRlU3RlcFJhbmdlKEFueVN0ZXBIYW5kbGluZyBhbnlTdGVwSGFuZGxpbmcpIGNvbnN0CiB7CiAg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdGVwUmFuZ2U6OlN0ZXBEZXNjcmlwdGlvbiwg
c3RlcERlc2NyaXB0aW9uLCAoZGF0ZVRpbWVEZWZhdWx0U3RlcCwgZGF0ZVRpbWVEZWZhdWx0U3Rl
cEJhc2UsIGRhdGVUaW1lU3RlcFNjYWxlRmFjdG9yLCBTdGVwUmFuZ2U6OlNjYWxlZFN0ZXBWYWx1
ZVNob3VsZEJlSW50ZWdlcikpOwogCi0gICAgZG91YmxlIHN0ZXBCYXNlID0gcGFyc2VUb0RvdWJs
ZShlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUobWluQXR0ciksIDApOwotICAgIGRvdWJsZSBt
aW5pbXVtID0gcGFyc2VUb0RvdWJsZShlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUobWluQXR0
ciksIERhdGVDb21wb25lbnRzOjptaW5pbXVtRGF0ZVRpbWUoKSk7Ci0gICAgZG91YmxlIG1heGlt
dW0gPSBwYXJzZVRvRG91YmxlKGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShtYXhBdHRyKSwg
RGF0ZUNvbXBvbmVudHM6Om1heGltdW1EYXRlVGltZSgpKTsKLSAgICBTdGVwUmFuZ2U6OkRvdWJs
ZVdpdGhEZWNpbWFsUGxhY2VzT3JNaXNzaW5nIHN0ZXAgPSBTdGVwUmFuZ2U6OnBhcnNlU3RlcChh
bnlTdGVwSGFuZGxpbmcsIHN0ZXBEZXNjcmlwdGlvbiwgZWxlbWVudCgpLT5mYXN0R2V0QXR0cmli
dXRlKHN0ZXBBdHRyKSk7CisgICAgY29uc3QgRGVjaW1hbCBzdGVwQmFzZSA9IHBhcnNlVG9EZWNp
bWFsKGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShtaW5BdHRyKSwgMCk7CisgICAgY29uc3Qg
RGVjaW1hbCBtaW5pbXVtID0gcGFyc2VUb0RlY2ltYWwoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmli
dXRlKG1pbkF0dHIpLCBjb252ZXJ0RG91YmxlVG9EZWNpbWFsKERhdGVDb21wb25lbnRzOjptaW5p
bXVtRGF0ZVRpbWUoKSkpOworICAgIGNvbnN0IERlY2ltYWwgbWF4aW11bSA9IHBhcnNlVG9EZWNp
bWFsKGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShtYXhBdHRyKSwgY29udmVydERvdWJsZVRv
RGVjaW1hbChEYXRlQ29tcG9uZW50czo6bWF4aW11bURhdGVUaW1lKCkpKTsKKyAgICBTdGVwUmFu
Z2U6OkRlY2ltYWxPck1pc3Npbmcgc3RlcCA9IFN0ZXBSYW5nZTo6cGFyc2VTdGVwKGFueVN0ZXBI
YW5kbGluZywgc3RlcERlc2NyaXB0aW9uLCBlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUoc3Rl
cEF0dHIpKTsKICAgICByZXR1cm4gU3RlcFJhbmdlKHN0ZXBCYXNlLCBtaW5pbXVtLCBtYXhpbXVt
LCBzdGVwLCBzdGVwRGVzY3JpcHRpb24pOwogfQogCkBAIC04NSwxMCArODYsMTAgQEAgYm9vbCBE
YXRlVGltZUlucHV0VHlwZTo6cGFyc2VUb0RhdGVDb21wb25lbnRzSW50ZXJuYWwoY29uc3QgVUNo
YXIqIGNoYXJhY3RlcnMsIHUKICAgICByZXR1cm4gb3V0LT5wYXJzZURhdGVUaW1lKGNoYXJhY3Rl
cnMsIGxlbmd0aCwgMCwgZW5kKSAmJiBlbmQgPT0gbGVuZ3RoOwogfQogCi1ib29sIERhdGVUaW1l
SW5wdXRUeXBlOjpzZXRNaWxsaXNlY29uZFRvRGF0ZUNvbXBvbmVudHMoZG91YmxlIHZhbHVlLCBE
YXRlQ29tcG9uZW50cyogZGF0ZSkgY29uc3QKK2Jvb2wgRGF0ZVRpbWVJbnB1dFR5cGU6OnNldE1p
bGxpc2Vjb25kVG9EYXRlQ29tcG9uZW50cyhjb25zdCBEZWNpbWFsJiB2YWx1ZSwgRGF0ZUNvbXBv
bmVudHMqIGRhdGUpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGRhdGUpOwotICAgIHJldHVybiBkYXRl
LT5zZXRNaWxsaXNlY29uZHNTaW5jZUVwb2NoRm9yRGF0ZVRpbWUodmFsdWUpOworICAgIHJldHVy
biBkYXRlLT5zZXRNaWxsaXNlY29uZHNTaW5jZUVwb2NoRm9yRGF0ZVRpbWUoY29udmVydERlY2lt
YWxUb0RvdWJsZSh2YWx1ZSkpOwogfQogCiBib29sIERhdGVUaW1lSW5wdXRUeXBlOjppc0RhdGVU
aW1lRmllbGQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlVGlt
ZUlucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlVGltZUlucHV0VHlwZS5oCmlu
ZGV4IGU4MDg4NmYzMmFiOWRlODU0NDRjMThjODkzNWE5NzFjZDBlNDI3ZWUuLjZlZWMwODZlMGJi
MWI2YzcxOTJhMzZlZTBjYjNmMmFjZTg5MzhkZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRGF0ZVRpbWVJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVU
aW1lSW5wdXRUeXBlLmgKQEAgLTQ2LDkgKzQ2LDkgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGNv
bnN0IEF0b21pY1N0cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3QgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCBEYXRlQ29tcG9uZW50czo6VHlwZSBkYXRlVHlwZSgpIGNvbnN0IE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgU3RlcFJhbmdlIGNyZWF0ZVN0ZXBSYW5nZShBbnlTdGVwSGFuZGxpbmcpIGNv
bnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgZG91YmxlIGRlZmF1bHRWYWx1ZUZvclN0ZXBVcCgp
IGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgRGVjaW1hbCBkZWZhdWx0VmFsdWVGb3JTdGVw
VXAoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgcGFyc2VUb0RhdGVDb21wb25l
bnRzSW50ZXJuYWwoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgsIERhdGVDb21wb25lbnRz
KikgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIHNldE1pbGxpc2Vjb25kVG9EYXRl
Q29tcG9uZW50cyhkb3VibGUsIERhdGVDb21wb25lbnRzKikgY29uc3QgT1ZFUlJJREU7CisgICAg
dmlydHVhbCBib29sIHNldE1pbGxpc2Vjb25kVG9EYXRlQ29tcG9uZW50cyhjb25zdCBEZWNpbWFs
JiwgRGF0ZUNvbXBvbmVudHMqKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgaXNE
YXRlVGltZUZpZWxkKCkgY29uc3QgT1ZFUlJJREU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0RhdGVUaW1lTG9jYWxJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9EYXRlVGltZUxvY2FsSW5wdXRUeXBlLmNwcAppbmRleCBiNjU3MDUwZWRjYWEwMmYyMzA5
NTFhM2I4M2I3MzU0ZmE3NjE1ZTQzLi4zYWNlNTViY2M5YzU3NjhlZDhjZmYxYTZmNDEyNzI0YTg3
OWE3MDBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVUaW1lTG9jYWxJbnB1
dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZVRpbWVMb2NhbElucHV0VHlw
ZS5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJEYXRlQ29tcG9uZW50cy5oIgogI2lu
Y2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNs
dWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAog
I2lmIEVOQUJMRShJTlBVVF9UWVBFX0RBVEVUSU1FTE9DQUwpCkBAIC00Miw5ICs0Myw5IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotc3RhdGlj
IGNvbnN0IGRvdWJsZSBkYXRlVGltZUxvY2FsRGVmYXVsdFN0ZXAgPSA2MC4wOwotc3RhdGljIGNv
bnN0IGRvdWJsZSBkYXRlVGltZUxvY2FsRGVmYXVsdFN0ZXBCYXNlID0gMC4wOwotc3RhdGljIGNv
bnN0IGRvdWJsZSBkYXRlVGltZUxvY2FsU3RlcFNjYWxlRmFjdG9yID0gMTAwMC4wOworc3RhdGlj
IGNvbnN0IGludCBkYXRlVGltZUxvY2FsRGVmYXVsdFN0ZXAgPSA2MDsKK3N0YXRpYyBjb25zdCBp
bnQgZGF0ZVRpbWVMb2NhbERlZmF1bHRTdGVwQmFzZSA9IDA7CitzdGF0aWMgY29uc3QgaW50IGRh
dGVUaW1lTG9jYWxTdGVwU2NhbGVGYWN0b3IgPSAxMDAwOwogCiBQYXNzT3duUHRyPElucHV0VHlw
ZT4gRGF0ZVRpbWVMb2NhbElucHV0VHlwZTo6Y3JlYXRlKEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1l
bnQpCiB7CkBAIC03NywxMCArNzgsMTAgQEAgU3RlcFJhbmdlIERhdGVUaW1lTG9jYWxJbnB1dFR5
cGU6OmNyZWF0ZVN0ZXBSYW5nZShBbnlTdGVwSGFuZGxpbmcgYW55U3RlcEhhbmRsaW4KIHsKICAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0ZXBSYW5nZTo6U3RlcERlc2NyaXB0aW9uLCBz
dGVwRGVzY3JpcHRpb24sIChkYXRlVGltZUxvY2FsRGVmYXVsdFN0ZXAsIGRhdGVUaW1lTG9jYWxE
ZWZhdWx0U3RlcEJhc2UsIGRhdGVUaW1lTG9jYWxTdGVwU2NhbGVGYWN0b3IsIFN0ZXBSYW5nZTo6
U2NhbGVkU3RlcFZhbHVlU2hvdWxkQmVJbnRlZ2VyKSk7CiAKLSAgICBkb3VibGUgc3RlcEJhc2Ug
PSBwYXJzZVRvRG91YmxlKGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShtaW5BdHRyKSwgMCk7
Ci0gICAgZG91YmxlIG1pbmltdW0gPSBwYXJzZVRvRG91YmxlKGVsZW1lbnQoKS0+ZmFzdEdldEF0
dHJpYnV0ZShtaW5BdHRyKSwgRGF0ZUNvbXBvbmVudHM6Om1pbmltdW1EYXRlVGltZSgpKTsKLSAg
ICBkb3VibGUgbWF4aW11bSA9IHBhcnNlVG9Eb3VibGUoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmli
dXRlKG1heEF0dHIpLCBEYXRlQ29tcG9uZW50czo6bWF4aW11bURhdGVUaW1lKCkpOwotICAgIFN0
ZXBSYW5nZTo6RG91YmxlV2l0aERlY2ltYWxQbGFjZXNPck1pc3Npbmcgc3RlcCA9IFN0ZXBSYW5n
ZTo6cGFyc2VTdGVwKGFueVN0ZXBIYW5kbGluZywgc3RlcERlc2NyaXB0aW9uLCBlbGVtZW50KCkt
PmZhc3RHZXRBdHRyaWJ1dGUoc3RlcEF0dHIpKTsKKyAgICBjb25zdCBEZWNpbWFsIHN0ZXBCYXNl
ID0gcGFyc2VUb0RlY2ltYWwoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpLCAw
KTsKKyAgICBjb25zdCBEZWNpbWFsIG1pbmltdW0gPSBwYXJzZVRvRGVjaW1hbChlbGVtZW50KCkt
PmZhc3RHZXRBdHRyaWJ1dGUobWluQXR0ciksIGNvbnZlcnREb3VibGVUb0RlY2ltYWwoRGF0ZUNv
bXBvbmVudHM6Om1pbmltdW1EYXRlVGltZSgpKSk7CisgICAgY29uc3QgRGVjaW1hbCBtYXhpbXVt
ID0gcGFyc2VUb0RlY2ltYWwoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1heEF0dHIpLCBj
b252ZXJ0RG91YmxlVG9EZWNpbWFsKERhdGVDb21wb25lbnRzOjptYXhpbXVtRGF0ZVRpbWUoKSkp
OworICAgIGNvbnN0IFN0ZXBSYW5nZTo6RGVjaW1hbE9yTWlzc2luZyBzdGVwID0gU3RlcFJhbmdl
OjpwYXJzZVN0ZXAoYW55U3RlcEhhbmRsaW5nLCBzdGVwRGVzY3JpcHRpb24sIGVsZW1lbnQoKS0+
ZmFzdEdldEF0dHJpYnV0ZShzdGVwQXR0cikpOwogICAgIHJldHVybiBTdGVwUmFuZ2Uoc3RlcEJh
c2UsIG1pbmltdW0sIG1heGltdW0sIHN0ZXAsIHN0ZXBEZXNjcmlwdGlvbik7CiB9CiAKQEAgLTkx
LDEwICs5MiwxMCBAQCBib29sIERhdGVUaW1lTG9jYWxJbnB1dFR5cGU6OnBhcnNlVG9EYXRlQ29t
cG9uZW50c0ludGVybmFsKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZQogICAgIHJldHVybiBvdXQtPnBh
cnNlRGF0ZVRpbWVMb2NhbChjaGFyYWN0ZXJzLCBsZW5ndGgsIDAsIGVuZCkgJiYgZW5kID09IGxl
bmd0aDsKIH0KIAotYm9vbCBEYXRlVGltZUxvY2FsSW5wdXRUeXBlOjpzZXRNaWxsaXNlY29uZFRv
RGF0ZUNvbXBvbmVudHMoZG91YmxlIHZhbHVlLCBEYXRlQ29tcG9uZW50cyogZGF0ZSkgY29uc3QK
K2Jvb2wgRGF0ZVRpbWVMb2NhbElucHV0VHlwZTo6c2V0TWlsbGlzZWNvbmRUb0RhdGVDb21wb25l
bnRzKGNvbnN0IERlY2ltYWwmIHZhbHVlLCBEYXRlQ29tcG9uZW50cyogZGF0ZSkgY29uc3QKIHsK
ICAgICBBU1NFUlQoZGF0ZSk7Ci0gICAgcmV0dXJuIGRhdGUtPnNldE1pbGxpc2Vjb25kc1NpbmNl
RXBvY2hGb3JEYXRlVGltZUxvY2FsKHZhbHVlKTsKKyAgICByZXR1cm4gZGF0ZS0+c2V0TWlsbGlz
ZWNvbmRzU2luY2VFcG9jaEZvckRhdGVUaW1lTG9jYWwoY29udmVydERlY2ltYWxUb0RvdWJsZSh2
YWx1ZSkpOwogfQogCiBib29sIERhdGVUaW1lTG9jYWxJbnB1dFR5cGU6OmlzRGF0ZVRpbWVMb2Nh
bEZpZWxkKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZVRpbWVM
b2NhbElucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlVGltZUxvY2FsSW5wdXRU
eXBlLmgKaW5kZXggY2E0MGIzNzc0ZDgyOGRmNDQzZmMyZWI5MGE4MWRmMWRiZDkzZGMyMy4uNzY2
NWE4ZWNiMjZlYmE5ZWViYmM1ZDdmNThjYWQ5YzVkY2MwNTRjYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9EYXRlVGltZUxvY2FsSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9EYXRlVGltZUxvY2FsSW5wdXRUeXBlLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHJpdmF0
ZToKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWVBc0RhdGUoZG91YmxlLCBFeGNlcHRpb25Db2Rl
JikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBTdGVwUmFuZ2UgY3JlYXRlU3RlcFJhbmdl
KEFueVN0ZXBIYW5kbGluZykgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHBhcnNlVG9EYXRlQ29t
cG9uZW50c0ludGVybmFsKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoLCBEYXRlQ29tcG9u
ZW50cyopIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBzZXRNaWxsaXNlY29uZFRv
RGF0ZUNvbXBvbmVudHMoZG91YmxlLCBEYXRlQ29tcG9uZW50cyopIGNvbnN0IE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgYm9vbCBzZXRNaWxsaXNlY29uZFRvRGF0ZUNvbXBvbmVudHMoY29uc3QgRGVj
aW1hbCYsIERhdGVDb21wb25lbnRzKikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29s
IGlzRGF0ZVRpbWVMb2NhbEZpZWxkKCkgY29uc3QgT1ZFUlJJREU7CiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCA3MzJjYWI0MWQzODNkNjZlMWY1YzIx
OTY0NWE5YjAzZDI3N2EyOWM5Li5hMTVkNTIwOGRjZmFjNTRjMzJmZTcwMTM0ZjA1ZTE2YTAzNjVh
NmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTI3Myw3
ICsyNzMsNyBAQCBib29sIEhUTUxJbnB1dEVsZW1lbnQ6OnN0ZXBNaXNtYXRjaCgpIGNvbnN0CiAg
ICAgcmV0dXJuIHdpbGxWYWxpZGF0ZSgpICYmIG1faW5wdXRUeXBlLT5zdGVwTWlzbWF0Y2godmFs
dWUoKSk7CiB9CiAKLWJvb2wgSFRNTElucHV0RWxlbWVudDo6Z2V0QWxsb3dlZFZhbHVlU3RlcChk
b3VibGUqIHN0ZXApIGNvbnN0Citib29sIEhUTUxJbnB1dEVsZW1lbnQ6OmdldEFsbG93ZWRWYWx1
ZVN0ZXAoRGVjaW1hbCogc3RlcCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9pbnB1dFR5cGUtPmdl
dEFsbG93ZWRWYWx1ZVN0ZXAoc3RlcCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxJbnB1dEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxl
bWVudC5oCmluZGV4IDU2MTMzNGUyMzZkMjg1YzYyODMxMzVhM2ZmZDU3OGE0ZDczYzNlOGYuLmU3
NGU0MzUzOGJlOWU2ZmM2YzcwYjRmMjllMWI4YWExOThmMDBlODIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTElucHV0RWxlbWVudC5oCkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICBkb3Vi
bGUgbWF4aW11bSgpIGNvbnN0OwogICAgIC8vIFNldHMgdGhlICJhbGxvd2VkIHZhbHVlIHN0ZXAi
IGRlZmluZWQgaW4gdGhlIEhUTUwgc3BlYyB0byB0aGUgc3BlY2lmaWVkIGRvdWJsZSBwb2ludGVy
LgogICAgIC8vIFJldHVybnMgZmFsc2UgaWYgdGhlcmUgaXMgbm8gImFsbG93ZWQgdmFsdWUgc3Rl
cC4iCi0gICAgYm9vbCBnZXRBbGxvd2VkVmFsdWVTdGVwKGRvdWJsZSopIGNvbnN0OworICAgIGJv
b2wgZ2V0QWxsb3dlZFZhbHVlU3RlcChEZWNpbWFsKikgY29uc3Q7CiAgICAgU3RlcFJhbmdlIGNy
ZWF0ZVN0ZXBSYW5nZShBbnlTdGVwSGFuZGxpbmcpIGNvbnN0OwogCiAgICAgLy8gSW1wbGVtZW50
YXRpb25zIG9mIEhUTUxJbnB1dEVsZW1lbnQ6OnN0ZXBVcCgpIGFuZCBzdGVwRG93bigpLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9JbnB1dFR5cGUuY3BwCmluZGV4IDU2YTdhYTEzNzFkNjBiZTE1ZTQ2NjIwNzU4MTEz
N2FlMjc2OTRjZWUuLjUxMDJlYzdlYjc2YTAyMzQ0MmZkNDVkNzc0NmNkMWQ4YWVmNWNhZTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKQEAgLTI1MCwxMSArMjUwLDggQEAgYm9vbCBJbnB1
dFR5cGU6OnJhbmdlVW5kZXJmbG93KGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0CiAgICAgaWYg
KCFpc1N0ZXBwYWJsZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBkb3VibGUgZG91
YmxlVmFsdWUgPSBwYXJzZVRvRG91YmxlKHZhbHVlLCBudW1lcmljX2xpbWl0czxkb3VibGU+Ojpx
dWlldF9OYU4oKSk7Ci0gICAgaWYgKGlzbmFuKGRvdWJsZVZhbHVlKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgcmV0dXJuIGRvdWJsZVZhbHVlIDwgY3JlYXRlU3RlcFJhbmdlKFJlamVj
dEFueSkubWluaW11bSgpOworICAgIGNvbnN0IERlY2ltYWwgbnVtZXJpY1ZhbHVlID0gcGFyc2VU
b0RlY2ltYWwodmFsdWUpOworICAgIHJldHVybiBudW1lcmljVmFsdWUuaXNGaW5pdGUoKSAmJiBu
dW1lcmljVmFsdWUgPCBjcmVhdGVTdGVwUmFuZ2UoUmVqZWN0QW55KS5taW5pbXVtKCk7CiB9CiAK
IGJvb2wgSW5wdXRUeXBlOjpyYW5nZU92ZXJmbG93KGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0
CkBAIC0yNjIsMjYgKzI1OSwyMyBAQCBib29sIElucHV0VHlwZTo6cmFuZ2VPdmVyZmxvdyhjb25z
dCBTdHJpbmcmIHZhbHVlKSBjb25zdAogICAgIGlmICghaXNTdGVwcGFibGUoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgZG91YmxlIGRvdWJsZVZhbHVlID0gcGFyc2VUb0RvdWJsZSh2
YWx1ZSwgbnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCkpOwotICAgIGlmIChpc25h
bihkb3VibGVWYWx1ZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBkb3Vi
bGVWYWx1ZSA+IGNyZWF0ZVN0ZXBSYW5nZShSZWplY3RBbnkpLm1heGltdW0oKTsKKyAgICBjb25z
dCBEZWNpbWFsIG51bWVyaWNWYWx1ZSA9IHBhcnNlVG9EZWNpbWFsKHZhbHVlKTsKKyAgICByZXR1
cm4gbnVtZXJpY1ZhbHVlLmlzRmluaXRlKCkgJiYgbnVtZXJpY1ZhbHVlID4gY3JlYXRlU3RlcFJh
bmdlKFJlamVjdEFueSkubWF4aW11bSgpOwogfQogCi1kb3VibGUgSW5wdXRUeXBlOjpkZWZhdWx0
VmFsdWVGb3JTdGVwVXAoKSBjb25zdAorRGVjaW1hbCBJbnB1dFR5cGU6OmRlZmF1bHRWYWx1ZUZv
clN0ZXBVcCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIDA7CiB9CiAKIGRvdWJsZSBJbnB1dFR5cGU6
Om1pbmltdW0oKSBjb25zdAogewotICAgIHJldHVybiBjcmVhdGVTdGVwUmFuZ2UoUmVqZWN0QW55
KS5taW5pbXVtKCk7CisgICAgcmV0dXJuIGNvbnZlcnREZWNpbWFsVG9Eb3VibGUoY3JlYXRlU3Rl
cFJhbmdlKFJlamVjdEFueSkubWluaW11bSgpKTsKIH0KIAogZG91YmxlIElucHV0VHlwZTo6bWF4
aW11bSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNyZWF0ZVN0ZXBSYW5nZShSZWplY3RBbnkpLm1h
eGltdW0oKTsKKyAgICByZXR1cm4gY29udmVydERlY2ltYWxUb0RvdWJsZShjcmVhdGVTdGVwUmFu
Z2UoUmVqZWN0QW55KS5tYXhpbXVtKCkpOwogfQogCiBib29sIElucHV0VHlwZTo6c2l6ZVNob3Vs
ZEluY2x1ZGVEZWNvcmF0aW9uKGludCwgaW50JiBwcmVmZXJyZWRTaXplKSBjb25zdApAQCAtMjk1
LDEyICsyODksMTIgQEAgYm9vbCBJbnB1dFR5cGU6OmlzSW5SYW5nZShjb25zdCBTdHJpbmcmIHZh
bHVlKSBjb25zdAogICAgIGlmICghaXNTdGVwcGFibGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgZG91YmxlIGRvdWJsZVZhbHVlID0gcGFyc2VUb0RvdWJsZSh2YWx1ZSwgbnVtZXJp
Y19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCkpOwotICAgIGlmIChpc25hbihkb3VibGVWYWx1
ZSkpCisgICAgY29uc3QgRGVjaW1hbCYgbnVtZXJpY1ZhbHVlID0gcGFyc2VUb0RlY2ltYWwodmFs
dWUpOworICAgIGlmICghbnVtZXJpY1ZhbHVlLmlzRmluaXRlKCkpCiAgICAgICAgIHJldHVybiB0
cnVlOwogCi0gICAgU3RlcFJhbmdlIHN0ZXBSYW5nZShjcmVhdGVTdGVwUmFuZ2UoUmVqZWN0QW55
KSk7Ci0gICAgcmV0dXJuIGRvdWJsZVZhbHVlID49IHN0ZXBSYW5nZS5taW5pbXVtKCkgJiYgZG91
YmxlVmFsdWUgPD0gc3RlcFJhbmdlLm1heGltdW0oKTsKKyAgICBjb25zdCBTdGVwUmFuZ2Ugc3Rl
cFJhbmdlKGNyZWF0ZVN0ZXBSYW5nZShSZWplY3RBbnkpKTsKKyAgICByZXR1cm4gbnVtZXJpY1Zh
bHVlID49IHN0ZXBSYW5nZS5taW5pbXVtKCkgJiYgbnVtZXJpY1ZhbHVlIDw9IHN0ZXBSYW5nZS5t
YXhpbXVtKCk7CiB9CiAKIGJvb2wgSW5wdXRUeXBlOjppc091dE9mUmFuZ2UoY29uc3QgU3RyaW5n
JiB2YWx1ZSkgY29uc3QKQEAgLTMwOCwxMiArMzAyLDEyIEBAIGJvb2wgSW5wdXRUeXBlOjppc091
dE9mUmFuZ2UoY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKICAgICBpZiAoIWlzU3RlcHBhYmxl
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGRvdWJsZSBkb3VibGVWYWx1ZSA9IHBh
cnNlVG9Eb3VibGUodmFsdWUsIG51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpKTsK
LSAgICBpZiAoaXNuYW4oZG91YmxlVmFsdWUpKQorICAgIGNvbnN0IERlY2ltYWwmIG51bWVyaWNW
YWx1ZSA9IHBhcnNlVG9EZWNpbWFsKHZhbHVlKTsKKyAgICBpZiAoIW51bWVyaWNWYWx1ZS5pc0Zp
bml0ZSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIFN0ZXBSYW5nZSBzdGVwUmFuZ2Uo
Y3JlYXRlU3RlcFJhbmdlKFJlamVjdEFueSkpOwotICAgIHJldHVybiBkb3VibGVWYWx1ZSA8IHN0
ZXBSYW5nZS5taW5pbXVtKCkgfHwgZG91YmxlVmFsdWUgPiBzdGVwUmFuZ2UubWF4aW11bSgpOwor
ICAgIGNvbnN0IFN0ZXBSYW5nZSBzdGVwUmFuZ2UoY3JlYXRlU3RlcFJhbmdlKFJlamVjdEFueSkp
OworICAgIHJldHVybiBudW1lcmljVmFsdWUgPCBzdGVwUmFuZ2UubWluaW11bSgpIHx8IG51bWVy
aWNWYWx1ZSA+IHN0ZXBSYW5nZS5tYXhpbXVtKCk7CiB9CiAKIGJvb2wgSW5wdXRUeXBlOjpzdGVw
TWlzbWF0Y2goY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKQEAgLTMyMSwxMSArMzE1LDExIEBA
IGJvb2wgSW5wdXRUeXBlOjpzdGVwTWlzbWF0Y2goY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QK
ICAgICBpZiAoIWlzU3RlcHBhYmxlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGRv
dWJsZSBkb3VibGVWYWx1ZSA9IHBhcnNlVG9Eb3VibGUodmFsdWUsIG51bWVyaWNfbGltaXRzPGRv
dWJsZT46OnF1aWV0X05hTigpKTsKLSAgICBpZiAoaXNuYW4oZG91YmxlVmFsdWUpKQorICAgIGNv
bnN0IERlY2ltYWwmIG51bWVyaWNWYWx1ZSA9IHBhcnNlVG9EZWNpbWFsKHZhbHVlKTsKKyAgICBp
ZiAoIW51bWVyaWNWYWx1ZS5pc0Zpbml0ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICByZXR1cm4gY3JlYXRlU3RlcFJhbmdlKFJlamVjdEFueSkuc3RlcE1pc21hdGNoKGRvdWJsZVZh
bHVlKTsKKyAgICByZXR1cm4gY3JlYXRlU3RlcFJhbmdlKFJlamVjdEFueSkuc3RlcE1pc21hdGNo
KG51bWVyaWNWYWx1ZSk7CiB9CiAKIFN0cmluZyBJbnB1dFR5cGU6OnR5cGVNaXNtYXRjaFRleHQo
KSBjb25zdApAQCAtMzU5LDIxICszNTMsMjEgQEAgU3RyaW5nIElucHV0VHlwZTo6dmFsaWRhdGlv
bk1lc3NhZ2UoKSBjb25zdAogICAgIGlmICghaXNTdGVwcGFibGUoKSkKICAgICAgICAgcmV0dXJu
IGVtcHR5U3RyaW5nKCk7CiAKLSAgICBkb3VibGUgZG91YmxlVmFsdWUgPSBwYXJzZVRvRG91Ymxl
KHZhbHVlLCBudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKSk7Ci0gICAgaWYgKGlz
bmFuKGRvdWJsZVZhbHVlKSkKKyAgICBjb25zdCBEZWNpbWFsJiBudW1lcmljVmFsdWUgPSBwYXJz
ZVRvRGVjaW1hbCh2YWx1ZSk7CisgICAgaWYgKCFudW1lcmljVmFsdWUuaXNGaW5pdGUoKSkKICAg
ICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKLSAgICBTdGVwUmFuZ2Ugc3RlcFJhbmdlKGNy
ZWF0ZVN0ZXBSYW5nZShSZWplY3RBbnkpKTsKKyAgICBjb25zdCBTdGVwUmFuZ2Ugc3RlcFJhbmdl
KGNyZWF0ZVN0ZXBSYW5nZShSZWplY3RBbnkpKTsKIAotICAgIGlmIChkb3VibGVWYWx1ZSA8IHN0
ZXBSYW5nZS5taW5pbXVtKCkpCisgICAgaWYgKG51bWVyaWNWYWx1ZSA8IHN0ZXBSYW5nZS5taW5p
bXVtKCkpCiAgICAgICAgIHJldHVybiB2YWxpZGF0aW9uTWVzc2FnZVJhbmdlVW5kZXJmbG93VGV4
dChzZXJpYWxpemUoc3RlcFJhbmdlLm1pbmltdW0oKSkpOwogCi0gICAgaWYgKGRvdWJsZVZhbHVl
IDwgc3RlcFJhbmdlLm1heGltdW0oKSkKKyAgICBpZiAobnVtZXJpY1ZhbHVlIDwgc3RlcFJhbmdl
Lm1heGltdW0oKSkKICAgICAgICAgcmV0dXJuIHZhbGlkYXRpb25NZXNzYWdlUmFuZ2VPdmVyZmxv
d1RleHQoc2VyaWFsaXplKHN0ZXBSYW5nZS5tYXhpbXVtKCkpKTsKIAotICAgIGlmIChzdGVwUmFu
Z2Uuc3RlcE1pc21hdGNoKGRvdWJsZVZhbHVlKSkgeworICAgIGlmIChzdGVwUmFuZ2Uuc3RlcE1p
c21hdGNoKG51bWVyaWNWYWx1ZSkpIHsKICAgICAgICAgY29uc3QgU3RyaW5nIHN0ZXBTdHJpbmcg
PSBzdGVwUmFuZ2UuaGFzU3RlcCgpID8gc2VyaWFsaXplRm9yTnVtYmVyVHlwZShzdGVwUmFuZ2Uu
c3RlcCgpIC8gc3RlcFJhbmdlLnN0ZXBTY2FsZUZhY3RvcigpKSA6IGVtcHR5U3RyaW5nKCk7Ci0g
ICAgICAgIHJldHVybiB2YWxpZGF0aW9uTWVzc2FnZVN0ZXBNaXNtYXRjaFRleHQoc2VyaWFsaXpl
KHN0ZXBSYW5nZS5zdGVwQmFzZSgpKSwgc3RlcFN0cmluZyk7CisgICAgICAgIHJldHVybiB2YWxp
ZGF0aW9uTWVzc2FnZVN0ZXBNaXNtYXRjaFRleHQoc2VyaWFsaXplRm9yTnVtYmVyVHlwZShzdGVw
UmFuZ2Uuc3RlcEJhc2UoKSksIHN0ZXBTdHJpbmcpOwogICAgIH0KIAogICAgIHJldHVybiBlbXB0
eVN0cmluZygpOwpAQCAtNDUyLDE3ICs0NDYsMTUgQEAgdm9pZCBJbnB1dFR5cGU6OmRlc3Ryb3lT
aGFkb3dTdWJ0cmVlKCkKICAgICB9CiB9CiAKLWRvdWJsZSBJbnB1dFR5cGU6OnBhcnNlVG9Eb3Vi
bGUoY29uc3QgU3RyaW5nJiwgZG91YmxlIGRlZmF1bHRWYWx1ZSkgY29uc3QKK0RlY2ltYWwgSW5w
dXRUeXBlOjpwYXJzZVRvRGVjaW1hbChjb25zdCBTdHJpbmcmLCBjb25zdCBEZWNpbWFsJiBkZWZh
dWx0VmFsdWUpIGNvbnN0CiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJu
IGRlZmF1bHRWYWx1ZTsKIH0KIAotZG91YmxlIElucHV0VHlwZTo6cGFyc2VUb0RvdWJsZVdpdGhE
ZWNpbWFsUGxhY2VzKGNvbnN0IFN0cmluZyYgc3JjLCBkb3VibGUgZGVmYXVsdFZhbHVlLCB1bnNp
Z25lZCAqZGVjaW1hbFBsYWNlcykgY29uc3QKK0RlY2ltYWwgSW5wdXRUeXBlOjpwYXJzZVRvRGVj
aW1hbChjb25zdCBTdHJpbmcmIHN0cmluZykgY29uc3QKIHsKLSAgICBpZiAoZGVjaW1hbFBsYWNl
cykKLSAgICAgICAgKmRlY2ltYWxQbGFjZXMgPSAwOwotICAgIHJldHVybiBwYXJzZVRvRG91Ymxl
KHNyYywgZGVmYXVsdFZhbHVlKTsKKyAgICByZXR1cm4gcGFyc2VUb0RlY2ltYWwoc3RyaW5nLCBE
ZWNpbWFsOjpuYW4oKSk7CiB9CiAKIGJvb2wgSW5wdXRUeXBlOjpwYXJzZVRvRGF0ZUNvbXBvbmVu
dHMoY29uc3QgU3RyaW5nJiwgRGF0ZUNvbXBvbmVudHMqKSBjb25zdApAQCAtNDcxLDcgKzQ2Myw3
IEBAIGJvb2wgSW5wdXRUeXBlOjpwYXJzZVRvRGF0ZUNvbXBvbmVudHMoY29uc3QgU3RyaW5nJiwg
RGF0ZUNvbXBvbmVudHMqKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotU3RyaW5nIElu
cHV0VHlwZTo6c2VyaWFsaXplKGRvdWJsZSkgY29uc3QKK1N0cmluZyBJbnB1dFR5cGU6OnNlcmlh
bGl6ZShjb25zdCBEZWNpbWFsJikgY29uc3QKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICByZXR1cm4gU3RyaW5nKCk7CkBAIC04NTgsMjggKzg1MCwyNiBAQCB1bnNpZ25lZCBJbnB1
dFR5cGU6OndpZHRoKCkgY29uc3QKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBJbnB1dFR5cGU6
OmFwcGx5U3RlcChkb3VibGUgY291bnQsIEFueVN0ZXBIYW5kbGluZyBhbnlTdGVwSGFuZGxpbmcs
IFRleHRGaWVsZEV2ZW50QmVoYXZpb3IgZXZlbnRCZWhhdmlvciwgRXhjZXB0aW9uQ29kZSYgZWMp
Cit2b2lkIElucHV0VHlwZTo6YXBwbHlTdGVwKGludCBjb3VudCwgQW55U3RlcEhhbmRsaW5nIGFu
eVN0ZXBIYW5kbGluZywgVGV4dEZpZWxkRXZlbnRCZWhhdmlvciBldmVudEJlaGF2aW9yLCBFeGNl
cHRpb25Db2RlJiBlYykKIHsKLSAgICBTdGVwUmFuZ2Ugc3RlcFJhbmdlKGNyZWF0ZVN0ZXBSYW5n
ZShhbnlTdGVwSGFuZGxpbmcpKTsKKyAgICBjb25zdCBTdGVwUmFuZ2Ugc3RlcFJhbmdlKGNyZWF0
ZVN0ZXBSYW5nZShhbnlTdGVwSGFuZGxpbmcpKTsKICAgICBpZiAoIXN0ZXBSYW5nZS5oYXNTdGVw
KCkpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIGNvbnN0IGRvdWJsZSBuYW4gPSBudW1lcmljX2xpbWl0czxkb3VibGU+Ojpx
dWlldF9OYU4oKTsKLSAgICB1bnNpZ25lZCBjdXJyZW50RGVjaW1hbFBsYWNlczsKLSAgICBkb3Vi
bGUgY3VycmVudCA9IHBhcnNlVG9Eb3VibGVXaXRoRGVjaW1hbFBsYWNlcyhlbGVtZW50KCktPnZh
bHVlKCksIG5hbiwgJmN1cnJlbnREZWNpbWFsUGxhY2VzKTsKLSAgICBpZiAoIWlzZmluaXRlKGN1
cnJlbnQpKSB7CisgICAgY29uc3QgRGVjaW1hbCBjdXJyZW50ID0gcGFyc2VUb0RlY2ltYWwoZWxl
bWVudCgpLT52YWx1ZSgpKTsKKyAgICBpZiAoIWN1cnJlbnQuaXNGaW5pdGUoKSkgewogICAgICAg
ICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGRv
dWJsZSBuZXdWYWx1ZSA9IGN1cnJlbnQgKyBzdGVwUmFuZ2Uuc3RlcCgpICogY291bnQ7Ci0gICAg
aWYgKGlzaW5mKG5ld1ZhbHVlKSkgeworICAgIERlY2ltYWwgbmV3VmFsdWUgPSBjdXJyZW50ICsg
c3RlcFJhbmdlLnN0ZXAoKSAqIGNvdW50OworICAgIGlmICghbmV3VmFsdWUuaXNGaW5pdGUoKSkg
ewogICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgZG91YmxlIGFjY2VwdGFibGVFcnJvclZhbHVlID0gc3RlcFJhbmdlLmFjY2VwdGFi
bGVFcnJvcigpOworICAgIGNvbnN0IERlY2ltYWwgYWNjZXB0YWJsZUVycm9yVmFsdWUgPSBzdGVw
UmFuZ2UuYWNjZXB0YWJsZUVycm9yKCk7CiAgICAgaWYgKG5ld1ZhbHVlIC0gc3RlcFJhbmdlLm1p
bmltdW0oKSA8IC1hY2NlcHRhYmxlRXJyb3JWYWx1ZSkgewogICAgICAgICBlYyA9IElOVkFMSURf
U1RBVEVfRVJSOwogICAgICAgICByZXR1cm47CkBAIC04ODksNyArODc5LDcgQEAgdm9pZCBJbnB1
dFR5cGU6OmFwcGx5U3RlcChkb3VibGUgY291bnQsIEFueVN0ZXBIYW5kbGluZyBhbnlTdGVwSGFu
ZGxpbmcsIFRleHRGaWUKIAogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgc3RlcFN0cmluZyA9IGVs
ZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShzdGVwQXR0cik7CiAgICAgaWYgKCFlcXVhbElnbm9y
aW5nQ2FzZShzdGVwU3RyaW5nLCAiYW55IikpCi0gICAgICAgIG5ld1ZhbHVlID0gc3RlcFJhbmdl
LmFsaWduVmFsdWVGb3JTdGVwKGN1cnJlbnQsIGN1cnJlbnREZWNpbWFsUGxhY2VzLCBuZXdWYWx1
ZSk7CisgICAgICAgIG5ld1ZhbHVlID0gc3RlcFJhbmdlLmFsaWduVmFsdWVGb3JTdGVwKGN1cnJl
bnQsIG5ld1ZhbHVlKTsKIAogICAgIGlmIChuZXdWYWx1ZSAtIHN0ZXBSYW5nZS5tYXhpbXVtKCkg
PiBhY2NlcHRhYmxlRXJyb3JWYWx1ZSkgewogICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJS
OwpAQCAtODk4LDEzICs4ODgsMTMgQEAgdm9pZCBJbnB1dFR5cGU6OmFwcGx5U3RlcChkb3VibGUg
Y291bnQsIEFueVN0ZXBIYW5kbGluZyBhbnlTdGVwSGFuZGxpbmcsIFRleHRGaWUKICAgICBpZiAo
bmV3VmFsdWUgPiBzdGVwUmFuZ2UubWF4aW11bSgpKQogICAgICAgICBuZXdWYWx1ZSA9IHN0ZXBS
YW5nZS5tYXhpbXVtKCk7CiAKLSAgICBlbGVtZW50KCktPnNldFZhbHVlQXNOdW1iZXIobmV3VmFs
dWUsIGVjLCBldmVudEJlaGF2aW9yKTsKKyAgICBlbGVtZW50KCktPnNldFZhbHVlQXNOdW1iZXIo
Y29udmVydERlY2ltYWxUb0RvdWJsZShuZXdWYWx1ZSksIGVjLCBldmVudEJlaGF2aW9yKTsKIAog
ICAgIGlmIChBWE9iamVjdENhY2hlOjphY2Nlc3NpYmlsaXR5RW5hYmxlZCgpKQogICAgICAgICAg
ZWxlbWVudCgpLT5kb2N1bWVudCgpLT5heE9iamVjdENhY2hlKCktPnBvc3ROb3RpZmljYXRpb24o
ZWxlbWVudCgpLT5yZW5kZXJlcigpLCBBWE9iamVjdENhY2hlOjpBWFZhbHVlQ2hhbmdlZCwgdHJ1
ZSk7CiB9CiAKLWJvb2wgSW5wdXRUeXBlOjpnZXRBbGxvd2VkVmFsdWVTdGVwKGRvdWJsZSogc3Rl
cCkgY29uc3QKK2Jvb2wgSW5wdXRUeXBlOjpnZXRBbGxvd2VkVmFsdWVTdGVwKERlY2ltYWwqIHN0
ZXApIGNvbnN0CiB7CiAgICAgU3RlcFJhbmdlIHN0ZXBSYW5nZShjcmVhdGVTdGVwUmFuZ2UoUmVq
ZWN0QW55KSk7CiAgICAgKnN0ZXAgPSBzdGVwUmFuZ2Uuc3RlcCgpOwpAQCAtOTcwLDE0ICs5NjAs
MTQgQEAgdm9pZCBJbnB1dFR5cGU6OnN0ZXBVcEZyb21SZW5kZXJlcihpbnQgbikKICAgICBpZiAo
IW4pCiAgICAgICAgIHJldHVybjsKIAotICAgIFN0ZXBSYW5nZSBzdGVwUmFuZ2UoY3JlYXRlU3Rl
cFJhbmdlKEFueUlzRGVmYXVsdFN0ZXApKTsKKyAgICBjb25zdCBTdGVwUmFuZ2Ugc3RlcFJhbmdl
KGNyZWF0ZVN0ZXBSYW5nZShBbnlJc0RlZmF1bHRTdGVwKSk7CiAKICAgICAvLyBGSVhNRTogTm90
IGFueSBjaGFuZ2VzIGFmdGVyIHN0ZXBwaW5nLCBldmVuIGlmIGl0IGlzIGFuIGludmFsaWQgdmFs
dWUsIG1heSBiZSBiZXR0ZXIuCiAgICAgLy8gKGUuZy4gU3RlcHBpbmctdXAgZm9yIDxpbnB1dCB0
eXBlPSJudW1iZXIiIHZhbHVlPSJmb28iIHN0ZXA9ImFueSIgLz4gPT4gImZvbyIpCiAgICAgaWYg
KCFzdGVwUmFuZ2UuaGFzU3RlcCgpKQogICAgICAgcmV0dXJuOwogCi0gICAgZG91YmxlIHN0ZXAg
PSBzdGVwUmFuZ2Uuc3RlcCgpOworICAgIGNvbnN0IERlY2ltYWwgc3RlcCA9IHN0ZXBSYW5nZS5z
dGVwKCk7CiAKICAgICBpbnQgc2lnbjsKICAgICBpZiAoc3RlcCA+IDApCkBAIC05ODcsMzMgKzk3
NywyOSBAQCB2b2lkIElucHV0VHlwZTo6c3RlcFVwRnJvbVJlbmRlcmVyKGludCBuKQogICAgIGVs
c2UKICAgICAgICAgc2lnbiA9IDA7CiAKLSAgICBjb25zdCBkb3VibGUgbmFuID0gbnVtZXJpY19s
aW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCk7Ci0gICAgU3RyaW5nIGN1cnJlbnRTdHJpbmdWYWx1
ZSA9IGVsZW1lbnQoKS0+dmFsdWUoKTsKLSAgICBkb3VibGUgY3VycmVudCA9IHBhcnNlVG9Eb3Vi
bGUoY3VycmVudFN0cmluZ1ZhbHVlLCBuYW4pOwotICAgIGlmICghaXNmaW5pdGUoY3VycmVudCkp
IHsKKyAgICBEZWNpbWFsIGN1cnJlbnQgPSBwYXJzZVRvRGVjaW1hbChlbGVtZW50KCktPnZhbHVl
KCkpOworICAgIGlmICghY3VycmVudC5pc0Zpbml0ZSgpKSB7CiAgICAgICAgIEV4Y2VwdGlvbkNv
ZGUgZWM7CiAgICAgICAgIGN1cnJlbnQgPSBkZWZhdWx0VmFsdWVGb3JTdGVwVXAoKTsKLSAgICAg
ICAgZG91YmxlIG5leHREaWZmID0gc3RlcCAqIG47CisgICAgICAgIGNvbnN0IERlY2ltYWwgbmV4
dERpZmYgPSBzdGVwICogbjsKICAgICAgICAgaWYgKGN1cnJlbnQgPCBzdGVwUmFuZ2UubWluaW11
bSgpIC0gbmV4dERpZmYpCiAgICAgICAgICAgICBjdXJyZW50ID0gc3RlcFJhbmdlLm1pbmltdW0o
KSAtIG5leHREaWZmOwogICAgICAgICBpZiAoY3VycmVudCA+IHN0ZXBSYW5nZS5tYXhpbXVtKCkg
LSBuZXh0RGlmZikKICAgICAgICAgICAgIGN1cnJlbnQgPSBzdGVwUmFuZ2UubWF4aW11bSgpIC0g
bmV4dERpZmY7Ci0gICAgICAgIGVsZW1lbnQoKS0+c2V0VmFsdWVBc051bWJlcihjdXJyZW50LCBl
YywgRGlzcGF0Y2hJbnB1dEFuZENoYW5nZUV2ZW50KTsKKyAgICAgICAgZWxlbWVudCgpLT5zZXRW
YWx1ZUFzTnVtYmVyKGNvbnZlcnREZWNpbWFsVG9Eb3VibGUoY3VycmVudCksIGVjLCBEaXNwYXRj
aElucHV0QW5kQ2hhbmdlRXZlbnQpOwogICAgIH0KICAgICBpZiAoKHNpZ24gPiAwICYmIGN1cnJl
bnQgPCBzdGVwUmFuZ2UubWluaW11bSgpKSB8fCAoc2lnbiA8IDAgJiYgY3VycmVudCA+IHN0ZXBS
YW5nZS5tYXhpbXVtKCkpKQotICAgICAgICBlbGVtZW50KCktPnNldFZhbHVlKHNlcmlhbGl6ZShz
aWduID4gMCA/IHN0ZXBSYW5nZS5taW5pbXVtKCkgOiBzdGVwUmFuZ2UubWF4aW11bSgpKSwgRGlz
cGF0Y2hJbnB1dEFuZENoYW5nZUV2ZW50KTsKKyAgICAgICAgZWxlbWVudCgpLT5zZXRWYWx1ZShz
ZXJpYWxpemVGb3JOdW1iZXJUeXBlKHNpZ24gPiAwID8gc3RlcFJhbmdlLm1pbmltdW0oKSA6IHN0
ZXBSYW5nZS5tYXhpbXVtKCkpLCBEaXNwYXRjaElucHV0QW5kQ2hhbmdlRXZlbnQpOwogICAgIGVs
c2UgewogICAgICAgICBFeGNlcHRpb25Db2RlIGVjOwogICAgICAgICBpZiAoc3RlcE1pc21hdGNo
KGVsZW1lbnQoKS0+dmFsdWUoKSkpIHsKLSAgICAgICAgICAgIEFTU0VSVChzdGVwKTsKLSAgICAg
ICAgICAgIGRvdWJsZSBuZXdWYWx1ZTsKLSAgICAgICAgICAgIGRvdWJsZSBzY2FsZSA9IHBvdygx
MC4wLCBzdGF0aWNfY2FzdDxkb3VibGU+KG1heChzdGVwUmFuZ2Uuc3RlcERlY2ltYWxQbGFjZXMo
KSwgc3RlcFJhbmdlLnN0ZXBCYXNlRGVjaW1hbFBsYWNlcygpKSkpOwotICAgICAgICAgICAgZG91
YmxlIGJhc2UgPSBzdGVwUmFuZ2Uuc3RlcEJhc2UoKTsKLQorICAgICAgICAgICAgQVNTRVJUKCFz
dGVwLmlzWmVybygpKTsKKyAgICAgICAgICAgIGNvbnN0IERlY2ltYWwgYmFzZSA9IHN0ZXBSYW5n
ZS5zdGVwQmFzZSgpOworICAgICAgICAgICAgRGVjaW1hbCBuZXdWYWx1ZTsKICAgICAgICAgICAg
IGlmIChzaWduIDwgMCkKLSAgICAgICAgICAgICAgICBuZXdWYWx1ZSA9IHJvdW5kKChiYXNlICsg
Zmxvb3IoKGN1cnJlbnQgLSBiYXNlKSAvIHN0ZXApICogc3RlcCkgKiBzY2FsZSkgLyBzY2FsZTsK
KyAgICAgICAgICAgICAgICBuZXdWYWx1ZSA9IGJhc2UgKyAoKGN1cnJlbnQgLSBiYXNlKSAvIHN0
ZXApLmZsb29yKCkgKiBzdGVwOwogICAgICAgICAgICAgZWxzZSBpZiAoc2lnbiA+IDApCi0gICAg
ICAgICAgICAgICAgbmV3VmFsdWUgPSByb3VuZCgoYmFzZSArIGNlaWwoKGN1cnJlbnQgLSBiYXNl
KSAvIHN0ZXApICogc3RlcCkgKiBzY2FsZSkgLyBzY2FsZTsKKyAgICAgICAgICAgICAgICBuZXdW
YWx1ZSA9IGJhc2UgKyAoKGN1cnJlbnQgLSBiYXNlKSAvIHN0ZXApLmNlaWxpbmcoKSAqIHN0ZXA7
CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgbmV3VmFsdWUgPSBjdXJyZW50Owog
CkBAIC0xMDIyLDggKzEwMDgsNyBAQCB2b2lkIElucHV0VHlwZTo6c3RlcFVwRnJvbVJlbmRlcmVy
KGludCBuKQogICAgICAgICAgICAgaWYgKG5ld1ZhbHVlID4gc3RlcFJhbmdlLm1heGltdW0oKSkK
ICAgICAgICAgICAgICAgICBuZXdWYWx1ZSA9IHN0ZXBSYW5nZS5tYXhpbXVtKCk7CiAKLSAgICAg
ICAgICAgIGVsZW1lbnQoKS0+c2V0VmFsdWVBc051bWJlcihuZXdWYWx1ZSwgZWMsIG4gPT0gMSB8
fCBuID09IC0xID8gRGlzcGF0Y2hJbnB1dEFuZENoYW5nZUV2ZW50IDogRGlzcGF0Y2hOb0V2ZW50
KTsKLSAgICAgICAgICAgIGN1cnJlbnQgPSBuZXdWYWx1ZTsKKyAgICAgICAgICAgIGVsZW1lbnQo
KS0+c2V0VmFsdWVBc051bWJlcihjb252ZXJ0RGVjaW1hbFRvRG91YmxlKG5ld1ZhbHVlKSwgZWMs
IG4gPT0gMSB8fCBuID09IC0xID8gRGlzcGF0Y2hJbnB1dEFuZENoYW5nZUV2ZW50IDogRGlzcGF0
Y2hOb0V2ZW50KTsKICAgICAgICAgICAgIGlmIChuID4gMSkKICAgICAgICAgICAgICAgICBhcHBs
eVN0ZXAobiAtIDEsIEFueUlzRGVmYXVsdFN0ZXAsIERpc3BhdGNoSW5wdXRBbmRDaGFuZ2VFdmVu
dCwgZWMpOwogICAgICAgICAgICAgZWxzZSBpZiAobiA8IC0xKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBl
LmgKaW5kZXggNTQxNjdmM2U0NTljOWFmM2Y0MWQzOWQ3YjFmOGIyMjQwYWM2MDMwMi4uNTRmYTBh
ZjRjMzM4M2MzNDY3OGZiODU1ZmY4ZWI2N2E2YTRmOGYzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9JbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlw
ZS5oCkBAIC0xNTUsMTIgKzE1NSwxMiBAQCBwdWJsaWM6CiAgICAgYm9vbCByYW5nZU92ZXJmbG93
KGNvbnN0IFN0cmluZyYpIGNvbnN0OwogICAgIGJvb2wgaXNJblJhbmdlKGNvbnN0IFN0cmluZyYp
IGNvbnN0OwogICAgIGJvb2wgaXNPdXRPZlJhbmdlKGNvbnN0IFN0cmluZyYpIGNvbnN0OwotICAg
IHZpcnR1YWwgZG91YmxlIGRlZmF1bHRWYWx1ZUZvclN0ZXBVcCgpIGNvbnN0OworICAgIHZpcnR1
YWwgRGVjaW1hbCBkZWZhdWx0VmFsdWVGb3JTdGVwVXAoKSBjb25zdDsKICAgICBkb3VibGUgbWlu
aW11bSgpIGNvbnN0OwogICAgIGRvdWJsZSBtYXhpbXVtKCkgY29uc3Q7CiAgICAgdmlydHVhbCBi
b29sIHNpemVTaG91bGRJbmNsdWRlRGVjb3JhdGlvbihpbnQgZGVmYXVsdFNpemUsIGludCYgcHJl
ZmVycmVkU2l6ZSkgY29uc3Q7CiAgICAgYm9vbCBzdGVwTWlzbWF0Y2goY29uc3QgU3RyaW5nJikg
Y29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGdldEFsbG93ZWRWYWx1ZVN0ZXAoZG91YmxlKikgY29u
c3Q7CisgICAgdmlydHVhbCBib29sIGdldEFsbG93ZWRWYWx1ZVN0ZXAoRGVjaW1hbCopIGNvbnN0
OwogICAgIHZpcnR1YWwgU3RlcFJhbmdlIGNyZWF0ZVN0ZXBSYW5nZShBbnlTdGVwSGFuZGxpbmcp
IGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBzdGVwVXAoaW50LCBFeGNlcHRpb25Db2RlJik7CiAg
ICAgdmlydHVhbCB2b2lkIHN0ZXBVcEZyb21SZW5kZXJlcihpbnQpOwpAQCAtMjU4LDE1ICsyNTgs
MTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIGRlZmF1bHRUb29sVGlwKCkgY29uc3Q7
CiAKICAgICAvLyBQYXJzZXMgdGhlIHNwZWNpZmllZCBzdHJpbmcgZm9yIHRoZSB0eXBlLCBhbmQg
cmV0dXJuCi0gICAgLy8gdGhlIGRvdWJsZSB2YWx1ZSBmb3IgdGhlIHBhcnNpbmcgcmVzdWx0IGlm
IHRoZSBwYXJzaW5nCisgICAgLy8gdGhlIGRlY2ltYWwgdmFsdWUgZm9yIHRoZSBwYXJzaW5nIHJl
c3VsdCBpZiB0aGUgcGFyc2luZwogICAgIC8vIHN1Y2NlZWRzOyBSZXR1cm5zIGRlZmF1bHRWYWx1
ZSBvdGhlcndpc2UuIFRoaXMgZnVuY3Rpb24gY2FuCiAgICAgLy8gcmV0dXJuIE5hTiBvciBJbmZp
bml0eSBvbmx5IGlmIGRlZmF1bHRWYWx1ZSBpcyBOYU4gb3IgSW5maW5pdHkuCi0gICAgdmlydHVh
bCBkb3VibGUgcGFyc2VUb0RvdWJsZShjb25zdCBTdHJpbmcmLCBkb3VibGUgZGVmYXVsdFZhbHVl
KSBjb25zdDsKLQotICAgIC8vIFBhcnNlcyB0aGUgc3BlY2lmaWVkIHN0cmluZyBmb3IgdGhlIHR5
cGUgYXMgcGFyc2VUb0RvdWJsZSgpIGRvZXMuCi0gICAgLy8gSW4gYWRkaXRpb24sIGl0IHN0b3Jl
cyB0aGUgbnVtYmVyIG9mIGRpZ2l0cyBhZnRlciB0aGUgZGVjaW1hbCBwb2ludAotICAgIC8vIGlu
dG8gKmRlY2ltYWxQbGFjZXMuCi0gICAgdmlydHVhbCBkb3VibGUgcGFyc2VUb0RvdWJsZVdpdGhE
ZWNpbWFsUGxhY2VzKGNvbnN0IFN0cmluZyYsIGRvdWJsZSBkZWZhdWx0VmFsdWUsIHVuc2lnbmVk
KiBkZWNpbWFsUGxhY2VzKSBjb25zdDsKKyAgICB2aXJ0dWFsIERlY2ltYWwgcGFyc2VUb0RlY2lt
YWwoY29uc3QgU3RyaW5nJiwgY29uc3QgRGVjaW1hbCYgZGVmYXVsdFZhbHVlKSBjb25zdDsKIAog
ICAgIC8vIFBhcnNlcyB0aGUgc3BlY2lmaWVkIHN0cmluZyBmb3IgdGhpcyBJbnB1dFR5cGUsIGFu
ZCByZXR1cm5zIHRydWUgaWYgaXQKICAgICAvLyBpcyBzdWNjZXNzZnVsbHkgcGFyc2VkLiBBbiBp
bnN0YW5jZSBwb2ludGVkIGJ5IHRoZSBEYXRlQ29tcG9uZW50cyoKQEAgLTI3Nyw3ICsyNzIsNyBA
QCBwdWJsaWM6CiAgICAgLy8gQ3JlYXRlIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBz
cGVjaWZpZWQgZG91YmxlIHZhbHVlIGZvciB0aGUKICAgICAvLyBpbnB1dCB0eXBlLiBJZiBOYU4g
b3IgSW5maW5pdHkgaXMgc3BlY2lmaWVkLCB0aGlzIHJldHVybnMgYW4gZW1wdHkKICAgICAvLyBz
dHJpbmcuIFRoaXMgc2hvdWxkIG5vdCBiZSBjYWxsZWQgZm9yIHR5cGVzIHdpdGhvdXQgdmFsdWVB
c051bWJlci4KLSAgICB2aXJ0dWFsIFN0cmluZyBzZXJpYWxpemUoZG91YmxlKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIFN0cmluZyBzZXJpYWxpemUoY29uc3QgRGVjaW1hbCYpIGNvbnN0OwogCiAgICAg
dmlydHVhbCBib29sIHN1cHBvcnRzSW5kZXRlcm1pbmF0ZUFwcGVhcmFuY2UoKSBjb25zdDsKIApA
QCAtMjkxLDEwICsyODYsMTEgQEAgcHJvdGVjdGVkOgogICAgIEhUTUxJbnB1dEVsZW1lbnQqIGVs
ZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnQ7IH0KICAgICB2b2lkIGRpc3BhdGNoU2lt
dWxhdGVkQ2xpY2tJZkFjdGl2ZShLZXlib2FyZEV2ZW50KikgY29uc3Q7CiAgICAgQ2hyb21lKiBj
aHJvbWUoKSBjb25zdDsKKyAgICBEZWNpbWFsIHBhcnNlVG9EZWNpbWFsKGNvbnN0IFN0cmluZyYp
IGNvbnN0OwogCiBwcml2YXRlOgogICAgIC8vIEhlbHBlciBmb3Igc3RlcFVwKCkvc3RlcERvd24o
KS4gQWRkcyBzdGVwIHZhbHVlICogY291bnQgdG8gdGhlIGN1cnJlbnQgdmFsdWUuCi0gICAgdm9p
ZCBhcHBseVN0ZXAoZG91YmxlIGNvdW50LCBBbnlTdGVwSGFuZGxpbmcsIFRleHRGaWVsZEV2ZW50
QmVoYXZpb3IsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIGFwcGx5U3RlcChpbnQgY291bnQs
IEFueVN0ZXBIYW5kbGluZywgVGV4dEZpZWxkRXZlbnRCZWhhdmlvciwgRXhjZXB0aW9uQ29kZSYp
OwogCiAgICAgLy8gUmF3IHBvaW50ZXIgYmVjYXVzZSB0aGUgSFRNTElucHV0RWxlbWVudCBvYmpl
Y3Qgb3ducyB0aGlzIElucHV0VHlwZSBvYmplY3QuCiAgICAgSFRNTElucHV0RWxlbWVudCogbV9l
bGVtZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Nb250aElucHV0VHlwZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01vbnRoSW5wdXRUeXBlLmNwcAppbmRleCBlYmRlM2Iy
MDUxYTZhMmQ5Y2Q0ODQ4MDYwOTU3YmI2MzAxMzlkM2EyLi42ZTI4ODFhOGQ5NTNhZDYzMmExZTRm
MjZiYjY5ODQyNmM3ZDNlNGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01vbnRo
SW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01vbnRoSW5wdXRUeXBlLmNw
cApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkRhdGVDb21wb25lbnRzLmgiCiAjaW5jbHVk
ZSAiSFRNTElucHV0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUg
IkhUTUxQYXJzZXJJZGlvbXMuaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNs
dWRlIDx3dGYvRGF0ZU1hdGguaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgpAQCAtNDUs
OSArNDYsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFt
ZXM7CiAKLXN0YXRpYyBjb25zdCBkb3VibGUgbW9udGhEZWZhdWx0U3RlcCA9IDEuMDsKLXN0YXRp
YyBjb25zdCBkb3VibGUgbW9udGhEZWZhdWx0U3RlcEJhc2UgPSAwLjA7Ci1zdGF0aWMgY29uc3Qg
ZG91YmxlIG1vbnRoU3RlcFNjYWxlRmFjdG9yID0gMS4wOworc3RhdGljIGNvbnN0IGludCBtb250
aERlZmF1bHRTdGVwID0gMTsKK3N0YXRpYyBjb25zdCBpbnQgbW9udGhEZWZhdWx0U3RlcEJhc2Ug
PSAwOworc3RhdGljIGNvbnN0IGludCBtb250aFN0ZXBTY2FsZUZhY3RvciA9IDE7CiAKIFBhc3NP
d25QdHI8SW5wdXRUeXBlPiBNb250aElucHV0VHlwZTo6Y3JlYXRlKEhUTUxJbnB1dEVsZW1lbnQq
IGVsZW1lbnQpCiB7CkBAIC03NCwxNSArNzUsMTUgQEAgZG91YmxlIE1vbnRoSW5wdXRUeXBlOjp2
YWx1ZUFzRGF0ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1zZWM7CiB9CiAKLVN0cmluZyBNb250aElu
cHV0VHlwZTo6c2VyaWFsaXplV2l0aE1pbGxpc2Vjb25kcyhkb3VibGUgdmFsdWUpIGNvbnN0CitT
dHJpbmcgTW9udGhJbnB1dFR5cGU6OnNlcmlhbGl6ZVdpdGhNaWxsaXNlY29uZHMoY29uc3QgRGVj
aW1hbCYgdmFsdWUpIGNvbnN0CiB7CiAgICAgRGF0ZUNvbXBvbmVudHMgZGF0ZTsKLSAgICBpZiAo
IWRhdGUuc2V0TWlsbGlzZWNvbmRzU2luY2VFcG9jaEZvck1vbnRoKHZhbHVlKSkKKyAgICBpZiAo
IWRhdGUuc2V0TWlsbGlzZWNvbmRzU2luY2VFcG9jaEZvck1vbnRoKGNvbnZlcnREZWNpbWFsVG9E
b3VibGUodmFsdWUpKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIHJldHVybiBzZXJp
YWxpemVXaXRoQ29tcG9uZW50cyhkYXRlKTsKIH0KIAotZG91YmxlIE1vbnRoSW5wdXRUeXBlOjpk
ZWZhdWx0VmFsdWVGb3JTdGVwVXAoKSBjb25zdAorRGVjaW1hbCBNb250aElucHV0VHlwZTo6ZGVm
YXVsdFZhbHVlRm9yU3RlcFVwKCkgY29uc3QKIHsKICAgICBkb3VibGUgY3VycmVudCA9IGN1cnJl
bnRUaW1lTVMoKTsKICAgICBkb3VibGUgdXRjT2Zmc2V0ID0gY2FsY3VsYXRlVVRDT2Zmc2V0KCk7
CkBAIC05NCwyOCArOTUsMjggQEAgZG91YmxlIE1vbnRoSW5wdXRUeXBlOjpkZWZhdWx0VmFsdWVG
b3JTdGVwVXAoKSBjb25zdAogICAgIGRhdGUuc2V0TWlsbGlzZWNvbmRzU2luY2VFcG9jaEZvck1v
bnRoKGN1cnJlbnQpOwogICAgIGRvdWJsZSBtb250aHMgPSBkYXRlLm1vbnRoc1NpbmNlRXBvY2go
KTsKICAgICBBU1NFUlQoaXNmaW5pdGUobW9udGhzKSk7Ci0gICAgcmV0dXJuIG1vbnRoczsKKyAg
ICByZXR1cm4gY29udmVydERvdWJsZVRvRGVjaW1hbChtb250aHMpOwogfQogCiBTdGVwUmFuZ2Ug
TW9udGhJbnB1dFR5cGU6OmNyZWF0ZVN0ZXBSYW5nZShBbnlTdGVwSGFuZGxpbmcgYW55U3RlcEhh
bmRsaW5nKSBjb25zdAogewogICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RlcFJhbmdl
OjpTdGVwRGVzY3JpcHRpb24sIHN0ZXBEZXNjcmlwdGlvbiwgKG1vbnRoRGVmYXVsdFN0ZXAsIG1v
bnRoRGVmYXVsdFN0ZXBCYXNlLCBtb250aFN0ZXBTY2FsZUZhY3RvciwgU3RlcFJhbmdlOjpQYXJz
ZWRTdGVwVmFsdWVTaG91bGRCZUludGVnZXIpKTsKIAotICAgIGRvdWJsZSBzdGVwQmFzZSA9IHBh
cnNlVG9Eb3VibGUoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpLCBEYXRlQ29t
cG9uZW50czo6bWluaW11bU1vbnRoKCkpOwotICAgIGRvdWJsZSBtaW5pbXVtID0gcGFyc2VUb0Rv
dWJsZShlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUobWluQXR0ciksIERhdGVDb21wb25lbnRz
OjptaW5pbXVtTW9udGgoKSk7Ci0gICAgZG91YmxlIG1heGltdW0gPSBwYXJzZVRvRG91YmxlKGVs
ZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShtYXhBdHRyKSwgRGF0ZUNvbXBvbmVudHM6Om1heGlt
dW1Nb250aCgpKTsKLSAgICBTdGVwUmFuZ2U6OkRvdWJsZVdpdGhEZWNpbWFsUGxhY2VzT3JNaXNz
aW5nIHN0ZXAgPSBTdGVwUmFuZ2U6OnBhcnNlU3RlcChhbnlTdGVwSGFuZGxpbmcsIHN0ZXBEZXNj
cmlwdGlvbiwgZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKHN0ZXBBdHRyKSk7CisgICAgY29u
c3QgRGVjaW1hbCBzdGVwQmFzZSA9IHBhcnNlVG9EZWNpbWFsKGVsZW1lbnQoKS0+ZmFzdEdldEF0
dHJpYnV0ZShtaW5BdHRyKSwgY29udmVydERvdWJsZVRvRGVjaW1hbChEYXRlQ29tcG9uZW50czo6
bWluaW11bU1vbnRoKCkpKTsKKyAgICBjb25zdCBEZWNpbWFsIG1pbmltdW0gPSBzdGVwQmFzZTsK
KyAgICBjb25zdCBEZWNpbWFsIG1heGltdW0gPSBwYXJzZVRvRGVjaW1hbChlbGVtZW50KCktPmZh
c3RHZXRBdHRyaWJ1dGUobWF4QXR0ciksIGNvbnZlcnREb3VibGVUb0RlY2ltYWwoRGF0ZUNvbXBv
bmVudHM6Om1heGltdW1Nb250aCgpKSk7CisgICAgY29uc3QgU3RlcFJhbmdlOjpEZWNpbWFsT3JN
aXNzaW5nIHN0ZXAgPSBTdGVwUmFuZ2U6OnBhcnNlU3RlcChhbnlTdGVwSGFuZGxpbmcsIHN0ZXBE
ZXNjcmlwdGlvbiwgZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKHN0ZXBBdHRyKSk7CiAgICAg
cmV0dXJuIFN0ZXBSYW5nZShzdGVwQmFzZSwgbWluaW11bSwgbWF4aW11bSwgc3RlcCwgc3RlcERl
c2NyaXB0aW9uKTsKIH0KIAotZG91YmxlIE1vbnRoSW5wdXRUeXBlOjpwYXJzZVRvRG91YmxlKGNv
bnN0IFN0cmluZyYgc3JjLCBkb3VibGUgZGVmYXVsdFZhbHVlKSBjb25zdAorRGVjaW1hbCBNb250
aElucHV0VHlwZTo6cGFyc2VUb0RlY2ltYWwoY29uc3QgU3RyaW5nJiBzcmMsIGNvbnN0IERlY2lt
YWwmIGRlZmF1bHRWYWx1ZSkgY29uc3QKIHsKICAgICBEYXRlQ29tcG9uZW50cyBkYXRlOwogICAg
IGlmICghcGFyc2VUb0RhdGVDb21wb25lbnRzKHNyYywgJmRhdGUpKQogICAgICAgICByZXR1cm4g
ZGVmYXVsdFZhbHVlOwogICAgIGRvdWJsZSBtb250aHMgPSBkYXRlLm1vbnRoc1NpbmNlRXBvY2go
KTsKICAgICBBU1NFUlQoaXNmaW5pdGUobW9udGhzKSk7Ci0gICAgcmV0dXJuIG1vbnRoczsKKyAg
ICByZXR1cm4gY29udmVydERvdWJsZVRvRGVjaW1hbChtb250aHMpOwogfQogCiBib29sIE1vbnRo
SW5wdXRUeXBlOjpwYXJzZVRvRGF0ZUNvbXBvbmVudHNJbnRlcm5hbChjb25zdCBVQ2hhciogY2hh
cmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBEYXRlQ29tcG9uZW50cyogb3V0KSBjb25zdApAQCAt
MTI1LDEwICsxMjYsMTAgQEAgYm9vbCBNb250aElucHV0VHlwZTo6cGFyc2VUb0RhdGVDb21wb25l
bnRzSW50ZXJuYWwoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2kKICAgICByZXR1cm4gb3V0
LT5wYXJzZU1vbnRoKGNoYXJhY3RlcnMsIGxlbmd0aCwgMCwgZW5kKSAmJiBlbmQgPT0gbGVuZ3Ro
OwogfQogCi1ib29sIE1vbnRoSW5wdXRUeXBlOjpzZXRNaWxsaXNlY29uZFRvRGF0ZUNvbXBvbmVu
dHMoZG91YmxlIHZhbHVlLCBEYXRlQ29tcG9uZW50cyogZGF0ZSkgY29uc3QKK2Jvb2wgTW9udGhJ
bnB1dFR5cGU6OnNldE1pbGxpc2Vjb25kVG9EYXRlQ29tcG9uZW50cyhjb25zdCBEZWNpbWFsJiB2
YWx1ZSwgRGF0ZUNvbXBvbmVudHMqIGRhdGUpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGRhdGUpOwot
ICAgIHJldHVybiBkYXRlLT5zZXRNb250aHNTaW5jZUVwb2NoKHZhbHVlKTsKKyAgICByZXR1cm4g
ZGF0ZS0+c2V0TW9udGhzU2luY2VFcG9jaChjb252ZXJ0RGVjaW1hbFRvRG91YmxlKHZhbHVlKSk7
CiB9CiAKIGJvb2wgTW9udGhJbnB1dFR5cGU6OmlzTW9udGhGaWVsZCgpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01vbnRoSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL01vbnRoSW5wdXRUeXBlLmgKaW5kZXggZDA3YjAxYmNiNmFhYTE5NTcxZGUyYzhmMTFl
NjM4YmFkMDFiYjA1MS4uOGM1MzU3ZThhYTVhOTU5MjgzNjBhMWNhNjc4OTdkNDc2MWU1ZDNjNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Nb250aElucHV0VHlwZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvTW9udGhJbnB1dFR5cGUuaApAQCAtNDYsMTIgKzQ2LDEyIEBAIHBy
aXZhdGU6CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGZvcm1Db250cm9sVHlwZSgp
IGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgRGF0ZUNvbXBvbmVudHM6OlR5cGUgZGF0ZVR5
cGUoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGRvdWJsZSB2YWx1ZUFzRGF0ZSgpIGNv
bnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgU3RyaW5nIHNlcmlhbGl6ZVdpdGhNaWxsaXNlY29u
ZHMoZG91YmxlKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGRvdWJsZSBwYXJzZVRvRG91
YmxlKGNvbnN0IFN0cmluZyYsIGRvdWJsZSkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBk
b3VibGUgZGVmYXVsdFZhbHVlRm9yU3RlcFVwKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVh
bCBTdHJpbmcgc2VyaWFsaXplV2l0aE1pbGxpc2Vjb25kcyhjb25zdCBEZWNpbWFsJikgY29uc3Qg
T1ZFUlJJREU7CisgICAgdmlydHVhbCBEZWNpbWFsIHBhcnNlVG9EZWNpbWFsKGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IERlY2ltYWwmKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIERlY2ltYWwg
ZGVmYXVsdFZhbHVlRm9yU3RlcFVwKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBTdGVw
UmFuZ2UgY3JlYXRlU3RlcFJhbmdlKEFueVN0ZXBIYW5kbGluZykgY29uc3QgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCBib29sIHBhcnNlVG9EYXRlQ29tcG9uZW50c0ludGVybmFsKGNvbnN0IFVDaGFy
KiwgdW5zaWduZWQgbGVuZ3RoLCBEYXRlQ29tcG9uZW50cyopIGNvbnN0IE9WRVJSSURFOwotICAg
IHZpcnR1YWwgYm9vbCBzZXRNaWxsaXNlY29uZFRvRGF0ZUNvbXBvbmVudHMoZG91YmxlLCBEYXRl
Q29tcG9uZW50cyopIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBzZXRNaWxsaXNl
Y29uZFRvRGF0ZUNvbXBvbmVudHMoY29uc3QgRGVjaW1hbCYsIERhdGVDb21wb25lbnRzKikgY29u
c3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGlzTW9udGhGaWVsZCgpIGNvbnN0IE9WRVJS
SURFOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9OdW1iZXJJbnB1dFR5
cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9OdW1iZXJJbnB1dFR5cGUuY3BwCmluZGV4IDk0
MWQyNTJkNGMyZGEyMGUyZmIwMGI1ZDhhOGE2OWJmMjk5ZjViZTAuLjBjYjNkMGFlMjkyNGEzODlm
OWE1MWUxNTE3YzYyMTk4MGQ0NDEzN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
TnVtYmVySW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL051bWJlcklucHV0
VHlwZS5jcHAKQEAgLTUwLDIzICs1MCwyOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBu
YW1lc3BhY2UgSFRNTE5hbWVzOwogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAotc3RhdGljIGNvbnN0
IGRvdWJsZSBudW1iZXJEZWZhdWx0U3RlcCA9IDEuMDsKLXN0YXRpYyBjb25zdCBkb3VibGUgbnVt
YmVyRGVmYXVsdFN0ZXBCYXNlID0gMC4wOwotc3RhdGljIGNvbnN0IGRvdWJsZSBudW1iZXJTdGVw
U2NhbGVGYWN0b3IgPSAxLjA7CitzdGF0aWMgY29uc3QgaW50IG51bWJlckRlZmF1bHRTdGVwID0g
MTsKK3N0YXRpYyBjb25zdCBpbnQgbnVtYmVyRGVmYXVsdFN0ZXBCYXNlID0gMDsKK3N0YXRpYyBj
b25zdCBpbnQgbnVtYmVyU3RlcFNjYWxlRmFjdG9yID0gMTsKIAotc3RhdGljIHVuc2lnbmVkIGxl
bmd0aEJlZm9yZURlY2ltYWxQb2ludChkb3VibGUgdmFsdWUpCitzdGF0aWMgdW5zaWduZWQgY2Fs
Y3VsYXRlUmVuZGVyU2l6ZShjb25zdCBEZWNpbWFsJiB2YWx1ZSkKIHsKLSAgICAvLyBJZiB2YWx1
ZSBpcyBuZWdhdGl2ZSwgJy0nIHNob3VsZCBiZSBjb3VudGVkLgotCi0gICAgZG91YmxlIGFic29s
dXRlVmFsdWUgPSBmYWJzKHZhbHVlKTsKLSAgICBpZiAoYWJzb2x1dGVWYWx1ZSA8IDEpCi0gICAg
ICAgIHJldHVybiB2YWx1ZSA8IDAgPyAyIDogMTsKLQotICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihsb2cxMChmbG9vcihhYnNvbHV0ZVZhbHVlKSkpICsgMTsKLSAg
ICBpZiAodmFsdWUgPCAwKQotICAgICAgICBsZW5ndGggKz0gMTsKKyAgICBBU1NFUlQodmFsdWUu
aXNGaW5pdGUoKSk7CisgICAgY29uc3QgdW5zaWduZWQgZGlnaXRzU2l6ZSA9IFN0cmluZzo6bnVt
YmVyKHZhbHVlLnZhbHVlKCkuY29lZmZpY2llbnQoKSkubGVuZ3RoKCk7CisgICAgY29uc3QgdW5z
aWduZWQgc2lnblNpemUgPSB2YWx1ZS5pc01pbnVzKCkgPyAxIDogMDsKKyAgICBpZiAoIXZhbHVl
LmV4cG9uZW50KCkpCisgICAgICAgIHJldHVybiBzaWduU2l6ZSArIGRpZ2l0c1NpemU7CisgICAg
Y29uc3QgaW50IGFkanVzdGVkRXhwb25lbnQgPSB2YWx1ZS5leHBvbmVudCgpICsgZGlnaXRzU2l6
ZSAtIDE7CisgICAgaWYgKGFkanVzdGVkRXhwb25lbnQgPj0gMCkgeworICAgICAgICAvLyBJbiBj
YXNlIG9mICIxMjMuNDU2IgorICAgICAgICBjb25zdCB1bnNpZ25lZCBkb3RTaXplID0gMTsKKyAg
ICAgICAgcmV0dXJuIHNpZ25TaXplICsgZGlnaXRzU2l6ZSArIGRvdFNpemU7CisgICAgfQogCi0g
ICAgcmV0dXJuIGxlbmd0aDsKKyAgICAvLyBJbiBjYXNlIG9mICIwLjAwMDEyMzQ1IgorICAgIGNv
bnN0IHVuc2lnbmVkIGxlYWRpbmdaZXJvQW5kRG90ID0gMjsKKyAgICBjb25zdCB1bnNpZ25lZCBu
dW1iZXJPZlplcm9BZnRlckRvdCA9IC1hZGp1c3RlZEV4cG9uZW50IC0gMTsKKyAgICByZXR1cm4g
c2lnblNpemUgKyBsZWFkaW5nWmVyb0FuZERvdCArIG51bWJlck9mWmVyb0FmdGVyRG90ICsgZGln
aXRzU2l6ZTsKIH0KIAogUGFzc093blB0cjxJbnB1dFR5cGU+IE51bWJlcklucHV0VHlwZTo6Y3Jl
YXRlKEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQpCkBAIC04MSw3ICs4Niw3IEBAIGNvbnN0IEF0
b21pY1N0cmluZyYgTnVtYmVySW5wdXRUeXBlOjpmb3JtQ29udHJvbFR5cGUoKSBjb25zdAogCiBk
b3VibGUgTnVtYmVySW5wdXRUeXBlOjp2YWx1ZUFzTnVtYmVyKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gcGFyc2VUb0RvdWJsZShlbGVtZW50KCktPnZhbHVlKCksIG51bWVyaWNfbGltaXRzPGRvdWJs
ZT46OnF1aWV0X05hTigpKTsKKyAgICByZXR1cm4gcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUo
ZWxlbWVudCgpLT52YWx1ZSgpKTsKIH0KIAogdm9pZCBOdW1iZXJJbnB1dFR5cGU6OnNldFZhbHVl
QXNOdW1iZXIoZG91YmxlIG5ld1ZhbHVlLCBUZXh0RmllbGRFdmVudEJlaGF2aW9yIGV2ZW50QmVo
YXZpb3IsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdApAQCAtOTQsNyArOTksNyBAQCB2b2lkIE51
bWJlcklucHV0VHlwZTo6c2V0VmFsdWVBc051bWJlcihkb3VibGUgbmV3VmFsdWUsIFRleHRGaWVs
ZEV2ZW50QmVoYXZpb3IgZQogICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwogICAgICAg
ICByZXR1cm47CiAgICAgfQotICAgIGVsZW1lbnQoKS0+c2V0VmFsdWUoc2VyaWFsaXplKG5ld1Zh
bHVlKSwgZXZlbnRCZWhhdmlvcik7CisgICAgZWxlbWVudCgpLT5zZXRWYWx1ZShzZXJpYWxpemVG
b3JOdW1iZXJUeXBlKG5ld1ZhbHVlKSwgZXZlbnRCZWhhdmlvcik7CiB9CiAKIGJvb2wgTnVtYmVy
SW5wdXRUeXBlOjp0eXBlTWlzbWF0Y2hGb3IoY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKQEAg
LTExMSwxNCArMTE2LDExIEBAIGJvb2wgTnVtYmVySW5wdXRUeXBlOjp0eXBlTWlzbWF0Y2goKSBj
b25zdAogU3RlcFJhbmdlIE51bWJlcklucHV0VHlwZTo6Y3JlYXRlU3RlcFJhbmdlKEFueVN0ZXBI
YW5kbGluZyBhbnlTdGVwSGFuZGxpbmcpIGNvbnN0CiB7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChjb25zdCBTdGVwUmFuZ2U6OlN0ZXBEZXNjcmlwdGlvbiwgc3RlcERlc2NyaXB0aW9uLCAobnVt
YmVyRGVmYXVsdFN0ZXAsIG51bWJlckRlZmF1bHRTdGVwQmFzZSwgbnVtYmVyU3RlcFNjYWxlRmFj
dG9yKSk7Ci0KLSAgICB1bnNpZ25lZCBzdGVwQmFzZURlY2ltYWxQbGFjZXM7Ci0gICAgZG91Ymxl
IHN0ZXBCYXNlVmFsdWUgPSBwYXJzZVRvRG91YmxlV2l0aERlY2ltYWxQbGFjZXMoZWxlbWVudCgp
LT5mYXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpLCBudW1iZXJEZWZhdWx0U3RlcEJhc2UsICZzdGVw
QmFzZURlY2ltYWxQbGFjZXMpOwotICAgIFN0ZXBSYW5nZTo6RG91YmxlV2l0aERlY2ltYWxQbGFj
ZXMgc3RlcEJhc2Uoc3RlcEJhc2VWYWx1ZSwgbWluKHN0ZXBCYXNlRGVjaW1hbFBsYWNlcywgMTZ1
KSk7Ci0gICAgZG91YmxlIG1pbmltdW0gPSBwYXJzZVRvRG91YmxlKGVsZW1lbnQoKS0+ZmFzdEdl
dEF0dHJpYnV0ZShtaW5BdHRyKSwgLW51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4KCkpOwotICAg
IGRvdWJsZSBtYXhpbXVtID0gcGFyc2VUb0RvdWJsZShlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1
dGUobWF4QXR0ciksIG51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4KCkpOwotCi0gICAgU3RlcFJh
bmdlOjpEb3VibGVXaXRoRGVjaW1hbFBsYWNlc09yTWlzc2luZyBzdGVwID0gU3RlcFJhbmdlOjpw
YXJzZVN0ZXAoYW55U3RlcEhhbmRsaW5nLCBzdGVwRGVzY3JpcHRpb24sIGVsZW1lbnQoKS0+ZmFz
dEdldEF0dHJpYnV0ZShzdGVwQXR0cikpOworICAgIGNvbnN0IERlY2ltYWwgZmxvYXRNYXggPSBj
b252ZXJ0RG91YmxlVG9EZWNpbWFsKG51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4KCkpOworICAg
IGNvbnN0IERlY2ltYWwgc3RlcEJhc2UgPSBwYXJzZVRvRGVjaW1hbEZvck51bWJlclR5cGUoZWxl
bWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpLCBudW1iZXJEZWZhdWx0U3RlcEJhc2Up
OworICAgIGNvbnN0IERlY2ltYWwgbWluaW11bSA9IHBhcnNlVG9EZWNpbWFsRm9yTnVtYmVyVHlw
ZShlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUobWluQXR0ciksIC1mbG9hdE1heCk7CisgICAg
Y29uc3QgRGVjaW1hbCBtYXhpbXVtID0gcGFyc2VUb0RlY2ltYWxGb3JOdW1iZXJUeXBlKGVsZW1l
bnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShtYXhBdHRyKSwgZmxvYXRNYXgpOworICAgIGNvbnN0IFN0
ZXBSYW5nZTo6RGVjaW1hbE9yTWlzc2luZyBzdGVwID0gU3RlcFJhbmdlOjpwYXJzZVN0ZXAoYW55
U3RlcEhhbmRsaW5nLCBzdGVwRGVzY3JpcHRpb24sIGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0
ZShzdGVwQXR0cikpOwogICAgIHJldHVybiBTdGVwUmFuZ2Uoc3RlcEJhc2UsIG1pbmltdW0sIG1h
eGltdW0sIHN0ZXAsIHN0ZXBEZXNjcmlwdGlvbik7CiB9CiAKQEAgLTEyNiw0NyArMTI4LDE5IEBA
IGJvb2wgTnVtYmVySW5wdXRUeXBlOjpzaXplU2hvdWxkSW5jbHVkZURlY29yYXRpb24oaW50IGRl
ZmF1bHRTaXplLCBpbnQmIHByZWZlcnJlCiB7CiAgICAgcHJlZmVycmVkU2l6ZSA9IGRlZmF1bHRT
aXplOwogCi0gICAgdW5zaWduZWQgbWluVmFsdWVEZWNpbWFsUGxhY2VzOwotICAgIFN0cmluZyBt
aW5WYWx1ZSA9IGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShtaW5BdHRyKTsKLSAgICBkb3Vi
bGUgbWluVmFsdWVEb3VibGUgPSBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZVdpdGhEZWNpbWFs
UGxhY2VzKG1pblZhbHVlLCAmbWluVmFsdWVEZWNpbWFsUGxhY2VzKTsKLSAgICBpZiAoIWlzZmlu
aXRlKG1pblZhbHVlRG91YmxlKSkKKyAgICBTdHJpbmcgc3RlcFN0cmluZyA9IGVsZW1lbnQoKS0+
ZmFzdEdldEF0dHJpYnV0ZShzdGVwQXR0cik7CisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHN0
ZXBTdHJpbmcsICJhbnkiKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgdW5zaWduZWQg
bWF4VmFsdWVEZWNpbWFsUGxhY2VzOwotICAgIFN0cmluZyBtYXhWYWx1ZSA9IGVsZW1lbnQoKS0+
ZmFzdEdldEF0dHJpYnV0ZShtYXhBdHRyKTsKLSAgICBkb3VibGUgbWF4VmFsdWVEb3VibGUgPSBw
YXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZVdpdGhEZWNpbWFsUGxhY2VzKG1heFZhbHVlLCAmbWF4
VmFsdWVEZWNpbWFsUGxhY2VzKTsKLSAgICBpZiAoIWlzZmluaXRlKG1heFZhbHVlRG91YmxlKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKG1heFZhbHVlRG91YmxlIDwgbWluVmFs
dWVEb3VibGUpIHsKLSAgICAgICAgbWF4VmFsdWVEb3VibGUgPSBtaW5WYWx1ZURvdWJsZTsKLSAg
ICAgICAgbWF4VmFsdWVEZWNpbWFsUGxhY2VzID0gbWluVmFsdWVEZWNpbWFsUGxhY2VzOwotICAg
IH0KLQotICAgIFN0cmluZyBzdGVwVmFsdWUgPSBlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUo
c3RlcEF0dHIpOwotICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShzdGVwVmFsdWUsICJhbnkiKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHVuc2lnbmVkIHN0ZXBWYWx1ZURlY2ltYWxQbGFj
ZXM7Ci0gICAgZG91YmxlIHN0ZXBWYWx1ZURvdWJsZSA9IHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJU
eXBlV2l0aERlY2ltYWxQbGFjZXMoc3RlcFZhbHVlLCAmc3RlcFZhbHVlRGVjaW1hbFBsYWNlcyk7
Ci0gICAgaWYgKCFpc2Zpbml0ZShzdGVwVmFsdWVEb3VibGUpKSB7Ci0gICAgICAgIHN0ZXBWYWx1
ZURvdWJsZSA9IDE7Ci0gICAgICAgIHN0ZXBWYWx1ZURlY2ltYWxQbGFjZXMgPSAwOworICAgIGNv
bnN0IERlY2ltYWwgbWluaW11bSA9IHBhcnNlVG9EZWNpbWFsRm9yTnVtYmVyVHlwZShlbGVtZW50
KCktPmZhc3RHZXRBdHRyaWJ1dGUobWluQXR0cikpOworICAgIGNvbnN0IERlY2ltYWwgbWF4aW11
bSA9IHBhcnNlVG9EZWNpbWFsRm9yTnVtYmVyVHlwZShlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1
dGUobWF4QXR0cikpOworICAgIGNvbnN0IERlY2ltYWwgc3RlcCA9IHBhcnNlVG9EZWNpbWFsRm9y
TnVtYmVyVHlwZShzdGVwU3RyaW5nLCAxKTsKKyAgICBpZiAobWluaW11bS5pc0Zpbml0ZSgpICYm
IG1heGltdW0uaXNGaW5pdGUoKSAmJiBzdGVwLmlzRmluaXRlKCkpIHsKKyAgICAgICAgcHJlZmVy
cmVkU2l6ZSA9IG1heChtYXgoY2FsY3VsYXRlUmVuZGVyU2l6ZShtaW5pbXVtKSwgY2FsY3VsYXRl
UmVuZGVyU2l6ZShtYXhpbXVtKSksIGNhbGN1bGF0ZVJlbmRlclNpemUoc3RlcCkpOworICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICB1bnNpZ25lZCBsZW5ndGggPSBsZW5ndGhCZWZv
cmVEZWNpbWFsUG9pbnQobWluVmFsdWVEb3VibGUpOwotICAgIGxlbmd0aCA9IG1heChsZW5ndGgs
IGxlbmd0aEJlZm9yZURlY2ltYWxQb2ludChtYXhWYWx1ZURvdWJsZSkpOwotICAgIGxlbmd0aCA9
IG1heChsZW5ndGgsIGxlbmd0aEJlZm9yZURlY2ltYWxQb2ludChzdGVwVmFsdWVEb3VibGUpKTsK
LQotICAgIHVuc2lnbmVkIGxlbmd0aEFmdGVyRGVjaW1hbFBvaW50ID0gbWluVmFsdWVEZWNpbWFs
UGxhY2VzOwotICAgIGxlbmd0aEFmdGVyRGVjaW1hbFBvaW50ID0gbWF4KGxlbmd0aEFmdGVyRGVj
aW1hbFBvaW50LCBtYXhWYWx1ZURlY2ltYWxQbGFjZXMpOwotICAgIGxlbmd0aEFmdGVyRGVjaW1h
bFBvaW50ID0gbWF4KGxlbmd0aEFmdGVyRGVjaW1hbFBvaW50LCBzdGVwVmFsdWVEZWNpbWFsUGxh
Y2VzKTsKLQotICAgIC8vICcuJyBzaG91bGQgYmUgY291bnRlZCBpZiB0aGUgdmFsdWUgaGFzIGRl
Y2ltYWwgcGxhY2VzLgotICAgIGlmIChsZW5ndGhBZnRlckRlY2ltYWxQb2ludCA+IDApCi0gICAg
ICAgIGxlbmd0aCArPSBsZW5ndGhBZnRlckRlY2ltYWxQb2ludCArIDE7Ci0KLSAgICBwcmVmZXJy
ZWRTaXplID0gbGVuZ3RoOwotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBmYWxzZTsKIH0K
IAogYm9vbCBOdW1iZXJJbnB1dFR5cGU6OmlzU3RlcHBhYmxlKCkgY29uc3QKQEAgLTE4NiwyMSAr
MTYwLDE0IEBAIHZvaWQgTnVtYmVySW5wdXRUeXBlOjpoYW5kbGVXaGVlbEV2ZW50KFdoZWVsRXZl
bnQqIGV2ZW50KQogICAgIGhhbmRsZVdoZWVsRXZlbnRGb3JTcGluQnV0dG9uKGV2ZW50KTsKIH0K
IAotZG91YmxlIE51bWJlcklucHV0VHlwZTo6cGFyc2VUb0RvdWJsZShjb25zdCBTdHJpbmcmIHNy
YywgZG91YmxlIGRlZmF1bHRWYWx1ZSkgY29uc3QKLXsKLSAgICByZXR1cm4gcGFyc2VUb0RvdWJs
ZUZvck51bWJlclR5cGUoc3JjLCBkZWZhdWx0VmFsdWUpOwotfQotCi1kb3VibGUgTnVtYmVySW5w
dXRUeXBlOjpwYXJzZVRvRG91YmxlV2l0aERlY2ltYWxQbGFjZXMoY29uc3QgU3RyaW5nJiBzcmMs
IGRvdWJsZSBkZWZhdWx0VmFsdWUsIHVuc2lnbmVkICpkZWNpbWFsUGxhY2VzKSBjb25zdAorRGVj
aW1hbCBOdW1iZXJJbnB1dFR5cGU6OnBhcnNlVG9EZWNpbWFsKGNvbnN0IFN0cmluZyYgc3RyaW5n
LCBjb25zdCBEZWNpbWFsJiBkZWZhdWx0VmFsdWUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHBhcnNl
VG9Eb3VibGVGb3JOdW1iZXJUeXBlV2l0aERlY2ltYWxQbGFjZXMoc3JjLCBkZWNpbWFsUGxhY2Vz
LCBkZWZhdWx0VmFsdWUpOworICAgIHJldHVybiBwYXJzZVRvRGVjaW1hbEZvck51bWJlclR5cGUo
c3RyaW5nLCBkZWZhdWx0VmFsdWUpOwogfQogCi1TdHJpbmcgTnVtYmVySW5wdXRUeXBlOjpzZXJp
YWxpemUoZG91YmxlIHZhbHVlKSBjb25zdAorU3RyaW5nIE51bWJlcklucHV0VHlwZTo6c2VyaWFs
aXplKGNvbnN0IERlY2ltYWwmIHZhbHVlKSBjb25zdAogewotICAgIGlmICghaXNmaW5pdGUodmFs
dWUpKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgcmV0dXJuIHNlcmlhbGl6ZUZvck51
bWJlclR5cGUodmFsdWUpOworICAgIHJldHVybiB2YWx1ZS5pc0Zpbml0ZSgpID8gc2VyaWFsaXpl
Rm9yTnVtYmVyVHlwZSh2YWx1ZSkgOiBlbXB0eVN0cmluZygpOwogfQogCiB2b2lkIE51bWJlcklu
cHV0VHlwZTo6aGFuZGxlQmx1ckV2ZW50KCkKQEAgLTIyNiwxMyArMTkzLDcgQEAgU3RyaW5nIE51
bWJlcklucHV0VHlwZTo6dmlzaWJsZVZhbHVlKCkgY29uc3QKICAgICAvLyBXZSBkb24ndCBsb2Nh
bGl6ZSBzY2llbnRpZmljIG5vdGF0aW9ucy4KICAgICBpZiAoY3VycmVudFZhbHVlLmZpbmQoaXNF
KSAhPSBub3RGb3VuZCkKICAgICAgICAgcmV0dXJuIGN1cnJlbnRWYWx1ZTsKLSAgICAvLyBGSVhN
RTogVGhlIGZvbGxvd2luZyB0aHJlZSBsaW5lcyBzaG91bGQgYmUgcmVtb3ZlZCB3aGVuIHdlCi0g
ICAgLy8gcmVtb3ZlIHRoZSBzZWNvbmQgYXJndW1lbnQgb2YgY29udmVydFRvTG9jYWxpemVkTnVt
YmVyKCkuCi0gICAgLy8gTm90ZTogcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGVXaXRoRGVjaW1h
bFBsYWNlcyBzZXQgemVybyB0byBkZWNpbWFsUGxhY2VzCi0gICAgLy8gaWYgY3VycmVudFZhbHVl
IGlzbid0IHZhbGlkIGZsb2F0aW5nIHBvaW50ZXIgbnVtYmVyLgotICAgIHVuc2lnbmVkIGRlY2lt
YWxQbGFjZTsKLSAgICBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZVdpdGhEZWNpbWFsUGxhY2Vz
KGN1cnJlbnRWYWx1ZSwgJmRlY2ltYWxQbGFjZSk7Ci0gICAgcmV0dXJuIGNvbnZlcnRUb0xvY2Fs
aXplZE51bWJlcihjdXJyZW50VmFsdWUsIGRlY2ltYWxQbGFjZSk7CisgICAgcmV0dXJuIGNvbnZl
cnRUb0xvY2FsaXplZE51bWJlcihjdXJyZW50VmFsdWUsIDApOwogfQogCiBTdHJpbmcgTnVtYmVy
SW5wdXRUeXBlOjpjb252ZXJ0RnJvbVZpc2libGVWYWx1ZShjb25zdCBTdHJpbmcmIHZpc2libGVW
YWx1ZSkgY29uc3QKQEAgLTI0OCw3ICsyMDksNyBAQCBTdHJpbmcgTnVtYmVySW5wdXRUeXBlOjpj
b252ZXJ0RnJvbVZpc2libGVWYWx1ZShjb25zdCBTdHJpbmcmIHZpc2libGVWYWx1ZSkgY29ucwog
Ym9vbCBOdW1iZXJJbnB1dFR5cGU6OmlzQWNjZXB0YWJsZVZhbHVlKGNvbnN0IFN0cmluZyYgcHJv
cG9zZWRWYWx1ZSkKIHsKICAgICBTdHJpbmcgc3RhbmRhcmRWYWx1ZSA9IGNvbnZlcnRGcm9tVmlz
aWJsZVZhbHVlKHByb3Bvc2VkVmFsdWUpOwotICAgIHJldHVybiBzdGFuZGFyZFZhbHVlLmlzRW1w
dHkoKSB8fCBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZShzdGFuZGFyZFZhbHVlLCAwKTsKKyAg
ICByZXR1cm4gc3RhbmRhcmRWYWx1ZS5pc0VtcHR5KCkgfHwgcGFyc2VUb0RlY2ltYWxGb3JOdW1i
ZXJUeXBlKHN0YW5kYXJkVmFsdWUpLmlzRmluaXRlKCk7CiB9CiAKIFN0cmluZyBOdW1iZXJJbnB1
dFR5cGU6OnNhbml0aXplVmFsdWUoY29uc3QgU3RyaW5nJiBwcm9wb3NlZFZhbHVlKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9OdW1iZXJJbnB1dFR5cGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvTnVtYmVySW5wdXRUeXBlLmgKaW5kZXggMDFiZGRlZTQ4MTU3ZGVjYWM0
OTMwOWI5NDY3NzE2MDMzYWYwZWY5Yi4uY2Y2OTA4MTIzN2I0MzBlOTgyOGM0MTEwYTY3ODU2YTMw
YmIxMTU3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9OdW1iZXJJbnB1dFR5cGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL051bWJlcklucHV0VHlwZS5oCkBAIC01MSw5ICs1
MSw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBTdGVwUmFuZ2UgY3JlYXRlU3RlcFJhbmdlKEFu
eVN0ZXBIYW5kbGluZykgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUtl
eWRvd25FdmVudChLZXlib2FyZEV2ZW50KikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGhh
bmRsZVdoZWVsRXZlbnQoV2hlZWxFdmVudCopIE9WRVJSSURFOwotICAgIHZpcnR1YWwgZG91Ymxl
IHBhcnNlVG9Eb3VibGUoY29uc3QgU3RyaW5nJiwgZG91YmxlKSBjb25zdCBPVkVSUklERTsKLSAg
ICB2aXJ0dWFsIGRvdWJsZSBwYXJzZVRvRG91YmxlV2l0aERlY2ltYWxQbGFjZXMoY29uc3QgU3Ry
aW5nJiwgZG91YmxlLCB1bnNpZ25lZCopIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgU3Ry
aW5nIHNlcmlhbGl6ZShkb3VibGUpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgRGVjaW1h
bCBwYXJzZVRvRGVjaW1hbChjb25zdCBTdHJpbmcmLCBjb25zdCBEZWNpbWFsJikgY29uc3QgT1ZF
UlJJREU7CisgICAgdmlydHVhbCBTdHJpbmcgc2VyaWFsaXplKGNvbnN0IERlY2ltYWwmKSBjb25z
dCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlQmx1ckV2ZW50KCkgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCBTdHJpbmcgdmlzaWJsZVZhbHVlKCkgY29uc3QgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCBTdHJpbmcgY29udmVydEZyb21WaXNpYmxlVmFsdWUoY29uc3QgU3RyaW5nJikgY29u
c3QgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRU
eXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwCmluZGV4IGI0
MTdkYzMyMDNiODQ3YWQ1YzZjYTI1ZGE1MWZkOWM3ZDQ2MDVjY2IuLjQwMTU1ODgxYzc4MDIxZTYz
ZWM2YWUyNDExMTI3Yzk4YmRhNjYyMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
UmFuZ2VJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5
cGUuY3BwCkBAIC01NCwxMSArNTQsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFt
ZXNwYWNlIEhUTUxOYW1lczsKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKLXN0YXRpYyBjb25zdCBk
b3VibGUgcmFuZ2VEZWZhdWx0TWluaW11bSA9IDAuMDsKLXN0YXRpYyBjb25zdCBkb3VibGUgcmFu
Z2VEZWZhdWx0TWF4aW11bSA9IDEwMC4wOwotc3RhdGljIGNvbnN0IGRvdWJsZSByYW5nZURlZmF1
bHRTdGVwID0gMS4wOwotc3RhdGljIGNvbnN0IGRvdWJsZSByYW5nZURlZmF1bHRTdGVwQmFzZSA9
IDAuMDsKLXN0YXRpYyBjb25zdCBkb3VibGUgcmFuZ2VTdGVwU2NhbGVGYWN0b3IgPSAxLjA7Citz
dGF0aWMgY29uc3QgaW50IHJhbmdlRGVmYXVsdE1pbmltdW0gPSAwOworc3RhdGljIGNvbnN0IGlu
dCByYW5nZURlZmF1bHRNYXhpbXVtID0gMTAwOworc3RhdGljIGNvbnN0IGludCByYW5nZURlZmF1
bHRTdGVwID0gMTsKK3N0YXRpYyBjb25zdCBpbnQgcmFuZ2VEZWZhdWx0U3RlcEJhc2UgPSAwOwor
c3RhdGljIGNvbnN0IGludCByYW5nZVN0ZXBTY2FsZUZhY3RvciA9IDE7CiAKIFBhc3NPd25QdHI8
SW5wdXRUeXBlPiBSYW5nZUlucHV0VHlwZTo6Y3JlYXRlKEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1l
bnQpCiB7CkBAIC03NywxMiArNzcsMTIgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBSYW5nZUlucHV0
VHlwZTo6Zm9ybUNvbnRyb2xUeXBlKCkgY29uc3QKIAogZG91YmxlIFJhbmdlSW5wdXRUeXBlOjp2
YWx1ZUFzTnVtYmVyKCkgY29uc3QKIHsKLSAgICByZXR1cm4gcGFyc2VUb0RvdWJsZShlbGVtZW50
KCktPnZhbHVlKCksIG51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpKTsKKyAgICBy
ZXR1cm4gcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUoZWxlbWVudCgpLT52YWx1ZSgpKTsKIH0K
IAogdm9pZCBSYW5nZUlucHV0VHlwZTo6c2V0VmFsdWVBc051bWJlcihkb3VibGUgbmV3VmFsdWUs
IFRleHRGaWVsZEV2ZW50QmVoYXZpb3IgZXZlbnRCZWhhdmlvciwgRXhjZXB0aW9uQ29kZSYpIGNv
bnN0CiB7Ci0gICAgZWxlbWVudCgpLT5zZXRWYWx1ZShzZXJpYWxpemUobmV3VmFsdWUpLCBldmVu
dEJlaGF2aW9yKTsKKyAgICBlbGVtZW50KCktPnNldFZhbHVlKHNlcmlhbGl6ZShjb252ZXJ0RG91
YmxlVG9EZWNpbWFsKG5ld1ZhbHVlKSksIGV2ZW50QmVoYXZpb3IpOwogfQogCiBib29sIFJhbmdl
SW5wdXRUeXBlOjpzdXBwb3J0c1JlcXVpcmVkKCkgY29uc3QKQEAgLTk0LDE4ICs5NCwxNiBAQCBT
dGVwUmFuZ2UgUmFuZ2VJbnB1dFR5cGU6OmNyZWF0ZVN0ZXBSYW5nZShBbnlTdGVwSGFuZGxpbmcg
YW55U3RlcEhhbmRsaW5nKSBjb25zdAogewogICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3Qg
U3RlcFJhbmdlOjpTdGVwRGVzY3JpcHRpb24sIHN0ZXBEZXNjcmlwdGlvbiwgKHJhbmdlRGVmYXVs
dFN0ZXAsIHJhbmdlRGVmYXVsdFN0ZXBCYXNlLCByYW5nZVN0ZXBTY2FsZUZhY3RvcikpOwogCi0g
ICAgZG91YmxlIG1pbmltdW0gPSBwYXJzZVRvRG91YmxlKGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJp
YnV0ZShtaW5BdHRyKSwgcmFuZ2VEZWZhdWx0TWluaW11bSk7Ci0gICAgZG91YmxlIG1heGltdW0g
PSBwYXJzZVRvRG91YmxlKGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShtYXhBdHRyKSwgcmFu
Z2VEZWZhdWx0TWF4aW11bSk7Ci0gICAgaWYgKG1heGltdW0gPCBtaW5pbXVtKQotICAgICAgICBt
YXhpbXVtID0gbWF4KG1pbmltdW0sIHJhbmdlRGVmYXVsdE1heGltdW0pOworICAgIGNvbnN0IERl
Y2ltYWwgbWluaW11bSA9IHBhcnNlVG9EZWNpbWFsKGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0
ZShtaW5BdHRyKSwgcmFuZ2VEZWZhdWx0TWluaW11bSk7CisgICAgY29uc3QgRGVjaW1hbCBtYXhp
bXVtID0gU3RlcFJhbmdlOjplbnN1cmVNYXhpbXVtKHBhcnNlVG9EZWNpbWFsKGVsZW1lbnQoKS0+
ZmFzdEdldEF0dHJpYnV0ZShtYXhBdHRyKSwgcmFuZ2VEZWZhdWx0TWF4aW11bSksIG1pbmltdW0s
IHJhbmdlRGVmYXVsdE1heGltdW0pOwogCiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBwcmVjaXNp
b25WYWx1ZSA9IGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShwcmVjaXNpb25BdHRyKTsKICAg
ICBpZiAoIXByZWNpc2lvblZhbHVlLmlzTnVsbCgpKSB7Ci0gICAgICAgIFN0ZXBSYW5nZTo6RG91
YmxlV2l0aERlY2ltYWxQbGFjZXNPck1pc3Npbmcgc3RlcCgxLCAhZXF1YWxJZ25vcmluZ0Nhc2Uo
cHJlY2lzaW9uVmFsdWUsICJmbG9hdCIpKTsKKyAgICAgICAgU3RlcFJhbmdlOjpEZWNpbWFsT3JN
aXNzaW5nIHN0ZXAoMSwgIWVxdWFsSWdub3JpbmdDYXNlKHByZWNpc2lvblZhbHVlLCAiZmxvYXQi
KSk7CiAgICAgICAgIHJldHVybiBTdGVwUmFuZ2UobWluaW11bSwgbWluaW11bSwgbWF4aW11bSwg
c3RlcCwgc3RlcERlc2NyaXB0aW9uKTsKICAgICB9CiAKLSAgICBTdGVwUmFuZ2U6OkRvdWJsZVdp
dGhEZWNpbWFsUGxhY2VzT3JNaXNzaW5nIHN0ZXAgPSBTdGVwUmFuZ2U6OnBhcnNlU3RlcChhbnlT
dGVwSGFuZGxpbmcsIHN0ZXBEZXNjcmlwdGlvbiwgZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRl
KHN0ZXBBdHRyKSk7CisgICAgY29uc3QgU3RlcFJhbmdlOjpEZWNpbWFsT3JNaXNzaW5nIHN0ZXAo
U3RlcFJhbmdlOjpwYXJzZVN0ZXAoYW55U3RlcEhhbmRsaW5nLCBzdGVwRGVzY3JpcHRpb24sIGVs
ZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShzdGVwQXR0cikpKTsKICAgICByZXR1cm4gU3RlcFJh
bmdlKG1pbmltdW0sIG1pbmltdW0sIG1heGltdW0sIHN0ZXAsIHN0ZXBEZXNjcmlwdGlvbik7CiB9
CiAKQEAgLTEzOCwyNSArMTM2LDE1IEBAIHZvaWQgUmFuZ2VJbnB1dFR5cGU6OmhhbmRsZUtleWRv
d25FdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKIAogICAgIGNvbnN0IFN0cmluZyYga2V5ID0g
ZXZlbnQtPmtleUlkZW50aWZpZXIoKTsKIAotICAgIGRvdWJsZSBjdXJyZW50ID0gcGFyc2VUb0Rv
dWJsZShlbGVtZW50KCktPnZhbHVlKCksIG51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05h
TigpKTsKLSAgICBBU1NFUlQoaXNmaW5pdGUoY3VycmVudCkpOworICAgIGNvbnN0IERlY2ltYWwg
Y3VycmVudCA9IHBhcnNlVG9EZWNpbWFsRm9yTnVtYmVyVHlwZShlbGVtZW50KCktPnZhbHVlKCkp
OworICAgIEFTU0VSVChjdXJyZW50LmlzRmluaXRlKCkpOwogCi0gICAgU3RlcFJhbmdlIHN0ZXBS
YW5nZShjcmVhdGVTdGVwUmFuZ2UoUmVqZWN0QW55KSk7CisgICAgY29uc3QgU3RlcFJhbmdlIHN0
ZXBSYW5nZShjcmVhdGVTdGVwUmFuZ2UoUmVqZWN0QW55KSk7CiAKLSAgICBkb3VibGUgc3RlcCwg
YmlnU3RlcDsKLSAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZWxlbWVudCgpLT5mYXN0R2V0QXR0
cmlidXRlKHN0ZXBBdHRyKSwgImFueSIpKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBXZSBjYW4ndCB1
c2Ugc3RlcFVwKCkgZm9yIHRoZSBzdGVwIHZhbHVlICJhbnkiLiBTbywgd2UgaW5jcmVhc2UKLSAg
ICAgICAgLy8gb3IgZGVjcmVhc2UgdGhlIHZhbHVlIGJ5IDEvMTAwIG9mIHRoZSB2YWx1ZSByYW5n
ZS4gSXMgaXQgcmVhc29uYWJsZT8KLSAgICAgICAgc3RlcCA9IChzdGVwUmFuZ2UubWF4aW11bSgp
IC0gc3RlcFJhbmdlLm1pbmltdW0oKSkgLyAxMDA7Ci0gICAgICAgIGJpZ1N0ZXAgPSBzdGVwICog
MTA7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKCFlbGVtZW50KCktPmdldEFsbG93ZWRWYWx1
ZVN0ZXAoJnN0ZXApKQotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0KLSAgICAg
ICAgYmlnU3RlcCA9IChzdGVwUmFuZ2UubWF4aW11bSgpIC0gc3RlcFJhbmdlLm1pbmltdW0oKSkg
LyAxMDsKLSAgICAgICAgaWYgKGJpZ1N0ZXAgPCBzdGVwKQotICAgICAgICAgICAgYmlnU3RlcCA9
IHN0ZXA7Ci0gICAgfQorICAgIC8vIEZJWE1FOiBXZSBjYW4ndCB1c2Ugc3RlcFVwKCkgZm9yIHRo
ZSBzdGVwIHZhbHVlICJhbnkiLiBTbywgd2UgaW5jcmVhc2UKKyAgICAvLyBvciBkZWNyZWFzZSB0
aGUgdmFsdWUgYnkgMS8xMDAgb2YgdGhlIHZhbHVlIHJhbmdlLiBJcyBpdCByZWFzb25hYmxlPwor
ICAgIGNvbnN0IERlY2ltYWwgc3RlcCA9IGVxdWFsSWdub3JpbmdDYXNlKGVsZW1lbnQoKS0+ZmFz
dEdldEF0dHJpYnV0ZShzdGVwQXR0ciksICJhbnkiKSA/IChzdGVwUmFuZ2UubWF4aW11bSgpIC0g
c3RlcFJhbmdlLm1pbmltdW0oKSkgLyAxMDAgOiBzdGVwUmFuZ2Uuc3RlcCgpOworICAgIGNvbnN0
IERlY2ltYWwgYmlnU3RlcCA9IG1heCgoc3RlcFJhbmdlLm1heGltdW0oKSAtIHN0ZXBSYW5nZS5t
aW5pbXVtKCkpIC8gMTAsIHN0ZXApOwogCiAgICAgYm9vbCBpc1ZlcnRpY2FsID0gZmFsc2U7CiAg
ICAgaWYgKGVsZW1lbnQoKS0+cmVuZGVyZXIoKSkgewpAQCAtMTY0LDcgKzE1Miw3IEBAIHZvaWQg
UmFuZ2VJbnB1dFR5cGU6OmhhbmRsZUtleWRvd25FdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkK
ICAgICAgICAgaXNWZXJ0aWNhbCA9IHBhcnQgPT0gU2xpZGVyVmVydGljYWxQYXJ0IHx8IHBhcnQg
PT0gTWVkaWFWb2x1bWVTbGlkZXJQYXJ0OwogICAgIH0KIAotICAgIGRvdWJsZSBuZXdWYWx1ZTsK
KyAgICBEZWNpbWFsIG5ld1ZhbHVlOwogICAgIGlmIChrZXkgPT0gIlVwIikKICAgICAgICAgbmV3
VmFsdWUgPSBjdXJyZW50ICsgc3RlcDsKICAgICBlbHNlIGlmIChrZXkgPT0gIkRvd24iKQpAQCAt
MTg5LDcgKzE3Nyw3IEBAIHZvaWQgUmFuZ2VJbnB1dFR5cGU6OmhhbmRsZUtleWRvd25FdmVudChL
ZXlib2FyZEV2ZW50KiBldmVudCkKICAgICBpZiAobmV3VmFsdWUgIT0gY3VycmVudCkgewogICAg
ICAgICBFeGNlcHRpb25Db2RlIGVjOwogICAgICAgICBUZXh0RmllbGRFdmVudEJlaGF2aW9yIGV2
ZW50QmVoYXZpb3IgPSBEaXNwYXRjaENoYW5nZUV2ZW50OwotICAgICAgICBzZXRWYWx1ZUFzTnVt
YmVyKG5ld1ZhbHVlLCBldmVudEJlaGF2aW9yLCBlYyk7CisgICAgICAgIHNldFZhbHVlQXNOdW1i
ZXIoY29udmVydERlY2ltYWxUb0RvdWJsZShuZXdWYWx1ZSksIGV2ZW50QmVoYXZpb3IsIGVjKTsK
IAogICAgICAgICBpZiAoQVhPYmplY3RDYWNoZTo6YWNjZXNzaWJpbGl0eUVuYWJsZWQoKSkKICAg
ICAgICAgICAgIGVsZW1lbnQoKS0+ZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNoZSgpLT5wb3N0Tm90
aWZpY2F0aW9uKGVsZW1lbnQoKS0+cmVuZGVyZXIoKSwgQVhPYmplY3RDYWNoZTo6QVhWYWx1ZUNo
YW5nZWQsIHRydWUpOwpAQCAtMjE5LDE2ICsyMDcsMTQgQEAgUmVuZGVyT2JqZWN0KiBSYW5nZUlu
cHV0VHlwZTo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSop
IGMKICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyU2xpZGVyKGVsZW1lbnQoKSk7CiB9CiAK
LWRvdWJsZSBSYW5nZUlucHV0VHlwZTo6cGFyc2VUb0RvdWJsZShjb25zdCBTdHJpbmcmIHNyYywg
ZG91YmxlIGRlZmF1bHRWYWx1ZSkgY29uc3QKK0RlY2ltYWwgUmFuZ2VJbnB1dFR5cGU6OnBhcnNl
VG9EZWNpbWFsKGNvbnN0IFN0cmluZyYgc3JjLCBjb25zdCBEZWNpbWFsJiBkZWZhdWx0VmFsdWUp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKHNyYywgZGVm
YXVsdFZhbHVlKTsKKyAgICByZXR1cm4gcGFyc2VUb0RlY2ltYWxGb3JOdW1iZXJUeXBlKHNyYywg
ZGVmYXVsdFZhbHVlKTsKIH0KIAotU3RyaW5nIFJhbmdlSW5wdXRUeXBlOjpzZXJpYWxpemUoZG91
YmxlIHZhbHVlKSBjb25zdAorU3RyaW5nIFJhbmdlSW5wdXRUeXBlOjpzZXJpYWxpemUoY29uc3Qg
RGVjaW1hbCYgdmFsdWUpIGNvbnN0CiB7Ci0gICAgaWYgKCFpc2Zpbml0ZSh2YWx1ZSkpCi0gICAg
ICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICByZXR1cm4gc2VyaWFsaXplRm9yTnVtYmVyVHlwZSh2
YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlLmlzRmluaXRlKCkgPyBzZXJpYWxpemVGb3JOdW1iZXJU
eXBlKHZhbHVlKSA6IGVtcHR5U3RyaW5nKCk7CiB9CiAKIC8vIEZJWE1FOiBDb3VsZCBzaGFyZSB0
aGlzIHdpdGggQmFzZUNsaWNrYWJsZVdpdGhLZXlJbnB1dFR5cGUgYW5kIEJhc2VDaGVja2FibGVJ
bnB1dFR5cGUgaWYgd2UgaGFkIGEgY29tbW9uIGJhc2UgY2xhc3MuCkBAIC0yNjgsOCArMjU0LDgg
QEAgU3RyaW5nIFJhbmdlSW5wdXRUeXBlOjpmYWxsYmFja1ZhbHVlKCkgY29uc3QKIAogU3RyaW5n
IFJhbmdlSW5wdXRUeXBlOjpzYW5pdGl6ZVZhbHVlKGNvbnN0IFN0cmluZyYgcHJvcG9zZWRWYWx1
ZSkgY29uc3QKIHsKLSAgICBTdGVwUmFuZ2Ugc3RlcFJhbmdlKGNyZWF0ZVN0ZXBSYW5nZShSZWpl
Y3RBbnkpKTsKLSAgICBkb3VibGUgcHJvcG9zZWREb3VibGVWYWx1ZSA9IHBhcnNlVG9Eb3VibGUo
cHJvcG9zZWRWYWx1ZSwgc3RlcFJhbmdlLmRlZmF1bHRWYWx1ZSgpKTsKKyAgICBjb25zdCBTdGVw
UmFuZ2Ugc3RlcFJhbmdlKGNyZWF0ZVN0ZXBSYW5nZShSZWplY3RBbnkpKTsKKyAgICBjb25zdCBE
ZWNpbWFsIHByb3Bvc2VkRG91YmxlVmFsdWUgPSBwYXJzZVRvRGVjaW1hbChwcm9wb3NlZFZhbHVl
LCBzdGVwUmFuZ2UuZGVmYXVsdFZhbHVlKCkpOwogICAgIHJldHVybiBzZXJpYWxpemVGb3JOdW1i
ZXJUeXBlKHN0ZXBSYW5nZS5jbGFtcFZhbHVlKHByb3Bvc2VkRG91YmxlVmFsdWUpKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5oCmluZGV4IDQ1ZmI0YWZhM2E5NTRkMzRjNzgx
ODU5OWUzMWRiNTM0ODQ3OWQxZjMuLjdjZDg3YThiYjU3YzFjZThhMjA0NWFjZTA3YzdlYTJmNjMx
OGNlNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmgKQEAgLTU0LDggKzU0LDgg
QEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlS2V5ZG93bkV2ZW50KEtleWJvYXJk
RXZlbnQqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVy
ZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1
YWwgdm9pZCBjcmVhdGVTaGFkb3dTdWJ0cmVlKCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBkb3Vi
bGUgcGFyc2VUb0RvdWJsZShjb25zdCBTdHJpbmcmLCBkb3VibGUpIGNvbnN0IE9WRVJSSURFOwot
ICAgIHZpcnR1YWwgU3RyaW5nIHNlcmlhbGl6ZShkb3VibGUpIGNvbnN0IE9WRVJSSURFOworICAg
IHZpcnR1YWwgRGVjaW1hbCBwYXJzZVRvRGVjaW1hbChjb25zdCBTdHJpbmcmLCBjb25zdCBEZWNp
bWFsJikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBTdHJpbmcgc2VyaWFsaXplKGNvbnN0
IERlY2ltYWwmKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgYWNjZXNzS2V5QWN0
aW9uKGJvb2wgc2VuZE1vdXNlRXZlbnRzKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgbWlu
T3JNYXhBdHRyaWJ1dGVDaGFuZ2VkKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldFZh
bHVlKGNvbnN0IFN0cmluZyYsIGJvb2wgdmFsdWVDaGFuZ2VkLCBUZXh0RmllbGRFdmVudEJlaGF2
aW9yKSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvU3RlcFJhbmdl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvU3RlcFJhbmdlLmNwcAppbmRleCA5YjliN2RjYzk0
OWNjNzVkNTUwYjA4MDdhOTNiNzYwNDU3ODg3YTg5Li4wOTk5NjFmZjhlYmYzZmRjNGM1MDc2ZDI4
ZWE2NTAwYTg4YTEzZGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1N0ZXBSYW5n
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9TdGVwUmFuZ2UuY3BwCkBAIC0zMCw2ICsz
MCwyMiBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0
YXRpYyBEZWNpbWFsIHBvd2VyKGNvbnN0IERlY2ltYWwmIHgsIHVuc2lnbmVkIG4pCit7CisgICAg
RGVjaW1hbCB5ID0gMTsKKyAgICBEZWNpbWFsIHogPSB4OworICAgIGZvciAoOzspIHsKKyAgICAg
ICAgaWYgKG4gJiAxKQorICAgICAgICAgICAgeSA9IHkgKiB6OworCisgICAgICAgIG4gPj49IDE7
CisgICAgICAgIGlmICghbikKKyAgICAgICAgICAgIHJldHVybiB5OworCisgICAgICAgIHogPSB6
ICogejsKKyAgICB9Cit9CisKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIFN0ZXBSYW5n
ZTo6U3RlcFJhbmdlKCkKQEAgLTM3LDggKzUzLDYgQEAgU3RlcFJhbmdlOjpTdGVwUmFuZ2UoKQog
ICAgICwgbV9taW5pbXVtKDApCiAgICAgLCBtX3N0ZXAoMSkKICAgICAsIG1fc3RlcEJhc2UoMCkK
LSAgICAsIG1fc3RlcEJhc2VEZWNpbWFsUGxhY2VzKDApCi0gICAgLCBtX3N0ZXBEZWNpbWFsUGxh
Y2VzKDApCiAgICAgLCBtX2hhc1N0ZXAoZmFsc2UpCiB7CiB9CkBAIC00OSw1NSArNjMsNDQgQEAg
U3RlcFJhbmdlOjpTdGVwUmFuZ2UoY29uc3QgU3RlcFJhbmdlJiBzdGVwUmFuZ2UpCiAgICAgLCBt
X3N0ZXAoc3RlcFJhbmdlLm1fc3RlcCkKICAgICAsIG1fc3RlcEJhc2Uoc3RlcFJhbmdlLm1fc3Rl
cEJhc2UpCiAgICAgLCBtX3N0ZXBEZXNjcmlwdGlvbihzdGVwUmFuZ2UubV9zdGVwRGVzY3JpcHRp
b24pCi0gICAgLCBtX3N0ZXBCYXNlRGVjaW1hbFBsYWNlcyhzdGVwUmFuZ2UubV9zdGVwQmFzZURl
Y2ltYWxQbGFjZXMpCi0gICAgLCBtX3N0ZXBEZWNpbWFsUGxhY2VzKHN0ZXBSYW5nZS5tX3N0ZXBE
ZWNpbWFsUGxhY2VzKQogICAgICwgbV9oYXNTdGVwKHN0ZXBSYW5nZS5tX2hhc1N0ZXApCiB7CiB9
CiAKLVN0ZXBSYW5nZTo6U3RlcFJhbmdlKGNvbnN0IERvdWJsZVdpdGhEZWNpbWFsUGxhY2VzJiBz
dGVwQmFzZSwgZG91YmxlIG1pbmltdW0sIGRvdWJsZSBtYXhpbXVtLCBjb25zdCBEb3VibGVXaXRo
RGVjaW1hbFBsYWNlc09yTWlzc2luZyYgc3RlcCwgY29uc3QgU3RlcERlc2NyaXB0aW9uJiBzdGVw
RGVzY3JpcHRpb24pCitTdGVwUmFuZ2U6OlN0ZXBSYW5nZShjb25zdCBEZWNpbWFsJiBzdGVwQmFz
ZSwgY29uc3QgRGVjaW1hbCYgbWluaW11bSwgY29uc3QgRGVjaW1hbCYgbWF4aW11bSwgY29uc3Qg
RGVjaW1hbE9yTWlzc2luZyYgc3RlcCwgY29uc3QgU3RlcERlc2NyaXB0aW9uJiBzdGVwRGVzY3Jp
cHRpb24pCiAgICAgOiBtX21heGltdW0obWF4aW11bSkKICAgICAsIG1fbWluaW11bShtaW5pbXVt
KQotICAgICwgbV9zdGVwKHN0ZXAudmFsdWUudmFsdWUpCi0gICAgLCBtX3N0ZXBCYXNlKHN0ZXBC
YXNlLnZhbHVlKQorICAgICwgbV9zdGVwKHN0ZXAudmFsdWUpCisgICAgLCBtX3N0ZXBCYXNlKHN0
ZXBCYXNlKQogICAgICwgbV9zdGVwRGVzY3JpcHRpb24oc3RlcERlc2NyaXB0aW9uKQotICAgICwg
bV9zdGVwQmFzZURlY2ltYWxQbGFjZXMoc3RlcEJhc2UuZGVjaW1hbFBsYWNlcykKLSAgICAsIG1f
c3RlcERlY2ltYWxQbGFjZXMoc3RlcC52YWx1ZS5kZWNpbWFsUGxhY2VzKQogICAgICwgbV9oYXNT
dGVwKHN0ZXAuaGFzVmFsdWUpCiB7Ci0gICAgQVNTRVJUKGlzZmluaXRlKG1fbWF4aW11bSkpOwot
ICAgIEFTU0VSVChpc2Zpbml0ZShtX21pbmltdW0pKTsKLSAgICBBU1NFUlQoaXNmaW5pdGUobV9z
dGVwKSk7Ci0gICAgQVNTRVJUKGlzZmluaXRlKG1fc3RlcEJhc2UpKTsKKyAgICBBU1NFUlQobV9t
YXhpbXVtLmlzRmluaXRlKCkpOworICAgIEFTU0VSVChtX21pbmltdW0uaXNGaW5pdGUoKSk7Cisg
ICAgQVNTRVJUKG1fc3RlcC5pc0Zpbml0ZSgpKTsKKyAgICBBU1NFUlQobV9zdGVwQmFzZS5pc0Zp
bml0ZSgpKTsKIH0KIAotZG91YmxlIFN0ZXBSYW5nZTo6YWNjZXB0YWJsZUVycm9yKCkgY29uc3QK
K0RlY2ltYWwgU3RlcFJhbmdlOjphY2NlcHRhYmxlRXJyb3IoKSBjb25zdAogewotICAgIHJldHVy
biBtX3N0ZXAgLyBwb3coMi4wLCBGTFRfTUFOVF9ESUcpOworICAgIHJldHVybiBtX3N0ZXAgLyBw
b3dlcigyLCBGTFRfTUFOVF9ESUcpOwogfQogCi1kb3VibGUgU3RlcFJhbmdlOjphbGlnblZhbHVl
Rm9yU3RlcChkb3VibGUgY3VycmVudFZhbHVlLCB1bnNpZ25lZCBjdXJyZW50RGVjaW1hbFBsYWNl
cywgZG91YmxlIG5ld1ZhbHVlKSBjb25zdAorRGVjaW1hbCBTdGVwUmFuZ2U6OmFsaWduVmFsdWVG
b3JTdGVwKGNvbnN0IERlY2ltYWwmIGN1cnJlbnRWYWx1ZSwgY29uc3QgRGVjaW1hbCYgbmV3VmFs
dWUpIGNvbnN0CiB7Ci0gICAgaWYgKG5ld1ZhbHVlID49IHBvdygxMC4wLCAyMS4wKSkKKyAgICBp
ZiAobmV3VmFsdWUgPj0gcG93ZXIoMTAsIDIxKSkKICAgICAgICAgcmV0dXJuIG5ld1ZhbHVlOwog
Ci0gICAgaWYgKHN0ZXBNaXNtYXRjaChjdXJyZW50VmFsdWUpKSB7Ci0gICAgICAgIGRvdWJsZSBz
Y2FsZSA9IHBvdygxMC4wLCBzdGF0aWNfY2FzdDxkb3VibGU+KG1heChtX3N0ZXBEZWNpbWFsUGxh
Y2VzLCBjdXJyZW50RGVjaW1hbFBsYWNlcykpKTsKLSAgICAgICAgbmV3VmFsdWUgPSByb3VuZChu
ZXdWYWx1ZSAqIHNjYWxlKSAvIHNjYWxlOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGRvdWJsZSBz
Y2FsZSA9IHBvdygxMC4wLCBzdGF0aWNfY2FzdDxkb3VibGU+KG1heChtX3N0ZXBEZWNpbWFsUGxh
Y2VzLCBtX3N0ZXBCYXNlRGVjaW1hbFBsYWNlcykpKTsKLSAgICAgICAgbmV3VmFsdWUgPSByb3Vu
ZCgobV9zdGVwQmFzZSArIHJvdW5kKChuZXdWYWx1ZSAtIG1fc3RlcEJhc2UpIC8gbV9zdGVwKSAq
IG1fc3RlcCkgKiBzY2FsZSkgLyBzY2FsZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gbmV3VmFsdWU7
CisgICAgcmV0dXJuIHN0ZXBNaXNtYXRjaChjdXJyZW50VmFsdWUpID8gbmV3VmFsdWUgOiByb3Vu
ZEJ5U3RlcChuZXdWYWx1ZSwgbV9zdGVwQmFzZSk7CiB9Ci1kb3VibGUgU3RlcFJhbmdlOjpjbGFt
cFZhbHVlKGRvdWJsZSB2YWx1ZSkgY29uc3QKKworRGVjaW1hbCBTdGVwUmFuZ2U6OmNsYW1wVmFs
dWUoY29uc3QgRGVjaW1hbCYgdmFsdWUpIGNvbnN0CiB7Ci0gICAgZG91YmxlIGNsYW1wZWRWYWx1
ZSA9IG1heChtX21pbmltdW0sIG1pbih2YWx1ZSwgbV9tYXhpbXVtKSk7CisgICAgRGVjaW1hbCBj
bGFtcGVkVmFsdWUgPSBtYXgobV9taW5pbXVtLCBtaW4odmFsdWUsIG1fbWF4aW11bSkpOwogICAg
IGlmICghbV9oYXNTdGVwKQogICAgICAgICByZXR1cm4gY2xhbXBlZFZhbHVlOwogICAgIC8vIFJv
dW5kcyBjbGFtcGVkVmFsdWUgdG8gbWluaW11bSArIE4gKiBzdGVwLgotICAgIGNsYW1wZWRWYWx1
ZSA9IG1fbWluaW11bSArIHJvdW5kKChjbGFtcGVkVmFsdWUgLSBtX21pbmltdW0pIC8gbV9zdGVw
KSAqIG1fc3RlcDsKKyAgICBjbGFtcGVkVmFsdWUgPSByb3VuZEJ5U3RlcChjbGFtcGVkVmFsdWUs
IG1fbWluaW11bSk7CiAgICAgaWYgKGNsYW1wZWRWYWx1ZSA+IG1fbWF4aW11bSkKICAgICAgICBj
bGFtcGVkVmFsdWUgLT0gbV9zdGVwOwogICAgIEFTU0VSVChjbGFtcGVkVmFsdWUgPj0gbV9taW5p
bXVtKTsKQEAgLTEwNSw3MCArMTA4LDY5IEBAIGRvdWJsZSBTdGVwUmFuZ2U6OmNsYW1wVmFsdWUo
ZG91YmxlIHZhbHVlKSBjb25zdAogICAgIHJldHVybiBjbGFtcGVkVmFsdWU7CiB9CiAKLVN0ZXBS
YW5nZTo6RG91YmxlV2l0aERlY2ltYWxQbGFjZXNPck1pc3NpbmcgU3RlcFJhbmdlOjpwYXJzZVN0
ZXAoQW55U3RlcEhhbmRsaW5nIGFueVN0ZXBIYW5kbGluZywgY29uc3QgU3RlcERlc2NyaXB0aW9u
JiBzdGVwRGVzY3JpcHRpb24sIGNvbnN0IFN0cmluZyYgc3RlcFN0cmluZykKK1N0ZXBSYW5nZTo6
RGVjaW1hbE9yTWlzc2luZyBTdGVwUmFuZ2U6OnBhcnNlU3RlcChBbnlTdGVwSGFuZGxpbmcgYW55
U3RlcEhhbmRsaW5nLCBjb25zdCBTdGVwRGVzY3JpcHRpb24mIHN0ZXBEZXNjcmlwdGlvbiwgY29u
c3QgU3RyaW5nJiBzdGVwU3RyaW5nKQogewogICAgIGlmIChzdGVwU3RyaW5nLmlzRW1wdHkoKSkK
LSAgICAgICAgcmV0dXJuIERvdWJsZVdpdGhEZWNpbWFsUGxhY2VzT3JNaXNzaW5nKHN0ZXBEZXNj
cmlwdGlvbi5kZWZhdWx0VmFsdWUoKSk7CisgICAgICAgIHJldHVybiBEZWNpbWFsT3JNaXNzaW5n
KHN0ZXBEZXNjcmlwdGlvbi5kZWZhdWx0VmFsdWUoKSk7CiAKICAgICBpZiAoZXF1YWxJZ25vcmlu
Z0Nhc2Uoc3RlcFN0cmluZywgImFueSIpKSB7CiAgICAgICAgIHN3aXRjaCAoYW55U3RlcEhhbmRs
aW5nKSB7CiAgICAgICAgIGNhc2UgUmVqZWN0QW55OgotICAgICAgICAgICAgcmV0dXJuIERvdWJs
ZVdpdGhEZWNpbWFsUGxhY2VzT3JNaXNzaW5nKERvdWJsZVdpdGhEZWNpbWFsUGxhY2VzKDEpLCBm
YWxzZSk7CisgICAgICAgICAgICByZXR1cm4gRGVjaW1hbE9yTWlzc2luZyhEZWNpbWFsKDEpLCBm
YWxzZSk7CiAgICAgICAgIGNhc2UgQW55SXNEZWZhdWx0U3RlcDoKLSAgICAgICAgICAgIHJldHVy
biBEb3VibGVXaXRoRGVjaW1hbFBsYWNlc09yTWlzc2luZyhzdGVwRGVzY3JpcHRpb24uZGVmYXVs
dFZhbHVlKCkpOworICAgICAgICAgICAgcmV0dXJuIERlY2ltYWxPck1pc3Npbmcoc3RlcERlc2Ny
aXB0aW9uLmRlZmF1bHRWYWx1ZSgpKTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgRG91YmxlV2l0aERl
Y2ltYWxQbGFjZXNPck1pc3Npbmcgc3RlcCgwKTsKLSAgICBzdGVwLnZhbHVlLnZhbHVlID0gcGFy
c2VUb0RvdWJsZUZvck51bWJlclR5cGVXaXRoRGVjaW1hbFBsYWNlcyhzdGVwU3RyaW5nLCAmc3Rl
cC52YWx1ZS5kZWNpbWFsUGxhY2VzKTsKLSAgICBpZiAoIWlzZmluaXRlKHN0ZXAudmFsdWUudmFs
dWUpIHx8IHN0ZXAudmFsdWUudmFsdWUgPD0gMC4wKQotICAgICAgICByZXR1cm4gRG91YmxlV2l0
aERlY2ltYWxQbGFjZXNPck1pc3Npbmcoc3RlcERlc2NyaXB0aW9uLmRlZmF1bHRWYWx1ZSgpKTsK
KyAgICBEZWNpbWFsIHN0ZXAocGFyc2VUb0RlY2ltYWxGb3JOdW1iZXJUeXBlKHN0ZXBTdHJpbmcp
KTsKKyAgICBpZiAoIXN0ZXAuaXNGaW5pdGUoKSB8fCBzdGVwIDw9IDApCisgICAgICAgIHJldHVy
biBEZWNpbWFsT3JNaXNzaW5nKHN0ZXBEZXNjcmlwdGlvbi5kZWZhdWx0VmFsdWUoKSk7CiAKICAg
ICBzd2l0Y2ggKHN0ZXBEZXNjcmlwdGlvbi5zdGVwVmFsdWVTaG91bGRCZSkgewogICAgIGNhc2Ug
U3RlcFZhbHVlU2hvdWxkQmVSZWFsOgotICAgICAgICBzdGVwLnZhbHVlLnZhbHVlICo9IHN0ZXBE
ZXNjcmlwdGlvbi5zdGVwU2NhbGVGYWN0b3I7CisgICAgICAgIHN0ZXAgKj0gc3RlcERlc2NyaXB0
aW9uLnN0ZXBTY2FsZUZhY3RvcjsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQYXJzZWRTdGVw
VmFsdWVTaG91bGRCZUludGVnZXI6CiAgICAgICAgIC8vIEZvciBkYXRlLCBtb250aCwgYW5kIHdl
ZWssIHRoZSBwYXJzZWQgdmFsdWUgc2hvdWxkIGJlIGFuIGludGVnZXIgZm9yIHNvbWUgdHlwZXMu
Ci0gICAgICAgIHN0ZXAudmFsdWUudmFsdWUgPSBtYXgocm91bmQoc3RlcC52YWx1ZS52YWx1ZSks
IDEuMCk7Ci0gICAgICAgIHN0ZXAudmFsdWUudmFsdWUgKj0gc3RlcERlc2NyaXB0aW9uLnN0ZXBT
Y2FsZUZhY3RvcjsKKyAgICAgICAgc3RlcCA9IG1heChzdGVwLnJvdW5kKCksIERlY2ltYWwoMSkp
OworICAgICAgICBzdGVwICo9IHN0ZXBEZXNjcmlwdGlvbi5zdGVwU2NhbGVGYWN0b3I7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgU2NhbGVkU3RlcFZhbHVlU2hvdWxkQmVJbnRlZ2VyOgogICAg
ICAgICAvLyBGb3IgZGF0ZXRpbWUsIGRhdGV0aW1lLWxvY2FsLCB0aW1lLCB0aGUgcmVzdWx0IHNo
b3VsZCBiZSBhbiBpbnRlZ2VyLgotICAgICAgICBzdGVwLnZhbHVlLnZhbHVlICo9IHN0ZXBEZXNj
cmlwdGlvbi5zdGVwU2NhbGVGYWN0b3I7Ci0gICAgICAgIHN0ZXAudmFsdWUudmFsdWUgPSBtYXgo
cm91bmQoc3RlcC52YWx1ZS52YWx1ZSksIDEuMCk7CisgICAgICAgIHN0ZXAgKj0gc3RlcERlc2Ny
aXB0aW9uLnN0ZXBTY2FsZUZhY3RvcjsKKyAgICAgICAgc3RlcCA9IG1heChzdGVwLnJvdW5kKCks
IERlY2ltYWwoMSkpOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAKLSAgICBBU1NFUlQoc3RlcC52YWx1ZS52YWx1ZSA+
IDApOwotICAgIHJldHVybiBzdGVwOworICAgIEFTU0VSVChzdGVwID4gMCk7CisgICAgcmV0dXJu
IERlY2ltYWxPck1pc3Npbmcoc3RlcCk7CiB9CiAKLWJvb2wgU3RlcFJhbmdlOjpzdGVwTWlzbWF0
Y2goZG91YmxlIGRvdWJsZVZhbHVlKSBjb25zdAorYm9vbCBTdGVwUmFuZ2U6OnN0ZXBNaXNtYXRj
aChjb25zdCBEZWNpbWFsJiB2YWx1ZUZvckNoZWNrKSBjb25zdAogewogICAgIGlmICghbV9oYXNT
dGVwKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFpc2Zpbml0ZShkb3VibGVWYWx1
ZSkpCisgICAgaWYgKCF2YWx1ZUZvckNoZWNrLmlzRmluaXRlKCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICBkb3VibGVWYWx1ZSA9IGZhYnMoZG91YmxlVmFsdWUgLSBtX3N0ZXBCYXNlKTsK
LSAgICBpZiAoaXNpbmYoZG91YmxlVmFsdWUpKQorICAgIERlY2ltYWwgdmFsdWUgPSAodmFsdWVG
b3JDaGVjayAtIG1fc3RlcEJhc2UpLmFicygpOworICAgIGlmICghdmFsdWUuaXNGaW5pdGUoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIC8vIGRvdWJsZSdzIGZyYWN0aW9uYWwgcGFydCBz
aXplIGlzIERCTF9NQU5fRElHLWJpdC4gSWYgdGhlIGN1cnJlbnQgdmFsdWUKKyAgICAvLyBEZWNp
bWFsJ3MgZnJhY3Rpb25hbCBwYXJ0IHNpemUgaXMgREJMX01BTl9ESUctYml0LiBJZiB0aGUgY3Vy
cmVudCB2YWx1ZQogICAgIC8vIGlzIGdyZWF0ZXIgdGhhbiBzdGVwKjJeREJMX01BTlRfRElHLCB0
aGUgZm9sbG93aW5nIGNvbXB1dGF0aW9uIGZvcgogICAgIC8vIHJlbWFpbmRlciBtYWtlcyBubyBz
ZW5zZS4KLSAgICBpZiAoZG91YmxlVmFsdWUgLyBwb3coMi4wLCBEQkxfTUFOVF9ESUcpID4gbV9z
dGVwKQorICAgIGlmICh2YWx1ZSAvIHBvd2VyKDIsIERCTF9NQU5UX0RJRykgPiBtX3N0ZXApCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAvLyBUaGUgY29tcHV0YXRpb24gZm9sbG93cyBIVE1M
NSA0LjEwLjcuMi4xMCBgVGhlIHN0ZXAgYXR0cmlidXRlJyA6CiAgICAgLy8gLi4uIHRoYXQgbnVt
YmVyIHN1YnRyYWN0ZWQgZnJvbSB0aGUgc3RlcCBiYXNlIGlzIG5vdCBhbiBpbnRlZ3JhbCBtdWx0
aXBsZQogICAgIC8vIG9mIHRoZSBhbGxvd2VkIHZhbHVlIHN0ZXAsIHRoZSBlbGVtZW50IGlzIHN1
ZmZlcmluZyBmcm9tIGEgc3RlcCBtaXNtYXRjaC4KLSAgICBkb3VibGUgcmVtYWluZGVyID0gZmFi
cyhkb3VibGVWYWx1ZSAtIG1fc3RlcCAqIHJvdW5kKGRvdWJsZVZhbHVlIC8gbV9zdGVwKSk7Cisg
ICAgY29uc3QgRGVjaW1hbCByZW1haW5kZXIgPSAodmFsdWUgLSBtX3N0ZXAgKiAodmFsdWUgLyBt
X3N0ZXApLnJvdW5kKCkpLmFicygpOwogICAgIC8vIEFjY2VwdHMgZXJyb3MgaW4gbG93ZXIgZnJh
Y3Rpb25hbCBwYXJ0IHdoaWNoIElFRUUgNzU0IHNpbmdsZS1wcmVjaXNpb24KICAgICAvLyBjYW4n
dCByZXByZXNlbnQuCi0gICAgZG91YmxlIGNvbXB1dGVkQWNjZXB0YWJsZUVycm9yID0gYWNjZXB0
YWJsZUVycm9yKCk7CisgICAgY29uc3QgRGVjaW1hbCBjb21wdXRlZEFjY2VwdGFibGVFcnJvciA9
IGFjY2VwdGFibGVFcnJvcigpOwogICAgIHJldHVybiBjb21wdXRlZEFjY2VwdGFibGVFcnJvciA8
IHJlbWFpbmRlciAmJiByZW1haW5kZXIgPCAobV9zdGVwIC0gY29tcHV0ZWRBY2NlcHRhYmxlRXJy
b3IpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1N0ZXBSYW5nZS5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9TdGVwUmFuZ2UuaAppbmRleCAwYWRiZmQ4NTdhNTA2OTk5MzFj
YmQzOTEwNmY2YjA0YTZlNzQyYzhkLi4zMGE2MzBmYjk5YzBkMWU0NTdlMDNmYWFmOTkxMDI4OGQ2
Mjc1MzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1N0ZXBSYW5nZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvU3RlcFJhbmdlLmgKQEAgLTIxLDYgKzIxLDcgQEAKICNpZm5k
ZWYgU3RlcFJhbmdlX2gKICNkZWZpbmUgU3RlcFJhbmdlX2gKIAorI2luY2x1ZGUgIkRlY2ltYWwu
aCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5o
PgogCkBAIC0zMiwyMiArMzMsMTEgQEAgZW51bSBBbnlTdGVwSGFuZGxpbmcgeyBSZWplY3RBbnks
IEFueUlzRGVmYXVsdFN0ZXAgfTsKIAogY2xhc3MgU3RlcFJhbmdlIHsKIHB1YmxpYzoKLSAgICBz
dHJ1Y3QgRG91YmxlV2l0aERlY2ltYWxQbGFjZXMgewotICAgICAgICB1bnNpZ25lZCBkZWNpbWFs
UGxhY2VzOwotICAgICAgICBkb3VibGUgdmFsdWU7Ci0KLSAgICAgICAgRG91YmxlV2l0aERlY2lt
YWxQbGFjZXMoZG91YmxlIHZhbHVlID0gMCwgdW5zaWduZWQgZGVjaW1hbFBsYWNlcyA9IDApCi0g
ICAgICAgICAgICA6IGRlY2ltYWxQbGFjZXMoZGVjaW1hbFBsYWNlcykKLSAgICAgICAgICAgICwg
dmFsdWUodmFsdWUpCi0gICAgICAgIHsKLSAgICAgICAgfQotICAgIH07Ci0KLSAgICBzdHJ1Y3Qg
RG91YmxlV2l0aERlY2ltYWxQbGFjZXNPck1pc3NpbmcgeworICAgIHN0cnVjdCBEZWNpbWFsT3JN
aXNzaW5nIHsKICAgICAgICAgYm9vbCBoYXNWYWx1ZTsKLSAgICAgICAgRG91YmxlV2l0aERlY2lt
YWxQbGFjZXMgdmFsdWU7CisgICAgICAgIERlY2ltYWwgdmFsdWU7CiAKLSAgICAgICAgRG91Ymxl
V2l0aERlY2ltYWxQbGFjZXNPck1pc3NpbmcoRG91YmxlV2l0aERlY2ltYWxQbGFjZXMgdmFsdWUs
IGJvb2wgaGFzVmFsdWUgPSB0cnVlKQorICAgICAgICBEZWNpbWFsT3JNaXNzaW5nKGNvbnN0IERl
Y2ltYWwmIHZhbHVlLCBib29sIGhhc1ZhbHVlID0gdHJ1ZSkKICAgICAgICAgICAgIDogaGFzVmFs
dWUoaGFzVmFsdWUpCiAgICAgICAgICAgICAsIHZhbHVlKHZhbHVlKQogICAgICAgICB7CkBAIC04
Miw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgZG91
YmxlIGRlZmF1bHRWYWx1ZSgpIGNvbnN0CisgICAgICAgIERlY2ltYWwgZGVmYXVsdFZhbHVlKCkg
Y29uc3QKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRTdGVwICogc3RlcFNj
YWxlRmFjdG9yOwogICAgICAgICB9CkBAIC05MCwyOSArODAsMzIgQEAgcHVibGljOgogCiAgICAg
U3RlcFJhbmdlKCk7CiAgICAgU3RlcFJhbmdlKGNvbnN0IFN0ZXBSYW5nZSYpOwotICAgIFN0ZXBS
YW5nZShjb25zdCBEb3VibGVXaXRoRGVjaW1hbFBsYWNlcyYgc3RlcEJhc2UsIGRvdWJsZSBtaW5p
bXVtLCBkb3VibGUgbWF4aW11bSwgY29uc3QgRG91YmxlV2l0aERlY2ltYWxQbGFjZXNPck1pc3Np
bmcmIHN0ZXAsIGNvbnN0IFN0ZXBEZXNjcmlwdGlvbiYpOwotICAgIGRvdWJsZSBhY2NlcHRhYmxl
RXJyb3IoKSBjb25zdDsKLSAgICBkb3VibGUgYWxpZ25WYWx1ZUZvclN0ZXAoZG91YmxlIGN1cnJl
bnRWYWx1ZSwgdW5zaWduZWQgY3VycmVudERlY2ltYWxQbGFjZXMsIGRvdWJsZSBuZXdWYWx1ZSkg
Y29uc3Q7Ci0gICAgZG91YmxlIGNsYW1wVmFsdWUoZG91YmxlIHZhbHVlKSBjb25zdDsKKyAgICBT
dGVwUmFuZ2UoY29uc3QgRGVjaW1hbCYgc3RlcEJhc2UsIGNvbnN0IERlY2ltYWwmIG1pbmltdW0s
IGNvbnN0IERlY2ltYWwmIG1heGltdW0sIGNvbnN0IERlY2ltYWxPck1pc3NpbmcmIHN0ZXAsIGNv
bnN0IFN0ZXBEZXNjcmlwdGlvbiYpOworICAgIERlY2ltYWwgYWNjZXB0YWJsZUVycm9yKCkgY29u
c3Q7CisgICAgRGVjaW1hbCBhbGlnblZhbHVlRm9yU3RlcChjb25zdCBEZWNpbWFsJiBjdXJyZW50
VmFsdWUsIGNvbnN0IERlY2ltYWwmIG5ld1ZhbHVlKSBjb25zdDsKKyAgICBEZWNpbWFsIGNsYW1w
VmFsdWUoY29uc3QgRGVjaW1hbCYpIGNvbnN0OwogICAgIGJvb2wgaGFzU3RlcCgpIGNvbnN0IHsg
cmV0dXJuIG1faGFzU3RlcDsgfQotICAgIGRvdWJsZSBtYXhpbXVtKCkgY29uc3QgeyByZXR1cm4g
bV9tYXhpbXVtOyB9Ci0gICAgZG91YmxlIG1pbmltdW0oKSBjb25zdCB7IHJldHVybiBtX21pbmlt
dW07IH0KLSAgICBzdGF0aWMgRG91YmxlV2l0aERlY2ltYWxQbGFjZXNPck1pc3NpbmcgcGFyc2VT
dGVwKEFueVN0ZXBIYW5kbGluZywgY29uc3QgU3RlcERlc2NyaXB0aW9uJiwgY29uc3QgU3RyaW5n
Jik7Ci0gICAgZG91YmxlIHN0ZXAoKSBjb25zdCB7IHJldHVybiBtX3N0ZXA7IH0KLSAgICBkb3Vi
bGUgc3RlcEJhc2UoKSBjb25zdCB7IHJldHVybiBtX3N0ZXBCYXNlOyB9Ci0gICAgdW5zaWduZWQg
c3RlcEJhc2VEZWNpbWFsUGxhY2VzKCkgY29uc3QgeyByZXR1cm4gbV9zdGVwQmFzZURlY2ltYWxQ
bGFjZXM7IH0KLSAgICB1bnNpZ25lZCBzdGVwRGVjaW1hbFBsYWNlcygpIGNvbnN0IHsgcmV0dXJu
IG1fc3RlcERlY2ltYWxQbGFjZXM7IH0KKyAgICBEZWNpbWFsIG1heGltdW0oKSBjb25zdCB7IHJl
dHVybiBtX21heGltdW07IH0KKyAgICBEZWNpbWFsIG1pbmltdW0oKSBjb25zdCB7IHJldHVybiBt
X21pbmltdW07IH0KKyAgICBzdGF0aWMgRGVjaW1hbE9yTWlzc2luZyBwYXJzZVN0ZXAoQW55U3Rl
cEhhbmRsaW5nLCBjb25zdCBTdGVwRGVzY3JpcHRpb24mLCBjb25zdCBTdHJpbmcmKTsKKyAgICBE
ZWNpbWFsIHN0ZXAoKSBjb25zdCB7IHJldHVybiBtX3N0ZXA7IH0KKyAgICBEZWNpbWFsIHN0ZXBC
YXNlKCkgY29uc3QgeyByZXR1cm4gbV9zdGVwQmFzZTsgfQogICAgIGludCBzdGVwU2NhbGVGYWN0
b3IoKSBjb25zdCB7IHJldHVybiBtX3N0ZXBEZXNjcmlwdGlvbi5zdGVwU2NhbGVGYWN0b3I7IH0K
LSAgICBib29sIHN0ZXBNaXNtYXRjaChkb3VibGUpIGNvbnN0OworICAgIGJvb2wgc3RlcE1pc21h
dGNoKGNvbnN0IERlY2ltYWwmKSBjb25zdDsKIAogICAgIC8vIENsYW1wIHRoZSBtaWRkbGUgdmFs
dWUgYWNjb3JkaW5nIHRvIHRoZSBzdGVwCi0gICAgZG91YmxlIGRlZmF1bHRWYWx1ZSgpIGNvbnN0
CisgICAgRGVjaW1hbCBkZWZhdWx0VmFsdWUoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJu
IGNsYW1wVmFsdWUoKG1fbWluaW11bSArIG1fbWF4aW11bSkgLyAyKTsKICAgICB9CiAKKyAgICBz
dGF0aWMgRGVjaW1hbCBlbnN1cmVNYXhpbXVtKGNvbnN0IERlY2ltYWwgcHJvcG9zZWRWYWx1ZSwg
Y29uc3QgRGVjaW1hbCYgbWluaW11bSwgY29uc3QgRGVjaW1hbCYgZmFsbGJhY2tWYWx1ZSkKKyAg
ICB7CisgICAgICAgIHJldHVybiBwcm9wb3NlZFZhbHVlID49IG1pbmltdW0gPyBwcm9wb3NlZFZh
bHVlIDogc3RkOjptYXgobWluaW11bSwgZmFsbGJhY2tWYWx1ZSk7CisgICAgfQorCiAgICAgLy8g
TWFwIHZhbHVlIGludG8gMC0xIHJhbmdlCi0gICAgZG91YmxlIHByb3BvcnRpb25Gcm9tVmFsdWUo
ZG91YmxlIHZhbHVlKSBjb25zdAorICAgIERlY2ltYWwgcHJvcG9ydGlvbkZyb21WYWx1ZShjb25z
dCBEZWNpbWFsJiB2YWx1ZSkgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChtX21pbmltdW0gPT0g
bV9tYXhpbXVtKQogICAgICAgICAgICAgcmV0dXJuIDA7CkBAIC0xMjEsNyArMTE0LDcgQEAgcHVi
bGljOgogICAgIH0KIAogICAgIC8vIE1hcCBmcm9tIDAtMSByYW5nZSB0byB2YWx1ZQotICAgIGRv
dWJsZSB2YWx1ZUZyb21Qcm9wb3J0aW9uKGRvdWJsZSBwcm9wb3J0aW9uKSBjb25zdAorICAgIERl
Y2ltYWwgdmFsdWVGcm9tUHJvcG9ydGlvbihjb25zdCBEZWNpbWFsJiBwcm9wb3J0aW9uKSBjb25z
dAogICAgIHsKICAgICAgICAgcmV0dXJuIG1fbWluaW11bSArIHByb3BvcnRpb24gKiAobV9tYXhp
bXVtIC0gbV9taW5pbXVtKTsKICAgICB9CkBAIC0xMjksMTMgKzEyMiwxNiBAQCBwdWJsaWM6CiBw
cml2YXRlOgogICAgIFN0ZXBSYW5nZSYgb3BlcmF0b3IgPShjb25zdCBTdGVwUmFuZ2UmKTsKIAot
ICAgIGNvbnN0IGRvdWJsZSBtX21heGltdW07IC8vIG1heGltdW0gbXVzdCBiZSA+PSBtaW5pbXVt
LgotICAgIGNvbnN0IGRvdWJsZSBtX21pbmltdW07Ci0gICAgY29uc3QgZG91YmxlIG1fc3RlcDsK
LSAgICBjb25zdCBkb3VibGUgbV9zdGVwQmFzZTsKKyAgICBEZWNpbWFsIHJvdW5kQnlTdGVwKGNv
bnN0IERlY2ltYWwmIHZhbHVlLCBjb25zdCBEZWNpbWFsJiBiYXNlKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGJhc2UgKyAoKHZhbHVlIC0gYmFzZSkgLyBtX3N0ZXApLnJvdW5kKCkgKiBt
X3N0ZXA7CisgICAgfQorCisgICAgY29uc3QgRGVjaW1hbCBtX21heGltdW07IC8vIG1heGltdW0g
bXVzdCBiZSA+PSBtaW5pbXVtLgorICAgIGNvbnN0IERlY2ltYWwgbV9taW5pbXVtOworICAgIGNv
bnN0IERlY2ltYWwgbV9zdGVwOworICAgIGNvbnN0IERlY2ltYWwgbV9zdGVwQmFzZTsKICAgICBj
b25zdCBTdGVwRGVzY3JpcHRpb24gbV9zdGVwRGVzY3JpcHRpb247Ci0gICAgY29uc3QgdW5zaWdu
ZWQgbV9zdGVwQmFzZURlY2ltYWxQbGFjZXM7Ci0gICAgY29uc3QgdW5zaWduZWQgbV9zdGVwRGVj
aW1hbFBsYWNlczsKICAgICBjb25zdCBib29sIG1faGFzU3RlcDsKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvVGltZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL1RpbWVJbnB1dFR5cGUuY3BwCmluZGV4IGVjNTI3MDI0Yzk1ZGFkYmY4OWEzMzA2OWRkYmY5
YmNkOTllMWNkNmYuLjBhMTRjNDg0MGJmMDEzMjk3OGUwZTI4NDQ3MGQ1YzA4ZDJhZjNiNzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGltZUlucHV0VHlwZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9UaW1lSW5wdXRUeXBlLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2lu
Y2x1ZGUgIkRhdGVDb21wb25lbnRzLmgiCiAjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgog
I2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKICNp
bmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvRGF0ZU1hdGguaD4KICNp
bmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgpAQCAtNDUsOSArNDYsOSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLXN0YXRpYyBjb25zdCBkb3Vi
bGUgdGltZURlZmF1bHRTdGVwID0gNjAuMDsKLXN0YXRpYyBjb25zdCBkb3VibGUgdGltZURlZmF1
bHRTdGVwQmFzZSA9IDAuMDsKLXN0YXRpYyBjb25zdCBkb3VibGUgdGltZVN0ZXBTY2FsZUZhY3Rv
ciA9IDEwMDAuMDsKK3N0YXRpYyBjb25zdCBpbnQgdGltZURlZmF1bHRTdGVwID0gNjA7CitzdGF0
aWMgY29uc3QgaW50IHRpbWVEZWZhdWx0U3RlcEJhc2UgPSAwOworc3RhdGljIGNvbnN0IGludCB0
aW1lU3RlcFNjYWxlRmFjdG9yID0gMTAwMDsKIAogUGFzc093blB0cjxJbnB1dFR5cGU+IFRpbWVJ
bnB1dFR5cGU6OmNyZWF0ZShIVE1MSW5wdXRFbGVtZW50KiBlbGVtZW50KQogewpAQCAtNjQsNyAr
NjUsNyBAQCBEYXRlQ29tcG9uZW50czo6VHlwZSBUaW1lSW5wdXRUeXBlOjpkYXRlVHlwZSgpIGNv
bnN0CiAgICAgcmV0dXJuIERhdGVDb21wb25lbnRzOjpUaW1lOwogfQogCi1kb3VibGUgVGltZUlu
cHV0VHlwZTo6ZGVmYXVsdFZhbHVlRm9yU3RlcFVwKCkgY29uc3QKK0RlY2ltYWwgVGltZUlucHV0
VHlwZTo6ZGVmYXVsdFZhbHVlRm9yU3RlcFVwKCkgY29uc3QKIHsKICAgICBkb3VibGUgY3VycmVu
dCA9IGN1cnJlbnRUaW1lTVMoKTsKICAgICBkb3VibGUgdXRjT2Zmc2V0ID0gY2FsY3VsYXRlVVRD
T2Zmc2V0KCk7CkBAIC03NiwxNyArNzcsMTcgQEAgZG91YmxlIFRpbWVJbnB1dFR5cGU6OmRlZmF1
bHRWYWx1ZUZvclN0ZXBVcCgpIGNvbnN0CiAgICAgZGF0ZS5zZXRNaWxsaXNlY29uZHNTaW5jZU1p
ZG5pZ2h0KGN1cnJlbnQpOwogICAgIGRvdWJsZSBtaWxsaXNlY29uZHMgPSBkYXRlLm1pbGxpc2Vj
b25kc1NpbmNlRXBvY2goKTsKICAgICBBU1NFUlQoaXNmaW5pdGUobWlsbGlzZWNvbmRzKSk7Ci0g
ICAgcmV0dXJuIG1pbGxpc2Vjb25kczsKKyAgICByZXR1cm4gY29udmVydERvdWJsZVRvRGVjaW1h
bChtaWxsaXNlY29uZHMpOwogfQogCiBTdGVwUmFuZ2UgVGltZUlucHV0VHlwZTo6Y3JlYXRlU3Rl
cFJhbmdlKEFueVN0ZXBIYW5kbGluZyBhbnlTdGVwSGFuZGxpbmcpIGNvbnN0CiB7CiAgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdGVwUmFuZ2U6OlN0ZXBEZXNjcmlwdGlvbiwgc3RlcERl
c2NyaXB0aW9uLCAodGltZURlZmF1bHRTdGVwLCB0aW1lRGVmYXVsdFN0ZXBCYXNlLCB0aW1lU3Rl
cFNjYWxlRmFjdG9yLCBTdGVwUmFuZ2U6OlNjYWxlZFN0ZXBWYWx1ZVNob3VsZEJlSW50ZWdlcikp
OwogCi0gICAgZG91YmxlIHN0ZXBCYXNlID0gcGFyc2VUb0RvdWJsZShlbGVtZW50KCktPmZhc3RH
ZXRBdHRyaWJ1dGUobWluQXR0ciksIDApOwotICAgIGRvdWJsZSBtaW5pbXVtID0gcGFyc2VUb0Rv
dWJsZShlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUobWluQXR0ciksIERhdGVDb21wb25lbnRz
OjptaW5pbXVtVGltZSgpKTsKLSAgICBkb3VibGUgbWF4aW11bSA9IHBhcnNlVG9Eb3VibGUoZWxl
bWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1heEF0dHIpLCBEYXRlQ29tcG9uZW50czo6bWF4aW11
bVRpbWUoKSk7Ci0gICAgU3RlcFJhbmdlOjpEb3VibGVXaXRoRGVjaW1hbFBsYWNlc09yTWlzc2lu
ZyBzdGVwID0gU3RlcFJhbmdlOjpwYXJzZVN0ZXAoYW55U3RlcEhhbmRsaW5nLCBzdGVwRGVzY3Jp
cHRpb24sIGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShzdGVwQXR0cikpOworICAgIGNvbnN0
IERlY2ltYWwgc3RlcEJhc2UgPSBwYXJzZVRvRGVjaW1hbChlbGVtZW50KCktPmZhc3RHZXRBdHRy
aWJ1dGUobWluQXR0ciksIDApOworICAgIGNvbnN0IERlY2ltYWwgbWluaW11bSA9IHBhcnNlVG9E
ZWNpbWFsKGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShtaW5BdHRyKSwgY29udmVydERvdWJs
ZVRvRGVjaW1hbChEYXRlQ29tcG9uZW50czo6bWluaW11bVRpbWUoKSkpOworICAgIGNvbnN0IERl
Y2ltYWwgbWF4aW11bSA9IHBhcnNlVG9EZWNpbWFsKGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0
ZShtYXhBdHRyKSwgY29udmVydERvdWJsZVRvRGVjaW1hbChEYXRlQ29tcG9uZW50czo6bWF4aW11
bVRpbWUoKSkpOworICAgIGNvbnN0IFN0ZXBSYW5nZTo6RGVjaW1hbE9yTWlzc2luZyBzdGVwID0g
U3RlcFJhbmdlOjpwYXJzZVN0ZXAoYW55U3RlcEhhbmRsaW5nLCBzdGVwRGVzY3JpcHRpb24sIGVs
ZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShzdGVwQXR0cikpOwogICAgIHJldHVybiBTdGVwUmFu
Z2Uoc3RlcEJhc2UsIG1pbmltdW0sIG1heGltdW0sIHN0ZXAsIHN0ZXBEZXNjcmlwdGlvbik7CiB9
CiAKQEAgLTk3LDEwICs5OCwxMCBAQCBib29sIFRpbWVJbnB1dFR5cGU6OnBhcnNlVG9EYXRlQ29t
cG9uZW50c0ludGVybmFsKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZwogICAgIHJldHVy
biBvdXQtPnBhcnNlVGltZShjaGFyYWN0ZXJzLCBsZW5ndGgsIDAsIGVuZCkgJiYgZW5kID09IGxl
bmd0aDsKIH0KIAotYm9vbCBUaW1lSW5wdXRUeXBlOjpzZXRNaWxsaXNlY29uZFRvRGF0ZUNvbXBv
bmVudHMoZG91YmxlIHZhbHVlLCBEYXRlQ29tcG9uZW50cyogZGF0ZSkgY29uc3QKK2Jvb2wgVGlt
ZUlucHV0VHlwZTo6c2V0TWlsbGlzZWNvbmRUb0RhdGVDb21wb25lbnRzKGNvbnN0IERlY2ltYWwm
IHZhbHVlLCBEYXRlQ29tcG9uZW50cyogZGF0ZSkgY29uc3QKIHsKICAgICBBU1NFUlQoZGF0ZSk7
Ci0gICAgcmV0dXJuIGRhdGUtPnNldE1pbGxpc2Vjb25kc1NpbmNlTWlkbmlnaHQodmFsdWUpOwor
ICAgIHJldHVybiBkYXRlLT5zZXRNaWxsaXNlY29uZHNTaW5jZU1pZG5pZ2h0KGNvbnZlcnREZWNp
bWFsVG9Eb3VibGUodmFsdWUpKTsKIH0KIAogYm9vbCBUaW1lSW5wdXRUeXBlOjppc1RpbWVGaWVs
ZCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVJbnB1dFR5cGUu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGltZUlucHV0VHlwZS5oCmluZGV4IDFjMmMyODZlYzNh
Y2ZkNWVhZWVkZTYyODgzNmU3YWIzMDZhMjNkZDAuLjE3ZjNiZGY2Zjg3MDY0MGY4ZGM1ZTFhZjc0
NjA5YTEyYjllMGU4OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGltZUlucHV0
VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGltZUlucHV0VHlwZS5oCkBAIC00NSwx
MCArNDUsMTAgQEAgcHJpdmF0ZToKICAgICBUaW1lSW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQq
IGVsZW1lbnQpIDogQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlKGVsZW1lbnQpIHsgfQogICAgIHZp
cnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBmb3JtQ29udHJvbFR5cGUoKSBjb25zdCBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIERhdGVDb21wb25lbnRzOjpUeXBlIGRhdGVUeXBlKCkgY29uc3QgT1ZF
UlJJREU7Ci0gICAgdmlydHVhbCBkb3VibGUgZGVmYXVsdFZhbHVlRm9yU3RlcFVwKCkgY29uc3Qg
T1ZFUlJJREU7CisgICAgdmlydHVhbCBEZWNpbWFsIGRlZmF1bHRWYWx1ZUZvclN0ZXBVcCgpIGNv
bnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgU3RlcFJhbmdlIGNyZWF0ZVN0ZXBSYW5nZShBbnlT
dGVwSGFuZGxpbmcpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBwYXJzZVRvRGF0
ZUNvbXBvbmVudHNJbnRlcm5hbChjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCwgRGF0ZUNv
bXBvbmVudHMqKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgc2V0TWlsbGlzZWNv
bmRUb0RhdGVDb21wb25lbnRzKGRvdWJsZSwgRGF0ZUNvbXBvbmVudHMqKSBjb25zdCBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIGJvb2wgc2V0TWlsbGlzZWNvbmRUb0RhdGVDb21wb25lbnRzKGNvbnN0
IERlY2ltYWwmLCBEYXRlQ29tcG9uZW50cyopIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwg
Ym9vbCBpc1RpbWVGaWVsZCgpIGNvbnN0IE9WRVJSSURFOwogfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9XZWVrSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
V2Vla0lucHV0VHlwZS5jcHAKaW5kZXggM2E2MjI4OTExYzUzY2YyMzM1MDZiZTA0MjVhN2ZlZjQ1
M2UxMzI1Yy4uYzMwYTgwZjMyY2ZlOWY2MWM3MTU5MTgwNTIzYmQ2ZDY2MWY3MmE2NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9XZWVrSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL1dlZWtJbnB1dFR5cGUuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVk
ZSAiRGF0ZUNvbXBvbmVudHMuaCIKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCiAjaW5j
bHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1
ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9XRUVLKQpAQCAt
NDIsOSArNDMsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1M
TmFtZXM7CiAKLXN0YXRpYyBjb25zdCBkb3VibGUgd2Vla0RlZmF1bHRTdGVwQmFzZSA9IC0yNTky
MDAwMDAuMDsgLy8gVGhlIGZpcnN0IGRheSBvZiAxOTcwLVcwMS4KLXN0YXRpYyBjb25zdCBkb3Vi
bGUgd2Vla0RlZmF1bHRTdGVwID0gMS4wOwotc3RhdGljIGNvbnN0IGRvdWJsZSB3ZWVrU3RlcFNj
YWxlRmFjdG9yID0gNjA0ODAwMDAwLjA7CitzdGF0aWMgY29uc3QgaW50IHdlZWtEZWZhdWx0U3Rl
cEJhc2UgPSAtMjU5MjAwMDAwOyAvLyBUaGUgZmlyc3QgZGF5IG9mIDE5NzAtVzAxLgorc3RhdGlj
IGNvbnN0IGludCB3ZWVrRGVmYXVsdFN0ZXAgPSAxOworc3RhdGljIGNvbnN0IGludCB3ZWVrU3Rl
cFNjYWxlRmFjdG9yID0gNjA0ODAwMDAwOwogCiBQYXNzT3duUHRyPElucHV0VHlwZT4gV2Vla0lu
cHV0VHlwZTo6Y3JlYXRlKEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQpCiB7CkBAIC02NSwxMCAr
NjYsMTAgQEAgU3RlcFJhbmdlIFdlZWtJbnB1dFR5cGU6OmNyZWF0ZVN0ZXBSYW5nZShBbnlTdGVw
SGFuZGxpbmcgYW55U3RlcEhhbmRsaW5nKSBjb25zdAogewogICAgIERFRklORV9TVEFUSUNfTE9D
QUwoY29uc3QgU3RlcFJhbmdlOjpTdGVwRGVzY3JpcHRpb24sIHN0ZXBEZXNjcmlwdGlvbiwgKHdl
ZWtEZWZhdWx0U3RlcCwgd2Vla0RlZmF1bHRTdGVwQmFzZSwgd2Vla1N0ZXBTY2FsZUZhY3Rvciwg
U3RlcFJhbmdlOjpQYXJzZWRTdGVwVmFsdWVTaG91bGRCZUludGVnZXIpKTsKIAotICAgIGRvdWJs
ZSBzdGVwQmFzZSA9IHBhcnNlVG9Eb3VibGUoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1p
bkF0dHIpLCB3ZWVrRGVmYXVsdFN0ZXBCYXNlKTsKLSAgICBkb3VibGUgbWluaW11bSA9IHBhcnNl
VG9Eb3VibGUoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpLCBEYXRlQ29tcG9u
ZW50czo6bWluaW11bVdlZWsoKSk7Ci0gICAgZG91YmxlIG1heGltdW0gPSBwYXJzZVRvRG91Ymxl
KGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShtYXhBdHRyKSwgRGF0ZUNvbXBvbmVudHM6Om1h
eGltdW1XZWVrKCkpOwotICAgIFN0ZXBSYW5nZTo6RG91YmxlV2l0aERlY2ltYWxQbGFjZXNPck1p
c3Npbmcgc3RlcCA9IFN0ZXBSYW5nZTo6cGFyc2VTdGVwKGFueVN0ZXBIYW5kbGluZywgc3RlcERl
c2NyaXB0aW9uLCBlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUoc3RlcEF0dHIpKTsKKyAgICBj
b25zdCBEZWNpbWFsIHN0ZXBCYXNlID0gcGFyc2VUb0RlY2ltYWwoZWxlbWVudCgpLT5mYXN0R2V0
QXR0cmlidXRlKG1pbkF0dHIpLCB3ZWVrRGVmYXVsdFN0ZXBCYXNlKTsKKyAgICBjb25zdCBEZWNp
bWFsIG1pbmltdW0gPSBwYXJzZVRvRGVjaW1hbChlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUo
bWluQXR0ciksIGNvbnZlcnREb3VibGVUb0RlY2ltYWwoRGF0ZUNvbXBvbmVudHM6Om1pbmltdW1X
ZWVrKCkpKTsKKyAgICBjb25zdCBEZWNpbWFsIG1heGltdW0gPSBwYXJzZVRvRGVjaW1hbChlbGVt
ZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUobWF4QXR0ciksIGNvbnZlcnREb3VibGVUb0RlY2ltYWwo
RGF0ZUNvbXBvbmVudHM6Om1heGltdW1XZWVrKCkpKTsKKyAgICBjb25zdCBTdGVwUmFuZ2U6OkRl
Y2ltYWxPck1pc3Npbmcgc3RlcCA9IFN0ZXBSYW5nZTo6cGFyc2VTdGVwKGFueVN0ZXBIYW5kbGlu
Zywgc3RlcERlc2NyaXB0aW9uLCBlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUoc3RlcEF0dHIp
KTsKICAgICByZXR1cm4gU3RlcFJhbmdlKHN0ZXBCYXNlLCBtaW5pbXVtLCBtYXhpbXVtLCBzdGVw
LCBzdGVwRGVzY3JpcHRpb24pOwogfQogCkBAIC03OSwxMCArODAsMTAgQEAgYm9vbCBXZWVrSW5w
dXRUeXBlOjpwYXJzZVRvRGF0ZUNvbXBvbmVudHNJbnRlcm5hbChjb25zdCBVQ2hhciogY2hhcmFj
dGVycywgdW5zaWcKICAgICByZXR1cm4gb3V0LT5wYXJzZVdlZWsoY2hhcmFjdGVycywgbGVuZ3Ro
LCAwLCBlbmQpICYmIGVuZCA9PSBsZW5ndGg7CiB9CiAKLWJvb2wgV2Vla0lucHV0VHlwZTo6c2V0
TWlsbGlzZWNvbmRUb0RhdGVDb21wb25lbnRzKGRvdWJsZSB2YWx1ZSwgRGF0ZUNvbXBvbmVudHMq
IGRhdGUpIGNvbnN0Citib29sIFdlZWtJbnB1dFR5cGU6OnNldE1pbGxpc2Vjb25kVG9EYXRlQ29t
cG9uZW50cyhjb25zdCBEZWNpbWFsJiB2YWx1ZSwgRGF0ZUNvbXBvbmVudHMqIGRhdGUpIGNvbnN0
CiB7CiAgICAgQVNTRVJUKGRhdGUpOwotICAgIHJldHVybiBkYXRlLT5zZXRNaWxsaXNlY29uZHNT
aW5jZUVwb2NoRm9yV2Vlayh2YWx1ZSk7CisgICAgcmV0dXJuIGRhdGUtPnNldE1pbGxpc2Vjb25k
c1NpbmNlRXBvY2hGb3JXZWVrKGNvbnZlcnREZWNpbWFsVG9Eb3VibGUodmFsdWUpKTsKIH0KIAog
Ym9vbCBXZWVrSW5wdXRUeXBlOjppc1dlZWtGaWVsZCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1dlZWtJbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvV2Vl
a0lucHV0VHlwZS5oCmluZGV4IGNjNThhYjdkMDQ0YjQ0NWY5ZjcxZDAzNzJhMWFhZGZmYjg0ZGU5
MzIuLmNjNjJmM2E5MDU2MDJmNDQ2ODdiYzVhNDQ3OGNiMjNhMTA0YjRjMjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvV2Vla0lucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvV2Vla0lucHV0VHlwZS5oCkBAIC00Nyw3ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCBEYXRlQ29tcG9uZW50czo6VHlwZSBkYXRlVHlwZSgpIGNvbnN0IE9WRVJSSURFOwogICAg
IHZpcnR1YWwgU3RlcFJhbmdlIGNyZWF0ZVN0ZXBSYW5nZShBbnlTdGVwSGFuZGxpbmcpIGNvbnN0
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBwYXJzZVRvRGF0ZUNvbXBvbmVudHNJbnRlcm5h
bChjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCwgRGF0ZUNvbXBvbmVudHMqKSBjb25zdCBP
VkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgc2V0TWlsbGlzZWNvbmRUb0RhdGVDb21wb25lbnRz
KGRvdWJsZSwgRGF0ZUNvbXBvbmVudHMqKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJv
b2wgc2V0TWlsbGlzZWNvbmRUb0RhdGVDb21wb25lbnRzKGNvbnN0IERlY2ltYWwmLCBEYXRlQ29t
cG9uZW50cyopIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBpc1dlZWtGaWVsZCgp
IGNvbnN0IE9WRVJSSURFOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MUGFyc2VySWRpb21zLmNwcAppbmRleCBhOTlhMjFhMDhlNWJkZDA4NjVmYTMzYzczOTU1MDQw
MTcyYzM4YjMxLi45ZWQ2MDdhMGE4YWJmYmQ3ZDQ5ZmJhNzczZjdjOGQ3NzdjYzUyNWJmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcApAQCAt
NTgsNiArNTgsMTEgQEAgU3RyaW5nIHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhj
b25zdCBTdHJpbmcmIHN0cmluZykKICAgICByZXR1cm4gc3RyaW5nLnN1YnN0cmluZyhudW1MZWFk
aW5nU3BhY2VzLCBsZW5ndGggLSAobnVtTGVhZGluZ1NwYWNlcyArIG51bVRyYWlsaW5nU3BhY2Vz
KSk7CiB9CiAKK1N0cmluZyBzZXJpYWxpemVGb3JOdW1iZXJUeXBlKGNvbnN0IERlY2ltYWwmIG51
bWJlcikKK3sKKyAgICByZXR1cm4gbnVtYmVyLnRvU3RyaW5nKCk7Cit9CisKIFN0cmluZyBzZXJp
YWxpemVGb3JOdW1iZXJUeXBlKGRvdWJsZSBudW1iZXIpCiB7CiAgICAgLy8gQWNjb3JkaW5nIHRv
IEhUTUw1LCAidGhlIGJlc3QgcmVwcmVzZW50YXRpb24gb2YgdGhlIG51bWJlciBuIGFzIGEgZmxv
YXRpbmcKQEAgLTY2LDYgKzcxLDQwIEBAIFN0cmluZyBzZXJpYWxpemVGb3JOdW1iZXJUeXBlKGRv
dWJsZSBudW1iZXIpCiAgICAgcmV0dXJuIFN0cmluZyhudW1iZXJUb1N0cmluZyhudW1iZXIsIGJ1
ZmZlcikpOwogfQogCitEZWNpbWFsIHBhcnNlVG9EZWNpbWFsRm9yTnVtYmVyVHlwZShjb25zdCBT
dHJpbmcmIHN0cmluZywgY29uc3QgRGVjaW1hbCYgZmFsbGJhY2tWYWx1ZSkKK3sKKyAgICAvLyBT
ZWUgSFRNTDUgMi41LjQuMyBgUmVhbCBudW1iZXJzLicgYW5kIHBhcnNlVG9Eb3VibGVGb3JOdW1i
ZXJUeXBlCisKKyAgICAvLyBTdHJpbmc6OnRvRG91YmxlKCkgYWNjZXB0cyBsZWFkaW5nICsgYW5k
IHdoaXRlc3BhY2UgY2hhcmFjdGVycywgd2hpY2ggYXJlIG5vdCB2YWxpZCBoZXJlLgorICAgIFVD
aGFyIGZpcnN0Q2hhcmFjdGVyID0gc3RyaW5nWzBdOworICAgIGlmIChmaXJzdENoYXJhY3RlciAh
PSAnLScgJiYgZmlyc3RDaGFyYWN0ZXIgIT0gJy4nICYmICFpc0FTQ0lJRGlnaXQoZmlyc3RDaGFy
YWN0ZXIpKQorICAgICAgICByZXR1cm4gZmFsbGJhY2tWYWx1ZTsKKworICAgIERlY2ltYWwgdmFs
dWUgPSBEZWNpbWFsOjpmcm9tU3RyaW5nKHN0cmluZyk7CisgICAgaWYgKCF2YWx1ZS5pc0Zpbml0
ZSgpKQorICAgICAgICByZXR1cm4gZmFsbGJhY2tWYWx1ZTsKKworICAgIC8vIEZJWE1FOiBVSU5U
NjRfQygxNzk3NjkzMTM0ODYyMzE1OSkgc2hvdWxkIGJlIHVzZWQgYnV0IGl0IGRpZCBub3QgY29t
cGlsZSBvbiBRdCBib3RzLgorI2lmIENPTVBJTEVSKE1TVkMpCisgICAgY29uc3QgdWludDY0X3Qg
bGVhZGluZ0RpZ2l0c09mMlBvd2VyMTAyNCA9IDE3OTc2OTMxMzQ4NjIzMTU5dWk2NDsKKyNlbHNl
CisgICAgY29uc3QgdWludDY0X3QgbGVhZGluZ0RpZ2l0c09mMlBvd2VyMTAyNCA9IDE3OTc2OTMx
MzQ4NjIzMTU5dWxsOworI2VuZGlmCisgICAgRGVjaW1hbCBodG1sTWF4KERlY2ltYWw6OkVuY29k
ZWREYXRhKGxlYWRpbmdEaWdpdHNPZjJQb3dlcjEwMjQsIDI5MiwgRGVjaW1hbDo6UGx1cykpOwor
ICAgIERlY2ltYWwgaHRtbE1pbihEZWNpbWFsOjpFbmNvZGVkRGF0YShsZWFkaW5nRGlnaXRzT2Yy
UG93ZXIxMDI0LCAyOTIsIERlY2ltYWw6Ok1pbnVzKSk7CisKKyAgICBpZiAodmFsdWUgPCBodG1s
TWluIHx8IHZhbHVlID4gaHRtbE1heCkKKyAgICAgICAgcmV0dXJuIGZhbGxiYWNrVmFsdWU7CisK
KyAgICAvLyBXZSByZXR1cm4gKzAgZm9yIC0wIGNhc2UuCisgICAgcmV0dXJuIHZhbHVlLmlzWmVy
bygpID8gRGVjaW1hbCgwKSA6IHZhbHVlOworfQorCitEZWNpbWFsIHBhcnNlVG9EZWNpbWFsRm9y
TnVtYmVyVHlwZShjb25zdCBTdHJpbmcmIHN0cmluZykKK3sKKyAgICByZXR1cm4gcGFyc2VUb0Rl
Y2ltYWxGb3JOdW1iZXJUeXBlKHN0cmluZywgRGVjaW1hbDo6bmFuKCkpOworfQorCiBkb3VibGUg
cGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGRvdWJsZSBm
YWxsYmFja1ZhbHVlKQogewogICAgIC8vIFNlZSBIVE1MNSAyLjUuNC4zIGBSZWFsIG51bWJlcnMu
JwpAQCAtOTgsODQgKzEzNyw2IEBAIGRvdWJsZSBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZShj
b25zdCBTdHJpbmcmIHN0cmluZykKICAgICByZXR1cm4gcGFyc2VUb0RvdWJsZUZvck51bWJlclR5
cGUoc3RyaW5nLCBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpKTsKIH0K
IAotZG91YmxlIHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlV2l0aERlY2ltYWxQbGFjZXMoY29u
c3QgU3RyaW5nJiBzdHJpbmcsIHVuc2lnbmVkICpkZWNpbWFsUGxhY2VzLCBkb3VibGUgZmFsbGJh
Y2tWYWx1ZSkKLXsKLSAgICBpZiAoZGVjaW1hbFBsYWNlcykKLSAgICAgICAgKmRlY2ltYWxQbGFj
ZXMgPSAwOwotCi0gICAgZG91YmxlIHZhbHVlID0gcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUo
c3RyaW5nLCBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpKTsKLSAgICBp
ZiAoIWlzZmluaXRlKHZhbHVlKSkKLSAgICAgICAgcmV0dXJuIGZhbGxiYWNrVmFsdWU7Ci0KLSAg
ICBpZiAoIWRlY2ltYWxQbGFjZXMpCi0gICAgICAgIHJldHVybiB2YWx1ZTsKLQotICAgIHNpemVf
dCBkb3RJbmRleCA9IHN0cmluZy5maW5kKCcuJyk7Ci0gICAgc2l6ZV90IGVJbmRleCA9IHN0cmlu
Zy5maW5kKCdlJyk7Ci0gICAgaWYgKGVJbmRleCA9PSBub3RGb3VuZCkgCi0gICAgICAgIGVJbmRl
eCA9IHN0cmluZy5maW5kKCdFJyk7Ci0KLSAgICB1bnNpZ25lZCBiYXNlRGVjaW1hbFBsYWNlcyA9
IDA7Ci0gICAgaWYgKGRvdEluZGV4ICE9IG5vdEZvdW5kKSB7Ci0gICAgICAgIGlmIChlSW5kZXgg
PT0gbm90Rm91bmQpCi0gICAgICAgICAgICBiYXNlRGVjaW1hbFBsYWNlcyA9IHN0cmluZy5sZW5n
dGgoKSAtIGRvdEluZGV4IC0gMTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgYmFzZURlY2lt
YWxQbGFjZXMgPSBlSW5kZXggLSBkb3RJbmRleCAtIDE7Ci0gICAgfQotCi0gICAgaW50IGV4cG9u
ZW50ID0gMDsKLSAgICBpZiAoZUluZGV4ICE9IG5vdEZvdW5kKSB7Ci0gICAgICAgIHVuc2lnbmVk
IGN1cnNvciA9IGVJbmRleCArIDEsIGN1cnNvclNhdmVkOwotICAgICAgICBpbnQgZGlnaXQsIGV4
cG9uZW50U2lnbjsKLSAgICAgICAgaW50MzJfdCBleHBvbmVudDMyOwotICAgICAgICBzaXplX3Qg
bGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOwotCi0gICAgICAgIC8vIE5vdCB1c2luZyBTdHJpbmcu
dG9JbnQoKSBpbiBvcmRlciB0byBwZXJmb3JtIHRoZSBzYW1lIGNvbXB1dGF0aW9uIGFzIGR0b2Eo
KSBkb2VzLgotICAgICAgICBleHBvbmVudFNpZ24gPSAwOwotICAgICAgICBzd2l0Y2ggKGRpZ2l0
ID0gc3RyaW5nW2N1cnNvcl0pIHsKLSAgICAgICAgY2FzZSAnLSc6Ci0gICAgICAgICAgICBleHBv
bmVudFNpZ24gPSAxOwotICAgICAgICBjYXNlICcrJzoKLSAgICAgICAgICAgIGRpZ2l0ID0gc3Ry
aW5nWysrY3Vyc29yXTsKLSAgICAgICAgfQotICAgICAgICBpZiAoZGlnaXQgPj0gJzAnICYmIGRp
Z2l0IDw9ICc5JykgewotICAgICAgICAgICAgd2hpbGUgKGN1cnNvciA8IGxlbmd0aCAmJiBkaWdp
dCA9PSAnMCcpCi0gICAgICAgICAgICAgICAgZGlnaXQgPSBzdHJpbmdbKytjdXJzb3JdOwotICAg
ICAgICAgICAgaWYgKGRpZ2l0ID4gJzAnICYmIGRpZ2l0IDw9ICc5JykgewotICAgICAgICAgICAg
ICAgIGV4cG9uZW50MzIgPSBkaWdpdCAtICcwJzsKLSAgICAgICAgICAgICAgICBjdXJzb3JTYXZl
ZCA9IGN1cnNvcjsKLSAgICAgICAgICAgICAgICB3aGlsZSAoY3Vyc29yIDwgbGVuZ3RoICYmIChk
aWdpdCA9IHN0cmluZ1srK2N1cnNvcl0pID49ICcwJyAmJiBkaWdpdCA8PSAnOScpCi0gICAgICAg
ICAgICAgICAgICAgIGV4cG9uZW50MzIgPSAoMTAgKiBleHBvbmVudDMyKSArIGRpZ2l0IC0gJzAn
OwotICAgICAgICAgICAgICAgIGlmIChjdXJzb3IgLSBjdXJzb3JTYXZlZCA+IDggfHwgZXhwb25l
bnQzMiA+IDE5OTk5KQotICAgICAgICAgICAgICAgICAgICAvKiBBdm9pZCBjb25mdXNpb24gZnJv
bSBleHBvbmVudHMKLSAgICAgICAgICAgICAgICAgICAgICogc28gbGFyZ2UgdGhhdCBlIG1pZ2h0
IG92ZXJmbG93LgotICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgICAgICAgICAg
ZXhwb25lbnQgPSAxOTk5OTsgLyogc2FmZSBmb3IgMTYgYml0IGludHMgKi8KLSAgICAgICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGV4cG9uZW50ID0gc3RhdGljX2Nhc3Q8aW50
PihleHBvbmVudDMyKTsKLSAgICAgICAgICAgICAgICBpZiAoZXhwb25lbnRTaWduKQotICAgICAg
ICAgICAgICAgICAgICBleHBvbmVudCA9IC1leHBvbmVudDsKLSAgICAgICAgICAgIH0gZWxzZQot
ICAgICAgICAgICAgICAgIGV4cG9uZW50ID0gMDsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlu
dCBpbnREZWNpbWFsUGxhY2VzID0gYmFzZURlY2ltYWxQbGFjZXMgLSBleHBvbmVudDsKLSAgICBp
ZiAoaW50RGVjaW1hbFBsYWNlcyA8IDApCi0gICAgICAgICpkZWNpbWFsUGxhY2VzID0gMDsKLSAg
ICBlbHNlIGlmIChpbnREZWNpbWFsUGxhY2VzID4gMTk5OTkpCi0gICAgICAgICpkZWNpbWFsUGxh
Y2VzID0gMTk5OTk7Ci0gICAgZWxzZQotICAgICAgICAqZGVjaW1hbFBsYWNlcyA9IHN0YXRpY19j
YXN0PHVuc2lnbmVkPihpbnREZWNpbWFsUGxhY2VzKTsKLQotICAgIHJldHVybiB2YWx1ZTsKLX0K
LQotZG91YmxlIHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlV2l0aERlY2ltYWxQbGFjZXMoY29u
c3QgU3RyaW5nJiBzdHJpbmcsIHVuc2lnbmVkICpkZWNpbWFsUGxhY2VzKQotewotICAgIHJldHVy
biBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZVdpdGhEZWNpbWFsUGxhY2VzKHN0cmluZywgZGVj
aW1hbFBsYWNlcywgc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKSk7Ci19
Ci0KIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsv
I3J1bGVzLWZvci1wYXJzaW5nLWludGVnZXJzCiBib29sIHBhcnNlSFRNTEludGVnZXIoY29uc3Qg
U3RyaW5nJiBpbnB1dCwgaW50JiB2YWx1ZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxQYXJzZXJJZGlvbXMuaAppbmRleCA4YTc3NGY5ZWU0MzI1Zjc5OTZkY2VlODAyZTc4
NTkyMWYxMjAwNzIxLi4wOWQyMmRmNWEzNGIzOGU0M2Q3OGQ1ZmJmNWI1YWVmMzgwZjc4Mjk4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oCkBAIC0y
NSwxMSArMjUsMTQgQEAKICNpZm5kZWYgSFRNTFBhcnNlcklkaW9tc19oCiAjZGVmaW5lIEhUTUxQ
YXJzZXJJZGlvbXNfaAogCisjaW5jbHVkZSAiRGVjaW1hbC5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvVW5pY29kZS5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKK2NsYXNzIERlY2ltYWw7CisKIC8vIFNwYWNlIGNoYXJhY3RlcnMgYXMgZGVmaW5l
ZCBieSB0aGUgSFRNTCBzcGVjaWZpY2F0aW9uLgogYm9vbCBpc0hUTUxTcGFjZShVQ2hhcik7CiBi
b29sIGlzSFRNTExpbmVCcmVhayhVQ2hhcik7CkBAIC0zOSwxNSArNDIsMTggQEAgYm9vbCBpc05v
dEhUTUxTcGFjZShVQ2hhcik7CiBTdHJpbmcgc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3Bh
Y2VzKGNvbnN0IFN0cmluZyYpOwogCiAvLyBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgSFRNTCBz
cGVjaWZpY2F0aW9uJ3MgYWxnb3JpdGhtIHRvIGNvbnZlcnQgYSBudW1iZXIgdG8gYSBzdHJpbmcg
Zm9yIG51bWJlciBhbmQgcmFuZ2UgdHlwZXMuCitTdHJpbmcgc2VyaWFsaXplRm9yTnVtYmVyVHlw
ZShjb25zdCBEZWNpbWFsJik7CiBTdHJpbmcgc2VyaWFsaXplRm9yTnVtYmVyVHlwZShkb3VibGUp
OwogCisvLyBDb252ZXJ0IHRoZSBzcGVjaWZpZWQgc3RyaW5nIHRvIGEgZGVjaW1hbC4gSWYgdGhl
IGNvbnZlcnNpb24gZmFpbHMsIHRoZSByZXR1cm4gdmFsdWUgaXMgZmFsc2UuCisvLyBMZWFkaW5n
IG9yIHRyYWlsaW5nIGlsbGVnYWwgY2hhcmFjdGVycyBjYXVzZSBmYWlsdXJlLCBhcyBkb2VzIHBh
c3NpbmcgYW4gZW1wdHkgc3RyaW5nLgorRGVjaW1hbCBwYXJzZVRvRGVjaW1hbEZvck51bWJlclR5
cGUoY29uc3QgU3RyaW5nJik7CitEZWNpbWFsIHBhcnNlVG9EZWNpbWFsRm9yTnVtYmVyVHlwZShj
b25zdCBTdHJpbmcmLCBjb25zdCBEZWNpbWFsJiBmYWxsYmFja1ZhbHVlKTsKKwogLy8gQ29udmVy
dCB0aGUgc3BlY2lmaWVkIHN0cmluZyB0byBhIGRvdWJsZS4gSWYgdGhlIGNvbnZlcnNpb24gZmFp
bHMsIHRoZSByZXR1cm4gdmFsdWUgaXMgZmFsc2UuCiAvLyBMZWFkaW5nIG9yIHRyYWlsaW5nIGls
bGVnYWwgY2hhcmFjdGVycyBjYXVzZSBmYWlsdXJlLCBhcyBkb2VzIHBhc3NpbmcgYW4gZW1wdHkg
c3RyaW5nLgotLy8gVGhlIGRvdWJsZSogcGFyYW1ldGVyIG1heSBiZSAwIHRvIGNoZWNrIGlmIHRo
ZSBzdHJpbmcgY2FuIGJlIHBhcnNlZCB3aXRob3V0IGdldHRpbmcgdGhlIHJlc3VsdC4KIGRvdWJs
ZSBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZShjb25zdCBTdHJpbmcmKTsKIGRvdWJsZSBwYXJz
ZVRvRG91YmxlRm9yTnVtYmVyVHlwZShjb25zdCBTdHJpbmcmLCBkb3VibGUgZmFsbGJhY2tWYWx1
ZSk7Ci1kb3VibGUgcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGVXaXRoRGVjaW1hbFBsYWNlcyhj
b25zdCBTdHJpbmcmLCB1bnNpZ25lZCopOwotZG91YmxlIHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJU
eXBlV2l0aERlY2ltYWxQbGFjZXMoY29uc3QgU3RyaW5nJiwgdW5zaWduZWQqLCBkb3VibGUgZmFs
bGJhY2tWYWx1ZSk7CiAKIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9j
dXJyZW50LXdvcmsvI3J1bGVzLWZvci1wYXJzaW5nLWludGVnZXJzCiBib29sIHBhcnNlSFRNTElu
dGVnZXIoY29uc3QgU3RyaW5nJiwgaW50Jik7CkBAIC01Nyw2ICs2MywxNiBAQCBib29sIHBhcnNl
SFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCBpbnQmKTsKIAog
Ly8gSW5saW5lIGltcGxlbWVudGF0aW9ucyBvZiBzb21lIG9mIHRoZSBmdW5jdGlvbnMgZGVjbGFy
ZWQgYWJvdmUuCiAKK2lubGluZSBkb3VibGUgY29udmVydERlY2ltYWxUb0RvdWJsZShjb25zdCBE
ZWNpbWFsJiB2YWx1ZSkKK3sKKyAgICByZXR1cm4gcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUo
c2VyaWFsaXplRm9yTnVtYmVyVHlwZSh2YWx1ZSkpOworfQorCitpbmxpbmUgRGVjaW1hbCBjb252
ZXJ0RG91YmxlVG9EZWNpbWFsKGRvdWJsZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gcGFyc2VUb0Rl
Y2ltYWxGb3JOdW1iZXJUeXBlKHNlcmlhbGl6ZUZvck51bWJlclR5cGUodmFsdWUpKTsKK30KKwog
aW5saW5lIGJvb2wgaXNIVE1MU3BhY2UoVUNoYXIgY2hhcmFjdGVyKQogewogICAgIC8vIEhpc3Rv
Z3JhbSBmcm9tIEFwcGxlJ3MgcGFnZSBsb2FkIHRlc3QgY29tYmluZWQgd2l0aCBzb21lIGFkIGhv
YyBicm93c2luZyBzb21lIG90aGVyIHRlc3Qgc3VpdGVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvQ2FsZW5kYXJQaWNrZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L0NhbGVuZGFyUGlja2VyRWxlbWVudC5jcHAKaW5kZXggMWE3YjQ5ZmE2
NDhmOWVlMzc4MTQ5OTU0ZTRhNjdiZWUxNjYyY2Q1OC4uNTM1OGNjYWY3YTNkZjJlMzNhMDNlYmYw
Yzg4OTExYjBjMDg4MmJjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
Q2FsZW5kYXJQaWNrZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9DYWxlbmRhclBpY2tlckVsZW1lbnQuY3BwCkBAIC0yMDgsNyArMjA4LDcgQEAgdm9pZCBDYWxl
bmRhclBpY2tlckVsZW1lbnQ6OndyaXRlRG9jdW1lbnQoRG9jdW1lbnRXcml0ZXImIHdyaXRlcikK
ICAgICBTdHJpbmcgbWluU3RyaW5nID0gZGF0ZS50b1N0cmluZygpOwogICAgIGRhdGUuc2V0TWls
bGlzZWNvbmRzU2luY2VFcG9jaEZvckRhdGUoaW5wdXQtPm1heGltdW0oKSk7CiAgICAgU3RyaW5n
IG1heFN0cmluZyA9IGRhdGUudG9TdHJpbmcoKTsKLSAgICBkb3VibGUgc3RlcDsKKyAgICBEZWNp
bWFsIHN0ZXA7CiAgICAgU3RyaW5nIHN0ZXBTdHJpbmcgPSBpbnB1dC0+ZmFzdEdldEF0dHJpYnV0
ZShzdGVwQXR0cik7CiAgICAgaWYgKHN0ZXBTdHJpbmcuaXNFbXB0eSgpIHx8ICFpbnB1dC0+Z2V0
QWxsb3dlZFZhbHVlU3RlcCgmc3RlcCkpCiAgICAgICAgIHN0ZXBTdHJpbmcgPSAiMSI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcAppbmRl
eCA4NDIyYTMwMTk5MDIyOTkxMWI1OGI2MDA3OGRkMTgwOTY0NWQ5ZDdjLi40MjlkMTZiYjg4MDJh
Y2ZlYTAyYTAyMTZhNzY5MGViYjAyODBmZTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAKQEAgLTUxLDEwICs1MSwxMCBAQCB1c2lu
ZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWlubGluZSBzdGF0aWMg
ZG91YmxlIHNsaWRlclBvc2l0aW9uKEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQpCitpbmxpbmUg
c3RhdGljIERlY2ltYWwgc2xpZGVyUG9zaXRpb24oSFRNTElucHV0RWxlbWVudCogZWxlbWVudCkK
IHsKICAgICBjb25zdCBTdGVwUmFuZ2Ugc3RlcFJhbmdlKGVsZW1lbnQtPmNyZWF0ZVN0ZXBSYW5n
ZShSZWplY3RBbnkpKTsKLSAgICBjb25zdCBkb3VibGUgb2xkVmFsdWUgPSBwYXJzZVRvRG91Ymxl
Rm9yTnVtYmVyVHlwZShlbGVtZW50LT52YWx1ZSgpLCBzdGVwUmFuZ2UuZGVmYXVsdFZhbHVlKCkp
OworICAgIGNvbnN0IERlY2ltYWwgb2xkVmFsdWUgPSBwYXJzZVRvRGVjaW1hbEZvck51bWJlclR5
cGUoZWxlbWVudC0+dmFsdWUoKSwgc3RlcFJhbmdlLmRlZmF1bHRWYWx1ZSgpKTsKICAgICByZXR1
cm4gc3RlcFJhbmdlLnByb3BvcnRpb25Gcm9tVmFsdWUoc3RlcFJhbmdlLmNsYW1wVmFsdWUob2xk
VmFsdWUpKTsKIH0KIApAQCAtMTEwLDcgKzExMCw3IEBAIHZvaWQgUmVuZGVyU2xpZGVyVGh1bWI6
OmxheW91dCgpCiAgICAgSFRNTElucHV0RWxlbWVudCogaW5wdXQgPSBub2RlKCktPnNoYWRvd0Fu
Y2VzdG9yTm9kZSgpLT50b0lucHV0RWxlbWVudCgpOwogICAgIGJvb2wgaXNWZXJ0aWNhbCA9IHN0
eWxlKCktPmFwcGVhcmFuY2UoKSA9PSBTbGlkZXJUaHVtYlZlcnRpY2FsUGFydCB8fCBzdHlsZSgp
LT5hcHBlYXJhbmNlKCkgPT0gTWVkaWFWb2x1bWVTbGlkZXJUaHVtYlBhcnQ7CiAKLSAgICBkb3Vi
bGUgZnJhY3Rpb24gPSBzbGlkZXJQb3NpdGlvbihpbnB1dCkgKiAxMDA7CisgICAgZG91YmxlIGZy
YWN0aW9uID0gY29udmVydERlY2ltYWxUb0RvdWJsZShzbGlkZXJQb3NpdGlvbihpbnB1dCkgKiAx
MDApOwogICAgIGlmIChpc1ZlcnRpY2FsKQogICAgICAgICBzdHlsZSgpLT5zZXRUb3AoTGVuZ3Ro
KDEwMCAtIGZyYWN0aW9uLCBQZXJjZW50KSk7CiAgICAgZWxzZSBpZiAoc3R5bGUoKS0+aXNMZWZ0
VG9SaWdodERpcmVjdGlvbigpKQpAQCAtMjM2LDExICsyMzYsMTAgQEAgdm9pZCBTbGlkZXJUaHVt
YkVsZW1lbnQ6OnNldFBvc2l0aW9uRnJvbVBvaW50KGNvbnN0IExheW91dFBvaW50JiBwb2ludCkK
ICAgICBpZiAocG9zaXRpb24gPT0gY3VycmVudFBvc2l0aW9uKQogICAgICAgICByZXR1cm47CiAK
LSAgICBkb3VibGUgZnJhY3Rpb24gPSBzdGF0aWNfY2FzdDxkb3VibGU+KHBvc2l0aW9uKSAvIHRy
YWNrU2l6ZTsKLSAgICBpZiAoaXNWZXJ0aWNhbCB8fCAhcmVuZGVyQm94KCktPnN0eWxlKCktPmlz
TGVmdFRvUmlnaHREaXJlY3Rpb24oKSkKLSAgICAgICAgZnJhY3Rpb24gPSAxIC0gZnJhY3Rpb247
Ci0gICAgU3RlcFJhbmdlIHN0ZXBSYW5nZShpbnB1dC0+Y3JlYXRlU3RlcFJhbmdlKFJlamVjdEFu
eSkpOwotICAgIGRvdWJsZSB2YWx1ZSA9IHN0ZXBSYW5nZS5jbGFtcFZhbHVlKHN0ZXBSYW5nZS52
YWx1ZUZyb21Qcm9wb3J0aW9uKGZyYWN0aW9uKSk7CisgICAgY29uc3QgRGVjaW1hbCByYXRpbyA9
IGNvbnZlcnREb3VibGVUb0RlY2ltYWwoc3RhdGljX2Nhc3Q8ZG91YmxlPihwb3NpdGlvbikgLyB0
cmFja1NpemUpOworICAgIGNvbnN0IERlY2ltYWwgZnJhY3Rpb24gPSBpc1ZlcnRpY2FsIHx8ICFy
ZW5kZXJCb3goKS0+c3R5bGUoKS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gIERlY2ltYWwo
MSkgLSByYXRpbyA6IHJhdGlvOworICAgIGNvbnN0IFN0ZXBSYW5nZSBzdGVwUmFuZ2UoaW5wdXQt
PmNyZWF0ZVN0ZXBSYW5nZShSZWplY3RBbnkpKTsKKyAgICBjb25zdCBEZWNpbWFsIHZhbHVlID0g
c3RlcFJhbmdlLmNsYW1wVmFsdWUoc3RlcFJhbmdlLnZhbHVlRnJvbVByb3BvcnRpb24oZnJhY3Rp
b24pKTsKIAogICAgIC8vIEZJWE1FOiBUaGlzIGlzIG5vIGxvbmdlciBiZWluZyBzZXQgZnJvbSBy
ZW5kZXJlci4gQ29uc2lkZXIgdXBkYXRpbmcgdGhlIG1ldGhvZCBuYW1lLgogICAgIGlucHV0LT5z
ZXRWYWx1ZUZyb21SZW5kZXJlcihzZXJpYWxpemVGb3JOdW1iZXJUeXBlKHZhbHVlKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EZWNpbWFsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0RlY2ltYWwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZhYjgyNjVlYjc4NTkzNTdiNjgw
MzYyNzk2Zjk4MzhlNzM2YjJlZDgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9EZWNpbWFsLmNwcApAQCAtMCwwICsxLDExMTMgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgor
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiRGVjaW1hbC5oIgorCisjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUg
PGZsb2F0Lmg+CisKKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9O
b25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgRGVjaW1hbFByaXZhdGUgeworCit1c2luZyBu
YW1lc3BhY2Ugc3RkOworCisvLyBGSVhNRTogVUlOVDY0X0MoMHgxNjM0NTc4NUQ4OUZGRkYpIHNo
b3VsZCBiZSB1c2VkIGJ1dCBpdCBkaWQgbm90IGNvbXBpbGUgb24gUXQgYm90cy4KKyNpZiBDT01Q
SUxFUihNU1ZDKQorc3RhdGljIGNvbnN0IHVpbnQ2NF90IE1heENvZWZmaWNpZW50ID0gMHgxNjM0
NTc4NUQ4OUZGRkZ1aTY0OyAvLyA5OTk5OTk5OTk5OTk5OTk5OTk7IC8vIDE4IDkncworI2Vsc2UK
K3N0YXRpYyBjb25zdCB1aW50NjRfdCBNYXhDb2VmZmljaWVudCA9IDB4MTYzNDU3ODVEODlGRkZG
dWxsOyAvLyA5OTk5OTk5OTk5OTk5OTk5OTk7IC8vIDE4IDkncworI2VuZGlmCisKK3N0YXRpYyBj
b25zdCB1aW50MzJfdCBFeHBvbmVudE1hc2sgPSAweDdGRjsKKworc3RhdGljIGNvbnN0IHVpbnQz
Ml90IE5lZ2F0aXZlSW5maW5pdHlQYXR0ZXJuID0gdWludDMyX3QoMHg4MDAwMDdGRik7CitzdGF0
aWMgY29uc3QgdWludDMyX3QgUG9zaXRpdmVJbmZpbml0eVBhdHRlcm4gPSB1aW50MzJfdCgweDAw
MDAwN0ZGKTsKKworc3RhdGljIGNvbnN0IHVpbnQzMl90IE5hTlBhdHRlcm4gPSB1aW50MzJfdCgw
eDAwMDAwRkZGKTsKKworc3RhdGljIGNvbnN0IHVpbnQzMl90IE5lZ2F0aXZlWmVyb1BhdHRlcm4g
PSB1aW50MzJfdCgweDgwMDAwM0ZGKTsKK3N0YXRpYyBjb25zdCB1aW50MzJfdCBQb3NpdGl2ZVpl
cm9QYXR0ZXJuID0gdWludDMyX3QoMHgwMDAwMDNGRik7CisKK3N0YXRpYyBjb25zdCB1aW50MzJf
dCBOZWdhdGl2ZVBhdHRlcm4gPSB1aW50MzJfdCgweDgwMDAwMDAwKTsKK3N0YXRpYyBjb25zdCB1
aW50MzJfdCBQb3NpdGl2ZVBhdHRlcm4gPSAwOworCisvLyBUaGlzIGNsYXNzIGhhbmRsZXMgRGVj
aW1hbCBzcGVjaWFsIHZhbHVlcy4KK2NsYXNzIFNwZWNpYWxWYWx1ZUhhbmRsZXIgeworICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFNwZWNpYWxWYWx1ZUhhbmRsZXIpOworcHVibGljOgorICAgIGVu
dW0gSGFuZGxlUmVzdWx0IHsKKyAgICAgICAgQm90aEZpbml0ZSwKKyAgICAgICAgQm90aGluZmlu
aXR5LAorICAgICAgICBFaXRoZXJOYU4sCisgICAgICAgIExoc0lzaW5maW5pdHksCisgICAgICAg
IFJoc0lzaW5maW5pdHksCisgICAgfTsKKworICAgIFNwZWNpYWxWYWx1ZUhhbmRsZXIoY29uc3Qg
RGVjaW1hbCYsIGNvbnN0IERlY2ltYWwmKTsKKyAgICBIYW5kbGVSZXN1bHQgaGFuZGxlKCk7Cisg
ICAgRGVjaW1hbCB2YWx1ZSgpIGNvbnN0OworCitwcml2YXRlOgorICAgIGVudW0gUmVzdWx0IHsK
KyAgICAgICAgUmVzdWx0SXNMaHMsCisgICAgICAgIFJlc3VsdElzUmhzLAorICAgICAgICBSZXN1
bHRJc1Vua25vd24sCisgICAgfTsKKworICAgIGNvbnN0IERlY2ltYWwmIG1fbGhzOworICAgIFJl
c3VsdCBtX3Jlc3VsdDsKKyAgICBjb25zdCBEZWNpbWFsJiBtX3JoczsKK307CisKKy8vIFRoaXMg
Y2xhc3MgaXMgdXNlZCBmb3IgMTI4IGJpdCB1bnNpZ25lZCBpbnRlZ2VyIGFyaXRobWV0aWMuCitj
bGFzcyBVSW50MTI4IHsKK3B1YmxpYzoKKyAgICBVSW50MTI4KHVpbnQ2NF90LCB1aW50NjRfdCk7
CisKKyAgICBVSW50MTI4JiBvcGVyYXRvciAvPSh1aW50MzJfdCk7CisKKyAgICB1aW50NjRfdCBo
aWdoKCkgY29uc3QgeyByZXR1cm4gbV9oaWdoOyB9CisgICAgdWludDY0X3QgbG93KCkgY29uc3Qg
eyByZXR1cm4gbV9sb3c7IH0KKworICAgIHN0YXRpYyBVSW50MTI4IG11bHRpcGx5KHVpbnQ2NF90
LCB1aW50NjRfdCk7CisKK3ByaXZhdGU6CisgICAgYm9vbCBpc1plcm8oKSBjb25zdCB7IHJldHVy
biAhbV9sb3cgJiYgIW1faGlnaDsgfQorCisgICAgdWludDY0X3QgbV9oaWdoOworICAgIHVpbnQ2
NF90IG1fbG93OworfTsKKworc3RhdGljIGludCBjb3VudERpZ2l0cyh1aW50NjRfdCB4KQorewor
ICAgIGludCBudW1iZXJPZkRpZ2l0cyA9IDA7CisgICAgdWludDY0X3QgcG93ZXJPZjEwID0gMTsK
KyAgICB3aGlsZSAoeCA+PSBwb3dlck9mMTApIHsKKyAgICAgICAgKytudW1iZXJPZkRpZ2l0czsK
KyAgICAgICAgaWYgKHBvd2VyT2YxMCA+PSB1aW50NjRfdCgtMSkgLyAxMCkKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBwb3dlck9mMTAgKj0gMTA7CisgICAgfQorICAgIHJldHVybiBudW1i
ZXJPZkRpZ2l0czsKK30KKworc3RhdGljIHVpbnQ2NF90IG11bHRpcGx5SGlnaCh1aW50NjRfdCB1
LCB1aW50NjRfdCB2KQoreworICAgIGNvbnN0IGludCBuID0gNjQ7CisgICAgY29uc3QgaW50IG4y
ID0gbiAvIDI7CisgICAgY29uc3QgdWludDY0X3QgbWFzayA9ICh1aW50NjRfdCgxKSA8PCBuMikg
LSAxOworICAgIHVpbnQ2NF90IHUwID0gdSAmIG1hc2s7CisgICAgdWludDY0X3QgdTEgPSB1ID4+
IG4yOworICAgIHVpbnQ2NF90IHYwID0gdiAmIG1hc2s7CisgICAgdWludDY0X3QgdjEgPSB2ID4+
IG4yOworICAgIHVpbnQ2NF90IHcwID0gdTAgKiB2MDsKKyAgICB1aW50NjRfdCB0dCA9IHUxICog
djAgKyAodzAgPj4gbjIpOworICAgIHVpbnQ2NF90IHcxID0gdHQgJiBtYXNrOworICAgIHVpbnQ2
NF90IHcyID0gdHQgPj4gbjI7CisgICAgdzEgPSB1MCAqIHYxICsgdzE7CisgICAgcmV0dXJuIHUx
ICogdjEgKyB3MiArICh3MSA+PiBuMik7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdGF0
aWMgVCBwb3dlcihUIGNvbnN0IHgsIHVuc2lnbmVkIG4pCit7CisgICAgVCB5ID0gMTsKKyAgICBU
IHogPSB4OworICAgIGZvciAoOzspIHsKKyAgICAgICAgaWYgKG4gJiAxKQorICAgICAgICAgICAg
eSA9IHkgKiB6OworCisgICAgICAgIG4gPj49IDE7CisgICAgICAgIGlmICghbikKKyAgICAgICAg
ICAgIHJldHVybiB5OworCisgICAgICAgIHogPSB6ICogejsKKyAgICB9Cit9CisKK3N0YXRpYyB1
aW50NjRfdCBzY2FsZURvd24odWludDY0X3QgeCwgaW50IG4pCit7CisgICAgQVNTRVJUKG4gPj0g
MCk7CisgICAgd2hpbGUgKG4gPiAwICYmIHgpIHsKKyAgICAgICAgeCAvPSAxMDsKKyAgICAgICAg
LS1uOworICAgIH0KKyAgICByZXR1cm4geDsKK30KKworc3RhdGljIHVpbnQ2NF90IHNjYWxlVXAo
dWludDY0X3QgeCwgaW50IG4pCit7CisgICAgQVNTRVJUKG4gPj0gMCk7CisgICAgQVNTRVJUKG4g
PCBEZWNpbWFsOjpQcmVjaXNpb24pOworICAgIHVpbnQ2NF90IHJlc3VsdCA9IHggKiBwb3dlcih1
aW50NjRfdCgxMCksIG4pOworICAgIEFTU0VSVChyZXN1bHQgPj0geCk7CisgICAgcmV0dXJuIHJl
c3VsdDsKK30KKworU3BlY2lhbFZhbHVlSGFuZGxlcjo6U3BlY2lhbFZhbHVlSGFuZGxlcihjb25z
dCBEZWNpbWFsJiBsaHMsIGNvbnN0IERlY2ltYWwmIHJocykKKyAgICA6IG1fbGhzKGxocyksIG1f
cmVzdWx0KFJlc3VsdElzVW5rbm93biksIG1fcmhzKHJocykKK3sKK30KKworU3BlY2lhbFZhbHVl
SGFuZGxlcjo6SGFuZGxlUmVzdWx0IFNwZWNpYWxWYWx1ZUhhbmRsZXI6OmhhbmRsZSgpCit7Cisg
ICAgaWYgKG1fbGhzLmlzRmluaXRlKCkgJiYgbV9yaHMuaXNGaW5pdGUoKSkKKyAgICAgICAgcmV0
dXJuIEJvdGhGaW5pdGU7CisKKyAgICBjb25zdCBEZWNpbWFsOjpGb3JtYXRDbGFzcyBsaHNDbGFz
cyA9IG1fbGhzLmZvcm1hdENsYXNzKCk7CisgICAgY29uc3QgRGVjaW1hbDo6Rm9ybWF0Q2xhc3Mg
cmhzQ2xhc3MgPSBtX3Jocy5mb3JtYXRDbGFzcygpOworICAgIGlmIChsaHNDbGFzcyA9PSBEZWNp
bWFsOjpDbGFzc05hTikgeworICAgICAgICBtX3Jlc3VsdCA9IFJlc3VsdElzTGhzOworICAgICAg
ICByZXR1cm4gRWl0aGVyTmFOOworICAgICB9CisKKyAgICBpZiAocmhzQ2xhc3MgPT0gRGVjaW1h
bDo6Q2xhc3NOYU4pIHsKKyAgICAgICAgbV9yZXN1bHQgPSBSZXN1bHRJc1JoczsKKyAgICAgICAg
cmV0dXJuIEVpdGhlck5hTjsKKyAgICAgfQorCisgICAgaWYgKGxoc0NsYXNzID09IERlY2ltYWw6
OkNsYXNzSW5maW5pdHkpCisgICAgICAgIHJldHVybiByaHNDbGFzcyA9PSBEZWNpbWFsOjpDbGFz
c0luZmluaXR5ID8gQm90aGluZmluaXR5IDogTGhzSXNpbmZpbml0eTsKKworICAgIGlmIChyaHND
bGFzcyA9PSBEZWNpbWFsOjpDbGFzc0luZmluaXR5KQorICAgICAgICByZXR1cm4gUmhzSXNpbmZp
bml0eTsKKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBCb3RoRmluaXRl
OworfQorCitEZWNpbWFsIFNwZWNpYWxWYWx1ZUhhbmRsZXI6OnZhbHVlKCkgY29uc3QKK3sKKyAg
ICBzd2l0Y2ggKG1fcmVzdWx0KSB7CisgICAgY2FzZSBSZXN1bHRJc0xoczoKKyAgICAgICAgcmV0
dXJuIG1fbGhzOworICAgIGNhc2UgUmVzdWx0SXNSaHM6CisgICAgICAgIHJldHVybiBtX3JoczsK
KyAgICBjYXNlIFJlc3VsdElzVW5rbm93bjoKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIG1fbGhzOworICAgIH0KK30KKworVUludDEy
ODo6VUludDEyOCh1aW50NjRfdCBsb3csIHVpbnQ2NF90IGhpZ2gpCisgICAgOiBtX2hpZ2goaGln
aCksIG1fbG93KGxvdykKK3sKK30KKworVUludDEyOCYgVUludDEyODo6b3BlcmF0b3IgLz0oY29u
c3QgdWludDMyX3QgZGl2aXNvcikKK3sKKyAgICBpZiAoIW1faGlnaCkgeworICAgICAgICBtX2xv
dyAvPSBkaXZpc29yOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgdWludDMy
X3QgZGl2aWRlbmRbNF07CisgICAgZGl2aWRlbmRbMF0gPSB1aW50MzJfdChtX2xvdyAmIHVpbnQz
Ml90KC0xKSk7CisgICAgZGl2aWRlbmRbMV0gPSB1aW50MzJfdChtX2xvdyA+PiAzMik7CisgICAg
ZGl2aWRlbmRbMl0gPSB1aW50MzJfdChtX2hpZ2ggJiB1aW50MzJfdCgtMSkpOworICAgIGRpdmlk
ZW5kWzNdID0gdWludDMyX3QobV9oaWdoID4+IDMyKTsKKworICAgIHVpbnQzMl90IHF1b3RpZW50
WzRdOworICAgIHVpbnQzMl90IHJlbWFpbmRlciA9IDA7CisgICAgZm9yIChpbnQgaSA9IDM7IGkg
Pj0gMDsgLS1pKSB7CisgICAgICAgIGNvbnN0IHVpbnQ2NF90IHdvcmsgPSAodWludDY0X3QocmVt
YWluZGVyKSA8PCAzMikgfCBkaXZpZGVuZFtpXTsKKyAgICAgICAgcmVtYWluZGVyID0gdWludDMy
X3Qod29yayAlIGRpdmlzb3IpOworICAgICAgICBxdW90aWVudFtpXSA9IHVpbnQzMl90KHdvcmsg
LyBkaXZpc29yKTsKKyAgICB9CisgICAgbV9sb3cgPSBxdW90aWVudFswXSB8ICh1aW50NjRfdChx
dW90aWVudFsxXSkgPDwgMzIpOworICAgIG1faGlnaCA9IHF1b3RpZW50WzJdIHwgKHVpbnQ2NF90
KHF1b3RpZW50WzNdKSA8PCAzMik7CisgICAgcmV0dXJuICp0aGlzOworfQorCitVSW50MTI4IFVJ
bnQxMjg6Om11bHRpcGx5KHVpbnQ2NF90IHUsIHVpbnQ2NF90IHYpCit7CisgICAgcmV0dXJuIFVJ
bnQxMjgodSAqIHYsIG11bHRpcGx5SGlnaCh1LCB2KSk7Cit9CisKK30gLy8gRGVjaW1hbFByaXZh
dGUKKwordXNpbmcgbmFtZXNwYWNlIERlY2ltYWxQcml2YXRlOworCitEZWNpbWFsOjpFbmNvZGVk
RGF0YTo6RW5jb2RlZERhdGEodWludDMyX3QgcGF0dGVybikKKyAgICA6IG1fY29lZmZpY2llbnQo
MCkKKyAgICAsIG1fcGFja2VkRmllbGQocGF0dGVybikKK3sKKyAgICBBU1NFUlQoKHBhdHRlcm4g
JiBQb3NpdGl2ZVplcm9QYXR0ZXJuKSA9PSBQb3NpdGl2ZVplcm9QYXR0ZXJuKTsKK30KKworRGVj
aW1hbDo6RW5jb2RlZERhdGE6OkVuY29kZWREYXRhKHVpbnQ2NF90IGNvZWZmaWNpZW50LCBjb25z
dCBpbnQgZXhwb25lbnQsIGNvbnN0IFNpZ24gc2lnbikKK3sKKyAgICBpbnQgcmF3RXhwb25lbnQg
PSBleHBvbmVudCArIEViaWFzOworICAgIGlmICh1bnNpZ25lZChyYXdFeHBvbmVudCkgPCB1bnNp
Z25lZChFbWF4KSkgeworICAgICAgICB3aGlsZSAoY29lZmZpY2llbnQgPj0gTWF4Q29lZmZpY2ll
bnQpIHsKKyAgICAgICAgICAgIGNvZWZmaWNpZW50IC89IDEwOworICAgICAgICAgICAgKytyYXdF
eHBvbmVudDsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChyYXdFeHBvbmVudCA+PSBFbWF4
KSB7CisgICAgICAgIG1fY29lZmZpY2llbnQgPSAwOworICAgICAgICBtX3BhY2tlZEZpZWxkID0g
c2lnbiA9PSBNaW51cyA/IE5lZ2F0aXZlSW5maW5pdHlQYXR0ZXJuIDogUG9zaXRpdmVJbmZpbml0
eVBhdHRlcm47CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAocmF3RXhwb25lbnQg
PCAwKSB7CisgICAgICAgIG1fY29lZmZpY2llbnQgPSAwOworICAgICAgICBtX3BhY2tlZEZpZWxk
ID0gc2lnbiA9PSBNaW51cyA/IE5lZ2F0aXZlWmVyb1BhdHRlcm4gOiBQb3NpdGl2ZVplcm9QYXR0
ZXJuOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9jb2VmZmljaWVudCA9IGNvZWZm
aWNpZW50OworICAgIG1fcGFja2VkRmllbGQgPSByYXdFeHBvbmVudCB8IChzaWduID09IE1pbnVz
ID8gTmVnYXRpdmVQYXR0ZXJuIDogUG9zaXRpdmVQYXR0ZXJuKTsKK30KKwordWludDY0X3QgRGVj
aW1hbDo6RW5jb2RlZERhdGE6OmNvZWZmaWNpZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9j
b2VmZmljaWVudDsKK30KKworaW50IERlY2ltYWw6OkVuY29kZWREYXRhOjpleHBvbmVudCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIHJhd0V4cG9uZW50KCkgLSBEZWNpbWFsOjpFYmlhczsKK30KKwor
Ym9vbCBEZWNpbWFsOjpFbmNvZGVkRGF0YTo6aXNGaW5pdGUoKSBjb25zdAoreworICAgIHJldHVy
biAhaXNTcGVjaWFsKCk7Cit9CisKK2Jvb2wgRGVjaW1hbDo6RW5jb2RlZERhdGE6OmlzU3BlY2lh
bCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHJhd0V4cG9uZW50KCkgPT0gRGVjaW1hbDo6RW1heDsK
K30KKworYm9vbCBEZWNpbWFsOjpFbmNvZGVkRGF0YTo6aXNaZXJvKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gaXNGaW5pdGUoKSAmJiAhbV9jb2VmZmljaWVudDsKK30KKworaW50IERlY2ltYWw6OkVu
Y29kZWREYXRhOjpyYXdFeHBvbmVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGludChtX3BhY2tl
ZEZpZWxkICYgRXhwb25lbnRNYXNrKTsKK30KKworRGVjaW1hbDo6U2lnbiBEZWNpbWFsOjpFbmNv
ZGVkRGF0YTo6c2lnbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIGludChtX3BhY2tlZEZpZWxkKSA8
IDAgPyBNaW51cyA6IFBsdXM7Cit9CisKK3ZvaWQgRGVjaW1hbDo6RW5jb2RlZERhdGE6OnNldFNp
Z24oY29uc3QgU2lnbiBzaWduKQoreworICAgIGlmIChzaWduID09IE1pbnVzKQorICAgICAgICBt
X3BhY2tlZEZpZWxkIHw9IHVpbnQzMl90KDEpIDw8IDMxOworICAgIGVsc2UKKyAgICAgICAgbV9w
YWNrZWRGaWVsZCAmPSB+KHVpbnQzMl90KDEpIDw8IDMxKTsKK30KKworRGVjaW1hbDo6RGVjaW1h
bCgpCisgICAgOiBtX2RhdGEoMCwgMCwgUGx1cykKK3sKK30KKworRGVjaW1hbDo6RGVjaW1hbChp
bnQzMl90IGkzMikKKyAgICA6IG1fZGF0YShpMzIgPCAwID8gdWludDMyX3QoLWkzMikgOiBpMzIs
IDAsIGkzMiA8IDAgPyBNaW51cyA6IFBsdXMpCit7Cit9CisKK0RlY2ltYWw6OkRlY2ltYWwodWlu
dDY0X3QgY29lZmZpY2llbnQsIGludCBleHBvbmVudCwgU2lnbiBzaWduKQorICAgIDogbV9kYXRh
KGNvZWZmaWNpZW50LCBleHBvbmVudCwgc2lnbikKK3sKK30KKworRGVjaW1hbDo6RGVjaW1hbChj
b25zdCBFbmNvZGVkRGF0YSYgZGF0YSkKKyAgICA6IG1fZGF0YShkYXRhKQoreworfQorCitEZWNp
bWFsOjpEZWNpbWFsKGNvbnN0IERlY2ltYWwmIG90aGVyKQorICAgIDogbV9kYXRhKG90aGVyLm1f
ZGF0YSkKK3sKK30KKworRGVjaW1hbCYgRGVjaW1hbDo6b3BlcmF0b3IgPShjb25zdCBEZWNpbWFs
JiBvdGhlcikKK3sKKyAgICBtX2RhdGEgPSBvdGhlci5tX2RhdGE7CisgICAgcmV0dXJuICp0aGlz
OworfQorCitEZWNpbWFsJiBEZWNpbWFsOjpvcGVyYXRvciArPShjb25zdCBEZWNpbWFsJiBvdGhl
cikKK3sKKyAgICBtX2RhdGEgPSAoKnRoaXMgKyBvdGhlcikubV9kYXRhOworICAgIHJldHVybiAq
dGhpczsKK30KKworRGVjaW1hbCYgRGVjaW1hbDo6b3BlcmF0b3IgLT0oY29uc3QgRGVjaW1hbCYg
b3RoZXIpCit7CisgICAgbV9kYXRhID0gKCp0aGlzIC0gb3RoZXIpLm1fZGF0YTsKKyAgICByZXR1
cm4gKnRoaXM7Cit9CisKK0RlY2ltYWwmIERlY2ltYWw6Om9wZXJhdG9yICo9KGNvbnN0IERlY2lt
YWwmIG90aGVyKQoreworICAgIG1fZGF0YSA9ICgqdGhpcyAqIG90aGVyKS5tX2RhdGE7CisgICAg
cmV0dXJuICp0aGlzOworfQorCitEZWNpbWFsJiBEZWNpbWFsOjpvcGVyYXRvciAvPShjb25zdCBE
ZWNpbWFsJiBvdGhlcikKK3sKKyAgICBtX2RhdGEgPSAoKnRoaXMgLyBvdGhlcikubV9kYXRhOwor
ICAgIHJldHVybiAqdGhpczsKK30KKworRGVjaW1hbCBEZWNpbWFsOjpvcGVyYXRvciAtKCkgY29u
c3QKK3sKKyAgICBEZWNpbWFsIHJlc3VsdCgqdGhpcyk7CisgICAgcmVzdWx0Lm1fZGF0YS5zZXRT
aWduKGludmVydFNpZ24obV9kYXRhLnNpZ24oKSkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisK
K0RlY2ltYWwgRGVjaW1hbDo6b3BlcmF0b3IgKyhjb25zdCBEZWNpbWFsJiByaHMpIGNvbnN0Cit7
CisgICAgY29uc3QgRGVjaW1hbCYgbGhzID0gKnRoaXM7CisgICAgY29uc3QgU2lnbiBsaHNTaWdu
ID0gbGhzLnNpZ24oKTsKKyAgICBjb25zdCBTaWduIHJoc1NpZ24gPSByaHMuc2lnbigpOworCisg
ICAgU3BlY2lhbFZhbHVlSGFuZGxlciBoYW5kbGVyKGxocywgcmhzKTsKKyAgICBzd2l0Y2ggKGhh
bmRsZXIuaGFuZGxlKCkpIHsKKyAgICBjYXNlIFNwZWNpYWxWYWx1ZUhhbmRsZXI6OkJvdGhGaW5p
dGU6CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBTcGVjaWFsVmFsdWVIYW5kbGVyOjpCb3Ro
aW5maW5pdHk6CisgICAgICAgIHJldHVybiBsaHNTaWduID09IHJoc1NpZ24gPyBsaHMgOiBuYW4o
KTsKKworICAgIGNhc2UgU3BlY2lhbFZhbHVlSGFuZGxlcjo6RWl0aGVyTmFOOgorICAgICAgICBy
ZXR1cm4gaGFuZGxlci52YWx1ZSgpOworCisgICAgY2FzZSBTcGVjaWFsVmFsdWVIYW5kbGVyOjpM
aHNJc2luZmluaXR5OgorICAgICAgICByZXR1cm4gbGhzOworCisgICAgY2FzZSBTcGVjaWFsVmFs
dWVIYW5kbGVyOjpSaHNJc2luZmluaXR5OgorICAgICAgICByZXR1cm4gcmhzOworICAgIH0KKwor
ICAgIEFTU0VSVChsaHMuaXNGaW5pdGUoKSk7CisgICAgQVNTRVJUKHJocy5pc0Zpbml0ZSgpKTsK
KworICAgIGNvbnN0IGludCBsaHNFeHBvbmVudCA9IGxocy5leHBvbmVudCgpOworICAgIGNvbnN0
IGludCByaHNFeHBvbmVudCA9IHJocy5leHBvbmVudCgpOworICAgIGludCByZXN1bHRFeHBvbmVu
dCA9IG1pbihsaHNFeHBvbmVudCwgcmhzRXhwb25lbnQpOworICAgIHVpbnQ2NF90IGxoc0NvZWZm
aWNpZW50ID0gbGhzLm1fZGF0YS5jb2VmZmljaWVudCgpOworICAgIHVpbnQ2NF90IHJoc0NvZWZm
aWNpZW50ID0gcmhzLm1fZGF0YS5jb2VmZmljaWVudCgpOworCisgICAgLy8gTWFrZSBjb2VmZmlj
aWVudCBhbGlnbmVkLgorICAgIGlmIChsaHNFeHBvbmVudCA+IHJoc0V4cG9uZW50KSB7CisgICAg
ICAgIGNvbnN0IGludCBudW1iZXJPZkxIU0RpZ2l0cyA9IGNvdW50RGlnaXRzKGxoc0NvZWZmaWNp
ZW50KTsKKyAgICAgICAgaWYgKG51bWJlck9mTEhTRGlnaXRzKSB7CisgICAgICAgICAgICBjb25z
dCBpbnQgbGhzU2hpZnRBbW91bnQgPSBsaHNFeHBvbmVudCAtIHJoc0V4cG9uZW50OworICAgICAg
ICAgICAgY29uc3QgaW50IG92ZXJmbG93ID0gbnVtYmVyT2ZMSFNEaWdpdHMgKyBsaHNTaGlmdEFt
b3VudCAtIFByZWNpc2lvbjsKKyAgICAgICAgICAgIGlmIChvdmVyZmxvdyA8PSAwKQorICAgICAg
ICAgICAgICAgIGxoc0NvZWZmaWNpZW50ID0gc2NhbGVVcChsaHNDb2VmZmljaWVudCwgbGhzU2hp
ZnRBbW91bnQpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgbGhzQ29lZmZp
Y2llbnQgPSBzY2FsZVVwKGxoc0NvZWZmaWNpZW50LCBsaHNTaGlmdEFtb3VudCAtIG92ZXJmbG93
KTsKKyAgICAgICAgICAgICAgICByaHNDb2VmZmljaWVudCA9IHNjYWxlRG93bihyaHNDb2VmZmlj
aWVudCwgb3ZlcmZsb3cpOworICAgICAgICAgICAgICAgIHJlc3VsdEV4cG9uZW50ICs9IG92ZXJm
bG93OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICB9IGlmIChsaHNFeHBvbmVudCA8
IHJoc0V4cG9uZW50KSB7CisgICAgICAgIGNvbnN0IGludCBudW1iZXJPZlJIU0RpZ2l0cyA9IGNv
dW50RGlnaXRzKHJoc0NvZWZmaWNpZW50KTsKKyAgICAgICAgaWYgKG51bWJlck9mUkhTRGlnaXRz
KSB7CisgICAgICAgICAgICBjb25zdCBpbnQgcmhzU2hpZnRBbW91bnQgPSByaHNFeHBvbmVudCAt
IGxoc0V4cG9uZW50OworICAgICAgICAgICAgY29uc3QgaW50IG92ZXJmbG93ID0gbnVtYmVyT2ZS
SFNEaWdpdHMgKyByaHNTaGlmdEFtb3VudCAtIFByZWNpc2lvbjsKKyAgICAgICAgICAgIGlmIChv
dmVyZmxvdyA8PSAwKQorICAgICAgICAgICAgICAgIHJoc0NvZWZmaWNpZW50ID0gc2NhbGVVcChy
aHNDb2VmZmljaWVudCwgcmhzU2hpZnRBbW91bnQpOworICAgICAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICAgICAgcmhzQ29lZmZpY2llbnQgPSBzY2FsZVVwKHJoc0NvZWZmaWNpZW50LCByaHNT
aGlmdEFtb3VudCAtIG92ZXJmbG93KTsKKyAgICAgICAgICAgICAgICBsaHNDb2VmZmljaWVudCA9
IHNjYWxlRG93bihsaHNDb2VmZmljaWVudCwgb3ZlcmZsb3cpOworICAgICAgICAgICAgICAgIHJl
c3VsdEV4cG9uZW50ICs9IG92ZXJmbG93OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
fQorCisgICAgdWludDY0X3QgY29uc3QgcmVzdWx0ID0gbGhzU2lnbiA9PSByaHNTaWduID8gbGhz
Q29lZmZpY2llbnQgKyByaHNDb2VmZmljaWVudCA6IGxoc0NvZWZmaWNpZW50IC0gcmhzQ29lZmZp
Y2llbnQ7CisgICAgcmV0dXJuIGxoc1NpZ24gPT0gTWludXMgJiYgcmhzU2lnbiA9PSBQbHVzICYm
ICFyZXN1bHQKKyAgICAgICAgICAgID8gRGVjaW1hbCgwLCByZXN1bHRFeHBvbmVudCwgUGx1cykK
KyAgICAgICAgICAgIDogaW50NjRfdChyZXN1bHQpID49IDAKKyAgICAgICAgICAgICAgICA/IERl
Y2ltYWwocmVzdWx0LCByZXN1bHRFeHBvbmVudCwgbGhzU2lnbikKKyAgICAgICAgICAgICAgICA6
IERlY2ltYWwoLWludDY0X3QocmVzdWx0KSwgcmVzdWx0RXhwb25lbnQsIGludmVydFNpZ24obGhz
U2lnbikpOworfQorCitEZWNpbWFsIERlY2ltYWw6Om9wZXJhdG9yIC0oY29uc3QgRGVjaW1hbCYg
cmhzKSBjb25zdAoreworICAgIGNvbnN0IERlY2ltYWwmIGxocyA9ICp0aGlzOworICAgIGNvbnN0
IFNpZ24gbGhzU2lnbiA9IGxocy5zaWduKCk7CisgICAgY29uc3QgU2lnbiByaHNTaWduID0gcmhz
LnNpZ24oKTsKKworICAgIFNwZWNpYWxWYWx1ZUhhbmRsZXIgaGFuZGxlcihsaHMsIHJocyk7Cisg
ICAgc3dpdGNoIChoYW5kbGVyLmhhbmRsZSgpKSB7CisgICAgY2FzZSBTcGVjaWFsVmFsdWVIYW5k
bGVyOjpCb3RoRmluaXRlOgorICAgICAgICBicmVhazsKKworICAgIGNhc2UgU3BlY2lhbFZhbHVl
SGFuZGxlcjo6Qm90aGluZmluaXR5OgorICAgICAgICByZXR1cm4gbGhzU2lnbiA9PSByaHNTaWdu
ID8gbmFuKCkgOiBsaHM7CisKKyAgICBjYXNlIFNwZWNpYWxWYWx1ZUhhbmRsZXI6OkVpdGhlck5h
TjoKKyAgICAgICAgcmV0dXJuIGhhbmRsZXIudmFsdWUoKTsKKworICAgIGNhc2UgU3BlY2lhbFZh
bHVlSGFuZGxlcjo6TGhzSXNpbmZpbml0eToKKyAgICAgICAgcmV0dXJuIGxoczsKKworICAgIGNh
c2UgU3BlY2lhbFZhbHVlSGFuZGxlcjo6UmhzSXNpbmZpbml0eToKKyAgICAgICAgcmV0dXJuIGlu
ZmluaXR5KGludmVydFNpZ24ocmhzU2lnbikpOworICAgIH0KKworICAgIEFTU0VSVChsaHMuaXNG
aW5pdGUoKSk7CisgICAgQVNTRVJUKHJocy5pc0Zpbml0ZSgpKTsKKworICAgIHVpbnQ2NF90IGxo
c0NvZWZmaWNpZW50ID0gbGhzLm1fZGF0YS5jb2VmZmljaWVudCgpOworICAgIHVpbnQ2NF90IHJo
c0NvZWZmaWNpZW50ID0gcmhzLm1fZGF0YS5jb2VmZmljaWVudCgpOworCisgICAgY29uc3QgaW50
IGxoc0V4cG9uZW50ID0gbGhzLmV4cG9uZW50KCk7CisgICAgY29uc3QgaW50IHJoc0V4cG9uZW50
ID0gcmhzLmV4cG9uZW50KCk7CisgICAgaW50IHJlc3VsdEV4cG9uZW50ID0gbWluKGxoc0V4cG9u
ZW50LCByaHNFeHBvbmVudCk7CisKKyAgICAvLyBNYWtlIGNvZWZmaWNpZW50IGFsaWduZWQuCisg
ICAgaWYgKGxoc0V4cG9uZW50ID4gcmhzRXhwb25lbnQpIHsKKyAgICAgICAgY29uc3QgaW50IG51
bWJlck9mTEhTRGlnaXRzID0gY291bnREaWdpdHMobGhzQ29lZmZpY2llbnQpOworICAgICAgICBp
ZiAobnVtYmVyT2ZMSFNEaWdpdHMpIHsKKyAgICAgICAgICAgIGNvbnN0IGludCBsaHNTaGlmdEFt
b3VudCA9IGxoc0V4cG9uZW50IC0gcmhzRXhwb25lbnQ7CisgICAgICAgICAgICBjb25zdCBpbnQg
b3ZlcmZsb3cgPSBudW1iZXJPZkxIU0RpZ2l0cyArIGxoc1NoaWZ0QW1vdW50IC0gUHJlY2lzaW9u
OworICAgICAgICAgICAgaWYgKG92ZXJmbG93IDw9IDApCisgICAgICAgICAgICAgICAgbGhzQ29l
ZmZpY2llbnQgPSBzY2FsZVVwKGxoc0NvZWZmaWNpZW50LCBsaHNTaGlmdEFtb3VudCk7CisgICAg
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBsaHNDb2VmZmljaWVudCA9IHNjYWxlVXAo
bGhzQ29lZmZpY2llbnQsIGxoc1NoaWZ0QW1vdW50IC0gb3ZlcmZsb3cpOworICAgICAgICAgICAg
ICAgIHJoc0NvZWZmaWNpZW50ID0gc2NhbGVEb3duKHJoc0NvZWZmaWNpZW50LCBvdmVyZmxvdyk7
CisgICAgICAgICAgICAgICAgcmVzdWx0RXhwb25lbnQgKz0gb3ZlcmZsb3c7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKworICAgIH0gaWYgKGxoc0V4cG9uZW50IDwgcmhzRXhwb25lbnQpIHsK
KyAgICAgICAgY29uc3QgaW50IG51bWJlck9mUkhTRGlnaXRzID0gY291bnREaWdpdHMocmhzQ29l
ZmZpY2llbnQpOworICAgICAgICBpZiAobnVtYmVyT2ZSSFNEaWdpdHMpIHsKKyAgICAgICAgICAg
IGNvbnN0IGludCByaHNTaGlmdEFtb3VudCA9IHJoc0V4cG9uZW50IC0gbGhzRXhwb25lbnQ7Cisg
ICAgICAgICAgICBjb25zdCBpbnQgb3ZlcmZsb3cgPSBudW1iZXJPZlJIU0RpZ2l0cyArIHJoc1No
aWZ0QW1vdW50IC0gUHJlY2lzaW9uOworICAgICAgICAgICAgaWYgKG92ZXJmbG93IDw9IDApCisg
ICAgICAgICAgICAgICAgcmhzQ29lZmZpY2llbnQgPSBzY2FsZVVwKHJoc0NvZWZmaWNpZW50LCBy
aHNTaGlmdEFtb3VudCk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICByaHND
b2VmZmljaWVudCA9IHNjYWxlVXAocmhzQ29lZmZpY2llbnQsIHJoc1NoaWZ0QW1vdW50IC0gb3Zl
cmZsb3cpOworICAgICAgICAgICAgICAgIGxoc0NvZWZmaWNpZW50ID0gc2NhbGVEb3duKGxoc0Nv
ZWZmaWNpZW50LCBvdmVyZmxvdyk7CisgICAgICAgICAgICAgICAgcmVzdWx0RXhwb25lbnQgKz0g
b3ZlcmZsb3c7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICB1aW50NjRf
dCByZXN1bHQgPSBsaHNTaWduID09IHJoc1NpZ24gPyBsaHNDb2VmZmljaWVudCAtIHJoc0NvZWZm
aWNpZW50IDogbGhzQ29lZmZpY2llbnQgKyByaHNDb2VmZmljaWVudDsKKyAgICByZXR1cm4gbGhz
U2lnbiA9PSBNaW51cyAmJiByaHNTaWduID09IE1pbnVzICYmICFyZXN1bHQKKyAgICAgICAgICAg
ID8gRGVjaW1hbCgwLCByZXN1bHRFeHBvbmVudCwgUGx1cykKKyAgICAgICAgICAgIDogaW50NjRf
dChyZXN1bHQpID49IDAKKyAgICAgICAgICAgICAgICA/IERlY2ltYWwocmVzdWx0LCByZXN1bHRF
eHBvbmVudCwgbGhzU2lnbikKKyAgICAgICAgICAgICAgICA6IERlY2ltYWwoLWludDY0X3QocmVz
dWx0KSwgcmVzdWx0RXhwb25lbnQsIGludmVydFNpZ24obGhzU2lnbikpOworfQorCitEZWNpbWFs
IERlY2ltYWw6Om9wZXJhdG9yICooY29uc3QgRGVjaW1hbCYgcmhzKSBjb25zdAoreworICAgIGNv
bnN0IERlY2ltYWwmIGxocyA9ICp0aGlzOworICAgIGNvbnN0IFNpZ24gbGhzU2lnbiA9IGxocy5z
aWduKCk7CisgICAgY29uc3QgU2lnbiByaHNTaWduID0gcmhzLnNpZ24oKTsKKyAgICBTaWduIHJl
c3VsdFNpZ24gPSBsaHNTaWduID09IHJoc1NpZ24gPyBQbHVzIDogTWludXM7CisKKyAgICBTcGVj
aWFsVmFsdWVIYW5kbGVyIGhhbmRsZXIobGhzLCByaHMpOworICAgIHN3aXRjaCAoaGFuZGxlci5o
YW5kbGUoKSkgeworICAgIGNhc2UgU3BlY2lhbFZhbHVlSGFuZGxlcjo6Qm90aEZpbml0ZTogewor
ICAgICAgICBjb25zdCB1aW50NjRfdCBsaHNDb2VmZmljaWVudCA9IGxocy5tX2RhdGEuY29lZmZp
Y2llbnQoKTsKKyAgICAgICAgY29uc3QgdWludDY0X3QgcmhzQ29lZmZpY2llbnQgPSByaHMubV9k
YXRhLmNvZWZmaWNpZW50KCk7CisgICAgICAgIGludCByZXN1bHRFeHBvbmVudCA9IGxocy5leHBv
bmVudCgpICsgcmhzLmV4cG9uZW50KCk7CisgICAgICAgIFVJbnQxMjggd29yayhVSW50MTI4Ojpt
dWx0aXBseShsaHNDb2VmZmljaWVudCwgcmhzQ29lZmZpY2llbnQpKTsKKyAgICAgICAgd2hpbGUg
KHdvcmsuaGlnaCgpKSB7CisgICAgICAgICAgd29yayAvPSAxMDsKKyAgICAgICAgICArK3Jlc3Vs
dEV4cG9uZW50OworICAgICAgICB9CisgICAgICAgIHJldHVybiBEZWNpbWFsKHdvcmsubG93KCks
IHJlc3VsdEV4cG9uZW50LCByZXN1bHRTaWduKTsKKyAgICB9CisKKyAgICBjYXNlIFNwZWNpYWxW
YWx1ZUhhbmRsZXI6OkJvdGhpbmZpbml0eToKKyAgICAgICAgcmV0dXJuIGluZmluaXR5KHJlc3Vs
dFNpZ24pOworCisgICAgY2FzZSBTcGVjaWFsVmFsdWVIYW5kbGVyOjpFaXRoZXJOYU46CisgICAg
ICAgIHJldHVybiBoYW5kbGVyLnZhbHVlKCk7CisKKyAgICBjYXNlIFNwZWNpYWxWYWx1ZUhhbmRs
ZXI6Okxoc0lzaW5maW5pdHk6CisgICAgICAgIHJldHVybiByaHMuaXNaZXJvKCkgPyBuYW4oKSA6
IGluZmluaXR5KHJlc3VsdFNpZ24pOworCisgICAgY2FzZSBTcGVjaWFsVmFsdWVIYW5kbGVyOjpS
aHNJc2luZmluaXR5OgorICAgICAgICByZXR1cm4gbGhzLmlzWmVybygpID8gbmFuKCkgOiBpbmZp
bml0eShyZXN1bHRTaWduKTsKKyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICByZXR1cm4gbmFuKCk7Cit9CisKK0RlY2ltYWwgRGVjaW1hbDo6b3BlcmF0b3IgLyhjb25zdCBE
ZWNpbWFsJiByaHMpIGNvbnN0Cit7CisgICAgY29uc3QgRGVjaW1hbCYgbGhzID0gKnRoaXM7Cisg
ICAgY29uc3QgU2lnbiBsaHNTaWduID0gbGhzLnNpZ24oKTsKKyAgICBjb25zdCBTaWduIHJoc1Np
Z24gPSByaHMuc2lnbigpOworICAgIFNpZ24gcmVzdWx0U2lnbiA9IGxoc1NpZ24gPT0gcmhzU2ln
biA/IFBsdXMgOiBNaW51czsKKworICAgIFNwZWNpYWxWYWx1ZUhhbmRsZXIgaGFuZGxlcihsaHMs
IHJocyk7CisgICAgc3dpdGNoIChoYW5kbGVyLmhhbmRsZSgpKSB7CisgICAgY2FzZSBTcGVjaWFs
VmFsdWVIYW5kbGVyOjpCb3RoRmluaXRlOgorICAgICAgICBicmVhazsKKworICAgIGNhc2UgU3Bl
Y2lhbFZhbHVlSGFuZGxlcjo6Qm90aGluZmluaXR5OgorICAgICAgICByZXR1cm4gbmFuKCk7CisK
KyAgICBjYXNlIFNwZWNpYWxWYWx1ZUhhbmRsZXI6OkVpdGhlck5hTjoKKyAgICAgICAgcmV0dXJu
IGhhbmRsZXIudmFsdWUoKTsKKworICAgIGNhc2UgU3BlY2lhbFZhbHVlSGFuZGxlcjo6TGhzSXNp
bmZpbml0eToKKyAgICAgICAgcmV0dXJuIGluZmluaXR5KHJlc3VsdFNpZ24pOworCisgICAgY2Fz
ZSBTcGVjaWFsVmFsdWVIYW5kbGVyOjpSaHNJc2luZmluaXR5OgorICAgICAgICByZXR1cm4gemVy
byhyZXN1bHRTaWduKTsKKyAgICB9CisKKyAgICBBU1NFUlQobGhzLmlzRmluaXRlKCkpOworICAg
IEFTU0VSVChyaHMuaXNGaW5pdGUoKSk7CisKKyAgICBpZiAocmhzLmlzWmVybygpKQorICAgICAg
ICByZXR1cm4gbGhzLmlzWmVybygpID8gbmFuKCkgOiBpbmZpbml0eShyZXN1bHRTaWduKTsKKwor
ICAgIGludCByZXN1bHRFeHBvbmVudCA9IGxocy5leHBvbmVudCgpIC0gcmhzLmV4cG9uZW50KCk7
CisKKyAgICBpZiAobGhzLmlzWmVybygpKSB7CisgICAgICAgIC8vIDAvbm9uLXplcm8gPT4gMAor
ICAgICAgICByZXR1cm4gRGVjaW1hbCgwLCByZXN1bHRFeHBvbmVudCwgcmVzdWx0U2lnbik7Cisg
ICAgfQorCisgICAgdWludDY0X3QgcmVtYWluZGVyID0gbGhzLm1fZGF0YS5jb2VmZmljaWVudCgp
OworICAgIGNvbnN0IHVpbnQ2NF90IGRpdmlzb3IgPSByaHMubV9kYXRhLmNvZWZmaWNpZW50KCk7
CisgICAgdWludDY0X3QgcmVzdWx0ID0gMDsKKyAgICB3aGlsZSAocmVzdWx0IDwgTWF4Q29lZmZp
Y2llbnQgLyAxMDApIHsKKyAgICAgICAgd2hpbGUgKHJlbWFpbmRlciA8IGRpdmlzb3IpIHsKKyAg
ICAgICAgICAgIHJlbWFpbmRlciAqPSAxMDsKKyAgICAgICAgICAgIHJlc3VsdCAqPSAxMDsKKyAg
ICAgICAgICAgIC0tcmVzdWx0RXhwb25lbnQ7CisgICAgICAgIH0KKyAgICAgICAgcmVzdWx0ICs9
IHJlbWFpbmRlciAvIGRpdmlzb3I7CisgICAgICAgIHJlbWFpbmRlciAlPSBkaXZpc29yOworICAg
ICAgICBpZiAoIXJlbWFpbmRlcikKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGlm
IChyZW1haW5kZXIgPiBkaXZpc29yIC8gMikKKyAgICAgICAgKytyZXN1bHQ7CisKKyAgICByZXR1
cm4gRGVjaW1hbChyZXN1bHQsIHJlc3VsdEV4cG9uZW50LCByZXN1bHRTaWduKTsKK30KKworYm9v
bCBEZWNpbWFsOjpvcGVyYXRvcj09KGNvbnN0IERlY2ltYWwmIHJocykgY29uc3QKK3sKKyAgICBy
ZXR1cm4gZmFzdEVxdWFscyhyaHMpIHx8IGNvbXBhcmVUbyhyaHMpLmlzWmVybygpOworfQorCiti
b29sIERlY2ltYWw6Om9wZXJhdG9yIT0oY29uc3QgRGVjaW1hbCYgcmhzKSBjb25zdAoreworICAg
IHJldHVybiAhb3BlcmF0b3IgPT0ocmhzKTsKK30KKworYm9vbCBEZWNpbWFsOjpvcGVyYXRvciA8
KGNvbnN0IERlY2ltYWwmIHJocykgY29uc3QKK3sKKyAgICByZXR1cm4gIW9wZXJhdG9yID49KHJo
cyk7Cit9CisKK2Jvb2wgRGVjaW1hbDo6b3BlcmF0b3IgPD0oY29uc3QgRGVjaW1hbCYgcmhzKSBj
b25zdAoreworICAgIGlmIChmYXN0RXF1YWxzKHJocykpCisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIGNvbnN0IERlY2ltYWwgcmVzdWx0ID0gY29tcGFyZVRvKHJocyk7CisgICAgcmV0dXJuIHJl
c3VsdC5pc1plcm8oKSB8fCByZXN1bHQuaXNNaW51cygpOworfQorCitib29sIERlY2ltYWw6Om9w
ZXJhdG9yID4oY29uc3QgRGVjaW1hbCYgcmhzKSBjb25zdAoreworICAgIHJldHVybiAhb3BlcmF0
b3IgPD0ocmhzKTsKK30KKworYm9vbCBEZWNpbWFsOjpvcGVyYXRvciA+PShjb25zdCBEZWNpbWFs
JiByaHMpIGNvbnN0Cit7CisgICAgaWYgKGZhc3RFcXVhbHMocmhzKSkKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgY29uc3QgRGVjaW1hbCByZXN1bHQgPSBjb21wYXJlVG8ocmhzKTsKKyAgICBy
ZXR1cm4gcmVzdWx0LmlzWmVybygpIHx8ICFyZXN1bHQuaXNNaW51cygpOworfQorCitpbnQgRGVj
aW1hbDo6ZXhwb25lbnQoKSBjb25zdAoreworICAgIHJldHVybiBpc0Zpbml0ZSgpID8gbV9kYXRh
LmV4cG9uZW50KCkgOiAwOworfQorCitEZWNpbWFsOjpGb3JtYXRDbGFzcyBEZWNpbWFsOjpmb3Jt
YXRDbGFzcygpIGNvbnN0Cit7CisgICAgc3dpdGNoIChtX2RhdGEubV9wYWNrZWRGaWVsZCkgewor
ICAgIGNhc2UgUG9zaXRpdmVJbmZpbml0eVBhdHRlcm46CisgICAgY2FzZSBOZWdhdGl2ZUluZmlu
aXR5UGF0dGVybjoKKyAgICAgICAgcmV0dXJuIENsYXNzSW5maW5pdHk7CisgICAgY2FzZSBOYU5Q
YXR0ZXJuOgorICAgICAgICByZXR1cm4gQ2xhc3NOYU47CisgICAgfQorCisgICAgcmV0dXJuIG1f
ZGF0YS5pc1plcm8oKSA/IENsYXNzWmVybyA6IENsYXNzTm9ybWFsOworfQorCitEZWNpbWFsOjpT
aWduIERlY2ltYWw6OnNpZ24oKSBjb25zdAoreworICAgIHJldHVybiBtX2RhdGEuc2lnbigpOwor
fQorCitEZWNpbWFsIERlY2ltYWw6OmFicygpIGNvbnN0Cit7CisgICAgRGVjaW1hbCByZXN1bHQo
KnRoaXMpOworICAgIHJlc3VsdC5tX2RhdGEuc2V0U2lnbihQbHVzKTsKKyAgICByZXR1cm4gcmVz
dWx0OworfQorCisvLyBSb3VuZCB0b3dhcmQgcG9zaXRpdmUgaW5maW5pdHkuCisvLyBOb3RlOiBN
YWMgcG9ydHMgZGVmaW5lcyBjZWlsKHgpIGFzIHd0Zl9jZWlsKHgpLCBzbyB3ZSBjYW4ndCB1c2Ug
bmFtZSAiY2VpbCIgaGVyZS4KK0RlY2ltYWwgRGVjaW1hbDo6Y2VpbGluZygpIGNvbnN0Cit7Cisg
ICAgaWYgKGlzU3BlY2lhbCgpKQorICAgICAgICByZXR1cm4gKnRoaXM7CisKKyAgICBpZiAoZXhw
b25lbnQoKSA+PSAwKQorICAgICAgICByZXR1cm4gKnRoaXM7CisKKyAgICB1aW50NjRfdCByZXN1
bHQgPSBtX2RhdGEuY29lZmZpY2llbnQoKTsKKyAgICBjb25zdCBpbnQgbnVtYmVyT2ZEaWdpdHMg
PSBjb3VudERpZ2l0cyhyZXN1bHQpOworICAgIGNvbnN0IGludCBudW1iZXJPZkRyb3BEaWdpdHMg
PSAtZXhwb25lbnQoKTsKKyAgICBpZiAobnVtYmVyT2ZEaWdpdHMgPCBudW1iZXJPZkRyb3BEaWdp
dHMpCisgICAgICAgIHJldHVybiB6ZXJvKFBsdXMpOworCisgICAgcmVzdWx0ID0gc2NhbGVEb3du
KHJlc3VsdCwgbnVtYmVyT2ZEcm9wRGlnaXRzIC0gMSk7CisgICAgaWYgKHNpZ24oKSA9PSBQbHVz
ICYmIHJlc3VsdCAlIDEwID4gMCkKKyAgICAgICAgcmVzdWx0ICs9IDEwOworICAgIHJlc3VsdCAv
PSAxMDsKKyAgICByZXR1cm4gRGVjaW1hbChyZXN1bHQsIDAsIHNpZ24oKSk7Cit9CisKK0RlY2lt
YWwgRGVjaW1hbDo6Y29tcGFyZVRvKGNvbnN0IERlY2ltYWwmIHJocykgY29uc3QKK3sKKyAgICBj
b25zdCBEZWNpbWFsIHJlc3VsdCgqdGhpcyAtIHJocyk7CisgICAgcmV0dXJuIHJlc3VsdC5pc1pl
cm8oKQorICAgICAgICAgICAgPyB6ZXJvKFBsdXMpCisgICAgICAgICAgICA6IHJlc3VsdC5pc0Zp
bml0ZSgpCisgICAgICAgICAgICAgICAgICAgID8gcmVzdWx0CisgICAgICAgICAgICAgICAgICAg
IDogcmVzdWx0LmlzTWludXMoKSA/IERlY2ltYWwoLTEpIDogRGVjaW1hbCgxKTsKK30KKworLy8g
Q29tcGFyZXMgdHdvIERlY2ltYWwgbnVtYmVyIGFzIGJpbmFyeSBkYXRhLiBUaGlzIG1ldGhvZCBp
cworLy8gdXNlZCBmb3IgZXF1YWxpdHkgb2YgaW5maW5pdHkgb3BlcmFuZHMgd2hpY2ggc3Vic3Ry
YWN0IG9wZXJhdGlvbgorLy8gcmV0dXJucyBub24temVyby4KK2Jvb2wgRGVjaW1hbDo6ZmFzdEVx
dWFscyhjb25zdCBEZWNpbWFsJiByaHMpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZGF0YS5tX3Bh
Y2tlZEZpZWxkID09IHJocy5tX2RhdGEubV9wYWNrZWRGaWVsZAorICAgICAgICAmJiBtX2RhdGEu
bV9jb2VmZmljaWVudCA9PSByaHMubV9kYXRhLm1fY29lZmZpY2llbnQ7Cit9CisKKy8vIFJvdW5k
IHRvd2FyZCBuZWdhdGl2ZSBpbmZpbml0eS4KK0RlY2ltYWwgRGVjaW1hbDo6Zmxvb3IoKSBjb25z
dAoreworICAgIGlmIChpc1NwZWNpYWwoKSkKKyAgICAgICAgcmV0dXJuICp0aGlzOworCisgICAg
aWYgKGV4cG9uZW50KCkgPj0gMCkKKyAgICAgICAgcmV0dXJuICp0aGlzOworCisgICAgdWludDY0
X3QgcmVzdWx0ID0gbV9kYXRhLmNvZWZmaWNpZW50KCk7CisgICAgY29uc3QgaW50IG51bWJlck9m
RGlnaXRzID0gY291bnREaWdpdHMocmVzdWx0KTsKKyAgICBjb25zdCBpbnQgbnVtYmVyT2ZEcm9w
RGlnaXRzID0gLWV4cG9uZW50KCk7CisgICAgaWYgKG51bWJlck9mRGlnaXRzIDwgbnVtYmVyT2ZE
cm9wRGlnaXRzKQorICAgICAgICByZXR1cm4gemVybyhQbHVzKTsKKworICAgIHJlc3VsdCA9IHNj
YWxlRG93bihyZXN1bHQsIG51bWJlck9mRHJvcERpZ2l0cyAtIDEpOworICAgIGlmIChpc01pbnVz
KCkgJiYgcmVzdWx0ICUgMTAgPiAwKQorICAgICAgICByZXN1bHQgKz0gMTA7CisgICAgcmVzdWx0
IC89IDEwOworICAgIHJldHVybiBEZWNpbWFsKHJlc3VsdCwgMCwgc2lnbigpKTsKK30KKworRGVj
aW1hbCBEZWNpbWFsOjpmcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyKQoreworICAgIGludCBl
eHBvbmVudCA9IDA7CisgICAgU2lnbiBleHBvbmVudFNpZ24gPSBQbHVzOworICAgIGludCBudW1i
ZXJPZkRpZ2l0cyA9IDA7CisgICAgaW50IG51bWJlck9mRGlnaXRzQWZ0ZXJEb3QgPSAwOworICAg
IGludCBudW1iZXJPZkV4dHJhRGlnaXRzID0gMDsKKyAgICBTaWduIHNpZ24gPSBQbHVzOworCisg
ICAgZW51bSB7CisgICAgICAgIFN0YXRlRGlnaXQsCisgICAgICAgIFN0YXRlRG90LAorICAgICAg
ICBTdGF0ZURvdERpZ2l0LAorICAgICAgICBTdGF0ZUUsCisgICAgICAgIFN0YXRlRURpZ2l0LAor
ICAgICAgICBTdGF0ZUVTaWduLAorICAgICAgICBTdGF0ZVNpZ24sCisgICAgICAgIFN0YXRlU3Rh
cnQsCisgICAgICAgIFN0YXRlWmVybywKKyAgICB9IHN0YXRlID0gU3RhdGVTdGFydDsKKworICAg
ICNkZWZpbmUgSGFuZGxlQ2hhcihjaDEsIG5leHQsIC4uLikgXAorICAgICAgICBpZiAoY2ggPT0g
Y2gxIHx8IGNoID09IGNoMSAtICdBJyArICdhJykgeyBcCisgICAgICAgICAgICBfX1ZBX0FSR1Nf
XzsgXAorICAgICAgICAgICAgc3RhdGUgPSBuZXh0OyBcCisgICAgICAgICAgICBicmVhazsgXAor
ICAgICAgICB9CisKKyAgICAjZGVmaW5lIEV4cGVjdENoYXIoY2gxLCBuZXh0LCAuLi4pIFwKKyAg
ICAgICAgSGFuZGxlQ2hhcihjaDEsIG5leHQsIF9fVkFfQVJHU19fKTsgXAorICAgICAgICByZXR1
cm4gbmFuKCk7CisKKyAgICB1aW50NjRfdCBhY2N1bXVsYXRvciA9IDA7CisgICAgZm9yICh1bnNp
Z25lZCBpbmRleCA9IDA7IGluZGV4IDwgc3RyLmxlbmd0aCgpOyArK2luZGV4KSB7CisgICAgICAg
IGNvbnN0IGludCBjaCA9IHN0cltpbmRleF07CisgICAgICAgIHN3aXRjaCAoc3RhdGUpIHsKKyAg
ICAgICAgY2FzZSBTdGF0ZURpZ2l0OgorICAgICAgICAgICAgaWYgKGNoID49ICcwJyAmJiBjaCA8
PSAnOScpIHsKKyAgICAgICAgICAgICAgICBpZiAobnVtYmVyT2ZEaWdpdHMgPCBEZWNpbWFsOjpQ
cmVjaXNpb24pIHsKKyAgICAgICAgICAgICAgICAgICAgKytudW1iZXJPZkRpZ2l0czsKKyAgICAg
ICAgICAgICAgICAgICAgYWNjdW11bGF0b3IgKj0gMTA7CisgICAgICAgICAgICAgICAgICAgIGFj
Y3VtdWxhdG9yICs9IGNoIC0gJzAnOworICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAg
ICAgICAgICAgICArK251bWJlck9mRXh0cmFEaWdpdHM7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChjaCA9PSAnLicpIHsKKyAgICAgICAg
ICAgICAgICBzdGF0ZSA9IFN0YXRlRG90OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBFeHBlY3RDaGFyKCdFJywgU3RhdGVFKTsKKworICAgICAg
ICBjYXNlIFN0YXRlRG90OgorICAgICAgICAgICAgaWYgKGNoID49ICcwJyAmJiBjaCA8PSAnOScp
IHsKKyAgICAgICAgICAgICAgICBpZiAobnVtYmVyT2ZEaWdpdHMgPCBEZWNpbWFsOjpQcmVjaXNp
b24pIHsKKyAgICAgICAgICAgICAgICAgICAgKytudW1iZXJPZkRpZ2l0czsKKyAgICAgICAgICAg
ICAgICAgICAgKytudW1iZXJPZkRpZ2l0c0FmdGVyRG90OworICAgICAgICAgICAgICAgICAgICBh
Y2N1bXVsYXRvciAqPSAxMDsKKyAgICAgICAgICAgICAgICAgICAgYWNjdW11bGF0b3IgKz0gY2gg
LSAnMCc7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGVE
b3REaWdpdDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICBjYXNlIFN0YXRlRG90RGlnaXQ6CisgICAgICAgICAgICBpZiAoY2ggPj0gJzAnICYmIGNoIDw9
ICc5JykgeworICAgICAgICAgICAgICAgIGlmIChudW1iZXJPZkRpZ2l0cyA8IERlY2ltYWw6OlBy
ZWNpc2lvbikgeworICAgICAgICAgICAgICAgICAgICArK251bWJlck9mRGlnaXRzOworICAgICAg
ICAgICAgICAgICAgICArK251bWJlck9mRGlnaXRzQWZ0ZXJEb3Q7CisgICAgICAgICAgICAgICAg
ICAgIGFjY3VtdWxhdG9yICo9IDEwOworICAgICAgICAgICAgICAgICAgICBhY2N1bXVsYXRvciAr
PSBjaCAtICcwJzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIEV4cGVjdENoYXIoJ0UnLCBTdGF0ZUUpOworCisg
ICAgICAgIGNhc2UgU3RhdGVFOgorICAgICAgICAgICAgaWYgKGNoID09ICcrJykgeworICAgICAg
ICAgICAgICAgIGV4cG9uZW50U2lnbiA9IFBsdXM7CisgICAgICAgICAgICAgICAgc3RhdGUgPSBT
dGF0ZUVTaWduOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBpZiAoY2ggPT0gJy0nKSB7CisgICAgICAgICAgICAgICAgZXhwb25lbnRTaWduID0g
TWludXM7CisgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZUVTaWduOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoY2ggPj0gJzAnICYm
IGNoIDw9ICc5JykgeworICAgICAgICAgICAgICAgIGV4cG9uZW50ID0gY2ggLSAnMCc7CisgICAg
ICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZUVEaWdpdDsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIG5hbigpOworCisgICAgICAgIGNh
c2UgU3RhdGVFRGlnaXQ6CisgICAgICAgICAgICBpZiAoY2ggPj0gJzAnICYmIGNoIDw9ICc5Jykg
eworICAgICAgICAgICAgICAgIGV4cG9uZW50ICo9IDEwOworICAgICAgICAgICAgICAgIGV4cG9u
ZW50ICs9IGNoIC0gJzAnOworICAgICAgICAgICAgICAgIGlmIChleHBvbmVudCA+IERlY2ltYWw6
OkVtYXggKyBQcmVjaXNpb24pCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBleHBvbmVudFNp
Z24gPT0gTWludXMgPyB6ZXJvKFBsdXMpIDogaW5maW5pdHkoc2lnbik7CisgICAgICAgICAgICAg
ICAgc3RhdGUgPSBTdGF0ZUVEaWdpdDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIG5hbigpOworCisgICAgICAgIGNhc2UgU3RhdGVF
U2lnbjoKKyAgICAgICAgICAgIGlmIChjaCA+PSAnMCcgJiYgY2ggPD0gJzknKSB7CisgICAgICAg
ICAgICAgICAgZXhwb25lbnQgPSBjaCAtICcwJzsKKyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0
YXRlRURpZ2l0OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICByZXR1cm4gbmFuKCk7CisKKyAgICAgICAgY2FzZSBTdGF0ZVNpZ246CisgICAgICAg
ICAgICBpZiAoY2ggPT0gJzAnKSB7CisgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZVplcm87
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlm
IChjaCA+PSAnMScgJiYgY2ggPD0gJzknKSB7CisgICAgICAgICAgICAgICAgYWNjdW11bGF0b3Ig
PSBjaCAtICcwJzsKKyAgICAgICAgICAgICAgICBudW1iZXJPZkRpZ2l0cyA9IDE7CisgICAgICAg
ICAgICAgICAgc3RhdGUgPSBTdGF0ZURpZ2l0OworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gbmFuKCk7CisKKyAgICAgICAgY2FzZSBT
dGF0ZVN0YXJ0OgorICAgICAgICAgICAgaWYgKGNoID09ICcwJykgeworICAgICAgICAgICAgICAg
IHN0YXRlID0gU3RhdGVaZXJvOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBpZiAoY2ggPj0gJzEnICYmIGNoIDw9ICc5JykgeworICAgICAgICAg
ICAgICAgIGFjY3VtdWxhdG9yID0gY2ggLSAnMCc7CisgICAgICAgICAgICAgICAgbnVtYmVyT2ZE
aWdpdHMgPSAxOworICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGVEaWdpdDsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGNoID09ICct
JykgeworICAgICAgICAgICAgICAgIHNpZ24gPSBNaW51czsKKyAgICAgICAgICAgICAgICBzdGF0
ZSA9IFN0YXRlU2lnbjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgaWYgKGNoID09ICcrJykgeworICAgICAgICAgICAgICAgIHNpZ24gPSBQbHVz
OworICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGVTaWduOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoY2ggPT0gJy4nKSB7CisgICAg
ICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZURvdDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIG5hbigpOworCisgICAgICAgIGNhc2Ug
U3RhdGVaZXJvOgorICAgICAgICAgICAgaWYgKGNoID09ICcwJykKKyAgICAgICAgICAgICAgICBi
cmVhazsKKworICAgICAgICAgICAgaWYgKGNoID49ICcxJyAmJiBjaCA8PSAnOScpIHsKKyAgICAg
ICAgICAgICAgICBhY2N1bXVsYXRvciA9IGNoIC0gJzAnOworICAgICAgICAgICAgICAgIG51bWJl
ck9mRGlnaXRzID0gMTsKKyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlRGlnaXQ7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChjaCA9
PSAnLicpIHsKKyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlRG90OworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBFeHBlY3RDaGFyKCdFJywg
U3RhdGVFKTsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgICAgICByZXR1cm4gbmFuKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBpZiAoc3RhdGUgPT0gU3RhdGVaZXJvKQorICAgICAgICByZXR1cm4gemVybyhzaWduKTsKKwor
ICAgIGlmIChzdGF0ZSA9PSBTdGF0ZURpZ2l0IHx8IHN0YXRlID09IFN0YXRlRURpZ2l0IHx8IHN0
YXRlID09IFN0YXRlRG90RGlnaXQpIHsKKyAgICAgICAgaW50IHJlc3VsdEV4cG9uZW50ID0gZXhw
b25lbnQgKiAoZXhwb25lbnRTaWduID09IE1pbnVzID8gLTEgOiAxKSAtIG51bWJlck9mRGlnaXRz
QWZ0ZXJEb3QgKyBudW1iZXJPZkV4dHJhRGlnaXRzOworICAgICAgICBjb25zdCBpbnQgYmlhc2Vk
RXhwb25lbnQgPSByZXN1bHRFeHBvbmVudCArIEViaWFzOworICAgICAgICBpZiAoYmlhc2VkRXhw
b25lbnQgPCAwKQorICAgICAgICAgICAgcmV0dXJuIHplcm8oUGx1cyk7CisKKyAgICAgICAgY29u
c3QgaW50IG92ZXJmbG93ID0gYmlhc2VkRXhwb25lbnQgLSBFbWF4ICsgMTsKKyAgICAgICAgaWYg
KG92ZXJmbG93ID4gMCkgeworICAgICAgICAgICAgaWYgKG92ZXJmbG93ICsgbnVtYmVyT2ZEaWdp
dHMgLSBudW1iZXJPZkRpZ2l0c0FmdGVyRG90ID4gUHJlY2lzaW9uKQorICAgICAgICAgICAgICAg
IHJldHVybiBpbmZpbml0eShzaWduKTsKKyAgICAgICAgICAgIGFjY3VtdWxhdG9yID0gc2NhbGVV
cChhY2N1bXVsYXRvciwgb3ZlcmZsb3cpOworICAgICAgICAgICAgcmVzdWx0RXhwb25lbnQgLT0g
b3ZlcmZsb3c7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gRGVjaW1hbChhY2N1bXVsYXRv
ciwgcmVzdWx0RXhwb25lbnQsIHNpZ24pOworICAgIH0KKworICAgIHJldHVybiBuYW4oKTsKK30K
KworRGVjaW1hbCBEZWNpbWFsOjppbmZpbml0eShjb25zdCBTaWduIHNpZ24pCit7CisgICAgcmV0
dXJuIERlY2ltYWwoRW5jb2RlZERhdGEoc2lnbiA9PSBNaW51cyA/IE5lZ2F0aXZlSW5maW5pdHlQ
YXR0ZXJuIDogUG9zaXRpdmVJbmZpbml0eVBhdHRlcm4pKTsKK30KKworRGVjaW1hbCBEZWNpbWFs
OjpuYW4oKQoreworICAgIHJldHVybiBEZWNpbWFsKEVuY29kZWREYXRhKE5hTlBhdHRlcm4pKTsK
K30KKworRGVjaW1hbCBEZWNpbWFsOjpyZW1haW5kZXIoY29uc3QgRGVjaW1hbCYgcmhzKSBjb25z
dAoreworICAgIGNvbnN0IERlY2ltYWwgcXVvdGllbnQgPSAoKnRoaXMgLyByaHMpLnJvdW5kKCk7
CisgICAgcmV0dXJuIHF1b3RpZW50LmlzU3BlY2lhbCgpID8gcXVvdGllbnQgOiAqdGhpcyAtIHF1
b3RpZW50ICogcmhzOworfQorCitEZWNpbWFsIERlY2ltYWw6OnJvdW5kKCkgY29uc3QKK3sKKyAg
ICBpZiAoaXNTcGVjaWFsKCkpCisgICAgICAgIHJldHVybiAqdGhpczsKKworICAgIGlmIChleHBv
bmVudCgpID49IDApCisgICAgICAgIHJldHVybiAqdGhpczsKKworICAgIHVpbnQ2NF90IHJlc3Vs
dCA9IG1fZGF0YS5jb2VmZmljaWVudCgpOworICAgIGNvbnN0IGludCBudW1iZXJPZkRpZ2l0cyA9
IGNvdW50RGlnaXRzKHJlc3VsdCk7CisgICAgY29uc3QgaW50IG51bWJlck9mRHJvcERpZ2l0cyA9
IC1leHBvbmVudCgpOworICAgIGlmIChudW1iZXJPZkRpZ2l0cyA8IG51bWJlck9mRHJvcERpZ2l0
cykKKyAgICAgICAgcmV0dXJuIHplcm8oUGx1cyk7CisKKyAgICByZXN1bHQgPSBzY2FsZURvd24o
cmVzdWx0LCBudW1iZXJPZkRyb3BEaWdpdHMgLSAxKTsKKyAgICBpZiAocmVzdWx0ICUgMTAgPj0g
NSkKKyAgICAgICAgcmVzdWx0ICs9IDEwOworICAgIHJlc3VsdCAvPSAxMDsKKyAgICByZXR1cm4g
RGVjaW1hbChyZXN1bHQsIDAsIHNpZ24oKSk7Cit9CisKK1N0cmluZyBEZWNpbWFsOjp0b1N0cmlu
ZygpIGNvbnN0Cit7CisgICAgc3dpdGNoIChmb3JtYXRDbGFzcygpKSB7CisgICAgY2FzZSBDbGFz
c0luZmluaXR5OgorICAgICAgICByZXR1cm4gc2lnbigpID8gIi1JbmZpbml0eSIgOiAiSW5maW5p
dHkiOworCisgICAgY2FzZSBDbGFzc05hTjoKKyAgICAgICAgcmV0dXJuIHNpZ24oKSA/ICItTmFO
IiA6ICJOYU4iOworCisgICAgY2FzZSBDbGFzc05vcm1hbDoKKyAgICBjYXNlIENsYXNzWmVybzoK
KyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgcmV0dXJuICIiOworICAgIH0KKworICAgIFN0cmluZ0J1aWxkZXIgYnVp
bGRlcjsKKyAgICBpZiAoc2lnbigpKQorICAgICAgICBidWlsZGVyLmFwcGVuZCgnLScpOworCisg
ICAgaW50IG9yaWdpbmFsRXhwb25lbnQgPSBleHBvbmVudCgpOworCisgICAgY29uc3QgaW50IG1h
eERpZ2l0cyA9IERCTF9ESUc7CisgICAgdWludDY0X3QgY29lZmZpY2llbnQgPSBtX2RhdGEuY29l
ZmZpY2llbnQoKTsKKyAgICBpbnQgbGFzdERpZ2l0ID0gMDsKKyAgICB3aGlsZSAoY291bnREaWdp
dHMoY29lZmZpY2llbnQpID4gbWF4RGlnaXRzKSB7CisgICAgICAgIGxhc3REaWdpdCA9IGNvZWZm
aWNpZW50ICUgMTA7CisgICAgICAgIGNvZWZmaWNpZW50IC89IDEwOworICAgICAgICArK29yaWdp
bmFsRXhwb25lbnQ7CisgICAgfQorCisgICAgaWYgKGxhc3REaWdpdCA+PSA1KQorICAgICAgICAr
K2NvZWZmaWNpZW50OworCisgICAgd2hpbGUgKG9yaWdpbmFsRXhwb25lbnQgPCAwICYmIGNvZWZm
aWNpZW50ICYmICEoY29lZmZpY2llbnQgJSAxMCkpIHsKKyAgICAgICAgY29lZmZpY2llbnQgLz0g
MTA7CisgICAgICAgICsrb3JpZ2luYWxFeHBvbmVudDsKKyAgICB9CisKKyAgICBjb25zdCBTdHJp
bmcgZGlnaXRzID0gU3RyaW5nOjpudW1iZXIoY29lZmZpY2llbnQpOworICAgIGludCBjb2VmZmlj
aWVudExlbmd0aCA9IGludChkaWdpdHMubGVuZ3RoKCkpOworICAgIGNvbnN0IGludCBhZGp1c3Rl
ZEV4cG9uZW50ID0gb3JpZ2luYWxFeHBvbmVudCArIGNvZWZmaWNpZW50TGVuZ3RoIC0gMTsKKyAg
ICBpZiAob3JpZ2luYWxFeHBvbmVudCA8PSAwICYmIGFkanVzdGVkRXhwb25lbnQgPj0gLTYpIHsK
KyAgICAgICAgaWYgKCFvcmlnaW5hbEV4cG9uZW50KSB7CisgICAgICAgICAgICBidWlsZGVyLmFw
cGVuZChkaWdpdHMpOworICAgICAgICAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmIChhZGp1c3RlZEV4cG9uZW50ID49IDApIHsKKyAgICAgICAg
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY29lZmZpY2llbnRMZW5ndGg7ICsraSkgeworICAgICAg
ICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGRpZ2l0c1tpXSk7CisgICAgICAgICAgICAgICAgaWYg
KGkgPT0gYWRqdXN0ZWRFeHBvbmVudCkKKyAgICAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmQoJy4nKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBidWlsZGVyLnRvU3Ry
aW5nKCk7CisgICAgICAgIH0KKworICAgICAgICBidWlsZGVyLmFwcGVuZCgiMC4iKTsKKyAgICAg
ICAgZm9yIChpbnQgaSA9IGFkanVzdGVkRXhwb25lbnQgKyAxOyBpIDwgMDsgKytpKQorICAgICAg
ICAgICAgYnVpbGRlci5hcHBlbmQoJzAnKTsKKworICAgICAgICBidWlsZGVyLmFwcGVuZChkaWdp
dHMpOworCisgICAgfSBlbHNlIHsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoZGlnaXRzWzBdKTsK
KyAgICAgICAgd2hpbGUgKGNvZWZmaWNpZW50TGVuZ3RoID49IDIgJiYgZGlnaXRzW2NvZWZmaWNp
ZW50TGVuZ3RoIC0gMV0gPT0gJzAnKQorICAgICAgICAgICAgLS1jb2VmZmljaWVudExlbmd0aDsK
KyAgICAgICAgaWYgKGNvZWZmaWNpZW50TGVuZ3RoID49IDIpIHsKKyAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKCcuJyk7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8IGNvZWZmaWNp
ZW50TGVuZ3RoOyArK2kpCisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoZGlnaXRzW2ld
KTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChhZGp1c3RlZEV4cG9uZW50KSB7CisgICAgICAg
ICAgICBidWlsZGVyLmFwcGVuZChhZGp1c3RlZEV4cG9uZW50IDwgMCA/ICJlIiA6ICJlKyIpOwor
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpudW1iZXIoYWRqdXN0ZWRFeHBvbmVu
dCkpOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Cit9
CisKK0RlY2ltYWwgRGVjaW1hbDo6emVybyhTaWduIHNpZ24pCit7CisgICAgcmV0dXJuIERlY2lt
YWwoRW5jb2RlZERhdGEoc2lnbiA9PSBNaW51cyA/IE5lZ2F0aXZlWmVyb1BhdHRlcm4gOiBQb3Np
dGl2ZVplcm9QYXR0ZXJuKSk7Cit9CisKK30gLy8gV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vRGVjaW1hbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGVj
aW1hbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjk2ZGYyOWE3MzYxOTU5MzIxYWI2Njc4ODlmZTg2NDU4ZTg3MzQy
NzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EZWNpbWFsLmgK
QEAgLTAsMCArMSwxNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworI2lmbmRlZiBEZWNpbWFsX2gKKyNkZWZpbmUgRGVjaW1hbF9oCisKKyNp
bmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCisvLyBUaGlzIGNsYXNzIHJlcHJlc2VudHMgZGVjaW1hbCBiYXNl
IGZsb2F0aW5nIHBvaW50ZXIgbnVtYmVyIHdpdGggMzIgYml0CisvLyAgdW5zaWdlbmQgaW50ZWdl
ciBhbmQgNjQgYml0IHVuc2lnbmVkIGludGVnZXIuCisvLyAgbyAxIGJpdCBzaWduICgwID0gcG9z
aXRpdmUgbnVtYmVyLCAxID0gbmVnYXRpdmUgbnVtYmVyKQorLy8gIG8gMTEgYml0IGJpYXNlZCBl
eHBvbmVudCwgMTAgYmFzZWQuCisvLyAgbyA2NCBiaXQgY29lZmZpY2llbnQuCisvLworLy8gRXhw
b25lbnQgYW5kIHNpZ24gYml0IGFyZSBlbmNvZGVkIGFzOgorLy8gNzY1NDMyMTAgNzY1NDMyMTAK
Ky8vIFMwMDAwMDAwIDAwMDBNRUVFCisvLyAgUyA9IHNpZ24gKDEgYml0KSwgMCA9IHBvc2l0aXZl
LCAxID0gbmVnYXRpdmUKKy8vICBFID0gZXhwb25lbnQgKDExIGJpdCkKKy8vCisvLyBGSVhNRTog
T25jZSBhbGwgQysrIGNvbXBpbGVyIHN1cHBvcnQgZGVjaW1hbCB0eXBlLCB3ZSBzaG91bGQgcmVw
bGFjZSB0aGlzCisvLyBjbGFzcyB0byBjb21waWxlciBzdXBwb3J0ZWQgb25lLiBTZWUgYmVsb3cg
VVJJIGZvciBjdXJyZW50IHN0YXR1cyBvZiBkZWNpbWFsCisvLyB0eXBlIGZvciBDKys6IC8vIGh0
dHA6Ly93d3cub3Blbi1zdGQub3JnL2p0YzEvc2MyMi93ZzIxL2RvY3MvcGFwZXJzLzIwMDYvbjE5
NzcuaHRtbAorY2xhc3MgRGVjaW1hbCB7CitwdWJsaWM6CisgICAgc3RhdGljIGludCBjb25zdCBF
bWF4ID0gMjA0NzsgLy8gbGFyZ2VzdCBleHBvbmVudCB2YWx1ZQorICAgIHN0YXRpYyBpbnQgY29u
c3QgRWJpYXMgPSAxMDIzOyAvLyBzdWJ0cmFjdGVkIGZyb20gZW5jb2RlZCBleHBvbmVudAorICAg
IHN0YXRpYyBpbnQgY29uc3QgUHJlY2lzaW9uID0gMTg7CisKKyAgICBlbnVtIEZvcm1hdENsYXNz
IHsKKyAgICAgICAgQ2xhc3NJbmZpbml0eSwKKyAgICAgICAgQ2xhc3NOb3JtYWwsCisgICAgICAg
IENsYXNzTmFOLAorICAgICAgICBDbGFzc1plcm8sCisgICAgfTsKKworICAgIGVudW0gU2lnbiB7
CisgICAgICAgIFBsdXMsCisgICAgICAgIE1pbnVzLAorICAgIH07CisKKyAgICBzdHJ1Y3QgRW5j
b2RlZERhdGEgeworICAgICAgICBleHBsaWNpdCBFbmNvZGVkRGF0YSh1aW50MzJfdCk7CisgICAg
ICAgIEVuY29kZWREYXRhKHVpbnQ2NF90LCBpbnQsIFNpZ24pOworCisgICAgICAgIHVpbnQ2NF90
IGNvZWZmaWNpZW50KCkgY29uc3Q7CisgICAgICAgIGludCBjb3VudERpZ2l0cygpIGNvbnN0Owor
ICAgICAgICBpbnQgZXhwb25lbnQoKSBjb25zdDsKKyAgICAgICAgYm9vbCBpc0Zpbml0ZSgpIGNv
bnN0OworICAgICAgICBib29sIGlzU3BlY2lhbCgpIGNvbnN0OworICAgICAgICBib29sIGlzWmVy
bygpIGNvbnN0OworICAgICAgICBpbnQgcmF3RXhwb25lbnQoKSBjb25zdDsKKyAgICAgICAgU2ln
biBzaWduKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0U2lnbihTaWduKTsKKworICAgICAgICB1
aW50NjRfdCBtX2NvZWZmaWNpZW50OworICAgICAgICB1aW50MzJfdCBtX3BhY2tlZEZpZWxkOwor
ICAgIH07CisKKyAgICBEZWNpbWFsKCk7CisgICAgRGVjaW1hbChpbnQzMl90KTsKKyAgICBEZWNp
bWFsKHVpbnQ2NF90LCBpbnQsIFNpZ24pOworICAgIERlY2ltYWwoY29uc3QgRGVjaW1hbCYpOwor
ICAgIGV4cGxpY2l0IERlY2ltYWwoY29uc3QgRW5jb2RlZERhdGEmKTsKKworICAgIERlY2ltYWwm
IG9wZXJhdG9yID0oY29uc3QgRGVjaW1hbCYpOworICAgIERlY2ltYWwmIG9wZXJhdG9yICs9KGNv
bnN0IERlY2ltYWwmKTsKKyAgICBEZWNpbWFsJiBvcGVyYXRvciAtPShjb25zdCBEZWNpbWFsJik7
CisgICAgRGVjaW1hbCYgb3BlcmF0b3IgKj0oY29uc3QgRGVjaW1hbCYpOworICAgIERlY2ltYWwm
IG9wZXJhdG9yIC89KGNvbnN0IERlY2ltYWwmKTsKKworICAgIERlY2ltYWwgb3BlcmF0b3IgLSgp
IGNvbnN0OworCisgICAgYm9vbCBvcGVyYXRvciA9PShjb25zdCBEZWNpbWFsJikgY29uc3Q7Cisg
ICAgYm9vbCBvcGVyYXRvciAhPShjb25zdCBEZWNpbWFsJikgY29uc3Q7CisgICAgYm9vbCBvcGVy
YXRvciA8KGNvbnN0IERlY2ltYWwmKSBjb25zdDsKKyAgICBib29sIG9wZXJhdG9yIDw9KGNvbnN0
IERlY2ltYWwmKSBjb25zdDsKKyAgICBib29sIG9wZXJhdG9yID4oY29uc3QgRGVjaW1hbCYpIGNv
bnN0OworICAgIGJvb2wgb3BlcmF0b3IgPj0oY29uc3QgRGVjaW1hbCYpIGNvbnN0OworCisgICAg
RGVjaW1hbCBvcGVyYXRvciArKGNvbnN0IERlY2ltYWwmKSBjb25zdDsKKyAgICBEZWNpbWFsIG9w
ZXJhdG9yIC0oY29uc3QgRGVjaW1hbCYpIGNvbnN0OworICAgIERlY2ltYWwgb3BlcmF0b3IgKihj
b25zdCBEZWNpbWFsJikgY29uc3Q7CisgICAgRGVjaW1hbCBvcGVyYXRvciAvKGNvbnN0IERlY2lt
YWwmKSBjb25zdDsKKworICAgIGludCBleHBvbmVudCgpIGNvbnN0OworICAgIEZvcm1hdENsYXNz
IGZvcm1hdENsYXNzKCkgY29uc3Q7CisgICAgYm9vbCBpc0Zpbml0ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fZGF0YS5pc0Zpbml0ZSgpOyB9CisgICAgYm9vbCBpc01pbnVzKCkgY29uc3QgeyByZXR1cm4g
c2lnbigpID09IE1pbnVzOyB9CisgICAgYm9vbCBpc1BsdXMoKSBjb25zdCB7IHJldHVybiBzaWdu
KCkgPT0gUGx1czsgfQorICAgIGJvb2wgaXNTcGVjaWFsKCkgY29uc3QgeyByZXR1cm4gbV9kYXRh
LmlzU3BlY2lhbCgpOyB9CisgICAgYm9vbCBpc1plcm8oKSBjb25zdCB7IHJldHVybiBtX2RhdGEu
aXNaZXJvKCk7IH0KKyAgICBjb25zdCBFbmNvZGVkRGF0YSYgdmFsdWUoKSBjb25zdCB7IHJldHVy
biBtX2RhdGE7IH0KKworICAgIERlY2ltYWwgYWJzKCkgY29uc3Q7CisgICAgRGVjaW1hbCBjZWls
aW5nKCkgY29uc3Q7CisgICAgRGVjaW1hbCBmbG9vcigpIGNvbnN0OworICAgIERlY2ltYWwgcmVt
YWluZGVyKGNvbnN0IERlY2ltYWwmKSBjb25zdDsKKyAgICBEZWNpbWFsIHJvdW5kKCkgY29uc3Q7
CisgICAgZG91YmxlIHRvRG91YmxlKCkgY29uc3Q7CisgICAgU3RyaW5nIHRvU3RyaW5nKCkgY29u
c3Q7CisKKyAgICBzdGF0aWMgRGVjaW1hbCBmcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYpOworICAg
IHN0YXRpYyBEZWNpbWFsIGluZmluaXR5KFNpZ24pOworICAgIHN0YXRpYyBEZWNpbWFsIG5hbigp
OworICAgIHN0YXRpYyBEZWNpbWFsIHplcm8oU2lnbik7CisKK3ByaXZhdGU6CisgICAgRGVjaW1h
bChkb3VibGUpOworICAgIERlY2ltYWwgY29tcGFyZVRvKGNvbnN0IERlY2ltYWwmKSBjb25zdDsK
KyAgICBib29sIGZhc3RFcXVhbHMoY29uc3QgRGVjaW1hbCYpIGNvbnN0OworCisgICAgc3RhdGlj
IGlubGluZSBTaWduIGludmVydFNpZ24oU2lnbiBzaWduKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IHNpZ24gPT0gTWludXMgPyBQbHVzIDogTWludXM7CisgICAgfQorCisgICAgU2lnbiBzaWduKCkg
Y29uc3Q7CisKKyAgICBFbmNvZGVkRGF0YSBtX2RhdGE7Cit9OworCit9IC8vIFdlYkNvcmUKKwor
I2VuZGlmIC8vIERlY2ltYWxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9X
ZWJLaXQuZ3lwaSBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKaW5kZXggNzg1
NGVkZjBhOTlkNmNiZDgyMTU3NGNlNmY0MTU0YmMxMTBiMDM4NC4uZGM4NzU2ZWQ2YTNlYjVmNzll
MjM4YTBlYzU0YTk3ZjQyMTMwZDBmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9XZWJLaXQuZ3lwaQorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCkBA
IC05NSw2ICs5NSw3IEBACiAgICAgICAgICAgICAndGVzdHMvQ2xpcGJvYXJkQ2hyb21pdW1UZXN0
LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvQ29tcG9zaXRvckZha2VHcmFwaGljc0NvbnRleHQz
RC5oJywKICAgICAgICAgICAgICd0ZXN0cy9Db21wb3NpdG9yRmFrZVdlYkdyYXBoaWNzQ29udGV4
dDNELmgnLAorICAgICAgICAgICAgJ3Rlc3RzL0RlY2ltYWxUZXN0LmNwcCcsCiAgICAgICAgICAg
ICAndGVzdHMvRHJhZ0ltYWdlVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0RyYXdpbmdC
dWZmZXJDaHJvbWl1bVRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9FdmVudExpc3RlbmVy
VGVzdC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9EZWNp
bWFsVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0RlY2ltYWxUZXN0LmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wMTRlNzk2YTNiNjFiNTczZjY3Y2E1OWMzNmI1ODc3OGM4NWIxNGYwCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9EZWNpbWFsVGVz
dC5jcHAKQEAgLTAsMCArMSw1ODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRGVj
aW1hbC5oIgorCisjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworOjpzdGQ6Om9zdHJlYW0mIG9wZXJh
dG9yPDwoOjpzdGQ6Om9zdHJlYW0mIG9zLCBjb25zdCBEZWNpbWFsJiBkZWNpbWFsKQoreworICAg
IERlY2ltYWw6OkVuY29kZWREYXRhIGRhdGEgPSBkZWNpbWFsLnZhbHVlKCk7CisgICAgcmV0dXJu
IG9zIAorICAgICAgICA8PCAiRGVjaW1hbCgiIDw8IFN0cmluZzo6bnVtYmVyKGRhdGEuY29lZmZp
Y2llbnQoKSkuYXNjaWkoKS5kYXRhKCkKKyAgICAgICAgPDwgIiwgIiA8PCBTdHJpbmc6Om51bWJl
cihkYXRhLmV4cG9uZW50KCkpLmFzY2lpKCkuZGF0YSgpCisgICAgICAgIDw8ICIsICIgPDwgKGRh
dGEuc2lnbigpID09IERlY2ltYWw6Ok1pbnVzID8gIk1pbnVzIiA6ICJQbHVzIikKKyAgICAgICAg
PDwgIik9IiA8PCBkZWNpbWFsLnRvU3RyaW5nKCkuYXNjaWkoKS5kYXRhKCk7Cit9CisKK30gLy8g
V2ViQ29yZQorCituYW1lc3BhY2UgRGVjaW1hbFRlc3QgeworCit1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKKworLy8gU2ltdWxhdGUgV2ViQ29yZS9odG1sL1N0ZXBSYW5nZQorY2xhc3MgRGVjaW1h
bFN0ZXBSYW5nZSB7CitwdWJsaWM6CisgICAgRGVjaW1hbCBtYXhpbXVtOworICAgIERlY2ltYWwg
bWluaW11bTsKKyAgICBEZWNpbWFsIHN0ZXA7CisKKyAgICBEZWNpbWFsU3RlcFJhbmdlKGNvbnN0
IERlY2ltYWwmIG1pbmltdW0sIGNvbnN0IERlY2ltYWwmIG1heGltdW0sIGNvbnN0IERlY2ltYWwm
IHN0ZXApCisgICAgICAgIDogbWF4aW11bShtYXhpbXVtKQorICAgICAgICAsIG1pbmltdW0obWlu
aW11bSkKKyAgICAgICAgLCBzdGVwKHN0ZXApCisgICAgeworICAgIH0KKworICAgIERlY2ltYWwg
Y2xhbXBWYWx1ZShEZWNpbWFsIHZhbHVlKSBjb25zdAorICAgIHsKKyAgICAgICAgY29uc3QgRGVj
aW1hbCByZXN1bHQgPSBtaW5pbXVtICsgKCh2YWx1ZSAtIG1pbmltdW0pIC8gc3RlcCkucm91bmQo
KSAqIHN0ZXA7CisgICAgICAgIEFTU0VSVChyZXN1bHQuaXNGaW5pdGUoKSk7CisgICAgICAgIHJl
dHVybiByZXN1bHQgPiBtYXhpbXVtID8gcmVzdWx0IC0gc3RlcCA6IHJlc3VsdDsKKyAgICB9Cit9
OworCitjbGFzcyBEZWNpbWFsVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeworcHJvdGVj
dGVkOgorICAgIHR5cGVkZWYgRGVjaW1hbDo6U2lnbiBTaWduOworICAgIHByb3RlY3RlZDogc3Rh
dGljIGNvbnN0IFNpZ24gUGx1cyA9IERlY2ltYWw6OlBsdXM7CisgICAgcHJvdGVjdGVkOiBzdGF0
aWMgY29uc3QgU2lnbiBNaW51cyA9IERlY2ltYWw6Ok1pbnVzOworCisgICAgRGVjaW1hbCBlbmNv
ZGUodWludDY0X3QgY29lZmZpY2llbnQsIGludCBleHBvbmVudCwgU2lnbiBzaWduKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIERlY2ltYWwoY29lZmZpY2llbnQsIGV4cG9uZW50LCBzaWduKTsKKyAg
ICB9CisKKyAgICBwcm90ZWN0ZWQ6IERlY2ltYWwgZnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHN0
cmluZykKKyAgICB7CisgICAgICAgIHJldHVybiBEZWNpbWFsOjpmcm9tU3RyaW5nKHN0cmluZyk7
CisgICAgfQorCisgICAgcHJvdGVjdGVkOiBTdHJpbmcgc3RlcERvd24oY29uc3QgU3RyaW5nJiBt
aW5pbXVtLCBjb25zdCBTdHJpbmcmIG1heGltdW0sIGNvbnN0IFN0cmluZyYgc3RlcCwgY29uc3Qg
U3RyaW5nJiB2YWx1ZVN0cmluZywgaW50IG51bWJlck9mU3RlcFRpbWVzKQorICAgIHsKKyAgICAg
ICAgRGVjaW1hbFN0ZXBSYW5nZSBzdGVwUmFuZ2UoZnJvbVN0cmluZyhtaW5pbXVtKSwgZnJvbVN0
cmluZyhtYXhpbXVtKSwgZnJvbVN0cmluZyhzdGVwKSk7CisgICAgICAgIERlY2ltYWwgdmFsdWUg
PSBmcm9tU3RyaW5nKHZhbHVlU3RyaW5nKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBu
dW1iZXJPZlN0ZXBUaW1lczsgKytpKSB7CisgICAgICAgICAgdmFsdWUgLT0gc3RlcFJhbmdlLnN0
ZXA7CisgICAgICAgICAgdmFsdWUgPSBzdGVwUmFuZ2UuY2xhbXBWYWx1ZSh2YWx1ZSk7CisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCk7CisgICAgfQorCisgICAgcHJv
dGVjdGVkOiBTdHJpbmcgc3RlcFVwKGNvbnN0IFN0cmluZyYgbWluaW11bSwgY29uc3QgU3RyaW5n
JiBtYXhpbXVtLCBjb25zdCBTdHJpbmcmIHN0ZXAsIGNvbnN0IFN0cmluZyYgdmFsdWVTdHJpbmcs
IGludCBudW1iZXJPZlN0ZXBUaW1lcykKKyAgICB7CisgICAgICAgIERlY2ltYWxTdGVwUmFuZ2Ug
c3RlcFJhbmdlKGZyb21TdHJpbmcobWluaW11bSksIGZyb21TdHJpbmcobWF4aW11bSksIGZyb21T
dHJpbmcoc3RlcCkpOworICAgICAgICBEZWNpbWFsIHZhbHVlID0gZnJvbVN0cmluZyh2YWx1ZVN0
cmluZyk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtYmVyT2ZTdGVwVGltZXM7ICsr
aSkgeworICAgICAgICAgIHZhbHVlICs9IHN0ZXBSYW5nZS5zdGVwOworICAgICAgICAgIHZhbHVl
ID0gc3RlcFJhbmdlLmNsYW1wVmFsdWUodmFsdWUpOworICAgICAgICB9CisgICAgICAgIHJldHVy
biB2YWx1ZS50b1N0cmluZygpOworICAgIH0KK307CisKK1RFU1RfRihEZWNpbWFsVGVzdCwgQWJz
KQoreworICAgIEVYUEVDVF9FUShlbmNvZGUoMCwgMCwgUGx1cyksIGVuY29kZSgwLCAwLCBQbHVz
KS5hYnMoKSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSgwLCAwLCBQbHVzKSwgZW5jb2RlKDAsIDAs
IE1pbnVzKS5hYnMoKSk7CisKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDAsIDEwLCBQbHVzKSwgZW5j
b2RlKDAsIDEwLCBQbHVzKS5hYnMoKSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSgwLCAxMCwgUGx1
cyksIGVuY29kZSgwLCAxMCwgTWludXMpLmFicygpKTsKKworICAgIEVYUEVDVF9FUShlbmNvZGUo
MCwgLTEwLCBQbHVzKSwgZW5jb2RlKDAsIC0xMCwgUGx1cykuYWJzKCkpOworICAgIEVYUEVDVF9F
UShlbmNvZGUoMCwgLTEwLCBQbHVzKSwgZW5jb2RlKDAsIC0xMCwgTWludXMpLmFicygpKTsKKwor
ICAgIEVYUEVDVF9FUShlbmNvZGUoMSwgMCwgUGx1cyksIGVuY29kZSgxLCAwLCBQbHVzKS5hYnMo
KSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSgxLCAwLCBQbHVzKSwgZW5jb2RlKDEsIDAsIE1pbnVz
KS5hYnMoKSk7CisKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDEsIDEwLCBQbHVzKSwgZW5jb2RlKDEs
IDEwLCBQbHVzKS5hYnMoKSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSgxLCAxMCwgUGx1cyksIGVu
Y29kZSgxLCAxMCwgTWludXMpLmFicygpKTsKKworICAgIEVYUEVDVF9FUShlbmNvZGUoMSwgLTEw
LCBQbHVzKSwgZW5jb2RlKDEsIC0xMCwgUGx1cykuYWJzKCkpOworICAgIEVYUEVDVF9FUShlbmNv
ZGUoMSwgLTEwLCBQbHVzKSwgZW5jb2RlKDEsIC0xMCwgTWludXMpLmFicygpKTsKK30KKworVEVT
VF9GKERlY2ltYWxUZXN0LCBDZWlsaW5nKQoreworICAgIEVYUEVDVF9FUShEZWNpbWFsKDEpLCBE
ZWNpbWFsKDEpLmNlaWxpbmcoKSk7CisgICAgRVhQRUNUX0VRKERlY2ltYWwoMiksIGVuY29kZSgx
MSwgLTEsIFBsdXMpLmNlaWxpbmcoKSk7CisgICAgRVhQRUNUX0VRKERlY2ltYWwoMiksIGVuY29k
ZSgxMywgLTEsIFBsdXMpLmNlaWxpbmcoKSk7CisgICAgRVhQRUNUX0VRKERlY2ltYWwoMiksIGVu
Y29kZSgxNSwgLTEsIFBsdXMpLmNlaWxpbmcoKSk7CisgICAgRVhQRUNUX0VRKERlY2ltYWwoMiks
IGVuY29kZSgxOSwgLTEsIFBsdXMpLmNlaWxpbmcoKSk7CisKKyAgICBFWFBFQ1RfRVEoRGVjaW1h
bCgtMSksIERlY2ltYWwoLTEpLmNlaWxpbmcoKSk7CisgICAgRVhQRUNUX0VRKERlY2ltYWwoLTEp
LCBlbmNvZGUoMTEsIC0xLCBNaW51cykuY2VpbGluZygpKTsKKyAgICBFWFBFQ1RfRVEoRGVjaW1h
bCgtMSksIGVuY29kZSgxMywgLTEsIE1pbnVzKS5jZWlsaW5nKCkpOworICAgIEVYUEVDVF9FUShE
ZWNpbWFsKC0xKSwgZW5jb2RlKDE1LCAtMSwgTWludXMpLmNlaWxpbmcoKSk7CisgICAgRVhQRUNU
X0VRKERlY2ltYWwoLTEpLCBlbmNvZGUoMTksIC0xLCBNaW51cykuY2VpbGluZygpKTsKK30KKwor
VEVTVF9GKERlY2ltYWxUZXN0LCBFbmNvZGVkRGF0YSkKK3sKKyAgICBFWFBFQ1RfRVEoZW5jb2Rl
KDAsIDAsIFBsdXMpLCBlbmNvZGUoMCwgMCwgUGx1cykpOworICAgIEVYUEVDVF9FUShlbmNvZGUo
MCwgMCwgTWludXMpLCBlbmNvZGUoMCwgMCwgTWludXMpKTsKKyAgICBFWFBFQ1RfRVEoRGVjaW1h
bCgxKSwgRGVjaW1hbCgxKSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSgxLCAwLCBNaW51cyksIGVu
Y29kZSgxLCAwLCBNaW51cykpOworICAgIEVYUEVDVF9FUShEZWNpbWFsOjppbmZpbml0eShQbHVz
KSwgZW5jb2RlKDEsIDIwMDAsIFBsdXMpKTsKKyAgICBFWFBFQ1RfRVEoRGVjaW1hbDo6emVybyhQ
bHVzKSwgZW5jb2RlKDEsIC0yMDAwLCBQbHVzKSk7Cit9CisKK1RFU1RfRihEZWNpbWFsVGVzdCwg
Rmxvb3IpCit7CisgICAgRVhQRUNUX0VRKERlY2ltYWwoMSksIERlY2ltYWwoMSkuZmxvb3IoKSk7
CisgICAgRVhQRUNUX0VRKERlY2ltYWwoMSksIGVuY29kZSgxMSwgLTEsIFBsdXMpLmZsb29yKCkp
OworICAgIEVYUEVDVF9FUShEZWNpbWFsKDEpLCBlbmNvZGUoMTMsIC0xLCBQbHVzKS5mbG9vcigp
KTsKKyAgICBFWFBFQ1RfRVEoRGVjaW1hbCgxKSwgZW5jb2RlKDE1LCAtMSwgUGx1cykuZmxvb3Io
KSk7CisgICAgRVhQRUNUX0VRKERlY2ltYWwoMSksIGVuY29kZSgxOSwgLTEsIFBsdXMpLmZsb29y
KCkpOworCisgICAgRVhQRUNUX0VRKERlY2ltYWwoLTEpLCBEZWNpbWFsKC0xKS5mbG9vcigpKTsK
KyAgICBFWFBFQ1RfRVEoRGVjaW1hbCgtMiksIGVuY29kZSgxMSwgLTEsIE1pbnVzKS5mbG9vcigp
KTsKKyAgICBFWFBFQ1RfRVEoRGVjaW1hbCgtMiksIGVuY29kZSgxMywgLTEsIE1pbnVzKS5mbG9v
cigpKTsKKyAgICBFWFBFQ1RfRVEoRGVjaW1hbCgtMiksIGVuY29kZSgxNSwgLTEsIE1pbnVzKS5m
bG9vcigpKTsKKyAgICBFWFBFQ1RfRVEoRGVjaW1hbCgtMiksIGVuY29kZSgxOSwgLTEsIE1pbnVz
KS5mbG9vcigpKTsKK30KKworVEVTVF9GKERlY2ltYWxUZXN0LCBGcm9tSW50MzIpCit7CisgICAg
RVhQRUNUX0VRKGVuY29kZSgwLCAwLCBQbHVzKSwgRGVjaW1hbCgwKSk7CisgICAgRVhQRUNUX0VR
KERlY2ltYWwoMSksIERlY2ltYWwoMSkpOworICAgIEVYUEVDVF9FUShlbmNvZGUoMSwgMCwgTWlu
dXMpLCBEZWNpbWFsKC0xKSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSgxMDAsIDAsIFBsdXMpLCBE
ZWNpbWFsKDEwMCkpOworICAgIEVYUEVDVF9FUShlbmNvZGUoMTAwLCAwLCBNaW51cyksIERlY2lt
YWwoLTEwMCkpOworICAgIEVYUEVDVF9FUShlbmNvZGUoMHg3RkZGRkZGRiwgMCwgUGx1cyksIERl
Y2ltYWwoSU5UX01BWCkpOworICAgIEVYUEVDVF9FUShlbmNvZGUoMHg4MDAwMDAwMHUsIDAsIE1p
bnVzKSwgRGVjaW1hbChJTlRfTUlOKSk7Cit9CisKK1RFU1RfRihEZWNpbWFsVGVzdCwgRnJvbVN0
cmluZykKK3sKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDAsIDAsIFBsdXMpLCBmcm9tU3RyaW5nKCIw
IikpOworICAgIEVYUEVDVF9FUShlbmNvZGUoMCwgMCwgTWludXMpLCBmcm9tU3RyaW5nKCItMCIp
KTsKKyAgICBFWFBFQ1RfRVEoRGVjaW1hbCgxKSwgZnJvbVN0cmluZygiMSIpKTsKKyAgICBFWFBF
Q1RfRVEoZW5jb2RlKDEsIDAsIE1pbnVzKSwgZnJvbVN0cmluZygiLTEiKSk7CisgICAgRVhQRUNU
X0VRKERlY2ltYWwoMSksIGZyb21TdHJpbmcoIjAxIikpOworICAgIEVYUEVDVF9FUShlbmNvZGUo
MywgMCwgUGx1cyksIGZyb21TdHJpbmcoIiszIikpOworICAgIEVYUEVDVF9FUShlbmNvZGUoMCwg
MywgUGx1cyksIGZyb21TdHJpbmcoIjBFMyIpKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDUsIC0x
LCBQbHVzKSwgZnJvbVN0cmluZygiLjUiKSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSgxMDAsIDAs
IFBsdXMpLCBmcm9tU3RyaW5nKCIxMDAiKSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSgxMDAsIDAs
IE1pbnVzKSwgZnJvbVN0cmluZygiLTEwMCIpKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDEyMywg
LTIsIFBsdXMpLCBmcm9tU3RyaW5nKCIxLjIzIikpOworICAgIEVYUEVDVF9FUShlbmNvZGUoMTIz
LCAtMiwgTWludXMpLCBmcm9tU3RyaW5nKCItMS4yMyIpKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2Rl
KDEyMywgOCwgUGx1cyksIGZyb21TdHJpbmcoIjEuMjNFMTAiKSk7CisgICAgRVhQRUNUX0VRKGVu
Y29kZSgxMjMsIDgsIE1pbnVzKSwgZnJvbVN0cmluZygiLTEuMjNFMTAiKSk7CisgICAgRVhQRUNU
X0VRKGVuY29kZSgxMjMsIDgsIFBsdXMpLCBmcm9tU3RyaW5nKCIxLjIzRSsxMCIpKTsKKyAgICBF
WFBFQ1RfRVEoZW5jb2RlKDEyMywgOCwgTWludXMpLCBmcm9tU3RyaW5nKCItMS4yM0UrMTAiKSk7
CisgICAgRVhQRUNUX0VRKGVuY29kZSgxMjMsIC0xMiwgUGx1cyksIGZyb21TdHJpbmcoIjEuMjNF
LTEwIikpOworICAgIEVYUEVDVF9FUShlbmNvZGUoMTIzLCAtMTIsIE1pbnVzKSwgZnJvbVN0cmlu
ZygiLTEuMjNFLTEwIikpOworICAgIEVYUEVDVF9FUShlbmNvZGUoNSwgLTcsIFBsdXMpLCBmcm9t
U3RyaW5nKCIwLjAwMDAwMDUiKSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSgxMjMsIC0zLCBQbHVz
KSwgZnJvbVN0cmluZygiMC4xMjMiKSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSgwLCAtMiwgUGx1
cyksIGZyb21TdHJpbmcoIjAwLjAwIikpOworICAgIEVYUEVDVF9FUShlbmNvZGUoMSwgMiwgUGx1
cyksIGZyb21TdHJpbmcoIjFFMiIpKTsKKyAgICBFWFBFQ1RfRVEoRGVjaW1hbDo6aW5maW5pdHko
UGx1cyksIGZyb21TdHJpbmcoIjFFMjAwMDAiKSk7CisgICAgRVhQRUNUX0VRKERlY2ltYWw6Onpl
cm8oUGx1cyksIGZyb21TdHJpbmcoIjFFLTIwMDAwIikpOworICAgIEVYUEVDVF9FUShlbmNvZGUo
MTAwMCwgMTAyMywgUGx1cyksIGZyb21TdHJpbmcoIjFFMTAyNiIpKTsKKyAgICBFWFBFQ1RfRVEo
RGVjaW1hbDo6emVybyhQbHVzKSwgZnJvbVN0cmluZygiMUUtMTAyNiIpKTsKKyAgICBFWFBFQ1Rf
RVEoRGVjaW1hbDo6aW5maW5pdHkoUGx1cyksIGZyb21TdHJpbmcoIjEyMzQ1Njc4OTBFMTAzNiIp
KTsKKworICAgIC8vIDJeMTAyNAorLy8gRklYTUU6IFVJTlQ2NF9DKDE3OTc2OTMxMzQ4NjIzMTU5
KSBzaG91bGQgYmUgdXNlZCBidXQgaXQgZGlkIG5vdCBjb21waWxlIG9uIFF0IGJvdHMuCisjaWYg
Q09NUElMRVIoTVNWQykKKyAgICBjb25zdCB1aW50NjRfdCBsZWFkaW5nRGlnaXRzT2YyUG93ZXJP
ZjEwMjQgPSAxNzk3NjkzMTM0ODYyMzE1OXVpNjQ7CisjZWxzZQorICAgIGNvbnN0IHVpbnQ2NF90
IGxlYWRpbmdEaWdpdHNPZjJQb3dlck9mMTAyNCA9IDE3OTc2OTMxMzQ4NjIzMTU5dWxsOworI2Vu
ZGlmCisgICAgRVhQRUNUX0VRKGVuY29kZShsZWFkaW5nRGlnaXRzT2YyUG93ZXJPZjEwMjQsIDI5
MiwgUGx1cyksIGZyb21TdHJpbmcoIjE3OTc2OTMxMzQ4NjIzMTU5MDc3MjkzMDUxOTA3ODkwMjQ3
MzM2MTc5NzY5Nzg5NDIzMDY1NzI3MzQzMDA4MTE1NzczMjY3NTgwNTUwMDk2MzEzMjcwODQ3NzMy
MjQwNzUzNjAyMTEyMDExMzg3OTg3MTM5MzM1NzY1ODc4OTc2ODgxNDQxNjYyMjQ5Mjg0NzQzMDYz
OTQ3NDEyNDM3Nzc2Nzg5MzQyNDg2NTQ4NTI3NjMwMjIxOTYwMTI0NjA5NDExOTQ1MzA4Mjk1MjA4
NTAwNTc2ODgzODE1MDY4MjM0MjQ2Mjg4MTQ3MzkxMzExMDU0MDgyNzIzNzE2MzM1MDUxMDY4NDU4
NjI5ODIzOTk0NzI0NTkzODQ3OTcxNjMwNDgzNTM1NjMyOTYyNDIyNDEzNzIxNiIpKTsKK30KKwor
Ly8gVGhlc2Ugc3RyaW5ncyBhcmUgbG9vayBsaWtlIHByb3BlciBudW1iZXIsIGJ1dCB3ZSBkb24n
dCBhY2NlcHQgdGhlbS4KK1RFU1RfRihEZWNpbWFsVGVzdCwgRnJvbVN0cmluZ0xpa2VOdW1iZXIp
Cit7CisgICAgRVhQRUNUX0VRKERlY2ltYWw6Om5hbigpLCBmcm9tU3RyaW5nKCIgMTIzICIpKTsK
KyAgICBFWFBFQ1RfRVEoRGVjaW1hbDo6bmFuKCksIGZyb21TdHJpbmcoIjEsMjM0IikpOworICAg
IEVYUEVDVF9FUShEZWNpbWFsOjpuYW4oKSwgZnJvbVN0cmluZygiSU5GIikpOworfQorCitURVNU
X0YoRGVjaW1hbFRlc3QsIGZyb21TdHJpbmdUcnVuY2F0ZWQpCit7CisgICAgRVhQRUNUX0VRKERl
Y2ltYWw6Om5hbigpLCBmcm9tU3RyaW5nKCJ4IikpOworICAgIEVYUEVDVF9FUShEZWNpbWFsOjpu
YW4oKSwgZnJvbVN0cmluZygiMC4iKSk7CisgICAgRVhQRUNUX0VRKERlY2ltYWw6Om5hbigpLCBm
cm9tU3RyaW5nKCIxeCIpKTsKKworICAgIEVYUEVDVF9FUShEZWNpbWFsOjpuYW4oKSwgZnJvbVN0
cmluZygiMUV4IikpOworICAgIEVYUEVDVF9FUShEZWNpbWFsOjpuYW4oKSwgZnJvbVN0cmluZygi
MUUyeCIpKTsKKyAgICBFWFBFQ1RfRVEoRGVjaW1hbDo6bmFuKCksIGZyb21TdHJpbmcoIjFFK3gi
KSk7Cit9CisKK1RFU1RfRihEZWNpbWFsVGVzdCwgT3BBZGQpCit7CisgICAgRVhQRUNUX0VRKGVu
Y29kZSgwLCAwLCBQbHVzKSwgRGVjaW1hbCgwKSArIERlY2ltYWwoMCkpOworICAgIEVYUEVDVF9F
UShEZWNpbWFsKDEpLCBEZWNpbWFsKDIpICsgRGVjaW1hbCgtMSkpOworICAgIEVYUEVDVF9FUShE
ZWNpbWFsKDEpLCBEZWNpbWFsKC0xKSArIERlY2ltYWwoMikpOworICAgIEVYUEVDVF9FUShlbmNv
ZGUoMTAwLCAwLCBQbHVzKSwgRGVjaW1hbCg5OSkgKyBEZWNpbWFsKDEpKTsKKyAgICBFWFBFQ1Rf
RVEoZW5jb2RlKDEwMCwgMCwgTWludXMpLCBEZWNpbWFsKC01MCkgKyBEZWNpbWFsKC01MCkpOwor
ICAgIEVYUEVDVF9FUShlbmNvZGUoMTAwMDAwMDAwMDAwMDAwMCwgMzUsIFBsdXMpLCBlbmNvZGUo
MSwgNTAsIFBsdXMpICsgRGVjaW1hbCgxKSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSgxMDAwMDAw
MDAwMDAwMDAwLCAzNSwgUGx1cyksIERlY2ltYWwoMSkgKyBlbmNvZGUoMSwgNTAsIFBsdXMpKTsK
KyAgICBFWFBFQ1RfRVEoZW5jb2RlKDEwMDAwMDAwMDAxLCAwLCBQbHVzKSwgZW5jb2RlKDEsIDEw
LCBQbHVzKSArIERlY2ltYWwoMSkpOworICAgIEVYUEVDVF9FUShlbmNvZGUoMTAwMDAwMDAwMDEs
IDAsIFBsdXMpLCBEZWNpbWFsKDEpICsgZW5jb2RlKDEsIDEwLCBQbHVzKSk7CisgICAgRVhQRUNU
X0VRKGVuY29kZSgxLCAwLCBQbHVzKSwgZW5jb2RlKDEsIC0xMDIyLCBQbHVzKSArIGVuY29kZSgx
LCAwLCBQbHVzKSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSgyLCAtMTAyMiwgUGx1cyksIGVuY29k
ZSgxLCAtMTAyMiwgUGx1cykgKyBlbmNvZGUoMSwgLTEwMjIsIFBsdXMpKTsKK30KKworVEVTVF9G
KERlY2ltYWxUZXN0LCBPcEFkZEJpZ0UpCit7CisgICAgRVhQRUNUX0VRKGVuY29kZSgxLCAxMDIy
LCBQbHVzKSwgZW5jb2RlKDEsIDEwMjIsIFBsdXMpICsgZW5jb2RlKDEsIDAsIFBsdXMpKTsKKyAg
ICBFWFBFQ1RfRVEoZW5jb2RlKDIsIDEwMjIsIFBsdXMpLCBlbmNvZGUoMSwgMTAyMiwgUGx1cykg
KyBlbmNvZGUoMSwgMTAyMiwgUGx1cykpOworICAgIEVYUEVDVF9FUShEZWNpbWFsOjppbmZpbml0
eShQbHVzKSwgZW5jb2RlKHVpbnQ2NF90KC0xKSwgMTAyMiwgUGx1cykgKyBlbmNvZGUoMSwgMCwg
UGx1cykpOworfQorCitURVNUX0YoRGVjaW1hbFRlc3QsIE9wQWRkU21hbGxFKQoreworICAgIEVY
UEVDVF9FUShlbmNvZGUoMSwgMCwgUGx1cyksIGVuY29kZSgxLCAtMTAyMiwgUGx1cykgKyBlbmNv
ZGUoMSwgMCwgUGx1cykpOworICAgIEVYUEVDVF9FUShlbmNvZGUoMiwgLTEwMjIsIFBsdXMpLCBl
bmNvZGUoMSwgLTEwMjIsIFBsdXMpICsgZW5jb2RlKDEsIC0xMDIyLCBQbHVzKSk7Cit9CisKK1RF
U1RfRihEZWNpbWFsVGVzdCwgT3BBZGRTcGVjaWFsVmFsdWVzKQoreworICAgIGNvbnN0IERlY2lt
YWwgSW5maW5pdHkoRGVjaW1hbDo6aW5maW5pdHkoUGx1cykpOworICAgIGNvbnN0IERlY2ltYWwg
TWludXNJbmZpbml0eShEZWNpbWFsOjppbmZpbml0eShNaW51cykpOworICAgIGNvbnN0IERlY2lt
YWwgTmFOKERlY2ltYWw6Om5hbigpKTsKKyAgICBjb25zdCBEZWNpbWFsIFRlbigxMCk7CisKKyAg
ICBFWFBFQ1RfRVEoSW5maW5pdHksIEluZmluaXR5ICsgSW5maW5pdHkpOworICAgIEVYUEVDVF9F
UShOYU4sIEluZmluaXR5ICsgTWludXNJbmZpbml0eSk7CisgICAgRVhQRUNUX0VRKE5hTiwgTWlu
dXNJbmZpbml0eSArIEluZmluaXR5KTsKKyAgICBFWFBFQ1RfRVEoTWludXNJbmZpbml0eSwgTWlu
dXNJbmZpbml0eSArIE1pbnVzSW5maW5pdHkpOworCisgICAgRVhQRUNUX0VRKEluZmluaXR5LCBJ
bmZpbml0eSArIFRlbik7CisgICAgRVhQRUNUX0VRKEluZmluaXR5LCBUZW4gKyBJbmZpbml0eSk7
CisgICAgRVhQRUNUX0VRKE1pbnVzSW5maW5pdHksIE1pbnVzSW5maW5pdHkgKyBUZW4pOworICAg
IEVYUEVDVF9FUShNaW51c0luZmluaXR5LCBUZW4gKyBNaW51c0luZmluaXR5KTsKKworICAgIEVY
UEVDVF9FUShOYU4sIE5hTiArIE5hTik7CisgICAgRVhQRUNUX0VRKE5hTiwgTmFOICsgVGVuKTsK
KyAgICBFWFBFQ1RfRVEoTmFOLCBUZW4gKyBOYU4pOworfQorCitURVNUX0YoRGVjaW1hbFRlc3Qs
IE9wQ29tcGFyZSkKK3sKKyAgICBFWFBFQ1RfVFJVRShEZWNpbWFsKDApID09IERlY2ltYWwoMCkp
OworICAgIEVYUEVDVF9UUlVFKERlY2ltYWwoMCkgIT0gRGVjaW1hbCgxKSk7CisgICAgRVhQRUNU
X1RSVUUoRGVjaW1hbCgwKSA8IERlY2ltYWwoMSkpOworICAgIEVYUEVDVF9UUlVFKERlY2ltYWwo
MCkgPD0gRGVjaW1hbCgwKSk7CisgICAgRVhQRUNUX1RSVUUoRGVjaW1hbCgwKSA+IERlY2ltYWwo
LTEpKTsKKyAgICBFWFBFQ1RfVFJVRShEZWNpbWFsKDApID49IERlY2ltYWwoMCkpOworCisgICAg
RVhQRUNUX0ZBTFNFKERlY2ltYWwoMSkgPT0gRGVjaW1hbCgyKSk7CisgICAgRVhQRUNUX0ZBTFNF
KERlY2ltYWwoMSkgIT0gRGVjaW1hbCgxKSk7CisgICAgRVhQRUNUX0ZBTFNFKERlY2ltYWwoMSkg
PCBEZWNpbWFsKDApKTsKKyAgICBFWFBFQ1RfRkFMU0UoRGVjaW1hbCgxKSA8PSBEZWNpbWFsKDAp
KTsKKyAgICBFWFBFQ1RfRkFMU0UoRGVjaW1hbCgxKSA+IERlY2ltYWwoMikpOworICAgIEVYUEVD
VF9GQUxTRShEZWNpbWFsKDEpID49IERlY2ltYWwoMikpOworfQorCitURVNUX0YoRGVjaW1hbFRl
c3QsIE9wQ29tcGFyZVNwZWNpYWxWYWx1ZXMpCit7CisgICAgRVhQRUNUX1RSVUUoRGVjaW1hbCgx
KSA8IERlY2ltYWw6OmluZmluaXR5KFBsdXMpKTsKKyAgICBFWFBFQ1RfVFJVRShEZWNpbWFsKDEp
ID4gRGVjaW1hbDo6aW5maW5pdHkoTWludXMpKTsKK30KKworVEVTVF9GKERlY2ltYWxUZXN0LCBP
cERpdikKK3sKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDAsIDAsIFBsdXMpLCBEZWNpbWFsKDApIC8g
RGVjaW1hbCgxKSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSgyLCAwLCBNaW51cyksIERlY2ltYWwo
MikgLyBEZWNpbWFsKC0xKSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSg1LCAtMSwgTWludXMpLCBE
ZWNpbWFsKC0xKSAvIERlY2ltYWwoMikpOworICAgIEVYUEVDVF9FUShlbmNvZGUoOTksIDAsIFBs
dXMpLCBEZWNpbWFsKDk5KSAvIERlY2ltYWwoMSkpOworICAgIEVYUEVDVF9FUShEZWNpbWFsKDEp
LCBEZWNpbWFsKC01MCkgLyBEZWNpbWFsKC01MCkpOworICAgIEVYUEVDVF9FUShlbmNvZGUoMzMz
MzMzMzMzMzMzMzMzMywgLTE2LCBQbHVzKSwgRGVjaW1hbCgxKSAvIERlY2ltYWwoMykpOworICAg
IEVYUEVDVF9FUShlbmNvZGUoMTIzNDU2Nzg5MDEyMzQsIC0xLCBQbHVzKSwgZW5jb2RlKDEyMzQ1
Njc4OTAxMjM0LCAwLCBQbHVzKSAvIERlY2ltYWwoMTApKTsKK30KKworVEVTVF9GKERlY2ltYWxU
ZXN0LCBPcERpdkJpZ0UpCit7CisgICAgRVhQRUNUX0VRKGVuY29kZSgxLCAxMDIyLCBQbHVzKSwg
ZW5jb2RlKDEsIDEwMjIsIFBsdXMpIC8gZW5jb2RlKDEsIDAsIFBsdXMpKTsKKyAgICBFWFBFQ1Rf
RVEoZW5jb2RlKDEsIDAsIFBsdXMpLCBlbmNvZGUoMSwgMTAyMiwgUGx1cykgLyBlbmNvZGUoMSwg
MTAyMiwgUGx1cykpOworfQorCitURVNUX0YoRGVjaW1hbFRlc3QsIE9wRGl2U21hbGxFKQorewor
ICAgIEVYUEVDVF9FUShlbmNvZGUoMSwgLTEwMjIsIFBsdXMpLCBlbmNvZGUoMSwgLTEwMjIsIFBs
dXMpIC8gZW5jb2RlKDEsIDAsIFBsdXMpKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDEsIDAsIFBs
dXMpLCBlbmNvZGUoMSwgLTEwMjIsIFBsdXMpIC8gZW5jb2RlKDEsIC0xMDIyLCBQbHVzKSk7Cit9
CisKK1RFU1RfRihEZWNpbWFsVGVzdCwgT3BEaXZTcGVjaWFsVmFsdWVzKQoreworICAgIGNvbnN0
IERlY2ltYWwgSW5maW5pdHkoRGVjaW1hbDo6aW5maW5pdHkoUGx1cykpOworICAgIGNvbnN0IERl
Y2ltYWwgTWludXNJbmZpbml0eShEZWNpbWFsOjppbmZpbml0eShNaW51cykpOworICAgIGNvbnN0
IERlY2ltYWwgTmFOKERlY2ltYWw6Om5hbigpKTsKKyAgICBjb25zdCBEZWNpbWFsIFplcm8oRGVj
aW1hbDo6emVybyhQbHVzKSk7CisgICAgY29uc3QgRGVjaW1hbCBNaW51c1plcm8oRGVjaW1hbDo6
emVybyhNaW51cykpOworICAgIGNvbnN0IERlY2ltYWwgVGVuKDEwKTsKKyAgICBjb25zdCBEZWNp
bWFsIE1pbnVzVGVuKC0xMCk7CisKKyAgICBFWFBFQ1RfRVEoTmFOLCBaZXJvIC8gWmVybyk7Cisg
ICAgRVhQRUNUX0VRKE5hTiwgWmVybyAvIE1pbnVzWmVybyk7CisgICAgRVhQRUNUX0VRKE5hTiwg
TWludXNaZXJvIC8gWmVybyk7CisgICAgRVhQRUNUX0VRKE5hTiwgTWludXNaZXJvIC8gTWludXNa
ZXJvKTsKKworICAgIEVYUEVDVF9FUShJbmZpbml0eSwgVGVuIC8gWmVybyk7CisgICAgRVhQRUNU
X0VRKE1pbnVzSW5maW5pdHksIFRlbiAvIE1pbnVzWmVybyk7CisgICAgRVhQRUNUX0VRKE1pbnVz
SW5maW5pdHksIE1pbnVzVGVuIC8gWmVybyk7CisgICAgRVhQRUNUX0VRKEluZmluaXR5LCBNaW51
c1RlbiAvIE1pbnVzWmVybyk7CisKKyAgICBFWFBFQ1RfRVEoSW5maW5pdHksIEluZmluaXR5IC8g
WmVybyk7CisgICAgRVhQRUNUX0VRKE1pbnVzSW5maW5pdHksIEluZmluaXR5IC8gTWludXNaZXJv
KTsKKyAgICBFWFBFQ1RfRVEoTWludXNJbmZpbml0eSwgTWludXNJbmZpbml0eSAvIFplcm8pOwor
ICAgIEVYUEVDVF9FUShJbmZpbml0eSwgTWludXNJbmZpbml0eSAvIE1pbnVzWmVybyk7CisKKyAg
ICBFWFBFQ1RfRVEoTmFOLCBJbmZpbml0eSAvIEluZmluaXR5KTsKKyAgICBFWFBFQ1RfRVEoTmFO
LCBJbmZpbml0eSAvIE1pbnVzSW5maW5pdHkpOworICAgIEVYUEVDVF9FUShOYU4sIE1pbnVzSW5m
aW5pdHkgLyBJbmZpbml0eSk7CisgICAgRVhQRUNUX0VRKE5hTiwgTWludXNJbmZpbml0eSAvIE1p
bnVzSW5maW5pdHkpOworCisgICAgRVhQRUNUX0VRKFplcm8sIFRlbiAvIEluZmluaXR5KTsKKyAg
ICBFWFBFQ1RfRVEoTWludXNaZXJvLCBUZW4gLyBNaW51c0luZmluaXR5KTsKKyAgICBFWFBFQ1Rf
RVEoTWludXNaZXJvLCBNaW51c1RlbiAvIEluZmluaXR5KTsKKyAgICBFWFBFQ1RfRVEoWmVybywg
TWludXNUZW4gLyBNaW51c0luZmluaXR5KTsKKworICAgIEVYUEVDVF9FUShOYU4sIE5hTiAvIE5h
Tik7CisgICAgRVhQRUNUX0VRKE5hTiwgTmFOIC8gVGVuKTsKKyAgICBFWFBFQ1RfRVEoTmFOLCBU
ZW4gLyBOYU4pOworfQorCitURVNUX0YoRGVjaW1hbFRlc3QsIE9wTXVsKQoreworICAgIEVYUEVD
VF9FUShlbmNvZGUoMCwgMCwgUGx1cyksIERlY2ltYWwoMCkgKiBEZWNpbWFsKDApKTsKKyAgICBF
WFBFQ1RfRVEoZW5jb2RlKDIsIDAsIE1pbnVzKSwgRGVjaW1hbCgyKSAqIERlY2ltYWwoLTEpKTsK
KyAgICBFWFBFQ1RfRVEoZW5jb2RlKDIsIDAsIE1pbnVzKSwgRGVjaW1hbCgtMSkgKiBEZWNpbWFs
KDIpKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDk5LCAwLCBQbHVzKSwgRGVjaW1hbCg5OSkgKiBE
ZWNpbWFsKDEpKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDI1MDAsIDAsIFBsdXMpLCBEZWNpbWFs
KC01MCkgKiBEZWNpbWFsKC01MCkpOworfQorCitURVNUX0YoRGVjaW1hbFRlc3QsIE9wTXVsQmln
RSkKK3sKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDEsIDEwMjIsIFBsdXMpLCBlbmNvZGUoMSwgMTAy
MiwgUGx1cykgKiBlbmNvZGUoMSwgMCwgUGx1cykpOworICAgIEVYUEVDVF9FUShEZWNpbWFsOjpp
bmZpbml0eShQbHVzKSwgZW5jb2RlKDEsIDEwMjIsIFBsdXMpICogZW5jb2RlKDEsIDEwMjIsIFBs
dXMpKTsKK30KKworVEVTVF9GKERlY2ltYWxUZXN0LCBPcE11bFNtYWxsRSkKK3sKKyAgICBFWFBF
Q1RfRVEoZW5jb2RlKDEsIC0xMDIyLCBQbHVzKSwgZW5jb2RlKDEsIC0xMDIyLCBQbHVzKSAqIGVu
Y29kZSgxLCAwLCBQbHVzKSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSgwLCAwLCBQbHVzKSwgZW5j
b2RlKDEsIC0xMDIyLCBQbHVzKSAqIGVuY29kZSgxLCAtMTAyMiwgUGx1cykpOworfQorCitURVNU
X0YoRGVjaW1hbFRlc3QsIE9wTXVsU3BlY2lhbFZhbHVlcykKK3sKKyAgICBjb25zdCBEZWNpbWFs
IEluZmluaXR5KERlY2ltYWw6OmluZmluaXR5KFBsdXMpKTsKKyAgICBjb25zdCBEZWNpbWFsIE1p
bnVzSW5maW5pdHkoRGVjaW1hbDo6aW5maW5pdHkoTWludXMpKTsKKyAgICBjb25zdCBEZWNpbWFs
IE5hTihEZWNpbWFsOjpuYW4oKSk7CisgICAgY29uc3QgRGVjaW1hbCBUZW4oMTApOworICAgIGNv
bnN0IERlY2ltYWwgTWludXNUZW4oLTEwKTsKKyAgICBjb25zdCBEZWNpbWFsIFplcm8oRGVjaW1h
bDo6emVybyhQbHVzKSk7CisgICAgY29uc3QgRGVjaW1hbCBNaW51c1plcm8oRGVjaW1hbDo6emVy
byhNaW51cykpOworCisgICAgRVhQRUNUX0VRKEluZmluaXR5LCBJbmZpbml0eSAqIEluZmluaXR5
KTsKKyAgICBFWFBFQ1RfRVEoTWludXNJbmZpbml0eSwgSW5maW5pdHkgKiBNaW51c0luZmluaXR5
KTsKKyAgICBFWFBFQ1RfRVEoTWludXNJbmZpbml0eSwgTWludXNJbmZpbml0eSAqIEluZmluaXR5
KTsKKyAgICBFWFBFQ1RfRVEoSW5maW5pdHksIE1pbnVzSW5maW5pdHkgKiBNaW51c0luZmluaXR5
KTsKKworICAgIEVYUEVDVF9FUShOYU4sIEluZmluaXR5ICogWmVybyk7CisgICAgRVhQRUNUX0VR
KE5hTiwgWmVybyAqIE1pbnVzSW5maW5pdHkpOworICAgIEVYUEVDVF9FUShOYU4sIE1pbnVzSW5m
aW5pdHkgKiBaZXJvKTsKKyAgICBFWFBFQ1RfRVEoTmFOLCBNaW51c0luZmluaXR5ICogWmVybyk7
CisKKyAgICBFWFBFQ1RfRVEoTmFOLCBJbmZpbml0eSAqIE1pbnVzWmVybyk7CisgICAgRVhQRUNU
X0VRKE5hTiwgTWludXNaZXJvICogTWludXNJbmZpbml0eSk7CisgICAgRVhQRUNUX0VRKE5hTiwg
TWludXNJbmZpbml0eSAqIE1pbnVzWmVybyk7CisgICAgRVhQRUNUX0VRKE5hTiwgTWludXNJbmZp
bml0eSAqIE1pbnVzWmVybyk7CisKKyAgICBFWFBFQ1RfRVEoSW5maW5pdHksIEluZmluaXR5ICog
VGVuKTsKKyAgICBFWFBFQ1RfRVEoSW5maW5pdHksIFRlbiAqIEluZmluaXR5KTsKKyAgICBFWFBF
Q1RfRVEoTWludXNJbmZpbml0eSwgTWludXNJbmZpbml0eSAqIFRlbik7CisgICAgRVhQRUNUX0VR
KE1pbnVzSW5maW5pdHksIFRlbiAqIE1pbnVzSW5maW5pdHkpOworCisgICAgRVhQRUNUX0VRKE1p
bnVzSW5maW5pdHksIEluZmluaXR5ICogTWludXNUZW4pOworICAgIEVYUEVDVF9FUShNaW51c0lu
ZmluaXR5LCBNaW51c1RlbiAqIEluZmluaXR5KTsKKyAgICBFWFBFQ1RfRVEoSW5maW5pdHksIE1p
bnVzSW5maW5pdHkgKiBNaW51c1Rlbik7CisgICAgRVhQRUNUX0VRKEluZmluaXR5LCBNaW51c1Rl
biAqIE1pbnVzSW5maW5pdHkpOworCisgICAgRVhQRUNUX0VRKE5hTiwgTmFOICogTmFOKTsKKyAg
ICBFWFBFQ1RfRVEoTmFOLCBOYU4gKiBUZW4pOworICAgIEVYUEVDVF9FUShOYU4sIFRlbiAqIE5h
Tik7Cit9CisKK1RFU1RfRihEZWNpbWFsVGVzdCwgT3BTdWIpCit7CisgICAgRVhQRUNUX0VRKGVu
Y29kZSgwLCAwLCBQbHVzKSwgRGVjaW1hbCgwKSAtIERlY2ltYWwoMCkpOworICAgIEVYUEVDVF9F
UShlbmNvZGUoMywgMCwgUGx1cyksIERlY2ltYWwoMikgLSBEZWNpbWFsKC0xKSk7CisgICAgRVhQ
RUNUX0VRKGVuY29kZSgzLCAwLCBNaW51cyksIERlY2ltYWwoLTEpIC0gRGVjaW1hbCgyKSk7Cisg
ICAgRVhQRUNUX0VRKGVuY29kZSg5OCwgMCwgUGx1cyksIERlY2ltYWwoOTkpIC0gRGVjaW1hbCgx
KSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSgwLCAwLCBQbHVzKSwgRGVjaW1hbCgtNTApIC0gRGVj
aW1hbCgtNTApKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDEwMDAwMDAwMDAwMDAwMDAsIDM1LCBQ
bHVzKSwgZW5jb2RlKDEsIDUwLCBQbHVzKSAtIERlY2ltYWwoMSkpOworICAgIEVYUEVDVF9FUShl
bmNvZGUoMTAwMDAwMDAwMDAwMDAwMCwgMzUsIE1pbnVzKSwgRGVjaW1hbCgxKSAtIGVuY29kZSgx
LCA1MCwgUGx1cykpOworfQorCitURVNUX0YoRGVjaW1hbFRlc3QsIE9wU3ViQmlnRSkKK3sKKyAg
ICBFWFBFQ1RfRVEoZW5jb2RlKDEsIDEwMjIsIFBsdXMpLCBlbmNvZGUoMSwgMTAyMiwgUGx1cykg
LSBlbmNvZGUoMSwgMCwgUGx1cykpOworICAgIEVYUEVDVF9FUShlbmNvZGUoMCwgMCwgUGx1cyks
IGVuY29kZSgxLCAxMDIyLCBQbHVzKSAtIGVuY29kZSgxLCAxMDIyLCBQbHVzKSk7Cit9CisKK1RF
U1RfRihEZWNpbWFsVGVzdCwgT3BTdWJTbWFsbEUpCit7CisgICAgLy8gRklYTUU6IFVJTlQ2NF9D
KDEwMDAwMDAwMDAwMDAwMDAwKSBzaG91bGQgYmUgdXNlZCBidXQgaXQgZGlkIG5vdCBjb21waWxl
IG9uIFF0IGJvdHMuCisgICAgI2lmIENPTVBJTEVSKE1TVkMpCisgICAgICAgIGNvbnN0IHVpbnQ2
NF90IHVpbnQxMDAwMDAwMDAwMDAwMDAwMCA9IDEwMDAwMDAwMDAwMDAwMDAwdWk2NDsKKyAgICAj
ZWxzZQorICAgICAgICBjb25zdCB1aW50NjRfdCB1aW50MTAwMDAwMDAwMDAwMDAwMDAgPSAxMDAw
MDAwMDAwMDAwMDAwMHVsbDsKKyAgICAjZW5kaWYKKworICAgIEVYUEVDVF9FUShlbmNvZGUodWlu
dDEwMDAwMDAwMDAwMDAwMDAwLCAtMTYsIE1pbnVzKSwgZW5jb2RlKDEsIC0xMDIyLCBQbHVzKSAt
IGVuY29kZSgxLCAwLCBQbHVzKSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSgwLCAwLCBQbHVzKSwg
ZW5jb2RlKDEsIC0xMDIyLCBQbHVzKSAtIGVuY29kZSgxLCAtMTAyMiwgUGx1cykpOworfQorCitU
RVNUX0YoRGVjaW1hbFRlc3QsIE9wU3ViU3BlY2lhbFZhbHVlcykKK3sKKyAgICBjb25zdCBEZWNp
bWFsIEluZmluaXR5KERlY2ltYWw6OmluZmluaXR5KFBsdXMpKTsKKyAgICBjb25zdCBEZWNpbWFs
IE1pbnVzSW5maW5pdHkoRGVjaW1hbDo6aW5maW5pdHkoTWludXMpKTsKKyAgICBjb25zdCBEZWNp
bWFsIE5hTihEZWNpbWFsOjpuYW4oKSk7CisgICAgY29uc3QgRGVjaW1hbCBUZW4oMTApOworCisg
ICAgRVhQRUNUX0VRKE5hTiwgSW5maW5pdHkgLSBJbmZpbml0eSk7CisgICAgRVhQRUNUX0VRKElu
ZmluaXR5LCBJbmZpbml0eSAtIE1pbnVzSW5maW5pdHkpOworICAgIEVYUEVDVF9FUShNaW51c0lu
ZmluaXR5LCBNaW51c0luZmluaXR5IC0gSW5maW5pdHkpOworICAgIEVYUEVDVF9FUShOYU4sIE1p
bnVzSW5maW5pdHkgLSBNaW51c0luZmluaXR5KTsKKworICAgIEVYUEVDVF9FUShJbmZpbml0eSwg
SW5maW5pdHkgLSBUZW4pOworICAgIEVYUEVDVF9FUShNaW51c0luZmluaXR5LCBUZW4gLSBJbmZp
bml0eSk7CisgICAgRVhQRUNUX0VRKE1pbnVzSW5maW5pdHksIE1pbnVzSW5maW5pdHkgLSBUZW4p
OworICAgIEVYUEVDVF9FUShJbmZpbml0eSwgVGVuIC0gTWludXNJbmZpbml0eSk7CisKKyAgICBF
WFBFQ1RfRVEoTmFOLCBOYU4gLSBOYU4pOworICAgIEVYUEVDVF9FUShOYU4sIE5hTiAtIFRlbik7
CisgICAgRVhQRUNUX0VRKE5hTiwgVGVuIC0gTmFOKTsKK30KKworVEVTVF9GKERlY2ltYWxUZXN0
LCBQcm9wZXJ0aWVzKQoreworICAgIEVYUEVDVF9UUlVFKERlY2ltYWwoMCkuaXNGaW5pdGUoKSk7
CisgICAgRVhQRUNUX0ZBTFNFKERlY2ltYWwoMCkuaXNTcGVjaWFsKCkpOworfQorCitURVNUX0Yo
RGVjaW1hbFRlc3QsIFByb3BlcnRpZXNTcGVjaWFsKQoreworICAgIEVYUEVDVF9UUlVFKERlY2lt
YWw6OmluZmluaXR5KFBsdXMpLmlzU3BlY2lhbCgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoRGVjaW1h
bDo6aW5maW5pdHkoUGx1cykuaXNGaW5pdGUoKSk7CisKKyAgICBFWFBFQ1RfVFJVRShEZWNpbWFs
OjppbmZpbml0eShNaW51cykuaXNTcGVjaWFsKCkpOworICAgIEVYUEVDVF9GQUxTRShEZWNpbWFs
OjppbmZpbml0eShNaW51cykuaXNGaW5pdGUoKSk7CisKKyAgICBFWFBFQ1RfVFJVRShEZWNpbWFs
OjpuYW4oKS5pc1NwZWNpYWwoKSk7CisgICAgRVhQRUNUX0ZBTFNFKERlY2ltYWw6Om5hbigpLmlz
RmluaXRlKCkpOworfQorCisvLyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL251bWJlci9udW1iZXIt
c3RlcHVwLXN0ZXBkb3duLWZyb20tcmVuZGVyZXIKK1RFU1RfRihEZWNpbWFsVGVzdCwgUmVhbFdv
cmxkRXhhbXBsZU51bWJlclN0ZXBVcFN0ZXBEb3duRnJvbVJlbmRlcmVyKQoreworICAgIEVYUEVD
VF9FUShTdHJpbmcoIjEwIiksIHN0ZXBEb3duKCIwIiwgIjEwMCIsICIxMCIsICIxOSIsIDEpKTsK
KyAgICBFWFBFQ1RfRVEoU3RyaW5nKCI5MCIpLCBzdGVwVXAoIjAiLCAiOTkiLCAiMTAiLCAiODki
LCAxKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiMSIpLCBzdGVwVXAoIjAiLCAiMSIsICIwLjMz
MzMzMzMzMzMzMzMzMzMzIiwgIjAiLCAzKSk7IC8vIHN0ZXA9MS8zCisgICAgRVhQRUNUX0VRKFN0
cmluZygiMC4wMSIpLCBzdGVwVXAoIjAiLCAiMC4wMSIsICIwLjAwMzMzMzMzMzMzMzMzMzMzMzMi
LCAiMCIsIDMpKTsgLy8gc3RlcD0xLzMwMAorICAgIEVYUEVDVF9FUShTdHJpbmcoIjEiKSwgc3Rl
cFVwKCIwIiwgIjEiLCAiMC4wMDM5MjE1Njg2Mjc0NTA5ODAiLCAiMCIsIDI1NSkpOyAvLyBzdGVw
PTEvMjU1CisgICAgRVhQRUNUX0VRKFN0cmluZygiMSIpLCBzdGVwVXAoIjAiLCAiMSIsICIwLjEi
LCAiMCIsIDEwKSk7Cit9CisKK1RFU1RfRihEZWNpbWFsVGVzdCwgUmVhbFdvcmxkRXhhbXBsZU51
bWJlclN0ZXBVcFN0ZXBEb3duRnJvbVJlbmRlcmVyUm91bmRpbmcpCit7CisgICAgRVhQRUNUX0VR
KFN0cmluZygiNS4wMTUiKSwgc3RlcFVwKCIwIiwgIjEwMCIsICIwLjAwNSIsICI1LjAwNSIsIDIp
KTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCI1LjA2IiksIHN0ZXBVcCgiMCIsICIxMDAiLCAiMC4w
MDUiLCAiNS4wMDUiLCAxMSkpOworICAgIEVYUEVDVF9FUShTdHJpbmcoIjUuMDY1IiksIHN0ZXBV
cCgiMCIsICIxMDAiLCAiMC4wMDUiLCAiNS4wMDUiLCAxMikpOworCisgICAgRVhQRUNUX0VRKFN0
cmluZygiNS4wMTUiKSwgc3RlcFVwKCI0IiwgIjkiLCAiMC4wMDUiLCAiNS4wMDUiLCAyKSk7Cisg
ICAgRVhQRUNUX0VRKFN0cmluZygiNS4wNiIpLCBzdGVwVXAoIjQiLCAiOSIsICIwLjAwNSIsICI1
LjAwNSIsIDExKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiNS4wNjUiKSwgc3RlcFVwKCI0Iiwg
IjkiLCAiMC4wMDUiLCAiNS4wMDUiLCAxMikpOworfQorCitURVNUX0YoRGVjaW1hbFRlc3QsIFJl
YWxXb3JsZEV4YW1wbGVSYW5nZVN0ZXBVcFN0ZXBEb3duKQoreworICAgIEVYUEVDVF9FUShTdHJp
bmcoIjFlKzM4IiksIHN0ZXBVcCgiMCIsICIxRTM4IiwgIjEiLCAiMUUzOCIsIDkpKTsKKyAgICBF
WFBFQ1RfRVEoU3RyaW5nKCIxZSszOCIpLCBzdGVwRG93bigiMCIsICIxRTM4IiwgIjEiLCAiMUUz
OCIsIDkpKTsKK30KKworVEVTVF9GKERlY2ltYWxUZXN0LCBSZW1haW5kZXIpCit7CisgICAgRVhQ
RUNUX0VRKGVuY29kZSg5LCAtMSwgTWludXMpLCBlbmNvZGUoMjEsIC0xLCBQbHVzKS5yZW1haW5k
ZXIoMykpOworICAgIEVYUEVDVF9FUShEZWNpbWFsKDEpLCBEZWNpbWFsKDEwKS5yZW1haW5kZXIo
MykpOworICAgIEVYUEVDVF9FUShlbmNvZGUoMSwgMCwgTWludXMpLCBEZWNpbWFsKC0xMCkucmVt
YWluZGVyKDMpKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlKDIsIC0xLCBQbHVzKSwgZW5jb2RlKDEw
MiwgLTEsIFBsdXMpLnJlbWFpbmRlcigxKSk7CisgICAgRVhQRUNUX0VRKGVuY29kZSgxLCAtMSwg
UGx1cyksIERlY2ltYWwoMTApLnJlbWFpbmRlcihlbmNvZGUoMywgLTEsIFBsdXMpKSk7CisgICAg
RVhQRUNUX0VRKGVuY29kZSgzLCAtMSwgTWludXMpLCBlbmNvZGUoMzYsIC0xLCBQbHVzKS5yZW1h
aW5kZXIoZW5jb2RlKDEzLCAtMSwgUGx1cykpKTsKK30KKworVEVTVF9GKERlY2ltYWxUZXN0LCBS
ZW1haW5kZXJTcGVjaWFsVmFsdWVzKQoreworICAgIEVYUEVDVF9FUShEZWNpbWFsOjppbmZpbml0
eShQbHVzKSwgRGVjaW1hbDo6aW5maW5pdHkoUGx1cykucmVtYWluZGVyKDEpKTsKKyAgICBFWFBF
Q1RfRVEoRGVjaW1hbDo6bmFuKCksIERlY2ltYWw6Om5hbigpLnJlbWFpbmRlcigxKSk7Cit9CisK
K1RFU1RfRihEZWNpbWFsVGVzdCwgUm91bmQpCit7CisgICAgRVhQRUNUX0VRKERlY2ltYWwoMSks
IChEZWNpbWFsKDkpIC8gRGVjaW1hbCgxMCkpLnJvdW5kKCkpOworICAgIEVYUEVDVF9FUShEZWNp
bWFsKDI1KSwgKERlY2ltYWwoNSkgLyBmcm9tU3RyaW5nKCIwLjIwMCIpKS5yb3VuZCgpKTsKKyAg
ICBFWFBFQ1RfRVEoRGVjaW1hbCgzKSwgKERlY2ltYWwoNSkgLyBEZWNpbWFsKDIpKS5yb3VuZCgp
KTsKKyAgICBFWFBFQ1RfRVEoRGVjaW1hbCgxKSwgKERlY2ltYWwoMikgLyBEZWNpbWFsKDMpKS5y
b3VuZCgpKTsKKyAgICBFWFBFQ1RfRVEoRGVjaW1hbCgzKSwgKERlY2ltYWwoMTApIC8gRGVjaW1h
bCgzKSkucm91bmQoKSk7CisgICAgRVhQRUNUX0VRKERlY2ltYWwoMyksIChEZWNpbWFsKDEpIC8g
ZnJvbVN0cmluZygiMC4zIikpLnJvdW5kKCkpOworICAgIEVYUEVDVF9FUShEZWNpbWFsKDEwKSwg
KERlY2ltYWwoMSkgLyBmcm9tU3RyaW5nKCIwLjEiKSkucm91bmQoKSk7CisgICAgRVhQRUNUX0VR
KERlY2ltYWwoNSksIChEZWNpbWFsKDEpIC8gZnJvbVN0cmluZygiMC4yIikpLnJvdW5kKCkpOwor
ICAgIEVYUEVDVF9FUShEZWNpbWFsKDEwKSwgKGZyb21TdHJpbmcoIjEwLjIiKSAvIDEpLnJvdW5k
KCkpOworfQorCitURVNUX0YoRGVjaW1hbFRlc3QsIFJvdW5kU2VwY2lhbFZhbHVlcykKK3sKKyAg
ICBFWFBFQ1RfRVEoRGVjaW1hbDo6aW5maW5pdHkoUGx1cyksIERlY2ltYWw6OmluZmluaXR5KFBs
dXMpLnJvdW5kKCkpOworICAgIEVYUEVDVF9FUShEZWNpbWFsOjpuYW4oKSwgRGVjaW1hbDo6bmFu
KCkucm91bmQoKSk7Cit9CisKK1RFU1RfRihEZWNpbWFsVGVzdCwgVG9TdHJpbmdTcGVjaWFsKQor
eworICAgIEVYUEVDVF9FUShTdHJpbmcoIkluZmluaXR5IiksIERlY2ltYWw6OmluZmluaXR5KFBs
dXMpLnRvU3RyaW5nKCkpOworICAgIEVYUEVDVF9FUShTdHJpbmcoIi1JbmZpbml0eSIpLCBEZWNp
bWFsOjppbmZpbml0eShNaW51cykudG9TdHJpbmcoKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygi
TmFOIiksIERlY2ltYWw6Om5hbigpLnRvU3RyaW5nKCkpOworfQorCit9IC8vIERlY2ltYWxUZXN0
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggNTM5ZWI2YzhlN2Q2NTUwZDk4NjY0NTZiNTAyNjU5MjhkMDIxYjUxMi4uN2ZjMmM2
MWY0ZDY3ZDhhYzUyNTQyZGFmMzhjYWFmOWU5ZTgzNTY1OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBA
CisyMDEyLTA1LTIzICBZb3NoaWZ1bWkgSW5vdWUgIDx5b3NpbkBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgW0Zvcm1zXSBJbnRyb2R1Y2UgRGVjaW1hbCBhcml0aG1ldGljIHRvIGZpeCByb3VuZGlu
ZyBlcnJvcnMgaW4gbnVtYmVyL3JhbmdlIGlucHV0IHR5cGVzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDAwOQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9mb3Jtcy9yYW5nZS9yYW5nZS12YWx1
ZS1yb3VuZGluZy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvcmFu
Z2UvcmFuZ2UtdmFsdWUtcm91bmRpbmcuaHRtbDogQWRkZWQuCisKIDIwMTItMDUtMjMgIEhheWF0
byBJdG8gIDxoYXlhdG9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEFkZCBhIHRlc3QgY2FzZSBv
ZiBldmVudCBkaXNwYXRjaGluZyB3aGljaCB1c2VzIGluYWN0aXZlIGluc2VydGlvbiBwb2ludHMu
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3JhbmdlL3JhbmdlLXZhbHVlLXJv
dW5kaW5nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmFuZ2UvcmFuZ2Ut
dmFsdWUtcm91bmRpbmctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBlNjdlNDEyYWM3YzUyZGU1
MGI3ZmUyZmQ1YmUwZmQyYjM1ZmMwOTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL3JhbmdlL3JhbmdlLXZhbHVlLXJvdW5kaW5nLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDU1MCBAQAorCis4MDAwOSBJbnRyb2R1Y2UgRGVjaW1hbCBhcml0aG1ldGljIHRvIGZpeCBy
b3VuZGluZyBlcnJvcnMgaW4gbnVtYmVyL3JhbmdlIGlucHV0IHR5cGVzCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4xIiwgIjAuMSIsICIxZS0w
IikudmFsdWUgaXMgIjAuMSIKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjEiLCAiMC4xIiwgIjFlLTAi
KS52YWx1ZUFzTnVtYmVyIGlzIDAuMQorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMSIsICIwLjIiLCAi
MWUtMCIpLnZhbHVlIGlzICIwLjIiCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4xIiwgIjAuMiIsICIx
ZS0wIikudmFsdWVBc051bWJlciBpcyAwLjIKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjEiLCAiMC4z
IiwgIjFlLTAiKS52YWx1ZSBpcyAiMC4zIgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMSIsICIwLjMi
LCAiMWUtMCIpLnZhbHVlQXNOdW1iZXIgaXMgMC4zCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4xIiwg
IjAuNCIsICIxZS0wIikudmFsdWUgaXMgIjAuNCIKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjEiLCAi
MC40IiwgIjFlLTAiKS52YWx1ZUFzTnVtYmVyIGlzIDAuNAorUEFTUyBjcmVhdGVTYW1wbGUoIjAu
MSIsICIwLjUiLCAiMWUtMCIpLnZhbHVlIGlzICIwLjUiCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4x
IiwgIjAuNSIsICIxZS0wIikudmFsdWVBc051bWJlciBpcyAwLjUKK1BBU1MgY3JlYXRlU2FtcGxl
KCIwLjEiLCAiMC42IiwgIjFlLTAiKS52YWx1ZSBpcyAiMC42IgorUEFTUyBjcmVhdGVTYW1wbGUo
IjAuMSIsICIwLjYiLCAiMWUtMCIpLnZhbHVlQXNOdW1iZXIgaXMgMC42CitQQVNTIGNyZWF0ZVNh
bXBsZSgiMC4xIiwgIjAuNyIsICIxZS0wIikudmFsdWUgaXMgIjAuNyIKK1BBU1MgY3JlYXRlU2Ft
cGxlKCIwLjEiLCAiMC43IiwgIjFlLTAiKS52YWx1ZUFzTnVtYmVyIGlzIDAuNworUEFTUyBjcmVh
dGVTYW1wbGUoIjAuMSIsICIwLjgiLCAiMWUtMCIpLnZhbHVlIGlzICIwLjgiCitQQVNTIGNyZWF0
ZVNhbXBsZSgiMC4xIiwgIjAuOCIsICIxZS0wIikudmFsdWVBc051bWJlciBpcyAwLjgKK1BBU1Mg
Y3JlYXRlU2FtcGxlKCIwLjEiLCAiMC45IiwgIjFlLTAiKS52YWx1ZSBpcyAiMC45IgorUEFTUyBj
cmVhdGVTYW1wbGUoIjAuMSIsICIwLjkiLCAiMWUtMCIpLnZhbHVlQXNOdW1iZXIgaXMgMC45CitQ
QVNTIGNyZWF0ZVNhbXBsZSgiMC4wMSIsICIwLjAxIiwgIjFlLTEiKS52YWx1ZSBpcyAiMC4wMSIK
K1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAxIiwgIjAuMDEiLCAiMWUtMSIpLnZhbHVlQXNOdW1iZXIg
aXMgMC4wMQorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDEiLCAiMC4wMiIsICIxZS0xIikudmFsdWUg
aXMgIjAuMDIiCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMSIsICIwLjAyIiwgIjFlLTEiKS52YWx1
ZUFzTnVtYmVyIGlzIDAuMDIKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAxIiwgIjAuMDMiLCAiMWUt
MSIpLnZhbHVlIGlzICIwLjAzIgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDEiLCAiMC4wMyIsICIx
ZS0xIikudmFsdWVBc051bWJlciBpcyAwLjAzCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMSIsICIw
LjA0IiwgIjFlLTEiKS52YWx1ZSBpcyAiMC4wNCIKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAxIiwg
IjAuMDQiLCAiMWUtMSIpLnZhbHVlQXNOdW1iZXIgaXMgMC4wNAorUEFTUyBjcmVhdGVTYW1wbGUo
IjAuMDEiLCAiMC4wNSIsICIxZS0xIikudmFsdWUgaXMgIjAuMDUiCitQQVNTIGNyZWF0ZVNhbXBs
ZSgiMC4wMSIsICIwLjA1IiwgIjFlLTEiKS52YWx1ZUFzTnVtYmVyIGlzIDAuMDUKK1BBU1MgY3Jl
YXRlU2FtcGxlKCIwLjAxIiwgIjAuMDYiLCAiMWUtMSIpLnZhbHVlIGlzICIwLjA2IgorUEFTUyBj
cmVhdGVTYW1wbGUoIjAuMDEiLCAiMC4wNiIsICIxZS0xIikudmFsdWVBc051bWJlciBpcyAwLjA2
CitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMSIsICIwLjA3IiwgIjFlLTEiKS52YWx1ZSBpcyAiMC4w
NyIKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAxIiwgIjAuMDciLCAiMWUtMSIpLnZhbHVlQXNOdW1i
ZXIgaXMgMC4wNworUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDEiLCAiMC4wOCIsICIxZS0xIikudmFs
dWUgaXMgIjAuMDgiCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMSIsICIwLjA4IiwgIjFlLTEiKS52
YWx1ZUFzTnVtYmVyIGlzIDAuMDgKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAxIiwgIjAuMDkiLCAi
MWUtMSIpLnZhbHVlIGlzICIwLjA5IgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDEiLCAiMC4wOSIs
ICIxZS0xIikudmFsdWVBc051bWJlciBpcyAwLjA5CitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDEi
LCAiMC4wMDEiLCAiMWUtMiIpLnZhbHVlIGlzICIwLjAwMSIKK1BBU1MgY3JlYXRlU2FtcGxlKCIw
LjAwMSIsICIwLjAwMSIsICIxZS0yIikudmFsdWVBc051bWJlciBpcyAwLjAwMQorUEFTUyBjcmVh
dGVTYW1wbGUoIjAuMDAxIiwgIjAuMDAyIiwgIjFlLTIiKS52YWx1ZSBpcyAiMC4wMDIiCitQQVNT
IGNyZWF0ZVNhbXBsZSgiMC4wMDEiLCAiMC4wMDIiLCAiMWUtMiIpLnZhbHVlQXNOdW1iZXIgaXMg
MC4wMDIKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMSIsICIwLjAwMyIsICIxZS0yIikudmFsdWUg
aXMgIjAuMDAzIgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAxIiwgIjAuMDAzIiwgIjFlLTIiKS52
YWx1ZUFzTnVtYmVyIGlzIDAuMDAzCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDEiLCAiMC4wMDQi
LCAiMWUtMiIpLnZhbHVlIGlzICIwLjAwNCIKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMSIsICIw
LjAwNCIsICIxZS0yIikudmFsdWVBc051bWJlciBpcyAwLjAwNAorUEFTUyBjcmVhdGVTYW1wbGUo
IjAuMDAxIiwgIjAuMDA1IiwgIjFlLTIiKS52YWx1ZSBpcyAiMC4wMDUiCitQQVNTIGNyZWF0ZVNh
bXBsZSgiMC4wMDEiLCAiMC4wMDUiLCAiMWUtMiIpLnZhbHVlQXNOdW1iZXIgaXMgMC4wMDUKK1BB
U1MgY3JlYXRlU2FtcGxlKCIwLjAwMSIsICIwLjAwNiIsICIxZS0yIikudmFsdWUgaXMgIjAuMDA2
IgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAxIiwgIjAuMDA2IiwgIjFlLTIiKS52YWx1ZUFzTnVt
YmVyIGlzIDAuMDA2CitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDEiLCAiMC4wMDciLCAiMWUtMiIp
LnZhbHVlIGlzICIwLjAwNyIKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMSIsICIwLjAwNyIsICIx
ZS0yIikudmFsdWVBc051bWJlciBpcyAwLjAwNworUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAxIiwg
IjAuMDA4IiwgIjFlLTIiKS52YWx1ZSBpcyAiMC4wMDgiCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4w
MDEiLCAiMC4wMDgiLCAiMWUtMiIpLnZhbHVlQXNOdW1iZXIgaXMgMC4wMDgKK1BBU1MgY3JlYXRl
U2FtcGxlKCIwLjAwMSIsICIwLjAwOSIsICIxZS0yIikudmFsdWUgaXMgIjAuMDA5IgorUEFTUyBj
cmVhdGVTYW1wbGUoIjAuMDAxIiwgIjAuMDA5IiwgIjFlLTIiKS52YWx1ZUFzTnVtYmVyIGlzIDAu
MDA5CitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAxIiwgIjAuMDAwMSIsICIxZS0zIikudmFsdWUg
aXMgIjAuMDAwMSIKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDEiLCAiMC4wMDAxIiwgIjFlLTMi
KS52YWx1ZUFzTnVtYmVyIGlzIDAuMDAwMQorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMSIsICIw
LjAwMDIiLCAiMWUtMyIpLnZhbHVlIGlzICIwLjAwMDIiCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4w
MDAxIiwgIjAuMDAwMiIsICIxZS0zIikudmFsdWVBc051bWJlciBpcyAwLjAwMDIKK1BBU1MgY3Jl
YXRlU2FtcGxlKCIwLjAwMDEiLCAiMC4wMDAzIiwgIjFlLTMiKS52YWx1ZSBpcyAiMC4wMDAzIgor
UEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMSIsICIwLjAwMDMiLCAiMWUtMyIpLnZhbHVlQXNOdW1i
ZXIgaXMgMC4wMDAzCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAxIiwgIjAuMDAwNCIsICIxZS0z
IikudmFsdWUgaXMgIjAuMDAwNCIKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDEiLCAiMC4wMDA0
IiwgIjFlLTMiKS52YWx1ZUFzTnVtYmVyIGlzIDAuMDAwNAorUEFTUyBjcmVhdGVTYW1wbGUoIjAu
MDAwMSIsICIwLjAwMDUiLCAiMWUtMyIpLnZhbHVlIGlzICIwLjAwMDUiCitQQVNTIGNyZWF0ZVNh
bXBsZSgiMC4wMDAxIiwgIjAuMDAwNSIsICIxZS0zIikudmFsdWVBc051bWJlciBpcyAwLjAwMDUK
K1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDEiLCAiMC4wMDA2IiwgIjFlLTMiKS52YWx1ZSBpcyAi
MC4wMDA2IgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMSIsICIwLjAwMDYiLCAiMWUtMyIpLnZh
bHVlQXNOdW1iZXIgaXMgMC4wMDA2CitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAxIiwgIjAuMDAw
NyIsICIxZS0zIikudmFsdWUgaXMgIjAuMDAwNyIKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDEi
LCAiMC4wMDA3IiwgIjFlLTMiKS52YWx1ZUFzTnVtYmVyIGlzIDAuMDAwNworUEFTUyBjcmVhdGVT
YW1wbGUoIjAuMDAwMSIsICIwLjAwMDgiLCAiMWUtMyIpLnZhbHVlIGlzICIwLjAwMDgiCitQQVNT
IGNyZWF0ZVNhbXBsZSgiMC4wMDAxIiwgIjAuMDAwOCIsICIxZS0zIikudmFsdWVBc051bWJlciBp
cyAwLjAwMDgKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDEiLCAiMC4wMDA5IiwgIjFlLTMiKS52
YWx1ZSBpcyAiMC4wMDA5IgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMSIsICIwLjAwMDkiLCAi
MWUtMyIpLnZhbHVlQXNOdW1iZXIgaXMgMC4wMDA5CitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAw
MSIsICIwLjAwMDAxIiwgIjFlLTQiKS52YWx1ZSBpcyAiMC4wMDAwMSIKK1BBU1MgY3JlYXRlU2Ft
cGxlKCIwLjAwMDAxIiwgIjAuMDAwMDEiLCAiMWUtNCIpLnZhbHVlQXNOdW1iZXIgaXMgMC4wMDAw
MQorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDEiLCAiMC4wMDAwMiIsICIxZS00IikudmFsdWUg
aXMgIjAuMDAwMDIiCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMSIsICIwLjAwMDAyIiwgIjFl
LTQiKS52YWx1ZUFzTnVtYmVyIGlzIDAuMDAwMDIKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAx
IiwgIjAuMDAwMDMiLCAiMWUtNCIpLnZhbHVlIGlzICIwLjAwMDAzIgorUEFTUyBjcmVhdGVTYW1w
bGUoIjAuMDAwMDEiLCAiMC4wMDAwMyIsICIxZS00IikudmFsdWVBc051bWJlciBpcyAwLjAwMDAz
CitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMSIsICIwLjAwMDA0IiwgIjFlLTQiKS52YWx1ZSBp
cyAiMC4wMDAwNCIKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAxIiwgIjAuMDAwMDQiLCAiMWUt
NCIpLnZhbHVlQXNOdW1iZXIgaXMgMC4wMDAwNAorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDEi
LCAiMC4wMDAwNSIsICIxZS00IikudmFsdWUgaXMgIjAuMDAwMDUiCitQQVNTIGNyZWF0ZVNhbXBs
ZSgiMC4wMDAwMSIsICIwLjAwMDA1IiwgIjFlLTQiKS52YWx1ZUFzTnVtYmVyIGlzIDAuMDAwMDUK
K1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAxIiwgIjAuMDAwMDYiLCAiMWUtNCIpLnZhbHVlIGlz
ICIwLjAwMDA2IgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDEiLCAiMC4wMDAwNiIsICIxZS00
IikudmFsdWVBc051bWJlciBpcyAwLjAwMDA2CitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMSIs
ICIwLjAwMDA3IiwgIjFlLTQiKS52YWx1ZSBpcyAiMC4wMDAwNyIKK1BBU1MgY3JlYXRlU2FtcGxl
KCIwLjAwMDAxIiwgIjAuMDAwMDciLCAiMWUtNCIpLnZhbHVlQXNOdW1iZXIgaXMgMC4wMDAwNwor
UEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDEiLCAiMC4wMDAwOCIsICIxZS00IikudmFsdWUgaXMg
IjAuMDAwMDgiCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMSIsICIwLjAwMDA4IiwgIjFlLTQi
KS52YWx1ZUFzTnVtYmVyIGlzIDAuMDAwMDgKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAxIiwg
IjAuMDAwMDkiLCAiMWUtNCIpLnZhbHVlIGlzICIwLjAwMDA5IgorUEFTUyBjcmVhdGVTYW1wbGUo
IjAuMDAwMDEiLCAiMC4wMDAwOSIsICIxZS00IikudmFsdWVBc051bWJlciBpcyAwLjAwMDA5CitQ
QVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDEiLCAiMC4wMDAwMDEiLCAiMWUtNSIpLnZhbHVlIGlz
ICIwLjAwMDAwMSIKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMSIsICIwLjAwMDAwMSIsICIx
ZS01IikudmFsdWVBc051bWJlciBpcyAwLjAwMDAwMQorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAw
MDAxIiwgIjAuMDAwMDAyIiwgIjFlLTUiKS52YWx1ZSBpcyAiMC4wMDAwMDIiCitQQVNTIGNyZWF0
ZVNhbXBsZSgiMC4wMDAwMDEiLCAiMC4wMDAwMDIiLCAiMWUtNSIpLnZhbHVlQXNOdW1iZXIgaXMg
MC4wMDAwMDIKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMSIsICIwLjAwMDAwMyIsICIxZS01
IikudmFsdWUgaXMgIjAuMDAwMDAzIgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAxIiwgIjAu
MDAwMDAzIiwgIjFlLTUiKS52YWx1ZUFzTnVtYmVyIGlzIDAuMDAwMDAzCitQQVNTIGNyZWF0ZVNh
bXBsZSgiMC4wMDAwMDEiLCAiMC4wMDAwMDQiLCAiMWUtNSIpLnZhbHVlIGlzICIwLjAwMDAwNCIK
K1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMSIsICIwLjAwMDAwNCIsICIxZS01IikudmFsdWVB
c051bWJlciBpcyAwLjAwMDAwNAorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAxIiwgIjAuMDAw
MDA1IiwgIjFlLTUiKS52YWx1ZSBpcyAiMC4wMDAwMDUiCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4w
MDAwMDEiLCAiMC4wMDAwMDUiLCAiMWUtNSIpLnZhbHVlQXNOdW1iZXIgaXMgMC4wMDAwMDUKK1BB
U1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMSIsICIwLjAwMDAwNiIsICIxZS01IikudmFsdWUgaXMg
IjAuMDAwMDA2IgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAxIiwgIjAuMDAwMDA2IiwgIjFl
LTUiKS52YWx1ZUFzTnVtYmVyIGlzIDAuMDAwMDA2CitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAw
MDEiLCAiMC4wMDAwMDciLCAiMWUtNSIpLnZhbHVlIGlzICIwLjAwMDAwNyIKK1BBU1MgY3JlYXRl
U2FtcGxlKCIwLjAwMDAwMSIsICIwLjAwMDAwNyIsICIxZS01IikudmFsdWVBc051bWJlciBpcyAw
LjAwMDAwNworUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAxIiwgIjAuMDAwMDA4IiwgIjFlLTUi
KS52YWx1ZSBpcyAiMC4wMDAwMDgiCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDEiLCAiMC4w
MDAwMDgiLCAiMWUtNSIpLnZhbHVlQXNOdW1iZXIgaXMgMC4wMDAwMDgKK1BBU1MgY3JlYXRlU2Ft
cGxlKCIwLjAwMDAwMSIsICIwLjAwMDAwOSIsICIxZS01IikudmFsdWUgaXMgIjAuMDAwMDA5Igor
UEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAxIiwgIjAuMDAwMDA5IiwgIjFlLTUiKS52YWx1ZUFz
TnVtYmVyIGlzIDAuMDAwMDA5CitGQUlMIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAxIiwgIjAuMDAw
MDAwMSIsICIxZS02IikudmFsdWUgc2hvdWxkIGJlIDAuMDAwMDAwMS4gV2FzIDFlLTcuCitQQVNT
IGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAxIiwgIjAuMDAwMDAwMSIsICIxZS02IikudmFsdWVBc051
bWJlciBpcyAwLjAwMDAwMDEKK0ZBSUwgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDEiLCAiMC4wMDAw
MDAyIiwgIjFlLTYiKS52YWx1ZSBzaG91bGQgYmUgMC4wMDAwMDAyLiBXYXMgMmUtNy4KK1BBU1Mg
Y3JlYXRlU2FtcGxlKCIwLjAwMDAwMDEiLCAiMC4wMDAwMDAyIiwgIjFlLTYiKS52YWx1ZUFzTnVt
YmVyIGlzIDAuMDAwMDAwMgorRkFJTCBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMSIsICIwLjAwMDAw
MDMiLCAiMWUtNiIpLnZhbHVlIHNob3VsZCBiZSAwLjAwMDAwMDMuIFdhcyAzZS03LgorUEFTUyBj
cmVhdGVTYW1wbGUoIjAuMDAwMDAwMSIsICIwLjAwMDAwMDMiLCAiMWUtNiIpLnZhbHVlQXNOdW1i
ZXIgaXMgMC4wMDAwMDAzCitGQUlMIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAxIiwgIjAuMDAwMDAw
NCIsICIxZS02IikudmFsdWUgc2hvdWxkIGJlIDAuMDAwMDAwNC4gV2FzIDRlLTcuCitQQVNTIGNy
ZWF0ZVNhbXBsZSgiMC4wMDAwMDAxIiwgIjAuMDAwMDAwNCIsICIxZS02IikudmFsdWVBc051bWJl
ciBpcyAwLjAwMDAwMDQKK0ZBSUwgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDEiLCAiMC4wMDAwMDA1
IiwgIjFlLTYiKS52YWx1ZSBzaG91bGQgYmUgMC4wMDAwMDA1LiBXYXMgNWUtNy4KK1BBU1MgY3Jl
YXRlU2FtcGxlKCIwLjAwMDAwMDEiLCAiMC4wMDAwMDA1IiwgIjFlLTYiKS52YWx1ZUFzTnVtYmVy
IGlzIDAuMDAwMDAwNQorRkFJTCBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMSIsICIwLjAwMDAwMDYi
LCAiMWUtNiIpLnZhbHVlIHNob3VsZCBiZSAwLjAwMDAwMDYuIFdhcyA2ZS03LgorUEFTUyBjcmVh
dGVTYW1wbGUoIjAuMDAwMDAwMSIsICIwLjAwMDAwMDYiLCAiMWUtNiIpLnZhbHVlQXNOdW1iZXIg
aXMgMC4wMDAwMDA2CitGQUlMIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAxIiwgIjAuMDAwMDAwNyIs
ICIxZS02IikudmFsdWUgc2hvdWxkIGJlIDAuMDAwMDAwNy4gV2FzIDdlLTcuCitQQVNTIGNyZWF0
ZVNhbXBsZSgiMC4wMDAwMDAxIiwgIjAuMDAwMDAwNyIsICIxZS02IikudmFsdWVBc051bWJlciBp
cyAwLjAwMDAwMDcKK0ZBSUwgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDEiLCAiMC4wMDAwMDA4Iiwg
IjFlLTYiKS52YWx1ZSBzaG91bGQgYmUgMC4wMDAwMDA4LiBXYXMgOGUtNy4KK1BBU1MgY3JlYXRl
U2FtcGxlKCIwLjAwMDAwMDEiLCAiMC4wMDAwMDA4IiwgIjFlLTYiKS52YWx1ZUFzTnVtYmVyIGlz
IDAuMDAwMDAwOAorRkFJTCBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMSIsICIwLjAwMDAwMDkiLCAi
MWUtNiIpLnZhbHVlIHNob3VsZCBiZSAwLjAwMDAwMDkuIFdhcyA5ZS03LgorUEFTUyBjcmVhdGVT
YW1wbGUoIjAuMDAwMDAwMSIsICIwLjAwMDAwMDkiLCAiMWUtNiIpLnZhbHVlQXNOdW1iZXIgaXMg
MC4wMDAwMDA5CitGQUlMIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAwMSIsICIwLjAwMDAwMDAxIiwg
IjFlLTciKS52YWx1ZSBzaG91bGQgYmUgMC4wMDAwMDAwMS4gV2FzIDFlLTguCitQQVNTIGNyZWF0
ZVNhbXBsZSgiMC4wMDAwMDAwMSIsICIwLjAwMDAwMDAxIiwgIjFlLTciKS52YWx1ZUFzTnVtYmVy
IGlzIDAuMDAwMDAwMDEKK0ZBSUwgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAxIiwgIjAuMDAwMDAw
MDIiLCAiMWUtNyIpLnZhbHVlIHNob3VsZCBiZSAwLjAwMDAwMDAyLiBXYXMgMmUtOC4KK1BBU1Mg
Y3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAxIiwgIjAuMDAwMDAwMDIiLCAiMWUtNyIpLnZhbHVlQXNO
dW1iZXIgaXMgMC4wMDAwMDAwMgorRkFJTCBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDEiLCAiMC4w
MDAwMDAwMyIsICIxZS03IikudmFsdWUgc2hvdWxkIGJlIDAuMDAwMDAwMDMuIFdhcyAzZS04Lgor
UEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDEiLCAiMC4wMDAwMDAwMyIsICIxZS03IikudmFs
dWVBc051bWJlciBpcyAwLjAwMDAwMDAzCitGQUlMIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAwMSIs
ICIwLjAwMDAwMDA0IiwgIjFlLTciKS52YWx1ZSBzaG91bGQgYmUgMC4wMDAwMDAwNC4gV2FzIDRl
LTguCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAwMSIsICIwLjAwMDAwMDA0IiwgIjFlLTci
KS52YWx1ZUFzTnVtYmVyIGlzIDAuMDAwMDAwMDQKK0ZBSUwgY3JlYXRlU2FtcGxlKCIwLjAwMDAw
MDAxIiwgIjAuMDAwMDAwMDUiLCAiMWUtNyIpLnZhbHVlIHNob3VsZCBiZSAwLjAwMDAwMDA1LiBX
YXMgNWUtOC4KK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAxIiwgIjAuMDAwMDAwMDUiLCAi
MWUtNyIpLnZhbHVlQXNOdW1iZXIgaXMgMC4wMDAwMDAwNQorRkFJTCBjcmVhdGVTYW1wbGUoIjAu
MDAwMDAwMDEiLCAiMC4wMDAwMDAwNiIsICIxZS03IikudmFsdWUgc2hvdWxkIGJlIDAuMDAwMDAw
MDYuIFdhcyA2ZS04LgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDEiLCAiMC4wMDAwMDAw
NiIsICIxZS03IikudmFsdWVBc051bWJlciBpcyAwLjAwMDAwMDA2CitGQUlMIGNyZWF0ZVNhbXBs
ZSgiMC4wMDAwMDAwMSIsICIwLjAwMDAwMDA3IiwgIjFlLTciKS52YWx1ZSBzaG91bGQgYmUgMC4w
MDAwMDAwNy4gV2FzIDdlLTguCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAwMSIsICIwLjAw
MDAwMDA3IiwgIjFlLTciKS52YWx1ZUFzTnVtYmVyIGlzIDAuMDAwMDAwMDcKK0ZBSUwgY3JlYXRl
U2FtcGxlKCIwLjAwMDAwMDAxIiwgIjAuMDAwMDAwMDgiLCAiMWUtNyIpLnZhbHVlIHNob3VsZCBi
ZSAwLjAwMDAwMDA4LiBXYXMgOGUtOC4KK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAxIiwg
IjAuMDAwMDAwMDgiLCAiMWUtNyIpLnZhbHVlQXNOdW1iZXIgaXMgMC4wMDAwMDAwOAorRkFJTCBj
cmVhdGVTYW1wbGUoIjAuMDAwMDAwMDEiLCAiMC4wMDAwMDAwOSIsICIxZS03IikudmFsdWUgc2hv
dWxkIGJlIDAuMDAwMDAwMDkuIFdhcyA5ZS04LgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAw
MDEiLCAiMC4wMDAwMDAwOSIsICIxZS03IikudmFsdWVBc051bWJlciBpcyAwLjAwMDAwMDA5CitG
QUlMIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAwMDEiLCAiMC4wMDAwMDAwMDEiLCAiMWUtOCIpLnZh
bHVlIHNob3VsZCBiZSAwLjAwMDAwMDAwMS4gV2FzIDFlLTkuCitQQVNTIGNyZWF0ZVNhbXBsZSgi
MC4wMDAwMDAwMDEiLCAiMC4wMDAwMDAwMDEiLCAiMWUtOCIpLnZhbHVlQXNOdW1iZXIgaXMgMC4w
MDAwMDAwMDEKK0ZBSUwgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMSIsICIwLjAwMDAwMDAwMiIs
ICIxZS04IikudmFsdWUgc2hvdWxkIGJlIDAuMDAwMDAwMDAyLiBXYXMgMmUtOS4KK1BBU1MgY3Jl
YXRlU2FtcGxlKCIwLjAwMDAwMDAwMSIsICIwLjAwMDAwMDAwMiIsICIxZS04IikudmFsdWVBc051
bWJlciBpcyAwLjAwMDAwMDAwMgorRkFJTCBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAxIiwgIjAu
MDAwMDAwMDAzIiwgIjFlLTgiKS52YWx1ZSBzaG91bGQgYmUgMC4wMDAwMDAwMDMuIFdhcyAzZS05
LgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAzIiwgIjFlLTgi
KS52YWx1ZUFzTnVtYmVyIGlzIDAuMDAwMDAwMDAzCitGQUlMIGNyZWF0ZVNhbXBsZSgiMC4wMDAw
MDAwMDEiLCAiMC4wMDAwMDAwMDQiLCAiMWUtOCIpLnZhbHVlIHNob3VsZCBiZSAwLjAwMDAwMDAw
NC4gV2FzIDRlLTkuCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAwMDEiLCAiMC4wMDAwMDAw
MDQiLCAiMWUtOCIpLnZhbHVlQXNOdW1iZXIgaXMgMC4wMDAwMDAwMDQKK0ZBSUwgY3JlYXRlU2Ft
cGxlKCIwLjAwMDAwMDAwMSIsICIwLjAwMDAwMDAwNSIsICIxZS04IikudmFsdWUgc2hvdWxkIGJl
IDAuMDAwMDAwMDA1LiBXYXMgNWUtOS4KK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMSIs
ICIwLjAwMDAwMDAwNSIsICIxZS04IikudmFsdWVBc051bWJlciBpcyAwLjAwMDAwMDAwNQorRkFJ
TCBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDA2IiwgIjFlLTgiKS52YWx1
ZSBzaG91bGQgYmUgMC4wMDAwMDAwMDYuIFdhcyA2ZS05LgorUEFTUyBjcmVhdGVTYW1wbGUoIjAu
MDAwMDAwMDAxIiwgIjAuMDAwMDAwMDA2IiwgIjFlLTgiKS52YWx1ZUFzTnVtYmVyIGlzIDAuMDAw
MDAwMDA2CitGQUlMIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAwMDEiLCAiMC4wMDAwMDAwMDciLCAi
MWUtOCIpLnZhbHVlIHNob3VsZCBiZSAwLjAwMDAwMDAwNy4gV2FzIDdlLTkuCitQQVNTIGNyZWF0
ZVNhbXBsZSgiMC4wMDAwMDAwMDEiLCAiMC4wMDAwMDAwMDciLCAiMWUtOCIpLnZhbHVlQXNOdW1i
ZXIgaXMgMC4wMDAwMDAwMDcKK0ZBSUwgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMSIsICIwLjAw
MDAwMDAwOCIsICIxZS04IikudmFsdWUgc2hvdWxkIGJlIDAuMDAwMDAwMDA4LiBXYXMgOGUtOS4K
K1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMSIsICIwLjAwMDAwMDAwOCIsICIxZS04Iiku
dmFsdWVBc051bWJlciBpcyAwLjAwMDAwMDAwOAorRkFJTCBjcmVhdGVTYW1wbGUoIjAuMDAwMDAw
MDAxIiwgIjAuMDAwMDAwMDA5IiwgIjFlLTgiKS52YWx1ZSBzaG91bGQgYmUgMC4wMDAwMDAwMDku
IFdhcyA5ZS05LgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDA5
IiwgIjFlLTgiKS52YWx1ZUFzTnVtYmVyIGlzIDAuMDAwMDAwMDA5CitGQUlMIGNyZWF0ZVNhbXBs
ZSgiMC4wMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAwMSIsICIxZS05IikudmFsdWUgc2hvdWxkIGJl
IDAuMDAwMDAwMDAwMS4gV2FzIDFlLTEwLgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAw
MSIsICIwLjAwMDAwMDAwMDEiLCAiMWUtOSIpLnZhbHVlQXNOdW1iZXIgaXMgMC4wMDAwMDAwMDAx
CitGQUlMIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAwMiIsICIxZS05
IikudmFsdWUgc2hvdWxkIGJlIDAuMDAwMDAwMDAwMi4gV2FzIDJlLTEwLgorUEFTUyBjcmVhdGVT
YW1wbGUoIjAuMDAwMDAwMDAwMSIsICIwLjAwMDAwMDAwMDIiLCAiMWUtOSIpLnZhbHVlQXNOdW1i
ZXIgaXMgMC4wMDAwMDAwMDAyCitGQUlMIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAwMDAxIiwgIjAu
MDAwMDAwMDAwMyIsICIxZS05IikudmFsdWUgc2hvdWxkIGJlIDAuMDAwMDAwMDAwMy4gV2FzIDNl
LTEwLgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAwMSIsICIwLjAwMDAwMDAwMDMiLCAi
MWUtOSIpLnZhbHVlQXNOdW1iZXIgaXMgMC4wMDAwMDAwMDAzCitGQUlMIGNyZWF0ZVNhbXBsZSgi
MC4wMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAwNCIsICIxZS05IikudmFsdWUgc2hvdWxkIGJlIDAu
MDAwMDAwMDAwNC4gV2FzIDRlLTEwLgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAwMSIs
ICIwLjAwMDAwMDAwMDQiLCAiMWUtOSIpLnZhbHVlQXNOdW1iZXIgaXMgMC4wMDAwMDAwMDA0CitG
QUlMIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAwNSIsICIxZS05Iiku
dmFsdWUgc2hvdWxkIGJlIDAuMDAwMDAwMDAwNS4gV2FzIDVlLTEwLgorUEFTUyBjcmVhdGVTYW1w
bGUoIjAuMDAwMDAwMDAwMSIsICIwLjAwMDAwMDAwMDUiLCAiMWUtOSIpLnZhbHVlQXNOdW1iZXIg
aXMgMC4wMDAwMDAwMDA1CitGQUlMIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAwMDAxIiwgIjAuMDAw
MDAwMDAwNiIsICIxZS05IikudmFsdWUgc2hvdWxkIGJlIDAuMDAwMDAwMDAwNi4gV2FzIDZlLTEw
LgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAwMSIsICIwLjAwMDAwMDAwMDYiLCAiMWUt
OSIpLnZhbHVlQXNOdW1iZXIgaXMgMC4wMDAwMDAwMDA2CitGQUlMIGNyZWF0ZVNhbXBsZSgiMC4w
MDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAwNyIsICIxZS05IikudmFsdWUgc2hvdWxkIGJlIDAuMDAw
MDAwMDAwNy4gV2FzIDdlLTEwLgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAwMSIsICIw
LjAwMDAwMDAwMDciLCAiMWUtOSIpLnZhbHVlQXNOdW1iZXIgaXMgMC4wMDAwMDAwMDA3CitGQUlM
IGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAwOCIsICIxZS05IikudmFs
dWUgc2hvdWxkIGJlIDAuMDAwMDAwMDAwOC4gV2FzIDhlLTEwLgorUEFTUyBjcmVhdGVTYW1wbGUo
IjAuMDAwMDAwMDAwMSIsICIwLjAwMDAwMDAwMDgiLCAiMWUtOSIpLnZhbHVlQXNOdW1iZXIgaXMg
MC4wMDAwMDAwMDA4CitGQUlMIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAwMDAxIiwgIjAuMDAwMDAw
MDAwOSIsICIxZS05IikudmFsdWUgc2hvdWxkIGJlIDAuMDAwMDAwMDAwOS4gV2FzIDllLTEwLgor
UEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAwMSIsICIwLjAwMDAwMDAwMDkiLCAiMWUtOSIp
LnZhbHVlQXNOdW1iZXIgaXMgMC4wMDAwMDAwMDA5CitGQUlMIGNyZWF0ZVNhbXBsZSgiMC4wMDAw
MDAwMDAwMSIsICIwLjAwMDAwMDAwMDAxIiwgIjFlLTEwIikudmFsdWUgc2hvdWxkIGJlIDAuMDAw
MDAwMDAwMDEuIFdhcyAxZS0xMS4KK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMDAxIiwg
IjAuMDAwMDAwMDAwMDEiLCAiMWUtMTAiKS52YWx1ZUFzTnVtYmVyIGlzIDAuMDAwMDAwMDAwMDEK
K0ZBSUwgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAwMDIiLCAiMWUt
MTAiKS52YWx1ZSBzaG91bGQgYmUgMC4wMDAwMDAwMDAwMi4gV2FzIDJlLTExLgorUEFTUyBjcmVh
dGVTYW1wbGUoIjAuMDAwMDAwMDAwMDEiLCAiMC4wMDAwMDAwMDAwMiIsICIxZS0xMCIpLnZhbHVl
QXNOdW1iZXIgaXMgMC4wMDAwMDAwMDAwMgorRkFJTCBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAw
MDEiLCAiMC4wMDAwMDAwMDAwMyIsICIxZS0xMCIpLnZhbHVlIHNob3VsZCBiZSAwLjAwMDAwMDAw
MDAzLiBXYXMgM2UtMTEuCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAwMDAwMSIsICIwLjAw
MDAwMDAwMDAzIiwgIjFlLTEwIikudmFsdWVBc051bWJlciBpcyAwLjAwMDAwMDAwMDAzCitGQUlM
IGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAwMDAwMSIsICIwLjAwMDAwMDAwMDA0IiwgIjFlLTEwIiku
dmFsdWUgc2hvdWxkIGJlIDAuMDAwMDAwMDAwMDQuIFdhcyA0ZS0xMS4KK1BBU1MgY3JlYXRlU2Ft
cGxlKCIwLjAwMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAwMDQiLCAiMWUtMTAiKS52YWx1ZUFzTnVt
YmVyIGlzIDAuMDAwMDAwMDAwMDQKK0ZBSUwgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMDAxIiwg
IjAuMDAwMDAwMDAwMDUiLCAiMWUtMTAiKS52YWx1ZSBzaG91bGQgYmUgMC4wMDAwMDAwMDAwNS4g
V2FzIDVlLTExLgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAwMDEiLCAiMC4wMDAwMDAw
MDAwNSIsICIxZS0xMCIpLnZhbHVlQXNOdW1iZXIgaXMgMC4wMDAwMDAwMDAwNQorRkFJTCBjcmVh
dGVTYW1wbGUoIjAuMDAwMDAwMDAwMDEiLCAiMC4wMDAwMDAwMDAwNiIsICIxZS0xMCIpLnZhbHVl
IHNob3VsZCBiZSAwLjAwMDAwMDAwMDA2LiBXYXMgNmUtMTEuCitQQVNTIGNyZWF0ZVNhbXBsZSgi
MC4wMDAwMDAwMDAwMSIsICIwLjAwMDAwMDAwMDA2IiwgIjFlLTEwIikudmFsdWVBc051bWJlciBp
cyAwLjAwMDAwMDAwMDA2CitGQUlMIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAwMDAwMSIsICIwLjAw
MDAwMDAwMDA3IiwgIjFlLTEwIikudmFsdWUgc2hvdWxkIGJlIDAuMDAwMDAwMDAwMDcuIFdhcyA3
ZS0xMS4KK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAwMDci
LCAiMWUtMTAiKS52YWx1ZUFzTnVtYmVyIGlzIDAuMDAwMDAwMDAwMDcKK0ZBSUwgY3JlYXRlU2Ft
cGxlKCIwLjAwMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAwMDgiLCAiMWUtMTAiKS52YWx1ZSBzaG91
bGQgYmUgMC4wMDAwMDAwMDAwOC4gV2FzIDhlLTExLgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAw
MDAwMDAwMDEiLCAiMC4wMDAwMDAwMDAwOCIsICIxZS0xMCIpLnZhbHVlQXNOdW1iZXIgaXMgMC4w
MDAwMDAwMDAwOAorRkFJTCBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAwMDEiLCAiMC4wMDAwMDAw
MDAwOSIsICIxZS0xMCIpLnZhbHVlIHNob3VsZCBiZSAwLjAwMDAwMDAwMDA5LiBXYXMgOWUtMTEu
CitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAwMDAwMSIsICIwLjAwMDAwMDAwMDA5IiwgIjFl
LTEwIikudmFsdWVBc051bWJlciBpcyAwLjAwMDAwMDAwMDA5CitGQUlMIGNyZWF0ZVNhbXBsZSgi
MC4wMDAwMDAwMDAwMDEiLCAiMC4wMDAwMDAwMDAwMDEiLCAiMWUtMTEiKS52YWx1ZSBzaG91bGQg
YmUgMC4wMDAwMDAwMDAwMDEuIFdhcyAxZS0xMi4KK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAw
MDAwMDAwMSIsICIwLjAwMDAwMDAwMDAwMSIsICIxZS0xMSIpLnZhbHVlQXNOdW1iZXIgaXMgMC4w
MDAwMDAwMDAwMDEKK0ZBSUwgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMDAwMSIsICIwLjAwMDAw
MDAwMDAwMiIsICIxZS0xMSIpLnZhbHVlIHNob3VsZCBiZSAwLjAwMDAwMDAwMDAwMi4gV2FzIDJl
LTEyLgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAwMDAy
IiwgIjFlLTExIikudmFsdWVBc051bWJlciBpcyAwLjAwMDAwMDAwMDAwMgorRkFJTCBjcmVhdGVT
YW1wbGUoIjAuMDAwMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAwMDAzIiwgIjFlLTExIikudmFsdWUg
c2hvdWxkIGJlIDAuMDAwMDAwMDAwMDAzLiBXYXMgM2UtMTIuCitQQVNTIGNyZWF0ZVNhbXBsZSgi
MC4wMDAwMDAwMDAwMDEiLCAiMC4wMDAwMDAwMDAwMDMiLCAiMWUtMTEiKS52YWx1ZUFzTnVtYmVy
IGlzIDAuMDAwMDAwMDAwMDAzCitGQUlMIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAwMDAwMDEiLCAi
MC4wMDAwMDAwMDAwMDQiLCAiMWUtMTEiKS52YWx1ZSBzaG91bGQgYmUgMC4wMDAwMDAwMDAwMDQu
IFdhcyA0ZS0xMi4KK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMDAwMSIsICIwLjAwMDAw
MDAwMDAwNCIsICIxZS0xMSIpLnZhbHVlQXNOdW1iZXIgaXMgMC4wMDAwMDAwMDAwMDQKK0ZBSUwg
Y3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMDAwMSIsICIwLjAwMDAwMDAwMDAwNSIsICIxZS0xMSIp
LnZhbHVlIHNob3VsZCBiZSAwLjAwMDAwMDAwMDAwNS4gV2FzIDVlLTEyLgorUEFTUyBjcmVhdGVT
YW1wbGUoIjAuMDAwMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAwMDA1IiwgIjFlLTExIikudmFsdWVB
c051bWJlciBpcyAwLjAwMDAwMDAwMDAwNQorRkFJTCBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAw
MDAxIiwgIjAuMDAwMDAwMDAwMDA2IiwgIjFlLTExIikudmFsdWUgc2hvdWxkIGJlIDAuMDAwMDAw
MDAwMDA2LiBXYXMgNmUtMTIuCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAwMDAwMDEiLCAi
MC4wMDAwMDAwMDAwMDYiLCAiMWUtMTEiKS52YWx1ZUFzTnVtYmVyIGlzIDAuMDAwMDAwMDAwMDA2
CitGQUlMIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAwMDAwMDEiLCAiMC4wMDAwMDAwMDAwMDciLCAi
MWUtMTEiKS52YWx1ZSBzaG91bGQgYmUgMC4wMDAwMDAwMDAwMDcuIFdhcyA3ZS0xMi4KK1BBU1Mg
Y3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMDAwMSIsICIwLjAwMDAwMDAwMDAwNyIsICIxZS0xMSIp
LnZhbHVlQXNOdW1iZXIgaXMgMC4wMDAwMDAwMDAwMDcKK0ZBSUwgY3JlYXRlU2FtcGxlKCIwLjAw
MDAwMDAwMDAwMSIsICIwLjAwMDAwMDAwMDAwOCIsICIxZS0xMSIpLnZhbHVlIHNob3VsZCBiZSAw
LjAwMDAwMDAwMDAwOC4gV2FzIDhlLTEyLgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAw
MDAxIiwgIjAuMDAwMDAwMDAwMDA4IiwgIjFlLTExIikudmFsdWVBc051bWJlciBpcyAwLjAwMDAw
MDAwMDAwOAorRkFJTCBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAw
MDA5IiwgIjFlLTExIikudmFsdWUgc2hvdWxkIGJlIDAuMDAwMDAwMDAwMDA5LiBXYXMgOWUtMTIu
CitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAwMDAwMDEiLCAiMC4wMDAwMDAwMDAwMDkiLCAi
MWUtMTEiKS52YWx1ZUFzTnVtYmVyIGlzIDAuMDAwMDAwMDAwMDA5CitGQUlMIGNyZWF0ZVNhbXBs
ZSgiMC4wMDAwMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAwMDAwMSIsICIxZS0xMiIpLnZhbHVlIHNo
b3VsZCBiZSAwLjAwMDAwMDAwMDAwMDEuIFdhcyAxZS0xMy4KK1BBU1MgY3JlYXRlU2FtcGxlKCIw
LjAwMDAwMDAwMDAwMDEiLCAiMC4wMDAwMDAwMDAwMDAxIiwgIjFlLTEyIikudmFsdWVBc051bWJl
ciBpcyAwLjAwMDAwMDAwMDAwMDEKK0ZBSUwgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMDAwMDEi
LCAiMC4wMDAwMDAwMDAwMDAyIiwgIjFlLTEyIikudmFsdWUgc2hvdWxkIGJlIDAuMDAwMDAwMDAw
MDAwMi4gV2FzIDJlLTEzLgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAwMDAwMSIsICIw
LjAwMDAwMDAwMDAwMDIiLCAiMWUtMTIiKS52YWx1ZUFzTnVtYmVyIGlzIDAuMDAwMDAwMDAwMDAw
MgorRkFJTCBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAwMDAwMSIsICIwLjAwMDAwMDAwMDAwMDMi
LCAiMWUtMTIiKS52YWx1ZSBzaG91bGQgYmUgMC4wMDAwMDAwMDAwMDAzLiBXYXMgM2UtMTMuCitQ
QVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAwMDAwMyIsICIx
ZS0xMiIpLnZhbHVlQXNOdW1iZXIgaXMgMC4wMDAwMDAwMDAwMDAzCitGQUlMIGNyZWF0ZVNhbXBs
ZSgiMC4wMDAwMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAwMDAwNCIsICIxZS0xMiIpLnZhbHVlIHNo
b3VsZCBiZSAwLjAwMDAwMDAwMDAwMDQuIFdhcyA0ZS0xMy4KK1BBU1MgY3JlYXRlU2FtcGxlKCIw
LjAwMDAwMDAwMDAwMDEiLCAiMC4wMDAwMDAwMDAwMDA0IiwgIjFlLTEyIikudmFsdWVBc051bWJl
ciBpcyAwLjAwMDAwMDAwMDAwMDQKK0ZBSUwgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMDAwMDEi
LCAiMC4wMDAwMDAwMDAwMDA1IiwgIjFlLTEyIikudmFsdWUgc2hvdWxkIGJlIDAuMDAwMDAwMDAw
MDAwNS4gV2FzIDVlLTEzLgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAwMDAwMSIsICIw
LjAwMDAwMDAwMDAwMDUiLCAiMWUtMTIiKS52YWx1ZUFzTnVtYmVyIGlzIDAuMDAwMDAwMDAwMDAw
NQorRkFJTCBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAwMDAwMSIsICIwLjAwMDAwMDAwMDAwMDYi
LCAiMWUtMTIiKS52YWx1ZSBzaG91bGQgYmUgMC4wMDAwMDAwMDAwMDA2LiBXYXMgNmUtMTMuCitQ
QVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAwMDAwNiIsICIx
ZS0xMiIpLnZhbHVlQXNOdW1iZXIgaXMgMC4wMDAwMDAwMDAwMDA2CitGQUlMIGNyZWF0ZVNhbXBs
ZSgiMC4wMDAwMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAwMDAwNyIsICIxZS0xMiIpLnZhbHVlIHNo
b3VsZCBiZSAwLjAwMDAwMDAwMDAwMDcuIFdhcyA3ZS0xMy4KK1BBU1MgY3JlYXRlU2FtcGxlKCIw
LjAwMDAwMDAwMDAwMDEiLCAiMC4wMDAwMDAwMDAwMDA3IiwgIjFlLTEyIikudmFsdWVBc051bWJl
ciBpcyAwLjAwMDAwMDAwMDAwMDcKK0ZBSUwgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMDAwMDEi
LCAiMC4wMDAwMDAwMDAwMDA4IiwgIjFlLTEyIikudmFsdWUgc2hvdWxkIGJlIDAuMDAwMDAwMDAw
MDAwOC4gV2FzIDhlLTEzLgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAwMDAwMSIsICIw
LjAwMDAwMDAwMDAwMDgiLCAiMWUtMTIiKS52YWx1ZUFzTnVtYmVyIGlzIDAuMDAwMDAwMDAwMDAw
OAorRkFJTCBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAwMDAwMSIsICIwLjAwMDAwMDAwMDAwMDki
LCAiMWUtMTIiKS52YWx1ZSBzaG91bGQgYmUgMC4wMDAwMDAwMDAwMDA5LiBXYXMgOWUtMTMuCitQ
QVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAwMDAwOSIsICIx
ZS0xMiIpLnZhbHVlQXNOdW1iZXIgaXMgMC4wMDAwMDAwMDAwMDA5CitGQUlMIGNyZWF0ZVNhbXBs
ZSgiMC4wMDAwMDAwMDAwMDAwMSIsICIwLjAwMDAwMDAwMDAwMDAxIiwgIjFlLTEzIikudmFsdWUg
c2hvdWxkIGJlIDAuMDAwMDAwMDAwMDAwMDEuIFdhcyAxZS0xNC4KK1BBU1MgY3JlYXRlU2FtcGxl
KCIwLjAwMDAwMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAwMDAwMDEiLCAiMWUtMTMiKS52YWx1ZUFz
TnVtYmVyIGlzIDAuMDAwMDAwMDAwMDAwMDEKK0ZBSUwgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAw
MDAwMDAxIiwgIjAuMDAwMDAwMDAwMDAwMDIiLCAiMWUtMTMiKS52YWx1ZSBzaG91bGQgYmUgMC4w
MDAwMDAwMDAwMDAwMi4gV2FzIDJlLTE0LgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAw
MDAwMDEiLCAiMC4wMDAwMDAwMDAwMDAwMiIsICIxZS0xMyIpLnZhbHVlQXNOdW1iZXIgaXMgMC4w
MDAwMDAwMDAwMDAwMgorRkFJTCBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAwMDAwMDEiLCAiMC4w
MDAwMDAwMDAwMDAwMyIsICIxZS0xMyIpLnZhbHVlIHNob3VsZCBiZSAwLjAwMDAwMDAwMDAwMDAz
LiBXYXMgM2UtMTQuCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAwMDAwMDAwMSIsICIwLjAw
MDAwMDAwMDAwMDAzIiwgIjFlLTEzIikudmFsdWVBc051bWJlciBpcyAwLjAwMDAwMDAwMDAwMDAz
CitGQUlMIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAwMDAwMDAwMSIsICIwLjAwMDAwMDAwMDAwMDA0
IiwgIjFlLTEzIikudmFsdWUgc2hvdWxkIGJlIDAuMDAwMDAwMDAwMDAwMDQuIFdhcyA0ZS0xNC4K
K1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAwMDAwMDQi
LCAiMWUtMTMiKS52YWx1ZUFzTnVtYmVyIGlzIDAuMDAwMDAwMDAwMDAwMDQKK0ZBSUwgY3JlYXRl
U2FtcGxlKCIwLjAwMDAwMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAwMDAwMDUiLCAiMWUtMTMiKS52
YWx1ZSBzaG91bGQgYmUgMC4wMDAwMDAwMDAwMDAwNS4gV2FzIDVlLTE0LgorUEFTUyBjcmVhdGVT
YW1wbGUoIjAuMDAwMDAwMDAwMDAwMDEiLCAiMC4wMDAwMDAwMDAwMDAwNSIsICIxZS0xMyIpLnZh
bHVlQXNOdW1iZXIgaXMgMC4wMDAwMDAwMDAwMDAwNQorRkFJTCBjcmVhdGVTYW1wbGUoIjAuMDAw
MDAwMDAwMDAwMDEiLCAiMC4wMDAwMDAwMDAwMDAwNiIsICIxZS0xMyIpLnZhbHVlIHNob3VsZCBi
ZSAwLjAwMDAwMDAwMDAwMDA2LiBXYXMgNmUtMTQuCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAw
MDAwMDAwMDAwMSIsICIwLjAwMDAwMDAwMDAwMDA2IiwgIjFlLTEzIikudmFsdWVBc051bWJlciBp
cyAwLjAwMDAwMDAwMDAwMDA2CitGQUlMIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAwMDAwMDAwMSIs
ICIwLjAwMDAwMDAwMDAwMDA3IiwgIjFlLTEzIikudmFsdWUgc2hvdWxkIGJlIDAuMDAwMDAwMDAw
MDAwMDcuIFdhcyA3ZS0xNC4KK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMDAwMDAxIiwg
IjAuMDAwMDAwMDAwMDAwMDciLCAiMWUtMTMiKS52YWx1ZUFzTnVtYmVyIGlzIDAuMDAwMDAwMDAw
MDAwMDcKK0ZBSUwgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAw
MDAwMDgiLCAiMWUtMTMiKS52YWx1ZSBzaG91bGQgYmUgMC4wMDAwMDAwMDAwMDAwOC4gV2FzIDhl
LTE0LgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAwMDAwMDEiLCAiMC4wMDAwMDAwMDAw
MDAwOCIsICIxZS0xMyIpLnZhbHVlQXNOdW1iZXIgaXMgMC4wMDAwMDAwMDAwMDAwOAorRkFJTCBj
cmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAwMDAwMDEiLCAiMC4wMDAwMDAwMDAwMDAwOSIsICIxZS0x
MyIpLnZhbHVlIHNob3VsZCBiZSAwLjAwMDAwMDAwMDAwMDA5LiBXYXMgOWUtMTQuCitQQVNTIGNy
ZWF0ZVNhbXBsZSgiMC4wMDAwMDAwMDAwMDAwMSIsICIwLjAwMDAwMDAwMDAwMDA5IiwgIjFlLTEz
IikudmFsdWVBc051bWJlciBpcyAwLjAwMDAwMDAwMDAwMDA5CitGQUlMIGNyZWF0ZVNhbXBsZSgi
MC4wMDAwMDAwMDAwMDAwMDEiLCAiMC4wMDAwMDAwMDAwMDAwMDEiLCAiMWUtMTQiKS52YWx1ZSBz
aG91bGQgYmUgMC4wMDAwMDAwMDAwMDAwMDEuIFdhcyAxZS0xNS4KK1BBU1MgY3JlYXRlU2FtcGxl
KCIwLjAwMDAwMDAwMDAwMDAwMSIsICIwLjAwMDAwMDAwMDAwMDAwMSIsICIxZS0xNCIpLnZhbHVl
QXNOdW1iZXIgaXMgMC4wMDAwMDAwMDAwMDAwMDEKK0ZBSUwgY3JlYXRlU2FtcGxlKCIwLjAwMDAw
MDAwMDAwMDAwMSIsICIwLjAwMDAwMDAwMDAwMDAwMiIsICIxZS0xNCIpLnZhbHVlIHNob3VsZCBi
ZSAwLjAwMDAwMDAwMDAwMDAwMi4gV2FzIDJlLTE1LgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAw
MDAwMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAwMDAwMDAyIiwgIjFlLTE0IikudmFsdWVBc051bWJl
ciBpcyAwLjAwMDAwMDAwMDAwMDAwMgorRkFJTCBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAwMDAw
MDAxIiwgIjAuMDAwMDAwMDAwMDAwMDAzIiwgIjFlLTE0IikudmFsdWUgc2hvdWxkIGJlIDAuMDAw
MDAwMDAwMDAwMDAzLiBXYXMgM2UtMTUuCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAwMDAw
MDAwMDEiLCAiMC4wMDAwMDAwMDAwMDAwMDMiLCAiMWUtMTQiKS52YWx1ZUFzTnVtYmVyIGlzIDAu
MDAwMDAwMDAwMDAwMDAzCitGQUlMIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAwMDAwMDAwMDEiLCAi
MC4wMDAwMDAwMDAwMDAwMDQiLCAiMWUtMTQiKS52YWx1ZSBzaG91bGQgYmUgMC4wMDAwMDAwMDAw
MDAwMDQuIFdhcyA0ZS0xNS4KK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMDAwMDAwMSIs
ICIwLjAwMDAwMDAwMDAwMDAwNCIsICIxZS0xNCIpLnZhbHVlQXNOdW1iZXIgaXMgMC4wMDAwMDAw
MDAwMDAwMDQKK0ZBSUwgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMDAwMDAwMSIsICIwLjAwMDAw
MDAwMDAwMDAwNSIsICIxZS0xNCIpLnZhbHVlIHNob3VsZCBiZSAwLjAwMDAwMDAwMDAwMDAwNS4g
V2FzIDVlLTE1LgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAwMDAwMDAxIiwgIjAuMDAw
MDAwMDAwMDAwMDA1IiwgIjFlLTE0IikudmFsdWVBc051bWJlciBpcyAwLjAwMDAwMDAwMDAwMDAw
NQorRkFJTCBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAwMDAw
MDA2IiwgIjFlLTE0IikudmFsdWUgc2hvdWxkIGJlIDAuMDAwMDAwMDAwMDAwMDA2LiBXYXMgNmUt
MTUuCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAwMDAwMDAwMDEiLCAiMC4wMDAwMDAwMDAw
MDAwMDYiLCAiMWUtMTQiKS52YWx1ZUFzTnVtYmVyIGlzIDAuMDAwMDAwMDAwMDAwMDA2CitGQUlM
IGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAwMDAwMDAwMDEiLCAiMC4wMDAwMDAwMDAwMDAwMDciLCAi
MWUtMTQiKS52YWx1ZSBzaG91bGQgYmUgMC4wMDAwMDAwMDAwMDAwMDcuIFdhcyA3ZS0xNS4KK1BB
U1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMDAwMDAwMSIsICIwLjAwMDAwMDAwMDAwMDAwNyIs
ICIxZS0xNCIpLnZhbHVlQXNOdW1iZXIgaXMgMC4wMDAwMDAwMDAwMDAwMDcKK0ZBSUwgY3JlYXRl
U2FtcGxlKCIwLjAwMDAwMDAwMDAwMDAwMSIsICIwLjAwMDAwMDAwMDAwMDAwOCIsICIxZS0xNCIp
LnZhbHVlIHNob3VsZCBiZSAwLjAwMDAwMDAwMDAwMDAwOC4gV2FzIDhlLTE1LgorUEFTUyBjcmVh
dGVTYW1wbGUoIjAuMDAwMDAwMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAwMDAwMDA4IiwgIjFlLTE0
IikudmFsdWVBc051bWJlciBpcyAwLjAwMDAwMDAwMDAwMDAwOAorRkFJTCBjcmVhdGVTYW1wbGUo
IjAuMDAwMDAwMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAwMDAwMDA5IiwgIjFlLTE0IikudmFsdWUg
c2hvdWxkIGJlIDAuMDAwMDAwMDAwMDAwMDA5LiBXYXMgOWUtMTUuCitQQVNTIGNyZWF0ZVNhbXBs
ZSgiMC4wMDAwMDAwMDAwMDAwMDEiLCAiMC4wMDAwMDAwMDAwMDAwMDkiLCAiMWUtMTQiKS52YWx1
ZUFzTnVtYmVyIGlzIDAuMDAwMDAwMDAwMDAwMDA5CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKzAuMQorMC4xCiswLjIKKzAuMgorMC4zCiswLjMKKzAu
NAorMC40CiswLjUKKzAuNQorMC42CiswLjYKKzAuNworMC43CiswLjgKKzAuOAorMC45CiswLjkK
KzAuMDEKKzAuMDEKKzAuMDIKKzAuMDIKKzAuMDMKKzAuMDMKKzAuMDQKKzAuMDQKKzAuMDUKKzAu
MDUKKzAuMDYKKzAuMDYKKzAuMDcKKzAuMDcKKzAuMDgKKzAuMDgKKzAuMDkKKzAuMDkKKzAuMDAx
CiswLjAwMQorMC4wMDIKKzAuMDAyCiswLjAwMworMC4wMDMKKzAuMDA0CiswLjAwNAorMC4wMDUK
KzAuMDA1CiswLjAwNgorMC4wMDYKKzAuMDA3CiswLjAwNworMC4wMDgKKzAuMDA4CiswLjAwOQor
MC4wMDkKKzAuMDAwMQorMC4wMDAxCiswLjAwMDIKKzAuMDAwMgorMC4wMDAzCiswLjAwMDMKKzAu
MDAwNAorMC4wMDA0CiswLjAwMDUKKzAuMDAwNQorMC4wMDA2CiswLjAwMDYKKzAuMDAwNworMC4w
MDA3CiswLjAwMDgKKzAuMDAwOAorMC4wMDA5CiswLjAwMDkKKzAuMDAwMDEKKzAuMDAwMDEKKzAu
MDAwMDIKKzAuMDAwMDIKKzAuMDAwMDMKKzAuMDAwMDMKKzAuMDAwMDQKKzAuMDAwMDQKKzAuMDAw
MDUKKzAuMDAwMDUKKzAuMDAwMDYKKzAuMDAwMDYKKzAuMDAwMDcKKzAuMDAwMDcKKzAuMDAwMDgK
KzAuMDAwMDgKKzAuMDAwMDkKKzAuMDAwMDkKKzAuMDAwMDAxCiswLjAwMDAwMQorMC4wMDAwMDIK
KzAuMDAwMDAyCiswLjAwMDAwMworMC4wMDAwMDMKKzAuMDAwMDA0CiswLjAwMDAwNAorMC4wMDAw
MDUKKzAuMDAwMDA1CiswLjAwMDAwNgorMC4wMDAwMDYKKzAuMDAwMDA3CiswLjAwMDAwNworMC4w
MDAwMDgKKzAuMDAwMDA4CiswLjAwMDAwOQorMC4wMDAwMDkKKzAuMDAwMDAwMQorMC4wMDAwMDAx
CiswLjAwMDAwMDIKKzAuMDAwMDAwMgorMC4wMDAwMDAzCiswLjAwMDAwMDMKKzAuMDAwMDAwNAor
MC4wMDAwMDA0CiswLjAwMDAwMDUKKzAuMDAwMDAwNQorMC4wMDAwMDA2CiswLjAwMDAwMDYKKzAu
MDAwMDAwNworMC4wMDAwMDA3CiswLjAwMDAwMDgKKzAuMDAwMDAwOAorMC4wMDAwMDA5CiswLjAw
MDAwMDkKKzAuMDAwMDAwMDEKKzAuMDAwMDAwMDEKKzAuMDAwMDAwMDIKKzAuMDAwMDAwMDIKKzAu
MDAwMDAwMDMKKzAuMDAwMDAwMDMKKzAuMDAwMDAwMDQKKzAuMDAwMDAwMDQKKzAuMDAwMDAwMDUK
KzAuMDAwMDAwMDUKKzAuMDAwMDAwMDYKKzAuMDAwMDAwMDYKKzAuMDAwMDAwMDcKKzAuMDAwMDAw
MDcKKzAuMDAwMDAwMDgKKzAuMDAwMDAwMDgKKzAuMDAwMDAwMDkKKzAuMDAwMDAwMDkKKzAuMDAw
MDAwMDAxCiswLjAwMDAwMDAwMQorMC4wMDAwMDAwMDIKKzAuMDAwMDAwMDAyCiswLjAwMDAwMDAw
MworMC4wMDAwMDAwMDMKKzAuMDAwMDAwMDA0CiswLjAwMDAwMDAwNAorMC4wMDAwMDAwMDUKKzAu
MDAwMDAwMDA1CiswLjAwMDAwMDAwNgorMC4wMDAwMDAwMDYKKzAuMDAwMDAwMDA3CiswLjAwMDAw
MDAwNworMC4wMDAwMDAwMDgKKzAuMDAwMDAwMDA4CiswLjAwMDAwMDAwOQorMC4wMDAwMDAwMDkK
KzAuMDAwMDAwMDAwMQorMC4wMDAwMDAwMDAxCiswLjAwMDAwMDAwMDIKKzAuMDAwMDAwMDAwMgor
MC4wMDAwMDAwMDAzCiswLjAwMDAwMDAwMDMKKzAuMDAwMDAwMDAwNAorMC4wMDAwMDAwMDA0Cisw
LjAwMDAwMDAwMDUKKzAuMDAwMDAwMDAwNQorMC4wMDAwMDAwMDA2CiswLjAwMDAwMDAwMDYKKzAu
MDAwMDAwMDAwNworMC4wMDAwMDAwMDA3CiswLjAwMDAwMDAwMDgKKzAuMDAwMDAwMDAwOAorMC4w
MDAwMDAwMDA5CiswLjAwMDAwMDAwMDkKKzAuMDAwMDAwMDAwMDEKKzAuMDAwMDAwMDAwMDEKKzAu
MDAwMDAwMDAwMDIKKzAuMDAwMDAwMDAwMDIKKzAuMDAwMDAwMDAwMDMKKzAuMDAwMDAwMDAwMDMK
KzAuMDAwMDAwMDAwMDQKKzAuMDAwMDAwMDAwMDQKKzAuMDAwMDAwMDAwMDUKKzAuMDAwMDAwMDAw
MDUKKzAuMDAwMDAwMDAwMDYKKzAuMDAwMDAwMDAwMDYKKzAuMDAwMDAwMDAwMDcKKzAuMDAwMDAw
MDAwMDcKKzAuMDAwMDAwMDAwMDgKKzAuMDAwMDAwMDAwMDgKKzAuMDAwMDAwMDAwMDkKKzAuMDAw
MDAwMDAwMDkKKzAuMDAwMDAwMDAwMDAxCiswLjAwMDAwMDAwMDAwMQorMC4wMDAwMDAwMDAwMDIK
KzAuMDAwMDAwMDAwMDAyCiswLjAwMDAwMDAwMDAwMworMC4wMDAwMDAwMDAwMDMKKzAuMDAwMDAw
MDAwMDA0CiswLjAwMDAwMDAwMDAwNAorMC4wMDAwMDAwMDAwMDUKKzAuMDAwMDAwMDAwMDA1Cisw
LjAwMDAwMDAwMDAwNgorMC4wMDAwMDAwMDAwMDYKKzAuMDAwMDAwMDAwMDA3CiswLjAwMDAwMDAw
MDAwNworMC4wMDAwMDAwMDAwMDgKKzAuMDAwMDAwMDAwMDA4CiswLjAwMDAwMDAwMDAwOQorMC4w
MDAwMDAwMDAwMDkKKzAuMDAwMDAwMDAwMDAwMQorMC4wMDAwMDAwMDAwMDAxCiswLjAwMDAwMDAw
MDAwMDIKKzAuMDAwMDAwMDAwMDAwMgorMC4wMDAwMDAwMDAwMDAzCiswLjAwMDAwMDAwMDAwMDMK
KzAuMDAwMDAwMDAwMDAwNAorMC4wMDAwMDAwMDAwMDA0CiswLjAwMDAwMDAwMDAwMDUKKzAuMDAw
MDAwMDAwMDAwNQorMC4wMDAwMDAwMDAwMDA2CiswLjAwMDAwMDAwMDAwMDYKKzAuMDAwMDAwMDAw
MDAwNworMC4wMDAwMDAwMDAwMDA3CiswLjAwMDAwMDAwMDAwMDgKKzAuMDAwMDAwMDAwMDAwOAor
MC4wMDAwMDAwMDAwMDA5CiswLjAwMDAwMDAwMDAwMDkKKzAuMDAwMDAwMDAwMDAwMDEKKzAuMDAw
MDAwMDAwMDAwMDEKKzAuMDAwMDAwMDAwMDAwMDIKKzAuMDAwMDAwMDAwMDAwMDIKKzAuMDAwMDAw
MDAwMDAwMDMKKzAuMDAwMDAwMDAwMDAwMDMKKzAuMDAwMDAwMDAwMDAwMDQKKzAuMDAwMDAwMDAw
MDAwMDQKKzAuMDAwMDAwMDAwMDAwMDUKKzAuMDAwMDAwMDAwMDAwMDUKKzAuMDAwMDAwMDAwMDAw
MDYKKzAuMDAwMDAwMDAwMDAwMDYKKzAuMDAwMDAwMDAwMDAwMDcKKzAuMDAwMDAwMDAwMDAwMDcK
KzAuMDAwMDAwMDAwMDAwMDgKKzAuMDAwMDAwMDAwMDAwMDgKKzAuMDAwMDAwMDAwMDAwMDkKKzAu
MDAwMDAwMDAwMDAwMDkKKzAuMDAwMDAwMDAwMDAwMDAxCiswLjAwMDAwMDAwMDAwMDAwMQorMC4w
MDAwMDAwMDAwMDAwMDIKKzAuMDAwMDAwMDAwMDAwMDAyCiswLjAwMDAwMDAwMDAwMDAwMworMC4w
MDAwMDAwMDAwMDAwMDMKKzAuMDAwMDAwMDAwMDAwMDA0CiswLjAwMDAwMDAwMDAwMDAwNAorMC4w
MDAwMDAwMDAwMDAwMDUKKzAuMDAwMDAwMDAwMDAwMDA1CiswLjAwMDAwMDAwMDAwMDAwNgorMC4w
MDAwMDAwMDAwMDAwMDYKKzAuMDAwMDAwMDAwMDAwMDA3CiswLjAwMDAwMDAwMDAwMDAwNworMC4w
MDAwMDAwMDAwMDAwMDgKKzAuMDAwMDAwMDAwMDAwMDA4CiswLjAwMDAwMDAwMDAwMDAwOQorMC4w
MDAwMDAwMDAwMDAwMDkKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yYW5n
ZS9yYW5nZS12YWx1ZS1yb3VuZGluZy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yYW5n
ZS9yYW5nZS12YWx1ZS1yb3VuZGluZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE0ZmM3ZDY1ZTc1ZjE0ZDZl
ZTZkZjY5OWEyNjI1ODg1MzJkNWM4ZjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL3JhbmdlL3JhbmdlLXZhbHVlLXJvdW5kaW5nLmh0bWwKQEAgLTAsMCArMSwzNCBA
QAorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGlucHV0IGlkPSJmb28iIHR5cGU9cmFuZ2Ug
c3RlcD0wLjEgdmFsdWU9MC42PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8ZGl2IGlkPSJz
bGlkZXJzIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiPGEgaHJlZj0naHR0cDovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODAwMDknPjgwMDA5IEludHJvZHVjZSBEZWNp
bWFsIGFyaXRobWV0aWMgdG8gZml4IHJvdW5kaW5nIGVycm9ycyBpbiBudW1iZXIvcmFuZ2UgaW5w
dXQgdHlwZXM8L2E+Iik7CisKK2Z1bmN0aW9uIGNyZWF0ZVNhbXBsZShzdGVwLCB2YWx1ZSwgbWF4
KQoreworICAgIHZhciBjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7
CisgICAgY29udGFpbmVyLmlubmVySFRNTCA9ICc8aW5wdXQgdHlwZT1yYW5nZSBtaW49MCBtYXg9
JyArIG1heCArICcgc3RlcD0nICsgc3RlcCArICcgdmFsdWU9JyArIHZhbHVlICsgJz4nICsgdmFs
dWUgKyAnPGJyPic7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNsaWRlcnMiKS5hcHBl
bmRDaGlsZChjb250YWluZXIpOworICAgIHJldHVybiBjb250YWluZXIuZmlyc3RDaGlsZDsKK30K
KwordmFyIHplcm9zID0gIjAuIjsKK2ZvciAodmFyIGV4cG9uZW50ID0gMDsgZXhwb25lbnQgPCAx
NTsgKytleHBvbmVudCkgeworICAgIHZhciBzdGVwID0gemVyb3MgKyAiMSI7CisgICAgZm9yICh2
YXIgZGlnaXQgPSAxOyBkaWdpdCA8PSA5OyArK2RpZ2l0KSB7CisgICAgICAgIHZhciB2YWx1ZSA9
IHplcm9zICsgZGlnaXQudG9TdHJpbmcoKTsKKyAgICAgICAgdmFyIHNhbXBsZSA9ICdjcmVhdGVT
YW1wbGUoIicgKyBzdGVwICsgJyIsICInICsgdmFsdWUgKyAnIiwgIjFlLScgKyBleHBvbmVudCAr
ICciKSc7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZyhzYW1wbGUgKyAnLnZhbHVlJywg
dmFsdWUpOworICAgICAgICBzaG91bGRCZShzYW1wbGUgKyAnLnZhbHVlQXNOdW1iZXInLCB2YWx1
ZSk7CisgICAgfQorICAgIHplcm9zICs9ICIwIjsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
CisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>145264</attachid>
            <date>2012-06-01 03:49:04 -0700</date>
            <delta_ts>2012-06-03 18:18:30 -0700</delta_ts>
            <desc>Patch 10</desc>
            <filename>bug-80009-20120601194902.patch</filename>
            <type>text/plain</type>
            <size>129561</size>
            <attacher>yosin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5MjA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWQzNjBlMmIzYmJiMThh
YTI3MmVjODQ3MTQxZDc5NmU4ZmNjZDYzNy4uZGUyNmY3MWEwOTQ1NGVmYTU4ZmY0NmM1YTU2MGU5
ZTA2NGRiOGNmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE1MSBAQAogMjAxMi0wNi0wMSAgWW9z
aGlmdW1pIElub3VlICA8eW9zaW5AY2hyb21pdW0ub3JnPgogCisgICAgICAgIEludHJvZHVjZSBE
ZWNpbWFsIGFyaXRobWV0aWMgdG8gZml4IHJvdW5kaW5nIGVycm9ycyBpbiBudW1iZXIvcmFuZ2Ug
aW5wdXQgdHlwZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTgwMDA5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGRlY2ltYWwgYXJpdGhtYXRpYyBmb3Igc3RlcHBhYmxl
IGlucHV0IHR5cGVzLAorICAgICAgICBlLmcuIGRhdGUsIGRhdGV0aW1lLCBudW1iZXIsIHJhbmdl
LCBhbmQgc28gb24sIHRvIGF2b2lkIHJvdW5kaW5nIGVycm9yCisgICAgICAgIGNhdXNlZCBieSBi
YXNlIDIgZmxvYXRpbmcgcG9pbnQgcmVwcmVzZW50YXRpb24sIGUuZy4gQy9DKysgZG91YmxlIHR5
cGUuCisKKyAgICAgICAgTW9zdCBvZiBkZWNpbWFsIGFyaXRobWF0aWMgY2FsY3VsYXRpb25zIGFy
ZSBpbXBsZW1lbnRlZCBpbiBTdGVwUmFuZ2UKKyAgICAgICAgY2xhc3MsIHJlcGxhY2luZyAiZG91
YmxlIiB3aXRoICJEZWNpbWFsIiwgSW5wdXRUeXBlOjphcHBseVN0ZXAsIGFuZAorICAgICAgICBJ
bnB1dFR5cGU6OnN0ZXBGcm9tUmVuZGVyZXIuCisKKyAgICAgICAgVGVzdDogZmFzdC9mb3Jtcy9y
YW5nZS9yYW5nZS12YWx1ZS1yb3VuZGluZy5odG1sCisKKyAgICAgICAgKiBodG1sL0Jhc2VEYXRl
QW5kVGltZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCYXNlRGF0ZUFuZFRpbWVJ
bnB1dFR5cGU6OnZhbHVlQXNEYXRlKTogVXNpbmcgRGVjaW1hbCBpbnN0ZWFkIG9mIGRvdWJsZS4K
KyAgICAgICAgKFdlYkNvcmU6OkJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6c2V0VmFsdWVBc0Rh
dGUpOiBkaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6
dmFsdWVBc051bWJlcik6IGRpdHRvLgorICAgICAgICAoV2ViQ29yZTo6QmFzZURhdGVBbmRUaW1l
SW5wdXRUeXBlOjpzZXRWYWx1ZUFzTnVtYmVyKTogZGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpC
YXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmRlZmF1bHRWYWx1ZUZvclN0ZXBVcCk6IGRpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6QmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpwYXJzZVRvRGVjaW1h
bCk6IFJlcGxhY2VtZW50IG9mIHBhcnNlVG9Eb3VibGUKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VE
YXRlQW5kVGltZUlucHV0VHlwZTo6c2VyaWFsaXplKTogVXNpbmcgRGVjaW1hbCBpbnN0ZWFkIG9m
IGRvdWJsZS4KKyAgICAgICAgKFdlYkNvcmU6OkJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6c2Vy
aWFsaXplV2l0aENvbXBvbmVudHMpOiBkaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkJhc2VEYXRl
QW5kVGltZUlucHV0VHlwZTo6c2VyaWFsaXplV2l0aE1pbGxpc2Vjb25kcyk6IGRpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6QmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpjb252ZXJ0RnJvbVZpc2li
bGVWYWx1ZSk6IGRpdHRvLgorICAgICAgICAqIGh0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBl
Lmg6CisgICAgICAgIChCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUpOgorICAgICAgICAqIGh0bWwv
RGF0ZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRlSW5wdXRUeXBlOjpjcmVh
dGVTdGVwUmFuZ2UpOiBVc2luZyBEZWNpbWFsIGluc3RlYWQgb2YgZG91YmxlLgorICAgICAgICAo
V2ViQ29yZTo6RGF0ZUlucHV0VHlwZTo6c2V0TWlsbGlzZWNvbmRUb0RhdGVDb21wb25lbnRzKTog
ZGl0dG8uCisgICAgICAgICogaHRtbC9EYXRlSW5wdXRUeXBlLmg6CisgICAgICAgIChEYXRlSW5w
dXRUeXBlKToKKyAgICAgICAgKiBodG1sL0RhdGVUaW1lSW5wdXRUeXBlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRhdGVUaW1lSW5wdXRUeXBlOjpkZWZhdWx0VmFsdWVGb3JTdGVwVXApOiBVc2lu
ZyBEZWNpbWFsIGluc3RlYWQgb2YgZG91YmxlLgorICAgICAgICAoV2ViQ29yZTo6RGF0ZVRpbWVJ
bnB1dFR5cGU6OmNyZWF0ZVN0ZXBSYW5nZSk6IGRpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RGF0
ZVRpbWVJbnB1dFR5cGU6OnNldE1pbGxpc2Vjb25kVG9EYXRlQ29tcG9uZW50cyk6IGRpdHRvLgor
ICAgICAgICAqIGh0bWwvRGF0ZVRpbWVJbnB1dFR5cGUuaDoKKyAgICAgICAgKERhdGVUaW1lSW5w
dXRUeXBlKToKKyAgICAgICAgKiBodG1sL0RhdGVUaW1lTG9jYWxJbnB1dFR5cGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRlVGltZUxvY2FsSW5wdXRUeXBl
OjpjcmVhdGVTdGVwUmFuZ2UpOiBVc2luZyBEZWNpbWFsIGluc3RlYWQgb2YgZG91YmxlLgorICAg
ICAgICAoV2ViQ29yZTo6RGF0ZVRpbWVMb2NhbElucHV0VHlwZTo6c2V0TWlsbGlzZWNvbmRUb0Rh
dGVDb21wb25lbnRzKTogZGl0dG8uCisgICAgICAgICogaHRtbC9EYXRlVGltZUxvY2FsSW5wdXRU
eXBlLmg6CisgICAgICAgIChEYXRlVGltZUxvY2FsSW5wdXRUeXBlKToKKyAgICAgICAgKiBodG1s
L0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVu
dDo6Z2V0QWxsb3dlZFZhbHVlU3RlcCk6IFVzaW5nIERlY2ltYWwgaW5zdGVhZCBvZiBkb3VibGUu
CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpzZXRWYWx1ZUFzTnVtYmVyKTog
ZGl0dG8uCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1l
bnQuaDoKKyAgICAgICAgKEhUTUxJbnB1dEVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvSW5wdXRU
eXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6c2V0VmFsdWVBc051bWJlcik6
IFVzaW5nIERlY2ltYWwgaW5zdGVhZCBvZiBkb3VibGUuCisgICAgICAgIChXZWJDb3JlOjpJbnB1
dFR5cGU6OnJhbmdlVW5kZXJmbG93KTogZGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5
cGU6OnJhbmdlT3ZlcmZsb3cpOiBkaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6
ZGVmYXVsdFZhbHVlRm9yU3RlcFVwKTogZGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5
cGU6Om1pbmltdW0pOiBkaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6bWF4aW11
bSk6IGRpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjppc0luUmFuZ2UpOiBkaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6aXNPdXRPZlJhbmdlKTogZGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OnN0ZXBNaXNtYXRjaCk6IGRpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6SW5wdXRUeXBlOjp2YWxpZGF0aW9uTWVzc2FnZSk6ICBkaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OklucHV0VHlwZTo6cGFyc2VUb0RlY2ltYWwpOiBSZXBsYWNlbWVudCBvZiBw
YXJzZVRvRG91YmxlCisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OnNlcmlhbGl6ZSk6IFVz
aW5nIERlY2ltYWwgaW5zdGVhZCBvZiBkb3VibGUuCisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5
cGU6OmFwcGx5U3RlcCk6IGRpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjpnZXRB
bGxvd2VkVmFsdWVTdGVwKTogZGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OnN0
ZXBVcEZyb21SZW5kZXJlcik6IGRpdHRvLgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBlLmg6Cisg
ICAgICAgIChJbnB1dFR5cGUpOgorICAgICAgICAqIGh0bWwvTW9udGhJbnB1dFR5cGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TW9udGhJbnB1dFR5cGU6OnNlcmlhbGl6ZVdpdGhNaWxsaXNlY29u
ZHMpOiBVc2luZyBEZWNpbWFsIGluc3RlYWQgb2YgZG91YmxlLgorICAgICAgICAoV2ViQ29yZTo6
TW9udGhJbnB1dFR5cGU6OmRlZmF1bHRWYWx1ZUZvclN0ZXBVcCk6IGRpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6TW9udGhJbnB1dFR5cGU6OmNyZWF0ZVN0ZXBSYW5nZSk6IGRpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6TW9udGhJbnB1dFR5cGU6OnBhcnNlVG9EZWNpbWFsKTogUmVwbGFjZW1lbnQg
b2YgcGFyc2VUb0RvdWJsZS4KKyAgICAgICAgKFdlYkNvcmU6Ok1vbnRoSW5wdXRUeXBlOjpzZXRN
aWxsaXNlY29uZFRvRGF0ZUNvbXBvbmVudHMpOiBVc2luZyBEZWNpbWFsIGluc3RlYWQgb2YgZG91
YmxlLgorICAgICAgICAqIGh0bWwvTW9udGhJbnB1dFR5cGUuaDoKKyAgICAgICAgKE1vbnRoSW5w
dXRUeXBlKToKKyAgICAgICAgKiBodG1sL051bWJlcklucHV0VHlwZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjYWxjdWxhdGVSZW5kZXJTaXplKTogQWRkZWQuIFRoaXMgZnVuY3Rpb24gcmVwbGFj
ZXNzIGxlbmd0aEJlZm9yZURlY2ltYWxQb2ludC4KKyAgICAgICAgKFdlYkNvcmU6Ok51bWJlcklu
cHV0VHlwZTo6dmFsdWVBc051bWJlcik6IFVzaW5nIERlY2ltYWwgaW5zdGVhZCBvZiBkb3VibGUu
CisgICAgICAgIChXZWJDb3JlOjpOdW1iZXJJbnB1dFR5cGU6OnNldFZhbHVlQXNOdW1iZXIpOiBk
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok51bWJlcklucHV0VHlwZTo6Y3JlYXRlU3RlcFJhbmdl
KTogZGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpOdW1iZXJJbnB1dFR5cGU6OnNpemVTaG91bGRJ
bmNsdWRlRGVjb3JhdGlvbik6IGRpdHRvLgorICAgICAgICAoV2ViQ29yZTo6TnVtYmVySW5wdXRU
eXBlOjpwYXJzZVRvRGVjaW1hbCk6IFJlcGxhY2VtZW50IG9mIHBhcnNlVG9Eb3VibGUuCisgICAg
ICAgIChXZWJDb3JlOjpOdW1iZXJJbnB1dFR5cGU6OnNlcmlhbGl6ZSk6IFVzaW5nIERlY2ltYWwg
aW5zdGVhZCBvZiBkb3VibGUuCisgICAgICAgIChXZWJDb3JlOjpOdW1iZXJJbnB1dFR5cGU6Omxv
Y2FsaXplVmFsdWUpOiBkaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok51bWJlcklucHV0VHlwZTo6
aXNBY2NlcHRhYmxlVmFsdWUpOiBkaXR0by4KKyAgICAgICAgKiBodG1sL051bWJlcklucHV0VHlw
ZS5oOgorICAgICAgICAoTnVtYmVySW5wdXRUeXBlKToKKyAgICAgICAgKiBodG1sL1JhbmdlSW5w
dXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlSW5wdXRUeXBlOjp2YWx1ZUFzTnVt
YmVyKTogVXNpbmcgRGVjaW1hbCBpbnN0ZWFkIG9mIGRvdWJsZS4KKyAgICAgICAgKFdlYkNvcmU6
OlJhbmdlSW5wdXRUeXBlOjpzZXRWYWx1ZUFzTnVtYmVyKTogZGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpSYW5nZUlucHV0VHlwZTo6Y3JlYXRlU3RlcFJhbmdlKTogZGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6aGFuZGxlS2V5ZG93bkV2ZW50KTogZGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6cGFyc2VUb0RlY2ltYWwpOiBSZXBsYWNlbWVu
dCBvZiBwYXJzZVRvRG91YmxlLgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VJbnB1dFR5cGU6OnNl
cmlhbGl6ZSk6IGRpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VJbnB1dFR5cGU6OnNhbml0
aXplVmFsdWUpOiBkaXR0by4KKyAgICAgICAgKiBodG1sL1JhbmdlSW5wdXRUeXBlLmg6CisgICAg
ICAgIChSYW5nZUlucHV0VHlwZSk6CisgICAgICAgICogaHRtbC9TdGVwUmFuZ2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6cG93ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3RlcFJhbmdlOjpTdGVw
UmFuZ2UpOiBVc2luZyBEZWNpbWFsIGluc3RlYWQgb2YgZG91YmxlLgorICAgICAgICAoV2ViQ29y
ZTo6U3RlcFJhbmdlOjphY2NlcHRhYmxlRXJyb3IpOiBkaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OlN0ZXBSYW5nZTo6YWxpZ25WYWx1ZUZvclN0ZXApOiBkaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OlN0ZXBSYW5nZTo6Y2xhbXBWYWx1ZSk6IGRpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U3RlcFJh
bmdlOjpwYXJzZVN0ZXApOiBkaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlN0ZXBSYW5nZTo6c3Rl
cE1pc21hdGNoKTogZGl0dG8uCisgICAgICAgICogaHRtbC9TdGVwUmFuZ2UuaDoKKyAgICAgICAg
KERlY2ltYWxPck1pc3NpbmcpOiBSZXBsYWNlbWVudCBvZiBEb3VibGVXaXRoRGVjaW1hbFBvaW50
c09yTWlzc2luZy4KKyAgICAgICAgKFdlYkNvcmU6OlN0ZXBSYW5nZTo6RGVjaW1hbE9yTWlzc2lu
Zzo6RGVjaW1hbE9yTWlzc2luZyk6CisgICAgICAgIChXZWJDb3JlOjpTdGVwUmFuZ2U6OlN0ZXBE
ZXNjcmlwdGlvbjo6ZGVmYXVsdFZhbHVlKTogVXNpbmcgRGVjaW1hbCBpbnN0ZWFkIG9mIGRvdWJs
ZS4KKyAgICAgICAgKFdlYkNvcmU6OlN0ZXBSYW5nZTo6bWF4aW11bSk6IFVzaW5nIERlY2ltYWwg
aW5zdGVhZCBvZiBkb3VibGUuCisgICAgICAgIChXZWJDb3JlOjpTdGVwUmFuZ2U6Om1pbmltdW0p
OiBkaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlN0ZXBSYW5nZTo6c3RlcCk6IGRpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6U3RlcFJhbmdlOjpzdGVwQmFzZSk6IGRpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6U3RlcFJhbmdlOjpkZWZhdWx0VmFsdWUpOiBkaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OlN0ZXBSYW5nZTo6ZW5zdXJlTWF4aW11bSk6IGRpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U3Rl
cFJhbmdlOjpwcm9wb3J0aW9uRnJvbVZhbHVlKTogZGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpT
dGVwUmFuZ2U6OnZhbHVlRnJvbVByb3BvcnRpb24pOiBkaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OlN0ZXBSYW5nZTo6cm91bmRCeVN0ZXApOiBkaXR0by4KKyAgICAgICAgKiBodG1sL1RpbWVJbnB1
dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGltZUlucHV0VHlwZTo6ZGVmYXVsdFZhbHVl
Rm9yU3RlcFVwKTogVXNpbmcgRGVjaW1hbCBpbnN0ZWFkIG9mIGRvdWJsZS4KKyAgICAgICAgKFdl
YkNvcmU6OlRpbWVJbnB1dFR5cGU6OmNyZWF0ZVN0ZXBSYW5nZSk6IGRpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6VGltZUlucHV0VHlwZTo6c2V0TWlsbGlzZWNvbmRUb0RhdGVDb21wb25lbnRzKTog
ZGl0dG8uCisgICAgICAgICogaHRtbC9UaW1lSW5wdXRUeXBlLmg6CisgICAgICAgIChUaW1lSW5w
dXRUeXBlKToKKyAgICAgICAgKiBodG1sL1dlZWtJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V2Vla0lucHV0VHlwZTo6Y3JlYXRlU3RlcFJhbmdlKTogVXNpbmcgRGVjaW1hbCBpbnN0
ZWFkIG9mIGRvdWJsZS4KKyAgICAgICAgKFdlYkNvcmU6OldlZWtJbnB1dFR5cGU6OnNldE1pbGxp
c2Vjb25kVG9EYXRlQ29tcG9uZW50cyk6IGRpdHRvLgorICAgICAgICAqIGh0bWwvV2Vla0lucHV0
VHlwZS5oOgorICAgICAgICAoV2Vla0lucHV0VHlwZSk6CisgICAgICAgICogaHRtbC9wYXJzZXIv
SFRNTFBhcnNlcklkaW9tcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXJpYWxpemVGb3JOdW1i
ZXJUeXBlKTogQWRkZWQgZm9yIERlY2ltYWwuCisgICAgICAgIChXZWJDb3JlOjpwYXJzZVRvRGVj
aW1hbEZvck51bWJlclR5cGUpOiBBZGRlZCBmb3IgRGVjaW1hbC4KKyAgICAgICAgKiBodG1sL3Bh
cnNlci9IVE1MUGFyc2VySWRpb21zLmg6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0RGVjaW1h
bFRvRG91YmxlKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0RG91YmxlVG9EZWNp
bWFsKTogQWRkZWQuCisgICAgICAgICogaHRtbC9zaGFkb3cvQ2FsZW5kYXJQaWNrZXJFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbGVuZGFyUGlja2VyRWxlbWVudDo6d3JpdGVEb2N1
bWVudCk6IFVzaW5nIERlY2ltYWwgaW5zdGVhZCBvZiBkb3VibGUuCisgICAgICAgICogaHRtbC9z
aGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNsaWRlclBv
c2l0aW9uKTogVXNpbmcgRGVjaW1hbCBpbnN0ZWFkIG9mIGRvdWJsZS4KKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclNsaWRlclRodW1iOjpsYXlvdXQpOiBkaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OlNsaWRlclRodW1iRWxlbWVudDo6c2V0UG9zaXRpb25Gcm9tUG9pbnQpOiBkaXR0by4KKworMjAx
Mi0wNi0wMSAgWW9zaGlmdW1pIElub3VlICA8eW9zaW5AY2hyb21pdW0ub3JnPgorCiAgICAgICAg
IFtQbGF0Zm9ybV1bRGVjaW1hbF0gVUludDEyODo6b3BlcmF0b3IvPSBjYWxscyBtYWtlVUludDEy
OCB3aXRoIHdyb25nIGFyZ3VtZW50IG9yZGVyCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04ODA0NAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jh
c2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAKaW5kZXggNGM3MzA5MTkxM2Q4MmRlNTk1ZGJjYzVk
MjIzZWIwZDkxYmNlOTRkNS4uODIzYTY4ZDY2ZDkyODYxYWZiZGJiNTQxMDVlMGYyZDcyOGNhNmYy
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5
cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBl
LmNwcApAQCAtMzMsNiArMzMsNyBAQAogCiAjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgog
I2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKICNp
bmNsdWRlICJLZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAiTG9jYWxpemVkRGF0ZS5oIgogI2lu
Y2x1ZGUgPGxpbWl0cz4KQEAgLTQ3LDI1ICs0OCwyNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1
c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAotc3RhdGlj
IGNvbnN0IGRvdWJsZSBtc2VjUGVyTWludXRlID0gNjAgKiAxMDAwOwotc3RhdGljIGNvbnN0IGRv
dWJsZSBtc2VjUGVyU2Vjb25kID0gMTAwMDsKK3N0YXRpYyBjb25zdCBpbnQgbXNlY1Blck1pbnV0
ZSA9IDYwICogMTAwMDsKK3N0YXRpYyBjb25zdCBpbnQgbXNlY1BlclNlY29uZCA9IDEwMDA7CiAK
IGRvdWJsZSBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OnZhbHVlQXNEYXRlKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gcGFyc2VUb0RvdWJsZShlbGVtZW50KCktPnZhbHVlKCksIERhdGVDb21wb25l
bnRzOjppbnZhbGlkTWlsbGlzZWNvbmRzKCkpOworICAgIHJldHVybiBjb252ZXJ0RGVjaW1hbFRv
RG91YmxlKHBhcnNlVG9EZWNpbWFsKGVsZW1lbnQoKS0+dmFsdWUoKSwgY29udmVydERvdWJsZVRv
RGVjaW1hbChEYXRlQ29tcG9uZW50czo6aW52YWxpZE1pbGxpc2Vjb25kcygpKSkpOwogfQogCiB2
b2lkIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6c2V0VmFsdWVBc0RhdGUoZG91YmxlIHZhbHVl
LCBFeGNlcHRpb25Db2RlJikgY29uc3QKIHsKLSAgICBlbGVtZW50KCktPnNldFZhbHVlKHNlcmlh
bGl6ZVdpdGhNaWxsaXNlY29uZHModmFsdWUpKTsKKyAgICBlbGVtZW50KCktPnNldFZhbHVlKHNl
cmlhbGl6ZVdpdGhNaWxsaXNlY29uZHMoY29udmVydERvdWJsZVRvRGVjaW1hbCh2YWx1ZSkpKTsK
IH0KIAogZG91YmxlIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6dmFsdWVBc051bWJlcigpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIHBhcnNlVG9Eb3VibGUoZWxlbWVudCgpLT52YWx1ZSgpLCBudW1l
cmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKSk7CisgICAgcmV0dXJuIGNvbnZlcnREZWNp
bWFsVG9Eb3VibGUocGFyc2VUb0RlY2ltYWwoZWxlbWVudCgpLT52YWx1ZSgpLCBEZWNpbWFsOjpu
YW4oKSkpOwogfQogCi12b2lkIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6c2V0VmFsdWVBc051
bWJlcihkb3VibGUgbmV3VmFsdWUsIFRleHRGaWVsZEV2ZW50QmVoYXZpb3IgZXZlbnRCZWhhdmlv
ciwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0Cit2b2lkIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6
c2V0VmFsdWVBc051bWJlcihjb25zdCBEZWNpbWFsJiBuZXdWYWx1ZSwgVGV4dEZpZWxkRXZlbnRC
ZWhhdmlvciBldmVudEJlaGF2aW9yLCBFeGNlcHRpb25Db2RlJikgY29uc3QKIHsKICAgICBlbGVt
ZW50KCktPnNldFZhbHVlKHNlcmlhbGl6ZShuZXdWYWx1ZSksIGV2ZW50QmVoYXZpb3IpOwogfQpA
QCAtODAsMTMgKzgxLDEzIEBAIGJvb2wgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjp0eXBlTWlz
bWF0Y2goKSBjb25zdAogICAgIHJldHVybiB0eXBlTWlzbWF0Y2hGb3IoZWxlbWVudCgpLT52YWx1
ZSgpKTsKIH0KIAotZG91YmxlIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6ZGVmYXVsdFZhbHVl
Rm9yU3RlcFVwKCkgY29uc3QKK0RlY2ltYWwgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpkZWZh
dWx0VmFsdWVGb3JTdGVwVXAoKSBjb25zdAogewogICAgIGRvdWJsZSBtcyA9IGN1cnJlbnRUaW1l
TVMoKTsKICAgICBkb3VibGUgdXRjT2Zmc2V0ID0gY2FsY3VsYXRlVVRDT2Zmc2V0KCk7CiAgICAg
ZG91YmxlIGRzdE9mZnNldCA9IGNhbGN1bGF0ZURTVE9mZnNldChtcywgdXRjT2Zmc2V0KTsKICAg
ICBpbnQgb2Zmc2V0ID0gc3RhdGljX2Nhc3Q8aW50PigodXRjT2Zmc2V0ICsgZHN0T2Zmc2V0KSAv
IG1zUGVyTWludXRlKTsKLSAgICByZXR1cm4gbXMgKyAob2Zmc2V0ICogbXNQZXJNaW51dGUpOwor
ICAgIHJldHVybiBjb252ZXJ0RG91YmxlVG9EZWNpbWFsKG1zICsgKG9mZnNldCAqIG1zUGVyTWlu
dXRlKSk7CiB9CiAKIGJvb2wgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjppc1N0ZXBwYWJsZSgp
IGNvbnN0CkBAIC0xMDgsMTQgKzEwOSwxNCBAQCB2b2lkIEJhc2VEYXRlQW5kVGltZUlucHV0VHlw
ZTo6aGFuZGxlV2hlZWxFdmVudChXaGVlbEV2ZW50KiBldmVudCkKICAgICAgICAgaGFuZGxlV2hl
ZWxFdmVudEZvclNwaW5CdXR0b24oZXZlbnQpOwogfQogCi1kb3VibGUgQmFzZURhdGVBbmRUaW1l
SW5wdXRUeXBlOjpwYXJzZVRvRG91YmxlKGNvbnN0IFN0cmluZyYgc3JjLCBkb3VibGUgZGVmYXVs
dFZhbHVlKSBjb25zdAorRGVjaW1hbCBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OnBhcnNlVG9E
ZWNpbWFsKGNvbnN0IFN0cmluZyYgc3JjLCBjb25zdCBEZWNpbWFsJiBkZWZhdWx0VmFsdWUpIGNv
bnN0CiB7CiAgICAgRGF0ZUNvbXBvbmVudHMgZGF0ZTsKICAgICBpZiAoIXBhcnNlVG9EYXRlQ29t
cG9uZW50cyhzcmMsICZkYXRlKSkKICAgICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTsKICAgICBk
b3VibGUgbXNlYyA9IGRhdGUubWlsbGlzZWNvbmRzU2luY2VFcG9jaCgpOwogICAgIEFTU0VSVChp
c2Zpbml0ZShtc2VjKSk7Ci0gICAgcmV0dXJuIG1zZWM7CisgICAgcmV0dXJuIGNvbnZlcnREb3Vi
bGVUb0RlY2ltYWwobXNlYyk7CiB9CiAKIGJvb2wgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpw
YXJzZVRvRGF0ZUNvbXBvbmVudHMoY29uc3QgU3RyaW5nJiBzb3VyY2UsIERhdGVDb21wb25lbnRz
KiBvdXQpIGNvbnN0CkBAIC0xMjgsOSArMTI5LDkgQEAgYm9vbCBCYXNlRGF0ZUFuZFRpbWVJbnB1
dFR5cGU6OnBhcnNlVG9EYXRlQ29tcG9uZW50cyhjb25zdCBTdHJpbmcmIHNvdXJjZSwgRGF0ZUMK
ICAgICByZXR1cm4gcGFyc2VUb0RhdGVDb21wb25lbnRzSW50ZXJuYWwoc291cmNlLmNoYXJhY3Rl
cnMoKSwgc291cmNlLmxlbmd0aCgpLCBvdXQpOwogfQogCi1TdHJpbmcgQmFzZURhdGVBbmRUaW1l
SW5wdXRUeXBlOjpzZXJpYWxpemUoZG91YmxlIHZhbHVlKSBjb25zdAorU3RyaW5nIEJhc2VEYXRl
QW5kVGltZUlucHV0VHlwZTo6c2VyaWFsaXplKGNvbnN0IERlY2ltYWwmIHZhbHVlKSBjb25zdAog
ewotICAgIGlmICghaXNmaW5pdGUodmFsdWUpKQorICAgIGlmICghdmFsdWUuaXNGaW5pdGUoKSkK
ICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIERhdGVDb21wb25lbnRzIGRhdGU7CiAgICAg
aWYgKCFzZXRNaWxsaXNlY29uZFRvRGF0ZUNvbXBvbmVudHModmFsdWUsICZkYXRlKSkKQEAgLTE0
MCwxNyArMTQxLDE3IEBAIFN0cmluZyBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OnNlcmlhbGl6
ZShkb3VibGUgdmFsdWUpIGNvbnN0CiAKIFN0cmluZyBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6
OnNlcmlhbGl6ZVdpdGhDb21wb25lbnRzKGNvbnN0IERhdGVDb21wb25lbnRzJiBkYXRlKSBjb25z
dAogewotICAgIGRvdWJsZSBzdGVwOworICAgIERlY2ltYWwgc3RlcDsKICAgICBpZiAoIWVsZW1l
bnQoKS0+Z2V0QWxsb3dlZFZhbHVlU3RlcCgmc3RlcCkpCiAgICAgICAgIHJldHVybiBkYXRlLnRv
U3RyaW5nKCk7Ci0gICAgaWYgKCFmbW9kKHN0ZXAsIG1zZWNQZXJNaW51dGUpKQorICAgIGlmIChz
dGVwLnJlbWFpbmRlcihtc2VjUGVyTWludXRlKS5pc1plcm8oKSkKICAgICAgICAgcmV0dXJuIGRh
dGUudG9TdHJpbmcoRGF0ZUNvbXBvbmVudHM6Ok5vbmUpOwotICAgIGlmICghZm1vZChzdGVwLCBt
c2VjUGVyU2Vjb25kKSkKKyAgICBpZiAoc3RlcC5yZW1haW5kZXIobXNlY1BlclNlY29uZCkuaXNa
ZXJvKCkpCiAgICAgICAgIHJldHVybiBkYXRlLnRvU3RyaW5nKERhdGVDb21wb25lbnRzOjpTZWNv
bmQpOwogICAgIHJldHVybiBkYXRlLnRvU3RyaW5nKERhdGVDb21wb25lbnRzOjpNaWxsaXNlY29u
ZCk7CiB9CiAKLVN0cmluZyBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OnNlcmlhbGl6ZVdpdGhN
aWxsaXNlY29uZHMoZG91YmxlIHZhbHVlKSBjb25zdAorU3RyaW5nIEJhc2VEYXRlQW5kVGltZUlu
cHV0VHlwZTo6c2VyaWFsaXplV2l0aE1pbGxpc2Vjb25kcyhjb25zdCBEZWNpbWFsJiB2YWx1ZSkg
Y29uc3QKIHsKICAgICByZXR1cm4gc2VyaWFsaXplKHZhbHVlKTsKIH0KQEAgLTE3OSw3ICsxODAs
OCBAQCBTdHJpbmcgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpjb252ZXJ0RnJvbVZpc2libGVW
YWx1ZShjb25zdCBTdHJpbmcmIHZpc2libGVWYQogICAgIGlmICghaXNmaW5pdGUocGFyc2VkVmFs
dWUpKQogICAgICAgICByZXR1cm4gdmlzaWJsZVZhbHVlOwogCi0gICAgcmV0dXJuIHNlcmlhbGl6
ZVdpdGhNaWxsaXNlY29uZHMocGFyc2VkVmFsdWUpOworICAgIGNvbnN0IERlY2ltYWwgdmFsdWUg
PSBjb252ZXJ0RG91YmxlVG9EZWNpbWFsKHBhcnNlZFZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWUu
aXNGaW5pdGUoKSA/IHNlcmlhbGl6ZVdpdGhNaWxsaXNlY29uZHModmFsdWUpIDogdmlzaWJsZVZh
bHVlOwogfQogCiBTdHJpbmcgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpzYW5pdGl6ZVZhbHVl
KGNvbnN0IFN0cmluZyYgcHJvcG9zZWRWYWx1ZSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5oCmluZGV4IGRhOTUxOTEwMTFjMDkzMDBjZmJk
NjIxZDIxNGQ3MjhmN2QwZGM3ODkuLmEzYzg5ZTkzMWI2MzQwNmI0MzljNThlYjA2MDM0MWIxMWMw
NmQ4MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5w
dXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5
cGUuaApAQCAtNDIsMjUgKzQyLDI1IEBAIGNsYXNzIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZSA6
IHB1YmxpYyBUZXh0RmllbGRJbnB1dFR5cGUgewogcHJvdGVjdGVkOgogICAgIEJhc2VEYXRlQW5k
VGltZUlucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50KiBlbGVtZW50KSA6IFRleHRGaWVsZElucHV0
VHlwZShlbGVtZW50KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlS2V5ZG93bkV2ZW50KEtl
eWJvYXJkRXZlbnQqKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGRvdWJsZSBwYXJzZVRvRG91Ymxl
KGNvbnN0IFN0cmluZyYsIGRvdWJsZSkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBEZWNp
bWFsIHBhcnNlVG9EZWNpbWFsKGNvbnN0IFN0cmluZyYsIGNvbnN0IERlY2ltYWwmKSBjb25zdCBP
VkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgcGFyc2VUb0RhdGVDb21wb25lbnRzKGNvbnN0IFN0
cmluZyYsIERhdGVDb21wb25lbnRzKikgY29uc3QgT1ZFUlJJREU7CiAgICAgU3RyaW5nIHNlcmlh
bGl6ZVdpdGhDb21wb25lbnRzKGNvbnN0IERhdGVDb21wb25lbnRzJikgY29uc3Q7CiAKIHByaXZh
dGU6CiAgICAgdmlydHVhbCBib29sIHBhcnNlVG9EYXRlQ29tcG9uZW50c0ludGVybmFsKGNvbnN0
IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoLCBEYXRlQ29tcG9uZW50cyopIGNvbnN0ID0gMDsKLSAg
ICB2aXJ0dWFsIGJvb2wgc2V0TWlsbGlzZWNvbmRUb0RhdGVDb21wb25lbnRzKGRvdWJsZSwgRGF0
ZUNvbXBvbmVudHMqKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIHNldE1pbGxpc2Vjb25k
VG9EYXRlQ29tcG9uZW50cyhjb25zdCBEZWNpbWFsJiwgRGF0ZUNvbXBvbmVudHMqKSBjb25zdCA9
IDA7CiAgICAgdmlydHVhbCBEYXRlQ29tcG9uZW50czo6VHlwZSBkYXRlVHlwZSgpIGNvbnN0ID0g
MDsKICAgICB2aXJ0dWFsIGRvdWJsZSB2YWx1ZUFzRGF0ZSgpIGNvbnN0IE9WRVJSSURFOwogICAg
IHZpcnR1YWwgdm9pZCBzZXRWYWx1ZUFzRGF0ZShkb3VibGUsIEV4Y2VwdGlvbkNvZGUmKSBjb25z
dCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGRvdWJsZSB2YWx1ZUFzTnVtYmVyKCkgY29uc3QgT1ZF
UlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHNldFZhbHVlQXNOdW1iZXIoZG91YmxlLCBUZXh0Rmll
bGRFdmVudEJlaGF2aW9yLCBFeGNlcHRpb25Db2RlJikgY29uc3QgT1ZFUlJJREU7CisgICAgdmly
dHVhbCB2b2lkIHNldFZhbHVlQXNOdW1iZXIoY29uc3QgRGVjaW1hbCYsIFRleHRGaWVsZEV2ZW50
QmVoYXZpb3IsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJv
b2wgdHlwZU1pc21hdGNoRm9yKGNvbnN0IFN0cmluZyYpIGNvbnN0IE9WRVJSSURFOwogICAgIHZp
cnR1YWwgYm9vbCB0eXBlTWlzbWF0Y2goKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGRv
dWJsZSBkZWZhdWx0VmFsdWVGb3JTdGVwVXAoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IERlY2ltYWwgZGVmYXVsdFZhbHVlRm9yU3RlcFVwKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCBib29sIGlzU3RlcHBhYmxlKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lk
IGhhbmRsZVdoZWVsRXZlbnQoV2hlZWxFdmVudCopIE9WRVJSSURFOwotICAgIHZpcnR1YWwgU3Ry
aW5nIHNlcmlhbGl6ZShkb3VibGUpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgU3RyaW5n
IHNlcmlhbGl6ZVdpdGhNaWxsaXNlY29uZHMoZG91YmxlKSBjb25zdDsKKyAgICB2aXJ0dWFsIFN0
cmluZyBzZXJpYWxpemUoY29uc3QgRGVjaW1hbCYpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1
YWwgU3RyaW5nIHNlcmlhbGl6ZVdpdGhNaWxsaXNlY29uZHMoY29uc3QgRGVjaW1hbCYpIGNvbnN0
OwogICAgIHZpcnR1YWwgU3RyaW5nIGxvY2FsaXplVmFsdWUoY29uc3QgU3RyaW5nJikgY29uc3Qg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCBTdHJpbmcgdmlzaWJsZVZhbHVlKCkgY29uc3QgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCBTdHJpbmcgY29udmVydEZyb21WaXNpYmxlVmFsdWUoY29uc3QgU3Ry
aW5nJikgY29uc3QgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Rh
dGVJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlSW5wdXRUeXBlLmNwcApp
bmRleCA4OGIzMTIwNjU1NDJmMjhiZjBmOWQ4ZDYxMzNlZTFiOTFlYmIyNjE5Li5kOGUxMTMyZWVm
ZjJhOWQ5NzZjOGM0ZWQ5OTljYmUzZDYzYTU2NzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0RhdGVJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZUlu
cHV0VHlwZS5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJEYXRlQ29tcG9uZW50cy5o
IgogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIK
KyNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVkZSAiS2V5Ym9hcmRFdmVudC5o
IgogI2luY2x1ZGUgIkxvY2FsaXplZERhdGUuaCIKICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5o
PgpAQCAtNDUsOSArNDYsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFj
ZSBIVE1MTmFtZXM7CiAKLXN0YXRpYyBjb25zdCBkb3VibGUgZGF0ZURlZmF1bHRTdGVwID0gMS4w
Owotc3RhdGljIGNvbnN0IGRvdWJsZSBkYXRlRGVmYXVsdFN0ZXBCYXNlID0gMC4wOwotc3RhdGlj
IGNvbnN0IGRvdWJsZSBkYXRlU3RlcFNjYWxlRmFjdG9yID0gODY0MDAwMDAuMDsKK3N0YXRpYyBj
b25zdCBpbnQgIGRhdGVEZWZhdWx0U3RlcCA9IDE7CitzdGF0aWMgY29uc3QgaW50ICBkYXRlRGVm
YXVsdFN0ZXBCYXNlID0gMDsKK3N0YXRpYyBjb25zdCBpbnQgIGRhdGVTdGVwU2NhbGVGYWN0b3Ig
PSA4NjQwMDAwMDsKIAogaW5saW5lIERhdGVJbnB1dFR5cGU6OkRhdGVJbnB1dFR5cGUoSFRNTElu
cHV0RWxlbWVudCogZWxlbWVudCkKICAgICA6IEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZShlbGVt
ZW50KQpAQCAtNzMsMTAgKzc0LDEwIEBAIFN0ZXBSYW5nZSBEYXRlSW5wdXRUeXBlOjpjcmVhdGVT
dGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5nIGFueVN0ZXBIYW5kbGluZykgY29uc3QKIHsKICAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0ZXBSYW5nZTo6U3RlcERlc2NyaXB0aW9uLCBzdGVw
RGVzY3JpcHRpb24sIChkYXRlRGVmYXVsdFN0ZXAsIGRhdGVEZWZhdWx0U3RlcEJhc2UsIGRhdGVT
dGVwU2NhbGVGYWN0b3IsIFN0ZXBSYW5nZTo6UGFyc2VkU3RlcFZhbHVlU2hvdWxkQmVJbnRlZ2Vy
KSk7CiAKLSAgICBkb3VibGUgc3RlcEJhc2UgPSBwYXJzZVRvRG91YmxlKGVsZW1lbnQoKS0+ZmFz
dEdldEF0dHJpYnV0ZShtaW5BdHRyKSwgMCk7Ci0gICAgZG91YmxlIG1pbmltdW0gPSBwYXJzZVRv
RG91YmxlKGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShtaW5BdHRyKSwgRGF0ZUNvbXBvbmVu
dHM6Om1pbmltdW1EYXRlKCkpOwotICAgIGRvdWJsZSBtYXhpbXVtID0gcGFyc2VUb0RvdWJsZShl
bGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUobWF4QXR0ciksIERhdGVDb21wb25lbnRzOjptYXhp
bXVtRGF0ZSgpKTsKLSAgICBTdGVwUmFuZ2U6OkRvdWJsZVdpdGhEZWNpbWFsUGxhY2VzT3JNaXNz
aW5nIHN0ZXAgPSBTdGVwUmFuZ2U6OnBhcnNlU3RlcChhbnlTdGVwSGFuZGxpbmcsIHN0ZXBEZXNj
cmlwdGlvbiwgZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKHN0ZXBBdHRyKSk7CisgICAgY29u
c3QgRGVjaW1hbCBzdGVwQmFzZSA9IHBhcnNlVG9EZWNpbWFsKGVsZW1lbnQoKS0+ZmFzdEdldEF0
dHJpYnV0ZShtaW5BdHRyKSwgMCk7CisgICAgY29uc3QgRGVjaW1hbCBtaW5pbXVtID0gcGFyc2VU
b0RlY2ltYWwoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpLCBjb252ZXJ0RG91
YmxlVG9EZWNpbWFsKERhdGVDb21wb25lbnRzOjptaW5pbXVtRGF0ZSgpKSk7CisgICAgY29uc3Qg
RGVjaW1hbCBtYXhpbXVtID0gcGFyc2VUb0RlY2ltYWwoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmli
dXRlKG1heEF0dHIpLCBjb252ZXJ0RG91YmxlVG9EZWNpbWFsKERhdGVDb21wb25lbnRzOjptYXhp
bXVtRGF0ZSgpKSk7CisgICAgY29uc3QgU3RlcFJhbmdlOjpEZWNpbWFsT3JNaXNzaW5nIHN0ZXAg
PSBTdGVwUmFuZ2U6OnBhcnNlU3RlcChhbnlTdGVwSGFuZGxpbmcsIHN0ZXBEZXNjcmlwdGlvbiwg
ZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKHN0ZXBBdHRyKSk7CiAgICAgcmV0dXJuIFN0ZXBS
YW5nZShzdGVwQmFzZSwgbWluaW11bSwgbWF4aW11bSwgc3RlcCwgc3RlcERlc2NyaXB0aW9uKTsK
IH0KIApAQCAtODcsMTAgKzg4LDEwIEBAIGJvb2wgRGF0ZUlucHV0VHlwZTo6cGFyc2VUb0RhdGVD
b21wb25lbnRzSW50ZXJuYWwoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnCiAgICAgcmV0
dXJuIG91dC0+cGFyc2VEYXRlKGNoYXJhY3RlcnMsIGxlbmd0aCwgMCwgZW5kKSAmJiBlbmQgPT0g
bGVuZ3RoOwogfQogCi1ib29sIERhdGVJbnB1dFR5cGU6OnNldE1pbGxpc2Vjb25kVG9EYXRlQ29t
cG9uZW50cyhkb3VibGUgdmFsdWUsIERhdGVDb21wb25lbnRzKiBkYXRlKSBjb25zdAorYm9vbCBE
YXRlSW5wdXRUeXBlOjpzZXRNaWxsaXNlY29uZFRvRGF0ZUNvbXBvbmVudHMoY29uc3QgRGVjaW1h
bCYgdmFsdWUsIERhdGVDb21wb25lbnRzKiBkYXRlKSBjb25zdAogewogICAgIEFTU0VSVChkYXRl
KTsKLSAgICByZXR1cm4gZGF0ZS0+c2V0TWlsbGlzZWNvbmRzU2luY2VFcG9jaEZvckRhdGUodmFs
dWUpOworICAgIHJldHVybiBkYXRlLT5zZXRNaWxsaXNlY29uZHNTaW5jZUVwb2NoRm9yRGF0ZShj
b252ZXJ0RGVjaW1hbFRvRG91YmxlKHZhbHVlKSk7CiB9CiAKIGJvb2wgRGF0ZUlucHV0VHlwZTo6
aXNEYXRlRmllbGQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRl
SW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVJbnB1dFR5cGUuaAppbmRleCAy
ZmFkYzQ3YjQ4Y2QwYTM5ZTAwZjQzYjNiZjExYmEwYTliMjFjMDFmLi44Mzg0M2ExZGFkYjU1YWQ0
OWI4ZTU1Njc3MTFhNWFmMTgzY2RlYWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0RhdGVJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVJbnB1dFR5cGUu
aApAQCAtNTAsNyArNTAsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgRGF0ZUNvbXBvbmVudHM6
OlR5cGUgZGF0ZVR5cGUoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIFN0ZXBSYW5nZSBj
cmVhdGVTdGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5nKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0
dWFsIGJvb2wgcGFyc2VUb0RhdGVDb21wb25lbnRzSW50ZXJuYWwoY29uc3QgVUNoYXIqLCB1bnNp
Z25lZCBsZW5ndGgsIERhdGVDb21wb25lbnRzKikgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVh
bCBib29sIHNldE1pbGxpc2Vjb25kVG9EYXRlQ29tcG9uZW50cyhkb3VibGUsIERhdGVDb21wb25l
bnRzKikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHNldE1pbGxpc2Vjb25kVG9E
YXRlQ29tcG9uZW50cyhjb25zdCBEZWNpbWFsJiwgRGF0ZUNvbXBvbmVudHMqKSBjb25zdCBPVkVS
UklERTsKICAgICB2aXJ0dWFsIGJvb2wgaXNEYXRlRmllbGQoKSBjb25zdCBPVkVSUklERTsKICNp
ZiBFTkFCTEUoQ0FMRU5EQVJfUElDS0VSKQogICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVTaGFkb3dT
dWJ0cmVlKCkgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVU
aW1lSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZVRpbWVJbnB1dFR5cGUu
Y3BwCmluZGV4IDZjZWZkOWQ4ZDg4YTRhY2JlYTc0OWFhMmQxZjZkZDBhYjQzZGE3ODIuLjEyYmM3
NmJjMGJiZTczZjU1ODc2MDQ1N2EyNTE3NmM3YmM5ZDllOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRGF0ZVRpbWVJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvRGF0ZVRpbWVJbnB1dFR5cGUuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiRGF0
ZUNvbXBvbmVudHMuaCIKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSAi
SFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgPHd0
Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKQEAgLTQzLDkg
KzQ0LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVz
OwogCi1zdGF0aWMgY29uc3QgZG91YmxlIGRhdGVUaW1lRGVmYXVsdFN0ZXAgPSA2MC4wOwotc3Rh
dGljIGNvbnN0IGRvdWJsZSBkYXRlVGltZURlZmF1bHRTdGVwQmFzZSA9IDAuMDsKLXN0YXRpYyBj
b25zdCBkb3VibGUgZGF0ZVRpbWVTdGVwU2NhbGVGYWN0b3IgPSAxMDAwLjA7CitzdGF0aWMgY29u
c3QgaW50IGRhdGVUaW1lRGVmYXVsdFN0ZXAgPSA2MDsKK3N0YXRpYyBjb25zdCBpbnQgZGF0ZVRp
bWVEZWZhdWx0U3RlcEJhc2UgPSAwOworc3RhdGljIGNvbnN0IGludCBkYXRlVGltZVN0ZXBTY2Fs
ZUZhY3RvciA9IDEwMDA7CiAKIFBhc3NPd25QdHI8SW5wdXRUeXBlPiBEYXRlVGltZUlucHV0VHlw
ZTo6Y3JlYXRlKEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQpCiB7CkBAIC02MiwxOSArNjMsMTkg
QEAgRGF0ZUNvbXBvbmVudHM6OlR5cGUgRGF0ZVRpbWVJbnB1dFR5cGU6OmRhdGVUeXBlKCkgY29u
c3QKICAgICByZXR1cm4gRGF0ZUNvbXBvbmVudHM6OkRhdGVUaW1lOwogfQogCi1kb3VibGUgRGF0
ZVRpbWVJbnB1dFR5cGU6OmRlZmF1bHRWYWx1ZUZvclN0ZXBVcCgpIGNvbnN0CitEZWNpbWFsIERh
dGVUaW1lSW5wdXRUeXBlOjpkZWZhdWx0VmFsdWVGb3JTdGVwVXAoKSBjb25zdAogewotICAgIHJl
dHVybiBjdXJyZW50VGltZU1TKCk7CisgICAgcmV0dXJuIGNvbnZlcnREb3VibGVUb0RlY2ltYWwo
Y3VycmVudFRpbWVNUygpKTsKIH0KIAogU3RlcFJhbmdlIERhdGVUaW1lSW5wdXRUeXBlOjpjcmVh
dGVTdGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5nIGFueVN0ZXBIYW5kbGluZykgY29uc3QKIHsKICAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0ZXBSYW5nZTo6U3RlcERlc2NyaXB0aW9uLCBz
dGVwRGVzY3JpcHRpb24sIChkYXRlVGltZURlZmF1bHRTdGVwLCBkYXRlVGltZURlZmF1bHRTdGVw
QmFzZSwgZGF0ZVRpbWVTdGVwU2NhbGVGYWN0b3IsIFN0ZXBSYW5nZTo6U2NhbGVkU3RlcFZhbHVl
U2hvdWxkQmVJbnRlZ2VyKSk7CiAKLSAgICBkb3VibGUgc3RlcEJhc2UgPSBwYXJzZVRvRG91Ymxl
KGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShtaW5BdHRyKSwgMCk7Ci0gICAgZG91YmxlIG1p
bmltdW0gPSBwYXJzZVRvRG91YmxlKGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShtaW5BdHRy
KSwgRGF0ZUNvbXBvbmVudHM6Om1pbmltdW1EYXRlVGltZSgpKTsKLSAgICBkb3VibGUgbWF4aW11
bSA9IHBhcnNlVG9Eb3VibGUoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1heEF0dHIpLCBE
YXRlQ29tcG9uZW50czo6bWF4aW11bURhdGVUaW1lKCkpOwotICAgIFN0ZXBSYW5nZTo6RG91Ymxl
V2l0aERlY2ltYWxQbGFjZXNPck1pc3Npbmcgc3RlcCA9IFN0ZXBSYW5nZTo6cGFyc2VTdGVwKGFu
eVN0ZXBIYW5kbGluZywgc3RlcERlc2NyaXB0aW9uLCBlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1
dGUoc3RlcEF0dHIpKTsKKyAgICBjb25zdCBEZWNpbWFsIHN0ZXBCYXNlID0gcGFyc2VUb0RlY2lt
YWwoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpLCAwKTsKKyAgICBjb25zdCBE
ZWNpbWFsIG1pbmltdW0gPSBwYXJzZVRvRGVjaW1hbChlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1
dGUobWluQXR0ciksIGNvbnZlcnREb3VibGVUb0RlY2ltYWwoRGF0ZUNvbXBvbmVudHM6Om1pbmlt
dW1EYXRlVGltZSgpKSk7CisgICAgY29uc3QgRGVjaW1hbCBtYXhpbXVtID0gcGFyc2VUb0RlY2lt
YWwoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1heEF0dHIpLCBjb252ZXJ0RG91YmxlVG9E
ZWNpbWFsKERhdGVDb21wb25lbnRzOjptYXhpbXVtRGF0ZVRpbWUoKSkpOworICAgIFN0ZXBSYW5n
ZTo6RGVjaW1hbE9yTWlzc2luZyBzdGVwID0gU3RlcFJhbmdlOjpwYXJzZVN0ZXAoYW55U3RlcEhh
bmRsaW5nLCBzdGVwRGVzY3JpcHRpb24sIGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShzdGVw
QXR0cikpOwogICAgIHJldHVybiBTdGVwUmFuZ2Uoc3RlcEJhc2UsIG1pbmltdW0sIG1heGltdW0s
IHN0ZXAsIHN0ZXBEZXNjcmlwdGlvbik7CiB9CiAKQEAgLTg1LDEwICs4NiwxMCBAQCBib29sIERh
dGVUaW1lSW5wdXRUeXBlOjpwYXJzZVRvRGF0ZUNvbXBvbmVudHNJbnRlcm5hbChjb25zdCBVQ2hh
ciogY2hhcmFjdGVycywgdQogICAgIHJldHVybiBvdXQtPnBhcnNlRGF0ZVRpbWUoY2hhcmFjdGVy
cywgbGVuZ3RoLCAwLCBlbmQpICYmIGVuZCA9PSBsZW5ndGg7CiB9CiAKLWJvb2wgRGF0ZVRpbWVJ
bnB1dFR5cGU6OnNldE1pbGxpc2Vjb25kVG9EYXRlQ29tcG9uZW50cyhkb3VibGUgdmFsdWUsIERh
dGVDb21wb25lbnRzKiBkYXRlKSBjb25zdAorYm9vbCBEYXRlVGltZUlucHV0VHlwZTo6c2V0TWls
bGlzZWNvbmRUb0RhdGVDb21wb25lbnRzKGNvbnN0IERlY2ltYWwmIHZhbHVlLCBEYXRlQ29tcG9u
ZW50cyogZGF0ZSkgY29uc3QKIHsKICAgICBBU1NFUlQoZGF0ZSk7Ci0gICAgcmV0dXJuIGRhdGUt
PnNldE1pbGxpc2Vjb25kc1NpbmNlRXBvY2hGb3JEYXRlVGltZSh2YWx1ZSk7CisgICAgcmV0dXJu
IGRhdGUtPnNldE1pbGxpc2Vjb25kc1NpbmNlRXBvY2hGb3JEYXRlVGltZShjb252ZXJ0RGVjaW1h
bFRvRG91YmxlKHZhbHVlKSk7CiB9CiAKIGJvb2wgRGF0ZVRpbWVJbnB1dFR5cGU6OmlzRGF0ZVRp
bWVGaWVsZCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVUaW1l
SW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVUaW1lSW5wdXRUeXBlLmgKaW5k
ZXggZTgwODg2ZjMyYWI5ZGU4NTQ0NGMxOGM4OTM1YTk3MWNkMGU0MjdlZS4uNmVlYzA4NmUwYmIx
YjZjNzE5MmEzNmVlMGNiM2YyYWNlODkzOGRlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9EYXRlVGltZUlucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZVRp
bWVJbnB1dFR5cGUuaApAQCAtNDYsOSArNDYsOSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgY29u
c3QgQXRvbWljU3RyaW5nJiBmb3JtQ29udHJvbFR5cGUoKSBjb25zdCBPVkVSUklERTsKICAgICB2
aXJ0dWFsIERhdGVDb21wb25lbnRzOjpUeXBlIGRhdGVUeXBlKCkgY29uc3QgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCBTdGVwUmFuZ2UgY3JlYXRlU3RlcFJhbmdlKEFueVN0ZXBIYW5kbGluZykgY29u
c3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBkb3VibGUgZGVmYXVsdFZhbHVlRm9yU3RlcFVwKCkg
Y29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBEZWNpbWFsIGRlZmF1bHRWYWx1ZUZvclN0ZXBV
cCgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBwYXJzZVRvRGF0ZUNvbXBvbmVu
dHNJbnRlcm5hbChjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCwgRGF0ZUNvbXBvbmVudHMq
KSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgc2V0TWlsbGlzZWNvbmRUb0RhdGVD
b21wb25lbnRzKGRvdWJsZSwgRGF0ZUNvbXBvbmVudHMqKSBjb25zdCBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIGJvb2wgc2V0TWlsbGlzZWNvbmRUb0RhdGVDb21wb25lbnRzKGNvbnN0IERlY2ltYWwm
LCBEYXRlQ29tcG9uZW50cyopIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBpc0Rh
dGVUaW1lRmllbGQoKSBjb25zdCBPVkVSUklERTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRGF0ZVRpbWVMb2NhbElucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0RhdGVUaW1lTG9jYWxJbnB1dFR5cGUuY3BwCmluZGV4IGI2NTcwNTBlZGNhYTAyZjIzMDk1
MWEzYjgzYjczNTRmYTc2MTVlNDMuLjNhY2U1NWJjYzljNTc2OGVkOGNmZjFhNmY0MTI3MjRhODc5
YTcwMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZVRpbWVMb2NhbElucHV0
VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlVGltZUxvY2FsSW5wdXRUeXBl
LmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkRhdGVDb21wb25lbnRzLmgiCiAjaW5j
bHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1
ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCiAj
aWYgRU5BQkxFKElOUFVUX1RZUEVfREFURVRJTUVMT0NBTCkKQEAgLTQyLDkgKzQzLDkgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1zdGF0aWMg
Y29uc3QgZG91YmxlIGRhdGVUaW1lTG9jYWxEZWZhdWx0U3RlcCA9IDYwLjA7Ci1zdGF0aWMgY29u
c3QgZG91YmxlIGRhdGVUaW1lTG9jYWxEZWZhdWx0U3RlcEJhc2UgPSAwLjA7Ci1zdGF0aWMgY29u
c3QgZG91YmxlIGRhdGVUaW1lTG9jYWxTdGVwU2NhbGVGYWN0b3IgPSAxMDAwLjA7CitzdGF0aWMg
Y29uc3QgaW50IGRhdGVUaW1lTG9jYWxEZWZhdWx0U3RlcCA9IDYwOworc3RhdGljIGNvbnN0IGlu
dCBkYXRlVGltZUxvY2FsRGVmYXVsdFN0ZXBCYXNlID0gMDsKK3N0YXRpYyBjb25zdCBpbnQgZGF0
ZVRpbWVMb2NhbFN0ZXBTY2FsZUZhY3RvciA9IDEwMDA7CiAKIFBhc3NPd25QdHI8SW5wdXRUeXBl
PiBEYXRlVGltZUxvY2FsSW5wdXRUeXBlOjpjcmVhdGUoSFRNTElucHV0RWxlbWVudCogZWxlbWVu
dCkKIHsKQEAgLTc3LDEwICs3OCwxMCBAQCBTdGVwUmFuZ2UgRGF0ZVRpbWVMb2NhbElucHV0VHlw
ZTo6Y3JlYXRlU3RlcFJhbmdlKEFueVN0ZXBIYW5kbGluZyBhbnlTdGVwSGFuZGxpbgogewogICAg
IERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RlcFJhbmdlOjpTdGVwRGVzY3JpcHRpb24sIHN0
ZXBEZXNjcmlwdGlvbiwgKGRhdGVUaW1lTG9jYWxEZWZhdWx0U3RlcCwgZGF0ZVRpbWVMb2NhbERl
ZmF1bHRTdGVwQmFzZSwgZGF0ZVRpbWVMb2NhbFN0ZXBTY2FsZUZhY3RvciwgU3RlcFJhbmdlOjpT
Y2FsZWRTdGVwVmFsdWVTaG91bGRCZUludGVnZXIpKTsKIAotICAgIGRvdWJsZSBzdGVwQmFzZSA9
IHBhcnNlVG9Eb3VibGUoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpLCAwKTsK
LSAgICBkb3VibGUgbWluaW11bSA9IHBhcnNlVG9Eb3VibGUoZWxlbWVudCgpLT5mYXN0R2V0QXR0
cmlidXRlKG1pbkF0dHIpLCBEYXRlQ29tcG9uZW50czo6bWluaW11bURhdGVUaW1lKCkpOwotICAg
IGRvdWJsZSBtYXhpbXVtID0gcGFyc2VUb0RvdWJsZShlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1
dGUobWF4QXR0ciksIERhdGVDb21wb25lbnRzOjptYXhpbXVtRGF0ZVRpbWUoKSk7Ci0gICAgU3Rl
cFJhbmdlOjpEb3VibGVXaXRoRGVjaW1hbFBsYWNlc09yTWlzc2luZyBzdGVwID0gU3RlcFJhbmdl
OjpwYXJzZVN0ZXAoYW55U3RlcEhhbmRsaW5nLCBzdGVwRGVzY3JpcHRpb24sIGVsZW1lbnQoKS0+
ZmFzdEdldEF0dHJpYnV0ZShzdGVwQXR0cikpOworICAgIGNvbnN0IERlY2ltYWwgc3RlcEJhc2Ug
PSBwYXJzZVRvRGVjaW1hbChlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUobWluQXR0ciksIDAp
OworICAgIGNvbnN0IERlY2ltYWwgbWluaW11bSA9IHBhcnNlVG9EZWNpbWFsKGVsZW1lbnQoKS0+
ZmFzdEdldEF0dHJpYnV0ZShtaW5BdHRyKSwgY29udmVydERvdWJsZVRvRGVjaW1hbChEYXRlQ29t
cG9uZW50czo6bWluaW11bURhdGVUaW1lKCkpKTsKKyAgICBjb25zdCBEZWNpbWFsIG1heGltdW0g
PSBwYXJzZVRvRGVjaW1hbChlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUobWF4QXR0ciksIGNv
bnZlcnREb3VibGVUb0RlY2ltYWwoRGF0ZUNvbXBvbmVudHM6Om1heGltdW1EYXRlVGltZSgpKSk7
CisgICAgY29uc3QgU3RlcFJhbmdlOjpEZWNpbWFsT3JNaXNzaW5nIHN0ZXAgPSBTdGVwUmFuZ2U6
OnBhcnNlU3RlcChhbnlTdGVwSGFuZGxpbmcsIHN0ZXBEZXNjcmlwdGlvbiwgZWxlbWVudCgpLT5m
YXN0R2V0QXR0cmlidXRlKHN0ZXBBdHRyKSk7CiAgICAgcmV0dXJuIFN0ZXBSYW5nZShzdGVwQmFz
ZSwgbWluaW11bSwgbWF4aW11bSwgc3RlcCwgc3RlcERlc2NyaXB0aW9uKTsKIH0KIApAQCAtOTEs
MTAgKzkyLDEwIEBAIGJvb2wgRGF0ZVRpbWVMb2NhbElucHV0VHlwZTo6cGFyc2VUb0RhdGVDb21w
b25lbnRzSW50ZXJuYWwoY29uc3QgVUNoYXIqIGNoYXJhY3RlCiAgICAgcmV0dXJuIG91dC0+cGFy
c2VEYXRlVGltZUxvY2FsKGNoYXJhY3RlcnMsIGxlbmd0aCwgMCwgZW5kKSAmJiBlbmQgPT0gbGVu
Z3RoOwogfQogCi1ib29sIERhdGVUaW1lTG9jYWxJbnB1dFR5cGU6OnNldE1pbGxpc2Vjb25kVG9E
YXRlQ29tcG9uZW50cyhkb3VibGUgdmFsdWUsIERhdGVDb21wb25lbnRzKiBkYXRlKSBjb25zdAor
Ym9vbCBEYXRlVGltZUxvY2FsSW5wdXRUeXBlOjpzZXRNaWxsaXNlY29uZFRvRGF0ZUNvbXBvbmVu
dHMoY29uc3QgRGVjaW1hbCYgdmFsdWUsIERhdGVDb21wb25lbnRzKiBkYXRlKSBjb25zdAogewog
ICAgIEFTU0VSVChkYXRlKTsKLSAgICByZXR1cm4gZGF0ZS0+c2V0TWlsbGlzZWNvbmRzU2luY2VF
cG9jaEZvckRhdGVUaW1lTG9jYWwodmFsdWUpOworICAgIHJldHVybiBkYXRlLT5zZXRNaWxsaXNl
Y29uZHNTaW5jZUVwb2NoRm9yRGF0ZVRpbWVMb2NhbChjb252ZXJ0RGVjaW1hbFRvRG91YmxlKHZh
bHVlKSk7CiB9CiAKIGJvb2wgRGF0ZVRpbWVMb2NhbElucHV0VHlwZTo6aXNEYXRlVGltZUxvY2Fs
RmllbGQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlVGltZUxv
Y2FsSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVUaW1lTG9jYWxJbnB1dFR5
cGUuaAppbmRleCBjYTQwYjM3NzRkODI4ZGY0NDNmYzJlYjkwYTgxZGYxZGJkOTNkYzIzLi43NjY1
YThlY2IyNmViYTllZWJiYzVkN2Y1OGNhZDljNWRjYzA1NGNjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0RhdGVUaW1lTG9jYWxJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0RhdGVUaW1lTG9jYWxJbnB1dFR5cGUuaApAQCAtNDksNyArNDksNyBAQCBwcml2YXRl
OgogICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZUFzRGF0ZShkb3VibGUsIEV4Y2VwdGlvbkNvZGUm
KSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIFN0ZXBSYW5nZSBjcmVhdGVTdGVwUmFuZ2Uo
QW55U3RlcEhhbmRsaW5nKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgcGFyc2VUb0RhdGVDb21w
b25lbnRzSW50ZXJuYWwoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgsIERhdGVDb21wb25l
bnRzKikgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIHNldE1pbGxpc2Vjb25kVG9E
YXRlQ29tcG9uZW50cyhkb3VibGUsIERhdGVDb21wb25lbnRzKikgY29uc3QgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCBib29sIHNldE1pbGxpc2Vjb25kVG9EYXRlQ29tcG9uZW50cyhjb25zdCBEZWNp
bWFsJiwgRGF0ZUNvbXBvbmVudHMqKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wg
aXNEYXRlVGltZUxvY2FsRmllbGQoKSBjb25zdCBPVkVSUklERTsKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IDkyNDhmMGJjMjc5MmRhMzZjODZmNTJj
NWFmZGEzYmMyOGFiMjkxODAuLmNjZmUzOGJlMjk5MDBkMDcyYTJhNGE0MmNmY2ZhOTdlMDYzNWIz
N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApAQCAtMjczLDcg
KzI3Myw3IEBAIGJvb2wgSFRNTElucHV0RWxlbWVudDo6c3RlcE1pc21hdGNoKCkgY29uc3QKICAg
ICByZXR1cm4gd2lsbFZhbGlkYXRlKCkgJiYgbV9pbnB1dFR5cGUtPnN0ZXBNaXNtYXRjaCh2YWx1
ZSgpKTsKIH0KIAotYm9vbCBIVE1MSW5wdXRFbGVtZW50OjpnZXRBbGxvd2VkVmFsdWVTdGVwKGRv
dWJsZSogc3RlcCkgY29uc3QKK2Jvb2wgSFRNTElucHV0RWxlbWVudDo6Z2V0QWxsb3dlZFZhbHVl
U3RlcChEZWNpbWFsKiBzdGVwKSBjb25zdAogewogICAgIHJldHVybiBtX2lucHV0VHlwZS0+Z2V0
QWxsb3dlZFZhbHVlU3RlcChzdGVwKTsKIH0KQEAgLTk2MSw2ICs5NjEsMTUgQEAgdm9pZCBIVE1M
SW5wdXRFbGVtZW50OjpzZXRWYWx1ZUFzTnVtYmVyKGRvdWJsZSBuZXdWYWx1ZSwgRXhjZXB0aW9u
Q29kZSYgZWMsIFRleHQKICAgICBtX2lucHV0VHlwZS0+c2V0VmFsdWVBc051bWJlcihuZXdWYWx1
ZSwgZXZlbnRCZWhhdmlvciwgZWMpOwogfQogCit2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnNldFZh
bHVlQXNOdW1iZXIoY29uc3QgRGVjaW1hbCYgbmV3VmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjLCBU
ZXh0RmllbGRFdmVudEJlaGF2aW9yIGV2ZW50QmVoYXZpb3IpCit7CisgICAgaWYgKCFuZXdWYWx1
ZS5pc0Zpbml0ZSgpKSB7CisgICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgbV9pbnB1dFR5cGUtPnNldFZhbHVlQXNOdW1iZXIobmV3VmFs
dWUsIGV2ZW50QmVoYXZpb3IsIGVjKTsKK30KKwogU3RyaW5nIEhUTUxJbnB1dEVsZW1lbnQ6OnBs
YWNlaG9sZGVyKCkgY29uc3QKIHsKICAgICByZXR1cm4gZmFzdEdldEF0dHJpYnV0ZShwbGFjZWhv
bGRlckF0dHIpLnN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
SW5wdXRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaApp
bmRleCA5NzU2ZTRmYzQwOTcwM2VjYmYzNzdjYzAyMTVmYzFkMDA2Yjk5ZWFlLi5lMDJlOTBiNWQ0
Njk0Yzg1NGViZjg1ZTM3MDhjMWEyMDhhMzg1NTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
bnB1dEVsZW1lbnQuaApAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgZG91YmxlIG1heGlt
dW0oKSBjb25zdDsKICAgICAvLyBTZXRzIHRoZSAiYWxsb3dlZCB2YWx1ZSBzdGVwIiBkZWZpbmVk
IGluIHRoZSBIVE1MIHNwZWMgdG8gdGhlIHNwZWNpZmllZCBkb3VibGUgcG9pbnRlci4KICAgICAv
LyBSZXR1cm5zIGZhbHNlIGlmIHRoZXJlIGlzIG5vICJhbGxvd2VkIHZhbHVlIHN0ZXAuIgotICAg
IGJvb2wgZ2V0QWxsb3dlZFZhbHVlU3RlcChkb3VibGUqKSBjb25zdDsKKyAgICBib29sIGdldEFs
bG93ZWRWYWx1ZVN0ZXAoRGVjaW1hbCopIGNvbnN0OwogICAgIFN0ZXBSYW5nZSBjcmVhdGVTdGVw
UmFuZ2UoQW55U3RlcEhhbmRsaW5nKSBjb25zdDsKIAogICAgIC8vIEltcGxlbWVudGF0aW9ucyBv
ZiBIVE1MSW5wdXRFbGVtZW50OjpzdGVwVXAoKSBhbmQgc3RlcERvd24oKS4KQEAgLTE2Nyw2ICsx
NjcsNyBAQCBwdWJsaWM6CiAKICAgICBkb3VibGUgdmFsdWVBc051bWJlcigpIGNvbnN0OwogICAg
IHZvaWQgc2V0VmFsdWVBc051bWJlcihkb3VibGUsIEV4Y2VwdGlvbkNvZGUmLCBUZXh0RmllbGRF
dmVudEJlaGF2aW9yID0gRGlzcGF0Y2hOb0V2ZW50KTsKKyAgICB2b2lkIHNldFZhbHVlQXNOdW1i
ZXIoY29uc3QgRGVjaW1hbCYsIEV4Y2VwdGlvbkNvZGUmLCBUZXh0RmllbGRFdmVudEJlaGF2aW9y
ID0gRGlzcGF0Y2hOb0V2ZW50KTsKIAogICAgIHZpcnR1YWwgU3RyaW5nIHBsYWNlaG9sZGVyKCkg
Y29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHNldFBsYWNlaG9sZGVyKGNvbnN0IFN0cmluZyYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCmluZGV4IGU5MTk2MGQ0MGVmZmFmOTEwNTU3OGM4M2Iw
NmY3YzNjODdjNTRjNGEuLmQzODVkZmE2NGQ5NzI1MmRlZTMyYWJkYTBmOWQwYTk1MDhkMThhNGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKQEAgLTIxMCw3ICsyMTAsMTIgQEAgZG91Ymxl
IElucHV0VHlwZTo6dmFsdWVBc051bWJlcigpIGNvbnN0CiAgICAgcmV0dXJuIG51bWVyaWNfbGlt
aXRzPGRvdWJsZT46OnF1aWV0X05hTigpOwogfQogCi12b2lkIElucHV0VHlwZTo6c2V0VmFsdWVB
c051bWJlcihkb3VibGUsIFRleHRGaWVsZEV2ZW50QmVoYXZpb3IsIEV4Y2VwdGlvbkNvZGUmIGVj
KSBjb25zdAordm9pZCBJbnB1dFR5cGU6OnNldFZhbHVlQXNOdW1iZXIoZG91YmxlIG5ld1ZhbHVl
LCBUZXh0RmllbGRFdmVudEJlaGF2aW9yIGV2ZW50QmVoYXZpb3IsIEV4Y2VwdGlvbkNvZGUmIGVj
KSBjb25zdAoreworICAgIHNldFZhbHVlQXNOdW1iZXIoY29udmVydERvdWJsZVRvRGVjaW1hbChu
ZXdWYWx1ZSksIGV2ZW50QmVoYXZpb3IsIGVjKTsKK30KKwordm9pZCBJbnB1dFR5cGU6OnNldFZh
bHVlQXNOdW1iZXIoY29uc3QgRGVjaW1hbCYsIFRleHRGaWVsZEV2ZW50QmVoYXZpb3IsIEV4Y2Vw
dGlvbkNvZGUmIGVjKSBjb25zdAogewogICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CiB9CkBA
IC0yNTEsMTEgKzI1Niw4IEBAIGJvb2wgSW5wdXRUeXBlOjpyYW5nZVVuZGVyZmxvdyhjb25zdCBT
dHJpbmcmIHZhbHVlKSBjb25zdAogICAgIGlmICghaXNTdGVwcGFibGUoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgZG91YmxlIGRvdWJsZVZhbHVlID0gcGFyc2VUb0RvdWJsZSh2YWx1
ZSwgbnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCkpOwotICAgIGlmIChpc25hbihk
b3VibGVWYWx1ZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBkb3VibGVW
YWx1ZSA8IGNyZWF0ZVN0ZXBSYW5nZShSZWplY3RBbnkpLm1pbmltdW0oKTsKKyAgICBjb25zdCBE
ZWNpbWFsIG51bWVyaWNWYWx1ZSA9IHBhcnNlVG9EZWNpbWFsKHZhbHVlKTsKKyAgICByZXR1cm4g
bnVtZXJpY1ZhbHVlLmlzRmluaXRlKCkgJiYgbnVtZXJpY1ZhbHVlIDwgY3JlYXRlU3RlcFJhbmdl
KFJlamVjdEFueSkubWluaW11bSgpOwogfQogCiBib29sIElucHV0VHlwZTo6cmFuZ2VPdmVyZmxv
dyhjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdApAQCAtMjYzLDI2ICsyNjUsMjMgQEAgYm9vbCBJ
bnB1dFR5cGU6OnJhbmdlT3ZlcmZsb3coY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKICAgICBp
ZiAoIWlzU3RlcHBhYmxlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGRvdWJsZSBk
b3VibGVWYWx1ZSA9IHBhcnNlVG9Eb3VibGUodmFsdWUsIG51bWVyaWNfbGltaXRzPGRvdWJsZT46
OnF1aWV0X05hTigpKTsKLSAgICBpZiAoaXNuYW4oZG91YmxlVmFsdWUpKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gZG91YmxlVmFsdWUgPiBjcmVhdGVTdGVwUmFuZ2UoUmVq
ZWN0QW55KS5tYXhpbXVtKCk7CisgICAgY29uc3QgRGVjaW1hbCBudW1lcmljVmFsdWUgPSBwYXJz
ZVRvRGVjaW1hbCh2YWx1ZSk7CisgICAgcmV0dXJuIG51bWVyaWNWYWx1ZS5pc0Zpbml0ZSgpICYm
IG51bWVyaWNWYWx1ZSA+IGNyZWF0ZVN0ZXBSYW5nZShSZWplY3RBbnkpLm1heGltdW0oKTsKIH0K
IAotZG91YmxlIElucHV0VHlwZTo6ZGVmYXVsdFZhbHVlRm9yU3RlcFVwKCkgY29uc3QKK0RlY2lt
YWwgSW5wdXRUeXBlOjpkZWZhdWx0VmFsdWVGb3JTdGVwVXAoKSBjb25zdAogewogICAgIHJldHVy
biAwOwogfQogCiBkb3VibGUgSW5wdXRUeXBlOjptaW5pbXVtKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gY3JlYXRlU3RlcFJhbmdlKFJlamVjdEFueSkubWluaW11bSgpOworICAgIHJldHVybiBjb252
ZXJ0RGVjaW1hbFRvRG91YmxlKGNyZWF0ZVN0ZXBSYW5nZShSZWplY3RBbnkpLm1pbmltdW0oKSk7
CiB9CiAKIGRvdWJsZSBJbnB1dFR5cGU6Om1heGltdW0oKSBjb25zdAogewotICAgIHJldHVybiBj
cmVhdGVTdGVwUmFuZ2UoUmVqZWN0QW55KS5tYXhpbXVtKCk7CisgICAgcmV0dXJuIGNvbnZlcnRE
ZWNpbWFsVG9Eb3VibGUoY3JlYXRlU3RlcFJhbmdlKFJlamVjdEFueSkubWF4aW11bSgpKTsKIH0K
IAogYm9vbCBJbnB1dFR5cGU6OnNpemVTaG91bGRJbmNsdWRlRGVjb3JhdGlvbihpbnQsIGludCYg
cHJlZmVycmVkU2l6ZSkgY29uc3QKQEAgLTI5NiwxMiArMjk1LDEyIEBAIGJvb2wgSW5wdXRUeXBl
Ojppc0luUmFuZ2UoY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKICAgICBpZiAoIWlzU3RlcHBh
YmxlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGRvdWJsZSBkb3VibGVWYWx1ZSA9
IHBhcnNlVG9Eb3VibGUodmFsdWUsIG51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigp
KTsKLSAgICBpZiAoaXNuYW4oZG91YmxlVmFsdWUpKQorICAgIGNvbnN0IERlY2ltYWwmIG51bWVy
aWNWYWx1ZSA9IHBhcnNlVG9EZWNpbWFsKHZhbHVlKTsKKyAgICBpZiAoIW51bWVyaWNWYWx1ZS5p
c0Zpbml0ZSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIFN0ZXBSYW5nZSBzdGVwUmFu
Z2UoY3JlYXRlU3RlcFJhbmdlKFJlamVjdEFueSkpOwotICAgIHJldHVybiBkb3VibGVWYWx1ZSA+
PSBzdGVwUmFuZ2UubWluaW11bSgpICYmIGRvdWJsZVZhbHVlIDw9IHN0ZXBSYW5nZS5tYXhpbXVt
KCk7CisgICAgY29uc3QgU3RlcFJhbmdlIHN0ZXBSYW5nZShjcmVhdGVTdGVwUmFuZ2UoUmVqZWN0
QW55KSk7CisgICAgcmV0dXJuIG51bWVyaWNWYWx1ZSA+PSBzdGVwUmFuZ2UubWluaW11bSgpICYm
IG51bWVyaWNWYWx1ZSA8PSBzdGVwUmFuZ2UubWF4aW11bSgpOwogfQogCiBib29sIElucHV0VHlw
ZTo6aXNPdXRPZlJhbmdlKGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0CkBAIC0zMDksMTIgKzMw
OCwxMiBAQCBib29sIElucHV0VHlwZTo6aXNPdXRPZlJhbmdlKGNvbnN0IFN0cmluZyYgdmFsdWUp
IGNvbnN0CiAgICAgaWYgKCFpc1N0ZXBwYWJsZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICBkb3VibGUgZG91YmxlVmFsdWUgPSBwYXJzZVRvRG91YmxlKHZhbHVlLCBudW1lcmljX2xp
bWl0czxkb3VibGU+OjpxdWlldF9OYU4oKSk7Ci0gICAgaWYgKGlzbmFuKGRvdWJsZVZhbHVlKSkK
KyAgICBjb25zdCBEZWNpbWFsJiBudW1lcmljVmFsdWUgPSBwYXJzZVRvRGVjaW1hbCh2YWx1ZSk7
CisgICAgaWYgKCFudW1lcmljVmFsdWUuaXNGaW5pdGUoKSkKICAgICAgICAgcmV0dXJuIHRydWU7
CiAKLSAgICBTdGVwUmFuZ2Ugc3RlcFJhbmdlKGNyZWF0ZVN0ZXBSYW5nZShSZWplY3RBbnkpKTsK
LSAgICByZXR1cm4gZG91YmxlVmFsdWUgPCBzdGVwUmFuZ2UubWluaW11bSgpIHx8IGRvdWJsZVZh
bHVlID4gc3RlcFJhbmdlLm1heGltdW0oKTsKKyAgICBjb25zdCBTdGVwUmFuZ2Ugc3RlcFJhbmdl
KGNyZWF0ZVN0ZXBSYW5nZShSZWplY3RBbnkpKTsKKyAgICByZXR1cm4gbnVtZXJpY1ZhbHVlIDwg
c3RlcFJhbmdlLm1pbmltdW0oKSB8fCBudW1lcmljVmFsdWUgPiBzdGVwUmFuZ2UubWF4aW11bSgp
OwogfQogCiBib29sIElucHV0VHlwZTo6c3RlcE1pc21hdGNoKGNvbnN0IFN0cmluZyYgdmFsdWUp
IGNvbnN0CkBAIC0zMjIsMTEgKzMyMSwxMSBAQCBib29sIElucHV0VHlwZTo6c3RlcE1pc21hdGNo
KGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0CiAgICAgaWYgKCFpc1N0ZXBwYWJsZSgpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBkb3VibGUgZG91YmxlVmFsdWUgPSBwYXJzZVRvRG91
YmxlKHZhbHVlLCBudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKSk7Ci0gICAgaWYg
KGlzbmFuKGRvdWJsZVZhbHVlKSkKKyAgICBjb25zdCBEZWNpbWFsJiBudW1lcmljVmFsdWUgPSBw
YXJzZVRvRGVjaW1hbCh2YWx1ZSk7CisgICAgaWYgKCFudW1lcmljVmFsdWUuaXNGaW5pdGUoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIGNyZWF0ZVN0ZXBSYW5nZShSZWpl
Y3RBbnkpLnN0ZXBNaXNtYXRjaChkb3VibGVWYWx1ZSk7CisgICAgcmV0dXJuIGNyZWF0ZVN0ZXBS
YW5nZShSZWplY3RBbnkpLnN0ZXBNaXNtYXRjaChudW1lcmljVmFsdWUpOwogfQogCiBTdHJpbmcg
SW5wdXRUeXBlOjp0eXBlTWlzbWF0Y2hUZXh0KCkgY29uc3QKQEAgLTM2MCwyMSArMzU5LDIxIEBA
IFN0cmluZyBJbnB1dFR5cGU6OnZhbGlkYXRpb25NZXNzYWdlKCkgY29uc3QKICAgICBpZiAoIWlz
U3RlcHBhYmxlKCkpCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCi0gICAgZG91Ymxl
IGRvdWJsZVZhbHVlID0gcGFyc2VUb0RvdWJsZSh2YWx1ZSwgbnVtZXJpY19saW1pdHM8ZG91Ymxl
Pjo6cXVpZXRfTmFOKCkpOwotICAgIGlmIChpc25hbihkb3VibGVWYWx1ZSkpCisgICAgY29uc3Qg
RGVjaW1hbCYgbnVtZXJpY1ZhbHVlID0gcGFyc2VUb0RlY2ltYWwodmFsdWUpOworICAgIGlmICgh
bnVtZXJpY1ZhbHVlLmlzRmluaXRlKCkpCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwog
Ci0gICAgU3RlcFJhbmdlIHN0ZXBSYW5nZShjcmVhdGVTdGVwUmFuZ2UoUmVqZWN0QW55KSk7Cisg
ICAgY29uc3QgU3RlcFJhbmdlIHN0ZXBSYW5nZShjcmVhdGVTdGVwUmFuZ2UoUmVqZWN0QW55KSk7
CiAKLSAgICBpZiAoZG91YmxlVmFsdWUgPCBzdGVwUmFuZ2UubWluaW11bSgpKQorICAgIGlmIChu
dW1lcmljVmFsdWUgPCBzdGVwUmFuZ2UubWluaW11bSgpKQogICAgICAgICByZXR1cm4gdmFsaWRh
dGlvbk1lc3NhZ2VSYW5nZVVuZGVyZmxvd1RleHQoc2VyaWFsaXplKHN0ZXBSYW5nZS5taW5pbXVt
KCkpKTsKIAotICAgIGlmIChkb3VibGVWYWx1ZSA8IHN0ZXBSYW5nZS5tYXhpbXVtKCkpCisgICAg
aWYgKG51bWVyaWNWYWx1ZSA8IHN0ZXBSYW5nZS5tYXhpbXVtKCkpCiAgICAgICAgIHJldHVybiB2
YWxpZGF0aW9uTWVzc2FnZVJhbmdlT3ZlcmZsb3dUZXh0KHNlcmlhbGl6ZShzdGVwUmFuZ2UubWF4
aW11bSgpKSk7CiAKLSAgICBpZiAoc3RlcFJhbmdlLnN0ZXBNaXNtYXRjaChkb3VibGVWYWx1ZSkp
IHsKKyAgICBpZiAoc3RlcFJhbmdlLnN0ZXBNaXNtYXRjaChudW1lcmljVmFsdWUpKSB7CiAgICAg
ICAgIGNvbnN0IFN0cmluZyBzdGVwU3RyaW5nID0gc3RlcFJhbmdlLmhhc1N0ZXAoKSA/IHNlcmlh
bGl6ZUZvck51bWJlclR5cGUoc3RlcFJhbmdlLnN0ZXAoKSAvIHN0ZXBSYW5nZS5zdGVwU2NhbGVG
YWN0b3IoKSkgOiBlbXB0eVN0cmluZygpOwotICAgICAgICByZXR1cm4gdmFsaWRhdGlvbk1lc3Nh
Z2VTdGVwTWlzbWF0Y2hUZXh0KHNlcmlhbGl6ZShzdGVwUmFuZ2Uuc3RlcEJhc2UoKSksIHN0ZXBT
dHJpbmcpOworICAgICAgICByZXR1cm4gdmFsaWRhdGlvbk1lc3NhZ2VTdGVwTWlzbWF0Y2hUZXh0
KHNlcmlhbGl6ZUZvck51bWJlclR5cGUoc3RlcFJhbmdlLnN0ZXBCYXNlKCkpLCBzdGVwU3RyaW5n
KTsKICAgICB9CiAKICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKQEAgLTQ1MywxNyArNDUyLDE1
IEBAIHZvaWQgSW5wdXRUeXBlOjpkZXN0cm95U2hhZG93U3VidHJlZSgpCiAgICAgfQogfQogCi1k
b3VibGUgSW5wdXRUeXBlOjpwYXJzZVRvRG91YmxlKGNvbnN0IFN0cmluZyYsIGRvdWJsZSBkZWZh
dWx0VmFsdWUpIGNvbnN0CitEZWNpbWFsIElucHV0VHlwZTo6cGFyc2VUb0RlY2ltYWwoY29uc3Qg
U3RyaW5nJiwgY29uc3QgRGVjaW1hbCYgZGVmYXVsdFZhbHVlKSBjb25zdAogewogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBkZWZhdWx0VmFsdWU7CiB9CiAKLWRvdWJsZSBJ
bnB1dFR5cGU6OnBhcnNlVG9Eb3VibGVXaXRoRGVjaW1hbFBsYWNlcyhjb25zdCBTdHJpbmcmIHNy
YywgZG91YmxlIGRlZmF1bHRWYWx1ZSwgdW5zaWduZWQgKmRlY2ltYWxQbGFjZXMpIGNvbnN0CitE
ZWNpbWFsIElucHV0VHlwZTo6cGFyc2VUb0RlY2ltYWwoY29uc3QgU3RyaW5nJiBzdHJpbmcpIGNv
bnN0CiB7Ci0gICAgaWYgKGRlY2ltYWxQbGFjZXMpCi0gICAgICAgICpkZWNpbWFsUGxhY2VzID0g
MDsKLSAgICByZXR1cm4gcGFyc2VUb0RvdWJsZShzcmMsIGRlZmF1bHRWYWx1ZSk7CisgICAgcmV0
dXJuIHBhcnNlVG9EZWNpbWFsKHN0cmluZywgRGVjaW1hbDo6bmFuKCkpOwogfQogCiBib29sIElu
cHV0VHlwZTo6cGFyc2VUb0RhdGVDb21wb25lbnRzKGNvbnN0IFN0cmluZyYsIERhdGVDb21wb25l
bnRzKikgY29uc3QKQEAgLTQ3Miw3ICs0NjksNyBAQCBib29sIElucHV0VHlwZTo6cGFyc2VUb0Rh
dGVDb21wb25lbnRzKGNvbnN0IFN0cmluZyYsIERhdGVDb21wb25lbnRzKikgY29uc3QKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKLVN0cmluZyBJbnB1dFR5cGU6OnNlcmlhbGl6ZShkb3VibGUpIGNv
bnN0CitTdHJpbmcgSW5wdXRUeXBlOjpzZXJpYWxpemUoY29uc3QgRGVjaW1hbCYpIGNvbnN0CiB7
CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIFN0cmluZygpOwpAQCAtODY4
LDI4ICs4NjUsMjYgQEAgdW5zaWduZWQgSW5wdXRUeXBlOjp3aWR0aCgpIGNvbnN0CiAgICAgcmV0
dXJuIDA7CiB9CiAKLXZvaWQgSW5wdXRUeXBlOjphcHBseVN0ZXAoZG91YmxlIGNvdW50LCBBbnlT
dGVwSGFuZGxpbmcgYW55U3RlcEhhbmRsaW5nLCBUZXh0RmllbGRFdmVudEJlaGF2aW9yIGV2ZW50
QmVoYXZpb3IsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBJbnB1dFR5cGU6OmFwcGx5U3RlcChp
bnQgY291bnQsIEFueVN0ZXBIYW5kbGluZyBhbnlTdGVwSGFuZGxpbmcsIFRleHRGaWVsZEV2ZW50
QmVoYXZpb3IgZXZlbnRCZWhhdmlvciwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgU3RlcFJh
bmdlIHN0ZXBSYW5nZShjcmVhdGVTdGVwUmFuZ2UoYW55U3RlcEhhbmRsaW5nKSk7CisgICAgY29u
c3QgU3RlcFJhbmdlIHN0ZXBSYW5nZShjcmVhdGVTdGVwUmFuZ2UoYW55U3RlcEhhbmRsaW5nKSk7
CiAgICAgaWYgKCFzdGVwUmFuZ2UuaGFzU3RlcCgpKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9T
VEFURV9FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBjb25zdCBkb3VibGUgbmFu
ID0gbnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCk7Ci0gICAgdW5zaWduZWQgY3Vy
cmVudERlY2ltYWxQbGFjZXM7Ci0gICAgZG91YmxlIGN1cnJlbnQgPSBwYXJzZVRvRG91YmxlV2l0
aERlY2ltYWxQbGFjZXMoZWxlbWVudCgpLT52YWx1ZSgpLCBuYW4sICZjdXJyZW50RGVjaW1hbFBs
YWNlcyk7Ci0gICAgaWYgKCFpc2Zpbml0ZShjdXJyZW50KSkgeworICAgIGNvbnN0IERlY2ltYWwg
Y3VycmVudCA9IHBhcnNlVG9EZWNpbWFsKGVsZW1lbnQoKS0+dmFsdWUoKSk7CisgICAgaWYgKCFj
dXJyZW50LmlzRmluaXRlKCkpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBkb3VibGUgbmV3VmFsdWUgPSBjdXJyZW50ICsgc3Rl
cFJhbmdlLnN0ZXAoKSAqIGNvdW50OwotICAgIGlmIChpc2luZihuZXdWYWx1ZSkpIHsKKyAgICBE
ZWNpbWFsIG5ld1ZhbHVlID0gY3VycmVudCArIHN0ZXBSYW5nZS5zdGVwKCkgKiBjb3VudDsKKyAg
ICBpZiAoIW5ld1ZhbHVlLmlzRmluaXRlKCkpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRF
X0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGRvdWJsZSBhY2NlcHRhYmxlRXJy
b3JWYWx1ZSA9IHN0ZXBSYW5nZS5hY2NlcHRhYmxlRXJyb3IoKTsKKyAgICBjb25zdCBEZWNpbWFs
IGFjY2VwdGFibGVFcnJvclZhbHVlID0gc3RlcFJhbmdlLmFjY2VwdGFibGVFcnJvcigpOwogICAg
IGlmIChuZXdWYWx1ZSAtIHN0ZXBSYW5nZS5taW5pbXVtKCkgPCAtYWNjZXB0YWJsZUVycm9yVmFs
dWUpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKICAgICAgICAgcmV0dXJuOwpA
QCAtODk5LDcgKzg5NCw3IEBAIHZvaWQgSW5wdXRUeXBlOjphcHBseVN0ZXAoZG91YmxlIGNvdW50
LCBBbnlTdGVwSGFuZGxpbmcgYW55U3RlcEhhbmRsaW5nLCBUZXh0RmllCiAKICAgICBjb25zdCBB
dG9taWNTdHJpbmcmIHN0ZXBTdHJpbmcgPSBlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUoc3Rl
cEF0dHIpOwogICAgIGlmICghZXF1YWxJZ25vcmluZ0Nhc2Uoc3RlcFN0cmluZywgImFueSIpKQot
ICAgICAgICBuZXdWYWx1ZSA9IHN0ZXBSYW5nZS5hbGlnblZhbHVlRm9yU3RlcChjdXJyZW50LCBj
dXJyZW50RGVjaW1hbFBsYWNlcywgbmV3VmFsdWUpOworICAgICAgICBuZXdWYWx1ZSA9IHN0ZXBS
YW5nZS5hbGlnblZhbHVlRm9yU3RlcChjdXJyZW50LCBuZXdWYWx1ZSk7CiAKICAgICBpZiAobmV3
VmFsdWUgLSBzdGVwUmFuZ2UubWF4aW11bSgpID4gYWNjZXB0YWJsZUVycm9yVmFsdWUpIHsKICAg
ICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKQEAgLTkxNCw3ICs5MDksNyBAQCB2b2lkIElu
cHV0VHlwZTo6YXBwbHlTdGVwKGRvdWJsZSBjb3VudCwgQW55U3RlcEhhbmRsaW5nIGFueVN0ZXBI
YW5kbGluZywgVGV4dEZpZQogICAgICAgICAgZWxlbWVudCgpLT5kb2N1bWVudCgpLT5heE9iamVj
dENhY2hlKCktPnBvc3ROb3RpZmljYXRpb24oZWxlbWVudCgpLT5yZW5kZXJlcigpLCBBWE9iamVj
dENhY2hlOjpBWFZhbHVlQ2hhbmdlZCwgdHJ1ZSk7CiB9CiAKLWJvb2wgSW5wdXRUeXBlOjpnZXRB
bGxvd2VkVmFsdWVTdGVwKGRvdWJsZSogc3RlcCkgY29uc3QKK2Jvb2wgSW5wdXRUeXBlOjpnZXRB
bGxvd2VkVmFsdWVTdGVwKERlY2ltYWwqIHN0ZXApIGNvbnN0CiB7CiAgICAgU3RlcFJhbmdlIHN0
ZXBSYW5nZShjcmVhdGVTdGVwUmFuZ2UoUmVqZWN0QW55KSk7CiAgICAgKnN0ZXAgPSBzdGVwUmFu
Z2Uuc3RlcCgpOwpAQCAtOTgwLDE0ICs5NzUsMTQgQEAgdm9pZCBJbnB1dFR5cGU6OnN0ZXBVcEZy
b21SZW5kZXJlcihpbnQgbikKICAgICBpZiAoIW4pCiAgICAgICAgIHJldHVybjsKIAotICAgIFN0
ZXBSYW5nZSBzdGVwUmFuZ2UoY3JlYXRlU3RlcFJhbmdlKEFueUlzRGVmYXVsdFN0ZXApKTsKKyAg
ICBjb25zdCBTdGVwUmFuZ2Ugc3RlcFJhbmdlKGNyZWF0ZVN0ZXBSYW5nZShBbnlJc0RlZmF1bHRT
dGVwKSk7CiAKICAgICAvLyBGSVhNRTogTm90IGFueSBjaGFuZ2VzIGFmdGVyIHN0ZXBwaW5nLCBl
dmVuIGlmIGl0IGlzIGFuIGludmFsaWQgdmFsdWUsIG1heSBiZSBiZXR0ZXIuCiAgICAgLy8gKGUu
Zy4gU3RlcHBpbmctdXAgZm9yIDxpbnB1dCB0eXBlPSJudW1iZXIiIHZhbHVlPSJmb28iIHN0ZXA9
ImFueSIgLz4gPT4gImZvbyIpCiAgICAgaWYgKCFzdGVwUmFuZ2UuaGFzU3RlcCgpKQogICAgICAg
cmV0dXJuOwogCi0gICAgZG91YmxlIHN0ZXAgPSBzdGVwUmFuZ2Uuc3RlcCgpOworICAgIGNvbnN0
IERlY2ltYWwgc3RlcCA9IHN0ZXBSYW5nZS5zdGVwKCk7CiAKICAgICBpbnQgc2lnbjsKICAgICBp
ZiAoc3RlcCA+IDApCkBAIC05OTcsMTMgKzk5MiwxMSBAQCB2b2lkIElucHV0VHlwZTo6c3RlcFVw
RnJvbVJlbmRlcmVyKGludCBuKQogICAgIGVsc2UKICAgICAgICAgc2lnbiA9IDA7CiAKLSAgICBj
b25zdCBkb3VibGUgbmFuID0gbnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCk7Ci0g
ICAgU3RyaW5nIGN1cnJlbnRTdHJpbmdWYWx1ZSA9IGVsZW1lbnQoKS0+dmFsdWUoKTsKLSAgICBk
b3VibGUgY3VycmVudCA9IHBhcnNlVG9Eb3VibGUoY3VycmVudFN0cmluZ1ZhbHVlLCBuYW4pOwot
ICAgIGlmICghaXNmaW5pdGUoY3VycmVudCkpIHsKKyAgICBEZWNpbWFsIGN1cnJlbnQgPSBwYXJz
ZVRvRGVjaW1hbChlbGVtZW50KCktPnZhbHVlKCkpOworICAgIGlmICghY3VycmVudC5pc0Zpbml0
ZSgpKSB7CiAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWM7CiAgICAgICAgIGN1cnJlbnQgPSBkZWZh
dWx0VmFsdWVGb3JTdGVwVXAoKTsKLSAgICAgICAgZG91YmxlIG5leHREaWZmID0gc3RlcCAqIG47
CisgICAgICAgIGNvbnN0IERlY2ltYWwgbmV4dERpZmYgPSBzdGVwICogbjsKICAgICAgICAgaWYg
KGN1cnJlbnQgPCBzdGVwUmFuZ2UubWluaW11bSgpIC0gbmV4dERpZmYpCiAgICAgICAgICAgICBj
dXJyZW50ID0gc3RlcFJhbmdlLm1pbmltdW0oKSAtIG5leHREaWZmOwogICAgICAgICBpZiAoY3Vy
cmVudCA+IHN0ZXBSYW5nZS5tYXhpbXVtKCkgLSBuZXh0RGlmZikKQEAgLTEwMTEsMTkgKzEwMDQs
MTcgQEAgdm9pZCBJbnB1dFR5cGU6OnN0ZXBVcEZyb21SZW5kZXJlcihpbnQgbikKICAgICAgICAg
ZWxlbWVudCgpLT5zZXRWYWx1ZUFzTnVtYmVyKGN1cnJlbnQsIGVjLCBEaXNwYXRjaElucHV0QW5k
Q2hhbmdlRXZlbnQpOwogICAgIH0KICAgICBpZiAoKHNpZ24gPiAwICYmIGN1cnJlbnQgPCBzdGVw
UmFuZ2UubWluaW11bSgpKSB8fCAoc2lnbiA8IDAgJiYgY3VycmVudCA+IHN0ZXBSYW5nZS5tYXhp
bXVtKCkpKQotICAgICAgICBlbGVtZW50KCktPnNldFZhbHVlKHNlcmlhbGl6ZShzaWduID4gMCA/
IHN0ZXBSYW5nZS5taW5pbXVtKCkgOiBzdGVwUmFuZ2UubWF4aW11bSgpKSwgRGlzcGF0Y2hJbnB1
dEFuZENoYW5nZUV2ZW50KTsKKyAgICAgICAgZWxlbWVudCgpLT5zZXRWYWx1ZShzZXJpYWxpemVG
b3JOdW1iZXJUeXBlKHNpZ24gPiAwID8gc3RlcFJhbmdlLm1pbmltdW0oKSA6IHN0ZXBSYW5nZS5t
YXhpbXVtKCkpLCBEaXNwYXRjaElucHV0QW5kQ2hhbmdlRXZlbnQpOwogICAgIGVsc2UgewogICAg
ICAgICBFeGNlcHRpb25Db2RlIGVjOwogICAgICAgICBpZiAoc3RlcE1pc21hdGNoKGVsZW1lbnQo
KS0+dmFsdWUoKSkpIHsKLSAgICAgICAgICAgIEFTU0VSVChzdGVwKTsKLSAgICAgICAgICAgIGRv
dWJsZSBuZXdWYWx1ZTsKLSAgICAgICAgICAgIGRvdWJsZSBzY2FsZSA9IHBvdygxMC4wLCBzdGF0
aWNfY2FzdDxkb3VibGU+KG1heChzdGVwUmFuZ2Uuc3RlcERlY2ltYWxQbGFjZXMoKSwgc3RlcFJh
bmdlLnN0ZXBCYXNlRGVjaW1hbFBsYWNlcygpKSkpOwotICAgICAgICAgICAgZG91YmxlIGJhc2Ug
PSBzdGVwUmFuZ2Uuc3RlcEJhc2UoKTsKLQorICAgICAgICAgICAgQVNTRVJUKCFzdGVwLmlzWmVy
bygpKTsKKyAgICAgICAgICAgIGNvbnN0IERlY2ltYWwgYmFzZSA9IHN0ZXBSYW5nZS5zdGVwQmFz
ZSgpOworICAgICAgICAgICAgRGVjaW1hbCBuZXdWYWx1ZTsKICAgICAgICAgICAgIGlmIChzaWdu
IDwgMCkKLSAgICAgICAgICAgICAgICBuZXdWYWx1ZSA9IHJvdW5kKChiYXNlICsgZmxvb3IoKGN1
cnJlbnQgLSBiYXNlKSAvIHN0ZXApICogc3RlcCkgKiBzY2FsZSkgLyBzY2FsZTsKKyAgICAgICAg
ICAgICAgICBuZXdWYWx1ZSA9IGJhc2UgKyAoKGN1cnJlbnQgLSBiYXNlKSAvIHN0ZXApLmZsb29y
KCkgKiBzdGVwOwogICAgICAgICAgICAgZWxzZSBpZiAoc2lnbiA+IDApCi0gICAgICAgICAgICAg
ICAgbmV3VmFsdWUgPSByb3VuZCgoYmFzZSArIGNlaWwoKGN1cnJlbnQgLSBiYXNlKSAvIHN0ZXAp
ICogc3RlcCkgKiBzY2FsZSkgLyBzY2FsZTsKKyAgICAgICAgICAgICAgICBuZXdWYWx1ZSA9IGJh
c2UgKyAoKGN1cnJlbnQgLSBiYXNlKSAvIHN0ZXApLmNlaWxpbmcoKSAqIHN0ZXA7CiAgICAgICAg
ICAgICBlbHNlCiAgICAgICAgICAgICAgICAgbmV3VmFsdWUgPSBjdXJyZW50OwogCkBAIC0xMDMz
LDcgKzEwMjQsNiBAQCB2b2lkIElucHV0VHlwZTo6c3RlcFVwRnJvbVJlbmRlcmVyKGludCBuKQog
ICAgICAgICAgICAgICAgIG5ld1ZhbHVlID0gc3RlcFJhbmdlLm1heGltdW0oKTsKIAogICAgICAg
ICAgICAgZWxlbWVudCgpLT5zZXRWYWx1ZUFzTnVtYmVyKG5ld1ZhbHVlLCBlYywgbiA9PSAxIHx8
IG4gPT0gLTEgPyBEaXNwYXRjaElucHV0QW5kQ2hhbmdlRXZlbnQgOiBEaXNwYXRjaE5vRXZlbnQp
OwotICAgICAgICAgICAgY3VycmVudCA9IG5ld1ZhbHVlOwogICAgICAgICAgICAgaWYgKG4gPiAx
KQogICAgICAgICAgICAgICAgIGFwcGx5U3RlcChuIC0gMSwgQW55SXNEZWZhdWx0U3RlcCwgRGlz
cGF0Y2hJbnB1dEFuZENoYW5nZUV2ZW50LCBlYyk7CiAgICAgICAgICAgICBlbHNlIGlmIChuIDwg
LTEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaAppbmRleCA4M2VmYmRlYmU5NjRlZTYwZjhhZmU3M2I5
NjY0MWRiZTVkMjY1ZWRlLi4xZTdkNWIzZTk0ZThjYWY0OWE1NGFmZTBhZGI1ZjM2MGJhMDYwYjBh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgKQEAgLTEzOSw2ICsxMzksNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHNldFZhbHVlQXNEYXRlKGRvdWJsZSwgRXhjZXB0aW9uQ29kZSYpIGNv
bnN0OwogICAgIHZpcnR1YWwgZG91YmxlIHZhbHVlQXNOdW1iZXIoKSBjb25zdDsKICAgICB2aXJ0
dWFsIHZvaWQgc2V0VmFsdWVBc051bWJlcihkb3VibGUsIFRleHRGaWVsZEV2ZW50QmVoYXZpb3Is
IEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWVBc051bWJl
cihjb25zdCBEZWNpbWFsJiwgVGV4dEZpZWxkRXZlbnRCZWhhdmlvciwgRXhjZXB0aW9uQ29kZSYp
IGNvbnN0OwogCiAgICAgLy8gVmFsaWRhdGlvbiBmdW5jdGlvbnMKICAgICB2aXJ0dWFsIFN0cmlu
ZyB2YWxpZGF0aW9uTWVzc2FnZSgpIGNvbnN0OwpAQCAtMTU1LDEyICsxNTYsMTIgQEAgcHVibGlj
OgogICAgIGJvb2wgcmFuZ2VPdmVyZmxvdyhjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICBib29s
IGlzSW5SYW5nZShjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICBib29sIGlzT3V0T2ZSYW5nZShj
b25zdCBTdHJpbmcmKSBjb25zdDsKLSAgICB2aXJ0dWFsIGRvdWJsZSBkZWZhdWx0VmFsdWVGb3JT
dGVwVXAoKSBjb25zdDsKKyAgICB2aXJ0dWFsIERlY2ltYWwgZGVmYXVsdFZhbHVlRm9yU3RlcFVw
KCkgY29uc3Q7CiAgICAgZG91YmxlIG1pbmltdW0oKSBjb25zdDsKICAgICBkb3VibGUgbWF4aW11
bSgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBzaXplU2hvdWxkSW5jbHVkZURlY29yYXRpb24o
aW50IGRlZmF1bHRTaXplLCBpbnQmIHByZWZlcnJlZFNpemUpIGNvbnN0OwogICAgIGJvb2wgc3Rl
cE1pc21hdGNoKGNvbnN0IFN0cmluZyYpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBnZXRBbGxv
d2VkVmFsdWVTdGVwKGRvdWJsZSopIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBnZXRBbGxvd2Vk
VmFsdWVTdGVwKERlY2ltYWwqKSBjb25zdDsKICAgICB2aXJ0dWFsIFN0ZXBSYW5nZSBjcmVhdGVT
dGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5nKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgc3RlcFVw
KGludCwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzdGVwVXBGcm9tUmVuZGVy
ZXIoaW50KTsKQEAgLTI2MCwxNSArMjYxLDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmlu
ZyBkZWZhdWx0VG9vbFRpcCgpIGNvbnN0OwogCiAgICAgLy8gUGFyc2VzIHRoZSBzcGVjaWZpZWQg
c3RyaW5nIGZvciB0aGUgdHlwZSwgYW5kIHJldHVybgotICAgIC8vIHRoZSBkb3VibGUgdmFsdWUg
Zm9yIHRoZSBwYXJzaW5nIHJlc3VsdCBpZiB0aGUgcGFyc2luZworICAgIC8vIHRoZSBkZWNpbWFs
IHZhbHVlIGZvciB0aGUgcGFyc2luZyByZXN1bHQgaWYgdGhlIHBhcnNpbmcKICAgICAvLyBzdWNj
ZWVkczsgUmV0dXJucyBkZWZhdWx0VmFsdWUgb3RoZXJ3aXNlLiBUaGlzIGZ1bmN0aW9uIGNhbgog
ICAgIC8vIHJldHVybiBOYU4gb3IgSW5maW5pdHkgb25seSBpZiBkZWZhdWx0VmFsdWUgaXMgTmFO
IG9yIEluZmluaXR5LgotICAgIHZpcnR1YWwgZG91YmxlIHBhcnNlVG9Eb3VibGUoY29uc3QgU3Ry
aW5nJiwgZG91YmxlIGRlZmF1bHRWYWx1ZSkgY29uc3Q7Ci0KLSAgICAvLyBQYXJzZXMgdGhlIHNw
ZWNpZmllZCBzdHJpbmcgZm9yIHRoZSB0eXBlIGFzIHBhcnNlVG9Eb3VibGUoKSBkb2VzLgotICAg
IC8vIEluIGFkZGl0aW9uLCBpdCBzdG9yZXMgdGhlIG51bWJlciBvZiBkaWdpdHMgYWZ0ZXIgdGhl
IGRlY2ltYWwgcG9pbnQKLSAgICAvLyBpbnRvICpkZWNpbWFsUGxhY2VzLgotICAgIHZpcnR1YWwg
ZG91YmxlIHBhcnNlVG9Eb3VibGVXaXRoRGVjaW1hbFBsYWNlcyhjb25zdCBTdHJpbmcmLCBkb3Vi
bGUgZGVmYXVsdFZhbHVlLCB1bnNpZ25lZCogZGVjaW1hbFBsYWNlcykgY29uc3Q7CisgICAgdmly
dHVhbCBEZWNpbWFsIHBhcnNlVG9EZWNpbWFsKGNvbnN0IFN0cmluZyYsIGNvbnN0IERlY2ltYWwm
IGRlZmF1bHRWYWx1ZSkgY29uc3Q7CiAKICAgICAvLyBQYXJzZXMgdGhlIHNwZWNpZmllZCBzdHJp
bmcgZm9yIHRoaXMgSW5wdXRUeXBlLCBhbmQgcmV0dXJucyB0cnVlIGlmIGl0CiAgICAgLy8gaXMg
c3VjY2Vzc2Z1bGx5IHBhcnNlZC4gQW4gaW5zdGFuY2UgcG9pbnRlZCBieSB0aGUgRGF0ZUNvbXBv
bmVudHMqCkBAIC0yNzksNyArMjc1LDcgQEAgcHVibGljOgogICAgIC8vIENyZWF0ZSBhIHN0cmlu
ZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgc3BlY2lmaWVkIGRvdWJsZSB2YWx1ZSBmb3IgdGhlCiAg
ICAgLy8gaW5wdXQgdHlwZS4gSWYgTmFOIG9yIEluZmluaXR5IGlzIHNwZWNpZmllZCwgdGhpcyBy
ZXR1cm5zIGFuIGVtcHR5CiAgICAgLy8gc3RyaW5nLiBUaGlzIHNob3VsZCBub3QgYmUgY2FsbGVk
IGZvciB0eXBlcyB3aXRob3V0IHZhbHVlQXNOdW1iZXIuCi0gICAgdmlydHVhbCBTdHJpbmcgc2Vy
aWFsaXplKGRvdWJsZSkgY29uc3Q7CisgICAgdmlydHVhbCBTdHJpbmcgc2VyaWFsaXplKGNvbnN0
IERlY2ltYWwmKSBjb25zdDsKIAogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0luZGV0ZXJtaW5h
dGVBcHBlYXJhbmNlKCkgY29uc3Q7CiAKQEAgLTI5MywxMCArMjg5LDExIEBAIHByb3RlY3RlZDoK
ICAgICBIVE1MSW5wdXRFbGVtZW50KiBlbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50
OyB9CiAgICAgdm9pZCBkaXNwYXRjaFNpbXVsYXRlZENsaWNrSWZBY3RpdmUoS2V5Ym9hcmRFdmVu
dCopIGNvbnN0OwogICAgIENocm9tZSogY2hyb21lKCkgY29uc3Q7CisgICAgRGVjaW1hbCBwYXJz
ZVRvRGVjaW1hbChjb25zdCBTdHJpbmcmKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICAvLyBIZWxw
ZXIgZm9yIHN0ZXBVcCgpL3N0ZXBEb3duKCkuIEFkZHMgc3RlcCB2YWx1ZSAqIGNvdW50IHRvIHRo
ZSBjdXJyZW50IHZhbHVlLgotICAgIHZvaWQgYXBwbHlTdGVwKGRvdWJsZSBjb3VudCwgQW55U3Rl
cEhhbmRsaW5nLCBUZXh0RmllbGRFdmVudEJlaGF2aW9yLCBFeGNlcHRpb25Db2RlJik7CisgICAg
dm9pZCBhcHBseVN0ZXAoaW50IGNvdW50LCBBbnlTdGVwSGFuZGxpbmcsIFRleHRGaWVsZEV2ZW50
QmVoYXZpb3IsIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIC8vIFJhdyBwb2ludGVyIGJlY2F1c2Ug
dGhlIEhUTUxJbnB1dEVsZW1lbnQgb2JqZWN0IG93bnMgdGhpcyBJbnB1dFR5cGUgb2JqZWN0Lgog
ICAgIEhUTUxJbnB1dEVsZW1lbnQqIG1fZWxlbWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvTW9udGhJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Nb250aElu
cHV0VHlwZS5jcHAKaW5kZXggZWJkZTNiMjA1MWE2YTJkOWNkNDg0ODA2MDk1N2JiNjMwMTM5ZDNh
Mi4uNmUyODgxYThkOTUzYWQ2MzJhMWU0ZjI2YmI2OTg0MjZjN2QzZTRjOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9Nb250aElucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9Nb250aElucHV0VHlwZS5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJE
YXRlQ29tcG9uZW50cy5oIgogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVkZSA8
d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL0RhdGVNYXRoLmg+CiAjaW5jbHVkZSA8
d3RmL01hdGhFeHRyYXMuaD4KQEAgLTQ1LDkgKzQ2LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1zdGF0aWMgY29uc3QgZG91YmxlIG1vbnRo
RGVmYXVsdFN0ZXAgPSAxLjA7Ci1zdGF0aWMgY29uc3QgZG91YmxlIG1vbnRoRGVmYXVsdFN0ZXBC
YXNlID0gMC4wOwotc3RhdGljIGNvbnN0IGRvdWJsZSBtb250aFN0ZXBTY2FsZUZhY3RvciA9IDEu
MDsKK3N0YXRpYyBjb25zdCBpbnQgbW9udGhEZWZhdWx0U3RlcCA9IDE7CitzdGF0aWMgY29uc3Qg
aW50IG1vbnRoRGVmYXVsdFN0ZXBCYXNlID0gMDsKK3N0YXRpYyBjb25zdCBpbnQgbW9udGhTdGVw
U2NhbGVGYWN0b3IgPSAxOwogCiBQYXNzT3duUHRyPElucHV0VHlwZT4gTW9udGhJbnB1dFR5cGU6
OmNyZWF0ZShIVE1MSW5wdXRFbGVtZW50KiBlbGVtZW50KQogewpAQCAtNzQsMTUgKzc1LDE1IEBA
IGRvdWJsZSBNb250aElucHV0VHlwZTo6dmFsdWVBc0RhdGUoKSBjb25zdAogICAgIHJldHVybiBt
c2VjOwogfQogCi1TdHJpbmcgTW9udGhJbnB1dFR5cGU6OnNlcmlhbGl6ZVdpdGhNaWxsaXNlY29u
ZHMoZG91YmxlIHZhbHVlKSBjb25zdAorU3RyaW5nIE1vbnRoSW5wdXRUeXBlOjpzZXJpYWxpemVX
aXRoTWlsbGlzZWNvbmRzKGNvbnN0IERlY2ltYWwmIHZhbHVlKSBjb25zdAogewogICAgIERhdGVD
b21wb25lbnRzIGRhdGU7Ci0gICAgaWYgKCFkYXRlLnNldE1pbGxpc2Vjb25kc1NpbmNlRXBvY2hG
b3JNb250aCh2YWx1ZSkpCisgICAgaWYgKCFkYXRlLnNldE1pbGxpc2Vjb25kc1NpbmNlRXBvY2hG
b3JNb250aChjb252ZXJ0RGVjaW1hbFRvRG91YmxlKHZhbHVlKSkpCiAgICAgICAgIHJldHVybiBT
dHJpbmcoKTsKICAgICByZXR1cm4gc2VyaWFsaXplV2l0aENvbXBvbmVudHMoZGF0ZSk7CiB9CiAK
LWRvdWJsZSBNb250aElucHV0VHlwZTo6ZGVmYXVsdFZhbHVlRm9yU3RlcFVwKCkgY29uc3QKK0Rl
Y2ltYWwgTW9udGhJbnB1dFR5cGU6OmRlZmF1bHRWYWx1ZUZvclN0ZXBVcCgpIGNvbnN0CiB7CiAg
ICAgZG91YmxlIGN1cnJlbnQgPSBjdXJyZW50VGltZU1TKCk7CiAgICAgZG91YmxlIHV0Y09mZnNl
dCA9IGNhbGN1bGF0ZVVUQ09mZnNldCgpOwpAQCAtOTQsMjggKzk1LDI4IEBAIGRvdWJsZSBNb250
aElucHV0VHlwZTo6ZGVmYXVsdFZhbHVlRm9yU3RlcFVwKCkgY29uc3QKICAgICBkYXRlLnNldE1p
bGxpc2Vjb25kc1NpbmNlRXBvY2hGb3JNb250aChjdXJyZW50KTsKICAgICBkb3VibGUgbW9udGhz
ID0gZGF0ZS5tb250aHNTaW5jZUVwb2NoKCk7CiAgICAgQVNTRVJUKGlzZmluaXRlKG1vbnRocykp
OwotICAgIHJldHVybiBtb250aHM7CisgICAgcmV0dXJuIGNvbnZlcnREb3VibGVUb0RlY2ltYWwo
bW9udGhzKTsKIH0KIAogU3RlcFJhbmdlIE1vbnRoSW5wdXRUeXBlOjpjcmVhdGVTdGVwUmFuZ2Uo
QW55U3RlcEhhbmRsaW5nIGFueVN0ZXBIYW5kbGluZykgY29uc3QKIHsKICAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKGNvbnN0IFN0ZXBSYW5nZTo6U3RlcERlc2NyaXB0aW9uLCBzdGVwRGVzY3JpcHRp
b24sIChtb250aERlZmF1bHRTdGVwLCBtb250aERlZmF1bHRTdGVwQmFzZSwgbW9udGhTdGVwU2Nh
bGVGYWN0b3IsIFN0ZXBSYW5nZTo6UGFyc2VkU3RlcFZhbHVlU2hvdWxkQmVJbnRlZ2VyKSk7CiAK
LSAgICBkb3VibGUgc3RlcEJhc2UgPSBwYXJzZVRvRG91YmxlKGVsZW1lbnQoKS0+ZmFzdEdldEF0
dHJpYnV0ZShtaW5BdHRyKSwgRGF0ZUNvbXBvbmVudHM6Om1pbmltdW1Nb250aCgpKTsKLSAgICBk
b3VibGUgbWluaW11bSA9IHBhcnNlVG9Eb3VibGUoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRl
KG1pbkF0dHIpLCBEYXRlQ29tcG9uZW50czo6bWluaW11bU1vbnRoKCkpOwotICAgIGRvdWJsZSBt
YXhpbXVtID0gcGFyc2VUb0RvdWJsZShlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUobWF4QXR0
ciksIERhdGVDb21wb25lbnRzOjptYXhpbXVtTW9udGgoKSk7Ci0gICAgU3RlcFJhbmdlOjpEb3Vi
bGVXaXRoRGVjaW1hbFBsYWNlc09yTWlzc2luZyBzdGVwID0gU3RlcFJhbmdlOjpwYXJzZVN0ZXAo
YW55U3RlcEhhbmRsaW5nLCBzdGVwRGVzY3JpcHRpb24sIGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJp
YnV0ZShzdGVwQXR0cikpOworICAgIGNvbnN0IERlY2ltYWwgc3RlcEJhc2UgPSBwYXJzZVRvRGVj
aW1hbChlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUobWluQXR0ciksIGNvbnZlcnREb3VibGVU
b0RlY2ltYWwoRGF0ZUNvbXBvbmVudHM6Om1pbmltdW1Nb250aCgpKSk7CisgICAgY29uc3QgRGVj
aW1hbCBtaW5pbXVtID0gc3RlcEJhc2U7CisgICAgY29uc3QgRGVjaW1hbCBtYXhpbXVtID0gcGFy
c2VUb0RlY2ltYWwoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1heEF0dHIpLCBjb252ZXJ0
RG91YmxlVG9EZWNpbWFsKERhdGVDb21wb25lbnRzOjptYXhpbXVtTW9udGgoKSkpOworICAgIGNv
bnN0IFN0ZXBSYW5nZTo6RGVjaW1hbE9yTWlzc2luZyBzdGVwID0gU3RlcFJhbmdlOjpwYXJzZVN0
ZXAoYW55U3RlcEhhbmRsaW5nLCBzdGVwRGVzY3JpcHRpb24sIGVsZW1lbnQoKS0+ZmFzdEdldEF0
dHJpYnV0ZShzdGVwQXR0cikpOwogICAgIHJldHVybiBTdGVwUmFuZ2Uoc3RlcEJhc2UsIG1pbmlt
dW0sIG1heGltdW0sIHN0ZXAsIHN0ZXBEZXNjcmlwdGlvbik7CiB9CiAKLWRvdWJsZSBNb250aElu
cHV0VHlwZTo6cGFyc2VUb0RvdWJsZShjb25zdCBTdHJpbmcmIHNyYywgZG91YmxlIGRlZmF1bHRW
YWx1ZSkgY29uc3QKK0RlY2ltYWwgTW9udGhJbnB1dFR5cGU6OnBhcnNlVG9EZWNpbWFsKGNvbnN0
IFN0cmluZyYgc3JjLCBjb25zdCBEZWNpbWFsJiBkZWZhdWx0VmFsdWUpIGNvbnN0CiB7CiAgICAg
RGF0ZUNvbXBvbmVudHMgZGF0ZTsKICAgICBpZiAoIXBhcnNlVG9EYXRlQ29tcG9uZW50cyhzcmMs
ICZkYXRlKSkKICAgICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTsKICAgICBkb3VibGUgbW9udGhz
ID0gZGF0ZS5tb250aHNTaW5jZUVwb2NoKCk7CiAgICAgQVNTRVJUKGlzZmluaXRlKG1vbnRocykp
OwotICAgIHJldHVybiBtb250aHM7CisgICAgcmV0dXJuIGNvbnZlcnREb3VibGVUb0RlY2ltYWwo
bW9udGhzKTsKIH0KIAogYm9vbCBNb250aElucHV0VHlwZTo6cGFyc2VUb0RhdGVDb21wb25lbnRz
SW50ZXJuYWwoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgRGF0ZUNv
bXBvbmVudHMqIG91dCkgY29uc3QKQEAgLTEyNSwxMCArMTI2LDEwIEBAIGJvb2wgTW9udGhJbnB1
dFR5cGU6OnBhcnNlVG9EYXRlQ29tcG9uZW50c0ludGVybmFsKGNvbnN0IFVDaGFyKiBjaGFyYWN0
ZXJzLCB1bnNpCiAgICAgcmV0dXJuIG91dC0+cGFyc2VNb250aChjaGFyYWN0ZXJzLCBsZW5ndGgs
IDAsIGVuZCkgJiYgZW5kID09IGxlbmd0aDsKIH0KIAotYm9vbCBNb250aElucHV0VHlwZTo6c2V0
TWlsbGlzZWNvbmRUb0RhdGVDb21wb25lbnRzKGRvdWJsZSB2YWx1ZSwgRGF0ZUNvbXBvbmVudHMq
IGRhdGUpIGNvbnN0Citib29sIE1vbnRoSW5wdXRUeXBlOjpzZXRNaWxsaXNlY29uZFRvRGF0ZUNv
bXBvbmVudHMoY29uc3QgRGVjaW1hbCYgdmFsdWUsIERhdGVDb21wb25lbnRzKiBkYXRlKSBjb25z
dAogewogICAgIEFTU0VSVChkYXRlKTsKLSAgICByZXR1cm4gZGF0ZS0+c2V0TW9udGhzU2luY2VF
cG9jaCh2YWx1ZSk7CisgICAgcmV0dXJuIGRhdGUtPnNldE1vbnRoc1NpbmNlRXBvY2goY29udmVy
dERlY2ltYWxUb0RvdWJsZSh2YWx1ZSkpOwogfQogCiBib29sIE1vbnRoSW5wdXRUeXBlOjppc01v
bnRoRmllbGQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Nb250aElu
cHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Nb250aElucHV0VHlwZS5oCmluZGV4IGQw
N2IwMWJjYjZhYWExOTU3MWRlMmM4ZjExZTYzOGJhZDAxYmIwNTEuLjhjNTM1N2U4YWE1YTk1OTI4
MzYwYTFjYTY3ODk3ZDQ3NjFlNWQzYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
TW9udGhJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01vbnRoSW5wdXRUeXBl
LmgKQEAgLTQ2LDEyICs0NiwxMiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgY29uc3QgQXRvbWlj
U3RyaW5nJiBmb3JtQ29udHJvbFR5cGUoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIERh
dGVDb21wb25lbnRzOjpUeXBlIGRhdGVUeXBlKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCBkb3VibGUgdmFsdWVBc0RhdGUoKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIFN0cmlu
ZyBzZXJpYWxpemVXaXRoTWlsbGlzZWNvbmRzKGRvdWJsZSkgY29uc3QgT1ZFUlJJREU7Ci0gICAg
dmlydHVhbCBkb3VibGUgcGFyc2VUb0RvdWJsZShjb25zdCBTdHJpbmcmLCBkb3VibGUpIGNvbnN0
IE9WRVJSSURFOwotICAgIHZpcnR1YWwgZG91YmxlIGRlZmF1bHRWYWx1ZUZvclN0ZXBVcCgpIGNv
bnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgU3RyaW5nIHNlcmlhbGl6ZVdpdGhNaWxsaXNlY29u
ZHMoY29uc3QgRGVjaW1hbCYpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgRGVjaW1hbCBw
YXJzZVRvRGVjaW1hbChjb25zdCBTdHJpbmcmLCBjb25zdCBEZWNpbWFsJikgY29uc3QgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCBEZWNpbWFsIGRlZmF1bHRWYWx1ZUZvclN0ZXBVcCgpIGNvbnN0IE9W
RVJSSURFOwogICAgIHZpcnR1YWwgU3RlcFJhbmdlIGNyZWF0ZVN0ZXBSYW5nZShBbnlTdGVwSGFu
ZGxpbmcpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBwYXJzZVRvRGF0ZUNvbXBv
bmVudHNJbnRlcm5hbChjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCwgRGF0ZUNvbXBvbmVu
dHMqKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgc2V0TWlsbGlzZWNvbmRUb0Rh
dGVDb21wb25lbnRzKGRvdWJsZSwgRGF0ZUNvbXBvbmVudHMqKSBjb25zdCBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIGJvb2wgc2V0TWlsbGlzZWNvbmRUb0RhdGVDb21wb25lbnRzKGNvbnN0IERlY2lt
YWwmLCBEYXRlQ29tcG9uZW50cyopIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBp
c01vbnRoRmllbGQoKSBjb25zdCBPVkVSUklERTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvTnVtYmVySW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTnVt
YmVySW5wdXRUeXBlLmNwcAppbmRleCBjZmRjN2Q0OTc3NGM4OTgzZjljZDA4YjcwZGFlNTY3Mzlh
MDA2YzEwLi41OTg1YThkZjRiOTBkNDdmMTM4OWNjYTU4MmJjNjkxOTRjOTI4NDg3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL051bWJlcklucHV0VHlwZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9OdW1iZXJJbnB1dFR5cGUuY3BwCkBAIC00OCwyNSArNDgsMjkgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKLXVzaW5nIG5h
bWVzcGFjZSBzdGQ7CiAKLXN0YXRpYyBjb25zdCBkb3VibGUgbnVtYmVyRGVmYXVsdFN0ZXAgPSAx
LjA7Ci1zdGF0aWMgY29uc3QgZG91YmxlIG51bWJlckRlZmF1bHRTdGVwQmFzZSA9IDAuMDsKLXN0
YXRpYyBjb25zdCBkb3VibGUgbnVtYmVyU3RlcFNjYWxlRmFjdG9yID0gMS4wOworc3RhdGljIGNv
bnN0IGludCBudW1iZXJEZWZhdWx0U3RlcCA9IDE7CitzdGF0aWMgY29uc3QgaW50IG51bWJlckRl
ZmF1bHRTdGVwQmFzZSA9IDA7CitzdGF0aWMgY29uc3QgaW50IG51bWJlclN0ZXBTY2FsZUZhY3Rv
ciA9IDE7CiAKLXN0YXRpYyB1bnNpZ25lZCBsZW5ndGhCZWZvcmVEZWNpbWFsUG9pbnQoZG91Ymxl
IHZhbHVlKQorc3RhdGljIHVuc2lnbmVkIGNhbGN1bGF0ZVJlbmRlclNpemUoY29uc3QgRGVjaW1h
bCYgdmFsdWUpCiB7Ci0gICAgLy8gSWYgdmFsdWUgaXMgbmVnYXRpdmUsICctJyBzaG91bGQgYmUg
Y291bnRlZC4KLQotICAgIGRvdWJsZSBhYnNvbHV0ZVZhbHVlID0gZmFicyh2YWx1ZSk7Ci0gICAg
aWYgKGFic29sdXRlVmFsdWUgPCAxKQotICAgICAgICByZXR1cm4gdmFsdWUgPCAwID8gMiA6IDE7
Ci0KLSAgICB1bnNpZ25lZCBsZW5ndGggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obG9nMTAoZmxv
b3IoYWJzb2x1dGVWYWx1ZSkpKSArIDE7Ci0gICAgaWYgKHZhbHVlIDwgMCkKLSAgICAgICAgbGVu
Z3RoICs9IDE7CisgICAgQVNTRVJUKHZhbHVlLmlzRmluaXRlKCkpOworICAgIGNvbnN0IHVuc2ln
bmVkIGRpZ2l0c1NpemUgPSBTdHJpbmc6Om51bWJlcih2YWx1ZS52YWx1ZSgpLmNvZWZmaWNpZW50
KCkpLmxlbmd0aCgpOworICAgIGNvbnN0IHVuc2lnbmVkIHNpZ25TaXplID0gdmFsdWUuaXNOZWdh
dGl2ZSgpID8gMSA6IDA7CisgICAgaWYgKCF2YWx1ZS5leHBvbmVudCgpKQorICAgICAgICByZXR1
cm4gc2lnblNpemUgKyBkaWdpdHNTaXplOworICAgIGNvbnN0IGludCBhZGp1c3RlZEV4cG9uZW50
ID0gdmFsdWUuZXhwb25lbnQoKSArIGRpZ2l0c1NpemUgLSAxOworICAgIGlmIChhZGp1c3RlZEV4
cG9uZW50ID49IDApIHsKKyAgICAgICAgLy8gSW4gY2FzZSBvZiAiMTIzLjQ1NiIKKyAgICAgICAg
Y29uc3QgdW5zaWduZWQgZG90U2l6ZSA9IDE7CisgICAgICAgIHJldHVybiBzaWduU2l6ZSArIGRp
Z2l0c1NpemUgKyBkb3RTaXplOworICAgIH0KIAotICAgIHJldHVybiBsZW5ndGg7CisgICAgLy8g
SW4gY2FzZSBvZiAiMC4wMDAxMjM0NSIKKyAgICBjb25zdCB1bnNpZ25lZCBsZWFkaW5nWmVyb0Fu
ZERvdCA9IDI7CisgICAgY29uc3QgdW5zaWduZWQgbnVtYmVyT2ZaZXJvQWZ0ZXJEb3QgPSAtYWRq
dXN0ZWRFeHBvbmVudCAtIDE7CisgICAgcmV0dXJuIHNpZ25TaXplICsgbGVhZGluZ1plcm9BbmRE
b3QgKyBudW1iZXJPZlplcm9BZnRlckRvdCArIGRpZ2l0c1NpemU7CiB9CiAKIFBhc3NPd25QdHI8
SW5wdXRUeXBlPiBOdW1iZXJJbnB1dFR5cGU6OmNyZWF0ZShIVE1MSW5wdXRFbGVtZW50KiBlbGVt
ZW50KQpAQCAtODEsMjAgKzg1LDM0IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgTnVtYmVySW5wdXRU
eXBlOjpmb3JtQ29udHJvbFR5cGUoKSBjb25zdAogCiBkb3VibGUgTnVtYmVySW5wdXRUeXBlOjp2
YWx1ZUFzTnVtYmVyKCkgY29uc3QKIHsKLSAgICByZXR1cm4gcGFyc2VUb0RvdWJsZShlbGVtZW50
KCktPnZhbHVlKCksIG51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpKTsKKyAgICBy
ZXR1cm4gcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUoZWxlbWVudCgpLT52YWx1ZSgpKTsKIH0K
IAogdm9pZCBOdW1iZXJJbnB1dFR5cGU6OnNldFZhbHVlQXNOdW1iZXIoZG91YmxlIG5ld1ZhbHVl
LCBUZXh0RmllbGRFdmVudEJlaGF2aW9yIGV2ZW50QmVoYXZpb3IsIEV4Y2VwdGlvbkNvZGUmIGVj
KSBjb25zdAogewotICAgIGlmIChuZXdWYWx1ZSA8IC1udW1lcmljX2xpbWl0czxmbG9hdD46Om1h
eCgpKSB7CisgICAgaWYgKG5ld1ZhbHVlIDwgLXN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+Ojpt
YXgoKSkgeworICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIGlmIChuZXdWYWx1ZSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+Ojpt
YXgoKSkgeworICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIGVsZW1lbnQoKS0+c2V0VmFsdWUoc2VyaWFsaXplRm9yTnVtYmVyVHlwZShu
ZXdWYWx1ZSksIGV2ZW50QmVoYXZpb3IpOworfQorCit2b2lkIE51bWJlcklucHV0VHlwZTo6c2V0
VmFsdWVBc051bWJlcihjb25zdCBEZWNpbWFsJiBuZXdWYWx1ZSwgVGV4dEZpZWxkRXZlbnRCZWhh
dmlvciBldmVudEJlaGF2aW9yLCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKK3sKKyAgICBjb25z
dCBEZWNpbWFsIGZsb2F0TWF4ID0gY29udmVydERvdWJsZVRvRGVjaW1hbChzdGQ6Om51bWVyaWNf
bGltaXRzPGZsb2F0Pjo6bWF4KCkpOworICAgIGlmIChuZXdWYWx1ZSA8IC1mbG9hdE1heCkgewog
ICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwogICAgICAgICByZXR1cm47CiAgICAgfQot
ICAgIGlmIChuZXdWYWx1ZSA+IG51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4KCkpIHsKKyAgICBp
ZiAobmV3VmFsdWUgPiBmbG9hdE1heCkgewogICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJS
OwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGVsZW1lbnQoKS0+c2V0VmFsdWUoc2VyaWFs
aXplKG5ld1ZhbHVlKSwgZXZlbnRCZWhhdmlvcik7CisgICAgZWxlbWVudCgpLT5zZXRWYWx1ZShz
ZXJpYWxpemVGb3JOdW1iZXJUeXBlKG5ld1ZhbHVlKSwgZXZlbnRCZWhhdmlvcik7CiB9CiAKIGJv
b2wgTnVtYmVySW5wdXRUeXBlOjp0eXBlTWlzbWF0Y2hGb3IoY29uc3QgU3RyaW5nJiB2YWx1ZSkg
Y29uc3QKQEAgLTExMSwxNCArMTI5LDExIEBAIGJvb2wgTnVtYmVySW5wdXRUeXBlOjp0eXBlTWlz
bWF0Y2goKSBjb25zdAogU3RlcFJhbmdlIE51bWJlcklucHV0VHlwZTo6Y3JlYXRlU3RlcFJhbmdl
KEFueVN0ZXBIYW5kbGluZyBhbnlTdGVwSGFuZGxpbmcpIGNvbnN0CiB7CiAgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChjb25zdCBTdGVwUmFuZ2U6OlN0ZXBEZXNjcmlwdGlvbiwgc3RlcERlc2NyaXB0
aW9uLCAobnVtYmVyRGVmYXVsdFN0ZXAsIG51bWJlckRlZmF1bHRTdGVwQmFzZSwgbnVtYmVyU3Rl
cFNjYWxlRmFjdG9yKSk7Ci0KLSAgICB1bnNpZ25lZCBzdGVwQmFzZURlY2ltYWxQbGFjZXM7Ci0g
ICAgZG91YmxlIHN0ZXBCYXNlVmFsdWUgPSBwYXJzZVRvRG91YmxlV2l0aERlY2ltYWxQbGFjZXMo
ZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpLCBudW1iZXJEZWZhdWx0U3RlcEJh
c2UsICZzdGVwQmFzZURlY2ltYWxQbGFjZXMpOwotICAgIFN0ZXBSYW5nZTo6RG91YmxlV2l0aERl
Y2ltYWxQbGFjZXMgc3RlcEJhc2Uoc3RlcEJhc2VWYWx1ZSwgbWluKHN0ZXBCYXNlRGVjaW1hbFBs
YWNlcywgMTZ1KSk7Ci0gICAgZG91YmxlIG1pbmltdW0gPSBwYXJzZVRvRG91YmxlKGVsZW1lbnQo
KS0+ZmFzdEdldEF0dHJpYnV0ZShtaW5BdHRyKSwgLW51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4
KCkpOwotICAgIGRvdWJsZSBtYXhpbXVtID0gcGFyc2VUb0RvdWJsZShlbGVtZW50KCktPmZhc3RH
ZXRBdHRyaWJ1dGUobWF4QXR0ciksIG51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4KCkpOwotCi0g
ICAgU3RlcFJhbmdlOjpEb3VibGVXaXRoRGVjaW1hbFBsYWNlc09yTWlzc2luZyBzdGVwID0gU3Rl
cFJhbmdlOjpwYXJzZVN0ZXAoYW55U3RlcEhhbmRsaW5nLCBzdGVwRGVzY3JpcHRpb24sIGVsZW1l
bnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShzdGVwQXR0cikpOworICAgIGNvbnN0IERlY2ltYWwgZmxv
YXRNYXggPSBjb252ZXJ0RG91YmxlVG9EZWNpbWFsKHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+
OjptYXgoKSk7CisgICAgY29uc3QgRGVjaW1hbCBzdGVwQmFzZSA9IHBhcnNlVG9EZWNpbWFsRm9y
TnVtYmVyVHlwZShlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUobWluQXR0ciksIG51bWJlckRl
ZmF1bHRTdGVwQmFzZSk7CisgICAgY29uc3QgRGVjaW1hbCBtaW5pbXVtID0gcGFyc2VUb0RlY2lt
YWxGb3JOdW1iZXJUeXBlKGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShtaW5BdHRyKSwgLWZs
b2F0TWF4KTsKKyAgICBjb25zdCBEZWNpbWFsIG1heGltdW0gPSBwYXJzZVRvRGVjaW1hbEZvck51
bWJlclR5cGUoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1heEF0dHIpLCBmbG9hdE1heCk7
CisgICAgY29uc3QgU3RlcFJhbmdlOjpEZWNpbWFsT3JNaXNzaW5nIHN0ZXAgPSBTdGVwUmFuZ2U6
OnBhcnNlU3RlcChhbnlTdGVwSGFuZGxpbmcsIHN0ZXBEZXNjcmlwdGlvbiwgZWxlbWVudCgpLT5m
YXN0R2V0QXR0cmlidXRlKHN0ZXBBdHRyKSk7CiAgICAgcmV0dXJuIFN0ZXBSYW5nZShzdGVwQmFz
ZSwgbWluaW11bSwgbWF4aW11bSwgc3RlcCwgc3RlcERlc2NyaXB0aW9uKTsKIH0KIApAQCAtMTI2
LDQ3ICsxNDEsMTkgQEAgYm9vbCBOdW1iZXJJbnB1dFR5cGU6OnNpemVTaG91bGRJbmNsdWRlRGVj
b3JhdGlvbihpbnQgZGVmYXVsdFNpemUsIGludCYgcHJlZmVycmUKIHsKICAgICBwcmVmZXJyZWRT
aXplID0gZGVmYXVsdFNpemU7CiAKLSAgICB1bnNpZ25lZCBtaW5WYWx1ZURlY2ltYWxQbGFjZXM7
Ci0gICAgU3RyaW5nIG1pblZhbHVlID0gZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1pbkF0
dHIpOwotICAgIGRvdWJsZSBtaW5WYWx1ZURvdWJsZSA9IHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJU
eXBlV2l0aERlY2ltYWxQbGFjZXMobWluVmFsdWUsICZtaW5WYWx1ZURlY2ltYWxQbGFjZXMpOwot
ICAgIGlmICghaXNmaW5pdGUobWluVmFsdWVEb3VibGUpKQorICAgIFN0cmluZyBzdGVwU3RyaW5n
ID0gZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKHN0ZXBBdHRyKTsKKyAgICBpZiAoZXF1YWxJ
Z25vcmluZ0Nhc2Uoc3RlcFN0cmluZywgImFueSIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICB1bnNpZ25lZCBtYXhWYWx1ZURlY2ltYWxQbGFjZXM7Ci0gICAgU3RyaW5nIG1heFZhbHVl
ID0gZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1heEF0dHIpOwotICAgIGRvdWJsZSBtYXhW
YWx1ZURvdWJsZSA9IHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlV2l0aERlY2ltYWxQbGFjZXMo
bWF4VmFsdWUsICZtYXhWYWx1ZURlY2ltYWxQbGFjZXMpOwotICAgIGlmICghaXNmaW5pdGUobWF4
VmFsdWVEb3VibGUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAobWF4VmFsdWVE
b3VibGUgPCBtaW5WYWx1ZURvdWJsZSkgewotICAgICAgICBtYXhWYWx1ZURvdWJsZSA9IG1pblZh
bHVlRG91YmxlOwotICAgICAgICBtYXhWYWx1ZURlY2ltYWxQbGFjZXMgPSBtaW5WYWx1ZURlY2lt
YWxQbGFjZXM7CisgICAgY29uc3QgRGVjaW1hbCBtaW5pbXVtID0gcGFyc2VUb0RlY2ltYWxGb3JO
dW1iZXJUeXBlKGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShtaW5BdHRyKSk7CisgICAgY29u
c3QgRGVjaW1hbCBtYXhpbXVtID0gcGFyc2VUb0RlY2ltYWxGb3JOdW1iZXJUeXBlKGVsZW1lbnQo
KS0+ZmFzdEdldEF0dHJpYnV0ZShtYXhBdHRyKSk7CisgICAgY29uc3QgRGVjaW1hbCBzdGVwID0g
cGFyc2VUb0RlY2ltYWxGb3JOdW1iZXJUeXBlKHN0ZXBTdHJpbmcsIDEpOworICAgIGlmIChtaW5p
bXVtLmlzRmluaXRlKCkgJiYgbWF4aW11bS5pc0Zpbml0ZSgpICYmIHN0ZXAuaXNGaW5pdGUoKSkg
eworICAgICAgICBwcmVmZXJyZWRTaXplID0gbWF4KG1heChjYWxjdWxhdGVSZW5kZXJTaXplKG1p
bmltdW0pLCBjYWxjdWxhdGVSZW5kZXJTaXplKG1heGltdW0pKSwgY2FsY3VsYXRlUmVuZGVyU2l6
ZShzdGVwKSk7CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIFN0cmluZyBzdGVw
VmFsdWUgPSBlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUoc3RlcEF0dHIpOwotICAgIGlmIChl
cXVhbElnbm9yaW5nQ2FzZShzdGVwVmFsdWUsICJhbnkiKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIHVuc2lnbmVkIHN0ZXBWYWx1ZURlY2ltYWxQbGFjZXM7Ci0gICAgZG91YmxlIHN0ZXBW
YWx1ZURvdWJsZSA9IHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlV2l0aERlY2ltYWxQbGFjZXMo
c3RlcFZhbHVlLCAmc3RlcFZhbHVlRGVjaW1hbFBsYWNlcyk7Ci0gICAgaWYgKCFpc2Zpbml0ZShz
dGVwVmFsdWVEb3VibGUpKSB7Ci0gICAgICAgIHN0ZXBWYWx1ZURvdWJsZSA9IDE7Ci0gICAgICAg
IHN0ZXBWYWx1ZURlY2ltYWxQbGFjZXMgPSAwOwotICAgIH0KLQotICAgIHVuc2lnbmVkIGxlbmd0
aCA9IGxlbmd0aEJlZm9yZURlY2ltYWxQb2ludChtaW5WYWx1ZURvdWJsZSk7Ci0gICAgbGVuZ3Ro
ID0gbWF4KGxlbmd0aCwgbGVuZ3RoQmVmb3JlRGVjaW1hbFBvaW50KG1heFZhbHVlRG91YmxlKSk7
Ci0gICAgbGVuZ3RoID0gbWF4KGxlbmd0aCwgbGVuZ3RoQmVmb3JlRGVjaW1hbFBvaW50KHN0ZXBW
YWx1ZURvdWJsZSkpOwotCi0gICAgdW5zaWduZWQgbGVuZ3RoQWZ0ZXJEZWNpbWFsUG9pbnQgPSBt
aW5WYWx1ZURlY2ltYWxQbGFjZXM7Ci0gICAgbGVuZ3RoQWZ0ZXJEZWNpbWFsUG9pbnQgPSBtYXgo
bGVuZ3RoQWZ0ZXJEZWNpbWFsUG9pbnQsIG1heFZhbHVlRGVjaW1hbFBsYWNlcyk7Ci0gICAgbGVu
Z3RoQWZ0ZXJEZWNpbWFsUG9pbnQgPSBtYXgobGVuZ3RoQWZ0ZXJEZWNpbWFsUG9pbnQsIHN0ZXBW
YWx1ZURlY2ltYWxQbGFjZXMpOwotCi0gICAgLy8gJy4nIHNob3VsZCBiZSBjb3VudGVkIGlmIHRo
ZSB2YWx1ZSBoYXMgZGVjaW1hbCBwbGFjZXMuCi0gICAgaWYgKGxlbmd0aEFmdGVyRGVjaW1hbFBv
aW50ID4gMCkKLSAgICAgICAgbGVuZ3RoICs9IGxlbmd0aEFmdGVyRGVjaW1hbFBvaW50ICsgMTsK
LQotICAgIHByZWZlcnJlZFNpemUgPSBsZW5ndGg7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0
dXJuIGZhbHNlOwogfQogCiBib29sIE51bWJlcklucHV0VHlwZTo6aXNTdGVwcGFibGUoKSBjb25z
dApAQCAtMTg2LDIxICsxNzMsMTQgQEAgdm9pZCBOdW1iZXJJbnB1dFR5cGU6OmhhbmRsZVdoZWVs
RXZlbnQoV2hlZWxFdmVudCogZXZlbnQpCiAgICAgaGFuZGxlV2hlZWxFdmVudEZvclNwaW5CdXR0
b24oZXZlbnQpOwogfQogCi1kb3VibGUgTnVtYmVySW5wdXRUeXBlOjpwYXJzZVRvRG91YmxlKGNv
bnN0IFN0cmluZyYgc3JjLCBkb3VibGUgZGVmYXVsdFZhbHVlKSBjb25zdAotewotICAgIHJldHVy
biBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZShzcmMsIGRlZmF1bHRWYWx1ZSk7Ci19Ci0KLWRv
dWJsZSBOdW1iZXJJbnB1dFR5cGU6OnBhcnNlVG9Eb3VibGVXaXRoRGVjaW1hbFBsYWNlcyhjb25z
dCBTdHJpbmcmIHNyYywgZG91YmxlIGRlZmF1bHRWYWx1ZSwgdW5zaWduZWQgKmRlY2ltYWxQbGFj
ZXMpIGNvbnN0CitEZWNpbWFsIE51bWJlcklucHV0VHlwZTo6cGFyc2VUb0RlY2ltYWwoY29uc3Qg
U3RyaW5nJiBzdHJpbmcsIGNvbnN0IERlY2ltYWwmIGRlZmF1bHRWYWx1ZSkgY29uc3QKIHsKLSAg
ICByZXR1cm4gcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGVXaXRoRGVjaW1hbFBsYWNlcyhzcmMs
IGRlY2ltYWxQbGFjZXMsIGRlZmF1bHRWYWx1ZSk7CisgICAgcmV0dXJuIHBhcnNlVG9EZWNpbWFs
Rm9yTnVtYmVyVHlwZShzdHJpbmcsIGRlZmF1bHRWYWx1ZSk7CiB9CiAKLVN0cmluZyBOdW1iZXJJ
bnB1dFR5cGU6OnNlcmlhbGl6ZShkb3VibGUgdmFsdWUpIGNvbnN0CitTdHJpbmcgTnVtYmVySW5w
dXRUeXBlOjpzZXJpYWxpemUoY29uc3QgRGVjaW1hbCYgdmFsdWUpIGNvbnN0CiB7Ci0gICAgaWYg
KCFpc2Zpbml0ZSh2YWx1ZSkpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICByZXR1cm4g
c2VyaWFsaXplRm9yTnVtYmVyVHlwZSh2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlLmlzRmluaXRl
KCkgPyBzZXJpYWxpemVGb3JOdW1iZXJUeXBlKHZhbHVlKSA6IGVtcHR5U3RyaW5nKCk7CiB9CiAK
IHZvaWQgTnVtYmVySW5wdXRUeXBlOjpoYW5kbGVCbHVyRXZlbnQoKQpAQCAtMjI1LDEzICsyMDUs
NyBAQCBTdHJpbmcgTnVtYmVySW5wdXRUeXBlOjpsb2NhbGl6ZVZhbHVlKGNvbnN0IFN0cmluZyYg
cHJvcG9zZWRWYWx1ZSkgY29uc3QKICAgICAvLyBXZSBkb24ndCBsb2NhbGl6ZSBzY2llbnRpZmlj
IG5vdGF0aW9ucy4KICAgICBpZiAocHJvcG9zZWRWYWx1ZS5maW5kKGlzRSkgIT0gbm90Rm91bmQp
CiAgICAgICAgIHJldHVybiBwcm9wb3NlZFZhbHVlOwotICAgIC8vIEZJWE1FOiBUaGUgZm9sbG93
aW5nIHRocmVlIGxpbmVzIHNob3VsZCBiZSByZW1vdmVkIHdoZW4gd2UKLSAgICAvLyByZW1vdmUg
dGhlIHNlY29uZCBhcmd1bWVudCBvZiBjb252ZXJ0VG9Mb2NhbGl6ZWROdW1iZXIoKS4KLSAgICAv
LyBOb3RlOiBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZVdpdGhEZWNpbWFsUGxhY2VzIHNldCB6
ZXJvIHRvIGRlY2ltYWxQbGFjZXMKLSAgICAvLyBpZiBjdXJyZW50VmFsdWUgaXNuJ3QgdmFsaWQg
ZmxvYXRpbmcgcG9pbnRlciBudW1iZXIuCi0gICAgdW5zaWduZWQgZGVjaW1hbFBsYWNlOwotICAg
IHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlV2l0aERlY2ltYWxQbGFjZXMocHJvcG9zZWRWYWx1
ZSwgJmRlY2ltYWxQbGFjZSk7Ci0gICAgcmV0dXJuIGNvbnZlcnRUb0xvY2FsaXplZE51bWJlcihw
cm9wb3NlZFZhbHVlLCBkZWNpbWFsUGxhY2UpOworICAgIHJldHVybiBjb252ZXJ0VG9Mb2NhbGl6
ZWROdW1iZXIocHJvcG9zZWRWYWx1ZSwgMCk7CiB9CiAKIFN0cmluZyBOdW1iZXJJbnB1dFR5cGU6
OnZpc2libGVWYWx1ZSgpIGNvbnN0CkBAIC0yNTIsNyArMjI2LDcgQEAgU3RyaW5nIE51bWJlcklu
cHV0VHlwZTo6Y29udmVydEZyb21WaXNpYmxlVmFsdWUoY29uc3QgU3RyaW5nJiB2aXNpYmxlVmFs
dWUpIGNvbnMKIGJvb2wgTnVtYmVySW5wdXRUeXBlOjppc0FjY2VwdGFibGVWYWx1ZShjb25zdCBT
dHJpbmcmIHByb3Bvc2VkVmFsdWUpCiB7CiAgICAgU3RyaW5nIHN0YW5kYXJkVmFsdWUgPSBjb252
ZXJ0RnJvbVZpc2libGVWYWx1ZShwcm9wb3NlZFZhbHVlKTsKLSAgICByZXR1cm4gc3RhbmRhcmRW
YWx1ZS5pc0VtcHR5KCkgfHwgcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUoc3RhbmRhcmRWYWx1
ZSwgMCk7CisgICAgcmV0dXJuIHN0YW5kYXJkVmFsdWUuaXNFbXB0eSgpIHx8IHBhcnNlVG9EZWNp
bWFsRm9yTnVtYmVyVHlwZShzdGFuZGFyZFZhbHVlKS5pc0Zpbml0ZSgpOwogfQogCiBTdHJpbmcg
TnVtYmVySW5wdXRUeXBlOjpzYW5pdGl6ZVZhbHVlKGNvbnN0IFN0cmluZyYgcHJvcG9zZWRWYWx1
ZSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTnVtYmVySW5wdXRUeXBl
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL051bWJlcklucHV0VHlwZS5oCmluZGV4IGNlNDE3N2Jm
YzM1YWM4ZTU5MDEzN2I5MzRmYzhjNWIxMjlkY2RjZWQuLmNjZmUxMzgxMzg2NzA5OGRjM2IxNjAz
MDA5OTA4Y2M0OWRhNWI0Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTnVtYmVy
SW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9OdW1iZXJJbnB1dFR5cGUuaApA
QCAtNDQsNiArNDQsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5n
JiBmb3JtQ29udHJvbFR5cGUoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGRvdWJsZSB2
YWx1ZUFzTnVtYmVyKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldFZhbHVl
QXNOdW1iZXIoZG91YmxlLCBUZXh0RmllbGRFdmVudEJlaGF2aW9yLCBFeGNlcHRpb25Db2RlJikg
Y29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldFZhbHVlQXNOdW1iZXIoY29uc3Qg
RGVjaW1hbCYsIFRleHRGaWVsZEV2ZW50QmVoYXZpb3IsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdCBP
VkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgdHlwZU1pc21hdGNoRm9yKGNvbnN0IFN0cmluZyYp
IGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCB0eXBlTWlzbWF0Y2goKSBjb25zdCBP
VkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgc2l6ZVNob3VsZEluY2x1ZGVEZWNvcmF0aW9uKGlu
dCBkZWZhdWx0U2l6ZSwgaW50JiBwcmVmZXJyZWRTaXplKSBjb25zdCBPVkVSUklERTsKQEAgLTUx
LDkgKzUyLDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFN0ZXBSYW5nZSBjcmVhdGVTdGVwUmFu
Z2UoQW55U3RlcEhhbmRsaW5nKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgaGFu
ZGxlS2V5ZG93bkV2ZW50KEtleWJvYXJkRXZlbnQqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZv
aWQgaGFuZGxlV2hlZWxFdmVudChXaGVlbEV2ZW50KikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBk
b3VibGUgcGFyc2VUb0RvdWJsZShjb25zdCBTdHJpbmcmLCBkb3VibGUpIGNvbnN0IE9WRVJSSURF
OwotICAgIHZpcnR1YWwgZG91YmxlIHBhcnNlVG9Eb3VibGVXaXRoRGVjaW1hbFBsYWNlcyhjb25z
dCBTdHJpbmcmLCBkb3VibGUsIHVuc2lnbmVkKikgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVh
bCBTdHJpbmcgc2VyaWFsaXplKGRvdWJsZSkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBE
ZWNpbWFsIHBhcnNlVG9EZWNpbWFsKGNvbnN0IFN0cmluZyYsIGNvbnN0IERlY2ltYWwmKSBjb25z
dCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFN0cmluZyBzZXJpYWxpemUoY29uc3QgRGVjaW1hbCYp
IGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVCbHVyRXZlbnQoKSBPVkVS
UklERTsKICAgICB2aXJ0dWFsIFN0cmluZyBsb2NhbGl6ZVZhbHVlKGNvbnN0IFN0cmluZyYpIGNv
bnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgU3RyaW5nIHZpc2libGVWYWx1ZSgpIGNvbnN0IE9W
RVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmNwcAppbmRleCBiNDE3ZGMz
MjAzYjg0N2FkNWM2Y2EyNWRhNTFmZDljN2Q0NjA1Y2NiLi44ZTFmOGQzZjc2MDY3NjE5MGI0ODQz
MmNiM2MyMGNhYmY1YTc4MWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1Jhbmdl
SW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmNw
cApAQCAtNTQsMTEgKzU0LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFj
ZSBIVE1MTmFtZXM7CiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCi1zdGF0aWMgY29uc3QgZG91Ymxl
IHJhbmdlRGVmYXVsdE1pbmltdW0gPSAwLjA7Ci1zdGF0aWMgY29uc3QgZG91YmxlIHJhbmdlRGVm
YXVsdE1heGltdW0gPSAxMDAuMDsKLXN0YXRpYyBjb25zdCBkb3VibGUgcmFuZ2VEZWZhdWx0U3Rl
cCA9IDEuMDsKLXN0YXRpYyBjb25zdCBkb3VibGUgcmFuZ2VEZWZhdWx0U3RlcEJhc2UgPSAwLjA7
Ci1zdGF0aWMgY29uc3QgZG91YmxlIHJhbmdlU3RlcFNjYWxlRmFjdG9yID0gMS4wOworc3RhdGlj
IGNvbnN0IGludCByYW5nZURlZmF1bHRNaW5pbXVtID0gMDsKK3N0YXRpYyBjb25zdCBpbnQgcmFu
Z2VEZWZhdWx0TWF4aW11bSA9IDEwMDsKK3N0YXRpYyBjb25zdCBpbnQgcmFuZ2VEZWZhdWx0U3Rl
cCA9IDE7CitzdGF0aWMgY29uc3QgaW50IHJhbmdlRGVmYXVsdFN0ZXBCYXNlID0gMDsKK3N0YXRp
YyBjb25zdCBpbnQgcmFuZ2VTdGVwU2NhbGVGYWN0b3IgPSAxOwogCiBQYXNzT3duUHRyPElucHV0
VHlwZT4gUmFuZ2VJbnB1dFR5cGU6OmNyZWF0ZShIVE1MSW5wdXRFbGVtZW50KiBlbGVtZW50KQog
ewpAQCAtNzcsMTAgKzc3LDEwIEBAIGNvbnN0IEF0b21pY1N0cmluZyYgUmFuZ2VJbnB1dFR5cGU6
OmZvcm1Db250cm9sVHlwZSgpIGNvbnN0CiAKIGRvdWJsZSBSYW5nZUlucHV0VHlwZTo6dmFsdWVB
c051bWJlcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHBhcnNlVG9Eb3VibGUoZWxlbWVudCgpLT52
YWx1ZSgpLCBudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKSk7CisgICAgcmV0dXJu
IHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKGVsZW1lbnQoKS0+dmFsdWUoKSk7CiB9CiAKLXZv
aWQgUmFuZ2VJbnB1dFR5cGU6OnNldFZhbHVlQXNOdW1iZXIoZG91YmxlIG5ld1ZhbHVlLCBUZXh0
RmllbGRFdmVudEJlaGF2aW9yIGV2ZW50QmVoYXZpb3IsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdAor
dm9pZCBSYW5nZUlucHV0VHlwZTo6c2V0VmFsdWVBc051bWJlcihjb25zdCBEZWNpbWFsJiBuZXdW
YWx1ZSwgVGV4dEZpZWxkRXZlbnRCZWhhdmlvciBldmVudEJlaGF2aW9yLCBFeGNlcHRpb25Db2Rl
JikgY29uc3QKIHsKICAgICBlbGVtZW50KCktPnNldFZhbHVlKHNlcmlhbGl6ZShuZXdWYWx1ZSks
IGV2ZW50QmVoYXZpb3IpOwogfQpAQCAtOTQsMTggKzk0LDE2IEBAIFN0ZXBSYW5nZSBSYW5nZUlu
cHV0VHlwZTo6Y3JlYXRlU3RlcFJhbmdlKEFueVN0ZXBIYW5kbGluZyBhbnlTdGVwSGFuZGxpbmcp
IGNvbnN0CiB7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdGVwUmFuZ2U6OlN0ZXBE
ZXNjcmlwdGlvbiwgc3RlcERlc2NyaXB0aW9uLCAocmFuZ2VEZWZhdWx0U3RlcCwgcmFuZ2VEZWZh
dWx0U3RlcEJhc2UsIHJhbmdlU3RlcFNjYWxlRmFjdG9yKSk7CiAKLSAgICBkb3VibGUgbWluaW11
bSA9IHBhcnNlVG9Eb3VibGUoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpLCBy
YW5nZURlZmF1bHRNaW5pbXVtKTsKLSAgICBkb3VibGUgbWF4aW11bSA9IHBhcnNlVG9Eb3VibGUo
ZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1heEF0dHIpLCByYW5nZURlZmF1bHRNYXhpbXVt
KTsKLSAgICBpZiAobWF4aW11bSA8IG1pbmltdW0pCi0gICAgICAgIG1heGltdW0gPSBtYXgobWlu
aW11bSwgcmFuZ2VEZWZhdWx0TWF4aW11bSk7CisgICAgY29uc3QgRGVjaW1hbCBtaW5pbXVtID0g
cGFyc2VUb0RlY2ltYWwoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpLCByYW5n
ZURlZmF1bHRNaW5pbXVtKTsKKyAgICBjb25zdCBEZWNpbWFsIG1heGltdW0gPSBTdGVwUmFuZ2U6
OmVuc3VyZU1heGltdW0ocGFyc2VUb0RlY2ltYWwoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRl
KG1heEF0dHIpLCByYW5nZURlZmF1bHRNYXhpbXVtKSwgbWluaW11bSwgcmFuZ2VEZWZhdWx0TWF4
aW11bSk7CiAKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHByZWNpc2lvblZhbHVlID0gZWxlbWVu
dCgpLT5mYXN0R2V0QXR0cmlidXRlKHByZWNpc2lvbkF0dHIpOwogICAgIGlmICghcHJlY2lzaW9u
VmFsdWUuaXNOdWxsKCkpIHsKLSAgICAgICAgU3RlcFJhbmdlOjpEb3VibGVXaXRoRGVjaW1hbFBs
YWNlc09yTWlzc2luZyBzdGVwKDEsICFlcXVhbElnbm9yaW5nQ2FzZShwcmVjaXNpb25WYWx1ZSwg
ImZsb2F0IikpOworICAgICAgICBTdGVwUmFuZ2U6OkRlY2ltYWxPck1pc3Npbmcgc3RlcCgxLCAh
ZXF1YWxJZ25vcmluZ0Nhc2UocHJlY2lzaW9uVmFsdWUsICJmbG9hdCIpKTsKICAgICAgICAgcmV0
dXJuIFN0ZXBSYW5nZShtaW5pbXVtLCBtaW5pbXVtLCBtYXhpbXVtLCBzdGVwLCBzdGVwRGVzY3Jp
cHRpb24pOwogICAgIH0KIAotICAgIFN0ZXBSYW5nZTo6RG91YmxlV2l0aERlY2ltYWxQbGFjZXNP
ck1pc3Npbmcgc3RlcCA9IFN0ZXBSYW5nZTo6cGFyc2VTdGVwKGFueVN0ZXBIYW5kbGluZywgc3Rl
cERlc2NyaXB0aW9uLCBlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUoc3RlcEF0dHIpKTsKKyAg
ICBjb25zdCBTdGVwUmFuZ2U6OkRlY2ltYWxPck1pc3Npbmcgc3RlcChTdGVwUmFuZ2U6OnBhcnNl
U3RlcChhbnlTdGVwSGFuZGxpbmcsIHN0ZXBEZXNjcmlwdGlvbiwgZWxlbWVudCgpLT5mYXN0R2V0
QXR0cmlidXRlKHN0ZXBBdHRyKSkpOwogICAgIHJldHVybiBTdGVwUmFuZ2UobWluaW11bSwgbWlu
aW11bSwgbWF4aW11bSwgc3RlcCwgc3RlcERlc2NyaXB0aW9uKTsKIH0KIApAQCAtMTM4LDI1ICsx
MzYsMTUgQEAgdm9pZCBSYW5nZUlucHV0VHlwZTo6aGFuZGxlS2V5ZG93bkV2ZW50KEtleWJvYXJk
RXZlbnQqIGV2ZW50KQogCiAgICAgY29uc3QgU3RyaW5nJiBrZXkgPSBldmVudC0+a2V5SWRlbnRp
ZmllcigpOwogCi0gICAgZG91YmxlIGN1cnJlbnQgPSBwYXJzZVRvRG91YmxlKGVsZW1lbnQoKS0+
dmFsdWUoKSwgbnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCkpOwotICAgIEFTU0VS
VChpc2Zpbml0ZShjdXJyZW50KSk7CisgICAgY29uc3QgRGVjaW1hbCBjdXJyZW50ID0gcGFyc2VU
b0RlY2ltYWxGb3JOdW1iZXJUeXBlKGVsZW1lbnQoKS0+dmFsdWUoKSk7CisgICAgQVNTRVJUKGN1
cnJlbnQuaXNGaW5pdGUoKSk7CiAKLSAgICBTdGVwUmFuZ2Ugc3RlcFJhbmdlKGNyZWF0ZVN0ZXBS
YW5nZShSZWplY3RBbnkpKTsKKyAgICBjb25zdCBTdGVwUmFuZ2Ugc3RlcFJhbmdlKGNyZWF0ZVN0
ZXBSYW5nZShSZWplY3RBbnkpKTsKIAotICAgIGRvdWJsZSBzdGVwLCBiaWdTdGVwOwotICAgIGlm
IChlcXVhbElnbm9yaW5nQ2FzZShlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUoc3RlcEF0dHIp
LCAiYW55IikpIHsKLSAgICAgICAgLy8gRklYTUU6IFdlIGNhbid0IHVzZSBzdGVwVXAoKSBmb3Ig
dGhlIHN0ZXAgdmFsdWUgImFueSIuIFNvLCB3ZSBpbmNyZWFzZQotICAgICAgICAvLyBvciBkZWNy
ZWFzZSB0aGUgdmFsdWUgYnkgMS8xMDAgb2YgdGhlIHZhbHVlIHJhbmdlLiBJcyBpdCByZWFzb25h
YmxlPwotICAgICAgICBzdGVwID0gKHN0ZXBSYW5nZS5tYXhpbXVtKCkgLSBzdGVwUmFuZ2UubWlu
aW11bSgpKSAvIDEwMDsKLSAgICAgICAgYmlnU3RlcCA9IHN0ZXAgKiAxMDsKLSAgICB9IGVsc2Ug
ewotICAgICAgICBpZiAoIWVsZW1lbnQoKS0+Z2V0QWxsb3dlZFZhbHVlU3RlcCgmc3RlcCkpCi0g
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLQotICAgICAgICBiaWdTdGVwID0gKHN0
ZXBSYW5nZS5tYXhpbXVtKCkgLSBzdGVwUmFuZ2UubWluaW11bSgpKSAvIDEwOwotICAgICAgICBp
ZiAoYmlnU3RlcCA8IHN0ZXApCi0gICAgICAgICAgICBiaWdTdGVwID0gc3RlcDsKLSAgICB9Cisg
ICAgLy8gRklYTUU6IFdlIGNhbid0IHVzZSBzdGVwVXAoKSBmb3IgdGhlIHN0ZXAgdmFsdWUgImFu
eSIuIFNvLCB3ZSBpbmNyZWFzZQorICAgIC8vIG9yIGRlY3JlYXNlIHRoZSB2YWx1ZSBieSAxLzEw
MCBvZiB0aGUgdmFsdWUgcmFuZ2UuIElzIGl0IHJlYXNvbmFibGU/CisgICAgY29uc3QgRGVjaW1h
bCBzdGVwID0gZXF1YWxJZ25vcmluZ0Nhc2UoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKHN0
ZXBBdHRyKSwgImFueSIpID8gKHN0ZXBSYW5nZS5tYXhpbXVtKCkgLSBzdGVwUmFuZ2UubWluaW11
bSgpKSAvIDEwMCA6IHN0ZXBSYW5nZS5zdGVwKCk7CisgICAgY29uc3QgRGVjaW1hbCBiaWdTdGVw
ID0gbWF4KChzdGVwUmFuZ2UubWF4aW11bSgpIC0gc3RlcFJhbmdlLm1pbmltdW0oKSkgLyAxMCwg
c3RlcCk7CiAKICAgICBib29sIGlzVmVydGljYWwgPSBmYWxzZTsKICAgICBpZiAoZWxlbWVudCgp
LT5yZW5kZXJlcigpKSB7CkBAIC0xNjQsNyArMTUyLDcgQEAgdm9pZCBSYW5nZUlucHV0VHlwZTo6
aGFuZGxlS2V5ZG93bkV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQogICAgICAgICBpc1ZlcnRp
Y2FsID0gcGFydCA9PSBTbGlkZXJWZXJ0aWNhbFBhcnQgfHwgcGFydCA9PSBNZWRpYVZvbHVtZVNs
aWRlclBhcnQ7CiAgICAgfQogCi0gICAgZG91YmxlIG5ld1ZhbHVlOworICAgIERlY2ltYWwgbmV3
VmFsdWU7CiAgICAgaWYgKGtleSA9PSAiVXAiKQogICAgICAgICBuZXdWYWx1ZSA9IGN1cnJlbnQg
KyBzdGVwOwogICAgIGVsc2UgaWYgKGtleSA9PSAiRG93biIpCkBAIC0yMTksMTYgKzIwNywxNCBA
QCBSZW5kZXJPYmplY3QqIFJhbmdlSW5wdXRUeXBlOjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVu
YSogYXJlbmEsIFJlbmRlclN0eWxlKikgYwogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJT
bGlkZXIoZWxlbWVudCgpKTsKIH0KIAotZG91YmxlIFJhbmdlSW5wdXRUeXBlOjpwYXJzZVRvRG91
YmxlKGNvbnN0IFN0cmluZyYgc3JjLCBkb3VibGUgZGVmYXVsdFZhbHVlKSBjb25zdAorRGVjaW1h
bCBSYW5nZUlucHV0VHlwZTo6cGFyc2VUb0RlY2ltYWwoY29uc3QgU3RyaW5nJiBzcmMsIGNvbnN0
IERlY2ltYWwmIGRlZmF1bHRWYWx1ZSkgY29uc3QKIHsKLSAgICByZXR1cm4gcGFyc2VUb0RvdWJs
ZUZvck51bWJlclR5cGUoc3JjLCBkZWZhdWx0VmFsdWUpOworICAgIHJldHVybiBwYXJzZVRvRGVj
aW1hbEZvck51bWJlclR5cGUoc3JjLCBkZWZhdWx0VmFsdWUpOwogfQogCi1TdHJpbmcgUmFuZ2VJ
bnB1dFR5cGU6OnNlcmlhbGl6ZShkb3VibGUgdmFsdWUpIGNvbnN0CitTdHJpbmcgUmFuZ2VJbnB1
dFR5cGU6OnNlcmlhbGl6ZShjb25zdCBEZWNpbWFsJiB2YWx1ZSkgY29uc3QKIHsKLSAgICBpZiAo
IWlzZmluaXRlKHZhbHVlKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIHJldHVybiBz
ZXJpYWxpemVGb3JOdW1iZXJUeXBlKHZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWUuaXNGaW5pdGUo
KSA/IHNlcmlhbGl6ZUZvck51bWJlclR5cGUodmFsdWUpIDogZW1wdHlTdHJpbmcoKTsKIH0KIAog
Ly8gRklYTUU6IENvdWxkIHNoYXJlIHRoaXMgd2l0aCBCYXNlQ2xpY2thYmxlV2l0aEtleUlucHV0
VHlwZSBhbmQgQmFzZUNoZWNrYWJsZUlucHV0VHlwZSBpZiB3ZSBoYWQgYSBjb21tb24gYmFzZSBj
bGFzcy4KQEAgLTI2OCw4ICsyNTQsOCBAQCBTdHJpbmcgUmFuZ2VJbnB1dFR5cGU6OmZhbGxiYWNr
VmFsdWUoKSBjb25zdAogCiBTdHJpbmcgUmFuZ2VJbnB1dFR5cGU6OnNhbml0aXplVmFsdWUoY29u
c3QgU3RyaW5nJiBwcm9wb3NlZFZhbHVlKSBjb25zdAogewotICAgIFN0ZXBSYW5nZSBzdGVwUmFu
Z2UoY3JlYXRlU3RlcFJhbmdlKFJlamVjdEFueSkpOwotICAgIGRvdWJsZSBwcm9wb3NlZERvdWJs
ZVZhbHVlID0gcGFyc2VUb0RvdWJsZShwcm9wb3NlZFZhbHVlLCBzdGVwUmFuZ2UuZGVmYXVsdFZh
bHVlKCkpOworICAgIGNvbnN0IFN0ZXBSYW5nZSBzdGVwUmFuZ2UoY3JlYXRlU3RlcFJhbmdlKFJl
amVjdEFueSkpOworICAgIGNvbnN0IERlY2ltYWwgcHJvcG9zZWREb3VibGVWYWx1ZSA9IHBhcnNl
VG9EZWNpbWFsKHByb3Bvc2VkVmFsdWUsIHN0ZXBSYW5nZS5kZWZhdWx0VmFsdWUoKSk7CiAgICAg
cmV0dXJuIHNlcmlhbGl6ZUZvck51bWJlclR5cGUoc3RlcFJhbmdlLmNsYW1wVmFsdWUocHJvcG9z
ZWREb3VibGVWYWx1ZSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1Jh
bmdlSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmgKaW5k
ZXggNDVmYjRhZmEzYTk1NGQzNGM3ODE4NTk5ZTMxZGI1MzQ4NDc5ZDFmMy4uOTUzZmU1OThmZWM5
ZjJhNDI5MTNlNDkxMmZlMzY0ZWQzY2Q5OGY3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9SYW5nZUlucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1
dFR5cGUuaApAQCAtNDYsNyArNDYsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBpc1Jh
bmdlQ29udHJvbCgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3Ry
aW5nJiBmb3JtQ29udHJvbFR5cGUoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGRvdWJs
ZSB2YWx1ZUFzTnVtYmVyKCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHNldFZh
bHVlQXNOdW1iZXIoZG91YmxlLCBUZXh0RmllbGRFdmVudEJlaGF2aW9yLCBFeGNlcHRpb25Db2Rl
JikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldFZhbHVlQXNOdW1iZXIoY29u
c3QgRGVjaW1hbCYsIFRleHRGaWVsZEV2ZW50QmVoYXZpb3IsIEV4Y2VwdGlvbkNvZGUmKSBjb25z
dCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNSZXF1aXJlZCgpIGNvbnN0IE9W
RVJSSURFOwogICAgIHZpcnR1YWwgU3RlcFJhbmdlIGNyZWF0ZVN0ZXBSYW5nZShBbnlTdGVwSGFu
ZGxpbmcpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBpc1N0ZXBwYWJsZSgpIGNv
bnN0IE9WRVJSSURFOwpAQCAtNTQsOCArNTQsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9p
ZCBoYW5kbGVLZXlkb3duRXZlbnQoS2V5Ym9hcmRFdmVudCopIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxl
KikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGNyZWF0ZVNoYWRvd1N1YnRyZWUo
KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGRvdWJsZSBwYXJzZVRvRG91YmxlKGNvbnN0IFN0cmlu
ZyYsIGRvdWJsZSkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBTdHJpbmcgc2VyaWFsaXpl
KGRvdWJsZSkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBEZWNpbWFsIHBhcnNlVG9EZWNp
bWFsKGNvbnN0IFN0cmluZyYsIGNvbnN0IERlY2ltYWwmKSBjb25zdCBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIFN0cmluZyBzZXJpYWxpemUoY29uc3QgRGVjaW1hbCYpIGNvbnN0IE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgdm9pZCBhY2Nlc3NLZXlBY3Rpb24oYm9vbCBzZW5kTW91c2VFdmVudHMpIE9W
RVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBtaW5Pck1heEF0dHJpYnV0ZUNoYW5nZWQoKSBPVkVS
UklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWUoY29uc3QgU3RyaW5nJiwgYm9vbCB2YWx1
ZUNoYW5nZWQsIFRleHRGaWVsZEV2ZW50QmVoYXZpb3IpIE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9TdGVwUmFuZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9T
dGVwUmFuZ2UuY3BwCmluZGV4IDliOWI3ZGNjOTQ5Y2M3NWQ1NTBiMDgwN2E5M2I3NjA0NTc4ODdh
ODkuLjMzMzYwMjIwOTgzN2M2ZWYzMjMxZDkzYmJhMTZlZDViODI5ZGIwMWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvU3RlcFJhbmdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL1N0ZXBSYW5nZS5jcHAKQEAgLTMwLDYgKzMwLDIyIEBAIHVzaW5nIG5hbWVzcGFjZSBzdGQ7
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorc3RhdGljIERlY2ltYWwgcG93ZXIoY29uc3QgRGVj
aW1hbCYgeCwgdW5zaWduZWQgbikKK3sKKyAgICBEZWNpbWFsIHkgPSAxOworICAgIERlY2ltYWwg
eiA9IHg7CisgICAgZm9yICg7OykgeworICAgICAgICBpZiAobiAmIDEpCisgICAgICAgICAgICB5
ID0geSAqIHo7CisKKyAgICAgICAgbiA+Pj0gMTsKKyAgICAgICAgaWYgKCFuKQorICAgICAgICAg
ICAgcmV0dXJuIHk7CisKKyAgICAgICAgeiA9IHogKiB6OworICAgIH0KK30KKwogdXNpbmcgbmFt
ZXNwYWNlIEhUTUxOYW1lczsKIAogU3RlcFJhbmdlOjpTdGVwUmFuZ2UoKQpAQCAtMzcsOCArNTMs
NiBAQCBTdGVwUmFuZ2U6OlN0ZXBSYW5nZSgpCiAgICAgLCBtX21pbmltdW0oMCkKICAgICAsIG1f
c3RlcCgxKQogICAgICwgbV9zdGVwQmFzZSgwKQotICAgICwgbV9zdGVwQmFzZURlY2ltYWxQbGFj
ZXMoMCkKLSAgICAsIG1fc3RlcERlY2ltYWxQbGFjZXMoMCkKICAgICAsIG1faGFzU3RlcChmYWxz
ZSkKIHsKIH0KQEAgLTQ5LDU1ICs2Myw0NiBAQCBTdGVwUmFuZ2U6OlN0ZXBSYW5nZShjb25zdCBT
dGVwUmFuZ2UmIHN0ZXBSYW5nZSkKICAgICAsIG1fc3RlcChzdGVwUmFuZ2UubV9zdGVwKQogICAg
ICwgbV9zdGVwQmFzZShzdGVwUmFuZ2UubV9zdGVwQmFzZSkKICAgICAsIG1fc3RlcERlc2NyaXB0
aW9uKHN0ZXBSYW5nZS5tX3N0ZXBEZXNjcmlwdGlvbikKLSAgICAsIG1fc3RlcEJhc2VEZWNpbWFs
UGxhY2VzKHN0ZXBSYW5nZS5tX3N0ZXBCYXNlRGVjaW1hbFBsYWNlcykKLSAgICAsIG1fc3RlcERl
Y2ltYWxQbGFjZXMoc3RlcFJhbmdlLm1fc3RlcERlY2ltYWxQbGFjZXMpCiAgICAgLCBtX2hhc1N0
ZXAoc3RlcFJhbmdlLm1faGFzU3RlcCkKIHsKIH0KIAotU3RlcFJhbmdlOjpTdGVwUmFuZ2UoY29u
c3QgRG91YmxlV2l0aERlY2ltYWxQbGFjZXMmIHN0ZXBCYXNlLCBkb3VibGUgbWluaW11bSwgZG91
YmxlIG1heGltdW0sIGNvbnN0IERvdWJsZVdpdGhEZWNpbWFsUGxhY2VzT3JNaXNzaW5nJiBzdGVw
LCBjb25zdCBTdGVwRGVzY3JpcHRpb24mIHN0ZXBEZXNjcmlwdGlvbikKK1N0ZXBSYW5nZTo6U3Rl
cFJhbmdlKGNvbnN0IERlY2ltYWwmIHN0ZXBCYXNlLCBjb25zdCBEZWNpbWFsJiBtaW5pbXVtLCBj
b25zdCBEZWNpbWFsJiBtYXhpbXVtLCBjb25zdCBEZWNpbWFsT3JNaXNzaW5nJiBzdGVwLCBjb25z
dCBTdGVwRGVzY3JpcHRpb24mIHN0ZXBEZXNjcmlwdGlvbikKICAgICA6IG1fbWF4aW11bShtYXhp
bXVtKQogICAgICwgbV9taW5pbXVtKG1pbmltdW0pCi0gICAgLCBtX3N0ZXAoc3RlcC52YWx1ZS52
YWx1ZSkKLSAgICAsIG1fc3RlcEJhc2Uoc3RlcEJhc2UudmFsdWUpCisgICAgLCBtX3N0ZXAoc3Rl
cC52YWx1ZSkKKyAgICAsIG1fc3RlcEJhc2Uoc3RlcEJhc2UpCiAgICAgLCBtX3N0ZXBEZXNjcmlw
dGlvbihzdGVwRGVzY3JpcHRpb24pCi0gICAgLCBtX3N0ZXBCYXNlRGVjaW1hbFBsYWNlcyhzdGVw
QmFzZS5kZWNpbWFsUGxhY2VzKQotICAgICwgbV9zdGVwRGVjaW1hbFBsYWNlcyhzdGVwLnZhbHVl
LmRlY2ltYWxQbGFjZXMpCiAgICAgLCBtX2hhc1N0ZXAoc3RlcC5oYXNWYWx1ZSkKIHsKLSAgICBB
U1NFUlQoaXNmaW5pdGUobV9tYXhpbXVtKSk7Ci0gICAgQVNTRVJUKGlzZmluaXRlKG1fbWluaW11
bSkpOwotICAgIEFTU0VSVChpc2Zpbml0ZShtX3N0ZXApKTsKLSAgICBBU1NFUlQoaXNmaW5pdGUo
bV9zdGVwQmFzZSkpOworICAgIEFTU0VSVChtX21heGltdW0uaXNGaW5pdGUoKSk7CisgICAgQVNT
RVJUKG1fbWluaW11bS5pc0Zpbml0ZSgpKTsKKyAgICBBU1NFUlQobV9zdGVwLmlzRmluaXRlKCkp
OworICAgIEFTU0VSVChtX3N0ZXBCYXNlLmlzRmluaXRlKCkpOwogfQogCi1kb3VibGUgU3RlcFJh
bmdlOjphY2NlcHRhYmxlRXJyb3IoKSBjb25zdAorRGVjaW1hbCBTdGVwUmFuZ2U6OmFjY2VwdGFi
bGVFcnJvcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fc3RlcCAvIHBvdygyLjAsIEZMVF9NQU5U
X0RJRyk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBEZWNpbWFsLCB0d29Qb3dlck9m
RmxvYXRNYW50aXNzYUJpdHMsIChEZWNpbWFsOjpQb3NpdGl2ZSwgMCwgVUlOVDY0X0MoMSkgPDwg
RkxUX01BTlRfRElHKSk7CisgICAgcmV0dXJuIG1fc3RlcCAvIHR3b1Bvd2VyT2ZGbG9hdE1hbnRp
c3NhQml0czsKIH0KIAotZG91YmxlIFN0ZXBSYW5nZTo6YWxpZ25WYWx1ZUZvclN0ZXAoZG91Ymxl
IGN1cnJlbnRWYWx1ZSwgdW5zaWduZWQgY3VycmVudERlY2ltYWxQbGFjZXMsIGRvdWJsZSBuZXdW
YWx1ZSkgY29uc3QKK0RlY2ltYWwgU3RlcFJhbmdlOjphbGlnblZhbHVlRm9yU3RlcChjb25zdCBE
ZWNpbWFsJiBjdXJyZW50VmFsdWUsIGNvbnN0IERlY2ltYWwmIG5ld1ZhbHVlKSBjb25zdAogewot
ICAgIGlmIChuZXdWYWx1ZSA+PSBwb3coMTAuMCwgMjEuMCkpCisgICAgREVGSU5FX1NUQVRJQ19M
T0NBTChjb25zdCBEZWNpbWFsLCB0ZW5Qb3dlck9mMjEsIChEZWNpbWFsOjpQb3NpdGl2ZSwgMjEs
IDEpKTsKKyAgICBpZiAobmV3VmFsdWUgPj0gdGVuUG93ZXJPZjIxKQogICAgICAgICByZXR1cm4g
bmV3VmFsdWU7CiAKLSAgICBpZiAoc3RlcE1pc21hdGNoKGN1cnJlbnRWYWx1ZSkpIHsKLSAgICAg
ICAgZG91YmxlIHNjYWxlID0gcG93KDEwLjAsIHN0YXRpY19jYXN0PGRvdWJsZT4obWF4KG1fc3Rl
cERlY2ltYWxQbGFjZXMsIGN1cnJlbnREZWNpbWFsUGxhY2VzKSkpOwotICAgICAgICBuZXdWYWx1
ZSA9IHJvdW5kKG5ld1ZhbHVlICogc2NhbGUpIC8gc2NhbGU7Ci0gICAgfSBlbHNlIHsKLSAgICAg
ICAgZG91YmxlIHNjYWxlID0gcG93KDEwLjAsIHN0YXRpY19jYXN0PGRvdWJsZT4obWF4KG1fc3Rl
cERlY2ltYWxQbGFjZXMsIG1fc3RlcEJhc2VEZWNpbWFsUGxhY2VzKSkpOwotICAgICAgICBuZXdW
YWx1ZSA9IHJvdW5kKChtX3N0ZXBCYXNlICsgcm91bmQoKG5ld1ZhbHVlIC0gbV9zdGVwQmFzZSkg
LyBtX3N0ZXApICogbV9zdGVwKSAqIHNjYWxlKSAvIHNjYWxlOwotICAgIH0KLQotICAgIHJldHVy
biBuZXdWYWx1ZTsKKyAgICByZXR1cm4gc3RlcE1pc21hdGNoKGN1cnJlbnRWYWx1ZSkgPyBuZXdW
YWx1ZSA6IHJvdW5kQnlTdGVwKG5ld1ZhbHVlLCBtX3N0ZXBCYXNlKTsKIH0KLWRvdWJsZSBTdGVw
UmFuZ2U6OmNsYW1wVmFsdWUoZG91YmxlIHZhbHVlKSBjb25zdAorCitEZWNpbWFsIFN0ZXBSYW5n
ZTo6Y2xhbXBWYWx1ZShjb25zdCBEZWNpbWFsJiB2YWx1ZSkgY29uc3QKIHsKLSAgICBkb3VibGUg
Y2xhbXBlZFZhbHVlID0gbWF4KG1fbWluaW11bSwgbWluKHZhbHVlLCBtX21heGltdW0pKTsKKyAg
ICBEZWNpbWFsIGNsYW1wZWRWYWx1ZSA9IG1heChtX21pbmltdW0sIG1pbih2YWx1ZSwgbV9tYXhp
bXVtKSk7CiAgICAgaWYgKCFtX2hhc1N0ZXApCiAgICAgICAgIHJldHVybiBjbGFtcGVkVmFsdWU7
CiAgICAgLy8gUm91bmRzIGNsYW1wZWRWYWx1ZSB0byBtaW5pbXVtICsgTiAqIHN0ZXAuCi0gICAg
Y2xhbXBlZFZhbHVlID0gbV9taW5pbXVtICsgcm91bmQoKGNsYW1wZWRWYWx1ZSAtIG1fbWluaW11
bSkgLyBtX3N0ZXApICogbV9zdGVwOworICAgIGNsYW1wZWRWYWx1ZSA9IHJvdW5kQnlTdGVwKGNs
YW1wZWRWYWx1ZSwgbV9taW5pbXVtKTsKICAgICBpZiAoY2xhbXBlZFZhbHVlID4gbV9tYXhpbXVt
KQogICAgICAgIGNsYW1wZWRWYWx1ZSAtPSBtX3N0ZXA7CiAgICAgQVNTRVJUKGNsYW1wZWRWYWx1
ZSA+PSBtX21pbmltdW0pOwpAQCAtMTA1LDcwICsxMTAsNzAgQEAgZG91YmxlIFN0ZXBSYW5nZTo6
Y2xhbXBWYWx1ZShkb3VibGUgdmFsdWUpIGNvbnN0CiAgICAgcmV0dXJuIGNsYW1wZWRWYWx1ZTsK
IH0KIAotU3RlcFJhbmdlOjpEb3VibGVXaXRoRGVjaW1hbFBsYWNlc09yTWlzc2luZyBTdGVwUmFu
Z2U6OnBhcnNlU3RlcChBbnlTdGVwSGFuZGxpbmcgYW55U3RlcEhhbmRsaW5nLCBjb25zdCBTdGVw
RGVzY3JpcHRpb24mIHN0ZXBEZXNjcmlwdGlvbiwgY29uc3QgU3RyaW5nJiBzdGVwU3RyaW5nKQor
U3RlcFJhbmdlOjpEZWNpbWFsT3JNaXNzaW5nIFN0ZXBSYW5nZTo6cGFyc2VTdGVwKEFueVN0ZXBI
YW5kbGluZyBhbnlTdGVwSGFuZGxpbmcsIGNvbnN0IFN0ZXBEZXNjcmlwdGlvbiYgc3RlcERlc2Ny
aXB0aW9uLCBjb25zdCBTdHJpbmcmIHN0ZXBTdHJpbmcpCiB7CiAgICAgaWYgKHN0ZXBTdHJpbmcu
aXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gRG91YmxlV2l0aERlY2ltYWxQbGFjZXNPck1pc3Np
bmcoc3RlcERlc2NyaXB0aW9uLmRlZmF1bHRWYWx1ZSgpKTsKKyAgICAgICAgcmV0dXJuIERlY2lt
YWxPck1pc3Npbmcoc3RlcERlc2NyaXB0aW9uLmRlZmF1bHRWYWx1ZSgpKTsKIAogICAgIGlmIChl
cXVhbElnbm9yaW5nQ2FzZShzdGVwU3RyaW5nLCAiYW55IikpIHsKICAgICAgICAgc3dpdGNoIChh
bnlTdGVwSGFuZGxpbmcpIHsKICAgICAgICAgY2FzZSBSZWplY3RBbnk6Ci0gICAgICAgICAgICBy
ZXR1cm4gRG91YmxlV2l0aERlY2ltYWxQbGFjZXNPck1pc3NpbmcoRG91YmxlV2l0aERlY2ltYWxQ
bGFjZXMoMSksIGZhbHNlKTsKKyAgICAgICAgICAgIHJldHVybiBEZWNpbWFsT3JNaXNzaW5nKERl
Y2ltYWwoMSksIGZhbHNlKTsKICAgICAgICAgY2FzZSBBbnlJc0RlZmF1bHRTdGVwOgotICAgICAg
ICAgICAgcmV0dXJuIERvdWJsZVdpdGhEZWNpbWFsUGxhY2VzT3JNaXNzaW5nKHN0ZXBEZXNjcmlw
dGlvbi5kZWZhdWx0VmFsdWUoKSk7CisgICAgICAgICAgICByZXR1cm4gRGVjaW1hbE9yTWlzc2lu
ZyhzdGVwRGVzY3JpcHRpb24uZGVmYXVsdFZhbHVlKCkpOwogICAgICAgICBkZWZhdWx0OgogICAg
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBE
b3VibGVXaXRoRGVjaW1hbFBsYWNlc09yTWlzc2luZyBzdGVwKDApOwotICAgIHN0ZXAudmFsdWUu
dmFsdWUgPSBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZVdpdGhEZWNpbWFsUGxhY2VzKHN0ZXBT
dHJpbmcsICZzdGVwLnZhbHVlLmRlY2ltYWxQbGFjZXMpOwotICAgIGlmICghaXNmaW5pdGUoc3Rl
cC52YWx1ZS52YWx1ZSkgfHwgc3RlcC52YWx1ZS52YWx1ZSA8PSAwLjApCi0gICAgICAgIHJldHVy
biBEb3VibGVXaXRoRGVjaW1hbFBsYWNlc09yTWlzc2luZyhzdGVwRGVzY3JpcHRpb24uZGVmYXVs
dFZhbHVlKCkpOworICAgIERlY2ltYWwgc3RlcChwYXJzZVRvRGVjaW1hbEZvck51bWJlclR5cGUo
c3RlcFN0cmluZykpOworICAgIGlmICghc3RlcC5pc0Zpbml0ZSgpIHx8IHN0ZXAgPD0gMCkKKyAg
ICAgICAgcmV0dXJuIERlY2ltYWxPck1pc3Npbmcoc3RlcERlc2NyaXB0aW9uLmRlZmF1bHRWYWx1
ZSgpKTsKIAogICAgIHN3aXRjaCAoc3RlcERlc2NyaXB0aW9uLnN0ZXBWYWx1ZVNob3VsZEJlKSB7
CiAgICAgY2FzZSBTdGVwVmFsdWVTaG91bGRCZVJlYWw6Ci0gICAgICAgIHN0ZXAudmFsdWUudmFs
dWUgKj0gc3RlcERlc2NyaXB0aW9uLnN0ZXBTY2FsZUZhY3RvcjsKKyAgICAgICAgc3RlcCAqPSBz
dGVwRGVzY3JpcHRpb24uc3RlcFNjYWxlRmFjdG9yOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IFBhcnNlZFN0ZXBWYWx1ZVNob3VsZEJlSW50ZWdlcjoKICAgICAgICAgLy8gRm9yIGRhdGUsIG1v
bnRoLCBhbmQgd2VlaywgdGhlIHBhcnNlZCB2YWx1ZSBzaG91bGQgYmUgYW4gaW50ZWdlciBmb3Ig
c29tZSB0eXBlcy4KLSAgICAgICAgc3RlcC52YWx1ZS52YWx1ZSA9IG1heChyb3VuZChzdGVwLnZh
bHVlLnZhbHVlKSwgMS4wKTsKLSAgICAgICAgc3RlcC52YWx1ZS52YWx1ZSAqPSBzdGVwRGVzY3Jp
cHRpb24uc3RlcFNjYWxlRmFjdG9yOworICAgICAgICBzdGVwID0gbWF4KHN0ZXAucm91bmQoKSwg
RGVjaW1hbCgxKSk7CisgICAgICAgIHN0ZXAgKj0gc3RlcERlc2NyaXB0aW9uLnN0ZXBTY2FsZUZh
Y3RvcjsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTY2FsZWRTdGVwVmFsdWVTaG91bGRCZUlu
dGVnZXI6CiAgICAgICAgIC8vIEZvciBkYXRldGltZSwgZGF0ZXRpbWUtbG9jYWwsIHRpbWUsIHRo
ZSByZXN1bHQgc2hvdWxkIGJlIGFuIGludGVnZXIuCi0gICAgICAgIHN0ZXAudmFsdWUudmFsdWUg
Kj0gc3RlcERlc2NyaXB0aW9uLnN0ZXBTY2FsZUZhY3RvcjsKLSAgICAgICAgc3RlcC52YWx1ZS52
YWx1ZSA9IG1heChyb3VuZChzdGVwLnZhbHVlLnZhbHVlKSwgMS4wKTsKKyAgICAgICAgc3RlcCAq
PSBzdGVwRGVzY3JpcHRpb24uc3RlcFNjYWxlRmFjdG9yOworICAgICAgICBzdGVwID0gbWF4KHN0
ZXAucm91bmQoKSwgRGVjaW1hbCgxKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIAotICAgIEFTU0VSVChzdGVwLnZh
bHVlLnZhbHVlID4gMCk7Ci0gICAgcmV0dXJuIHN0ZXA7CisgICAgQVNTRVJUKHN0ZXAgPiAwKTsK
KyAgICByZXR1cm4gRGVjaW1hbE9yTWlzc2luZyhzdGVwKTsKIH0KIAotYm9vbCBTdGVwUmFuZ2U6
OnN0ZXBNaXNtYXRjaChkb3VibGUgZG91YmxlVmFsdWUpIGNvbnN0Citib29sIFN0ZXBSYW5nZTo6
c3RlcE1pc21hdGNoKGNvbnN0IERlY2ltYWwmIHZhbHVlRm9yQ2hlY2spIGNvbnN0CiB7CiAgICAg
aWYgKCFtX2hhc1N0ZXApCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWlzZmluaXRl
KGRvdWJsZVZhbHVlKSkKKyAgICBpZiAoIXZhbHVlRm9yQ2hlY2suaXNGaW5pdGUoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIGRvdWJsZVZhbHVlID0gZmFicyhkb3VibGVWYWx1ZSAtIG1f
c3RlcEJhc2UpOwotICAgIGlmIChpc2luZihkb3VibGVWYWx1ZSkpCisgICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChjb25zdCBEZWNpbWFsLCB0d29Qb3dlck9mRG91YmxlTWFudGlzc2FCaXRzLCAoRGVj
aW1hbDo6UG9zaXRpdmUsIDAsIFVJTlQ2NF9DKDEpIDw8IERCTF9NQU5UX0RJRykpOworICAgIGNv
bnN0IERlY2ltYWwgdmFsdWUgPSAodmFsdWVGb3JDaGVjayAtIG1fc3RlcEJhc2UpLmFicygpOwor
ICAgIGlmICghdmFsdWUuaXNGaW5pdGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIC8v
IGRvdWJsZSdzIGZyYWN0aW9uYWwgcGFydCBzaXplIGlzIERCTF9NQU5fRElHLWJpdC4gSWYgdGhl
IGN1cnJlbnQgdmFsdWUKKyAgICAvLyBEZWNpbWFsJ3MgZnJhY3Rpb25hbCBwYXJ0IHNpemUgaXMg
REJMX01BTl9ESUctYml0LiBJZiB0aGUgY3VycmVudCB2YWx1ZQogICAgIC8vIGlzIGdyZWF0ZXIg
dGhhbiBzdGVwKjJeREJMX01BTlRfRElHLCB0aGUgZm9sbG93aW5nIGNvbXB1dGF0aW9uIGZvcgog
ICAgIC8vIHJlbWFpbmRlciBtYWtlcyBubyBzZW5zZS4KLSAgICBpZiAoZG91YmxlVmFsdWUgLyBw
b3coMi4wLCBEQkxfTUFOVF9ESUcpID4gbV9zdGVwKQorICAgIGlmICh2YWx1ZSAvIHR3b1Bvd2Vy
T2ZEb3VibGVNYW50aXNzYUJpdHMgPiBtX3N0ZXApCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAvLyBUaGUgY29tcHV0YXRpb24gZm9sbG93cyBIVE1MNSA0LjEwLjcuMi4xMCBgVGhlIHN0ZXAg
YXR0cmlidXRlJyA6CiAgICAgLy8gLi4uIHRoYXQgbnVtYmVyIHN1YnRyYWN0ZWQgZnJvbSB0aGUg
c3RlcCBiYXNlIGlzIG5vdCBhbiBpbnRlZ3JhbCBtdWx0aXBsZQogICAgIC8vIG9mIHRoZSBhbGxv
d2VkIHZhbHVlIHN0ZXAsIHRoZSBlbGVtZW50IGlzIHN1ZmZlcmluZyBmcm9tIGEgc3RlcCBtaXNt
YXRjaC4KLSAgICBkb3VibGUgcmVtYWluZGVyID0gZmFicyhkb3VibGVWYWx1ZSAtIG1fc3RlcCAq
IHJvdW5kKGRvdWJsZVZhbHVlIC8gbV9zdGVwKSk7CisgICAgY29uc3QgRGVjaW1hbCByZW1haW5k
ZXIgPSAodmFsdWUgLSBtX3N0ZXAgKiAodmFsdWUgLyBtX3N0ZXApLnJvdW5kKCkpLmFicygpOwog
ICAgIC8vIEFjY2VwdHMgZXJyb3MgaW4gbG93ZXIgZnJhY3Rpb25hbCBwYXJ0IHdoaWNoIElFRUUg
NzU0IHNpbmdsZS1wcmVjaXNpb24KICAgICAvLyBjYW4ndCByZXByZXNlbnQuCi0gICAgZG91Ymxl
IGNvbXB1dGVkQWNjZXB0YWJsZUVycm9yID0gYWNjZXB0YWJsZUVycm9yKCk7CisgICAgY29uc3Qg
RGVjaW1hbCBjb21wdXRlZEFjY2VwdGFibGVFcnJvciA9IGFjY2VwdGFibGVFcnJvcigpOwogICAg
IHJldHVybiBjb21wdXRlZEFjY2VwdGFibGVFcnJvciA8IHJlbWFpbmRlciAmJiByZW1haW5kZXIg
PCAobV9zdGVwIC0gY29tcHV0ZWRBY2NlcHRhYmxlRXJyb3IpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL1N0ZXBSYW5nZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9TdGVw
UmFuZ2UuaAppbmRleCAwYWRiZmQ4NTdhNTA2OTk5MzFjYmQzOTEwNmY2YjA0YTZlNzQyYzhkLi4z
MGE2MzBmYjk5YzBkMWU0NTdlMDNmYWFmOTkxMDI4OGQ2Mjc1MzhkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1N0ZXBSYW5nZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvU3Rl
cFJhbmdlLmgKQEAgLTIxLDYgKzIxLDcgQEAKICNpZm5kZWYgU3RlcFJhbmdlX2gKICNkZWZpbmUg
U3RlcFJhbmdlX2gKIAorI2luY2x1ZGUgIkRlY2ltYWwuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCkBAIC0zMiwyMiArMzMsMTEgQEAg
ZW51bSBBbnlTdGVwSGFuZGxpbmcgeyBSZWplY3RBbnksIEFueUlzRGVmYXVsdFN0ZXAgfTsKIAog
Y2xhc3MgU3RlcFJhbmdlIHsKIHB1YmxpYzoKLSAgICBzdHJ1Y3QgRG91YmxlV2l0aERlY2ltYWxQ
bGFjZXMgewotICAgICAgICB1bnNpZ25lZCBkZWNpbWFsUGxhY2VzOwotICAgICAgICBkb3VibGUg
dmFsdWU7Ci0KLSAgICAgICAgRG91YmxlV2l0aERlY2ltYWxQbGFjZXMoZG91YmxlIHZhbHVlID0g
MCwgdW5zaWduZWQgZGVjaW1hbFBsYWNlcyA9IDApCi0gICAgICAgICAgICA6IGRlY2ltYWxQbGFj
ZXMoZGVjaW1hbFBsYWNlcykKLSAgICAgICAgICAgICwgdmFsdWUodmFsdWUpCi0gICAgICAgIHsK
LSAgICAgICAgfQotICAgIH07Ci0KLSAgICBzdHJ1Y3QgRG91YmxlV2l0aERlY2ltYWxQbGFjZXNP
ck1pc3NpbmcgeworICAgIHN0cnVjdCBEZWNpbWFsT3JNaXNzaW5nIHsKICAgICAgICAgYm9vbCBo
YXNWYWx1ZTsKLSAgICAgICAgRG91YmxlV2l0aERlY2ltYWxQbGFjZXMgdmFsdWU7CisgICAgICAg
IERlY2ltYWwgdmFsdWU7CiAKLSAgICAgICAgRG91YmxlV2l0aERlY2ltYWxQbGFjZXNPck1pc3Np
bmcoRG91YmxlV2l0aERlY2ltYWxQbGFjZXMgdmFsdWUsIGJvb2wgaGFzVmFsdWUgPSB0cnVlKQor
ICAgICAgICBEZWNpbWFsT3JNaXNzaW5nKGNvbnN0IERlY2ltYWwmIHZhbHVlLCBib29sIGhhc1Zh
bHVlID0gdHJ1ZSkKICAgICAgICAgICAgIDogaGFzVmFsdWUoaGFzVmFsdWUpCiAgICAgICAgICAg
ICAsIHZhbHVlKHZhbHVlKQogICAgICAgICB7CkBAIC04Miw3ICs3Miw3IEBAIHB1YmxpYzoKICAg
ICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgZG91YmxlIGRlZmF1bHRWYWx1ZSgpIGNvbnN0
CisgICAgICAgIERlY2ltYWwgZGVmYXVsdFZhbHVlKCkgY29uc3QKICAgICAgICAgewogICAgICAg
ICAgICAgcmV0dXJuIGRlZmF1bHRTdGVwICogc3RlcFNjYWxlRmFjdG9yOwogICAgICAgICB9CkBA
IC05MCwyOSArODAsMzIgQEAgcHVibGljOgogCiAgICAgU3RlcFJhbmdlKCk7CiAgICAgU3RlcFJh
bmdlKGNvbnN0IFN0ZXBSYW5nZSYpOwotICAgIFN0ZXBSYW5nZShjb25zdCBEb3VibGVXaXRoRGVj
aW1hbFBsYWNlcyYgc3RlcEJhc2UsIGRvdWJsZSBtaW5pbXVtLCBkb3VibGUgbWF4aW11bSwgY29u
c3QgRG91YmxlV2l0aERlY2ltYWxQbGFjZXNPck1pc3NpbmcmIHN0ZXAsIGNvbnN0IFN0ZXBEZXNj
cmlwdGlvbiYpOwotICAgIGRvdWJsZSBhY2NlcHRhYmxlRXJyb3IoKSBjb25zdDsKLSAgICBkb3Vi
bGUgYWxpZ25WYWx1ZUZvclN0ZXAoZG91YmxlIGN1cnJlbnRWYWx1ZSwgdW5zaWduZWQgY3VycmVu
dERlY2ltYWxQbGFjZXMsIGRvdWJsZSBuZXdWYWx1ZSkgY29uc3Q7Ci0gICAgZG91YmxlIGNsYW1w
VmFsdWUoZG91YmxlIHZhbHVlKSBjb25zdDsKKyAgICBTdGVwUmFuZ2UoY29uc3QgRGVjaW1hbCYg
c3RlcEJhc2UsIGNvbnN0IERlY2ltYWwmIG1pbmltdW0sIGNvbnN0IERlY2ltYWwmIG1heGltdW0s
IGNvbnN0IERlY2ltYWxPck1pc3NpbmcmIHN0ZXAsIGNvbnN0IFN0ZXBEZXNjcmlwdGlvbiYpOwor
ICAgIERlY2ltYWwgYWNjZXB0YWJsZUVycm9yKCkgY29uc3Q7CisgICAgRGVjaW1hbCBhbGlnblZh
bHVlRm9yU3RlcChjb25zdCBEZWNpbWFsJiBjdXJyZW50VmFsdWUsIGNvbnN0IERlY2ltYWwmIG5l
d1ZhbHVlKSBjb25zdDsKKyAgICBEZWNpbWFsIGNsYW1wVmFsdWUoY29uc3QgRGVjaW1hbCYpIGNv
bnN0OwogICAgIGJvb2wgaGFzU3RlcCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzU3RlcDsgfQotICAg
IGRvdWJsZSBtYXhpbXVtKCkgY29uc3QgeyByZXR1cm4gbV9tYXhpbXVtOyB9Ci0gICAgZG91Ymxl
IG1pbmltdW0oKSBjb25zdCB7IHJldHVybiBtX21pbmltdW07IH0KLSAgICBzdGF0aWMgRG91Ymxl
V2l0aERlY2ltYWxQbGFjZXNPck1pc3NpbmcgcGFyc2VTdGVwKEFueVN0ZXBIYW5kbGluZywgY29u
c3QgU3RlcERlc2NyaXB0aW9uJiwgY29uc3QgU3RyaW5nJik7Ci0gICAgZG91YmxlIHN0ZXAoKSBj
b25zdCB7IHJldHVybiBtX3N0ZXA7IH0KLSAgICBkb3VibGUgc3RlcEJhc2UoKSBjb25zdCB7IHJl
dHVybiBtX3N0ZXBCYXNlOyB9Ci0gICAgdW5zaWduZWQgc3RlcEJhc2VEZWNpbWFsUGxhY2VzKCkg
Y29uc3QgeyByZXR1cm4gbV9zdGVwQmFzZURlY2ltYWxQbGFjZXM7IH0KLSAgICB1bnNpZ25lZCBz
dGVwRGVjaW1hbFBsYWNlcygpIGNvbnN0IHsgcmV0dXJuIG1fc3RlcERlY2ltYWxQbGFjZXM7IH0K
KyAgICBEZWNpbWFsIG1heGltdW0oKSBjb25zdCB7IHJldHVybiBtX21heGltdW07IH0KKyAgICBE
ZWNpbWFsIG1pbmltdW0oKSBjb25zdCB7IHJldHVybiBtX21pbmltdW07IH0KKyAgICBzdGF0aWMg
RGVjaW1hbE9yTWlzc2luZyBwYXJzZVN0ZXAoQW55U3RlcEhhbmRsaW5nLCBjb25zdCBTdGVwRGVz
Y3JpcHRpb24mLCBjb25zdCBTdHJpbmcmKTsKKyAgICBEZWNpbWFsIHN0ZXAoKSBjb25zdCB7IHJl
dHVybiBtX3N0ZXA7IH0KKyAgICBEZWNpbWFsIHN0ZXBCYXNlKCkgY29uc3QgeyByZXR1cm4gbV9z
dGVwQmFzZTsgfQogICAgIGludCBzdGVwU2NhbGVGYWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3N0
ZXBEZXNjcmlwdGlvbi5zdGVwU2NhbGVGYWN0b3I7IH0KLSAgICBib29sIHN0ZXBNaXNtYXRjaChk
b3VibGUpIGNvbnN0OworICAgIGJvb2wgc3RlcE1pc21hdGNoKGNvbnN0IERlY2ltYWwmKSBjb25z
dDsKIAogICAgIC8vIENsYW1wIHRoZSBtaWRkbGUgdmFsdWUgYWNjb3JkaW5nIHRvIHRoZSBzdGVw
Ci0gICAgZG91YmxlIGRlZmF1bHRWYWx1ZSgpIGNvbnN0CisgICAgRGVjaW1hbCBkZWZhdWx0VmFs
dWUoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIGNsYW1wVmFsdWUoKG1fbWluaW11bSAr
IG1fbWF4aW11bSkgLyAyKTsKICAgICB9CiAKKyAgICBzdGF0aWMgRGVjaW1hbCBlbnN1cmVNYXhp
bXVtKGNvbnN0IERlY2ltYWwgcHJvcG9zZWRWYWx1ZSwgY29uc3QgRGVjaW1hbCYgbWluaW11bSwg
Y29uc3QgRGVjaW1hbCYgZmFsbGJhY2tWYWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBwcm9w
b3NlZFZhbHVlID49IG1pbmltdW0gPyBwcm9wb3NlZFZhbHVlIDogc3RkOjptYXgobWluaW11bSwg
ZmFsbGJhY2tWYWx1ZSk7CisgICAgfQorCiAgICAgLy8gTWFwIHZhbHVlIGludG8gMC0xIHJhbmdl
Ci0gICAgZG91YmxlIHByb3BvcnRpb25Gcm9tVmFsdWUoZG91YmxlIHZhbHVlKSBjb25zdAorICAg
IERlY2ltYWwgcHJvcG9ydGlvbkZyb21WYWx1ZShjb25zdCBEZWNpbWFsJiB2YWx1ZSkgY29uc3QK
ICAgICB7CiAgICAgICAgIGlmIChtX21pbmltdW0gPT0gbV9tYXhpbXVtKQogICAgICAgICAgICAg
cmV0dXJuIDA7CkBAIC0xMjEsNyArMTE0LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIC8vIE1h
cCBmcm9tIDAtMSByYW5nZSB0byB2YWx1ZQotICAgIGRvdWJsZSB2YWx1ZUZyb21Qcm9wb3J0aW9u
KGRvdWJsZSBwcm9wb3J0aW9uKSBjb25zdAorICAgIERlY2ltYWwgdmFsdWVGcm9tUHJvcG9ydGlv
bihjb25zdCBEZWNpbWFsJiBwcm9wb3J0aW9uKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJu
IG1fbWluaW11bSArIHByb3BvcnRpb24gKiAobV9tYXhpbXVtIC0gbV9taW5pbXVtKTsKICAgICB9
CkBAIC0xMjksMTMgKzEyMiwxNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFN0ZXBSYW5nZSYg
b3BlcmF0b3IgPShjb25zdCBTdGVwUmFuZ2UmKTsKIAotICAgIGNvbnN0IGRvdWJsZSBtX21heGlt
dW07IC8vIG1heGltdW0gbXVzdCBiZSA+PSBtaW5pbXVtLgotICAgIGNvbnN0IGRvdWJsZSBtX21p
bmltdW07Ci0gICAgY29uc3QgZG91YmxlIG1fc3RlcDsKLSAgICBjb25zdCBkb3VibGUgbV9zdGVw
QmFzZTsKKyAgICBEZWNpbWFsIHJvdW5kQnlTdGVwKGNvbnN0IERlY2ltYWwmIHZhbHVlLCBjb25z
dCBEZWNpbWFsJiBiYXNlKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGJhc2UgKyAoKHZh
bHVlIC0gYmFzZSkgLyBtX3N0ZXApLnJvdW5kKCkgKiBtX3N0ZXA7CisgICAgfQorCisgICAgY29u
c3QgRGVjaW1hbCBtX21heGltdW07IC8vIG1heGltdW0gbXVzdCBiZSA+PSBtaW5pbXVtLgorICAg
IGNvbnN0IERlY2ltYWwgbV9taW5pbXVtOworICAgIGNvbnN0IERlY2ltYWwgbV9zdGVwOworICAg
IGNvbnN0IERlY2ltYWwgbV9zdGVwQmFzZTsKICAgICBjb25zdCBTdGVwRGVzY3JpcHRpb24gbV9z
dGVwRGVzY3JpcHRpb247Ci0gICAgY29uc3QgdW5zaWduZWQgbV9zdGVwQmFzZURlY2ltYWxQbGFj
ZXM7Ci0gICAgY29uc3QgdW5zaWduZWQgbV9zdGVwRGVjaW1hbFBsYWNlczsKICAgICBjb25zdCBi
b29sIG1faGFzU3RlcDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGlt
ZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVJbnB1dFR5cGUuY3BwCmlu
ZGV4IGVjNTI3MDI0Yzk1ZGFkYmY4OWEzMzA2OWRkYmY5YmNkOTllMWNkNmYuLjBhMTRjNDg0MGJm
MDEzMjk3OGUwZTI4NDQ3MGQ1YzA4ZDJhZjNiNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvVGltZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lSW5w
dXRUeXBlLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkRhdGVDb21wb25lbnRzLmgi
CiAjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgor
I2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUu
aD4KICNpbmNsdWRlIDx3dGYvRGF0ZU1hdGguaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5o
PgpAQCAtNDUsOSArNDYsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFj
ZSBIVE1MTmFtZXM7CiAKLXN0YXRpYyBjb25zdCBkb3VibGUgdGltZURlZmF1bHRTdGVwID0gNjAu
MDsKLXN0YXRpYyBjb25zdCBkb3VibGUgdGltZURlZmF1bHRTdGVwQmFzZSA9IDAuMDsKLXN0YXRp
YyBjb25zdCBkb3VibGUgdGltZVN0ZXBTY2FsZUZhY3RvciA9IDEwMDAuMDsKK3N0YXRpYyBjb25z
dCBpbnQgdGltZURlZmF1bHRTdGVwID0gNjA7CitzdGF0aWMgY29uc3QgaW50IHRpbWVEZWZhdWx0
U3RlcEJhc2UgPSAwOworc3RhdGljIGNvbnN0IGludCB0aW1lU3RlcFNjYWxlRmFjdG9yID0gMTAw
MDsKIAogUGFzc093blB0cjxJbnB1dFR5cGU+IFRpbWVJbnB1dFR5cGU6OmNyZWF0ZShIVE1MSW5w
dXRFbGVtZW50KiBlbGVtZW50KQogewpAQCAtNjQsNyArNjUsNyBAQCBEYXRlQ29tcG9uZW50czo6
VHlwZSBUaW1lSW5wdXRUeXBlOjpkYXRlVHlwZSgpIGNvbnN0CiAgICAgcmV0dXJuIERhdGVDb21w
b25lbnRzOjpUaW1lOwogfQogCi1kb3VibGUgVGltZUlucHV0VHlwZTo6ZGVmYXVsdFZhbHVlRm9y
U3RlcFVwKCkgY29uc3QKK0RlY2ltYWwgVGltZUlucHV0VHlwZTo6ZGVmYXVsdFZhbHVlRm9yU3Rl
cFVwKCkgY29uc3QKIHsKICAgICBkb3VibGUgY3VycmVudCA9IGN1cnJlbnRUaW1lTVMoKTsKICAg
ICBkb3VibGUgdXRjT2Zmc2V0ID0gY2FsY3VsYXRlVVRDT2Zmc2V0KCk7CkBAIC03NiwxNyArNzcs
MTcgQEAgZG91YmxlIFRpbWVJbnB1dFR5cGU6OmRlZmF1bHRWYWx1ZUZvclN0ZXBVcCgpIGNvbnN0
CiAgICAgZGF0ZS5zZXRNaWxsaXNlY29uZHNTaW5jZU1pZG5pZ2h0KGN1cnJlbnQpOwogICAgIGRv
dWJsZSBtaWxsaXNlY29uZHMgPSBkYXRlLm1pbGxpc2Vjb25kc1NpbmNlRXBvY2goKTsKICAgICBB
U1NFUlQoaXNmaW5pdGUobWlsbGlzZWNvbmRzKSk7Ci0gICAgcmV0dXJuIG1pbGxpc2Vjb25kczsK
KyAgICByZXR1cm4gY29udmVydERvdWJsZVRvRGVjaW1hbChtaWxsaXNlY29uZHMpOwogfQogCiBT
dGVwUmFuZ2UgVGltZUlucHV0VHlwZTo6Y3JlYXRlU3RlcFJhbmdlKEFueVN0ZXBIYW5kbGluZyBh
bnlTdGVwSGFuZGxpbmcpIGNvbnN0CiB7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBT
dGVwUmFuZ2U6OlN0ZXBEZXNjcmlwdGlvbiwgc3RlcERlc2NyaXB0aW9uLCAodGltZURlZmF1bHRT
dGVwLCB0aW1lRGVmYXVsdFN0ZXBCYXNlLCB0aW1lU3RlcFNjYWxlRmFjdG9yLCBTdGVwUmFuZ2U6
OlNjYWxlZFN0ZXBWYWx1ZVNob3VsZEJlSW50ZWdlcikpOwogCi0gICAgZG91YmxlIHN0ZXBCYXNl
ID0gcGFyc2VUb0RvdWJsZShlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUobWluQXR0ciksIDAp
OwotICAgIGRvdWJsZSBtaW5pbXVtID0gcGFyc2VUb0RvdWJsZShlbGVtZW50KCktPmZhc3RHZXRB
dHRyaWJ1dGUobWluQXR0ciksIERhdGVDb21wb25lbnRzOjptaW5pbXVtVGltZSgpKTsKLSAgICBk
b3VibGUgbWF4aW11bSA9IHBhcnNlVG9Eb3VibGUoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRl
KG1heEF0dHIpLCBEYXRlQ29tcG9uZW50czo6bWF4aW11bVRpbWUoKSk7Ci0gICAgU3RlcFJhbmdl
OjpEb3VibGVXaXRoRGVjaW1hbFBsYWNlc09yTWlzc2luZyBzdGVwID0gU3RlcFJhbmdlOjpwYXJz
ZVN0ZXAoYW55U3RlcEhhbmRsaW5nLCBzdGVwRGVzY3JpcHRpb24sIGVsZW1lbnQoKS0+ZmFzdEdl
dEF0dHJpYnV0ZShzdGVwQXR0cikpOworICAgIGNvbnN0IERlY2ltYWwgc3RlcEJhc2UgPSBwYXJz
ZVRvRGVjaW1hbChlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUobWluQXR0ciksIDApOworICAg
IGNvbnN0IERlY2ltYWwgbWluaW11bSA9IHBhcnNlVG9EZWNpbWFsKGVsZW1lbnQoKS0+ZmFzdEdl
dEF0dHJpYnV0ZShtaW5BdHRyKSwgY29udmVydERvdWJsZVRvRGVjaW1hbChEYXRlQ29tcG9uZW50
czo6bWluaW11bVRpbWUoKSkpOworICAgIGNvbnN0IERlY2ltYWwgbWF4aW11bSA9IHBhcnNlVG9E
ZWNpbWFsKGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShtYXhBdHRyKSwgY29udmVydERvdWJs
ZVRvRGVjaW1hbChEYXRlQ29tcG9uZW50czo6bWF4aW11bVRpbWUoKSkpOworICAgIGNvbnN0IFN0
ZXBSYW5nZTo6RGVjaW1hbE9yTWlzc2luZyBzdGVwID0gU3RlcFJhbmdlOjpwYXJzZVN0ZXAoYW55
U3RlcEhhbmRsaW5nLCBzdGVwRGVzY3JpcHRpb24sIGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0
ZShzdGVwQXR0cikpOwogICAgIHJldHVybiBTdGVwUmFuZ2Uoc3RlcEJhc2UsIG1pbmltdW0sIG1h
eGltdW0sIHN0ZXAsIHN0ZXBEZXNjcmlwdGlvbik7CiB9CiAKQEAgLTk3LDEwICs5OCwxMCBAQCBi
b29sIFRpbWVJbnB1dFR5cGU6OnBhcnNlVG9EYXRlQ29tcG9uZW50c0ludGVybmFsKGNvbnN0IFVD
aGFyKiBjaGFyYWN0ZXJzLCB1bnNpZwogICAgIHJldHVybiBvdXQtPnBhcnNlVGltZShjaGFyYWN0
ZXJzLCBsZW5ndGgsIDAsIGVuZCkgJiYgZW5kID09IGxlbmd0aDsKIH0KIAotYm9vbCBUaW1lSW5w
dXRUeXBlOjpzZXRNaWxsaXNlY29uZFRvRGF0ZUNvbXBvbmVudHMoZG91YmxlIHZhbHVlLCBEYXRl
Q29tcG9uZW50cyogZGF0ZSkgY29uc3QKK2Jvb2wgVGltZUlucHV0VHlwZTo6c2V0TWlsbGlzZWNv
bmRUb0RhdGVDb21wb25lbnRzKGNvbnN0IERlY2ltYWwmIHZhbHVlLCBEYXRlQ29tcG9uZW50cyog
ZGF0ZSkgY29uc3QKIHsKICAgICBBU1NFUlQoZGF0ZSk7Ci0gICAgcmV0dXJuIGRhdGUtPnNldE1p
bGxpc2Vjb25kc1NpbmNlTWlkbmlnaHQodmFsdWUpOworICAgIHJldHVybiBkYXRlLT5zZXRNaWxs
aXNlY29uZHNTaW5jZU1pZG5pZ2h0KGNvbnZlcnREZWNpbWFsVG9Eb3VibGUodmFsdWUpKTsKIH0K
IAogYm9vbCBUaW1lSW5wdXRUeXBlOjppc1RpbWVGaWVsZCgpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL1RpbWVJbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
VGltZUlucHV0VHlwZS5oCmluZGV4IDFjMmMyODZlYzNhY2ZkNWVhZWVkZTYyODgzNmU3YWIzMDZh
MjNkZDAuLjE3ZjNiZGY2Zjg3MDY0MGY4ZGM1ZTFhZjc0NjA5YTEyYjllMGU4OTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGltZUlucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvVGltZUlucHV0VHlwZS5oCkBAIC00NSwxMCArNDUsMTAgQEAgcHJpdmF0ZToKICAg
ICBUaW1lSW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQpIDogQmFzZURhdGVBbmRU
aW1lSW5wdXRUeXBlKGVsZW1lbnQpIHsgfQogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5n
JiBmb3JtQ29udHJvbFR5cGUoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIERhdGVDb21w
b25lbnRzOjpUeXBlIGRhdGVUeXBlKCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBkb3Vi
bGUgZGVmYXVsdFZhbHVlRm9yU3RlcFVwKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBE
ZWNpbWFsIGRlZmF1bHRWYWx1ZUZvclN0ZXBVcCgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1
YWwgU3RlcFJhbmdlIGNyZWF0ZVN0ZXBSYW5nZShBbnlTdGVwSGFuZGxpbmcpIGNvbnN0IE9WRVJS
SURFOwogICAgIHZpcnR1YWwgYm9vbCBwYXJzZVRvRGF0ZUNvbXBvbmVudHNJbnRlcm5hbChjb25z
dCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCwgRGF0ZUNvbXBvbmVudHMqKSBjb25zdCBPVkVSUklE
RTsKLSAgICB2aXJ0dWFsIGJvb2wgc2V0TWlsbGlzZWNvbmRUb0RhdGVDb21wb25lbnRzKGRvdWJs
ZSwgRGF0ZUNvbXBvbmVudHMqKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgc2V0
TWlsbGlzZWNvbmRUb0RhdGVDb21wb25lbnRzKGNvbnN0IERlY2ltYWwmLCBEYXRlQ29tcG9uZW50
cyopIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBpc1RpbWVGaWVsZCgpIGNvbnN0
IE9WRVJSSURFOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9XZWVrSW5w
dXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvV2Vla0lucHV0VHlwZS5jcHAKaW5kZXgg
M2E2MjI4OTExYzUzY2YyMzM1MDZiZTA0MjVhN2ZlZjQ1M2UxMzI1Yy4uYzMwYTgwZjMyY2ZlOWY2
MWM3MTU5MTgwNTIzYmQ2ZDY2MWY3MmE2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9XZWVrSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1dlZWtJbnB1dFR5
cGUuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiRGF0ZUNvbXBvbmVudHMuaCIKICNp
bmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5j
bHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAK
ICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9XRUVLKQpAQCAtNDIsOSArNDMsOSBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLXN0YXRpYyBjb25zdCBk
b3VibGUgd2Vla0RlZmF1bHRTdGVwQmFzZSA9IC0yNTkyMDAwMDAuMDsgLy8gVGhlIGZpcnN0IGRh
eSBvZiAxOTcwLVcwMS4KLXN0YXRpYyBjb25zdCBkb3VibGUgd2Vla0RlZmF1bHRTdGVwID0gMS4w
Owotc3RhdGljIGNvbnN0IGRvdWJsZSB3ZWVrU3RlcFNjYWxlRmFjdG9yID0gNjA0ODAwMDAwLjA7
CitzdGF0aWMgY29uc3QgaW50IHdlZWtEZWZhdWx0U3RlcEJhc2UgPSAtMjU5MjAwMDAwOyAvLyBU
aGUgZmlyc3QgZGF5IG9mIDE5NzAtVzAxLgorc3RhdGljIGNvbnN0IGludCB3ZWVrRGVmYXVsdFN0
ZXAgPSAxOworc3RhdGljIGNvbnN0IGludCB3ZWVrU3RlcFNjYWxlRmFjdG9yID0gNjA0ODAwMDAw
OwogCiBQYXNzT3duUHRyPElucHV0VHlwZT4gV2Vla0lucHV0VHlwZTo6Y3JlYXRlKEhUTUxJbnB1
dEVsZW1lbnQqIGVsZW1lbnQpCiB7CkBAIC02NSwxMCArNjYsMTAgQEAgU3RlcFJhbmdlIFdlZWtJ
bnB1dFR5cGU6OmNyZWF0ZVN0ZXBSYW5nZShBbnlTdGVwSGFuZGxpbmcgYW55U3RlcEhhbmRsaW5n
KSBjb25zdAogewogICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RlcFJhbmdlOjpTdGVw
RGVzY3JpcHRpb24sIHN0ZXBEZXNjcmlwdGlvbiwgKHdlZWtEZWZhdWx0U3RlcCwgd2Vla0RlZmF1
bHRTdGVwQmFzZSwgd2Vla1N0ZXBTY2FsZUZhY3RvciwgU3RlcFJhbmdlOjpQYXJzZWRTdGVwVmFs
dWVTaG91bGRCZUludGVnZXIpKTsKIAotICAgIGRvdWJsZSBzdGVwQmFzZSA9IHBhcnNlVG9Eb3Vi
bGUoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpLCB3ZWVrRGVmYXVsdFN0ZXBC
YXNlKTsKLSAgICBkb3VibGUgbWluaW11bSA9IHBhcnNlVG9Eb3VibGUoZWxlbWVudCgpLT5mYXN0
R2V0QXR0cmlidXRlKG1pbkF0dHIpLCBEYXRlQ29tcG9uZW50czo6bWluaW11bVdlZWsoKSk7Ci0g
ICAgZG91YmxlIG1heGltdW0gPSBwYXJzZVRvRG91YmxlKGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJp
YnV0ZShtYXhBdHRyKSwgRGF0ZUNvbXBvbmVudHM6Om1heGltdW1XZWVrKCkpOwotICAgIFN0ZXBS
YW5nZTo6RG91YmxlV2l0aERlY2ltYWxQbGFjZXNPck1pc3Npbmcgc3RlcCA9IFN0ZXBSYW5nZTo6
cGFyc2VTdGVwKGFueVN0ZXBIYW5kbGluZywgc3RlcERlc2NyaXB0aW9uLCBlbGVtZW50KCktPmZh
c3RHZXRBdHRyaWJ1dGUoc3RlcEF0dHIpKTsKKyAgICBjb25zdCBEZWNpbWFsIHN0ZXBCYXNlID0g
cGFyc2VUb0RlY2ltYWwoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpLCB3ZWVr
RGVmYXVsdFN0ZXBCYXNlKTsKKyAgICBjb25zdCBEZWNpbWFsIG1pbmltdW0gPSBwYXJzZVRvRGVj
aW1hbChlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUobWluQXR0ciksIGNvbnZlcnREb3VibGVU
b0RlY2ltYWwoRGF0ZUNvbXBvbmVudHM6Om1pbmltdW1XZWVrKCkpKTsKKyAgICBjb25zdCBEZWNp
bWFsIG1heGltdW0gPSBwYXJzZVRvRGVjaW1hbChlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUo
bWF4QXR0ciksIGNvbnZlcnREb3VibGVUb0RlY2ltYWwoRGF0ZUNvbXBvbmVudHM6Om1heGltdW1X
ZWVrKCkpKTsKKyAgICBjb25zdCBTdGVwUmFuZ2U6OkRlY2ltYWxPck1pc3Npbmcgc3RlcCA9IFN0
ZXBSYW5nZTo6cGFyc2VTdGVwKGFueVN0ZXBIYW5kbGluZywgc3RlcERlc2NyaXB0aW9uLCBlbGVt
ZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUoc3RlcEF0dHIpKTsKICAgICByZXR1cm4gU3RlcFJhbmdl
KHN0ZXBCYXNlLCBtaW5pbXVtLCBtYXhpbXVtLCBzdGVwLCBzdGVwRGVzY3JpcHRpb24pOwogfQog
CkBAIC03OSwxMCArODAsMTAgQEAgYm9vbCBXZWVrSW5wdXRUeXBlOjpwYXJzZVRvRGF0ZUNvbXBv
bmVudHNJbnRlcm5hbChjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWcKICAgICByZXR1cm4g
b3V0LT5wYXJzZVdlZWsoY2hhcmFjdGVycywgbGVuZ3RoLCAwLCBlbmQpICYmIGVuZCA9PSBsZW5n
dGg7CiB9CiAKLWJvb2wgV2Vla0lucHV0VHlwZTo6c2V0TWlsbGlzZWNvbmRUb0RhdGVDb21wb25l
bnRzKGRvdWJsZSB2YWx1ZSwgRGF0ZUNvbXBvbmVudHMqIGRhdGUpIGNvbnN0Citib29sIFdlZWtJ
bnB1dFR5cGU6OnNldE1pbGxpc2Vjb25kVG9EYXRlQ29tcG9uZW50cyhjb25zdCBEZWNpbWFsJiB2
YWx1ZSwgRGF0ZUNvbXBvbmVudHMqIGRhdGUpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGRhdGUpOwot
ICAgIHJldHVybiBkYXRlLT5zZXRNaWxsaXNlY29uZHNTaW5jZUVwb2NoRm9yV2Vlayh2YWx1ZSk7
CisgICAgcmV0dXJuIGRhdGUtPnNldE1pbGxpc2Vjb25kc1NpbmNlRXBvY2hGb3JXZWVrKGNvbnZl
cnREZWNpbWFsVG9Eb3VibGUodmFsdWUpKTsKIH0KIAogYm9vbCBXZWVrSW5wdXRUeXBlOjppc1dl
ZWtGaWVsZCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1dlZWtJbnB1
dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvV2Vla0lucHV0VHlwZS5oCmluZGV4IGNjNThh
YjdkMDQ0YjQ0NWY5ZjcxZDAzNzJhMWFhZGZmYjg0ZGU5MzIuLmNjNjJmM2E5MDU2MDJmNDQ2ODdi
YzVhNDQ3OGNiMjNhMTA0YjRjMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvV2Vl
a0lucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvV2Vla0lucHV0VHlwZS5oCkBA
IC00Nyw3ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBEYXRlQ29tcG9uZW50czo6VHlw
ZSBkYXRlVHlwZSgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgU3RlcFJhbmdlIGNyZWF0
ZVN0ZXBSYW5nZShBbnlTdGVwSGFuZGxpbmcpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwg
Ym9vbCBwYXJzZVRvRGF0ZUNvbXBvbmVudHNJbnRlcm5hbChjb25zdCBVQ2hhciosIHVuc2lnbmVk
IGxlbmd0aCwgRGF0ZUNvbXBvbmVudHMqKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJv
b2wgc2V0TWlsbGlzZWNvbmRUb0RhdGVDb21wb25lbnRzKGRvdWJsZSwgRGF0ZUNvbXBvbmVudHMq
KSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgc2V0TWlsbGlzZWNvbmRUb0RhdGVD
b21wb25lbnRzKGNvbnN0IERlY2ltYWwmLCBEYXRlQ29tcG9uZW50cyopIGNvbnN0IE9WRVJSSURF
OwogICAgIHZpcnR1YWwgYm9vbCBpc1dlZWtGaWVsZCgpIGNvbnN0IE9WRVJSSURFOwogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcAppbmRl
eCBhOTlhMjFhMDhlNWJkZDA4NjVmYTMzYzczOTU1MDQwMTcyYzM4YjMxLi43ODg3ZDVmZjZlYzQw
OWIwMmVhNjg2MDg3YWUzMzc5OGU3Y2I2Yzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcApAQCAtNTgsNiArNTgsMTUgQEAgU3RyaW5nIHN0
cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhjb25zdCBTdHJpbmcmIHN0cmluZykKICAg
ICByZXR1cm4gc3RyaW5nLnN1YnN0cmluZyhudW1MZWFkaW5nU3BhY2VzLCBsZW5ndGggLSAobnVt
TGVhZGluZ1NwYWNlcyArIG51bVRyYWlsaW5nU3BhY2VzKSk7CiB9CiAKK1N0cmluZyBzZXJpYWxp
emVGb3JOdW1iZXJUeXBlKGNvbnN0IERlY2ltYWwmIG51bWJlcikKK3sKKyAgICBpZiAobnVtYmVy
LmlzWmVybygpKSB7CisgICAgICAgIC8vIERlY2ltYWw6OnRvU3RyaW5nIGFwcGVuZCBleHBvbmVu
dCwgZS5nLiAiMGUtMTgiCisgICAgICAgIHJldHVybiBudW1iZXIuaXNOZWdhdGl2ZSgpID8gIi0w
IiA6ICIwIjsKKyAgICB9CisgICAgcmV0dXJuIG51bWJlci50b1N0cmluZygpOworfQorCiBTdHJp
bmcgc2VyaWFsaXplRm9yTnVtYmVyVHlwZShkb3VibGUgbnVtYmVyKQogewogICAgIC8vIEFjY29y
ZGluZyB0byBIVE1MNSwgInRoZSBiZXN0IHJlcHJlc2VudGF0aW9uIG9mIHRoZSBudW1iZXIgbiBh
cyBhIGZsb2F0aW5nCkBAIC02Niw2ICs3NSwzNSBAQCBTdHJpbmcgc2VyaWFsaXplRm9yTnVtYmVy
VHlwZShkb3VibGUgbnVtYmVyKQogICAgIHJldHVybiBTdHJpbmcobnVtYmVyVG9TdHJpbmcobnVt
YmVyLCBidWZmZXIpKTsKIH0KIAorRGVjaW1hbCBwYXJzZVRvRGVjaW1hbEZvck51bWJlclR5cGUo
Y29uc3QgU3RyaW5nJiBzdHJpbmcsIGNvbnN0IERlY2ltYWwmIGZhbGxiYWNrVmFsdWUpCit7Cisg
ICAgLy8gU2VlIEhUTUw1IDIuNS40LjMgYFJlYWwgbnVtYmVycy4nIGFuZCBwYXJzZVRvRG91Ymxl
Rm9yTnVtYmVyVHlwZQorCisgICAgLy8gU3RyaW5nOjp0b0RvdWJsZSgpIGFjY2VwdHMgbGVhZGlu
ZyArIGFuZCB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMsIHdoaWNoIGFyZSBub3QgdmFsaWQgaGVyZS4K
KyAgICBVQ2hhciBmaXJzdENoYXJhY3RlciA9IHN0cmluZ1swXTsKKyAgICBpZiAoZmlyc3RDaGFy
YWN0ZXIgIT0gJy0nICYmIGZpcnN0Q2hhcmFjdGVyICE9ICcuJyAmJiAhaXNBU0NJSURpZ2l0KGZp
cnN0Q2hhcmFjdGVyKSkKKyAgICAgICAgcmV0dXJuIGZhbGxiYWNrVmFsdWU7CisKKyAgICBEZWNp
bWFsIHZhbHVlID0gRGVjaW1hbDo6ZnJvbVN0cmluZyhzdHJpbmcpOworICAgIGlmICghdmFsdWUu
aXNGaW5pdGUoKSkKKyAgICAgICAgcmV0dXJuIGZhbGxiYWNrVmFsdWU7CisKKyAgICBjb25zdCB1
aW50NjRfdCBsZWFkaW5nRGlnaXRzT2YyUG93ZXIxMDI0ID0gVUlOVDY0X0MoMTc5NzY5MzEzNDg2
MjMxNTkpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgRGVjaW1hbCwgaHRtbE1heCwg
KERlY2ltYWw6OlBvc2l0aXZlLCAyOTIsIGxlYWRpbmdEaWdpdHNPZjJQb3dlcjEwMjQpKTsKKyAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IERlY2ltYWwsIGh0bWxNaW4sIChEZWNpbWFsOjpO
ZWdhdGl2ZSwgMjkyLCBsZWFkaW5nRGlnaXRzT2YyUG93ZXIxMDI0KSk7CisKKyAgICBpZiAodmFs
dWUgPCBodG1sTWluIHx8IHZhbHVlID4gaHRtbE1heCkKKyAgICAgICAgcmV0dXJuIGZhbGxiYWNr
VmFsdWU7CisKKyAgICAvLyBXZSByZXR1cm4gKzAgZm9yIC0wIGNhc2UuCisgICAgcmV0dXJuIHZh
bHVlLmlzWmVybygpID8gRGVjaW1hbCgwKSA6IHZhbHVlOworfQorCitEZWNpbWFsIHBhcnNlVG9E
ZWNpbWFsRm9yTnVtYmVyVHlwZShjb25zdCBTdHJpbmcmIHN0cmluZykKK3sKKyAgICByZXR1cm4g
cGFyc2VUb0RlY2ltYWxGb3JOdW1iZXJUeXBlKHN0cmluZywgRGVjaW1hbDo6bmFuKCkpOworfQor
CiBkb3VibGUgcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUoY29uc3QgU3RyaW5nJiBzdHJpbmcs
IGRvdWJsZSBmYWxsYmFja1ZhbHVlKQogewogICAgIC8vIFNlZSBIVE1MNSAyLjUuNC4zIGBSZWFs
IG51bWJlcnMuJwpAQCAtOTgsODQgKzEzNiw2IEBAIGRvdWJsZSBwYXJzZVRvRG91YmxlRm9yTnVt
YmVyVHlwZShjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICByZXR1cm4gcGFyc2VUb0RvdWJsZUZv
ck51bWJlclR5cGUoc3RyaW5nLCBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05h
TigpKTsKIH0KIAotZG91YmxlIHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlV2l0aERlY2ltYWxQ
bGFjZXMoY29uc3QgU3RyaW5nJiBzdHJpbmcsIHVuc2lnbmVkICpkZWNpbWFsUGxhY2VzLCBkb3Vi
bGUgZmFsbGJhY2tWYWx1ZSkKLXsKLSAgICBpZiAoZGVjaW1hbFBsYWNlcykKLSAgICAgICAgKmRl
Y2ltYWxQbGFjZXMgPSAwOwotCi0gICAgZG91YmxlIHZhbHVlID0gcGFyc2VUb0RvdWJsZUZvck51
bWJlclR5cGUoc3RyaW5nLCBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigp
KTsKLSAgICBpZiAoIWlzZmluaXRlKHZhbHVlKSkKLSAgICAgICAgcmV0dXJuIGZhbGxiYWNrVmFs
dWU7Ci0KLSAgICBpZiAoIWRlY2ltYWxQbGFjZXMpCi0gICAgICAgIHJldHVybiB2YWx1ZTsKLQot
ICAgIHNpemVfdCBkb3RJbmRleCA9IHN0cmluZy5maW5kKCcuJyk7Ci0gICAgc2l6ZV90IGVJbmRl
eCA9IHN0cmluZy5maW5kKCdlJyk7Ci0gICAgaWYgKGVJbmRleCA9PSBub3RGb3VuZCkgCi0gICAg
ICAgIGVJbmRleCA9IHN0cmluZy5maW5kKCdFJyk7Ci0KLSAgICB1bnNpZ25lZCBiYXNlRGVjaW1h
bFBsYWNlcyA9IDA7Ci0gICAgaWYgKGRvdEluZGV4ICE9IG5vdEZvdW5kKSB7Ci0gICAgICAgIGlm
IChlSW5kZXggPT0gbm90Rm91bmQpCi0gICAgICAgICAgICBiYXNlRGVjaW1hbFBsYWNlcyA9IHN0
cmluZy5sZW5ndGgoKSAtIGRvdEluZGV4IC0gMTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAg
YmFzZURlY2ltYWxQbGFjZXMgPSBlSW5kZXggLSBkb3RJbmRleCAtIDE7Ci0gICAgfQotCi0gICAg
aW50IGV4cG9uZW50ID0gMDsKLSAgICBpZiAoZUluZGV4ICE9IG5vdEZvdW5kKSB7Ci0gICAgICAg
IHVuc2lnbmVkIGN1cnNvciA9IGVJbmRleCArIDEsIGN1cnNvclNhdmVkOwotICAgICAgICBpbnQg
ZGlnaXQsIGV4cG9uZW50U2lnbjsKLSAgICAgICAgaW50MzJfdCBleHBvbmVudDMyOwotICAgICAg
ICBzaXplX3QgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOwotCi0gICAgICAgIC8vIE5vdCB1c2lu
ZyBTdHJpbmcudG9JbnQoKSBpbiBvcmRlciB0byBwZXJmb3JtIHRoZSBzYW1lIGNvbXB1dGF0aW9u
IGFzIGR0b2EoKSBkb2VzLgotICAgICAgICBleHBvbmVudFNpZ24gPSAwOwotICAgICAgICBzd2l0
Y2ggKGRpZ2l0ID0gc3RyaW5nW2N1cnNvcl0pIHsKLSAgICAgICAgY2FzZSAnLSc6Ci0gICAgICAg
ICAgICBleHBvbmVudFNpZ24gPSAxOwotICAgICAgICBjYXNlICcrJzoKLSAgICAgICAgICAgIGRp
Z2l0ID0gc3RyaW5nWysrY3Vyc29yXTsKLSAgICAgICAgfQotICAgICAgICBpZiAoZGlnaXQgPj0g
JzAnICYmIGRpZ2l0IDw9ICc5JykgewotICAgICAgICAgICAgd2hpbGUgKGN1cnNvciA8IGxlbmd0
aCAmJiBkaWdpdCA9PSAnMCcpCi0gICAgICAgICAgICAgICAgZGlnaXQgPSBzdHJpbmdbKytjdXJz
b3JdOwotICAgICAgICAgICAgaWYgKGRpZ2l0ID4gJzAnICYmIGRpZ2l0IDw9ICc5JykgewotICAg
ICAgICAgICAgICAgIGV4cG9uZW50MzIgPSBkaWdpdCAtICcwJzsKLSAgICAgICAgICAgICAgICBj
dXJzb3JTYXZlZCA9IGN1cnNvcjsKLSAgICAgICAgICAgICAgICB3aGlsZSAoY3Vyc29yIDwgbGVu
Z3RoICYmIChkaWdpdCA9IHN0cmluZ1srK2N1cnNvcl0pID49ICcwJyAmJiBkaWdpdCA8PSAnOScp
Ci0gICAgICAgICAgICAgICAgICAgIGV4cG9uZW50MzIgPSAoMTAgKiBleHBvbmVudDMyKSArIGRp
Z2l0IC0gJzAnOwotICAgICAgICAgICAgICAgIGlmIChjdXJzb3IgLSBjdXJzb3JTYXZlZCA+IDgg
fHwgZXhwb25lbnQzMiA+IDE5OTk5KQotICAgICAgICAgICAgICAgICAgICAvKiBBdm9pZCBjb25m
dXNpb24gZnJvbSBleHBvbmVudHMKLSAgICAgICAgICAgICAgICAgICAgICogc28gbGFyZ2UgdGhh
dCBlIG1pZ2h0IG92ZXJmbG93LgotICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAg
ICAgICAgICAgZXhwb25lbnQgPSAxOTk5OTsgLyogc2FmZSBmb3IgMTYgYml0IGludHMgKi8KLSAg
ICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGV4cG9uZW50ID0gc3RhdGlj
X2Nhc3Q8aW50PihleHBvbmVudDMyKTsKLSAgICAgICAgICAgICAgICBpZiAoZXhwb25lbnRTaWdu
KQotICAgICAgICAgICAgICAgICAgICBleHBvbmVudCA9IC1leHBvbmVudDsKLSAgICAgICAgICAg
IH0gZWxzZQotICAgICAgICAgICAgICAgIGV4cG9uZW50ID0gMDsKLSAgICAgICAgfQotICAgIH0K
LQotICAgIGludCBpbnREZWNpbWFsUGxhY2VzID0gYmFzZURlY2ltYWxQbGFjZXMgLSBleHBvbmVu
dDsKLSAgICBpZiAoaW50RGVjaW1hbFBsYWNlcyA8IDApCi0gICAgICAgICpkZWNpbWFsUGxhY2Vz
ID0gMDsKLSAgICBlbHNlIGlmIChpbnREZWNpbWFsUGxhY2VzID4gMTk5OTkpCi0gICAgICAgICpk
ZWNpbWFsUGxhY2VzID0gMTk5OTk7Ci0gICAgZWxzZQotICAgICAgICAqZGVjaW1hbFBsYWNlcyA9
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbnREZWNpbWFsUGxhY2VzKTsKLQotICAgIHJldHVybiB2
YWx1ZTsKLX0KLQotZG91YmxlIHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlV2l0aERlY2ltYWxQ
bGFjZXMoY29uc3QgU3RyaW5nJiBzdHJpbmcsIHVuc2lnbmVkICpkZWNpbWFsUGxhY2VzKQotewot
ICAgIHJldHVybiBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZVdpdGhEZWNpbWFsUGxhY2VzKHN0
cmluZywgZGVjaW1hbFBsYWNlcywgc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9O
YU4oKSk7Ci19Ci0KIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJy
ZW50LXdvcmsvI3J1bGVzLWZvci1wYXJzaW5nLWludGVnZXJzCiBib29sIHBhcnNlSFRNTEludGVn
ZXIoY29uc3QgU3RyaW5nJiBpbnB1dCwgaW50JiB2YWx1ZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuaAppbmRleCA4YTc3NGY5ZWU0MzI1Zjc5OTZk
Y2VlODAyZTc4NTkyMWYxMjAwNzIxLi4wOWQyMmRmNWEzNGIzOGU0M2Q3OGQ1ZmJmNWI1YWVmMzgw
Zjc4Mjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2Vy
SWRpb21zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9t
cy5oCkBAIC0yNSwxMSArMjUsMTQgQEAKICNpZm5kZWYgSFRNTFBhcnNlcklkaW9tc19oCiAjZGVm
aW5lIEhUTUxQYXJzZXJJZGlvbXNfaAogCisjaW5jbHVkZSAiRGVjaW1hbC5oIgogI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvVW5pY29kZS5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIERlY2ltYWw7CisKIC8vIFNwYWNlIGNoYXJhY3RlcnMg
YXMgZGVmaW5lZCBieSB0aGUgSFRNTCBzcGVjaWZpY2F0aW9uLgogYm9vbCBpc0hUTUxTcGFjZShV
Q2hhcik7CiBib29sIGlzSFRNTExpbmVCcmVhayhVQ2hhcik7CkBAIC0zOSwxNSArNDIsMTggQEAg
Ym9vbCBpc05vdEhUTUxTcGFjZShVQ2hhcik7CiBTdHJpbmcgc3RyaXBMZWFkaW5nQW5kVHJhaWxp
bmdIVE1MU3BhY2VzKGNvbnN0IFN0cmluZyYpOwogCiAvLyBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0
aGUgSFRNTCBzcGVjaWZpY2F0aW9uJ3MgYWxnb3JpdGhtIHRvIGNvbnZlcnQgYSBudW1iZXIgdG8g
YSBzdHJpbmcgZm9yIG51bWJlciBhbmQgcmFuZ2UgdHlwZXMuCitTdHJpbmcgc2VyaWFsaXplRm9y
TnVtYmVyVHlwZShjb25zdCBEZWNpbWFsJik7CiBTdHJpbmcgc2VyaWFsaXplRm9yTnVtYmVyVHlw
ZShkb3VibGUpOwogCisvLyBDb252ZXJ0IHRoZSBzcGVjaWZpZWQgc3RyaW5nIHRvIGEgZGVjaW1h
bC4gSWYgdGhlIGNvbnZlcnNpb24gZmFpbHMsIHRoZSByZXR1cm4gdmFsdWUgaXMgZmFsc2UuCisv
LyBMZWFkaW5nIG9yIHRyYWlsaW5nIGlsbGVnYWwgY2hhcmFjdGVycyBjYXVzZSBmYWlsdXJlLCBh
cyBkb2VzIHBhc3NpbmcgYW4gZW1wdHkgc3RyaW5nLgorRGVjaW1hbCBwYXJzZVRvRGVjaW1hbEZv
ck51bWJlclR5cGUoY29uc3QgU3RyaW5nJik7CitEZWNpbWFsIHBhcnNlVG9EZWNpbWFsRm9yTnVt
YmVyVHlwZShjb25zdCBTdHJpbmcmLCBjb25zdCBEZWNpbWFsJiBmYWxsYmFja1ZhbHVlKTsKKwog
Ly8gQ29udmVydCB0aGUgc3BlY2lmaWVkIHN0cmluZyB0byBhIGRvdWJsZS4gSWYgdGhlIGNvbnZl
cnNpb24gZmFpbHMsIHRoZSByZXR1cm4gdmFsdWUgaXMgZmFsc2UuCiAvLyBMZWFkaW5nIG9yIHRy
YWlsaW5nIGlsbGVnYWwgY2hhcmFjdGVycyBjYXVzZSBmYWlsdXJlLCBhcyBkb2VzIHBhc3Npbmcg
YW4gZW1wdHkgc3RyaW5nLgotLy8gVGhlIGRvdWJsZSogcGFyYW1ldGVyIG1heSBiZSAwIHRvIGNo
ZWNrIGlmIHRoZSBzdHJpbmcgY2FuIGJlIHBhcnNlZCB3aXRob3V0IGdldHRpbmcgdGhlIHJlc3Vs
dC4KIGRvdWJsZSBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZShjb25zdCBTdHJpbmcmKTsKIGRv
dWJsZSBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZShjb25zdCBTdHJpbmcmLCBkb3VibGUgZmFs
bGJhY2tWYWx1ZSk7Ci1kb3VibGUgcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGVXaXRoRGVjaW1h
bFBsYWNlcyhjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCopOwotZG91YmxlIHBhcnNlVG9Eb3VibGVG
b3JOdW1iZXJUeXBlV2l0aERlY2ltYWxQbGFjZXMoY29uc3QgU3RyaW5nJiwgdW5zaWduZWQqLCBk
b3VibGUgZmFsbGJhY2tWYWx1ZSk7CiAKIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93
ZWItYXBwcy9jdXJyZW50LXdvcmsvI3J1bGVzLWZvci1wYXJzaW5nLWludGVnZXJzCiBib29sIHBh
cnNlSFRNTEludGVnZXIoY29uc3QgU3RyaW5nJiwgaW50Jik7CkBAIC01Nyw2ICs2MywxNiBAQCBi
b29sIHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCBp
bnQmKTsKIAogLy8gSW5saW5lIGltcGxlbWVudGF0aW9ucyBvZiBzb21lIG9mIHRoZSBmdW5jdGlv
bnMgZGVjbGFyZWQgYWJvdmUuCiAKK2lubGluZSBkb3VibGUgY29udmVydERlY2ltYWxUb0RvdWJs
ZShjb25zdCBEZWNpbWFsJiB2YWx1ZSkKK3sKKyAgICByZXR1cm4gcGFyc2VUb0RvdWJsZUZvck51
bWJlclR5cGUoc2VyaWFsaXplRm9yTnVtYmVyVHlwZSh2YWx1ZSkpOworfQorCitpbmxpbmUgRGVj
aW1hbCBjb252ZXJ0RG91YmxlVG9EZWNpbWFsKGRvdWJsZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4g
cGFyc2VUb0RlY2ltYWxGb3JOdW1iZXJUeXBlKHNlcmlhbGl6ZUZvck51bWJlclR5cGUodmFsdWUp
KTsKK30KKwogaW5saW5lIGJvb2wgaXNIVE1MU3BhY2UoVUNoYXIgY2hhcmFjdGVyKQogewogICAg
IC8vIEhpc3RvZ3JhbSBmcm9tIEFwcGxlJ3MgcGFnZSBsb2FkIHRlc3QgY29tYmluZWQgd2l0aCBz
b21lIGFkIGhvYyBicm93c2luZyBzb21lIG90aGVyIHRlc3Qgc3VpdGVzLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ2FsZW5kYXJQaWNrZXJFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NhbGVuZGFyUGlja2VyRWxlbWVudC5jcHAKaW5kZXgg
MWE3YjQ5ZmE2NDhmOWVlMzc4MTQ5OTU0ZTRhNjdiZWUxNjYyY2Q1OC4uNTM1OGNjYWY3YTNkZjJl
MzNhMDNlYmYwYzg4OTExYjBjMDg4MmJjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvQ2FsZW5kYXJQaWNrZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9DYWxlbmRhclBpY2tlckVsZW1lbnQuY3BwCkBAIC0yMDgsNyArMjA4LDcgQEAg
dm9pZCBDYWxlbmRhclBpY2tlckVsZW1lbnQ6OndyaXRlRG9jdW1lbnQoRG9jdW1lbnRXcml0ZXIm
IHdyaXRlcikKICAgICBTdHJpbmcgbWluU3RyaW5nID0gZGF0ZS50b1N0cmluZygpOwogICAgIGRh
dGUuc2V0TWlsbGlzZWNvbmRzU2luY2VFcG9jaEZvckRhdGUoaW5wdXQtPm1heGltdW0oKSk7CiAg
ICAgU3RyaW5nIG1heFN0cmluZyA9IGRhdGUudG9TdHJpbmcoKTsKLSAgICBkb3VibGUgc3RlcDsK
KyAgICBEZWNpbWFsIHN0ZXA7CiAgICAgU3RyaW5nIHN0ZXBTdHJpbmcgPSBpbnB1dC0+ZmFzdEdl
dEF0dHJpYnV0ZShzdGVwQXR0cik7CiAgICAgaWYgKHN0ZXBTdHJpbmcuaXNFbXB0eSgpIHx8ICFp
bnB1dC0+Z2V0QWxsb3dlZFZhbHVlU3RlcCgmc3RlcCkpCiAgICAgICAgIHN0ZXBTdHJpbmcgPSAi
MSI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50
LmNwcAppbmRleCA4NDIyYTMwMTk5MDIyOTkxMWI1OGI2MDA3OGRkMTgwOTY0NWQ5ZDdjLi40Mjlk
MTZiYjg4MDJhY2ZlYTAyYTAyMTZhNzY5MGViYjAyODBmZTVlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAKQEAgLTUxLDEwICs1MSwx
MCBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWlubGlu
ZSBzdGF0aWMgZG91YmxlIHNsaWRlclBvc2l0aW9uKEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQp
CitpbmxpbmUgc3RhdGljIERlY2ltYWwgc2xpZGVyUG9zaXRpb24oSFRNTElucHV0RWxlbWVudCog
ZWxlbWVudCkKIHsKICAgICBjb25zdCBTdGVwUmFuZ2Ugc3RlcFJhbmdlKGVsZW1lbnQtPmNyZWF0
ZVN0ZXBSYW5nZShSZWplY3RBbnkpKTsKLSAgICBjb25zdCBkb3VibGUgb2xkVmFsdWUgPSBwYXJz
ZVRvRG91YmxlRm9yTnVtYmVyVHlwZShlbGVtZW50LT52YWx1ZSgpLCBzdGVwUmFuZ2UuZGVmYXVs
dFZhbHVlKCkpOworICAgIGNvbnN0IERlY2ltYWwgb2xkVmFsdWUgPSBwYXJzZVRvRGVjaW1hbEZv
ck51bWJlclR5cGUoZWxlbWVudC0+dmFsdWUoKSwgc3RlcFJhbmdlLmRlZmF1bHRWYWx1ZSgpKTsK
ICAgICByZXR1cm4gc3RlcFJhbmdlLnByb3BvcnRpb25Gcm9tVmFsdWUoc3RlcFJhbmdlLmNsYW1w
VmFsdWUob2xkVmFsdWUpKTsKIH0KIApAQCAtMTEwLDcgKzExMCw3IEBAIHZvaWQgUmVuZGVyU2xp
ZGVyVGh1bWI6OmxheW91dCgpCiAgICAgSFRNTElucHV0RWxlbWVudCogaW5wdXQgPSBub2RlKCkt
PnNoYWRvd0FuY2VzdG9yTm9kZSgpLT50b0lucHV0RWxlbWVudCgpOwogICAgIGJvb2wgaXNWZXJ0
aWNhbCA9IHN0eWxlKCktPmFwcGVhcmFuY2UoKSA9PSBTbGlkZXJUaHVtYlZlcnRpY2FsUGFydCB8
fCBzdHlsZSgpLT5hcHBlYXJhbmNlKCkgPT0gTWVkaWFWb2x1bWVTbGlkZXJUaHVtYlBhcnQ7CiAK
LSAgICBkb3VibGUgZnJhY3Rpb24gPSBzbGlkZXJQb3NpdGlvbihpbnB1dCkgKiAxMDA7CisgICAg
ZG91YmxlIGZyYWN0aW9uID0gY29udmVydERlY2ltYWxUb0RvdWJsZShzbGlkZXJQb3NpdGlvbihp
bnB1dCkgKiAxMDApOwogICAgIGlmIChpc1ZlcnRpY2FsKQogICAgICAgICBzdHlsZSgpLT5zZXRU
b3AoTGVuZ3RoKDEwMCAtIGZyYWN0aW9uLCBQZXJjZW50KSk7CiAgICAgZWxzZSBpZiAoc3R5bGUo
KS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKQpAQCAtMjM2LDExICsyMzYsMTAgQEAgdm9pZCBT
bGlkZXJUaHVtYkVsZW1lbnQ6OnNldFBvc2l0aW9uRnJvbVBvaW50KGNvbnN0IExheW91dFBvaW50
JiBwb2ludCkKICAgICBpZiAocG9zaXRpb24gPT0gY3VycmVudFBvc2l0aW9uKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBkb3VibGUgZnJhY3Rpb24gPSBzdGF0aWNfY2FzdDxkb3VibGU+KHBvc2l0
aW9uKSAvIHRyYWNrU2l6ZTsKLSAgICBpZiAoaXNWZXJ0aWNhbCB8fCAhcmVuZGVyQm94KCktPnN0
eWxlKCktPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkKLSAgICAgICAgZnJhY3Rpb24gPSAxIC0g
ZnJhY3Rpb247Ci0gICAgU3RlcFJhbmdlIHN0ZXBSYW5nZShpbnB1dC0+Y3JlYXRlU3RlcFJhbmdl
KFJlamVjdEFueSkpOwotICAgIGRvdWJsZSB2YWx1ZSA9IHN0ZXBSYW5nZS5jbGFtcFZhbHVlKHN0
ZXBSYW5nZS52YWx1ZUZyb21Qcm9wb3J0aW9uKGZyYWN0aW9uKSk7CisgICAgY29uc3QgRGVjaW1h
bCByYXRpbyA9IGNvbnZlcnREb3VibGVUb0RlY2ltYWwoc3RhdGljX2Nhc3Q8ZG91YmxlPihwb3Np
dGlvbikgLyB0cmFja1NpemUpOworICAgIGNvbnN0IERlY2ltYWwgZnJhY3Rpb24gPSBpc1ZlcnRp
Y2FsIHx8ICFyZW5kZXJCb3goKS0+c3R5bGUoKS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8g
IERlY2ltYWwoMSkgLSByYXRpbyA6IHJhdGlvOworICAgIGNvbnN0IFN0ZXBSYW5nZSBzdGVwUmFu
Z2UoaW5wdXQtPmNyZWF0ZVN0ZXBSYW5nZShSZWplY3RBbnkpKTsKKyAgICBjb25zdCBEZWNpbWFs
IHZhbHVlID0gc3RlcFJhbmdlLmNsYW1wVmFsdWUoc3RlcFJhbmdlLnZhbHVlRnJvbVByb3BvcnRp
b24oZnJhY3Rpb24pKTsKIAogICAgIC8vIEZJWE1FOiBUaGlzIGlzIG5vIGxvbmdlciBiZWluZyBz
ZXQgZnJvbSByZW5kZXJlci4gQ29uc2lkZXIgdXBkYXRpbmcgdGhlIG1ldGhvZCBuYW1lLgogICAg
IGlucHV0LT5zZXRWYWx1ZUZyb21SZW5kZXJlcihzZXJpYWxpemVGb3JOdW1iZXJUeXBlKHZhbHVl
KSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggMTI5Yzc3ZjljMjRmMjkxOTkwNmQwN2Q4NDA1OWY2MGZmNDk0MTQ3Yi4uNmRj
MmExYmVlZDAwNDQyMDg2ZDE0ODhhMjUzNGZkODljOTZkZGM1NCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEz
IEBACisyMDEyLTA1LTMxICBZb3NoaWZ1bWkgSW5vdWUgIDx5b3NpbkBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgSW50cm9kdWNlIERlY2ltYWwgYXJpdGhtZXRpYyB0byBmaXggcm91bmRpbmcgZXJy
b3JzIGluIG51bWJlci9yYW5nZSBpbnB1dCB0eXBlcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODAwMDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZm9ybXMvcmFuZ2UvcmFuZ2UtdmFsdWUtcm91
bmRpbmctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL3JhbmdlL3Jh
bmdlLXZhbHVlLXJvdW5kaW5nLmh0bWw6IEFkZGVkLgorCiAyMDEyLTA2LTAxICBBZGFtIEJhcnRo
ICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgc2FuZGJveCBkaXJlY3RpdmUgaW4gWC1X
ZWJLaXQtQ1NQIGhlYWRlciB1bmFibGUgdG8gY3JlYXRlIGEgdW5pcXVlIG9yaWdpbgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yYW5nZS9yYW5nZS12YWx1ZS1yb3VuZGluZy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3JhbmdlL3JhbmdlLXZhbHVlLXJv
dW5kaW5nLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yY2NiMGE1Y2IxMmUyODY2MzU0NGU0YzM0
NTQ0MGI1M2JiNGFmZDVlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9yYW5nZS9yYW5nZS12YWx1ZS1yb3VuZGluZy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1NTAg
QEAKKworODAwMDkgSW50cm9kdWNlIERlY2ltYWwgYXJpdGhtZXRpYyB0byBmaXggcm91bmRpbmcg
ZXJyb3JzIGluIG51bWJlci9yYW5nZSBpbnB1dCB0eXBlcworCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKKworUEFTUyBjcmVhdGVTYW1wbGUoIjAuMSIsICIwLjEiLCAiMWUtMCIpLnZhbHVl
IGlzICIwLjEiCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4xIiwgIjAuMSIsICIxZS0wIikudmFsdWVB
c051bWJlciBpcyAwLjEKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjEiLCAiMC4yIiwgIjFlLTAiKS52
YWx1ZSBpcyAiMC4yIgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMSIsICIwLjIiLCAiMWUtMCIpLnZh
bHVlQXNOdW1iZXIgaXMgMC4yCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4xIiwgIjAuMyIsICIxZS0w
IikudmFsdWUgaXMgIjAuMyIKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjEiLCAiMC4zIiwgIjFlLTAi
KS52YWx1ZUFzTnVtYmVyIGlzIDAuMworUEFTUyBjcmVhdGVTYW1wbGUoIjAuMSIsICIwLjQiLCAi
MWUtMCIpLnZhbHVlIGlzICIwLjQiCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4xIiwgIjAuNCIsICIx
ZS0wIikudmFsdWVBc051bWJlciBpcyAwLjQKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjEiLCAiMC41
IiwgIjFlLTAiKS52YWx1ZSBpcyAiMC41IgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMSIsICIwLjUi
LCAiMWUtMCIpLnZhbHVlQXNOdW1iZXIgaXMgMC41CitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4xIiwg
IjAuNiIsICIxZS0wIikudmFsdWUgaXMgIjAuNiIKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjEiLCAi
MC42IiwgIjFlLTAiKS52YWx1ZUFzTnVtYmVyIGlzIDAuNgorUEFTUyBjcmVhdGVTYW1wbGUoIjAu
MSIsICIwLjciLCAiMWUtMCIpLnZhbHVlIGlzICIwLjciCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4x
IiwgIjAuNyIsICIxZS0wIikudmFsdWVBc051bWJlciBpcyAwLjcKK1BBU1MgY3JlYXRlU2FtcGxl
KCIwLjEiLCAiMC44IiwgIjFlLTAiKS52YWx1ZSBpcyAiMC44IgorUEFTUyBjcmVhdGVTYW1wbGUo
IjAuMSIsICIwLjgiLCAiMWUtMCIpLnZhbHVlQXNOdW1iZXIgaXMgMC44CitQQVNTIGNyZWF0ZVNh
bXBsZSgiMC4xIiwgIjAuOSIsICIxZS0wIikudmFsdWUgaXMgIjAuOSIKK1BBU1MgY3JlYXRlU2Ft
cGxlKCIwLjEiLCAiMC45IiwgIjFlLTAiKS52YWx1ZUFzTnVtYmVyIGlzIDAuOQorUEFTUyBjcmVh
dGVTYW1wbGUoIjAuMDEiLCAiMC4wMSIsICIxZS0xIikudmFsdWUgaXMgIjAuMDEiCitQQVNTIGNy
ZWF0ZVNhbXBsZSgiMC4wMSIsICIwLjAxIiwgIjFlLTEiKS52YWx1ZUFzTnVtYmVyIGlzIDAuMDEK
K1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAxIiwgIjAuMDIiLCAiMWUtMSIpLnZhbHVlIGlzICIwLjAy
IgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDEiLCAiMC4wMiIsICIxZS0xIikudmFsdWVBc051bWJl
ciBpcyAwLjAyCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMSIsICIwLjAzIiwgIjFlLTEiKS52YWx1
ZSBpcyAiMC4wMyIKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAxIiwgIjAuMDMiLCAiMWUtMSIpLnZh
bHVlQXNOdW1iZXIgaXMgMC4wMworUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDEiLCAiMC4wNCIsICIx
ZS0xIikudmFsdWUgaXMgIjAuMDQiCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMSIsICIwLjA0Iiwg
IjFlLTEiKS52YWx1ZUFzTnVtYmVyIGlzIDAuMDQKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAxIiwg
IjAuMDUiLCAiMWUtMSIpLnZhbHVlIGlzICIwLjA1IgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDEi
LCAiMC4wNSIsICIxZS0xIikudmFsdWVBc051bWJlciBpcyAwLjA1CitQQVNTIGNyZWF0ZVNhbXBs
ZSgiMC4wMSIsICIwLjA2IiwgIjFlLTEiKS52YWx1ZSBpcyAiMC4wNiIKK1BBU1MgY3JlYXRlU2Ft
cGxlKCIwLjAxIiwgIjAuMDYiLCAiMWUtMSIpLnZhbHVlQXNOdW1iZXIgaXMgMC4wNgorUEFTUyBj
cmVhdGVTYW1wbGUoIjAuMDEiLCAiMC4wNyIsICIxZS0xIikudmFsdWUgaXMgIjAuMDciCitQQVNT
IGNyZWF0ZVNhbXBsZSgiMC4wMSIsICIwLjA3IiwgIjFlLTEiKS52YWx1ZUFzTnVtYmVyIGlzIDAu
MDcKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAxIiwgIjAuMDgiLCAiMWUtMSIpLnZhbHVlIGlzICIw
LjA4IgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDEiLCAiMC4wOCIsICIxZS0xIikudmFsdWVBc051
bWJlciBpcyAwLjA4CitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMSIsICIwLjA5IiwgIjFlLTEiKS52
YWx1ZSBpcyAiMC4wOSIKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAxIiwgIjAuMDkiLCAiMWUtMSIp
LnZhbHVlQXNOdW1iZXIgaXMgMC4wOQorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAxIiwgIjAuMDAx
IiwgIjFlLTIiKS52YWx1ZSBpcyAiMC4wMDEiCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDEiLCAi
MC4wMDEiLCAiMWUtMiIpLnZhbHVlQXNOdW1iZXIgaXMgMC4wMDEKK1BBU1MgY3JlYXRlU2FtcGxl
KCIwLjAwMSIsICIwLjAwMiIsICIxZS0yIikudmFsdWUgaXMgIjAuMDAyIgorUEFTUyBjcmVhdGVT
YW1wbGUoIjAuMDAxIiwgIjAuMDAyIiwgIjFlLTIiKS52YWx1ZUFzTnVtYmVyIGlzIDAuMDAyCitQ
QVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDEiLCAiMC4wMDMiLCAiMWUtMiIpLnZhbHVlIGlzICIwLjAw
MyIKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMSIsICIwLjAwMyIsICIxZS0yIikudmFsdWVBc051
bWJlciBpcyAwLjAwMworUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAxIiwgIjAuMDA0IiwgIjFlLTIi
KS52YWx1ZSBpcyAiMC4wMDQiCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDEiLCAiMC4wMDQiLCAi
MWUtMiIpLnZhbHVlQXNOdW1iZXIgaXMgMC4wMDQKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMSIs
ICIwLjAwNSIsICIxZS0yIikudmFsdWUgaXMgIjAuMDA1IgorUEFTUyBjcmVhdGVTYW1wbGUoIjAu
MDAxIiwgIjAuMDA1IiwgIjFlLTIiKS52YWx1ZUFzTnVtYmVyIGlzIDAuMDA1CitQQVNTIGNyZWF0
ZVNhbXBsZSgiMC4wMDEiLCAiMC4wMDYiLCAiMWUtMiIpLnZhbHVlIGlzICIwLjAwNiIKK1BBU1Mg
Y3JlYXRlU2FtcGxlKCIwLjAwMSIsICIwLjAwNiIsICIxZS0yIikudmFsdWVBc051bWJlciBpcyAw
LjAwNgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAxIiwgIjAuMDA3IiwgIjFlLTIiKS52YWx1ZSBp
cyAiMC4wMDciCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDEiLCAiMC4wMDciLCAiMWUtMiIpLnZh
bHVlQXNOdW1iZXIgaXMgMC4wMDcKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMSIsICIwLjAwOCIs
ICIxZS0yIikudmFsdWUgaXMgIjAuMDA4IgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAxIiwgIjAu
MDA4IiwgIjFlLTIiKS52YWx1ZUFzTnVtYmVyIGlzIDAuMDA4CitQQVNTIGNyZWF0ZVNhbXBsZSgi
MC4wMDEiLCAiMC4wMDkiLCAiMWUtMiIpLnZhbHVlIGlzICIwLjAwOSIKK1BBU1MgY3JlYXRlU2Ft
cGxlKCIwLjAwMSIsICIwLjAwOSIsICIxZS0yIikudmFsdWVBc051bWJlciBpcyAwLjAwOQorUEFT
UyBjcmVhdGVTYW1wbGUoIjAuMDAwMSIsICIwLjAwMDEiLCAiMWUtMyIpLnZhbHVlIGlzICIwLjAw
MDEiCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAxIiwgIjAuMDAwMSIsICIxZS0zIikudmFsdWVB
c051bWJlciBpcyAwLjAwMDEKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDEiLCAiMC4wMDAyIiwg
IjFlLTMiKS52YWx1ZSBpcyAiMC4wMDAyIgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMSIsICIw
LjAwMDIiLCAiMWUtMyIpLnZhbHVlQXNOdW1iZXIgaXMgMC4wMDAyCitQQVNTIGNyZWF0ZVNhbXBs
ZSgiMC4wMDAxIiwgIjAuMDAwMyIsICIxZS0zIikudmFsdWUgaXMgIjAuMDAwMyIKK1BBU1MgY3Jl
YXRlU2FtcGxlKCIwLjAwMDEiLCAiMC4wMDAzIiwgIjFlLTMiKS52YWx1ZUFzTnVtYmVyIGlzIDAu
MDAwMworUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMSIsICIwLjAwMDQiLCAiMWUtMyIpLnZhbHVl
IGlzICIwLjAwMDQiCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAxIiwgIjAuMDAwNCIsICIxZS0z
IikudmFsdWVBc051bWJlciBpcyAwLjAwMDQKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDEiLCAi
MC4wMDA1IiwgIjFlLTMiKS52YWx1ZSBpcyAiMC4wMDA1IgorUEFTUyBjcmVhdGVTYW1wbGUoIjAu
MDAwMSIsICIwLjAwMDUiLCAiMWUtMyIpLnZhbHVlQXNOdW1iZXIgaXMgMC4wMDA1CitQQVNTIGNy
ZWF0ZVNhbXBsZSgiMC4wMDAxIiwgIjAuMDAwNiIsICIxZS0zIikudmFsdWUgaXMgIjAuMDAwNiIK
K1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDEiLCAiMC4wMDA2IiwgIjFlLTMiKS52YWx1ZUFzTnVt
YmVyIGlzIDAuMDAwNgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMSIsICIwLjAwMDciLCAiMWUt
MyIpLnZhbHVlIGlzICIwLjAwMDciCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAxIiwgIjAuMDAw
NyIsICIxZS0zIikudmFsdWVBc051bWJlciBpcyAwLjAwMDcKK1BBU1MgY3JlYXRlU2FtcGxlKCIw
LjAwMDEiLCAiMC4wMDA4IiwgIjFlLTMiKS52YWx1ZSBpcyAiMC4wMDA4IgorUEFTUyBjcmVhdGVT
YW1wbGUoIjAuMDAwMSIsICIwLjAwMDgiLCAiMWUtMyIpLnZhbHVlQXNOdW1iZXIgaXMgMC4wMDA4
CitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAxIiwgIjAuMDAwOSIsICIxZS0zIikudmFsdWUgaXMg
IjAuMDAwOSIKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDEiLCAiMC4wMDA5IiwgIjFlLTMiKS52
YWx1ZUFzTnVtYmVyIGlzIDAuMDAwOQorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDEiLCAiMC4w
MDAwMSIsICIxZS00IikudmFsdWUgaXMgIjAuMDAwMDEiCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4w
MDAwMSIsICIwLjAwMDAxIiwgIjFlLTQiKS52YWx1ZUFzTnVtYmVyIGlzIDAuMDAwMDEKK1BBU1Mg
Y3JlYXRlU2FtcGxlKCIwLjAwMDAxIiwgIjAuMDAwMDIiLCAiMWUtNCIpLnZhbHVlIGlzICIwLjAw
MDAyIgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDEiLCAiMC4wMDAwMiIsICIxZS00IikudmFs
dWVBc051bWJlciBpcyAwLjAwMDAyCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMSIsICIwLjAw
MDAzIiwgIjFlLTQiKS52YWx1ZSBpcyAiMC4wMDAwMyIKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAw
MDAxIiwgIjAuMDAwMDMiLCAiMWUtNCIpLnZhbHVlQXNOdW1iZXIgaXMgMC4wMDAwMworUEFTUyBj
cmVhdGVTYW1wbGUoIjAuMDAwMDEiLCAiMC4wMDAwNCIsICIxZS00IikudmFsdWUgaXMgIjAuMDAw
MDQiCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMSIsICIwLjAwMDA0IiwgIjFlLTQiKS52YWx1
ZUFzTnVtYmVyIGlzIDAuMDAwMDQKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAxIiwgIjAuMDAw
MDUiLCAiMWUtNCIpLnZhbHVlIGlzICIwLjAwMDA1IgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAw
MDEiLCAiMC4wMDAwNSIsICIxZS00IikudmFsdWVBc051bWJlciBpcyAwLjAwMDA1CitQQVNTIGNy
ZWF0ZVNhbXBsZSgiMC4wMDAwMSIsICIwLjAwMDA2IiwgIjFlLTQiKS52YWx1ZSBpcyAiMC4wMDAw
NiIKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAxIiwgIjAuMDAwMDYiLCAiMWUtNCIpLnZhbHVl
QXNOdW1iZXIgaXMgMC4wMDAwNgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDEiLCAiMC4wMDAw
NyIsICIxZS00IikudmFsdWUgaXMgIjAuMDAwMDciCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAw
MSIsICIwLjAwMDA3IiwgIjFlLTQiKS52YWx1ZUFzTnVtYmVyIGlzIDAuMDAwMDcKK1BBU1MgY3Jl
YXRlU2FtcGxlKCIwLjAwMDAxIiwgIjAuMDAwMDgiLCAiMWUtNCIpLnZhbHVlIGlzICIwLjAwMDA4
IgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDEiLCAiMC4wMDAwOCIsICIxZS00IikudmFsdWVB
c051bWJlciBpcyAwLjAwMDA4CitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMSIsICIwLjAwMDA5
IiwgIjFlLTQiKS52YWx1ZSBpcyAiMC4wMDAwOSIKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAx
IiwgIjAuMDAwMDkiLCAiMWUtNCIpLnZhbHVlQXNOdW1iZXIgaXMgMC4wMDAwOQorUEFTUyBjcmVh
dGVTYW1wbGUoIjAuMDAwMDAxIiwgIjAuMDAwMDAxIiwgIjFlLTUiKS52YWx1ZSBpcyAiMC4wMDAw
MDEiCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDEiLCAiMC4wMDAwMDEiLCAiMWUtNSIpLnZh
bHVlQXNOdW1iZXIgaXMgMC4wMDAwMDEKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMSIsICIw
LjAwMDAwMiIsICIxZS01IikudmFsdWUgaXMgIjAuMDAwMDAyIgorUEFTUyBjcmVhdGVTYW1wbGUo
IjAuMDAwMDAxIiwgIjAuMDAwMDAyIiwgIjFlLTUiKS52YWx1ZUFzTnVtYmVyIGlzIDAuMDAwMDAy
CitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDEiLCAiMC4wMDAwMDMiLCAiMWUtNSIpLnZhbHVl
IGlzICIwLjAwMDAwMyIKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMSIsICIwLjAwMDAwMyIs
ICIxZS01IikudmFsdWVBc051bWJlciBpcyAwLjAwMDAwMworUEFTUyBjcmVhdGVTYW1wbGUoIjAu
MDAwMDAxIiwgIjAuMDAwMDA0IiwgIjFlLTUiKS52YWx1ZSBpcyAiMC4wMDAwMDQiCitQQVNTIGNy
ZWF0ZVNhbXBsZSgiMC4wMDAwMDEiLCAiMC4wMDAwMDQiLCAiMWUtNSIpLnZhbHVlQXNOdW1iZXIg
aXMgMC4wMDAwMDQKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMSIsICIwLjAwMDAwNSIsICIx
ZS01IikudmFsdWUgaXMgIjAuMDAwMDA1IgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAxIiwg
IjAuMDAwMDA1IiwgIjFlLTUiKS52YWx1ZUFzTnVtYmVyIGlzIDAuMDAwMDA1CitQQVNTIGNyZWF0
ZVNhbXBsZSgiMC4wMDAwMDEiLCAiMC4wMDAwMDYiLCAiMWUtNSIpLnZhbHVlIGlzICIwLjAwMDAw
NiIKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMSIsICIwLjAwMDAwNiIsICIxZS01IikudmFs
dWVBc051bWJlciBpcyAwLjAwMDAwNgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAxIiwgIjAu
MDAwMDA3IiwgIjFlLTUiKS52YWx1ZSBpcyAiMC4wMDAwMDciCitQQVNTIGNyZWF0ZVNhbXBsZSgi
MC4wMDAwMDEiLCAiMC4wMDAwMDciLCAiMWUtNSIpLnZhbHVlQXNOdW1iZXIgaXMgMC4wMDAwMDcK
K1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMSIsICIwLjAwMDAwOCIsICIxZS01IikudmFsdWUg
aXMgIjAuMDAwMDA4IgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAxIiwgIjAuMDAwMDA4Iiwg
IjFlLTUiKS52YWx1ZUFzTnVtYmVyIGlzIDAuMDAwMDA4CitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4w
MDAwMDEiLCAiMC4wMDAwMDkiLCAiMWUtNSIpLnZhbHVlIGlzICIwLjAwMDAwOSIKK1BBU1MgY3Jl
YXRlU2FtcGxlKCIwLjAwMDAwMSIsICIwLjAwMDAwOSIsICIxZS01IikudmFsdWVBc051bWJlciBp
cyAwLjAwMDAwOQorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMSIsICIwLjAwMDAwMDEiLCAi
MWUtNiIpLnZhbHVlIGlzICIxZS03IgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMSIsICIw
LjAwMDAwMDEiLCAiMWUtNiIpLnZhbHVlQXNOdW1iZXIgaXMgMC4wMDAwMDAxCitQQVNTIGNyZWF0
ZVNhbXBsZSgiMC4wMDAwMDAxIiwgIjAuMDAwMDAwMiIsICIxZS02IikudmFsdWUgaXMgIjJlLTci
CitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAxIiwgIjAuMDAwMDAwMiIsICIxZS02IikudmFs
dWVBc051bWJlciBpcyAwLjAwMDAwMDIKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDEiLCAi
MC4wMDAwMDAzIiwgIjFlLTYiKS52YWx1ZSBpcyAiM2UtNyIKK1BBU1MgY3JlYXRlU2FtcGxlKCIw
LjAwMDAwMDEiLCAiMC4wMDAwMDAzIiwgIjFlLTYiKS52YWx1ZUFzTnVtYmVyIGlzIDAuMDAwMDAw
MworUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMSIsICIwLjAwMDAwMDQiLCAiMWUtNiIpLnZh
bHVlIGlzICI0ZS03IgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMSIsICIwLjAwMDAwMDQi
LCAiMWUtNiIpLnZhbHVlQXNOdW1iZXIgaXMgMC4wMDAwMDA0CitQQVNTIGNyZWF0ZVNhbXBsZSgi
MC4wMDAwMDAxIiwgIjAuMDAwMDAwNSIsICIxZS02IikudmFsdWUgaXMgIjVlLTciCitQQVNTIGNy
ZWF0ZVNhbXBsZSgiMC4wMDAwMDAxIiwgIjAuMDAwMDAwNSIsICIxZS02IikudmFsdWVBc051bWJl
ciBpcyAwLjAwMDAwMDUKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDEiLCAiMC4wMDAwMDA2
IiwgIjFlLTYiKS52YWx1ZSBpcyAiNmUtNyIKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDEi
LCAiMC4wMDAwMDA2IiwgIjFlLTYiKS52YWx1ZUFzTnVtYmVyIGlzIDAuMDAwMDAwNgorUEFTUyBj
cmVhdGVTYW1wbGUoIjAuMDAwMDAwMSIsICIwLjAwMDAwMDciLCAiMWUtNiIpLnZhbHVlIGlzICI3
ZS03IgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMSIsICIwLjAwMDAwMDciLCAiMWUtNiIp
LnZhbHVlQXNOdW1iZXIgaXMgMC4wMDAwMDA3CitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAx
IiwgIjAuMDAwMDAwOCIsICIxZS02IikudmFsdWUgaXMgIjhlLTciCitQQVNTIGNyZWF0ZVNhbXBs
ZSgiMC4wMDAwMDAxIiwgIjAuMDAwMDAwOCIsICIxZS02IikudmFsdWVBc051bWJlciBpcyAwLjAw
MDAwMDgKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDEiLCAiMC4wMDAwMDA5IiwgIjFlLTYi
KS52YWx1ZSBpcyAiOWUtNyIKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDEiLCAiMC4wMDAw
MDA5IiwgIjFlLTYiKS52YWx1ZUFzTnVtYmVyIGlzIDAuMDAwMDAwOQorUEFTUyBjcmVhdGVTYW1w
bGUoIjAuMDAwMDAwMDEiLCAiMC4wMDAwMDAwMSIsICIxZS03IikudmFsdWUgaXMgIjFlLTgiCitQ
QVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAwMSIsICIwLjAwMDAwMDAxIiwgIjFlLTciKS52YWx1
ZUFzTnVtYmVyIGlzIDAuMDAwMDAwMDEKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAxIiwg
IjAuMDAwMDAwMDIiLCAiMWUtNyIpLnZhbHVlIGlzICIyZS04IgorUEFTUyBjcmVhdGVTYW1wbGUo
IjAuMDAwMDAwMDEiLCAiMC4wMDAwMDAwMiIsICIxZS03IikudmFsdWVBc051bWJlciBpcyAwLjAw
MDAwMDAyCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAwMSIsICIwLjAwMDAwMDAzIiwgIjFl
LTciKS52YWx1ZSBpcyAiM2UtOCIKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAxIiwgIjAu
MDAwMDAwMDMiLCAiMWUtNyIpLnZhbHVlQXNOdW1iZXIgaXMgMC4wMDAwMDAwMworUEFTUyBjcmVh
dGVTYW1wbGUoIjAuMDAwMDAwMDEiLCAiMC4wMDAwMDAwNCIsICIxZS03IikudmFsdWUgaXMgIjRl
LTgiCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAwMSIsICIwLjAwMDAwMDA0IiwgIjFlLTci
KS52YWx1ZUFzTnVtYmVyIGlzIDAuMDAwMDAwMDQKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAw
MDAxIiwgIjAuMDAwMDAwMDUiLCAiMWUtNyIpLnZhbHVlIGlzICI1ZS04IgorUEFTUyBjcmVhdGVT
YW1wbGUoIjAuMDAwMDAwMDEiLCAiMC4wMDAwMDAwNSIsICIxZS03IikudmFsdWVBc051bWJlciBp
cyAwLjAwMDAwMDA1CitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAwMSIsICIwLjAwMDAwMDA2
IiwgIjFlLTciKS52YWx1ZSBpcyAiNmUtOCIKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAx
IiwgIjAuMDAwMDAwMDYiLCAiMWUtNyIpLnZhbHVlQXNOdW1iZXIgaXMgMC4wMDAwMDAwNgorUEFT
UyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDEiLCAiMC4wMDAwMDAwNyIsICIxZS03IikudmFsdWUg
aXMgIjdlLTgiCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAwMSIsICIwLjAwMDAwMDA3Iiwg
IjFlLTciKS52YWx1ZUFzTnVtYmVyIGlzIDAuMDAwMDAwMDcKK1BBU1MgY3JlYXRlU2FtcGxlKCIw
LjAwMDAwMDAxIiwgIjAuMDAwMDAwMDgiLCAiMWUtNyIpLnZhbHVlIGlzICI4ZS04IgorUEFTUyBj
cmVhdGVTYW1wbGUoIjAuMDAwMDAwMDEiLCAiMC4wMDAwMDAwOCIsICIxZS03IikudmFsdWVBc051
bWJlciBpcyAwLjAwMDAwMDA4CitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAwMSIsICIwLjAw
MDAwMDA5IiwgIjFlLTciKS52YWx1ZSBpcyAiOWUtOCIKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAw
MDAwMDAxIiwgIjAuMDAwMDAwMDkiLCAiMWUtNyIpLnZhbHVlQXNOdW1iZXIgaXMgMC4wMDAwMDAw
OQorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAxIiwgIjFlLTgi
KS52YWx1ZSBpcyAiMWUtOSIKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMSIsICIwLjAw
MDAwMDAwMSIsICIxZS04IikudmFsdWVBc051bWJlciBpcyAwLjAwMDAwMDAwMQorUEFTUyBjcmVh
dGVTYW1wbGUoIjAuMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAyIiwgIjFlLTgiKS52YWx1ZSBpcyAi
MmUtOSIKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMSIsICIwLjAwMDAwMDAwMiIsICIx
ZS04IikudmFsdWVBc051bWJlciBpcyAwLjAwMDAwMDAwMgorUEFTUyBjcmVhdGVTYW1wbGUoIjAu
MDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAzIiwgIjFlLTgiKS52YWx1ZSBpcyAiM2UtOSIKK1BBU1Mg
Y3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMSIsICIwLjAwMDAwMDAwMyIsICIxZS04IikudmFsdWVB
c051bWJlciBpcyAwLjAwMDAwMDAwMworUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAxIiwg
IjAuMDAwMDAwMDA0IiwgIjFlLTgiKS52YWx1ZSBpcyAiNGUtOSIKK1BBU1MgY3JlYXRlU2FtcGxl
KCIwLjAwMDAwMDAwMSIsICIwLjAwMDAwMDAwNCIsICIxZS04IikudmFsdWVBc051bWJlciBpcyAw
LjAwMDAwMDAwNAorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDA1
IiwgIjFlLTgiKS52YWx1ZSBpcyAiNWUtOSIKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAw
MSIsICIwLjAwMDAwMDAwNSIsICIxZS04IikudmFsdWVBc051bWJlciBpcyAwLjAwMDAwMDAwNQor
UEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDA2IiwgIjFlLTgiKS52
YWx1ZSBpcyAiNmUtOSIKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMSIsICIwLjAwMDAw
MDAwNiIsICIxZS04IikudmFsdWVBc051bWJlciBpcyAwLjAwMDAwMDAwNgorUEFTUyBjcmVhdGVT
YW1wbGUoIjAuMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDA3IiwgIjFlLTgiKS52YWx1ZSBpcyAiN2Ut
OSIKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMSIsICIwLjAwMDAwMDAwNyIsICIxZS04
IikudmFsdWVBc051bWJlciBpcyAwLjAwMDAwMDAwNworUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAw
MDAwMDAxIiwgIjAuMDAwMDAwMDA4IiwgIjFlLTgiKS52YWx1ZSBpcyAiOGUtOSIKK1BBU1MgY3Jl
YXRlU2FtcGxlKCIwLjAwMDAwMDAwMSIsICIwLjAwMDAwMDAwOCIsICIxZS04IikudmFsdWVBc051
bWJlciBpcyAwLjAwMDAwMDAwOAorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAxIiwgIjAu
MDAwMDAwMDA5IiwgIjFlLTgiKS52YWx1ZSBpcyAiOWUtOSIKK1BBU1MgY3JlYXRlU2FtcGxlKCIw
LjAwMDAwMDAwMSIsICIwLjAwMDAwMDAwOSIsICIxZS04IikudmFsdWVBc051bWJlciBpcyAwLjAw
MDAwMDAwOQorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAwMSIsICIwLjAwMDAwMDAwMDEi
LCAiMWUtOSIpLnZhbHVlIGlzICIxZS0xMCIKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAw
MDEiLCAiMC4wMDAwMDAwMDAxIiwgIjFlLTkiKS52YWx1ZUFzTnVtYmVyIGlzIDAuMDAwMDAwMDAw
MQorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAwMSIsICIwLjAwMDAwMDAwMDIiLCAiMWUt
OSIpLnZhbHVlIGlzICIyZS0xMCIKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMDEiLCAi
MC4wMDAwMDAwMDAyIiwgIjFlLTkiKS52YWx1ZUFzTnVtYmVyIGlzIDAuMDAwMDAwMDAwMgorUEFT
UyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAwMSIsICIwLjAwMDAwMDAwMDMiLCAiMWUtOSIpLnZh
bHVlIGlzICIzZS0xMCIKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMDEiLCAiMC4wMDAw
MDAwMDAzIiwgIjFlLTkiKS52YWx1ZUFzTnVtYmVyIGlzIDAuMDAwMDAwMDAwMworUEFTUyBjcmVh
dGVTYW1wbGUoIjAuMDAwMDAwMDAwMSIsICIwLjAwMDAwMDAwMDQiLCAiMWUtOSIpLnZhbHVlIGlz
ICI0ZS0xMCIKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMDEiLCAiMC4wMDAwMDAwMDA0
IiwgIjFlLTkiKS52YWx1ZUFzTnVtYmVyIGlzIDAuMDAwMDAwMDAwNAorUEFTUyBjcmVhdGVTYW1w
bGUoIjAuMDAwMDAwMDAwMSIsICIwLjAwMDAwMDAwMDUiLCAiMWUtOSIpLnZhbHVlIGlzICI1ZS0x
MCIKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMDEiLCAiMC4wMDAwMDAwMDA1IiwgIjFl
LTkiKS52YWx1ZUFzTnVtYmVyIGlzIDAuMDAwMDAwMDAwNQorUEFTUyBjcmVhdGVTYW1wbGUoIjAu
MDAwMDAwMDAwMSIsICIwLjAwMDAwMDAwMDYiLCAiMWUtOSIpLnZhbHVlIGlzICI2ZS0xMCIKK1BB
U1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMDEiLCAiMC4wMDAwMDAwMDA2IiwgIjFlLTkiKS52
YWx1ZUFzTnVtYmVyIGlzIDAuMDAwMDAwMDAwNgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAw
MDAwMSIsICIwLjAwMDAwMDAwMDciLCAiMWUtOSIpLnZhbHVlIGlzICI3ZS0xMCIKK1BBU1MgY3Jl
YXRlU2FtcGxlKCIwLjAwMDAwMDAwMDEiLCAiMC4wMDAwMDAwMDA3IiwgIjFlLTkiKS52YWx1ZUFz
TnVtYmVyIGlzIDAuMDAwMDAwMDAwNworUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAwMSIs
ICIwLjAwMDAwMDAwMDgiLCAiMWUtOSIpLnZhbHVlIGlzICI4ZS0xMCIKK1BBU1MgY3JlYXRlU2Ft
cGxlKCIwLjAwMDAwMDAwMDEiLCAiMC4wMDAwMDAwMDA4IiwgIjFlLTkiKS52YWx1ZUFzTnVtYmVy
IGlzIDAuMDAwMDAwMDAwOAorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAwMSIsICIwLjAw
MDAwMDAwMDkiLCAiMWUtOSIpLnZhbHVlIGlzICI5ZS0xMCIKK1BBU1MgY3JlYXRlU2FtcGxlKCIw
LjAwMDAwMDAwMDEiLCAiMC4wMDAwMDAwMDA5IiwgIjFlLTkiKS52YWx1ZUFzTnVtYmVyIGlzIDAu
MDAwMDAwMDAwOQorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAwMDEiLCAiMC4wMDAwMDAw
MDAwMSIsICIxZS0xMCIpLnZhbHVlIGlzICIxZS0xMSIKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAw
MDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAwMDEiLCAiMWUtMTAiKS52YWx1ZUFzTnVtYmVyIGlzIDAu
MDAwMDAwMDAwMDEKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMDAxIiwgIjAuMDAwMDAw
MDAwMDIiLCAiMWUtMTAiKS52YWx1ZSBpcyAiMmUtMTEiCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4w
MDAwMDAwMDAwMSIsICIwLjAwMDAwMDAwMDAyIiwgIjFlLTEwIikudmFsdWVBc051bWJlciBpcyAw
LjAwMDAwMDAwMDAyCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAwMDAwMSIsICIwLjAwMDAw
MDAwMDAzIiwgIjFlLTEwIikudmFsdWUgaXMgIjNlLTExIgorUEFTUyBjcmVhdGVTYW1wbGUoIjAu
MDAwMDAwMDAwMDEiLCAiMC4wMDAwMDAwMDAwMyIsICIxZS0xMCIpLnZhbHVlQXNOdW1iZXIgaXMg
MC4wMDAwMDAwMDAwMworUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAwMDEiLCAiMC4wMDAw
MDAwMDAwNCIsICIxZS0xMCIpLnZhbHVlIGlzICI0ZS0xMSIKK1BBU1MgY3JlYXRlU2FtcGxlKCIw
LjAwMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAwMDQiLCAiMWUtMTAiKS52YWx1ZUFzTnVtYmVyIGlz
IDAuMDAwMDAwMDAwMDQKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMDAxIiwgIjAuMDAw
MDAwMDAwMDUiLCAiMWUtMTAiKS52YWx1ZSBpcyAiNWUtMTEiCitQQVNTIGNyZWF0ZVNhbXBsZSgi
MC4wMDAwMDAwMDAwMSIsICIwLjAwMDAwMDAwMDA1IiwgIjFlLTEwIikudmFsdWVBc051bWJlciBp
cyAwLjAwMDAwMDAwMDA1CitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAwMDAwMSIsICIwLjAw
MDAwMDAwMDA2IiwgIjFlLTEwIikudmFsdWUgaXMgIjZlLTExIgorUEFTUyBjcmVhdGVTYW1wbGUo
IjAuMDAwMDAwMDAwMDEiLCAiMC4wMDAwMDAwMDAwNiIsICIxZS0xMCIpLnZhbHVlQXNOdW1iZXIg
aXMgMC4wMDAwMDAwMDAwNgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAwMDEiLCAiMC4w
MDAwMDAwMDAwNyIsICIxZS0xMCIpLnZhbHVlIGlzICI3ZS0xMSIKK1BBU1MgY3JlYXRlU2FtcGxl
KCIwLjAwMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAwMDciLCAiMWUtMTAiKS52YWx1ZUFzTnVtYmVy
IGlzIDAuMDAwMDAwMDAwMDcKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMDAxIiwgIjAu
MDAwMDAwMDAwMDgiLCAiMWUtMTAiKS52YWx1ZSBpcyAiOGUtMTEiCitQQVNTIGNyZWF0ZVNhbXBs
ZSgiMC4wMDAwMDAwMDAwMSIsICIwLjAwMDAwMDAwMDA4IiwgIjFlLTEwIikudmFsdWVBc051bWJl
ciBpcyAwLjAwMDAwMDAwMDA4CitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAwMDAwMSIsICIw
LjAwMDAwMDAwMDA5IiwgIjFlLTEwIikudmFsdWUgaXMgIjllLTExIgorUEFTUyBjcmVhdGVTYW1w
bGUoIjAuMDAwMDAwMDAwMDEiLCAiMC4wMDAwMDAwMDAwOSIsICIxZS0xMCIpLnZhbHVlQXNOdW1i
ZXIgaXMgMC4wMDAwMDAwMDAwOQorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAwMDAxIiwg
IjAuMDAwMDAwMDAwMDAxIiwgIjFlLTExIikudmFsdWUgaXMgIjFlLTEyIgorUEFTUyBjcmVhdGVT
YW1wbGUoIjAuMDAwMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAwMDAxIiwgIjFlLTExIikudmFsdWVB
c051bWJlciBpcyAwLjAwMDAwMDAwMDAwMQorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAw
MDAxIiwgIjAuMDAwMDAwMDAwMDAyIiwgIjFlLTExIikudmFsdWUgaXMgIjJlLTEyIgorUEFTUyBj
cmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAwMDAyIiwgIjFlLTExIiku
dmFsdWVBc051bWJlciBpcyAwLjAwMDAwMDAwMDAwMgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAw
MDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAwMDAzIiwgIjFlLTExIikudmFsdWUgaXMgIjNlLTEyIgor
UEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAwMDAzIiwgIjFl
LTExIikudmFsdWVBc051bWJlciBpcyAwLjAwMDAwMDAwMDAwMworUEFTUyBjcmVhdGVTYW1wbGUo
IjAuMDAwMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAwMDA0IiwgIjFlLTExIikudmFsdWUgaXMgIjRl
LTEyIgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAwMDA0
IiwgIjFlLTExIikudmFsdWVBc051bWJlciBpcyAwLjAwMDAwMDAwMDAwNAorUEFTUyBjcmVhdGVT
YW1wbGUoIjAuMDAwMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAwMDA1IiwgIjFlLTExIikudmFsdWUg
aXMgIjVlLTEyIgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAwMDAxIiwgIjAuMDAwMDAw
MDAwMDA1IiwgIjFlLTExIikudmFsdWVBc051bWJlciBpcyAwLjAwMDAwMDAwMDAwNQorUEFTUyBj
cmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAwMDA2IiwgIjFlLTExIiku
dmFsdWUgaXMgIjZlLTEyIgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAwMDAxIiwgIjAu
MDAwMDAwMDAwMDA2IiwgIjFlLTExIikudmFsdWVBc051bWJlciBpcyAwLjAwMDAwMDAwMDAwNgor
UEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAwMDA3IiwgIjFl
LTExIikudmFsdWUgaXMgIjdlLTEyIgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAwMDAx
IiwgIjAuMDAwMDAwMDAwMDA3IiwgIjFlLTExIikudmFsdWVBc051bWJlciBpcyAwLjAwMDAwMDAw
MDAwNworUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAwMDA4
IiwgIjFlLTExIikudmFsdWUgaXMgIjhlLTEyIgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAw
MDAwMDAxIiwgIjAuMDAwMDAwMDAwMDA4IiwgIjFlLTExIikudmFsdWVBc051bWJlciBpcyAwLjAw
MDAwMDAwMDAwOAorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAwMDAxIiwgIjAuMDAwMDAw
MDAwMDA5IiwgIjFlLTExIikudmFsdWUgaXMgIjllLTEyIgorUEFTUyBjcmVhdGVTYW1wbGUoIjAu
MDAwMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAwMDA5IiwgIjFlLTExIikudmFsdWVBc051bWJlciBp
cyAwLjAwMDAwMDAwMDAwOQorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAwMDAwMSIsICIw
LjAwMDAwMDAwMDAwMDEiLCAiMWUtMTIiKS52YWx1ZSBpcyAiMWUtMTMiCitQQVNTIGNyZWF0ZVNh
bXBsZSgiMC4wMDAwMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAwMDAwMSIsICIxZS0xMiIpLnZhbHVl
QXNOdW1iZXIgaXMgMC4wMDAwMDAwMDAwMDAxCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAw
MDAwMDAxIiwgIjAuMDAwMDAwMDAwMDAwMiIsICIxZS0xMiIpLnZhbHVlIGlzICIyZS0xMyIKK1BB
U1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMDAwMDEiLCAiMC4wMDAwMDAwMDAwMDAyIiwgIjFl
LTEyIikudmFsdWVBc051bWJlciBpcyAwLjAwMDAwMDAwMDAwMDIKK1BBU1MgY3JlYXRlU2FtcGxl
KCIwLjAwMDAwMDAwMDAwMDEiLCAiMC4wMDAwMDAwMDAwMDAzIiwgIjFlLTEyIikudmFsdWUgaXMg
IjNlLTEzIgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAwMDAwMSIsICIwLjAwMDAwMDAw
MDAwMDMiLCAiMWUtMTIiKS52YWx1ZUFzTnVtYmVyIGlzIDAuMDAwMDAwMDAwMDAwMworUEFTUyBj
cmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAwMDAwMSIsICIwLjAwMDAwMDAwMDAwMDQiLCAiMWUtMTIi
KS52YWx1ZSBpcyAiNGUtMTMiCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAwMDAwMDAxIiwg
IjAuMDAwMDAwMDAwMDAwNCIsICIxZS0xMiIpLnZhbHVlQXNOdW1iZXIgaXMgMC4wMDAwMDAwMDAw
MDA0CitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAwMDAw
NSIsICIxZS0xMiIpLnZhbHVlIGlzICI1ZS0xMyIKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAw
MDAwMDAwMDEiLCAiMC4wMDAwMDAwMDAwMDA1IiwgIjFlLTEyIikudmFsdWVBc051bWJlciBpcyAw
LjAwMDAwMDAwMDAwMDUKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMDAwMDEiLCAiMC4w
MDAwMDAwMDAwMDA2IiwgIjFlLTEyIikudmFsdWUgaXMgIjZlLTEzIgorUEFTUyBjcmVhdGVTYW1w
bGUoIjAuMDAwMDAwMDAwMDAwMSIsICIwLjAwMDAwMDAwMDAwMDYiLCAiMWUtMTIiKS52YWx1ZUFz
TnVtYmVyIGlzIDAuMDAwMDAwMDAwMDAwNgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAw
MDAwMSIsICIwLjAwMDAwMDAwMDAwMDciLCAiMWUtMTIiKS52YWx1ZSBpcyAiN2UtMTMiCitQQVNT
IGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAwMDAwNyIsICIxZS0x
MiIpLnZhbHVlQXNOdW1iZXIgaXMgMC4wMDAwMDAwMDAwMDA3CitQQVNTIGNyZWF0ZVNhbXBsZSgi
MC4wMDAwMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAwMDAwOCIsICIxZS0xMiIpLnZhbHVlIGlzICI4
ZS0xMyIKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMDAwMDEiLCAiMC4wMDAwMDAwMDAw
MDA4IiwgIjFlLTEyIikudmFsdWVBc051bWJlciBpcyAwLjAwMDAwMDAwMDAwMDgKK1BBU1MgY3Jl
YXRlU2FtcGxlKCIwLjAwMDAwMDAwMDAwMDEiLCAiMC4wMDAwMDAwMDAwMDA5IiwgIjFlLTEyIiku
dmFsdWUgaXMgIjllLTEzIgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAwMDAwMSIsICIw
LjAwMDAwMDAwMDAwMDkiLCAiMWUtMTIiKS52YWx1ZUFzTnVtYmVyIGlzIDAuMDAwMDAwMDAwMDAw
OQorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAwMDAwMDEiLCAiMC4wMDAwMDAwMDAwMDAw
MSIsICIxZS0xMyIpLnZhbHVlIGlzICIxZS0xNCIKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAw
MDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAwMDAwMDEiLCAiMWUtMTMiKS52YWx1ZUFzTnVtYmVyIGlz
IDAuMDAwMDAwMDAwMDAwMDEKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMDAwMDAxIiwg
IjAuMDAwMDAwMDAwMDAwMDIiLCAiMWUtMTMiKS52YWx1ZSBpcyAiMmUtMTQiCitQQVNTIGNyZWF0
ZVNhbXBsZSgiMC4wMDAwMDAwMDAwMDAwMSIsICIwLjAwMDAwMDAwMDAwMDAyIiwgIjFlLTEzIiku
dmFsdWVBc051bWJlciBpcyAwLjAwMDAwMDAwMDAwMDAyCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4w
MDAwMDAwMDAwMDAwMSIsICIwLjAwMDAwMDAwMDAwMDAzIiwgIjFlLTEzIikudmFsdWUgaXMgIjNl
LTE0IgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAwMDAwMDEiLCAiMC4wMDAwMDAwMDAw
MDAwMyIsICIxZS0xMyIpLnZhbHVlQXNOdW1iZXIgaXMgMC4wMDAwMDAwMDAwMDAwMworUEFTUyBj
cmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAwMDAwMDEiLCAiMC4wMDAwMDAwMDAwMDAwNCIsICIxZS0x
MyIpLnZhbHVlIGlzICI0ZS0xNCIKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMDAwMDAx
IiwgIjAuMDAwMDAwMDAwMDAwMDQiLCAiMWUtMTMiKS52YWx1ZUFzTnVtYmVyIGlzIDAuMDAwMDAw
MDAwMDAwMDQKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMDAwMDAxIiwgIjAuMDAwMDAw
MDAwMDAwMDUiLCAiMWUtMTMiKS52YWx1ZSBpcyAiNWUtMTQiCitQQVNTIGNyZWF0ZVNhbXBsZSgi
MC4wMDAwMDAwMDAwMDAwMSIsICIwLjAwMDAwMDAwMDAwMDA1IiwgIjFlLTEzIikudmFsdWVBc051
bWJlciBpcyAwLjAwMDAwMDAwMDAwMDA1CitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAwMDAw
MDAwMSIsICIwLjAwMDAwMDAwMDAwMDA2IiwgIjFlLTEzIikudmFsdWUgaXMgIjZlLTE0IgorUEFT
UyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAwMDAwMDEiLCAiMC4wMDAwMDAwMDAwMDAwNiIsICIx
ZS0xMyIpLnZhbHVlQXNOdW1iZXIgaXMgMC4wMDAwMDAwMDAwMDAwNgorUEFTUyBjcmVhdGVTYW1w
bGUoIjAuMDAwMDAwMDAwMDAwMDEiLCAiMC4wMDAwMDAwMDAwMDAwNyIsICIxZS0xMyIpLnZhbHVl
IGlzICI3ZS0xNCIKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMDAwMDAxIiwgIjAuMDAw
MDAwMDAwMDAwMDciLCAiMWUtMTMiKS52YWx1ZUFzTnVtYmVyIGlzIDAuMDAwMDAwMDAwMDAwMDcK
K1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAwMDAwMDgi
LCAiMWUtMTMiKS52YWx1ZSBpcyAiOGUtMTQiCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAw
MDAwMDAwMSIsICIwLjAwMDAwMDAwMDAwMDA4IiwgIjFlLTEzIikudmFsdWVBc051bWJlciBpcyAw
LjAwMDAwMDAwMDAwMDA4CitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAwMDAwMDAwMSIsICIw
LjAwMDAwMDAwMDAwMDA5IiwgIjFlLTEzIikudmFsdWUgaXMgIjllLTE0IgorUEFTUyBjcmVhdGVT
YW1wbGUoIjAuMDAwMDAwMDAwMDAwMDEiLCAiMC4wMDAwMDAwMDAwMDAwOSIsICIxZS0xMyIpLnZh
bHVlQXNOdW1iZXIgaXMgMC4wMDAwMDAwMDAwMDAwOQorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAw
MDAwMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAwMDAwMDAxIiwgIjFlLTE0IikudmFsdWUgaXMgIjFl
LTE1IgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAw
MDAwMDAxIiwgIjFlLTE0IikudmFsdWVBc051bWJlciBpcyAwLjAwMDAwMDAwMDAwMDAwMQorUEFT
UyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAwMDAwMDAyIiwg
IjFlLTE0IikudmFsdWUgaXMgIjJlLTE1IgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAw
MDAwMDAxIiwgIjAuMDAwMDAwMDAwMDAwMDAyIiwgIjFlLTE0IikudmFsdWVBc051bWJlciBpcyAw
LjAwMDAwMDAwMDAwMDAwMgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAwMDAwMDAxIiwg
IjAuMDAwMDAwMDAwMDAwMDAzIiwgIjFlLTE0IikudmFsdWUgaXMgIjNlLTE1IgorUEFTUyBjcmVh
dGVTYW1wbGUoIjAuMDAwMDAwMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAwMDAwMDAzIiwgIjFlLTE0
IikudmFsdWVBc051bWJlciBpcyAwLjAwMDAwMDAwMDAwMDAwMworUEFTUyBjcmVhdGVTYW1wbGUo
IjAuMDAwMDAwMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAwMDAwMDA0IiwgIjFlLTE0IikudmFsdWUg
aXMgIjRlLTE1IgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAwMDAwMDAxIiwgIjAuMDAw
MDAwMDAwMDAwMDA0IiwgIjFlLTE0IikudmFsdWVBc051bWJlciBpcyAwLjAwMDAwMDAwMDAwMDAw
NAorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAwMDAw
MDA1IiwgIjFlLTE0IikudmFsdWUgaXMgIjVlLTE1IgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAw
MDAwMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAwMDAwMDA1IiwgIjFlLTE0IikudmFsdWVBc051bWJl
ciBpcyAwLjAwMDAwMDAwMDAwMDAwNQorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAwMDAw
MDAxIiwgIjAuMDAwMDAwMDAwMDAwMDA2IiwgIjFlLTE0IikudmFsdWUgaXMgIjZlLTE1IgorUEFT
UyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAwMDAwMDA2Iiwg
IjFlLTE0IikudmFsdWVBc051bWJlciBpcyAwLjAwMDAwMDAwMDAwMDAwNgorUEFTUyBjcmVhdGVT
YW1wbGUoIjAuMDAwMDAwMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAwMDAwMDA3IiwgIjFlLTE0Iiku
dmFsdWUgaXMgIjdlLTE1IgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAwMDAwMDAxIiwg
IjAuMDAwMDAwMDAwMDAwMDA3IiwgIjFlLTE0IikudmFsdWVBc051bWJlciBpcyAwLjAwMDAwMDAw
MDAwMDAwNworUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAwMDAwMDAxIiwgIjAuMDAwMDAw
MDAwMDAwMDA4IiwgIjFlLTE0IikudmFsdWUgaXMgIjhlLTE1IgorUEFTUyBjcmVhdGVTYW1wbGUo
IjAuMDAwMDAwMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAwMDAwMDA4IiwgIjFlLTE0IikudmFsdWVB
c051bWJlciBpcyAwLjAwMDAwMDAwMDAwMDAwOAorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAw
MDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAwMDAwMDA5IiwgIjFlLTE0IikudmFsdWUgaXMgIjllLTE1
IgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAwMDAw
MDA5IiwgIjFlLTE0IikudmFsdWVBc051bWJlciBpcyAwLjAwMDAwMDAwMDAwMDAwOQorUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCiswLjEKKzAuMQorMC4y
CiswLjIKKzAuMworMC4zCiswLjQKKzAuNAorMC41CiswLjUKKzAuNgorMC42CiswLjcKKzAuNwor
MC44CiswLjgKKzAuOQorMC45CiswLjAxCiswLjAxCiswLjAyCiswLjAyCiswLjAzCiswLjAzCisw
LjA0CiswLjA0CiswLjA1CiswLjA1CiswLjA2CiswLjA2CiswLjA3CiswLjA3CiswLjA4CiswLjA4
CiswLjA5CiswLjA5CiswLjAwMQorMC4wMDEKKzAuMDAyCiswLjAwMgorMC4wMDMKKzAuMDAzCisw
LjAwNAorMC4wMDQKKzAuMDA1CiswLjAwNQorMC4wMDYKKzAuMDA2CiswLjAwNworMC4wMDcKKzAu
MDA4CiswLjAwOAorMC4wMDkKKzAuMDA5CiswLjAwMDEKKzAuMDAwMQorMC4wMDAyCiswLjAwMDIK
KzAuMDAwMworMC4wMDAzCiswLjAwMDQKKzAuMDAwNAorMC4wMDA1CiswLjAwMDUKKzAuMDAwNgor
MC4wMDA2CiswLjAwMDcKKzAuMDAwNworMC4wMDA4CiswLjAwMDgKKzAuMDAwOQorMC4wMDA5Cisw
LjAwMDAxCiswLjAwMDAxCiswLjAwMDAyCiswLjAwMDAyCiswLjAwMDAzCiswLjAwMDAzCiswLjAw
MDA0CiswLjAwMDA0CiswLjAwMDA1CiswLjAwMDA1CiswLjAwMDA2CiswLjAwMDA2CiswLjAwMDA3
CiswLjAwMDA3CiswLjAwMDA4CiswLjAwMDA4CiswLjAwMDA5CiswLjAwMDA5CiswLjAwMDAwMQor
MC4wMDAwMDEKKzAuMDAwMDAyCiswLjAwMDAwMgorMC4wMDAwMDMKKzAuMDAwMDAzCiswLjAwMDAw
NAorMC4wMDAwMDQKKzAuMDAwMDA1CiswLjAwMDAwNQorMC4wMDAwMDYKKzAuMDAwMDA2CiswLjAw
MDAwNworMC4wMDAwMDcKKzAuMDAwMDA4CiswLjAwMDAwOAorMC4wMDAwMDkKKzAuMDAwMDA5Cisw
LjAwMDAwMDEKKzAuMDAwMDAwMQorMC4wMDAwMDAyCiswLjAwMDAwMDIKKzAuMDAwMDAwMworMC4w
MDAwMDAzCiswLjAwMDAwMDQKKzAuMDAwMDAwNAorMC4wMDAwMDA1CiswLjAwMDAwMDUKKzAuMDAw
MDAwNgorMC4wMDAwMDA2CiswLjAwMDAwMDcKKzAuMDAwMDAwNworMC4wMDAwMDA4CiswLjAwMDAw
MDgKKzAuMDAwMDAwOQorMC4wMDAwMDA5CiswLjAwMDAwMDAxCiswLjAwMDAwMDAxCiswLjAwMDAw
MDAyCiswLjAwMDAwMDAyCiswLjAwMDAwMDAzCiswLjAwMDAwMDAzCiswLjAwMDAwMDA0CiswLjAw
MDAwMDA0CiswLjAwMDAwMDA1CiswLjAwMDAwMDA1CiswLjAwMDAwMDA2CiswLjAwMDAwMDA2Cisw
LjAwMDAwMDA3CiswLjAwMDAwMDA3CiswLjAwMDAwMDA4CiswLjAwMDAwMDA4CiswLjAwMDAwMDA5
CiswLjAwMDAwMDA5CiswLjAwMDAwMDAwMQorMC4wMDAwMDAwMDEKKzAuMDAwMDAwMDAyCiswLjAw
MDAwMDAwMgorMC4wMDAwMDAwMDMKKzAuMDAwMDAwMDAzCiswLjAwMDAwMDAwNAorMC4wMDAwMDAw
MDQKKzAuMDAwMDAwMDA1CiswLjAwMDAwMDAwNQorMC4wMDAwMDAwMDYKKzAuMDAwMDAwMDA2Cisw
LjAwMDAwMDAwNworMC4wMDAwMDAwMDcKKzAuMDAwMDAwMDA4CiswLjAwMDAwMDAwOAorMC4wMDAw
MDAwMDkKKzAuMDAwMDAwMDA5CiswLjAwMDAwMDAwMDEKKzAuMDAwMDAwMDAwMQorMC4wMDAwMDAw
MDAyCiswLjAwMDAwMDAwMDIKKzAuMDAwMDAwMDAwMworMC4wMDAwMDAwMDAzCiswLjAwMDAwMDAw
MDQKKzAuMDAwMDAwMDAwNAorMC4wMDAwMDAwMDA1CiswLjAwMDAwMDAwMDUKKzAuMDAwMDAwMDAw
NgorMC4wMDAwMDAwMDA2CiswLjAwMDAwMDAwMDcKKzAuMDAwMDAwMDAwNworMC4wMDAwMDAwMDA4
CiswLjAwMDAwMDAwMDgKKzAuMDAwMDAwMDAwOQorMC4wMDAwMDAwMDA5CiswLjAwMDAwMDAwMDAx
CiswLjAwMDAwMDAwMDAxCiswLjAwMDAwMDAwMDAyCiswLjAwMDAwMDAwMDAyCiswLjAwMDAwMDAw
MDAzCiswLjAwMDAwMDAwMDAzCiswLjAwMDAwMDAwMDA0CiswLjAwMDAwMDAwMDA0CiswLjAwMDAw
MDAwMDA1CiswLjAwMDAwMDAwMDA1CiswLjAwMDAwMDAwMDA2CiswLjAwMDAwMDAwMDA2CiswLjAw
MDAwMDAwMDA3CiswLjAwMDAwMDAwMDA3CiswLjAwMDAwMDAwMDA4CiswLjAwMDAwMDAwMDA4Cisw
LjAwMDAwMDAwMDA5CiswLjAwMDAwMDAwMDA5CiswLjAwMDAwMDAwMDAwMQorMC4wMDAwMDAwMDAw
MDEKKzAuMDAwMDAwMDAwMDAyCiswLjAwMDAwMDAwMDAwMgorMC4wMDAwMDAwMDAwMDMKKzAuMDAw
MDAwMDAwMDAzCiswLjAwMDAwMDAwMDAwNAorMC4wMDAwMDAwMDAwMDQKKzAuMDAwMDAwMDAwMDA1
CiswLjAwMDAwMDAwMDAwNQorMC4wMDAwMDAwMDAwMDYKKzAuMDAwMDAwMDAwMDA2CiswLjAwMDAw
MDAwMDAwNworMC4wMDAwMDAwMDAwMDcKKzAuMDAwMDAwMDAwMDA4CiswLjAwMDAwMDAwMDAwOAor
MC4wMDAwMDAwMDAwMDkKKzAuMDAwMDAwMDAwMDA5CiswLjAwMDAwMDAwMDAwMDEKKzAuMDAwMDAw
MDAwMDAwMQorMC4wMDAwMDAwMDAwMDAyCiswLjAwMDAwMDAwMDAwMDIKKzAuMDAwMDAwMDAwMDAw
MworMC4wMDAwMDAwMDAwMDAzCiswLjAwMDAwMDAwMDAwMDQKKzAuMDAwMDAwMDAwMDAwNAorMC4w
MDAwMDAwMDAwMDA1CiswLjAwMDAwMDAwMDAwMDUKKzAuMDAwMDAwMDAwMDAwNgorMC4wMDAwMDAw
MDAwMDA2CiswLjAwMDAwMDAwMDAwMDcKKzAuMDAwMDAwMDAwMDAwNworMC4wMDAwMDAwMDAwMDA4
CiswLjAwMDAwMDAwMDAwMDgKKzAuMDAwMDAwMDAwMDAwOQorMC4wMDAwMDAwMDAwMDA5CiswLjAw
MDAwMDAwMDAwMDAxCiswLjAwMDAwMDAwMDAwMDAxCiswLjAwMDAwMDAwMDAwMDAyCiswLjAwMDAw
MDAwMDAwMDAyCiswLjAwMDAwMDAwMDAwMDAzCiswLjAwMDAwMDAwMDAwMDAzCiswLjAwMDAwMDAw
MDAwMDA0CiswLjAwMDAwMDAwMDAwMDA0CiswLjAwMDAwMDAwMDAwMDA1CiswLjAwMDAwMDAwMDAw
MDA1CiswLjAwMDAwMDAwMDAwMDA2CiswLjAwMDAwMDAwMDAwMDA2CiswLjAwMDAwMDAwMDAwMDA3
CiswLjAwMDAwMDAwMDAwMDA3CiswLjAwMDAwMDAwMDAwMDA4CiswLjAwMDAwMDAwMDAwMDA4Cisw
LjAwMDAwMDAwMDAwMDA5CiswLjAwMDAwMDAwMDAwMDA5CiswLjAwMDAwMDAwMDAwMDAwMQorMC4w
MDAwMDAwMDAwMDAwMDEKKzAuMDAwMDAwMDAwMDAwMDAyCiswLjAwMDAwMDAwMDAwMDAwMgorMC4w
MDAwMDAwMDAwMDAwMDMKKzAuMDAwMDAwMDAwMDAwMDAzCiswLjAwMDAwMDAwMDAwMDAwNAorMC4w
MDAwMDAwMDAwMDAwMDQKKzAuMDAwMDAwMDAwMDAwMDA1CiswLjAwMDAwMDAwMDAwMDAwNQorMC4w
MDAwMDAwMDAwMDAwMDYKKzAuMDAwMDAwMDAwMDAwMDA2CiswLjAwMDAwMDAwMDAwMDAwNworMC4w
MDAwMDAwMDAwMDAwMDcKKzAuMDAwMDAwMDAwMDAwMDA4CiswLjAwMDAwMDAwMDAwMDAwOAorMC4w
MDAwMDAwMDAwMDAwMDkKKzAuMDAwMDAwMDAwMDAwMDA5CisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvZm9ybXMvcmFuZ2UvcmFuZ2UtdmFsdWUtcm91bmRpbmcuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvZm9ybXMvcmFuZ2UvcmFuZ2UtdmFsdWUtcm91bmRpbmcuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5mOGI4NGVlZjMxYTZmNmJlMjc5NTNlMzYxNzEyY2YwM2RmZTdjM2EyCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yYW5nZS9yYW5nZS12YWx1ZS1yb3VuZGluZy5o
dG1sCkBAIC0wLDAgKzEsMzUgQEAKKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxpbnB1dCBp
ZD0iZm9vIiB0eXBlPXJhbmdlIHN0ZXA9MC4xIHZhbHVlPTAuNj4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPGRpdiBpZD0ic2xpZGVycyI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24o
IjxhIGhyZWY9J2h0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwMDA5Jz44
MDAwOSBJbnRyb2R1Y2UgRGVjaW1hbCBhcml0aG1ldGljIHRvIGZpeCByb3VuZGluZyBlcnJvcnMg
aW4gbnVtYmVyL3JhbmdlIGlucHV0IHR5cGVzPC9hPiIpOworCitmdW5jdGlvbiBjcmVhdGVTYW1w
bGUoc3RlcCwgdmFsdWUsIG1heCkKK3sKKyAgICB2YXIgY29udGFpbmVyID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgic3BhbiIpOworICAgIGNvbnRhaW5lci5pbm5lckhUTUwgPSAnPGlucHV0IHR5
cGU9cmFuZ2UgbWluPTAgbWF4PScgKyBtYXggKyAnIHN0ZXA9JyArIHN0ZXAgKyAnIHZhbHVlPScg
KyB2YWx1ZSArICc+JyArIHZhbHVlICsgJzxicj4nOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJzbGlkZXJzIikuYXBwZW5kQ2hpbGQoY29udGFpbmVyKTsKKyAgICByZXR1cm4gY29udGFp
bmVyLmZpcnN0Q2hpbGQ7Cit9CisKK3ZhciB6ZXJvcyA9ICIwLiI7Citmb3IgKHZhciBleHBvbmVu
dCA9IDA7IGV4cG9uZW50IDwgMTU7ICsrZXhwb25lbnQpIHsKKyAgICB2YXIgc3RlcCA9IHplcm9z
ICsgIjEiOworICAgIGZvciAodmFyIGRpZ2l0ID0gMTsgZGlnaXQgPD0gOTsgKytkaWdpdCkgewor
ICAgICAgICB2YXIgdmFsdWUgPSB6ZXJvcyArIGRpZ2l0LnRvU3RyaW5nKCk7CisgICAgICAgIHZh
ciBzYW1wbGUgPSAnY3JlYXRlU2FtcGxlKCInICsgc3RlcCArICciLCAiJyArIHZhbHVlICsgJyIs
ICIxZS0nICsgZXhwb25lbnQgKyAnIiknOworICAgICAgICB2YXIgc3RlcEV4cG9uZW50ID0gZXhw
b25lbnQgKyAxOworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoc2FtcGxlICsgJy52YWx1
ZScsIHN0ZXBFeHBvbmVudCA+PSA3ID8gZGlnaXQgKyAiZS0iICsgc3RlcEV4cG9uZW50IDogdmFs
dWUpOworICAgICAgICBzaG91bGRCZShzYW1wbGUgKyAnLnZhbHVlQXNOdW1iZXInLCB2YWx1ZSk7
CisgICAgfQorICAgIHplcm9zICs9ICIwIjsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorCisK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>145498</attachid>
            <date>2012-06-03 18:18:37 -0700</date>
            <delta_ts>2012-06-04 02:00:01 -0700</delta_ts>
            <desc>Patch 11</desc>
            <filename>bug-80009-20120604101836.patch</filename>
            <type>text/plain</type>
            <size>129157</size>
            <attacher>yosin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5MzY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTZkYmFhZGZkYmY1YzA2
MzZmYzM4YzU5ZjkwNGVmZWRkYzYxN2QyNy4uNTRmZmU5NjY0MDA1NmI3OTFiYTUwMmIwZjc1NTNl
ZTU4MWVkOGY0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0OSBAQAorMjAxMi0wNi0wMyAgWW9z
aGlmdW1pIElub3VlICA8eW9zaW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEludHJvZHVjZSBE
ZWNpbWFsIGFyaXRobWV0aWMgdG8gZml4IHJvdW5kaW5nIGVycm9ycyBpbiBudW1iZXIvcmFuZ2Ug
aW5wdXQgdHlwZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTgwMDA5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGRlY2ltYWwgYXJpdGhtYXRpYyBmb3Igc3RlcHBhYmxl
IGlucHV0IHR5cGVzLAorICAgICAgICBlLmcuIGRhdGUsIGRhdGV0aW1lLCBudW1iZXIsIHJhbmdl
LCBhbmQgc28gb24sIHRvIGF2b2lkIHJvdW5kaW5nIGVycm9yCisgICAgICAgIGNhdXNlZCBieSBi
YXNlIDIgZmxvYXRpbmcgcG9pbnQgcmVwcmVzZW50YXRpb24sIGUuZy4gQy9DKysgZG91YmxlIHR5
cGUuCisKKyAgICAgICAgTW9zdCBvZiBkZWNpbWFsIGFyaXRobWF0aWMgY2FsY3VsYXRpb25zIGFy
ZSBpbXBsZW1lbnRlZCBpbiBTdGVwUmFuZ2UKKyAgICAgICAgY2xhc3MsIHJlcGxhY2luZyAiZG91
YmxlIiB3aXRoICJEZWNpbWFsIiwgSW5wdXRUeXBlOjphcHBseVN0ZXAsIGFuZAorICAgICAgICBJ
bnB1dFR5cGU6OnN0ZXBGcm9tUmVuZGVyZXIuCisKKyAgICAgICAgVGVzdDogZmFzdC9mb3Jtcy9y
YW5nZS9yYW5nZS12YWx1ZS1yb3VuZGluZy5odG1sCisKKyAgICAgICAgKiBodG1sL0Jhc2VEYXRl
QW5kVGltZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCYXNlRGF0ZUFuZFRpbWVJ
bnB1dFR5cGU6OnZhbHVlQXNEYXRlKTogVXNpbmcgRGVjaW1hbCBpbnN0ZWFkIG9mIGRvdWJsZS4K
KyAgICAgICAgKFdlYkNvcmU6OkJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6c2V0VmFsdWVBc0Rh
dGUpOiBkaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6
dmFsdWVBc051bWJlcik6IGRpdHRvLgorICAgICAgICAoV2ViQ29yZTo6QmFzZURhdGVBbmRUaW1l
SW5wdXRUeXBlOjpzZXRWYWx1ZUFzTnVtYmVyKTogZGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpC
YXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmRlZmF1bHRWYWx1ZUZvclN0ZXBVcCk6IGRpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6QmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpwYXJzZVRvRGVjaW1h
bCk6IFJlcGxhY2VtZW50IG9mIHBhcnNlVG9Eb3VibGUKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VE
YXRlQW5kVGltZUlucHV0VHlwZTo6c2VyaWFsaXplKTogVXNpbmcgRGVjaW1hbCBpbnN0ZWFkIG9m
IGRvdWJsZS4KKyAgICAgICAgKFdlYkNvcmU6OkJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6c2Vy
aWFsaXplV2l0aENvbXBvbmVudHMpOiBkaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkJhc2VEYXRl
QW5kVGltZUlucHV0VHlwZTo6c2VyaWFsaXplV2l0aE1pbGxpc2Vjb25kcyk6IGRpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6QmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpjb252ZXJ0RnJvbVZpc2li
bGVWYWx1ZSk6IGRpdHRvLgorICAgICAgICAqIGh0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBl
Lmg6CisgICAgICAgIChCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUpOgorICAgICAgICAqIGh0bWwv
RGF0ZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRlSW5wdXRUeXBlOjpjcmVh
dGVTdGVwUmFuZ2UpOiBVc2luZyBEZWNpbWFsIGluc3RlYWQgb2YgZG91YmxlLgorICAgICAgICAo
V2ViQ29yZTo6RGF0ZUlucHV0VHlwZTo6c2V0TWlsbGlzZWNvbmRUb0RhdGVDb21wb25lbnRzKTog
ZGl0dG8uCisgICAgICAgICogaHRtbC9EYXRlSW5wdXRUeXBlLmg6CisgICAgICAgIChEYXRlSW5w
dXRUeXBlKToKKyAgICAgICAgKiBodG1sL0RhdGVUaW1lSW5wdXRUeXBlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRhdGVUaW1lSW5wdXRUeXBlOjpkZWZhdWx0VmFsdWVGb3JTdGVwVXApOiBVc2lu
ZyBEZWNpbWFsIGluc3RlYWQgb2YgZG91YmxlLgorICAgICAgICAoV2ViQ29yZTo6RGF0ZVRpbWVJ
bnB1dFR5cGU6OmNyZWF0ZVN0ZXBSYW5nZSk6IGRpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RGF0
ZVRpbWVJbnB1dFR5cGU6OnNldE1pbGxpc2Vjb25kVG9EYXRlQ29tcG9uZW50cyk6IGRpdHRvLgor
ICAgICAgICAqIGh0bWwvRGF0ZVRpbWVJbnB1dFR5cGUuaDoKKyAgICAgICAgKERhdGVUaW1lSW5w
dXRUeXBlKToKKyAgICAgICAgKiBodG1sL0RhdGVUaW1lTG9jYWxJbnB1dFR5cGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRlVGltZUxvY2FsSW5wdXRUeXBl
OjpjcmVhdGVTdGVwUmFuZ2UpOiBVc2luZyBEZWNpbWFsIGluc3RlYWQgb2YgZG91YmxlLgorICAg
ICAgICAoV2ViQ29yZTo6RGF0ZVRpbWVMb2NhbElucHV0VHlwZTo6c2V0TWlsbGlzZWNvbmRUb0Rh
dGVDb21wb25lbnRzKTogZGl0dG8uCisgICAgICAgICogaHRtbC9EYXRlVGltZUxvY2FsSW5wdXRU
eXBlLmg6CisgICAgICAgIChEYXRlVGltZUxvY2FsSW5wdXRUeXBlKToKKyAgICAgICAgKiBodG1s
L0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVu
dDo6Z2V0QWxsb3dlZFZhbHVlU3RlcCk6IFVzaW5nIERlY2ltYWwgaW5zdGVhZCBvZiBkb3VibGUu
CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpzZXRWYWx1ZUFzTnVtYmVyKTog
ZGl0dG8uCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1l
bnQuaDoKKyAgICAgICAgKEhUTUxJbnB1dEVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvSW5wdXRU
eXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6c2V0VmFsdWVBc051bWJlcik6
IFVzaW5nIERlY2ltYWwgaW5zdGVhZCBvZiBkb3VibGUuCisgICAgICAgIChXZWJDb3JlOjpJbnB1
dFR5cGU6OnJhbmdlVW5kZXJmbG93KTogZGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5
cGU6OnJhbmdlT3ZlcmZsb3cpOiBkaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6
ZGVmYXVsdFZhbHVlRm9yU3RlcFVwKTogZGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5
cGU6Om1pbmltdW0pOiBkaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6bWF4aW11
bSk6IGRpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjppc0luUmFuZ2UpOiBkaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6aXNPdXRPZlJhbmdlKTogZGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OnN0ZXBNaXNtYXRjaCk6IGRpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6SW5wdXRUeXBlOjp2YWxpZGF0aW9uTWVzc2FnZSk6ICBkaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OklucHV0VHlwZTo6cGFyc2VUb0RlY2ltYWwpOiBSZXBsYWNlbWVudCBvZiBw
YXJzZVRvRG91YmxlCisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OnNlcmlhbGl6ZSk6IFVz
aW5nIERlY2ltYWwgaW5zdGVhZCBvZiBkb3VibGUuCisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5
cGU6OmFwcGx5U3RlcCk6IGRpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjpnZXRB
bGxvd2VkVmFsdWVTdGVwKTogZGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OnN0
ZXBVcEZyb21SZW5kZXJlcik6IGRpdHRvLgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBlLmg6Cisg
ICAgICAgIChJbnB1dFR5cGUpOgorICAgICAgICAqIGh0bWwvTW9udGhJbnB1dFR5cGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TW9udGhJbnB1dFR5cGU6OnNlcmlhbGl6ZVdpdGhNaWxsaXNlY29u
ZHMpOiBVc2luZyBEZWNpbWFsIGluc3RlYWQgb2YgZG91YmxlLgorICAgICAgICAoV2ViQ29yZTo6
TW9udGhJbnB1dFR5cGU6OmRlZmF1bHRWYWx1ZUZvclN0ZXBVcCk6IGRpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6TW9udGhJbnB1dFR5cGU6OmNyZWF0ZVN0ZXBSYW5nZSk6IGRpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6TW9udGhJbnB1dFR5cGU6OnBhcnNlVG9EZWNpbWFsKTogUmVwbGFjZW1lbnQg
b2YgcGFyc2VUb0RvdWJsZS4KKyAgICAgICAgKFdlYkNvcmU6Ok1vbnRoSW5wdXRUeXBlOjpzZXRN
aWxsaXNlY29uZFRvRGF0ZUNvbXBvbmVudHMpOiBVc2luZyBEZWNpbWFsIGluc3RlYWQgb2YgZG91
YmxlLgorICAgICAgICAqIGh0bWwvTW9udGhJbnB1dFR5cGUuaDoKKyAgICAgICAgKE1vbnRoSW5w
dXRUeXBlKToKKyAgICAgICAgKiBodG1sL051bWJlcklucHV0VHlwZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjYWxjdWxhdGVSZW5kZXJTaXplKTogQWRkZWQuIFRoaXMgZnVuY3Rpb24gcmVwbGFj
ZXNzIGxlbmd0aEJlZm9yZURlY2ltYWxQb2ludC4KKyAgICAgICAgKFdlYkNvcmU6Ok51bWJlcklu
cHV0VHlwZTo6dmFsdWVBc051bWJlcik6IFVzaW5nIERlY2ltYWwgaW5zdGVhZCBvZiBkb3VibGUu
CisgICAgICAgIChXZWJDb3JlOjpOdW1iZXJJbnB1dFR5cGU6OnNldFZhbHVlQXNOdW1iZXIpOiBk
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok51bWJlcklucHV0VHlwZTo6Y3JlYXRlU3RlcFJhbmdl
KTogZGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpOdW1iZXJJbnB1dFR5cGU6OnNpemVTaG91bGRJ
bmNsdWRlRGVjb3JhdGlvbik6IGRpdHRvLgorICAgICAgICAoV2ViQ29yZTo6TnVtYmVySW5wdXRU
eXBlOjpwYXJzZVRvRGVjaW1hbCk6IFJlcGxhY2VtZW50IG9mIHBhcnNlVG9Eb3VibGUuCisgICAg
ICAgIChXZWJDb3JlOjpOdW1iZXJJbnB1dFR5cGU6OnNlcmlhbGl6ZSk6IFVzaW5nIERlY2ltYWwg
aW5zdGVhZCBvZiBkb3VibGUuCisgICAgICAgIChXZWJDb3JlOjpOdW1iZXJJbnB1dFR5cGU6Omxv
Y2FsaXplVmFsdWUpOiBkaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok51bWJlcklucHV0VHlwZTo6
aXNBY2NlcHRhYmxlVmFsdWUpOiBkaXR0by4KKyAgICAgICAgKiBodG1sL051bWJlcklucHV0VHlw
ZS5oOgorICAgICAgICAoTnVtYmVySW5wdXRUeXBlKToKKyAgICAgICAgKiBodG1sL1JhbmdlSW5w
dXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlSW5wdXRUeXBlOjp2YWx1ZUFzTnVt
YmVyKTogVXNpbmcgRGVjaW1hbCBpbnN0ZWFkIG9mIGRvdWJsZS4KKyAgICAgICAgKFdlYkNvcmU6
OlJhbmdlSW5wdXRUeXBlOjpzZXRWYWx1ZUFzTnVtYmVyKTogZGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpSYW5nZUlucHV0VHlwZTo6Y3JlYXRlU3RlcFJhbmdlKTogZGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6aGFuZGxlS2V5ZG93bkV2ZW50KTogZGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6cGFyc2VUb0RlY2ltYWwpOiBSZXBsYWNlbWVu
dCBvZiBwYXJzZVRvRG91YmxlLgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VJbnB1dFR5cGU6OnNl
cmlhbGl6ZSk6IGRpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VJbnB1dFR5cGU6OnNhbml0
aXplVmFsdWUpOiBkaXR0by4KKyAgICAgICAgKiBodG1sL1JhbmdlSW5wdXRUeXBlLmg6CisgICAg
ICAgIChSYW5nZUlucHV0VHlwZSk6CisgICAgICAgICogaHRtbC9TdGVwUmFuZ2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6cG93ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3RlcFJhbmdlOjpTdGVw
UmFuZ2UpOiBVc2luZyBEZWNpbWFsIGluc3RlYWQgb2YgZG91YmxlLgorICAgICAgICAoV2ViQ29y
ZTo6U3RlcFJhbmdlOjphY2NlcHRhYmxlRXJyb3IpOiBkaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OlN0ZXBSYW5nZTo6YWxpZ25WYWx1ZUZvclN0ZXApOiBkaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OlN0ZXBSYW5nZTo6Y2xhbXBWYWx1ZSk6IGRpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U3RlcFJh
bmdlOjpwYXJzZVN0ZXApOiBkaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlN0ZXBSYW5nZTo6c3Rl
cE1pc21hdGNoKTogZGl0dG8uCisgICAgICAgICogaHRtbC9TdGVwUmFuZ2UuaDoKKyAgICAgICAg
KERlY2ltYWxPck1pc3NpbmcpOiBSZXBsYWNlbWVudCBvZiBEb3VibGVXaXRoRGVjaW1hbFBvaW50
c09yTWlzc2luZy4KKyAgICAgICAgKFdlYkNvcmU6OlN0ZXBSYW5nZTo6RGVjaW1hbE9yTWlzc2lu
Zzo6RGVjaW1hbE9yTWlzc2luZyk6CisgICAgICAgIChXZWJDb3JlOjpTdGVwUmFuZ2U6OlN0ZXBE
ZXNjcmlwdGlvbjo6ZGVmYXVsdFZhbHVlKTogVXNpbmcgRGVjaW1hbCBpbnN0ZWFkIG9mIGRvdWJs
ZS4KKyAgICAgICAgKFdlYkNvcmU6OlN0ZXBSYW5nZTo6bWF4aW11bSk6IFVzaW5nIERlY2ltYWwg
aW5zdGVhZCBvZiBkb3VibGUuCisgICAgICAgIChXZWJDb3JlOjpTdGVwUmFuZ2U6Om1pbmltdW0p
OiBkaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlN0ZXBSYW5nZTo6c3RlcCk6IGRpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6U3RlcFJhbmdlOjpzdGVwQmFzZSk6IGRpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6U3RlcFJhbmdlOjpkZWZhdWx0VmFsdWUpOiBkaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OlN0ZXBSYW5nZTo6ZW5zdXJlTWF4aW11bSk6IGRpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U3Rl
cFJhbmdlOjpwcm9wb3J0aW9uRnJvbVZhbHVlKTogZGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpT
dGVwUmFuZ2U6OnZhbHVlRnJvbVByb3BvcnRpb24pOiBkaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OlN0ZXBSYW5nZTo6cm91bmRCeVN0ZXApOiBkaXR0by4KKyAgICAgICAgKiBodG1sL1RpbWVJbnB1
dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGltZUlucHV0VHlwZTo6ZGVmYXVsdFZhbHVl
Rm9yU3RlcFVwKTogVXNpbmcgRGVjaW1hbCBpbnN0ZWFkIG9mIGRvdWJsZS4KKyAgICAgICAgKFdl
YkNvcmU6OlRpbWVJbnB1dFR5cGU6OmNyZWF0ZVN0ZXBSYW5nZSk6IGRpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6VGltZUlucHV0VHlwZTo6c2V0TWlsbGlzZWNvbmRUb0RhdGVDb21wb25lbnRzKTog
ZGl0dG8uCisgICAgICAgICogaHRtbC9UaW1lSW5wdXRUeXBlLmg6CisgICAgICAgIChUaW1lSW5w
dXRUeXBlKToKKyAgICAgICAgKiBodG1sL1dlZWtJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V2Vla0lucHV0VHlwZTo6Y3JlYXRlU3RlcFJhbmdlKTogVXNpbmcgRGVjaW1hbCBpbnN0
ZWFkIG9mIGRvdWJsZS4KKyAgICAgICAgKFdlYkNvcmU6OldlZWtJbnB1dFR5cGU6OnNldE1pbGxp
c2Vjb25kVG9EYXRlQ29tcG9uZW50cyk6IGRpdHRvLgorICAgICAgICAqIGh0bWwvV2Vla0lucHV0
VHlwZS5oOgorICAgICAgICAoV2Vla0lucHV0VHlwZSk6CisgICAgICAgICogaHRtbC9wYXJzZXIv
SFRNTFBhcnNlcklkaW9tcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXJpYWxpemVGb3JOdW1i
ZXJUeXBlKTogQWRkZWQgZm9yIERlY2ltYWwuCisgICAgICAgIChXZWJDb3JlOjpwYXJzZVRvRGVj
aW1hbEZvck51bWJlclR5cGUpOiBBZGRlZCBmb3IgRGVjaW1hbC4KKyAgICAgICAgKiBodG1sL3Bh
cnNlci9IVE1MUGFyc2VySWRpb21zLmg6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0RGVjaW1h
bFRvRG91YmxlKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0RG91YmxlVG9EZWNp
bWFsKTogQWRkZWQuCisgICAgICAgICogaHRtbC9zaGFkb3cvQ2FsZW5kYXJQaWNrZXJFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbGVuZGFyUGlja2VyRWxlbWVudDo6d3JpdGVEb2N1
bWVudCk6IFVzaW5nIERlY2ltYWwgaW5zdGVhZCBvZiBkb3VibGUuCisgICAgICAgICogaHRtbC9z
aGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNsaWRlclBv
c2l0aW9uKTogVXNpbmcgRGVjaW1hbCBpbnN0ZWFkIG9mIGRvdWJsZS4KKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclNsaWRlclRodW1iOjpsYXlvdXQpOiBkaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OlNsaWRlclRodW1iRWxlbWVudDo6c2V0UG9zaXRpb25Gcm9tUG9pbnQpOiBkaXR0by4KKwogMjAx
Mi0wNi0wMyAgSGF5YXRvIEl0byAgPGhheWF0b0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgU3Vw
cG9ydHMgdHJhdmVyc2luZyBub2RlcyBpbiBhbiBvcnBoYW5lZCBzaGFkb3cgc3VidHJlZSBpbiBD
b21wb3NlZFNoYWRvd1RyZWVQYXJlbnRXYWxrZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAKaW5kZXggNGM3MzA5MTkxM2Q4MmRlNTk1ZGJj
YzVkMjIzZWIwZDkxYmNlOTRkNS4uODIzYTY4ZDY2ZDkyODYxYWZiZGJiNTQxMDVlMGYyZDcyOGNh
NmYyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1
dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRU
eXBlLmNwcApAQCAtMzMsNiArMzMsNyBAQAogCiAjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5o
IgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIK
ICNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAiTG9jYWxpemVkRGF0ZS5oIgog
I2luY2x1ZGUgPGxpbWl0cz4KQEAgLTQ3LDI1ICs0OCwyNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAotc3Rh
dGljIGNvbnN0IGRvdWJsZSBtc2VjUGVyTWludXRlID0gNjAgKiAxMDAwOwotc3RhdGljIGNvbnN0
IGRvdWJsZSBtc2VjUGVyU2Vjb25kID0gMTAwMDsKK3N0YXRpYyBjb25zdCBpbnQgbXNlY1Blck1p
bnV0ZSA9IDYwICogMTAwMDsKK3N0YXRpYyBjb25zdCBpbnQgbXNlY1BlclNlY29uZCA9IDEwMDA7
CiAKIGRvdWJsZSBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OnZhbHVlQXNEYXRlKCkgY29uc3QK
IHsKLSAgICByZXR1cm4gcGFyc2VUb0RvdWJsZShlbGVtZW50KCktPnZhbHVlKCksIERhdGVDb21w
b25lbnRzOjppbnZhbGlkTWlsbGlzZWNvbmRzKCkpOworICAgIHJldHVybiBjb252ZXJ0RGVjaW1h
bFRvRG91YmxlKHBhcnNlVG9EZWNpbWFsKGVsZW1lbnQoKS0+dmFsdWUoKSwgY29udmVydERvdWJs
ZVRvRGVjaW1hbChEYXRlQ29tcG9uZW50czo6aW52YWxpZE1pbGxpc2Vjb25kcygpKSkpOwogfQog
CiB2b2lkIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6c2V0VmFsdWVBc0RhdGUoZG91YmxlIHZh
bHVlLCBFeGNlcHRpb25Db2RlJikgY29uc3QKIHsKLSAgICBlbGVtZW50KCktPnNldFZhbHVlKHNl
cmlhbGl6ZVdpdGhNaWxsaXNlY29uZHModmFsdWUpKTsKKyAgICBlbGVtZW50KCktPnNldFZhbHVl
KHNlcmlhbGl6ZVdpdGhNaWxsaXNlY29uZHMoY29udmVydERvdWJsZVRvRGVjaW1hbCh2YWx1ZSkp
KTsKIH0KIAogZG91YmxlIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6dmFsdWVBc051bWJlcigp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIHBhcnNlVG9Eb3VibGUoZWxlbWVudCgpLT52YWx1ZSgpLCBu
dW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKSk7CisgICAgcmV0dXJuIGNvbnZlcnRE
ZWNpbWFsVG9Eb3VibGUocGFyc2VUb0RlY2ltYWwoZWxlbWVudCgpLT52YWx1ZSgpLCBEZWNpbWFs
OjpuYW4oKSkpOwogfQogCi12b2lkIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6c2V0VmFsdWVB
c051bWJlcihkb3VibGUgbmV3VmFsdWUsIFRleHRGaWVsZEV2ZW50QmVoYXZpb3IgZXZlbnRCZWhh
dmlvciwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0Cit2b2lkIEJhc2VEYXRlQW5kVGltZUlucHV0VHlw
ZTo6c2V0VmFsdWVBc051bWJlcihjb25zdCBEZWNpbWFsJiBuZXdWYWx1ZSwgVGV4dEZpZWxkRXZl
bnRCZWhhdmlvciBldmVudEJlaGF2aW9yLCBFeGNlcHRpb25Db2RlJikgY29uc3QKIHsKICAgICBl
bGVtZW50KCktPnNldFZhbHVlKHNlcmlhbGl6ZShuZXdWYWx1ZSksIGV2ZW50QmVoYXZpb3IpOwog
fQpAQCAtODAsMTMgKzgxLDEzIEBAIGJvb2wgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjp0eXBl
TWlzbWF0Y2goKSBjb25zdAogICAgIHJldHVybiB0eXBlTWlzbWF0Y2hGb3IoZWxlbWVudCgpLT52
YWx1ZSgpKTsKIH0KIAotZG91YmxlIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6ZGVmYXVsdFZh
bHVlRm9yU3RlcFVwKCkgY29uc3QKK0RlY2ltYWwgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpk
ZWZhdWx0VmFsdWVGb3JTdGVwVXAoKSBjb25zdAogewogICAgIGRvdWJsZSBtcyA9IGN1cnJlbnRU
aW1lTVMoKTsKICAgICBkb3VibGUgdXRjT2Zmc2V0ID0gY2FsY3VsYXRlVVRDT2Zmc2V0KCk7CiAg
ICAgZG91YmxlIGRzdE9mZnNldCA9IGNhbGN1bGF0ZURTVE9mZnNldChtcywgdXRjT2Zmc2V0KTsK
ICAgICBpbnQgb2Zmc2V0ID0gc3RhdGljX2Nhc3Q8aW50PigodXRjT2Zmc2V0ICsgZHN0T2Zmc2V0
KSAvIG1zUGVyTWludXRlKTsKLSAgICByZXR1cm4gbXMgKyAob2Zmc2V0ICogbXNQZXJNaW51dGUp
OworICAgIHJldHVybiBjb252ZXJ0RG91YmxlVG9EZWNpbWFsKG1zICsgKG9mZnNldCAqIG1zUGVy
TWludXRlKSk7CiB9CiAKIGJvb2wgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjppc1N0ZXBwYWJs
ZSgpIGNvbnN0CkBAIC0xMDgsMTQgKzEwOSwxNCBAQCB2b2lkIEJhc2VEYXRlQW5kVGltZUlucHV0
VHlwZTo6aGFuZGxlV2hlZWxFdmVudChXaGVlbEV2ZW50KiBldmVudCkKICAgICAgICAgaGFuZGxl
V2hlZWxFdmVudEZvclNwaW5CdXR0b24oZXZlbnQpOwogfQogCi1kb3VibGUgQmFzZURhdGVBbmRU
aW1lSW5wdXRUeXBlOjpwYXJzZVRvRG91YmxlKGNvbnN0IFN0cmluZyYgc3JjLCBkb3VibGUgZGVm
YXVsdFZhbHVlKSBjb25zdAorRGVjaW1hbCBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OnBhcnNl
VG9EZWNpbWFsKGNvbnN0IFN0cmluZyYgc3JjLCBjb25zdCBEZWNpbWFsJiBkZWZhdWx0VmFsdWUp
IGNvbnN0CiB7CiAgICAgRGF0ZUNvbXBvbmVudHMgZGF0ZTsKICAgICBpZiAoIXBhcnNlVG9EYXRl
Q29tcG9uZW50cyhzcmMsICZkYXRlKSkKICAgICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTsKICAg
ICBkb3VibGUgbXNlYyA9IGRhdGUubWlsbGlzZWNvbmRzU2luY2VFcG9jaCgpOwogICAgIEFTU0VS
VChpc2Zpbml0ZShtc2VjKSk7Ci0gICAgcmV0dXJuIG1zZWM7CisgICAgcmV0dXJuIGNvbnZlcnRE
b3VibGVUb0RlY2ltYWwobXNlYyk7CiB9CiAKIGJvb2wgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBl
OjpwYXJzZVRvRGF0ZUNvbXBvbmVudHMoY29uc3QgU3RyaW5nJiBzb3VyY2UsIERhdGVDb21wb25l
bnRzKiBvdXQpIGNvbnN0CkBAIC0xMjgsOSArMTI5LDkgQEAgYm9vbCBCYXNlRGF0ZUFuZFRpbWVJ
bnB1dFR5cGU6OnBhcnNlVG9EYXRlQ29tcG9uZW50cyhjb25zdCBTdHJpbmcmIHNvdXJjZSwgRGF0
ZUMKICAgICByZXR1cm4gcGFyc2VUb0RhdGVDb21wb25lbnRzSW50ZXJuYWwoc291cmNlLmNoYXJh
Y3RlcnMoKSwgc291cmNlLmxlbmd0aCgpLCBvdXQpOwogfQogCi1TdHJpbmcgQmFzZURhdGVBbmRU
aW1lSW5wdXRUeXBlOjpzZXJpYWxpemUoZG91YmxlIHZhbHVlKSBjb25zdAorU3RyaW5nIEJhc2VE
YXRlQW5kVGltZUlucHV0VHlwZTo6c2VyaWFsaXplKGNvbnN0IERlY2ltYWwmIHZhbHVlKSBjb25z
dAogewotICAgIGlmICghaXNmaW5pdGUodmFsdWUpKQorICAgIGlmICghdmFsdWUuaXNGaW5pdGUo
KSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIERhdGVDb21wb25lbnRzIGRhdGU7CiAg
ICAgaWYgKCFzZXRNaWxsaXNlY29uZFRvRGF0ZUNvbXBvbmVudHModmFsdWUsICZkYXRlKSkKQEAg
LTE0MCwxNyArMTQxLDE3IEBAIFN0cmluZyBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OnNlcmlh
bGl6ZShkb3VibGUgdmFsdWUpIGNvbnN0CiAKIFN0cmluZyBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5
cGU6OnNlcmlhbGl6ZVdpdGhDb21wb25lbnRzKGNvbnN0IERhdGVDb21wb25lbnRzJiBkYXRlKSBj
b25zdAogewotICAgIGRvdWJsZSBzdGVwOworICAgIERlY2ltYWwgc3RlcDsKICAgICBpZiAoIWVs
ZW1lbnQoKS0+Z2V0QWxsb3dlZFZhbHVlU3RlcCgmc3RlcCkpCiAgICAgICAgIHJldHVybiBkYXRl
LnRvU3RyaW5nKCk7Ci0gICAgaWYgKCFmbW9kKHN0ZXAsIG1zZWNQZXJNaW51dGUpKQorICAgIGlm
IChzdGVwLnJlbWFpbmRlcihtc2VjUGVyTWludXRlKS5pc1plcm8oKSkKICAgICAgICAgcmV0dXJu
IGRhdGUudG9TdHJpbmcoRGF0ZUNvbXBvbmVudHM6Ok5vbmUpOwotICAgIGlmICghZm1vZChzdGVw
LCBtc2VjUGVyU2Vjb25kKSkKKyAgICBpZiAoc3RlcC5yZW1haW5kZXIobXNlY1BlclNlY29uZCku
aXNaZXJvKCkpCiAgICAgICAgIHJldHVybiBkYXRlLnRvU3RyaW5nKERhdGVDb21wb25lbnRzOjpT
ZWNvbmQpOwogICAgIHJldHVybiBkYXRlLnRvU3RyaW5nKERhdGVDb21wb25lbnRzOjpNaWxsaXNl
Y29uZCk7CiB9CiAKLVN0cmluZyBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OnNlcmlhbGl6ZVdp
dGhNaWxsaXNlY29uZHMoZG91YmxlIHZhbHVlKSBjb25zdAorU3RyaW5nIEJhc2VEYXRlQW5kVGlt
ZUlucHV0VHlwZTo6c2VyaWFsaXplV2l0aE1pbGxpc2Vjb25kcyhjb25zdCBEZWNpbWFsJiB2YWx1
ZSkgY29uc3QKIHsKICAgICByZXR1cm4gc2VyaWFsaXplKHZhbHVlKTsKIH0KQEAgLTE3OSw3ICsx
ODAsOCBAQCBTdHJpbmcgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpjb252ZXJ0RnJvbVZpc2li
bGVWYWx1ZShjb25zdCBTdHJpbmcmIHZpc2libGVWYQogICAgIGlmICghaXNmaW5pdGUocGFyc2Vk
VmFsdWUpKQogICAgICAgICByZXR1cm4gdmlzaWJsZVZhbHVlOwogCi0gICAgcmV0dXJuIHNlcmlh
bGl6ZVdpdGhNaWxsaXNlY29uZHMocGFyc2VkVmFsdWUpOworICAgIGNvbnN0IERlY2ltYWwgdmFs
dWUgPSBjb252ZXJ0RG91YmxlVG9EZWNpbWFsKHBhcnNlZFZhbHVlKTsKKyAgICByZXR1cm4gdmFs
dWUuaXNGaW5pdGUoKSA/IHNlcmlhbGl6ZVdpdGhNaWxsaXNlY29uZHModmFsdWUpIDogdmlzaWJs
ZVZhbHVlOwogfQogCiBTdHJpbmcgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpzYW5pdGl6ZVZh
bHVlKGNvbnN0IFN0cmluZyYgcHJvcG9zZWRWYWx1ZSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5oCmluZGV4IGRhOTUxOTEwMTFjMDkzMDBj
ZmJkNjIxZDIxNGQ3MjhmN2QwZGM3ODkuLmEzYzg5ZTkzMWI2MzQwNmI0MzljNThlYjA2MDM0MWIx
MWMwNmQ4MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1l
SW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1
dFR5cGUuaApAQCAtNDIsMjUgKzQyLDI1IEBAIGNsYXNzIEJhc2VEYXRlQW5kVGltZUlucHV0VHlw
ZSA6IHB1YmxpYyBUZXh0RmllbGRJbnB1dFR5cGUgewogcHJvdGVjdGVkOgogICAgIEJhc2VEYXRl
QW5kVGltZUlucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50KiBlbGVtZW50KSA6IFRleHRGaWVsZElu
cHV0VHlwZShlbGVtZW50KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlS2V5ZG93bkV2ZW50
KEtleWJvYXJkRXZlbnQqKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGRvdWJsZSBwYXJzZVRvRG91
YmxlKGNvbnN0IFN0cmluZyYsIGRvdWJsZSkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBE
ZWNpbWFsIHBhcnNlVG9EZWNpbWFsKGNvbnN0IFN0cmluZyYsIGNvbnN0IERlY2ltYWwmKSBjb25z
dCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgcGFyc2VUb0RhdGVDb21wb25lbnRzKGNvbnN0
IFN0cmluZyYsIERhdGVDb21wb25lbnRzKikgY29uc3QgT1ZFUlJJREU7CiAgICAgU3RyaW5nIHNl
cmlhbGl6ZVdpdGhDb21wb25lbnRzKGNvbnN0IERhdGVDb21wb25lbnRzJikgY29uc3Q7CiAKIHBy
aXZhdGU6CiAgICAgdmlydHVhbCBib29sIHBhcnNlVG9EYXRlQ29tcG9uZW50c0ludGVybmFsKGNv
bnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoLCBEYXRlQ29tcG9uZW50cyopIGNvbnN0ID0gMDsK
LSAgICB2aXJ0dWFsIGJvb2wgc2V0TWlsbGlzZWNvbmRUb0RhdGVDb21wb25lbnRzKGRvdWJsZSwg
RGF0ZUNvbXBvbmVudHMqKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIHNldE1pbGxpc2Vj
b25kVG9EYXRlQ29tcG9uZW50cyhjb25zdCBEZWNpbWFsJiwgRGF0ZUNvbXBvbmVudHMqKSBjb25z
dCA9IDA7CiAgICAgdmlydHVhbCBEYXRlQ29tcG9uZW50czo6VHlwZSBkYXRlVHlwZSgpIGNvbnN0
ID0gMDsKICAgICB2aXJ0dWFsIGRvdWJsZSB2YWx1ZUFzRGF0ZSgpIGNvbnN0IE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZUFzRGF0ZShkb3VibGUsIEV4Y2VwdGlvbkNvZGUmKSBj
b25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGRvdWJsZSB2YWx1ZUFzTnVtYmVyKCkgY29uc3Qg
T1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHNldFZhbHVlQXNOdW1iZXIoZG91YmxlLCBUZXh0
RmllbGRFdmVudEJlaGF2aW9yLCBFeGNlcHRpb25Db2RlJikgY29uc3QgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIHNldFZhbHVlQXNOdW1iZXIoY29uc3QgRGVjaW1hbCYsIFRleHRGaWVsZEV2
ZW50QmVoYXZpb3IsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFs
IGJvb2wgdHlwZU1pc21hdGNoRm9yKGNvbnN0IFN0cmluZyYpIGNvbnN0IE9WRVJSSURFOwogICAg
IHZpcnR1YWwgYm9vbCB0eXBlTWlzbWF0Y2goKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFs
IGRvdWJsZSBkZWZhdWx0VmFsdWVGb3JTdGVwVXAoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIERlY2ltYWwgZGVmYXVsdFZhbHVlRm9yU3RlcFVwKCkgY29uc3QgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCBib29sIGlzU3RlcHBhYmxlKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2
b2lkIGhhbmRsZVdoZWVsRXZlbnQoV2hlZWxFdmVudCopIE9WRVJSSURFOwotICAgIHZpcnR1YWwg
U3RyaW5nIHNlcmlhbGl6ZShkb3VibGUpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgU3Ry
aW5nIHNlcmlhbGl6ZVdpdGhNaWxsaXNlY29uZHMoZG91YmxlKSBjb25zdDsKKyAgICB2aXJ0dWFs
IFN0cmluZyBzZXJpYWxpemUoY29uc3QgRGVjaW1hbCYpIGNvbnN0IE9WRVJSSURFOworICAgIHZp
cnR1YWwgU3RyaW5nIHNlcmlhbGl6ZVdpdGhNaWxsaXNlY29uZHMoY29uc3QgRGVjaW1hbCYpIGNv
bnN0OwogICAgIHZpcnR1YWwgU3RyaW5nIGxvY2FsaXplVmFsdWUoY29uc3QgU3RyaW5nJikgY29u
c3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBTdHJpbmcgdmlzaWJsZVZhbHVlKCkgY29uc3QgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCBTdHJpbmcgY29udmVydEZyb21WaXNpYmxlVmFsdWUoY29uc3Qg
U3RyaW5nJikgY29uc3QgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0RhdGVJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlSW5wdXRUeXBlLmNw
cAppbmRleCA4OGIzMTIwNjU1NDJmMjhiZjBmOWQ4ZDYxMzNlZTFiOTFlYmIyNjE5Li5kOGUxMTMy
ZWVmZjJhOWQ5NzZjOGM0ZWQ5OTljYmUzZDYzYTU2NzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0RhdGVJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0
ZUlucHV0VHlwZS5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJEYXRlQ29tcG9uZW50
cy5oIgogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMu
aCIKKyNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVkZSAiS2V5Ym9hcmRFdmVu
dC5oIgogI2luY2x1ZGUgIkxvY2FsaXplZERhdGUuaCIKICNpbmNsdWRlIDx3dGYvUGFzc093blB0
ci5oPgpAQCAtNDUsOSArNDYsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVz
cGFjZSBIVE1MTmFtZXM7CiAKLXN0YXRpYyBjb25zdCBkb3VibGUgZGF0ZURlZmF1bHRTdGVwID0g
MS4wOwotc3RhdGljIGNvbnN0IGRvdWJsZSBkYXRlRGVmYXVsdFN0ZXBCYXNlID0gMC4wOwotc3Rh
dGljIGNvbnN0IGRvdWJsZSBkYXRlU3RlcFNjYWxlRmFjdG9yID0gODY0MDAwMDAuMDsKK3N0YXRp
YyBjb25zdCBpbnQgIGRhdGVEZWZhdWx0U3RlcCA9IDE7CitzdGF0aWMgY29uc3QgaW50ICBkYXRl
RGVmYXVsdFN0ZXBCYXNlID0gMDsKK3N0YXRpYyBjb25zdCBpbnQgIGRhdGVTdGVwU2NhbGVGYWN0
b3IgPSA4NjQwMDAwMDsKIAogaW5saW5lIERhdGVJbnB1dFR5cGU6OkRhdGVJbnB1dFR5cGUoSFRN
TElucHV0RWxlbWVudCogZWxlbWVudCkKICAgICA6IEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZShl
bGVtZW50KQpAQCAtNzMsMTAgKzc0LDEwIEBAIFN0ZXBSYW5nZSBEYXRlSW5wdXRUeXBlOjpjcmVh
dGVTdGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5nIGFueVN0ZXBIYW5kbGluZykgY29uc3QKIHsKICAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0ZXBSYW5nZTo6U3RlcERlc2NyaXB0aW9uLCBz
dGVwRGVzY3JpcHRpb24sIChkYXRlRGVmYXVsdFN0ZXAsIGRhdGVEZWZhdWx0U3RlcEJhc2UsIGRh
dGVTdGVwU2NhbGVGYWN0b3IsIFN0ZXBSYW5nZTo6UGFyc2VkU3RlcFZhbHVlU2hvdWxkQmVJbnRl
Z2VyKSk7CiAKLSAgICBkb3VibGUgc3RlcEJhc2UgPSBwYXJzZVRvRG91YmxlKGVsZW1lbnQoKS0+
ZmFzdEdldEF0dHJpYnV0ZShtaW5BdHRyKSwgMCk7Ci0gICAgZG91YmxlIG1pbmltdW0gPSBwYXJz
ZVRvRG91YmxlKGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShtaW5BdHRyKSwgRGF0ZUNvbXBv
bmVudHM6Om1pbmltdW1EYXRlKCkpOwotICAgIGRvdWJsZSBtYXhpbXVtID0gcGFyc2VUb0RvdWJs
ZShlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUobWF4QXR0ciksIERhdGVDb21wb25lbnRzOjpt
YXhpbXVtRGF0ZSgpKTsKLSAgICBTdGVwUmFuZ2U6OkRvdWJsZVdpdGhEZWNpbWFsUGxhY2VzT3JN
aXNzaW5nIHN0ZXAgPSBTdGVwUmFuZ2U6OnBhcnNlU3RlcChhbnlTdGVwSGFuZGxpbmcsIHN0ZXBE
ZXNjcmlwdGlvbiwgZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKHN0ZXBBdHRyKSk7CisgICAg
Y29uc3QgRGVjaW1hbCBzdGVwQmFzZSA9IHBhcnNlVG9EZWNpbWFsKGVsZW1lbnQoKS0+ZmFzdEdl
dEF0dHJpYnV0ZShtaW5BdHRyKSwgMCk7CisgICAgY29uc3QgRGVjaW1hbCBtaW5pbXVtID0gcGFy
c2VUb0RlY2ltYWwoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpLCBjb252ZXJ0
RG91YmxlVG9EZWNpbWFsKERhdGVDb21wb25lbnRzOjptaW5pbXVtRGF0ZSgpKSk7CisgICAgY29u
c3QgRGVjaW1hbCBtYXhpbXVtID0gcGFyc2VUb0RlY2ltYWwoZWxlbWVudCgpLT5mYXN0R2V0QXR0
cmlidXRlKG1heEF0dHIpLCBjb252ZXJ0RG91YmxlVG9EZWNpbWFsKERhdGVDb21wb25lbnRzOjpt
YXhpbXVtRGF0ZSgpKSk7CisgICAgY29uc3QgU3RlcFJhbmdlOjpEZWNpbWFsT3JNaXNzaW5nIHN0
ZXAgPSBTdGVwUmFuZ2U6OnBhcnNlU3RlcChhbnlTdGVwSGFuZGxpbmcsIHN0ZXBEZXNjcmlwdGlv
biwgZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKHN0ZXBBdHRyKSk7CiAgICAgcmV0dXJuIFN0
ZXBSYW5nZShzdGVwQmFzZSwgbWluaW11bSwgbWF4aW11bSwgc3RlcCwgc3RlcERlc2NyaXB0aW9u
KTsKIH0KIApAQCAtODcsMTAgKzg4LDEwIEBAIGJvb2wgRGF0ZUlucHV0VHlwZTo6cGFyc2VUb0Rh
dGVDb21wb25lbnRzSW50ZXJuYWwoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnCiAgICAg
cmV0dXJuIG91dC0+cGFyc2VEYXRlKGNoYXJhY3RlcnMsIGxlbmd0aCwgMCwgZW5kKSAmJiBlbmQg
PT0gbGVuZ3RoOwogfQogCi1ib29sIERhdGVJbnB1dFR5cGU6OnNldE1pbGxpc2Vjb25kVG9EYXRl
Q29tcG9uZW50cyhkb3VibGUgdmFsdWUsIERhdGVDb21wb25lbnRzKiBkYXRlKSBjb25zdAorYm9v
bCBEYXRlSW5wdXRUeXBlOjpzZXRNaWxsaXNlY29uZFRvRGF0ZUNvbXBvbmVudHMoY29uc3QgRGVj
aW1hbCYgdmFsdWUsIERhdGVDb21wb25lbnRzKiBkYXRlKSBjb25zdAogewogICAgIEFTU0VSVChk
YXRlKTsKLSAgICByZXR1cm4gZGF0ZS0+c2V0TWlsbGlzZWNvbmRzU2luY2VFcG9jaEZvckRhdGUo
dmFsdWUpOworICAgIHJldHVybiBkYXRlLT5zZXRNaWxsaXNlY29uZHNTaW5jZUVwb2NoRm9yRGF0
ZShjb252ZXJ0RGVjaW1hbFRvRG91YmxlKHZhbHVlKSk7CiB9CiAKIGJvb2wgRGF0ZUlucHV0VHlw
ZTo6aXNEYXRlRmllbGQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9E
YXRlSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVJbnB1dFR5cGUuaAppbmRl
eCAyZmFkYzQ3YjQ4Y2QwYTM5ZTAwZjQzYjNiZjExYmEwYTliMjFjMDFmLi44Mzg0M2ExZGFkYjU1
YWQ0OWI4ZTU1Njc3MTFhNWFmMTgzY2RlYWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0RhdGVJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVJbnB1dFR5
cGUuaApAQCAtNTAsNyArNTAsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgRGF0ZUNvbXBvbmVu
dHM6OlR5cGUgZGF0ZVR5cGUoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIFN0ZXBSYW5n
ZSBjcmVhdGVTdGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5nKSBjb25zdCBPVkVSUklERTsKICAgICB2
aXJ0dWFsIGJvb2wgcGFyc2VUb0RhdGVDb21wb25lbnRzSW50ZXJuYWwoY29uc3QgVUNoYXIqLCB1
bnNpZ25lZCBsZW5ndGgsIERhdGVDb21wb25lbnRzKikgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmly
dHVhbCBib29sIHNldE1pbGxpc2Vjb25kVG9EYXRlQ29tcG9uZW50cyhkb3VibGUsIERhdGVDb21w
b25lbnRzKikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHNldE1pbGxpc2Vjb25k
VG9EYXRlQ29tcG9uZW50cyhjb25zdCBEZWNpbWFsJiwgRGF0ZUNvbXBvbmVudHMqKSBjb25zdCBP
VkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgaXNEYXRlRmllbGQoKSBjb25zdCBPVkVSUklERTsK
ICNpZiBFTkFCTEUoQ0FMRU5EQVJfUElDS0VSKQogICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVTaGFk
b3dTdWJ0cmVlKCkgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Rh
dGVUaW1lSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZVRpbWVJbnB1dFR5
cGUuY3BwCmluZGV4IDZjZWZkOWQ4ZDg4YTRhY2JlYTc0OWFhMmQxZjZkZDBhYjQzZGE3ODIuLjEy
YmM3NmJjMGJiZTczZjU1ODc2MDQ1N2EyNTE3NmM3YmM5ZDllOWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvRGF0ZVRpbWVJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRGF0ZVRpbWVJbnB1dFR5cGUuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAi
RGF0ZUNvbXBvbmVudHMuaCIKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUg
PHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKQEAgLTQz
LDkgKzQ0LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5h
bWVzOwogCi1zdGF0aWMgY29uc3QgZG91YmxlIGRhdGVUaW1lRGVmYXVsdFN0ZXAgPSA2MC4wOwot
c3RhdGljIGNvbnN0IGRvdWJsZSBkYXRlVGltZURlZmF1bHRTdGVwQmFzZSA9IDAuMDsKLXN0YXRp
YyBjb25zdCBkb3VibGUgZGF0ZVRpbWVTdGVwU2NhbGVGYWN0b3IgPSAxMDAwLjA7CitzdGF0aWMg
Y29uc3QgaW50IGRhdGVUaW1lRGVmYXVsdFN0ZXAgPSA2MDsKK3N0YXRpYyBjb25zdCBpbnQgZGF0
ZVRpbWVEZWZhdWx0U3RlcEJhc2UgPSAwOworc3RhdGljIGNvbnN0IGludCBkYXRlVGltZVN0ZXBT
Y2FsZUZhY3RvciA9IDEwMDA7CiAKIFBhc3NPd25QdHI8SW5wdXRUeXBlPiBEYXRlVGltZUlucHV0
VHlwZTo6Y3JlYXRlKEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQpCiB7CkBAIC02MiwxOSArNjMs
MTkgQEAgRGF0ZUNvbXBvbmVudHM6OlR5cGUgRGF0ZVRpbWVJbnB1dFR5cGU6OmRhdGVUeXBlKCkg
Y29uc3QKICAgICByZXR1cm4gRGF0ZUNvbXBvbmVudHM6OkRhdGVUaW1lOwogfQogCi1kb3VibGUg
RGF0ZVRpbWVJbnB1dFR5cGU6OmRlZmF1bHRWYWx1ZUZvclN0ZXBVcCgpIGNvbnN0CitEZWNpbWFs
IERhdGVUaW1lSW5wdXRUeXBlOjpkZWZhdWx0VmFsdWVGb3JTdGVwVXAoKSBjb25zdAogewotICAg
IHJldHVybiBjdXJyZW50VGltZU1TKCk7CisgICAgcmV0dXJuIGNvbnZlcnREb3VibGVUb0RlY2lt
YWwoY3VycmVudFRpbWVNUygpKTsKIH0KIAogU3RlcFJhbmdlIERhdGVUaW1lSW5wdXRUeXBlOjpj
cmVhdGVTdGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5nIGFueVN0ZXBIYW5kbGluZykgY29uc3QKIHsK
ICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0ZXBSYW5nZTo6U3RlcERlc2NyaXB0aW9u
LCBzdGVwRGVzY3JpcHRpb24sIChkYXRlVGltZURlZmF1bHRTdGVwLCBkYXRlVGltZURlZmF1bHRT
dGVwQmFzZSwgZGF0ZVRpbWVTdGVwU2NhbGVGYWN0b3IsIFN0ZXBSYW5nZTo6U2NhbGVkU3RlcFZh
bHVlU2hvdWxkQmVJbnRlZ2VyKSk7CiAKLSAgICBkb3VibGUgc3RlcEJhc2UgPSBwYXJzZVRvRG91
YmxlKGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShtaW5BdHRyKSwgMCk7Ci0gICAgZG91Ymxl
IG1pbmltdW0gPSBwYXJzZVRvRG91YmxlKGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShtaW5B
dHRyKSwgRGF0ZUNvbXBvbmVudHM6Om1pbmltdW1EYXRlVGltZSgpKTsKLSAgICBkb3VibGUgbWF4
aW11bSA9IHBhcnNlVG9Eb3VibGUoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1heEF0dHIp
LCBEYXRlQ29tcG9uZW50czo6bWF4aW11bURhdGVUaW1lKCkpOwotICAgIFN0ZXBSYW5nZTo6RG91
YmxlV2l0aERlY2ltYWxQbGFjZXNPck1pc3Npbmcgc3RlcCA9IFN0ZXBSYW5nZTo6cGFyc2VTdGVw
KGFueVN0ZXBIYW5kbGluZywgc3RlcERlc2NyaXB0aW9uLCBlbGVtZW50KCktPmZhc3RHZXRBdHRy
aWJ1dGUoc3RlcEF0dHIpKTsKKyAgICBjb25zdCBEZWNpbWFsIHN0ZXBCYXNlID0gcGFyc2VUb0Rl
Y2ltYWwoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpLCAwKTsKKyAgICBjb25z
dCBEZWNpbWFsIG1pbmltdW0gPSBwYXJzZVRvRGVjaW1hbChlbGVtZW50KCktPmZhc3RHZXRBdHRy
aWJ1dGUobWluQXR0ciksIGNvbnZlcnREb3VibGVUb0RlY2ltYWwoRGF0ZUNvbXBvbmVudHM6Om1p
bmltdW1EYXRlVGltZSgpKSk7CisgICAgY29uc3QgRGVjaW1hbCBtYXhpbXVtID0gcGFyc2VUb0Rl
Y2ltYWwoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1heEF0dHIpLCBjb252ZXJ0RG91Ymxl
VG9EZWNpbWFsKERhdGVDb21wb25lbnRzOjptYXhpbXVtRGF0ZVRpbWUoKSkpOworICAgIFN0ZXBS
YW5nZTo6RGVjaW1hbE9yTWlzc2luZyBzdGVwID0gU3RlcFJhbmdlOjpwYXJzZVN0ZXAoYW55U3Rl
cEhhbmRsaW5nLCBzdGVwRGVzY3JpcHRpb24sIGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShz
dGVwQXR0cikpOwogICAgIHJldHVybiBTdGVwUmFuZ2Uoc3RlcEJhc2UsIG1pbmltdW0sIG1heGlt
dW0sIHN0ZXAsIHN0ZXBEZXNjcmlwdGlvbik7CiB9CiAKQEAgLTg1LDEwICs4NiwxMCBAQCBib29s
IERhdGVUaW1lSW5wdXRUeXBlOjpwYXJzZVRvRGF0ZUNvbXBvbmVudHNJbnRlcm5hbChjb25zdCBV
Q2hhciogY2hhcmFjdGVycywgdQogICAgIHJldHVybiBvdXQtPnBhcnNlRGF0ZVRpbWUoY2hhcmFj
dGVycywgbGVuZ3RoLCAwLCBlbmQpICYmIGVuZCA9PSBsZW5ndGg7CiB9CiAKLWJvb2wgRGF0ZVRp
bWVJbnB1dFR5cGU6OnNldE1pbGxpc2Vjb25kVG9EYXRlQ29tcG9uZW50cyhkb3VibGUgdmFsdWUs
IERhdGVDb21wb25lbnRzKiBkYXRlKSBjb25zdAorYm9vbCBEYXRlVGltZUlucHV0VHlwZTo6c2V0
TWlsbGlzZWNvbmRUb0RhdGVDb21wb25lbnRzKGNvbnN0IERlY2ltYWwmIHZhbHVlLCBEYXRlQ29t
cG9uZW50cyogZGF0ZSkgY29uc3QKIHsKICAgICBBU1NFUlQoZGF0ZSk7Ci0gICAgcmV0dXJuIGRh
dGUtPnNldE1pbGxpc2Vjb25kc1NpbmNlRXBvY2hGb3JEYXRlVGltZSh2YWx1ZSk7CisgICAgcmV0
dXJuIGRhdGUtPnNldE1pbGxpc2Vjb25kc1NpbmNlRXBvY2hGb3JEYXRlVGltZShjb252ZXJ0RGVj
aW1hbFRvRG91YmxlKHZhbHVlKSk7CiB9CiAKIGJvb2wgRGF0ZVRpbWVJbnB1dFR5cGU6OmlzRGF0
ZVRpbWVGaWVsZCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVU
aW1lSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVUaW1lSW5wdXRUeXBlLmgK
aW5kZXggZTgwODg2ZjMyYWI5ZGU4NTQ0NGMxOGM4OTM1YTk3MWNkMGU0MjdlZS4uNmVlYzA4NmUw
YmIxYjZjNzE5MmEzNmVlMGNiM2YyYWNlODkzOGRlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9EYXRlVGltZUlucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0
ZVRpbWVJbnB1dFR5cGUuaApAQCAtNDYsOSArNDYsOSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwg
Y29uc3QgQXRvbWljU3RyaW5nJiBmb3JtQ29udHJvbFR5cGUoKSBjb25zdCBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIERhdGVDb21wb25lbnRzOjpUeXBlIGRhdGVUeXBlKCkgY29uc3QgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCBTdGVwUmFuZ2UgY3JlYXRlU3RlcFJhbmdlKEFueVN0ZXBIYW5kbGluZykg
Y29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBkb3VibGUgZGVmYXVsdFZhbHVlRm9yU3RlcFVw
KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBEZWNpbWFsIGRlZmF1bHRWYWx1ZUZvclN0
ZXBVcCgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBwYXJzZVRvRGF0ZUNvbXBv
bmVudHNJbnRlcm5hbChjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCwgRGF0ZUNvbXBvbmVu
dHMqKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgc2V0TWlsbGlzZWNvbmRUb0Rh
dGVDb21wb25lbnRzKGRvdWJsZSwgRGF0ZUNvbXBvbmVudHMqKSBjb25zdCBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIGJvb2wgc2V0TWlsbGlzZWNvbmRUb0RhdGVDb21wb25lbnRzKGNvbnN0IERlY2lt
YWwmLCBEYXRlQ29tcG9uZW50cyopIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBp
c0RhdGVUaW1lRmllbGQoKSBjb25zdCBPVkVSUklERTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvRGF0ZVRpbWVMb2NhbElucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0RhdGVUaW1lTG9jYWxJbnB1dFR5cGUuY3BwCmluZGV4IGI2NTcwNTBlZGNhYTAyZjIz
MDk1MWEzYjgzYjczNTRmYTc2MTVlNDMuLjNhY2U1NWJjYzljNTc2OGVkOGNmZjFhNmY0MTI3MjRh
ODc5YTcwMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZVRpbWVMb2NhbElu
cHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlVGltZUxvY2FsSW5wdXRU
eXBlLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkRhdGVDb21wb25lbnRzLmgiCiAj
aW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2lu
Y2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgog
CiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfREFURVRJTUVMT0NBTCkKQEAgLTQyLDkgKzQzLDkgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1zdGF0
aWMgY29uc3QgZG91YmxlIGRhdGVUaW1lTG9jYWxEZWZhdWx0U3RlcCA9IDYwLjA7Ci1zdGF0aWMg
Y29uc3QgZG91YmxlIGRhdGVUaW1lTG9jYWxEZWZhdWx0U3RlcEJhc2UgPSAwLjA7Ci1zdGF0aWMg
Y29uc3QgZG91YmxlIGRhdGVUaW1lTG9jYWxTdGVwU2NhbGVGYWN0b3IgPSAxMDAwLjA7CitzdGF0
aWMgY29uc3QgaW50IGRhdGVUaW1lTG9jYWxEZWZhdWx0U3RlcCA9IDYwOworc3RhdGljIGNvbnN0
IGludCBkYXRlVGltZUxvY2FsRGVmYXVsdFN0ZXBCYXNlID0gMDsKK3N0YXRpYyBjb25zdCBpbnQg
ZGF0ZVRpbWVMb2NhbFN0ZXBTY2FsZUZhY3RvciA9IDEwMDA7CiAKIFBhc3NPd25QdHI8SW5wdXRU
eXBlPiBEYXRlVGltZUxvY2FsSW5wdXRUeXBlOjpjcmVhdGUoSFRNTElucHV0RWxlbWVudCogZWxl
bWVudCkKIHsKQEAgLTc3LDEwICs3OCwxMCBAQCBTdGVwUmFuZ2UgRGF0ZVRpbWVMb2NhbElucHV0
VHlwZTo6Y3JlYXRlU3RlcFJhbmdlKEFueVN0ZXBIYW5kbGluZyBhbnlTdGVwSGFuZGxpbgogewog
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RlcFJhbmdlOjpTdGVwRGVzY3JpcHRpb24s
IHN0ZXBEZXNjcmlwdGlvbiwgKGRhdGVUaW1lTG9jYWxEZWZhdWx0U3RlcCwgZGF0ZVRpbWVMb2Nh
bERlZmF1bHRTdGVwQmFzZSwgZGF0ZVRpbWVMb2NhbFN0ZXBTY2FsZUZhY3RvciwgU3RlcFJhbmdl
OjpTY2FsZWRTdGVwVmFsdWVTaG91bGRCZUludGVnZXIpKTsKIAotICAgIGRvdWJsZSBzdGVwQmFz
ZSA9IHBhcnNlVG9Eb3VibGUoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpLCAw
KTsKLSAgICBkb3VibGUgbWluaW11bSA9IHBhcnNlVG9Eb3VibGUoZWxlbWVudCgpLT5mYXN0R2V0
QXR0cmlidXRlKG1pbkF0dHIpLCBEYXRlQ29tcG9uZW50czo6bWluaW11bURhdGVUaW1lKCkpOwot
ICAgIGRvdWJsZSBtYXhpbXVtID0gcGFyc2VUb0RvdWJsZShlbGVtZW50KCktPmZhc3RHZXRBdHRy
aWJ1dGUobWF4QXR0ciksIERhdGVDb21wb25lbnRzOjptYXhpbXVtRGF0ZVRpbWUoKSk7Ci0gICAg
U3RlcFJhbmdlOjpEb3VibGVXaXRoRGVjaW1hbFBsYWNlc09yTWlzc2luZyBzdGVwID0gU3RlcFJh
bmdlOjpwYXJzZVN0ZXAoYW55U3RlcEhhbmRsaW5nLCBzdGVwRGVzY3JpcHRpb24sIGVsZW1lbnQo
KS0+ZmFzdEdldEF0dHJpYnV0ZShzdGVwQXR0cikpOworICAgIGNvbnN0IERlY2ltYWwgc3RlcEJh
c2UgPSBwYXJzZVRvRGVjaW1hbChlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUobWluQXR0ciks
IDApOworICAgIGNvbnN0IERlY2ltYWwgbWluaW11bSA9IHBhcnNlVG9EZWNpbWFsKGVsZW1lbnQo
KS0+ZmFzdEdldEF0dHJpYnV0ZShtaW5BdHRyKSwgY29udmVydERvdWJsZVRvRGVjaW1hbChEYXRl
Q29tcG9uZW50czo6bWluaW11bURhdGVUaW1lKCkpKTsKKyAgICBjb25zdCBEZWNpbWFsIG1heGlt
dW0gPSBwYXJzZVRvRGVjaW1hbChlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUobWF4QXR0ciks
IGNvbnZlcnREb3VibGVUb0RlY2ltYWwoRGF0ZUNvbXBvbmVudHM6Om1heGltdW1EYXRlVGltZSgp
KSk7CisgICAgY29uc3QgU3RlcFJhbmdlOjpEZWNpbWFsT3JNaXNzaW5nIHN0ZXAgPSBTdGVwUmFu
Z2U6OnBhcnNlU3RlcChhbnlTdGVwSGFuZGxpbmcsIHN0ZXBEZXNjcmlwdGlvbiwgZWxlbWVudCgp
LT5mYXN0R2V0QXR0cmlidXRlKHN0ZXBBdHRyKSk7CiAgICAgcmV0dXJuIFN0ZXBSYW5nZShzdGVw
QmFzZSwgbWluaW11bSwgbWF4aW11bSwgc3RlcCwgc3RlcERlc2NyaXB0aW9uKTsKIH0KIApAQCAt
OTEsMTAgKzkyLDEwIEBAIGJvb2wgRGF0ZVRpbWVMb2NhbElucHV0VHlwZTo6cGFyc2VUb0RhdGVD
b21wb25lbnRzSW50ZXJuYWwoY29uc3QgVUNoYXIqIGNoYXJhY3RlCiAgICAgcmV0dXJuIG91dC0+
cGFyc2VEYXRlVGltZUxvY2FsKGNoYXJhY3RlcnMsIGxlbmd0aCwgMCwgZW5kKSAmJiBlbmQgPT0g
bGVuZ3RoOwogfQogCi1ib29sIERhdGVUaW1lTG9jYWxJbnB1dFR5cGU6OnNldE1pbGxpc2Vjb25k
VG9EYXRlQ29tcG9uZW50cyhkb3VibGUgdmFsdWUsIERhdGVDb21wb25lbnRzKiBkYXRlKSBjb25z
dAorYm9vbCBEYXRlVGltZUxvY2FsSW5wdXRUeXBlOjpzZXRNaWxsaXNlY29uZFRvRGF0ZUNvbXBv
bmVudHMoY29uc3QgRGVjaW1hbCYgdmFsdWUsIERhdGVDb21wb25lbnRzKiBkYXRlKSBjb25zdAog
ewogICAgIEFTU0VSVChkYXRlKTsKLSAgICByZXR1cm4gZGF0ZS0+c2V0TWlsbGlzZWNvbmRzU2lu
Y2VFcG9jaEZvckRhdGVUaW1lTG9jYWwodmFsdWUpOworICAgIHJldHVybiBkYXRlLT5zZXRNaWxs
aXNlY29uZHNTaW5jZUVwb2NoRm9yRGF0ZVRpbWVMb2NhbChjb252ZXJ0RGVjaW1hbFRvRG91Ymxl
KHZhbHVlKSk7CiB9CiAKIGJvb2wgRGF0ZVRpbWVMb2NhbElucHV0VHlwZTo6aXNEYXRlVGltZUxv
Y2FsRmllbGQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlVGlt
ZUxvY2FsSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVUaW1lTG9jYWxJbnB1
dFR5cGUuaAppbmRleCBjYTQwYjM3NzRkODI4ZGY0NDNmYzJlYjkwYTgxZGYxZGJkOTNkYzIzLi43
NjY1YThlY2IyNmViYTllZWJiYzVkN2Y1OGNhZDljNWRjYzA1NGNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0RhdGVUaW1lTG9jYWxJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0RhdGVUaW1lTG9jYWxJbnB1dFR5cGUuaApAQCAtNDksNyArNDksNyBAQCBwcml2
YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZUFzRGF0ZShkb3VibGUsIEV4Y2VwdGlvbkNv
ZGUmKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIFN0ZXBSYW5nZSBjcmVhdGVTdGVwUmFu
Z2UoQW55U3RlcEhhbmRsaW5nKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgcGFyc2VUb0RhdGVD
b21wb25lbnRzSW50ZXJuYWwoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgsIERhdGVDb21w
b25lbnRzKikgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIHNldE1pbGxpc2Vjb25k
VG9EYXRlQ29tcG9uZW50cyhkb3VibGUsIERhdGVDb21wb25lbnRzKikgY29uc3QgT1ZFUlJJREU7
CisgICAgdmlydHVhbCBib29sIHNldE1pbGxpc2Vjb25kVG9EYXRlQ29tcG9uZW50cyhjb25zdCBE
ZWNpbWFsJiwgRGF0ZUNvbXBvbmVudHMqKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJv
b2wgaXNEYXRlVGltZUxvY2FsRmllbGQoKSBjb25zdCBPVkVSUklERTsKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IDkyNDhmMGJjMjc5MmRhMzZjODZm
NTJjNWFmZGEzYmMyOGFiMjkxODAuLmNjZmUzOGJlMjk5MDBkMDcyYTJhNGE0MmNmY2ZhOTdlMDYz
NWIzN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApAQCAtMjcz
LDcgKzI3Myw3IEBAIGJvb2wgSFRNTElucHV0RWxlbWVudDo6c3RlcE1pc21hdGNoKCkgY29uc3QK
ICAgICByZXR1cm4gd2lsbFZhbGlkYXRlKCkgJiYgbV9pbnB1dFR5cGUtPnN0ZXBNaXNtYXRjaCh2
YWx1ZSgpKTsKIH0KIAotYm9vbCBIVE1MSW5wdXRFbGVtZW50OjpnZXRBbGxvd2VkVmFsdWVTdGVw
KGRvdWJsZSogc3RlcCkgY29uc3QKK2Jvb2wgSFRNTElucHV0RWxlbWVudDo6Z2V0QWxsb3dlZFZh
bHVlU3RlcChEZWNpbWFsKiBzdGVwKSBjb25zdAogewogICAgIHJldHVybiBtX2lucHV0VHlwZS0+
Z2V0QWxsb3dlZFZhbHVlU3RlcChzdGVwKTsKIH0KQEAgLTk2MSw2ICs5NjEsMTUgQEAgdm9pZCBI
VE1MSW5wdXRFbGVtZW50OjpzZXRWYWx1ZUFzTnVtYmVyKGRvdWJsZSBuZXdWYWx1ZSwgRXhjZXB0
aW9uQ29kZSYgZWMsIFRleHQKICAgICBtX2lucHV0VHlwZS0+c2V0VmFsdWVBc051bWJlcihuZXdW
YWx1ZSwgZXZlbnRCZWhhdmlvciwgZWMpOwogfQogCit2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnNl
dFZhbHVlQXNOdW1iZXIoY29uc3QgRGVjaW1hbCYgbmV3VmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVj
LCBUZXh0RmllbGRFdmVudEJlaGF2aW9yIGV2ZW50QmVoYXZpb3IpCit7CisgICAgaWYgKCFuZXdW
YWx1ZS5pc0Zpbml0ZSgpKSB7CisgICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgbV9pbnB1dFR5cGUtPnNldFZhbHVlQXNOdW1iZXIobmV3
VmFsdWUsIGV2ZW50QmVoYXZpb3IsIGVjKTsKK30KKwogU3RyaW5nIEhUTUxJbnB1dEVsZW1lbnQ6
OnBsYWNlaG9sZGVyKCkgY29uc3QKIHsKICAgICByZXR1cm4gZmFzdEdldEF0dHJpYnV0ZShwbGFj
ZWhvbGRlckF0dHIpLnN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSW5wdXRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQu
aAppbmRleCA5NzU2ZTRmYzQwOTcwM2VjYmYzNzdjYzAyMTVmYzFkMDA2Yjk5ZWFlLi5lMDJlOTBi
NWQ0Njk0Yzg1NGViZjg1ZTM3MDhjMWEyMDhhMzg1NTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxJbnB1dEVsZW1lbnQuaApAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgZG91YmxlIG1h
eGltdW0oKSBjb25zdDsKICAgICAvLyBTZXRzIHRoZSAiYWxsb3dlZCB2YWx1ZSBzdGVwIiBkZWZp
bmVkIGluIHRoZSBIVE1MIHNwZWMgdG8gdGhlIHNwZWNpZmllZCBkb3VibGUgcG9pbnRlci4KICAg
ICAvLyBSZXR1cm5zIGZhbHNlIGlmIHRoZXJlIGlzIG5vICJhbGxvd2VkIHZhbHVlIHN0ZXAuIgot
ICAgIGJvb2wgZ2V0QWxsb3dlZFZhbHVlU3RlcChkb3VibGUqKSBjb25zdDsKKyAgICBib29sIGdl
dEFsbG93ZWRWYWx1ZVN0ZXAoRGVjaW1hbCopIGNvbnN0OwogICAgIFN0ZXBSYW5nZSBjcmVhdGVT
dGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5nKSBjb25zdDsKIAogICAgIC8vIEltcGxlbWVudGF0aW9u
cyBvZiBIVE1MSW5wdXRFbGVtZW50OjpzdGVwVXAoKSBhbmQgc3RlcERvd24oKS4KQEAgLTE2Nyw2
ICsxNjcsNyBAQCBwdWJsaWM6CiAKICAgICBkb3VibGUgdmFsdWVBc051bWJlcigpIGNvbnN0Owog
ICAgIHZvaWQgc2V0VmFsdWVBc051bWJlcihkb3VibGUsIEV4Y2VwdGlvbkNvZGUmLCBUZXh0Rmll
bGRFdmVudEJlaGF2aW9yID0gRGlzcGF0Y2hOb0V2ZW50KTsKKyAgICB2b2lkIHNldFZhbHVlQXNO
dW1iZXIoY29uc3QgRGVjaW1hbCYsIEV4Y2VwdGlvbkNvZGUmLCBUZXh0RmllbGRFdmVudEJlaGF2
aW9yID0gRGlzcGF0Y2hOb0V2ZW50KTsKIAogICAgIHZpcnR1YWwgU3RyaW5nIHBsYWNlaG9sZGVy
KCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHNldFBsYWNlaG9sZGVyKGNvbnN0IFN0cmluZyYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCmluZGV4IGU5MTk2MGQ0MGVmZmFmOTEwNTU3OGM4
M2IwNmY3YzNjODdjNTRjNGEuLmQzODVkZmE2NGQ5NzI1MmRlZTMyYWJkYTBmOWQwYTk1MDhkMThh
NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKQEAgLTIxMCw3ICsyMTAsMTIgQEAgZG91
YmxlIElucHV0VHlwZTo6dmFsdWVBc051bWJlcigpIGNvbnN0CiAgICAgcmV0dXJuIG51bWVyaWNf
bGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpOwogfQogCi12b2lkIElucHV0VHlwZTo6c2V0VmFs
dWVBc051bWJlcihkb3VibGUsIFRleHRGaWVsZEV2ZW50QmVoYXZpb3IsIEV4Y2VwdGlvbkNvZGUm
IGVjKSBjb25zdAordm9pZCBJbnB1dFR5cGU6OnNldFZhbHVlQXNOdW1iZXIoZG91YmxlIG5ld1Zh
bHVlLCBUZXh0RmllbGRFdmVudEJlaGF2aW9yIGV2ZW50QmVoYXZpb3IsIEV4Y2VwdGlvbkNvZGUm
IGVjKSBjb25zdAoreworICAgIHNldFZhbHVlQXNOdW1iZXIoY29udmVydERvdWJsZVRvRGVjaW1h
bChuZXdWYWx1ZSksIGV2ZW50QmVoYXZpb3IsIGVjKTsKK30KKwordm9pZCBJbnB1dFR5cGU6OnNl
dFZhbHVlQXNOdW1iZXIoY29uc3QgRGVjaW1hbCYsIFRleHRGaWVsZEV2ZW50QmVoYXZpb3IsIEV4
Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogewogICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CiB9
CkBAIC0yNTEsMTEgKzI1Niw4IEBAIGJvb2wgSW5wdXRUeXBlOjpyYW5nZVVuZGVyZmxvdyhjb25z
dCBTdHJpbmcmIHZhbHVlKSBjb25zdAogICAgIGlmICghaXNTdGVwcGFibGUoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgZG91YmxlIGRvdWJsZVZhbHVlID0gcGFyc2VUb0RvdWJsZSh2
YWx1ZSwgbnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCkpOwotICAgIGlmIChpc25h
bihkb3VibGVWYWx1ZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBkb3Vi
bGVWYWx1ZSA8IGNyZWF0ZVN0ZXBSYW5nZShSZWplY3RBbnkpLm1pbmltdW0oKTsKKyAgICBjb25z
dCBEZWNpbWFsIG51bWVyaWNWYWx1ZSA9IHBhcnNlVG9EZWNpbWFsKHZhbHVlKTsKKyAgICByZXR1
cm4gbnVtZXJpY1ZhbHVlLmlzRmluaXRlKCkgJiYgbnVtZXJpY1ZhbHVlIDwgY3JlYXRlU3RlcFJh
bmdlKFJlamVjdEFueSkubWluaW11bSgpOwogfQogCiBib29sIElucHV0VHlwZTo6cmFuZ2VPdmVy
Zmxvdyhjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdApAQCAtMjYzLDI2ICsyNjUsMjMgQEAgYm9v
bCBJbnB1dFR5cGU6OnJhbmdlT3ZlcmZsb3coY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKICAg
ICBpZiAoIWlzU3RlcHBhYmxlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGRvdWJs
ZSBkb3VibGVWYWx1ZSA9IHBhcnNlVG9Eb3VibGUodmFsdWUsIG51bWVyaWNfbGltaXRzPGRvdWJs
ZT46OnF1aWV0X05hTigpKTsKLSAgICBpZiAoaXNuYW4oZG91YmxlVmFsdWUpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gZG91YmxlVmFsdWUgPiBjcmVhdGVTdGVwUmFuZ2Uo
UmVqZWN0QW55KS5tYXhpbXVtKCk7CisgICAgY29uc3QgRGVjaW1hbCBudW1lcmljVmFsdWUgPSBw
YXJzZVRvRGVjaW1hbCh2YWx1ZSk7CisgICAgcmV0dXJuIG51bWVyaWNWYWx1ZS5pc0Zpbml0ZSgp
ICYmIG51bWVyaWNWYWx1ZSA+IGNyZWF0ZVN0ZXBSYW5nZShSZWplY3RBbnkpLm1heGltdW0oKTsK
IH0KIAotZG91YmxlIElucHV0VHlwZTo6ZGVmYXVsdFZhbHVlRm9yU3RlcFVwKCkgY29uc3QKK0Rl
Y2ltYWwgSW5wdXRUeXBlOjpkZWZhdWx0VmFsdWVGb3JTdGVwVXAoKSBjb25zdAogewogICAgIHJl
dHVybiAwOwogfQogCiBkb3VibGUgSW5wdXRUeXBlOjptaW5pbXVtKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gY3JlYXRlU3RlcFJhbmdlKFJlamVjdEFueSkubWluaW11bSgpOworICAgIHJldHVybiBj
b252ZXJ0RGVjaW1hbFRvRG91YmxlKGNyZWF0ZVN0ZXBSYW5nZShSZWplY3RBbnkpLm1pbmltdW0o
KSk7CiB9CiAKIGRvdWJsZSBJbnB1dFR5cGU6Om1heGltdW0oKSBjb25zdAogewotICAgIHJldHVy
biBjcmVhdGVTdGVwUmFuZ2UoUmVqZWN0QW55KS5tYXhpbXVtKCk7CisgICAgcmV0dXJuIGNvbnZl
cnREZWNpbWFsVG9Eb3VibGUoY3JlYXRlU3RlcFJhbmdlKFJlamVjdEFueSkubWF4aW11bSgpKTsK
IH0KIAogYm9vbCBJbnB1dFR5cGU6OnNpemVTaG91bGRJbmNsdWRlRGVjb3JhdGlvbihpbnQsIGlu
dCYgcHJlZmVycmVkU2l6ZSkgY29uc3QKQEAgLTI5NiwxMiArMjk1LDEyIEBAIGJvb2wgSW5wdXRU
eXBlOjppc0luUmFuZ2UoY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKICAgICBpZiAoIWlzU3Rl
cHBhYmxlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGRvdWJsZSBkb3VibGVWYWx1
ZSA9IHBhcnNlVG9Eb3VibGUodmFsdWUsIG51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05h
TigpKTsKLSAgICBpZiAoaXNuYW4oZG91YmxlVmFsdWUpKQorICAgIGNvbnN0IERlY2ltYWwmIG51
bWVyaWNWYWx1ZSA9IHBhcnNlVG9EZWNpbWFsKHZhbHVlKTsKKyAgICBpZiAoIW51bWVyaWNWYWx1
ZS5pc0Zpbml0ZSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIFN0ZXBSYW5nZSBzdGVw
UmFuZ2UoY3JlYXRlU3RlcFJhbmdlKFJlamVjdEFueSkpOwotICAgIHJldHVybiBkb3VibGVWYWx1
ZSA+PSBzdGVwUmFuZ2UubWluaW11bSgpICYmIGRvdWJsZVZhbHVlIDw9IHN0ZXBSYW5nZS5tYXhp
bXVtKCk7CisgICAgY29uc3QgU3RlcFJhbmdlIHN0ZXBSYW5nZShjcmVhdGVTdGVwUmFuZ2UoUmVq
ZWN0QW55KSk7CisgICAgcmV0dXJuIG51bWVyaWNWYWx1ZSA+PSBzdGVwUmFuZ2UubWluaW11bSgp
ICYmIG51bWVyaWNWYWx1ZSA8PSBzdGVwUmFuZ2UubWF4aW11bSgpOwogfQogCiBib29sIElucHV0
VHlwZTo6aXNPdXRPZlJhbmdlKGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0CkBAIC0zMDksMTIg
KzMwOCwxMiBAQCBib29sIElucHV0VHlwZTo6aXNPdXRPZlJhbmdlKGNvbnN0IFN0cmluZyYgdmFs
dWUpIGNvbnN0CiAgICAgaWYgKCFpc1N0ZXBwYWJsZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBkb3VibGUgZG91YmxlVmFsdWUgPSBwYXJzZVRvRG91YmxlKHZhbHVlLCBudW1lcmlj
X2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKSk7Ci0gICAgaWYgKGlzbmFuKGRvdWJsZVZhbHVl
KSkKKyAgICBjb25zdCBEZWNpbWFsJiBudW1lcmljVmFsdWUgPSBwYXJzZVRvRGVjaW1hbCh2YWx1
ZSk7CisgICAgaWYgKCFudW1lcmljVmFsdWUuaXNGaW5pdGUoKSkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKLSAgICBTdGVwUmFuZ2Ugc3RlcFJhbmdlKGNyZWF0ZVN0ZXBSYW5nZShSZWplY3RBbnkp
KTsKLSAgICByZXR1cm4gZG91YmxlVmFsdWUgPCBzdGVwUmFuZ2UubWluaW11bSgpIHx8IGRvdWJs
ZVZhbHVlID4gc3RlcFJhbmdlLm1heGltdW0oKTsKKyAgICBjb25zdCBTdGVwUmFuZ2Ugc3RlcFJh
bmdlKGNyZWF0ZVN0ZXBSYW5nZShSZWplY3RBbnkpKTsKKyAgICByZXR1cm4gbnVtZXJpY1ZhbHVl
IDwgc3RlcFJhbmdlLm1pbmltdW0oKSB8fCBudW1lcmljVmFsdWUgPiBzdGVwUmFuZ2UubWF4aW11
bSgpOwogfQogCiBib29sIElucHV0VHlwZTo6c3RlcE1pc21hdGNoKGNvbnN0IFN0cmluZyYgdmFs
dWUpIGNvbnN0CkBAIC0zMjIsMTEgKzMyMSwxMSBAQCBib29sIElucHV0VHlwZTo6c3RlcE1pc21h
dGNoKGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0CiAgICAgaWYgKCFpc1N0ZXBwYWJsZSgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBkb3VibGUgZG91YmxlVmFsdWUgPSBwYXJzZVRv
RG91YmxlKHZhbHVlLCBudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKSk7Ci0gICAg
aWYgKGlzbmFuKGRvdWJsZVZhbHVlKSkKKyAgICBjb25zdCBEZWNpbWFsJiBudW1lcmljVmFsdWUg
PSBwYXJzZVRvRGVjaW1hbCh2YWx1ZSk7CisgICAgaWYgKCFudW1lcmljVmFsdWUuaXNGaW5pdGUo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIGNyZWF0ZVN0ZXBSYW5nZShS
ZWplY3RBbnkpLnN0ZXBNaXNtYXRjaChkb3VibGVWYWx1ZSk7CisgICAgcmV0dXJuIGNyZWF0ZVN0
ZXBSYW5nZShSZWplY3RBbnkpLnN0ZXBNaXNtYXRjaChudW1lcmljVmFsdWUpOwogfQogCiBTdHJp
bmcgSW5wdXRUeXBlOjp0eXBlTWlzbWF0Y2hUZXh0KCkgY29uc3QKQEAgLTM2MCwyMSArMzU5LDIx
IEBAIFN0cmluZyBJbnB1dFR5cGU6OnZhbGlkYXRpb25NZXNzYWdlKCkgY29uc3QKICAgICBpZiAo
IWlzU3RlcHBhYmxlKCkpCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCi0gICAgZG91
YmxlIGRvdWJsZVZhbHVlID0gcGFyc2VUb0RvdWJsZSh2YWx1ZSwgbnVtZXJpY19saW1pdHM8ZG91
YmxlPjo6cXVpZXRfTmFOKCkpOwotICAgIGlmIChpc25hbihkb3VibGVWYWx1ZSkpCisgICAgY29u
c3QgRGVjaW1hbCYgbnVtZXJpY1ZhbHVlID0gcGFyc2VUb0RlY2ltYWwodmFsdWUpOworICAgIGlm
ICghbnVtZXJpY1ZhbHVlLmlzRmluaXRlKCkpCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygp
OwogCi0gICAgU3RlcFJhbmdlIHN0ZXBSYW5nZShjcmVhdGVTdGVwUmFuZ2UoUmVqZWN0QW55KSk7
CisgICAgY29uc3QgU3RlcFJhbmdlIHN0ZXBSYW5nZShjcmVhdGVTdGVwUmFuZ2UoUmVqZWN0QW55
KSk7CiAKLSAgICBpZiAoZG91YmxlVmFsdWUgPCBzdGVwUmFuZ2UubWluaW11bSgpKQorICAgIGlm
IChudW1lcmljVmFsdWUgPCBzdGVwUmFuZ2UubWluaW11bSgpKQogICAgICAgICByZXR1cm4gdmFs
aWRhdGlvbk1lc3NhZ2VSYW5nZVVuZGVyZmxvd1RleHQoc2VyaWFsaXplKHN0ZXBSYW5nZS5taW5p
bXVtKCkpKTsKIAotICAgIGlmIChkb3VibGVWYWx1ZSA8IHN0ZXBSYW5nZS5tYXhpbXVtKCkpCisg
ICAgaWYgKG51bWVyaWNWYWx1ZSA8IHN0ZXBSYW5nZS5tYXhpbXVtKCkpCiAgICAgICAgIHJldHVy
biB2YWxpZGF0aW9uTWVzc2FnZVJhbmdlT3ZlcmZsb3dUZXh0KHNlcmlhbGl6ZShzdGVwUmFuZ2Uu
bWF4aW11bSgpKSk7CiAKLSAgICBpZiAoc3RlcFJhbmdlLnN0ZXBNaXNtYXRjaChkb3VibGVWYWx1
ZSkpIHsKKyAgICBpZiAoc3RlcFJhbmdlLnN0ZXBNaXNtYXRjaChudW1lcmljVmFsdWUpKSB7CiAg
ICAgICAgIGNvbnN0IFN0cmluZyBzdGVwU3RyaW5nID0gc3RlcFJhbmdlLmhhc1N0ZXAoKSA/IHNl
cmlhbGl6ZUZvck51bWJlclR5cGUoc3RlcFJhbmdlLnN0ZXAoKSAvIHN0ZXBSYW5nZS5zdGVwU2Nh
bGVGYWN0b3IoKSkgOiBlbXB0eVN0cmluZygpOwotICAgICAgICByZXR1cm4gdmFsaWRhdGlvbk1l
c3NhZ2VTdGVwTWlzbWF0Y2hUZXh0KHNlcmlhbGl6ZShzdGVwUmFuZ2Uuc3RlcEJhc2UoKSksIHN0
ZXBTdHJpbmcpOworICAgICAgICByZXR1cm4gdmFsaWRhdGlvbk1lc3NhZ2VTdGVwTWlzbWF0Y2hU
ZXh0KHNlcmlhbGl6ZUZvck51bWJlclR5cGUoc3RlcFJhbmdlLnN0ZXBCYXNlKCkpLCBzdGVwU3Ry
aW5nKTsKICAgICB9CiAKICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKQEAgLTQ1MywxNyArNDUy
LDE1IEBAIHZvaWQgSW5wdXRUeXBlOjpkZXN0cm95U2hhZG93U3VidHJlZSgpCiAgICAgfQogfQog
Ci1kb3VibGUgSW5wdXRUeXBlOjpwYXJzZVRvRG91YmxlKGNvbnN0IFN0cmluZyYsIGRvdWJsZSBk
ZWZhdWx0VmFsdWUpIGNvbnN0CitEZWNpbWFsIElucHV0VHlwZTo6cGFyc2VUb0RlY2ltYWwoY29u
c3QgU3RyaW5nJiwgY29uc3QgRGVjaW1hbCYgZGVmYXVsdFZhbHVlKSBjb25zdAogewogICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBkZWZhdWx0VmFsdWU7CiB9CiAKLWRvdWJs
ZSBJbnB1dFR5cGU6OnBhcnNlVG9Eb3VibGVXaXRoRGVjaW1hbFBsYWNlcyhjb25zdCBTdHJpbmcm
IHNyYywgZG91YmxlIGRlZmF1bHRWYWx1ZSwgdW5zaWduZWQgKmRlY2ltYWxQbGFjZXMpIGNvbnN0
CitEZWNpbWFsIElucHV0VHlwZTo6cGFyc2VUb0RlY2ltYWwoY29uc3QgU3RyaW5nJiBzdHJpbmcp
IGNvbnN0CiB7Ci0gICAgaWYgKGRlY2ltYWxQbGFjZXMpCi0gICAgICAgICpkZWNpbWFsUGxhY2Vz
ID0gMDsKLSAgICByZXR1cm4gcGFyc2VUb0RvdWJsZShzcmMsIGRlZmF1bHRWYWx1ZSk7CisgICAg
cmV0dXJuIHBhcnNlVG9EZWNpbWFsKHN0cmluZywgRGVjaW1hbDo6bmFuKCkpOwogfQogCiBib29s
IElucHV0VHlwZTo6cGFyc2VUb0RhdGVDb21wb25lbnRzKGNvbnN0IFN0cmluZyYsIERhdGVDb21w
b25lbnRzKikgY29uc3QKQEAgLTQ3Miw3ICs0NjksNyBAQCBib29sIElucHV0VHlwZTo6cGFyc2VU
b0RhdGVDb21wb25lbnRzKGNvbnN0IFN0cmluZyYsIERhdGVDb21wb25lbnRzKikgY29uc3QKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKLVN0cmluZyBJbnB1dFR5cGU6OnNlcmlhbGl6ZShkb3VibGUp
IGNvbnN0CitTdHJpbmcgSW5wdXRUeXBlOjpzZXJpYWxpemUoY29uc3QgRGVjaW1hbCYpIGNvbnN0
CiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIFN0cmluZygpOwpAQCAt
ODY4LDI4ICs4NjUsMjYgQEAgdW5zaWduZWQgSW5wdXRUeXBlOjp3aWR0aCgpIGNvbnN0CiAgICAg
cmV0dXJuIDA7CiB9CiAKLXZvaWQgSW5wdXRUeXBlOjphcHBseVN0ZXAoZG91YmxlIGNvdW50LCBB
bnlTdGVwSGFuZGxpbmcgYW55U3RlcEhhbmRsaW5nLCBUZXh0RmllbGRFdmVudEJlaGF2aW9yIGV2
ZW50QmVoYXZpb3IsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBJbnB1dFR5cGU6OmFwcGx5U3Rl
cChpbnQgY291bnQsIEFueVN0ZXBIYW5kbGluZyBhbnlTdGVwSGFuZGxpbmcsIFRleHRGaWVsZEV2
ZW50QmVoYXZpb3IgZXZlbnRCZWhhdmlvciwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgU3Rl
cFJhbmdlIHN0ZXBSYW5nZShjcmVhdGVTdGVwUmFuZ2UoYW55U3RlcEhhbmRsaW5nKSk7CisgICAg
Y29uc3QgU3RlcFJhbmdlIHN0ZXBSYW5nZShjcmVhdGVTdGVwUmFuZ2UoYW55U3RlcEhhbmRsaW5n
KSk7CiAgICAgaWYgKCFzdGVwUmFuZ2UuaGFzU3RlcCgpKSB7CiAgICAgICAgIGVjID0gSU5WQUxJ
RF9TVEFURV9FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBjb25zdCBkb3VibGUg
bmFuID0gbnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCk7Ci0gICAgdW5zaWduZWQg
Y3VycmVudERlY2ltYWxQbGFjZXM7Ci0gICAgZG91YmxlIGN1cnJlbnQgPSBwYXJzZVRvRG91Ymxl
V2l0aERlY2ltYWxQbGFjZXMoZWxlbWVudCgpLT52YWx1ZSgpLCBuYW4sICZjdXJyZW50RGVjaW1h
bFBsYWNlcyk7Ci0gICAgaWYgKCFpc2Zpbml0ZShjdXJyZW50KSkgeworICAgIGNvbnN0IERlY2lt
YWwgY3VycmVudCA9IHBhcnNlVG9EZWNpbWFsKGVsZW1lbnQoKS0+dmFsdWUoKSk7CisgICAgaWYg
KCFjdXJyZW50LmlzRmluaXRlKCkpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBkb3VibGUgbmV3VmFsdWUgPSBjdXJyZW50ICsg
c3RlcFJhbmdlLnN0ZXAoKSAqIGNvdW50OwotICAgIGlmIChpc2luZihuZXdWYWx1ZSkpIHsKKyAg
ICBEZWNpbWFsIG5ld1ZhbHVlID0gY3VycmVudCArIHN0ZXBSYW5nZS5zdGVwKCkgKiBjb3VudDsK
KyAgICBpZiAoIW5ld1ZhbHVlLmlzRmluaXRlKCkpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX1NU
QVRFX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGRvdWJsZSBhY2NlcHRhYmxl
RXJyb3JWYWx1ZSA9IHN0ZXBSYW5nZS5hY2NlcHRhYmxlRXJyb3IoKTsKKyAgICBjb25zdCBEZWNp
bWFsIGFjY2VwdGFibGVFcnJvclZhbHVlID0gc3RlcFJhbmdlLmFjY2VwdGFibGVFcnJvcigpOwog
ICAgIGlmIChuZXdWYWx1ZSAtIHN0ZXBSYW5nZS5taW5pbXVtKCkgPCAtYWNjZXB0YWJsZUVycm9y
VmFsdWUpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKICAgICAgICAgcmV0dXJu
OwpAQCAtODk5LDcgKzg5NCw3IEBAIHZvaWQgSW5wdXRUeXBlOjphcHBseVN0ZXAoZG91YmxlIGNv
dW50LCBBbnlTdGVwSGFuZGxpbmcgYW55U3RlcEhhbmRsaW5nLCBUZXh0RmllCiAKICAgICBjb25z
dCBBdG9taWNTdHJpbmcmIHN0ZXBTdHJpbmcgPSBlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUo
c3RlcEF0dHIpOwogICAgIGlmICghZXF1YWxJZ25vcmluZ0Nhc2Uoc3RlcFN0cmluZywgImFueSIp
KQotICAgICAgICBuZXdWYWx1ZSA9IHN0ZXBSYW5nZS5hbGlnblZhbHVlRm9yU3RlcChjdXJyZW50
LCBjdXJyZW50RGVjaW1hbFBsYWNlcywgbmV3VmFsdWUpOworICAgICAgICBuZXdWYWx1ZSA9IHN0
ZXBSYW5nZS5hbGlnblZhbHVlRm9yU3RlcChjdXJyZW50LCBuZXdWYWx1ZSk7CiAKICAgICBpZiAo
bmV3VmFsdWUgLSBzdGVwUmFuZ2UubWF4aW11bSgpID4gYWNjZXB0YWJsZUVycm9yVmFsdWUpIHsK
ICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKQEAgLTkxNCw3ICs5MDksNyBAQCB2b2lk
IElucHV0VHlwZTo6YXBwbHlTdGVwKGRvdWJsZSBjb3VudCwgQW55U3RlcEhhbmRsaW5nIGFueVN0
ZXBIYW5kbGluZywgVGV4dEZpZQogICAgICAgICAgZWxlbWVudCgpLT5kb2N1bWVudCgpLT5heE9i
amVjdENhY2hlKCktPnBvc3ROb3RpZmljYXRpb24oZWxlbWVudCgpLT5yZW5kZXJlcigpLCBBWE9i
amVjdENhY2hlOjpBWFZhbHVlQ2hhbmdlZCwgdHJ1ZSk7CiB9CiAKLWJvb2wgSW5wdXRUeXBlOjpn
ZXRBbGxvd2VkVmFsdWVTdGVwKGRvdWJsZSogc3RlcCkgY29uc3QKK2Jvb2wgSW5wdXRUeXBlOjpn
ZXRBbGxvd2VkVmFsdWVTdGVwKERlY2ltYWwqIHN0ZXApIGNvbnN0CiB7CiAgICAgU3RlcFJhbmdl
IHN0ZXBSYW5nZShjcmVhdGVTdGVwUmFuZ2UoUmVqZWN0QW55KSk7CiAgICAgKnN0ZXAgPSBzdGVw
UmFuZ2Uuc3RlcCgpOwpAQCAtOTgwLDE0ICs5NzUsMTQgQEAgdm9pZCBJbnB1dFR5cGU6OnN0ZXBV
cEZyb21SZW5kZXJlcihpbnQgbikKICAgICBpZiAoIW4pCiAgICAgICAgIHJldHVybjsKIAotICAg
IFN0ZXBSYW5nZSBzdGVwUmFuZ2UoY3JlYXRlU3RlcFJhbmdlKEFueUlzRGVmYXVsdFN0ZXApKTsK
KyAgICBjb25zdCBTdGVwUmFuZ2Ugc3RlcFJhbmdlKGNyZWF0ZVN0ZXBSYW5nZShBbnlJc0RlZmF1
bHRTdGVwKSk7CiAKICAgICAvLyBGSVhNRTogTm90IGFueSBjaGFuZ2VzIGFmdGVyIHN0ZXBwaW5n
LCBldmVuIGlmIGl0IGlzIGFuIGludmFsaWQgdmFsdWUsIG1heSBiZSBiZXR0ZXIuCiAgICAgLy8g
KGUuZy4gU3RlcHBpbmctdXAgZm9yIDxpbnB1dCB0eXBlPSJudW1iZXIiIHZhbHVlPSJmb28iIHN0
ZXA9ImFueSIgLz4gPT4gImZvbyIpCiAgICAgaWYgKCFzdGVwUmFuZ2UuaGFzU3RlcCgpKQogICAg
ICAgcmV0dXJuOwogCi0gICAgZG91YmxlIHN0ZXAgPSBzdGVwUmFuZ2Uuc3RlcCgpOworICAgIGNv
bnN0IERlY2ltYWwgc3RlcCA9IHN0ZXBSYW5nZS5zdGVwKCk7CiAKICAgICBpbnQgc2lnbjsKICAg
ICBpZiAoc3RlcCA+IDApCkBAIC05OTcsMTMgKzk5MiwxMSBAQCB2b2lkIElucHV0VHlwZTo6c3Rl
cFVwRnJvbVJlbmRlcmVyKGludCBuKQogICAgIGVsc2UKICAgICAgICAgc2lnbiA9IDA7CiAKLSAg
ICBjb25zdCBkb3VibGUgbmFuID0gbnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCk7
Ci0gICAgU3RyaW5nIGN1cnJlbnRTdHJpbmdWYWx1ZSA9IGVsZW1lbnQoKS0+dmFsdWUoKTsKLSAg
ICBkb3VibGUgY3VycmVudCA9IHBhcnNlVG9Eb3VibGUoY3VycmVudFN0cmluZ1ZhbHVlLCBuYW4p
OwotICAgIGlmICghaXNmaW5pdGUoY3VycmVudCkpIHsKKyAgICBEZWNpbWFsIGN1cnJlbnQgPSBw
YXJzZVRvRGVjaW1hbChlbGVtZW50KCktPnZhbHVlKCkpOworICAgIGlmICghY3VycmVudC5pc0Zp
bml0ZSgpKSB7CiAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWM7CiAgICAgICAgIGN1cnJlbnQgPSBk
ZWZhdWx0VmFsdWVGb3JTdGVwVXAoKTsKLSAgICAgICAgZG91YmxlIG5leHREaWZmID0gc3RlcCAq
IG47CisgICAgICAgIGNvbnN0IERlY2ltYWwgbmV4dERpZmYgPSBzdGVwICogbjsKICAgICAgICAg
aWYgKGN1cnJlbnQgPCBzdGVwUmFuZ2UubWluaW11bSgpIC0gbmV4dERpZmYpCiAgICAgICAgICAg
ICBjdXJyZW50ID0gc3RlcFJhbmdlLm1pbmltdW0oKSAtIG5leHREaWZmOwogICAgICAgICBpZiAo
Y3VycmVudCA+IHN0ZXBSYW5nZS5tYXhpbXVtKCkgLSBuZXh0RGlmZikKQEAgLTEwMTEsMTkgKzEw
MDQsMTcgQEAgdm9pZCBJbnB1dFR5cGU6OnN0ZXBVcEZyb21SZW5kZXJlcihpbnQgbikKICAgICAg
ICAgZWxlbWVudCgpLT5zZXRWYWx1ZUFzTnVtYmVyKGN1cnJlbnQsIGVjLCBEaXNwYXRjaElucHV0
QW5kQ2hhbmdlRXZlbnQpOwogICAgIH0KICAgICBpZiAoKHNpZ24gPiAwICYmIGN1cnJlbnQgPCBz
dGVwUmFuZ2UubWluaW11bSgpKSB8fCAoc2lnbiA8IDAgJiYgY3VycmVudCA+IHN0ZXBSYW5nZS5t
YXhpbXVtKCkpKQotICAgICAgICBlbGVtZW50KCktPnNldFZhbHVlKHNlcmlhbGl6ZShzaWduID4g
MCA/IHN0ZXBSYW5nZS5taW5pbXVtKCkgOiBzdGVwUmFuZ2UubWF4aW11bSgpKSwgRGlzcGF0Y2hJ
bnB1dEFuZENoYW5nZUV2ZW50KTsKKyAgICAgICAgZWxlbWVudCgpLT5zZXRWYWx1ZShzZXJpYWxp
emVGb3JOdW1iZXJUeXBlKHNpZ24gPiAwID8gc3RlcFJhbmdlLm1pbmltdW0oKSA6IHN0ZXBSYW5n
ZS5tYXhpbXVtKCkpLCBEaXNwYXRjaElucHV0QW5kQ2hhbmdlRXZlbnQpOwogICAgIGVsc2Ugewog
ICAgICAgICBFeGNlcHRpb25Db2RlIGVjOwogICAgICAgICBpZiAoc3RlcE1pc21hdGNoKGVsZW1l
bnQoKS0+dmFsdWUoKSkpIHsKLSAgICAgICAgICAgIEFTU0VSVChzdGVwKTsKLSAgICAgICAgICAg
IGRvdWJsZSBuZXdWYWx1ZTsKLSAgICAgICAgICAgIGRvdWJsZSBzY2FsZSA9IHBvdygxMC4wLCBz
dGF0aWNfY2FzdDxkb3VibGU+KG1heChzdGVwUmFuZ2Uuc3RlcERlY2ltYWxQbGFjZXMoKSwgc3Rl
cFJhbmdlLnN0ZXBCYXNlRGVjaW1hbFBsYWNlcygpKSkpOwotICAgICAgICAgICAgZG91YmxlIGJh
c2UgPSBzdGVwUmFuZ2Uuc3RlcEJhc2UoKTsKLQorICAgICAgICAgICAgQVNTRVJUKCFzdGVwLmlz
WmVybygpKTsKKyAgICAgICAgICAgIGNvbnN0IERlY2ltYWwgYmFzZSA9IHN0ZXBSYW5nZS5zdGVw
QmFzZSgpOworICAgICAgICAgICAgRGVjaW1hbCBuZXdWYWx1ZTsKICAgICAgICAgICAgIGlmIChz
aWduIDwgMCkKLSAgICAgICAgICAgICAgICBuZXdWYWx1ZSA9IHJvdW5kKChiYXNlICsgZmxvb3Io
KGN1cnJlbnQgLSBiYXNlKSAvIHN0ZXApICogc3RlcCkgKiBzY2FsZSkgLyBzY2FsZTsKKyAgICAg
ICAgICAgICAgICBuZXdWYWx1ZSA9IGJhc2UgKyAoKGN1cnJlbnQgLSBiYXNlKSAvIHN0ZXApLmZs
b29yKCkgKiBzdGVwOwogICAgICAgICAgICAgZWxzZSBpZiAoc2lnbiA+IDApCi0gICAgICAgICAg
ICAgICAgbmV3VmFsdWUgPSByb3VuZCgoYmFzZSArIGNlaWwoKGN1cnJlbnQgLSBiYXNlKSAvIHN0
ZXApICogc3RlcCkgKiBzY2FsZSkgLyBzY2FsZTsKKyAgICAgICAgICAgICAgICBuZXdWYWx1ZSA9
IGJhc2UgKyAoKGN1cnJlbnQgLSBiYXNlKSAvIHN0ZXApLmNlaWxpbmcoKSAqIHN0ZXA7CiAgICAg
ICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgbmV3VmFsdWUgPSBjdXJyZW50OwogCkBAIC0x
MDMzLDcgKzEwMjQsNiBAQCB2b2lkIElucHV0VHlwZTo6c3RlcFVwRnJvbVJlbmRlcmVyKGludCBu
KQogICAgICAgICAgICAgICAgIG5ld1ZhbHVlID0gc3RlcFJhbmdlLm1heGltdW0oKTsKIAogICAg
ICAgICAgICAgZWxlbWVudCgpLT5zZXRWYWx1ZUFzTnVtYmVyKG5ld1ZhbHVlLCBlYywgbiA9PSAx
IHx8IG4gPT0gLTEgPyBEaXNwYXRjaElucHV0QW5kQ2hhbmdlRXZlbnQgOiBEaXNwYXRjaE5vRXZl
bnQpOwotICAgICAgICAgICAgY3VycmVudCA9IG5ld1ZhbHVlOwogICAgICAgICAgICAgaWYgKG4g
PiAxKQogICAgICAgICAgICAgICAgIGFwcGx5U3RlcChuIC0gMSwgQW55SXNEZWZhdWx0U3RlcCwg
RGlzcGF0Y2hJbnB1dEFuZENoYW5nZUV2ZW50LCBlYyk7CiAgICAgICAgICAgICBlbHNlIGlmIChu
IDwgLTEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaAppbmRleCA4M2VmYmRlYmU5NjRlZTYwZjhhZmU3
M2I5NjY0MWRiZTVkMjY1ZWRlLi4xZTdkNWIzZTk0ZThjYWY0OWE1NGFmZTBhZGI1ZjM2MGJhMDYw
YjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgKQEAgLTEzOSw2ICsxMzksNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHNldFZhbHVlQXNEYXRlKGRvdWJsZSwgRXhjZXB0aW9uQ29kZSYp
IGNvbnN0OwogICAgIHZpcnR1YWwgZG91YmxlIHZhbHVlQXNOdW1iZXIoKSBjb25zdDsKICAgICB2
aXJ0dWFsIHZvaWQgc2V0VmFsdWVBc051bWJlcihkb3VibGUsIFRleHRGaWVsZEV2ZW50QmVoYXZp
b3IsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWVBc051
bWJlcihjb25zdCBEZWNpbWFsJiwgVGV4dEZpZWxkRXZlbnRCZWhhdmlvciwgRXhjZXB0aW9uQ29k
ZSYpIGNvbnN0OwogCiAgICAgLy8gVmFsaWRhdGlvbiBmdW5jdGlvbnMKICAgICB2aXJ0dWFsIFN0
cmluZyB2YWxpZGF0aW9uTWVzc2FnZSgpIGNvbnN0OwpAQCAtMTU1LDEyICsxNTYsMTIgQEAgcHVi
bGljOgogICAgIGJvb2wgcmFuZ2VPdmVyZmxvdyhjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICBi
b29sIGlzSW5SYW5nZShjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICBib29sIGlzT3V0T2ZSYW5n
ZShjb25zdCBTdHJpbmcmKSBjb25zdDsKLSAgICB2aXJ0dWFsIGRvdWJsZSBkZWZhdWx0VmFsdWVG
b3JTdGVwVXAoKSBjb25zdDsKKyAgICB2aXJ0dWFsIERlY2ltYWwgZGVmYXVsdFZhbHVlRm9yU3Rl
cFVwKCkgY29uc3Q7CiAgICAgZG91YmxlIG1pbmltdW0oKSBjb25zdDsKICAgICBkb3VibGUgbWF4
aW11bSgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBzaXplU2hvdWxkSW5jbHVkZURlY29yYXRp
b24oaW50IGRlZmF1bHRTaXplLCBpbnQmIHByZWZlcnJlZFNpemUpIGNvbnN0OwogICAgIGJvb2wg
c3RlcE1pc21hdGNoKGNvbnN0IFN0cmluZyYpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBnZXRB
bGxvd2VkVmFsdWVTdGVwKGRvdWJsZSopIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBnZXRBbGxv
d2VkVmFsdWVTdGVwKERlY2ltYWwqKSBjb25zdDsKICAgICB2aXJ0dWFsIFN0ZXBSYW5nZSBjcmVh
dGVTdGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5nKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgc3Rl
cFVwKGludCwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzdGVwVXBGcm9tUmVu
ZGVyZXIoaW50KTsKQEAgLTI2MCwxNSArMjYxLDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0
cmluZyBkZWZhdWx0VG9vbFRpcCgpIGNvbnN0OwogCiAgICAgLy8gUGFyc2VzIHRoZSBzcGVjaWZp
ZWQgc3RyaW5nIGZvciB0aGUgdHlwZSwgYW5kIHJldHVybgotICAgIC8vIHRoZSBkb3VibGUgdmFs
dWUgZm9yIHRoZSBwYXJzaW5nIHJlc3VsdCBpZiB0aGUgcGFyc2luZworICAgIC8vIHRoZSBkZWNp
bWFsIHZhbHVlIGZvciB0aGUgcGFyc2luZyByZXN1bHQgaWYgdGhlIHBhcnNpbmcKICAgICAvLyBz
dWNjZWVkczsgUmV0dXJucyBkZWZhdWx0VmFsdWUgb3RoZXJ3aXNlLiBUaGlzIGZ1bmN0aW9uIGNh
bgogICAgIC8vIHJldHVybiBOYU4gb3IgSW5maW5pdHkgb25seSBpZiBkZWZhdWx0VmFsdWUgaXMg
TmFOIG9yIEluZmluaXR5LgotICAgIHZpcnR1YWwgZG91YmxlIHBhcnNlVG9Eb3VibGUoY29uc3Qg
U3RyaW5nJiwgZG91YmxlIGRlZmF1bHRWYWx1ZSkgY29uc3Q7Ci0KLSAgICAvLyBQYXJzZXMgdGhl
IHNwZWNpZmllZCBzdHJpbmcgZm9yIHRoZSB0eXBlIGFzIHBhcnNlVG9Eb3VibGUoKSBkb2VzLgot
ICAgIC8vIEluIGFkZGl0aW9uLCBpdCBzdG9yZXMgdGhlIG51bWJlciBvZiBkaWdpdHMgYWZ0ZXIg
dGhlIGRlY2ltYWwgcG9pbnQKLSAgICAvLyBpbnRvICpkZWNpbWFsUGxhY2VzLgotICAgIHZpcnR1
YWwgZG91YmxlIHBhcnNlVG9Eb3VibGVXaXRoRGVjaW1hbFBsYWNlcyhjb25zdCBTdHJpbmcmLCBk
b3VibGUgZGVmYXVsdFZhbHVlLCB1bnNpZ25lZCogZGVjaW1hbFBsYWNlcykgY29uc3Q7CisgICAg
dmlydHVhbCBEZWNpbWFsIHBhcnNlVG9EZWNpbWFsKGNvbnN0IFN0cmluZyYsIGNvbnN0IERlY2lt
YWwmIGRlZmF1bHRWYWx1ZSkgY29uc3Q7CiAKICAgICAvLyBQYXJzZXMgdGhlIHNwZWNpZmllZCBz
dHJpbmcgZm9yIHRoaXMgSW5wdXRUeXBlLCBhbmQgcmV0dXJucyB0cnVlIGlmIGl0CiAgICAgLy8g
aXMgc3VjY2Vzc2Z1bGx5IHBhcnNlZC4gQW4gaW5zdGFuY2UgcG9pbnRlZCBieSB0aGUgRGF0ZUNv
bXBvbmVudHMqCkBAIC0yNzksNyArMjc1LDcgQEAgcHVibGljOgogICAgIC8vIENyZWF0ZSBhIHN0
cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgc3BlY2lmaWVkIGRvdWJsZSB2YWx1ZSBmb3IgdGhl
CiAgICAgLy8gaW5wdXQgdHlwZS4gSWYgTmFOIG9yIEluZmluaXR5IGlzIHNwZWNpZmllZCwgdGhp
cyByZXR1cm5zIGFuIGVtcHR5CiAgICAgLy8gc3RyaW5nLiBUaGlzIHNob3VsZCBub3QgYmUgY2Fs
bGVkIGZvciB0eXBlcyB3aXRob3V0IHZhbHVlQXNOdW1iZXIuCi0gICAgdmlydHVhbCBTdHJpbmcg
c2VyaWFsaXplKGRvdWJsZSkgY29uc3Q7CisgICAgdmlydHVhbCBTdHJpbmcgc2VyaWFsaXplKGNv
bnN0IERlY2ltYWwmKSBjb25zdDsKIAogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0luZGV0ZXJt
aW5hdGVBcHBlYXJhbmNlKCkgY29uc3Q7CiAKQEAgLTI5MywxMCArMjg5LDExIEBAIHByb3RlY3Rl
ZDoKICAgICBIVE1MSW5wdXRFbGVtZW50KiBlbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9lbGVt
ZW50OyB9CiAgICAgdm9pZCBkaXNwYXRjaFNpbXVsYXRlZENsaWNrSWZBY3RpdmUoS2V5Ym9hcmRF
dmVudCopIGNvbnN0OwogICAgIENocm9tZSogY2hyb21lKCkgY29uc3Q7CisgICAgRGVjaW1hbCBw
YXJzZVRvRGVjaW1hbChjb25zdCBTdHJpbmcmKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICAvLyBI
ZWxwZXIgZm9yIHN0ZXBVcCgpL3N0ZXBEb3duKCkuIEFkZHMgc3RlcCB2YWx1ZSAqIGNvdW50IHRv
IHRoZSBjdXJyZW50IHZhbHVlLgotICAgIHZvaWQgYXBwbHlTdGVwKGRvdWJsZSBjb3VudCwgQW55
U3RlcEhhbmRsaW5nLCBUZXh0RmllbGRFdmVudEJlaGF2aW9yLCBFeGNlcHRpb25Db2RlJik7Cisg
ICAgdm9pZCBhcHBseVN0ZXAoaW50IGNvdW50LCBBbnlTdGVwSGFuZGxpbmcsIFRleHRGaWVsZEV2
ZW50QmVoYXZpb3IsIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIC8vIFJhdyBwb2ludGVyIGJlY2F1
c2UgdGhlIEhUTUxJbnB1dEVsZW1lbnQgb2JqZWN0IG93bnMgdGhpcyBJbnB1dFR5cGUgb2JqZWN0
LgogICAgIEhUTUxJbnB1dEVsZW1lbnQqIG1fZWxlbWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvTW9udGhJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Nb250
aElucHV0VHlwZS5jcHAKaW5kZXggZWJkZTNiMjA1MWE2YTJkOWNkNDg0ODA2MDk1N2JiNjMwMTM5
ZDNhMi4uNmUyODgxYThkOTUzYWQ2MzJhMWU0ZjI2YmI2OTg0MjZjN2QzZTRjOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Nb250aElucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9Nb250aElucHV0VHlwZS5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRl
ICJEYXRlQ29tcG9uZW50cy5oIgogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKICNpbmNs
dWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVk
ZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL0RhdGVNYXRoLmg+CiAjaW5jbHVk
ZSA8d3RmL01hdGhFeHRyYXMuaD4KQEAgLTQ1LDkgKzQ2LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1zdGF0aWMgY29uc3QgZG91YmxlIG1v
bnRoRGVmYXVsdFN0ZXAgPSAxLjA7Ci1zdGF0aWMgY29uc3QgZG91YmxlIG1vbnRoRGVmYXVsdFN0
ZXBCYXNlID0gMC4wOwotc3RhdGljIGNvbnN0IGRvdWJsZSBtb250aFN0ZXBTY2FsZUZhY3RvciA9
IDEuMDsKK3N0YXRpYyBjb25zdCBpbnQgbW9udGhEZWZhdWx0U3RlcCA9IDE7CitzdGF0aWMgY29u
c3QgaW50IG1vbnRoRGVmYXVsdFN0ZXBCYXNlID0gMDsKK3N0YXRpYyBjb25zdCBpbnQgbW9udGhT
dGVwU2NhbGVGYWN0b3IgPSAxOwogCiBQYXNzT3duUHRyPElucHV0VHlwZT4gTW9udGhJbnB1dFR5
cGU6OmNyZWF0ZShIVE1MSW5wdXRFbGVtZW50KiBlbGVtZW50KQogewpAQCAtNzQsMTUgKzc1LDE1
IEBAIGRvdWJsZSBNb250aElucHV0VHlwZTo6dmFsdWVBc0RhdGUoKSBjb25zdAogICAgIHJldHVy
biBtc2VjOwogfQogCi1TdHJpbmcgTW9udGhJbnB1dFR5cGU6OnNlcmlhbGl6ZVdpdGhNaWxsaXNl
Y29uZHMoZG91YmxlIHZhbHVlKSBjb25zdAorU3RyaW5nIE1vbnRoSW5wdXRUeXBlOjpzZXJpYWxp
emVXaXRoTWlsbGlzZWNvbmRzKGNvbnN0IERlY2ltYWwmIHZhbHVlKSBjb25zdAogewogICAgIERh
dGVDb21wb25lbnRzIGRhdGU7Ci0gICAgaWYgKCFkYXRlLnNldE1pbGxpc2Vjb25kc1NpbmNlRXBv
Y2hGb3JNb250aCh2YWx1ZSkpCisgICAgaWYgKCFkYXRlLnNldE1pbGxpc2Vjb25kc1NpbmNlRXBv
Y2hGb3JNb250aChjb252ZXJ0RGVjaW1hbFRvRG91YmxlKHZhbHVlKSkpCiAgICAgICAgIHJldHVy
biBTdHJpbmcoKTsKICAgICByZXR1cm4gc2VyaWFsaXplV2l0aENvbXBvbmVudHMoZGF0ZSk7CiB9
CiAKLWRvdWJsZSBNb250aElucHV0VHlwZTo6ZGVmYXVsdFZhbHVlRm9yU3RlcFVwKCkgY29uc3QK
K0RlY2ltYWwgTW9udGhJbnB1dFR5cGU6OmRlZmF1bHRWYWx1ZUZvclN0ZXBVcCgpIGNvbnN0CiB7
CiAgICAgZG91YmxlIGN1cnJlbnQgPSBjdXJyZW50VGltZU1TKCk7CiAgICAgZG91YmxlIHV0Y09m
ZnNldCA9IGNhbGN1bGF0ZVVUQ09mZnNldCgpOwpAQCAtOTQsMjggKzk1LDI4IEBAIGRvdWJsZSBN
b250aElucHV0VHlwZTo6ZGVmYXVsdFZhbHVlRm9yU3RlcFVwKCkgY29uc3QKICAgICBkYXRlLnNl
dE1pbGxpc2Vjb25kc1NpbmNlRXBvY2hGb3JNb250aChjdXJyZW50KTsKICAgICBkb3VibGUgbW9u
dGhzID0gZGF0ZS5tb250aHNTaW5jZUVwb2NoKCk7CiAgICAgQVNTRVJUKGlzZmluaXRlKG1vbnRo
cykpOwotICAgIHJldHVybiBtb250aHM7CisgICAgcmV0dXJuIGNvbnZlcnREb3VibGVUb0RlY2lt
YWwobW9udGhzKTsKIH0KIAogU3RlcFJhbmdlIE1vbnRoSW5wdXRUeXBlOjpjcmVhdGVTdGVwUmFu
Z2UoQW55U3RlcEhhbmRsaW5nIGFueVN0ZXBIYW5kbGluZykgY29uc3QKIHsKICAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKGNvbnN0IFN0ZXBSYW5nZTo6U3RlcERlc2NyaXB0aW9uLCBzdGVwRGVzY3Jp
cHRpb24sIChtb250aERlZmF1bHRTdGVwLCBtb250aERlZmF1bHRTdGVwQmFzZSwgbW9udGhTdGVw
U2NhbGVGYWN0b3IsIFN0ZXBSYW5nZTo6UGFyc2VkU3RlcFZhbHVlU2hvdWxkQmVJbnRlZ2VyKSk7
CiAKLSAgICBkb3VibGUgc3RlcEJhc2UgPSBwYXJzZVRvRG91YmxlKGVsZW1lbnQoKS0+ZmFzdEdl
dEF0dHJpYnV0ZShtaW5BdHRyKSwgRGF0ZUNvbXBvbmVudHM6Om1pbmltdW1Nb250aCgpKTsKLSAg
ICBkb3VibGUgbWluaW11bSA9IHBhcnNlVG9Eb3VibGUoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmli
dXRlKG1pbkF0dHIpLCBEYXRlQ29tcG9uZW50czo6bWluaW11bU1vbnRoKCkpOwotICAgIGRvdWJs
ZSBtYXhpbXVtID0gcGFyc2VUb0RvdWJsZShlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUobWF4
QXR0ciksIERhdGVDb21wb25lbnRzOjptYXhpbXVtTW9udGgoKSk7Ci0gICAgU3RlcFJhbmdlOjpE
b3VibGVXaXRoRGVjaW1hbFBsYWNlc09yTWlzc2luZyBzdGVwID0gU3RlcFJhbmdlOjpwYXJzZVN0
ZXAoYW55U3RlcEhhbmRsaW5nLCBzdGVwRGVzY3JpcHRpb24sIGVsZW1lbnQoKS0+ZmFzdEdldEF0
dHJpYnV0ZShzdGVwQXR0cikpOworICAgIGNvbnN0IERlY2ltYWwgc3RlcEJhc2UgPSBwYXJzZVRv
RGVjaW1hbChlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUobWluQXR0ciksIGNvbnZlcnREb3Vi
bGVUb0RlY2ltYWwoRGF0ZUNvbXBvbmVudHM6Om1pbmltdW1Nb250aCgpKSk7CisgICAgY29uc3Qg
RGVjaW1hbCBtaW5pbXVtID0gc3RlcEJhc2U7CisgICAgY29uc3QgRGVjaW1hbCBtYXhpbXVtID0g
cGFyc2VUb0RlY2ltYWwoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1heEF0dHIpLCBjb252
ZXJ0RG91YmxlVG9EZWNpbWFsKERhdGVDb21wb25lbnRzOjptYXhpbXVtTW9udGgoKSkpOworICAg
IGNvbnN0IFN0ZXBSYW5nZTo6RGVjaW1hbE9yTWlzc2luZyBzdGVwID0gU3RlcFJhbmdlOjpwYXJz
ZVN0ZXAoYW55U3RlcEhhbmRsaW5nLCBzdGVwRGVzY3JpcHRpb24sIGVsZW1lbnQoKS0+ZmFzdEdl
dEF0dHJpYnV0ZShzdGVwQXR0cikpOwogICAgIHJldHVybiBTdGVwUmFuZ2Uoc3RlcEJhc2UsIG1p
bmltdW0sIG1heGltdW0sIHN0ZXAsIHN0ZXBEZXNjcmlwdGlvbik7CiB9CiAKLWRvdWJsZSBNb250
aElucHV0VHlwZTo6cGFyc2VUb0RvdWJsZShjb25zdCBTdHJpbmcmIHNyYywgZG91YmxlIGRlZmF1
bHRWYWx1ZSkgY29uc3QKK0RlY2ltYWwgTW9udGhJbnB1dFR5cGU6OnBhcnNlVG9EZWNpbWFsKGNv
bnN0IFN0cmluZyYgc3JjLCBjb25zdCBEZWNpbWFsJiBkZWZhdWx0VmFsdWUpIGNvbnN0CiB7CiAg
ICAgRGF0ZUNvbXBvbmVudHMgZGF0ZTsKICAgICBpZiAoIXBhcnNlVG9EYXRlQ29tcG9uZW50cyhz
cmMsICZkYXRlKSkKICAgICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTsKICAgICBkb3VibGUgbW9u
dGhzID0gZGF0ZS5tb250aHNTaW5jZUVwb2NoKCk7CiAgICAgQVNTRVJUKGlzZmluaXRlKG1vbnRo
cykpOwotICAgIHJldHVybiBtb250aHM7CisgICAgcmV0dXJuIGNvbnZlcnREb3VibGVUb0RlY2lt
YWwobW9udGhzKTsKIH0KIAogYm9vbCBNb250aElucHV0VHlwZTo6cGFyc2VUb0RhdGVDb21wb25l
bnRzSW50ZXJuYWwoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgRGF0
ZUNvbXBvbmVudHMqIG91dCkgY29uc3QKQEAgLTEyNSwxMCArMTI2LDEwIEBAIGJvb2wgTW9udGhJ
bnB1dFR5cGU6OnBhcnNlVG9EYXRlQ29tcG9uZW50c0ludGVybmFsKGNvbnN0IFVDaGFyKiBjaGFy
YWN0ZXJzLCB1bnNpCiAgICAgcmV0dXJuIG91dC0+cGFyc2VNb250aChjaGFyYWN0ZXJzLCBsZW5n
dGgsIDAsIGVuZCkgJiYgZW5kID09IGxlbmd0aDsKIH0KIAotYm9vbCBNb250aElucHV0VHlwZTo6
c2V0TWlsbGlzZWNvbmRUb0RhdGVDb21wb25lbnRzKGRvdWJsZSB2YWx1ZSwgRGF0ZUNvbXBvbmVu
dHMqIGRhdGUpIGNvbnN0Citib29sIE1vbnRoSW5wdXRUeXBlOjpzZXRNaWxsaXNlY29uZFRvRGF0
ZUNvbXBvbmVudHMoY29uc3QgRGVjaW1hbCYgdmFsdWUsIERhdGVDb21wb25lbnRzKiBkYXRlKSBj
b25zdAogewogICAgIEFTU0VSVChkYXRlKTsKLSAgICByZXR1cm4gZGF0ZS0+c2V0TW9udGhzU2lu
Y2VFcG9jaCh2YWx1ZSk7CisgICAgcmV0dXJuIGRhdGUtPnNldE1vbnRoc1NpbmNlRXBvY2goY29u
dmVydERlY2ltYWxUb0RvdWJsZSh2YWx1ZSkpOwogfQogCiBib29sIE1vbnRoSW5wdXRUeXBlOjpp
c01vbnRoRmllbGQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Nb250
aElucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Nb250aElucHV0VHlwZS5oCmluZGV4
IGQwN2IwMWJjYjZhYWExOTU3MWRlMmM4ZjExZTYzOGJhZDAxYmIwNTEuLjhjNTM1N2U4YWE1YTk1
OTI4MzYwYTFjYTY3ODk3ZDQ3NjFlNWQzYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvTW9udGhJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01vbnRoSW5wdXRU
eXBlLmgKQEAgLTQ2LDEyICs0NiwxMiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgY29uc3QgQXRv
bWljU3RyaW5nJiBmb3JtQ29udHJvbFR5cGUoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFs
IERhdGVDb21wb25lbnRzOjpUeXBlIGRhdGVUeXBlKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCBkb3VibGUgdmFsdWVBc0RhdGUoKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIFN0
cmluZyBzZXJpYWxpemVXaXRoTWlsbGlzZWNvbmRzKGRvdWJsZSkgY29uc3QgT1ZFUlJJREU7Ci0g
ICAgdmlydHVhbCBkb3VibGUgcGFyc2VUb0RvdWJsZShjb25zdCBTdHJpbmcmLCBkb3VibGUpIGNv
bnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgZG91YmxlIGRlZmF1bHRWYWx1ZUZvclN0ZXBVcCgp
IGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgU3RyaW5nIHNlcmlhbGl6ZVdpdGhNaWxsaXNl
Y29uZHMoY29uc3QgRGVjaW1hbCYpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgRGVjaW1h
bCBwYXJzZVRvRGVjaW1hbChjb25zdCBTdHJpbmcmLCBjb25zdCBEZWNpbWFsJikgY29uc3QgT1ZF
UlJJREU7CisgICAgdmlydHVhbCBEZWNpbWFsIGRlZmF1bHRWYWx1ZUZvclN0ZXBVcCgpIGNvbnN0
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgU3RlcFJhbmdlIGNyZWF0ZVN0ZXBSYW5nZShBbnlTdGVw
SGFuZGxpbmcpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBwYXJzZVRvRGF0ZUNv
bXBvbmVudHNJbnRlcm5hbChjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCwgRGF0ZUNvbXBv
bmVudHMqKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgc2V0TWlsbGlzZWNvbmRU
b0RhdGVDb21wb25lbnRzKGRvdWJsZSwgRGF0ZUNvbXBvbmVudHMqKSBjb25zdCBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIGJvb2wgc2V0TWlsbGlzZWNvbmRUb0RhdGVDb21wb25lbnRzKGNvbnN0IERl
Y2ltYWwmLCBEYXRlQ29tcG9uZW50cyopIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9v
bCBpc01vbnRoRmllbGQoKSBjb25zdCBPVkVSUklERTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvTnVtYmVySW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
TnVtYmVySW5wdXRUeXBlLmNwcAppbmRleCBjZmRjN2Q0OTc3NGM4OTgzZjljZDA4YjcwZGFlNTY3
MzlhMDA2YzEwLi41OTg1YThkZjRiOTBkNDdmMTM4OWNjYTU4MmJjNjkxOTRjOTI4NDg3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL051bWJlcklucHV0VHlwZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9OdW1iZXJJbnB1dFR5cGUuY3BwCkBAIC00OCwyNSArNDgsMjkgQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKLXVzaW5n
IG5hbWVzcGFjZSBzdGQ7CiAKLXN0YXRpYyBjb25zdCBkb3VibGUgbnVtYmVyRGVmYXVsdFN0ZXAg
PSAxLjA7Ci1zdGF0aWMgY29uc3QgZG91YmxlIG51bWJlckRlZmF1bHRTdGVwQmFzZSA9IDAuMDsK
LXN0YXRpYyBjb25zdCBkb3VibGUgbnVtYmVyU3RlcFNjYWxlRmFjdG9yID0gMS4wOworc3RhdGlj
IGNvbnN0IGludCBudW1iZXJEZWZhdWx0U3RlcCA9IDE7CitzdGF0aWMgY29uc3QgaW50IG51bWJl
ckRlZmF1bHRTdGVwQmFzZSA9IDA7CitzdGF0aWMgY29uc3QgaW50IG51bWJlclN0ZXBTY2FsZUZh
Y3RvciA9IDE7CiAKLXN0YXRpYyB1bnNpZ25lZCBsZW5ndGhCZWZvcmVEZWNpbWFsUG9pbnQoZG91
YmxlIHZhbHVlKQorc3RhdGljIHVuc2lnbmVkIGNhbGN1bGF0ZVJlbmRlclNpemUoY29uc3QgRGVj
aW1hbCYgdmFsdWUpCiB7Ci0gICAgLy8gSWYgdmFsdWUgaXMgbmVnYXRpdmUsICctJyBzaG91bGQg
YmUgY291bnRlZC4KLQotICAgIGRvdWJsZSBhYnNvbHV0ZVZhbHVlID0gZmFicyh2YWx1ZSk7Ci0g
ICAgaWYgKGFic29sdXRlVmFsdWUgPCAxKQotICAgICAgICByZXR1cm4gdmFsdWUgPCAwID8gMiA6
IDE7Ci0KLSAgICB1bnNpZ25lZCBsZW5ndGggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obG9nMTAo
Zmxvb3IoYWJzb2x1dGVWYWx1ZSkpKSArIDE7Ci0gICAgaWYgKHZhbHVlIDwgMCkKLSAgICAgICAg
bGVuZ3RoICs9IDE7CisgICAgQVNTRVJUKHZhbHVlLmlzRmluaXRlKCkpOworICAgIGNvbnN0IHVu
c2lnbmVkIGRpZ2l0c1NpemUgPSBTdHJpbmc6Om51bWJlcih2YWx1ZS52YWx1ZSgpLmNvZWZmaWNp
ZW50KCkpLmxlbmd0aCgpOworICAgIGNvbnN0IHVuc2lnbmVkIHNpZ25TaXplID0gdmFsdWUuaXNO
ZWdhdGl2ZSgpID8gMSA6IDA7CisgICAgaWYgKCF2YWx1ZS5leHBvbmVudCgpKQorICAgICAgICBy
ZXR1cm4gc2lnblNpemUgKyBkaWdpdHNTaXplOworICAgIGNvbnN0IGludCBhZGp1c3RlZEV4cG9u
ZW50ID0gdmFsdWUuZXhwb25lbnQoKSArIGRpZ2l0c1NpemUgLSAxOworICAgIGlmIChhZGp1c3Rl
ZEV4cG9uZW50ID49IDApIHsKKyAgICAgICAgLy8gSW4gY2FzZSBvZiAiMTIzLjQ1NiIKKyAgICAg
ICAgY29uc3QgdW5zaWduZWQgZG90U2l6ZSA9IDE7CisgICAgICAgIHJldHVybiBzaWduU2l6ZSAr
IGRpZ2l0c1NpemUgKyBkb3RTaXplOworICAgIH0KIAotICAgIHJldHVybiBsZW5ndGg7CisgICAg
Ly8gSW4gY2FzZSBvZiAiMC4wMDAxMjM0NSIKKyAgICBjb25zdCB1bnNpZ25lZCBsZWFkaW5nWmVy
b0FuZERvdCA9IDI7CisgICAgY29uc3QgdW5zaWduZWQgbnVtYmVyT2ZaZXJvQWZ0ZXJEb3QgPSAt
YWRqdXN0ZWRFeHBvbmVudCAtIDE7CisgICAgcmV0dXJuIHNpZ25TaXplICsgbGVhZGluZ1plcm9B
bmREb3QgKyBudW1iZXJPZlplcm9BZnRlckRvdCArIGRpZ2l0c1NpemU7CiB9CiAKIFBhc3NPd25Q
dHI8SW5wdXRUeXBlPiBOdW1iZXJJbnB1dFR5cGU6OmNyZWF0ZShIVE1MSW5wdXRFbGVtZW50KiBl
bGVtZW50KQpAQCAtODEsMjAgKzg1LDM0IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgTnVtYmVySW5w
dXRUeXBlOjpmb3JtQ29udHJvbFR5cGUoKSBjb25zdAogCiBkb3VibGUgTnVtYmVySW5wdXRUeXBl
Ojp2YWx1ZUFzTnVtYmVyKCkgY29uc3QKIHsKLSAgICByZXR1cm4gcGFyc2VUb0RvdWJsZShlbGVt
ZW50KCktPnZhbHVlKCksIG51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpKTsKKyAg
ICByZXR1cm4gcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUoZWxlbWVudCgpLT52YWx1ZSgpKTsK
IH0KIAogdm9pZCBOdW1iZXJJbnB1dFR5cGU6OnNldFZhbHVlQXNOdW1iZXIoZG91YmxlIG5ld1Zh
bHVlLCBUZXh0RmllbGRFdmVudEJlaGF2aW9yIGV2ZW50QmVoYXZpb3IsIEV4Y2VwdGlvbkNvZGUm
IGVjKSBjb25zdAogewotICAgIGlmIChuZXdWYWx1ZSA8IC1udW1lcmljX2xpbWl0czxmbG9hdD46
Om1heCgpKSB7CisgICAgaWYgKG5ld1ZhbHVlIDwgLXN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+
OjptYXgoKSkgeworICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgIGlmIChuZXdWYWx1ZSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+
OjptYXgoKSkgeworICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgIGVsZW1lbnQoKS0+c2V0VmFsdWUoc2VyaWFsaXplRm9yTnVtYmVyVHlw
ZShuZXdWYWx1ZSksIGV2ZW50QmVoYXZpb3IpOworfQorCit2b2lkIE51bWJlcklucHV0VHlwZTo6
c2V0VmFsdWVBc051bWJlcihjb25zdCBEZWNpbWFsJiBuZXdWYWx1ZSwgVGV4dEZpZWxkRXZlbnRC
ZWhhdmlvciBldmVudEJlaGF2aW9yLCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKK3sKKyAgICBj
b25zdCBEZWNpbWFsIGZsb2F0TWF4ID0gY29udmVydERvdWJsZVRvRGVjaW1hbChzdGQ6Om51bWVy
aWNfbGltaXRzPGZsb2F0Pjo6bWF4KCkpOworICAgIGlmIChuZXdWYWx1ZSA8IC1mbG9hdE1heCkg
ewogICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwogICAgICAgICByZXR1cm47CiAgICAg
fQotICAgIGlmIChuZXdWYWx1ZSA+IG51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4KCkpIHsKKyAg
ICBpZiAobmV3VmFsdWUgPiBmbG9hdE1heCkgewogICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVf
RVJSOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGVsZW1lbnQoKS0+c2V0VmFsdWUoc2Vy
aWFsaXplKG5ld1ZhbHVlKSwgZXZlbnRCZWhhdmlvcik7CisgICAgZWxlbWVudCgpLT5zZXRWYWx1
ZShzZXJpYWxpemVGb3JOdW1iZXJUeXBlKG5ld1ZhbHVlKSwgZXZlbnRCZWhhdmlvcik7CiB9CiAK
IGJvb2wgTnVtYmVySW5wdXRUeXBlOjp0eXBlTWlzbWF0Y2hGb3IoY29uc3QgU3RyaW5nJiB2YWx1
ZSkgY29uc3QKQEAgLTExMSwxNCArMTI5LDExIEBAIGJvb2wgTnVtYmVySW5wdXRUeXBlOjp0eXBl
TWlzbWF0Y2goKSBjb25zdAogU3RlcFJhbmdlIE51bWJlcklucHV0VHlwZTo6Y3JlYXRlU3RlcFJh
bmdlKEFueVN0ZXBIYW5kbGluZyBhbnlTdGVwSGFuZGxpbmcpIGNvbnN0CiB7CiAgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChjb25zdCBTdGVwUmFuZ2U6OlN0ZXBEZXNjcmlwdGlvbiwgc3RlcERlc2Ny
aXB0aW9uLCAobnVtYmVyRGVmYXVsdFN0ZXAsIG51bWJlckRlZmF1bHRTdGVwQmFzZSwgbnVtYmVy
U3RlcFNjYWxlRmFjdG9yKSk7Ci0KLSAgICB1bnNpZ25lZCBzdGVwQmFzZURlY2ltYWxQbGFjZXM7
Ci0gICAgZG91YmxlIHN0ZXBCYXNlVmFsdWUgPSBwYXJzZVRvRG91YmxlV2l0aERlY2ltYWxQbGFj
ZXMoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpLCBudW1iZXJEZWZhdWx0U3Rl
cEJhc2UsICZzdGVwQmFzZURlY2ltYWxQbGFjZXMpOwotICAgIFN0ZXBSYW5nZTo6RG91YmxlV2l0
aERlY2ltYWxQbGFjZXMgc3RlcEJhc2Uoc3RlcEJhc2VWYWx1ZSwgbWluKHN0ZXBCYXNlRGVjaW1h
bFBsYWNlcywgMTZ1KSk7Ci0gICAgZG91YmxlIG1pbmltdW0gPSBwYXJzZVRvRG91YmxlKGVsZW1l
bnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShtaW5BdHRyKSwgLW51bWVyaWNfbGltaXRzPGZsb2F0Pjo6
bWF4KCkpOwotICAgIGRvdWJsZSBtYXhpbXVtID0gcGFyc2VUb0RvdWJsZShlbGVtZW50KCktPmZh
c3RHZXRBdHRyaWJ1dGUobWF4QXR0ciksIG51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4KCkpOwot
Ci0gICAgU3RlcFJhbmdlOjpEb3VibGVXaXRoRGVjaW1hbFBsYWNlc09yTWlzc2luZyBzdGVwID0g
U3RlcFJhbmdlOjpwYXJzZVN0ZXAoYW55U3RlcEhhbmRsaW5nLCBzdGVwRGVzY3JpcHRpb24sIGVs
ZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShzdGVwQXR0cikpOworICAgIGNvbnN0IERlY2ltYWwg
ZmxvYXRNYXggPSBjb252ZXJ0RG91YmxlVG9EZWNpbWFsKHN0ZDo6bnVtZXJpY19saW1pdHM8Zmxv
YXQ+OjptYXgoKSk7CisgICAgY29uc3QgRGVjaW1hbCBzdGVwQmFzZSA9IHBhcnNlVG9EZWNpbWFs
Rm9yTnVtYmVyVHlwZShlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUobWluQXR0ciksIG51bWJl
ckRlZmF1bHRTdGVwQmFzZSk7CisgICAgY29uc3QgRGVjaW1hbCBtaW5pbXVtID0gcGFyc2VUb0Rl
Y2ltYWxGb3JOdW1iZXJUeXBlKGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShtaW5BdHRyKSwg
LWZsb2F0TWF4KTsKKyAgICBjb25zdCBEZWNpbWFsIG1heGltdW0gPSBwYXJzZVRvRGVjaW1hbEZv
ck51bWJlclR5cGUoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1heEF0dHIpLCBmbG9hdE1h
eCk7CisgICAgY29uc3QgU3RlcFJhbmdlOjpEZWNpbWFsT3JNaXNzaW5nIHN0ZXAgPSBTdGVwUmFu
Z2U6OnBhcnNlU3RlcChhbnlTdGVwSGFuZGxpbmcsIHN0ZXBEZXNjcmlwdGlvbiwgZWxlbWVudCgp
LT5mYXN0R2V0QXR0cmlidXRlKHN0ZXBBdHRyKSk7CiAgICAgcmV0dXJuIFN0ZXBSYW5nZShzdGVw
QmFzZSwgbWluaW11bSwgbWF4aW11bSwgc3RlcCwgc3RlcERlc2NyaXB0aW9uKTsKIH0KIApAQCAt
MTI2LDQ3ICsxNDEsMTkgQEAgYm9vbCBOdW1iZXJJbnB1dFR5cGU6OnNpemVTaG91bGRJbmNsdWRl
RGVjb3JhdGlvbihpbnQgZGVmYXVsdFNpemUsIGludCYgcHJlZmVycmUKIHsKICAgICBwcmVmZXJy
ZWRTaXplID0gZGVmYXVsdFNpemU7CiAKLSAgICB1bnNpZ25lZCBtaW5WYWx1ZURlY2ltYWxQbGFj
ZXM7Ci0gICAgU3RyaW5nIG1pblZhbHVlID0gZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1p
bkF0dHIpOwotICAgIGRvdWJsZSBtaW5WYWx1ZURvdWJsZSA9IHBhcnNlVG9Eb3VibGVGb3JOdW1i
ZXJUeXBlV2l0aERlY2ltYWxQbGFjZXMobWluVmFsdWUsICZtaW5WYWx1ZURlY2ltYWxQbGFjZXMp
OwotICAgIGlmICghaXNmaW5pdGUobWluVmFsdWVEb3VibGUpKQorICAgIFN0cmluZyBzdGVwU3Ry
aW5nID0gZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKHN0ZXBBdHRyKTsKKyAgICBpZiAoZXF1
YWxJZ25vcmluZ0Nhc2Uoc3RlcFN0cmluZywgImFueSIpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICB1bnNpZ25lZCBtYXhWYWx1ZURlY2ltYWxQbGFjZXM7Ci0gICAgU3RyaW5nIG1heFZh
bHVlID0gZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1heEF0dHIpOwotICAgIGRvdWJsZSBt
YXhWYWx1ZURvdWJsZSA9IHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlV2l0aERlY2ltYWxQbGFj
ZXMobWF4VmFsdWUsICZtYXhWYWx1ZURlY2ltYWxQbGFjZXMpOwotICAgIGlmICghaXNmaW5pdGUo
bWF4VmFsdWVEb3VibGUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAobWF4VmFs
dWVEb3VibGUgPCBtaW5WYWx1ZURvdWJsZSkgewotICAgICAgICBtYXhWYWx1ZURvdWJsZSA9IG1p
blZhbHVlRG91YmxlOwotICAgICAgICBtYXhWYWx1ZURlY2ltYWxQbGFjZXMgPSBtaW5WYWx1ZURl
Y2ltYWxQbGFjZXM7CisgICAgY29uc3QgRGVjaW1hbCBtaW5pbXVtID0gcGFyc2VUb0RlY2ltYWxG
b3JOdW1iZXJUeXBlKGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShtaW5BdHRyKSk7CisgICAg
Y29uc3QgRGVjaW1hbCBtYXhpbXVtID0gcGFyc2VUb0RlY2ltYWxGb3JOdW1iZXJUeXBlKGVsZW1l
bnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShtYXhBdHRyKSk7CisgICAgY29uc3QgRGVjaW1hbCBzdGVw
ID0gcGFyc2VUb0RlY2ltYWxGb3JOdW1iZXJUeXBlKHN0ZXBTdHJpbmcsIDEpOworICAgIGlmICht
aW5pbXVtLmlzRmluaXRlKCkgJiYgbWF4aW11bS5pc0Zpbml0ZSgpICYmIHN0ZXAuaXNGaW5pdGUo
KSkgeworICAgICAgICBwcmVmZXJyZWRTaXplID0gbWF4KG1heChjYWxjdWxhdGVSZW5kZXJTaXpl
KG1pbmltdW0pLCBjYWxjdWxhdGVSZW5kZXJTaXplKG1heGltdW0pKSwgY2FsY3VsYXRlUmVuZGVy
U2l6ZShzdGVwKSk7CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIFN0cmluZyBz
dGVwVmFsdWUgPSBlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUoc3RlcEF0dHIpOwotICAgIGlm
IChlcXVhbElnbm9yaW5nQ2FzZShzdGVwVmFsdWUsICJhbnkiKSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIHVuc2lnbmVkIHN0ZXBWYWx1ZURlY2ltYWxQbGFjZXM7Ci0gICAgZG91YmxlIHN0
ZXBWYWx1ZURvdWJsZSA9IHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlV2l0aERlY2ltYWxQbGFj
ZXMoc3RlcFZhbHVlLCAmc3RlcFZhbHVlRGVjaW1hbFBsYWNlcyk7Ci0gICAgaWYgKCFpc2Zpbml0
ZShzdGVwVmFsdWVEb3VibGUpKSB7Ci0gICAgICAgIHN0ZXBWYWx1ZURvdWJsZSA9IDE7Ci0gICAg
ICAgIHN0ZXBWYWx1ZURlY2ltYWxQbGFjZXMgPSAwOwotICAgIH0KLQotICAgIHVuc2lnbmVkIGxl
bmd0aCA9IGxlbmd0aEJlZm9yZURlY2ltYWxQb2ludChtaW5WYWx1ZURvdWJsZSk7Ci0gICAgbGVu
Z3RoID0gbWF4KGxlbmd0aCwgbGVuZ3RoQmVmb3JlRGVjaW1hbFBvaW50KG1heFZhbHVlRG91Ymxl
KSk7Ci0gICAgbGVuZ3RoID0gbWF4KGxlbmd0aCwgbGVuZ3RoQmVmb3JlRGVjaW1hbFBvaW50KHN0
ZXBWYWx1ZURvdWJsZSkpOwotCi0gICAgdW5zaWduZWQgbGVuZ3RoQWZ0ZXJEZWNpbWFsUG9pbnQg
PSBtaW5WYWx1ZURlY2ltYWxQbGFjZXM7Ci0gICAgbGVuZ3RoQWZ0ZXJEZWNpbWFsUG9pbnQgPSBt
YXgobGVuZ3RoQWZ0ZXJEZWNpbWFsUG9pbnQsIG1heFZhbHVlRGVjaW1hbFBsYWNlcyk7Ci0gICAg
bGVuZ3RoQWZ0ZXJEZWNpbWFsUG9pbnQgPSBtYXgobGVuZ3RoQWZ0ZXJEZWNpbWFsUG9pbnQsIHN0
ZXBWYWx1ZURlY2ltYWxQbGFjZXMpOwotCi0gICAgLy8gJy4nIHNob3VsZCBiZSBjb3VudGVkIGlm
IHRoZSB2YWx1ZSBoYXMgZGVjaW1hbCBwbGFjZXMuCi0gICAgaWYgKGxlbmd0aEFmdGVyRGVjaW1h
bFBvaW50ID4gMCkKLSAgICAgICAgbGVuZ3RoICs9IGxlbmd0aEFmdGVyRGVjaW1hbFBvaW50ICsg
MTsKLQotICAgIHByZWZlcnJlZFNpemUgPSBsZW5ndGg7Ci0gICAgcmV0dXJuIHRydWU7CisgICAg
cmV0dXJuIGZhbHNlOwogfQogCiBib29sIE51bWJlcklucHV0VHlwZTo6aXNTdGVwcGFibGUoKSBj
b25zdApAQCAtMTg2LDIxICsxNzMsMTQgQEAgdm9pZCBOdW1iZXJJbnB1dFR5cGU6OmhhbmRsZVdo
ZWVsRXZlbnQoV2hlZWxFdmVudCogZXZlbnQpCiAgICAgaGFuZGxlV2hlZWxFdmVudEZvclNwaW5C
dXR0b24oZXZlbnQpOwogfQogCi1kb3VibGUgTnVtYmVySW5wdXRUeXBlOjpwYXJzZVRvRG91Ymxl
KGNvbnN0IFN0cmluZyYgc3JjLCBkb3VibGUgZGVmYXVsdFZhbHVlKSBjb25zdAotewotICAgIHJl
dHVybiBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZShzcmMsIGRlZmF1bHRWYWx1ZSk7Ci19Ci0K
LWRvdWJsZSBOdW1iZXJJbnB1dFR5cGU6OnBhcnNlVG9Eb3VibGVXaXRoRGVjaW1hbFBsYWNlcyhj
b25zdCBTdHJpbmcmIHNyYywgZG91YmxlIGRlZmF1bHRWYWx1ZSwgdW5zaWduZWQgKmRlY2ltYWxQ
bGFjZXMpIGNvbnN0CitEZWNpbWFsIE51bWJlcklucHV0VHlwZTo6cGFyc2VUb0RlY2ltYWwoY29u
c3QgU3RyaW5nJiBzdHJpbmcsIGNvbnN0IERlY2ltYWwmIGRlZmF1bHRWYWx1ZSkgY29uc3QKIHsK
LSAgICByZXR1cm4gcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGVXaXRoRGVjaW1hbFBsYWNlcyhz
cmMsIGRlY2ltYWxQbGFjZXMsIGRlZmF1bHRWYWx1ZSk7CisgICAgcmV0dXJuIHBhcnNlVG9EZWNp
bWFsRm9yTnVtYmVyVHlwZShzdHJpbmcsIGRlZmF1bHRWYWx1ZSk7CiB9CiAKLVN0cmluZyBOdW1i
ZXJJbnB1dFR5cGU6OnNlcmlhbGl6ZShkb3VibGUgdmFsdWUpIGNvbnN0CitTdHJpbmcgTnVtYmVy
SW5wdXRUeXBlOjpzZXJpYWxpemUoY29uc3QgRGVjaW1hbCYgdmFsdWUpIGNvbnN0CiB7Ci0gICAg
aWYgKCFpc2Zpbml0ZSh2YWx1ZSkpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICByZXR1
cm4gc2VyaWFsaXplRm9yTnVtYmVyVHlwZSh2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlLmlzRmlu
aXRlKCkgPyBzZXJpYWxpemVGb3JOdW1iZXJUeXBlKHZhbHVlKSA6IGVtcHR5U3RyaW5nKCk7CiB9
CiAKIHZvaWQgTnVtYmVySW5wdXRUeXBlOjpoYW5kbGVCbHVyRXZlbnQoKQpAQCAtMjI1LDEzICsy
MDUsNyBAQCBTdHJpbmcgTnVtYmVySW5wdXRUeXBlOjpsb2NhbGl6ZVZhbHVlKGNvbnN0IFN0cmlu
ZyYgcHJvcG9zZWRWYWx1ZSkgY29uc3QKICAgICAvLyBXZSBkb24ndCBsb2NhbGl6ZSBzY2llbnRp
ZmljIG5vdGF0aW9ucy4KICAgICBpZiAocHJvcG9zZWRWYWx1ZS5maW5kKGlzRSkgIT0gbm90Rm91
bmQpCiAgICAgICAgIHJldHVybiBwcm9wb3NlZFZhbHVlOwotICAgIC8vIEZJWE1FOiBUaGUgZm9s
bG93aW5nIHRocmVlIGxpbmVzIHNob3VsZCBiZSByZW1vdmVkIHdoZW4gd2UKLSAgICAvLyByZW1v
dmUgdGhlIHNlY29uZCBhcmd1bWVudCBvZiBjb252ZXJ0VG9Mb2NhbGl6ZWROdW1iZXIoKS4KLSAg
ICAvLyBOb3RlOiBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZVdpdGhEZWNpbWFsUGxhY2VzIHNl
dCB6ZXJvIHRvIGRlY2ltYWxQbGFjZXMKLSAgICAvLyBpZiBjdXJyZW50VmFsdWUgaXNuJ3QgdmFs
aWQgZmxvYXRpbmcgcG9pbnRlciBudW1iZXIuCi0gICAgdW5zaWduZWQgZGVjaW1hbFBsYWNlOwot
ICAgIHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlV2l0aERlY2ltYWxQbGFjZXMocHJvcG9zZWRW
YWx1ZSwgJmRlY2ltYWxQbGFjZSk7Ci0gICAgcmV0dXJuIGNvbnZlcnRUb0xvY2FsaXplZE51bWJl
cihwcm9wb3NlZFZhbHVlLCBkZWNpbWFsUGxhY2UpOworICAgIHJldHVybiBjb252ZXJ0VG9Mb2Nh
bGl6ZWROdW1iZXIocHJvcG9zZWRWYWx1ZSwgMCk7CiB9CiAKIFN0cmluZyBOdW1iZXJJbnB1dFR5
cGU6OnZpc2libGVWYWx1ZSgpIGNvbnN0CkBAIC0yNTIsNyArMjI2LDcgQEAgU3RyaW5nIE51bWJl
cklucHV0VHlwZTo6Y29udmVydEZyb21WaXNpYmxlVmFsdWUoY29uc3QgU3RyaW5nJiB2aXNpYmxl
VmFsdWUpIGNvbnMKIGJvb2wgTnVtYmVySW5wdXRUeXBlOjppc0FjY2VwdGFibGVWYWx1ZShjb25z
dCBTdHJpbmcmIHByb3Bvc2VkVmFsdWUpCiB7CiAgICAgU3RyaW5nIHN0YW5kYXJkVmFsdWUgPSBj
b252ZXJ0RnJvbVZpc2libGVWYWx1ZShwcm9wb3NlZFZhbHVlKTsKLSAgICByZXR1cm4gc3RhbmRh
cmRWYWx1ZS5pc0VtcHR5KCkgfHwgcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUoc3RhbmRhcmRW
YWx1ZSwgMCk7CisgICAgcmV0dXJuIHN0YW5kYXJkVmFsdWUuaXNFbXB0eSgpIHx8IHBhcnNlVG9E
ZWNpbWFsRm9yTnVtYmVyVHlwZShzdGFuZGFyZFZhbHVlKS5pc0Zpbml0ZSgpOwogfQogCiBTdHJp
bmcgTnVtYmVySW5wdXRUeXBlOjpzYW5pdGl6ZVZhbHVlKGNvbnN0IFN0cmluZyYgcHJvcG9zZWRW
YWx1ZSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTnVtYmVySW5wdXRU
eXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL051bWJlcklucHV0VHlwZS5oCmluZGV4IGNlNDE3
N2JmYzM1YWM4ZTU5MDEzN2I5MzRmYzhjNWIxMjlkY2RjZWQuLmNjZmUxMzgxMzg2NzA5OGRjM2Ix
NjAzMDA5OTA4Y2M0OWRhNWI0Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTnVt
YmVySW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9OdW1iZXJJbnB1dFR5cGUu
aApAQCAtNDQsNiArNDQsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3Ry
aW5nJiBmb3JtQ29udHJvbFR5cGUoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGRvdWJs
ZSB2YWx1ZUFzTnVtYmVyKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldFZh
bHVlQXNOdW1iZXIoZG91YmxlLCBUZXh0RmllbGRFdmVudEJlaGF2aW9yLCBFeGNlcHRpb25Db2Rl
JikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldFZhbHVlQXNOdW1iZXIoY29u
c3QgRGVjaW1hbCYsIFRleHRGaWVsZEV2ZW50QmVoYXZpb3IsIEV4Y2VwdGlvbkNvZGUmKSBjb25z
dCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgdHlwZU1pc21hdGNoRm9yKGNvbnN0IFN0cmlu
ZyYpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCB0eXBlTWlzbWF0Y2goKSBjb25z
dCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgc2l6ZVNob3VsZEluY2x1ZGVEZWNvcmF0aW9u
KGludCBkZWZhdWx0U2l6ZSwgaW50JiBwcmVmZXJyZWRTaXplKSBjb25zdCBPVkVSUklERTsKQEAg
LTUxLDkgKzUyLDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFN0ZXBSYW5nZSBjcmVhdGVTdGVw
UmFuZ2UoQW55U3RlcEhhbmRsaW5nKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQg
aGFuZGxlS2V5ZG93bkV2ZW50KEtleWJvYXJkRXZlbnQqKSBPVkVSUklERTsKICAgICB2aXJ0dWFs
IHZvaWQgaGFuZGxlV2hlZWxFdmVudChXaGVlbEV2ZW50KikgT1ZFUlJJREU7Ci0gICAgdmlydHVh
bCBkb3VibGUgcGFyc2VUb0RvdWJsZShjb25zdCBTdHJpbmcmLCBkb3VibGUpIGNvbnN0IE9WRVJS
SURFOwotICAgIHZpcnR1YWwgZG91YmxlIHBhcnNlVG9Eb3VibGVXaXRoRGVjaW1hbFBsYWNlcyhj
b25zdCBTdHJpbmcmLCBkb3VibGUsIHVuc2lnbmVkKikgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmly
dHVhbCBTdHJpbmcgc2VyaWFsaXplKGRvdWJsZSkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVh
bCBEZWNpbWFsIHBhcnNlVG9EZWNpbWFsKGNvbnN0IFN0cmluZyYsIGNvbnN0IERlY2ltYWwmKSBj
b25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFN0cmluZyBzZXJpYWxpemUoY29uc3QgRGVjaW1h
bCYpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVCbHVyRXZlbnQoKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIFN0cmluZyBsb2NhbGl6ZVZhbHVlKGNvbnN0IFN0cmluZyYp
IGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgU3RyaW5nIHZpc2libGVWYWx1ZSgpIGNvbnN0
IE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlw
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmNwcAppbmRleCBiNDE3
ZGMzMjAzYjg0N2FkNWM2Y2EyNWRhNTFmZDljN2Q0NjA1Y2NiLi44ZTFmOGQzZjc2MDY3NjE5MGI0
ODQzMmNiM2MyMGNhYmY1YTc4MWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1Jh
bmdlSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBl
LmNwcApAQCAtNTQsMTEgKzU0LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVz
cGFjZSBIVE1MTmFtZXM7CiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCi1zdGF0aWMgY29uc3QgZG91
YmxlIHJhbmdlRGVmYXVsdE1pbmltdW0gPSAwLjA7Ci1zdGF0aWMgY29uc3QgZG91YmxlIHJhbmdl
RGVmYXVsdE1heGltdW0gPSAxMDAuMDsKLXN0YXRpYyBjb25zdCBkb3VibGUgcmFuZ2VEZWZhdWx0
U3RlcCA9IDEuMDsKLXN0YXRpYyBjb25zdCBkb3VibGUgcmFuZ2VEZWZhdWx0U3RlcEJhc2UgPSAw
LjA7Ci1zdGF0aWMgY29uc3QgZG91YmxlIHJhbmdlU3RlcFNjYWxlRmFjdG9yID0gMS4wOworc3Rh
dGljIGNvbnN0IGludCByYW5nZURlZmF1bHRNaW5pbXVtID0gMDsKK3N0YXRpYyBjb25zdCBpbnQg
cmFuZ2VEZWZhdWx0TWF4aW11bSA9IDEwMDsKK3N0YXRpYyBjb25zdCBpbnQgcmFuZ2VEZWZhdWx0
U3RlcCA9IDE7CitzdGF0aWMgY29uc3QgaW50IHJhbmdlRGVmYXVsdFN0ZXBCYXNlID0gMDsKK3N0
YXRpYyBjb25zdCBpbnQgcmFuZ2VTdGVwU2NhbGVGYWN0b3IgPSAxOwogCiBQYXNzT3duUHRyPElu
cHV0VHlwZT4gUmFuZ2VJbnB1dFR5cGU6OmNyZWF0ZShIVE1MSW5wdXRFbGVtZW50KiBlbGVtZW50
KQogewpAQCAtNzcsMTAgKzc3LDEwIEBAIGNvbnN0IEF0b21pY1N0cmluZyYgUmFuZ2VJbnB1dFR5
cGU6OmZvcm1Db250cm9sVHlwZSgpIGNvbnN0CiAKIGRvdWJsZSBSYW5nZUlucHV0VHlwZTo6dmFs
dWVBc051bWJlcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHBhcnNlVG9Eb3VibGUoZWxlbWVudCgp
LT52YWx1ZSgpLCBudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKSk7CisgICAgcmV0
dXJuIHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKGVsZW1lbnQoKS0+dmFsdWUoKSk7CiB9CiAK
LXZvaWQgUmFuZ2VJbnB1dFR5cGU6OnNldFZhbHVlQXNOdW1iZXIoZG91YmxlIG5ld1ZhbHVlLCBU
ZXh0RmllbGRFdmVudEJlaGF2aW9yIGV2ZW50QmVoYXZpb3IsIEV4Y2VwdGlvbkNvZGUmKSBjb25z
dAordm9pZCBSYW5nZUlucHV0VHlwZTo6c2V0VmFsdWVBc051bWJlcihjb25zdCBEZWNpbWFsJiBu
ZXdWYWx1ZSwgVGV4dEZpZWxkRXZlbnRCZWhhdmlvciBldmVudEJlaGF2aW9yLCBFeGNlcHRpb25D
b2RlJikgY29uc3QKIHsKICAgICBlbGVtZW50KCktPnNldFZhbHVlKHNlcmlhbGl6ZShuZXdWYWx1
ZSksIGV2ZW50QmVoYXZpb3IpOwogfQpAQCAtOTQsMTggKzk0LDE2IEBAIFN0ZXBSYW5nZSBSYW5n
ZUlucHV0VHlwZTo6Y3JlYXRlU3RlcFJhbmdlKEFueVN0ZXBIYW5kbGluZyBhbnlTdGVwSGFuZGxp
bmcpIGNvbnN0CiB7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdGVwUmFuZ2U6OlN0
ZXBEZXNjcmlwdGlvbiwgc3RlcERlc2NyaXB0aW9uLCAocmFuZ2VEZWZhdWx0U3RlcCwgcmFuZ2VE
ZWZhdWx0U3RlcEJhc2UsIHJhbmdlU3RlcFNjYWxlRmFjdG9yKSk7CiAKLSAgICBkb3VibGUgbWlu
aW11bSA9IHBhcnNlVG9Eb3VibGUoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1pbkF0dHIp
LCByYW5nZURlZmF1bHRNaW5pbXVtKTsKLSAgICBkb3VibGUgbWF4aW11bSA9IHBhcnNlVG9Eb3Vi
bGUoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1heEF0dHIpLCByYW5nZURlZmF1bHRNYXhp
bXVtKTsKLSAgICBpZiAobWF4aW11bSA8IG1pbmltdW0pCi0gICAgICAgIG1heGltdW0gPSBtYXgo
bWluaW11bSwgcmFuZ2VEZWZhdWx0TWF4aW11bSk7CisgICAgY29uc3QgRGVjaW1hbCBtaW5pbXVt
ID0gcGFyc2VUb0RlY2ltYWwoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpLCBy
YW5nZURlZmF1bHRNaW5pbXVtKTsKKyAgICBjb25zdCBEZWNpbWFsIG1heGltdW0gPSBTdGVwUmFu
Z2U6OmVuc3VyZU1heGltdW0ocGFyc2VUb0RlY2ltYWwoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmli
dXRlKG1heEF0dHIpLCByYW5nZURlZmF1bHRNYXhpbXVtKSwgbWluaW11bSwgcmFuZ2VEZWZhdWx0
TWF4aW11bSk7CiAKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHByZWNpc2lvblZhbHVlID0gZWxl
bWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKHByZWNpc2lvbkF0dHIpOwogICAgIGlmICghcHJlY2lz
aW9uVmFsdWUuaXNOdWxsKCkpIHsKLSAgICAgICAgU3RlcFJhbmdlOjpEb3VibGVXaXRoRGVjaW1h
bFBsYWNlc09yTWlzc2luZyBzdGVwKDEsICFlcXVhbElnbm9yaW5nQ2FzZShwcmVjaXNpb25WYWx1
ZSwgImZsb2F0IikpOworICAgICAgICBTdGVwUmFuZ2U6OkRlY2ltYWxPck1pc3Npbmcgc3RlcCgx
LCAhZXF1YWxJZ25vcmluZ0Nhc2UocHJlY2lzaW9uVmFsdWUsICJmbG9hdCIpKTsKICAgICAgICAg
cmV0dXJuIFN0ZXBSYW5nZShtaW5pbXVtLCBtaW5pbXVtLCBtYXhpbXVtLCBzdGVwLCBzdGVwRGVz
Y3JpcHRpb24pOwogICAgIH0KIAotICAgIFN0ZXBSYW5nZTo6RG91YmxlV2l0aERlY2ltYWxQbGFj
ZXNPck1pc3Npbmcgc3RlcCA9IFN0ZXBSYW5nZTo6cGFyc2VTdGVwKGFueVN0ZXBIYW5kbGluZywg
c3RlcERlc2NyaXB0aW9uLCBlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUoc3RlcEF0dHIpKTsK
KyAgICBjb25zdCBTdGVwUmFuZ2U6OkRlY2ltYWxPck1pc3Npbmcgc3RlcChTdGVwUmFuZ2U6OnBh
cnNlU3RlcChhbnlTdGVwSGFuZGxpbmcsIHN0ZXBEZXNjcmlwdGlvbiwgZWxlbWVudCgpLT5mYXN0
R2V0QXR0cmlidXRlKHN0ZXBBdHRyKSkpOwogICAgIHJldHVybiBTdGVwUmFuZ2UobWluaW11bSwg
bWluaW11bSwgbWF4aW11bSwgc3RlcCwgc3RlcERlc2NyaXB0aW9uKTsKIH0KIApAQCAtMTM4LDI1
ICsxMzYsMTUgQEAgdm9pZCBSYW5nZUlucHV0VHlwZTo6aGFuZGxlS2V5ZG93bkV2ZW50KEtleWJv
YXJkRXZlbnQqIGV2ZW50KQogCiAgICAgY29uc3QgU3RyaW5nJiBrZXkgPSBldmVudC0+a2V5SWRl
bnRpZmllcigpOwogCi0gICAgZG91YmxlIGN1cnJlbnQgPSBwYXJzZVRvRG91YmxlKGVsZW1lbnQo
KS0+dmFsdWUoKSwgbnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCkpOwotICAgIEFT
U0VSVChpc2Zpbml0ZShjdXJyZW50KSk7CisgICAgY29uc3QgRGVjaW1hbCBjdXJyZW50ID0gcGFy
c2VUb0RlY2ltYWxGb3JOdW1iZXJUeXBlKGVsZW1lbnQoKS0+dmFsdWUoKSk7CisgICAgQVNTRVJU
KGN1cnJlbnQuaXNGaW5pdGUoKSk7CiAKLSAgICBTdGVwUmFuZ2Ugc3RlcFJhbmdlKGNyZWF0ZVN0
ZXBSYW5nZShSZWplY3RBbnkpKTsKKyAgICBjb25zdCBTdGVwUmFuZ2Ugc3RlcFJhbmdlKGNyZWF0
ZVN0ZXBSYW5nZShSZWplY3RBbnkpKTsKIAotICAgIGRvdWJsZSBzdGVwLCBiaWdTdGVwOwotICAg
IGlmIChlcXVhbElnbm9yaW5nQ2FzZShlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUoc3RlcEF0
dHIpLCAiYW55IikpIHsKLSAgICAgICAgLy8gRklYTUU6IFdlIGNhbid0IHVzZSBzdGVwVXAoKSBm
b3IgdGhlIHN0ZXAgdmFsdWUgImFueSIuIFNvLCB3ZSBpbmNyZWFzZQotICAgICAgICAvLyBvciBk
ZWNyZWFzZSB0aGUgdmFsdWUgYnkgMS8xMDAgb2YgdGhlIHZhbHVlIHJhbmdlLiBJcyBpdCByZWFz
b25hYmxlPwotICAgICAgICBzdGVwID0gKHN0ZXBSYW5nZS5tYXhpbXVtKCkgLSBzdGVwUmFuZ2Uu
bWluaW11bSgpKSAvIDEwMDsKLSAgICAgICAgYmlnU3RlcCA9IHN0ZXAgKiAxMDsKLSAgICB9IGVs
c2UgewotICAgICAgICBpZiAoIWVsZW1lbnQoKS0+Z2V0QWxsb3dlZFZhbHVlU3RlcCgmc3RlcCkp
Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLQotICAgICAgICBiaWdTdGVwID0g
KHN0ZXBSYW5nZS5tYXhpbXVtKCkgLSBzdGVwUmFuZ2UubWluaW11bSgpKSAvIDEwOwotICAgICAg
ICBpZiAoYmlnU3RlcCA8IHN0ZXApCi0gICAgICAgICAgICBiaWdTdGVwID0gc3RlcDsKLSAgICB9
CisgICAgLy8gRklYTUU6IFdlIGNhbid0IHVzZSBzdGVwVXAoKSBmb3IgdGhlIHN0ZXAgdmFsdWUg
ImFueSIuIFNvLCB3ZSBpbmNyZWFzZQorICAgIC8vIG9yIGRlY3JlYXNlIHRoZSB2YWx1ZSBieSAx
LzEwMCBvZiB0aGUgdmFsdWUgcmFuZ2UuIElzIGl0IHJlYXNvbmFibGU/CisgICAgY29uc3QgRGVj
aW1hbCBzdGVwID0gZXF1YWxJZ25vcmluZ0Nhc2UoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRl
KHN0ZXBBdHRyKSwgImFueSIpID8gKHN0ZXBSYW5nZS5tYXhpbXVtKCkgLSBzdGVwUmFuZ2UubWlu
aW11bSgpKSAvIDEwMCA6IHN0ZXBSYW5nZS5zdGVwKCk7CisgICAgY29uc3QgRGVjaW1hbCBiaWdT
dGVwID0gbWF4KChzdGVwUmFuZ2UubWF4aW11bSgpIC0gc3RlcFJhbmdlLm1pbmltdW0oKSkgLyAx
MCwgc3RlcCk7CiAKICAgICBib29sIGlzVmVydGljYWwgPSBmYWxzZTsKICAgICBpZiAoZWxlbWVu
dCgpLT5yZW5kZXJlcigpKSB7CkBAIC0xNjQsNyArMTUyLDcgQEAgdm9pZCBSYW5nZUlucHV0VHlw
ZTo6aGFuZGxlS2V5ZG93bkV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQogICAgICAgICBpc1Zl
cnRpY2FsID0gcGFydCA9PSBTbGlkZXJWZXJ0aWNhbFBhcnQgfHwgcGFydCA9PSBNZWRpYVZvbHVt
ZVNsaWRlclBhcnQ7CiAgICAgfQogCi0gICAgZG91YmxlIG5ld1ZhbHVlOworICAgIERlY2ltYWwg
bmV3VmFsdWU7CiAgICAgaWYgKGtleSA9PSAiVXAiKQogICAgICAgICBuZXdWYWx1ZSA9IGN1cnJl
bnQgKyBzdGVwOwogICAgIGVsc2UgaWYgKGtleSA9PSAiRG93biIpCkBAIC0yMTksMTYgKzIwNywx
NCBAQCBSZW5kZXJPYmplY3QqIFJhbmdlSW5wdXRUeXBlOjpjcmVhdGVSZW5kZXJlcihSZW5kZXJB
cmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikgYwogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5k
ZXJTbGlkZXIoZWxlbWVudCgpKTsKIH0KIAotZG91YmxlIFJhbmdlSW5wdXRUeXBlOjpwYXJzZVRv
RG91YmxlKGNvbnN0IFN0cmluZyYgc3JjLCBkb3VibGUgZGVmYXVsdFZhbHVlKSBjb25zdAorRGVj
aW1hbCBSYW5nZUlucHV0VHlwZTo6cGFyc2VUb0RlY2ltYWwoY29uc3QgU3RyaW5nJiBzcmMsIGNv
bnN0IERlY2ltYWwmIGRlZmF1bHRWYWx1ZSkgY29uc3QKIHsKLSAgICByZXR1cm4gcGFyc2VUb0Rv
dWJsZUZvck51bWJlclR5cGUoc3JjLCBkZWZhdWx0VmFsdWUpOworICAgIHJldHVybiBwYXJzZVRv
RGVjaW1hbEZvck51bWJlclR5cGUoc3JjLCBkZWZhdWx0VmFsdWUpOwogfQogCi1TdHJpbmcgUmFu
Z2VJbnB1dFR5cGU6OnNlcmlhbGl6ZShkb3VibGUgdmFsdWUpIGNvbnN0CitTdHJpbmcgUmFuZ2VJ
bnB1dFR5cGU6OnNlcmlhbGl6ZShjb25zdCBEZWNpbWFsJiB2YWx1ZSkgY29uc3QKIHsKLSAgICBp
ZiAoIWlzZmluaXRlKHZhbHVlKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIHJldHVy
biBzZXJpYWxpemVGb3JOdW1iZXJUeXBlKHZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWUuaXNGaW5p
dGUoKSA/IHNlcmlhbGl6ZUZvck51bWJlclR5cGUodmFsdWUpIDogZW1wdHlTdHJpbmcoKTsKIH0K
IAogLy8gRklYTUU6IENvdWxkIHNoYXJlIHRoaXMgd2l0aCBCYXNlQ2xpY2thYmxlV2l0aEtleUlu
cHV0VHlwZSBhbmQgQmFzZUNoZWNrYWJsZUlucHV0VHlwZSBpZiB3ZSBoYWQgYSBjb21tb24gYmFz
ZSBjbGFzcy4KQEAgLTI2OCw4ICsyNTQsOCBAQCBTdHJpbmcgUmFuZ2VJbnB1dFR5cGU6OmZhbGxi
YWNrVmFsdWUoKSBjb25zdAogCiBTdHJpbmcgUmFuZ2VJbnB1dFR5cGU6OnNhbml0aXplVmFsdWUo
Y29uc3QgU3RyaW5nJiBwcm9wb3NlZFZhbHVlKSBjb25zdAogewotICAgIFN0ZXBSYW5nZSBzdGVw
UmFuZ2UoY3JlYXRlU3RlcFJhbmdlKFJlamVjdEFueSkpOwotICAgIGRvdWJsZSBwcm9wb3NlZERv
dWJsZVZhbHVlID0gcGFyc2VUb0RvdWJsZShwcm9wb3NlZFZhbHVlLCBzdGVwUmFuZ2UuZGVmYXVs
dFZhbHVlKCkpOworICAgIGNvbnN0IFN0ZXBSYW5nZSBzdGVwUmFuZ2UoY3JlYXRlU3RlcFJhbmdl
KFJlamVjdEFueSkpOworICAgIGNvbnN0IERlY2ltYWwgcHJvcG9zZWREb3VibGVWYWx1ZSA9IHBh
cnNlVG9EZWNpbWFsKHByb3Bvc2VkVmFsdWUsIHN0ZXBSYW5nZS5kZWZhdWx0VmFsdWUoKSk7CiAg
ICAgcmV0dXJuIHNlcmlhbGl6ZUZvck51bWJlclR5cGUoc3RlcFJhbmdlLmNsYW1wVmFsdWUocHJv
cG9zZWREb3VibGVWYWx1ZSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L1JhbmdlSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmgK
aW5kZXggNDVmYjRhZmEzYTk1NGQzNGM3ODE4NTk5ZTMxZGI1MzQ4NDc5ZDFmMy4uOTUzZmU1OThm
ZWM5ZjJhNDI5MTNlNDkxMmZlMzY0ZWQzY2Q5OGY3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9SYW5nZUlucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJ
bnB1dFR5cGUuaApAQCAtNDYsNyArNDYsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBp
c1JhbmdlQ29udHJvbCgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgY29uc3QgQXRvbWlj
U3RyaW5nJiBmb3JtQ29udHJvbFR5cGUoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGRv
dWJsZSB2YWx1ZUFzTnVtYmVyKCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHNl
dFZhbHVlQXNOdW1iZXIoZG91YmxlLCBUZXh0RmllbGRFdmVudEJlaGF2aW9yLCBFeGNlcHRpb25D
b2RlJikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldFZhbHVlQXNOdW1iZXIo
Y29uc3QgRGVjaW1hbCYsIFRleHRGaWVsZEV2ZW50QmVoYXZpb3IsIEV4Y2VwdGlvbkNvZGUmKSBj
b25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNSZXF1aXJlZCgpIGNvbnN0
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgU3RlcFJhbmdlIGNyZWF0ZVN0ZXBSYW5nZShBbnlTdGVw
SGFuZGxpbmcpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBpc1N0ZXBwYWJsZSgp
IGNvbnN0IE9WRVJSSURFOwpAQCAtNTQsOCArNTQsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwg
dm9pZCBoYW5kbGVLZXlkb3duRXZlbnQoS2V5Ym9hcmRFdmVudCopIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0
eWxlKikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGNyZWF0ZVNoYWRvd1N1YnRy
ZWUoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGRvdWJsZSBwYXJzZVRvRG91YmxlKGNvbnN0IFN0
cmluZyYsIGRvdWJsZSkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBTdHJpbmcgc2VyaWFs
aXplKGRvdWJsZSkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBEZWNpbWFsIHBhcnNlVG9E
ZWNpbWFsKGNvbnN0IFN0cmluZyYsIGNvbnN0IERlY2ltYWwmKSBjb25zdCBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIFN0cmluZyBzZXJpYWxpemUoY29uc3QgRGVjaW1hbCYpIGNvbnN0IE9WRVJSSURF
OwogICAgIHZpcnR1YWwgdm9pZCBhY2Nlc3NLZXlBY3Rpb24oYm9vbCBzZW5kTW91c2VFdmVudHMp
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBtaW5Pck1heEF0dHJpYnV0ZUNoYW5nZWQoKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWUoY29uc3QgU3RyaW5nJiwgYm9vbCB2
YWx1ZUNoYW5nZWQsIFRleHRGaWVsZEV2ZW50QmVoYXZpb3IpIE9WRVJSSURFOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9TdGVwUmFuZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9TdGVwUmFuZ2UuY3BwCmluZGV4IDliOWI3ZGNjOTQ5Y2M3NWQ1NTBiMDgwN2E5M2I3NjA0NTc4
ODdhODkuLmZiMmU3MWI0MTU2OGQ3NjM2NGNiMDBmM2JjNzQ4OWMzZTA1NmNjNzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvU3RlcFJhbmdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1N0ZXBSYW5nZS5jcHAKQEAgLTM3LDggKzM3LDYgQEAgU3RlcFJhbmdlOjpTdGVwUmFu
Z2UoKQogICAgICwgbV9taW5pbXVtKDApCiAgICAgLCBtX3N0ZXAoMSkKICAgICAsIG1fc3RlcEJh
c2UoMCkKLSAgICAsIG1fc3RlcEJhc2VEZWNpbWFsUGxhY2VzKDApCi0gICAgLCBtX3N0ZXBEZWNp
bWFsUGxhY2VzKDApCiAgICAgLCBtX2hhc1N0ZXAoZmFsc2UpCiB7CiB9CkBAIC00OSw1NSArNDcs
NDYgQEAgU3RlcFJhbmdlOjpTdGVwUmFuZ2UoY29uc3QgU3RlcFJhbmdlJiBzdGVwUmFuZ2UpCiAg
ICAgLCBtX3N0ZXAoc3RlcFJhbmdlLm1fc3RlcCkKICAgICAsIG1fc3RlcEJhc2Uoc3RlcFJhbmdl
Lm1fc3RlcEJhc2UpCiAgICAgLCBtX3N0ZXBEZXNjcmlwdGlvbihzdGVwUmFuZ2UubV9zdGVwRGVz
Y3JpcHRpb24pCi0gICAgLCBtX3N0ZXBCYXNlRGVjaW1hbFBsYWNlcyhzdGVwUmFuZ2UubV9zdGVw
QmFzZURlY2ltYWxQbGFjZXMpCi0gICAgLCBtX3N0ZXBEZWNpbWFsUGxhY2VzKHN0ZXBSYW5nZS5t
X3N0ZXBEZWNpbWFsUGxhY2VzKQogICAgICwgbV9oYXNTdGVwKHN0ZXBSYW5nZS5tX2hhc1N0ZXAp
CiB7CiB9CiAKLVN0ZXBSYW5nZTo6U3RlcFJhbmdlKGNvbnN0IERvdWJsZVdpdGhEZWNpbWFsUGxh
Y2VzJiBzdGVwQmFzZSwgZG91YmxlIG1pbmltdW0sIGRvdWJsZSBtYXhpbXVtLCBjb25zdCBEb3Vi
bGVXaXRoRGVjaW1hbFBsYWNlc09yTWlzc2luZyYgc3RlcCwgY29uc3QgU3RlcERlc2NyaXB0aW9u
JiBzdGVwRGVzY3JpcHRpb24pCitTdGVwUmFuZ2U6OlN0ZXBSYW5nZShjb25zdCBEZWNpbWFsJiBz
dGVwQmFzZSwgY29uc3QgRGVjaW1hbCYgbWluaW11bSwgY29uc3QgRGVjaW1hbCYgbWF4aW11bSwg
Y29uc3QgRGVjaW1hbE9yTWlzc2luZyYgc3RlcCwgY29uc3QgU3RlcERlc2NyaXB0aW9uJiBzdGVw
RGVzY3JpcHRpb24pCiAgICAgOiBtX21heGltdW0obWF4aW11bSkKICAgICAsIG1fbWluaW11bSht
aW5pbXVtKQotICAgICwgbV9zdGVwKHN0ZXAudmFsdWUudmFsdWUpCi0gICAgLCBtX3N0ZXBCYXNl
KHN0ZXBCYXNlLnZhbHVlKQorICAgICwgbV9zdGVwKHN0ZXAudmFsdWUpCisgICAgLCBtX3N0ZXBC
YXNlKHN0ZXBCYXNlKQogICAgICwgbV9zdGVwRGVzY3JpcHRpb24oc3RlcERlc2NyaXB0aW9uKQot
ICAgICwgbV9zdGVwQmFzZURlY2ltYWxQbGFjZXMoc3RlcEJhc2UuZGVjaW1hbFBsYWNlcykKLSAg
ICAsIG1fc3RlcERlY2ltYWxQbGFjZXMoc3RlcC52YWx1ZS5kZWNpbWFsUGxhY2VzKQogICAgICwg
bV9oYXNTdGVwKHN0ZXAuaGFzVmFsdWUpCiB7Ci0gICAgQVNTRVJUKGlzZmluaXRlKG1fbWF4aW11
bSkpOwotICAgIEFTU0VSVChpc2Zpbml0ZShtX21pbmltdW0pKTsKLSAgICBBU1NFUlQoaXNmaW5p
dGUobV9zdGVwKSk7Ci0gICAgQVNTRVJUKGlzZmluaXRlKG1fc3RlcEJhc2UpKTsKKyAgICBBU1NF
UlQobV9tYXhpbXVtLmlzRmluaXRlKCkpOworICAgIEFTU0VSVChtX21pbmltdW0uaXNGaW5pdGUo
KSk7CisgICAgQVNTRVJUKG1fc3RlcC5pc0Zpbml0ZSgpKTsKKyAgICBBU1NFUlQobV9zdGVwQmFz
ZS5pc0Zpbml0ZSgpKTsKIH0KIAotZG91YmxlIFN0ZXBSYW5nZTo6YWNjZXB0YWJsZUVycm9yKCkg
Y29uc3QKK0RlY2ltYWwgU3RlcFJhbmdlOjphY2NlcHRhYmxlRXJyb3IoKSBjb25zdAogewotICAg
IHJldHVybiBtX3N0ZXAgLyBwb3coMi4wLCBGTFRfTUFOVF9ESUcpOworICAgIERFRklORV9TVEFU
SUNfTE9DQUwoY29uc3QgRGVjaW1hbCwgdHdvUG93ZXJPZkZsb2F0TWFudGlzc2FCaXRzLCAoRGVj
aW1hbDo6UG9zaXRpdmUsIDAsIFVJTlQ2NF9DKDEpIDw8IEZMVF9NQU5UX0RJRykpOworICAgIHJl
dHVybiBtX3N0ZXAgLyB0d29Qb3dlck9mRmxvYXRNYW50aXNzYUJpdHM7CiB9CiAKLWRvdWJsZSBT
dGVwUmFuZ2U6OmFsaWduVmFsdWVGb3JTdGVwKGRvdWJsZSBjdXJyZW50VmFsdWUsIHVuc2lnbmVk
IGN1cnJlbnREZWNpbWFsUGxhY2VzLCBkb3VibGUgbmV3VmFsdWUpIGNvbnN0CitEZWNpbWFsIFN0
ZXBSYW5nZTo6YWxpZ25WYWx1ZUZvclN0ZXAoY29uc3QgRGVjaW1hbCYgY3VycmVudFZhbHVlLCBj
b25zdCBEZWNpbWFsJiBuZXdWYWx1ZSkgY29uc3QKIHsKLSAgICBpZiAobmV3VmFsdWUgPj0gcG93
KDEwLjAsIDIxLjApKQorICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgRGVjaW1hbCwgdGVu
UG93ZXJPZjIxLCAoRGVjaW1hbDo6UG9zaXRpdmUsIDIxLCAxKSk7CisgICAgaWYgKG5ld1ZhbHVl
ID49IHRlblBvd2VyT2YyMSkKICAgICAgICAgcmV0dXJuIG5ld1ZhbHVlOwogCi0gICAgaWYgKHN0
ZXBNaXNtYXRjaChjdXJyZW50VmFsdWUpKSB7Ci0gICAgICAgIGRvdWJsZSBzY2FsZSA9IHBvdygx
MC4wLCBzdGF0aWNfY2FzdDxkb3VibGU+KG1heChtX3N0ZXBEZWNpbWFsUGxhY2VzLCBjdXJyZW50
RGVjaW1hbFBsYWNlcykpKTsKLSAgICAgICAgbmV3VmFsdWUgPSByb3VuZChuZXdWYWx1ZSAqIHNj
YWxlKSAvIHNjYWxlOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGRvdWJsZSBzY2FsZSA9IHBvdygx
MC4wLCBzdGF0aWNfY2FzdDxkb3VibGU+KG1heChtX3N0ZXBEZWNpbWFsUGxhY2VzLCBtX3N0ZXBC
YXNlRGVjaW1hbFBsYWNlcykpKTsKLSAgICAgICAgbmV3VmFsdWUgPSByb3VuZCgobV9zdGVwQmFz
ZSArIHJvdW5kKChuZXdWYWx1ZSAtIG1fc3RlcEJhc2UpIC8gbV9zdGVwKSAqIG1fc3RlcCkgKiBz
Y2FsZSkgLyBzY2FsZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gbmV3VmFsdWU7CisgICAgcmV0dXJu
IHN0ZXBNaXNtYXRjaChjdXJyZW50VmFsdWUpID8gbmV3VmFsdWUgOiByb3VuZEJ5U3RlcChuZXdW
YWx1ZSwgbV9zdGVwQmFzZSk7CiB9Ci1kb3VibGUgU3RlcFJhbmdlOjpjbGFtcFZhbHVlKGRvdWJs
ZSB2YWx1ZSkgY29uc3QKKworRGVjaW1hbCBTdGVwUmFuZ2U6OmNsYW1wVmFsdWUoY29uc3QgRGVj
aW1hbCYgdmFsdWUpIGNvbnN0CiB7Ci0gICAgZG91YmxlIGNsYW1wZWRWYWx1ZSA9IG1heChtX21p
bmltdW0sIG1pbih2YWx1ZSwgbV9tYXhpbXVtKSk7CisgICAgRGVjaW1hbCBjbGFtcGVkVmFsdWUg
PSBtYXgobV9taW5pbXVtLCBtaW4odmFsdWUsIG1fbWF4aW11bSkpOwogICAgIGlmICghbV9oYXNT
dGVwKQogICAgICAgICByZXR1cm4gY2xhbXBlZFZhbHVlOwogICAgIC8vIFJvdW5kcyBjbGFtcGVk
VmFsdWUgdG8gbWluaW11bSArIE4gKiBzdGVwLgotICAgIGNsYW1wZWRWYWx1ZSA9IG1fbWluaW11
bSArIHJvdW5kKChjbGFtcGVkVmFsdWUgLSBtX21pbmltdW0pIC8gbV9zdGVwKSAqIG1fc3RlcDsK
KyAgICBjbGFtcGVkVmFsdWUgPSByb3VuZEJ5U3RlcChjbGFtcGVkVmFsdWUsIG1fbWluaW11bSk7
CiAgICAgaWYgKGNsYW1wZWRWYWx1ZSA+IG1fbWF4aW11bSkKICAgICAgICBjbGFtcGVkVmFsdWUg
LT0gbV9zdGVwOwogICAgIEFTU0VSVChjbGFtcGVkVmFsdWUgPj0gbV9taW5pbXVtKTsKQEAgLTEw
NSw3MCArOTQsNzAgQEAgZG91YmxlIFN0ZXBSYW5nZTo6Y2xhbXBWYWx1ZShkb3VibGUgdmFsdWUp
IGNvbnN0CiAgICAgcmV0dXJuIGNsYW1wZWRWYWx1ZTsKIH0KIAotU3RlcFJhbmdlOjpEb3VibGVX
aXRoRGVjaW1hbFBsYWNlc09yTWlzc2luZyBTdGVwUmFuZ2U6OnBhcnNlU3RlcChBbnlTdGVwSGFu
ZGxpbmcgYW55U3RlcEhhbmRsaW5nLCBjb25zdCBTdGVwRGVzY3JpcHRpb24mIHN0ZXBEZXNjcmlw
dGlvbiwgY29uc3QgU3RyaW5nJiBzdGVwU3RyaW5nKQorU3RlcFJhbmdlOjpEZWNpbWFsT3JNaXNz
aW5nIFN0ZXBSYW5nZTo6cGFyc2VTdGVwKEFueVN0ZXBIYW5kbGluZyBhbnlTdGVwSGFuZGxpbmcs
IGNvbnN0IFN0ZXBEZXNjcmlwdGlvbiYgc3RlcERlc2NyaXB0aW9uLCBjb25zdCBTdHJpbmcmIHN0
ZXBTdHJpbmcpCiB7CiAgICAgaWYgKHN0ZXBTdHJpbmcuaXNFbXB0eSgpKQotICAgICAgICByZXR1
cm4gRG91YmxlV2l0aERlY2ltYWxQbGFjZXNPck1pc3Npbmcoc3RlcERlc2NyaXB0aW9uLmRlZmF1
bHRWYWx1ZSgpKTsKKyAgICAgICAgcmV0dXJuIERlY2ltYWxPck1pc3Npbmcoc3RlcERlc2NyaXB0
aW9uLmRlZmF1bHRWYWx1ZSgpKTsKIAogICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShzdGVwU3Ry
aW5nLCAiYW55IikpIHsKICAgICAgICAgc3dpdGNoIChhbnlTdGVwSGFuZGxpbmcpIHsKICAgICAg
ICAgY2FzZSBSZWplY3RBbnk6Ci0gICAgICAgICAgICByZXR1cm4gRG91YmxlV2l0aERlY2ltYWxQ
bGFjZXNPck1pc3NpbmcoRG91YmxlV2l0aERlY2ltYWxQbGFjZXMoMSksIGZhbHNlKTsKKyAgICAg
ICAgICAgIHJldHVybiBEZWNpbWFsT3JNaXNzaW5nKERlY2ltYWwoMSksIGZhbHNlKTsKICAgICAg
ICAgY2FzZSBBbnlJc0RlZmF1bHRTdGVwOgotICAgICAgICAgICAgcmV0dXJuIERvdWJsZVdpdGhE
ZWNpbWFsUGxhY2VzT3JNaXNzaW5nKHN0ZXBEZXNjcmlwdGlvbi5kZWZhdWx0VmFsdWUoKSk7Cisg
ICAgICAgICAgICByZXR1cm4gRGVjaW1hbE9yTWlzc2luZyhzdGVwRGVzY3JpcHRpb24uZGVmYXVs
dFZhbHVlKCkpOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBEb3VibGVXaXRoRGVjaW1hbFBsYWNlc09y
TWlzc2luZyBzdGVwKDApOwotICAgIHN0ZXAudmFsdWUudmFsdWUgPSBwYXJzZVRvRG91YmxlRm9y
TnVtYmVyVHlwZVdpdGhEZWNpbWFsUGxhY2VzKHN0ZXBTdHJpbmcsICZzdGVwLnZhbHVlLmRlY2lt
YWxQbGFjZXMpOwotICAgIGlmICghaXNmaW5pdGUoc3RlcC52YWx1ZS52YWx1ZSkgfHwgc3RlcC52
YWx1ZS52YWx1ZSA8PSAwLjApCi0gICAgICAgIHJldHVybiBEb3VibGVXaXRoRGVjaW1hbFBsYWNl
c09yTWlzc2luZyhzdGVwRGVzY3JpcHRpb24uZGVmYXVsdFZhbHVlKCkpOworICAgIERlY2ltYWwg
c3RlcChwYXJzZVRvRGVjaW1hbEZvck51bWJlclR5cGUoc3RlcFN0cmluZykpOworICAgIGlmICgh
c3RlcC5pc0Zpbml0ZSgpIHx8IHN0ZXAgPD0gMCkKKyAgICAgICAgcmV0dXJuIERlY2ltYWxPck1p
c3Npbmcoc3RlcERlc2NyaXB0aW9uLmRlZmF1bHRWYWx1ZSgpKTsKIAogICAgIHN3aXRjaCAoc3Rl
cERlc2NyaXB0aW9uLnN0ZXBWYWx1ZVNob3VsZEJlKSB7CiAgICAgY2FzZSBTdGVwVmFsdWVTaG91
bGRCZVJlYWw6Ci0gICAgICAgIHN0ZXAudmFsdWUudmFsdWUgKj0gc3RlcERlc2NyaXB0aW9uLnN0
ZXBTY2FsZUZhY3RvcjsKKyAgICAgICAgc3RlcCAqPSBzdGVwRGVzY3JpcHRpb24uc3RlcFNjYWxl
RmFjdG9yOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFBhcnNlZFN0ZXBWYWx1ZVNob3VsZEJl
SW50ZWdlcjoKICAgICAgICAgLy8gRm9yIGRhdGUsIG1vbnRoLCBhbmQgd2VlaywgdGhlIHBhcnNl
ZCB2YWx1ZSBzaG91bGQgYmUgYW4gaW50ZWdlciBmb3Igc29tZSB0eXBlcy4KLSAgICAgICAgc3Rl
cC52YWx1ZS52YWx1ZSA9IG1heChyb3VuZChzdGVwLnZhbHVlLnZhbHVlKSwgMS4wKTsKLSAgICAg
ICAgc3RlcC52YWx1ZS52YWx1ZSAqPSBzdGVwRGVzY3JpcHRpb24uc3RlcFNjYWxlRmFjdG9yOwor
ICAgICAgICBzdGVwID0gbWF4KHN0ZXAucm91bmQoKSwgRGVjaW1hbCgxKSk7CisgICAgICAgIHN0
ZXAgKj0gc3RlcERlc2NyaXB0aW9uLnN0ZXBTY2FsZUZhY3RvcjsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBTY2FsZWRTdGVwVmFsdWVTaG91bGRCZUludGVnZXI6CiAgICAgICAgIC8vIEZvciBk
YXRldGltZSwgZGF0ZXRpbWUtbG9jYWwsIHRpbWUsIHRoZSByZXN1bHQgc2hvdWxkIGJlIGFuIGlu
dGVnZXIuCi0gICAgICAgIHN0ZXAudmFsdWUudmFsdWUgKj0gc3RlcERlc2NyaXB0aW9uLnN0ZXBT
Y2FsZUZhY3RvcjsKLSAgICAgICAgc3RlcC52YWx1ZS52YWx1ZSA9IG1heChyb3VuZChzdGVwLnZh
bHVlLnZhbHVlKSwgMS4wKTsKKyAgICAgICAgc3RlcCAqPSBzdGVwRGVzY3JpcHRpb24uc3RlcFNj
YWxlRmFjdG9yOworICAgICAgICBzdGVwID0gbWF4KHN0ZXAucm91bmQoKSwgRGVjaW1hbCgxKSk7
CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgIH0KIAotICAgIEFTU0VSVChzdGVwLnZhbHVlLnZhbHVlID4gMCk7Ci0gICAgcmV0
dXJuIHN0ZXA7CisgICAgQVNTRVJUKHN0ZXAgPiAwKTsKKyAgICByZXR1cm4gRGVjaW1hbE9yTWlz
c2luZyhzdGVwKTsKIH0KIAotYm9vbCBTdGVwUmFuZ2U6OnN0ZXBNaXNtYXRjaChkb3VibGUgZG91
YmxlVmFsdWUpIGNvbnN0Citib29sIFN0ZXBSYW5nZTo6c3RlcE1pc21hdGNoKGNvbnN0IERlY2lt
YWwmIHZhbHVlRm9yQ2hlY2spIGNvbnN0CiB7CiAgICAgaWYgKCFtX2hhc1N0ZXApCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWlzZmluaXRlKGRvdWJsZVZhbHVlKSkKKyAgICBpZiAo
IXZhbHVlRm9yQ2hlY2suaXNGaW5pdGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGRv
dWJsZVZhbHVlID0gZmFicyhkb3VibGVWYWx1ZSAtIG1fc3RlcEJhc2UpOwotICAgIGlmIChpc2lu
Zihkb3VibGVWYWx1ZSkpCisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBEZWNpbWFsLCB0
d29Qb3dlck9mRG91YmxlTWFudGlzc2FCaXRzLCAoRGVjaW1hbDo6UG9zaXRpdmUsIDAsIFVJTlQ2
NF9DKDEpIDw8IERCTF9NQU5UX0RJRykpOworICAgIGNvbnN0IERlY2ltYWwgdmFsdWUgPSAodmFs
dWVGb3JDaGVjayAtIG1fc3RlcEJhc2UpLmFicygpOworICAgIGlmICghdmFsdWUuaXNGaW5pdGUo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIC8vIGRvdWJsZSdzIGZyYWN0aW9uYWwgcGFy
dCBzaXplIGlzIERCTF9NQU5fRElHLWJpdC4gSWYgdGhlIGN1cnJlbnQgdmFsdWUKKyAgICAvLyBE
ZWNpbWFsJ3MgZnJhY3Rpb25hbCBwYXJ0IHNpemUgaXMgREJMX01BTl9ESUctYml0LiBJZiB0aGUg
Y3VycmVudCB2YWx1ZQogICAgIC8vIGlzIGdyZWF0ZXIgdGhhbiBzdGVwKjJeREJMX01BTlRfRElH
LCB0aGUgZm9sbG93aW5nIGNvbXB1dGF0aW9uIGZvcgogICAgIC8vIHJlbWFpbmRlciBtYWtlcyBu
byBzZW5zZS4KLSAgICBpZiAoZG91YmxlVmFsdWUgLyBwb3coMi4wLCBEQkxfTUFOVF9ESUcpID4g
bV9zdGVwKQorICAgIGlmICh2YWx1ZSAvIHR3b1Bvd2VyT2ZEb3VibGVNYW50aXNzYUJpdHMgPiBt
X3N0ZXApCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAvLyBUaGUgY29tcHV0YXRpb24gZm9s
bG93cyBIVE1MNSA0LjEwLjcuMi4xMCBgVGhlIHN0ZXAgYXR0cmlidXRlJyA6CiAgICAgLy8gLi4u
IHRoYXQgbnVtYmVyIHN1YnRyYWN0ZWQgZnJvbSB0aGUgc3RlcCBiYXNlIGlzIG5vdCBhbiBpbnRl
Z3JhbCBtdWx0aXBsZQogICAgIC8vIG9mIHRoZSBhbGxvd2VkIHZhbHVlIHN0ZXAsIHRoZSBlbGVt
ZW50IGlzIHN1ZmZlcmluZyBmcm9tIGEgc3RlcCBtaXNtYXRjaC4KLSAgICBkb3VibGUgcmVtYWlu
ZGVyID0gZmFicyhkb3VibGVWYWx1ZSAtIG1fc3RlcCAqIHJvdW5kKGRvdWJsZVZhbHVlIC8gbV9z
dGVwKSk7CisgICAgY29uc3QgRGVjaW1hbCByZW1haW5kZXIgPSAodmFsdWUgLSBtX3N0ZXAgKiAo
dmFsdWUgLyBtX3N0ZXApLnJvdW5kKCkpLmFicygpOwogICAgIC8vIEFjY2VwdHMgZXJyb3MgaW4g
bG93ZXIgZnJhY3Rpb25hbCBwYXJ0IHdoaWNoIElFRUUgNzU0IHNpbmdsZS1wcmVjaXNpb24KICAg
ICAvLyBjYW4ndCByZXByZXNlbnQuCi0gICAgZG91YmxlIGNvbXB1dGVkQWNjZXB0YWJsZUVycm9y
ID0gYWNjZXB0YWJsZUVycm9yKCk7CisgICAgY29uc3QgRGVjaW1hbCBjb21wdXRlZEFjY2VwdGFi
bGVFcnJvciA9IGFjY2VwdGFibGVFcnJvcigpOwogICAgIHJldHVybiBjb21wdXRlZEFjY2VwdGFi
bGVFcnJvciA8IHJlbWFpbmRlciAmJiByZW1haW5kZXIgPCAobV9zdGVwIC0gY29tcHV0ZWRBY2Nl
cHRhYmxlRXJyb3IpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1N0ZXBS
YW5nZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9TdGVwUmFuZ2UuaAppbmRleCAwYWRiZmQ4NTdh
NTA2OTk5MzFjYmQzOTEwNmY2YjA0YTZlNzQyYzhkLi4zMGE2MzBmYjk5YzBkMWU0NTdlMDNmYWFm
OTkxMDI4OGQ2Mjc1MzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1N0ZXBSYW5n
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvU3RlcFJhbmdlLmgKQEAgLTIxLDYgKzIxLDcg
QEAKICNpZm5kZWYgU3RlcFJhbmdlX2gKICNkZWZpbmUgU3RlcFJhbmdlX2gKIAorI2luY2x1ZGUg
IkRlY2ltYWwuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25j
b3B5YWJsZS5oPgogCkBAIC0zMiwyMiArMzMsMTEgQEAgZW51bSBBbnlTdGVwSGFuZGxpbmcgeyBS
ZWplY3RBbnksIEFueUlzRGVmYXVsdFN0ZXAgfTsKIAogY2xhc3MgU3RlcFJhbmdlIHsKIHB1Ymxp
YzoKLSAgICBzdHJ1Y3QgRG91YmxlV2l0aERlY2ltYWxQbGFjZXMgewotICAgICAgICB1bnNpZ25l
ZCBkZWNpbWFsUGxhY2VzOwotICAgICAgICBkb3VibGUgdmFsdWU7Ci0KLSAgICAgICAgRG91Ymxl
V2l0aERlY2ltYWxQbGFjZXMoZG91YmxlIHZhbHVlID0gMCwgdW5zaWduZWQgZGVjaW1hbFBsYWNl
cyA9IDApCi0gICAgICAgICAgICA6IGRlY2ltYWxQbGFjZXMoZGVjaW1hbFBsYWNlcykKLSAgICAg
ICAgICAgICwgdmFsdWUodmFsdWUpCi0gICAgICAgIHsKLSAgICAgICAgfQotICAgIH07Ci0KLSAg
ICBzdHJ1Y3QgRG91YmxlV2l0aERlY2ltYWxQbGFjZXNPck1pc3NpbmcgeworICAgIHN0cnVjdCBE
ZWNpbWFsT3JNaXNzaW5nIHsKICAgICAgICAgYm9vbCBoYXNWYWx1ZTsKLSAgICAgICAgRG91Ymxl
V2l0aERlY2ltYWxQbGFjZXMgdmFsdWU7CisgICAgICAgIERlY2ltYWwgdmFsdWU7CiAKLSAgICAg
ICAgRG91YmxlV2l0aERlY2ltYWxQbGFjZXNPck1pc3NpbmcoRG91YmxlV2l0aERlY2ltYWxQbGFj
ZXMgdmFsdWUsIGJvb2wgaGFzVmFsdWUgPSB0cnVlKQorICAgICAgICBEZWNpbWFsT3JNaXNzaW5n
KGNvbnN0IERlY2ltYWwmIHZhbHVlLCBib29sIGhhc1ZhbHVlID0gdHJ1ZSkKICAgICAgICAgICAg
IDogaGFzVmFsdWUoaGFzVmFsdWUpCiAgICAgICAgICAgICAsIHZhbHVlKHZhbHVlKQogICAgICAg
ICB7CkBAIC04Miw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICAgICAgewogICAgICAgICB9CiAKLSAg
ICAgICAgZG91YmxlIGRlZmF1bHRWYWx1ZSgpIGNvbnN0CisgICAgICAgIERlY2ltYWwgZGVmYXVs
dFZhbHVlKCkgY29uc3QKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRTdGVw
ICogc3RlcFNjYWxlRmFjdG9yOwogICAgICAgICB9CkBAIC05MCwyOSArODAsMzIgQEAgcHVibGlj
OgogCiAgICAgU3RlcFJhbmdlKCk7CiAgICAgU3RlcFJhbmdlKGNvbnN0IFN0ZXBSYW5nZSYpOwot
ICAgIFN0ZXBSYW5nZShjb25zdCBEb3VibGVXaXRoRGVjaW1hbFBsYWNlcyYgc3RlcEJhc2UsIGRv
dWJsZSBtaW5pbXVtLCBkb3VibGUgbWF4aW11bSwgY29uc3QgRG91YmxlV2l0aERlY2ltYWxQbGFj
ZXNPck1pc3NpbmcmIHN0ZXAsIGNvbnN0IFN0ZXBEZXNjcmlwdGlvbiYpOwotICAgIGRvdWJsZSBh
Y2NlcHRhYmxlRXJyb3IoKSBjb25zdDsKLSAgICBkb3VibGUgYWxpZ25WYWx1ZUZvclN0ZXAoZG91
YmxlIGN1cnJlbnRWYWx1ZSwgdW5zaWduZWQgY3VycmVudERlY2ltYWxQbGFjZXMsIGRvdWJsZSBu
ZXdWYWx1ZSkgY29uc3Q7Ci0gICAgZG91YmxlIGNsYW1wVmFsdWUoZG91YmxlIHZhbHVlKSBjb25z
dDsKKyAgICBTdGVwUmFuZ2UoY29uc3QgRGVjaW1hbCYgc3RlcEJhc2UsIGNvbnN0IERlY2ltYWwm
IG1pbmltdW0sIGNvbnN0IERlY2ltYWwmIG1heGltdW0sIGNvbnN0IERlY2ltYWxPck1pc3Npbmcm
IHN0ZXAsIGNvbnN0IFN0ZXBEZXNjcmlwdGlvbiYpOworICAgIERlY2ltYWwgYWNjZXB0YWJsZUVy
cm9yKCkgY29uc3Q7CisgICAgRGVjaW1hbCBhbGlnblZhbHVlRm9yU3RlcChjb25zdCBEZWNpbWFs
JiBjdXJyZW50VmFsdWUsIGNvbnN0IERlY2ltYWwmIG5ld1ZhbHVlKSBjb25zdDsKKyAgICBEZWNp
bWFsIGNsYW1wVmFsdWUoY29uc3QgRGVjaW1hbCYpIGNvbnN0OwogICAgIGJvb2wgaGFzU3RlcCgp
IGNvbnN0IHsgcmV0dXJuIG1faGFzU3RlcDsgfQotICAgIGRvdWJsZSBtYXhpbXVtKCkgY29uc3Qg
eyByZXR1cm4gbV9tYXhpbXVtOyB9Ci0gICAgZG91YmxlIG1pbmltdW0oKSBjb25zdCB7IHJldHVy
biBtX21pbmltdW07IH0KLSAgICBzdGF0aWMgRG91YmxlV2l0aERlY2ltYWxQbGFjZXNPck1pc3Np
bmcgcGFyc2VTdGVwKEFueVN0ZXBIYW5kbGluZywgY29uc3QgU3RlcERlc2NyaXB0aW9uJiwgY29u
c3QgU3RyaW5nJik7Ci0gICAgZG91YmxlIHN0ZXAoKSBjb25zdCB7IHJldHVybiBtX3N0ZXA7IH0K
LSAgICBkb3VibGUgc3RlcEJhc2UoKSBjb25zdCB7IHJldHVybiBtX3N0ZXBCYXNlOyB9Ci0gICAg
dW5zaWduZWQgc3RlcEJhc2VEZWNpbWFsUGxhY2VzKCkgY29uc3QgeyByZXR1cm4gbV9zdGVwQmFz
ZURlY2ltYWxQbGFjZXM7IH0KLSAgICB1bnNpZ25lZCBzdGVwRGVjaW1hbFBsYWNlcygpIGNvbnN0
IHsgcmV0dXJuIG1fc3RlcERlY2ltYWxQbGFjZXM7IH0KKyAgICBEZWNpbWFsIG1heGltdW0oKSBj
b25zdCB7IHJldHVybiBtX21heGltdW07IH0KKyAgICBEZWNpbWFsIG1pbmltdW0oKSBjb25zdCB7
IHJldHVybiBtX21pbmltdW07IH0KKyAgICBzdGF0aWMgRGVjaW1hbE9yTWlzc2luZyBwYXJzZVN0
ZXAoQW55U3RlcEhhbmRsaW5nLCBjb25zdCBTdGVwRGVzY3JpcHRpb24mLCBjb25zdCBTdHJpbmcm
KTsKKyAgICBEZWNpbWFsIHN0ZXAoKSBjb25zdCB7IHJldHVybiBtX3N0ZXA7IH0KKyAgICBEZWNp
bWFsIHN0ZXBCYXNlKCkgY29uc3QgeyByZXR1cm4gbV9zdGVwQmFzZTsgfQogICAgIGludCBzdGVw
U2NhbGVGYWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3N0ZXBEZXNjcmlwdGlvbi5zdGVwU2NhbGVG
YWN0b3I7IH0KLSAgICBib29sIHN0ZXBNaXNtYXRjaChkb3VibGUpIGNvbnN0OworICAgIGJvb2wg
c3RlcE1pc21hdGNoKGNvbnN0IERlY2ltYWwmKSBjb25zdDsKIAogICAgIC8vIENsYW1wIHRoZSBt
aWRkbGUgdmFsdWUgYWNjb3JkaW5nIHRvIHRoZSBzdGVwCi0gICAgZG91YmxlIGRlZmF1bHRWYWx1
ZSgpIGNvbnN0CisgICAgRGVjaW1hbCBkZWZhdWx0VmFsdWUoKSBjb25zdAogICAgIHsKICAgICAg
ICAgcmV0dXJuIGNsYW1wVmFsdWUoKG1fbWluaW11bSArIG1fbWF4aW11bSkgLyAyKTsKICAgICB9
CiAKKyAgICBzdGF0aWMgRGVjaW1hbCBlbnN1cmVNYXhpbXVtKGNvbnN0IERlY2ltYWwgcHJvcG9z
ZWRWYWx1ZSwgY29uc3QgRGVjaW1hbCYgbWluaW11bSwgY29uc3QgRGVjaW1hbCYgZmFsbGJhY2tW
YWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBwcm9wb3NlZFZhbHVlID49IG1pbmltdW0gPyBw
cm9wb3NlZFZhbHVlIDogc3RkOjptYXgobWluaW11bSwgZmFsbGJhY2tWYWx1ZSk7CisgICAgfQor
CiAgICAgLy8gTWFwIHZhbHVlIGludG8gMC0xIHJhbmdlCi0gICAgZG91YmxlIHByb3BvcnRpb25G
cm9tVmFsdWUoZG91YmxlIHZhbHVlKSBjb25zdAorICAgIERlY2ltYWwgcHJvcG9ydGlvbkZyb21W
YWx1ZShjb25zdCBEZWNpbWFsJiB2YWx1ZSkgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChtX21p
bmltdW0gPT0gbV9tYXhpbXVtKQogICAgICAgICAgICAgcmV0dXJuIDA7CkBAIC0xMjEsNyArMTE0
LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIC8vIE1hcCBmcm9tIDAtMSByYW5nZSB0byB2YWx1
ZQotICAgIGRvdWJsZSB2YWx1ZUZyb21Qcm9wb3J0aW9uKGRvdWJsZSBwcm9wb3J0aW9uKSBjb25z
dAorICAgIERlY2ltYWwgdmFsdWVGcm9tUHJvcG9ydGlvbihjb25zdCBEZWNpbWFsJiBwcm9wb3J0
aW9uKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1fbWluaW11bSArIHByb3BvcnRpb24g
KiAobV9tYXhpbXVtIC0gbV9taW5pbXVtKTsKICAgICB9CkBAIC0xMjksMTMgKzEyMiwxNiBAQCBw
dWJsaWM6CiBwcml2YXRlOgogICAgIFN0ZXBSYW5nZSYgb3BlcmF0b3IgPShjb25zdCBTdGVwUmFu
Z2UmKTsKIAotICAgIGNvbnN0IGRvdWJsZSBtX21heGltdW07IC8vIG1heGltdW0gbXVzdCBiZSA+
PSBtaW5pbXVtLgotICAgIGNvbnN0IGRvdWJsZSBtX21pbmltdW07Ci0gICAgY29uc3QgZG91Ymxl
IG1fc3RlcDsKLSAgICBjb25zdCBkb3VibGUgbV9zdGVwQmFzZTsKKyAgICBEZWNpbWFsIHJvdW5k
QnlTdGVwKGNvbnN0IERlY2ltYWwmIHZhbHVlLCBjb25zdCBEZWNpbWFsJiBiYXNlKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGJhc2UgKyAoKHZhbHVlIC0gYmFzZSkgLyBtX3N0ZXApLnJv
dW5kKCkgKiBtX3N0ZXA7CisgICAgfQorCisgICAgY29uc3QgRGVjaW1hbCBtX21heGltdW07IC8v
IG1heGltdW0gbXVzdCBiZSA+PSBtaW5pbXVtLgorICAgIGNvbnN0IERlY2ltYWwgbV9taW5pbXVt
OworICAgIGNvbnN0IERlY2ltYWwgbV9zdGVwOworICAgIGNvbnN0IERlY2ltYWwgbV9zdGVwQmFz
ZTsKICAgICBjb25zdCBTdGVwRGVzY3JpcHRpb24gbV9zdGVwRGVzY3JpcHRpb247Ci0gICAgY29u
c3QgdW5zaWduZWQgbV9zdGVwQmFzZURlY2ltYWxQbGFjZXM7Ci0gICAgY29uc3QgdW5zaWduZWQg
bV9zdGVwRGVjaW1hbFBsYWNlczsKICAgICBjb25zdCBib29sIG1faGFzU3RlcDsKIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGltZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL1RpbWVJbnB1dFR5cGUuY3BwCmluZGV4IGVjNTI3MDI0Yzk1ZGFkYmY4OWEz
MzA2OWRkYmY5YmNkOTllMWNkNmYuLjBhMTRjNDg0MGJmMDEzMjk3OGUwZTI4NDQ3MGQ1YzA4ZDJh
ZjNiNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGltZUlucHV0VHlwZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lSW5wdXRUeXBlLmNwcApAQCAtMzQsNiArMzQs
NyBAQAogI2luY2x1ZGUgIkRhdGVDb21wb25lbnRzLmgiCiAjaW5jbHVkZSAiSFRNTElucHV0RWxl
bWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlv
bXMuaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvRGF0ZU1h
dGguaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgpAQCAtNDUsOSArNDYsOSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLXN0YXRpYyBj
b25zdCBkb3VibGUgdGltZURlZmF1bHRTdGVwID0gNjAuMDsKLXN0YXRpYyBjb25zdCBkb3VibGUg
dGltZURlZmF1bHRTdGVwQmFzZSA9IDAuMDsKLXN0YXRpYyBjb25zdCBkb3VibGUgdGltZVN0ZXBT
Y2FsZUZhY3RvciA9IDEwMDAuMDsKK3N0YXRpYyBjb25zdCBpbnQgdGltZURlZmF1bHRTdGVwID0g
NjA7CitzdGF0aWMgY29uc3QgaW50IHRpbWVEZWZhdWx0U3RlcEJhc2UgPSAwOworc3RhdGljIGNv
bnN0IGludCB0aW1lU3RlcFNjYWxlRmFjdG9yID0gMTAwMDsKIAogUGFzc093blB0cjxJbnB1dFR5
cGU+IFRpbWVJbnB1dFR5cGU6OmNyZWF0ZShIVE1MSW5wdXRFbGVtZW50KiBlbGVtZW50KQogewpA
QCAtNjQsNyArNjUsNyBAQCBEYXRlQ29tcG9uZW50czo6VHlwZSBUaW1lSW5wdXRUeXBlOjpkYXRl
VHlwZSgpIGNvbnN0CiAgICAgcmV0dXJuIERhdGVDb21wb25lbnRzOjpUaW1lOwogfQogCi1kb3Vi
bGUgVGltZUlucHV0VHlwZTo6ZGVmYXVsdFZhbHVlRm9yU3RlcFVwKCkgY29uc3QKK0RlY2ltYWwg
VGltZUlucHV0VHlwZTo6ZGVmYXVsdFZhbHVlRm9yU3RlcFVwKCkgY29uc3QKIHsKICAgICBkb3Vi
bGUgY3VycmVudCA9IGN1cnJlbnRUaW1lTVMoKTsKICAgICBkb3VibGUgdXRjT2Zmc2V0ID0gY2Fs
Y3VsYXRlVVRDT2Zmc2V0KCk7CkBAIC03NiwxNyArNzcsMTcgQEAgZG91YmxlIFRpbWVJbnB1dFR5
cGU6OmRlZmF1bHRWYWx1ZUZvclN0ZXBVcCgpIGNvbnN0CiAgICAgZGF0ZS5zZXRNaWxsaXNlY29u
ZHNTaW5jZU1pZG5pZ2h0KGN1cnJlbnQpOwogICAgIGRvdWJsZSBtaWxsaXNlY29uZHMgPSBkYXRl
Lm1pbGxpc2Vjb25kc1NpbmNlRXBvY2goKTsKICAgICBBU1NFUlQoaXNmaW5pdGUobWlsbGlzZWNv
bmRzKSk7Ci0gICAgcmV0dXJuIG1pbGxpc2Vjb25kczsKKyAgICByZXR1cm4gY29udmVydERvdWJs
ZVRvRGVjaW1hbChtaWxsaXNlY29uZHMpOwogfQogCiBTdGVwUmFuZ2UgVGltZUlucHV0VHlwZTo6
Y3JlYXRlU3RlcFJhbmdlKEFueVN0ZXBIYW5kbGluZyBhbnlTdGVwSGFuZGxpbmcpIGNvbnN0CiB7
CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdGVwUmFuZ2U6OlN0ZXBEZXNjcmlwdGlv
biwgc3RlcERlc2NyaXB0aW9uLCAodGltZURlZmF1bHRTdGVwLCB0aW1lRGVmYXVsdFN0ZXBCYXNl
LCB0aW1lU3RlcFNjYWxlRmFjdG9yLCBTdGVwUmFuZ2U6OlNjYWxlZFN0ZXBWYWx1ZVNob3VsZEJl
SW50ZWdlcikpOwogCi0gICAgZG91YmxlIHN0ZXBCYXNlID0gcGFyc2VUb0RvdWJsZShlbGVtZW50
KCktPmZhc3RHZXRBdHRyaWJ1dGUobWluQXR0ciksIDApOwotICAgIGRvdWJsZSBtaW5pbXVtID0g
cGFyc2VUb0RvdWJsZShlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUobWluQXR0ciksIERhdGVD
b21wb25lbnRzOjptaW5pbXVtVGltZSgpKTsKLSAgICBkb3VibGUgbWF4aW11bSA9IHBhcnNlVG9E
b3VibGUoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1heEF0dHIpLCBEYXRlQ29tcG9uZW50
czo6bWF4aW11bVRpbWUoKSk7Ci0gICAgU3RlcFJhbmdlOjpEb3VibGVXaXRoRGVjaW1hbFBsYWNl
c09yTWlzc2luZyBzdGVwID0gU3RlcFJhbmdlOjpwYXJzZVN0ZXAoYW55U3RlcEhhbmRsaW5nLCBz
dGVwRGVzY3JpcHRpb24sIGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShzdGVwQXR0cikpOwor
ICAgIGNvbnN0IERlY2ltYWwgc3RlcEJhc2UgPSBwYXJzZVRvRGVjaW1hbChlbGVtZW50KCktPmZh
c3RHZXRBdHRyaWJ1dGUobWluQXR0ciksIDApOworICAgIGNvbnN0IERlY2ltYWwgbWluaW11bSA9
IHBhcnNlVG9EZWNpbWFsKGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShtaW5BdHRyKSwgY29u
dmVydERvdWJsZVRvRGVjaW1hbChEYXRlQ29tcG9uZW50czo6bWluaW11bVRpbWUoKSkpOworICAg
IGNvbnN0IERlY2ltYWwgbWF4aW11bSA9IHBhcnNlVG9EZWNpbWFsKGVsZW1lbnQoKS0+ZmFzdEdl
dEF0dHJpYnV0ZShtYXhBdHRyKSwgY29udmVydERvdWJsZVRvRGVjaW1hbChEYXRlQ29tcG9uZW50
czo6bWF4aW11bVRpbWUoKSkpOworICAgIGNvbnN0IFN0ZXBSYW5nZTo6RGVjaW1hbE9yTWlzc2lu
ZyBzdGVwID0gU3RlcFJhbmdlOjpwYXJzZVN0ZXAoYW55U3RlcEhhbmRsaW5nLCBzdGVwRGVzY3Jp
cHRpb24sIGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShzdGVwQXR0cikpOwogICAgIHJldHVy
biBTdGVwUmFuZ2Uoc3RlcEJhc2UsIG1pbmltdW0sIG1heGltdW0sIHN0ZXAsIHN0ZXBEZXNjcmlw
dGlvbik7CiB9CiAKQEAgLTk3LDEwICs5OCwxMCBAQCBib29sIFRpbWVJbnB1dFR5cGU6OnBhcnNl
VG9EYXRlQ29tcG9uZW50c0ludGVybmFsKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZwog
ICAgIHJldHVybiBvdXQtPnBhcnNlVGltZShjaGFyYWN0ZXJzLCBsZW5ndGgsIDAsIGVuZCkgJiYg
ZW5kID09IGxlbmd0aDsKIH0KIAotYm9vbCBUaW1lSW5wdXRUeXBlOjpzZXRNaWxsaXNlY29uZFRv
RGF0ZUNvbXBvbmVudHMoZG91YmxlIHZhbHVlLCBEYXRlQ29tcG9uZW50cyogZGF0ZSkgY29uc3QK
K2Jvb2wgVGltZUlucHV0VHlwZTo6c2V0TWlsbGlzZWNvbmRUb0RhdGVDb21wb25lbnRzKGNvbnN0
IERlY2ltYWwmIHZhbHVlLCBEYXRlQ29tcG9uZW50cyogZGF0ZSkgY29uc3QKIHsKICAgICBBU1NF
UlQoZGF0ZSk7Ci0gICAgcmV0dXJuIGRhdGUtPnNldE1pbGxpc2Vjb25kc1NpbmNlTWlkbmlnaHQo
dmFsdWUpOworICAgIHJldHVybiBkYXRlLT5zZXRNaWxsaXNlY29uZHNTaW5jZU1pZG5pZ2h0KGNv
bnZlcnREZWNpbWFsVG9Eb3VibGUodmFsdWUpKTsKIH0KIAogYm9vbCBUaW1lSW5wdXRUeXBlOjpp
c1RpbWVGaWVsZCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVJ
bnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGltZUlucHV0VHlwZS5oCmluZGV4IDFj
MmMyODZlYzNhY2ZkNWVhZWVkZTYyODgzNmU3YWIzMDZhMjNkZDAuLjE3ZjNiZGY2Zjg3MDY0MGY4
ZGM1ZTFhZjc0NjA5YTEyYjllMGU4OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
VGltZUlucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGltZUlucHV0VHlwZS5o
CkBAIC00NSwxMCArNDUsMTAgQEAgcHJpdmF0ZToKICAgICBUaW1lSW5wdXRUeXBlKEhUTUxJbnB1
dEVsZW1lbnQqIGVsZW1lbnQpIDogQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlKGVsZW1lbnQpIHsg
fQogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBmb3JtQ29udHJvbFR5cGUoKSBjb25z
dCBPVkVSUklERTsKICAgICB2aXJ0dWFsIERhdGVDb21wb25lbnRzOjpUeXBlIGRhdGVUeXBlKCkg
Y29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBkb3VibGUgZGVmYXVsdFZhbHVlRm9yU3RlcFVw
KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBEZWNpbWFsIGRlZmF1bHRWYWx1ZUZvclN0
ZXBVcCgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgU3RlcFJhbmdlIGNyZWF0ZVN0ZXBS
YW5nZShBbnlTdGVwSGFuZGxpbmcpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBw
YXJzZVRvRGF0ZUNvbXBvbmVudHNJbnRlcm5hbChjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0
aCwgRGF0ZUNvbXBvbmVudHMqKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgc2V0
TWlsbGlzZWNvbmRUb0RhdGVDb21wb25lbnRzKGRvdWJsZSwgRGF0ZUNvbXBvbmVudHMqKSBjb25z
dCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgc2V0TWlsbGlzZWNvbmRUb0RhdGVDb21wb25l
bnRzKGNvbnN0IERlY2ltYWwmLCBEYXRlQ29tcG9uZW50cyopIGNvbnN0IE9WRVJSSURFOwogICAg
IHZpcnR1YWwgYm9vbCBpc1RpbWVGaWVsZCgpIGNvbnN0IE9WRVJSSURFOwogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9XZWVrSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvV2Vla0lucHV0VHlwZS5jcHAKaW5kZXggM2E2MjI4OTExYzUzY2YyMzM1MDZiZTA0
MjVhN2ZlZjQ1M2UxMzI1Yy4uYzMwYTgwZjMyY2ZlOWY2MWM3MTU5MTgwNTIzYmQ2ZDY2MWY3MmE2
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9XZWVrSW5wdXRUeXBlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL1dlZWtJbnB1dFR5cGUuY3BwCkBAIC0zNCw2ICszNCw3IEBA
CiAjaW5jbHVkZSAiRGF0ZUNvbXBvbmVudHMuaCIKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50
LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5o
IgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9X
RUVLKQpAQCAtNDIsOSArNDMsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVz
cGFjZSBIVE1MTmFtZXM7CiAKLXN0YXRpYyBjb25zdCBkb3VibGUgd2Vla0RlZmF1bHRTdGVwQmFz
ZSA9IC0yNTkyMDAwMDAuMDsgLy8gVGhlIGZpcnN0IGRheSBvZiAxOTcwLVcwMS4KLXN0YXRpYyBj
b25zdCBkb3VibGUgd2Vla0RlZmF1bHRTdGVwID0gMS4wOwotc3RhdGljIGNvbnN0IGRvdWJsZSB3
ZWVrU3RlcFNjYWxlRmFjdG9yID0gNjA0ODAwMDAwLjA7CitzdGF0aWMgY29uc3QgaW50IHdlZWtE
ZWZhdWx0U3RlcEJhc2UgPSAtMjU5MjAwMDAwOyAvLyBUaGUgZmlyc3QgZGF5IG9mIDE5NzAtVzAx
Lgorc3RhdGljIGNvbnN0IGludCB3ZWVrRGVmYXVsdFN0ZXAgPSAxOworc3RhdGljIGNvbnN0IGlu
dCB3ZWVrU3RlcFNjYWxlRmFjdG9yID0gNjA0ODAwMDAwOwogCiBQYXNzT3duUHRyPElucHV0VHlw
ZT4gV2Vla0lucHV0VHlwZTo6Y3JlYXRlKEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQpCiB7CkBA
IC02NSwxMCArNjYsMTAgQEAgU3RlcFJhbmdlIFdlZWtJbnB1dFR5cGU6OmNyZWF0ZVN0ZXBSYW5n
ZShBbnlTdGVwSGFuZGxpbmcgYW55U3RlcEhhbmRsaW5nKSBjb25zdAogewogICAgIERFRklORV9T
VEFUSUNfTE9DQUwoY29uc3QgU3RlcFJhbmdlOjpTdGVwRGVzY3JpcHRpb24sIHN0ZXBEZXNjcmlw
dGlvbiwgKHdlZWtEZWZhdWx0U3RlcCwgd2Vla0RlZmF1bHRTdGVwQmFzZSwgd2Vla1N0ZXBTY2Fs
ZUZhY3RvciwgU3RlcFJhbmdlOjpQYXJzZWRTdGVwVmFsdWVTaG91bGRCZUludGVnZXIpKTsKIAot
ICAgIGRvdWJsZSBzdGVwQmFzZSA9IHBhcnNlVG9Eb3VibGUoZWxlbWVudCgpLT5mYXN0R2V0QXR0
cmlidXRlKG1pbkF0dHIpLCB3ZWVrRGVmYXVsdFN0ZXBCYXNlKTsKLSAgICBkb3VibGUgbWluaW11
bSA9IHBhcnNlVG9Eb3VibGUoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpLCBE
YXRlQ29tcG9uZW50czo6bWluaW11bVdlZWsoKSk7Ci0gICAgZG91YmxlIG1heGltdW0gPSBwYXJz
ZVRvRG91YmxlKGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShtYXhBdHRyKSwgRGF0ZUNvbXBv
bmVudHM6Om1heGltdW1XZWVrKCkpOwotICAgIFN0ZXBSYW5nZTo6RG91YmxlV2l0aERlY2ltYWxQ
bGFjZXNPck1pc3Npbmcgc3RlcCA9IFN0ZXBSYW5nZTo6cGFyc2VTdGVwKGFueVN0ZXBIYW5kbGlu
Zywgc3RlcERlc2NyaXB0aW9uLCBlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUoc3RlcEF0dHIp
KTsKKyAgICBjb25zdCBEZWNpbWFsIHN0ZXBCYXNlID0gcGFyc2VUb0RlY2ltYWwoZWxlbWVudCgp
LT5mYXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpLCB3ZWVrRGVmYXVsdFN0ZXBCYXNlKTsKKyAgICBj
b25zdCBEZWNpbWFsIG1pbmltdW0gPSBwYXJzZVRvRGVjaW1hbChlbGVtZW50KCktPmZhc3RHZXRB
dHRyaWJ1dGUobWluQXR0ciksIGNvbnZlcnREb3VibGVUb0RlY2ltYWwoRGF0ZUNvbXBvbmVudHM6
Om1pbmltdW1XZWVrKCkpKTsKKyAgICBjb25zdCBEZWNpbWFsIG1heGltdW0gPSBwYXJzZVRvRGVj
aW1hbChlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUobWF4QXR0ciksIGNvbnZlcnREb3VibGVU
b0RlY2ltYWwoRGF0ZUNvbXBvbmVudHM6Om1heGltdW1XZWVrKCkpKTsKKyAgICBjb25zdCBTdGVw
UmFuZ2U6OkRlY2ltYWxPck1pc3Npbmcgc3RlcCA9IFN0ZXBSYW5nZTo6cGFyc2VTdGVwKGFueVN0
ZXBIYW5kbGluZywgc3RlcERlc2NyaXB0aW9uLCBlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUo
c3RlcEF0dHIpKTsKICAgICByZXR1cm4gU3RlcFJhbmdlKHN0ZXBCYXNlLCBtaW5pbXVtLCBtYXhp
bXVtLCBzdGVwLCBzdGVwRGVzY3JpcHRpb24pOwogfQogCkBAIC03OSwxMCArODAsMTAgQEAgYm9v
bCBXZWVrSW5wdXRUeXBlOjpwYXJzZVRvRGF0ZUNvbXBvbmVudHNJbnRlcm5hbChjb25zdCBVQ2hh
ciogY2hhcmFjdGVycywgdW5zaWcKICAgICByZXR1cm4gb3V0LT5wYXJzZVdlZWsoY2hhcmFjdGVy
cywgbGVuZ3RoLCAwLCBlbmQpICYmIGVuZCA9PSBsZW5ndGg7CiB9CiAKLWJvb2wgV2Vla0lucHV0
VHlwZTo6c2V0TWlsbGlzZWNvbmRUb0RhdGVDb21wb25lbnRzKGRvdWJsZSB2YWx1ZSwgRGF0ZUNv
bXBvbmVudHMqIGRhdGUpIGNvbnN0Citib29sIFdlZWtJbnB1dFR5cGU6OnNldE1pbGxpc2Vjb25k
VG9EYXRlQ29tcG9uZW50cyhjb25zdCBEZWNpbWFsJiB2YWx1ZSwgRGF0ZUNvbXBvbmVudHMqIGRh
dGUpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGRhdGUpOwotICAgIHJldHVybiBkYXRlLT5zZXRNaWxs
aXNlY29uZHNTaW5jZUVwb2NoRm9yV2Vlayh2YWx1ZSk7CisgICAgcmV0dXJuIGRhdGUtPnNldE1p
bGxpc2Vjb25kc1NpbmNlRXBvY2hGb3JXZWVrKGNvbnZlcnREZWNpbWFsVG9Eb3VibGUodmFsdWUp
KTsKIH0KIAogYm9vbCBXZWVrSW5wdXRUeXBlOjppc1dlZWtGaWVsZCgpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1dlZWtJbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvV2Vla0lucHV0VHlwZS5oCmluZGV4IGNjNThhYjdkMDQ0YjQ0NWY5ZjcxZDAzNzJhMWFh
ZGZmYjg0ZGU5MzIuLmNjNjJmM2E5MDU2MDJmNDQ2ODdiYzVhNDQ3OGNiMjNhMTA0YjRjMjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvV2Vla0lucHV0VHlwZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvV2Vla0lucHV0VHlwZS5oCkBAIC00Nyw3ICs0Nyw3IEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCBEYXRlQ29tcG9uZW50czo6VHlwZSBkYXRlVHlwZSgpIGNvbnN0IE9WRVJS
SURFOwogICAgIHZpcnR1YWwgU3RlcFJhbmdlIGNyZWF0ZVN0ZXBSYW5nZShBbnlTdGVwSGFuZGxp
bmcpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBwYXJzZVRvRGF0ZUNvbXBvbmVu
dHNJbnRlcm5hbChjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCwgRGF0ZUNvbXBvbmVudHMq
KSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgc2V0TWlsbGlzZWNvbmRUb0RhdGVD
b21wb25lbnRzKGRvdWJsZSwgRGF0ZUNvbXBvbmVudHMqKSBjb25zdCBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIGJvb2wgc2V0TWlsbGlzZWNvbmRUb0RhdGVDb21wb25lbnRzKGNvbnN0IERlY2ltYWwm
LCBEYXRlQ29tcG9uZW50cyopIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBpc1dl
ZWtGaWVsZCgpIGNvbnN0IE9WRVJSSURFOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcAppbmRleCBhOTlhMjFhMDhlNWJkZDA4NjVmYTMz
YzczOTU1MDQwMTcyYzM4YjMxLi43ODg3ZDVmZjZlYzQwOWIwMmVhNjg2MDg3YWUzMzc5OGU3Y2I2
Yzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRp
b21zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21z
LmNwcApAQCAtNTgsNiArNTgsMTUgQEAgU3RyaW5nIHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRN
TFNwYWNlcyhjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICByZXR1cm4gc3RyaW5nLnN1YnN0cmlu
ZyhudW1MZWFkaW5nU3BhY2VzLCBsZW5ndGggLSAobnVtTGVhZGluZ1NwYWNlcyArIG51bVRyYWls
aW5nU3BhY2VzKSk7CiB9CiAKK1N0cmluZyBzZXJpYWxpemVGb3JOdW1iZXJUeXBlKGNvbnN0IERl
Y2ltYWwmIG51bWJlcikKK3sKKyAgICBpZiAobnVtYmVyLmlzWmVybygpKSB7CisgICAgICAgIC8v
IERlY2ltYWw6OnRvU3RyaW5nIGFwcGVuZCBleHBvbmVudCwgZS5nLiAiMGUtMTgiCisgICAgICAg
IHJldHVybiBudW1iZXIuaXNOZWdhdGl2ZSgpID8gIi0wIiA6ICIwIjsKKyAgICB9CisgICAgcmV0
dXJuIG51bWJlci50b1N0cmluZygpOworfQorCiBTdHJpbmcgc2VyaWFsaXplRm9yTnVtYmVyVHlw
ZShkb3VibGUgbnVtYmVyKQogewogICAgIC8vIEFjY29yZGluZyB0byBIVE1MNSwgInRoZSBiZXN0
IHJlcHJlc2VudGF0aW9uIG9mIHRoZSBudW1iZXIgbiBhcyBhIGZsb2F0aW5nCkBAIC02Niw2ICs3
NSwzNSBAQCBTdHJpbmcgc2VyaWFsaXplRm9yTnVtYmVyVHlwZShkb3VibGUgbnVtYmVyKQogICAg
IHJldHVybiBTdHJpbmcobnVtYmVyVG9TdHJpbmcobnVtYmVyLCBidWZmZXIpKTsKIH0KIAorRGVj
aW1hbCBwYXJzZVRvRGVjaW1hbEZvck51bWJlclR5cGUoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNv
bnN0IERlY2ltYWwmIGZhbGxiYWNrVmFsdWUpCit7CisgICAgLy8gU2VlIEhUTUw1IDIuNS40LjMg
YFJlYWwgbnVtYmVycy4nIGFuZCBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZQorCisgICAgLy8g
U3RyaW5nOjp0b0RvdWJsZSgpIGFjY2VwdHMgbGVhZGluZyArIGFuZCB3aGl0ZXNwYWNlIGNoYXJh
Y3RlcnMsIHdoaWNoIGFyZSBub3QgdmFsaWQgaGVyZS4KKyAgICBVQ2hhciBmaXJzdENoYXJhY3Rl
ciA9IHN0cmluZ1swXTsKKyAgICBpZiAoZmlyc3RDaGFyYWN0ZXIgIT0gJy0nICYmIGZpcnN0Q2hh
cmFjdGVyICE9ICcuJyAmJiAhaXNBU0NJSURpZ2l0KGZpcnN0Q2hhcmFjdGVyKSkKKyAgICAgICAg
cmV0dXJuIGZhbGxiYWNrVmFsdWU7CisKKyAgICBEZWNpbWFsIHZhbHVlID0gRGVjaW1hbDo6ZnJv
bVN0cmluZyhzdHJpbmcpOworICAgIGlmICghdmFsdWUuaXNGaW5pdGUoKSkKKyAgICAgICAgcmV0
dXJuIGZhbGxiYWNrVmFsdWU7CisKKyAgICBjb25zdCB1aW50NjRfdCBsZWFkaW5nRGlnaXRzT2Yy
UG93ZXIxMDI0ID0gVUlOVDY0X0MoMTc5NzY5MzEzNDg2MjMxNTkpOworICAgIERFRklORV9TVEFU
SUNfTE9DQUwoY29uc3QgRGVjaW1hbCwgaHRtbE1heCwgKERlY2ltYWw6OlBvc2l0aXZlLCAyOTIs
IGxlYWRpbmdEaWdpdHNPZjJQb3dlcjEwMjQpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNv
bnN0IERlY2ltYWwsIGh0bWxNaW4sIChEZWNpbWFsOjpOZWdhdGl2ZSwgMjkyLCBsZWFkaW5nRGln
aXRzT2YyUG93ZXIxMDI0KSk7CisKKyAgICBpZiAodmFsdWUgPCBodG1sTWluIHx8IHZhbHVlID4g
aHRtbE1heCkKKyAgICAgICAgcmV0dXJuIGZhbGxiYWNrVmFsdWU7CisKKyAgICAvLyBXZSByZXR1
cm4gKzAgZm9yIC0wIGNhc2UuCisgICAgcmV0dXJuIHZhbHVlLmlzWmVybygpID8gRGVjaW1hbCgw
KSA6IHZhbHVlOworfQorCitEZWNpbWFsIHBhcnNlVG9EZWNpbWFsRm9yTnVtYmVyVHlwZShjb25z
dCBTdHJpbmcmIHN0cmluZykKK3sKKyAgICByZXR1cm4gcGFyc2VUb0RlY2ltYWxGb3JOdW1iZXJU
eXBlKHN0cmluZywgRGVjaW1hbDo6bmFuKCkpOworfQorCiBkb3VibGUgcGFyc2VUb0RvdWJsZUZv
ck51bWJlclR5cGUoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGRvdWJsZSBmYWxsYmFja1ZhbHVlKQog
ewogICAgIC8vIFNlZSBIVE1MNSAyLjUuNC4zIGBSZWFsIG51bWJlcnMuJwpAQCAtOTgsODQgKzEz
Niw2IEBAIGRvdWJsZSBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZShjb25zdCBTdHJpbmcmIHN0
cmluZykKICAgICByZXR1cm4gcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUoc3RyaW5nLCBzdGQ6
Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpKTsKIH0KIAotZG91YmxlIHBhcnNl
VG9Eb3VibGVGb3JOdW1iZXJUeXBlV2l0aERlY2ltYWxQbGFjZXMoY29uc3QgU3RyaW5nJiBzdHJp
bmcsIHVuc2lnbmVkICpkZWNpbWFsUGxhY2VzLCBkb3VibGUgZmFsbGJhY2tWYWx1ZSkKLXsKLSAg
ICBpZiAoZGVjaW1hbFBsYWNlcykKLSAgICAgICAgKmRlY2ltYWxQbGFjZXMgPSAwOwotCi0gICAg
ZG91YmxlIHZhbHVlID0gcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUoc3RyaW5nLCBzdGQ6Om51
bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpKTsKLSAgICBpZiAoIWlzZmluaXRlKHZh
bHVlKSkKLSAgICAgICAgcmV0dXJuIGZhbGxiYWNrVmFsdWU7Ci0KLSAgICBpZiAoIWRlY2ltYWxQ
bGFjZXMpCi0gICAgICAgIHJldHVybiB2YWx1ZTsKLQotICAgIHNpemVfdCBkb3RJbmRleCA9IHN0
cmluZy5maW5kKCcuJyk7Ci0gICAgc2l6ZV90IGVJbmRleCA9IHN0cmluZy5maW5kKCdlJyk7Ci0g
ICAgaWYgKGVJbmRleCA9PSBub3RGb3VuZCkgCi0gICAgICAgIGVJbmRleCA9IHN0cmluZy5maW5k
KCdFJyk7Ci0KLSAgICB1bnNpZ25lZCBiYXNlRGVjaW1hbFBsYWNlcyA9IDA7Ci0gICAgaWYgKGRv
dEluZGV4ICE9IG5vdEZvdW5kKSB7Ci0gICAgICAgIGlmIChlSW5kZXggPT0gbm90Rm91bmQpCi0g
ICAgICAgICAgICBiYXNlRGVjaW1hbFBsYWNlcyA9IHN0cmluZy5sZW5ndGgoKSAtIGRvdEluZGV4
IC0gMTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgYmFzZURlY2ltYWxQbGFjZXMgPSBlSW5k
ZXggLSBkb3RJbmRleCAtIDE7Ci0gICAgfQotCi0gICAgaW50IGV4cG9uZW50ID0gMDsKLSAgICBp
ZiAoZUluZGV4ICE9IG5vdEZvdW5kKSB7Ci0gICAgICAgIHVuc2lnbmVkIGN1cnNvciA9IGVJbmRl
eCArIDEsIGN1cnNvclNhdmVkOwotICAgICAgICBpbnQgZGlnaXQsIGV4cG9uZW50U2lnbjsKLSAg
ICAgICAgaW50MzJfdCBleHBvbmVudDMyOwotICAgICAgICBzaXplX3QgbGVuZ3RoID0gc3RyaW5n
Lmxlbmd0aCgpOwotCi0gICAgICAgIC8vIE5vdCB1c2luZyBTdHJpbmcudG9JbnQoKSBpbiBvcmRl
ciB0byBwZXJmb3JtIHRoZSBzYW1lIGNvbXB1dGF0aW9uIGFzIGR0b2EoKSBkb2VzLgotICAgICAg
ICBleHBvbmVudFNpZ24gPSAwOwotICAgICAgICBzd2l0Y2ggKGRpZ2l0ID0gc3RyaW5nW2N1cnNv
cl0pIHsKLSAgICAgICAgY2FzZSAnLSc6Ci0gICAgICAgICAgICBleHBvbmVudFNpZ24gPSAxOwot
ICAgICAgICBjYXNlICcrJzoKLSAgICAgICAgICAgIGRpZ2l0ID0gc3RyaW5nWysrY3Vyc29yXTsK
LSAgICAgICAgfQotICAgICAgICBpZiAoZGlnaXQgPj0gJzAnICYmIGRpZ2l0IDw9ICc5Jykgewot
ICAgICAgICAgICAgd2hpbGUgKGN1cnNvciA8IGxlbmd0aCAmJiBkaWdpdCA9PSAnMCcpCi0gICAg
ICAgICAgICAgICAgZGlnaXQgPSBzdHJpbmdbKytjdXJzb3JdOwotICAgICAgICAgICAgaWYgKGRp
Z2l0ID4gJzAnICYmIGRpZ2l0IDw9ICc5JykgewotICAgICAgICAgICAgICAgIGV4cG9uZW50MzIg
PSBkaWdpdCAtICcwJzsKLSAgICAgICAgICAgICAgICBjdXJzb3JTYXZlZCA9IGN1cnNvcjsKLSAg
ICAgICAgICAgICAgICB3aGlsZSAoY3Vyc29yIDwgbGVuZ3RoICYmIChkaWdpdCA9IHN0cmluZ1sr
K2N1cnNvcl0pID49ICcwJyAmJiBkaWdpdCA8PSAnOScpCi0gICAgICAgICAgICAgICAgICAgIGV4
cG9uZW50MzIgPSAoMTAgKiBleHBvbmVudDMyKSArIGRpZ2l0IC0gJzAnOwotICAgICAgICAgICAg
ICAgIGlmIChjdXJzb3IgLSBjdXJzb3JTYXZlZCA+IDggfHwgZXhwb25lbnQzMiA+IDE5OTk5KQot
ICAgICAgICAgICAgICAgICAgICAvKiBBdm9pZCBjb25mdXNpb24gZnJvbSBleHBvbmVudHMKLSAg
ICAgICAgICAgICAgICAgICAgICogc28gbGFyZ2UgdGhhdCBlIG1pZ2h0IG92ZXJmbG93LgotICAg
ICAgICAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgICAgICAgICAgZXhwb25lbnQgPSAxOTk5
OTsgLyogc2FmZSBmb3IgMTYgYml0IGludHMgKi8KLSAgICAgICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgICAgIGV4cG9uZW50ID0gc3RhdGljX2Nhc3Q8aW50PihleHBvbmVudDMyKTsK
LSAgICAgICAgICAgICAgICBpZiAoZXhwb25lbnRTaWduKQotICAgICAgICAgICAgICAgICAgICBl
eHBvbmVudCA9IC1leHBvbmVudDsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAg
IGV4cG9uZW50ID0gMDsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGludCBpbnREZWNpbWFsUGxh
Y2VzID0gYmFzZURlY2ltYWxQbGFjZXMgLSBleHBvbmVudDsKLSAgICBpZiAoaW50RGVjaW1hbFBs
YWNlcyA8IDApCi0gICAgICAgICpkZWNpbWFsUGxhY2VzID0gMDsKLSAgICBlbHNlIGlmIChpbnRE
ZWNpbWFsUGxhY2VzID4gMTk5OTkpCi0gICAgICAgICpkZWNpbWFsUGxhY2VzID0gMTk5OTk7Ci0g
ICAgZWxzZQotICAgICAgICAqZGVjaW1hbFBsYWNlcyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihp
bnREZWNpbWFsUGxhY2VzKTsKLQotICAgIHJldHVybiB2YWx1ZTsKLX0KLQotZG91YmxlIHBhcnNl
VG9Eb3VibGVGb3JOdW1iZXJUeXBlV2l0aERlY2ltYWxQbGFjZXMoY29uc3QgU3RyaW5nJiBzdHJp
bmcsIHVuc2lnbmVkICpkZWNpbWFsUGxhY2VzKQotewotICAgIHJldHVybiBwYXJzZVRvRG91Ymxl
Rm9yTnVtYmVyVHlwZVdpdGhEZWNpbWFsUGxhY2VzKHN0cmluZywgZGVjaW1hbFBsYWNlcywgc3Rk
OjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKSk7Ci19Ci0KIC8vIGh0dHA6Ly93
d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvI3J1bGVzLWZvci1wYXJz
aW5nLWludGVnZXJzCiBib29sIHBhcnNlSFRNTEludGVnZXIoY29uc3QgU3RyaW5nJiBpbnB1dCwg
aW50JiB2YWx1ZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxQYXJzZXJJZGlvbXMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJ
ZGlvbXMuaAppbmRleCA4YTc3NGY5ZWU0MzI1Zjc5OTZkY2VlODAyZTc4NTkyMWYxMjAwNzIxLi4w
OWQyMmRmNWEzNGIzOGU0M2Q3OGQ1ZmJmNWI1YWVmMzgwZjc4Mjk4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oCkBAIC0yNSwxMSArMjUsMTQgQEAK
ICNpZm5kZWYgSFRNTFBhcnNlcklkaW9tc19oCiAjZGVmaW5lIEhUTUxQYXJzZXJJZGlvbXNfaAog
CisjaW5jbHVkZSAiRGVjaW1hbC5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVk
ZSA8d3RmL3VuaWNvZGUvVW5pY29kZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNz
IERlY2ltYWw7CisKIC8vIFNwYWNlIGNoYXJhY3RlcnMgYXMgZGVmaW5lZCBieSB0aGUgSFRNTCBz
cGVjaWZpY2F0aW9uLgogYm9vbCBpc0hUTUxTcGFjZShVQ2hhcik7CiBib29sIGlzSFRNTExpbmVC
cmVhayhVQ2hhcik7CkBAIC0zOSwxNSArNDIsMTggQEAgYm9vbCBpc05vdEhUTUxTcGFjZShVQ2hh
cik7CiBTdHJpbmcgc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKGNvbnN0IFN0cmlu
ZyYpOwogCiAvLyBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgSFRNTCBzcGVjaWZpY2F0aW9uJ3Mg
YWxnb3JpdGhtIHRvIGNvbnZlcnQgYSBudW1iZXIgdG8gYSBzdHJpbmcgZm9yIG51bWJlciBhbmQg
cmFuZ2UgdHlwZXMuCitTdHJpbmcgc2VyaWFsaXplRm9yTnVtYmVyVHlwZShjb25zdCBEZWNpbWFs
Jik7CiBTdHJpbmcgc2VyaWFsaXplRm9yTnVtYmVyVHlwZShkb3VibGUpOwogCisvLyBDb252ZXJ0
IHRoZSBzcGVjaWZpZWQgc3RyaW5nIHRvIGEgZGVjaW1hbC4gSWYgdGhlIGNvbnZlcnNpb24gZmFp
bHMsIHRoZSByZXR1cm4gdmFsdWUgaXMgZmFsc2UuCisvLyBMZWFkaW5nIG9yIHRyYWlsaW5nIGls
bGVnYWwgY2hhcmFjdGVycyBjYXVzZSBmYWlsdXJlLCBhcyBkb2VzIHBhc3NpbmcgYW4gZW1wdHkg
c3RyaW5nLgorRGVjaW1hbCBwYXJzZVRvRGVjaW1hbEZvck51bWJlclR5cGUoY29uc3QgU3RyaW5n
Jik7CitEZWNpbWFsIHBhcnNlVG9EZWNpbWFsRm9yTnVtYmVyVHlwZShjb25zdCBTdHJpbmcmLCBj
b25zdCBEZWNpbWFsJiBmYWxsYmFja1ZhbHVlKTsKKwogLy8gQ29udmVydCB0aGUgc3BlY2lmaWVk
IHN0cmluZyB0byBhIGRvdWJsZS4gSWYgdGhlIGNvbnZlcnNpb24gZmFpbHMsIHRoZSByZXR1cm4g
dmFsdWUgaXMgZmFsc2UuCiAvLyBMZWFkaW5nIG9yIHRyYWlsaW5nIGlsbGVnYWwgY2hhcmFjdGVy
cyBjYXVzZSBmYWlsdXJlLCBhcyBkb2VzIHBhc3NpbmcgYW4gZW1wdHkgc3RyaW5nLgotLy8gVGhl
IGRvdWJsZSogcGFyYW1ldGVyIG1heSBiZSAwIHRvIGNoZWNrIGlmIHRoZSBzdHJpbmcgY2FuIGJl
IHBhcnNlZCB3aXRob3V0IGdldHRpbmcgdGhlIHJlc3VsdC4KIGRvdWJsZSBwYXJzZVRvRG91Ymxl
Rm9yTnVtYmVyVHlwZShjb25zdCBTdHJpbmcmKTsKIGRvdWJsZSBwYXJzZVRvRG91YmxlRm9yTnVt
YmVyVHlwZShjb25zdCBTdHJpbmcmLCBkb3VibGUgZmFsbGJhY2tWYWx1ZSk7Ci1kb3VibGUgcGFy
c2VUb0RvdWJsZUZvck51bWJlclR5cGVXaXRoRGVjaW1hbFBsYWNlcyhjb25zdCBTdHJpbmcmLCB1
bnNpZ25lZCopOwotZG91YmxlIHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlV2l0aERlY2ltYWxQ
bGFjZXMoY29uc3QgU3RyaW5nJiwgdW5zaWduZWQqLCBkb3VibGUgZmFsbGJhY2tWYWx1ZSk7CiAK
IC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvI3J1
bGVzLWZvci1wYXJzaW5nLWludGVnZXJzCiBib29sIHBhcnNlSFRNTEludGVnZXIoY29uc3QgU3Ry
aW5nJiwgaW50Jik7CkBAIC01Nyw2ICs2MywxNiBAQCBib29sIHBhcnNlSFRNTE5vbk5lZ2F0aXZl
SW50ZWdlcihjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCBpbnQmKTsKIAogLy8gSW5saW5lIGltcGxl
bWVudGF0aW9ucyBvZiBzb21lIG9mIHRoZSBmdW5jdGlvbnMgZGVjbGFyZWQgYWJvdmUuCiAKK2lu
bGluZSBkb3VibGUgY29udmVydERlY2ltYWxUb0RvdWJsZShjb25zdCBEZWNpbWFsJiB2YWx1ZSkK
K3sKKyAgICByZXR1cm4gcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUoc2VyaWFsaXplRm9yTnVt
YmVyVHlwZSh2YWx1ZSkpOworfQorCitpbmxpbmUgRGVjaW1hbCBjb252ZXJ0RG91YmxlVG9EZWNp
bWFsKGRvdWJsZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gcGFyc2VUb0RlY2ltYWxGb3JOdW1iZXJU
eXBlKHNlcmlhbGl6ZUZvck51bWJlclR5cGUodmFsdWUpKTsKK30KKwogaW5saW5lIGJvb2wgaXNI
VE1MU3BhY2UoVUNoYXIgY2hhcmFjdGVyKQogewogICAgIC8vIEhpc3RvZ3JhbSBmcm9tIEFwcGxl
J3MgcGFnZSBsb2FkIHRlc3QgY29tYmluZWQgd2l0aCBzb21lIGFkIGhvYyBicm93c2luZyBzb21l
IG90aGVyIHRlc3Qgc3VpdGVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvQ2FsZW5kYXJQaWNrZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L0NhbGVuZGFyUGlja2VyRWxlbWVudC5jcHAKaW5kZXggMWE3YjQ5ZmE2NDhmOWVlMzc4MTQ5OTU0
ZTRhNjdiZWUxNjYyY2Q1OC4uNTM1OGNjYWY3YTNkZjJlMzNhMDNlYmYwYzg4OTExYjBjMDg4MmJj
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ2FsZW5kYXJQaWNrZXJF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9DYWxlbmRhclBpY2tl
ckVsZW1lbnQuY3BwCkBAIC0yMDgsNyArMjA4LDcgQEAgdm9pZCBDYWxlbmRhclBpY2tlckVsZW1l
bnQ6OndyaXRlRG9jdW1lbnQoRG9jdW1lbnRXcml0ZXImIHdyaXRlcikKICAgICBTdHJpbmcgbWlu
U3RyaW5nID0gZGF0ZS50b1N0cmluZygpOwogICAgIGRhdGUuc2V0TWlsbGlzZWNvbmRzU2luY2VF
cG9jaEZvckRhdGUoaW5wdXQtPm1heGltdW0oKSk7CiAgICAgU3RyaW5nIG1heFN0cmluZyA9IGRh
dGUudG9TdHJpbmcoKTsKLSAgICBkb3VibGUgc3RlcDsKKyAgICBEZWNpbWFsIHN0ZXA7CiAgICAg
U3RyaW5nIHN0ZXBTdHJpbmcgPSBpbnB1dC0+ZmFzdEdldEF0dHJpYnV0ZShzdGVwQXR0cik7CiAg
ICAgaWYgKHN0ZXBTdHJpbmcuaXNFbXB0eSgpIHx8ICFpbnB1dC0+Z2V0QWxsb3dlZFZhbHVlU3Rl
cCgmc3RlcCkpCiAgICAgICAgIHN0ZXBTdHJpbmcgPSAiMSI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcAppbmRleCA4NDIyYTMwMTk5MDIy
OTkxMWI1OGI2MDA3OGRkMTgwOTY0NWQ5ZDdjLi40MjlkMTZiYjg4MDJhY2ZlYTAyYTAyMTZhNzY5
MGViYjAyODBmZTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlk
ZXJUaHVtYkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRl
clRodW1iRWxlbWVudC5jcHAKQEAgLTUxLDEwICs1MSwxMCBAQCB1c2luZyBuYW1lc3BhY2Ugc3Rk
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWlubGluZSBzdGF0aWMgZG91YmxlIHNsaWRlclBv
c2l0aW9uKEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQpCitpbmxpbmUgc3RhdGljIERlY2ltYWwg
c2xpZGVyUG9zaXRpb24oSFRNTElucHV0RWxlbWVudCogZWxlbWVudCkKIHsKICAgICBjb25zdCBT
dGVwUmFuZ2Ugc3RlcFJhbmdlKGVsZW1lbnQtPmNyZWF0ZVN0ZXBSYW5nZShSZWplY3RBbnkpKTsK
LSAgICBjb25zdCBkb3VibGUgb2xkVmFsdWUgPSBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZShl
bGVtZW50LT52YWx1ZSgpLCBzdGVwUmFuZ2UuZGVmYXVsdFZhbHVlKCkpOworICAgIGNvbnN0IERl
Y2ltYWwgb2xkVmFsdWUgPSBwYXJzZVRvRGVjaW1hbEZvck51bWJlclR5cGUoZWxlbWVudC0+dmFs
dWUoKSwgc3RlcFJhbmdlLmRlZmF1bHRWYWx1ZSgpKTsKICAgICByZXR1cm4gc3RlcFJhbmdlLnBy
b3BvcnRpb25Gcm9tVmFsdWUoc3RlcFJhbmdlLmNsYW1wVmFsdWUob2xkVmFsdWUpKTsKIH0KIApA
QCAtMTEwLDcgKzExMCw3IEBAIHZvaWQgUmVuZGVyU2xpZGVyVGh1bWI6OmxheW91dCgpCiAgICAg
SFRNTElucHV0RWxlbWVudCogaW5wdXQgPSBub2RlKCktPnNoYWRvd0FuY2VzdG9yTm9kZSgpLT50
b0lucHV0RWxlbWVudCgpOwogICAgIGJvb2wgaXNWZXJ0aWNhbCA9IHN0eWxlKCktPmFwcGVhcmFu
Y2UoKSA9PSBTbGlkZXJUaHVtYlZlcnRpY2FsUGFydCB8fCBzdHlsZSgpLT5hcHBlYXJhbmNlKCkg
PT0gTWVkaWFWb2x1bWVTbGlkZXJUaHVtYlBhcnQ7CiAKLSAgICBkb3VibGUgZnJhY3Rpb24gPSBz
bGlkZXJQb3NpdGlvbihpbnB1dCkgKiAxMDA7CisgICAgZG91YmxlIGZyYWN0aW9uID0gY29udmVy
dERlY2ltYWxUb0RvdWJsZShzbGlkZXJQb3NpdGlvbihpbnB1dCkgKiAxMDApOwogICAgIGlmIChp
c1ZlcnRpY2FsKQogICAgICAgICBzdHlsZSgpLT5zZXRUb3AoTGVuZ3RoKDEwMCAtIGZyYWN0aW9u
LCBQZXJjZW50KSk7CiAgICAgZWxzZSBpZiAoc3R5bGUoKS0+aXNMZWZ0VG9SaWdodERpcmVjdGlv
bigpKQpAQCAtMjM2LDExICsyMzYsMTAgQEAgdm9pZCBTbGlkZXJUaHVtYkVsZW1lbnQ6OnNldFBv
c2l0aW9uRnJvbVBvaW50KGNvbnN0IExheW91dFBvaW50JiBwb2ludCkKICAgICBpZiAocG9zaXRp
b24gPT0gY3VycmVudFBvc2l0aW9uKQogICAgICAgICByZXR1cm47CiAKLSAgICBkb3VibGUgZnJh
Y3Rpb24gPSBzdGF0aWNfY2FzdDxkb3VibGU+KHBvc2l0aW9uKSAvIHRyYWNrU2l6ZTsKLSAgICBp
ZiAoaXNWZXJ0aWNhbCB8fCAhcmVuZGVyQm94KCktPnN0eWxlKCktPmlzTGVmdFRvUmlnaHREaXJl
Y3Rpb24oKSkKLSAgICAgICAgZnJhY3Rpb24gPSAxIC0gZnJhY3Rpb247Ci0gICAgU3RlcFJhbmdl
IHN0ZXBSYW5nZShpbnB1dC0+Y3JlYXRlU3RlcFJhbmdlKFJlamVjdEFueSkpOwotICAgIGRvdWJs
ZSB2YWx1ZSA9IHN0ZXBSYW5nZS5jbGFtcFZhbHVlKHN0ZXBSYW5nZS52YWx1ZUZyb21Qcm9wb3J0
aW9uKGZyYWN0aW9uKSk7CisgICAgY29uc3QgRGVjaW1hbCByYXRpbyA9IGNvbnZlcnREb3VibGVU
b0RlY2ltYWwoc3RhdGljX2Nhc3Q8ZG91YmxlPihwb3NpdGlvbikgLyB0cmFja1NpemUpOworICAg
IGNvbnN0IERlY2ltYWwgZnJhY3Rpb24gPSBpc1ZlcnRpY2FsIHx8ICFyZW5kZXJCb3goKS0+c3R5
bGUoKS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gIERlY2ltYWwoMSkgLSByYXRpbyA6IHJh
dGlvOworICAgIGNvbnN0IFN0ZXBSYW5nZSBzdGVwUmFuZ2UoaW5wdXQtPmNyZWF0ZVN0ZXBSYW5n
ZShSZWplY3RBbnkpKTsKKyAgICBjb25zdCBEZWNpbWFsIHZhbHVlID0gc3RlcFJhbmdlLmNsYW1w
VmFsdWUoc3RlcFJhbmdlLnZhbHVlRnJvbVByb3BvcnRpb24oZnJhY3Rpb24pKTsKIAogICAgIC8v
IEZJWE1FOiBUaGlzIGlzIG5vIGxvbmdlciBiZWluZyBzZXQgZnJvbSByZW5kZXJlci4gQ29uc2lk
ZXIgdXBkYXRpbmcgdGhlIG1ldGhvZCBuYW1lLgogICAgIGlucHV0LT5zZXRWYWx1ZUZyb21SZW5k
ZXJlcihzZXJpYWxpemVGb3JOdW1iZXJUeXBlKHZhbHVlKSk7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNjYxNmMxNjhjMGE5
YjNkY2Y5ZThlZTc5NmMwMmNiYzI3ZTQwNjJlMC4uYzliMWVkOGEwMDBiM2IyMzY4ZGQwNTdjMmQw
MDQ0ZTFmNGFhY2NiNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEyLTA1LTMxICBZb3NoaWZ1
bWkgSW5vdWUgIDx5b3NpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW50cm9kdWNlIERlY2lt
YWwgYXJpdGhtZXRpYyB0byBmaXggcm91bmRpbmcgZXJyb3JzIGluIG51bWJlci9yYW5nZSBpbnB1
dCB0eXBlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODAwMDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IGZhc3QvZm9ybXMvcmFuZ2UvcmFuZ2UtdmFsdWUtcm91bmRpbmctZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL3JhbmdlL3JhbmdlLXZhbHVlLXJvdW5kaW5nLmh0bWw6
IEFkZGVkLgorCiAyMDEyLTA2LTAzICBIYXlhdG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBTdXBwb3J0cyB0cmF2ZXJzaW5nIG5vZGVzIGluIGFuIG9ycGhhbmVkIHNoYWRv
dyBzdWJ0cmVlIGluIENvbXBvc2VkU2hhZG93VHJlZVBhcmVudFdhbGtlci4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmFuZ2UvcmFuZ2UtdmFsdWUtcm91bmRpbmctZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yYW5nZS9yYW5nZS12YWx1ZS1yb3VuZGlu
Zy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmNjYjBhNWNiMTJlMjg2NjM1NDRlNGMzNDU0NDBi
NTNiYjRhZmQ1ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmFu
Z2UvcmFuZ2UtdmFsdWUtcm91bmRpbmctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNTUwIEBACisK
KzgwMDA5IEludHJvZHVjZSBEZWNpbWFsIGFyaXRobWV0aWMgdG8gZml4IHJvdW5kaW5nIGVycm9y
cyBpbiBudW1iZXIvcmFuZ2UgaW5wdXQgdHlwZXMKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCisKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjEiLCAiMC4xIiwgIjFlLTAiKS52YWx1ZSBpcyAi
MC4xIgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMSIsICIwLjEiLCAiMWUtMCIpLnZhbHVlQXNOdW1i
ZXIgaXMgMC4xCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4xIiwgIjAuMiIsICIxZS0wIikudmFsdWUg
aXMgIjAuMiIKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjEiLCAiMC4yIiwgIjFlLTAiKS52YWx1ZUFz
TnVtYmVyIGlzIDAuMgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMSIsICIwLjMiLCAiMWUtMCIpLnZh
bHVlIGlzICIwLjMiCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4xIiwgIjAuMyIsICIxZS0wIikudmFs
dWVBc051bWJlciBpcyAwLjMKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjEiLCAiMC40IiwgIjFlLTAi
KS52YWx1ZSBpcyAiMC40IgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMSIsICIwLjQiLCAiMWUtMCIp
LnZhbHVlQXNOdW1iZXIgaXMgMC40CitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4xIiwgIjAuNSIsICIx
ZS0wIikudmFsdWUgaXMgIjAuNSIKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjEiLCAiMC41IiwgIjFl
LTAiKS52YWx1ZUFzTnVtYmVyIGlzIDAuNQorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMSIsICIwLjYi
LCAiMWUtMCIpLnZhbHVlIGlzICIwLjYiCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4xIiwgIjAuNiIs
ICIxZS0wIikudmFsdWVBc051bWJlciBpcyAwLjYKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjEiLCAi
MC43IiwgIjFlLTAiKS52YWx1ZSBpcyAiMC43IgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMSIsICIw
LjciLCAiMWUtMCIpLnZhbHVlQXNOdW1iZXIgaXMgMC43CitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4x
IiwgIjAuOCIsICIxZS0wIikudmFsdWUgaXMgIjAuOCIKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjEi
LCAiMC44IiwgIjFlLTAiKS52YWx1ZUFzTnVtYmVyIGlzIDAuOAorUEFTUyBjcmVhdGVTYW1wbGUo
IjAuMSIsICIwLjkiLCAiMWUtMCIpLnZhbHVlIGlzICIwLjkiCitQQVNTIGNyZWF0ZVNhbXBsZSgi
MC4xIiwgIjAuOSIsICIxZS0wIikudmFsdWVBc051bWJlciBpcyAwLjkKK1BBU1MgY3JlYXRlU2Ft
cGxlKCIwLjAxIiwgIjAuMDEiLCAiMWUtMSIpLnZhbHVlIGlzICIwLjAxIgorUEFTUyBjcmVhdGVT
YW1wbGUoIjAuMDEiLCAiMC4wMSIsICIxZS0xIikudmFsdWVBc051bWJlciBpcyAwLjAxCitQQVNT
IGNyZWF0ZVNhbXBsZSgiMC4wMSIsICIwLjAyIiwgIjFlLTEiKS52YWx1ZSBpcyAiMC4wMiIKK1BB
U1MgY3JlYXRlU2FtcGxlKCIwLjAxIiwgIjAuMDIiLCAiMWUtMSIpLnZhbHVlQXNOdW1iZXIgaXMg
MC4wMgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDEiLCAiMC4wMyIsICIxZS0xIikudmFsdWUgaXMg
IjAuMDMiCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMSIsICIwLjAzIiwgIjFlLTEiKS52YWx1ZUFz
TnVtYmVyIGlzIDAuMDMKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAxIiwgIjAuMDQiLCAiMWUtMSIp
LnZhbHVlIGlzICIwLjA0IgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDEiLCAiMC4wNCIsICIxZS0x
IikudmFsdWVBc051bWJlciBpcyAwLjA0CitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMSIsICIwLjA1
IiwgIjFlLTEiKS52YWx1ZSBpcyAiMC4wNSIKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAxIiwgIjAu
MDUiLCAiMWUtMSIpLnZhbHVlQXNOdW1iZXIgaXMgMC4wNQorUEFTUyBjcmVhdGVTYW1wbGUoIjAu
MDEiLCAiMC4wNiIsICIxZS0xIikudmFsdWUgaXMgIjAuMDYiCitQQVNTIGNyZWF0ZVNhbXBsZSgi
MC4wMSIsICIwLjA2IiwgIjFlLTEiKS52YWx1ZUFzTnVtYmVyIGlzIDAuMDYKK1BBU1MgY3JlYXRl
U2FtcGxlKCIwLjAxIiwgIjAuMDciLCAiMWUtMSIpLnZhbHVlIGlzICIwLjA3IgorUEFTUyBjcmVh
dGVTYW1wbGUoIjAuMDEiLCAiMC4wNyIsICIxZS0xIikudmFsdWVBc051bWJlciBpcyAwLjA3CitQ
QVNTIGNyZWF0ZVNhbXBsZSgiMC4wMSIsICIwLjA4IiwgIjFlLTEiKS52YWx1ZSBpcyAiMC4wOCIK
K1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAxIiwgIjAuMDgiLCAiMWUtMSIpLnZhbHVlQXNOdW1iZXIg
aXMgMC4wOAorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDEiLCAiMC4wOSIsICIxZS0xIikudmFsdWUg
aXMgIjAuMDkiCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMSIsICIwLjA5IiwgIjFlLTEiKS52YWx1
ZUFzTnVtYmVyIGlzIDAuMDkKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMSIsICIwLjAwMSIsICIx
ZS0yIikudmFsdWUgaXMgIjAuMDAxIgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAxIiwgIjAuMDAx
IiwgIjFlLTIiKS52YWx1ZUFzTnVtYmVyIGlzIDAuMDAxCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4w
MDEiLCAiMC4wMDIiLCAiMWUtMiIpLnZhbHVlIGlzICIwLjAwMiIKK1BBU1MgY3JlYXRlU2FtcGxl
KCIwLjAwMSIsICIwLjAwMiIsICIxZS0yIikudmFsdWVBc051bWJlciBpcyAwLjAwMgorUEFTUyBj
cmVhdGVTYW1wbGUoIjAuMDAxIiwgIjAuMDAzIiwgIjFlLTIiKS52YWx1ZSBpcyAiMC4wMDMiCitQ
QVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDEiLCAiMC4wMDMiLCAiMWUtMiIpLnZhbHVlQXNOdW1iZXIg
aXMgMC4wMDMKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMSIsICIwLjAwNCIsICIxZS0yIikudmFs
dWUgaXMgIjAuMDA0IgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAxIiwgIjAuMDA0IiwgIjFlLTIi
KS52YWx1ZUFzTnVtYmVyIGlzIDAuMDA0CitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDEiLCAiMC4w
MDUiLCAiMWUtMiIpLnZhbHVlIGlzICIwLjAwNSIKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMSIs
ICIwLjAwNSIsICIxZS0yIikudmFsdWVBc051bWJlciBpcyAwLjAwNQorUEFTUyBjcmVhdGVTYW1w
bGUoIjAuMDAxIiwgIjAuMDA2IiwgIjFlLTIiKS52YWx1ZSBpcyAiMC4wMDYiCitQQVNTIGNyZWF0
ZVNhbXBsZSgiMC4wMDEiLCAiMC4wMDYiLCAiMWUtMiIpLnZhbHVlQXNOdW1iZXIgaXMgMC4wMDYK
K1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMSIsICIwLjAwNyIsICIxZS0yIikudmFsdWUgaXMgIjAu
MDA3IgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAxIiwgIjAuMDA3IiwgIjFlLTIiKS52YWx1ZUFz
TnVtYmVyIGlzIDAuMDA3CitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDEiLCAiMC4wMDgiLCAiMWUt
MiIpLnZhbHVlIGlzICIwLjAwOCIKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMSIsICIwLjAwOCIs
ICIxZS0yIikudmFsdWVBc051bWJlciBpcyAwLjAwOAorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAx
IiwgIjAuMDA5IiwgIjFlLTIiKS52YWx1ZSBpcyAiMC4wMDkiCitQQVNTIGNyZWF0ZVNhbXBsZSgi
MC4wMDEiLCAiMC4wMDkiLCAiMWUtMiIpLnZhbHVlQXNOdW1iZXIgaXMgMC4wMDkKK1BBU1MgY3Jl
YXRlU2FtcGxlKCIwLjAwMDEiLCAiMC4wMDAxIiwgIjFlLTMiKS52YWx1ZSBpcyAiMC4wMDAxIgor
UEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMSIsICIwLjAwMDEiLCAiMWUtMyIpLnZhbHVlQXNOdW1i
ZXIgaXMgMC4wMDAxCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAxIiwgIjAuMDAwMiIsICIxZS0z
IikudmFsdWUgaXMgIjAuMDAwMiIKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDEiLCAiMC4wMDAy
IiwgIjFlLTMiKS52YWx1ZUFzTnVtYmVyIGlzIDAuMDAwMgorUEFTUyBjcmVhdGVTYW1wbGUoIjAu
MDAwMSIsICIwLjAwMDMiLCAiMWUtMyIpLnZhbHVlIGlzICIwLjAwMDMiCitQQVNTIGNyZWF0ZVNh
bXBsZSgiMC4wMDAxIiwgIjAuMDAwMyIsICIxZS0zIikudmFsdWVBc051bWJlciBpcyAwLjAwMDMK
K1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDEiLCAiMC4wMDA0IiwgIjFlLTMiKS52YWx1ZSBpcyAi
MC4wMDA0IgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMSIsICIwLjAwMDQiLCAiMWUtMyIpLnZh
bHVlQXNOdW1iZXIgaXMgMC4wMDA0CitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAxIiwgIjAuMDAw
NSIsICIxZS0zIikudmFsdWUgaXMgIjAuMDAwNSIKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDEi
LCAiMC4wMDA1IiwgIjFlLTMiKS52YWx1ZUFzTnVtYmVyIGlzIDAuMDAwNQorUEFTUyBjcmVhdGVT
YW1wbGUoIjAuMDAwMSIsICIwLjAwMDYiLCAiMWUtMyIpLnZhbHVlIGlzICIwLjAwMDYiCitQQVNT
IGNyZWF0ZVNhbXBsZSgiMC4wMDAxIiwgIjAuMDAwNiIsICIxZS0zIikudmFsdWVBc051bWJlciBp
cyAwLjAwMDYKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDEiLCAiMC4wMDA3IiwgIjFlLTMiKS52
YWx1ZSBpcyAiMC4wMDA3IgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMSIsICIwLjAwMDciLCAi
MWUtMyIpLnZhbHVlQXNOdW1iZXIgaXMgMC4wMDA3CitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAx
IiwgIjAuMDAwOCIsICIxZS0zIikudmFsdWUgaXMgIjAuMDAwOCIKK1BBU1MgY3JlYXRlU2FtcGxl
KCIwLjAwMDEiLCAiMC4wMDA4IiwgIjFlLTMiKS52YWx1ZUFzTnVtYmVyIGlzIDAuMDAwOAorUEFT
UyBjcmVhdGVTYW1wbGUoIjAuMDAwMSIsICIwLjAwMDkiLCAiMWUtMyIpLnZhbHVlIGlzICIwLjAw
MDkiCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAxIiwgIjAuMDAwOSIsICIxZS0zIikudmFsdWVB
c051bWJlciBpcyAwLjAwMDkKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAxIiwgIjAuMDAwMDEi
LCAiMWUtNCIpLnZhbHVlIGlzICIwLjAwMDAxIgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDEi
LCAiMC4wMDAwMSIsICIxZS00IikudmFsdWVBc051bWJlciBpcyAwLjAwMDAxCitQQVNTIGNyZWF0
ZVNhbXBsZSgiMC4wMDAwMSIsICIwLjAwMDAyIiwgIjFlLTQiKS52YWx1ZSBpcyAiMC4wMDAwMiIK
K1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAxIiwgIjAuMDAwMDIiLCAiMWUtNCIpLnZhbHVlQXNO
dW1iZXIgaXMgMC4wMDAwMgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDEiLCAiMC4wMDAwMyIs
ICIxZS00IikudmFsdWUgaXMgIjAuMDAwMDMiCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMSIs
ICIwLjAwMDAzIiwgIjFlLTQiKS52YWx1ZUFzTnVtYmVyIGlzIDAuMDAwMDMKK1BBU1MgY3JlYXRl
U2FtcGxlKCIwLjAwMDAxIiwgIjAuMDAwMDQiLCAiMWUtNCIpLnZhbHVlIGlzICIwLjAwMDA0Igor
UEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDEiLCAiMC4wMDAwNCIsICIxZS00IikudmFsdWVBc051
bWJlciBpcyAwLjAwMDA0CitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMSIsICIwLjAwMDA1Iiwg
IjFlLTQiKS52YWx1ZSBpcyAiMC4wMDAwNSIKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAxIiwg
IjAuMDAwMDUiLCAiMWUtNCIpLnZhbHVlQXNOdW1iZXIgaXMgMC4wMDAwNQorUEFTUyBjcmVhdGVT
YW1wbGUoIjAuMDAwMDEiLCAiMC4wMDAwNiIsICIxZS00IikudmFsdWUgaXMgIjAuMDAwMDYiCitQ
QVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMSIsICIwLjAwMDA2IiwgIjFlLTQiKS52YWx1ZUFzTnVt
YmVyIGlzIDAuMDAwMDYKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAxIiwgIjAuMDAwMDciLCAi
MWUtNCIpLnZhbHVlIGlzICIwLjAwMDA3IgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDEiLCAi
MC4wMDAwNyIsICIxZS00IikudmFsdWVBc051bWJlciBpcyAwLjAwMDA3CitQQVNTIGNyZWF0ZVNh
bXBsZSgiMC4wMDAwMSIsICIwLjAwMDA4IiwgIjFlLTQiKS52YWx1ZSBpcyAiMC4wMDAwOCIKK1BB
U1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAxIiwgIjAuMDAwMDgiLCAiMWUtNCIpLnZhbHVlQXNOdW1i
ZXIgaXMgMC4wMDAwOAorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDEiLCAiMC4wMDAwOSIsICIx
ZS00IikudmFsdWUgaXMgIjAuMDAwMDkiCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMSIsICIw
LjAwMDA5IiwgIjFlLTQiKS52YWx1ZUFzTnVtYmVyIGlzIDAuMDAwMDkKK1BBU1MgY3JlYXRlU2Ft
cGxlKCIwLjAwMDAwMSIsICIwLjAwMDAwMSIsICIxZS01IikudmFsdWUgaXMgIjAuMDAwMDAxIgor
UEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAxIiwgIjAuMDAwMDAxIiwgIjFlLTUiKS52YWx1ZUFz
TnVtYmVyIGlzIDAuMDAwMDAxCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDEiLCAiMC4wMDAw
MDIiLCAiMWUtNSIpLnZhbHVlIGlzICIwLjAwMDAwMiIKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAw
MDAwMSIsICIwLjAwMDAwMiIsICIxZS01IikudmFsdWVBc051bWJlciBpcyAwLjAwMDAwMgorUEFT
UyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAxIiwgIjAuMDAwMDAzIiwgIjFlLTUiKS52YWx1ZSBpcyAi
MC4wMDAwMDMiCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDEiLCAiMC4wMDAwMDMiLCAiMWUt
NSIpLnZhbHVlQXNOdW1iZXIgaXMgMC4wMDAwMDMKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAw
MSIsICIwLjAwMDAwNCIsICIxZS01IikudmFsdWUgaXMgIjAuMDAwMDA0IgorUEFTUyBjcmVhdGVT
YW1wbGUoIjAuMDAwMDAxIiwgIjAuMDAwMDA0IiwgIjFlLTUiKS52YWx1ZUFzTnVtYmVyIGlzIDAu
MDAwMDA0CitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDEiLCAiMC4wMDAwMDUiLCAiMWUtNSIp
LnZhbHVlIGlzICIwLjAwMDAwNSIKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMSIsICIwLjAw
MDAwNSIsICIxZS01IikudmFsdWVBc051bWJlciBpcyAwLjAwMDAwNQorUEFTUyBjcmVhdGVTYW1w
bGUoIjAuMDAwMDAxIiwgIjAuMDAwMDA2IiwgIjFlLTUiKS52YWx1ZSBpcyAiMC4wMDAwMDYiCitQ
QVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDEiLCAiMC4wMDAwMDYiLCAiMWUtNSIpLnZhbHVlQXNO
dW1iZXIgaXMgMC4wMDAwMDYKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMSIsICIwLjAwMDAw
NyIsICIxZS01IikudmFsdWUgaXMgIjAuMDAwMDA3IgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAw
MDAxIiwgIjAuMDAwMDA3IiwgIjFlLTUiKS52YWx1ZUFzTnVtYmVyIGlzIDAuMDAwMDA3CitQQVNT
IGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDEiLCAiMC4wMDAwMDgiLCAiMWUtNSIpLnZhbHVlIGlzICIw
LjAwMDAwOCIKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMSIsICIwLjAwMDAwOCIsICIxZS01
IikudmFsdWVBc051bWJlciBpcyAwLjAwMDAwOAorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAx
IiwgIjAuMDAwMDA5IiwgIjFlLTUiKS52YWx1ZSBpcyAiMC4wMDAwMDkiCitQQVNTIGNyZWF0ZVNh
bXBsZSgiMC4wMDAwMDEiLCAiMC4wMDAwMDkiLCAiMWUtNSIpLnZhbHVlQXNOdW1iZXIgaXMgMC4w
MDAwMDkKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDEiLCAiMC4wMDAwMDAxIiwgIjFlLTYi
KS52YWx1ZSBpcyAiMWUtNyIKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDEiLCAiMC4wMDAw
MDAxIiwgIjFlLTYiKS52YWx1ZUFzTnVtYmVyIGlzIDAuMDAwMDAwMQorUEFTUyBjcmVhdGVTYW1w
bGUoIjAuMDAwMDAwMSIsICIwLjAwMDAwMDIiLCAiMWUtNiIpLnZhbHVlIGlzICIyZS03IgorUEFT
UyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMSIsICIwLjAwMDAwMDIiLCAiMWUtNiIpLnZhbHVlQXNO
dW1iZXIgaXMgMC4wMDAwMDAyCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAxIiwgIjAuMDAw
MDAwMyIsICIxZS02IikudmFsdWUgaXMgIjNlLTciCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAw
MDAxIiwgIjAuMDAwMDAwMyIsICIxZS02IikudmFsdWVBc051bWJlciBpcyAwLjAwMDAwMDMKK1BB
U1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDEiLCAiMC4wMDAwMDA0IiwgIjFlLTYiKS52YWx1ZSBp
cyAiNGUtNyIKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDEiLCAiMC4wMDAwMDA0IiwgIjFl
LTYiKS52YWx1ZUFzTnVtYmVyIGlzIDAuMDAwMDAwNAorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAw
MDAwMSIsICIwLjAwMDAwMDUiLCAiMWUtNiIpLnZhbHVlIGlzICI1ZS03IgorUEFTUyBjcmVhdGVT
YW1wbGUoIjAuMDAwMDAwMSIsICIwLjAwMDAwMDUiLCAiMWUtNiIpLnZhbHVlQXNOdW1iZXIgaXMg
MC4wMDAwMDA1CitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAxIiwgIjAuMDAwMDAwNiIsICIx
ZS02IikudmFsdWUgaXMgIjZlLTciCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAxIiwgIjAu
MDAwMDAwNiIsICIxZS02IikudmFsdWVBc051bWJlciBpcyAwLjAwMDAwMDYKK1BBU1MgY3JlYXRl
U2FtcGxlKCIwLjAwMDAwMDEiLCAiMC4wMDAwMDA3IiwgIjFlLTYiKS52YWx1ZSBpcyAiN2UtNyIK
K1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDEiLCAiMC4wMDAwMDA3IiwgIjFlLTYiKS52YWx1
ZUFzTnVtYmVyIGlzIDAuMDAwMDAwNworUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMSIsICIw
LjAwMDAwMDgiLCAiMWUtNiIpLnZhbHVlIGlzICI4ZS03IgorUEFTUyBjcmVhdGVTYW1wbGUoIjAu
MDAwMDAwMSIsICIwLjAwMDAwMDgiLCAiMWUtNiIpLnZhbHVlQXNOdW1iZXIgaXMgMC4wMDAwMDA4
CitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAxIiwgIjAuMDAwMDAwOSIsICIxZS02IikudmFs
dWUgaXMgIjllLTciCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAxIiwgIjAuMDAwMDAwOSIs
ICIxZS02IikudmFsdWVBc051bWJlciBpcyAwLjAwMDAwMDkKK1BBU1MgY3JlYXRlU2FtcGxlKCIw
LjAwMDAwMDAxIiwgIjAuMDAwMDAwMDEiLCAiMWUtNyIpLnZhbHVlIGlzICIxZS04IgorUEFTUyBj
cmVhdGVTYW1wbGUoIjAuMDAwMDAwMDEiLCAiMC4wMDAwMDAwMSIsICIxZS03IikudmFsdWVBc051
bWJlciBpcyAwLjAwMDAwMDAxCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAwMSIsICIwLjAw
MDAwMDAyIiwgIjFlLTciKS52YWx1ZSBpcyAiMmUtOCIKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAw
MDAwMDAxIiwgIjAuMDAwMDAwMDIiLCAiMWUtNyIpLnZhbHVlQXNOdW1iZXIgaXMgMC4wMDAwMDAw
MgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDEiLCAiMC4wMDAwMDAwMyIsICIxZS03Iiku
dmFsdWUgaXMgIjNlLTgiCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAwMSIsICIwLjAwMDAw
MDAzIiwgIjFlLTciKS52YWx1ZUFzTnVtYmVyIGlzIDAuMDAwMDAwMDMKK1BBU1MgY3JlYXRlU2Ft
cGxlKCIwLjAwMDAwMDAxIiwgIjAuMDAwMDAwMDQiLCAiMWUtNyIpLnZhbHVlIGlzICI0ZS04Igor
UEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDEiLCAiMC4wMDAwMDAwNCIsICIxZS03IikudmFs
dWVBc051bWJlciBpcyAwLjAwMDAwMDA0CitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAwMSIs
ICIwLjAwMDAwMDA1IiwgIjFlLTciKS52YWx1ZSBpcyAiNWUtOCIKK1BBU1MgY3JlYXRlU2FtcGxl
KCIwLjAwMDAwMDAxIiwgIjAuMDAwMDAwMDUiLCAiMWUtNyIpLnZhbHVlQXNOdW1iZXIgaXMgMC4w
MDAwMDAwNQorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDEiLCAiMC4wMDAwMDAwNiIsICIx
ZS03IikudmFsdWUgaXMgIjZlLTgiCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAwMSIsICIw
LjAwMDAwMDA2IiwgIjFlLTciKS52YWx1ZUFzTnVtYmVyIGlzIDAuMDAwMDAwMDYKK1BBU1MgY3Jl
YXRlU2FtcGxlKCIwLjAwMDAwMDAxIiwgIjAuMDAwMDAwMDciLCAiMWUtNyIpLnZhbHVlIGlzICI3
ZS04IgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDEiLCAiMC4wMDAwMDAwNyIsICIxZS03
IikudmFsdWVBc051bWJlciBpcyAwLjAwMDAwMDA3CitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAw
MDAwMSIsICIwLjAwMDAwMDA4IiwgIjFlLTciKS52YWx1ZSBpcyAiOGUtOCIKK1BBU1MgY3JlYXRl
U2FtcGxlKCIwLjAwMDAwMDAxIiwgIjAuMDAwMDAwMDgiLCAiMWUtNyIpLnZhbHVlQXNOdW1iZXIg
aXMgMC4wMDAwMDAwOAorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDEiLCAiMC4wMDAwMDAw
OSIsICIxZS03IikudmFsdWUgaXMgIjllLTgiCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAw
MSIsICIwLjAwMDAwMDA5IiwgIjFlLTciKS52YWx1ZUFzTnVtYmVyIGlzIDAuMDAwMDAwMDkKK1BB
U1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMSIsICIwLjAwMDAwMDAwMSIsICIxZS04IikudmFs
dWUgaXMgIjFlLTkiCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAwMDEiLCAiMC4wMDAwMDAw
MDEiLCAiMWUtOCIpLnZhbHVlQXNOdW1iZXIgaXMgMC4wMDAwMDAwMDEKK1BBU1MgY3JlYXRlU2Ft
cGxlKCIwLjAwMDAwMDAwMSIsICIwLjAwMDAwMDAwMiIsICIxZS04IikudmFsdWUgaXMgIjJlLTki
CitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAwMDEiLCAiMC4wMDAwMDAwMDIiLCAiMWUtOCIp
LnZhbHVlQXNOdW1iZXIgaXMgMC4wMDAwMDAwMDIKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAw
MDAwMSIsICIwLjAwMDAwMDAwMyIsICIxZS04IikudmFsdWUgaXMgIjNlLTkiCitQQVNTIGNyZWF0
ZVNhbXBsZSgiMC4wMDAwMDAwMDEiLCAiMC4wMDAwMDAwMDMiLCAiMWUtOCIpLnZhbHVlQXNOdW1i
ZXIgaXMgMC4wMDAwMDAwMDMKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMSIsICIwLjAw
MDAwMDAwNCIsICIxZS04IikudmFsdWUgaXMgIjRlLTkiCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4w
MDAwMDAwMDEiLCAiMC4wMDAwMDAwMDQiLCAiMWUtOCIpLnZhbHVlQXNOdW1iZXIgaXMgMC4wMDAw
MDAwMDQKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMSIsICIwLjAwMDAwMDAwNSIsICIx
ZS04IikudmFsdWUgaXMgIjVlLTkiCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAwMDEiLCAi
MC4wMDAwMDAwMDUiLCAiMWUtOCIpLnZhbHVlQXNOdW1iZXIgaXMgMC4wMDAwMDAwMDUKK1BBU1Mg
Y3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMSIsICIwLjAwMDAwMDAwNiIsICIxZS04IikudmFsdWUg
aXMgIjZlLTkiCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAwMDEiLCAiMC4wMDAwMDAwMDYi
LCAiMWUtOCIpLnZhbHVlQXNOdW1iZXIgaXMgMC4wMDAwMDAwMDYKK1BBU1MgY3JlYXRlU2FtcGxl
KCIwLjAwMDAwMDAwMSIsICIwLjAwMDAwMDAwNyIsICIxZS04IikudmFsdWUgaXMgIjdlLTkiCitQ
QVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAwMDEiLCAiMC4wMDAwMDAwMDciLCAiMWUtOCIpLnZh
bHVlQXNOdW1iZXIgaXMgMC4wMDAwMDAwMDcKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAw
MSIsICIwLjAwMDAwMDAwOCIsICIxZS04IikudmFsdWUgaXMgIjhlLTkiCitQQVNTIGNyZWF0ZVNh
bXBsZSgiMC4wMDAwMDAwMDEiLCAiMC4wMDAwMDAwMDgiLCAiMWUtOCIpLnZhbHVlQXNOdW1iZXIg
aXMgMC4wMDAwMDAwMDgKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMSIsICIwLjAwMDAw
MDAwOSIsICIxZS04IikudmFsdWUgaXMgIjllLTkiCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAw
MDAwMDEiLCAiMC4wMDAwMDAwMDkiLCAiMWUtOCIpLnZhbHVlQXNOdW1iZXIgaXMgMC4wMDAwMDAw
MDkKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMDEiLCAiMC4wMDAwMDAwMDAxIiwgIjFl
LTkiKS52YWx1ZSBpcyAiMWUtMTAiCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAwMDAxIiwg
IjAuMDAwMDAwMDAwMSIsICIxZS05IikudmFsdWVBc051bWJlciBpcyAwLjAwMDAwMDAwMDEKK1BB
U1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMDEiLCAiMC4wMDAwMDAwMDAyIiwgIjFlLTkiKS52
YWx1ZSBpcyAiMmUtMTAiCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAwMDAxIiwgIjAuMDAw
MDAwMDAwMiIsICIxZS05IikudmFsdWVBc051bWJlciBpcyAwLjAwMDAwMDAwMDIKK1BBU1MgY3Jl
YXRlU2FtcGxlKCIwLjAwMDAwMDAwMDEiLCAiMC4wMDAwMDAwMDAzIiwgIjFlLTkiKS52YWx1ZSBp
cyAiM2UtMTAiCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAw
MyIsICIxZS05IikudmFsdWVBc051bWJlciBpcyAwLjAwMDAwMDAwMDMKK1BBU1MgY3JlYXRlU2Ft
cGxlKCIwLjAwMDAwMDAwMDEiLCAiMC4wMDAwMDAwMDA0IiwgIjFlLTkiKS52YWx1ZSBpcyAiNGUt
MTAiCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAwNCIsICIx
ZS05IikudmFsdWVBc051bWJlciBpcyAwLjAwMDAwMDAwMDQKK1BBU1MgY3JlYXRlU2FtcGxlKCIw
LjAwMDAwMDAwMDEiLCAiMC4wMDAwMDAwMDA1IiwgIjFlLTkiKS52YWx1ZSBpcyAiNWUtMTAiCitQ
QVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAwNSIsICIxZS05Iiku
dmFsdWVBc051bWJlciBpcyAwLjAwMDAwMDAwMDUKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAw
MDAwMDEiLCAiMC4wMDAwMDAwMDA2IiwgIjFlLTkiKS52YWx1ZSBpcyAiNmUtMTAiCitQQVNTIGNy
ZWF0ZVNhbXBsZSgiMC4wMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAwNiIsICIxZS05IikudmFsdWVB
c051bWJlciBpcyAwLjAwMDAwMDAwMDYKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMDEi
LCAiMC4wMDAwMDAwMDA3IiwgIjFlLTkiKS52YWx1ZSBpcyAiN2UtMTAiCitQQVNTIGNyZWF0ZVNh
bXBsZSgiMC4wMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAwNyIsICIxZS05IikudmFsdWVBc051bWJl
ciBpcyAwLjAwMDAwMDAwMDcKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMDEiLCAiMC4w
MDAwMDAwMDA4IiwgIjFlLTkiKS52YWx1ZSBpcyAiOGUtMTAiCitQQVNTIGNyZWF0ZVNhbXBsZSgi
MC4wMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAwOCIsICIxZS05IikudmFsdWVBc051bWJlciBpcyAw
LjAwMDAwMDAwMDgKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMDEiLCAiMC4wMDAwMDAw
MDA5IiwgIjFlLTkiKS52YWx1ZSBpcyAiOWUtMTAiCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAw
MDAwMDAxIiwgIjAuMDAwMDAwMDAwOSIsICIxZS05IikudmFsdWVBc051bWJlciBpcyAwLjAwMDAw
MDAwMDkKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAwMDEi
LCAiMWUtMTAiKS52YWx1ZSBpcyAiMWUtMTEiCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAw
MDAwMSIsICIwLjAwMDAwMDAwMDAxIiwgIjFlLTEwIikudmFsdWVBc051bWJlciBpcyAwLjAwMDAw
MDAwMDAxCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAwMDAwMSIsICIwLjAwMDAwMDAwMDAy
IiwgIjFlLTEwIikudmFsdWUgaXMgIjJlLTExIgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAw
MDAwMDEiLCAiMC4wMDAwMDAwMDAwMiIsICIxZS0xMCIpLnZhbHVlQXNOdW1iZXIgaXMgMC4wMDAw
MDAwMDAwMgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAwMDEiLCAiMC4wMDAwMDAwMDAw
MyIsICIxZS0xMCIpLnZhbHVlIGlzICIzZS0xMSIKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAw
MDAwMDAxIiwgIjAuMDAwMDAwMDAwMDMiLCAiMWUtMTAiKS52YWx1ZUFzTnVtYmVyIGlzIDAuMDAw
MDAwMDAwMDMKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAw
MDQiLCAiMWUtMTAiKS52YWx1ZSBpcyAiNGUtMTEiCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAw
MDAwMDAwMSIsICIwLjAwMDAwMDAwMDA0IiwgIjFlLTEwIikudmFsdWVBc051bWJlciBpcyAwLjAw
MDAwMDAwMDA0CitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAwMDAwMSIsICIwLjAwMDAwMDAw
MDA1IiwgIjFlLTEwIikudmFsdWUgaXMgIjVlLTExIgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAw
MDAwMDAwMDEiLCAiMC4wMDAwMDAwMDAwNSIsICIxZS0xMCIpLnZhbHVlQXNOdW1iZXIgaXMgMC4w
MDAwMDAwMDAwNQorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAwMDEiLCAiMC4wMDAwMDAw
MDAwNiIsICIxZS0xMCIpLnZhbHVlIGlzICI2ZS0xMSIKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAw
MDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAwMDYiLCAiMWUtMTAiKS52YWx1ZUFzTnVtYmVyIGlzIDAu
MDAwMDAwMDAwMDYKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMDAxIiwgIjAuMDAwMDAw
MDAwMDciLCAiMWUtMTAiKS52YWx1ZSBpcyAiN2UtMTEiCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4w
MDAwMDAwMDAwMSIsICIwLjAwMDAwMDAwMDA3IiwgIjFlLTEwIikudmFsdWVBc051bWJlciBpcyAw
LjAwMDAwMDAwMDA3CitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAwMDAwMSIsICIwLjAwMDAw
MDAwMDA4IiwgIjFlLTEwIikudmFsdWUgaXMgIjhlLTExIgorUEFTUyBjcmVhdGVTYW1wbGUoIjAu
MDAwMDAwMDAwMDEiLCAiMC4wMDAwMDAwMDAwOCIsICIxZS0xMCIpLnZhbHVlQXNOdW1iZXIgaXMg
MC4wMDAwMDAwMDAwOAorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAwMDEiLCAiMC4wMDAw
MDAwMDAwOSIsICIxZS0xMCIpLnZhbHVlIGlzICI5ZS0xMSIKK1BBU1MgY3JlYXRlU2FtcGxlKCIw
LjAwMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAwMDkiLCAiMWUtMTAiKS52YWx1ZUFzTnVtYmVyIGlz
IDAuMDAwMDAwMDAwMDkKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMDAwMSIsICIwLjAw
MDAwMDAwMDAwMSIsICIxZS0xMSIpLnZhbHVlIGlzICIxZS0xMiIKK1BBU1MgY3JlYXRlU2FtcGxl
KCIwLjAwMDAwMDAwMDAwMSIsICIwLjAwMDAwMDAwMDAwMSIsICIxZS0xMSIpLnZhbHVlQXNOdW1i
ZXIgaXMgMC4wMDAwMDAwMDAwMDEKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMDAwMSIs
ICIwLjAwMDAwMDAwMDAwMiIsICIxZS0xMSIpLnZhbHVlIGlzICIyZS0xMiIKK1BBU1MgY3JlYXRl
U2FtcGxlKCIwLjAwMDAwMDAwMDAwMSIsICIwLjAwMDAwMDAwMDAwMiIsICIxZS0xMSIpLnZhbHVl
QXNOdW1iZXIgaXMgMC4wMDAwMDAwMDAwMDIKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAw
MDAwMSIsICIwLjAwMDAwMDAwMDAwMyIsICIxZS0xMSIpLnZhbHVlIGlzICIzZS0xMiIKK1BBU1Mg
Y3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMDAwMSIsICIwLjAwMDAwMDAwMDAwMyIsICIxZS0xMSIp
LnZhbHVlQXNOdW1iZXIgaXMgMC4wMDAwMDAwMDAwMDMKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAw
MDAwMDAwMDAwMSIsICIwLjAwMDAwMDAwMDAwNCIsICIxZS0xMSIpLnZhbHVlIGlzICI0ZS0xMiIK
K1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMDAwMSIsICIwLjAwMDAwMDAwMDAwNCIsICIx
ZS0xMSIpLnZhbHVlQXNOdW1iZXIgaXMgMC4wMDAwMDAwMDAwMDQKK1BBU1MgY3JlYXRlU2FtcGxl
KCIwLjAwMDAwMDAwMDAwMSIsICIwLjAwMDAwMDAwMDAwNSIsICIxZS0xMSIpLnZhbHVlIGlzICI1
ZS0xMiIKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMDAwMSIsICIwLjAwMDAwMDAwMDAw
NSIsICIxZS0xMSIpLnZhbHVlQXNOdW1iZXIgaXMgMC4wMDAwMDAwMDAwMDUKK1BBU1MgY3JlYXRl
U2FtcGxlKCIwLjAwMDAwMDAwMDAwMSIsICIwLjAwMDAwMDAwMDAwNiIsICIxZS0xMSIpLnZhbHVl
IGlzICI2ZS0xMiIKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMDAwMSIsICIwLjAwMDAw
MDAwMDAwNiIsICIxZS0xMSIpLnZhbHVlQXNOdW1iZXIgaXMgMC4wMDAwMDAwMDAwMDYKK1BBU1Mg
Y3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMDAwMSIsICIwLjAwMDAwMDAwMDAwNyIsICIxZS0xMSIp
LnZhbHVlIGlzICI3ZS0xMiIKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMDAwMSIsICIw
LjAwMDAwMDAwMDAwNyIsICIxZS0xMSIpLnZhbHVlQXNOdW1iZXIgaXMgMC4wMDAwMDAwMDAwMDcK
K1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMDAwMSIsICIwLjAwMDAwMDAwMDAwOCIsICIx
ZS0xMSIpLnZhbHVlIGlzICI4ZS0xMiIKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMDAw
MSIsICIwLjAwMDAwMDAwMDAwOCIsICIxZS0xMSIpLnZhbHVlQXNOdW1iZXIgaXMgMC4wMDAwMDAw
MDAwMDgKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMDAwMSIsICIwLjAwMDAwMDAwMDAw
OSIsICIxZS0xMSIpLnZhbHVlIGlzICI5ZS0xMiIKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAw
MDAwMDAwMSIsICIwLjAwMDAwMDAwMDAwOSIsICIxZS0xMSIpLnZhbHVlQXNOdW1iZXIgaXMgMC4w
MDAwMDAwMDAwMDkKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMDAwMDEiLCAiMC4wMDAw
MDAwMDAwMDAxIiwgIjFlLTEyIikudmFsdWUgaXMgIjFlLTEzIgorUEFTUyBjcmVhdGVTYW1wbGUo
IjAuMDAwMDAwMDAwMDAwMSIsICIwLjAwMDAwMDAwMDAwMDEiLCAiMWUtMTIiKS52YWx1ZUFzTnVt
YmVyIGlzIDAuMDAwMDAwMDAwMDAwMQorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAwMDAw
MSIsICIwLjAwMDAwMDAwMDAwMDIiLCAiMWUtMTIiKS52YWx1ZSBpcyAiMmUtMTMiCitQQVNTIGNy
ZWF0ZVNhbXBsZSgiMC4wMDAwMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAwMDAwMiIsICIxZS0xMiIp
LnZhbHVlQXNOdW1iZXIgaXMgMC4wMDAwMDAwMDAwMDAyCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4w
MDAwMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAwMDAwMyIsICIxZS0xMiIpLnZhbHVlIGlzICIzZS0x
MyIKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMDAwMDEiLCAiMC4wMDAwMDAwMDAwMDAz
IiwgIjFlLTEyIikudmFsdWVBc051bWJlciBpcyAwLjAwMDAwMDAwMDAwMDMKK1BBU1MgY3JlYXRl
U2FtcGxlKCIwLjAwMDAwMDAwMDAwMDEiLCAiMC4wMDAwMDAwMDAwMDA0IiwgIjFlLTEyIikudmFs
dWUgaXMgIjRlLTEzIgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAwMDAwMSIsICIwLjAw
MDAwMDAwMDAwMDQiLCAiMWUtMTIiKS52YWx1ZUFzTnVtYmVyIGlzIDAuMDAwMDAwMDAwMDAwNAor
UEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAwMDAwMSIsICIwLjAwMDAwMDAwMDAwMDUiLCAi
MWUtMTIiKS52YWx1ZSBpcyAiNWUtMTMiCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAwMDAw
MDAxIiwgIjAuMDAwMDAwMDAwMDAwNSIsICIxZS0xMiIpLnZhbHVlQXNOdW1iZXIgaXMgMC4wMDAw
MDAwMDAwMDA1CitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAwMDAwMDAxIiwgIjAuMDAwMDAw
MDAwMDAwNiIsICIxZS0xMiIpLnZhbHVlIGlzICI2ZS0xMyIKK1BBU1MgY3JlYXRlU2FtcGxlKCIw
LjAwMDAwMDAwMDAwMDEiLCAiMC4wMDAwMDAwMDAwMDA2IiwgIjFlLTEyIikudmFsdWVBc051bWJl
ciBpcyAwLjAwMDAwMDAwMDAwMDYKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMDAwMDEi
LCAiMC4wMDAwMDAwMDAwMDA3IiwgIjFlLTEyIikudmFsdWUgaXMgIjdlLTEzIgorUEFTUyBjcmVh
dGVTYW1wbGUoIjAuMDAwMDAwMDAwMDAwMSIsICIwLjAwMDAwMDAwMDAwMDciLCAiMWUtMTIiKS52
YWx1ZUFzTnVtYmVyIGlzIDAuMDAwMDAwMDAwMDAwNworUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAw
MDAwMDAwMDAwMSIsICIwLjAwMDAwMDAwMDAwMDgiLCAiMWUtMTIiKS52YWx1ZSBpcyAiOGUtMTMi
CitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAwMDAwOCIs
ICIxZS0xMiIpLnZhbHVlQXNOdW1iZXIgaXMgMC4wMDAwMDAwMDAwMDA4CitQQVNTIGNyZWF0ZVNh
bXBsZSgiMC4wMDAwMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAwMDAwOSIsICIxZS0xMiIpLnZhbHVl
IGlzICI5ZS0xMyIKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMDAwMDEiLCAiMC4wMDAw
MDAwMDAwMDA5IiwgIjFlLTEyIikudmFsdWVBc051bWJlciBpcyAwLjAwMDAwMDAwMDAwMDkKK1BB
U1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAwMDAwMDEiLCAi
MWUtMTMiKS52YWx1ZSBpcyAiMWUtMTQiCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAwMDAw
MDAwMSIsICIwLjAwMDAwMDAwMDAwMDAxIiwgIjFlLTEzIikudmFsdWVBc051bWJlciBpcyAwLjAw
MDAwMDAwMDAwMDAxCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAwMDAwMDAwMSIsICIwLjAw
MDAwMDAwMDAwMDAyIiwgIjFlLTEzIikudmFsdWUgaXMgIjJlLTE0IgorUEFTUyBjcmVhdGVTYW1w
bGUoIjAuMDAwMDAwMDAwMDAwMDEiLCAiMC4wMDAwMDAwMDAwMDAwMiIsICIxZS0xMyIpLnZhbHVl
QXNOdW1iZXIgaXMgMC4wMDAwMDAwMDAwMDAwMgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAw
MDAwMDAwMDEiLCAiMC4wMDAwMDAwMDAwMDAwMyIsICIxZS0xMyIpLnZhbHVlIGlzICIzZS0xNCIK
K1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAwMDAwMDMi
LCAiMWUtMTMiKS52YWx1ZUFzTnVtYmVyIGlzIDAuMDAwMDAwMDAwMDAwMDMKK1BBU1MgY3JlYXRl
U2FtcGxlKCIwLjAwMDAwMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAwMDAwMDQiLCAiMWUtMTMiKS52
YWx1ZSBpcyAiNGUtMTQiCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAwMDAwMDAwMSIsICIw
LjAwMDAwMDAwMDAwMDA0IiwgIjFlLTEzIikudmFsdWVBc051bWJlciBpcyAwLjAwMDAwMDAwMDAw
MDA0CitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAwMDAwMDAwMSIsICIwLjAwMDAwMDAwMDAw
MDA1IiwgIjFlLTEzIikudmFsdWUgaXMgIjVlLTE0IgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAw
MDAwMDAwMDAwMDEiLCAiMC4wMDAwMDAwMDAwMDAwNSIsICIxZS0xMyIpLnZhbHVlQXNOdW1iZXIg
aXMgMC4wMDAwMDAwMDAwMDAwNQorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAwMDAwMDEi
LCAiMC4wMDAwMDAwMDAwMDAwNiIsICIxZS0xMyIpLnZhbHVlIGlzICI2ZS0xNCIKK1BBU1MgY3Jl
YXRlU2FtcGxlKCIwLjAwMDAwMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAwMDAwMDYiLCAiMWUtMTMi
KS52YWx1ZUFzTnVtYmVyIGlzIDAuMDAwMDAwMDAwMDAwMDYKK1BBU1MgY3JlYXRlU2FtcGxlKCIw
LjAwMDAwMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAwMDAwMDciLCAiMWUtMTMiKS52YWx1ZSBpcyAi
N2UtMTQiCitQQVNTIGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAwMDAwMDAwMSIsICIwLjAwMDAwMDAw
MDAwMDA3IiwgIjFlLTEzIikudmFsdWVBc051bWJlciBpcyAwLjAwMDAwMDAwMDAwMDA3CitQQVNT
IGNyZWF0ZVNhbXBsZSgiMC4wMDAwMDAwMDAwMDAwMSIsICIwLjAwMDAwMDAwMDAwMDA4IiwgIjFl
LTEzIikudmFsdWUgaXMgIjhlLTE0IgorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAwMDAw
MDEiLCAiMC4wMDAwMDAwMDAwMDAwOCIsICIxZS0xMyIpLnZhbHVlQXNOdW1iZXIgaXMgMC4wMDAw
MDAwMDAwMDAwOAorUEFTUyBjcmVhdGVTYW1wbGUoIjAuMDAwMDAwMDAwMDAwMDEiLCAiMC4wMDAw
MDAwMDAwMDAwOSIsICIxZS0xMyIpLnZhbHVlIGlzICI5ZS0xNCIKK1BBU1MgY3JlYXRlU2FtcGxl
KCIwLjAwMDAwMDAwMDAwMDAxIiwgIjAuMDAwMDAwMDAwMDAwMDkiLCAiMWUtMTMiKS52YWx1ZUFz
TnVtYmVyIGlzIDAuMDAwMDAwMDAwMDAwMDkKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAw
MDAwMDAwMSIsICIwLjAwMDAwMDAwMDAwMDAwMSIsICIxZS0xNCIpLnZhbHVlIGlzICIxZS0xNSIK
K1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMDAwMDAwMSIsICIwLjAwMDAwMDAwMDAwMDAw
MSIsICIxZS0xNCIpLnZhbHVlQXNOdW1iZXIgaXMgMC4wMDAwMDAwMDAwMDAwMDEKK1BBU1MgY3Jl
YXRlU2FtcGxlKCIwLjAwMDAwMDAwMDAwMDAwMSIsICIwLjAwMDAwMDAwMDAwMDAwMiIsICIxZS0x
NCIpLnZhbHVlIGlzICIyZS0xNSIKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMDAwMDAw
MSIsICIwLjAwMDAwMDAwMDAwMDAwMiIsICIxZS0xNCIpLnZhbHVlQXNOdW1iZXIgaXMgMC4wMDAw
MDAwMDAwMDAwMDIKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMDAwMDAwMSIsICIwLjAw
MDAwMDAwMDAwMDAwMyIsICIxZS0xNCIpLnZhbHVlIGlzICIzZS0xNSIKK1BBU1MgY3JlYXRlU2Ft
cGxlKCIwLjAwMDAwMDAwMDAwMDAwMSIsICIwLjAwMDAwMDAwMDAwMDAwMyIsICIxZS0xNCIpLnZh
bHVlQXNOdW1iZXIgaXMgMC4wMDAwMDAwMDAwMDAwMDMKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAw
MDAwMDAwMDAwMDAwMSIsICIwLjAwMDAwMDAwMDAwMDAwNCIsICIxZS0xNCIpLnZhbHVlIGlzICI0
ZS0xNSIKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMDAwMDAwMSIsICIwLjAwMDAwMDAw
MDAwMDAwNCIsICIxZS0xNCIpLnZhbHVlQXNOdW1iZXIgaXMgMC4wMDAwMDAwMDAwMDAwMDQKK1BB
U1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMDAwMDAwMSIsICIwLjAwMDAwMDAwMDAwMDAwNSIs
ICIxZS0xNCIpLnZhbHVlIGlzICI1ZS0xNSIKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAw
MDAwMDAwMSIsICIwLjAwMDAwMDAwMDAwMDAwNSIsICIxZS0xNCIpLnZhbHVlQXNOdW1iZXIgaXMg
MC4wMDAwMDAwMDAwMDAwMDUKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMDAwMDAwMSIs
ICIwLjAwMDAwMDAwMDAwMDAwNiIsICIxZS0xNCIpLnZhbHVlIGlzICI2ZS0xNSIKK1BBU1MgY3Jl
YXRlU2FtcGxlKCIwLjAwMDAwMDAwMDAwMDAwMSIsICIwLjAwMDAwMDAwMDAwMDAwNiIsICIxZS0x
NCIpLnZhbHVlQXNOdW1iZXIgaXMgMC4wMDAwMDAwMDAwMDAwMDYKK1BBU1MgY3JlYXRlU2FtcGxl
KCIwLjAwMDAwMDAwMDAwMDAwMSIsICIwLjAwMDAwMDAwMDAwMDAwNyIsICIxZS0xNCIpLnZhbHVl
IGlzICI3ZS0xNSIKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMDAwMDAwMSIsICIwLjAw
MDAwMDAwMDAwMDAwNyIsICIxZS0xNCIpLnZhbHVlQXNOdW1iZXIgaXMgMC4wMDAwMDAwMDAwMDAw
MDcKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMDAwMDAwMSIsICIwLjAwMDAwMDAwMDAw
MDAwOCIsICIxZS0xNCIpLnZhbHVlIGlzICI4ZS0xNSIKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAw
MDAwMDAwMDAwMDAwMSIsICIwLjAwMDAwMDAwMDAwMDAwOCIsICIxZS0xNCIpLnZhbHVlQXNOdW1i
ZXIgaXMgMC4wMDAwMDAwMDAwMDAwMDgKK1BBU1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMDAw
MDAwMSIsICIwLjAwMDAwMDAwMDAwMDAwOSIsICIxZS0xNCIpLnZhbHVlIGlzICI5ZS0xNSIKK1BB
U1MgY3JlYXRlU2FtcGxlKCIwLjAwMDAwMDAwMDAwMDAwMSIsICIwLjAwMDAwMDAwMDAwMDAwOSIs
ICIxZS0xNCIpLnZhbHVlQXNOdW1iZXIgaXMgMC4wMDAwMDAwMDAwMDAwMDkKK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorMC4xCiswLjEKKzAuMgorMC4y
CiswLjMKKzAuMworMC40CiswLjQKKzAuNQorMC41CiswLjYKKzAuNgorMC43CiswLjcKKzAuOAor
MC44CiswLjkKKzAuOQorMC4wMQorMC4wMQorMC4wMgorMC4wMgorMC4wMworMC4wMworMC4wNAor
MC4wNAorMC4wNQorMC4wNQorMC4wNgorMC4wNgorMC4wNworMC4wNworMC4wOAorMC4wOAorMC4w
OQorMC4wOQorMC4wMDEKKzAuMDAxCiswLjAwMgorMC4wMDIKKzAuMDAzCiswLjAwMworMC4wMDQK
KzAuMDA0CiswLjAwNQorMC4wMDUKKzAuMDA2CiswLjAwNgorMC4wMDcKKzAuMDA3CiswLjAwOAor
MC4wMDgKKzAuMDA5CiswLjAwOQorMC4wMDAxCiswLjAwMDEKKzAuMDAwMgorMC4wMDAyCiswLjAw
MDMKKzAuMDAwMworMC4wMDA0CiswLjAwMDQKKzAuMDAwNQorMC4wMDA1CiswLjAwMDYKKzAuMDAw
NgorMC4wMDA3CiswLjAwMDcKKzAuMDAwOAorMC4wMDA4CiswLjAwMDkKKzAuMDAwOQorMC4wMDAw
MQorMC4wMDAwMQorMC4wMDAwMgorMC4wMDAwMgorMC4wMDAwMworMC4wMDAwMworMC4wMDAwNAor
MC4wMDAwNAorMC4wMDAwNQorMC4wMDAwNQorMC4wMDAwNgorMC4wMDAwNgorMC4wMDAwNworMC4w
MDAwNworMC4wMDAwOAorMC4wMDAwOAorMC4wMDAwOQorMC4wMDAwOQorMC4wMDAwMDEKKzAuMDAw
MDAxCiswLjAwMDAwMgorMC4wMDAwMDIKKzAuMDAwMDAzCiswLjAwMDAwMworMC4wMDAwMDQKKzAu
MDAwMDA0CiswLjAwMDAwNQorMC4wMDAwMDUKKzAuMDAwMDA2CiswLjAwMDAwNgorMC4wMDAwMDcK
KzAuMDAwMDA3CiswLjAwMDAwOAorMC4wMDAwMDgKKzAuMDAwMDA5CiswLjAwMDAwOQorMC4wMDAw
MDAxCiswLjAwMDAwMDEKKzAuMDAwMDAwMgorMC4wMDAwMDAyCiswLjAwMDAwMDMKKzAuMDAwMDAw
MworMC4wMDAwMDA0CiswLjAwMDAwMDQKKzAuMDAwMDAwNQorMC4wMDAwMDA1CiswLjAwMDAwMDYK
KzAuMDAwMDAwNgorMC4wMDAwMDA3CiswLjAwMDAwMDcKKzAuMDAwMDAwOAorMC4wMDAwMDA4Cisw
LjAwMDAwMDkKKzAuMDAwMDAwOQorMC4wMDAwMDAwMQorMC4wMDAwMDAwMQorMC4wMDAwMDAwMgor
MC4wMDAwMDAwMgorMC4wMDAwMDAwMworMC4wMDAwMDAwMworMC4wMDAwMDAwNAorMC4wMDAwMDAw
NAorMC4wMDAwMDAwNQorMC4wMDAwMDAwNQorMC4wMDAwMDAwNgorMC4wMDAwMDAwNgorMC4wMDAw
MDAwNworMC4wMDAwMDAwNworMC4wMDAwMDAwOAorMC4wMDAwMDAwOAorMC4wMDAwMDAwOQorMC4w
MDAwMDAwOQorMC4wMDAwMDAwMDEKKzAuMDAwMDAwMDAxCiswLjAwMDAwMDAwMgorMC4wMDAwMDAw
MDIKKzAuMDAwMDAwMDAzCiswLjAwMDAwMDAwMworMC4wMDAwMDAwMDQKKzAuMDAwMDAwMDA0Cisw
LjAwMDAwMDAwNQorMC4wMDAwMDAwMDUKKzAuMDAwMDAwMDA2CiswLjAwMDAwMDAwNgorMC4wMDAw
MDAwMDcKKzAuMDAwMDAwMDA3CiswLjAwMDAwMDAwOAorMC4wMDAwMDAwMDgKKzAuMDAwMDAwMDA5
CiswLjAwMDAwMDAwOQorMC4wMDAwMDAwMDAxCiswLjAwMDAwMDAwMDEKKzAuMDAwMDAwMDAwMgor
MC4wMDAwMDAwMDAyCiswLjAwMDAwMDAwMDMKKzAuMDAwMDAwMDAwMworMC4wMDAwMDAwMDA0Cisw
LjAwMDAwMDAwMDQKKzAuMDAwMDAwMDAwNQorMC4wMDAwMDAwMDA1CiswLjAwMDAwMDAwMDYKKzAu
MDAwMDAwMDAwNgorMC4wMDAwMDAwMDA3CiswLjAwMDAwMDAwMDcKKzAuMDAwMDAwMDAwOAorMC4w
MDAwMDAwMDA4CiswLjAwMDAwMDAwMDkKKzAuMDAwMDAwMDAwOQorMC4wMDAwMDAwMDAwMQorMC4w
MDAwMDAwMDAwMQorMC4wMDAwMDAwMDAwMgorMC4wMDAwMDAwMDAwMgorMC4wMDAwMDAwMDAwMwor
MC4wMDAwMDAwMDAwMworMC4wMDAwMDAwMDAwNAorMC4wMDAwMDAwMDAwNAorMC4wMDAwMDAwMDAw
NQorMC4wMDAwMDAwMDAwNQorMC4wMDAwMDAwMDAwNgorMC4wMDAwMDAwMDAwNgorMC4wMDAwMDAw
MDAwNworMC4wMDAwMDAwMDAwNworMC4wMDAwMDAwMDAwOAorMC4wMDAwMDAwMDAwOAorMC4wMDAw
MDAwMDAwOQorMC4wMDAwMDAwMDAwOQorMC4wMDAwMDAwMDAwMDEKKzAuMDAwMDAwMDAwMDAxCisw
LjAwMDAwMDAwMDAwMgorMC4wMDAwMDAwMDAwMDIKKzAuMDAwMDAwMDAwMDAzCiswLjAwMDAwMDAw
MDAwMworMC4wMDAwMDAwMDAwMDQKKzAuMDAwMDAwMDAwMDA0CiswLjAwMDAwMDAwMDAwNQorMC4w
MDAwMDAwMDAwMDUKKzAuMDAwMDAwMDAwMDA2CiswLjAwMDAwMDAwMDAwNgorMC4wMDAwMDAwMDAw
MDcKKzAuMDAwMDAwMDAwMDA3CiswLjAwMDAwMDAwMDAwOAorMC4wMDAwMDAwMDAwMDgKKzAuMDAw
MDAwMDAwMDA5CiswLjAwMDAwMDAwMDAwOQorMC4wMDAwMDAwMDAwMDAxCiswLjAwMDAwMDAwMDAw
MDEKKzAuMDAwMDAwMDAwMDAwMgorMC4wMDAwMDAwMDAwMDAyCiswLjAwMDAwMDAwMDAwMDMKKzAu
MDAwMDAwMDAwMDAwMworMC4wMDAwMDAwMDAwMDA0CiswLjAwMDAwMDAwMDAwMDQKKzAuMDAwMDAw
MDAwMDAwNQorMC4wMDAwMDAwMDAwMDA1CiswLjAwMDAwMDAwMDAwMDYKKzAuMDAwMDAwMDAwMDAw
NgorMC4wMDAwMDAwMDAwMDA3CiswLjAwMDAwMDAwMDAwMDcKKzAuMDAwMDAwMDAwMDAwOAorMC4w
MDAwMDAwMDAwMDA4CiswLjAwMDAwMDAwMDAwMDkKKzAuMDAwMDAwMDAwMDAwOQorMC4wMDAwMDAw
MDAwMDAwMQorMC4wMDAwMDAwMDAwMDAwMQorMC4wMDAwMDAwMDAwMDAwMgorMC4wMDAwMDAwMDAw
MDAwMgorMC4wMDAwMDAwMDAwMDAwMworMC4wMDAwMDAwMDAwMDAwMworMC4wMDAwMDAwMDAwMDAw
NAorMC4wMDAwMDAwMDAwMDAwNAorMC4wMDAwMDAwMDAwMDAwNQorMC4wMDAwMDAwMDAwMDAwNQor
MC4wMDAwMDAwMDAwMDAwNgorMC4wMDAwMDAwMDAwMDAwNgorMC4wMDAwMDAwMDAwMDAwNworMC4w
MDAwMDAwMDAwMDAwNworMC4wMDAwMDAwMDAwMDAwOAorMC4wMDAwMDAwMDAwMDAwOAorMC4wMDAw
MDAwMDAwMDAwOQorMC4wMDAwMDAwMDAwMDAwOQorMC4wMDAwMDAwMDAwMDAwMDEKKzAuMDAwMDAw
MDAwMDAwMDAxCiswLjAwMDAwMDAwMDAwMDAwMgorMC4wMDAwMDAwMDAwMDAwMDIKKzAuMDAwMDAw
MDAwMDAwMDAzCiswLjAwMDAwMDAwMDAwMDAwMworMC4wMDAwMDAwMDAwMDAwMDQKKzAuMDAwMDAw
MDAwMDAwMDA0CiswLjAwMDAwMDAwMDAwMDAwNQorMC4wMDAwMDAwMDAwMDAwMDUKKzAuMDAwMDAw
MDAwMDAwMDA2CiswLjAwMDAwMDAwMDAwMDAwNgorMC4wMDAwMDAwMDAwMDAwMDcKKzAuMDAwMDAw
MDAwMDAwMDA3CiswLjAwMDAwMDAwMDAwMDAwOAorMC4wMDAwMDAwMDAwMDAwMDgKKzAuMDAwMDAw
MDAwMDAwMDA5CiswLjAwMDAwMDAwMDAwMDAwOQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL3JhbmdlL3JhbmdlLXZhbHVlLXJvdW5kaW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL3JhbmdlL3JhbmdlLXZhbHVlLXJvdW5kaW5nLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjhi
ODRlZWYzMWE2ZjZiZTI3OTUzZTM2MTcxMmNmMDNkZmU3YzNhMgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmFuZ2UvcmFuZ2UtdmFsdWUtcm91bmRpbmcuaHRtbApA
QCAtMCwwICsxLDM1IEBACis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8aW5wdXQgaWQ9ImZv
byIgdHlwZT1yYW5nZSBzdGVwPTAuMSB2YWx1ZT0wLjY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKzxkaXYgaWQ9InNsaWRlcnMiPjwvZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCI8YSBo
cmVmPSdodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDAwOSc+ODAwMDkg
SW50cm9kdWNlIERlY2ltYWwgYXJpdGhtZXRpYyB0byBmaXggcm91bmRpbmcgZXJyb3JzIGluIG51
bWJlci9yYW5nZSBpbnB1dCB0eXBlczwvYT4iKTsKKworZnVuY3Rpb24gY3JlYXRlU2FtcGxlKHN0
ZXAsIHZhbHVlLCBtYXgpCit7CisgICAgdmFyIGNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoInNwYW4iKTsKKyAgICBjb250YWluZXIuaW5uZXJIVE1MID0gJzxpbnB1dCB0eXBlPXJh
bmdlIG1pbj0wIG1heD0nICsgbWF4ICsgJyBzdGVwPScgKyBzdGVwICsgJyB2YWx1ZT0nICsgdmFs
dWUgKyAnPicgKyB2YWx1ZSArICc8YnI+JzsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
c2xpZGVycyIpLmFwcGVuZENoaWxkKGNvbnRhaW5lcik7CisgICAgcmV0dXJuIGNvbnRhaW5lci5m
aXJzdENoaWxkOworfQorCit2YXIgemVyb3MgPSAiMC4iOworZm9yICh2YXIgZXhwb25lbnQgPSAw
OyBleHBvbmVudCA8IDE1OyArK2V4cG9uZW50KSB7CisgICAgdmFyIHN0ZXAgPSB6ZXJvcyArICIx
IjsKKyAgICBmb3IgKHZhciBkaWdpdCA9IDE7IGRpZ2l0IDw9IDk7ICsrZGlnaXQpIHsKKyAgICAg
ICAgdmFyIHZhbHVlID0gemVyb3MgKyBkaWdpdC50b1N0cmluZygpOworICAgICAgICB2YXIgc2Ft
cGxlID0gJ2NyZWF0ZVNhbXBsZSgiJyArIHN0ZXAgKyAnIiwgIicgKyB2YWx1ZSArICciLCAiMWUt
JyArIGV4cG9uZW50ICsgJyIpJzsKKyAgICAgICAgdmFyIHN0ZXBFeHBvbmVudCA9IGV4cG9uZW50
ICsgMTsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKHNhbXBsZSArICcudmFsdWUnLCBz
dGVwRXhwb25lbnQgPj0gNyA/IGRpZ2l0ICsgImUtIiArIHN0ZXBFeHBvbmVudCA6IHZhbHVlKTsK
KyAgICAgICAgc2hvdWxkQmUoc2FtcGxlICsgJy52YWx1ZUFzTnVtYmVyJywgdmFsdWUpOworICAg
IH0KKyAgICB6ZXJvcyArPSAiMCI7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKworCg==
</data>
<flag name="review"
          id="152636"
          type_id="1"
          status="-"
          setter="tkent"
    />
          </attachment>
      

    </bug>

</bugzilla>